Index: cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.als
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.als	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.als	(revision 1676)
@@ -0,0 +1,126 @@
+about_this_version
+application_level_issues
+blocking_an_rpc
+broker_overview
+brokerexample
+buffer_clearing
+checking_rpc_availability_on_a_remote_server
+debug
+debug_overview
+developer_considerations
+dll_c_connect
+dll_c_create
+dll_c_destroy
+dll_c_execute
+dll_c_init
+dll_c_intro
+dll_cpp_connect
+dll_cpp_create
+dll_cpp_destroy
+dll_cpp_execute
+dll_cpp_init
+dll_cpp_intro
+dll_cpp_methods
+dll_function_rpcbcall
+dll_function_rpcbcreate
+dll_function_rpcbcreatecontext
+dll_function_rpcbfree
+dll_function_rpcbmultitemget
+dll_function_rpcbmultpropget
+dll_function_rpcbmultset
+dll_function_rpcbmultsortedset
+dll_function_rpcbparamget
+dll_function_rpcbparamset
+dll_function_rpcbpropget
+dll_function_rpcbpropset
+dll_getserverinfo
+dll_intro
+dll_results
+dll_vb_connect
+dll_vb_create
+dll_vb_destroy
+dll_vb_execute
+dll_vb_init
+dll_vb_intro
+ebrokererror
+error_handling
+hash_unit
+id_handler
+id_listener
+idh_brokprogpref
+ig_helpfile
+introduction
+loginfrm_unit
+memory_leaks
+mfunstr_unit
+options_for_running_rpcs_on_a_remote_server
+orientation
+otherapi_broker
+otherapi_encrypt
+otherapi_getserverinfo
+otherapi_getvarvalue
+otherapi_m_emulation
+otherapi_overview
+otherapi_rtrnfmt
+otherapi_splash
+overview_of_deferred_rpcs
+rpc_cleanup
+rpc_create
+rpc_document
+rpc_entry_point_examples
+rpc_execute_from_client
+rpc_file_entry
+rpc_first_input_param
+rpc_good
+rpc_input_parameter_types
+rpc_limits
+rpc_overview
+rpc_register
+rpc_return_value_types
+rpc_routine_relationship
+rpc_version_in_remote_procedure_file
+rpcconf1_unit
+rpcslogin_unit
+silent_login
+splvista_unit
+tccowrpcbroker_component
+testing_connection
+tmult_class
+tparamrecord_class
+tparams_class
+trpcb_unit
+trpcbroker_component
+tsharedrpcbroker_component
+tut_fmdc
+tut_intro
+tut_pascal
+tut_prep
+tut_register
+tut_step1
+tut_step10
+tut_step2
+tut_step3
+tut_step4
+tut_step5
+tut_step6
+tut_step7
+tut_step8
+tut_step9
+tvcedit_unit
+tvistalogin_class
+tvistauser_class
+txwbrichedit_component
+using_an_existing_m_api
+whats_new_in_the_bdk
+xwb_are_rpcs_available
+xwb_deferred_clear
+xwb_deferred_clearall
+xwb_deferred_getdata
+xwb_deferred_rpc
+xwb_deferred_status
+xwb_direct_rpc
+xwb_is_rpc_available
+xwb_remote_clear
+xwb_remote_getdata
+xwb_remote_rpc
+xwb_remote_status_check
Index: cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.cnt
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.cnt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.cnt	(revision 1676)
@@ -0,0 +1,157 @@
+:Base broker.hlp>main
+:Title RPC Broker Developer's Guide
+:Link delphi4.hlp
+:Link delphi5.hlp
+:Link delphi6.hlp
+:Link del6vcl.hlp
+:Link Fmdc.hlp
+1 RPC Broker V. 1.1 Developer's Guide
+2 Overview
+3 Contents=Contents
+3 Introduction=introduction
+3 Broker Overview=Broker_Overview
+3 Orientation=Orientation
+3 About this Version of the RPC Broker=About_this_version
+3 What's New in the BDK=Whats_New_in_the_BDK
+3 Developer Considerations=Developer_Considerations
+3 Application Issues=Application_Level_Issues
+3 Silent Login=Silent_Login
+3 Context-sensitive Help for the RPC Broker Components=ig_helpfile
+2 RPC Broker Components, Classes, and Units
+3 EBrokerError Exception=EBrokerError
+3 Classes
+4 TMult=TMult_Class
+4 TParamRecord=TParamRecord_Class
+4 TParams=TParams_Class
+4 TVistaLogin=TVistaLogin_Class
+4 TVistaUser=TVistaUser_Class
+3 Components
+4 TCCOWRPCBroker=TCCOWRPCBroker_Component
+4 TRPCBroker=TRPCBroker_Component
+4 TSharedBroker=TSharedBroker_Component
+4 TSharedRPCBroker=TSharedRPCBroker_Component
+4 TXWBRichEdit=TXWBRichEdit_Component
+3 Units
+4 Hash=Hash_unit
+4 LoginFrm=LoginFrm_Unit
+4 MFunStr=MFunStr_unit
+4 RPCConf1=RPCConf1_unit
+4 RpcSLogin=RpcSLogin_Unit
+4 SplVista=SplVista_unit
+4 TRPCB=TRPCB_unit
+4 TVCEdit=TVCEdit_Unit
+2 Remote Procedure Calls (RPCs)
+3 Overview=rpc_overview
+3 What Makes a Good RPC?=rpc_good
+3 Creating RPCs=rpc_create
+3 Using an Existing M API=Using_an_Existing_M_API
+3 M Entry Point for an RPC
+4 Relationship Between an M Entry Point and an RPC=rpc_routine_relationship
+4 First Input Parameter=rpc_first_input_param
+4 Return Value Types=rpc_return_value_types
+4 Input Parameters=rpc_input_parameter_types
+4 Examples=rpc_entry_point_examples
+3 RPC Entry in the Remote Procedure File
+4 RPC Entry in the Remote Procedure File=rpc_file_entry
+4 RPC Version in the Remote Procedure File=RPC_Version_in_Remote_Procedure_File
+4 Blocking an RPC in the Remote Procedure File=Blocking_an_RPC
+4 Cleanup after RPC Execution=rpc_cleanup
+4 Documenting RPCs=rpc_document
+3 Executing RPCs from Clients
+4 How to Execute an RPC from a Client=rpc_execute_from_client
+4 RPC Security: How to Register an RPC=rpc_register
+4 RPC Limits=RPC_limits
+4 BrokerExample Online Code Example=BrokerExample
+2 Other RPC Broker APIs
+3 Overview=otherapi_Overview
+3 Encryption Functions=otherapi_encrypt
+3 GetServerInfo Function=otherapi_getserverinfo
+3 M Emulation Functions=otherapi_m_emulation
+3 VistA Splash Screen Procedures=otherapi_splash
+3 $$BROKER^XWBLIB=otherapi_broker
+3 $$RTRNFMT^XWBLIB=otherapi_rtrnfmt
+3 XWB ARE RPCS AVAILABLE=XWB_ARE_RPCS_AVAILABLE
+3 XWB IS RPC AVAILABLE=XWB_IS_RPC_AVAILABLE
+3 XWB GET VARIABLE VALUE RPC=otherapi_getvarvalue
+3 Running RPCs on a Remote Server
+4 Options For Running RPCs on a Remote Server=Options_For_Running_RPCs_on_a_Remote_Server
+4 Checking RPC Availability on a Remote Server=Checking_RPC_Availability_on_a_Remote_Server
+4 XWB DIRECT RPC=XWB_DIRECT_RPC
+4 XWB REMOTE RPC=XWB_REMOTE_RPC
+4 XWB REMOTE STATUS CHECK=XWB_REMOTE_STATUS_CHECK
+4 XWB REMOTE GETDATA=XWB_REMOTE_GETDATA
+4 XWB REMOTE CLEAR=XWB_REMOTE_CLEAR
+3 Deferred RPCs
+4 Overview of Deferred RPCs=Overview_of_Deferred_RPCs
+4 XWB DEFERRED RPC=XWB_DEFERRED_RPC
+4 XWB DEFERRED STATUS=XWB_DEFERRED_STATUS
+4 XWB DEFERRED GETDATA=XWB_DEFERRED_GETDATA
+4 XWB DEFERRED CLEAR=XWB_DEFERRED_CLEAR
+4 XWB DEFERRED CLEARALL=XWB_DEFERRED_CLEARALL
+2 Debugging and Troubleshooting
+3 Overview=debug_overview
+3 How to Debug Your Application=debug
+3 RPC Error Trapping=Error_Handling
+3 Identifying the Listener Process on the Server=ID_Listener
+3 Identifying the Handler Process on the Server=ID_Handler
+3 Testing Your RPC Broker Connection=Testing_Connection
+3 Client Timeout and Buffer Clearing=Buffer_Clearing
+3 Memory Leaks=memory_leaks
+2 Developer Utilities
+3 RPC Broker Programmer Preferences=IDH_brokprogpref
+2 Tutorial
+3 Introduction=tut_intro
+3 Advanced Preparation=tut_prep
+3 Step  1: Create Application with an RPC Broker Component=tut_step1
+3 Step  2: Get Server/Port=tut_step2
+3 Step  3: Establish Broker Connection=tut_step3
+3 Step  4: RPC Routine to List Terminal Types=tut_step4
+3 Step  5: RPC to List Terminal Types=tut_step5
+3 Step  6: Call the ZxxxTT LIST RPC=tut_step6
+3 Step  7: Associate IENs=tut_step7
+3 Step  8: Routine to Retrieve Terminal Types=tut_step8
+3 Step  9: RPC to Retrieve Terminal Types=tut_step9
+3 Step 10: Call Zxxx RETRIEVE RPC=tut_step10
+3 Step 11: Register RPCs=tut_register
+3 See Also: FileMan Delphi Components (FMDC)=tut_fmdc
+3 Tutorial Source Code=tut_pascal
+2 DLL Interface
+3 Introduction=dll_intro
+3 DLL Special Issues
+4 RPC Results from DLL Calls=dll_results
+4 GetServerInfo Function and the DLL=dll_getserverinfo
+3 DLL Exported Functions
+4 RPCBCall=dll_function_rpcbcall
+4 RPCBCreate=dll_function_rpcbcreate
+4 RPCBCreateContext=dll_function_rpcbcreatecontext
+4 RPCBFree=dll_function_rpcbfree
+4 RPCBMultItemGet=dll_function_rpcbmultitemget
+4 RPCBMultPropGet=dll_function_rpcbmultpropget
+4 RPCBMultSet=dll_function_rpcbmultset
+4 RPCBMultSortedSet=dll_function_rpcbmultsortedset
+4 RPCBParamGet=dll_function_rpcbParamGet
+4 RPCBParamSet=dll_function_rpcbParamSet
+4 RPCBPropGet=dll_function_rpcbpropget
+4 RPCBPropSet=dll_function_rpcbpropset
+3 Guidelines for C++
+4 Overview=dll_cpp_intro
+4 TRPCBroker C++ Class Methods=dll_cpp_methods
+4 Initialize the Class=dll_cpp_init
+4 Create Broker Instances=dll_cpp_create
+4 Connect to the Server=dll_cpp_connect
+4 Execute RPCs=dll_cpp_execute
+4 Destroy Broker Instances=dll_cpp_destroy
+3 Guidelines for C
+4 Overview=dll_c_intro
+4 InitializeLoadLibrary and GetProcAddress=dll_c_init
+4 Create Broker Components=dll_c_create
+4 Connect to the Server=dll_c_connect
+4 Execute RPCs=dll_c_execute
+4 Destroy Broker Components=dll_c_destroy
+3 Guidelines for Visual Basic
+4 Overview=dll_vb_intro
+4 Initialize=dll_vb_init
+4 Create Broker Components=dll_vb_create
+4 Connect to the Server=dll_vb_connect
+4 Execute RPCs=dll_vb_execute
+4 Destroy Broker Components=dll_vb_destroy
Index: cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.toc
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.toc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Help/broker.toc	(revision 1676)
@@ -0,0 +1,150 @@
+:Base broker.hlp>main
+:Title RPC Broker Developer's Guide
+
+1 RPC Broker V. 1.1 Developer's Guide
+2 Overview
+3 Introduction=introduction
+3 Broker Overview=Broker_Overview
+3 Orientation=Orientation
+3 About this Version of the RPC Broker=About_this_version
+3 What's New in the BDK=Whats_New_in_the_BDK
+3 Developer Considerations=Developer_Considerations
+3 Application Issues=Application_Level_Issues
+3 Silent Login=Silent_Login
+3 Context-sensitive Help for the TRPCBroker Component=ig_helpfile
+2 RPC Broker Components and Classes
+3 TCCOWRPCBroker=TCCOWRPCBroker_Component
+3 TRPCBroker Component=TRPCBroker
+3 TSharedRPCBroker Component=TSharedRPCBroker_Component
+3 TXWBRichEdit Component=TXWBRichEdit_Component
+3 TMult Class=TMult_Class
+3 TParamRecord Class=TParamRecord_Class
+3 TParams Class=TParams_Class
+3 TVistaLogin Class=TVistaLogin_Class
+3 TVistaUser Class=TVistaUser_Class
+3 EBrokerError Exception=EBrokerError
+3 Units
+4 Hash Unit=Hash_unit
+4 LoginFrm Unit=LoginFrm_Unit
+4 MFunStr Unit=MFunStr_unit
+4 RPCConf1 Unit=RPCConf1_unit
+4 RpcSLogin Unit=RpcSLogin_Unit
+4 SplVista Unit=SplVista_unit
+4 TCCOWRPCBroker Unit=TCCOWRPRCBroker_unit
+4 TRPCB Unit=TRPCB_unit
+4 TVCEdit Unit=TVCEdit_Unit
+2 Remote Procedure Calls (RPCs)
+3 Overview=rpc_overview
+3 What Makes a Good RPC?=rpc_good
+3 Creating RPCs=rpc_create
+3 Using an Existing M API=Using_an_Existing_M_API
+3 M Entry Point for an RPC
+4 Relationship Between an M Entry Point and an RPC=rpc_routine_relationship
+4 First Input Parameter=rpc_first_input_param
+4 Return Value Types=rpc_return_value_types
+4 Input Parameters=rpc_input_parameter_types
+4 Examples=rpc_entry_point_examples
+3 RPC Entry in the Remote Procedure File
+4 RPC Entry in the Remote Procedure File=rpc_file_entry
+4 RPC Version in the Remote Procedure File=RPC_Version_in_Remote_Procedure_File
+4 Blocking an RPC in the Remote Procedure File=Blocking_an_RPC
+4 Cleanup after RPC Execution=rpc_cleanup
+4 Documenting RPCs=rpc_document
+3 Executing RPCs from Clients
+4 How to Execute an RPC from a Client=rpc_execute_from_client
+4 RPC Security: How to Register an RPC=rpc_register
+4 RPC Limits=RPC_limits
+4 BrokerExample Online Code Example=BrokerExample
+2 Other RPC Broker APIs
+3 Overview=otherapi_Overview
+3 Encryption Functions=otherapi_encrypt
+3 GetServerInfo Function=otherapi_getserverinfo
+3 M Emulation Functions=otherapi_m_emulation
+3 VistA Splash Screen Procedures=otherapi_splash
+3 $$BROKER^XWBLIB=otherapi_broker
+3 $$RTRNFMT^XWBLIB=otherapi_rtrnfmt
+3 XWB ARE RPCS AVAILABLE=XWB_ARE_RPCS_AVAILABLE
+3 XWB IS RPC AVAILABLE=XWB_IS_RPC_AVAILABLE
+3 XWB GET VARIABLE VALUE RPC=otherapi_getvarvalue
+3 Running RPCs on a Remote Server
+4 Options For Running RPCs on a Remote Server=Options_For_Running_RPCs_on_a_Remote_Server
+4 Checking RPC Availability on a Remote Server=Checking_RPC_Availability_on_a_Remote_Server
+4 XWB DIRECT RPC=XWB_DIRECT_RPC
+4 XWB REMOTE RPC=XWB_REMOTE_RPC
+4 XWB REMOTE STATUS CHECK=XWB_REMOTE_STATUS_CHECK
+4 XWB REMOTE GETDATA=XWB_REMOTE_GETDATA
+4 XWB REMOTE CLEAR=XWB_REMOTE_CLEAR
+3 Deferred RPCs
+4 Overview of Deferred RPCs=Overview_of_Deferred_RPCs
+4 XWB DEFERRED RPC=XWB_DEFERRED_RPC
+4 XWB DEFERRED STATUS=XWB_DEFERRED_STATUS
+4 XWB DEFERRED GETDATA=XWB_DEFERRED_GETDATA
+4 XWB DEFERRED CLEAR=XWB_DEFERRED_CLEAR
+4 XWB DEFERRED CLEARALL=XWB_DEFERRED_CLEARALL
+2 Debugging and Troubleshooting
+3 Overview=debug_overview
+3 How to Debug Your Application=debug
+3 RPC Error Trapping=Error_Handling
+3 Identifying the Listener Process on the Server=ID_Listener
+3 Identifying the Handler Process on the Server=ID_Handler
+3 Testing Your RPC Broker Connection=Testing_Connection
+3 Client Timeout and Buffer Clearing=Buffer_Clearing
+3 Memory Leaks=memory_leaks
+2 Developer Utilities
+3 RPC Broker Programmer Preferences=IDH_brokprogpref
+2 Tutorial
+3 Introduction=tut_intro
+3 Advanced Preparation=tut_prep
+3 Step  1: Create Application with an RPC Broker Component=tut_step1
+3 Step  2: Get Server/Port=tut_step2
+3 Step  3: Establish Broker Connection=tut_step3
+3 Step  4: RPC Routine to List Terminal Types=tut_step4
+3 Step  5: RPC to List Terminal Types=tut_step5
+3 Step  6: Call the ZxxxTT LIST RPC=tut_step6
+3 Step  7: Associate IENs=tut_step7
+3 Step  8: Routine to Retrieve Terminal Types=tut_step8
+3 Step  9: RPC to Retrieve Terminal Types=tut_step9
+3 Step 10: Call Zxxx RETRIEVE RPC=tut_step10
+3 Step 11: Register RPCs=tut_register
+3 See Also: FileMan Delphi Components (FMDC)=tut_fmdc
+3 Tutorial Source Code=tut_pascal
+2 DLL Interface
+3 Introduction=dll_intro
+3 DLL Special Issues
+4 RPC Results from DLL Calls=dll_results
+4 GetServerInfo Function and the DLL=dll_getserverinfo
+3 DLL Exported Functions
+4 RPCBCall=dll_function_rpcbcall
+4 RPCBCreate=dll_function_rpcbcreate
+4 RPCBCreateContext=dll_function_rpcbcreatecontext
+4 RPCBFree=dll_function_rpcbfree
+4 RPCBMultItemGet=dll_function_rpcbmultitemget
+4 RPCBMultPropGet=dll_function_rpcbmultpropget
+4 RPCBMultSet=dll_function_rpcbmultset
+4 RPCBMultSortedSet=dll_function_rpcbmultsortedset
+4 RPCBParamGet=dll_function_rpcbParamGet
+4 RPCBParamSet=dll_function_rpcbParamSet
+4 RPCBPropGet=dll_function_rpcbpropget
+4 RPCBPropSet=dll_function_rpcbpropset
+3 Guidelines for C++
+4 Overview=dll_cpp_intro
+4 TRPCBroker C++ Class Methods=dll_cpp_methods
+4 Initialize the Class=dll_cpp_init
+4 Create Broker Instances=dll_cpp_create
+4 Connect to the Server=dll_cpp_connect
+4 Execute RPCs=dll_cpp_execute
+4 Destroy Broker Instances=dll_cpp_destroy
+3 Guidelines for C
+4 Overview=dll_c_intro
+4 InitializeLoadLibrary and GetProcAddress=dll_c_init
+4 Create Broker Components=dll_c_create
+4 Connect to the Server=dll_c_connect
+4 Execute RPCs=dll_c_execute
+4 Destroy Broker Components=dll_c_destroy
+3 Guidelines for Visual Basic
+4 Overview=dll_vb_intro
+4 Initialize=dll_vb_init
+4 Create Broker Components=dll_vb_create
+4 Connect to the Server=dll_vb_connect
+4 Execute RPCs=dll_vb_execute
+4 Destroy Broker Components=dll_vb_destroy
Index: cprs/branches/HealthSevak-CPRS/BDK32/INSTALL.LOG
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/INSTALL.LOG	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/INSTALL.LOG	(revision 1676)
@@ -0,0 +1,330 @@
+***  Installation Started 05/08/2007 17:50  ***
+Title: tA RPCBroker 1.1 for Delphi XWB*1.1*40 Installation
+Source: C:\Shared\Delphi\XWB1_1P40PG.EXE
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\UNWISE.EXE
+RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\VistA RPCBroker 1.1 for Delphi XWB*1.1*40
+RegDB Val: VistA RPCBroker 1.1 for Delphi XWB*1.1*40
+RegDB Name: DisplayName
+RegDB Root: 2
+RegDB Key: Software\Microsoft\Windows\CurrentVersion\Uninstall\VistA RPCBroker 1.1 for Delphi XWB*1.1*40
+RegDB Val: C:\PROGRA~1\BORLAND\DELPHI7\LIB\BDK32\UNWISE.EXE C:\PROGRA~1\BORLAND\DELPHI7\LIB\BDK32\INSTALL.LOG
+RegDB Name: UninstallString
+RegDB Root: 2
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\BrokerExampleAboutFrm.PAS
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\BrokerExampleAboutFrm.dfm
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBOnFail.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBOnFail.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBOnFail.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBOnFail.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAVCodes.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAVCodes.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAVCodes.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAVCodes.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle2.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle2.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle2.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle2.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle1.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle1.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle1.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\XWBAppHandle1.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\ReadMeForSamples.txt
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBOnFail.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBOnFail.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBAVCodes.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBAVCodes.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBAppHandle2.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBAppHandle2.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBAppHandle1.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\fXWBAppHandle1.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\frmVistAAbout.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\SilentSignOn\frmVistAAbout.dfm
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\fVistAAbout.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\fVistAAbout.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\frmVistAAbout.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\frmVistAAbout.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\fBrokerExampleCCOW.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\fBrokerExampleCCOW.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\fBrokerExample.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\fBrokerExample.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExampleCCOW.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExampleCCOW.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExampleCCOW.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExampleCCOW.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExample.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExample.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExample.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\RPCBroker\BrokerEx\BrokerExample.dof
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Help
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Help\broker.toc
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Help\Broker.hlp
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Help\broker.cnt
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Help\broker.als
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\VergenceContextor.dll
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\CCOWRPCBroker.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fVistaBar.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\frmVistAAbout.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\frmVistAAbout.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fDebugInfo.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fDebugInfo.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\CCOW_const.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\uSharedBroker1.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\uSharedBroker1.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\uSharedBroker1.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestMFunStr.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestMFunStr.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestMFunStr.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestMFunStr.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestBroker.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestBroker.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWBReg.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWBRich20.PAS
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Xwbut1.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SgnonCnf.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SgnonCnf.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SelDiv.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SelDiv.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RpcSLogin.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1_TLB_SRB.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1_TLB.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1_TLB.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1.tlb
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RPCSharedBrokerSessionMgr1.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Rpcnet.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Rpcnet.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Rpcconf1.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Rpcconf1.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RpcbErr.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\RpcbErr.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Rpcbedtr.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Mfunstr.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Loginfrm.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Loginfrm.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\IISBase.inc
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Hash.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fVistaBar.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fVistaBar.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fSignonConfigColor.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fSignonConfigColor.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fSgnonDlg.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fSgnonDlg.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fRPCSharedBrokerSessionMgr1.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fRPCSharedBrokerSessionMgr1.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fRPCBErrMsg.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\fRPCBErrMsg.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\frmSignonMessage.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\frmSignonMessage.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\dunit.ini
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\AddServer.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\AddServer.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\uSharedBroker1.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\uUnitTestBroker.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\uUnitTestMFunStr.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\VCEdit.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\VCEdit.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Wsockc.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBrokerReg.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBrokerSink.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Splvista.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Splvista.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\Trpcb.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestBroker.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\UnitTestBroker.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\VERGENCECONTEXTORLib_TLB.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\VERGENCECONTEXTORLib_TLB.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R50.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R50.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R50.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D50.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D50.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D50.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D50.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R50.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R50.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R50.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D50.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D50.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D50.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D70.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R60.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R60.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_R60.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D60.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D60.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D60.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D60.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_D60.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R60.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R60.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\SharedRPCBroker_R60.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D60.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\XWB_D60.dof
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_D70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_D70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_D70.dcr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_R70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_R70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_R70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_D70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_D70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_D70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_D70.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_R70.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_R70.dpk
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_R70.res
+File Copy: C:\WINDOWS\system32\INETWH32.dll
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Serverlist.hlp
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\ServerList.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Brokerprogpref.hlp
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\BrokerProgPref.exe
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBOnFail.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBOnFail.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBOnFail.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBOnFail.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAVCodes.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAVCodes.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAVCodes.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAVCodes.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle2.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle2.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle2.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle2.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle1.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle1.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle1.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\XWBAppHandle1.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\ReadMeForSamples.txt
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBOnFail.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBOnFail.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBAVCodes.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBAVCodes.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBAppHandle2.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBAppHandle2.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBAppHandle1.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\fXWBAppHandle1.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\frmVistAAbout.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\SilentSignOn\frmVistAAbout.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\fBrokerExample.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\fBrokerExample.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\frmVistAAbout.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\frmVistAAbout.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\BrokerExample.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\BrokerExample.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\BrokerExample.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\Samples\SharedRPCBroker\BrokerEx\BrokerExample.dof
+Made Dir: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\SharedBrokerDebugger.res
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\uBrokerConnectionInfo.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\fClientInfo.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\fClientRPCLogger.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\fClientRPCLogger.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\fSharedBrokerDebugger.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\fSharedBrokerDebugger.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\RPCSharedBrokerSessionMgr1_TLB.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\SharedBrokerDebugger.dof
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\SharedBrokerDebugger.dpr
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\SharedBrokerDebugger.exe
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\uClientInfo.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\uParam.pas
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\SharedBrokerDebugger\uRpcLogEntry.pas
+File Copy: C:\WINDOWS\system32\roboex32.dll
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\VERGENCECONTEXTORLib_TLB.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fDebugInfo.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\CCOW_const.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\XWB_R70.dcp
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\XWB_R70.bpl
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\XWB_D70.dcp
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\XWB_D70.bpl
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\SharedRPCBroker_R70.dcp
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\SharedRPCBroker_R70.bpl
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\SharedRPCBroker_D70.dcp
+File Copy: C:\Program Files\Borland\Delphi7\Projects\Bpl\SharedRPCBroker_D70.bpl
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fDebugInfo.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\CCOWRPCBroker.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\frmVistAAbout.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\AddServer.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\AddServer.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\frmSignonMessage.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\frmSignonMessage.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fRPCBErrMsg.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fRPCBErrMsg.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fRPCSharedBrokerSessionMgr1.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fSgnonDlg.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fSgnonDlg.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fSignonConfigColor.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\fVistaBar.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Hash.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Loginfrm.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Loginfrm.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\MFunStr.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\RpcbEdtr.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Rpcberr.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Rpcberr.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Rpcconf1.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Rpcconf1.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\RpcNet.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Rpcnet.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\RPCSharedBrokerSessionMgr1_TLB.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\RPCSharedBrokerSessionMgr1_TLB_SRB.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\RpcSLogin.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\seldiv.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SelDiv.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Sgnoncnf.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SgnonCnf.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_D70.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBroker_R70.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBrokerReg.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\SharedRPCBrokerSink.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Splvista.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Splvista.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Trpcb.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\VCEdit.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\VCEdit.dfm
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\WSockc.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_D70.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWB_R70.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWBReg.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\XWBRich20.dcu
+File Copy: C:\Program Files\Borland\Delphi7\Lib\BDK32\D7\Xwbut1.dcu
+RegDB Key: Software\Vista\Broker
+RegDB Val: 1
+RegDB Name: IDEConnect
+RegDB Root: 2
+RegDB Key: Software\Vista\Broker
+RegDB Val: C:\PROGRA~1\BORLAND\DELPHI7\LIB\BDK32
+RegDB Name: BDKDr
+RegDB Root: 2
+RegDB Old: C:\Program Files\Borland\Delphi7\Lib\BDK32
+RegDB Key: Software\Vista\Broker
+RegDB Val: 1.1.36.0
+RegDB Name: BDK Version
+RegDB Root: 2
+Self-Register: C:\Program Files\Borland\Delphi7\Lib\BDK32\Source\VergenceContextor.dll
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExample.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExample.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExample.dof	(revision 1676)
@@ -0,0 +1,80 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;Indy50;XWB_R50;SharedBroker_D50;CPRSctrls;ZipMasterD5;ICSDEL50;TCynthesisAppUpdateD5
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=1
+Release=31
+Build=2
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=Example Program using RPCBroker and different types of calls
+FileVersion=1.1.31.2
+InternalName=Broker Example
+LegalCopyright=(c) 1997-2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=RPCBroker BrokerExample
+ProductVersion=1.1.31.0
+Comments=
+[Excluded Packages]
+$(DELPHI)\Bin\dclite50.bpl=Borland Integrated Translation Environment
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExample.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExample.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExample.dpr	(revision 1676)
@@ -0,0 +1,17 @@
+program BrokerExample;
+
+uses
+  Forms,
+  fBrokerExample in 'fBrokerExample.pas' {frmBrokerExample},
+  SplVista;
+
+// include to display Vista splash
+
+{$R *.RES}
+
+begin
+  Application.CreateForm(TfrmBrokerExample, frmBrokerExample);
+  SplashOpen;                                    // display splash screen
+  SplashClose(3000);                             // min splash time 3 seconds, then close
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExampleCCOW.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExampleCCOW.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExampleCCOW.dof	(revision 1676)
@@ -0,0 +1,84 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;Indy50;XWB_R50;SharedBroker_D50;CPRSctrls;ZipMasterD5;ICSDEL50;TCynthesisAppUpdateD5
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+D:\PROGRA~1\Borland\Delphi5\Projects\Bpl\Fmdc_R50.bpl=VistA Fileman Delphi Components
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExampleCCOW.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExampleCCOW.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/BrokerExampleCCOW.dpr	(revision 1676)
@@ -0,0 +1,19 @@
+program BrokerExampleCCOW;
+
+uses
+  Forms,
+  fBrokerExampleCCOW in 'fBrokerExampleCCOW.pas' {frmBrokerExampleCCOW},
+  SplVista,
+  fOkToTerminate in 'fOkToTerminate.pas' {frmOKToTerminate};
+
+// include to display Vista splash
+
+{$R *.RES}
+
+begin
+  Application.CreateForm(TfrmBrokerExampleCCOW, frmBrokerExampleCCOW);
+  Application.CreateForm(TfrmOKToTerminate, frmOKToTerminate);
+  SplashOpen;                                    // display splash screen
+  SplashClose(3000);                             // min splash time 3 seconds, then close
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExample.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExample.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExample.dfm	(revision 1676)
@@ -0,0 +1,615 @@
+object frmBrokerExample: TfrmBrokerExample
+  Left = 248
+  Top = 112
+  BorderStyle = bsSingle
+  Caption = 'RPCBroker Example UCX RPCBroker (p40)'
+  ClientHeight = 389
+  ClientWidth = 472
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clBtnText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 16
+  object GroupBox2: TGroupBox
+    Left = 8
+    Top = 0
+    Width = 457
+    Height = 73
+    Caption = 'VistA Server'
+    TabOrder = 0
+    object Label2: TLabel
+      Left = 6
+      Top = 51
+      Width = 67
+      Height = 16
+      AutoSize = False
+      Caption = 'Status:'
+    end
+    object Label3: TLabel
+      Left = 73
+      Top = 51
+      Width = 88
+      Height = 16
+      Caption = 'Disconnected'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clRed
+      Font.Height = -13
+      Font.Name = 'System'
+      Font.Style = []
+      ParentColor = False
+      ParentFont = False
+    end
+    object btnConnect: TButton
+      Left = 354
+      Top = 12
+      Width = 91
+      Height = 25
+      Caption = '&Connect'
+      Default = True
+      TabOrder = 2
+      OnClick = btnConnectClick
+    end
+    object edtPort: TEdit
+      Left = 192
+      Top = 24
+      Width = 49
+      Height = 24
+      Hint = 'Listener port number'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      Text = '9200'
+      OnChange = edtServerChange
+    end
+    object edtServer: TEdit
+      Left = 8
+      Top = 24
+      Width = 177
+      Height = 24
+      Hint = 'Name of server or IP address'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Text = 'BROKERSERVER'
+      OnChange = edtServerChange
+    end
+    object BitBtn1: TBitBtn
+      Left = 354
+      Top = 44
+      Width = 91
+      Height = 25
+      TabOrder = 3
+      Kind = bkClose
+    end
+    object btnGetServerInfo: TBitBtn
+      Left = 248
+      Top = 24
+      Width = 73
+      Height = 25
+      Hint = 'GetServerInfo'
+      Caption = 'Server'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = btnGetServerInfoClick
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333000000000
+        00333FF777777777773F0000FFFFFFFFFF0377773F3F3F3F3F7308880F0F0F0F
+        0FF07F33737373737337088880FFFFFFFFF07F3337FFFFFFFFF7088880000000
+        00037F3337777777777308888033330F03337F3337F3FF7F7FFF088880300000
+        00007F3337F7777777770FFFF030FFFFFFF07F3FF7F7F3FFFFF708008030F000
+        00F07F7737F7F77777F70FFFF030F0AAE0F07F3FF7F7F7F337F708008030F0DA
+        D0F07F7737F7F7FFF7F70FFFF030F00000F07F33F7F7F77777370FF9F030FFFF
+        FFF07F3737F7FFFFFFF70FFFF030000000007FFFF7F777777777000000333333
+        3333777777333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+    end
+    object cbxBackwardCompatible: TCheckBox
+      Left = 186
+      Top = 54
+      Width = 161
+      Height = 17
+      Action = actBackwardCompatible
+      State = cbChecked
+      TabOrder = 5
+    end
+  end
+  object PageControl1: TPageControl
+    Left = 8
+    Top = 76
+    Width = 457
+    Height = 305
+    ActivePage = TabSheet1
+    TabOrder = 1
+    object TabSheet1: TTabSheet
+      Caption = 'Echo string'
+      object lblSend: TLabel
+        Left = 8
+        Top = 24
+        Width = 96
+        Height = 16
+        Caption = 'Original string:'
+      end
+      object lblReturn: TLabel
+        Left = 8
+        Top = 144
+        Width = 93
+        Height = 16
+        Caption = 'Echoed string:'
+      end
+      object edtStrOrig: TEdit
+        Left = 8
+        Top = 40
+        Width = 225
+        Height = 24
+        TabOrder = 0
+        Text = 'Hello World!'
+      end
+      object edtStrRtrn: TEdit
+        Left = 8
+        Top = 160
+        Width = 225
+        Height = 24
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object btnEchoString: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE ECHO STRING'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnEchoStringClick
+      end
+      object Memo1: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return a single string.'
+          ''
+          'Original string passed in as '
+          'PType literal.'
+          ''
+          'RPC: XWB EXAMPLE ECHO '
+          'STRING.'
+          ''
+          'Return Value Type: SINGLE '
+          'VALUE.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 3
+      end
+    end
+    object TabSheet2: TTabSheet
+      Caption = 'Pass by reference'
+      object Label1: TLabel
+        Left = 8
+        Top = 24
+        Width = 70
+        Height = 16
+        Caption = 'Reference:'
+      end
+      object Label4: TLabel
+        Left = 8
+        Top = 144
+        Width = 40
+        Height = 16
+        Caption = 'Value:'
+      end
+      object edtReference: TEdit
+        Left = 8
+        Top = 40
+        Width = 225
+        Height = 24
+        TabOrder = 0
+        Text = '$HOROLOG'
+      end
+      object edtValue: TEdit
+        Left = 8
+        Top = 160
+        Width = 225
+        Height = 24
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object btnPassByRef: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB GET VARIABLE VALUE'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnPassByRefClick
+      end
+      object Memo2: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.strCall '
+          'method to return a single string.'
+          ''
+          'Parameter passed in as PType '
+          'reference.'
+          ''
+          'RPC: XWB GET VARIABLE '
+          'VALUE.'
+          ''
+          'Return Value Type: SINGLE '
+          'VALUE.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 3
+      end
+    end
+    object TabSheet3: TTabSheet
+      Caption = 'Get list'
+      object Label5: TLabel
+        Left = 8
+        Top = 120
+        Width = 87
+        Height = 16
+        Caption = 'Returned list:'
+      end
+      object lstData: TListBox
+        Left = 8
+        Top = 136
+        Width = 225
+        Height = 129
+        ItemHeight = 16
+        TabOrder = 0
+      end
+      object btnGetList: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE GET LIST'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnGetListClick
+      end
+      object RadioButton1: TRadioButton
+        Left = 16
+        Top = 16
+        Width = 137
+        Height = 17
+        Caption = 'Number of lines'
+        Checked = True
+        TabOrder = 2
+        TabStop = True
+      end
+      object RadioButton2: TRadioButton
+        Left = 16
+        Top = 48
+        Width = 137
+        Height = 17
+        Caption = 'Kilobytes of data'
+        TabOrder = 3
+      end
+      object spnLines: TSpinEdit
+        Left = 160
+        Top = 16
+        Width = 65
+        Height = 26
+        MaxValue = 0
+        MinValue = 0
+        TabOrder = 4
+        Value = 50
+      end
+      object spnKbytes: TSpinEdit
+        Left = 160
+        Top = 48
+        Width = 65
+        Height = 26
+        MaxValue = 0
+        MinValue = 0
+        TabOrder = 5
+        Value = 32
+      end
+      object Memo3: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return several strings.'
+          ''
+          'Two parameters passed in as '
+          'PType literal.'
+          ''
+          'RPC: XWB EXAMPLE GET LIST.'
+          ''
+          'Return Value Type: GLOBAL '
+          'ARRAY.'
+          ''
+          'WORD WRAP ON field is True '
+          'to break appart call result into '
+          'separate Results strings instead '
+          'of one long Results[0] string.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 6
+      end
+    end
+    object TabSheet4: TTabSheet
+      Caption = 'WP Text'
+      object lblList: TLabel
+        Left = 8
+        Top = 56
+        Width = 177
+        Height = 17
+        AutoSize = False
+        Caption = 'REMOTE PROCEDURE file description:'
+      end
+      object btnWPText: TButton
+        Left = 8
+        Top = 16
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE WPTEXT'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = btnWPTextClick
+      end
+      object mmoText: TMemo
+        Left = 8
+        Top = 80
+        Width = 225
+        Height = 185
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 1
+      end
+      object Memo4: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.lstCall '
+          'method to return several strings.'
+          ''
+          'No parameters are used in this '
+          'call.'
+          ''
+          'RPC: XWB EXAMPLE WPTEXT.'
+          ''
+          'Return Value Type: WORD '
+          'PROCESSING.'
+          ''
+          'WORD WRAP ON field is False '
+          'to allow memo box to control '
+          'word wrapping as necessary.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 2
+      end
+    end
+    object TabSheet5: TTabSheet
+      Caption = 'Sort numbers'
+      object Label6: TLabel
+        Left = 8
+        Top = 120
+        Width = 87
+        Height = 16
+        Caption = 'Returned list:'
+      end
+      object Label7: TLabel
+        Left = 8
+        Top = 8
+        Width = 72
+        Height = 16
+        Caption = 'How many:'
+      end
+      object lblStatus: TLabel
+        Left = 8
+        Top = 56
+        Width = 57
+        Height = 16
+        Caption = 'lblStatus'
+        Visible = False
+      end
+      object lstSorted: TListBox
+        Left = 8
+        Top = 136
+        Width = 225
+        Height = 129
+        ItemHeight = 16
+        TabOrder = 0
+      end
+      object btnSortNum: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE SORT NUMBERS'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnSortNumClick
+      end
+      object spnNumbers: TSpinEdit
+        Left = 8
+        Top = 24
+        Width = 81
+        Height = 26
+        MaxValue = 10000
+        MinValue = 0
+        TabOrder = 2
+        Value = 500
+      end
+      object rgrDirection: TRadioGroup
+        Left = 104
+        Top = 8
+        Width = 121
+        Height = 65
+        Caption = 'Sort direction'
+        ItemIndex = 0
+        Items.Strings = (
+          'low -> high'
+          'high -> low')
+        TabOrder = 3
+      end
+      object Memo5: TMemo
+        Left = 240
+        Top = 88
+        Width = 201
+        Height = 177
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 4
+      end
+      object rgArrayType: TRadioGroup
+        Left = 240
+        Top = 8
+        Width = 185
+        Height = 65
+        Caption = 'Array Type'
+        ItemIndex = 0
+        Items.Strings = (
+          'Local'
+          'Global')
+        TabOrder = 5
+        OnClick = rgArrayTypeClick
+      end
+    end
+  end
+  object MainMenu1: TMainMenu
+    Left = 160
+    Top = 320
+    object mnuOptions: TMenuItem
+      Caption = '&Options'
+      object mnuOptOldConnectionOnly: TMenuItem
+        Action = actOldConnectionOnly
+        Caption = 'Old Connection Type Only'
+      end
+      object mnuOptBackwardCompatible: TMenuItem
+        Action = actBackwardCompatible
+      end
+      object mnuOptDebugMode: TMenuItem
+        Action = actDebugMode
+      end
+      object mnuOptUserContext: TMenuItem
+        Action = actUserContext
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object AboutExample: TMenuItem
+        Caption = '&About RPC Broker Example...'
+        OnClick = AboutExampleClick
+      end
+    end
+  end
+  object Timer1: TTimer
+    OnTimer = Timer1Timer
+    Left = 16
+    Top = 320
+  end
+  object ActionList1: TActionList
+    Left = 52
+    Top = 295
+    object actBackwardCompatible: TAction
+      Caption = '&Backward Compatible'
+      Checked = True
+      OnExecute = actBackwardCompatibleExecute
+    end
+    object actOldConnectionOnly: TAction
+      Caption = '&Old Connection Only'
+      OnExecute = actOldConnectionOnlyExecute
+    end
+    object actDebugMode: TAction
+      Caption = '&Debug Mode'
+      OnExecute = actDebugModeExecute
+    end
+    object actUserContext: TAction
+      Caption = '&CCOW User Context'
+      Enabled = False
+      OnExecute = actUserContextExecute
+    end
+  end
+  object RPCBroker1: TRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9200
+    RpcVersion = '0'
+    Server = 'BROKERSERVER'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    OldConnectionOnly = False
+    Left = 100
+    Top = 335
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExample.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExample.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExample.pas	(revision 1676)
@@ -0,0 +1,425 @@
+{**************************************************
+RPC Broker Example form      ver. 1.1  9/3/97
+   Broker Development Team
+   San Francisco IRM Field Office, Dept. of Veterans Affairs
+
+Disclaimer:
+   This example does not attempt to teach general Delphi and M programming.
+   We intentionally removed any safeguards from the code that prevents
+   passing values that are too small or too large.  Therefore, the important
+   code remains uncluttered and the programmer is free to experiment and
+   push the program beyond its limits.
+
+Purpose:
+   This sample application is an example of how to program client/server
+   applications in Delphi and M using the RPC Broker. The demonstrated features
+   include:
+     - Connecting to an M server
+     - Creating an application context
+     - Using the GetServerInfo function
+     - Displaying the VistA splash screen
+     - Setting the TRPCBroker Param property for each Param PType (literal,
+       reference, list)
+     - Calling RPCs with the Call method
+     - Calling RPCs with the lstCall and strCall methods
+
+   We encourage you to study the Delphi and M source code to see how the
+   Broker is used to accomplish these tasks.  Try changing some of the
+   RPCBroker1 component properties to see what happens.  Also, try other
+   values in the fields of the remote procedure records in the
+   REMOTE PROCEDURE file.
+
+Warning: "Get list" and "Sort numbers" tabs can potentially take excessively
+large data samples which can either crash server process or cause the
+connection timeout.  Final note, memory allocation errors are not recorded
+in the Kernel error trap.  They are recorded in the operating system error
+trap.
+
+Context option for this application:
+   XWB BROKER EXAMPLE
+
+Remote procedures used:
+   XWB EXAMPLE ECHO STRING
+   XWB EXAMPLE GET LIST
+   XWB EXAMPLE SORT NUMBERS
+   XWB EXAMPLE WPTEXT
+   XWB GET VARIABLE VALUE
+
+Server M routine:
+   XWBEXMPL
+**************************************************}
+unit fBrokerExample;
+
+interface
+
+uses
+  SysUtils,Forms, StdCtrls,Graphics, Dialogs, WinTypes,
+  Controls, Classes, ExtCtrls, TRPCB, XWBut1, MFunStr, Menus, WinProcs,
+  RpcConf1, Spin, ComCtrls, fVistAAbout, Buttons,
+  ActiveX, ActnList, CCOWRPCBroker, OleCtrls, VERGENCECONTEXTORLib_TLB;
+
+type
+  TfrmBrokerExample = class(TForm)
+    GroupBox2: TGroupBox;
+    Label2: TLabel;
+    Label3: TLabel;
+    MainMenu1: TMainMenu;
+    Help1: TMenuItem;
+    AboutExample: TMenuItem;
+    btnConnect: TButton;
+    edtPort: TEdit;
+    edtServer: TEdit;
+    PageControl1: TPageControl;
+    TabSheet1: TTabSheet;
+    TabSheet2: TTabSheet;
+    TabSheet3: TTabSheet;
+    TabSheet4: TTabSheet;
+    TabSheet5: TTabSheet;
+    lblSend: TLabel;
+    edtStrOrig: TEdit;
+    lblReturn: TLabel;
+    edtStrRtrn: TEdit;
+    btnEchoString: TButton;
+    lblList: TLabel;
+    Label1: TLabel;
+    edtReference: TEdit;
+    Label4: TLabel;
+    edtValue: TEdit;
+    btnPassByRef: TButton;
+    lstData: TListBox;
+    Label5: TLabel;
+    btnGetList: TButton;
+    btnWPText: TButton;
+    Label6: TLabel;
+    lstSorted: TListBox;
+    btnSortNum: TButton;
+    spnNumbers: TSpinEdit;
+    Label7: TLabel;
+    rgrDirection: TRadioGroup;
+    RadioButton1: TRadioButton;
+    RadioButton2: TRadioButton;
+    spnLines: TSpinEdit;
+    spnKbytes: TSpinEdit;
+    Timer1: TTimer;
+    mmoText: TMemo;
+    lblStatus: TLabel;
+    BitBtn1: TBitBtn;
+    btnGetServerInfo: TBitBtn;
+    Memo1: TMemo;
+    Memo2: TMemo;
+    Memo3: TMemo;
+    Memo4: TMemo;
+    Memo5: TMemo;
+    rgArrayType: TRadioGroup;
+    cbxBackwardCompatible: TCheckBox;
+    mnuOptions: TMenuItem;
+    mnuOptBackwardCompatible: TMenuItem;
+    mnuOptDebugMode: TMenuItem;
+    mnuOptUserContext: TMenuItem;
+    mnuOptOldConnectionOnly: TMenuItem;
+    ActionList1: TActionList;
+    actBackwardCompatible: TAction;
+    actOldConnectionOnly: TAction;
+    actDebugMode: TAction;
+    actUserContext: TAction;
+    RPCBroker1: TRPCBroker;
+    procedure AboutExampleClick(Sender: TObject);
+    procedure btnEchoStringClick(Sender: TObject);
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnPassByRefClick(Sender: TObject);
+    procedure btnGetListClick(Sender: TObject);
+    procedure btnSortNumClick(Sender: TObject);
+    procedure btnWPTextClick(Sender: TObject);
+    procedure Timer1Timer(Sender: TObject);
+    procedure btnGetServerInfoClick(Sender: TObject);
+    procedure edtServerChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure rgArrayTypeClick(Sender: TObject);
+    procedure actBackwardCompatibleExecute(Sender: TObject);
+    procedure actDebugModeExecute(Sender: TObject);
+    procedure actUserContextExecute(Sender: TObject);
+    procedure actOldConnectionOnlyExecute(Sender: TObject);
+  public
+    procedure OnCCOWCommit(Sender: TObject);         //  CCOW related
+end;
+
+
+
+var
+  frmBrokerExample: TfrmBrokerExample;
+  ContextorControl1: TContextorControl;   //  CCOW related
+
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmBrokerExample.btnEchoStringClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE ECHO STRING';
+  RPCBroker1.Param[0].Value := edtStrOrig.Text;
+  RPCBroker1.Param[0].PType := literal;
+  RPCBroker1.Call;                           //execute RPC
+  edtStrRtrn.Text := RPCBroker1.Results[0];  //for single value use Results[0]
+end;
+
+
+
+procedure TfrmBrokerExample.btnPassByRefClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB GET VARIABLE VALUE';
+  RPCBroker1.Param[0].Value := edtReference.Text;
+  RPCBroker1.Param[0].PType := reference;
+  edtValue.Text := RPCBroker1.strCall;   //execute RPC and show result in one call
+end;
+
+
+
+procedure TfrmBrokerExample.btnGetListClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE GET LIST';
+  if RadioButton1.Checked then begin
+    RPCBroker1.Param[0].Value := 'LINES';
+    RPCBroker1.Param[0].PType := literal;
+    RPCBroker1.Param[1].Value := IntToStr(spnLines.Value);
+    RPCBroker1.Param[1].PType := literal;
+  end
+  else begin
+    RPCBroker1.Param[0].Value := 'KILOBYTES';
+    RPCBroker1.Param[0].PType := literal;
+    RPCBroker1.Param[1].Value := IntToStr(spnKbytes.Value);
+    RPCBroker1.Param[1].PType := literal
+  end;
+  RPCBroker1.Call;                           //execute RPC
+  lstData.Items := RPCBroker1.Results;       //show results of the call
+end;
+
+
+
+procedure TfrmBrokerExample.btnWPTextClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE WPTEXT';
+  RPCBroker1.lstCall(mmoText.Lines);         //execute RPC and show results in one call
+end;
+
+
+
+procedure TfrmBrokerExample.btnSortNumClick(Sender: TObject);
+var
+  I, SaveRPCTimeLimit, DefaultRange: integer;
+begin
+  lblStatus.Visible := True;                 //turn on status label
+  lblStatus.Caption := 'building';           //tell user what's happenning
+  Application.ProcessMessages;               //give Windows chance to paint
+  with RPCBroker1 do
+  begin
+    if rgArrayType.ItemIndex = 0 then
+    begin
+      RemoteProcedure := 'XWB EXAMPLE SORT NUMBERS';
+      DefaultRange := 10000;
+    end
+    else
+    begin
+      RemoteProcedure := 'XWB EXAMPLE GLOBAL SORT';
+      DefaultRange := 100000;
+    end;
+      
+    if rgrDirection.ItemIndex = 0 then Param[0].Value := 'LO'
+    else Param[0].Value := 'HI';
+    Param[0].PType := literal;
+    with Param[1] do begin
+      if rgArrayType.ItemIndex = 0 then
+        PType := list                                //tells Broker to pass Mult
+      else
+        PType := global;
+      for I := 0 to spnNumbers.Value - 1 do       //build Mult one by one
+          Mult['"A'+IntToStr(I)+'"'] := IntToStr(Random(DefaultRange)+1); //subscript and value are strings!
+    end;
+    lblStatus.Caption := 'RPC running';
+    Application.ProcessMessages;             //give Windows chance to paint
+    SaveRPCTimeLimit := RPCTimeLimit;
+    RPCTimeLimit := spnNumbers.Value div 10; //adjust in case a lot of numbers
+    Call;                                    //execute RPC
+    lstSorted.Items := Results;              //show results of the call
+    RPCTimeLimit := SaveRPCTimeLimit;        //restore original value
+  end;
+  lblStatus.Visible := False;                //turn off status label
+end;
+
+
+
+procedure TfrmBrokerExample.btnConnectClick(Sender: TObject);
+begin
+  if btnConnect.Caption = '&Connect' then
+  begin   //connect
+    RpcBroker1.IsBackwardCompatibleConnection := actBackwardCompatible.Checked;
+    RpcBroker1.OldConnectionOnly := actOldConnectionOnly.Checked;
+    RpcBroker1.DebugMode := actDebugMode.Checked;
+    if RpcBroker1.IsBackwardCompatibleConnection or RpcBroker1.OldConnectionOnly then
+    begin
+      rgArrayType.ItemIndex := 0;
+      rgArrayType.Enabled := False;
+    end
+    else
+    begin
+      rgArrayType.Enabled := True;
+    end;
+{
+    // ***********************  CCOW User Context  ****************************
+    if actUserContext.Checked then
+    begin
+      if (RPCBroker1.Contextor = nil) then
+      begin
+        if ContextorControl1 = nil then
+        begin
+          ContextorControl1 := TContextorControl.Create(Self);
+          ContextorControl1.OnCommitted := OnCCOWCommit;
+          try
+            ContextorControl1.Run('CCOWTerm#', '', TRUE, '*');
+          except
+            ShowMessage('Problem with Contextor.Run');
+            ContextorControl1.Free;
+            ContextorControl1 := nil;
+          end;
+        end;
+      end;
+      RPCBroker1.Contextor := ContextorControl1;
+    end
+    else
+      RPCBroker1.Contextor := nil;
+
+    // ***********************  End CCOW User Context *************************
+}
+
+    RPCBroker1.ClearParameters := True;           //try False, see what happens
+    try
+      RPCBroker1.Connected := True;
+                     //establish connection
+      if not RPCBroker1.CreateContext('XWB BROKER EXAMPLE') then
+          ShowMessage('Context could not be created!');
+    except
+      on e: Exception do
+        ShowMessage('Error: ' + e.Message);
+    end;
+  end
+  else                                            //disconnect
+    RPCBroker1.Connected := False;
+end;
+
+
+
+procedure TfrmBrokerExample.btnGetServerInfoClick(Sender: TObject);
+var
+  strServer, strPort: string;
+begin
+  if GetServerInfo(strServer, strPort)<> mrCancel then
+  begin {getsvrinfo}
+    edtServer.Text := strServer;                  //use chosen server
+    edtPort.Text := strPort;                      //use chosen port
+  end;
+end;
+
+
+
+procedure TfrmBrokerExample.edtServerChange(Sender: TObject);
+begin
+  RPCBroker1.Server := edtServer.Text;          //use specified server name/addr
+  RPCBroker1.ListenerPort := StrToInt(edtPort.Text);  //use specified port
+end;
+
+
+
+procedure TfrmBrokerExample.Timer1Timer(Sender: TObject);
+begin
+  if RPCBroker1.Connected then begin
+    btnConnect.Caption := '&Disconnect';
+    btnConnect.Default := False;
+    mnuOptions.Enabled := False;
+    cbxBackwardCompatible.Enabled := False;
+    Label3.Caption := 'Connected';
+    Label3.Font.Color := clLime;  // clGreen;  // went to lime for higher contrast at some of the High contrast desktops
+  end
+  else begin
+    btnConnect.Caption := '&Connect';
+    btnConnect.Default := True;
+    mnuOptions.Enabled := True;
+    if not actOldConnectionOnly.Checked then
+      cbxBackwardCompatible.Enabled := True;
+    Label3.Caption := 'Disconnected';
+    Label3.Font.Color := clRed;   //  Stayed with Red, generated a high contrast across all of the various combinations
+                                  //  Attempted to use clHighlight, but it did not show up like a highlight.
+  end;
+end;
+
+
+
+procedure TfrmBrokerExample.AboutExampleClick(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+
+procedure TfrmBrokerExample.FormCreate(Sender: TObject);
+begin
+{
+  CoInitialize(nil);  // needed for CCOW
+}
+end;
+
+procedure TfrmBrokerExample.rgArrayTypeClick(Sender: TObject);
+begin
+  if rgArrayType.ItemIndex = 0 then
+    spnNumbers.Value := 500
+  else
+    spnNumbers.Value := 5000;
+end;
+
+procedure TfrmBrokerExample.actBackwardCompatibleExecute(Sender: TObject);
+begin
+  if actBackwardCompatible.Checked then
+    actBackwardCompatible.Checked := False
+  else
+    actBackwardCompatible.Checked := True;
+end;
+
+procedure TfrmBrokerExample.actDebugModeExecute(Sender: TObject);
+begin
+  if actDebugMode.Checked then
+    actDebugMode.Checked := False
+  else
+    actDebugMode.Checked := True;
+end;
+
+procedure TfrmBrokerExample.actUserContextExecute(Sender: TObject);
+begin
+  if actuserContext.Checked then
+    actUserContext.Checked := False
+  else
+    actUserContext.Checked := True;
+end;
+
+procedure TfrmBrokerExample.actOldConnectionOnlyExecute(Sender: TObject);
+begin
+  if actOldConnectionOnly.Checked then
+  begin
+    actOldConnectionOnly.Checked := False;
+    actBackwardCompatible.Enabled := True;
+  end
+  else
+  begin
+    actOldConnectionOnly.Checked := True;
+    actBackwardCompatible.Enabled := False;
+  end;
+end;
+
+procedure TfrmBrokerExample.OnCCOWCommit(Sender: TObject);
+begin
+{                                                           //  uses CCOWRPCBroker
+  if RpcBroker1.WasUserDefined and RpcBroker1.IsUserCleared then
+    Halt;
+}
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExampleCCOW.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExampleCCOW.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExampleCCOW.dfm	(revision 1676)
@@ -0,0 +1,615 @@
+object frmBrokerExampleCCOW: TfrmBrokerExampleCCOW
+  Left = 247
+  Top = 112
+  BorderStyle = bsSingle
+  Caption = 'RPCBroker Example CCOW-enabled (p40)'
+  ClientHeight = 389
+  ClientWidth = 473
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clBtnText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 16
+  object GroupBox2: TGroupBox
+    Left = 8
+    Top = 0
+    Width = 457
+    Height = 73
+    Caption = 'VistA Server'
+    TabOrder = 0
+    object Label2: TLabel
+      Left = 6
+      Top = 51
+      Width = 67
+      Height = 16
+      AutoSize = False
+      Caption = 'Status:'
+    end
+    object Label3: TLabel
+      Left = 73
+      Top = 51
+      Width = 88
+      Height = 16
+      Caption = 'Disconnected'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clRed
+      Font.Height = -13
+      Font.Name = 'System'
+      Font.Style = []
+      ParentColor = False
+      ParentFont = False
+    end
+    object btnConnect: TButton
+      Left = 354
+      Top = 12
+      Width = 91
+      Height = 25
+      Caption = '&Connect'
+      Default = True
+      TabOrder = 2
+      OnClick = btnConnectClick
+    end
+    object edtPort: TEdit
+      Left = 192
+      Top = 24
+      Width = 49
+      Height = 24
+      Hint = 'Listener port number'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      Text = '9200'
+      OnChange = edtServerChange
+    end
+    object edtServer: TEdit
+      Left = 8
+      Top = 24
+      Width = 177
+      Height = 24
+      Hint = 'Name of server or IP address'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Text = 'BROKERSERVER'
+      OnChange = edtServerChange
+    end
+    object BitBtn1: TBitBtn
+      Left = 354
+      Top = 44
+      Width = 91
+      Height = 25
+      TabOrder = 3
+      Kind = bkClose
+    end
+    object btnGetServerInfo: TBitBtn
+      Left = 248
+      Top = 24
+      Width = 73
+      Height = 25
+      Hint = 'GetServerInfo'
+      Caption = 'Server'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = btnGetServerInfoClick
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333000000000
+        00333FF777777777773F0000FFFFFFFFFF0377773F3F3F3F3F7308880F0F0F0F
+        0FF07F33737373737337088880FFFFFFFFF07F3337FFFFFFFFF7088880000000
+        00037F3337777777777308888033330F03337F3337F3FF7F7FFF088880300000
+        00007F3337F7777777770FFFF030FFFFFFF07F3FF7F7F3FFFFF708008030F000
+        00F07F7737F7F77777F70FFFF030F0AAE0F07F3FF7F7F7F337F708008030F0DA
+        D0F07F7737F7F7FFF7F70FFFF030F00000F07F33F7F7F77777370FF9F030FFFF
+        FFF07F3737F7FFFFFFF70FFFF030000000007FFFF7F777777777000000333333
+        3333777777333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+    end
+    object cbxBackwardCompatible: TCheckBox
+      Left = 186
+      Top = 54
+      Width = 161
+      Height = 17
+      Action = actBackwardCompatible
+      State = cbChecked
+      TabOrder = 5
+    end
+  end
+  object PageControl1: TPageControl
+    Left = 8
+    Top = 76
+    Width = 457
+    Height = 305
+    ActivePage = TabSheet1
+    TabOrder = 1
+    object TabSheet1: TTabSheet
+      Caption = 'Echo string'
+      object lblSend: TLabel
+        Left = 8
+        Top = 24
+        Width = 96
+        Height = 16
+        Caption = 'Original string:'
+      end
+      object lblReturn: TLabel
+        Left = 8
+        Top = 144
+        Width = 93
+        Height = 16
+        Caption = 'Echoed string:'
+      end
+      object edtStrOrig: TEdit
+        Left = 8
+        Top = 40
+        Width = 225
+        Height = 24
+        TabOrder = 0
+        Text = 'Hello World!'
+      end
+      object edtStrRtrn: TEdit
+        Left = 8
+        Top = 160
+        Width = 225
+        Height = 24
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object btnEchoString: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE ECHO STRING'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnEchoStringClick
+      end
+      object Memo1: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return a single string.'
+          ''
+          'Original string passed in as '
+          'PType literal.'
+          ''
+          'RPC: XWB EXAMPLE ECHO '
+          'STRING.'
+          ''
+          'Return Value Type: SINGLE '
+          'VALUE.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 3
+      end
+    end
+    object TabSheet2: TTabSheet
+      Caption = 'Pass by reference'
+      object Label1: TLabel
+        Left = 8
+        Top = 24
+        Width = 70
+        Height = 16
+        Caption = 'Reference:'
+      end
+      object Label4: TLabel
+        Left = 8
+        Top = 144
+        Width = 40
+        Height = 16
+        Caption = 'Value:'
+      end
+      object edtReference: TEdit
+        Left = 8
+        Top = 40
+        Width = 225
+        Height = 24
+        TabOrder = 0
+        Text = '$HOROLOG'
+      end
+      object edtValue: TEdit
+        Left = 8
+        Top = 160
+        Width = 225
+        Height = 24
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object btnPassByRef: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB GET VARIABLE VALUE'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnPassByRefClick
+      end
+      object Memo2: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.strCall '
+          'method to return a single string.'
+          ''
+          'Parameter passed in as PType '
+          'reference.'
+          ''
+          'RPC: XWB GET VARIABLE '
+          'VALUE.'
+          ''
+          'Return Value Type: SINGLE '
+          'VALUE.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 3
+      end
+    end
+    object TabSheet3: TTabSheet
+      Caption = 'Get list'
+      object Label5: TLabel
+        Left = 8
+        Top = 120
+        Width = 87
+        Height = 16
+        Caption = 'Returned list:'
+      end
+      object lstData: TListBox
+        Left = 8
+        Top = 136
+        Width = 225
+        Height = 129
+        ItemHeight = 16
+        TabOrder = 0
+      end
+      object btnGetList: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE GET LIST'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnGetListClick
+      end
+      object RadioButton1: TRadioButton
+        Left = 16
+        Top = 16
+        Width = 137
+        Height = 17
+        Caption = 'Number of lines'
+        Checked = True
+        TabOrder = 2
+        TabStop = True
+      end
+      object RadioButton2: TRadioButton
+        Left = 16
+        Top = 48
+        Width = 137
+        Height = 17
+        Caption = 'Kilobytes of data'
+        TabOrder = 3
+      end
+      object spnLines: TSpinEdit
+        Left = 160
+        Top = 16
+        Width = 65
+        Height = 26
+        MaxValue = 0
+        MinValue = 0
+        TabOrder = 4
+        Value = 50
+      end
+      object spnKbytes: TSpinEdit
+        Left = 160
+        Top = 48
+        Width = 65
+        Height = 26
+        MaxValue = 0
+        MinValue = 0
+        TabOrder = 5
+        Value = 32
+      end
+      object Memo3: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return several strings.'
+          ''
+          'Two parameters passed in as '
+          'PType literal.'
+          ''
+          'RPC: XWB EXAMPLE GET LIST.'
+          ''
+          'Return Value Type: GLOBAL '
+          'ARRAY.'
+          ''
+          'WORD WRAP ON field is True '
+          'to break appart call result into '
+          'separate Results strings instead '
+          'of one long Results[0] string.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 6
+      end
+    end
+    object TabSheet4: TTabSheet
+      Caption = 'WP Text'
+      object lblList: TLabel
+        Left = 8
+        Top = 56
+        Width = 177
+        Height = 17
+        AutoSize = False
+        Caption = 'REMOTE PROCEDURE file description:'
+      end
+      object btnWPText: TButton
+        Left = 8
+        Top = 16
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE WPTEXT'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = btnWPTextClick
+      end
+      object mmoText: TMemo
+        Left = 8
+        Top = 80
+        Width = 225
+        Height = 185
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 1
+      end
+      object Memo4: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.lstCall '
+          'method to return several strings.'
+          ''
+          'No parameters are used in this '
+          'call.'
+          ''
+          'RPC: XWB EXAMPLE WPTEXT.'
+          ''
+          'Return Value Type: WORD '
+          'PROCESSING.'
+          ''
+          'WORD WRAP ON field is False '
+          'to allow memo box to control '
+          'word wrapping as necessary.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 2
+      end
+    end
+    object TabSheet5: TTabSheet
+      Caption = 'Sort numbers'
+      object Label6: TLabel
+        Left = 8
+        Top = 120
+        Width = 87
+        Height = 16
+        Caption = 'Returned list:'
+      end
+      object Label7: TLabel
+        Left = 8
+        Top = 8
+        Width = 72
+        Height = 16
+        Caption = 'How many:'
+      end
+      object lblStatus: TLabel
+        Left = 8
+        Top = 56
+        Width = 57
+        Height = 16
+        Caption = 'lblStatus'
+        Visible = False
+      end
+      object lstSorted: TListBox
+        Left = 8
+        Top = 136
+        Width = 225
+        Height = 129
+        ItemHeight = 16
+        TabOrder = 0
+      end
+      object btnSortNum: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE SORT NUMBERS'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnSortNumClick
+      end
+      object spnNumbers: TSpinEdit
+        Left = 8
+        Top = 24
+        Width = 81
+        Height = 26
+        MaxValue = 10000
+        MinValue = 0
+        TabOrder = 2
+        Value = 500
+      end
+      object rgrDirection: TRadioGroup
+        Left = 104
+        Top = 8
+        Width = 121
+        Height = 65
+        Caption = 'Sort direction'
+        ItemIndex = 0
+        Items.Strings = (
+          'low -> high'
+          'high -> low')
+        TabOrder = 3
+      end
+      object Memo5: TMemo
+        Left = 240
+        Top = 88
+        Width = 201
+        Height = 177
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 4
+      end
+      object rgArrayType: TRadioGroup
+        Left = 240
+        Top = 8
+        Width = 185
+        Height = 65
+        Caption = 'Array Type'
+        ItemIndex = 0
+        Items.Strings = (
+          'Local'
+          'Global')
+        TabOrder = 5
+        OnClick = rgArrayTypeClick
+      end
+    end
+  end
+  object MainMenu1: TMainMenu
+    Left = 160
+    Top = 320
+    object mnuOptions: TMenuItem
+      Caption = '&Options'
+      object mnuOptOldConnectionOnly: TMenuItem
+        Action = actOldConnectionOnly
+        Caption = 'Old Connection Type Only'
+      end
+      object mnuOptBackwardCompatible: TMenuItem
+        Action = actBackwardCompatible
+      end
+      object mnuOptDebugMode: TMenuItem
+        Action = actDebugMode
+      end
+      object mnuOptUserContext: TMenuItem
+        Action = actUserContext
+      end
+    end
+    object mnuHelp: TMenuItem
+      Caption = '&Help'
+      object AboutExample: TMenuItem
+        Caption = '&About RPC Broker Example...'
+        OnClick = AboutExampleClick
+      end
+    end
+  end
+  object Timer1: TTimer
+    OnTimer = Timer1Timer
+    Left = 16
+    Top = 320
+  end
+  object ActionList1: TActionList
+    Left = 52
+    Top = 295
+    object actBackwardCompatible: TAction
+      Caption = '&Backward Compatible'
+      Checked = True
+      OnExecute = actBackwardCompatibleExecute
+    end
+    object actOldConnectionOnly: TAction
+      Caption = '&Old Connection Only'
+      OnExecute = actOldConnectionOnlyExecute
+    end
+    object actDebugMode: TAction
+      Caption = '&Debug Mode'
+      OnExecute = actDebugModeExecute
+    end
+    object actUserContext: TAction
+      Caption = '&CCOW User Context'
+      Checked = True
+      OnExecute = actUserContextExecute
+    end
+  end
+  object RPCBroker1: TCCOWRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9200
+    RpcVersion = '0'
+    Server = 'BROKERSERVER'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    OldConnectionOnly = False
+    Left = 108
+    Top = 327
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExampleCCOW.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExampleCCOW.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fBrokerExampleCCOW.pas	(revision 1676)
@@ -0,0 +1,444 @@
+{**************************************************
+RPC Broker Example form      ver. 1.1  9/3/97
+   Broker Development Team
+   San Francisco IRM Field Office, Dept. of Veterans Affairs
+
+Disclaimer:
+   This example does not attempt to teach general Delphi and M programming.
+   We intentionally removed any safeguards from the code that prevents
+   passing values that are too small or too large.  Therefore, the important
+   code remains uncluttered and the programmer is free to experiment and
+   push the program beyond its limits.
+
+Purpose:
+   This sample application is an example of how to program client/server
+   applications in Delphi and M using the RPC Broker. The demonstrated features
+   include:
+     - Connecting to an M server
+     - Creating an application context
+     - Using the GetServerInfo function
+     - Displaying the VistA splash screen
+     - Setting the TRPCBroker Param property for each Param PType (literal,
+       reference, list)
+     - Calling RPCs with the Call method
+     - Calling RPCs with the lstCall and strCall methods
+
+   We encourage you to study the Delphi and M source code to see how the
+   Broker is used to accomplish these tasks.  Try changing some of the
+   RPCBroker1 component properties to see what happens.  Also, try other
+   values in the fields of the remote procedure records in the
+   REMOTE PROCEDURE file.
+
+Warning: "Get list" and "Sort numbers" tabs can potentially take excessively
+large data samples which can either crash server process or cause the
+connection timeout.  Final note, memory allocation errors are not recorded
+in the Kernel error trap.  They are recorded in the operating system error
+trap.
+
+Context option for this application:
+   XWB BROKER EXAMPLE
+
+Remote procedures used:
+   XWB EXAMPLE ECHO STRING
+   XWB EXAMPLE GET LIST
+   XWB EXAMPLE SORT NUMBERS
+   XWB EXAMPLE WPTEXT
+   XWB GET VARIABLE VALUE
+
+Server M routine:
+   XWBEXMPL
+**************************************************}
+unit fBrokerExampleCCOW;
+
+interface
+
+uses
+  SysUtils,Forms, StdCtrls,Graphics, Dialogs, WinTypes,
+  Controls, Classes, ExtCtrls, TRPCB, XWBut1, MFunStr, Menus, WinProcs,
+  RpcConf1, Spin, ComCtrls, fVistAAbout, Buttons,
+  ActiveX, ActnList, CCOWRPCBroker, OleCtrls, VERGENCECONTEXTORLib_TLB;
+
+type
+  TfrmBrokerExampleCCOW = class(TForm)
+    GroupBox2: TGroupBox;
+    Label2: TLabel;
+    Label3: TLabel;
+    MainMenu1: TMainMenu;
+    mnuHelp: TMenuItem;
+    AboutExample: TMenuItem;
+    btnConnect: TButton;
+    edtPort: TEdit;
+    edtServer: TEdit;
+    PageControl1: TPageControl;
+    TabSheet1: TTabSheet;
+    TabSheet2: TTabSheet;
+    TabSheet3: TTabSheet;
+    TabSheet4: TTabSheet;
+    TabSheet5: TTabSheet;
+    lblSend: TLabel;
+    edtStrOrig: TEdit;
+    lblReturn: TLabel;
+    edtStrRtrn: TEdit;
+    btnEchoString: TButton;
+    lblList: TLabel;
+    Label1: TLabel;
+    edtReference: TEdit;
+    Label4: TLabel;
+    edtValue: TEdit;
+    btnPassByRef: TButton;
+    lstData: TListBox;
+    Label5: TLabel;
+    btnGetList: TButton;
+    btnWPText: TButton;
+    Label6: TLabel;
+    lstSorted: TListBox;
+    btnSortNum: TButton;
+    spnNumbers: TSpinEdit;
+    Label7: TLabel;
+    rgrDirection: TRadioGroup;
+    RadioButton1: TRadioButton;
+    RadioButton2: TRadioButton;
+    spnLines: TSpinEdit;
+    spnKbytes: TSpinEdit;
+    Timer1: TTimer;
+    mmoText: TMemo;
+    lblStatus: TLabel;
+    BitBtn1: TBitBtn;
+    btnGetServerInfo: TBitBtn;
+    Memo1: TMemo;
+    Memo2: TMemo;
+    Memo3: TMemo;
+    Memo4: TMemo;
+    Memo5: TMemo;
+    rgArrayType: TRadioGroup;
+    cbxBackwardCompatible: TCheckBox;
+    mnuOptions: TMenuItem;
+    mnuOptBackwardCompatible: TMenuItem;
+    mnuOptDebugMode: TMenuItem;
+    mnuOptUserContext: TMenuItem;
+    mnuOptOldConnectionOnly: TMenuItem;
+    ActionList1: TActionList;
+    actBackwardCompatible: TAction;
+    actOldConnectionOnly: TAction;
+    actDebugMode: TAction;
+    actUserContext: TAction;
+    RPCBroker1: TCCOWRPCBroker;
+    procedure AboutExampleClick(Sender: TObject);
+    procedure btnEchoStringClick(Sender: TObject);
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnPassByRefClick(Sender: TObject);
+    procedure btnGetListClick(Sender: TObject);
+    procedure btnSortNumClick(Sender: TObject);
+    procedure btnWPTextClick(Sender: TObject);
+    procedure Timer1Timer(Sender: TObject);
+    procedure btnGetServerInfoClick(Sender: TObject);
+    procedure edtServerChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure rgArrayTypeClick(Sender: TObject);
+    procedure actBackwardCompatibleExecute(Sender: TObject);
+    procedure actDebugModeExecute(Sender: TObject);
+    procedure actUserContextExecute(Sender: TObject);
+    procedure actOldConnectionOnlyExecute(Sender: TObject);
+  public
+    procedure OnCCOWCommit(Sender: TObject);         //  CCOW related
+    procedure HandlePendingEvent(Sender: TObject; const aContextItemCollection: 
+        IDispatch);
+end;
+
+
+
+var
+  frmBrokerExampleCCOW: TfrmBrokerExampleCCOW;
+  ContextorControl1: TContextorControl;   //  CCOW related
+
+
+implementation
+
+uses fOkToTerminate;
+
+{$R *.DFM}
+
+procedure TfrmBrokerExampleCCOW.btnEchoStringClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE ECHO STRING';
+  RPCBroker1.Param[0].Value := edtStrOrig.Text;
+  RPCBroker1.Param[0].PType := literal;
+  RPCBroker1.Call;                           //execute RPC
+  edtStrRtrn.Text := RPCBroker1.Results[0];  //for single value use Results[0]
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.btnPassByRefClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB GET VARIABLE VALUE';
+  RPCBroker1.Param[0].Value := edtReference.Text;
+  RPCBroker1.Param[0].PType := reference;
+  edtValue.Text := RPCBroker1.strCall;   //execute RPC and show result in one call
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.btnGetListClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE GET LIST';
+  if RadioButton1.Checked then begin
+    RPCBroker1.Param[0].Value := 'LINES';
+    RPCBroker1.Param[0].PType := literal;
+    RPCBroker1.Param[1].Value := IntToStr(spnLines.Value);
+    RPCBroker1.Param[1].PType := literal;
+  end
+  else begin
+    RPCBroker1.Param[0].Value := 'KILOBYTES';
+    RPCBroker1.Param[0].PType := literal;
+    RPCBroker1.Param[1].Value := IntToStr(spnKbytes.Value);
+    RPCBroker1.Param[1].PType := literal
+  end;
+  RPCBroker1.Call;                           //execute RPC
+  lstData.Items := RPCBroker1.Results;       //show results of the call
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.btnWPTextClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE WPTEXT';
+  RPCBroker1.lstCall(mmoText.Lines);         //execute RPC and show results in one call
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.btnSortNumClick(Sender: TObject);
+var
+  I, SaveRPCTimeLimit, DefaultRange: integer;
+begin
+  lblStatus.Visible := True;                 //turn on status label
+  lblStatus.Caption := 'building';           //tell user what's happenning
+  Application.ProcessMessages;               //give Windows chance to paint
+  with RPCBroker1 do
+  begin
+    if rgArrayType.ItemIndex = 0 then
+    begin
+      RemoteProcedure := 'XWB EXAMPLE SORT NUMBERS';
+      DefaultRange := 10000;
+    end
+    else
+    begin
+      RemoteProcedure := 'XWB EXAMPLE GLOBAL SORT';
+      DefaultRange := 100000;
+    end;
+      
+    if rgrDirection.ItemIndex = 0 then Param[0].Value := 'LO'
+    else Param[0].Value := 'HI';
+    Param[0].PType := literal;
+    with Param[1] do begin
+      if rgArrayType.ItemIndex = 0 then
+        PType := list                                //tells Broker to pass Mult
+      else
+        PType := global;
+      for I := 0 to spnNumbers.Value - 1 do       //build Mult one by one
+          Mult['"A'+IntToStr(I)+'"'] := IntToStr(Random(DefaultRange)+1); //subscript and value are strings!
+    end;
+    lblStatus.Caption := 'RPC running';
+    Application.ProcessMessages;             //give Windows chance to paint
+    SaveRPCTimeLimit := RPCTimeLimit;
+    RPCTimeLimit := spnNumbers.Value div 10; //adjust in case a lot of numbers
+    Call;                                    //execute RPC
+    lstSorted.Items := Results;              //show results of the call
+    RPCTimeLimit := SaveRPCTimeLimit;        //restore original value
+  end;
+  lblStatus.Visible := False;                //turn off status label
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.btnConnectClick(Sender: TObject);
+begin
+  if btnConnect.Caption = '&Connect' then
+  begin   //connect
+    RpcBroker1.IsBackwardCompatibleConnection := actBackwardCompatible.Checked;
+    RpcBroker1.OldConnectionOnly := actOldConnectionOnly.Checked;
+    RpcBroker1.DebugMode := actDebugMode.Checked;
+    if RpcBroker1.IsBackwardCompatibleConnection or RpcBroker1.OldConnectionOnly then
+    begin
+      rgArrayType.ItemIndex := 0;
+      rgArrayType.Enabled := False;
+    end
+    else
+    begin
+      rgArrayType.Enabled := True;
+    end;
+
+    // ***********************  CCOW User Context  ****************************
+    if actUserContext.Checked then
+    begin
+      if (RPCBroker1.Contextor = nil) then
+      begin
+        if ContextorControl1 = nil then
+        begin
+          ContextorControl1 := TContextorControl.Create(Self);
+          ContextorControl1.OnCommitted := OnCCOWCommit;
+          ContextorControl1.OnPending := HandlePendingEvent;
+          try
+            ContextorControl1.Run('CCOWTerm#', '', TRUE, '*');
+          except
+            ShowMessage('Problem with Contextor.Run');
+            ContextorControl1.Free;
+            ContextorControl1 := nil;
+          end;
+        end;
+      end;
+      RPCBroker1.Contextor := ContextorControl1;
+    end
+    else
+      RPCBroker1.Contextor := nil;
+
+    // ***********************  End CCOW User Context *************************
+
+
+    RPCBroker1.ClearParameters := True;           //try False, see what happens
+    try
+      RPCBroker1.Connected := True;
+                     //establish connection
+      if not RPCBroker1.CreateContext('XWB BROKER EXAMPLE') then
+          ShowMessage('Context could not be created!');
+    except
+      on e: Exception do
+        ShowMessage('Error: ' + e.Message);
+    end;
+  end
+  else                                            //disconnect
+    RPCBroker1.Connected := False;
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.btnGetServerInfoClick(Sender: TObject);
+var
+  strServer, strPort: string;
+begin
+  if GetServerInfo(strServer, strPort)<> mrCancel then
+  begin {getsvrinfo}
+    edtServer.Text := strServer;                  //use chosen server
+    edtPort.Text := strPort;                      //use chosen port
+  end;
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.edtServerChange(Sender: TObject);
+begin
+  RPCBroker1.Server := edtServer.Text;          //use specified server name/addr
+  RPCBroker1.ListenerPort := StrToInt(edtPort.Text);  //use specified port
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.Timer1Timer(Sender: TObject);
+begin
+  if RPCBroker1.Connected then begin
+    btnConnect.Caption := '&Disconnect';
+    btnConnect.Default := False;
+    mnuOptions.Enabled := False;
+    cbxBackwardCompatible.Enabled := False;
+    Label3.Caption := 'Connected';
+    Label3.Font.Color := clLime;  // clGreen;  // went to lime for higher contrast at some of the High contrast desktops
+  end
+  else begin
+    btnConnect.Caption := '&Connect';
+    btnConnect.Default := True;
+    mnuOptions.Enabled := True;
+    if not actOldConnectionOnly.Checked then
+      cbxBackwardCompatible.Enabled := True;
+    Label3.Caption := 'Disconnected';
+    Label3.Font.Color := clRed;   //  Stayed with Red, generated a high contrast across all of the various combinations
+                                  //  Attempted to use clHighlight, but it did not show up like a highlight.
+  end;
+end;
+
+
+
+procedure TfrmBrokerExampleCCOW.AboutExampleClick(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+
+procedure TfrmBrokerExampleCCOW.FormCreate(Sender: TObject);
+begin
+  CoInitialize(nil);  // needed for CCOW
+end;
+
+procedure TfrmBrokerExampleCCOW.rgArrayTypeClick(Sender: TObject);
+begin
+  if rgArrayType.ItemIndex = 0 then
+    spnNumbers.Value := 500
+  else
+    spnNumbers.Value := 5000;
+end;
+
+procedure TfrmBrokerExampleCCOW.actBackwardCompatibleExecute(Sender: TObject);
+begin
+  if actBackwardCompatible.Checked then
+    actBackwardCompatible.Checked := False
+  else
+    actBackwardCompatible.Checked := True;
+end;
+
+procedure TfrmBrokerExampleCCOW.actDebugModeExecute(Sender: TObject);
+begin
+  if actDebugMode.Checked then
+    actDebugMode.Checked := False
+  else
+    actDebugMode.Checked := True;
+end;
+
+procedure TfrmBrokerExampleCCOW.actUserContextExecute(Sender: TObject);
+begin
+  if actuserContext.Checked then
+    actUserContext.Checked := False
+  else
+    actUserContext.Checked := True;
+end;
+
+procedure TfrmBrokerExampleCCOW.actOldConnectionOnlyExecute(Sender: TObject);
+begin
+  if actOldConnectionOnly.Checked then
+  begin
+    actOldConnectionOnly.Checked := False;
+    actBackwardCompatible.Enabled := True;
+  end
+  else
+  begin
+    actOldConnectionOnly.Checked := True;
+    actBackwardCompatible.Enabled := False;
+  end;
+end;
+
+procedure TfrmBrokerExampleCCOW.OnCCOWCommit(Sender: TObject);
+begin
+  if RpcBroker1.WasUserDefined and RpcBroker1.IsUserCleared then
+    Halt;
+end;
+
+procedure TfrmBrokerExampleCCOW.HandlePendingEvent(Sender: TObject; const 
+    aContextItemCollection: IDispatch);
+var
+  data : IContextItemCollection;
+begin
+  data := IContextItemCollection(aContextItemCollection) ;
+  if RPCBroker1.IsUserContextPending(data) then
+  begin
+    frmOkToTerminate := TfrmOkToTerminate.Create(Self);
+    try
+      if not (frmOkToTerminate.ShowModal = mrOK) then
+        ContextorControl1.SetSurveyResponse('No Way');
+    finally
+      frmOkToTerminate.Free;
+    end;
+  end;
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fVistAAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fVistAAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fVistAAbout.dfm	(revision 1676)
@@ -0,0 +1,1201 @@
+object frmVistAAbout: TfrmVistAAbout
+  Left = 279
+  Top = 106
+  BorderStyle = bsDialog
+  Caption = 'About'
+  ClientHeight = 236
+  ClientWidth = 353
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 185
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object VistaLogo: TImage
+      Left = 8
+      Top = 8
+      Width = 153
+      Height = 73
+      Center = True
+      Picture.Data = {
+        07544269746D61702A880000424D2A8800000000000036000000280000009600
+        00004D0000000100180000000000F48700000000000000000000000000000000
+        0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDFFFFFFDDDDDDCCCCCCB2B2B2CC
+        CCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0DDDDDDF1F1F1F1F1F1DDDDDDCCCC
+        CCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFC0C0C0DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDF1F1
+        F1FFFFFFF1F1F1DDDDDD999999CCCCCCF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1DDDDDDCCCCCCB2B2B2
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1F1DDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1CCCCCCB2B2B2CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1FFFFFFFFFFFFDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCCFFFFFFDDDDDDB2B2B2C0C0
+        C0FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFF1F1
+        F1F1F1F1CCCCCCFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFB2B2B2C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1DDDDDDFFFFFFC0C0C0FFFFFFF1F1F1CCCCCCF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCCCCCCCCCCCCCC
+        CCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDCCCCCCDDDDDDDDDD
+        DDCCCCCCF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDCCCCCCC0C0C0C0C0C0CCCCCCC0C0C0CCCCCCB2B2B2F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCCCCCCCCCCCCCDDDDDDC0C0
+        C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDD
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1
+        FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFC0C0C0CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDD0000FFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCC0C0C0C0C0
+        C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDD0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD
+        C0C0C0C0C0C0C0C0C0B2B2B20000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0
+        C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0CCCCCCCCCCCCDDDDDDDDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCC
+        CCC0C0C0DDDDDDF1F1F1F1F1F10000FF0000FF0000FF0000FFFFFFFFF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFC0C0C0C0C0C0CC
+        CCCCF1F1F1DDDDDDDDDDDDCCCCCCCCCCCCCCCCCCB2B2B2F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        DDDDDDDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1
+        F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFCCCCCC
+        DDDDDDF1F1F1FFFFFFDDDDDDCCCCCCB2B2B2DDDDDDB2B2B2C0C0C0F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1DDDDDDF1F1
+        F1F1F1F1B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFF1F1F1DD
+        DDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1
+        F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1CCCCCCB2B2B2DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFF
+        FFFFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFF1F1F1C0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFDDDDDD
+        CCCCCCC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1B2B2B2C0C0C0CCCCCCDDDDDDFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFF
+        FFFFFFFFFFFFFFDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0
+        C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFDDDD
+        DD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCCCCCCCDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDFFFFFFF1F1F1DD
+        DDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF999999C0C0C0FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDCCCCCCFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2DDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFDDDDDDC0C0C0C0C0C0CCCCCCDDDDDDC0C0C0F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1FFFFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFCCCCCCCCCCCCFFFFFFDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2F1F1F1
+        FFFFFFDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFC0C0C0B2B2B2CCCCCCF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDD
+        DDFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCB2B2B2C0C0C0CCCCCCF1F1F1FF
+        FFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0FFFFFFDDDDDDF1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDD
+        DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCC0C0C0FFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1CCCCCCB2B2B2CCCCCCC0C0C0CCCCCCF1F1F1F1F1F1F1F1F1DDDD
+        DDFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0DDDDDDFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCDDDDDDF1F1F1F1F1F1CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0C0C0FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFCCCCCCC0C0C0B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2C0C0C0CCCCCCCCCCCCDDDDDDC0C0C0C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1
+        F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1B2B2B2C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0
+        C0C0F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        B2B2B2CCCCCCFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD999999C0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0CCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1CCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDCCCC
+        CCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCCCCCCCDDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFF1F1F1DD
+        DDDDCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDCCCCCCB2B2B2F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDC0
+        C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDDDDDDDDDDDDC0C0C0DDDDDD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCCCCCCCDDDDDDDDDDDDC0C0C0B2B2B2CCCCCCF1F1F1FFFFFF
+        F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDB2B2B2CCCCCCFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1CCCCCCC0C0C00000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0
+        999999DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1FFFFFFF1
+        F1F1DDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCFFFFFFF1F1F1DDDDDDC0C0C0B2B2B2DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1
+        CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFCCCCCCCCCCCCDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDD
+        DDC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDD
+        DDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCCCCCC
+        CCCCCCCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDD
+        DDCCCCCCF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDCCCCCCC0C0C0C0C0C0DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0CCCCCCF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DD
+        DDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD999999B2B2B2DD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0DDDDDDFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1DDDDDDF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCDDDDDDCCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1
+        F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCC0
+        C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1DDDDDDF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFCCCCCCCCCCCCCCCCCCFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDF1F1F1FFFFFF
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDF1F1
+        F1F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1
+        F1F1F1F1F1FFFFFFDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDC0C0C0CCCCCCB2B2B2F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCC0C0C0DD
+        DDDDDDDDDDCCCCCCCCCCCC999999DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDD
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFF
+        FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DD
+        DDDDC0C0C0C0C0C0B2B2B2F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDC0C0C0
+        DDDDDDF1F1F1CCCCCCCCCCCCC0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1CCCCCCDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCCCCCC
+        CCDDDDDDF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0CCCCCCDDDDDDCCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFC0C0C0F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDDDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1CCCCCCC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF8000008000
+        00800000800000800000800000800000800000800000FFFFFFC0C0C0DDDDDDCC
+        CCCCDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1800000
+        800000800000DDDDDDCCCCCCC0C0C0C0C0C0DDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDD
+        DDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFF
+        FFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF8000008000008000
+        00800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000800000800000800000800000800000800000DDDDDD
+        F1F1F1DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1800000800000800000C0C0C0C0C0C0DDDDDDF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFF800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1800000800000800000800000CCCCCCFFFFFFFFFFFFF1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1FFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1DDDDDD800000800000800000800000FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFCCCCCCDDDDDDCCCCCCDDDDDDC0C0C0DDDDDDFFFFFFFFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCB2B2B2C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDD
+        DDDDDDDDF1F1F1F1F1F1F1F1F1800000800000800000DDDDDDF1F1F1DDDDDDF1
+        F1F1F1F1F1800000800000800000800000F1F1F1DDDDDDDDDDDDDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1800000800000800000F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDD999999B2B2B2F1F1F1DDDDDDDDDDDD800000800000800000FF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCC
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0CCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F1800000800000800000DDDDDD
+        DDDDDDF1F1F1DDDDDD800000800000800000800000F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000F1F1F1C0C0C0B2B2B2DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1800000800000
+        800000800000F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCC999999CCCCCCF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F18000008000
+        00800000C0C0C0CCCCCCC0C0C0C0C0C0800000800000800000F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        800000800000800000CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDD
+        DD800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFF800000800000800000
+        DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFF
+        FFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0
+        C0C0C0C0C0C0C0C0CCCCCC800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFFFF
+        FFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0CCCCCC0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFF800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD800000800000800000DDDDDDC0C0C0F1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFF1F1F1DDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0DD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDD
+        DDDDDDF1F1F1CCCCCCCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCB2B2B2CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFF
+        F1F1F1FFFFFFFFFFFF800000800000800000800000800000800000F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF800000800000800000C0
+        C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD800000800000800000FFFFFF
+        FFFFFFFFFFFFFFFFFFC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCF1F1
+        F1FFFFFF800000800000800000800000800000800000800000800000DDDDDDDD
+        DDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        800000800000F1F1F1F1F1F1DDDDDDCCCCCCCCCCCCDDDDDDF1F1F1F1F1F10000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDDF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFCCCCCCCCCCCCDDDDDDCCCCCC8000008000008000
+        00FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCDD
+        DDDDF1F1F1800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1
+        F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDDDDDDDDDD
+        DDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F180
+        0000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        8000008000008000008000008000008000008000008000008000008000008000
+        00F1F1F1FFFFFFF1F1F1B2B2B2C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F100
+        00FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1FFFFFF800000800000800000F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1800000800000800000800000800000800000800000800000F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0C0C0C0F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FFFFFFFF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFF1F1
+        F1F1F1F1F1F1F1FFFFFF800000800000800000800000DDDDDDC0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1B2B2B2C0C0C0CCCCCCDDDDDD0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000
+        800000FFFFFFF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCC999999F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDD
+        DDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC0000FF00
+        00FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDD8000008000
+        00F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFF800000800000800000F1F1F1F1
+        F1F1DDDDDDC0C0C0CCCCCCCCCCCCFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000
+        800000800000F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FF800000800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDD
+        DDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1CCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1
+        F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F10000FF0000FF0000FFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFF
+        FFDDDDDDF1F1F1F1F1F10000FF0000FF0000FFB2B2B2C0C0C0DDDDDDF1F1F180
+        0000800000800000FFFFFFFFFFFFF1F1F1F1F1F1FFFFFF800000800000800000
+        800000DDDDDDB2B2B2CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCC
+        CC800000800000800000F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF800000800000800000F1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDCCCCCCCC
+        CCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCCCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFC0C0C0C0C0C0B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FFCCCCCCF1
+        F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFCCCCCCDDDDDDF1F1F1
+        F1F1F1800000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFFF1F1F18000
+        00800000800000F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDD
+        999999DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1CCCCCCB2B2B2DDDDDDFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFF800000800000800000FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000800000800000800000FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0
+        C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCC0C0C0CC
+        CCCCFFFFFFF1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFF1F1F1FFFFFFFFFFFF800000800000800000DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F18000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000FFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000800000800000800000F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1B2B2B20000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCC999999B2B2B2
+        F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDD
+        DDC0C0C0C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDD8000008000008000
+        00DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000800000800000800000800000800000800000800000800000FFFFFFF1F1F1
+        F1F1F1FFFFFFFFFFFF8000008000008000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000800000800000F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C00000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1B2B2B2CCCC
+        CCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0B2
+        B2B2CCCCCCDDDDDDFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDD80000080
+        0000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDD800000800000800000800000800000800000800000FFFFFFF1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDD
+        F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1
+        F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDC0C0C0DDDDDDC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1
+        F1F1C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCC
+        CCCCCCCCCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDD
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC
+        DDDDDDC0C0C0CCCCCCDDDDDDC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1
+        F1DDDDDDCCCCCCDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDCCCCCCC0C0C0DDDDDDCCCCCCC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCC0C0C0DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2CCCC
+        CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1DDDD
+        DDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCDD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDCCCCCCB2B2B2C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CC
+        CCCCCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCDDDDDDF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000}
+      Stretch = True
+      IsControl = True
+    end
+    object lblProductName: TLabel
+      Left = 5
+      Top = 80
+      Width = 68
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Product Name'
+      IsControl = True
+    end
+    object lblVersion: TLabel
+      Left = 8
+      Top = 160
+      Width = 74
+      Height = 13
+      Caption = 'Version: 1.1.1.1'
+      IsControl = True
+    end
+    object lblGovStatement: TLabel
+      Left = 5
+      Top = 96
+      Width = 231
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Developed by the Department of Veterans Affairs'
+      IsControl = True
+    end
+    object lblCRC: TLabel
+      Left = 232
+      Top = 160
+      Width = 92
+      Height = 13
+      Caption = 'CRC: DDDDDDDD'
+    end
+    object lblDate: TLabel
+      Left = 97
+      Top = 160
+      Width = 82
+      Height = 13
+      Alignment = taCenter
+      Caption = 'January 30, 2000'
+    end
+    object ProgramIcon: TImage
+      Left = 176
+      Top = 8
+      Width = 145
+      Height = 73
+    end
+    object Memo1: TMemo
+      Left = 8
+      Top = 112
+      Width = 321
+      Height = 49
+      BorderStyle = bsNone
+      Lines.Strings = (
+        'Unauthorized access or use of this system and/or its data is a '
+        
+          'federal crime.  Use of all data must be in accordance with VA po' +
+          'licy '
+        'on security and privacy.')
+      ParentColor = True
+      TabOrder = 0
+    end
+  end
+  object OKButton: TButton
+    Left = 139
+    Top = 204
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fVistAAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fVistAAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/fVistAAbout.pas	(revision 1676)
@@ -0,0 +1,267 @@
+unit fVistAAbout;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls, jpeg, jconsts, Dialogs;
+
+TYPE
+  TInteger8 = Int64;
+
+type
+  TfrmVistAAbout = class(TForm)
+    Panel1: TPanel;
+    VistaLogo: TImage;
+    lblProductName: TLabel;
+    lblVersion: TLabel;
+    lblGovStatement: TLabel;
+    OKButton: TButton;
+    lblCRC: TLabel;
+    Memo1: TMemo;
+    lblDate: TLabel;
+    ProgramIcon: TImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  procedure getfileinfo(var Version: String; var ProductName: String); virtual;
+  end;
+
+procedure ShowAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+  CONST
+    table:  ARRAY[0..255] OF DWORD =
+   ($00000000, $77073096, $EE0E612C, $990951BA,
+    $076DC419, $706AF48F, $E963A535, $9E6495A3,
+    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
+    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
+    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
+    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,
+    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
+    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116,
+    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,
+    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+
+    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,
+    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,
+    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,
+    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
+    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
+    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
+    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086,
+    $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
+    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+
+    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
+    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,
+    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
+    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
+    $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
+    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
+    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
+    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,
+    $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
+    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+
+    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,
+    $9C0906A9, $EB0E363F, $72076785, $05005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
+    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
+    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
+    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
+    $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
+    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
+    $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
+    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+  // Use CalcCRC32 as a procedure so CRCValue can be passed in but
+  // also returned.  This allows multiple calls to CalcCRC32 for
+  // the "same" CRC-32 calculation.
+  PROCEDURE CalcCRC32 (p:  pointer; ByteCount:  DWORD; VAR CRCValue:  DWORD);
+    // The following is a little cryptic (but executes very quickly).
+    // The algorithm is as follows:
+    //  1.  exclusive-or the input byte with the low-order byte of
+    //      the CRC register to get an INDEX
+    //  2.  shift the CRC register eight bits to the right
+    //  3.  exclusive-or the CRC register with the contents of
+    //      Table[INDEX]
+    //  4.  repeat steps 1 through 3 for all bytes
+
+   VAR
+    i:  DWORD;
+    q:  ^BYTE;
+  BEGIN
+    q := p;
+    FOR   i := 0 TO ByteCount-1 DO BEGIN
+      CRCvalue := (CRCvalue SHR 8)  XOR
+                  Table[ q^ XOR (CRCvalue AND $000000FF) ];
+      INC(q)
+    END
+  END {CalcCRC32};
+
+
+  // The CRC-32 value calculated here matches the one from the PKZIP program.
+  // Use MemoryStream to read file in binary mode.
+  PROCEDURE CalcFileCRC32 (FromName:  STRING; VAR CRCvalue:  DWORD;
+            VAR TotalBytes:  TInteger8;
+            VAR error:  WORD);
+    VAR
+      Stream:  TMemoryStream;
+  BEGIN
+    error := 0;
+    CRCValue := $FFFFFFFF;
+    Stream := TMemoryStream.Create;
+    TRY
+      TRY
+        Stream.LoadFromFile(FromName);
+        IF   Stream.Size > 0
+        THEN CalcCRC32 (Stream.Memory, Stream.Size, CRCvalue)
+      EXCEPT
+        ON E: EReadError DO
+         error := 1
+      END;
+
+      CRCvalue := NOT CRCvalue;
+      TotalBytes := Stream.Size
+    FINALLY
+      Stream.Free
+    END;
+  END {CalcFileCRC32};
+
+procedure TfrmVistAAbout.FormCreate(Sender: TObject);
+var
+  CRC32: DWord;
+  TotalBytes: Int64;
+  Error: Word;
+  Text: String;
+  Version: String;
+  ProductName: String;
+begin
+  CalcFileCRC32(Application.ExeName, CRC32, TotalBytes, Error);
+  lblCRC.Caption := 'CRC: ' + IntToHex(CRC32,8);
+  Text := Application.ExeName;
+  while pos('\',Text) > 0 do
+  begin
+    Text := copy(Text,pos('\',Text)+1,Length(Text));
+  end;    // while
+  Text := copy(Text,1,Length(Text)-4);
+  Caption := 'About ' + Text;
+  getfileinfo(Version, ProductName);
+  lblProductName.Caption := ProductName;
+  lblVersion.Caption := 'Version: ' + Version;
+  lblProductName.Width := Panel1.Width-10;
+  lblGovStatement.Width := Panel1.Width-10;
+  if ProgramIcon.Picture.Graphic = nil then
+  begin
+    VistALogo.Left := (Panel1.Width - VistALogo.Width) div 2;
+  end;
+end;
+
+procedure TfrmVistAAbout.GetFileInfo(var Version: String; var ProductName: String);
+var
+  VerInfoSize: DWORD;         // holds the size of the version info resource
+  GetInfoSizeJunk: DWORD;     // a junk variable, its value is ignored
+  VersionInfo: Pointer;       // points to the version info resource
+  Translation: Pointer;       // holds version info translation table
+  InfoPointer: Pointer;       // a pointer to version information
+
+  VersionInfoSize: UINT;      // holds the size of version information
+  VersionValue: string;       // holds the version info request string
+  SearchRec: TSearchRec;
+  DateTimeVal: TDateTime;
+  WriteTime: Integer;
+begin
+  {retrieve the size of the version information resource, if one exists}
+  VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName),
+                                        GetInfoSizeJunk);
+
+  {if there was a version information resource available...}
+
+  if VerInfoSize>0 then
+  begin
+    {retrieve enough memory to hold the version resource}
+    GetMem(VersionInfo, VerInfoSize);
+
+    {retrieve the version resource for the selected file}
+    GetFileVersionInfo(PChar(Application.ExeName), 0,
+                       VerInfoSize, VersionInfo);
+
+    {retrieve a pointer to the translation table}
+    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation',
+                  Translation, VersionInfoSize);
+
+    {initialize the version value request string}
+    VersionValue :='\\StringFileInfo\\'+
+                  IntToHex(LoWord(LongInt(Translation^)),4)+
+                  IntToHex(HiWord(LongInt(Translation^)),4)+
+                  '\\';
+
+    {retrieve and display the file version}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'FileVersion'), InfoPointer,
+                  VersionInfoSize);
+    Version := string(PChar(InfoPointer));
+
+    {retrieve and display the product name}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'ProductName'), InfoPointer,
+                  VersionInfoSize);
+    ProductName := string(PChar(InfoPointer));
+
+    {free the version resource memory}
+    FreeMem(VersionInfo, VerInfoSize);
+  end
+  else
+  begin
+  Version := 'Not in File';
+  ProductName := 'Not Identified In File';
+  end;
+  if findfirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
+  begin
+    WriteTime := SearchRec.Time;
+    DateTimeVal := FileDateToDateTime(WriteTime);
+    lblDate.Caption := FormatDateTime('mmmm dd, yyyy hh:nn',DateTimeVal);
+  end;
+end;
+
+procedure ShowAboutBox;
+begin
+  with TfrmVistAAbout.Create(Application) do
+    try
+      ShowModal;
+    finally
+      free;
+    end;
+end;
+
+end.
+ 
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/frmVistAAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/frmVistAAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/frmVistAAbout.dfm	(revision 1676)
@@ -0,0 +1,1201 @@
+object frmVistAAbout: TfrmVistAAbout
+  Left = 279
+  Top = 106
+  BorderStyle = bsDialog
+  Caption = 'About'
+  ClientHeight = 236
+  ClientWidth = 353
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 185
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object VistaLogo: TImage
+      Left = 8
+      Top = 8
+      Width = 153
+      Height = 73
+      Center = True
+      Picture.Data = {
+        07544269746D61702A880000424D2A8800000000000036000000280000009600
+        00004D0000000100180000000000F48700000000000000000000000000000000
+        0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDFFFFFFDDDDDDCCCCCCB2B2B2CC
+        CCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0DDDDDDF1F1F1F1F1F1DDDDDDCCCC
+        CCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFC0C0C0DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDF1F1
+        F1FFFFFFF1F1F1DDDDDD999999CCCCCCF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1DDDDDDCCCCCCB2B2B2
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1F1DDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1CCCCCCB2B2B2CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1FFFFFFFFFFFFDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCCFFFFFFDDDDDDB2B2B2C0C0
+        C0FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFF1F1
+        F1F1F1F1CCCCCCFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFB2B2B2C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1DDDDDDFFFFFFC0C0C0FFFFFFF1F1F1CCCCCCF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCCCCCCCCCCCCCC
+        CCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDCCCCCCDDDDDDDDDD
+        DDCCCCCCF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDCCCCCCC0C0C0C0C0C0CCCCCCC0C0C0CCCCCCB2B2B2F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCCCCCCCCCCCCCDDDDDDC0C0
+        C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDD
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1
+        FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFC0C0C0CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDD0000FFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCC0C0C0C0C0
+        C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDD0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD
+        C0C0C0C0C0C0C0C0C0B2B2B20000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0
+        C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0CCCCCCCCCCCCDDDDDDDDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCC
+        CCC0C0C0DDDDDDF1F1F1F1F1F10000FF0000FF0000FF0000FFFFFFFFF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFC0C0C0C0C0C0CC
+        CCCCF1F1F1DDDDDDDDDDDDCCCCCCCCCCCCCCCCCCB2B2B2F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        DDDDDDDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1
+        F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFCCCCCC
+        DDDDDDF1F1F1FFFFFFDDDDDDCCCCCCB2B2B2DDDDDDB2B2B2C0C0C0F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1DDDDDDF1F1
+        F1F1F1F1B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFF1F1F1DD
+        DDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1
+        F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1CCCCCCB2B2B2DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFF
+        FFFFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFF1F1F1C0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFDDDDDD
+        CCCCCCC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1B2B2B2C0C0C0CCCCCCDDDDDDFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFF
+        FFFFFFFFFFFFFFDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0
+        C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFDDDD
+        DD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCCCCCCCDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDFFFFFFF1F1F1DD
+        DDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF999999C0C0C0FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDCCCCCCFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2DDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFDDDDDDC0C0C0C0C0C0CCCCCCDDDDDDC0C0C0F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1FFFFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFCCCCCCCCCCCCFFFFFFDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2F1F1F1
+        FFFFFFDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFC0C0C0B2B2B2CCCCCCF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDD
+        DDFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCB2B2B2C0C0C0CCCCCCF1F1F1FF
+        FFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0FFFFFFDDDDDDF1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDD
+        DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCC0C0C0FFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1CCCCCCB2B2B2CCCCCCC0C0C0CCCCCCF1F1F1F1F1F1F1F1F1DDDD
+        DDFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0DDDDDDFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCDDDDDDF1F1F1F1F1F1CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0C0C0FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFCCCCCCC0C0C0B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2C0C0C0CCCCCCCCCCCCDDDDDDC0C0C0C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1
+        F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1B2B2B2C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0
+        C0C0F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        B2B2B2CCCCCCFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD999999C0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0CCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1CCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDCCCC
+        CCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCCCCCCCDDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFF1F1F1DD
+        DDDDCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDCCCCCCB2B2B2F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDC0
+        C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDDDDDDDDDDDDC0C0C0DDDDDD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCCCCCCCDDDDDDDDDDDDC0C0C0B2B2B2CCCCCCF1F1F1FFFFFF
+        F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDB2B2B2CCCCCCFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1CCCCCCC0C0C00000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0
+        999999DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1FFFFFFF1
+        F1F1DDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCFFFFFFF1F1F1DDDDDDC0C0C0B2B2B2DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1
+        CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFCCCCCCCCCCCCDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDD
+        DDC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDD
+        DDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCCCCCC
+        CCCCCCCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDD
+        DDCCCCCCF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDCCCCCCC0C0C0C0C0C0DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0CCCCCCF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DD
+        DDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD999999B2B2B2DD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0DDDDDDFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1DDDDDDF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCDDDDDDCCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1
+        F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCC0
+        C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1DDDDDDF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFCCCCCCCCCCCCCCCCCCFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDF1F1F1FFFFFF
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDF1F1
+        F1F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1
+        F1F1F1F1F1FFFFFFDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDC0C0C0CCCCCCB2B2B2F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCC0C0C0DD
+        DDDDDDDDDDCCCCCCCCCCCC999999DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDD
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFF
+        FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DD
+        DDDDC0C0C0C0C0C0B2B2B2F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDC0C0C0
+        DDDDDDF1F1F1CCCCCCCCCCCCC0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1CCCCCCDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCCCCCC
+        CCDDDDDDF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0CCCCCCDDDDDDCCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFC0C0C0F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDDDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1CCCCCCC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF8000008000
+        00800000800000800000800000800000800000800000FFFFFFC0C0C0DDDDDDCC
+        CCCCDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1800000
+        800000800000DDDDDDCCCCCCC0C0C0C0C0C0DDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDD
+        DDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFF
+        FFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF8000008000008000
+        00800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000800000800000800000800000800000800000DDDDDD
+        F1F1F1DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1800000800000800000C0C0C0C0C0C0DDDDDDF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFF800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1800000800000800000800000CCCCCCFFFFFFFFFFFFF1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1FFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1DDDDDD800000800000800000800000FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFCCCCCCDDDDDDCCCCCCDDDDDDC0C0C0DDDDDDFFFFFFFFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCB2B2B2C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDD
+        DDDDDDDDF1F1F1F1F1F1F1F1F1800000800000800000DDDDDDF1F1F1DDDDDDF1
+        F1F1F1F1F1800000800000800000800000F1F1F1DDDDDDDDDDDDDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1800000800000800000F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDD999999B2B2B2F1F1F1DDDDDDDDDDDD800000800000800000FF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCC
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0CCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F1800000800000800000DDDDDD
+        DDDDDDF1F1F1DDDDDD800000800000800000800000F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000F1F1F1C0C0C0B2B2B2DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1800000800000
+        800000800000F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCC999999CCCCCCF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F18000008000
+        00800000C0C0C0CCCCCCC0C0C0C0C0C0800000800000800000F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        800000800000800000CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDD
+        DD800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFF800000800000800000
+        DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFF
+        FFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0
+        C0C0C0C0C0C0C0C0CCCCCC800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFFFF
+        FFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0CCCCCC0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFF800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD800000800000800000DDDDDDC0C0C0F1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFF1F1F1DDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0DD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDD
+        DDDDDDF1F1F1CCCCCCCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCB2B2B2CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFF
+        F1F1F1FFFFFFFFFFFF800000800000800000800000800000800000F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF800000800000800000C0
+        C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD800000800000800000FFFFFF
+        FFFFFFFFFFFFFFFFFFC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCF1F1
+        F1FFFFFF800000800000800000800000800000800000800000800000DDDDDDDD
+        DDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        800000800000F1F1F1F1F1F1DDDDDDCCCCCCCCCCCCDDDDDDF1F1F1F1F1F10000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDDF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFCCCCCCCCCCCCDDDDDDCCCCCC8000008000008000
+        00FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCDD
+        DDDDF1F1F1800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1
+        F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDDDDDDDDDD
+        DDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F180
+        0000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        8000008000008000008000008000008000008000008000008000008000008000
+        00F1F1F1FFFFFFF1F1F1B2B2B2C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F100
+        00FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1FFFFFF800000800000800000F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1800000800000800000800000800000800000800000800000F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0C0C0C0F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FFFFFFFF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFF1F1
+        F1F1F1F1F1F1F1FFFFFF800000800000800000800000DDDDDDC0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1B2B2B2C0C0C0CCCCCCDDDDDD0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000
+        800000FFFFFFF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCC999999F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDD
+        DDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC0000FF00
+        00FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDD8000008000
+        00F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFF800000800000800000F1F1F1F1
+        F1F1DDDDDDC0C0C0CCCCCCCCCCCCFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000
+        800000800000F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FF800000800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDD
+        DDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1CCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1
+        F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F10000FF0000FF0000FFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFF
+        FFDDDDDDF1F1F1F1F1F10000FF0000FF0000FFB2B2B2C0C0C0DDDDDDF1F1F180
+        0000800000800000FFFFFFFFFFFFF1F1F1F1F1F1FFFFFF800000800000800000
+        800000DDDDDDB2B2B2CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCC
+        CC800000800000800000F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF800000800000800000F1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDCCCCCCCC
+        CCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCCCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFC0C0C0C0C0C0B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FFCCCCCCF1
+        F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFCCCCCCDDDDDDF1F1F1
+        F1F1F1800000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFFF1F1F18000
+        00800000800000F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDD
+        999999DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1CCCCCCB2B2B2DDDDDDFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFF800000800000800000FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000800000800000800000FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0
+        C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCC0C0C0CC
+        CCCCFFFFFFF1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFF1F1F1FFFFFFFFFFFF800000800000800000DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F18000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000FFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000800000800000800000F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1B2B2B20000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCC999999B2B2B2
+        F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDD
+        DDC0C0C0C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDD8000008000008000
+        00DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000800000800000800000800000800000800000800000800000FFFFFFF1F1F1
+        F1F1F1FFFFFFFFFFFF8000008000008000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000800000800000F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C00000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1B2B2B2CCCC
+        CCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0B2
+        B2B2CCCCCCDDDDDDFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDD80000080
+        0000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDD800000800000800000800000800000800000800000FFFFFFF1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDD
+        F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1
+        F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDC0C0C0DDDDDDC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1
+        F1F1C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCC
+        CCCCCCCCCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDD
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC
+        DDDDDDC0C0C0CCCCCCDDDDDDC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1
+        F1DDDDDDCCCCCCDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDCCCCCCC0C0C0DDDDDDCCCCCCC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCC0C0C0DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2CCCC
+        CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1DDDD
+        DDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCDD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDCCCCCCB2B2B2C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CC
+        CCCCCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCDDDDDDF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000}
+      Stretch = True
+      IsControl = True
+    end
+    object lblProductName: TLabel
+      Left = 5
+      Top = 80
+      Width = 68
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Product Name'
+      IsControl = True
+    end
+    object lblVersion: TLabel
+      Left = 8
+      Top = 160
+      Width = 74
+      Height = 13
+      Caption = 'Version: 1.1.1.1'
+      IsControl = True
+    end
+    object lblGovStatement: TLabel
+      Left = 5
+      Top = 96
+      Width = 231
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Developed by the Department of Veterans Affairs'
+      IsControl = True
+    end
+    object lblCRC: TLabel
+      Left = 232
+      Top = 160
+      Width = 92
+      Height = 13
+      Caption = 'CRC: DDDDDDDD'
+    end
+    object lblDate: TLabel
+      Left = 97
+      Top = 160
+      Width = 82
+      Height = 13
+      Alignment = taCenter
+      Caption = 'January 30, 2000'
+    end
+    object ProgramIcon: TImage
+      Left = 176
+      Top = 8
+      Width = 145
+      Height = 73
+    end
+    object Memo1: TMemo
+      Left = 8
+      Top = 112
+      Width = 321
+      Height = 49
+      BorderStyle = bsNone
+      Lines.Strings = (
+        'Unauthorized access or use of this system and/or its data is a '
+        
+          'federal crime.  Use of all data must be in accordance with VA po' +
+          'licy '
+        'on security and privacy.')
+      ParentColor = True
+      TabOrder = 0
+    end
+  end
+  object OKButton: TButton
+    Left = 139
+    Top = 204
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/frmVistAAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/frmVistAAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/BrokerEx/frmVistAAbout.pas	(revision 1676)
@@ -0,0 +1,267 @@
+unit frmVistAAbout;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls, jpeg, jconsts, Dialogs;
+
+TYPE
+  TInteger8 = Int64;
+
+type
+  TfrmVistAAbout = class(TForm)
+    Panel1: TPanel;
+    VistaLogo: TImage;
+    lblProductName: TLabel;
+    lblVersion: TLabel;
+    lblGovStatement: TLabel;
+    OKButton: TButton;
+    lblCRC: TLabel;
+    Memo1: TMemo;
+    lblDate: TLabel;
+    ProgramIcon: TImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  procedure getfileinfo(var Version: String; var ProductName: String); virtual;
+  end;
+
+procedure ShowAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+  CONST
+    table:  ARRAY[0..255] OF DWORD =
+   ($00000000, $77073096, $EE0E612C, $990951BA,
+    $076DC419, $706AF48F, $E963A535, $9E6495A3,
+    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
+    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
+    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
+    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,
+    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
+    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116,
+    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,
+    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+
+    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,
+    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,
+    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,
+    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
+    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
+    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
+    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086,
+    $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
+    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+
+    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
+    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,
+    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
+    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
+    $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
+    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
+    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
+    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,
+    $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
+    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+
+    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,
+    $9C0906A9, $EB0E363F, $72076785, $05005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
+    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
+    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
+    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
+    $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
+    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
+    $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
+    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+  // Use CalcCRC32 as a procedure so CRCValue can be passed in but
+  // also returned.  This allows multiple calls to CalcCRC32 for
+  // the "same" CRC-32 calculation.
+  PROCEDURE CalcCRC32 (p:  pointer; ByteCount:  DWORD; VAR CRCValue:  DWORD);
+    // The following is a little cryptic (but executes very quickly).
+    // The algorithm is as follows:
+    //  1.  exclusive-or the input byte with the low-order byte of
+    //      the CRC register to get an INDEX
+    //  2.  shift the CRC register eight bits to the right
+    //  3.  exclusive-or the CRC register with the contents of
+    //      Table[INDEX]
+    //  4.  repeat steps 1 through 3 for all bytes
+
+   VAR
+    i:  DWORD;
+    q:  ^BYTE;
+  BEGIN
+    q := p;
+    FOR   i := 0 TO ByteCount-1 DO BEGIN
+      CRCvalue := (CRCvalue SHR 8)  XOR
+                  Table[ q^ XOR (CRCvalue AND $000000FF) ];
+      INC(q)
+    END
+  END {CalcCRC32};
+
+
+  // The CRC-32 value calculated here matches the one from the PKZIP program.
+  // Use MemoryStream to read file in binary mode.
+  PROCEDURE CalcFileCRC32 (FromName:  STRING; VAR CRCvalue:  DWORD;
+            VAR TotalBytes:  TInteger8;
+            VAR error:  WORD);
+    VAR
+      Stream:  TMemoryStream;
+  BEGIN
+    error := 0;
+    CRCValue := $FFFFFFFF;
+    Stream := TMemoryStream.Create;
+    TRY
+      TRY
+        Stream.LoadFromFile(FromName);
+        IF   Stream.Size > 0
+        THEN CalcCRC32 (Stream.Memory, Stream.Size, CRCvalue)
+      EXCEPT
+        ON E: EReadError DO
+         error := 1
+      END;
+
+      CRCvalue := NOT CRCvalue;
+      TotalBytes := Stream.Size
+    FINALLY
+      Stream.Free
+    END;
+  END {CalcFileCRC32};
+
+procedure TfrmVistAAbout.FormCreate(Sender: TObject);
+var
+  CRC32: DWord;
+  TotalBytes: Int64;
+  Error: Word;
+  Text: String;
+  Version: String;
+  ProductName: String;
+begin
+  CalcFileCRC32(Application.ExeName, CRC32, TotalBytes, Error);
+  lblCRC.Caption := 'CRC: ' + IntToHex(CRC32,8);
+  Text := Application.ExeName;
+  while pos('\',Text) > 0 do
+  begin
+    Text := copy(Text,pos('\',Text)+1,Length(Text));
+  end;    // while
+  Text := copy(Text,1,Length(Text)-4);
+  Caption := 'About ' + Text;
+  getfileinfo(Version, ProductName);
+  lblProductName.Caption := ProductName;
+  lblVersion.Caption := 'Version: ' + Version;
+  lblProductName.Width := Panel1.Width-10;
+  lblGovStatement.Width := Panel1.Width-10;
+  if ProgramIcon.Picture.Graphic = nil then
+  begin
+    VistALogo.Left := (Panel1.Width - VistALogo.Width) div 2;
+  end;
+end;
+
+procedure TfrmVistAAbout.GetFileInfo(var Version: String; var ProductName: String);
+var
+  VerInfoSize: DWORD;         // holds the size of the version info resource
+  GetInfoSizeJunk: DWORD;     // a junk variable, its value is ignored
+  VersionInfo: Pointer;       // points to the version info resource
+  Translation: Pointer;       // holds version info translation table
+  InfoPointer: Pointer;       // a pointer to version information
+
+  VersionInfoSize: UINT;      // holds the size of version information
+  VersionValue: string;       // holds the version info request string
+  SearchRec: TSearchRec;
+  DateTimeVal: TDateTime;
+  WriteTime: Integer;
+begin
+  {retrieve the size of the version information resource, if one exists}
+  VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName),
+                                        GetInfoSizeJunk);
+
+  {if there was a version information resource available...}
+
+  if VerInfoSize>0 then
+  begin
+    {retrieve enough memory to hold the version resource}
+    GetMem(VersionInfo, VerInfoSize);
+
+    {retrieve the version resource for the selected file}
+    GetFileVersionInfo(PChar(Application.ExeName), 0,
+                       VerInfoSize, VersionInfo);
+
+    {retrieve a pointer to the translation table}
+    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation',
+                  Translation, VersionInfoSize);
+
+    {initialize the version value request string}
+    VersionValue :='\\StringFileInfo\\'+
+                  IntToHex(LoWord(LongInt(Translation^)),4)+
+                  IntToHex(HiWord(LongInt(Translation^)),4)+
+                  '\\';
+
+    {retrieve and display the file version}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'FileVersion'), InfoPointer,
+                  VersionInfoSize);
+    Version := string(PChar(InfoPointer));
+
+    {retrieve and display the product name}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'ProductName'), InfoPointer,
+                  VersionInfoSize);
+    ProductName := string(PChar(InfoPointer));
+
+    {free the version resource memory}
+    FreeMem(VersionInfo, VerInfoSize);
+  end
+  else
+  begin
+  Version := 'Not in File';
+  ProductName := 'Not Identified In File';
+  end;
+  if findfirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
+  begin
+    WriteTime := SearchRec.Time;
+    DateTimeVal := FileDateToDateTime(WriteTime);
+    lblDate.Caption := FormatDateTime('mmmm dd, yyyy hh:nn',DateTimeVal);
+  end;
+end;
+
+procedure ShowAboutBox;
+begin
+  with TfrmVistAAbout.Create(Application) do
+    try
+      ShowModal;
+    finally
+      free;
+    end;
+end;
+
+end.
+ 
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/ReadMeForSamples.txt
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/ReadMeForSamples.txt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/ReadMeForSamples.txt	(revision 1676)
@@ -0,0 +1,9 @@
+The SilentSignOn(p13) directory under Samples contains four (4) sample programs that illustrate different aspects of patch XWB*1.1*13.  Source code is included for each of these programs.
+
+The program XWBAppHandle1 is used to illustrate the use of the StartProgSLogin method in the RpcSLogin unit.  This method is used to launch a second program (XWBAppHandle2) with a silent login using an AppHandle obtained from the server.  The AppHandle and information about the server, listener port, and Division are passed on the command line when XWBAppHandle2 is launched.  The StartProgSLogin method can also can be used to launch a non-RPCBroker related program and this can be demonstrated by entering the name of a program, and command line arguments if any, in an edit box prior to clicking the Start App2 button.  This will launch the specified program without including any broker related arguments on the command line.
+
+The program XWBAppHandle2 is used to illustrate the use of the GetCmdLine method in the RpcSLogin unit.  This method identifies command line arguments related to the RPCBroker (identified by p=, s=, h=, and d= for listener port, server, AppHandle, and Division, respectively).  If the arguments include an AppHandle, the connection to the server is attempted as well.  This application will display information about the user logged into the server.  If an attempt is made to start the application manually, a message box is displayed asking whether the user wants to login manually.  If the response is 'OK' the normal RPCBroker login screen is shown.  If the response is 'Cancel' the application terminates.
+
+The program XWBAVCodes is used to illustrate a silent login in which the Access and Verify codes are provided by the program, as opposed to being entered in the RPCBroker login screen.
+
+The program XWBOnFail is used to illustrate the different types of error handling which are available in patch XWB*1.1*13.  These include permitting the application to handle errors via a specified procedure call, to showing normal errors, to simply providing the error message for the application to examine while otherwise ignoring errors completely.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAVCodes.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAVCodes.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAVCodes.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;Speech;Indy50;vclPerfUtils5;SharedRPCBroker_R50;XWB_R50;TMSColList;osg5220;osdg5220;CPRSctrls_50;KeaBroker_R50;ZipMasterD5;ICSDEL50;TCynthesisAppUpdateD5;Fmdc_R50;CodeRush50;CR_FormPopupFix50;CR_Standard50;Aruser;XUtilsR50;XUDT_R50;XU_R50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=8
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Sample Silent Login with lmAVCodes
+FileVersion=1.1.31.8
+InternalName=a
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBAVCodes
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAVCodes.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAVCodes.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAVCodes.dpr	(revision 1676)
@@ -0,0 +1,15 @@
+program XWBAVCodes;
+
+uses
+  Forms,
+  fXWBAVCodes in 'fXWBAVCodes.pas' {Form1},
+  frmVistAAbout in 'frmVistAAbout.pas' {frmVistAAbout};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.Title := 'Test4Silent';
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle1.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle1.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle1.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=8
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept. of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Example program launching another program using the lmAppHandle silent login
+FileVersion=1.1.31.8
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBAppHandle1
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle1.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle1.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle1.dpr	(revision 1676)
@@ -0,0 +1,13 @@
+program XWBAppHandle1;
+
+uses
+  Forms,
+  fXWBAppHandle1 in 'fXWBAppHandle1.pas' {Form1};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle2.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle2.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle2.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=9
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept. of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Example program of starting an application using an AppHandle token
+FileVersion=1.1.31.9
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBAppHandle2
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle2.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle2.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBAppHandle2.dpr	(revision 1676)
@@ -0,0 +1,13 @@
+program XWBAppHandle2;
+
+uses
+  Forms,
+  fXWBAppHandle2 in 'fXWBAppHandle2.pas' {Form1};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBOnFail.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBOnFail.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBOnFail.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=7
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Example of available error handling mechanisms for RPCBroker
+FileVersion=1.1.31.7
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBOnFail
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBOnFail.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBOnFail.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/XWBOnFail.dpr	(revision 1676)
@@ -0,0 +1,13 @@
+program XWBOnFail;
+
+uses
+  Forms,
+  fXWBOnFail in 'fXWBOnFail.pas' {frmXWBOnFail};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TfrmXWBOnFail, frmXWBOnFail);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAVCodes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAVCodes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAVCodes.dfm	(revision 1676)
@@ -0,0 +1,231 @@
+object Form1: TForm1
+  Left = 190
+  Top = 138
+  Width = 662
+  Height = 393
+  Caption = 
+    'XWBAVCodes - UCX RPCBroker BackwardsCompatible - Silent Login wi' +
+    'th lmAVCodes (P40)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAccessCode: TLabel
+    Left = 24
+    Top = 71
+    Width = 79
+    Height = 13
+    Caption = 'Access Code:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblVerifyCode: TLabel
+    Left = 24
+    Top = 96
+    Width = 70
+    Height = 13
+    Caption = 'Verify Code:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblDUZ: TLabel
+    Left = 48
+    Top = 176
+    Width = 26
+    Height = 13
+    Caption = 'DUZ:'
+  end
+  object lblName: TLabel
+    Left = 48
+    Top = 216
+    Width = 31
+    Height = 13
+    Caption = 'Name:'
+  end
+  object lblDTime: TLabel
+    Left = 48
+    Top = 256
+    Width = 34
+    Height = 13
+    Caption = 'DTime:'
+  end
+  object lblUserName: TLabel
+    Left = 48
+    Top = 288
+    Width = 56
+    Height = 13
+    Caption = 'User Name:'
+  end
+  object lblServer: TLabel
+    Left = 24
+    Top = 21
+    Width = 42
+    Height = 13
+    Caption = 'Server:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblListenerPort: TLabel
+    Left = 24
+    Top = 46
+    Width = 73
+    Height = 13
+    Caption = 'ListenerPort:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object edtDUZ: TEdit
+    Left = 112
+    Top = 168
+    Width = 233
+    Height = 21
+    TabOrder = 3
+  end
+  object edtName: TEdit
+    Left = 112
+    Top = 208
+    Width = 233
+    Height = 21
+    TabOrder = 2
+  end
+  object edtDTime: TEdit
+    Left = 112
+    Top = 248
+    Width = 233
+    Height = 21
+    TabOrder = 1
+  end
+  object edtUserName: TEdit
+    Left = 112
+    Top = 280
+    Width = 233
+    Height = 21
+    TabOrder = 0
+  end
+  object btnConnect: TButton
+    Left = 175
+    Top = 128
+    Width = 75
+    Height = 25
+    Caption = 'Connect'
+    Default = True
+    TabOrder = 8
+    OnClick = btnConnectClick
+  end
+  object edtAccessCode: TEdit
+    Left = 112
+    Top = 66
+    Width = 249
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 6
+  end
+  object edtVerifyCode: TEdit
+    Left = 112
+    Top = 91
+    Width = 249
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 7
+  end
+  object btnExit: TButton
+    Left = 174
+    Top = 312
+    Width = 75
+    Height = 25
+    Caption = 'Exit'
+    TabOrder = 9
+    OnClick = btnExitClick
+  end
+  object edtServer: TEdit
+    Left = 112
+    Top = 16
+    Width = 249
+    Height = 21
+    TabOrder = 4
+  end
+  object edtListenerPort: TEdit
+    Left = 112
+    Top = 41
+    Width = 105
+    Height = 21
+    TabOrder = 5
+  end
+  object Memo1: TMemo
+    Left = 384
+    Top = 16
+    Width = 241
+    Height = 233
+    Lines.Strings = (
+      'This application provides an '
+      'example of a silent login.  The '
+      'server, Listener Port, Access '
+      'Code, and Verify Code need to '
+      'be filled in - these data would '
+      'be supplied in some manner for '
+      'a silent login (Division can also '
+      'be supplied for a multidivision '
+      'individual).  After fillng in the '
+      'information enter Return or '
+      'click on the Connect button.  '
+      'The connection should be '
+      'made without the broker login '
+      'form appearing.  User '
+      'information will be filled in for '
+      'the logged in user.')
+    TabOrder = 10
+  end
+  object brkrRPCB: TRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9200
+    RpcVersion = '0'
+    Server = 'DHCPSERVER'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    Left = 16
+    Top = 312
+  end
+  object MainMenu1: TMainMenu
+    Left = 24
+    Top = 144
+    object mnuFile: TMenuItem
+      Caption = '&File'
+      object mnuFileExit: TMenuItem
+        Caption = 'E&xit'
+        OnClick = mnuFileExitClick
+      end
+    end
+    object mnuHelp: TMenuItem
+      Caption = '&Help'
+      object mnuHelpAbout: TMenuItem
+        Caption = '&About'
+        OnClick = mnuHelpAboutClick
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAVCodes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAVCodes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAVCodes.pas	(revision 1676)
@@ -0,0 +1,129 @@
+unit fXWBAVCodes;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Trpcb, RpcSLogin, Menus, frmVistAAbout;
+
+type
+  TForm1 = class(TForm)
+    edtDUZ: TEdit;
+    edtName: TEdit;
+    edtDTime: TEdit;
+    edtUserName: TEdit;
+    btnConnect: TButton;
+    edtAccessCode: TEdit;
+    edtVerifyCode: TEdit;
+    lblAccessCode: TLabel;
+    lblVerifyCode: TLabel;
+    btnExit: TButton;
+    lblDUZ: TLabel;
+    lblName: TLabel;
+    lblDTime: TLabel;
+    lblUserName: TLabel;
+    edtServer: TEdit;
+    edtListenerPort: TEdit;
+    lblServer: TLabel;
+    lblListenerPort: TLabel;
+    Memo1: TMemo;
+    MainMenu1: TMainMenu;
+    mnuFile: TMenuItem;
+    mnuFileExit: TMenuItem;
+    mnuHelp: TMenuItem;
+    mnuHelpAbout: TMenuItem;
+    brkrRPCB: TRPCBroker;
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure mnuFileExitClick(Sender: TObject);
+    procedure mnuHelpAboutClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+  Login: TVistaLogin;
+
+implementation
+
+{$R *.DFM}
+
+procedure TForm1.btnConnectClick(Sender: TObject);
+var
+  NChars: Cardinal;
+  NameBuffer: PChar;
+begin
+  if btnConnect.Caption = 'Connect' then
+  begin
+    { check data there for silent login }
+    if (edtAccessCode.Text = '') or
+       (edtVerifyCode.Text = '') or
+       (edtServer.Text = '') or
+       (edtListenerPort.Text = '') then
+         ShowMessage('The four Bold edit boxes must be filled in before the connection can be made.')
+    else
+    begin
+      { set up for silent login }
+      with BrkrRPCB do
+      begin
+        Login.AccessCode := edtAccessCode.Text;
+        Login.VerifyCode := edtVerifyCode.Text;
+        Server := edtServer.Text;
+        ListenerPort := StrToInt(edtListenerPort.Text);
+        KernelLogin := False;
+        Login.Mode := lmAVCodes;
+        Login.PromptDivision := True;
+        Connected := True;
+
+        if Connected = True then
+        begin
+          GetUserInfo(brkrRPCB);
+          edtDUZ.Text := User.DUZ;
+          edtName.Text := User.Name;
+          edtDTime.Text := User.DTime;
+
+          { Get local username as well }
+          NChars := 0;
+          GetUserName(nil,NChars);
+          NameBuffer := StrAlloc(NChars);
+          if GetUserName(NameBuffer, NChars) then
+            edtUserName.Text := StrPas(NameBuffer)
+          else
+            edtUserName.Text := 'Can''t get name';
+          btnConnect.Caption := 'Disconnect';
+          btnExit.Default := True;
+          btnConnect.Default := False;
+        end;  // if Connected = True
+      end;  // with brkrRPCB do
+    end;  // else
+  end  // if btnConnect.Caption
+  else
+  begin
+    brkrRPCB.Connected := False;
+    btnConnect.Caption := 'Connect';
+  end;
+  edtAccessCode.Text := '';
+  edtVerifyCode.Text := '';
+  Application.ProcessMessages;
+end;
+
+procedure TForm1.btnExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.mnuFileExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.mnuHelpAboutClick(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle1.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle1.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle1.dfm	(revision 1676)
@@ -0,0 +1,169 @@
+object Form1: TForm1
+  Left = 230
+  Top = 122
+  Width = 736
+  Height = 319
+  Caption = 
+    'XWBAppHandle1 - UCX RPCBroker (see Options) use of lmAppHandle t' +
+    'o start a second application (p40)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = mnuMainMenu
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblOtherProgram: TLabel
+    Left = 44
+    Top = 176
+    Width = 71
+    Height = 13
+    Caption = 'Other Program:'
+  end
+  object lblOptional: TLabel
+    Left = 52
+    Top = 192
+    Width = 45
+    Height = 13
+    Caption = '(Optional)'
+  end
+  object lblWithFull: TLabel
+    Left = 124
+    Top = 200
+    Width = 232
+    Height = 13
+    Caption = 'With Full Directory Path if not on the System Path'
+  end
+  object btnConnect: TButton
+    Left = 201
+    Top = 232
+    Width = 75
+    Height = 25
+    Caption = '&Connect'
+    TabOrder = 0
+    OnClick = btnConnectClick
+  end
+  object btnStartApp2: TButton
+    Left = 326
+    Top = 232
+    Width = 75
+    Height = 25
+    Caption = 'Start App2'
+    TabOrder = 1
+    OnClick = btnStartApp2Click
+  end
+  object edtOtherProgram: TEdit
+    Left = 124
+    Top = 168
+    Width = 269
+    Height = 21
+    TabOrder = 2
+  end
+  object Memo1: TMemo
+    Left = 31
+    Top = 8
+    Width = 666
+    Height = 153
+    Lines.Strings = (
+      
+        'This application can be used to start other programs, including ' +
+        'ones that use the '
+      
+        'RPCBroker for connection to a server using a server generated to' +
+        'ken.'
+      ''
+      
+        'To connect with the server, simply press the connect button to s' +
+        'elect a server/listener port '
+      
+        'combination, then sign in.  After you are signed in, you can sta' +
+        'rt another Broker application '
+      
+        '(XWBAppHandle2) by simply clicking on the "Start App2" button (w' +
+        'ith the Other Program '
+      'edit box empty of text).'
+      ''
+      
+        'A program such as Notepad with or without command line arguments' +
+        ', can be started at '
+      
+        'any time by entering the name (and arguments if any) in the Othe' +
+        'r Program edit box, then '
+      'clicking on the Start App2 button.'
+      '')
+    TabOrder = 3
+  end
+  object btnExit: TButton
+    Left = 451
+    Top = 232
+    Width = 75
+    Height = 25
+    Caption = 'Exit'
+    TabOrder = 4
+    OnClick = btnExitClick
+  end
+  object brkrRPCB: TRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9500
+    RpcVersion = '0'
+    Server = 'NXT-Server'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    OldConnectionOnly = False
+    Left = 16
+    Top = 224
+  end
+  object mnuMainMenu: TMainMenu
+    Left = 8
+    Top = 184
+    object mnuFile: TMenuItem
+      Caption = '&File'
+      object mnuFileExit: TMenuItem
+        Caption = '&E&xit'
+        OnClick = mnuFileExitClick
+      end
+    end
+    object mnuOptions: TMenuItem
+      Caption = 'Options'
+      object OnlyOldConnection1: TMenuItem
+        Caption = 'OnlyOldConnection'
+      end
+      object BackwardsCompatible1: TMenuItem
+        Action = actBackwardsCompatible
+      end
+      object DebugMode1: TMenuItem
+        Action = actDebugMode
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object mnuAbout: TMenuItem
+        Caption = '&About'
+        OnClick = mnuAboutClick
+      end
+    end
+  end
+  object ActionList1: TActionList
+    Left = 64
+    Top = 224
+    object actOldConnectionOnly: TAction
+      Caption = 'Old Connection Mode Only'
+      OnExecute = actOldConnectionOnlyExecute
+    end
+    object actBackwardsCompatible: TAction
+      Caption = 'Backwards Compatible'
+      Checked = True
+      OnExecute = actBackwardsCompatibleExecute
+    end
+    object actDebugMode: TAction
+      Caption = 'Debug Mode'
+      OnExecute = actDebugModeExecute
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle1.pas	(revision 1676)
@@ -0,0 +1,155 @@
+unit fXWBAppHandle1;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, RpcSlogin, Trpcb, RpcConf1, frmVistAAbout, Menus, ActnList;
+
+type
+  TForm1 = class(TForm)
+    brkrRPCB: TRPCBroker;
+    btnConnect: TButton;
+    btnStartApp2: TButton;
+    edtOtherProgram: TEdit;
+    lblOtherProgram: TLabel;
+    lblOptional: TLabel;
+    lblWithFull: TLabel;
+    Memo1: TMemo;
+    btnExit: TButton;
+    mnuMainMenu: TMainMenu;
+    mnuFile: TMenuItem;
+    mnuFileExit: TMenuItem;
+    Help1: TMenuItem;
+    mnuAbout: TMenuItem;
+    mnuOptions: TMenuItem;
+    OnlyOldConnection1: TMenuItem;
+    ActionList1: TActionList;
+    actOldConnectionOnly: TAction;
+    actBackwardsCompatible: TAction;
+    actDebugMode: TAction;
+    BackwardsCompatible1: TMenuItem;
+    DebugMode1: TMenuItem;
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnStartApp2Click(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure mnuFileExitClick(Sender: TObject);
+    procedure mnuAboutClick(Sender: TObject);
+    procedure actOldConnectionOnlyExecute(Sender: TObject);
+    procedure actBackwardsCompatibleExecute(Sender: TObject);
+    procedure actDebugModeExecute(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+
+implementation
+
+{$R *.DFM}
+
+
+procedure TForm1.btnConnectClick(Sender: TObject);
+var
+  Server, Port: String;
+begin
+  if btnConnect.Caption = '&Connect' then
+  begin
+    GetServerInfo(Server, Port);
+    brkrRPCB.Server := Server;
+    brkrRPCB.ListenerPort := StrToInt(Port);
+    brkrRPCB.Connected := True;
+    if brkrRPCB.Connected then
+    begin
+      btnConnect.Caption := '&Disconnect';
+      mnuOptions.Enabled := False;
+    end;
+  end
+  else
+  begin
+    brkrRPCB.Connected := False;
+    btnConnect.Caption := '&Connect';
+    mnuOptions.Enabled := True;
+  end;
+end;
+
+procedure TForm1.btnStartApp2Click(Sender: TObject);
+var
+  CurDir: String;
+begin
+  if edtOtherProgram.Text <> '' then
+  begin
+    CurDir := edtOtherProgram.Text;
+    StartProgSLogin(CurDir,nil);
+  end
+  else
+  begin
+    { Use Test2.exe and expecting it to be in the startup directory for the current application}
+    CurDir := ExtractFilePath(ParamStr(0)) + 'XWBAppHandle2.exe';
+
+    { Now start application with silent login }
+    StartProgSLogin(CurDir, brkrRPCB);
+  end;
+end;
+
+procedure TForm1.btnExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.mnuFileExitClick(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TForm1.mnuAboutClick(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+procedure TForm1.actOldConnectionOnlyExecute(Sender: TObject);
+begin
+  if actOldConnectionOnly.Checked then
+  begin
+    actOldConnectionOnly.Checked := False;
+    brkrRPCB.OldConnectionOnly := False;
+  end
+  else
+  begin
+    actOldConnectionOnly.Checked := True;
+    brkrRPCB.OldConnectionOnly := True;
+  end;
+end;
+
+procedure TForm1.actBackwardsCompatibleExecute(Sender: TObject);
+begin
+  if actBackwardsCompatible.Checked then
+  begin
+    actBackwardsCompatible.Checked := False;
+    brkrRPCB.IsBackwardCompatibleConnection := False;
+  end
+  else
+  begin
+    brkrRPCB.IsBackwardCompatibleConnection := True;
+    actBackwardsCompatible.Checked := True;
+  end;
+end;
+
+procedure TForm1.actDebugModeExecute(Sender: TObject);
+begin
+  if actDebugMode.Checked then
+  begin
+    actDebugMode.Checked := False;
+    brkrRPCB.DebugMode := False;
+  end
+  else
+  begin
+    brkrRPCB.DebugMode := True;
+    actDebugMode.Checked := True;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle2.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle2.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle2.dfm	(revision 1676)
@@ -0,0 +1,164 @@
+object Form1: TForm1
+  Left = 201
+  Top = 168
+  Width = 635
+  Height = 334
+  Caption = 
+    'XWBAppHandle2 - UCX RPCBroker BackwardsCompatible - Started by l' +
+    'mAppHandle (P40)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblDUZ: TLabel
+    Left = 54
+    Top = 17
+    Width = 23
+    Height = 13
+    Caption = 'DUZ'
+  end
+  object lblName: TLabel
+    Left = 54
+    Top = 51
+    Width = 28
+    Height = 13
+    Caption = 'Name'
+  end
+  object lblDTime: TLabel
+    Left = 54
+    Top = 84
+    Width = 31
+    Height = 13
+    Caption = 'DTime'
+  end
+  object lblDivision: TLabel
+    Left = 54
+    Top = 118
+    Width = 37
+    Height = 13
+    Caption = 'Division'
+  end
+  object lblUserName: TLabel
+    Left = 54
+    Top = 152
+    Width = 50
+    Height = 13
+    Caption = 'UserName'
+  end
+  object Label1: TLabel
+    Left = 56
+    Top = 184
+    Width = 59
+    Height = 13
+    Caption = 'IsProduction'
+  end
+  object Label2: TLabel
+    Left = 56
+    Top = 216
+    Width = 64
+    Height = 13
+    Caption = 'DomainName'
+  end
+  object edtDuz: TEdit
+    Left = 126
+    Top = 8
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 0
+  end
+  object edtName: TEdit
+    Left = 126
+    Top = 42
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 2
+  end
+  object edtDTime: TEdit
+    Left = 126
+    Top = 76
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 3
+  end
+  object edtUserName: TEdit
+    Left = 126
+    Top = 143
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 4
+  end
+  object btnClose: TButton
+    Left = 188
+    Top = 248
+    Width = 75
+    Height = 25
+    Caption = 'Close'
+    Default = True
+    TabOrder = 1
+    OnClick = btnCloseClick
+  end
+  object edtDivision: TEdit
+    Left = 126
+    Top = 109
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 5
+  end
+  object edtIsProduction: TEdit
+    Left = 126
+    Top = 176
+    Width = 281
+    Height = 21
+    TabOrder = 6
+  end
+  object edtDomainName: TEdit
+    Left = 126
+    Top = 208
+    Width = 281
+    Height = 21
+    TabOrder = 7
+  end
+  object brkrRPCB: TRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9200
+    RpcVersion = '0'
+    Server = 'DHCPSERVER'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    Left = 8
+    Top = 160
+  end
+  object MainMenu1: TMainMenu
+    Left = 8
+    Top = 40
+    object File1: TMenuItem
+      Caption = '&File'
+      object Exit1: TMenuItem
+        Caption = 'E&xit'
+        OnClick = Exit1Click
+      end
+    end
+    object About1: TMenuItem
+      Caption = '&Help'
+      object About2: TMenuItem
+        Caption = '&About'
+        OnClick = About2Click
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle2.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle2.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBAppHandle2.pas	(revision 1676)
@@ -0,0 +1,110 @@
+unit fXWBAppHandle2;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Trpcb, RpcSLogin, RpcConf1, frmVistAAbout, Menus;
+
+type
+  TForm1 = class(TForm)
+    brkrRPCB: TRPCBroker;
+    edtDuz: TEdit;
+    edtName: TEdit;
+    edtDTime: TEdit;
+    edtUserName: TEdit;
+    btnClose: TButton;
+    edtDivision: TEdit;
+    lblDUZ: TLabel;
+    lblName: TLabel;
+    lblDTime: TLabel;
+    lblDivision: TLabel;
+    lblUserName: TLabel;
+    MainMenu1: TMainMenu;
+    File1: TMenuItem;
+    Exit1: TMenuItem;
+    About1: TMenuItem;
+    About2: TMenuItem;
+    Label1: TLabel;
+    edtIsProduction: TEdit;
+    Label2: TLabel;
+    edtDomainName: TEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCloseClick(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About2Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+  Login: TVistaLogin;
+
+implementation
+
+{$R *.DFM}
+
+
+
+procedure TForm1.FormCreate(Sender: TObject);
+var
+  NChars: Cardinal;
+  NameBuffer: PChar;
+  Server, Port: String;
+begin
+  { check for silent login data on command line }
+  if not CheckCmdLine(brkrRPCB) then
+  begin        // Couldn't log on via command line give choice
+    if Application.MessageBox('Can''t connect by command line arguments, do you want to connect anyway?','Silent Connection Error', MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
+    begin
+      GetServerInfo(Server, Port);
+      brkrRPCB.Server := Server;
+      brkrRPCB.ListenerPort := StrToInt(Port);
+      Caption := 'XWBAppHandle2 - Started by normal sign-on'
+    end
+    else
+      halt;
+  end;
+
+  { Get and display information on logged in user }
+  GetUserInfo(brkrRPCB);
+  edtDUZ.Text := brkrRPCB.User.DUZ;
+  edtName.Text := brkrRPCB.User.Name;
+  edtDTime.Text := brkrRPCB.User.DTime;
+  edtDivision.Text := brkrRPCB.User.Division;
+  if brkrRPCB.Login.IsProductionAccount then
+    edtIsProduction.Text := 'True'
+  else
+    edtIsProduction.Text := 'False';
+  edtDomainName.Text := brkrRPCB.LogIn.DomainName;
+
+  {also show local username }
+  NChars := 0;
+  GetUserName(nil,NChars);
+  NameBuffer := StrAlloc(NChars);
+  if GetUserName(NameBuffer, NChars) then
+    edtUserName.Text := NameBuffer
+  else
+    edtUserName.Text := 'Can''t get name';
+end;
+
+
+procedure TForm1.btnCloseClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.Exit1Click(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TForm1.About2Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBOnFail.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBOnFail.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBOnFail.dfm	(revision 1676)
@@ -0,0 +1,180 @@
+object frmXWBOnFail: TfrmXWBOnFail
+  Left = 207
+  Top = 127
+  Width = 557
+  Height = 343
+  Caption = 
+    'XWBOnFail - UCX RPCBroker Backwards Compatible - Error Handling ' +
+    'Demo (P40)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblLogin_ErrorText: TLabel
+    Left = 24
+    Top = 40
+    Width = 75
+    Height = 13
+    Caption = 'Login_ErrorText'
+  end
+  object btnConnect: TButton
+    Left = 213
+    Top = 256
+    Width = 75
+    Height = 25
+    Caption = 'Connect'
+    TabOrder = 0
+    OnClick = btnConnectClick
+  end
+  object rgrSelectAction: TRadioGroup
+    Left = 268
+    Top = 64
+    Width = 217
+    Height = 137
+    Caption = 'Select Action'
+    ItemIndex = 1
+    Items.Strings = (
+      'Use OnRPCBFailure property routine'
+      'Show Message Boxes'
+      'Capture Text Only')
+    TabOrder = 1
+  end
+  object btnExit: TButton
+    Left = 410
+    Top = 256
+    Width = 75
+    Height = 25
+    Caption = 'Exit'
+    TabOrder = 2
+    OnClick = btnExitClick
+  end
+  object Memo1: TMemo
+    Left = 16
+    Top = 64
+    Width = 217
+    Height = 169
+    Lines.Strings = (
+      'This is an example application to illustrate '
+      'the effects of TRPCBroker properties '
+      'related to Error Handling.'
+      ''
+      'The OnRPCBFailure property can be set '
+      'to a procedure to handle errors without '
+      'user interaction.  In the sample included '
+      'here, the error handler will save the error '
+      'message and a date/time stamp to a file '
+      'named "Error.Log" in the same directory '
+      'with the application program.  YOU WILL '
+      'NOT SEE AN ERROR MESSAGE IN '
+      'THIS CASE!'
+      ''
+      'If OnRPCBFailure property is not '
+      'assigned to a procedure, errors by default '
+      'would be shown in a message box '
+      'created by the TRPCBroker component.  '
+      'This behavior is controlled by the '
+      'ShowErrorMsgs property, with a default '
+      'of semShow (Show Message Boxes).  '
+      ''
+      'If the ShowErrorMsgs property is set to '
+      'semRaise (Don'#39't Show Message Boxes), '
+      'the error will be permitted to be handled '
+      'by a higher part of the application.  In '
+      'most cases this will produce an error '
+      'dialog box generated by the system in '
+      'general.'
+      ''
+      'If the ShowErrorMsgs property is set to '
+      'semSet (Capture Text Only), there will be '
+      'no error action taken except for the '
+      'setting of error messages into the '
+      'RPCBError and/or Login.ErrorText '
+      'properties.  In this case, the application '
+      'MUST check these properties '
+      'immediately after a call to the RPCBroker '
+      'to determine whether any errors were '
+      'encountered and to determine the action '
+      'to be taken.'
+      ''
+      'Select the type of behavior desired by '
+      'clicking on one of the options to the right.'
+      ''
+      'Then press Connect and either cancel '
+      'during the log-in dialog or generate an '
+      'error in some other manner.  If you are '
+      'connected, the button will change to '
+      'Disconnect and you can click on it to '
+      'disconnect from the server.'
+      ''
+      'Checking the check box "Use Silent Bad '
+      'Access/Verify" to the left will set the '
+      'AccessVerifyCodes property to '
+      #39'monkeysee;monkeydo'#39' which will cause '
+      'a silent login attempt and fails.'
+      '')
+    ScrollBars = ssVertical
+    TabOrder = 3
+  end
+  object edtErrorText: TEdit
+    Left = 8
+    Top = 8
+    Width = 473
+    Height = 21
+    TabOrder = 4
+    Text = 'RPCBroker_RPCBError property'
+  end
+  object edtLoginError: TEdit
+    Left = 104
+    Top = 32
+    Width = 225
+    Height = 21
+    TabOrder = 5
+    Text = 'RPCBroker_Login_ErrorText Property'
+  end
+  object cbxBadAccess: TCheckBox
+    Left = 16
+    Top = 256
+    Width = 169
+    Height = 17
+    Caption = 'Use Silent Bad Access/Verify'
+    TabOrder = 6
+  end
+  object RPCB: TRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9500
+    RpcVersion = '0'
+    Server = 'NXT-Server'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    Left = 408
+    Top = 32
+  end
+  object MainMenu1: TMainMenu
+    Left = 368
+    Top = 32
+    object File1: TMenuItem
+      Caption = '&File'
+      object Exit1: TMenuItem
+        Caption = 'E&xit'
+        OnClick = Exit1Click
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object About1: TMenuItem
+        Caption = '&About'
+        OnClick = About1Click
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBOnFail.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBOnFail.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/fXWBOnFail.pas	(revision 1676)
@@ -0,0 +1,120 @@
+unit fXWBOnFail;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Trpcb, Rpcconf1, ExtCtrls, frmVistAAbout, Menus;
+
+type
+  TfrmXWBOnFail = class(TForm)
+    btnConnect: TButton;
+    RPCB: TRPCBroker;
+    rgrSelectAction: TRadioGroup;
+    btnExit: TButton;
+    Memo1: TMemo;
+    edtErrorText: TEdit;
+    edtLoginError: TEdit;
+    lblLogin_ErrorText: TLabel;
+    cbxBadAccess: TCheckBox;
+    MainMenu1: TMainMenu;
+    File1: TMenuItem;
+    Exit1: TMenuItem;
+    Help1: TMenuItem;
+    About1: TMenuItem;
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About1Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure MyErrorHandler(RPCBroker: TRPCBroker);
+  end;
+
+var
+  frmXWBOnFail: TfrmXWBOnFail;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmXWBOnFail.MyErrorHandler(RPCBroker: TRPCBroker);
+var
+  ErrorText: String;
+  Path: String;
+  StrLoc: TStringList;
+  NowVal: TDateTime;
+begin
+  NowVal := Now;
+  ErrorText := RPCB.RPCBError;
+  StrLoc := TStringList.Create;
+  Path := ExtractFilePath(Application.ExeName);
+  Path := Path + 'Error.Log';
+  if FileExists(Path) then
+    StrLoc.LoadFromFile(Path);
+  StrLoc.Add(FormatDateTime('mm/dd/yyyy hh:mm:ss  ',NowVal) + ErrorText);
+  StrLoc.SaveToFile(Path);
+end;
+
+procedure TfrmXWBOnFail.btnConnectClick(Sender: TObject);
+begin
+  if btnConnect.Caption = 'Connect' then
+  begin
+    edtErrorText.Text := '';   // Clear out old values
+    edtLoginError.Text := '';
+    RPCB.AccessVerifyCodes := '';
+    RPCB.KernelLogIn := True;
+    if cbxBadAccess.Checked then
+      RPCB.AccessVerifyCodes := 'monkeysee;monkeydo';
+    RPCB.OnRPCBFailure := nil;
+    RPCB.ShowErrorMsgs := semRaise;
+    case rgrSelectAction.ItemIndex of    //
+      0: RPCB.OnRPCBFailure := MyErrorHandler;
+      1: RPCB.ShowErrorMsgs := semRaise;
+      2: RPCB.ShowErrorMsgs := semQuiet;
+    end;    // case
+    try
+      RPCB.Connected := True;
+      if RPCB.Connected then
+        btnConnect.Caption := 'Disconnect';
+    finally
+      edtErrorText.Text := RPCB.RPCBError;
+      edtLoginError.Text := RPCB.LogIn.ErrorText;
+    end;
+  end
+  else
+  begin
+    RPCB.Connected := False;
+    btnConnect.Caption := 'Connect';
+  end;
+end;
+
+procedure TfrmXWBOnFail.btnExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TfrmXWBOnFail.FormCreate(Sender: TObject);
+var
+  Server: String;
+  Port: String;
+begin
+  GetServerInfo(Server, Port);
+  RPCB.Server := Server;
+  RPCB.ListenerPort := StrToInt(Port);
+end;
+
+procedure TfrmXWBOnFail.Exit1Click(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TfrmXWBOnFail.About1Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/frmVistAAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/frmVistAAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/frmVistAAbout.dfm	(revision 1676)
@@ -0,0 +1,1201 @@
+object frmVistAAbout: TfrmVistAAbout
+  Left = 279
+  Top = 106
+  BorderStyle = bsDialog
+  Caption = 'About'
+  ClientHeight = 236
+  ClientWidth = 353
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 185
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object VistaLogo: TImage
+      Left = 8
+      Top = 8
+      Width = 153
+      Height = 73
+      Center = True
+      Picture.Data = {
+        07544269746D61702A880000424D2A8800000000000036000000280000009600
+        00004D0000000100180000000000F48700000000000000000000000000000000
+        0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDFFFFFFDDDDDDCCCCCCB2B2B2CC
+        CCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0DDDDDDF1F1F1F1F1F1DDDDDDCCCC
+        CCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFC0C0C0DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDF1F1
+        F1FFFFFFF1F1F1DDDDDD999999CCCCCCF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1DDDDDDCCCCCCB2B2B2
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1F1DDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1CCCCCCB2B2B2CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1FFFFFFFFFFFFDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCCFFFFFFDDDDDDB2B2B2C0C0
+        C0FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFF1F1
+        F1F1F1F1CCCCCCFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFB2B2B2C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1DDDDDDFFFFFFC0C0C0FFFFFFF1F1F1CCCCCCF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCCCCCCCCCCCCCC
+        CCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDCCCCCCDDDDDDDDDD
+        DDCCCCCCF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDCCCCCCC0C0C0C0C0C0CCCCCCC0C0C0CCCCCCB2B2B2F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCCCCCCCCCCCCCDDDDDDC0C0
+        C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDD
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1
+        FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFC0C0C0CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDD0000FFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCC0C0C0C0C0
+        C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDD0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD
+        C0C0C0C0C0C0C0C0C0B2B2B20000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0
+        C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0CCCCCCCCCCCCDDDDDDDDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCC
+        CCC0C0C0DDDDDDF1F1F1F1F1F10000FF0000FF0000FF0000FFFFFFFFF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFC0C0C0C0C0C0CC
+        CCCCF1F1F1DDDDDDDDDDDDCCCCCCCCCCCCCCCCCCB2B2B2F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        DDDDDDDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1
+        F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFCCCCCC
+        DDDDDDF1F1F1FFFFFFDDDDDDCCCCCCB2B2B2DDDDDDB2B2B2C0C0C0F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1DDDDDDF1F1
+        F1F1F1F1B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFF1F1F1DD
+        DDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1
+        F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1CCCCCCB2B2B2DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFF
+        FFFFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFF1F1F1C0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFDDDDDD
+        CCCCCCC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1B2B2B2C0C0C0CCCCCCDDDDDDFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFF
+        FFFFFFFFFFFFFFDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0
+        C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFDDDD
+        DD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCCCCCCCDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDFFFFFFF1F1F1DD
+        DDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF999999C0C0C0FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDCCCCCCFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2DDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFDDDDDDC0C0C0C0C0C0CCCCCCDDDDDDC0C0C0F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1FFFFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFCCCCCCCCCCCCFFFFFFDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2F1F1F1
+        FFFFFFDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFC0C0C0B2B2B2CCCCCCF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDD
+        DDFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCB2B2B2C0C0C0CCCCCCF1F1F1FF
+        FFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0FFFFFFDDDDDDF1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDD
+        DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCC0C0C0FFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1CCCCCCB2B2B2CCCCCCC0C0C0CCCCCCF1F1F1F1F1F1F1F1F1DDDD
+        DDFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0DDDDDDFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCDDDDDDF1F1F1F1F1F1CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0C0C0FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFCCCCCCC0C0C0B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2C0C0C0CCCCCCCCCCCCDDDDDDC0C0C0C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1
+        F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1B2B2B2C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0
+        C0C0F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        B2B2B2CCCCCCFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD999999C0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0CCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1CCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDCCCC
+        CCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCCCCCCCDDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFF1F1F1DD
+        DDDDCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDCCCCCCB2B2B2F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDC0
+        C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDDDDDDDDDDDDC0C0C0DDDDDD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCCCCCCCDDDDDDDDDDDDC0C0C0B2B2B2CCCCCCF1F1F1FFFFFF
+        F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDB2B2B2CCCCCCFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1CCCCCCC0C0C00000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0
+        999999DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1FFFFFFF1
+        F1F1DDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCFFFFFFF1F1F1DDDDDDC0C0C0B2B2B2DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1
+        CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFCCCCCCCCCCCCDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDD
+        DDC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDD
+        DDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCCCCCC
+        CCCCCCCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDD
+        DDCCCCCCF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDCCCCCCC0C0C0C0C0C0DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0CCCCCCF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DD
+        DDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD999999B2B2B2DD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0DDDDDDFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1DDDDDDF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCDDDDDDCCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1
+        F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCC0
+        C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1DDDDDDF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFCCCCCCCCCCCCCCCCCCFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDF1F1F1FFFFFF
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDF1F1
+        F1F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1
+        F1F1F1F1F1FFFFFFDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDC0C0C0CCCCCCB2B2B2F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCC0C0C0DD
+        DDDDDDDDDDCCCCCCCCCCCC999999DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDD
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFF
+        FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DD
+        DDDDC0C0C0C0C0C0B2B2B2F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDC0C0C0
+        DDDDDDF1F1F1CCCCCCCCCCCCC0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1CCCCCCDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCCCCCC
+        CCDDDDDDF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0CCCCCCDDDDDDCCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFC0C0C0F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDDDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1CCCCCCC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF8000008000
+        00800000800000800000800000800000800000800000FFFFFFC0C0C0DDDDDDCC
+        CCCCDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1800000
+        800000800000DDDDDDCCCCCCC0C0C0C0C0C0DDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDD
+        DDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFF
+        FFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF8000008000008000
+        00800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000800000800000800000800000800000800000DDDDDD
+        F1F1F1DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1800000800000800000C0C0C0C0C0C0DDDDDDF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFF800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1800000800000800000800000CCCCCCFFFFFFFFFFFFF1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1FFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1DDDDDD800000800000800000800000FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFCCCCCCDDDDDDCCCCCCDDDDDDC0C0C0DDDDDDFFFFFFFFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCB2B2B2C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDD
+        DDDDDDDDF1F1F1F1F1F1F1F1F1800000800000800000DDDDDDF1F1F1DDDDDDF1
+        F1F1F1F1F1800000800000800000800000F1F1F1DDDDDDDDDDDDDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1800000800000800000F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDD999999B2B2B2F1F1F1DDDDDDDDDDDD800000800000800000FF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCC
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0CCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F1800000800000800000DDDDDD
+        DDDDDDF1F1F1DDDDDD800000800000800000800000F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000F1F1F1C0C0C0B2B2B2DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1800000800000
+        800000800000F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCC999999CCCCCCF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F18000008000
+        00800000C0C0C0CCCCCCC0C0C0C0C0C0800000800000800000F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        800000800000800000CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDD
+        DD800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFF800000800000800000
+        DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFF
+        FFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0
+        C0C0C0C0C0C0C0C0CCCCCC800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFFFF
+        FFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0CCCCCC0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFF800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD800000800000800000DDDDDDC0C0C0F1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFF1F1F1DDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0DD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDD
+        DDDDDDF1F1F1CCCCCCCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCB2B2B2CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFF
+        F1F1F1FFFFFFFFFFFF800000800000800000800000800000800000F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF800000800000800000C0
+        C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD800000800000800000FFFFFF
+        FFFFFFFFFFFFFFFFFFC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCF1F1
+        F1FFFFFF800000800000800000800000800000800000800000800000DDDDDDDD
+        DDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        800000800000F1F1F1F1F1F1DDDDDDCCCCCCCCCCCCDDDDDDF1F1F1F1F1F10000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDDF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFCCCCCCCCCCCCDDDDDDCCCCCC8000008000008000
+        00FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCDD
+        DDDDF1F1F1800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1
+        F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDDDDDDDDDD
+        DDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F180
+        0000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        8000008000008000008000008000008000008000008000008000008000008000
+        00F1F1F1FFFFFFF1F1F1B2B2B2C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F100
+        00FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1FFFFFF800000800000800000F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1800000800000800000800000800000800000800000800000F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0C0C0C0F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FFFFFFFF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFF1F1
+        F1F1F1F1F1F1F1FFFFFF800000800000800000800000DDDDDDC0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1B2B2B2C0C0C0CCCCCCDDDDDD0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000
+        800000FFFFFFF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCC999999F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDD
+        DDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC0000FF00
+        00FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDD8000008000
+        00F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFF800000800000800000F1F1F1F1
+        F1F1DDDDDDC0C0C0CCCCCCCCCCCCFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000
+        800000800000F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FF800000800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDD
+        DDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1CCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1
+        F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F10000FF0000FF0000FFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFF
+        FFDDDDDDF1F1F1F1F1F10000FF0000FF0000FFB2B2B2C0C0C0DDDDDDF1F1F180
+        0000800000800000FFFFFFFFFFFFF1F1F1F1F1F1FFFFFF800000800000800000
+        800000DDDDDDB2B2B2CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCC
+        CC800000800000800000F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF800000800000800000F1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDCCCCCCCC
+        CCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCCCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFC0C0C0C0C0C0B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FFCCCCCCF1
+        F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFCCCCCCDDDDDDF1F1F1
+        F1F1F1800000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFFF1F1F18000
+        00800000800000F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDD
+        999999DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1CCCCCCB2B2B2DDDDDDFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFF800000800000800000FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000800000800000800000FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0
+        C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCC0C0C0CC
+        CCCCFFFFFFF1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFF1F1F1FFFFFFFFFFFF800000800000800000DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F18000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000FFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000800000800000800000F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1B2B2B20000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCC999999B2B2B2
+        F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDD
+        DDC0C0C0C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDD8000008000008000
+        00DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000800000800000800000800000800000800000800000800000FFFFFFF1F1F1
+        F1F1F1FFFFFFFFFFFF8000008000008000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000800000800000F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C00000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1B2B2B2CCCC
+        CCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0B2
+        B2B2CCCCCCDDDDDDFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDD80000080
+        0000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDD800000800000800000800000800000800000800000FFFFFFF1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDD
+        F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1
+        F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDC0C0C0DDDDDDC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1
+        F1F1C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCC
+        CCCCCCCCCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDD
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC
+        DDDDDDC0C0C0CCCCCCDDDDDDC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1
+        F1DDDDDDCCCCCCDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDCCCCCCC0C0C0DDDDDDCCCCCCC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCC0C0C0DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2CCCC
+        CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1DDDD
+        DDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCDD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDCCCCCCB2B2B2C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CC
+        CCCCCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCDDDDDDF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000}
+      Stretch = True
+      IsControl = True
+    end
+    object lblProductName: TLabel
+      Left = 5
+      Top = 80
+      Width = 68
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Product Name'
+      IsControl = True
+    end
+    object lblVersion: TLabel
+      Left = 8
+      Top = 160
+      Width = 74
+      Height = 13
+      Caption = 'Version: 1.1.1.1'
+      IsControl = True
+    end
+    object lblGovStatement: TLabel
+      Left = 5
+      Top = 96
+      Width = 231
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Developed by the Department of Veterans Affairs'
+      IsControl = True
+    end
+    object lblCRC: TLabel
+      Left = 232
+      Top = 160
+      Width = 92
+      Height = 13
+      Caption = 'CRC: DDDDDDDD'
+    end
+    object lblDate: TLabel
+      Left = 97
+      Top = 160
+      Width = 82
+      Height = 13
+      Alignment = taCenter
+      Caption = 'January 30, 2000'
+    end
+    object ProgramIcon: TImage
+      Left = 176
+      Top = 8
+      Width = 145
+      Height = 73
+    end
+    object Memo1: TMemo
+      Left = 8
+      Top = 112
+      Width = 321
+      Height = 49
+      BorderStyle = bsNone
+      Lines.Strings = (
+        'Unauthorized access or use of this system and/or its data is a '
+        
+          'federal crime.  Use of all data must be in accordance with VA po' +
+          'licy '
+        'on security and privacy.')
+      ParentColor = True
+      TabOrder = 0
+    end
+  end
+  object OKButton: TButton
+    Left = 139
+    Top = 204
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/frmVistAAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/frmVistAAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/RPCBroker/SilentSignOn/frmVistAAbout.pas	(revision 1676)
@@ -0,0 +1,267 @@
+unit frmVistAAbout;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls, jpeg, jconsts, Dialogs;
+
+TYPE
+  TInteger8 = Int64;
+
+type
+  TfrmVistAAbout = class(TForm)
+    Panel1: TPanel;
+    VistaLogo: TImage;
+    lblProductName: TLabel;
+    lblVersion: TLabel;
+    lblGovStatement: TLabel;
+    OKButton: TButton;
+    lblCRC: TLabel;
+    Memo1: TMemo;
+    lblDate: TLabel;
+    ProgramIcon: TImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  procedure getfileinfo(var Version: String; var ProductName: String); virtual;
+  end;
+
+procedure ShowAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+  CONST
+    table:  ARRAY[0..255] OF DWORD =
+   ($00000000, $77073096, $EE0E612C, $990951BA,
+    $076DC419, $706AF48F, $E963A535, $9E6495A3,
+    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
+    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
+    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
+    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,
+    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
+    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116,
+    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,
+    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+
+    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,
+    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,
+    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,
+    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
+    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
+    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
+    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086,
+    $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
+    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+
+    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
+    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,
+    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
+    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
+    $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
+    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
+    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
+    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,
+    $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
+    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+
+    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,
+    $9C0906A9, $EB0E363F, $72076785, $05005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
+    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
+    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
+    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
+    $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
+    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
+    $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
+    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+  // Use CalcCRC32 as a procedure so CRCValue can be passed in but
+  // also returned.  This allows multiple calls to CalcCRC32 for
+  // the "same" CRC-32 calculation.
+  PROCEDURE CalcCRC32 (p:  pointer; ByteCount:  DWORD; VAR CRCValue:  DWORD);
+    // The following is a little cryptic (but executes very quickly).
+    // The algorithm is as follows:
+    //  1.  exclusive-or the input byte with the low-order byte of
+    //      the CRC register to get an INDEX
+    //  2.  shift the CRC register eight bits to the right
+    //  3.  exclusive-or the CRC register with the contents of
+    //      Table[INDEX]
+    //  4.  repeat steps 1 through 3 for all bytes
+
+   VAR
+    i:  DWORD;
+    q:  ^BYTE;
+  BEGIN
+    q := p;
+    FOR   i := 0 TO ByteCount-1 DO BEGIN
+      CRCvalue := (CRCvalue SHR 8)  XOR
+                  Table[ q^ XOR (CRCvalue AND $000000FF) ];
+      INC(q)
+    END
+  END {CalcCRC32};
+
+
+  // The CRC-32 value calculated here matches the one from the PKZIP program.
+  // Use MemoryStream to read file in binary mode.
+  PROCEDURE CalcFileCRC32 (FromName:  STRING; VAR CRCvalue:  DWORD;
+            VAR TotalBytes:  TInteger8;
+            VAR error:  WORD);
+    VAR
+      Stream:  TMemoryStream;
+  BEGIN
+    error := 0;
+    CRCValue := $FFFFFFFF;
+    Stream := TMemoryStream.Create;
+    TRY
+      TRY
+        Stream.LoadFromFile(FromName);
+        IF   Stream.Size > 0
+        THEN CalcCRC32 (Stream.Memory, Stream.Size, CRCvalue)
+      EXCEPT
+        ON E: EReadError DO
+         error := 1
+      END;
+
+      CRCvalue := NOT CRCvalue;
+      TotalBytes := Stream.Size
+    FINALLY
+      Stream.Free
+    END;
+  END {CalcFileCRC32};
+
+procedure TfrmVistAAbout.FormCreate(Sender: TObject);
+var
+  CRC32: DWord;
+  TotalBytes: Int64;
+  Error: Word;
+  Text: String;
+  Version: String;
+  ProductName: String;
+begin
+  CalcFileCRC32(Application.ExeName, CRC32, TotalBytes, Error);
+  lblCRC.Caption := 'CRC: ' + IntToHex(CRC32,8);
+  Text := Application.ExeName;
+  while pos('\',Text) > 0 do
+  begin
+    Text := copy(Text,pos('\',Text)+1,Length(Text));
+  end;    // while
+  Text := copy(Text,1,Length(Text)-4);
+  Caption := 'About ' + Text;
+  getfileinfo(Version, ProductName);
+  lblProductName.Caption := ProductName;
+  lblVersion.Caption := 'Version: ' + Version;
+  lblProductName.Width := Panel1.Width-10;
+  lblGovStatement.Width := Panel1.Width-10;
+  if ProgramIcon.Picture.Graphic = nil then
+  begin
+    VistALogo.Left := (Panel1.Width - VistALogo.Width) div 2;
+  end;
+end;
+
+procedure TfrmVistAAbout.GetFileInfo(var Version: String; var ProductName: String);
+var
+  VerInfoSize: DWORD;         // holds the size of the version info resource
+  GetInfoSizeJunk: DWORD;     // a junk variable, its value is ignored
+  VersionInfo: Pointer;       // points to the version info resource
+  Translation: Pointer;       // holds version info translation table
+  InfoPointer: Pointer;       // a pointer to version information
+
+  VersionInfoSize: UINT;      // holds the size of version information
+  VersionValue: string;       // holds the version info request string
+  SearchRec: TSearchRec;
+  DateTimeVal: TDateTime;
+  WriteTime: Integer;
+begin
+  {retrieve the size of the version information resource, if one exists}
+  VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName),
+                                        GetInfoSizeJunk);
+
+  {if there was a version information resource available...}
+
+  if VerInfoSize>0 then
+  begin
+    {retrieve enough memory to hold the version resource}
+    GetMem(VersionInfo, VerInfoSize);
+
+    {retrieve the version resource for the selected file}
+    GetFileVersionInfo(PChar(Application.ExeName), 0,
+                       VerInfoSize, VersionInfo);
+
+    {retrieve a pointer to the translation table}
+    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation',
+                  Translation, VersionInfoSize);
+
+    {initialize the version value request string}
+    VersionValue :='\\StringFileInfo\\'+
+                  IntToHex(LoWord(LongInt(Translation^)),4)+
+                  IntToHex(HiWord(LongInt(Translation^)),4)+
+                  '\\';
+
+    {retrieve and display the file version}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'FileVersion'), InfoPointer,
+                  VersionInfoSize);
+    Version := string(PChar(InfoPointer));
+
+    {retrieve and display the product name}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'ProductName'), InfoPointer,
+                  VersionInfoSize);
+    ProductName := string(PChar(InfoPointer));
+
+    {free the version resource memory}
+    FreeMem(VersionInfo, VerInfoSize);
+  end
+  else
+  begin
+  Version := 'Not in File';
+  ProductName := 'Not Identified In File';
+  end;
+  if findfirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
+  begin
+    WriteTime := SearchRec.Time;
+    DateTimeVal := FileDateToDateTime(WriteTime);
+    lblDate.Caption := FormatDateTime('mmmm dd, yyyy hh:nn',DateTimeVal);
+  end;
+end;
+
+procedure ShowAboutBox;
+begin
+  with TfrmVistAAbout.Create(Application) do
+    try
+      ShowModal;
+    finally
+      free;
+    end;
+end;
+
+end.
+ 
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExample.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExample.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExample.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=8
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=Example Program using RPCBroker and different types of calls
+FileVersion=1.1.31.8
+InternalName=Broker Example
+LegalCopyright=(c) 1997-2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=RPCBroker BrokerExample
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExample.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExample.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExample.dpr	(revision 1676)
@@ -0,0 +1,19 @@
+program BrokerExample;
+
+uses
+  Forms,
+  fBrokerExample in 'fBrokerExample.pas' {frmBrokerExample},
+  SplVista,
+  fSgnonDlg in '..\..\Source\fSgnonDlg.pas' {frmSignonDialog};
+
+// include to display Vista splash
+
+{$R *.RES}
+
+begin
+  Application.CreateForm(TfrmBrokerExample, frmBrokerExample);
+  Application.CreateForm(TfrmSignonDialog, frmSignonDialog);
+  SplashOpen;                                    // display splash screen
+  SplashClose(3000);                             // min splash time 3 seconds, then close
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExampleAboutFrm.PAS
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExampleAboutFrm.PAS	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExampleAboutFrm.PAS	(revision 1676)
@@ -0,0 +1,42 @@
+{**************************************************
+RPC Broker Example About form      ver. 1.1  9/2/97
+   Infrastructure Development Team
+   San Francisco IRM Field Office, Dept. of Veterans Affairs
+**************************************************}
+unit BrokerExampleAboutFrm;
+
+interface
+
+uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls;
+
+type
+  TAboutBox = class(TForm)
+    Panel1: TPanel;
+    OKButton: TBitBtn;
+    ProgramIcon: TImage;
+    ProductName: TLabel;
+    Version: TLabel;
+    Copyright: TLabel;
+    Comments: TLabel;
+    procedure OKButtonClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  AboutBox: TAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+procedure TAboutBox.OKButtonClick(Sender: TObject);
+begin
+  Close;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExampleAboutFrm.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExampleAboutFrm.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/BrokerExampleAboutFrm.dfm	(revision 1676)
@@ -0,0 +1,136 @@
+object AboutBox: TAboutBox
+  Left = 315
+  Top = 182
+  ActiveControl = OKButton
+  BorderIcons = [biSystemMenu, biMinimize]
+  BorderStyle = bsDialog
+  Caption = 'About RPC Broker Example'
+  ClientHeight = 213
+  ClientWidth = 305
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clBtnText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 16
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 289
+    Height = 161
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    TabOrder = 0
+    object ProgramIcon: TImage
+      Left = 8
+      Top = 8
+      Width = 65
+      Height = 57
+      Picture.Data = {
+        07544269746D617076020000424D760200000000000076000000280000002000
+        0000200000000100040000000000000200000000000000000000100000001000
+        000000000000000080000080000000808000800000008000800080800000C0C0
+        C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+        FF00000000000000000000000000000000000EE8787878EEEEEEE03F30878EEE
+        EEE00EE8787878EEEEEEE03F30878EEEEEE00EE8787878EEEEEEE03F30878EEE
+        EEE00EE8787878EEEEEEE03F30878EEEEEE00887787877788888803F3088787E
+        EEE00788787878878887803F3088887EEEE00788887888878887803F3088887E
+        EEE00877888887788888703F308887EEEEE00888777778888888037883088888
+        8EE007777777777777703787883087777EE00888888888888803787FF8830888
+        888008888888888880378777778830888880077777777788037873F3F3F87808
+        88E00888888888803787FFFFFFFF8830EEE00887777778800001111111111100
+        EEE00888888888888899B999B99999EEEEE00888888888888899B9B99BB9B9EE
+        EEE0088888888888899BB9BB99BB99EEEEE0078888888888899B999B999999EE
+        EEE0087788888778899B9B9BB9BB99EEEEE00888778778888E9B9B9BB9999EEE
+        EEE0088888788888EE9B99B9BB9BEEEEEEE00EE8888888EEEEE999B9999EEEEE
+        EEE00EEEE888EEEEEEEE99BB999EEEEEEEE00EEEEE8EEEEEEEEEE999B9EEEEEE
+        EEE00EEEEE8EEEEEEEEEEEE999EEEEEEEEE00EEEEE8EEEEEEEEEEEEE99EEEEEE
+        EEE00EEEEE8EEEEEEEEEEEEE9EEEEEEEEEE00EEEEE8EEEEEEEEEEEEEEEEEEEEE
+        EEE00EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE00000000000000000000000000000
+        0000}
+      Stretch = True
+      IsControl = True
+    end
+    object ProductName: TLabel
+      Left = 88
+      Top = 16
+      Width = 118
+      Height = 13
+      Caption = 'RPC Broker Example'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      IsControl = True
+    end
+    object Version: TLabel
+      Left = 88
+      Top = 40
+      Width = 69
+      Height = 13
+      Caption = 'Version: 1.1'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      IsControl = True
+    end
+    object Copyright: TLabel
+      Left = 8
+      Top = 80
+      Width = 238
+      Height = 13
+      Caption = 'Copyright: Department Of Veterans Affairs'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      IsControl = True
+    end
+    object Comments: TLabel
+      Left = 4
+      Top = 112
+      Width = 280
+      Height = 39
+      Caption = 
+        'Your feedback is greatly appreciated.  Please direct your commen' +
+        'ts to: G.RPC_BROKER_COMMENTS@FORUM.VA.GOV'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      WordWrap = True
+      IsControl = True
+    end
+  end
+  object OKButton: TBitBtn
+    Left = 111
+    Top = 178
+    Width = 77
+    Height = 27
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clBtnText
+    Font.Height = -12
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 1
+    OnClick = OKButtonClick
+    Kind = bkOK
+    Margin = 2
+    Spacing = -1
+    IsControl = True
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/fBrokerExample.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/fBrokerExample.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/fBrokerExample.dfm	(revision 1676)
@@ -0,0 +1,568 @@
+object frmBrokerExample: TfrmBrokerExample
+  Left = 203
+  Top = 106
+  BorderStyle = bsSingle
+  Caption = 'RPCBroker Example (patch xwb*1.1*40 SharedRPCBroker)'
+  ClientHeight = 386
+  ClientWidth = 473
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clBtnText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 16
+  object GroupBox2: TGroupBox
+    Left = 8
+    Top = 0
+    Width = 457
+    Height = 73
+    Caption = 'VistA Server'
+    TabOrder = 0
+    object Label2: TLabel
+      Left = 6
+      Top = 51
+      Width = 67
+      Height = 16
+      AutoSize = False
+      Caption = 'Status:'
+    end
+    object Label3: TLabel
+      Left = 82
+      Top = 51
+      Width = 88
+      Height = 16
+      Caption = 'Disconnected'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clRed
+      Font.Height = -13
+      Font.Name = 'System'
+      Font.Style = []
+      ParentColor = False
+      ParentFont = False
+    end
+    object btnConnect: TButton
+      Left = 354
+      Top = 12
+      Width = 91
+      Height = 25
+      Caption = '&Connect'
+      Default = True
+      TabOrder = 2
+      OnClick = btnConnectClick
+    end
+    object edtPort: TEdit
+      Left = 192
+      Top = 24
+      Width = 49
+      Height = 24
+      Hint = 'Listener port number'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      Text = '9200'
+      OnChange = edtServerChange
+    end
+    object edtServer: TEdit
+      Left = 8
+      Top = 24
+      Width = 177
+      Height = 24
+      Hint = 'Name of server or IP address'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Text = 'BROKERSERVER'
+      OnChange = edtServerChange
+    end
+    object BitBtn1: TBitBtn
+      Left = 354
+      Top = 44
+      Width = 91
+      Height = 25
+      TabOrder = 3
+      Kind = bkClose
+    end
+    object btnGetServerInfo: TBitBtn
+      Left = 248
+      Top = 24
+      Width = 73
+      Height = 25
+      Hint = 'GetServerInfo'
+      Caption = 'Server'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = btnGetServerInfoClick
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333000000000
+        00333FF777777777773F0000FFFFFFFFFF0377773F3F3F3F3F7308880F0F0F0F
+        0FF07F33737373737337088880FFFFFFFFF07F3337FFFFFFFFF7088880000000
+        00037F3337777777777308888033330F03337F3337F3FF7F7FFF088880300000
+        00007F3337F7777777770FFFF030FFFFFFF07F3FF7F7F3FFFFF708008030F000
+        00F07F7737F7F77777F70FFFF030F0AAE0F07F3FF7F7F7F337F708008030F0DA
+        D0F07F7737F7F7FFF7F70FFFF030F00000F07F33F7F7F77777370FF9F030FFFF
+        FFF07F3737F7FFFFFFF70FFFF030000000007FFFF7F777777777000000333333
+        3333777777333333333333333333333333333333333333333333}
+      NumGlyphs = 2
+    end
+  end
+  object PageControl1: TPageControl
+    Left = 8
+    Top = 76
+    Width = 457
+    Height = 305
+    ActivePage = TabSheet1
+    TabOrder = 1
+    object TabSheet1: TTabSheet
+      Caption = 'Echo string'
+      object lblSend: TLabel
+        Left = 8
+        Top = 24
+        Width = 96
+        Height = 16
+        Caption = 'Original string:'
+      end
+      object lblReturn: TLabel
+        Left = 8
+        Top = 144
+        Width = 93
+        Height = 16
+        Caption = 'Echoed string:'
+      end
+      object edtStrOrig: TEdit
+        Left = 8
+        Top = 40
+        Width = 225
+        Height = 24
+        TabOrder = 0
+        Text = 'Hello World!'
+      end
+      object edtStrRtrn: TEdit
+        Left = 8
+        Top = 160
+        Width = 225
+        Height = 24
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object btnEchoString: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE ECHO STRING'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnEchoStringClick
+      end
+      object Memo1: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return a single string.'
+          ''
+          'Original string passed in as '
+          'PType literal.'
+          ''
+          'RPC: XWB EXAMPLE ECHO '
+          'STRING.'
+          ''
+          'Return Value Type: SINGLE '
+          'VALUE.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 3
+      end
+    end
+    object TabSheet2: TTabSheet
+      Caption = 'Pass by reference'
+      object Label1: TLabel
+        Left = 8
+        Top = 24
+        Width = 70
+        Height = 16
+        Caption = 'Reference:'
+      end
+      object Label4: TLabel
+        Left = 8
+        Top = 144
+        Width = 40
+        Height = 16
+        Caption = 'Value:'
+      end
+      object edtReference: TEdit
+        Left = 8
+        Top = 40
+        Width = 225
+        Height = 24
+        TabOrder = 0
+        Text = '$HOROLOG'
+      end
+      object edtValue: TEdit
+        Left = 8
+        Top = 160
+        Width = 225
+        Height = 24
+        ReadOnly = True
+        TabOrder = 1
+      end
+      object btnPassByRef: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB GET VARIABLE VALUE'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnPassByRefClick
+      end
+      object Memo2: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.strCall '
+          'method to return a single string.'
+          ''
+          'Parameter passed in as PType '
+          'reference.'
+          ''
+          'RPC: XWB GET VARIABLE '
+          'VALUE.'
+          ''
+          'Return Value Type: SINGLE '
+          'VALUE.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 3
+      end
+    end
+    object TabSheet3: TTabSheet
+      Caption = 'Get list'
+      object Label5: TLabel
+        Left = 8
+        Top = 120
+        Width = 87
+        Height = 16
+        Caption = 'Returned list:'
+      end
+      object lstData: TListBox
+        Left = 8
+        Top = 136
+        Width = 225
+        Height = 129
+        ItemHeight = 16
+        TabOrder = 0
+      end
+      object btnGetList: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE GET LIST'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnGetListClick
+      end
+      object RadioButton1: TRadioButton
+        Left = 16
+        Top = 16
+        Width = 137
+        Height = 17
+        Caption = 'Number of lines'
+        Checked = True
+        TabOrder = 2
+        TabStop = True
+      end
+      object RadioButton2: TRadioButton
+        Left = 16
+        Top = 48
+        Width = 137
+        Height = 17
+        Caption = 'Kilobytes of data'
+        TabOrder = 3
+      end
+      object spnLines: TSpinEdit
+        Left = 160
+        Top = 16
+        Width = 65
+        Height = 26
+        MaxValue = 0
+        MinValue = 0
+        TabOrder = 4
+        Value = 50
+      end
+      object spnKbytes: TSpinEdit
+        Left = 160
+        Top = 48
+        Width = 65
+        Height = 26
+        MaxValue = 0
+        MinValue = 0
+        TabOrder = 5
+        Value = 32
+      end
+      object Memo3: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return several strings.'
+          ''
+          'Two parameters passed in as '
+          'PType literal.'
+          ''
+          'RPC: XWB EXAMPLE GET LIST.'
+          ''
+          'Return Value Type: GLOBAL '
+          'ARRAY.'
+          ''
+          'WORD WRAP ON field is True '
+          'to break appart call result into '
+          'separate Results strings instead '
+          'of one long Results[0] string.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 6
+      end
+    end
+    object TabSheet4: TTabSheet
+      Caption = 'WP Text'
+      object lblList: TLabel
+        Left = 8
+        Top = 56
+        Width = 177
+        Height = 17
+        AutoSize = False
+        Caption = 'REMOTE PROCEDURE file description:'
+      end
+      object btnWPText: TButton
+        Left = 8
+        Top = 16
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE WPTEXT'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = btnWPTextClick
+      end
+      object mmoText: TMemo
+        Left = 8
+        Top = 80
+        Width = 225
+        Height = 185
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 1
+      end
+      object Memo4: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.lstCall '
+          'method to return several strings.'
+          ''
+          'No parameters are used in this '
+          'call.'
+          ''
+          'RPC: XWB EXAMPLE WPTEXT.'
+          ''
+          'Return Value Type: WORD '
+          'PROCESSING.'
+          ''
+          'WORD WRAP ON field is False '
+          'to allow memo box to control '
+          'word wrapping as necessary.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 2
+      end
+    end
+    object TabSheet5: TTabSheet
+      Caption = 'Sort numbers'
+      object Label6: TLabel
+        Left = 8
+        Top = 120
+        Width = 87
+        Height = 16
+        Caption = 'Returned list:'
+      end
+      object Label7: TLabel
+        Left = 8
+        Top = 8
+        Width = 72
+        Height = 16
+        Caption = 'How many:'
+      end
+      object lblStatus: TLabel
+        Left = 8
+        Top = 56
+        Width = 57
+        Height = 16
+        Caption = 'lblStatus'
+        Visible = False
+      end
+      object lstSorted: TListBox
+        Left = 8
+        Top = 136
+        Width = 225
+        Height = 129
+        ItemHeight = 16
+        TabOrder = 0
+      end
+      object btnSortNum: TButton
+        Left = 8
+        Top = 88
+        Width = 225
+        Height = 25
+        Hint = 'XWB EXAMPLE SORT NUMBERS'
+        Caption = 'Execute RPC'
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnSortNumClick
+      end
+      object spnNumbers: TSpinEdit
+        Left = 8
+        Top = 24
+        Width = 81
+        Height = 26
+        MaxValue = 10000
+        MinValue = 0
+        TabOrder = 2
+        Value = 500
+      end
+      object rgrDirection: TRadioGroup
+        Left = 104
+        Top = 8
+        Width = 121
+        Height = 65
+        Caption = 'Sort direction'
+        ItemIndex = 0
+        Items.Strings = (
+          'low -> high'
+          'high -> low')
+        TabOrder = 3
+      end
+      object Memo5: TMemo
+        Left = 240
+        Top = 8
+        Width = 201
+        Height = 257
+        TabStop = False
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Lines.Strings = (
+          'Uses TRPCBroker.Call method '
+          'to return several strings.'
+          ''
+          'First parameter passed in as '
+          'literal, second as list.  See how '
+          'Mult is used.'
+          ''
+          'RPC: XWB EXAMPLE SORT '
+          'NUMBERS.'
+          ''
+          'Return Value Type: ARRAY.'
+          ''
+          'This call can take a while to '
+          'complete.  RPCTimeLimit '
+          'property is adjusted.')
+        ParentColor = True
+        ParentFont = False
+        ReadOnly = True
+        TabOrder = 4
+      end
+    end
+  end
+  object MainMenu1: TMainMenu
+    Left = 160
+    Top = 320
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object AboutExample: TMenuItem
+        Caption = '&About RPC Broker Example...'
+        OnClick = AboutExampleClick
+      end
+    end
+  end
+  object Timer1: TTimer
+    OnTimer = Timer1Timer
+    Left = 16
+    Top = 320
+  end
+  object RPCBroker1: TSharedRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    ListenerPort = 0
+    RpcVersion = '0'
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    AllowShared = True
+    RPCTimeLimit = 30
+    Left = 84
+    Top = 327
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/fBrokerExample.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/fBrokerExample.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/fBrokerExample.pas	(revision 1676)
@@ -0,0 +1,291 @@
+{**************************************************
+RPC Broker Example form      ver. 1.1  9/3/97
+   Broker Development Team
+   San Francisco IRM Field Office, Dept. of Veterans Affairs
+
+Disclaimer:
+   This example does not attempt to teach general Delphi and M programming.
+   We intentionally removed any safeguards from the code that prevents
+   passing values that are too small or too large.  Therefore, the important
+   code remains uncluttered and the programmer is free to experiment and
+   push the program beyond its limits.
+
+Purpose:
+   This sample application is an example of how to program client/server
+   applications in Delphi and M using the RPC Broker. The demonstrated features
+   include:
+     - Connecting to an M server
+     - Creating an application context
+     - Using the GetServerInfo function
+     - Displaying the VistA splash screen
+     - Setting the TRPCBroker Param property for each Param PType (literal,
+       reference, list)
+     - Calling RPCs with the Call method
+     - Calling RPCs with the lstCall and strCall methods
+
+   We encourage you to study the Delphi and M source code to see how the
+   Broker is used to accomplish these tasks.  Try changing some of the
+   RPCBroker1 component properties to see what happens.  Also, try other
+   values in the fields of the remote procedure records in the
+   REMOTE PROCEDURE file.
+
+Warning: "Get list" and "Sort numbers" tabs can potentially take excessively
+large data samples which can either crash server process or cause the
+connection timeout.  Final note, memory allocation errors are not recorded
+in the Kernel error trap.  They are recorded in the operating system error
+trap.
+
+Context option for this application:
+   XWB BROKER EXAMPLE
+
+Remote procedures used:
+   XWB EXAMPLE ECHO STRING
+   XWB EXAMPLE GET LIST
+   XWB EXAMPLE SORT NUMBERS
+   XWB EXAMPLE WPTEXT
+   XWB GET VARIABLE VALUE
+
+Server M routine:
+   XWBEXMPL
+**************************************************}
+unit fBrokerExample;
+
+interface
+
+uses
+  SysUtils,Forms, StdCtrls,Graphics, Dialogs, WinTypes,
+  Controls, Classes, ExtCtrls, TRPCB, XWBut1, MFunStr, Menus, WinProcs,
+  RpcConf1, Spin, ComCtrls, BrokerExampleAboutFrm, Buttons,
+  ActiveX, SharedRPCBroker;
+
+type
+  TfrmBrokerExample = class(TForm)
+    GroupBox2: TGroupBox;
+    Label2: TLabel;
+    Label3: TLabel;
+    MainMenu1: TMainMenu;
+    Help1: TMenuItem;
+    AboutExample: TMenuItem;
+    btnConnect: TButton;
+    edtPort: TEdit;
+    edtServer: TEdit;
+    PageControl1: TPageControl;
+    TabSheet1: TTabSheet;
+    TabSheet2: TTabSheet;
+    TabSheet3: TTabSheet;
+    TabSheet4: TTabSheet;
+    TabSheet5: TTabSheet;
+    lblSend: TLabel;
+    edtStrOrig: TEdit;
+    lblReturn: TLabel;
+    edtStrRtrn: TEdit;
+    btnEchoString: TButton;
+    lblList: TLabel;
+    Label1: TLabel;
+    edtReference: TEdit;
+    Label4: TLabel;
+    edtValue: TEdit;
+    btnPassByRef: TButton;
+    lstData: TListBox;
+    Label5: TLabel;
+    btnGetList: TButton;
+    btnWPText: TButton;
+    Label6: TLabel;
+    lstSorted: TListBox;
+    btnSortNum: TButton;
+    spnNumbers: TSpinEdit;
+    Label7: TLabel;
+    rgrDirection: TRadioGroup;
+    RadioButton1: TRadioButton;
+    RadioButton2: TRadioButton;
+    spnLines: TSpinEdit;
+    spnKbytes: TSpinEdit;
+    Timer1: TTimer;
+    mmoText: TMemo;
+    lblStatus: TLabel;
+    BitBtn1: TBitBtn;
+    btnGetServerInfo: TBitBtn;
+    Memo1: TMemo;
+    Memo2: TMemo;
+    Memo3: TMemo;
+    Memo4: TMemo;
+    Memo5: TMemo;
+    RPCBroker1: TSharedRPCBroker;
+    procedure AboutExampleClick(Sender: TObject);
+    procedure btnEchoStringClick(Sender: TObject);
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnPassByRefClick(Sender: TObject);
+    procedure btnGetListClick(Sender: TObject);
+    procedure btnSortNumClick(Sender: TObject);
+    procedure btnWPTextClick(Sender: TObject);
+    procedure Timer1Timer(Sender: TObject);
+    procedure btnGetServerInfoClick(Sender: TObject);
+    procedure edtServerChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+end;
+
+
+
+var
+  frmBrokerExample: TfrmBrokerExample;
+
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmBrokerExample.btnEchoStringClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE ECHO STRING';
+  RPCBroker1.Param[0].Value := edtStrOrig.Text;
+  RPCBroker1.Param[0].PType := literal;
+  RPCBroker1.Call;                           //execute RPC
+  edtStrRtrn.Text := RPCBroker1.Results[0];  //for single value use Results[0]
+end;
+
+
+
+procedure TfrmBrokerExample.btnPassByRefClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB GET VARIABLE VALUE';
+  RPCBroker1.Param[0].Value := edtReference.Text;
+  RPCBroker1.Param[0].PType := reference;
+  edtValue.Text := RPCBroker1.strCall;   //execute RPC and show result in one call
+end;
+
+
+
+procedure TfrmBrokerExample.btnGetListClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE GET LIST';
+  if RadioButton1.Checked then begin
+    RPCBroker1.Param[0].Value := 'LINES';
+    RPCBroker1.Param[0].PType := literal;
+    RPCBroker1.Param[1].Value := IntToStr(spnLines.Value);
+    RPCBroker1.Param[1].PType := literal;
+  end
+  else begin
+    RPCBroker1.Param[0].Value := 'KILOBYTES';
+    RPCBroker1.Param[0].PType := literal;
+    RPCBroker1.Param[1].Value := IntToStr(spnKbytes.Value);
+    RPCBroker1.Param[1].PType := literal
+  end;
+  RPCBroker1.Call;                           //execute RPC
+  lstData.Items := RPCBroker1.Results;       //show results of the call
+end;
+
+
+
+procedure TfrmBrokerExample.btnWPTextClick(Sender: TObject);
+begin
+  RPCBroker1.RemoteProcedure := 'XWB EXAMPLE WPTEXT';
+  RPCBroker1.lstCall(mmoText.Lines);         //execute RPC and show results in one call
+end;
+
+
+
+procedure TfrmBrokerExample.btnSortNumClick(Sender: TObject);
+var
+  I, SaveRPCTimeLimit: integer;
+begin
+  lblStatus.Visible := True;                 //turn on status label
+  lblStatus.Caption := 'building';           //tell user what's happenning
+  Application.ProcessMessages;               //give Windows chance to paint
+  with RPCBroker1 do begin
+    RemoteProcedure := 'XWB EXAMPLE SORT NUMBERS';
+    if rgrDirection.ItemIndex = 0 then Param[0].Value := 'LO'
+    else Param[0].Value := 'HI';
+    Param[0].PType := literal;
+    with Param[1] do begin
+      PType := list;                                //tells Broker to pass Mult
+        for I := 0 to spnNumbers.Value - 1 do       //build Mult one by one
+          Mult[IntToStr(Random(10000)+1)] := IntToStr(I); //subscript and value are strings!
+    end;
+    lblStatus.Caption := 'RPC running';
+    Application.ProcessMessages;             //give Windows chance to paint
+    SaveRPCTimeLimit := RPCTimeLimit;
+    RPCTimeLimit := spnNumbers.Value div 10; //adjust in case a lot of numbers
+    Call;                                    //execute RPC
+    lstSorted.Items := Results;              //show results of the call
+    RPCTimeLimit := SaveRPCTimeLimit;        //restore original value
+  end;
+  lblStatus.Visible := False;                //turn off status label
+end;
+
+
+
+procedure TfrmBrokerExample.btnConnectClick(Sender: TObject);
+begin
+  if btnConnect.Caption = '&Connect' then
+  begin   //connect
+    RPCBroker1.ClearParameters := True;           //try False, see what happens
+    try
+      RPCBroker1.Connected := True;
+                     //establish connection
+      if not RPCBroker1.CreateContext('XWB BROKER EXAMPLE') then
+          ShowMessage('Context could not be created!');
+    except
+      on e: Exception do
+        ShowMessage('Error: ' + e.Message);
+    end;
+  end
+  else                                            //disconnect
+    RPCBroker1.Connected := False;
+end;
+
+
+
+procedure TfrmBrokerExample.btnGetServerInfoClick(Sender: TObject);
+var
+  strServer, strPort: string;
+begin
+  if GetServerInfo(strServer, strPort)<> mrCancel then
+  begin {getsvrinfo}
+    edtServer.Text := strServer;                  //use chosen server
+    edtPort.Text := strPort;                      //use chosen port
+  end;
+end;
+
+
+
+procedure TfrmBrokerExample.edtServerChange(Sender: TObject);
+begin
+  RPCBroker1.Server := edtServer.Text;          //use specified server name/addr
+  RPCBroker1.ListenerPort := StrToInt(edtPort.Text);  //use specified port
+end;
+
+
+
+procedure TfrmBrokerExample.Timer1Timer(Sender: TObject);
+begin
+  if RPCBroker1.Connected then begin
+    btnConnect.Caption := '&Disconnect';
+    btnConnect.Default := False;
+    Label3.Caption := 'Connected';
+    Label3.Font.Color := clLime;  // clGreen;  // went to lime for higher contrast at some of the High contrast desktops
+  end
+  else begin
+    btnConnect.Caption := '&Connect';
+    btnConnect.Default := True;
+    Label3.Caption := 'Disconnected';
+    Label3.Font.Color := clRed;   //  Stayed with Red, generated a high contrast across all of the various combinations
+                                  //  Attempted to use clHighlight, but it did not show up like a highlight.
+  end;
+end;
+
+
+
+procedure TfrmBrokerExample.AboutExampleClick(Sender: TObject);
+begin
+  AboutBox.Show;
+end;
+
+
+procedure TfrmBrokerExample.FormCreate(Sender: TObject);
+begin
+  CoInitialize(nil);
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/frmVistAAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/frmVistAAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/frmVistAAbout.dfm	(revision 1676)
@@ -0,0 +1,1201 @@
+object frmVistAAbout: TfrmVistAAbout
+  Left = 279
+  Top = 106
+  BorderStyle = bsDialog
+  Caption = 'About'
+  ClientHeight = 236
+  ClientWidth = 353
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 185
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object VistaLogo: TImage
+      Left = 8
+      Top = 8
+      Width = 153
+      Height = 73
+      Center = True
+      Picture.Data = {
+        07544269746D61702A880000424D2A8800000000000036000000280000009600
+        00004D0000000100180000000000F48700000000000000000000000000000000
+        0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDFFFFFFDDDDDDCCCCCCB2B2B2CC
+        CCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0DDDDDDF1F1F1F1F1F1DDDDDDCCCC
+        CCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFC0C0C0DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDF1F1
+        F1FFFFFFF1F1F1DDDDDD999999CCCCCCF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1DDDDDDCCCCCCB2B2B2
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1F1DDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1CCCCCCB2B2B2CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1FFFFFFFFFFFFDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCCFFFFFFDDDDDDB2B2B2C0C0
+        C0FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFF1F1
+        F1F1F1F1CCCCCCFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFB2B2B2C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1DDDDDDFFFFFFC0C0C0FFFFFFF1F1F1CCCCCCF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCCCCCCCCCCCCCC
+        CCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDCCCCCCDDDDDDDDDD
+        DDCCCCCCF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDCCCCCCC0C0C0C0C0C0CCCCCCC0C0C0CCCCCCB2B2B2F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCCCCCCCCCCCCCDDDDDDC0C0
+        C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDD
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1
+        FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFC0C0C0CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDD0000FFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCC0C0C0C0C0
+        C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDD0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD
+        C0C0C0C0C0C0C0C0C0B2B2B20000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0
+        C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0CCCCCCCCCCCCDDDDDDDDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCC
+        CCC0C0C0DDDDDDF1F1F1F1F1F10000FF0000FF0000FF0000FFFFFFFFF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFC0C0C0C0C0C0CC
+        CCCCF1F1F1DDDDDDDDDDDDCCCCCCCCCCCCCCCCCCB2B2B2F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        DDDDDDDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1
+        F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFCCCCCC
+        DDDDDDF1F1F1FFFFFFDDDDDDCCCCCCB2B2B2DDDDDDB2B2B2C0C0C0F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1DDDDDDF1F1
+        F1F1F1F1B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFF1F1F1DD
+        DDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1
+        F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1CCCCCCB2B2B2DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFF
+        FFFFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFF1F1F1C0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFDDDDDD
+        CCCCCCC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1B2B2B2C0C0C0CCCCCCDDDDDDFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFF
+        FFFFFFFFFFFFFFDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0
+        C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFDDDD
+        DD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCCCCCCCDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDFFFFFFF1F1F1DD
+        DDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF999999C0C0C0FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDCCCCCCFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2DDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFDDDDDDC0C0C0C0C0C0CCCCCCDDDDDDC0C0C0F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1FFFFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFCCCCCCCCCCCCFFFFFFDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2F1F1F1
+        FFFFFFDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFC0C0C0B2B2B2CCCCCCF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDD
+        DDFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCB2B2B2C0C0C0CCCCCCF1F1F1FF
+        FFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0FFFFFFDDDDDDF1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDD
+        DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCC0C0C0FFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1CCCCCCB2B2B2CCCCCCC0C0C0CCCCCCF1F1F1F1F1F1F1F1F1DDDD
+        DDFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0DDDDDDFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCDDDDDDF1F1F1F1F1F1CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0C0C0FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFCCCCCCC0C0C0B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2C0C0C0CCCCCCCCCCCCDDDDDDC0C0C0C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1
+        F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1B2B2B2C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0
+        C0C0F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        B2B2B2CCCCCCFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD999999C0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0CCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1CCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDCCCC
+        CCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCCCCCCCDDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFF1F1F1DD
+        DDDDCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDCCCCCCB2B2B2F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDC0
+        C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDDDDDDDDDDDDC0C0C0DDDDDD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCCCCCCCDDDDDDDDDDDDC0C0C0B2B2B2CCCCCCF1F1F1FFFFFF
+        F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDB2B2B2CCCCCCFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1CCCCCCC0C0C00000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0
+        999999DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1FFFFFFF1
+        F1F1DDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCFFFFFFF1F1F1DDDDDDC0C0C0B2B2B2DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1
+        CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFCCCCCCCCCCCCDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDD
+        DDC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDD
+        DDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCCCCCC
+        CCCCCCCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDD
+        DDCCCCCCF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDCCCCCCC0C0C0C0C0C0DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0CCCCCCF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DD
+        DDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD999999B2B2B2DD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0DDDDDDFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1DDDDDDF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCDDDDDDCCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1
+        F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCC0
+        C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1DDDDDDF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFCCCCCCCCCCCCCCCCCCFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDF1F1F1FFFFFF
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDF1F1
+        F1F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1
+        F1F1F1F1F1FFFFFFDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDC0C0C0CCCCCCB2B2B2F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCC0C0C0DD
+        DDDDDDDDDDCCCCCCCCCCCC999999DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDD
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFF
+        FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DD
+        DDDDC0C0C0C0C0C0B2B2B2F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDC0C0C0
+        DDDDDDF1F1F1CCCCCCCCCCCCC0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1CCCCCCDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCCCCCC
+        CCDDDDDDF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0CCCCCCDDDDDDCCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFC0C0C0F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDDDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1CCCCCCC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF8000008000
+        00800000800000800000800000800000800000800000FFFFFFC0C0C0DDDDDDCC
+        CCCCDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1800000
+        800000800000DDDDDDCCCCCCC0C0C0C0C0C0DDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDD
+        DDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFF
+        FFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF8000008000008000
+        00800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000800000800000800000800000800000800000DDDDDD
+        F1F1F1DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1800000800000800000C0C0C0C0C0C0DDDDDDF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFF800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1800000800000800000800000CCCCCCFFFFFFFFFFFFF1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1FFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1DDDDDD800000800000800000800000FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFCCCCCCDDDDDDCCCCCCDDDDDDC0C0C0DDDDDDFFFFFFFFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCB2B2B2C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDD
+        DDDDDDDDF1F1F1F1F1F1F1F1F1800000800000800000DDDDDDF1F1F1DDDDDDF1
+        F1F1F1F1F1800000800000800000800000F1F1F1DDDDDDDDDDDDDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1800000800000800000F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDD999999B2B2B2F1F1F1DDDDDDDDDDDD800000800000800000FF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCC
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0CCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F1800000800000800000DDDDDD
+        DDDDDDF1F1F1DDDDDD800000800000800000800000F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000F1F1F1C0C0C0B2B2B2DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1800000800000
+        800000800000F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCC999999CCCCCCF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F18000008000
+        00800000C0C0C0CCCCCCC0C0C0C0C0C0800000800000800000F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        800000800000800000CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDD
+        DD800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFF800000800000800000
+        DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFF
+        FFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0
+        C0C0C0C0C0C0C0C0CCCCCC800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFFFF
+        FFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0CCCCCC0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFF800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD800000800000800000DDDDDDC0C0C0F1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFF1F1F1DDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0DD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDD
+        DDDDDDF1F1F1CCCCCCCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCB2B2B2CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFF
+        F1F1F1FFFFFFFFFFFF800000800000800000800000800000800000F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF800000800000800000C0
+        C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD800000800000800000FFFFFF
+        FFFFFFFFFFFFFFFFFFC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCF1F1
+        F1FFFFFF800000800000800000800000800000800000800000800000DDDDDDDD
+        DDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        800000800000F1F1F1F1F1F1DDDDDDCCCCCCCCCCCCDDDDDDF1F1F1F1F1F10000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDDF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFCCCCCCCCCCCCDDDDDDCCCCCC8000008000008000
+        00FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCDD
+        DDDDF1F1F1800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1
+        F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDDDDDDDDDD
+        DDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F180
+        0000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        8000008000008000008000008000008000008000008000008000008000008000
+        00F1F1F1FFFFFFF1F1F1B2B2B2C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F100
+        00FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1FFFFFF800000800000800000F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1800000800000800000800000800000800000800000800000F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0C0C0C0F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FFFFFFFF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFF1F1
+        F1F1F1F1F1F1F1FFFFFF800000800000800000800000DDDDDDC0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1B2B2B2C0C0C0CCCCCCDDDDDD0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000
+        800000FFFFFFF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCC999999F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDD
+        DDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC0000FF00
+        00FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDD8000008000
+        00F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFF800000800000800000F1F1F1F1
+        F1F1DDDDDDC0C0C0CCCCCCCCCCCCFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000
+        800000800000F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FF800000800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDD
+        DDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1CCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1
+        F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F10000FF0000FF0000FFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFF
+        FFDDDDDDF1F1F1F1F1F10000FF0000FF0000FFB2B2B2C0C0C0DDDDDDF1F1F180
+        0000800000800000FFFFFFFFFFFFF1F1F1F1F1F1FFFFFF800000800000800000
+        800000DDDDDDB2B2B2CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCC
+        CC800000800000800000F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF800000800000800000F1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDCCCCCCCC
+        CCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCCCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFC0C0C0C0C0C0B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FFCCCCCCF1
+        F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFCCCCCCDDDDDDF1F1F1
+        F1F1F1800000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFFF1F1F18000
+        00800000800000F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDD
+        999999DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1CCCCCCB2B2B2DDDDDDFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFF800000800000800000FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000800000800000800000FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0
+        C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCC0C0C0CC
+        CCCCFFFFFFF1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFF1F1F1FFFFFFFFFFFF800000800000800000DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F18000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000FFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000800000800000800000F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1B2B2B20000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCC999999B2B2B2
+        F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDD
+        DDC0C0C0C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDD8000008000008000
+        00DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000800000800000800000800000800000800000800000800000FFFFFFF1F1F1
+        F1F1F1FFFFFFFFFFFF8000008000008000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000800000800000F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C00000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1B2B2B2CCCC
+        CCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0B2
+        B2B2CCCCCCDDDDDDFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDD80000080
+        0000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDD800000800000800000800000800000800000800000FFFFFFF1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDD
+        F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1
+        F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDC0C0C0DDDDDDC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1
+        F1F1C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCC
+        CCCCCCCCCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDD
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC
+        DDDDDDC0C0C0CCCCCCDDDDDDC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1
+        F1DDDDDDCCCCCCDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDCCCCCCC0C0C0DDDDDDCCCCCCC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCC0C0C0DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2CCCC
+        CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1DDDD
+        DDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCDD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDCCCCCCB2B2B2C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CC
+        CCCCCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCDDDDDDF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000}
+      Stretch = True
+      IsControl = True
+    end
+    object lblProductName: TLabel
+      Left = 5
+      Top = 80
+      Width = 68
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Product Name'
+      IsControl = True
+    end
+    object lblVersion: TLabel
+      Left = 8
+      Top = 160
+      Width = 74
+      Height = 13
+      Caption = 'Version: 1.1.1.1'
+      IsControl = True
+    end
+    object lblGovStatement: TLabel
+      Left = 5
+      Top = 96
+      Width = 231
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Developed by the Department of Veterans Affairs'
+      IsControl = True
+    end
+    object lblCRC: TLabel
+      Left = 232
+      Top = 160
+      Width = 92
+      Height = 13
+      Caption = 'CRC: DDDDDDDD'
+    end
+    object lblDate: TLabel
+      Left = 97
+      Top = 160
+      Width = 82
+      Height = 13
+      Alignment = taCenter
+      Caption = 'January 30, 2000'
+    end
+    object ProgramIcon: TImage
+      Left = 176
+      Top = 8
+      Width = 145
+      Height = 73
+    end
+    object Memo1: TMemo
+      Left = 8
+      Top = 112
+      Width = 321
+      Height = 49
+      BorderStyle = bsNone
+      Lines.Strings = (
+        'Unauthorized access or use of this system and/or its data is a '
+        
+          'federal crime.  Use of all data must be in accordance with VA po' +
+          'licy '
+        'on security and privacy.')
+      ParentColor = True
+      TabOrder = 0
+    end
+  end
+  object OKButton: TButton
+    Left = 139
+    Top = 204
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/frmVistAAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/frmVistAAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/BrokerEx/frmVistAAbout.pas	(revision 1676)
@@ -0,0 +1,267 @@
+unit frmVistAAbout;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls, jpeg, jconsts, Dialogs;
+
+TYPE
+  TInteger8 = Int64;
+
+type
+  TfrmVistAAbout = class(TForm)
+    Panel1: TPanel;
+    VistaLogo: TImage;
+    lblProductName: TLabel;
+    lblVersion: TLabel;
+    lblGovStatement: TLabel;
+    OKButton: TButton;
+    lblCRC: TLabel;
+    Memo1: TMemo;
+    lblDate: TLabel;
+    ProgramIcon: TImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  procedure getfileinfo(var Version: String; var ProductName: String); virtual;
+  end;
+
+procedure ShowAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+  CONST
+    table:  ARRAY[0..255] OF DWORD =
+   ($00000000, $77073096, $EE0E612C, $990951BA,
+    $076DC419, $706AF48F, $E963A535, $9E6495A3,
+    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
+    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
+    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
+    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,
+    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
+    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116,
+    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,
+    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+
+    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,
+    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,
+    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,
+    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
+    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
+    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
+    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086,
+    $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
+    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+
+    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
+    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,
+    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
+    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
+    $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
+    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
+    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
+    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,
+    $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
+    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+
+    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,
+    $9C0906A9, $EB0E363F, $72076785, $05005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
+    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
+    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
+    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
+    $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
+    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
+    $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
+    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+  // Use CalcCRC32 as a procedure so CRCValue can be passed in but
+  // also returned.  This allows multiple calls to CalcCRC32 for
+  // the "same" CRC-32 calculation.
+  PROCEDURE CalcCRC32 (p:  pointer; ByteCount:  DWORD; VAR CRCValue:  DWORD);
+    // The following is a little cryptic (but executes very quickly).
+    // The algorithm is as follows:
+    //  1.  exclusive-or the input byte with the low-order byte of
+    //      the CRC register to get an INDEX
+    //  2.  shift the CRC register eight bits to the right
+    //  3.  exclusive-or the CRC register with the contents of
+    //      Table[INDEX]
+    //  4.  repeat steps 1 through 3 for all bytes
+
+   VAR
+    i:  DWORD;
+    q:  ^BYTE;
+  BEGIN
+    q := p;
+    FOR   i := 0 TO ByteCount-1 DO BEGIN
+      CRCvalue := (CRCvalue SHR 8)  XOR
+                  Table[ q^ XOR (CRCvalue AND $000000FF) ];
+      INC(q)
+    END
+  END {CalcCRC32};
+
+
+  // The CRC-32 value calculated here matches the one from the PKZIP program.
+  // Use MemoryStream to read file in binary mode.
+  PROCEDURE CalcFileCRC32 (FromName:  STRING; VAR CRCvalue:  DWORD;
+            VAR TotalBytes:  TInteger8;
+            VAR error:  WORD);
+    VAR
+      Stream:  TMemoryStream;
+  BEGIN
+    error := 0;
+    CRCValue := $FFFFFFFF;
+    Stream := TMemoryStream.Create;
+    TRY
+      TRY
+        Stream.LoadFromFile(FromName);
+        IF   Stream.Size > 0
+        THEN CalcCRC32 (Stream.Memory, Stream.Size, CRCvalue)
+      EXCEPT
+        ON E: EReadError DO
+         error := 1
+      END;
+
+      CRCvalue := NOT CRCvalue;
+      TotalBytes := Stream.Size
+    FINALLY
+      Stream.Free
+    END;
+  END {CalcFileCRC32};
+
+procedure TfrmVistAAbout.FormCreate(Sender: TObject);
+var
+  CRC32: DWord;
+  TotalBytes: Int64;
+  Error: Word;
+  Text: String;
+  Version: String;
+  ProductName: String;
+begin
+  CalcFileCRC32(Application.ExeName, CRC32, TotalBytes, Error);
+  lblCRC.Caption := 'CRC: ' + IntToHex(CRC32,8);
+  Text := Application.ExeName;
+  while pos('\',Text) > 0 do
+  begin
+    Text := copy(Text,pos('\',Text)+1,Length(Text));
+  end;    // while
+  Text := copy(Text,1,Length(Text)-4);
+  Caption := 'About ' + Text;
+  getfileinfo(Version, ProductName);
+  lblProductName.Caption := ProductName;
+  lblVersion.Caption := 'Version: ' + Version;
+  lblProductName.Width := Panel1.Width-10;
+  lblGovStatement.Width := Panel1.Width-10;
+  if ProgramIcon.Picture.Graphic = nil then
+  begin
+    VistALogo.Left := (Panel1.Width - VistALogo.Width) div 2;
+  end;
+end;
+
+procedure TfrmVistAAbout.GetFileInfo(var Version: String; var ProductName: String);
+var
+  VerInfoSize: DWORD;         // holds the size of the version info resource
+  GetInfoSizeJunk: DWORD;     // a junk variable, its value is ignored
+  VersionInfo: Pointer;       // points to the version info resource
+  Translation: Pointer;       // holds version info translation table
+  InfoPointer: Pointer;       // a pointer to version information
+
+  VersionInfoSize: UINT;      // holds the size of version information
+  VersionValue: string;       // holds the version info request string
+  SearchRec: TSearchRec;
+  DateTimeVal: TDateTime;
+  WriteTime: Integer;
+begin
+  {retrieve the size of the version information resource, if one exists}
+  VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName),
+                                        GetInfoSizeJunk);
+
+  {if there was a version information resource available...}
+
+  if VerInfoSize>0 then
+  begin
+    {retrieve enough memory to hold the version resource}
+    GetMem(VersionInfo, VerInfoSize);
+
+    {retrieve the version resource for the selected file}
+    GetFileVersionInfo(PChar(Application.ExeName), 0,
+                       VerInfoSize, VersionInfo);
+
+    {retrieve a pointer to the translation table}
+    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation',
+                  Translation, VersionInfoSize);
+
+    {initialize the version value request string}
+    VersionValue :='\\StringFileInfo\\'+
+                  IntToHex(LoWord(LongInt(Translation^)),4)+
+                  IntToHex(HiWord(LongInt(Translation^)),4)+
+                  '\\';
+
+    {retrieve and display the file version}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'FileVersion'), InfoPointer,
+                  VersionInfoSize);
+    Version := string(PChar(InfoPointer));
+
+    {retrieve and display the product name}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'ProductName'), InfoPointer,
+                  VersionInfoSize);
+    ProductName := string(PChar(InfoPointer));
+
+    {free the version resource memory}
+    FreeMem(VersionInfo, VerInfoSize);
+  end
+  else
+  begin
+  Version := 'Not in File';
+  ProductName := 'Not Identified In File';
+  end;
+  if findfirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
+  begin
+    WriteTime := SearchRec.Time;
+    DateTimeVal := FileDateToDateTime(WriteTime);
+    lblDate.Caption := FormatDateTime('mmmm dd, yyyy hh:nn',DateTimeVal);
+  end;
+end;
+
+procedure ShowAboutBox;
+begin
+  with TfrmVistAAbout.Create(Application) do
+    try
+      ShowModal;
+    finally
+      free;
+    end;
+end;
+
+end.
+ 
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/ReadMeForSamples.txt
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/ReadMeForSamples.txt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/ReadMeForSamples.txt	(revision 1676)
@@ -0,0 +1,9 @@
+The SilentSignOn(p13) directory under Samples contains four (4) sample programs that illustrate different aspects of patch XWB*1.1*13.  Source code is included for each of these programs.
+
+The program XWBAppHandle1 is used to illustrate the use of the StartProgSLogin method in the RpcSLogin unit.  This method is used to launch a second program (XWBAppHandle2) with a silent login using an AppHandle obtained from the server.  The AppHandle and information about the server, listener port, and Division are passed on the command line when XWBAppHandle2 is launched.  The StartProgSLogin method can also can be used to launch a non-RPCBroker related program and this can be demonstrated by entering the name of a program, and command line arguments if any, in an edit box prior to clicking the Start App2 button.  This will launch the specified program without including any broker related arguments on the command line.
+
+The program XWBAppHandle2 is used to illustrate the use of the GetCmdLine method in the RpcSLogin unit.  This method identifies command line arguments related to the RPCBroker (identified by p=, s=, h=, and d= for listener port, server, AppHandle, and Division, respectively).  If the arguments include an AppHandle, the connection to the server is attempted as well.  This application will display information about the user logged into the server.  If an attempt is made to start the application manually, a message box is displayed asking whether the user wants to login manually.  If the response is 'OK' the normal RPCBroker login screen is shown.  If the response is 'Cancel' the application terminates.
+
+The program XWBAVCodes is used to illustrate a silent login in which the Access and Verify codes are provided by the program, as opposed to being entered in the RPCBroker login screen.
+
+The program XWBOnFail is used to illustrate the different types of error handling which are available in patch XWB*1.1*13.  These include permitting the application to handle errors via a specified procedure call, to showing normal errors, to simply providing the error message for the application to examine while otherwise ignoring errors completely.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAVCodes.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAVCodes.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAVCodes.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;Speech;Indy50;vclPerfUtils5;SharedRPCBroker_R50;XWB_R50;TMSColList;osg5220;osdg5220;CPRSctrls_50;KeaBroker_R50;ZipMasterD5;ICSDEL50;TCynthesisAppUpdateD5;Fmdc_R50;CodeRush50;CR_FormPopupFix50;CR_Standard50;Aruser;XUtilsR50;XUDT_R50;XU_R50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=6
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Sample Silent Login with lmAVCodes
+FileVersion=1.1.31.6
+InternalName=a
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBAVCodes
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAVCodes.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAVCodes.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAVCodes.dpr	(revision 1676)
@@ -0,0 +1,15 @@
+program XWBAVCodes;
+
+uses
+  Forms,
+  fXWBAVCodes in 'fXWBAVCodes.pas' {Form1},
+  frmVistAAbout in 'frmVistAAbout.pas' {frmVistAAbout};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.Title := 'Test4Silent';
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle1.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle1.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle1.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=7
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept. of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Example program launching another program using the lmAppHandle silent login
+FileVersion=1.1.31.7
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBAppHandle1
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle1.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle1.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle1.dpr	(revision 1676)
@@ -0,0 +1,13 @@
+program XWBAppHandle1;
+
+uses
+  Forms,
+  fXWBAppHandle1 in 'fXWBAppHandle1.pas' {Form1};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle2.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle2.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle2.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=5
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept. of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Example program of starting an application using an AppHandle token
+FileVersion=1.1.31.5
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBAppHandle2
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle2.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle2.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBAppHandle2.dpr	(revision 1676)
@@ -0,0 +1,13 @@
+program XWBAppHandle2;
+
+uses
+  Forms,
+  fXWBAppHandle2 in 'fXWBAppHandle2.pas' {Form1};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBOnFail.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBOnFail.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBOnFail.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=31
+Build=8
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, VHA, OI, SD&D, IIS
+FileDescription=Example of available error handling mechanisms for RPCBroker
+FileVersion=1.1.31.8
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=XWBOnFail
+ProductVersion=1.1.31.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBOnFail.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBOnFail.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/XWBOnFail.dpr	(revision 1676)
@@ -0,0 +1,13 @@
+program XWBOnFail;
+
+uses
+  Forms,
+  fXWBOnFail in 'fXWBOnFail.pas' {frmXWBOnFail};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TfrmXWBOnFail, frmXWBOnFail);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAVCodes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAVCodes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAVCodes.dfm	(revision 1676)
@@ -0,0 +1,231 @@
+object Form1: TForm1
+  Left = 190
+  Top = 138
+  Width = 574
+  Height = 393
+  Caption = 
+    'XWBAVCodes - Silent Login with lmAVCodes (XWB*1.1*40 SharedRPCBr' +
+    'oker)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAccessCode: TLabel
+    Left = 24
+    Top = 71
+    Width = 79
+    Height = 13
+    Caption = 'Access Code:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblVerifyCode: TLabel
+    Left = 24
+    Top = 96
+    Width = 70
+    Height = 13
+    Caption = 'Verify Code:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblDUZ: TLabel
+    Left = 48
+    Top = 176
+    Width = 26
+    Height = 13
+    Caption = 'DUZ:'
+  end
+  object lblName: TLabel
+    Left = 48
+    Top = 216
+    Width = 31
+    Height = 13
+    Caption = 'Name:'
+  end
+  object lblDTime: TLabel
+    Left = 48
+    Top = 256
+    Width = 34
+    Height = 13
+    Caption = 'DTime:'
+  end
+  object lblUserName: TLabel
+    Left = 48
+    Top = 288
+    Width = 56
+    Height = 13
+    Caption = 'User Name:'
+  end
+  object lblServer: TLabel
+    Left = 24
+    Top = 21
+    Width = 42
+    Height = 13
+    Caption = 'Server:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblListenerPort: TLabel
+    Left = 24
+    Top = 46
+    Width = 73
+    Height = 13
+    Caption = 'ListenerPort:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object edtDUZ: TEdit
+    Left = 112
+    Top = 168
+    Width = 233
+    Height = 21
+    TabOrder = 3
+  end
+  object edtName: TEdit
+    Left = 112
+    Top = 208
+    Width = 233
+    Height = 21
+    TabOrder = 2
+  end
+  object edtDTime: TEdit
+    Left = 112
+    Top = 248
+    Width = 233
+    Height = 21
+    TabOrder = 1
+  end
+  object edtUserName: TEdit
+    Left = 112
+    Top = 280
+    Width = 233
+    Height = 21
+    TabOrder = 0
+  end
+  object btnConnect: TButton
+    Left = 175
+    Top = 128
+    Width = 75
+    Height = 25
+    Caption = 'Connect'
+    Default = True
+    TabOrder = 8
+    OnClick = btnConnectClick
+  end
+  object edtAccessCode: TEdit
+    Left = 112
+    Top = 66
+    Width = 249
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 6
+  end
+  object edtVerifyCode: TEdit
+    Left = 112
+    Top = 91
+    Width = 249
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 7
+  end
+  object btnExit: TButton
+    Left = 174
+    Top = 312
+    Width = 75
+    Height = 25
+    Caption = 'Exit'
+    TabOrder = 9
+    OnClick = btnExitClick
+  end
+  object edtServer: TEdit
+    Left = 112
+    Top = 16
+    Width = 249
+    Height = 21
+    TabOrder = 4
+  end
+  object edtListenerPort: TEdit
+    Left = 112
+    Top = 41
+    Width = 105
+    Height = 21
+    TabOrder = 5
+  end
+  object Memo1: TMemo
+    Left = 384
+    Top = 16
+    Width = 153
+    Height = 233
+    Lines.Strings = (
+      'This application provides an '
+      'example of a silent login.  The '
+      'server, Listener Port, Access '
+      'Code, and Verify Code need to '
+      'be filled in - these data would '
+      'be supplied in some manner for '
+      'a silent login (Division can also '
+      'be supplied for a multidivision '
+      'individual).  After fillng in the '
+      'information enter Return or '
+      'click on the Connect button.  '
+      'The connection should be '
+      'made without the broker login '
+      'form appearing.  User '
+      'information will be filled in for '
+      'the logged in user.')
+    TabOrder = 10
+  end
+  object MainMenu1: TMainMenu
+    Left = 24
+    Top = 144
+    object mnuFile: TMenuItem
+      Caption = '&File'
+      object mnuFileExit: TMenuItem
+        Caption = 'E&xit'
+        OnClick = mnuFileExitClick
+      end
+    end
+    object mnuHelp: TMenuItem
+      Caption = '&Help'
+      object mnuHelpAbout: TMenuItem
+        Caption = '&About'
+        OnClick = mnuHelpAboutClick
+      end
+    end
+  end
+  object brkrRPCB: TSharedRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    ListenerPort = 0
+    RpcVersion = '0'
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    OldConnectionOnly = False
+    AllowShared = True
+    RPCTimeLimit = 30
+    Left = 32
+    Top = 312
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAVCodes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAVCodes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAVCodes.pas	(revision 1676)
@@ -0,0 +1,129 @@
+unit fXWBAVCodes;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Trpcb, RpcSLogin, Menus, frmVistAAbout, SharedRPCBroker;
+
+type
+  TForm1 = class(TForm)
+    edtDUZ: TEdit;
+    edtName: TEdit;
+    edtDTime: TEdit;
+    edtUserName: TEdit;
+    btnConnect: TButton;
+    edtAccessCode: TEdit;
+    edtVerifyCode: TEdit;
+    lblAccessCode: TLabel;
+    lblVerifyCode: TLabel;
+    btnExit: TButton;
+    lblDUZ: TLabel;
+    lblName: TLabel;
+    lblDTime: TLabel;
+    lblUserName: TLabel;
+    edtServer: TEdit;
+    edtListenerPort: TEdit;
+    lblServer: TLabel;
+    lblListenerPort: TLabel;
+    Memo1: TMemo;
+    MainMenu1: TMainMenu;
+    mnuFile: TMenuItem;
+    mnuFileExit: TMenuItem;
+    mnuHelp: TMenuItem;
+    mnuHelpAbout: TMenuItem;
+    brkrRPCB: TSharedRPCBroker;
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure mnuFileExitClick(Sender: TObject);
+    procedure mnuHelpAboutClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+  Login: TVistaLogin;
+
+implementation
+
+{$R *.DFM}
+
+procedure TForm1.btnConnectClick(Sender: TObject);
+var
+  NChars: Cardinal;
+  NameBuffer: PChar;
+begin
+  if btnConnect.Caption = 'Connect' then
+  begin
+    { check data there for silent login }
+    if (edtAccessCode.Text = '') or
+       (edtVerifyCode.Text = '') or
+       (edtServer.Text = '') or
+       (edtListenerPort.Text = '') then
+         ShowMessage('The four Bold edit boxes must be filled in before the connection can be made.')
+    else
+    begin
+      { set up for silent login }
+      with BrkrRPCB do
+      begin
+        Login.AccessCode := edtAccessCode.Text;
+        Login.VerifyCode := edtVerifyCode.Text;
+        Server := edtServer.Text;
+        ListenerPort := StrToInt(edtListenerPort.Text);
+        KernelLogin := False;
+        Login.Mode := lmAVCodes;
+        Login.PromptDivision := True;
+        Connected := True;
+
+        if Connected = True then
+        begin
+          GetUserInfo(brkrRPCB);
+          edtDUZ.Text := User.DUZ;
+          edtName.Text := User.Name;
+          edtDTime.Text := User.DTime;
+
+          { Get local username as well }
+          NChars := 0;
+          GetUserName(nil,NChars);
+          NameBuffer := StrAlloc(NChars);
+          if GetUserName(NameBuffer, NChars) then
+            edtUserName.Text := StrPas(NameBuffer)
+          else
+            edtUserName.Text := 'Can''t get name';
+          btnConnect.Caption := 'Disconnect';
+          btnExit.Default := True;
+          btnConnect.Default := False;
+        end;  // if Connected = True
+      end;  // with brkrRPCB do
+    end;  // else
+  end  // if btnConnect.Caption
+  else
+  begin
+    brkrRPCB.Connected := False;
+    btnConnect.Caption := 'Connect';
+  end;
+  edtAccessCode.Text := '';
+  edtVerifyCode.Text := '';
+  Application.ProcessMessages;
+end;
+
+procedure TForm1.btnExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.mnuFileExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.mnuHelpAboutClick(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle1.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle1.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle1.dfm	(revision 1676)
@@ -0,0 +1,138 @@
+object Form1: TForm1
+  Left = 230
+  Top = 122
+  Width = 503
+  Height = 319
+  Caption = 
+    'XWBAppHandle1 -- use of lmAppHandle to start a second applicatio' +
+    'n'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblOtherProgram: TLabel
+    Left = 44
+    Top = 176
+    Width = 71
+    Height = 13
+    Caption = 'Other Program:'
+  end
+  object lblOptional: TLabel
+    Left = 52
+    Top = 192
+    Width = 45
+    Height = 13
+    Caption = '(Optional)'
+  end
+  object lblWithFull: TLabel
+    Left = 124
+    Top = 200
+    Width = 232
+    Height = 13
+    Caption = 'With Full Directory Path if not on the System Path'
+  end
+  object btnConnect: TButton
+    Left = 85
+    Top = 232
+    Width = 75
+    Height = 25
+    Caption = '&Connect'
+    TabOrder = 0
+    OnClick = btnConnectClick
+  end
+  object btnStartApp2: TButton
+    Left = 210
+    Top = 232
+    Width = 75
+    Height = 25
+    Caption = 'Start App2'
+    TabOrder = 1
+    OnClick = btnStartApp2Click
+  end
+  object edtOtherProgram: TEdit
+    Left = 124
+    Top = 168
+    Width = 233
+    Height = 21
+    TabOrder = 2
+  end
+  object Memo1: TMemo
+    Left = 31
+    Top = 8
+    Width = 433
+    Height = 153
+    Lines.Strings = (
+      
+        'This application can be used to start other programs, including ' +
+        'ones that use the '
+      
+        'RPCBroker for connection to a server using a server generated to' +
+        'ken.'
+      ''
+      
+        'To connect with the server, simply press the connect button to s' +
+        'elect a server/listener port '
+      
+        'combination, then sign in.  After you are signed in, you can sta' +
+        'rt another Broker application '
+      
+        '(XWBAppHandle2) by simply clicking on the "Start App2" button (w' +
+        'ith the Other Program '
+      'edit box empty of text).'
+      ''
+      
+        'A program such as Notepad with or without command line arguments' +
+        ', can be started at '
+      
+        'any time by entering the name (and arguments if any) in the Othe' +
+        'r Program edit box, then '
+      'clicking on the Start App2 button.'
+      '')
+    TabOrder = 3
+  end
+  object btnExit: TButton
+    Left = 335
+    Top = 232
+    Width = 75
+    Height = 25
+    Caption = 'Exit'
+    TabOrder = 4
+    OnClick = btnExitClick
+  end
+  object MainMenu1: TMainMenu
+    Left = 8
+    Top = 184
+    object File1: TMenuItem
+      Caption = '&File'
+      object Exit1: TMenuItem
+        Caption = '&E&xit'
+        OnClick = Exit1Click
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object About1: TMenuItem
+        Caption = '&About'
+        OnClick = About1Click
+      end
+    end
+  end
+  object brkrRPCB: TSharedRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    ListenerPort = 0
+    RpcVersion = '0'
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    AllowShared = True
+    RPCTimeLimit = 30
+    Left = 32
+    Top = 232
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle1.pas	(revision 1676)
@@ -0,0 +1,99 @@
+unit fXWBAppHandle1;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, RpcSlogin, Trpcb, RpcConf1, frmVistAAbout, Menus,
+  SharedRPCBroker;
+
+type
+  TForm1 = class(TForm)
+    btnConnect: TButton;
+    btnStartApp2: TButton;
+    edtOtherProgram: TEdit;
+    lblOtherProgram: TLabel;
+    lblOptional: TLabel;
+    lblWithFull: TLabel;
+    Memo1: TMemo;
+    btnExit: TButton;
+    MainMenu1: TMainMenu;
+    File1: TMenuItem;
+    Exit1: TMenuItem;
+    Help1: TMenuItem;
+    About1: TMenuItem;
+    brkrRPCB: TSharedRPCBroker;
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnStartApp2Click(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About1Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+
+implementation
+
+{$R *.DFM}
+
+
+procedure TForm1.btnConnectClick(Sender: TObject);
+var
+  Server, Port: String;
+begin
+  if btnConnect.Caption = '&Connect' then
+  begin
+    GetServerInfo(Server, Port);
+    brkrRPCB.Server := Server;
+    brkrRPCB.ListenerPort := StrToInt(Port);
+    brkrRPCB.Connected := True;
+    if brkrRPCB.Connected then
+      btnConnect.Caption := '&Disconnect';
+  end
+  else
+  begin
+    brkrRPCB.Connected := False;
+    btnConnect.Caption := '&Connect';
+  end;
+end;
+
+procedure TForm1.btnStartApp2Click(Sender: TObject);
+var
+  CurDir: String;
+begin
+  if edtOtherProgram.Text <> '' then
+  begin
+    CurDir := edtOtherProgram.Text;
+    StartProgSLogin(CurDir,nil);
+  end
+  else
+  begin
+    { Use Test2.exe and expecting it to be in the startup directory for the current application}
+    CurDir := ExtractFilePath(ParamStr(0)) + 'XWBAppHandle2.exe';
+
+    { Now start application with silent login }
+    StartProgSLogin(CurDir, brkrRPCB);
+  end;
+end;
+
+procedure TForm1.btnExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.Exit1Click(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TForm1.About1Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle2.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle2.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle2.dfm	(revision 1676)
@@ -0,0 +1,133 @@
+object Form1: TForm1
+  Left = 201
+  Top = 168
+  Width = 460
+  Height = 279
+  Caption = 'XWBAppHandle2 - Started by lmAppHandle (RPCBroker)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = True
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblDUZ: TLabel
+    Left = 54
+    Top = 17
+    Width = 23
+    Height = 13
+    Caption = 'DUZ'
+  end
+  object lblName: TLabel
+    Left = 54
+    Top = 51
+    Width = 28
+    Height = 13
+    Caption = 'Name'
+  end
+  object lblDTime: TLabel
+    Left = 54
+    Top = 84
+    Width = 31
+    Height = 13
+    Caption = 'DTime'
+  end
+  object lblDivision: TLabel
+    Left = 54
+    Top = 118
+    Width = 37
+    Height = 13
+    Caption = 'Division'
+  end
+  object lblUserName: TLabel
+    Left = 54
+    Top = 152
+    Width = 50
+    Height = 13
+    Caption = 'UserName'
+  end
+  object edtDuz: TEdit
+    Left = 118
+    Top = 8
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 0
+  end
+  object edtName: TEdit
+    Left = 118
+    Top = 42
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 2
+  end
+  object edtDTime: TEdit
+    Left = 118
+    Top = 76
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 3
+  end
+  object edtUserName: TEdit
+    Left = 118
+    Top = 143
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 4
+  end
+  object btnClose: TButton
+    Left = 188
+    Top = 192
+    Width = 75
+    Height = 25
+    Caption = 'Close'
+    Default = True
+    TabOrder = 1
+    OnClick = btnCloseClick
+  end
+  object edtDivision: TEdit
+    Left = 118
+    Top = 109
+    Width = 280
+    Height = 21
+    TabStop = False
+    TabOrder = 5
+  end
+  object MainMenu1: TMainMenu
+    Left = 8
+    Top = 40
+    object File1: TMenuItem
+      Caption = '&File'
+      object Exit1: TMenuItem
+        Caption = 'E&xit'
+        OnClick = Exit1Click
+      end
+    end
+    object About1: TMenuItem
+      Caption = '&Help'
+      object About2: TMenuItem
+        Caption = '&About'
+        OnClick = About2Click
+      end
+    end
+  end
+  object brkrRPCB: TSharedRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    ListenerPort = 0
+    RpcVersion = '0'
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    AllowShared = True
+    RPCTimeLimit = 30
+    Left = 24
+    Top = 192
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle2.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle2.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBAppHandle2.pas	(revision 1676)
@@ -0,0 +1,102 @@
+unit fXWBAppHandle2;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Trpcb, RpcSLogin, RpcConf1, frmVistAAbout, Menus,
+  SharedRPCBroker;
+
+type
+  TForm1 = class(TForm)
+    edtDuz: TEdit;
+    edtName: TEdit;
+    edtDTime: TEdit;
+    edtUserName: TEdit;
+    btnClose: TButton;
+    edtDivision: TEdit;
+    lblDUZ: TLabel;
+    lblName: TLabel;
+    lblDTime: TLabel;
+    lblDivision: TLabel;
+    lblUserName: TLabel;
+    MainMenu1: TMainMenu;
+    File1: TMenuItem;
+    Exit1: TMenuItem;
+    About1: TMenuItem;
+    About2: TMenuItem;
+    brkrRPCB: TSharedRPCBroker;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCloseClick(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About2Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+  Login: TVistaLogin;
+
+implementation
+
+{$R *.DFM}
+
+
+
+procedure TForm1.FormCreate(Sender: TObject);
+var
+  NChars: Cardinal;
+  NameBuffer: PChar;
+  Server, Port: String;
+begin
+  { check for silent login data on command line }
+  if not CheckCmdLine(brkrRPCB) then
+  begin        // Couldn't log on via command line give choice
+    if Application.MessageBox('Can''t connect by command line arguments, do you want to connect anyway?','Silent Connection Error', MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
+    begin
+      GetServerInfo(Server, Port);
+      brkrRPCB.Server := Server;
+      brkrRPCB.ListenerPort := StrToInt(Port);
+      Caption := 'XWBAppHandle2 - Started by normal sign-on'
+    end
+    else
+      halt;
+  end;
+
+  { Get and display information on logged in user }
+  GetUserInfo(brkrRPCB);
+  edtDUZ.Text := brkrRPCB.User.DUZ;
+  edtName.Text := brkrRPCB.User.Name;
+  edtDTime.Text := brkrRPCB.User.DTime;
+  edtDivision.Text := brkrRPCB.User.Division;
+
+  {also show local username }
+  NChars := 0;
+  GetUserName(nil,NChars);
+  NameBuffer := StrAlloc(NChars);
+  if GetUserName(NameBuffer, NChars) then
+    edtUserName.Text := NameBuffer
+  else
+    edtUserName.Text := 'Can''t get name';
+end;
+
+
+procedure TForm1.btnCloseClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TForm1.Exit1Click(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TForm1.About2Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBOnFail.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBOnFail.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBOnFail.dfm	(revision 1676)
@@ -0,0 +1,178 @@
+object frmXWBOnFail: TfrmXWBOnFail
+  Left = 207
+  Top = 127
+  Width = 509
+  Height = 343
+  Caption = 'XWBOnFail - Error Handling Demo (XWB*1.1*40 SharedRPCBroker)'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblLogin_ErrorText: TLabel
+    Left = 24
+    Top = 40
+    Width = 75
+    Height = 13
+    Caption = 'Login_ErrorText'
+  end
+  object btnConnect: TButton
+    Left = 213
+    Top = 256
+    Width = 75
+    Height = 25
+    Caption = 'Connect'
+    TabOrder = 0
+    OnClick = btnConnectClick
+  end
+  object rgrSelectAction: TRadioGroup
+    Left = 268
+    Top = 64
+    Width = 217
+    Height = 137
+    Caption = 'Select Action'
+    ItemIndex = 1
+    Items.Strings = (
+      'Use OnRPCBFailure property routine'
+      'Show Message Boxes'
+      'Capture Text Only')
+    TabOrder = 1
+  end
+  object btnExit: TButton
+    Left = 410
+    Top = 256
+    Width = 75
+    Height = 25
+    Caption = 'Exit'
+    TabOrder = 2
+    OnClick = btnExitClick
+  end
+  object Memo1: TMemo
+    Left = 16
+    Top = 64
+    Width = 217
+    Height = 169
+    Lines.Strings = (
+      'This is an example application to illustrate '
+      'the effects of TRPCBroker properties '
+      'related to Error Handling.'
+      ''
+      'The OnRPCBFailure property can be set '
+      'to a procedure to handle errors without '
+      'user interaction.  In the sample included '
+      'here, the error handler will save the error '
+      'message and a date/time stamp to a file '
+      'named "Error.Log" in the same directory '
+      'with the application program.  YOU WILL '
+      'NOT SEE AN ERROR MESSAGE IN '
+      'THIS CASE!'
+      ''
+      'If OnRPCBFailure property is not '
+      'assigned to a procedure, errors by default '
+      'would be shown in a message box '
+      'created by the TRPCBroker component.  '
+      'This behavior is controlled by the '
+      'ShowErrorMsgs property, with a default '
+      'of semShow (Show Message Boxes).  '
+      ''
+      'If the ShowErrorMsgs property is set to '
+      'semRaise (Don'#39't Show Message Boxes), '
+      'the error will be permitted to be handled '
+      'by a higher part of the application.  In '
+      'most cases this will produce an error '
+      'dialog box generated by the system in '
+      'general.'
+      ''
+      'If the ShowErrorMsgs property is set to '
+      'semSet (Capture Text Only), there will be '
+      'no error action taken except for the '
+      'setting of error messages into the '
+      'RPCBError and/or Login.ErrorText '
+      'properties.  In this case, the application '
+      'MUST check these properties '
+      'immediately after a call to the RPCBroker '
+      'to determine whether any errors were '
+      'encountered and to determine the action '
+      'to be taken.'
+      ''
+      'Select the type of behavior desired by '
+      'clicking on one of the options to the right.'
+      ''
+      'Then press Connect and either cancel '
+      'during the log-in dialog or generate an '
+      'error in some other manner.  If you are '
+      'connected, the button will change to '
+      'Disconnect and you can click on it to '
+      'disconnect from the server.'
+      ''
+      'Checking the check box "Use Silent Bad '
+      'Access/Verify" to the left will set the '
+      'AccessVerifyCodes property to '
+      #39'monkeysee;monkeydo'#39' which will cause '
+      'a silent login attempt and fails.'
+      '')
+    ScrollBars = ssVertical
+    TabOrder = 3
+  end
+  object edtErrorText: TEdit
+    Left = 8
+    Top = 8
+    Width = 473
+    Height = 21
+    TabOrder = 4
+    Text = 'RPCBroker_RPCBError property'
+  end
+  object edtLoginError: TEdit
+    Left = 104
+    Top = 32
+    Width = 225
+    Height = 21
+    TabOrder = 5
+    Text = 'RPCBroker_Login_ErrorText Property'
+  end
+  object cbxBadAccess: TCheckBox
+    Left = 16
+    Top = 256
+    Width = 169
+    Height = 17
+    Caption = 'Use Silent Bad Access/Verify'
+    TabOrder = 6
+  end
+  object MainMenu1: TMainMenu
+    Left = 112
+    Top = 8
+    object File1: TMenuItem
+      Caption = '&File'
+      object Exit1: TMenuItem
+        Caption = 'E&xit'
+        OnClick = Exit1Click
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object About1: TMenuItem
+        Caption = '&About'
+        OnClick = About1Click
+      end
+    end
+  end
+  object RPCB: TSharedRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    ListenerPort = 0
+    RpcVersion = '0'
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    OldConnectionOnly = False
+    AllowShared = True
+    RPCTimeLimit = 30
+    Left = 8
+    Top = 224
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBOnFail.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBOnFail.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/fXWBOnFail.pas	(revision 1676)
@@ -0,0 +1,121 @@
+unit fXWBOnFail;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Trpcb, Rpcconf1, ExtCtrls, frmVistAAbout, Menus,
+  SharedRPCBroker;
+
+type
+  TfrmXWBOnFail = class(TForm)
+    btnConnect: TButton;
+    rgrSelectAction: TRadioGroup;
+    btnExit: TButton;
+    Memo1: TMemo;
+    edtErrorText: TEdit;
+    edtLoginError: TEdit;
+    lblLogin_ErrorText: TLabel;
+    cbxBadAccess: TCheckBox;
+    MainMenu1: TMainMenu;
+    File1: TMenuItem;
+    Exit1: TMenuItem;
+    Help1: TMenuItem;
+    About1: TMenuItem;
+    RPCB: TSharedRPCBroker;
+    procedure btnConnectClick(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About1Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure MyErrorHandler(RPCBroker: TRPCBroker);
+  end;
+
+var
+  frmXWBOnFail: TfrmXWBOnFail;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmXWBOnFail.MyErrorHandler(RPCBroker: TRPCBroker);
+var
+  ErrorText: String;
+  Path: String;
+  StrLoc: TStringList;
+  NowVal: TDateTime;
+begin
+  NowVal := Now;
+  ErrorText := RPCB.RPCBError;
+  StrLoc := TStringList.Create;
+  Path := ExtractFilePath(Application.ExeName);
+  Path := Path + 'Error.Log';
+  if FileExists(Path) then
+    StrLoc.LoadFromFile(Path);
+  StrLoc.Add(FormatDateTime('mm/dd/yyyy hh:mm:ss  ',NowVal) + ErrorText);
+  StrLoc.SaveToFile(Path);
+end;
+
+procedure TfrmXWBOnFail.btnConnectClick(Sender: TObject);
+begin
+  if btnConnect.Caption = 'Connect' then
+  begin
+    edtErrorText.Text := '';   // Clear out old values
+    edtLoginError.Text := '';
+    RPCB.AccessVerifyCodes := '';
+    RPCB.KernelLogIn := True;
+    if cbxBadAccess.Checked then
+      RPCB.AccessVerifyCodes := 'monkeysee;monkeydo';
+    RPCB.OnRPCBFailure := nil;
+    RPCB.ShowErrorMsgs := semRaise;
+    case rgrSelectAction.ItemIndex of    //
+      0: RPCB.OnRPCBFailure := MyErrorHandler;
+      1: RPCB.ShowErrorMsgs := semRaise;
+      2: RPCB.ShowErrorMsgs := semQuiet;
+    end;    // case
+    try
+      RPCB.Connected := True;
+      if RPCB.Connected then
+        btnConnect.Caption := 'Disconnect';
+    finally
+      edtErrorText.Text := RPCB.RPCBError;
+      edtLoginError.Text := RPCB.LogIn.ErrorText;
+    end;
+  end
+  else
+  begin
+    RPCB.Connected := False;
+    btnConnect.Caption := 'Connect';
+  end;
+end;
+
+procedure TfrmXWBOnFail.btnExitClick(Sender: TObject);
+begin
+  halt;
+end;
+
+procedure TfrmXWBOnFail.FormCreate(Sender: TObject);
+var
+  Server: String;
+  Port: String;
+begin
+  GetServerInfo(Server, Port);
+  RPCB.Server := Server;
+  RPCB.ListenerPort := StrToInt(Port);
+end;
+
+procedure TfrmXWBOnFail.Exit1Click(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TfrmXWBOnFail.About1Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/frmVistAAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/frmVistAAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/frmVistAAbout.dfm	(revision 1676)
@@ -0,0 +1,1201 @@
+object frmVistAAbout: TfrmVistAAbout
+  Left = 279
+  Top = 106
+  BorderStyle = bsDialog
+  Caption = 'About'
+  ClientHeight = 236
+  ClientWidth = 353
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 185
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object VistaLogo: TImage
+      Left = 8
+      Top = 8
+      Width = 153
+      Height = 73
+      Center = True
+      Picture.Data = {
+        07544269746D61702A880000424D2A8800000000000036000000280000009600
+        00004D0000000100180000000000F48700000000000000000000000000000000
+        0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDFFFFFFDDDDDDCCCCCCB2B2B2CC
+        CCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0DDDDDDF1F1F1F1F1F1DDDDDDCCCC
+        CCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFC0C0C0DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDF1F1
+        F1FFFFFFF1F1F1DDDDDD999999CCCCCCF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1DDDDDDCCCCCCB2B2B2
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1F1DDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1CCCCCCB2B2B2CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1FFFFFFFFFFFFDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCCFFFFFFDDDDDDB2B2B2C0C0
+        C0FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFF1F1
+        F1F1F1F1CCCCCCFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFB2B2B2C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1DDDDDDFFFFFFC0C0C0FFFFFFF1F1F1CCCCCCF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCCCCCCCCCCCCCC
+        CCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDCCCCCCDDDDDDDDDD
+        DDCCCCCCF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDCCCCCCC0C0C0C0C0C0CCCCCCC0C0C0CCCCCCB2B2B2F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCCCCCCCCCCCCCDDDDDDC0C0
+        C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDD
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1
+        FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFC0C0C0CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDD0000FFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCC0C0C0C0C0
+        C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDD0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD
+        C0C0C0C0C0C0C0C0C0B2B2B20000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0
+        C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0CCCCCCCCCCCCDDDDDDDDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCC
+        CCC0C0C0DDDDDDF1F1F1F1F1F10000FF0000FF0000FF0000FFFFFFFFF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFC0C0C0C0C0C0CC
+        CCCCF1F1F1DDDDDDDDDDDDCCCCCCCCCCCCCCCCCCB2B2B2F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        DDDDDDDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1
+        F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFCCCCCC
+        DDDDDDF1F1F1FFFFFFDDDDDDCCCCCCB2B2B2DDDDDDB2B2B2C0C0C0F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1DDDDDDF1F1
+        F1F1F1F1B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFF1F1F1DD
+        DDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1
+        F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1CCCCCCB2B2B2DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFF
+        FFFFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFF1F1F1C0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFDDDDDD
+        CCCCCCC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1B2B2B2C0C0C0CCCCCCDDDDDDFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFF
+        FFFFFFFFFFFFFFDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0
+        C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFDDDD
+        DD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCCCCCCCDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDFFFFFFF1F1F1DD
+        DDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF999999C0C0C0FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDCCCCCCFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2DDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFDDDDDDC0C0C0C0C0C0CCCCCCDDDDDDC0C0C0F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1FFFFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFCCCCCCCCCCCCFFFFFFDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2F1F1F1
+        FFFFFFDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFC0C0C0B2B2B2CCCCCCF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDD
+        DDFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCB2B2B2C0C0C0CCCCCCF1F1F1FF
+        FFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0FFFFFFDDDDDDF1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDD
+        DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCC0C0C0FFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1CCCCCCB2B2B2CCCCCCC0C0C0CCCCCCF1F1F1F1F1F1F1F1F1DDDD
+        DDFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0DDDDDDFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCDDDDDDF1F1F1F1F1F1CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0C0C0FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFCCCCCCC0C0C0B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2C0C0C0CCCCCCCCCCCCDDDDDDC0C0C0C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1
+        F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1B2B2B2C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0
+        C0C0F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        B2B2B2CCCCCCFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD999999C0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0CCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1CCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDCCCC
+        CCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCCCCCCCDDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFF1F1F1DD
+        DDDDCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDCCCCCCB2B2B2F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDC0
+        C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDDDDDDDDDDDDC0C0C0DDDDDD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCCCCCCCDDDDDDDDDDDDC0C0C0B2B2B2CCCCCCF1F1F1FFFFFF
+        F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDB2B2B2CCCCCCFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1CCCCCCC0C0C00000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0
+        999999DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1FFFFFFF1
+        F1F1DDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCFFFFFFF1F1F1DDDDDDC0C0C0B2B2B2DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1
+        CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFCCCCCCCCCCCCDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDD
+        DDC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDD
+        DDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCCCCCC
+        CCCCCCCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDD
+        DDCCCCCCF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDCCCCCCC0C0C0C0C0C0DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0CCCCCCF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DD
+        DDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD999999B2B2B2DD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0DDDDDDFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1DDDDDDF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCDDDDDDCCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1
+        F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCC0
+        C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1DDDDDDF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFCCCCCCCCCCCCCCCCCCFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDF1F1F1FFFFFF
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDF1F1
+        F1F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1
+        F1F1F1F1F1FFFFFFDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDC0C0C0CCCCCCB2B2B2F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCC0C0C0DD
+        DDDDDDDDDDCCCCCCCCCCCC999999DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDD
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFF
+        FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DD
+        DDDDC0C0C0C0C0C0B2B2B2F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDC0C0C0
+        DDDDDDF1F1F1CCCCCCCCCCCCC0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1CCCCCCDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCCCCCC
+        CCDDDDDDF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0CCCCCCDDDDDDCCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFC0C0C0F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDDDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1CCCCCCC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF8000008000
+        00800000800000800000800000800000800000800000FFFFFFC0C0C0DDDDDDCC
+        CCCCDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1800000
+        800000800000DDDDDDCCCCCCC0C0C0C0C0C0DDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDD
+        DDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFF
+        FFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF8000008000008000
+        00800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000800000800000800000800000800000800000DDDDDD
+        F1F1F1DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1800000800000800000C0C0C0C0C0C0DDDDDDF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFF800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1800000800000800000800000CCCCCCFFFFFFFFFFFFF1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1FFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1DDDDDD800000800000800000800000FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFCCCCCCDDDDDDCCCCCCDDDDDDC0C0C0DDDDDDFFFFFFFFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCB2B2B2C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDD
+        DDDDDDDDF1F1F1F1F1F1F1F1F1800000800000800000DDDDDDF1F1F1DDDDDDF1
+        F1F1F1F1F1800000800000800000800000F1F1F1DDDDDDDDDDDDDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1800000800000800000F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDD999999B2B2B2F1F1F1DDDDDDDDDDDD800000800000800000FF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCC
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0CCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F1800000800000800000DDDDDD
+        DDDDDDF1F1F1DDDDDD800000800000800000800000F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000F1F1F1C0C0C0B2B2B2DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1800000800000
+        800000800000F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCC999999CCCCCCF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F18000008000
+        00800000C0C0C0CCCCCCC0C0C0C0C0C0800000800000800000F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        800000800000800000CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDD
+        DD800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFF800000800000800000
+        DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFF
+        FFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0
+        C0C0C0C0C0C0C0C0CCCCCC800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFFFF
+        FFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0CCCCCC0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFF800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD800000800000800000DDDDDDC0C0C0F1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFF1F1F1DDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0DD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDD
+        DDDDDDF1F1F1CCCCCCCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCB2B2B2CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFF
+        F1F1F1FFFFFFFFFFFF800000800000800000800000800000800000F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF800000800000800000C0
+        C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD800000800000800000FFFFFF
+        FFFFFFFFFFFFFFFFFFC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCF1F1
+        F1FFFFFF800000800000800000800000800000800000800000800000DDDDDDDD
+        DDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        800000800000F1F1F1F1F1F1DDDDDDCCCCCCCCCCCCDDDDDDF1F1F1F1F1F10000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDDF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFCCCCCCCCCCCCDDDDDDCCCCCC8000008000008000
+        00FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCDD
+        DDDDF1F1F1800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1
+        F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDDDDDDDDDD
+        DDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F180
+        0000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        8000008000008000008000008000008000008000008000008000008000008000
+        00F1F1F1FFFFFFF1F1F1B2B2B2C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F100
+        00FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1FFFFFF800000800000800000F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1800000800000800000800000800000800000800000800000F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0C0C0C0F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FFFFFFFF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFF1F1
+        F1F1F1F1F1F1F1FFFFFF800000800000800000800000DDDDDDC0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1B2B2B2C0C0C0CCCCCCDDDDDD0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000
+        800000FFFFFFF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCC999999F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDD
+        DDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC0000FF00
+        00FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDD8000008000
+        00F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFF800000800000800000F1F1F1F1
+        F1F1DDDDDDC0C0C0CCCCCCCCCCCCFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000
+        800000800000F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FF800000800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDD
+        DDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1CCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1
+        F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F10000FF0000FF0000FFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFF
+        FFDDDDDDF1F1F1F1F1F10000FF0000FF0000FFB2B2B2C0C0C0DDDDDDF1F1F180
+        0000800000800000FFFFFFFFFFFFF1F1F1F1F1F1FFFFFF800000800000800000
+        800000DDDDDDB2B2B2CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCC
+        CC800000800000800000F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF800000800000800000F1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDCCCCCCCC
+        CCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCCCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFC0C0C0C0C0C0B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FFCCCCCCF1
+        F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFCCCCCCDDDDDDF1F1F1
+        F1F1F1800000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFFF1F1F18000
+        00800000800000F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDD
+        999999DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1CCCCCCB2B2B2DDDDDDFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFF800000800000800000FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000800000800000800000FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0
+        C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCC0C0C0CC
+        CCCCFFFFFFF1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFF1F1F1FFFFFFFFFFFF800000800000800000DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F18000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000FFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000800000800000800000F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1B2B2B20000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCC999999B2B2B2
+        F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDD
+        DDC0C0C0C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDD8000008000008000
+        00DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000800000800000800000800000800000800000800000800000FFFFFFF1F1F1
+        F1F1F1FFFFFFFFFFFF8000008000008000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000800000800000F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C00000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1B2B2B2CCCC
+        CCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0B2
+        B2B2CCCCCCDDDDDDFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDD80000080
+        0000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDD800000800000800000800000800000800000800000FFFFFFF1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDD
+        F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1
+        F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDC0C0C0DDDDDDC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1
+        F1F1C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCC
+        CCCCCCCCCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDD
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC
+        DDDDDDC0C0C0CCCCCCDDDDDDC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1
+        F1DDDDDDCCCCCCDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDCCCCCCC0C0C0DDDDDDCCCCCCC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCC0C0C0DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2CCCC
+        CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1DDDD
+        DDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCDD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDCCCCCCB2B2B2C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CC
+        CCCCCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCDDDDDDF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000}
+      Stretch = True
+      IsControl = True
+    end
+    object lblProductName: TLabel
+      Left = 5
+      Top = 80
+      Width = 68
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Product Name'
+      IsControl = True
+    end
+    object lblVersion: TLabel
+      Left = 8
+      Top = 160
+      Width = 74
+      Height = 13
+      Caption = 'Version: 1.1.1.1'
+      IsControl = True
+    end
+    object lblGovStatement: TLabel
+      Left = 5
+      Top = 96
+      Width = 231
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Developed by the Department of Veterans Affairs'
+      IsControl = True
+    end
+    object lblCRC: TLabel
+      Left = 232
+      Top = 160
+      Width = 92
+      Height = 13
+      Caption = 'CRC: DDDDDDDD'
+    end
+    object lblDate: TLabel
+      Left = 97
+      Top = 160
+      Width = 82
+      Height = 13
+      Alignment = taCenter
+      Caption = 'January 30, 2000'
+    end
+    object ProgramIcon: TImage
+      Left = 176
+      Top = 8
+      Width = 145
+      Height = 73
+    end
+    object Memo1: TMemo
+      Left = 8
+      Top = 112
+      Width = 321
+      Height = 49
+      BorderStyle = bsNone
+      Lines.Strings = (
+        'Unauthorized access or use of this system and/or its data is a '
+        
+          'federal crime.  Use of all data must be in accordance with VA po' +
+          'licy '
+        'on security and privacy.')
+      ParentColor = True
+      TabOrder = 0
+    end
+  end
+  object OKButton: TButton
+    Left = 139
+    Top = 204
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/frmVistAAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/frmVistAAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Samples/SharedRPCBroker/SilentSignOn/frmVistAAbout.pas	(revision 1676)
@@ -0,0 +1,267 @@
+unit frmVistAAbout;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls, jpeg, jconsts, Dialogs;
+
+TYPE
+  TInteger8 = Int64;
+
+type
+  TfrmVistAAbout = class(TForm)
+    Panel1: TPanel;
+    VistaLogo: TImage;
+    lblProductName: TLabel;
+    lblVersion: TLabel;
+    lblGovStatement: TLabel;
+    OKButton: TButton;
+    lblCRC: TLabel;
+    Memo1: TMemo;
+    lblDate: TLabel;
+    ProgramIcon: TImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  procedure getfileinfo(var Version: String; var ProductName: String); virtual;
+  end;
+
+procedure ShowAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+  CONST
+    table:  ARRAY[0..255] OF DWORD =
+   ($00000000, $77073096, $EE0E612C, $990951BA,
+    $076DC419, $706AF48F, $E963A535, $9E6495A3,
+    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
+    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
+    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
+    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,
+    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
+    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116,
+    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,
+    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+
+    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,
+    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,
+    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,
+    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
+    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
+    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
+    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086,
+    $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
+    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+
+    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
+    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,
+    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
+    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
+    $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
+    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
+    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
+    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,
+    $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
+    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+
+    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,
+    $9C0906A9, $EB0E363F, $72076785, $05005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
+    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
+    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
+    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
+    $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
+    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
+    $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
+    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+  // Use CalcCRC32 as a procedure so CRCValue can be passed in but
+  // also returned.  This allows multiple calls to CalcCRC32 for
+  // the "same" CRC-32 calculation.
+  PROCEDURE CalcCRC32 (p:  pointer; ByteCount:  DWORD; VAR CRCValue:  DWORD);
+    // The following is a little cryptic (but executes very quickly).
+    // The algorithm is as follows:
+    //  1.  exclusive-or the input byte with the low-order byte of
+    //      the CRC register to get an INDEX
+    //  2.  shift the CRC register eight bits to the right
+    //  3.  exclusive-or the CRC register with the contents of
+    //      Table[INDEX]
+    //  4.  repeat steps 1 through 3 for all bytes
+
+   VAR
+    i:  DWORD;
+    q:  ^BYTE;
+  BEGIN
+    q := p;
+    FOR   i := 0 TO ByteCount-1 DO BEGIN
+      CRCvalue := (CRCvalue SHR 8)  XOR
+                  Table[ q^ XOR (CRCvalue AND $000000FF) ];
+      INC(q)
+    END
+  END {CalcCRC32};
+
+
+  // The CRC-32 value calculated here matches the one from the PKZIP program.
+  // Use MemoryStream to read file in binary mode.
+  PROCEDURE CalcFileCRC32 (FromName:  STRING; VAR CRCvalue:  DWORD;
+            VAR TotalBytes:  TInteger8;
+            VAR error:  WORD);
+    VAR
+      Stream:  TMemoryStream;
+  BEGIN
+    error := 0;
+    CRCValue := $FFFFFFFF;
+    Stream := TMemoryStream.Create;
+    TRY
+      TRY
+        Stream.LoadFromFile(FromName);
+        IF   Stream.Size > 0
+        THEN CalcCRC32 (Stream.Memory, Stream.Size, CRCvalue)
+      EXCEPT
+        ON E: EReadError DO
+         error := 1
+      END;
+
+      CRCvalue := NOT CRCvalue;
+      TotalBytes := Stream.Size
+    FINALLY
+      Stream.Free
+    END;
+  END {CalcFileCRC32};
+
+procedure TfrmVistAAbout.FormCreate(Sender: TObject);
+var
+  CRC32: DWord;
+  TotalBytes: Int64;
+  Error: Word;
+  Text: String;
+  Version: String;
+  ProductName: String;
+begin
+  CalcFileCRC32(Application.ExeName, CRC32, TotalBytes, Error);
+  lblCRC.Caption := 'CRC: ' + IntToHex(CRC32,8);
+  Text := Application.ExeName;
+  while pos('\',Text) > 0 do
+  begin
+    Text := copy(Text,pos('\',Text)+1,Length(Text));
+  end;    // while
+  Text := copy(Text,1,Length(Text)-4);
+  Caption := 'About ' + Text;
+  getfileinfo(Version, ProductName);
+  lblProductName.Caption := ProductName;
+  lblVersion.Caption := 'Version: ' + Version;
+  lblProductName.Width := Panel1.Width-10;
+  lblGovStatement.Width := Panel1.Width-10;
+  if ProgramIcon.Picture.Graphic = nil then
+  begin
+    VistALogo.Left := (Panel1.Width - VistALogo.Width) div 2;
+  end;
+end;
+
+procedure TfrmVistAAbout.GetFileInfo(var Version: String; var ProductName: String);
+var
+  VerInfoSize: DWORD;         // holds the size of the version info resource
+  GetInfoSizeJunk: DWORD;     // a junk variable, its value is ignored
+  VersionInfo: Pointer;       // points to the version info resource
+  Translation: Pointer;       // holds version info translation table
+  InfoPointer: Pointer;       // a pointer to version information
+
+  VersionInfoSize: UINT;      // holds the size of version information
+  VersionValue: string;       // holds the version info request string
+  SearchRec: TSearchRec;
+  DateTimeVal: TDateTime;
+  WriteTime: Integer;
+begin
+  {retrieve the size of the version information resource, if one exists}
+  VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName),
+                                        GetInfoSizeJunk);
+
+  {if there was a version information resource available...}
+
+  if VerInfoSize>0 then
+  begin
+    {retrieve enough memory to hold the version resource}
+    GetMem(VersionInfo, VerInfoSize);
+
+    {retrieve the version resource for the selected file}
+    GetFileVersionInfo(PChar(Application.ExeName), 0,
+                       VerInfoSize, VersionInfo);
+
+    {retrieve a pointer to the translation table}
+    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation',
+                  Translation, VersionInfoSize);
+
+    {initialize the version value request string}
+    VersionValue :='\\StringFileInfo\\'+
+                  IntToHex(LoWord(LongInt(Translation^)),4)+
+                  IntToHex(HiWord(LongInt(Translation^)),4)+
+                  '\\';
+
+    {retrieve and display the file version}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'FileVersion'), InfoPointer,
+                  VersionInfoSize);
+    Version := string(PChar(InfoPointer));
+
+    {retrieve and display the product name}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'ProductName'), InfoPointer,
+                  VersionInfoSize);
+    ProductName := string(PChar(InfoPointer));
+
+    {free the version resource memory}
+    FreeMem(VersionInfo, VerInfoSize);
+  end
+  else
+  begin
+  Version := 'Not in File';
+  ProductName := 'Not Identified In File';
+  end;
+  if findfirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
+  begin
+    WriteTime := SearchRec.Time;
+    DateTimeVal := FileDateToDateTime(WriteTime);
+    lblDate.Caption := FormatDateTime('mmmm dd, yyyy hh:nn',DateTimeVal);
+  end;
+end;
+
+procedure ShowAboutBox;
+begin
+  with TfrmVistAAbout.Create(Application) do
+    try
+      ShowModal;
+    finally
+      free;
+    end;
+end;
+
+end.
+ 
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/RPCSharedBrokerSessionMgr1_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/RPCSharedBrokerSessionMgr1_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/RPCSharedBrokerSessionMgr1_TLB.pas	(revision 1676)
@@ -0,0 +1,867 @@
+unit RPCSharedBrokerSessionMgr1_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.88.1.0.1.0  $
+// File generated on 1/25/2002 11:58:49 AM from Type Library described below.
+
+// *************************************************************************//
+// NOTE:                                                                      
+// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
+// which return objects that may need to be explicitly created via a function 
+// call prior to any access via the property. These items have been disabled  
+// in order to prevent accidental use from within the object inspector. You   
+// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
+// removing them from the $IFDEF blocks. However, such items must still be    
+// programmatically created via a method of the appropriate CoClass before    
+// they can be used.                                                          
+// ************************************************************************ //
+// Type Lib: D:\Development\RPCSharedBroker\Exe1\RPCSharedBrokerSessionMgr1.exe (1)
+// IID\LCID: {1F7D1EB0-E54F-46F0-B485-2D56743EBB70}\0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// Errors:
+//   Error creating palette bitmap of (TSharedBroker) : Invalid GUID format
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+interface
+
+uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  RPCSharedBrokerSessionMgr1MajorVersion = 1;
+  RPCSharedBrokerSessionMgr1MinorVersion = 0;
+
+  LIBID_RPCSharedBrokerSessionMgr1: TGUID = '{1F7D1EB0-E54F-46F0-B485-2D56743EBB70}';
+
+  IID_ISharedBroker: TGUID = '{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}';
+  DIID_ISharedBrokerEvents: TGUID = '{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}';
+  CLASS_SharedBroker: TGUID = '{EB44A5CD-1871-429F-A5BC-19C71B722182}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum ISharedBrokerErrorCode
+type
+  ISharedBrokerErrorCode = TOleEnum;
+const
+  GeneralFailure = $00000000;
+  Success = $00000001;
+  UniqueRpcIdDoesNotExist = $00000002;
+  UniqueClientIdDoesNotExist = $00000003;
+  RpcHistoryIndexOutOfRange = $00000004;
+  RpcHistoryNotEnabled = $00000005;
+  CouldNotSetContext = $00000006;
+  CouldNotConnect = $00000007;
+  ClientIndexOutOfRange = $00000008;
+  NilClientPointer = $00000009;
+  ConnectionIndexOutOfRange = $0000000A;
+
+// Constants for enum IRegistryRootEnum
+type
+  IRegistryRootEnum = TOleEnum;
+const
+  HKCR = $00000000;
+  HKCU = $00000001;
+  HKLM = $00000002;
+  HKU = $00000003;
+  HKCC = $00000004;
+  HKDD = $00000005;
+
+// Constants for enum ISharedBrokerConnection
+type
+  ISharedBrokerConnection = TOleEnum;
+const
+  Failed = $00000000;
+  New = $00000001;
+  Shared = $00000002;
+  Debug = $00000003;
+
+// Constants for enum ISharedBrokerClient
+type
+  ISharedBrokerClient = TOleEnum;
+const
+  BrokerClient = $00000000;
+  DebuggerClient = $00000001;
+
+// Constants for enum ISharedBrokerShowErrorMsgs
+type
+  ISharedBrokerShowErrorMsgs = TOleEnum;
+const
+  isemRaise = $00000000;
+  isemQuiet = $00000001;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  ISharedBroker = interface;
+  ISharedBrokerDisp = dispinterface;
+  ISharedBrokerEvents = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  SharedBroker = ISharedBroker;
+
+
+// *********************************************************************//
+// Interface: ISharedBroker
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}
+// *********************************************************************//
+  ISharedBroker = interface(IDispatch)
+    ['{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}']
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode; safecall;
+    function  BrokerDisconnect: ISharedBrokerErrorCode; safecall;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode; safecall;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; safecall;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode; safecall;
+    function  Get_RpcVersion: WideString; safecall;
+    procedure Set_RpcVersion(const version: WideString); safecall;
+    function  Get_RpcHistoryEnabled: WordBool; safecall;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool); safecall;
+    function  Get_PerClientRpcHistoryLimit: Integer; safecall;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer); safecall;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  Get_CurrentContext: WideString; safecall;
+    function  Get_User: WideString; safecall;
+    function  Get_Login: WideString; safecall;
+    procedure Set_Login(const Value: WideString); safecall;
+    function  Get_RpcbError: WideString; safecall;
+    function  Get_Socket: Integer; safecall;
+    function  Get_KernelLogin: WordBool; safecall;
+    procedure Set_KernelLogin(Value: WordBool); safecall;
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs; safecall;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs); safecall;
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property CurrentContext: WideString read Get_CurrentContext;
+    property User: WideString read Get_User;
+    property Login: WideString read Get_Login write Set_Login;
+    property RpcbError: WideString read Get_RpcbError;
+    property Socket: Integer read Get_Socket;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISharedBrokerDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}
+// *********************************************************************//
+  ISharedBrokerDisp = dispinterface
+    ['{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}']
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode; dispid 1;
+    function  BrokerDisconnect: ISharedBrokerErrorCode; dispid 2;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode; dispid 3;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; dispid 4;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode; dispid 5;
+    property RpcVersion: WideString dispid 7;
+    property RpcHistoryEnabled: WordBool dispid 6;
+    property PerClientRpcHistoryLimit: Integer dispid 8;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode; dispid 10;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode; dispid 11;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode; dispid 12;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode; dispid 13;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode; dispid 14;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode; dispid 15;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode; dispid 16;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode; dispid 17;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode; dispid 18;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode; dispid 19;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode; dispid 20;
+    property CurrentContext: WideString readonly dispid 9;
+    property User: WideString readonly dispid 22;
+    property Login: WideString dispid 23;
+    property RpcbError: WideString readonly dispid 24;
+    property Socket: Integer readonly dispid 25;
+    property KernelLogin: WordBool dispid 26;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs dispid 27;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISharedBrokerEvents
+// Flags:     (4096) Dispatchable
+// GUID:      {CBEA7167-4F9B-465A-B82E-4CEBDF933C35}
+// *********************************************************************//
+  ISharedBrokerEvents = dispinterface
+    ['{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}']
+    procedure OnLogout; dispid 1;
+    procedure OnRpcCallRecorded(uniqueRpcId: SYSINT); dispid 2;
+    procedure OnClientConnect(UniqueClientId: SYSINT; Connection: ISharedBrokerConnection); dispid 3;
+    procedure OnClientDisconnect(UniqueClientId: SYSINT); dispid 4;
+    procedure OnContextChanged(connectionIndex: SYSINT; const NewContext: WideString); dispid 5;
+    procedure OnRPCBFailure(const ErrorText: WideString); dispid 6;
+    procedure OnLoginError(const ErrorText: WideString); dispid 7;
+    procedure OnConnectionDropped(connectionIndex: SYSINT; const ErrorText: WideString); dispid 8;
+  end;
+
+// *********************************************************************//
+// The Class CoSharedBroker provides a Create and CreateRemote method to          
+// create instances of the default interface ISharedBroker exposed by              
+// the CoClass SharedBroker. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoSharedBroker = class
+    class function Create: ISharedBroker;
+    class function CreateRemote(const MachineName: string): ISharedBroker;
+  end;
+
+  TSharedBrokerOnRpcCallRecorded = procedure(Sender: TObject; uniqueRpcId: SYSINT) of object;
+  TSharedBrokerOnClientConnect = procedure(Sender: TObject; UniqueClientId: SYSINT; 
+                                                            Connection: ISharedBrokerConnection) of object;
+  TSharedBrokerOnClientDisconnect = procedure(Sender: TObject; UniqueClientId: SYSINT) of object;
+  TSharedBrokerOnContextChanged = procedure(Sender: TObject; connectionIndex: SYSINT; 
+                                                             var NewContext: OleVariant) of object;
+  TSharedBrokerOnRPCBFailure = procedure(Sender: TObject; var ErrorText: OleVariant) of object;
+  TSharedBrokerOnLoginError = procedure(Sender: TObject; var ErrorText: OleVariant) of object;
+  TSharedBrokerOnConnectionDropped = procedure(Sender: TObject; connectionIndex: SYSINT; 
+                                                                var ErrorText: OleVariant) of object;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TSharedBroker
+// Help String      : SharedBroker Object
+// Default Interface: ISharedBroker
+// Def. Intf. DISP? : No
+// Event   Interface: ISharedBrokerEvents
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TSharedBrokerProperties= class;
+{$ENDIF}
+  TSharedBroker = class(TOleServer)
+  private
+    FOnLogout: TNotifyEvent;
+    FOnRpcCallRecorded: TSharedBrokerOnRpcCallRecorded;
+    FOnClientConnect: TSharedBrokerOnClientConnect;
+    FOnClientDisconnect: TSharedBrokerOnClientDisconnect;
+    FOnContextChanged: TSharedBrokerOnContextChanged;
+    FOnRPCBFailure: TSharedBrokerOnRPCBFailure;
+    FOnLoginError: TSharedBrokerOnLoginError;
+    FOnConnectionDropped: TSharedBrokerOnConnectionDropped;
+    FIntf:        ISharedBroker;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TSharedBrokerProperties;
+    function      GetServerProperties: TSharedBrokerProperties;
+{$ENDIF}
+    function      GetDefaultInterface: ISharedBroker;
+  protected
+    procedure InitServerData; override;
+    procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
+    function  Get_RpcVersion: WideString;
+    procedure Set_RpcVersion(const version: WideString);
+    function  Get_RpcHistoryEnabled: WordBool;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool);
+    function  Get_PerClientRpcHistoryLimit: Integer;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer);
+    function  Get_CurrentContext: WideString;
+    function  Get_User: WideString;
+    function  Get_Login: WideString;
+    procedure Set_Login(const Value: WideString);
+    function  Get_RpcbError: WideString;
+    function  Get_Socket: Integer;
+    function  Get_KernelLogin: WordBool;
+    procedure Set_KernelLogin(Value: WordBool);
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: ISharedBroker);
+    procedure Disconnect; override;
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode;
+    function  BrokerDisconnect: ISharedBrokerErrorCode;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode;
+    property  DefaultInterface: ISharedBroker read GetDefaultInterface;
+    property CurrentContext: WideString read Get_CurrentContext;
+    property User: WideString read Get_User;
+    property RpcbError: WideString read Get_RpcbError;
+    property Socket: Integer read Get_Socket;
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property Login: WideString read Get_Login write Set_Login;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TSharedBrokerProperties read GetServerProperties;
+{$ENDIF}
+    property OnLogout: TNotifyEvent read FOnLogout write FOnLogout;
+    property OnRpcCallRecorded: TSharedBrokerOnRpcCallRecorded read FOnRpcCallRecorded write FOnRpcCallRecorded;
+    property OnClientConnect: TSharedBrokerOnClientConnect read FOnClientConnect write FOnClientConnect;
+    property OnClientDisconnect: TSharedBrokerOnClientDisconnect read FOnClientDisconnect write FOnClientDisconnect;
+    property OnContextChanged: TSharedBrokerOnContextChanged read FOnContextChanged write FOnContextChanged;
+    property OnRPCBFailure: TSharedBrokerOnRPCBFailure read FOnRPCBFailure write FOnRPCBFailure;
+    property OnLoginError: TSharedBrokerOnLoginError read FOnLoginError write FOnLoginError;
+    property OnConnectionDropped: TSharedBrokerOnConnectionDropped read FOnConnectionDropped write FOnConnectionDropped;
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TSharedBroker
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TSharedBrokerProperties = class(TPersistent)
+  private
+    FServer:    TSharedBroker;
+    function    GetDefaultInterface: ISharedBroker;
+    constructor Create(AServer: TSharedBroker);
+  protected
+    function  Get_RpcVersion: WideString;
+    procedure Set_RpcVersion(const version: WideString);
+    function  Get_RpcHistoryEnabled: WordBool;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool);
+    function  Get_PerClientRpcHistoryLimit: Integer;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer);
+    function  Get_CurrentContext: WideString;
+    function  Get_User: WideString;
+    function  Get_Login: WideString;
+    procedure Set_Login(const Value: WideString);
+    function  Get_RpcbError: WideString;
+    function  Get_Socket: Integer;
+    function  Get_KernelLogin: WordBool;
+    procedure Set_KernelLogin(Value: WordBool);
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+  public
+    property DefaultInterface: ISharedBroker read GetDefaultInterface;
+  published
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property Login: WideString read Get_Login write Set_Login;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  end;
+{$ENDIF}
+
+
+// procedure Register;
+
+implementation
+
+uses ComObj;
+
+class function CoSharedBroker.Create: ISharedBroker;
+begin
+  Result := CreateComObject(CLASS_SharedBroker) as ISharedBroker;
+end;
+
+class function CoSharedBroker.CreateRemote(const MachineName: string): ISharedBroker;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_SharedBroker) as ISharedBroker;
+end;
+
+procedure TSharedBroker.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{EB44A5CD-1871-429F-A5BC-19C71B722182}';
+    IntfIID:   '{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}';
+    EventIID:  '{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TSharedBroker.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    ConnectEvents(punk);
+    Fintf:= punk as ISharedBroker;
+  end;
+end;
+
+procedure TSharedBroker.ConnectTo(svrIntf: ISharedBroker);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+  ConnectEvents(FIntf);
+end;
+
+procedure TSharedBroker.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    DisconnectEvents(FIntf);
+    FIntf := nil;
+  end;
+end;
+
+function TSharedBroker.GetDefaultInterface: ISharedBroker;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TSharedBroker.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TSharedBrokerProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TSharedBroker.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TSharedBroker.GetServerProperties: TSharedBrokerProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+procedure TSharedBroker.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
+begin
+  case DispID of
+    -1: Exit;  // DISPID_UNKNOWN
+   1: if Assigned(FOnLogout) then
+            FOnLogout(Self);
+   2: if Assigned(FOnRpcCallRecorded) then
+            FOnRpcCallRecorded(Self, Params[0] {SYSINT});
+   3: if Assigned(FOnClientConnect) then
+            FOnClientConnect(Self, Params[0] {SYSINT}, Params[1] {ISharedBrokerConnection});
+   4: if Assigned(FOnClientDisconnect) then
+            FOnClientDisconnect(Self, Params[0] {SYSINT});
+   5: if Assigned(FOnContextChanged) then
+            FOnContextChanged(Self, Params[0] {SYSINT}, Params[1] {const WideString});
+   6: if Assigned(FOnRPCBFailure) then
+            FOnRPCBFailure(Self, Params[0] {const WideString});
+   7: if Assigned(FOnLoginError) then
+            FOnLoginError(Self, Params[0] {const WideString});
+   8: if Assigned(FOnConnectionDropped) then
+            FOnConnectionDropped(Self, Params[0] {SYSINT}, Params[1] {const WideString});
+  end; {case DispID}
+end;
+
+function  TSharedBroker.Get_RpcVersion: WideString;
+begin
+  Result := DefaultInterface.Get_RpcVersion;
+end;
+
+procedure TSharedBroker.Set_RpcVersion(const version: WideString);
+begin
+  DefaultInterface.Set_RpcVersion(version);
+end;
+
+function  TSharedBroker.Get_RpcHistoryEnabled: WordBool;
+begin
+  Result := DefaultInterface.Get_RpcHistoryEnabled;
+end;
+
+procedure TSharedBroker.Set_RpcHistoryEnabled(enabled: WordBool);
+begin
+  DefaultInterface.Set_RpcHistoryEnabled(enabled);
+end;
+
+function  TSharedBroker.Get_PerClientRpcHistoryLimit: Integer;
+begin
+  Result := DefaultInterface.Get_PerClientRpcHistoryLimit;
+end;
+
+procedure TSharedBroker.Set_PerClientRpcHistoryLimit(limit: Integer);
+begin
+  DefaultInterface.Set_PerClientRpcHistoryLimit(limit);
+end;
+
+function  TSharedBroker.Get_CurrentContext: WideString;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TSharedBroker.Get_User: WideString;
+begin
+  Result := DefaultInterface.Get_User;
+end;
+
+function  TSharedBroker.Get_Login: WideString;
+begin
+  Result := DefaultInterface.Get_Login;
+end;
+
+procedure TSharedBroker.Set_Login(const Value: WideString);
+begin
+  DefaultInterface.Set_Login(Value);
+end;
+
+function  TSharedBroker.Get_RpcbError: WideString;
+begin
+  Result := DefaultInterface.Get_RpcbError;
+end;
+
+function  TSharedBroker.Get_Socket: Integer;
+begin
+  Result := DefaultInterface.Get_Socket;
+end;
+
+function  TSharedBroker.Get_KernelLogin: WordBool;
+begin
+  Result := DefaultInterface.Get_KernelLogin;
+end;
+
+procedure TSharedBroker.Set_KernelLogin(Value: WordBool);
+begin
+  DefaultInterface.Set_KernelLogin(Value);
+end;
+
+function  TSharedBroker.Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+begin
+  Result := DefaultInterface.Get_ShowErrorMsgs;
+end;
+
+procedure TSharedBroker.Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+begin
+  DefaultInterface.Set_ShowErrorMsgs(Value);
+end;
+
+function  TSharedBroker.BrokerConnect(const ClientName: WideString; 
+                                      ConnectionType: ISharedBrokerClient; 
+                                      const ServerPort: WideString; WantDebug: WordBool; 
+                                      AllowShared: WordBool; KernelLogin: WordBool; 
+                                      ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                                      var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                                      out ErrorMsg: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerConnect(ClientName, ConnectionType, ServerPort, WantDebug, 
+                                           AllowShared, KernelLogin, ShowErrMsgs, RpcTimeLim, 
+                                           LoginStr, UniqueClientIId, ErrorMsg);
+end;
+
+function  TSharedBroker.BrokerDisconnect: ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerDisconnect;
+end;
+
+function  TSharedBroker.BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerSetContext(OptionName);
+end;
+
+function  TSharedBroker.BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                                   RpcTimeLimit: Integer; out RpcResults: WideString; 
+                                   out UniqueRpcCallId: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerCall(RpcName, RpcParams, RpcTimeLimit, RpcResults, 
+                                        UniqueRpcCallId);
+end;
+
+function  TSharedBroker.ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                           const Name: WideString; const Default: WideString; 
+                                           out RegResult: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.ReadRegDataDefault(Root, Key, Name, Default, RegResult);
+end;
+
+function  TSharedBroker.GetRpcHistoryCountForClient(UniqueClientId: Integer; 
+                                                    out rpcHistoryCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcHistoryCountForClient(UniqueClientId, rpcHistoryCount);
+end;
+
+function  TSharedBroker.GetClientIdAndNameFromIndex(clientIndex: Integer; 
+                                                    out UniqueClientId: Integer; 
+                                                    out ClientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetClientIdAndNameFromIndex(clientIndex, UniqueClientId, ClientName);
+end;
+
+function  TSharedBroker.LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.LogoutConnectedClients(logoutTimeLimit);
+end;
+
+function  TSharedBroker.GetClientNameFromUniqueClientId(UniqueClientId: Integer; 
+                                                        out ClientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetClientNameFromUniqueClientId(UniqueClientId, ClientName);
+end;
+
+function  TSharedBroker.GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetActiveBrokerConnectionIndexCount(connectionIndexCount);
+end;
+
+function  TSharedBroker.GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                                      out connectedServerIp: WideString; 
+                                                      out connectedServerPort: Integer; 
+                                                      out lastContext: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetActiveBrokerConnectionInfo(connectionIndex, connectedServerIp, 
+                                                           connectedServerPort, lastContext);
+end;
+
+function  TSharedBroker.GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                                         out connectionIndex: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId, 
+                                                                              connectionIndex);
+end;
+
+function  TSharedBroker.GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                              out brokerContext: WideString; 
+                                              out RpcName: WideString; out RpcParams: WideString; 
+                                              out rpcResult: WideString; 
+                                              out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcCallFromHistory(uniqueRpcId, UniqueClientId, brokerContext, 
+                                                   RpcName, RpcParams, rpcResult, rpcStartDateTime, 
+                                                   rpcDuration);
+end;
+
+function  TSharedBroker.GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                                   out uniqueRpcId: Integer; 
+                                                   out brokerContext: WideString; 
+                                                   out RpcName: WideString; 
+                                                   out RpcParams: WideString; 
+                                                   out rpcResult: WideString; 
+                                                   out rpcStartDateTime: Double; 
+                                                   out rpcDuration: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcCallFromHistoryIndex(UniqueClientId, rpcCallIndex, uniqueRpcId, 
+                                                        brokerContext, RpcName, RpcParams, 
+                                                        rpcResult, rpcStartDateTime, rpcDuration);
+end;
+
+function  TSharedBroker.GetRpcClientIdFromHistory(uniqueRpcId: Integer; 
+                                                  out UniqueClientId: Integer; 
+                                                  out ClientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcClientIdFromHistory(uniqueRpcId, UniqueClientId, ClientName);
+end;
+
+function  TSharedBroker.GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetConnectedClientCount(connectedClientCount);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TSharedBrokerProperties.Create(AServer: TSharedBroker);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TSharedBrokerProperties.GetDefaultInterface: ISharedBroker;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TSharedBrokerProperties.Get_RpcVersion: WideString;
+begin
+  Result := DefaultInterface.Get_RpcVersion;
+end;
+
+procedure TSharedBrokerProperties.Set_RpcVersion(const version: WideString);
+begin
+  DefaultInterface.Set_RpcVersion(version);
+end;
+
+function  TSharedBrokerProperties.Get_RpcHistoryEnabled: WordBool;
+begin
+  Result := DefaultInterface.Get_RpcHistoryEnabled;
+end;
+
+procedure TSharedBrokerProperties.Set_RpcHistoryEnabled(enabled: WordBool);
+begin
+  DefaultInterface.Set_RpcHistoryEnabled(enabled);
+end;
+
+function  TSharedBrokerProperties.Get_PerClientRpcHistoryLimit: Integer;
+begin
+  Result := DefaultInterface.Get_PerClientRpcHistoryLimit;
+end;
+
+procedure TSharedBrokerProperties.Set_PerClientRpcHistoryLimit(limit: Integer);
+begin
+  DefaultInterface.Set_PerClientRpcHistoryLimit(limit);
+end;
+
+function  TSharedBrokerProperties.Get_CurrentContext: WideString;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TSharedBrokerProperties.Get_User: WideString;
+begin
+  Result := DefaultInterface.Get_User;
+end;
+
+function  TSharedBrokerProperties.Get_Login: WideString;
+begin
+  Result := DefaultInterface.Get_Login;
+end;
+
+procedure TSharedBrokerProperties.Set_Login(const Value: WideString);
+begin
+  DefaultInterface.Set_Login(Value);
+end;
+
+function  TSharedBrokerProperties.Get_RpcbError: WideString;
+begin
+  Result := DefaultInterface.Get_RpcbError;
+end;
+
+function  TSharedBrokerProperties.Get_Socket: Integer;
+begin
+  Result := DefaultInterface.Get_Socket;
+end;
+
+function  TSharedBrokerProperties.Get_KernelLogin: WordBool;
+begin
+  Result := DefaultInterface.Get_KernelLogin;
+end;
+
+procedure TSharedBrokerProperties.Set_KernelLogin(Value: WordBool);
+begin
+  DefaultInterface.Set_KernelLogin(Value);
+end;
+
+function  TSharedBrokerProperties.Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+begin
+  Result := DefaultInterface.Get_ShowErrorMsgs;
+end;
+
+procedure TSharedBrokerProperties.Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+begin
+  DefaultInterface.Set_ShowErrorMsgs(Value);
+end;
+
+{$ENDIF}
+{
+procedure Register;
+begin
+  RegisterComponents('Kernel',[TSharedBroker]);
+end;
+}
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/SharedBrokerDebugger.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/SharedBrokerDebugger.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/SharedBrokerDebugger.dof	(revision 1676)
@@ -0,0 +1,85 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50;XWB_R50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=1
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept. Veteran Affairs, VHA, OI, SD&D, Infrastructure Enhancement
+FileDescription=
+FileVersion=1.0.0.1
+InternalName=
+LegalCopyright=(c) 2002
+LegalTrademarks=
+OriginalFilename=
+ProductName=RPCSharedBrokerDebugger
+ProductVersion=1.0.0.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/SharedBrokerDebugger.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/SharedBrokerDebugger.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/SharedBrokerDebugger.dpr	(revision 1676)
@@ -0,0 +1,17 @@
+program SharedBrokerDebugger;
+
+uses
+  Forms,
+  uBrokerConnectionInfo in 'uBrokerConnectionInfo.pas',
+  uClientInfo in 'uClientInfo.pas',
+  fSharedBrokerDebugger in 'fSharedBrokerDebugger.pas' {frmSharedBrokerDebugger},
+  fClientRPCLogger in 'fClientRPCLogger.pas' {frmRpcClientLogger},
+  uRpcLogEntry in 'uRpcLogEntry.pas';
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TfrmSharedBrokerDebugger, frmSharedBrokerDebugger);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientInfo.pas	(revision 1676)
@@ -0,0 +1,166 @@
+unit fClientInfo;
+
+interface
+
+uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  uBrokerConnectionInfo;
+
+
+type
+  TForm2 = class(TForm)
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+{
+/// <summary>
+/// Summary description for ClientInfo.
+/// </summary>
+}
+  TClientInfo = class(TPersistent)
+  private
+    FUniqueId: Integer;
+    FName: String;
+    FBrokerConnectionIndex: Integer;
+    FRpcHistoryEnabled: Boolean;
+    FRpcLogger: TClientRpcLogger;
+    FVisible: Boolean;
+  protected
+    function GetVisible: Boolean;
+    procedure SetVisible(Value: Boolean);
+    procedure Initialize;
+  public
+    Constructor Create; overload; virtual;
+    Constructor Create(uniqueId: Integer; name: String; connectionIndex: Integer; historyEnabled: Boolean); overload; virtual;
+    procedure AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
+    function MakeCheckBoxString: String;
+    function ToString: String;
+    property Visible: Boolean read GetVisible write SetVisible;
+    property Name: String read FName write FName;
+    property RpcHistoryEnabled: Boolean read FRpcHistoryEnabled write FRPCHistoryEnabled;
+    property UniqueId: Integer read FUniqueId write FUniqueId;
+    property BrokerConnectionIndex: Integer read FBrokerConnectionIndex write FBrokerConnectionIndex;
+  end;
+
+const
+  kRpcHistoryEnabledDefault: Boolean = true;
+  kBrokerConnectionIndexDefault: Integer = -1;
+
+var
+  Form2: TForm2;
+
+implementation
+
+{$R *.DFM}
+
+Constructor TClientInfo.Create;
+begin
+  inherited;
+  Initialize;
+end;
+{
+    /// <summary>
+    /// ClientInfo parameterized constructor
+    /// </summary>
+    /// <param name="uniqueId"></param>
+    /// <param name="name"></param>
+    /// <param name="connectionIndex"></param>
+    /// <param name="historyEnabled"></param>
+}
+Constructor TClientInfo.Create(uniqueId: Integer; name: String; connectionIndex: Integer; historyEnabled: Boolean);
+begin
+  Create;
+
+      FUniqueId := uniqueId;
+      FName := name;
+      FBrokerConnectionIndex := connectionIndex;
+      FRpcHistoryEnabled := historyEnabled;
+end;
+
+procedure TClientInfo.AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
+begin
+      if(FRpcLogger <> nil) then
+        FRpcLogger.AddRpcLogEntry(entry,overrideCheckBox);
+end;
+
+procedure TClientInfo.SetVisible(Value: Boolean);
+begin
+  if(value) then
+  begin
+    if(FRpcLogger = nil) then
+    begin
+      FRpcLogger := TClientRpcLogger.Create;
+// TODO      FRpcLogger.OnRpcLoggerClose += new EventHandler(OnRpcLoggerClosedEventHandler);
+      FRpcLogger.Text := 'RPC Log for  '+Name+' ID='+IntToStr(UniqueId);
+    end;
+    FRpcLogger.Visible := true;
+  end
+  else
+  begin
+    if(FRpcLogger <> nil) then
+    begin
+            FRpcLogger.Visible := false;
+            FRpcLogger := nil;
+    end;
+  end;
+end;
+
+function TClientInfo.GetVisible: Boolean;
+begin
+  result := false;
+  if (FRpcLogger <> nil) then
+    result := FRpcLogger.Visible;
+end;
+{
+    /// <summary>
+    /// OnLogClosed is called when the ClientRpcLogger window is called
+    /// Any event handlers by owners of this object should assign 
+    /// an event handler to this event
+    /// </summary>
+}
+// TODO
+//    public EventHandler OnLogClosed;
+{
+    /// <summary>
+    /// MakeCheckBoxString creates a string based on the internal members
+    /// This string is intended to be used for check box list entries.
+    /// </summary>
+    /// <param name="checkBoxString"></param>
+}
+function TClientInfo.MakeCheckBoxString: String;
+begin
+  Result := ToString;
+end;
+
+{
+    /// <summary>
+    /// ToString returns a readable string representation of the member
+    /// </summary>
+    /// <returns></returns>
+}
+function TClientInfo.ToString: String;
+begin
+  result := FName+' connection='+IntToStr(FBrokerConnectionIndex)+' id='+IntToStr(FUniqueId);
+end;
+
+procedure TClientInfo.Initialize;
+begin
+      FBrokerConnectionIndex := kBrokerConnectionIndexDefault;
+      FRpcHistoryEnabled := kRpcHistoryEnabledDefault;
+      FRpcLogger := nil;
+end;
+
+// TODO
+{
+procedure TClientInfo.OnRpcLoggerClosedEventHandler(object sender, EventArgs e)
+begin
+  // Pass the message on to my owner
+  Visible := false;
+  OnLogClosed(Self,nil);
+end;
+}
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientRPCLogger.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientRPCLogger.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientRPCLogger.dfm	(revision 1676)
@@ -0,0 +1,264 @@
+object frmRpcClientLogger: TfrmRpcClientLogger
+  Left = 173
+  Top = 0
+  Width = 665
+  Height = 578
+  Caption = 'frmRpcClientLogger'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = False
+  OnClose = FormClose
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMaxRPCEntries: TLabel
+    Left = 232
+    Top = 16
+    Width = 104
+    Height = 13
+    Anchors = [akTop, akRight]
+    Caption = '&Maximum RPC Entries'
+  end
+  object cbxEnableRPCLogging: TCheckBox
+    Left = 528
+    Top = 16
+    Width = 121
+    Height = 17
+    Alignment = taLeftJustify
+    Anchors = [akTop, akRight]
+    Caption = '&Enable RPC Logging'
+    Checked = True
+    State = cbChecked
+    TabOrder = 7
+  end
+  object UpDown1: TUpDown
+    Left = 425
+    Top = 8
+    Width = 15
+    Height = 21
+    Anchors = [akTop, akRight]
+    Associate = maxRpcLogEntriesNumericUpDown
+    Min = 0
+    Position = 100
+    TabOrder = 0
+    Wrap = False
+    OnClick = UpDown1Click
+  end
+  object maxRpcLogEntriesNumericUpDown: TEdit
+    Left = 360
+    Top = 8
+    Width = 65
+    Height = 21
+    Anchors = [akTop, akRight]
+    TabOrder = 6
+    Text = '100'
+  end
+  object rpcLogListBox: TListBox
+    Left = 8
+    Top = 32
+    Width = 641
+    Height = 143
+    Anchors = [akLeft, akTop, akRight]
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ItemHeight = 14
+    ParentFont = False
+    PopupMenu = PopupMenu1
+    TabOrder = 1
+    OnClick = rpcLogListBoxClick
+  end
+  object Panel1: TPanel
+    Left = 8
+    Top = 165
+    Width = 641
+    Height = 153
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    TabOrder = 2
+    object lblRPCName: TLabel
+      Left = 16
+      Top = 16
+      Width = 53
+      Height = 13
+      Caption = 'RPC Name'
+    end
+    object lblRPCDebugID: TLabel
+      Left = 240
+      Top = 120
+      Width = 71
+      Height = 13
+      Caption = 'RPC Debug ID'
+    end
+    object lblClientName: TLabel
+      Left = 16
+      Top = 88
+      Width = 57
+      Height = 13
+      Caption = 'Client Name'
+    end
+    object lblClientDebugID: TLabel
+      Left = 16
+      Top = 120
+      Width = 75
+      Height = 13
+      Caption = 'Client Debug ID'
+    end
+    object lblContext: TLabel
+      Left = 16
+      Top = 56
+      Width = 36
+      Height = 13
+      Caption = 'Context'
+    end
+    object lblDuration: TLabel
+      Left = 440
+      Top = 120
+      Width = 40
+      Height = 13
+      Caption = 'Duration'
+    end
+    object lblParams: TLabel
+      Left = 8
+      Top = 136
+      Width = 35
+      Height = 13
+      Caption = 'Params'
+    end
+    object lblResults: TLabel
+      Left = 336
+      Top = 136
+      Width = 35
+      Height = 13
+      Caption = 'Results'
+    end
+    object edtRPCName: TEdit
+      Left = 96
+      Top = 16
+      Width = 521
+      Height = 13
+      BorderStyle = bsNone
+      Color = clBtnFace
+      TabOrder = 1
+    end
+    object edtRPCDebugID: TEdit
+      Left = 320
+      Top = 120
+      Width = 73
+      Height = 13
+      BorderStyle = bsNone
+      Color = clBtnFace
+      TabOrder = 5
+    end
+    object edtClientName: TEdit
+      Left = 96
+      Top = 88
+      Width = 521
+      Height = 13
+      BorderStyle = bsNone
+      Color = clBtnFace
+      TabOrder = 3
+    end
+    object edtClientDebugID: TEdit
+      Left = 96
+      Top = 120
+      Width = 89
+      Height = 13
+      BorderStyle = bsNone
+      Color = clBtnFace
+      TabOrder = 4
+    end
+    object edtContext: TEdit
+      Left = 96
+      Top = 56
+      Width = 521
+      Height = 13
+      BorderStyle = bsNone
+      Color = clBtnFace
+      TabOrder = 2
+    end
+    object edtDuration1: TEdit
+      Left = 496
+      Top = 120
+      Width = 121
+      Height = 13
+      BorderStyle = bsNone
+      Color = clBtnFace
+      TabOrder = 6
+    end
+    object Edit2: TEdit
+      Left = 512
+      Top = 136
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      Text = 'Edit2'
+      Visible = False
+    end
+  end
+  object ParamsMemoBox: TRichEdit
+    Left = 8
+    Top = 320
+    Width = 313
+    Height = 161
+    Anchors = [akLeft, akBottom]
+    Lines.Strings = (
+      '')
+    TabOrder = 3
+  end
+  object ResultsMemoBox: TRichEdit
+    Left = 336
+    Top = 320
+    Width = 313
+    Height = 161
+    Anchors = [akLeft, akRight, akBottom]
+    TabOrder = 4
+  end
+  object btnClose: TButton
+    Left = 291
+    Top = 496
+    Width = 75
+    Height = 25
+    Anchors = [akLeft, akRight, akBottom]
+    Caption = 'Close'
+    TabOrder = 5
+    OnClick = btnCloseClick
+  end
+  object MainMenu1: TMainMenu
+    Left = 152
+    object File1: TMenuItem
+      Caption = '&File'
+      object mnuFileClose: TMenuItem
+        Caption = '&Close'
+        OnClick = mnuFileCloseClick
+      end
+    end
+    object Edit1: TMenuItem
+      Caption = '&Edit'
+      object mnuEditCopyToClipboard: TMenuItem
+        Caption = '&Copy Current RPC To ClipBoard'
+        Enabled = False
+        OnClick = mnuEditCopyToClipboardClick
+      end
+    end
+    object HGelp1: TMenuItem
+      Caption = '&Help'
+      object mnuHelpAbout: TMenuItem
+        Caption = '&About'
+      end
+    end
+  end
+  object PopupMenu1: TPopupMenu
+    Left = 232
+    Top = 80
+    object mnuPopupCopyToClipboard: TMenuItem
+      Caption = '&Copy To Clipboard'
+      OnClick = mnuPopupCopyToClipboardClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientRPCLogger.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientRPCLogger.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fClientRPCLogger.pas	(revision 1676)
@@ -0,0 +1,190 @@
+unit fClientRPCLogger;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ComCtrls, Clipbrd, Menus, uRpcLogEntry;
+
+type
+  TfrmRpcClientLogger = class(TForm)
+    cbxEnableRPCLogging: TCheckBox;
+    lblMaxRPCEntries: TLabel;
+    UpDown1: TUpDown;
+    maxRpcLogEntriesNumericUpDown: TEdit;
+    rpcLogListBox: TListBox;
+    Panel1: TPanel;
+    lblRPCName: TLabel;
+    lblRPCDebugID: TLabel;
+    lblClientName: TLabel;
+    lblClientDebugID: TLabel;
+    lblContext: TLabel;
+    lblDuration: TLabel;
+    edtRPCName: TEdit;
+    edtRPCDebugID: TEdit;
+    edtClientName: TEdit;
+    edtClientDebugID: TEdit;
+    edtContext: TEdit;
+    edtDuration1: TEdit;
+    lblParams: TLabel;
+    lblResults: TLabel;
+    MainMenu1: TMainMenu;
+    PopupMenu1: TPopupMenu;
+    File1: TMenuItem;
+    mnuFileClose: TMenuItem;
+    Edit1: TMenuItem;
+    HGelp1: TMenuItem;
+    mnuHelpAbout: TMenuItem;
+    mnuEditCopyToClipboard: TMenuItem;
+    mnuPopupCopyToClipboard: TMenuItem;
+    ParamsMemoBox: TRichEdit;
+    ResultsMemoBox: TRichEdit;
+    Edit2: TEdit;
+    btnClose: TButton;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
+    procedure mnuEditCopyToClipboardClick(Sender: TObject);
+    procedure rpcLogListBoxClick(Sender: TObject);
+    procedure mnuPopupCopyToClipboardClick(Sender: TObject);
+    procedure mnuFileCloseClick(Sender: TObject);
+    procedure btnCloseClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure DisplayRpcEntry(entry: TRpcLogEntry);
+    procedure AddRpcLogEntry(entry: TRPCLogEntry; overrideCheckBox: Boolean);
+  end;
+
+var
+  frmRpcClientLogger: TfrmRpcClientLogger;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmRpcClientLogger.AddRpcLogEntry(entry: TRPCLogEntry; overrideCheckBox: Boolean);
+var
+  Str, Str1: String;
+  Max: Integer;
+begin
+  if (cbxEnableRPCLogging.Checked or overrideCheckBox) then
+  begin
+    // If the list is full we need to delete the 0th item till we have room for one.
+    while (rpcLogListBox.Items.Count >= StrToInt(maxRpcLogEntriesNumericUpDown.Text)) do
+      rpcLogListBox.Items.Delete(0);
+    with entry do
+    begin
+      Max := 30;
+      if Length(Name) > 30 then
+        Max := Length(Name);
+      Str := Copy(Name+'                                                   ',1,Max);
+      Str1 := '      '+IntToStr(Duration);
+      Str := Str + '   cId: '+IntToStr(UniqueClientId)+'  time ='+Copy(Str1,Length(Str1)-5,Length(Str1))+' ms   rpcId: '+IntToStr(UniqueId)+'   '+ClientName;
+    end;    // with
+    rpcLogListBox.Items.AddObject(Str, entry);
+  end;
+end;
+
+    procedure TfrmRpcClientLogger.FormClose(Sender: TObject; var Action: TCloseAction);
+    begin
+      //
+    end;
+    procedure TfrmRpcClientLogger.UpDown1Click(Sender: TObject; Button: TUDBtnType);
+    begin
+      //
+    end;
+
+procedure TfrmRpcClientLogger.mnuEditCopyToClipboardClick(Sender: TObject);
+begin
+  if RpcLogListBox.ItemIndex > -1 then
+    mnuPopupCopyToClipboardClick(Self);
+end;
+procedure TfrmRpcClientLogger.rpcLogListBoxClick(Sender: TObject);
+begin
+  DisplayRpcEntry(TRpcLogEntry(rpcLogListBox.Items.Objects[rpcLogListBox.ItemIndex]));
+  mnuEditCopyToClipboard.Enabled := True;
+end;
+
+procedure TfrmRpcClientLogger.mnuPopupCopyToClipboardClick(Sender: TObject);
+var
+  RPCEntry: TRpcLogEntry;
+begin
+  RPCEntry := TRpcLogEntry(RpcLogListBox.Items.Objects[RpcLogListBox.ItemIndex]);
+  Edit2.Text := RPCEntry.CreateClipBoardString;
+  Edit2.SelectAll;
+  Edit2.CopyToClipBoard;
+end;
+    
+
+
+//    private void rpcLogListBox_SelectedIndexChanged(object sender, System.EventArgs e)
+
+procedure TfrmRpcClientLogger.DisplayRpcEntry(entry: TRpcLogEntry);
+var
+  Str : String;
+begin
+  Str := entry.CreateParamsDisplayString; //.Split('\n');
+  ParamsMemoBox.Lines.Clear;
+  ParamsMemoBox.Lines.Add(Str);
+
+  resultsMemoBox.Text      := entry.CreateResultsDisplayString();
+  edtRpcName.Text      := entry.Name;
+  edtRPCDebugId.Text    := IntToStr(entry.UniqueId);
+  edtContext.Text      := entry.Context;
+  if(entry.Duration < 1) then
+    edtDuration1.Text := '<1ms'
+  else
+    edtDuration1.Text := IntToStr(entry.Duration) + ' ms';
+  edtClientName.Text    := entry.ClientName;
+  edtClientDebugId.Text  := IntToStr(entry.UniqueClientId);
+end;
+
+{
+procedure TfrmRpcClientLogger.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+      OnRpcLoggerClose(Self,nil);
+end;
+
+procedure TfrmRpcClientLogger.UpDown1Click(Sender: TObject;
+  Button: TUDBtnType);
+begin
+      // In case the max entry value is less than the rpc log entries delete the entries
+      while (StrToInt(maxRpcLogEntriesNumericUpDown.Text) < rpcLogListBox.Items.Count)
+        rpcLogListBox.Items.Delete(0);
+end;
+
+procedure TfrmRpcClientLogger.mnuEditCopyToClipboardClick(Sender: TObject);
+var
+  Clip: TClipBoard;
+begin
+      // Build a string and put it on the clipboard here.
+//      Clipboard.SetDataObject(((RpcLogEntry)rpcLogListBox.SelectedItem).CreateClipboardString());
+  Clip ::= ClipBoard;
+  Clip.SetTextBuf(PChar((RpcLogEntry)(rpcLogListBox.Items[rpcLogListBox.ItemIndex]).CreateClipboardString));
+end;
+
+procedure TfrmRpcClientLogger.rpcLogListBoxClick(Sender: TObject);
+begin
+  DisplayRpcEntry((RpcLogEntry)rpcLogListBox.Items[rpcLogListBox.SelectedIndex]);
+  mnuEditCopyToClipboard.Enabled := True;
+end;
+
+procedure TfrmRpcClientLogger.mnuPopupCopyToClipboardClick(
+  Sender: TObject);
+begin
+  mnuEditCopyToClipboardClick(Sender);
+end;
+}
+procedure TfrmRpcClientLogger.mnuFileCloseClick(Sender: TObject);
+begin
+  Self.Visible := False;
+end;
+
+procedure TfrmRpcClientLogger.btnCloseClick(Sender: TObject);
+begin
+  Self.Visible := False;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fSharedBrokerDebugger.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fSharedBrokerDebugger.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fSharedBrokerDebugger.dfm	(revision 1676)
@@ -0,0 +1,180 @@
+object frmSharedBrokerDebugger: TfrmSharedBrokerDebugger
+  Left = 146
+  Top = 0
+  Width = 639
+  Height = 571
+  Caption = 'SharedRPCBroker Debugger'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Menu = MainMenu1
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 16
+    Top = 16
+    Width = 139
+    Height = 13
+    Caption = 'Current Shared Broker Clients'
+  end
+  object Label2: TLabel
+    Left = 16
+    Top = 200
+    Width = 126
+    Height = 13
+    Caption = 'Actual Broker Connections'
+  end
+  object Label3: TLabel
+    Left = 16
+    Top = 328
+    Width = 109
+    Height = 13
+    Caption = 'Client Connections Log'
+  end
+  object lblMaxRPCEntries: TLabel
+    Left = 328
+    Top = 16
+    Width = 80
+    Height = 13
+    Caption = '&Max RPC Entries'
+  end
+  object Label4: TLabel
+    Left = 160
+    Top = 16
+    Width = 152
+    Height = 13
+    Caption = 'Check a box to view RPCs'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object Label5: TLabel
+    Left = 176
+    Top = 200
+    Width = 235
+    Height = 13
+    Caption = 'Check a box to view RPCs and their data'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object btnExit: TButton
+    Left = 278
+    Top = 492
+    Width = 75
+    Height = 25
+    Caption = 'E&xit'
+    TabOrder = 6
+    OnClick = btnExitClick
+  end
+  object EnableRpcCallLogForAllClientsCheckBox: TCheckBox
+    Left = 480
+    Top = 16
+    Width = 129
+    Height = 17
+    Alignment = taLeftJustify
+    Caption = '&Enable RPC Call Log'
+    Checked = True
+    State = cbChecked
+    TabOrder = 2
+  end
+  object CurrentClientsCheckedListBox: TCheckListBox
+    Left = 16
+    Top = 32
+    Width = 593
+    Height = 161
+    OnClickCheck = CurrentClientsCheckedListBoxClickCheck
+    ItemHeight = 13
+    TabOrder = 3
+  end
+  object actualBrokerConnectionsCheckedListBox: TCheckListBox
+    Left = 16
+    Top = 216
+    Width = 593
+    Height = 105
+    OnClickCheck = actualBrokerConnectionsCheckedListBoxClickCheck
+    ItemHeight = 13
+    TabOrder = 4
+  end
+  object RpcCallLogListBox: TListBox
+    Left = 520
+    Top = 456
+    Width = 65
+    Height = 57
+    TabStop = False
+    ItemHeight = 13
+    TabOrder = 0
+    Visible = False
+  end
+  object maxAllClientRpcLogEntriesNumericUpDown: TEdit
+    Left = 416
+    Top = 8
+    Width = 41
+    Height = 21
+    TabOrder = 1
+    Text = '100'
+  end
+  object UpDown1: TUpDown
+    Left = 457
+    Top = 8
+    Width = 15
+    Height = 21
+    Associate = maxAllClientRpcLogEntriesNumericUpDown
+    Min = 0
+    Position = 100
+    TabOrder = 7
+    Wrap = False
+  end
+  object clientConnectionsLogRichTextBox: TRichEdit
+    Left = 16
+    Top = 344
+    Width = 593
+    Height = 137
+    Lines.Strings = (
+      '')
+    TabOrder = 5
+  end
+  object mVistaSession: TSharedBroker
+    AutoConnect = False
+    ConnectKind = ckRunningOrNew
+    Left = 56
+    Top = 488
+  end
+  object MainMenu1: TMainMenu
+    Left = 120
+    Top = 496
+    object File1: TMenuItem
+      Caption = '&File'
+      object Exit1: TMenuItem
+        Caption = 'E&xit'
+        OnClick = Exit1Click
+      end
+    end
+    object Edit1: TMenuItem
+      Caption = '&Edit'
+      object CopyConnectionsLogToClipboard1: TMenuItem
+        Caption = '&Copy Connections Log To Clipboard'
+        OnClick = CopyConnectionsLogToClipboard1Click
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object About1: TMenuItem
+        Caption = '&About'
+        OnClick = About1Click
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fSharedBrokerDebugger.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fSharedBrokerDebugger.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/fSharedBrokerDebugger.pas	(revision 1676)
@@ -0,0 +1,666 @@
+unit fSharedBrokerDebugger;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, OleServer, CheckLst, ComCtrls,
+  Menus, RPCSharedBrokerSessionMgr1_TLB;
+
+type
+
+  TfrmSharedBrokerDebugger = class(TForm)
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    btnExit: TButton;
+    EnableRpcCallLogForAllClientsCheckBox: TCheckBox;
+    mVistaSession: TSharedBroker;
+    CurrentClientsCheckedListBox: TCheckListBox;
+    actualBrokerConnectionsCheckedListBox: TCheckListBox;
+    RpcCallLogListBox: TListBox;
+    maxAllClientRpcLogEntriesNumericUpDown: TEdit;
+    UpDown1: TUpDown;
+    lblMaxRPCEntries: TLabel;
+    MainMenu1: TMainMenu;
+    File1: TMenuItem;
+    Exit1: TMenuItem;
+    Edit1: TMenuItem;
+    Help1: TMenuItem;
+    About1: TMenuItem;
+    CopyConnectionsLogToClipboard1: TMenuItem;
+    clientConnectionsLogRichTextBox: TRichEdit;
+    Label4: TLabel;
+    Label5: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure btnExitClick(Sender: TObject);
+    procedure actualBrokerConnectionsCheckedListBoxClickCheck(
+      Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About1Click(Sender: TObject);
+    procedure CopyConnectionsLogToClipboard1Click(Sender: TObject);
+    procedure CurrentClientsCheckedListBoxClickCheck(Sender: TObject);
+  private
+    { Private declarations }
+    mClients: TList;    // List of broker type clients of the server that are connected.
+                        // debugger type clients are not included
+    mConnections: TList;
+    mDoingAForcedLogoutOfClients: Boolean;
+    mOnLogoutPending: Boolean;
+
+  protected
+    procedure OnClientConnectEventHandler(Sender: TObject; uniqueClientId: Integer;
+                    connection: ISharedBrokerConnection);
+    procedure OnRpcCallRecordedEventHandler(Sender: TObject; uniqueRpcId: Integer);
+    procedure OnClientDisconnectEventHandler(Sender: TObject; uniqueClientId: Integer);
+    procedure OnContextChangedEventHandler(Sender: TObject; connectionIndex: Integer; var newContext: OleVariant);
+  public
+    { Public declarations }
+    procedure RebuildClientList(uniqueClientId: Integer);
+    procedure RebuildConnectionList;
+  end;
+
+const
+  kNoUniqueClientId: integer = -1;
+  KInvalidConnectionIndex: Integer = -1;
+
+var
+  frmSharedBrokerDebugger: TfrmSharedBrokerDebugger;
+  mClients: TList;
+  mConnections: TList;
+
+implementation
+
+uses
+  uClientInfo, uBrokerConnectionInfo, uRpcLogEntry, frmVistAAbout;
+
+{$R *.DFM}
+
+{
+    /// <summary>
+    /// The main entry point for the application.
+    /// </summary>
+    [STAThread]
+
+    static void Main()
+
+      Application.Run(new Form1());
+}
+{
+function TfrmSharedBrokerDebugger.OnLogoutEventHandler; integer;
+begin
+      mOnLogoutPending := true;
+      return 1;
+end;
+
+procedure TfrmSharedBrokerDebugger.OnIdleEventHandler(object sender, EventArgs e)
+begin
+  if (mOnLogoutPending) then
+  begin
+    CloseDownVistaSession();
+    if (mDoingAForcedLogoutOfClients <> true) then
+    begin
+    // Don't do an Application Exit here.
+    // Should really send a close event on the main window
+    // Exiting here causes the server to loose its connection and blow up since
+    // control doesn't return till after this application is gone, and then
+    // the pointer references on the server are bogus
+      Application.Exit();
+    end;
+  mDoingAForcedLogoutOfClients := false;
+  mOnLogoutPending := false;
+  end;
+end;
+}
+procedure TfrmSharedBrokerDebugger.OnClientConnectEventHandler(Sender: TObject; uniqueClientId: Integer;
+                                                            connection: ISharedBrokerConnection);
+var
+  connectionTypeName: string;
+  outString: String;
+  ClientName: WideString;
+  ErrorCode: ISharedBrokerErrorCode;
+begin
+      case (connection) of
+        New:
+          connectionTypeName := 'New';
+        Shared:
+          connectionTypeName := 'Shared';
+        Debug:
+          connectionTypeName := 'Debug';
+        else
+          connectionTypeName := 'Failed';
+        end;
+
+      Assert(mVistaSession <> nil);
+
+      errorCode := mVistaSession.GetClientNameFromUniqueClientId(uniqueClientId, clientName);
+      if (errorCode = Success) then
+      begin
+        outString := 'connect ['+connectionTypeName+'] >  '+clientName+'  id:='+IntToStr(uniqueClientId)+FormatDateTime('   hh:nn:ss mm/dd/yy',Now);
+        clientConnectionsLogRichTextBox.Lines.Add(outString);
+      end
+      else
+      begin
+        // need to throw a debugger exception here
+        Assert(false);
+      end;
+
+      RebuildClientList(uniqueClientId);
+      RebuildConnectionList();
+end;
+
+procedure TfrmSharedBrokerDebugger.OnClientDisconnectEventHandler(Sender: TObject; uniqueClientId: Integer);
+var
+  outString: String;
+  clientName: WideString;
+  foundOne: Boolean;
+  CInfo: TClientInfo;
+  ErrorCode: ISharedBrokerErrorCode;
+  i: Integer;
+begin
+  clientName := 'ERROR';
+  foundOne := false;
+
+  Assert(mVistaSession <> nil);
+      
+  errorCode := mVistaSession.GetClientNameFromUniqueClientId(uniqueClientId, clientName);
+  if (errorCode = UniqueClientIdDoesNotExist) then
+  begin
+    // General the client should be disconnected and not available any more
+    // so lets look in our local client list for the name to print dialog.
+    for i:=0 to Pred(mClients.Count) do
+    begin
+      cInfo := TClientInfo(mClients[i]);
+      if (cInfo.UniqueId = uniqueClientId) then
+      begin
+        clientName := cInfo.Name;
+        foundOne := true;
+        break;
+      end;
+    end;
+  end;
+
+  if (foundOne) then
+  begin
+    outString := 'disconnect > '+clientName+'   id:='+ IntToStr(uniqueClientId) + FormatDateTime('   hh:nn:ss mm/dd/yy',Now);
+        clientConnectionsLogRichTextBox.Lines.Add(outString);
+
+        RebuildClientList(uniqueClientId);
+        RebuildConnectionList();
+      end;
+end;
+
+    /// <summary>
+    /// OnRpcCallRecordedEventHandler handles the OnRpcCallRecorded event
+    /// from the COM interface
+    /// </summary>
+    /// <param name:='uniqueRpcId'></param>
+    /// <returns></returns>
+procedure TfrmSharedBrokerDebugger.OnRpcCallRecordedEventHandler(Sender: TObject; uniqueRpcId: Integer);
+var
+  UniqueClientId: Integer;
+  Context: WideString;
+  RpcName: WideString;
+  RpcParams: WideString;
+  ClientName: WideString;
+  RpcEndDateTime: Double;
+  RpcDuration: Integer;
+  RpcResults: WideString;
+  CInfo, TempCInfo: TClientInfo;
+  LogEntry: TRpcLogEntry;
+  I: Integer;
+  ErrorCode: ISharedBrokerErrorCode;
+begin
+  cInfo:=nil;
+
+      Assert(mVistaSession <> nil);
+
+  errorCode := mVistaSession.GetRpcCallFromHistory(uniqueRpcId, uniqueClientId, context, rpcName, rpcParams, rpcResults, rpcEndDateTime, rpcDuration);
+  if (errorCode = Success) then
+  begin
+    errorCode := mVistaSession.GetClientNameFromUniqueClientId(uniqueClientId, clientName);
+    if (errorCode = Success) then
+    begin
+      for i:=0 to Pred(mClients.Count) do
+      begin
+        tempCInfo := (TClientInfo(mClients[i]));
+        if (tempCInfo.UniqueId = uniqueClientId) then
+        begin
+          cInfo := tempCInfo;
+          break;
+        end;
+      end;
+          Assert(cInfo <> nil);
+
+      logEntry := TRpcLogEntry.Create(uniqueClientId,clientName,cInfo.BrokerConnectionIndex,uniqueRpcId,rpcEndDateTime,rpcDuration,context,rpcName,rpcParams,rpcResults);
+      if (enableRpcCallLogForAllClientsCheckBox.Checked) then
+      begin
+            // If the list is full we need to delete the 0th item till we have room for one.
+        while (rpcCallLogListBox.Items.Count >= StrToInt(maxAllClientRpcLogEntriesNumericUpDown.Text)) do
+              rpcCallLogListBox.Items.Delete(0);
+
+        rpcCallLogListBox.Items.AddObject(IntToStr(logEntry.UniqueClientId),logEntry);
+      end;
+
+      cInfo.AddRpcLogEntry(LogEntry, false);
+  //    (TBrokerConnectionInfo(mConnections[cInfo.BrokerConnectionIndex])).AddRpcLogEntry(logEntry,false);
+      (TClientInfo(mConnections[cInfo.BrokerConnectionIndex])).AddRpcLogEntry(logEntry,false);
+    end
+    else
+    begin
+          // Need to throw and exception here
+//          Assert(false);
+    end;
+  end
+  else
+  begin
+        // Need to throw a debugger exception here
+//        Assert(false);
+  end;
+end;
+
+procedure TfrmSharedBrokerDebugger.OnContextChangedEventHandler(Sender: TObject; connectionIndex: Integer; var newContext: OleVariant);
+var
+  bInfo: TBrokerConnectionInfo;
+begin
+  if (connectionIndex >=0) and (connectionIndex < mConnections.Count) then
+  begin
+    bInfo := TBrokerConnectionInfo(mConnections[connectionIndex]);
+    if (bInfo.LastContext <> newContext) then
+    begin
+      bInfo.LastContext := newContext;
+      RebuildConnectionList();
+    end;
+  end
+  else
+    Assert(false);
+end;
+{
+procedure TfrmSharedBrokerDebugger.OnClientRpcLogClosedEventHandler(object sender, EventArgs e)
+var
+  CInfo: TClientInfo;
+begin
+  cInfo := (ClientInfo)sender;
+  for i:=0 to Pred(mClients.Count) do
+  begin
+    if (cInfo.UniqueId=((ClientInfo)mClients[i]).UniqueId) then
+    begin
+      currentClientsCheckedListBox.SetItemChecked(i,false);
+      break;
+    end;
+  end;
+end;
+
+
+procedure TfrmSharedBrokerDebugger.OnConnectionRpcLogClosedEventHandler(object sender, EventArgs e)
+var
+  BInfo: TBrokerConnectionInfo;
+begin
+  bInfo := (TBrokerConnectionInfo)sender;
+  for i:=0 to Pred(mConnections.Count) do
+  begin
+    if (bInfo.ConnectionIndex = ((BrokerConnectionInfo)mConnections[i]).ConnectionIndex) then
+    begin
+      actualBrokerConnectionsCheckedListBox.SetItemChecked(i,false);
+      break;
+    end;
+  end;
+end;
+
+
+procedure TfrmSharedBrokerDebugger.SetupVistaSession;
+begin
+  if (mVistaSession = nil) then
+  begin
+    mVistaSession := TSharedBroker.Create;
+
+        ISharedBrokerEvents_OnLogoutEventHandler OnLogoutEH := new ISharedBrokerEvents_OnLogoutEventHandler(this.OnLogoutEventHandler);
+        ISharedBrokerEvents_OnClientConnectEventHandler OnClientConnectEH := new ISharedBrokerEvents_OnClientConnectEventHandler(this.OnClientConnectEventHandler);
+        ISharedBrokerEvents_OnClientDisconnectEventHandler OnClientDisconnectEH := new ISharedBrokerEvents_OnClientDisconnectEventHandler(this.OnClientDisconnectEventHandler);
+        ISharedBrokerEvents_OnRpcCallRecordedEventHandler OnRpcCallRecorededEH := new ISharedBrokerEvents_OnRpcCallRecordedEventHandler(this.OnRpcCallRecordedEventHandler);
+        ISharedBrokerEvents_OnContextChangedEventHandler OnContextChangedEH := new ISharedBrokerEvents_OnContextChangedEventHandler(this.OnContextChangedEventHandler);
+        // Set up the event handlers here.
+        mVistaSession.OnClientConnect +:= OnClientConnectEH;
+        mVistaSession.OnClientDisconnect +:= OnClientDisconnectEH;
+        mVistaSession.OnRpcCallRecorded +:= OnRpcCallRecorededEH;
+        mVistaSession.OnLogout +:= OnLogoutEH;
+        mVistaSession.OnContextChanged +:= OnContextChangedEH;
+
+        int uniqueClientId;
+
+        // string listenerPort := ListenerPort.ToString();
+        ISharedBrokerErrorCode brokerError := mVistaSession.BrokerConnect(
+          Application.ExecutablePath, 
+          ISharedBrokerClient.DebuggerClient,
+          '',      // server/port pair is of no meaning in the debugger
+          false,   // debug mode is of no meaning in debugger
+          false,   // AllowShared connection is of no meaning in debugger
+          30,      // Connection time out limit
+          out uniqueClientId);
+
+        Debug.Assert(brokerError = ISharedBrokerErrorCode.Success);
+        RebuildClientList(kNoUniqueClientId);
+    RebuildConnectionList();
+  end;
+end;
+
+procedure TfrmSharedBrokerDebugger.CloseDownVistaSession;
+begin
+  if (mVistaSession <> nil) then
+  begin
+    mVistaSession.BrokerDisconnect();
+    mVistaSession.Dispose();
+    mVistaSession.Finalize();
+    mVistaSession := nil;
+  end;
+end;
+}
+procedure TfrmSharedBrokerDebugger.RebuildClientList(uniqueClientId: Integer);
+var
+  ErrorCode: ISharedBrokerErrorCode;
+  Count: Integer;
+  id: Integer;
+  Name: WideString;
+  ConnectIndex: Integer;
+  CInfo: TClientInfo;
+  i: Integer;
+  FoundIndex: Integer;
+begin
+  count := 0;
+  Assert(mVistaSession <> nil);
+
+  errorCode := mVistaSession.GetConnectedClientCount(count);
+  if (errorCode = Success) then
+  begin
+    id        := kNoUniqueClientId;
+    name      := '';
+    connectIndex  := kInvalidConnectionIndex;
+
+    if (uniqueClientId = kNoUniqueClientId) or (count = mClients.Count) then
+    begin
+      // Hide any open RPC logger windows
+      for i:=0 to Pred(mClients.Count) do
+        (TClientInfo(mClients[i])).Visible := false;
+
+      // Scrap the current list
+      mClients.Clear();
+
+      // Scrap the listbox list
+      currentClientsCheckedListBox.Items.Clear();
+
+      for i:=0 to Pred(count) do
+      begin
+        errorCode := mVistaSession.GetClientIdAndNameFromIndex(i, id, name);
+        if (errorCode = Success) then
+        begin
+          errorCode := mVistaSession.GetActiveBrokerConnectionIndexFromUniqueClientId(id, connectIndex);
+          if (errorCode = Success) then
+          begin
+            cInfo := TClientInfo.Create(id,name,connectIndex,kRpcHistoryEnabledDefault);
+//            cInfo.OnLogClosed +:= new EventHandler(OnClientRpcLogClosedEventHandler);
+            mClients.Add(cInfo);
+            currentClientsCheckedListBox.Items.Add(cInfo.Name+'   connection = '+IntToStr(cInfo.BrokerConnectionIndex)+'  Id = '+IntToStr(cInfo.UniqueId));
+          end;
+        end;
+      end;
+    end
+    else
+    begin
+      if (count > mClients.Count) then
+      begin
+        // We need to add a client to the list
+        errorCode := mVistaSession.GetClientNameFromUniqueClientId(uniqueClientId, name);
+        if (errorCode = Success) then
+        begin
+          errorCode := mVistaSession.GetActiveBrokerConnectionIndexFromUniqueClientId(uniqueClientId, connectIndex);
+          if (errorCode = Success) then
+          begin
+            cInfo := TClientInfo.Create(uniqueClientId,name,connectIndex,kRpcHistoryEnabledDefault);
+//            cInfo.OnLogClosed +:= new EventHandler(OnClientRpcLogClosedEventHandler);
+            mClients.Add(cInfo);
+            currentClientsCheckedListBox.Items.Add(cInfo.Name+'   connection = '+IntToStr(cInfo.BrokerConnectionIndex)+'  Id = '+IntToStr(cInfo.UniqueId));
+          end;
+        end;
+      end
+      else if (count < mClients.Count) then
+      begin
+        // We need to delete a client from the list
+        foundIndex := -1;
+
+        for i:=0 to Pred(mClients.Count) do
+        begin
+          cInfo := TClientInfo(mClients[i]);
+         if (cInfo.UniqueId = uniqueClientId) then
+          begin
+            foundIndex := i;
+            break;
+          end;
+        end;
+        if (foundIndex <> -1) then
+        begin
+          (TClientInfo(mClients[foundIndex])).Visible := false;
+          mClients.Delete(foundIndex);
+          currentClientsCheckedListBox.Items.Delete(foundIndex);
+        end;
+      end;
+    end;
+  end;
+end;
+
+
+procedure TfrmSharedBrokerDebugger.RebuildConnectionList;
+var
+  ErrorCode: ISharedBrokerErrorCode;
+  I, IndexCount: integer;
+  BInfo: TBrokerConnectionInfo;
+  ServerIP: WideString;
+  ServerPort: Integer;
+  LastContext: WideString;
+begin
+  IndexCount := 0;
+
+  for i:=0 to Pred(mConnections.Count) do
+    (TBrokerConnectionInfo(mConnections[i])).Visible := false;
+
+  mConnections.Clear();
+  actualBrokerConnectionsCheckedListBox.Items.Clear();
+
+     Assert(mVistaSession <> nil);
+
+  errorCode := mVistaSession.GetActiveBrokerConnectionIndexCount(indexCount);
+  if (errorCode = Success) and (indexCount > 0) then
+  begin
+    serverIp := '';
+    serverPort := 0;
+    lastContext := '';
+
+    for i:=0 to Pred(indexCount) do
+    begin
+      errorCode := mVistaSession.GetActiveBrokerConnectionInfo(i, serverIp, serverPort, lastContext);
+      if (errorCode = Success) then
+      begin
+        bInfo := TBrokerConnectionInfo.Create(i,serverIp,serverPort,lastContext);
+//            bInfo.OnLogClosed +:= new EventHandler(OnConnectionRpcLogClosedEventHandler);
+        mConnections.Add(bInfo);
+        actualBrokerConnectionsCheckedListBox.Items.AddObject(IntToStr(bInfo.ConnectionIndex) + '  server: '+bInfo.ConnectedServerIP+'  server port: '+IntToStr(bInfo.ConnectedServerPort) + '   Last Context = ' + bInfo.LastContext, bInfo);
+      end;
+    end;
+  end;
+end;
+{
+    private void MaxAllClientRpcLogEntriesNumericUpDown_ValueChanged(object sender, System.EventArgs e)
+    begin
+      // In case the max entry value is less than the rpc log entries delete the entries
+      while (maxAllClientRpcLogEntriesNumericUpDown.Value < rpcCallLogListBox.Items.Count)
+        rpcCallLogListBox.Items.RemoveAt(0);
+    end;
+
+    private void CurrentClientsCheckedListBox_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
+    begin
+      ClientInfo cInfo := (ClientInfo)mClients[e.Index];
+
+      if (e.NewValue = CheckState.Checked) then
+      begin
+        cInfo.Visible := true;
+        // Transfer the current list of rpc call entries from the all rpc log
+        // that correspond to this client
+        RpcLogEntry entry;
+        for i:=0 to Pred(rpcCallLogListBox.Items.Count) do
+        begin
+          entry := (RpcLogEntry)rpcCallLogListBox.Items[i];
+          if (entry.UniqueClientId = cInfo.UniqueId) then
+            cInfo.AddRpcLogEntry(entry,true);
+        end;
+      end;
+      else 
+        cInfo.Visible := false;
+    end;
+
+    private void ActualBrokerConnectionsCheckedListBox_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
+
+    private void RpcCallLogListBox_SelectedIndexChanged(object sender, System.EventArgs e)
+    begin
+      DisplayRpcEntry((RpcLogEntry)rpcCallLogListBox.Items[rpcCallLogListBox.SelectedIndex]);
+      copySelectedRpcToClipboardMenuItem.Enabled := true;
+    end;
+
+procedure TfrmSharedBrokerDebugger.DisplayRpcEntry(entry: TRpcLogEntry)
+  List: TStringList;
+begin
+  list := entry.CreateParamsDisplayString().Split('\n');
+      paramsListBox.Items.Clear();
+      foreach(string s in list)
+        paramsListBox.Items.Add(s);
+
+      resultsRichTextBox.Text      := entry.CreateResultsDisplayString();
+      rpcNameOutputLabel.Text      := entry.Name;
+      rpcDebugIdOutputLabel.Text    := entry.UniqueId.ToString();
+      contextOutputLabel.Text      := entry.Context;
+      string duration  ;
+      if (entry.Duration < 1) then
+        duration := '<1ms'
+      else
+        duration := entry.Duration.ToString() + 'ms';
+      durationOutputLabel.Text    := duration;
+      clientNameOutputLabel.Text    := entry.ClientName;
+      clientDebugIdOutputLabel.Text  := entry.UniqueClientId.ToString();
+    end;
+
+procedure TfrmSharedBrokerDebugger.copySelectedRpcToClipboardMenuItem_Click(object sender, System.EventArgs e)
+    begin
+      // Build a string and put it on the clipboard here.
+      Clipboard.SetDataObject(((RpcLogEntry)rpcCallLogListBox.SelectedItem).CreateClipboardString());
+    end;
+  end;
+end;
+}
+procedure TfrmSharedBrokerDebugger.FormCreate(Sender: TObject);
+var
+ UniqueClientId: Integer;
+ ErrMsg: WideString;
+ LoginStr: WideString;
+begin
+  LoginStr := '';
+  mClients := TList.Create;
+  mConnections := TList.Create;
+  mVistaSession.BrokerConnect(ParamStr(0),DebuggerClient,'',False,True,True,isemRaise,0,LoginStr,UniqueClientId,ErrMsg);
+  mVistaSession.OnRpcCallRecorded := OnRpcCallRecordedEventHandler;
+  mVistaSession.OnClientConnect := OnClientConnectEventHandler;
+  mVistaSession.OnClientDisconnect := OnClientDisconnectEventHandler;
+  mVistaSession.OnContextChanged := OnContextChangedEventHandler;
+  mDoingAForcedLogoutOfClients := false;
+  mOnLogoutPending := false;
+  RebuildClientList(kNoUniqueClientId);
+  RebuildConnectionList;
+end;
+
+procedure TfrmSharedBrokerDebugger.FormDestroy(Sender: TObject);
+begin
+  mClients.Free;
+  mConnections.Free;
+  mVistaSession.BrokerDisconnect;
+end;
+
+procedure TfrmSharedBrokerDebugger.btnExitClick(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TfrmSharedBrokerDebugger.actualBrokerConnectionsCheckedListBoxClickCheck(
+  Sender: TObject);
+var
+  BInfo, BInfo2: TBrokerConnectionInfo;
+  Entry: TRpcLogEntry;
+  CurrVal: Integer;
+  i: Integer;
+begin
+  CurrVal := actualBrokerConnectionsCheckedListBox.ItemIndex;
+  bInfo := (TBrokerConnectionInfo(mConnections[CurrVal]));
+  bInfo2 := TBrokerConnectionInfo(actualBrokerConnectionsCheckedListBox.Items.Objects[CurrVal]);
+
+      if (actualBrokerConnectionsCheckedListBox.Checked[CurrVal]) then
+      begin
+        bInfo.Visible := true;
+        // Transfer the current list of rpc call entries from the all rpc log
+        // That correspond to this connection
+        for i:=0 to Pred(rpcCallLogListBox.Items.Count) do
+        begin
+          entry := (TRpcLogEntry(rpcCallLogListBox.Items.Objects[i]));
+          if (entry.ConnectionIndex = bInfo2.ConnectionIndex) then
+//          if (entry.ConnectionIndex = ActualBrokerConnectionsCheckedListBox.Items[CurrVal]) then
+            TBrokerConnectionInfo(mConnections[CurrVal]).AddRpcLogEntry(entry,true);
+        end;
+      end
+      else
+        bInfo.Visible := false;
+end;
+
+procedure TfrmSharedBrokerDebugger.Exit1Click(Sender: TObject);
+begin
+  Halt;
+end;
+
+procedure TfrmSharedBrokerDebugger.About1Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+procedure TfrmSharedBrokerDebugger.CopyConnectionsLogToClipboard1Click(
+  Sender: TObject);
+begin
+  clientConnectionsLogRichTextBox.SelectAll;
+  clientConnectionsLogRichTextBox.CopyToClipboard;
+end;
+
+procedure TfrmSharedBrokerDebugger.CurrentClientsCheckedListBoxClickCheck(
+  Sender: TObject);
+var
+  CInfo: TClientInfo;
+  Entry: TRpcLogEntry;
+  CurrVal: Integer;
+  i: Integer;
+  listobjUniqueClientID: Integer;
+begin
+  CurrVal := CurrentClientsCheckedListBox.ItemIndex;
+  CInfo := (TClientInfo(mclients[CurrVal]));
+  listobjUniqueClientId := CInfo.UniqueId;
+
+  if (CurrentClientsCheckedListBox.Checked[CurrVal]) then
+  begin
+    CInfo.Visible := true;
+    // Transfer the current list of rpc call entries from the all rpc log
+    // That correspond to this connection
+    for i:=0 to Pred(rpcCallLogListBox.Items.Count) do
+    begin
+      entry := (TRpcLogEntry(rpcCallLogListBox.Items.Objects[i]));
+      if (entry.UniqueClientId = listobjUniqueClientId) then
+//          if (entry.ConnectionIndex = ActualBrokerConnectionsCheckedListBox.Items[CurrVal]) then
+        TClientInfo(mClients[CurrVal]).AddRpcLogEntry(entry,true);
+    end;
+  end
+  else
+    CInfo.Visible := false;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uBrokerConnectionInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uBrokerConnectionInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uBrokerConnectionInfo.pas	(revision 1676)
@@ -0,0 +1,166 @@
+unit uBrokerConnectionInfo;
+
+interface
+
+uses Windows, Classes, SysUtils, uRpcLogEntry, fClientRPCLogger, Forms;
+
+Type
+{
+  TRPCLogEntry = class
+  end;
+}
+  TClientRPCLogger = class
+  private
+    FText: String;
+    FVisible: Boolean;
+  public
+    procedure AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
+    property Text: String read FText write FText;
+    property Visible: Boolean read FVisible write FVisible;
+  end;
+
+  TBrokerConnectionInfo = class(TPersistent)
+  private
+    FRpcLogger: TfrmRPCClientLogger;
+    FConnectionIndex: Integer;
+    FConnectedServerIp: String;
+    FConnectedServerPort: Integer;
+    FLastContext: String;
+  protected
+    function GetVisible: Boolean;
+    procedure SetVisible(Value: Boolean);
+  public
+    Constructor Create(); overload; virtual;
+    Constructor Create(index: Integer; ip: String; port: Integer; lastContext: String); overload; virtual;
+    function MakeListItemString: String; virtual;
+    function ToString: String;
+    procedure AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: bool);
+    property ConnectionIndex: Integer read FConnectionIndex write FConnectionIndex;
+    property ConnectedServerIp: String read FConnectedServerIP write FConnectedServerIP;
+    property ConnectedServerPort: Integer read FConnectedServerPort write FConnectedServerPort;
+    property LastContext: String read FLastContext write FLastContext;
+    property Visible: Boolean read GetVisible write SetVisible;
+  end;
+
+
+const
+  kNoConnectionIndex = -1;
+  kNoServerIp: String = '0.0.0.0';
+  kNoConnectedServerPort: Integer = 0;
+  kNoLastContext: String =   'NO CONTEXT';
+
+implementation
+
+Constructor TBrokerConnectionInfo.Create;
+begin
+  ConnectionIndex := kNoConnectionIndex;
+  ConnectedServerIp := kNoServerIp;
+  ConnectedServerPort := kNoConnectedServerPort;
+  LastContext := kNoLastContext;
+end;
+
+{
+/// <summary>
+/// BrokerConnectionInfo is the parameterized constructor
+/// </summary>
+/// <param name="index"></param>
+/// <param name="ip"></param>
+/// <param name="port'></param>
+/// <param name='lastContext'></param>
+}
+Constructor TBrokerConnectionInfo.Create(index: Integer; ip: String; port: Integer; lastContext: String);
+begin
+  FConnectionIndex := index;
+  FConnectedServerIp := ip;
+  FConnectedServerPort := port;
+  FLastContext := lastContext;
+end;
+
+{
+ /// <summary>
+ /// MakeListItemString makes a string from its members intended
+ /// to be used for list items in a list box
+ /// </summary>
+ /// <param name='listItemString'></param>
+}
+function TBrokerConnectionInfo.MakeListItemString: String;
+begin
+  Result := ToString;
+end;
+
+{
+ /// <summary>
+ /// ToString returns a readable string format of the member data
+ /// </summary>
+ /// <returns></returns>
+}
+function TBrokerConnectionInfo.ToString: String;
+begin
+  Result := IntToStr(ConnectionIndex)+' server IP='+ConnectedServerIp+' server port='+IntToStr(ConnectedServerPort)+' last context='+LastContext;
+end;
+
+{
+ /// <summary>
+ /// AddRpcLogEntry adds a single log entry to the broker connection
+ /// visual log box
+ /// </summary>
+ /// <param name='entry'></param>
+ /// <param name='overrideCheckBox'></param>
+}
+
+procedure TBrokerConnectionInfo.AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: bool);
+begin
+  if(FRpcLogger <> nil) then
+    FRpcLogger.AddRpcLogEntry(entry,overrideCheckBox);
+end;
+
+procedure TBrokerConnectionInfo.SetVisible(Value: Boolean);
+begin
+  if (value) then
+  begin
+    if(FRpcLogger = nil) then
+    begin
+      FRpcLogger := TfrmRpcClientLogger.Create(Application);
+// ??      FRpcLogger.OnRpcLoggerClose += new EventHandler(OnRpcLoggerClosedEventHandler);
+      FRpcLogger.Caption := 'RPC Log for connection '+IntToStr(ConnectionIndex);
+    end;
+    FRpcLogger.Visible := true;
+  end
+  else
+    if(FRpcLogger <> nil) then
+    begin
+      FRpcLogger.Visible := false;
+      FRpcLogger := nil;
+    end;
+end;
+
+function TBrokerConnectionInfo.GetVisible: Boolean;
+begin
+  result := false;
+  if(FRpcLogger <> nil) then
+    result := FRpcLogger.Visible;
+end;
+
+{
+/// <summary>
+/// OnLogClosed is called when the ClientRpcLogger window is called
+/// Any event handlers by owners of this object should assign
+/// an event handler to this event
+/// </summary>
+}
+{ // TODO
+procedure EventHandler OnLogClosed;
+private void OnRpcLoggerClosedEventHandler(object sender, EventArgs e)
+begin
+  // Pass the message on to my owner
+  Visible := false;
+  OnLogClosed(Self,nil);
+end;
+}
+
+procedure TClientRPCLogger.AddRpcLogEntry(entry: TRPCLogEntry; overrideCheckBox: Boolean);
+begin
+//    TODO
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uClientInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uClientInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uClientInfo.pas	(revision 1676)
@@ -0,0 +1,154 @@
+unit uClientInfo;
+
+interface
+
+uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  uBrokerConnectionInfo, uRpcLogEntry, fClientRPCLogger;
+
+
+type
+
+{
+/// <summary>
+/// Summary description for ClientInfo.
+/// </summary>
+}
+  TClientInfo = class(TPersistent)
+  private
+    FUniqueId: Integer;
+    FName: String;
+    FBrokerConnectionIndex: Integer;
+    FRpcHistoryEnabled: Boolean;
+    FRpcLogger: TfrmRpcClientLogger;
+  protected
+    function GetVisible: Boolean;
+    procedure SetVisible(Value: Boolean);
+    procedure Initialize;
+  public
+    Constructor Create; overload; virtual;
+    Constructor Create(uniqueId: Integer; name: String; connectionIndex: Integer; historyEnabled: Boolean); overload; virtual;
+    procedure AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
+    function MakeCheckBoxString: String;
+    function ToString: String;
+    property Visible: Boolean read GetVisible write SetVisible;
+    property Name: String read FName write FName;
+    property RpcHistoryEnabled: Boolean read FRpcHistoryEnabled write FRPCHistoryEnabled;
+    property UniqueId: Integer read FUniqueId write FUniqueId;
+    property BrokerConnectionIndex: Integer read FBrokerConnectionIndex write FBrokerConnectionIndex;
+  end;
+
+const
+  kRpcHistoryEnabledDefault: Boolean = true;
+  kBrokerConnectionIndexDefault: Integer = -1;
+
+implementation
+
+Constructor TClientInfo.Create;
+begin
+  inherited;
+  Initialize;
+end;
+{
+    /// <summary>
+    /// ClientInfo parameterized constructor
+    /// </summary>
+    /// <param name="uniqueId"></param>
+    /// <param name="name"></param>
+    /// <param name="connectionIndex"></param>
+    /// <param name="historyEnabled"></param>
+}
+Constructor TClientInfo.Create(uniqueId: Integer; name: String; connectionIndex: Integer; historyEnabled: Boolean);
+begin
+  Create;
+
+      FUniqueId := uniqueId;
+      FName := name;
+      FBrokerConnectionIndex := connectionIndex;
+      FRpcHistoryEnabled := historyEnabled;
+end;
+
+procedure TClientInfo.AddRpcLogEntry(entry: TRpcLogEntry; overrideCheckBox: Boolean);
+begin
+      if(FRpcLogger <> nil) then
+        FRpcLogger.AddRpcLogEntry(entry, overrideCheckBox);
+end;
+
+procedure TClientInfo.SetVisible(Value: Boolean);
+begin
+  if(value) then
+  begin
+    if(FRpcLogger = nil) then
+    begin
+      FRpcLogger := TfrmRpcClientLogger.Create(Application);
+// TODO      FRpcLogger.OnRpcLoggerClose += new EventHandler(OnRpcLoggerClosedEventHandler);
+      FRpcLogger.Caption := 'RPC Log for  '+Name+' ID='+IntToStr(UniqueId);
+    end;
+    FRpcLogger.Visible := true;
+  end
+  else
+  begin
+    if(FRpcLogger <> nil) then
+    begin
+            FRpcLogger.Visible := false;
+            FRpcLogger := nil;
+    end;
+  end;
+end;
+
+function TClientInfo.GetVisible: Boolean;
+begin
+  result := false;
+  if (FRpcLogger <> nil) then
+    result := FRpcLogger.Visible;
+end;
+{
+    /// <summary>
+    /// OnLogClosed is called when the ClientRpcLogger window is called
+    /// Any event handlers by owners of this object should assign 
+    /// an event handler to this event
+    /// </summary>
+}
+// TODO
+//    public EventHandler OnLogClosed;
+{
+    /// <summary>
+    /// MakeCheckBoxString creates a string based on the internal members
+    /// This string is intended to be used for check box list entries.
+    /// </summary>
+    /// <param name="checkBoxString"></param>
+}
+function TClientInfo.MakeCheckBoxString: String;
+begin
+  Result := ToString;
+end;
+
+{
+    /// <summary>
+    /// ToString returns a readable string representation of the member
+    /// </summary>
+    /// <returns></returns>
+}
+function TClientInfo.ToString: String;
+begin
+  result := FName+' connection='+IntToStr(FBrokerConnectionIndex)+' id='+IntToStr(FUniqueId);
+end;
+
+procedure TClientInfo.Initialize;
+begin
+      FBrokerConnectionIndex := kBrokerConnectionIndexDefault;
+      FRpcHistoryEnabled := kRpcHistoryEnabledDefault;
+      FRpcLogger := nil;
+end;
+
+// TODO
+{
+procedure TClientInfo.OnRpcLoggerClosedEventHandler(object sender, EventArgs e)
+begin
+  // Pass the message on to my owner
+  Visible := false;
+  OnLogClosed(Self,nil);
+end;
+}
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uParam.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uParam.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uParam.pas	(revision 1676)
@@ -0,0 +1,414 @@
+unit uParam;
+
+interface
+
+uses
+  Classes;
+
+Type
+  TParamType = (Literal, Reference, List, Undefined);
+
+  TParamMult = class
+  private
+    mName: String;
+    mMultiple: NameValueCollection;
+  protected
+    function GetCount: Integer;
+    function GetFirst: String;
+    function GetLast: String;
+    function GetMultiple(index: String): string;
+    procedure SetMultiple(index, value: string);
+  public
+    property Name: String read mName write mName;
+    property Count: Integer read GetCount;
+    property First: String read GetFirst;
+    property Last: String read GetLast;
+    property Self[index: string] read GetMultiple write SetMultiple;
+  end;
+
+  TParamRecord = class
+  private
+    mValue: String;
+    mPType: TParamType;
+    mMult: TParamMult;
+  public
+    property Value: String read mValue write mValue;
+    property PType: TParamType read mPType write mPType;
+    property Mult: TParamMult read mMult write mMult;
+  end;
+
+  TParam = class
+  private
+    mParameters: TList;
+  protected
+    procedure SetParameter(index: Integer; parameter: TParamRecord);
+    function GetParameter(index: Integer): TParamRecord;
+  public
+    Constructor Create; overload;
+    Constructor Create(rpcParams: String); overload;
+    procedure Clear;
+    property ParamRecord[index: Integer]: TParam read GetParameter write SetParameter;
+    property Count: Integer read GetCount;
+  end;
+
+
+implementation
+
+  // Thes classes are ported from Delphi and have hardly been tested.
+  // Use them at your own discression.
+
+  /// <summary>
+  /// Summary description for Param.
+  /// </summary>
+procedure TParam.Clear;
+var
+  i: Integer;
+begin
+  for i:=0 to Pred(mParameters.Count) do
+        mParameters[i] := nil;
+
+  mParameters.Clear;
+end;
+
+procedure TParam.Assign(source: TParam)
+begin
+  Clear;
+  for i:=0 to Pred(source.Count) do
+  begin
+    Self[i].Value := source[i].Value;
+    Self[i].PType := source[i].PType;
+    Self[i].Mult.Assign(source[i].Mult);
+  end;
+end;
+
+
+Constructor TParam.Create;
+begin
+  mParameters := TList.Create;
+end;
+
+    /// <summary>
+    /// This Param constructor takes a string and splits it into ParamRecords
+    /// </summary>
+    /// <param name:='rpcParams'></param>
+Constructor TParam.Create(rpcParams: String)
+var
+  i, curStart, lengthOfRpcParams, EndOfSegment: Integer;
+  aRef, aVal: String;
+  ParamRecord: TParamRecord;
+begin
+
+const
+      // kSEP_FS: char = 28;
+  kSEP_GS: char = 29;
+  kSEP_US: char = 30;
+  kSEP_RS: char = 31;
+
+  mParameters := TList.Create;
+  if (rpcParams <> nil) then
+  begin
+    curStart := 0;
+    i:= 0;
+    lengthOfrpcParams := Length(rpcParams);
+    while (curStart < lengthOfrpcParams-1)
+    begin
+      paramRecord := Self[i];
+      case (rpcParams[curStart]) of
+        'L' : paramRecord.PType := ParamType.Literal;
+        'R' : paramRecord.PType := ParamType.Reference;
+        'M' : paramRecord.PType := ParamType.List;
+        else : paramRecord.PType := ParamType.Undefined;
+      end;
+      curStart := CurStart + 2;
+      if (Self[i].PType = ParamType.List) then
+      begin
+        endOfSegment := 0;
+        while (rpcParams[curStart] <> kSEP_GS) do
+        begin
+          endOfSegment := PosNext(kSEP_US,curStart,lengthOfrpcParams,rpcParams);
+          aRef := rpcParams.Substring(curStart,endOfSegment - curStart);
+          curStart := endOfSegment + 1;
+          endOfSegment := PosNext(kSEP_RS,curStart,lengthOfrpcParams,rpcParams);
+          aVal := rpcParams.Substring(curStart,endOfSegment - curStart);
+          curStart := endOfSegment + 1;
+          Self[i].Mult[aRef] := aVal;
+        end;
+        if (endOfSegment = 0) then
+        begin
+          endOfSegment := PosNext(kSEP_GS,curStart,lengthOfrpcParams,rpcParams);
+          curStart := endOfSegment + 1;
+        end
+        else
+        begin
+            endOfSegment := PosNext(kSEP_GS,curStart,lengthOfrpcParams,rpcParams);
+            Self[i].Value := rpcParams.Substring(curStart,endOfSegment-curStart);
+            curStart := endOfSegment + 1;
+        end;
+        Inc(i);
+      end;
+  end
+  else
+  begin
+        // The user of this routine should always pass in a valid string
+        Assert(false);
+  end;
+end;
+
+Destructor TParam.Destroy;
+begin
+  Clear;
+  mParameters.Free;
+end;
+
+    // Private Methods
+function TParam.GetCount: Integer;
+begin
+  Result := mParameters.Count;
+end;
+
+function TParam.GetParameter(int index): ParamRecord;
+begin
+  if (index >= mParameters.Count) then
+  begin
+    while (mParameters.Count <:= index) do // Setup placehoders
+       mParameters.Add(nil);
+  end;
+  if (mParameters[index] = nil)
+  begin
+    Result := TParamRecord.Create();
+    mParameters[index] := result;
+  end
+  else
+    Result := TParamRecord(mParameters[index]);
+end;
+
+procedure TParam.SetParameter(index: Integer; parameter: ParamRecord);
+begin
+  if (index >= mParameters.Count) then
+    while (mParameters.Count <= index) do // Set up placeholders
+      mParameters.Add(nil);
+
+   if (mParameters[index] = nil) then
+     mParameters[index] := parameter;
+end;
+
+function TParam.PosNext(aChar: char; startPos, lengthOfRpcParams: Integer; rpcParams: String): Integer;
+begin
+  Assert(rpcParams <> nil);
+
+  Result := 0;
+  while (result = 0) and (startPos < lengthOfRpcParams)  do
+  begin
+    if(rpcParams[startPos] = aChar)
+      Result := startPos;
+    Inc(startPos);
+  end;
+end;
+
+
+Constructor TParamRecord.Create;
+begin
+  mMult := new ParamMult();
+  mMult.Name := ParamMult.kMultNameDefault;
+  mValue := nil;
+  mPType := ParamType.Undefined;
+end;
+
+Destructor TParamRecord.Destroy;
+begin
+      if(mMult <> nil)
+      begin
+        mMult := nil;
+      end;
+    end;
+
+  // The ParamMult class uses a NameValueCollection dictionary/hashtable as opposted to a string list
+  // like in Delphi. I think I have ported this properly preserving the desired functionality
+  // I think the NameValueCollection is the right answer here, but there may be some
+  // nuances that have been missed.
+  // Also, an enumerator should be created (provide by NameValueCollection) if the
+  // list is to be iterated over a lot between changes (for read only access). This
+  // will provided enhanced performance.
+const kMultInstanceNameDefault: string := 'Mult_instance';
+const kMultNameDefault: string := 'Mult';
+
+    // Public Methods
+Constructor TParamMult.Create;
+begin
+  mMultiple := TNameValueCollection.Create;
+  mName := '';
+end;
+
+
+Destructor TParamMult.Destroy;
+begin
+  ClearAll;
+  mMultiple.Free;
+  mMultiple := nil;
+  mName := nil;
+end;
+    
+function TParamMult.Position(subscript: string): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+
+  for i:=0 to Pred(mMultiple.Count) do
+  begin
+    if (mMultiple.GetKey(i) = subscript)
+    begin
+      Result := i;
+      break;
+    end;
+  end;
+end;
+
+
+function TParamMult.Subscript(position: Integer): String;
+begin
+  if(position > -1 && position < Count) then
+    result := mMultiple.GetKey(position);
+end;
+    /// <summary>
+    /// In Assign all of the items from source object are copied one by one into the
+    /// target.  So if the source is later destroyed, target object will continue
+    /// to hold the copy of all elements, completely unaffected.
+    /// The source can only be a NameValueCollection or else it with throw an exception.
+    /// </summary>
+    /// <param name:='source'></param>
+{
+    public void      Assign(object source)
+    begin
+      ClearAll();
+      if (source is ParamMult)
+        mMultiple.Add((NameValueCollection)source);
+      else
+        throw(new ParamMultException('Invalid source type'+ source.GetType()+' in method Assign'));
+    end;
+}
+    /// <summary>
+    /// Order returns the subscript string of the next or previous element from the
+    /// StartSubscript.  This is very similar to the $O function available in M.
+    /// nil string ('') is returned when reaching beyong the first or last
+    /// element, or when list is empty. Note: A major difference between the M $O 
+    /// and this function is that in this function StartSubscript must identify a valid subscript
+    /// in the list.
+    /// </summary>
+    /// <param name:='startSubscript'></param>
+    /// <param name:='direction'></param>
+    /// <returns></returns>
+function TParamMult.Order(startSubscript: String; direction: Integer): String;
+var
+  index: Integer;
+begin
+  if (startSubscript = '') then
+  begin
+    if(direction > 0) then
+      result := First
+    else
+      result := Last;
+  end
+  else
+  begin
+    index := Position(startSubscript);
+    if(index > -1) then
+    begin
+      if (index < (Count -1)) and (direction > 0) then
+        result := mMultiple[index+1]
+      else
+        result := mMultiple[index-1];
+    end;
+  end;
+end;
+
+{
+    public class    ParamMultException : Exception
+    begin
+      public ParamMultException(string errorString)
+        :base(kParamMultExceptionLabel + errorString)beginend;
+      private const string kParamMultExceptionLabel := 'ParamMult Exeption: ';
+    end;
+}
+procedure TParamMult.ClearAll;
+begin
+  mMultiple.Clear();
+end;
+
+
+function TParamMult.GetCount: Integer;
+begin
+  Result := mMultiple.Count;
+end;
+
+
+function TParamMult.GetFirst: String;
+begin
+  Result := '';
+  if (mMultiple.Count > 0) then
+    Result := mMultiple[0];
+end;
+
+
+function TParamMult.GetLast: String;
+begin
+  Result := '';
+  if (mMultiple.Count > 0) then
+    Result := mMultiple[mMultiple.Count-1];
+end;
+
+
+    /// <summary>
+    /// GetMultiple Returns the VALUE of the element whose subscript is passed.
+    /// </summary>
+    /// <param name:='index'></param>
+    /// <returns></returns>
+function TParamMult.GetMultiple(index: String): String;
+var
+  TryResult: String;
+  StrError: String;
+begin
+  tryResult := '';
+      try
+      begin
+        tryResult := mMultiple[index];
+      end;
+        // The requested string might not be in the string array in which case IndexOf will 
+        // return a -1 so lets handle this through an IndexOutOfRangeException
+//      catch (ArgumentOutOfRangeException)
+      except
+      begin
+        if (Name <> '') then
+          StrError :=Name
+        else
+          StrError := kMultInstanceNameDefault;
+        strError +:= StrError + '[' + index + ']'#0D#0A' is undefined';
+
+        // There was a complicated way to attempt to find this data on exception
+        // in the Delphi unit trpcb.pas in the broker project under
+        // TMult.GetFMultiple. I did not understand this so I will throw an
+        // exception here. -Travis
+
+//        throw( new ParamMultException(strError));
+      end;
+      finally
+      begin
+        result := tryResult;
+      end;
+end;
+
+
+    /// <summary>
+    /// SetMultiple Stores a new element in the multiple.  mMultiple (StringCollection) is the
+    /// structure, which is used to hold the subscript and value pair.  Subscript is stored as 
+    /// the String, value is stored as an object of the string.
+    /// </summary>
+    /// <param name:='index'></param>
+    /// <param name:='Value'></param>
+procedure TParamMult.SetMultiple(index, newElement: String):
+begin
+  mMultiple.Set(index,newElement);
+end;
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uRpcLogEntry.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uRpcLogEntry.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/SharedBrokerDebugger/uRpcLogEntry.pas	(revision 1676)
@@ -0,0 +1,356 @@
+unit uRpcLogEntry;
+
+interface
+
+uses
+      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, TRpcb;
+
+type
+  TDisplayFormat = (dfFormatFullWithoutClientName,dfFormatFullWithClientName,
+                        dfFormatForList);
+
+  TMyString = class(TObject)
+  private
+    FString: String;
+  public
+    Constructor Create(Str: String);
+    procedure Append(Str: String);
+    function ToString: String;
+  end;
+
+  TRpcLogEntry = class(TObject)
+  private
+    mUniqueClientId: Integer;
+    mClientName: String;
+    mConnectionIndex: Integer;
+    mContext: String;
+    mUniqueId: Integer;      // unique rpc id
+    mRpcName: String;
+    mRpcParamsString: String;
+    mRpcResults: String;
+    mRpcEndDateTime: Double;
+    mRpcDuration: Integer;
+    mRpcParams: TParams;
+  protected
+    procedure SetParamsString(Value: String);
+  public
+    Constructor Create; overload;
+    Constructor Create(uniqueClientId: Integer; clientName: String;
+               connectionIndex: Integer; rpcUniqueId: Integer; rpcEndDateTime: Double;
+               rpcDuration: Integer; context, rpcName, rpcParams, rpcResults: String); overload;
+    property StrResults: String read mRpcResults write mRpcResults;
+    property EndDateTime: double read mRpcEndDateTime write mRpcEndDateTime;
+    property Duration: Integer read mRpcDuration write mRpcDuration;
+    property Params: TParams read mRpcParams;
+    property UniqueClientId: Integer read mUniqueClientId write mUniqueClientId;
+    property ClientName: String read mClientName write mClientName;
+    property ConnectionIndex: Integer read mConnectionIndex write mConnectionIndex;
+    property UniqueId: Integer read mUniqueId write mUniqueId;
+    property Context: String read mContext write mContext;
+    property Name: String read mRpcName write mRpcName;
+    property ParamsString: String read mRpcParamsString write SetParamsString;
+    function CreateDisplayString(format: TDisplayFormat): String;
+    function ToString: String;
+    function CreateClipboardString: String;
+    function CreateParamsDisplayString: String;
+    function CreateResultsDisplayString: String;
+  end;
+
+
+const
+  kHeaderStartTag: String    = '________________________RPC START____________________';
+  kRpcTag: String = 'RPC>'#09#09#09;
+  kRpcDebugIdTag: String = 'RPC DEBUG ID>'#09;
+  kClientNameTag: String = 'CLIENT NAME>'#09#09;
+  kClientDebugIdTag: String = 'CLIENT DEBUG ID>'#09;
+  kContextTag: String = 'CONTEXT>'#09#09;
+  kDurationTag: String = 'DURATION>'#09#09;
+    // kTimeDateTag: String = 'END TIME>'#09#09;
+  kParamsTag: String = '________________________PARAMS_______________________';
+  kResultsTag: String = '________________________RESULTS______________________';
+  kHeaderEndTag: String = '________________________RPC END______________________';
+
+function PosNext(SubString: String; CurStart: Integer; S: String): Integer;
+
+implementation
+
+function PosNext(SubString: string; CurStart: Integer; S: String): Integer;
+var
+  Str1: String;
+begin
+  Str1 := Copy(S,CurStart,Length(S));
+  Result := CurStart + Pos(SubString,Str1)-1;
+end;
+
+function TMyString.ToString: string;
+begin
+  Result := FString;
+end;
+
+procedure TMyString.Append(Str: string);
+begin
+  FString := FString + Str;
+end;
+
+constructor TMyString.Create(Str: string);
+begin
+  FString := Str;
+end;
+
+
+procedure TRpcLogEntry.SetParamsString(Value: string);
+begin
+  mRpcParamsString := value;
+        // TODO:
+        // now break the string into a string array and
+        // shove it into the Params
+        // Just rebuild the mParams
+  if (mRpcParams <> nil) then
+  begin
+    mRpcParams.Free;
+    mRpcParams := nil;
+  end;
+
+  mRpcParams := TParams.Create(Application);
+//  mRpcParams.
+end;
+
+  /// <summary>
+  /// Summary description for RpcLogEntry.
+   /// </summary>
+Constructor TRpcLogEntry.Create;
+begin
+  inherited;
+end;
+
+Constructor TRpcLogEntry.Create(uniqueClientId: Integer; clientName: String;
+               connectionIndex: Integer; rpcUniqueId: Integer; rpcEndDateTime: Double;
+               rpcDuration: Integer; context, rpcName, rpcParams, rpcResults: String);
+begin
+  mUniqueClientId  := uniqueClientId;
+  mClientName    := clientName;
+  if (context = '') then
+    mContext := ''
+  else
+    mContext  := context;
+
+  mConnectionIndex := connectionIndex;
+
+  mUniqueId := rpcUniqueId;
+  if (rpcName = '') then
+    mrpcName := ''
+  else
+    mrpcName := rpcName;
+
+  if(rpcParams = '') then
+    mrpcParamsString := ''
+  else
+    mrpcParamsString := rpcParams;
+
+  if(rpcResults = '') then
+    mrpcResults := ''
+  else
+    mrpcResults   := rpcResults;
+
+  mRpcEndDateTime   := rpcEndDateTime;
+  mRpcDuration   := rpcDuration;
+end;
+
+
+function TRpcLogEntry.ToString: String;
+begin
+  Result := CreateDisplayString(dfFormatForList);
+end;
+
+    /// <summary>
+    /// CreateDisplayString returns a string with the rpc params
+    /// formated based on the DisplayFormat format 
+    /// </summary>
+    /// <param name:='format'></param>
+    /// <returns></returns>
+    ///
+const
+  kInitialStringBuilderSize: Integer = 1000;
+  kNamePad: Integer = 31;
+  krpcIdPad: Integer = 5;
+  kcIdpad: Integer = 7;
+  kDurationPad: Integer = 3;
+  kLiteral: String = 'literal';
+  kReference: String = 'reference';
+  kList: String = 'list';
+  kUndefined: String = 'undefined';
+
+
+function TRpcLogEntry.CreateDisplayString(format: TDisplayFormat): String;
+var
+  ResultVal: TMyString;
+begin
+
+  ResultVal := TMyString.Create('');
+
+  case (format) of
+    dfFormatFullWithClientName:
+    begin
+      ResultVal.Append(kHeaderStartTag);
+      ResultVal.Append(#13#10 + kRpcTag      + Name);
+      ResultVal.Append(#13#10 + kRpcDebugIdTag    + IntToStr(UniqueId));
+      ResultVal.Append(#13#10 + kClientNameTag    + ClientName);
+      ResultVal.Append(#13#10 + kClientDebugIdTag  + IntToStr(UniqueClientId));
+      ResultVal.Append(#13#10 + kContextTag    + Context);
+      ResultVal.Append(#13#10 + kDurationTag    + IntToStr(Duration) + 'ms');
+      //ResultVal.Append(#13#10 + kTimeDateTag    + EndDateTime);
+      ResultVal.Append(#13#10 + kParamsTag      + CreateParamsDisplayString);
+      ResultVal.Append(#13#10 + kResultsTag    + CreateResultsDisplayString);
+      ResultVal.Append(#13#10 + kHeaderEndTag);
+    end;
+    dfFormatForList:
+    begin
+//          ResultVal.Append(Name+#09rpcId:='+UniqueId+#09cId:='+UniqueClientId+'  time:='+Duration+'ms  '+ClientName);
+{      if(Duration < 1)
+        durationStr := '<1'
+      else
+       durationStr := Duration.ToString();
+
+      ResultVal.Append(  Name.PadRight(kNamePad)+
+                  ' cId:='+UniqueClientId.ToString().PadRight(kcIdpad)+
+                  ' time:='+duration.PadLeft(kDurationPad)+'ms'+
+                  ' rpcId:='+UniqueId.ToString().PadRight(krpcIdPad)+
+                  ClientName);
+}
+      end;
+    else
+      begin
+          ResultVal.Append(kHeaderStartTag);
+          ResultVal.Append(#13#10 + kRpcTag      + Name);
+          ResultVal.Append(#13#10 + kRpcDebugIdTag    + IntToStr(UniqueId));
+          //ResultVal.Append(#13#10 + kClientNameTag    + ClientName);
+          //ResultVal.Append(#13#10 + kClientDebugIdTag  + UniqueClientId);
+          ResultVal.Append(#13#10 + kContextTag    + Context);
+          ResultVal.Append(#13#10 + kDurationTag    + IntToStr(Duration) + 'ms');
+          //ResultVal.Append(#13#10 + kTimeDateTag    + EndDateTime);
+          ResultVal.Append(#13#10 + kParamsTag      + CreateParamsDisplayString());
+          ResultVal.Append(#13#10 + kResultsTag    + CreateResultsDisplayString());
+          ResultVal.Append(#13#10 + kHeaderEndTag);
+          // Default case is FormatFullWithoutClientName
+      end;
+    end;
+    Result := ResultVal.ToString();
+end;
+    
+function TRpcLogEntry.CreateClipboardString: String;
+var
+  ResultVal: TMyString;
+begin
+  ResultVal := TMyString.Create('');
+      ResultVal.Append(kHeaderStartTag);
+      ResultVal.Append(#13#10#13#10+kRpcTag+Name);
+      ResultVal.Append(#13#10+kRpcDebugIdTag+ IntToStr(UniqueId));
+      ResultVal.Append(#13#10+kClientNameTag+ClientName);
+      ResultVal.Append(#13#10+kClientDebugIdTag+ IntToStr(UniqueClientId));
+      ResultVal.Append(#13#10+kContextTag+Context);
+      ResultVal.Append(#13#10+kDurationTag+ IntToStr(Duration));
+      ResultVal.Append(#13#10#13#10+kParamsTag+#13#10);
+      ResultVal.Append(CreateParamsDisplayString);
+      ResultVal.Append(#13#10#13#10+kResultsTag+#13#10);
+      ResultVal.Append(CreateResultsDisplayString);
+      ResultVal.Append(#13#10#13#10+kHeaderEndTag+#13#10#13#10);
+  Result := ResultVal.ToString();
+end;
+
+// const char kSEP_FS = (char)28;
+const kSEP_GS: String = #29;
+const kSEP_US: String = #30;
+const kSEP_RS: String = #31;
+
+function TRpcLogEntry.CreateParamsDisplayString: String;
+var
+  Str: String;
+  Chr: Char;
+  Chr1: String;
+  TypeStr{, x, y}: String;
+  ResultVal: TMyString;
+  i, {j,} CurrStart: Integer;
+  LengthOfRpcParams: Integer;
+  EndOfSegment: Integer;
+  ARef, AVal: String;
+  Str2: String;
+begin
+  ResultVal := TMyString.Create('');
+  LengthOfRpcParams := Length(mRpcParamsString);
+  if LengthOfRpcParams > 0 then
+  begin
+    Str := mRpcParamsString;
+    CurrStart := 1;
+    i := 1;
+//      for i:=0 to Pred(Params.Count) do
+    while CurrStart < LengthOfRpcParams do
+    begin
+      Chr1 := Copy(Str,CurrStart,1);
+      Chr := PChar(Chr1)^;
+      case Chr of    //
+        'L': typeStr := kLiteral;
+        'R': typeStr := kReference;
+        'M': typeStr := kList;
+        else typeStr := kUndefined ;
+      end;    // case
+      if i <> 1 then
+        ResultVal.Append(#13#10);
+      ResultVal.Append(TypeStr+#9);
+      CurrStart := CurrStart + 2;
+      if TypeStr = kList then
+      begin
+        EndOfSegment := 0;
+        while Copy(Str,CurrStart,1) <> kSep_GS do
+        begin
+          EndOfSegment := PosNext(kSep_US,CurrStart,Str);
+          ARef := Copy(Str,CurrStart,EndOfSegment-CurrStart);
+          CurrStart := EndOfSegment + 1;
+          EndOfSegment := PosNext(kSep_RS,CurrStart,Str);
+          AVal := Copy(Str,CurrStart,EndOfSegment-CurrStart);
+          CurrStart := EndOfSegment + 1;
+          ResultVal.Append(#13#10#9+ARef+#9+AVal);
+          Str2 := #13#10#9+Aref+#9+Aval;
+          Aval := Str2;
+        end;    // while
+        if EndOfSegment = 0 then
+          EndOfSegment := PosNext(kSep_GS,CurrStart,Str);
+        CurrStart := EndOfSegment + 1;
+      end
+      else
+      begin
+        EndOfSegment := PosNext(kSEP_GS,CurrStart,Str);
+        ResultVal.Append(Copy(Str,CurrStart,EndOfSegment-CurrStart));
+        CurrStart := EndOfSegment + 1;
+      end;
+      Inc(i);
+    end;  // while
+  end;
+{
+  else
+      Assert(False);
+}
+{
+    if (i<>0) then
+      ResultVal.Append(#13#10);
+    ResultVal.Append(typeStr+#09+Params[i].Value);
+        if (Params[i].PType = List) then
+        begin
+          for j:=0 to Pred(Params[i].Mult.Count) do
+          begin
+            x := Params[i].Mult.Subscript(j);
+            y := Params[i].Mult[x];
+            ResultVal.Append(#13#10#09+'('+x+'):='+y);
+          end
+        end
+      end;
+}
+  Result := ResultVal.ToString;
+end;
+
+function TRpcLogEntry.CreateResultsDisplayString: String;
+begin
+  Result := StrResults;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/AddServer.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/AddServer.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/AddServer.dfm	(revision 1676)
@@ -0,0 +1,74 @@
+object frmAddServer: TfrmAddServer
+  Left = 287
+  Top = 259
+  Width = 343
+  Height = 147
+  Caption = 'Add Server'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAddress: TLabel
+    Left = 16
+    Top = 16
+    Width = 50
+    Height = 13
+    Caption = 'Address:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object lblPortNumber: TLabel
+    Left = 16
+    Top = 48
+    Width = 75
+    Height = 13
+    Caption = 'Port Number:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object edtAddress: TEdit
+    Left = 104
+    Top = 8
+    Width = 177
+    Height = 21
+    Hint = 'Enter Server Address, either as Server Name or IP Address'
+    TabOrder = 0
+  end
+  object edtPortNumber: TEdit
+    Left = 104
+    Top = 40
+    Width = 113
+    Height = 21
+    Hint = 'Enter the Port Number to use for this server'
+    TabOrder = 1
+  end
+  object bbtnOK: TBitBtn
+    Left = 70
+    Top = 80
+    Width = 75
+    Height = 25
+    TabOrder = 2
+    Kind = bkOK
+  end
+  object bbtnCancel: TBitBtn
+    Left = 190
+    Top = 80
+    Width = 75
+    Height = 25
+    TabOrder = 3
+    Kind = bkCancel
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/AddServer.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/AddServer.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/AddServer.pas	(revision 1676)
@@ -0,0 +1,40 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Add Server to list of personal servers for
+	             selection.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit AddServer;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Buttons;
+
+type
+  TfrmAddServer = class(TForm)
+    lblAddress: TLabel;
+    lblPortNumber: TLabel;
+    edtAddress: TEdit;
+    edtPortNumber: TEdit;
+    bbtnOK: TBitBtn;
+    bbtnCancel: TBitBtn;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmAddServer: TfrmAddServer;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/CCOWRPCBroker.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/CCOWRPCBroker.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/CCOWRPCBroker.pas	(revision 1676)
@@ -0,0 +1,562 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Contains TRPCBroker and related components.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005)
+*************************************************************** }
+
+{**************************************************
+This is the hierarchy of things:
+   TRPCBroker contains
+      TParams, which contains
+         array of TParamRecord each of which contains
+                  TMult
+
+v1.1*4 Silent Login changes (DCM) 10/22/98
+
+1.1*6 Polling to support terminating arphaned server jobs. (P6)
+      == DPC 4/99
+
+1.1*8 Check for Multi-Division users. (P8) - REM 7/13/99
+
+1.1*13 More silent login code; deleted obsolete lines (DCM) 9/10/99  // p13
+LAST UPDATED: 5/24/2001   // p13  JLI
+
+1.1*31 Added new read only property BrokerVersion to TRPCBroker which
+       should contain the version number for the RPCBroker
+       (or SharedRPCBroker) in use.
+**************************************************}
+unit CCOWRPCBroker;
+
+interface
+
+{$I IISBase.inc}
+
+uses
+  {Delphi standard}
+  Classes, Controls, Dialogs, {DsgnIntf,} Forms, Graphics, Messages, SysUtils,
+  WinProcs, WinTypes, Windows,
+  extctrls, {P6}
+  {VA}
+  XWBut1, {RpcbEdtr,} MFunStr, Hash,
+  ComObj, ActiveX, OleCtrls, trpcb,
+    VERGENCECONTEXTORLib_TLB;
+
+const
+  NoMore: boolean = False;
+  MIN_RPCTIMELIMIT: integer = 30;
+  CURRENT_RPC_VERSION: String = 'XWB*1.1*36T1';
+
+type
+
+TCCOWRPCBroker = class(TRPCBroker)
+private
+protected
+  FCCOWLogonIDName: String;
+  FCCOWLogonIDValue: String;
+  FCCOWLogonName: String;
+  FCCOWLogonNameValue: String;
+  FContextor: TContextorControl;  //CCOW
+  FCCOWtoken: string;              //CCOW
+  FVistaDomain: String;
+  FCCOWLogonVpid: String;
+  FCCOWLogonVpidValue: String;
+  FWasUserDefined: Boolean;
+  procedure   SetConnected(Value: Boolean); override;
+  function  GetCCOWHandle(ConnectedBroker: TCCOWRPCBroker): string;
+  procedure CCOWsetUser(Uname, token, Domain, Vpid: string; Contextor:
+    TContextorControl);
+  function  GetCCOWduz( Contextor: TContextorControl): string;
+public
+  function GetCCOWtoken(Contextor: TContextorControl): string;
+  function IsUserCleared: Boolean;
+  function WasUserDefined: Boolean;
+  function IsUserContextPending(aContextItemCollection: IContextItemCollection):
+      Boolean;
+  property   Contextor: TContextorControl
+                          read Fcontextor write FContextor;  //CCOW
+  property CCOWLogonIDName: String read FCCOWLogonIDName;
+  property CCOWLogonIDValue: String read FCCOWLogonIDValue;
+  property CCOWLogonName: String read FCCOWLogonName;
+  property CCOWLogonNameValue: String read FCCOWLogonNameValue;
+  property CCOWLogonVpid: String read FCCOWLogonVpid;
+  property CCOWLogonVpidValue: String read FCCOWLogonVpidValue;
+published
+  property    Connected: boolean read FConnected write SetConnected;
+ end;
+
+procedure AuthenticateUser(ConnectingBroker: TCCOWRPCBroker);
+
+implementation
+
+uses
+  Loginfrm, RpcbErr, WSockc, SelDiv{p8}, RpcSLogin{p13}, fRPCBErrMsg,
+  CCOW_const;
+
+var
+  CCOWToken: String;
+  Domain: String;
+  PassCode1: String;
+  PassCode2: String;
+
+
+{--------------------- TCCOWRPCBroker.SetConnected --------------------
+------------------------------------------------------------------}
+procedure TCCOWRPCBroker.SetConnected(Value: Boolean);
+var
+  BrokerDir, Str1, Str2, Str3 :string;
+  RPCBContextor: TContextorControl;
+begin
+  RPCBError := '';
+  Login.ErrorText := '';
+  if (Connected <> Value) and not(csReading in ComponentState) then begin
+    if Value and (FConnecting <> Value) then begin                 {connect}
+      FSocket := ExistingSocket(Self);
+      FConnecting := True; // FConnected := True;
+      try
+        if FSocket = 0  then
+        begin
+          {Execute Client Agent from directory in Registry.}
+          BrokerDir := ReadRegData(HKLM, REG_BROKER, 'BrokerDr');
+          if BrokerDir <> '' then
+            ProcessExecute(BrokerDir + '\ClAgent.Exe', sw_ShowNoActivate)
+          else
+            ProcessExecute('ClAgent.Exe', sw_ShowNoActivate);
+          if DebugMode and (not OldConnectionOnly) then
+          begin
+            Str1 := 'Control of debugging FOR UCX OR NON-CALLBACK CONNECTIONS has been moved from the client to the server. To start a Debug session, do the following:'+#13#10#13#10;
+            Str2 := '1. On the server, set initial breakpoints where desired.'+#13#10+'2. DO DEBUG^XWBTCPM.'+#13#10+'3. Enter a unique Listener port number (i.e., a port number not in general use).'+#13#10;
+            Str3 := '4. Connect the client application using the port number entered in Step #3.';
+            ShowMessage(Str1 + Str2 + Str3);
+          end;
+          TXWBWinsock(XWBWinsock).IsBackwardsCompatible := IsBackwardCompatibleConnection;
+          TXWBWinsock(XWBWinsock).OldConnectionOnly := OldConnectionOnly;
+          FSocket := TXWBWinsock(XWBWinsock).NetworkConnect(DebugMode, FServer,
+                                    ListenerPort, FRPCTimeLimit);
+          AuthenticateUser(Self);
+          StoreConnection(Self);  //MUST store connection before CreateContext()
+          //CCOW start
+          if (FContextor <> nil) and (length(CCOWtoken) = 0) then
+          begin
+          //Get new CCOW token
+            CCOWToken := GetCCOWHandle(Self);
+            if Length(CCOWToken) > 0 then
+            begin
+              try
+                RPCBContextor := TContextorControl.Create(Application);
+                RPCBContextor.Run('BrokerLoginModule#', PassCode1+PassCode2, TRUE, '*');
+                CCOWsetUser(user.name, CCOWToken, Domain, user.Vpid, RPCBContextor);  //Clear token
+                FCCOWLogonIDName := CCOW_LOGON_ID;
+                FCCOWLogonIdValue := Domain;
+                FCCOWLogonName := CCOW_LOGON_NAME;
+                FCCOWLogonNameValue := user.name;
+                if user.name <> '' then
+                  FWasUserDefined := True;
+                FCCOWLogonVpid := CCOW_LOGON_VPID;
+                FCCOWLogonVpidValue := user.Vpid;
+                RPCBContextor.Free;
+                RPCBContextor := nil;
+              except
+                ShowMessage('Problem with Contextor.Run');
+                FreeAndNil(RPCBContextor);
+              end;
+            end;   // if Length(CCOWToken) > 0
+          end;  //if
+          //CCOW end
+          FPulse.Enabled := True; //P6 Start heartbeat.
+          CreateContext('');      //Closes XUS SIGNON context.
+        end
+        else
+        begin                     //p13
+          StoreConnection(Self);
+          FPulse.Enabled := True; //p13
+        end;                      //p13
+        FConnected := True;         // jli mod 12/17/01
+        FConnecting := False;
+      except
+        on E: EBrokerError do begin
+          if E.Code = XWB_BadSignOn then
+            TXWBWinsock(XWBWinsock).NetworkDisconnect(FSocket);
+          FSocket := 0;
+          FConnected := False;
+          FConnecting := False;
+          FRPCBError := E.Message;               // p13  handle errors as specified
+          if Login.ErrorText <> '' then
+            FRPCBError := E.Message + chr(10) + Login.ErrorText;
+          if Assigned(FOnRPCBFailure) then       // p13
+            FOnRPCBFailure(Self)                 // p13
+          else if ShowErrorMsgs = semRaise then
+            Raise;                               // p13
+//          raise;   {this is where I would do OnNetError}
+        end{on};
+      end{try};
+    end{if}
+    else if not Value then
+    begin                           //p13
+      FConnected := False;          //p13
+      FPulse.Enabled := False;      //p13
+      if RemoveConnection(Self) = NoMore then begin
+        {FPulse.Enabled := False;  ///P6;p13 }
+        TXWBWinsock(XWBWinsock).NetworkDisconnect(Socket);   {actually disconnect from server}
+        FSocket := 0;                {store internal}
+        //FConnected := False;      //p13
+      end{if};
+    end; {else}
+  end{if};
+end;
+
+function TCCOWRPCBroker.WasUserDefined: Boolean;
+begin
+  Result := FWasUserDefined;
+end;
+
+function TCCOWRPCBroker.IsUserCleared: Boolean;
+var
+  CCOWcontextItem: IContextItemCollection;      //CCOW
+  CCOWdataItem1: IContextItem;                  //CCOW
+  Name: String;
+begin
+  Result := False;
+  Name := CCOW_LOGON_ID;
+  if (Contextor <> nil) then
+  try
+    //See if context contains the ID item
+    CCOWcontextItem := Contextor.CurrentContext;
+    CCOWDataItem1 := CCowContextItem.Present(Name);
+    if (CCOWdataItem1 <> nil) then    //1
+    begin
+      If CCOWdataItem1.Value = '' then
+        Result := True
+      else
+        FWasUserDefined := True;
+    end
+    else
+      Result := True;
+  finally
+  end; //try
+end;
+
+{------------------------ AuthenticateUser ------------------------
+------------------------------------------------------------------}
+procedure AuthenticateUser(ConnectingBroker: TCCOWRPCBroker);
+var
+  SaveClearParmeters, SaveClearResults: boolean;
+  SaveParam: TParams;
+  SaveRemoteProcedure, SaveRpcVersion: string;
+  SaveResults: TStrings;
+  blnSignedOn: boolean;
+  SaveKernelLogin: boolean;
+  SaveVistaLogin: TVistaLogin;
+  OldExceptionHandler: TExceptionEvent;
+  OldHandle: THandle;
+begin
+  With ConnectingBroker do
+  begin
+    SaveParam := TParams.Create(nil);
+    SaveParam.Assign(Param);                  //save off settings
+    SaveRemoteProcedure := RemoteProcedure;
+    SaveRpcVersion := RpcVersion;
+    SaveResults := Results;
+    SaveClearParmeters := ClearParameters;
+    SaveClearResults := ClearResults;
+    ClearParameters := True;                  //set'em as I need'em
+    ClearResults := True;
+    SaveKernelLogin := KernelLogin;     //  p13
+    SaveVistaLogin := Login;            //  p13
+  end;
+
+  blnSignedOn := False;                       //initialize to bad sign-on
+  
+  if ConnectingBroker.AccessVerifyCodes <> '' then   // p13 handle as AVCode single signon
+  begin
+    ConnectingBroker.Login.AccessCode := Piece(ConnectingBroker.AccessVerifyCodes, ';', 1);
+    ConnectingBroker.Login.VerifyCode := Piece(ConnectingBroker.AccessVerifyCodes, ';', 2);
+    ConnectingBroker.Login.Mode := lmAVCodes;
+    ConnectingBroker.KernelLogIn := False;
+  end;
+
+    //CCOW start
+    if ConnectingBroker.KernelLogIn and (not (ConnectingBroker.Contextor = nil)) then
+    begin
+      CCOWtoken := ConnectingBroker.GetCCOWtoken(ConnectingBroker.Contextor);
+      if length(CCOWtoken)>0 then
+        begin
+          ConnectingBroker.FKernelLogIn := false;
+          ConnectingBroker.Login.Mode := lmAppHandle;
+          ConnectingBroker.Login.LogInHandle := CCOWtoken;
+        end;
+     end;
+     //CCOW end
+   //CCOW Start                                // p13  following section for silent signon
+  if not ConnectingBroker.FKernelLogIn then
+    if ConnectingBroker.FLogin <> nil then     //the user.  vistalogin contains login info
+    begin
+      blnsignedon := SilentLogin(ConnectingBroker);    // RpcSLogin unit
+      if not blnSignedOn then
+      begin     //Switch back to Kernel Login
+        ConnectingBroker.FKernelLogIn := true;
+        ConnectingBroker.Login.Mode := lmAVCodes;
+      end;
+    end;
+   //CCOW end
+
+  if ConnectingBroker.FKernelLogIn then
+  begin   //p13
+    if Assigned(Application.OnException) then
+      OldExceptionHandler := Application.OnException
+    else
+      OldExceptionHandler := nil;
+    Application.OnException := TfrmErrMsg.RPCBShowException;
+    frmSignon := TfrmSignon.Create(Application);
+    try
+
+  //    ShowApplicationAndFocusOK(Application);
+      OldHandle := GetForegroundWindow;
+      SetForegroundWindow(frmSignon.Handle);
+      PrepareSignonForm(ConnectingBroker);
+      if SetUpSignOn then                       //SetUpSignOn in loginfrm unit.
+      begin                                     //True if signon needed
+
+        if frmSignOn.lblServer.Caption <> '' then
+        begin
+          frmSignOn.ShowModal;                    //do interactive logon   // p13
+          if frmSignOn.Tag = 1 then               //Tag=1 for good logon
+            blnSignedOn := True;                   //Successfull logon
+        end
+      end
+      else                                      //False when no logon needed
+        blnSignedOn := NoSignOnNeeded;          //Returns True always (for now!)
+      if blnSignedOn then                       //P6 If logged on, retrieve user info.
+      begin
+        GetBrokerInfo(ConnectingBroker);
+        if not SelDiv.ChooseDiv('',ConnectingBroker) then
+        begin
+          blnSignedOn := False;//P8
+          {Select division if multi-division user.  First parameter is 'userid'
+          (DUZ or username) for future use. (P8)}
+          ConnectingBroker.Login.ErrorText := 'Failed to select Division';  // p13 set some text indicating problem
+        end;
+      end;
+      SetForegroundWindow(OldHandle);
+    finally
+      frmSignon.Free;
+//      frmSignon.Release;                        //get rid of signon form
+
+//      if ConnectingBroker.Owner is TForm then
+//        SetForegroundWindow(TForm(ConnectingBroker.Owner).Handle)
+//      else
+//        SetForegroundWindow(ActiveWindow);
+        ShowApplicationAndFocusOK(Application);
+    end ; //try
+    if Assigned(OldExceptionHandler) then
+      Application.OnException := OldExceptionHandler;
+   end;   //if kernellogin
+                                                 // p13  following section for silent signon
+  if (not ConnectingBroker.KernelLogIn) and (not blnsignedon) then     // was doing the signon twice if already true
+    if ConnectingBroker.Login <> nil then     //the user.  vistalogin contains login info
+      blnsignedon := SilentLogin(ConnectingBroker);    // RpcSLogin unit
+  if not blnsignedon then
+  begin
+//    ConnectingBroker.Login.FailedLogin(ConnectingBroker.Login);
+    TXWBWinsock(ConnectingBroker.XWBWinsock).NetworkDisconnect(ConnectingBroker.Socket);
+  end
+  else
+    GetBrokerInfo(ConnectingBroker);
+
+  //reset the Broker
+  with ConnectingBroker do
+  begin
+    ClearParameters := SaveClearParmeters;
+    ClearResults := SaveClearResults;
+    Param.Assign(SaveParam);                  //restore settings
+    SaveParam.Free;
+    RemoteProcedure := SaveRemoteProcedure;
+    RpcVersion := SaveRpcVersion;
+    Results := SaveResults;
+    FKernelLogin := SaveKernelLogin;         // p13
+    FLogin := SaveVistaLogin;                // p13
+  end;
+
+  if not blnSignedOn then                     //Flag for unsuccessful signon.
+    TXWBWinsock(ConnectingBroker.XWBWinsock).NetError('',XWB_BadSignOn);               //Will raise error.
+
+end;
+
+{----------------------- GetCCOWHandle --------------------------
+Private function to return a special CCOW Handle from the server
+which is set into the CCOW context.
+The Broker of a new application can get the CCOWHandle from the context
+and use it to do a ImAPPHandle Sign-on.
+----------------------------------------------------------------}
+function  TCCOWRPCBroker.GetCCOWHandle(ConnectedBroker : TCCOWRPCBroker): String;   // p13
+begin
+  Result := '';
+  with ConnectedBroker do
+  try                          // to permit it to work correctly if CCOW is not installed on the server.
+    begin
+      RemoteProcedure := 'XUS GET CCOW TOKEN';
+      Call;
+      Result := Results[0];
+      Domain := Results[1];
+      RemoteProcedure := 'XUS CCOW VAULT PARAM';
+      Call;
+      PassCode1 := Results[0];
+      PassCode2 := Results[1];
+    end;
+  except
+    Result := '';
+  end;
+end;
+
+//CCOW start
+procedure TCCOWRPCBroker.CCOWsetUser(Uname, token, Domain, Vpid: string; Contextor:
+    TContextorControl);
+var
+  CCOWdata: IContextItemCollection;             //CCOW
+  CCOWdataItem1,CCOWdataItem2,CCOWdataItem3: IContextItem;
+  CCOWdataItem4,CCOWdataItem5: IContextItem;    //CCOW
+  Cname: string;
+begin
+    if Contextor <> nil then
+    begin
+      try
+         //Part 1
+         Contextor.StartContextChange;
+         //Part 2 Set the new proposed context data
+         CCOWdata := CoContextItemCollection.Create;
+         CCOWdataItem1 := CoContextItem.Create;
+         Cname := CCOW_LOGON_ID;
+         CCOWdataItem1.Name := Cname;
+         CCOWdataItem1.Value := domain;
+         CCOWData.Add(CCOWdataItem1);
+         CCOWdataItem2 := CoContextItem.Create;
+         Cname := CCOW_LOGON_TOKEN;
+         CCOWdataItem2.Name := Cname;
+         CCOWdataItem2.Value := token;
+         CCOWdata.Add(CCOWdataItem2);
+         CCOWdataItem3 := CoContextItem.Create;
+         Cname := CCOW_LOGON_NAME;
+         CCOWdataItem3.Name := Cname;
+         CCOWdataItem3.Value := Uname;
+         CCOWdata.Add(CCOWdataItem3);
+         //
+         CCOWdataItem4 := CoContextItem.Create;
+         Cname := CCOW_LOGON_VPID;
+         CCOWdataItem4.Name := Cname;
+         CCOWdataItem4.Value := Vpid;
+         CCOWdata.Add(CCOWdataItem4);
+         //
+         CCOWdataItem5 := CoContextItem.Create;
+         Cname := CCOW_USER_NAME;
+         CCOWdataItem5.Name := Cname;
+         CCOWdataItem5.Value := Uname;
+         CCOWdata.Add(CCOWdataItem5);
+         //Part 3 Make change
+         Contextor.EndContextChange(true, CCOWdata);
+         //We don't need to check CCOWresponce
+       finally
+       end;  //try
+    end; //if
+end;
+
+//Get Token from CCOW context
+function TCCOWRPCBroker.GetCCOWtoken(Contextor: TContextorControl): string;
+var
+  CCOWdataItem1: IContextItem;                 //CCOW
+  CCOWcontextItem: IContextItemCollection;      //CCOW
+  name: string;
+begin
+  result := '';
+  name := CCOW_LOGON_TOKEN;
+  if (Contextor <> nil) then
+  try
+    CCOWcontextItem := Contextor.CurrentContext;
+    //See if context contains the ID item
+    CCOWdataItem1 := CCOWcontextItem.Present(name);
+    if (CCOWdataItem1 <> nil) then    //1
+    begin
+      result := CCOWdataItem1.Value;
+      if not (result = '') then
+        FWasUserDefined := True;
+    end;
+    FCCOWLogonIDName := CCOW_LOGON_ID;
+    FCCOWLogonName := CCOW_LOGON_NAME;
+    FCCOWLogonVpid := CCOW_LOGON_VPID;
+    CCOWdataItem1 := CCOWcontextItem.Present(CCOW_LOGON_ID);
+    if CCOWdataItem1 <> nil then
+      FCCOWLogonIdValue := CCOWdataItem1.Value;
+    CCOWdataItem1 := CCOWcontextItem.Present(CCOW_LOGON_NAME);
+    if CCOWdataItem1 <> nil then
+      FCCOWLogonNameValue := CCOWdataItem1.Value;
+    CCOWdataItem1 := CCOWcontextItem.Present(CCOW_LOGON_VPID);
+    if CCOWdataItem1 <> nil then
+      FCCOWLogonVpidValue := CCOWdataItem1.Value;
+    finally
+  end; //try
+end;
+
+//Get Name from CCOW context
+function TCCOWRPCBroker.GetCCOWduz(Contextor: TContextorControl): string;
+var
+  CCOWdataItem1: IContextItem;                  //CCOW
+  CCOWcontextItem: IContextItemCollection;      //CCOW
+  name: string;
+begin
+  result := '';
+  name := CCOW_LOGON_ID;
+  if (Contextor <> nil) then
+  try
+      CCOWcontextItem := Contextor.CurrentContext;
+      //See if context contains the ID item
+      CCOWdataItem1 := CCOWcontextItem.Present(name);
+      if (CCOWdataItem1 <> nil) then    //1
+      begin
+           result := CCOWdataItem1.Value;
+           if result <> '' then
+             FWasUserDefined := True;
+      end;
+  finally
+  end; //try
+end;
+
+function TCCOWRPCBroker.IsUserContextPending(aContextItemCollection: 
+    IContextItemCollection): Boolean;
+var
+  CCOWdataItem1: IContextItem;                  //CCOW
+  Val1: String;
+begin
+  result := false;
+  if WasUserDefined() then // indicates data was defined
+  begin
+    Val1 := '';  // look for any USER Context items defined
+    result := True;
+    //
+    CCOWdataItem1 := aContextItemCollection.Present(CCOW_LOGON_ID);
+    if (CCOWdataItem1 <> nil) then    //1
+      Val1 := CCOWdataItem1.Value;
+    //
+    CCOWdataItem1 := aContextItemCollection.Present(CCOW_LOGON_ID);
+    if CCOWdataItem1 <> nil then
+      Val1 := Val1 + '^' + CCOWdataItem1.Value;
+    //
+    CCOWdataItem1 := aContextItemCollection.Present(CCOW_LOGON_NAME);
+    if CCOWdataItem1 <> nil then
+      Val1 := Val1 + '^' + CCOWdataItem1.Value;
+    //
+    CCOWdataItem1 := aContextItemCollection.Present(CCOW_LOGON_VPID);
+    if CCOWdataItem1 <> nil then
+      Val1 := Val1 + '^' + CCOWdataItem1.Value;
+    //
+    CCOWdataItem1 := aContextItemCollection.Present(CCOW_USER_NAME);
+    if CCOWdataItem1 <> nil then
+      Val1 := Val1 + '^' + CCOWdataItem1.Value;
+    //
+    if Val1 <> '' then    // something defined, so not user context change
+      result := False;
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/CCOW_const.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/CCOW_const.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/CCOW_const.pas	(revision 1676)
@@ -0,0 +1,24 @@
+unit CCOW_const;
+
+interface
+const
+  // Note: set the 'CCOW' suffix to the suffix this app should look for in the context.
+  // Eg. Patient.ID.MRN.GeneralHospital,  Patient.ID.MRN.VendorAppName, etc.
+  // This string is used during startup (to check for an existing context),
+  // during a commit event (to check the new context), etc.
+
+  //The VistA Domain
+  CCOW_LOGON_ID = 'user.id.logon.vistalogon';        //CCOW
+  //The VistA Token
+  CCOW_LOGON_TOKEN = 'user.id.logon.vistatoken';     //CCOW
+  //The VistA user Name
+  CCOW_LOGON_NAME = 'user.id.logon.vistaname';            //CCOW
+  // The VistA Vpid
+  CCOW_LOGON_VPID = 'user.id.logon.vpid';
+  // The generic name
+  CCOW_USER_NAME = 'user.co.name';
+
+implementation
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Hash.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Hash.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Hash.pas	(revision 1676)
@@ -0,0 +1,81 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Wally Fort, Joel Ivey
+	Description: Encryption and decryption functions.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit Hash;
+
+
+interface
+
+uses SysUtils, Classes;
+
+
+{function and procedure prototypes}
+function Decrypt(EncryptedText: string): string;
+function Encrypt(NormalText: string): string;
+
+const
+  maxKeys = 20;
+  CipherPad: array[0..maxKeys - 1] of string = (
+
+    'wkEo-ZJt!dG)49K{nX1BS$vH<&:Myf*>Ae0jQW=;|#PsO`''%+rmb[gpqN,l6/hFC@DcUa ]z~R}"V\iIxu?872.(TYL5_3',
+    'rKv`R;M/9BqAF%&tSs#Vh)dO1DZP> *fX''u[.4lY=-mg_ci802N7LTG<]!CWo:3?{+,5Q}(@jaExn$~p\IyHwzU"|k6Jeb',
+    '\pV(ZJk"WQmCn!Y,y@1d+~8s?[lNMxgHEt=uw|X:qSLjAI*}6zoF{T3#;ca)/h5%`P4$r]G''9e2if_>UDKb7<v0&- RBO.',
+    'depjt3g4W)qD0V~NJar\B "?OYhcu[<Ms%Z`RIL_6:]AX-zG.#}$@vk7/5x&*m;(yb2Fn+l''PwUof1K{9,|EQi>H=CT8S!',
+    'NZW:1}K$byP;jk)7''`x90B|cq@iSsEnu,(l-hf.&Y_?J#R]+voQXU8mrV[!p4tg~OMez CAaGFD6H53%L/dT2<*>"{\wI=',
+    'vCiJ<oZ9|phXVNn)m K`t/SI%]A5qOWe\&?;jT~M!fz1l>[D_0xR32c*4.P"G{r7}E8wUgyudF+6-:B=$(sY,LkbHa#''@Q',
+    'hvMX,''4Ty;[a8/{6l~F_V"}qLI\!@x(D7bRmUH]W15J%N0BYPkrs&9:$)Zj>u|zwQ=ieC-oGA.#?tfdcO3gp`S+En K2*<',
+    'jd!W5[];4''<C$/&x|rZ(k{>?ghBzIFN}fAK"#`p_TqtD*1E37XGVs@0nmSe+Y6Qyo-aUu%i8c=H2vJ\) R:MLb.9,wlO~P',
+    '2ThtjEM+!=xXb)7,ZV{*ci3"8@_l-HS69L>]\AUF/Q%:qD?1~m(yvO0e''<#o$p4dnIzKP|`NrkaGg.ufCRB[; sJYwW}5&',
+    'vB\5/zl-9y:Pj|=(R''7QJI *&CTX"p0]_3.idcuOefVU#omwNZ`$Fs?L+1Sk<,b)hM4A6[Y%aDrg@~KqEW8t>H};n!2xG{',
+    'sFz0Bo@_HfnK>LR}qWXV+D6`Y28=4Cm~G/7-5A\b9!a#rP.l&M$hc3ijQk;),TvUd<[:I"u1''NZSOw]*gxtE{eJp|y (?%',
+    'M@,D}|LJyGO8`$*ZqH .j>c~h<d=fimszv[#-53F!+a;NC''6T91IV?(0x&/{B)w"]Q\YUWprk4:ol%g2nE7teRKbAPuS_X',
+    '.mjY#_0*H<B=Q+FML6]s;r2:e8R}[ic&KA 1w{)vV5d,$u"~xD/Pg?IyfthO@CzWp%!`N4Z''3-(o|J9XUE7k\TlqSb>anG',
+    'xVa1'']_GU<X`|\NgM?LS9{"jT%s$}y[nvtlefB2RKJW~(/cIDCPow4,>#zm+:5b@06O3Ap8=*7ZFY!H-uEQk; .q)i&rhd',
+    'I]Jz7AG@QX."%3Lq>METUo{Pp_ |a6<0dYVSv8:b)~W9NK`(r''4fs&wim\kReC2hg=HOj$1B*/nxt,;c#y+![?lFuZ-5D}',
+    'Rr(Ge6F Hx>q$m&C%M~Tn,:"o''tX/*yP.{lZ!YkiVhuw_<KE5a[;}W0gjsz3]@7cI2\QN?f#4p|vb1OUBD9)=-LJA+d`S8',
+    'I~k>y|m};d)-7DZ"Fe/Y<B:xwojR,Vh]O0Sc[`$sg8GXE!1&Qrzp._W%TNK(=J 3i*2abuHA4C''?Mv\Pq{n#56LftUl@9+',
+    '~A*>9 WidFN,1KsmwQ)GJM{I4:C%}#Ep(?HB/r;t.&U8o|l[''Lg"2hRDyZ5`nbf]qjc0!zS-TkYO<_=76a\X@$Pe3+xVvu',
+    'yYgjf"5VdHc#uA,W1i+v''6|@pr{n;DJ!8(btPGaQM.LT3oe?NB/&9>Z`-}02*%x<7lsqz4OS ~E$\R]KI[:UwC_=h)kXmF',
+    '5:iar.{YU7mBZR@-K|2 "+~`M%8sq4JhPo<_X\Sg3WC;Tuxz,fvEQ1p9=w}FAI&j/keD0c?)LN6OHV]lGy''$*>nd[(tb!#');
+
+implementation
+
+uses mfunstr {for Translate function};
+
+
+function Encrypt(normalText: string): string;
+var
+  associatorIndex, identifierIndex: integer;
+begin
+  Randomize;
+  associatorIndex := random(MaxKeys);
+  repeat
+    identifierIndex := Random(MaxKeys);
+  until associatorIndex <> identifierIndex; {make sure indexes are different}
+
+  Result := chr(AssociatorIndex+32) +
+            Translate(NormalText, CipherPad[AssociatorIndex],
+                      CipherPad[IdentifierIndex]) +
+            chr(identifierIndex+32);
+end;
+
+
+
+function Decrypt(EncryptedText: string): string;
+var
+  AssociatorIndex, IdentifierIndex: integer;
+begin
+  IdentifierIndex := Ord(EncryptedText[1])-32;
+  AssociatorIndex := Ord(EncryptedText[Length(EncryptedText)])-32;
+  Result := Translate(copy(EncryptedText,2,Length(EncryptedText)-2),
+                      CipherPad[AssociatorIndex],
+                      CipherPad[IdentifierIndex]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/IISBase.inc
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/IISBase.inc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/IISBase.inc	(revision 1676)
@@ -0,0 +1,120 @@
+{===============================================================================
+  Ray Konopka's Conference 2001 Include File
+
+  This file is included into each component unit and serves as a common
+  place to add conditional defines and compiler directives to be used by all
+  component units.
+
+  Copyright © 1995-2001 by Ray Konopka
+===============================================================================}
+
+{$IFDEF WIN32}
+  {$DEFINE D2_OR_HIGHER}
+{$ENDIF}
+
+{$IFNDEF VER80}
+  {$IFNDEF VER90}
+    {$IFNDEF VER93}
+      {$DEFINE D3_OR_HIGHER}
+      {$IFNDEF VER100}
+        {$DEFINE BCB3_OR_HIGHER}
+        {$IFNDEF VER110}
+          {$DEFINE D4_OR_HIGHER}
+          {$IFNDEF VER120}
+            {$DEFINE BCB4_OR_HIGHER}
+            {$IFNDEF VER125}
+              {$DEFINE D5_OR_HIGHER}
+              {$DEFINE BCB5_OR_HIGHER}
+              {$IFNDEF VER130}
+                {$DEFINE D6_OR_HIGHER}
+              {$ENDIF}
+            {$ENDIF}
+          {$ENDIF}
+        {$ENDIF}
+      {$ENDIF}
+    {$ENDIF}
+  {$ENDIF}
+{$ENDIF}
+
+{$IFDEF D6_OR_HIGHER}
+{$WARN SYMBOL_PLATFORM OFF}
+{$ENDIF}
+
+{$IFDEF VER80}
+  {$DEFINE D1_ONLY}
+{$ENDIF}
+{$IFDEF VER90}
+  {$DEFINE D2_ONLY}
+{$ENDIF}
+{$IFDEF VER100}
+  {$DEFINE D3_ONLY}
+{$ENDIF}
+{$IFDEF VER110}
+  {$DEFINE BCB3_ONLY}
+  {$OBJEXPORTALL ON}
+{$ENDIF}
+{$IFDEF VER120}
+  {$DEFINE D4_ONLY}
+{$ENDIF}
+{$IFDEF VER125}
+  {$DEFINE BCB4_ONLY}
+  {$OBJEXPORTALL ON}
+{$ENDIF}
+{$IFDEF VER130}
+  {$IFDEF BCB}
+    {$DEFINE BCB5_ONLY}
+    {$OBJEXPORTALL ON}
+  {$ELSE}
+    {$DEFINE D5_ONLY}
+  {$ENDIF}
+{$ENDIF}
+{$IFDEF VER140}
+  {$DEFINE D6_ONLY}
+{$ENDIF}
+
+
+
+{== Code Generation Directives ==}
+
+{$F-}    { Force Far Calls }
+{$A+}    { Word Align Data }
+{$U-}    { Pentium-Save FDIV }
+{$K-}    { Smart Callbacks }
+{$W-}    { Windows Stack Frame }
+
+
+{== Runtime Errors ==}
+
+{$IFOPT D+}
+  {$R+}    { Range Checking - On - if compiled with Debug Information }
+{$ELSE}
+  {$R-}    { Range Checking - Off - if compiled without Debug Information }
+{$ENDIF}
+
+{$S-}    { Stack Checking }
+{$I+}    { I/O Checking }
+{$Q-}    { Overflow Checking }
+
+
+{== Syntax Options ==}
+
+{$V-}    { Strict Var-Strings }
+{$B-}    { Complete Boolean Evaluation }
+{$X+}    { Extended Syntax }
+{$T-}    { Typed @ Operator }
+{$P+}    { Open Parameters }
+{$IFDEF D4_OR_HIGHER}
+{$J+}    { Writeable Typed Constants }
+{$ENDIF}
+
+{== Miscellaneous Directives ==}
+
+{$C MOVEABLE DEMANDLOAD DISCARDABLE}    { Code Segment Attribute }
+{$G+}    { 286 Instructions }
+{$N+}    { Numeric Coprocessor }
+{$Z-}    { Word Size Enumerated Types }
+
+{$IFDEF WIN32}
+{$H+}    { Long String Support }
+{$ENDIF}
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Loginfrm.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Loginfrm.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Loginfrm.dfm	(revision 1676)
@@ -0,0 +1,616 @@
+object frmSignon: TfrmSignon
+  Left = 115
+  Top = 114
+  Width = 779
+  Height = 580
+  HelpContext = 1
+  ActiveControl = accessCode
+  Anchors = [akTop]
+  Caption = 'VISTA Sign-on'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 5
+    Top = 0
+    Width = 761
+    Height = 409
+    Alignment = taLeftJustify
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelInner = bvLowered
+    BorderWidth = 4
+    TabOrder = 0
+    object introText: TXWBRichEdit
+      Left = 6
+      Top = 6
+      Width = 749
+      Height = 397
+      Align = alClient
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'Courier New'
+      Font.Style = [fsBold]
+      URLDetect = True
+      Lines.Strings = (
+        
+          '1234567890123456789012345678901234567890123456789012345678901234' +
+          '5678901234567890                                                ' +
+          '                                   '#13
+        
+          '         1         2         3         4         5         6    ' +
+          '     7         8'#13
+        
+          '                                                                ' +
+          '                   '#13
+        '   http://vaww.isc-sf.med.va.gov'#13
+        'a                 '#13
+        'b'#13
+        'c                 '#13
+        'd'#13
+        'e                 '#13
+        'f'#13
+        'g                 '#13
+        'h'#13
+        'i                 '#13
+        'j'#13
+        'k                 '#13
+        'l'#13
+        'm                 '#13
+        'n'#13
+        'o                 '#13
+        
+          'p                                                               ' +
+          '   '#13
+        'q                 '#13
+        'r'#13
+        's                 '#13
+        't'#13
+        'u                 '#13
+        'v'#13
+        'w                 '#13
+        'x'#13
+        'y                 '#13)
+      ParentFont = False
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 0
+    end
+  end
+  object Panel7: TPanel
+    Left = 0
+    Top = 409
+    Width = 771
+    Height = 144
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    object Image1: TImage
+      Left = 8
+      Top = 8
+      Width = 117
+      Height = 78
+      AutoSize = True
+      Picture.Data = {
+        07544269746D6170BE120000424DBE1200000000000076000000280000007500
+        00004E0000000100040000000000481200000000000000000000100000001000
+        0000000000000000800000800000008080008000000080008000808000008080
+        8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+        FF00888888888888888888888888888888888888888888888888888888888888
+        8888888888888888888888888888888888888888888888888888888880008888
+        8888888888888888888888888888888888888888888888888888888888888888
+        8888888888888888888888888888888888888888888888888000888888888888
+        888888888888888888FFFFFFFFFFFFFFFFFFFFF888888888888888FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFF888888888888888888800088888888888888888888
+        888888887FFFFFFFFFFFFFFFFFFFFFFF8888888888887FFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF8888888888888888880008888888888888888888888888888
+        788888888888888888888FFF8888888888887888888888888888888888888888
+        8888FFFF88888888888888888000888888888888888888888888888778888888
+        88888888888888FFF88888888887888888888888888888888888888888888FFF
+        8888888888888888800088888888888888888888888888778888888888888888
+        888888FFF888888888878888888888888888888888888888888888FFF8888888
+        888888888000888888888888888888888888887888888888888888888888888F
+        FF88888888788888888888888888888888888888888888FFF888888888888888
+        8000888888888888888888888888877888888888888888888888888FFF888888
+        887888888888888888888888888888888888888FFF8888888888888880008888
+        888888888888888888887788888888888888888888888888FFF8888887888888
+        8888888888888888888888888888888FFFF88888888888888000888888888888
+        8888888888887888888888888888888888888888FFFF88888788888888888888
+        888888888888888888888888FFF8888888888888800088888888888888888888
+        888778888888888888888888888888888FFF8888788888888888888888888888
+        88888888888888888FFF88888888888880008888888888888888888888778888
+        88888888888888888888888888FFF88878888888888888888888888888888888
+        888888888FFF8888888888888000888888888888888888888878888888888888
+        888888888888888888FFF8878888888888888888888888888888888888888888
+        88FFF88888888888800088888888888888888888877888888888888888888888
+        88888888888FFF78888888888888888888888888888888888888888888FFFF88
+        8888888880008888888888888888888887888888888888888888888888888888
+        888FFF788888888888888888888888888888888888888888888FFF8888888888
+        80008888888888888888888877888888888888888FF77777777777777777FF88
+        8888888888777777777777777777777777777777777777F88888888880008888
+        888888888888888778888888888888888FF777777777777777777F8888888888
+        8777777777777777777777777777777777777FF8888888888000888888888888
+        888888878888888888888888FF77777777777777777778888888888877777777
+        77777777777777777777777777777FFF88888888800088888888888888888877
+        888888888888888FFF88888888888888888777888888888FF888888888888888
+        888888888888888888878FFFF888888880008888888888888888877888888888
+        8888888FF888888888888888888777788888888F888888888888888888888888
+        88888888888788FFF888888880008888888888888888878888888888888888FF
+        8888888888888888888877788888888F88888888888888888888888888888888
+        8878888FFF88888880008888888888888888778888888888888888FF88888888
+        8888888888887777888888F8888888888888888888888888888888888788888F
+        FF8888888000888888888888888878888888888888888FF88888888888888888
+        88888777888888F88888888888888888888888888888888887888888FFF88888
+        800088888888888888877888888888888888FFF8888888888888888888888777
+        78888FF88888888888888888888888888888888878888888FFFF888880008888
+        8888888888778888888888888888FF8888888888888888888888887778888F88
+        88888888888888888888888888888888788888888FFF88888000888888888888
+        8778888888888888888FF88888888888888888888888887777888F8888888888
+        8888888888888888888888878888888888FFF888800088888888888887888888
+        8888888888FFF8888888888888888888888888877788F8888888888888888888
+        88888888888888878888888888FFF88880008888888888887788888888888888
+        88FF88888888888888888888888888877778F888888888888888888888888888
+        8888887888888888888FFF88800088888888888878888888888888888FF88888
+        888888888888888888888888777FF88888888888888888888888888888888788
+        88888888888FFFF8800088888888888778888888888888888FF8888888888888
+        88888888888888887777FFFFFFFFFFFFFFFFFFF8888888888888878888888888
+        8888FF8880008888888888778888888888888888FF8888888888888888888888
+        8888888887777FFFFFFFFFFFFFFFFF888888888888887888888888888888FF88
+        8000888888888878888888888888888FFF888888888888888888888888888888
+        877778888888888888888F88888888888888788888888888888FF88880008888
+        88888778888888888888888FF888888888888888888F88888888888888777788
+        888888888888F888888888888887888888888888888FF8888000888888888788
+        88888888888888FF8888888888888888887FF888888888888887778888888888
+        888F888888888888888788888888888888FF8888800088888888778888888888
+        88888FFF888888888888888887FFFF88888888888887777888888888888F8888
+        88888888887888888888888888FF888880008888888778888888888888888FF8
+        8888888888888888878FFF8888888888888877788888888888F8888888888888
+        87888888888888888FF888888000888888878888888888888888FF8888888888
+        888888887888FFF888888888888877778888888888F888888888888887888888
+        88888888FFF888888000888888778888888888888888FF888888888888888887
+        8888FFF88888888888888777888888888F888888888888887888888888888888
+        FF888888800088888778888888888888888FF888888888888888888788888FFF
+        888888888888877778888888F888888888888888788888888888888FF8888888
+        80008888878888888888888888FFF888888888888888887888888FFFF8888888
+        8888887778888888F888888888888887888888888888888FF888888880008888
+        778888888888888888FF88888888888888888788888888FFF888888888888877
+        7788888F888888888888888788888888888888FF888888888000888778888888
+        888888888FF8888888888888888887888888888FFF888888888888877778888F
+        888888888888887888888888888888FF88888888800088878888888888888888
+        FFF8888888888888888878888888888FFF88888888888887777888F888888888
+        888888788888888888888FF888888888800088778888888888888888FF888888
+        888888888888788888888888FFF888888888888877788F888888888888888788
+        888888888888FFF88888888880008778888888888888888FF888888888888888
+        8887888888888888FFFF88888888888877788F88888888888888788888888888
+        8888FF888888888880008778888888888888888FF88888888888888888788888
+        888888888FFF8888888888888778F888888888888888788888888888888FF888
+        888888888000877788888888888888FF88888888888888888878888888888888
+        88FFF888888888888778F888888888888887888888888888888FF88888888888
+        800087778888888888888FFF8888888888888888878888888888888888FFF888
+        88888888887F888888888888888788888888888888FF88888888888880008877
+        7888888888888FF888888888888888887888888888888888888FFF8888888888
+        8888888888888888887888888888888888FF8888888888888000887777888888
+        8888FF8888888888888888887888888888888888888FFFF88888888888888888
+        8888888888788888888888888FF88888888888888000888777888888888FFF88
+        888888888888888788888888888887888888FFF8888888888888888888888888
+        8788888888888888FFF88888888888888000888877788888888FF88888888888
+        88888887888888888888877888888FFF88888888888888888888888878888888
+        88888888FF88888888888888800088887778888888FF88888888888888888878
+        888888888888F77888888FFF888888888888888888888888788888888888888F
+        F888888888888888800088888777888888FF8888888888888888878888888888
+        8888F777888888FFF88888888888888888888887888888888888888FF8888888
+        8888888880008888877778888FF88888888888888888878888888888888FF777
+        788888FFFF888888888888888888888788888888888888FF8888888888888888
+        8000888888777888FFF8888888888888888878888888888888FFF8777888888F
+        FF888888888888888888887888888888888888FF888888888888888880008888
+        88877788FF88888888888888888878888888888888FF888777888888FFF88888
+        88888888888888788888888888888FF88888888888888888800088888887778F
+        F88888888888888888878888888888888FF8888777888888FFF8888888888888
+        888887888888888888888FF88888888888888888800088888888777FF8888888
+        8888888888788888888888888FF88888777888888FFF88888888888888888788
+        888888888888FF8888888888888888888000888888887777FFFFFFFFFFFFFFFF
+        FF88888888888888FF888888777788888FFFFFFFFFFFFFFFFFFF788888888888
+        888FFF8888888888888888888000888888888777FFFFFFFFFFFFFFFFF8888888
+        8888888FFF8888888777888888FFFFFFFFFFFFFFFFFF788888888888888FF888
+        888888888888888880008888888888777888888888888888888888888888888F
+        F8888888887778888888888888888888888888888888888888FF888888888888
+        888888888000888888888887788888888888888888888888888888FF88888888
+        887777888888888888888888888888888888888888FF88888888888888888888
+        800088888888888777888888888888888888888888888FFF8888888888877788
+        888888888888888888888888888888888FF88888888888888888888880008888
+        8888888877788888888888888888888888888FF8888888888888777888888888
+        8888888888888888888888888FF8888888888888888888888000888888888888
+        7778888888888888888888888888FF8888888888888877778888888888888888
+        8888888888888888FF8888888888888888888888800088888888888887778888
+        8888888888888888888FFF888888888888888777888888888888888888888888
+        8888888FFF888888888888888888888880008888888888888777888888888888
+        88888888888FF88888888888888888777888888888888888888888888888888F
+        F888888888888888888888888000888888888888887778888888888888888888
+        88FF88888888888888888877788888888888888888888888888888FF88888888
+        8888888888888888800088888888888888777788888888888888888888FF8888
+        8888888888888887778888888888888888888888888888FF8888888888888888
+        8888888880008888888888888887778888888888888888888FF8888888888888
+        8888888877788888888888888888888888888FF8888888888888888888888888
+        8000888888888888888877788888888888888888FFF888888888888888888888
+        77788888888888888888888888888FF888888888888888888888888880008888
+        88888888888877788888888888888888FF888888888888888888888887778888
+        88888888888888888888FF888888888888888888888888888000888888888888
+        88888777777777777777777FF888888888888888888888888777777777777777
+        777777777777FF88888888888888888888888888800088888888888888888777
+        777777777777777FF88888888888888888888888887777777777777777777777
+        7777888888888888888888888888888880008888888888888888888888888888
+        8888888888888888888888888888888888888888888888888888888888888888
+        8888888888888888888888888000888888888888888888888888888888888888
+        8888888888888888888888888888888888888888888888888888888888888888
+        88888888888888888000}
+      Stretch = True
+    end
+    object Bevel1: TBevel
+      Left = 0
+      Top = 118
+      Width = 771
+      Height = 26
+      Align = alBottom
+      Style = bsRaised
+    end
+    object Bevel2: TBevel
+      Left = 4
+      Top = 120
+      Width = 165
+      Height = 20
+      Anchors = [akLeft, akBottom]
+    end
+    object Bevel3: TBevel
+      Left = 172
+      Top = 120
+      Width = 109
+      Height = 20
+      Anchors = [akLeft, akBottom]
+    end
+    object Bevel4: TBevel
+      Left = 284
+      Top = 120
+      Width = 85
+      Height = 20
+      Anchors = [akLeft, akBottom]
+    end
+    object Bevel5: TBevel
+      Left = 372
+      Top = 120
+      Width = 117
+      Height = 20
+      Anchors = [akLeft, akBottom]
+    end
+    object Label3: TLabel
+      Left = 8
+      Top = 122
+      Width = 43
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'Server:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object Label4: TLabel
+      Left = 176
+      Top = 122
+      Width = 49
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'Volume:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object Label5: TLabel
+      Left = 288
+      Top = 122
+      Width = 25
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'UCI:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object Label6: TLabel
+      Left = 376
+      Top = 122
+      Width = 27
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'Port:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object lblServer: TLabel
+      Left = 64
+      Top = 122
+      Width = 5
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+    end
+    object lblVolume: TLabel
+      Left = 240
+      Top = 122
+      Width = 5
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+    end
+    object lblUCI: TLabel
+      Left = 328
+      Top = 122
+      Width = 5
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+    end
+    object lblPort: TLabel
+      Left = 416
+      Top = 122
+      Width = 5
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+    end
+    object Panel8: TPanel
+      Left = 422
+      Top = 0
+      Width = 349
+      Height = 118
+      Align = alRight
+      BevelOuter = bvNone
+      TabOrder = 0
+      object Label1: TLabel
+        Left = 24
+        Top = 16
+        Width = 97
+        Height = 16
+        Alignment = taRightJustify
+        Caption = 'Access Code:'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+      end
+      object Label2: TLabel
+        Left = 35
+        Top = 56
+        Width = 86
+        Height = 16
+        Alignment = taRightJustify
+        Caption = 'Verify Code:'
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+      end
+      object verifyCode: TEdit
+        Left = 128
+        Top = 56
+        Width = 97
+        Height = 25
+        AutoSize = False
+        CharCase = ecUpperCase
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        PasswordChar = '*'
+        TabOrder = 1
+      end
+      object accessCode: TEdit
+        Left = 128
+        Top = 16
+        Width = 97
+        Height = 25
+        AutoSize = False
+        CharCase = ecUpperCase
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        PasswordChar = '*'
+        TabOrder = 0
+      end
+      object btnOk: TBitBtn
+        Left = 252
+        Top = 16
+        Width = 85
+        Height = 26
+        Caption = '&OK'
+        Default = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 2
+        OnClick = btnOkClick
+        Glyph.Data = {
+          BE060000424DBE06000000000000360400002800000024000000120000000100
+          0800000000008802000000000000000000000001000000010000000000000000
+          80000080000000808000800000008000800080800000C0C0C000C0DCC000F0C8
+          A400000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          000000000000000000000000000000000000F0FBFF00A4A0A000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030303030303
+          0303030303030303030303030303030303030303030303030303030303030303
+          03030303030303030303030303030303030303030303FF030303030303030303
+          03030303030303040403030303030303030303030303030303F8F8FF03030303
+          03030303030303030303040202040303030303030303030303030303F80303F8
+          FF030303030303030303030303040202020204030303030303030303030303F8
+          03030303F8FF0303030303030303030304020202020202040303030303030303
+          0303F8030303030303F8FF030303030303030304020202FA0202020204030303
+          0303030303F8FF0303F8FF030303F8FF03030303030303020202FA03FA020202
+          040303030303030303F8FF03F803F8FF0303F8FF03030303030303FA02FA0303
+          03FA0202020403030303030303F8FFF8030303F8FF0303F8FF03030303030303
+          FA0303030303FA0202020403030303030303F80303030303F8FF0303F8FF0303
+          0303030303030303030303FA0202020403030303030303030303030303F8FF03
+          03F8FF03030303030303030303030303FA020202040303030303030303030303
+          0303F8FF0303F8FF03030303030303030303030303FA02020204030303030303
+          03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403
+          030303030303030303030303F8FF0303F8FF03030303030303030303030303FA
+          0202040303030303030303030303030303F8FF03F8FF03030303030303030303
+          03030303FA0202030303030303030303030303030303F8FFF803030303030303
+          030303030303030303FA0303030303030303030303030303030303F803030303
+          0303030303030303030303030303030303030303030303030303030303030303
+          0303}
+        Margin = 2
+        NumGlyphs = 2
+        Spacing = -1
+        IsControl = True
+      end
+      object btnCancel: TBitBtn
+        Left = 252
+        Top = 56
+        Width = 85
+        Height = 26
+        Cancel = True
+        Caption = '&Cancel'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ModalResult = 2
+        ParentFont = False
+        TabOrder = 3
+        OnClick = btnCancelClick
+        Glyph.Data = {
+          DE010000424DDE01000000000000760000002800000024000000120000000100
+          0400000000006801000000000000000000001000000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+          333333333333333333333333000033338833333333333333333F333333333333
+          0000333911833333983333333388F333333F3333000033391118333911833333
+          38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333
+          911118111118333338F3338F833338F3000033333911111111833333338F3338
+          3333F8330000333333911111183333333338F333333F83330000333333311111
+          8333333333338F3333383333000033333339111183333333333338F333833333
+          00003333339111118333333333333833338F3333000033333911181118333333
+          33338333338F333300003333911183911183333333383338F338F33300003333
+          9118333911183333338F33838F338F33000033333913333391113333338FF833
+          38F338F300003333333333333919333333388333338FFF830000333333333333
+          3333333333333333333888330000333333333333333333333333333333333333
+          0000}
+        Margin = 2
+        NumGlyphs = 2
+        Spacing = -1
+        IsControl = True
+      end
+      object cbxChangeVerifyCode: TCheckBox
+        Left = 128
+        Top = 90
+        Width = 161
+        Height = 17
+        Anchors = [akLeft, akBottom]
+        Caption = 'Change Verify Code'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -13
+        Font.Name = 'Microsoft Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 4
+      end
+    end
+  end
+  object RpcbiBroker: TRPCBroker
+    ClearParameters = True
+    ClearResults = True
+    Connected = False
+    ListenerPort = 9500
+    RpcVersion = '0'
+    Server = 'NXT-Server'
+    KernelLogIn = True
+    LogIn.Mode = lmAVCodes
+    LogIn.PromptDivision = False
+    OldConnectionOnly = False
+    Left = 16
+    Top = 24
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Loginfrm.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Loginfrm.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Loginfrm.pas	(revision 1676)
@@ -0,0 +1,413 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Code supportin Login form.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+{**************************************************
+ver. 1.1.4  1/6/99 (DCM)
+
+XWB*1.1*4 adds a  try-except block in SetUpSignOn to close
+login form when the server job times out.  Also adds a try-
+except block in btnOkClick in order to cancel the action
+if the server job times out. Danila
+
+ver. 1.1.11 9/13/99
+XWB*1.1*11 deleted obsolete code.  DCM (9/13/99)
+**********************************************************}
+unit Loginfrm;
+
+interface          
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, XWBut1, ExtCtrls, Buttons,
+  Hash, MFunStr, Trpcb, SgnonCnf, frmSignonMessage, ShellApi,
+   Windows, XWBRich20{, ActiveX}; //, {OleServer;}
+
+{ TODO : remove units from directory:  APi, xuesap_TLB, fRPCBTimer, fConfirmMapping,  fESSOConf }
+
+type       
+  TfrmSignon = class(TForm)
+    Panel1: TPanel;
+    Panel7: TPanel;
+    Panel8: TPanel;
+    Label1: TLabel;
+    Label2: TLabel;
+    verifyCode: TEdit;
+    accessCode: TEdit;
+    btnOk: TBitBtn;
+    btnCancel: TBitBtn;
+    Image1: TImage;
+    Bevel1: TBevel;
+    Bevel2: TBevel;
+    Bevel3: TBevel;
+    Bevel4: TBevel;
+    Bevel5: TBevel;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label6: TLabel;
+    lblServer: TLabel;
+    lblVolume: TLabel;
+    lblUCI: TLabel;
+    lblPort: TLabel;
+    introText: TXWBRichEdit;
+    cbxChangeVerifyCode: TCheckBox;
+    RpcbiBroker: TRPCBroker;
+    procedure btnOkClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure introTextURLClick(Sender: TObject; URL: String);
+   private
+     FChngVerify: Boolean;     // indicates whether user has requested changing verify code
+     OrigHelp : String;        //Help filename of calling application.
+     function DoVerify: Boolean;
+    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
+   public
+     DefaultSignonConfiguration: TSignonValues;
+public
+end;
+
+procedure PrepareSignonForm(AppBroker: TRPCBroker);
+function  SetUpSignOn : Boolean;
+
+var
+  frmSignon: TfrmSignon;
+  intDeviceLock: integer;
+  LoginfrmSignOnBroker: TRPCBroker;
+
+Const
+  SC_Configure = 1;
+  SC_About = 2;
+
+implementation
+
+
+uses
+  RpcSlogin, VCEdit, fRPCBErrMsg, RpcConf1;
+
+var
+  SysMenu: HMenu;
+
+{$R *.DFM}
+
+procedure PrepareSignonForm(AppBroker: TRPCBroker);
+begin
+  LoginfrmSignonBroker := AppBroker;
+end;
+
+function  SetUpSignOn : Boolean;
+begin
+  Result := True;       //By default Signon is needed.
+  if LoginfrmSignonBroker = nil then LoginfrmSignonBroker := frmSignon.RpcbiBroker;
+  {SignonBroker superseeds RpcbiBroker}
+  with frmSignon do
+  begin
+    try
+    with LoginfrmSignonBroker do
+    begin
+      RemoteProcedure := 'XUS SIGNON SETUP';
+      Call;
+    end;
+    except                  {P4}
+      frmSignon.Free;    {P4}  // Release  jli 041104
+      exit;                 {P4}
+    end;                    {P4}
+    lblServer.Caption := LoginfrmSignonBroker.Results[0];
+    lblVolume.Caption := LoginfrmSignonBroker.Results[1];
+    lblUCI.Caption    := LoginfrmSignonBroker.Results[2];
+    lblPort.Caption   := LoginfrmSignonBroker.Results[3];
+    intDeviceLock   := 0;
+    if LoginfrmSignonBroker.Results.Count > 5 then    //Server sent single signon info.
+      if LoginfrmSignonBroker.Results[5] = '1' then   //Signon not needed
+        Result := False
+      else
+        Result := True;
+    LoginfrmSignonBroker.Login.IsProductionAccount := False;
+    LoginfrmSignonBroker.Login.DomainName := '';
+    if LoginfrmSignonBroker.Results.Count > 7 then
+    begin
+      LoginfrmSignonBroker.Login.DomainName := LoginfrmSignonBroker.Results[6];
+      if LoginfrmSignonBroker.Results[7] = '1' then
+        LoginfrmSignonBroker.Login.IsProductionAccount := True;
+    end;
+  end;
+end;
+
+{--------------------- TfrmSignon.btnOkClick ---------------------
+This gets called when user presses OK button on the login form.
+Access and verify codes are transmitted as access;verify to the server.
+Server responds with a multi-purpose array where each node has some
+special meaning, which may change periodically and should be revised.
+SignonBroker.Results[0] -  DUZ (0 if unsuccessful signon)
+SignonBroker.Results[1] -  0=OK  1=device lock (too many bad tries)
+SignonBroker.Results[2] -  0=verify doesn't need to be changed
+                           1=verify needs changing
+SignonBroker.Results[3] -  message (i.e. signon inhibited, etc.)
+SignonBroker.Results[4] -  reserved
+SignonBroker.Results[5] -  number of lines in greeting message
+                           (currently hard set to 0) to suppress msg display
+SignonBroker.Results[6-n] - greeting message
+------------------------------------------------------------------}
+procedure TfrmSignon.btnOkClick(Sender: TObject);
+var
+  I: integer;
+begin
+  frmSignon.Tag := 0;          {initialize signon flag}
+  try    //P4
+  with LoginfrmSignonBroker do begin
+    with Param[0] do begin
+      Value := Encrypt(accessCode.text + ';' + verifyCode.text);
+      PType := literal;
+    end;
+    RemoteProcedure := 'XUS AV CODE';
+    Call;
+
+    {Device is locked -- too many failures}
+    if Results[1] = '1' then
+    begin
+      RPCBShowErrMsg(Results[3]);
+      Close;
+    end
+
+    {Verify code must change}
+    else if Results[2] = '1' then
+    begin
+      MessageDlg('You must change your VERIFY CODE at this time.',
+                   mtWarning, [mbOK], 0);         //Notify that VC must change.
+      if DoVerify then
+        frmSignon.Tag := 1;                               //VC changed -> OK
+      Close;
+         {Note: if VC change necessary and it wasn't made,
+               Tag remains 0 meaning unsuccessful signon.}
+    end
+
+    {Signon failed for some other reason}
+    else if Results[0] = '0' then
+    begin
+      accessCode.text := '';
+      verifyCode.text := '';
+      RPCBShowErrMsg(Results[3]);
+      accessCode.SetFocus;                        //Try again.
+    end
+
+    {Signon succeeded.}
+    else
+    begin
+      frmSignon.Tag := 1;    {set flag that signon was good}
+          {display any server greeting messages}
+
+      if cbxChangeVerifyCode.Checked then
+        DoVerify;
+      if Results.Count > 5 then
+      begin
+        if Results[5] <> '0' then
+        begin
+          frmSignonMsg := TfrmSignonMsg.Create(Self);
+          try
+            with frmSignonMsg do begin
+              for I := 1 to StrToInt(Results[5]) do
+                mmoMsg.Lines.Add(Results[5+I]);
+              ShowApplicationAndFocusOK(Application);
+              ShowModal;
+            end;
+          finally
+            frmSignonMsg.Free;  // Release;  jli 041104
+          end;
+        end;
+      end;
+      Close;
+    end;
+   end;
+  except                   //P4
+    btnCancelClick(self);  //P4
+  end;                     //P4
+end;
+
+procedure TfrmSignon.btnCancelClick(Sender: TObject);
+begin
+  LoginfrmSignOnBroker.Login.ErrorText := 'User Cancelled Login Process';
+  Close;
+end;
+
+procedure TfrmSignon.FormShow(Sender: TObject);
+var
+  Str: String;
+begin
+  Str := 'RPCBroker';
+  {add Configure... to system menu}
+  SysMenu := GetSystemMenu(Handle, False);
+  AppendMenu(SysMenu, MF_Enabled + MF_String + MF_Unchecked, SC_Configure,
+             '&Properties...');
+  AppendMenu(SysMenu, MF_Enabled + MF_String + MF_Unchecked, SC_About,PChar('&About '+Str));
+  with LoginfrmSignonBroker do begin
+    RemoteProcedure := 'XUS INTRO MSG';
+    lstCall(introText.Lines);
+  end;
+  OrigHelp := Application.HelpFile;             // Save original helpfile.
+  Application.HelpFile := ReadRegData(HKLM, REG_BROKER, 'BrokerDr') +
+                           '\clagent.hlp';      // Identify ConnectTo helpfile.
+end;
+
+procedure TfrmSignon.FormCreate(Sender: TObject);
+var
+  SignonConfiguration: TSignonConfiguration;
+begin
+  if Pos('RPCSharedBrokerSessionMgr',ParamStr(0)) > 0 then
+    IsSharedBroker := True;
+
+  if (Pos('LARGE',UpperCase(ReadRegDataDefault(HKCU, 'Control Panel\Appearance', 'Current',''))) > 0) or
+     (Screen.Width < 800) then
+  begin
+    WindowState := wsMaximized;
+    with Screen do
+    begin
+      if Width < 700 then              // 640
+        IntroText.Font.Size := 9
+      else if Width < 750 then         // 720
+        IntroText.Font.Size := 10
+      else if Width < 900 then         // 800
+        IntroText.Font.Size := 11
+      else if Width < 1100 then        // 1024
+        IntroText.Font.Size := 15
+      else if Width < 1200 then        // 1152
+        IntroText.Font.Size := 16
+      else
+        IntroText.Font.Size := 19;     // 1280
+    end;    // with
+  end;
+
+  FormStyle := fsStayOnTop;   // make form stay on top of others so it can be found
+  {adjust appearance per user's preferences}
+  SignonConfiguration := TSignonConfiguration.Create;
+  try
+    DefaultSignonConfiguration := TSignOnValues.Create;
+    DefaultSignonConfiguration.BackColor := IntroText.Color;
+    DefaultSignonConfiguration.Height := Height;
+    DefaultSignonConfiguration.Width := Width;
+    DefaultSignonConfiguration.Position := '0';
+    DefaultSignonConfiguration.Size := '0';
+    DefaultSignonConfiguration.Left := Left;
+    DefaultSignonConfiguration.Top := Top;
+    DefaultSignonConfiguration.Font := IntroText.Font;
+    DefaultSignonConfiguration.TextColor := IntroText.Font.Color;
+    DefaultSignonConfiguration.FontStyles := IntroText.Font.Style;
+    SignonDefaults.SetEqual(DefaultSignonConfiguration);
+
+
+    SignonConfiguration.ReadRegistrySettings;
+    if InitialValues.Size = '0' then
+    begin  {restore defaults}
+      Width:= DefaultSignonConfiguration.Width;
+      Height := DefaultSignonConfiguration.Height;
+    end
+    else begin
+      try
+        Position := poDesigned;
+        Width := StrToInt(Piece(strSize,U,2));
+        Height := StrToInt(Piece(strSize,U,3));
+      except
+        Width:= DefaultSignonConfiguration.Width;
+        Height := DefaultSignonConfiguration.Height;
+      end;
+    end;
+
+    if InitialValues.Position = '0' then {restore defaults}
+      Position := poScreenCenter
+    else begin
+      try
+        Top:= StrToInt(Piece(strPosition,U,2));
+        Left := StrToInt(Piece(strPosition,U,3));
+      except
+        Position := poScreenCenter
+      end;
+    end;
+
+    if InitialValues.BackColor <> 0 then
+      introText.Color := InitialValues.BackColor
+    else
+      introText.Color := clWindow;
+
+    introText.Font := InitialValues.Font;
+
+  finally
+    SignonConfiguration.Free;
+  end;
+  FChngVerify := False;
+end;
+
+procedure TfrmSignon.WMSysCommand(var Message: TWMSysCommand);
+var
+  Str: String;
+  SignonConfiguration: TSignonConfiguration;
+  frmErrMsg: TfrmErrMsg;
+begin
+  if Message.CmdType = SC_Configure then
+  begin
+    if IsSharedBroker then
+      Self.WindowState := wsMinimized;
+    SignonConfiguration := TSignonConfiguration.Create;
+    try
+      ShowApplicationAndFocusOK(Application);
+      SignonConfiguration.ShowModal;
+    finally
+      SignonConfiguration.Free;
+      Self.WindowState := wsNormal;
+    end;
+  end
+  else if Message.CmdType = SC_About then
+  begin
+    frmErrMsg := TfrmErrMsg.Create(Application);
+    try
+      frmErrMsg.Caption := 'About RPCBroker';
+      Str := 'RPCBroker Version is '+RpcbiBroker.BrokerVersion;
+      frmErrMsg.mmoErrorMessage.Lines.Add(Str);
+      ShowApplicationAndFocusOK(Application);
+      frmErrMsg.ShowModal;
+    finally
+      frmErrMsg.Free;
+    end;
+  end
+  else inherited;
+end;
+
+procedure TfrmSignon.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if Piece(strSize,U,1) = '2' then begin
+    strSize := '2^'+IntToStr(Width)+ U + IntToStr(Height);
+    WriteRegData(HKCU, REG_SIGNON, 'SignonSiz', strSize);
+  end;
+
+  if Piece(strPosition,U,1) = '2' then begin
+    strPosition := '2^'+IntToStr(Top)+ U + IntToStr(Left);
+    WriteRegData(HKCU, REG_SIGNON, 'SignonPos', strPosition);
+  end;
+  Application.HelpFile := OrigHelp;  // Restore helpfile.
+end;
+
+procedure TfrmSignon.introTextURLClick(Sender: TObject; URL: String);
+begin
+  ShellExecute(Application.Handle,'open',PChar(URL),nil,nil,SW_NORMAL);
+end;
+
+function TfrmSignon.DoVerify: Boolean;
+var
+  VCEdit1: TVCEdit;
+begin
+  VCEdit1 := TVCEdit.Create(Self);
+  try
+    VCEdit1.RPCBroker := LoginfrmSignonBroker;
+    Result := VCEdit1.ChangeVCKnowOldVC(VerifyCode.Text);  //invoke VCEdit form.
+  finally
+    VCEdit1.Free;
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Mfunstr.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Mfunstr.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Mfunstr.pas	(revision 1676)
@@ -0,0 +1,89 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Functions that emulate MUMPS functions.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit MFunStr;
+
+interface
+
+uses SysUtils, Dialogs;
+
+{procedure and function prototypes}
+function Piece(x: string; del: string; piece1: integer = 1; piece2: integer=0): string;
+function Translate(passedString, identifier, associator: string): string;
+
+const
+  U: string = '^';
+
+implementation
+
+function Translate(passedString, identifier, associator: string): string;
+{TRANSLATE(string,identifier,associator)
+Performs a character-for-character replacement within a string.}
+var
+   index, position: integer;
+   newString: string;
+   substring: string;
+
+begin
+     newString := '';                     {initialize NewString}
+     for index := 1 to length(passedString) do begin
+         substring := copy(passedString,index,1);
+         position := pos(substring,identifier);
+         if position > 0 then
+           newString := newString + copy(associator,position,1)
+         else
+           newString := newString + copy(passedString,index,1)
+     end;
+     result := newString;
+end;
+
+
+function Piece(x: string; del: string; piece1: integer = 1; piece2: integer=0) : string;
+{PIECE(string,delimiter,piece number)
+Returns a field within a string using the specified delimiter.}
+var
+  delIndex,pieceNumber: integer;
+  Resval: String;
+  Str: String;
+begin
+  {initialize variables}
+  pieceNumber := 1;
+  Str := x;
+  {delIndex :=1;}
+  if piece2 = 0 then 
+    piece2 := piece1;
+  Resval := '';
+  repeat
+    delIndex := Pos(del,Str);
+    if (delIndex > 0) or ((pieceNumber > Pred(piece1)) and (pieceNumber < (piece2+1))) then begin
+      if (pieceNumber > Pred(piece1)) and (pieceNumber < (piece2+1)) then
+      begin
+        if (pieceNumber > piece1) and (Str <> '') then
+          Resval := Resval + del;
+        if delIndex > 0 then
+        begin
+          Resval := Resval + Copy(Str,1,delIndex-1);
+          Str := Copy(Str,delIndex+Length(del),Length(Str));
+        end
+        else
+        begin
+          Resval := Resval + Str;
+          Str := '';
+        end;
+      end
+      else
+        Str := Copy(Str,delIndex+Length(del),Length(Str));
+    end
+    else if Str <> '' then
+      Str := '';
+    inc(pieceNumber);
+  until (pieceNumber > piece2);
+  Result := Resval;
+end;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50;XWB_R50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1.dpr	(revision 1676)
@@ -0,0 +1,17 @@
+program RPCSharedBrokerSessionMgr1;
+
+uses
+  Forms,
+  RPCSharedBrokerSessionMgr1_TLB in 'RPCSharedBrokerSessionMgr1_TLB.pas',
+  uSharedBroker1 in 'uSharedBroker1.pas' {SharedBroker: CoClass},
+  fVistaBar in 'fVistaBar.pas' {frmVistABar},
+  fDebugInfo in 'fDebugInfo.pas' {frmDebugInfo};
+
+{$R *.TLB}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TfrmVistABar, frmVistABar);
+  Application.CreateForm(TfrmDebugInfo, frmDebugInfo);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1_TLB.pas	(revision 1676)
@@ -0,0 +1,876 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Type library for use with SharedRPCBroker.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit RPCSharedBrokerSessionMgr1_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.88.1.0.1.0  $
+// File generated on 1/25/2002 11:58:49 AM from Type Library described below.
+
+// *************************************************************************//
+// NOTE:                                                                      
+// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
+// which return objects that may need to be explicitly created via a function 
+// call prior to any access via the property. These items have been disabled  
+// in order to prevent accidental use from within the object inspector. You   
+// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
+// removing them from the $IFDEF blocks. However, such items must still be    
+// programmatically created via a method of the appropriate CoClass before    
+// they can be used.                                                          
+// ************************************************************************ //
+// Type Lib: D:\Development\RPCSharedBroker\Exe1\RPCSharedBrokerSessionMgr1.exe (1)
+// IID\LCID: {1F7D1EB0-E54F-46F0-B485-2D56743EBB70}\0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// Errors:
+//   Error creating palette bitmap of (TSharedBroker) : Invalid GUID format
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+interface
+
+uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  RPCSharedBrokerSessionMgr1MajorVersion = 1;
+  RPCSharedBrokerSessionMgr1MinorVersion = 0;
+
+  LIBID_RPCSharedBrokerSessionMgr1: TGUID = '{1F7D1EB0-E54F-46F0-B485-2D56743EBB70}';
+
+  IID_ISharedBroker: TGUID = '{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}';
+  DIID_ISharedBrokerEvents: TGUID = '{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}';
+  CLASS_SharedBroker: TGUID = '{EB44A5CD-1871-429F-A5BC-19C71B722182}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum ISharedBrokerErrorCode
+type
+  ISharedBrokerErrorCode = TOleEnum;
+const
+  GeneralFailure = $00000000;
+  Success = $00000001;
+  UniqueRpcIdDoesNotExist = $00000002;
+  UniqueClientIdDoesNotExist = $00000003;
+  RpcHistoryIndexOutOfRange = $00000004;
+  RpcHistoryNotEnabled = $00000005;
+  CouldNotSetContext = $00000006;
+  CouldNotConnect = $00000007;
+  ClientIndexOutOfRange = $00000008;
+  NilClientPointer = $00000009;
+  ConnectionIndexOutOfRange = $0000000A;
+
+// Constants for enum IRegistryRootEnum
+type
+  IRegistryRootEnum = TOleEnum;
+const
+  HKCR = $00000000;
+  HKCU = $00000001;
+  HKLM = $00000002;
+  HKU = $00000003;
+  HKCC = $00000004;
+  HKDD = $00000005;
+
+// Constants for enum ISharedBrokerConnection
+type
+  ISharedBrokerConnection = TOleEnum;
+const
+  Failed = $00000000;
+  New = $00000001;
+  Shared = $00000002;
+  Debug = $00000003;
+
+// Constants for enum ISharedBrokerClient
+type
+  ISharedBrokerClient = TOleEnum;
+const
+  BrokerClient = $00000000;
+  DebuggerClient = $00000001;
+
+// Constants for enum ISharedBrokerShowErrorMsgs
+type
+  ISharedBrokerShowErrorMsgs = TOleEnum;
+const
+  isemRaise = $00000000;
+  isemQuiet = $00000001;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  ISharedBroker = interface;
+  ISharedBrokerDisp = dispinterface;
+  ISharedBrokerEvents = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  SharedBroker = ISharedBroker;
+
+
+// *********************************************************************//
+// Interface: ISharedBroker
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}
+// *********************************************************************//
+  ISharedBroker = interface(IDispatch)
+    ['{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}']
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode; safecall;
+    function  BrokerDisconnect: ISharedBrokerErrorCode; safecall;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode; safecall;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; safecall;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode; safecall;
+    function  Get_RpcVersion: WideString; safecall;
+    procedure Set_RpcVersion(const version: WideString); safecall;
+    function  Get_RpcHistoryEnabled: WordBool; safecall;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool); safecall;
+    function  Get_PerClientRpcHistoryLimit: Integer; safecall;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer); safecall;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  Get_CurrentContext: WideString; safecall;
+    function  Get_User: WideString; safecall;
+    function  Get_Login: WideString; safecall;
+    procedure Set_Login(const Value: WideString); safecall;
+    function  Get_RpcbError: WideString; safecall;
+    function  Get_Socket: Integer; safecall;
+    function  Get_KernelLogin: WordBool; safecall;
+    procedure Set_KernelLogin(Value: WordBool); safecall;
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs; safecall;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs); safecall;
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property CurrentContext: WideString read Get_CurrentContext;
+    property User: WideString read Get_User;
+    property Login: WideString read Get_Login write Set_Login;
+    property RpcbError: WideString read Get_RpcbError;
+    property Socket: Integer read Get_Socket;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISharedBrokerDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}
+// *********************************************************************//
+  ISharedBrokerDisp = dispinterface
+    ['{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}']
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode; dispid 1;
+    function  BrokerDisconnect: ISharedBrokerErrorCode; dispid 2;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode; dispid 3;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; dispid 4;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode; dispid 5;
+    property RpcVersion: WideString dispid 7;
+    property RpcHistoryEnabled: WordBool dispid 6;
+    property PerClientRpcHistoryLimit: Integer dispid 8;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode; dispid 10;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode; dispid 11;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode; dispid 12;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode; dispid 13;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode; dispid 14;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode; dispid 15;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode; dispid 16;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode; dispid 17;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode; dispid 18;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode; dispid 19;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode; dispid 20;
+    property CurrentContext: WideString readonly dispid 9;
+    property User: WideString readonly dispid 22;
+    property Login: WideString dispid 23;
+    property RpcbError: WideString readonly dispid 24;
+    property Socket: Integer readonly dispid 25;
+    property KernelLogin: WordBool dispid 26;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs dispid 27;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISharedBrokerEvents
+// Flags:     (4096) Dispatchable
+// GUID:      {CBEA7167-4F9B-465A-B82E-4CEBDF933C35}
+// *********************************************************************//
+  ISharedBrokerEvents = dispinterface
+    ['{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}']
+    procedure OnLogout; dispid 1;
+    procedure OnRpcCallRecorded(uniqueRpcId: SYSINT); dispid 2;
+    procedure OnClientConnect(UniqueClientId: SYSINT; Connection: ISharedBrokerConnection); dispid 3;
+    procedure OnClientDisconnect(UniqueClientId: SYSINT); dispid 4;
+    procedure OnContextChanged(connectionIndex: SYSINT; const NewContext: WideString); dispid 5;
+    procedure OnRPCBFailure(const ErrorText: WideString); dispid 6;
+    procedure OnLoginError(const ErrorText: WideString); dispid 7;
+    procedure OnConnectionDropped(connectionIndex: SYSINT; const ErrorText: WideString); dispid 8;
+  end;
+
+// *********************************************************************//
+// The Class CoSharedBroker provides a Create and CreateRemote method to          
+// create instances of the default interface ISharedBroker exposed by              
+// the CoClass SharedBroker. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoSharedBroker = class
+    class function Create: ISharedBroker;
+    class function CreateRemote(const MachineName: string): ISharedBroker;
+  end;
+
+  TSharedBrokerOnRpcCallRecorded = procedure(Sender: TObject; uniqueRpcId: SYSINT) of object;
+  TSharedBrokerOnClientConnect = procedure(Sender: TObject; UniqueClientId: SYSINT; 
+                                                            Connection: ISharedBrokerConnection) of object;
+  TSharedBrokerOnClientDisconnect = procedure(Sender: TObject; UniqueClientId: SYSINT) of object;
+  TSharedBrokerOnContextChanged = procedure(Sender: TObject; connectionIndex: SYSINT; 
+                                                             var NewContext: OleVariant) of object;
+  TSharedBrokerOnRPCBFailure = procedure(Sender: TObject; var ErrorText: OleVariant) of object;
+  TSharedBrokerOnLoginError = procedure(Sender: TObject; var ErrorText: OleVariant) of object;
+  TSharedBrokerOnConnectionDropped = procedure(Sender: TObject; connectionIndex: SYSINT; 
+                                                                var ErrorText: OleVariant) of object;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TSharedBroker
+// Help String      : SharedBroker Object
+// Default Interface: ISharedBroker
+// Def. Intf. DISP? : No
+// Event   Interface: ISharedBrokerEvents
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TSharedBrokerProperties= class;
+{$ENDIF}
+  TSharedBroker = class(TOleServer)
+  private
+    FOnLogout: TNotifyEvent;
+    FOnRpcCallRecorded: TSharedBrokerOnRpcCallRecorded;
+    FOnClientConnect: TSharedBrokerOnClientConnect;
+    FOnClientDisconnect: TSharedBrokerOnClientDisconnect;
+    FOnContextChanged: TSharedBrokerOnContextChanged;
+    FOnRPCBFailure: TSharedBrokerOnRPCBFailure;
+    FOnLoginError: TSharedBrokerOnLoginError;
+    FOnConnectionDropped: TSharedBrokerOnConnectionDropped;
+    FIntf:        ISharedBroker;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TSharedBrokerProperties;
+    function      GetServerProperties: TSharedBrokerProperties;
+{$ENDIF}
+    function      GetDefaultInterface: ISharedBroker;
+  protected
+    procedure InitServerData; override;
+    procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
+    function  Get_RpcVersion: WideString;
+    procedure Set_RpcVersion(const version: WideString);
+    function  Get_RpcHistoryEnabled: WordBool;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool);
+    function  Get_PerClientRpcHistoryLimit: Integer;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer);
+    function  Get_CurrentContext: WideString;
+    function  Get_User: WideString;
+    function  Get_Login: WideString;
+    procedure Set_Login(const Value: WideString);
+    function  Get_RpcbError: WideString;
+    function  Get_Socket: Integer;
+    function  Get_KernelLogin: WordBool;
+    procedure Set_KernelLogin(Value: WordBool);
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: ISharedBroker);
+    procedure Disconnect; override;
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode;
+    function  BrokerDisconnect: ISharedBrokerErrorCode;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode;
+    property  DefaultInterface: ISharedBroker read GetDefaultInterface;
+    property CurrentContext: WideString read Get_CurrentContext;
+    property User: WideString read Get_User;
+    property RpcbError: WideString read Get_RpcbError;
+    property Socket: Integer read Get_Socket;
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property Login: WideString read Get_Login write Set_Login;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TSharedBrokerProperties read GetServerProperties;
+{$ENDIF}
+    property OnLogout: TNotifyEvent read FOnLogout write FOnLogout;
+    property OnRpcCallRecorded: TSharedBrokerOnRpcCallRecorded read FOnRpcCallRecorded write FOnRpcCallRecorded;
+    property OnClientConnect: TSharedBrokerOnClientConnect read FOnClientConnect write FOnClientConnect;
+    property OnClientDisconnect: TSharedBrokerOnClientDisconnect read FOnClientDisconnect write FOnClientDisconnect;
+    property OnContextChanged: TSharedBrokerOnContextChanged read FOnContextChanged write FOnContextChanged;
+    property OnRPCBFailure: TSharedBrokerOnRPCBFailure read FOnRPCBFailure write FOnRPCBFailure;
+    property OnLoginError: TSharedBrokerOnLoginError read FOnLoginError write FOnLoginError;
+    property OnConnectionDropped: TSharedBrokerOnConnectionDropped read FOnConnectionDropped write FOnConnectionDropped;
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TSharedBroker
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TSharedBrokerProperties = class(TPersistent)
+  private
+    FServer:    TSharedBroker;
+    function    GetDefaultInterface: ISharedBroker;
+    constructor Create(AServer: TSharedBroker);
+  protected
+    function  Get_RpcVersion: WideString;
+    procedure Set_RpcVersion(const version: WideString);
+    function  Get_RpcHistoryEnabled: WordBool;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool);
+    function  Get_PerClientRpcHistoryLimit: Integer;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer);
+    function  Get_CurrentContext: WideString;
+    function  Get_User: WideString;
+    function  Get_Login: WideString;
+    procedure Set_Login(const Value: WideString);
+    function  Get_RpcbError: WideString;
+    function  Get_Socket: Integer;
+    function  Get_KernelLogin: WordBool;
+    procedure Set_KernelLogin(Value: WordBool);
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+  public
+    property DefaultInterface: ISharedBroker read GetDefaultInterface;
+  published
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property Login: WideString read Get_Login write Set_Login;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  end;
+{$ENDIF}
+
+
+// procedure Register;
+
+implementation
+
+uses ComObj;
+
+class function CoSharedBroker.Create: ISharedBroker;
+begin
+  Result := CreateComObject(CLASS_SharedBroker) as ISharedBroker;
+end;
+
+class function CoSharedBroker.CreateRemote(const MachineName: string): ISharedBroker;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_SharedBroker) as ISharedBroker;
+end;
+
+procedure TSharedBroker.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{EB44A5CD-1871-429F-A5BC-19C71B722182}';
+    IntfIID:   '{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}';
+    EventIID:  '{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TSharedBroker.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    ConnectEvents(punk);
+    Fintf:= punk as ISharedBroker;
+  end;
+end;
+
+procedure TSharedBroker.ConnectTo(svrIntf: ISharedBroker);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+  ConnectEvents(FIntf);
+end;
+
+procedure TSharedBroker.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    DisconnectEvents(FIntf);
+    FIntf := nil;
+  end;
+end;
+
+function TSharedBroker.GetDefaultInterface: ISharedBroker;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TSharedBroker.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TSharedBrokerProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TSharedBroker.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TSharedBroker.GetServerProperties: TSharedBrokerProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+procedure TSharedBroker.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
+begin
+  case DispID of
+    -1: Exit;  // DISPID_UNKNOWN
+   1: if Assigned(FOnLogout) then
+            FOnLogout(Self);
+   2: if Assigned(FOnRpcCallRecorded) then
+            FOnRpcCallRecorded(Self, Params[0] {SYSINT});
+   3: if Assigned(FOnClientConnect) then
+            FOnClientConnect(Self, Params[0] {SYSINT}, Params[1] {ISharedBrokerConnection});
+   4: if Assigned(FOnClientDisconnect) then
+            FOnClientDisconnect(Self, Params[0] {SYSINT});
+   5: if Assigned(FOnContextChanged) then
+            FOnContextChanged(Self, Params[0] {SYSINT}, Params[1] {const WideString});
+   6: if Assigned(FOnRPCBFailure) then
+            FOnRPCBFailure(Self, Params[0] {const WideString});
+   7: if Assigned(FOnLoginError) then
+            FOnLoginError(Self, Params[0] {const WideString});
+   8: if Assigned(FOnConnectionDropped) then
+            FOnConnectionDropped(Self, Params[0] {SYSINT}, Params[1] {const WideString});
+  end; {case DispID}
+end;
+
+function  TSharedBroker.Get_RpcVersion: WideString;
+begin
+  Result := DefaultInterface.Get_RpcVersion;
+end;
+
+procedure TSharedBroker.Set_RpcVersion(const version: WideString);
+begin
+  DefaultInterface.Set_RpcVersion(version);
+end;
+
+function  TSharedBroker.Get_RpcHistoryEnabled: WordBool;
+begin
+  Result := DefaultInterface.Get_RpcHistoryEnabled;
+end;
+
+procedure TSharedBroker.Set_RpcHistoryEnabled(enabled: WordBool);
+begin
+  DefaultInterface.Set_RpcHistoryEnabled(enabled);
+end;
+
+function  TSharedBroker.Get_PerClientRpcHistoryLimit: Integer;
+begin
+  Result := DefaultInterface.Get_PerClientRpcHistoryLimit;
+end;
+
+procedure TSharedBroker.Set_PerClientRpcHistoryLimit(limit: Integer);
+begin
+  DefaultInterface.Set_PerClientRpcHistoryLimit(limit);
+end;
+
+function  TSharedBroker.Get_CurrentContext: WideString;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TSharedBroker.Get_User: WideString;
+begin
+  Result := DefaultInterface.Get_User;
+end;
+
+function  TSharedBroker.Get_Login: WideString;
+begin
+  Result := DefaultInterface.Get_Login;
+end;
+
+procedure TSharedBroker.Set_Login(const Value: WideString);
+begin
+  DefaultInterface.Set_Login(Value);
+end;
+
+function  TSharedBroker.Get_RpcbError: WideString;
+begin
+  Result := DefaultInterface.Get_RpcbError;
+end;
+
+function  TSharedBroker.Get_Socket: Integer;
+begin
+  Result := DefaultInterface.Get_Socket;
+end;
+
+function  TSharedBroker.Get_KernelLogin: WordBool;
+begin
+  Result := DefaultInterface.Get_KernelLogin;
+end;
+
+procedure TSharedBroker.Set_KernelLogin(Value: WordBool);
+begin
+  DefaultInterface.Set_KernelLogin(Value);
+end;
+
+function  TSharedBroker.Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+begin
+  Result := DefaultInterface.Get_ShowErrorMsgs;
+end;
+
+procedure TSharedBroker.Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+begin
+  DefaultInterface.Set_ShowErrorMsgs(Value);
+end;
+
+function  TSharedBroker.BrokerConnect(const ClientName: WideString; 
+                                      ConnectionType: ISharedBrokerClient; 
+                                      const ServerPort: WideString; WantDebug: WordBool; 
+                                      AllowShared: WordBool; KernelLogin: WordBool; 
+                                      ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                                      var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                                      out ErrorMsg: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerConnect(ClientName, ConnectionType, ServerPort, WantDebug, 
+                                           AllowShared, KernelLogin, ShowErrMsgs, RpcTimeLim, 
+                                           LoginStr, UniqueClientIId, ErrorMsg);
+end;
+
+function  TSharedBroker.BrokerDisconnect: ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerDisconnect;
+end;
+
+function  TSharedBroker.BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerSetContext(OptionName);
+end;
+
+function  TSharedBroker.BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                                   RpcTimeLimit: Integer; out RpcResults: WideString; 
+                                   out UniqueRpcCallId: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.BrokerCall(RpcName, RpcParams, RpcTimeLimit, RpcResults, 
+                                        UniqueRpcCallId);
+end;
+
+function  TSharedBroker.ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                           const Name: WideString; const Default: WideString; 
+                                           out RegResult: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.ReadRegDataDefault(Root, Key, Name, Default, RegResult);
+end;
+
+function  TSharedBroker.GetRpcHistoryCountForClient(UniqueClientId: Integer; 
+                                                    out rpcHistoryCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcHistoryCountForClient(UniqueClientId, rpcHistoryCount);
+end;
+
+function  TSharedBroker.GetClientIdAndNameFromIndex(clientIndex: Integer; 
+                                                    out UniqueClientId: Integer; 
+                                                    out ClientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetClientIdAndNameFromIndex(clientIndex, UniqueClientId, ClientName);
+end;
+
+function  TSharedBroker.LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.LogoutConnectedClients(logoutTimeLimit);
+end;
+
+function  TSharedBroker.GetClientNameFromUniqueClientId(UniqueClientId: Integer; 
+                                                        out ClientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetClientNameFromUniqueClientId(UniqueClientId, ClientName);
+end;
+
+function  TSharedBroker.GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetActiveBrokerConnectionIndexCount(connectionIndexCount);
+end;
+
+function  TSharedBroker.GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                                      out connectedServerIp: WideString; 
+                                                      out connectedServerPort: Integer; 
+                                                      out lastContext: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetActiveBrokerConnectionInfo(connectionIndex, connectedServerIp, 
+                                                           connectedServerPort, lastContext);
+end;
+
+function  TSharedBroker.GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                                         out connectionIndex: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId, 
+                                                                              connectionIndex);
+end;
+
+function  TSharedBroker.GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                              out brokerContext: WideString; 
+                                              out RpcName: WideString; out RpcParams: WideString; 
+                                              out rpcResult: WideString; 
+                                              out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcCallFromHistory(uniqueRpcId, UniqueClientId, brokerContext, 
+                                                   RpcName, RpcParams, rpcResult, rpcStartDateTime, 
+                                                   rpcDuration);
+end;
+
+function  TSharedBroker.GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                                   out uniqueRpcId: Integer; 
+                                                   out brokerContext: WideString; 
+                                                   out RpcName: WideString; 
+                                                   out RpcParams: WideString; 
+                                                   out rpcResult: WideString; 
+                                                   out rpcStartDateTime: Double; 
+                                                   out rpcDuration: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcCallFromHistoryIndex(UniqueClientId, rpcCallIndex, uniqueRpcId, 
+                                                        brokerContext, RpcName, RpcParams, 
+                                                        rpcResult, rpcStartDateTime, rpcDuration);
+end;
+
+function  TSharedBroker.GetRpcClientIdFromHistory(uniqueRpcId: Integer; 
+                                                  out UniqueClientId: Integer; 
+                                                  out ClientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetRpcClientIdFromHistory(uniqueRpcId, UniqueClientId, ClientName);
+end;
+
+function  TSharedBroker.GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := DefaultInterface.GetConnectedClientCount(connectedClientCount);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TSharedBrokerProperties.Create(AServer: TSharedBroker);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TSharedBrokerProperties.GetDefaultInterface: ISharedBroker;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TSharedBrokerProperties.Get_RpcVersion: WideString;
+begin
+  Result := DefaultInterface.Get_RpcVersion;
+end;
+
+procedure TSharedBrokerProperties.Set_RpcVersion(const version: WideString);
+begin
+  DefaultInterface.Set_RpcVersion(version);
+end;
+
+function  TSharedBrokerProperties.Get_RpcHistoryEnabled: WordBool;
+begin
+  Result := DefaultInterface.Get_RpcHistoryEnabled;
+end;
+
+procedure TSharedBrokerProperties.Set_RpcHistoryEnabled(enabled: WordBool);
+begin
+  DefaultInterface.Set_RpcHistoryEnabled(enabled);
+end;
+
+function  TSharedBrokerProperties.Get_PerClientRpcHistoryLimit: Integer;
+begin
+  Result := DefaultInterface.Get_PerClientRpcHistoryLimit;
+end;
+
+procedure TSharedBrokerProperties.Set_PerClientRpcHistoryLimit(limit: Integer);
+begin
+  DefaultInterface.Set_PerClientRpcHistoryLimit(limit);
+end;
+
+function  TSharedBrokerProperties.Get_CurrentContext: WideString;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TSharedBrokerProperties.Get_User: WideString;
+begin
+  Result := DefaultInterface.Get_User;
+end;
+
+function  TSharedBrokerProperties.Get_Login: WideString;
+begin
+  Result := DefaultInterface.Get_Login;
+end;
+
+procedure TSharedBrokerProperties.Set_Login(const Value: WideString);
+begin
+  DefaultInterface.Set_Login(Value);
+end;
+
+function  TSharedBrokerProperties.Get_RpcbError: WideString;
+begin
+  Result := DefaultInterface.Get_RpcbError;
+end;
+
+function  TSharedBrokerProperties.Get_Socket: Integer;
+begin
+  Result := DefaultInterface.Get_Socket;
+end;
+
+function  TSharedBrokerProperties.Get_KernelLogin: WordBool;
+begin
+  Result := DefaultInterface.Get_KernelLogin;
+end;
+
+procedure TSharedBrokerProperties.Set_KernelLogin(Value: WordBool);
+begin
+  DefaultInterface.Set_KernelLogin(Value);
+end;
+
+function  TSharedBrokerProperties.Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+begin
+  Result := DefaultInterface.Get_ShowErrorMsgs;
+end;
+
+procedure TSharedBrokerProperties.Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs);
+begin
+  DefaultInterface.Set_ShowErrorMsgs(Value);
+end;
+
+{$ENDIF}
+{
+procedure Register;
+begin
+  RegisterComponents('Kernel',[TSharedBroker]);
+end;
+}
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1_TLB_SRB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1_TLB_SRB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RPCSharedBrokerSessionMgr1_TLB_SRB.pas	(revision 1676)
@@ -0,0 +1,300 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Type library for use with uSharedBroker1 in
+	             building RPCSharedBrokerSessionMgr1.exe.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit RPCSharedBrokerSessionMgr1_TLB_SRB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.88.1.0.1.0  $
+// File generated on 1/24/2002 12:39:11 PM from Type Library described below.
+
+// ************************************************************************ //
+// Type Lib: D:\Development\RPCSharedBroker\Exe1\RPCSharedBrokerSessionMgr1.tlb (1)
+// IID\LCID: {1F7D1EB0-E54F-46F0-B485-2D56743EBB70}\0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+interface
+
+uses Windows, ActiveX, Classes, Graphics, {OleServer,} OleCtrls, StdVCL;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  RPCSharedBrokerSessionMgr1MajorVersion = 1;
+  RPCSharedBrokerSessionMgr1MinorVersion = 0;
+
+  LIBID_RPCSharedBrokerSessionMgr1: TGUID = '{1F7D1EB0-E54F-46F0-B485-2D56743EBB70}';
+
+  IID_ISharedBroker: TGUID = '{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}';
+  DIID_ISharedBrokerEvents: TGUID = '{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}';
+  CLASS_SharedBroker: TGUID = '{EB44A5CD-1871-429F-A5BC-19C71B722182}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum ISharedBrokerErrorCode
+type
+  ISharedBrokerErrorCode = TOleEnum;
+const
+  GeneralFailure = $00000000;
+  Success = $00000001;
+  UniqueRpcIdDoesNotExist = $00000002;
+  UniqueClientIdDoesNotExist = $00000003;
+  RpcHistoryIndexOutOfRange = $00000004;
+  RpcHistoryNotEnabled = $00000005;
+  CouldNotSetContext = $00000006;
+  CouldNotConnect = $00000007;
+  ClientIndexOutOfRange = $00000008;
+  NilClientPointer = $00000009;
+  ConnectionIndexOutOfRange = $0000000A;
+
+// Constants for enum IRegistryRootEnum
+type
+  IRegistryRootEnum = TOleEnum;
+const
+  HKCR = $00000000;
+  HKCU = $00000001;
+  HKLM = $00000002;
+  HKU = $00000003;
+  HKCC = $00000004;
+  HKDD = $00000005;
+
+// Constants for enum ISharedBrokerConnection
+type
+  ISharedBrokerConnection = TOleEnum;
+const
+  Failed = $00000000;
+  New = $00000001;
+  Shared = $00000002;
+  Debug = $00000003;
+
+// Constants for enum ISharedBrokerClient
+type
+  ISharedBrokerClient = TOleEnum;
+const
+  BrokerClient = $00000000;
+  DebuggerClient = $00000001;
+
+// Constants for enum ISharedBrokerShowErrorMsgs
+type
+  ISharedBrokerShowErrorMsgs = TOleEnum;
+const
+  isemRaise = $00000000;
+  isemQuiet = $00000001;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  ISharedBroker = interface;
+  ISharedBrokerDisp = dispinterface;
+  ISharedBrokerEvents = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  SharedBroker = ISharedBroker;
+
+
+// *********************************************************************//
+// Interface: ISharedBroker
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}
+// *********************************************************************//
+  ISharedBroker = interface(IDispatch)
+    ['{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}']
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode; safecall;
+    function  BrokerDisconnect: ISharedBrokerErrorCode; safecall;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode; safecall;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; safecall;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode; safecall;
+    function  Get_RpcVersion: WideString; safecall;
+    procedure Set_RpcVersion(const version: WideString); safecall;
+    function  Get_RpcHistoryEnabled: WordBool; safecall;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool); safecall;
+    function  Get_PerClientRpcHistoryLimit: Integer; safecall;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer); safecall;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode; safecall;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode; safecall;
+    function  Get_CurrentContext: WideString; safecall;
+    function  Get_User: WideString; safecall;
+    function  Get_Login: WideString; safecall;
+    procedure Set_Login(const Value: WideString); safecall;
+    function  Get_RpcbError: WideString; safecall;
+    function  Get_Socket: Integer; safecall;
+    function  Get_KernelLogin: WordBool; safecall;
+    procedure Set_KernelLogin(Value: WordBool); safecall;
+    function  Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs; safecall;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs); safecall;
+    property RpcVersion: WideString read Get_RpcVersion write Set_RpcVersion;
+    property RpcHistoryEnabled: WordBool read Get_RpcHistoryEnabled write Set_RpcHistoryEnabled;
+    property PerClientRpcHistoryLimit: Integer read Get_PerClientRpcHistoryLimit write Set_PerClientRpcHistoryLimit;
+    property CurrentContext: WideString read Get_CurrentContext;
+    property User: WideString read Get_User;
+    property Login: WideString read Get_Login write Set_Login;
+    property RpcbError: WideString read Get_RpcbError;
+    property Socket: Integer read Get_Socket;
+    property KernelLogin: WordBool read Get_KernelLogin write Set_KernelLogin;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs read Get_ShowErrorMsgs write Set_ShowErrorMsgs;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISharedBrokerDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}
+// *********************************************************************//
+  ISharedBrokerDisp = dispinterface
+    ['{E1D9A5E6-B7C6-40AD-AC34-6A3E12BDC328}']
+    function  BrokerConnect(const ClientName: WideString; ConnectionType: ISharedBrokerClient; 
+                            const ServerPort: WideString; WantDebug: WordBool; 
+                            AllowShared: WordBool; KernelLogin: WordBool; 
+                            ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT; 
+                            var LoginStr: WideString; out UniqueClientIId: SYSINT; 
+                            out ErrorMsg: WideString): ISharedBrokerErrorCode; dispid 1;
+    function  BrokerDisconnect: ISharedBrokerErrorCode; dispid 2;
+    function  BrokerSetContext(const OptionName: WideString): ISharedBrokerErrorCode; dispid 3;
+    function  BrokerCall(const RpcName: WideString; const RpcParams: WideString; 
+                         RpcTimeLimit: Integer; out RpcResults: WideString; 
+                         out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; dispid 4;
+    function  ReadRegDataDefault(Root: IRegistryRootEnum; const Key: WideString; 
+                                 const Name: WideString; const Default: WideString; 
+                                 out RegResult: WideString): ISharedBrokerErrorCode; dispid 5;
+    property RpcVersion: WideString dispid 7;
+    property RpcHistoryEnabled: WordBool dispid 6;
+    property PerClientRpcHistoryLimit: Integer dispid 8;
+    function  GetRpcHistoryCountForClient(UniqueClientId: Integer; out rpcHistoryCount: Integer): ISharedBrokerErrorCode; dispid 10;
+    function  GetClientIdAndNameFromIndex(clientIndex: Integer; out UniqueClientId: Integer; 
+                                          out ClientName: WideString): ISharedBrokerErrorCode; dispid 11;
+    function  LogoutConnectedClients(logoutTimeLimit: Integer): ISharedBrokerErrorCode; dispid 12;
+    function  GetClientNameFromUniqueClientId(UniqueClientId: Integer; out ClientName: WideString): ISharedBrokerErrorCode; dispid 13;
+    function  GetActiveBrokerConnectionIndexCount(out connectionIndexCount: Integer): ISharedBrokerErrorCode; dispid 14;
+    function  GetActiveBrokerConnectionInfo(connectionIndex: Integer; 
+                                            out connectedServerIp: WideString; 
+                                            out connectedServerPort: Integer; 
+                                            out lastContext: WideString): ISharedBrokerErrorCode; dispid 15;
+    function  GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer; 
+                                                               out connectionIndex: Integer): ISharedBrokerErrorCode; dispid 16;
+    function  GetRpcCallFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                    out brokerContext: WideString; out RpcName: WideString; 
+                                    out RpcParams: WideString; out rpcResult: WideString; 
+                                    out rpcStartDateTime: Double; out rpcDuration: Integer): ISharedBrokerErrorCode; dispid 17;
+    function  GetRpcCallFromHistoryIndex(UniqueClientId: Integer; rpcCallIndex: Integer; 
+                                         out uniqueRpcId: Integer; out brokerContext: WideString; 
+                                         out RpcName: WideString; out RpcParams: WideString; 
+                                         out rpcResult: WideString; out rpcStartDateTime: Double; 
+                                         out rpcDuration: Integer): ISharedBrokerErrorCode; dispid 18;
+    function  GetRpcClientIdFromHistory(uniqueRpcId: Integer; out UniqueClientId: Integer; 
+                                        out ClientName: WideString): ISharedBrokerErrorCode; dispid 19;
+    function  GetConnectedClientCount(out connectedClientCount: Integer): ISharedBrokerErrorCode; dispid 20;
+    property CurrentContext: WideString readonly dispid 9;
+    property User: WideString readonly dispid 22;
+    property Login: WideString dispid 23;
+    property RpcbError: WideString readonly dispid 24;
+    property Socket: Integer readonly dispid 25;
+    property KernelLogin: WordBool dispid 26;
+    property ShowErrorMsgs: ISharedBrokerShowErrorMsgs dispid 27;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISharedBrokerEvents
+// Flags:     (4096) Dispatchable
+// GUID:      {CBEA7167-4F9B-465A-B82E-4CEBDF933C35}
+// *********************************************************************//
+  ISharedBrokerEvents = dispinterface
+    ['{CBEA7167-4F9B-465A-B82E-4CEBDF933C35}']
+    procedure OnLogout; dispid 1;
+    procedure OnRpcCallRecorded(uniqueRpcId: SYSINT); dispid 2;
+    procedure OnClientConnect(UniqueClientId: SYSINT; Connection: ISharedBrokerConnection); dispid 3;
+    procedure OnClientDisconnect(UniqueClientId: SYSINT); dispid 4;
+    procedure OnContextChanged(connectionIndex: SYSINT; const NewContext: WideString); dispid 5;
+    procedure OnRPCBFailure(const ErrorText: WideString); dispid 6;
+    procedure OnLoginError(const ErrorText: WideString); dispid 7;
+    procedure OnConnectionDropped(ConnectionIndex: SYSINT; const ErrorText: WideString); dispid 8;
+  end;
+
+// *********************************************************************//
+// The Class CoSharedBroker provides a Create and CreateRemote method to          
+// create instances of the default interface ISharedBroker exposed by              
+// the CoClass SharedBroker. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoSharedBroker = class
+    class function Create: ISharedBroker;
+    class function CreateRemote(const MachineName: string): ISharedBroker;
+  end;
+
+implementation
+
+uses ComObj;
+
+class function CoSharedBroker.Create: ISharedBroker;
+begin
+  Result := CreateComObject(CLASS_SharedBroker) as ISharedBroker;
+end;
+
+class function CoSharedBroker.CreateRemote(const MachineName: string): ISharedBroker;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_SharedBroker) as ISharedBroker;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcSLogin.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcSLogin.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcSLogin.pas	(revision 1676)
@@ -0,0 +1,295 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Joel Ivey
+	Description: Silent Login functionality.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit RpcSLogin;
+
+interface
+
+Uses
+Sysutils, Classes, Messages, WinProcs, IniFiles,
+Dialogs, Registry,
+trpcb, ccowrpcbroker;
+
+
+{------ TVistaSession------}     //hold attributes of a session {p13}
+{TVistaSession = class(TObject)
+private
+  FServerIPAddress: string;
+  FDateTimeLogin: String;
+  FPollingInterval: integer;
+public
+  property ServerIPAddresss: String;
+  property DateTimeLogin: String;
+  property PollingInterval (BAT): integer;
+  procedure CreateHandle;
+  function  ValidateHandle;
+end; }
+
+function SilentLogIn(SLBroker: TRPCBroker): boolean;
+procedure GetUserInfo(ConnectedBroker: TRPCBroker);
+procedure GetSessionInfo(ConnectedBroker: TRPCBroker);
+procedure StartProgSLogin(const ProgLine: String; ConnectedBroker: TRPCBroker);
+function CheckCmdLine(SLBroker: TRPCBroker): Boolean;
+
+implementation
+
+uses wsockc, loginfrm, rpcberr, seldiv, hash;
+
+//validate a/v codes
+function ValidAVCodes(SLBroker: TRPCBroker): boolean;
+begin
+  try
+    with SLBroker do
+    begin
+      Param[0].Value := Encrypt(LogIn.AccessCode + ';' + LogIn.VerifyCode);
+      Param[0].PType := literal;
+      RemoteProcedure := 'XUS AV CODE';
+      Call;
+      if Results[0] > '0' then
+      begin
+        Login.DUZ := Results[0];
+        Result := True;
+      end
+      else
+      begin
+        Result := False;
+        if Results[2] = '1' then Login.ErrorText := 'Expired Verify Code' //vcode needs changing;
+        else if Results[0] = '0' then Login.ErrorText :='Invalid Access/Verify Codes' //no valid DUZ returned;
+        else Login.ErrorText := Results[3];
+      end;
+    end;
+  except
+    raise
+  end;
+end;
+
+//validate application Handle
+function ValidAppHandle(SLBroker: TRPCBroker): boolean;
+begin
+  Result := False;
+  try
+    with SLBroker do
+    begin
+      Param[0].Value := SLBroker.Login.LogInHandle;
+      Param[0].PType := literal;
+      RemoteProcedure := 'XUS AV CODE';
+      Call;
+      if StrToInt(SLBroker.Results[0]) > 0 then
+      begin
+        Login.DUZ := Results[0];
+        Result := True;
+      end
+      else if Results[2] = '1' then Login.ErrorText := 'Expired Verify Code' //vcode needs changing;
+      else if Results[0] = '0' then Login.ErrorText :='Invalid Access/Verify Codes' //no valid DUZ returned;
+      else Login.ErrorText := Results[3];
+    end;
+  except
+    raise
+  end;
+end;
+
+function ValidNTToken(SLBroker: TRPCBroker): boolean;
+begin
+  Result := False;
+end;
+
+{IF 2, PASS CONTROL TO AUTHENTICATION PROXY - WHAT DOES IT NEED? }
+
+{:
+This function is used to initiate a silent login with the RPCBroker.  It uses the information
+stored in the Login property of the TRPCBroker to make the connection.
+}
+function SilentLogIn(SLBroker: TRPCBroker): boolean;
+begin
+  Result := False;
+  //determine if signon is needed
+  try
+    with SLBroker do begin
+      RemoteProcedure := 'XUS SIGNON SETUP';
+      Call;
+      SLBroker.Login.IsProductionAccount := False;
+      SLBroker.Login.DomainName := '';
+      if SLBroker.Results.Count > 7 then
+      begin
+        SLBroker.Login.DomainName := SLBroker.Results[6];
+        if SLBroker.Results[7] = '1' then
+          SLBroker.Login.IsProductionAccount := True;
+      end;
+      if Results.Count > 5 then    //Server sent auto signon info.
+        if SLBroker.Results[5] = '1' then   //User already logged in
+        begin
+          Result := True;
+          GetUserInfo(SLBroker);
+          exit;
+        end;
+      if Login.Mode = lmAVCodes then //Access & Verify codes authentication
+        if ValidAVCodes(SLBroker) then Result := True;
+      if Login.Mode = lmAppHandle then
+        if ValidAppHandle(SLBroker)then Result := True;
+      if Login.Mode = lmNTToken then
+          if ValidNTToken(SLBroker) then Result := True;
+      if Result and (not (SLBroker is TCCOWRPCBroker)) then
+      begin
+        //determine if user is multidivisional - makes calls to Seldiv.
+        LogIn.MultiDivision := MultDiv(SLBroker);
+        if not LogIn.MultiDivision then
+          begin
+          Result := True;
+          exit;
+          end;
+        if LogIn.PromptDivision then
+          Result := SelectDivision(LogIn.DivList, SLBroker)
+        else if Login.Division <> '' then
+          Result := SetDiv(Login.Division, SLBroker)
+        else
+        begin
+          Result := False;
+          Login.ErrorText := 'No Division Selected';
+        end;
+        if not Result then
+          exit;
+      end;
+      if Result then
+        GetUserInfo(SLBroker);
+    end;
+  except
+    exit;
+  end;
+end;
+
+procedure GetUserInfo(ConnectedBroker: TRPCBroker); //get info for TVistaUser;
+begin
+  with ConnectedBroker do
+  begin
+    try
+    RemoteProcedure := 'XUS GET USER INFO';
+    Call;
+    if Results.Count > 0 then
+      with ConnectedBroker.User do
+        begin
+        DUZ := Results[0];
+        Name := Results[1];
+        StandardName := Results[2];
+        Division := Results[3];
+        Title := Results[4];
+        ServiceSection := Results[5];
+        Language := Results[6];
+        DTime := Results[7];
+        if Results.Count > 8 then
+          Vpid := Results[8]
+         else
+          Vpid := '';
+        end;
+    except
+    end;
+  end;
+end;
+
+procedure GetSessionInfo(ConnectedBroker: TRPCBroker); //get info for TVistaSession;
+begin
+  with ConnectedBroker do   //get info for TVistaSession;
+  begin
+    try
+    RemoteProcedure := 'XWB GET SESSION INFO';
+    Call;
+    if Results.Count > 0 then
+      begin
+      {VistaSession.Create;
+      with VistaSession do
+        begin
+        DUZ := Results[0]
+        //other properties follow
+        end;}
+      end;
+    except
+    end;
+    end;
+end;
+
+{:
+This procedure can be used to start a second application and pass on the command line the data
+which would be needed to initiate a silent login using a LoginHandle value.  It is assumed that
+the command line would be read using the CheckCmdLine procedure or one similar to it as the form
+for the new application was loaded.  This procedure can also be used to start a non-RPCBroker 
+application. If the value for ConnectedBroker is nil, the application specified in ProgLine 
+will be started and any command line included in ProgLine will be passed to the application.
+}
+procedure StartProgSLogin(const ProgLine: String; ConnectedBroker: TRPCBroker);
+var
+  StartupInfo: TStartupInfo;
+  ProcessInfo: TProcessInformation;
+  AppHandle: String;
+  CmndLine: String;
+begin
+  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
+  with StartupInfo do
+  begin
+    cb := SizeOf(TStartupInfo);
+    dwFlags := STARTF_USESHOWWINDOW;
+    wShowWindow := SW_SHOWNORMAL;
+  end;
+  CmndLine := ProgLine;
+  if ConnectedBroker <> nil then
+  begin
+    AppHandle := GetAppHandle(ConnectedBroker);
+    CmndLine := CmndLine + ' s='+ConnectedBroker.Server + ' p=' 
+                         + IntToStr(ConnectedBroker.ListenerPort) + ' h=' 
+                         + AppHandle + ' d=' + ConnectedBroker.User.Division;
+  end;
+  CreateProcess(nil, PChar(CmndLine), nil, nil, False,
+      NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
+end;
+
+{:
+This procedure can be used to check whether the command line contains information on the broker 
+settings and can setup for a Silent Login using the LoginHandle value passed from another application.  
+This procedure would normally be called within the code associated with FormCreate event.  It assumes
+the Server, ListenerPort, Division, and LoginHandle values (if present) are indicated by s=, p=, d=, and
+h=, respectively.  The argument is a reference to the TRPCBroker instance to be used.
+}
+function CheckCmdLine(SLBroker: TRPCBroker): Boolean;
+var
+ j: Integer;
+begin
+  with SLBroker do
+  begin
+    for j := 1 to ParamCount do    // Iterate through possible command line arguments
+    begin
+      if Pos('p=',ParamStr(j)) > 0 then
+        ListenerPort := StrToInt(Copy(ParamStr(j),
+                         (Pos('=',ParamStr(j))+1),length(ParamStr(j))));
+      if Pos('s=',ParamStr(j)) > 0 then
+        Server := Copy(ParamStr(j),
+                         (Pos('=',ParamStr(j))+1),length(ParamStr(j)));
+      if Pos('h=',ParamStr(j)) > 0 then
+      begin
+        Login.LoginHandle := Copy(ParamStr(j),
+                         (Pos('=',ParamStr(j))+1),length(ParamStr(j)));
+        if Login.LoginHandle <> '' then
+        begin
+          KernelLogin := False;
+          Login.Mode := lmAppHandle;
+        end;
+      end;
+      if Pos('d=',ParamStr(j)) > 0 then
+        Login.Division := Copy(ParamStr(j),
+                         (Pos('=',ParamStr(j))+1),length(ParamStr(j)));
+    end;    // for
+    if Login.Mode = lmAppHandle then
+      Connected := True;      // Go ahead and make the connection
+    Result := False;
+    if Connected then
+      Result := True;
+  end;    // with SLBroker
+end;
+
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcbErr.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcbErr.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcbErr.dfm	(revision 1676)
@@ -0,0 +1,89 @@
+object frmRpcbError: TfrmRpcbError
+  Left = 187
+  Top = 278
+  BorderStyle = bsDialog
+  Caption = 'Error!'
+  ClientHeight = 227
+  ClientWidth = 393
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = [fsBold]
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Bevel1: TBevel
+    Left = 8
+    Top = 8
+    Width = 377
+    Height = 177
+  end
+  object Label1: TLabel
+    Left = 72
+    Top = 24
+    Width = 41
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Action:'
+  end
+  object Symbol: TImage
+    Left = 16
+    Top = 16
+    Width = 41
+    Height = 41
+  end
+  object Label2: TLabel
+    Left = 79
+    Top = 48
+    Width = 34
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Code:'
+  end
+  object Label3: TLabel
+    Left = 16
+    Top = 80
+    Width = 55
+    Height = 13
+    Caption = 'Message:'
+  end
+  object lblAction: TLabel
+    Left = 120
+    Top = 24
+    Width = 5
+    Height = 13
+  end
+  object lblCode: TLabel
+    Left = 120
+    Top = 48
+    Width = 5
+    Height = 13
+  end
+  object lblMessage: TLabel
+    Left = 80
+    Top = 80
+    Width = 289
+    Height = 97
+    AutoSize = False
+  end
+  object BitBtn1: TBitBtn
+    Left = 200
+    Top = 200
+    Width = 81
+    Height = 27
+    TabOrder = 0
+    Kind = bkOK
+  end
+  object BitBtn3: TBitBtn
+    Left = 304
+    Top = 200
+    Width = 81
+    Height = 27
+    TabOrder = 1
+    Kind = bkHelp
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcbErr.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcbErr.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/RpcbErr.pas	(revision 1676)
@@ -0,0 +1,186 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Error handling for TRPCBroker.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit Rpcberr;
+
+interface
+
+uses
+  TRPCB, Winsock, Classes, Forms, SysUtils, Controls,
+  StdCtrls, Buttons, ExtCtrls, Graphics, WinProcs;
+
+type
+  TfrmRpcbError = class(TForm)
+    BitBtn1: TBitBtn;
+    BitBtn3: TBitBtn;
+    Label1: TLabel;
+    Bevel1: TBevel;
+    Symbol: TImage;
+    Label2: TLabel;
+    Label3: TLabel;
+    lblAction: TLabel;
+    lblCode: TLabel;
+    lblMessage: TLabel;
+    procedure FormCreate(Sender: TObject);
+  end;
+
+var
+  frmRpcbError: TfrmRpcbError;
+
+procedure ShowBrokerError(BrokerError: EBrokerError);
+procedure NetError(Action: string; ErrType: integer);
+
+const
+  XWBBASEERR = {WSABASEERR + 1} 20000;
+
+  {Broker Application Error Constants}
+         XWB_NO_HEAP = XWBBASEERR + 1;
+        XWB_M_REJECT = XWBBASEERR + 2;
+       XWB_BadSignOn = XWBBASEERR + 4;
+  XWB_BldConnectList = XWBBASEERR + 5;
+      XWB_NullRpcVer = XWBBASEERR + 6;
+        XWB_ExeNoMem = XWBBASEERR + 100;
+       XWB_ExeNoFile = XWB_ExeNoMem +  2;
+       XWB_ExeNoPath = XWB_ExeNoMem +  3;
+        XWB_ExeShare = XWB_ExeNoMem +  5;
+       XWB_ExeSepSeg = XWB_ExeNoMem +  6;
+        XWB_ExeLoMem = XWB_ExeNoMem +  8;
+       XWB_ExeWinVer = XWB_ExeNoMem + 10;
+       XWB_ExeBadExe = XWB_ExeNoMem + 11;
+        XWB_ExeDifOS = XWB_ExeNoMem + 12;
+       XWB_RpcNotReg = XWBBASEERR + 201;
+implementation
+uses wsockc;
+{$R *.DFM}
+
+
+procedure ShowBrokerError(BrokerError: EBrokerError);
+begin
+  try
+    Application.CreateForm(TfrmRpcbError, frmRpcbError);
+    with frmRpcbError do begin
+      lblAction.Caption := BrokerError.Action;
+      lblCode.Caption := IntToStr(BrokerError.Code);
+      lblMessage.Caption := BrokerError.Mnemonic;
+      ShowModal;
+    end
+  finally
+    frmRpcbError.Release;
+  end;
+end;
+
+
+procedure TfrmRpcbError.FormCreate(Sender: TObject);
+var
+  FIcon: TIcon;
+begin
+  FIcon := TIcon.Create;
+  try
+    FIcon.Handle := LoadIcon(0, IDI_HAND);
+    Symbol.Picture.Graphic := FIcon;
+    Symbol.BoundsRect := Bounds(Symbol.Left, Symbol.Top, FIcon.Width, FIcon.Height);
+  finally
+    FIcon.Free;
+  end;
+end;
+
+procedure NetError(Action : String; ErrType: integer);
+var
+   x,s: string;
+   r: integer;
+   BrokerError: EBrokerError;
+begin
+   Screen.Cursor := crDefault;
+   r := 0;
+   if ErrType > 0 then r := ErrType;
+   if ErrType = 0 then
+      begin
+        r := WSAGetLastError;
+//        if r = WSAEINTR then xFlush := True;
+//        if WSAIsBlocking = True then WSACancelBlockingCall;
+      end;
+      Case r of
+        WSAEINTR           : x := 'WSAEINTR';
+        WSAEBADF           : x := 'WSAEINTR';
+        WSAEFAULT          : x := 'WSAEFAULT';
+        WSAEINVAL          : x := 'WSAEINVAL';
+        WSAEMFILE          : x := 'WSAEMFILE';
+        WSAEWOULDBLOCK     : x := 'WSAEWOULDBLOCK';
+        WSAEINPROGRESS     : x := 'WSAEINPROGRESS';
+        WSAEALREADY        : x := 'WSAEALREADY';
+        WSAENOTSOCK        : x := 'WSAENOTSOCK';
+        WSAEDESTADDRREQ    : x := 'WSAEDESTADDRREQ';
+        WSAEMSGSIZE        : x := 'WSAEMSGSIZE';
+        WSAEPROTOTYPE      : x := 'WSAEPROTOTYPE';
+        WSAENOPROTOOPT     : x := 'WSAENOPROTOOPT';
+        WSAEPROTONOSUPPORT : x := 'WSAEPROTONOSUPPORT';
+        WSAESOCKTNOSUPPORT : x := 'WSAESOCKTNOSUPPORT';
+        WSAEOPNOTSUPP      : x := 'WSAEOPNOTSUPP';
+        WSAEPFNOSUPPORT    : x := 'WSAEPFNOSUPPORT';
+        WSAEAFNOSUPPORT    : x := 'WSAEAFNOSUPPORT';
+        WSAEADDRINUSE      : x := 'WSAEADDRINUSE';
+        WSAEADDRNOTAVAIL   : x := 'WSAEADDRNOTAVAIL';
+        WSAENETDOWN        : x := 'WSAENETDOWN';
+        WSAENETUNREACH     : x := 'WSAENETUNREACH';
+        WSAENETRESET       : x := 'WSAENETRESET';
+        WSAECONNABORTED    : x := 'WSAECONNABORTED';
+        WSAECONNRESET      : x := 'WSAECONNRESET';
+        WSAENOBUFS         : x := 'WSAENOBUFS';
+        WSAEISCONN         : x := 'WSAEISCONN';
+        WSAENOTCONN        : x := 'WSAENOTCONN';
+        WSAESHUTDOWN       : x := 'WSAESHUTDOWN';
+        WSAETOOMANYREFS    : x := 'WSAETOOMANYREFS';
+        WSAETIMEDOUT       : x := 'WSAETIMEDOUT';
+        WSAECONNREFUSED    : x := 'WSAECONNREFUSED';
+        WSAELOOP           : x := 'WSAELOOP';
+        WSAENAMETOOLONG    : x := 'WSAENAMETOOLONG';
+        WSAEHOSTDOWN       : x := 'WSAEHOSTDOWN';
+        WSAEHOSTUNREACH    : x := 'WSAEHOSTUNREACH';
+        WSAENOTEMPTY       : x := 'WSAENOTEMPTY';
+        WSAEPROCLIM        : x := 'WSAEPROCLIM';
+        WSAEUSERS          : x := 'WSAEUSERS';
+        WSAEDQUOT          : x := 'WSAEDQUOT';
+        WSAESTALE          : x := 'WSAESTALE';
+        WSAEREMOTE         : x := 'WSAEREMOTE';
+        WSASYSNOTREADY     : x := 'WSASYSNOTREADY';
+        WSAVERNOTSUPPORTED : x := 'WSAVERNOTSUPPORTED';
+        WSANOTINITIALISED  : x := 'WSANOTINITIALISED';
+        WSAHOST_NOT_FOUND  : x := 'WSAHOST_NOT_FOUND';
+        WSATRY_AGAIN       : x := 'WSATRY_AGAIN';
+        WSANO_RECOVERY     : x := 'WSANO_RECOVERY';
+        WSANO_DATA         : x := 'WSANO_DATA';
+
+        XWB_NO_HEAP        : x := 'Insufficient Heap';
+        XWB_M_REJECT       : x := 'M Error - Use ^XTER';
+        XWB_BadSignOn      : x := 'Sign-on was not completed.';
+        XWB_ExeNoMem       : x := 'System was out of memory, executable file was corrupt, or relocations were invalid.';
+        XWB_ExeNoFile      : x := 'File was not found.';
+        XWB_ExeNoPath      : x := 'Path was not found.';
+        XWB_ExeShare       : x := 'Attempt was made to dynamically link to a task,' +
+                                  ' or there was a sharing or network-protection error.';
+        XWB_ExeSepSeg      : x := 'Library required separate data segments for each task.';
+        XWB_ExeLoMem       : x := 'There was insufficient memory to start the application.';
+        XWB_ExeWinVer      : x := 'Windows version was incorrect.';
+        XWB_ExeBadExe      : x := 'Executable file was invalid.' +
+                                  ' Either it was not a Windows application or there was an error in the .EXE image.';
+        XWB_ExeDifOS       : x := 'Application was designed for a different operating system.';
+        XWB_RpcNotReg      : X := 'Remote procedure not registered to application.';
+        XWB_BldConnectList : x := 'BrokerConnections list could not be created';
+        XWB_NullRpcVer     : x := 'RpcVersion cannot be empty.' + #13 + 'Default is 0 (zero).';
+        else x := IntToStr(r);
+  end;
+  s := 'Error encountered.' + chr(13)+chr(10) + 'Function was: ' + Action + chr(13)+chr(10) + 'Error was: ' + x;
+  BrokerError := EBrokerError.Create(s);
+  BrokerError.Action := Action;
+  BrokerError.Code := r;
+  BrokerError.Mnemonic := x;
+  raise BrokerError;                                 
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcbedtr.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcbedtr.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcbedtr.pas	(revision 1676)
@@ -0,0 +1,177 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Property Editors for TRPCBroker component.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit RpcbEdtr;
+
+{$I IISBase.inc}
+
+interface
+
+uses
+  {Delphi standard}
+  Classes, Controls, Dialogs,
+  {$IFDEF D6_OR_HIGHER}
+  DesignIntf, DesignEditors, DesignMenus,
+  {$ELSE}
+  DsgnIntf,
+  {$ENDIF}
+  Forms, Graphics, Messages, SysUtils,
+  WinProcs, WinTypes,
+  Trpcb; //P14 -- pack split
+
+
+type
+
+{------ TRemoteProc property editor ------}
+   {This property editor gets a list of remote procedures from the API file.}
+
+TRemoteProcProperty = class(TStringProperty)
+private
+  { Private declarations }
+protected
+  { Protected declarations }
+public
+  { Public declarations }
+  function GetAttributes: TPropertyAttributes; override;
+  procedure GetValues(Proc: TGetStrProc); override;
+  procedure SetValue(const Value: string); override;
+end;
+
+
+{------ TServerProperty property editor ------}
+   {This property editor gets a list of servers from the C:\WINDOWS\HOSTS file}
+
+TServerProperty = class(TStringProperty)
+private
+  { Private declarations }
+protected
+  { Protected declarations }
+public
+  { Public declarations }
+  function GetAttributes: TPropertyAttributes; override;
+  procedure GetValues(Proc: TGetStrProc); override;
+  function GetValue: string; override;
+  procedure SetValue(const Value: string); override;
+end;
+
+
+{------ TRpcVersion property editor ------}
+   {This property editor checks to make sure that RpcVersion is not eimpty.
+    If it is, it stuffs '0' (default).}
+
+TRpcVersionProperty = class(TStringProperty)
+private
+  { Private declarations }
+protected
+  { Protected declarations }
+public
+  { Public declarations }
+  procedure SetValue(const Value: string); override;
+end;
+
+
+procedure Register;
+
+
+implementation
+
+
+uses
+  XWBut1, MFunStr, {TRPCB,} Hash, RpcbErr; //P14 -- pack split
+
+function TRemoteProcProperty.GetAttributes;
+begin
+  Result := [paAutoUpdate,paValueList];
+end;
+
+procedure TRemoteProcProperty.GetValues(Proc: TGetStrProc);
+var
+  RpcbEdited, RPCBTemp: TRPCBroker;
+  I: integer;
+begin
+  RPCBTemp := nil;
+  RpcbEdited := GetComponent(0) as TRPCBroker;
+  try
+    RPCBTemp := TRPCBroker.Create(RpcbEdited);
+    with RpcbTemp do begin
+      ShowErrorMsgs := RpcbEdited.ShowErrorMsgs;
+      Server := RpcbEdited.Server;
+      ListenerPort := RpcbEdited.ListenerPort;
+      ClearParameters := True;
+      ClearResults := True;
+      RemoteProcedure := 'XWB RPC LIST';
+      Param[0].Value := GetValue;
+      Param[0].PType := literal;
+      Call;
+      for I := 0 to Results.Count - 1 do Proc(Results[I]);
+    end;
+  finally
+    RPCBTemp.Free;
+  end;
+end;
+
+procedure TRemoteProcProperty.SetValue(const Value: string);
+begin
+  SetStrValue(UpperCase(Piece(Value,'   [',1)));  {convert user entry all to upper case}
+end;
+
+function TServerProperty.GetAttributes;
+begin
+  Result := [paAutoUpdate,paValueList];
+end;
+
+function TServerProperty.GetValue: string;
+begin
+  Result := Piece(GetStrValue,'   [',1);  {get just the  name}
+end;
+
+procedure TServerProperty.GetValues(Proc: TGetStrProc);
+var
+  ServerList: TStringList;
+  I: integer;
+begin
+  ServerList := TStringList.Create;
+  GetHostList(ServerList);
+  for I := 0 to ServerList.Count - 1 do Proc(ServerList[I]);
+  ServerList.Free;
+end;
+
+procedure TServerProperty.SetValue(const Value: string);
+begin
+  SetStrValue(Piece(Value,'   [',1));  {get just the  name}
+end;
+
+procedure TRpcVersionProperty.SetValue(const Value: string);
+begin
+{
+  try
+    if Value = '' then NetError('Configure',XWB_NullRpcVer)
+    else SetStrValue(Value);
+  except
+    on E: EBrokerError do begin
+      ShowBrokerError(E);
+      SetStrValue('0');
+    end;
+  end;
+}
+  if Value <> '' then SetStrValue(Value)
+  else begin
+    ShowMessage('RPCVersion cannot be empty.  Default is 0 (zero).');
+    SetStrValue('0');
+  end;
+end;
+
+procedure Register;
+begin
+  RegisterPropertyEditor(TypeInfo(TRemoteProc),nil,'',TRemoteProcProperty);
+  RegisterPropertyEditor(TypeInfo(TServer),nil,'',TServerProperty);
+  RegisterPropertyEditor(TypeInfo(TRpcVersion),nil,'',TRpcVersionProperty);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcconf1.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcconf1.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcconf1.dfm	(revision 1676)
@@ -0,0 +1,233 @@
+object rpcConfig: TrpcConfig
+  Left = 434
+  Top = 329
+  HelpContext = 4
+  BorderIcons = []
+  BorderStyle = bsSingle
+  Caption = 'Connect To'
+  ClientHeight = 157
+  ClientWidth = 397
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 16
+  object cboServer: TComboBox
+    Left = 8
+    Top = 16
+    Width = 385
+    Height = 24
+    Hint = 'Choose a Server Name'
+    Style = csDropDownList
+    Anchors = [akLeft, akTop, akRight]
+    DropDownCount = 6
+    ItemHeight = 16
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    OnClick = cboServerClick
+    OnDblClick = cboServerClick
+    OnExit = cboServerExit
+  end
+  object Panel2: TPanel
+    Left = 0
+    Top = 133
+    Width = 397
+    Height = 24
+    Align = alBottom
+    TabOrder = 3
+    object Panel3: TPanel
+      Left = 185
+      Top = 1
+      Width = 95
+      Height = 22
+      Align = alLeft
+      Alignment = taLeftJustify
+      BevelInner = bvLowered
+      BevelOuter = bvNone
+      BorderWidth = 1
+      Caption = 'Port:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 0
+      object pnlPort: TPanel
+        Left = 34
+        Top = 2
+        Width = 59
+        Height = 18
+        Align = alRight
+        BevelOuter = bvLowered
+        Caption = '99999'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -15
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 0
+      end
+    end
+    object Panel1: TPanel
+      Left = 1
+      Top = 1
+      Width = 184
+      Height = 22
+      Align = alLeft
+      Alignment = taLeftJustify
+      BevelInner = bvLowered
+      BevelOuter = bvNone
+      BorderWidth = 1
+      Caption = 'Address:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -15
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 1
+      object Panel4: TPanel
+        Left = 64
+        Top = 2
+        Width = 118
+        Height = 18
+        Align = alRight
+        BevelOuter = bvLowered
+        Caption = '255.255.255.255'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -15
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 0
+      end
+    end
+  end
+  object btnOk: TBitBtn
+    Left = 5
+    Top = 104
+    Width = 85
+    Height = 26
+    Anchors = [akLeft, akBottom]
+    Caption = '&OK'
+    Default = True
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 1
+    OnClick = butOkClick
+    Glyph.Data = {
+      BE060000424DBE06000000000000360400002800000024000000120000000100
+      0800000000008802000000000000000000000001000000010000000000000000
+      80000080000000808000800000008000800080800000C0C0C000C0DCC000F0C8
+      A400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000F0FBFF00A4A0A000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030303030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      03030303030303030303030303030303030303030303FF030303030303030303
+      03030303030303040403030303030303030303030303030303F8F8FF03030303
+      03030303030303030303040202040303030303030303030303030303F80303F8
+      FF030303030303030303030303040202020204030303030303030303030303F8
+      03030303F8FF0303030303030303030304020202020202040303030303030303
+      0303F8030303030303F8FF030303030303030304020202FA0202020204030303
+      0303030303F8FF0303F8FF030303F8FF03030303030303020202FA03FA020202
+      040303030303030303F8FF03F803F8FF0303F8FF03030303030303FA02FA0303
+      03FA0202020403030303030303F8FFF8030303F8FF0303F8FF03030303030303
+      FA0303030303FA0202020403030303030303F80303030303F8FF0303F8FF0303
+      0303030303030303030303FA0202020403030303030303030303030303F8FF03
+      03F8FF03030303030303030303030303FA020202040303030303030303030303
+      0303F8FF0303F8FF03030303030303030303030303FA02020204030303030303
+      03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403
+      030303030303030303030303F8FF0303F8FF03030303030303030303030303FA
+      0202040303030303030303030303030303F8FF03F8FF03030303030303030303
+      03030303FA0202030303030303030303030303030303F8FFF803030303030303
+      030303030303030303FA0303030303030303030303030303030303F803030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      0303}
+    Margin = 2
+    NumGlyphs = 2
+    Spacing = -1
+    IsControl = True
+  end
+  object btnCancel: TBitBtn
+    Left = 109
+    Top = 104
+    Width = 85
+    Height = 26
+    Anchors = [akLeft, akBottom]
+    Caption = '&Cancel'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 2
+    OnClick = butCancelClick
+    Kind = bkCancel
+    Margin = 2
+    Spacing = -1
+    IsControl = True
+  end
+  object btnHelp: TBitBtn
+    Left = 208
+    Top = 104
+    Width = 85
+    Height = 25
+    Anchors = [akRight, akBottom]
+    TabOrder = 4
+    Kind = bkHelp
+  end
+  object New: TButton
+    Left = 304
+    Top = 104
+    Width = 85
+    Height = 25
+    Anchors = [akRight, akBottom]
+    Caption = '&New'
+    TabOrder = 5
+    OnClick = NewClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcconf1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcconf1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcconf1.pas	(revision 1676)
@@ -0,0 +1,266 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Raul Mendoza, Joel Ivey
+	Description: Server selection dialog.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+{**************************************************
+ p13 - added an OnDestroy event to release the
+        help file.  - REM (4/25/00)
+**************************************************}
+unit Rpcconf1;
+
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Xwbut1,
+  WinSock, rpcnet, MFunStr;
+
+type
+  TrpcConfig = class(TForm)
+    cboServer: TComboBox;
+    Panel2: TPanel;
+    Panel3: TPanel;
+    pnlPort: TPanel;
+    btnOk: TBitBtn;
+    btnCancel: TBitBtn;
+    Panel1: TPanel;
+    Panel4: TPanel;
+    btnHelp: TBitBtn;
+    New: TButton;
+    procedure cboServerClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+    procedure butOkClick(Sender: TObject);
+    procedure butCancelClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cboServerExit(Sender: TObject);
+    procedure NewClick(Sender: TObject);
+
+  private
+    { Private declarations }
+    OrigHelp : String;   //Help filename of calling application.
+
+  public
+    { Public declarations }
+    ServerPairs : TStringList;
+  end;
+
+function GetServerInfo(var Server,Port: string): integer;
+function GetServerIP(ServerName: String): String;
+
+var
+  rpcConfig: TrpcConfig;
+  ButtonStatus, Instance: integer;
+  rServer, rPort: string;
+  TaskInstance: integer;
+
+implementation
+
+uses AddServer;
+
+{$R *.DFM}
+
+
+function IsIPAddress(Val: String): Boolean;
+var
+  I: Integer;
+  C: Char;
+begin
+  Result := True;
+  for I := 1 to Length(Val) do    // Iterate
+  begin
+    C := Val[I];
+    if not (C in ['0','1','2','3','4','5','6','7','8','9','.']) then
+    begin
+      Result := False;
+      Break;
+    end;
+  end;    // for
+end;
+
+{: Library function to obtain an IP address, given a server name }
+function GetServerIP(ServerName: String): String;
+var
+   host,outcome: PChar;
+begin
+  TaskInstance := LibOpen;
+  if not IsIPAddress(ServerName) then
+  begin
+    outcome := StrAlloc(256);
+    host := StrAlloc(length(ServerName) + 1);
+    StrPCopy(host, ServerName);
+    LibGetHostIP1(TaskInstance, host, outcome);
+    Result := StrPas(outcome);
+    StrDispose(outcome);
+    StrDispose(host);
+  end
+  else
+    Result := ServerName;
+  LibClose(TaskInstance);
+end;
+
+
+procedure TrpcConfig.cboServerClick(Sender: TObject);
+var
+   index: integer;
+begin
+     {Based on selction, set port and server variable}
+     index := cboServer.ItemIndex;
+     rPort := Piece(ServerPairs[index], ',', 2);
+     pnlPort.Caption := rPort;
+     rServer := Piece(ServerPairs[index], ',', 1);
+     btnOk.Enabled := True;
+
+     {Based on Server, get IP addresss.}
+     Panel4.Caption := GetServerIP(rServer);
+end;
+
+procedure TrpcConfig.FormCreate(Sender: TObject);
+begin
+  FormStyle := fsStayOnTop;
+  OrigHelp := Application.HelpFile;             // Save original helpfile.
+  Application.HelpFile := ReadRegData(HKLM, REG_BROKER, 'BrokerDr') +
+                           '\clagent.hlp';      // Identify ConnectTo helpfile.
+  ServerPairs := TStringList.Create;
+end;
+
+procedure TrpcConfig.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+     cboServer.Clear;
+     pnlPort.Caption := '';
+     ServerPairs.Free;
+     Application.HelpFile := OrigHelp;  // Restore helpfile.
+end;
+
+function GetServerInfo(var Server,Port: string): integer;
+var
+   index: integer;
+   //tmp,fname,: string;  {P14}
+   tmpServerPairs : TStringList;      //Format: SERVER,port#
+   TextStr: String;
+
+begin
+     rpcconfig := Trpcconfig.Create(Application);
+     TaskInstance := LibOpen;
+
+     with rpcConfig do
+     begin
+       tmpServerPairs := TStringList.Create;
+       ReadRegValueNames(HKLM, REG_SERVERS, tmpServerPairs);
+       ServerPairs.Assign(tmpServerPairs);
+       tmpServerPairs.Clear;
+       ReadRegValueNames(HKCU, REG_SERVERS, tmpServerPairs);
+       for index := 0 to (tmpServerPairs.Count-1) do
+       begin
+         TextStr := tmpServerPairs[index];
+         if ServerPairs.IndexOf(TextStr) < 0 then
+           ServerPairs.Add(TextStr);
+       end;
+
+       ButtonStatus := mrOk;
+
+       if ServerPairs.Count < 1 then
+       begin
+         WriteRegData(HKLM, REG_SERVERS, 'BROKERSERVER,9200', '');
+         ServerPairs.Add('BROKERSERVER,9200');
+       end;
+
+
+       if ServerPairs.Count > 1 then  // P31                     //need to show form
+       begin
+         //Initialize form.
+         for index := 0 to (ServerPairs.Count -1) do     //Load combobox
+           cboServer.Items.Add(ServerPairs[index]);
+//           cboServer.Items.Add(Piece(ServerPairs[index], ',', 1));
+         cboServer.ItemIndex := 0;
+         rServer := Piece(ServerPairs[0], ',', 1);
+         pnlPort.Caption := Piece(ServerPairs[0], ',', 2);
+         rPort := Piece(ServerPairs[0], ',', 2);
+
+         //Get and display IP address.
+         panel4.Caption := GetServerIP(rServer);
+         ShowModal;                           //Display form
+       end
+       else                //One choice: form not shown, value returned.
+       begin
+         rServer := Piece(ServerPairs[0], ',', 1);
+         rPort   := Piece(ServerPairs[0], ',', 2);
+     end;
+
+       if ButtonStatus = mrOk then
+          begin
+            Server := rServer;
+            Port := rPort;
+       end;
+       Result := ButtonStatus;
+
+       tmpServerPairs.Free;
+       libClose(TaskInstance);
+       Release;
+     end;
+end;
+
+procedure TrpcConfig.butOkClick(Sender: TObject);
+begin
+     ButtonStatus := mrOk;
+     rServer := Piece(cboServer.Text,',',1);
+     rPort := pnlPort.Caption;
+     rpcConfig.close;
+end;
+
+procedure TrpcConfig.butCancelClick(Sender: TObject);
+begin
+     ButtonStatus := mrCancel;
+     rServer := cboServer.Text;
+     rPort := pnlPort.Caption;
+     rpcConfig.close;
+end;
+
+procedure TrpcConfig.FormDestroy(Sender: TObject);
+begin
+        ServerPairs := TStringList.Create; // {p13 - REM}
+        ServerPairs.Free;                  //   Release Help File.
+        Application.HelpFile := OrigHelp;  //
+end;
+
+procedure TrpcConfig.cboServerExit(Sender: TObject);
+begin
+  //
+end;
+
+procedure TrpcConfig.NewClick(Sender: TObject);
+var
+  I: Integer;
+  ServerForm: TfrmAddServer;
+  strServer, strName, strPort: String;
+begin
+  ServerForm := TfrmAddServer.Create(Self);
+  if ServerForm.ShowModal <> mrCancel then
+  begin
+    strServer := ServerForm.edtAddress.Text;
+    strPort := ServerForm.edtPortNumber.Text;
+    ServerForm.edtPortNumber.Text := strPort;
+    strName := strServer + ',' + strPort;
+    WriteRegData(HKCU, REG_SERVERS, strName, '');
+    ServerPairs.Add(strName);
+    strName := ServerPairs[ServerPairs.Count-1];
+    cboServer.Items.Add(strName);
+    for I := 0 to cboServer.Items.Count-1 do    // Iterate
+    begin
+      if cboServer.Items[I] = strName then
+        cboServer.ItemIndex := I;
+    end;    // for
+//    cboServer.Text := strServer;
+//    pnlPort.Caption := strPort;
+    cboServerClick(Self);
+  end;
+  ServerForm.Free;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.dfm	(revision 1676)
@@ -0,0 +1,17 @@
+object RPCFRM1: TRPCFRM1
+  Left = 447
+  Top = 304
+  BorderStyle = bsNone
+  Caption = 'DLL'
+  ClientHeight = 101
+  ClientWidth = 239
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 16
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.pas	(revision 1676)
@@ -0,0 +1,435 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: winsock utilities.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+
+unit RpcNet ;
+{
+  Changes in v1.1.13 (JLI -- 8/23/00) -- XWB*1.1*13
+    Made changes to cursor dependent on current cursor being crDefault so
+       that the application can set it to a different cursor for long or
+       repeated processes without the cursor 'flashing' repeatedly.
+}
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, winsock;
+
+Const XWB_GHIP = WM_USER + 10000;
+//Const XWB_SELECT = WM_USER + 10001;
+
+Const WINSOCK1_1 = $0101;
+Const PF_INET = 2;
+Const SOCK_STREAM = 1;
+Const IPPROTO_TCP = 6;
+Const INVALID_SOCKET = -1;
+Const SOCKET_ERROR = -1;
+Const FIONREAD = $4004667F;
+Const ActiveConnection: boolean = False;
+
+type EchatError = class(Exception);
+
+type
+  TRPCFRM1 = class(TForm)
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure XWBGHIP(var msgSock: TMessage);
+    //procedure xwbSelect(var msgSock: TMessage);           //P14
+    procedure WndProc(var Message : TMessage); reintroduce; //P14
+end;
+
+type
+  WinTaskRec = record
+     InUse: boolean;
+     pTCPResult: Pointer;
+     strTemp: string; {generic output string for async calls}
+     chrTemp: PChar; {generic out PChar for async calls}
+     hTCP: THandle; {pseudo handle for async calls}
+     hWin: hWnd; {handle for owner window}
+     CallWait: boolean;
+     CallAbort: boolean;
+     RPCFRM1: TRPCFRM1;
+  end;
+
+var
+   WRec: array[1..128] of WinTaskRec;
+   Hash: array[0..159] of char;
+
+{Windows OS abstraction functions.  Should be taken over by VA Kernel}
+
+function libGetCurrentProcess: word;
+
+{Socket functions using library RPCLIB.DLL, in this case called locally}
+
+//function  libAbortCall(inst: integer): integer; export;   //P14
+function  libGetHostIP1(inst: integer; HostName: PChar;
+          var outcome: PChar): integer; export;
+function  libGetLocalIP(inst: integer; var outcome: PChar): integer; export;
+procedure libClose(inst: integer); export;
+function  libOpen:integer; export;
+
+function GetTCPError:string;
+
+{Secure Hash Algorithm functions, library SHA.DLL and local interfaces}
+
+function libGetLocalModule: PChar; export;
+function GetFileHash(fn: PChar): longint; export;
+
+implementation
+
+uses rpcconf1;
+
+{function shsTest: integer; far; external 'SHA';
+procedure shsHash(plain: PChar; size: integer;
+          Hash: PChar); far; external 'SHA';}    //Removed in P14
+
+{$R *.DFM}
+
+
+
+function libGetCurrentProcess: word;
+begin
+  Result := GetCurrentProcess;
+end;
+
+function libGetLocalIP(inst: integer; var outcome: PChar): integer;
+var
+   local: PChar;
+begin
+     local := StrAlloc(255);
+     gethostname( local, 255);
+     Result := libGetHostIP1(inst, local, outcome);
+     StrDispose(local);
+end;
+
+function libGetLocalModule: PChar;
+var
+   tsk: THandle;
+   name: PChar;
+begin
+     tsk := GetCurrentProcess;
+     name := StrAlloc(1024);
+     GetModuleFilename(tsk, name, 1024);
+     Result := name;
+
+end;
+
+function GetFileHash(fn: PChar): longint;
+var
+   hFn: integer;
+   finfo: TOFSTRUCT;
+   bytesRead, status: longint;
+   tBuf: PChar;
+
+begin
+     tBuf := StrAlloc(160);
+     hFn := OpenFile(fn, finfo, OF_READ);
+     bytesRead := 0;
+     status := _lread(hFn, tBuf, sizeof(tBuf));
+     while status <> 0 do
+     begin
+          status := _lread(hFn, tBuf, sizeof(tBuf));
+          inc(bytesRead,status);
+     end;
+     _lclose(hFn);
+     StrDispose(tBuf);
+     Result := bytesRead;
+end;
+
+function libOpen:integer;
+var
+   inst: integer;
+   WSData: TWSADATA;
+   RPCFRM1: TRPCFRM1;
+begin
+     inst := 1; {in this case, no DLL so instance is always 1}
+     RPCFRM1 := TRPCFRM1.Create(nil);    //P14
+     with WRec[inst] do
+     begin
+     hWin := AllocateHWnd(RPCFRM1.wndproc);
+
+     WSAStartUp(WINSOCK1_1, WSData);
+     WSAUnhookBlockingHook;
+
+     Result := inst;
+     InUse := True;
+     end;
+     RPCFRM1.Release;                    //P14
+end;
+
+procedure libClose(inst: integer);
+begin
+
+     with WRec[inst] do
+     begin
+        InUse := False;
+        WSACleanup;
+        DeallocateHWnd(hWin);
+     end;
+end;
+
+function libGetHostIP1(inst: integer; HostName: PChar;
+         var outcome: PChar): integer;
+var
+   //RPCFRM1: TRPCFRM1; {P14}
+   //wMsg: TMSG;        {P14}
+   //hWnd: THandle;     {P14}
+   ChangeCursor: Boolean;
+
+begin
+
+   outcome[0] := #0;
+
+   if Screen.Cursor = crDefault then
+     ChangeCursor := True
+   else
+     ChangeCursor := False;
+   if ChangeCursor then
+     Screen.Cursor := crHourGlass;
+
+   with WRec[inst] do
+   begin
+
+   if HostName[0] = #0 then
+   begin
+        StrCat(outcome,'No Name to Resolve!');
+        Result := -1;
+        exit;
+   end;
+
+   if CallWait = True then
+   begin
+        outcome[0] := #0;
+        StrCat(outcome, 'Call in Progress');
+        Result := -1;
+        exit;
+   end;
+
+   if inet_addr(HostName) > INADDR_ANY then
+   begin
+        outcome := Hostname;
+        Result := 0;
+        if ChangeCursor then
+          Screen.Cursor := crDefault;
+        WSACleanup;
+        exit;
+   end;
+
+   GetMem(pTCPResult, MAXGETHOSTSTRUCT+1);
+   try
+      begin
+           CallWait := True;
+           CallAbort := False;
+           PHostEnt(pTCPResult)^.h_name := nil;
+           hTCP := WSAAsyncGetHostByName(hWin, XWB_GHIP, HostName,
+                pTCPResult, MAXGETHOSTSTRUCT );
+           { loop while CallWait is True }
+           CallAbort := False;
+           while CallWait = True do
+                 Application.ProcessMessages;
+      end;
+   except on EInValidPointer do
+     begin
+        StrCat(outcome,'Error in GetHostByName');
+        if ChangeCursor then
+          Screen.Cursor := crDefault;
+     end;
+
+   end;
+
+   FreeMem(pTCPResult, MAXGETHOSTSTRUCT+1);
+   StrCopy(outcome,chrTemp);
+   Result := 0;
+   if ChangeCursor then
+     Screen.Cursor := crDefault;
+   end;
+   end;
+
+(*procedure TRPCFRM1.XWBSELECT(var msgSock: TMessage);
+var
+   noop: integer;
+begin
+     case msgSock.lparam of
+       FD_ACCEPT: {connection arrived}
+          begin
+               noop := 1;
+          end;
+       FD_CONNECT: {connection initiated}
+          begin
+               noop := 1;
+          end;
+       FD_READ:    {data received, put in display}
+          begin
+               noop := 1;
+          end;
+       FD_CLOSE:   {disconnection of accepted socket}
+          begin
+               noop := 1;
+          end;
+       else
+              noop := 1;
+       end;
+end;*)     //Procedure removed in P14.
+
+procedure TRPCFRM1.WndProc(var Message : TMessage);
+begin
+  with Message do
+       case Msg of
+            {XWB_SELECT : xwbSelect(Message);}    //P14
+            XWB_GHIP: xwbghip(Message);
+       else
+           DefWindowProc(WRec[1].hWin, Msg, wParam, lParam);
+           {Inherited WndProc(Message);}
+       end;
+end;
+
+procedure TRPCFRM1.XWBGHIP(var msgSock: TMessage);
+var
+   TCPResult: PHostEnt;
+   WSAError: integer;
+   HostAddr: TSockaddr;
+   inst: integer;
+
+begin
+   inst := 1; {local case is always 1}
+
+
+   with WRec[inst] do
+   begin
+
+   hTCP := msgSock.WParam;
+   
+   chrTemp := StrAlloc(512);
+
+   CallWait := False;
+   If CallAbort = True then  { User aborted call }
+   begin
+        StrCopy(ChrTemp,'Abort!');
+        exit;
+   end;
+
+   WSAError := WSAGetAsyncError(hTCP); { in case async call failed }
+   If  WSAError < 0 then
+   begin
+        StrPCopy(chrTemp,IntToStr(WSAError));
+        exit;
+   end;
+
+   try
+   begin
+      TCPResult := PHostEnt(pTCPResult);
+      StrTemp := '';
+       if TCPResult^.h_name = nil then
+         begin
+              StrCopy(chrTemp, 'Unknown!');
+              if rpcconfig <> nil then
+                rpcconfig.panel4.Caption := StrPas(chrTemp);
+              exit;
+         end;
+      {success, return resolved address}
+      HostAddr.sin_addr.S_addr := longint(plongint(TCPResult^.h_addr_list^)^);
+      chrTemp := inet_ntoa(HostAddr.sin_addr);
+   end;
+   except on EInValidPointer do StrCat(chrTemp, 'Error in GetHostByName');
+   end;
+end;
+end;
+
+(*function libAbortCall(inst: integer): integer;
+var
+   WSAError: integer;
+begin
+
+   with WRec[inst] do
+   begin
+
+   WSAError := WSACancelAsyncRequest(hTCP);
+   if WSAError = Socket_Error then
+   begin
+        WSAError := WSAGetLastError;
+        CallWait := False;
+        CallAbort := True;
+        Result := WSAError;
+   end;
+
+   CallAbort := True;
+   CallWait := False;
+   Result := WSAError;
+
+   end;
+
+end; *)    //Removed in P14
+
+function GetTCPError:string;
+var
+   x: string;
+   r: integer;
+
+begin
+      r := WSAGetLastError;
+      Case r of
+        WSAEINTR           : x := 'WSAEINTR';
+        WSAEBADF           : x := 'WSAEINTR';
+        WSAEFAULT          : x := 'WSAEFAULT';
+        WSAEINVAL          : x := 'WSAEINVAL';
+        WSAEMFILE          : x := 'WSAEMFILE';
+        WSAEWOULDBLOCK     : x := 'WSAEWOULDBLOCK';
+        WSAEINPROGRESS     : x := 'WSAEINPROGRESS';
+        WSAEALREADY        : x := 'WSAEALREADY';
+        WSAENOTSOCK        : x := 'WSAENOTSOCK';
+        WSAEDESTADDRREQ    : x := 'WSAEDESTADDRREQ';
+        WSAEMSGSIZE        : x := 'WSAEMSGSIZE';
+        WSAEPROTOTYPE      : x := 'WSAEPROTOTYPE';
+        WSAENOPROTOOPT     : x := 'WSAENOPROTOOPT';
+        WSAEPROTONOSUPPORT : x := 'WSAEPROTONOSUPPORT';
+        WSAESOCKTNOSUPPORT : x := 'WSAESOCKTNOSUPPORT';
+        WSAEOPNOTSUPP      : x := 'WSAEOPNOTSUPP';
+        WSAEPFNOSUPPORT    : x := 'WSAEPFNOSUPPORT';
+        WSAEAFNOSUPPORT    : x := 'WSAEAFNOSUPPORT';
+        WSAEADDRINUSE      : x := 'WSAEADDRINUSE';
+        WSAEADDRNOTAVAIL   : x := 'WSAEADDRNOTAVAIL';
+        WSAENETDOWN        : x := 'WSAENETDOWN';
+        WSAENETUNREACH     : x := 'WSAENETUNREACH';
+        WSAENETRESET       : x := 'WSAENETRESET';
+        WSAECONNABORTED    : x := 'WSAECONNABORTED';
+        WSAECONNRESET      : x := 'WSAECONNRESET';
+        WSAENOBUFS         : x := 'WSAENOBUFS';
+        WSAEISCONN         : x := 'WSAEISCONN';
+        WSAENOTCONN        : x := 'WSAENOTCONN';
+        WSAESHUTDOWN       : x := 'WSAESHUTDOWN';
+        WSAETOOMANYREFS    : x := 'WSAETOOMANYREFS';
+        WSAETIMEDOUT       : x := 'WSAETIMEDOUT';
+        WSAECONNREFUSED    : x := 'WSAECONNREFUSED';
+        WSAELOOP           : x := 'WSAELOOP';
+        WSAENAMETOOLONG    : x := 'WSAENAMETOOLONG';
+        WSAEHOSTDOWN       : x := 'WSAEHOSTDOWN';
+        WSAEHOSTUNREACH    : x := 'WSAEHOSTUNREACH';
+        WSAENOTEMPTY       : x := 'WSAENOTEMPTY';
+        WSAEPROCLIM        : x := 'WSAEPROCLIM';
+        WSAEUSERS          : x := 'WSAEUSERS';
+        WSAEDQUOT          : x := 'WSAEDQUOT';
+        WSAESTALE          : x := 'WSAESTALE';
+        WSAEREMOTE         : x := 'WSAEREMOTE';
+        WSASYSNOTREADY     : x := 'WSASYSNOTREADY';
+        WSAVERNOTSUPPORTED : x := 'WSAVERNOTSUPPORTED';
+        WSANOTINITIALISED  : x := 'WSANOTINITIALISED';
+        WSAHOST_NOT_FOUND  : x := 'WSAHOST_NOT_FOUND';
+        WSATRY_AGAIN       : x := 'WSATRY_AGAIN';
+        WSANO_RECOVERY     : x := 'WSANO_RECOVERY';
+        WSANO_DATA         : x := 'WSANO_DATA';
+
+        else x := 'Unknown Error';
+  end;
+  Result := x + ' (' + IntToStr(r) + ')';
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.~dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.~dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.~dfm	(revision 1676)
@@ -0,0 +1,17 @@
+object RPCFRM1: TRPCFRM1
+  Left = 279
+  Top = 352
+  BorderStyle = bsNone
+  Caption = 'DLL'
+  ClientHeight = 101
+  ClientWidth = 239
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 16
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.~pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.~pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Rpcnet.~pas	(revision 1676)
@@ -0,0 +1,435 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: winsock utilities.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+
+unit RpcNet ;
+{
+  Changes in v1.1.13 (JLI -- 8/23/00) -- XWB*1.1*13
+    Made changes to cursor dependent on current cursor being crDefault so
+       that the application can set it to a different cursor for long or
+       repeated processes without the cursor 'flashing' repeatedly.
+}
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, winsock;
+
+Const XWB_GHIP = WM_USER + 10000;
+//Const XWB_SELECT = WM_USER + 10001;
+
+Const WINSOCK1_1 = $0101;
+Const PF_INET = 2;
+Const SOCK_STREAM = 1;
+Const IPPROTO_TCP = 6;
+Const INVALID_SOCKET = -1;
+Const SOCKET_ERROR = -1;
+Const FIONREAD = $4004667F;
+Const ActiveConnection: boolean = False;
+
+type EchatError = class(Exception);
+
+type
+  TRPCFRM1 = class(TForm)
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure XWBGHIP(var msgSock: TMessage);
+    //procedure xwbSelect(var msgSock: TMessage);           //P14
+    procedure WndProc(var Message : TMessage); reintroduce; //P14
+end;
+
+type
+  WinTaskRec = record
+     InUse: boolean;
+     pTCPResult: Pointer;
+     strTemp: string; {generic output string for async calls}
+     chrTemp: PChar; {generic out PChar for async calls}
+     hTCP: THandle; {pseudo handle for async calls}
+     hWin: hWnd; {handle for owner window}
+     CallWait: boolean;
+     CallAbort: boolean;
+     RPCFRM1: TRPCFRM1;
+  end;
+
+var
+   WRec: array[1..128] of WinTaskRec;
+   Hash: array[0..159] of char;
+
+{Windows OS abstraction functions.  Should be taken over by VA Kernel}
+
+function libGetCurrentProcess: word;
+
+{Socket functions using library RPCLIB.DLL, in this case called locally}
+
+//function  libAbortCall(inst: integer): integer; export;   //P14
+function  libGetHostIP1(inst: integer; HostName: PChar;
+          var outcome: PChar): integer; export;
+function  libGetLocalIP(inst: integer; var outcome: PChar): integer; export;
+procedure libClose(inst: integer); export;
+function  libOpen:integer; export;
+
+function GetTCPError:string;
+
+{Secure Hash Algorithm functions, library SHA.DLL and local interfaces}
+
+function libGetLocalModule: PChar; export;
+function GetFileHash(fn: PChar): longint; export;
+
+implementation
+
+uses rpcconf1;
+
+{function shsTest: integer; far; external 'SHA';
+procedure shsHash(plain: PChar; size: integer;
+          Hash: PChar); far; external 'SHA';}    //Removed in P14
+
+{$R *.DFM}
+
+
+
+function libGetCurrentProcess: word;
+begin
+  Result := GetCurrentProcess;
+end;
+
+function libGetLocalIP(inst: integer; var outcome: PChar): integer;
+var
+   local: PChar;
+begin
+     local := StrAlloc(255);
+     gethostname( local, 255);
+     Result := libGetHostIP1(inst, local, outcome);
+     StrDispose(local);
+end;
+
+function libGetLocalModule: PChar;
+var
+   tsk: THandle;
+   name: PChar;
+begin
+     tsk := GetCurrentProcess;
+     name := StrAlloc(1024);
+     GetModuleFilename(tsk, name, 1024);
+     Result := name;
+
+end;
+
+function GetFileHash(fn: PChar): longint;
+var
+   hFn: integer;
+   finfo: TOFSTRUCT;
+   bytesRead, status: longint;
+   tBuf: PChar;
+
+begin
+     tBuf := StrAlloc(160);
+     hFn := OpenFile(fn, finfo, OF_READ);
+     bytesRead := 0;
+     status := _lread(hFn, tBuf, sizeof(tBuf));
+     while status <> 0 do
+     begin
+          status := _lread(hFn, tBuf, sizeof(tBuf));
+          inc(bytesRead,status);
+     end;
+     _lclose(hFn);
+     StrDispose(tBuf);
+     Result := bytesRead;
+end;
+
+function libOpen:integer;
+var
+   inst: integer;
+   WSData: TWSADATA;
+   RPCFRM1: TRPCFRM1;
+begin
+     inst := 1; {in this case, no DLL so instance is always 1}
+     RPCFRM1 := TRPCFRM1.Create(nil);    //P14
+     with WRec[inst] do
+     begin
+     hWin := AllocateHWnd(RPCFRM1.wndproc);
+
+     WSAStartUp(WINSOCK1_1, WSData);
+     WSAUnhookBlockingHook;
+
+     Result := inst;
+     InUse := True;
+     end;
+     RPCFRM1.Release;                    //P14
+end;
+
+procedure libClose(inst: integer);
+begin
+
+     with WRec[inst] do
+     begin
+        InUse := False;
+        WSACleanup;
+        DeallocateHWnd(hWin);
+     end;
+end;
+
+function libGetHostIP1(inst: integer; HostName: PChar;
+         var outcome: PChar): integer;
+var
+   //RPCFRM1: TRPCFRM1; {P14}
+   //wMsg: TMSG;        {P14}
+   //hWnd: THandle;     {P14}
+   ChangeCursor: Boolean;
+
+begin
+
+   outcome[0] := #0;
+
+   if Screen.Cursor = crDefault then
+     ChangeCursor := True
+   else
+     ChangeCursor := False;
+   if ChangeCursor then
+     Screen.Cursor := crHourGlass;
+
+   with WRec[inst] do
+   begin
+
+   if HostName[0] = #0 then
+   begin
+        StrCat(outcome,'No Name to Resolve!');
+        Result := -1;
+        exit;
+   end;
+
+   if CallWait = True then
+   begin
+        outcome[0] := #0;
+        StrCat(outcome, 'Call in Progress');
+        Result := -1;
+        exit;
+   end;
+
+   if inet_addr(HostName) > INADDR_ANY then
+   begin
+        outcome := Hostname;
+        Result := 0;
+        if ChangeCursor then
+          Screen.Cursor := crDefault;
+        WSACleanup;
+        exit;
+   end;
+
+   GetMem(pTCPResult, MAXGETHOSTSTRUCT+1);
+   try
+      begin
+           CallWait := True;
+           CallAbort := False;
+           PHostEnt(pTCPResult)^.h_name := nil;
+           hTCP := WSAAsyncGetHostByName(hWin, XWB_GHIP, HostName,
+                pTCPResult, MAXGETHOSTSTRUCT );
+           { loop while CallWait is True }
+           CallAbort := False;
+           while CallWait = True do
+                 Application.ProcessMessages;
+      end;
+   except on EInValidPointer do
+     begin
+        StrCat(outcome,'Error in GetHostByName');
+        if ChangeCursor then
+          Screen.Cursor := crDefault;
+     end;
+
+   end;
+
+   FreeMem(pTCPResult, MAXGETHOSTSTRUCT+1);
+   StrCopy(outcome,chrTemp);
+   Result := 0;
+   if ChangeCursor then
+     Screen.Cursor := crDefault;
+   end;
+   end;
+
+(*procedure TRPCFRM1.XWBSELECT(var msgSock: TMessage);
+var
+   noop: integer;
+begin
+     case msgSock.lparam of
+       FD_ACCEPT: {connection arrived}
+          begin
+               noop := 1;
+          end;
+       FD_CONNECT: {connection initiated}
+          begin
+               noop := 1;
+          end;
+       FD_READ:    {data received, put in display}
+          begin
+               noop := 1;
+          end;
+       FD_CLOSE:   {disconnection of accepted socket}
+          begin
+               noop := 1;
+          end;
+       else
+              noop := 1;
+       end;
+end;*)     //Procedure removed in P14.
+
+procedure TRPCFRM1.WndProc(var Message : TMessage);
+begin
+  with Message do
+       case Msg of
+            {XWB_SELECT : xwbSelect(Message);}    //P14
+            XWB_GHIP: xwbghip(Message);
+       else
+           DefWindowProc(WRec[1].hWin, Msg, wParam, lParam);
+           {Inherited WndProc(Message);}
+       end;
+end;
+
+procedure TRPCFRM1.XWBGHIP(var msgSock: TMessage);
+var
+   TCPResult: PHostEnt;
+   WSAError: integer;
+   HostAddr: TSockaddr;
+   inst: integer;
+
+begin
+   inst := 1; {local case is always 1}
+
+
+   with WRec[inst] do
+   begin
+
+   hTCP := msgSock.WParam;
+   
+   chrTemp := StrAlloc(512);
+
+   CallWait := False;
+   If CallAbort = True then  { User aborted call }
+   begin
+        StrCopy(ChrTemp,'Abort!');
+        exit;
+   end;
+
+   WSAError := WSAGetAsyncError(hTCP); { in case async call failed }
+   If  WSAError < 0 then
+   begin
+        StrPCopy(chrTemp,IntToStr(WSAError));
+        exit;
+   end;
+
+   try
+   begin
+      TCPResult := PHostEnt(pTCPResult);
+      StrTemp := '';
+       if TCPResult^.h_name = nil then
+         begin
+              StrCopy(chrTemp, 'Unknown!');
+              if rpcconfig <> nil then
+                rpcconfig.panel4.Caption := StrPas(chrTemp);
+              exit;
+         end;
+      {success, return resolved address}
+      HostAddr.sin_addr.S_addr := longint(plongint(TCPResult^.h_addr_list^)^);
+      chrTemp := inet_ntoa(HostAddr.sin_addr);
+   end;
+   except on EInValidPointer do StrCat(chrTemp, 'Error in GetHostByName');
+   end;
+end;
+end;
+
+(*function libAbortCall(inst: integer): integer;
+var
+   WSAError: integer;
+begin
+
+   with WRec[inst] do
+   begin
+
+   WSAError := WSACancelAsyncRequest(hTCP);
+   if WSAError = Socket_Error then
+   begin
+        WSAError := WSAGetLastError;
+        CallWait := False;
+        CallAbort := True;
+        Result := WSAError;
+   end;
+
+   CallAbort := True;
+   CallWait := False;
+   Result := WSAError;
+
+   end;
+
+end; *)    //Removed in P14
+
+function GetTCPError:string;
+var
+   x: string;
+   r: integer;
+
+begin
+      r := WSAGetLastError;
+      Case r of
+        WSAEINTR           : x := 'WSAEINTR';
+        WSAEBADF           : x := 'WSAEINTR';
+        WSAEFAULT          : x := 'WSAEFAULT';
+        WSAEINVAL          : x := 'WSAEINVAL';
+        WSAEMFILE          : x := 'WSAEMFILE';
+        WSAEWOULDBLOCK     : x := 'WSAEWOULDBLOCK';
+        WSAEINPROGRESS     : x := 'WSAEINPROGRESS';
+        WSAEALREADY        : x := 'WSAEALREADY';
+        WSAENOTSOCK        : x := 'WSAENOTSOCK';
+        WSAEDESTADDRREQ    : x := 'WSAEDESTADDRREQ';
+        WSAEMSGSIZE        : x := 'WSAEMSGSIZE';
+        WSAEPROTOTYPE      : x := 'WSAEPROTOTYPE';
+        WSAENOPROTOOPT     : x := 'WSAENOPROTOOPT';
+        WSAEPROTONOSUPPORT : x := 'WSAEPROTONOSUPPORT';
+        WSAESOCKTNOSUPPORT : x := 'WSAESOCKTNOSUPPORT';
+        WSAEOPNOTSUPP      : x := 'WSAEOPNOTSUPP';
+        WSAEPFNOSUPPORT    : x := 'WSAEPFNOSUPPORT';
+        WSAEAFNOSUPPORT    : x := 'WSAEAFNOSUPPORT';
+        WSAEADDRINUSE      : x := 'WSAEADDRINUSE';
+        WSAEADDRNOTAVAIL   : x := 'WSAEADDRNOTAVAIL';
+        WSAENETDOWN        : x := 'WSAENETDOWN';
+        WSAENETUNREACH     : x := 'WSAENETUNREACH';
+        WSAENETRESET       : x := 'WSAENETRESET';
+        WSAECONNABORTED    : x := 'WSAECONNABORTED';
+        WSAECONNRESET      : x := 'WSAECONNRESET';
+        WSAENOBUFS         : x := 'WSAENOBUFS';
+        WSAEISCONN         : x := 'WSAEISCONN';
+        WSAENOTCONN        : x := 'WSAENOTCONN';
+        WSAESHUTDOWN       : x := 'WSAESHUTDOWN';
+        WSAETOOMANYREFS    : x := 'WSAETOOMANYREFS';
+        WSAETIMEDOUT       : x := 'WSAETIMEDOUT';
+        WSAECONNREFUSED    : x := 'WSAECONNREFUSED';
+        WSAELOOP           : x := 'WSAELOOP';
+        WSAENAMETOOLONG    : x := 'WSAENAMETOOLONG';
+        WSAEHOSTDOWN       : x := 'WSAEHOSTDOWN';
+        WSAEHOSTUNREACH    : x := 'WSAEHOSTUNREACH';
+        WSAENOTEMPTY       : x := 'WSAENOTEMPTY';
+        WSAEPROCLIM        : x := 'WSAEPROCLIM';
+        WSAEUSERS          : x := 'WSAEUSERS';
+        WSAEDQUOT          : x := 'WSAEDQUOT';
+        WSAESTALE          : x := 'WSAESTALE';
+        WSAEREMOTE         : x := 'WSAEREMOTE';
+        WSASYSNOTREADY     : x := 'WSASYSNOTREADY';
+        WSAVERNOTSUPPORTED : x := 'WSAVERNOTSUPPORTED';
+        WSANOTINITIALISED  : x := 'WSANOTINITIALISED';
+        WSAHOST_NOT_FOUND  : x := 'WSAHOST_NOT_FOUND';
+        WSATRY_AGAIN       : x := 'WSATRY_AGAIN';
+        WSANO_RECOVERY     : x := 'WSANO_RECOVERY';
+        WSANO_DATA         : x := 'WSANO_DATA';
+
+        else x := 'Unknown Error';
+  end;
+  Result := x + ' (' + IntToStr(r) + ')';
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SelDiv.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SelDiv.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SelDiv.dfm	(revision 1676)
@@ -0,0 +1,156 @@
+object SelDivForm: TSelDivForm
+  Left = 368
+  Top = 193
+  Width = 445
+  Height = 213
+  Caption = 'Select Division'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -16
+  Font.Name = 'MS Sans Serif'
+  Font.Style = [fsBold]
+  OldCreateOrder = True
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 20
+  object DivLabel1: TLabel
+    Left = 16
+    Top = 8
+    Width = 268
+    Height = 16
+    Caption = 'Must Select Division To Continue Signon!'
+    Color = clBtnFace
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'System'
+    Font.Style = [fsBold]
+    ParentColor = False
+    ParentFont = False
+  end
+  object btnOK: TBitBtn
+    Left = 16
+    Top = 137
+    Width = 81
+    Height = 25
+    Anchors = [akRight]
+    Caption = '&OK'
+    Default = True
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 1
+    OnClick = btnOKClick
+    Glyph.Data = {
+      BE060000424DBE06000000000000360400002800000024000000120000000100
+      0800000000008802000000000000000000000001000000010000000000000000
+      80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+      A600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000F0FBFF00A4A0A000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030303030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      03030303030303030303030303030303030303030303FF030303030303030303
+      03030303030303040403030303030303030303030303030303F8F8FF03030303
+      03030303030303030303040202040303030303030303030303030303F80303F8
+      FF030303030303030303030303040202020204030303030303030303030303F8
+      03030303F8FF0303030303030303030304020202020202040303030303030303
+      0303F8030303030303F8FF030303030303030304020202FA0202020204030303
+      0303030303F8FF0303F8FF030303F8FF03030303030303020202FA03FA020202
+      040303030303030303F8FF03F803F8FF0303F8FF03030303030303FA02FA0303
+      03FA0202020403030303030303F8FFF8030303F8FF0303F8FF03030303030303
+      FA0303030303FA0202020403030303030303F80303030303F8FF0303F8FF0303
+      0303030303030303030303FA0202020403030303030303030303030303F8FF03
+      03F8FF03030303030303030303030303FA020202040303030303030303030303
+      0303F8FF0303F8FF03030303030303030303030303FA02020204030303030303
+      03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403
+      030303030303030303030303F8FF0303F8FF03030303030303030303030303FA
+      0202040303030303030303030303030303F8FF03F8FF03030303030303030303
+      03030303FA0202030303030303030303030303030303F8FFF803030303030303
+      030303030303030303FA0303030303030303030303030303030303F803030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      0303}
+    NumGlyphs = 2
+  end
+  object btnCancel: TBitBtn
+    Left = 168
+    Top = 137
+    Width = 83
+    Height = 25
+    Anchors = [akRight]
+    Caption = '&Cancel'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 2
+    OnClick = btnCancelClick
+    Kind = bkCancel
+  end
+  object btnHelp: TBitBtn
+    Left = 336
+    Top = 135
+    Width = 83
+    Height = 26
+    Anchors = [akRight]
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 3
+    OnClick = btnHelpClick
+    Kind = bkHelp
+  end
+  object DivListBox: TListBox
+    Left = 16
+    Top = 32
+    Width = 401
+    Height = 90
+    Anchors = [akTop, akRight]
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'System'
+    Font.Style = [fsBold]
+    ItemHeight = 16
+    ParentFont = False
+    Sorted = True
+    TabOrder = 0
+    OnDblClick = btnOKClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SelDiv.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SelDiv.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SelDiv.pas	(revision 1676)
@@ -0,0 +1,245 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Handles Division selection for multidivision
+	             users.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+{**************************************************
+This will ONLY be invoked when user has more than one division to select from
+in NEW Person file.  If user only has one division, that division will be used;
+else it will default to whatever is in the Kernel Site Parameter file.
+
+XWB*1.1*13, Silent Login, allows for silent log-in functionality - DCM
+last updated: 5/24/00
+------------------------------------------------------------------------------}
+
+
+unit SelDiv;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, MFunStr, Buttons, Trpcb;
+
+type
+  TSelDivForm = class(TForm)
+    btnOK: TBitBtn;
+    btnCancel: TBitBtn;
+    btnHelp: TBitBtn;
+    DivLabel1: TLabel;
+    DivListBox: TListBox;
+    procedure btnOKClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnHelpClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure Enter;
+  end;
+
+function ChooseDiv(userid : string; MDivBroker: TRPCBroker): Boolean;
+function SetDiv(division : string; MDivBroker: TRPCBroker): boolean;  //p13
+function MultDiv(MDivBroker: TRPCBroker): boolean;
+function SelectDivision(DivisionArray: TStrings; MDivBroker: TRPCBroker): Boolean;
+
+var
+  SelDivForm: TSelDivForm;
+
+implementation
+
+var
+   DivSel : string;
+   CntDiv : integer;
+   DivArray : TStrings; //Holds Results from 'XUS Division Get'
+{$R *.DFM}
+
+{------------------------------ChooseDiv---------------------------------}
+{  This function will retrieve the divisions for a user. The user will
+   then choose one division for signon. 'USERID' parameter is for future use
+   that will bring back a list of divisions for a user based on their DUZ
+   (or username to lookup DUZ), not based on the DUZ as it exists in the
+   symbol table. }
+
+function ChooseDiv(userid : string; MDivBroker: TRPCBroker): Boolean;
+var
+   division : string;
+begin
+     Result := false; // stays 'false' if user not select division.
+     with MDivBroker do begin
+          if userid <> '' then         // future use - - DUZ is passed in.
+          begin
+             with Param[0] do begin
+               Value := userid;
+               PType := literal;
+             end;
+          end;
+          RemoteProcedure := 'XUS DIVISION GET';
+          Call;
+          CntDiv := StrToInt(MDivBroker.Results[0]); //count of divisions.
+     end;{with}
+
+     if CntDiv = 0 then Result := true; //using the Kernel default division.
+
+     if CntDiv > 0 then
+     begin
+          DivArray := TStringlist.Create;       //Put Results in DivArray
+          DivArray.Assign(MDivBroker.Results);
+          try
+             SelDivForm := TSelDivForm.Create(Application); //create division form.
+             ShowApplicationAndFocusOK(Application);
+             SetForegroundWindow(SelDivForm.Handle);
+             SelDivForm.Enter;
+          finally;
+             SelDivForm.Free;
+          end;
+     end;{if/begin}
+
+     if SelDiv.DivSel <> '' then
+     begin
+        Result := True; //user selected a division.
+        division := Piece((Piece(SelDiv.DivSel,'(',2)),')',1);
+        if SetDiv(division,MDivBroker) then MDivBroker.User.Division := Division;
+
+     end;{if/begin}
+end;{procedure}
+
+function SelectDivision(DivisionArray: TStrings; MDivBroker: TRPCBroker): Boolean;
+var
+  division : string;
+begin
+  Result := false;
+  with MDivBroker do
+  begin
+    if DivisionArray.Count = 0 then
+      begin
+      RemoteProcedure := 'XUS DIVISION GET';
+      Call;
+      CntDiv := StrToInt(Results[0]); //count of divisions.
+      DivisionArray.Assign(Results);
+      end;
+    end;{with}
+  if CntDiv = 0 then //using the Kernel default division.
+    begin
+    Result := true;
+    exit;
+    end;
+  if CntDiv > 0 then
+    begin
+    DivArray := TStringlist.Create;       //Put Results in DivArray
+    DivArray.Assign(DivisionArray);
+    try
+      SelDivForm := TSelDivForm.Create(Application); //create division form.
+      ShowApplicationAndFocusOK(Application);
+      SetForegroundWindow(SelDivForm.Handle);
+      SelDivForm.Enter;
+    finally;
+      SelDivForm.Free;
+    end; {try}
+    end; {if/begin}
+  if DivSel <> '' then
+    begin
+    Result := True; //user selected a division.
+    division := Piece((Piece(SelDiv.DivSel,'(',2)),')',1);
+    //division := Piece(SelDiv.DivSel,'^',2);
+    if SetDiv(division,MDivBroker) then MDivBroker.User.Division := Division;
+    end{if divsel}
+  else MDivBroker.LogIn.ErrorText := 'Invalid Division';
+end;{function}
+
+function MultDiv(MDivBroker: TRPCBroker): boolean;
+begin
+  Result := False;
+  with MDivBroker do
+    begin
+      RemoteProcedure := 'XUS DIVISION GET';
+      Call;
+      CntDiv := StrToInt(Results[0]); //count of divisions.
+      if CntDiv > 0 then
+      with Login do
+        begin
+        DivList.Assign(Results);//store the divisions
+        MultiDivision := True;
+        Result := True;
+        end;
+      end;
+end;
+
+{----------------------------SetDiv--------------------------------}
+{ This function will set DUZ(2) to the division the user selected. }
+
+function SetDiv(division : string; MDivBroker: TRPCBroker): boolean;
+begin
+  Result := False;
+  with MDivBroker do begin
+    Param[0].Value := division;
+    Param[0].PType := literal;
+    RemoteProcedure := 'XUS DIVISION SET';
+    Call;
+    if Results[0] = '1' then Result := True //1= DUZ(2) set successfully to division.
+    else  Login.ErrorText := 'Invalid Division';
+    end;{with}                             //0= DUZ(2) NOT able to set to division.
+end;
+
+procedure TSelDivForm.Enter;
+begin
+     try
+        ShowModal; //invoke division form
+     finally
+
+     end;
+end;
+
+procedure TSelDivForm.btnOKClick(Sender: TObject);
+begin
+     if DivListBox.ItemIndex = -1 then   //nothing selected.
+        ShowMessage('A Division was not selected!')
+     else
+     begin
+        SelDiv.DivSel := DivListBox.Items [DivListBox.ItemIndex]; //division
+        close;                                                     // selected.
+     end;
+end;
+
+procedure TSelDivForm.btnCancelClick(Sender: TObject);
+begin
+     close;
+end;
+
+procedure TSelDivForm.btnHelpClick(Sender: TObject);
+begin
+     ShowMessage('Select a division from the list and click OK.'+
+     '  A division must be selected in order to continue with your signon.' +
+     '  To abort process click on Cancel but signon will NOT be completed.')
+end;
+
+procedure TSelDivForm.FormCreate(Sender: TObject);
+var
+   I : integer;
+   X : string;
+   y,def: string;
+begin
+  def := '';
+     SelDiv.DivSel := ''; //clear any old selection
+     I := 1;
+     while not (I > CntDiv) do
+         begin
+         X := DivArray[I];
+         y := '(' + Piece(X,U,3) + ') ' + Piece(X,U,2); //p13 moved div# in front
+                                                        //of div name
+         DivListBox.Items.Add(y); // + '                                     ^' + IntToStr(I));
+         if Piece(X,U,4) = '1' then def := y;
+         I := I + 1;
+         end;
+     DivListBox.Sorted := TRUE;
+     if def <> '' then DivListBox.ItemIndex := DivListBox.Items.Indexof(def);     //use itemindex to highlight the default division
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SgnonCnf.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SgnonCnf.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SgnonCnf.dfm	(revision 1676)
@@ -0,0 +1,210 @@
+object frmSignonConfig: TfrmSignonConfig
+  Left = 232
+  Top = 110
+  HelpContext = 2
+  ActiveControl = CancelBtn
+  BorderStyle = bsDialog
+  Caption = 'Sign-on Properties'
+  ClientHeight = 258
+  ClientWidth = 401
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Courier New'
+  Font.Style = [fsBold]
+  FormStyle = fsStayOnTop
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 14
+  object Bevel1: TBevel
+    Left = 8
+    Top = 8
+    Width = 289
+    Height = 249
+    Shape = bsFrame
+    IsControl = True
+  end
+  object OKBtn: TBitBtn
+    Left = 312
+    Top = 8
+    Width = 77
+    Height = 27
+    Caption = 'OK'
+    ModalResult = 1
+    TabOrder = 5
+    OnClick = OKBtnClick
+    Glyph.Data = {
+      DE010000424DDE01000000000000760000002800000024000000120000000100
+      0400000000006801000000000000000000001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      3333333333333333333333330000333333333333333333333333F33333333333
+      00003333344333333333333333388F3333333333000033334224333333333333
+      338338F3333333330000333422224333333333333833338F3333333300003342
+      222224333333333383333338F3333333000034222A22224333333338F338F333
+      8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224
+      33333338F83338F338F33333000033A33333A222433333338333338F338F3333
+      0000333333333A222433333333333338F338F33300003333333333A222433333
+      333333338F338F33000033333333333A222433333333333338F338F300003333
+      33333333A222433333333333338F338F00003333333333333A22433333333333
+      3338F38F000033333333333333A223333333333333338F830000333333333333
+      333A333333333333333338330000333333333333333333333333333333333333
+      0000}
+    Margin = 2
+    NumGlyphs = 2
+    Spacing = -1
+    IsControl = True
+  end
+  object CancelBtn: TBitBtn
+    Left = 312
+    Top = 48
+    Width = 77
+    Height = 27
+    Cancel = True
+    Caption = 'Cancel'
+    Default = True
+    ModalResult = 2
+    TabOrder = 0
+    Glyph.Data = {
+      DE010000424DDE01000000000000760000002800000024000000120000000100
+      0400000000006801000000000000000000001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      333333333333333333333333000033338833333333333333333F333333333333
+      0000333911833333983333333388F333333F3333000033391118333911833333
+      38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333
+      911118111118333338F3338F833338F3000033333911111111833333338F3338
+      3333F8330000333333911111183333333338F333333F83330000333333311111
+      8333333333338F3333383333000033333339111183333333333338F333833333
+      00003333339111118333333333333833338F3333000033333911181118333333
+      33338333338F333300003333911183911183333333383338F338F33300003333
+      9118333911183333338F33838F338F33000033333913333391113333338FF833
+      38F338F300003333333333333919333333388333338FFF830000333333333333
+      3333333333333333333888330000333333333333333333333333333333333333
+      0000}
+    Margin = 2
+    NumGlyphs = 2
+    Spacing = -1
+    IsControl = True
+  end
+  object HelpBtn: TBitBtn
+    Left = 312
+    Top = 128
+    Width = 77
+    Height = 27
+    TabOrder = 6
+    Kind = bkHelp
+    Margin = 2
+    Spacing = -1
+    IsControl = True
+  end
+  object rgrWindowPosition: TRadioGroup
+    Left = 24
+    Top = 24
+    Width = 121
+    Height = 81
+    Caption = 'Window Position'
+    Items.Strings = (
+      'Center'
+      'Current'
+      'Remember')
+    TabOrder = 2
+    TabStop = True
+  end
+  object rgrWindowSize: TRadioGroup
+    Left = 160
+    Top = 24
+    Width = 121
+    Height = 81
+    Caption = 'Window Size'
+    Items.Strings = (
+      'Normal'
+      'Current'
+      'Remember')
+    TabOrder = 3
+    TabStop = True
+  end
+  object GroupBox1: TGroupBox
+    Left = 24
+    Top = 120
+    Width = 257
+    Height = 121
+    Caption = 'Intro Text'
+    TabOrder = 4
+    object Button1: TButton
+      Left = 16
+      Top = 80
+      Width = 97
+      Height = 27
+      Caption = 'Change Font'
+      TabOrder = 1
+      OnClick = Button1Click
+    end
+    object rgrIntroBackClr: TRadioGroup
+      Left = 16
+      Top = 24
+      Width = 225
+      Height = 41
+      Caption = 'Background Color'
+      Columns = 2
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = [fsBold]
+      Items.Strings = (
+        'Current'
+        'Select New')
+      ParentFont = False
+      TabOrder = 0
+      TabStop = True
+      OnClick = rgrIntroBackClrClick
+    end
+  end
+  object btnDefaults: TBitBtn
+    Left = 312
+    Top = 88
+    Width = 77
+    Height = 27
+    HelpContext = 4
+    Caption = '&Defaults'
+    ModalResult = 5
+    TabOrder = 1
+    Glyph.Data = {
+      76010000424D7601000000000000760000002800000020000000100000000100
+      0400000000000001000000000000000000001000000010000000000000000000
+      800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      3333333333FFFFF3333333333999993333333333F77777FFF333333999999999
+      3333333777333777FF3333993333339993333377FF3333377FF3399993333339
+      993337777FF3333377F3393999333333993337F777FF333337FF993399933333
+      399377F3777FF333377F993339993333399377F33777FF33377F993333999333
+      399377F333777FF3377F993333399933399377F3333777FF377F993333339993
+      399377FF3333777FF7733993333339993933373FF3333777F7F3399933333399
+      99333773FF3333777733339993333339933333773FFFFFF77333333999999999
+      3333333777333777333333333999993333333333377777333333}
+    Margin = 2
+    NumGlyphs = 2
+    Spacing = -1
+    IsControl = True
+  end
+  object FontDialog1: TFontDialog
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'System'
+    Font.Style = []
+    MinFontSize = 0
+    MaxFontSize = 0
+    Left = 136
+    Top = 200
+  end
+  object ColorDialog1: TColorDialog
+    Ctl3D = True
+    Left = 336
+    Top = 216
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SgnonCnf.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SgnonCnf.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SgnonCnf.pas	(revision 1676)
@@ -0,0 +1,602 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Signon Form Configuration Dialog.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+{**************************************************
+1.1P31 - Modified to store signon configuration under
+         the HKCU key - this permits users on NT2000
+         machines who have USER access to set their
+         configuration.  Also, makes configuration specific
+         to users on machines which might be shared.
+
+         Also make it so that configuration is only written
+         to the registry when the user indicates that it
+         should be saved (previously the default values
+         were written into the registry as well as applied
+         to the window if data was not in the registry).
+         The default values previously stored in the registry
+         would override any changes in the signon window
+         design via coding.  To overcome this, if the user
+         does not have saved configuration data, the window
+         generated on opening will be used as the default, and
+         the default data written into the registry as defaults.
+         This will permit the user to restore to the current
+         window defaults if desired, but will not overwrite
+         changes released for the window in later patches.
+************************************************************}
+
+unit Sgnoncnf;
+
+interface
+
+uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons,
+  StdCtrls, ExtCtrls, Dialogs, SysUtils, MFunStr, XWBut1;
+
+type
+  TSignonValues = class(TObject)
+  private
+    FHeight: Integer;
+    FWidth: Integer;
+    FTextColor: LongInt;
+    FPosition: String;
+    FSize: String;
+    FIntroFont: String;
+    FIntroFontStyles: String;
+    FBackColor: LongInt;
+    FFont: TFont;
+    FFontStyles: TFontStyles;
+    FTop: Integer;
+    FLeft: Integer;
+    procedure SetSize(const Value: String);
+    procedure SetPosition(const Value: String);
+    procedure SetIntroFont(const Value: String);
+    procedure SetIntroFontStyles(const Value: String);
+    procedure SetFont(Value: TFont);
+    procedure SetTextColor(Value: LongInt);
+  public
+    procedure Clear; virtual;
+    constructor Create;
+    destructor Destroy; override;
+    procedure SetEqual(EqualToValue: TSignonValues);
+    property Height: Integer read FHeight write FHeight;
+    property Width: Integer read FWidth write FWidth;
+    property TextColor: LongInt read FTextColor write SetTextColor;
+    property Position: String read FPosition write SetPosition;
+    property Size: String read FSize write SetSize;
+    property IntroFont: String read FIntroFont write SetIntroFont;
+    property IntroFontStyles: String read FIntroFontStyles write SetIntroFontStyles;
+    property BackColor: LongInt read FBackColor write FBackColor;
+    property Font: TFont read FFont write SetFont;
+    property FontStyles: TFontStyles read FFontStyles write FFontStyles;
+    property Top: Integer read FTop write FTop;
+    property Left: Integer read FLeft write FLeft;
+  end;
+
+  TSignonConfiguration = class;
+
+{
+   This class is the form shown for configuration of the signon form
+}
+  TfrmSignonConfig = class(TForm)
+    OKBtn: TBitBtn;
+    CancelBtn: TBitBtn;
+    HelpBtn: TBitBtn;
+    Bevel1: TBevel;
+    rgrWindowPosition: TRadioGroup;
+    rgrWindowSize: TRadioGroup;
+    FontDialog1: TFontDialog;
+    GroupBox1: TGroupBox;
+    Button1: TButton;
+    btnDefaults: TBitBtn;
+    rgrIntroBackClr: TRadioGroup;
+    ColorDialog1: TColorDialog;
+    procedure Button1Click(Sender: TObject);
+    procedure OKBtnClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure rgrIntroBackClrClick(Sender: TObject);
+  private
+    { Private declarations }
+    FController: TSignonConfiguration;
+  public
+    property Controller: TSignonConfiguration read FController write FController;
+    { Public declarations }
+  end;
+
+{
+     This class handles the processing for signon configuration
+}
+  TSignonConfiguration = class(TObject)
+  private
+    OrigHelp: String;
+    FIntroBackColor: LongInt;
+    FIntroFontValue: String;
+    FIntroFontStyles: String;
+    FIntroTextColor: LongInt;
+    FPosition: String;
+    FSize: String;
+  protected
+    procedure ResetToDefaults; virtual;
+    procedure UserClickedOK; virtual;
+    procedure IntroBackColor; virtual;
+    procedure FontDialog; virtual;
+    procedure UpdateWindow;
+  public
+    function ShowModal: Integer; virtual;
+    procedure ReadRegistrySettings;
+    constructor Create;
+  end;
+
+function StoreFontStyle(Values: TFontStyles): string;
+function RestoreFontStyles(Value: String): TFontStyles;
+
+
+var
+  frmSignonConfig: TfrmSignonConfig;
+  strPosition, strSize: string;
+  InitialValues: TSignonValues;
+  SignonDefaults: TSignonValues;
+  IsSharedBroker: Boolean;
+
+{
+const
+  DfltWidth: integer = 794; // 631; // 611;  // 608;
+  DfltHeight: integer = 591;  // 467; // 300;
+  DfltIntroClr: longint = clWindow;
+  DfltPosition: string = '0';
+  DfltSize: string = '0';
+  DfltIntroFont: string = '';  //  'Fixedsys^8'; // 'Courier New^8';
+  DfltIntroFontStyle: TFontStyles = [fsBold];
+  DfltBackClr: integer = 0;
+  p:string = '[';
+}
+
+implementation
+
+{$R *.DFM}
+
+uses LoginFrm, fSgnonDlg, Trpcb;
+
+procedure TfrmSignonConfig.Button1Click(Sender: TObject);
+begin
+//  FontDialog1.Execute;
+  Controller.FontDialog;
+end;
+
+procedure TfrmSignonConfig.OKBtnClick(Sender: TObject);
+begin
+
+end;
+
+{-------------- TSignonConfiguration.ReadRegistrySettings --------------
+Read Signon related settings from the Registry.  Substitute defaults
+for missing values.
+------------------------------------------------------------------}
+procedure TSignonConfiguration.ReadRegistrySettings;
+var
+  strFontStyle: String;
+  strFontColor: String;
+  strFontSettings: String;
+begin
+  { Test handling of Defaults }
+//  ShowMessage
+  InitialValues.SetEqual(SignonDefaults);
+  InitialValues.Position := '0';
+  InitialValues.Size := '0';
+  InitialValues.BackColor := clWindow;
+  InitialValues.TextColor := clWindowText;
+
+  {%%%%%%% Sign-on Window Position %%%%%%%}
+  strPosition := ReadRegDataDefault(HKCU, REG_SIGNON, 'SignonPos','');
+  if strPosition <> '' then
+    InitialValues.Position := strPosition;
+
+  {%%%%%%% Sign-on Window Size %%%%%%%}
+  strSize := ReadRegDataDefault(HKCU, REG_SIGNON, 'SignonSiz', '');
+  if strSize <> '' then
+    InitialValues.Size := strSize;
+
+  {%%%%%%% Intro Text Background Color %%%%%%%}
+  if ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroBackClr', '') <> '' then
+    InitialValues.BackColor := StrToInt(ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroBackClr', ''));
+
+  {%%%%%%% Intro Text Font %%%%%%%}
+  strFontSettings := ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroTextFont', '');
+  if strFontSettings <> '' then
+  begin
+    InitialValues.IntroFont := strFontSettings;
+    InitialValues.Font.Name := Piece(strFontSettings,U,1);
+    InitialValues.Font.Size := StrToInt(Piece(strFontSettings,U,2));
+  end;
+  
+  {%%%%%%% Intro Text Color %%%%%%%}
+  strFontColor := ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroTextClr', '');
+  if strFontColor <> '' then
+  begin
+    InitialValues.TextColor := StrToInt(strFontColor);
+    InitialValues.Font.Color := InitialValues.TextColor;
+  end;
+
+  {%%%%%%% Intro Text Font Styles %%%%%%%}
+  strFontStyle := ReadRegDataDefault(HKCU, REG_SIGNON, 'IntroTextStyle', '');
+  if strFontStyle <> '' then
+  begin
+    InitialValues.IntroFontStyles := strFontStyle;
+    InitialValues.Font.Style := RestoreFontStyles(strFontStyle)
+  end;
+end;
+
+
+function StoreFontStyle(Values: TFontStyles): String;
+begin
+  Result := '';
+  if fsBold in Values then
+    Result := Result + 'B';
+  if FsItalic in Values then
+    Result := Result + 'I';
+  if fsUnderline in Values then
+    Result := Result + 'U';
+  if fsStrikeout in Values then
+    Result := Result + 'S';
+end;
+
+procedure TfrmSignonConfig.FormShow(Sender: TObject);
+begin
+  //
+end;
+
+function RestoreFontStyles(Value: String): TFontStyles;
+begin
+  Result := [];
+  if pos('B',Value) > 0 then
+    Result := Result + [fsBold];
+  if pos('I',Value) > 0 then
+    Result := Result + [fsItalic];
+  if pos('U',Value) > 0 then
+    Result := Result + [fsUnderline];
+  if pos('S',Value) > 0 then
+    Result := Result + [fsStrikeout];
+end;
+
+procedure TfrmSignonConfig.rgrIntroBackClrClick(Sender: TObject);
+begin
+  Controller.IntroBackColor;
+end;
+
+function TSignonConfiguration.ShowModal: Integer;
+var
+  ModalValue: Integer;
+begin
+  ReadRegistrySettings;
+  if frmSignonConfig = nil then
+    frmSignonConfig := TfrmSignonConfig.Create(Application);
+  frmSignonConfig.Controller := Self;
+  OrigHelp := Application.HelpFile;             // Save original helpfile.
+  try
+    Application.HelpFile := ReadRegData(HKLM, REG_BROKER, 'BrokerDr') +
+                           '\clagent.hlp';      // Identify ConnectTo helpfile.
+    with frmSignonConfig do
+    begin
+      // set selections for entry to form
+      rgrIntroBackClr.ItemIndex := 0;   // Current Background
+      rgrWindowPosition.ItemIndex := StrToInt(Piece(InitialValues.Position,U,1));
+      rgrWindowSize.ItemIndex := StrToInt(Piece(InitialValues.Size,U,1));
+         // initialize font values to current settings
+      FIntroFontValue := InitialValues.IntroFont;
+      FIntroTextColor := InitialValues.TextColor;
+      FIntroFontStyles := InitialValues.IntroFontStyles;
+
+      ShowApplicationAndFocusOK(Application);
+      ModalValue := frmSignonConfig.ShowModal;
+      if ModalValue = mrOK then  // establish changes for user
+      begin
+        UserClickedOK
+      end
+      else if ModalValue = mrIgnore then  // restore default values
+        ResetToDefaults;
+    end;    // with SignonForm
+    Result := ModalValue;
+  finally
+    frmSignonConfig.Free;   // Release;  jli 041104
+    Application.HelpFile := OrigHelp;  // Restore helpfile.
+  end;
+end;
+
+{
+ called if user changes selection for Background Color
+   selection 0 is to current value
+   selection 1 is to select new color
+}
+procedure TSignonConfiguration.IntroBackColor;
+var
+  frmSignonDialog: TfrmSignonDialog;
+  OldHandle: THandle;
+begin
+  OldHandle := GetForegroundWindow;
+  if frmSignonConfig.rgrIntroBackClr.ItemIndex = 1 then
+  begin
+    frmSignonDialog := TfrmSignonDialog.Create(Application);
+//    ShowApplicationAndFocusOK(Application);
+      SetForegroundWindow(frmSignonDialog.Handle);
+    if frmSignonDialog.ShowModal = mrOK then
+      FIntroBackColor := clWindow
+    else
+    begin
+      ShowApplicationAndFocusOK(Application);
+      if IsSharedBroker then
+        frmSignonConfig.WindowState := wsMinimized;
+      if frmSignonConfig.ColorDialog1.Execute then
+        FIntroBackColor := frmSignonConfig.ColorDialog1.Color;
+      frmSignonConfig.WindowState := wsNormal;
+    end;
+  end
+  else
+    FIntroBackColor := InitialValues.BackColor;
+  SetForegroundWindow(OldHandle);
+end;
+
+{ called if user selects to change font for signon form }
+procedure TSignonConfiguration.FontDialog;
+var
+  frmSignonDialog: TfrmSignonDialog;
+  OldHandle: THandle;
+  FFontValue: TFont;
+begin
+  FFontValue := TFont.Create;
+  OldHandle := GetForegroundWindow;
+  try
+    FFontValue.Name := InitialValues.Font.Name;
+    FFontValue.Size := InitialValues.Font.Size;
+    FFontValue.Style := InitialValues.Font.Style;
+    FFontValue.Color := InitialValues.Font.Color;
+    frmSignonDialog := TfrmSignonDialog.Create(Application);
+    frmSignonDialog.Label1.Caption := 'Do you want to use the Default Font face and size?';
+  //  ShowApplicationAndFocusOK(Application);
+
+    SetForegroundWindow(frmSignonDialog.Handle);
+    if frmSignonDialog.ShowModal = mrOK then
+      FFontValue := SignonDefaults.Font
+    else
+    begin
+      // initialize font to current values
+      frmSignonConfig.FontDialog1.Font.Color := InitialValues.Font.Color;
+      frmSignonConfig.FontDialog1.Font.Name := InitialValues.Font.Name;
+      frmSignonConfig.FontDialog1.Font.Size := InitialValues.Font.Size;
+      frmSignonConfig.FontDialog1.Font.Style := InitialValues.Font.Style;
+      ShowApplicationAndFocusOK(Application);
+      if IsSharedBroker then
+        frmSignonConfig.WindowState := wsMinimized;
+      if frmSignonConfig.FontDialog1.Execute then
+        FFontValue := frmSignonConfig.FontDialog1.Font;
+      frmSignonConfig.WindowState := wsNormal;
+    end;
+    FIntroFontValue := FFontValue.Name + U + IntToStr(FFontValue.Size);
+    FIntroFontStyles := StoreFontStyle(FFontValue.Style);
+    FIntroTextColor := FFontValue.Color;
+  finally
+    FFontValue.Free;
+    SetForegroundWindow(OldHandle);
+  end;
+end;
+
+procedure TSignonConfiguration.ResetToDefaults;
+begin
+  if MessageDlg('Are you sure you want to reset all settings to their defaults?',
+                mtWarning, [mbNo, mbYes], 0) = mrYes then
+  begin
+       // P31 remove setting of default values into registry -
+       //     remove entries from registry and use default window in app
+    DeleteRegData(HKCU, REG_SIGNON, 'SignonPos');
+    DeleteRegData(HKCU, REG_SIGNON, 'SignonSiz');
+    DeleteRegData(HKCU, REG_SIGNON, 'IntroBackClr');
+    DeleteRegData(HKCU, REG_SIGNON, 'IntroTextClr');
+    DeleteRegData(HKCU, REG_SIGNON, 'IntroTextFont');
+    DeleteRegData(HKCU, REG_SIGNON, 'IntroTextStyle');
+    strPosition := '0';
+    strSize := '0';
+    // Restore values to Defaults at Signon
+    InitialValues.SetEqual(SignonDefaults);
+
+    UpdateWindow;
+  end;
+end;
+
+procedure TSignonConfiguration.UserClickedOK;
+var
+  JPosition: Integer;
+  JSize: Integer;
+begin
+  JPosition := frmSignonConfig.rgrWindowPosition.ItemIndex;
+  JSize := frmSignonConfig.rgrWindowSize.ItemIndex;
+
+  if JPosition = 0 then
+    FPosition := '0'
+  else
+    FPosition := IntToStr(JPosition)+U+IntToStr(frmSignon.Top)+U+IntToStr(frmSignon.Left);
+  strPosition := FPosition;
+
+  if JSize = 0 then
+    FSize := '0'
+  else
+    FSize := IntToStr(JSize)+U+IntToStr(frmSignon.Width)+U+IntToStr(frmSignon.Height);
+  strSize := FSize;
+
+  if FIntroBackColor <> InitialValues.BackColor then
+  begin
+    InitialValues.BackColor := FIntroBackColor;
+    if InitialValues.BackColor <> SignonDefaults.BackColor then
+      WriteRegData(HKCU, REG_SIGNON, 'IntroBackClr',IntToStr(FIntroBackColor))
+    else
+      DeleteRegData(HKCU, REG_SIGNON, 'IntroBackClr');
+  end;
+
+  if FIntroTextColor <> InitialValues.TextColor then
+  begin
+    InitialValues.TextColor := FIntroTextColor;
+    if InitialValues.BackColor <> SignonDefaults.BackColor then
+      WriteRegData(HKCU, REG_SIGNON, 'IntroTextClr',IntToStr(FIntroTextColor))
+    else
+      DeleteRegData(HKCU, REG_SIGNON, 'IntroTextClr');
+  end;
+
+  if FIntroFontValue <> InitialValues.IntroFont then
+  begin
+    InitialValues.IntroFont := FIntrofontValue;
+    if InitialValues.IntroFont <> SignonDefaults.IntroFont then
+      WriteRegData(HKCU, REG_SIGNON, 'IntroTextFont',FIntroFontValue)
+    else
+      DeleteRegData(HKCU, REG_SIGNON, 'IntroTextFont');
+  end;
+
+  if FIntroFontStyles <> InitialValues.IntroFontStyles then
+  begin
+    InitialValues.IntroFontStyles := FIntrofontStyles;
+    if InitialValues.IntroFontStyles <> SignonDefaults.IntroFontStyles then
+      WriteRegData(HKCU, REG_SIGNON, 'IntroTextStyle',FIntroFontStyles)
+    else
+      DeleteRegData(HKCU, REG_SIGNON, 'IntroTextStyle');
+  end;
+
+  if FPosition <> InitialValues.Position then
+  begin
+    InitialValues.Position := FPosition;
+     if InitialValues.Position <> SignonDefaults.Position then
+      WriteRegData(HKCU, REG_SIGNON, 'SignonPos',FPosition)
+    else
+      DeleteRegData(HKCU, REG_SIGNON, 'SignonPos');
+  end;
+
+  if FSize <> InitialValues.Size then
+  begin
+    InitialValues.Size := FSize;
+    if InitialValues.Size <> SignonDefaults.Size then
+      WriteRegData(HKCU, REG_SIGNON, 'SignonSiz',FSize)
+    else
+      DeleteRegData(HKCU, REG_SIGNON, 'SignonSiz');
+  end;
+
+  UpdateWindow;
+end;
+
+constructor TSignonConfiguration.Create;
+begin
+  inherited;
+  if SignonDefaults = nil then
+    SignonDefaults := TSignonValues.Create;
+  if InitialValues = nil then
+    InitialValues := TSignonValues.Create;
+
+end;
+
+procedure TSignonConfiguration.UpdateWindow;
+begin
+  // TODO -cMM: default body inserted
+    frmSignon.IntroText.Color := InitialValues.BackColor;
+    frmSignon.IntroText.Font.Name := InitialValues.Font.Name;
+    frmSignon.IntroText.Font.Size := InitialValues.Font.Size;
+    frmSignon.IntroText.Font.Style := InitialValues.Font.Style;
+    frmSignon.IntroText.Font.Color := InitialValues.Font.Color;
+    frmSignon.Left := SignonDefaults.Left;
+    frmSignon.Top := SignonDefaults.Top;
+    frmSignon.Width := SignonDefaults.Width;
+    frmSignon.Height := SignonDefaults.Height;
+end;
+
+procedure TSignonValues.Clear;
+begin
+    FHeight := 0;
+    FWidth := 0;
+    FTextColor := clWindowText;
+    FPosition := '';
+    FSize := '';
+    FIntroFont := '';
+    FIntroFontStyles := '';
+    FBackColor := clWindow;
+    FFont.Name := 'Courier New' ;
+    FFont.Size := 11;
+    FFont.Style := [];
+end;
+
+constructor TSignonValues.Create;
+begin
+  inherited;
+  FFont := TFont.Create;
+end;
+
+destructor TSignonValues.Destroy;
+begin
+  FFont.Free;
+  inherited;
+end;
+
+procedure TSignonValues.SetSize(const Value: String);
+begin
+  FSize := Value;
+  if Value <> '0' then
+  begin
+    FWidth := StrToInt(Piece(Value,U,2));
+    FHeight := StrToInt(Piece(Value,U,3));
+  end;
+end;
+
+procedure TSignonValues.SetPosition(const Value: String);
+begin
+  FPosition := Value;
+  if Value <> '0' then
+  begin
+    FTop := StrToInt(Piece(Value,U,2));
+    FLeft := StrToInt(Piece(Value,U,3));
+  end;
+end;
+
+procedure TSignonValues.SetIntroFont(const Value: String);
+begin
+  FIntroFont := Value;
+  FFont.Name := Piece(Value,U,1);
+  FFont.Size := StrToInt(Piece(Value,U,2));
+end;
+
+procedure TSignonValues.SetIntroFontStyles(const Value: String);
+begin
+  FIntroFontStyles := Value;
+  if Value <> '' then
+    FFont.Style := RestoreFontStyles(Value)
+  else
+    FFont.Style := [];
+end;
+
+procedure TSignonValues.SetEqual(EqualToValue: TSignonValues);
+begin
+  BackColor := EqualToValue.BackColor;
+  Font.Name := EqualToValue.Font.Name;
+  Font.Size := EqualToValue.Font.Size;
+  FontStyles := EqualToValue.FontStyles;
+  Height := EqualToValue.Height;
+  IntroFont := EqualToValue.IntroFont;
+  IntroFontStyles := EqualToValue.IntroFontStyles;
+  Left := EqualToValue.Left;
+  Position := EqualToValue.Position;
+  Size := EqualToValue.Size;
+  TextColor := EqualToValue.TextColor;
+  Top := EqualToValue.Top;
+  Width := EqualToValue.Width;
+end;
+
+procedure TSignonValues.SetFont(Value: TFont);
+begin
+  FFont := Value;
+  FIntroFont := Value.Name+U+IntToStr(Value.Size);
+  FIntroFontStyles := StoreFontStyle(FFont.Style)
+end;
+
+procedure TSignonValues.SetTextColor(Value: LongInt);
+begin
+  FTextColor := Value;
+  FFont.Color := Value;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker.pas	(revision 1676)
@@ -0,0 +1,769 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Kevin Meldrum, Travis Hilton, Joel Ivey
+	Description: Describes TSharedRPCBroker class.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit SharedRPCBroker;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  RPCSharedBrokerSessionMgr1_TLB_SRB, Trpcb, ActiveX, Extctrls;
+  // TRPCB is only used for data classes like TParams. There is no TRPCBroker dependency.
+
+
+type
+  TLogout = procedure () of object;
+
+  TOnConnectionDropped = procedure (ConnectionIndex: Integer; ErrorText: WideString) of object;
+{
+  TOnClientConnected =  procedure (uniqueClientId: Integer) of object;
+  TOnClientDisconnected =  procedure (uniqueClientId: Integer) of object;
+}
+
+// TSharedBrokerDataCollector is a data container class that collects all RPC call parameters BEFORE
+// an RPC call is made. When the actual RPC call is made all of the parameters are turned into a WideString
+// and passed through the Out-of-process COM interface to the TSharedBroker class found in VistASessionMgr.exe.
+// After the call the results are put back into Results which is a TStrings class like in TRPCBroker.
+// The parameters are stored in a local TParams member just like in TRPCBroker.
+// All Connections to the backend Mumps server are done through TSharedBroker which actually instantiates a real
+// TRPCBroker and uses it for the connection.
+
+// Thus this class becomes a Delphi Component that wraps all of the data and keeps performance as high as possible.
+// If these calls were to be moved into the VistASessionMgr.exe then there would be two major problems
+//      1. Performance suffers when marshaling data across an out-of-process COM connection
+//      2. It is impossible to keeps the same Params and Results access interface that exists in TRPCBroker
+//         since the COM interface will not support structured data.
+
+{
+  Modified 11/27/2001 jli to TSharedRPCBroker from TSharedBrokerDataCollector,
+  and changed as derived from TRPCBroker instead of TComponent, since other
+  components have properties which are of Type TRPCBroker and the
+  TSharedBrokerDataCollector derived from TComponent can't be used as a value
+  for those properties.
+}
+
+
+//  TSharedBrokerDataCollector = class(TComponent)
+  TSharedRPCBroker = class(TRPCBroker)
+  private
+{    FAccessVerifyCodes: TAccessVerifyCodes;
+    FClearParameters: Boolean;
+    FClearResults: Boolean;
+    FConnected: Boolean;
+    FConnecting: Boolean;
+    FCurrentContext: String;
+    FDebugMode: Boolean;
+    FListenerPort: integer;
+    FParams: TParams;
+    FResults: TStrings;
+    FRemoteProcedure: TRemoteProc;
+    FRpcVersion: TRpcVersion;
+    FServer: TServer;
+    FSocket: integer;
+    FRPCTimeLimit : integer;    //for adjusting client RPC duration timeouts
+    FPulse        : TTimer;     //P6
+    FKernelLogIn  : Boolean;    //p13
+    FLogIn: TVistaLogIn;    //p13
+    FUser: TVistaUser; //p13
+    FOnRPCBFailure: TOnRPCBFailure;
+    FShowErrorMsgs: TShowErrorMsgs;
+    FRPCBError:     String;
+}
+    FAllowShared:     Boolean;
+    FVistaSession:    ISharedBroker; // TSharedBroker;
+    FCurrRPCVersion:  TRpcVersion;
+//    FOnLogout:        TNotifyEvent;
+    FOnLogout:        TLogout;
+    FOnConnectionDropped: TOnConnectionDropped;
+{
+    FOnClientConnected: TOnClientConnected;
+    FOnClientDisconnected: TOnClientDisconnected;
+}
+    FSinkCookie: LongInt;
+    FKernelLogin: Boolean;
+    FRPCTimeLimit: integer;
+    FSocket: Integer;
+    FRPCBError: String;
+    FOnRPCBFailure: TOnRPCBFailure;
+    FLogin: TVistaLogin;
+    FUser: TVistaUser;
+  protected
+    procedure SetLoginStr(Str: string); virtual;
+    procedure SetUserStr(Str: String);
+    procedure      SetConnected(Value: Boolean); override;
+    function       GetConnected: Boolean;
+    procedure      SetResults(Value: TStrings); override;
+    procedure      SetClearParameters(Value: Boolean); override;
+    procedure      SetClearResults(Value: Boolean); override;
+    procedure      SetRPCTimeLimit(Value: integer); override;  //Screen changes to timeout.
+//    procedure      SetOnLogout(EventHandler: TNotifyEvent);
+    procedure      SetOnLogout(EventHandler: TLogout);
+    function       GetRpcVersion:TRpcVersion;
+    procedure      SetRpcVersion(version: TRpcVersion);
+    function   LoginStr: String;
+{
+    procedure      SetRPC(Value: TRemoteProc);
+    function       GetRPC: TRemoteProc;
+}
+  public
+    constructor    Create(AOwner: TComponent); override;
+    destructor     Destroy; override;
+//    procedure      OnLogoutEventHandlerDefault(Sender: TObject); virtual;
+    procedure      OnLogoutEventHandlerDefault; virtual;
+    procedure      OnConnectionDroppedHandler(ConnectionIndex: Integer; ErrorText: WideString); virtual;
+    function       GetBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer): Integer;
+
+    property    RPCBError: String read FRPCBError write FRPCBError;
+    property    OnRPCBFailure: TOnRPCBFailure read FOnRPCBFailure write FOnRPCBFailure;
+
+    property User: TVistaUser read FUser write FUser;  // jli
+    property Login: TVistaLogin read FLogin write FLogin;  // jli
+    property OnConnectionDropped: TOnConnectionDropped read FOnConnectionDropped write FOnConnectionDropped;
+{
+    property OnClientConnected: TOnClientConnected read FOnClientConnected write FOnClientConnected;
+    property OnClientDisconnected: TOnClientDisconnected read FOnClientDisconnected write FOnClientDisconnected;
+}
+  published
+    // Call is he invocation entry point of the RPC call.
+    // The RPC Name, params, server and listener port must all be set up before
+    // making this call
+    procedure      Call; override;
+
+    // lstCall is similar to the method Call, but puts Results in OutputBuffer
+    // lstCall actually calls Call so it is really more efficient to use the
+    // Call method and get the results from the Results property
+    procedure      lstCall(OutputBuffer: TStrings); override;
+
+    // pchCall makes an RPC call and returns the results in a PChar;
+    // pchCall actually calls the Call method and then converts the results
+    // to PChar before returning.
+    // Making a call to Call and then using the Results property to get
+    // results is more efficient
+    function       pchCall: PChar; override;
+
+    // strCall makes an RPC call and returns the results in a string;
+    // strCall actually calls the Call method and then converts the results
+    // to a string before returning.
+    // Making a call to Call and then using the Results property to get
+    // results is more efficient
+    function       strCall: string; override;
+
+    // CreateContext sets up the context for the RPC call on the M server
+    function       CreateContext(strContext: string): boolean; override;
+
+
+{
+    // Server sets the server name or direct IP address
+    // Must be set BEFORE making the connection or the default on the system
+    // will be used
+    property       Server: TServer read FServer write FServer;
+}
+    // AllowShared allows this connection to share with and existing one
+    // Must be set BEFORE making a connection
+    property       AllowShared: Boolean read FAllowShared write FAllowShared;
+{
+    // DebugMode turns the debug mode on or off.
+    // Must be set BEFORE making an RPC Call
+    property       DebugMode: boolean read FDebugMode write FDebugMode default False;
+
+    // ListenerPort sets the listener port on the server
+    // Must be set BEFORE making a connection
+    property       ListenerPort: integer read FListenerPort write FListenerPort;
+
+    // Param accesses the parameters for the RPC call.
+    // Set them BEFORE making the RPC call
+    property       Param: TParams read FParams write FParams;
+
+    // Results contains the results of the most recent RPC call
+    property       Results: TStrings read FResults write SetResults;
+
+    // RemoteProcedure sets the name of the RPC to be made
+    // Set this BEFORE making the Call
+    property       RemoteProcedure: TRemoteProc read FRemoteProcedure1 write FRemoteProcedure1;
+//    property       RemoteProcedure: TRemoteProc read GetRPC write SetRPC;
+
+    // The RpcVersion property is used to tell the M server on the other end of the RPCBroker connection
+    // which version of the RPC call it is expecting the M server to service. This is for the  Client
+    // to specify.
+    // Note: This is NOT the version of the RPCBroker!
+    property       RpcVersion: TRpcVersion read GetRpcVersion write SetRpcVersion;
+
+    // ClearParameters clears out the params data if set to true so one can start over easily with
+    // new parameters
+    property       ClearParameters: boolean read FClearParameters write SetClearParameters;
+
+    // ClearResults clears out the Results data if set to true. This is from legacy code. In
+    // the current implementation the Results from a recent call overwrite the current Results anyway.
+    property       ClearResults: boolean read FClearResults write SetClearResults;
+}
+    // If Connected is set to True then it makes a BrokerConnection call to the VistASessionMgr.
+//    property       Connected: boolean read FConnected write SetConnected;
+    property        Connected: boolean  read GetConnected write SetConnected default False;
+
+    // RPCTimeLimit allows the application to change the network operation timeout prior to a call.
+    // This may be useful during times when it is known that a certain RPC, by its nature,
+    // can take a significant amount of time to execute. The value of this property is an
+    // integer that can not be less than 30 seconds nor greater that 32767 seconds.
+    // Care should be taken when altering this value, since the network operation will block
+    // the application until the operation finishes or the timeout is triggered.
+    property       RPCTimeLimit : integer read FRPCTimeLimit write SetRPCTimeLimit;
+
+    // OnLogout sets/gets the OnLogout event handler to be called whenever the VistASessionMgr
+    // logs out.
+//    property       OnLogout: TNotifyEvent read FOnLogout write SetOnLogout;
+    property       OnLogout: TLogout read FOnLogout write SetOnLogout;
+
+    property       Socket: Integer  read FSocket;
+
+    property KernelLogin: Boolean read FKernelLogin write FKernelLogin default True;  // jli
+
+  end;
+
+implementation
+
+uses ComObj, MfunStr, SharedRPCBrokerSink, fRPCBErrMsg;
+
+const
+  {Keys}
+  REG_BROKER = 'Software\Vista\Broker';
+  REG_VISTA  = 'Software\Vista';
+  REG_SIGNON = 'Software\Vista\Signon';
+  REG_SERVERS = 'Software\Vista\Broker\Servers';
+
+
+procedure TSharedRPCBroker.SetLoginStr(Str: string);
+
+   function TorF(Value: String): Boolean;
+   begin
+     Result := False;
+     if Value = '1' then
+       Result := True;
+   end;
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+var
+  DivStr: String;
+  StrFS: String;
+  StrGS: String;
+  ModeVal: String;
+  I: Integer;
+  DivisionList: TStringList;
+begin
+  StrFS := SEP_FS;
+  StrGS := SEP_GS;
+  with FLogin do
+  begin
+    LoginHandle := Piece(Str,StrFS,1);
+    NTToken := Piece(Str,StrFS,2);
+    AccessCode := Piece(Str,StrFS,3);
+    VerifyCode := Piece(Str,StrFS,4);
+    Division := Piece(Str,StrFS,5);
+    ModeVal := Piece(Str,StrFS,6);
+    DivStr := Piece(Str,StrFS,7);
+    MultiDivision := TorF(Piece(Str,StrFS,8));
+    DUZ := Piece(Str,StrFS,9);
+    PromptDivision := TorF(Piece(Str,StrFS,10));
+    ErrorText := Piece(Str,StrFS,11);
+    if ModeVal = '1' then
+      Mode := lmAVCodes
+    else if ModeVal = '2' then
+      Mode := lmAppHandle
+    else if ModeVal = '3' then
+      Mode := lmNTToken;
+    if DivStr <> '' then
+    begin
+      DivisionList := TStringList.Create;
+      try
+        I := 1;
+        while Piece(DivStr,StrGS,I) <> '' do
+        begin
+          DivisionList.Add(Piece(DivStr,StrGS,I));
+          Inc(I);
+        end;    // while
+        DivList.Assign(DivisionList);
+      finally
+        DivisionList.Free;
+      end;
+    end;
+  end;  // with
+end;
+
+procedure TSharedRPCBroker.SetUserStr(Str: String);
+const
+  SEP_FS = #28;
+var
+  VC: String;
+  StrFS: String;
+begin
+  StrFS := SEP_FS;
+   with User do
+   begin
+     DUZ := Piece(Str,StrFS,1);
+     Name := Piece(Str,StrFS,2);
+     StandardName := Piece(Str,StrFS,3);
+     Division := Piece(Str,StrFS,4);
+     VC := Piece(Str,StrFS,5);
+     Title := Piece(Str,StrFS,6);
+     ServiceSection := Piece(Str,StrFS,7);
+     Language := Piece(Str,StrFS,8);
+     DTime := Piece(Str,StrFS,9);
+     if VC = '0' then
+       VerifyCodeChngd := False
+     else if VC = '1' then
+       VerifyCodeChngd := True;
+   end;    // with
+end;
+  
+function   TSharedRPCBroker.LoginStr: string;
+   function TorF1(Value: Boolean): String;
+   begin
+     Result := '0';
+     if Value then
+       Result := '1';
+   end;
+   
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+var
+  Str: String;
+  ModeVal: String;
+  DivLst: String;
+  MultiDiv: String;
+  PromptDiv: String;
+  StrFS, StrGS: String;
+begin
+  Str := '';
+    with FLogin do
+    begin
+      StrFS := SEP_FS;
+      StrGS := SEP_GS;
+      ModeVal := '';
+      if Mode = lmAVCodes then
+        ModeVal := '1'
+      else if Mode = lmAppHandle then
+        ModeVal := '2'
+      else if Mode = lmNTToken then
+        ModeVal := '3';
+      DivLst := '';
+      MultiDiv := TorF1(MultiDivision);
+      PromptDiv := TorF1(PromptDivision);
+      Str := LoginHandle + StrFS + NTToken + StrFS + AccessCode + StrFS;
+      Str := Str + VerifyCode + StrFS + Division + StrFS + ModeVal + StrFS;
+      Str := Str + DivLst + StrFS + MultiDiv + StrFS + DUZ + StrFS;
+      Str := Str + PromptDiv + StrFS + ErrorText + StrFS;
+    end;  // with
+  Result := Str;
+end;
+  // Constructor and Destructor implemented here
+constructor TSharedRPCBroker.Create(AOwner: TComponent);
+const
+  ProgID = 'RPCSharedBrokerSessionMgr.Application';
+//var
+//  brokerError: ISharedBrokerErrorCode;
+//  regResult: WideString;
+begin
+  inherited Create(AOwner);
+  FConnected := False;
+  DebugMode := False;
+  FParams := TParams.Create(Self);
+//  FResults := TStringList.Create;
+  RpcVersion := '0';
+  FCurrRpcVersion := '0';
+  FRPCTimeLimit := MIN_RPCTIMELIMIT;                   // MIN_RPCTIMELIMIT comes from TRPCBroker (30 seconds)
+//  FAllowShared := False;
+  FOnLogout := OnLogoutEventHandlerDefault;            // Supply this one incase the application doesn't
+  FOnConnectionDropped := OnConnectionDroppedHandler;
+  Server := '';
+  ListenerPort := 0;
+
+  FKernelLogin := True;            // jli
+  FUser := TVistaUser.Create;  // jli
+  FLogin := TVistaLogin.Create(Self);  // jli
+
+//  CoInitialize(nil);
+{  try
+    if not (CoInitialize(nil) = S_OK) then
+      ShowMessage('CoInitialize Problem!');
+  except
+  end;
+}
+end;
+
+destructor TSharedRPCBroker.Destroy;
+begin
+  if Connected then  // FConnected
+  begin
+    Connected := False;
+    FConnected := False;
+  end;
+  FParams.Free;
+  FParams := nil;
+{
+  FResults.Free;
+  FResults := nil;
+}
+  if FVistaSession <> nil then
+  begin
+//    FVistaSession.Free;
+    FVistaSession := nil;
+  end;
+{
+  FUser.Free;
+  FLogin.Free;
+}
+  inherited;
+end;
+
+//procedure TSharedRPCBroker.OnLogoutEventHandlerDefault(Sender: TObject);
+procedure TSharedRPCBroker.OnLogoutEventHandlerDefault;
+begin
+  // This event handler will get called if the application that uses
+  // this component does not supply one.
+  SendMessage(Application.MainForm.Handle,WM_CLOSE,0,0);
+end;
+
+procedure TSharedRPCBroker.OnConnectionDroppedHandler(ConnectionIndex: Integer; ErrorText: WideString);
+var
+  Str: String;
+//  BrokerError: EBrokerError;
+begin
+  Str := ErrorText;
+  RPCBShowErrMsg(ErrorText);
+//  FConnected := False;
+  // Raising an error here returns an error 'The Server Threw an exception' back into the server
+//  BrokerError := EBrokerError.Create(Str);
+//  raise BrokerError;
+end;
+
+// Published Methods implemented here
+procedure TSharedRPCBroker.Call;
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+  SEP_US = #30;
+  SEP_RS = #31;
+var
+  i, j, ErrCode: Integer;
+  rpcParams, ASub, AVal: string;
+  ReturnedResults: WideString;
+  AnError: EBrokerError;
+  ErrCode1: ISharedBrokerErrorCode;
+begin
+  try
+  rpcParams := '';
+  if not Connected then Connected := True;
+  for i := 0 to Pred(Param.Count) do
+  begin
+    case Param[i].PType of
+      literal: rpcParams := rpcParams + 'L' + SEP_FS;
+    reference: rpcParams := rpcParams + 'R' + SEP_FS;
+         list: rpcParams := rpcParams + 'M' + SEP_FS;
+    else       rpcParams := rpcParams + 'U' + SEP_FS;
+    end; {case}
+    if Param[i].PType = list then
+    begin
+      for j := 0 to Pred(Param[i].Mult.Count) do
+      begin
+        ASub := Param[i].Mult.Subscript(j);
+        AVal := Param[i].Mult[ASub];
+        rpcParams := rpcParams + ASub + SEP_US + AVal + SEP_RS;
+      end;
+      rpcParams := rpcParams + SEP_GS;
+    end else
+    begin
+      rpcParams := rpcParams + Param[i].Value + SEP_GS;
+    end; {if Param[i]...else}
+  end; {for i}
+  if RpcVersion <> FCurrRpcVersion then
+    FVistaSession.Set_RPCVersion(RPCVersion);
+
+  RPCBError := '';
+  
+  ErrCode1 := FVistaSession.BrokerCall(RemoteProcedure, rpcParams, RPCTimeLimit, ReturnedResults, ErrCode);
+
+  if ClearParameters = true then
+    Param.Clear;
+
+  if ErrCode1 = Success then
+    Results.Text := ReturnedResults
+  else
+  begin
+    Results.Text := '';
+    RPCBError := FVistaSession.RpcbError;
+    if Assigned(FOnRPCBFailure) then       // p13
+      FOnRPCBFailure(Self)                 // p13
+    else if ShowErrorMsgs = semRaise then
+    begin
+      AnError := EBrokerError.Create(FRPCBError);
+      raise AnError;
+    end
+    else
+      exit;
+  end; {if ErrCode...else}
+  except
+    on e: Exception do
+    begin
+      AnError := EBrokerError.Create('Error: ' + e.Message);
+      raise AnError;
+    end;
+  end;
+end;
+
+function TSharedRPCBroker.CreateContext(strContext: string): boolean;
+var
+  Intval: Integer;
+begin
+  // hides the RPCBroker CreateContext
+  if not Connected then SetConnected(TRUE);  // FConnected
+
+  Intval := FVistaSession.BrokerSetContext(strContext);
+  Result := Intval = 1;
+end;
+
+procedure TSharedRPCBroker.lstCall(OutputBuffer: TStrings);
+begin
+  Call;
+  OutputBuffer.Text := Results.Text;
+end;
+
+function TSharedRPCBroker.pchCall: PChar;
+begin
+  Call;
+  Result := Results.GetText;
+end;
+
+function TSharedRPCBroker.strCall: string;
+begin
+  Call;
+  Result := Results.Text;
+end;
+
+procedure TSharedRPCBroker.SetConnected(Value: Boolean);
+var
+  uniqueClientId: Integer;
+  brokerError: ISharedBrokerErrorCode;
+  regResult: WideString;
+  CurrWindow: HWND;
+  AnError: EBrokerError;
+  UserStr: String;
+  RPCError: WideString;
+  BrokerErrorVal: EBrokerError;
+  ShowErrMsgs: ISharedBrokerShowErrorMsgs;
+  LoginStrX: WideString;
+  SBSink: TSharedRPCBrokerSink;
+begin
+  try
+  { call connect method for VistaSession }
+  if Value then
+  begin
+    if FVistaSession = nil then
+    begin
+      FVistaSession := CreateComObject(CLASS_SharedBroker) as ISharedBroker;  // TSharedBroker.Create(self);
+//      FVistaSession.Connect;
+  //No need to keep hold of event sink. It will be destroyed
+  //through interface reference counting when the client
+  //disconnects from the server in the form's OnDestroy event handler
+      SBSink := TSharedRPCBrokerSink.Create;
+      SBSink.Broker := Self;
+      InterfaceConnect(FVistaSession, ISharedBrokerEvents, SBSink, FSinkCookie);
+
+//      ConnectEvents(FVistaSession);
+{      If Assigned(FOnLogout) then
+        FVistaSession.OnLogout := FOnLogout;
+      if Assigned(FOnConnectionDropped) then
+        FVistaSession.OnConnectionDropped := OnConnectionDroppedHandler;
+}
+      regResult := '';
+      brokerError := FVistaSession.ReadRegDataDefault(HKLM,REG_BROKER,'ClearParameters','1',regResult);
+      Assert(brokerError = Success);
+
+      ClearParameters := boolean(StrToInt(regResult));  // FClearParameters
+
+      brokerError := FVistaSession.ReadRegDataDefault(HKLM,REG_BROKER,'ClearResults','1',regResult);
+      Assert(brokerError = Success);
+      ClearResults := boolean(StrToInt(regResult));  // FClearResults
+
+//      DebugMode := False;
+//     FParams := TParams.Create(Self);
+//      FResults := TStringList.Create;  ???
+
+      if Server = '' then
+      begin
+        brokerError := FVistaSession.ReadRegDataDefault(HKLM,REG_BROKER,'Server','BROKERSERVER',regResult);
+        Assert(brokerError = Success);
+        Server := regResult;
+      end;
+
+      if ListenerPort = 0 then
+      begin
+        brokerError := FVistaSession.ReadRegDataDefault(HKLM,REG_BROKER,'ListenerPort','9000',regResult);
+        Assert(brokerError = Success);
+        ListenerPort := StrToInt(regResult);
+      end;
+
+      RpcVersion := '0';  // TODO: Remove this when the property is remove. It is UESLESS!
+
+//      FRPCTimeLimit := MIN_RPCTIMELIMIT; //  MIN_RPCTIMELIMIT comes from TRPCBroker (30 seconds)
+//      AllowShared := True;
+    end;
+
+    if FConnected <> True then  // FConnected
+    begin
+     // Connect to the M server through the COm Server
+      CurrWindow := GetActiveWindow;
+      if AccessVerifyCodes <> '' then   // p13 handle as AVCode single signon
+      begin
+        Login.AccessCode := Piece(AccessVerifyCodes, ';', 1);
+        Login.VerifyCode := Piece(AccessVerifyCodes, ';', 2);
+        Login.Mode := lmAVCodes;
+        FKernelLogIn := False;
+      end;
+      if ShowErrorMsgs = semRaise then
+        ShowErrMsgs := isemRaise
+      else
+        ShowErrMsgs := isemQuiet;
+      BrokerError := GeneralFailure;
+      LoginStrX := WideString(LoginStr);
+      try
+        brokerError := FVistaSession.BrokerConnect(ParamStr(0),BrokerClient,Server + ':' + IntToStr(ListenerPort),
+                                                 DebugMode, FAllowShared, FKernelLogin, ShowErrMsgs, RPCTimeLimit, LoginStrX, uniqueClientId, RPCError);
+      except
+      end;
+      FRPCBError := RPCError;
+      SetLoginStr(LoginStrX);
+      ShowApplicationAndFocusOK(Application);
+      SetForegroundWindow(CurrWindow);
+      if brokerError = Success then
+      begin
+        FConnected := True;  // FConnected
+        FSocket := 1;  // temporarily handle socket until it can be pulled from Shared Broker;
+        UserStr := FVistaSession.User;
+        SetUserStr(UserStr);
+      end
+      else
+      begin
+        if Assigned(FOnRPCBFailure) then       // p13
+            FOnRPCBFailure(Self)                 // p13
+        else if ShowErrorMsgs = semRaise then
+        begin
+          BrokerErrorVal := EBrokerError.Create(FRPCBError);
+          raise BrokerErrorVal;
+        end;
+      end;
+    end;
+
+  end else
+  begin
+    if FVistaSession<>nil then
+    begin
+      if FConnected = true then  // FConnected
+      begin
+        // Lets make the OnLogout event handler nil to eliminate
+        // circularity problems before we do the disconnects.
+        OnLogout := nil;
+
+        FVistaSession.BrokerDisconnect;  // Disconnect from the Broker
+//        FVistaSession.Disconnect;        // Disconnect from the COM server
+        FSocket := 0;   // temporarily handle socket until it can be pulled from Shared Broker
+      end;
+//      FVistaSession.Free;
+      InterfaceDisconnect(FVistaSession, ISharedBrokerEvents, FSinkCookie);
+      FVistaSession := nil;
+    end;
+    FConnected := False; // FConnected
+  end;
+  except
+    on e: Exception do
+    begin
+      AnError := EBrokerError.Create('Error: ' + e.Message);
+      raise AnError;
+    end;
+  end;
+end;
+
+procedure TSharedRPCBroker.SetResults(Value: TStrings);
+begin
+  Results.Assign(Value);  // FResults
+end;
+
+procedure TSharedRPCBroker.SetClearParameters(Value: Boolean);
+begin
+  if Value then Param.Clear;  // FParams
+  FClearParameters := Value;  // FClearParameters
+end;
+
+procedure TSharedRPCBroker.SetClearResults(Value: Boolean);
+begin
+  if Value then Results.Clear;  // FResults
+  FClearResults := Value; // FClearResults
+end;
+
+procedure TSharedRPCBroker.SetRPCTimeLimit(Value: integer);
+begin
+  if Value <> RPCTimeLimit then  // FRPCTimeLimit
+    if Value > MIN_RPCTIMELIMIT then
+      FRPCTimeLimit := Value  // FRPCTimeLimit
+    else
+      FRPCTimeLimit := MIN_RPCTIMELIMIT;  // FRPCTimeLimit
+end;
+
+//procedure TSharedRPCBroker.SetOnLogout(EventHandler: TNotifyEvent);
+procedure TSharedRPCBroker.SetOnLogout(EventHandler: TLogout);
+begin
+  FOnLogout := EventHandler;
+//  if FVistaSession <> nil then
+//    FVistaSession.OnLogout := FOnLogout;
+end;
+
+function  TSharedRPCBroker.GetRpcVersion: TRpcVersion;
+begin
+  if FVistaSession <> nil then Result := FVistaSession.RPCVersion else Result := '0';
+end;
+
+procedure  TSharedRPCBroker.SetRpcVersion(version: TRpcVersion);
+begin
+  if FVistaSession <> nil then FVistaSession.RPCVersion:= version;
+end;
+
+function TSharedRPCBroker.GetConnected: Boolean;
+begin
+  Result := FConnected;
+end;
+
+{
+procedure TSharedRPCBroker.SetRPC(Value: TRemoteProc);
+begin
+  RemoteProcedure := Value;
+end;
+
+function TSharedRPCBroker.GetRPC: TRemoteProc;
+begin
+  Result := FRemoteProcedure1;
+end;
+}
+{
+procedure Register;
+begin
+  RegisterComponents('Kernel', [TSharedBrokerDataCollector]);
+end;
+}
+
+function TSharedRPCBroker.GetBrokerConnectionIndexFromUniqueClientId(UniqueClientId: Integer): Integer;
+var
+  ConnectionIndex: Integer;
+begin
+  ConnectionIndex := -1;
+  if FVistaSession <> nil then
+    FVistaSession.GetActiveBrokerConnectionIndexFromUniqueClientId(UniqueClientId, ConnectionIndex);
+  Result := ConnectionIndex;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerReg.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerReg.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerReg.pas	(revision 1676)
@@ -0,0 +1,46 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Registers TSharedRPCBroker.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+
+unit SharedRPCBrokerReg;
+
+{$I IISBase.inc}
+
+interface
+
+procedure Register;
+
+implementation
+
+uses Classes,
+  {$IFDEF D6_OR_HIGHER}
+  DesignIntf, DesignEditors, DesignMenus,
+  {$ELSE}
+  DsgnIntf,
+  {$ENDIF}
+     //kt mod 6/29/07 Remove line --> ExptIntf, //Delphi units
+{$IFDEF D5_OR_HIGHER}
+     RPCSharedBrokerSessionMgr1_TLB,             //Broker units
+{$ENDIF}
+     SharedRPCBroker;
+
+
+procedure Register;
+begin
+
+{$IFDEF D5_OR_HIGHER}
+  RegisterComponents('Kernel',[TSharedRPCBroker, TSharedBroker]);
+{$ELSE}
+  RegisterComponents('Kernel',[TSharedRPCBroker]);
+{$ENDIF}
+
+end;
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerReg.~pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerReg.~pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerReg.~pas	(revision 1676)
@@ -0,0 +1,46 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Registers TSharedRPCBroker.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+
+unit SharedRPCBrokerReg;
+
+{$I IISBase.inc}
+
+interface
+
+procedure Register;
+
+implementation
+
+uses Classes,
+  {$IFDEF D6_OR_HIGHER}
+  DesignIntf, DesignEditors, DesignMenus,
+  {$ELSE}
+  DsgnIntf,
+  {$ENDIF}
+     ExptIntf, //Delphi units
+{$IFDEF D5_OR_HIGHER}
+     RPCSharedBrokerSessionMgr1_TLB,             //Broker units
+{$ENDIF}
+     SharedRPCBroker;
+
+
+procedure Register;
+begin
+
+{$IFDEF D5_OR_HIGHER}
+  RegisterComponents('Kernel',[TSharedRPCBroker, TSharedBroker]);
+{$ELSE}
+  RegisterComponents('Kernel',[TSharedRPCBroker]);
+{$ENDIF}
+
+end;
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerSink.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerSink.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBrokerSink.pas	(revision 1676)
@@ -0,0 +1,136 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Kevin Meldrum, Travis Hilton, Joel Ivey
+	Description: Provides Event Sink for 
+	             RPCSharedBrokerSessionMgr1.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit SharedRPCBrokerSink;
+
+interface
+uses
+  ComObj, SharedRPCBroker;
+
+type
+  TSharedRPCBrokerSink = class(TInterfacedObject, IUnknown, IDispatch)
+  private
+    FBroker: TSharedRPCBroker;
+  public
+    //IUnknown
+    //Method resolution clause to allow QueryInterface to be redefined
+    function IUnknown.QueryInterface = QueryInterface;
+    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
+    //IDispatch
+    function GetTypeInfoCount(out Count: Integer): HResult; stdcall;
+    function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall;
+    function GetIDsOfNames(const IID: TGUID; Names: Pointer;
+      NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall;
+    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
+      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
+  public
+    property Broker: TSharedRPCBroker read FBroker write FBroker;
+  end;
+
+implementation
+
+uses
+  Windows, ActiveX, RPCSharedBrokerSessionMgr1_TLB_SRB;
+
+function TSharedRPCBrokerSink.QueryInterface(const IID: TGUID; out Obj): HResult;
+begin
+  Result := E_NOINTERFACE;
+  //If events interface requested, return IDispatch
+  if IsEqualIID(IID, DIID_ISharedBrokerEvents) then
+  begin
+    if GetInterface(IDispatch, Obj) then
+      Result := S_OK
+  end
+  else
+    //Handle other interface requests normally
+
+    if GetInterface(IID, Obj) then
+      Result := S_OK
+end;
+
+function TSharedRPCBrokerSink.GetIDsOfNames(const IID: TGUID; Names: Pointer;
+  NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
+begin
+  Result := E_NOTIMPL
+end;
+
+function TSharedRPCBrokerSink.GetTypeInfo(Index, LocaleID: Integer;
+  out TypeInfo): HResult;
+begin
+  Result := E_NOTIMPL
+end;
+
+function TSharedRPCBrokerSink.GetTypeInfoCount(out Count: Integer): HResult;
+begin
+  Count := 0;
+  Result := S_OK
+end;
+
+function TSharedRPCBrokerSink.Invoke(DispID: Integer; const IID: TGUID;
+  LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
+  ArgErr: Pointer): HResult;
+var
+  Args: PVariantArgList;
+  ASharedBroker: ISharedBroker;
+  ConnectionIndex: Integer;
+  ErrorText: WideString;
+//  UniqueClientID: Integer;
+//  BrokerConnectionType: ISharedBrokerConnection;
+begin
+  Result := S_OK;
+  ConnectionIndex := 0;
+  // UniqueClientID := -1;
+
+  //This is called to trigger an event interface method, if implemented
+  //We need to check which one it is (by DispID) and do something sensible if we
+  //support the triggered event
+
+  //Both event methods happen to have the same parameters,
+  //so we can extract them just once to save duplication
+  Args := TDispParams(Params).rgvarg;
+  //Params are in reverse order:
+  //Last parameter is at pos. 0
+  //First parameter is at pos. cArgs - 1
+  If DispID = 1 then
+    ASharedBroker := IUnknown(OleVariant(Args^[0])) as ISharedBroker;
+  If DispID = 3 then
+  begin
+    // UniqueClientID := OleVariant(Args^[1]);
+    // BrokerConnectionType := OleVariant(Args^[0]);
+  end;
+  if DispID = 4 then
+  begin
+    // UniqueClientID := OleVariant(Args^[0]);
+  end;
+  If DispId = 8 then
+  begin
+    ConnectionIndex := OleVariant(Args^[1]);
+    ErrorText := OleVariant(Args^[0]);
+  end;
+  //This is called to trigger an event interface method, if implemented
+  //We need to check which one it is (by DispID) and do something sensible if we
+  //support the triggered event
+    case DispID of
+      1:  if Assigned(FBroker.OnLogout) then
+            FBroker.OnLogout;
+{
+      3:  if Assigned(FBroker.OnClientConnected) then
+            FBroker.OnClientConnected(UniqueClientID);
+      4:  if Assigned(FBroker.OnClientDisconnected) then
+            FBroker.OnClientDisconnected(UniqueClientID);
+}
+      8:  if Assigned(FBroker.OnConnectionDropped) then
+            FBroker.OnConnectionDropped(ConnectionIndex, ErrorText);
+    else
+      //Ignore other events
+    end
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D50.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D50.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D50.dof	(revision 1676)
@@ -0,0 +1,86 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedRPCBroker Components
+[Directories]
+OutputDir=
+UnitOutputDir=..\D5
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, OI, SD&D
+FileDescription=SharedRPCBroker Designtime package
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=(c) 2002-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=VistA SharedRPCBroker Components
+ProductVersion=1.1.40.0
+Comments=
+[Excluded Packages]
+$(DELPHI)\Bin\dclite50.bpl=Borland Integrated Translation Environment
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D50.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D50.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D50.dpk	(revision 1676)
@@ -0,0 +1,38 @@
+package SharedRPCBroker_D50;
+
+{$R *.RES}
+{$R 'SharedRPCBroker.dcr'}
+{$ALIGN ON}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedRPCBroker Components'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+  vcl50,
+  XWB_R50,
+  SharedRPCBroker_R50;
+
+contains
+  SharedRPCBrokerReg in 'SharedRPCBrokerReg.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D60.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D60.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D60.dof	(revision 1676)
@@ -0,0 +1,93 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedBroker Components
+[Directories]
+OutputDir=
+UnitOutputDir=..\D6
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=C:\Program Files\Borland\Delphi6\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, VHA, OI, SDD
+FileDescription=
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\D6
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D60.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D60.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D60.dpk	(revision 1676)
@@ -0,0 +1,39 @@
+package SharedRPCBroker_D60;
+
+{$R *.res}
+{$R 'SharedRPCBroker.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedBroker Components'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  XWB_R60,
+  SharedRPCBroker_R60,
+  designide;
+
+contains
+  SharedRPCBrokerReg in 'SharedRPCBrokerReg.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D70.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D70.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D70.dof	(revision 1676)
@@ -0,0 +1,143 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=1
+UnsafeCode=1
+UnsafeCast=1
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedBroker Components
+[Directories]
+OutputDir=
+UnitOutputDir=..\D7
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=C:\Program Files\Borland\Delphi6\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, OI, SD&D
+FileDescription=SharedRPCBroker Designtime package
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=(c) 2002-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\D7
+Item1=..\D6
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D70.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D70.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_D70.dpk	(revision 1676)
@@ -0,0 +1,39 @@
+package SharedRPCBroker_D70;
+
+{$R *.res}
+{$R 'SharedRPCBroker.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedBroker Components'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  XWB_R70,
+  SharedRPCBroker_R70,
+  designide;
+
+contains
+  SharedRPCBrokerReg in 'SharedRPCBrokerReg.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R50.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R50.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R50.dof	(revision 1676)
@@ -0,0 +1,89 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedRPCBroker Components
+[Directories]
+OutputDir=
+UnitOutputDir=..\D5
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, OI, SD&D
+FileDescription=SharedRPCBroker Runtime
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=(c) 2002-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=VistA SharedRPCBroker Runtime Package
+ProductVersion=1.1.40.0
+Comments=
+[Excluded Packages]
+$(DELPHI)\Bin\dclite50.bpl=Borland Integrated Translation Environment
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=1
+Item0=d:\development\bdk32\D5;d:\development\bdk32\source
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R50.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R50.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R50.dpk	(revision 1676)
@@ -0,0 +1,40 @@
+package SharedRPCBroker_R50;
+
+{$R *.RES}
+{$R 'SharedRPCBroker.dcr'}
+{$ALIGN ON}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedRPCBroker Components'}
+{$RUNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+  vcl50,
+  XWB_R50;
+
+contains
+  SharedRPCBroker in 'SharedRPCBroker.pas',
+  RPCSharedBrokerSessionMgr1_TLB in 'RPCSharedBrokerSessionMgr1_TLB.pas',
+  SharedRPCBrokerSink in 'SharedRPCBrokerSink.pas',
+  RPCSharedBrokerSessionMgr1_TLB_SRB in 'RPCSharedBrokerSessionMgr1_TLB_SRB.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R60.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R60.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R60.dof	(revision 1676)
@@ -0,0 +1,94 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedBroker Components
+[Directories]
+OutputDir=
+UnitOutputDir=..\D6
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\D6
+Item1=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R60.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R60.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R60.dpk	(revision 1676)
@@ -0,0 +1,40 @@
+package SharedRPCBroker_R60;
+
+{$R *.res}
+{$R 'SharedRPCBroker.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedBroker Components'}
+{$RUNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  XWB_R60;
+
+contains
+  SharedRPCBroker in 'SharedRPCBroker.pas',
+  RPCSharedBrokerSessionMgr1_TLB in 'RPCSharedBrokerSessionMgr1_TLB.pas',
+  SharedRPCBrokerSink in 'SharedRPCBrokerSink.pas',
+  RPCSharedBrokerSessionMgr1_TLB_SRB in 'RPCSharedBrokerSessionMgr1_TLB_SRB.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R70.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R70.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R70.dof	(revision 1676)
@@ -0,0 +1,144 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=1
+UnsafeCode=1
+UnsafeCast=1
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedBroker Components
+[Directories]
+OutputDir=
+UnitOutputDir=..\D7
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veteran Affairs, OI, SD&D
+FileDescription=SharedRPCBroker Runtime
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=(c) 2002-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=3
+Item0=..\D7
+Item1=..\D6
+Item2=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R70.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R70.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/SharedRPCBroker_R70.dpk	(revision 1676)
@@ -0,0 +1,40 @@
+package SharedRPCBroker_R70;
+
+{$R *.res}
+{$R 'SharedRPCBroker.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedBroker Components'}
+{$RUNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  XWB_R70;
+
+contains
+  SharedRPCBroker in 'SharedRPCBroker.pas',
+  RPCSharedBrokerSessionMgr1_TLB in 'RPCSharedBrokerSessionMgr1_TLB.pas',
+  SharedRPCBrokerSink in 'SharedRPCBrokerSink.pas',
+  RPCSharedBrokerSessionMgr1_TLB_SRB in 'RPCSharedBrokerSessionMgr1_TLB_SRB.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Splvista.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Splvista.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Splvista.dfm	(revision 1676)
@@ -0,0 +1,7288 @@
+object frmVistaSplash: TfrmVistaSplash
+  Left = 275
+  Top = 148
+  BorderIcons = []
+  BorderStyle = bsNone
+  ClientHeight = 250
+  ClientWidth = 330
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -13
+  Font.Name = 'System'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = True
+  Position = poScreenCenter
+  Scaled = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 16
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 330
+    Height = 250
+    Align = alClient
+    BevelWidth = 5
+    BorderStyle = bsSingle
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -13
+    Font.Name = 'System'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 0
+    object Image1: TImage
+      Left = 5
+      Top = 5
+      Width = 316
+      Height = 236
+      Align = alClient
+      Picture.Data = {
+        07544269746D617036840300424D368403000000000036000000280000004001
+        0000F0000000010018000000000000840300C40E0000C40E0000000000000000
+        0000FCFCFCFFFFFFFFFFFFE9E9E9E6E6E6E4E4E4ABABABC6C6C6F4F4F4F7F7F7
+        FCFCFCFFFFFFFFFFFFEDEDEDEDEDEDEDEDEDEDEDEDD7D7D7DEDEDEF4F4F4F3F3
+        F3F2F2F2F4F4F4F6F6F6F7F7F7F4F4F4F5F5F5F9F9F9F9F9F9F8F8F8F8F8F8FA
+        FAFAFBFBFBFBFBFBFBFBFBFCFCFCFFFFFFFFFFFFE6E6E6E6E6E6E3E3E3E3E3E3
+        E4E4E4E3E3E3E7E7E7EAEAEAEAEAEACFCFCFD5D5D5F1F1F1F5F5F5F5F5F5F7F7
+        F7F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8FCFCFCFFFFFFFFFFFFEBEBEBE7E7E7E6
+        E6E6E7E7E7E6E6E6E4E4E4DFDFDFE4E4E4EBEBEBD6D6D6DBDBDBF3F3F3FCFCFC
+        FFFFFFFFFFFFFBFBFBE4E4E4E4E4E4E1E1E1E2E2E2B8B8B8CACACAEEEEEEF0F0
+        F0F4F4F4F4F4F4F7F7F7F9F9F9FAFAFAFBFBFBFDFDFDFDFDFDFBFBFBFFFFFFFF
+        FFFFFFFFFFEAEAEAE8E8E8E6E6E6E5E5E5E7E7E7E9E9E9EAEAEAE8E8E8E9E9E9
+        E7E7E7E6E6E6F0F0F0F0F0F0EAEAEAECECECEEEEEEECECECE9E9E9E7E7E7E6E6
+        E6E9E9E9EAEAEAEBEBEBEBEBEBEAEAEAEDEDEDEAEAEAE7E7E7D0D0D0BDBDBDE2
+        E2E2F5F5F5F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAFEFEFEFBFBFBFFFFFFFFFFFF
+        F8F8F8E6E6E6E5E5E5E5E5E5E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7ECEC
+        ECEAEAEAE5E5E5E5E5E5E3E3E3E4E4E4E4E4E4DFDFDFE4E4E4E4E4E4E6E6E6E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9E9E9E9D9D9D9D5D5D5F2F2F2F3F3F3
+        F6F6F6F8F8F8FFFFFFFFFFFFF9F9F9EAEAEAECECECECECECE7E7E7E7E7E7E7E7
+        E7C4C4C4D5D5D5F5F5F5F1F1F1F2F2F2F6F6F6F8F8F8F9F9F9FFFFFFFFFFFFFB
+        FBFBE9E9E9E2E2E2E5E5E5CCCCCCE4E4E4FFFFFFFDFDFDCCCCCCFFFFFFFFFFFF
+        BEBEBECFCFCFF4F4F4F4F4F4F7F7F7F8F8F8F7F7F7F7F7F7F9F9F9FCFCFCFCFC
+        FCFCFCFCF9F9F9FFFFFFFFFFFFF9F9F9EEEEEEE9E9E9E9E9E9E9E9E9E7E7E7BA
+        BABAD0D0D0F7F7F7FEFEFEFFFFFFFFFFFFFFFFFFE9E9E9E8E8E8C6C6C6D7D7D7
+        F1F1F1F4F4F4F9F9F9F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7E7E7
+        E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E4E4E4E1E1E1E6E6E6EBEBEBEBEBEBE9
+        E9E9EAEAEAECECECEDEDEDEEEEEEECECECECECECECECECECECECEAEAEAEAEAEA
+        EAEAEAD6D6D6D6D6D6E8E8E8D7D7D7FFFFFFFFFFFFECECECE5E5E5E7E7E7EAEA
+        EAEAEAEAE5E5E5E7E7E7C7C7C7D4D4D4F8F8F8FAFAFAF9F9F9FFFFFFFEFEFEF8
+        F8F8F3F3F3F1F1F1FFFFFFFFFFFFE8E8E8E7E7E7E7E7E7BBBBBBCCCCCCFFFFFF
+        FFFFFFE6E6E6E7E7E7E4E4E4DEDEDEE3E3E3E9E9E9E9E9E9EAEAEAEAEAEAEAEA
+        EAEAEAEAE8E8E8E8E8E8E6E6E6E6E6E6E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9FF
+        FFFFFCFCFCFFFFFFFFFFFFE9E9E9E6E6E6CBCBCB8F8F8FC9C9C9F7F7F7FCFCFC
+        FFFFFFFFFFFFFFFFFFEDEDEDEDEDEDEDEDEDEDEDEDD6D6D6DDDDDDF4F4F4F4F4
+        F4F4F4F4F5F5F5F6F6F6F7F7F7F4F4F4F5F5F5F8F8F8F9F9F9F7F7F7F8F8F8FA
+        FAFAFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFE6E6E6E6E6E6E4E4E4E5E5E5
+        E5E5E5E7E7E7EAEAEAEAEAEADCDCDCC0C0C0D5D5D5F1F1F1F5F5F5F5F5F5F7F7
+        F7F9F9F9F8F8F8F8F8F8F7F7F7F8F8F8F9F9F9FFFFFFFAFAFAE9E9E9E6E6E6E6
+        E6E6E7E7E7E7E7E7E4E4E4E1E1E1EAEAEAF0F0F0E2E2E2E9E9E9F5F5F5FCFCFC
+        FAFAFAFFFFFFF8F8F8E2E2E2E1E1E1DFDFDFCACACA939393C2C2C2EAEAEAEEEE
+        EEF5F5F5F5F5F5F7F7F7FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFCFCFCFFFFFFFF
+        FFFFFFFFFFEDEDEDEAEAEAE9E9E9E6E6E6E7E7E7E9E9E9EAEAEAE8E8E8E9E9E9
+        E7E7E7E7E7E7F1F1F1F0F0F0EAEAEAECECECEEEEEEECECECE9E9E9E7E7E7E6E6
+        E6E9E9E9EAEAEAEBEBEBEBEBEBEAEAEAEDEDEDECECECE9E9E9BCBCBCB7B7B7E1
+        E1E1F5F5F5F8F8F8F8F8F8F9F9F9FAFAFAFAFAFAFEFEFEFBFBFBF4F4F4FFFFFF
+        F8F8F8E6E6E6E5E5E5E5E5E5E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7ECEC
+        ECEAEAEAE5E5E5E5E5E5E3E3E3E4E4E4E2E2E2DCDCDCE0E0E0E3E3E3E6E6E6E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9F5F5F5D9D9D9D5D5D5F2F2F2F3F3F3
+        F6F6F6F8F8F8FFFFFFFFFFFFF9F9F9E9E9E9E9E9E9EAEAEAE7E7E7E7E7E7E5E5
+        E5C4C4C4D5D5D5F5F5F5F3F3F3F3F3F3F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFB
+        FBFBE9E9E9E4E4E4E6E6E6CBCBCBD2D2D2FFFFFFFDFDFDCECECEFFFFFFFFFFFF
+        D1D1D1E1E1E1F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFF
+        FFFCFCFCFFFFFFFFFFFFFFFFFFF9F9F9ECECECE7E7E7E8E8E8E9E9E9E8E8E8D7
+        D7D7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9D7D7D7B5B5B5D6D6D6
+        F1F1F1F4F4F4F9F9F9F9F9F9FDFDFDFEFEFEFEFEFEFFFFFFFFFFFFE7E7E7E6E6
+        E6E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E4E4E4E1E1E1E6E6E6DEDEDED0D0D0DC
+        DCDCEAEAEADFDFDFE1E1E1EDEDEDECECECEBEBEBEBEBEBE9E9E9E7E7E7E9E9E9
+        D8D8D8AFAFAFD1D1D1F5F5F5E4E4E4FFFFFFFFFFFFE9E9E9E4E4E4E7E7E7E8E8
+        E8E7E7E7E2E2E2DBDBDBB8B8B8D4D4D4F8F8F8FAFAFAF9F9F9FFFFFFFEFEFEF6
+        F6F6F1F1F1F1F1F1FFFFFFFFFFFFE8E8E8E7E7E7E7E7E7B7B7B7C6C6C6FFFFFF
+        FFFFFFE6E6E6E6E6E6E2E2E2DDDDDDE3E3E3E9E9E9E9E9E9EAEAEAEAEAEAEAEA
+        EAEAEAEAE8E8E8E7E7E7E6E6E6E6E6E6E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9FF
+        FFFFFCFCFCFCFCFCFDFDFDE8E8E8CCCCCC929292ABABABE0E0E0F8F8F8FDFDFD
+        FFFFFFFFFFFFFFFFFFF0F0F0EDEDEDEDEDEDE1E1E1C8C8C8DEDEDEF5F5F5F5F5
+        F5F5F5F5F6F6F6F7F7F7F7F7F7F6F6F6F7F7F7F9F9F9FAFAFAF8F8F8F9F9F9FB
+        FBFBFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFE4E4E4E3E3E3E3E3E3E3E3E3
+        E6E6E6ECECECECECECECECECD0D0D0CCCCCCE3E3E3F1F1F1F7F7F7F7F7F7F8F8
+        F8F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F6F6F6FFFFFFFAFAFAE5E5E5E5
+        E5E5E7E7E7E6E6E6E4E4E4E7E7E7EFEFEFF1F1F1F4F4F4F6F6F6FFFFFFFFFFFF
+        FFFFFFFDFDFDF4F4F4C6C6C6A8A8A8AAAAAA8B8B8BA5A5A5DCDCDCF0F0F0F3F3
+        F3F8F8F8F7F7F7F7F7F7FBFBFBFDFDFDFFFFFFFFFFFFFBFBFBF9F9F9FFFFFFFF
+        FFFFFFFFFFECECECEAEAEAE8E8E8E6E6E6E7E7E7E9E9E9EAEAEAE8E8E8E9E9E9
+        E9E9E9EAEAEAF0F0F0EFEFEFEAEAEAECECECEEEEEEECECECE9E9E9E7E7E7E7E7
+        E7E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEDEDEDECECECE8E8E8BABABACACACAF3
+        F3F3F5F5F5F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FDFDFDF9F9F9F4F4F4FFFFFF
+        FFFFFFE6E6E6E5E5E5E5E5E5E7E7E7E6E6E6E6E6E6E6E6E6E7E7E7E8E8E8ECEC
+        ECEAEAEAE5E5E5E5E5E5E3E3E3E3E3E3DDDDDDDADADAE1E1E1E3E3E3E4E4E4E4
+        E4E4E4E4E4D7D7D7C8C8C8C9C9C9DADADAFBFBFBEFEFEFFBFBFBFFFFFFF4F4F4
+        F6F6F6F6F6F6FFFFFFFFFFFFF8F8F8E9E9E9E9E9E9ECECECEAEAEAE7E7E7E4E4
+        E4C7C7C7D6D6D6F5F5F5F4F4F4F4F4F4F7F7F7F8F8F8FAFAFAFFFFFFFFFFFFEC
+        ECECEAEAEAE4E4E4D5D5D5B7B7B7D1D1D1FFFFFFFFFFFFCECECEFFFFFFFFFFFF
+        E3E3E3E2E2E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAEAEAEAE8E8E8EAEAEAE8E8E8E9E9E9EC
+        ECECFEFEFEFBFBFBFFFFFFFFFFFFFFFFFFFBFBFBEAEAEACACACAC6C6C6E7E7E7
+        F3F3F3F7F7F7F8F8F8F8F8F8FBFBFBFCFCFCF8F8F8FFFFFFF8F8F8E7E7E7E8E8
+        E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E4E4E4E3E3E3E9E9E9DFDFDFDADADAF3
+        F3F3EAEAEAC4C4C4EAEAEAF7F7F7EAEAEAEAEAEADCDCDCCBCBCBCACACACCCCCC
+        B4B4B4BFBFBFF5F5F5FFFFFFE9E9E9FFFFFFFFFFFFECECECEAEAEAEAEAEAE8E8
+        E8E8E8E8E5E5E5CBCBCBBFBFBFE1E1E1F8F8F8FAFAFAFAFAFAFFFFFFFAFAFAF3
+        F3F3F1F1F1F1F1F1FFFFFFF9F9F9E8E8E8E7E7E7D2D2D29A9A9AC6C6C6FFFFFF
+        FBFBFBE4E4E4E3E3E3E1E1E1E1E1E1E6E6E6E9E9E9E9E9E9EAEAEAE9E9E9E9E9
+        E9E9E9E9E8E8E8E6E6E6E6E6E6E6E6E6E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9FF
+        FFFFFCFCFCFCFCFCFDFDFDFAFAFAB2B2B2AAAAAADFDFDFF6F6F6FAFAFAFEFEFE
+        FFFFFFFFFFFFFFFFFFF1F1F1D3D3D3D5D5D5C8C8C8D2D2D2EAEAEAF5F5F5F5F5
+        F5F5F5F5F4F4F4F5F5F5F8F8F8F7F7F7F8F8F8F9F9F9FAFAFAF8F8F8F9F9F9FB
+        FBFBFBFBFBFBFBFBFBFBFBFCFCFCFFFFFFFFFFFFE6E6E6E3E3E3E4E4E4E6E6E6
+        E6E6E6E8E8E8EAEAEAE9E9E9CECECEDADADAF1F1F1F3F3F3F7F7F7F7F7F7F7F7
+        F7F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8F8F8F8F7F7F7FFFFFFF9F9F9E4E4E4E6
+        E6E6E7E7E7E6E6E6E7E7E7EAEAEAECECECECECECF0F0F0F2F2F2FFFFFFFFFFFF
+        E4E4E4DCDCDCF7F7F7B3B3B3A6A6A6C4C4C4C4C4C4DEDEDEF7F7F7F7F7F7F7F7
+        F7FCFCFCFDFDFDF9F9F9FDFDFDFFFFFFFEFEFEFCFCFCF9F9F9FFFFFFFFFFFFFF
+        FFFFEFEFEFEAEAEAE9E9E9E6E6E6E6E6E6E6E6E6E7E7E7E9E9E9E8E8E8E9E9E9
+        EAEAEAEAEAEAEEEEEEEDEDEDEBEBEBEDEDEDEEEEEEEBEBEBE9E9E9E9E9E9E6E6
+        E6E7E7E7E7E7E7E8E8E8E9E9E9E9E9E9EAEAEAE9E9E9E4E4E4B6B6B6C9C9C9F4
+        F4F4F7F7F7F8F8F8F8F8F8F9F9F9F8F8F8F9F9F9FAFAFAF8F8F8F5F5F5FFFFFF
+        F8F8F8E5E5E5E4E4E4E5E5E5E6E6E6E4E4E4E5E5E5E7E7E7E7E7E7E9E9E9EDED
+        EDE9E9E9E5E5E5E5E5E5E3E3E3E2E2E2DCDCDCDDDDDDE1E1E1D5D5D5C9C9C9CA
+        CACAD8D8D8CACACAC7C7C7E4E4E4FFFFFFFDFDFDF0F0F0FCFCFCE5E5E5E1E1E1
+        F5F5F5F6F6F6FFFFFFFFFFFFF9F9F9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E7E7
+        E7C8C8C8D6D6D6F5F5F5F5F5F5F4F4F4F5F5F5F9F9F9FBFBFBFFFFFFFFFFFFFC
+        FCFCE6E6E6D0D0D0B1B1B1C0C0C0E1E1E1FFFFFFFDFDFDCECECEFFFFFFFFFFFF
+        E3E3E3E2E2E2F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE9E9E9E8E8
+        E8F8F8F8FFFFFFFBFBFBE8E8E8E9E9E9EAEAEAE9E9E9E9E9E9E8E8E8EAEAEAEA
+        EAEAEAEAEAEAEAEAFFFFFFFFFFFFFCFCFCEAEAEAEAEAEAC8C8C8D5D5D5F4F4F4
+        F5F5F5F6F6F6F7F7F7F9F9F9FEFEFEFCFCFCF8F8F8FCFCFCFFFFFFF5F5F5E8E8
+        E8E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E3E3E3E1E1E1E7E7E7DADADACCCCCCF3
+        F3F3DFDFDFCFCFCFF5F5F5EBEBEBD1D1D1D0D0D0BEBEBEC9C9C9D7D7D7D7D7D7
+        D5D5D5E4E4E4FFFFFFFFFFFFE9E9E9FFFFFFFFFFFFE7E7E7E9E9E9E9E9E9E9E9
+        E9E7E7E7E6E6E6C7C7C7D1D1D1F3F3F3F9F9F9FBFBFBFBFBFBFEFEFEF8F8F8F3
+        F3F3F1F1F1EDEDEDECECECEFEFEFD2D2D2BBBBBB9E9E9EACACACDFDFDFFBFBFB
+        F9F9F9E6E6E6E4E4E4E3E3E3E2E2E2E3E3E3E8E8E8E9E9E9E9E9E9EAEAEAEAEA
+        EAE9E9E9E7E7E7E6E6E6E7E7E7E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAFF
+        FFFFFCFCFCFCFCFCFDFDFDFCFCFCE4E4E4E2E2E2F7F7F7F8F8F8FBFBFBFCFCFC
+        FFFFFFFDFDFDFFFFFFEEEEEED1D1D1E0E0E0DEDEDEEAEAEAF5F5F5F5F5F5F5F5
+        F5F5F5F5F3F3F3F4F4F4F6F6F6F6F6F6F8F8F8F7F7F7F8F8F8F8F8F8FAFAFAFB
+        FBFBFBFBFBFBFBFBFBFBFBFDFDFDFFFFFFFFFFFFEAEAEAE5E5E5E5E5E5E7E7E7
+        E7E7E7E7E7E7E8E8E8E8E8E8C9C9C9D7D7D7F3F3F3F4F4F4F7F7F7F6F6F6F6F6
+        F6F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F5F5F5FFFFFFF1F1F1E3
+        E3E3E7E7E7E8E8E8E9E9E9EAEAEAEAEAEAEBEBEBEAEAEAEAEAEAECECECECECEC
+        D7D7D7E2E2E2FCFCFCE4E4E4DFDFDFF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FDFD
+        FDFFFFFFFFFFFFFDFDFDFEFEFEFDFDFDFBFBFBF9F9F9F8F8F8FFFFFFFFFFFFFF
+        FFFFEBEBEBE8E8E8E5E5E5E1E1E1E1E1E1E0E0E0E4E4E4E9E9E9E9E9E9E9E9E9
+        EAEAEAEAEAEAECECECECECECEAEAEAEAEAEAEBEBEBE9E9E9E6E6E6E6E6E6E4E4
+        E4E5E5E5E2E2E2E4E4E4DDDDDDD3D3D3CDCDCDC8C8C8BDBDBDA1A1A1CCCCCCF5
+        F5F5F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F8F8F8F7F7F7F7F7F7F5F5F5F4F4F4
+        F4F4F4E5E5E5E5E5E5E5E5E5E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8EAEAEAEAEA
+        EAE7E7E7E5E5E5E4E4E4E2E2E2DEDEDED7D7D7CCCCCCC4C4C4BABABACACACADA
+        DADAF3F3F3DEDEDEDBDBDBFFFFFFF9F9F9DFDFDFC8C8C8D3D3D3BCBCBCCCCCCC
+        F4F4F4FFFFFFFFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAEAEAEAECECECE7E7
+        E7C9C9C9D8D8D8F4F4F4F5F5F5F3F3F3F4F4F4F7F7F7FBFBFBFEFEFEFFFFFFFF
+        FFFFD1D1D1ACACACBEBEBEE1E1E1F3F3F3F8F8F8FBFBFBCECECEFDFDFDFFFFFF
+        E0E0E0E2E2E2EAEAEAEDEDEDFBFBFBFEFEFEF3F3F3EEEEEEE9E9E9E9E9E9E7E7
+        E7E7E7E7E6E6E6E7E7E7E7E7E7E9E9E9EAEAEAE9E9E9E7E7E7E9E9E9EDEDEDEB
+        EBEBECECECECECECEDEDEDECECECE8E8E8E9E9E9D7D7D7B5B5B5D4D4D4F2F2F2
+        F5F5F5F5F5F5F8F8F8FCFCFCFEFEFEFCFCFCF8F8F8F8F8F8FFFFFFFFFFFFE7E7
+        E7E7E7E7E7E7E7E8E8E8E6E6E6E3E3E3CBCBCBBABABAC2C2C2BABABAC6C6C6E7
+        E7E7EAEAEAE9E9E9F5F5F5E9E9E9DCDCDCDBDBDBDADADAE7E7E7F5F5F5F5F5F5
+        F5F5F5F5F5F5FFFFFFFFFFFFF7F7F7F9F9F9F7F7F7E3E3E3E6E6E6E9E9E9E8E8
+        E8E7E7E7E8E8E8DCDCDCFBFBFBFFFFFFFFFFFFFCFCFCFBFBFBFBFBFBF5F5F5F3
+        F3F3EFEFEFECECECECECECF1F1F1DADADAC5C5C5C4C4C4DCDCDCF7F7F7FAFAFA
+        F8F8F8F8F8F8D7D7D7C1C1C1D1D1D1E4E4E4E8E8E8E9E9E9E9E9E9EAEAEAE9E9
+        E9E7E7E7E8E8E8E6E6E6E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFF
+        FFFFFEFEFEFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F9F9F9
+        FCFCFCFCFCFCFFFFFFE0E0E0DEDEDEF5F5F5F3F3F3F3F3F3F3F3F3F3F3F3F3F3
+        F3F3F3F3F1F1F1F5F5F5F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7FAFAFAFAFAFAFA
+        FAFAFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFEBEBEBE6E6E6E6E6E6E7E7E7
+        E7E7E7E7E7E7E7E7E7E7E7E7D7D7D7E6E6E6F5F5F5F5F5F5F5F5F5F6F6F6F5F5
+        F5F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7FFFFFFFFFFFFEA
+        EAEAECECECEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEDEDEDEDEDEDEDEDEDEDEDED
+        EDEDEDD3D3D3EAEAEAFCFCFCF7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFBFBFBFDFDFDFBFBFBF9F9F9F8F8F8F8F8F8FBFBFBD7
+        D7D7D0D0D0E3E3E3CCCCCCB4B4B4B8B8B8C0C0C0D6D6D6E9E9E9EAEAEAE9E9E9
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAECECECECECECEAEAEAE8E8E8E8E8E8E6E6
+        E6E1E1E1D7D7D7D1D1D1C8C8C8CDCDCDD1D1D1D2D2D2D0D0D0D0D0D0E4E4E4F8
+        F8F8F9F9F9F9F9F9F9F9F9FAFAFAF8F8F8F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4
+        F4F4F4FFFFFFF3F3F3E4E4E4E5E5E5E6E6E6E7E7E7E7E7E7E9E9E9E9E9E9E9E9
+        E9E7E7E7E4E4E4E2E2E2DEDEDED7D7D7C8C8C8AFAFAFC5C5C5DADADAEAEAEAFF
+        FFFFFFFFFFECECECDCDCDCF5F5F5E8E8E8D9D9D9D2D2D2DFDFDFBBBBBBCCCCCC
+        F4F4F4FFFFFFFFFFFFFAFAFAECECECEAEAEAEAEAEAEBEBEBEDEDEDEEEEEEE9E9
+        E9CBCBCBD7D7D7F3F3F3F3F3F3F1F1F1F4F4F4F7F7F7F9F9F9F9F9F9FFFFFFE5
+        E5E5A8A8A8B8B8B8E1E1E1F3F3F3F7F7F7FAFAFAFDFDFDEEEEEEFCFCFCECECEC
+        D1D1D1E1E1E1E9E9E9EBEBEBEAEAEAF0F0F0EFEFEFEAEAEAE9E9E9E9E9E9E7E7
+        E7E7E7E7E3E3E3E2E2E2E7E7E7E9E9E9EAEAEAE9E9E9EAEAEAEDEDEDEFEFEFEF
+        EFEFEEEEEEECECECE9E9E9E9E9E9E4E4E4E2E2E2C2C2C2C1C1C1E4E4E4F4F4F4
+        F7F7F7F7F7F7F8F8F8FBFBFBFCFCFCFBFBFBF8F8F8F8F8F8FFFFFFEAEAEAD2D2
+        D2E4E4E4E4E4E4E2E2E2DEDEDEDFDFDFB8B8B8BABABAD7D7D7DCDCDCE4E4E4F4
+        F4F4F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F3F3F3F3F3F3F3F3F3
+        F2F2F2F3F3F3F5F5F5FFFFFFF7F7F7ECECECE6E6E6E2E2E2E6E6E6E8E8E8E7E7
+        E7E9E9E9EAEAEAEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6F5
+        F5F5F3F3F3F1F1F1F5F5F5F6F6F6F3F3F3F1F1F1F4F4F4F8F8F8FDFDFDFCFCFC
+        F8F8F8F9F9F9E7E7E7D1D1D1F0F0F0F7F7F7E9E9E9E9E9E9E9E9E9E9E9E9E7E7
+        E7E8E8E8E8E8E8E5E5E5E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAFF
+        FFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBF9F9F9F9F9F9F8F8F8FBFBFB
+        FDFDFDFCFCFCFFFFFFFDFDFDECECECF7F7F7F4F4F4F4F4F4F4F4F4F4F4F4F4F4
+        F4F4F4F4F4F4F4F9F9F9F8F8F8F8F8F8F5F5F5F6F6F6F8F8F8F9F9F9F9F9F9F9
+        F9F9FBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFEBEBEBE9E9E9E9E9E9EBEBEB
+        E9E9E9E7E7E7E7E7E7E7E7E7E7E7E7D7D7D7E4E4E4F4F4F4F3F3F3F4F4F4F6F6
+        F6F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7FFFFFFFDFDFDF0
+        F0F0EFEFEFECECECECECECEAEAEAE9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
+        EAEAEABDBDBDD1D1D1F9F9F9F5F5F5F7F7F7F8F8F8F8F8F8FDFDFDFFFFFFFFFF
+        FFFFFFFFFFFFFFF7F7F7F9F9F9FBFBFBF9F9F9FAFAFAF9F9F9F8F8F8F8F8F8E5
+        E5E5DDDDDDCBCBCB989898AFAFAFCCCCCCD3D3D3E6E6E6EAEAEAEAEAEAE8E8E8
+        E9E9E9EAEAEAEAEAEAE9E9E9E9E9E9ECECECECECECEAEAEAE9E9E9EAEAEAE8E8
+        E8E1E1E1D0D0D0D0D0D0DBDBDBE7E7E7EFEFEFF2F2F2F5F5F5F5F5F5FFFFFFFF
+        FFFFFFFFFFFFFFFFF9F9F9F8F8F8F8F8F8F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5
+        F1F1F1FEFEFEF5F5F5E5E5E5E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E6E6
+        E6E5E5E5E2E2E2DFDFDFD9D9D9C8C8C8ADADADC1C1C1E5E5E5F5F5F5F5F5F5FF
+        FFFFFFFFFFECECECE9E9E9F5F5F5F4F4F4F3F3F3F2F2F2F0F0F0DCDCDCDCDCDC
+        F1F1F1FFFFFFFFFFFFFCFCFCECECECECECECEDEDEDEFEFEFEEEEEEEDEDEDEAEA
+        EADBDBDBE7E7E7F4F4F4F4F4F4F5F5F5F7F7F7F7F7F7F9F9F9F7F7F7F3F3F3DC
+        DCDCCBCBCBDDDDDDF1F1F1F6F6F6F8F8F8FBFBFBFEFEFEFCFCFCFBFBFBE7E7E7
+        E2E2E2D9D9D9DCDCDCEAEAEAEAEAEAEFEFEFEDEDEDE8E8E8E9E9E9E8E8E8E7E7
+        E7E6E6E6DFDFDFE2E2E2E7E7E7E7E7E7E8E8E8E8E8E8EAEAEAEDEDEDEEEEEEED
+        EDEDECECECE8E8E8E7E7E7E6E6E6E1E1E1D1D1D1B4B4B4D3D3D3F6F6F6FAFAFA
+        F9F9F9F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F9F9F9E8E8E8F8F8
+        F8F9F9F9E3E3E3E1E1E1E1E1E1E5E5E5C3C3C3D5D5D5FBFBFBFDFDFDF8F8F8F4
+        F4F4F9F9F9F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F2F2F2F3F3F3F1F1F1
+        F0F0F0F4F4F4F5F5F5FFFFFFFFFFFFEBEBEBE3E3E3E3E3E3E7E7E7E7E7E7E8E8
+        E8EAEAEAEAEAEAECECECEFEFEFF1F1F1F0F0F0FFFFFFFFFFFFF7F7F7F6F6F6F7
+        F7F7F4F4F4F5F5F5F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAF9F9F9F6F6F6
+        F5F5F5F7F7F7F8F8F8F6F6F6FFFFFFEBEBEBCBCBCBCCCCCCCCCCCCCCCCCCCBCB
+        CBCCCCCCDADADAD3D3D3D6D6D6EAEAEAEAEAEAEAEAEAEBEBEBEAEAEAEAEAEAFF
+        FFFFFFFFFFFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F7F7F7F7F7F7F6F6F6F6F6
+        F6F7F7F7F8F8F8FAFAFAF8F8F8F5F5F5F7F7F7FBFBFBFBFBFBF8F8F8F9F9F9F9
+        F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEEAEAEAE9E9E9EAEAEAEDEDED
+        EAEAEAE7E7E7E7E7E7E9E9E9E9E9E9D7D7D7E2E2E2F3F3F3F2F2F2F2F2F2F5F5
+        F5F4F4F4F4F4F4F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F9F9F9FFFFFFF8
+        F8F8ECECECECECECEBEBEBE9E9E9E9E9E9E9E9E9E8E8E8E7E7E7E7E7E7E7E7E7
+        E7E7E7BBBBBBCECECEF7F7F7F5F5F5F8F8F8FAFAFAFAFAFAFFFFFFFFFFFFFFFF
+        FFF7F7F7EAEAEAEAEAEAEDEDEDFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFF9F9F9F9
+        F9F9F6F6F6E0E0E0C9C9C9DFDFDFF4F4F4F6F6F6F6F6F6F7F7F7EBEBEBE7E7E7
+        E9E9E9EAEAEAE8E8E8E9E9E9E9E9E9EBEBEBEAEAEAEAEAEAE9E9E9EAEAEAEAEA
+        EAE6E6E6D7D7D7DFDFDFF1F1F1F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFF
+        FFFFFFFFFFECECECE7E7E7F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5
+        F4F4F4FFFFFFFFFFFFFBFBFBECECECE8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E6E6
+        E6E5E5E5DFDFDFDBDBDBDBDBDBBFBFBFC0C0C0E4E4E4F6F6F6F6F6F6F5F5F5FF
+        FFFFFFFFFFECECECECECECF4F4F4F1F1F1EFEFEFEEEEEEEEEEEEECECECEFEFEF
+        F2F2F2FFFFFFFFFFFFFBFBFBEAEAEAEBEBEBEEEEEEEFEFEFECECECEAEAEAE9E9
+        E9E9E9E9E7E7E7F3F3F3F4F4F4F4F4F4F3F3F3F3F3F3F7F7F7F2F2F2F0F0F0F0
+        F0F0F1F1F1F4F4F4F5F5F5F7F7F7F8F8F8FAFAFAFDFDFDFAFAFAF7F7F7F5F5F5
+        F4F4F4E5E5E5E4E4E4D9D9D9DADADAECECECECECECE8E8E8E8E8E8E7E7E7E4E4
+        E4E1E1E1E1E1E1E3E3E3E4E4E4E2E2E2E7E7E7E8E8E8EAEAEAEDEDEDECECECED
+        EDEDEEEEEEEAEAEAE7E7E7E6E6E6D1D1D1B1B1B1C1C1C1E3E3E3F8F8F8FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F8F8F8F9F9F9FBFBFBFBFBFBFFFF
+        FFFBFBFBE5E5E5E4E4E4E8E8E8EAEAEAC8C8C8D7D7D7FBFBFBFDFDFDF7F7F7F4
+        F4F4FBFBFBF9F9F9F5F5F5F5F5F5F5F5F5F6F6F6F5F5F5FDFDFDFFFFFFF4F4F4
+        F1F1F1F5F5F5F7F7F7FFFFFFFFFFFFEBEBEBE7E7E7E6E6E6E7E7E7E7E7E7E9E9
+        E9EAEAEAEBEBEBEDEDEDEFEFEFF1F1F1EEEEEEECECECEAEAEAD3D3D3E4E4E4F7
+        F7F7F4F4F4F7F7F7F9F9F9F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F7F7F7F5F5F5
+        F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7E7E7E7D7D7D7D7D7D7D7D7D7D7D7D7D6D6
+        D6D6D6D6E2E2E2C4C4C4D7D7D7DEDEDEDCDCDCE7E7E7E7E7E7E9E9E9E8E8E8FF
+        FFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFBFBFBFCFCFCF9F9F9FFFFFFFFFFFFF7F7F7F5F5F5F7F7
+        F7F7F7F7F9F9F9FAFAFAF8F8F8F7F7F7F8F8F8FCFCFCFBFBFBFDFDFDFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBEAEAEAE9E9E9E8E8E8ECECEC
+        EAEAEAE7E7E7E7E7E7E9E9E9E9E9E9E7E7E7D4D4D4E2E2E2F2F2F2F1F1F1F3F3
+        F3F4F4F4F5F5F5F7F7F7F7F7F7F8F8F8F9F9F9F7F7F7F7F7F7F7F7F7FFFFFFEA
+        EAEAD0D0D0CCCCCCDBDBDBE9E9E9EAEAEAE9E9E9E7E7E7E7E7E7E7E7E7E7E7E7
+        E7E7E7BCBCBCD1D1D1FAFAFAF7F7F7F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFF8F8
+        F8EAEAEAEAEAEADFDFDFD1D1D1DADADADADADAF6F6F6F8F8F8D7D7D7E5E5E5F8
+        F8F8F8F8F8F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8FFFFFFF7F7F7
+        ECECECEAEAEAE9E9E9EAEAEAEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9
+        E9EAEAEAE4E4E4E8E8E8F2F2F2F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFF8
+        F8F8EAEAEAD9D9D9E6E6E6F6F6F6F7F7F7F5F5F5F4F4F4F3F3F3F3F3F3F4F4F4
+        F4F4F4FFFFFFFFFFFFFEFEFEEEEEEEE8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7
+        E7E4E4E4E1E1E1DEDEDEE2E2E2C2C2C2D0D0D0F3F3F3F6F6F6F7F7F7F7F7F7FF
+        FFFFFFFFFFECECECDEDEDECECECEE0E0E0EEEEEEF0F0F0F1F1F1F1F1F1F4F4F4
+        F7F7F7F8F8F8FFFFFFFDFDFDECECECEEEEEEEDEDEDEAEAEAE9E9E9E9E9E9E9E9
+        E9E8E8E8E4E4E4E6E6E6FFFFFFFFFFFFF4F4F4F3F3F3F5F5F5F4F4F4F4F4F4F5
+        F5F5F5F5F5F7F7F7F7F7F7FAFAFAFCFCFCFCFCFCFDFDFDFAFAFAF7F7F7F7F7F7
+        F7F7F7F4F4F4F3F3F3E6E6E6E7E7E7DBDBDBDADADAE7E7E7E6E6E6E4E4E4E2E2
+        E2CFCFCFB9B9B9B2B2B2AFAFAFB3B3B3D3D3D3EBEBEBEFEFEFF0F0F0EDEDEDF1
+        F1F1F0F0F0EAEAEAE5E5E5E3E3E3BFBFBFBCBCBCDFDFDFF5F5F5FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F7F7
+        F7F7F7F7DADADAC8C8C8CACACAD9D9D9C8C8C8D7D7D7F8F8F8F9F9F9F6F6F6F4
+        F4F4F9F9F9F7F7F7F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F5F5F5F7F7F7FFFFFFFFFFFFE9E9E9E4E4E4E3E3E3E6E6E6E6E6E6E9E9
+        E9EBEBEBEDEDEDEEEEEEF1F1F1EEEEEEEAEAEAE9E9E9E9E9E9D5D5D5E2E2E2F5
+        F5F5F5F5F5F7F7F7F5F5F5F6F6F6F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F9F9F9
+        F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F8F8F8F7F7F7F3F3F3F4F4F4F1F1F1F0F0
+        F0F0F0F0F0F0F0E1E1E1E6E6E6EAEAEAE6E6E6D6D6D6C8C8C8C8C8C8C5C5C5FF
+        FFFFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7E4E4E4E5E5E5F9F9F9F9F9F9
+        E4E4E4E6E6E6E8E8E8E8E8E8E9E9E9E7E7E7F7F7F7E9E9E9E5E5E5F4F4F4F7F7
+        F7FAFAFAFBFBFBFAFAFAF9F9F9F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFECECECEEEEEEFFFFFFFFFFFFD9D9D9C6C6C6C5C5C5C2C2C2C1C1C1D7D7D7
+        EAEAEAE9E9E9E7E7E7EAEAEAEAEAEAE6E6E6D2D2D2E1E1E1EFEFEFF0F0F0F4F4
+        F4F6F6F6F8F8F8F8F8F8F9F9F9FCFCFCFAFAFAF7F7F7F7F7F7F6F6F6F5F5F5E9
+        E9E9DDDDDDDCDCDCF9F9F9FAFAFAEDEDEDEAEAEAE7E7E7E7E7E7E7E7E7E4E4E4
+        DFDFDFB7B7B7D0D0D0F5F5F5F3F3F3F7F7F7F9F9F9F9F9F9FFFFFFFFFFFFEAEA
+        EAEAEAEAE9E9E9DADADAD3D3D3D5D5D5D8D8D8E6E6E6E2E2E2CFCFCFE2E2E2F8
+        F8F8F8F8F8FAFAFAFDFDFDFBFBFBF8F8F8F7F7F7F7F7F7FAFAFAFFFFFFFFFFFF
+        ECECECE9E9E9E9E9E9EBEBEBEBEBEBEBEBEBEBEBEBECECECECECECEAEAEAE9E9
+        E9ECECECEAEAEAD7D7D7E2E2E2F4F4F4F5F5F5F5F5F5FFFFFFFFFFFFF8F8F8EC
+        ECECEBEBEBEAEAEADADADAE6E6E6F5F5F5F5F5F5F2F2F2F3F3F3F5F5F5F8F8F8
+        FFFFFFFFFFFFFFFFFFF0F0F0EDEDEDE9E9E9E8E8E8E7E7E7E7E7E7E6E6E6E3E3
+        E3E2E2E2E3E3E3E6E6E6E7E7E7C3C3C3D3D3D3F5F5F5F7F7F7F7F7F7F6F6F6FF
+        FFFFFBFBFBEDEDEDDFDFDFE9E9E9F1F1F1F1F1F1F5F5F5F5F5F5F6F6F6F7F7F7
+        F8F8F8F8F8F8FFFFFFFDFDFDEDEDEDEDEDEDEAEAEAE9E9E9E8E8E8E9E9E9E8E8
+        E8E8E8E8E6E6E6E7E7E7F7F7F7FAFAFAF1F1F1F3F3F3F7F7F7F7F7F7F7F7F7F8
+        F8F8FAFAFAFCFCFCFAFAFAFAFAFAFCFCFCFBFBFBFAFAFAF8F8F8F7F7F7F7F7F7
+        F7F7F7F7F7F7F4F4F4F3F3F3F0F0F0E1E1E1E0E0E0D3D3D3D5D5D5E4E4E4CCCC
+        CC9E9E9EA9A9A9BBBBBBC6C6C6CECECEECECECF1F1F1F1F1F1F0F0F0EEEEEEF0
+        F0F0EAEAEAE4E4E4E2E2E2E2E2E2CFCFCFDEDEDEF4F4F4FFFFFFFFFFFFFFFFFF
+        F9F9F9E9E9E9E9E9E9EAEAEAFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCF9F9F9FAFA
+        FAFBFBFBEBEBEBD8D8D8D7D7D7E6E6E6CCCCCCD9D9D9F7F7F7F8F8F8F7F7F7F6
+        F6F6F7F7F7F9F9F9F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7DADADA
+        E6E6E6F7F7F7F8F8F8FFFFFFFAFAFAE0E0E0DFDFDFE3E3E3E6E6E6ECECECF1F1
+        F1F0F0F0EFEFEFF1F1F1EFEFEFEAEAEAE8E8E8E9E9E9E8E8E8D5D5D5BEBEBEE1
+        E1E1F4F4F4F3F3F3F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8F7F7F7F6F6F6F5F5F5
+        F3F3F3F3F3F3F4F4F4F7F7F7F8F8F8F8F8F8F5F5F5F3F3F3F4F4F4F0F0F0EFEF
+        EFEEEEEEF0F0F0F0F0F0F4F4F4F7F7F7F5F5F5E5E5E5D7D7D7D6D6D6D3D3D3FF
+        FFFFF9F9F9FFFFFFFFFFFFFFFFFFE6E6E6E4E4E4E4E4E4E2E2E2CACACA989898
+        C9C9C9D9D9D9D9D9D9E8E8E8E9E9E9E7E7E7E5E5E5D3D3D3F3F3F3FFFFFFF9F9
+        F9FCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+        F9F9D1D1D1FBFBFBFFFFFFFFFFFFC1C1C1BEBEBECFCFCFD0D0D0D1D1D1F6F6F6
+        FDFDFDE9E9E9E6E6E6E9E9E9E7E7E7E2E2E2E1E1E1D4D4D4E0E0E0F1F1F1F6F6
+        F6F7F7F7F7F7F7F8F8F8FBFBFBFCFCFCF9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F8F8F8FBFBFBFFFFFFFDFDFDEEEEEEE9E9E9E5E5E5E6E6E6E3E3E3DCDCDC
+        D0D0D0AEAEAED1D1D1F4F4F4F4F4F4F7F7F7FAFAFAFCFCFCFFFFFFFFFFFFEAEA
+        EAE8E8E8E4E4E4D7D7D7CECECEE7E7E7F4F4F4FFFFFFFFFFFFF1F1F1F5F5F5F9
+        F9F9F9F9F9FDFDFDFFFFFFFCFCFCF9F9F9F7F7F7F8F8F8F7F7F7FFFFFFFFFFFF
+        ECECECE7E7E7E8E8E8EBEBEBEAEAEAE9E9E9EAEAEAEDEDEDEAEAEAE8E8E8EAEA
+        EAEDEDEDEAEAEADADADAF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1EDEDEDEAEAEAC8C8C8D3D3D3F3F3F3F6F6F6F3F3F3F5F5F5F9F9F9FDFDFD
+        FFFFFFFFFFFFFFFFFFEDEDEDEAEAEAE9E9E9E7E7E7E6E6E6E4E4E4E2E2E2E1E1
+        E1E4E4E4E7E7E7E9E9E9E9E9E9C5C5C5D4D4D4F6F6F6F8F8F8F8F8F8F6F6F6F6
+        F6F6FFFFFFFFFFFFF4F4F4FEFEFEE8E8E8E5E5E5F7F7F7F5F5F5F7F7F7F8F8F8
+        F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFEDEDEDE9E9E9E6E6E6E6E6E6E7E7E7E7E7
+        E7E7E7E7E7E7E7E6E6E6EAEAEAEDEDEDD5D5D5E3E3E3F9F9F9F9F9F9F9F9F9FC
+        FCFCFEFEFEFFFFFFFFFFFFFFFFFFFAFAFAF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F5F5F5F3F3F3F2F2F2F3F3F3F1F1F1F0F0F0F2F2F2E4E4E4E0E0E0CCCCCC9C9C
+        9CB0B0B0D8D8D8EEEEEEF9F9F9FDFDFDFFFFFFFFFFFFF4F4F4F0F0F0ECECECE9
+        E9E9E3E3E3E3E3E3E5E5E5E5E5E5E2E2E2DCDCDCECECECFFFFFFFFFFFFFDFDFD
+        E8E8E8E4E4E4E6E6E6EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAF7F7
+        F7FAFAFAF9F9F9F7F7F7F7F7F7F7F7F7E9E9E9E9E9E9F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EDEDEDECECECCFCFCF
+        DCDCDCF9F9F9FBFBFBFCFCFCF6F6F6E4E4E4E4E4E4E8E8E8E9E9E9F0F0F0F1F1
+        F1EBEBEBECECECEEEEEEEAEAEAE8E8E8E8E8E8E9E9E9D2D2D2A5A5A5B5B5B5DF
+        DFDFF3F3F3F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F5F5F5F3F3F3
+        F0F0F0F1F1F1F3F3F3F6F6F6F7F7F7F7F7F7F5F5F5F5F5F5F2F2F2EEEEEEEEEE
+        EEF1F1F1F3F3F3F4F4F4F8F8F8F8F8F8F6F6F6F6F6F6F5F5F5F4F4F4F4F4F4FF
+        FFFFFFFFFFFFFFFFFFFFFFE9E9E9E4E4E4E3E3E3E1E1E1C9C9C9959595AFAFAF
+        E4E4E4EDEDEDF9F9F9F9F9F9E9E9E9E7E7E7E5E5E5E4E4E4F6F6F6FAFAFAFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5E4E4E4EAEAEAEA
+        EAEAE7E7E7FBFBFBFFFFFFF8F8F8C2C2C2D2D2D2F1F1F1F3F3F3F5F5F5FFFFFF
+        F0F0F0DCDCDCE6E6E6E7E7E7E4E4E4E0E0E0D1D1D1AFAFAFCECECEF1F1F1F6F6
+        F6F7F7F7F7F7F7F8F8F8FAFAFAF9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F9F9F9FAFAFAFFFFFFFFFFFFFAFAFAECECECECECECE6E6E6E1E1E1E2E2E2
+        D9D9D9D5D5D5E4E4E4F9F9F9FBFBFBFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFE9E9
+        E9E5E5E5D7D7D7C3C3C3D2D2D2EAEAEAF5F5F5FFFFFFF7F7F7E6E6E6F5F5F5F9
+        F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F9F9F9F4F4F4FEFEFEF8F8F8
+        EAEAEAE6E6E6E8E8E8EBEBEBE9E9E9DCDCDCDEDEDEECECECE9E9E9EAEAEAE9E9
+        E9EAEAEAE7E7E7E6E6E6F6F6F6FFFFFFF6F6F6FFFFFFFFFFFFFCFCFCEEEEEEEE
+        EEEEE9E9E9E9E9E9C6C6C6D2D2D2F5F5F5F7F7F7F5F5F5FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFECECECEAEAEAEAEAEAE6E6E6E2E2E2E2E2E2E1E1E1E1E1E1E5E5
+        E5E8E8E8E9E9E9E9E9E9E9E9E9C5C5C5D3D3D3F4F4F4F7F7F7F8F8F8F6F6F6FF
+        FFFFFFFFFFFFFFFFF3F3F3EEEEEEC5C5C5D3D3D3F7F7F7F5F5F5F4F4F4F4F4F4
+        F4F4F4F5F5F5F8F8F8FFFFFFFFFFFFEAEAEAE4E4E4E2E2E2E6E6E6E7E7E7E7E7
+        E7E7E7E7E7E7E7E4E4E4E7E7E7E9E9E9C0C0C0D2D2D2F8F8F8FAFAFAFCFCFCFF
+        FFFFFFFFFFFFFFFFFFFFFFF0F0F0E7E7E7F3F3F3F5F5F5F7F7F7F6F6F6F6F6F6
+        F3F3F3F4F4F4F5F5F5F7F7F7F5F5F5F5F5F5F9F9F9F9F9F9F5F5F5E1E1E1CBCB
+        CBDEDEDEF3F3F3F8F8F8FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFE1E1E1CBCBCBC8
+        C8C8D6D6D6E7E7E7E7E7E7E5E5E5E6E6E6DDDDDDE6E6E6FFFFFFFFFFFFEFEFEF
+        E6E6E6E4E4E4E6E6E6E9E9E9EAEAEAEDEDEDEDEDEDEDEDEDEBEBEBE6E6E6D9D9
+        D9EAEAEAF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7F9
+        F9F9FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEEEEEEEBEBEBECECECECECECD0D0D0
+        DEDEDEFAFAFAFBFBFBF9F9F9F7F7F7F5F5F5E9E9E9E9E9E9E9E9E9EEEEEEECEC
+        ECE4E4E4E9E9E9ECECECE8E8E8E8E8E8E8E8E8D3D3D3A4A4A4B3B3B3DDDDDDF1
+        F1F1F4F4F4F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7F5F5F5F4F4F4F3F3F3F1F1F1
+        F4F4F4F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F6F6F6F4F4F4F2F2F2F2F2
+        F2F4F4F4F7F7F7F7F7F7F9F9F9F9F9F9F8F8F8F8F8F8F6F6F6F4F4F4F4F4F4FF
+        FFFFFFFFFFFFFFFFFFFFFFE9E9E9E4E4E4E2E2E2CACACA9C9C9CABABABDEDEDE
+        F9F9F9FDFDFDFFFFFFF8F8F8E4E4E4E5E5E5E3E3E3E3E3E3E7E7E7EAEAEAFCFC
+        FCFFFFFFFFFFFFFFFFFFF9F9F9ECECECE9E9E9E9E9E9E9E9E9E8E8E8ECECECE9
+        E9E9E6E6E6E7E7E7E8E8E8E5E5E5D3D3D3F8F8F8FFFFFFF3F3F3F7F7F7FFFFFF
+        FFFFFFEDEDEDE9E9E9DADADAC8C8C8C7C7C7B0B0B0B8B8B8DDDDDDF2F2F2F6F6
+        F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8
+        F8F8F9F9F9FAFAFAFFFFFFFFFFFFFDFDFDF4F4F4F1F1F1EAEAEAE7E7E7E8E8E8
+        E9E9E9D5D5D5E3E3E3FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E8
+        E8DCDCDCC3C3C3CFCFCFE9E9E9F4F4F4F4F4F4FFFFFFD9D9D9D6D6D6F3F3F3F5
+        F5F5FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F4F4F4F6F6F6F3F3F3F2F2F2F4F4F4
+        DADADAC8C8C8DBDBDBEEEEEEDEDEDEC0C0C0EAEAEAF9F9F9EBEBEBEBEBEBE9E9
+        E9EAEAEAE4E4E4D1D1D1CACACADCDCDCDFDFDFF8F8F8FDFDFDE9E9E9E9E9E9E8
+        E8E8E7E7E7E7E7E7C5C5C5D2D2D2F6F6F6F9F9F9FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFCFCFCEAEAEAEAEAEAEAEAEAE7E7E7E5E5E5E5E5E5E5E5E5E6E6E6E9E9
+        E9EAEAEAEAEAEAE9E9E9E9E9E9C5C5C5D3D3D3F4F4F4F5F5F5F7F7F7F6F6F6FF
+        FFFFFFFFFFFCFCFCE9E9E9E6E6E6D1D1D1E4E4E4F8F8F8F7F7F7F7F7F7F8F8F8
+        F9F9F9FAFAFAFBFBFBFFFFFFFDFDFDD0D0D0B5B5B5BABABAD3D3D3E7E7E7E7E7
+        E7E7E7E7E7E7E7E7E7E7E7E7E7D8D8D8B2B2B2D7D7D7FBFBFBFCFCFCFCFCFCFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDE0E0E0F0F0F0F3F3F3F3F3F3F1F1F1F5F5F5
+        F3F3F3F6F6F6F8F8F8F7F7F7F5F5F5F6F6F6FBFBFBFBFBFBFBFBFBFBFBFBF8F8
+        F8FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECD5D5D5D3
+        D3D3E5E5E5E9E9E9E7E7E7E7E7E7E9E9E9E9E9E9E9E9E9FFFFFFFFFFFFEDEDED
+        E7E7E7E5E5E5E6E6E6E9E9E9EAEAEAECECECECECECEBEBEBEAEAEAD7D7D7BABA
+        BADADADAF7F7F7F7F7F7F7F7F7F8F8F8F9F9F9FBFBFBFBFBFBF9F9F9FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFAFAFAEEEEEEE9E9E9E9E9E9E1E1E1D5D5D5C3C3C3
+        DEDEDEF8F8F8F8F8F8F8F8F8F7F7F7F6F6F6F5F5F5E8E8E8E8E8E8ECECECE7E7
+        E7E2E2E2E4E4E4E6E6E6E4E4E4E4E4E4D1D1D1A5A5A5B4B4B4DADADAEEEEEEEF
+        EFEFF1F1F1F1F1F1F5F5F5F2F2F2EDEDEDEEEEEEEEEEEEEDEDEDF2F2F2F6F6F6
+        F8F8F8FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBF8F8F8F6F6F6F5F5F5F5F5F5F4F4
+        F4F5F5F5F7F7F7F7F7F7F9F9F9F9F9F9F7F7F7F7F7F7F6F6F6F4F4F4F4F4F4FF
+        FFFFFFFFFFFDFDFDE9E9E9E6E6E6E2E2E2DEDEDEB6B6B6B3B3B3DADADAF3F3F3
+        FAFAFAFDFDFDFEFEFEF7F7F7E4E4E4DEDEDEDEDEDEE1E1E1E4E4E4E7E7E7EBEB
+        EBECECECEBEBEBEAEAEAEAEAEAE8E8E8E8E8E8E9E9E9E9E9E9E7E7E7E8E8E8E7
+        E7E7E2E2E2E1E1E1E3E3E3E1E1E1E1E1E1F4F4F4F5F5F5FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFE6E6E6D3D3D3D3D3D3C8C8C8D9D9D9F0F0F0F4F4F4F7F7
+        F7F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F9
+        F9F9FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F3F3F3EDEDEDE9E9E9E7E7E7E6E6E6
+        E6E6E6C5C5C5D5D5D5F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE5E5E5D1D1
+        D1C6C6C6CACACAE4E4E4F1F1F1F1F1F1F2F2F2F3F3F3E6E6E6E6E6E6F3F3F3F7
+        F7F7FFFFFFFCFCFCEEEEEEE9E9E9E6E6E6E4E4E4F0F0F0EFEFEFF0F0F0F2F2F2
+        E5E5E5D5D5D5E6E6E6DCDCDCB8B8B8C3C3C3FFFFFFFFFFFFEBEBEBEBEBEBEBEB
+        EBEAEAEAD5D5D5AEAEAEC8C8C8E7E7E7E6E6E6EFEFEFF0F0F0E9E9E9E7E7E7E7
+        E7E7E8E8E8E7E7E7BFBFBFD0D0D0F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFEEEEEE
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
+        EAECECECEBEBEBE9E9E9E9E9E9D7D7D7F4F4F4FFFFFFF7F7F7F8F8F8FFFFFFFF
+        FFFFFFFFFFE6E6E6E6E6E6E3E3E3E2E2E2D5D5D5E7E7E7FAFAFAFAFAFAFAFAFA
+        FCFCFCFCFCFCFBFBFBFCFCFCF9F9F9DFDFDFCACACACDCDCDE2E2E2E7E7E7E7E7
+        E7E7E7E7E7E7E7E8E8E8E4E4E4C8C8C8C6C6C6E7E7E7FAFAFAFAFAFAF8F8F8FF
+        FFFFFFFFFFFEFEFEEDEDEDE7E7E7CCCCCCDADADAF0F0F0F2F2F2F4F4F4F9F9F9
+        F8F8F8F9F9F9FBFBFBFBFBFBF9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFCFCFCFCFC
+        FCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F4F4F4F3
+        F3F3F4F4F4F3F3F3E7E7E7E9E9E9EAEAEAE9E9E9ECECECFBFBFBFBFBFBEDEDED
+        EAEAEAE7E7E7E7E7E7EAEAEAEAEAEAEAEAEAE9E9E9E7E7E7E3E3E3C3C3C3C7C7
+        C7E9E9E9F7F7F7F7F7F7F9F9F9FAFAFAFAFAFAFCFCFCFBFBFBFFFFFFFFFFFFFF
+        FFFFFFFFFFFCFCFCECECECEBEBEBEAEAEAE5E5E5DDDDDDCBCBCBCECECED9D9D9
+        E9E9E9F7F7F7F7F7F7F8F8F8F7F7F7F8F8F8F8F8F8FFFFFFF7F7F7E9E9E9E7E7
+        E7E4E4E4E6E6E6E5E5E5D3D3D3BFBFBFAAAAAAB9B9B9DEDEDEF1F1F1F3F3F3F4
+        F4F4F5F5F5F4F4F4F7F7F7EDEDEDECECECF3F3F3F3F3F3F4F4F4F9F9F9FCFCFC
+        FAFAFAFAFAFAFBFBFBFDFDFDFCFCFCFDFDFDFAFAFAF7F7F7F7F7F7F5F5F5F5F5
+        F5F7F7F7F8F8F8F7F7F7F9F9F9F9F9F9F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4FF
+        FFFFE9E9E9E9E9E9E6E6E6E4E4E4CFCFCFBABABAA4A4A4CACACAF1F1F1F5F5F5
+        FBFBFBFFFFFFFEFEFEFAFAFAF3F3F3E4E4E4E5E5E5E6E6E6E7E7E7E9E9E9ECEC
+        ECECECECE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E9E9E9E8E8E8E7E7E7E9E9E9EA
+        EAEAE7E7E7E5E5E5E9E9E9E4E4E4E1E1E1E4E4E4E6E6E6FDFDFDFFFFFFFFFFFF
+        FDFDFDF6F6F6FFFFFFF0F0F0E2E2E2F5F5F5FEFEFEFBFBFBF8F8F8F9F9F9F8F8
+        F8F8F8F8F8F8F8F8F8F8FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFDFDFDF0F0F0ECECECE7E7E7E6E6E6E6E6E6E7E7E7
+        E7E7E7C7C7C7E7E7E7FFFFFFFFFFFFFFFFFFEBEBEBEAEAEAD7D7D7C0C0C0D1D1
+        D1DCDCDCE6E6E6F4F4F4F4F4F4F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F8
+        F8F8F8F8F8FFFFFFFBFBFBE8E8E8E6E6E6E1E1E1CDCDCDDCDCDCEEEEEEF1F1F1
+        F3F3F3F1F1F1F3F3F3E5E5E5D0D0D0E0E0E0FFFFFFFFFFFFEBEBEBEBEBEBEBEB
+        EBE9E9E9C4C4C4BEBEBEE4E4E4FFFFFFFFFFFFFCFCFCEFEFEFE8E8E8E7E7E7E7
+        E7E7E8E8E8E4E4E4BEBEBED2D2D2F9F9F9FFFFFFFFFFFFFDFDFDECECECEBEBEB
+        EAEAEAEAEAEAEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAECECECEEEE
+        EEEEEEEEEBEBEBE9E9E9E9E9E9E7E7E7F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFF
+        FFFFFCFCFCE6E6E6E5E5E5E1E1E1D0D0D0AAAAAACECECEF7F7F7F5F5F5F7F7F7
+        F9F9F9F9F9F9FBFBFBFCFCFCFDFDFDF8F8F8F6F6F6F4F4F4F5F5F5FFFFFFF7F7
+        F7E7E7E7E7E7E7E7E7E7E1E1E1C6C6C6D6D6D6F4F4F4F7F7F7F5F5F5F7F7F7FF
+        FFFFFFFFFFECECECE6E6E6E2E2E2B5B5B5CACACAF4F4F4F7F7F7FAFAFAFFFFFF
+        FDFDFDFDFDFDFEFEFEFDFDFDFEFEFEFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFC
+        FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6F5F5F5F5
+        F5F5F5F5F5F4F4F4FFFFFFF7F7F7E9E9E9E8E8E8E9E9E9EBEBEBEBEBEBEBEBEB
+        EBEBEBE8E8E8EAEAEAEDEDEDECECECEAEAEAE9E9E9E7E7E7D5D5D5BABABADADA
+        DAF7F7F7F7F7F7F9F9F9FBFBFBF9F9F9F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFB
+        FBFBEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9DADADAC9C9C9D1D1D1E5E5E5F1F1F1
+        F4F4F4F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F8F8F8FFFFFFE6E6E6D9D9D9E9E9
+        E9E7E7E7D6D6D6C2C2C2AEAEAEBFBFBFD3D3D3E4E4E4F3F3F3F5F5F5F5F5F5F8
+        F8F8FBFBFBFBFBFBFBFBFBF5F5F5F5F5F5FBFBFBFBFBFBFBFBFBFEFEFEFDFDFD
+        FAFAFAFAFAFAFBFBFBFDFDFDFCFCFCFCFCFCF9F9F9F7F7F7F7F7F7F7F7F7F7F7
+        F7F8F8F8F9F9F9F8F8F8F9F9F9F8F8F8F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4FF
+        FFFFE7E7E7E7E7E7E6E6E6E2E2E2BCBCBCBABABACDCDCDE1E1E1F4F4F4F6F6F6
+        FDFDFDFFFFFFFBFBFBF9F9F9F6F6F6F4F4F4EDEDEDEDEDEDE9E9E9E9E9E9EEEE
+        EEECECECE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E7E7E7E9E9E9EA
+        EAEAEAEAEAEAEAEAEDEDEDE5E5E5E4E4E4E9E9E9E9E9E9EAEAEAEAEAEAE8E8E8
+        E8E8E8E7E7E7E6E6E6E4E4E4DFDFDFE4E4E4F5F5F5EDEDEDEDEDEDF9F9F9F8F8
+        F8F9F9F9F8F8F8F9F9F9FCFCFCF9F9F9FFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFF
+        FFFFFFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8
+        E7E7E7C6C6C6E7E7E7FBFBFBFBFBFBFBFBFBE9E9E9E7E7E7C6C6C6C7C7C7E7E7
+        E7F3F3F3F5F5F5F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F4F4F4F5F5F5F6F6F6F5
+        F5F5F5F5F5FFFFFFE9E9E9D8D8D8E6E6E6DEDEDEB6B6B6CBCBCBF1F1F1F4F4F4
+        F4F4F4F4F4F4F5F5F5F5F5F5F4F4F4F4F4F4FFFFFFEDEDEDDCDCDCDADADACACA
+        CAC7C7C7B0B0B0D0D0D0F3F3F3FFFFFFFFFFFFFCFCFCEEEEEEE8E8E8E8E8E8E8
+        E8E8E8E8E8E4E4E4BFBFBFD3D3D3FBFBFBFFFFFFFFFFFFF0F0F0EDEDEDEBEBEB
+        EAEAEAEAEAEAEAEAEAECECECEAEAEAEAEAEAEAEAEAEAEAEAEDEDEDEFEFEFEFEF
+        EFECECECEAEAEAEAEAEAE9E9E9E6E6E6E6E6E6E8E8E8FBFBFBFFFFFFFFFFFFFC
+        FCFCE5E5E5E1E1E1E0E0E0DEDEDEBABABAB5B5B5DFDFDFF4F4F4F5F5F5F6F6F6
+        FBFBFBFBFBFBFDFDFDFEFEFEFFFFFFFBFBFBF8F8F8F5F5F5F6F6F6FFFFFFFDFD
+        FDEEEEEEEBEBEBEAEAEAE6E6E6C9C9C9D9D9D9F5F5F5F6F6F6F5F5F5FFFFFFFF
+        FFFFFFFFFFE9E9E9E7E7E7E5E5E5B8B8B8CECECEF9F9F9F9F9F9FDFDFDFFFFFF
+        FEFEFEFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFFFF
+        FFFFFFFFFFFFFFE2E2E2EDEDEDFCFCFCFCFCFCFCFCFCF8F8F8F5F5F5F5F5F5F5
+        F5F5F5F5F5F7F7F7FFFFFFFFFFFFECECECE9E9E9EAEAEAEBEBEBEBEBEBEBEBEB
+        EBEBEBEAEAEAECECECECECECECECECE9E9E9E9E9E9E9E9E9C8C8C8C8C8C8EAEA
+        EAF7F7F7FAFAFAFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7FFFFFFFFFFFFF9F9F9EA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEACECECECFCFCFE6E6E6F1F1F1F3F3F3
+        F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F1F1F1DEDEDEDFDFDFD1D1
+        D1C0C0C0AFAFAFBFBFBFD3D3D3E6E6E6F7F7F7F6F6F6F5F5F5F7F7F7F5F5F5F5
+        F5F5FAFAFAFBFBFBFBFBFBF9F9F9F9F9F9FCFCFCFBFBFBFDFDFDFFFFFFFDFDFD
+        FAFAFAFBFBFBFDFDFDFEFEFEFCFCFCFCFCFCFBFBFBF8F8F8F7F7F7F7F7F7F8F8
+        F8F9F9F9F9F9F9F7F7F7F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3FF
+        FFFFE7E7E7E7E7E7E4E4E4DEDEDED1D1D1F0F0F0FFFFFFFFFFFFF9F9F9F9F9F9
+        FDFDFDFDFDFDF8F8F8F6F6F6F5F5F5F4F4F4FDFDFDF6F6F6EAEAEAEAEAEAEEEE
+        EEDEDEDECACACAC8C8C8D8D8D8E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9EAEAEAEA
+        EAEAE9E9E9EAEAEAEAEAEAE7E7E7E7E7E7E9E9E9E9E9E9E9E9E9E8E8E8E7E7E7
+        E8E8E8E8E8E8E7E7E7E4E4E4DCDCDCDCDCDCF7F7F7EFEFEFFBFBFBFFFFFFFFFF
+        FFFFFFFFFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F0F0F0FDFDFDFD
+        FDFDF4F4F4EFEFEFE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6
+        E7E7E7C3C3C3D2D2D2E6E6E6F7F7F7FAFAFAEAEAEAE9E9E9C9C9C9D6D6D6F3F3
+        F3F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F5F5F5F3
+        F3F3F3F3F3F1F1F1E1E1E1E6E6E6E5E5E5DEDEDEB7B7B7CFCFCFF4F4F4F5F5F5
+        F6F6F6F5F5F5F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9FFFFFFDCDCDCC5C5
+        C5D4D4D4D2D2D2E2E2E2F6F6F6F9F9F9FFFFFFFFFFFFEEEEEEE8E8E8E8E8E8E8
+        E8E8E8E8E8E3E3E3BFBFBFD5D5D5FAFAFAFFFFFFFFFFFFECECECEBEBEBE9E9E9
+        E9E9E9EAEAEAEAEAEAECECECECECECEAEAEAEAEAEAEDEDEDF0F0F0EEEEEEEAEA
+        EAE9E9E9E9E9E9E7E7E7E8E8E8E6E6E6E7E7E7EAEAEAEBEBEBEDEDEDECECECEA
+        EAEAE3E3E3DFDFDFDFDFDFCBCBCBA7A7A7CFCFCFF4F4F4F7F7F7F7F7F7F7F7F7
+        FBFBFBFCFCFCFDFDFDFEFEFEFDFDFDFBFBFBF8F8F8F7F7F7F7F7F7FFFFFFFFFF
+        FFFFFFFFE9E9E9D6D6D6C1C1C1B1B1B1D5D5D5F4F4F4F4F4F4F4F4F4FFFFFFFF
+        FFFFF8F8F8EAEAEAEAEAEAE9E9E9C1C1C1DADADAFEFEFEFBFBFBFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8FBFBFBFFFFFFFFFFFFFFFF
+        FFFFFFFFF0F0F0D5D5D5E6E6E6F7F7F7F8F8F8F8F8F8F7F7F7F4F4F4F3F3F3F3
+        F3F3F3F3F3F5F5F5FFFFFFFFFFFFEDEDEDEBEBEBEBEBEBE9E9E9E8E8E8E8E8E8
+        E9E9E9EBEBEBEBEBEBEEEEEEECECECE9E9E9E9E9E9E7E7E7C6C6C6D5D5D5F5F5
+        F5F6F6F6F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5FFFFFFF8F8F8EA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEADBDBDBBBBBBBD6D6D6F0F0F0F3F3F3F3F3F3
+        F4F4F4F7F7F7F7F7F7F4F4F4F1F1F1F2F2F2F2F2F2F0F0F0F0F0F0F1F1F1E2E2
+        E2D3D3D3D4D4D4E6E6E6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F5
+        F5F5F9F9F9FBFBFBFBFBFBF9F9F9FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFDFDFD
+        FBFBFBFDFDFDFFFFFFFEFEFEFDFDFDFDFDFDFBFBFBF8F8F8F7F7F7F8F8F8F9F9
+        F9F9F9F9F7F7F7F7F7F7F9F9F9F8F8F8F5F5F5F5F5F5F4F4F4F1F1F1F1F1F1FF
+        FFFFE7E7E7D4D4D4BDBDBDD1D1D1E7E7E7F8F8F8FFFFFFFDFDFDF7F7F7F9F9F9
+        FBFBFBF9F9F9F6F6F6F4F4F4F3F3F3F3F3F3FFFFFFFFFFFFF0F0F0F3F3F3F6F6
+        F6E0E0E0E6E6E6E6E6E6F3F3F3F7F7F7E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8
+        E8E8D3D3D3D5D5D5EAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E7E7E7
+        E9E9E9E9E9E9D5D5D5BABABABFBFBFCACACAEBEBEBF9F9F9FCFCFCFFFFFFFFFF
+        FFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEDEDEDECECECEFEFEFED
+        EDEDEDEDEDE7E7E7E2E2E2E6E6E6E7E7E7E6E6E6E6E6E6E5E5E5E4E4E4D0D0D0
+        BCBCBCA9A9A9D1D1D1F7F7F7FFFFFFFFFFFFECECECEBEBEBDBDBDBE6E6E6F5F5
+        F5F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAF9F9F9F9F9F9F8F8F8F7F7F7F5F5F5F4
+        F4F4F4F4F4F2F2F2F2F2F2F5F5F5F3F3F3DFDFDFD1D1D1F7F7F7FFFFFFFFFFFF
+        FFFFFFF6F6F6F7F7F7F7F7F7F9F9F9FAFAFAF8F8F8FFFFFFFFFFFFDCDCDCD5D5
+        D5F5F5F5F5F5F5F5F5F5FBFBFBFFFFFFFFFFFFFFFFFFEEEEEEE8E8E8E8E8E8E8
+        E8E8E6E6E6E1E1E1C1C1C1E4E4E4FFFFFFFFFFFFFFFFFFEDEDEDEDEDEDE9E9E9
+        E9E9E9EBEBEBECECECEDEDEDECECECEAEAEAEBEBEBEEEEEEEEEEEEEAEAEAE8E8
+        E8E8E8E8E8E8E8E6E6E6E7E7E7E6E6E6E7E7E7EAEAEAEAEAEAECECECECECECEA
+        EAEAE7E7E7E5E5E5D3D3D3ABABABBEBEBEE6E6E6F7F7F7F7F7F7F7F7F7F7F7F7
+        F8F8F8F8F8F8FBFBFBFDFDFDFDFDFDFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF7F7
+        F7CECECEB6B6B6A0A0A0B3B3B3CCCCCCE0E0E0F1F1F1F3F3F3F4F4F4FFFFFFFF
+        FFFFECECECEAEAEAE9E9E9E8E8E8D7D7D7F0F0F0FFFFFFFDFDFDFFFFFFFFFFFF
+        FFFFFFFFFFFFFEFEFEF9F9F9FFFFFFF8F8F8F5F5F5F7F7F7FAFAFAFDFDFDFDFD
+        FDFDFDFDF5F5F5F0F0F0F5F5F5F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F4F4F4F4
+        F4F4F4F4F4F5F5F5FEFEFEE7E7E7DADADAE5E5E5E6E6E6E5E5E5E6E6E6E8E8E8
+        E9E9E9EAEAEAEBEBEBF2F2F2F0F0F0EAEAEAE8E8E8D4D4D4B1B1B1D5D5D5F5F5
+        F5F5F5F5F5F5F5F5F5F5F6F6F6F5F5F5F4F4F4F3F3F3F5F5F5FFFFFFFFFFFFEA
+        EAEAEAEAEAE8E8E8E8E8E8EBEBEBDFDFDFD9D9D9E6E6E6F3F3F3F5F5F5F4F4F4
+        F6F6F6F4F4F4F1F1F1EEEEEEF1F1F1F5F5F5F3F3F3F2F2F2F5F5F5F8F8F8FAFA
+        FAFCFCFCFCFCFCF9F9F9F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F5F5F5F5F5F5F7
+        F7F7F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+        FEFEFEFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCF8F8F8F7F7F7F8F8F8F9F9F9FBFB
+        FBFCFCFCFBFBFBFBFBFBF8F8F8F7F7F7F6F6F6F6F6F6F4F4F4F3F3F3F3F3F3FF
+        FFFFE6E6E6D1D1D1DEDEDEFFFFFFF8F8F8EAEAEAEDEDEDE7E7E7E5E5E5F5F5F5
+        F9F9F9F7F7F7F4F4F4F4F4F4F3F3F3F3F3F3FEFEFEF8F8F8F4F4F4F7F7F7F3F3
+        F3EEEEEEEAEAEADADADAFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAE9E9E9E7E7E7D2
+        D2D2A1A1A1CECECEEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E7E7E7E9E9E9
+        EAEAEAEAEAEAC0C0C0BABABAD5D5D5D9D9D9F9F9F9FFFFFFF0F0F0EDEDEDEDED
+        EDECECECF8F8F8F8F8F8FFFFFFFFFFFFF0F0F0EDEDEDEDEDEDEFEFEFEFEFEFEC
+        ECECEAEAEAE7E7E7E4E4E4E6E6E6E2E2E2E1E1E1E2E2E2D0D0D0B7B7B79F9F9F
+        B9B9B9D1D1D1E4E4E4F9F9F9FFFFFFFFFFFFEBEBEBE9E9E9E9E9E9E8E8E8FFFF
+        FFFFFFFFF8F8F8FAFAFAFAFAFAF9F9F9F8F8F8F8F8F8F7F7F7F6F6F6F5F5F5F5
+        F5F5F5F5F5F4F4F4F5F5F5F7F7F7F5F5F5FFFFFFFCFCFCFFFFFFFDFDFDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCDCDCD4D4
+        D4F7F7F7F7F7F7F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFEEEEEEE8E8E8E8E8E8E8
+        E8E8E3E3E3DFDFDFC4C4C4F0F0F0FFFFFFFFFFFFF9F9F9F0F0F0EEEEEEEBEBEB
+        EBEBEBEDEDEDEEEEEEECECECEAEAEAEAEAEAECECECEDEDEDEAEAEAE8E8E8E9E9
+        E9E9E9E9E9E9E9E9E9E9E7E7E7E5E5E5E7E7E7EAEAEAEAEAEAECECECECECECEA
+        EAEAEAEAEAEAEAEAC3C3C3BBBBBBE3E3E3F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFF0F0
+        F0C8C8C8C8C8C8C8C8C8DDDDDDEFEFEFF1F1F1F3F3F3F5F5F5F6F6F6FFFFFFFF
+        FFFFEAEAEAE8E8E8E9E9E9E9E9E9EAEAEAEEEEEEF8F8F8FAFAFAFFFFFFFFFFFF
+        FFFFFFFEFEFEEBEBEBE6E6E6E7E7E7EAEAEAEAEAEAF6F6F6F5F5F5F5F5F5F4F4
+        F4F4F4F4F1F1F1F1F1F1F5F5F5F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7F7
+        F7F7F7F7F7F7F7F7F5F5F5E7E7E7E6E6E6DADADACDCDCDCCCCCCDADADAEAEAEA
+        EBEBEBEEEEEEEDEDEDF3F3F3F1F1F1E9E9E9E7E7E7C3C3C3BFBFBFE5E5E5F5F5
+        F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F5F5F5FFFFFFFFFFFFEC
+        ECECECECECE8E8E8E9E9E9EDEDEDEDEDEDEAEAEAFFFFFFFFFFFFFFFFFFF6F6F6
+        F5F5F5F0F0F0F1F1F1F3F3F3F5F5F5F9F9F9F8F8F8F8F8F8F9F9F9F9F9F9FBFB
+        FBFEFEFEFCFCFCFBFBFBFBFBFBFBFBFBF9F9F9F8F8F8F8F8F8F7F7F7F6F6F6F6
+        F6F6F7F7F7FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F8F8F8F9F9F9F9F9F9FBFBFBFEFE
+        FEFCFCFCFAFAFAF7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F4F4F4F4F4F4FF
+        FFFFD0D0D0CCCCCCF4F4F4FFFFFFF8F8F8EDEDEDF0F0F0EDEDEDECECECE7E7E7
+        EEEEEEF3F3F3F1F1F1F2F2F2F1F1F1F2F2F2F4F4F4FEFEFEFEFEFEF3F3F3ECEC
+        ECDADADAB8B8B8C4C4C4F3F3F3E9E9E9CACACADADADAE8E8E8D5D5D5BEBEBEA1
+        A1A1B5B5B5E6E6E6FEFEFEEEEEEEE9E9E9E9E9E9E8E8E8E7E7E7E7E7E7E9E9E9
+        EAEAEAD8D8D8ABABABD0D0D0F5F5F5F4F4F4FFFFFFFFFFFFEEEEEEECECECEBEB
+        EBEBEBEBECECECDEDEDEDDDDDDDDDDDDDEDEDEEDEDEDF0F0F0EEEEEEECECECEA
+        EAEAEAEAEAEAEAEAEAEAEAE9E9E9E6E6E6E4E4E4D3D3D3A4A4A4AFAFAFC8C8C8
+        E4E4E4F8F8F8F7F7F7F9F9F9FFFFFFEAEAEAD9D9D9E9E9E9E9E9E9E9E9E9FBFB
+        FBE9E9E9E7E7E7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F4F4F4F5F5F5F5
+        F5F5F5F5F5F5F5F5F6F6F6F7F7F7FFFFFFFFFFFFFFFFFFF0F0F0EAEAEAFEFEFE
+        FEFEFEFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5D5D5D1D1
+        D1F5F5F5F7F7F7F7F7F7FAFAFAFCFCFCFAFAFAFBFBFBD9D9D9C1C1C1C1C1C1C1
+        C1C1BEBEBEC1C1C1B3B3B3E1E1E1F8F8F8ECECECECECECEFEFEFEEEEEEEBEBEB
+        EBEBEBEDEDEDEFEFEFEDEDEDEBEBEBECECECECECECEAEAEAEAEAEAEAEAEAEAEA
+        EAE9E9E9EAEAEAECECECEAEAEAECECECEDEDEDECECECEBEBEBEBEBEBEBEBEBEA
+        EAEAE9E9E9E9E9E9C0C0C0CECECEF6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE8E8E8E5E5E5CFCF
+        CFE1E1E1F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F8F8F8FFFFFFFFFFFFFF
+        FFFFEAEAEAE9E9E9EAEAEAEBEBEBEBEBEBEBEBEBECECECFFFFFFFFFFFFFFFFFF
+        EEEEEEEAEAEAE6E6E6E4E4E4E7E7E7EAEAEAEAEAEAEAEAEAF4F4F4F4F4F4F4F4
+        F4F4F4F4F3F3F3F2F2F2F4F4F4F5F5F5F4F4F4F4F4F4F4F4F4F5F5F5F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5E9E9E9DBDBDBDBDBDBE9E9E9DFDFDF
+        D1D1D1E2E2E2EEEEEEF4F4F4F1F1F1E9E9E9E9E9E9D7D7D7E3E3E3F4F4F4F5F5
+        F5F5F5F5F4F4F4F5F5F5F6F6F6F5F5F5F5F5F5F5F5F5F7F7F7FFFFFFFFFFFFF3
+        F3F3EEEEEEEAEAEAEAEAEAEEEEEEEBEBEBE7E7E7F8F8F8FFFFFFF6F6F6F3F3F3
+        EFEFEFECECECF2F2F2F7F7F7F9F9F9FBFBFBF9F9F9F9F9F9FBFBFBFBFBFBFBFB
+        FBFDFDFDFBFBFBFCFCFCFCFCFCF9F9F9FFFFFFFFFFFFF6F6F6F4F4F4F1F1F1F0
+        F0F0F4F4F4F9F9F9FAFAFAFFFFFFFFFFFFF0F0F0EAEAEAEDEDEDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFCFCFCFDFDFDFDFDFDFEFEFEFDFD
+        FDFAFAFAF7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F4F4F4F4F4F4F5F5F5FF
+        FFFFDFDFDFDFDFDFE7E7E7EAEAEAEAEAEAEDEDEDEAEAEAE7E7E7E7E7E7DCDCDC
+        E4E4E4ECECECEEEEEEF0F0F0F0F0F0F1F1F1F4F4F4FFFFFFFFFFFFF1F1F1EAEA
+        EADADADAD6D6D6E6E6E6F4F4F4E5E5E5D6D6D6E6E6E6D8D8D8AFAFAFB7B7B7CA
+        CACAE4E4E4FBFBFBFFFFFFFFFFFFFBFBFBE9E9E9E7E7E7E7E7E7E9E9E9DFDFDF
+        D1D1D1B2B2B2B8B8B8DFDFDFF5F5F5F7F7F7FFFFFFFFFFFFEEEEEEEDEDEDECEC
+        ECEAEAEAE9E9E9CFCFCFCCCCCCDADADAF7F7F7FCFCFCEFEFEFECECECEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAD7D7D7ADADADB7B7B7DCDCDCF4F4F4
+        F9F9F9F8F8F8F8F8F8F8F8F8F9F9F9E7E7E7F7F7F7FBFBFBE9E9E9E9E9E9E9E9
+        E9C5C5C5D4D4D4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAF7F7F7F5F5F5F7F7F7F7
+        F7F7F7F7F7F7F7F7F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFEAEAEAE7E7E7E9E9E9
+        EAEAEAECECECECECECFEFEFEFFFFFFFFFFFFFEFEFEECECECE6E6E6D3D3D3E2E2
+        E2F5F5F5F7F7F7F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7E8E8E8D3D3D3D1D1D1D1
+        D1D1D1D1D1D1D1D1D4D4D4E5E5E5F6F6F6EDEDEDEDEDEDEFEFEFEDEDEDEBEBEB
+        EBEBEBEEEEEEEFEFEFECECECEAEAEAE9E9E9D9D9D9C7C7C7DADADAEAEAEAE9E9
+        E9E8E8E8EBEBEBEDEDEDEEEEEEEEEEEEE9E9E9EAEAEAEAEAEAEAEAEAECECECEA
+        EAEAE9E9E9EAEAEAC1C1C1D1D1D1F8F8F8FBFBFBF9F9F9F7F7F7F7F7F7F7F7F7
+        F9F9F9FFFFFFFFFFFFFDFDFDECECECEAEAEAECECECE6E6E6D0D0D0A9A9A9B8B8
+        B8E0E0E0F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFF7
+        F7F7EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBDDDDDDCFCFCFF0F0F0FFFFFFFDFDFD
+        EAEAEAE8E8E8E8E8E8E7E7E7E9E9E9EAEAEAEAEAEAEAEAEADBDBDBE6E6E6F1F1
+        F1F0F0F0F0F0F0F1F1F1F3F3F3F4F4F4F5F5F5F5F5F5F5F5F5F8F8F8FAFAFAF9
+        F9F9F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6EAEAEA
+        DBDBDBF7F7F7F9F9F9F2F2F2ECECECE7E7E7E9E9E9D4D4D4BCBCBCE1E1E1F5F5
+        F5F5F5F5F3F3F3F5F5F5F7F7F7F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFF1
+        F1F1EEEEEEEBEBEBEBEBEBEDEDEDEBEBEBE7E7E7E7E7E7E6E6E6E6E6E6E6E6E6
+        ECECECEDEDEDF5F5F5F9F9F9FBFBFBFBFBFBF9F9F9F9F9F9FBFBFBFCFCFCFCFC
+        FCFDFDFDFCFCFCFCFCFCFAFAFAFFFFFFFFFFFFFFFFFFF5F5F5F4F4F4F2F2F2F1
+        F1F1F5F5F5F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEBEBEBF9F9F9FAFAFAFFFFFFFFFFFFFBFBFBFCFCFCF9F9
+        F9F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F5F5F5F5F5F5F2F2F2F2F2F2F4F4F4FF
+        FFFFF5F5F5F5F5F5FFFFFFFCFCFCEAEAEAEAEAEAE7E7E7E4E4E4E4E4E4E4E4E4
+        E4E4E4EDEDEDEEEEEEF0F0F0F0F0F0F3F3F3F6F6F6FFFFFFFFFFFFEEEEEEEAEA
+        EAE9E9E9D9D9D9E3E3E3F3F3F3F3F3F3F4F4F4F5F5F5E1E1E1D0D0D0E1E1E1F5
+        F5F5FAFAFAFEFEFEFFFFFFFFFFFFDEDEDEC8C8C8C7C7C7D9D9D9DADADAC1C1C1
+        C1C1C1C7C7C7DFDFDFF5F5F5F9F9F9FBFBFBFFFFFFFFFFFFEEEEEEECECECEBEB
+        EBE9E9E9DCDCDCC2C2C2DBDBDBF5F5F5FFFFFFFAFAFAEEEEEEEAEAEAE9E9E9EA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9C1C1C1BBBBBBE0E0E0F2F2F2F6F6F6
+        FAFAFAFBFBFBFBFBFBF9F9F9FAFAFAF9F9F9FFFFFFFBFBFBE9E9E9EAEAEAEAEA
+        EAD7D7D7E4E4E4F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F5F5F5F5F5F5F7F7F7F7
+        F7F7F6F6F6F5F5F5F5F5F5F7F7F7FFFFFFE8E8E8D2D2D2E7E7E7E7E7E7E7E7E7
+        E7E7E7EAEAEAEAEAEAEDEDEDEDEDEDECECECEAEAEAE8E8E8E6E6E6E0E0E0D6D6
+        D6E8E8E8F7F7F7F7F7F7F7F7F7F6F6F6F7F7F7F7F7F7F9F9F9F5F5F5F1F1F1F3
+        F3F3F3F3F3F0F0F0F2F2F2F4F4F4F5F5F5FFFFFFFAFAFAEEEEEEEDEDEDECECEC
+        EBEBEBEEEEEEEEEEEEEBEBEBE7E7E7D7D7D7B6B6B6C3C3C3E5E5E5EAEAEAE8E8
+        E8E7E7E7EDEDEDF0F0F0ECECECE7E7E7E5E5E5E6E6E6E9E9E9EBEBEBECECECEA
+        EAEAEAEAEAEAEAEAC1C1C1D1D1D1F8F8F8FBFBFBF9F9F9F7F7F7F7F7F7F7F7F7
+        FFFFFFFFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAE7E7E7C3C3C3BFBFBFE2E2
+        E2F3F3F3F3F3F3F5F5F5F8F8F8F8F8F8F8F8F8FBFBFBFFFFFFFFFFFFF7F7F7EB
+        EBEBEBEBEBEBEBEBEBEBEBE9E9E9DADADAB8B8B8C1C1C1F8F8F8FFFFFFEDEDED
+        EAEAEAE9E9E9E8E8E8E8E8E8E6E6E6E7E7E7EAEAEAEAEAEACACACAD2D2D2EEEE
+        EEF1F1F1F4F4F4F5F5F5F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FCFCFCFDFDFDFA
+        FAFAF7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7
+        F5F5F5FFFFFFECECECE1E1E1D8D8D8D9D9D9EAEAEABCBCBCB7B7B7E2E2E2F5F5
+        F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EC
+        ECECEAEAEAEAEAEAECECECECECECECECECEAEAEAE9E9E9E7E7E7E6E6E6E6E6E6
+        D1D1D1E1E1E1F9F9F9FAFAFAFCFCFCFBFBFBF9F9F9F9F9F9FCFCFCFCFCFCFCFC
+        FCFCFCFCFBFBFBFBFBFBF8F8F8FFFFFFFFFFFFF6F6F6E9E9E9F4F4F4F3F3F3F4
+        F4F4F5F5F5F8F8F8FBFBFBFBFBFBFFFFFFFFFFFFEAEAEAEBEBEBEBEBEBEAEAEA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAF9F9F9FBFBFBF6F6F6F8F8F8F6F6
+        F6F6F6F6F5F5F5FCFCFCFFFFFFF9F9F9F0F0F0F0F0F0F0F0F0F3F3F3F5F5F5FF
+        FFFFFAFAFAF8F8F8FFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9
+        E6E6E6E6E6E6EAEAEAEDEDEDEFEFEFF2F2F2F4F4F4FFFFFFF8F8F8D7D7D7C6C6
+        C6C4C4C4B2B2B2D2D2D2F3F3F3F4F4F4F5F5F5F5F5F5F3F3F3F4F4F4FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF2F2F2D7D7D7D3D3D3D5D5D5E5E5E5CACACAC2C2C2
+        D9D9D9EAEAEAF4F4F4FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFCFCFCECECECEBEB
+        EBDEDEDEC5C5C5D0D0D0E9E9E9F6F6F6F7F7F7FFFFFFFBFBFBEBEBEBE9E9E9EA
+        EAEAEDEDEDEDEDEDEAEAEAEAEAEAD7D7D7ADADADD0D0D0F4F4F4F5F5F5F8F8F8
+        FDFDFDFFFFFFFEFEFEFAFAFAFBFBFBFAFAFAF8F8F8F8F8F8D9D9D9C8C8C8C5C5
+        C5C3C3C3C6C6C6E4E4E4F5F5F5F4F4F4F5F5F5F5F5F5F3F3F3F4F4F4F6F6F6F5
+        F5F5F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8E3E3E3F5F5F5F9F9F9E7E7E7E7E7E7
+        E7E7E7E6E6E6E6E6E6E9E9E9EAEAEAE8E8E8E8E8E8E8E8E8E4E4E4DDDDDDC4C4
+        C4D9D9D9F7F7F7F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F4
+        F4F4F4F4F4F3F3F3F3F3F3F3F3F3F5F5F5FFFFFFFFFFFFEDEDEDEEEEEEEDEDED
+        ECECECEFEFEFEEEEEEEBEBEBE7E7E7C7C7C7C5C5C5E3E3E3F3F3F3F4F4F4E9E9
+        E9E8E8E8EDEDEDECECECE7E7E7E2E2E2E1E1E1E2E2E2E3E3E3E7E7E7EAEAEAE8
+        E8E8E8E8E8E8E8E8BDBDBDD0D0D0F8F8F8F8F8F8F8F8F8F5F5F5F4F4F4F5F5F5
+        FFFFFFFFFFFFF9F9F9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAC6C6C6D2D2D2F3F3
+        F3F4F4F4F5F5F5FAFAFAFBFBFBF8F8F8F9F9F9FFFFFFFFFFFFFFFFFFEFEFEFED
+        EDEDEBEBEBEBEBEBE9E9E9D8D8D8B7B7B7BEBEBEDCDCDCFFFFFFF9F9F9E8E8E8
+        E6E6E6E6E6E6E7E7E7E8E8E8E6E6E6EAEAEAECECECEAEAEAC7C7C7D0D0D0F0F0
+        F0F3F3F3F5F5F5F5F5F5F4F4F4F4F4F4F7F7F7F8F8F8FBFBFBFEFEFEFFFFFFFD
+        FDFDFBFBFBFBFBFBF9F9F9F7F7F7F5F5F5F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5
+        F1F1F1F1F1F1EAEAEAEAEAEACCCCCCDADADAEAEAEABDBDBDCECECEF5F5F5F5F5
+        F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFFFFFFFFBFBFBEAEAEAEA
+        EAEAEAEAEAEBEBEBEDEDEDECECECEDEDEDEBEBEBEAEAEAE8E8E8E5E5E5E7E7E7
+        C2C2C2D1D1D1F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F9F9F9FBFBFBFBFBFBFCFC
+        FCFCFCFCF9F9F9F9F9F9F8F8F8FFFFFFEBEBEBCBCBCBCCCCCCCDCDCDE5E5E5F2
+        F2F2F3F3F3F7F7F7F9F9F9FBFBFBFFFFFFFFFFFFF0F0F0F1F1F1F0F0F0F0F0F0
+        F0F0F0EFEFEFEDEDEDECECECECECECEAEAEAEAEAEAEAEAEAE1E1E1EBEBEBF5F5
+        F5F5F5F5F5F5F5FBFBFBF4F4F4DFDFDFE2E2E2EFEFEFF4F4F4F6F6F6F8F8F8FF
+        FFFFFCFCFCFBFBFBFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E8E8
+        E6E6E6E4E4E4D9D9D9E2E2E2EEEEEEF3F3F3F4F4F4F5F5F5F1F1F1C1C1C1BFBF
+        BFD4D4D4D5D5D5E6E6E6F5F5F5F5F5F5F4F4F4F5F5F5F6F6F6FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3F2F2F2F3F3F3F1F1F1E1E1E1E1E1E1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEDEDEDECEC
+        ECD3D3D3D1D1D1E9E9E9F7F7F7F7F7F7F6F6F6FFFFFFFFFFFFEEEEEEECECECF0
+        F0F0F4F4F4EEEEEEEDEDEDECECECC3C3C3BCBCBCE3E3E3F6F6F6F5F5F5F8F8F8
+        FEFEFEFFFFFFFCFCFCFAFAFAFAFAFAF9F9F9F8F8F8F7F7F7E6E6E6D3D3D3D1D1
+        D1D0D0D0D1D1D1E2E2E2F4F4F4F3F3F3F3F3F3F5F5F5F5F5F5F5F5F5F6F6F6F6
+        F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFE2E2E2DEDEDE
+        DFDFDFE2E2E2E6E6E6E9E9E9E9E9E9E7E7E7E8E8E8E8E8E8E3E3E3DFDFDFC7C7
+        C7D9D9D9F7F7F7F6F6F6F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FA
+        FAFAF9F9F9F8F8F8F5F5F5F6F6F6F8F8F8FFFFFFFFFFFFEDEDEDEFEFEFEEEEEE
+        EDEDEDEEEEEEECECECE8E8E8E4E4E4C8C8C8D4D4D4EEEEEEF3F3F3F3F3F3F3F3
+        F3DBDBDBDEDEDEEAEAEAE4E4E4DFDFDFDFDFDFE2E2E2DEDEDEE2E2E2E7E7E7E8
+        E8E8E9E9E9D6D6D6A6A6A6D1D1D1F8F8F8F7F7F7F8F8F8F7F7F7F4F4F4F6F6F6
+        FBFBFBFFFFFFF9F9F9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAD2D2D2DFDFDFF3F3
+        F3F6F6F6F8F8F8FCFCFCFDFDFDFBFBFBFEFEFEFFFFFFFFFFFFF8F8F8F0F0F0ED
+        EDEDDDDDDDD1D1D1CCCCCCB7B7B7C0C0C0DEDEDEF2F2F2F7F7F7F8F8F8E7E7E7
+        E5E5E5E6E6E6E7E7E7E8E8E8E8E8E8EAEAEAEAEAEAEAEAEAC6C6C6D1D1D1F3F3
+        F3F5F5F5F5F5F5F5F5F5F4F4F4F5F5F5F8F8F8F9F9F9FCFCFCFFFFFFFFFFFFFF
+        FFFFFBFBFBFCFCFCFCFCFCFCFCFCF9F9F9FFFFFFFFFFFFF6F6F6F6F6F6F3F3F3
+        F3F3F3F6F6F6FBFBFBFAFAFAEAEAEAE8E8E8F4F4F4BABABACACACAF3F3F3F4F4
+        F4FFFFFFFFFFFFFCFCFCE9E9E9E9E9E9E9E9E9F7F7F7FBFBFBECECECE9E9E9EA
+        EAEAECECECEBEBEBEDEDEDEDEDEDEAEAEAEBEBEBEAEAEAE6E6E6E7E7E7EAEAEA
+        C3C3C3D2D2D2F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FAFAFAF9F9F9FAFA
+        FAFAFAFAF8F8F8F8F8F8F8F8F8F7F7F7E8E8E8D9D9D9D9D9D9D9D9D9E6E6E6F4
+        F4F4F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2F0F0F0EFEFEFEEEEEE
+        EEEEEEEDEDEDEDEDEDEDEDEDECECECE9E9E9E9E9E9E9E9E9D3D3D3DEDEDEF3F3
+        F3F2F2F2F2F2F2F1F1F1E6E6E6D7D7D7E2E2E2F4F4F4F8F8F8F8F8F8F8F8F8FF
+        FFFFFCFCFCFEFEFEFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E7E7E7
+        E7E7E7E4E4E4DDDDDDE4E4E4EDEDEDF5F5F5F5F5F5F7F7F7F4F4F4E2E2E2E6E6
+        E6F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFFF
+        FFFFEBEBEBFBFBFBFFFFFFECECECE4E4E4F4F4F4F4F4F4F3F3F3F1F1F1F4F4F4
+        FFFFFFFAFAFADADADAFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3EFEFEFEBEBEBDFDF
+        DFC6C6C6DDDDDDF4F4F4F5F5F5F5F5F5F4F4F4FFFFFFFCFCFCEFEFEFECECECEE
+        EEEEEFEFEFEAEAEAEBEBEBEAEAEAD7D7D7E3E3E3F6F6F6F8F8F8F9F9F9FBFBFB
+        FDFDFDFDFDFDFAFAFAFAFAFAF8F8F8F8F8F8F7F7F7F6F6F6F7F7F7F6F6F6F4F4
+        F4F4F4F4F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7F8
+        F8F8F8F8F8F8F8F8F9F9F9FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFE9E9E9E1E1E1
+        D0D0D0BEBEBED3D3D3E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E3E3E3E0E0E0C8C8
+        C8D9D9D9F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F8F8F8FAFAFAFCFCFCFCFCFCFD
+        FDFDFAFAFAF7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFEDEDEDEFEFEFEEEEEE
+        EDEDEDEDEDEDE9E9E9E7E7E7DBDBDBBABABAD1D1D1F0F0F0F5F5F5F7F7F7F6F6
+        F6E8E8E8F7F7F7F6F6F6E3E3E3E1E1E1E1E1E1E1E1E1DCDCDCE0E0E0E8E8E8EA
+        EAEAEAEAEAD5D5D5CBCBCBE7E7E7F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F8F8F8
+        F8F8F8FFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEADFDFDFD5D5D5E9E9
+        E9F6F6F6F9F9F9FBFBFBFCFCFCFEFEFEFFFFFFFDFDFDF9F9F9F6F6F6E4E4E4D6
+        D6D6C7C7C7CECECED2D2D2D0D0D0E1E1E1F3F3F3F7F7F7F8F8F8F8F8F8FFFFFF
+        FEFEFEE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6C1C1C1D1D1D1F5F5
+        F5F7F7F7F7F7F7F7F7F7F5F5F5F6F6F6F9F9F9FAFAFAFDFDFDFFFFFFFFFFFFF9
+        F9F9EAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F7F7F7F5F5F5
+        F7F7F7F9F9F9FCFCFCFBFBFBF9F9F9F7F7F7F5F5F5E1E1E1E0E0E0F4F4F4F5F5
+        F5FFFFFFFFFFFFE9E9E9E9E9E9E9E9E9E7E7E7E6E6E6E9E9E9E8E8E8E8E8E8EA
+        EAEAEAEAEAECECECEEEEEEEDEDEDEAEAEAECECECEAEAEAE6E6E6E9E9E9D8D8D8
+        AFAFAFD3D3D3F6F6F6F8F8F8F9F9F9F9F9F9FAFAFAFAFAFAF9F9F9FAFAFAFBFB
+        FBFCFCFCF9F9F9F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F6F6F6F6F6F6F5F5F5FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECEAEAEAE9E9E9E8E8E8
+        E8E8E8E8E8E8EAEAEAE7E7E7E7E7E7E7E7E7E8E8E8E9E9E9D3D3D3DDDDDDF1F1
+        F1F2F2F2F0F0F0ECECECE8E8E8ECECECF2F2F2F6F6F6F8F8F8FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAE9E9E9E7E7E7E8E8E8
+        E8E8E8E7E7E7EDEDEDEEEEEEF5F5F5F7F7F7F8F8F8FFFFFFFFFFFFF6F6F6F8F8
+        F8F8F8F8F7F7F7F6F6F6F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFEE
+        EEEEEAEAEAE5E5E5D3D3D3B2B2B2D5D5D5F6F6F6F7F7F7F7F7F7F6F6F6F6F6F6
+        F7F7F7E7E7E7D5D5D5FFFFFFFFFFFFEFEFEFEDEDEDEDEDEDEAEAEAEAEAEACECE
+        CECECECEE9E9E9F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4FFFFFFFDFDFDEBEBEBE9
+        E9E9E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9F8F8F8F9F9F9FAFAFAFAFAFA
+        FDFDFDFCFCFCFAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F4F4
+        F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFEBEBEBE6E6E6F7F7F7F8F8F8F8
+        F8F8F8F8F8F9F9F9FCFCFCFBFBFBFAFAFAFFFFFFFFFFFFFAFAFAE7E7E7D5D5D5
+        B3B3B3C1C1C1E5E5E5E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E4E4E4E3E3E3D9D9
+        D9E9E9E9F6F6F6F4F4F4F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFB
+        FBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEDEDEDEEEEEEECECEC
+        ECECECEAEAEAE8E8E8E8E8E8D2D2D2C8C8C8E2E2E2F5F5F5F7F7F7F9F9F9F8F8
+        F8F7F7F7FFFFFFF8F8F8E5E5E5E4E4E4E2E2E2E2E2E2DEDEDEE2E2E2E9E9E9EA
+        EAEAE8E8E8E2E2E2E3E3E3F9F9F9F8F8F8F8F8F8FAFAFAF8F8F8F8F8F8F8F8F8
+        F7F7F7FFFFFFF9F9F9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE2E2E2DADADAF6F6
+        F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F7F7F7F5F5F5EAEAEADF
+        DFDFDFDFDFE4E4E4EDEDEDEDEDEDF0F0F0F5F5F5F7F7F7F8F8F8F9F9F9FFFFFF
+        FEFEFEE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8D1D1D1A9A9A9D2D2D2F7F7
+        F7F7F7F7F7F7F7F5F5F5F5F5F5F7F7F7F9F9F9FBFBFBFEFEFEFCFCFCFFFFFFE1
+        E1E1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF0F0F0F9F9F9F6F6F6
+        F7F7F7FBFBFBFDFDFDFCFCFCFBFBFBF9F9F9FAFAFAFAFAFAF7F7F7F5F5F5F4F4
+        F4FFFFFFF9F9F9E8E8E8E7E7E7E6E6E6E5E5E5E7E7E7E7E7E7E4E4E4E7E7E7E9
+        E9E9E9E9E9EBEBEBECECECEAEAEAE7E7E7E7E7E7E8E8E8E9E9E9D9D9D9B2B2B2
+        BFBFBFE4E4E4F5F5F5F7F7F7F7F7F7F9F9F9F9F9F9F8F8F8F9F9F9FBFBFBFAFA
+        FAFDFDFDFBFBFBF7F7F7F9F9F9F9F9F9F8F8F8F7F7F7F8F8F8F6F6F6F7F7F7FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0ECECECEAEAEAE9E9E9E7E7E7E7E7E7
+        E7E7E7E8E8E8E6E6E6E1E1E1E3E3E3E5E5E5E8E8E8E9E9E9D3D3D3DCDCDCF2F2
+        F2F0F0F0EAEAEAEBEBEBEFEFEFF3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECEAEAEAEAEAEAE8E8E8E8E8E8EAEAEA
+        E9E9E9E9E9E9EDEDEDF0F0F0DADADAE6E6E6F7F7F7FFFFFFF8F8F8E9E9E9F8F8
+        F8F9F9F9F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFFCFCFCEC
+        ECECE6E6E6E0E0E0D0D0D0D2D2D2E7E7E7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F6F6F6F3F3F3F2F2F2FFFFFFFFFFFFEAEAEAE8E8E8E8E8E8E8E8E8E6E6E6DADA
+        DAE7E7E7F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFEAEAEAE7
+        E7E7E7E7E7E7E7E7E7E7E7E7E7E7E4E4E4E2E2E2D5D5D5E6E6E6F8F8F8F8F8F8
+        F9F9F9F9F9F9F9F9F9F8F8F8FAFAFAFCFCFCFBFBFBF7F7F7F6F6F6F5F5F5F4F4
+        F4F5F5F5F6F6F6FFFFFFFFFFFFEDEDEDECECECC6C6C6D5D5D5F8F8F8F9F9F9F9
+        F9F9F9F9F9FBFBFBFCFCFCF9F9F9FFFFFFFFFFFFFFFFFFF0F0F0ECECECE0E0E0
+        DADADAE7E7E7F7F7F7FFFFFFFCFCFCE9E9E9E8E8E8E7E7E7E7E7E7E5E5E5E6E6
+        E6DBDBDBE6E6E6F5F5F5F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFF9F9F9FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EDEDEDEAEAEAE9E9E9E9E9E9E2E2E2
+        D9D9D9D5D5D5D4D4D4D4D4D4C8C8C8D7D7D7EFEFEFF5F5F5F8F8F8F9F9F9F8F8
+        F8F7F7F7F9F9F9FFFFFFFBFBFBE9E9E9E5E5E5E4E4E4E0E0E0E1E1E1E8E8E8E8
+        E8E8E3E3E3E4E4E4E7E7E7DEDEDEE9E9E9F7F7F7F9F9F9F7F7F7F5F5F5F7F7F7
+        F8F8F8F8F8F8F8F8F8D7D7D7D7D7D7EAEAEAEAEAEAEAEAEAE8E8E8E6E6E6F8F8
+        F8FFFFFFFFFFFFFFFFFFF3F3F3EFEFEFF8F8F8F7F7F7F7F7F7F5F5F5F5F5F5F4
+        F4F4F3F3F3EDEDEDF0F0F0EFEFEFF0F0F0F6F6F6F8F8F8F9F9F9FAFAFAFBFBFB
+        FBFBFBE9E9E9E7E7E7E9E9E9E8E8E8E7E7E7E8E8E8BCBCBCB8B8B8E4E4E4F6F6
+        F6F6F6F6F5F5F5F5F5F5F6F6F6F8F8F8F9F9F9FBFBFBFDFDFDF9F9F9FFFFFFFE
+        FEFEFDFDFDFFFFFFFFFFFFECECECECECECECECECECECECEFEFEFEEEEEEF7F7F7
+        F8F8F8F9F9F9FCFCFCFCFCFCFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F0F0
+        F0F1F1F1F4F4F4E5E5E5E4E4E4E3E3E3E4E4E4E6E6E6E7E7E7E7E7E7E7E7E7E9
+        E9E9E9E9E9E9E9E9E9E9E9E7E7E7E6E6E6E6E6E6D6D6D6C4C4C4B1B1B1C1C1C1
+        E6E6E6F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F9F9F9FAFAFAFAFA
+        FAFFFFFFFCFCFCF8F8F8FBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6FF
+        FFFFFFFFFFECECECEDEDEDEDEDEDECECECEAEAEAE9E9E9E7E7E7E6E6E6E6E6E6
+        E7E7E7E4E4E4E0E0E0E1E1E1E2E2E2E6E6E6E9E9E9E9E9E9D3D3D3DCDCDCF0F0
+        F0EAEAEAEBEBEBF2F2F2F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFEFEFEFFFFFFFFFFFFECECECD7D7D7E9E9E9E7E7E7E7E7E7E9E9E9EAEAEA
+        E9E9E9E9E9E9EBEBEBEBEBEBD8D8D8F5F5F5FFFFFFFFFFFFF1F1F1ECECECFFFF
+        FFF8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F8F8F8FFFFFFFDFDFDEC
+        ECECE4E4E4E0E0E0E2E2E2D9D9D9E8E8E8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F4F4F4F0F0F0F2F2F2FFFFFFF9F9F9E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E7E7
+        E7E9E9E9F4F4F4F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4FFFFFFFFFFFFE8E8E8E7
+        E7E7E7E7E7E7E7E7E7E7E7E7E7E7E4E4E4E0E0E0BEBEBED3D3D3F8F8F8F8F8F8
+        F8F8F8F8F8F8F9F9F9F8F8F8FAFAFAF7F7F7F5F5F5F4F4F4F5F5F5F5F5F5F7F7
+        F7F7F7F7F7F7F7FFFFFFFFFFFFEDEDEDEAEAEAC4C4C4D4D4D4F8F8F8FAFAFAFA
+        FAFAFAFAFAFBFBFBF9F9F9F9F9F9FFFFFFFFFFFFFFFFFFF1F1F1F0F0F0F1F1F1
+        DEDEDEE7E7E7F7F7F7FFFFFFFFFFFFE9E9E9E6E6E6E4E4E4E4E4E4E4E4E4E5E5
+        E5C9C9C9D7D7D7F5F5F5F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFEFEFEFF1F1F1FE
+        FEFEFFFFFFFDFDFDF0F0F0EDEDEDEAEAEADDDDDDD1D1D1D6D6D6DADADAD3D3D3
+        D7D7D7DEDEDEDEDEDEDEDEDEDCDCDCE2E2E2EEEEEEF5F5F5F9F9F9FAFAFAF7F7
+        F7F7F7F7F9F9F9FFFFFFFBFBFBE9E9E9E4E4E4E2E2E2DEDEDEE2E2E2E8E8E8E8
+        E8E8E7E7E7E9E9E9EBEBEBCECECED7D7D7F7F7F7F9F9F9F8F8F8F7F7F7F8F8F8
+        F8F8F8F8F8F8F8F8F8E9E9E9E7E7E7EAEAEAEAEAEAEAEAEAEAEAEAE2E2E2E6E6
+        E6F1F1F1F5F5F5F1F1F1DFDFDFEAEAEAF5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3
+        F3F3F2F2F2EEEEEEF1F1F1EEEEEEF1F1F1F7F7F7F9F9F9FAFAFAFAFAFAFBFBFB
+        FEFEFEFFFFFFFEFEFEE8E8E8E7E7E7E7E7E7D1D1D1A1A1A1CCCCCCF4F4F4F5F5
+        F5F6F6F6F5F5F5F4F4F4F7F7F7F7F7F7F9F9F9FCFCFCFCFCFCFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFBFBFBEDEDEDECECECEAEAEAEAEAEAEAEAEAEAEAEAEDEDED
+        F8F8F8FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECE2E2E2F2F2
+        F2F4F4F4F6F6F6F9F9F9E5E5E5E3E3E3E5E5E5E6E6E6E4E4E4E5E5E5E7E7E7E8
+        E8E8E9E9E9E9E9E9E9E9E9E7E7E7E6E6E6D5D5D5AFAFAFC0C0C0D4D4D4E7E7E7
+        F7F7F7F8F8F8FAFAFAFAFAFAFAFAFAFAFAFAF8F8F8F8F8F8FCFCFCFDFDFDFEFE
+        FEFFFFFFFDFDFDFBFBFBFCFCFCF9F9F9F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5FF
+        FFFFFFFFFFEAEAEAEAEAEAECECECEBEBEBE9E9E9E7E7E7E6E6E6E4E4E4E6E6E6
+        E7E7E7DCDCDCCACACABFBFBFC3C3C3D6D6D6E8E8E8E9E9E9DFDFDFF3F3F3F8F8
+        F8ECECECF2F2F2F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFF1F1F1F0F0F0EFEFEFFF
+        FFFFDFDFDFCCCCCCC3C3C3AFAFAFE2E2E2F7F7F7E5E5E5E7E7E7EAEAEAEAEAEA
+        E9E9E9E9E9E9EBEBEBEBEBEBEBEBEBF9F9F9FFFFFFFFFFFFF0F0F0FFFFFFFBFB
+        FBECECECF9F9F9F8F8F8F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFE8
+        E8E8E1E1E1E2E2E2E5E5E5CBCBCBDCDCDCF8F8F8F7F7F7F7F7F7FFFFFFFFFFFF
+        F4F4F4F1F1F1F5F5F5F7F7F7F8F8F8E9E9E9E8E8E8E8E8E8E8E8E8E6E6E6E2E2
+        E2E7E7E7DCDCDCE5E5E5F1F1F1F4F4F4F4F4F4F3F3F3FFFFFFFFFFFFE7E7E7E7
+        E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6CECECEA7A7A7D3D3D3F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFF3F3F3F5F5F5F5F5F5F7F7F7F8F8
+        F8F8F8F8F7F7F7FFFFFFFDFDFDDADADAC5C5C5AFAFAFD3D3D3F8F8F8F8F8F8F8
+        F8F8F9F9F9FAFAFAF8F8F8F8F8F8FFFFFFFEFEFEEFEFEFEBEBEBDEDEDED0D0D0
+        BBBBBBDBDBDBFAFAFAFCFCFCFFFFFFFCFCFCE6E6E6E4E4E4E4E4E4E6E6E6E5E5
+        E5C6C6C6D5D5D5F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF3F3F3F4F4F4F4
+        F4F4F1F1F1EEEEEEEDEDEDEAEAEAD9D9D9BFBFBFCECECEE2E2E2E3E3E3E2E2E2
+        EAEAEAF1F1F1F1F1F1F0F0F0F1F1F1EFEFEFF1F1F1F5F5F5F7F7F7F8F8F8F8F8
+        F8F8F8F8F9F9F9F8F8F8F5F5F5D6D6D6D3D3D3E0E0E0E1E1E1E6E6E6EAEAEAEA
+        EAEAEAEAEAEEEEEEEDEDEDCCCCCCD7D7D7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9
+        FBFBFBF9F9F9F8F8F8FBFBFBF9F9F9F7F7F7D7D7D7D7D7D7EAEAEAE3E3E3EAEA
+        EAF5F5F5F3F3F3EEEEEEECECECDFDFDFE7E7E7F4F4F4F6F6F6F6F6F6F4F4F4F4
+        F4F4F4F4F4F2F2F2F4F4F4F0F0F0F4F4F4F8F8F8F9F9F9FBFBFBFBFBFBFFFFFF
+        FFFFFFFFFFFFF4F4F4C7C7C7C6C6C6C1C1C1A1A1A1B4B4B4E2E2E2F6F6F6F7F7
+        F7F8F8F8F7F7F7F6F6F6F7F7F7F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFD
+        FDFDF0F0F0F2F2F2F0F0F0ECECECEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEDEDED
+        ECECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0DEDEDEE7E7E7F5F5
+        F5F8F8F8F9F9F9FDFDFDF9F9F9D0D0D0D0D0D0E6E6E6E2E2E2E2E2E2E7E7E7E8
+        E8E8E6E6E6E8E8E8E7E7E7D1D1D1BCBCBCAAAAAABCBCBCE6E6E6F8F8F8F8F8F8
+        F8F8F8F8F8F8F9F9F9F9F9F9FDFDFDFDFDFDFAFAFAFCFCFCFFFFFFFFFFFFFFFF
+        FFFFFFFFFEFEFEFCFCFCFAFAFAF7F7F7F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFF
+        FFFFFFFFFFEAEAEAEAEAEAEEEEEEEDEDEDE8E8E8E7E7E7E6E6E6E6E6E6E6E6E6
+        D0D0D0B0B0B0A9A9A9C2C2C2D4D4D4F3F3F3FAFAFAEEEEEEECECECF8F8F8F7F7
+        F7F4F4F4F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F0F0F0ECECECEBEBEBFF
+        FFFFBABABAB1B1B1C5C5C5D4D4D4F7F7F7F9F9F9E6E6E6EAEAEAEAEAEAE9E9E9
+        E8E8E8E9E9E9EBEBEBEBEBEBEBEBEBE9E9E9ECECECEEEEEEE8E8E8F9F9F9E4E4
+        E4DFDFDFFBFBFBF8F8F8F5F5F5F7F7F7F5F5F5F5F5F5F7F7F7FFFFFFFDFDFDEA
+        EAEAE5E5E5E7E7E7E8E8E8DCDCDCEAEAEAF5F5F5F5F5F5FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF9F9F9FBFBFBFAFAFAD2D2D2D1D1D1E6E6E6E1E1E1E2E2
+        E2E7E7E7DBDBDBE4E4E4F1F1F1F3F3F3F2F2F2F4F4F4FFFFFFFFFFFFEBEBEBE7
+        E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6CDCDCDCACACAE4E4E4F8F8F8F8F8F8
+        F8F8F8F5F5F5F3F3F3F5F5F5FFFFFFEAEAEAE8E8E8F7F7F7F7F7F7F7F7F7F9F9
+        F9F8F8F8F7F7F7F9F9F9F7F7F7C8C8C8BEBEBED1D1D1E6E6E6F7F7F7F8F8F8F9
+        F9F9F9F9F9F9F9F9F7F7F7FBFBFBFEFEFEF9F9F9E5E5E5D5D5D5C1C1C1C9C9C9
+        D8D8D8EAEAEAF8F8F8FCFCFCFFFFFFFFFFFFE6E6E6E5E5E5E4E4E4E4E4E4D1D1
+        D1AAAAAAD3D3D3F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF7F7F7F6F6F6F3
+        F3F3EEEEEEEAEAEAE8E8E8E5E5E5CACACACACACAEAEAEAF7F7F7F6F6F6F4F4F4
+        F4F4F4F3F3F3F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F4F4F4F6F6F6F5F5F5F7F7
+        F7F8F8F8F8F8F8F5F5F5F3F3F3E1E1E1E2E2E2D3D3D3D5D5D5E9E9E9E9E9E9EC
+        ECECECECECECECECECECECDDDDDDF7F7F7FFFFFFF9F9F9F9F9F9F9F9F9FBFBFB
+        FDFDFDFBFBFBF8F8F8FAFAFAFAFAFAF8F8F8F5F5F5FFFFFFF9F9F9E5E5E5E8E8
+        E8EAEAEAEAEAEAECECECECECECDEDEDEE7E7E7F4F4F4F6F6F6F5F5F5F4F4F4F5
+        F5F5F5F5F5F5F5F5F3F3F3F1F1F1F6F6F6F9F9F9F9F9F9FCFCFCFEFEFEFFFFFF
+        FFFFFFFFFFFFE9E9E9D4D4D4D0D0D0C5C5C5C5C5C5E1E1E1F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEE
+        EEEEEDEDEDEDEDEDEDEDEDECECECEAEAEAEAEAEAEAEAEAEBEBEBECECECEBEBEB
+        E9E9E9F9F9F9FFFFFFFFFFFFFCFCFCF0F0F0EEEEEEECECECEAEAEAD7D7D7E4E4
+        E4F8F8F8FDFDFDFEFEFEFBFBFBE3E3E3E2E2E2E4E4E4DFDFDFE2E2E2E7E7E7E8
+        E8E8E4E4E4E5E5E5D2D2D2A9A9A9BABABACCCCCCE2E2E2F7F7F7F5F5F5F6F6F6
+        F8F8F8F8F8F8F8F8F8F8F8F8FEFEFEF8F8F8F5F5F5FCFCFCFDFDFDFDFDFDFFFF
+        FFFFFFFFFDFDFDFCFCFCF8F8F8F6F6F6F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF8F8F8EAEAEAECECECEEEEEEEBEBEBE8E8E8E7E7E7E7E7E7E7E7E7E6E6E6
+        B5B5B5B2B2B2D3D3D3E9E9E9F8F8F8FFFFFFFFFFFFF0F0F0ECECECEEEEEEF0F0
+        F0EDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEAEAEAEBEBEBEEEEEEFF
+        FFFFC2C2C2DBDBDBEBEBEBF7F7F7F7F7F7F7F7F7EAEAEAEAEAEAE8E8E8E9E9E9
+        E9E9E9EAEAEAEBEBEBEBEBEBEBEBEBE9E9E9EBEBEBECECECE9E9E9EDEDEDE1E1
+        E1F5F5F5FFFFFFFFFFFFF7F7F7F7F7F7F4F4F4F5F5F5F8F8F8FBFBFBFFFFFFF9
+        F9F9EAEAEAEAEAEAE9E9E9E6E6E6DCDCDCE7E7E7F5F5F5FFFFFFFFFFFFFCFCFC
+        FAFAFAFFFFFFEBEBEBEDEDEDFBFBFBF9F9F9E4E4E4E5E5E5D2D2D2CFCFCFE7E7
+        E7EAEAEAEAEAEAD9D9D9E1E1E1F1F1F1F3F3F3FFFFFFFFFFFFFFFFFFEEEEEEE7
+        E7E7E7E7E7E7E7E7E7E7E7E7E7E7E4E4E4CCCCCCBABABAE4E4E4F8F8F8F8F8F8
+        F5F5F5F0F0F0F0F0F0F6F6F6F7F7F7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F7F9F9
+        F9F8F8F8F7F7F7F7F7F7F6F6F6E3E3E3E2E2E2F6F6F6F9F9F9F8F8F8FBFBFBFC
+        FCFCFBFBFBFAFAFAFBFBFBFEFEFEFDFDFDF7F7F7ECECECDEDEDED7D7D7E5E5E5
+        F4F4F4F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFE5E5E5E3E3E3E1E1E1E0E0E0BABA
+        BABABABAE4E4E4F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF3F3F3F1F1F1EE
+        EEEEE8E8E8E7E7E7E8E8E8E8E8E8DBDBDBE7E7E7F7F7F7F8F8F8F9F9F9F8F8F8
+        F5F5F5F4F4F4F3F3F3F3F3F3F2F2F2F0F0F0F0F0F0F3F3F3F5F5F5F5F5F5F6F6
+        F6F5F5F5F4F4F4F5F5F5F3F3F3F1F1F1F3F3F3E5E5E5E7E7E7EAEAEAE9E9E9EB
+        EBEBEAEAEAECECECEDEDEDEDEDEDFEFEFEFFFFFFFFFFFFFFFFFFFBFBFBFDFDFD
+        FCFCFCF9F9F9F9F9F9FBFBFBFBFBFBF8F8F8FFFFFFFFFFFFF5F5F5E3E3E3E3E3
+        E3E4E4E4ECECECEEEEEEECECECEBEBEBDEDEDEE9E9E9F4F4F4F2F2F2F2F2F2F4
+        F4F4F3F3F3F3F3F3F0F0F0F0F0F0F5F5F5F9F9F9FCFCFCFFFFFFFFFFFFFFFFFF
+        FFFFFFF9F9F9F4F4F4F2F2F2E9E9E9E6E6E6EEEEEEF5F5F5F5F5F5F8F8F8F8F8
+        F8F8F8F8F9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EAEAEAEA
+        EAEAE9E9E9EAEAEAECECECECECECEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBE9E9E9
+        E7E7E7E9E9E9ECECECEBEBEBECECECEFEFEFEEEEEEECECECECECECD8D8D8E5E5
+        E5FBFBFBFEFEFEFCFCFCF9F9F9F8F8F8F8F8F8F4F4F4E2E2E2E6E6E6E8E8E8E8
+        E8E8E4E4E4E1E1E1CCCCCCCBCBCBE2E2E2F4F4F4F7F7F7F9F9F9F7F7F7FAFAFA
+        FBFBFBF9F9F9F9F9F9F8F8F8FBFBFBF1F1F1F0F0F0F6F6F6FAFAFAFCFCFCFEFE
+        FEFFFFFFFEFEFEFAFAFAF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+        F7F7EAEAEAEAEAEAEBEBEBECECECEAEAEAE8E8E8E8E8E8E4E4E4E4E4E4CCCCCC
+        9E9E9ECECECEF8F8F8F8F8F8F9F9F9FFFFFFFFFFFFEEEEEEEBEBEBEEEEEEEEEE
+        EEECECECFFFFFFFFFFFFFFFFFFF0F0F0EAEAEAE7E7E7E6E6E6E9E9E9ECECECFF
+        FFFFEDEDEDFDFDFDFBFBFBF8F8F8F7F7F7F7F7F7F5F5F5DEDEDECDCDCDCCCCCC
+        DBDBDBEAEAEAEBEBEBEBEBEBEBEBEBE9E9E9EAEAEAECECECE9E9E9E9E9E9EBEB
+        EBF7F7F7FFFFFFF9F9F9F1F1F1EEEEEEF0F0F0F4F4F4F9F9F9FCFCFCFFFFFFFD
+        FDFDECECECEAEAEAE8E8E8D9D9D9C1C1C1DBDBDBF3F3F3FFFFFFFEFEFEF1F1F1
+        EDEDEDECECECDFDFDFF1F1F1FEFEFEFAFAFAFBFBFBFBFBFBE5E5E5E5E5E5ECEC
+        ECEAEAEAEAEAEADADADAE1E1E1F0F0F0FFFFFFFFFFFFFFFFFFFDFDFDE9E9E9E8
+        E8E8E7E7E7E7E7E7E7E7E7E7E7E7E1E1E1B8B8B8B7B7B7E4E4E4F8F8F8F7F7F7
+        F1F1F1F0F0F0F3F3F3F8F8F8F9F9F9F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F9F9
+        F9F8F8F8F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F8F8F8F8F8F8F7F7F7FBFBFBFB
+        FBFBF9F9F9F9F9F9FBFBFBFBFBFBF7F7F7F2F2F2F1F1F1F0F0F0F1F1F1F4F4F4
+        F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFF7F7F7E4E4E4E1E1E1DFDFDFDFDFDFBABA
+        BACECECEF7F7F7F7F7F7F7F7F7F7F7F7FAFAFAFFFFFFFFFFFFFDFDFDECECECE8
+        E8E8E3E3E3E5E5E5EAEAEAE9E9E9E9E9E9EBEBEBF7F7F7F8F8F8F9F9F9F9F9F9
+        F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F4F4F4F5F5F5F5F5F5F5F5
+        F5F4F4F4F5F5F5F4F4F4F3F3F3F5F5F5F7F7F7F7F7F7F8F8F8FFFFFFFBFBFBE9
+        E9E9E9E9E9EBEBEBEBEBEBECECECEFEFEFF0F0F0FEFEFEFEFEFEFDFDFDFCFCFC
+        F9F9F9F8F8F8FAFAFAFAFAFAFAFAFAF8F8F8F7F7F7FFFFFFF0F0F0E9E9E9EBEB
+        EBEDEDEDF4F4F4F1F1F1EDEDEDECECECD1D1D1DCDCDCF1F1F1F0F0F0F2F2F2F3
+        F3F3EEEEEEF4F4F4F1F1F1F1F1F1F8F8F8F9F9F9FDFDFDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1EAEAEAEDEDEDF5F5F5F6F6F6F7F7F7F8F8F8F8F8
+        F8F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCEDEDEDECECECEAEAEAE9
+        E9E9E9E9E9EBEBEBEDEDEDECECECEAEAEAEAEAEAEAEAEAEDEDEDECECECEAEAEA
+        E7E7E7E9E9E9EAEAEAE8E8E8E9E9E9ECECECECECECECECECEDEDEDEEEEEEEEEE
+        EEFBFBFBFBFBFBF8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7E8E8E8E8E8E8E6
+        E6E6DFDFDFD9D9D9DEDEDED7D7D7F4F4F4FFFFFFF9F9F9FAFAFAFCFCFCFFFFFF
+        FCFCFCFAFAFAFBFBFBF9F9F9F8F8F8F5F5F5F4F4F4F5F5F5FBFBFBFBFBFBFDFD
+        FDFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAE9E9E9E8
+        E8E8E9E9E9EAEAEAEBEBEBECECECEBEBEBEAEAEAE6E6E6E2E2E2E4E4E4BBBBBB
+        B6B6B6E3E3E3F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFEEEEEEEBEBEBEDEDEDEAEA
+        EAE9E9E9F1F1F1F3F3F3ECECECE8E8E8E6E6E6E5E5E5E6E6E6E6E6E6E6E6E6FF
+        FFFFF8F8F8FFFFFFFFFFFFF7F7F7F6F6F6F6F6F6F5F5F5E7E7E7D4D4D4D2D2D2
+        E2E2E2D8D8D8C8C8C8DADADAEBEBEBEAEAEAECECECEDEDEDEBEBEBEDEDEDEEEE
+        EEEDEDEDEDEDEDEDEDEDD5D5D5E0E0E0F4F4F4FBFBFBFDFDFDFCFCFCFDFDFDFF
+        FFFFF9F9F9ECECECEEEEEED1D1D1CACACAE5E5E5F2F2F2F4F4F4F8F8F8EDEDED
+        EAEAEAECECECEDEDEDE4E4E4EEEEEEFAFAFAFBFBFBFBFBFBF8F8F8FCFCFCFAFA
+        FAEAEAEAEAEAEAD7D7D7BEBEBEF3F3F3FFFFFFFFFFFFFFFFFFEBEBEBE7E7E7E9
+        E9E9E7E7E7E7E7E7E7E7E7D1D1D1B5B5B5A5A5A5CECECEF5F5F5F8F8F8F4F4F4
+        EEEEEEF1F1F1F4F4F4F4F4F4F4F4F4FBFBFBFDFDFDF8F8F8F7F7F7F7F7F7F9F9
+        F9F8F8F8F6F6F6F4F4F4F5F5F5F5F5F5F6F6F6F7F7F7F8F8F8F7F7F7F7F7F7F8
+        F8F8F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F3F3F3F3F3F3F3F3F3F4F4F4F5F5F5
+        F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFE8E8E8E3E3E3E1E1E1E1E1E1E0E0E0BCBC
+        BCD1D1D1F7F7F7F8F8F8F7F7F7F8F8F8FDFDFDFEFEFEFFFFFFFFFFFFE4E4E4E3
+        E3E3E1E1E1E3E3E3E7E7E7E5E5E5E8E8E8ECECECECECECF8F8F8FBFBFBF8F8F8
+        F5F5F5FFFFFFFFFFFFFFFFFFFDFDFDF1F1F1F1F1F1F4F4F4F5F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F8F8F8F7F7F7F8F8F8FFFFFFFDFDFDE9
+        E9E9E9E9E9EAEAEAEAEAEAECECECECECECEAEAEAEAEAEAECECECEEEEEEFBFBFB
+        F9F9F9F8F8F8FAFAFAF9F9F9F9F9F9F8F8F8F7F7F7FFFFFFF8F8F8F0F0F0F1F1
+        F1EDEDEDF1F1F1F1F1F1EFEFEFEDEDEDE1E1E1EAEAEAF1F1F1F2F2F2F5F5F5F5
+        F5F5F3F3F3F9F9F9F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFEDEDED
+        FFFFFFFFFFFFE5E5E5DEDEDEE6E6E6EEEEEEF5F5F5F7F7F7F8F8F8F8F8F8F8F8
+        F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCECECECECECECEAEAEAE7E7E7E7
+        E7E7E9E9E9EDEDEDEDEDEDEBEBEBEAEAEAEAEAEAEAEAEAECECECECECECE9E9E9
+        E7E7E7EAEAEAE9E9E9E4E4E4E6E6E6E9E9E9EAEAEAEBEBEBEDEDEDF0F0F0EDED
+        EDECECECF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFF9F9F9E2
+        E2E2DCDCDCDEDEDEE7E7E7CECECEF7F7F7FBFBFBECECECFBFBFBFFFFFFFFFFFF
+        FBFBFBFAFAFAFAFAFAF7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F9F9F9F9F9F9FBFB
+        FBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E7E7E7E6E6E6E4E4E4E6E6E6E6
+        E6E6E8E8E8EAEAEAECECECEDEDEDEDEDEDEBEBEBE8E8E8E6E6E6E7E7E7D3D3D3
+        E2E2E2F6F6F6F7F7F7FFFFFFFFFFFFFFFFFFFCFCFCECECECE9E9E9E9E9E9EAEA
+        EAEAEAEAF2F2F2F0F0F0E7E7E7E6E6E6E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6FF
+        FFFFF1F1F1FDFDFDF9F9F9F3F3F3F4F4F4F5F5F5F5F5F5F2F2F2EDEDEDEDEDED
+        F0F0F0E4E4E4D7D7D7E8E8E8ECECECEBEBEBECECECEDEDEDECECECEEEEEEEEEE
+        EEEDEDEDEEEEEEEEEEEEC6C6C6D5D5D5FBFBFBFEFEFEFDFDFDFCFCFCFEFEFEFF
+        FFFFFFFFFFF1F1F1F1F1F1DEDEDEE4E4E4F0F0F0F4F4F4F5F5F5F5F5F5F4F4F4
+        EBEBEBE9E9E9DCDCDCC5C5C5DCDCDCF7F7F7FBFBFBFDFDFDFBFBFBFBFBFBF7F7
+        F7F1F1F1D3D3D3ABABABBCBCBCFFFFFFFFFFFFFFFFFFECECECE9E9E9E7E7E7E7
+        E7E7E6E6E6E7E7E7D5D5D5A4A4A4B3B3B3CFCFCFE2E2E2F6F6F6F8F8F8F1F1F1
+        EEEEEEF4F4F4F4F4F4F5F5F5F8F8F8FFFFFFFFFFFFF8F8F8F8F8F8F9F9F9F9F9
+        F9F8F8F8F5F5F5F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F9F9F9F8F8F8F5F5F5F7
+        F7F7F7F7F7F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F4F4F4F4F4F4F5F5F5F5F5F5
+        F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFEBEBEBE6E6E6E4E4E4E2E2E2E2E2E2C1C1
+        C1D4D4D4F8F8F8F8F8F8F9F9F9FAFAFAFCFCFCF8F8F8FDFDFDE2E2E2D4D4D4E4
+        E4E4E2E2E2E4E4E4E9E9E9EBEBEBECECECEFEFEFEDEDEDEDEDEDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF5F5F5FEFEFEFFFFFFFFFFFFF5F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F5F6F6F6F3F3F3F5F5F5F7F7F7F7F7F7FCFCFCFFFFFFFFFFFFF8
+        F8F8DCDCDCDCDCDCEAEAEAEAEAEAE9E9E9E8E8E8E9E9E9E9E9E9EAEAEAECECEC
+        F8F8F8F8F8F8FAFAFAF9F9F9F9F9F9F8F8F8F7F7F7F8F8F8F8F8F8E6E6E6E3E3
+        E3EBEBEBECECECEEEEEEEDEDEDEEEEEEF0F0F0DEDEDEE2E2E2F2F2F2F6F6F6F6
+        F6F6F7F7F7FDFDFDF7F7F7F5F5F5FFFFFFFFFFFFF8F8F8FFFFFFFFFFFFD5D5D5
+        EEEEEEE7E7E7A8A8A8BCBCBCE2E2E2ECECECF3F3F3F6F6F6F8F8F8F9F9F9FBFB
+        FBFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDEAEAEAEAEAEAE9E9E9D5D5D5D2D2D2E6
+        E6E6EAEAEAECECECEAEAEAEAEAEAE9E9E9E8E8E8E5E5E5D4D4D4C0C0C0BDBDBD
+        BEBEBEC1C1C1C0C0C0C1C1C1C6C6C6DCDCDCECECECECECECEEEEEEEEEEEEEBEB
+        EBE9E9E9DADADAE8E8E8F8F8F8F9F9F9F7F7F7FFFFFFFFFFFFFFFFFFFBFBFBE4
+        E4E4E2E2E2E6E6E6ECECECDEDEDEFFFFFFEEEEEEDADADAF8F8F8FEFEFEFBFBFB
+        F7F7F7F9F9F9F8F8F8F5F5F5F6F6F6F8F8F8F7F7F7F7F7F7F9F9F9FAFAFAFBFB
+        FBFFFFFFFFFFFFFFFFFFFAFAFAEBEBEBE9E9E9E6E6E6E4E4E4E6E6E6E5E5E5E7
+        E7E7EAEAEAEBEBEBECECECEDEDEDECECECEAEAEAE9E9E9E9E9E9E7E7E7E7E7E7
+        E7E7E7F7F7F7F9F9F9FFFFFFFFFFFFFBFBFBEBEBEBEAEAEAE7E7E7E9E9E9DADA
+        DADBDBDBEEEEEEECECECE7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5FF
+        FFFFE7E7E7E7E7E7E6E6E6D5D5D5E4E4E4F5F5F5F3F3F3F0F0F0EEEEEEEEEEEE
+        F1F1F1F7F7F7F8F8F8F9F9F9F8F8F8E9E9E9E6E6E6E9E9E9EBEBEBECECECEAEA
+        EAE9E9E9ECECECD8D8D8AEAEAED5D5D5FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFEEEEEEECECECE7E7E7D0D0D0DCDCDCF3F3F3F4F4F4F5F5F5F7F7F7
+        F7F7F7E1E1E1C9C9C9D3D3D3E9E9E9F5F5F5FBFBFBFCFCFCF8F8F8F8F8F8F5F5
+        F5F0F0F0E1E1E1D1D1D1E6E6E6FFFFFFFFFFFFEEEEEEE8E8E8E8E8E8E7E7E7E6
+        E6E6E7E7E7D7D7D7ACACACB5B5B5DFDFDFF7F7F7F5F5F5F6F6F6F8F8F8F1F1F1
+        F3F3F3F9F9F9F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFFAFAFAF9F9F9F9F9F9F8F8
+        F8F7F7F7F4F4F4F4F4F4F5F5F5F6F6F6F6F6F6F8F8F8FAFAFAF7F7F7F5F5F5F6
+        F6F6F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F3F3F3F4F4F4F5F5F5F3F3F3
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFE9E9E9E5E5E5E4E4E4E5E5E5E6E6E6C4C4
+        C4D5D5D5F8F8F8F8F8F8F9F9F9F8F8F8F9F9F9F5F5F5F1F1F1E5E5E5E6E6E6D9
+        D9D9D7D7D7EAEAEAEDEDEDEDEDEDEDEDEDEDEDEDEAEAEAE9E9E9F4F4F4E9E9E9
+        FEFEFEFFFFFFF7F7F7EAEAEAEAEAEAF7F7F7FFFFFFF5F5F5F2F2F2F5F5F5F5F5
+        F5F5F5F5F3F3F3F0F0F0EEEEEEF2F2F2F6F6F6FAFAFAFFFFFFFFFFFFFFFFFFED
+        EDEDBCBCBCD7D7D7EAEAEAEAEAEAE9E9E9E8E8E8E9E9E9E8E8E8E7E7E7EBEBEB
+        DCDCDCE9E9E9F9F9F9F9F9F9F9F9F9F7F7F7F6F6F6F6F6F6F6F6F6E9E9E9E9E9
+        E9EBEBEBECECECEDEDEDECECECEDEDEDEFEFEFDCDCDCE1E1E1F1F1F1F5F5F5F5
+        F5F5F6F6F6FDFDFDF9F9F9F8F8F8FFFFFFFCFCFCE7E7E7FFFFFFFFFFFFD0D0D0
+        D3D3D3D6D6D6B8B8B8CCCCCCEBEBEBF3F3F3F5F5F5F9F9F9F9F9F9FAFAFAFAFA
+        FAFFFFFFFFFFFFFFFFFFF0F0F0EBEBEBE9E9E9D3D3D3BABABAA7A7A7DCDCDCF9
+        F9F9EDEDEDEBEBEBEAEAEAEBEBEBEAEAEAE8E8E8E1E1E1C3C3C3C0C0C0CFCFCF
+        CFCFCFD0D0D0D1D1D1D3D3D3D7D7D7E9E9E9DCDCDCDCDCDCF0F0F0EDEDEDE9E9
+        E9E8E8E8C5C5C5D4D4D4F8F8F8F9F9F9F7F7F7FFFFFFFFFFFFFDFDFDEAEAEAE9
+        E9E9E6E6E6E8E8E8ECECECEEEEEEFDFDFDEDEDEDEBEBEBFCFCFCFFFFFFFCFCFC
+        F7F7F7F8F8F8F7F7F7F7F7F7F8F8F8F7F7F7F5F5F5F7F7F7FAFAFAFAFAFAFAFA
+        FAFFFFFFFFFFFFF9F9F9E6E6E6E6E6E6E6E6E6E4E4E4E6E6E6E7E7E7E6E6E6D5
+        D5D5C3C3C3D8D8D8ECECECEDEDEDEBEBEBE9E9E9E9E9E9E8E8E8E7E7E7E9E9E9
+        E8E8E8EAEAEAF9F9F9FFFFFFFFFFFFE7E7E7E9E9E9DADADAC9C9C9CCCCCCBBBB
+        BBDADADAEFEFEFEEEEEEEAEAEAE6E6E6E6E6E6E4E4E4E4E4E4E5E5E5E5E5E5FF
+        FFFFE6E6E6E6E6E6E5E5E5D3D3D3E1E1E1F4F4F4F3F3F3F1F1F1F0F0F0EFEFEF
+        F6F6F6FBFBFBFCFCFCFDFDFDFEFEFEFFFFFFF9F9F9EFEFEFEDEDEDEBEBEBE9E9
+        E9EAEAEAECECECC3C3C3BFBFBFE9E9E9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFE9E9E9E8E8E8E6E6E6BCBCBCCCCCCCF3F3F3F5F5F5F7F7F7F7F7F7
+        F9F9F9EFEFEFE6E6E6EFEFEFF8F8F8F6F6F6F7F7F7F7F7F7F5F5F5F5F5F5F5F5
+        F5F4F4F4F5F5F5F8F8F8F8F8F8FFFFFFFFFFFFEEEEEEE8E8E8E9E9E9E9E9E9E6
+        E6E6E7E7E7C4C4C4BBBBBBDEDEDEF3F3F3F7F7F7F7F7F7F7F7F7F7F7F7F1F1F1
+        F4F4F4FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF5F5F5F5F5F5F5F5F5F6F6F6F8F8F8F8F8F8FAFAFAF9F9F9F7F7F7F5F5F5F5
+        F5F5F6F6F6F7F7F7F7F7F7F5F5F5F5F5F5F4F4F4F5F5F5F6F6F6F3F3F3EEEEEE
+        F0F0F0F0F0F0F0F0F0FFFFFFF7F7F7E9E9E9E7E7E7E7E7E7E9E9E9E8E8E8C3C3
+        C3D4D4D4F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F4F4F4F3F3F3F3F3F3F1F1F1E5
+        E5E5E7E7E7EDEDEDEDEDEDEAEAEAEAEAEAEAEAEAE7E7E7E6E6E6E9E9E9DDDDDD
+        FFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAECECECE7E7E7E7E7E7F5F5F5F5F5
+        F5F5F5F5F3F3F3F4F4F4F4F4F4F4F4F4F7F7F7FCFCFCFFFFFFFFFFFFEDEDEDDA
+        DADAD6D6D6E6E6E6F7F7F7EBEBEBE9E9E9E7E7E7E6E6E6E7E7E7E7E7E7E9E9E9
+        DBDBDBF7F7F7FFFFFFFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F5F5F5F3F3F3F4F4
+        F4FFFFFFF9F9F9ECECECEBEBEBEEEEEEF0F0F0EAEAEAE9E9E9FFFFFFFFFFFFF7
+        F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECD6D6D6FFFFFFE9E9E9B7B7B7
+        CCCCCCE1E1E1E1E1E1EBEBEBF7F7F7F9F9F9F9F9F9FCFCFCFCFCFCFBFBFBF9F9
+        F9FFFFFFFFFFFFF0F0F0EDEDEDEBEBEBE9E9E9C1C1C1BFBFBFD5D5D5FBFBFBFF
+        FFFFEEEEEEECECECEBEBEBECECECEAEAEAE7E7E7E3E3E3C8C8C8D7D7D7F5F5F5
+        F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7E8E8E8E9E9E9EEEEEEECECECE7E7
+        E7E7E7E7C1C1C1CFCFCFF3F3F3F8F8F8FFFFFFFFFFFFFFFFFFECECECEAEAEAEA
+        EAEAE8E8E8EAEAEAEBEBEBEDEDEDECECECEBEBEBE0E0E0EEEEEEFDFDFDFBFBFB
+        F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8FBFBFBF9F9F9F8F8
+        F8FFFFFFFFFFFFE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E7E7E7D3D3D3AD
+        ADADBFBFBFE6E6E6EDEDEDEEEEEEEBEBEBE9E9E9E8E8E8E7E7E7E7E7E7E9E9E9
+        EAEAEAE9E9E9D7D7D7F6F6F6E8E8E8C6C6C6CACACABABABAC8C8C8DBDBDBDBDB
+        DBEDEDEDFFFFFFFDFDFDEBEBEBE6E6E6E4E4E4E4E4E4E5E5E5E6E6E6E6E6E6FF
+        FFFFE4E4E4E5E5E5E5E5E5D0D0D0C2C2C2E5E5E5F5F5F5F2F2F2F1F1F1F4F4F4
+        FBFBFBFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFF0F0F0E2E2E2EDEDEDEBEBEBEBEB
+        EBECECECDBDBDBAFAFAFD5D5D5FBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFF
+        FFFFF9F9F9E8E8E8E9E9E9E7E7E7BCBCBCCECECEF4F4F4F5F5F5F7F7F7F7F7F7
+        F9F9F9FBFBFBFBFBFBFBFBFBF7F7F7F4F4F4F5F5F5F7F7F7F7F7F7F6F6F6F5F5
+        F5F5F5F5F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFEDEDEDE7E7E7E7E7E7E5E5E5E4
+        E4E4D7D7D7B0B0B0D0D0D0F3F3F3F5F5F5F7F7F7F9F9F9FCFCFCF8F8F8F5F5F5
+        F8F8F8FAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD
+        FDF7F7F7F5F5F5F5F5F5F6F6F6F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F8F8F8F7
+        F7F7F8F8F8F9F9F9F7F7F7F5F5F5F4F4F4F4F4F4F4F4F4F0F0F0EDEDEDEDEDED
+        F0F0F0F1F1F1F2F2F2F4F4F4F7F7F7EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9C3C3
+        C3D3D3D3F8F8F8F8F8F8F8F8F8F9F9F9F7F7F7F3F3F3F1F1F1F0F0F0F2F2F2F6
+        F6F6F8F8F8FFFFFFFEFEFEEAEAEAE9E9E9E8E8E8E5E5E5E6E6E6E9E9E9E9E9E9
+        FBFBFBFAFAFAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBE7E7E7E6E6E6DFDFDFEAEA
+        EAF2F2F2EEEEEEF1F1F1F1F1F1F6F6F6FBFBFBFFFFFFFFFFFFFFFFFFD0D0D0DC
+        DCDCF0F0F0F4F4F4F8F8F8FFFFFFF4F4F4E5E5E5E4E4E4E6E6E6E7E7E7E8E8E8
+        EBEBEBFBFBFBFDFDFDFAFAFAF9F9F9F7F7F7F7F7F7F7F7F7F5F5F5F3F3F3F4F4
+        F4FFFFFFE7E7E7DADADAEAEAEAEFEFEFEFEFEFEAEAEAEAEAEAFCFCFCFCFCFCFF
+        FFFFFFFFFFFFFFFFFFFFFFF9F9F9FFFFFFFDFDFDE7E7E7F5F5F5E6E6E6D5D5D5
+        DCDCDCECECECF3F3F3F8F8F8FAFAFAFAFAFAFAFAFAFCFCFCFCFCFCFAFAFAFAFA
+        FAFFFFFFFFFFFFEEEEEEEBEBEBE9E9E9E8E8E8C6C6C6D2D2D2F8F8F8FFFFFFFF
+        FFFFFAFAFAEEEEEEEBEBEBEBEBEBEAEAEAE6E6E6D3D3D3B2B2B2D3D3D3F2F2F2
+        F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7FAFAFAE7E7E7E3E3
+        E3D3D3D3ABABABCCCCCCF3F3F3FFFFFFFFFFFFFFFFFFFFFFFFECECECEAEAEAEA
+        EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECEDEDEDE2E2E2EDEDEDF9F9F9F8F8F8
+        F8F8F8F7F7F7F5F5F5F4F4F4F5F5F5F5F5F5F6F6F6F9F9F9F9F9F9F8F8F8F7F7
+        F7FFFFFFEBEBEBD8D8D8EAEAEAEAEAEAEAEAEAEAEAEAE8E8E8E6E6E6C2C2C2C1
+        C1C1E7E7E7F8F8F8FAFAFAECECECEAEAEAE8E8E8E7E7E7E7E7E7E9E9E9EAEAEA
+        EAEAEAE7E7E7C3C3C3D5D5D5E8E8E8D7D7D7DBDBDBDEDEDEECECECFCFCFCFDFD
+        FDFEFEFEFFFFFFFFFFFFECECECE7E7E7E3E3E3DFDFDFCECECEBFBFBFBFBFBFFF
+        FFFFD1D1D1D1D1D1D1D1D1ACACACC0C0C0E6E6E6F3F3F3EEEEEEF0F0F0F6F6F6
+        FBFBFBFEFEFEFFFFFFFEFEFEF8F8F8F5F5F5E7E7E7E6E6E6EAEAEAEBEBEBEBEB
+        EBE9E9E9C1C1C1BCBCBCE7E7E7FBFBFBFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFB
+        FBFBEAEAEAE8E8E8E9E9E9E7E7E7BCBCBCCCCCCCF2F2F2F4F4F4F4F4F4F6F6F6
+        F9F9F9FBFBFBF9F9F9F8F8F8F5F5F5F4F4F4F7F7F7F8F8F8F7F7F7FFFFFFFFFF
+        FFFFFFFFFFFFFFF7F7F7F9F9F9FFFFFFFFFFFFEAEAEAE6E6E6E4E4E4E4E4E4E4
+        E4E4C5C5C5BFBFBFE2E2E2F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCE9E9E9EAEA
+        EAD2D2D2DFDFDFF3F3F3F4F4F4F8F8F8FFFFFFFFFFFFF8F8F8F7F7F7F8F8F8F7
+        F7F7F8F8F8F7F7F7F5F5F5F4F4F4F3F3F3F1F1F1EDEDEDEDEDEDF0F0F0F0F0F0
+        F3F3F3F4F4F4F7F7F7F9F9F9F9F9F9FFFFFFFDFDFDEAEAEAEAEAEAEAEAEAC2C2
+        C2D2D2D2F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F3F3F3F4F4F4F7F7F7F9
+        F9F9FFFFFFFFFFFFFFFFFFE9E9E9E8E8E8E6E6E6E6E6E6E7E7E7E9E9E9EAEAEA
+        EEEEEEEDEDEDEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E7E7E6E6E6CECECED7D7
+        D7ECECECEEEEEEF1F1F1F1F1F1F6F6F6F6F6F6FFFFFFFFFFFFF7F7F7DCDCDCF0
+        F0F0F9F9F9F4F4F4FFFFFFFFFFFFFCFCFCE4E4E4E5E5E5E6E6E6E4E4E4E6E6E6
+        EAEAEAECECECEEEEEEEEEEEEF5F5F5F4F4F4F5F5F5F4F4F4F3F3F3F5F5F5F8F8
+        F8F9F9F9E9E9E9E9E9E9ECECECEEEEEEEEEEEEEAEAEAE8E8E8E8E8E8E9E9E9FE
+        FEFEFFFFFFFFFFFFEEEEEEEDEDEDFEFEFEFDFDFDE7E7E7F1F1F1FBFBFBF9F9F9
+        EDEDEDF3F3F3FAFAFAFBFBFBFBFBFBFBFBFBFAFAFAFBFBFBFBFBFBF8F8F8F9F9
+        F9FFFFFFFFFFFFECECECE9E9E9E9E9E9E7E7E7D6D6D6E0E0E0F8F8F8FFFFFFFF
+        FFFFFFFFFFF0F0F0EBEBEBEBEBEBE8E8E8D4D4D4B1B1B1BDBDBDE2E2E2F4F4F4
+        F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F9F9F9F2F2F2D5D5
+        D5AFAFAFB9B9B9DEDEDEF5F5F5FFFFFFFFFFFFFCFCFCEEEEEEEAEAEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEBEBEBEEEEEEF0F0F0F3F3F3F4F4F4F4F4F4FCFCFCF9F9F9
+        F8F8F8F5F5F5F4F4F4F4F4F4F6F6F6F7F7F7FAFAFAFCFCFCF9F9F9F8F8F8F7F7
+        F7F8F8F8E9E9E9F8F8F8FBFBFBEAEAEAEAEAEAEAEAEAE7E7E7E6E6E6C7C7C7D7
+        D7D7F8F8F8F8F8F8FAFAFAFAFAFAE9E9E9E7E7E7E7E7E7E9E9E9EAEAEAE6E6E6
+        E4E4E4D3D3D3AFAFAFD6D6D6F8F8F8F7F7F7FCFCFCFCFCFCF9F9F9FBFBFBFBFB
+        FBFAFAFAFFFFFFFFFFFFECECECE9E9E9E2E2E2CFCFCFA9A9A9B5B5B5C8C8C8FF
+        FFFFAFAFAFD0D0D0C3C3C3C0C0C0E4E4E4F5F5F5F3F3F3F1F1F1F3F3F3F7F7F7
+        FAFAFAFEFEFEFCFCFCF8F8F8F5F5F5F5F5F5F5F5F5F4F4F4F7F7F7E1E1E1D3D3
+        D3C8C8C8A9A9A9CFCFCFF8F8F8FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFEC
+        ECECE9E9E9E9E9E9E7E7E7E6E6E6BABABAC6C6C6F1F1F1F5F5F5F5F5F5F8F8F8
+        FBFBFBFEFEFEFCFCFCF9F9F9F6F6F6F4F4F4F5F5F5F7F7F7FFFFFFFFFFFFFFFF
+        FFFFFFFFE4E4E4E1E1E1F8F8F8F8F8F8FFFFFFFAFAFAE4E4E4E4E4E4E4E4E4E5
+        E5E5D6D6D6F1F1F1FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFEFEFEE9E9E9E7E7E7E7E7
+        E7B5B5B5C5C5C5F0F0F0F7F7F7F9F9F9FFFFFFFBFBFBE6E6E6F4F4F4F6F6F6F6
+        F6F6F4F4F4F1F1F1EEEEEEF0F0F0F2F2F2EDEDEDECECECFEFEFEFEFEFEF0F0F0
+        F4F4F4F7F7F7F9F9F9FAFAFAF9F9F9FFFFFFFCFCFCE7E7E7E7E7E7D5D5D5AAAA
+        AAD0D0D0F6F6F6F7F7F7F8F8F8F6F6F6F8F8F8F7F7F7F6F6F6F7F7F7F9F9F9FC
+        FCFCFFFFFFFFFFFFFAFAFAE7E7E7E6E6E6E5E5E5E6E6E6E9E9E9EAEAEAECECEC
+        EEEEEEEDEDEDEAEAEAEAEAEAEAEAEAE9E9E9E8E8E8E9E9E9E7E7E7CACACAD5D5
+        D5F0F0F0F3F3F3F7F7F7F7F7F7F7F7F7F4F4F4FFFFFFFFFFFFE6E6E6E6E6E6F2
+        F2F2F4F4F4FBFBFBFFFFFFFFFFFFF3F3F3E4E4E4D5D5D5C1C1C1BCBCBCC4C4C4
+        CACACADCDCDCEDEDEDEAEAEADADADAE6E6E6F5F5F5F4F4F4F4F4F4F8F8F8F9F9
+        F9FAFAFAF9F9F9F9F9F9F8F8F8DCDCDCDADADAE9E9E9E8E8E8E8E8E8E8E8E8EA
+        EAEAEAEAEAEDEDEDEDEDEDEBEBEBEBEBEBE9E9E9DEDEDECACACAF4F4F4FDFDFD
+        ECECECF2F2F2FAFAFAFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFBFBFBF9F9
+        F9FFFFFFEAEAEAD6D6D6E9E9E9E8E8E8E7E7E7D4D4D4C1C1C1E7E7E7FCFCFCFF
+        FFFFFFFFFFF0F0F0EBEBEBEBEBEBE6E6E6C5C5C5C1C1C1E2E2E2F6F6F6F9F9F9
+        F9F9F9FBFBFBF9F9F9F8F8F8F9F9F9F9F9F9F8F8F8F7F7F7F8F8F8F6F6F6E7E7
+        E7D3D3D3DEDEDEF1F1F1F7F7F7FFFFFFFFFFFFEAEAEAEAEAEAE9E9E9EAEAEAEA
+        EAEAEAEAEAEAEAEAECECECEEEEEEEFEFEFF1F1F1F1F1F1F0F0F0EEEEEEFDFDFD
+        FFFFFFF9F9F9F4F4F4F4F4F4F5F5F5F7F7F7FBFBFBFBFBFBF9F9F9F7F7F7F7F7
+        F7F7F7F7F8F8F8FFFFFFFFFFFFE9E9E9E8E8E8E7E7E7E6E6E6E7E7E7C8C8C8D7
+        D7D7F8F8F8F8F8F8FAFAFAFBFBFBF8F8F8E4E4E4E1E1E1E2E2E2E2E2E2CECECE
+        C5C5C5B4B4B4C0C0C0E7E7E7F9F9F9FBFBFBFEFEFEFCFCFCF9F9F9F9F9F9F9F9
+        F9FFFFFFFFFFFFFFFFFFEBEBEBE8E8E8E6E6E6C3C3C3B7B7B7DEDEDEEEEEEEFF
+        FFFFC1C1C1E5E5E5E4E4E4E6E6E6F5F5F5F4F4F4F3F3F3F0F0F0F4F4F4F7F7F7
+        FBFBFBFCFCFCF9F9F9F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F8F8F8E9E9E9D7D7
+        D7C9C9C9C8C8C8E5E5E5F9F9F9FBFBFBFDFDFDFFFFFFFEFEFEFFFFFFFFFFFFEB
+        EBEBE9E9E9E8E8E8E7E7E7EAEAEAD1D1D1DEDEDEF7F7F7F9F9F9F8F8F8FCFCFC
+        FFFFFFFFFFFFFCFCFCF8F8F8F7F7F7F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFF9F9
+        F9E6E6E6B2B2B2C6C6C6F7F7F7F9F9F9FFFFFFFFFFFFE2E2E2E0E0E0E2E2E2E3
+        E3E3E6E6E6F8F8F8FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFEAEAEAEBEBEBECECEC
+        EBEBEBEDEDEDEDEDEDEBEBEBE9E9E9EAEAEAEEEEEEEDEDEDE9E9E9E7E7E7E7E7
+        E7B4B4B4C9C9C9F8F8F8FCFCFCFBFBFBFFFFFFDADADAD5D5D5F5F5F5F7F7F7F5
+        F5F5F4F4F4F1F1F1F0F0F0F3F3F3F0F0F0EAEAEAEEEEEEFFFFFFE7E7E7E5E5E5
+        F7F7F7F8F8F8F9F9F9FBFBFBFBFBFBFAFAFAFBFBFBD6D6D6C4C4C4AEAEAEBDBD
+        BDE5E5E5F7F7F7F8F8F8F9F9F9F8F8F8FBFBFBFBFBFBFBFBFBFDFDFDFFFFFFFF
+        FFFFFFFFFFFFFFFFEAEAEAE7E7E7E4E4E4E5E5E5E9E9E9EAEAEAECECECEDEDED
+        F0F0F0EDEDEDEAEAEAEAEAEAE8E8E8E9E9E9E9E9E9EAEAEAD7D7D7B5B5B5D6D6
+        D6F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFE7E7E7E6E6E6E9
+        E9E9EAEAEAF3F3F3FCFCFCF5F5F5EAEAEAE6E6E6C3C3C3B8B8B8CECECED8D8D8
+        DADADAE8E8E8DDDDDDCACACABABABAD9D9D9F8F8F8F7F7F7F8F8F8F9F9F9F9F9
+        F9F9F9F9F9F9F9FBFBFBFBFBFBE7E7E7F5F5F5F9F9F9EAEAEAE8E8E8E8E8E8E9
+        E9E9E9E9E9E9E9E9E9E9E9E7E7E7E6E6E6E4E4E4C9C9C9BCBCBCFBFBFBFFFFFF
+        ECECECF6F6F6FAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFCFCFCFAFA
+        FAF8F8F8E6E6E6E5E5E5E8E8E8E8E8E8D0D0D0A7A7A7BDBDBDF4F4F4FFFFFFFF
+        FFFFFFFFFFEFEFEFECECECE9E9E9E6E6E6C7C7C7D5D5D5F4F4F4F9F9F9FBFBFB
+        FBFBFBFBFBFBFCFCFCF9F9F9F9F9F9FAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F5F5
+        F5F3F3F3F2F2F2F3F3F3F6F6F6FFFFFFFFFFFFE9E9E9E9E9E9E9E9E9E9E9E9E7
+        E7E7E8E8E8EBEBEBECECECECECECECECECEDEDEDECECECEAEAEAE9E9E9ECECEC
+        FFFFFFFFFFFFF4F4F4F5F5F5F9F9F9FBFBFBFDFDFDFEFEFEF9F9F9F7F7F7F7F7
+        F7F7F7F7F7F7F7FFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E9E9E9E9E9E9C8C8C8D7
+        D7D7F8F8F8F9F9F9FCFCFCFBFBFBF8F8F8F4F4F4D7D7D7C6C6C6C6C6C6B4B4B4
+        C8C8C8D6D6D6E7E7E7FBFBFBFCFCFCFCFCFCFBFBFBF9F9F9F8F8F8FAFAFAFFFF
+        FFFFFFFFFFFFFFFBFBFBEBEBEBE7E7E7E7E7E7C1C1C1CACACAF2F2F2F7F7F7FF
+        FFFFE6E6E6F6F6F6F5F5F5F6F6F6F5F5F5F4F4F4F1F1F1F0F0F0F4F4F4F7F7F7
+        F9F9F9F9F9F9F7F7F7F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F1F1F1EAEA
+        EADFDFDFE8E8E8F8F8F8FCFCFCFDFDFDFFFFFFFDFDFDFBFBFBFFFFFFFCFCFCEB
+        EBEBEAEAEAEAEAEAECECECEEEEEEE9E9E9EAEAEAFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF8F8F8F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE6E6
+        E6E4E4E4B0B0B0C6C6C6F7F7F7F8F8F8FFFFFFFBFBFBD1D1D1BDBDBDC4C4C4C6
+        C6C6D7D7D7E9E9E9EBEBEBE9E9E9F4F4F4FFFFFFF3F3F3E7E7E7EAEAEAEAEAEA
+        EBEBEBEBEBEBEAEAEAE9E9E9E9E9E9EAEAEAEDEDEDECECECE8E8E8E7E7E7D1D1
+        D19B9B9BCCCCCCFBFBFBFBFBFBF9F9F9F8F8F8E8E8E8E8E8E8F8F8F8F8F8F8F7
+        F7F7F8F8F8F8F8F8F7F7F7F7F7F7F4F4F4EEEEEEF1F1F1F4F4F4E6E6E6E7E7E7
+        F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFDFDFDFEFEFEE8E8E8D7D7D7D7D7D7E6E6
+        E6F8F8F8F8F8F8FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFBFBFBEAEAEAE7E7E7E6E6E6E8E8E8EAEAEAECECECECECECEEEEEE
+        EEEEEEEBEBEBE9E9E9E8E8E8E9E9E9EAEAEAE9E9E9D8D8D8B2B2B2C2C2C2E7E7
+        E7F7F7F7F8F8F8F7F7F7F5F5F5F6F6F6F7F7F7FFFFFFFCFCFCE8E8E8E7E7E7E9
+        E9E9E9E9E9EAEAEAECECECECECECEAEAEAE7E7E7C3C3C3CFCFCFF4F4F4FCFCFC
+        FCFCFCF9F9F9E9E9E9D9D9D9D8D8D8E9E9E9F8F8F8F8F8F8F8F8F8F9F9F9F9F9
+        F9F9F9F9F7F7F7F8F8F8FBFBFBF8F8F8FFFFFFFFFFFFEDEDEDE8E8E8E8E8E8E9
+        E9E9E7E7E7E7E7E7E9E9E9E4E4E4D1D1D1C1C1C1A9A9A9DDDDDDFFFFFFF9F9F9
+        F4F4F4F4F4F4FBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFAFAFAFAFAFAFAFAFAFDFD
+        FDFCFCFCF8F8F8F8F8F8F8F8F8D3D3D3A0A0A0D0D0D0FFFFFFFFFFFFFFFFFFFF
+        FFFFFBFBFBECECECE5E5E5E6E6E6E7E7E7C9C9C9D5D5D5F4F4F4F9F9F9FBFBFB
+        FBFBFBFBFBFBFDFDFDFDFDFDFBFBFBFBFBFBF9F9F9F7F7F7F7F7F7F7F7F7F7F7
+        F7F5F5F5F5F5F5F5F5F5F7F7F7FFFFFFFFFFFFECECECEBEBEBEBEBEBEAEAEAE6
+        E6E6E9E9E9ECECECEBEBEBECECECEDEDEDEAEAEAE9E9E9E8E8E8E8E8E8E4E4E4
+        F1F1F1E4E4E4E4E4E4F6F6F6FAFAFAFDFDFDFFFFFFFFFFFFFCFCFCF8F8F8F8F8
+        F8F8F8F8F8F8F8FFFFFFFFFFFFEDEDEDEAEAEAEBEBEBECECECDCDCDCB7B7B7D7
+        D7D7FAFAFAFCFCFCFCFCFCFAFAFAF8F8F8F7F7F7E9E9E9DADADAD9D9D9DADADA
+        EBEBEBF9F9F9FBFBFBFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7FFFFFFFFFF
+        FFFFFFFFFBFBFBEAEAEAE9E9E9E7E7E7E9E9E9C0C0C0CFCFCFF7F7F7F8F8F8FF
+        FFFFF9F9F9F8F8F8F6F6F6F5F5F5F4F4F4F5F5F5F1F1F1F2F2F2F6F6F6F7F7F7
+        F7F7F7F7F7F7F5F5F5F4F4F4F5F5F5F7F7F7F5F5F5F5F5F5F5F5F5EDEDEDE4E4
+        E4E6E6E6F0F0F0F9F9F9FEFEFEFFFFFFFDFDFDFBFBFBFAFAFAF9F9F9F4F4F4E8
+        E8E8EAEAEAEDEDEDEFEFEFEDEDEDE9E9E9E9E9E9FEFEFEFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E9E9E9E5E5
+        E5CECECE929292C2C2C2F5F5F5F8F8F8F9F9F9F8F8F8C7C7C7C1C1C1D8D8D8D7
+        D7D7E6E6E6ECECECECECECEAEAEAE8E8E8E9E9E9E6E6E6DCDCDCDFDFDFEAEAEA
+        E9E9E9E7E7E7D6D6D6C1C1C1BFBFBFC3C3C3C8C8C8D8D8D8E7E7E7D4D4D4A0A0
+        A0AEAEAEE0E0E0F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8FAFAFAF9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7F9F9F9F7F7F7
+        FBFBFBFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFBFBFBF8F8F8F8F8F8F7F7F7F6F6
+        F6F8F8F8FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+        F4F4E4E4E4E9E9E9E8E8E8E7E7E7E7E7E7E9E9E9EBEBEBECECECECECECEDEDED
+        EDEDEDEAEAEAE9E9E9E9E9E9EAEAEAEBEBEBD8D8D8B7B7B7C3C3C3E5E5E5F8F8
+        F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F7F7F7F8F8F8F6F6F6DBDBDBDCDCDCE9
+        E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9DADADAB2B2B2D4D4D4F8F8F8FCFCFC
+        FCFCFCF9F9F9F7F7F7F6F6F6F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8F7F7F7F8F8
+        F8F9F9F9F6F6F6F9F9F9FDFDFDF9F9F9FFFFFFFFFFFFF2F2F2EAEAEAE8E8E8E8
+        E8E8E7E7E7E6E6E6E4E4E4DFDFDFBEBEBEBABABAC7C7C7EFEFEFFCFCFCEDEDED
+        F0F0F0EDEDEDDCDCDCEDEDEDFBFBFBFDFDFDFCFCFCFAFAFAFAFAFAFDFDFDFFFF
+        FFFEFEFEF8F8F8F8F8F8F8F8F8F8F8F8F6F6F6FFFFFFFFFFFFFFFFFFF9F9F9E8
+        E8E8E8E8E8E8E8E8DFDFDFE0E0E0DBDBDBBFBFBFD7D7D7F4F4F4F9F9F9FBFBFB
+        FBFBFBFCFCFCFDFDFDFDFDFDFBFBFBFAFAFAF9F9F9F7F7F7F7F7F7F7F7F7F7F7
+        F7F8F8F8F9F9F9F9F9F9FBFBFBFFFFFFFBFBFBDEDEDEECECECECECECEAEAEAE9
+        E9E9EBEBEBEBEBEBEBEBEBECECECEAEAEAE9E9E9E8E8E8E8E8E8E8E8E8E4E4E4
+        E7E7E7DADADAE2E2E2F5F5F5FBFBFBFDFDFDFEFEFEFFFFFFFDFDFDF9F9F9F8F8
+        F8F8F8F8F8F8F8FFFFFFFFFFFFF0F0F0ECECECECECECECECECDCDCDCD5D5D5E9
+        E9E9FDFDFDFCFCFCFAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F8F8F8
+        FBFBFBFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFF
+        FFFDFDFDEDEDEDE9E9E9E9E9E9E8E8E8D5D5D5A9A9A9D1D1D1F8F8F8F8F8F8FF
+        FFFFF7F7F7F7F7F7F5F5F5F3F3F3F4F4F4F4F4F4EEEEEEF2F2F2F7F7F7F7F7F7
+        F7F7F7F8F8F8F7F7F7F5F5F5F6F6F6F6F6F6F5F5F5F4F4F4F1F1F1E4E4E4E9E9
+        E9F4F4F4FBFBFBFFFFFFFFFFFFFFFFFFFCFCFCFBFBFBF9F9F9F8F8F8F5F5F5F6
+        F6F6ECECECF1F1F1EEEEEEE9E9E9E7E7E7E7E7E7E7E7E7E6E6E6F7F7F7FFFFFF
+        FFFFFFF7F7F7FDFDFDFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAE7E7E7E7E7E7D1D1
+        D19A9A9AA7A7A7D9D9D9F8F8F8FBFBFBF9F9F9FBFBFBEAEAEAE7E7E7F8F8F8F7
+        F7F7F6F6F6FFFFFFF9F9F9E9E9E9E8E8E8E8E8E8E4E4E4D1D1D1E7E7E7F6F6F6
+        EBEBEBDADADAB5B5B5BCBCBCCECECED5D5D5D5D5D5E4E4E4D4D4D4A6A6A6AFAF
+        AFDCDCDCF7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F5F5F5F6F6F6F8F8F8F8F8F8F3F3F3
+        FDFDFDFFFFFFFCFCFCFCFCFCFBFBFBF9F9F9F7F7F7F7F7F7F7F7F7F4F4F4F7F7
+        F7FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFEFEFEEAEAEAE8E8E8E5E5E5E5E5E5E2
+        E2E2E6E6E6EAEAEAE9E9E9E8E8E8E7E7E7E9E9E9EBEBEBEBEBEBECECECECECEC
+        ECECECEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9C7C7C7C6C6C6E6E6E6F6F6F6F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F4F4F4F5F5F5F4F4F4E9E9E9E7E7E7EA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAC8C8C8C0C0C0E6E6E6F9F9F9FCFCFC
+        FBFBFBF9F9F9F8F8F8F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F9F9
+        F9FCFCFCF9F9F9FAFAFAFEFEFEFAFAFAFFFFFFF1F1F1E0E0E0EAEAEAE8E8E8E8
+        E8E8E8E8E8E6E6E6E2E2E2E2E2E2C1C1C1CCCCCCEDEDEDF6F6F6FEFEFEF0F0F0
+        E9E9E9D7D7D7B9B9B9DEDEDEFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFF
+        FFFCFCFCF9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFEFEFEE9E9E9E8E8E8E8
+        E8E8E8E8E8E6E6E6DCDCDCD4D4D4C6C6C6CDCDCDE4E4E4F5F5F5FBFBFBFCFCFC
+        FCFCFCFDFDFDFDFDFDFBFBFBFCFCFCFCFCFCFAFAFAF8F8F8F7F7F7F7F7F7F7F7
+        F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF5F5F5F9F9F9EBEBEBE9E9E9E9
+        E9E9EAEAEAECECECECECECEAEAEAE9E9E9E7E7E7E6E6E6E7E7E7E8E8E8E4E4E4
+        E6E6E6D6D6D6C2C2C2E5E5E5F9F9F9FBFBFBFCFCFCFDFDFDFBFBFBF8F8F8F9F9
+        F9FAFAFAFAFAFAFFFFFFFFFFFFF0F0F0ECECECECECECECECECDCDCDCCCCCCCE9
+        E9E9FAFAFAF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F6F6F6F6F6F6F8F8F8
+        FBFBFBF9F9F9F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFCFC
+        FCEFEFEFECECECEAEAEAEAEAEAD7D7D7ACACACBBBBBBE4E4E4F8F8F8F8F8F8FF
+        FFFFF5F5F5F4F4F4F3F3F3F1F1F1F4F4F4F1F1F1F0F0F0F4F4F4FFFFFFFFFFFF
+        F6F6F6F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F4F4F4F3F3F3EDEDEDEAEAEAF5F5
+        F5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F8F8F8F8F8F8F8F8F8F9
+        F9F9FFFFFFFFFFFFEDEDEDE7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E7E7E7E8E8E8
+        E8E8E8E8E8E8ECECECECECECE9E9E9EAEAEAEAEAEAE8E8E8E7E7E7E7E7E7D3D3
+        D3C7C7C7D8D8D8F3F3F3FCFCFCF8F8F8F7F7F7F9F9F9F7F7F7F6F6F6F8F8F8F8
+        F8F8F7F7F7FFFFFFE7E7E7D7D7D7E4E4E4D8D8D8CCCCCCC5C5C5E6E6E6F5F5F5
+        DCDCDCB7B7B7BABABADDDDDDF5F5F5F9F9F9F7F7F7F5F5F5E2E2E2CACACADADA
+        DAF2F2F2F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F9F9F9F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F5F5F5
+        FEFEFEFFFFFFFAFAFAFCFCFCFBFBFBF9F9F9F8F8F8F8F8F8F7F7F7F6F6F6F9F9
+        F9FAFAFAF9F9F9FFFFFFFFFFFFFEFEFEE7E7E7E7E7E7E7E7E7E4E4E4E1E1E1E4
+        E4E4E8E8E8EAEAEAEAEAEAEAEAEAEBEBEBEDEDEDEDEDEDECECECEBEBEBECECEC
+        ECECECEBEBEBEBEBEBEBEBEBEAEAEAD9D9D9B7B7B7D7D7D7F7F7F7FAFAFAFAFA
+        FAF8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8FAFAFAF9F9F9FCFCFCFF
+        FFFFF7F7F7ECECECECECECECECECDADADAB2B2B2D3D3D3F6F6F6F8F8F8FBFBFB
+        FAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FBFB
+        FBFDFDFDF9F9F9FAFAFAFDFDFDFDFDFDFDFDFDECECECFAFAFAFBFBFBE6E6E6E4
+        E4E4E4E4E4E3E3E3E2E2E2E4E4E4C7C7C7D3D3D3F4F4F4F8F8F8FFFFFFE5E5E5
+        E0E0E0CDCDCDC7C7C7ECECECFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBEAEAEAE8E8E8E8E8E8E8
+        E8E8E8E8E8E1E1E1DADADACACACACFCFCFE4E4E4EFEFEFF2F2F2F9F9F9FDFDFD
+        FCFCFCFDFDFDFDFDFDFCFCFCFFFFFFFEFEFEFAFAFAF7F7F7F6F6F6F6F6F6F6F6
+        F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8FAFAFADFDFDFD0D0D0CE
+        CECEDDDDDDECECECECECECEAEAEAE9E9E9E7E7E7E6E6E6E9E9E9E9E9E9E4E4E4
+        E6E6E6C3C3C3BEBEBEE4E4E4F5F5F5F8F8F8FBFBFBFAFAFAF8F8F8F8F8F8F8F8
+        F8F9F9F9FFFFFFFFFFFFFFFFFFF2F2F2ECECECECECECECECECCDCDCDC8C8C8E8
+        E8E8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFE9E9E9E4E4E4F6F6F6F6F6F6F8F8F8
+        F9F9F9F7F7F7F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCEEEE
+        EEEDEDEDECECECE9E9E9E8E8E8C3C3C3BDBDBDE4E4E4F8F8F8FBFBFBFBFBFBFF
+        FFFFF1F1F1ECECECEDEDEDEFEFEFF0F0F0F1F1F1F3F3F3F5F5F5FFFFFFFAFAFA
+        E0E0E0F5F5F5F5F5F5F4F4F4F3F3F3F3F3F3F2F2F2EEEEEEEAEAEAF0F0F0F9F9
+        F9FCFCFCFCFCFCFBFBFBFFFFFFFFFFFFDADADAE5E5E5F7F7F7F7F7F7F9F9F9FA
+        FAFAFFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E7E7E7E6E6E6E4E4E4E3E3E3D5D5D5
+        D8D8D8E8E8E8E8E8E8E8E8E8E9E9E9EAEAEAE9E9E9E7E7E7E7E7E7E7E7E7E7E7
+        E7CCCCCCD8D8D8F4F4F4FAFAFAF8F8F8FAFAFAFBFBFBF7F7F7F7F7F7F8F8F8F8
+        F8F8F8F8F8F5F5F5E3E3E3E2E2E2D8D8D8C1C1C1CDCDCDD9D9D9E6E6E6F2F2F2
+        CACACABCBCBCDADADAEFEFEFF6F6F6F8F8F8F9F9F9F8F8F8F5F5F5F1F1F1EEEE
+        EEF4F4F4F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F7F7F7F7F7F7F8F8F8FBFBFBF9F9F9
+        FFFFFFFFFFFFFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF9F9F9F8F8F8F7F7
+        F7F7F7F7F7F7F7FFFFFFFFFFFFEDEDEDE7E7E7E7E7E7E4E4E4DEDEDEE0E0E0E4
+        E4E4E9E9E9EAEAEAEAEAEAEAEAEAEDEDEDECECECEBEBEBECECECEBEBEBE9E9E9
+        EAEAEAECECECEAEAEAE9E9E9E9E9E9CBCBCBC9C9C9E9E9E9F8F8F8FAFAFAF9F9
+        F9FAFAFAFCFCFCFCFCFCFAFAFAF8F8F8F9F9F9FBFBFBFCFCFCFBFBFBFCFCFCFF
+        FFFFF6F6F6ECECECECECECDADADAB2B2B2C0C0C0E5E5E5F5F5F5F7F7F7F9F9F9
+        F9F9F9F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FAFA
+        FAF8F8F8F7F7F7F9F9F9FDFDFDFDFDFDFDFDFDFAFAFAFFFFFFFBFBFBE6E6E6E3
+        E3E3E3E3E3E2E2E2E2E2E2E7E7E7DADADAE1E1E1F8F8F8FDFDFDFCFCFCEAEAEA
+        F2F2F2D3D3D3D8D8D8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECECEC
+        ECFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEAEAEAE9E9E9E8E8E8E8E8E8E8
+        E8E8E7E7E7E1E1E1DFDFDFD0D0D0DCDCDCEFEFEFF0F0F0F4F4F4FBFBFBFAFAFA
+        FAFAFAFCFCFCFCFCFCFEFEFEFEFEFEFCFCFCF7F7F7F5F5F5F5F5F5F6F6F6F6F6
+        F6FFFFFFFFFFFFE9E9E9ECECECEDEDEDEAEAEAE9E9E9F0F0F0D5D5D5CBCBCBDA
+        DADAF5F5F5F7F7F7EAEAEAEAEAEAEAEAEAE7E7E7E7E7E7E9E9E9E7E7E7E4E4E4
+        E7E7E7C5C5C5D1D1D1F5F5F5F8F8F8FBFBFBFBFBFBFBFBFBFBFBFBF9F9F9F9F9
+        F9FBFBFBFFFFFFFFFFFFFFFFFFF0F0F0EDEDEDEDEDEDECECECCCCCCCD7D7D7F5
+        F5F5F8F8F8FFFFFFFFFFFFFCFCFCE5E5E5CECECEE1E1E1F6F6F6F6F6F6F8F8F8
+        F8F8F8F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFBFBFBEEEEEEF1F1F1EEEE
+        EEEDEDEDECECECEAEAEAE8E8E8C7C7C7D6D6D6F8F8F8FAFAFAFBFBFBFAFAFAFF
+        FFFFE6E6E6E9E9E9EEEEEEF1F1F1F4F4F4F5F5F5FFFFFFFFFFFFFFFFFFFBFBFB
+        F6F6F6FFFFFFF6F6F6F5F5F5F4F4F4F5F5F5F0F0F0ECECECEEEEEEF2F2F2F7F7
+        F7F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFDBDBDBE7E7E7F7F7F7F8F8F8FAFAFAFF
+        FFFFFFFFFFFFFFFFE7E7E7E7E7E7E7E7E7E7E7E7D4D4D4C1C1C1C3C3C3B2B2B2
+        DFDFDFF4F4F4E8E8E8E8E8E8E9E9E9E9E9E9E8E8E8E7E7E7E7E7E7E7E7E7E7E7
+        E7B9B9B9C9C9C9F8F8F8FBFBFBFBFBFBFCFCFCFBFBFBF8F8F8F8F8F8F8F8F8F8
+        F8F8F7F7F7F4F4F4F2F2F2F1F1F1E6E6E6D6D6D6DFDFDFEBEBEBECECECECECEC
+        D9D9D9D9D9D9EEEEEEF5F5F5F8F8F8F8F8F8FBFBFBF9F9F9F7F7F7F4F4F4F4F4
+        F4F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F4F4F4F4F4F4F8F8F8F8F8F8F8F8F8FAFAFAFAFAFA
+        FDFDFDFEFEFEFAFAFAFAFAFAFBFBFBFBFBFBF9F9F9F8F8F8F7F7F7F5F5F5F5F5
+        F5F7F7F7F7F7F7FFFFFFFFFFFFECECECE7E7E7E6E6E6DFDFDFE1E1E1E5E5E5E8
+        E8E8EAEAEAEAEAEAE9E9E9E9E9E9EBEBEBDCDCDCCBCBCBCDCDCDD9D9D9E5E5E5
+        EAEAEAEDEDEDECECECEAEAEAEAEAEADDDDDDE7E7E7F6F6F6F8F8F8F9F9F9F8F8
+        F8F9F9F9FBFBFBFAFAFAF9F9F9F9F9F9F8F8F8F9F9F9FBFBFBF9F9F9F9F9F9FB
+        FBFBFFFFFFF6F6F6DCDCDCB3B3B3C2C2C2E5E5E5F6F6F6F8F8F8F9F9F9FBFBFB
+        F8F8F8F5F5F5F7F7F7F7F7F7F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FAFA
+        FAF7F7F7F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAF7F7F7F6F6F6FFFFFFE9E9E9C3
+        C3C3D5D5D5E7E7E7E8E8E8D8D8D8C5C5C5C3C3C3E7E7E7FCFCFCFAFAFAF7F7F7
+        FFFFFFEEEEEEE9E9E9FEFEFEFFFFFFFFFFFFFFFFFFFEFEFEECECECEAEAEAEAEA
+        EAEAEAEAEAEAEAECECECEFEFEFEEEEEEECECECEAEAEAE9E9E9E8E8E8E8E8E8E7
+        E7E7E6E6E6E2E2E2E3E3E3D1D1D1DEDEDEF0F0F0F2F2F2F7F7F7FAFAFAF9F9F9
+        FBFBFBFDFDFDFDFDFDFCFCFCFBFBFBF9F9F9F7F7F7F6F6F6F7F7F7F8F8F8F9F9
+        F9FFFFFFFEFEFEEAEAEAEEEEEEECECECE8E8E8E8E8E8EEEEEED2D2D2D7D7D7FE
+        FEFEFFFFFFFFFFFFECECECEBEBEBE8E8E8E4E4E4E7E7E7E7E7E7E5E5E5E4E4E4
+        EAEAEADADADAFBFBFBFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCF9F9F9F8F8F8FBFB
+        FBFFFFFFFFFFFFFFFFFFEFEFEFECECECECECECECECECEBEBEBC8C8C8D2D2D2F2
+        F2F2F5F5F5FFFFFFFFFFFFE7E7E7E2E2E2E1E1E1D4D4D4E5E5E5F6F6F6F8F8F8
+        F8F8F8F8F8F8F9F9F9F8F8F8FFFFFFFFFFFFFCFCFCEFEFEFF1F1F1F0F0F0EEEE
+        EEEDEDEDECECECEAEAEAE9E9E9CDCDCDD6D6D6F5F5F5FAFAFAFAFAFAF9F9F9FF
+        FFFFEEEEEEF2F2F2F6F6F6F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFDFDFD
+        FDFDFDFBFBFBF5F5F5F7F7F7F6F6F6F4F4F4F1F1F1F2F2F2F4F4F4F6F6F6F8F8
+        F8F9F9F9F9F9F9FFFFFFFFFFFFD9D9D9C1C1C1BDBDBDE4E4E4F8F8F8FFFFFFFF
+        FFFFFFFFFFFFFFFFE7E7E7E7E7E7E7E7E7D6D6D6B0B0B0BCBCBCCECECECFCFCF
+        F2F2F2F7F7F7E4E4E4E1E1E1E6E6E6E7E7E7E7E7E7E6E6E6E6E6E6E7E7E7E7E7
+        E7D2D2D2DEDEDEF5F5F5F9F9F9FBFBFBFCFCFCFCFCFCF9F9F9F7F7F7F7F7F7F7
+        F7F7F4F4F4F1F1F1EFEFEFF0F0F0F2F2F2F0F0F0ECECECEBEBEBE9E9E9EAEAEA
+        E7E7E7EBEBEBF1F1F1F5F5F5F8F8F8F9F9F9FCFCFCF9F9F9F7F7F7F7F7F7F4F4
+        F4F6F6F6F8F8F8F8F8F8F7F7F7F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F7F7F7F3F3F3F0F0F0F8F8F8FCFCFCF8F8F8F9F9F9FCFCFCFBFBFB
+        FBFBFBFAFAFAF9F9F9FAFAFAF9F9F9F8F8F8F6F6F6FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9E4E4E4DFDFDFE0E0E0E6E6E6E8E8E8E9
+        E9E9EAEAEAE9E9E9E9E9E9D6D6D6D9D9D9CCCCCCC6C6C6D9D9D9E4E4E4DDDDDD
+        E2E2E2EFEFEFEDEDEDEDEDEDEEEEEEEBEBEBDDDDDDEAEAEAF7F7F7FAFAFAFAFA
+        FAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFE4E4E4B9B9B9C3C3C3E7E7E7F6F6F6F8F8F8FBFBFBFBFBFBFBFBFB
+        F9F9F9F8F8F8FBFBFBF9F9F9F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAFAFA
+        FAF9F9F9F8F8F8FBFBFBFBFBFBF8F8F8FAFAFAFAFAFAF9F9F9FFFFFFD9D9D9C4
+        C4C4F9F9F9FBFBFBEAEAEAD9D9D9E6E6E6F8F8F8FBFBFBFBFBFBF8F8F8F7F7F7
+        FBFBFBF7F7F7F7F7F7FFFFFFFFFFFFFFFFFFEBEBEBECECECECECECEAEAEAEAEA
+        EAEAEAEAEAEAEAEFEFEFF1F1F1EEEEEEEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E6
+        E6E6E6E6E6E6E6E6E7E7E7DDDDDDF5F5F5FFFFFFFFFFFFFFFFFFFCFCFCFAFAFA
+        FAFAFAFBFBFBFBFBFBF9F9F9FBFBFBFBFBFBF9F9F9F9F9F9F9F9F9F8F8F8F9F9
+        F9FCFCFCFFFFFFFCFCFCEDEDEDEAEAEAE8E8E8E8E8E8EAEAEACDCDCDD5D5D5FC
+        FCFCFBFBFBEDEDEDE9E9E9EAEAEAE6E6E6E5E5E5E9E9E9E7E7E7E8E8E8ECECEC
+        F1F1F1EEEEEEFFFFFFE7E7E7FFFFFFFDFDFDE4E4E4F5F5F5F5F5F5F7F7F7FAFA
+        FAFFFFFFFFFFFFFCFCFCEBEBEBEAEAEAEAEAEAEAEAEAE7E7E7C3C3C3D2D2D2F4
+        F4F4F8F8F8FFFFFFFDFDFDE6E6E6E2E2E2E5E5E5D7D7D7E7E7E7F8F8F8F9F9F9
+        F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFF0F0F0F2F2F2F1F1F1EFEFEFEDED
+        EDECECECEBEBEBEAEAEADCDCDCBFBFBFD7D7D7F8F8F8FEFEFEFEFEFEFEFEFEFF
+        FFFFFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBFFFFFFFFFFFFFFFFFFE9E9E9E9E9E9
+        E7E7E7E6E6E6E5E5E5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3F6F6F6F8F8
+        F8F8F8F8F9F9F9F9F9F9E9E9E9D3D3D3CFCFCFCECECEE4E4E4F9F9F9FFFFFFFF
+        FFFFFFFFFFE9E9E9E7E7E7E7E7E7E7E7E7D3D3D3CECECEDEDEDEEEEEEEF1F1F1
+        F9F9F9FFFFFFF4F4F4E6E6E6EAEAEAE9E9E9E5E5E5E7E7E7E8E8E8E7E7E7E7E7
+        E7E4E4E4CCCCCCE1E1E1F8F8F8FAFAFAFBFBFBFDFDFDFCFCFCF8F8F8F7F7F7F5
+        F5F5F4F4F4F2F2F2F1F1F1F3F3F3F6F6F6F5F5F5F4F4F4F1F1F1EFEFEFF1F1F1
+        EEEEEEF0F0F0F2F2F2F4F4F4F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F4F4
+        F4F6F6F6F8F8F8F7F7F7F7F7F7F6F6F6F7F7F7F9F9F9F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F4F4F4F1F1F1F4F4F4FBFBFBFDFDFDFAFAFAFFFFFFFFFFFFF9F9F9
+        F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFECECECEAEAEAF7F7F7D9D9D9D6D6D6E3E3E3E5E5E5E9E9E9E8E8E8E8
+        E8E8E9E9E9E8E8E8D5D5D5ABABABD6D6D6C9C9C9D3D3D3F6F6F6F5F5F5EAEAEA
+        F8F8F8F9F9F9ECECECECECECEDEDEDEBEBEBDFDFDFF8F8F8FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFE8E8E8D1D1D1D7D7D7E8E8E8F8F8F8F6F6F6F8F8F8FBFBFBFBFBFBFBFBFB
+        FBFBFBFBFBFBFCFCFCFBFBFBF9F9F9FBFBFBFBFBFBF8F8F8F9F9F9F9F9F9F9F9
+        F9F9F9F9F8F8F8F9F9F9F9F9F9FCFCFCFFFFFFFCFCFCFCFCFCFDFDFDEBEBEBED
+        EDEDFFFFFFFFFFFFEAEAEAEAEAEAFBFBFBFCFCFCDEDEDEE6E6E6F4F4F4F7F7F7
+        F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEDEDEDECECECEAEAEAEAEA
+        EAEAEAEAEBEBEBF0F0F0EFEFEFEBEBEBE9E9E9E8E8E8E8E8E8E9E9E9E8E8E8E6
+        E6E6E7E7E7E9E9E9E9E9E9EAEAEAF9F9F9FFFFFFFFFFFFFFFFFFFBFBFBF5F5F5
+        F5F5F5F9F9F9FAFAFAFBFBFBFDFDFDFCFCFCFAFAFAF9F9F9F7F7F7F7F7F7F9F9
+        F9FAFAFAFFFFFFFFFFFFEAEAEAE8E8E8E8E8E8E8E8E8E8E8E8CCCCCCD0D0D0F0
+        F0F0EDEDEDEAEAEAEAEAEAECECECE9E9E9E6E6E6E9E9E9E9E9E9E9E9E9EDEDED
+        EFEFEFECECECEBEBEBD3D3D3FFFFFFEAEAEACFCFCFF5F5F5F5F5F5F7F7F7FFFF
+        FFFFFFFFFFFFFFECECECEAEAEAEAEAEAE9E9E9E6E6E6D3D3D3ACACACD3D3D3F8
+        F8F8FCFCFCFCFCFCFDFDFDEAEAEAE4E4E4E9E9E9E9E9E9EBEBEBF8F8F8F7F7F7
+        F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFEFEFEF2F2F2F1F1F1EEEEEEECECECEBEB
+        EBEAEAEAEAEAEAEAEAEADCDCDCD8D8D8E7E7E7F8F8F8FBFBFBFBFBFBFBFBFBFF
+        FFFFFAFAFAFAFAFAFAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFDFDFDE9E9E9E8E8E8
+        E6E6E6E5E5E5E4E4E4E7E7E7F4F4F4F5F5F5F5F5F5F4F4F4F1F1F1F4F4F4F7F7
+        F7F8F8F8F9F9F9FAFAFAFDFDFDFBFBFBF8F8F8F9F9F9FAFAFAFFFFFFFFFFFFFF
+        FFFFFAFAFAE7E7E7E6E6E6E6E6E6E4E4E4D2D2D2C8C8C8E4E4E4F3F3F3F6F6F6
+        F9F9F9FFFFFFFFFFFFEFEFEFEFEFEFECECECE7E7E7E9E9E9E9E9E9E7E7E7E6E6
+        E6D0D0D0A8A8A8D0D0D0F5F5F5F8F8F8FBFBFBFDFDFDFBFBFBF9F9F9F8F8F8F6
+        F6F6F6F6F6F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8F7F7F7F5F5F5F5F5F5F8F8F8
+        F5F5F5F2F2F2F5F5F5F5F5F5F6F6F6F8F8F8F9F9F9F8F8F8F8F8F8F9F9F9FBFB
+        FBFFFFFFFFFFFFF9F9F9F7F7F7F6F6F6F8F8F8F9F9F9F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F3F3F3F2F2F2F8F8F8F9F9F9FEFEFEFCFCFCFFFFFFEAEAEAE2E2E2
+        F7F7F7F7F7F7F5F5F5F5F5F5F4F4F4F2F2F2F5F5F5FFFFFFFFFFFFF6F6F6ECEC
+        ECE7E7E7D2D2D2DDDDDDF7F7F7E7E7E7E8E8E8EAEAEAE9E9E9EAEAEAE8E8E8E8
+        E8E8E9E9E9D5D5D5A9A9A9BCBCBCE9E9E9E8E8E8E6E6E6F5F5F5F5F5F5F5F5F5
+        FFFFFFF8F8F8ECECECEBEBEBEBEBEBEBEBEBECECECF9F9F9FBFBFBFFFFFFFFFF
+        FFFFFFFFFFFFFFFCFCFCFDFDFDFEFEFEF0F0F0EFEFEFFEFEFEFFFFFFF0F0F0D8
+        D8D8B0B0B0D3D3D3F5F5F5F8F8F8F7F7F7F6F6F6F8F8F8FBFBFBFBFBFBFBFBFB
+        FBFBFBFBFBFBFBFBFBFBFBFBF9F9F9FBFBFBFBFBFBF9F9F9F9F9F9F9F9F9F9F9
+        F9F8F8F8F7F7F7F8F8F8FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFEAEAEAEAEAEAD9D9D9B2B2B2C1C1C1E2E2E2F2F2F2F5F5F5
+        F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF0F0F0EAEAEAEAEAEAEAEAEAEAEAEAEBEB
+        EBEBEBEBECECECF0F0F0EDEDEDE9E9E9E7E7E7E7E7E7E8E8E8E9E9E9E7E7E7E7
+        E7E7E9E9E9EAEAEAE9E9E9E9E9E9EDEDEDF1F1F1F4F4F4F1F1F1F0F0F0FFFFFF
+        FFFFFFF8F8F8FBFBFBFDFDFDFDFDFDFAFAFAF8F8F8F7F7F7F5F5F5F6F6F6FAFA
+        FAFCFCFCFFFFFFFFFFFFEEEEEEEBEBEBE9E9E9E9E9E9E8E8E8DADADAEDEDEDFF
+        FFFFFFFFFFF5F5F5FDFDFDF5F5F5DADADAC6C6C6C7C7C7C6C6C6CACACADCDCDC
+        EDEDEDEAEAEAE8E8E8E7E7E7E6E6E6BCBCBCCDCDCDF4F4F4F5F5F5FFFFFFFFFF
+        FFFFFFFFFAFAFAEAEAEAE9E9E9E9E9E9DADADAC9C9C9ADADADBFBFBFE7E7E7F9
+        F9F9FBFBFBFCFCFCFBFBFBFFFFFFF7F7F7E9E9E9E9E9E9EBEBEBECECECF7F7F7
+        F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFF1F1F1F1F1F1EFEFEFECECECEAEAEAEBEB
+        EBECECECECECECEAEAEADADADACDCDCDE7E7E7F5F5F5F6F6F6F6F6F6F4F4F4FF
+        FFFFFFFFFFFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEE7E7E7E9E9E9E7E7E7
+        E4E4E4E4E4E4E2E2E2E5E5E5E7E7E7FFFFFFFFFFFFF2F2F2F1F1F1F5F5F5F9F9
+        F9FAFAFAFBFBFBFBFBFBFCFCFCFAFAFAF9F9F9FBFBFBFEFEFEFFFFFFFFFFFFFE
+        FEFEE8E8E8E7E7E7E7E7E7E7E7E7E3E3E3C8C8C8C8C8C8E7E7E7F4F4F4F5F5F5
+        FFFFFFFFFFFFFFFFFFF0F0F0EEEEEEECECECE9E9E9E9E9E9E9E9E9E4E4E4DFDF
+        DFBBBBBBBCBCBCE2E2E2F3F3F3F7F7F7F9F9F9FBFBFBF9F9F9F9F9F9F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8F8F8F8FFFFFF
+        FFFFFFF2F2F2F3F3F3F4F4F4F7F7F7F8F8F8FCFCFCFAFAFAF9F9F9FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F9F9F9F9F9F9FAFAFAFBFBFBFAFAFAFA
+        FAFAFAFAFAF3F3F3F4F4F4F9F9F9FAFAFAFEFEFEFCFCFCF8F8F8E1E1E1E1E1E1
+        F5F5F5F5F5F5F4F4F4F3F3F3F3F3F3F3F3F3F5F5F5FEFEFEFAFAFAF2F2F2E9E9
+        E9E5E5E5D0D0D0DDDDDDF7F7F7F7F7F7F8F8F8FFFFFFF8F8F8E9E9E9E7E7E7D5
+        D5D5C4C4C4ACACACBCBCBCE7E7E7FBFBFBFCFCFCF9F9F9F8F8F8F5F5F5F5F5F5
+        F5F5F5FFFFFFF8F8F8EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBF0F0F0FFFFFFFFFF
+        FFECECECE9E9E9E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E4E4E4E6E6E6CE
+        CECECECECEE6E6E6F7F7F7F8F8F8F6F6F6F5F5F5F8F8F8FBFBFBFBFBFBFBFBFB
+        FBFBFBFBFBFBFBFBFBFBFBFBFDFDFDFBFBFBFCFCFCF9F9F9F9F9F9FAFAFAF9F9
+        F9F8F8F8F9F9F9FAFAFAFCFCFCFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F8
+        F8F8FFFFFFF9F9F9EAEAEAEAEAEAD9D9D9E6E6E6F9F9F9FCFCFCF9F9F9F8F8F8
+        FCFCFCFFFFFFFFFFFFFFFFFFEEEEEEE7E7E7E3E3E3E6E6E6E9E9E9EAEAEAEBEB
+        EBEBEBEBEBEBEBEFEFEFEDEDEDE8E8E8E7E7E7E7E7E7E9E9E9E9E9E9E6E6E6E6
+        E6E6E7E7E7E8E8E8E7E7E7E8E8E8ECECECEEEEEEEEEEEEEDEDEDECECECF8F8F8
+        E8E8E8E7E7E7F9F9F9F9F9F9F9F9F9F7F7F7F7F7F7F6F6F6F6F6F6F9F9F9FEFE
+        FEFEFEFEFFFFFFFFFFFFEFEFEFECECECE9E9E9E8E8E8E8E8E8E8E8E8F3F3F3FC
+        FCFCECECECECECECFCFCFCE6E6E6B7B7B7C3C3C3D7D7D7D8D8D8DADADAE9E9E9
+        DEDEDEC2C2C2B9B9B9B7B7B79D9D9DAEAEAEDDDDDDF3F3F3F4F4F4FFFFFFFFFF
+        FFF9F9F9EAEAEAEAEAEAECECECDDDDDDBDBDBDC3C3C3CECECEE6E6E6F9F9F9FA
+        FAFAFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFECECECECECECEEEEEEEBEBEBEEEEEE
+        FAFAFAF9F9F9F8F8F8FFFFFFFCFCFCF0F0F0F0F0F0EDEDEDEBEBEBEBEBEBEDED
+        EDECECECECECECE9E9E9CCCCCCCACACAE6E6E6F4F4F4F5F5F5F4F4F4F3F3F3FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE7E7E7E7E7E7E7E7E7E6E6E6
+        E4E4E4E2E2E2E4E4E4E7E7E7E9E9E9FDFDFDFCFCFCF2F2F2F3F3F3F9F9F9FDFD
+        FDFDFDFDFCFCFCFCFCFCFCFCFCF9F9F9F9F9F9F9F9F9FBFBFBFFFFFFF1F1F1DF
+        DFDFE9E9E9E6E6E6E4E4E4E4E4E4E2E2E2D7D7D7F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFEFEFEFEEEEEEECECECE9E9E9E7E7E7E5E5E5D5D5D5C6C6
+        C6B6B6B6D5D5D5F4F4F4F4F4F4F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF8F8F8F7F7F7FBFBFBFFFFFFFDFDFDFFFFFFFFFFFFFFFF
+        FFFFFFFFFDFDFDFDFDFDFBFBFBFFFFFFFFFFFFFCFCFCFDFDFDFDFDFDFDFDFDFE
+        FEFEFDFDFDF8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFBFBFBF5F5F5F1F1F1F3F3F3
+        F3F3F3F3F3F3F3F3F3F4F4F4F5F5F5F5F5F5F7F7F7F5F5F5F6F6F6EDEDEDE4E4
+        E4E5E5E5DDDDDDE9E9E9F7F7F7F7F7F7F7F7F7FFFFFFFBFBFBEAEAEAE7E7E7C3
+        C3C3C0C0C0CFCFCFE4E4E4FAFAFAFCFCFCFEFEFEFBFBFBF8F8F8F8F8F8F1F1F1
+        EDEDEDFDFDFDEBEBEBD0D0D0D0D0D0D0D0D0D0D0D0DEDEDEF3F3F3F3F3F3ECEC
+        ECE9E9E9E9E9E9E9E9E9E8E8E8E7E7E7EAEAEAE9E9E9E4E4E4E4E4E4E5E5E5CA
+        CACAB5B5B5E4E4E4F8F8F8F8F8F8F6F6F6F5F5F5F8F8F8FAFAFAFBFBFBFCFCFC
+        FCFCFCFCFCFCFCFCFCFDFDFDFEFEFEFCFCFCFBFBFBF9F9F9FAFAFAFBFBFBF8F8
+        F8F8F8F8FAFAFAFBFBFBF9F9F9FFFFFFFFFFFFFFFFFFFCFCFCE5E5E5D5D5D5F5
+        F5F5F9F9F9EBEBEBEAEAEAEAEAEAEAEAEAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFEDEDEDE7E7E7E4E4E4E1E1E1E5E5E5E9E9E9E9E9E9E9E9
+        E9E9E9E9E9E9E9EDEDEDEDEDEDE8E8E8E7E7E7E7E7E7E9E9E9E7E7E7E5E5E5E2
+        E2E2E2E2E2E5E5E5E6E6E6E9E9E9EBEBEBEAEAEAE9E9E9E9E9E9E7E7E7E7E7E7
+        C0C0C0D1D1D1F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FFFF
+        FFFFFFFFFFFFFFFFFFFFEEEEEEE9E9E9E8E8E8E9E9E9E7E7E7E7E7E7E6E6E6E6
+        E6E6DCDCDCE9E9E9F3F3F3DEDEDED0D0D0E7E7E7FAFAFAFBFBFBFBFBFBFCFCFC
+        E7E7E7CCCCCCC6C6C6C1C1C1BFBFBFD8D8D8F4F4F4F8F8F8F9F9F9FFFFFFFFFF
+        FFEBEBEBEEEEEEEDEDEDF0F0F0DEDEDED9D9D9E2E2E2F1F1F1F8F8F8F9F9F9FB
+        FBFBFEFEFEFEFEFEFFFFFFFFFFFFFDFDFDF0F0F0F1F1F1EDEDEDEBEBEBECECEC
+        EBEBEBF8F8F8F8F8F8F8F8F8FFFFFFFDFDFDF0F0F0ECECECEAEAEAEBEBEBEAEA
+        EAE9E9E9E7E7E7D4D4D4B5B5B5D3D3D3F0F0F0F3F3F3F4F4F4F3F3F3F2F2F2FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDE5E5E5E2E2E2E3E3E3E3E3E3E4E4E4
+        E2E2E2E3E3E3E7E7E7E9E9E9E9E9E9EAEAEAE9E9E9E5E5E5F7F7F7FBFBFBFEFE
+        FEFFFFFFFCFCFCFCFCFCFBFBFBF9F9F9FCFCFCFCFCFCFCFCFCFCFCFCEAEAEAE7
+        E7E7E7E7E7D5D5D5C8C8C8D9D9D9E4E4E4E6E6E6F5F5F5FFFFFFFFFFFFFFFFFF
+        FFFFFFFDFDFDEFEFEFEDEDEDEDEDEDEBEBEBE9E9E9E5E5E5D7D7D7BCBCBCCACA
+        CAD9D9D9E7E7E7FFFFFFFFFFFFFFFFFFF7F7F7F8F8F8F8F8F8F8F8F8FAFAFAF9
+        F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FCFCFCFAFAFAFEFEFEF4F4F4F4F4F4FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFCFC
+        FCF0F0F0ECECECE7E7E7E7E7E7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+        FEFEF9F9F9F9F9F9F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFBFBFBF8F8F8F7F7F7
+        F7F7F7F4F4F4F4F4F4F7F7F7F8F8F8F8F8F8F9F9F9FBFBFBF9F9F9FAFAFAEAEA
+        EAE8E8E8ECECECE0E0E0EAEAEAF7F7F7F7F7F7F9F9F9FFFFFFFAFAFAD7D7D7B2
+        B2B2D7D7D7F5F5F5F9F9F9FFFFFFFFFFFFFDFDFDFAFAFAF8F8F8F7F7F7F0F0F0
+        EDEDEDF3F3F3E6E6E6D5D5D5D8D8D8DADADADADADAE8E8E8F3F3F3F0F0F0E8E8
+        E8E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E9E9E9E7E7E7DFDFDFCACACAB6B6B695
+        9595ADADADE2E2E2F6F6F6F5F5F5F3F3F3F4F4F4F7F7F7F9F9F9FBFBFBFCFCFC
+        FDFDFDFCFCFCFCFCFCFEFEFEFDFDFDFBFBFBFBFBFBFCFCFCFBFBFBF9F9F9F8F8
+        F8F7F7F7FAFAFAF9F9F9F7F7F7FFFFFFFFFFFFFBFBFBECECECE6E6E6E6E6E6F9
+        F9F9F9F9F9ECECECECECECECECECEDEDEDF0F0F0F0F0F0FCFCFCFFFFFFFFFFFF
+        FFFFFFFFFFFFFBFBFBE7E7E7CCCCCCB2B2B2B1B1B1BABABABDBDBDBCBCBCD4D4
+        D4E9E9E9E9E9E9EAEAEAEBEBEBE9E9E9E7E7E7E7E7E7E8E8E8E6E6E6E1E1E1DC
+        DCDCE1E1E1E6E6E6E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E4E4E4
+        B8B8B8CDCDCDF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FFFF
+        FFFFFFFFFFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E7E7E7E6E6E6E7E7E7E6E6E6E7
+        E7E7E7E7E7F0F0F0F9F9F9ECECECEFEFEFFAFAFAFBFBFBFBFBFBFCFCFCFCFCFC
+        F8F8F8F3F3F3F3F3F3EFEFEFF0F0F0F4F4F4F8F8F8FFFFFFFFFFFFFFFFFFFFFF
+        FFECECECEFEFEFEDEDEDECECECE9E9E9E3E3E3FDFDFDFFFFFFFFFFFFFFFFFFFC
+        FCFCFEFEFEFFFFFFFFFFFFFFFFFFEEEEEEF1F1F1EFEFEFECECECE9E9E9E8E8E8
+        E8E8E8E3E3E3F2F2F2F5F5F5FFFFFFFBFBFBEEEEEEEAEAEAE9E9E9E9E9E9E8E8
+        E8E7E7E7D4D4D4AFAFAFC1C1C1E4E4E4F3F3F3F5F5F5F3F3F3F0F0F0F0F0F0FF
+        FFFFF8F8F8F5F5F5E3E3E3ECECECEBEBEBE6E6E6E3E3E3E4E4E4E2E2E2E4E4E4
+        E4E4E4E7E7E7EAEAEAE9E9E9E9E9E9E9E9E9E7E7E7E8E8E8E6E6E6FAFAFAFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF8F8F8F4
+        F4F4F1F1F1C9C9C9C7C7C7E5E5E5E7E7E7E7E7E7E9E9E9EAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAEAECECECECECECEBEBEBEBEBEBEBEBEBD9D9D9BCBCBCCBCBCBE7E7
+        E7F4F4F4FFFFFFFFFFFFFFFFFFF8F8F8F6F6F6F8F8F8F9F9F9FAFAFAFBFBFBF9
+        F9F9F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F3F3F3F2F2F2
+        EDEDEDEBEBEBECECECE7E7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF0F0
+        F0EEEEEEEAEAEAE7E7E7E7E7E7E7E7E7E4E4E4F8F8F8FEFEFEFCFCFCFCFCFCF9
+        F9F9F7F7F7F9F9F9F9F9F9F8F8F8FEFEFEFFFFFFFFFFFFFEFEFEFCFCFCFAFAFA
+        F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFF
+        FFF6F6F6EEEEEEE0E0E0EAEAEAF7F7F7F7F7F7F9F9F9FFFFFFE9E9E9B2B2B2C1
+        C1C1E7E7E7F8F8F8FCFCFCFEFEFEFCFCFCFBFBFBF9F9F9F8F8F8F5F5F5F3F3F3
+        F5F5F5FAFAFAF8F8F8F3F3F3F4F4F4F3F3F3F0F0F0F0F0F0F5F5F5ECECECE8E8
+        E8E9E9E9E7E7E7E6E6E6E7E7E7D5D5D5C3C3C3C3C3C3B6B6B69D9D9DB0B0B0C3
+        C3C3DCDCDCF4F4F4F4F4F4F4F4F4F5F5F5F8F8F8FAFAFAFBFBFBFBFBFBFEFEFE
+        FDFDFDFAFAFAFCFCFCFCFCFCFBFBFBF9F9F9FCFCFCFCFCFCF9F9F9F8F8F8F7F7
+        F7F5F5F5FAFAFAF9F9F9FFFFFFFFFFFFFFFFFFE9E9E9E6E6E6E4E4E4E4E4E4E7
+        E7E7E9E9E9EBEBEBECECECEDEDEDF1F1F1F1F1F1EEEEEEECECECECECECECECEC
+        E9E9E9E6E6E6D3D3D3BCBCBC9D9D9DACACACC7C7C7CCCCCCCCCCCCCFCFCFF9F9
+        F9FDFDFDE9E9E9E9E9E9EDEDEDEAEAEAE7E7E7E7E7E7E7E7E7E5E5E5CECECEBA
+        BABAD3D3D3E6E6E6E4E4E4E5E5E5E6E6E6E4E4E4E6E6E6E8E8E8E7E7E7CFCFCF
+        A5A5A5CFCFCFF5F5F5F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFFFF
+        FFFFFFFFF1F1F1E9E9E9E5E5E5E5E5E5E9E9E9E9E9E9E6E6E6E7E7E7E7E7E7E9
+        E9E9EBEBEBF0F0F0EFEFEFFFFFFFFFFFFFFCFCFCFCFCFCFBFBFBFDFDFDFCFCFC
+        F8F8F8F8F8F8F8F8F8F7F7F7F9F9F9FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFAFA
+        FAEAEAEAEDEDEDEAEAEAE7E7E7E6E6E6E1E1E1F0F0F0FFFFFFFFFFFFFDFDFDFF
+        FFFFFFFFFFFFFFFFFFFFFFFCFCFCEEEEEEEFEFEFEDEDEDE9E9E9E8E8E8E7E7E7
+        E7E7E7CECECEC0C0C0E2E2E2F3F3F3F5F5F5DCDCDCDADADAE9E9E9E9E9E9D9D9
+        D9C6C6C6B0B0B0C1C1C1E6E6E6F7F7F7F7F7F7F7F7F7F5F5F5F3F3F3F3F3F3FF
+        FFFFFFFFFFFFFFFFE6E6E6E9E9E9E7E7E7E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9
+        E7E7E7E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E6E6E6E8E8E8E6E6E6D6D6D6EDED
+        EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F7F7F7F5F5F5F4
+        F4F4F4F4F4E4E4E4E4E4E4FFFFFFFFFFFFF5F5F5EBEBEBEAEAEAEAEAEAEAEAEA
+        EBEBEBEBEBEBEDEDEDEEEEEEECECECEAEAEAEAEAEAC8C8C8C6C6C6E7E7E7F4F4
+        F4FFFFFFFFFFFFFFFFFFF7F7F7E7E7E7E6E6E6FFFFFFFFFFFFFFFFFFFBFBFBFC
+        FCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1EEEEEE
+        EBEBEBEAEAEAEAEAEAEAEAEAFDFDFDFFFFFFFFFFFFFFFFFFFDFDFDEFEFEFEDED
+        EDEAEAEAE7E7E7E7E7E7E7E7E7E6E6E6E2E2E2E4E4E4E6E6E6D9D9D9E7E7E7F8
+        F8F8F8F8F8F8F8F8F8F8F8F5F5F5F8F8F8FCFCFCFCFCFCFCFCFCFBFBFBFBFBFB
+        FCFCFCFBFBFBF9F9F9FBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFDFDFDFBFBFBFFFF
+        FFFBFBFBEFEFEFEEEEEEE1E1E1EAEAEAF7F7F7F9F9F9FFFFFFFFFFFFE8E8E8E5
+        E5E5F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5F4F4F4F3F3F3F4F4F4
+        F9F9F9FCFCFCFCFCFCF8F8F8F7F7F7F4F4F4F4F4F4F4F4F4F5F5F5FFFFFFF9F9
+        F9D7D7D7C4C4C4C4C4C4C5C5C5B1B1B1C0C0C0D0D0D0C8C8C8C8C8C8DEDEDEF1
+        F1F1F1F1F1F3F3F3F6F6F6F8F8F8F9F9F9FBFBFBFCFCFCFBFBFBFDFDFDFFFFFF
+        FDFDFDFBFBFBFDFDFDFDFDFDFCFCFCFCFCFCFDFDFDFBFBFBF8F8F8F8F8F8FAFA
+        FAF8F8F8FCFCFCFFFFFFFFFFFFFFFFFFF8F8F8E6E6E6E5E5E5E2E2E2D1D1D1C6
+        C6C6D9D9D9EBEBEBEAEAEAEDEDEDF0F0F0ECECECE9E9E9E6E6E6E6E6E6D1D1D1
+        B7B7B7B8B8B8A4A4A4B6B6B6CACACADFDFDFF7F7F7F7F7F7F7F7F7FFFFFFFFFF
+        FFFFFFFFE9E9E9E9E9E9ECECECEAEAEAE7E7E7E6E6E6E6E6E6D2D2D2A6A6A6B7
+        B7B7E1E1E1E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E7E7E7E6E6E6D0D0D09F9F9F
+        B3B3B3E1E1E1F3F3F3F3F3F3F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFF
+        FFFDFDFDEEEEEEE8E8E8E5E5E5E5E5E5E7E7E7E6E6E6E5E5E5E5E5E5E7E7E7E9
+        E9E9EAEAEAEBEBEBE9E9E9F9F9F9F9F9F9FFFFFFFFFFFFFBFBFBFCFCFCFBFBFB
+        F9F9F9FAFAFAF9F9F9F9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFDFDFDEAEA
+        EAE9E9E9EAEAEAE7E7E7E4E4E4E4E4E4E1E1E1E1E1E1E7E7E7EBEBEBECECECFD
+        FDFDFFFFFFFFFFFFFDFDFDEEEEEEEEEEEEEDEDEDEAEAEAE8E8E8E7E7E7E7E7E7
+        E6E6E6BABABAB8B8B8E3E3E3F3F3F3F4F4F4E5E5E5E8E8E8D9D9D9C5C5C5B2B2
+        B2C1C1C1D3D3D3E7E7E7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7FF
+        FFFFFFFFFFFFFFFFE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEA
+        EAEAEAEBEBEBE9E9E9E9E9E9E7E7E7E7E7E7E8E8E8E9E9E9E9E9E9D4D4D4FBFB
+        FBFFFFFFFFFFFFFFFFFFFEFEFEF1F1F1EFEFEFEEEEEEE2E2E2EAEAEAF3F3F3F0
+        F0F0F0F0F0F1F1F1F3F3F3FFFFFFFFFFFFF7F7F7ECECECEAEAEAEAEAEAEBEBEB
+        ECECECECECECF0F0F0EEEEEEEAEAEAE9E9E9E8E8E8C6C6C6D3D3D3F4F4F4FFFF
+        FFFFFFFFFFFFFFF7F7F7E6E6E6E7E7E7E4E4E4F8F8F8FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEFEFEFF1F1F1F0F0F0EEEEEEECECEC
+        EAEAEAEAEAEAEAEAEAEAEAEAECECECEEEEEEF0F0F0EFEFEFEFEFEFEDEDEDEAEA
+        EAE7E7E7E7E7E7E5E5E5E3E3E3E2E2E2E1E1E1E4E4E4D5D5D5B0B0B0D1D1D1F5
+        F5F5F5F5F5F5F5F5F5F5F5F3F3F3F5F5F5F5F5F5F7F7F7FDFDFDFEFEFEFCFCFC
+        FCFCFCFDFDFDFCFCFCFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFFFFF
+        FFFFFFFFF6F6F6EDEDEDDEDEDEEAEAEAF8F8F8F9F9F9FFFFFFFFFFFFFBFBFBFF
+        FFFFFFFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7F5F5F5F6F6F6
+        FBFBFBFFFFFFFCFCFCFBFBFBF9F9F9F7F7F7F9F9F9F7F7F7F8F8F8FFFFFFE8E8
+        E8ADADADBFBFBFD3D3D3D3D3D3D3D3D3E2E2E2EDEDEDEBEBEBEEEEEEF1F1F1F3
+        F3F3F3F3F3F5F5F5F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFFFFFFFFFFFF
+        FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8FCFC
+        FCFBFBFBFFFFFFFFFFFFFFFFFFF8F8F8E9E9E9E6E6E6E4E4E4D3D3D3B4B4B4C6
+        C6C6F9F9F9FCFCFCEEEEEEF3F3F3EEEEEEE9E9E9E8E8E8E6E6E6CFCFCF9B9B9B
+        B2B2B2CCCCCCD0D0D0E2E2E2F4F4F4F7F7F7F9F9F9FAFAFAFFFFFFFFFFFFFFFF
+        FFFDFDFDE9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E2E2E2DEDEDEBABABAB5B5B5DA
+        DADAF1F1F1FFFFFFF9F9F9EAEAEAEAEAEAEAEAEAD5D5D5BDBDBDA0A0A0A9A9A9
+        D7D7D7F1F1F1F3F3F3F4F4F4F7F7F7F9F9F9F7F7F7FFFFFFFFFFFFFFFFFFF2F2
+        F2E1E1E1D9D9D9D2D2D2DFDFDFE5E5E5E5E5E5E2E2E2E4E4E4E6E6E6E6E6E6E9
+        E9E9EBEBEBE9E9E9E8E8E8E7E7E7E7E7E7FBFBFBFBFBFBFFFFFFFFFFFFFAFAFA
+        FAFAFAF9F9F9F8F8F8FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDECEC
+        ECECECECEAEAEAE8E8E8E6E6E6E6E6E6E2E2E2E2E2E2E7E7E7EAEAEAEAEAEAEB
+        EBEBECECECECECECEDEDEDEDEDEDECECECEAEAEAE9E9E9E8E8E8E7E7E7D3D3D3
+        BABABA9F9F9FCBCBCBF5F5F5F4F4F4F5F5F5F7F7F7F8F8F8E5E5E5D1D1D1D4D4
+        D4E4E4E4F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8F8F8F8F7F7F7FF
+        FFFFFFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
+        ECECECECECECEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8FDFD
+        FDFFFFFFFFFFFFFFFFFFF0F0F0F1F1F1F0F0F0EEEEEEE4E4E4EAEAEAEEEEEEF0
+        F0F0F2F2F2F4F4F4F3F3F3F3F3F3FFFFFFF7F7F7EAEAEAEAEAEAEAEAEAEAEAEA
+        ECECECEEEEEEEDEDEDEAEAEAEAEAEAE9E9E9E9E9E9C6C6C6D2D2D2F4F4F4FFFF
+        FFFFFFFFF4F4F4E6E6E6E4E4E4E4E4E4E3E3E3E6E6E6EAEAEAEDEDEDFDFDFDFF
+        FFFFFFFFFFFFFFFFFFFFFFF2F2F2EEEEEEEEEEEEF0F0F0EDEDEDEBEBEBEAEAEA
+        EAEAEAEAEAEAEAEAEAEBEBEBEDEDEDEDEDEDF0F0F0EEEEEEECECECEAEAEAE8E8
+        E8E6E6E6E1E1E1DDDDDDE1E1E1E2E2E2E3E3E3E6E6E6C3C3C3BCBCBCE2E2E2F4
+        F4F4F6F6F6F7F7F7F5F5F5F5F5F5F6F6F6F4F4F4F6F6F6FBFBFBFDFDFDFBFBFB
+        FCFCFCFCFCFCFBFBFBFDFDFDFBFBFBFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFF
+        FFFFFFFFF5F5F5ECECECEAEAEAE1E1E1ECECECF9F9F9FFFFFFFDFDFDE9E9E9F9
+        F9F9F9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9FBFBFB
+        FFFFFFFFFFFFFCFCFCFBFBFBF9F9F9F7F7F7FBFBFBF7F7F7F8F8F8F8F8F8E4E4
+        E4D1D1D1E4E4E4F4F4F4F4F4F4F4F4F4F1F1F1ECECECEEEEEEF3F3F3F4F4F4F5
+        F5F5F5F5F5F7F7F7FAFAFAFAFAFAFAFAFAFBFBFBFAFAFAFDFDFDFFFFFFFDFDFD
+        FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFDFD
+        FDFAFAFAFFFFFFFFFFFFF8F8F8E7E7E7E5E5E5E0E0E0CFCFCFB2B2B2C5C5C5E6
+        E6E6FFFFFFEDEDEDE0E0E0EDEDEDE9E9E9E7E7E7E6E6E6E3E3E3B2B2B2B0B0B0
+        E2E2E2F9F9F9F9F9F9F9F9F9FAFAFAFBFBFBFAFAFAFBFBFBFFFFFFFFFFFFFDFD
+        FDE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAE0E0E0DFDFDFD4D4D4DDDDDDEF
+        EFEFF3F3F3FFFFFFF9F9F9D6D6D6C1C1C1C0C0C0A6A6A6B6B6B6C8C8C8DCDCDC
+        F4F4F4F7F7F7F8F8F8F7F7F7F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFECECECDFDF
+        DFD8D8D8C9C9C9D6D6D6E7E7E7E9E9E9E5E5E5E4E4E4E3E3E3E4E4E4E2E2E2E6
+        E6E6E5E5E5E4E4E4E6E6E6E7E7E7E7E7E7E6E6E6E3E3E3F8F8F8FCFCFCFFFFFF
+        FFFFFFF9F9F9FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EDEDEDEEEE
+        EEEDEDEDE8E8E8E8E8E8E9E9E9E7E7E7E4E4E4E5E5E5E8E8E8EAEAEAEAEAEAEA
+        EAEAECECECEDEDEDEEEEEEEEEEEEEBEBEBE8E8E8E7E7E7D5D5D5BCBCBC9F9F9F
+        B2B2B2CACACAE2E2E2F7F7F7F4F4F4F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7F9F9
+        F9F8F8F8F7F7F7F9F9F9F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAF8F8F8F7F7F7FF
+        FFFFFFFFFFFFFFFFF0F0F0EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEB
+        ECECECEAEAEAE9E9E9E9E9E9E7E7E7D2D2D2D2D2D2E6E6E6E8E8E8EAEAEAEDED
+        EDECECECF0F0F0F2F2F2F1F1F1F1F1F1F2F2F2EFEFEFE1E1E1CECECEE3E3E3F4
+        F4F4F5F5F5F6F6F6F5F5F5F5F5F5FFFFFFFFFFFFECECECEAEAEAEAEAEAEDEDED
+        F0F0F0EEEEEEECECECECECECECECECE9E9E9EAEAEAC4C4C4D3D3D3F5F5F5FFFF
+        FFFFFFFFE1E1E1E5E5E5E2E2E2E4E4E4E6E6E6E8E8E8EAEAEAECECECE9E9E9EA
+        EAEAE9E9E9E9E9E9EBEBEBECECECEBEBEBEDEDEDEDEDEDEBEBEBEAEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEDEDEDEEEEEEEDEDEDEEEEEEECECECE8E8E8E8E8E8E6E6
+        E6D1D1D1BABABAC1C1C1D6D6D6E5E5E5E4E4E4E2E2E2BDBDBDCECECEF4F4F4F6
+        F6F6F7F7F7F8F8F8F5F5F5F4F4F4F4F4F4F1F1F1F2F2F2F7F7F7F9F9F9F8F8F8
+        FBFBFBFBFBFBF8F8F8FAFAFAF9F9F9FFFFFFF3F3F3DCDCDCF1F1F1FCFCFCF4F4
+        F4EDEDEDF0F0F0EEEEEEEDEDEDE2E2E2EEEEEEF8F8F8FFFFFFFFFFFFF9F9F9E6
+        E6E6E7E7E7E7E7E7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB
+        FEFEFEFDFDFDFBFBFBFAFAFAF8F8F8F7F7F7F9F9F9F8F8F8F7F7F7FFFFFFFFFF
+        FFF5F5F5F5F5F5F7F7F7F6F6F6F4F4F4F1F1F1EDEDEDF0F0F0F3F3F3F4F4F4F6
+        F6F6F5F5F5F7F7F7FAFAFAFAFAFAFAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFCFCFC
+        FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDECECECEDEDEDEEEEEEFDFDFDFEFEFEFBFB
+        FBFFFFFFFFFFFFFFFFFFE7E7E7D0D0D0D0D0D0C0C0C0B1B1B1C4C4C4E4E4E4F4
+        F4F4F7F7F7EAEAEAE9E9E9ECECECE9E9E9E6E6E6E2E2E2CDCDCDA1A1A1CFCFCF
+        F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFAFAFAF9F9F9FAFAFAFFFFFFFFFFFFE9E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAE3E3E3E4E4E4EAEAEAD4D4D4E1
+        E1E1F5F5F5F6F6F6F8F8F8C3C3C3B9B9B9CCCCCCCBCBCBDEDEDEF3F3F3F7F7F7
+        FCFCFCFCFCFCFBFBFBFBFBFBF9F9F9FDFDFDFFFFFFFFFFFFFEFEFEECECECE6E6
+        E6DADADADBDBDBEBEBEBF8F8F8EDEDEDE5E5E5E3E3E3E0E0E0CECECEB9B9B9BF
+        BFBFD1D1D1E0E0E0E0E0E0E1E1E1E0E0E0E1E1E1E1E1E1E5E5E5E9E9E9FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9EAEAEAEBEBEBECEC
+        ECEAEAEAE4E4E4E6E6E6E7E7E7E2E2E2E2E2E2E4E4E4E9E9E9E9E9E9D9D9D9C8
+        C8C8DDDDDDEEEEEEECECECECECECE9E9E9E7E7E7E6E6E6BFBFBFB9B9B9CCCCCC
+        E1E1E1F5F5F5F7F7F7F7F7F7F5F5F5F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9FBFB
+        FBF9F9F9F8F8F8FAFAFAF9F9F9F8F8F8F9F9F9FAFAFAFAFAFAF9F9F9F9F9F9FF
+        FFFFFFFFFFFFFFFFF0F0F0EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEB
+        D7D7D7D5D5D5E9E9E9E9E9E9D2D2D2A9A9A9D0D0D0E8E8E8EAEAEAEDEDEDECEC
+        ECEBEBEBEDEDEDECECECEEEEEEF1F1F1F1F1F1EBEBEBDEDEDED7D7D7E3E3E3F1
+        F1F1F2F2F2F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFECECECECECECEDEDEDF0F0F0
+        EFEFEFEDEDEDECECECEAEAEAE9E9E9E7E7E7D7D7D7A7A7A7CECECEF7F7F7FFFF
+        FFFFFFFFE0E0E0E4E4E4E2E2E2D5D5D5D7D7D7E9E9E9EAEAEAEBEBEBEAEAEAE7
+        E7E7E5E5E5E7E7E7E9E9E9E9E9E9EAEAEAEDEDEDEEEEEEEDEDEDECECECECECEC
+        EDEDEDEDEDEDEDEDEDEEEEEEEDEDEDE9E9E9E9E9E9E9E9E9D8D8D8C5C5C5C0C0
+        C0A9A9A9B7B7B7D3D3D3E6E6E6E7E7E7E2E2E2D3D3D3B2B2B2D3D3D3F6F6F6F7
+        F7F7F9F9F9F7F7F7F4F4F4F4F4F4F1F1F1EFEFEFF3F3F3F6F6F6F8F8F8F8F8F8
+        F8F8F8F8F8F8F7F7F7FAFAFAF9F9F9FCFCFCEEEEEEE6E6E6E7E7E7E8E8E8EAEA
+        EAEEEEEEEFEFEFEDEDEDEAEAEAEEEEEEF0F0F0F5F5F5FFFFFFFFFFFFF9F9F9E6
+        E6E6E6E6E6E4E4E4E5E5E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9
+        FBFBFBFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFEFE
+        FEE8E8E8F5F5F5F8F8F8F6F6F6F2F2F2EDEDEDE9E9E9EEEEEEF4F4F4F5F5F5F5
+        F5F5F6F6F6F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFDFDFD
+        FFFFFFFFFFFFF9F9F9E9E9E9EAEAEAECECECEDEDEDEBEBEBEAEAEAEBEBEBDADA
+        DAFFFFFFFFFFFFFBFBFBC6C6C6CECECEC7C7C7C4C4C4D5D5D5E3E3E3F3F3F3F7
+        F7F7F9F9F9FBFBFBFDFDFDFFFFFFFCFCFCE8E8E8E3E3E3BDBDBDBBBBBBE4E4E4
+        F7F7F7F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9FFFFFFFFFFFFE8E8
+        E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E6E6E6E7E7E7DADADAB1B1B1D2
+        D2D2F4F4F4F7F7F7F7F7F7E2E2E2E0E0E0F4F4F4F5F5F5F5F5F5F8F8F8FAFAFA
+        FCFCFCFCFCFCFCFCFCFDFDFDFAFAFAFFFFFFFFFFFFFFFFFFF0F0F0E9E9E9E7E7
+        E7DEDEDEE6E6E6F4F4F4FFFFFFFFFFFFF6F6F6E2E2E2CACACA969696A5A5A5C6
+        C6C6D7D7D7DFDFDFE5E5E5E5E5E5E2E2E2E3E3E3E4E4E4E6E6E6E9E9E9EAEAEA
+        ECECECFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF8F8F8E9E9E9EAEAEAEBEBEBEAEA
+        EAE6E6E6E3E3E3E4E4E4D1D1D1BABABABCBCBCC2C2C2C7C7C7D9D9D9CBCBCBDA
+        DADAFFFFFFFCFCFCE9E9E9E9E9E9E8E8E8E8E8E8D7D7D7B0B0B0D3D3D3F8F8F8
+        F8F8F8F8F8F8F8F8F8F7F7F7F4F4F4F5F5F5F8F8F8F9F9F9F9F9F9F9F9F9FAFA
+        FAF9F9F9F9F9F9FBFBFBF9F9F9F8F8F8FAFAFAFBFBFBFAFAFAF9F9F9F8F8F8FF
+        FFFFFFFFFFFFFFFFEFEFEFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBECECEC
+        C1C1C1E4E4E4FCFCFCE9E9E9D5D5D5E4E4E4F8F8F8FFFFFFFDFDFDEAEAEAEBEB
+        EBEAEAEAE8E8E8E6E6E6E9E9E9EDEDEDECECECE7E7E7E7E7E7D7D7D7DEDEDEF1
+        F1F1F4F4F4F9F9F9F8F8F8F5F5F5FFFFFFE9E9E9D9D9D9EBEBEBEEEEEEEEEEEE
+        EBEBEBEBEBEBEAEAEAE7E7E7E7E7E7D0D0D0A1A1A1A9A9A9DEDEDEFFFFFFFFFF
+        FFFCFCFCDADADACECECEBDBDBDADADADD3D3D3E9E9E9E8E8E8EAEAEAE7E7E7E3
+        E3E3E4E4E4E8E8E8E9E9E9E9E9E9EAEAEAECECECECECECECECECEAEAEAEDEDED
+        EEEEEEECECECEAEAEAEBEBEBDDDDDDC8C8C8CACACAC8C8C8B1B1B1B7B7B7C4C4
+        C4C2C2C2D9D9D9F0F0F0F3F3F3F4F4F4DBDBDBBEBEBEC8C8C8E7E7E7F8F8F8F8
+        F8F8F9F9F9F6F6F6F2F2F2F3F3F3F0F0F0F1F1F1F6F6F6F8F8F8F7F7F7F7F7F7
+        F7F7F7F5F5F5F7F7F7F9F9F9F8F8F8FBFBFBFAFAFAF5F5F5F2F2F2EAEAEAE9E9
+        E9EEEEEEEDEDEDEAEAEAE7E7E7EDEDEDEEEEEEEDEDEDFFFFFFFFFFFFE6E6E6E5
+        E5E5E5E5E5E2E2E2E1E1E1F7F7F7FBFBFBFCFCFCFBFBFBFFFFFFFDFDFDE7E7E7
+        F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFDADA
+        DAD2D2D2F4F4F4F6F6F6F4F4F4F1F1F1ECECECECECECF3F3F3F6F6F6F7F7F7F8
+        F8F8F8F8F8FAFAFAFAFAFAFAFAFAFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFAFAFA
+        FFFFFFECECECCACACADADADAECECECEBEBEBE9E9E9E8E8E8E7E7E7E9E9E9C6C6
+        C6F7F7F7FFFFFFC8C8C8C1C1C1E5E5E5E8E8E8E5E5E5F0F0F0F0F0F0F5F5F5F9
+        F9F9F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFE7E7E7E4E4E4C1C1C1D3D3D3F6F6F6
+        F7F7F7F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFCFCFCFBFBFBFFFFFFFFFFFFE9E9
+        E9E9E9E9E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E6E6E6E7E7E7C8C8C8C0C0C0E3
+        E3E3F5F5F5F4F4F4F4F4F4F3F3F3F4F4F4F7F7F7F7F7F7F8F8F8FBFBFBFCFCFC
+        FDFDFDFCFCFCFDFDFDFCFCFCF9F9F9FEFEFEFFFFFFEFEFEFE4E4E4EAEAEAEAEA
+        EADFDFDFF0F0F0FFFFFFFFFFFFFFFFFFF7F7F7E3E3E3AFAFAF9F9F9FD1D1D1ED
+        EDEDF0F0F0F2F2F2D5D5D5D7D7D7E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E9E9E9
+        E9E9E9E9E9E9E9E9E9E8E8E8E7E7E7E6E6E6D6D6D6D9D9D9E9E9E9EAEAEAE8E8
+        E8E3E3E3D0D0D0B8B8B8A3A3A3B7B7B7D0D0D0D5D5D5D7D7D7E8E8E8CDCDCDE8
+        E8E8FFFFFFFBFBFBE9E9E9E9E9E9E7E7E7E5E5E5C6C6C6C1C1C1E7E7E7FBFBFB
+        F9F9F9F8F8F8F8F8F8F7F7F7F4F4F4F6F6F6F9F9F9F9F9F9F9F9F9F9F9F9F9F9
+        F9FAFAFAFBFBFBF9F9F9F8F8F8F9F9F9FCFCFCFAFAFAFAFAFAFAFAFAF9F9F9FF
+        FFFFFFFFFFF6F6F6E7E7E7EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9
+        BFBFBFF8F8F8FFFFFFECECECECECECF8F8F8E9E9E9F8F8F8EBEBEBDADADAEAEA
+        EAEAEAEAE6E6E6E6E6E6E9E9E9E9E9E9EAEAEAE6E6E6D6D6D6B7B7B7D6D6D6F6
+        F6F6F8F8F8FCFCFCF9F9F9F5F5F5F7F7F7E5E5E5E5E5E5D9D9D9DADADAD5D5D5
+        D1D1D1E7E7E7E5E5E5CECECEB7B7B79B9B9BB1B1B1DADADAF3F3F3FFFFFFFFFF
+        FFECECECE0E0E0C0C0C0BBBBBBD3D3D3E7E7E7F7F7F7EAEAEAEAEAEAE8E8E8E6
+        E6E6E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAECECEC
+        ECECECE9E9E9E7E7E7ECECECCCCCCCBEBEBECECECED0D0D0CACACAD7D7D7E7E7
+        E7EAEAEAEEEEEEF3F3F3F5F5F5F8F8F8EEEEEEDFDFDFE8E8E8F6F6F6F8F8F8F7
+        F7F7F5F5F5F4F4F4F3F3F3F4F4F4F4F4F4F5F5F5F8F8F8F8F8F8F7F7F7F6F6F6
+        F7F7F7F5F5F5F4F4F4F7F7F7F8F8F8F9F9F9F8F8F8F7F7F7F4F4F4ECECECE3E3
+        E3EAEAEAECECECEAEAEAE7E7E7EDEDEDEDEDEDEBEBEBFDFDFDF9F9F9E4E4E4E4
+        E4E4E3E3E3E1E1E1E2E2E2E8E8E8EBEBEBE9E9E9E9E9E9EDEDEDECECECE3E3E3
+        D1D1D1E4E4E4F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFEBEBEBC1C1
+        C1CFCFCFF4F4F4F5F5F5F3F3F3F0F0F0EDEDEDF0F0F0F7F7F7F8F8F8F9F9F9FB
+        FBFBFAFAFAFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8
+        F6F6F6E7E7E7D5D5D5E5E5E5EBEBEBEAEAEAE7E7E7E7E7E7E6E6E6E7E7E7C7C7
+        C7EAEAEAF0F0F0BABABAD7D7D7F7F7F7F7F7F7F5F5F5F3F3F3F7F7F7FCFCFCFD
+        FDFDFBFBFBFFFFFFFFFFFFFFFFFFF7F7F7E7E7E7E7E7E7D3D3D3E3E3E3F8F8F8
+        F8F8F8F9F9F9FBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFBFBFBFFFFFFFDFDFDEAEA
+        EAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E6E6E6D7D7D7B5B5B5D2D2D2F4
+        F4F4F4F4F4F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8FAFAFAFCFCFCFDFDFD
+        FDFDFDFEFEFEFDFDFDFBFBFBF9F9F9FDFDFDFBFBFBEDEDEDECECECE4E4E4DCDC
+        DCE1E1E1FFFFFFFFFFFFFFFFFFFCFCFCE7E7E7D1D1D1919191BABABAF1F1F1F8
+        F8F8FBFBFBF9F9F9E6E6E6E6E6E6E9E9E9E9E9E9EAEAEAEBEBEBEAEAEAEAEAEA
+        EBEBEBEAEAEAE9E9E9E7E7E7E6E6E6D6D6D6BABABAE4E4E4F5F5F5E7E7E7E4E4
+        E4D0D0D0A2A2A2B2B2B2CECECEE4E4E4F8F8F8F9F9F9FBFBFBFBFBFBE9E9E9E5
+        E5E5F7F7F7ECECECE9E9E9E9E9E9E4E4E4E4E4E4C9C9C9D5D5D5F5F5F5F9F9F9
+        F8F8F8F8F8F8F8F8F8F7F7F7F4F4F4F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9FAFA
+        FAFBFBFBFAFAFAF9F9F9FAFAFAFAFAFAFBFBFBF9F9F9F8F8F8F7F7F7F5F5F5FF
+        FFFFFBFBFBF0F0F0F8F8F8F9F9F9ECECECEAEAEAEAEAEADADADAC6C6C6BFBFBF
+        A8A8A8F9F9F9FFFFFFEEEEEEEDEDEDD4D4D4ACACACD5D5D5E7E7E7E8E8E8F0F0
+        F0EDEDEDE6E6E6E6E6E6E7E7E7E7E7E7E6E6E6D4D4D4B6B6B6C8C8C8E8E8E8F8
+        F8F8FAFAFAFDFDFDFCFCFCF9F9F9F9F9F9F7F7F7F5F5F5E6E6E6E6E6E6C1C1C1
+        CECECED3D3D3BBBBBB9E9E9EB2B2B2CACACAE0E0E0F4F4F4F5F5F5FFFFFFFFFF
+        FFE9E9E9EDEDEDDBDBDBF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAECECECECECECEBEBEB
+        E9E9E9EAEAEAD7D7D7C3C3C3AFAFAFCACACAEDEDEDF1F1F1F0F0F0EEEEEEEEEE
+        EEF2F2F2F6F6F6F8F8F8FAFAFAFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF5
+        F5F5F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7
+        F6F6F6F3F3F3F4F4F4F7F7F7F8F8F8F9F9F9F9F9F9F8F8F8F5F5F5F0F0F0FEFE
+        FEF9F9F9EDEDEDEBEBEBE8E8E8EDEDEDEDEDEDE9E9E9EDEDEDE9E9E9E4E4E4E4
+        E4E4E2E2E2E1E1E1E2E2E2E6E6E6E8E8E8E7E7E7E8E8E8EAEAEAEAEAEAE3E3E3
+        C3C3C3D7D7D7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF9F9F9E7E7E7C1C1
+        C1CECECEF4F4F4F5F5F5F1F1F1F0F0F0F1F1F1F3F3F3F8F8F8F8F8F8F9F9F9F9
+        F9F9FBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F6F6F6
+        F4F4F4F4F4F4F3F3F3F4F4F4FFFFFFF7F7F7E9E9E9E9E9E9E6E6E6E7E7E7CACA
+        CADEDEDEEDEDEDD9D9D9E7E7E7F9F9F9F9F9F9F6F6F6F5F5F5F9F9F9FCFCFCFC
+        FCFCFBFBFBFFFFFFFFFFFFFAFAFAEAEAEAEAEAEAE7E7E7D3D3D3CACACAE9E9E9
+        F7F7F7F8F8F8FAFAFAFAFAFAFCFCFCFCFCFCFBFBFBF9F9F9F9F9F9F9F9F9EAEA
+        EAE9E9E9E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7C6C6C6C3C3C3E4E4E4F4
+        F4F4F4F4F4F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FDFDFDFEFEFEFEFEFE
+        FEFEFEFFFFFFFEFEFEFCFCFCFCFCFCFFFFFFFCFCFCF9F9F9F9F9F9F1F1F1F4F4
+        F4FFFFFFFFFFFFFFFFFFF1F1F1ECECECE6E6E6B3B3B39D9D9DD7D7D7F9F9F9FC
+        FCFCFCFCFCFBFBFBFBFBFBFCFCFCFFFFFFFDFDFDEDEDEDECECECECECECEBEBEB
+        ECECECE9E9E9E7E7E7E6E6E6E4E4E4CACACACACACAFFFFFFFFFFFFDBDBDBC8C8
+        C8A9A9A9B4B4B4DFDFDFF8F8F8F9F9F9F9F9F9FBFBFBFEFEFEFDFDFDFAFAFAF9
+        F9F9FAFAFAF5F5F5D7D7D7C8C8C8C3C3C3C7C7C7BDBDBDD9D9D9F5F5F5F7F7F7
+        F7F7F7F7F7F7F8F8F8F8F8F8F4F4F4F5F5F5F8F8F8F8F8F8F9F9F9F9F9F9FBFB
+        FBFBFBFBF9F9F9FBFBFBFBFBFBF9F9F9F8F8F8F7F7F7F6F6F6F5F5F5F4F4F4FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECEAEAEAEDEDEDCFCFCFD8D8D8E9E9E9
+        ECECECFFFFFFFFFFFFECECECEAEAEABABABAB8B8B8E6E6E6F7F7F7F9F9F9FFFF
+        FFFBFBFBE3E3E3E5E5E5E7E7E7E7E7E7E4E4E4C6C6C6C6C6C6E7E7E7F7F7F7F7
+        F7F7FCFCFCFEFEFEF9F9F9F7F7F7F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7E6E6E6
+        E6E6E6E5E5E5D0D0D0CECECEE2E2E2F5F5F5F5F5F5F6F6F6F8F8F8FFFFFFFFFF
+        FFEEEEEEF0F0F0ECECECFBFBFBE9E9E9FFFFFFFFFFFFFFFFFFFBFBFBE9E9E9E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAECECECECECECECECECE9E9E9
+        E9E9E9EBEBEBC1C1C1BBBBBBD1D1D1E2E2E2F5F5F5F7F7F7F4F4F4F1F1F1F3F3
+        F3F4F4F4F8F8F8FBFBFBFEFEFEFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFF9F9F9F5
+        F5F5F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F4F4F4
+        F2F2F2F3F3F3F6F6F6F9F9F9F9F9F9F9F9F9FBFBFBF9F9F9F7F7F7F7F7F7FFFF
+        FFFFFFFFEEEEEEEAEAEAE8E8E8EBEBEBEBEBEBE9E9E9EDEDEDEAEAEAE5E5E5E4
+        E4E4E2E2E2E1E1E1E3E3E3E6E6E6E8E8E8E7E7E7E8E8E8E9E9E9E9E9E9D3D3D3
+        B2B2B2D4D4D4F4F4F4F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFE7E7E7D6D6D6AAAA
+        AACECECEF4F4F4F5F5F5F1F1F1F2F2F2F6F6F6F7F7F7F8F8F8F9F9F9FBFBFBFA
+        FAFAFBFBFBFAFAFAFAFAFAFAFAFAFBFBFBFEFEFEFDFDFDF9F9F9F7F7F7F5F5F5
+        F4F4F4F4F4F4F2F2F2F4F4F4FFFFFFF5F5F5E9E9E9E9E9E9E5E5E5E6E6E6CCCC
+        CCDBDBDBF7F7F7F5F5F5F5F5F5F6F6F6F3F3F3F3F3F3F4F4F4F7F7F7F9F9F9F9
+        F9F9FFFFFFFFFFFFFFFFFFEBEBEBEAEAEAEAEAEAD8D8D8BABABAC8C8C8E8E8E8
+        F6F6F6F8F8F8F8F8F8F9F9F9FBFBFBFBFBFBF9F9F9F9F9F9F9F9F9F9F9F9FFFF
+        FFFCFCFCE7E7E7E8E8E8EAEAEAE9E9E9E9E9E9E9E9E9C5C5C5D4D4D4F3F3F3F1
+        F1F1F3F3F3F7F7F7F9F9F9FBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFDFDFD
+        FDFDFDFDFDFDFCFCFCFBFBFBFBFBFBFCFCFCFAFAFAFAFAFAFAFAFAFBFBFBFFFF
+        FFFFFFFFFFFFFFF1F1F1EAEAEAEAEAEAE5E5E5ACACACBDBDBDF3F3F3FCFCFCFC
+        FCFCFCFCFCFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFEEEEEEEBEBEBEBEBEBEAEAEA
+        EAEAEAE8E8E8E7E7E7E6E6E6E6E6E6D9D9D9F3F3F3FFFFFFFFFFFFCBCBCBBEBE
+        BECACACAE1E1E1F8F8F8F9F9F9F9F9F9F9F9F9FCFCFCFEFEFEFBFBFBFAFAFAF9
+        F9F9F8F8F8F4F4F4E5E5E5D3D3D3CECECED2D2D2D9D9D9E8E8E8F5F5F5F7F7F7
+        F9F9F9F8F8F8F7F7F7F8F8F8F3F3F3F3F3F3F8F8F8FFFFFFFFFFFFFBFBFBFCFC
+        FCFAFAFAFAFAFAFBFBFBF9F9F9F9F9F9F9F9F9F6F6F6F5F5F5F4F4F4F4F4F4FF
+        FFFFFFFFFFF8F8F8FFFFFFFFFFFFEAEAEAEAEAEADEDEDEB7B7B7F9F9F9FDFDFD
+        FFFFFFFFFFFFFFFFFFE9E9E9E8E8E8B7B7B7C9C9C9F7F7F7F7F7F7F7F7F7FFFF
+        FFFDFDFDE6E6E6E6E6E6E7E7E7E6E6E6E6E6E6CACACAD7D7D7F5F5F5F7F7F7F7
+        F7F7F9F9F9F9F9F9F5F5F5F5F5F5F7F7F7F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F8F8F8FCFCFCFCFCFCFFFFFFFDFD
+        FDEDEDEDECECECEAEAEAE9E9E9D6D6D6FFFFFFFFFFFFD1D1D1D2D2D2E9E9E9E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEBEBEBEAEAEAEBEBEBEAEAEA
+        EAEAEAEBEBEBD5D5D5F7F7F7FFFFFFF9F9F9F7F7F7F7F7F7F5F5F5F3F3F3F7F7
+        F7F7F7F7F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEEEEEED9
+        D9D9E6E6E6F7F7F7F8F8F8F9F9F9FCFCFCFAFAFAF8F8F8F8F8F8F7F7F7F5F5F5
+        F5F5F5F5F5F5F9F9F9FBFBFBFBFBFBFDFDFDFCFCFCFAFAFAF8F8F8F7F7F7FDFD
+        FDFCFCFCECECECEAEAEAE8E8E8E9E9E9EBEBEBEBEBEBECECECEDEDEDE7E7E7E5
+        E5E5E4E4E4E3E3E3E6E6E6E7E7E7D5D5D5C0C0C0C6C6C6CBCBCBD7D7D7C5C5C5
+        C1C1C1E0E0E0F3F3F3F7F7F7FFFFFFFFFFFFFFFFFFFEFEFED6D6D6AFAFAFBABA
+        BAE1E1E1F5F5F5F5F5F5F1F1F1F3F3F3F7F7F7F7F7F7F8F8F8FBFBFBFAFAFAFA
+        FAFAFBFBFBF9F9F9F8F8F8F9F9F9FEFEFEFEFEFEF9F9F9F7F7F7F6F6F6F7F7F7
+        F5F5F5FFFFFFFFFFFFF7F7F7F1F1F1EEEEEEEAEAEAEBEBEBE6E6E6E7E7E7DBDB
+        DBE7E7E7F5F5F5F5F5F5F5F5F5F3F3F3F0F0F0F1F1F1F4F4F4F6F6F6F8F8F8F9
+        F9F9FFFFFFFFFFFFFCFCFCE9E9E9EAEAEADCDCDCBFBFBFC9C9C9E6E6E6F5F5F5
+        F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FFFF
+        FFFFFFFFE9E9E9EAEAEAEAEAEAEAEAEAE8E8E8D5D5D5ADADADD1D1D1F1F1F1F0
+        F0F0F4F4F4F8F8F8F9F9F9FCFCFCFEFEFEFFFFFFFEFEFEFDFDFDFCFCFCFBFBFB
+        FBFBFBFBFBFBF9F9F9F9F9F9FAFAFAFBFBFBFAFAFAFCFCFCFFFFFFFFFFFFFFFF
+        FFFFFFFFEEEEEEEAEAEAE8E8E8E8E8E8E4E4E4B1B1B1CACACAFBFBFBFDFDFDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEBEBEBEBEBEBEBEBEB
+        EAEAEAEAEAEAE9E9E9E9E9E9E8E8E8E7E7E7F9F9F9FFFFFFF8F8F8C6C6C6CDCD
+        CDEEEEEEF6F6F6F9F9F9F9F9F9F9F9F9FBFBFBFEFEFEFDFDFDFAFAFAFAFAFAF8
+        F8F8F7F7F7F7F7F7F7F7F7F4F4F4F2F2F2F4F4F4F5F5F5F6F6F6F5F5F5F6F6F6
+        FFFFFFFFFFFFFFFFFFF5F5F5F0F0F0F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFDFDFDFBFBFBFBFBFBF9F9F9F7F7F7F6F6F6F5F5F5F5F5F5FF
+        FFFFF8F8F8EAEAEAF7F7F7F7F7F7EAEAEAEBEBEBCCCCCCC3C3C3FFFFFFF8F8F8
+        FFFFFFFFFFFFE9E9E9E7E7E7E6E6E6CECECEE1E1E1F7F7F7F7F7F7F7F7F7FFFF
+        FFFFFFFFF9F9F9EAEAEAEAEAEAE9E9E9E8E8E8CCCCCCD7D7D7F5F5F5F7F7F7F7
+        F7F7F7F7F7F7F7F7F6F6F6F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F7F7F7FAFAFAFFFFFFFFFFFFF9F9F9FFFF
+        FFFAFAFAEBEBEBEAEAEAE9E9E9E7E7E7FBFBFBF7F7F7B6B6B6E4E4E4FDFDFDE8
+        E8E8D4D4D4D5D5D5E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEAEAEAE9E9E9
+        E9E9E9E9E9E9E7E7E7FCFCFCFFFFFFF9F9F9F9F9F9F9F9F9F5F5F5F6F6F6F9F9
+        F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF5F5F5F2F2F2DD
+        DDDDE8E8E8F9F9F9F9F9F9FBFBFBFEFEFEFDFDFDF8F8F8F8F8F8F8F8F8F8F8F8
+        F4F4F4F6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFEFEFEFAFAFAF8F8F8F8F8F8FEFE
+        FEFCFCFCF4F4F4EAEAEAE8E8E8E9E9E9ECECECECECECECECECEDEDEDE8E8E8E6
+        E6E6E5E5E5E4E4E4E7E7E7E5E5E5BDBDBDBABABAD4D4D4D6D6D6E4E4E4CCCCCC
+        D3D3D3F1F1F1F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFEDEDEDD6D6D6D1D1D1E2E2
+        E2F5F5F5F6F6F6F5F5F5F3F3F3F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8FAFAFAFDFDFDFFFFFFFFFFFFFCFCFCF8F8F8F7F7F7FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEBEBEBF3F3F3D5D5D5C0C0C0D4D4D4D9D9
+        D9CCCCCCE7E7E7F5F5F5F5F5F5F3F3F3F1F1F1F1F1F1F4F4F4F7F7F7F8F8F8FB
+        FBFBFFFFFFFFFFFFEAEAEAE9E9E9DCDCDCC0C0C0CACACAE4E4E4F3F3F3F6F6F6
+        F5F5F5F4F4F4F5F5F5F3F3F3F5F5F5F8F8F8F8F8F8F9F9F9F9F9F9FFFFFFFFFF
+        FFFFFFFFEBEBEBEBEBEBEBEBEBE9E9E9E4E4E4C1C1C1BFBFBFE1E1E1EFEFEFF0
+        F0F0F7F7F7F9F9F9FAFAFAFEFEFEFFFFFFFCFCFCFAFAFAF9F9F9F9F9F9F8F8F8
+        F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF9F9F9E9E9E9E7E7E7E7E7E7E6E6E6E1E1E1B2B2B2CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFEEEEEEEBEBEBEBEBEBEBEBEB
+        EBEBEBEAEAEAEAEAEAE9E9E9E8E8E8E9E9E9EDEDEDEDEDEDD9D9D9B1B1B1D0D0
+        D0F4F4F4F8F8F8F8F8F8F8F8F8F9F9F9FDFDFDFEFEFEFCFCFCFBFBFBF9F9F9F8
+        F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F6F6F6
+        FFFFFFFFFFFFECECECF4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF8F8F8F7F7F7F3F3F3F0F0F0F0F0F0FF
+        FFFFEAEAEAEAEAEAEBEBEBEAEAEAECECECEAEAEACACACAD5D5D5FFFFFFE6E6E6
+        D3D3D3E7E7E7E7E7E7E5E5E5E5E5E5E6E6E6CFCFCFDFDFDFF7F7F7F8F8F8FFFF
+        FFFFFFFFF9F9F9EBEBEBEBEBEBE9E9E9E8E8E8DADADAE3E3E3F4F4F4F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFEFEFEE7E7E7FFFF
+        FFFFFFFFEBEBEBEBEBEBE7E7E7E6E6E6E6E6E6D0D0D0A1A1A1E5E5E5ECECECBE
+        BEBEA7A7A7D1D1D1D5D5D5D5D5D5E9E9E9EAEAEAE9E9E9ECECECEAEAEAE7E7E7
+        E7E7E7E7E7E7E7E7E7EAEAEAECECECEAEAEAFFFFFFFFFFFFF7F7F7F6F6F6F8F8
+        F8FBFBFBFCFCFCFCFCFCFFFFFFFEFEFEFFFFFFFFFFFFFCFCFCF7F7F7EFEFEFDA
+        DADAC8C8C8E9E9E9FBFBFBFEFEFEFFFFFFFDFDFDF8F8F8F8F8F8F8F8F8F8F8F8
+        F2F2F2F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAFAFAFAFDFDFDFFFF
+        FFFBFBFBF5F5F5F3F3F3EAEAEAEAEAEAEBEBEBECECECEBEBEBEAEAEAE9E9E9EA
+        EAEAE7E7E7E6E6E6E7E7E7D3D3D3A7A7A7CCCCCCF4F4F4F6F6F6F3F3F3E4E4E4
+        E0E0E0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1EAEAEAE7E7E7E7E7E7F4F4
+        F4F5F5F5F6F6F6F5F5F5F5F5F5F3F3F3F5F5F5F7F7F7F7F7F7F7F7F7F9F9F9FC
+        FCFCFCFCFCFEFEFEFDFDFDFCFCFCFAFAFAF7F7F7F5F5F5F5F5F5FFFFFFFFFFFF
+        FFFFFFFFFFFFF8F8F8F8F8F8F4F4F4F0F0F0F2F2F2E8E8E8E9E9E9FFFFFFEAEA
+        EAD8D8D8E7E7E7F5F5F5F5F5F5F4F4F4F4F4F4F2F2F2F5F5F5F8F8F8F9F9F9FE
+        FEFEFFFFFFFFFFFFEAEAEADDDDDDC0C0C0CCCCCCE6E6E6F2F2F2F3F3F3F4F4F4
+        F4F4F4F3F3F3F2F2F2F3F3F3F7F7F7F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFF
+        FFFFFFFFEBEBEBEBEBEBEAEAEAE8E8E8D5D5D5B5B5B5D3D3D3F0F0F0F0F0F0F4
+        F4F4F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFCFCFCFBFBFBF8F8F8F7F7F7F7F7F7
+        F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE8E8
+        E8E7E7E7E7E7E7E7E7E7E7E7E7E3E3E3DEDEDEB7B7B7CFCFCFFBFBFBFCFCFCFB
+        FBFBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDEBEBEBDEDEDED0D0D0
+        D0D0D0D0D0D0CDCDCDCDCDCDDADADADADADACDCDCDCCCCCCB5B5B5C1C1C1E2E2
+        E2F7F7F7F9F9F9F8F8F8FAFAFAFCFCFCFFFFFFFEFEFEFBFBFBF9F9F9F8F8F8F7
+        F7F7F7F7F7F5F5F5F8F8F8F9F9F9F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFFFFFF
+        FFFFFFFFFFFFDEDEDEFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFF4F4F4FCFCFCFDFD
+        FDFAFAFAF7F7F7FFFFFFF9F9F9F6F6F6F8F8F8F7F7F7F5F5F5F8F8F8FBFBFBFF
+        FFFFEAEAEAEAEAEAECECECEBEBEBE9E9E9D9D9D9B7B7B7D4D4D4F3F3F3DFDFDF
+        D0D0D0F6F6F6F8F8F8E6E6E6E6E6E6E7E7E7D0D0D0E1E1E1F7F7F7F8F8F8FFFF
+        FFFFFFFFEBEBEBE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7D9D9D9E7E7E7F7F7F7F7
+        F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FAFAFAFFFFFFFFFFFFEDEDEDE6E6E6FFFF
+        FFFFFFFFEAEAEAEBEBEBE9E9E9E8E8E8D6D6D6ABABABBABABAE5E5E5E6E6E6D0
+        D0D0D1D1D1E5E5E5E4E4E4E5E5E5D5D5D5D5D5D5EAEAEAEDEDEDEAEAEAE7E7E7
+        E7E7E7E7E7E7E9E9E9EAEAEAE9E9E9E8E8E8F9F9F9EAEAEAE1E1E1F2F2F2F6F6
+        F6F8F8F8F8F8F8F8F8F8FCFCFCFCFCFCFFFFFFFFFFFFFBFBFBEFEFEFE9E9E9C3
+        C3C3BFBFBFE9E9E9FDFDFDFFFFFFFFFFFFFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8
+        F2F2F2F5F5F5FFFFFFFFFFFFFFFFFFFDFDFDFAFAFAFBFBFBFEFEFEFFFFFFFCFC
+        FCF6F6F6F4F4F4F4F4F4FFFFFFF6F6F6EBEBEBEDEDEDECECECEAEAEAEAEAEAEC
+        ECECEAEAEAE9E9E9E9E9E9D5D5D5CBCBCBE1E1E1FAFAFAFBFBFBF6F6F6F2F2F2
+        F0F0F0F4F4F4FFFFFFFFFFFFFCFCFCF1F1F1EEEEEEE8E8E8E7E7E7E7E7E7E7E7
+        E7F5F5F5F6F6F6F6F6F6F7F7F7F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7F9F9F9FB
+        FBFBF9F9F9F9F9F9F8F8F8F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFF
+        F8F8F8EAEAEAEAEAEAEAEAEAEAEAEAD2D2D2E2E2E2FDFDFDFFFFFFFFFFFFF8F8
+        F8DCDCDCE7E7E7F5F5F5F5F5F5F5F5F5F4F4F4F2F2F2F7F7F7F9F9F9F8F8F8FC
+        FCFCFFFFFFFFFFFFDDDDDDC0C0C0CCCCCCE7E7E7F3F3F3F3F3F3F1F1F1F2F2F2
+        F3F3F3F2F2F2F4F4F4F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFECECECEBEBEBEAEAEAE8E8E8E6E6E6C9C9C9C5C5C5E4E4E4F4F4F4F4F4F4F7
+        F7F7F9F9F9FAFAFAFDFDFDFFFFFFFCFCFCFBFBFBF8F8F8F5F5F5F5F5F5F7F7F7
+        F7F7F7F9F9F9FCFCFCFFFFFFFFFFFFFCFCFCE6E6E6E4E4E4D2D2D2BCBCBCBCBC
+        BCBCBCBCD2D2D2D2D2D2BABABACACACACDCDCDA7A7A7D0D0D0F7F7F7F8F8F8F9
+        F9F9FAFAFAFFFFFFFFFFFFFFFFFFFDFDFDEDEDEDDDDDDDCECECEBFBFBFCACACA
+        D5D5D5D2D2D2D1D1D1D1D1D1DEDEDEC8C8C8C6C6C6D4D4D4D2D2D2E4E4E4F6F6
+        F6F8F8F8F9F9F9F9F9F9FBFBFBFEFEFEFFFFFFFEFEFEFBFBFBF9F9F9F9F9F9F8
+        F8F8F6F6F6F5F5F5F6F6F6F4F4F4F3F3F3F4F4F4F4F4F4F7F7F7FFFFFFFFFFFF
+        FFFFFFF9F9F9ECECECFAFAFAFCFCFCF0F0F0FFFFFFFFFFFFFDFDFDFEFEFEF5F5
+        F5EDEDEDEAEAEAE6E6E6E4E4E4E4E4E4F4F4F4F8F8F8F9F9F9FDFDFDFFFFFFFF
+        FFFFEEEEEEEFEFEFEEEEEEEDEDEDEAEAEAC9C9C9C5C5C5E2E2E2F0F0F0F0F0F0
+        F3F3F3FFFFFFFFFFFFE7E7E7E7E7E7E7E7E7E7E7E7D0D0D0E2E2E2FFFFFFFFFF
+        FFFFFFFFF1F1F1ECECECE9E9E9E9E9E9E7E7E7E6E6E6DCDCDCF5F5F5FFFFFFF7
+        F7F7FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAEDEDEDEDEDEDECECECF7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFEBEBEBE9E9E9FFFF
+        FFFFFFFFECECECECECECEBEBEBEBEBEBC8C8C8C1C1C1E7E7E7FBFBFBFBFBFBFA
+        FAFAF9F9F9F7F7F7F8F8F8F8F8F8E4E4E4F8F8F8FDFDFDEDEDEDEAEAEAE7E7E7
+        E7E7E7E7E7E7E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7D4D4D4DFDFDFF1F1F1F6F6
+        F6F8F8F8F8F8F8F8F8F8FAFAFAF9F9F9FFFFFFFFFFFFF2F2F2E9E9E9E6E6E6C0
+        C0C0D1D1D1F8F8F8FEFEFEFFFFFFFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8F5F5F5
+        F0F0F0F7F7F7FFFFFFFFFFFFFCFCFCF9F9F9F8F8F8FBFBFBFEFEFEFCFCFCF7F7
+        F7F4F4F4F4F4F4F4F4F4FEFEFEF7F7F7EBEBEBEDEDEDECECECEAEAEAEAEAEAEC
+        ECECEBEBEBE8E8E8E8E8E8D3D3D3BABABAE2E2E2FCFCFCFAFAFAFAFAFAF8F8F8
+        F5F5F5F8F8F8F8F8F8F7F7F7EAEAEAEDEDEDEAEAEAE7E7E7E8E8E8E7E7E7E6E6
+        E6D8D8D8E6E6E6F5F5F5F6F6F6F5F5F5F3F3F3F5F5F5F7F7F7F7F7F7F7F7F7F7
+        F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFF
+        F9F9F9EAEAEAEAEAEAEAEAEAE9E9E9D5D5D5FBFBFBFFFFFFFFFFFFFFFFFFEAEA
+        EADDDDDDF5F5F5FFFFFFF5F5F5F5F5F5F4F4F4F4F4F4F7F7F7F7F7F7F6F6F6F9
+        F9F9FFFFFFEDEDEDC0C0C0CCCCCCE7E7E7F4F4F4F4F4F4F4F4F4F1F1F1F3F3F3
+        F4F4F4F3F3F3F5F5F5FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDE9E9
+        E9E9E9E9E6E6E6E6E6E6E6E6E6D7D7D7BDBDBDD7D7D7F4F4F4F8F8F8F5F5F5F7
+        F7F7FAFAFAFEFEFEFFFFFFFFFFFFFDFDFDFBFBFBF5F5F5F4F4F4F5F5F5F7F7F7
+        F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFE6E6E6CFCFCFB7B7B7A1A1A1B2B2B2C8C8
+        C8C8C8C8DCDCDCB7B7B7AFAFAFDCDCDCBDBDBDBCBCBCE4E4E4FCFCFCFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFEBEBEBEBEBEBEBEBEBCFCFCFCBCBCBD9D9D9E3E3E3
+        EAEAEAEDEDEDF0F0F0F0F0F0F0F0F0E6E6E6E6E6E6F2F2F2F2F2F2F5F5F5F7F7
+        F7F6F6F6F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8F6
+        F6F6F3F3F3F1F1F1F3F3F3F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6FFFFFFFFFFFF
+        EDEDEDECECECECECECEDEDEDEDEDEDEEEEEEF4F4F4F8F8F8F8F8F8F3F3F3ECEC
+        ECE8E8E8E8E8E8E4E4E4E4E4E4DEDEDED3D3D3E6E6E6F4F4F4F5F5F5F5F5F5FF
+        FFFFEDEDEDEDEDEDECECECECECECEAEAEADADADAE4E4E4EEEEEEF1F1F1F3F3F3
+        F2F2F2FFFFFFF8F8F8E9E9E9E7E7E7E7E7E7E7E7E7B2B2B2DFDFDFFFFFFFFFFF
+        FFFFFFFFEDEDEDE8E8E8E7E7E7E9E9E9E7E7E7E7E7E7E9E9E9F8F8F8EDEDEDEB
+        EBEBFFFFFFFFFFFFFFFFFFFBFBFBEDEDEDEDEDEDECECECEBEBEBEDEDEDF8F8F8
+        F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFAFAFAECECECEAEAEAF9F9
+        F9F8F8F8ECECECECECECEAEAEAD9D9D9B5B5B5D4D4D4F6F6F6F9F9F9F9F9F9F9
+        F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFEFEFEFEBEBEBE7E7E7
+        E7E7E7E7E7E7E9E9E9E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6D3D3D3DFDFDFF3F3
+        F3F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFECECECE7E7E7E7E7E7BC
+        BCBCCECECEF8F8F8FAFAFAFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F3F3F3
+        F3F3F3F9F9F9FFFFFFFCFCFCF8F8F8F7F7F7F7F7F7FBFBFBFCFCFCF8F8F8F5F5
+        F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4DEDEDEDFDFDFECECECEAEAEAEAEAEAEC
+        ECECEAEAEAE8E8E8E8E8E8BFBFBFB6B6B6E5E5E5FCFCFCFDFDFDFDFDFDF9F9F9
+        F7F7F7F9F9F9F8F8F8FFFFFFFFFFFFFDFDFDF0F0F0ECECECEAEAEAE9E9E9E7E7
+        E7D5D5D5E2E2E2F4F4F4F4F4F4F3F3F3F3F3F3F5F5F5F7F7F7F7F7F7F7F7F7F6
+        F6F6F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFCFCFC
+        EDEDEDEBEBEBEBEBEBEBEBEBEBEBEBECECECFFFFFFFFFFFFFFFFFFFAFAFAE6E6
+        E6E8E8E8F7F7F7F8F8F8F7F7F7F8F8F8F7F7F7F6F6F6F5F5F5F4F4F4F6F6F6F8
+        F8F8F8F8F8ECECECD9D9D9E6E6E6F4F4F4F4F4F4F4F4F4F4F4F4F1F1F1F4F4F4
+        F5F5F5F5F5F5FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBE9E9E9E9E9E9E9E9
+        E9E9E9E9E2E2E2E1E1E1D3D3D3B5B5B5CACACAE8E8E8F6F6F6FFFFFFFFFFFFF7
+        F7F7FBFBFBFFFFFFFFFFFFFEFEFEF9F9F9F7F7F7F4F4F4F3F3F3F4F4F4F7F7F7
+        F8F8F8FFFFFFFFFFFFFFFFFFFBFBFBE1E1E1B6B6B6B4B4B4CACACADEDEDEF3F3
+        F3F3F3F3F3F3F3E0E0E0DFDFDFF4F4F4E4E4E4E4E4E4F7F7F7FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFCFCFCDCDCDCCCCCCCDCDCDCCFCFCFD9D9D9F2F2F2ECECEC
+        EEEEEEF5F5F5F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F9F9F9F8F8
+        F8F5F5F5F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFEEEEEEE7E7E7F4F4F4F4F4F4F2
+        F2F2F1F1F1F2F2F2F5F5F5F8F8F8F9F9F9F8F8F8F8F8F8F7F7F7FFFFFFFFFFFF
+        EDEDEDEBEBEBEBEBEBECECECEDEDEDEDEDEDF2F2F2F0F0F0EEEEEEECECECE8E8
+        E8E6E6E6E4E4E4E1E1E1E1E1E1CECECEB1B1B1D7D7D7F5F5F5F5F5F5F5F5F5FF
+        FFFFEAEAEAE7E7E7E4E4E4E4E4E4D1D1D1BEBEBEBFBFBFE1E1E1F4F4F4F4F4F4
+        F0F0F0EDEDEDF1F1F1E5E5E5CBCBCBB4B4B4B2B2B28C8C8CE1E1E1FFFFFFFFFF
+        FFE7E7E7E6E6E6E4E4E4E6E6E6E9E9E9E7E7E7E6E6E6E9E9E9EBEBEBCFCFCFD3
+        D3D3FDFDFDFCFCFCEEEEEEEDEDEDEDEDEDECECECECECECEDEDEDEEEEEEEDEDED
+        F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF8F8F8EBEBEBEAEAEAEAEAEAE9E9
+        E9E9E9E9EBEBEBEAEAEAE8E8E8C8C8C8C3C3C3E5E5E5F6F6F6F7F7F7F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFF0F0F0EBEBEBE9E9E9
+        E7E7E7E7E7E7E7E7E7E8E8E8E7E7E7E6E6E6E6E6E6E4E4E40000FFC9C9C9EFEF
+        EFF6F6F6F8F8F8F8F8F8F6F6F6F7F7F7FFFFFFFFFFFFEAEAEAE7E7E7E7E7E7D0
+        D0D0E2E2E2F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5F3F3F3F1F1F1
+        F5F5F5FCFCFCFEFEFEFBFBFBF8F8F8F8F8F8F8F8F8FCFCFCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF3F3F3F2F2F2F2F2F2E2E2E2E1E1E1E9E9E9EBEBEBEAEAEAEB
+        EBEBE9E9E9E8E8E8D8D8D8AEAEAECECECEF8F8F8FFFFFFFEFEFEFDFDFDFBFBFB
+        F8F8F8F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFF2F2F2ECECECEAEAEAE8E8E8E7E7
+        E7E4E4E4E5E5E5FFFFFFFFFFFFF4F4F4F5F5F5F5F5F5F4F4F4F6F6F6F4F4F4F4
+        F4F4F6F6F6F6F6F6F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F4F4F4F5F5F5FFFFFF
+        FCFCFCECECECEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E7E7E7E7E7E7E6E6E6E5E5
+        E5E7E7E7EAEAEAEAEAEAECECECF7F7F7F6F6F6F4F4F4F3F3F3F1F1F1F1F1F1F5
+        F5F5F9F9F9F8F8F8F5F5F5F4F4F4F3F3F3F3F3F3F4F4F4F4F4F4FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE9E9E9EAEAEAECECECECEC
+        ECEAEAEAE1E1E1D0D0D0B3B3B3C6C6C6EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFF9
+        F9F9FDFDFDFFFFFFFCFCFCF7F7F7F4F4F4F4F4F4F3F3F3F2F2F2F5F5F5F7F7F7
+        F7F7F7FFFFFFFFFFFFFBFBFBE4E4E4DEDEDEB7B7B7CCCCCCF1F1F1F4F4F4F7F7
+        F7F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFF7
+        F7F7EBEBEBEBEBEBEBEBEBCCCCCCC8C8C8F6F6F6EEEEEEE9E9E9F1F1F1F1F1F1
+        F5F5F5F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9FCFCFCFCFCFCFCFCFCF9F9
+        F9FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E8E8E8F6F6F6F5F5F5F5
+        F5F5F3F3F3F4F4F4F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBF8F8F8FFFFFFFFFFFF
+        EDEDEDEBEBEBEBEBEBECECECEDEDEDEFEFEFF1F1F1EDEDEDEAEAEAEAEAEAE6E6
+        E6E1E1E1E1E1E1E1E1E1D3D3D3ACACACBFBFBFE9E9E9F9F9F9F9F9F9F9F9F9FF
+        FFFFC7C7C7C5C5C5BFBFBFC0C0C0AAAAAABABABAD1D1D1E5E5E5F4F4F4F0F0F0
+        EBEBEBEEEEEEF3F3F3F5F5F5B3B3B3B0B0B0C3C3C3C1C1C1FCFCFCFFFFFFFDFD
+        FDE5E5E5E3E3E3E1E1E1E4E4E4E6E6E6E6E6E6E6E6E6E8E8E8EBEBEBD8D8D8DE
+        DEDEF0F0F0F8F8F8EDEDEDEDEDEDECECECEAEAEAEBEBEBEDEDEDEDEDEDECECEC
+        DEDEDEEAEAEAF7F7F7FFFFFFFFFFFFFFFFFFECECECECECECEDEDEDECECECE7E7
+        E7E9E9E9EBEBEBE9E9E9D9D9D9BABABAD7D7D7F6F6F6F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAF9F9F9FFFFFFFFFFFFE8E8E8E7E7E7
+        E6E6E6E7E7E7E7E7E7E9E9E9E7E7E7E4E4E4E5E5E5E5E5E50000FF0000FFEEEE
+        EEF6F6F6F8F8F8F5F5F5F5F5F5F7F7F7FFFFFFFFFFFFE8E8E8E8E8E8E6E6E6E3
+        E3E3E6E6E6F8F8F8F7F7F7F7F7F7F5F5F5F3F3F3F3F3F3F1F1F1F3F3F3F5F5F5
+        F8F8F8FDFDFDFDFDFDF9F9F9F8F8F8F8F8F8F9F9F9FEFEFEFFFFFFFFFFFFF7F7
+        F7FFFFFFF7F7F7DFDFDFEEEEEEF0F0F0EAEAEAECECECF4F4F4DADADAC8C8C8C8
+        C8C8C6C6C6C4C4C4B3B3B3BDBDBDE2E2E2FBFBFBFEFEFEFEFEFEFEFEFEFCFCFC
+        FAFAFAFBFBFBFFFFFFFFFFFFFFFFFFF4F4F4EDEDEDE9E9E9E9E9E9E8E8E8E7E7
+        E7E5E5E5E6E6E6F6F6F6F7F7F7F4F4F4F3F3F3EDEDEDEEEEEEF3F3F3F3F3F3F4
+        F4F4F4F4F4F3F3F3EFEFEFEEEEEEEDEDEDECECECEEEEEEF4F4F4F5F5F5FFFFFF
+        FFFFFFEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E9E9E9EAEAEAE9E9E9E7E7
+        E7E9E9E9EAEAEAEAEAEAE9E9E9DDDDDDE8E8E8F0F0F0EEEEEEEEEEEEF1F1F1F5
+        F5F5F9F9F9F8F8F8F7F7F7F9F9F9F6F6F6F5F5F5F5F5F5FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEBEBEBE9E9E9E9E9E9EAEAEAECECECEAEA
+        EAE6E6E6CFCFCFADADADC2C2C2E9E9E9FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDD9
+        D9D9EAEAEAFFFFFFFBFBFBF6F6F6F5F5F5F4F4F4F4F4F4F4F4F4F7F7F7F7F7F7
+        F7F7F7FFFFFFFFFFFFE7E7E7E2E2E2DEDEDEBEBEBED1D1D1F4F4F4F5F5F5F7F7
+        F7F7F7F7F5F5F5F1F1F1EFEFEFF1F1F1F4F4F4F7F7F7F6F6F6F7F7F7F5F5F5D7
+        D7D7C5C5C5C5C5C5C5C5C5B6B6B6E9E9E9FFFFFFFFFFFFF1F1F1F7F7F7F3F3F3
+        F5F5F5F7F7F7F5F5F5F7F7F7F8F8F8F8F8F8F9F9F9FCFCFCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7F7F8F8F8F7F7F7F4
+        F4F4F3F3F3F5F5F5F9F9F9F9F9F9F9F9F9FCFCFCFDFDFDF9F9F9FFFFFFFFFFFF
+        ECECECEBEBEBEBEBEBEDEDEDEDEDEDEFEFEFEEEEEEEBEBEBE9E9E9E9E9E9E3E3
+        E3DFDFDFE2E2E2E6E6E6C2C2C2BABABAE2E2E2F8F8F8F9F9F9F9F9F9F9F9F9FF
+        FFFFD5D5D5D3D3D3D1D1D1D2D2D2D3D3D3E5E5E5F7F7F7F7F7F7F4F4F4EEEEEE
+        EFEFEFF7F7F7FCFCFCFBFBFBE4E4E4E4E4E4F6F6F6FAFAFAFFFFFFFFFFFFFDFD
+        FDE3E3E3DFDFDFE1E1E1E5E5E5E4E4E4E4E4E4E6E6E6E9E9E9EBEBEBD6D6D6C8
+        C8C8E7E7E7F7F7F7F7F7F7ECECECECECECEBEBEBF0F0F0F2F2F2F0F0F0F0F0F0
+        DFDFDFF4F4F4FFFFFFFFFFFFFFFFFFFEFEFEECECECEDEDEDEEEEEEECECECE8E8
+        E8E8E8E8EAEAEAEAEAEACCCCCCC8C8C8E7E7E7F7F7F7F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8FFFFFFFFFFFFE7E7E7E6E6E6
+        E6E6E6E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E40000FF0000FFF0F0
+        F0F5F5F5F6F6F6F6F6F6F7F7F7FFFFFFFFFFFFFFFFFFE8E8E8E8E8E8E4E4E4E4
+        E4E4E8E8E8D5D5D5E1E1E1F3F3F3F0F0F0F2F2F2F5F5F5F5F5F5F8F8F8F9F9F9
+        FBFBFBFFFFFFFDFDFDF8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFEAEA
+        EAFBFBFBD6D6D6CCCCCCF0F0F0F0F0F0EAEAEAF0F0F0F7F7F7E7E7E7D5D5D5D5
+        D5D5D3D3D3D3D3D3D5D5D5E1E1E1F3F3F3FAFAFAFCFCFCFEFEFEFEFEFEFCFCFC
+        FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEE9E9E9E7E7E7E9E9E9E8E8E8E6E6
+        E6E4E4E4E6E6E6E8E8E8EAEAEADCDCDCE2E2E2EAEAEAEEEEEEF3F3F3F4F4F4F2
+        F2F2F4F4F4F5F5F5F5F5F5F5F5F5F4F4F4F2F2F2F4F4F4F6F6F6F7F7F7FFFFFF
+        FFFFFFECECECE9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E9E9E9EAEAEAE8E8E8E8E8
+        E8EAEAEAEAEAEAEAEAEAE9E9E9CFCFCFD7D7D7E9E9E9ECECECF0F0F0F4F4F4F8
+        F8F8FAFAFAF8F8F8F9F9F9FDFDFDFBFBFBF8F8F8FFFFFFFFFFFFFFFFFFF8F8F8
+        E9E9E9E8E8E8E8E8E8E9E9E9EAEAEAE9E9E9E8E8E8E9E9E9E9E9E9EAEAEAE4E4
+        E4E1E1E1BCBCBCB7B7B7E4E4E4F8F8F8FFFFFFFFFFFFFFFFFFEEEEEEEAEAEAC6
+        C6C6D9D9D9FFFFFFFBFBFBF7F7F7F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F9F9F9
+        FFFFFFFFFFFFFFFFFFE9E9E9E3E3E3E2E2E2C6C6C6D7D7D7F5F5F5F5F5F5F7F7
+        F7F3F3F3F0F0F0EEEEEEF1F1F1F5F5F5F8F8F8F7F7F7F7F7F7F8F8F8FFFFFFFF
+        FFFFE9E9E9D8D8D8E8E8E8FDFDFDFFFFFFFFFFFFFFFFFFF2F2F2ECECECFFFFFF
+        FFFFFFF7F7F7F7F7F7F8F8F8F9F9F9F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFCFCFCEEEEEEEDEDEDEEEEEEEDEDEDF6F6F6F5F5F5F3
+        F3F3F3F3F3F7F7F7F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBF9F9F9FFFFFFFFFFFF
+        F9F9F9EDEDEDECECECEDEDEDEEEEEEEFEFEFECECECE9E9E9E9E9E9E7E7E7E2E2
+        E2D6D6D6CACACAC6C6C6ACACACCECECEF4F4F4F9F9F9F9F9F9F9F9F9F9F9F9FF
+        FFFFF4F4F4F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F2F2F2
+        F7F7F7FBFBFBFCFCFCFBFBFBFAFAFAFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFE7E7
+        E7E5E5E5E4E4E4E5E5E5E6E6E6E4E4E4E5E5E5E8E8E8E8E8E8EAEAEAC7C7C7C6
+        C6C6E9E9E9F7F7F7F8F8F8FFFFFFFCFCFCEEEEEEF4F4F4F2F2F2EFEFEFEDEDED
+        EAEAEAF5F5F5FFFFFFFFFFFFFFFFFFEFEFEFECECECECECECECECECEAEAEAE7E7
+        E7E7E7E7E9E9E9EAEAEAC9C9C9D5D5D5F5F5F5F7F7F7F7F7F7F8F8F8F6F6F6F7
+        F7F7F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9FFFFFFFDFDFDE7E7E7E6E6E6
+        E7E7E7E7E7E7E6E6E6E7E7E7E7E7E7E6E6E6E4E4E4D1D1D10000FF0000FF0000
+        FFF6F6F6F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE8E8E8E4E4E4E6
+        E6E6E9E9E9D5D5D5E2E2E2F4F4F4F4F4F4F8F8F8FBFBFBF9F9F9F9F9F9FBFBFB
+        FFFFFFFFFFFFFCFCFCF9F9F9F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFF8F8F8EAEA
+        EAEAEAEAC3C3C3CDCDCDF2F2F2FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFF6F6F6F5
+        F5F5F4F4F4F5F5F5F7F7F7F4F4F4F7F7F7FBFBFBFBFBFBFDFDFDFEFEFEFFFFFF
+        FFFFFFFFFFFFFFFFFFFCFCFCEAEAEAE9E9E9E7E7E7E7E7E7E9E9E9E7E7E7E5E5
+        E5E4E4E4E6E6E6E9E9E9E8E8E8CCCCCCD1D1D1EAEAEAEEEEEEF4F4F4F4F4F4F4
+        F4F4F7F7F7FAFAFAFBFBFBF9F9F9F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFFFFFF
+        FFFFFFECECECE9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E9E9E9EAEAEAE8E8E8E9E9
+        E9EAEAEAEAEAEAE9E9E9E8E8E8CACACAD0D0D0E9E9E9EFEFEFF4F4F4F7F7F7FB
+        FBFBFCFCFCFCFCFCFCFCFCFDFDFDF9F9F9F6F6F6FFFFFFFFFFFFF9F9F9E8E8E8
+        E6E6E6E6E6E6E7E7E7E9E9E9EAEAEAE9E9E9E9E9E9E8E8E8E6E6E6E7E7E7E5E5
+        E5CECECEA3A3A3CCCCCCF5F5F5F9F9F9FCFCFCFDFDFDEFEFEFEAEAEAD7D7D7B3
+        B3B3D8D8D8FBFBFBF9F9F9F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7FBFBFB
+        FFFFFFFFFFFFFBFBFBEAEAEAE7E7E7E7E7E7D9D9D9E4E4E4F4F4F4F5F5F5F7F7
+        F7F4F4F4F3F3F3F4F4F4F8F8F8FAFAFAFAFAFAF9F9F9FBFBFBF9F9F9FFFFFFFF
+        FFFFFFFFFFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDECECECE8E8E8E5E5E5
+        D1D1D1E2E2E2F6F6F6F9F9F9FAFAFAF9F9F9FCFCFCFFFFFFFFFFFFFBFBFBECEC
+        ECEAEAEAEAEAEAECECECEDEDEDEEEEEEEEEEEEEEEEEEEBEBEBDEDEDEE8E8E8F4
+        F4F4F5F5F5F7F7F7F7F7F7F8F8F8F9F9F9FBFBFBFEFEFEFCFCFCFFFFFFFFFFFF
+        F8F8F8EBEBEBEAEAEAEDEDEDEDEDEDEDEDEDEBEBEBE9E9E9E7E7E7D7D7D7C6C6
+        C6B8B8B8C1C1C1CDCDCDD0D0D0E4E4E4F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9FF
+        FFFFF4F4F4F6F6F6F5F5F5F4F4F4F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7
+        F8F8F8FDFDFDFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7
+        E7E7E7E7E7E7E7E6E6E6E4E4E4E2E2E2E6E6E6E8E8E8E7E7E7E9E9E9C8C8C8D7
+        D7D7F7F7F7FAFAFAFBFBFBFFFFFFFFFFFFEEEEEEF1F1F1EDEDEDE9E9E9E7E7E7
+        E7E7E7E6E6E6EAEAEAF0F0F0F0F0F0EDEDEDEBEBEBEBEBEBEBEBEBE9E9E9E6E6
+        E6E5E5E5E7E7E7E7E7E7C8C8C8D8D8D8F7F7F7F7F7F7F8F8F8F9F9F9F7F7F7F8
+        F8F8F9F9F9F8F8F8F9F9F9FAFAFAFBFBFBFAFAFAFAFAFAFFFFFFFBFBFBE6E6E6
+        E4E4E4D3D3D3C2C2C2C3C3C3BCBCBCBDBDBDC1C1C1AFAFAF0000FF0000FF0000
+        FF0000FFF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEECECECE8E8E8E6E6E6E7
+        E7E7E9E9E9E9E9E9E9E9E9F5F5F5F8F8F8FCFCFCFBFBFBF9F9F9FBFBFBFFFFFF
+        FFFFFFFDFDFDFAFAFAF8F8F8F8F8F8FBFBFBFCFCFCFCFCFCFCFCFCDADADADADA
+        DAEAEAEAD4D4D4DFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5F5
+        F5F5F7F7F7F7F7F7F8F8F8F7F7F7F9F9F9FCFCFCFDFDFDFEFEFEFEFEFEFFFFFF
+        FFFFFFFFFFFFFCFCFCE7E7E7E3E3E3E4E4E4E7E7E7E7E7E7E8E8E8E7E7E7E4E4
+        E4E4E4E4E6E6E6E7E7E7E5E5E5CBCBCBD1D1D1ECECECF0F0F0F5F5F5F5F5F5F5
+        F5F5F9F9F9FBFBFBF9F9F9F8F8F8F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFF
+        FFFFFFE9E9E9E7E7E7E7E7E7E7E7E7E8E8E8E7E7E7E9E9E9EAEAEAE8E8E8E9E9
+        E9EAEAEAE8E8E8E8E8E8D9D9D9B7B7B7D3D3D3F0F0F0F3F3F3F5F5F5F7F7F7F8
+        F8F8FBFBFBFBFBFBFBFBFBFAFAFAF7F7F7F7F7F7FFFFFFFFFFFFFBFBFBE8E8E8
+        E6E6E6E6E6E6E9E9E9EAEAEAEAEAEAE9E9E9E8E8E8E7E7E7E7E7E7E7E7E7E5E5
+        E5BCBCBCBABABAE5E5E5FAFAFAFCFCFCFDFDFDFBFBFBFFFFFFFBFBFBC6C6C6C1
+        C1C1E5E5E5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7FDFDFD
+        FFFFFFFFFFFFE8E8E8E9E9E9E8E8E8E9E9E9E7E7E7E9E9E9F2F2F2F4F4F4F7F7
+        F7F7F7F7FFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFDFDFDFFFFFFFBFBFBFFFFFFFF
+        FFFFEDEDEDEDEDEDFFFFFFFFFFFFF0F0F0ECECECEAEAEAEAEAEAE4E4E4D0D0D0
+        C8C8C8DFDFDFF7F7F7F8F8F8F8F8F8F9F9F9F9F9F9FDFDFDFFFFFFF9F9F9EBEB
+        EBE9E9E9E9E9E9EAEAEAEBEBEBECECECECECECEDEDEDEDEDEDE1E1E1EAEAEAF3
+        F3F3F1F1F1F3F3F3F6F6F6F8F8F8F9F9F9FDFDFDFEFEFEFCFCFCFFFFFFFCFCFC
+        F4F4F4E1E1E1D7D7D7E1E1E1ECECECECECECEAEAEAE8E8E8E4E4E4C7C7C7BFBF
+        BFD2D2D2E1E1E1EEEEEEF3F3F3F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FF
+        FFFFF4F4F4F6F6F6F5F5F5F5F5F5F7F7F7F5F5F5F5F5F5F6F6F6F7F7F7FFFFFF
+        FFFFFFFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFCFCFCFCFCFCFFFFFFFFFFFFE9E9
+        E9E6E6E6E4E4E4E3E3E3E2E2E2E4E4E4E8E8E8E7E7E7E7E7E7EAEAEACACACAD8
+        D8D8F8F8F8FBFBFBFBFBFBFFFFFFFFFFFFEEEEEEF0F0F0ECECECE8E8E8E7E7E7
+        E6E6E6E3E3E3E5E5E5EBEBEBECECECE9E9E9D9D9D9C8C8C8C8C8C8C8C8C8C5C5
+        C5CACACACECECECFCFCFC1C1C1E0E0E0FCFCFCFFFFFFFFFFFFF7F7F7F7F7F7F8
+        F8F8FAFAFAFAFAFAFBFBFBFAFAFAF9F9F9F9F9F9FAFAFAFFFFFFFFFFFFDFDFDF
+        CECECEA8A8A8B5B5B5CCCCCCC6C6C6CFCFCFD1D1D1CACACA0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEFEFEFECECECE8E8E8E8E8E8E6
+        E6E6E8E8E8E8E8E8D1D1D1B8B8B8E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FDFDFDF9F9F9F8F8F8F8F8F8F9F9F9FBFBFBFBFBFBFCFCFCFDFDFDE9E9E9E6E6
+        E6E7E7E7E3E3E3E4E4E4FFFFFFFFFFFFF8F8F8FDFDFDFFFFFFEDEDEDD9D9D9E8
+        E8E8F8F8F8F8F8F8F9F9F9F8F8F8F8F8F8F9F9F9FAFAFAFBFBFBFDFDFDFFFFFF
+        FFFFFFDADADAC6C6C6C0C0C0C1C1C1D7D7D7E7E7E7E7E7E7E7E7E7E4E4E4E1E1
+        E1E3E3E3E7E7E7E9E9E9E6E6E6C8C8C8CECECEECECECF3F3F3F5F5F5F4F4F4F5
+        F5F5F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFE9E9E9E9E9E9E9E9E9E9E9E9EBEBEBEBEBEBEBEBEBEAEAEAE9E9E9E9E9
+        E9E9E9E9E9E9E9E9E9E9CACACAC4C4C4E3E3E3F3F3F3F5F5F5F8F8F8F7F7F7F9
+        F9F9FBFBFBF8F8F8F7F7F7F8F8F8F6F6F6F5F5F5FFFFFFFFFFFFF9F9F9E8E8E8
+        E6E6E6E2E2E2E7E7E7EAEAEAE9E9E9E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8D5D5
+        D5A9A9A9CECECEF7F7F7F9F9F9FCFCFCFBFBFBF9F9F9FFFFFFEFEFEFB6B6B6D5
+        D5D5F6F6F6F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FBFBFBFFFFFF
+        FFFFFFFFFFFFEAEAEAEAEAEAE8E8E8EAEAEAE9E9E9E9E9E9EAEAEAFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFEDEDEDEDEDEDFDFDFDFFFFFFEDEDEDE9E9E9E9E9E9E7E7E7E2E2E2E2E2E2
+        CDCDCDDFDFDFF8F8F8F8F8F8F9F9F9F8F8F8F8F8F8FCFCFCFFFFFFFFFFFFEBEB
+        EBE9E9E9E9E9E9EAEAEAEAEAEAEAEAEAECECECEDEDEDEDEDEDEDEDEDEBEBEBF1
+        F1F1ECECECF1F1F1F7F7F7FBFBFBFDFDFDFFFFFFFEFEFEFEFEFEFFFFFFFAFAFA
+        F5F5F5EAEAEADFDFDFE9E9E9EAEAEAECECECE9E9E9D9D9D9C6C6C6B4B4B4D3D3
+        D3F3F3F3F6F6F6F5F5F5F6F6F6F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FF
+        FFFFF7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F5F5F5F7F7F7FFFFFFFFFFFF
+        FFFFFFF9F9F9FBFBFBFAFAFAF9F9F9FAFAFAFBFBFBFCFCFCFFFFFFFAFAFAEAEA
+        EAE9E9E9E7E7E7E6E6E6E6E6E6E8E8E8E8E8E8E7E7E7E7E7E7E9E9E9C9C9C9D7
+        D7D7F7F7F7F8F8F8F8F8F8FFFFFFECECECDFDFDFEDEDEDE9E9E9E6E6E6E6E6E6
+        E4E4E4E0E0E0E2E2E2E9E9E9E9E9E9D5D5D5AFAFAFC0C0C0D3D3D3D5D5D5D6D6
+        D6DFDFDFDFDFDFE2E2E2E0E0E0FCFCFCFFFFFFFFFFFFFCFCFCE4E4E4F7F7F7F8
+        F8F8F8F8F8F9F9F9FBFBFBFBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFD1D1D1
+        B0B0B0B8B8B8DCDCDCF1F1F1EFEFEFF5F5F5F5F5F50000FF0000FF0000FF0000
+        FF0000FF0000FFFFFFFFFFFFFFEDEDEDECECECEEEEEEE9E9E9E4E4E4E4E4E4E3
+        E3E3E5E5E5D2D2D2A3A3A3B9B9B9E7E7E7FFFFFFFFFFFFFFFFFFF0F0F0EBEBEB
+        FAFAFAF7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FAFAFAFCFCFCFCFCFCF8F8F8F4F4
+        F4F3F3F3E6E6E6E6E6E6F8F8F8F6F6F6E7E7E7F1F1F1F1F1F1E7E7E7C6C6C6EB
+        EBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F8F8F8F9F9F9FFFFFF
+        E9E9E9B1B1B1BBBBBBCFCFCFD5D5D5F3F3F3F7F7F7E4E4E4E1E1E1DFDFDFCECE
+        CEBFBFBFD5D5D5E7E7E7D4D4D4AFAFAFCECECEF0F0F0F5F5F5F4F4F4F5F5F5F7
+        F7F7FAFAFAFBFBFBFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF
+        FFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEDEDEDEDEDEDEAEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAEAEAE9E9E9C9C9C9D5D5D5F3F3F3F4F4F4F6F6F6F8F8F8F8F8F8FB
+        FBFBFBFBFBF4F4F4F1F1F1F2F2F2F1F1F1F0F0F0F2F2F2FFFFFFF9F9F9E8E8E8
+        E4E4E4E4E4E4E7E7E7EAEAEAE8E8E8E8E8E8EAEAEAE9E9E9E9E9E9D7D7D7AFAF
+        AFBDBDBDE5E5E5F8F8F8FBFBFBFCFCFCFCFCFCF9F9F9FCFCFCECECECD6D6D6E6
+        E6E6F7F7F7F7F7F7F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9FBFBFB
+        FFFFFFF6F6F6ECECECEBEBEBEAEAEAEBEBEBE9E9E9E8E8E8EAEAEAF9F9F9FFFF
+        FFFFFFFFFFFFFFFEFEFEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+        FEFEEEEEEEEDEDEDEEEEEEF0F0F0EDEDEDE9E9E9E7E7E7E5E5E5E3E3E3E2E2E2
+        CDCDCDE1E1E1F8F8F8F7F7F7F9F9F9F9F9F9F8F8F8FDFDFDFFFFFFF8F8F8EAEA
+        EAE9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEBEBEBECECECEAEAEAEAEAEAE8E8E8D3
+        D3D3DEDEDEF4F4F4FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7F7
+        F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4DCDCDCCACACABABABAC1C1C1D1D1D1E7E7
+        E7F7F7F7F7F7F7F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAF9F9F9F9F9F9F9F9F9FF
+        FFFFF9F9F9F9F9F9FBFBFBF9F9F9F8F8F8F7F7F7F8F8F8FBFBFBFFFFFFFFFFFF
+        E9E9E9C4C4C4E6E6E6F8F8F8F8F8F8F9F9F9FCFCFCFAFAFAF8F8F8F7F7F7DBDB
+        DBDCDCDCE9E9E9E8E8E8E9E9E9E9E9E9E7E7E7E7E7E7E9E9E9E9E9E9CACACAD7
+        D7D7F5F5F5F8F8F8F9F9F9F9F9F9E7E7E7E9E9E9D7D7D7BFBFBFBDBDBDCFCFCF
+        E0E0E0E0E0E0E4E4E4E9E9E9E9E9E9C1C1C1BABABAE2E2E2F6F6F6F7F7F7F7F7
+        F7FBFBFBF8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE5E5E5F7F7F7F8
+        F8F8F9F9F9FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBBABABA
+        C5C5C5E2E2E2F7F7F7FAFAFAF7F7F7F8F8F8F8F8F80000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF0F0F0EDEDEDEDEDEDECECECE8E8E8E5E5E5E4E4E4E4
+        E4E4D1D1D1A5A5A5BABABAFCFCFCFFFFFFFFFFFFFFFFFFE8E8E8D4D4D4E4E4E4
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FCFCFCFCFCFCF9F9F9F6F6F6F4F4
+        F4F4F4F4FFFFFFF7F7F7E8E8E8E4E4E4E5E5E5ECECECECECECE5E5E5C6C6C6EB
+        EBEBFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE5E5E5F7F7F7F7F7F7F7F7F7F8F8F8
+        E3E3E3D0D0D0E2E2E2F3F3F3F7F7F7FFFFFFFFFFFFE7E7E7E4E4E4D0D0D0A6A6
+        A6BABABADEDEDED2D2D2ACACACBFBFBFE6E6E6F5F5F5F5F5F5F3F3F3F7F7F7F9
+        F9F9FBFBFBFBFBFBFBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFFFFFF
+        FFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEAEAEAE7E7E7E7E7E7E8E8E8EAEA
+        EAEAEAEAEAEAEAE9E9E9CCCCCCDADADAF6F6F6F7F7F7F8F8F8FBFBFBFBFBFBF9
+        F9F9F8F8F8F2F2F2F0F0F0F0F0F0F0F0F0F1F1F1F2F2F2FFFFFFFFFFFFE7E7E7
+        E7E7E7E6E6E6E8E8E8E8E8E8E7E7E7E9E9E9EAEAEAE8E8E8D7D7D7ACACACBBBB
+        BBE2E2E2F5F5F5F8F8F8FAFAFAFCFCFCFBFBFBF9F9F9FCFCFCFCFCFCF7F7F7F5
+        F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F5F5F5
+        F2F2F2EDEDEDD7D7D7DBDBDBEAEAEAEBEBEBE9E9E9EAEAEAEAEAEAE9E9E9EAEA
+        EAECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECECECECEDEDEDEC
+        ECECEBEBEBEDEDEDEDEDEDECECECEAEAEAE7E7E7E6E6E6E6E6E6E5E5E5E2E2E2
+        E3E3E3E7E7E7F8F8F8F7F7F7F8F8F8F8F8F8F8F8F8FEFEFEFEFEFEFFFFFFF7F7
+        F7E9E9E9E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAE9E9E9E9E9E9D2D2D2AC
+        ACACCFCFCFF7F7F7FCFCFCFFFFFFFDFDFDFDFDFDFDFDFDFAFAFAF7F7F7F6F6F6
+        F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5E7E7E7D6D6D6D4D4D4E0E0E0F1F1F1F8F8
+        F8FBFBFBF9F9F9F7F7F7F6F6F6F7F7F7FBFBFBFCFCFCFDFDFDFFFFFFFFFFFFFF
+        FFFFF9F9F9FBFBFBFDFDFDFBFBFBF8F8F8F9F9F9F9F9F9FBFBFBFFFFFFEBEBEB
+        AEAEAEBCBCBCE0E0E0F4F4F4F7F7F7F9F9F9F9F9F9F7F7F7F7F7F7F7F7F7E7E7
+        E7E7E7E7D9D9D9DADADAEAEAEAE8E8E8E7E7E7E9E9E9EAEAEAE7E7E7C8C8C8D6
+        D6D6F4F4F4F8F8F8F7F7F7F6F6F6F5F5F5F7F7F7E6E6E6D1D1D1D0D0D0E1E1E1
+        E2E2E2E3E3E3E6E6E6E9E9E9D7D7D7A7A7A7CECECEF8F8F8F9F9F9F9F9F9F8F8
+        F8F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFFCFCFCEDEDEDE9E9E9E9E9E9FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8CACACAC9C9C9
+        E7E7E7F4F4F4F8F8F8FAFAFAF8F8F8FBFBFBFAFAFA0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFEEEEEEEDEDEDEBEBEBEAEAEAE9E9E9E8E8E8E7
+        E7E7BFBFBFBBBBBBE5E5E5FFFFFFFFFFFFFFFFFFFDFDFDE7E7E7E7E7E7D1D1D1
+        E0E0E0F2F2F2F3F3F3F6F6F6F8F8F8FBFBFBFBFBFBFBFBFBF9F9F9F5F5F5F4F4
+        F4FFFFFFFFFFFFFFFFFFE7E7E7E4E4E4E6E6E6E9E9E9E7E7E7D4D4D4B4B4B4D9
+        D9D9FFFFFFFBFBFBEAEAEAEBEBEBC5C5C5D1D1D1F5F5F5F7F7F7F6F6F6F7F7F7
+        F4F4F4F6F6F6F7F7F7F5F5F5F8F8F8FFFFFFFFFFFFEAEAEAD8D8D8ADADADBBBB
+        BBE0E0E0EEEEEEE2E2E2D3D3D3E6E6E6F7F7F7F5F5F5F3F3F3F4F4F4F8F8F8F9
+        F9F9F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9FAFAFAFFFFFF
+        FFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E7E7E7E7E7E7E9E9E9E9E9
+        E9EAEAEAE8E8E8DADADAC0C0C0D9D9D9F5F5F5F8F8F8FAFAFAFCFCFCFBFBFBF8
+        F8F8F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFE9E9E9
+        E7E7E7E3E3E3E4E4E4E8E8E8E9E9E9E9E9E9E8E8E8D6D6D6AFAFAFBBBBBBE2E2
+        E2F6F6F6F6F6F6F7F7F7F9F9F9F9F9F9FCFCFCFDFDFDFFFFFFFFFFFFFFFFFFF5
+        F5F5F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F1F1F1
+        EDEDEDEDEDEDE1E1E1E7E7E7DBDBDBCECECECACACAC8C8C8CACACAD9D9D9EAEA
+        EAECECECECECECEDEDEDEFEFEFF0F0F0F0F0F0F0F0F0EDEDEDEAEAEAEAEAEAEA
+        EAEAE9E9E9ECECECECECECE7E7E7E8E8E8E7E7E7E4E4E4E6E6E6E4E4E4E6E6E6
+        EBEBEBEBEBEBEAEAEAF7F7F7F7F7F7F9F9F9F8F8F8FEFEFEFFFFFFFFFFFFFFFF
+        FFECECECE6E6E6E5E5E5E6E6E6E6E6E6E6E6E6E7E7E7E6E6E6D3D3D3A6A6A6BC
+        BCBCE1E1E1F7F7F7FBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F5F5F5F5F5F5F7F7F7
+        F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F3F3F3F0F0F0F0F0F0F1F1F1F4F4F4F9F9
+        F9FAFAFAF9F9F9FFFFFFFFFFFFF8F8F8FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFCFCFCFDFDFDFCFCFCF9F9F9F8F8F8F9F9F9F8F8F8F9F9F9F8F8F8E4E4E4
+        D0D0D0DFDFDFF2F2F2F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5
+        F5F5F5F5E5E5E5E8E8E8EAEAEAEAEAEAE9E9E9EBEBEBDADADAC7C7C7B5B5B5D3
+        D3D3F4F4F4F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F7F7F7
+        F4F4F4D5D5D5C3C3C3C3C3C3ADADADB6B6B6E2E2E2F9F9F9F9F9F9F9F9F9FDFD
+        FDFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E9E9E9E8E8E8E7E7E7E7E7E7F9F9F9FF
+        FFFFFDFDFDFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9E9E9E9E7E7E7CBCBCBDADADA
+        F5F5F5F5F5F5F6F6F6F5F5F5F3F3F3F8F8F8F8F8F80000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFECECECEAEAEAEAEAEAEAEAEAE8E8E8E7
+        E7E7C1C1C1D1D1D1F7F7F7F9F9F9FFFFFFF9F9F9E8E8E8E7E7E7E6E6E6BCBCBC
+        CCCCCCF1F1F1F3F3F3F7F7F7FAFAFAFBFBFBFAFAFAFAFAFAF8F8F8F5F5F5FFFF
+        FFFFFFFFFFFFFFF7F7F7E6E6E6E4E4E4E2E2E2E6E6E6D7D7D7B5B5B5C5C5C5EA
+        EAEAFFFFFFEAEAEAD4D4D4E4E4E4C0C0C0D0D0D0F5F5F5F5F5F5F5F5F5F7F7F7
+        F6F6F6F8F8F8F5F5F5F3F3F3F7F7F7FFFFFFF7F7F7CECECEB5B5B5BBBBBBE1E1
+        E1F3F3F3F4F4F4F8F8F8FAFAFAF7F7F7F4F4F4F4F4F4F3F3F3F7F7F7F9F9F9F9
+        F9F9FBFBFBFDFDFDFDFDFDFDFDFDFFFFFFFDFDFDF8F8F8F6F6F6F8F8F8FFFFFF
+        F5F5F5EAEAEAE9E9E9E8E8E8E9E9E9D7D7D7BEBEBEBABABABEBEBED6D6D6E8E8
+        E8EBEBEBE9E9E9CECECECBCBCBE6E6E6F5F5F5F9F9F9F9F9F9F9F9F9F8F8F8F9
+        F9F9FAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFBFBFBE8E8E8
+        E7E7E7E6E6E6E7E7E7E9E9E9EAEAEAE9E9E9D3D3D3A8A8A8B9B9B9DEDEDEF5F5
+        F5FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F4
+        F4F4F8F8F8F8F8F8F7F7F7F6F6F6F6F6F6F6F6F6F4F4F4F4F4F4F4F4F4F1F1F1
+        F2F2F2F5F5F5F6F6F6F7F7F7E9E9E9DBDBDBD6D6D6D5D5D5D4D4D4E2E2E2D9D9
+        D9DBDBDBECECECEDEDEDF3F3F3F0F0F0EDEDEDEDEDEDEAEAEAEAEAEAEAEAEAE9
+        E9E9E7E7E7E9E9E9E7E7E7E3E3E3E4E4E4CCCCCCB3B3B3D1D1D1E8E8E8EBEBEB
+        EDEDEDEAEAEAE9E9E9D4D4D4E4E4E4FAFAFAF9F9F9FEFEFEFFFFFFFFFFFFFEFE
+        FEEDEDEDEAEAEAE7E7E7E4E4E4E2E2E2E2E2E2E4E4E4D3D3D3AFAFAFBEBEBEE4
+        E4E4F5F5F5F9F9F9F9F9F9F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F8F8F8
+        F7F7F7F5F5F5F5F5F5F5F5F5F3F3F3F0F0F0F0F0F0F3F3F3F5F5F5F5F5F5F8F8
+        F8FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFEFEFEFDFDFDFBFBFBFAFAFAF9F9F9F9F9F9FCFCFCFFFFFFFDFDFDFBFBFB
+        F4F4F4F2F2F2F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F5F5
+        F5F5F5F5F5F5F5F7F7F7FFFFFFFFFFFFF0F0F0EFEFEFDEDEDED4D4D4D1D1D1E5
+        E5E5F5F5F5F7F7F7F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7E6E6E6D3D3D3D3D3D3D0D0D0DEDEDEF4F4F4F9F9F9F8F8F8F8F8F8FFFF
+        FFFFFFFFFFFFFFFFFFFFF9F9F9E9E9E9E8E8E8E7E7E7E6E6E6E6E6E6E6E6E6E8
+        E8E8E9E9E9F9F9F9F9F9F9ECECECE7E7E7E5E5E5E7E7E7E4E4E4CCCCCCDADADA
+        F4F4F4F4F4F4F4F4F4F3F3F3F0F0F0FFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E7
+        E7E7C2C2C2D2D2D2F7F7F7F8F8F8FFFFFFFDFDFDE9E9E9E7E7E7E4E4E4B9B9B9
+        CCCCCCF5F5F5F7F7F7F8F8F8F9F9F9F8F8F8F7F7F7F8F8F8F6F6F6FFFFFFFFFF
+        FFFFFFFFF8F8F8E7E7E7E4E4E4E0E0E0E1E1E1E6E6E6C9C9C9C6C6C6E9E9E9F9
+        F9F9F9F9F9E7E7E7F2F2F2F5F5F5C4C4C4D1D1D1F3F3F3F4F4F4F6F6F6F8F8F8
+        F7F7F7F7F7F7F4F4F4F3F3F3F5F5F5FFFFFFD8D8D8C2C2C2CACACADFDFDFF7F7
+        F7F5F5F5F7F7F7FAFAFAFAFAFAF9F9F9F9F9F9FAFAFAF8F8F8F9F9F9FCFCFCFB
+        FBFBFCFCFCFCFCFCFBFBFBFAFAFAFDFDFDFBFBFBF6F6F6F6F6F6F6F6F6F4F4F4
+        F3F3F3EAEAEAEAEAEAE9E9E9D7D7D7ACACACB5B5B5CACACAD1D1D1E2E2E2E4E4
+        E4E8E8E8EAEAEACCCCCCD8D8D8F4F4F4F6F6F6F7F7F7F5F5F5F6F6F6F8F8F8F9
+        F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFBFBFB
+        E9E9E9E9E9E9E7E7E7E7E7E7E9E9E9D3D3D3A5A5A5B8B8B8E2E2E2F5F5F5F8F8
+        F8FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFBFBFBE4E4E4DA
+        DADAE9E9E9F6F6F6F5F5F5F5F5F5F6F6F6F6F6F6F5F5F5F6F6F6F4F4F4F5F5F5
+        F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F3F3F3F3F3F3E6E6
+        E6F6F6F6FBFBFBEEEEEEF2F2F2EDEDEDE7E7E7E7E7E7E6E6E6E2E2E2E6E6E6E7
+        E7E7E7E7E7E7E7E7CFCFCFB5B5B5B5B5B5999999AEAEAEE6E6E6EBEBEBE8E8E8
+        EAEAEAE8E8E8E6E6E6D1D1D1E5E5E5FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFF7F7
+        F7EDEDEDEDEDEDECECECEAEAEAE7E7E7E6E6E6E6E6E6C8C8C8C1C1C1E5E5E5F7
+        F7F7F7F7F7FCFCFCFAFAFAF5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7
+        F6F6F6F5F5F5F5F5F5F4F4F4F1F1F1F1F1F1F2F2F2F5F5F5F7F7F7F7F7F7F9F9
+        F9FFFFFFFFFFFFFFFFFFF3F3F3E7E7E7FFFFFFFFFFFFFCFCFCEDEDEDEEEEEEFF
+        FFFFFDFDFDFCFCFCFCFCFCFCFCFCFAFAFAFFFFFFFFFFFFFFFFFFFBFBFBF9F9F9
+        F4F4F4F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F5F5
+        F5F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF0F0F0EDEDEDECECECD4D4D4DFDFDFF4
+        F4F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F1F1F1F6F6F6F9F9F9F8F8F8F9F9F9FFFF
+        FFFFFFFFFFFFFFE4E4E4E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E7E7E7E7E7E7E8
+        E8E8E8E8E8E8E8E8E8E8E8E9E9E9E6E6E6E4E4E4E6E6E6E7E7E7CDCDCDDADADA
+        F3F3F3F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFE9E9E9E8E8E8E9E9E9E8E8E8E8
+        E8E8C4C4C4D4D4D4F8F8F8F8F8F8FAFAFAFFFFFFFDFDFDE6E6E6E1E1E1BBBBBB
+        D0D0D0F6F6F6F6F6F6F7F7F7F8F8F8FAFAFAF8F8F8FFFFFFFFFFFFFFFFFFFFFF
+        FFF7F7F7EAEAEAE9E9E9E3E3E3E2E2E2E7E7E7E9E9E9CACACAD6D6D6F6F6F6F7
+        F7F7F9F9F9F8F8F8FFFFFFEDEDEDB5B5B5D2D2D2F3F3F3F5F5F5F7F7F7F5F5F5
+        F4F4F4F3F3F3F2F2F2F2F2F2F1F1F1EFEFEFDADADADCDCDCEDEDEDF2F2F2F8F8
+        F8F7F7F7F7F7F7FAFAFAFBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFCFCFCFBFBFBF7
+        F7F7F9F9F9FAFAFAF9F9F9F8F8F8FCFCFCFBFBFBF8F8F8F8F8F8F6F6F6F6F6F6
+        F5F5F5FFFFFFF9F9F9DADADAB2B2B2BEBEBEDFDFDFF4F4F4FAFAFAF7F7F7F8F8
+        F8ECECECEAEAEAD9D9D9E2E2E2F4F4F4F5F5F5F5F5F5F5F5F5F8F8F8F9F9F9FB
+        FBFBF9F9F9F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFF
+        E9E9E9E6E6E6E3E3E3D1D1D1BEBEBEA5A5A5B7B7B7E2E2E2F8F8F8F9F9F9FBFB
+        FBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFEEEEEEECECECD7D7D7B9
+        B9B9D9D9D9F4F4F4F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7
+        F9F9F9FBFBFBFBFBFBFBFBFBFCFCFCFAFAFAF8F8F8F8F8F8F7F7F7F7F7F7F7F7
+        F7FFFFFFEAEAEADDDDDDF1F1F1ECECECE7E7E7E7E7E7E2E2E2DFDFDFE4E4E4E8
+        E8E8E9E9E9D3D3D3A1A1A1B5B5B5CECECECECECEE3E3E3FFFFFFFFFFFFFCFCFC
+        EAEAEAE8E8E8E4E4E4D4D4D4C8C8C8ECECECFAFAFAFFFFFFFFFFFFFFFFFFEEEE
+        EEEDEDEDEDEDEDEDEDEDEDEDEDECECECEBEBEBEBEBEBD0D0D0DADADAF5F5F5F7
+        F7F7F9F9F9FEFEFEFAFAFAF5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6
+        F5F5F5F5F5F5F5F5F5F3F3F3F1F1F1F1F1F1F4F4F4F6F6F6F7F7F7F7F7F7F9F9
+        F9FFFFFFEAEAEADBDBDBE9E9E9E9E9E9FAFAFAFCFCFCECECECE9E9E9ECECECFF
+        FFFFF9F9F9F9F9F9F9F9F9F9F9F9F8F8F8FFFFFFFFFFFFFCFCFCF3F3F3F1F1F1
+        EFEFEFF2F2F2F5F5F5F6F6F6F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F4F4F4F5F5
+        F5F7F7F7F6F6F6F5F5F5FFFFFFFFFFFFECECECEAEAEAEAEAEAD6D6D6E3E3E3F6
+        F6F6F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F6F6F6F4F4F4F3F3F3F5F5F5F8F8F8F9F9F9FAFAFAFFFFFFFFFF
+        FFFFFFFFF9F9F9E2E2E2E1E1E1E2E2E2E4E4E4E6E6E6E6E6E6E7E7E7E7E7E7E8
+        E8E8E7E7E7E8E8E8E8E8E8E8E8E8E7E7E7E6E6E6E6E6E6E9E9E9CFCFCFDADADA
+        F4F4F4F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFE9E9E9E9E9E9E9E9E9E9E9E9E8
+        E8E8C2C2C2D3D3D3F9F9F9FAFAFAFBFBFBFFFFFFFFFFFFE7E7E7E5E5E5D4D4D4
+        E5E5E5F7F7F7F7F7F7F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7
+        F7EAEAEAEAEAEAE9E9E9E7E7E7E6E6E6E7E7E7DADADABBBBBBD5D5D5F4F4F4F6
+        F6F6F8F8F8F7F7F7F7F7F7E6E6E6D2D2D2E4E4E4F6F6F6F7F7F7F8F8F8F7F7F7
+        F4F4F4F3F3F3F4F4F4F4F4F4F3F3F3F4F4F4F0F0F0F2F2F2F5F5F5F7F7F7F7F7
+        F7F7F7F7F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDE7E7E7F7F7F7F5
+        F5F5F8F8F8F9F9F9F7F7F7F7F7F7FCFCFCFAFAFAF8F8F8F4F4F4F4F4F4F6F6F6
+        FFFFFFFFFFFFFFFFFFDBDBDBD1D1D1E3E3E3F5F5F5F7F7F7FAFAFAFAFAFAFFFF
+        FFFFFFFFF1F1F1E4E4E4E4E4E4FFFFFFFFFFFFF6F6F6FFFFFFFFFFFFFFFFFFFF
+        FFFFFCFCFCF9F9F9FBFBFBF9F9F9F7F7F7F8F8F8F8F8F8F7F7F7FFFFFFFFFFFF
+        E4E4E4E1E1E1E2E2E2BCBCBCB7B7B7CECECEE3E3E3F8F8F8FAFAFAFCFCFCFCFC
+        FCFCFCFCFCFCFCFAFAFAFAFAFAFDFDFDFFFFFFFFFFFFEDEDEDDDDDDDB8B8B8C6
+        C6C6E8E8E8F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9
+        FEFEFEFFFFFFFDFDFDFAFAFAFBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F7F7
+        F7F8F8F8E6E6E6E6E6E6ECECECE9E9E9E6E6E6E6E6E6E1E1E1E1E1E1E7E7E7EA
+        EAEAD5D5D5A4A4A4B7B7B7E6E6E6FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFECECEC
+        EAEAEAE6E6E6D1D1D1ADADADBCBCBCE5E5E5F7F7F7F9F9F9FFFFFFFDFDFDEDED
+        EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDD5D5D5DEDEDEF8F8F8FA
+        FAFAFEFEFEFCFCFCF8F8F8F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFECECECE9E9E9
+        F5F5F5F5F5F5F5F5F5F3F3F3F1F1F1F3F3F3F6F6F6F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7E7E7E7E8E8E8DEDEDEDEDEDEECECECEEEEEEECECECEBEBEBECECECFF
+        FFFFF7F7F7F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFEDEDEDDADADAE3E3E3
+        F2F2F2F4F4F4F5F5F5FAFAFAFAFAFAF7F7F7F6F6F6F7F7F7F6F6F6F5F5F5F7F7
+        F7F6F6F6F5F5F5F4F4F4FFFFFFFFFFFFEAEAEAE7E7E7E7E7E7E7E7E7CFCFCFE2
+        E2E2F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F6F6F6F5F5F5F4F4F4F5F5F5F7F7F7F8F8F8FBFBFBFDFDFDFFFFFFFFFF
+        FFFEFEFEE3E3E3E2E2E2E2E2E2E5E5E5E7E7E7E8E8E8E7E7E7E8E8E8E9E9E9E9
+        E9E9E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E7E7E7EAEAEACFCFCFDADADA
+        F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFE9E9E9EAEAEAE9E9E9E8
+        E8E8C3C3C3D3D3D3F9F9F9F9F9F9F8F8F8FFFFFFFFFFFFEAEAEAEAEAEAE9E9E9
+        D8D8D8E6E6E6F8F8F8F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAEAEA
+        EAEAEAEAEAEAEAE9E9E9E8E8E8E7E7E7E6E6E6D9D9D9D6D6D6E6E6E6F5F5F5F8
+        F8F8F6F6F6F5F5F5F5F5F5F3F3F3F1F1F1F5F5F5F7F7F7F7F7F7F9F9F9F6F6F6
+        F4F4F4F6F6F6F7F7F7F7F7F7F8F8F8F9F9F9FBFBFBF9F9F9F7F7F7F7F7F7F7F7
+        F7F7F7F7F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFD5D5D5CBCBCBF2F2F2F5
+        F5F5F9F9F9F9F9F9F8F8F8F8F8F8FAFAFAF7F7F7FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFCFCFCECECECD7D7D7E5E5E5F8F8F8F8F8F8FCFCFCFEFEFEFFFF
+        FFFFFFFFFFFFFFF7F7F7EBEBEBFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFDFDFDFB
+        FBFBF8F8F8F9F9F9FCFCFCF9F9F9F7F7F7FFFFFFFFFFFFF7F7F7FFFFFFFFFFFF
+        E6E6E6E6E6E6E6E6E6C3C3C3D1D1D1F5F5F5F7F7F7FAFAFAFCFCFCFCFCFCFCFC
+        FCFDFDFDFCFCFCFAFAFAFDFDFDFFFFFFFFFFFFFFFFFFDEDEDEBABABAC4C4C4E4
+        E4E4F7F7F7F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFFFFFF
+        FFFFFFFFFFFFFEFEFEF9F9F9F7F7F7F7F7F7F7F7F7FAFAFAFBFBFBF8F8F8F8F8
+        F8F9F9F9F6F6F6F5F5F5F7F7F7D7D7D7D1D1D1E0E0E0DEDEDEE2E2E2E9E9E9EA
+        EAEABFBFBFB8B8B8E6E6E6FBFBFBFCFCFCFFFFFFFEFEFEFFFFFFE9E9E9DDDDDD
+        D2D2D2BFBFBFAAAAAAB8B8B8DFDFDFF3F3F3F5F5F5F7F7F7FFFFFFF7F7F7EFEF
+        EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDD5D5D5DEDEDEF6F6F6FB
+        FBFBFCFCFCF8F8F8F5F5F5F5F5F5F5F5F5F7F7F7FFFFFFEAEAEAC4C4C4DCDCDC
+        F5F5F5F5F5F5F4F4F4F3F3F3F1F1F1F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F8F8
+        F8F8F8F8F6F6F6F5F5F5E9E9E9F5F5F5F7F7F7ECECECEDEDEDECECECEDEDEDFF
+        FFFFF7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFDFDFDECECECCACACAD1D1D1
+        F4F4F4F7F7F7F7F7F7FEFEFEFCFCFCF9F9F9F9F9F9F7F7F7F8F8F8F7F7F7F7F7
+        F7F6F6F6F5F5F5F8F8F8FFFFFFFFFFFFE9E9E9E6E6E6E6E6E6E6E6E6D0D0D0E1
+        E1E1F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F6F6F6F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9FBFBFBFFFFFFFFFF
+        FFE2E2E2E2E2E2E6E6E6E7E7E7E8E8E8E9E9E9E9E9E9E7E7E7E9E9E9E9E9E9E9
+        E9E9E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAE8E8E8E9E9E9EAEAEACCCCCCD5D5D5
+        FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE7E7E7E6E6E60000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEEEEEEEAEAEAE9
+        E9E9D8D8D8E8E8E8FAFAFAF9F9F9FCFCFCFFFFFFFFFFFFECECECEAEAEAE9E9E9
+        C3C3C3D3D3D3F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFECECECEBEBEBEAEAEAEAEA
+        EAEAEAEAE8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7DEDEDEEAEAEAF5F5F5F7
+        F7F7F7F7F7FFFFFFFFFFFFFFFFFFF3F3F3F5F5F5F7F7F7F8F8F8F8F8F8F4F4F4
+        F4F4F4F7F7F7F8F8F8F8F8F8F9F9F9FBFBFBFFFFFFFEFEFEF9F9F9F9F9F9F8F8
+        F8F7F7F7F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFFDFDFDB8B8B8C8C8C8F5F5F5F8
+        F8F8FBFBFBF9F9F9F9F9F9F9F9F9FCFCFCFAFAFAFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFBFBFBECECECEBEBEBD9D9D9E6E6E6F8F8F8F8F8F8FBFBFBFDFDFDFFFF
+        FFFFFFFFFFFFFFFBFBFBEDEDEDEFEFEFEBEBEBF7F7F7FFFFFFF9F9F9EBEBEBEB
+        EBEBF4F4F4F7F7F7F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        ECECECECECECE9E9E9C8C8C8D4D4D4F5F5F5F7F7F7F9F9F9FBFBFBFBFBFBFDFD
+        FDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFC9C9C9E8E8E8F9
+        F9F9FCFCFCFBFBFBF9F9F9FBFBFBFBFBFBFAFAFAFCFCFCFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF0F0F0F1F1F1F4F4F4F5F5F5F7F7F7F8F8F8F6F6F6F7F7
+        F7F7F7F7F7F7F7F8F8F8F9F9F9E9E9E9E2E2E2D1D1D1C0C0C0D6D6D6D8D8D8C6
+        C6C6AEAEAED7D7D7FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F1F1F1
+        E3E3E3CECECECBCBCBE0E0E0F4F4F4F5F5F5F6F6F6F8F8F8F7F7F7F7F7F7EFEF
+        EFF1F1F1F1F1F1F0F0F0EEEEEEEEEEEEEEEEEEEDEDEDD5D5D5DEDEDEF5F5F5F7
+        F7F7F7F7F7F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3FEFEFEDDDDDDDBDBDBF4F4F4
+        F5F5F5F5F5F5F3F3F3F3F3F3F2F2F2F4F4F4F7F7F7F7F7F7F7F7F7F8F8F8F8F8
+        F8F7F7F7F5F5F5F4F4F4F5F5F5FFFFFFF6F6F6ECECECEDEDEDECECECEDEDEDFF
+        FFFFF5F5F5F6F6F6F8F8F8FFFFFFFFFFFFEEEEEEEBEBEBE9E9E9C6C6C6CECECE
+        F3F3F3F8F8F8F8F8F8FEFEFEFAFAFAF5F5F5F4F4F4F4F4F4F7F7F7F5F5F5F7F7
+        F7F6F6F6F6F6F6F8F8F8FFFFFFFFFFFFE9E9E9E6E6E6E6E6E6E6E6E6E6E6E6E6
+        E6E6F6F6F6F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F4F4F4F4F4F4F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8FFFFFFECEC
+        ECD3D3D3E6E6E6E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEA
+        EAEAE8E8E8E9E9E9EAEAEAEAEAEAEAEAEAE8E8E8D8D8D8C8C8C8B7B7B7D3D3D3
+        FFFFFFFFFFFFFFFFFFECECECE6E6E6E6E6E6E6E6E60000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAE8
+        E8E8ECECECEDEDEDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFECECECEAEAEAD7D7D7
+        AFAFAFD3D3D3F7F7F7F7F7F7F8F8F8FFFFFFFAFAFAEBEBEBE9E9E9E9E9E9E8E8
+        E8E7E7E7E9E9E9EAEAEAEBEBEBEBEBEBEBEBEBE8E8E8DEDEDEE9E9E9F2F2F2F4
+        F4F4F8F8F8FFFFFFFFFFFFF9F9F9F0F0F0F3F3F3F8F8F8F7F7F7F8F8F8F8F8F8
+        F8F8F8F9F9F9F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFEFEFEF9F9F9F7F7F7F6F6
+        F6F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFF8F8F8CCCCCC979797CACACAF7F7F7FB
+        FBFBFDFDFDF9F9F9F9F9F9F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFE6E6E6E3E3E3
+        E6E6E6E9E9E9E9E9E9E9E9E9E9E9E9D8D8D8E7E7E7F8F8F8FAFAFAFAFAFAFFFF
+        FFFFFFFFFFFFFFEEEEEEEBEBEBE9E9E9E8E8E8E8E8E8EAEAEAEBEBEBEBEBEBE9
+        E9E9DADADAE7E7E7F6F6F6FFFFFFFFFFFFFFFFFFFAFAFAF6F6F6FFFFFFFCFCFC
+        EDEDEDECECECE9E9E9DADADAE4E4E4F1F1F1F7F7F7FBFBFBFCFCFCFBFBFBFDFD
+        FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBDFDFDFECECECFCFCFCFE
+        FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF2F2F2E5E5E5EAEAEAF3F3F3F4F4F4F7F7F7F7F7F7F4F4F4F5F5
+        F5F7F7F7F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBE6E6E6D2D2D2E4E4E4C3C3C3BE
+        BEBED3D3D3EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7F7F9F9F9
+        F9F9F9F5F5F5F1F1F1F3F3F3F5F5F5F6F6F6F8F8F8F8F8F8F7F7F7F6F6F6F8F8
+        F8F1F1F1F0F0F0EDEDEDEDEDEDEDEDEDECECECECECECD5D5D5DEDEDEF5F5F5F5
+        F5F5F5F5F5F4F4F4F3F3F3F1F1F1EFEFEFEEEEEEEDEDEDDFDFDFECECECE9E9E9
+        E9E9E9F4F4F4F3F3F3F4F4F4F4F4F4F7F7F7F9F9F9F9F9F9F9F9F9FBFBFBF9F9
+        F9F5F5F5F4F4F4F5F5F5F5F5F5F4F4F4FFFFFFFBFBFBF0F0F0EDEDEDEEEEEEFF
+        FFFFF5F5F5F6F6F6F7F7F7FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEDCDCDCE2E2E2
+        F5F5F5FBFBFBFBFBFBFFFFFFFBFBFBF5F5F5F3F3F3F5F5F5F7F7F7F6F6F6F6F6
+        F6F6F6F6F6F6F6F8F8F8F8F8F8FAFAFAE9E9E9E6E6E6E6E6E6E6E6E6E6E6E6E5
+        E5E5CFCFCFE2E2E2F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7
+        F7F7F7F5F5F5F6F6F6F7F7F7F7F7F7F9F9F9F9F9F9F8F8F8F9F9F9FCFCFCEAEA
+        EAE6E6E6EAEAEAE9E9E9EAEAEAEAEAEAEBEBEBE9E9E9E9E9E9E9E9E9EAEAEAE9
+        E9E9ECECECECECECEAEAEAEAEAEAE9E9E9D7D7D7B2B2B2C4C4C4D6D6D6E6E6E6
+        FFFFFFFFFFFFECECECE7E7E7E6E6E6E6E6E6E6E6E60000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFE9E9E9E9
+        E9E9EAEAEAEAEAEAEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAC3C3C3
+        BFBFBFE6E6E6F6F6F6F7F7F7F7F7F7F8F8F8F7F7F7DEDEDECFCFCFD9D9D9D9D9
+        D9DCDCDCEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9ECECECF2F2F2F3
+        F3F3FFFFFFFFFFFFFFFFFFE9E9E9D3D3D3E1E1E1F7F7F7F5F5F5F8F8F8F9F9F9
+        F7F7F7FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF6F6
+        F6F7F7F7FEFEFEFFFFFFFFFFFFFFFFFFD1D1D19D9D9DB1B1B1E1E1E1F8F8F8FC
+        FCFCFDFDFDF9F9F9F9F9F9F9F9F9FDFDFDFFFFFFFFFFFFF8F8F8E3E3E3E2E2E2
+        E6E6E6E9E9E9E9E9E9E8E8E8E6E6E6C3C3C3D4D4D4F8F8F8FBFBFBFFFFFFFFFF
+        FFFFFFFFFAFAFAEEEEEEECECECEAEAEAE9E9E9E7E7E7E7E7E7E7E7E7E7E7E7E7
+        E7E7CBCBCBE7E7E7FFFFFFFFFFFFFFFFFFF8F8F8E8E8E8E5E5E5E9E9E9EDEDED
+        EBEBEBEBEBEBEBEBEBEAEAEADBDBDBE6E6E6F7F7F7FBFBFBFDFDFDFCFCFCFFFF
+        FFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFBFBFBEEEEEEEEEEEEEFEFEFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBECECEC
+        EAEAEAE8E8E8D3D3D3BCBCBCDCDCDCF1F1F1F3F3F3F7F7F7F7F7F7F4F4F4F5F5
+        F5F9F9F9F9F9F9FBFBFBFCFCFCFEFEFEFDFDFDF7F7F7F4F4F4F6F6F6E2E2E2E1
+        E1E1F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFEBEBEBE4E4E4E2E2E2D3D3D3E7E7E7
+        F9F9F9F6F6F6F3F3F3F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8FAFAFAEAEAEAE6E6E6E7E7E7E9E9E9E9E9E9DFDFDFC6C6C6DBDBDBF3F3F3F3
+        F3F3F3F3F3F0F0F0F0F0F0F1F1F1F0F0F0EDEDEDEDEDEDEFEFEFF4F4F4EEEEEE
+        ECECECF5F5F5F5F5F5F5F5F5F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF4F4F4F4F4F4F5F5F5F6F6F6F6F6F6FFFFFFFFFFFFF3F3F3F0F0F0F0F0F0FF
+        FFFFF5F5F5F5F5F5F5F5F5FFFFFFFFFFFFEFEFEFEDEDEDECECECEAEAEAD3D3D3
+        E3E3E3FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2F4F4F4F7F7F7F5F5
+        F5F5F5F5F6F6F6F8F8F8F8F8F8F9F9F9F8F8F8E6E6E6E5E5E5E6E6E6E6E6E6E5
+        E5E5B9B9B9CFCFCFF8F8F8F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7
+        F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7FAFAFAFAFAFAF9F9
+        F9FBFBFBFFFFFFF9F9F9EDEDEDECECECEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9EA
+        EAEAEDEDEDECECECECECECEFEFEFDADADAB2B2B2C3C3C3E7E7E7F6F6F6F6F6F6
+        F9F9F9FFFFFFFAFAFAE7E7E7E7E7E7E6E6E6E6E6E60000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEF
+        EFEFEFEFEFECECECEAEAEAEBEBEBE9E9E9EAEAEADADADADADADADADADAB1B1B1
+        D1D1D1F4F4F4F5F5F5F8F8F8F8F8F8F9F9F9F8F8F8ECECECDDDDDDE6E6E6D1D1
+        D1DEDEDEECECECEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E7E7E7E7E7E7E1E1E1E9
+        E9E9FFFFFFFFFFFFF7F7F7D5D5D5ABABABD0D0D0F5F5F5F7F7F7F7F7F7F8F8F8
+        F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF6F6F6FCFCFCFFFFFFF4F4F4D7D7D7ADADADB6B6B6E1E1E1F9F9F9FCFCFCFE
+        FEFEFDFDFDF9F9F9F9F9F9F9F9F9FDFDFDFFFFFFFFFFFFE6E6E6E4E4E4E4E4E4
+        E8E8E8E9E9E9E9E9E9E6E6E6D2D2D2B5B5B5D7D7D7F6F6F6FFFFFFFFFFFFFFFF
+        FFFCFCFCEDEDEDEEEEEEECECECEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9DADADACB
+        CBCBBCBCBCF6F6F6FFFFFFFFFFFFF8F8F8E8E8E8E8E8E8E6E6E6E5E5E5E9E9E9
+        EBEBEBECECECECECECE9E9E9CECECED9D9D9F6F6F6FAFAFAFCFCFCFCFCFCFDFD
+        FDFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1EEEEEEEFEFEFFEFEFEFF
+        FFFFFFFFFFFFFFFFFFFFFFF8F8F8CFCFCFE1E1E1FCFCFCECECECE7E7E7E7E7E7
+        E6E6E6D5D5D5AFAFAFBABABADFDFDFF3F3F3F5F5F5F7F7F7F7F7F7F5F5F5F7F7
+        F7FCFCFCFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBF5F5F5F4F4F4F7F7F7F3F3F3F2
+        F2F2F7F7F7FBFBFBFFFFFFFFFFFFEDEDEDE7E7E7E0E0E0E2E2E2C1C1C1D5D5D5
+        F8F8F8F0F0F0F0F0F0F4F4F4F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7
+        F7F7F7F7F4F4F4D3D3D3D3D3D3D2D2D2C3C3C3BEBEBECBCBCBE7E7E7F3F3F3F2
+        F2F2F2F2F2F1F1F1F3F3F3F5F5F5F2F2F2F1F1F1F4F4F4F9F9F9FFFFFFFFFFFF
+        FFFFFFF6F6F6F6F6F6F6F6F6F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEA
+        EAE3E3E3F2F2F2F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFF1F1F1EEEEEEEDEDEDFF
+        FFFFF5F5F5F5F5F5F5F5F5FFFFFFFEFEFEEDEDEDE9E9E9E7E7E7D1D1D1A4A4A4
+        CFCFCFF8F8F8FAFAFAFFFFFFFFFFFFFFFFFFF9F9F9FDFDFDFFFFFFF6F6F6F4F4
+        F4F3F3F3F6F6F6F8F8F8F8F8F8F9F9F9FAFAFAFAFAFAE8E8E8E6E6E6E6E6E6E3
+        E3E3CFCFCFE3E3E3F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8
+        F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F8F8F8FBFBFBF9F9F9F9F9
+        F9FDFDFDFFFFFFFFFFFFEDEDEDEAEAEAE8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
+        E8E8EAEAEAE6E6E6E1E1E1D6D6D6ACACACBEBEBEE7E7E7F7F7F7F7F7F7F7F7F7
+        F9F9F9FFFFFFFFFFFFE7E7E7E7E7E7E6E6E60000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFE5E5E5E3E3E3E4E4E4C3C3C3C2C2C2D7D7D7D7D7D7E6E6E6C6C6C6BBBBBB
+        DCDCDCF1F1F1F6F6F6F8F8F8F8F8F8F9F9F9FBFBFBFDFDFDF9F9F9F5F5F5EAEA
+        EAEAEAEAF5F5F5ECECECEBEBEBEBEBEBEBEBEBE8E8E8DADADAD2D2D2D7D7D7F7
+        F7F7FFFFFFFFFFFFEAEAEABEBEBEB7B7B7DFDFDFF4F4F4F7F7F7F8F8F8FAFAFA
+        FAFAFAF9F9F9FBFBFBFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFE2E2E2D0D0D0D3D3
+        D3E6E6E6F8F8F8F7F7F7E3E3E3D4D4D4D2D2D2E0E0E0F5F5F5FEFEFEFEFEFEFE
+        FEFEFCFCFCFBFBFBFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFEAEAEAE9E9E9E9E9E9
+        E9E9E9E9E9E9E7E7E7D3D3D3B2B2B2C6C6C6E6E6E6F4F4F4FFFFFFFFFFFFFCFC
+        FCEDEDEDEDEDEDEEEEEEECECECEAEAEAEAEAEAD7D7D7C3C3C3C3C3C3B4B4B4C4
+        C4C4D7D7D7FFFFFFFFFFFFECECECE8E8E8E8E8E8E8E8E8E3E3E3E2E2E2E7E7E7
+        E9E9E9ECECECEDEDEDECECECDBDBDBE6E6E6F6F6F6F8F8F8FCFCFCFAFAFAFAFA
+        FAFCFCFCFBFBFBFFFFFFFFFFFFFDFDFDEEEEEEEEEEEEECECECF0F0F0F3F3F3F2
+        F2F2ECECECE6E6E6D6D6D6ABABABB7B7B7EEEEEEF9F9F9E9E9E9E6E6E6E2E2E2
+        D1D1D1B1B1B1BDBDBDDADADAEFEFEFF4F4F4F3F3F3F3F3F3F3F3F3F4F4F4F4F4
+        F4FDFDFDFFFFFFFFFFFFFBFBFBF8F8F8F7F7F7F4F4F4F4F4F4F5F5F5F3F3F3F5
+        F5F5F8F8F8FBFBFBFFFFFFFFFFFFEAEAEAE2E2E2DEDEDEE2E2E2D7D7D7E6E6E6
+        F1F1F1EDEDEDF2F2F2FAFAFAFBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F6F6
+        F6F7F7F7F4F4F4DDDDDDE1E1E1C0C0C0C1C1C1D6D6D6E4E4E4F4F4F4F4F4F4F5
+        F5F5F5F5F5F5F5F5F7F7F7F5F5F5F0F0F0F3F3F3F8F8F8FBFBFBFFFFFFFFFFFF
+        E4E4E4EAEAEAF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAEAEAEAD7D7
+        D7E1E1E1F1F1F1F5F5F5FFFFFFFFFFFFFFFFFFFEFEFEECECECEAEAEAE9E9E9FF
+        FFFFFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFBFBFBD7D7D7C4C4C4A6A6A6B7B7B7
+        E3E3E3F7F7F7F9F9F9FFFFFFFFFFFFF9F9F9ECECECF7F7F7E9E9E9E6E6E6F4F4
+        F4F5F5F5F7F7F7F8F8F8F8F8F8F9F9F9FBFBFBFEFEFEF9F9F9E6E6E6E5E5E5E4
+        E4E4E4E4E4E6E6E6FFFFFFFFFFFFF8F8F8F9F9F9F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7F6F6F6F7F7F7FCFCFCFDFDFDFAFAFAFBFB
+        FBFFFFFFFFFFFFFFFFFFECECECE8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E6E6E6E6
+        E6E6EAEAEAE1E1E1DFDFDFD2D2D2CDCDCDE3E3E3F8F8F8F9F9F9F9F9F9F9F9F9
+        FBFBFBFFFFFFFFFFFFE8E8E8E7E7E7E5E5E50000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFB5B5B5B8B8B8BABABAAAAAAAD1D1D1F5F5F5F5F5F5F5F5F5E1E1E1DEDEDE
+        EDEDEDF3F3F3F7F7F7F7F7F7F8F8F8F8F8F8FDFDFDFCFCFCF7F7F7F5F5F5F5F5
+        F5F5F5F5F5F5F5FFFFFFF5F5F5E9E9E9EBEBEBE9E9E9DEDEDEE8E8E8FFFFFFFF
+        FFFFFFFFFFFAFAFAEAEAEABCBCBCCBCBCBF0F0F0F4F4F4F9F9F9F8F8F8F9F9F9
+        F8F8F8F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFE8E8E8E4E4E4C2C2C2BEBEBED1D1
+        D1E6E6E6F9F9F9F7F7F7F3F3F3F3F3F3F4F4F4F3F3F3F7F7F7FCFCFCFCFCFCFB
+        FBFBFBFBFBFEFEFEFEFEFEFDFDFDFCFCFCFFFFFFFFFFFFEAEAEAEAEAEAE9E9E9
+        E9E9E9E8E8E8D7D7D7B2B2B2C2C2C2E7E7E7F5F5F5F5F5F5FFFFFFFFFFFFECEC
+        ECECECECECECECECECECEAEAEAD5D5D5C1C1C1ACACACBDBDBDD2D2D2D5D5D5E6
+        E6E6F4F4F4FFFFFFFFFFFFECECECE8E8E8E6E6E6E3E3E3E1E1E1E5E5E5EAEAEA
+        E9E9E9ECECECEDEDEDEAEAEAE9E9E9DCDCDCE9E9E9F9F9F9FCFCFCF9F9F9F9F9
+        F9FCFCFCFCFCFCFFFFFFFFFFFFECECECECECECEDEDEDEDEDEDEEEEEEEFEFEFEC
+        ECECE9E9E9E7E7E7C4C4C4B5B5B5DEDEDEFEFEFEE4E4E4D9D9D9E8E8E8D3D3D3
+        B5B5B5C6C6C6E0E0E0EDEDEDF3F3F3F5F5F5F6F6F6F6F6F6F6F6F6FBFBFBFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F5F5F5F3F3F3F4F4F4F4F4F4F6F6F6F9
+        F9F9FAFAFAF9F9F9FFFFFFFFFFFFE8E8E8E0E0E0DFDFDFE6E6E6E9E9E9D5D5D5
+        E2E2E2F5F5F5FAFAFAFFFFFFFDFDFDFBFBFBF9F9F9F8F8F8F8F8F8F7F7F7F7F7
+        F7F5F5F5EEEEEEF0F0F0F6F6F6E7E7E7E8E8E8F7F7F7F8F8F8F8F8F8F6F6F6F7
+        F7F7F7F7F7F7F7F7F7F7F7F4F4F4F2F2F2F5F5F5F9F9F9F8F8F8FDFDFDF0F0F0
+        DEDEDEECECECFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E7E7E7E8E8E8E9E9E9E4E4
+        E4E0E0E0FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0EBEBEBE9E9E9E9E9E9FF
+        FFFFEFEFEFF5F5F5F3F3F3FFFFFFF9F9F9D5D5D5AFAFAFBCBCBCC9C9C9DFDFDF
+        F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFECECECECECECEBEBEBDBDBDBE5E5E5F3F3
+        F3F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAFCFCFCF9F9F9F4F4F4D5D5D5C0
+        C0C0D4D4D4E7E7E7F9F9F9FAFAFAFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7F7F7F7
+        F5F5F5F5F5F5F6F6F6F6F6F6F8F8F8F9F9F9F9F9F9FEFEFEFDFDFDF9F9F9FAFA
+        FAFFFFFFFFFFFFFCFCFCEAEAEAE8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E4E4E4E6
+        E6E6E7E7E7E1E1E1E3E3E3EAEAEADCDCDCE7E7E7F9F9F9FAFAFAF8F8F8F9F9F9
+        F9F9F9FFFFFFFFFFFFE8E8E8E6E6E6E6E6E60000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFCACACACCCCCCCECECEE4E4E4F5F5F5F5F5F5F5F5F5F1F1F1EDEDED
+        EEEEEEF6F6F6F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F5F5F5F5F5
+        F5F3F3F3F0F0F0FFFFFFF3F3F3DCDCDCEDEDEDEBEBEBDCDCDCECECECFFFFFFFF
+        FFFFF3F3F3ECECECEAEAEABCBCBCCACACAF4F4F4F9F9F9FCFCFCFCFCFCF9F9F9
+        F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFFBFBFBE7E7E7E7E7E7D7D7D7E4E4E4F5F5
+        F5F9F9F9F9F9F9F7F7F7F6F6F6F6F6F6F6F6F6F4F4F4F6F6F6FAFAFAF9F9F9F9
+        F9F9FBFBFBFBFBFBFBFBFBF8F8F8F8F8F8FFFFFFFCFCFCEAEAEAEAEAEAE9E9E9
+        E8E8E8E6E6E6C7C7C7C2C2C2E4E4E4F6F6F6F7F7F7F7F7F7FFFFFFFFFFFFF0F0
+        F0EDEDEDEBEBEBE9E9E9D7D7D7ACACACBDBDBDD1D1D1E4E4E4F8F8F8F8F8F8F8
+        F8F8F9F9F9FFFFFFF8F8F8E9E9E9E6E6E6CECECECFCFCFE2E2E2E7E7E7EAEAEA
+        EAEAEAEAEAEAEAEAEAE8E8E8E9E9E9CCCCCCDCDCDCFFFFFFFFFFFFFFFFFFF5F5
+        F5F9F9F9F9F9F9FFFFFFFFFFFFEBEBEBEBEBEBECECECECECECECECECECECECEB
+        EBEBEAEAEAD7D7D7ABABABCACACAF3F3F3F4F4F4E6E6E6E7E7E7DADADABABABA
+        C9C9C9E8E8E8F2F2F2F1F1F1F6F6F6F8F8F8F9F9F9F9F9F9FCFCFCFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF9F9F9F5F5F5F5F5F5F3F3F3F5F5F5F5F5F5F7F7F7FA
+        FAFAFAFAFAFAFAFAFDFDFDFEFEFEE6E6E6E1E1E1E1E1E1E3E3E3E4E4E4C1C1C1
+        D4D4D4F6F6F6FCFCFCFFFFFFFDFDFDFAFAFAF8F8F8F8F8F8F8F8F8F7F7F7F8F8
+        F8F3F3F3F0F0F0F6F6F6FBFBFBFBFBFBFBFBFBFCFCFCFEFEFEFFFFFFFCFCFCF8
+        F8F8F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F7F7F7F9F9F9F8F8F8FAFAFAFFFFFF
+        FCFCFCF6F6F6FFFFFFFFFFFFF4F4F4E3E3E3E1E1E1E1E1E1E2E2E2E4E4E4CFCF
+        CFBEBEBED9D9D9FBFBFBFFFFFFFCFCFCEFEFEFEFEFEFECECECE9E9E9E9E9E9FF
+        FFFFEAEAEAEEEEEEF0F0F0EFEFEFE1E1E1CFCFCFCECECEDEDEDEEDEDEDF1F1F1
+        F7F7F7FFFFFFFFFFFFFFFFFFFCFCFCECECECECECECECECECEAEAEAD9D9D9E6E6
+        E6F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9FBFBFBF9F9F9F5F5F5E3E3E3D1
+        D1D1F4F4F4F8F8F8E8E8E8E8E8E8F7F7F7F7F7F7F3F3F3F4F4F4F6F6F6F7F7F7
+        F5F5F5F5F5F5F5F5F5F6F6F6F8F8F8F8F8F8F9F9F9FBFBFBFAFAFAF8F8F8FFFF
+        FFFFFFFFFFFFFFECECECE8E8E8E8E8E8E8E8E8E6E6E6E4E4E4E2E2E2E4E4E4E6
+        E6E6E6E6E6E2E2E2E6E6E6EAEAEACCCCCCD9D9D9F7F7F7F7F7F7F5F5F5F6F6F6
+        F6F6F6FFFFFFF8F8F8E6E6E6E6E6E6E5E5E50000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFEFEFEFF0F0F0F3F3F3F1F1F1F1F1F1F1F1F1EDEDEDEAEAEA
+        F0F0F0F8F8F8FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFCFCFCF5F5F5F4F4F4F5F5
+        F5F0F0F0EFEFEFFFFFFFD8D8D8DBDBDBE2E2E2D1D1D1C1C1C1ECECECFFFFFFF4
+        F4F4EDEDEDEAEAEAE9E9E9D3D3D3E2E2E2F9F9F9FBFBFBFDFDFDFFFFFFFFFFFF
+        FDFDFDFFFFFFFFFFFFFFFFFFFDFDFDE9E9E9E7E7E7E7E7E7E7E7E7D7D7D7E9E9
+        E9FDFDFDFDFDFDFCFCFCFCFCFCFAFAFAF8F8F8F6F6F6F8F8F8FAFAFAF8F8F8F9
+        F9F9FAFAFAF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFCFCFCECECECEFEFEF
+        EDEDEDDADADABABABAD5D5D5F4F4F4F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFF1F1
+        F1EDEDEDEBEBEBD9D9D9B0B0B0C0C0C0E6E6E6F8F8F8F8F8F8F9F9F9F8F8F8F7
+        F7F7FBFBFBF7F7F7F0F0F0D5D5D5BEBEBEA5A5A5CACACAD4D4D4C3C3C3D5D5D5
+        E8E8E8EAEAEAEAEAEAE9E9E9EBEBEBCACACADADADAFFFFFFFFFFFFCCCCCCDCDC
+        DCF4F4F4F4F4F4FFFFFFFFFFFFEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAC1C1C1BABABAE4E4E4F8F8F8F9F9F9FBFBFBF9F9F9ECECECDCDCDC
+        E7E7E7F5F5F5F2F2F2EFEFEFF4F4F4F8F8F8F8F8F8F7F7F7FFFFFFFFFFFFFFFF
+        FFFCFCFCE9E9E9E8E8E8E7E7E7D1D1D1DCDCDCF0F0F0F5F5F5F8F8F8FAFAFAFD
+        FDFDFDFDFDFDFDFDFEFEFEFDFDFDFFFFFFFBFBFBE4E4E4E4E4E4E3E3E3C2C2C2
+        D3D3D3F5F5F5FCFCFCFEFEFEFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7
+        F7F4F4F4F6F6F6FAFAFAFBFBFBFBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFEFEFEFB
+        FBFBF9F9F9F8F8F8F7F7F7F7F7F7F3F3F3F5F5F5F9F9F9F8F8F8F9F9F9FEFEFE
+        F4F4F4EEEEEEFFFFFFFFFFFFF4F4F4E4E4E4E3E3E3E4E4E4D5D5D5C5C5C5AFAF
+        AFC3C3C3DEDEDEF7F7F7F8F8F8EDEDEDECECECEEEEEEE7E7E7E2E2E2E2E2E2FF
+        FFFFF1F1F1F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F1F1F1F0F0F0F0F0F0F3F3F3
+        F7F7F7FFFFFFFFFFFFFFFFFFEEEEEEECECECECECECECECECEAEAEAC5C5C5D5D5
+        D5F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FCFCFCF9F9F9F5F5F5F5F5F5F4
+        F4F4FFFFFFFFFFFFE7E7E7E7E7E7E6E6E6E7E7E7D7D7D7E2E2E2F5F5F5F6F6F6
+        F4F4F4F4F4F4F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFF
+        FFFFFFFFFEFEFEEAEAEAE8E8E8E8E8E8E6E6E6E2E2E2E2E2E2E2E2E2E4E4E4E7
+        E7E7E7E7E7E6E6E6E8E8E8EAEAEACCCCCCD9D9D9F5F5F5F5F5F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F4F4F4D8D8D8C4C4C4D0D0D00000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF6F6F6F8F8F8F7F7F7F2F2F2F3F3F3F3F3F3F0F0F0EEEEEE
+        F4F4F4FAFAFAFAFAFAFBFBFBFFFFFFFFFFFFEEEEEEEDEDEDEBEBEBF4F4F4F5F5
+        F5F0F0F0F0F0F0F5F5F5E6E6E6EDEDEDFEFEFEFBFBFBF7F7F7FFFFFFFFFFFFEE
+        EEEEEAEAEAE9E9E9E9E9E9D4D4D4BCBCBCE2E2E2FAFAFAFEFEFEFFFFFFFDFDFD
+        FBFBFBFFFFFFFFFFFFFFFFFFECECECE9E9E9E7E7E7E7E7E7D6D6D6B5B5B5D7D7
+        D7FBFBFBF9F9F9F9F9F9FAFAFAF9F9F9F7F7F7F7F7F7F8F8F8FAFAFAF9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFEFEFEFF0F0F0
+        EAEAEAC7C7C7C6C6C6E6E6E6F5F5F5F7F7F7F8F8F8FFFFFFFFFFFFFEFEFEEEEE
+        EEE9E9E9D9D9D9B5B5B5C2C2C2E7E7E7F8F8F8F8F8F8F9F9F9FAFAFAF8F8F8F7
+        F7F7FBFBFBF3F3F3EEEEEEDEDEDEC6C6C6C3C3C3DADADAE0E0E0D2D2D2E4E4E4
+        D6D6D6C3C3C3C3C3C3C3C3C3C6C6C6B2B2B2D5D5D5FFFFFFF8F8F8C8C8C8DDDD
+        DDF3F3F3F4F4F4FFFFFFFFFFFFEAEAEAEAEAEAEBEBEBEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAC1C1C1D0D0D0F8F8F8F9F9F9FAFAFAFDFDFDFFFFFFFFFFFFFFFFFF
+        F5F5F5F5F5F5F0F0F0EEEEEEF4F4F4F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFDFD
+        FDE8E8E8E7E7E7E7E7E7D3D3D3A4A4A4C8C8C8F0F0F0F5F5F5F9F9F9FAFAFAFD
+        FDFDFEFEFEFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFE6E6E6E6E6E6E1E1E1C1C1C1
+        D5D5D5F7F7F7F9F9F9FCFCFCFAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F7F7
+        F7F8F8F8F8F8F8FBFBFBFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFFEFEFEFFFFFFFF
+        FFFFFFFFFFFFFFFFFBFBFBF9F9F9F6F6F6F6F6F6F8F8F8F6F6F6F7F7F7F9F9F9
+        F3F3F3F9F9F9FFFFFFFFFFFFF7F7F7EAEAEAEAEAEADADADAB7B7B7C3C3C3D3D3
+        D3E9E9E9F9F9F9FFFFFFF9F9F9EDEDEDECECECEEEEEED3D3D3BEBEBEBBBBBBFF
+        FFFFF0F0F0EFEFEFEFEFEFF1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F1F1F1F5F5F5
+        FFFFFFFFFFFFFFFFFFF1F1F1EDEDEDEAEAEAEAEAEAE9E9E9E7E7E7C1C1C1D3D3
+        D3F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8FBFBFBFCFCFCF8F8F8F6F6F6F6F6F6F5
+        F5F5FFFFFFFFFFFFE7E7E7E7E7E7E7E7E7E5E5E5C3C3C3D2D2D2F4F4F4F4F4F4
+        F4F4F4F3F3F3F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFF
+        FFFFFFFFECECECE8E8E8E8E8E8D5D5D5BFBFBFBEBEBEC0C0C0C6C6C6CACACADA
+        DADAE9E9E9E9E9E9EAEAEAEAEAEACDCDCDD8D8D8F5F5F5F6F6F6F5F5F5F5F5F5
+        F5F5F5F5F5F5F6F6F6E6E6E6D1D1D1DEDEDE0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFCFCFCF8F8F8F5F5F5F7F7F7F6F6F6F5F5F5F3F3F3
+        F7F7F7FAFAFAFAFAFAFDFDFDFFFFFFFFFFFFECECECEBEBEBEAEAEADBDBDBE4E4
+        E4EBEBEBEFEFEFF5F5F5F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEC
+        ECECE8E8E8E7E7E7D6D6D6A7A7A7B6B6B6E2E2E2FBFBFBFEFEFEFCFCFCFBFBFB
+        FFFFFFFFFFFFFFFFFFEEEEEEECECECEAEAEAE9E9E9E8E8E8C6C6C6C3C3C3E8E8
+        E8FAFAFAF9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F9
+        F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDE9E9E9
+        E2E2E2D2D2D2E1E1E1F4F4F4F5F5F5F7F7F7F8F8F8FFFFFFFFFFFFF0F0F0EEEE
+        EEE6E6E6CACACAC5C5C5E4E4E4F8F8F8F8F8F8F9F9F9FAFAFAF9F9F9F8F8F8F7
+        F7F7FFFFFFFFFFFFF3F3F3EDEDEDEBEBEBF0F0F0F3F3F3F5F5F5F7F7F7F5F5F5
+        E3E3E3D3D3D3D2D2D2D1D1D1D3D3D3D1D1D1E4E4E4FFFFFFE4E4E4B5B5B5DDDD
+        DDF5F5F5FBFBFBFFFFFFFFFFFFEAEAEAEBEBEBECECECECECECECECECECECECEB
+        EBEBEAEAEAC1C1C1D3D3D3F9F9F9FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFF
+        F5F5F5F3F3F3ECECECF0F0F0F7F7F7F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFE9E9
+        E9D5D5D5C1C1C1C1C1C1A8A8A8B1B1B1DFDFDFF4F4F4F7F7F7FBFBFBFBFBFBFE
+        FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE6E6E6DFDFDFD4D4D4
+        E9E9E9F9F9F9F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9
+        F9FAFAFAF9F9F9FAFAFAFEFEFEFDFDFDFFFFFFFFFFFFFEFEFEFCFCFCFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F6F6F6F8F8F8F9F9F9
+        F9F9F9FFFFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAC8C8C8C3C3C3E5E5E5F4F4
+        F4F8F8F8F7F7F7F7F7F7F7F7F7E2E2E2D4D4D4D0D0D0B5B5B5BABABAD2D2D2FF
+        FFFFF4F4F4F2F2F2F2F2F2F4F4F4F3F3F3F3F3F3F4F4F4F4F4F4FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF0F0F0ECECECE9E9E9E8E8E8E8E8E8E7E7E7C1C1C1D3D3
+        D3F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFCFCFCF8F8F8F7F7F7F7F7F7F5
+        F5F5FFFFFFFFFFFFE9E9E9E9E9E9E7E7E7E3E3E3BEBEBED0D0D0F1F1F1F2F2F2
+        F2F2F2F4F4F4F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFF
+        FFFDFDFDEAEAEAE8E8E8D6D6D6ABABABB9B9B9CECECED1D1D1D7D7D7D7D7D7E3
+        E3E3D6D6D6C5C5C5C5C5C5C8C8C8BABABAD6D6D6F5F5F5F5F5F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F4F4F4F1F1F1EFEFEFF0F0F00000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF9F9F9FAFAFAFAFAFAF8F8F8F8F8F8F7F7F7
+        F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFECECECEAEAEAEAEAEACCCCCCD1D1
+        D1EDEDEDF3F3F3F7F7F7FEFEFEFFFFFFFFFFFFF8F8F8E3E3E3E7E7E7E9E9E9E9
+        E9E9E6E6E6D5D5D5ACACACB7B7B7DFDFDFF4F4F4F7F7F7FBFBFBFBFBFBFBFBFB
+        FFFFFFFFFFFFFDFDFDEBEBEBECECECEBEBEBE9E9E9E8E8E8C7C7C7D5D5D5F8F8
+        F8FBFBFBFAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F9F9F9FBFBFBFDFDFDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF0F0F0F4F4F4EEEEEEE6E6E6
+        E3E3E3E3E3E3DADADAE7E7E7F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFF1F1F1EEEE
+        EEDDDDDDC3C3C3DBDBDBF6F6F6FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7
+        F7F7FFFFFFFBFBFBE1E1E1EEEEEEF1F1F1FAFAFAFBFBFBFAFAFAFAFAFAF8F8F8
+        F8F8F8F8F8F8F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7E1E1E1C9C9C9DDDD
+        DDF5F5F5FAFAFAFFFFFFFFFFFFE9E9E9EAEAEAEAEAEAEAEAEAECECECECECECEB
+        EBEBEAEAEAC4C4C4D6D6D6FCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFEEEEEE
+        EFEFEFF4F4F4EEEEEEF3F3F3F7F7F7F7F7F7F8F8F8FAFAFAFFFFFFEAEAEABFBF
+        BFA9A9A9B7B7B7CBCBCBC6C6C6DADADAF3F3F3F7F7F7F9F9F9FBFBFBFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E2E2E1E1E1E1E1E1
+        E9E9E9FFFFFFFFFFFFF8F8F8F7F7F7F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFBFB
+        FBFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFEFEFEFBFBFBFFFFFFFFFFFFFF
+        FFFFFFFFFFF9F9F9FCFCFCFFFFFFFFFFFFE4E4E4D9D9D9F5F5F5FBFBFBFBFBFB
+        FCFCFCFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAE7E7E7C5C5C5D5D5D5F7F7F7F7F7
+        F7F8F8F8F9F9F9F8F8F8F7F7F7EAEAEAD9D9D9D7D7D7D3D3D3E6E6E6FCFCFCFF
+        FFFFFCFCFCF9F9F9F7F7F7F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFDFDFDEFEFEFEDEDEDE9E9E9E8E8E8E8E8E8E8E8E8E8E8E8D2D2D2E2E2
+        E2F7F7F7F9F9F9F9F9F9F8F8F8F9F9F9FCFCFCFCFCFCF8F8F8F7F7F7FFFFFFFF
+        FFFFFFFFFFFFFFFFEAEAEAE8E8E8E6E6E6D0D0D0A6A6A6CECECEF0F0F0F3F3F3
+        F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8
+        F8F9F9F9D8D8D8C0C0C0A9A9A9B6B6B6DFDFDFF4F4F4F5F5F5F7F7F7F5F5F5F1
+        F1F1E1E1E1D1D1D1D4D4D4D6D6D6D7D7D7E5E5E5F5F5F5F5F5F5F5F5F5F5F5F5
+        F5F5F5F3F3F3F0F0F0F0F0F0F2F2F2F3F3F30000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFFCFCFCFBFBFBF8F8F8F8F8F8F8F8F8
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBEAEAEAEAEAEADCDCDCDFDF
+        DFECECECF1F1F1F7F7F7FEFEFEFFFFFFFFFFFFF6F6F6E1E1E1E4E4E4E7E7E7E7
+        E7E7D1D1D1ABABABB6B6B6DCDCDCF0F0F0F4F4F4F7F7F7F9F9F9FAFAFAFBFBFB
+        FFFFFFFFFFFFFEFEFEF1F1F1EDEDEDEAEAEAE9E9E9E9E9E9C8C8C8D7D7D7F7F7
+        F7F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FBFBFBFCFCFCFFFFFFFF
+        FFFFFFFFFFFDFDFDF1F1F1EFEFEFEDEDEDEEEEEEF1F1F1F9F9F9F4F4F4EAEAEA
+        E7E7E7E7E7E7DADADAE7E7E7F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEDED
+        EDDFDFDFD9D9D9F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFCFCFCF7F7F7FFFFFFF2F2F2F9F9F9F9F9F9F9F9F9F9F9F9FBFBFB
+        FBFBFBFCFCFCFCFCFCFCFCFCFBFBFBF8F8F8F8F8F8F9F9F9F8F8F8F6F6F6F5F5
+        F5F7F7F7F9F9F9FBFBFBFFFFFFFDFDFDEAEAEAEBEBEBEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAC7C7C7D7D7D7FAFAFAFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFE9E9E9
+        ECECECD3D3D3DEDEDEF5F5F5F7F7F7F7F7F7F9F9F9F9F9F9F8F8F8E3E3E3D0D0
+        D0CACACADCDCDCF0F0F0EFEFEFF1F1F1F5F5F5F7F7F7F8F8F8FAFAFAFFFFFFFF
+        FFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFF8F8F8E4E4E4E4E4E4E0E0E0
+        E1E1E1E6E6E6DDDDDDEAEAEAF8F8F8F9F9F9F9F9F9F9F9F9F9F9F9FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
+        FCFCE7E7E7E3E3E3E3E3E3E5E5E5CACACA898989BABABAF3F3F3FBFBFBFCFCFC
+        FCFCFCFFFFFFFFFFFFFFFFFFEBEBEBE6E6E6D5D5D5B7B7B7D8D8D8F7F7F7F7F7
+        F7F9F9F9FAFAFAF7F7F7F5F5F5F4F4F4F2F2F2F1F1F1F2F2F2F7F7F7FCFCFCFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB
+        F0F0F0EDEDEDDEDEDECCCCCCDADADAE8E8E8E8E8E8E8E8E8E6E6E6CECECEC0C0
+        C0E7E7E7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDF9F9F9FFFFFFFFFFFFFF
+        FFFFFFFFFFFCFCFCE9E9E9E7E7E7E7E7E7BBBBBBB4B4B4DEDEDEF3F3F3F7F7F7
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8F7F7F7F7F7F7F8F8F8F8F8
+        F8FAFAFAE9E9E9CDCDCDCCCCCCE1E1E1F4F4F4F7F7F7F7F7F7F7F7F7F6F6F6F3
+        F3F3F3F3F3F5F5F5F7F7F7F8F8F8F7F7F7F7F7F7F5F5F5F5F5F5F5F5F5F4F4F4
+        F1F1F1F1F1F1F0F0F0F3F3F3F7F7F7F7F7F70000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFEFEFEFAFAFAFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDEAEAEAEAEAEAEAEAEAD9D9D9BCBC
+        BCDBDBDBF3F3F3F9F9F9FFFFFFFFFFFFFFFFFFF8F8F8E4E4E4E4E4E4E7E7E7CF
+        CFCFA1A1A1B6B6B6DCDCDCF1F1F1F6F6F6F8F8F8FAFAFAFAFAFAFAFAFAFAFAFA
+        FFFFFFFFFFFFFFFFFFF2F2F2EDEDEDE9E9E9E8E8E8D7D7D7B4B4B4D2D2D2F4F4
+        F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FCFCFCFFFFFFFFFFFFFF
+        FFFFF9F9F9EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEF4F4F4F8F8F8F3F3F3EAEAEA
+        EAEAEAEAEAEAE9E9E9EAEAEAF5F5F5FFFFFFFFFFFFFFFFFFF8F8F8ECECECEDED
+        EDEDEDEDE9E9E9FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF2F2F2F8F8F8FFFFFFFF
+        FFFFFFFFFFFCFCFCFBFBFBF7F7F7F6F6F6F9F9F9F9F9F9FAFAFAFBFBFBFCFCFC
+        FBFBFBFFFFFFFFFFFFFCFCFCFBFBFBF9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F5F5
+        F5F7F7F7FAFAFAFBFBFBFFFFFFFFFFFFEDEDEDEEEEEEEAEAEAEAEAEAEBEBEBEB
+        EBEBEAEAEAD9D9D9E6E6E6F8F8F8F9F9F9FAFAFAFFFFFFFFFFFFF3F3F3E5E5E5
+        E4E4E4B7B7B7CBCBCBF7F7F7F8F8F8F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7
+        F7F3F3F3F3F3F3F5F5F5F3F3F3F2F2F2EFEFEFF6F6F6FAFAFAFEFEFEFFFFFFFF
+        FFFFFDFDFDF0F0F0EDEDEDFCFCFCFFFFFFFAFAFAE7E7E7E6E6E6E3E3E3DCDCDC
+        D1D1D1BFBFBFCECECEE9E9E9F8F8F8FAFAFAFAFAFAFAFAFAFAFAFAFFFFFFFFFF
+        FFFFFFFFF9F9F9F0F0F0F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE8
+        E8E8E6E6E6E4E4E4E3E3E3E1E1E1A8A8A8A2A2A2D9D9D9F9F9F9FCFCFCFDFDFD
+        FFFFFFFFFFFFFFFFFFF1F1F1ECECECE1E1E1C6C6C6CACACAE9E9E9F7F7F7F7F7
+        F7F9F9F9F9F9F9F6F6F6F5F5F5F3F3F3F1F1F1F1F1F1F4F4F4F7F7F7FBFBFBFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF0F0F0EEEEEE
+        EDEDEDEBEBEBCFCFCFCACACAE7E7E7D9D9D9C5C5C5D3D3D3E1E1E1D0D0D0E2E2
+        E2F7F7F7FBFBFBFEFEFEFEFEFEFCFCFCFDFDFDFBFBFBFAFAFAFFFFFFFFFFFFFF
+        FFFFECECECE8E8E8E5E5E5D0D0D0B7B7B79A9A9AC6C6C6F3F3F3F7F7F7F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8F8F8F8F8F8
+        F8F9F9F9F9F9F9F5F5F5F4F4F4F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F4F4F4F3
+        F3F3F5F5F5F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F4F4F4F3F3F3F1F1F1
+        F1F1F1F2F2F2F4F4F4F7F7F7F7F7F7F6F6F60000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFDFDFDFFFFFFFFFFFFFFFFFF
+        FFFFFFF9F9F9EAEAEAEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAC4C4C4B7B7
+        B7DFDFDFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFE6E6E6E4E4E4E4E4E4CECECE9D
+        9D9DB6B6B6E3E3E3F6F6F6F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFCFCFC
+        FFFFFFFFFFFFFEFEFEEFEFEFEAEAEAD7D7D7C4C4C4B2B2B2C1C1C1E2E2E2F4F4
+        F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FBFBFBFEFEFEFFFFFFFFFFFFF9
+        F9F9ECECECEAEAEAEBEBEBEDEDEDEDEDEDF3F3F3F7F7F7F3F3F3EBEBEBE7E7E7
+        E8E8E8E9E9E9E9E9E9E9E9E9DCDCDCFCFCFCFFFFFFEBEBEBEBEBEBEDEDEDEEEE
+        EEEEEEEEEEEEEEFCFCFCFBFBFBF0F0F0F1F1F1EEEEEEEFEFEFF5F5F5F3F3F3ED
+        EDEDE9E9E9E7E7E7E7E7E7E7E7E7E4E4E4F7F7F7FAFAFAFBFBFBFBFBFBFDFDFD
+        FFFFFFFFFFFFFFFFFFFCFCFCFAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F5F5F5F5F5
+        F5F7F7F7F7F7F7F9F9F9FBFBFBFCFCFCEFEFEFEEEEEEEDEDEDEDEDEDEDEDEDEC
+        ECECEAEAEAEAEAEAD9D9D9E7E7E7F8F8F8F8F8F8FFFFFFFFFFFFE4E4E4DDDDDD
+        DFDFDFCBCBCBF1F1F1FFFFFFFFFFFFFBFBFBF8F8F8F7F7F7F7F7F7F6F6F6F5F5
+        F5F4F4F4F4F4F4F4F4F4F5F5F5F1F1F1F4F4F4FEFEFEFEFEFEFFFFFFFFFFFFFF
+        FFFFEDEDEDEAEAEAEAEAEAECECECF0F0F0EDEDEDD7D7D7C3C3C3BEBEBEBCBCBC
+        B7B7B7CDCDCDE9E9E9F3F3F3F4F4F4F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFF
+        FFEDEDEDEEEEEEF0F0F0F0F0F0F1F1F1F2F2F2EEEEEEEBEBEBEAEAEAEAEAEAE8
+        E8E8E6E6E6E4E4E4E2E2E2CACACA929292C6C6C6F7F7F7FAFAFAFBFBFBFFFFFF
+        FFFFFFFFFFFFFFFFFFEDEDEDE9E9E9D4D4D4BEBEBEDEDEDEF7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F7F7F7F5F5F5F8F8F8FFFFFFFFFFFFFF
+        FFFFFBFBFBF8F8F8F5F5F5F6F6F6F0F0F0EBEBEBEBEBEBEBEBEBEBEBEBE9E9E9
+        E8E8E8DCDCDCC1C1C1D9D9D9F4F4F4E6E6E6E2E2E2FEFEFEF4F4F4E7E7E7FAFA
+        FAFCFCFCF9F9F9FEFEFEFDFDFDF9F9F9F9F9F9FAFAFAFAFAFAFFFFFFFFFFFFED
+        EDEDE9E9E9E4E4E4E1E1E1B6B6B6AFAFAFC7C7C7DFDFDFF7F7F7F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8
+        F8F9F9F9FAFAFAF8F8F8F9F9F9FBFBFBFCFCFCF8F8F8F5F5F5F7F7F7F4F4F4F5
+        F5F5F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F7F7F7F5F5F5F4F4F4F4F4F4
+        F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F70000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        EBEBEBE9E9E9E9E9E9EAEAEAEAEAEAD9D9D9C6C6C6C6C6C6C4C4C4ABABABCBCB
+        CBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E6E6E6E5E5E5CDCDCD9C9C9CB6
+        B6B6E6E6E6FBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFDFDFDFCFCFCFCFCFCFEFEFE
+        FFFFFFFFFFFFFCFCFCF9F9F9D7D7D7AFAFAFC0C0C0D4D4D4E5E5E5F5F5F5F5F5
+        F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFEA
+        EAEAEAEAEAECECECECECECEBEBEBEBEBEBEEEEEEF0F0F0F0F0F0EEEEEEEDEDED
+        E9E9E9E7E7E7E9E9E9E9E9E9CACACAE1E1E1E6E6E6DBDBDBECECECEFEFEFEEEE
+        EEECECECECECECEBEBEBE9E9E9EAEAEAECECECEAEAEAECECECF2F2F2EEEEEEE9
+        E9E9E9E9E9E7E7E7E7E7E7E6E6E6D0D0D0BBBBBBE7E7E7FDFDFDFFFFFFFFFFFF
+        FFFFFFFFFFFFF4F4F4EDEDEDF8F8F8F8F8F8F8F8F8F9F9F9FBFBFBF8F8F8F6F6
+        F6F7F7F7F8F8F8F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFF0F0F0EDEDEDEAEAEAE8
+        E8E8E9E9E9E5E5E5CFCFCFE2E2E2F7F7F7F9F9F9FFFFFFF0F0F0DADADAD4D4D4
+        D1D1D1E0E0E0F9F9F9FFFFFFFFFFFFF9F9F9F8F8F8F8F8F8F7F7F7F4F4F4F4F4
+        F4F3F3F3F4F4F4F3F3F3F3F3F3F0F0F0F8F8F8FFFFFFFCFCFCFFFFFFFFFFFFFF
+        FFFFE7E7E7EAEAEAEAEAEAE8E8E8EBEBEBE7E7E7BFBFBFB7B7B7CACACACECECE
+        D7D7D7E6E6E6F3F3F3F2F2F2F2F2F2F4F4F4F4F4F4F4F4F4F5F5F5FFFFFFF8F8
+        F8EDEDEDEEEEEEEEEEEEECECECECECECEEEEEEECECECE9E9E9E9E9E9E9E9E9E7
+        E7E7E6E6E6E4E4E4CECECEA0A0A0B3B3B3E1E1E1F7F7F7F8F8F8F8F8F8FBFBFB
+        FDFDFDFFFFFFFFFFFFF1F1F1EDEDEDCBCBCBD0D0D0EDEDEDF7F7F7F7F7F7F7F7
+        F7F7F7F7F8F8F8F5F5F5F3F3F3F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF5F5F5F0F0F0ECECECECECECEAEAEAEAEAEAE9E9E9E9E9E9ECECECEAEAEA
+        D9D9D9C1C1C1CECECEE6E6E6F4F4F4F6F6F6FFFFFFFFFFFFF8F8F8EAEAEAEAEA
+        EAEAEAEADEDEDEECECECF9F9F9F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFE7
+        E7E7E2E2E2DDDDDDDEDEDEB4B4B4C6C6C6F3F3F3F7F7F7F9F9F9FAFAFAFAFAFA
+        FAFAFAFAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8
+        F8F9F9F9FAFAFAF8F8F8FBFBFBFCFCFCFAFAFAF7F7F7F5F5F5F6F6F6F4F4F4F5
+        F5F5F7F7F7F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBF8F8F8F7F7F7F7F7F7F7F7F7
+        FFFFFFFFFFFFFFFFFFF7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFEEEEEE
+        EAEAEAE9E9E9EAEAEAEAEAEAD9D9D9B2B2B2C1C1C1D2D2D2D0D0D0D0D0D0E1E1
+        E1FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E9E9E9E7E7E7E6E6E6B5B5B5B3B3B3E6
+        E6E6FBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFDFDFDFFFFFFFDFDFDFCFCFCFEFEFE
+        FFFFFFFEFEFEFCFCFCF8F8F8E4E4E4D1D1D1E4E4E4F5F5F5F5F5F5F5F5F5F5F5
+        F5F3F3F3F4F4F4F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFF9F9F9EA
+        EAEAECECECECECECEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9ECECECF0F0F0EEEEEE
+        EAEAEAE9E9E9E9E9E9E9E9E9C8C8C8E6E6E6FFFFFFFFFFFFFDFDFDEFEFEFEDED
+        EDEAEAEAE9E9E9E8E8E8E8E8E8EAEAEAEAEAEAE8E8E8EBEBEBF2F2F2EEEEEEE9
+        E9E9E9E9E9E7E7E7E7E7E7E4E4E4CECECEC8C8C8EBEBEBFFFFFFFFFFFFFFFFFF
+        FFFFFFFDFDFDD0D0D0DADADAF6F6F6F8F8F8F8F8F8FBFBFBFBFBFBF7F7F7F9F9
+        F9F9F9F9F6F6F6F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFEBEBEBE4E4E4E2E2E2E4
+        E4E4E3E3E3D0D0D0D4D4D4DBDBDBEAEAEAF9F9F9F7F7F7E9E9E9E6E6E6D1D1D1
+        D9D9D9EAEAEAEAEAEADDDDDDDDDDDDDADADAEAEAEAF7F7F7F3F3F3F2F2F2F4F4
+        F4F5F5F5F5F5F5F4F4F4F5F5F5F6F6F6FAFAFAFEFEFEFAFAFAFFFFFFFFFFFFF5
+        F5F5E4E4E4E8E8E8E8E8E8E7E7E7E7E7E7D2D2D2A8A8A8C9C9C9EBEBEBEFEFEF
+        F3F3F3F5F5F5F5F5F5F3F3F3F3F3F3F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F5F5
+        F5E1E1E1E2E2E2ECECECDFDFDFD5D5D5D5D5D5D0D0D0D8D8D8E7E7E7E7E7E7E6
+        E6E6E5E5E5E5E5E5BCBCBCB8B8B8E2E2E2F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8
+        FBFBFBFFFFFFFBFBFBE5E5E5ECECECCACACADCDCDCF9F9F9F7F7F7F7F7F7F7F7
+        F7F7F7F7F5F5F5F3F3F3F2F2F2F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFF
+        FFFFECECECEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEDEDEDDCDCDCDFDFDFDFDFDF
+        C1C1C1D3D3D3ECECECF3F3F3F5F5F5F5F5F5F0F0F0EEEEEED4D4D4C4C4C4C9C9
+        C9CDCDCDBEBEBEDADADAF6F6F6F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFF6F6F6E3
+        E3E3E1E1E1C8C8C8AFAFAF999999CBCBCBF9F9F9FCFCFCFDFDFDFDFDFDFDFDFD
+        FFFFFFFFFFFFFDFDFDF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9
+        F9FAFAFAFAFAFAF8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFEFEFEF2F2F2F4F4F4F4
+        F4F4F6F6F6F9F9F9FAFAFAFAFAFAFBFBFBF9F9F9F7F7F7F7F7F7F7F7F7FFFFFF
+        FFFFFFFFFFFFFFFFFFF9F9F9F6F6F60000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFECECEC
+        E9E9E9E9E9E9E8E8E8D6D6D6B1B1B1C1C1C1E4E4E4F3F3F3F4F4F4F4F4F4F6F6
+        F6FFFFFFFFFFFFFFFFFFF9F9F9E8E8E8E5E5E5E5E5E5CECECE9B9B9BCECECEFB
+        FBFBFBFBFBFBFBFBFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF
+        FEFEFEFBFBFBF8F8F8F7F7F7F5F5F5F6F6F6F6F6F6F5F5F5F5F5F5FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF9F9F9F7F7F7FCFCFCFFFFFFFFFFFFFCFCFCECECECEB
+        EBEBECECECEAEAEAEAEAEAECECECDDDDDDCCCCCCCACACACBCBCBDBDBDBEBEBEB
+        EAEAEAE6E6E6D5D5D5C5C5C5B5B5B5E7E7E7FCFCFCFCFCFCFCFCFCEDEDEDEDED
+        EDE9E9E9E7E7E7E7E7E7E9E9E9EAEAEAE9E9E9E9E9E9EBEBEBF0F0F0EDEDEDE9
+        E9E9E9E9E9E7E7E7E7E7E7E2E2E2E0E0E0E3E3E3FFFFFFFFFFFFFFFFFFFFFFFF
+        EBEBEBDBDBDBBFBFBFDADADAF6F6F6F8F8F8F8F8F8F9F9F9F8F8F8F5F5F5F5F5
+        F5F3F3F3F4F4F4F7F7F7FBFBFBFCFCFCFFFFFFE9E9E9C0C0C0BABABABABABABD
+        BDBDBDBDBDB5B5B5D5D5D5CECECEDADADAF5F5F5F3F3F3F0F0F0F3F3F3EAEAEA
+        F3F3F3FDFDFDE9E9E9C9C9C9E8E8E8E7E7E7E7E7E7F2F2F2EFEFEFF3F3F3F5F5
+        F5F4F4F4F4F4F4F3F3F3F7F7F7F7F7F7FBFBFBFFFFFFFAFAFAF8F8F8F9F9F9E5
+        E5E5E1E1E1E6E6E6E6E6E6E4E4E4E6E6E6BFBFBFBBBBBBE4E4E4F4F4F4F5F5F5
+        F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2F2F2F2F4F4F4F4F4F4F4F4F4F6F6F6F7F7
+        F7EAEAEAEAEAEAE1E1E1C9C9C9D1D1D1DCDCDCD7D7D7E2E2E2E8E8E8E6E6E6E6
+        E6E6E7E7E7E7E7E7C1C1C1D0D0D0F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8
+        FFFFFFFFFFFFF1F1F1E2E2E2E6E6E6C6C6C6E0E0E0FBFBFBF9F9F9F9F9F9F8F8
+        F8F5F5F5F1F1F1F4F4F4F3F3F3F5F5F5FFFFFFFFFFFFEEEEEEEBEBEBE8E8E8FF
+        FFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBECECECC9C9C9D6D6D6CECECE
+        CCCCCCECECECF7F7F7F4F4F4F5F5F5F5F5F5EEEEEEEEEEEEE3E3E3D5D5D5DBDB
+        DBDDDDDDD9D9D9E6E6E6F4F4F4F4F4F4F5F5F5F5F5F5F4F4F4F1F1F1D9D9D9C5
+        C5C5BABABA969696ACACACC8C8C8E4E4E4FCFCFCFBFBFBFBFBFBFAFAFAFCFCFC
+        FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF8F8F8F8F8F8F8F8F8F9F9F9FCFC
+        FCFBFBFBF9F9F9F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFE4E4E4E2E2E2F4F4F4F5
+        F5F5F8F8F8FAFAFAFAFAFAFAFAFAF9F9F9F7F7F7F7F7F7F7F7F7F8F8F8FFFFFF
+        FFFFFFFFFFFFF0F0F0E9E9E9F2F2F20000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEBEBEB
+        E9E9E9E7E7E7E1E1E1BCBCBCBFBFBFE5E5E5F4F4F4F4F4F4F5F5F5F7F7F7F9F9
+        F9FFFFFFFFFFFFE7E7E7E7E7E7E6E6E6E3E3E3E2E2E2B5B5B5B3B3B3E6E6E6FB
+        FBFBFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFBFBFB
+        F9F9F9F7F7F7F8F8F8F7F7F7F5F5F5F7F7F7F7F7F7F5F5F5F5F5F5FFFFFFFFFF
+        FFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDE9E9E9EA
+        EAEAEAEAEAE9E9E9ECECECEDEDEDCACACAC1C1C1D3D3D3D5D5D5E4E4E4D9D9D9
+        C0C0C0B7B7B7A7A7A7BFBFBFD5D5D5E7E7E7E9E9E9F9F9F9FDFDFDEEEEEEECEC
+        ECE7E7E7E7E7E7E9E9E9EAEAEAEAEAEAE9E9E9E9E9E9DEDEDED3D3D3CFCFCFDB
+        DBDBE9E9E9E7E7E7E7E7E7E2E2E2E1E1E1E5E5E5F9F9F9FFFFFFFBFBFBEAEAEA
+        D8D8D8B5B5B5C8C8C8EAEAEAF7F7F7F8F8F8F8F8F8F8F8F8F6F6F6F3F3F3EEEE
+        EEEDEDEDF3F3F3F7F7F7F9F9F9F9F9F9F4F4F4E3E3E3D2D2D2CFCFCFCFCFCFD1
+        D1D1D3D3D3D6D6D6E5E5E5E5E5E5E8E8E8F5F5F5F4F4F4F4F4F4F6F6F6F8F8F8
+        FDFDFDF9F9F9EAEAEADDDDDDFDFDFDFFFFFFEBEBEBEFEFEFEFEFEFF4F4F4F6F6
+        F6F3F3F3F3F3F3F5F5F5F8F8F8F9F9F9FDFDFDFEFEFEF9F9F9F8F8F8FAFAFAF5
+        F5F5E7E7E7E6E6E6E4E4E4E6E6E6D6D6D6A9A9A9D3D3D3FBFBFBF9F9F9F8F8F8
+        F7F7F7F5F5F5F5F5F5F4F4F4F1F1F1F2F2F2F5F5F5F1F1F1F2F2F2F7F7F7F7F7
+        F7F7F7F7F5F5F5ECECECDFDFDFEBEBEBF5F5F5F4F4F4F3F3F3FFFFFFF6F6F6E9
+        E9E9EAEAEAEAEAEAC3C3C3D2D2D2F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8
+        FFFFFFFFFFFFEFEFEFEDEDEDF1F1F1E2E2E2F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F0F0F0F4F4F4F4F4F4F8F8F8FFFFFFFFFFFFE9E9E9E7E7E7E7E7E7FF
+        FFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEADADADAB2B2B2D3D3D3E8E8E8
+        EAEAEAF7F7F7F5F5F5F5F5F5F5F5F5F2F2F2EDEDEDF1F1F1F8F8F8F8F8F8FAFA
+        FAF7F7F7F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F0F0F0EDEDEDE9E9E9DBDBDBC3
+        C3C3C2C2C2C8C8C8E1E1E1F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEDEDEDFBFBFBFAFAFAF8F8F8FAFAFAFBFB
+        FBF9F9F9F8F8F8F7F7F7F9F9F9F8F8F8F4F4F4DADADAB6B6B6D5D5D5F4F4F4F6
+        F6F6F9F9F9FAFAFAFAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8FFFFFF
+        FFFFFFEDEDEDE9E9E9D2D2D2C1C1C10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        E7E7E7E6E6E6CACACAA1A1A1D0D0D0F5F5F5F3F3F3F4F4F4F7F7F7F8F8F8FFFF
+        FFFFFFFFFFFFFFE6E6E6E5E5E5E5E5E5E2E2E2E2E2E2D1D1D1F9F9F9FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8F8F8F8F6F6F6F6F6F6
+        F7F7F7F7F7F7F9F9F9F8F8F8F6F6F6F8F8F8F7F7F7F5F5F5F8F8F8FFFFFFFFFF
+        FFEBEBEBEAEAEAEAEAEAF7F7F7FFFFFFFFFFFFFFFFFFF9F9F9ECECECEAEAEAEA
+        EAEAEAEAEAE9E9E9EAEAEAE8E8E8C1C1C1D0D0D0F3F3F3F3F3F3F1F1F1DEDEDE
+        C0C0C0C2C2C2CCCCCCE4E4E4F8F8F8F9F9F9FAFAFAFFFFFFFFFFFFEBEBEBE8E8
+        E8E4E4E4E7E7E7EAEAEAE9E9E9E9E9E9E8E8E8D9D9D9BEBEBECACACAD8D8D8F7
+        F7F7F8F8F8E7E7E7E7E7E7E5E5E5E4E4E4E7E7E7EAEAEAEBEBEBEBEBEBE7E7E7
+        C3C3C3C1C1C1E7E7E7F9F9F9F7F7F7F8F8F8F9F9F9F8F8F8F6F6F6F2F2F2EEEE
+        EEF1F1F1F5F5F5F6F6F6F8F8F8F8F8F8F5F5F5F6F6F6F8F8F8F5F5F5FFFFFFFF
+        FFFFF7F7F7F7F7F7F5F5F5F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F7F7F7F9F9F9
+        FCFCFCF7F7F7F1F1F1F0F0F0FFFFFFFFFFFFEAEAEAE6E6E6EBEBEBF0F0F0F5F5
+        F5F3F3F3F5F5F5F8F8F8F9F9F9FBFBFBFDFDFDFDFDFDF9F9F9F8F8F8FAFAFAFA
+        FAFAF7F7F7EAEAEADBDBDBCDCDCDCCCCCCD4D4D4ECECECFFFFFFF9F9F9F8F8F8
+        F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F6F6F6F7F7F7F3F3F3F4F4F4F7F7F7F4F4
+        F4F4F4F4F5F5F5F7F7F7F5F5F5F6F6F6F6F6F6F1F1F1EDEDEDFEFEFEEBEBEBDC
+        DCDCEAEAEAD7D7D7AFAFAFD3D3D3F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FFFFFF
+        FFFFFFFFFFFFEBEBEBECECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDED
+        EDE1E1E1F1F1F1F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFE7E7E7E7E7E7E7E7E7FF
+        FFFFEAEAEAEBEBEBECECECEBEBEBEAEAEAEAEAEAC8C8C8C1C1C1E6E6E6FBFBFB
+        FFFFFFFAFAFAF7F7F7F5F5F5F3F3F3EEEEEEEEEEEEF3F3F3F7F7F7F5F5F5F7F7
+        F7F5F5F5F0F0F0EFEFEFF0F0F0F0F0F0F0F0F0EBEBEBE8E8E8E7E7E7E9E9E9EA
+        EAEAEEEEEEF7F7F7FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF8F8F8EAEAEADDDDDDE9E9E9F9F9F9F8F8F8F9F9F9FCFCFCFBFB
+        FBF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F2F2F2DFDFDFD2D2D2E5E5E5F5F5F5F7
+        F7F7F9F9F9FBFBFBFBFBFBF9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7FFFFFF
+        ECECECCDCDCDC9C9C9B3B3B3C0C0C00000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        B4B4B4B2B2B2939393AFAFAFE1E1E1F3F3F3F4F4F4F5F5F5F8F8F8F9F9F9FFFF
+        FFFFFFFFFDFDFDE7E7E7E6E6E6E6E6E6E4E4E4E6E6E6EAEAEAFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F7F7F7F7F7F7F8F8F8F5F5F5F5F5F5
+        F7F7F7F9F9F9FBFBFBF9F9F9F8F8F8F8F8F8F7F7F7F8F8F8FFFFFFFFFFFFFFFF
+        FFEDEDEDEAEAEAE9E9E9EAEAEAEBEBEBECECECEBEBEBD9D9D9C6C6C6C3C3C3D9
+        D9D9ECECECE9E9E9E9E9E9E6E6E6C3C3C3D8D8D8F7F7F7F0F0F0ECECECE9E9E9
+        E7E7E7EEEEEEF5F5F5F8F8F8F9F9F9FCFCFCFDFDFDFFFFFFFDFDFDE9E9E9E7E7
+        E7E7E7E7E8E8E8E8E8E8E9E9E9D9D9D9C8C8C8B7B7B7C8C8C8E5E5E5F4F4F4FF
+        FFFFFFFFFFEBEBEBE9E9E9E7E7E7E2E2E2E5E5E5EAEAEAEBEBEBDEDEDECCCCCC
+        B6B6B6D8D8D8F9F9F9FBFBFBF8F8F8F7F7F7F8F8F8F5F5F5F4F4F4F4F4F4F0F0
+        F0F4F4F4F5F5F5F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7F8F8F8FFFFFFFFFFFFFF
+        FFFFF7F7F7F7F7F7F6F6F6F5F5F5F6F6F6F6F6F6F7F7F7F8F8F8F9F9F9FDFDFD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE4E4E4CFCFCFE0E0E0F4F4
+        F4F4F4F4F7F7F7F9F9F9FAFAFAFCFCFCFDFDFDFCFCFCF9F9F9F8F8F8FAFAFAF8
+        F8F8F5F5F5F8F8F8D5D5D5DFDFDFFFFFFFFDFDFDFCFCFCFCFCFCF9F9F9F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F4F4F4F7F7F7F7F7F7F6F6
+        F6F5F5F5F7F7F7F9F9F9F7F7F7F7F7F7F5F5F5F1F1F1F0F0F0F7F7F7EBEBEBE4
+        E4E4E7E7E7C4C4C4C0C0C0E6E6E6F8F8F8F8F8F8F6F6F6F4F4F4F6F6F6FFFFFF
+        FFFFFFFDFDFDEBEBEBEBEBEBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DCDC
+        DCE1E1E1F2F2F2F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFE7E7E7E7E7E7E7E7E7FF
+        FFFFEBEBEBEDEDEDEDEDEDEAEAEAEAEAEADADADAB4B4B4D3D3D3F5F5F5FBFBFB
+        FBFBFBF6F6F6F4F4F4F2F2F2EFEFEFEDEDEDF1F1F1F5F5F5F6F6F6F6F6F6F6F6
+        F6F8F8F8F4F4F4F0F0F0F1F1F1F0F0F0EDEDEDE9E9E9ECECECF1F1F1F4F4F4F7
+        F7F7F9F9F9F9F9F9FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFE7E7E7E9E9E9EDEDED
+        EBEBEBEBEBEBEBEBEBECECECECECECEAEAEAF4F4F4F6F6F6F8F8F8FBFBFBFAFA
+        FAF8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F3F3F3F0F0F0F2F2F2F4F4F4F6F6F6F8
+        F8F8F9F9F9FBFBFBFAFAFAF8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8
+        EAEAEADADADAD7D7D7D7D7D7E5E5E50000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFC4C4C4C3C3C3DCDCDCF4F4F4F5F5F5F7F7F7F8F8F8F9F9F9F9F9F9FDFD
+        FDFBFBFBE8E8E8E7E7E7E6E6E6E6E6E6E4E4E4E6E6E6EAEAEAEEEEEEF0F0F0FF
+        FFFFFFFFFFECECECECECECEAEAEAEAEAEAFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9
+        FBFBFBFFFFFFFFFFFFF9F9F9F9F9F9F8F8F8F6F6F6F7F7F7FFFFFFFFFFFFF9F9
+        F9ECECECEAEAEAE9E9E9E9E9E9EAEAEAE9E9E9E7E7E7C1C1C1BFBFBFD3D3D3ED
+        EDEDDADADAD5D5D5EAEAEAE9E9E9C6C6C6E9E9E9FEFEFEE7E7E7EBEBEBEDEDED
+        F1F1F1F7F7F7F9F9F9FBFBFBFBFBFBFCFCFCFCFCFCF7F7F7FFFFFFF9F9F9EDED
+        EDECECECEAEAEAEAEAEAECECECDCDCDCD7D7D7D7D7D7E7E7E7F5F5F5F9F9F9FF
+        FFFFFFFFFFE9E9E9E6E6E6E6E6E6DFDFDFE1E1E1E9E9E9EBEBEBD1D1D1C7C7C7
+        D5D5D5EAEAEAFBFBFBF9F9F9F7F7F7F7F7F7F7F7F7F4F4F4F3F3F3F3F3F3F1F1
+        F1F3F3F3F5F5F5F7F7F7F7F7F7F6F6F6F6F6F6F8F8F8FAFAFAFFFFFFFFFFFFFE
+        FEFEEDEDEDF7F7F7F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9FCFCFCFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E7E7E7E3E3E3C0C0C0D2D2D2F4F4
+        F4F5F5F5F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFCFCFCF9F9F9F8F8F8F9F9F9F5
+        F5F5F7F7F7FAFAFAEBEBEBFFFFFFFFFFFFFEFEFEEDEDEDFFFFFFFFFFFFF9F9F9
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F7F7F7F9F9F9F9F9
+        F9F9F9F9F8F8F8FCFCFCFCFCFCF8F8F8F7F7F7F6F6F6F5F5F5FEFEFEFFFFFFFE
+        FEFEF7F7F7CBCBCBD6D6D6F8F8F8F8F8F8F8F8F8F4F4F4F4F4F4F8F8F8FFFFFF
+        FFFFFFF0F0F0EBEBEBEDEDEDF0F0F0F3F3F3F5F5F5F0F0F0E9E9E9E7E7E7E6E6
+        E6E2E2E2F3F3F3F8F8F8F8F8F8F9F9F9FFFFFFFDFDFDE7E7E7E7E7E7E7E7E7FF
+        FFFFEDEDEDEEEEEEEBEBEBE9E9E9D8D8D8B4B4B4C1C1C1E5E5E5F7F7F7F9F9F9
+        F9F9F9F5F5F5F4F4F4F0F0F0ECECECEFEFEFF3F3F3F5F5F5F6F6F6F6F6F6F7F7
+        F7F9F9F9F7F7F7F4F4F4F4F4F4F0F0F0EEEEEEF1F1F1F5F5F5F9F9F9F8F8F8F9
+        F9F9FAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFDFDFDE6E6E6E8E8E8EBEBEB
+        ECECECECECECEBEBEBECECECECECECE9E9E9E9E9E9F4F4F4F6F6F6F8F8F8F8F8
+        F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F5F5F5F7F7F7F8
+        F8F8FBFBFBFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAF7F7F7
+        F5F5F5F5F5F5F5F5F5F6F6F6F5F5F50000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF4F4F4F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9FAFA
+        FAFAFAFAF8F8F8E4E4E4DFDFDFE1E1E1E2E2E2E5E5E5EAEAEAEDEDEDEFEFEFEE
+        EEEEEDEDEDECECECEBEBEBE9E9E9EBEBEBFBFBFBFFFFFFFEFEFEFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8FFFFFFFFFFFFF8F8
+        F8EBEBEBE9E9E9E8E8E8E9E9E9E9E9E9EAEAEAE9E9E9D7D7D7E9E9E9FCFCFCFF
+        FFFFEBEBEBE6E6E6D6D6D6C0C0C0ABABABE2E2E2DEDEDED9D9D9F2F2F2F3F3F3
+        F5F5F5F9F9F9FAFAFAFBFBFBFBFBFBFEFEFEFDFDFDF7F7F7FFFFFFFFFFFFECEC
+        ECE7E7E7E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAF9F9F9FBFBFBF9F9F9FEFEFEFF
+        FFFFFFFFFFE9E9E9E6E6E6E6E6E6E4E4E4E9E9E9EDEDEDEBEBEBD1D1D1D5D5D5
+        F1F1F1F7F7F7F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F3F3F3F3F3
+        F3F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFF1
+        F1F1EEEEEEF1F1F1FBFBFBFAFAFAFAFAFAFBFBFBFBFBFBFCFCFCFFFFFFFFFFFF
+        FFFFFFFFFFFFFDFDFDEEEEEEEAEAEAE7E7E7E4E4E4E2E2E2C1C1C1D3D3D3F4F4
+        F4F5F5F5FAFAFAFBFBFBFBFBFBFCFCFCFBFBFBFBFBFBF9F9F9F8F8F8F8F8F8F7
+        F7F7F8F8F8F7F7F7F5F5F5FFFFFFFCFCFCEEEEEEECECECFDFDFDF0F0F0EAEAEA
+        F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8FAFAFAFAFA
+        FAF9F9F9FBFBFBFFFFFFFFFFFFF8F8F8F7F7F7F6F6F6F5F5F5FFFFFFFFFFFFF8
+        F8F8ECECECE9E9E9E7E7E7F8F8F8F8F8F8F6F6F6F2F2F2F5F5F5F8F8F8FFFFFF
+        FFFFFFF0F0F0EDEDEDF0F0F0F0F0F0F1F1F1F0F0F0ECECECE7E7E7E5E5E5E6E6
+        E6E4E4E4D3D3D3E5E5E5F8F8F8F9F9F9FDFDFDFBFBFBEAEAEAE2E2E2DEDEDEFF
+        FFFFEDEDEDEDEDEDD8D8D8C1C1C1AFAFAFC1C1C1E5E5E5F7F7F7F8F8F8FBFBFB
+        FDFDFDF7F7F7F3F3F3F0F0F0EEEEEEF2F2F2F5F5F5F4F4F4F4F4F4F7F7F7F8F8
+        F8FAFAFAF8F8F8F6F6F6F7F7F7F4F4F4F5F5F5F9F9F9F9F9F9F9F9F9F8F8F8F9
+        F9F9FAFAFAFAFAFAFBFBFBFFFFFFFFFFFFF8F8F8F7F7F7E5E5E5E6E6E6E8E8E8
+        E8E8E8E9E9E9EBEBEBEEEEEEEBEBEBE9E9E9E9E9E9DBDBDBE5E5E5F4F4F4F6F6
+        F6F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9F8F8F8F7F7F7F6F6F6F6F6F6F8F8F8F8
+        F8F8FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F5F5F5
+        F4F4F4F4F4F4F5F5F5F6F6F6F6F6F60000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F7F7
+        F7F9F9F9F9F9F9F2F2F2D3D3D3C8C8C8C6C6C6D7D7D7EAEAEAEDEDEDEFEFEFEC
+        ECECEBEBEBEAEAEAEBEBEBE9E9E9EBEBEBEBEBEBEBEBEBEDEDEDF5F5F5FFFFFF
+        FFFFFFFFFFFFF8F8F8F7F7F7FFFFFFFFFFFFF8F8F8FFFFFFFFFFFFFFFFFFF9F9
+        F9EBEBEBE8E8E8E4E4E4E6E6E6E9E9E9E9E9E9E9E9E9DADADACFCFCFEDEDEDFF
+        FFFFFEFEFEF9F9F9E5E5E5D1D1D1D1D1D1E5E5E5E2E2E2E2E2E2F7F7F7F4F4F4
+        F5F5F5F8F8F8F9F9F9FBFBFBFBFBFBFEFEFEFDFDFDF8F8F8FFFFFFEEEEEED7D7
+        D7E3E3E3E7E7E7E9E9E9E9E9E9E9E9E9EAEAEADEDEDEE8E8E8F8F8F8FFFFFFFF
+        FFFFFFFFFFECECECE8E8E8E6E6E6E7E7E7EAEAEAEBEBEBEDEDEDD1D1D1D2D2D2
+        F1F1F1F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F4F4
+        F4F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF0
+        F0F0EFEFEFF2F2F2F3F3F3FAFAFAFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF
+        FFFFFFFCFCFCEAEAEAE7E7E7E6E6E6E4E4E4E4E4E4E0E0E0C0C0C0D2D2D2F4F4
+        F4F7F7F7FBFBFBFAFAFAFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAF7F7F7F7F7F7F7
+        F7F7F8F8F8F8F8F8F8F8F8FBFBFBF9F9F9DEDEDECECECEDCDCDCCDCDCDD3D3D3
+        F4F4F4F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F9F9F9FAFA
+        FAFAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+        EAEAE7E7E7F5F5F5F5F5F5F7F7F7F8F8F8F7F7F7F5F5F5F7F7F7F9F9F9FFFFFF
+        FFFFFFEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDECECECE9E9E9E6E6E6E5E5E5E6E6
+        E6E5E5E5B7B7B7CECECEF9F9F9FBFBFBFDFDFDFCFCFCF7F7F7D5D5D5BCBCBCFF
+        FFFFEAEAEAEAEAEAC3C3C3BCBCBCD3D3D3E6E6E6F7F7F7F8F8F8FBFBFBFDFDFD
+        F9F9F9F3F3F3F1F1F1F1F1F1F2F2F2F4F4F4F4F4F4F4F4F4F5F5F5F8F8F8F9F9
+        F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9
+        F9F9FAFAFAFAFAFAFBFBFBFFFFFFFDFDFDF8F8F8F8F8F8F7F7F7E9E9E9E9E9E9
+        E7E7E7E7E7E7EAEAEAECECECEAEAEAE8E8E8E9E9E9DADADAE4E4E4F2F2F2F3F3
+        F3F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F9F9F9F8F8F8F8F8F8FFFFFFFF
+        FFFFFFFFFFFFFFFFF7F7F7F2F2F2F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4
+        F2F2F2F4F4F4F6F6F6F6F6F6F6F6F60000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFF9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F6F6F6F5F5F5F8F8
+        F8FAFAFAFBFBFBF8F8F8E7E7E7DADADAD7D7D7E6E6E6DCDCDCDFDFDFECECECE7
+        E7E7E6E6E6E6E6E6E7E7E7E6E6E6E7E7E7E5E5E5E4E4E4E4E4E4DEDEDEE2E2E2
+        EAEAEAEBEBEBEBEBEBEDEDEDEFEFEFF1F1F1F4F4F4FEFEFEFFFFFFF8F8F8E8E8
+        E8E7E7E7E5E5E5E2E2E2E6E6E6E7E7E7E7E7E7D9D9D9B8B8B8C8C8C8EAEAEAFD
+        FDFDFCFCFCF9F9F9F8F8F8F8F8F8F8F8F8FAFAFAF7F7F7F6F6F6F7F7F7F3F3F3
+        F5F5F5F9F9F9FCFCFCFBFBFBFBFBFBFEFEFEFCFCFCF7F7F7F7F7F7E6E6E6F2F2
+        F2F8F8F8EDEDEDEEEEEEEEEEEEEEEEEEEFEFEFD0D0D0DCDCDCFAFAFAFFFFFFFF
+        FFFFFEFEFEEAEAEAE7E7E7E3E3E3E4E4E4E6E6E6E7E7E7EAEAEACACACAD1D1D1
+        F3F3F3F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F5F5F5F7F7
+        F7F5F5F5F6F6F6F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFF4F4F4F1
+        F1F1F0F0F0F0F0F0F0F0F0E3E3E3F0F0F0FBFBFBF9F9F9FDFDFDFFFFFFFFFFFF
+        F1F1F1E9E9E9E7E7E7E7E7E7E6E6E6E4E4E4E1E1E1CFCFCFAEAEAED3D3D3F5F5
+        F5F7F7F7F9F9F9F9F9F9FBFBFBFBFBFBFAFAFAFCFCFCFBFBFBF7F7F7F7F7F7F8
+        F8F8F8F8F8F9F9F9F9F9F9FBFBFBF9F9F9E9E9E9DADADAE7E7E7CDCDCDD0D0D0
+        F0F0F0F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAF9F9F9F8F8F8F6F6F6F7F7F7FAFA
+        FAFAFAFAFFFFFFFFFFFFFFFFFFF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EA
+        EAEADFDFDFE8E8E8F4F4F4F4F4F4F6F6F6F8F8F8F6F6F6F8F8F8FCFCFCFFFFFF
+        FFFFFFFBFBFBEDEDEDECECECEBEBEBECECECEAEAEAE7E7E7E5E5E5E6E6E6E7E7
+        E7E6E6E6B4B4B4CBCBCBF9F9F9FBFBFBFCFCFCFCFCFCF7F7F7E6E6E6D4D4D4FF
+        FFFFE7E7E7E7E7E7BFBFBFCFCFCFF7F7F7F8F8F8F8F8F8FCFCFCFEFEFEFCFCFC
+        F7F7F7F4F4F4F3F3F3F4F4F4F4F4F4F1F1F1F1F1F1F4F4F4F7F7F7F9F9F9F9F9
+        F9FAFAFAFBFBFBFAFAFAF8F8F8F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFF
+        FFFFF9F9F9FBFBFBFCFCFCFEFEFEFDFDFDF8F8F8F7F7F7F8F8F8FFFFFFFCFCFC
+        E7E7E7E6E6E6E7E7E7E8E8E8E8E8E8E6E6E6E5E5E5E8E8E8DBDBDBE1E1E1F1F1
+        F1F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFCFCFCE7E7E7F1F1F1F3F3F3F5F5F5F8F8F8F7F7F7F4F4F4F3F3F3
+        F1F1F1F3F3F3F6F6F6F6F6F6F6F6F60000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF9F9F9FAFAFAF9F9F9F8F8F8F7F7F7F7F7F7FAFA
+        FAFBFBFBFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F6F6F6E7E7E7E6E6E6D3D3D3D2
+        D2D2E6E6E6E6E6E6E6E6E6E1E1E1DFDFDFDCDCDCE2E2E2E1E1E1E0E0E0E6E6E6
+        EAEAEAE9E9E9EAEAEAEDEDEDF0F0F0F2F2F2F1F1F1EEEEEEEEEEEEEBEBEBE6E6
+        E6E6E6E6E6E6E6E4E4E4E5E5E5E6E6E6E6E6E6C8C8C8C7C7C7E6E6E6F5F5F5F7
+        F7F7F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F7F7F7F7F7F7F5F5F5F4F4F4
+        F7F7F7FBFBFBFCFCFCFBFBFBFBFBFBFDFDFDFBFBFBFAFAFAFFFFFFFFFFFFFFFF
+        FFFFFFFFEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFDFDFDFEBEBEBFFFFFFFFFFFFFF
+        FFFFECECECE7E7E7E4E4E4E2E2E2E1E1E1E5E5E5E7E7E7E7E7E7C0C0C0CFCFCF
+        F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F5F5F5F7F7F7F7F7
+        F7F6F6F6F8F8F8FCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2F1F1F1F1
+        F1F1EEEEEEECECECECECECE0E0E0EAEAEAF6F6F6F8F8F8FBFBFBFFFFFFFFFFFF
+        ECECECE7E7E7E6E6E6E6E6E6E4E4E4E4E4E4E2E2E2C1C1C1BFBFBFE4E4E4F4F4
+        F4F5F5F5F9F9F9FAFAFAFAFAFAFAFAFAFCFCFCFDFDFDFBFBFBF8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F9F9F9FBFBFBF9F9F9F7F7F7F5F5F5F5F5F5E7E7E7E1E1E1
+        F2F2F2F8F8F8F8F8F8F9F9F9FAFAFAF9F9F9F8F8F8F8F8F8F7F7F7FBFBFBFEFE
+        FEFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEEEEEEEDEDEDEAEAEAEAEAEAECECECDC
+        DCDCC1C1C1DBDBDBF4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F8F8F8FCFCFCFFFFFF
+        FFFFFFF0F0F0E1E1E1ECECECEBEBEBEAEAEAE9E9E9E9E9E9E7E7E7E6E6E6E4E4
+        E4E3E3E3B7B7B7CDCDCDFBFBFBFCFCFCFCFCFCFBFBFBF8F8F8F7F7F7F4F4F4FF
+        FFFFE6E6E6E6E6E6BDBDBDCFCFCFF8F8F8F8F8F8F9F9F9FEFEFEFEFEFEFCFCFC
+        F8F8F8F4F4F4F3F3F3F3F3F3F1F1F1EDEDEDF1F1F1F5F5F5F8F8F8F9F9F9F9F9
+        F9FBFBFBFBFBFBF9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFE
+        FEFEFFFFFFFFFFFFFBFBFBFDFDFDFEFEFEFAFAFAF7F7F7F9F9F9FFFFFFECECEC
+        D1D1D1E2E2E2E6E6E6E6E6E6E4E4E4E3E3E3E4E4E4E6E6E6CACACAD0D0D0F0F0
+        F0F7F7F7F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFC
+        FCFCEAEAEAEAEAEAE8E8E8ECECECFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4
+        F1F1F1F2F2F2F5F5F5F6F6F6F6F6F60000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFAFAFAFBFBFBFAFAFAF9F9F9F7F7F7F8F8F8FAFA
+        FAFBFBFBFDFDFDFCFCFCFCFCFCFCFCFCF8F8F8F5F5F5F5F5F5F3F3F3DFDFDFE0
+        E0E0D1D1D1BBBBBBBABABAB5B5B5B8B8B8CECECEE2E2E2E2E2E2E4E4E4E8E8E8
+        E9E9E9E8E8E8EAEAEAEDEDEDEEEEEEEEEEEEECECECEAEAEAEAEAEADDDDDDC8C8
+        C8C3C3C3D5D5D5E4E4E4E4E4E4E8E8E8E7E7E7C8C8C8D7D7D7F3F3F3F4F4F4F6
+        F6F6F6F6F6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF7F7F7F6F6F6F7F7F7
+        F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFF
+        FFF8F8F8EAEAEAEAEAEAEAEAEAEAEAEAECECECEDEDEDEBEBEBFFFFFFFFFFFFFD
+        FDFDEAEAEAE6E6E6E2E2E2E1E1E1E0E0E0E2E2E2E6E6E6D0D0D0A3A3A3CECECE
+        F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F5F5F5F7F7F7F7F7F7F7F7
+        F7F7F7F7FAFAFAFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFF7F7F7EAEAEAECECECEC
+        ECECEBEBEBE9E9E9E9E9E9E9E9E9DCDCDCE7E7E7F6F6F6FFFFFFFFFFFFFFFFFF
+        E9E9E9E6E6E6E4E4E4E4E4E4E4E4E4E5E5E5E4E4E4C3C3C3D0D0D0F3F3F3F5F5
+        F5F9F9F9FBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFBFBFBF9F9F9F8F8F8F8F8F8F8
+        F8F8F8F8F8F9F9F9FAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F5F5F5F4F4F4EEEEEE
+        EFEFEFF5F5F5F5F5F5F8F8F8F9F9F9F8F8F8F9F9F9F8F8F8F9F9F9FDFDFDFFFF
+        FFFFFFFFFFFFFFFFFFFFF0F0F0EEEEEEECECECE7E7E7E5E5E5E8E8E8E5E5E5C8
+        C8C8C9C9C9E6E6E6F3F3F3F4F4F4F4F4F4F5F5F5FBFBFBFBFBFBFBFBFBFCFCFC
+        FBFBFBEFEFEFEDEDEDE2E2E2DFDFDFEAEAEAE9E9E9EAEAEAE7E7E7E5E5E5E5E5
+        E5D5D5D5ACACACCFCFCFF7F7F7FCFCFCFBFBFBF9F9F9F8F8F8F8F8F8F4F4F4FF
+        FFFFE5E5E5E6E6E6D4D4D4E6E6E6FAFAFAFAFAFAFCFCFCFEFEFEFEFEFEF9F9F9
+        F5F5F5F1F1F1EFEFEFF3F3F3F0F0F0F0F0F0F4F4F4F7F7F7F9F9F9FCFCFCFBFB
+        FBFBFBFBF9F9F9F8F8F8F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFEBEBEBE9
+        E9E9FDFDFDEBEBEBE7E7E7FCFCFCFDFDFDF9F9F9F7F7F7F9F9F9FCFCFCE5E5E5
+        DCDCDCD2D2D2C8C8C8C7C7C7C6C6C6D7D7D7D9D9D9C9C9C9B9B9B9D0D0D0EFEF
+        EFF7F7F7F9F9F9F8F8F8F8F8F8F7F7F7FFFFFFFFFFFFFFFFFFFCFCFCEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEAEAEDEDEDF9F9F9FFFFFFFFFFFFFFFFFFF5F5F5F2F2F2
+        ECECECEDEDEDF4F4F4F6F6F6F6F6F60000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFCFCFCFBFBFBFAFAFAF7F7F7F8F8F8FBFB
+        FBFCFCFCFFFFFFFEFEFEFCFCFCFBFBFBF5F5F5F3F3F3F1F1F1F1F1F1F0F0F0F1
+        F1F1E0E0E0CACACAC8C8C8C8C8C8CCCCCCE1E1E1D6D6D6D7D7D7E7E7E7E7E7E7
+        E8E8E8E8E8E8E9E9E9EAEAEAEAEAEAECECECEAEAEAEAEAEADADADABABABABBBB
+        BBCACACADEDEDECECECED3D3D3E9E9E9E7E7E7DADADAE8E8E8F3F3F3F4F4F4F5
+        F5F5F5F5F5F9F9F9FDFDFDFDFDFDFEFEFEFDFDFDF5F5F5F4F4F4F7F7F7F7F7F7
+        F8F8F8FAFAFAFAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFF9F9F9EAEA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEEEEEEEEEEEEEDEDEDFEFEFEFDFDFDEC
+        ECECE9E9E9E4E4E4E2E2E2E2E2E2DEDEDECCCCCCB9B9B99C9C9CB2B2B2E2E2E2
+        F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F5F5F5F6F6F6F6F6F6F7F7
+        F7F7F7F7F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFEDEDEDEAEAEAE7E7E7E9E9E9E9
+        E9E9E9E9E9E9E9E9E8E8E8E8E8E8CECECED8D8D8F3F3F3FFFFFFFFFFFFF8F8F8
+        E9E9E9E5E5E5E4E4E4E4E4E4E6E6E6E7E7E7E4E4E4C2C2C2D0D0D0F3F3F3F7F7
+        F7F9F9F9F9F9F9FDFDFDFCFCFCFFFFFFFFFFFFFFFFFFF9F9F9F8F8F8F8F8F8F8
+        F8F8F8F8F8FAFAFAFAFAFAF8F8F8FAFAFAF9F9F9F5F5F5F3F3F3F1F1F1ECECEC
+        EEEEEEF4F4F4F6F6F6F9F9F9FAFAFAF9F9F9FAFAFAF9F9F9F9F9F9FFFFFFFFFF
+        FFFFFFFFFFFFFFECECECEEEEEEEBEBEBE7E7E7E3E3E3E4E4E4E4E4E4D3D3D3BD
+        BDBDD9D9D9F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F8F8F8F7F7F7F8F8F8FCFCFC
+        FDFDFDFEFEFEFAFAFAEBEBEBEDEDEDECECECEAEAEAE9E9E9E6E6E6E4E4E4D8D8
+        D8B7B7B7BDBDBDDCDCDCF3F3F3F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5FF
+        FFFFE7E7E7E8E8E8E9E9E9DADADAE9E9E9F9F9F9FBFBFBFCFCFCFAFAFAF5F5F5
+        F3F3F3EAEAEAEDEDEDF4F4F4F1F1F1F4F4F4F7F7F7F7F7F7FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF8F8F8F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFCFCFCE7E7E7E7
+        E7E7D4D4D4A8A8A8D1D1D1FCFCFCFCFCFCF8F8F8F7F7F7F8F8F8F9F9F9F3F3F3
+        F1F1F1E4E4E4D7D7D7D5D5D5D4D4D4E4E4E4CDCDCDC8C8C8D5D5D5E2E2E2F2F2
+        F2F7F7F7F8F8F8F7F7F7F6F6F6F7F7F7FFFFFFFFFFFFFDFDFDEAEAEAE9E9E9EA
+        EAEAEAEAEAEAEAEAEBEBEBEFEFEFEEEEEEEEEEEEECECECE9E9E9E6E6E6D1D1D1
+        DBDBDBEFEFEFF5F5F5F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF9F9F9F8F8F8F7F7F7F9F9F9FBFB
+        FBFDFDFDFFFFFFFFFFFFFDFDFDFAFAFAF8F8F8F7F7F7F6F6F6F4F4F4F3F3F3F5
+        F5F5F4F4F4F2F2F2F1F1F1F3F3F3F4F4F4F5F5F5E7E7E7F5F5F5F8F8F8E9E9E9
+        ECECECE9E9E9EAEAEAEBEBEBEAEAEAEBEBEBEBEBEBEAEAEAC8C8C8BCBCBCDADA
+        DAECECECEFEFEFE0E0E0F4F4F4F8F8F8E7E7E7E9E9E9E9E9E9FFFFFFFFFFFFFF
+        FFFFF5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F4F4F4EDEDEDF0F0F0F6F6F6F6F6F6
+        F8F8F8F9F9F9FBFBFBFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFEAEAEAEAEA
+        EAEAEAEAEAEAEAEBEBEBEAEAEAECECECF1F1F1EFEFEFEAEAEAEDEDEDECECECE9
+        E9E9E5E5E5DFDFDFE1E1E1DFDFDFC6C6C6959595ABABABC2C2C2DEDEDEF5F5F5
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F6F6F6F6F6F6F7F7F7F8F8
+        F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFCFCFCEBEBEBEAEAEAE7E7E7E8E8E8E9
+        E9E9E9E9E9E8E8E8E7E7E7E8E8E8DBDBDBF1F1F1FFFFFFFFFFFFFFFFFFEAEAEA
+        E9E9E9E7E7E7E5E5E5E3E3E3E4E4E4E4E4E4E1E1E1C6C6C6D3D3D3F3F3F3F7F7
+        F7F7F7F7F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8
+        F8F8F8F8F8F9F9F9F9F9F9F9F9F9FCFCFCFBFBFBF4F4F4F0F0F0EEEEEEECECEC
+        F1F1F1F6F6F6F7F7F7FAFAFAFBFBFBF9F9F9F8F8F8F8F8F8F8F8F8FFFFFFFFFF
+        FFFEFEFEECECECEDEDEDEEEEEEEAEAEAE7E7E7E6E6E6E6E6E6D4D4D4BABABACA
+        CACAE6E6E6F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F4F4F4FAFAFA
+        FCFCFCFAFAFAF8F8F8F6F6F6F8F8F8F4F4F4D7D7D7D7D7D7D9D9D9C8C8C8BABA
+        BAC2C2C2DFDFDFEDEDEDF3F3F3F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7FF
+        FFFFE7E7E7E9E9E9E9E9E9D7D7D7E5E5E5F7F7F7F7F7F7F8F8F8F7F7F7F4F4F4
+        F1F1F1E6E6E6ECECECF5F5F5F1F1F1F5F5F5F9F9F9FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFBFBFBF7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFCFCFCE8E8E8D1
+        D1D1A2A2A2B9B9B9E7E7E7FDFDFDFBFBFBF7F7F7F8F8F8F8F8F8F7F7F7F4F4F4
+        F4F4F4F7F7F7F7F7F7F5F5F5F1F1F1F2F2F2E6E6E6E4E4E4F2F2F2F3F3F3F4F4
+        F4F7F7F7F7F7F7F6F6F6F6F6F6F8F8F8FFFFFFFFFFFFECECECE9E9E9E9E9E9EA
+        EAEAEAEAEAEAEAEAECECECEDEDEDEAEAEAE8E8E8E9E9E9E8E8E8D3D3D3AAAAAA
+        CFCFCFF5F5F5F8F8F8FCFCFC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FFF8F8F8F8F8F8F8F8F8F9F9
+        F9FBFBFBFFFFFFF4F4F4EAEAEAF5F5F5F5F5F5F4F4F4F4F4F4F3F3F3F5F5F5F8
+        F8F8F7F7F7F5F5F5F5F5F5F5F5F5F6F6F6F7F7F7F7F7F7FFFFFFFBFBFBEDEDED
+        EDEDEDDBDBDBDFDFDFEDEDEDECECECECECECEBEBEBE9E9E9C3C3C3CECECEF0F0
+        F0F4F4F4F4F4F4F4F4F4FFFFFFFDFDFDEBEBEBE7E7E7E7E7E7F8F8F8FFFFFFEC
+        ECECE7E7E7F5F5F5F5F5F5F5F5F5F5F5F5F2F2F2EAEAEAF0F0F0F7F7F7F7F7F7
+        F8F8F8F9F9F9FBFBFBFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFDFDFDEAEAEAEAEA
+        EAEAEAEAEAEAEAEDEDEDEBEBEBEDEDEDF1F1F1ECECECE7E7E7E9E9E9E7E7E7D0
+        D0D0CDCDCDCACACACECECEC8C8C8959595AAAAAADADADAF3F3F3F7F7F7F9F9F9
+        F9F9F9F9F9F9F7F7F7F5F5F5F5F5F5F3F3F3F5F5F5F7F7F7F7F7F7F8F8F8F9F9
+        F9FBFBFBFFFFFFFFFFFFFFFFFFFEFEFEEAEAEAECECECEBEBEBE7E7E7E7E7E7E9
+        E9E9E7E7E7D6D6D6C6C6C6D9D9D9E9E9E9F5F5F5FFFFFFFFFFFFF5F5F5E7E7E7
+        E9E9E9E7E7E7E4E4E4E4E4E4E6E6E6E6E6E6E5E5E5DADADADFDFDFF1F1F1F8F8
+        F8F7F7F7F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFFBFBFBFCFCFCECECECE8E8E8F8
+        F8F8F8F8F8F9F9F9FBFBFBFAFAFAFCFCFCF9F9F9EFEFEFEFEFEFEFEFEFEFEFEF
+        F4F4F4F7F7F7F8F8F8FAFAFAFBFBFBF8F8F8F8F8F8F9F9F9F9F9F9FFFFFFFFFF
+        FFECECECEAEAEAECECECEDEDEDE9E9E9E7E7E7E7E7E7E6E6E6C4C4C4C4C4C4E4
+        E4E4F3F3F3F6F6F6F4F4F4F4F4F4F7F7F7F7F7F7F5F5F5F4F4F4F4F4F4F9F9F9
+        F9F9F9F6F6F6F6F6F6F6F6F6F6F6F6F4F4F4E3E3E3E3E3E3C8C8C8C4C4C4D6D6
+        D6E6E6E6F3F3F3F4F4F4F5F5F5F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8FF
+        FFFFE6E6E6E7E7E7E7E7E7D6D6D6C7C7C7E6E6E6F5F5F5F5F5F5F6F6F6F2F2F2
+        ECECECE7E7E7EEEEEEF5F5F5F4F4F4FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFDFD
+        FDEDEDEDE9E9E9DADADAE9E9E9F8F8F8F8F8F8F8F8F8FFFFFFEAEAEABEBEBE9F
+        9F9FB6B6B6E6E6E6FCFCFCFEFEFEFBFBFBF8F8F8FAFAFAF9F9F9F7F7F7F7F7F7
+        F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7F7F7F7F4F4F4FFFFFFFFFFFFF7F7
+        F7FAFAFAF8F8F8F6F6F6F6F6F6F7F7F7FFFFFFF8F8F8EAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEBEBEBEBEBEBE6E6E6E9E9E9EAEAEAE8E8E8C3C3C3BABABA
+        E4E4E4F9F9F9FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF8F8F8F7F7F7F9F9
+        F9FAFAFAFFFFFFFFFFFFF7F7F7F5F5F5F4F4F4F2F2F2F1F1F1F2F2F2F5F5F5F8
+        F8F8F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
+        E9E9E9CDCDCDEAEAEAF8F8F8EAEAEAEAEAEAEBEBEBECECECC6C6C6D1D1D1F4F4
+        F4F6F6F6F7F7F7F6F6F6F7F7F7FFFFFFFCFCFCE8E8E8E7E7E7E7E7E7E8E8E8D9
+        D9D9E6E6E6F5F5F5F5F5F5F5F5F5F5F5F5EFEFEFEDEDEDF3F3F3F7F7F7F8F8F8
+        F9F9F9FBFBFBFCFCFCFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFECECECEDEDEDEAEA
+        EAECECECEEEEEEF1F1F1ECECECEEEEEEF0F0F0EAEAEAE7E7E7E7E7E7D1D1D1A3
+        A3A3DCDCDCCFCFCFCECECEB7B7B7B2B2B2DCDCDCF2F2F2F9F9F9FAFAFAFAFAFA
+        FDFDFDFCFCFCF6F6F6F5F5F5F5F5F5F4F4F4F5F5F5F7F7F7F6F6F6F8F8F8F9F9
+        F9FEFEFEFFFFFFFFFFFFFDFDFDE9E9E9E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4
+        E4E4E6E6E6D7D7D7E4E4E4FFFFFFF7F7F7E9E9E9EAEAEAE9E9E9E6E6E6E7E7E7
+        E6E6E6E4E4E4E3E3E3E5E5E5E7E7E7E8E8E8E9E9E9E9E9E9D3D3D3E2E2E2F8F8
+        F8F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFEAEAEAE8E8E8E8E8E8D6D6D6F7F7F7FF
+        FFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F0F0F0F2F2F2F2F2F2F4F4F4
+        F7F7F7F8F8F8F8F8F8FCFCFCFDFDFDF9F9F9F9F9F9F9F9F9F8F8F8FFFFFFECEC
+        ECCCCCCCDCDCDCEEEEEEEDEDEDEAEAEAE9E9E9E7E7E7E4E4E4C1C1C1CECECEF1
+        F1F1F6F6F6F9F9F9F8F8F8F7F7F7F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F8F8F8
+        F8F8F8F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F4F4F4F4F4F4E7E7E7E6E6E6F6F6
+        F6F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F8F8F8F9F9F9F8F8F8F9F9F9FAFAFAFF
+        FFFFE6E6E6E7E7E7E7E7E7C6C6C6C3C3C3E6E6E6F5F5F5F5F5F5F5F5F5F2F2F2
+        EAEAEAE9E9E9F0F0F0F4F4F4F7F7F7FCFCFCFFFFFFFFFFFFFEFEFEEBEBEBEBEB
+        EBEBEBEBE9E9E9DADADAE8E8E8F9F9F9FAFAFAF9F9F9F8F8F8E2E2E2C7C7C7CA
+        CACAE6E6E6FCFCFCFEFEFEFFFFFFFCFCFCFAFAFAFBFBFBF9F9F9F8F8F8F8F8F8
+        F7F7F7F7F7F7F5F5F5F6F6F6F9F9F9FBFBFBF8F8F8FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF4F4F4F4F4F4F6F6F6F5F5F5F5F5F5F5F5F5DEDEDECECECECDCDCDCB
+        CBCBDADADAEAEAEAEBEBEBEBEBEBE9E9E9ECECECECECECD7D7D7AFAFAFCFCFCF
+        F4F4F4F9F9F9FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF7F7F7F7F7F7F9F9
+        F9F8F8F8FFFFFFFDFDFDD9D9D9E2E2E2F0F0F0F1F1F1F2F2F2F5F5F5F7F7F7F9
+        F9F9F8F8F8F7F7F7F7F7F7F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
+        E9E9E9D2D2D2F7F7F7FFFFFFE7E7E7E6E6E6EAEAEAECECECD6D6D6E2E2E2F5F5
+        F5F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFCFCFCE7E7E7E7E7E7E7E7E7E7E7E7E7
+        E7E7E6E6E6F5F5F5F5F5F5F5F5F5F5F5F5EEEEEEEFEFEFF4F4F4F5F5F5F6F6F6
+        F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFF0F0F0EEEEEEE9E9
+        E9EEEEEEEFEFEFEDEDEDEBEBEBEAEAEAECECECD4D4D4BBBBBBBBBBBBA4A4A4B7
+        B7B7F3F3F3D7D7D7D3D3D3DFDFDFE1E1E1F1F1F1F2F2F2F9F9F9FAFAFAFAFAFA
+        FDFDFDFCFCFCF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9
+        F9FCFCFCFFFFFFFAFAFACCCCCCC5C5C5C3C3C3C1C1C1D6D6D6E7E7E7E6E6E6E5
+        E5E5E8E8E8EAEAEAF8F8F8FFFFFFF8F8F8E9E9E9E9E9E9E7E7E7E7E7E7E8E8E8
+        E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9ECECECECECECE9E9E9C7C7C7D7D7D7F9F9
+        F9FAFAFAFDFDFDFFFFFFFFFFFFFBFBFBE9E9E9E8E8E8E8E8E8E8E8E8FBFBFBFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4F6F6F6
+        F8F8F8F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFF9F9F9F8F8F8F7F7F7F7F7F7E9E9
+        E9D9D9D9F7F7F7FEFEFEEDEDEDE9E9E9E7E7E7E5E5E5E4E4E4BFBFBFCCCCCCF3
+        F3F3F8F8F8F9F9F9F8F8F8F7F7F7F9F9F9F8F8F8F5F5F5F5F5F5F5F5F5F6F6F6
+        F5F5F5F5F5F5F6F6F6F5F5F5F4F4F4F4F4F4F4F4F4F5F5F5F7F7F7F6F6F6F7F7
+        F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8F9F9F9FAFAFAFF
+        FFFFBFBFBFC1C1C1C0C0C0AFAFAFD3D3D3F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2
+        ECECECEEEEEEF4F4F4F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFEBEBEBEBEBEBEBEB
+        EBEBEBEBE9E9E9E9E9E9DEDEDEF0F0F0FFFFFFFFFFFFFFFFFFF3F3F3F1F1F1F7
+        F7F7FDFDFDFDFDFDFFFFFFFFFFFFFCFCFCFAFAFAF9F9F9F8F8F8F9F9F9F8F8F8
+        F7F7F7F7F7F7F7F7F7F6F6F6F8F8F8F8F8F8F5F5F5FFFFFFFFFFFFF9F9F9F4F4
+        F4EAEAEAE3E3E3F1F1F1F5F5F5F4F4F4F6F6F6F6F6F6E6E6E6D5D5D5D4D4D4D3
+        D3D3E4E4E4EAEAEAEBEBEBEBEBEBE9E9E9EAEAEAEAEAEAC5C5C5BFBFBFE4E4E4
+        F7F7F7FCFCFCFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF8F8F8F8F8
+        F8F8F8F8FCFCFCEAEAEAD5D5D5E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECEEEEEEEDEDED
+        ECECECE1E1E1FFFFFFFFFFFFEAEAEAE9E9E9E8E8E8E8E8E8E6E6E6D3D3D3E5E5
+        E5F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAF7F7F7EDEDEDECECECE7E7E7E7E7E7E7
+        E7E7D3D3D3BDBDBDDDDDDDEFEFEFEEEEEEEAEAEAF0F0F0F4F4F4F4F4F4F7F7F7
+        F8F8F8F9F9F9F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFEDEDEDEBEBEBE9E9
+        E9ECECECECECECEAEAEAE9E9E9E9E9E9EAEAEABCBCBCB2B2B2C9C9C9CACACADE
+        DEDEF3F3F3E3E3E3E1E1E1EEEEEEF3F3F3F1F1F1F3F3F3F9F9F9FAFAFAFAFAFA
+        FDFDFDFFFFFFFBFBFBF7F7F7F7F7F7F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFEEEEEEC8C8C8D2D2D2D2D2D2D3D3D3F7F7F7FBFBFBE9E9E9E6
+        E6E6E6E6E6E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAE8E8E8E4E4E4E2E2E2E6E6E6
+        E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEDEDEDEAEAEAE9E9E9C9C9C9D6D6D6F8F8
+        F8F8F8F8F8F8F8FAFAFAFFFFFFF9F9F9E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9EB
+        EBEBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FFFFFFFFFFFFF5F5F5F8F8F8
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF7F7F7F7F7F7F6F6F6F5F5F5F6F6
+        F6F7F7F7FFFFFFFCFCFCEBEBEBE9E9E9E8E8E8E6E6E6E5E5E5C1C1C1CFCFCFF5
+        F5F5F8F8F8F9F9F9F8F8F8F7F7F7F9F9F9FAFAFAF7F7F7F5F5F5F5F5F5F5F5F5
+        F4F4F4F4F4F4F5F5F5F4F4F4F4F4F4F5F5F5F5F5F5F6F6F6F7F7F7F6F6F6F5F5
+        F5F9F9F9FFFFFFFFFFFFFFFFFFF7F7F7F4F4F4F9F9F9FFFFFFFFFFFFFFFFFFFF
+        FFFFD0D0D0D1D1D1CECECED2D2D2E4E4E4F1F1F1F3F3F3F3F3F3F2F2F2F0F0F0
+        EEEEEEF2F2F2F5F5F5F7F7F7F9F9F9FFFFFFFFFFFFFDFDFDEBEBEBEAEAEAE9E9
+        E9E9E9E9E7E7E7DCDCDCC4C4C4E1E1E1FFFFFFFFFFFFEDEDEDE9E9E9F8F8F8FC
+        FCFCFCFCFCFFFFFFFFFFFFFFFFFFFAFAFAF8F8F8F8F8F8F8F8F8F9F9F9F8F8F8
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5FFFFFFFFFFFFE8E8E8E7E7
+        E7DCDCDCF4F4F4FFFFFFF5F5F5F5F5F5F8F8F8F6F6F6F4F4F4F3F3F3F3F3F3F1
+        F1F1F5F5F5F6F6F6EAEAEAEAEAEAE9E9E9DADADACACACAB4B4B4D3D3D3F5F5F5
+        F7F7F7F9F9F9FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF9F9
+        F9F8F8F8FAFAFAF8F8F8F5F5F5F5F5F5FFFFFFE9E9E9F5F5F5FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF9F9F9FFFFFFFFFFFFFAFAFAEBEBEBECECECECECEC
+        EDEDEDECECECF8F8F8F8F8F8EEEEEEECECECEBEBEBEAEAEAE8E8E8D5D5D5E3E3
+        E3F6F6F6F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7FCFCFCE9E9E9DFDFDFE4E4E4E2
+        E2E2B7B7B7B0B0B0DCDCDCF1F1F1F0F0F0F0F0F0F4F4F4F4F4F4F5F5F5F9F9F9
+        FBFBFBFBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFECECECDBDBDBEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEAE9E9E9E8E8E8E9E9E9BCBCBCCCCCCCF4F4F4F4F4F4F3
+        F3F3F5F5F5F2F2F2F1F1F1F3F3F3F4F4F4F0F0F0F4F4F4F9F9F9F9F9F9FDFDFD
+        FFFFFFFFFFFFFCFCFCF9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF3F3F3FBFBFBE0E0E0DADADAF3F3F3F3F3F3F4F4F4FFFFFFF9F9F9E9E9E9E2
+        E2E2E0E0E0E4E4E4E9E9E9E9E9E9EAEAEAE9E9E9D9D9D9C8C8C8C9C9C9DDDDDD
+        EAEAEAE9E9E9EAEAEAEAEAEAEAEAEAEEEEEEEDEDEDECECECCBCBCBD5D5D5F5F5
+        F5F5F5F5F5F5F5F8F8F8FFFFFFF7F7F7E4E4E4E4E4E4E4E4E4E4E4E4E8E8E8EA
+        EAEAE7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E2E2E2F3F3F3F5F5F5E8E8E8FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9DADADAE6E6E6F3F3F3F2F2F2F3F3
+        F3F5F5F5F7F7F7F9F9F9EBEBEBE9E9E9E8E8E8E4E4E4D3D3D3AFAFAFD0D0D0F4
+        F4F4F7F7F7F9F9F9F9F9F9F8F8F8FBFBFBFEFEFEF8F8F8F5F5F5F5F5F5F4F4F4
+        F3F3F3F3F3F3F4F4F4F4F4F4F6F6F6F7F7F7F7F7F7F6F6F6F6F6F6F7F7F7F7F7
+        F7FFFFFFFFFFFFFFFFFFEAEAEAEBEBEBEAEAEAF5F5F5FBFBFBFDFDFDFDFDFDFF
+        FFFFF8F8F8F8F8F8F7F7F7F8F8F8F7F7F7F5F5F5F5F5F5F2F2F2F1F1F1F1F1F1
+        F2F2F2F3F3F3F3F3F3F7F7F7FFFFFFFFFFFFFFFFFFEBEBEBE8E8E8E7E7E7E9E9
+        E9E9E9E9E8E8E8D3D3D3D0D0D0EBEBEBFFFFFFFFFFFFDEDEDEF8F8F8FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F8F8F8F9F9F9F9F9F9FAFAFAF8F8F8
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFE9E9E9EAEA
+        EAECECECF8F8F8F7F7F7F6F6F6F6F6F6F8F8F8F7F7F7F7F7F7F8F8F8F9F9F9F9
+        F9F9FBFBFBFAFAFAF7F7F7DCDCDCCCCCCCBABABAC6C6C6D5D5D5E4E4E4F4F4F4
+        F4F4F4F5F5F5FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF8F8
+        F8F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9F9F9F9FFFFFFFFFFFFF0
+        F0F0EAEAEAE9E9E9E6E6E6E7E7E7F9F9F9FBFBFBECECECECECECECECECEDEDED
+        EDEDEDEBEBEBEBEBEBEDEDEDEDEDEDEAEAEAEAEAEAEAEAEAE8E8E8E8E8E8D1D1
+        D1E2E2E2F7F7F7F8F8F8FAFAFAFAFAFAFAFAFAFBFBFBF5F5F5D5D5D5C4C4C4BA
+        BABAA1A1A1CDCDCDF4F4F4F7F7F7F5F5F5F6F6F6F6F6F6F3F3F3F6F6F6FAFAFA
+        FBFBFBFBFBFBFCFCFCFEFEFEFFFFFFFDFDFDF7F7F7E7E7E7F7F7F7F8F8F8EAEA
+        EAE9E9E9E8E8E8E8E8E8E7E7E7E8E8E8E9E9E9D4D4D4E3E3E3F7F7F7F7F7F7F7
+        F7F7F6F6F6F4F4F4F4F4F4F6F6F6F5F5F5F2F2F2F5F5F5F8F8F8FBFBFBFFFFFF
+        FFFFFFFFFFFFFAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEA
+        EADBDBDBE7E7E7E8E8E8E8E8E8F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFF9F9F9E4
+        E4E4E1E1E1E4E4E4E9E9E9E8E8E8E9E9E9E7E7E7D9D9D9E1E1E1F4F4F4FFFFFF
+        FDFDFDEDEDEDECECECEBEBEBEDEDEDF1F1F1EEEEEEEAEAEAC8C8C8D2D2D2F3F3
+        F3F5F5F5F5F5F5F8F8F8F7F7F7F4F4F4E6E6E6E4E4E4E5E5E5E6E6E6EBEBEBEA
+        EAEAE6E6E6E7E7E7E5E5E5E5E5E5E4E4E4E4E4E4E9E9E9EAEAEAE7E7E7FCFCFC
+        FFFFFFFEFEFEE8E8E8E9E9E9E9E9E9E7E7E7BFBFBFCECECEF0F0F0F3F3F3F5F5
+        F5F7F7F7F7F7F7FFFFFFFFFFFFF7F7F7E6E6E6E4E4E4D4D4D4D2D2D2E3E3E3F6
+        F6F6F8F8F8F9F9F9F9F9F9F7F7F7FAFAFAFBFBFBF5F5F5F1F1F1F0F0F0F1F1F1
+        F0F0F0F2F2F2F4F4F4F7F7F7F8F8F8F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F4F4
+        F4FFFFFFFFFFFFF9F9F9EAEAEAEAEAEAE9E9E9E9E9E9F1F1F1FCFCFCFDFDFDFF
+        FFFFF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F4F4F4F3F3F3F4F4F4
+        F3F3F3F3F3F3F4F4F4F9F9F9FFFFFFFFFFFFFBFBFBEAEAEAE9E9E9E9E9E9EBEB
+        EBEAEAEAEAEAEAD6D6D6DDDDDDF5F5F5FFFFFFFFFFFFEFEFEFFEFEFEFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFCFCFCECECECF7F7F7FAFAFAFBFBFBFAFAFAF9F9F9
+        F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFDFDFDE9E9E9E9E9
+        E9E9E9E9E9E9E9E9E9E9E9E9E9F7F7F7F9F9F9F9F9F9F8F8F8F9F9F9FAFAFAF9
+        F9F9F9F9F9F9F9F9F7F7F7E9E9E9D9D9D9D7D7D7E5E5E5F4F4F4F4F4F4F4F4F4
+        F4F4F4F5F5F5FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF6F6F6F8F8F8FBFBFBF9F9F9F8F8F8FAFAFAFBFBFBFFFFFFFFFFFFFFFFFFEE
+        EEEEE9E9E9E9E9E9E7E7E7E6E6E6E8E8E8EAEAEAEBEBEBECECECEDEDEDEDEDED
+        ECECECEBEBEBEBEBEBEDEDEDECECECEAEAEAE9E9E9E9E9E9E6E6E6E4E4E4D0D0
+        D0E2E2E2F8F8F8F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFBFBFBEBEBEBD8D8D8D0
+        D0D0CFCFCFE6E6E6F7F7F7F6F6F6F6F6F6F4F4F4F5F5F5F4F4F4F7F7F7FAFAFA
+        FBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDF5F5F5F1F1F1FFFFFFF7F7F7E9E9
+        E9E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7D1D1D1BABABADFDFDFF4F4F4F5
+        F5F5F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5F2F2F2F6F6F6FAFAFAFEFEFEFFFFFF
+        FFFFFFEEEEEEE8E8E8F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFECECECEAEAEAEAEA
+        EAEAEAEAECECECF6F6F6F5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFF8F8F8E5
+        E5E5DEDEDEE2E2E2E9E9E9E7E7E7E7E7E7E5E5E5E5E5E5F4F4F4FFFFFFFFFFFF
+        FEFEFEEFEFEFEDEDEDEEEEEEEEEEEEF0F0F0EBEBEBE7E7E7D7D7D7E1E1E1F0F0
+        F0F4F4F4F5F5F5F6F6F6F6F6F6F6F6F6FFFFFFF5F5F5EAEAEAEAEAEAEDEDEDEB
+        EBEBE7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E6E6E6D1D1D1
+        D3D3D3E6E6E6CECECEBCBCBCD4D4D4D1D1D1A9A9A9CFCFCFF4F4F4F7F7F7F8F8
+        F8FBFBFBFFFFFFFFFFFFFFFFFFF7F7F7E9E9E9E9E9E9E8E8E8E6E6E6F3F3F3F7
+        F7F7F8F8F8FBFBFBFCFCFCFBFBFBFCFCFCFCFCFCF5F5F5F3F3F3F3F3F3F3F3F3
+        F4F4F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F7F7F7F7F7F7F5F5
+        F5FBFBFBFFFFFFF9F9F9EBEBEBECECECEBEBEBE7E7E7EAEAEAFFFFFFFEFEFEFF
+        FFFFF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F5F5F5F4F4F4F4F4F4
+        F3F3F3F4F4F4F7F7F7FFFFFFFFFFFFFFFFFFF0F0F0EEEEEEECECECECECECECEC
+        ECDFDFDFD3D3D3C8C8C8DCDCDCF4F4F4FFFFFFFFFFFFF0F0F0F2F2F2F2F2F2F1
+        F1F1F3F3F3F0F0F0EBEBEBEBEBEBEBEBEBEAEAEAFBFBFBFDFDFDFAFAFAFAFAFA
+        F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7FCFCFCFFFFFFF7F7F7E9E9
+        E9E7E7E7E7E7E7E6E6E6E6E6E6E7E7E7F6F6F6F8F8F8F7F7F7F8F8F8F8F8F8F7
+        F7F7F8F8F8F7F7F7F6F6F6F6F6F6F5F5F5F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4
+        F4F4F4F5F5F5FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF9F9F9FCFCFCFBFBFBF9F9F9FBFBFBFBFBFBFCFCFCFFFFFFFFFFFFEC
+        ECECE9E9E9E9E9E9E7E7E7E5E5E5E7E7E7EAEAEAEAEAEAEAEAEAECECECEDEDED
+        EDEDEDECECECECECECECECECEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E6E6E6E6E6
+        E6D4D4D4E4E4E4F8F8F8F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBF9F9F9F8F8F8F5
+        F5F5F5F5F5F7F7F7F5F5F5F6F6F6F5F5F5F5F5F5F7F7F7F7F7F7F9F9F9FAFAFA
+        FBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFDFDFDF5F5F5F1F1F1F2F2F2F1F1F1CFCF
+        CFD1D1D1E6E6E6E7E7E7E7E7E7E7E7E7E6E6E6CECECEC9C9C9DFDFDFF4F4F4F6
+        F6F6F7F7F7F8F8F8F8F8F8F8F8F8F5F5F5F4F4F4F7F7F7F9F9F9FDFDFDFFFFFF
+        FFFFFFCACACAD5D5D5F7F7F7F9F9F9FFFFFFFFFFFFF8F8F8EBEBEBEAEAEAEAEA
+        EAEBEBEBECECECEAEAEAF5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFE5E5E5E2
+        E2E2DCDCDCE2E2E2E8E8E8E7E7E7E6E6E6E6E6E6E7E7E7ECECECEFEFEFEDEDED
+        F1F1F1EFEFEFECECECECECECECECECECECECE9E9E9E7E7E7E7E7E7D1D1D1DFDF
+        DFF2F2F2F3F3F3F6F6F6F8F8F8F8F8F8FFFFFFFFFFFFEBEBEBEBEBEBEAEAEAE6
+        E6E6E4E4E4E6E6E6E6E6E6E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6D0D0D09C9C9C
+        CACACACECECE9A9A9AB8B8B8F7F7F7D6D6D6BDBDBDE5E5E5F8F8F8F8F8F8F8F8
+        F8FFFFFFFFFFFFFFFFFFFFFFFFE8E8E8E9E9E9E9E9E9E6E6E6E3E3E3E5E5E5FF
+        FFFFFFFFFFF8F8F8FAFAFAF9F9F9F8F8F8F8F8F8F5F5F5F1F1F1F5F5F5F7F7F7
+        F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF6F6F6F7F7F7F7F7F7F7F7
+        F7FFFFFFFFFFFFFFFFFFE9E9E9EAEAEAEAEAEAE7E7E7E9E9E9F5F5F5F7F7F7FF
+        FFFFF9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F7F7F7F5F5F5F5F5F5
+        F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFFEFEFEEEEEEEEBEBEBEAEAEAECECECDEDE
+        DEC2C2C2CCCCCCD9D9D9E4E4E4F2F2F2FFFFFFFFFFFFECECECECECECECECECEB
+        EBEBEBEBEBEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9ECECECF8F8F8F9F9F9FBFBFB
+        F9F9F9F7F7F7F5F5F5F7F7F7F7F7F7F6F6F6F6F6F6F7F7F7FFFFFFF8F8F8E9E9
+        E9E7E7E7E7E7E7E4E4E4E4E4E4E6E6E6DDDDDDE9E9E9F6F6F6F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4
+        F4F4F4F5F5F5FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFFFFFFFFFFFFE9
+        E9E9E7E7E7E7E7E7E6E6E6E5E5E5E7E7E7EAEAEAEAEAEAEBEBEBEDEDEDECECEC
+        ECECECEAEAEAEAEAEAEAEAEAE8E8E8E7E7E7E8E8E8EAEAEAE9E9E9E8E8E8E9E9
+        E9C1C1C1D0D0D0F8F8F8FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F8F8F8F5F5F5F4
+        F4F4F5F5F5F7F7F7F6F6F6F4F4F4F5F5F5F7F7F7F8F8F8F7F7F7F9F9F9FAFAFA
+        FBFBFBFDFDFDFFFFFFFFFFFFFEFEFEF8F8F8F1F1F1EFEFEFF2F2F2F1F1F1DEDE
+        DEE2E2E2E6E6E6E4E4E4E4E4E4E4E4E4E1E1E1DDDDDDE1E1E1F3F3F3F7F7F7F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F9F9F9FBFBFBFEFEFEFFFFFF
+        FCFCFCCBCBCBD1D1D1F5F5F5FFFFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEA
+        EAEBEBEBEBEBEBEAEAEADADADAE6E6E6F5F5F5F5F5F5FFFFFFF8F8F8E4E4E4E2
+        E2E2E1E1E1E5E5E5E8E8E8E7E7E7E7E7E7E8E8E8EAEAEAECECECEDEDEDEDEDED
+        F1F1F1EFEFEFEAEAEAEBEBEBEBEBEBEAEAEAE9E9E9E7E7E7E6E6E6BFBFBFD0D0
+        D0F0F0F0F3F3F3F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFEAEAEAE9E9E9D7D7D7C5
+        C5C5C6C6C6D3D3D3DEDEDEDEDEDECECECED0D0D0D0D0D0BBBBBB9D9D9DAFAFAF
+        E0E0E0E2E2E2CCCCCCFAFAFAFFFFFFFDFDFDE3E3E3FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF7F7F7E7E7E7E6E6E6E7E7E7E4E4E4E2E2E2E5E5E5F7
+        F7F7F8F8F8FFFFFFFFFFFFF3F3F3F1F1F1F2F2F2F1F1F1F0F0F0F4F4F4F8F8F8
+        F9F9F9FFFFFFFFFFFFFFFFFFFDFDFDEBEBEBE9E9E9E7E7E7F3F3F3F4F4F4F5F5
+        F5FFFFFFFFFFFFF8F8F8E6E6E6E7E7E7E7E7E7E4E4E4E7E7E7E8E8E8EDEDEDFF
+        FFFFF9F9F9F8F8F8F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F7F7F7F8F8F8
+        F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFF1F1F1EFEFEFE8E8E8DADADACECECEBEBE
+        BECCCCCCE7E7E7F2F2F2F4F4F4F9F9F9FFFFFFF9F9F9E9E9E9E9E9E9E9E9E9E9
+        E9E9E9E9E9E8E8E8E7E7E7E7E7E7E8E8E8E9E9E9E9E9E9DADADAE7E7E7F8F8F8
+        F7F7F7F5F5F5F4F4F4F5F5F5F6F6F6F5F5F5F6F6F6F7F7F7F7F7F7FFFFFFF9F9
+        F9E5E5E5E4E4E4E2E2E2E3E3E3E8E8E8CCCCCCD8D8D8F4F4F4F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3
+        F3F3F3F3F3F3FFFFFFF8F8F80000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFF8F8F8F9F9F9F8F8F8F9F9F9FBFBFBFBFBFBFFFFFFFBFBFBE6
+        E6E6E6E6E6E8E8E8E6E6E6E4E4E4E7E7E7EAEAEAEAEAEAECECECECECECEAEAEA
+        EAEAEAE9E9E9E8E8E8E7E7E7E6E6E6E6E6E6E9E9E9EAEAEAE7E7E7E6E6E6D5D5
+        D5AAAAAAD1D1D1F9F9F9FAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F5F5F5F4
+        F4F4F5F5F5F5F5F5F3F3F3F4F4F4F7F7F7F8F8F8F7F7F7F8F8F8F9F9F9FBFBFB
+        FEFEFEFFFFFFFEFEFEFDFDFDF7F7F7F1F1F1EFEFEFF1F1F1F5F5F5F6F6F6F7F7
+        F7F9F9F9F9F9F9E6E6E6E1E1E1E1E1E1DEDEDEDEDEDEE1E1E1D9D9D9E5E5E5F5
+        F5F5F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFDFDFDFEFEFEFEFEFE
+        FCFCFCE4E4E4E1E1E1F7F7F7FFFFFFFFFFFFF9F9F9ECECECEBEBEBECECECEBEB
+        EBEDEDEDEEEEEEEEEEEEDBDBDBE6E6E6F5F5F5F5F5F5F5F5F5FFFFFFF6F6F6E3
+        E3E3E1E1E1E4E4E4E8E8E8E7E7E7E7E7E7E7E7E7E8E8E8DDDDDDDFDFDFECECEC
+        EEEEEEEDEDEDEAEAEAEBEBEBD9D9D9C2C2C2BDBDBDBBBBBBBCBCBCA5A5A5CCCC
+        CCEEEEEEF3F3F3F8F8F8F7F7F7FFFFFFFFFFFFF7F7F7E9E9E9D9D9D9B5B5B5C4
+        C4C4E6E6E6FDFDFDF0F0F0D6D6D6B2B2B2CECECEBABABAB2B2B2C6C6C6E1E1E1
+        F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFDFDFDE8E8E8FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF7F7F7EDEDEDEAEAEAEAEAEAEAEAEAE6E6E6E6E6E6EAEAEAEC
+        ECECEAEAEAF8F8F8EAEAEAE4E4E4F1F1F1F5F5F5F5F5F5F7F7F7F9F9F9FAFAFA
+        FCFCFCFFFFFFFFFFFFFFFFFFEBEBEBE9E9E9E7E7E7E5E5E5E4E4E4F5F5F5FFFF
+        FFFFFFFFFFFFFFE7E7E7E7E7E7E9E9E9DBDBDBC9C9C9C5C5C5C9C9C9CCCCCCFF
+        FFFFF8F8F8F7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F7F7F7
+        F7F7F7F8F8F8F8F8F8FFFFFFFFFFFFF7F7F7F0F0F0E8E8E8CCCCCCCACACADADA
+        DAEBEBEBF7F7F7F7F7F7F9F9F9F9F9F9F8F8F8FFFFFFF3F3F3E9E9E9E9E9E9E9
+        E9E9E8E8E8E7E7E7E7E7E7E8E8E8D7D7D7D8D8D8DDDDDDBCBCBCDADADAF8F8F8
+        F5F5F5F4F4F4F3F3F3F5F5F5F6F6F6F6F6F6F8F8F8F5F5F5F2F2F2FFFFFFFBFB
+        FBE7E7E7E4E4E4E4E4E4E6E6E6E9E9E9D8D8D8E3E3E3F4F4F4F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F0F0F0
+        EEEEEEECECECEDEDEDFBFBFB0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF8F8F8F9F9F9FCFCFCFCFCFCFBFBFBF9F9F9F7F7F7E5
+        E5E5E6E6E6E8E8E8E4E4E4E6E6E6E9E9E9EAEAEAEAEAEADDDDDDCCCCCCC8C8C8
+        C6C6C6C4C4C4D6D6D6E6E6E6E8E8E8E9E9E9EAEAEAE9E9E9E6E6E6D4D4D4ACAC
+        ACBBBBBBE4E4E4F7F7F7F8F8F8F7F7F7F8F8F8F8F8F8F9F9F9F7F7F7F3F3F3F3
+        F3F3F4F4F4F4F4F4F3F3F3F6F6F6F8F8F8F7F7F7F8F8F8F9F9F9FAFAFAFBFBFB
+        FFFFFFFFFFFFFAFAFAF8F8F8F7F7F7F3F3F3F3F3F3F5F5F5F8F8F8F7F7F7F9F9
+        F9FBFBFBFBFBFBF8F8F8E6E6E6E4E4E4E1E1E1E4E4E4E7E7E7DADADAE4E4E4F4
+        F4F4F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FBFBFBFDFDFDFEFEFEFCFCFC
+        F8F8F8F4F4F4F3F3F3FFFFFFFFFFFFFFFFFFF0F0F0ECECECECECECECECECEDED
+        EDEEEEEEEEEEEEECECECEAEAEAE8E8E8F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFE4
+        E4E4E3E3E3E6E6E6E7E7E7E8E8E8E6E6E6D9D9D9CDCDCDBFBFBFDCDCDCDFDFDF
+        D0D0D0CFCFCFDCDCDCD9D9D9B1B1B1BEBEBECECECECECECECECECECCCCCCE0E0
+        E0F3F3F3F5F5F5F7F7F7F7F7F7F3F3F3FFFFFFE6E6E6C5C5C5B3B3B3C1C1C1E3
+        E3E3FFFFFFF7F7F7DEDEDEBDBDBDBFBFBFDCDCDCDEDEDEE1E1E1F5F5F5F9F9F9
+        FAFAFAFCFCFCFDFDFDFFFFFFFFFFFFEAEAEAEAEAEAFDFDFDFCFCFCECECECEDED
+        EDEBEBEBEBEBEBECECECECECECEBEBEBEDEDEDECECECE6E6E6E4E4E4E5E5E5E5
+        E5E5E6E6E6E7E7E7DADADAE2E2E2F2F2F2F8F8F8FAFAFAF9F9F9F9F9F9F9F9F9
+        FFFFFFFFFFFFFFFFFFEEEEEEE9E9E9E7E7E7E5E5E5E4E4E4E6E6E6EDEDEDFFFF
+        FFFFFFFFFCFCFCE9E9E9E8E8E8E9E9E9CCCCCCBFBFBFD2D2D2DADADADCDCDCFF
+        FFFFF7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF8F8F8
+        F8F8F8F7F7F7F7F7F7FFFFFFFFFFFFECECECE2E2E2E2E2E2C9C9C9DADADAF8F8
+        F8F9F9F9F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8FFFFFFFFFFFFEEEEEEE9E9E9E9
+        E9E9E7E7E7E7E7E7E7E7E7CCCCCC9A9A9ACACACACCCCCCC3C3C3E9E9E9F5F5F5
+        F1F1F1F1F1F1F1F1F1F4F4F4F4F4F4F5F5F5F5F5F5F1F1F1F1F1F1F6F6F6F5F5
+        F5D0D0D0D3D3D3E7E7E7E6E6E6E7E7E7E4E4E4E7E7E7F4F4F4F5F5F5F6F6F6F6
+        F6F6F6F6F6F5F5F5F3F3F3F1F1F1EFEFEFECECECEAEAEAEBEBEBEBEBEBECECEC
+        EAEAEAEDEDEDF0F0F00000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFAFAFAFBFBFBFAFAFAF8F8F8F7F7F70000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF2F2F2F0F0F0F3F3F3F3F3F3F3F3
+        F3F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5FFFFFFD2D2D2BCBCBCCFCFCFE1E1E1F2
+        F2F2F4F4F4E8E8E8DADADAD2D2D2DADADAEEEEEEF4F4F4F8F8F8FAFAFAFAFAFA
+        FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAECECECEAEAEAE9E9E9E9E9E9EAEA
+        EAEBEBEBE9E9E9E9E9E9EBEBEBE9E9E9EAEAEAE9E9E9E7E7E7E4E4E4E4E4E4E3
+        E3E3E2E2E2E6E6E6E7E7E7D7D7D7E5E5E5F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7
+        FFFFFFFFFFFFFEFEFEEBEBEBE8E8E8E4E4E4E3E3E3E4E4E4E8E8E8EAEAEAFBFB
+        FBFBFBFBEBEBEBEAEAEAE9E9E9E9E9E9C8C8C8D2D2D2F3F3F3FBFBFBF9F9F9FF
+        FFFFF9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA
+        FBFBFBF9F9F9FFFFFFFFFFFFFFFFFFE5E5E5E2E2E2E2E2E2CCCCCCDADADAF7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFEDEDEDE7E7E7E7
+        E7E7E7E7E7E7E7E7CDCDCD8F8F8FA9A9A9E4E4E4E7E7E7DFDFDFF3F3F3EFEFEF
+        EEEEEEEFEFEFEDEDEDF0F0F0F3F3F3F3F3F3F3F3F3F1F1F1F5F5F5F9F9F9F7F7
+        F7E2E2E2E5E5E5E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9EAEAEAFFFFFFFFFFFFFF
+        FFFFFFFFFFF3F3F3EFEFEFEDEDEDECECECEAEAEAEAEAEAEDEDEDECECECEEEEEE
+        F0F0F0F4F4F4F8F8F80000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF8F8F8F8F8F8F7F7F7F7F7F70000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F3F3F3F9F9F9F6F6F6F4F4
+        F4F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F6F6F6E2E2E2E2E2E2F3F3F3F4F4F4F5
+        F5F5F3F3F3FFFFFFFFFFFFFBFBFBECECECF4F4F4F7F7F7FAFAFAFBFBFBFBFBFB
+        FEFEFEFFFFFFFFFFFFFFFFFFFEFEFEEBEBEBEBEBEBECECECE9E9E9E7E7E7D9D9
+        D9C8C8C8C5C5C5CACACADBDBDBDFDFDFD6D6D6E1E1E1EBEBEBE9E9E9E9E9E9E8
+        E8E8E7E7E7E7E7E7E9E9E9DADADAF7F7F7FFFFFFF8F8F8F6F6F6F6F6F6F8F8F8
+        FFFFFFFFFFFFEAEAEAE9E9E9E5E5E5E1E1E1E2E2E2E7E7E7E9E9E9E8E8E8EAEA
+        EAEAEAEAE9E9E9E9E9E9DCDCDCCDCDCDB8B8B8D9D9D9FBFBFBFFFFFFFFFFFFFF
+        FFFFFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFA
+        FBFBFBFBFBFBFFFFFFFFFFFFFEFEFEE8E8E8E8E8E8E8E8E8CCCCCCD8D8D8F4F4
+        F4F9F9F9F9F9F9F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFF7F7F7F0F0F0ECECECE9
+        E9E9E8E8E8E7E7E7B2B2B2A9A9A9E4E4E4FEFEFEFDFDFDF7F7F7F0F0F0E9E9E9
+        E9E9E9E9E9E9EBEBEBF3F3F3F3F3F3F5F5F5F8F8F8F8F8F8F8F8F8FAFAFAFAFA
+        FAFAFAFAFAFAFAF8F8F8E8E8E8E7E7E7E9E9E9EAEAEAEAEAEAF7F7F7FFFFFFFF
+        FFFFF7F7F7EFEFEFEEEEEEECECECECECECEEEEEEF2F2F2F5F5F5F4F4F4F6F6F6
+        F7F7F7F8F8F8F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF7F7F7F7F7F7F7F7F7F7F7F70000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF4F4F4F9F9F9FDFDFDFBFBFBF9F9
+        F9FDFDFDFBFBFBF7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F7F7F7F7F7F7F8F8F8F9
+        F9F9FFFFFFFFFFFFFFFFFFF5F5F5F3F3F3F7F7F7F9F9F9FBFBFBFBFBFBFCFCFC
+        FFFFFFFFFFFFFFFFFFFEFEFEF8F8F8ECECECEAEAEAEBEBEBD9D9D9C4C4C4B1B1
+        B1C1C1C1D3D3D3D8D8D8E7E7E7D2D2D2CACACAE1E1E1DFDFDFDFDFDFE8E8E8E8
+        E8E8E6E6E6E5E5E5E9E9E9DCDCDCDDDDDDDEDEDEE9E9E9F6F6F6F6F6F6FFFFFF
+        FFFFFFFFFFFFE7E7E7E7E7E7E3E3E3E1E1E1E6E6E6EAEAEAE9E9E9E9E9E9EAEA
+        EAEAEAEAE9E9E9E9E9E9DCDCDCE4E4E4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFCFCFCFBFBFBFCFCFCFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFCFCFCFBFBFB
+        FCFCFCFFFFFFFFFFFFFFFFFFECECECE8E8E8E7E7E7E6E6E6C8C8C8D3D3D3F1F1
+        F1F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFEDEDEDF0F0F0F8F8F8F1F1F1EA
+        EAEAE9E9E9E9E9E9D0D0D0E5E5E5FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F0F0F0
+        EEEEEEEDEDEDF0F0F0F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFAFAFAFAFAFAFAFAFAF9F9F9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA
+        EAEAE9E9E9E4E4E4EDEDEDEBEBEBEFEFEFF5F5F5F7F7F7F9F9F9F9F9F9F9F9F9
+        F9F9F9F8F8F8F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFFCFCFCF8F8F8F7F7F70000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF7F7F7FBFBFBFDFDFDFCFCFCFDFD
+        FDFFFFFFFBFBFBF7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F9
+        F9F9FFFFFFFFFFFFFDFDFDEBEBEBDBDBDBEDEDEDFCFCFCFAFAFAFCFCFCFFFFFF
+        FFFFFFFFFFFFFFFFFFF9F9F9F7F7F7F2F2F2DCDCDCCECECEB1B1B1B7B7B7D0D0
+        D0E6E6E6F6F6F6F8F8F8F8F8F8E9E9E9E2E2E2EDEDEDE7E7E7E5E5E5D9D9D9CC
+        CCCCD7D7D7DADADAD1D1D1BEBEBEC6C6C6D8D8D8E7E7E7F6F6F6F6F6F6FFFFFF
+        FFFFFFF9F9F9E7E7E7E7E7E7E6E6E6E3E3E3E7E7E7D8D8D8C3C3C3C5C5C5D8D8
+        D8E9E9E9EBEBEBEBEBEBEBEBEBF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8FF
+        FFFFFBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE9E9E9E5E5E5D6D6D6BCBCBCD5D5D5F1F1
+        F1F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFF7F7F7F0F0F0F7F7F7F7F7F7EFEFEFEA
+        EAEAEAEAEAE9E9E9EAEAEAD7D7D7EAEAEAFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9
+        F7F7F7F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEA
+        EAE4E4E4FAFAFAFAFAFAFAFAFAFDFDFDF0F0F0ECECECEBEBEBEAEAEAEAEAEAEA
+        EAEAEAEAEAE7E7E7D7D7D7E0E0E0F4F4F4F9F9F9FAFAFAFAFAFAFAFAFAFAFAFA
+        FCFCFCFDFDFDF9F9F90000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF5F5F5F7F7F70000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF7F7F7F9F9F9FAFAFAFAFAFAFBFB
+        FBFDFDFDFBFBFBF9F9F9F8F8F8F7F7F7F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F8
+        F8F8FFFFFFFCFCFCEBEBEBEBEBEBDCDCDCEAEAEAF9F9F9FDFDFDFFFFFFFFFFFF
+        FFFFFFFFFFFFFBFBFBF5F5F5F4F4F4F1F1F1E5E5E5D0D0D0C9C9C9DCDCDCF3F3
+        F3F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F2F2F2E4E4E4D7
+        D7D7E4E4E4D1D1D1CCCCCCD0D0D0E2E2E2F4F4F4F3F3F3F4F4F4F5F5F5FFFFFF
+        FFFFFFE7E7E7E7E7E7E7E7E7E7E7E7E3E3E3E7E7E7C1C1C1BABABAE2E2E2FFFF
+        FFFBFBFBEDEDEDEBEBEBE9E9E9E9E9E9EEEEEEF6F6F6F5F5F5ECECECE6E6E6FF
+        FFFFFAFAFAFBFBFBFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFEBEBEBE8E8E8E7E7E7D9D9D9BDBDBDC8C8C8E2E2E2F0F0
+        F0F4F4F4FFFFFFFFFFFFFFFFFFFEFEFEF6F6F6F9F9F9F7F7F7F1F1F1EAEAEAE9
+        E9E9EAEAEAE8E8E8E9E9E9C1C1C1D2D2D2FFFFFFFFFFFFFDFDFDFCFCFCFAFAFA
+        F6F6F6F4F4F4F4F4F4F7F7F7FFFFFFFFFFFFFFFFFFEAEAEAE8E8E8E9E9E9D1D1
+        D1E3E3E3FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFF1F1F1EDEDEDEAEAEAEAEAEAEA
+        EAEAEAEAEAE9E9E9D8D8D8E3E3E3F7F7F7FAFAFAFAFAFAFAFAFAFAFAFAFFFFFF
+        FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFE4E4E4F6F6F6F7F7F7F7
+        F7F7F4F4F4F4F4F4F5F5F5F8F8F8F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7
+        F8F8F8F8F8F8F9F9F9F8F8F8F8F8F8FFFFFFFCFCFCC4C4C4D4D4D4F4F4F4F6F6
+        F6FCFCFCFBFBFBF6F6F6F6F6F6F5F5F5F4F4F4F5F5F5F5F5F5F8F8F8F8F8F8F8
+        F8F8FCFCFCFEFEFEFBFBFBF8F8F8F7F7F7F8F8F8FBFBFBFCFCFCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAC9C9C9D9D9
+        D9EDEDEDEDEDEDF1F1F1F6F6F6F5F5F5FFFFFFFCFCFCF1F1F1EDEDEDEBEBEBEA
+        EAEAE8E8E8E6E6E6E5E5E5E5E5E5E4E4E4E3E3E3E6E6E6C8C8C8D3D3D3F3F3F3
+        F5F5F5F4F4F4F4F4F4FFFFFFFFFFFFEBEBEBF6F6F6FFFFFFF6F6F6F8F8F8FFFF
+        FFFFFFFFE6E6E6E4E4E4E2E2E2DFDFDFD8D8D8F5F5F5FFFFFFFFFFFFFCFCFCEC
+        ECECE9E9E9EAEAEAE6E6E6C1C1C1D1D1D1F4F4F4F3F3F3F0F0F0EFEFEFF1F1F1
+        F2F2F2F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8FAFAFAFCFCFCFCFC
+        FCFFFFFFFFFFFFFFFFFFF9F9F9F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8
+        F8F8F9F9F9FFFFFFFBFBFBEBEBEBEBEBEBEAEAEAF7F7F7FBFBFBFFFFFFFFFFFF
+        FFFFFFFCFCFCF7F7F7F4F4F4F4F4F4F1F1F1F0F0F0ECECECE8E8E8F1F1F1F6F6
+        F6F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F7F7F7F6F6F6F7F7F7F7F7F7F1F1F1F1
+        F1F1F3F3F3E4E4E4DDDDDDEAEAEAF0F0F0F1F1F1F2F2F2F4F4F4F4F4F4FFFFFF
+        FFFFFFE7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E7E7E7BFBFBFCECECEFFFFFFFFFF
+        FFFDFDFDEBEBEBDBDBDBCDCDCDD1D1D1D5D5D5E2E2E2E8E8E8E2E2E2E1E1E1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9
+        E9E9E9EAEAEAEBEBEBEAEAEAE7E7E7E7E7E7DCDCDCD6D6D6E2E2E2F1F1F1F2F2
+        F2F3F3F3FFFFFFFFFFFFF9F9F9F4F4F4F4F4F4F3F3F3F0F0F0ECECECE9E9E9E9
+        E9E9EAEAEAE8E8E8E9E9E9C5C5C5D1D1D1F9F9F9FDFDFDFCFCFCFAFAFAF8F8F8
+        F7F7F7F6F6F6F7F7F7FAFAFAFFFFFFFFFFFFECECECE8E8E8E6E6E6E7E7E7E7E7
+        E7E7E7E7FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8ECECECE9E9E9E9E9E9E9
+        E9E9E8E8E8E9E9E9E6E6E6E9E9E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEEEEEEF3F3F3F4
+        F4F4F3F3F3F5F5F5F8F8F8FBFBFBF9F9F9F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9
+        FAFAFAFBFBFBF9F9F9F7F7F7F7F7F7FFFFFFFDFDFDD8D8D8F8F8F8FFFFFFFFFF
+        FFFFFFFFFEFEFEF7F7F7FAFAFAF7F7F7F5F5F5F9F9F9FAFAFAFBFBFBF9F9F9F9
+        F9F9FCFCFCFEFEFEFAFAFAF7F7F7F5F5F5F7F7F7FBFBFBFBFBFBFFFFFFFFFFFF
+        FFFFFFF0F0F0FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFEDEDEDD7D7D7D1D1D1E4E4
+        E4EDEDEDEEEEEEEEEEEEF1F1F1F3F3F3FFFFFFFFFFFFEEEEEEEAEAEAE8E8E8E7
+        E7E7E6E6E6E4E4E4E1E1E1E0E0E0E2E2E2E3E3E3E5E5E5C6C6C6D3D3D3F2F2F2
+        F1F1F1F2F2F2F3F3F3FFFFFFF9F9F9DCDCDCDCDCDCDADADAE6E6E6F5F5F5FFFF
+        FFF7F7F7E6E6E6E6E6E6D3D3D3D3D3D3D9D9D9EEEEEEFFFFFFFEFEFEEDEDEDEB
+        EBEBEAEAEAECECECE9E9E9D5D5D5E3E3E3F1F1F1F0F0F0EFEFEFF1F1F1F5F5F5
+        F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFBFBFBFBFBFBFDFDFDFCFCFCFFFF
+        FFFFFFFFFFFFFFFCFCFCF7F7F7F9F9F9F9F9F9F7F7F7F8F8F8F8F8F8F9F9F9F9
+        F9F9FDFDFDFFFFFFFEFEFEEBEBEBECECECEDEDEDEEEEEEFBFBFBFFFFFFFCFCFC
+        F9F9F9F7F7F7F4F4F4F4F4F4F3F3F3F0F0F0EFEFEFEDEDEDEFEFEFF4F4F4F7F7
+        F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F6F6F6F4F4F4F4F4F4F3F3F3F3
+        F3F3F0F0F0EAEAEAECECECF1F1F1F1F1F1F1F1F1F5F5F5F7F7F7F5F5F5FFFFFF
+        FAFAFAE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7BCBCBCCFCFCFF9F9F9F9F9
+        F9DCDCDCCCCCCCBFBFBFCDCDCDDCDCDCDCDCDCF5F5F5F4F4F4E5E5E5DEDEDEFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9EAEAEAEAEAEA
+        EAEAEAEBEBEBEAEAEAE9E9E9E7E7E7E9E9E9E9E9E9D7D7D7F0F0F0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFE9E9E9EBEBEBEBEBEBE9E9E9E9E9E9E9E9E9E8E8E8EB
+        EBEBEAEAEADADADACACACAB4B4B4D1D1D1F7F7F7FBFBFBFBFBFBFAFAFAF9F9F9
+        F9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFEBEBEBE8E8E8E7E7E7E7E7E7E6E6
+        E6E6E6E6DCDCDCEFEFEFFFFFFFFCFCFCF8F8F8F5F5F5F4F4F4D9D9D9C8C8C8C6
+        C6C6C3C3C3D5D5D5E4E4E4EDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1ECECEC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF2F2F2F4
+        F4F4F5F5F5F7F7F7F8F8F8FAFAFAF9F9F9F8F8F8F8F8F8FAFAFAFCFCFCFBFBFB
+        F8F8F8F8F8F8F7F7F7F6F6F6F7F7F7F9F9F9FFFFFFFAFAFAFBFBFBFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFBFBFBF9F9F9F9F9F9FBFBFBFCFCFCFBFBFBF9F9F9FB
+        FBFBFFFFFFFFFFFFFAFAFAF7F7F7F3F3F3F5F5F5F9F9F9F8F8F8FFFFFFFFFFFF
+        EDEDEDEDEDEDEEEEEEEDEDEDF8F8F8FFFFFFFCFCFCEAEAEAD1D1D1DADADAEDED
+        EDEDEDEDEBEBEBEBEBEBEEEEEEEEEEEEFFFFFFFFFFFFECECECE8E8E8E7E7E7E7
+        E7E7E7E7E7E4E4E4E1E1E1E3E3E3E9E9E9EAEAEAEAEAEADCDCDCE6E6E6EFEFEF
+        F0F0F0F1F1F1F4F4F4F4F4F4E4E4E4D6D6D6D8D8D8D5D5D5E1E1E1F2F2F2F3F3
+        F3F3F3F3E6E6E6E6E6E6D5D5D5F1F1F1EFEFEFFDFDFDFEFEFEEDEDEDECECECEB
+        EBEBEAEAEAEAEAEAEAEAEAE8E8E8D2D2D2DCDCDCF0F0F0F3F3F3F5F5F5F7F7F7
+        F7F7F7F8F8F8F9F9F9F8F8F8FAFAFAFFFFFFFDFDFDFCFCFCFCFCFCF7F7F7FFFF
+        FFFFFFFFF7F7F7E4E4E4E7E7E7FFFFFFFFFFFFFFFFFFF9F9F9F8F8F8FAFAFAF9
+        F9F9FCFCFCFDFDFDF8F8F8EBEBEBEDEDEDEDEDEDEEEEEEEEEEEEFFFFFFFFFFFF
+        FFFFFFF5F5F5F4F4F4F3F3F3F0F0F0EEEEEEEEEEEEF1F1F1F4F4F4F7F7F7F7F7
+        F7F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F6F6F6F5F5F5F5
+        F5F5F2F2F2F0F0F0F4F4F4F6F6F6F3F3F3F4F4F4F7F7F7F5F5F5F4F4F4F6F6F6
+        FFFFFFFCFCFCE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7BABABAD3D3D3FFFFFFFDFD
+        FDEEEEEEDEDEDEDCDCDCE9E9E9F5F5F5F4F4F4FFFFFFEAEAEADCDCDCD9D9D9FF
+        FFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFEAEAEAC6C6C6DADADAE9E9E9EAEAEA
+        EBEBEBEBEBEBEAEAEAE8E8E8E7E7E7E9E9E9E9E9E9DADADAFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF8F8F8EAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E9
+        E9E9E9E9E9C8C8C8C4C4C4D4D4D4E6E6E6F6F6F6F9F9F9FAFAFAFAFAFAFBFBFB
+        FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFE8E8E8E5E5E5E6E6E6E5E5E5E5E5
+        E5E6E6E6C6C6C6D4D4D4F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6E6E6E6D4D4D4CE
+        CECECECECEE3E3E3D8D8D8E1E1E1F3F3F3F4F4F4F3F3F3EAEAEAE7E7E7E7E7E7
+        E7E7E7E7E7E7E7E7E70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF9F9F9F8
+        F8F8F8F8F8F8F8F8F9F9F9FBFBFBFBFBFBF9F9F9F9F9F9FDFDFDFCFCFCF8F8F8
+        F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F9F9F9FFFFFFFBFBFBEAEAEAEAEAEAECEC
+        ECFDFDFDFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFB80000080
+        0000800000800000800000800000800000800000F8F8F8F7F7F7FFFFFFFEFEFE
+        EBEBEBDEDEDEDFDFDFDFDFDFD0D0D0DFDFDFE9E9E9D4D4D4BFBFBFD9D9D9EBEB
+        EBECECECE9E9E9EDEDEDF3F3F3F3F3F3FFFFFFFFFFFFECECECE8E8E880000080
+        0000800000800000800000E7E7E7ECECECEBEBEBE9E9E9D7D7D7C2C2C20000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF4F4F4DFDFDFD0D0D0F0F0F0FFFFFFFEFEFEFBFBFBEBEBEBEDEDEDEC
+        ECECEAEAEAEBEBEBEAEAEAE6E6E6BABABAC9C9C9F2F2F20000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF5F5F5F3F3F3F5F5
+        F5FFFFFFF3F3F3E3E3E3E7E7E7F9F9F9FFFFFFEAEAEAE7E7E7F8F8F8F8F8F8F8
+        F8F8F9F9F9F8F8F8F5F5F5F5F5F5EDEDEDEFEFEFEDEDEDECECECF8F8F8FFFFFF
+        EBEBEBE6E6E6F2F2F2EFEFEFEEEEEEEEEEEEF1F1F1F5F5F5F7F7F7F7F7F7F7F7
+        F7F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F5F5F5F6
+        F6F6F6F6F6F6F6F6F7F7F7F7F7F7F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7FBFBFB
+        FFFFFFFFFFFFE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7BDBDBDD0D0D0FBFBFBF9F9
+        F9FCFCFCFCFCFCF7F7F7F6F6F6F4F4F4F4F4F4F5F5F5E7E7E7E6E6E6CCCCCCFF
+        FFFFF7F7F7FFFFFFF8F8F8EFEFEFF0F0F0C3C3C3BDBDBDF1F1F1F4F4F4E9E9E9
+        EAEAEAE9E9E9E9E9E9E8E8E8E9E9E9EAEAEAEAEAEAEAEAEAFAFAFAFBFBFBEDED
+        EDEDEDEDEDEDEDEBEBEBE9E9E9E9E9E9E9E9E9D3D3D3BDBDBDD5D5D5E6E6E6EB
+        EBEBECECECDDDDDDE8E8E8F4F4F4F4F4F4F4F4F4F6F6F6F9F9F9FAFAFAFBFBFB
+        FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFE8E8E8E6E6E6E2E2E2E3E3E3E4E4E4E5E5
+        E5E7E7E7C6C6C6D3D3D3F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F2F2F2EF
+        EFEFF3F3F3F9F9F9EAEAEAFEFEFEFFFFFFF1F1F1EDEDEDE7E7E7E7E7E7E7E7E7
+        E7E7E7E7E7E7E7E7E70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFBFBFB0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFF
+        FFFFFFFFFFF9F9F9FBFBFBFBFBFBFBFBFBFBFBFB800000800000800000800000
+        800000F7F7F7F8F8F8F7F7F7F6F6F6FFFFFFFFFFFFFFFFFFFCFCFCEAEAEAEAEA
+        EAECECECEDEDEDEDEDEDFCFCFCFFFFFF80000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000FFFFFF
+        E6E6E6C5C5C5DDDDDDD1D1D1CCCCCCE7E7E7DBDBDBBDBDBDCCCCCCE4E4E4ECEC
+        ECEEEEEEEDEDEDF1F1F1F8F8F8FFFFFFFFFFFFFFFFFFECECECE9E9E980000080
+        0000800000800000800000E7E7E7EAEAEAD7D7D7C1C1C1ACACACBCBCBCE0E0E0
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFEFEFEFDEDEDEF7F7F7FCFCFCEDEDEDECECECEDEDEDEEEEEEEB
+        EBEBEBEBEBEBEBEBEAEAEAE5E5E5BABABACCCCCCF4F4F4F6F6F60000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF5F5F5F3F3
+        F3FFFFFFF8F8F8E7E7E7E8E8E8E9E9E9E9E9E9DADADAF9F9F9FFFFFFFFFFFFFE
+        FEFEFDFDFDFCFCFCFCFCFCFFFFFFFFFFFFFBFBFBECECECEBEBEBEAEAEAEAEAEA
+        DCDCDCE2E2E2EDEDEDEDEDEDF0F0F0F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F8F8F8F7F7F7F6F6F6F5F5F5F5F5F5F8
+        F8F8F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F4F4F4F5F5F5F4F4F4F7F7F7FBFBFB
+        FFFFFFFFFFFFE4E4E4E2E2E2DFDFDFDEDEDEDEDEDEB7B7B7CACACAF3F3F3F5F5
+        F5F8F8F8F9F9F9F7F7F7F7F7F7F5F5F5F4F4F4F5F5F5F5F5F5F2F2F2E2E2E2FF
+        FFFFCECECECFCFCFCDCDCDCCCCCCC8C8C8A9A9A9CCCCCCFEFEFEE9E9E9DDDDDD
+        E9E9E9E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBEDEDEDECECECEDEDEDEEEEEEEEEE
+        EEECECECEAEAEAEAEAEAE7E7E7E8E8E8E8E8E8BABABABABABAFAFAFAFDFDFDF3
+        F3F3EFEFEFF1F1F1DCDCDCE2E2E2F3F3F3F4F4F4F5F5F5F7F7F7FAFAFAFCFCFC
+        FEFEFEFEFEFEFFFFFFFFFFFFEAEAEAE6E6E6E2E2E2E4E4E4E5E5E5E6E6E6E6E6
+        E6E9E9E9C8C8C8D4D4D4F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F3F3F3F4
+        F4F4F9F9F9FDFDFDFDFDFDFFFFFFFFFFFFF0F0F0EDEDEDE7E7E7E7E7E7E7E7E7
+        E7E7E7E7E7E7E7E7E70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFCFCFCF9F9F90000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFF
+        FFFFF8F8F8FFFFFFFFFFFFFFFFFFFCFCFCFEFEFE800000800000800000800000
+        800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEAEAEAE9E9
+        E9EAEAEAEBEBEBEBEBEBEBEBEBEBEBEB80000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000DCDCDCE9E9E9E8E8E8E7E7E7F4F4F4E8E8E8DADADAE6E6E6EFEFEFFCFC
+        FCFFFFFFFDFDFDF1F1F1FFFFFFFFFFFFFFFFFFFDFDFDEAEAEAE9E9E9E8E8E880
+        0000800000800000800000800000EAEAEAC4C4C4BFBFBFD3D3D3E6E6E6F6F6F6
+        F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF7F7F7FFFFFFFFFFFFF0F0F0F0F0F0EEEEEEECECECEB
+        EBEBEBEBEBEBEBEBEAEAEAE6E6E6BCBCBCD0D0D0F5F5F5F8F8F80000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF6F6F6F4F4
+        F4F5F5F5FFFFFFF4F4F4E9E9E9E9E9E9E7E7E7E9E9E9FBFBFBFFFFFFEDEDEDEB
+        EBEBFAFAFAF7F7F7F8F8F8FFFFFFFFFFFFF9F9F9EBEBEBE9E9E9E9E9E9E9E9E9
+        DADADAC4C4C4DFDFDFF1F1F1F4F4F4F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F3F3F3F1F1F1F1F1F1F5F5F5F8
+        F8F8F9F9F9FAFAFAF9F9F9F7F7F7F7F7F7F4F4F4F5F5F5F6F6F6F8F8F8FFFFFF
+        FFFFFFFFFFFFE7E7E7E1E1E1DEDEDEE0E0E0D1D1D1ACACACCFCFCFF4F4F4F6F6
+        F6F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F6F6F6F3F3F3EEEEEEECECECFF
+        FFFFD9D9D9D8D8D8D6D6D6D5D5D5D1D1D1CFCFCFE0E0E0F7F7F7F7F7F7FFFFFF
+        F7F7F7E7E7E7E9E9E9E9E9E9E9E9E9ECECECECECECEBEBEBEBEBEBECECECEBEB
+        EBEAEAEAE9E9E9E9E9E9E7E7E7E8E8E8E7E7E7BDBDBDD4D4D4FFFFFFFFFFFFF1
+        F1F1EEEEEEEEEEEEC3C3C3CECECEF4F4F4F3F3F3F4F4F4F5F5F5F9F9F9FBFBFB
+        FCFCFCFCFCFCFFFFFFFFFFFFE9E9E9E4E4E4E4E4E4E6E6E6E4E4E4E4E4E4E6E6
+        E6D9D9D9B7B7B7D4D4D4F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F6
+        F6F6FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDE9E9E9E6E6E6E6E6E6E7E7E7
+        E7E7E7E7E7E70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF7F7F7F7F7F70000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFE9E9E9FDFDFDFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF800000800000800000
+        800000800000800000FFFFFFFFFFFFFFFFFFFEFEFEEDEDEDEAEAEAE9E9E9E9E9
+        E9EAEAEAEBEBEBEBEBEBEBEBEB80000080000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F3F3F3F2F2F2F3F3F3F0F0F0EDEDEDEEEEEEFEFEFEFFFF
+        FFFFFFFFF5F5F5FFFFFFFFFFFFFFFFFFFBFBFBECECECEAEAEAE9E9E9E9E9E980
+        0000800000800000800000800000800000C4C4C4D3D3D3F7F7F7F9F9F9F9F9F9
+        F8F8F8F8F8F80000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1EFEFEFEAEAEAE8E8E8E8
+        E8E8E8E8E8E8E8E8E8E8E8E2E2E2BCBCBCD0D0D0F5F5F5FBFBFBFEFEFE0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF0F0F0F1F1
+        F1F4F4F4FFFFFFEDEDEDCCCCCCC9C9C9D6D6D6E9E9E9ECECECEBEBEBD9D9D9E5
+        E5E5F4F4F4F3F3F3F7F7F7FFFFFFFFFFFFFCFCFCEEEEEEECECECECECECE9E9E9
+        C8C8C8BFBFBFE2E2E2F4F4F4F5F5F5F6F6F6F7F7F7FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFFFFFFFF4F4F4F8F8F8FBFBFBFC
+        FCFCFBFBFBFBFBFBFBFBFBFAFAFAF8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFE9E9E9E6E6E6E6E6E6E9E9E9CACACAC4C4C4E6E6E6F6F6F6F8F8
+        F8F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F7F7F7F6F6F6F2F2F2EEEEEEEFEFEFFF
+        FFFFF1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F2F2F2F6F6F6FFFFFFFFFFFF
+        E8E8E8C7C7C7C7C7C7D8D8D8EAEAEAECECECEEEEEEEDEDEDEBEBEBE9E9E9E9E9
+        E9E9E9E9E9E9E9E9E9E9E7E7E7E8E8E8E7E7E7C1C1C1D5D5D5FFFFFFEDEDEDD9
+        D9D9EBEBEBE9E9E9BDBDBDCCCCCCF3F3F3F1F1F1F1F1F1F4F4F4F7F7F7F9F9F9
+        F9F9F9FBFBFBFFFFFFFDFDFDDCDCDCCACACACACACACDCDCDD9D9D9E4E4E4DCDC
+        DCBDBDBDC5C5C5E5E5E5F5F5F5F6F6F6F7F7F7F6F6F6F4F4F4F3F3F3F3F3F3F6
+        F6F6FBFBFBFDFDFDFCFCFCFFFFFFFDFDFDEAEAEAE8E8E8E4E4E4E4E4E4E2E2E2
+        E2E2E2E4E4E40000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAE6E6E6F7F7F70000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFEAEAEAEAEAEAEAEAEAF8F8F8FFFFFFFFFFFFFFFFFF800000800000
+        800000800000800000800000ECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAEAEA
+        EAEAEAEAEBEBEBEBEBEB80000080000080000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000EDEDEDF1F1F1FFFFFFFFFFFFFFFF
+        FFFEFEFEECECECFBFBFBFFFFFFFBFBFBE9E9E9E9E9E9EAEAEAEAEAEAECECECEA
+        EAEA800000800000800000800000800000800000D5D5D5F8F8F8F9F9F9F8F8F8
+        F7F7F7F7F7F7F5F5F50000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFFCFCFCEDEDEDECECECE6E6E6E6E6E6E7
+        E7E7E7E7E7E7E7E7E7E7E7E2E2E2BFBFBFD1D1D1F8F8F8FCFCFCFEFEFE0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF2F2F2F4F4
+        F4F7F7F7F8F8F8EAEAEAD8D8D8D2D2D2E0E0E0D5D5D5DEDEDEF1F1F1ECECECEA
+        EAEAFFFFFFFFFFFFF8F8F8FFFFFFFFFFFFFEFEFEF0F0F0EDEDEDECECECECECEC
+        C7C7C7D0D0D0F1F1F1F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFEDED
+        EDE9E9E9E8E8E8EAEAEAEAEAEAE7E7E7FDFDFDFAFAFAF9F9F9FEFEFEFEFEFEFF
+        FFFFFEFEFEFDFDFDFEFEFEFCFCFCFBFBFBFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF
+        FDFDFDE8E8E8E9E9E9E7E7E7E8E8E8EAEAEADBDBDBE6E6E6F5F5F5F7F7F7F8F8
+        F8F8F8F8F8F8F8F6F6F6F7F7F7F8F8F8F7F7F7F5F5F5F4F4F4F4F4F4F6F6F6FF
+        FFFFF3F3F3F0F0F0EEEEEEEEEEEEEEEEEEF1F1F1F6F6F6F8F8F8F6F6F6F3F3F3
+        C7C7C7C4C4C4D5D5D5E7E7E7ECECECF1F1F1F2F2F2EDEDEDEAEAEAE9E9E9E9E9
+        E9E9E9E9E9E9E9E7E7E7E6E6E6E8E8E8E7E7E7D6D6D6F8F8F8FFFFFFE7E7E7FB
+        FBFBFDFDFDE6E6E6BBBBBBCACACAF1F1F1F0F0F0F1F1F1F4F4F4F6F6F6F6F6F6
+        F8F8F8FBFBFBFDFDFDFCFCFCEAEAEAD4D4D4D5D5D5D9D9D9E2E2E2D9D9D9BFBF
+        BFC2C2C2E0E0E0F4F4F4F4F4F4F5F5F5F7F7F7F5F5F5F4F4F4F6F6F6F8F8F8F9
+        F9F9FCFCFCFAFAFAF9F9F9FEFEFEFFFFFFF7F7F7EAEAEAE8E8E8E7E7E7E6E6E6
+        D2D2D2D7D7D70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFD8D8D8F8F8F8FFFFFFF7F7F7
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFE9E9E9EAEAEAE9E9E9EAEAEAEBEBEBECECECF2F2F2800000
+        800000800000800000800000E9E9E9E9E9E9EBEBEBECECECEAEAEAE9E9E9EAEA
+        EAE9E9E9EAEAEA80000080000080000080000080000080000080000080000080
+        0000800000E6E6E6D1D1D1DFDFDFF5F5F5FBFBFBFBFBFB800000800000800000
+        800000800000800000800000800000800000800000FFFFFFFFFFFFFFFFFFFCFC
+        FCEEEEEEEAEAEAE8E8E8E8E8E8E6E6E6E6E6E6E8E8E8E9E9E9E9E9E9EBEBEBE9
+        E9E9E7E7E7800000800000800000800000800000800000F9F9F9FAFAFAF8F8F8
+        F7F7F7F4F4F4F2F2F2F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFCACACAC3C3C3BFBFBFD5D5D5E7
+        E7E7E9E9E9E9E9E9E7E7E7D4D4D4AFAFAFD3D3D3F9F9F9FBFBFBFBFBFBFCFCFC
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFAFA
+        FAFAFAFAFBFBFBF4F4F4EFEFEFEDEDEDEEEEEEDEDEDEFAFAFAFFFFFFE9E9E9E7
+        E7E7F3F3F3F5F5F5FFFFFFFFFFFFFFFFFFEFEFEFEDEDEDEAEAEAE9E9E9E9E9E9
+        C0C0C0CCCCCCF3F3F3F4F4F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFF1F1F1E9E9
+        E9E8E8E8E8E8E8E9E9E9E7E7E7E4E4E4D1D1D1BABABABEBEBEE7E7E7FEFEFEFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFFFFFFFFFFFFE6E6E6
+        E6E6E6E7E7E7E9E9E9E7E7E7E9E9E9EBEBEBECECECEAEAEAFFFFFFFFFFFFFFFF
+        FFF7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F5F5F5F3F3F3F4F4F4F6F6F6F7F7F7FF
+        FFFFF5F5F5EEEEEEF0F0F0F2F2F2F3F3F3F7F7F7FCFCFCFFFFFFFFFFFFFCFCFC
+        E2E2E2E7E7E7F7F7F7F7F7F7F9F9F9F3F3F3EFEFEFE7E7E7E4E4E4E3E3E3E6E6
+        E6E8E8E8E7E7E7E6E6E6E7E7E7E9E9E9E7E7E7E9E9E9FDFDFDFEFEFEF9F9F9FF
+        FFFFFFFFFFD0D0D0A0A0A0C8C8C8F1F1F1F2F2F2F2F2F2F2F2F2F1F1F1F2F2F2
+        F6F6F6F9F9F9FBFBFBFCFCFCF8F8F8F1F1F1F1F1F1F0F0F0ECECECDFDFDFD3D3
+        D3DFDFDFF0F0F0F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F7F7F7FAFAFAFAFAFAF9
+        F9F9F9F9F9FBFBFBFEFEFEFEFEFEFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEA
+        CBCBCBE7E7E70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAFCFCFCEAEAEAE5E5E5
+        F5F5F50000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFE9E9E9EAEAEAE7E7E7E8E8E8E9E9E9EAEAEAEFEFEFF2F2F2
+        800000800000800000800000800000E7E7E7E9E9E9EAEAEAE9E9E9E9E9E9E9E9
+        E9E9E9E9E9E9E9800000800000800000800000800000800000800000800000EB
+        EBEBE9E9E9E4E4E4E5E5E5E6E6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF800000800000800000800000800000800000800000FFFFFFFAFAFAEDED
+        EDEAEAEAEAEAEAE8E8E8E7E7E7E4E4E4E4E4E4D3D3D3B9B9B9D0D0D0ECECECE9
+        E9E9E6E6E6800000800000800000800000800000800000F8F8F8F8F8F8F8F8F8
+        F7F7F7F1F1F1F2F2F2F6F6F6F7F7F70000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFD1D1D1D1D1D1E1E1E1D6
+        D6D6D7D7D7E7E7E7E6E6E6C3C3C3BCBCBCE2E2E2F8F8F8F8F8F8F9F9F9F9F9F9
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFAFA
+        FAFAFAFAFBFBFBF9F9F9F4F4F4F4F4F4F3F3F3F3F3F3FFFFFFFFFFFFECECECE6
+        E6E6E2E2E2E6E6E6F8F8F8FFFFFFFBFBFBEAEAEAEAEAEAE9E9E9E7E7E7E6E6E6
+        BABABACACACAF0F0F0F0F0F0F1F1F1F5F5F5FFFFFFFFFFFFF2F2F2ECECECE7E7
+        E7E8E8E8E7E7E7E4E4E4CACACAB5B5B5A1A1A1B5B5B5CDCDCDE4E4E4FBFBFBFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6
+        E6E6E6E9E9E9E9E9E9E8E8E8EAEAEAECECECEAEAEAECECECFDFDFDFFFFFFECEC
+        ECE6E6E6F7F7F7F8F8F8F8F8F8F7F7F7F5F5F5F4F4F4F7F7F7F8F8F8F8F8F8FF
+        FFFFF3F3F3F0F0F0F4F4F4F7F7F7F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFE7E7E7
+        E6E6E6F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFDFDFDE6E6E6E1E1E1E0E0E0E4E4
+        E4E6E6E6E5E5E5E5E5E5E7E7E7E7E7E7E7E7E7E9E9E9ECECECEAEAEAD3D3D3F8
+        F8F8E7E7E7A1A1A1B1B1B1DEDEDEF3F3F3F3F3F3F2F2F2EFEFEFEFEFEFF3F3F3
+        F9F9F9FAFAFAF9F9F9F9F9F9FAFAFAF8F8F8F4F4F4F2F2F2F0F0F0EEEEEEECEC
+        ECEFEFEFF1F1F1F3F3F3F5F5F5F4F4F4F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFFF
+        FFFFF9F9F9FEFEFEFEFEFEFAFAFAFFFFFFFFFFFFE8E8E8EAEAEAEBEBEBEAEAEA
+        CFCFCFF4F4F40000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAEBEBEBD8D8D8F4F4F4
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFE6E6E6E5E5E5E7E7E7E9E9E9EAEAEAEAEAEAEEEEEE
+        800000800000800000800000800000E6E6E6E7E7E7E8E8E8E6E6E6E7E7E7E9E9
+        E9E8E8E8E9E9E9800000800000800000800000800000800000800000EEEEEEE8
+        E8E8E6E6E6E4E4E4E3E3E3E5E5E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FCFCFCF9F9F9F5F5F5800000800000800000800000800000800000EFEFEFEDED
+        EDECECECEBEBEBE9E9E9E6E6E6E2E2E2CCCCCC9E9E9EAFAFAFE1E1E1ECECECE9
+        E9E9E7E7E7E4E4E4800000800000800000800000800000800000F9F9F9F8F8F8
+        F5F5F5F0F0F0F4F4F4FAFAFAFAFAFAFEFEFE0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF6F6F6F5F5F5E6
+        E6E6E6E6E6E7E7E7E8E8E8D9D9D9F5F5F5FFFFFFF7F7F7F7F7F7F6F6F6F7F7F7
+        F8F8F80000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFAFA
+        FAFBFBFBFCFCFCFCFCFCF9F9F9F8F8F8F7F7F7F8F8F8FCFCFCFFFFFFFDFDFDDF
+        DFDFDFDFDFE3E3E3E8E8E8EBEBEBEAEAEAE9E9E9E9E9E9E7E7E7E7E7E7E6E6E6
+        BABABACACACAEFEFEFF0F0F0F5F5F5F8F8F8FFFFFFFFFFFFEFEFEFEBEBEBE6E6
+        E6E6E6E6E3E3E3E0E0E0B1B1B1B1B1B1CECECEE2E2E2F7F7F7F8F8F8F9F9F9FF
+        FFFFFFFFFFFFFFFFFBFBFBF4F4F4F4F4F4F4F4F4FFFFFFFFFFFFF4F4F4E2E2E2
+        E4E4E4EAEAEAE9E9E9E9E9E9ECECECEDEDEDEBEBEBECECECEEEEEEEEEEEEDBDB
+        DBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F9F9F9F9F9F9F9F9F9FF
+        FFFFF3F3F3F3F3F3F5F5F5F5F5F5F7F7F7F9F9F9FFFFFFFFFFFFFDFDFDDFDFDF
+        E8E8E8F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFF4F4F4DEDEDEDBDBDBDDDDDDE4E4
+        E4E6E6E6E5E5E5E5E5E5E8E8E8E9E9E9E9E9E9E9E9E9EBEBEBE9E9E9BFBFBFD2
+        D2D2E2E2E2CCCCCCE0E0E0F4F4F4F5F5F5F4F4F4F3F3F3F0F0F0F3F3F3F9F9F9
+        FBFBFBFEFEFEFCFCFCF9F9F9FCFCFCF9F9F9F6F6F6F5F5F5F4F4F4F0F0F0ECEC
+        ECEDEDEDEEEEEEF3F3F3F4F4F4F1F1F1F1F1F1F5F5F5F7F7F7FFFFFFFFFFFFF7
+        F7F7FAFAFAFDFDFDF8F8F8FFFFFFFFFFFFFFFFFFE9E9E9ECECECEDEDEDECECEC
+        DFDFDFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFE9E9E9EAEAEAE9E9E9F7F7F7
+        F9F9F9FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFE7E7E7E7E7E7E8E8E8E8E8E8DCDCDCDBDBDB
+        E9E9E9800000800000800000800000800000E6E6E6E6E6E6E4E4E4E6E6E6E9E9
+        E9E7E7E7E7E7E7EAEAEA800000800000800000800000800000800000EDEDEDE8
+        E8E8E7E7E7E5E5E5E2E2E2E1E1E1E6E6E6E8E8E8F7F7F7EFEFEFF2F2F2F9F9F9
+        F5F5F5F7F7F7F4F4F4F0F0F0EDEDED8000008000008000008000008000008000
+        00EAEAEAEAEAEAE9E9E9D0D0D0B4B4B49B9B9BB4B4B4E2E2E2F8F8F8FBFBFBEA
+        EAEAE7E7E7E4E4E4E4E4E4800000800000800000800000800000800000F6F6F6
+        F1F1F1EDEDEDF3F3F3F9F9F9FAFAFAFEFEFEFDFDFD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFDFD
+        FDFDFDFDFCFCFCFBFBFBF8F8F8F9F9F9F9F9F9F9F9F9FAFAFAFFFFFFF0F0F0CD
+        CDCDDFDFDFE3E3E3E6E6E6E7E7E7E9E9E9E7E7E7E7E7E7E7E7E7E7E7E7E2E2E2
+        B7B7B7C8C8C8EEEEEEF3F3F3F8F8F8F9F9F9FFFFFFFFFFFFEDEDEDEAEAEAE6E6
+        E6E5E5E5CCCCCCB2B2B29C9C9CCBCBCBF7F7F7F7F7F7F7F7F7F9F9F9F9F9F9FF
+        FFFFFFFFFFEAEAEAE6E6E6E2E2E2E3E3E3E6E6E6E7E7E7E9E9E9E7E7E7D5D5D5
+        DBDBDBECECECE9E9E9EAEAEAECECECECECECEAEAEAEBEBEBEDEDEDECECECEBEB
+        EBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFFFFFFFFFFFFF8F8F8F9F9F9FF
+        FFFFF4F4F4F5F5F5F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFF0F0F0EAEAEA
+        E9E9E9F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5F1F1F1CECECECCCCCCCFCFCFD4D4
+        D4E7E7E7E3E3E3E3E3E3E9E9E9E9E9E9E8E8E8E9E9E9EAEAEAE9E9E9C2C2C2D3
+        D3D3F6F6F6F4F4F4F4F4F4F5F5F5F5F5F5F3F3F3F0F0F0F0F0F0F4F4F4F9F9F9
+        FBFBFBFFFFFFFEFEFEFBFBFBFFFFFFFFFFFFF9F9F9F5F5F5F1F1F1ECECECE9E9
+        E9EEEEEEF3F3F3F5F5F5F5F5F5F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7FFFFFFF9
+        F9F9EAEAEAFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8ECECECEDEDEDEEEEEEEDEDED
+        EEEEEEFAFAFA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAEAEAEAEAEAEAE9E9E9
+        E9E9E9F5F5F5F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFE9E9E9EAEAEAECECECD5D5D5E4E4E4
+        FFFFFFF4F4F4800000800000800000800000800000E3E3E3E4E4E4E7E7E7E9E9
+        E9E7E7E7E7E7E7E8E8E8800000800000800000800000800000800000ECECECE9
+        E9E9E7E7E7E4E4E4E2E2E2E0E0E0E5E5E5E8E8E8E7E7E7CECECED7D7D7F1F1F1
+        F0F0F0F3F3F3F4F4F4F2F2F2EDEDEDEEEEEE8000008000008000008000008000
+        00800000EAEAEAE8E8E8B6B6B6AFAFAFCBCBCBE4E4E4FAFAFAFAFAFAFFFFFFFF
+        FFFFFFFFFFE8E8E8E8E8E8800000800000800000800000800000800000F2F2F2
+        ECECECEEEEEEF6F6F6FAFAFAFAFAFAFEFEFEFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFCFCFCFCFCFCFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFFFFFFF1F1F1F4
+        F4F4F5F5F5E8E8E8E8E8E8E9E9E9E8E8E8E6E6E6E6E6E6E2E2E2DFDFDFDCDCDC
+        B9B9B9CACACAEEEEEEF5F5F5F9F9F9FAFAFAFFFFFFFFFFFFECECECE9E9E9E6E6
+        E6D2D2D29E9E9EB2B2B2CCCCCCE1E1E1F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8FF
+        FFFFFDFDFDE8E8E8E5E5E5E3E3E3E6E6E6E9E9E9EAEAEAEAEAEAE9E9E9CACACA
+        D8D8D8EAEAEAE8E8E8EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBECECECEAEAEAE9E9
+        E9E9E9E9E8E8E8E9E9E9EAEAEAEDEDEDE8E8E8F8F8F8FCFCFCFFFFFFFFFFFFFF
+        FFFFF7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFE9E9E9
+        E7E7E7DADADAE8E8E8F7F7F7F7F7F7F7F7F7F7F7F7E5E5E5E3E3E3C5C5C5D3D3
+        D3D5D5D5BFBFBFC6C6C6C9C9C9D9D9D9E9E9E9EAEAEAEAEAEAEAEAEAD7D7D7E6
+        E6E6F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5F3F3F3F0F0F0F3F3F3F6F6F6F9F9F9
+        FCFCFCFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFBFBFBF5F5F5F0F0F0EAEAEAECEC
+        ECF2F2F2F7F7F7F8F8F8F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7FFFFFFFF
+        FFFFE7E7E7F4F4F4FFFFFFFFFFFFFCFCFCEEEEEEEDEDEDEDEDEDEEEEEEEDEDED
+        EBEBEBEAEAEA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAECECECECECECEAEAEA
+        E9E9E9E7E7E7E9E9E90000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEDEDEDEFEFEFE2E2E2FFFFFF
+        FFFFFFF3F3F3800000800000800000800000800000800000E7E7E7E7E7E7E7E7
+        E7E4E4E4E4E4E4E4E4E4E8E8E8800000800000800000800000800000EDEDEDEA
+        EAEAE5E5E5E3E3E3E4E4E4E3E3E3E6E6E6E7E7E7DBDBDBB9B9B9D2D2D2F1F1F1
+        F3F3F3F4F4F4F5F5F5EEEEEEE7E7E7EBEBEBF0F0F08000008000008000008000
+        00800000800000B7B7B7999999CBCBCBF9F9F9FAFAFAF9F9F9FCFCFCFFFFFFFF
+        FFFFFFFFFFE9E9E9E7E7E7E7E7E7800000800000800000800000800000800000
+        F1F1F1F5F5F5F9F9F9FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF9F9F9F9F9F9F8F8F8F9F9F9F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFE9E9E9E9E9E9E7E7E7E4E4E4E3E3E3E1E1E1DEDEDEE1E1E1E2E2E2
+        D4D4D4EFEFEFFFFFFFF8F8F8FBFBFBFBFBFBFFFFFFFFFFFFEAEAEAE7E7E7D1D1
+        D1A5A5A5B5B5B5E1E1E1F6F6F6F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F7F7F7FC
+        FCFCFAFAFAE9E9E9E7E7E7E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9C8C8C8
+        D3D3D3F1F1F1DADADACCCCCCDEDEDEECECECEBEBEBECECECEBEBEBE9E9E9E9E9
+        E9E9E9E9E8E8E8E8E8E8E9E9E9EAEAEAE4E4E4EAEAEAF0F0F0FFFFFFFFFFFFFF
+        FFFFFAFAFAF9F9F9FFFFFFEDEDEDFFFFFFFFFFFFFFFFFFF3F3F3EEEEEEE9E9E9
+        E7E7E7DCDCDCE9E9E9F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F7F7F7E6E6E6E4E4
+        E4E2E2E2D0D0D0D1D1D1D6D6D6F7F7F7FBFBFBECECECECECECEAEAEAE9E9E9D7
+        D7D7E5E5E5F4F4F4F5F5F5F5F5F5F4F4F4F1F1F1F1F1F1F7F7F7FAFAFAFAFAFA
+        FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF1F1F1ECECECEFEF
+        EFF6F6F6F8F8F8F8F8F8F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7F8F8F8FFFFFFFF
+        FFFFE4E4E4E5E5E5E6E6E6E9E9E9ECECECECECECEDEDEDECECECEDEDEDECECEC
+        E9E9E9E9E9E90000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAECECECECECECEAEAEA
+        E9E9E9E9E9E9E9E9E9EAEAEA0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F0F0F0ECECECFCFCFC
+        FDFDFDECECECE9E9E9800000800000800000800000800000D3D3D3BCBCBCCFCF
+        CFD0D0D0BFBFBFC1C1C1C6C6C6800000800000800000800000800000EEEEEEEA
+        EAEAE4E4E4E4E4E4E6E6E6E3E3E3D3D3D3C6C6C6B6B6B6BEBEBEE2E2E2F6F6F6
+        F6F6F6F6F6F6F3F3F3E7E7E7E8E8E8EEEEEEF4F4F4F9F9F98000008000008000
+        00800000800000800000CACACAE4E4E4FBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFF
+        FFFFEDEDEDE7E7E7E6E6E6E7E7E7E3E3E3800000800000800000800000800000
+        800000FAFAFAF9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFECECECEAEAEA0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF8F8F8F8F8F8F8F8F8F9F9F9F9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFF
+        FFFFF8F8F8E9E9E9E9E9E9E6E6E6E4E4E4E6E6E6E6E6E6E7E7E7EBEBEBEBEBEB
+        EAEAEAF8F8F8F9F9F9F8F8F8FAFAFAFBFBFBFFFFFFFFFFFFEAEAEAE6E6E6BCBC
+        BCBABABAE3E3E3F7F7F7F6F6F6F6F6F6F9F9F9FAFAFAF9F9F9F8F8F8F8F8F8FC
+        FCFCF9F9F9F4F4F4EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAC9C9C9
+        D3D3D3F2F2F2E6E6E6DADADAFBFBFBFDFDFDECECECEBEBEBEAEAEAE9E9E9E9E9
+        E9E8E8E8E6E6E6E6E6E6E5E5E5E4E4E4E2E2E2E7E7E7ECECECEFEFEFF1F1F1FF
+        FFFFFCFCFCFAFAFAF8F8F8EDEDEDFFFFFFFFFFFFF4F4F4F1F1F1ECECECE8E8E8
+        E9E9E9EAEAEAEAEAEAFFFFFFFFFFFFF5F5F5F5F5F5F6F6F6F5F5F5F4F4F4F4F4
+        F4F5F5F5F2F2F2F3F3F3F7F7F7FFFFFFFCFCFCEDEDEDECECECEAEAEAE9E9E9D7
+        D7D7E5E5E5F5F5F5F6F6F6F6F6F6F5F5F5F4F4F4F5F5F5F9F9F9FBFBFBFBFBFB
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F4F4F4FCFCFCF8F8F8F1F1
+        F1F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAF8F8F8F7F7F7F7F7F7FFFFFFFFFFFFFF
+        FFFFE3E3E3E4E4E4E2E2E2E1E1E1E9E9E9EAEAEAEAEAEAECECECECECECEAEAEA
+        E9E9E9EAEAEA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAEBEBEBEBEBEBEAEAEA
+        E9E9E9E7E7E7E5E5E5E8E8E8EDEDED0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEDEDEDEBEBEBEEEEEE
+        EEEEEEEDEDEDECECECE9E9E9800000800000800000800000800000B9B9B9E1E1
+        E1C3C3C3C1C1C1D4D4D4D5D5D5D5D5D5800000800000800000800000800000EB
+        EBEBE6E6E6E4E4E4E4E4E4E2E2E2C1C1C1BCBCBCD1D1D1E2E2E2F2F2F2F5F5F5
+        F6F6F6F6F6F6F1F1F1ECECECF0F0F0F4F4F4F7F7F7FAFAFAFBFBFB8000008000
+        00800000800000800000F8F8F8FBFBFBFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFF
+        FFFFEDEDEDE7E7E7E3E3E3DFDFDFDCDCDCD2D2D2800000800000800000800000
+        800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAE8E8
+        E80000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF9F9F9FBFBFBFAFAFAF9F9F9FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFF
+        FFFFE9E9E9E7E7E7E6E6E6E4E4E4E5E5E5E9E9E9EBEBEBECECECEDEDEDEDEDED
+        EBEBEBEBEBEBECECECD9D9D9E8E8E8FBFBFBFFFFFFFFFFFFEAEAEAE6E6E6C3C3
+        C3D5D5D5F7F7F7F7F7F7F7F7F7F8F8F8FAFAFAF9F9F9F9F9F9FAFAFAFBFBFBFD
+        FDFDF7F7F7F0F0F0FFFFFFF9F9F9EBEBEBECECECEDEDEDEFEFEFEEEEEEDCDCDC
+        E5E5E5F7F7F7F8F8F8FBFBFBFFFFFFFFFFFFEBEBEBE9E9E9E9E9E9E9E9E9E8E8
+        E8E7E7E7E1E1E1E2E2E2E1E1E1E2E2E2E7E7E7E9E9E9EBEBEBEFEFEFEEEEEEFF
+        FFFFFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2DCDCDCC2C2C2BEBEBE
+        D3D3D3E7E7E7EAEAEAFBFBFBFCFCFCF9F9F9F8F8F8F7F7F7F7F7F7F5F5F5F5F5
+        F5F4F4F4F1F1F1F5F5F5F9F9F9F9F9F9FFFFFFFAFAFAEBEBEBEAEAEAEAEAEAEB
+        EBEBDCDCDCE7E7E7F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8FCFCFCFBFBFBFAFAFA
+        FFFFFFFFFFFFFEFEFEEBEBEBF8F8F8F8F8F8EBEBEBE8E8E8F4F4F4E4E4E4E6E6
+        E6FBFBFBFBFBFBFCFCFCFBFBFBF8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFF8
+        F8F8E6E6E6E6E6E6E1E1E1E2E2E2EAEAEAECECECEBEBEBEBEBEBECECECEDEDED
+        ECECECEEEEEE0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEBEBEBEBEBEBECECECEAEAEA
+        E8E8E8E7E7E7E7E7E7DADADACCCCCC0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEBEBEBEAEAEAEBEBEB
+        ECECECECECECEBEBEBE9E9E9800000800000800000800000800000800000F8F8
+        F8E8E8E8E8E8E8F8F8F8F8F8F8F8F8F8800000800000800000800000800000EA
+        EAEAE7E7E7E4E4E4E5E5E5E4E4E4C6C6C6D5D5D5F4F4F4F7F7F7F5F5F5F6F6F6
+        F8F8F8F8F8F8F2F2F2F2F2F2F6F6F6F8F8F8FAFAFAFCFCFCFEFEFE8000008000
+        00800000800000800000800000FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFDF
+        DFDFC9C9C9C1C1C1BEBEBEBFBFBFC5C5C5BCBCBCCACACA800000800000800000
+        800000800000FFFFFFFFFFFFFFFFFFF1F1F1FCFCFCF8F8F8E8E8E8E8E8E8E7E7
+        E7E4E4E40000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF9F9F9FBFBFBFAFAFAF9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFEAEAEAE4E4E4E6E6E6E7E7E7E7E7E7EAEAEAEAEAEAEBEBEBEDEDEDEDEDED
+        EAEAEAEBEBEBECECECD9D9D9EAEAEAFFFFFFFFFFFFFFFFFFE8E8E8E4E4E4D6D6
+        D6E5E5E5F9F9F9F8F8F8F7F7F7F8F8F8F8F8F8F9F9F9FDFDFDFDFDFDFBFBFBFB
+        FBFBF5F5F5F3F3F3FFFFFFFFFFFFEFEFEFEFEFEFF1F1F1F0F0F0EEEEEEECECEC
+        DADADAE6E6E6F8F8F8FBFBFBFDFDFDF9F9F9EAEAEAEAEAEAEAEAEAE9E9E9E8E8
+        E8E8E8E8CFCFCFC5C5C5C3C3C3DADADAF1F1F1EEEEEEECECECF1F1F1EDEDEDFF
+        FFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDD8D8D8D0D0D0CECECE
+        E4E4E4ECECECECECECEAEAEAECECECEDEDEDFBFBFBFEFEFEFCFCFCF8F8F8F7F7
+        F7F3F3F3F3F3F3F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFEFEFEFEBEBEBECECECEC
+        ECECDBDBDBF2F2F2FFFFFFF7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F7F7F7
+        FBFBFBFFFFFFFCFCFCEBEBEBEBEBEBEBEBEBE9E9E9E6E6E6E9E9E9CECECEDEDE
+        DEFDFDFDFBFBFBF9F9F9F8F8F8F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFEA
+        EAEAEAEAEAE8E8E8E1E1E1D9D9D9D7D7D7E2E2E2EDEDEDECECECEDEDEDEDEDED
+        EEEEEEEDEDED0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEBEBEBEAEAEAEAEAEAEAEAEA
+        E7E7E7E8E8E8E8E8E8C7C7C7C4C4C4D3D3D30000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAECECEC
+        EDEDEDEDEDEDEBEBEBECECECECECEC8000008000008000008000008000008000
+        00F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFDFDFDECECECEBEBEBECECECE9
+        E9E9E6E6E6E4E4E4E5E5E5E2E2E2C3C3C3D0D0D0F2F2F2F5F5F5F5F5F5F7F7F7
+        F8F8F8F8F8F8F4F4F4F5F5F5F8F8F8FAFAFAFBFBFBFDFDFDFFFFFF8000008000
+        00800000800000800000800000800000FFFFFFFFFFFFFFFFFFFEFEFEFBFBFBE7
+        E7E7D5D5D5D0D0D0D0D0D0D3D3D3D8D8D8DADADAE6E6E6800000800000800000
+        800000800000800000E1E1E1C1C1C1C5C5C5F3F3F3F7F7F7E9E9E9E8E8E8E6E6
+        E6E6E6E6E8E8E80000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFF8F8F8FBFBFBF9F9F9FDFDFDFFFFFFFDFDFDFFFFFFFFFFFFFA
+        FAFAE9E9E9E6E6E6E9E9E9EAEAEAEAEAEAECECECECECECEEEEEEEFEFEFEDEDED
+        EAEAEAEBEBEBECECECEAEAEADDDDDDEDEDEDFFFFFFFFFFFFE9E9E9E6E6E6E6E6
+        E6E9E9E9FFFFFFFFFFFFF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+        F8F8FFFFFFFFFFFFFFFFFFFFFFFFF0F0F0EEEEEEEEEEEEECECECEAEAEAE9E9E9
+        C3C3C3D1D1D1F7F7F7FBFBFBFCFCFCFAFAFAFFFFFFFBFBFBECECECEAEAEAE9E9
+        E9E9E9E9C1C1C1C2C2C2D7D7D7EAEAEAF2F2F2EAEAEAE9E9E9F0F0F0EAEAEAFF
+        FFFFFCFCFCF9F9F9F7F7F7F9F9F9F1F1F1DDDDDDDADADAD6D6D6C0C0C0E2E2E2
+        FFFFFFFFFFFFFCFCFCEAEAEAEAEAEADCDCDCD0D0D0EBEBEBF4F4F4F3F3F3F7F7
+        F7F4F4F4F6F6F6F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFEFEFEFEBEBEBEAEAEAEA
+        EAEAE9E9E9F5F5F5E6E6E6E8E8E8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5
+        F8F8F8FFFFFFFBFBFBE8E8E8E9E9E9EBEBEBE8E8E8E7E7E7DCDCDCC2C2C2DEDE
+        DEF9F9F9F8F8F8F7F7F7F8F8F8F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFF9F9F9EC
+        ECECE9E9E9E7E7E7D3D3D3C0C0C0D2D2D2E6E6E6DDDDDDE0E0E0EDEDEDECECEC
+        ECECEC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAEAEAEAEAEAEAEAEAEA
+        E9E9E9E8E8E8E7E7E7C6C6C6D3D3D3F4F4F4F8F8F80000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEBEBEB
+        ECECECECECECEAEAEAEEEEEEEDEDEDECECEC8000008000008000008000008000
+        00F6F6F6F5F5F5F5F5F5F7F7F7F8F8F8F8F8F8E9E9E9F9F9F9FBFBFBEAEAEAE9
+        E9E9E6E6E6D0D0D0BCBCBCBCBCBCAFAFAFD1D1D1F5F5F5F8F8F8F7F7F7F8F8F8
+        F8F8F8F8F8F8F7F7F7F4F4F4F8F8F8FBFBFBFFFFFFFFFFFFFFFFFF8000008000
+        00800000800000800000800000800000FEFEFEFFFFFFFFFFFFFBFBFBFAFAFAF8
+        F8F8F6F6F6F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F3F3F3F5F5F5800000800000
+        800000800000800000E2E2E2C5C5C5D9D9D9FFFFFFFFFFFFEDEDEDEAEAEAE9E9
+        E9E9E9E9EAEAEAEBEBEB0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFF9F9F9FDFDFDF9F9F9FBFBFBFDFDFDF7F7F7FFFFFFFFFFFFEB
+        EBEBE9E9E9E9E9E9EAEAEAEAEAEAEAEAEAECECECEEEEEEEFEFEFEEEEEEECECEC
+        EBEBEBEAEAEAEBEBEBE8E8E8C7C7C7DBDBDBFFFFFFFFFFFFFBFBFBEAEAEAE9E9
+        E9E9E9E9F8F8F8E9E9E9EFEFEFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF7F7F7FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEECECECEAEAEAE9E9E9E8E8E8E8E8E8
+        BFBFBFD0D0D0F9F9F9FCFCFCFDFDFDFBFBFBFFFFFFFFFFFFECECECE9E9E9EBEB
+        EBEAEAEAC1C1C1D0D0D0F7F7F7F9F9F9F8F8F8D9D9D9C7C7C7CCCCCCC5C5C5FF
+        FFFFFFFFFFFFFFFFF5F5F5F6F6F6F5F5F5C7C7C7D0D0D0BDBDBDBABABAE4E4E4
+        FFFFFFFFFFFFECECECEAEAEAE9E9E9CFCFCFC8C8C8E7E7E7F1F1F1F4F4F4FEFE
+        FEFAFAFAF5F5F5F8F8F8F9F9F9F9F9F9FDFDFDFFFFFFFDFDFDEAEAEAECECECEA
+        EAEAEAEAEAE9E9E9D5D5D5E4E4E4F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5
+        F7F7F7FBFBFBFFFFFFF8F8F8ECECECEBEBEBE6E6E6D9D9D9C0C0C0CCCCCCE7E7
+        E7F5F5F5F6F6F6F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAEE
+        EEEEEAEAEAE7E7E7C8C8C8C9C9C9E6E6E6F1F1F1E7E7E7EAEAEADEDEDED1D1D1
+        D1D1D10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAEAEAEAEBEBEBECECEC
+        EBEBEBE9E9E9E9E9E9DADADAE4E4E4F5F5F5FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        EDEDEDECECECE9E9E9EEEEEEECECECE9E9E9E7E7E78000008000008000008000
+        00800000F4F4F4F8F8F8FCFCFCF9F9F9F8F8F8FFFFFFFFFFFFFFFFFFE9E9E9E6
+        E6E6D1D1D1A4A4A4BABABAD1D1D1D6D6D6FBFBFBFFFFFFFFFFFFF7F7F7F7F7F7
+        F8F8F8F8F8F8F7F7F7F6F6F6FCFCFCFFFFFFFFFFFF8000008000008000008000
+        00800000800000800000800000800000E1E1E1F6F6F6FEFEFEF9F9F9F9F9F9F8
+        F8F8F6F6F6F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6FFFFFFFFFFFF800000
+        800000800000800000800000BFBFBFD0D0D0FEFEFEF8F8F8EDEDEDECECECEBEB
+        EBEBEBEBECECECEBEBEBEBEBEBEBEBEB0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF7F7F7FCFCFCFAFAFAFAFAFA
+        F8F8F8FBFBFBFAFAFA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFFDFDFDFCFCFCF7F7F7F7F7F7F5F5F5F2F2F2FFFFFFFFFFFFEB
+        EBEBEBEBEBECECECEBEBEBEAEAEAEDEDEDF0F0F0F1F1F1F0F0F0EFEFEFECECEC
+        E9E9E9E7E7E7D5D5D5C1C1C1B5B5B5DADADAFEFEFEFFFFFFFDFDFDE9E9E9E4E4
+        E4DCDCDCD0D0D0BCBCBCDEDEDEFFFFFFEEEEEEC9C9C9FFFFFFFFFFFFE6E6E6F9
+        F9F9FFFFFFFAFAFAEEEEEEEEEEEEECECECE9E9E9E8E8E8E8E8E8E8E8E8E8E8E8
+        CDCDCDDEDEDEF9F9F9FAFAFAFAFAFAF9F9F9FFFFFFFAFAFAEAEAEAE9E9E9EBEB
+        EBEAEAEAD5D5D5E4E4E4F8F8F8F8F8F8F9F9F9E9E9E9D7D7D7D7D7D7D4D4D4FF
+        FFFFF5F5F5EAEAEAE5E5E5F1F1F1F0F0F0DBDBDBD9D9D9DDDDDDE4E4E4F9F9F9
+        FBFBFBEBEBEBE8E8E8DDDDDDCCCCCCBFBFBFD5D5D5F7F7F7F8F8F8FCFCFCFFFF
+        FFF8F8F8F4F4F4F6F6F6FAFAFAFAFAFAFFFFFFFFFFFFFFFFFFEBEBEBECECECEA
+        EAEAEAEAEAE9E9E9D1D1D1BFBFBFE6E6E6F8F8F8F8F8F8F7F7F7F5F5F5F4F4F4
+        F7F7F7FBFBFBFFFFFFEDEDEDDFDFDFDEDEDECCCCCCBBBBBBCCCCCCE7E7E7F1F1
+        F1F3F3F3F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAEEEEEEED
+        EDEDEAEAEAE8E8E8C9C9C9D6D6D6F2F2F2F3F3F3F6F6F6F6F6F6E9E9E9DDDDDD
+        D9D9D90000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF8F8F8EDEDEDECECEC
+        EAEAEAE8E8E8E9E9E9EAEAEAE9E9E9FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        EBEBEBEAEAEAE9E9E9EEEEEEEAEAEAE4E4E4E3E3E3E4E4E48000008000008000
+        00800000800000FCFCFCFDFDFDF9F9F9FFFFFFFFFFFFFFFFFFFBFBFBD5D5D5C0
+        C0C0A5A5A5B7B7B7E4E4E4F8F8F8FFFFFFFFFFFFFFFFFFF8F8F8F3F3F3F7F7F7
+        F9F9F9F8F8F8F8F8F8F9F9F9FCFCFC8000008000008000008000008000008000
+        00800000800000800000800000800000DEDEDEE4E4E4EAEAEAE9E9E9F4F4F4F5
+        F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F5F5F5F7F7F7FFFFFFFBFBFB800000
+        800000800000800000800000800000CCCCCCF4F4F4F5F5F5EDEDEDECECECECEC
+        ECECECECECECECEFEFEFEDEDEDECECECFCFCFC0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF9F9F9F9F9F9F8F8F8
+        F7F7F7F9F9F9F9F9F90000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFFCFCFCF7F7F7F5F5F5F5F5F5F0F0F0F2F2F2FFFFFFFFFFFFEB
+        EBEBECECECEFEFEFEFEFEFEFEFEFF4F4F4F3F3F3F0F0F0EEEEEEEDEDEDE8E8E8
+        D2D2D2BFBFBFACACACBFBFBFD7D7D7EAEAEAFBFBFBFFFFFFFAFAFADDDDDDCDCD
+        CDC2C2C2C7C7C7D1D1D1E5E5E5F6F6F6EEEEEEF9F9F9FFFFFFF3F3F3E6E6E6E9
+        E9E9E9E9E9ECECECEDEDEDECECECE9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6
+        DCDCDCD7D7D7ECECECF7F7F7F8F8F8F8F8F8FFFFFFFFFFFFF7F7F7E9E9E9E8E8
+        E8E7E7E7E6E6E6D3D3D3E4E4E4F8F8F8FBFBFBF9F9F9F8F8F8F8F8F8F8F8F8FF
+        FFFFE6E6E6E4E4E4DFDFDFEDEDEDECECECEAEAEAEFEFEFF5F5F5F8F8F8F9F9F9
+        FCFCFCFBFBFBF8F8F8EAEAEAD9D9D9D5D5D5E3E3E3F8F8F8FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCEAEAEAEAEAEAE9
+        E9E9EAEAEAEAEAEAD1D1D1CFCFCFE7E7E7F8F8F8F8F8F8F5F5F5F5F5F5F7F7F7
+        F8F8F8F9F9F9FBFBFBECECECEBEBEBD2D2D2C5C5C5D6D6D6E9E9E9F4F4F4F1F1
+        F1F4F4F4F8F8F8FFFFFFFFFFFFFFFFFFFAFAFAEBEBEBE9E9E9ECECECEDEDEDEA
+        EAEAE9E9E9E9E9E9D9D9D9E4E4E4F1F1F1F2F2F2F5F5F5F5F5F5F5F5F5F5F5F5
+        F2F2F20000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFECECECEAEAEA
+        E8E8E8E7E7E7E9E9E9E9E9E9EAEAEAFDFDFDFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFEAEAEAE6E6E6E9E9E9E6E6E6E3E3E3E4E4E4E5E5E58000008000008000
+        00800000800000FAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6BEBEBEB7
+        B7B7CECECEE6E6E6FBFBFBFCFCFCFFFFFFFFFFFFECECECCBCBCBCECECEE9E9E9
+        F8F8F8F8F8F88000008000008000008000008000008000008000008000008000
+        00800000800000800000800000E6E6E6E3E3E3E7E7E7EAEAEAE9E9E9DBDBDBE7
+        E7E7F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5EBEBEBE9E9E9
+        800000800000800000800000800000D0D0D0F7F7F7F7F7F7F7F7F7DFDFDFD0D0
+        D0D2D2D2D5D5D5D7D7D7E1E1E1ECECECEDEDEDEEEEEE0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF7F7F7F5F5F5
+        F5F5F5F6F6F6F7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF5F5F5F4F4F4F2F2F2EEEEEEF2F2F2FFFFFFFFFFFFED
+        EDEDEDEDEDF0F0F0EDEDEDEEEEEEF1F1F1EDEDEDE9E9E9E9E9E9E7E7E7CECECE
+        A1A1A1BABABAD3D3D3E7E7E7F8F8F8FAFAFAFCFCFCFEFEFEF9F9F9E7E7E7DADA
+        DADADADAE2E2E2EDEDEDF4F4F4F7F7F7FFFFFFFFFFFFF7F7F7E8E8E8E7E7E7E9
+        E9E9E9E9E9ECECECECECECE9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E1E1E1
+        DADADAC6C6C6DDDDDDF8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFBFBFBEAEAEAE7E7
+        E7E7E7E7E4E4E4BCBCBCD0D0D0F9F9F9FAFAFAF8F8F8F8F8F8F8F8F8F8F8F8FF
+        FFFFDADADAE0E0E0EAEAEAECECECF0F0F0F4F4F4F8F8F8F9F9F9F9F9F9F9F9F9
+        FDFDFDFCFCFCF9F9F9F7F7F7F4F4F4F4F4F4F5F5F5F8F8F8FFFFFFFFFFFFFFFF
+        FFFFFFFFFDFDFDFFFFFFFCFCFCFFFFFFFFFFFFFEFEFEEAEAEAEAEAEAEAEAEAEA
+        EAEAECECECECECECE6E6E6D5D5D5E7E7E7F7F7F7F5F5F5F4F4F4F7F7F7F9F9F9
+        F9F9F9F9F9F9FCFCFCFDFDFDFBFBFBEBEBEBE6E6E6F3F3F3F7F7F7F5F5F5F5F5
+        F5F7F7F7FCFCFCFFFFFFFFFFFFF9F9F9EBEBEBEBEBEBE9E9E9ECECECECECECEB
+        EBEBEBEBEBE9E9E9E9E9E9D5D5D5DFDFDFF3F3F3F7F7F7F7F7F7F7F7F7F7F7F7
+        F4F4F40000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFEAEAEAEAEAEA
+        E8E8E8E7E7E7E7E7E7DCDCDCD0D0D0DFDFDFEDEDEDEDEDEDECECEC0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFD6D6D6D7D7D7D5D5D5D3D3D3DEDEDED2D2D2B3B3B38000008000
+        00800000800000800000FCFCFCFFFFFFFFFFFFFFFFFFF0F0F0E8E8E8C6C6C6D3
+        D3D3F7F7F7FCFCFCFEFEFEFFFFFFFDFDFDF9F9F9D1D1D1CACACAD8D8D8E9E9E9
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000800000F6F6F6EAEAEAEAEAEAEAEAEAEAEAEADCDCDCE7
+        E7E7F5F5F5F5F5F5F3F3F3F3F3F3F4F4F4F3F3F3F5F5F5F6F6F6F5F5F5F5F5F5
+        FFFFFF800000800000800000800000800000F5F5F5F7F7F7F7F7F7EAEAEADDDD
+        DDDFDFDFDEDEDEDBDBDBE9E9E9EDEDEDEFEFEFECECECEAEAEA0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        F5F5F5F6F6F6F7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF2F2F2F0F0F0EEEEEEF1F1F1FFFFFFFFFFFFFFFFFFEF
+        EFEFEFEFEFF1F1F1EEEEEEEEEEEEEDEDEDE9E9E9E7E7E7D0D0D0B5B5B59A9A9A
+        B5B5B5E4E4E4F8F8F8F9F9F9F8F8F8FAFAFAFCFCFCFEFEFEFBFBFBF4F4F4F3F3
+        F3F4F4F4F3F3F3F5F5F5F6F6F6F4F4F4FCFCFCE8E8E8E0E0E0EAEAEAEAEAEAE9
+        E9E9E9E9E9ECECECECECECE8E8E8E8E8E8E4E4E4E1E1E1E1E1E1DFDFDFDBDBDB
+        DCDCDCD7D7D7F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EDEDEDE8E8E8E3E3
+        E3E3E3E3D0D0D0A7A7A7D1D1D1F9F9F9F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFF
+        FFFFCACACACDCDCDE9E9E9F1F1F1F5F5F5F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9
+        FDFDFDFCFCFCF8F8F8F7F7F7F6F6F6F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFEAEA
+        EAE8E8E8DFDFDFE8E8E8ECECECF9F9F9FDFDFDF0F0F0ECECECEAEAEAEAEAEAEA
+        EAEAECECECEBEBEBE4E4E4D0D0D0E4E4E4F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9
+        F9F9F9FBFBFBFDFDFDFDFDFDFBFBFBF8F8F8F7F7F7F8F8F8F8F8F8F7F7F7F8F8
+        F8F8F8F8FBFBFBFFFFFFFFFFFFEAEAEAEBEBEBEBEBEBEAEAEAEEEEEEEDEDEDEB
+        EBEBEAEAEAE7E7E7E9E9E9C3C3C3CECECEF4F4F4F7F7F7F7F7F7F7F7F7F7F7F7
+        F6F6F60000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFEAEAEADADADA
+        D7D7D7D9D9D9CDCDCDBFBFBFCECECEEAEAEAE0E0E0DFDFDFECECECEAEAEA0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFDBDBDBD2D2D2D5D5D5D9D9D9BFBFBFBDBDBDD2D2D28000
+        00800000800000800000800000FFFFFFFFFFFFECECECEAEAEAE9E9E9CBCBCBDD
+        DDDDFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9F7F7F7EAEAEA800000800000800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000F3F3F3F6F6F6F8F8F8FFFFFFFDFDFDD9D9D9DADADAD9D9D9C7
+        C7C7E4E4E4F3F3F3F3F3F3F5F5F5F7F7F7F6F6F6F8F8F8F8F8F8F5F5F5F3F3F3
+        FEFEFE800000800000800000800000800000800000F5F5F5F7F7F7F7F7F7F7F7
+        F7F7F7F7F5F5F5F4F4F4F7F7F7FFFFFFFDFDFDECECECEAEAEAEAEAEAEAEAEA00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        E3E3E3F4F4F4F7F7F7F7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF4F4F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFED
+        EDEDECECECEFEFEFEEEEEEECECECECECECE9E9E9E7E7E7B6B6B6AFAFAFCACACA
+        E2E2E2F8F8F8F9F9F9F9F9F9F8F8F8FCFCFCFDFDFDFFFFFFFCFCFCF6F6F6F4F4
+        F4F4F4F4F4F4F4F6F6F6F6F6F6F1F1F1F1F1F1F4F4F4FEFEFEF7F7F7EBEBEBEA
+        EAEAEAEAEAECECECECECECE8E8E8E4E4E4CCCCCCBBBBBBD1D1D1E0E0E0E0E0E0
+        E4E4E4EAEAEAF8F8F8FFFFFFFFFFFFFFFFFFFBFBFBEEEEEEEDEDEDEAEAEAE2E2
+        E2D0D0D0A9A9A9BABABAE4E4E4F7F7F7F9F9F9FCFCFCFCFCFCFAFAFAF9F9F9FF
+        FFFFC7C7C7CCCCCCEEEEEEF5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBF9F9F9
+        FDFDFDFCFCFCF8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8FFFFFFFFFFFFEAEA
+        EAE5E5E5DDDDDDE2E2E2E8E8E8E8E8E8EDEDEDEEEEEEEAEAEAE7E7E7EAEAEAEA
+        EAEAEDEDEDECECECE2E2E2E2E2E2E9E9E9F8F8F8F8F8F8F9F9F9F9F9F9FBFBFB
+        FCFCFCFDFDFDFCFCFCFCFCFCFFFFFFFFFFFFFDFDFDFEFEFEFBFBFBF8F8F8F8F8
+        F8FBFBFBFDFDFDFFFFFFFFFFFFEAEAEAECECECECECECEEEEEEEDEDEDEDEDEDEB
+        EBEBE8E8E8E6E6E6E5E5E5BEBEBEC9C9C9F2F2F2F7F7F7F6F6F6F6F6F6F7F7F7
+        F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F9F9F9FAFAFAF8F8F8F4F4F4F3F3
+        F3F4F4F4FFFFFFFFFFFFF7F7F7E9E9E9E7E7E7E7E7E7E9E9E9E7E7E7E7E7E7E7
+        E7E7DDDDDDE6E6E6F5F5F5FEFEFEFFFFFFFFFFFFFFFFFFFAFAFAE9E9E9C7C7C7
+        D3D3D3CCCCCCC8C8C8D9D9D9E9E9E9F5F5F5E8E8E8E9E9E9ECECECEBEBEBEAEA
+        EA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF7F7F7F4F4F4F4F4F4DBDBDBDDDDDDEAEAEA8000
+        00800000800000800000800000800000FFFFFFEAEAEAE7E7E7E8E8E8D8D8D8E7
+        E7E7FCFCFCFEFEFEFCFCFCF9F9F9F7F7F7F5F5F5800000800000800000800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000F3F3F3F5F5F5F8F8F8FFFFFFEAEAEAAFAFAFD2D2D2C3C3C3BF
+        BFBFE4E4E4F4F4F4F3F3F3F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F2F2F2F2F2F2
+        F4F4F4F3F3F3800000800000800000800000800000800000F8F8F8F9F9F9F8F8
+        F8F7F7F7F7F7F7F7F7F7F9F9F9FFFFFFFAFAFAEAEAEAEAEAEAEAEAEAEAEAEACA
+        CACA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF3F3F3F7F7F7F7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFE9E9E9F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEA
+        EAEAE9E9E9ECECECECECECE9E9E9E9E9E9D1D1D1B6B6B6989898C9C9C9F9F9F9
+        F9F9F9F8F8F8F9F9F9FAFAFAFAFAFAFDFDFDFCFCFCFDFDFDFCFCFCF7F7F7F5F5
+        F5F4F4F4F3F3F3F1F1F1F0F0F0EBEBEBF0F0F0FCFCFCF0F0F0D7D7D7DBDBDBEA
+        EAEAEAEAEAEAEAEAE8E8E8E6E6E6D0D0D0A6A6A6BEBEBEF4F4F4F7F7F7DADADA
+        DCDCDCEAEAEAECECECEDEDEDEDEDEDF0F0F0F0F0F0EDEDEDECECECDBDBDBC6C6
+        C6B2B2B2C1C1C1E5E5E5F7F7F7F7F7F7F9F9F9FAFAFAF9F9F9F7F7F7F7F7F7FF
+        FFFFAFAFAFD0D0D0EFEFEFF4F4F4F8F8F8F9F9F9FAFAFAFDFDFDFEFEFEFCFCFC
+        FEFEFEFDFDFDF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFEAEA
+        EAD1D1D1B2B2B2C2C2C2D9D9D9E7E7E7ECECECECECECE9E9E9EBEBEBECECECED
+        EDEDF0F0F0ECECECE2E2E2E4E4E4EAEAEAECECECFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFCFCFCF8F8F8F9F9F9F9F9
+        F9FAFAFAFEFEFEFFFFFFFFFFFFEBEBEBEDEDEDEFEFEFEDEDEDECECECEBEBEBEA
+        EAEAE7E7E7D0D0D0B9B9B9A1A1A1CACACAF4F4F4F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F9F9F9FAFAFAF8F8F8F5F5F5F4F4
+        F4F4F4F4FFFFFFFFFFFFF8F8F8ECECECEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9
+        E9E9DDDDDDE5E5E5F4F4F4FFFFFFFFFFFFFCFCFCF3F3F3F0F0F0EAEAEAC8C8C8
+        D5D5D5E9E9E9E7E7E7F4F4F4F5F5F5F5F5F5F4F4F4F5F5F5F5F5F5EBEBEBEAEA
+        EA0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEDEDED0000FF
+        0000FF0000FF0000FF0000FFFAFAFAFFFFFFF8F8F8E9E9E9F0F0F0F3F3F3F9F9
+        F9800000800000800000800000800000FFFFFFEBEBEBE8E8E8E9E9E9D9D9D9CE
+        CECEEAEAEAF7F7F7F7F7F7F7F7F7F5F5F5F2F2F2800000800000800000800000
+        800000800000800000800000800000800000800000800000800000800000EEEE
+        EEF3F3F3F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAE7E7E7D3D3D3E5E5E5E4E4E4E3
+        E3E3F5F5F5F6F6F6F5F5F5F5F5F5F4F4F4F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F3F3F3F0F0F0E2E2E2800000800000800000800000800000800000F9F9F9F8F8
+        F8F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFF9F9F9EAEAEAEAEAEAEAEAEADA
+        DADAE6E6E60000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF7F7F7F7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFDFDFDEDEDEDECECECE9
+        E9E9EAEAEAEEEEEEF0F0F0ECECECD3D3D39A9A9AAFAFAFCACACAE2E2E2F9F9F9
+        F9F9F9F8F8F8F8F8F8FAFAFAFAFAFAFBFBFBF8F8F8F9F9F9F8F8F8F3F3F3F1F1
+        F1F1F1F1EEEEEEEEEEEEEEEEEEEEEEEEF1F1F1F1F1F1E1E1E1D2D2D2E3E3E3D6
+        D6D6D9D9D9EAEAEAE8E8E8E4E4E4CDCDCDCCCCCCE6E6E6FFFFFFF8F8F8CBCBCB
+        E2E2E2F5F5F5ECECECEDEDEDEDEDEDF0F0F0EEEEEEEAEAEAE9E9E9C9C9C9C5C5
+        C5D7D7D7E8E8E8F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7FF
+        FFFFD3D3D3E5E5E5F3F3F3F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD
+        FDFDFDFBFBFBF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFEAEAEABCBC
+        BC9E9E9EAAAAAAD0D0D0E2E2E2D5D5D5DCDCDCECECECEBEBEBEEEEEEEDEDEDEC
+        ECECEAEAEAE6E6E6DFDFDFE1E1E1E9E9E9ECECECFBFBFBFFFFFFFFFFFFFDFDFD
+        FFFFFFFFFFFFF5F5F5F5F5F5FFFFFFF7F7F7F2F2F2F5F5F5F4F4F4F5F5F5F7F7
+        F7FAFAFAFFFFFFFFFFFFFFFFFFEDEDEDEEEEEEEDEDEDECECECE9E9E9EAEAEAE8
+        E8E8E7E7E7B7B7B7B0B0B0CBCBCBE2E2E2F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7
+        F8F8F8F8F8F8F7F7F7F8F8F8F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFAFAFAEEEEEEECECECECECECECECECEAEAEAEAEAEAEA
+        EAEAE9E9E9DBDBDBE4E4E4FFFFFFFFFFFFF2F2F2EEEEEEEDEDEDEAEAEAC9C9C9
+        D8D8D8F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5EBEB
+        EBEEEEEE0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEA
+        EAEAF3F3F30000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF9F9F90000FF
+        0000FF0000FF0000FF0000FF0000FFFEFEFEF7F7F7E9E9E9F3F3F3F7F7F7FDFD
+        FDFFFFFF800000800000800000800000800000EAEAEAE6E6E6E6E6E6CCCCCCCA
+        CACAEAEAEAF7F7F7F6F6F6F4F4F4F2F2F2800000800000800000800000800000
+        800000800000800000800000800000800000800000800000F5F5F5EEEEEEEFEF
+        EFF5F5F5F8F8F8F9F9F9F9F9F9F9F9F9FDFDFDFBFBFBF9F9F9F8F8F8F7F7F7F7
+        F7F7F6F6F6F7F7F7F6F6F6F5F5F5F5F5F5F3F3F3F4F4F4F5F5F5F5F5F5F3F3F3
+        F2F2F2F3F3F3F3F3F3F1F1F1800000800000800000800000800000F8F8F8F7F7
+        F7F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFBFBFBEAEAEAD7D7D7C1C1C1C0
+        C0C0C0C0C0EDEDED0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFF7F7F7F7F7F7F6F6F60000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFDFDFDEDEDEDEAEAEAE9E9E9E9
+        E9E9EAEAEAEEEEEEF0F0F0ECECECBABABAB4B4B4E3E3E3F8F8F8F8F8F8F8F8F8
+        F9F9F9FAFAFAFAFAFAFBFBFBF9F9F9F9F9F9FBFBFBF8F8F8F6F6F6F4F4F4F3F3
+        F3F0F0F0EEEEEEF1F1F1F3F3F3F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4E6
+        E6E6E6E6E6E8E8E8E6E6E6E2E2E2E1E1E1D6D6D6E7E7E7F6F6F6F3F3F3CCCCCC
+        E9E9E9F1F1F1D6D6D6D5D5D5D6D6D6E4E4E4ECECECD9D9D9CACACABABABAD9D9
+        D9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7FF
+        FFFFF7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1EBEBEB
+        F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7E4E4E4CACA
+        CAC3C3C3D9D9D9F2F2F2F3F3F3E4E4E4E9E9E9DADADAC8C8C8DCDCDCECECECE7
+        E7E7E5E5E5E1E1E1DFDFDFE4E4E4EAEAEAEDEDEDEEEEEEF1F1F1F1F1F1F3F3F3
+        FFFFFFFFFFFFD5D5D5E0E0E0FAFAFAF0F0F0F2F2F2F5F5F5F5F5F5F4F4F4F5F5
+        F5FFFFFFFFFFFFFFFFFFFBFBFBEAEAEAECECECECECECE9E9E9E8E8E8E9E9E9E7
+        E7E7E6E6E6B7B7B7CCCCCCF9F9F9F9F9F9F8F8F8F9F9F9F9F9F9F7F7F7F6F6F6
+        F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFBFBFBEFEFEFF0F0F0EEEEEEEDEDEDECECECEAEAEAEAEAEAEA
+        EAEAEAEAEACDCDCDD6D6D6F9F9F9FBFBFBF1F1F1EEEEEEEDEDEDEBEBEBDBDBDB
+        E7E7E7F7F7F7F1F1F1ECECECEEEEEEF1F1F1F3F3F3F3F3F3F4F4F4F5F5F5FFFF
+        FFFFFFFFEEEEEE0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFF6F6F6FBFBFBFCFCFC0000FF0000FF0000FFFFFFFFFDFDFDFCFCFC0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF5F5F5EBEBEBF3F3F3F5F5F5FBFB
+        FBFFFFFF800000800000800000800000800000800000E6E6E6D8D8D8BABABAD6
+        D6D6F5F5F5F7F7F7F4F4F4F3F3F3F3F3F3800000800000800000800000800000
+        800000800000800000800000F9F9F9F7F7F7FFFFFFFFFFFFFFFFFFFBFBFBF0F0
+        F0F5F5F5F8F8F8F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFF9F9F9F9F9F9F8F8F8F7
+        F7F7F7F7F7F8F8F8F7F7F7F4F4F4F4F4F4F4F4F4F5F5F5F6F6F6F4F4F4F2F2F2
+        F4F4F4F6F6F6F5F5F5F6F6F6F7F7F7800000800000800000800000800000F7F7
+        F7F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFF9F9F9E9E9E9D6D6D6ACACACBBBBBBD0
+        D0D0D0D0D0DEDEDEE1E1E10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF6F6F6F4F4F40000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFEDEDEDECECECEAEAEAE9E9E9E8E8E8E9
+        E9E9EBEBEBECECECECECECD6D6D6A2A2A2C9C9C9F5F5F5F8F8F8F8F8F8F9F9F9
+        FBFBFBFAFAFAFBFBFBFCFCFCFBFBFBFCFCFCFBFBFBF8F8F8FBFBFBFFFFFFFCFC
+        FCF5F5F5F3F3F3F4F4F4F4F4F4F2F2F2F2F2F2F4F4F4F5F5F5F6F6F6F8F8F8F8
+        F8F8F8F8F8FFFFFFF7F7F7E5E5E5E6E6E6C9C9C9D7D7D7F5F5F5F6F6F6EAEAEA
+        EEEEEEECECECD9D9D9D7D7D7D9D9D9E3E3E3D9D9D9BCBCBCCACACADBDBDBEBEB
+        EBF7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7FF
+        FFFFF6F6F6F5F5F5F5F5F5F4F4F4FFFFFFF9F9F9DCDCDCCACACAB9B9B9D8D8D8
+        F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1EFEFEFF3F3F3F6F6F6F3F3
+        F3F0F0F0F3F3F3F8F8F8F9F9F9F8F8F8F6F6F6E6E6E6D5D5D5E6E6E6EAEAEAE8
+        E8E8E6E6E6E4E4E4E5E5E5E9E9E9EDEDEDEDEDEDEEEEEEEFEFEFEEEEEEF1F1F1
+        FFFFFFFFFFFFCACACADBDBDBF8F8F8F1F1F1F5F5F5F8F8F8F5F5F5FFFFFFFFFF
+        FFFFFFFFFFFFFFF9F9F9ECECECE9E9E9E9E9E9E8E8E8E5E5E5E4E4E4E6E6E6E4
+        E4E4DFDFDFB3B3B3CACACAF7F7F7F8F8F8F7F7F7F6F6F6F6F6F6F3F3F3F4F4F4
+        F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFDFDFDF1F1F1EDEDEDEDED
+        EDEEEEEEF0F0F0EFEFEFEFEFEFEEEEEEECECECECECECEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEACACACAD3D3D3F2F2F2FFFFFFFDFDFDEEEEEEEDEDEDEFEFEFEFEFEF
+        EDEDEDF6F6F6EBEBEBEAEAEAF1F1F1F1F1F1EEEEEEEEEEEEF1F1F1F2F2F2FFFF
+        FFFCFCFCEDEDED0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FFFDFDFDF9F9F9FBFBFB0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFE2E2E2EEEEEEF4F4F4FFFFFFFFFF
+        FFFFFFFFFFFFFF800000800000800000800000800000800000C8C8C8C5C5C5E5
+        E5E5F6F6F6F6F6F6F3F3F3F3F3F3F4F4F4800000800000800000800000800000
+        800000800000FFFFFFFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F4F4
+        F4F5F5F5F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6F8F8F8F8F8F8F7
+        F7F7F7F7F7F9F9F9F8F8F8F5F5F5F4F4F4F5F5F5F5F5F5F4F4F4F3F3F3F4F4F4
+        F5F5F5F4F4F4F3F3F3F4F4F4F5F5F58000008000008000008000008000008000
+        00F9F9F9F9F9F9F7F7F7FFFFFFFFFFFFDADADADBDBDBC6C6C6BFBFBFE3E3E3F5
+        F5F5F3F3F3F4F4F4F4F4F4F1F1F1ECECEC0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF4F4F40000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFEAEAEAE9E9E9E8E8E8E9E9E9E9E9E9EB
+        EBEBECECECECECECEEEEEEBEBEBEB0B0B0D9D9D9F3F3F3F8F8F8F9F9F9FBFBFB
+        FAFAFAFAFAFAFCFCFCFBFBFBF9F9F9F9F9F9F8F8F8F7F7F7FCFCFCFFFFFFFFFF
+        FFFFFFFFFBFBFBF0F0F0F1F1F1F1F1F1F2F2F2F4F4F4F6F6F6F6F6F6F8F8F8FA
+        FAFAFBFBFBFFFFFFFFFFFFE9E9E9E9E9E9DADADAE7E7E7F7F7F7F8F8F8F8F8F8
+        F8F8F8F5F5F5F3F3F3F4F4F4F3F3F3F1F1F1E7E7E7DCDCDCE9E9E9F9F9F9FCFC
+        FCFAFAFAFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FF
+        FFFFF4F4F4F4F4F4F4F4F4F3F3F3F3F3F3E6E6E6D7D7D7D5D5D5D4D4D4E6E6E6
+        FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF0F0F0F1F1F1F3F3F3F6F6F6F5F5F5F4F4
+        F4F4F4F4F5F5F5F6F6F6F7F7F7F5F5F5F3F3F3F5F5F5F5F5F5F6F6F6F7F7F7EC
+        ECECEAEAEAE9E9E9EAEAEAEBEBEBECECECECECECEDEDEDEFEFEFEDEDEDEDEDED
+        EDEDEDECECECD5D5D5F6F6F6FFFFFFF4F4F4F8F8F8F9F9F9FFFFFFFFFFFFFFFF
+        FFFFFFFFF9F9F9EAEAEAE9E9E9E9E9E9E7E7E7E5E5E5E3E3E3E3E3E3E6E6E6E1
+        E1E1DEDEDEBCBCBCD2D2D2F8F8F8F9F9F9F7F7F7F5F5F5F5F5F5F4F4F4F5F5F5
+        F7F7F7F7F7F7F7F7F7F7F7F7FBFBFBFFFFFFFFFFFFF9F9F9EEEEEEEBEBEBECEC
+        ECEEEEEEEFEFEFEEEEEEEDEDEDEAEAEAEAEAEAEAEAEAEAEAEAEAEAEADBDBDBCC
+        CCCCCACACAB6B6B6D0D0D0EEEEEEFFFFFFFBFBFBEFEFEFEFEFEFF1F1F1EEEEEE
+        EBEBEBE9E9E9ECECECF0F0F0F9F9F9F6F6F6F2F2F2F3F3F3F3F3F3F4F4F4F7F7
+        F7FFFFFFFDFDFDEAEAEA0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F8F8F8FBFBFB0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FFFEFEFEFEFEFEFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFF800000800000800000800000800000B5B5B5D3D3D3F5
+        F5F5F7F7F7F6F6F6F4F4F4F4F4F4F6F6F6F7F7F7800000800000800000800000
+        800000800000FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEEEEEEE9E9E9D7D7
+        D7E6E6E6F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFECECECE4E4E4F7F7F7F7F7F7F7
+        F7F7F7F7F7F8F8F8F7F7F7F4F4F4F5F5F5F7F7F7F6F6F6F3F3F3F5F5F5F7F7F7
+        F5F5F5F1F1F1F3F3F3F4F4F4F3F3F3F4F4F48000008000008000008000008000
+        00F9F9F9F7F7F7F7F7F7FFFFFFEEEEEEBEBEBEE5E5E5D9D9D9D7D7D7F5F5F5F6
+        F6F6F5F5F5F7F7F7F8F8F8F7F7F7F5F5F5F5F5F50000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFE8E8E8E7E7E7E9E9E9EAEAEAEAEAEAEA
+        EAEAE9E9E9ECECECD7D7D79E9E9EC2C2C2EDEDEDF3F3F3F7F7F7F8F8F8F9F9F9
+        FAFAFAFCFCFCFBFBFBF8F8F8F7F7F7F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1EDEDEDEDEDEDF1F1F1F4F4F4F7F7F7F8F8F8F8F8F8FCFCFCFD
+        FDFDFAFAFAFFFFFFFFFFFFEBEBEBE9E9E9EAEAEAEAEAEAF5F5F5F7F7F7F8F8F8
+        F8F8F8F8F8F8FAFAFAF9F9F9F7F7F7F8F8F8FAFAFAF9F9F9F9F9F9FCFCFCFCFC
+        FCF7F7F7FFFFFFFCFCFCE8E8E8F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7FF
+        FFFFF3F3F3F5F5F5F6F6F6F5F5F5F4F4F4F7F7F7F7F7F7F4F4F4F5F5F5F8F8F8
+        FFFFFFFFFFFFFFFFFFEEEEEEE7E7E7C8C8C8DDDDDDFAFAFAFBFBFBF9F9F9F8F8
+        F8F4F4F4F6F6F6F6F6F6F7F7F7F5F5F5F4F4F4FBFBFBFAFAFAF8F8F8FAFAFAFF
+        FFFFFDFDFDECECECEDEDEDEDEDEDEAEAEAEAEAEAEEEEEEF0F0F0EDEDEDEAEAEA
+        E9E9E9E8E8E8E4E4E4F6F6F6F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8
+        F8E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E2E2E2E3E3E3E5E5E5E2
+        E2E2DFDFDFC5C5C5D7D7D7F7F7F7F7F7F7F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7FBFBFBFBFBFBFFFFFFF7F7F7EEEEEEEDEDEDEDED
+        EDEEEEEEEDEDEDECECECEAEAEAE9E9E9EAEAEAEAEAEAEAEAEADBDBDBBABABAC3
+        C3C3D1D1D1D1D1D1DDDDDDECECECF1F1F1F2F2F2EAEAEAEFEFEFEFEFEFEAEAEA
+        E7E7E7E8E8E8CCCCCCDEDEDEF9F9F9F9F9F9F8F8F8F9F9F9F8F8F8F9F9F9FBFB
+        FBFFFFFFF9F9F9E8E8E80000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF8F8F8FAFAFAF6F6F6F8F8F8F8F8F8FAFAFAFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFAFAFAF0F0F0E9E9
+        E9E7E7E7E2E2E2E4E4E4E9E9E9800000800000800000800000800000E2E2E2F6
+        F6F6F8F8F8F7F7F7F5F5F5F5F5F5F7F7F7F8F8F8800000800000800000800000
+        800000800000ECECECFCFCFCFFFFFFF9F9F9EAEAEADBDBDBC3C3C3C0C0C0B2B2
+        B2D6D6D6F9F9F9FFFFFFFFFFFFEFEFEFEEEEEEE7E7E7D3D3D3E5E5E5F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F6F6F6F5F5F5F5F5F5F7F7F7F8F8F8
+        F3F3F3F2F2F2F5F5F5F7F7F7F7F7F7F8F8F88000008000008000008000008000
+        00800000F5F5F5F5F5F5F5F5F5E7E7E7D7D7D7F4F4F4DCDCDCD8D8D8F6F6F6F8
+        F8F8F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAFAFAFA0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFE7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEA
+        EAEAE9E9E9D6D6D6A2A2A2ABABABD7D7D7F0F0F0F4F4F4F7F7F7F9F9F9F9F9F9
+        FCFCFCFDFDFDFBFBFBF9F9F9FBFBFBFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFF9F9
+        F9EAEAEAEAEAEAD3D3D3DFDFDFF4F4F4F7F7F7F9F9F9FBFBFBFDFDFDFFFFFFFD
+        FDFDFFFFFFFFFFFFFFFFFFEBEBEBE9E9E9EAEAEAE8E8E8DADADAE9E9E9F8F8F8
+        F8F8F8F8F8F8F9F9F9F8F8F8F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F4F4
+        F4F1F1F1FFFFFFD9D9D9D3D3D3F2F2F2F4F4F4F4F4F4F5F5F5F7F7F7F5F5F5FF
+        FFFFF3F3F3F5F5F5F7F7F7F5F5F5F6F6F6F7F7F7F8F8F8F7F7F7F9F9F9FEFEFE
+        FFFFFFFFFFFFF6F6F6E8E8E8E4E4E4AAAAAAC5C5C5FBFBFBFBFBFBFCFCFCFDFD
+        FDFBFBFBFBFBFBFAFAFAFBFBFBF8F8F8F7F7F7FCFCFCFCFCFCFBFBFBFDFDFDFF
+        FFFFFEFEFEEDEDEDEEEEEEEDEDEDEAEAEAEDEDEDF0F0F0EEEEEEEBEBEBE9E9E9
+        E8E8E8E8E8E8E6E6E6E9E9E9ECECECFBFBFBFFFFFFFFFFFFFFFFFFF8F8F8E7E7
+        E7E5E5E5E2E2E2E2E2E2E2E2E2E3E3E3E5E5E5E4E4E4E6E6E6E7E7E7E8E8E8E4
+        E4E4E1E1E1C6C6C6D4D4D4F3F3F3F5F5F5F5F5F5F6F6F6F5F5F5F5F5F5F5F5F5
+        F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8F8F8F8F5F5F5F1F1F1E1E1E1D1D1D1DCDC
+        DCEDEDEDECECECEDEDEDEBEBEBEAEAEAEAEAEADADADACACACAB8B8B8C1C1C1DE
+        DEDEF0F0F0F0F0F0EBEBEBEEEEEEF3F3F3F1F1F1FFFFFFFFFFFFECECECE7E7E7
+        E6E6E6E6E6E6B4B4B4C9C9C9F9F9F9F9F9F9F8F8F8F8F8F8FAFAFAFBFBFBF9F9
+        F9F6F6F6F5F5F5D3D3D3BABABA0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFE7E7E7E7E7E7E4E4E4E5E5E5F3F3F3F6F6F6F8F8F8FFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEFEFEFE8E8E8E7E7
+        E7E6E6E6E2E2E2D5D5D5C8C8C8D9D9D9800000800000800000800000F2F2F2F7
+        F7F7F8F8F8F7F7F7F5F5F5F4F4F4F6F6F6F8F8F8F8F8F8800000800000800000
+        800000800000EAEAEAEAEAEAEAEAEAE7E7E7D9D9D9B4B4B4B9B9B9D1D1D1D7D7
+        D7E8E8E8F9F9F9FFFFFFFFFFFFEDEDEDEBEBEBE7E7E7C2C2C280000080000080
+        0000800000800000800000F4F4F4F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F5F5F5
+        F1F1F1F4F4F4F7F7F7F8F8F8FAFAFAFBFBFBFBFBFB8000008000008000008000
+        00800000800000F4F4F4F3F3F3F4F4F4F4F4F4F5F5F5E8E8E8E7E7E7F7F7F7F8
+        F8F8F5F5F5F7F7F7F8F8F8FAFAFAFBFBFBFBFBFBFCFCFCFEFEFE0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFEAEAEAEAEAEAEAEAEAE9E9E9EA
+        EAEAE7E7E7BCBCBCB3B3B3DADADAF0F0F0F4F4F4F6F6F6F8F8F8F9F9F9FBFBFB
+        FDFDFDFDFDFDFAFAFAF8F8F8F8F8F8F8F8F8F7F7F7FFFFFFFFFFFFFBFBFBEBEB
+        EBEAEAEAEAEAEAC1C1C1D1D1D1F8F8F8F9F9F9F9F9F9FDFDFDFEFEFEFDFDFDFF
+        FFFFFFFFFFFFFFFFFDFDFDEBEBEBECECECECECECE9E9E9CCCCCCDADADAF8F8F8
+        F8F8F8F9F9F9FAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F4F4
+        F4F3F3F3F3F3F3E2E2E2E1E1E1F0F0F0F4F4F4F1F1F1F5F5F5F8F8F8F4F4F4FF
+        FFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FFFFFF
+        FFFFFFFFFFFFEDEDEDE6E6E6E2E2E2B2B2B2CCCCCCFBFBFBFCFCFCFEFEFEFFFF
+        FFFDFDFDFDFDFDFCFCFCFCFCFCF8F8F8F7F7F7FBFBFBFCFCFCFCFCFCFDFDFDFE
+        FEFEFFFFFFFCFCFCEEEEEEECECECEBEBEBE3E3E3D8D8D8D1D1D1DADADAE7E7E7
+        E8E8E8E6E6E6E6E6E6E9E9E9EAEAEAEAEAEAECECECEAEAEAE8E8E8E8E8E8E7E7
+        E7E6E6E6E4E4E4E3E3E3E2E2E2E6E6E6E9E9E9E9E9E9EAEAEAEBEBEBEAEAEAE9
+        E9E9E8E8E8CCCCCCD9D9D9F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5
+        F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F5F5F5F1F1F1EDEDEDE2E2E2D4D4D4E4E4
+        E4DCDCDCDCDCDCECECECEBEBEBE9E9E9E9E9E9C8C8C8C1C1C1D2D2D2E0E0E0F1
+        F1F1F4F4F4F0F0F0EDEDEDF3F3F3F5F5F5F8F8F8FFFFFFFFFFFFE8E8E8E4E4E4
+        E3E3E3E3E3E3B4B4B4CCCCCCFBFBFBFAFAFAF8F8F8F9F9F9FBFBFBFAFAFAF9F9
+        F9F9F9F9F9F9F9E4E4E4CBCBCBDADADA0000FF0000FF0000FF0000FF0000FF00
+        00FFE7E7E7E7E7E7E4E4E4DFDFDFDFDFDFD9D9D9E6E6E6F2F2F2FFFFFFFFFFFF
+        ECECECD7D7D7D6D6D6EAEAEAF4F4F40000FF0000FF0000FF0000FFE6E6E6D3D3
+        D3D3D3D3D3D3D3B2B2B2C4C4C4E6E6E6800000800000800000800000800000F9
+        F9F9FAFAFAF8F8F8F7F7F7F5F5F5F7F7F7FBFBFBFFFFFF800000800000800000
+        800000800000E9E9E9E9E9E9E9E9E9E6E6E6C3C3C3B9B9B9DFDFDFF6F6F6F8F8
+        F8F9F9F9FAFAFAFFFFFFFFFFFFEDEDEDECECECE9E9E9C8C8C8D6D6D680000080
+        0000800000800000800000F4F4F4F5F5F5F8F8F8F8F8F8F8F8F8F7F7F7F3F3F3
+        F3F3F3F7F7F7F9F9F9FBFBFBFCFCFCFDFDFDFFFFFFFFFFFF8000008000008000
+        00800000800000F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5F6F6F6F8F8F8F8
+        F8F8F7F7F7F7F7F7F9F9F9F9F9F9FAFAFAFCFCFCFDFDFDFFFFFFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFE9E9E9E9E9E9E9E9E9E7E7E7E9
+        E9E9E5E5E5BABABACACACAF0F0F0F4F4F4F7F7F7F7F7F7F7F7F7FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFEAEAEAEAEA
+        EAE8E8E8E8E8E8BFBFBFCECECEF7F7F7F8F8F8F8F8F8FDFDFDFDFDFDFFFFFFFF
+        FFFFFFFFFFFDFDFDECECECEBEBEBEBEBEBEAEAEAE9E9E9CECECEDCDCDCF9F9F9
+        F9F9F9FAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F5F5
+        F5F4F4F4F4F4F4F3F3F3F1F1F1F3F3F3F7F7F7F5F5F5F9F9F9F7F7F7F0F0F0FF
+        FFFFF9F9F9FBFBFBF9F9F9F8F8F8F8F8F8F9F9F9FAFAFAFAFAFAFDFDFDFFFFFF
+        FFFFFFFFFFFFE6E6E6E5E5E5E2E2E2B8B8B8CDCDCDF9F9F9FEFEFEFEFEFEFDFD
+        FDFCFCFCFCFCFCFBFBFBFBFBFBF7F7F7F9F9F9FDFDFDFFFFFFFCFCFCFEFEFEFD
+        FDFDFFFFFFFCFCFCEDEDEDECECECE1E1E1CCCCCCD2D2D2D9D9D9F3F3F3F6F6F6
+        E8E8E8E4E4E4E6E6E6E9E9E9E6E6E6E4E4E4E4E4E4E6E6E6E8E8E8E8E8E8E8E8
+        E8E8E8E8E5E5E5E2E2E2E2E2E2E9E9E9ECECECECECECEBEBEBEAEAEAEBEBEBEC
+        ECECEEEEEEE1E1E1F9F9F9FFFFFFFCFCFCF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7
+        F6F6F6F5F5F5F4F4F4F2F2F2F4F4F4F4F4F4F2F2F2F1F1F1F2F2F2F2F2F2F4F4
+        F4E6E6E6E6E6E6DADADAD7D7D7E5E5E5E7E7E7C5C5C5D1D1D1F3F3F3F4F4F4F3
+        F3F3F1F1F1EDEDEDF1F1F1F7F7F7F8F8F8FBFBFBFFFFFFFFFFFFF9F9F9E4E4E4
+        E5E5E5E5E5E5B9B9B9CECECEFCFCFCFBFBFBFAFAFAFBFBFBFEFEFEFCFCFCFBFB
+        FBF9F9F9F8F8F8FAFAFAF5F5F5F4F4F40000FF0000FF0000FF0000FF0000FFE1
+        E1E1E4E4E4E4E4E4E1E1E1E1E1E1E0E0E0C9C9C9D2D2D2EFEFEFFFFFFFFFFFFF
+        EDEDEDE2E2E2E9E9E9F3F3F3F5F5F5F4F4F40000FF0000FF0000FF0000FFACAC
+        ACCFCFCFC4C4C4C1C1C1E6E6E6F5F5F5E6E6E680000080000080000080000080
+        0000F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7FFFFFFFFFFFFFFFFFF800000800000
+        800000800000800000E9E9E9E7E7E7D3D3D3A8A8A8CECECEF6F6F6F9F9F9F8F8
+        F8F9F9F9FBFBFBFFFFFFFFFFFFEEEEEEEEEEEEEEEEEECBCBCBD5D5D580000080
+        0000800000800000800000F3F3F3F4F4F4F8F8F8F8F8F8F7F7F7F7F7F7F5F5F5
+        F7F7F7FBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000008000
+        00800000800000800000F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F8
+        F8F8F8F8F8F8F8F8F7F7F7F8F8F8FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFDFDFD
+        F9F9F90000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFE7E7E7E9E9E9E7E7E7E6E6E6E9
+        E9E9D0D0D09D9D9DC8C8C8F1F1F1F5F5F5F8F8F8F8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFBFBFBF5F5F5F5F5F5F5F5F5FFFFFFFFFFFFF9F9F9EAEAEAEAEA
+        EAE7E7E7D7D7D7AAAAAACCCCCCF5F5F5F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFEDEDEDEAEAEAE9E9E9EAEAEAEAEAEAE8E8E8CECECEDCDCDCF8F8F8
+        F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F4F4
+        F4F4F4F4F4F4F4F3F3F3F4F4F4F7F7F7F8F8F8F9F9F9F9F9F9F7F7F7F4F4F4FF
+        FFFFFDFDFDFEFEFEFDFDFDFAFAFAFAFAFAFBFBFBFAFAFAFBFBFBFFFFFFFFFFFF
+        FFFFFFFAFAFAE5E5E5E2E2E2DFDFDFB6B6B6CCCCCCF6F6F6FEFEFEFFFFFFFFFF
+        FFFDFDFDFCFCFCFCFCFCFBFBFBF9F9F9FBFBFBFEFEFEFEFEFEFCFCFCFCFCFCFC
+        FCFCFBFBFBFBFBFBDFDFDFD3D3D3CECECED6D6D6EAEAEAF4F4F4FFFFFFFFFFFF
+        EBEBEBE6E6E6E7E7E7E9E9E9E6E6E6E5E5E5E7E7E7EBEBEBEAEAEAE8E8E8E8E8
+        E8E8E8E8E4E4E4E2E2E2E7E7E7EBEBEBEDEDEDECECECEBEBEBEBEBEBEDEDEDED
+        EDEDEEEEEEEEEEEEFDFDFDFFFFFFF7F7F7F2F2F2F7F7F7F7F7F7F7F7F7F7F7F7
+        F6F6F6F5F5F5F3F3F3F4F4F4F7F7F7F6F6F6F8F8F8F8F8F8F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7EAEAEAF5F5F5F7F7F7EAEAEAC6C6C6D4D4D4F5F5F5F3F3F3F0
+        F0F0F1F1F1F1F1F1F5F5F5F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFE9E9E9BFBFBF
+        C0C0C0BFBFBFA6A6A6D1D1D1FBFBFBFAFAFAFBFBFBFDFDFDFEFEFEFDFDFDF9F9
+        F9F9F9F9F8F8F8FAFAFAF8F8F8F7F7F7FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFCECECEEDEDEDFCFCFCF6F6F6
+        EDEDED0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFD1D1
+        D1E7E7E7E7E7E7E6E6E6F6F6F6F6F6F6F5F5F580000080000080000080000080
+        0000800000F8F8F8F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFECECEC800000
+        800000800000800000800000E8E8E8BFBFBFB9B9B9E5E5E5F9F9F9F9F9F9F8F8
+        F8FAFAFAFFFFFFFFFFFFFFFFFFEEEEEEEFEFEFEDEDEDDADADAE6E6E680000080
+        0000800000800000800000F1F1F1F3F3F3F9F9F9FAFAFAF9F9F9F8F8F8F7F7F7
+        FBFBFBFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000008000
+        00800000800000800000800000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F7F7F7F3F3F3F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
+        F8F8F8F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFE7E7E7E7E7E7E6E6E6D1
+        D1D1989898ADADADDCDCDCF3F3F3F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF
+        EDEDEDECECECE9E9E9E9E9E9F5F5F5F5F5F5FFFFFFFFFFFFEAEAEAEAEAEAEAEA
+        EAD2D2D2AAAAAAB5B5B5E0E0E0F9F9F9FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFF
+        FFFFEAEAEAE7E7E7E6E6E6E9E9E9EAEAEAE9E9E9D9D9D9BEBEBEDADADAF5F5F5
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F7F7
+        F7F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFF
+        FFFFFCFCFCFDFDFDFBFBFBF9F9F9F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFF
+        FDFDFDE6E6E6E1E1E1DFDFDFCACACAA3A3A3CECECEF6F6F6FBFBFBFEFEFEFEFE
+        FEFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFDFDFDFAFAFAFAFAFAF9F9F9FBFBFBFA
+        FAFAF9F9F9FBFBFBECECECDFDFDFDCDCDCE6E6E6F3F3F3F3F3F3FFFFFFF7F7F7
+        ECECECE7E7E7E6E6E6E9E9E9E8E8E8E7E7E7EAEAEAEDEDEDEAEAEAE8E8E8E8E8
+        E8E8E8E8E6E6E6E7E7E7EAEAEAEEEEEEEDEDEDECECECECECECEDEDEDEEEEEEEE
+        EEEEF1F1F1F1F1F1F4F4F4F7F7F7EEEEEEF5F5F5F9F9F9F8F8F8F7F7F7F7F7F7
+        F6F6F6F3F3F3F4F4F4F6F6F6F8F8F8F9F9F9FCFCFCFAFAFAF7F7F7F7F7F7F8F8
+        F8F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFE9E9E9C7C7C7D6D6D6F2F2F2F1F1F1F3
+        F3F3F6F6F6F5F5F5F8F8F8FBFBFBFBFBFBFDFDFDFEFEFEFBFBFBE5E5E5D1D1D1
+        D3D3D3D1D1D1D0D0D0E7E7E7FAFAFAF8F8F8FAFAFAFCFCFCFCFCFCFAFAFAF8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7FFFFFFFCFCFC0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFEDEDEDF0F0F0FFFFFF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F4F4F4F4F4F480000080000080000080
+        0000800000800000F7F7F7F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFECECECE9E9E9
+        800000800000800000800000800000800000E4E4E4F9F9F9FCFCFCFDFDFDFEFE
+        FEFFFFFFFFFFFFFFFFFFFFFFFFECECECEDEDEDECECECEAEAEAE9E9E980000080
+        0000800000800000800000800000F8F8F8FDFDFDFDFDFDFAFAFAF8F8F8F9F9F9
+        FAFAFAFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFEEEEEEEBEBEBD4D4D4A9A9A98000
+        00800000800000800000800000800000F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F5
+        F5F5F3F3F3F3F3F3F2F2F2FCFCFCFFFFFFFDFDFDFFFFFFFFFFFFFAFAFAF8F8F8
+        F7F7F7F7F7F7F7F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDFDFDFE3E3E3E0E0E0AF
+        AFAFAEAEAEDEDEDEF4F4F4F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFBFBFBECECEC
+        EAEAEAE7E7E7D1D1D1BFBFBFC2C2C2E2E2E2FFFFFFFFFFFFEAEAEAEAEAEAD8D8
+        D8A7A7A7B7B7B7E1E1E1F7F7F7FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFEE
+        EEEEE8E8E8E6E6E6D9D9D9CCCCCCCACACAC8C8C8BABABACACACAE8E8E8F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5F7F7
+        F7F5F5F5F5F5F5F7F7F7F8F8F8F8F8F8F9F9F9FAFAFAFAFAFAFDFDFDFDFDFDFF
+        FFFFF8F8F8F8F8F8F8F8F8F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFFCFCFCF9F9F9
+        F5F5F5E4E4E4E2E2E2D2D2D2ABABABBABABAE3E3E3F8F8F8F9F9F9FAFAFAF9F9
+        F9F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFBFBFBFBFBFBF9
+        F9F9F9F9F9FCFCFCFBFBFBF9F9F9F5F5F5F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+        EAEAEAE6E6E6E5E5E5E7E7E7E7E7E7E7E7E7E8E8E8E9E9E9E9E9E9E9E9E9E8E8
+        E8E8E8E8E8E8E8E8E8E8ECECECECECECEEEEEEEEEEEEECECECEDEDEDEDEDEDEE
+        EEEEF3F3F3F5F5F5F7F7F7F7F7F7F0F0F0ECECECF9F9F9F8F8F8F7F7F7F7F7F7
+        F7F7F7F4F4F4F5F5F5F9F9F9FAFAFAFDFDFDFEFEFEFAFAFAF7F7F7F8F8F8F9F9
+        F9F9F9F9F8F8F8F9F9F9FFFFFFEAEAEACACACABABABAD2D2D2EFEFEFF4F4F4F7
+        F7F7F8F8F8F7F7F7FBFBFBFBFBFBFCFCFCFCFCFCFBFBFBF9F9F9F8F8F8F8F8F8
+        FAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F7F7F7F8F8F8F7F7F7F7F7
+        F7F7F7F7F8F8F8F8F8F8F8F8F8FAFAFAFCFCFCFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF5F5F5F8F8F8FFFFFF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F5F5F5FFFFFF80000080000080
+        0000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBECECECE9E9E9
+        E9E9E9800000800000800000800000800000800000800000FEFEFEFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFEBEBEBE9E9E9ECECECEDEDEDEAEAEA80000080000080
+        0000800000800000800000800000FFFFFFFFFFFFFDFDFDF9F9F9F9F9F9FBFBFB
+        FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEECECECE7E7E7BFBFBFBFBFBFD0D0
+        D0800000800000800000800000800000800000F8F8F8F8F8F8F8F8F8F5F5F5F0
+        F0F0F0F0F0F4F4F4F6F6F6FEFEFEFFFFFFFBFBFBFBFBFBF8F8F8F6F6F6F7F7F7
+        F7F7F7F6F6F6F5F5F5FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0C5C5C5B9B9B9A2
+        A2A2D1D1D1F7F7F7F7F7F7F8F8F8FBFBFBFFFFFFFFFFFFFAFAFAEBEBEBEAEAEA
+        E8E8E8D1D1D1A1A1A1B6B6B6CECECEE1E1E1FFFFFFFFFFFFEAEAEAEAEAEAC6C6
+        C6B7B7B7DFDFDFF9F9F9FAFAFAFAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFDFDFDEC
+        ECECD7D7D7C5C5C5B8B8B8C5C5C5D5D5D5D5D5D5D7D7D7E8E8E8F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F6F6F6F5F5F5F7F7F7F9F9F9FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFEFEFEFF
+        FFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF7F7F7C7C7C7BABABAE1E1E1F6F6F6F8F8F8F8F8F8F8F8F8FAFA
+        FAFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF7F7F7F8F8F8FAFAFAF9F9F9F9
+        F9F9F9F9F9FBFBFBFAFAFAF9F9F9F9F9F9F8F8F8F7F7F7F5F5F5F5F5F5F4F4F4
+        FFFFFFF5F5F5D6D6D6D8D8D8E9E9E9E8E8E8E7E7E7E9E9E9E7E7E7E4E4E4E4E4
+        E4E6E6E6E8E8E8E8E8E8EAEAEAEAEAEAECECECEDEDEDEEEEEEF0F0F0EFEFEFF1
+        F1F1F6F6F6F6F6F6F4F4F4F0F0F0E9E9E9D5D5D5C8C8C8E7E7E7F5F5F5F7F7F7
+        F7F7F7F5F5F5F7F7F7F9F9F9FCFCFCFFFFFFFDFDFDF9F9F9F9F9F9F9F9F9F9F9
+        F9F7F7F7F7F7F7F7F7F7F7F7F7E6E6E6DADADAD8D8D8DEDEDEEFEFEFF7F7F7F8
+        F8F8F8F8F8F8F8F8FBFBFBFCFCFCFDFDFDFDFDFDFAFAFAF8F8F8F8F8F8F8F8F8
+        FAFAFAF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F5F5
+        F5F7F7F7F8F8F8F8F8F8F8F8F8FCFCFCFEFEFEFFFFFFFFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFDFDFDFFFFFFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF80000080
+        0000800000800000800000FFFFFFFFFFFFFFFFFFFBFBFBECECECEAEAEAE9E9E9
+        E9E9E9E9E9E98000008000008000008000008000008000008000008000008000
+        00FFFFFFFFFFFFECECECE9E9E9E9E9E9EAEAEA80000080000080000080000080
+        0000800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000800000800000800000F9F9F9F8F8F8F7F7F7F6F6F6
+        F5F5F5F4F4F4F4F4F4FFFFFFFCFCFC0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC6C6C6D7D7D7D1D1D1D0
+        D0D0E7E7E7F7F7F7F7F7F7F7F7F7F9F9F9F6F6F6FFFFFFF9F9F9E9E9E9E9E9E9
+        D1D1D19D9D9DB2B2B2E1E1E1F4F4F4F6F6F6FFFFFFFFFFFFEAEAEAEAEAEAC3C3
+        C3CBCBCBF3F3F3FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFEEEEEEEBEBEBDA
+        DADAB5B5B5BFBFBFD1D1D1E2E2E2F1F1F1F4F4F4F4F4F4F5F5F5F6F6F6F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9
+        F9F8F8F8F8F8F8F9F9F9FBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFF
+        FFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFF
+        FFFFFFFFFFFFF5F5F5C3C3C3CCCCCCF3F3F3F8F8F8F8F8F8FBFBFBFDFDFDFFFF
+        FFFFFFFFFEFEFEFDFDFDF8F8F8F5F5F5F3F3F3F2F2F2F1F1F1F5F5F5F8F8F8F8
+        F8F8F9F9F9FBFBFBFAFAFAF9F9F9F9F9F9F9F9F9F7F7F7F7F7F7F3F3F3F1F1F1
+        FFFFFFE3E3E3B0B0B0D3D3D3D7D7D7D3D3D3E4E4E4E7E7E7E6E6E6E6E6E6E6E6
+        E6E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9E8E8E8E9E9E9EDEDEDEDEDEDEAEAEAEC
+        ECECF0F0F0F4F4F4EFEFEFE9E9E9E7E7E7C3C3C3C0C0C0E4E4E4F4F4F4F7F7F7
+        F8F8F8F9F9F9F8F8F8FBFBFBFFFFFFFEFEFEFBFBFBF9F9F9F9F9F9F8F8F8F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9F5F5F5EDEDEDF0F0F0F7F7F7F9
+        F9F9FAFAFAFAFAFAFCFCFCFCFCFCFBFBFBFAFAFAF9F9F9FAFAFAFCFCFCFBFBFB
+        FBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7
+        F7F8F8F8F8F8F8F7F7F7F5F5F5F8F8F8FDFDFDFFFFFFFFFFFFEDEDED0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFFFFFFFFFFFFFF5F5F5F4F4F4FFFFFFFFFFFFF9F9F980000080
+        0000800000800000800000E7E7E7EAEAEAECECECECECECEAEAEAEAEAEAEAEAEA
+        E9E9E9E9E9E9E9E9E9E9E9E98000008000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        8000008000008000008000008000008000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000800000800000800000800000F7F7F7F6F6F6F4F4F4
+        F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5D0D0D0AFAFAF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFECECECFCFCFCF9F9F9F5
+        F5F5F6F6F6F7F7F7F7F7F7F7F7F7F8F8F8F5F5F5FFFFFFF5F5F5D0D0D0B5B5B5
+        989898ADADADDFDFDFF6F6F6F7F7F7F8F8F8FFFFFFE7E7E7BEBEBEBCBCBCA4A4
+        A4CBCBCBF3F3F3FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE7E7E7CB
+        CBCBC1C1C1E0E0E0F1F1F1F1F1F1F2F2F2F3F3F3F3F3F3F5F5F5F6F6F6F8F8F8
+        F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F7F7F7F8F8F8F8F8
+        F8F8F8F8F8F8F8F9F9F9F9F9F9FBFBFBFDFDFDFDFDFDFDFDFDFFFFFFFBFBFBFF
+        FFFFF7F7F7FFFFFFFFFFFFFFFFFFFCFCFCEAEAEAE7E7E7E9E9E9FBFBFBF9F9F9
+        E6E6E6E6E6E6E6E6E6C1C1C1D0D0D0F8F8F8FAFAFAFBFBFBFFFFFFFDFDFDFCFC
+        FCFBFBFBF8F8F8F7F7F7F3F3F3F2F2F2F3F3F3F2F2F2ECECECF0F0F0F8F8F8F8
+        F8F8F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAF9F9F9F8F8F8F7F7F7F5F5F5F3F3F3
+        F1F1F1E1E1E1D2D2D2E5E5E5E5E5E5EFEFEFF7F7F7ECECECE9E9E9EBEBEBEAEA
+        EAE9E9E9E9E9E9E6E6E6E7E7E7E7E7E7E6E6E6E3E3E3E5E5E5D2D2D2C2C2C2C7
+        C7C7DFDFDFF2F2F2ECECECE7E7E7E7E7E7D4D4D4E1E1E1F4F4F4F5F5F5F5F5F5
+        F8F8F8F8F8F8F8F8F8FBFBFBFFFFFFFEFEFEFBFBFBF8F8F8F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F7F7F7F1F1F1FFFFFFFFFFFFF8
+        F8F8F9F9F9FAFAFAFBFBFBFAFAFAF8F8F8F7F7F7F7F7F7F9F9F9FDFDFDFEFEFE
+        FDFDFDFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F5F5F5F5F5F5F9F9F9FEFEFEFFFFFFEDEDEDCFCFCF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFF4F4F4E4E4E4E6E6E6E9E9E9E8E8E8E7E7E780
+        0000800000800000800000800000E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEAEAEA
+        E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9ECECEC8000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000FFFFFFFCFCFCE8E8E8F5F5F5FFFFFFFFFFFFFFFFFF
+        F7F7F78000008000008000008000008000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000F6F6F6F4F4F4
+        F4F4F4F4F4F4F3F3F3F0F0F0EDEDEDD6D6D6C3C3C3CACACA0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFF
+        FFFFF8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F3F3F3F1F1F1F0F0F0AFAFAFACACAC
+        C8C8C8DFDFDFF6F6F6F9F9F9F9F9F9F8F8F8F7F7F7E4E4E4CECECECECECECFCF
+        CFE4E4E4F8F8F8FCFCFCFCFCFCFBFBFBFEFEFEFFFFFFFFFFFFF4F4F4DADADABC
+        BCBCD1D1D1EEEEEEF2F2F2F4F4F4F4F4F4F8F8F8F9F9F9FBFBFBFBFBFBFAFAFA
+        F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F6F6
+        F6F6F6F6F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFAFAFAFCFCFCFCFCFCF8F8F8FF
+        FFFFFFFFFFFFFFFFFFFFFFF8F8F8E7E7E7E6E6E6E3E3E3E5E5E5EAEAEAEAEAEA
+        E8E8E8E9E9E9EBEBEBD7D7D7E7E7E7FCFCFCF9F9F9F8F8F8F9F9F9F8F8F8F8F8
+        F8F8F8F8F6F6F6F5F5F5F3F3F3F3F3F3F4F4F4F0F0F0E8E8E8EEEEEEF8F8F8F7
+        F7F7F7F7F7F8F8F8F8F8F8F9F9F9FBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F7F7F7
+        F5F5F5F3F3F3F4F4F4F4F4F4F4F4F4FFFFFFF1F1F1DFDFDFE9E9E9ECECECE8E8
+        E8E8E8E8EAEAEAE5E5E5E5E5E5E5E5E5CDCDCDB6B6B6BCBCBCA5A5A5BBBBBBD5
+        D5D5EBEBEBF3F3F3EDEDEDE6E6E6E4E4E4E1E1E1D3D3D3E5E5E5F5F5F5F6F6F6
+        F7F7F7F9F9F9FBFBFBFDFDFDFEFEFEFDFDFDFAFAFAFAFAFAFCFCFCF9F9F9F7F7
+        F7F7F7F7F7F7F7F5F5F5F3F3F3F5F5F5F5F5F5F2F2F2EEEEEEFFFFFFF7F7F7E6
+        E6E6F9F9F9FAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F9F9F9FBFBFBF8F8F8
+        F4F4F4F5F5F5F6F6F6F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F5F5F5F7F7F7FDFDFDFFFFFFFBFBFBE9E9E9D7D7D7D1D1D100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFE7E7E7E7E7E7E9E9E9EAEAEAE7E7E7E6E6E6E6
+        E6E6800000800000800000800000800000E9E9E9EAEAEAEAEAEAEAEAEAEAEAEA
+        EAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEEEEEEECECECE8E8E8E9E9E98000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000EAEAEAEAEAEAE8E8E8E9E9E9EBEBEBECECECEBEBEB
+        EBEBEB8000008000008000008000008000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000F0F0F0
+        F1F1F1F1F1F1EFEFEFEEEEEEEDEDEDEEEEEEF3F3F3F4F4F4F3F3F30000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFEB
+        EBEBE8E8E8F6F6F6F5F5F5F4F4F4F1F1F1EEEEEEEEEEEEEAEAEAD9D9D9E1E1E1
+        F9F9F9F9F9F9FBFBFBFDFDFDFBFBFBF8F8F8F8F8F8F8F8F8F5F5F5F8F8F8FCFC
+        FCFCFCFCFDFDFDFCFCFCF9F9F9F8F8F8FEFEFEFFFFFFFFFFFFE8E8E8BFBFBFC5
+        C5C5DCDCDCEEEEEEF3F3F3F5F5F5F8F8F8FBFBFBFCFCFCFDFDFDFBFBFBFAFAFA
+        F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F8F8F8FAFAFAFBFBFBFBFBFBF8F8F8FCFCFCFAFAFAF5F5F5FF
+        FFFFFFFFFFFFFFFFF8F8F8E6E6E6E4E4E4D0D0D0CECECEE4E4E4E8E8E8E8E8E8
+        E8E8E8E8E8E8EAEAEAE8E8E8EDEDEDFFFFFFFFFFFFF5F5F5F5F5F5F8F8F8F9F9
+        F9F7F7F7F5F5F5F4F4F4F4F4F4F4F4F4F3F3F3EEEEEEE9E9E9F0F0F0F8F8F8F7
+        F7F7F8F8F8F8F8F8F8F8F8FAFAFAFAFAFAF8F8F8F8F8F8F9F9F9F7F7F7F7F7F7
+        F6F6F6F4F4F4F4F4F4F3F3F3F5F5F5F7F7F7ECECECE8E8E8DFDFDFD2D2D2CCCC
+        CCCECECECCCCCCC5C5C5C2C2C2BFBFBFA1A1A1B6B6B6D1D1D1CECECEE3E3E3F9
+        F9F9F9F9F9FCFCFCE7E7E7DFDFDFDFDFDFDEDEDED3D3D3E4E4E4F4F4F4F5F5F5
+        F7F7F7F8F8F8F8F8F8FBFBFBFBFBFBF8F8F8F7F7F7F9F9F9FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF5F5F5F2F2F2F5F5F5F1F1F1EAEAEAE8E8E8F9F9F9D0D0D0D3
+        D3D3F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9FAFAFAF5F5F5
+        F3F3F3F3F3F3F5F5F5F8F8F8F9F9F9FBFBFBFAFAFAF8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F6F6F6FAFAFAFFFFFFFFFFFFF9F9F9F7F7F7F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFE9E9E9E9E9E9EAEAEAE7E7E7E7E7E7E6
+        E6E6800000800000800000800000800000800000EAEAEAEAEAEAEAEAEAEBEBEB
+        EBEBEBE9E9E9E9E9E9E9E9E9ECECECEDEDEDEAEAEAE9E9E9EAEAEAE9E9E9E7E7
+        E780000080000080000080000080000080000080000080000080000080000080
+        0000800000FBFBFBE8E8E8E9E9E9E9E9E9E7E7E7E9E9E9EBEBEBEBEBEBEAEAEA
+        ECECECECECEC8000008000008000008000008000008000008000008000008000
+        0080000080000080000080000080000080000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F0F0F0F0F0F0F1F1F1F4F4F4F5F5F5F2F2F2F2F2F2F4F4F40000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFDB
+        DBDBE4E4E4F3F3F3EFEFEFEDEDEDECECECEEEEEEF2F2F2F1F1F1F5F5F5FAFAFA
+        F9F9F9F9F9F9FCFCFCFFFFFFFCFCFCF8F8F8F8F8F8F8F8F8F7F7F7FBFBFBFCFC
+        FCFBFBFBFBFBFBF9F9F9F8F8F8F8F8F8FCFCFCF8F8F8F5F5F5E4E4E4D4D4D4DE
+        DEDEEDEDEDF3F3F3F4F4F4F5F5F5F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAF9F9F9
+        FAFAFAFBFBFBFCFCFCFBFBFBF9F9F9F8F8F8F7F7F7F7F7F7F8F8F8F7F7F7F7F7
+        F7F5F5F5F6F6F6F8F8F8F8F8F8FAFAFAF9F9F9F8F8F8FCFCFCFAFAFAF5F5F5FF
+        FFFFF7F7F7F8F8F8E6E6E6E2E2E2D1D1D1A5A5A5C8C8C8D1D1D1D2D2D2E3E3E3
+        E6E6E6E8E8E8E8E8E8E7E7E7EAEAEAF8F8F8E9E9E9E6E6E6F7F7F7F8F8F8F7F7
+        F7F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2F0F0F0EDEDEDEAEAEAF1F1F1F8F8F8F8
+        F8F8F8F8F8F9F9F9FAFAFAFBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7
+        F5F5F5F5F5F5F6F6F6F6F6F6F7F7F7F9F9F9F8F8F8F7F7F7ECECECDBDBDBD5D5
+        D5D5D5D5D3D3D3D2D2D2D3D3D3D1D1D1CFCFCFE4E4E4F8F8F8F5F5F5F7F7F7F9
+        F9F9FAFAFAF9F9F9FFFFFFF4F4F4E3E3E3E6E6E6E6E6E6E9E9E9F3F3F3FFFFFF
+        FFFFFFF4F4F4F4F4F4F7F7F7F7F7F7F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1EEEEEEF3F3F3F0F0F0EEEEEEF0F0F0F0F0F0E2E2E2E3
+        E3E3F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCF7F7F7
+        F4F4F4FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFCFCFCFBFBFBF8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8FBFBFBFEFEFEFCFCFCF8F8F8F9F9F9F7F7F7F4F4F4F7
+        F7F70000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFE9E9E9E9E9E9E9E9E9E7E7E7E7E7E7E6
+        E6E6E4E4E4E1E1E1E3E3E3E6E6E6E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEDEDED
+        EEEEEEECECECEAEAEAE9E9E9ECECECECECECE8E8E8E9E9E9E9E9E9E8E8E8E7E7
+        E7E7E7E7E7E7E7E7E7E7800000800000800000800000800000800000F0F0F0F5
+        F5F5F7F7F7FFFFFFF9F9F9E9E9E9E8E8E8E8E8E8EAEAEAEBEBEBEAEAEAEAEAEA
+        EAEAEAEAEAEAEBEBEBEBEBEBECECECEDEDEDECECECEAEAEAD8D8D8E6E6E6F7F7
+        F7F7F7F7F7F7F7FFFFFFDEDEDED5D5D5FFFFFFD5D5D5BFBFBFE1E1E1F4F4F4F8
+        F8F8FAFAFAFCFCFCFEFEFEFCFCFCFBFBFBF8F8F8F5F5F5F7F7F7F7F7F7F6F6F6
+        F6F6F6F5F5F5F3F3F3F2F2F2F4F4F4F4F4F4F3F3F3F3F3F3F4F4F4F5F5F5F5F5
+        F5E5E5E5E4E4E4E9E9E9EBEBEBEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE5
+        E5E5D7D7D7E2E2E2EDEDEDF0F0F0F1F1F1F4F4F4F8F8F8F8F8F8F8F8F8F9F9F9
+        F9F9F9FAFAFAFDFDFDFFFFFFFDFDFDFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBF9F9
+        F9F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F5F5F5F2F2F2F0F0F0F0
+        F0F0F3F3F3F7F7F7F6F6F6F6F6F6FAFAFAFBFBFBFAFAFAFCFCFCFCFCFCFBFBFB
+        FDFDFDFDFDFDFDFDFDFAFAFAF7F7F7F5F5F5F7F7F7F7F7F7F7F7F7F3F3F3F2F2
+        F2F1F1F1F4F4F4F5F5F5F6F6F6FAFAFAF9F9F9F7F7F7FCFCFCFAFAFAF5F5F5FF
+        FFFFE6E6E6E4E4E4E1E1E1E1E1E1BDBDBDB9B9B9DFDFDFE5E5E5F4F4F4F7F7F7
+        E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAE6E6E6C9C9C9D9D9D9F5F5F5F7F7F7F4F4
+        F4F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F0F0F0EDEDEDEDEDEDF3F3F3F8F8F8F8
+        F8F8F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFF
+        FFFFFFF5F5F5F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F7F7F7F4F4F4F0F0F0EEEE
+        EEF0F0F0F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8FC
+        FCFCFEFEFEFFFFFFFFFFFFFFFFFFEAEAEAEBEBEBEAEAEAEAEAEAEAEAEAFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE7E7
+        E7EBEBEBE6E6E6D6D6D6E3E3E3F3F3F3F6F6F6F5F5F5F6F6F6F8F8F8F9F9F9F6
+        F6F6F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F7F7F7F3F3F3
+        F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F8F8F8F7F7F7F7F7
+        F7F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFF8F8F8F9F9F9F5F5F5F4F4F4F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFFFF
+        EAEAEAEDEDEDEDEDEDECECECEAEAEAE9E9E9D9D9D9B5B5B5D1D1D1EDEDEDEBEB
+        EBEDEDEDF0F0F0F1F1F1FFFFFFFFFFFFE9E9E9E9E9E9E9E9E9E7E7E7E6E6E6E6
+        E6E6E2E2E2E2E2E2E6E6E6E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEEEEEE
+        EEEEEEECECECE8E8E8E8E8E8EAEAEAE8E8E8E4E4E4E7E7E7E7E7E7E7E7E7E7E7
+        E7E7E7E7E6E6E6E7E7E7E7E7E7E7E7E7D6D6D6B5B5B5D5D5D5F0F0F0F3F3F3F7
+        F7F7F7F7F7FFFFFFFBFBFBEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEDEDEDEDEDED
+        EAEAEAEAEAEAEBEBEBEAEAEAEAEAEAEBEBEBEBEBEBEAEAEAD8D8D8C6C6C6E6E6
+        E6F7F7F7F7F7F7F7F7F7E7E7E7E4E4E4F3F3F3E4E4E4E4E4E4F3F3F3F5F5F5F9
+        F9F9F7F7F7F9F9F9FBFBFBFBFBFBFAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7
+        F9F9F9F8F8F8F4F4F4F3F3F3F4F4F4F5F5F5F2F2F2F4F4F4F7F7F7F6F6F6F8F8
+        F8F9F9F9FFFFFFFFFFFFFFFFFFECECECEFEFEFF0F0F0F0F0F0F1F1F1EAEAEAE1
+        E1E1D6D6D6E3E3E3F0F0F0F4F4F4F4F4F4F6F6F6F8F8F8F8F8F8F9F9F9FBFBFB
+        FBFBFBFDFDFDFEFEFEFFFFFFFDFDFDF9F9F9F9F9F9FBFBFBFBFBFBF8F8F8F7F7
+        F7F5F5F5F5F5F5F7F7F7F7F7F7F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F8
+        F8F8F5F5F5F9F9F9FBFBFBFAFAFAFEFEFEFCFCFCFCFCFCFDFDFDFBFBFBFDFDFD
+        FFFFFFFDFDFDFAFAFAF6F6F6F2F2F2F2F2F2F5F5F5F7F7F7F4F4F4F1F1F1F1F1
+        F1F3F3F3F6F6F6F8F8F8F9F9F9FCFCFCFBFBFBF8F8F8F9F9F9FFFFFFFFFFFFFF
+        FFFFE3E3E3DFDFDFDFDFDFCFCFCFAEAEAED1D1D1F6F6F6FFFFFFFFFFFFFFFFFF
+        ECECECEAEAEAE9E9E9EAEAEAEAEAEAE7E7E7CACACAD9D9D9F4F4F4F5F5F5F3F3
+        F3F2F2F2F3F3F3F1F1F1F0F0F0F0F0F0EEEEEEEEEEEEF0F0F0F5F5F5F8F8F8F8
+        F8F8F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FFFFFFFFFFFF
+        E7E7E7E1E1E1F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F3F3F3F2F2F2F3F3
+        F3F5F5F5F7F7F7F7F7F7F8F8F8FBFBFBFAFAFAFBFBFBFAFAFAF8F8F8F9F9F9FC
+        FCFCFCFCFCFFFFFFFFFFFFFBFBFBEAEAEAEBEBEBE9E9E9E8E8E8EAEAEAF9F9F9
+        F8F8F8E9E9E9EBEBEBEDEDEDDCDCDCFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9E4E4
+        E4E5E5E5E2E2E2D9D9D9E0E0E0F2F2F2F9F9F9F6F6F6F7F7F7F9F9F9FBFBFBFA
+        FAFAFCFCFCFBFBFBF8F8F8FAFAFAFBFBFBFBFBFBF9F9F9FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFEDEDEDF0F0F0FFFFFFFFFFFFF5F5F5F6F6F6F5F5F5F7F7
+        F7F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFF0F0F0EDEDEDF8F8F8F5F5F5F4F4F4F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFF
+        ECECECEDEDEDEDEDEDECECECEAEAEAE9E9E9C8C8C8BFBFBFDCDCDCECECECEEEE
+        EEF3F3F3F7F7F7F8F8F8FFFFFFFCFCFCE8E8E8E7E7E7E9E9E9E7E7E7E6E6E6E6
+        E6E6E2E2E2E6E6E6E9E9E9E8E8E8E9E9E9EAEAEAEAEAEAEAEAEAEDEDEDEFEFEF
+        ECECECE8E8E8E4E4E4E6E6E6E9E9E9E8E8E8E6E6E6E7E7E7E6E6E6E6E6E6E7E7
+        E7E6E6E6E6E6E6E8E8E8E7E7E7E7E7E7C7C7C7C1C1C1E2E2E2F0F0F0F3F3F3F7
+        F7F7F7F7F7F7F7F7FFFFFFFBFBFBEAEAEAEAEAEAEBEBEBEDEDEDF0F0F0EDEDED
+        EAEAEAECECECECECECEBEBEBEBEBEBECECECECECECD9D9D9B1B1B1C1C1C1E6E6
+        E6F7F7F7F7F7F7F7F7F7F7F7F7F3F3F3F5F5F5F8F8F8F7F7F7F3F3F3F5F5F5F9
+        F9F9F6F6F6F7F7F7FAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7
+        F8F8F8F5F5F5F3F3F3F3F3F3F4F4F4F5F5F5F2F2F2F4F4F4F6F6F6F5F5F5F9F9
+        F9FBFBFBFFFFFFFFFFFFFFFFFFEDEDEDF0F0F0F1F1F1EDEDEDEDEDEDE9E9E9D3
+        D3D3C8C8C8C8C8C8E4E4E4F4F4F4F5F5F5F8F8F8FAFAFAFBFBFBFCFCFCFDFDFD
+        FDFDFDFEFEFEFEFEFEFFFFFFFDFDFDFBFBFBFCFCFCFEFEFEFBFBFBF9F9F9FAFA
+        FAF8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F8F8F8F7F7F7FCFCFCFBFBFBFEFEFEFB
+        FBFBF9F9F9FDFDFDFBFBFBF8F8F8FBFBFBF9F9F9F7F7F7F8F8F8F7F7F7FCFCFC
+        FBFBFBF7F7F7F4F4F4F3F3F3EEEEEEF1F1F1F6F6F6F7F7F7F5F5F5F1F1F1F3F3
+        F3F7F7F7F9F9F9FBFBFBFCFCFCFFFFFFFDFDFDF8F8F8FFFFFFFFFFFFFFFFFFFF
+        FFFFE0E0E0E2E2E2D1D1D1AEAEAEC2C2C2E6E6E6F7F7F7FFFFFFFFFFFFFBFBFB
+        EBEBEBEAEAEAECECECEAEAEAE9E9E9E8E8E8C6C6C6D5D5D5F4F4F4F4F4F4F4F4
+        F4F4F4F4F3F3F3F0F0F0EFEFEFF0F0F0EEEEEEF1F1F1F3F3F3F7F7F7F8F8F8F9
+        F9F9FFFFFFFFFFFFFFFFFFF8F8F8F9F9F9F9F9F9F7F7F7F8F8F8FFFFFFFFFFFF
+        D0D0D0E1E1E1F7F7F7F5F5F5F2F2F2F3F3F3F3F3F3F1F1F1F3F3F3F5F5F5F7F7
+        F7F7F7F7F7F7F7F8F8F8FCFCFCFDFDFDFCFCFCFBFBFBF9F9F9FAFAFAFBFBFBF9
+        F9F9F9F9F9FBFBFBF8F8F8E9E9E9E9E9E9E9E9E9E7E7E7D7D7D7C8C8C8DBDBDB
+        DADADAB5B5B5CACACADADADAD9D9D9FFFFFFFFFFFFEDEDEDECECECEAEAEAE6E6
+        E6E5E5E5E7E7E7E7E7E7D3D3D3E3E3E3F9F9F9F8F8F8F9F9F9FBFBFBFCFCFCFC
+        FCFCFFFFFFFEFEFEFAFAFAFCFCFCFAFAFAF8F8F8F8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFCFCFCEBEBEBEAEAEAF7F7F7F7F7F7F4F4F4F7F7F7F5F5F5F9F9
+        F9FEFEFEFCFCFCFFFFFFFFFFFFFCFCFCC8C8C8DFDFDFF8F8F8F6F6F6F6F6F6F6
+        F6F6F6F6F6F6F6F6F5F5F5F6F6F6F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFBFBFB
+        EEEEEEEDEDEDEAEAEAEAEAEAEAEAEAD9D9D9B2B2B2CCCCCCECECECEEEEEEF4F4
+        F4F7F7F7F8F8F8F8F8F8FFFFFFFFFFFFFCFCFCEAEAEAEAEAEAE6E6E6E4E4E4E3
+        E3E3E4E4E4E8E8E8E9E9E9E8E8E8EAEAEAEAEAEAEAEAEAEBEBEBEEEEEEEEEEEE
+        EAEAEAE6E6E6D1D1D1D4D4D4E7E7E7E7E7E7E8E8E8E9E9E9E8E8E8E7E7E7E7E7
+        E7E7E7E7E7E7E7E9E9E9E8E8E8E8E8E8D7D7D7DFDFDFF0F0F0F0F0F0F3F3F3F7
+        F7F7F5F5F5F7F7F7FFFFFFFFFFFFEAEAEAEAEAEAECECECEDEDEDEDEDEDEAEAEA
+        E7E7E7E8E8E8E9E9E9E9E9E9EBEBEBEDEDEDDADADAB2B2B2C1C1C1E6E6E6F7F7
+        F7F7F7F7F8F8F8F9F9F9F7F7F7F4F4F4F6F6F6F8F8F8F5F5F5F4F4F4F7F7F7F9
+        F9F9F6F6F6F7F7F7FAFAFAFAFAFAFCFCFCFAFAFAF9F9F9F7F7F7F8F8F8F8F8F8
+        F7F7F7F5F5F5F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3F5F5F5F7F7F7F6F6F6F9F9
+        F9FBFBFBFBFBFBFDFDFDEDEDEDEDEDEDEFEFEFEDEDEDEAEAEAEAEAEAE9E9E9C1
+        C1C1BABABACECECEE1E1E1F5F5F5F8F8F8FBFBFBFBFBFBFCFCFCFEFEFEFFFFFF
+        FEFEFEFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFCFCFCFCFCFCF9F9F9F8F8F8F7F7
+        F7F7F7F7F6F6F6F7F7F7F8F8F8F8F8F8FAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFAFAFAF8F8F8F5F5F5F7F7F7F9F9F9F8F8F8F8F8F8FAFAFAFBFBFB
+        F7F7F7F3F3F3F2F2F2F3F3F3EFEFEFF1F1F1F5F5F5F7F7F7F7F7F7F3F3F3F5F5
+        F5F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFF
+        FFFFE4E4E4E7E7E7D1D1D1CFCFCFF3F3F3FFFFFFFFFFFFFFFFFFFFFFFFEEEEEE
+        ECECECECECECEDEDEDE9E9E9E2E2E2D1D1D1ACACACD1D1D1F4F4F4F4F4F4F3F3
+        F3F3F3F3F0F0F0F1F1F1F1F1F1F2F2F2F4F4F4F5F5F5F7F7F7F5F5F5F8F8F8FC
+        FCFCFFFFFFFFFFFFEFEFEFEAEAEAF8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFF
+        E6E6E6CECECEE0E0E0F3F3F3F3F3F3F6F6F6F6F6F6F6F6F6F7F7F7F8F8F8F8F8
+        F8F7F7F7F8F8F8FAFAFAFDFDFDFCFCFCF9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFB
+        FBFBFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E7E7E7D9D9D9B4B4B4C3C3C3E6E6E6
+        C7C7C7C1C1C1E7E7E7F5F5F5FFFFFFFFFFFFFFFFFFECECECECECECEAEAEAE4E4
+        E4E4E4E4E6E6E6E7E7E7D7D7D7FBFBFBFFFFFFFEFEFEFDFDFDFFFFFFFFFFFFFF
+        FFFFFFFFFFFEFEFEFBFBFBFCFCFCFAFAFAF8F8F8FFFFFFFFFFFFFFFFFFE9E9E9
+        E9E9E9EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9F3F3F3FEFEFEFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDDDDDDDE9E9E9F5F5F5F3F3F3F3F3F3F4
+        F4F4F5F5F5F5F5F5F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF0F0F0
+        F0F0F0EEEEEEEBEBEBEBEBEBD9D9D9B1B1B1B9B9B9DBDBDBEDEDEDF3F3F3F7F7
+        F7F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFDFDFDEBEBEBE7E7E7E3E3E3E2E2E2E4
+        E4E4E7E7E7E9E9E9E7E7E7E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAECECECE8E8E8
+        E4E4E4E2E2E2C0C0C0CFCFCFE6E6E6E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9
+        E9EAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E4E4E4D3D3D3E2E2E2F1F1F1F4F4F4F6
+        F6F6F5F5F5F7F7F7FFFFFFFFFFFFEAEAEAEAEAEAEBEBEBECECECEBEBEBE8E8E8
+        E7E7E7E7E7E7E9E9E9EAEAEAECECECEBEBEBC6C6C6C3C3C3E7E7E7F7F7F7F7F7
+        F7F9F9F9F8F8F8F9F9F9F7F7F7F5F5F5F7F7F7F8F8F8F5F5F5F7F7F7F9F9F9F9
+        F9F9F6F6F6F7F7F7FAFAFAFAFAFAFDFDFDFCFCFCFAFAFAF9F9F9F9F9F9F9F9F9
+        F9F9F9F8F8F8F5F5F5F4F4F4F2F2F2F1F1F1F4F4F4F7F7F7F7F7F7F7F7F7FBFB
+        FBFBFBFBFBFBFBFCFCFCFFFFFFFFFFFFEFEFEFEEEEEEEBEBEBEBEBEBE5E5E5B5
+        B5B5C2C2C2EDEDEDF3F3F3F8F8F8FBFBFBFBFBFBFBFBFBFEFEFEFFFFFFFFFFFF
+        FDFDFDFDFDFDFDFDFDFBFBFBFBFBFBFBFBFBFCFCFCF9F9F9F5F5F5F5F5F5F1F1
+        F1F0F0F0F3F3F3F5F5F5F9F9F9FAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF9F9F9F7F7F7F5F5F5F7F7F7F9F9F9F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7
+        F4F4F4F4F4F4F3F3F3F3F3F3EEEEEEEDEDEDF2F2F2F5F5F5F7F7F7F5F5F5F7F7
+        F7FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFF0F0F0FF
+        FFFFE8E8E8E8E8E8E0E0E0E2E2E2FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9ECECEC
+        ECECECECECECEBEBEBE6E6E6E0E0E0C3C3C3BCBCBCE0E0E0F4F4F4F4F4F4F3F3
+        F3F4F4F4F3F3F3F3F3F3F1F1F1F4F4F4F7F7F7F7F7F7F7F7F7F4F4F4F8F8F8FB
+        FBFBFFFFFFFFFFFFCECECED8D8D8F7F7F7F9F9F9F9F9F9FFFFFFFFFFFFFCFCFC
+        E6E6E6B3B3B3C8C8C8F3F3F3F6F6F6FBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+        F9F8F8F8F9F9F9F8F8F8FBFBFBF9F9F9F7F7F7F5F5F5F7F7F7FCFCFCFDFDFDFF
+        FFFFFFFFFFFFFFFFF9F9F9FBFBFBE8E8E8C6C6C6B6B6B6C1C1C1E6E6E6F6F6F6
+        E6E6E6E6E6E6F7F7F7FFFFFFFFFFFFFFFFFFFAFAFAEAEAEAEAEAEAE8E8E8E2E2
+        E2E1E1E1E5E5E5E7E7E7E7E7E7FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFD
+        FDFDFFFFFFFCFCFCFBFBFBFCFCFCFBFBFBFAFAFAFFFFFFFFFFFFF8F8F8E9E9E9
+        E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAECECECECECECEAEAEAE1E1E1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFCFCFCEDEDEDDFDFDFE9E9E9F3F3F3F1F1F1F3F3F3F4
+        F4F4F5F5F5F6F6F6F7F7F7F7F7F7FFFFFFFFFFFFF8F8F8EDEDEDEFEFEFF0F0F0
+        EEEEEEEDEDEDECECECEBEBEBCACACABABABADADADAEDEDEDEDEDEDEEEEEEF0F0
+        F0F1F1F1F5F5F5F8F8F8FFFFFFFFFFFFFCFCFCEAEAEAE6E6E6E4E4E4E6E6E6E7
+        E7E7E9E9E9E9E9E9E7E7E7E6E6E6E6E6E6E9E9E9E8E8E8E7E7E7D9D9D9C8C8C8
+        C5C5C5C3C3C3B0B0B0CCCCCCF0F0F0E8E8E8EAEAEAEAEAEAE9E9E9E9E9E9ECEC
+        ECEEEEEEEAEAEAE8E8E8E8E8E8E7E7E7E3E3E3C4C4C4D5D5D5F3F3F3F3F3F3F4
+        F4F4F6F6F6F8F8F8FFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E7E7
+        E7E7E7E8E8E8E8E8E8E8E8E8EAEAEADBDBDBB6B6B6D7D7D7F8F8F8F7F7F7F8F8
+        F8FAFAFAF9F9F9FBFBFBF7F7F7F4F4F4F6F6F6F8F8F8F8F8F8F7F7F7F8F8F8F8
+        F8F8F5F5F5F7F7F7FAFAFAFBFBFBFEFEFEFCFCFCFBFBFBFBFBFBFCFCFCFDFDFD
+        FDFDFDF7F7F7F3F3F3F2F2F2F0F0F0F2F2F2F6F6F6F7F7F7F7F7F7F9F9F9FBFB
+        FBFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFF1F1F1EFEFEFEBEBEBE9E9E9E2E2E2B7
+        B7B7CACACAF4F4F4F7F7F7FAFAFAFBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFE
+        FBFBFBF9F9F9F9F9F9F9F9F9FBFBFBFCFCFCFEFEFEFCFCFCF8F8F8F7F7F7F4F4
+        F4F3F3F3F5F5F5F8F8F8FBFBFBFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFCFCFCEC
+        ECECECECECEAEAEAF3F3F3F5F5F5F7F7F7F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2
+        F2F2F2F3F3F3F0F0F0F0F0F0EAEAEAEBEBEBF2F2F2F5F5F5F7F7F7F7F7F7F7F7
+        F7FBFBFBFDFDFDFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFF1F1F1E9E9E9FF
+        FFFFE8E8E8E6E6E6DEDEDEE1E1E1F5F5F5F7F7F7ECECECECECECEBEBEBECECEC
+        EAEAEAEAEAEAE9E9E9E6E6E6E6E6E6CBCBCBD3D3D3F0F0F0F4F4F4F4F4F4F4F4
+        F4F5F5F5F4F4F4F4F4F4F4F4F4F6F6F6F7F7F7F7F7F7F7F7F7F4F4F4F7F7F7F7
+        F7F7FFFFFFE9E9E9BABABAD3D3D3F4F4F4F8F8F8F8F8F8F9F9F9F8F8F8D1D1D1
+        B8B8B89A9A9AC9C9C9F4F4F4F7F7F7FBFBFBFCFCFCFCFCFCFBFBFBFBFBFBFBFB
+        FBF9F9F9F8F8F8F9F9F9FBFBFBF9F9F9F7F7F7F6F6F6F8F8F8FBFBFBFAFAFAFF
+        FFFFFFFFFFF8F8F8C6C6C6D4D4D4C9C9C9C5C5C5D7D7D7E6E6E6F7F7F7F8F8F8
+        F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFCFCFCEDEDEDEAEAEAE9E9E9E5E5E5DFDF
+        DFDEDEDEE4E4E4E7E7E7E7E7E7E6E6E6E7E7E7FCFCFCECECECE9E9E9FCFCFCFB
+        FBFBFEFEFEFCFCFCFBFBFBFCFCFCFBFBFBFBFBFBFFFFFFFFFFFFFAFAFAEAEAEA
+        E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAECECECEBEBEBE0E0E0FFFFFFFFFF
+        FFF0F0F0F0F0F0F1F1F1EFEFEFECECECD3D3D3DADADAF1F1F1F2F2F2F5F5F5F6
+        F6F6F6F6F6F7F7F7F7F7F7F7F7F7FFFFFFFBFBFBEEEEEEEDEDEDEFEFEFEFEFEF
+        EDEDEDECECECECECECDCDCDCB7B7B7D0D0D0F0F0F0EFEFEFE9E9E9EFEFEFF3F3
+        F3F3F3F3F6F6F6F7F7F7FFFFFFFFFFFFFCFCFCE9E9E9E5E5E5D9D9D9CCCCCCCB
+        CBCBDADADAE9E9E9E6E6E6E2E2E2E4E4E4E6E6E6E4E4E4D8D8D8BDBDBDC8C8C8
+        D4D4D4D3D3D3D1D1D1DEDEDEEFEFEFF5F5F5E4E4E4E5E5E5EAEAEAE9E9E9ECEC
+        ECECECECE9E9E9E7E7E7E7E7E7E7E7E7E4E4E4D5D5D5EFEFEFFFFFFFF4F4F4F4
+        F4F4F6F6F6F8F8F8FFFFFFFDFDFDEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E7E7E7
+        E6E6E6E5E5E5E4E4E4E5E5E5E7E7E7CACACAC3C3C3E7E7E7F9F9F9F7F7F7F8F8
+        F8F9F9F9F7F7F7F5F5F5F2F2F2F1F1F1F5F5F5F7F7F7F7F7F7F6F6F6F8F8F8F8
+        F8F8F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFDFDFDFAFAFA
+        F8F8F8EDEDEDE6E6E6E9E9E9EFEFEFF4F4F4F7F7F7F7F7F7F9F9F9FAFAFAFBFB
+        FBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0EDEDEDE9E9E9E8E8E8E5E5E5B7
+        B7B7CECECEF7F7F7F8F8F8FBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFEFEFE
+        FBFBFBF8F8F8F9F9F9FBFBFBFCFCFCFEFEFEFFFFFFFBFBFBF7F7F7F7F7F7F8F8
+        F8F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCEAEAEAE9
+        E9E9EAEAEAE9E9E9EAEAEAF6F6F6F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3
+        F3F3F3F3F3F3EDEDEDE9E9E9E8E8E8EFEFEFF5F5F5F7F7F7F7F7F7F7F7F7F7F7
+        F7F9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCEDEDEDEAEAEAFF
+        FFFFE9E9E9E4E4E4DFDFDFE3E3E3E9E9E9ECECECECECECECECECECECECECECEC
+        ECECECEAEAEAE8E8E8E6E6E6D6D6D6B8B8B8CECECEF0F0F0F7F7F7F6F6F6F4F4
+        F4F4F4F4F3F3F3F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0F1F1F1F3
+        F3F3F3F3F3E7E7E7D7D7D7E3E3E3F4F4F4F7F7F7F5F5F5F7F7F7F8F8F8DEDEDE
+        C8C8C8C9C9C9E1E1E1F7F7F7FAFAFAFDFDFDFCFCFCFCFCFCFBFBFBFCFCFCFEFE
+        FEFBFBFBF8F8F8F9F9F9F9F9F9F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F6F6F6FF
+        FFFFFDFDFDE9E9E9DADADAE7E7E7EAEAEAE9E9E9F8F8F8F9F9F9F9F9F9F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFCFCFCECECECE6E6E6E3E3E3E2E2E2DEDE
+        DEE1E1E1E5E5E5E6E6E6E6E6E6E4E4E4E4E4E4E6E6E6BDBDBDCFCFCFF8F8F8F9
+        F9F9FBFBFBFBFBFBFDFDFDFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFF9F9F9EAEAEA
+        EBEBEBEAEAEAE9E9E9EAEAEAEAEAEAE9E9E9EAEAEAE8E8E8E8E8E8F7F7F7F7F7
+        F7EAEAEAEBEBEBECECECECECECDCDCDCBCBCBCD5D5D5F0F0F0F4F4F4F5F5F5F7
+        F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F9F9F9EEEEEEEDEDEDEEEEEEEEEEEE
+        EDEDEDEAEAEAD9D9D9B8B8B8C3C3C3E4E4E4F4F4F4EEEEEEEFEFEFF8F8F8FBFB
+        FBFBFBFBF9F9F9FCFCFCFFFFFFFFFFFFF4F4F4DEDEDED0D0D0C1C1C1CBCBCBD6
+        D6D6E4E4E4DADADAD4D4D4DFDFDFD7D7D7CCCCCCCCCCCCBFBFBFCCCCCCE6E6E6
+        F1F1F1EFEFEFEEEEEEEEEEEEF1F1F1F6F6F6F4F4F4D9D9D9DADADAECECECEDED
+        EDEDEDEDE9E9E9E7E7E7E7E7E7E7E7E7E6E6E6E2E2E2F2F2F2F7F7F7FFFFFFFF
+        FFFFF7F7F7F9F9F9FAFAFAF9F9F9E9E9E9E6E6E6E5E5E5E6E6E6E7E7E7E8E8E8
+        E8E8E8E7E7E7D9D9D9CCCCCCCCCCCCBCBCBCD5D5D5F4F4F4F8F8F8F7F7F7F7F7
+        F7F7F7F7F4F4F4F3F3F3F3F3F3F4F4F4F8F8F8FBFBFBF9F9F9F6F6F6FAFAFAFE
+        FEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F4F4F4
+        EFEFEFE4E4E4E7E7E7F1F1F1F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFC
+        FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0EDEDEDE7E7E7E7E7E7E4E4E4B5
+        B5B5CDCDCDF8F8F8F9F9F9FBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFE
+        FAFAFAF9F9F9FBFBFBFBFBFBFCFCFCFFFFFFFEFEFEF8F8F8F5F5F5F6F6F6F5F5
+        F5F5F5F5FAFAFAFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFCFCFCECECECEAEAEAEA
+        EAEAEAEAEAEAEAEAEDEDEDEEEEEEF3F3F3EEEEEEECECECEAEAEAECECECECECEC
+        EFEFEFF2F2F2EAEAEAEAEAEAF0F0F0F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFF
+        FFFFE5E5E5E2E2E2E1E1E1E4E4E4EAEAEAEBEBEBEBEBEBECECECECECECECECEC
+        ECECECEAEAEAE9E9E9D9D9D9BABABAC7C7C7E3E3E3F4F4F4FCFCFCF9F9F9F4F4
+        F4F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9E2E2E2F4F4F4F7
+        F7F7F9F9F9FAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F6F6F6F8F8F8F8F8F8F3F3F3
+        F4F4F4F6F6F6F7F7F7F8F8F8FBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFE
+        FEFBFBFBF8F8F8F8F8F8F9F9F9FBFBFBFBFBFBF9F9F9F7F7F7F5F5F5F3F3F3FD
+        FDFDF5F5F5ECECECDEDEDED1D1D1ECECECF8F8F8F9F9F9FBFBFBFAFAFAF9F9F9
+        FBFBFBFAFAFAF9F9F9F8F8F8FFFFFFEAEAEAC4C4C4D2D2D2E2E2E2CCCCCCB4B4
+        B4B6B6B6CDCDCDE1E1E1CFCFCFB9B9B9BBBBBBD4D4D4D3D3D3E2E2E2F7F7F7F8
+        F8F8F8F8F8FAFAFAFCFCFCFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFF8F8F8EAEAEA
+        EAEAEAEAEAEAEBEBEBEDEDEDECECECEAEAEAE9E9E9E6E6E6D7D7D7DADADADADA
+        DADADADAEAEAEAEAEAEAEAEAEACACACAC1C1C1E1E1E1F3F3F3F5F5F5F7F7F7F8
+        F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7FAFAFAEFEFEFECECECEEEEEE
+        ECECECDADADABABABAC6C6C6E6E6E6F5F5F5F6F6F6F3F3F3F7F7F7FCFCFCFCFC
+        FCFCFCFCFDFDFDFFFFFFFCFCFCFFFFFFEBEBEBC6C6C6D0D0D0DCDCDCE9E9E9F3
+        F3F3F3F3F3E5E5E5E1E1E1D9D9D9C1C1C1CCCCCCD9D9D9D9D9D9E6E6E6F1F1F1
+        EFEFEFEFEFEFF1F1F1F1F1F1F1F1F1F5F5F5F8F8F8EAEAEAFEFEFEFFFFFFF1F1
+        F1EFEFEFEAEAEAE7E7E7E7E7E7E7E7E7E4E4E4DFDFDFE4E4E4E9E9E9F8F8F8E9
+        E9E9EBEBEBFBFBFBF8F8F8F8F8F8F5F5F5DBDBDBDADADAE8E8E8EBEBEBEBEBEB
+        E9E9E9DDDDDDC1C1C1CBCBCBDBDBDBDADADAE6E6E6F7F7F7F9F9F9F8F8F8F7F7
+        F7F8F8F8F6F6F6F4F4F4F5F5F5F5F5F5F9F9F9FCFCFCF8F8F8F7F7F7F9F9F9FC
+        FCFCFCFCFCFCFCFCFFFFFFFFFFFFF6F6F6FFFFFFFFFFFFFCFCFCD6D6D6DFDFDF
+        ECECECEEEEEEF5F5F5FBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFBFBFBFAFAFAFCFC
+        FCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFF0F0F0EBEBEBE7E7E7E7E7E7D2D2D2A5
+        A5A5D5D5D5FBFBFBFAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFCFCFCFDFDFDFDFDFD
+        FBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFBFBFBFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCECECECEBEBEBEAEAEAEB
+        EBEBEBEBEBEAEAEAEDEDEDEBEBEBD9D9D9DDDDDDECECECEEEEEEF2F2F2FFFFFF
+        FFFFFFFFFFFFF8F8F8EEEEEEF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9
+        F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EDEDEDEFEFEFF0F0F0FF
+        FFFFE2E2E2E1E1E1E0E0E0E4E4E4EAEAEAEAEAEAEAEAEAECECECECECECECECEC
+        EAEAEAEAEAEAEBEBEBCECECECACACAE8E8E8F7F7F7F9F9F9FEFEFEFBFBFBF4F4
+        F4F5F5F5FFFFFFFFFFFFFFFFFFF8F8F8EBEBEBEAEAEACCCCCCD7D7D7F9F9F9FB
+        FBFBFDFDFDFBFBFBF9F9F9F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F5F5F5
+        F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFD
+        FDFCFCFCF9F9F9F8F8F8FBFBFBFEFEFEFCFCFCF8F8F8F3F3F3F2F2F2F1F1F1F4
+        F4F4FEFEFEF6F6F6DFDFDFDCDCDCE9E9E9FAFAFAFDFDFDFDFDFDFBFBFBF9F9F9
+        F9F9F9F9F9F9F8F8F8F9F9F9FBFBFBE8E8E8D3D3D3E4E4E4D5D5D5A9A9A9B5B5
+        B5CACACADEDEDECFCFCFA4A4A4B5B5B5CECECEE6E6E6E8E8E8E6E6E6FFFFFFFF
+        FFFFFFFFFFF8F8F8FBFBFBFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFAFAFAEAEAEA
+        E9E9E9E7E7E7E9E9E9ECECECEBEBEBE8E8E8E9E9E9E6E6E6C3C3C3D5D5D5C7C7
+        C7D7D7D7DDDDDDC9C9C9C6C6C6B2B2B2CECECEF0F0F0F4F4F4F7F7F7F8F8F8F9
+        F9F9F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F9F9F9F7F7F7E2E2E2D9D9D9
+        D3D3D3C3C3C3C8C8C8E6E6E6F7F7F7F5F5F5F7F7F7F8F8F8F9F9F9FEFEFEFDFD
+        FDFDFDFDFDFDFDFCFCFCF9F9F9F7F7F7EAEAEAE2E2E2ECECECF4F4F4F4F4F4F4
+        F4F4F4F4F4F4F4F4F3F3F3E9E9E9D9D9D9E6E6E6F2F2F2F0F0F0F0F0F0EEEEEE
+        F0F0F0F3F3F3F4F4F4F5F5F5F5F5F5F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFEEEE
+        EEEBEBEBE9E9E9E7E7E7E7E7E7E7E7E7E2E2E2DFDFDFE5E5E5E9E9E9EAEAEADA
+        DADAE9E9E9F6F6F6F5F5F5F7F7F7F7F7F7EDEDEDECECECECECECEEEEEEECECEC
+        E1E1E1CACACACECECEE7E7E7F6F6F6F6F6F6F5F5F5F8F8F8F9F9F9F7F7F7FAFA
+        FAFBFBFBF4F4F4F4F4F4F5F5F5F4F4F4FAFAFAFBFBFBF5F5F5F3F3F3F4F4F4F7
+        F7F7F7F7F7F9F9F9FFFFFFFFFFFFEDEDEDECECECECECECD9D9D9ACACACCACACA
+        F1F1F1F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFEFE
+        FEFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFEDEDEDE9E9E9E6E6E6E6E6E6BDBDBDBC
+        BCBCE9E9E9FBFBFBFAFAFAFBFBFBFCFCFCFCFCFCFCFCFCFBFBFBFDFDFDFDFDFD
+        FCFCFCFDFDFDFBFBFBFBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EBEBEBEAEAEAEAEAEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEAEAE8E8E8C4C4C4D0D0D0F3F3F3FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF3F3F3F3F3F3F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9
+        F9F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEBEBEBECECECFF
+        FFFFE6E6E6E3E3E3D3D3D3D9D9D9ECECECEAEAEAEAEAEAECECECECECECEAEAEA
+        EAEAEAECECECDFDFDFBFBFBFD9D9D9F5F5F5F7F7F7F8F8F8FEFEFEFBFBFBF5F5
+        F5FFFFFFFFFFFFFFFFFFF8F8F8EBEBEBE8E8E8DBDBDBBCBCBCD9D9D9F9F9F9FB
+        FBFBFBFBFBFAFAFAFAFAFAF8F8F8F8F8F8F7F7F7F6F6F6F7F7F7F7F7F7F6F6F6
+        F8F8F8F8F8F8F7F7F7F8F8F8F9F9F9FAFAFAF8F8F8F8F8F8F9F9F9FAFAFAFCFC
+        FCFAFAFAF8F8F8F8F8F8FAFAFAFBFBFBF9F9F9F6F6F6F3F3F3F3F3F3F3F3F3F4
+        F4F4FFFFFFFFFFFFEEEEEEECECECF6F6F6F9F9F9FBFBFBFBFBFBF9F9F9F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F5F5F5F8F8F8E6E6E6D3D3D3E6E6
+        E6F7F7F7F7F7F7E4E4E4D1D1D1E4E4E4F8F8F8F8F8F8FFFFFFF8F8F8F9F9F9FF
+        FFFFEEEEEEEEEEEEFFFFFFFFFFFFFDFDFDF8F8F8F6F6F6F5F5F5DCDCDCDCDCDC
+        EAEAEAE8E8E8E9E9E9EAEAEAE9E9E9E7E7E7E7E7E7D3D3D3ABABABD2D2D2E2E2
+        E2E5E5E5E4E4E4CFCFCFD1D1D1D2D2D2E2E2E2F4F4F4F7F7F7F7F7F7F8F8F8F9
+        F9F9F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F7F7F7F7F7F7E9E9E9DDDDDD
+        DCDCDCD9D9D9E3E3E3F4F4F4F7F7F7F8F8F8F9F9F9FAFAFAF9F9F9FBFBFBFAFA
+        FAFBFBFBFCFCFCFBFBFBFDFDFDFCFCFCFCFCFCFFFFFFFCFCFCF4F4F4F4F4F4F4
+        F4F4F4F4F4F4F4F4F4F4F4F4F4F4EFEFEFF0F0F0F1F1F1F1F1F1F1F1F1F1F1F1
+        F2F2F2F4F4F4F5F5F5F8F8F8F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFE9E9
+        E9E9E9E9E7E7E7E3E3E3E1E1E1E1E1E1DEDEDEE0E0E0E8E8E8EAEAEAE9E9E9DB
+        DBDBD3D3D3E6E6E6F2F2F2F7F7F7F7F7F7FCFCFCFFFFFFFFFFFFFCFCFCEDEDED
+        DCDCDCD6D6D6EAEAEAF8F8F8FAFAFAFAFAFAF8F8F8FBFBFBFBFBFBF9F9F9FFFF
+        FFFFFFFFEFEFEFF3F3F3F4F4F4F4F4F4FBFBFBFFFFFFFFFFFFFFFFFFF4F4F4F7
+        F7F7F7F7F7FBFBFBFFFFFFEEEEEED7D7D7D0D0D0CCCCCCB2B2B2BABABADADADA
+        F4F4F4F9F9F9F9F9F9FCFCFCFDFDFDFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFE
+        FEFCFCFCF9F9F9FFFFFFFFFFFFFDFDFDEBEBEBE7E7E7E6E6E6D3D3D3ABABABD1
+        D1D1F8F8F8F7F7F7F7F7F7FCFCFCFEFEFEFDFDFDFDFDFDFDFDFDFFFFFFFDFDFD
+        FDFDFDFFFFFFFBFBFBFAFAFAFCFCFCFCFCFCFFFFFFFFFFFFFDFDFDEEEEEEF0F0
+        F0EEEEEEEDEDEDEEEEEEEEEEEEE9E9E9E8E8E8EAEAEAEAEAEADBDBDBCDCDCDDB
+        DBDBD9D9D9C8C8C8C7C7C7C9C9C9B4B4B4D3D3D3F5F5F5FFFFFFFFFFFFFFFFFF
+        FCFCFCECECECEAEAEAD9D9D9E7E7E7F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F7F7
+        F7F7F7F7FBFBFBFFFFFFFFFFFFF9F9F9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFF
+        FFFFD3D3D3E2E2E2C7C7C7E8E8E8F9F9F9E9E9E9E9E9E9ECECECEBEBEBEAEAEA
+        DFDFDFD1D1D1BFBFBFCACACAE7E7E7F7F7F7F8F8F8F9F9F9FEFEFEFCFCFCFFFF
+        FFFFFFFFFFFFFFF5F5F5EAEAEAEAEAEAE8E8E8CCCCCCC8C8C8E7E7E7F8F8F8F9
+        F9F9F9F9F9FAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F9F9F9FBFBFBFCFCFCF9F9F9F9F9F9F8F8F8F7F7F7F8F8F8FAFAFAFBFB
+        FBF9F9F9F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F3F3F3F1F1F1F4F4F4F4F4F4FE
+        FEFEFFFFFFFFFFFFF0F0F0EDEDEDEEEEEEFFFFFFFFFFFFF7F7F7F5F5F5F6F6F6
+        F9F9F9F8F8F8F6F6F6F5F5F5F8F8F8F5F5F5F5F5F5F8F8F8F7F7F7F6F6F6F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8FAFAFAF7F7F7FFFFFFFFFFFFEAEAEAEA
+        EAEADADADAF6F6F6FFFFFFFFFFFFFFFFFFF4F4F4F3F3F3F3F3F3E6E6E6E6E6E6
+        D5D5D5C1C1C1D6D6D6E9E9E9E8E8E8E7E7E7E3E3E3BABABABABABAE5E5E5F3F3
+        F3F4F4F4F5F5F5F1F1F1F4F4F4F6F6F6F6F6F6F8F8F8F9F9F9F8F8F8F8F8F8FA
+        FAFAFAFAFAF8F8F8F8F8F8F8F8F8F7F7F7F6F6F6F7F7F7F8F8F8F5F5F5F4F4F4
+        F3F3F3F0F0F0EFEFEFF4F4F4F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9
+        F9F9F9F9FCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFFFFFFFDFDFDF5F5F5F4F4F4F4
+        F4F4F4F4F4F7F7F7F5F5F5F3F3F3EFEFEFEEEEEEF1F1F1F1F1F1F2F2F2F2F2F2
+        F5F5F5F6F6F6F7F7F7F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFF2F2F2E7E7
+        E7E7E7E7E6E6E6DFDFDFDFDFDFE2E2E2E2E2E2E4E4E4E9E9E9E9E9E9E6E6E6CD
+        CDCDCDCDCDE2E2E2F1F1F1F7F7F7F7F7F7FCFCFCFFFFFFFFFFFFFCFCFCEDEDED
+        DADADADEDEDEF2F2F2F7F7F7F9F9F9F8F8F8F5F5F5FAFAFAF9F9F9FEFEFEFFFF
+        FFF2F2F2E2E2E2F3F3F3F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFE9E9E9E5E5E5F7
+        F7F7F7F7F7F9F9F9F5F5F5E9E9E9DFDFDFD9D9D9D5D5D5D1D1D1DFDFDFF1F1F1
+        F8F8F8FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFBFBFBF9F9
+        F9F9F9F9F8F8F8FDFDFDFCFCFCF7F7F7DADADAC8C8C8C6C6C6AFAFAFBDBDBDE4
+        E4E4F8F8F8F7F7F7F7F7F7FBFBFBFBFBFBFAFAFAFDFDFDFDFDFDFDFDFDFCFCFC
+        FFFFFFFFFFFFFCFCFCFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFF1F1F1EFEFEFEDED
+        EDEBEBEBE9E9E9EAEAEAE9E9E9E6E6E6D7D7D7CACACAC8C8C8B8B8B8C3C3C3DE
+        DEDEC2C2C2C1C1C1D3D3D3D3D3D3D2D2D2E4E4E4FFFFFFFFFFFFFFFFFFE9E9E9
+        E5E5E5E3E3E3E7E7E7C4C4C4D5D5D5F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8
+        F8F7F7F7F9F9F9FFFFFFFFFFFFEFEFEFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFF
+        FFFFE2E2E2D6D6D6B6B6B6F5F5F5F8F8F8CBCBCBCFCFCFDFDFDFDEDEDED1D1D1
+        C3C3C3CACACAD7D7D7E7E7E7F7F7F7F8F8F8F8F8F8F9F9F9FEFEFEFFFFFFFFFF
+        FFFFFFFFF5F5F5E9E9E9E9E9E9EAEAEAE8E8E8CACACAD5D5D5F4F4F4F8F8F8F8
+        F8F8F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7
+        F7F7F7FBFBFBFCFCFCF9F9F9F7F7F7F6F6F6F5F5F5F5F5F5F7F7F7F9F9F9F9F9
+        F9F9F9F9F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F6F6F6F7F7F7F7F7F7F4F4F4FF
+        FFFFFFFFFFFFFFFFF0F0F0EEEEEEEDEDEDF8F8F8F8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F8F8F8FBFBFBF8F8F8F5F5F5F7F7
+        F7F7F7F7F7F7F7F7F7F7F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFEAEAEAEA
+        EAEAE8E8E8F2F2F2FFFFFFF8F8F8DFDFDFE7E7E7F3F3F3F4F4F4F3F3F3F2F2F2
+        E1E1E1D0D0D0E2E2E2E4E4E4E2E2E2DFDFDFDADADABABABAD1D1D1F6F6F6F4F4
+        F4F7F7F7F8F8F8F7F7F7F8F8F8F8F8F8F9F9F9FAFAFAF9F9F9F9F9F9FAFAFAFB
+        FBFBF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FBFBFBF9F9F9
+        F5F5F5F2F2F2F3F3F3F4F4F4F6F6F6F8F8F8F8F8F8F9F9F9FAFAFAF9F9F9F9F9
+        F9F8F8F8F8F8F8FBFBFBFCFCFCFBFBFBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F3F3F3F5F5F5
+        F7F7F7F8F8F8F8F8F8F9F9F9F8F8F8F8F8F8FFFFFFFFFFFFF3F3F3EAEAEAE7E7
+        E7E6E6E6E3E3E3DEDEDEE2E2E2E7E7E7E5E5E5E3E3E3D9D9D9CDCDCDCBCBCBC1
+        C1C1DADADAEEEEEEF2F2F2F7F7F7F9F9F9FEFEFEFFFFFFFFFFFFEFEFEFEDEDED
+        D9D9D9DDDDDDF1F1F1F3F3F3F5F5F5F3F3F3F3F3F3F7F7F7FDFDFDFFFFFFFFFF
+        FFE9E9E9E7E7E7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8C8C8C8D5D5D5F3
+        F3F3F6F6F6F9F9F9F7F7F7F4F4F4F4F4F4F4F4F4F4F4F4F1F1F1F4F4F4F8F8F8
+        FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCF9F9F9F8F8F8F8F8
+        F8F8F8F8F8F8F8FDFDFDFCFCFCF7F7F7E6E6E6D3D3D3CECECECECECEE2E2E2F5
+        F5F5F8F8F8F7F7F7F7F7F7F8F8F8F7F7F7F9F9F9FCFCFCFBFBFBFBFBFBFFFFFF
+        FFFFFFFEFEFEFBFBFBFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFEFEFEFECECECE9E9
+        E9EBEBEBEAEAEAE6E6E6D5D5D5C3C3C3B0B0B0C1C1C1D3D3D3D3D3D3E0E0E0EE
+        EEEEE3E3E3E6E6E6F5F5F5F4F4F4F3F3F3F7F7F7FFFFFFFFFFFFF9F9F9E7E7E7
+        E4E4E4E4E4E4E7E7E7C4C4C4D5D5D5F9F9F9F9F9F9FBFBFBFAFAFAF8F8F8F4F4
+        F4F3F3F3F6F6F6FFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFF
+        FFFFFFFFFFFFFFFFEBEBEBFFFFFFEBEBEBC0C0C0D1D1D1E2E2E2CCCCCCCACACA
+        D7D7D7E4E4E4F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FDFDFDFFFFFFFFFF
+        FFF6F6F6EBEBEBEBEBEBE9E9E9E8E8E8D7D7D7B6B6B6D4D4D4F5F5F5F8F8F8F8
+        F8F8F9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F6F6F6F7F7F7
+        F9F9F9FDFDFDF9F9F9F5F5F5F3F3F3F0F0F0F3F3F3F4F4F4F5F5F5F7F7F7F8F8
+        F8F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBF9F9F9F7F7F7F4F4F4EDEDEDEDEDEDFF
+        FFFFFFFFFFF2F2F2EBEBEBEDEDEDECECECECECECECECECF9F9F9FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFEEEEEEF9F9F9FFFFFFF8F8F8FBFBFBF8F8F8F5F5F5F7F7
+        F7F9F9F9F9F9F9F8F8F8F8F8F8F9F9F9FDFDFDFFFFFFFFFFFFFDFDFDEAEAEAEA
+        EAEAE8E8E8E6E6E6ECECECD7D7D7D0D0D0E8E8E8F4F4F4F3F3F3F4F4F4F4F4F4
+        F3F3F3F4F4F4F1F1F1F1F1F1CFCFCFCBCBCBD9D9D9C6C6C6D8D8D8F4F4F4F5F5
+        F5F9F9F9F9F9F9F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8
+        F7F7F7F5F5F5F5F5F5F6F6F6F6F6F6F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFF8F8
+        F8F4F4F4F5F5F5F9F9F9FBFBFBFBFBFBF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F4F4F4F6F6F6F8F8F8
+        F8F8F8F8F8F8F9F9F9FAFAFAF8F8F8F7F7F7FFFFFFEEEEEEDCDCDCE6E6E6E2E2
+        E2E2E2E2DCDCDCDADADAE1E1E1D8D8D8C9C9C9C9C9C9BDBDBDC4C4C4D0D0D0D2
+        D2D2E1E1E1EDEDEDF1F1F1F7F7F7F9F9F9FAFAFAFFFFFFFFFFFFEEEEEEEDEDED
+        E4E4E4E9E9E9F1F1F1F4F4F4F5F5F5F0F0F0F0F0F0F5F5F5FFFFFFFFFFFFF6F6
+        F6ECECECEDEDEDF8F8F8FFFFFFFFFFFFFFFFFFE7E7E7E7E7E7CBCBCBD5D5D5F1
+        F1F1F4F4F4F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F4F4F4F7F7F7F9F9F9
+        FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F8FDFDFDFBFBFBF7F7F7F4F4F4F2F2F2EFEFEFF1F1F1F4F4F4F7
+        F7F7F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F8F8F8F9F9F9FDFDFDFFFFFF
+        FFFFFFFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFF2F2F2ECECECE9E9E9E6E6
+        E6E7E7E7E6E6E6D1D1D1B0B0B0BEBEBECCCCCCE2E2E2F3F3F3F2F2F2F4F4F4F6
+        F6F6F8F8F8F7F7F7F7F7F7F7F7F7F6F6F6F8F8F8FFFFFFF8F8F8E4E4E4E5E5E5
+        E3E3E3E5E5E5E9E9E9D6D6D6E7E7E7FAFAFAFBFBFBFAFAFAF7F7F7F5F5F5F1F1
+        F1F2F2F2F6F6F6FFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E8E8CACACAEFEFEFF2F2F2E5E5E5E4E4E4
+        F3F3F3F5F5F5F7F7F7F7F7F7F5F5F5F6F6F6F7F7F7F8F8F8FAFAFAFFFFFFF9F9
+        F9ECECECE9E9E9E8E8E8E6E6E6D9D9D9B5B5B5BFBFBFE2E2E2F6F6F6F8F8F8F8
+        F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F7F7F7F7F7F7
+        FBFBFBFCFCFCF7F7F7F3F3F3F0F0F0EFEFEFF4F4F4F5F5F5F5F5F5F7F7F7F8F8
+        F8F9F9F9FAFAFAFAFAFAFBFBFBF9F9F9F8F8F8F5F5F5EEEEEEF0F0F0FFFFFFFF
+        FFFFFFFFFFEDEDEDE8E8E8EAEAEAE7E7E7E7E7E7EBEBEBEDEDEDECECECEDEDED
+        EFEFEFF0F0F0ECECECDEDEDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5
+        F5F8F8F8F8F8F8F7F7F7F8F8F8FBFBFBFFFFFFFFFFFFFCFCFCECECECEAEAEAEA
+        EAEAE8E8E8EAEAEAF0F0F0D4D4D4D9D9D9F4F4F4F4F4F4F3F3F3F4F4F4F4F4F4
+        F3F3F3F1F1F1F3F3F3F7F7F7E6E6E6E1E1E1D9D9D9C1C1C1D8D8D8F1F1F1F6F6
+        F6FCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFEFEFEF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8
+        F5F5F5F4F4F4F5F5F5F6F6F6F6F6F6F9F9F9FAFAFAFFFFFFFFFFFFFFFFFFF7F7
+        F7F3F3F3F7F7F7FAFAFAFCFCFCFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFE6
+        E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7EAEAEAEAEAEAD9D9D9E8E8E8F8F8F8
+        F8F8F8F9F9F9FBFBFBFBFBFBF8F8F8F7F7F7F8F8F8E9E9E9E7E7E7D4D4D4BDBD
+        BDBCBCBCBABABAC0C0C0C8C8C8BABABAC3C3C3D2D2D2D2D2D2DFDFDFEEEEEEED
+        EDEDEDEDEDEEEEEEEFEFEFF3F3F3F5F5F5F7F7F7FFFFFFFFFFFFECECECEAEAEA
+        ECECECDFDFDFE5E5E5EFEFEFEEEEEEE9E9E9EEEEEEF4F4F4FFFFFFFDFDFDEDED
+        EDECECECEDEDEDEEEEEEFFFFFFFFFFFFF2F2F2E7E7E7E7E7E7DADADAE2E2E2EC
+        ECECEEEEEEF5F5F5F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF8F8F8F7F7F7F9F9F9
+        FBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFDFDFDF9F9F9F8F8F8F7F7F7F6F6F6F5F5
+        F5F6F6F6F8F8F8FCFCFCF9F9F9F7F7F7F6F6F6F5F5F5F5F5F5F6F6F6F7F7F7F7
+        F7F7F8F8F8F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7FBFBFBFEFEFEFFFFFF
+        FFFFFFFDFDFDFCFCFCF9F9F9FFFFFFFFFFFFFFFFFFECECECE8E8E8E5E5E5E4E4
+        E4E5E5E5DEDEDEBBBBBBBFBFBFE1E1E1EFEFEFF4F4F4F4F4F4F4F4F4F7F7F7F8
+        F8F8F8F8F8F7F7F7F8F8F8F8F8F8F8F8F8FAFAFAFFFFFFFFFFFFF6F6F6E6E6E6
+        E5E5E5E7E7E7E9E9E9E7E7E7DBDBDBEBEBEBF9F9F9FAFAFAF8F8F8F6F6F6F3F3
+        F3F7F7F7FCFCFCFFFFFFFFFFFFEDEDEDEBEBEBEAEAEAE9E9E9EAEAEAEAEAEAFF
+        FFFFFFFFFFFFFFFFF1F1F1FEFEFECBCBCBC6C6C6F4F4F4F7F7F7F7F7F7F7F7F7
+        F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F5F5F5F5F5F5FAFAFAFFFF
+        FFF7F7F7EBEBEBEAEAEAE9E9E9C7C7C7BFBFBFE2E2E2F5F5F5F8F8F8F8F8F8F9
+        F9F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F5F5F5F7F7F7F8F8F8FCFCFCFBFBFB
+        FBFBFBF9F9F9F3F3F3EEEEEEEFEFEFF3F3F3F5F5F5F4F4F4F5F5F5F7F7F7F7F7
+        F7F9F9F9F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFEFEFEEDEDEDE9E9E9E9E9E9E6E6E6E7E7E7EAEAEAECECECEDEDEDEDEDED
+        EEEEEEEDEDEDEBEBEBEBEBEBF8F8F8F8F8F8F8F8F8FFFFFFFFFFFFE6E6E6E6E6
+        E6F8F8F8F8F8F8F8F8F8F9F9F9FBFBFBFDFDFDF7F7F7FFFFFFFBFBFBE7E7E7E8
+        E8E8E7E7E7EBEBEBEEEEEECCCCCCD5D5D5F4F4F4F3F3F3F2F2F2F4F4F4F3F3F3
+        F1F1F1F3F3F3F6F6F6FAFAFAF9F9F9F7F7F7EAEAEADCDCDCE6E6E6F3F3F3F9F9
+        F9FEFEFEFDFDFDFBFBFBFFFFFFFFFFFFFFFFFFF8F8F8EAEAEAE9E9E9EAEAEAED
+        EDEDEDEDEDE9E9E9F7F7F7F7F7F7F6F6F6F7F7F7F7F7F7F9F9F9FBFBFBF8F8F8
+        F7F7F7F5F5F5F6F6F6F4F4F4F5F5F5F8F8F8FFFFFFFFFFFFFFFFFFE9E9E9CACA
+        CADADADAF5F5F5F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+        E4E4E1E1E1E3E3E3E5E5E5E4E4E4E3E3E3E6E6E6E7E7E7D9D9D9E8E8E8F8F8F8
+        F9F9F9FBFBFBFAFAFAFAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F5F5F5E5E5E5D2D2
+        D2D1D1D1D1D1D1D5D5D5D8D8D8D7D7D7E2E2E2F0F0F0F0F0F0F3F3F3F6F6F6F5
+        F5F5F6F6F6F6F6F6F5F5F5F5F5F5F7F7F7F4F4F4FFFFFFFFFFFFECECECEAEAEA
+        EAEAEACECECED3D3D3E9E9E9ECECECEBEBEBF0F0F0FFFFFFFFFFFFFCFCFCEDED
+        EDEDEDEDEEEEEEF1F1F1FFFFFFFFFFFFEEEEEEE7E7E7E7E7E7E4E4E4D5D5D5DA
+        DADAECECECF4F4F4F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7
+        F9F9F9FAFAFAFDFDFDFDFDFDFBFBFBFAFAFAF8F8F8F8F8F8F5F5F5F3F3F3F4F4
+        F4F5F5F5F8F8F8F9F9F9F9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF9F9F9F6F6F6F5F5F5FFFFFFFFFFFFE9E9E9E5E5E5E3E3E3E0E0E0E3E3
+        E3E2E2E2DCDCDCBFBFBFD4D4D4F1F1F1F1F1F1F4F4F4F4F4F4F6F6F6F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFF9F9F9E9E9E9
+        E6E6E6E4E4E4E7E7E7E8E8E8DADADAE6E6E6F9F9F9FAFAFAF8F8F8F7F7F7F8F8
+        F8FFFFFFFFFFFFFFFFFFFFFFFFF0F0F0ECECECEAEAEAECECECEAEAEAE9E9E9FF
+        FFFFFFFFFFFFFFFFE7E7E7E6E6E6C6C6C6D7D7D7F7F7F7F9F9F9F9F9F9FAFAFA
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF5F5F5F5F5F5F7F7F7FCFCFCFFFF
+        FFFFFFFFEEEEEEEDEDEDEBEBEBC6C6C6D3D3D3F7F7F7F9F9F9F9F9F9FBFBFBFB
+        FBFBF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8F9F9F9FFFFFFFFFFFF
+        F7F7F7F5F5F5EEEEEEF0F0F0F4F4F4F5F5F5F4F4F4F5F5F5F7F7F7F8F8F8F9F9
+        F9FAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF4F4F4EEEEEEEAEAEAE9E9E9E8E8E8E6E6E6E8E8E8ECECECEBEBEBECECEC
+        EDEDEDEDEDEDEBEBEBEAEAEAEBEBEBECECECECECECEBEBEBECECECDDDDDDE9E9
+        E9F9F9F9FAFAFAFBFBFBFBFBFBFDFDFDFCFCFCF8F8F8FFFFFFE7E7E7BDBDBDC1
+        C1C1D5D5D5EDEDEDEEEEEEDADADAE4E4E4F4F4F4F1F1F1F3F3F3F6F6F6F4F4F4
+        F3F3F3F6F6F6F9F9F9FBFBFBFAFAFAF7F7F7F7F7F7F7F7F7F5F5F5F6F6F6F9F9
+        F9FBFBFBF9F9F9F9F9F9FFFFFFFFFFFFFFFFFFEAEAEAECECECEAEAEAECECECEE
+        EEEEEBEBEBE6E6E6D4D4D4E6E6E6F8F8F8FAFAFAFAFAFAFCFCFCFBFBFBF8F8F8
+        F7F7F7F7F7F7F6F6F6F4F4F4F5F5F5F8F8F8FFFFFFFFFFFFFFFFFFE4E4E4AAAA
+        AAC1C1C1F3F3F3F6F6F6F9F9F9FCFCFCFFFFFFFDFDFDFFFFFFFFFFFFF6F6F6E6
+        E6E6E5E5E5E6E6E6E6E6E6E4E4E4E6E6E6E7E7E7E7E7E7EAEAEAEAEAEAFFFFFF
+        FFFFFFFAFAFAF9F9F9FAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6
+        F6F7F7F7F6F6F6F5F5F5F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F7F7F7F6
+        F6F6F8F8F8F9F9F9F9F9F9F8F8F8F6F6F6F4F4F4FFFFFFFFFFFFECECECEAEAEA
+        EAEAEACACACAD3D3D3EEEEEEF0F0F0F0F0F0F6F6F6FFFFFFFFFFFFF7F7F7EFEF
+        EFF0F0F0F0F0F0F0F0F0F0F0F0EFEFEFECECECE5E5E5E2E2E2DEDEDEC9C9C9CF
+        CFCFEDEDEDF5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFAFAFAF8F8F8F8F8F8F7F7F7
+        F8F8F8F8F8F8FBFBFBF9F9F9F5F5F5F5F5F5F5F5F5F2F2F2F0F0F0F2F2F2F4F4
+        F4F9F9F9FBFBFBFAFAFAFAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8F8
+        F8F8F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FBFBFBF5F5F5F4F4F4F3F3F3FFFFFFF9F9F9E5E5E5E2E2E2E0E0E0E0E0E0E1E1
+        E1DEDEDED9D9D9C2C2C2D5D5D5F0F0F0F1F1F1F3F3F3F5F5F5F6F6F6F7F7F7F8
+        F8F8F8F8F8F8F8F8F8F8F8F7F7F7F9F9F9FFFFFFF9F9F9D9D9D9D7D7D7E6E6E6
+        E6E6E6E6E6E6E8E8E8EAEAEAE9E9E9EAEAEAFFFFFFFFFFFFFFFFFFFEFEFEFFFF
+        FFFFFFFFFFFFFFFFFFFFFBFBFBEEEEEEECECECECECECECECECEAEAEAE7E7E7FF
+        FFFFFFFFFFFFFFFFE5E5E5E3E3E3D9D9D9DCDCDCF9F9F9FEFEFEFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF9F9F9EAEAEAD7D7D7E2E2E2F7F7F7F9F9F9FBFBFBFFFF
+        FFFFFFFFEFEFEFEEEEEEECECECDADADAE8E8E8F8F8F8F8F8F8F8F8F8FCFCFCFB
+        FBFBF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFBFBFB
+        E6E6E6F4F4F4F2F2F2F3F3F3F4F4F4F3F3F3F4F4F4F6F6F6F8F8F8FAFAFAFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEDEDEDEDEDEDEDEDEDF0F0F0F3F3F3F5
+        F5F5F1F1F1ECECECE9E9E9E8E8E8E7E7E7E6E6E6E7E7E7EAEAEAEAEAEAECECEC
+        EDEDEDEDEDEDEAEAEAE9E9E9ECECECECECECECECECEAEAEAECECECEDEDEDEDED
+        EDFAFAFAFCFCFCFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9F7F7F7E1E1E1CFCFCFD7
+        D7D7F8F8F8FFFFFFF3F3F3EBEBEBE9E9E9FFFFFFFFFFFFF4F4F4F5F5F5F2F2F2
+        F5F5F5F8F8F8F9F9F9FBFBFBF9F9F9F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F7F7
+        F7F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFEBEBEBEDEDEDECECECEDEDEDED
+        EDEDE9E9E9E6E6E6BEBEBECFCFCFF7F7F7F9F9F9FAFAFAFBFBFBF9F9F9F7F7F7
+        F7F7F7F7F7F7F4F4F4F4F4F4F6F6F6F8F8F8FFFFFFFFFFFFE2E2E2C5C5C58686
+        86BFBFBFF2F2F2F6F6F6FBFBFBFDFDFDFEFEFEFAFAFAFFFFFFFFFFFFE9E9E9E8
+        E8E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E7E7E7E7E7E7EAEAEAE9E9E9FBFBFB
+        FDFDFDF8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F4F4F4F1F1F1F3F3F3F5F5
+        F5F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F7
+        F7F7F9F9F9F9F9F9F9F9F9F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFCFCFCEAEAEA
+        EAEAEAC8C8C8D0D0D0EFEFEFF1F1F1F0F0F0FFFFFFFFFFFFFFFFFFF0F0F0EEEE
+        EEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFECECECE6E6E6E4E4E4E3E3E3DADADAE1
+        E1E1F1F1F1F5F5F5F5F5F5FFFFFFFFFFFFFAFAFAE7E7E7E7E7E7E7E7E7E7E7E7
+        F5F5F5F8F8F8FBFBFBF8F8F8F5F5F5F5F5F5F5F5F5F1F1F1EFEFEFF4F4F4F9F9
+        F9FEFEFEFDFDFDFCFCFCFCFCFCFCFCFCF9F9F9F7F7F7F8F8F8FBFBFBFBFBFBFB
+        FBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDEEEEEEEEEEEEEEEEEE
+        DFDFDFE7E7E7F3F3F3F0F0F0F0F0F0F2F2F2E4E4E4E1E1E1E0E0E0DEDEDEDCDC
+        DCD9D9D9CBCBCBB6B6B6D5D5D5F1F1F1F3F3F3F3F3F3F5F5F5F7F7F7F7F7F7F8
+        F8F8F8F8F8F8F8F8F8F8F8F7F7F7FFFFFFFFFFFFFFFFFFF9F9F9FFFFFFE9E9E9
+        C3C3C3C2C2C2D7D7D7ECECECEBEBEBE6E6E6F5F5F5FFFFFFFFFFFFF7F7F7FFFF
+        FFFFFFFFF6F6F6ECECECEEEEEEEDEDEDECECECEAEAEAEAEAEAEBEBEBEAEAEAFF
+        FFFFE6E6E6E5E5E5E4E4E4E4E4E4DADADADEDEDED7D7D7EAEAEAFFFFFFFFFFFF
+        FFFFFFFEFEFEEDEDEDE9E9E9E6E6E6C5C5C5D4D4D4F8F8F8F9F9F9FBFBFBFFFF
+        FFFFFFFFF0F0F0EEEEEEEEEEEEF0F0F0DDDDDDE9E9E9FAFAFAFBFBFBFDFDFDFB
+        FBFBF8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFEDEDED
+        E4E4E4F4F4F4F5F5F5F2F2F2F3F3F3F5F5F5F5F5F5F8F8F8FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFBFBFBECECECECECECEDEDEDF0F0F0F1F1F1F3F3F3EF
+        EFEFEAEAEAE7E7E7E7E7E7E7E7E7E6E6E6E7E7E7E6E6E6E7E7E7DCDCDCDEDEDE
+        E9E9E9EBEBEBEAEAEAEBEBEBECECECECECECECECECECECECECECECF0F0F0F4F4
+        F4E4E4E4F1F1F1FFFFFFFCFCFCF9F9F9F9F9F9F8F8F8F6F6F6F6F6F6FAFAFAFF
+        FFFFFFFFFFFFFFFFF2F2F2E9E9E9E8E8E8F5F5F5F7F7F7F6F6F6F5F5F5F5F5F5
+        F6F6F6F9F9F9FBFBFBFBFBFBF8F8F8F7F7F7F7F7F7F6F6F6F4F4F4F5F5F5F7F7
+        F7F8F8F8F8F8F8FAFAFAFFFFFFFFFFFFFBFBFBEAEAEAECECECEBEBEBE9E9E9E9
+        E9E9E7E7E7D4D4D4A7A7A7CDCDCDF7F7F7F9F9F9FAFAFAF9F9F9F8F8F8F7F7F7
+        F7F7F7F6F6F6F4F4F4F4F4F4F5F5F5F7F7F7F8F8F8F8F8F8CCCCCC919191A7A7
+        A7D9D9D9F4F4F4FAFAFAFDFDFDFCFCFCFBFBFBF9F9F9FFFFFFFFFFFFEAEAEAE9
+        E9E9E9E9E9E8E8E8E9E9E9EAEAEAEAEAEAE9E9E9E9E9E9EAEAEAE9E9E9ECECEC
+        ECECECE9E9E9FFFFFFFFFFFFFFFFFFF9F9F9F7F7F7F1F1F1F3F3F3FAFAFAF9F9
+        F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFAFAFAF7F7F7F7F7F7F8
+        F8F8F9F9F9FAFAFAFAFAFAF9F9F9FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFEAEAEA
+        D7D7D7AFAFAFCFCFCFF1F1F1F3F3F3F3F3F3FFFFFFFFFFFFFFFFFFF3F3F3F0F0
+        F0EEEEEEF1F1F1F2F2F2F0F0F0EDEDEDEBEBEBE7E7E7E6E6E6E7E7E7E7E7E7E6
+        E6E6F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFE8E8E8E7E7E7E7E7E7E6E6E6E5E5E5
+        D5D5D5E6E6E6F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F3F3F3F2F2F2F7F7F7FBFB
+        FBFDFDFDFEFEFEFEFEFEFEFEFEFDFDFDFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFBFBFBEDEDEDECECECEBEBEBEBEBEBEBEBEBEBEBEB
+        D0D0D0D7D7D7EDEDEDEEEEEEEEEEEEF3F3F3F2F2F2CECECEB7B7B7B7B7B7CBCB
+        CBDBDBDBC2C2C2C5C5C5E4E4E4F3F3F3F3F3F3F3F3F3F5F5F5F7F7F7F7F7F7F8
+        F8F8F8F8F8F8F8F8F8F8F8F3F3F3FFFFFFFFFFFFFFFFFFFEFEFEEEEEEEC7C7C7
+        C1C1C1D2D2D2FAFAFAFDFDFDE9E9E9E1E1E1E3E3E3E8E8E8E7E7E7E7E7E7F4F4
+        F4F7F7F7EDEDEDEEEEEEEEEEEEEDEDEDECECECDCDCDCD1D1D1D1D1D1D0D0D0FF
+        FFFFE3E3E3E2E2E2E4E4E4E0E0E0D7D7D7DEDEDED3D3D3F7F7F7FFFFFFFFFFFF
+        EFEFEFEEEEEEEDEDEDECECECEAEAEACCCCCCD9D9D9F8F8F8FBFBFBFFFFFFFFFF
+        FFFFFFFFF1F1F1F0F0F0F1F1F1F3F3F3DEDEDEEAEAEAFBFBFBFBFBFBFDFDFDFB
+        FBFBF8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFEBEBEBECECECEAEAEA
+        E8E8E8F4F4F4F4F4F4F3F3F3F6F6F6F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFF
+        FFFCFCFCEBEBEBEAEAEAEAEAEAEAEAEAECECECF0F0F0F1F1F1EDEDEDECECECE9
+        E9E9E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E4E4E4D7D7D7BEBEBED9D9D9
+        EBEBEBECECECEBEBEBEAEAEAECECECECECECEEEEEEEFEFEFEFEFEFF5F5F5F8F8
+        F8E6E6E6EEEEEEFCFCFCF9F9F9F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8FEFEFEFF
+        FFFFFFFFFFFFFFFFF0F0F0E6E6E6E2E2E2E4E4E4E7E7E7EAEAEAF7F7F7F7F7F7
+        F8F8F8FAFAFAFCFCFCF9F9F9F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F7F7F7F7F7
+        F7F7F7F7F7F7F7FBFBFBFFFFFFFFFFFFECECECE9E9E9EBEBEBEBEBEBE9E9E9E9
+        E9E9E7E7E7C1C1C1B8B8B8E2E2E2F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7
+        F7F7F7F7F7F7F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9E1E1E1C8C8C8DFDF
+        DFF5F5F5F9F9F9FDFDFDFCFCFCF9F9F9F8F8F8FAFAFAFFFFFFFFFFFFECECECEA
+        EAEAE9E9E9E9E9E9EAEAEAECECECECECECEAEAEAECECECEEEEEEEEEEEEEEEEEE
+        ECECECE9E9E9FCFCFCFFFFFFFDFDFDFFFFFFFFFFFFF1F1F1F9F9F9FFFFFFFCFC
+        FCFAFAFAF9F9F9F8F8F8F7F7F7F9F9F9FCFCFCFEFEFEFAFAFAF8F8F8F9F9F9F8
+        F8F8FBFBFBFBFBFBF9F9F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFCFCFCD8D8D8
+        AEAEAEBFBFBFE5E5E5F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFF5F5F5F0F0F0EDED
+        EDF0F0F0F2F2F2EEEEEEE9E9E9E9E9E9E9E9E9E5E5E5E4E4E4E7E7E7E6E6E6E2
+        E2E2EEEEEEE9E9E9FFFFFFFFFFFFFFFFFFE7E7E7E7E7E7E7E7E7E6E6E6D2D2D2
+        AEAEAED3D3D3F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F7F7F7FBFB
+        FBFCFCFCFEFEFEFEFEFEFDFDFDFEFEFEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF9F9F9EAEAEAE8E8E8E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEAEAEA
+        D0D0D0D4D4D4EDEDEDF2F2F2F4F4F4F5F5F5F4F4F4E0E0E0CDCDCDD0D0D0EBEB
+        EBEEEEEECACACAD9D9D9F1F1F1F3F3F3F3F3F3F4F4F4F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F4F4F4F0F0F0EDEDEDFFFFFFECECECD9D9D9CACACAC3C3C3D4D4D4
+        E6E6E6F6F6F6FFFFFFE7E7E7CECECEDBDBDBE1E1E1D5D5D5D6D6D6E7E7E7EBEB
+        EBEDEDEDEEEEEEEEEEEEEDEDEDECECECECECECCDCDCDC9C9C9D8D8D8D6D6D6FF
+        FFFFE2E2E2E4E4E4E5E5E5DDDDDDDCDCDCE4E4E4E7E7E7FCFCFCFFFFFFFDFDFD
+        EEEEEEEDEDEDECECECECECECDEDEDEC0C0C0DBDBDBF8F8F8FBFBFBFFFFFFFFFF
+        FFFFFFFFF1F1F1F0F0F0F2F2F2F1F1F1EEEEEED9D9D9E9E9E9FCFCFCFDFDFDFB
+        FBFBF8F8F8F8F8F8F8F8F8FBFBFBFFFFFFFFFFFFFCFCFCEAEAEAEAEAEAE9E9E9
+        D8D8D8C4C4C4E1E1E1F5F5F5F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFEEEE
+        EEECECECEAEAEAEAEAEAEAEAEAEBEBEBEEEEEEF0F0F0EDEDEDEAEAEAECECECE9
+        E9E9E6E6E6E4E4E4E2E2E2E4E4E4E6E6E6E7E7E7D5D5D5B6B6B6C7C7C7E8E8E8
+        F5F5F5EBEBEBEAEAEAE9E9E9E9E9E9ECECECEDEDEDEEEEEEEEEEEEF3F3F3F5F5
+        F5EFEFEFDADADAE7E7E7F7F7F7F7F7F7F8F8F8F7F7F7F8F8F8F8F8F8FCFCFCFF
+        FFFFFFFFFFFFFFFFFDFDFDE6E6E6E5E5E5E6E6E6E9E9E9E9E9E9EAEAEAF7F7F7
+        F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F6F6F6F7F7F7F7F7
+        F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAE8E8E8E7
+        E7E7E6E6E6C0C0C0CECECEF4F4F4F8F8F8F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F7F7F7F5F5F5F9F9
+        F9F9F9F9F9F9F9FBFBFBF9F9F9F8F8F8F8F8F8FCFCFCFFFFFFFFFFFFEFEFEFEB
+        EBEBEAEAEAEAEAEAEAEAEAEBEBEBECECECECECECEDEDEDEDEDEDECECECECECEC
+        E6E6E6E5E5E5E8E8E8E9E9E9EAEAEAF9F9F9F9F9F9F1F1F1F5F5F5FBFBFBF8F8
+        F8F8F8F8FAFAFAFCFCFCFFFFFFFFFFFFFDFDFDFBFBFBF8F8F8F6F6F6F8F8F8F8
+        F8F8F9F9F9F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFD7D7D7ACACAC
+        BBBBBBE2E2E2F4F4F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFEBEBEBE8E8E8E8E8
+        E8EAEAEAECECECE9E9E9E7E7E7E9E9E9E9E9E9E6E6E6E4E4E4E2E2E2E1E1E1E2
+        E2E2E9E9E9E1E1E1FFFFFFFFFFFFF3F3F3E7E7E7E7E7E7E6E6E6D1D1D1AAAAAA
+        BCBCBCE4E4E4F5F5F5F5F5F5F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F5F5F5F7F7
+        F7FCFCFCFEFEFEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAED
+        EDEDECECECEAEAEAE9E9E9EAEAEAEAEAEAEBEBEBECECECEDEDEDEDEDEDEBEBEB
+        CECECED2D2D2F0F0F0F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFF
+        FFFFFFFFD0D0D0DBDBDBF2F2F2F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F6
+        F6F6F3F3F3EDEDEDF0F0F0F3F3F3F7F7F7EDEDEDFBFBFBEDEDEDEAEAEAF9F9F9
+        F7F7F7F6F6F6F7F7F7E2E2E2DDDDDDCECECEC1C1C1B2B2B2D5D5D5DCDCDCDCDC
+        DCEBEBEBEDEDEDECECECECECECEAEAEAD9D9D9B5B5B5D3D3D3EFEFEFF0F0F0FF
+        FFFFE6E6E6E7E7E7E3E3E3DBDBDBE0E0E0E6E6E6D6D6D6CCCCCCD2D2D2D4D4D4
+        D7D7D7D8D8D8D5D5D5D2D2D2C4C4C4CCCCCCE9E9E9F8F8F8F8F8F8FBFBFBFFFF
+        FFFFFFFFEEEEEEEEEEEEEEEEEEEDEDEDECECECD7D7D7E7E7E7FBFBFBFBFBFBF9
+        F9F9F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFEBEBEBEAEAEAEBEBEBE9E9E9
+        C8C8C8BEBEBEE1E1E1F6F6F6F8F8F8F8F8F8F8F8F8FFFFFFFDFDFDEEEEEEEDED
+        EDEAEAEAE9E9E9EAEAEAE9E9E9EAEAEAEBEBEBEAEAEAE9E9E9EBEBEBEBEBEBE7
+        E7E7E6E6E6E3E3E3E2E2E2E5E5E5E4E4E4E2E2E2BFBFBFC0C0C0E5E5E5F6F6F6
+        F5F5F5F3F3F3E9E9E9E9E9E9E7E7E7E5E5E5E9E9E9EEEEEEF1F1F1F4F4F4F3F3
+        F3ECECECC3C3C3D2D2D2F6F6F6F6F6F6F8F8F8F7F7F7F8F8F8FBFBFBFDFDFDFE
+        FEFEFFFFFFFFFFFFFBFBFBE7E7E7E6E6E6E6E6E6E7E7E7E8E8E8EBEBEBECECEC
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2EAEAEAF4F4F4F7F7F7F7F7
+        F7F7F7F7F9F9F9FFFFFFFFFFFFFCFCFCEAEAEAE9E9E9E8E8E8E7E7E7E7E7E7E6
+        E6E6E5E5E5C3C3C3D5D5D5F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFAFAFA
+        FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F9F9F9F9F9F9F8F8F8F6F6F6FFFF
+        FFFFFFFFF7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAFFFFFFFEFEFEF0F0F0E9
+        E9E9E9E9E9D5D5D5C2C2C2C2C2C2C8C8C8DDDDDDEEEEEEECECECE9E9E9E4E4E4
+        DFDFDFE2E2E2E7E7E7E9E9E9E7E7E7E6E6E6E8E8E8D1D1D1E2E2E2FFFFFFFDFD
+        FDFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F5F5F5F4F4F4F3F3F3F4F4F4F5
+        F5F5F7F7F7F9F9F9FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFBFBFBD7D7D7CDCDCD
+        E1E1E1F5F5F5F5F5F5F6F6F6F8F8F8FFFFFFFFFFFFEAEAEAE2E2E2E4E4E4E6E6
+        E6E7E7E7E9E9E9E9E9E9D3D3D3BDBDBDBFBFBFBCBCBCBBBBBBC0C0C0D4D4D4D7
+        D7D7DBDBDBECECECFAFAFAFFFFFFF2F2F2E7E7E7D5D5D5BFBFBFA9A9A9BABABA
+        E1E1E1F4F4F4F5F5F5F6F6F6F8F8F8F6F6F6F6F6F6F6F6F6F4F4F4F5F5F5F6F6
+        F6F9F9F9FCFCFCFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFAFAFAECECECECECECEA
+        EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAECECECEDEDEDEDEDEDEAEAEA
+        CACACAD3D3D3F3F3F3F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFF
+        FFFFFFFFE0E0E0EAEAEAF7F7F7F8F8F8F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F6
+        F6F6EEEEEEF0F0F0F7F7F7FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFF0F0F0F7F7F7
+        F5F5F5F7F7F7F7F7F7F5F5F5F4F4F4E4E4E4D4D4D4D3D3D3E7E7E7E8E8E8E7E7
+        E7EEEEEEEEEEEEEDEDEDECECECD9D9D9B6B6B6C3C3C3E6E6E6F5F5F5F5F5F5FF
+        FFFFE6E6E6E4E4E4DFDFDFCACACABABABABDBDBDB2B2B2C8C8C8DDDDDDDEDEDE
+        E0E0E0DEDEDED9D9D9DCDCDCDEDEDEE9E9E9F7F7F7F9F9F9F9F9F9FCFCFCFFFF
+        FFFFFFFFEDEDEDEEEEEEECECECEDEDEDEEEEEEECECECD6D6D6E4E4E4F8F8F8F8
+        F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFDFDFDECECECEAEAEAEAEAEAE9E9E9
+        C4C4C4CACACAF0F0F0F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFEDED
+        EDE9E9E9E9E9E9E9E9E9D5D5D5C0C0C0C0C0C0D8D8D8EBEBEBECECECE9E9E9E6
+        E6E6E6E6E6E3E3E3E2E2E2E4E4E4E1E1E1D1D1D1AEAEAED5D5D5F7F7F7F5F5F5
+        F6F6F6F5F5F5FDFDFDF4F4F4E6E6E6E5E5E5EAEAEAF0F0F0F2F2F2F1F1F1EEEE
+        EEEAEAEAC1C1C1D1D1D1F7F7F7F7F7F7F9F9F9F8F8F8F9F9F9FAFAFAFBFBFBFC
+        FCFCFFFFFFFFFFFFE7E7E7E4E4E4E2E2E2E3E3E3E7E7E7EAEAEAECECECEDEDED
+        FEFEFEFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDEDEDEE7E7E7F4F4F4F7F7F7F8F8
+        F8F7F7F7F8F8F8FFFFFFFFFFFFEBEBEBEAEAEAE8E8E8E7E7E7E7E7E7E7E7E7E6
+        E6E6E1E1E1D1D1D1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFAFAFAFBFBFBF9F9F9F6F6F6F7F7F7FFFF
+        FFFFFFFFF8F8F8FAFAFAFAFAFAF8F8F8F8F8F8F8F8F8F7F7F7FFFFFFF7F7F7E7
+        E7E7D4D4D4ACACACBEBEBED1D1D1D7D7D7F9F9F9FDFDFDECECECE8E8E8E6E6E6
+        E4E4E4E4E4E4E6E6E6E7E7E7E5E5E5E6E6E6EAEAEAD9D9D9F0F0F0FFFFFFFFFF
+        FFFDFDFDFFFFFFFFFFFFFFFFFFFBFBFBEDEDEDF5F5F5F4F4F4F4F4F4F4F4F4F4
+        F4F4F7F7F7FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFDFDFDEAEAEAE9E9E9D1D1D1
+        E2E2E2F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFE5E5E5E2E2E2E4E4E4E7E7
+        E7E8E8E8E9E9E9E9E9E9BABABAB6B6B6CECECECECECED0D0D0D5D5D5E8E8E8D0
+        D0D0DADADAEDEDEDF3F3F3F7F7F7EEEEEED5D5D5AAAAAAB9B9B9CDCDCDE1E1E1
+        F4F4F4F7F7F7F9F9F9F8F8F8F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F6F6
+        F6F7F7F7F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFDFDFDECECECECECECEDEDEDEC
+        ECECEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9EBEBEBEDEDEDEDEDEDEBEBEB
+        C8C8C8D6D6D6F7F7F7F9F9F9F8F8F8F6F6F6F7F7F7F7F7F7FFFFFFFFFFFFFFFF
+        FFF9F9F9EDEDEDEEEEEEF7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F4
+        F4F4EEEEEEF3F3F3FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBD8D8D8
+        E7E7E7F8F8F8F6F6F6F3F3F3F3F3F3F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7F7F7
+        F7FFFFFFFDFDFDEDEDEDECECECC8C8C8C4C4C4E8E8E8F7F7F7F8F8F8F8F8F8FF
+        FFFFE5E5E5E3E3E3DFDFDFCFCFCFD0D0D0D3D3D3DADADAEEEEEEFBFBFBFAFAFA
+        F8F8F8F4F4F4F2F2F2F6F6F6F7F7F7F6F6F6F8F8F8F9F9F9FAFAFAFFFFFFFFFF
+        FFFFFFFFEEEEEEEEEEEEECECECEEEEEEECECECEAEAEABDBDBDCFCFCFF8F8F8F8
+        F8F8F9F9F9FDFDFDFFFFFFFFFFFFFEFEFEECECECEAEAEAE7E7E7E8E8E8D8D8D8
+        ABABABCACACAF4F4F4F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFEDED
+        EDEAEAEAEAEAEAE8E8E8C1C1C1BABABAD1D1D1FCFCFCFDFDFDEAEAEAE7E7E7E6
+        E6E6E5E5E5E1E1E1DFDFDFDFDFDFE1E1E1C1C1C1BFBFBFE9E9E9F9F9F9F7F7F7
+        F7F7F7F5F5F5FDFDFDF4F4F4E6E6E6E7E7E7E9E9E9EDEDEDEFEFEFECECECE9E9
+        E9E8E8E8C1C1C1D1D1D1F8F8F8F9F9F9FAFAFAFAFAFAF9F9F9F8F8F8FFFFFFFF
+        FFFFFFFFFFFFFFFFE7E7E7E5E5E5E3E3E3E6E6E6E9E9E9EAEAEAEAEAEAECECEC
+        EEEEEEF3F3F3F2F2F2ECECECE9E9E9E9E9E9E4E4E4E4E4E4F5F5F5F9F9F9FBFB
+        FBF9F9F9FFFFFFFFFFFFFFFFFFEEEEEEEDEDEDE9E9E9E9E9E9E9E9E9E8E8E8E4
+        E4E4D1D1D1D3D3D3F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF2F2F2EFEFEFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDFDFDFEFEFEFFBFBFBF8F8F8F8F8F8F8F8F8F8F8F8FFFFFFECECECD0
+        D0D0B4B4B4C0C0C0E7E7E7F9F9F9FAFAFAFFFFFFFFFFFFEAEAEAE6E6E6E6E6E6
+        E3E3E3E2E2E2E2E2E2E6E6E6E6E6E6EAEAEAEEEEEEEEEEEEF4F4F4FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFDFDFDECECECEDEDEDEEEEEEF5F5F5F6F6F6F5F5F5F7
+        F7F7F9F9F9FBFBFBF9F9F9FFFFFFFFFFFFFDFDFDEAEAEAE7E7E7E7E7E7BDBDBD
+        D1D1D1FAFAFAF9F9F9F8F8F8F8F8F8FFFFFFF9F9F9E1E1E1E1E1E1E3E3E3E6E6
+        E6E7E7E7E8E8E8D3D3D39E9E9ECACACAF5F5F5F8F8F8F9F9F9F9F9F9FBFBFBEC
+        ECECEAEAEAF8F8F8E4E4E4D1D1D1C9C9C9ACACACB9B9B9DEDEDEF1F1F1F4F4F4
+        F6F6F6FBFBFBFCFCFCF8F8F8F6F6F6F5F5F5F5F5F5F4F4F4F4F4F4F5F5F5F6F6
+        F6F6F6F6F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFF1F1F1ECECECEDEDEDEDEDEDEA
+        EAEAE9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEDEDEDEEEEEEEDEDEDDBDBDB
+        B7B7B7D5D5D5F7F7F7F8F8F8F6F6F6F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFF9F9
+        F9EDEDEDEDEDEDEDEDEDEEEEEEF7F7F7F7F7F7F6F6F6F4F4F4F4F4F4F4F4F4F3
+        F3F3F0F0F0F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFF9F9F9D9D9D9
+        F6F6F6FFFFFFF2F2F2EFEFEFF2F2F2F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8FFFFFFFCFCFCEDEDEDEDEDEDC9C9C9D5D5D5F8F8F8F8F8F8F8F8F8F8F8F8FF
+        FFFFE4E4E4E4E4E4E1E1E1D2D2D2C3C3C3EAEAEAFCFCFCFDFDFDFCFCFCFBFBFB
+        F9F9F9F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFF
+        FFFBFBFBEFEFEFEDEDEDEAEAEAEAEAEAE6E6E6E2E2E2B8B8B8CDCDCDF7F7F7FA
+        FAFAFFFFFFFFFFFFFFFFFFFFFFFFECECECE9E9E9E7E7E7D7D7D7D8D8D8C6C6C6
+        BABABAE2E2E2F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFEDEDEDEAEA
+        EAE9E9E9E7E7E7E6E6E6D5D5D5E2E2E2F7F7F7FFFFFFFFFFFFEAEAEAE6E6E6E5
+        E5E5E1E1E1DEDEDEDDDDDDE2E2E2D3D3D3AFAFAFD3D3D3FBFBFBFCFCFCF8F8F8
+        F7F7F7F4F4F4FDFDFDFFFFFFF4F4F4E8E8E8D9D9D9DCDCDCEEEEEEECECECE8E8
+        E8E6E6E6BFBFBFD1D1D1F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7FFFFFFFFFFFFFF
+        FFFFFFFFFFFBFBFBEDEDEDECECECE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEA
+        EDEDEDF0F0F0ECECECE9E9E9E6E6E6E3E3E3E0E0E0DFDFDFE4E4E4FFFFFFFFFF
+        FFF7F7F7FFFFFFFBFBFBD7D7D7DADADAECECECEAEAEAE9E9E9E7E7E7D4D4D4BF
+        BFBFB1B1B1E2E2E2F8F8F8EBEBEBE8E8E8E9E9E9EBEBEBECECECF9F9F9F8F8F8
+        EAEAEAEDEDEDEDEDEDEBEBEBECECECF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDEDEDEEDEDEDF7F7F7F5F5F5F9F9F9F9F9F9F8F8F8F8F8F8E9E9E9D7
+        D7D7D6D6D6E9E9E9FAFAFAFBFBFBFCFCFCFFFFFFFFFFFFE6E6E6E5E5E5E2E2E2
+        E1E1E1E3E3E3E4E4E4E8E8E8E9E9E9ECECECEEEEEEEAEAEAE9E9E9F9F9F9FFFF
+        FFFFFFFFFFFFFFFCFCFCEDEDEDECECECEBEBEBE9E9E9DDDDDDF8F8F8FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECE9E9E9E7E7E7E3E3E3BBBBBB
+        D2D2D2FBFBFBFBFBFBF8F8F8F8F8F8F9F9F9F5F5F5E2E2E2E1E1E1E2E2E2E5E5
+        E5E6E6E6E8E8E8D3D3D3CCCCCCE4E4E4F9F9F9FDFDFDFDFDFDFBFBFBFBFBFBFA
+        FAFAF8F8F8F7F7F7EBEBEBD7D7D7D4D4D4D0D0D0DDDDDDF0F0F0F2F2F2F4F4F4
+        F6F6F6F9F9F9F8F8F8F6F6F6F5F5F5F5F5F5F5F5F5F3F3F3F3F3F3F5F5F5F4F4
+        F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFCFCFCEEEEEEEDEDEDEFEFEFEEEEEEE9
+        E9E9E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEFEFEFF1F1F1F0F0F0E0E0E0
+        D3D3D3E1E1E1F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFEEEE
+        EEEEEEEEEEEEEEEEEEEEEDEDEDEEEEEEF6F6F6F5F5F5F4F4F4F2F2F2F4F4F4F6
+        F6F6F5F5F5FAFAFAFFFFFFFFFFFFFEFEFEF9F9F9F8F8F8FFFFFFFBFBFBEAEAEA
+        F9F9F9F3F3F3EDEDEDECECECF4F4F4F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8FFFFFFFFFFFFFFFFFFF5F5F5CECECED7D7D7FAFAFAFCFCFCFCFCFCFCFCFCFF
+        FFFFE4E4E4E3E3E3CECECEA8A8A8BDBDBDE7E7E7F9F9F9FAFAFAFBFBFBFAFAFA
+        F8F8F8F9F9F9FCFCFCFCFCFCF9F9F9F6F6F6F5F5F5F7F7F7FFFFFFFFFFFFFFFF
+        FFEDEDEDEEEEEEECECECEAEAEAE9E9E9E6E6E6E0E0E0BFBFBFD0D0D0F5F5F5FE
+        FEFEFFFFFFF9F9F9FAFAFAEDEDEDCECECECCCCCCCBCBCBB5B5B5D1D1D1C4C4C4
+        D0D0D0F5F5F5FAFAFAF8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFCFCFCE6E6
+        E6E6E6E6E4E4E4E2E2E2E6E6E6E6E6E6F9F9F9FCFCFCFAFAFAE8E8E8E5E5E5E4
+        E4E4E1E1E1DEDEDEE2E2E2E7E7E7D5D5D5D7D7D7EEEEEEFFFFFFFFFFFFF9F9F9
+        F5F5F5F4F4F4FDFDFDF4F4F4EBEBEBDADADAB8B8B8EAEAEAFDFDFDE9E9E9E6E6
+        E6E2E2E2BEBEBED3D3D3F5F5F5F3F3F3F5F5F5F5F5F5F3F3F3FFFFFFFFFFFFFC
+        FCFCECECECECECECECECECEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9ECECEC
+        F0F0F0EEEEEEE9E9E9E9E9E9E4E4E4E2E2E2E0E0E0DEDEDEDFDFDFF4F4F4EBEB
+        EBE4E4E4F1F1F1E2E2E2CFCFCFF7F7F7FFFFFFEEEEEEE9E9E9E6E6E6D1D1D1DE
+        DEDEF1F1F1FFFFFFFFFFFFEAEAEAE8E8E8E7E7E7E7E7E7E9E9E9E9E9E9E9E9E9
+        E9E9E9EBEBEBECECECEBEBEBEAEAEAEBEBEBD7D7D7C1C1C1BDBDBDD7D7D7F6F6
+        F6F2F2F2EAEAEAD9D9D9E2E2E2F4F4F4F8F8F8F8F8F8F7F7F7F5F5F5F0F0F0F1
+        F1F1F7F7F7FBFBFBFBFBFBFCFCFCFFFFFFFFFFFFFFFFFFE7E7E7E6E6E6E5E5E5
+        E6E6E6E9E9E9E9E9E9EAEAEAEAEAEAEEEEEEEEEEEEEAEAEAE9E9E9E8E8E8E9E9
+        E9E9E9E9E9E9E9ECECECECECECEAEAEAE9E9E9E8E8E8D9D9D9FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EAEAEAE9E9E9E8E8E8E6E6E6DADADA
+        EAEAEAF9F9F9F9F9F9F7F7F7F6F6F6F7F7F7F8F8F8FFFFFFF9F9F9E7E7E7E7E7
+        E7E9E9E9E9E9E9E9E9E9E9E9E9FCFCFCFEFEFEFDFDFDFBFBFBFAFAFAFBFBFBF9
+        F9F9F8F8F8F7F7F7F7F7F7F5F5F5F4F4F4EFEFEFEEEEEEF1F1F1F3F3F3F5F5F5
+        F6F6F6F7F7F7F8F8F8F6F6F6F5F5F5F5F5F5F5F5F5F4F4F4F5F5F5F5F5F5F5F5
+        F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFF4F4F4F0F0F0F0F0F0F0F0F0EEEEEEEA
+        EAEAE9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEEEEEEF3F3F3F1F1F1EDEDEDEDEDED
+        D0D0D0DEDEDEF7F7F7F6F6F6F6F6F6F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFEFEF
+        EFEFEFEFF0F0F0F0F0F0EEEEEEEDEDEDE0E0E0E6E6E6F0F0F0F4F4F4F7F7F7F8
+        F8F8F9F9F9FDFDFDFFFFFFFEFEFEF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7D9D9D9
+        DADADAE4E4E4D1D1D1E3E3E3F8F8F8FDFDFDFBFBFBF8F8F8F8F8F8F8F8F8FCFC
+        FCFFFFFFFFFFFFFFFFFFF3F3F3DDDDDDE8E8E8FFFFFFFFFFFFFCFCFCFCFCFCFF
+        FFFFE6E6E6E2E2E2BDBDBDBABABAE7E7E7F9F9F9F9F9F9FBFBFBFBFBFBFAFAFA
+        F8F8F8FBFBFBFCFCFCF9F9F9F7F7F7F4F4F4F4F4F4F7F7F7FFFFFFFFFFFFFCFC
+        FCEDEDEDEDEDEDEBEBEBE9E9E9E7E7E7E4E4E4E2E2E2D5D5D5E5E5E5FCFCFCFF
+        FFFFFFFFFFEDEDEDE9E9E9E9E9E9DADADAD7D7D7D4D4D4CECECEE1E1E1E4E4E4
+        E4E4E4F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFE8E8
+        E8E4E4E4E2E2E2E2E2E2E5E5E5E7E7E7D5D5D5E5E5E5F7F7F7FFFFFFF5F5F5E6
+        E6E6E3E3E3E2E2E2E7E7E7EAEAEAE8E8E8ECECECFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF2F2F2F4F4F4E6E6E6E9E9E9FFFFFFFFFFFFE7E7E7E3E3
+        E3DEDEDEC2C2C2D7D7D7F5F5F5F4F4F4F8F8F8F7F7F7FFFFFFFFFFFFFFFFFFEB
+        EBEBE9E9E9EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EEEEEE
+        EEEEEEE9E9E9E7E7E7E7E7E7E6E6E6E4E4E4E1E1E1E1E1E1E5E5E5EAEAEADEDE
+        DEE4E4E4F1F1F1F3F3F3F5F5F5FFFFFFFFFFFFF1F1F1E6E6E6E5E5E5E1E1E1F3
+        F3F3FFFFFFFFFFFFF7F7F7E8E8E8E6E6E6E5E5E5E7E7E7E8E8E8E9E9E9E9E9E9
+        EAEAEAECECECEDEDEDECECECEAEAEAEBEBEBC0C0C0BABABAC8C8C8FEFEFEFFFF
+        FFE9E9E9E4E4E4D4D4D4E2E2E2F5F5F5F8F8F8F7F7F7F7F7F7F3F3F3F2F2F2F7
+        F7F7FBFBFBFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9E7E7E7E7E7E7
+        E8E8E8EAEAEAEAEAEAECECECECECECEFEFEFEDEDEDE9E9E9E8E8E8E7E7E7E7E7
+        E7E8E8E8E9E9E9ECECECECECECEAEAEAE9E9E9E7E7E7E6E6E6F8F8F8F7F7F7E6
+        E6E6E9E9E9EAEAEAE9E9E9E9E9E9E5E5E5E3E3E3E7E7E7EBEBEBF0F0F0F4F4F4
+        F2F2F2FFFFFFFFFFFFF5F5F5F8F8F8F8F8F8F8F8F8FFFFFFFCFCFCEAEAEAEAEA
+        EAEAEAEAEAEAEAEAEAEAE9E9E9EAEAEAFFFFFFFFFFFFFFFFFFFAFAFAFBFBFBF9
+        F9F9F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F2F2F2F3F3F3F5F5F5F5F5F5F7F7F7
+        F7F7F7F8F8F8F9F9F9F5F5F5F3F3F3F3F3F3F5F5F5F6F6F6F7F7F7F9F9F9FFFF
+        FFFFFFFFFFFFFFFFFFFFFEFEFEF3F3F3F2F2F2EDEDEDEDEDEDEEEEEEEBEBEBE8
+        E8E8E8E8E8E7E7E7E9E9E9EBEBEBECECECEFEFEFEFEFEFEAEAEAE6E6E6E3E3E3
+        B2B2B2C9C9C9F4F4F4F3F3F3F5F5F5F6F6F6F7F7F7F7F7F7FFFFFFFFFFFFEFEF
+        EFEEEEEEEFEFEFEEEEEEE9E9E9DCDCDCBFBFBFD3D3D3F1F1F1F7F7F7F8F8F8F9
+        F9F9FCFCFCFDFDFDFEFEFEFFFFFFFCFCFCF7F7F7F7F7F7F7F7F7F7F7F7E5E5E5
+        E3E3E3CECECEAAAAAAD3D3D3F9F9F9FAFAFAFBFBFBFAFAFAFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF2F2F2EEEEEEE9E9E9EAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFE5E5E5E7E7E7C1C1C1D3D3D3FAFAFAFBFBFBF9F9F9FBFBFBFBFBFBFAFAFA
+        FBFBFBFDFDFDF9F9F9F5F5F5F5F5F5F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFEEEE
+        EEEDEDEDEAEAEAE9E9E9E7E7E7E6E6E6CFCFCFB7B7B7C3C3C3D1D1D1F5F5F5FF
+        FFFFF2F2F2E9E9E9F4F4F4F4F4F4F3F3F3F1F1F1EDEDEDEEEEEEF3F3F3F4F4F4
+        F5F5F5F6F6F6F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFE7E7
+        E7E4E4E4E2E2E2E4E4E4E6E6E6E6E6E6BBBBBBCCCCCCF7F7F7FFFFFFF7F7F7E7
+        E7E7E7E7E7E6E6E6E9E9E9EAEAEAEAEAEAE9E9E9F7F7F7FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF5F5F5FFFFFFFFFFFFFAFAFAFFFFFFF8F8F8E9E9E9E6E6
+        E6E5E5E5CBCBCBDADADAF5F5F5F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFFCFCFCE9
+        E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9EAEAEAEFEFEF
+        ECECECE7E7E7E7E7E7E7E7E7E6E6E6E2E2E2E1E1E1E3E3E3E7E7E7EAEAEAECEC
+        ECE9E9E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEE5E5E5E5E5E5E3E3E3E7
+        E7E7E9E9E9E6E6E6E8E8E8E7E7E7DFDFDFDCDCDCE2E2E2E6E6E6E9E9E9EBEBEB
+        EBEBEBECECECECECECEBEBEBEAEAEADADADAACACACD0D0D0F3F3F3FFFFFFFFFF
+        FFE3E3E3E2E2E2E3E3E3D3D3D3E4E4E4F8F8F8F8F8F8F8F8F8F3F3F3F5F5F5FB
+        FBFBFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFECECECE9E9E9E9E9E9E9E9E9
+        E9E9E9EBEBEBEBEBEBECECECEDEDEDEEEEEEECECECE9E9E9E8E8E8E8E8E8E8E8
+        E8E9E9E9EAEAEAECECECECECECEAEAEAE7E7E7E6E6E6E4E4E4E4E4E4E0E0E0DD
+        DDDDE5E5E5D7D7D7C2C2C2C4C4C4C1C1C1C7C7C7DFDFDFF0F0F0F0F0F0F0F0F0
+        EEEEEEFEFEFEE6E6E6E4E4E4FBFBFBF9F9F9FAFAFAF9F9F9F8F8F8D7D7D7C3C3
+        C3D7D7D7EAEAEAEAEAEAE9E9E9E9E9E9FCFCFCFFFFFFFEFEFEFCFCFCFEFEFEFA
+        FAFAF7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8
+        F8F8F8F9F9F9F8F8F8F5F5F5F4F4F4F3F3F3F4F4F4F4F4F4FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFDFDFDEAEAEAEAEAEAEAEAEAE7E7E7E9E9E9EAEAEAE9E9E9E7
+        E7E7E6E6E6E4E4E4E7E7E7EBEBEBEBEBEBEDEDEDE9E9E9E6E6E6E4E4E4DFDFDF
+        B4B4B4C9C9C9F1F1F1F3F3F3F7F7F7F8F8F8F8F8F8F7F7F7FFFFFFFEFEFEEEEE
+        EEECECECECECECE9E9E9E7E7E7CBCBCBC8C8C8E5E5E5F5F5F5F8F8F8F9F9F9FC
+        FCFCFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFF9F9F9FAFAFAF7F7F7F7F7F7F5F5F5
+        F4F4F4DCDCDCCCCCCCE5E5E5F9F9F9F9F9F9FBFBFBFBFBFBFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF0F0F0ECECECE9E9E9E9E9E9FBFBFBFAFAFAFBFBFBFFFFFFFF
+        FFFFE9E9E9EAEAEABFBFBFD1D1D1F9F9F9F9F9F9F8F8F8FAFAFAFBFBFBFAFAFA
+        FDFDFDFCFCFCF7F7F7F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFCFCFCECEC
+        ECECECECE9E9E9E8E8E8E7E7E7D1D1D1A0A0A0B7B7B7D9D9D9DADADAEAEAEAF9
+        F9F9E8E8E8E7E7E7F4F4F4F3F3F3F1F1F1EEEEEEEDEDEDF1F1F1F4F4F4F5F5F5
+        F7F7F7F6F6F6F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFFFFFFF7F7
+        F7E6E6E6E5E5E5E6E6E6E7E7E7E5E5E5BBBBBBCACACAF1F1F1F5F5F5F4F4F4E9
+        E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEEEEEEF0F0F0EDEDED
+        ECECECECECECEDEDEDEEEEEEFAFAFAF9F9F9ECECECEBEBEBEBEBEBEBEBEBEBEB
+        EBEBEBEBDEDEDEE6E6E6F4F4F4F1F1F1F2F2F2F4F4F4F5F5F5F5F5F5E9E9E9E7
+        E7E7E9E9E9ECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9ECECECEEEEEE
+        EAEAEAE7E7E7E7E7E7E7E7E7E4E4E4E2E2E2E3E3E3E4E4E4E7E7E7EAEAEAEAEA
+        EAE9E9E9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFECECECE6E6E6E6E6E6E5E5E5E7
+        E7E7E7E7E7CFCFCFD0D0D0E2E2E2D9D9D9D0D0D0DCDCDCEAEAEAE9E9E9EBEBEB
+        EBEBEBEBEBEBEBEBEBEAEAEADADADAB5B5B5BDBDBDE1E1E1F7F7F7FDFDFDFCFC
+        FCE1E1E1DEDEDEE2E2E2D3D3D3F7F7F7FFFFFFFFFFFFFFFFFFF4F4F4F5F5F5FB
+        FBFBFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFECECECEAEAEAEAEAEAEBEBEB
+        EBEBEBECECECECECECECECECEDEDEDEEEEEEECECECEAEAEAE9E9E9E8E8E8E8E8
+        E8E9E9E9EBEBEBECECECEBEBEBEAEAEAEAEAEAE9E9E9E4E4E4E3E3E3DDDDDDDE
+        DEDEE7E7E7C3C3C3BCBCBCD3D3D3D5D5D5DADADAFEFEFEFFFFFFF5F5F5EEEEEE
+        E9E9E9E7E7E7B5B5B5CACACAF9F9F9F9F9F9FBFBFBFCFCFCF9F9F9E7E7E7E9E9
+        E9FFFFFFFDFDFDEEEEEEEBEBEBEAEAEAEBEBEBEAEAEAE9E9E9ECECECFBFBFBF9
+        F9F9F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F9F9F9FAFAFAF8F8F8F7F7F7F7F7F7F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFF
+        FFFCFCFCECECECE8E8E8E6E6E6E6E6E6E8E8E8E8E8E8E7E7E7E6E6E6E7E7E7E6
+        E6E6E6E6E6E7E7E7E7E7E7E9E9E9E9E9E9EAEAEAE9E9E9E6E6E6E2E2E2E1E1E1
+        B8B8B8CCCCCCF4F4F4F7F7F7F9F9F9F9F9F9F8F8F8F8F8F8F9F9F9FFFFFFFCFC
+        FCEAEAEAEAEAEAE9E9E9D7D7D7B3B3B3D5D5D5F7F7F7F8F8F8F8F8F8FAFAFAFC
+        FCFCFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8
+        F6F6F6F0F0F0F2F2F2FBFBFBFDFDFDFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF3F3F3ECECECECECECEEEEEEECECECE9E9E9E9E9E9EAEAEAEBEBEBFF
+        FFFFE9E9E9E7E7E7D1D1D1E4E4E4F8F8F8F8F8F8F8F8F8FAFAFAFBFBFBFAFAFA
+        FDFDFDF9F9F9F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFECECECEAEAEAEAEA
+        EAE9E9E9E7E7E7D9D9D9CDCDCDACACACB7B7B7E6E6E6FCFCFCFEFEFEFFFFFFFF
+        FFFFFFFFFFF4F4F4F4F4F4F3F3F3F0F0F0EEEEEEEFEFEFF3F3F3F5F5F5F7F7F7
+        F7F7F7F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFF
+        FFE9E9E9E7E7E7E6E6E6E6E6E6D1D1D1A1A1A1C6C6C6F0F0F0F6F6F6F3F3F3F1
+        F1F1EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAECECECEEEEEEEDEDED
+        ECECECECECECEEEEEEEEEEEEEDEDEDEDEDEDEAEAEAEAEAEAEBEBEBEBEBEBEBEB
+        EBEBEBEBECECECDEDEDEE7E7E7F4F4F4F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4D7
+        D7D7D9D9D9EBEBEBEAEAEAE9E9E9EAEAEAEAEAEAEAEAEAECECECEFEFEFECECEC
+        E8E8E8E7E7E7E7E7E7E6E6E6E2E2E2E3E3E3E5E5E5E7E7E7EAEAEAEAEAEAEAEA
+        EAEAEAEAEDEDEDEEEEEEF2F2F2F4F4F4EDEDEDE8E8E8E7E7E7E6E6E6E4E4E4E5
+        E5E5E4E4E4B6B6B6CBCBCBD2D2D2BEBEBEBCBCBCDFDFDFECECECEAEAEAECECEC
+        ECECECEBEBEBEBEBEBDBDBDBB5B5B5C3C3C3E2E2E2F3F3F3F7F7F7F8F8F8F9F9
+        F9F5F5F5E2E2E2E6E6E6E8E8E8FBFBFBFFFFFFFFFFFFFCFCFCF5F5F5F6F6F6FC
+        FCFCFEFEFEFDFDFDFDFDFDFDFDFDFFFFFFFEFEFEEBEBEBE8E8E8DCDCDCDADADA
+        E7E7E7E9E9E9EAEAEAEBEBEBECECECECECECEAEAEAE9E9E9E8E8E8E7E7E7E7E7
+        E7E8E8E8E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E3E3E3E1E1E1DCDCDCE1
+        E1E1E9E9E9C1C1C1D2D2D2F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFF5F5F5EDEDED
+        EAEAEAE9E9E9B3B3B3CACACAFDFDFDFCFCFCFDFDFDFCFCFCFAFAFAFCFCFCFFFF
+        FFFEFEFEEDEDEDEEEEEEECECECEAEAEAEAEAEAE9E9E9E8E8E8E7E7E7E8E8E8FF
+        FFFFFFFFFFF4F4F4F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F9F9F9F8F8F8F7F7F7F5F5F5F5F5F5F4F4F4F4F4F4FFFFFFFFFFFFFBFBFBEEEE
+        EEEDEDEDE8E8E8E4E4E4E3E3E3E4E4E4E6E6E6E6E6E6E4E4E4E7E7E7E9E9E9E7
+        E7E7E7E7E7E8E8E8E8E8E8E8E8E8E9E9E9EAEAEAE8E8E8E7E7E7E6E6E6E4E4E4
+        BCBCBCD0D0D0F9F9F9F9F9F9F9F9F9FBFBFBFCFCFCF9F9F9F9F9F9FFFFFFFFFF
+        FFEAEAEAEAEAEAE9E9E9C1C1C1BEBEBEE6E6E6F8F8F8F8F8F8F8F8F8FAFAFAFB
+        FBFBFAFAFAFDFDFDFFFFFFFFFFFFF8F8F8F8F8F8FFFFFFFFFFFFFEFEFEFFFFFF
+        FFFFFFF5F5F5F7F7F7FDFDFDFEFEFEFCFCFCFBFBFBFFFFFFFFFFFFFEFEFEEDED
+        EDF0F0F0EEEEEEECECECEFEFEFEEEEEEEAEAEAECECECEEEEEEECECECECECECFF
+        FFFFE7E7E7E4E4E4E6E6E6D3D3D3E4E4E4F8F8F8F8F8F8F9F9F9FAFAFAFAFAFA
+        FDFDFDF9F9F9F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFBFBFBEAEAEAEAEAEAE9E9
+        E9D9D9D9CACACAB7B7B7C0C0C0C3C3C3DDDDDDFBFBFBFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1EDEDEDEEEEEEF3F3F3F7F7F7F7F7F7F6F6F6
+        F5F5F5F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFF
+        FFEAEAEAE7E7E7E6E6E6E5E5E5B8B8B8AEAEAED9D9D9F3F3F3F5F5F5F3F3F3F3
+        F3F3F6F6F6EBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAECECEC
+        EBEBEBEEEEEEF2F2F2EEEEEEEDEDEDEDEDEDEAEAEAEAEAEAEBEBEBEBEBEBEBEB
+        EBEBEBEBEEEEEEE2E2E2F7F7F7FFFFFFF6F6F6F6F6F6F8F8F8F8F8F8F7F7F7E5
+        E5E5E5E5E5E9E9E9EAEAEAE9E9E9E8E8E8E7E7E7E8E8E8EEEEEEEEEEEEEAEAEA
+        E8E8E8E7E7E7E6E6E6E4E4E4E3E3E3E6E6E6E6E6E6E7E7E7EAEAEAEAEAEAEAEA
+        EAEBEBEBEEEEEEEFEFEFF0F0F0F0F0F0EAEAEAE7E7E7E7E7E7E6E6E6E5E5E5E6
+        E6E6E4E4E4B6B6B6CDCDCDE6E6E6D6D6D6DBDBDBF8F8F8FFFFFFFEFEFEF3F3F3
+        EEEEEEEBEBEBEBEBEBCACACAC6C6C6E7E7E7F3F3F3F5F5F5F9F9F9F9F9F9FBFB
+        FBF9F9F9FFFFFFFCFCFCE9E9E9E9E9E9E9E9E9E9E9E9EBEBEBD4D4D4E6E6E6FC
+        FCFCFCFCFCFDFDFDFCFCFCFEFEFEFFFFFFFDFDFDF5F5F5DEDEDEC2C2C2D6D6D6
+        DADADAC9C9C9C8C8C8C8C8C8C7C7C7C4C4C4D9D9D9EAEAEAE8E8E8E7E7E7E7E7
+        E7E7E7E7E7E7E7E9E9E9E9E9E9E9E9E9E7E7E7E4E4E4DEDEDEDADADADCDCDCCF
+        CFCFC1C1C1ADADADD2D2D2F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFEDEDEDE8E8E8
+        E8E8E8E8E8E8B5B5B5CECECEFFFFFFFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFBFB
+        FBE8E8E8F7F7F7FBFBFBE9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E6E6E6F5
+        F5F5F8F8F8F0F0F0F2F2F2F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8FFFFFFFFFFFFFFFFFFF5F5F5F3F3F3F5F5F5FFFFFFFFFFFFE9E9E9EAEA
+        EAE8E8E8E2E2E2E2E2E2E4E4E4E2E2E2E4E4E4E6E6E6E6E6E6E4E4E4E6E6E6E8
+        E8E8E6E6E6E6E6E6E8E8E8E6E6E6E5E5E5E8E8E8E9E9E9E9E9E9E8E8E8E7E7E7
+        D4D4D4FAFAFAFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCF9F9F9FBFBFBFFFFFFFFFF
+        FFEAEAEAEAEAEAE9E9E9D5D5D5E3E3E3F7F7F7F8F8F8F9F9F9FAFAFAFCFCFCFC
+        FCFCFBFBFBFDFDFDFFFFFFF9F9F9E8E8E8E8E8E8E8E8E8E9E9E9E8E8E8F9F9F9
+        FBFBFBFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFAFAFAFDFDFDFFFFFFFFFFFFF3F3
+        F3F3F3F3EEEEEEECECECEEEEEEEAEAEAE7E7E7E9E9E9E9E9E9E5E5E5E9E9E9FF
+        FFFFE7E7E7E6E6E6E4E4E4BABABACECECEF7F7F7F8F8F8F8F8F8F9F9F9F9F9F9
+        FAFAFAF7F7F7F5F5F5FFFFFFFFFFFFFFFFFFFCFCFCECECECEAEAEAE9E9E9D9D9
+        D9BABABAC6C6C6CFCFCFDEDEDEEDEDEDF3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFF
+        FFFFFAFAFAF7F7F7E9E9E9E1E1E1EDEDEDF1F1F1F5F5F5F7F7F7F6F6F6F5F5F5
+        F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFBFB
+        FBEAEAEAE9E9E9E8E8E8D3D3D3A4A4A4C7C7C7F3F3F3F8F8F8F8F8F8F8F8F8F9
+        F9F9F8F8F8F8F8F8DADADAC3C3C3C1C1C1D7D7D7EAEAEAEBEBEBECECECECECEC
+        E9E9E9ECECECF3F3F3F0F0F0F0F0F0F0F0F0EBEBEBEAEAEAEBEBEBEBEBEBEBEB
+        EBECECECF0F0F0EEEEEEF8F8F8E7E7E7E6E6E6F5F5F5F7F7F7F7F7F7F5F5F5F3
+        F3F3F4F4F4F5F5F5E9E9E9E9E9E9E7E7E7E7E7E7EAEAEAEEEEEEEDEDEDE8E8E8
+        E8E8E8E7E7E7E6E6E6E4E4E4E3E3E3E5E5E5E4E4E4E7E7E7EAEAEAEAEAEAEAEA
+        EAEBEBEBEEEEEEEEEEEEF0F0F0F0F0F0EAEAEAE7E7E7E7E7E7E7E7E7E6E6E6E4
+        E4E4E0E0E0B3B3B3CDCDCDF8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFF4F4F4
+        EEEEEEEBEBEBEBEBEBCACACAD7D7D7F7F7F7F5F5F5F8F8F8FAFAFAFBFBFBFCFC
+        FCFAFAFAFFFFFFFFFFFFE6E6E6E7E7E7E9E9E9E9E9E9EAEAEAD6D6D6E6E6E6FA
+        FAFAFCFCFCFFFFFFFEFEFEFFFFFFFEFEFEF9F9F9F6F6F6EAEAEADADADAE5E5E5
+        E6E6E6D8D8D8D7D7D7D6D6D6D5D5D5D3D3D3E7E7E7EBEBEBE9E9E9E7E7E7E7E7
+        E7E7E7E7E7E7E7E9E9E9E8E8E8E7E7E7E6E6E6E4E4E4C8C8C8B1B1B1B8B8B8A9
+        A9A9BDBDBDD4D4D4E7E7E7FCFCFCFFFFFFFFFFFFFFFFFFEDEDEDE8E8E8E7E7E7
+        E7E7E7E4E4E4B0B0B0CACACAFBFBFBF9F9F9FBFBFBFCFCFCFCFCFCFAFAFAF9F9
+        F9F8F8F8FFFFFFFFFFFFECECECEAEAEAE8E8E8E8E8E8E8E8E8E7E7E7E5E5E5E7
+        E7E7E8E8E8D1D1D1E0E0E0F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
+        F8F8F8FFFFFFFFFFFFE7E7E7E4E4E4F7F7F7F9F9F9FFFFFFFFFFFFE8E8E8E8E8
+        E8E7E7E7D1D1D1C1C1C1D4D4D4E4E4E4E7E7E7E9E9E9E9E9E9E6E6E6ECECECF0
+        F0F0EAEAEAE7E7E7E6E6E6E3E3E3E4E4E4E6E6E6D3D3D3D1D1D1D1D1D1D5D5D5
+        E9E9E9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFEFE
+        FEEBEBEBEAEAEAE9E9E9E9E9E9D9D9D9E9E9E9FAFAFAFBFBFBFAFAFAFBFBFBFC
+        FCFCFCFCFCFCFCFCF7F7F7FFFFFFF8F8F8E8E8E8E8E8E8E9E9E9E7E7E7E7E7E7
+        E8E8E8F9F9F9FCFCFCFCFCFCFDFDFDFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFF4F4
+        F4F2F2F2ECECECEDEDEDEDEDEDE9E9E9E7E7E7E4E4E4DFDFDFE0E0E0E4E4E4FF
+        FFFFE6E6E6E4E4E4E2E2E2B7B7B7CCCCCCF5F5F5F6F6F6F8F8F8F8F8F8F9F9F9
+        F8F8F8F7F7F7F5F5F5FFFFFFFFFFFFFBFBFBECECECEAEAEAE9E9E9E7E7E7C7C7
+        C7C3C3C3E0E0E0EEEEEEF4F4F4FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFF9
+        F9F9EAEAEAE7E7E7D7D7D7EEEEEEFCFCFCF7F7F7F9F9F9F7F7F7F7F7F7F8F8F8
+        F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7
+        F7EAEAEAE8E8E8D5D5D5AEAEAEB9B9B9DFDFDFF8F8F8FBFBFBFBFBFBFBFBFBFB
+        FBFBFBFBFBFBFBFBE9E9E9D4D4D4D0D0D0E4E4E4EBEBEBECECECEBEBEBEAEAEA
+        E7E7E7E9E9E9EEEEEEE7E7E7EAEAEAE7E7E7E6E6E6EAEAEAEAEAEAEAEAEAEBEB
+        EBEDEDEDEDEDEDECECECE8E8E8C9C9C9D7D7D7F5F5F5F6F6F6F5F5F5F4F4F4F3
+        F3F3F5F5F5F6F6F6FFFFFFFAFAFAE9E9E9EAEAEAEBEBEBF1F1F1EEEEEEE8E8E8
+        E8E8E8E8E8E8E4E4E4DFDFDFDFDFDFE4E4E4E7E7E7E9E9E9EAEAEAEAEAEAEAEA
+        EAECECECEDEDEDEEEEEEF0F0F0EDEDEDE8E8E8E7E7E7E7E7E7E6E6E6E4E4E4E2
+        E2E2DEDEDEB7B7B7CFCFCFF8F8F8F8F8F8F8F8F8FFFFFFFFFFFFF8F8F8F1F1F1
+        ECECECEBEBEBDEDEDEBDBDBDD9D9D9F7F7F7F7F7F7F8F8F8F8F8F8FBFBFBFCFC
+        FCFBFBFBFFFFFFFFFFFFE8E8E8EBEBEBECECECE9E9E9EAEAEAD6D6D6BFBFBFE5
+        E5E5FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF9F9F9F7F7F7F6F6F6F5F5F5F4F4F4
+        F5F5F5F7F7F7F8F8F8F7F7F7F8F8F8F6F6F6F7F7F7FFFFFFFBFBFBE7E7E7E7E7
+        E7E7E7E7E7E7E7E9E9E9E8E8E8E7E7E7E7E7E7D0D0D0989898B2B2B2D1D1D1D3
+        D3D3E7E7E7FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFEAEAEAE8E8E8E7E7E7E7E7E7
+        E4E4E4CACACA979797CBCBCBFAFAFAFCFCFCFCFCFCFCFCFCFAFAFAF8F8F8F8F8
+        F8F7F7F7FFFFFFFCFCFCECECECEAEAEAE8E8E8E8E8E8E8E8E8E6E6E6E4E4E4E5
+        E5E5D1D1D1A8A8A8D2D2D2F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8
+        F8F8F8FFFFFFE9E9E9AFAFAFCFCFCFF1F1F1F4F4F4FFFFFFFFFFFFE8E8E8EAEA
+        EAE9E9E9D5D5D5D6D6D6F6F6F6F8F8F8EAEAEAEBEBEBEBEBEBEBEBEBF0F0F0F3
+        F3F3EDEDEDE9E9E9E8E8E8E6E6E6E6E6E6D1D1D1A8A8A8CDCDCDC5C5C5E7E7E7
+        FBFBFBEAEAEAEAEAEAEAEAEAEBEBEBFDFDFDFFFFFFFDFDFDFFFFFFFFFFFFFFFF
+        FFF9F9F9EAEAEAE9E9E9E9E9E9DADADAE9E9E9FCFCFCFCFCFCFBFBFBFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFE2E2E2D3D3D3E7E7E7E8E8E8E8E8E8E7E7E7
+        E7E7E7E8E8E8E7E7E7E9E9E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF0F0
+        F0EDEDEDEAEAEAECECECEAEAEAE5E5E5E2E2E2DEDEDEDEDEDEE4E4E4E7E7E7FF
+        FFFFE2E2E2E5E5E5E3E3E3D0D0D0E1E1E1F5F5F5F7F7F7F9F9F9F8F8F8F8F8F8
+        F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFEDEDEDEAEAEAECECECEAEAEAE8E8E8CCCC
+        CCDADADAF4F4F4F4F4F4F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE7
+        E7E7E7E7E7E6E6E6E6E6E6F0F0F0F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9FAFAFAF8F8F8F7F7
+        F7F8F8F8DADADAB2B2B2C1C1C1F1F1F1FFFFFFFBFBFBFCFCFCFBFBFBFBFBFBFB
+        FBFBFBFBFBFCFCFCFCFCFCFBFBFBF9F9F9F9F9F9FAFAFAD7D7D7D6D6D6E9E9E9
+        D7D7D7C8C8C8D7D7D7E1E1E1E5E5E5E6E6E6E6E6E6EAEAEAE7E7E7E9E9E9EBEB
+        EBECECECECECECEAEAEAE8E8E8CCCCCCD8D8D8F5F5F5F5F5F5F6F6F6F4F4F4F4
+        F4F4F6F6F6F8F8F8FFFFFFFFFFFFEBEBEBEBEBEBEBEBEBF2F2F2EEEEEEE8E8E8
+        E6E6E6D3D3D3BFBFBFC0C0C0C8C8C8DBDBDBE9E9E9E8E8E8D6D6D6C4C4C4D8D8
+        D8EBEBEBECECECECECECECECECE9E9E9E6E6E6E6E6E6E4E4E4E3E3E3E2E2E2E1
+        E1E1E1E1E1C3C3C3D9D9D9FBFBFBFAFAFAFCFCFCFFFFFFFFFFFFF5F5F5EFEFEF
+        ECECECECECECCFCFCFCACACAE7E7E7F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F9F9
+        F9FBFBFBFFFFFFFFFFFFEAEAEAE9E9E9E7E7E7D3D3D3D7D7D7BFBFBFBABABAE6
+        E6E6FFFFFFFFFFFFFBFBFBFAFAFAF9F9F9F7F7F7F5F5F5F6F6F6F5F5F5F5F5F5
+        F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7FFFFFFFFFFFFEAEAEAE9E9
+        E9E9E9E9E9E9E9E9E9E9E7E7E7E6E6E6CECECE949494ADADADE1E1E1F8F8F8F9
+        F9F9FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFF9F9F9E7E7E7E7E7E7E7E7E7E6E6E6
+        CECECE9D9D9DB6B6B6E8E8E8FEFEFEFFFFFFFFFFFFFCFCFCF8F8F8F7F7F7F7F7
+        F7F7F7F7F6F6F6F7F7F7E9E9E9EBEBEBEAEAEAE8E8E8E6E6E6E3E3E3E6E6E6E6
+        E6E6BDBDBDBBBBBBE4E4E4F5F5F5F5F5F5F7F7F7F8F8F8F7F7F7F8F8F8F7F7F7
+        F5F5F5F5F5F5E6E6E6D2D2D2E2E2E2F4F4F4F6F6F6FFFFFFFCFCFCE7E7E7E9E9
+        E9E8E8E8E9E9E9DEDEDEFFFFFFFFFFFFE9E9E9EBEBEBEBEBEBEBEBEBEEEEEEEF
+        EFEFECECECE9E9E9E9E9E9E9E9E9E4E4E4BCBCBCBCBCBCE8E8E8ECECECFFFFFF
+        FFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBECECECFDFDFDEEEEEEF1F1
+        F1F6F6F6E8E8E8E8E8E8E9E9E9E9E9E9ECECECFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFC8C8C8DDDDDDF2F2F2DEDEDEF5F5F5FAFAFAE8E8E8E8E8E8E7E7E7
+        E8E8E8E9E9E9E9E9E9E9E9E9F8F8F8FBFBFBFBFBFBFFFFFFFFFFFFEDEDEDF0F0
+        F0EFEFEFEBEBEBEAEAEAE8E8E8E2E2E2E0E0E0E0E0E0E4E4E4E8E8E8EAEAEAFF
+        FFFFF3F3F3EAEAEAE6E6E6E8E8E8D1D1D1E2E2E2F8F8F8F8F8F8F7F7F7F9F9F9
+        FBFBFBFCFCFCFFFFFFFFFFFFFBFBFBECECECEAEAEAEBEBEBEAEAEAE8E8E8CCCC
+        CCD5D5D5F1F1F1F5F5F5FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFECECECE6
+        E6E6E6E6E6E5E5E5E6E6E6E3E3E3E0E0E0F3F3F3FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAF9F9F9F8F8F8F9F9F9F9F9
+        F9FAFAFAEAEAEAD4D4D4E6E6E6FFFFFFFAFAFAEEEEEEFCFCFCFBFBFBFBFBFBFB
+        FBFBFCFCFCFDFDFDFCFCFCFCFCFCFCFCFCFDFDFDFBFBFBE6E6E6E6E6E6E5E5E5
+        C0C0C0C0C0C0E1E1E1EBEBEBECECECEAEAEAEAEAEAEAEAEAE7E7E7E8E8E8EAEA
+        EAE9E9E9EAEAEADDDDDDD0D0D0C1C1C1D9D9D9F6F6F6F9F9F9F7F7F7F5F5F5F4
+        F4F4F7F7F7F9F9F9FFFFFFFFFFFFEBEBEBEBEBEBEBEBEBF0F0F0EDEDEDE7E7E7
+        E2E2E2C2C2C2BFBFBFD0D0D0D9D9D9E6E6E6D7D7D7C6C6C6B1B1B1C1C1C1E6E6
+        E6D7D7D7C3C3C3C0C0C0D5D5D5E7E7E7E6E6E6E4E4E4E0E0E0DFDFDFE0E0E0E1
+        E1E1E3E3E3C9C9C9D9D9D9F9F9F9F8F8F8FDFDFDFEFEFEF9F9F9EDEDEDECECEC
+        EBEBEBDDDDDDBEBEBED7D7D7F3F3F3F7F7F7F8F8F8F8F8F8F7F7F7F8F8F8F9F9
+        F9FBFBFBFFFFFFFFFFFFE9E9E9E6E6E6E5E5E5C2C2C2E4E4E4D1D1D1D0D0D0F8
+        F8F8FDFDFDFBFBFBF7F7F7F8F8F8F8F8F8F8F8F8F6F6F6F5F5F5F6F6F6F5F5F5
+        F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFEDEDEDE7E7
+        E7E8E8E8E9E9E9E6E6E6CDCDCDB4B4B4939393ACACACE1E1E1F8F8F8F8F8F8F9
+        F9F9F9F9F9FDFDFDFFFFFFFFFFFFFBFBFBE7E7E7E7E7E7E7E7E7E6E6E6D0D0D0
+        9F9F9FB5B5B5E6E6E6FEFEFEFFFFFFFFFFFFFDFDFDF8F8F8F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7EAEAEAE8E8E8E6E6E6E4E4E4E4E4E4D5D5D5BD
+        BDBDA8A8A8D1D1D1F5F5F5F5F5F5F5F5F5F7F7F7F6F6F6F4F4F4F5F5F5F4F4F4
+        F1F1F1F4F4F4F7F7F7F3F3F3F6F6F6FAFAFAFAFAFAFDFDFDFAFAFAD5D5D5D5D5
+        D5D9D9D9C8C8C8B4B4B4DFDFDFE2E2E2CCCCCCCCCCCCDADADAEBEBEBEFEFEFEF
+        EFEFEBEBEBE9E9E9E9E9E9E4E4E4CCCCCCACACACD5D5D5F9F9F9FAFAFAFFFFFF
+        FFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9DBDBDBCCCCCCB0B0B0CDCD
+        CDF2F2F2E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9F9F9F9FFFFFFFFFFFFFFFFFFFF
+        FFFFC9C9C9AFAFAFE2E2E2F7F7F7F5F5F5FFFFFFFDFDFDEAEAEAE9E9E9E8E8E8
+        E9E9E9EAEAEAEAEAEAE9E9E9EAEAEAE8E8E8E9E9E9FFFFFFFFFFFFEEEEEEF3F3
+        F3F1F1F1EEEEEEECECECE9E9E9E6E6E6E4E4E4E7E7E7EAEAEAEAEAEAEBEBEBFF
+        FFFFF9F9F9FFFFFFF3F3F3E6E6E6CFCFCFE0E0E0F7F7F7F8F8F8F9F9F9FAFAFA
+        FAFAFAFBFBFBFFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAEAEAEAE8E8E8C8C8
+        C8D3D3D3F1F1F1F7F7F7FCFCFCFBFBFBFFFFFFFFFFFFFFFFFFF9F9F9E7E7E7E4
+        E4E4E4E4E4E6E6E6E7E7E7E4E4E4DEDEDEE7E7E7EEEEEEEDEDEDEEEEEEEEEEEE
+        EEEEEEEEEEEEE6E6E6F3F3F3FDFDFDFAFAFAFAFAFAFBFBFBFAFAFAFCFCFCF9F9
+        F9FAFAFAF9F9F9F4F4F4F9F9F9FFFFFFEFEFEFE1E1E1FEFEFEFFFFFFFFFFFFFE
+        FEFEFEFEFEFDFDFDFCFCFCFDFDFDFCFCFCFDFDFDFBFBFBF9F9F9F7F7F7F3F3F3
+        C5C5C5D3D3D3F4F4F4F8F8F8EDEDEDEAEAEAEAEAEAEAEAEAE7E7E7E8E8E8DEDE
+        DED1D1D1D0D0D0C5C5C5DBDBDBE6E6E6E8E8E8F5F5F5F8F8F8F6F6F6F8F8F8F7
+        F7F7F7F7F7FFFFFFFFFFFFFFFFFFEBEBEBEBEBEBEBEBEBEDEDEDECECECE6E6E6
+        E1E1E1C3C3C3D2D2D2F1F1F1F4F4F4F2F2F2E1E1E1D4D4D4D6D6D6E7E7E7F7F7
+        F7E4E4E4D2D2D2D1D1D1E4E4E4D4D4D4B8B8B8B5B5B5B5B5B5B9B9B9BCBCBCD1
+        D1D1E5E5E5DADADAE7E7E7F4F4F4F5F5F5FAFAFAF7F7F7F1F1F1FFFFFFECECEC
+        C9C9C9B7B7B7C3C3C3DFDFDFF4F4F4F7F7F7F5F5F5F7F7F7F8F8F8F8F8F8F8F8
+        F8FFFFFFFFFFFFFFFFFFEFEFEFF0F0F0EDEDEDC9C9C9E7E7E7D8D8D8D4D4D4F9
+        F9F9FDFDFDFBFBFBF8F8F8F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFEFEFE
+        FEFEFEFCFCFCF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9D1D1D1B5B5
+        B5D0D0D0CACACAA9A9A9888888A5A5A5C2C2C2DFDFDFFAFAFAFCFCFCFBFBFBFA
+        FAFAF8F8F8FFFFFFFFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E6E6E6E4E4E4B7B7B7
+        B2B2B2DFDFDFF7F7F7FDFDFDFCFCFCF9F9F9F7F7F7F5F5F5F5F5F5F8F8F8F8F8
+        F8F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFF9F9F9E7E7E7E5E5E5D3D3D3AAAAAAB7
+        B7B7CFCFCFE5E5E5F6F6F6F7F7F7F7F7F7F8F8F8F7F7F7F5F5F5F7F7F7F7F7F7
+        F6F6F6F9F9F9FCFCFCF5F5F5F6F6F6F9F9F9F9F9F9FCFCFCFBFBFBE4E4E4E3E3
+        E3C9C9C9BCBCBCCECECEE1E1E1E2E2E2DADADAEAEAEAFFFFFFFBFBFBF0F0F0EE
+        EEEEEAEAEAE9E9E9E8E8E8CFCFCFAAAAAABFBFBFE9E9E9F9F9F9F8F8F8FFFFFF
+        FFFFFFECECECEAEAEAEAEAEAEAEAEAEAEAEADADADABDBDBDC2C2C2D0D0D0E0E0
+        E0F0F0F0EFEFEFE4E4E4E9E9E9E9E9E9E9E9E9ECECECF3F3F3F1F1F1FAFAFAE5
+        E5E59F9F9FCACACAF9F9F9F9F9F9F9F9F9FCFCFCFFFFFFFCFCFCE9E9E9E9E9E9
+        EBEBEBEDEDEDEEEEEEEAEAEAE7E7E7E7E7E7E7E7E7F7F7F7E9E9E9CACACADCDC
+        DCEDEDEDEEEEEEEDEDEDECECECECECECEAEAEAE9E9E9EAEAEAEAEAEAEBEBEBFF
+        FFFFF7F7F7FFFFFFFEFEFEE6E6E6E2E2E2CECECEE2E2E2F9F9F9F9F9F9F8F8F8
+        F9F9F9FAFAFAFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAD9D9D9B7B7
+        B7D5D5D5F5F5F5FBFBFBFCFCFCFFFFFFFFFFFFFFFFFFE7E7E7E7E7E7E4E4E4E2
+        E2E2E6E6E6E8E8E8E9E9E9E6E6E6E1E1E1E7E7E7EDEDEDEDEDEDE2E2E2D7D7D7
+        D9D9D9DADADAD1D1D1E6E6E6F9F9F9F7F7F7FAFAFAFBFBFBF9F9F9F9F9F9F8F8
+        F8F8F8F8F8F8F8F7F7F7FBFBFBFFFFFFE6E6E6DFDFDFFAFAFAFDFDFDFCFCFCFE
+        FEFEFDFDFDFCFCFCFFFFFFFFFFFFFBFBFBFBFBFBFCFCFCFAFAFAF7F7F7F8F8F8
+        E9E9E9E8E8E8F7F7F7F9F9F9FFFFFFF9F9F9EAEAEAEAEAEAE7E7E7E7E7E7D2D2
+        D2CDCDCDDADADADFDFDFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4F4F4F4F6F6F6F5
+        F5F5FFFFFFFFFFFFFFFFFFFFFFFFEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBE7E7E7
+        E2E2E2C7C7C7D8D8D8F6F6F6F6F6F6F3F3F3F3F3F3F7F7F7F8F8F8F7F7F7F5F5
+        F5F7F7F7F8F8F8F8F8F8F8F8F8E4E4E4CCCCCCCBCBCBCBCBCBCCCCCCCCCCCCE2
+        E2E2DBDBDBDCDCDCEAEAEAF4F4F4F4F4F4FBFBFBF5F5F5F3F3F3FFFFFFD6D6D6
+        BCBCBCD1D1D1DEDEDEE9E9E9F0F0F0EEEEEEEFEFEFF7F7F7F7F7F7F6F6F6FFFF
+        FFFFFFFFFFFFFFFDFDFDF3F3F3F2F2F2D9D9D9B5B5B5D7D7D7E6E6E6E7E7E7F7
+        F7F7FBFBFBF7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC
+        FEFEFEFBFBFBF7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F5F5F5F3F3F3DBDBDBC1C1
+        C1D8D8D8A3A3A39F9F9FBFBFBFDDDDDDF7F7F7F9F9F9FEFEFEFDFDFDFAFAFAF8
+        F8F8FBFBFBFFFFFFFFFFFFF9F9F9E6E6E6E6E6E6E5E5E5E3E3E3CCCCCC9B9B9B
+        C8C8C8F3F3F3F7F7F7FDFDFDF9F9F9F5F5F5F5F5F5F5F5F5F5F5F5F3F3F3F4F4
+        F4F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFCFCFCE9E9E9E8E8E8C1C1C1BABABAE1
+        E1E1F7F7F7F8F8F8F8F8F8F9F9F9FAFAFAFCFCFCFCFCFCFBFBFBFCFCFCFBFBFB
+        FBFBFBFBFBFBFDFDFDF7F7F7F6F6F6F8F8F8F9F9F9F9F9F9FBFBFBF7F7F7F4F4
+        F4E5E5E5DFDFDFF0F0F0F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFDFDFDF0F0F0EC
+        ECECE7E7E7E7E7E7D3D3D3A6A6A6BABABAE6E6E6FBFBFBFCFCFCFCFCFCFFFFFF
+        FFFFFFEBEBEBEAEAEAEAEAEAEAEAEADBDBDBBCBCBCCACACAE1E1E1EFEFEFEDED
+        EDEDEDEDF1F1F1F7F7F7DCDCDCDADADAE9E9E9E9E9E9ECECECEAEAEAD3D3D3AC
+        ACACB2B2B2DEDEDEF9F9F9F9F9F9FAFAFAFDFDFDFFFFFFFBFBFBE9E9E9EAEAEA
+        EBEBEBEEEEEEEDEDEDE7E7E7E7E7E7E5E5E5E4E4E4E1E1E1C3C3C3C3C3C3E2E2
+        E2EAEAEAECECECEFEFEFEFEFEFEDEDEDEBEBEBEEEEEEEDEDEDEAEAEAEAEAEAFF
+        FFFFF4F4F4FDFDFDF6F6F6E7E7E7D0D0D0A3A3A3CDCDCDF8F8F8F8F8F8F8F8F8
+        F9F9F9F9F9F9FFFFFFF1F1F1DEDEDEEAEAEAEAEAEADDDDDDCFCFCFB8B8B8C6C6
+        C6E9E9E9F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFBFBFBE7E7E7E6E6E6E4E4E4E3
+        E3E3E7E7E7E9E9E9E5E5E5D3D3D3C3C3C3CCCCCCD3D3D3D3D3D3C6C6C6D2D2D2
+        E4E4E4E4E4E4E2E2E2ECECECF4F4F4F4F4F4F7F7F7F8F8F8F6F6F6F6F6F6F6F6
+        F6F6F6F6F6F6F6F7F7F7F7F7F7F5F5F5E9E9E9E4E4E4F3F3F3F7F7F7F7F7F7F8
+        F8F8FCFCFCFFFFFFFFFFFFFEFEFEFDFDFDFFFFFFFFFFFFFDFDFDF8F8F8F9F9F9
+        F7F7F7F6F6F6F7F7F7F9F9F9FFFFFFF6F6F6E7E7E7E7E7E7E4E4E4DADADAC5C5
+        C5D9D9D9F2F2F2FFFFFFFFFFFFFFFFFFFCFCFCF8F8F8FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFECECECEBEBEBECECECEDEDEDEBEBEBEBEBEBE9E9E9
+        D8D8D8B9B9B9D8D8D8F3F3F3F1F1F1F0F0F0F3F3F3F5F5F5F7F7F7F7F7F7F6F6
+        F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F4F4F4F1F1F1F0F0F0F3
+        F3F3E6E6E6F1F1F1F7F7F7D9D9D9DFDFDFEFEFEFEFEFEFF3F3F3F9F9F9E2E2E2
+        DEDEDEF0F0F0EBEBEBECECECF2F2F2F1F1F1F7F7F7F9F9F9FCFCFCFFFFFFFFFF
+        FFFFFFFFFBFBFBECECECEDEDEDECECECC3C3C3C5C5C5FCFCFCFFFFFFF7F7F7F8
+        F8F8FBFBFBF7F7F7F5F5F5FFFFFFFFFFFFFFFFFFFBFBFBEBEBEBE9E9E9EAEAEA
+        FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F8F8F8F5F5F5F4F4F4F1F1F1F1F1F1F0F0
+        F0F0F0F0DADADADEDEDEF9F9F9FCFCFCFEFEFEFFFFFFFFFFFFFCFCFCF8F8F8F7
+        F7F7FFFFFFFFFFFFFFFFFFE8E8E8E6E6E6E6E6E6E6E6E6E3E3E3B6B6B6B2B2B2
+        DEDEDEF4F4F4FBFBFBFEFEFEFBFBFBF6F6F6F6F6F6F5F5F5F5F5F5F0F0F0F0F0
+        F0F5F5F5F7F7F7F7F7F7F7F7F7F9F9F9F5F5F5E7E7E7D6D6D6ABABABCECECEF5
+        F5F5F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9FEFEFEFCFCFCF9F9F9FCFCFCFCFCFC
+        F9F9F9F9F9F9FCFCFCF8F8F8F7F7F7FAFAFAFBFBFBFBFBFBFFFFFFFBFBFBFAFA
+        FAF9F9F9F5F5F5F5F5F5F7F7F7F5F5F5FFFFFFFFFFFFFCFCFCECECECEDEDEDE8
+        E8E8D7D7D7C6C6C6A8A8A8B6B6B6E2E2E2F7F7F7FCFCFCFCFCFCFCFCFCFFFFFF
+        FFFFFFEAEAEAE9E9E9E7E7E7E7E7E7CACACAC9C9C9E7E7E7EEEEEEEFEFEFF0F0
+        F0F2F2F2F9F9F9FDFDFDF3F3F3EAEAEAE9E9E9E9E9E9EAEAEAD5D5D5AFAFAFBC
+        BCBCDCDCDCF4F4F4FAFAFAF9F9F9F9F9F9F9F9F9F8F8F8F8F8F8EAEAEAE9E9E9
+        E9E9E9EDEDEDEAEAEAE5E5E5E2E2E2E0E0E0E1E1E1E2E2E2C7C7C7D4D4D4F1F1
+        F1F7F7F7F4F4F4F8F8F8EFEFEFEAEAEAEAEAEAECECECEBEBEBEEEEEEF2F2F2FF
+        FFFFF4F4F4F4F4F4F5F5F5E6E6E6C0C0C0BCBCBCE6E6E6FAFAFAF9F9F9FAFAFA
+        F9F9F9F9F9F9FFFFFFF0F0F0ECECECDEDEDECDCDCDBDBDBDC8C8C8D1D1D1E5E5
+        E5F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFCFCFCE9E9E9E3E3E3E2E2E2E2E2E2E6
+        E6E6E9E9E9D8D8D8BFBFBFB1B1B1C1C1C1D3D3D3DADADADBDBDBDCDCDCEDEDED
+        FBFBFBF8F8F8F5F5F5F5F5F5F5F5F5F3F3F3F4F4F4F6F6F6F6F6F6F6F6F6F6F6
+        F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F1F1F1EFEFEFF4F4F4F7F7F7F7F7F7F7
+        F7F7FBFBFBFEFEFEFFFFFFFCFCFCFCFCFCFDFDFDFDFDFDF8F8F8F3F3F3F2F2F2
+        F0F0F0EEEEEEF1F1F1F6F6F6F5F5F5F4F4F4DADADACCCCCCCCCCCCC1C1C1CDCD
+        CDF2F2F2FFFFFFFFFFFFFFFFFFFCFCFCEDEDEDE9E9E9F7F7F7FFFFFFFFFFFFFF
+        FFFFFFFFFFF8F8F8E7E7E7E7E7E7E5E5E5E9E9E9EAEAEAE9E9E9DEDEDED0D0D0
+        BBBBBBC6C6C6E6E6E6F0F0F0EEEEEEF1F1F1F5F5F5F6F6F6F7F7F7F7F7F7F8F8
+        F8FAFAFAFBFBFBFBFBFBF9F9F9F8F8F8F8F8F8F5F5F5F4F4F4F1F1F1F4F4F4F7
+        F7F7F7F7F7FFFFFFFFFFFFC7C7C7E4E4E4FFFFFFF1F1F1F5F5F5FCFCFCF3F3F3
+        EBEBEBECECECEDEDEDF4F4F4F9F9F9FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFF
+        FFF8F8F8EBEBEBEAEAEAD7D7D7C3C3C3B0B0B0E7E7E7FFFFFFF8F8F8E4E4E4F9
+        F9F9FAFAFAF9F9F9FFFFFFFFFFFFFFFFFFEBEBEBECECECE9E9E9E6E6E6E6E6E6
+        F3F3F3FEFEFEFFFFFFE4E4E4E5E5E5F7F7F7F4F4F4F2F2F2F4F4F4F7F7F7F6F6
+        F6F8F8F8FBFBFBFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFAFAFAF8F8F8F9
+        F9F9FFFFFFFFFFFFF8F8F8E6E6E6E6E6E6E7E7E7E4E4E4DFDFDFB7B7B7CACACA
+        EFEFEFF5F5F5FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4F1F1F1F3F3
+        F3F6F6F6F7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F4F4F4BFBFBFBABABAE1E1E1F5
+        F5F5F7F7F7F7F7F7F8F8F8F8F8F8FAFAFAFEFEFEFCFCFCFBFBFBFDFDFDFBFBFB
+        FBFBFBFBFBFBFCFCFCF8F8F8F7F7F7F9F9F9FCFCFCFFFFFFFFFFFFFEFEFEFBFB
+        FBFBFBFBF8F8F8F8F8F8F8F8F8F7F7F7FFFFFFFFFFFFFCFCFCEAEAEAEDEDEDDB
+        DBDBB7B7B7B9B9B9C8C8C8E2E2E2F7F7F7F9F9F9FDFDFDFDFDFDFBFBFBFFFFFF
+        FFFFFFEAEAEAEAEAEAE7E7E7DADADAC0C0C0D8D8D8F0F0F0EBEBEBF0F0F0F1F1
+        F1F5F5F5FCFCFCFFFFFFFFFFFFFDFDFDF3F3F3D9D9D9C8C8C8B2B2B2C1C1C1E1
+        E1E1F0F0F0F7F7F7FAFAFAF9F9F9FBFBFBF9F9F9F9F9F9F8F8F8F7F7F7D5D5D5
+        C6C6C6D9D9D9E7E7E7E2E2E2DBDBDBD9D9D9D0D0D0C3C3C3B0B0B0D4D4D4F4F4
+        F4F8F8F8FFFFFFFFFFFFECECECEBEBEBEAEAEAEAEAEAEAEAEAEEEEEEF3F3F3FF
+        FFFFF0F0F0F0F0F0F0F0F0EEEEEEC1C1C1D3D3D3F5F5F5F5F5F5F8F8F8FBFBFB
+        F9F9F9FBFBFBFFFFFFFCFCFCF9F9F9EAEAEAD8D8D8D6D6D6E5E5E5F1F1F1F5F5
+        F5F8F8F8F8F8F8FFFFFFFFFFFFF8F8F8EAEAEAE5E5E5E2E2E2E4E4E4E6E6E6E8
+        E8E8E9E9E9C3C3C3BABABAD3D3D3E6E6E6F1F1F1F4F4F4F5F5F5F9F9F9FFFFFF
+        FFFFFFFFFFFFF5F5F5F5F5F5F5F5F5F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F6F6
+        F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F2F2F2F3F3F3F6F6F6F6F6F6F6F6F6F7
+        F7F7F8F8F8F8F8F8F9F9F9FAFAFAF8F8F8F8F8F8F7F7F7F0F0F0F1F1F1F3F3F3
+        F2F2F2F3F3F3F5F5F5F7F7F7F5F5F5F5F5F5E9E9E9D9D9D9D8D8D8D9D9D9E6E6
+        E6FFFFFFFFFFFFFFFFFFFBFBFBEDEDEDEAEAEAE7E7E7EAEAEAF0F0F0F1F1F1ED
+        EDEDE7E7E7E6E6E6E6E6E6E6E6E6E2E2E2E4E4E4E6E6E6E8E8E8D0D0D0CCCCCC
+        D5D5D5E5E5E5F7F7F7F4F4F4F4F4F4F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9FAFA
+        FAFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F7F7F7F5F5F5F5F5F5F4F4F4F8F8F8FB
+        FBFBFEFEFEFFFFFFFFFFFFC9C9C9FAFAFAFBFBFBE6E6E6F7F7F7FFFFFFFFFFFF
+        EBEBEBF0F0F0F4F4F4FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFF5F5
+        F5ECECECEAEAEAD6D6D6ADADADBEBEBED3D3D3FFFFFFFFFFFFD2D2D2D0D0D0F9
+        F9F9F8F8F8FFFFFFFFFFFFFFFFFFF9F9F9E9E9E9ECECECEAEAEAE7E7E7E6E6E6
+        E4E4E4E7E7E7DADADAB2B2B2D1D1D1F6F6F6F7F7F7F5F5F5F7F7F7F8F8F8F7F7
+        F7FAFAFAFCFCFCFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFF8F8F8F9F9F9F9
+        F9F9FFFFFFFFFFFFE0E0E0DFDFDFE1E1E1E1E1E1DFDFDFD1D1D1A7A7A7CECECE
+        F3F3F3F7F7F7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFECECECE6E6E6F1F1F1F1F1
+        F1F4F4F4F7F7F7F7F7F7F6F6F6F5F5F5F6F6F6F6F6F6E4E4E4E4E4E4F6F6F6F7
+        F7F7F7F7F7F7F7F7F8F8F8F8F8F8FCFCFCFCFCFCFAFAFAFBFBFBFDFDFDFDFDFD
+        FBFBFBFAFAFAFCFCFCFAFAFAF8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFDFDFDF8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFCFCFCEAEAEADEDEDEBA
+        BABABCBCBCDBDBDBEFEFEFF7F7F7F9F9F9F9F9F9FEFEFEFEFEFEF9F9F9FFFFFF
+        F8F8F8EAEAEAE9E9E9E6E6E6CDCDCDCCCCCCE2E2E2EAEAEAECECECF1F1F1F0F0
+        F0F5F5F5FCFCFCFFFFFFFFFFFFFBFBFBF5F5F5E5E5E5D3D3D3D3D3D3E6E6E6F3
+        F3F3F3F3F3F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFAFAFAF7F7F7E4E4E4
+        D5D5D5E5E5E5D4D4D4B7B7B7B3B3B3B7B7B7ABABABBABABACCCCCCE2E2E2F4F4
+        F4F7F7F7FFFFFFFFFFFFE9E9E9EAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9FF
+        FFFFF2F2F2F2F2F2F0F0F0EDEDEDDFDFDFE4E4E4F4F4F4F3F3F3F7F7F7FBFBFB
+        FBFBFBFEFEFEFFFFFFFFFFFFFDFDFDF8F8F8F4F4F4F4F4F4F5F5F5F5F5F5F7F7
+        F7F8F8F8F8F8F8FFFFFFFFFFFFEAEAEAE9E9E9E7E7E7E7E7E7E8E8E8E9E9E9E9
+        E9E9D6D6D6AAAAAACFCFCFF5F5F5F6F6F6F5F5F5F7F7F7FAFAFAFFFFFFFFFFFF
+        FFFFFFFCFCFCF5F5F5F5F5F5F4F4F4F0F0F0F1F1F1F2F2F2F3F3F3F3F3F3F2F2
+        F2F4F4F4F5F5F5F6F6F6F6F6F6F4F4F4F4F4F4F5F5F5F6F6F6F5F5F5F7F7F7F7
+        F7F7F7F7F7F7F7F7FBFBFBFBFBFBF8F8F8F8F8F8F3F3F3F1F1F1F6F6F6F8F8F8
+        F9F9F9FAFAFAFBFBFBFBFBFBFBFBFBF8F8F8F6F6F6F4F4F4F4F4F4F4F4F4FFFF
+        FFFFFFFFFFFFFFECECECE9E9E9E9E9E9E8E8E8E7E7E7EAEAEAEDEDEDECECECE9
+        E9E9E6E6E6E6E6E6E4E4E4E4E4E4E2E2E2E2E2E2E4E4E4DADADAC1C1C1DADADA
+        F0F0F0F2F2F2F7F7F7F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FBFB
+        FBFFFFFFFFFFFFE8E8E8E2E2E2F7F7F7F6F6F6F6F6F6F7F7F7F7F7F7F9F9F9FC
+        FCFCFFFFFFFFFFFFFFFFFFCCCCCCFBFBFBE9E9E9D3D3D3F8F8F8FFFFFFDDDDDD
+        D9D9D9F4F4F4F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECEAEA
+        EAE9E9E9D5D5D5A9A9A9BDBDBDE6E6E6F7F7F7FFFFFFF9F9F9D5D5D5E6E6E6FA
+        FAFAFFFFFFFFFFFFFFFFFFFBFBFBEAEAEAE8E8E8E9E9E9EAEAEAE9E9E9E7E7E7
+        E7E7E7E7E7E7DADADACCCCCCDFDFDFF7F7F7F9F9F9F5F5F5F7F7F7F8F8F8F8F8
+        F8FCFCFCFCFCFCFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFCFCFCF9F9F9F9F9F9F7
+        F7F7FFFFFFF5F5F5E1E1E1E2E2E2E5E5E5D7D7D7C4C4C4AFAFAFBBBBBBE2E2E2
+        F8F8F8FAFAFAFEFEFEFFFFFFFFFFFFEDEDEDEDEDEDE0E0E0F2F2F2FDFDFDF4F4
+        F4F3F3F3F5F5F5F7F7F7F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7
+        F7F7F5F5F5F7F7F7F8F8F8FAFAFAFDFDFDFAFAFAF7F7F7F7F7F7F8F8F8FAFAFA
+        F9F9F9FAFAFAFDFDFDFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFB
+        FBFAFAFAF8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFECECECE9E9E9CDCDCDC0
+        C0C0DADADAEEEEEEF4F4F4F8F8F8F9F9F9FBFBFBFFFFFFFDFDFDF7F7F7F7F7F7
+        F7F7F7DBDBDBD8D8D8D3D3D3B9B9B9D1D1D1E7E7E7EBEBEBF0F0F0F6F6F6F5F5
+        F5FAFAFAFDFDFDFCFCFCFAFAFAF9F9F9F5F5F5F3F3F3F4F4F4F4F4F4F5F5F5F4
+        F4F4F5F5F5F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFF8F8F8F7F7F7F5F5F5
+        F7F7F7F5F5F5E1E1E1CBCBCBCACACACACACACCCCCCE1E1E1F1F1F1F3F3F3F6F6
+        F6F8F8F8FEFEFEFFFFFFDADADAD7D7D7E9E9E9E6E6E6E6E6E6E6E6E6E6E6E6FF
+        FFFFF6F6F6F3F3F3F0F0F0EFEFEFF3F3F3F6F6F6F7F7F7F5F5F5FDFDFDFFFFFF
+        FEFEFEFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F5F5
+        F5F5F5F5F5F5F5FFFFFFFFFFFFE9E9E9E8E8E8E8E8E8E9E9E9EAEAEAE9E9E9D7
+        D7D7ADADADBCBCBCE5E5E5F7F7F7F5F5F5F6F6F6F8F8F8FAFAFAFFFFFFFFFFFF
+        FDFDFDE9E9E9E6E6E6FEFEFEFDFDFDF1F1F1F2F2F2F1F1F1F3F3F3F3F3F3F2F2
+        F2F4F4F4F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F7F7F7F8
+        F8F8F7F7F7F9F9F9FEFEFEFAFAFAF9F9F9F9F9F9F5F5F5F4F4F4F8F8F8F9F9F9
+        F9F9F9FAFAFAFBFBFBFEFEFEFEFEFEFBFBFBF7F7F7F6F6F6F5F5F5F7F7F7FFFF
+        FFFFFFFFF8F8F8E9E9E9E9E9E9E9E9E9E7E7E7E7E7E7EAEAEAEAEAEAEAEAEAE6
+        E6E6E2E2E2E3E3E3E4E4E4E4E4E4E2E2E2E2E2E2D7D7D7BDBDBDCCCCCCE8E8E8
+        F0F0F0F2F2F2F7F7F7F6F6F6F7F7F7F7F7F7F8F8F8F7F7F7F8F8F8F8F8F8FFFF
+        FFFFFFFFFFFFFFBABABACBCBCBF6F6F6F7F7F7F7F7F7F8F8F8F9F9F9FBFBFBFF
+        FFFFFFFFFFFFFFFFFFFFFFDBDBDBF9F9F9FBFBFBF8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAE7E7
+        E7D4D4D4ABABABBCBCBCE6E6E6F7F7F7F7F7F7F7F7F7F7F7F7D5D5D5C2C2C2E6
+        E6E6FFFFFFFFFFFFFCFCFCEDEDEDEAEAEAEAEAEAE9E9E9EDEDEDEDEDEDE9E9E9
+        E8E8E8E7E7E7E7E7E7D0D0D0E0E0E0F8F8F8F8F8F8F5F5F5F5F5F5F7F7F7F9F9
+        F9FCFCFCFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F8F8F8F7F7F7F5
+        F5F5F5F5F5FFFFFFF7F7F7EAEAEAEAEAEACACACAC1C1C1D0D0D0E1E1E1F4F4F4
+        F7F7F7F9F9F9FCFCFCFFFFFFFFFFFFEBEBEBEBEBEBEBEBEBF5F5F5E8E8E8E6E6
+        E6F3F3F3F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F5
+        F5F5F6F6F6F7F7F7F8F8F8FCFCFCFCFCFCF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F8F8F8FAFAFAF9F9F9FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F8F8
+        F8F9F9F9F9F9F9F8F8F8F8F8F8F6F6F6FFFFFFECECECCCCCCCCCCCCCB8B8B8CE
+        CECEECECECF1F1F1F6F6F6F9F9F9FAFAFAFDFDFDFFFFFFFBFBFBF7F7F7F7F7F7
+        F7F7F7E6E6E6E2E2E2C6C6C6C5C5C5E2E2E2EFEFEFF2F2F2F5F5F5FAFAFAF9F9
+        F9FAFAFAFBFBFBFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5
+        F5F5F5F5F5F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F3F3F3F4F4F4F5F5F5
+        F6F6F6F5F5F5F5F5F5F1F1F1EFEFEFEEEEEEF1F1F1F4F4F4F2F2F2F3F3F3F8F8
+        F8FCFCFCFFFFFFFFFFFFE6E6E6DFDFDFCECECED0D0D0CFCFCFCFCFCFCFCFCFFF
+        FFFFFFFFFFF1F1F1F0F0F0F3F3F3F6F6F6F7F7F7F9F9F9F9F9F9FDFDFDFEFEFE
+        FEFEFEFDFDFDFCFCFCF9F9F9F8F8F8F8F8F8F6F6F6F5F5F5F3F3F3F3F3F3F3F3
+        F3F4F4F4F5F5F5FFFFFFFFFFFFDADADACCCCCCCDCDCDCECECECFCFCFCECECEB6
+        B6B6BCBCBCE2E2E2F7F7F7F6F6F6F5F5F5F7F7F7F8F8F8F8F8F8FFFFFFFFFFFF
+        E7E7E7E4E4E4E2E2E2EAEAEAE5E5E5E2E2E2EEEEEEF0F0F0F4F4F4F7F7F7F6F6
+        F6F8F8F8FBFBFBF7F7F7F5F5F5F5F5F5F4F4F4F5F5F5F7F7F7F7F7F7F8F8F8F8
+        F8F8F9F9F9FDFDFDFCFCFCF7F7F7F7F7F7F7F7F7F9F9F9F4F4F4F5F5F5F9F9F9
+        F9F9F9FAFAFAFDFDFDFEFEFEFCFCFCF9F9F9F8F8F8F5F5F5F5F5F5F6F6F6F9F9
+        F9FFFFFFF8F8F8E9E9E9E9E9E9E8E8E8E7E7E7E8E8E8E8E8E8E9E9E9E7E7E7E5
+        E5E5E5E5E5E5E5E5E6E6E6E4E4E4E2E2E2D0D0D0B1B1B1C3C3C3E6E6E6F5F5F5
+        F3F3F3F7F7F7F9F9F9F7F7F7F7F7F7F6F6F6F8F8F8F8F8F8FAFAFAFCFCFCFFFF
+        FFFFFFFFF8F8F8B9B9B9CACACAF5F5F5F5F5F5F7F7F7FAFAFAFBFBFBFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFD7D7D7F7F7F7FFFFFFF8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDEBEBEBEAEAEAEAEAEAD7D7
+        D7AFAFAFC0C0C0E6E6E6F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7E5E5E5D1D1D1E6
+        E6E6FFFFFFFBFBFBEDEDEDECECECEBEBEBEBEBEBEAEAEAEDEDEDECECECE7E7E7
+        E7E7E7E6E6E6E4E4E4C0C0C0D4D4D4FAFAFAF9F9F9F7F7F7F6F6F6F6F6F6F9F9
+        F9FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF7F7F7F7F7F7F7F7F7F5
+        F5F5F5F5F5FFFFFFFCFCFCEDEDEDEBEBEBC8C8C8D1D1D1F1F1F1F5F5F5F7F7F7
+        F8F8F8FAFAFAFCFCFCFFFFFFFFFFFFEAEAEAEBEBEBE9E9E9E7E7E7DCDCDCF7F7
+        F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F7F7F7F7F7F7F5F5F5F6
+        F6F6F7F7F7F8F8F8FAFAFAFDFDFDFCFCFCF9F9F9F9F9F9F8F8F8F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFE8E8E8D6D6D6E4E4
+        E4F5F5F5F5F5F5F7F7F7F7F7F7F6F6F6F7F7F7E7E7E7D8D8D8D3D3D3CDCDCDDE
+        DEDEEFEFEFF4F4F4F9F9F9F9F9F9FDFDFDFFFFFFFCFCFCF9F9F9F7F7F7F7F7F7
+        F6F6F6F3F3F3F3F3F3E6E6E6E7E7E7F7F7F7F8F8F8F7F7F7F7F7F7F9F9F9F9F9
+        F9F9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F6F6F6F3F3F3F3F3F3F4
+        F4F4F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFFBFBFBE4E4E4E6E6E6F4F4F4F5F5F5
+        F7F7F7F7F7F7F7F7F7F5F5F5F3F3F3F3F3F3F5F5F5F4F4F4F3F3F3F7F7F7FCFC
+        FCFFFFFFFFFFFFFCFCFCF5F5F5F2F2F2DDDDDDDEDEDEB0B0B0C6C6C6B0B0B0FF
+        FFFFF7F7F7F0F0F0F1F1F1F5F5F5F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9
+        F7F7F7F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5F4F4F4F4F4F4F4F4
+        F4F7F7F7F7F7F7FFFFFFFFFFFFCCCCCCC7C7C7D6D6D6D9D9D9D9D9D9D5D5D5CD
+        CDCDDEDEDEF4F4F4F7F7F7F5F5F5F6F6F6F8F8F8F8F8F8F8F8F8FFFFFFFFFFFF
+        E1E1E1DFDFDFD9D9D9D1D1D1C6C6C6D7D7D7FDFDFDFFFFFFF6F6F6F8F8F8FCFC
+        FCFFFFFFFFFFFFF9F9F9F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8F8
+        F8F8F9F9F9F9F9F9F7F7F7F5F5F5F5F5F5F5F5F5F7F7F7ECECECF0F0F0F9F9F9
+        F9F9F9FAFAFAFDFDFDFDFDFDFBFBFBF9F9F9F9F9F9F7F7F7F5F5F5F7F7F7F8F8
+        F8FFFFFFFFFFFFE9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E8E8E8E9E9E9DADADADD
+        DDDDEBEBEBE7E7E7E2E2E2E1E1E1CCCCCCA6A6A6BDBDBDE1E1E1F6F6F6F7F7F7
+        F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F8F8F8FAFAFAFCFCFCFFFFFFFFFF
+        FFFFFFFFD4D4D4A4A4A4CACACAF5F5F5F6F6F6F8F8F8FDFDFDFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF9F9F9C5C5C5F5F5F5FFFFFFE2E2E2E6E6E6E6E6E6E5E5E5
+        E9E9E9ECECECEAEAEAEBEBEBEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E9E9E9C3C3
+        C3BFBFBFE7E7E7F7F7F7F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F9
+        F9F9F9F9F9F9F9F9E4E4E4D7D7D7D7D7D7D5D5D5DEDEDEE9E9E9EAEAEAE8E8E8
+        E8E8E8E7E7E7E6E6E6D5D5D5E7E7E7FAFAFAF8F8F8F9F9F9F6F6F6F4F4F4F9F9
+        F9FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9F7F7F7F7F7F7F7F7F7F4
+        F4F4F4F4F4F7F7F7FFFFFFF7F7F7E7E7E7C6C6C6D3D3D3F5F5F5F7F7F7F7F7F7
+        FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFECECECEAEAEAE6E6E6E7E7E7EDEDEDFEFE
+        FEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF8F8F8F7F7F7F5F5F5F6F6F6F7F7F7F7
+        F7F7F8F8F8FAFAFAFDFDFDFDFDFDFAFAFAF8F8F8F8F8F8F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFEFEFEE9E9E9E6E6E6C5C5C5D5D5
+        D5F2F2F2F1F1F1F5F5F5F7F7F7F6F6F6F8F8F8F9F9F9F7F7F7F3F3F3EFEFEFF1
+        F1F1F4F4F4F7F7F7F9F9F9FAFAFAFFFFFFFFFFFFF9F9F9F9F9F9F8F8F8F6F6F6
+        F4F4F4F4F4F4F5F5F5F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F8F8F8F9F9F9FBFB
+        FBFFFFFFFFFFFFFFFFFFF5F5F5F5F5F5F7F7F7F7F7F7F6F6F6F7F7F7F5F5F5F7
+        F7F7F7F7F7FFFFFFFFFFFFFFFFFFE8E8E8E3E3E3E1E1E1E6E6E6DADADAE7E7E7
+        F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F5F5F5F4F4F4F3F3F3F6F6F6FDFDFDFEFE
+        FEFFFFFFFFFFFFF9F9F9F7F7F7F7F7F7F4F4F4F3F3F3DCDCDCDEDEDEDFDFDFFF
+        FFFFECECECE8E8E8F4F4F4F6F6F6F7F7F7F7F7F7F9F9F9F8F8F8F7F7F7F7F7F7
+        F4F4F4F6F6F6F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F5F5
+        F5F7F7F7FFFFFFFFFFFFFFFFFFCCCCCCD7D7D7F3F3F3F4F4F4F2F2F2EDEDEDE9
+        E9E9F0F0F0F6F6F6F5F5F5F5F5F5F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFFFFFF
+        D9D9D9C6C6C6BCBCBCD8D8D8C9C9C9D3D3D3FFFFFFFDFDFDF1F1F1FFFFFFFFFF
+        FFFFFFFFFBFBFBF6F6F6F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9
+        F9F9F9FBFBFBFDFDFDFCFCFCF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFBFB
+        FBFFFFFFFFFFFFE9E9E9E8E8E8E7E7E7E7E7E7E8E8E8EAEAEAEAEAEACFCFCFDB
+        DBDBDCDCDCC6C6C6C3C3C3C1C1C1A5A5A5B7B7B7E1E1E1F4F4F4FCFCFCFBFBFB
+        F6F6F6F6F6F6F6F6F6F6F6F6F9F9F9FBFBFBFCFCFCFDFDFDFEFEFEFCFCFCFFFF
+        FFE3E3E3A5A5A5B1B1B1DDDDDDF5F5F5F7F7F7F8F8F8FCFCFCFFFFFFFFFFFFFF
+        FFFFFFFFFFF9F9F9E9E9E9D7D7D7FFFFFFFFFFFFE4E4E4E9E9E9E9E9E9E8E8E8
+        EAEAEAEAEAEAE7E7E7E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E7E7E7EAEAEAC2C2
+        C2D1D1D1F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8
+        F8F8F8F8F8F9F9F9EAEAEADDDDDDE0E0E0DEDEDEE7E7E7DEDEDEE0E0E0EBEBEB
+        EAEAEAEAEAEAE9E9E9E9E9E9EBEBEBF8F8F8F8F8F8F8F8F8F3F3F3F3F3F3FDFD
+        FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF9F9F9F8F8F8F7F7F7F4
+        F4F4F5F5F5F8F8F8FFFFFFEAEAEACACACAB8B8B8D7D7D7F7F7F7F8F8F8F8F8F8
+        F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFECECECEAEAEAEBEBEBEEEEEEF3F3F3F3F3
+        F3F1F1F1EEEEEEEEEEEEEEEEEEECECECEBEBEBF7F7F7F7F7F7F7F7F7F8F8F8F8
+        F8F8FAFAFAFDFDFDFCFCFCFBFBFBF8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F7F7F7
+        F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFCFCFCE8E8E8E7E7E7E7E7E7C3C3C3D3D3
+        D3F3F3F3F2F2F2F5F5F5F5F5F5F5F5F5F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F7
+        F7F7F9F9F9FEFEFEFDFDFDFDFDFDFFFFFFFCFCFCF7F7F7F8F8F8F7F7F7F4F4F4
+        F4F4F4F4F4F4F6F6F6F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7FBFBFBFBFBFBFCFC
+        FCFFFFFFFFFFFFE9E9E9E2E2E2F3F3F3F5F5F5F6F6F6F8F8F8FBFBFBF9F9F9F9
+        F9F9FBFBFBFFFFFFFFFFFFF7F7F7DEDEDEDCDCDCDEDEDEE4E4E4CACACAD9D9D9
+        F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F4F4F4F4F4F4F7F7F7FBFBFBFEFEFEFEFE
+        FEFCFCFCFCFCFCF9F9F9F7F7F7F6F6F6F4F4F4F4F4F4F6F6F6F7F7F7F8F8F8FF
+        FFFFEAEAEAEAEAEAD9D9D9E6E6E6F7F7F7F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7
+        F5F5F5F6F6F6F5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F6F6F6F5F5F5F5F5
+        F5F5F5F5FFFFFFFFFFFFECECECBDBDBDD8D8D8F5F5F5F5F5F5F4F4F4EEEEEEEE
+        EEEEF3F3F3F5F5F5F5F5F5F7F7F7F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFDFDFDF
+        B2B2B2A1A1A1C5C5C5D6D6D6BABABAD0D0D0FFFFFFDFDFDFDEDEDEFDFDFDFDFD
+        FDF9F9F9F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F6F6F6F6F6F6F7F7F7F7
+        F7F7F8F8F8F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FBFBFB
+        FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBF9F9F9FAFAFAFBFBFBFDFDFDFDFDFDFCFC
+        FCFFFFFFFFFFFFE8E8E8E7E7E7E7E7E7E7E7E7E9E9E9EAEAEAEAEAEACFCFCFDA
+        DADAE4E4E4D1D1D1D1D1D1CECECECCCCCCE1E1E1F6F6F6FCFCFCFFFFFFFDFDFD
+        F7F7F7F6F6F6F6F6F6F6F6F6F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F7F7F7FFFF
+        FFE8E8E8C5C5C5DEDEDEF3F3F3F7F7F7F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFFF
+        FFFFE8E8E8E6E6E6E6E6E6E7E7E7F8F8F8F3F3F3E1E1E1E7E7E7E8E8E8E8E8E8
+        E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E7E7E7E7E7E7E9E9E9EAEAEAE9E9E9D7D7
+        D7F7F7F7FFFFFFF7F7F7F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7
+        F7F7F8F8F8F7F7F7F4F4F4F6F6F6F6F6F6F4F4F4F5F5F5EAEAEAEAEAEADEDEDE
+        E1E1E1EEEEEEEDEDEDE9E9E9E7E7E7D5D5D5E1E1E1F6F6F6F4F4F4F8F8F8FEFE
+        FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F8F8F8F7F7F7F7F7F7F5
+        F5F5F7F7F7F7F7F7F3F3F3E3E3E3D5D5D5D7D7D7E9E9E9F8F8F8F8F8F8F8F8F8
+        F7F7F7F7F7F7FFFFFFFFFFFFFDFDFDECECECECECECEFEFEFF1F1F1F1F1F1F0F0
+        F0EDEDEDEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8F1F1F1F1F1F1F3F3F3F6
+        F6F6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFBFBFBE9E9E9E7E7E7E3E3E3C0C0C0D2D2
+        D2F4F4F4F3F3F3F2F2F2F3F3F3F4F4F4F8F8F8F9F9F9F9F9F9FBFBFBFAFAFAF9
+        F9F9FDFDFDFFFFFFFDFDFDFFFFFFFFFFFFF9F9F9F6F6F6F7F7F7F6F6F6F4F4F4
+        F4F4F4F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FBFBFBFBFBFBFCFC
+        FCFCFCFCFCFCFCC6C6C6CECECEF3F3F3F7F7F7F9F9F9F9F9F9FCFCFCFCFCFCFC
+        FCFCFFFFFFFFFFFFFFFFFFE1E1E1DCDCDCE0E0E0E6E6E6E8E8E8DBDBDBE9E9E9
+        F7F7F7F9F9F9F9F9F9F8F8F8F7F7F7F7F7F7F7F7F7FAFAFAFCFCFCFDFDFDFBFB
+        FBF9F9F9F8F8F8F7F7F7F5F5F5F5F5F5F4F4F4F4F4F4F7F7F7F8F8F8F8F8F8FF
+        FFFFE9E9E9DADADAB4B4B4D4D4D4F7F7F7F7F7F7F9F9F9F9F9F9F7F7F7F6F6F6
+        F5F5F5F5F5F5F4F4F4F3F3F3F7F7F7F8F8F8F7F7F7F5F5F5F4F4F4F6F6F6F7F7
+        F7F8F8F8FFFFFFFFFFFFEDEDEDE7E7E7F4F4F4F4F4F4F5F5F5F5F5F5F1F1F1F1
+        F1F1F5F5F5F6F6F6F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFE7E7E7A3A3A3
+        B6B6B6CFCFCFE2E2E2E8E8E8D5D5D5E4E4E4F8F8F8EAEAEAF0F0F0FDFDFDFFFF
+        FFFFFFFFF5F5F5F6F6F6F5F5F5F4F4F4F5F5F5F4F4F4F4F4F4F5F5F5F6F6F6F7
+        F7F7F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFBFBFBEEEEEEEBEBEBECECECECECEC
+        FAFAFAFBFBFBFCFCFCFCFCFCFBFBFBF9F9F9FBFBFBFEFEFEFDFDFDFCFCFCFDFD
+        FDFFFFFFFFFFFFE9E9E9E7E7E7E9E9E9EAEAEAEAEAEAEAEAEAEAEAEACECECED8
+        D8D8F0F0F0EFEFEFEDEDEDECECECF0F0F0F5F5F5F9F9F9FFFFFFFFFFFFFFFFFF
+        FFFFFFF5F5F5F5F5F5F4F4F4F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6FDFDFDFFFF
+        FFEFEFEFE9E9E9FBFBFBF8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFEC
+        ECECE7E7E7E4E4E4E4E4E4E2E2E2E4E4E4DEDEDEDBDBDBE6E6E6E7E7E7E6E6E6
+        E5E5E5E5E5E5D5D5D5D7D7D7E8E8E8E8E8E8E9E9E9EAEAEAE9E9E9E7E7E7E7E7
+        E7F8F8F8FDFDFDF9F9F9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8
+        F8F8F9F9F9F8F8F8F7F7F7FBFBFBFAFAFAF6F6F6F6F6F6F6F6F6F4F4F4E7E7E7
+        EAEAEAF0F0F0EDEDEDE2E2E2E2E2E2D1D1D1F1F1F1FFFFFFF7F7F7FBFBFBFCFC
+        FCFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF7F7F7F5F5F5F7F7F7F8F8F8F7F7F7F5
+        F5F5F5F5F5F4F4F4EEEEEEF1F1F1F5F5F5F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8
+        F6F6F6F3F3F3FFFFFFFFFFFFFFFFFFEEEEEEF0F0F0F3F3F3F2F2F2EFEFEFEEEE
+        EEEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E2E2E2CFCFCFE1E1E1F6F6F6FC
+        FCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF
+        FFFFFFF7F7F7F7F7F7F7F7F7FFFFFFEAEAEAC7C7C7C2C2C2D0D0D0D3D3D3F2F2
+        F2FFFFFFFFFFFFF0F0F0F2F2F2F4F4F4F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBFB
+        FBFBFFFFFFFEFEFEF8F8F8F9F9F9FAFAFAF7F7F7F5F5F5F6F6F6F5F5F5F4F4F4
+        F5F5F5F7F7F7F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F9F9F9FBFBFBFCFCFCFEFE
+        FEFFFFFFFFFFFFE4E4E4DFDFDFF5F5F5F9F9F9FAFAFAF9F9F9FDFDFDFFFFFFFF
+        FFFFFFFFFFFFFFFFF2F2F2DFDFDFDEDEDEE6E6E6ECECECEBEBEBEBEBEBECECEC
+        F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FAFAFAFCFCFCFBFBFBFBFBFBF9F9
+        F9F8F8F8F7F7F7F5F5F5F4F4F4F4F4F4F3F3F3F4F4F4F7F7F7F8F8F8F8F8F8FF
+        FFFFDADADABABABAC1C1C1E3E3E3F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F5F5F5
+        F5F5F5F5F5F5F5F5F5F1F1F1F3F3F3F7F7F7F5F5F5F3F3F3F6F6F6F8F8F8FBFB
+        FBFBFBFBFFFFFFFFFFFFFAFAFAF8F8F8EAEAEAE7E7E7F5F5F5F5F5F5F1F1F1F1
+        F1F1F7F7F7F9F9F9F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFF7F7F7BCBCBCBCBCBC
+        E3E3E3F5F5F5F7F7F7F8F8F8F4F4F4F6F6F6FBFBFBFCFCFCFFFFFFFFFFFFFFFF
+        FFF9F9F9E6E6E6F4F4F4F4F4F4F2F2F2F2F2F2F3F3F3F4F4F4F5F5F5F7F7F7F7
+        F7F7F6F6F6F6F6F6F6F6F6FFFFFFFFFFFFEBEBEBEBEBEBEAEAEAEAEAEAD3D3D3
+        BDBDBDE5E5E5F9F9F9FCFCFCFBFBFBF9F9F9FDFDFDFEFEFEFAFAFAFCFCFCFFFF
+        FFFFFFFFFFFFFFECECECE9E9E9EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9CECECED7
+        D7D7F1F1F1F1F1F1EDEDEDF0F0F0F5F5F5F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF
+        F8F8F8F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F8F8F8F5F5F5FFFFFFFFFF
+        FFE4E4E4DFDFDFFDFDFDF9F9F9F9F9F9F9F9F9F8F8F8F7F7F7FFFFFFFFFFFFE7
+        E7E7E5E5E5E3E3E3E2E2E2E0E0E0DCDCDCBFBFBFACACACBABABABABABABABABA
+        BFBFBFBFBFBFACACACCDCDCDD3D3D3D3D3D3E7E7E7E9E9E9E7E7E7E7E7E7E4E4
+        E4E4E4E4E9E9E9E9E9E9FFFFFFFFFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9
+        F9F9F9F9F9F7F7F7F9F9F9FDFDFDFBFBFBF7F7F7F7F7F7F6F6F6F4F4F4F4F4F4
+        F4F4F4FFFFFFF7F7F7DADADAE0E0E0E4E4E4F4F4F4E9E9E9E7E7E7F8F8F8F9F9
+        F9FCFCFCFEFEFEFEFEFEFDFDFDF8F8F8F5F5F5F7F7F7FAFAFAF9F9F9F8F8F8FF
+        FFFFFFFFFFFFFFFFFFFFFFF7F7F7FAFAFAF9F9F9F9F9F9F9F9F9F8F8F8F7F7F7
+        F4F4F4F7F7F7FFFFFFFFFFFFFFFFFFF2F2F2F1F1F1F2F2F2EFEFEFEDEDEDEBEB
+        EBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7CDCDCDA4A4A4D3D3D3FBFBFBFF
+        FFFFFFFFFFFFFFFFFFFFFFEDEDEDEEEEEEEDEDEDE9E9E9E6E6E6E6E6E6F6F6F6
+        E1E1E1E1E1E1F7F7F7F7F7F7F7F7F7E6E6E6D5D5D5E7E7E7FFFFFFF5F5F5F9F9
+        F9FFFFFFF7F7F7F0F0F0F3F3F3F5F5F5F8F8F8FBFBFBFBFBFBFCFCFCFCFCFCFC
+        FCFCFFFFFFFCFCFCF7F7F7F7F7F7F7F7F7F5F5F5F1F1F1F3F3F3F3F3F3F4F4F4
+        F8F8F8F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFCFCFCFEFE
+        FEFFFFFFEAEAEADFDFDFF0F0F0F5F5F5F7F7F7F7F7F7F6F6F6FBFBFBFFFFFFFF
+        FFFFFFFFFFFFFFFFDFDFDFD4D4D4DCDCDCE9E9E9ECECECEBEBEBEBEBEBECECEC
+        EDEDEDFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9FAFAFAFBFBFBFAFAFAFBFBFBFBFB
+        FBF8F8F8F7F7F7F6F6F6F4F4F4F2F2F2F1F1F1F4F4F4F7F7F7F8F8F8F8F8F8FF
+        FFFFBABABAC7C7C7E2E2E2F2F2F2F6F6F6F5F5F5F5F5F5F8F8F8F7F7F7F5F5F5
+        F5F5F5F5F5F5F6F6F6F4F4F4F7F7F7F9F9F9F5F5F5F5F5F5F9F9F9FBFBFBFEFE
+        FEFFFFFFFFFFFFFFFFFFECECECECECECDEDEDEF7F7F7FFFFFFFFFFFFFFFFFFF5
+        F5F5F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFE3E3E3DCDCDCB5B5B5CECECE
+        F5F5F5F8F8F8F9F9F9F9F9F9F7F7F7F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFF
+        FFFAFAFAE7E7E7F5F5F5F4F4F4F1F1F1F2F2F2F5F5F5F5F5F5F7F7F7F9F9F9F8
+        F8F8F8F8F8F7F7F7F8F8F8FFFFFFFFFFFFEBEBEBECECECEAEAEAE9E9E9D3D3D3
+        E6E6E6F8F8F8F9F9F9FDFDFDFCFCFCF9F9F9FDFDFDFCFCFCF8F8F8FDFDFDFFFF
+        FFFFFFFFFFFFFFEDEDEDEAEAEAEAEAEAEAEAEAE9E9E9EAEAEAEAEAEAD0D0D0D8
+        D8D8F3F3F3F0F0F0EDEDEDF4F4F4F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFECECEC
+        E9E9E9DEDEDEE7E7E7F3F3F3F4F4F4F3F3F3F4F4F4F8F8F8FDFDFDFFFFFFFFFF
+        FFEAEAEAF8F8F8FFFFFFFFFFFFFCFCFCFAFAFAF7F7F7FFFFFFFFFFFFFFFFFFE4
+        E4E4E3E3E3E1E1E1DEDEDEDCDCDCC1C1C18D8D8DB0B0B0D1D1D1D0D0D0D2D2D2
+        D5D5D5D4D4D4D5D5D5E4E4E4E2E2E2E3E3E3E7E7E7E7E7E7E4E4E4E4E4E4E2E2
+        E2E4E4E4E7E7E7E6E6E6F9F9F9FDFDFDFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9F9
+        F9F9F8F8F8F7F7F7FBFBFBFCFCFCFFFFFFFCFCFCF6F6F6F5F5F5F4F4F4F4F4F4
+        F4F4F4FFFFFFFFFFFFDEDEDEE2E2E2E6E6E6E4E4E4D7D7D7E6E6E6F8F8F8FCFC
+        FCFDFDFDFCFCFCFEFEFEFBFBFBF7F7F7F7F7F7FAFAFAF9F9F9FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF9F9F9FAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F6F6F6
+        F4F4F4FAFAFAFFFFFFFFFFFFF1F1F1F1F1F1EFEFEFEDEDEDECECECECECECEAEA
+        EAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E7E7E7B8B8B8B6B6B6E7E7E7FCFCFCFF
+        FFFFFFFFFFFFFFFFFFFFFFECECECECECECEAEAEAE6E6E6E6E6E6E6E6E6D9D9D9
+        B3B3B3D1D1D1F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6FFFFFFFFFFFFF5F5F5EAEA
+        EAEAEAEAE6E6E6D2D2D2E4E4E4F4F4F4F7F7F7FDFDFDFCFCFCFCFCFCFBFBFBFC
+        FCFCFDFDFDF9F9F9F7F7F7F7F7F7F7F7F7F4F4F4F2F2F2F4F4F4F6F6F6F7F7F7
+        F8F8F8F8F8F8F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFCFC
+        FCFAFAFAE1E1E1E0E0E0F2F2F2F2F2F2F5F5F5F6F6F6F7F7F7FFFFFFFFFFFFFF
+        FFFFEDEDEDDCDCDCC3C3C3BFBFBFDCDCDCEBEBEBEBEBEBEAEAEAEBEBEBEDEDED
+        EEEEEEFEFEFEFEFEFEF1F1F1F0F0F0F0F0F0FBFBFBFAFAFAF8F8F8FAFAFAFBFB
+        FBF7F7F7F7F7F7F5F5F5F3F3F3F1F1F1F2F2F2F4F4F4F7F7F7F8F8F8F8F8F8FF
+        FFFFD7D7D7E7E7E7F0F0F0F2F2F2F5F5F5F5F5F5F5F5F5FAFAFAF9F9F9F6F6F6
+        F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFDFDFDFFFF
+        FFFFFFFFFFFFFFFEFEFEECECECECECECECECECFAFAFAFFFFFFFFFFFFFBFBFBFF
+        FFFFFFFFFFFCFCFCFCFCFCFFFFFFFFFFFFF7F7F7DFDFDFC3C3C3999999CFCFCF
+        F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFDFDFDFFFFFFFFFFFFFCFCFCFFFF
+        FFFFFFFFD9D9D9F5F5F5FFFFFFF3F3F3F5F5F5F7F7F7F7F7F7F9F9F9FAFAFAF8
+        F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFEBEBEBECECECECECECEAEAEAEAEAEA
+        ECECECD7D7D7E8E8E8FEFEFEFCFCFCF9F9F9FCFCFCFCFCFCF8F8F8FEFEFEFFFF
+        FFFFFFFFFFFFFFECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEADADADAE1
+        E1E1F0F0F0EBEBEBEEEEEEF7F7F7F9F9F9FAFAFAFFFFFFFFFFFFE7E7E7E1E1E1
+        D7D7D7C3C3C3DBDBDBF4F4F4F4F4F4F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FAFAFAFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E4
+        E4E4E2E2E2DFDFDFDEDEDED8D8D8A4A4A4ADADADE7E7E7FDFDFDFCFCFCFDFDFD
+        FCFCFCFCFCFCFBFBFBFBFBFBF9F9F9FBFBFBFDFDFDE8E8E8E4E4E4E5E5E5E5E5
+        E5E7E7E7E8E8E8E8E8E8E8E8E8E6E6E6F8F8F8FBFBFBFAFAFAFBFBFBFAFAFAF9
+        F9F9F7F7F7F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF4F4F4F4F4F4
+        F4F4F4FFFFFFFFFFFFE5E5E5E7E7E7E6E6E6E6E6E6E6E6E6D6D6D6E9E9E9FDFD
+        FDF7F7F7F7F7F7F7F7F7F3F3F3F3F3F3F5F5F5F7F7F7F7F7F7FFFFFFFFFFFFFF
+        FFFFF9F9F9EFEFEFDADADACBCBCBF0F0F0FDFDFDFBFBFBFAFAFAFAFAFAF9F9F9
+        F7F7F7FBFBFBFDFDFDF9F9F9EDEDEDECECECECECECECECECECECECEBEBEBEAEA
+        EAEAEAEAEAEAEAE8E8E8E7E7E7E7E7E7D1D1D19F9F9FCBCBCBF9F9F9FEFEFEFF
+        FFFFFFFFFFFFFFFFFFFFFFEDEDEDECECECEBEBEBE6E6E6E3E3E3DEDEDED3D3D3
+        BBBBBBD4D4D4F5F5F5F7F7F7F6F6F6F5F5F5F6F6F6F6F6F6FFFFFFF8F8F8EBEB
+        EBEAEAEAE4E4E4C0C0C0D3D3D3F5F5F5F9F9F9FEFEFEFCFCFCF9F9F9F9F9F9FA
+        FAFAFAFAFAF8F8F8F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F7F7F7F8F8F8F8F8F8
+        F8F8F8F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFF
+        FFFFFFFFF0F0F0F0F0F0F4F4F4F3F3F3F7F7F7F9F9F9FBFBFBFFFFFFFFFFFFED
+        EDEDD1D1D1DFDFDFD1D1D1D6D6D6F4F4F4FFFFFFF1F1F1EBEBEBEDEDEDEEEEEE
+        EFEFEFEEEEEEEDEDEDEFEFEFF0F0F0EEEEEEECECECF7F7F7F8F8F8FAFAFAFBFB
+        FBF7F7F7F7F7F7F5F5F5F3F3F3F2F2F2F4F4F4F6F6F6F8F8F8F8F8F8F8F8F8FF
+        FFFFF1F1F1F1F1F1EEEEEEF1F1F1F4F4F4F5F5F5F6F6F6F9F9F9F9F9F9F7F7F7
+        F5F5F5F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFEFEFEECECECEAEAEAEAEAEAEBEBEBECECECEBEBEBEBEBEBEBEBEBF8
+        F8F8ECECECECECECFBFBFBFFFFFFEBEBEBCECECEC8C8C8989898B3B3B3E6E6E6
+        F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFD9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8F7
+        F7F7F7F7F7F8F8F8F9F9F9FFFFFFFFFFFFEDEDEDECECECEBEBEBEAEAEAEAEAEA
+        C1C1C1BABABAE6E6E6FBFBFBFBFBFBF9F9F9FCFCFCFDFDFDF9F9F9FFFFFFFFFF
+        FFFFFFFFFBFBFBE9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E6E6E6DC
+        DCDCE2E2E2EDEDEDF4F4F4FAFAFAF9F9F9F9F9F9FFFFFFFBFBFBD1D1D1C7C7C7
+        C1C1C1CCCCCCE7E7E7F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFF4F4
+        F4ECECECEEEEEEF0F0F0F0F0F0FDFDFDFFFFFFFBFBFBFFFFFFFFFFFFE7E7E7E7
+        E7E7E5E5E5E0E0E0DADADAC3C3C3949494CCCCCCFCFCFCFEFEFEFDFDFDFDFDFD
+        FFFFFFFFFFFFFFFFFFFCFCFCFBFBFBFDFDFDFEFEFEFFFFFFF7F7F7E5E5E5E3E3
+        E3E2E2E2E3E3E3E4E4E4E2E2E2E2E2E2E5E5E5E9E9E9EDEDEDF8F8F8F8F8F8F7
+        F7F7F8F8F8F9F9F9FFFFFFFFFFFFFFFFFFFAFAFAF9F9F9EEEEEEEBEBEBF2F2F2
+        F3F3F3FFFFFFFFFFFFE7E7E7E7E7E7E4E4E4E5E5E5E4E4E4D4D4D4E9E9E9FAFA
+        FAF4F4F4F3F3F3F4F4F4F3F3F3F3F3F3F6F6F6F8F8F8FFFFFFFFFFFFFFFFFFE8
+        E8E8E7E7E7E7E7E7C1C1C1C1C1C1E7E7E7F8F8F8F9F9F9FAFAFAFAFAFAFAFAFA
+        FBFBFBFEFEFEFDFDFDFBFBFBFFFFFFFBFBFBEBEBEBECECECEBEBEBE9E9E9E9E9
+        E9E9E9E9E8E8E8E7E7E7E8E8E8E9E9E9BCBCBCB5B5B5E2E2E2FBFBFBFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFEDEDEDEBEBEBE9E9E9E4E4E4DEDEDED7D7D7C7C7C7
+        AFAFAFD6D6D6F5F5F5F6F6F6F5F5F5F6F6F6F8F8F8F8F8F8FFFFFFFFFFFFEEEE
+        EEEDEDEDE7E7E7D6D6D6F7F7F7FFFFFFFBFBFBFDFDFDFDFDFDF9F9F9F8F8F8FB
+        FBFBFDFDFDF9F9F9F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8FBFBFBFFFFFFFEFEFED7D7D7D2D2D2E9E9E9FCFCFCFFFFFFFFFF
+        FFE8E8E8DCDCDCF0F0F0F4F4F4F6F6F6FAFAFAF8F8F8FBFBFBFFFFFFFFFFFFD9
+        D9D9DADADAF0F0F0E1E1E1E6E6E6FBFBFBFBFBFBF0F0F0EDEDEDEEEEEEEDEDED
+        EDEDEDEDEDEDECECECEEEEEEEBEBEBE8E8E8E6E6E6DCDCDCEDEDEDFDFDFDFCFC
+        FCF8F8F8F8F8F8F5F5F5F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF5F5F5F4F4F4F2F2F2F2F2F2F4F4F4F4F4F4F5F5F5F7F7F7F8F8F8F6F6F6
+        F5F5F5F6F6F6FFFFFFFFFFFFE9E9E9EAEAEAE9E9E9FCFCFCFFFFFFFFFFFFFFFF
+        FFFDFDFDEAEAEAE9E9E9D7D7D7C7C7C7CACACADADADAE8E8E8E9E9E9E9E9E9E9
+        E9E9CACACAD8D8D8F5F5F5F6F6F6E3E3E3DDDDDDBABABAB6B6B6E2E2E2F9F9F9
+        F9F9F9F8F8F8F8F8F8F9F9F9F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFCFCFCEBEBEBF9F9F9F8F8F8F5F5F5FFFFFFFBFBFBF7F7F7F6F6F6F8F8F8F8
+        F8F8F9F9F9FAFAFAFBFBFBFFFFFFFFFFFFEEEEEEEDEDEDECECECE9E9E9D3D3D3
+        A7A7A7D0D0D0F8F8F8FBFBFBFCFCFCFCFCFCFDFDFDFDFDFDF9F9F9FCFCFCFFFF
+        FFFFFFFFEDEDEDE9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9D5D5D5B5
+        B5B5D1D1D1F1F1F1F8F8F8FCFCFCFDFDFDFFFFFFFFFFFFFAFAFAE3E3E3DADADA
+        DADADAE6E6E6F3F3F3F5F5F5F7F7F7FFFFFFFFFFFFFFFFFFEAEAEAEAEAEAECEC
+        ECEBEBEBEDEDEDEDEDEDEDEDEDEAEAEAE7E7E7E5E5E5F8F8F8F8F8F8E6E6E6E3
+        E3E3E0E0E0C8C8C8B3B3B39E9E9EB2B2B2E5E5E5FCFCFCFDFDFDFEFEFEFFFFFF
+        FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFFFFFFFDFDFDFFFFFFFCFCFCE5E5E5E3E3
+        E3E2E2E2E5E5E5E5E5E5E2E2E2E4E4E4E7E7E7E9E9E9EAEAEADCDCDCE7E7E7F6
+        F6F6F7F7F7F8F8F8FFFFFFFFFFFFF8F8F8EEEEEEEDEDEDE4E4E4E7E7E7EEEEEE
+        FDFDFDFFFFFFFFFFFFE9E9E9E6E6E6E4E4E4E6E6E6E7E7E7D9D9D9CCCCCCEAEA
+        EAF8F8F8F7F7F7F8F8F8F8F8F8F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFF7F7F7E7
+        E7E7E7E7E7E7E7E7D5D5D5E1E1E1EFEFEFF1F1F1F8F8F8F9F9F9FCFCFCFDFDFD
+        FFFFFFFFFFFFFCFCFCFDFDFDFFFFFFFBFBFBECECECEAEAEAE9E9E9E7E7E7E7E7
+        E7E6E6E6E4E4E4E4E4E4E9E9E9EAEAEAD6D6D6E5E5E5F9F9F9FCFCFCFFFFFFFF
+        FFFFFFFFFFFFFFFFFEFEFEEAEAEAE8E8E8E6E6E6E2E2E2DCDCDCC9C9C9ACACAC
+        C1C1C1E2E2E2F0F0F0F2F2F2F3F3F3F4F4F4F7F7F7F8F8F8FFFFFFFFFFFFEDED
+        EDEBEBEBE7E7E7E7E7E7FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6FC
+        FCFCFDFDFDF9F9F9F7F7F7F7F7F7F7F7F7F4F4F4F5F5F5F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8F8F9F9F9F8F8F8E6E6E6D0D0D0E1E1E1D4D4D4D4D4D4D3D3D3C0C0
+        C0ACACACCECECEF3F3F3F6F6F6F7F7F7FAFAFAF8F8F8FDFDFDFFFFFFFFFFFFC7
+        C7C7D7D7D7F2F2F2E9E9E9ECECECF7F7F7F3F3F3EBEBEBECECECECECECEDEDED
+        EDEDEDEDEDEDECECECECECECEAEAEAE9E9E9E9E9E9DCDCDCEAEAEAFBFBFBFBFB
+        FBF8F8F8F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF9F9F9F4F4F4F1F1F1F4F4F4F6F6F6F7F7F7F8F8F8F8F8F8F7F7F7
+        F1F1F1F3F3F3FFFFFFFFFFFFE9E9E9EAEAEAE6E6E6E7E7E7E9E9E9E8E8E8E8E8
+        E8ECECECECECECD9D9D9B4B4B4C3C3C3D5D5D5F3F3F3F8F8F8EAEAEAE9E9E9E9
+        E9E9C9C9C9D5D5D5F3F3F3F4F4F4F2F2F2EDEDEDDFDFDFE2E2E2F7F7F7F9F9F9
+        F9F9F9F8F8F8FAFAFAFBFBFBF9F9F9FDFDFDFFFFFFFFFFFFFEFEFEFFFFFFFFFF
+        FFEEEEEEECECECEAEAEAEAEAEAE8E8E8ECECECECECECD5D5D5E3E3E3F8F8F8F9
+        F9F9F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFF1F1F1F2F2F2EFEFEFECECECD5D5D5
+        D3D3D3E7E7E7F7F7F7F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBF9F9F9F8F8F8FFFF
+        FFFFFFFFE9E9E9E2E2E2E6E6E6E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9D7D7D7D7
+        D7D7EAEAEAF9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAF7F7F7F4F4F4
+        F3F3F3F3F3F3F4F4F4F7F7F7FFFFFFFFFFFFFFFFFFF8F8F8E7E7E7E7E7E7E9E9
+        E9EAEAEAEAEAEAEAEAEAE9E9E9E7E7E7E5E5E5E5E5E5E5E5E5E2E2E2DFDFDFDC
+        DCDCCACACAA3A3A3B7B7B7CCCCCCE0E0E0F9F9F9FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFEFEFEFDFDFDECECECE7E7
+        E7E6E6E6E9E9E9E9E9E9E7E7E7E8E8E8E9E9E9EAEAEAE7E7E7CACACAD9D9D9F4
+        F4F4F4F4F4F5F5F5F4F4F4F5F5F5EBEBEBECECECEDEDEDEDEDEDE0E0E0F4F4F4
+        FFFFFFFFFFFFFCFCFCECECECE7E7E7E6E6E6E9E9E9E9E9E9D9D9D9D3D3D3E6E6
+        E6F7F7F7F8F8F8F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E7E7E7E7
+        E7E7E7E7E7E7E7E7D4D4D4BBBBBBDADADAEEEEEEF5F5F5F8F8F8FAFAFAFDFDFD
+        FDFDFDFCFCFCFBFBFBFDFDFDFCFCFCFFFFFFFAFAFAEAEAEAE8E8E8E7E7E7E9E9
+        E9E6E6E6E5E5E5E7E7E7DADADAC6C6C6C6C6C6C6C6C6E9E9E9FCFCFCFFFFFFFF
+        FFFFFFFFFFFFFFFFEDEDEDE9E9E9E6E6E6E6E6E6E1E1E1DADADACCCCCCD0D0D0
+        E4E4E4F2F2F2F3F3F3F5F5F5F6F6F6F5F5F5F9F9F9F9F9F9FFFFFFFFFFFFEDED
+        EDEBEBEBE7E7E7E8E8E8EFEFEFF3F3F3FDFDFDFFFFFFFFFFFFFAFAFAFFFFFFFF
+        FFFFFFFFFFF7F7F7F7F7F7F7F7F7F6F6F6F4F4F4F6F6F6F8F8F8F7F7F7F7F7F7
+        F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7E5E5E5F4F4F4E6E6E6DDDD
+        DDDFDFDFE5E5E5F6F6F6F7F7F7F8F8F8FAFAFAFAFAFAFBFBFBFFFFFFFEFEFEB4
+        B4B4D7D7D7F8F8F8F6F6F6F9F9F9FFFFFFFFFFFFFFFFFFECECECD1D1D1DFDFDF
+        EDEDEDEDEDEDECECECECECECECECECECECECECECECE9E9E9E4E4E4F0F0F0F9F9
+        F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9EBEBEBECECECEEEEEEFF
+        FFFFFCFCFCFFFFFFFCFCFCF5F5F5F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7
+        F4F4F4F3F3F3FFFFFFF7F7F7E9E9E9E7E7E7E5E5E5E6E6E6E7E7E7E6E6E6E7E7
+        E7E9E9E9E7E7E7C4C4C4C0C0C0E5E5E5F5F5F5FFFFFFE8E8E8D9D9D9DADADAC9
+        C9C9B5B5B5D3D3D3F2F2F2F3F3F3F0F0F0F0F0F0F4F4F4F6F6F6F8F8F8FCFCFC
+        FBFBFBF9F9F9FBFBFBFBFBFBF9F9F9FDFDFDFFFFFFFFFFFFECECECFBFBFBFDFD
+        FDF0F0F0EDEDEDEEEEEEEBEBEBE9E9E9EAEAEAE9E9E9BFBFBFD0D0D0F8F8F8F9
+        F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEEEEEEEDEDEDD7D7D7C0C0C0
+        C2C2C2E6E6E6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAF9F9F9F8F8F8FFFF
+        FFFCFCFCE6E6E6E2E2E2E5E5E5D7D7D7C3C3C3C1C1C1C1C1C1C1C1C1C2C2C2C8
+        C8C8EBEBEBFAFAFAFCFCFCFFFFFFFEFEFEF9F9F9F6F6F6F5F5F5F4F4F4F4F4F4
+        F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFF5F5F5E7E7E7E6E6E6E7E7E7E8E8
+        E8E8E8E8E8E8E8E8E8E8E6E6E6E1E1E1E2E2E2E3E3E3E1E1E1DFDFDFE1E1E1E2
+        E2E2BFBFBFBFBFBFE4E4E4F1F1F1F4F4F4FBFBFBFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFDFDFDFDFDFDFBFBFBFAFAFAFBFBFBFCFCFCFEFEFEFEFEFEF7F7F7E9E9
+        E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E8E8E2E2E2CCCCCCDCDCDCF2
+        F2F2F3F3F3F4F4F4F4F4F4F3F3F3F2F2F2EDEDEDEDEDEDEDEDEDD7D7D7F9F9F9
+        FFFFFFFFFFFFEEEEEEEBEBEBE8E8E8E8E8E8E9E9E9E9E9E9E7E7E7D5D5D5E4E4
+        E4F7F7F7F7F7F7F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFF9F9F9E9E9E9E7E7E7E7
+        E7E7E7E7E7D5D5D5A6A6A6B1B1B1DADADAF1F1F1F4F4F4F7F7F7F9F9F9FBFBFB
+        F9F9F9F8F8F8FCFCFCFDFDFDFAFAFAFFFFFFFBFBFBE9E9E9E6E6E6E6E6E6E7E7
+        E7E5E5E5E9E9E9EDEDEDDEDEDEEAEAEAF9F9F9E7E7E7E9E9E9FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFEDEDEDE8E8E8E7E7E7E7E7E7DFDFDFDEDEDEE1E1E1E7E7E7
+        FFFFFFFFFFFFF8F8F8F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFECEC
+        ECEBEBEBE9E9E9E9E9E9DADADADEDEDEEDEDEDEDEDEDEAEAEAE9E9E9FCFCFCFF
+        FFFFFDFDFDFFFFFFFFFFFFF7F7F7F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFF8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F7F7F7FFFFFFFFFFFFF0F0
+        F0E9E9E9EAEAEAF7F7F7F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFEEEEEEC1
+        C1C1E6E6E6F9F9F9F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFF0F0F0DEDEDEEBEBEB
+        EDEDEDE9E9E9EAEAEAECECECECECECECECECECECECECECECE4E4E4F4F4F4FFFF
+        FFFFFFFFFFFFFFFFFFFFFBFBFBECECECE8E8E8D9D9D9CCCCCCD0D0D0D4D4D4FF
+        FFFFECECECF7F7F7FAFAFAFFFFFFFFFFFFFBFBFBF8F8F8F8F8F8F7F7F7F5F5F5
+        F3F3F3F1F1F1F4F4F4FFFFFFF8F8F8CFCFCFB5B5B5B7B7B7CFCFCFE6E6E6E7E7
+        E7E7E7E7E6E6E6C4C4C4D4D4D4F5F5F5F7F7F7F7F7F7E6E6E6E5E5E5C6C6C6C0
+        C0C0D0D0D0E1E1E1F4F4F4F3F3F3EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFBFBFBFAFAFAFBFBFBFFFFFFFFFFFFFFFFFFEBEBEBEDEDEDF2F2
+        F2F4F4F4F1F1F1EEEEEEEAEAEAE6E6E6E7E7E7E7E7E7BDBDBDD0D0D0F9F9F9FB
+        FBFBFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEAEAEAEAEAEAEAEAEAC1C1C1B7B7B7
+        D1D1D1E6E6E6F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FBFBFBF9F9F9F8F8F8F8F8
+        F8F8F8F8D9D9D9C5C5C5C5C5C5B0B0B0BCBCBCD0D0D0D1D1D1D3D3D3D4D4D4D7
+        D7D7E8E8E8F7F7F7F8F8F8FFFFFFFFFFFFF6F6F6F5F5F5F5F5F5F4F4F4F4F4F4
+        F3F3F3F3F3F3F3F3F3FFFFFFFFFFFFF4F4F4E6E6E6E7E7E7E7E7E7E8E8E8E9E9
+        E9E9E9E9E9E9E9E6E6E6D0D0D0D1D1D1E6E6E6E1E1E1E1E1E1E5E5E5E7E7E7D8
+        D8D8B3B3B3D5D5D5F6F6F6F3F3F3F7F7F7FBFBFBFBFBFBFBFBFBFBFBFBFBFBFB
+        FBFBFBFAFAFAFAFAFAFBFBFBFDFDFDFCFCFCFDFDFDFDFDFDFAFAFAF9F9F9FFFF
+        FFF8F8F8EDEDEDEDEDEDEBEBEBEAEAEAEAEAEAE5E5E5E4E4E4D2D2D2DFDFDFF2
+        F2F2F3F3F3F4F4F4F5F5F5F4F4F4F5F5F5F8F8F8E3E3E3D8D8D8CDCDCDF1F1F1
+        F5F5F5E4E4E4EBEBEBEAEAEAE8E8E8E9E9E9E9E9E9E9E9E9E9E9E9CACACADCDC
+        DCF9F9F9F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFEDEDEDECECECE9E9E9E7E7E7E7
+        E7E7E7E7E7D1D1D1C6C6C6DCDCDCF2F2F2F5F5F5F7F7F7F8F8F8F9F9F9FBFBFB
+        F9F9F9F8F8F8FCFCFCFCFCFCF8F8F8F7F7F7FFFFFFF8F8F8E8E8E8E8E8E8E8E8
+        E8E8E8E8ECECECEFEFEFF2F2F2FFFFFFFFFFFFFCFCFCF7F7F7FCFCFCFEFEFEFD
+        FDFDFFFFFFFFFFFFEAEAEAE7E7E7E7E7E7E7E7E7DFDFDFDFDFDFE4E4E4E9E9E9
+        FCFCFCEBEBEBE9E9E9F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFCFCFCEAEA
+        EAEAEAEAE9E9E9E9E9E9DBDBDBFFFFFFFFFFFFE7E7E7E6E6E6E7E7E7E9E9E9EA
+        EAEAEAEAEAF9F9F9EAEAEAE7E7E7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF
+        FCFCFCF8F8F8F8F8F8F8F8F8F8F8F8FAFAFAF8F8F8FFFFFFFFFFFFFFFFFFE3E3
+        E3D9D9D9E9E9E9F8F8F8F9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDD5
+        D5D5F6F6F6FCFCFCFFFFFFFFFFFFFFFFFFFDFDFDF2F2F2DCDCDCC9C9C9EAEAEA
+        F8F8F8DEDEDED3D3D3E1E1E1EEEEEEEEEEEEECECECECECECEAEAEAF4F4F4FFFF
+        FFFFFFFFFDFDFDF4F4F4EEEEEEEAEAEAD8D8D8BDBDBDCBCBCBD8D8D8DEDEDEFF
+        FFFFEDEDEDEDEDEDEFEFEFFCFCFCFCFCFCFFFFFFFFFFFFF8F8F8F5F5F5F2F2F2
+        F4F4F4F4F4F4FFFFFFFFFFFFF8F8F89D9D9DB2B2B2CACACAE0E0E0D2D2D2D2D2
+        D2E7E7E7D4D4D4AEAEAED2D2D2F5F5F5F7F7F7F7F7F7F6F6F6F4F4F4E4E4E4E2
+        E2E2EEEEEEF2F2F2F3F3F3EEEEEEF0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFEDEDEDECECECFCFCFCFCFCFCFFFFFFFFFFFFFDFDFDEDEDEDEDEDEDF4F4
+        F4F3F3F3EDEDEDEAEAEAE7E7E7E3E3E3E4E4E4D3D3D3A5A5A5CECECEF8F8F8FD
+        FDFDFFFFFFFFFFFFFFFFFFEEEEEEEAEAEAEAEAEAEAEAEAEAEAEABDBDBDC8C8C8
+        F6F6F6F7F7F7F5F5F5F5F5F5F7F7F7F8F8F8F9F9F9F9F9F9F8F8F8F8F8F8F9F9
+        F9FAFAFAEAEAEAD5D5D5D3D3D3D2D2D2E2E2E2F5F5F5F8F8F8F9F9F9FAFAFAF9
+        F9F9F9F9F9F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F5F5F5F5F5F5
+        F4F4F4F5F5F5FFFFFFFFFFFFFFFFFFE6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E9E9
+        E9E9E9E9E7E7E7E2E2E2BFBFBFD4D4D4DCDCDCC7C7C7D8D8D8E9E9E9E7E7E7D9
+        D9D9D5D5D5E6E6E6F5F5F5F5F5F5F6F6F6F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9
+        F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBF8F8F8FAFAFAFFFF
+        FFF8F8F8EBEBEBECECECE8E8E8E6E6E6E6E6E6E5E5E5E7E7E7E1E1E1E9E9E9F0
+        F0F0F1F1F1F3F3F3F3F3F3F2F2F2F6F6F6F9F9F9EFEFEFE7E7E7E4E4E4EEEEEE
+        EEEEEEECECECE2E2E2DFDFDFEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9CFCFCFD7D7
+        D7F1F1F1F5F5F5F8F8F8FFFFFFFFFFFFFBFBFBECECECEBEBEBE9E9E9E5E5E5E3
+        E3E3E3E3E3DFDFDFD1D1D1E4E4E4F5F5F5F6F6F6F9F9F9FBFBFBFBFBFBFDFDFD
+        FDFDFDFCFCFCFDFDFDFCFCFCF8F8F8F7F7F7FFFFFFFFFFFFEBEBEBEBEBEBEBEB
+        EBECECECEEEEEEEEEEEEF0F0F0EEEEEEECECECD5D5D5C4C4C4E6E6E6F4F4F4F4
+        F4F4FFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E6E6E6DFDFDFE0E0E0E9E9E9ECECEC
+        EDEDEDDCDCDCF9F9F9FFFFFFFBFBFBFBFBFBFFFFFFFFFFFFEBEBEBECECECEBEB
+        EBEAEAEAD6D6D6C3C3C3C8C8C8DCDCDCEAEAEAE7E7E7E7E7E7E7E7E7E6E6E6E7
+        E7E7E7E7E7DADADAB7B7B7D3D3D3F5F5F5F6F6F6FFFFFFFFFFFFFCFCFCEDEDED
+        EDEDEDDFDFDFEDEDEDFAFAFAF8F8F8FAFAFAFFFFFFFFFFFFFFFFFFFBFBFBE9E9
+        E9E6E6E6E3E3E3F1F1F1FCFCFCFDFDFDFFFFFFFFFFFFFBFBFBE7E7E7CECECED6
+        D6D6F6F6F6FFFFFFFFFFFFFFFFFFFBFBFBE7E7E7E8E8E8BCBCBCBCBCBCEAEAEA
+        F8F8F8EBEBEBE0E0E0FAFAFAFFFFFFEFEFEFEDEDEDEEEEEEECECECEDEDEDF3F3
+        F3F4F4F4F3F3F3EEEEEEEBEBEBD7D7D7B6B6B6C4C4C4E1E1E1EDEDEDEEEEEEFF
+        FFFFEAEAEAECECECECECECEDEDEDEDEDEDF8F8F8F8F8F8FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFE9E9E9CDCDCDFAFAFAFFFFFFF8F8F8E7E7E7E4E4
+        E4D2D2D2A8A8A8BCBCBCE1E1E1F4F4F4F7F7F7F6F6F6F4F4F4F4F4F4F5F5F5F5
+        F5F5F3F3F3F4F4F4F5F5F5F3F3F3F5F5F5FFFFFFFFFFFFFEFEFEFCFCFCEAEAEA
+        E7E7E7CCCCCCDBDBDBF9F9F9FCFCFCFEFEFEFCFCFCFFFFFFFCFCFCF1F1F1F6F6
+        F6F0F0F0EAEAEAE9E9E9E6E6E6E2E2E2CCCCCC9D9D9DAFAFAFE1E1E1F9F9F9FF
+        FFFFFFFFFFFFFFFFEFEFEFEAEAEAEAEAEAEAEAEAEAEAEAD4D4D49F9F9FCACACA
+        F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9
+        F9F9F9F9F9F9F9F7F7F7F5F5F5F5F5F5F4F4F4F6F6F6F8F8F8F9F9F9F9F9F9F9
+        F9F9F8F8F8F9F9F9F9F9F9FFFFFFFFFFFFFAFAFAFBFBFBFFFFFFFFFFFFF5F5F5
+        F5F5F5F6F6F6FFFFFFFFFFFFF1F1F1D1D1D1BFBFBFBCBCBCBABABABABABABBBB
+        BBBCBCBCBBBBBBBABABAACACACD5D5D5E5E5E5D2D2D2E3E3E3E9E9E9DADADADC
+        DCDCDCDCDCE6E6E6F6F6F6F7F7F7F6F6F6F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9
+        FAFAFAFDFDFDFCFCFCFBFBFBFBFBFBFAFAFAF9F9F9F8F8F8F8F8F8F9F9F9F9F9
+        F9F1F1F1E9E9E9EEEEEEECECECECECECEBEBEBEAEAEAECECECEDEDEDE1E1E1E7
+        E7E7F2F2F2F3F3F3F3F3F3F5F5F5F8F8F8FBFBFBFDFDFDFCFCFCF7F7F7F5F5F5
+        F4F4F4F4F4F4E8E8E8E7E7E7ECECECEAEAEAE9E9E9EAEAEAEAEAEADCDCDCECEC
+        ECF6F6F6F1F1F1F4F4F4FFFFFFECECECDBDBDBEBEBEBE9E9E9E8E8E8E7E7E7E4
+        E4E4E4E4E4E4E4E4D6D6D6F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FEFEFEFCFCFCFCFCFCFAFAFAF7F7F7F7F7F7FFFFFFFFFFFFEDEDEDECECECEDED
+        EDEDEDEDEEEEEEEFEFEFEFEFEFECECECD6D6D6AEAEAEC0C0C0E4E4E4F3F3F3F4
+        F4F4FFFFFFFAFAFAE8E8E8E7E7E7E7E7E7E4E4E4DFDFDFE4E4E4ECECECECECEC
+        EBEBEBECECECFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBEAEAEAE9E9
+        E9D5D5D5A8A8A8BBBBBBD3D3D3D3D3D3E4E4E4E7E7E7E6E6E6E6E6E6E6E6E6E7
+        E7E7E7E7E7CBCBCBC4C4C4E4E4E4F5F5F5F5F5F5FFFFFFFFFFFFEDEDEDEAEAEA
+        EDEDEDD0D0D0DDDDDDF9F9F9FAFAFAFCFCFCFFFFFFFFFFFFFCFCFCEBEBEBE6E6
+        E6D3D3D3C8C8C8E5E5E5FAFAFAFAFAFAFFFFFFEFEFEFCBCBCBB6B6B6C6C6C6E3
+        E3E3F4F4F4FEFEFEFFFFFFFFFFFFE7E7E7E7E7E7E7E7E7B9B9B9CCCCCCF8F8F8
+        F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFECECECECECECECECECEDEDEDEFEFEFF1F1
+        F1F1F1F1EEEEEEECECECD8D8D8AFAFAFBFBFBFDFDFDFEDEDEDF2F2F2F3F3F3FF
+        FFFFEAEAEAECECECECECECEDEDEDECECECEBEBEBEAEAEAFAFAFAFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE8E8E8FFFFFFFFFFFFFAFAFAFBFBFBF9F9
+        F9E4E4E4D1D1D1E4E4E4F4F4F4F7F7F7F8F8F8F5F5F5F5F5F5F5F5F5F5F5F5F5
+        F5F5F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFEDEDEDEAEAEAEAEAEA
+        DADADABCBCBCD5D5D5F5F5F5FCFCFCFEFEFEFAFAFAFFFFFFFBFBFBF2F2F2F3F3
+        F3EDEDEDEAEAEAE8E8E8E5E5E5E2E2E2B1B1B1B0B0B0E1E1E1F7F7F7FCFCFCFF
+        FFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEAD4D4D4A1A1A1B4B4B4E4E4E4
+        FAFAFAF9F9F9F8F8F8F8F8F8F7F7F7F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FBFB
+        FBFAFAFAF9F9F9F7F7F7F5F5F5F7F7F7F6F6F6F8F8F8F9F9F9F9F9F9F9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFE9E9E9E9E9E9FBFBFBF9F9F9F4F4F4
+        F3F3F3F2F2F2FCFCFCDEDEDEBCBCBCA8A8A8B7B7B7C6C6C6C6C6C6C9C9C9CCCC
+        CCCECECECDCDCDCECECED1D1D1E5E5E5F4F4F4F2F2F2F4F4F4F4F4F4CCCCCCD7
+        D7D7CACACAD8D8D8F5F5F5F9F9F9F9F9F9F8F8F8FCFCFCFDFDFDFBFBFBF9F9F9
+        FBFBFBFDFDFDFBFBFBF9F9F9FBFBFBF9F9F9F8F8F8F9F9F9F9F9F9F8F8F8F7F7
+        F7F3F3F3F6F6F6DFDFDFDADADAE7E7E7EAEAEAEDEDEDEDEDEDEDEDEDE4E4E4F6
+        F6F6FFFFFFF5F5F5F8F8F8FBFBFBFCFCFCFBFBFBFBFBFBF7F7F7F5F5F5F5F5F5
+        F4F4F4F4F4F4F3F3F3F3F3F3FDFDFDF7F7F7ECECECECECECEBEBEBEBEBEBF3F3
+        F3E1E1E1E2E2E2F4F4F4F7F7F7E6E6E6F9F9F9FCFCFCE9E9E9E9E9E9E9E9E9E8
+        E8E8E7E7E7E8E8E8E6E6E6F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF8F8F8F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF0F0F0EDEDEDEDED
+        EDEEEEEEF0F0F0EEEEEEF0F0F0ECECECC1C1C1B8B8B8DFDFDFF0F0F0F0F0F0F2
+        F2F2F5F5F5FFFFFFF7F7F7E7E7E7E7E7E7E3E3E3E2E2E2E7E7E7EAEAEAEDEDED
+        EBEBEBECECECF3F3F3F9F9F9FFFFFFFFFFFFFFFFFFFDFDFDEAEAEAEAEAEAE9E9
+        E9BDBDBDB7B7B7E3E3E3F8F8F8F9F9F9F9F9F9FFFFFFFAFAFAE7E7E7E8E8E8E6
+        E6E6E6E6E6CACACAD5D5D5F1F1F1F5F5F5F7F7F7FFFFFFEDEDEDCBCBCBDADADA
+        DFDFDFC0C0C0DBDBDBF7F7F7F8F8F8FAFAFAFFFFFFFCFCFCCACACAC8C8C8C3C3
+        C3BABABAD0D0D0ECECECF7F7F7F7F7F7F7F7F7EAEAEAD9D9D9D5D5D5E9E9E9F5
+        F5F5F7F7F7FDFDFDFFFFFFFFFFFFE7E7E7E7E7E7E7E7E7BBBBBBCDCDCDF8F8F8
+        FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEAEAEAEAEAEAEBEBEBECECECEEEEEEEEEE
+        EEEDEDEDECECECEBEBEBC6C6C6BEBEBEE4E4E4F4F4F4F8F8F8FCFCFCFDFDFDFF
+        FFFFEDEDEDEFEFEFECECECEBEBEBEAEAEAE8E8E8D9D9D9DBDBDBEEEEEEF1F1F1
+        F0F0F0EEEEEEF0F0F0EEEEEEEAEAEAE7E7E7FFFFFFFFFFFFD7D7D7E6E6E6F9F9
+        F9F7F7F7F5F5F5F8F8F8FFFFFFFFFFFFFFFFFFF5F5F5F6F6F6F6F6F6F5F5F5F7
+        F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7FFFFFFFEFEFEECECECEAEAEAE9E9E9
+        CACACAC8C8C8E4E4E4F7F7F7FDFDFDFCFCFCF9F9F9F7F7F7F7F7F7F0F0F0EEEE
+        EEEAEAEAE9E9E9E6E6E6E4E4E4E2E2E2B1B1B1CCCCCCFBFBFBFCFCFCFDFDFDFF
+        FFFFFFFFFFF1F1F1EAEAEAEAEAEAEAEAEAEAEAEABEBEBEB7B7B7E4E4E4F9F9F9
+        FAFAFAF9F9F9F9F9F9F9F9F9F8F8F8F8F8F8FAFAFAFCFCFCFBFBFBFBFBFBFBFB
+        FBF9F9F9F8F8F8F5F5F5F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F8F8F8F7
+        F7F7F7F7F7F7F7F7F6F6F6FFFFFFFCFCFCEDEDEDE8E8E8E9E9E9E8E8E8D2D2D2
+        E1E1E1F4F4F4F1F1F1E2E2E2D2D2D2D1D1D1E4E4E4F0F0F0F1F1F1F5F5F5F7F7
+        F7F7F7F7F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7E7E7E7E6
+        E6E6E6E6E6E7E7E7F5F5F5F8F8F8F8F8F8FBFBFBFFFFFFFEFEFEFAFAFAFBFBFB
+        FDFDFDFCFCFCFAFAFAFBFBFBFAFAFAF9F9F9FAFAFAFCFCFCFAFAFAF9F9F9F9F9
+        F9F9F9F9F8F8F8E9E9E9E5E5E5D9D9D9DFDFDFEDEDEDEBEBEBECECECEDEDEDF7
+        F7F7E8E8E8EAEAEAF9F9F9F9F9F9FCFCFCFDFDFDFBFBFBFBFBFBF5F5F5F0F0F0
+        F0F0F0F2F2F2F4F4F4F5F5F5FFFFFFFFFFFFF0F0F0EEEEEEEDEDEDEBEBEBE9E9
+        E9C6C6C6D3D3D3F5F5F5F9F9F9F8F8F8FFFFFFFFFFFFEAEAEAEAEAEAEAEAEAE8
+        E8E8E7E7E7E9E9E9E7E7E7EFEFEFF3F3F3F0F0F0EFEFEFEBEBEBE9E9E9E8E8E8
+        F9F9F9E4E4E4DEDEDEF4F4F4F7F7F7F7F7F7FFFFFFFFFFFFF0F0F0EEEEEEEEEE
+        EEEFEFEFEFEFEFEEEEEEEFEFEFEAEAEAB7B7B7C8C8C8F1F1F1F1F1F1F1F1F1F3
+        F3F3F6F6F6FFFFFFFFFFFFE5E5E5E3E3E3E1E1E1E5E5E5E9E9E9EDEDEDEFEFEF
+        EEEEEEF1F1F1FCFCFCFCFCFCF7F7F7F0F0F0EDEDEDEEEEEEEDEDEDEDEDEDEDED
+        EDBFBFBFCFCFCFF9F9F9FCFCFCFBFBFBFAFAFAFFFFFFEDEDEDD8D8D8E8E8E8D7
+        D7D7C6C6C6B9B9B9D5D5D5F1F1F1F4F4F4F7F7F7F7F7F7E7E7E7D9D9D9E7E7E7
+        CFCFCFCCCCCCE9E9E9F7F7F7F7F7F7F7F7F7FFFFFFDCDCDCC6C6C6D6D6D6D8D8
+        D8DEDEDEEDEDEDF7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F2F2F2F2F2F2F5
+        F5F5F7F7F7F9F9F9FFFFFFF4F4F4D0D0D0C0C0C0BCBCBCA0A0A0CCCCCCF7F7F7
+        FFFFFFFFFFFFFFFFFFFCFCFCE9E9E9EAEAEAE9E9E9EAEAEAEBEBEBECECECECEC
+        ECEBEBEBEBEBEBEBEBEBC7C7C7D1D1D1F6F6F6F9F9F9FBFBFBFDFDFDFDFDFDFF
+        FFFFEDEDEDEFEFEFEEEEEEEAEAEADBDBDBCCCCCCBCBCBCD9D9D9EFEFEFF0F0F0
+        EDEDEDEAEAEAEAEAEAEAEAEAE8E8E8E8E8E8EAEAEAE6E6E6D3D3D3E6E6E6F8F8
+        F8F6F6F6F7F7F7F8F8F8FFFFFFFFFFFFFAFAFAF3F3F3F4F4F4F5F5F5F5F5F5F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FCFCFCFDFDFDE0E0E0D0D0D0CECECE
+        BCBCBCD8D8D8F5F5F5F5F5F5F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8EEEE
+        EEEBEBEBE7E7E7E4E4E4E2E2E2CACACA989898CDCDCDFCFCFCFDFDFDFEFEFEFF
+        FFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAD8D8D8A9A9A9CECECEF7F7F7F9F9F9
+        FAFAFAFAFAFAF9F9F9FAFAFAFBFBFBFBFBFBFBFBFBFCFCFCFBFBFBFAFAFAF8F8
+        F8F7F7F7F5F5F5F4F4F4F5F5F5F7F7F7F7F7F7F7F7F7F6F6F6F7F7F7F7F7F7F6
+        F6F6F6F6F6F5F5F5F7F7F7F6F6F6FFFFFFFCFCFCE9E9E9E9E9E9E6E6E6BDBDBD
+        D0D0D0F5F5F5F3F3F3F0F0F0F3F3F3F7F7F7F8F8F8F5F5F5F4F4F4F7F7F7F8F8
+        F8F8F8F8F5F5F5F7F7F7F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F7
+        F7F7F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F8F8F8FCFCFCF5F5F5F5F5F5FAFAFA
+        FCFCFCFBFBFBFBFBFBFBFBFBFCFCFCFEFEFEFEFEFEFDFDFDFFFFFFFFFFFFFFFF
+        FFFFFFFFF8F8F8FAFAFAF8F8F8EAEAEAECECECEDEDEDEBEBEBEBEBEBEBEBEBE9
+        E9E9DEDEDEFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F2F2F2EDEDED
+        F1F1F1F3F3F3F3F3F3F4F4F4FFFFFFFFFFFFF3F3F3EEEEEEEBEBEBE9E9E9E8E8
+        E8BFBFBFCECECEF5F5F5F9F9F9F9F9F9FFFFFFFFFFFFEBEBEBE9E9E9E7E7E7E6
+        E6E6E6E6E6E9E9E9ECECECF1F1F1EEEEEEE8E8E8E7E7E7E7E7E7E7E7E7E6E6E6
+        E4E4E4B3B3B3C7C7C7F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFF0F0F0F0F0F0EEEE
+        EEEDEDEDF0F0F0EDEDEDECECECD1D1D19E9E9ECDCDCDF7F7F7F7F7F7F5F5F5F6
+        F6F6F7F7F7FFFFFFF9F9F9E6E6E6E3E3E3E4E4E4E9E9E9EBEBEBEDEDEDEEEEEE
+        EFEFEFF1F1F1F5F5F5F1F1F1EAEAEAE9E9E9EAEAEAEDEDEDEEEEEEEEEEEEEDED
+        EDBCBCBCCECECEFAFAFAFEFEFEFCFCFCF9F9F9F8F8F8E9E9E9E6E6E6D5D5D5B2
+        B2B2BFBFBFD3D3D3E5E5E5F2F2F2F5F5F5F7F7F7F6F6F6F5F5F5F7F7F7F6F6F6
+        E8E8E8E9E9E9F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7E8E8E8E8E8E8F7F7F7FBFB
+        FBFAFAFAF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F5F5F5F3F3F3F1F1F1F3
+        F3F3F1F1F1EEEEEEEEEEEEEBEBEBC1C1C1BBBBBBC5C5C5C7C7C7E1E1E1F7F7F7
+        FFFFFFFCFCFCE8E8E8E8E8E8E8E8E8E4E4E4E7E7E7EAEAEAEBEBEBEBEBEBEBEB
+        EBEBEBEBEBEBEBEBEBEBC7C7C7D0D0D0F5F5F5F9F9F9F9F9F9F9F9F9F9F9F9FF
+        FFFFEEEEEEF0F0F0EDEDEDDEDEDEC1C1C1CCCCCCDADADAE7E7E7F7F7F7EDEDED
+        EBEBEBE8E8E8E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6D4D4D4E2E2
+        E2F5F5F5F7F7F7F9F9F9F7F7F7FFFFFFF9F9F9CECECEDFDFDFF4F4F4F6F6F6F7
+        F7F7F7F7F7F9F9F9F8F8F8F9F9F9F8F8F8FCFCFCFEFEFEECECECD9D9D9D8D8D8
+        D5D5D5E6E6E6F5F5F5F4F4F4F3F3F3F4F4F4F6F6F6F5F5F5F6F6F6F6F6F6F8F8
+        F8D7D7D7CFCFCFDFDFDFC8C8C89C9C9CAFAFAFE2E2E2FCFCFCFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFEFEFEFEDEDEDEAEAEAD8D8D8CDCDCDE2E2E2F9F9F9FAFAFA
+        FBFBFBFBFBFBFBFBFBFCFCFCFBFBFBFBFBFBFCFCFCFEFEFEFDFDFDFAFAFAF8F8
+        F8F7F7F7F5F5F5F5F5F5F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5F3F3F3F1
+        F1F1F1F1F1F5F5F5F5F5F5F4F4F4FFFFFFE9E9E9C1C1C1D4D4D4E6E6E6BEBEBE
+        D0D0D0F1F1F1ECECECEEEEEEF4F4F4F7F7F7F7F7F7F4F4F4F5F5F5F9F9F9F9F9
+        F9F8F8F8F7F7F7FAFAFAF8F8F8F5F5F5F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F7
+        F7F7F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F1F1F1F3F3F3F8F8F8
+        F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFCFCFCFFFFFFFFFFFFF9F9F9F7F7F7F7F7F7FFFFFFFBFBFBEBEBEBEBEBEBEB
+        EBEBEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF5F5F5F5F5F5EEEEEEF0F0F0
+        F7F7F7F7F7F7F5F5F5F7F7F7FFFFFFFEFEFEF5F5F5EDEDEDE9E9E9E9E9E9E7E7
+        E7D1D1D1EEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECE7E7E7E5E5E5E5
+        E5E5E5E5E5E9E9E9E0E0E0E1E1E1EAEAEAE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7
+        D1D1D19C9C9CCACACAF8F8F8F7F7F7F8F8F8FFFFFFFFFFFFEEEEEEEDEDEDECEC
+        ECEDEDEDEDEDEDEAEAEAE6E6E6B7B7B7B5B5B5E4E4E4F8F8F8F8F8F8F7F7F7F7
+        F7F7F7F7F7F8F8F8FFFFFFF8F8F8EAEAEAEAEAEAECECECEBEBEBECECECEDEDED
+        ECECECEBEBEBEAEAEAE9E9E9E7E7E7E6E6E6E7E7E7E9E9E9EBEBEBECECECEDED
+        EDD5D5D5E8E8E8FEFEFEFFFFFFFCFCFCF8F8F8F7F7F7F9F9F9F8F8F8E3E3E3D0
+        D0D0E0E0E0F0F0F0F3F3F3F2F2F2F1F1F1F5F5F5F6F6F6F6F6F6F7F7F7F5F5F5
+        F6F6F6F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FBFBFBFFFF
+        FFFBFBFBF7F7F7F8F8F8F7F7F7F7F7F7F5F5F5F1F1F1F3F3F3F4F4F4F4F4F4F5
+        F5F5F3F3F3F1F1F1F0F0F0EEEEEEE2E2E2E2E2E2EDEDEDF3F3F3F8F8F8F8F8F8
+        F7F7F7FFFFFFFCFCFCE8E8E8E7E7E7E2E2E2E4E4E4E9E9E9EAEAEAEBEBEBEBEB
+        EBEBEBEBEBEBEBECECECDBDBDBE5E5E5F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9FF
+        FFFFF0F0F0EFEFEFEDEDEDD2D2D2CFCFCFEAEAEAF6F6F6F4F4F4F5F5F5F7F7F7
+        E8E8E8E5E5E5E7E7E7EBEBEBEAEAEAE8E8E8E8E8E8E8E8E8E4E4E4BABABACECE
+        CEF7F7F7F9F9F9F9F9F9FAFAFAFFFFFFF7F7F79D9D9DCACACAF4F4F4F5F5F5F5
+        F5F5F7F7F7FAFAFAF9F9F9F9F9F9F9F9F9FCFCFCFDFDFDF7F7F7F1F1F1F1F1F1
+        EFEFEFF2F2F2F5F5F5F4F4F4F1F1F1F2F2F2F4F4F4F5F5F5F6F6F6F5F5F5F5F5
+        F5E1E1E1DCDCDCCCCCCCA0A0A0B6B6B6DFDFDFF8F8F8FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1EEEEEEEAEAEAEAEAEAEAEAEAD3D3D3E6E6E6FBFBFBFCFCFC
+        FEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFDFDFDFFFFFFFEFEFEFEFEFEFCFCFCF8F8
+        F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F1F1F1F2
+        F2F2F4F4F4F7F7F7F6F6F6F6F6F6F5F5F5E4E4E4D1D1D1E2E2E2E7E7E7BFBFBF
+        D0D0D0F3F3F3F1F1F1F5F5F5F7F7F7F8F8F8F6F6F6F6F6F6F8F8F8FCFCFCFBFB
+        FBF9F9F9F9F9F9FAFAFAF9F9F9F6F6F6F5F5F5F6F6F6F5F5F5F5F5F5F6F6F6F6
+        F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F3F3F3F5F5F5FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE9E9
+        E9E9E9E9FDFDFDFDFDFDF7F7F7F7F7F7F7F7F7FFFFFFFFFFFFE9E9E9EBEBEBEB
+        EBEBEDEDEDF1F1F1F0F0F0EBEBEBEAEAEAEAEAEAEAEAEAF2F2F2ECECECF1F1F1
+        F7F7F7F7F7F7F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFECECECEBEBEBEAEAEAEAEA
+        EAE7E7E7F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDECECECEAEAEAE9E9E9E9
+        E9E9E9E9E9EAEAEAD3D3D3E7E7E7F5F5F5E8E8E8E8E8E8E8E8E8E7E7E7E6E6E6
+        B9B9B9ABABABDCDCDCF8F8F8F9F9F9FBFBFBFFFFFFFFFFFFEAEAEAEBEBEBEBEB
+        EBEBEBEBE8E8E8E4E4E4CECECE9D9D9DC9C9C9F5F5F5F8F8F8F7F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7FFFFFFF8F8F8EAEAEAEAEAEAECECECEAEAEAE9E9E9EAEAEA
+        E9E9E9E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAECEC
+        ECEEEEEEEEEEEEFEFEFEFCFCFCFBFBFBF8F8F8F8F8F8FAFAFAF9F9F9F5F5F5F4
+        F4F4F4F4F4F4F4F4F3F3F3EEEEEEF1F1F1F5F5F5F6F6F6F6F6F6F7F7F7F6F6F6
+        F7F7F7F8F8F8F8F8F8F6F6F6F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFDFDFDFDFDFDFAFAFAF8F8F8F4F4F4F2F2F2F4F4F4F6F6F6F5F5F5F7
+        F7F7F5F5F5F4F4F4F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F6F6F6F9F9F9F7F7F7
+        F7F7F7FFFFFFFFFFFFE7E7E7E4E4E4E1E1E1E4E4E4E8E8E8EAEAEAEBEBEBEBEB
+        EBEBEBEBECECECEEEEEEEFEFEFEEEEEEFBFBFBFCFCFCFBFBFBF9F9F9F9F9F9FF
+        FFFFEEEEEEEDEDEDDFDFDFC3C3C3DDDDDDF6F6F6F4F4F4F5F5F5F7F7F7F7F7F7
+        FFFFFFF7F7F7E9E9E9EBEBEBEAEAEAE8E8E8E9E9E9E9E9E9E6E6E6B7B7B7CCCC
+        CCF8F8F8F9F9F9FCFCFCFCFCFCFFFFFFD1D1D1B2B2B2E0E0E0F5F5F5F4F4F4F6
+        F6F6F7F7F7F9F9F9F8F8F8F9F9F9F9F9F9FBFBFBFBFBFBF5F5F5F2F2F2F2F2F2
+        F1F1F1F3F3F3F5F5F5F3F3F3EFEFEFF1F1F1F5F5F5F7F7F7F6F6F6F4F4F4F3F3
+        F3F3F3F3F3F3F3E2E2E2D1D1D1E5E5E5F5F5F5FDFDFDFFFFFFFFFFFFFFFFFFFF
+        FFFFF0F0F0EDEDEDE7E7E7E7E7E7E7E7E7E7E7E7C2C2C2E9E9E9FFFFFFFFFFFF
+        FEFEFEFEFEFEFEFEFEFBFBFBFCFCFCFDFDFDFDFDFDFBFBFBFCFCFCFBFBFBF9F9
+        F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F3F3F3F1F1F1F7
+        F7F7FAFAFAFBFBFBFBFBFBF9F9F9F8F8F8F7F7F7F6F6F6F7F7F7F5F5F5BFBFBF
+        D0D0D0FFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F7F7F7F8F8F8FCFCFCFDFDFDFDFD
+        FDFCFCFCFAFAFAFBFBFBFBFBFBF6F6F6F5F5F5F5F5F5F4F4F4F3F3F3F5F5F5F8
+        F8F8F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F3F3F3F7F7F7FFFFFF
+        FFFFFFFFFFFFFFFFFFEDEDEDEEEEEEF1F1F1F4F4F4EEEEEEE9E9E9E9E9E9E9E9
+        E9E9E9E9E7E7E7E6E6E6E7E7E7F7F7F7FAFAFAFFFFFFFFFFFFECECECECECECEA
+        EAEAEEEEEEF3F3F3F0F0F0EAEAEAEAEAEAEAEAEAE9E9E9E5E5E5F1F1F1F4F4F4
+        F7F7F7FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFCFCFCEAEAEAEBEBEBE9E9E9E6E6
+        E6E2E2E2DADADAE1E1E1EDEDEDEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECDF
+        DFDFD0D0D0D3D3D3C9C9C9F7F7F7FFFFFFEAEAEAE9E9E9EAEAEAE9E9E9E6E6E6
+        B7B7B7C4C4C4F2F2F2F8F8F8F7F7F7F9F9F9FFFFFFFAFAFAE7E7E7E9E9E9EAEA
+        EAE7E7E7E6E6E6E3E3E3B5B5B5B1B1B1E1E1E1F8F8F8F9F9F9F7F7F7F7F7F7F7
+        F7F7F6F6F6F7F7F7F7F7F7FFFFFFFBFBFBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9
+        E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6D0D0D0D2D2D2E8E8E8E9E9E9EAEAEAEAEA
+        EAEAEAEAE9E9E9E7E7E7FFFFFFFFFFFFFBFBFBFAFAFAFBFBFBF9F9F9F7F7F7F9
+        F9F9F8F8F8F5F5F5F1F1F1F0F0F0F4F4F4F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6
+        F6F6F6F8F8F8F7F7F7F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F0F0F0FCFCFCFFFFFFFFFFFFF9F9F9F6F6F6F7F7F7F6F6F6F4F4F4F4
+        F4F4F3F3F3F3F3F3F3F3F3F3F3F3F5F5F5F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8
+        F8F8F8FFFFFFECECECD3D3D3E1E1E1E4E4E4E6E6E6E8E8E8E9E9E9EAEAEAEBEB
+        EBECECECEDEDEDEEEEEEEEEEEEEEEEEEEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFEEEEEEEEEEEED1D1D1CECECEE9E9E9F4F4F4F5F5F5F4F4F4F1F1F1F0F0F0
+        FFFFFFF7F7F7EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E7E7E7B5B5B5CBCB
+        CBFAFAFAFDFDFDFFFFFFFDFDFDFBFBFBE4E4E4E0E0E0F5F5F5F4F4F4F6F6F6F7
+        F7F7F8F8F8F8F8F8F9F9F9FAFAFAF8F8F8F9F9F9FBFBFBF6F6F6F4F4F4F3F3F3
+        F3F3F3F4F4F4F4F4F4F1F1F1F1F1F1F3F3F3F5F5F5F6F6F6F3F3F3F4F4F4F5F5
+        F5F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFEFEFEEB
+        EBEBEAEAEAE8E8E8E6E6E6E7E7E7E4E4E4E3E3E3C3C3C3F9F9F9FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFBFBFBFBFBFBFCFCFCFDFDFDFBFBFBFBFB
+        FBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFAFAFAF9F9F9F8F8F8F5F5F5F9F9F9FD
+        FDFDFFFFFFFEFEFEFFFFFFFDFDFDF8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F2F2F2
+        FFFFFFFFFFFFFFFFFFF8F8F8FFFFFFFFFFFFFFFFFFF9F9F9FBFBFBFCFCFCFDFD
+        FDFCFCFCF9F9F9FAFAFAF9F9F9F3F3F3F4F4F4F6F6F6F5F5F5F5F5F5F9F9F9FB
+        FBFBF8F8F8F8F8F8F7F7F7F5F5F5F5F5F5F5F5F5F4F4F4F1F1F1FFFFFFFFFFFF
+        FFFFFFF5F5F5F3F3F3ECECECECECECF3F3F3F3F3F3ECECECEAEAEAEDEDEDEDED
+        EDEBEBEBE8E8E8E6E6E6E4E4E4E1E1E1FFFFFFFFFFFFFFFFFFEFEFEFECECECEB
+        EBEBF0F0F0F3F3F3EEEEEEEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8EAEAEAFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEBEBEBEAEAEAE8E8E8E4E4E4E1E1
+        E1DBDBDBD6D6D6E1E1E1ECECECEDEDEDEDEDEDEDEDEDEEEEEEECECECEBEBEBD0
+        D0D0CECECEECECECEEEEEEFFFFFFFFFFFFECECECEAEAEAEBEBEBE9E9E9E6E6E6
+        B7B7B7C9C9C9F8F8F8FCFCFCFBFBFBFCFCFCFCFCFCF7F7F7E7E7E7E6E6E6E7E7
+        E7E6E6E6E5E5E5CECECE9F9F9FCDCDCDF8F8F8FCFCFCFBFBFBF8F8F8F7F7F7F6
+        F6F6F6F6F6F7F7F7F7F7F7FFFFFFFCFCFCEEEEEEECECECECECECEDEDEDEBEBEB
+        E9E9E9E7E7E7D7D7D7C4C4C4BDBDBDA5A5A5CFCFCFE8E8E8E9E9E9E8E8E8EAEA
+        EAE9E9E9E6E6E6E6E6E6FBFBFBFDFDFDF8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F9
+        F9F9F5F5F5F0F0F0ECECECF0F0F0F4F4F4F7F7F7F8F8F8F7F7F7F6F6F6F6F6F6
+        F8F8F8F8F8F8F7F7F7F9F9F9FFFFFFFFFFFFFEFEFEEDEDEDECECECECECECEBEB
+        EBD6D6D6DEDEDEF3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F6F6F6F6
+        F6F6F8F8F8F9F9F9F7F7F7F7F7F7F8F8F8F8F8F8F7F7F7F8F8F8FAFAFAFBFBFB
+        FAFAFAF8F8F8E7E7E7EFEFEFF3F3F3E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9E9E9
+        E9EBEBEBEAEAEAEBEBEBEDEDEDECECECEAEAEAFEFEFEFFFFFFFFFFFFFFFFFFFF
+        FFFFEDEDEDECECECD0D0D0DCDCDCF4F4F4F5F5F5F7F7F7F3F3F3F0F0F0F2F2F2
+        F3F3F3FFFFFFFDFDFDECECECECECECE9E9E9E9E9E9E9E9E9E7E7E7B7B7B7CCCC
+        CCFBFBFBFEFEFEFEFEFEFCFCFCFBFBFBFBFBFBF8F8F8F5F5F5F6F6F6F7F7F7F8
+        F8F8F8F8F8F9F9F9FCFCFCFBFBFBF8F8F8F9F9F9FAFAFAF7F7F7F4F4F4F3F3F3
+        F3F3F3F4F4F4F3F3F3F1F1F1F1F1F1F3F3F3F5F5F5F4F4F4F4F4F4F7F7F7F8F8
+        F8F8F8F8F9F9F9FAFAFAFAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAE9
+        E9E9EAEAEAE7E7E7E4E4E4E2E2E2DFDFDFD1D1D1C3C3C3FFFFFFFFFFFFEFEFEF
+        FEFEFEFFFFFFFFFFFFE9E9E9E6E6E6F9F9F9FCFCFCFEFEFEFEFEFEFDFDFDFDFD
+        FDFCFCFCFDFDFDFEFEFEFEFEFEFBFBFBFBFBFBF9F9F9F8F8F8FAFAFAFDFDFDFE
+        FEFEFDFDFDFEFEFEFDFDFDFBFBFBF8F8F8F9F9F9F8F8F8F7F7F7F8F8F8FFFFFF
+        FFFFFFFFFFFFF8F8F8EAEAEAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFC
+        FCF9F9F9F7F7F7F7F7F7F3F3F3F3F3F3F4F4F4F5F5F5F7F7F7F8F8F8FDFDFDFD
+        FDFDF8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F3F3F3F0F0F0FFFFFFFFFFFF
+        F7F7F7EEEEEEEEEEEEEBEBEBEBEBEBF3F3F3F1F1F1EAEAEAEDEDEDECECECEAEA
+        EAE9E9E9E4E4E4E4E4E4E3E3E3DCDCDCF0F0F0FFFFFFFAFAFAF1F1F1EDEDEDEC
+        ECECF3F3F3F3F3F3EDEDEDE9E9E9E9E9E9E9E9E9E8E8E8E9E9E9EBEBEBFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E8E8E8E9E9E9E7E7E7E6E6E6E2E2E2DCDC
+        DCD9D9D9DDDDDDE6E6E6ECECECEDEDEDEDEDEDEDEDEDEDEDEDECECECDFDFDFC3
+        C3C3DCDCDCFFFFFFF0F0F0FFFFFFFFFFFFECECECEBEBEBEAEAEAE7E7E7CECECE
+        999999CCCCCCF8F8F8FEFEFEFCFCFCFEFEFEFDFDFDF8F8F8F8F8F8E7E7E7E6E6
+        E6E4E4E4E2E2E2B8B8B8B7B7B7E6E6E6FBFBFBFCFCFCFBFBFBF8F8F8F7F7F7F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFCFCFCEAEAEAEAEAEAEAEAEAE9E9E9
+        E7E7E7E4E4E4C3C3C3B9B9B9C8C8C8CCCCCCE2E2E2F3F3F3E6E6E6E8E8E8E9E9
+        E9E8E8E8E6E6E6E6E6E6E3E3E3E4E4E4D1D1D1E3E3E3F7F7F7F6F6F6F7F7F7F7
+        F7F7F4F4F4F2F2F2F1F1F1F3F3F3F5F5F5F8F8F8F8F8F8F7F7F7F7F7F7F9F9F9
+        F9F9F9F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFEDEDEDECECECEDEDEDEDEDEDEDED
+        EDE4E4E4F5F5F5FFFFFFFFFFFFFEFEFEF5F5F5FFFFFFFBFBFBF8F8F8F5F5F5F8
+        F8F8FDFDFDFCFCFCF9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F8F8F8FBFBFBFCFCFC
+        FAFAFAF9F9F9FBFBFBFFFFFFFFFFFFE9E9E9D7D7D7DADADAE8E8E8E5E5E5E8E8
+        E8ECECECE9E9E9ECECECEDEDEDEBEBEBE9E9E9EBEBEBEBEBEBEBEBEBE9E9E9FF
+        FFFFDFDFDFDFDFDFC3C3C3DADADAF5F5F5F7F7F7F5F5F5F0F0F0F3F3F3F7F7F7
+        F9F9F9FFFFFFFFFFFFEDEDEDECECECEEEEEEECECECE8E8E8E7E7E7BABABACACA
+        CAF9F9F9FDFDFDFEFEFEFDFDFDFBFBFBFBFBFBF9F9F9F7F7F7F7F7F7F8F8F8F8
+        F8F8F8F8F8FBFBFBFCFCFCFAFAFAF8F8F8F8F8F8F8F8F8F7F7F7F4F4F4F5F5F5
+        F3F3F3F3F3F3F3F3F3F0F0F0F1F1F1F3F3F3F1F1F1EFEFEFF3F3F3F8F8F8F8F8
+        F8F9F9F9FBFBFBFAFAFAFBFBFBFFFFFFFFFFFFFFFFFFFDFDFDECECECE7E7E7D3
+        D3D3D3D3D3D0D0D0B8B8B8B7B7B7BABABAACACACD2D2D2FDFDFDFEFEFEECECEC
+        E9E9E9E7E7E7E6E6E6BEBEBED0D0D0F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFEFE
+        FEFEFEFEFFFFFFFCFCFCF9F9F9F7F7F7F7F7F7F6F6F6F9F9F9FCFCFCFEFEFEFB
+        FBFBFBFBFBFCFCFCF9F9F9F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F8F8F8FFFFFF
+        FFFFFFEAEAEAEAEAEAEAEAEAEDEDEDF0F0F0EEEEEEFEFEFEF4F4F4EFEFEFF9F9
+        F9F8F8F8F7F7F7F4F4F4F3F3F3F3F3F3F5F5F5F7F7F7F8F8F8F8F8F8FDFDFDFD
+        FDFDF9F9F9F8F8F8F9F9F9F9F9F9F7F7F7F5F5F5F0F0F0EEEEEEF3F3F3F4F4F4
+        E8E8E8ECECECEDEDEDEAEAEAEAEAEAF0F0F0EDEDEDECECECEAEAEAE8E8E8E6E6
+        E6E3E3E3DDDDDDDEDEDEDFDFDFDDDDDDE3E3E3EAEAEAEFEFEFF0F0F0EDEDEDF0
+        F0F0F8F8F8F3F3F3EBEBEBE8E8E8E7E7E7E7E7E7E7E7E7E9E9E9EBEBEBEDEDED
+        EDEDEDE9E9E9E6E6E6E3E3E3E4E4E4E7E7E7E8E8E8E7E7E7D2D2D2BABABAC8C8
+        C8DDDDDDE3E3E3E9E9E9ECECECECECECEDEDEDEDEDEDEDEDEDDFDFDFC2C2C2CD
+        CDCDE8E8E8F6F6F6FCFCFCFFFFFFFFFFFFE9E9E9EBEBEBEAEAEAE7E7E7B3B3B3
+        AEAEAEE2E2E2F8F8F8FBFBFBFBFBFBFBFBFBFCFCFCF9F9F9F9F9F9F7F7F7D5D5
+        D5C1C1C1C1C1C1A8A8A8D0D0D0FCFCFCFEFEFEFDFDFDFBFBFBF8F8F8F8F8F8FA
+        FAFAF9F9F9F9F9F9FAFAFAFBFBFBFFFFFFFFFFFFE8E8E8E8E8E8E8E8E8E6E6E6
+        E3E3E3D5D5D5B3B3B3CDCDCDEAEAEAEFEFEFF2F2F2F3F3F3F5F5F5E7E7E7E6E6
+        E6E6E6E6E2E2E2E1E1E1E1E1E1E3E3E3B8B8B8CBCBCBF4F4F4F7F7F7F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F7F7F7F8F8F8
+        F8F8F8FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBECECECEDEDEDEBEBEBEAEA
+        EADFDFDFDCDCDCF2F2F2FFFFFFF3F3F3E9E9E9E9E9E9EAEAEAECECECFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF8F8F8F7F7F7F7F7F7F8F8F8F9F9F9FEFEFEFEFEFE
+        FBFBFBF9F9F9FBFBFBFFFFFFE8E8E8C6C6C6B2B2B2D5D5D5D7D7D7C7C7C7CDCD
+        CDDCDCDCE7E7E7EAEAEAECECECEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E7E7E7FF
+        FFFFDCDCDCD5D5D5D0D0D0E8E8E8F5F5F5F7F7F7F2F2F2F1F1F1F6F6F6F8F8F8
+        FFFFFFFFFFFFFFFFFFEBEBEBE9E9E9EDEDEDD7D7D7D3D3D3D1D1D1A3A3A3CCCC
+        CCFBFBFBFEFEFEFEFEFEFDFDFDFBFBFBFBFBFBF9F9F9F8F8F8F8F8F8F8F8F8F8
+        F8F8F8F8F8FCFCFCFBFBFBF8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5
+        F2F2F2F3F3F3F3F3F3F1F1F1F3F3F3F1F1F1F0F0F0F0F0F0F8F8F8FCFCFCFAFA
+        FAFCFCFCFCFCFCFBFBFBFFFFFFFFFFFFFFFFFFFBFBFBE9E9E9E9E9E9D9D9D9AE
+        AEAED0D0D0BDBDBDB8B8B8CCCCCCD1D1D1D4D4D4F8F8F8FFFFFFFBFBFBE8E8E8
+        E7E7E7E4E4E4E1E1E1BDBDBDD2D2D2F7F7F7F7F7F7F8F8F8F9F9F9FBFBFBFDFD
+        FDFDFDFDFAFAFAF7F7F7F5F5F5F6F6F6F6F6F6F6F6F6F9F9F9FBFBFBFFFFFFFF
+        FFFFFBFBFBF9F9F9F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7FFFFFF
+        FFFFFFEAEAEAEAEAEAE9E9E9EAEAEAEBEBEBEBEBEBEDEDEDE1E1E1EAEAEAF8F8
+        F8F8F8F8F5F5F5F2F2F2F2F2F2F5F5F5F8F8F8F9F9F9F9F9F9F9F9F9FBFBFBFB
+        FBFBFBFBFBFCFCFCFAFAFAFFFFFFFFFFFFF3F3F3EDEDEDEEEEEEF3F3F3F6F6F6
+        F6F6F6F1F1F1F0F0F0ECECECEBEBEBEBEBEBF0F0F0EDEDEDE7E7E7E5E5E5E4E4
+        E4DFDFDFD9D9D9D9D9D9DDDDDDE1E1E1E5E5E5E9E9E9ECECECEEEEEEECECECF4
+        F4F4F5F5F5EDEDEDE8E8E8E7E7E7E9E9E9E9E9E9E9E9E9EAEAEAE9E9E9EAEAEA
+        E9E9E9E6E6E6E2E2E2DCDCDCE1E1E1E6E6E6CCCCCCB2B2B29E9E9EB5B5B5DDDD
+        DDE6E6E6E9E9E9ECECECEDEDEDECECECECECECEDEDEDDFDFDFC0C0C0CCCCCCE8
+        E8E8F6F6F6FFFFFFFFFFFFFFFFFFF9F9F9E8E8E8EBEBEBEAEAEAE4E4E4AFAFAF
+        CACACAF9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F8F8F8F5F5F5F6F6F6E3E3
+        E3CECECECECECECECECEE5E5E5FDFDFDFDFDFDFBFBFBF9F9F9F8F8F8F8F8F8FA
+        FAFAFAFAFAFBFBFBFCFCFCFFFFFFFFFFFFFFFFFFEAEAEAECECECEAEAEAE8E8E8
+        E6E6E6C8C8C8BDBDBDDADADAEDEDEDF1F1F1F4F4F4F5F5F5F8F8F8FFFFFFF9F9
+        F9E5E5E5E1E1E1E2E2E2E3E3E3E4E4E4B5B5B5C9C9C9F5F5F5F7F7F7F8F8F8F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FBFBFBFBFBFBFBFBFBFCFCFC
+        FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFF9F9F9ECECECEDEDEDEEEEEEECECECEAEA
+        EADFDFDFE7E7E7FBFBFBF4F4F4E7E7E7E7E7E7E7E7E7E9E9E9ECECECFEFEFEFF
+        FFFFFFFFFFFFFFFFE9E9E9E1E1E1F7F7F7F8F8F8F9F9F9FCFCFCFFFFFFFEFEFE
+        FAFAFAF8F8F8F7F7F7F4F4F4E2E2E2D2D2D2D0D0D0E6E6E6E5E5E5D7D7D7DBDB
+        DBF5F5F5F7F7F7EBEBEBECECECE6E6E6E4E4E4E1E1E1D1D1D1BEBEBEB9B9B9FF
+        FFFFEDEDEDEEEEEEEDEDEDF5F5F5F6F6F6F5F5F5F2F2F2F5F5F5F9F9F9FFFFFF
+        FFFFFFFFFFFFFFFFFFEAEAEADCDCDCD0D0D0B4B4B4D3D3D3BDBDBDB7B7B7E3E3
+        E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF9F9F9F8F8F8F8F8F8F8F8F8F9
+        F9F9FBFBFBFDFDFDFAFAFAF7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F7F7F7F5F5F5
+        F3F3F3F4F4F4F4F4F4F3F3F3F3F3F3EEEEEEF2F2F2F8F8F8FFFFFFFFFFFFFBFB
+        FBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAD0D0D0BABABABC
+        BCBCDFDFDFE2E2E2E1E1E1F0F0F0F2F2F2F5F5F5FFFFFFFCFCFCD9D9D9D6D6D6
+        E6E6E6E0E0E0CDCDCDAFAFAFD3D3D3F5F5F5F8F8F8FBFBFBFCFCFCFCFCFCFCFC
+        FCF9F9F9F6F6F6F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FCFCFCFFFFFFFF
+        FFFFFDFDFDFEFEFEF7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FFFFFF
+        FFFFFFEAEAEAE9E9E9E9E9E9EAEAEAEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9F3F3
+        F3F4F4F4F2F2F2F1F1F1F4F4F4F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FDFDFDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E2E2E2E9E9E9ECECECF3F3F3F6F6F6
+        F7F7F7FFFFFFFFFFFFECECECDADADAC6C6C6CACACABCBCBCAFAFAFA9A9A9A3A3
+        A3BBBBBBD6D6D6DADADAE1E1E1E7E7E7E7E7E7E9E9E9EDEDEDF2F2F2F2F2F2F5
+        F5F5F0F0F0E8E8E8E7E7E7E7E7E7E9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E8E8E8
+        E6E6E6CDCDCDAFAFAFB0B0B0B5B5B5B2B2B28C8C8CACACACCECECEE4E4E4F8F8
+        F8FFFFFFFDFDFDF1F1F1EEEEEEEDEDEDEDEDEDECECECD0D0D0CCCCCCE6E6E6F1
+        F1F1F4F4F4FFFFFFFFFFFFFDFDFDEAEAEAE8E8E8E9E9E9E7E7E7DFDFDFB5B5B5
+        E2E2E2FFFFFFF7F7F7FFFFFFFFFFFFFFFFFFF8F8F8F7F7F7F6F6F6F9F9F9F5F5
+        F5F4F4F4F5F5F5F6F6F6FAFAFAFDFDFDFBFBFBF8F8F8F8F8F8F8F8F8F8F8F8FA
+        FAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EAEAEAEAEAEAEAEAEAE9E9E9
+        E9E9E9C5C5C5C8C8C8EAEAEAF0F0F0F5F5F5F5F5F5F6F6F6F7F7F7FFFFFFFFFF
+        FFE6E6E6E5E5E5E7E7E7D0D0D0B6B6B69D9D9DCCCCCCF7F7F7F8F8F8F9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FCFCFCFDFDFDFEFEFEFDFDFD
+        FBFBFBFCFCFCFFFFFFFFFFFFFEFEFEF0F0F0EEEEEEEFEFEFEDEDEDEDEDEDEDED
+        EDEDEDEDF6F6F6FEFEFEF4F4F4E7E7E7E6E6E6E7E7E7EAEAEAEAEAEAECECECEE
+        EEEEEFEFEFECECECBABABACBCBCBF7F7F7F9F9F9FCFCFCFEFEFEFFFFFFFEFEFE
+        FAFAFAF8F8F8F7F7F7F7F7F7F4F4F4F3F3F3F4F4F4F7F7F7F8F8F8F8F8F8F9F9
+        F9FFFFFFFCFCFCEEEEEEECECECE7E7E7E4E4E4D4D4D4B2B2B2BCBCBCC8C8C8FF
+        FFFFF8F8F8F7F7F7F6F6F6F5F5F5F1F1F1F2F2F2F4F4F4F8F8F8FFFFFFFFFFFF
+        FFFFFFFFFFFFEDEDEDDCDCDCC1C1C1C8C8C8D3D3D3E5E5E5E2E2E2E3E3E3F7F7
+        F7FFFFFFFBFBFBFFFFFFFFFFFFEDEDEDE9E9E9F8F8F8F9F9F9F8F8F8F9F9F9FC
+        FCFCFCFCFCFBFBFBF8F8F8F7F7F7F7F7F7FFFFFFFFFFFFFDFDFDF9F9F9F7F7F7
+        F6F6F6F6F6F6F5F5F5F3F3F3F0F0F0EEEEEEF4F4F4FCFCFCFFFFFFFDFDFDFBFB
+        FBFEFEFEFFFFFFFEFEFEFBFBFBF9F9F9FFFFFFF8F8F8D0D0D0CACACAD1D1D1D9
+        D9D9ECECECF3F3F3F1F1F1EFEFEFF3F3F3F5F5F5F8F8F8EAEAEAD7D7D7E6E6E6
+        EAEAEADFDFDFBCBCBCC5C5C5E7E7E7F5F5F5FBFBFBFDFDFDFBFBFBFBFBFBF9F9
+        F9F6F6F6F5F5F5F6F6F6F7F7F7F5F5F5F5F5F5F7F7F7F9F9F9F9F9F9FFFFFFFF
+        FFFFF5F5F5E7E7E7E9E9E9F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9F8F8F8FFFFFF
+        FFFFFFF6F6F6E9E9E9E9E9E9EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9DCDC
+        DCE6E6E6F2F2F2F3F3F3F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFEFEFEFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECDEDEDEE9E9E9F0F0F0F6F6F6F8F8F8
+        F9F9F9FFFFFFEDEDEDC8C8C8B3B3B3BFBFBFD0D0D0CBCBCBC6C6C6BFBFBFBABA
+        BAD3D3D3DCDCDCDFDFDFE6E6E6E9E9E9E7E7E7EBEBEBEFEFEFF1F1F1F0F0F0F0
+        F0F0ECECECE7E7E7E7E7E7E7E7E7E9E9E9E8E8E8E7E7E7E7E7E7E7E7E7E4E4E4
+        CCCCCC9B9B9BACACACC1C1C1BFBFBFBEBEBEC1C1C1E1E1E1FCFCFCF9F9F9FBFB
+        FBFFFFFFFFFFFFF1F1F1EFEFEFECECECECECECECECECCECECED7D7D7EFEFEFF1
+        F1F1F5F5F5F5F5F5FFFFFFFBFBFBE8E8E8E8E8E8E6E6E6E3E3E3DEDEDECDCDCD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDF8F8
+        F8F7F7F7FBFBFBFAFAFAFCFCFCFDFDFDFBFBFBF9F9F9F9F9F9F8F8F8F9F9F9FD
+        FDFDFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9E9E9E9E9E9E9EAEAEAD8D8D8C3C3C3
+        C1C1C1A9A9A9CCCCCCF1F1F1F4F4F4F4F4F4F6F6F6F5F5F5F5F5F5FFFFFFF9F9
+        F9E7E7E7E7E7E7E4E4E4B4B4B4B2B2B2CCCCCCE3E3E3F8F8F8F9F9F9F9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FCFCFCFFFFFFFEFEFEF9F9F9
+        F7F7F7F9F9F9FFFFFFFFFFFFF0F0F0EDEDEDECECECECECECECECECEBEBEBEAEA
+        EAE8E8E8E6E6E6E6E6E6E7E7E7E7E7E7E6E6E6E7E7E7EAEAEAE9E9E9EAEAEAEC
+        ECECECECECE9E9E9BABABACACACAF6F6F6FAFAFAFBFBFBFEFEFEFFFFFFFCFCFC
+        F8F8F8F7F7F7F6F6F6F4F4F4F3F3F3F5F5F5F7F7F7F8F8F8FAFAFAFBFBFBFBFB
+        FBFFFFFFFFFFFFF8F8F8ECECECEBEBEBDEDEDEBFBFBFC8C8C8E6E6E6F5F5F5FF
+        FFFFF6F6F6F5F5F5F5F5F5F4F4F4EDEDEDEFEFEFF5F5F5FFFFFFFFFFFFFFFFFF
+        FFFFFFEEEEEEECECECD2D2D2D0D0D0E6E6E6F4F4F4F7F7F7F7F7F7F7F7F7F7F7
+        F7FFFFFFEAEAEAF8F8F8FFFFFFC7C7C7D6D6D6F8F8F8FAFAFAFBFBFBFCFCFCFC
+        FCFCFAFAFAF8F8F8F7F7F7F7F7F7F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F7F7F7F6F6F6F4F4F4F3F3F3F0F0F0F2F2F2F8F8F8F9F9F9FAFAFAFAFAFAFCFC
+        FCFFFFFFFEFEFEF8F8F8F8F8F8F7F7F7F5F5F5EAEAEAD9D9D9E4E4E4ECECECEA
+        EAEAF0F0F0F1F1F1F3F3F3F6F6F6F9F9F9F9F9F9FBFBFBFCFCFCF9F9F9F8F8F8
+        FFFFFFE4E4E4B7B7B7DCDCDCF8F8F8F5F5F5FBFBFBFBFBFBF9F9F9F7F7F7F6F6
+        F6F5F5F5F5F5F5F6F6F6F6F6F6F4F4F4F5F5F5F8F8F8F7F7F7F5F5F5FFFFFFFC
+        FCFCEAEAEADCDCDCE6E6E6F4F4F4F6F6F6F8F8F8F8F8F8F9F9F9F8F8F8FFFFFF
+        FFFFFFFFFFFFE9E9E9E9E9E9EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBCDCD
+        CDD2D2D2EEEEEEEFEFEFEEEEEEF0F0F0F2F2F2F7F7F7FCFCFCFFFFFFFFFFFFFF
+        FFFFFFFFFFFBFBFBEDEDEDEDEDEDD8D8D8BEBEBEDEDEDEF4F4F4F8F8F8F9F9F9
+        F9F9F9FCFCFCEDEDEDD8D8D8D3D3D3E4E4E4F5F5F5F7F7F7F7F7F7F2F2F2F0F0
+        F0F4F4F4F8F8F8E7E7E7E9E9E9EBEBEBEAEAEAEBEBEBECECECEAEAEAE9E9E9EA
+        EAEAE9E9E9E4E4E4E3E3E3E3E3E3E7E7E7E8E8E8E7E7E7E7E7E7E4E4E4D8D8D8
+        B2B2B2B5B5B5DCDCDCEAEAEAECECECF1F1F1F7F7F7FAFAFAFCFCFCFFFFFFFFFF
+        FFFFFFFFFFFFFFF2F2F2EEEEEEEAEAEAEBEBEBECECECCDCDCDD3D3D3F1F1F1F8
+        F8F8F9F9F9F8F8F8FFFFFFFBFBFBEAEAEAE4E4E4E0E0E0E1E1E1E1E1E1E5E5E5
+        FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF7F7F7F9F9F9F8F8F8F9F9F9FBFBFBFAFAFAF9F9F9F9F9F9F9F9F9FBFBFBFF
+        FFFFFFFFFFFFFFFFFFFFFFEAEAEAEAEAEAEAEAEAD7D7D7C3C3C3AFAFAFBCBCBC
+        D0D0D0D0D0D0E3E3E3F6F6F6F5F5F5F6F6F6F7F7F7F6F6F6F7F7F7FCFCFCFFFF
+        FFFCFCFCE9E9E9E0E0E0B9B9B9D0D0D0F8F8F8F7F7F7F8F8F8FBFBFBF9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9FFFFFFFFFFFFFBFBFBF6F6F6
+        F7F7F7FFFFFFFFFFFFFFFFFFECECECE9E9E9E9E9E9EAEAEAE9E9E9EAEAEAE8E8
+        E8E6E6E6E4E4E4E4E4E4E7E7E7E7E7E7E7E7E7E6E6E6E8E8E8E7E7E7EAEAEAED
+        EDEDEAEAEAE5E5E5BCBCBCCACACAF4F4F4FAFAFAFAFAFAFEFEFEFFFFFFFAFAFA
+        F6F6F6F4F4F4F4F4F4F4F4F4F5F5F5F7F7F7F8F8F8F8F8F8FAFAFAFBFBFBF9F9
+        F9FFFFFFFFFFFFF8F8F8EDEDEDEDEDEDD0D0D0C9C9C9E6E6E6F6F6F6F8F8F8FF
+        FFFFF6F6F6F7F7F7F6F6F6F5F5F5EFEFEFF2F2F2FFFFFFFFFFFFFFFFFFFFFFFF
+        EFEFEFECECECECECECD5D5D5DCDCDCF3F3F3F6F6F6F7F7F7F9F9F9F8F8F8FFFF
+        FFFFFFFFFEFEFEFFFFFFFFFFFFDBDBDBE7E7E7F8F8F8F8F8F8F9F9F9FAFAFAF9
+        F9F9F8F8F8F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFF8F8F8FFFFFFF4F4F4
+        F6F6F6F4F4F4F4F4F4F5F5F5F2F2F2F5F5F5F9F9F9FAFAFAFFFFFFFEFEFEFDFD
+        FDFFFFFFFBFBFBF5F5F5F9F9F9F4F4F4F1F1F1F4F4F4F0F0F0F1F1F1F0F0F0F0
+        F0F0F1F1F1F3F3F3F7F7F7F9F9F9FAFAFAFAFAFAFAFAFAFFFFFFFCFCFCF7F7F7
+        FFFFFFEBEBEBC8C8C8EBEBEBF8F8F8F5F5F5F8F8F8F9F9F9F7F7F7F6F6F6F5F5
+        F5F5F5F5F5F5F5F7F7F7F6F6F6F5F5F5F8F8F8F9F9F9F7F7F7F5F5F5FFFFFFFD
+        FDFDEDEDEDEBEBEBDADADAE7E7E7F6F6F6F8F8F8F8F8F8F9F9F9F8F8F8FEFEFE
+        FFFFFFFFFFFFE9E9E9E9E9E9EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBCACA
+        CACFCFCFEDEDEDEEEEEEF1F1F1F5F5F5F5F5F5FDFDFDFEFEFEFFFFFFFFFFFFFF
+        FFFFFAFAFAF0F0F0EEEEEEEDEDEDDADADAD0D0D0E1E1E1F4F4F4F8F8F8F9F9F9
+        FBFBFBFFFFFFFEFEFEF7F7F7F3F3F3F5F5F5F8F8F8F8F8F8F4F4F4EFEFEFF3F3
+        F3F9F9F9FBFBFBFBFBFBEAEAEAECECECEBEBEBEAEAEAEAEAEAE8E8E8E8E8E8E9
+        E9E9E4E4E4E0E0E0E3E3E3E4E4E4E7E7E7E4E4E4E4E4E4E7E7E7E1E1E1C7C7C7
+        ACACACD3D3D3F2F2F2EDEDEDF1F1F1F9F9F9FBFBFBFCFCFCFDFDFDFFFFFFFFFF
+        FFFFFFFFFFFFFFEFEFEFEDEDEDE6E6E6E8E8E8ECECECC8C8C8CFCFCFF4F4F4F9
+        F9F9F9F9F9F9F9F9F9F9F9FFFFFFFDFDFDE8E8E8E5E5E5E6E6E6E7E7E7E9E9E9
+        EAEAEAEAEAEAEBEBEBF4F4F4F5F5F5F3F3F3F0F0F0EAEAEAFBFBFBFFFFFFE1E1
+        E1E2E2E2FEFEFEFCFCFCFCFCFCFDFDFDF9F9F9F8F8F8F8F8F8F8F8F8F9F9F9FF
+        FFFFFFFFFFFFFFFFF9F9F9EAEAEAEAEAEADADADAB1B1B1BFBFBFD3D3D3E4E4E4
+        F5F5F5F5F5F5F6F6F6F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9FCFCFCFFFF
+        FFEEEEEED8D8D8D3D3D3AFAFAFD8D8D8FBFBFBF9F9F9FAFAFAFBFBFBF9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAFFFFFFFEFEFEF8F8F8F5F5F5
+        F8F8F8FFFFFFFFFFFFF9F9F9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAECECECE9E9
+        E9E6E6E6E5E5E5E5E5E5E8E8E8E8E8E8E7E7E7E5E5E5E7E7E7E7E7E7EAEAEAEA
+        EAEAE7E7E7D0D0D0A3A3A3C8C8C8F4F4F4FAFAFAFAFAFAFEFEFEFFFFFFF9F9F9
+        F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8FAFAFAFBFBFBF8F8
+        F8FFFFFFFFFFFFEDEDEDEDEDEDEDEDEDCECECED9D9D9F6F6F6F8F8F8F8F8F8FF
+        FFFFF4F4F4F5F5F5F5F5F5F4F4F4EEEEEEEAEAEAFFFFFFFFFFFFF9F9F9EFEFEF
+        ECECECECECECECECECD5D5D5D9D9D9F0F0F0F7F7F7F8F8F8F9F9F9F8F8F8FFFF
+        FFFFFFFFE9E9E9E9E9E9F9F9F9D5D5D5C1C1C1E1E1E1F4F4F4F5F5F5F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF9F9F9E9E9E9E2E2E2D7D7D7
+        D0D0D0E9E9E9F5F5F5F6F6F6F3F3F3F5F5F5F9F9F9FAFAFAFCFCFCFDFDFDFCFC
+        FCFCFCFCF8F8F8F5F5F5F9F9F9F3F3F3EFEFEFF4F4F4F3F3F3F3F3F3F0F0F0EA
+        EAEAEEEEEEF5F5F5F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFF7F7F7
+        FFFFFFEEEEEED6D6D6F7F7F7F8F8F8F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5F5F5
+        F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F5F5F5F4F4F4FFFFFFFC
+        FCFCEAEAEAE6E6E6CACACAD9D9D9F6F6F6F8F8F8F8F8F8F9F9F9F8F8F8FEFEFE
+        FFFFFFFFFFFFE9E9E9E9E9E9EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBCACA
+        CACFCFCFF0F0F0F1F1F1F7F7F7FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFEB
+        EBEBE6E6E6E9E9E9E8E8E8E6E6E6D5D5D5C1C1C1E1E1E1F4F4F4F8F8F8F9F9F9
+        FBFBFBFEFEFEFCFCFCF6F6F6F5F5F5F7F7F7F8F8F8F8F8F8F4F4F4F3F3F3F8F8
+        F8FBFBFBFBFBFBFFFFFFFFFFFFFFFFFFECECECEAEAEAEAEAEAE8E8E8E8E8E8E9
+        E9E9E7E7E7E4E4E4E8E8E8E9E9E9ECECECECECECECECECEAEAEAE1E1E1CACACA
+        D0D0D0E9E9E9F5F5F5EFEFEFF2F2F2FAFAFAFCFCFCFCFCFCFDFDFDFFFFFFFFFF
+        FFFFFFFFFFFFFFE6E6E6E7E7E7E2E2E2E4E4E4EBEBEBC8C8C8D4D4D4F7F7F7F9
+        F9F9F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFEDEDEDECECECEAEAEAEAEAEAEBEBEB
+        EAEAEAEAEAEAEBEBEBF5F5F5F0F0F0E8E8E8E8E8E8E7E7E7E2E2E2E3E3E3AFAF
+        AFCACACAFAFAFAF6F6F6F7F7F7F9F9F9F7F7F7F6F6F6F8F8F8F8F8F8F8F8F8FF
+        FFFFFFFFFFEAEAEAEAEAEAEAEAEAEAEAEADADADAD1D1D1E3E3E3F7F7F7F7F7F7
+        F7F7F7F7F7F7F7F7F7F8F8F8F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9FFFF
+        FFFFFFFFFFFFFFE9E9E9D4D4D4EBEBEBFDFDFDFAFAFAFAFAFAFBFBFBF9F9F9F8
+        F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAFFFFFFFDFDFDF7F7F7F5F5F5
+        F8F8F8FFFFFFFFFFFFE9E9E9E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9EAEAEAE6E6
+        E6E4E4E4E4E4E4E6E6E6E9E9E9E9E9E9E7E7E7E4E4E4E5E5E5E7E7E7EAEAEAEC
+        ECECEAEAEAD5D5D5CDCDCDE2E2E2F7F7F7FAFAFAFAFAFAFEFEFEFFFFFFF8F8F8
+        F5F5F5F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8FAFAFAFBFBFBF8F8
+        F8FFFFFFFFFFFFEDEDEDEDEDEDEDEDEDCECECEDADADAF8F8F8F8F8F8F8F8F8FF
+        FFFF}
+    end
+    object Bevel1: TBevel
+      Left = 16
+      Top = 16
+      Width = 297
+      Height = 217
+      Shape = bsFrame
+    end
+    object Label1: TLabel
+      Left = 128
+      Top = 200
+      Width = 353
+      Height = 13
+      Caption = 'Department of Veterans Affairs Veterans Health Administration'
+      Color = clWhite
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBlack
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentColor = False
+      ParentFont = False
+      Transparent = True
+    end
+    object Label2: TLabel
+      Left = 258
+      Top = 75
+      Width = 17
+      Height = 12
+      AutoSize = False
+      Caption = 'TM'
+      Color = clWhite
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clNavy
+      Font.Height = -7
+      Font.Name = 'Small Fonts'
+      Font.Style = [fsBold]
+      ParentColor = False
+      ParentFont = False
+      Transparent = True
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Splvista.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Splvista.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Splvista.pas	(revision 1676)
@@ -0,0 +1,93 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Displays VistA splash screen.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit Splvista;
+
+{       1.1*14 Modified the tick types so that code will work with D3, D4,
+        D5. -- DPC 3/30/00
+
+        1.1*11 Changed
+        from:   var StartTick: longint;
+        to:     var StartTick: longword
+        from:   procedure SplashClose(TimeOut: longint);
+        to:     procedure SplashClose(TimeOut: longword);
+        [Warning] Splvista.pas(53): Combining signed and unsigned types - widened both operands
+         In Delphi 5 (ver130), GetTickCount's result is of type DWORD, longword
+         danila - 9/27/99}
+
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, ExtCtrls, StdCtrls;
+
+type
+  TfrmVistaSplash = class(TForm)
+    Panel1: TPanel;
+    Image1: TImage;
+    Bevel1: TBevel;
+    Label1: TLabel;
+    Label2: TLabel;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmVistaSplash: TfrmVistaSplash;
+    StartTick: longword;
+
+procedure SplashOpen;
+
+  procedure SplashClose(TimeOut: longword);
+
+implementation
+
+{$R *.DFM}
+
+
+
+procedure SplashOpen;
+begin
+  StartTick := GetTickCount;
+  try
+    frmVistaSplash := TfrmVistaSplash.Create(Application);
+    frmVistaSplash.Show;
+  except
+    frmVistaSplash.Release;
+    frmVistaSplash := nil;
+  end;
+end;
+
+
+
+  procedure SplashClose(TimeOut: longword);
+begin
+  try
+    while (GetTickCount - StartTick) < TimeOut do Application.ProcessMessages;
+    frmVistaSplash.Release;
+    frmVistaSplash := nil;
+  except
+  end;
+end;
+
+
+procedure TfrmVistaSplash.FormCreate(Sender: TObject);
+begin
+  {This positions the label correctly in the lower right-hand corner regardless
+  of the resolution of font size.}
+  Label1.Caption := 'Department of Veterans Affairs' + #13 +
+                    'Veterans Health Administration';
+  Label1.Left := Width - 25 - Label1.Width;       //offset 25 pixels from right
+  Label1.Top  := Height - 25 - Label1.Height;     //offset 25 pixels from bottom
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Trpcb.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Trpcb.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Trpcb.pas	(revision 1676)
@@ -0,0 +1,1619 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Contains TRPCBroker and related components.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+{**************************************************
+This is the hierarchy of things:
+   TRPCBroker contains
+      TParams, which contains
+         array of TParamRecord each of which contains
+                  TMult
+
+v1.1*4 Silent Login changes (DCM) 10/22/98
+
+1.1*6 Polling to support terminating arphaned server jobs. (P6)
+      == DPC 4/99
+
+1.1*8 Check for Multi-Division users. (P8) - REM 7/13/99
+
+1.1*13 More silent login code; deleted obsolete lines (DCM) 9/10/99  // p13
+LAST UPDATED: 5/24/2001   // p13  JLI
+
+1.1*31 Added new read only property BrokerVersion to TRPCBroker which
+       should contain the version number for the RPCBroker
+       (or SharedRPCBroker) in use.
+**************************************************}
+unit Trpcb;
+
+interface
+
+{$I IISBase.inc}
+
+uses
+  {Delphi standard}
+  Classes, Controls, Dialogs, {DsgnIntf,} Forms, Graphics, Messages, SysUtils,
+  WinProcs, WinTypes, Windows,
+  extctrls, {P6}
+  {VA}
+  XWBut1, {RpcbEdtr,} MFunStr, Hash;  //P14 -- pack split
+
+const
+  NoMore: boolean = False;
+  MIN_RPCTIMELIMIT: integer = 30;
+  CURRENT_RPC_VERSION: String = 'XWB*1.1*40';
+
+type
+
+TParamType = (literal, reference, list, global, empty, stream, undefined);  // 030107 JLI Modified for new message protocol
+
+//P14 -- pack split -- Types moved from RpcbEdtr.pas.
+TAccessVerifyCodes = string[255];  //to use TAccessVerifyCodesProperty editor use this type
+TRemoteProc = string[100];         //to use TRemoteProcProperty editor use this type
+TServer = string[255];             //to use TServerProperty editor use this type
+TRpcVersion = string[255];         //to use TRpcVersionProperty editor use this type
+
+TRPCBroker = class;
+TVistaLogin = class;
+// p13 
+TLoginMode = (lmAVCodes, lmAppHandle, lmNTToken);
+TShowErrorMsgs = (semRaise, semQuiet);  // p13
+TOnLoginFailure = procedure (VistaLogin: TVistaLogin) of object; //p13
+TOnRPCBFailure = procedure (RPCBroker: TRPCBroker) of object; //p13
+TOnPulseError = procedure(RPCBroker: TRPCBroker; ErrorText: String) of object;
+// TOnRPCCall = procedure (RPCBroker: TRPCBroker; SetNum: Integer; RemoteProcedure: TRemoteProc; CurrentContext: String; RpcVersion: TRpcVersion; Param: TParams; RPCTimeLimit: Integer; Results, Sec, App: PChar; DateTime: TDateTime) of object;
+
+{------ EBrokerError ------}
+EBrokerError = class(Exception)
+public
+  Action: string;
+  Code: integer;
+  Mnemonic: string;
+end;
+
+{------ TString ------}
+
+TString = class(TObject)
+  Str: string;
+end;
+
+{------ TMult ------}
+{:This component defines the multiple field of a parameter.  The multiple
+ field is used to pass string-subscripted array of data in a parameter.}
+
+TMult = class(TComponent)
+private
+  FMultiple: TStringList;
+  procedure ClearAll;
+  function  GetCount: Word;
+  function  GetFirst: string;
+  function  GetLast: string;
+  function  GetFMultiple(Index: string): string;
+  function  GetSorted: boolean;
+  procedure SetFMultiple(Index: string; value: string);
+  procedure SetSorted(Value: boolean);
+protected
+public
+  constructor Create(AOwner: TComponent); override;      {1.1T8}
+  destructor Destroy; override;
+  procedure Assign(Source: TPersistent); override;
+  function Order(const StartSubscript: string; Direction: integer): string;
+  function Position(const Subscript: string): longint;
+  function Subscript(const Position: longint): string;
+  property Count: Word read GetCount;
+  property First: string read GetFirst;
+  property Last: string read GetLast;
+  property MultArray[I: string]: string
+           read GetFMultiple write SetFMultiple; default;
+  property Sorted: boolean read GetSorted write SetSorted;
+end;
+
+{------ TParamRecord ------}
+{:This component defines all the fields that comprise a parameter.}
+
+TParamRecord = class(TComponent)
+private
+  FMult: TMult;
+  FValue: string;
+  FPType: TParamType;
+protected
+public
+  constructor Create(AOwner: TComponent); override;
+  destructor Destroy; override;
+  property Value: string read FValue write FValue;
+  property PType: TParamType read FPType write FPType;
+  property Mult: TMult read FMult write FMult;
+end;
+
+{------ TParams ------}
+{:This component is really a collection of parameters.  Simple inclusion
+  of this component in the Broker component provides access to all of the
+  parameters that may be needed when calling a remote procedure.}
+
+TParams = class(TComponent)
+private
+  FParameters: TList;
+  function GetCount: Word;
+  function GetParameter(Index: integer): TParamRecord;
+  procedure SetParameter(Index: integer; Parameter: TParamRecord);
+public
+  constructor Create(AOwner: TComponent); override;
+  destructor Destroy; override;
+  procedure Assign(Source: TPersistent); override;
+  procedure Clear;
+  property Count: Word read GetCount;
+  property ParamArray[I: integer]: TParamRecord
+                      read GetParameter write SetParameter; default;
+end;
+
+
+{------ TVistaLogin ------}     //p13
+TVistaLogin = class(TPersistent)
+private
+  FLogInHandle : string;
+  FNTToken : string;
+  FAccessCode : string;
+  FVerifyCode : string;
+  FDivision   : string;
+  FMode: TLoginMode;
+  FDivLst: TStrings;
+  FOnFailedLogin: TOnLoginFailure;
+  FMultiDivision : boolean;
+  FDUZ: string;
+  FErrorText : string;
+  FPromptDiv : boolean;
+  FIsProductionAccount: Boolean;
+  FDomainName: string;
+  procedure SetAccessCode(const Value: String);
+  procedure SetLogInHandle(const Value: String);
+  procedure SetNTToken(const Value: String);
+  procedure SetVerifyCode(const Value: String);
+  procedure SetDivision(const Value: String);
+  //procedure SetWorkstationIPAddress(const Value: String);
+  procedure SetMode(const Value: TLoginMode);
+  procedure SetMultiDivision(Value: Boolean);
+  procedure SetDuz(const Value: string);
+  procedure SetErrorText(const Value: string);
+  procedure SetPromptDiv(const Value: boolean);
+protected
+  procedure FailedLogin(Sender: TObject); dynamic;
+public
+  constructor Create(AOwner: TComponent); virtual;
+  destructor Destroy; override;
+  property LogInHandle: String read FLogInHandle write SetLogInHandle;  //for use by a 2ndary DHCP login OR ESSO login
+  property NTToken: String read FNTToken write SetNTToken;
+  property DivList: TStrings read FDivLst;
+  property OnFailedLogin: TOnLoginFailure read FOnFailedLogin write FOnFailedLogin;
+  property MultiDivision: Boolean read FMultiDivision write SetMultiDivision;
+  property DUZ: string read FDUZ write SetDuz;
+  property ErrorText: string read FErrorText write SetErrorText;
+  property IsProductionAccount: Boolean read FIsProductionAccount write
+      FIsProductionAccount;
+  property DomainName: string read FDomainName write FDomainName;
+published
+  property AccessCode: String read FAccessCode write SetAccessCode;
+  property VerifyCode: String read FVerifyCode write SetVerifyCode;
+  property Mode: TLoginMode read FMode write SetMode;
+  property Division: String read FDivision write SetDivision;
+  property PromptDivision: boolean read FPromptDiv write SetPromptDiv;
+
+end;
+
+{------ TVistaUser ------}   //holds 'generic' user attributes {p13}
+TVistaUser = class(TObject)
+private
+  FDUZ: string;
+  FName: string;
+  FStandardName: string;
+  FDivision: String;
+  FVerifyCodeChngd: Boolean;
+  FTitle: string;
+  FServiceSection: string;
+  FLanguage: string;
+  FDtime: string;
+  FVpid: String;
+  procedure SetDivision(const Value: String);
+  procedure SetDUZ(const Value: String);
+  procedure SetName(const Value: String);
+  procedure SetVerifyCodeChngd(const Value: Boolean);
+  procedure SetStandardName(const Value: String);
+  procedure SetTitle(const Value: string);
+  procedure SetDTime(const Value: string);
+  procedure SetLanguage(const Value: string);
+  procedure SetServiceSection(const Value: string);
+public
+  property DUZ: String read FDUZ write SetDUZ;
+  property Name: String read FName write SetName;
+  property StandardName: String read FStandardName write SetStandardName;
+  property Division: String read FDivision write SetDivision;
+  property VerifyCodeChngd: Boolean read FVerifyCodeChngd write SetVerifyCodeChngd;
+  property Title: string read FTitle write SetTitle;
+  property ServiceSection: string read FServiceSection write SetServiceSection;
+  property Language: string read FLanguage write SetLanguage;
+  property DTime: string read FDTime write SetDTime;
+  property Vpid: string read FVpid write FVpid;
+end;
+
+{------ TRPCBroker ------}
+{:This component, when placed on a form, allows design-time and run-time
+  connection to the server by simply toggling the Connected property.
+  Once connected you can access server data.}
+
+TRPCBroker = class(TComponent)
+//private
+private
+  FBrokerVersion: String;
+  FIsBackwardCompatibleConnection: Boolean;
+  FIsNewStyleConnection: Boolean;
+  FOldConnectionOnly: Boolean;
+protected
+  FAccessVerifyCodes: TAccessVerifyCodes;
+  FClearParameters: Boolean;
+  FClearResults: Boolean;
+  FConnected: Boolean;
+  FConnecting: Boolean;
+  FCurrentContext: String;
+  FDebugMode: Boolean;
+  FListenerPort: integer;
+  FParams: TParams;
+  FResults: TStrings;
+  FRemoteProcedure: TRemoteProc;
+  FRpcVersion: TRpcVersion;
+  FServer: TServer;
+  FSocket: integer;
+  FRPCTimeLimit : integer;    //for adjusting client RPC duration timeouts
+  FPulse        : TTimer;     //P6
+  FKernelLogIn  : Boolean;    //p13
+  FLogIn: TVistaLogIn;    //p13
+  FUser: TVistaUser; //p13
+  FOnRPCBFailure: TOnRPCBFailure;
+  FShowErrorMsgs: TShowErrorMsgs;
+  FRPCBError:     String;
+  FOnPulseError: TOnPulseError;
+protected
+  procedure   SetClearParameters(Value: Boolean); virtual;
+  procedure   SetClearResults(Value: Boolean); virtual;
+  procedure   SetConnected(Value: Boolean); virtual;
+  procedure   SetResults(Value: TStrings); virtual;
+  procedure   SetServer(Value: TServer); virtual;
+  procedure   SetRPCTimeLimit(Value: integer); virtual;  //Screen changes to timeout.
+  procedure   DoPulseOnTimer(Sender: TObject); virtual;  //p6
+  procedure   SetKernelLogIn(const Value: Boolean); virtual;
+//  procedure   SetLogIn(const Value: TVistaLogIn); virtual;
+  procedure   SetUser(const Value: TVistaUser); virtual;
+public
+  XWBWinsock: TObject;
+  property    AccessVerifyCodes: TAccessVerifyCodes read FAccessVerifyCodes write FAccessVerifyCodes;
+  property    Param: TParams read FParams write FParams;
+  property    Socket: integer read FSocket;
+  property    RPCTimeLimit : integer read FRPCTimeLimit write SetRPCTimeLimit;
+  destructor  Destroy; override;
+  procedure   Call; virtual;
+  procedure   Loaded; override;
+  procedure   lstCall(OutputBuffer: TStrings); virtual;
+  function    pchCall: PChar; virtual;
+  function    strCall: string; virtual;
+  function    CreateContext(strContext: string): boolean; virtual;
+  property    CurrentContext: String read FCurrentContext;
+  property    User: TVistaUser read FUser write SetUser;
+  property    OnRPCBFailure: TOnRPCBFailure read FOnRPCBFailure write FOnRPCBFailure;
+  property    RPCBError: String read FRPCBError write FRPCBError;
+  property    OnPulseError: TOnPulseError read FOnPulseError write FOnPulseError;
+  property    BrokerVersion: String read FBrokerVersion;
+  property IsNewStyleConnection: Boolean read FIsNewStyleConnection;
+published
+  constructor Create(AOwner: TComponent); override;
+  property    ClearParameters: boolean read FClearParameters
+              write SetClearParameters;
+  property    ClearResults: boolean read FClearResults write SetClearResults;
+  property    Connected: boolean read FConnected write SetConnected;
+  property    DebugMode: boolean read FDebugMode write FDebugMode default False;
+  property    ListenerPort: integer read FListenerPort write FListenerPort;
+  property    Results: TStrings read FResults write SetResults;
+  property    RemoteProcedure: TRemoteProc read FRemoteProcedure
+              write FRemoteProcedure;
+  property    RpcVersion: TRpcVersion read FRpcVersion write FRpcVersion;
+  property    Server: TServer read FServer write SetServer;
+  property    KernelLogIn: Boolean read FKernelLogIn write SetKernelLogIn;
+  property    ShowErrorMsgs: TShowErrorMsgs read FShowErrorMsgs write FShowErrorMsgs default semRaise;
+  property    LogIn: TVistaLogIn read FLogIn write FLogin; // SetLogIn;
+  property    IsBackwardCompatibleConnection: Boolean read
+      FIsBackwardCompatibleConnection write FIsBackwardCompatibleConnection 
+      default True;
+  property    OldConnectionOnly: Boolean read FOldConnectionOnly write 
+      FOldConnectionOnly;
+ end;
+
+{procedure Register;}  //P14 --pack split
+procedure StoreConnection(Broker: TRPCBroker);
+function  RemoveConnection(Broker: TRPCBroker): boolean;
+function  DisconnectAll(Server: string; ListenerPort: integer): boolean;
+function  ExistingSocket(Broker: TRPCBroker): integer;
+procedure AuthenticateUser(ConnectingBroker: TRPCBroker);
+procedure GetBrokerInfo(ConnectedBroker : TRPCBroker);  //P6
+function  NoSignOnNeeded : Boolean;
+function  ProcessExecute(Command: string; cShow: Word): Integer;
+function  GetAppHandle(ConnectedBroker : TRPCBroker): String;
+function ShowApplicationAndFocusOK(anApplication: TApplication): boolean;
+
+
+var
+  DebugData: string;
+  BrokerConnections: TStringList;   {this list stores all connections by socket number}
+  BrokerAllConnections: TStringList; {this list stores all connections to all of
+                the servers, by an application.  It's used in DisconnectAll}
+
+implementation
+
+uses
+  Loginfrm, RpcbErr, SelDiv{p8}, RpcSLogin{p13}, fRPCBErrMsg, Wsockc;
+
+const
+  DEFAULT_PULSE    : integer = 81000; //P6 default = 45% of 3 minutes.
+  MINIMUM_TIMEOUT  : integer = 14;    //P6 shortest allowable timeout in secs.
+  PULSE_PERCENTAGE : integer = 45;    //P6 % of timeout for pulse frequency.
+
+{-------------------------- TMult.Create --------------------------
+------------------------------------------------------------------}
+constructor TMult.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FMultiple := TStringList.Create;
+end;
+
+{------------------------- TMult.Destroy --------------------------
+------------------------------------------------------------------}
+destructor TMult.Destroy;
+begin
+  ClearAll;
+  FMultiple.Free;
+  FMultiple := nil;
+  inherited Destroy;
+end;
+
+{-------------------------- TMult.Assign --------------------------
+All of the items from source object are copied one by one into the
+target.  So if the source is later destroyed, target object will continue
+to hold the copy of all elements, completely unaffected.
+------------------------------------------------------------------}
+procedure TMult.Assign(Source: TPersistent);
+var
+  I: integer;
+  SourceStrings: TStrings;
+  S: TString;
+  SourceMult: TMult;
+begin
+  ClearAll;
+  if Source is TMult then begin
+    SourceMult := Source as TMult;
+     try
+      for I := 0 to SourceMult.FMultiple.Count - 1 do begin
+        S := TString.Create;
+        S.Str := (SourceMult.FMultiple.Objects[I] as TString).Str;
+        Self.FMultiple.AddObject(SourceMult.FMultiple[I], S);
+      end;
+    except
+    end;
+  end
+
+  else begin
+    SourceStrings := Source as TStrings;
+    for I := 0 to SourceStrings.Count - 1 do
+      Self[IntToStr(I)] := SourceStrings[I];
+  end;
+end;
+
+{------------------------- TMult.ClearAll -------------------------
+One by one, all Mult items are freed.
+------------------------------------------------------------------}
+procedure TMult.ClearAll;
+var
+  I: integer;
+begin
+     for I := 0 to FMultiple.Count - 1 do begin
+        FMultiple.Objects[I].Free;
+        FMultiple.Objects[I] := nil;
+     end;
+     FMultiple.Clear;
+end;
+
+{------------------------- TMult.GetCount -------------------------
+Returns the number of elements in the multiple
+------------------------------------------------------------------}
+function TMult.GetCount: Word;
+begin
+  Result := FMultiple.Count;
+end;
+
+{------------------------- TMult.GetFirst -------------------------
+Returns the subscript of the first element in the multiple
+------------------------------------------------------------------}
+function TMult.GetFirst: string;
+begin
+  if FMultiple.Count > 0 then Result := FMultiple[0]
+  else Result := '';
+end;
+
+{------------------------- TMult.GetLast --------------------------
+Returns the subscript of the last element in the multiple
+------------------------------------------------------------------}
+function TMult.GetLast: string;
+begin
+  if FMultiple.Count > 0 then Result := FMultiple[FMultiple.Count - 1]
+  else Result := '';
+end;
+
+{---------------------- TMult.GetFMultiple ------------------------
+Returns the VALUE of the element whose subscript is passed.
+------------------------------------------------------------------}
+function TMult.GetFMultiple(Index: string): string;
+var
+  S: TString;
+  BrokerComponent,ParamRecord: TComponent;
+  I: integer;
+  strError: string;
+begin
+  try
+    S := TString(FMultiple.Objects[FMultiple.IndexOf(Index)]);
+  except
+    on EListError do begin
+       {build appropriate error message}
+       strError := iff(Self.Name <> '', Self.Name, 'TMult_instance');
+       strError := strError + '[' + Index + ']' + #13#10 + 'is undefined';
+       try
+         ParamRecord := Self.Owner;
+         BrokerComponent := Self.Owner.Owner.Owner;
+         if (ParamRecord is TParamRecord) and (BrokerComponent is TRPCBroker) then begin
+           I := 0;
+           {if there is an easier way to figure out which array element points
+           to this instance of a multiple, use it}   // p13
+           while TRPCBroker(BrokerComponent).Param[I] <> ParamRecord do inc(I);
+           strError := '.Param[' + IntToStr(I) + '].' + strError;
+           strError := iff(BrokerComponent.Name <> '', BrokerComponent.Name,
+                           'TRPCBroker_instance') + strError;
+         end;
+       except
+       end;
+       raise Exception.Create(strError);
+    end;
+  end;
+  Result := S.Str;
+end;
+
+{---------------------- TMult.SetGetSorted ------------------------
+------------------------------------------------------------------}
+function  TMult.GetSorted: boolean;
+begin
+  Result := FMultiple.Sorted;
+end;
+
+{---------------------- TMult.SetFMultiple ------------------------
+Stores a new element in the multiple.  FMultiple (TStringList) is the
+structure, which is used to hold the subscript and value pair.  Subscript
+is stored as the String, value is stored as an object of the string.
+------------------------------------------------------------------}
+procedure TMult.SetFMultiple(Index: string; Value: string);
+var
+  S: TString;
+  Pos: integer;
+begin
+  Pos := FMultiple.IndexOf(Index);       {see if this subscript already exists}
+  if Pos = -1 then begin                 {if subscript is new}
+     S := TString.Create;                {create string object}
+     S.Str := Value;                     {put value in it}
+     FMultiple.AddObject(Index, S);      {add it}
+   end
+  else
+     TString(FMultiple.Objects[Pos]).Str := Value; { otherwise replace the value}
+end;
+
+{---------------------- TMult.SetSorted ------------------------
+------------------------------------------------------------------}
+procedure TMult.SetSorted(Value: boolean);
+begin
+  FMultiple.Sorted := Value;
+end;
+
+{-------------------------- TMult.Order --------------------------
+Returns the subscript string of the next or previous element from the
+StartSubscript.  This is very similar to the $O function available in M.
+Null string ('') is returned when reaching beyong the first or last
+element, or when list is empty.
+Note: A major difference between the M $O and this function is that
+      in this function StartSubscript must identify a valid subscript
+      in the list.
+------------------------------------------------------------------}
+function TMult.Order(const StartSubscript: string; Direction: integer): string;
+var
+  Index: longint;
+begin
+  Result := '';
+  if StartSubscript = '' then
+     if Direction > 0 then Result := First
+     else Result := Last
+  else begin
+     Index := Position(StartSubscript);
+     if Index > -1 then
+        if (Index < (Count - 1)) and (Direction > 0) then
+           Result := FMultiple[Index + 1]
+        else if (Index > 0) and (Direction < 0) then
+           Result := FMultiple[Index - 1];
+  end
+end;
+
+{------------------------- TMult.Position -------------------------
+Returns the long integer value which is the index position of the
+element in the list.  Opposite of TMult.Subscript().  Remember that
+the list is 0 based!
+------------------------------------------------------------------}
+function TMult.Position(const Subscript: string): longint;
+begin
+  Result := FMultiple.IndexOf(Subscript);
+end;
+
+{------------------------ TMult.Subscript -------------------------
+Returns the string subscript of the element whose position in the list
+is passed in.  Opposite of TMult.Position().  Remember that the list is 0 based!
+------------------------------------------------------------------}
+function TMult.Subscript(const Position: longint): string;
+begin
+  Result := '';
+  if (Position > -1) and (Position < Count) then
+     Result := FMultiple[Position];
+end;
+
+{---------------------- TParamRecord.Create -----------------------
+Creates TParamRecord instance and automatically creates TMult.  The
+name of Mult is also set in case it may be need if exception will be raised.
+------------------------------------------------------------------}
+constructor TParamRecord.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FMult := TMult.Create(Self);
+  FMult.Name := 'Mult';
+  {note: FMult is destroyed in the SetClearParameters method}
+end;
+
+destructor TParamRecord.Destroy;
+begin
+  FMult.Free;
+  FMult := nil;
+  inherited;
+end;
+
+{------------------------- TParams.Create -------------------------
+------------------------------------------------------------------}
+constructor TParams.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FParameters := TList.Create;   {for now, empty list}
+end;
+
+{------------------------ TParams.Destroy -------------------------
+------------------------------------------------------------------}
+destructor TParams.Destroy;
+begin
+  Clear;                         {clear the Multiple first!}
+  FParameters.Free;
+  FParameters := nil;
+  inherited Destroy;
+end;
+
+{------------------------- TParams.Assign -------------------------
+------------------------------------------------------------------}
+procedure TParams.Assign(Source: TPersistent);
+var
+  I: integer;
+  SourceParams: TParams;
+begin
+  Self.Clear;
+  SourceParams := Source as TParams;
+  for I := 0 to SourceParams.Count - 1 do begin
+    Self[I].Value := SourceParams[I].Value;
+    Self[I].PType := SourceParams[I].PType;
+    Self[I].Mult.Assign(SourceParams[I].Mult);
+  end
+end;
+
+{------------------------- TParams.Clear --------------------------
+------------------------------------------------------------------}
+procedure TParams.Clear;
+var
+  ParamRecord: TParamRecord;
+  I: integer;
+begin
+  if FParameters <> nil then begin
+    for I := 0 to FParameters.Count - 1 do begin
+      ParamRecord := TParamRecord(FParameters.Items[I]);
+      if ParamRecord <> nil then begin  //could be nil if params were skipped by developer
+        ParamRecord.FMult.Free;
+        ParamRecord.FMult := nil;
+        ParamRecord.Free;
+      end;
+    end;
+    FParameters.Clear;             {release FParameters TList}
+  end;
+end;
+
+{------------------------ TParams.GetCount ------------------------
+------------------------------------------------------------------}
+function TParams.GetCount: Word;
+begin
+  if FParameters = nil then Result := 0
+  else Result := FParameters.Count;
+end;
+
+{---------------------- TParams.GetParameter ----------------------
+------------------------------------------------------------------}
+function TParams.GetParameter(Index: integer): TParamRecord;
+begin
+  if Index >= FParameters.Count then             {if element out of bounds,}
+     while FParameters.Count <= Index do
+       FParameters.Add(nil);                     {setup place holders}
+  if FParameters.Items[Index] = nil then begin   {if just a place holder,}
+     {point it to new memory block}
+     FParameters.Items[Index] := TParamRecord.Create(Self);
+     TParamRecord(FParameters.Items[Index]).PType := undefined; {initialize}
+  end;
+  Result := FParameters.Items[Index];            {return requested parameter}
+end;
+
+{---------------------- TParams.SetParameter ----------------------
+------------------------------------------------------------------}
+procedure TParams.SetParameter(Index: integer; Parameter: TParamRecord);
+begin
+  if Index >= FParameters.Count then             {if element out of bounds,}
+     while FParameters.Count <= Index do
+       FParameters.Add(nil);                     {setup place holders}
+  if FParameters.Items[Index] = nil then         {if just a place holder,}
+     FParameters.Items[Index] := Parameter;      {point it to passed parameter}
+end;
+
+{------------------------ TRPCBroker.Create -----------------------
+------------------------------------------------------------------}
+constructor TRPCBroker.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  {set defaults}
+
+// This constant defined in the interface section needs to be updated for each release
+  FBrokerVersion := CURRENT_RPC_VERSION;
+
+  FClearParameters := boolean(StrToInt
+                   (ReadRegDataDefault(HKLM,REG_BROKER,'ClearParameters','1')));
+  FClearResults := boolean(StrToInt
+                   (ReadRegDataDefault(HKLM,REG_BROKER,'ClearResults','1')));
+  FDebugMode := False;
+  FParams := TParams.Create(Self);
+  FResults := TStringList.Create;
+  FServer := ReadRegDataDefault(HKLM,REG_BROKER,'Server','BROKERSERVER');
+  FPulse  := TTimer.Create(Self);  //P6
+  FListenerPort := StrToInt
+                  (ReadRegDataDefault(HKLM,REG_BROKER,'ListenerPort','9200'));
+  FRpcVersion := '0';
+  FRPCTimeLimit := MIN_RPCTIMELIMIT;
+  with FPulse do ///P6
+  begin
+    Enabled := False;  //P6
+    Interval := DEFAULT_PULSE; //P6
+    OnTimer  := DoPulseOnTimer;  //P6
+  end;
+  FLogin := TVistaLogin.Create(Self);  //p13
+  FKernelLogin := True;  //p13
+  FUser := TVistaUser.Create; //p13
+  FShowErrorMsgs := semRaise; //p13
+  XWBWinsock := TXWBWinsock.Create;
+
+  FIsBackwardCompatibleConnection := True;  // default
+  Application.ProcessMessages;
+end;
+
+{----------------------- TRPCBroker.Destroy -----------------------
+------------------------------------------------------------------}
+destructor TRPCBroker.Destroy;
+begin
+  Connected := False;
+  TXWBWinsock(XWBWinsock).Free;
+  FParams.Free;
+  FParams := nil;
+  FResults.Free;
+  FResults := nil;
+  FPulse.Free; //P6
+  FPulse := nil;
+  FUser.Free;
+  FUser := nil;
+  FLogin.Free;
+  FLogin := nil;
+  inherited Destroy;
+end;
+
+{--------------------- TRPCBroker.CreateContext -------------------
+This function is part of the overall Broker security.
+The passed context string is essentially a Client/Server type option
+on the server.  The server sets up MenuMan environment variables for this
+context which will later be used to screen RPCs.  Only those RPCs which are
+in the multiple field of this context option will be permitted to run.
+------------------------------------------------------------------}
+function TRPCBroker.CreateContext(strContext: string): boolean;
+var
+  InternalBroker: TRPCBroker;                       {use separate component}
+  Str: String;
+begin
+  Result := False;
+  Connected := True;
+  InternalBroker := nil;
+  try
+    InternalBroker := TRPCBroker.Create(Self);
+    InternalBroker.FSocket := Self.Socket;   // p13 -- permits multiple broker connections to same server/port
+    with InternalBroker do
+    begin
+{
+      TXWBWinsock(InternalBroker.XWBWinsock).IsBackwardsCompatible := TXWBWinsock(Self.XWBWinsock).IsBackwardsCompatible;
+      TXWBWinsock(InternalBroker.XWBWinsock).OriginalConnectionOnly := TXWBWinsock(Self.XWBWinsock).OriginalConnectionOnly;
+}
+      Tag := 1234;
+      ShowErrorMsgs := Self.ShowerrorMsgs;
+      Server := Self.Server;                   {inherit application server}
+      ListenerPort := Self.ListenerPort;       {inherit listener port}
+      DebugMode := Self.DebugMode;             {inherit debug mode property}
+      RemoteProcedure := 'XWB CREATE CONTEXT'; {set up RPC}
+      Param[0].PType := literal;
+      Param[0].Value := Encrypt(strContext);
+      try
+        Str := strCall;
+        if Str = '1' then
+        begin                   // make the call  // p13
+          Result := True;                       // p13
+          self.FCurrentContext := strContext;        // p13
+        end                                     // p13
+        else
+        begin
+          Result := False;
+          self.FCurrentContext := '';
+        end;
+      except            // Code added to return False if User doesn't have access
+        on e: EBrokerError do
+        begin
+          self.FCurrentContext := '';
+          if Pos('does not have access to option',e.Message) > 0 then
+          begin
+            Result := False
+          end
+          else
+            Raise;
+        end;
+      end;
+      if RPCBError <> '' then
+        self.RPCBError := RPCBError;
+    end;
+  finally
+    InternalBroker.XWBWinsock := nil;
+    InternalBroker.Free;                            {release memory}
+  end;
+end;
+
+{------------------------ TRPCBroker.Loaded -----------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.Loaded;
+begin
+  inherited Loaded;
+end;
+
+{------------------------- TRPCBroker.Call ------------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.Call;
+var
+  ResultBuffer: TStrings;
+begin
+  ResultBuffer := TStringList.Create;
+  try
+    if ClearResults then ClearResults := True;
+    lstCall(ResultBuffer);
+    Self.Results.AddStrings(ResultBuffer);
+  finally
+    ResultBuffer.Clear;
+    ResultBuffer.Free;
+  end;
+end;
+
+{----------------------- TRPCBroker.lstCall -----------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.lstCall(OutputBuffer: TStrings);
+var
+  ManyStrings: PChar;
+begin
+  ManyStrings := pchCall;            {make the call}
+  OutputBuffer.SetText(ManyStrings); {parse result of call, format as list}
+  StrDispose(ManyStrings);           {raw result no longer needed, get back mem}
+end;
+
+{----------------------- TRPCBroker.strCall -----------------------
+------------------------------------------------------------------}
+function TRPCBroker.strCall: string;
+var
+  ResultString: PChar;
+begin
+  ResultString := pchCall;           {make the call}
+  Result := StrPas(ResultString);    {convert and present as Pascal string}
+  StrDispose(ResultString);          {raw result no longer needed, get back mem}
+end;
+
+{--------------------- TRPCBroker.SetConnected --------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.SetConnected(Value: Boolean);
+var
+  BrokerDir, Str1, Str2, Str3 :string;
+begin
+  RPCBError := '';
+  Login.ErrorText := '';
+  if (Connected <> Value) and not(csReading in ComponentState) then begin
+    if Value and (FConnecting <> Value) then begin                 {connect}
+      FSocket := ExistingSocket(Self);
+      FConnecting := True; // FConnected := True;
+      try
+        if FSocket = 0  then
+        begin
+          {Execute Client Agent from directory in Registry.}
+          BrokerDir := ReadRegData(HKLM, REG_BROKER, 'BrokerDr');
+          if BrokerDir <> '' then
+            ProcessExecute(BrokerDir + '\ClAgent.Exe', sw_ShowNoActivate)
+          else
+            ProcessExecute('ClAgent.Exe', sw_ShowNoActivate);
+          if DebugMode and (not OldConnectionOnly) then
+          begin
+            Str1 := 'Control of debugging has been moved from the client to the server. To start a Debug session, do the following:'+#13#10#13#10;
+            Str2 := '1. On the server, set initial breakpoints where desired.'+#13#10+'2. DO DEBUG^XWBTCPM.'+#13#10+'3. Enter a unique Listener port number (i.e., a port number not in general use).'+#13#10;
+            Str3 := '4. Connect the client application using the port number entered in Step #3.';
+            ShowMessage(Str1 + Str2 + Str3);
+          end;
+          TXWBWinsock(XWBWinsock).IsBackwardsCompatible := FIsBackwardCompatibleConnection;
+          TXWBWinsock(XWBWinsock).OldConnectionOnly := FOldConnectionOnly;
+          FSocket := TXWBWinsock(XWBWinsock).NetworkConnect(DebugMode, FServer,
+                                    ListenerPort, FRPCTimeLimit);
+          AuthenticateUser(Self);
+          FPulse.Enabled := True; //P6 Start heartbeat.
+          StoreConnection(Self);  //MUST store connection before CreateContext()
+          CreateContext('');      //Closes XUS SIGNON context.
+        end
+        else
+        begin                     //p13
+          StoreConnection(Self);
+          FPulse.Enabled := True; //p13
+        end;                      //p13
+        FConnected := True;         // jli mod 12/17/01
+        FConnecting := False;
+      except
+        on E: EBrokerError do begin
+          if E.Code = XWB_BadSignOn then
+            TXWBWinsock(XWBWinsock).NetworkDisconnect(FSocket);
+          FSocket := 0;
+          FConnected := False;
+          FConnecting := False;
+          FRPCBError := E.Message;               // p13  handle errors as specified
+          if Login.ErrorText <> '' then
+            FRPCBError := E.Message + chr(10) + Login.ErrorText;
+          if Assigned(FOnRPCBFailure) then       // p13
+            FOnRPCBFailure(Self)                 // p13
+          else if ShowErrorMsgs = semRaise then
+            Raise;                               // p13
+//          raise;   {this is where I would do OnNetError}
+        end{on};
+      end{try};
+    end{if}
+    else if not Value then
+    begin                           //p13
+      FConnected := False;          //p13
+      FPulse.Enabled := False;      //p13
+      if RemoveConnection(Self) = NoMore then begin
+        {FPulse.Enabled := False;  ///P6;p13 }
+        TXWBWinsock(XWBWinsock).NetworkDisconnect(Socket);   {actually disconnect from server}
+        FSocket := 0;                {store internal}
+        //FConnected := False;      //p13
+      end{if};
+    end; {else}
+  end{if};
+end;
+
+{----------------- TRPCBroker.SetClearParameters ------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.SetClearParameters(Value: Boolean);
+begin
+  if Value then FParams.Clear;
+  FClearParameters := Value;
+end;
+
+{------------------- TRPCBroker.SetClearResults -------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.SetClearResults(Value: Boolean);
+begin
+  if Value then begin   {if True}
+     FResults.Clear;
+  end;
+  FClearResults := Value;
+end;
+
+{---------------------- TRPCBroker.SetResults ---------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.SetResults(Value: TStrings);
+begin
+  FResults.Assign(Value);
+end;
+
+{----------------------- TRPCBroker.SetRPCTimeLimit -----------------
+------------------------------------------------------------------}
+procedure   TRPCBroker.SetRPCTimeLimit(Value: integer);
+begin
+  if Value <> FRPCTimeLimit then
+    if Value > MIN_RPCTIMELIMIT then
+      FRPCTimeLimit := Value
+    else
+      FRPCTimeLimit := MIN_RPCTIMELIMIT;
+end;
+
+{----------------------- TRPCBroker.SetServer ---------------------
+------------------------------------------------------------------}
+procedure TRPCBroker.SetServer(Value: TServer);
+begin
+  {if changing the name of the server, make sure to disconnect first}
+  if (Value <> FServer) and Connected then begin
+     Connected := False;
+  end;
+  FServer := Value;
+end;
+
+{--------------------- TRPCBroker.pchCall ----------------------
+Lowest level remote procedure call that a TRPCBroker component can make.
+1. Returns PChar.
+2. Converts Remote Procedure to PChar internally.
+------------------------------------------------------------------}
+function TRPCBroker.pchCall: PChar;
+var
+  Value, Sec, App: PChar;
+  BrokerError: EBrokerError;
+  blnRestartPulse : boolean;   //P6
+begin
+  RPCBError := '';
+  Connected := True;
+  BrokerError := nil;
+  Value := nil;
+  blnRestartPulse := False;   //P6
+
+  Sec := StrAlloc(255);
+  App := StrAlloc(255);
+
+  try
+    if FPulse.Enabled then          ///P6 If Broker was sending pulse,
+    begin
+     FPulse.Enabled := False;      ///   Stop pulse &
+      blnRestartPulse := True;     //   Set flag to restart pulse after RPC.
+    end;
+{
+    if Assigned(FOnRPCCall) then
+    begin
+      FOnRPCCall(Self, 1, RemoteProcedure, CurrentContext, RpcVersion, Param, FRPCTimeLimit, '', '', '', Now);
+    end;
+}
+    try
+      Value := TXWBWinsock(XWBWinsock).tCall(Socket, RemoteProcedure, RpcVersion, Param,
+                      Sec, App,FRPCTimeLimit);
+{
+      if Assigned(FOnRPCCall) then
+      begin
+        FOnRPCCall(Self, 2, RemoteProcedure, CurrentContext, RpcVersion, Param, FRPCTimeLimit, Result, Sec, App, Now);
+      end;
+}
+      if (StrLen(Sec) > 0) then
+      begin
+        BrokerError := EBrokerError.Create(StrPas(Sec));
+        BrokerError.Code := 0;
+        BrokerError.Action := 'Error Returned';
+      end;
+    except
+      on Etemp: EBrokerError do
+        with Etemp do
+        begin                             //save copy of error
+          BrokerError := EBrokerError.Create(message);  //field by field
+          BrokerError.Action := Action;
+          BrokerError.Code := Code;
+          BrokerError.Mnemonic := Mnemonic;
+          if Value <> nil then
+            StrDispose(Value);
+          Value := StrNew('');
+          {if severe error, mark connection as closed.  Per Enrique, we should
+          replace this check with some function, yet to be developed, which
+          will test the link.}
+          if ((Code >= 10050)and(Code <=10058))or(Action = 'connection lost') then
+          begin
+            Connected := False;
+            blnRestartPulse := False;  //P6
+          end;
+        end;
+    end;
+  finally
+    StrDispose(Sec); {do something with these}
+    Sec := nil;
+    StrDispose(App);
+    App := nil;
+    if ClearParameters then ClearParameters := True;    //prepare for next call
+  end;
+  Result := Value;
+  if Result = nil then Result := StrNew('');            //return empty string
+  if blnRestartPulse then FPulse.Enabled := True;       //Restart pulse. (P6)
+  if BrokerError <> nil then
+  begin
+    FRPCBError := BrokerError.Message;               // p13  handle errors as specified
+    if Login.ErrorText <> '' then
+      FRPCBError := BrokerError.Message + chr(10) + Login.ErrorText;
+    if Assigned(FOnRPCBFailure) then       // p13
+    begin
+      FOnRPCBFailure(Self);
+      StrDispose(Result);
+    end
+    else if FShowErrorMsgs = semRaise then
+    begin
+      StrDispose(Result);                 // return memory we won't use - caused a memory leak
+              Raise BrokerError;                               // p13
+    end
+    else   // silent, just return error message in FRPCBError
+      BrokerError.Free;   // return memory in BrokerError - otherwise is a memory leak
+//          raise;   {this is where I would do OnNetError}
+  end;  // if BrokerError <> nil
+end;
+
+
+{-------------------------- DisconnectAll -------------------------
+Find all connections in BrokerAllConnections list for the passed in
+server:listenerport combination and disconnect them. If at least one
+connection to the server:listenerport is found, then it and all other
+Brokers to the same server:listenerport will be disconnected; True
+will be returned.  Otherwise False will return.
+------------------------------------------------------------------}
+function DisconnectAll(Server: string; ListenerPort: integer): boolean;
+var
+  Index: integer;
+begin
+  Result := False;
+  while (Assigned(BrokerAllConnections) and
+        (BrokerAllConnections.Find(Server + ':' + IntToStr(ListenerPort), Index))) do begin
+    Result := True;
+    TRPCBroker(BrokerAllConnections.Objects[Index]).Connected := False;
+    {if the call above disconnected the last connection in the list, then
+    the whole list will be destroyed, making it necessary to check if it's
+    still assigned.}
+  end;
+end;
+
+{------------------------- StoreConnection ------------------------
+Each broker connection is stored in BrokerConnections list.
+------------------------------------------------------------------}
+procedure StoreConnection(Broker: TRPCBroker);
+begin
+  if BrokerConnections = nil then {list is created when 1st entry is added}
+    try
+      BrokerConnections := TStringList.Create;
+      BrokerConnections.Sorted := True;
+      BrokerConnections.Duplicates := dupAccept;  {store every connection}
+      BrokerAllConnections := TStringList.Create;
+      BrokerAllConnections.Sorted := True;
+      BrokerAllConnections.Duplicates := dupAccept;
+    except
+      TXWBWinsock(Broker.XWBWinsock).NetError('store connection',XWB_BldConnectList)
+    end;
+  BrokerAllConnections.AddObject(Broker.Server + ':' +
+                              IntToStr(Broker.ListenerPort), Broker);
+  BrokerConnections.AddObject(IntToStr(Broker.Socket), Broker);
+end;
+
+{------------------------ RemoveConnection ------------------------
+Result of this function will be False, if there are no more connections
+to the same server:listenerport as the passed in Broker.  If at least
+one other connection is found to the same server:listenerport, then Result
+will be True.
+------------------------------------------------------------------}
+function RemoveConnection(Broker: TRPCBroker): boolean;
+var
+  Index: integer;
+begin
+  Result := False;
+  if Assigned(BrokerConnections) then begin
+    {remove connection record of passed in Broker component}
+    BrokerConnections.Delete(BrokerConnections.IndexOfObject(Broker));
+    {look for one other connection to the same server:port}
+//    Result := BrokerConnections.Find(Broker.Server + ':' + IntToStr(Broker.ListenerPort), Index);
+    Result := BrokerConnections.Find(IntToStr(Broker.Socket), Index);
+    if BrokerConnections.Count = 0 then begin {if last entry removed,}
+      BrokerConnections.Free;                 {destroy whole list structure}
+      BrokerConnections := nil;
+    end;
+  end;  // if Assigned(BrokerConnections)
+  if Assigned(BrokerAllConnections) then begin
+    BrokerAllConnections.Delete(BrokerAllConnections.IndexOfObject(Broker));
+    if BrokerAllConnections.Count = 0 then begin
+      BrokerAllConnections.Free;
+      BrokerAllConnections := nil;
+    end;
+  end;   // if Assigned(BrokerAllConnections)
+end;
+
+{------------------------- ExistingSocket -------------------------
+------------------------------------------------------------------}
+function ExistingSocket(Broker: TRPCBroker): integer;
+// var
+//   Index: integer;
+begin
+  Result := Broker.Socket;
+{  Result := 0;                        // p13 to permit multiple Broker connections
+
+  if Assigned(BrokerConnections) and
+     BrokerConnections.Find(Broker.Server + ':' + IntToStr(Broker.ListenerPort), Index) then
+    Result := TRPCBroker(BrokerConnections.Objects[Index]).Socket;
+}
+end;
+
+{------------------------ AuthenticateUser ------------------------
+------------------------------------------------------------------}
+procedure AuthenticateUser(ConnectingBroker: TRPCBroker);
+var
+  SaveClearParmeters, SaveClearResults: boolean;
+  SaveParam: TParams;
+  SaveRemoteProcedure, SaveRpcVersion: string;
+  SaveResults: TStrings;
+  blnSignedOn: boolean;
+  SaveKernelLogin: boolean;
+  SaveVistaLogin: TVistaLogin;
+  OldExceptionHandler: TExceptionEvent;
+  OldHandle: THandle;
+begin
+  With ConnectingBroker do
+  begin
+    SaveParam := TParams.Create(nil);
+    SaveParam.Assign(Param);                  //save off settings
+    SaveRemoteProcedure := RemoteProcedure;
+    SaveRpcVersion := RpcVersion;
+    SaveResults := Results;
+    SaveClearParmeters := ClearParameters;
+    SaveClearResults := ClearResults;
+    ClearParameters := True;                  //set'em as I need'em
+    ClearResults := True;
+    SaveKernelLogin := FKernelLogin;     //  p13
+    SaveVistaLogin := FLogin;            //  p13
+  end;
+
+  blnSignedOn := False;                       //initialize to bad sign-on
+  
+  if ConnectingBroker.AccessVerifyCodes <> '' then   // p13 handle as AVCode single signon
+  begin
+    ConnectingBroker.Login.AccessCode := Piece(ConnectingBroker.AccessVerifyCodes, ';', 1);
+    ConnectingBroker.Login.VerifyCode := Piece(ConnectingBroker.AccessVerifyCodes, ';', 2);
+    ConnectingBroker.Login.Mode := lmAVCodes;
+    ConnectingBroker.FKernelLogIn := False;
+  end;
+
+  if ConnectingBroker.FKernelLogIn then
+  begin   //p13
+    if Assigned(Application.OnException) then
+      OldExceptionHandler := Application.OnException
+    else
+      OldExceptionHandler := nil;
+    Application.OnException := TfrmErrMsg.RPCBShowException;
+    frmSignon := TfrmSignon.Create(Application);
+    try
+
+  //    ShowApplicationAndFocusOK(Application);
+      OldHandle := GetForegroundWindow;
+      SetForegroundWindow(frmSignon.Handle);
+      PrepareSignonForm(ConnectingBroker);
+      if SetUpSignOn then                       //SetUpSignOn in loginfrm unit.
+      begin                                     //True if signon needed
+  {                                               // p13 handle as AVCode single signon
+        if ConnectingBroker.AccessVerifyCodes <> '' then
+        begin {do non interactive logon
+          frmSignon.accessCode.Text := Piece(ConnectingBroker.AccessVerifyCodes, ';', 1);
+          frmSignon.verifyCode.Text := Piece(ConnectingBroker.AccessVerifyCodes, ';', 2);
+          //Application.ProcessMessages;
+          frmSignon.btnOk.Click;
+        end
+        else frmSignOn.ShowModal;               //do interactive logon
+  }
+  //      ShowApplicationAndFocusOK(Application);
+  //      SetForegroundWindow(frmSignOn.Handle);
+        if frmSignOn.lblServer.Caption <> '' then
+        begin
+          frmSignOn.ShowModal;                    //do interactive logon   // p13
+          if frmSignOn.Tag = 1 then               //Tag=1 for good logon
+            blnSignedOn := True;                   //Successfull logon
+        end
+      end
+      else                                      //False when no logon needed
+        blnSignedOn := NoSignOnNeeded;          //Returns True always (for now!)
+      if blnSignedOn then                       //P6 If logged on, retrieve user info.
+      begin
+        GetBrokerInfo(ConnectingBroker);
+        if not SelDiv.ChooseDiv('',ConnectingBroker) then
+        begin
+          blnSignedOn := False;//P8
+          {Select division if multi-division user.  First parameter is 'userid'
+          (DUZ or username) for future use. (P8)}
+          ConnectingBroker.Login.ErrorText := 'Failed to select Division';  // p13 set some text indicating problem
+        end;
+      end;
+      SetForegroundWindow(OldHandle);
+    finally
+      frmSignon.Free;
+//      frmSignon.Release;                        //get rid of signon form
+
+//      if ConnectingBroker.Owner is TForm then
+//        SetForegroundWindow(TForm(ConnectingBroker.Owner).Handle)
+//      else
+//        SetForegroundWindow(ActiveWindow);
+        ShowApplicationAndFocusOK(Application);
+    end ; //try
+    if Assigned(OldExceptionHandler) then
+      Application.OnException := OldExceptionHandler;
+   end;   //if kernellogin
+                                                 // p13  following section for silent signon
+  if not ConnectingBroker.FKernelLogIn then
+    if ConnectingBroker.FLogin <> nil then     //the user.  vistalogin contains login info
+      blnsignedon := SilentLogin(ConnectingBroker);    // RpcSLogin unit
+  if not blnsignedon then
+  begin
+    ConnectingBroker.FLogin.FailedLogin(ConnectingBroker.FLogin);
+    TXWBWinsock(ConnectingBroker.XWBWinsock).NetworkDisconnect(ConnectingBroker.FSocket);
+  end
+  else
+    GetBrokerInfo(ConnectingBroker);
+
+  //reset the Broker
+  with ConnectingBroker do
+  begin
+    ClearParameters := SaveClearParmeters;
+    ClearResults := SaveClearResults;
+    Param.Assign(SaveParam);                  //restore settings
+    SaveParam.Free;
+    RemoteProcedure := SaveRemoteProcedure;
+    RpcVersion := SaveRpcVersion;
+    Results := SaveResults;
+    FKernelLogin := SaveKernelLogin;         // p13
+    FLogin := SaveVistaLogin;                // p13
+  end;
+
+  if not blnSignedOn then                     //Flag for unsuccessful signon.
+    TXWBWinsock(ConnectingBroker.XWBWinsock).NetError('',XWB_BadSignOn);               //Will raise error.
+
+end;
+
+{------------------------ GetBrokerInfo ------------------------
+P6  Retrieve information about user with XWB GET BROKER INFO
+    RPC. For now, only Timeout value is retrieved in Results[0].
+------------------------------------------------------------------}
+procedure GetBrokerInfo(ConnectedBroker: TRPCBroker);
+begin
+  GetUserInfo(ConnectedBroker);  //  p13  Get User info into User property (TVistaUser object)
+  With ConnectedBroker do        //(dcm) Use one of objects below
+  begin                          // and skip this RPC? or make this and
+    RemoteProcedure := 'XWB GET BROKER INFO';   // others below as components
+    try
+      Call;
+      if Results.Count > 0 then
+        if StrToInt(Results[0]) > MINIMUM_TIMEOUT then
+          FPulse.Interval := (StrToInt(Results[0]) * 10 * PULSE_PERCENTAGE);
+    except
+      On e: EBrokerError do
+        ShowMessage('A problem was encountered getting Broker information.  '+e.Message);  //TODO
+    end;
+  end;
+end;
+
+{------------------------ NoSignOnNeeded ------------------------
+------------------------------------------------------------------}
+{Currently a placeholder for actions that may be needed in connection
+with authenticating a user who needn't sign on (Single Sign on feature).
+Returns True if no signon is needed
+        False if signon is needed.}
+function  NoSignOnNeeded : Boolean;
+begin
+  Result := True;
+end;
+
+{------------------------- ProcessExecute -------------------------
+This function is borrowed from "Delphi 2 Developer's Guide" by Pacheco & Teixera.
+See chapter 11, page 406.  It encapsulates and simplifies use of
+Windows CreateProcess function.
+------------------------------------------------------------------}
+function ProcessExecute(Command: string; cShow: Word): Integer;
+{ This method encapsulates the call to CreateProcess() which creates
+  a new process and its primary thread. This is the method used in
+  Win32 to execute another application, This method requires the use
+  of the TStartInfo and TProcessInformation structures. These structures
+  are not documented as part of the Delphi 2.0 online help but rather
+  the Win32 help as STARTUPINFO and PROCESS_INFORMATION.
+
+  The CommandLine paremeter specifies the pathname of the file to
+  execute.
+
+  The cShow paremeter specifies one of the SW_XXXX constants which
+  specifies how to display the window. This value is assigned to the
+  sShowWindow field of the TStartupInfo structure. }
+var
+  Rslt: LongBool;
+  StartUpInfo: TStartUpInfo;  // documented as STARTUPINFO
+  ProcessInfo: TProcessInformation; // documented as PROCESS_INFORMATION
+begin
+  { Clear the StartupInfo structure }
+  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
+  { Initialize the StartupInfo structure with required data.
+    Here, we assign the SW_XXXX constant to the wShowWindow field
+    of StartupInfo. When specifing a value to this field the
+    STARTF_USESSHOWWINDOW flag must be set in the dwFlags field.
+    Additional information on the TStartupInfo is provided in the Win32
+    online help under STARTUPINFO. }
+  with StartupInfo do begin
+    cb := SizeOf(TStartupInfo); // Specify size of structure
+    dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
+    wShowWindow := cShow
+  end;
+
+  { Create the process by calling CreateProcess(). This function
+    fills the ProcessInfo structure with information about the new
+    process and its primary thread. Detailed information is provided
+    in the Win32 online help for the TProcessInfo structure under
+    PROCESS_INFORMATION. }
+  Rslt := CreateProcess(PChar(Command), nil, nil, nil, False,
+    NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
+  { If Rslt is true, then the CreateProcess call was successful.
+    Otherwise, GetLastError will return an error code representing the
+    error which occurred. }
+  if Rslt then
+    with ProcessInfo do begin
+      { Wait until the process is in idle. }
+      WaitForInputIdle(hProcess, INFINITE);
+      CloseHandle(hThread); // Free the hThread  handle
+      CloseHandle(hProcess);// Free the hProcess handle
+      Result := 0;          // Set Result to 0, meaning successful
+    end
+  else Result := GetLastError; // Set result to the error code.
+end;
+
+
+{----------------------- GetAppHandle --------------------------
+Library function to return an Application Handle from the server
+which can be passed as a command line argument to an application
+the current application is starting.  The new application can use
+this AppHandle to perform a silent login via the lmAppHandle mode
+----------------------------------------------------------------}
+function  GetAppHandle(ConnectedBroker : TRPCBroker): String;   // p13
+begin
+  Result := '';
+  with ConnectedBroker do
+    begin
+      RemoteProcedure := 'XUS GET TOKEN';
+      Call;
+      Result := Results[0];
+    end;
+end;
+
+{----------------------- TRPCBroker.DoPulseOnTimer-----------------
+Called from the OnTimer event of the Pulse property.
+Broker environment should be the same after the procedure as before.
+Note: Results is not changed by strCall; so, Results needn't be saved.
+------------------------------------------------------------------}
+procedure TRPCBroker.DoPulseOnTimer(Sender: TObject);  //P6
+var
+  SaveClearParameters : Boolean;
+  SaveParam : TParams;
+  SaveRemoteProcedure, SaveRPCVersion : string;
+begin
+  SaveClearParameters := ClearParameters;  //Save existing properties
+  SaveParam := TParams.Create(nil);
+  SaveParam.Assign(Param);
+  SaveRemoteProcedure := RemoteProcedure;
+  SaveRPCVersion      := RPCVersion;
+  RemoteProcedure := 'XWB IM HERE';       //Set Properties for IM HERE
+  ClearParameters  := True;               //Erase existing PARAMs
+  RPCVersion      := '1.106';
+  try
+    try
+      strCall;                                //Make the call
+    except on e: EBrokerError do
+      begin
+//        Connected := False;                // set the connection as disconnected
+        if Assigned(FOnPulseError) then
+          FOnPulseError(Self, e.Message)
+        else
+          raise e;
+      end;
+    end;
+  finally
+    ClearParameters := SaveClearParameters;  //Restore pre-existing properties.
+    Param.Assign(SaveParam);
+    SaveParam.Free;
+    RemoteProcedure := SaveRemoteProcedure;
+    RPCVersion      := SaveRPCVersion;
+  end;
+
+end;
+
+procedure TRPCBroker.SetKernelLogIn(const Value: Boolean);   // p13
+begin
+  FKernelLogIn := Value;
+end;
+{
+procedure TRPCBroker.SetLogIn(const Value: TVistaLogIn);     // p13
+begin
+  FLogIn := Value;
+end;
+}
+procedure TRPCBroker.SetUser(const Value: TVistaUser);       // p13
+begin
+  FUser := Value;
+end;
+
+
+{*****TVistaLogin***** p13}
+
+constructor TVistaLogin.Create(AOwner: TComponent);           // p13
+begin
+  inherited create;
+  FDivLst := TStringList.Create;
+end;
+
+destructor TVistaLogin.Destroy;                              // p13
+begin
+  FDivLst.Free;
+  FDivLst := nil;
+  inherited;
+end;
+
+procedure TVistaLogin.FailedLogin(Sender: TObject);         // p13
+begin
+  if Assigned(FOnFailedLogin) then FOnFailedLogin(Self)
+  else  TXWBWinsock(TRPCBroker(Sender).XWBWinsock).NetError('',XWB_BadSignOn);
+end;
+
+procedure TVistaLogin.SetAccessCode(const Value: String);   // p13
+begin
+  FAccessCode := Value;
+end;
+
+procedure TVistaLogin.SetDivision(const Value: String);     // p13
+begin
+  FDivision := Value;
+end;
+
+procedure TVistaLogin.SetDuz(const Value: string);          // p13
+begin
+  FDUZ := Value;
+end;
+
+procedure TVistaLogin.SetErrorText(const Value: string);    // p13
+begin
+  FErrorText := Value;
+end;
+
+procedure TVistaLogin.SetLogInHandle(const Value: String);   // p13
+begin
+  FLogInHandle := Value;
+end;
+
+procedure TVistaLogin.SetMode(const Value: TLoginMode);      // p13
+begin
+  FMode := Value;
+end;
+
+procedure TVistaLogin.SetMultiDivision(Value: Boolean);      // p13
+begin
+  FMultiDivision := Value;
+end;
+
+procedure TVistaLogin.SetNTToken(const Value: String);       // p13
+begin
+end;
+
+procedure TVistaLogin.SetPromptDiv(const Value: boolean);    // p13
+begin
+  FPromptDiv := Value;
+end;
+
+procedure TVistaLogin.SetVerifyCode(const Value: String);    // p13
+begin
+  FVerifyCode := Value;
+end;
+
+{***** TVistaUser ***** p13 }
+
+procedure TVistaUser.SetDivision(const Value: String);       // p13
+begin
+  FDivision := Value;
+end;
+
+procedure TVistaUser.SetDTime(const Value: string);          // p13
+begin
+  FDTime := Value;
+end;
+
+procedure TVistaUser.SetDUZ(const Value: String);             // p13
+begin
+  FDUZ := Value;
+end;
+
+procedure TVistaUser.SetLanguage(const Value: string);       // p13
+begin
+  FLanguage := Value;
+end;
+
+procedure TVistaUser.SetName(const Value: String);           // p13
+begin
+  FName := Value;
+end;
+
+procedure TVistaUser.SetServiceSection(const Value: string);  // p13
+begin
+  FServiceSection := Value;
+end;
+
+procedure TVistaUser.SetStandardName(const Value: String);    // p13
+begin
+  FStandardName := Value;
+end;
+
+procedure TVistaUser.SetTitle(const Value: string);           // p13
+begin
+  FTitle := Value;
+end;
+
+procedure TVistaUser.SetVerifyCodeChngd(const Value: Boolean);   // p13
+begin
+  FVerifyCodeChngd := Value;
+end;
+
+Function ShowApplicationAndFocusOK(anApplication: TApplication): boolean;
+var
+  j: integer;
+  Stat2: set of (sWinVisForm,sWinVisApp,sIconized);
+  hFGWnd: THandle;
+begin
+  Stat2 := []; {sWinVisForm,sWinVisApp,sIconized}
+
+  If anApplication.MainForm <> nil then
+    If IsWindowVisible(anApplication.MainForm.Handle)
+      then Stat2 := Stat2 + [sWinVisForm];
+
+  If IsWindowVisible(anApplication.Handle)
+      then Stat2 := Stat2 + [sWinVisApp];
+
+  If IsIconic(anApplication.Handle)
+      then Stat2 := Stat2 + [sIconized];
+
+  Result := true;
+  If sIconized in Stat2 then begin {A}
+    j := SendMessage(anApplication.Handle,WM_SYSCOMMAND,SC_RESTORE,0);
+    Result := j<>0;
+  end;
+  If Stat2 * [sWinVisForm,sIconized] = [] then begin {S}
+    if anApplication.MainForm <> nil then
+      anApplication.MainForm.Show;
+  end;
+  If (Stat2 * [sWinVisForm,sIconized] <> []) or
+     (sWinVisApp in Stat2) then begin {G}
+{$IFNDEF D6_OR_HIGHER}
+    hFGWnd := GetForegroundWindow;
+    try
+      AttachThreadInput(
+          GetWindowThreadProcessId(hFGWnd, nil),
+          GetCurrentThreadId,True);
+      Result := SetForegroundWindow(anApplication.Handle);
+    finally
+      AttachThreadInput(
+          GetWindowThreadProcessId(hFGWnd, nil),
+          GetCurrentThreadId, False);
+    end;
+{$ENDIF}
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestBroker.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestBroker.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestBroker.dof	(revision 1676)
@@ -0,0 +1,84 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;Indy50;XWB_R50;SharedBroker_D50;CPRSctrls;ZipMasterD5;ICSDEL50;TCynthesisAppUpdateD5
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+D:\PROGRA~1\Borland\Delphi5\Projects\Bpl\Fmdc_R50.bpl=VistA Fileman Delphi Components
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestBroker.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestBroker.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestBroker.dpr	(revision 1676)
@@ -0,0 +1,14 @@
+program UnitTestBroker;
+
+uses
+  Forms,
+  TestFramework,
+  GuiTestRunner,
+  uUnitTestBroker in 'uUnitTestBroker.pas';
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  GuiTestRunner.RunRegisteredTests;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestMFunStr.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestMFunStr.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestMFunStr.dof	(revision 1676)
@@ -0,0 +1,84 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;Indy50;XWB_R50;SharedBroker_D50;CPRSctrls;ZipMasterD5;ICSDEL50;TCynthesisAppUpdateD5
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+D:\PROGRA~1\Borland\Delphi5\Projects\Bpl\Fmdc_R50.bpl=VistA Fileman Delphi Components
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestMFunStr.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestMFunStr.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/UnitTestMFunStr.dpr	(revision 1676)
@@ -0,0 +1,14 @@
+program UnitTestMFunStr;
+
+uses
+  Forms,
+  TestFramework,
+  GuiTestRunner,
+  uUnitTestMFunStr in 'uUnitTestMFunStr.pas';
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  GuiTestRunner.RunRegisteredTests;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/VCEdit.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/VCEdit.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/VCEdit.dfm	(revision 1676)
@@ -0,0 +1,152 @@
+object frmVCEdit: TfrmVCEdit
+  Left = 197
+  Top = 197
+  Width = 411
+  Height = 166
+  Caption = 'Change VISTA Verify Code'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblOldVC: TLabel
+    Left = 16
+    Top = 24
+    Width = 74
+    Height = 13
+    Caption = '&Old verify code:'
+    FocusControl = edtOldVC
+  end
+  object lblNewVC: TLabel
+    Left = 16
+    Top = 64
+    Width = 80
+    Height = 13
+    Caption = '&New verify code:'
+    FocusControl = edtNewVC
+  end
+  object lblConfirmVC: TLabel
+    Left = 16
+    Top = 104
+    Width = 116
+    Height = 13
+    Caption = 'Con&firm new verify code:'
+    FocusControl = edtConfirmVC
+  end
+  object edtOldVC: TEdit
+    Left = 144
+    Top = 16
+    Width = 121
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 0
+    OnChange = edtOldVCChange
+  end
+  object edtNewVC: TEdit
+    Left = 144
+    Top = 56
+    Width = 121
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 1
+    OnChange = edtOldVCChange
+    OnExit = edtNewVCExit
+  end
+  object edtConfirmVC: TEdit
+    Left = 144
+    Top = 96
+    Width = 121
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 2
+    OnChange = edtOldVCChange
+  end
+  object btnOK: TBitBtn
+    Left = 312
+    Top = 16
+    Width = 75
+    Height = 25
+    Caption = '&OK'
+    TabOrder = 3
+    OnClick = btnOKClick
+    Glyph.Data = {
+      BE060000424DBE06000000000000360400002800000024000000120000000100
+      0800000000008802000000000000000000000001000000010000000000000000
+      80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+      A600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000F0FBFF00A4A0A000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030303030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      03030303030303030303030303030303030303030303FF030303030303030303
+      03030303030303040403030303030303030303030303030303F8F8FF03030303
+      03030303030303030303040202040303030303030303030303030303F80303F8
+      FF030303030303030303030303040202020204030303030303030303030303F8
+      03030303F8FF0303030303030303030304020202020202040303030303030303
+      0303F8030303030303F8FF030303030303030304020202FA0202020204030303
+      0303030303F8FF0303F8FF030303F8FF03030303030303020202FA03FA020202
+      040303030303030303F8FF03F803F8FF0303F8FF03030303030303FA02FA0303
+      03FA0202020403030303030303F8FFF8030303F8FF0303F8FF03030303030303
+      FA0303030303FA0202020403030303030303F80303030303F8FF0303F8FF0303
+      0303030303030303030303FA0202020403030303030303030303030303F8FF03
+      03F8FF03030303030303030303030303FA020202040303030303030303030303
+      0303F8FF0303F8FF03030303030303030303030303FA02020204030303030303
+      03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403
+      030303030303030303030303F8FF0303F8FF03030303030303030303030303FA
+      0202040303030303030303030303030303F8FF03F8FF03030303030303030303
+      03030303FA0202030303030303030303030303030303F8FFF803030303030303
+      030303030303030303FA0303030303030303030303030303030303F803030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      0303}
+    NumGlyphs = 2
+  end
+  object btnCancel: TBitBtn
+    Left = 312
+    Top = 56
+    Width = 75
+    Height = 25
+    Caption = '&Cancel'
+    TabOrder = 4
+    Kind = bkCancel
+  end
+  object btnHelp: TBitBtn
+    Left = 312
+    Top = 96
+    Width = 75
+    Height = 25
+    TabOrder = 5
+    OnClick = btnHelpClick
+    Kind = bkHelp
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/VCEdit.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/VCEdit.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/VCEdit.pas	(revision 1676)
@@ -0,0 +1,301 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Verify Code edit dialog.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit VCEdit;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Buttons,
+  {Broker units}
+  Trpcb, Hash;
+
+type
+  TVCEdit = class(TComponent)
+    private
+      FRPCBroker : TRPCBroker;
+      FOldVC     : string;
+      FConfirmFailCnt : integer;  //counts failed confirms.
+      FHelp      : string;
+      FOldVCSet: Boolean;  // Shows whether old code was passed in, even if NULL
+      procedure NoChange(reason : string);
+    protected
+    public
+      constructor Create(AOwner: TComponent); override;
+      destructor Destroy; override;
+      function ChangeVCKnowOldVC(strOldVC : string) : Boolean;
+      function ChangeVC : Boolean;
+    published
+      property RPCBroker : TRPCBroker read FRPCBroker write FRPCBroker;
+  end;
+
+
+
+  TfrmVCEdit = class(TForm)
+    lblOldVC: TLabel;
+    lblNewVC: TLabel;
+    lblConfirmVC: TLabel;
+    edtOldVC: TEdit;
+    edtNewVC: TEdit;
+    edtConfirmVC: TEdit;
+    btnOK: TBitBtn;
+    btnCancel: TBitBtn;
+    btnHelp: TBitBtn;
+    procedure btnOKClick(Sender: TObject);
+    procedure btnHelpClick(Sender: TObject);
+    procedure edtNewVCExit(Sender: TObject);
+    procedure edtOldVCChange(Sender: TObject);
+  protected
+    { Private declarations }
+    FVCEdit : TVCEdit;   //Links form to instance of VCEdit.
+  public
+    { Public declarations }
+  end;
+
+function ChangeVerify(RPCBroker: TRPCBroker): Boolean;
+function SilentChangeVerify(RPCBroker: TRPCBroker; OldVerify, NewVerify1, NewVerify2: String; var Reason: String): Boolean;
+
+var
+  frmVCEdit: TfrmVCEdit;
+
+const
+  MAX_CONFIRM_FAIL : integer = 3;
+  U = '^';
+
+{procedure Register;}
+
+implementation
+
+{$R *.DFM}
+
+function ChangeVerify(RPCBroker: TRPCBroker): Boolean;
+var
+  VCEdit1: TVCEdit;
+begin
+//  Str := '';
+  VCEdit1 := TVCEdit.Create(Application);
+  try
+    VCEdit1.RPCBroker := RPCBroker;
+    if VCEdit1.ChangeVC then  //invoke VCEdit form.                                              //VC changed.
+      Result := True
+    else
+      Result := False;
+  finally
+    VCEdit1.Free;
+  end;
+end;
+
+function SilentChangeVerify(RPCBroker: TRPCBroker; OldVerify, NewVerify1, NewVerify2: String; var Reason: String): Boolean;
+var
+  OrigContext: String;
+begin
+  Result := False;
+  Reason := '';
+  if UpperCase(OldVerify) = UpperCase(NewVerify1) then
+    Reason := 'The new code is the same as the current one.'
+  else
+  if UpperCase(NewVerify1) <> UpperCase(NewVerify2) then
+    Reason := 'The confirmation code does not match.';
+  if Reason = '' then
+  try
+    with RPCBroker do
+    begin
+      OrigContext := CurrentContext;
+      CreateContext('XUS SIGNON');
+      RemoteProcedure := 'XUS CVC';
+      Param[0].PType := literal;
+      Param[0].Value := Encrypt(UpperCase(OldVerify))
+                        + U + Encrypt(UpperCase(NewVerify1))
+                        + U + Encrypt(UpperCase(NewVerify2)) ;
+      Call;
+      Reason := '';
+      if Results[0] = '0' then
+        Result := True
+      else if Results.Count > 1 then
+        Reason := Results[1];
+      CreateContext(OrigContext);
+    end;
+  except
+    on E: Exception do
+    begin
+      RPCBroker.RPCBError := E.Message;
+      if Assigned(RPCBroker.OnRPCBFailure) then
+        RPCBroker.OnRPCBFailure(RPCBroker)
+      else if RPCBroker.ShowErrorMsgs = semRaise then
+        Raise;
+    end;
+  end;
+end;
+
+{------------------TVCEdit component------------------------------------}
+
+constructor TVCEDit.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FOldVCSet := False;
+end;
+
+destructor TVCEDit.Destroy;
+begin
+  inherited Destroy;
+end;
+
+
+function TVCEdit.ChangeVCKnowOldVC(strOldVC : string) : Boolean;
+begin
+  FOldVC := strOldVC;
+  FOldVCSet := True;
+  Result := ChangeVC;
+  FOldVCSet := False;  // set it back to false in case we come in again
+end;
+
+{--------------------------ChangeVC function---------------------------}
+function TVCEdit.ChangeVC : Boolean;
+var
+  OldHandle: THandle;
+begin
+  Result := False;
+  try
+    frmVCEDit := TfrmVCEDit.Create(application);
+    with frmVCEDit do
+    begin
+      FVCEdit := Self;      //To link form to VCEdit instance.
+      if FOldVCSet then      //If old VC known, stuff it & disable editing.
+      begin
+        edtOldVC.Color := clBtnFace;
+        edtOldVC.Enabled := False;
+        edtOldVC.Text := FOldVC;
+      end{if};
+//          ShowApplicationAndFocusOK(Application);
+      OldHandle := GetForegroundWindow;
+      SetForegroundWindow(frmVCEdit.Handle);
+      if ShowModal = mrOK then    //outcome of form.
+        Result := True;
+      SetForegroundWindow(OldHandle);
+    end{with};
+  frmVCEDit.Free;
+  except
+    on E: Exception do
+    begin
+      FRPCBroker.RPCBError := E.Message;
+      if Assigned(FRPCBroker.OnRPCBFailure) then
+        FRPCBroker.OnRPCBFailure(FRPCBroker)
+      else if FRPCBroker.ShowErrorMsgs = semRaise then
+        Raise;
+    end;
+  end{except};
+end;
+
+{------------------TVCEdit.NoChange-------------------------------------
+-----------Displays error messages when change fails.-------------------}
+procedure TVCEdit.NoChange(reason : string);
+begin
+  ShowMessage('Your VERIFY code was not changed.' + #13 +
+              reason + #13 );
+end;
+
+
+{-------------------------TfrmVCEdit methods-------------------------------}
+procedure TfrmVCEdit.btnOKClick(Sender: TObject);
+begin
+  with FVCEdit do
+  begin
+    if edtOldVC.Text = edtNewVC.Text then
+    begin
+      NoChange('The new code is the same as the current one.');
+      edtNewVC.Text := '';
+      edtConfirmVC.Text := '';
+      edtNewVC.SetFocus;
+    end
+    else
+    if edtNewVC.Text <> edtConfirmVC.Text then
+    begin
+      inc(FConfirmFailCnt);
+      if FConfirmFailCnt > MAX_CONFIRM_FAIL then
+      begin
+        edtNewVC.Text := '';
+        edtConfirmVC.Text := '';
+        NoChange('The confirmation code does not match.');
+        edtNewVC.SetFocus;
+      end
+      else
+      begin
+        edtConfirmVC.text := '';
+        NoChange('The confirmation code does not match.  Try again.');
+        edtConfirmVC.SetFocus;
+      end;
+    end
+    else
+    with FRPCBroker do
+    begin
+      RemoteProcedure := 'XUS CVC';
+      Param[0].PType := literal;
+      Param[0].Value := Encrypt(UpperCase(edtOldVC.Text))
+                        + U + Encrypt(UpperCase(edtNewVC.Text))
+                        + U + Encrypt(UpperCase(edtConfirmVC.Text)) ;
+      Call;
+      if Results[0] = '0' then
+      begin
+        ShowMessage('Your VERIFY CODE has been changed');
+        ModalResult := mrOK;  //Close form.
+      end
+      else
+      begin
+        if Results.Count > 1 then
+          NoChange(Results[1])
+        else
+          NoChange('');
+        edtNewVC.Text := '';
+        edtConfirmVC.Text := '';
+        edtNewVC.SetFocus;
+      end;
+    end;
+  end{with};
+end;
+
+procedure TfrmVCEdit.btnHelpClick(Sender: TObject);
+begin
+  with FVCEdit do
+  begin
+    if FHelp = '' then
+    begin
+      with FRPCBroker do
+      begin
+        RemoteProcedure := 'XUS AV HELP';
+        Call;
+        if Results.Count > 0 then
+          FHelp := Results[0];
+        FHelp := 'Enter a new verify code and then confirm it.'
+                 + #13#13 + FHelp;
+        if FOldVC = '' then
+          FHelp := 'Enter your current verify code first.' + #13#10 + FHelp;
+      end{with};
+    end{if};
+    ShowMessage(FHelp);
+  end{with};
+end;
+
+procedure TfrmVCEdit.edtNewVCExit(Sender: TObject);
+begin
+  if edtNewVC.Modified then
+  begin
+    FVCEdit.FConfirmFailCnt := 0;                //Reset counter.
+    edtNewVC.Modified := False;
+  end;
+end;
+
+procedure TfrmVCEdit.edtOldVCChange(Sender: TObject); //Also NewVC and ConfirmVC
+begin
+  btnOk.Default := ((edtNewVC.Text <> '') and        //Update status of OK btn.
+                    (edtOldVC.Text <> '') and
+                    (edtConfirmVC.Text <> '') );
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/VERGENCECONTEXTORLib_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/VERGENCECONTEXTORLib_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/VERGENCECONTEXTORLib_TLB.pas	(revision 1676)
@@ -0,0 +1,1749 @@
+unit VERGENCECONTEXTORLib_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.88.1.0.1.0  $
+// File generated on 2/9/2004 9:12:53 AM from Type Library described below.
+
+// *************************************************************************//
+// NOTE:                                                                      
+// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
+// which return objects that may need to be explicitly created via a function 
+// call prior to any access via the property. These items have been disabled  
+// in order to prevent accidental use from within the object inspector. You   
+// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
+// removing them from the $IFDEF blocks. However, such items must still be    
+// programmatically created via a method of the appropriate CoClass before    
+// they can be used.                                                          
+// ************************************************************************ //
+// Type Lib: D:\Development\BDK32_p40\Source\VergenceContextor.dll (1)
+// IID\LCID: {30AFBABD-5FD3-11D3-8727-0060B0B5E137}\0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// Errors:
+//   Hint: Member 'Set' of 'IResponseDialogAccessor' changed to 'Set_'
+//   Error creating palette bitmap of (TContextor) : Invalid GUID format
+//   Error creating palette bitmap of (TContextItemCollection) : Invalid GUID format
+//   Error creating palette bitmap of (TContextItem) : Invalid GUID format
+//   Error creating palette bitmap of (TResponseDialog) : Invalid GUID format
+//   Error creating palette bitmap of (TContextorParticipant) : Invalid GUID format
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+interface
+
+uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  VERGENCECONTEXTORLibMajorVersion = 1;
+  VERGENCECONTEXTORLibMinorVersion = 0;
+
+  LIBID_VERGENCECONTEXTORLib: TGUID = '{30AFBABD-5FD3-11D3-8727-0060B0B5E137}';
+
+  DIID__IContextChangesSink: TGUID = '{6BED8971-B3DD-11D3-8736-0060B0B5E137}';
+  IID_IContextor: TGUID = '{8D879F5D-5FE6-11D3-8727-0060B0B5E137}';
+  IID_IContextParticipant: TGUID = '{3E3DD272-998E-11D0-808D-00A0240943E4}';
+  IID_IContextItemCollection: TGUID = '{AC4C0271-615A-11D3-84B5-0000861FDD4F}';
+  IID_IContextItem: TGUID = '{AC4C0273-615A-11D3-84B5-0000861FDD4F}';
+  IID_IResponseContextChange: TGUID = '{CBC6D968-9F6D-416A-8AA7-99172E588DF0}';
+  IID_IResponseDialogAccessor: TGUID = '{86592071-F3BA-11D3-8181-005004A0F801}';
+  IID_IContextChangesSink: TGUID = '{0B437E31-620E-11D3-84B6-0000861FDD4F}';
+  IID_IResponseDialog: TGUID = '{9D33ECF1-8277-11D3-8525-0000861FDD4F}';
+  CLASS_Contextor: TGUID = '{D5C9CC98-5FDB-11D3-8727-0060B0B5E137}';
+  CLASS_ContextorControl: TGUID = '{8778ACF7-5CA9-11D3-8727-0060B0B5E137}';
+  CLASS_ContextItemCollection: TGUID = '{AC4C0272-615A-11D3-84B5-0000861FDD4F}';
+  CLASS_ContextItem: TGUID = '{AC4C0274-615A-11D3-84B5-0000861FDD4F}';
+  CLASS_ResponseDialog: TGUID = '{9D33ECF2-8277-11D3-8525-0000861FDD4F}';
+  IID_ISetHook: TGUID = '{8D879FDD-5FE6-11D3-8727-0060B0B5E137}';
+  CLASS_ContextorParticipant: TGUID = '{4BA034A2-D0FA-11D3-818B-0050049598B2}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum __MIDL___MIDL_itf_VergenceContextor_0000_0002
+type
+  __MIDL___MIDL_itf_VergenceContextor_0000_0002 = TOleEnum;
+const
+  CsNotRunning = $00000001;
+  CsParticipating = $00000002;
+  CsSuspended = $00000003;
+
+// Constants for enum __MIDL___MIDL_itf_VergenceContextor_0000_0001
+type
+  __MIDL___MIDL_itf_VergenceContextor_0000_0001 = TOleEnum;
+const
+  ApNone = $00000001;
+  ApGet = $00000002;
+  ApSet = $00000003;
+
+// Constants for enum __MIDL___MIDL_itf_VergenceContextor_0000_0003
+type
+  __MIDL___MIDL_itf_VergenceContextor_0000_0003 = TOleEnum;
+const
+  UrCommit = $00000001;
+  UrCancel = $00000002;
+  UrBreak = $00000003;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  _IContextChangesSink = dispinterface;
+  IContextor = interface;
+  IContextorDisp = dispinterface;
+  IContextParticipant = interface;
+  IContextParticipantDisp = dispinterface;
+  IContextItemCollection = interface;
+  IContextItemCollectionDisp = dispinterface;
+  IContextItem = interface;
+  IContextItemDisp = dispinterface;
+  IResponseContextChange = interface;
+  IResponseContextChangeDisp = dispinterface;
+  IResponseDialogAccessor = interface;
+  IResponseDialogAccessorDisp = dispinterface;
+  IContextChangesSink = interface;
+  IContextChangesSinkDisp = dispinterface;
+  IResponseDialog = interface;
+  IResponseDialogDisp = dispinterface;
+  ISetHook = interface;
+  ISetHookDisp = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  Contextor = IContextor;
+  ContextorControl = IContextor;
+  ContextItemCollection = IContextItemCollection;
+  ContextItem = IContextItem;
+  ResponseDialog = IResponseDialog;
+  ContextorParticipant = IContextParticipant;
+
+
+// *********************************************************************//
+// Declaration of structures, unions and aliases.                         
+// *********************************************************************//
+
+  ContextorState = __MIDL___MIDL_itf_VergenceContextor_0000_0002; 
+  AccessPrivilege = __MIDL___MIDL_itf_VergenceContextor_0000_0001; 
+  UserResponse = __MIDL___MIDL_itf_VergenceContextor_0000_0003; 
+
+// *********************************************************************//
+// DispIntf:  _IContextChangesSink
+// Flags:     (4096) Dispatchable
+// GUID:      {6BED8971-B3DD-11D3-8736-0060B0B5E137}
+// *********************************************************************//
+  _IContextChangesSink = dispinterface
+    ['{6BED8971-B3DD-11D3-8736-0060B0B5E137}']
+    procedure Pending(const aContextItemCollection: IDispatch); dispid 1;
+    procedure Committed; dispid 2;
+    procedure Canceled; dispid 3;
+  end;
+
+// *********************************************************************//
+// Interface: IContextor
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {8D879F5D-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  IContextor = interface(IDispatch)
+    ['{8D879F5D-5FE6-11D3-8727-0060B0B5E137}']
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString); safecall;
+    procedure Suspend; safecall;
+    procedure Resume; safecall;
+    function  Get_State: ContextorState; safecall;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege; safecall;
+    function  Get_CurrentContext: IContextItemCollection; safecall;
+    procedure StartContextChange; safecall;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse; safecall;
+    procedure SetSurveyResponse(const reason: WideString); safecall;
+    function  Get_NotificationFilter: WideString; safecall;
+    procedure Set_NotificationFilter(const filter: WideString); safecall;
+    function  Get_Name: WideString; safecall;
+    property State: ContextorState read Get_State;
+    property CurrentContext: IContextItemCollection read Get_CurrentContext;
+    property NotificationFilter: WideString read Get_NotificationFilter write Set_NotificationFilter;
+    property Name: WideString read Get_Name;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextorDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {8D879F5D-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  IContextorDisp = dispinterface
+    ['{8D879F5D-5FE6-11D3-8727-0060B0B5E137}']
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString); dispid 1;
+    procedure Suspend; dispid 2;
+    procedure Resume; dispid 3;
+    property State: ContextorState readonly dispid 4;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege; dispid 5;
+    property CurrentContext: IContextItemCollection readonly dispid 6;
+    procedure StartContextChange; dispid 7;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse; dispid 8;
+    procedure SetSurveyResponse(const reason: WideString); dispid 9;
+    property NotificationFilter: WideString dispid 10;
+    property Name: WideString readonly dispid 11;
+  end;
+
+// *********************************************************************//
+// Interface: IContextParticipant
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {3E3DD272-998E-11D0-808D-00A0240943E4}
+// *********************************************************************//
+  IContextParticipant = interface(IDispatch)
+    ['{3E3DD272-998E-11D0-808D-00A0240943E4}']
+    function  ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString; safecall;
+    procedure ContextChangesAccepted(contextCoupon: Integer); safecall;
+    procedure ContextChangesCanceled(contextCoupon: Integer); safecall;
+    procedure CommonContextTerminated; safecall;
+    procedure Ping; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextParticipantDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {3E3DD272-998E-11D0-808D-00A0240943E4}
+// *********************************************************************//
+  IContextParticipantDisp = dispinterface
+    ['{3E3DD272-998E-11D0-808D-00A0240943E4}']
+    function  ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString; dispid 1610743808;
+    procedure ContextChangesAccepted(contextCoupon: Integer); dispid 1610743809;
+    procedure ContextChangesCanceled(contextCoupon: Integer); dispid 1610743810;
+    procedure CommonContextTerminated; dispid 1610743811;
+    procedure Ping; dispid 1610743812;
+  end;
+
+// *********************************************************************//
+// Interface: IContextItemCollection
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0271-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItemCollection = interface(IDispatch)
+    ['{AC4C0271-615A-11D3-84B5-0000861FDD4F}']
+    function  Count: Integer; safecall;
+    procedure Add(const aContextItem: IContextItem); safecall;
+    procedure Remove(const contextItemName: WideString); safecall;
+    procedure RemoveAll; safecall;
+    function  Present(key: OleVariant): IContextItem; safecall;
+    function  Get__NewEnum: IUnknown; safecall;
+    function  Item(key: OleVariant): IContextItem; safecall;
+    property _NewEnum: IUnknown read Get__NewEnum;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextItemCollectionDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0271-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItemCollectionDisp = dispinterface
+    ['{AC4C0271-615A-11D3-84B5-0000861FDD4F}']
+    function  Count: Integer; dispid 1;
+    procedure Add(const aContextItem: IContextItem); dispid 2;
+    procedure Remove(const contextItemName: WideString); dispid 3;
+    procedure RemoveAll; dispid 4;
+    function  Present(key: OleVariant): IContextItem; dispid 5;
+    property _NewEnum: IUnknown readonly dispid -4;
+    function  Item(key: OleVariant): IContextItem; dispid 0;
+  end;
+
+// *********************************************************************//
+// Interface: IContextItem
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0273-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItem = interface(IDispatch)
+    ['{AC4C0273-615A-11D3-84B5-0000861FDD4F}']
+    function  Get_Subject: WideString; safecall;
+    procedure Set_Subject(const pVal: WideString); safecall;
+    function  Get_Role: WideString; safecall;
+    procedure Set_Role(const pVal: WideString); safecall;
+    function  Get_Prefix: WideString; safecall;
+    procedure Set_Prefix(const pVal: WideString); safecall;
+    function  Get_Suffix: WideString; safecall;
+    procedure Set_Suffix(const pVal: WideString); safecall;
+    function  Get_Name: WideString; safecall;
+    procedure Set_Name(const pVal: WideString); safecall;
+    function  Get_Value: WideString; safecall;
+    procedure Set_Value(const pVal: WideString); safecall;
+    function  Clone: IContextItem; safecall;
+    property Subject: WideString read Get_Subject write Set_Subject;
+    property Role: WideString read Get_Role write Set_Role;
+    property Prefix: WideString read Get_Prefix write Set_Prefix;
+    property Suffix: WideString read Get_Suffix write Set_Suffix;
+    property Name: WideString read Get_Name write Set_Name;
+    property Value: WideString read Get_Value write Set_Value;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextItemDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0273-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItemDisp = dispinterface
+    ['{AC4C0273-615A-11D3-84B5-0000861FDD4F}']
+    property Subject: WideString dispid 1;
+    property Role: WideString dispid 2;
+    property Prefix: WideString dispid 3;
+    property Suffix: WideString dispid 4;
+    property Name: WideString dispid 5;
+    property Value: WideString dispid 6;
+    function  Clone: IContextItem; dispid 7;
+  end;
+
+// *********************************************************************//
+// Interface: IResponseContextChange
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {CBC6D968-9F6D-416A-8AA7-99172E588DF0}
+// *********************************************************************//
+  IResponseContextChange = interface(IDispatch)
+    ['{CBC6D968-9F6D-416A-8AA7-99172E588DF0}']
+    procedure StartResponseContextChange; safecall;
+    function  EndResponseContextChange(commit: WordBool; 
+                                       const aContextItemCollection: IContextItemCollection; 
+                                       var noContinue: WordBool): OleVariant; safecall;
+    procedure CommitContextChange; safecall;
+    procedure CancelContextChange; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IResponseContextChangeDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {CBC6D968-9F6D-416A-8AA7-99172E588DF0}
+// *********************************************************************//
+  IResponseContextChangeDisp = dispinterface
+    ['{CBC6D968-9F6D-416A-8AA7-99172E588DF0}']
+    procedure StartResponseContextChange; dispid 1;
+    function  EndResponseContextChange(commit: WordBool; 
+                                       const aContextItemCollection: IContextItemCollection; 
+                                       var noContinue: WordBool): OleVariant; dispid 2;
+    procedure CommitContextChange; dispid 3;
+    procedure CancelContextChange; dispid 4;
+  end;
+
+// *********************************************************************//
+// Interface: IResponseDialogAccessor
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {86592071-F3BA-11D3-8181-005004A0F801}
+// *********************************************************************//
+  IResponseDialogAccessor = interface(IDispatch)
+    ['{86592071-F3BA-11D3-8181-005004A0F801}']
+    procedure Reset; safecall;
+    procedure Set_(const aResponseDialog: IResponseDialog); safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IResponseDialogAccessorDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {86592071-F3BA-11D3-8181-005004A0F801}
+// *********************************************************************//
+  IResponseDialogAccessorDisp = dispinterface
+    ['{86592071-F3BA-11D3-8181-005004A0F801}']
+    procedure Reset; dispid 1;
+    procedure Set_(const aResponseDialog: IResponseDialog); dispid 2;
+  end;
+
+// *********************************************************************//
+// Interface: IContextChangesSink
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {0B437E31-620E-11D3-84B6-0000861FDD4F}
+// *********************************************************************//
+  IContextChangesSink = interface(IDispatch)
+    ['{0B437E31-620E-11D3-84B6-0000861FDD4F}']
+    procedure Pending(const aContextItemCollection: IDispatch); safecall;
+    procedure Committed; safecall;
+    procedure Canceled; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextChangesSinkDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {0B437E31-620E-11D3-84B6-0000861FDD4F}
+// *********************************************************************//
+  IContextChangesSinkDisp = dispinterface
+    ['{0B437E31-620E-11D3-84B6-0000861FDD4F}']
+    procedure Pending(const aContextItemCollection: IDispatch); dispid 1;
+    procedure Committed; dispid 2;
+    procedure Canceled; dispid 3;
+  end;
+
+// *********************************************************************//
+// Interface: IResponseDialog
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {9D33ECF1-8277-11D3-8525-0000861FDD4F}
+// *********************************************************************//
+  IResponseDialog = interface(IDispatch)
+    ['{9D33ECF1-8277-11D3-8525-0000861FDD4F}']
+    function  ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IResponseDialogDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {9D33ECF1-8277-11D3-8525-0000861FDD4F}
+// *********************************************************************//
+  IResponseDialogDisp = dispinterface
+    ['{9D33ECF1-8277-11D3-8525-0000861FDD4F}']
+    function  ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse; dispid 1;
+  end;
+
+// *********************************************************************//
+// Interface: ISetHook
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {8D879FDD-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  ISetHook = interface(IDispatch)
+    ['{8D879FDD-5FE6-11D3-8727-0060B0B5E137}']
+    procedure SetParticipant(const aContextParticipant: IContextParticipant); safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISetHookDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {8D879FDD-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  ISetHookDisp = dispinterface
+    ['{8D879FDD-5FE6-11D3-8727-0060B0B5E137}']
+    procedure SetParticipant(const aContextParticipant: IContextParticipant); dispid 1;
+  end;
+
+// *********************************************************************//
+// The Class CoContextor provides a Create and CreateRemote method to          
+// create instances of the default interface IContextor exposed by              
+// the CoClass Contextor. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextor = class
+    class function Create: IContextor;
+    class function CreateRemote(const MachineName: string): IContextor;
+  end;
+
+  TContextorPending = procedure(Sender: TObject; var aContextItemCollection: OleVariant) of object;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextor
+// Help String      : Vergence Contextor
+// Default Interface: IContextor
+// Def. Intf. DISP? : No
+// Event   Interface: _IContextChangesSink
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextorProperties= class;
+{$ENDIF}
+  TContextor = class(TOleServer)
+  private
+    FOnPending: TContextorPending;
+    FOnCommitted: TNotifyEvent;
+    FOnCanceled: TNotifyEvent;
+    FIntf:        IContextor;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextorProperties;
+    function      GetServerProperties: TContextorProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextor;
+  protected
+    procedure InitServerData; override;
+    procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
+    function  Get_State: ContextorState;
+    function  Get_CurrentContext: IContextItemCollection;
+    function  Get_NotificationFilter: WideString;
+    procedure Set_NotificationFilter(const filter: WideString);
+    function  Get_Name: WideString;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextor);
+    procedure Disconnect; override;
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString);
+    procedure Suspend;
+    procedure Resume;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege;
+    procedure StartContextChange;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse;
+    procedure SetSurveyResponse(const reason: WideString);
+    property  DefaultInterface: IContextor read GetDefaultInterface;
+    property State: ContextorState read Get_State;
+    property CurrentContext: IContextItemCollection read Get_CurrentContext;
+    property Name: WideString read Get_Name;
+    property NotificationFilter: WideString read Get_NotificationFilter write Set_NotificationFilter;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextorProperties read GetServerProperties;
+{$ENDIF}
+    property OnPending: TContextorPending read FOnPending write FOnPending;
+    property OnCommitted: TNotifyEvent read FOnCommitted write FOnCommitted;
+    property OnCanceled: TNotifyEvent read FOnCanceled write FOnCanceled;
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextor
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextorProperties = class(TPersistent)
+  private
+    FServer:    TContextor;
+    function    GetDefaultInterface: IContextor;
+    constructor Create(AServer: TContextor);
+  protected
+    function  Get_State: ContextorState;
+    function  Get_CurrentContext: IContextItemCollection;
+    function  Get_NotificationFilter: WideString;
+    procedure Set_NotificationFilter(const filter: WideString);
+    function  Get_Name: WideString;
+  public
+    property DefaultInterface: IContextor read GetDefaultInterface;
+  published
+    property NotificationFilter: WideString read Get_NotificationFilter write Set_NotificationFilter;
+  end;
+{$ENDIF}
+
+
+
+// *********************************************************************//
+// OLE Control Proxy class declaration
+// Control Name     : TContextorControl
+// Help String      : Vergence ContextorControl
+// Default Interface: IContextor
+// Def. Intf. DISP? : No
+// Event   Interface: _IContextChangesSink
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+  TContextorControlPending = procedure(Sender: TObject; const aContextItemCollection: IDispatch) of object;
+
+  TContextorControl = class(TOleControl)
+  private
+    FOnPending: TContextorControlPending;
+    FOnCommitted: TNotifyEvent;
+    FOnCanceled: TNotifyEvent;
+    FIntf: IContextor;
+    function  GetControlInterface: IContextor;
+  protected
+    procedure CreateControl;
+    procedure InitControlData; override;
+    function  Get_CurrentContext: IContextItemCollection;
+  public
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString);
+    procedure Suspend;
+    procedure Resume;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege;
+    procedure StartContextChange;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse;
+    procedure SetSurveyResponse(const reason: WideString);
+    property  ControlInterface: IContextor read GetControlInterface;
+    property  DefaultInterface: IContextor read GetControlInterface;
+    property State: TOleEnum index 4 read GetTOleEnumProp;
+    property CurrentContext: IContextItemCollection read Get_CurrentContext;
+    property Name: WideString index 11 read GetWideStringProp;
+  published
+    property NotificationFilter: WideString index 10 read GetWideStringProp write SetWideStringProp stored False;
+    property OnPending: TContextorControlPending read FOnPending write FOnPending;
+    property OnCommitted: TNotifyEvent read FOnCommitted write FOnCommitted;
+    property OnCanceled: TNotifyEvent read FOnCanceled write FOnCanceled;
+  end;
+
+// *********************************************************************//
+// The Class CoContextItemCollection provides a Create and CreateRemote method to          
+// create instances of the default interface IContextItemCollection exposed by              
+// the CoClass ContextItemCollection. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextItemCollection = class
+    class function Create: IContextItemCollection;
+    class function CreateRemote(const MachineName: string): IContextItemCollection;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextItemCollection
+// Help String      : Vergence ContextItemCollection
+// Default Interface: IContextItemCollection
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextItemCollectionProperties= class;
+{$ENDIF}
+  TContextItemCollection = class(TOleServer)
+  private
+    FIntf:        IContextItemCollection;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextItemCollectionProperties;
+    function      GetServerProperties: TContextItemCollectionProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextItemCollection;
+  protected
+    procedure InitServerData; override;
+    function  Get__NewEnum: IUnknown;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextItemCollection);
+    procedure Disconnect; override;
+    function  Count: Integer;
+    procedure Add(const aContextItem: IContextItem);
+    procedure Remove(const contextItemName: WideString);
+    procedure RemoveAll;
+    function  Present(key: OleVariant): IContextItem;
+    function  Item(key: OleVariant): IContextItem;
+    property  DefaultInterface: IContextItemCollection read GetDefaultInterface;
+    property _NewEnum: IUnknown read Get__NewEnum;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextItemCollectionProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextItemCollection
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextItemCollectionProperties = class(TPersistent)
+  private
+    FServer:    TContextItemCollection;
+    function    GetDefaultInterface: IContextItemCollection;
+    constructor Create(AServer: TContextItemCollection);
+  protected
+    function  Get__NewEnum: IUnknown;
+  public
+    property DefaultInterface: IContextItemCollection read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoContextItem provides a Create and CreateRemote method to          
+// create instances of the default interface IContextItem exposed by              
+// the CoClass ContextItem. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextItem = class
+    class function Create: IContextItem;
+    class function CreateRemote(const MachineName: string): IContextItem;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextItem
+// Help String      : Vergence ContextItem
+// Default Interface: IContextItem
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextItemProperties= class;
+{$ENDIF}
+  TContextItem = class(TOleServer)
+  private
+    FIntf:        IContextItem;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextItemProperties;
+    function      GetServerProperties: TContextItemProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextItem;
+  protected
+    procedure InitServerData; override;
+    function  Get_Subject: WideString;
+    procedure Set_Subject(const pVal: WideString);
+    function  Get_Role: WideString;
+    procedure Set_Role(const pVal: WideString);
+    function  Get_Prefix: WideString;
+    procedure Set_Prefix(const pVal: WideString);
+    function  Get_Suffix: WideString;
+    procedure Set_Suffix(const pVal: WideString);
+    function  Get_Name: WideString;
+    procedure Set_Name(const pVal: WideString);
+    function  Get_Value: WideString;
+    procedure Set_Value(const pVal: WideString);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextItem);
+    procedure Disconnect; override;
+    function  Clone: IContextItem;
+    property  DefaultInterface: IContextItem read GetDefaultInterface;
+    property Subject: WideString read Get_Subject write Set_Subject;
+    property Role: WideString read Get_Role write Set_Role;
+    property Prefix: WideString read Get_Prefix write Set_Prefix;
+    property Suffix: WideString read Get_Suffix write Set_Suffix;
+    property Name: WideString read Get_Name write Set_Name;
+    property Value: WideString read Get_Value write Set_Value;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextItemProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextItem
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextItemProperties = class(TPersistent)
+  private
+    FServer:    TContextItem;
+    function    GetDefaultInterface: IContextItem;
+    constructor Create(AServer: TContextItem);
+  protected
+    function  Get_Subject: WideString;
+    procedure Set_Subject(const pVal: WideString);
+    function  Get_Role: WideString;
+    procedure Set_Role(const pVal: WideString);
+    function  Get_Prefix: WideString;
+    procedure Set_Prefix(const pVal: WideString);
+    function  Get_Suffix: WideString;
+    procedure Set_Suffix(const pVal: WideString);
+    function  Get_Name: WideString;
+    procedure Set_Name(const pVal: WideString);
+    function  Get_Value: WideString;
+    procedure Set_Value(const pVal: WideString);
+  public
+    property DefaultInterface: IContextItem read GetDefaultInterface;
+  published
+    property Subject: WideString read Get_Subject write Set_Subject;
+    property Role: WideString read Get_Role write Set_Role;
+    property Prefix: WideString read Get_Prefix write Set_Prefix;
+    property Suffix: WideString read Get_Suffix write Set_Suffix;
+    property Name: WideString read Get_Name write Set_Name;
+    property Value: WideString read Get_Value write Set_Value;
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoResponseDialog provides a Create and CreateRemote method to          
+// create instances of the default interface IResponseDialog exposed by              
+// the CoClass ResponseDialog. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoResponseDialog = class
+    class function Create: IResponseDialog;
+    class function CreateRemote(const MachineName: string): IResponseDialog;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TResponseDialog
+// Help String      : Vergence ResponseDialog
+// Default Interface: IResponseDialog
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TResponseDialogProperties= class;
+{$ENDIF}
+  TResponseDialog = class(TOleServer)
+  private
+    FIntf:        IResponseDialog;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TResponseDialogProperties;
+    function      GetServerProperties: TResponseDialogProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IResponseDialog;
+  protected
+    procedure InitServerData; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IResponseDialog);
+    procedure Disconnect; override;
+    function  ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse;
+    property  DefaultInterface: IResponseDialog read GetDefaultInterface;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TResponseDialogProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TResponseDialog
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TResponseDialogProperties = class(TPersistent)
+  private
+    FServer:    TResponseDialog;
+    function    GetDefaultInterface: IResponseDialog;
+    constructor Create(AServer: TResponseDialog);
+  protected
+  public
+    property DefaultInterface: IResponseDialog read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoContextorParticipant provides a Create and CreateRemote method to          
+// create instances of the default interface IContextParticipant exposed by              
+// the CoClass ContextorParticipant. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextorParticipant = class
+    class function Create: IContextParticipant;
+    class function CreateRemote(const MachineName: string): IContextParticipant;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextorParticipant
+// Help String      : ContextorParticipant Class
+// Default Interface: IContextParticipant
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextorParticipantProperties= class;
+{$ENDIF}
+  TContextorParticipant = class(TOleServer)
+  private
+    FIntf:        IContextParticipant;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextorParticipantProperties;
+    function      GetServerProperties: TContextorParticipantProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextParticipant;
+  protected
+    procedure InitServerData; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextParticipant);
+    procedure Disconnect; override;
+    function  ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString;
+    procedure ContextChangesAccepted(contextCoupon: Integer);
+    procedure ContextChangesCanceled(contextCoupon: Integer);
+    procedure CommonContextTerminated;
+    procedure Ping;
+    property  DefaultInterface: IContextParticipant read GetDefaultInterface;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextorParticipantProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextorParticipant
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextorParticipantProperties = class(TPersistent)
+  private
+    FServer:    TContextorParticipant;
+    function    GetDefaultInterface: IContextParticipant;
+    constructor Create(AServer: TContextorParticipant);
+  protected
+  public
+    property DefaultInterface: IContextParticipant read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+{
+procedure Register;
+}
+implementation
+
+uses ComObj;
+
+class function CoContextor.Create: IContextor;
+begin
+  Result := CreateComObject(CLASS_Contextor) as IContextor;
+end;
+
+class function CoContextor.CreateRemote(const MachineName: string): IContextor;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_Contextor) as IContextor;
+end;
+
+procedure TContextor.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{D5C9CC98-5FDB-11D3-8727-0060B0B5E137}';
+    IntfIID:   '{8D879F5D-5FE6-11D3-8727-0060B0B5E137}';
+    EventIID:  '{6BED8971-B3DD-11D3-8736-0060B0B5E137}';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextor.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    ConnectEvents(punk);
+    Fintf:= punk as IContextor;
+  end;
+end;
+
+procedure TContextor.ConnectTo(svrIntf: IContextor);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+  ConnectEvents(FIntf);
+end;
+
+procedure TContextor.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    DisconnectEvents(FIntf);
+    FIntf := nil;
+  end;
+end;
+
+function TContextor.GetDefaultInterface: IContextor;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextor.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextorProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextor.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextor.GetServerProperties: TContextorProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+procedure TContextor.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
+begin
+  case DispID of
+    -1: Exit;  // DISPID_UNKNOWN
+   1: if Assigned(FOnPending) then
+            FOnPending(Self, Params[0] {const IDispatch});
+   2: if Assigned(FOnCommitted) then
+            FOnCommitted(Self);
+   3: if Assigned(FOnCanceled) then
+            FOnCanceled(Self);
+  end; {case DispID}
+end;
+
+function  TContextor.Get_State: ContextorState;
+begin
+  Result := DefaultInterface.Get_State;
+end;
+
+function  TContextor.Get_CurrentContext: IContextItemCollection;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TContextor.Get_NotificationFilter: WideString;
+begin
+  Result := DefaultInterface.Get_NotificationFilter;
+end;
+
+procedure TContextor.Set_NotificationFilter(const filter: WideString);
+begin
+  DefaultInterface.Set_NotificationFilter(filter);
+end;
+
+function  TContextor.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+procedure TContextor.Run(const applicationLabel: WideString; const passcode: WideString; 
+                         survey: WordBool; const initialNotificationFilter: WideString);
+begin
+  DefaultInterface.Run(applicationLabel, passcode, survey, initialNotificationFilter);
+end;
+
+procedure TContextor.Suspend;
+begin
+  DefaultInterface.Suspend;
+end;
+
+procedure TContextor.Resume;
+begin
+  DefaultInterface.Resume;
+end;
+
+function  TContextor.GetPrivilege(const subj: WideString): AccessPrivilege;
+begin
+  Result := DefaultInterface.GetPrivilege(subj);
+end;
+
+procedure TContextor.StartContextChange;
+begin
+  DefaultInterface.StartContextChange;
+end;
+
+function  TContextor.EndContextChange(commit: WordBool; 
+                                      const aContextItemCollection: IContextItemCollection): UserResponse;
+begin
+  Result := DefaultInterface.EndContextChange(commit, aContextItemCollection);
+end;
+
+procedure TContextor.SetSurveyResponse(const reason: WideString);
+begin
+  DefaultInterface.SetSurveyResponse(reason);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextorProperties.Create(AServer: TContextor);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextorProperties.GetDefaultInterface: IContextor;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TContextorProperties.Get_State: ContextorState;
+begin
+  Result := DefaultInterface.Get_State;
+end;
+
+function  TContextorProperties.Get_CurrentContext: IContextItemCollection;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TContextorProperties.Get_NotificationFilter: WideString;
+begin
+  Result := DefaultInterface.Get_NotificationFilter;
+end;
+
+procedure TContextorProperties.Set_NotificationFilter(const filter: WideString);
+begin
+  DefaultInterface.Set_NotificationFilter(filter);
+end;
+
+function  TContextorProperties.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+{$ENDIF}
+
+procedure TContextorControl.InitControlData;
+const
+  CEventDispIDs: array [0..2] of DWORD = (
+    $00000001, $00000002, $00000003);
+  CControlData: TControlData2 = (
+    ClassID: '{8778ACF7-5CA9-11D3-8727-0060B0B5E137}';
+    EventIID: '{6BED8971-B3DD-11D3-8736-0060B0B5E137}';
+    EventCount: 3;
+    EventDispIDs: @CEventDispIDs;
+    LicenseKey: nil (*HR:$80004002*);
+    Flags: $00000000;
+    Version: 401);
+begin
+  ControlData := @CControlData;
+  TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnPending) - Cardinal(Self);
+end;
+
+procedure TContextorControl.CreateControl;
+
+  procedure DoCreate;
+  begin
+    FIntf := IUnknown(OleObject) as IContextor;
+  end;
+
+begin
+  if FIntf = nil then DoCreate;
+end;
+
+function TContextorControl.GetControlInterface: IContextor;
+begin
+  CreateControl;
+  Result := FIntf;
+end;
+
+function  TContextorControl.Get_CurrentContext: IContextItemCollection;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+procedure TContextorControl.Run(const applicationLabel: WideString; const passcode: WideString; 
+                                survey: WordBool; const initialNotificationFilter: WideString);
+begin
+  DefaultInterface.Run(applicationLabel, passcode, survey, initialNotificationFilter);
+end;
+
+procedure TContextorControl.Suspend;
+begin
+  DefaultInterface.Suspend;
+end;
+
+procedure TContextorControl.Resume;
+begin
+  DefaultInterface.Resume;
+end;
+
+function  TContextorControl.GetPrivilege(const subj: WideString): AccessPrivilege;
+begin
+  Result := DefaultInterface.GetPrivilege(subj);
+end;
+
+procedure TContextorControl.StartContextChange;
+begin
+  DefaultInterface.StartContextChange;
+end;
+
+function  TContextorControl.EndContextChange(commit: WordBool; 
+                                             const aContextItemCollection: IContextItemCollection): UserResponse;
+begin
+  Result := DefaultInterface.EndContextChange(commit, aContextItemCollection);
+end;
+
+procedure TContextorControl.SetSurveyResponse(const reason: WideString);
+begin
+  DefaultInterface.SetSurveyResponse(reason);
+end;
+
+class function CoContextItemCollection.Create: IContextItemCollection;
+begin
+  Result := CreateComObject(CLASS_ContextItemCollection) as IContextItemCollection;
+end;
+
+class function CoContextItemCollection.CreateRemote(const MachineName: string): IContextItemCollection;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ContextItemCollection) as IContextItemCollection;
+end;
+
+procedure TContextItemCollection.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{AC4C0272-615A-11D3-84B5-0000861FDD4F}';
+    IntfIID:   '{AC4C0271-615A-11D3-84B5-0000861FDD4F}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextItemCollection.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IContextItemCollection;
+  end;
+end;
+
+procedure TContextItemCollection.ConnectTo(svrIntf: IContextItemCollection);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TContextItemCollection.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TContextItemCollection.GetDefaultInterface: IContextItemCollection;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextItemCollection.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextItemCollectionProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextItemCollection.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextItemCollection.GetServerProperties: TContextItemCollectionProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TContextItemCollection.Get__NewEnum: IUnknown;
+begin
+  Result := DefaultInterface.Get__NewEnum;
+end;
+
+function  TContextItemCollection.Count: Integer;
+begin
+  Result := DefaultInterface.Count;
+end;
+
+procedure TContextItemCollection.Add(const aContextItem: IContextItem);
+begin
+  DefaultInterface.Add(aContextItem);
+end;
+
+procedure TContextItemCollection.Remove(const contextItemName: WideString);
+begin
+  DefaultInterface.Remove(contextItemName);
+end;
+
+procedure TContextItemCollection.RemoveAll;
+begin
+  DefaultInterface.RemoveAll;
+end;
+
+function  TContextItemCollection.Present(key: OleVariant): IContextItem;
+begin
+  Result := DefaultInterface.Present(key);
+end;
+
+function  TContextItemCollection.Item(key: OleVariant): IContextItem;
+begin
+  Result := DefaultInterface.Item(key);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextItemCollectionProperties.Create(AServer: TContextItemCollection);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextItemCollectionProperties.GetDefaultInterface: IContextItemCollection;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TContextItemCollectionProperties.Get__NewEnum: IUnknown;
+begin
+  Result := DefaultInterface.Get__NewEnum;
+end;
+
+{$ENDIF}
+
+class function CoContextItem.Create: IContextItem;
+begin
+  Result := CreateComObject(CLASS_ContextItem) as IContextItem;
+end;
+
+class function CoContextItem.CreateRemote(const MachineName: string): IContextItem;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ContextItem) as IContextItem;
+end;
+
+procedure TContextItem.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{AC4C0274-615A-11D3-84B5-0000861FDD4F}';
+    IntfIID:   '{AC4C0273-615A-11D3-84B5-0000861FDD4F}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextItem.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IContextItem;
+  end;
+end;
+
+procedure TContextItem.ConnectTo(svrIntf: IContextItem);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TContextItem.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TContextItem.GetDefaultInterface: IContextItem;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextItem.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextItemProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextItem.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextItem.GetServerProperties: TContextItemProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TContextItem.Get_Subject: WideString;
+begin
+  Result := DefaultInterface.Get_Subject;
+end;
+
+procedure TContextItem.Set_Subject(const pVal: WideString);
+begin
+  DefaultInterface.Set_Subject(pVal);
+end;
+
+function  TContextItem.Get_Role: WideString;
+begin
+  Result := DefaultInterface.Get_Role;
+end;
+
+procedure TContextItem.Set_Role(const pVal: WideString);
+begin
+  DefaultInterface.Set_Role(pVal);
+end;
+
+function  TContextItem.Get_Prefix: WideString;
+begin
+  Result := DefaultInterface.Get_Prefix;
+end;
+
+procedure TContextItem.Set_Prefix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Prefix(pVal);
+end;
+
+function  TContextItem.Get_Suffix: WideString;
+begin
+  Result := DefaultInterface.Get_Suffix;
+end;
+
+procedure TContextItem.Set_Suffix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Suffix(pVal);
+end;
+
+function  TContextItem.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+procedure TContextItem.Set_Name(const pVal: WideString);
+begin
+  DefaultInterface.Set_Name(pVal);
+end;
+
+function  TContextItem.Get_Value: WideString;
+begin
+  Result := DefaultInterface.Get_Value;
+end;
+
+procedure TContextItem.Set_Value(const pVal: WideString);
+begin
+  DefaultInterface.Set_Value(pVal);
+end;
+
+function  TContextItem.Clone: IContextItem;
+begin
+  Result := DefaultInterface.Clone;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextItemProperties.Create(AServer: TContextItem);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextItemProperties.GetDefaultInterface: IContextItem;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TContextItemProperties.Get_Subject: WideString;
+begin
+  Result := DefaultInterface.Get_Subject;
+end;
+
+procedure TContextItemProperties.Set_Subject(const pVal: WideString);
+begin
+  DefaultInterface.Set_Subject(pVal);
+end;
+
+function  TContextItemProperties.Get_Role: WideString;
+begin
+  Result := DefaultInterface.Get_Role;
+end;
+
+procedure TContextItemProperties.Set_Role(const pVal: WideString);
+begin
+  DefaultInterface.Set_Role(pVal);
+end;
+
+function  TContextItemProperties.Get_Prefix: WideString;
+begin
+  Result := DefaultInterface.Get_Prefix;
+end;
+
+procedure TContextItemProperties.Set_Prefix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Prefix(pVal);
+end;
+
+function  TContextItemProperties.Get_Suffix: WideString;
+begin
+  Result := DefaultInterface.Get_Suffix;
+end;
+
+procedure TContextItemProperties.Set_Suffix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Suffix(pVal);
+end;
+
+function  TContextItemProperties.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+procedure TContextItemProperties.Set_Name(const pVal: WideString);
+begin
+  DefaultInterface.Set_Name(pVal);
+end;
+
+function  TContextItemProperties.Get_Value: WideString;
+begin
+  Result := DefaultInterface.Get_Value;
+end;
+
+procedure TContextItemProperties.Set_Value(const pVal: WideString);
+begin
+  DefaultInterface.Set_Value(pVal);
+end;
+
+{$ENDIF}
+
+class function CoResponseDialog.Create: IResponseDialog;
+begin
+  Result := CreateComObject(CLASS_ResponseDialog) as IResponseDialog;
+end;
+
+class function CoResponseDialog.CreateRemote(const MachineName: string): IResponseDialog;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ResponseDialog) as IResponseDialog;
+end;
+
+procedure TResponseDialog.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{9D33ECF2-8277-11D3-8525-0000861FDD4F}';
+    IntfIID:   '{9D33ECF1-8277-11D3-8525-0000861FDD4F}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TResponseDialog.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IResponseDialog;
+  end;
+end;
+
+procedure TResponseDialog.ConnectTo(svrIntf: IResponseDialog);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TResponseDialog.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TResponseDialog.GetDefaultInterface: IResponseDialog;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TResponseDialog.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TResponseDialogProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TResponseDialog.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TResponseDialog.GetServerProperties: TResponseDialogProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TResponseDialog.ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse;
+begin
+  Result := DefaultInterface.ProcessSurveyResults(responses, noContinue);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TResponseDialogProperties.Create(AServer: TResponseDialog);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TResponseDialogProperties.GetDefaultInterface: IResponseDialog;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+{$ENDIF}
+
+class function CoContextorParticipant.Create: IContextParticipant;
+begin
+  Result := CreateComObject(CLASS_ContextorParticipant) as IContextParticipant;
+end;
+
+class function CoContextorParticipant.CreateRemote(const MachineName: string): IContextParticipant;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ContextorParticipant) as IContextParticipant;
+end;
+
+procedure TContextorParticipant.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{4BA034A2-D0FA-11D3-818B-0050049598B2}';
+    IntfIID:   '{3E3DD272-998E-11D0-808D-00A0240943E4}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextorParticipant.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IContextParticipant;
+  end;
+end;
+
+procedure TContextorParticipant.ConnectTo(svrIntf: IContextParticipant);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TContextorParticipant.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TContextorParticipant.GetDefaultInterface: IContextParticipant;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextorParticipant.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextorParticipantProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextorParticipant.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextorParticipant.GetServerProperties: TContextorParticipantProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TContextorParticipant.ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString;
+begin
+  Result := DefaultInterface.ContextChangesPending(contextCoupon, reason);
+end;
+
+procedure TContextorParticipant.ContextChangesAccepted(contextCoupon: Integer);
+begin
+  DefaultInterface.ContextChangesAccepted(contextCoupon);
+end;
+
+procedure TContextorParticipant.ContextChangesCanceled(contextCoupon: Integer);
+begin
+  DefaultInterface.ContextChangesCanceled(contextCoupon);
+end;
+
+procedure TContextorParticipant.CommonContextTerminated;
+begin
+  DefaultInterface.CommonContextTerminated;
+end;
+
+procedure TContextorParticipant.Ping;
+begin
+  DefaultInterface.Ping;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextorParticipantProperties.Create(AServer: TContextorParticipant);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextorParticipantProperties.GetDefaultInterface: IContextParticipant;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+{$ENDIF}
+{
+procedure Register;
+begin
+  RegisterComponents('Kernel',[TContextorControl]);
+  RegisterComponents('Kernel',[TContextor, TContextItemCollection, TContextItem, TResponseDialog,
+    TContextorParticipant]);
+end;
+}
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Wsockc.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Wsockc.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Wsockc.pas	(revision 1676)
@@ -0,0 +1,1585 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: manages Winsock connections and creates/parses
+	             messages
+	Current Release: Version 1.1 Patch 40 (Sept. 22, 2004)
+*************************************************************** }
+
+unit Wsockc;
+{
+  Changes in v1.1.13 (JLI -- 8/23/00) -- XWB*1.1*13
+    Made changes to cursor dependent on current cursor being crDefault so
+       that the application can set it to a different cursor for long or
+       repeated processes without the cursor 'flashing' repeatedly.
+
+  Changes in v1.1.8 (REM -- 6/18/99) -- XWB*1.1*8
+    Update version 'BrokerVer'.
+
+  Changes in v1.1.6 (DPC -- 6/7/99) -- XWB*1.1*6
+    In tCall function, made changing cursor to hourglass conditional:
+    don't do it if XWB IM HERE  RPC is being invoked.
+
+  Changes in V1.1.4 (DCM - 9/18/98)-XWB*1.1*4
+  1.  Changed the ff line in NetStart from:
+      if inet_addr(PChar(Server)) <> INADDR_NONE then
+      to
+      if inet_addr(PChar(Server)) <> longint(INADDR_NONE) then
+  Reason:  true 64 bit types in Delphi 4
+  2.  Changed the ff line in NetStart from:
+      $else
+      hSocket := accept(hSocketListen, DHCPHost, AddrLen);{ -- returns new socket
+      to
+      $else
+      hSocket := accept(hSocketListen, @DHCPHost, @AddrLen);{ -- returns new socket
+  Reason:  Incompatible types when recompiling
+  3. In NetStop, if socket <= 0, restore the default cursor.
+  Reason:  Gave the impression of a busy process after the Kernel login
+      process timesout.
+
+  Changes in V1.1T3  [Feb 5, 1997]
+  1. Connect string now includes workstation name. This is used by kernel
+     security.
+  2. Code is 32bit compliant for Delphi 2.0
+  3. A great majority of PChars changed to default string (ansi-string)
+  4. Reading is done in 32k chunks during a loop.  Intermediate data is
+     buffered into a string.  At the end, a PChar is allocated and
+     returned to maintain compatibility with the original broker interface.
+     It is expected that shortly this will change once the broker component
+     changes its usage of tcall to expect a string return.  Total read
+     can now exceed 32K up to workstation OS limits.
+  5. Creation of Hostent and Address structures has been streamlined.
+
+  Changes in V1.0T12
+  1. Inclusion of hSocket as a parameter on most API calls
+
+
+  Changes in V1.0T11
+  1. Reference parameter type is included. i.e. $J will be evaluated rather
+  than sending "$J".
+  2. Fully integrated with the TRPCB component interface.
+  3. This low level module is now called from an intermediate DLL.
+
+  Changes in V1.0T10
+  1. Fixed various memory leaks.
+
+  Changes in V1.0T9
+  1. Supports word processing fields.
+  2. Added a new exception type EBrokerError.  This is raised when errors occur
+  in NetCall, NetworkConnect, and NetworkDisconnect
+
+  Changes in V1.0T8
+  1. Fix a problem in BuildPar in the case of a single list parameter with many
+     entries.
+  2. List parameters (arrays) can be large up to 65520 bytes
+  3. Introduction of sCallV and tCallV which use the Delphi Pascal open array
+     syntax (sCallFV and tCallV developed by Kevin Meldrum)
+  4. A new brokerDataRec type, null has been introduced to represent M calls
+     with no parameters, i.e. D FUN^LIB().
+  5. If you want to send a null parameter "", i.e. D FUN^LIB(""), Value
+  should be set to ''.
+  6. Fixed bug where a single ^ passed to sCall would generate error (confused
+  as a global reference.
+  7. Fixed a bug where a first position dot (.) in a literal parameter would
+  cause an error at the server end.
+  8. Fixed a bug where null strings (as white space in a memo box for example)
+  would not be correctly received at the server.
+
+  Changes in V1.0T7
+  1. Procedure NetworkConnect has been changed to Function NetworkConnect
+     returning BOOL
+  2. global variable IsConnected (BOOL) can be used to determine connection
+     state
+  3. Function cRight has been fixed to preserve head pointer to input PChar
+     string
+  4. New message format which includes length calculations for input parameters
+
+   *******************************************************************
+  A 32-bit high level interface to the Winsock API in Delphi Pascal.
+
+  This implementation allows communications between Delphi forms and
+  DHCP back end servers through the use of the DHCP Request Broker.
+
+  Usage: Put wsock in your Uses clause of your Delphi form.  See additional
+  specs for Request Broker message formats, etc.
+  Programmer: Enrique Gomez - VA San Francisco ISC - April 1995
+}
+
+
+interface
+
+Uses
+SysUtils, winsock, xwbut1, WinProcs, Wintypes,
+classes, dialogs, forms, controls,
+stdctrls, ClipBrd, Trpcb, RpcbErr;
+
+type
+  TXWBWinsock = class(TObject)
+  private
+    FCountWidth: Integer;
+    FIsBackwardsCompatible: Boolean;
+    FOldConnectionOnly: Boolean;
+  public
+    XNetCallPending, xFlush: boolean;
+    SocketError, XHookTimeOut: integer;
+    XNetTimerStart: TDateTime;
+    BROKERSERVER: string;
+    SecuritySegment, ApplicationSegment: string;
+    IsConnected: Boolean;
+//    NetBlockingHookVar: Function(): Bool; export;
+    function NetCall(hSocket: integer; imsg: string): PChar;
+    function tCall(hSocket: integer; api, apVer: String; Parameters: TParams;
+             var Sec, App: PChar; TimeOut: integer): PChar;
+    function cRight( z: PChar;  n: longint): PChar;
+    function cLeft( z: PChar; n: longint): PChar;
+    function BuildApi ( n,p: string; f: longint): string;
+    function BuildHdr ( wkid: string; winh: string; prch: string;
+             wish: string): string;
+    function BuildPar(hSocket: integer; api, RPCVer: string;
+             const Parameters: TParams): string;
+    function StrPack ( n: string; p: integer): string;
+    function VarPack(n: string): string;
+    function NetStart(ForegroundM: boolean; Server: string; ListenerPort: integer;
+                  var hSocket: integer): integer;
+    function NetworkConnect(ForegroundM: boolean; Server: string; ListenerPort, 
+        TimeOut: integer): Integer;
+    function libSynGetHostIP(s: string): string;
+    function libNetCreate (lpWSData : TWSAData) : integer;
+    function libNetDestroy: integer;
+    function GetServerPacket(hSocket: integer): string;
+//    function NetBlockingHook: BOOL; export;
+
+    procedure NetworkDisconnect(hSocket: integer);
+    procedure NetStop(hSocket: integer);
+    procedure CloseSockSystem(hSocket: integer; s: string);
+    constructor Create;
+
+    procedure NetError(Action: string; ErrType: integer);
+function NetStart1(ForegroundM: boolean; Server: string; ListenerPort: integer; 
+    var hSocket: integer): Integer; virtual;
+    function BuildPar1(hSocket: integer; api, RPCVer: string; const Parameters: 
+        TParams): String; virtual;
+    property CountWidth: Integer read FCountWidth write FCountWidth;
+    property IsBackwardsCompatible: Boolean read FIsBackwardsCompatible write 
+        FIsBackwardsCompatible;
+    property OldConnectionOnly: Boolean read FOldConnectionOnly write
+        FOldConnectionOnly;
+  end;
+
+function LPack(Str: String; NDigits: Integer): String;
+
+function SPack(Str: String): String;
+
+function NetBlockingHook: BOOL; export;
+
+var
+  HookTimeOut: Integer;
+  NetCallPending: Boolean;
+  NetTimerStart: TDateTime;
+
+Const
+ WINSOCK1_1 = $0101;
+ DHCP_NAME = 'BROKERSERVER';
+ M_DEBUG = True;
+ M_NORMAL = False;
+ BrokerVer = '1.108';
+ Buffer64K = 65520;
+ Buffer32K = 32767;
+ Buffer24K = 24576;
+ Buffer16K = 16384;
+ Buffer8K = 8192;
+ Buffer4K = 4096;
+ DefBuffer = 256;
+ DebugOn: boolean = False;
+ XWBBASEERR = {WSABASEERR + 1} 20000;
+
+{Broker Application Error Constants}
+ XWB_NO_HEAP    = XWBBASEERR + 1;
+ XWB_M_REJECT   = XWBBASEERR + 2;
+ XWB_BadSignOn  = XWBBASEERR + 4;
+ XWB_BadReads   = XWBBASEERR + 8;
+ XWB_ExeNoMem   = XWBBASEERR + 100;
+ XWB_ExeNoFile  = XWB_ExeNoMem +  2;
+ XWB_ExeNoPath  = XWB_ExeNoMem +  3;
+ XWB_ExeShare   = XWB_ExeNoMem +  5;
+ XWB_ExeSepSeg  = XWB_ExeNoMem +  6;
+ XWB_ExeLoMem   = XWB_ExeNoMem +  8;
+ XWB_ExeWinVer  = XWB_ExeNoMem + 10;
+ XWB_ExeBadExe  = XWB_ExeNoMem + 11;
+ XWB_ExeDifOS   = XWB_ExeNoMem + 12;
+ XWB_RpcNotReg  = XWBBASEERR + 201;
+
+implementation
+
+ uses fDebugInfo; {P36} //, TRPCB;
+
+var
+  Prefix: String;
+
+{
+  function LPack
+  Prepends the length of the string in NDigits characters to the value of Str
+
+  e.g., LPack('DataValue',4)
+  returns   '0009DataValue'
+}
+function LPack(Str: String; NDigits: Integer): String;
+Var
+  r: Integer;
+  t: String;
+  Width: Integer;
+  Ex1: Exception;
+begin
+  r := Length(Str);
+  // check for enough space in NDigits characters
+  t := IntToStr(r);
+  Width := Length(t);
+  if NDigits < Width then
+  begin
+    Ex1 := Exception.Create('In generation of message to server, call to LPack where Length of string of '+IntToStr(Width)+' chars exceeds number of chars for output length ('+IntToStr(NDigits)+')');
+    Raise Ex1;
+  end;
+  t := '000000000' + IntToStr(r);               {eg 11-1-96}
+  Result := Copy(t, length(t)-(NDigits-1),length(t)) + Str;
+end;
+
+{
+  function SPack
+  Prepends the length of the string in one byte to the value of Str, thus Str must be less than 256 characters.
+
+  e.g., SPack('DataValue')
+  returns   #9 + 'DataValue'
+}
+function SPack(Str: String): String;
+Var
+  r: Integer;
+  Ex1: Exception;
+begin
+  r := Length(Str);
+  // check for enough space in one byte
+  if r > 255 then
+  begin
+    Ex1 := Exception.Create('In generation of message to server, call to SPack with Length of string of '+IntToStr(r)+' chars which exceeds max of 255 chars');
+    Raise Ex1;
+  end;
+//  t := Byte(r);               
+  Result := Char(r) + Str;
+end;
+
+
+function TXWBWinsock.libNetCreate (lpWSData : TWSAData) : integer;
+begin
+    Result := WSAStartup(WINSOCK1_1, lpWSData); {hard coded for Winsock
+           version 1.1}
+end;
+
+function TXWBWinsock.libNetDestroy :integer;
+begin
+  WSAUnhookBlockingHook;      { -- restore the default mechanism};
+  WSACleanup;                 { -- shutdown TCP API};
+  Result := 1;
+end;
+
+function TXWBWinsock.libSynGetHostIP(s: string): string;
+var
+   HostName: PChar;
+   HostAddr: TSockAddr;
+   TCPResult: PHostEnt;
+   test: longint;
+   ChangeCursor: Boolean;
+begin
+    { -- set up a hook for blocking calls so there is no automatic DoEvents
+      in the background }
+   xFlush := False;
+   NetTimerStart := Now;
+   NetCallPending := True;
+   HookTimeOut := XHookTimeOut;
+   WSASetBlockingHook(@NetBlockingHook);
+
+   if Screen.Cursor = crDefault then
+     ChangeCursor := True
+   else
+     ChangeCursor := False;
+   if ChangeCursor then
+     Screen.Cursor := crHourGlass;
+   HostName := StrNew(PChar(s));
+   test := inet_addr(HostName);
+   if test > INADDR_ANY then
+      begin
+           Result := s;
+           StrDispose(Hostname);
+           if ChangeCursor then
+             Screen.Cursor := crDefault;
+           exit;
+      end;
+
+   try
+   begin
+      TCPResult := gethostbyname(HostName);
+      if TCPResult = nil then
+         begin
+              if ChangeCursor then
+                Screen.Cursor := crDefault;
+              WSAUnhookBlockingHook;
+              Result := '';
+              StrDispose(HostName);
+              exit;
+         end;
+
+      HostAddr.sin_addr.S_addr := longint(plongint(TCPResult^.h_addr_list^)^);
+
+   end;
+   except on EInvalidPointer do
+          begin
+               Result := '';
+               Screen.Cursor := crDefault;
+               StrDispose(HostName);
+               exit;
+          end;
+   end;
+   if ChangeCursor then
+     Screen.Cursor := crDefault;
+   WSAUnhookBlockingHook;
+   Result := StrPas(inet_ntoa(HostAddr.sin_addr));
+   StrDispose(HostName);
+end;
+
+function TXWBWinsock.cRight;
+var
+   i,t: longint;
+begin
+     t := strlen(z);
+     if n < t then
+        begin
+             for i := 0 to n do
+                 z[i] := z[t-n+i];
+             z[n] := chr(0);
+        end;
+     cRight := z;
+end;
+
+function TXWBWinsock.cLeft;
+var
+   t: longint;
+begin
+     t := strlen(z);
+     if n > t then n := t;
+     z[n] := chr(0);
+     cLeft := z;
+end;
+
+function TXWBWinsock.BuildApi ( n,p: string; f: longint): string;
+Var
+  x,s: string;
+begin
+     str(f,x);
+     s := StrPack(p,5);
+     result := StrPack(x + n + '^' + s,5);
+end;
+
+function TXWBWinsock.NetworkConnect(ForegroundM: boolean; Server: string; 
+    ListenerPort, TimeOut: integer): Integer;
+var
+   status: integer;
+   hSocket: integer;
+   BrokerError: EBrokerError;
+begin
+  Prefix := '[XWB]';
+     xFlush := False;
+     IsConnected := False;
+     XHookTimeOut := TimeOut;
+     if not OldConnectionOnly then
+     try
+       status := NetStart(ForeGroundM, server, ListenerPort, hSocket);
+     except
+       on E: EBrokerError do
+       begin
+         if IsBackwardsCompatible then  // remove DSM specific error message, and just go with any error
+         begin
+           status := NetStart1(ForeGroundM, server, ListenerPort, hSocket);
+         end
+         else if ((Pos('connection lost',E.Message) > 0) //  DSM
+              or ((Pos('recv',E.Message) > 0) and (Pos('WSAECONNRESET',E.Message) > 0))) then  // Cache
+         begin
+           BrokerError := EBrokerError.Create('Broker requires a UCX or single connection protocol and this port uses the callback protocol.'+'  The application is specified to be non-backwards compatible.  Installing patch XWB*1.1*35 and activating this port number for UCX connections will correct the problem.');
+           raise BrokerError;
+         end
+         else
+           raise;
+       end;
+     end
+     else  // OldConnectionOnly
+       status := NetStart1(ForeGroundM, server, ListenerPort, hSocket);
+
+     if status = 0 then IsConnected := True;
+     Result := hSocket;                  {return the newly established socket}
+end;
+
+procedure TXWBWinsock.NetworkDisconnect(hSocket: integer);
+begin
+     xFlush := False;
+     if IsConnected then
+     try
+        NetStop(hSocket);
+     except on EBrokerError do
+     begin
+          SocketError := WSAUnhookBlockingHook;     { -- rest deflt mechanism}
+          SocketError := WSACleanup;                { -- shutdown TCP API}
+     end;
+     end;
+
+end;
+
+function TXWBWinsock.BuildHdr ( wkid: string; winh: string; prch: string;
+         wish: string): string;
+Var
+  t: string;
+begin
+   t := wkid + ';' + winh + ';' + prch + ';' + wish + ';';
+   Result := StrPack(t,3);
+end;
+
+function TXWBWinsock.BuildPar(hSocket: integer; api, RPCVer: string;
+         const Parameters: TParams): string;
+var
+  i,ParamCount: integer;
+  param: string;
+  tResult: string;
+  subscript: string;
+  IsSeen: Boolean;
+  BrokerError: EBrokerError;
+  Str: String;
+begin
+  param := '5';
+  if Parameters = nil then ParamCount := 0
+  else ParamCount := Parameters.Count;
+  for i := 0 to ParamCount - 1 do
+  begin
+    if Parameters[i].PType <> undefined then
+    begin
+       // Make sure that new parameter types are only used with non-callback server.
+      if IsBackwardsCompatible and ((Parameters[i].PType = global) or (Parameters[i].PType = empty) or (Parameters[i].PType = stream)) then
+      begin
+        if Parameters[i].PType = global then
+          Str := 'global'
+        else if Parameters[i].PType = empty then
+          Str := 'empty'
+        else
+          Str := 'stream';
+        BrokerError := EBrokerError.Create('Use of ' + Str + ' parameter type requires setting the TRPCBroker IsBackwardsCompatible property to FALSE');
+        raise BrokerError;
+      end;
+      with Parameters[i] do
+      begin
+//        if PType= null then
+//          param:='';
+
+        if PType = literal then
+          param := param + '0'+LPack(Value,CountWidth)+'f';      // 030107 new message protocol
+
+        if PType = reference then
+          param := param + '1'+LPack(Value,CountWidth)+'f';     // 030107 new message protocol
+
+        if PType = empty then
+          param := param + '4f';
+
+        if (PType = list) or (PType = global) then
+        begin
+          if PType = list then      // 030107 new message protocol
+            param := param + '2'
+          else
+            param := param + '3';
+          IsSeen := False;
+          subscript := Mult.First;
+          while subscript <> '' do
+          begin
+            if IsSeen then
+              param := param + 't';
+            if Mult[subscript] = '' then
+              Mult[subscript] := #1;
+            param := param + LPack(subscript,CountWidth)+LPack(Mult[subscript],CountWidth);
+            IsSeen := True;
+            subscript := Mult.Order(subscript,1);
+          end;  // while subscript <> ''
+          if not IsSeen then         // 040922 added to take care of list/global parameters with no values
+            param := param + LPack('',CountWidth);
+          param := param + 'f';
+        end;
+        if PType = stream then
+        begin
+          param := param + '5' + LPack(Value,CountWidth) + 'f';
+        end;
+      end;  // with Parameters[i] do
+    end;  // if Parameters[i].PType <> undefined
+  end; // for i := 0
+  if param = '5' then
+    param := param + '4f';
+
+  tresult := Prefix + '11' + IntToStr(CountWidth) + '0' + '2' + SPack(RPCVer) + SPack(api) + param + #4;
+
+//  Application.ProcessMessages;  // removed 040716 jli not needed and may impact some programs
+
+  Result := tresult;
+end;
+{                   // previous message protocol
+  sin := TStringList.Create;
+  sin.clear;
+  x := '';
+  param := '';
+  arr := 0;
+  if Parameters = nil then ParamCount := 0
+  else ParamCount := Parameters.Count;
+  for i := 0 to ParamCount - 1 do
+    if Parameters[i].PType <> undefined then begin
+      with Parameters[i] do begin
+
+//        if PType= null then
+//          param:='';
+
+        if PType = literal then
+          param := param + strpack('0' + Value,3);
+        if PType = reference then
+          param := param + strpack('1' + Value,3);
+        if (PType = list) or (PType = global) then begin
+          Value := '.x';
+          param := param + strpack('2' + Value,3);
+          if Pos('.',Value) >0 then
+            x := Copy(Value,2,length(Value));
+//            if PType = wordproc then dec(last);
+            subscript := Mult.First;
+            while subscript <> '' do begin
+              if Mult[subscript] = '' then Mult[subscript] := #1;
+              sin.Add(StrPack(subscript,3) + StrPack(Mult[subscript],3));
+              subscript := Mult.Order(subscript,1);
+            end;  // while
+            sin.Add('000');
+            arr := 1;
+        end;  // if
+      end;  // with
+    end;  // if
+
+param := Copy(param,1,Length(param));
+tsize := 0;
+
+tResult := '';
+tout := '';
+
+hdr := BuildHdr('XWB','','','');
+strout := strpack(hdr + BuildApi(api,param,arr),5);
+num :=0;
+
+RPCVersion := '';
+RPCVersion := VarPack(RPCVer);
+
+if sin.Count-1 > 0 then num := sin.Count-1;
+
+if num > 0 then
+   begin
+        for i := 0 to num do
+          tsize := tsize + length(sin.strings[i]);
+        x := '00000' + IntToStr(tsize + length(strout)+ length(RPCVersion));
+   end;
+if num = 0 then
+   begin
+        x := '00000' + IntToStr(length(strout)+ length(RPCVersion));
+   end;
+
+psize := x;
+psize := Copy(psize,length(psize)-5,5);
+tResult := psize;
+tResult := ConCat(tResult, RPCVersion);
+tout := strout;
+tResult := ConCat(tResult, tout);
+
+if num > 0 then
+   begin
+        for i := 0 to num do
+            tResult := ConCat(tResult, sin.strings[i]);
+   end;
+
+sin.free;
+
+frmBrokerExample.Edit1.Text := tResult;
+
+Result := tResult;  // return result
+end;
+}
+
+function TXWBWinsock.StrPack(n: string; p: integer): String;
+Var
+  s,l: integer;
+  t,x,zero: shortstring;
+  y: string;
+begin
+
+    s := Length(n);
+    fillchar(zero,p+1, '0');
+    SetLength(zero, p);
+    str(s,x);
+    t := zero + x;
+    l := length(x)+1;
+    y := Copy(t, l , p);
+    y := y + n;
+    Result := y;
+end;
+
+function TXWBWinsock.VarPack(n: string): string;
+var
+   s: integer;
+begin
+     if n = '' then
+        n := '0';
+     s := Length(n);
+     SetLength(Result, s+2);
+     Result := '|' + chr(s) + n;
+end;
+
+const
+     OneSecond = 0.000011574;
+
+function NetBlockingHook: BOOL;
+var
+   TimeOut: double;
+     //TimeOut = 30 * OneSecond;
+
+begin
+  if HookTimeOut > 0 then
+     TimeOut := HookTimeOut * OneSecond
+  else
+      TimeOut := OneSecond / 20;
+  Result := False;
+  if NetCallPending then
+     if Now > (NetTimerStart + TimeOut) then WSACancelBlockingCall;
+end;
+
+function TXWBWinsock.NetCall(hSocket: integer; imsg: string): PChar;
+var
+  BufSend, BufRecv, BufPtr: PChar;
+  sBuf: string;
+  OldTimeOut: integer;
+  BytesRead, BytesLeft, BytesTotal: longint;
+  TryNumber: Integer;
+  BadXfer: Boolean;
+  xString: String;
+begin
+
+  { -- clear receive buffer prior to sending rpc }
+  if xFlush = True then begin
+     OldTimeOut := HookTimeOut;
+     HookTimeOut := 0;
+     WSASetBlockingHook(@NetBlockingHook);
+     NetCallPending := True;
+     BufRecv := StrAlloc(Buffer32k);
+     NetTimerStart := Now;
+     BytesRead := recv(hSocket, BufRecv^, Buffer32k, 0);
+     if BytesRead > 0 then
+       while BufRecv[BytesRead-1] <> #4 do begin
+         BytesRead := recv(hSocket, BufRecv^, Buffer32k, 0);
+       end;
+     StrDispose(BufRecv);
+     xFlush := False;
+     //Buf := nil;    //P14
+     HookTimeOut := OldTimeOut;
+  end;
+  { -- provide variables for blocking hook }
+
+  TryNumber := 0;
+  BadXfer := True;
+
+
+  { -- send message length + message to server }
+
+  //BytesTotal := length(Prefix) + length(imsg) + 1 // p14
+  //Buf := StrAlloc(BytesTotal);
+  //Buf[0] := #0;
+
+   if Prefix = '[XWB]' then
+     BufSend := StrNew(PChar({Prefix +} imsg))  //;     //moved in P14
+   else
+     BufSend := StrNew(PChar({Prefix +} imsg));
+  BufRecv := StrAlloc(Buffer32k);
+  Result := PChar('');
+//  try
+  while BadXfer and (TryNumber < 4) do
+  begin
+    NetCallPending := True;
+    NetTimerStart := Now;
+    TryNumber := TryNumber + 1;
+    BadXfer := False;
+   {Clipboard.SetTextBuf(buf);
+    ShowMessage('In Clipboard');}
+    SocketError := send(hSocket, BufSend^, StrLen(BufSend), 0);
+    if SocketError = SOCKET_ERROR then
+      NetError('send', 0);
+{
+  finally
+    StrDispose(Buf);
+    //Buf := nil;     //P14
+  end;
+}
+    BufRecv[0] := #0;
+    try
+      BufPtr := BufRecv;
+      BytesLeft := Buffer32k;
+      BytesTotal := 0;
+
+      {Get Security and Application packets}
+      SecuritySegment := GetServerPacket(hSocket);
+      ApplicationSegment := GetServerPacket(hSocket);
+      sBuf := '';
+      { -- loop reading TCP buffer until server is finished sending reply }
+
+      repeat
+        BytesRead := recv(hSocket, BufPtr^, BytesLeft, 0);
+
+        if BytesRead > 0 then begin
+          if BufPtr[BytesRead-1] = #4 then
+          begin
+            sBuf := ConCat(sBuf, BufPtr);
+          end
+          else
+          begin
+            BufPtr[BytesRead] := #0;
+            sBuf := ConCat(sBuf, BufPtr);
+          end;
+          Inc(BytesTotal, BytesRead);
+        end;
+
+        if BytesRead <= 0 then
+        begin
+          if BytesRead = SOCKET_ERROR then
+            NetError('recv', 0)
+          else
+            NetError('connection lost', 0);
+          break;
+        end;
+      until BufPtr[BytesRead-1] = #4;
+      sBuf := Copy(sBuf, 1, BytesTotal - 1);
+      StrDispose(BufRecv);
+      BufRecv := StrAlloc(BytesTotal+1);   // cause of many memory leaks
+      StrCopy(BufRecv, PChar(sBuf));
+      Result := BufRecv;
+      if ApplicationSegment = 'U411' then
+        BadXfer := True;
+      NetCallPending := False;
+    finally
+      sBuf := '';
+    end;
+  end;
+
+  if BadXfer then
+  begin
+    StrDispose(BufRecv);
+    NetError(StrPas('Repeated Incomplete Reads on the server'), XWB_BadReads);
+    Result := StrNew('');
+  end;
+
+  { -- if there was on error on the server, display the error code }
+
+  if Result[0] = #24 then
+  begin
+    xString := StrPas(@Result[1]);
+    StrDispose(BufRecv);
+    NetError(xString, XWB_M_REJECT);
+//    NetCall := #0;
+    Result := StrNew('');
+  end;
+end;
+
+function TXWBWinsock.tCall(hSocket: integer; api, apVer: String; Parameters: TParams;
+         var Sec , App: PChar; TimeOut: integer ): PChar;
+var
+ tmp: string;
+ ChangeCursor: Boolean;
+begin
+     HookTimeOut := TimeOut;
+     if (string(Api) <> 'XWB IM HERE') and (Screen.Cursor = crDefault) then
+       ChangeCursor  := True
+     else
+       ChangeCursor := False;
+     if ChangeCursor then
+       Screen.Cursor := crHourGlass;  //P6
+
+     if Prefix = '[XWB]' then
+       tmp := BuildPar(hSocket, api, apVer, Parameters)
+     else
+       tmp := BuildPar1(hSocket, api, apVer, Parameters);
+
+//     xFlush := True;     // Have it clear input buffers prior to call
+     Result := NetCall(hSocket, tmp);
+     StrPCopy(Sec, SecuritySegment);
+     StrPCopy(App, ApplicationSegment);
+     if ChangeCursor then
+       Screen.Cursor := crDefault;
+end;
+
+
+function TXWBWinsock.NetStart (ForegroundM: boolean; Server: string;
+                   ListenerPort: integer; var hSocket: integer): integer;
+Var
+  WinSockData: TWSADATA;
+  LocalHost, DHCPHost: TSockAddr;
+  LocalName, workstation, pDHCPName: string;
+  y, tmp, upArrow, rAccept, rLost: string;
+  tmpPchar: PChar;
+  pLocalname: array [0..255] of char;
+  r: integer;
+  HostBuf,DHCPBuf: PHostEnt;
+  lin: TLinger;
+  s_lin: array [0..3] of char absolute lin;
+  ChangeCursor: Boolean;
+begin
+{ ForegroundM is a boolean value, TRUE means the M handling process is
+  running interactively a pointer rather than passing address length
+  by value) }
+
+    { -- initialize Windows Sockets API for this task }
+    if Screen.Cursor = crDefault then
+      ChangeCursor := True
+    else
+      ChangeCursor := False;
+    if ChangeCursor then
+      Screen.Cursor := crHourGlass;
+    upArrow := string('^');
+    rAccept := string('accept');
+    rLost := string('(connection lost)');
+
+    SocketError := WSAStartup(WINSOCK1_1, WinSockData);
+    If SocketError >0 Then
+            NetError( 'WSAStartup',0);
+
+    { -- set up a hook for blocking calls so there is no automatic DoEvents
+     in the background }
+    NetCallPending := False;
+    if ForeGroundM = False then if WSASetBlockingHook(@NetBlockingHook) = nil
+       then NetError('WSASetBlockingHook',0);
+
+    { -- establish HostEnt and Address structure for local machine}
+    SocketError := gethostname(pLocalName, 255); { -- name of local system}
+    If SocketError >0 Then
+       NetError ('gethostname (local)',0);
+    HostBuf := gethostbyname(pLocalName); { -- info for local name}
+    If HostBuf = nil Then
+       NetError( 'gethostbyname',0);
+    LocalHost.sin_addr.S_addr := longint(plongint(HostBuf^.h_addr_list^)^);
+    LocalName := inet_ntoa(LocalHost.sin_addr);
+    workstation := string(HostBuf.h_name);
+
+    { -- establish HostEnt and Address structure for remote machine }
+    if inet_addr(PChar(Server)) <> longint(INADDR_NONE) then
+    begin
+      DHCPHost.sin_addr.S_addr := inet_addr(PChar(Server));
+      DHCPBuf := gethostbyaddr(@DHCPHost.sin_addr.S_addr,sizeof(DHCPHost),PF_INET);
+    end
+    else
+        DHCPBuf := gethostbyname(PChar(Server)); { --  info for DHCP system}
+
+    If DHCPBuf = nil Then
+    begin
+        { modification to take care of problems with 10-dot addresses that weren't registered - solution found by Shawn Hardenbrook }
+//            NetError ('Error Identifying Remote Host ' + Server,0);
+//            NetStart := 10001;
+//            exit;
+      DHCPHost.sin_addr.S_addr := inet_addr(PChar(Server));
+      pDHCPName := 'UNKNOWN';
+    end
+    else
+    begin;
+      DHCPHost.sin_addr.S_addr := longint(plongint(DHCPBuf^.h_addr_list^)^);
+      pDHCPName := inet_ntoa(DHCPHost.sin_addr);
+    end;
+    DHCPHost.sin_family := PF_INET;                 { -- internet address type}
+    DHCPHost.sin_port := htons(ListenerPort);        { -- port to connect to}
+
+    { -- make connection to DHCP }
+    hSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+    If hSocket = INVALID_SOCKET Then
+            NetError( 'socket',0);
+
+    SocketError := connect(hSocket, DHCPHost, SizeOf(DHCPHost));
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'connect',0);
+    HookTimeOut := 30;
+
+       { -- remove setup of hSocketListen
+
+//    establish local IP now that connection is done
+    AddrLen := SizeOf(LocalHost);
+    SocketError := getsockname(hSocket, LocalHost, AddrLen);
+    if SocketError = SOCKET_ERROR then
+       NetError ('getsockname',0);
+    LocalName := inet_ntoa(LocalHost.sin_addr);
+
+//   -- set up listening socket for DHCP return connect
+    hSocketListen := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // --  new socket
+    If hSocketListen = INVALID_SOCKET Then
+      NetError ('socket (listening)',0);
+
+    LocalHost.sin_family := PF_INET;            // -- internet address type
+    LocalHost.sin_port := 0;                    // -- local listening port
+    SocketError := bind(hSocketListen, LocalHost,
+                SizeOf(LocalHost)); // -- bind socket to address
+    If SocketError = SOCKET_ERROR Then
+      NetError( 'bind',0);
+
+    AddrLen := sizeof(LocalHost);
+    SocketError := getsockname(hSocketListen, LocalHost,
+                AddrLen);  // -- get listening port #
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'getsockname',0);
+    LocalPort := ntohs(LocalHost.sin_port);    // -- put in proper byte order
+
+    SocketError := listen(hSocketListen, 1);   // -- put socket in listen mode
+    If SocketError = SOCKET_ERROR Then
+            NetError( 'listen',0);
+}
+    { -- send IP address + port + workstation name and wait for OK : eg 1-30-97}
+{
+    RPCVersion := VarPack(BrokerVer);              //   eg 11-1-96
+    x := string('TCPconnect^');
+    x := ConCat(x, LocalName, upArrow);            //   local ip address
+    t := IntToStr(LocalPort);                         // callback port
+    x := ConCat(x, t, upArrow, workstation, upArrow); // workstation name
+    r := length(x) + length(RPCVersion) + 5;
+    t := string('00000') + IntToStr(r);               // eg 11-1-96
+    y := Copy(t, length(t)-4,length(t));
+    y := ConCat(y, RPCVersion, StrPack(x,5));         // rpc version
+}
+    { new protocol 030107 }
+
+//    y := '[XWB]10' +IntToStr(CountWidth)+ '0' + '4'+#$A+'TCPConnect50'+ LPack(LocalName,CountWidth)+'f0'+LPack(IntToStr(LocalPort),CountWidth)+'f0'+LPack(workstation,CountWidth)+'f'+#4;
+    y := Prefix + '10' +IntToStr(CountWidth)+ '0' + '4'+#$A +'TCPConnect50'+ LPack(LocalName,CountWidth)+'f0'+LPack(IntToStr(0),CountWidth)+'f0'+LPack(workstation,CountWidth)+'f'+#4;
+
+{  // need to remove selecting port etc from client, since it will now be handled on the server P36
+
+    if ForeGroundM = True then
+    begin
+         if ChangeCursor then
+           Screen.Cursor := crDefault;
+         t := 'Start M job D EN^XWBTCP' + #13 + #10 + 'Addr = ' +
+           LocalName + #13 + #10 + 'Port = ' + IntToStr(LocalPort);
+
+         frmDebugInfo := TfrmDebugInfo.Create(Application.MainForm);
+         try
+           frmDebugInfo.lblDebugInfo.Caption := t;
+           ShowApplicationAndFocusOK(Application);
+           frmDebugInfo.ShowModal;
+         finally
+           frmDebugInfo.Free
+         end;
+
+//         ShowMessage(t);  //TODO
+    end;
+}  // remove debug mode from client
+
+    tmpPChar := NetCall(hSocket, PChar(y));                {eg 11-1-96}
+    tmp := tmpPchar;
+    StrDispose(tmpPchar);
+    if CompareStr(tmp, rlost) = 0 then
+       begin
+            lin.l_onoff := 1;
+            lin.l_linger := 0;
+
+            SocketError := setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
+                        s_lin, sizeof(lin));
+            If SocketError = SOCKET_ERROR Then
+               NetError( 'setsockopt (connect)',0);
+
+          closesocket(hSocket);
+          WSACleanup;
+          Result := 10002;
+          exit;
+       end;
+    r := CompareStr(tmp, rAccept);
+    If r <> 0 Then
+       NetError ('NetCall',XWB_M_REJECT);
+{  // JLI 021217 remove disconnect and reconnect code -- use UCX connection directly.
+    lin.l_onoff := 1;
+    lin.l_linger := 0;
+
+    SocketError := setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
+                s_lin, sizeof(lin));
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'setsockopt (connect)',0);
+    SocketError := closesocket(hSocket);          { -- done with this socket
+    If SocketError > 0 Then
+            NetError( 'closesocket',0);
+
+    { -- wait for connect from DHCP and accept it - (uses blocking call)
+    AddrLen := SizeOf(DHCPHost);
+    hSocket := accept(hSocketListen, @DHCPHost, @AddrLen);{ -- returns new socket
+    If hSocket = INVALID_SOCKET Then
+       begin
+            NetError( 'accept',0);
+       end;
+
+    lin.l_onoff := 1;
+    lin.l_linger := 0;
+
+    SocketError := setsockopt(hSocketListen, SOL_SOCKET, SO_LINGER,
+                s_lin, sizeof(lin));
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'setsockopt (connect)',0);
+
+    SocketError := closesocket(hSocketListen);   // -- done with listen skt
+
+    If SocketError > 0 Then
+       begin
+            NetError ('closesocket (listening)',0);
+       end;
+}             // JLI 12/17/02  end of section commented out
+
+    if ChangeCursor then
+      Screen.Cursor := crDefault;
+    NetStart := 0;
+{ -- connection established, socket handle now in:  hSocket
+        ifrmWinSock.txtStatus := 'socket obtained' *** }
+end;
+
+function TXWBWinsock.NetStart1(ForegroundM: boolean; Server: string;
+    ListenerPort: integer; var hSocket: integer): Integer;
+Var
+  WinSockData: TWSADATA;
+  LocalHost, DHCPHost: TSockAddr;
+  LocalName, t, workstation, pDHCPName: string;
+  x, y, tmp,RPCVersion, upArrow, rAccept, rLost: string;
+  tmpPchar: PChar;
+  pLocalname: array [0..255] of char;
+  LocalPort, AddrLen, hSocketListen,r: integer;
+  HostBuf,DHCPBuf: PHostEnt;
+  lin: TLinger;
+  s_lin: array [0..3] of char absolute lin;
+  ChangeCursor: Boolean;
+begin
+  Prefix := '{XWB}';
+{ ForegroundM is a boolean value, TRUE means the M handling process is
+  running interactively a pointer rather than passing address length
+  by value) }
+
+    { -- initialize Windows Sockets API for this task }
+    if Screen.Cursor = crDefault then
+      ChangeCursor := True
+    else
+      ChangeCursor := False;
+    if ChangeCursor then
+      Screen.Cursor := crHourGlass;
+    upArrow := string('^');
+    rAccept := string('accept');
+    rLost := string('(connection lost)');
+
+    SocketError := WSAStartup(WINSOCK1_1, WinSockData);
+    If SocketError >0 Then
+            NetError( 'WSAStartup',0);
+
+    { -- set up a hook for blocking calls so there is no automatic DoEvents
+     in the background }
+    NetCallPending := False;
+    if ForeGroundM = False then if WSASetBlockingHook(@NetBlockingHook) = nil
+       then NetError('WSASetBlockingHook',0);
+
+    { -- establish HostEnt and Address structure for local machine}
+    SocketError := gethostname(pLocalName, 255); { -- name of local system}
+    If SocketError >0 Then
+       NetError ('gethostname (local)',0);
+    HostBuf := gethostbyname(pLocalName); { -- info for local name}
+    If HostBuf = nil Then
+       NetError( 'gethostbyname',0);
+    LocalHost.sin_addr.S_addr := longint(plongint(HostBuf^.h_addr_list^)^);
+    LocalName := inet_ntoa(LocalHost.sin_addr);
+    workstation := string(HostBuf.h_name);
+
+    { -- establish HostEnt and Address structure for remote machine }
+    if inet_addr(PChar(Server)) <> longint(INADDR_NONE) then
+    begin
+      DHCPHost.sin_addr.S_addr := inet_addr(PChar(Server));
+      DHCPBuf := gethostbyaddr(@DHCPHost.sin_addr.S_addr,sizeof(DHCPHost),PF_INET);
+    end
+    else
+        DHCPBuf := gethostbyname(PChar(Server)); { --  info for DHCP system}
+
+    If DHCPBuf = nil Then
+    begin
+        { modification to take care of problems with 10-dot addresses that weren't registered - solution found by Shawn Hardenbrook }
+//            NetError ('Error Identifying Remote Host ' + Server,0);
+//            NetStart := 10001;
+//            exit;
+      DHCPHost.sin_addr.S_addr := inet_addr(PChar(Server));
+      pDHCPName := 'UNKNOWN';
+    end
+    else
+    begin;
+      DHCPHost.sin_addr.S_addr := longint(plongint(DHCPBuf^.h_addr_list^)^);
+      pDHCPName := inet_ntoa(DHCPHost.sin_addr);
+    end;
+    DHCPHost.sin_family := PF_INET;                 { -- internet address type}
+    DHCPHost.sin_port := htons(ListenerPort);        { -- port to connect to}
+
+    { -- make connection to DHCP }
+    hSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+    If hSocket = INVALID_SOCKET Then
+            NetError( 'socket',0);
+
+    SocketError := connect(hSocket, DHCPHost, SizeOf(DHCPHost));
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'connect',0);
+
+    {establish local IP now that connection is done}
+    AddrLen := SizeOf(LocalHost);
+    SocketError := getsockname(hSocket, LocalHost, AddrLen);
+    if SocketError = SOCKET_ERROR then
+       NetError ('getsockname',0);
+    LocalName := inet_ntoa(LocalHost.sin_addr);
+
+//    { -- set up listening socket for DHCP return connect }
+    hSocketListen := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // --  new socket
+    If hSocketListen = INVALID_SOCKET Then
+      NetError ('socket (listening)',0);
+
+    LocalHost.sin_family := PF_INET;            // -- internet address type
+    LocalHost.sin_port := 0;                    // -- local listening port
+    SocketError := bind(hSocketListen, LocalHost,
+                SizeOf(LocalHost)); // -- bind socket to address
+    If SocketError = SOCKET_ERROR Then
+      NetError( 'bind',0);
+
+    AddrLen := sizeof(LocalHost);
+    SocketError := getsockname(hSocketListen, LocalHost,
+                AddrLen);  // -- get listening port #
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'getsockname',0);
+    LocalPort := ntohs(LocalHost.sin_port);    // -- put in proper byte order
+
+    SocketError := listen(hSocketListen, 1);   // -- put socket in listen mode
+    If SocketError = SOCKET_ERROR Then
+            NetError( 'listen',0);
+
+    { -- send IP address + port + workstation name and wait for OK : eg 1-30-97}
+
+    RPCVersion := VarPack(BrokerVer);              //   eg 11-1-96
+    x := string('TCPconnect^');
+    x := ConCat(x, LocalName, upArrow);            //   local ip address
+    t := IntToStr(LocalPort);                         // callback port
+    x := ConCat(x, t, upArrow, workstation, upArrow); // workstation name
+    r := length(x) + length(RPCVersion) + 5;
+    t := string('00000') + IntToStr(r);               // eg 11-1-96
+    y := Copy(t, length(t)-4,length(t));
+    y := ConCat(y, RPCVersion, StrPack(x,5));         // rpc version
+    y := Prefix + y;
+    { new protocol 030107 }
+
+//    y := '[XWB]10' +IntToStr(CountWidth)+ '0' + '4'+#$A+'TCPConnect50'+ LPack(LocalName,CountWidth)+'f0'+LPack(IntToStr(LocalPort),CountWidth)+'f0'+LPack(workstation,CountWidth)+'f'+#4;
+//    y := '[XWB]10' +IntToStr(CountWidth)+ '0' + '4'+#$A+'TCPConnect50'+ LPack(LocalName,CountWidth)+'f0'+LPack(IntToStr(0),CountWidth)+'f0'+LPack(workstation,CountWidth)+'f'+#4;
+
+  // need to remove selecting port etc from client, since it will now be handled on the server P36
+
+    if ForeGroundM = True then
+    begin
+         if ChangeCursor then
+           Screen.Cursor := crDefault;
+         t := 'Start M job D EN^XWBTCP' + #13 + #10 + 'Addr = ' +
+           LocalName + #13 + #10 + 'Port = ' + IntToStr(LocalPort);
+
+         frmDebugInfo := TfrmDebugInfo.Create(Application.MainForm);
+         try
+           frmDebugInfo.lblDebugInfo.Caption := t;
+           ShowApplicationAndFocusOK(Application);
+           frmDebugInfo.ShowModal;
+         finally
+           frmDebugInfo.Free
+         end;
+
+//         ShowMessage(t);  //TODO
+    end;
+  // remove debug mode from client
+
+    tmpPChar := NetCall(hSocket, PChar(y));                {eg 11-1-96}
+    tmp := tmpPchar;
+    StrDispose(tmpPchar);
+    if CompareStr(tmp, rlost) = 0 then
+       begin
+            lin.l_onoff := 1;
+            lin.l_linger := 0;
+
+            SocketError := setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
+                        s_lin, sizeof(lin));
+            If SocketError = SOCKET_ERROR Then
+               NetError( 'setsockopt (connect)',0);
+
+          closesocket(hSocket);
+          WSACleanup;
+          Result := 10002;
+          exit;
+       end;
+    r := CompareStr(tmp, rAccept);
+    If r <> 0 Then
+       NetError ('NetCall',XWB_M_REJECT);
+  // JLI 021217 remove disconnect and reconnect code -- use UCX connection directly.
+    lin.l_onoff := 1;
+    lin.l_linger := 0;
+
+    SocketError := setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
+                s_lin, sizeof(lin));
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'setsockopt (connect)',0);
+    SocketError := closesocket(hSocket);          // -- done with this socket
+    If SocketError > 0 Then
+            NetError( 'closesocket',0);
+
+    // -- wait for connect from DHCP and accept it - (uses blocking call)
+    AddrLen := SizeOf(DHCPHost);
+    hSocket := accept(hSocketListen, @DHCPHost, @AddrLen); // -- returns new socket
+    If hSocket = INVALID_SOCKET Then
+       begin
+            NetError( 'accept',0);
+       end;
+
+    lin.l_onoff := 1;
+    lin.l_linger := 0;
+
+    SocketError := setsockopt(hSocketListen, SOL_SOCKET, SO_LINGER,
+                s_lin, sizeof(lin));
+    If SocketError = SOCKET_ERROR Then
+       NetError( 'setsockopt (connect)',0);
+
+    SocketError := closesocket(hSocketListen);   // -- done with listen skt
+
+    If SocketError > 0 Then
+       begin
+            NetError ('closesocket (listening)',0);
+       end;
+             // JLI 12/17/02  end of section commented out
+
+    if ChangeCursor then
+      Screen.Cursor := crDefault;
+    NetStart1 := 0;
+{ -- connection established, socket handle now in:  hSocket
+        ifrmWinSock.txtStatus := 'socket obtained' *** }
+end;
+
+
+procedure TXWBWinsock.NetStop(hSocket: integer);
+Var
+  tmp: string;
+  lin: TLinger;
+  s_lin: array [0..3] of char absolute lin;
+  ChangeCursor: Boolean;
+  tmpPChar: PChar;
+  Str: String;
+  x: array [0..15] of Char;
+begin
+    if not IsConnected then exit;
+    if Screen.Cursor = crDefault then
+      ChangeCursor := True
+    else
+      ChangeCursor := False;
+    if ChangeCursor then
+      Screen.Cursor := crHourGlass;
+    if hSocket <= 0 then
+    begin
+         if ChangeCursor then
+           screen.cursor := crDefault;
+         exit;
+    end;
+
+    StrPcopy(x, StrPack(StrPack('#BYE#',5),5));
+
+    { convert to new message protocol 030107 }
+    if Prefix = '[XWB]' then
+      Str := Prefix + '10'+IntToStr(CountWidth)+'0' +'4'+#5+'#BYE#'+#4
+    else
+      Str := Prefix + x;
+    If hSocket <> INVALID_SOCKET Then
+    begin
+      tmpPChar := NetCall(hSocket,Str);
+//   	  tmpPChar := NetCall(hSocket, x);
+ 	  tmp := tmpPChar;
+      StrDispose(tmpPChar);
+        lin.l_onoff := 1;                    { -- shut down the M handler};
+        lin.l_linger := 0;
+
+        SocketError := setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
+                    s_lin, sizeof(lin));
+        If SocketError = SOCKET_ERROR Then
+           NetError( 'setsockopt (connect)',0);
+
+	SocketError := closesocket(hSocket);  { -- close the socket}
+    end;
+
+    SocketError := WSAUnhookBlockingHook;     { -- restore the default mechanism}
+    SocketError := WSACleanup;                { -- shutdown TCP API}
+    If SocketError > 0 Then
+       NetError( 'WSACleanup',0);             { -- check blocking calls, etc.}
+    if ChangeCursor then
+      Screen.Cursor := crDefault;
+    IsConnected := False;
+end;
+
+
+procedure TXWBWinsock.CloseSockSystem(hSocket: integer; s: string);
+var
+   lin: TLinger;
+   s_lin: array [0..3] of char absolute lin;
+begin
+     lin.l_onoff := 1;
+     lin.l_linger := 0;
+
+     SocketError := setsockopt(hSocket, SOL_SOCKET, SO_LINGER,
+                 s_lin, sizeof(lin));
+     If SocketError = SOCKET_ERROR Then
+        NetError( 'setsockopt (connect)',0);
+
+     closesocket(hSocket);
+     WSACleanup;
+     ShowMessage(s);  //TODO
+     halt(1);
+end;
+
+function TXWBWinsock.GetServerPacket(hSocket: integer): string;
+var
+   s,sb: PChar;
+   buflen: integer;
+begin
+     s := StrAlloc(1);
+     s[0] := #0;
+     buflen := recv(hSocket, s^, 1, 0); {get length of segment}
+     if buflen = SOCKET_ERROR Then   // 040720 code added to check for the timing problem if initial attempt to read during connection fails
+     begin
+       sleep(100);
+       buflen := recv(hSocket, s^, 1, 0);
+     end;
+     if buflen = SOCKET_ERROR then
+       NetError( 'recv',0);
+     buflen := ord(s[0]);
+     sb := StrAlloc(buflen+1);
+     sb[0] := #0;
+     buflen := recv(hSocket, sb^, buflen, 0); {get security segment}
+     if buflen = SOCKET_ERROR Then
+        NetError( 'recv',0);
+     sb[buflen] := #0;
+     Result := StrPas(sb);
+     StrDispose(sb);
+     StrDispose(s);
+end;
+
+constructor TXWBWinsock.Create;
+begin
+  inherited;
+//  NetBlockingHookVar := NetBlockingHook;
+  CountWidth := 3;
+end;
+
+procedure TXWBWinsock.NetError(Action: string; ErrType: integer);
+var
+   x,s: string;
+   r: integer;
+   BrokerError: EBrokerError;
+   TimeOut: Double;
+begin
+   Screen.Cursor := crDefault;
+   r := 0;
+   if ErrType > 0 then r := ErrType;
+   if ErrType = 0 then
+  begin
+        // P36
+        // code added to indicate WSAETIMEDOUT error instead of WSAEINTR
+        // when time out period exceeded.  WSAEINTR error is misleading
+        // since the server is still active, but took too long
+        if NetcallPending then
+        begin
+          if HookTimeOut > 0 then
+          begin
+            TimeOut := HookTimeOut * OneSecond;
+            if Now > (NetTimerStart + TimeOut) then
+              r := WSAETIMEDOUT;
+          end;
+        end;
+        if r = 0 then
+          r := WSAGetLastError;
+        if (r = WSAEINTR) or (r = WSAETIMEDOUT) then xFlush := True;
+        if WSAIsBlocking = True then WSACancelBlockingCall;  // JLI 021210
+  end;
+  Case r of
+        WSAEINTR           : x := 'WSAEINTR';
+        WSAEBADF           : x := 'WSAEINTR';
+        WSAEFAULT          : x := 'WSAEFAULT';
+        WSAEINVAL          : x := 'WSAEINVAL';
+        WSAEMFILE          : x := 'WSAEMFILE';
+        WSAEWOULDBLOCK     : x := 'WSAEWOULDBLOCK';
+        WSAEINPROGRESS     : x := 'WSAEINPROGRESS';
+        WSAEALREADY        : x := 'WSAEALREADY';
+        WSAENOTSOCK        : x := 'WSAENOTSOCK';
+        WSAEDESTADDRREQ    : x := 'WSAEDESTADDRREQ';
+        WSAEMSGSIZE        : x := 'WSAEMSGSIZE';
+        WSAEPROTOTYPE      : x := 'WSAEPROTOTYPE';
+        WSAENOPROTOOPT     : x := 'WSAENOPROTOOPT';
+        WSAEPROTONOSUPPORT : x := 'WSAEPROTONOSUPPORT';
+        WSAESOCKTNOSUPPORT : x := 'WSAESOCKTNOSUPPORT';
+        WSAEOPNOTSUPP      : x := 'WSAEOPNOTSUPP';
+        WSAEPFNOSUPPORT    : x := 'WSAEPFNOSUPPORT';
+        WSAEAFNOSUPPORT    : x := 'WSAEAFNOSUPPORT';
+        WSAEADDRINUSE      : x := 'WSAEADDRINUSE';
+        WSAEADDRNOTAVAIL   : x := 'WSAEADDRNOTAVAIL';
+        WSAENETDOWN        : x := 'WSAENETDOWN';
+        WSAENETUNREACH     : x := 'WSAENETUNREACH';
+        WSAENETRESET       : x := 'WSAENETRESET';
+        WSAECONNABORTED    : x := 'WSAECONNABORTED';
+        WSAECONNRESET      : x := 'WSAECONNRESET';
+        WSAENOBUFS         : x := 'WSAENOBUFS';
+        WSAEISCONN         : x := 'WSAEISCONN';
+        WSAENOTCONN        : x := 'WSAENOTCONN';
+        WSAESHUTDOWN       : x := 'WSAESHUTDOWN';
+        WSAETOOMANYREFS    : x := 'WSAETOOMANYREFS';
+        WSAETIMEDOUT       : x := 'WSAETIMEDOUT';
+        WSAECONNREFUSED    : x := 'WSAECONNREFUSED';
+        WSAELOOP           : x := 'WSAELOOP';
+        WSAENAMETOOLONG    : x := 'WSAENAMETOOLONG';
+        WSAEHOSTDOWN       : x := 'WSAEHOSTDOWN';
+        WSAEHOSTUNREACH    : x := 'WSAEHOSTUNREACH';
+        WSAENOTEMPTY       : x := 'WSAENOTEMPTY';
+        WSAEPROCLIM        : x := 'WSAEPROCLIM';
+        WSAEUSERS          : x := 'WSAEUSERS';
+        WSAEDQUOT          : x := 'WSAEDQUOT';
+        WSAESTALE          : x := 'WSAESTALE';
+        WSAEREMOTE         : x := 'WSAEREMOTE';
+        WSASYSNOTREADY     : x := 'WSASYSNOTREADY';
+        WSAVERNOTSUPPORTED : x := 'WSAVERNOTSUPPORTED';
+        WSANOTINITIALISED  : x := 'WSANOTINITIALISED';
+        WSAHOST_NOT_FOUND  : x := 'WSAHOST_NOT_FOUND';
+        WSATRY_AGAIN       : x := 'WSATRY_AGAIN';
+        WSANO_RECOVERY     : x := 'WSANO_RECOVERY';
+        WSANO_DATA         : x := 'WSANO_DATA';
+
+        XWB_NO_HEAP        : x := 'Insufficient Heap';
+        XWB_M_REJECT       : x := 'M Error - Use ^XTER';
+        XWB_BadReads       : x := 'Server unable to read input data correctly.';
+        XWB_BadSignOn      : x := 'Sign-on was not completed.';
+        XWB_ExeNoMem       : x := 'System was out of memory, executable file was corrupt, or relocations were invalid.';
+        XWB_ExeNoFile      : x := 'File was not found.';
+        XWB_ExeNoPath      : x := 'Path was not found.';
+        XWB_ExeShare       : x := 'Attempt was made to dynamically link to a task,' +
+                                  ' or there was a sharing or network-protection error.';
+        XWB_ExeSepSeg      : x := 'Library required separate data segments for each task.';
+        XWB_ExeLoMem       : x := 'There was insufficient memory to start the application.';
+        XWB_ExeWinVer      : x := 'Windows version was incorrect.';
+        XWB_ExeBadExe      : x := 'Executable file was invalid.' +
+                                  ' Either it was not a Windows application or there was an error in the .EXE image.';
+        XWB_ExeDifOS       : x := 'Application was designed for a different operating system.';
+        XWB_RpcNotReg      : X := 'Remote procedure not registered to application.';
+        XWB_BldConnectList : x := 'BrokerConnections list could not be created';
+        XWB_NullRpcVer     : x := 'RpcVersion cannot be empty.' + #13 + 'Default is 0 (zero).';
+        else x := IntToStr(r);
+  end;
+  s := 'Error encountered.' + chr(13)+chr(10) + 'Function was: ' + Action + chr(13)+chr(10) + 'Error was: ' + x;
+  BrokerError := EBrokerError.Create(s);
+  BrokerError.Action := Action;
+  BrokerError.Code := r;
+  BrokerError.Mnemonic := x;
+  raise BrokerError;
+end;
+
+function TXWBWinsock.BuildPar1(hSocket: integer; api, RPCVer: string; const
+    Parameters: TParams): String;
+var
+  i,ParamCount: integer;
+  num: integer;
+  tsize: longint;
+  arr: LongInt;
+  param,x,hdr,strout: string;
+  tout,psize,tResult,RPCVersion: string;
+  sin: TStringList;
+  subscript: string;
+begin
+  sin := TStringList.Create;
+  sin.clear;
+  x := '';
+  param := '';
+  arr := 0;
+  if Parameters = nil then ParamCount := 0
+  else ParamCount := Parameters.Count;
+  for i := 0 to ParamCount - 1 do
+    if Parameters[i].PType <> undefined then begin
+      with Parameters[i] do begin
+
+        {if PType= null then
+          param:='';}
+
+        if PType = literal then
+          param := param + strpack('0' + Value,3);
+
+        if PType = reference then
+          param := param + strpack('1' + Value,3);
+
+        if (PType = list) {or (PType = wordproc)} then begin
+          Value := '.x';
+          param := param + strpack('2' + Value,3);
+          if Pos('.',Value) >0 then
+            x := Copy(Value,2,length(Value));
+            {if PType = wordproc then dec(last);}
+            subscript := Mult.First;
+            while subscript <> '' do begin
+              if Mult[subscript] = '' then Mult[subscript] := #1;
+              sin.Add(StrPack(subscript,3) + StrPack(Mult[subscript],3));
+              subscript := Mult.Order(subscript,1);
+            end{while};
+            sin.Add('000');
+            arr := 1;
+        end{if};
+      end{with};
+    end{if};
+
+  param := Copy(param,1,Length(param));
+  tsize := 0;
+
+  tResult := '';
+  tout := '';
+
+  hdr := BuildHdr('XWB','','','');
+  strout := strpack(hdr + BuildApi(api,param,arr),5);
+//  num :=0;   //  JLI 040608 to correct handling of empty arrays
+
+  RPCVersion := '';
+  RPCVersion := VarPack(RPCVer);
+
+  {if sin.Count-1 > 0 then} num := sin.Count-1;   //  JLI 040608 to correct handling of empty arrays
+//  if sin.Count-1 > 0 then num := sin.Count-1;
+    
+
+  if {num} sin.Count > 0 then     //  JLI 040608 to correct handling of empty arrays
+//  if num > 0 then
+  begin
+        for i := 0 to num do
+          tsize := tsize + length(sin.strings[i]);
+        x := '00000' + IntToStr(tsize + length(strout)+ length(RPCVersion));
+  end;
+  if {num} sin.Count = 0 then   //  JLI 040608 to correct handling of empty arrays
+//   if num = 0 then
+   begin
+        x := '00000' + IntToStr(length(strout)+ length(RPCVersion));
+   end;
+
+  psize := x;
+  psize := Copy(psize,length(psize)-5,5);
+  tResult := psize;
+  tResult := ConCat(tResult, RPCVersion);
+  tout := strout;
+  tResult := ConCat(tResult, tout);
+
+  if {num} sin.Count > 0 then   //  JLI 040608 to correct handling of empty arrays
+//   if num > 0 then
+   begin
+        for i := 0 to num do
+            tResult := ConCat(tResult, sin.strings[i]);
+   end;
+
+  sin.free;
+
+  Result := Prefix + tResult;  {return result}
+
+end;
+
+end.
+
+
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWBReg.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWBReg.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWBReg.pas	(revision 1676)
@@ -0,0 +1,46 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Registers components and property editors.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit XWBReg;
+
+{$I IISBase.inc}
+
+interface
+
+procedure Register;
+
+implementation
+
+uses Classes,
+  {$IFDEF D6_OR_HIGHER}
+  DesignIntf, DesignEditors, DesignMenus,
+  {$ELSE}
+  DsgnIntf,
+  {$ENDIF}
+     ExptIntf, //Delphi units
+     Trpcb, CCOWRPCBroker,
+     RpcbEdtr, XWBRich20,             //Broker units
+//{$IFDEF VER130}
+//    VERGENCECONTEXTORLib_TLB_D50;
+//{$ENDIF}
+//{$IFDEF VER140}
+//  VERGENCECONTEXTORLib_TLB_D60; //CCOW
+//ENDIF}
+    VergenceContextorLib_TLB;
+
+procedure Register;
+begin
+  RegisterComponents('Kernel',[TRPCBroker, TCCOWRPCBroker, TXWBRichEdit, TContextorControl]);
+
+  RegisterPropertyEditor(TypeInfo(TRemoteProc),nil,'',TRemoteProcProperty);
+  RegisterPropertyEditor(TypeInfo(TServer),nil,'',TServerProperty);
+  RegisterPropertyEditor(TypeInfo(TRpcVersion),nil,'',TRpcVersionProperty);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWBRich20.PAS
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWBRich20.PAS	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWBRich20.PAS	(revision 1676)
@@ -0,0 +1,1678 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Provides a RichEdit Component with ability
+	             to recognize a URL within the RichEdit control.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+{: Unit XWBRich20
+   Based on the article "Detect URLS in the RichEdit Control" by
+   Elias J. Ongpoy in 'Delphi Developer Newsletter', May 2001
+   which incorporates the functionality of the Microsoft Rich Edit
+   Control 2.0 from RichEd20.DLL which incorporates the ability to
+   recognize a URL within the RichEdit control.
+}
+
+unit XWBRich20;
+interface
+uses Messages, Windows, SysUtils, Classes, Controls, Forms,
+  Menus, Graphics, StdCtrls, RichEdit, ToolWin, ImgList, ExtCtrls, ComCtrls;
+
+type
+  TXWBCustomRichEdit = class;
+
+  TAttributeType = (atSelected, atDefaultText);
+  TConsistentAttribute = (caBold, caColor, caFace, caItalic,
+    caSize, caStrikeOut, caUnderline, caProtected);
+  TConsistentAttributes = set of TConsistentAttribute;
+
+  TXWBTextAttributes = class(TPersistent)
+  private
+    RichEdit: TXWBCustomRichEdit;
+    FType: TAttributeType;
+    procedure GetAttributes(var Format: TCharFormat);
+    function GetCharset: TFontCharset;
+    function GetColor: TColor;
+    function GetConsistentAttributes: TConsistentAttributes;
+    function GetHeight: Integer;
+    function GetName: TFontName;
+    function GetPitch: TFontPitch;
+    function GetProtected: Boolean;
+    function GetSize: Integer;
+    function GetStyle: TFontStyles;
+    procedure SetAttributes(var Format: TCharFormat);
+    procedure SetCharset(Value: TFontCharset);
+    procedure SetColor(Value: TColor);
+    procedure SetHeight(Value: Integer);
+    procedure SetName(Value: TFontName);
+    procedure SetPitch(Value: TFontPitch);
+    procedure SetProtected(Value: Boolean);
+    procedure SetSize(Value: Integer);
+    procedure SetStyle(Value: TFontStyles);
+  protected
+    procedure InitFormat(var Format: TCharFormat);
+    procedure AssignTo(Dest: TPersistent); override;
+  public
+    constructor Create(AOwner: TXWBCustomRichEdit; AttributeType: TAttributeType);
+    procedure Assign(Source: TPersistent); override;
+    property Charset: TFontCharset read GetCharset write SetCharset;
+    property Color: TColor read GetColor write SetColor;
+    property ConsistentAttributes: TConsistentAttributes read GetConsistentAttributes;
+    property Name: TFontName read GetName write SetName;
+    property Pitch: TFontPitch read GetPitch write SetPitch;
+    property Protected: Boolean read GetProtected write SetProtected;
+    property Size: Integer read GetSize write SetSize;
+    property Style: TFontStyles read GetStyle write SetStyle;
+    property Height: Integer read GetHeight write SetHeight;
+  end;
+
+{ TParaAttributes }
+
+  TNumberingStyle = (nsNone, nsBullet);
+
+  TParaAttributes = class(TPersistent)
+  private
+    RichEdit: TXWBCustomRichEdit;
+    procedure GetAttributes(var Paragraph: TParaFormat);
+    function GetAlignment: TAlignment;
+    function GetFirstIndent: Longint;
+    function GetLeftIndent: Longint;
+    function GetRightIndent: Longint;
+    function GetNumbering: TNumberingStyle;
+    function GetTab(Index: Byte): Longint;
+    function GetTabCount: Integer;
+    procedure InitPara(var Paragraph: TParaFormat);
+    procedure SetAlignment(Value: TAlignment);
+    procedure SetAttributes(var Paragraph: TParaFormat);
+    procedure SetFirstIndent(Value: Longint);
+    procedure SetLeftIndent(Value: Longint);
+    procedure SetRightIndent(Value: Longint);
+    procedure SetNumbering(Value: TNumberingStyle);
+    procedure SetTab(Index: Byte; Value: Longint);
+    procedure SetTabCount(Value: Integer);
+  public
+    constructor Create(AOwner: TXWBCustomRichEdit);
+    procedure Assign(Source: TPersistent); override;
+    property Alignment: TAlignment read GetAlignment write SetAlignment;
+    property FirstIndent: Longint read GetFirstIndent write SetFirstIndent;
+    property LeftIndent: Longint read GetLeftIndent write SetLeftIndent;
+    property Numbering: TNumberingStyle read GetNumbering write SetNumbering;
+    property RightIndent: Longint read GetRightIndent write SetRightIndent;
+    property Tab[Index: Byte]: Longint read GetTab write SetTab;
+    property TabCount: Integer read GetTabCount write SetTabCount;
+  end;
+
+{ TXWBCustomRichEdit }
+
+  TRichEditResizeEvent = procedure(Sender: TObject; Rect: TRect) of object;
+  TRichEditProtectChange = procedure(Sender: TObject;
+    StartPos, EndPos: Integer; var AllowChange: Boolean) of object;
+  TRichEditSaveClipboard = procedure(Sender: TObject;
+    NumObjects, NumChars: Integer; var SaveClipboard: Boolean) of object;
+  TSearchType = (stWholeWord, stMatchCase);
+  TSearchTypes = set of TSearchType;
+
+  TConversion = class(TObject)
+  public
+    function ConvertReadStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
+    function ConvertWriteStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
+  end;
+
+  TConversionClass = class of TConversion;
+
+  PConversionFormat = ^TConversionFormat;
+  TConversionFormat = record
+    ConversionClass: TConversionClass;
+    Extension: string;
+    Next: PConversionFormat;
+  end;
+
+  PRichEditStreamInfo = ^TRichEditStreamInfo;
+  TRichEditStreamInfo = record
+    Converter: TConversion;
+    Stream: TStream;
+  end;
+
+  TXWBCustomRichEdit = class(TCustomMemo)
+  private
+    FHideScrollBars: Boolean;
+    FSelAttributes: TXWBTextAttributes;
+    FDefAttributes: TXWBTextAttributes;
+    FParagraph: TParaAttributes;
+    FOldParaAlignment: TAlignment;
+    FScreenLogPixels: Integer;
+    FRichEditStrings: TStrings;
+    FMemStream: TMemoryStream;
+    FOnSelChange: TNotifyEvent;
+
+    FHideSelection: Boolean;
+    FURLDetect: Boolean;      // for URL Detect Property
+
+    FModified: Boolean;
+    FDefaultConverter: TConversionClass;
+    FOnResizeRequest: TRichEditResizeEvent;
+    FOnProtectChange: TRichEditProtectChange;
+    FOnSaveClipboard: TRichEditSaveClipboard;
+    FPageRect: TRect;
+
+    procedure CMBiDiModeChanged(var Message: TMessage); message CM_BIDIMODECHANGED;
+    procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED;
+    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
+    procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
+    function GetPlainText: Boolean;
+    function ProtectChange(StartPos, EndPos: Integer): Boolean;
+    function SaveClipboard(NumObj, NumChars: Integer): Boolean;
+    procedure SetHideScrollBars(Value: Boolean);
+    procedure SetHideSelection(Value: Boolean);
+    procedure SetURLDetect(Value: boolean);
+    
+    procedure SetPlainText(Value: Boolean);
+    procedure SetRichEditStrings(Value: TStrings);
+    procedure SetDefAttributes(Value: TXWBTextAttributes);
+    procedure SetSelAttributes(Value: TXWBTextAttributes);
+    procedure WMNCDestroy(var Message: TWMNCDestroy); message WM_NCDESTROY;
+    procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
+    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
+    procedure WMSetFont(var Message: TWMSetFont); message WM_SETFONT;
+    procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP;
+
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure CreateWnd; override;
+    procedure DestroyWnd; override;
+    procedure RequestSize(const Rect: TRect); virtual;
+    procedure SelectionChange; dynamic;
+    procedure DoSetMaxLength(Value: Integer); override;
+    function GetCaretPos: TPoint; override;
+    function GetSelLength: Integer; override;
+    function GetSelStart: Integer; override;
+    function GetSelText: string; override;
+    procedure SetSelLength(Value: Integer); override;
+    procedure SetSelStart(Value: Integer); override;
+    property HideSelection: Boolean read FHideSelection write SetHideSelection default True;
+    
+// New Property - URL Detect
+    property URLDetect : boolean read FURLDetect write SetURLDetect default FALSE;
+
+    property HideScrollBars: Boolean read FHideScrollBars
+      write SetHideScrollBars default True;
+    property Lines: TStrings read FRichEditStrings write SetRichEditStrings;
+    property OnSaveClipboard: TRichEditSaveClipboard read FOnSaveClipboard
+      write FOnSaveClipboard;
+    property OnSelectionChange: TNotifyEvent read FOnSelChange write FOnSelChange;
+    property OnProtectChange: TRichEditProtectChange read FOnProtectChange
+      write FOnProtectChange;
+    property OnResizeRequest: TRichEditResizeEvent read FOnResizeRequest
+      write FOnResizeRequest;
+    property PlainText: Boolean read GetPlainText write SetPlainText default False;
+
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure Clear; override;
+    function FindText(const SearchStr: string;
+      StartPos, Length: Integer; Options: TSearchTypes): Integer;
+    function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; override;
+    procedure Print(const Caption: string); virtual;
+    class procedure RegisterConversionFormat(const AExtension: string;
+      AConversionClass: TConversionClass);
+    property DefaultConverter: TConversionClass
+      read FDefaultConverter write FDefaultConverter;
+    property DefAttributes: TXWBTextAttributes read FDefAttributes write SetDefAttributes;
+    property SelAttributes: TXWBTextAttributes read FSelAttributes write SetSelAttributes;
+    property PageRect: TRect read FPageRect write FPageRect;
+    property Paragraph: TParaAttributes read FParagraph;
+  end;
+
+  TXWBRichEdit = class(TXWBCustomRichEdit)
+  published
+    property Align;
+    property Alignment;
+    property Anchors;
+    property BiDiMode;
+    property BorderStyle;
+    property BorderWidth;
+    property Color;
+    property Ctl3D;
+    property DragCursor;
+    property DragKind;
+    property DragMode;
+    property Enabled;
+    property Font;
+    property HideSelection;
+    property URLDetect;            // New URL Detect property
+    property HideScrollBars;
+    property ImeMode;
+    property ImeName;
+    property Constraints;
+    property Lines;
+    property MaxLength;
+    property ParentBiDiMode;
+    property ParentColor;
+    property ParentCtl3D;
+    property ParentFont;
+    property ParentShowHint;
+    property PlainText;
+    property PopupMenu;
+    property ReadOnly;
+    property ScrollBars;
+    property ShowHint;
+    property TabOrder;
+    property TabStop default True;
+
+    property Visible;
+    property WantTabs;
+    property WantReturns;
+    property WordWrap;
+    property OnChange;
+//    property OnContextPopup;
+    property OnDragDrop;
+    property OnDragOver;
+    property OnEndDock;
+    property OnEndDrag;
+    property OnEnter;
+    property OnExit;
+    property OnKeyDown;
+    property OnKeyPress;
+    property OnKeyUp;
+    property OnMouseDown;
+    property OnMouseMove;
+    property OnMouseUp;
+    property OnMouseWheel;
+    property OnMouseWheelDown;
+    property OnMouseWheelUp;
+    property OnProtectChange;
+    property OnResizeRequest;
+    property OnSaveClipboard;
+    property OnSelectionChange;
+    property OnStartDock;
+    property OnStartDrag;
+  end;
+
+implementation
+
+uses Printers, Consts, ComStrs, ActnList, StdActns, ShellAPI;
+
+type
+  PFontHandles = ^TFontHandles;
+  TFontHandles = record
+    OurFont,
+    StockFont: Integer;
+  end;
+
+  const
+  SectionSizeArea = 8;
+  RTFConversionFormat: TConversionFormat = (
+    ConversionClass: TConversion;
+    Extension: 'rtf';
+    Next: nil);
+  TextConversionFormat: TConversionFormat = (
+    ConversionClass: TConversion;
+    Extension: 'txt';
+    Next: @RTFConversionFormat);
+
+var
+  ConversionFormatList: PConversionFormat = @TextConversionFormat;
+  FRichEditModule: THandle;
+
+{ TXWBTextAttributes }
+
+constructor TXWBTextAttributes.Create(AOwner: TXWBCustomRichEdit;
+  AttributeType: TAttributeType);
+begin
+  inherited Create;
+  RichEdit := AOwner;
+  FType := AttributeType;
+end;
+
+procedure TXWBTextAttributes.InitFormat(var Format: TCharFormat);
+begin
+  FillChar(Format, SizeOf(TCharFormat), 0);
+  Format.cbSize := SizeOf(TCharFormat);
+end;
+
+function TXWBTextAttributes.GetConsistentAttributes: TConsistentAttributes;
+var
+  Format: TCharFormat;
+begin
+  Result := [];
+  if RichEdit.HandleAllocated and (FType = atSelected) then
+  begin
+    InitFormat(Format);
+    SendMessage(RichEdit.Handle, EM_GETCHARFORMAT,
+      WPARAM(FType = atSelected), LPARAM(@Format));
+    with Format do
+    begin
+      if (dwMask and CFM_BOLD) <> 0 then Include(Result, caBold);
+      if (dwMask and CFM_COLOR) <> 0 then Include(Result, caColor);
+      if (dwMask and CFM_FACE) <> 0 then Include(Result, caFace);
+      if (dwMask and CFM_ITALIC) <> 0 then Include(Result, caItalic);
+      if (dwMask and CFM_SIZE) <> 0 then Include(Result, caSize);
+      if (dwMask and CFM_STRIKEOUT) <> 0 then Include(Result, caStrikeOut);
+      if (dwMask and CFM_UNDERLINE) <> 0 then Include(Result, caUnderline);
+      if (dwMask and CFM_PROTECTED) <> 0 then Include(Result, caProtected);
+    end;
+  end;
+end;
+
+procedure TXWBTextAttributes.GetAttributes(var Format: TCharFormat);
+begin
+  InitFormat(Format);
+  if RichEdit.HandleAllocated then
+    SendMessage(RichEdit.Handle, EM_GETCHARFORMAT,
+      WPARAM(FType = atSelected), LPARAM(@Format));
+end;
+
+procedure TXWBTextAttributes.SetAttributes(var Format: TCharFormat);
+var
+  Flag: Longint;
+begin
+  if FType = atSelected then Flag := SCF_SELECTION
+  else Flag := 0;
+  if RichEdit.HandleAllocated then
+    SendMessage(RichEdit.Handle, EM_SETCHARFORMAT, Flag, LPARAM(@Format))
+end;
+
+function TXWBTextAttributes.GetCharset: TFontCharset;
+var
+  Format: TCharFormat;
+begin
+  GetAttributes(Format);
+  Result := Format.bCharset;
+end;
+
+procedure TXWBTextAttributes.SetCharset(Value: TFontCharset);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    dwMask := CFM_CHARSET;
+    bCharSet := Value;
+  end;
+  SetAttributes(Format);
+end;
+
+function TXWBTextAttributes.GetProtected: Boolean;
+var
+  Format: TCharFormat;
+begin
+  GetAttributes(Format);
+  with Format do
+    if (dwEffects and CFE_PROTECTED) <> 0 then
+      Result := True else
+      Result := False;
+end;
+
+procedure TXWBTextAttributes.SetProtected(Value: Boolean);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    dwMask := CFM_PROTECTED;
+    if Value then dwEffects := CFE_PROTECTED;
+  end;
+  SetAttributes(Format);
+end;
+
+function TXWBTextAttributes.GetColor: TColor;
+var
+  Format: TCharFormat;
+begin
+  GetAttributes(Format);
+  with Format do
+    if (dwEffects and CFE_AUTOCOLOR) <> 0 then
+      Result := clWindowText else
+      Result := crTextColor;
+end;
+
+procedure TXWBTextAttributes.SetColor(Value: TColor);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    dwMask := CFM_COLOR;
+    if Value = clWindowText then
+      dwEffects := CFE_AUTOCOLOR else
+      crTextColor := ColorToRGB(Value);
+  end;
+  SetAttributes(Format);
+end;
+
+function TXWBTextAttributes.GetName: TFontName;
+var
+  Format: TCharFormat;
+begin
+  GetAttributes(Format);
+  Result := Format.szFaceName;
+end;
+
+procedure TXWBTextAttributes.SetName(Value: TFontName);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    dwMask := CFM_FACE;
+    StrPLCopy(szFaceName, Value, SizeOf(szFaceName));
+  end;
+  SetAttributes(Format);
+end;
+
+function TXWBTextAttributes.GetStyle: TFontStyles;
+var
+  Format: TCharFormat;
+begin
+  Result := [];
+  GetAttributes(Format);
+  with Format do
+  begin
+    if (dwEffects and CFE_BOLD) <> 0 then Include(Result, fsBold);
+    if (dwEffects and CFE_ITALIC) <> 0 then Include(Result, fsItalic);
+    if (dwEffects and CFE_UNDERLINE) <> 0 then Include(Result, fsUnderline);
+    if (dwEffects and CFE_STRIKEOUT) <> 0 then Include(Result, fsStrikeOut);
+  end;
+end;
+
+procedure TXWBTextAttributes.SetStyle(Value: TFontStyles);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    dwMask := CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_STRIKEOUT;
+    if fsBold in Value then dwEffects := dwEffects or CFE_BOLD;
+    if fsItalic in Value then dwEffects := dwEffects or CFE_ITALIC;
+    if fsUnderline in Value then dwEffects := dwEffects or CFE_UNDERLINE;
+    if fsStrikeOut in Value then dwEffects := dwEffects or CFE_STRIKEOUT;
+  end;
+
+  SetAttributes(Format);
+end;
+
+function TXWBTextAttributes.GetSize: Integer;
+var
+  Format: TCharFormat;
+begin
+  GetAttributes(Format);
+  Result := Format.yHeight div 20;
+end;
+
+procedure TXWBTextAttributes.SetSize(Value: Integer);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    dwMask := Integer(CFM_SIZE);
+    yHeight := Value * 20;
+  end;
+  SetAttributes(Format);
+end;
+
+function TXWBTextAttributes.GetHeight: Integer;
+begin
+  Result := MulDiv(Size, RichEdit.FScreenLogPixels, 72);
+end;
+
+procedure TXWBTextAttributes.SetHeight(Value: Integer);
+begin
+  Size := MulDiv(Value, 72, RichEdit.FScreenLogPixels);
+end;
+
+function TXWBTextAttributes.GetPitch: TFontPitch;
+var
+  Format: TCharFormat;
+begin
+  GetAttributes(Format);
+  case (Format.bPitchAndFamily and $03) of
+    DEFAULT_PITCH: Result := fpDefault;
+    VARIABLE_PITCH: Result := fpVariable;
+    FIXED_PITCH: Result := fpFixed;
+  else
+    Result := fpDefault;
+  end;
+end;
+
+procedure TXWBTextAttributes.SetPitch(Value: TFontPitch);
+var
+  Format: TCharFormat;
+begin
+  InitFormat(Format);
+  with Format do
+  begin
+    case Value of
+      fpVariable: Format.bPitchAndFamily := VARIABLE_PITCH;
+      fpFixed: Format.bPitchAndFamily := FIXED_PITCH;
+    else
+      Format.bPitchAndFamily := DEFAULT_PITCH;
+    end;
+  end;
+  SetAttributes(Format);
+end;
+
+procedure TXWBTextAttributes.Assign(Source: TPersistent);
+begin
+  if Source is TFont then
+  begin
+    Color := TFont(Source).Color;
+    Name := TFont(Source).Name;
+    Charset := TFont(Source).Charset;
+    Style := TFont(Source).Style;
+    Size := TFont(Source).Size;
+    Pitch := TFont(Source).Pitch;
+  end
+  else if Source is TXWBTextAttributes then
+  begin
+    Color := TXWBTextAttributes(Source).Color;
+    Name := TXWBTextAttributes(Source).Name;
+    Charset := TXWBTextAttributes(Source).Charset;
+    Style := TXWBTextAttributes(Source).Style;
+    Pitch := TXWBTextAttributes(Source).Pitch;
+  end
+  else inherited Assign(Source);
+end;
+
+procedure TXWBTextAttributes.AssignTo(Dest: TPersistent);
+begin
+  if Dest is TFont then
+  begin
+    TFont(Dest).Color := Color;
+    TFont(Dest).Name := Name;
+    TFont(Dest).Charset := Charset;
+    TFont(Dest).Style := Style;
+    TFont(Dest).Size := Size;
+    TFont(Dest).Pitch := Pitch;
+  end
+  else if Dest is TXWBTextAttributes then
+  begin
+    TXWBTextAttributes(Dest).Color := Color;
+    TXWBTextAttributes(Dest).Name := Name;
+    TXWBTextAttributes(Dest).Charset := Charset;
+    TXWBTextAttributes(Dest).Style := Style;
+    TXWBTextAttributes(Dest).Pitch := Pitch;
+  end
+  else inherited AssignTo(Dest);
+end;
+
+{ TParaAttributes }
+
+constructor TParaAttributes.Create(AOwner: TXWBCustomRichEdit);
+begin
+  inherited Create;
+  RichEdit := AOwner;
+end;
+
+procedure TParaAttributes.InitPara(var Paragraph: TParaFormat);
+begin
+  FillChar(Paragraph, SizeOf(TParaFormat), 0);
+  Paragraph.cbSize := SizeOf(TParaFormat);
+end;
+
+procedure TParaAttributes.GetAttributes(var Paragraph: TParaFormat);
+begin
+  InitPara(Paragraph);
+  if RichEdit.HandleAllocated then
+    SendMessage(RichEdit.Handle, EM_GETPARAFORMAT, 0, LPARAM(@Paragraph));
+end;
+
+procedure TParaAttributes.SetAttributes(var Paragraph: TParaFormat);
+begin
+  RichEdit.HandleNeeded; { we REALLY need the handle for BiDi }
+  if RichEdit.HandleAllocated then
+  begin
+    if RichEdit.UseRightToLeftAlignment then
+      if Paragraph.wAlignment = PFA_LEFT then
+        Paragraph.wAlignment := PFA_RIGHT
+      else if Paragraph.wAlignment = PFA_RIGHT then
+        Paragraph.wAlignment := PFA_LEFT;
+    SendMessage(RichEdit.Handle, EM_SETPARAFORMAT, 0, LPARAM(@Paragraph));
+  end;
+end;
+
+function TParaAttributes.GetAlignment: TAlignment;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := TAlignment(Paragraph.wAlignment - 1);
+end;
+
+procedure TParaAttributes.SetAlignment(Value: TAlignment);
+var
+  Paragraph: TParaFormat;
+begin
+  InitPara(Paragraph);
+  with Paragraph do
+  begin
+    dwMask := PFM_ALIGNMENT;
+    wAlignment := Ord(Value) + 1;
+  end;
+  SetAttributes(Paragraph);
+end;
+
+function TParaAttributes.GetNumbering: TNumberingStyle;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := TNumberingStyle(Paragraph.wNumbering);
+end;
+
+procedure TParaAttributes.SetNumbering(Value: TNumberingStyle);
+var
+  Paragraph: TParaFormat;
+begin
+  case Value of
+    nsBullet: if LeftIndent < 10 then LeftIndent := 10;
+    nsNone: LeftIndent := 0;
+  end;
+  InitPara(Paragraph);
+  with Paragraph do
+  begin
+    dwMask := PFM_NUMBERING;
+    wNumbering := Ord(Value);
+  end;
+  SetAttributes(Paragraph);
+end;
+
+function TParaAttributes.GetFirstIndent: Longint;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := Paragraph.dxStartIndent div 20
+end;
+
+procedure TParaAttributes.SetFirstIndent(Value: Longint);
+var
+  Paragraph: TParaFormat;
+begin
+  InitPara(Paragraph);
+  with Paragraph do
+  begin
+    dwMask := PFM_STARTINDENT;
+    dxStartIndent := Value * 20;
+  end;
+  SetAttributes(Paragraph);
+end;
+
+function TParaAttributes.GetLeftIndent: Longint;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := Paragraph.dxOffset div 20;
+end;
+
+procedure TParaAttributes.SetLeftIndent(Value: Longint);
+var
+  Paragraph: TParaFormat;
+begin
+  InitPara(Paragraph);
+  with Paragraph do
+  begin
+    dwMask := PFM_OFFSET;
+    dxOffset := Value * 20;
+  end;
+  SetAttributes(Paragraph);
+end;
+
+function TParaAttributes.GetRightIndent: Longint;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := Paragraph.dxRightIndent div 20;
+end;
+
+procedure TParaAttributes.SetRightIndent(Value: Longint);
+var
+  Paragraph: TParaFormat;
+begin
+  InitPara(Paragraph);
+  with Paragraph do
+  begin
+    dwMask := PFM_RIGHTINDENT;
+    dxRightIndent := Value * 20;
+  end;
+  SetAttributes(Paragraph);
+end;
+
+function TParaAttributes.GetTab(Index: Byte): Longint;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := Paragraph.rgxTabs[Index] div 20;
+end;
+
+procedure TParaAttributes.SetTab(Index: Byte; Value: Longint);
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  with Paragraph do
+  begin
+    rgxTabs[Index] := Value * 20;
+    dwMask := PFM_TABSTOPS;
+    if cTabCount < Index then cTabCount := Index;
+    SetAttributes(Paragraph);
+  end;
+end;
+
+function TParaAttributes.GetTabCount: Integer;
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  Result := Paragraph.cTabCount;
+end;
+
+procedure TParaAttributes.SetTabCount(Value: Integer);
+var
+  Paragraph: TParaFormat;
+begin
+  GetAttributes(Paragraph);
+  with Paragraph do
+  begin
+    dwMask := PFM_TABSTOPS;
+    cTabCount := Value;
+    SetAttributes(Paragraph);
+  end;
+end;
+
+procedure TParaAttributes.Assign(Source: TPersistent);
+var
+  I: Integer;
+begin
+  if Source is TParaAttributes then
+  begin
+    Alignment := TParaAttributes(Source).Alignment;
+    FirstIndent := TParaAttributes(Source).FirstIndent;
+    LeftIndent := TParaAttributes(Source).LeftIndent;
+    RightIndent := TParaAttributes(Source).RightIndent;
+    Numbering := TParaAttributes(Source).Numbering;
+    for I := 0 to MAX_TAB_STOPS - 1 do
+      Tab[I] := TParaAttributes(Source).Tab[I];
+  end
+  else inherited Assign(Source);
+end;
+
+{ TConversion }
+
+function TConversion.ConvertReadStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer;
+begin
+  Result := Stream.Read(Buffer^, BufSize);
+end;
+
+function TConversion.ConvertWriteStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer;
+begin
+  Result := Stream.Write(Buffer^, BufSize);
+end;
+
+{ TRichEditStrings }
+
+const
+  ReadError = $0001;
+  WriteError = $0002;
+  NoError = $0000;
+
+type
+  TSelection = record
+    StartPos, EndPos: Integer;
+  end;
+
+  TRichEditStrings = class(TStrings)
+  private
+    RichEdit: TXWBCustomRichEdit;
+    FPlainText: Boolean;
+    FConverter: TConversion;
+    procedure EnableChange(const Value: Boolean);
+  protected
+    function Get(Index: Integer): string; override;
+    function GetCount: Integer; override;
+    procedure Put(Index: Integer; const S: string); override;
+    procedure SetUpdateState(Updating: Boolean); override;
+    procedure SetTextStr(const Value: string); override;
+  public
+    destructor Destroy; override;
+    procedure Clear; override;
+    procedure AddStrings(Strings: TStrings); override;
+    procedure Delete(Index: Integer); override;
+    procedure Insert(Index: Integer; const S: string); override;
+    procedure LoadFromFile(const FileName: string); override;
+    procedure LoadFromStream(Stream: TStream); override;
+    procedure SaveToFile(const FileName: string); override;
+    procedure SaveToStream(Stream: TStream); override;
+    property PlainText: Boolean read FPlainText write FPlainText;
+  end;
+
+destructor TRichEditStrings.Destroy;
+begin
+  FConverter.Free;
+  inherited Destroy;
+end;
+
+procedure TRichEditStrings.AddStrings(Strings: TStrings);
+var
+  SelChange: TNotifyEvent;
+begin
+  SelChange := RichEdit.OnSelectionChange;
+  RichEdit.OnSelectionChange := nil;
+  try
+    inherited AddStrings(Strings);
+  finally
+    RichEdit.OnSelectionChange := SelChange;
+  end;
+end;
+
+function TRichEditStrings.GetCount: Integer;
+begin
+  Result := SendMessage(RichEdit.Handle, EM_GETLINECOUNT, 0, 0);
+  if SendMessage(RichEdit.Handle, EM_LINELENGTH, SendMessage(RichEdit.Handle,
+    EM_LINEINDEX, Result - 1, 0), 0) = 0 then Dec(Result);
+end;
+
+function TRichEditStrings.Get(Index: Integer): string;
+var
+  Text: array[0..4095] of Char;
+  L: Integer;
+begin
+  Word((@Text)^) := SizeOf(Text);
+  L := SendMessage(RichEdit.Handle, EM_GETLINE, Index, Longint(@Text));
+  if (Text[L - 2] = #13) and (Text[L - 1] = #10) then Dec(L, 2);
+  SetString(Result, Text, L);
+end;
+
+procedure TRichEditStrings.Put(Index: Integer; const S: string);
+var
+  Selection: TCharRange;
+begin
+  if Index >= 0 then
+  begin
+    Selection.cpMin := SendMessage(RichEdit.Handle, EM_LINEINDEX, Index, 0);
+    if Selection.cpMin <> -1 then
+    begin
+      Selection.cpMax := Selection.cpMin +
+        SendMessage(RichEdit.Handle, EM_LINELENGTH, Selection.cpMin, 0);
+      SendMessage(RichEdit.Handle, EM_EXSETSEL, 0, Longint(@Selection));
+      SendMessage(RichEdit.Handle, EM_REPLACESEL, 0, Longint(PChar(S)));
+    end;
+  end;
+end;
+
+procedure TRichEditStrings.Insert(Index: Integer; const S: string);
+var
+  L: Integer;
+  Selection: TCharRange;
+  Fmt: PChar;
+  Str: string;
+begin
+  if Index >= 0 then
+  begin
+    Selection.cpMin := SendMessage(RichEdit.Handle, EM_LINEINDEX, Index, 0);
+    if Selection.cpMin >= 0 then Fmt := '%s'#13#10
+    else begin
+      Selection.cpMin :=
+        SendMessage(RichEdit.Handle, EM_LINEINDEX, Index - 1, 0);
+      if Selection.cpMin < 0 then Exit;
+      L := SendMessage(RichEdit.Handle, EM_LINELENGTH, Selection.cpMin, 0);
+      if L = 0 then Exit;
+      Inc(Selection.cpMin, L);
+      Fmt := #13#10'%s';
+    end;
+
+    Selection.cpMax := Selection.cpMin;
+    SendMessage(RichEdit.Handle, EM_EXSETSEL, 0, Longint(@Selection));
+
+    Str := Format(Fmt, [S]);
+    SendMessage(RichEdit.Handle, EM_REPLACESEL, 0, LongInt(PChar(Str)));
+{
+    if RichEdit.SelStart <> (Selection.cpMax + Length(Str)) then
+      raise EOutOfResources.Create(sRichEditInsertError);
+}
+  end;
+end;
+
+procedure TRichEditStrings.Delete(Index: Integer);
+const
+  Empty: PChar = '';
+var
+  Selection: TCharRange;
+begin
+  if Index < 0 then Exit;
+  Selection.cpMin := SendMessage(RichEdit.Handle, EM_LINEINDEX, Index, 0);
+  if Selection.cpMin <> -1 then
+  begin
+    Selection.cpMax := SendMessage(RichEdit.Handle, EM_LINEINDEX, Index + 1, 0);
+    if Selection.cpMax = -1 then
+      Selection.cpMax := Selection.cpMin +
+        SendMessage(RichEdit.Handle, EM_LINELENGTH, Selection.cpMin, 0);
+    SendMessage(RichEdit.Handle, EM_EXSETSEL, 0, Longint(@Selection));
+    SendMessage(RichEdit.Handle, EM_REPLACESEL, 0, Longint(Empty));
+  end;
+end;
+
+procedure TRichEditStrings.Clear;
+begin
+  RichEdit.Clear;
+end;
+
+procedure TRichEditStrings.SetUpdateState(Updating: Boolean);
+begin
+  if RichEdit.Showing then
+    SendMessage(RichEdit.Handle, WM_SETREDRAW, Ord(not Updating), 0);
+  if not Updating then begin
+    RichEdit.Refresh;
+    RichEdit.Perform(CM_TEXTCHANGED, 0, 0);
+  end;
+end;
+
+procedure TRichEditStrings.EnableChange(const Value: Boolean);
+var
+  EventMask: Longint;
+begin
+  with RichEdit do
+  begin
+    if Value then
+      EventMask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0) or ENM_CHANGE
+    else
+      EventMask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0) and not ENM_CHANGE;
+    SendMessage(Handle, EM_SETEVENTMASK, 0, EventMask);
+  end;
+end;
+
+procedure TRichEditStrings.SetTextStr(const Value: string);
+begin
+  EnableChange(False);
+  try
+    inherited SetTextStr(Value);
+  finally
+    EnableChange(True);
+  end;
+end;
+
+function AdjustLineBreaks(Dest, Source: PChar): Integer; assembler;
+asm
+        PUSH    ESI
+        PUSH    EDI
+        MOV     EDI,EAX
+        MOV     ESI,EDX
+        MOV     EDX,EAX
+        CLD
+@@1:    LODSB
+@@2:    OR      AL,AL
+        JE      @@4
+        CMP     AL,0AH
+        JE      @@3
+        STOSB
+        CMP     AL,0DH
+        JNE     @@1
+        MOV     AL,0AH
+        STOSB
+        LODSB
+        CMP     AL,0AH
+        JE      @@1
+        JMP     @@2
+@@3:    MOV     EAX,0A0DH
+        STOSW
+        JMP     @@1
+@@4:    STOSB
+        LEA     EAX,[EDI-1]
+        SUB     EAX,EDX
+        POP     EDI
+        POP     ESI
+end;
+
+function StreamSave(dwCookie: Longint; pbBuff: PByte;
+  cb: Longint; var pcb: Longint): Longint; stdcall;
+var
+  StreamInfo: PRichEditStreamInfo;
+begin
+  Result := NoError;
+  StreamInfo := PRichEditStreamInfo(Pointer(dwCookie));
+  try
+    pcb := 0;
+    if StreamInfo^.Converter <> nil then
+      pcb := StreamInfo^.Converter.ConvertWriteStream(StreamInfo^.Stream, PChar(pbBuff), cb);
+  except
+    Result := WriteError;
+  end;
+end;
+
+function StreamLoad(dwCookie: Longint; pbBuff: PByte;
+  cb: Longint; var pcb: Longint): Longint; stdcall;
+var
+  Buffer, pBuff: PChar;
+  StreamInfo: PRichEditStreamInfo;
+begin
+  Result := NoError;
+  StreamInfo := PRichEditStreamInfo(Pointer(dwCookie));
+  Buffer := StrAlloc(cb + 1);
+  try
+    cb := cb div 2;
+    pcb := 0;
+    pBuff := Buffer + cb;
+    try
+      if StreamInfo^.Converter <> nil then
+        pcb := StreamInfo^.Converter.ConvertReadStream(StreamInfo^.Stream, pBuff, cb);
+      if pcb > 0 then
+      begin
+        pBuff[pcb] := #0;
+        if pBuff[pcb - 1] = #13 then pBuff[pcb - 1] := #0;
+        pcb := AdjustLineBreaks(Buffer, pBuff);
+        Move(Buffer^, pbBuff^, pcb);
+      end;
+    except
+      Result := ReadError;
+    end;
+  finally
+    StrDispose(Buffer);
+  end;
+end;
+
+procedure TRichEditStrings.LoadFromStream(Stream: TStream);
+var
+  EditStream: TEditStream;
+  Position: Longint;
+  TextType: Longint;
+  StreamInfo: TRichEditStreamInfo;
+  Converter: TConversion;
+begin
+  StreamInfo.Stream := Stream;
+  if FConverter <> nil then Converter := FConverter
+  else Converter := RichEdit.DefaultConverter.Create;
+  StreamInfo.Converter := Converter;
+  try
+    with EditStream do
+    begin
+      dwCookie := LongInt(Pointer(@StreamInfo));
+      pfnCallBack := @StreamLoad;
+      dwError := 0;
+    end;
+    Position := Stream.Position;
+
+    if PlainText then TextType := SF_TEXT
+    else TextType := SF_RTF;
+    SendMessage(RichEdit.Handle, EM_STREAMIN, TextType, Longint(@EditStream));
+
+    if (TextType = SF_RTF) and (EditStream.dwError <> 0) then
+    begin
+      Stream.Position := Position;
+      if PlainText then TextType := SF_RTF
+      else TextType := SF_TEXT;
+      SendMessage(RichEdit.Handle, EM_STREAMIN, TextType, Longint(@EditStream));
+      if EditStream.dwError <> 0 then
+        raise EOutOfResources.Create(sRichEditLoadFail);
+    end;
+
+  finally
+    if FConverter = nil then Converter.Free;
+  end;
+end;
+
+procedure TRichEditStrings.SaveToStream(Stream: TStream);
+var
+  EditStream: TEditStream;
+  TextType: Longint;
+  StreamInfo: TRichEditStreamInfo;
+  Converter: TConversion;
+begin
+  if FConverter <> nil then Converter := FConverter
+  else Converter := RichEdit.DefaultConverter.Create;
+  StreamInfo.Stream := Stream;
+  StreamInfo.Converter := Converter;
+  try
+    with EditStream do
+    begin
+      dwCookie := LongInt(Pointer(@StreamInfo));
+      pfnCallBack := @StreamSave;
+      dwError := 0;
+    end;
+    if PlainText then TextType := SF_TEXT
+    else TextType := SF_RTF;
+    SendMessage(RichEdit.Handle, EM_STREAMOUT, TextType, Longint(@EditStream));
+    if EditStream.dwError <> 0 then
+      raise EOutOfResources.Create(sRichEditSaveFail);
+  finally
+    if FConverter = nil then Converter.Free;
+  end;
+end;
+
+procedure TRichEditStrings.LoadFromFile(const FileName: string);
+var
+  Ext: string;
+  Convert: PConversionFormat;
+begin
+  Ext := AnsiLowerCaseFileName(ExtractFileExt(Filename));
+  System.Delete(Ext, 1, 1);
+  Convert := ConversionFormatList;
+  while Convert <> nil do
+    with Convert^ do
+      if Extension <> Ext then Convert := Next
+      else Break;
+  if Convert = nil then
+    Convert := @TextConversionFormat;
+  if FConverter = nil then FConverter := Convert^.ConversionClass.Create;
+  try
+    inherited LoadFromFile(FileName);
+  except
+    FConverter.Free;
+    FConverter := nil;
+    raise;
+  end;
+  RichEdit.DoSetMaxLength($7FFFFFF0);
+end;
+
+procedure TRichEditStrings.SaveToFile(const FileName: string);
+var
+  Ext: string;
+  Convert: PConversionFormat;
+begin
+  Ext := AnsiLowerCaseFileName(ExtractFileExt(Filename));
+  System.Delete(Ext, 1, 1);
+  Convert := ConversionFormatList;
+  while Convert <> nil do
+    with Convert^ do
+      if Extension <> Ext then Convert := Next
+      else Break;
+  if Convert = nil then
+    Convert := @TextConversionFormat;
+  if FConverter = nil then FConverter := Convert^.ConversionClass.Create;
+  try
+    inherited SaveToFile(FileName);
+  except
+    FConverter.Free;
+    FConverter := nil;
+    raise;
+  end;
+end;
+
+{ TRichEdit }
+
+constructor TXWBCustomRichEdit.Create(AOwner: TComponent);
+var
+  DC: HDC;
+begin
+  inherited Create(AOwner);
+  FSelAttributes := TXWBTextAttributes.Create(Self, atSelected);
+  FDefAttributes := TXWBTextAttributes.Create(Self, atDefaultText);
+  FParagraph := TParaAttributes.Create(Self);
+  FRichEditStrings := TRichEditStrings.Create;
+  TRichEditStrings(FRichEditStrings).RichEdit := Self;
+  TabStop := True;
+  Width := 185;
+  Height := 89;
+  AutoSize := False;
+  DoubleBuffered := False;
+  FHideSelection := True;
+  FURLDetect:= FALSE;
+  HideScrollBars := True;
+
+  DC := GetDC(0);
+  FScreenLogPixels := GetDeviceCaps(DC, LOGPIXELSY);
+  DefaultConverter := TConversion;
+  ReleaseDC(0, DC);
+  FOldParaAlignment := Alignment;
+  Perform(CM_PARENTBIDIMODECHANGED, 0, 0);
+end;
+
+destructor TXWBCustomRichEdit.Destroy;
+begin
+  FSelAttributes.Free;
+  FDefAttributes.Free;
+  FParagraph.Free;
+  FRichEditStrings.Free;
+  FMemStream.Free;
+  inherited Destroy;
+end;
+
+procedure TXWBCustomRichEdit.Clear;
+begin
+  inherited Clear;
+  Modified := False;
+end;
+
+procedure TXWBCustomRichEdit.CreateParams(var Params: TCreateParams);
+const
+// Use version 2.0 of RichEdit, previously RICHED32.DLL
+  RichEditModuleName = 'RICHED20.DLL';
+
+  HideScrollBar : array[Boolean] of DWORD = (ES_DISABLENOSCROLL, 0);
+  HideSelections: array[Boolean] of DWORD = (ES_NOHIDESEL, 0);
+
+begin
+  if FRichEditModule = 0 then
+  begin
+    FRichEditModule := LoadLibrary(RichEditModuleName);
+    if FRichEditModule <= HINSTANCE_ERROR then FRichEditModule := 0;
+  end;
+
+  inherited CreateParams(Params);
+
+// USE RICHEDIT_CLASSA use ANSI version not Unicode
+  CreateSubClass(Params, RICHEDIT_CLASSA);
+
+  with Params do
+  begin
+    Style := Style or HideScrollBar[HideScrollBars] or
+      HideSelections[HideSelection];
+    WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
+  end;
+end;
+
+procedure TXWBCustomRichEdit.CreateWnd;
+var
+  Plain, DesignMode, WasModified: Boolean;
+
+begin
+  WasModified := inherited Modified;
+
+  inherited CreateWnd;
+  if (SysLocale.FarEast) and not (SysLocale.PriLangID = LANG_JAPANESE) then
+    Font.Charset := GetDefFontCharSet;
+  SendMessage(Handle, EM_SETEVENTMASK, 0,
+    ENM_CHANGE or ENM_SELCHANGE or ENM_REQUESTRESIZE or
+    ENM_PROTECTED or ENM_LINK);      // Added the ENM_LINK to receive EN_LINK message
+
+  SendMessage(Handle, EM_AUTOURLDETECT, Ord(FURLDetect), 0); // Start the URL Detect
+
+  SendMessage(Handle, EM_SETBKGNDCOLOR, 0, ColorToRGB(Color));
+  if FMemStream <> nil then
+  begin
+    Plain := PlainText;
+    FMemStream.ReadBuffer(DesignMode, sizeof(DesignMode));
+    PlainText := DesignMode;
+    try
+      Lines.LoadFromStream(FMemStream);
+      FMemStream.Free;
+      FMemStream := nil;
+    finally
+      PlainText := Plain;
+    end;
+  end;
+
+  Modified := WasModified;
+end;
+
+procedure TXWBCustomRichEdit.DestroyWnd;
+var
+  Plain, DesignMode: Boolean;
+begin
+  FModified := Modified;
+  FMemStream := TMemoryStream.Create;
+  Plain := PlainText;
+  DesignMode := (csDesigning in ComponentState);
+  PlainText := DesignMode;
+  FMemStream.WriteBuffer(DesignMode, sizeof(DesignMode));
+  try
+    Lines.SaveToStream(FMemStream);
+    FMemStream.Position := 0;
+  finally
+    PlainText := Plain;
+  end;
+
+  inherited DestroyWnd;
+end;
+
+procedure TXWBCustomRichEdit.WMNCDestroy(var Message: TWMNCDestroy);
+begin
+  inherited;
+end;
+
+procedure TXWBCustomRichEdit.WMSetFont(var Message: TWMSetFont);
+begin
+  FDefAttributes.Assign(Font);
+end;
+
+procedure TXWBCustomRichEdit.WMRButtonUp(var Message: TWMRButtonUp);
+begin
+  // RichEd20 does not pass the WM_RBUTTONUP message to defwndproc,
+  // so we get no WM_CONTEXTMENU message.  Simulate message here.
+  if Win32MajorVersion < 5 then
+    Perform(WM_CONTEXTMENU, Handle, LParam(PointToSmallPoint(
+      ClientToScreen(SmallPointToPoint(Message.Pos)))));
+  inherited;
+end;
+
+procedure TXWBCustomRichEdit.CMFontChanged(var Message: TMessage);
+begin
+  FDefAttributes.Assign(Font);
+end;
+
+procedure TXWBCustomRichEdit.DoSetMaxLength(Value: Integer);
+begin
+  SendMessage(Handle, EM_EXLIMITTEXT, 0, Value);
+end;
+
+function TXWBCustomRichEdit.GetCaretPos;
+var
+  CharRange: TCharRange;
+begin
+  SendMessage(Handle, EM_EXGETSEL, 0, LongInt(@CharRange));
+  Result.X := CharRange.cpMax;
+  Result.Y := SendMessage(Handle, EM_EXLINEFROMCHAR, 0, Result.X);
+  Result.X := Result.X - SendMessage(Handle, EM_LINEINDEX, -1, 0);
+end;
+
+function TXWBCustomRichEdit.GetSelLength: Integer;
+var
+  CharRange: TCharRange;
+begin
+  SendMessage(Handle, EM_EXGETSEL, 0, Longint(@CharRange));
+  Result := CharRange.cpMax - CharRange.cpMin;
+end;
+
+function TXWBCustomRichEdit.GetSelStart: Integer;
+var
+  CharRange: TCharRange;
+begin
+  SendMessage(Handle, EM_EXGETSEL, 0, Longint(@CharRange));
+  Result := CharRange.cpMin;
+end;
+
+function TXWBCustomRichEdit.GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer;
+var
+  S: string;
+begin
+  S := GetSelText;
+  Result := Length(S);
+  if BufSize < Length(S) then Result := BufSize;
+  StrPLCopy(Buffer, S, Result);
+end;
+
+function TXWBCustomRichEdit.GetSelText: string;
+var
+  Length: Integer;
+begin
+  SetLength(Result, GetSelLength + 1);
+  Length := SendMessage(Handle, EM_GETSELTEXT, 0, Longint(PChar(Result)));
+  SetLength(Result, Length);
+end;
+
+procedure TXWBCustomRichEdit.CMBiDiModeChanged(var Message: TMessage);
+var
+  AParagraph: TParaFormat;
+begin
+  HandleNeeded; { we REALLY need the handle for BiDi }
+  inherited;
+  Paragraph.GetAttributes(AParagraph);
+  AParagraph.dwMask := PFM_ALIGNMENT;
+  AParagraph.wAlignment := Ord(Alignment) + 1;
+  Paragraph.SetAttributes(AParagraph);
+end;
+
+procedure TXWBCustomRichEdit.SetHideScrollBars(Value: Boolean);
+begin
+  if HideScrollBars <> Value then
+  begin
+    FHideScrollBars := value;
+    RecreateWnd;
+  end;
+end;
+
+procedure TXWBCustomRichEdit.SetHideSelection(Value: Boolean);
+begin
+  if HideSelection <> Value then
+  begin
+    FHideSelection := Value;
+    SendMessage(Handle, EM_HIDESELECTION, Ord(HideSelection), LongInt(True));
+  end;
+end;
+
+procedure TXWBCustomRichEdit.SetURLDetect(Value: boolean);
+begin
+ if URLDetect <> Value then
+  begin
+   FURLDetect:= Value;
+   RecreateWnd;
+  end;
+end;
+
+procedure TXWBCustomRichEdit.SetSelAttributes(Value: TXWBTextAttributes);
+begin
+  SelAttributes.Assign(Value);
+end;
+
+procedure TXWBCustomRichEdit.SetSelLength(Value: Integer);
+var
+  CharRange: TCharRange;
+begin
+  SendMessage(Handle, EM_EXGETSEL, 0, Longint(@CharRange));
+  CharRange.cpMax := CharRange.cpMin + Value;
+  SendMessage(Handle, EM_EXSETSEL, 0, Longint(@CharRange));
+  SendMessage(Handle, EM_SCROLLCARET, 0, 0);
+end;
+
+procedure TXWBCustomRichEdit.SetDefAttributes(Value: TXWBTextAttributes);
+begin
+  DefAttributes.Assign(Value);
+end;
+
+function TXWBCustomRichEdit.GetPlainText: Boolean;
+begin
+  Result := TRichEditStrings(Lines).PlainText;
+end;
+
+procedure TXWBCustomRichEdit.SetPlainText(Value: Boolean);
+begin
+  TRichEditStrings(Lines).PlainText := Value;
+end;
+
+procedure TXWBCustomRichEdit.CMColorChanged(var Message: TMessage);
+begin
+  inherited;
+  SendMessage(Handle, EM_SETBKGNDCOLOR, 0, ColorToRGB(Color))
+end;
+
+procedure TXWBCustomRichEdit.SetRichEditStrings(Value: TStrings);
+begin
+  FRichEditStrings.Assign(Value);
+end;
+
+procedure TXWBCustomRichEdit.SetSelStart(Value: Integer);
+var
+  CharRange: TCharRange;
+begin
+  CharRange.cpMin := Value;
+  CharRange.cpMax := Value;
+  SendMessage(Handle, EM_EXSETSEL, 0, Longint(@CharRange));
+end;
+
+procedure TXWBCustomRichEdit.Print(const Caption: string);
+var
+  Range: TFormatRange;
+  LastChar, MaxLen, LogX, LogY, OldMap: Integer;
+  SaveRect: TRect;
+begin
+  FillChar(Range, SizeOf(TFormatRange), 0);
+  with Printer, Range do
+  begin
+    Title := Caption;
+    BeginDoc;
+    hdc := Handle;
+    hdcTarget := hdc;
+    LogX := GetDeviceCaps(Handle, LOGPIXELSX);
+    LogY := GetDeviceCaps(Handle, LOGPIXELSY);
+    if IsRectEmpty(PageRect) then
+    begin
+      rc.right := PageWidth * 1440 div LogX;
+      rc.bottom := PageHeight * 1440 div LogY;
+    end
+    else begin
+      rc.left := PageRect.Left * 1440 div LogX;
+      rc.top := PageRect.Top * 1440 div LogY;
+      rc.right := PageRect.Right * 1440 div LogX;
+      rc.bottom := PageRect.Bottom * 1440 div LogY;
+    end;
+    rcPage := rc;
+    SaveRect := rc;
+    LastChar := 0;
+    MaxLen := GetTextLen;
+    chrg.cpMax := -1;
+    // ensure printer DC is in text map mode
+    OldMap := SetMapMode(hdc, MM_TEXT);
+    SendMessage(Self.Handle, EM_FORMATRANGE, 0, 0);    // flush buffer
+    try
+      repeat
+        rc := SaveRect;
+        chrg.cpMin := LastChar;
+        LastChar := SendMessage(Self.Handle, EM_FORMATRANGE, 1, Longint(@Range));
+        if (LastChar < MaxLen) and (LastChar <> -1) then NewPage;
+      until (LastChar >= MaxLen) or (LastChar = -1);
+      EndDoc;
+    finally
+      SendMessage(Self.Handle, EM_FORMATRANGE, 0, 0);  // flush buffer
+      SetMapMode(hdc, OldMap);       // restore previous map mode
+    end;
+  end;
+end;
+
+var
+  Painting: Boolean = False;
+
+procedure TXWBCustomRichEdit.WMPaint(var Message: TWMPaint);
+var
+  R, R1: TRect;
+begin
+  if GetUpdateRect(Handle, R, True) then
+  begin
+    with ClientRect do R1 := Rect(Right - 3, Top, Right, Bottom);
+    if IntersectRect(R, R, R1) then InvalidateRect(Handle, @R1, True);
+  end;
+  if Painting then
+    Invalidate
+  else begin
+    Painting := True;
+    try
+      inherited;
+    finally
+      Painting := False;
+    end;
+  end;
+end;
+
+procedure TXWBCustomRichEdit.WMSetCursor(var Message: TWMSetCursor);
+var
+  P: TPoint;
+begin
+  inherited;
+  if Message.Result = 0 then
+  begin
+    Message.Result := 1;
+    GetCursorPos(P);
+    with PointToSmallPoint(P) do
+      case Perform(WM_NCHITTEST, 0, MakeLong(X, Y)) of
+        HTVSCROLL,
+        HTHSCROLL:
+          Windows.SetCursor(Screen.Cursors[crArrow]);
+        HTCLIENT:
+          Windows.SetCursor(Screen.Cursors[crIBeam]);
+      end;
+  end;
+end;
+
+procedure TXWBCustomRichEdit.CNNotify(var Message: TWMNotify);
+type
+  PENLink = ^TENLink;
+
+begin
+  with Message do
+    case NMHdr^.code of
+      EN_SELCHANGE: SelectionChange;
+      EN_REQUESTRESIZE: RequestSize(PReqSize(NMHdr)^.rc);
+      EN_SAVECLIPBOARD:
+        with PENSaveClipboard(NMHdr)^ do
+          if not SaveClipboard(cObjectCount, cch) then Result := 1;
+      EN_PROTECTED:
+        with PENProtected(NMHdr)^.chrg do
+          if not ProtectChange(cpMin, cpMax) then Result := 1;
+
+// EN_LINK message being received to respond to it
+      EN_LINK:
+       begin
+        Windows.SetCursor(Screen.Cursors[crHandPoint]);
+        if PEnLink(NMHdr)^.msg = WM_LBUTTONDOWN then
+          begin
+// set the selection
+            SendMessage(Handle, EM_EXSETSEL, 0, Longint(@PEnLink(NMHdr)^.chrg));
+// send it to windows to open
+            ShellExecute(handle, 'open', PChar(GetSelText), nil, nil, SW_SHOWNORMAL);
+          end;
+       end;
+    end;
+end;
+
+function TXWBCustomRichEdit.SaveClipboard(NumObj, NumChars: Integer): Boolean;
+begin
+  Result := True;
+  if Assigned(OnSaveClipboard) then OnSaveClipboard(Self, NumObj, NumChars, Result);
+end;
+
+function TXWBCustomRichEdit.ProtectChange(StartPos, EndPos: Integer): Boolean;
+begin
+  Result := False;
+  if Assigned(OnProtectChange) then OnProtectChange(Self, StartPos, EndPos, Result);
+end;
+
+procedure TXWBCustomRichEdit.SelectionChange;
+begin
+  if Assigned(OnSelectionChange) then OnSelectionChange(Self);
+end;
+
+procedure TXWBCustomRichEdit.RequestSize(const Rect: TRect);
+begin
+  if Assigned(OnResizeRequest) then OnResizeRequest(Self, Rect);
+end;
+
+function TXWBCustomRichEdit.FindText(const SearchStr: string;
+  StartPos, Length: Integer; Options: TSearchTypes): Integer;
+var
+  Find: TFindText;
+  Flags: Integer;
+begin
+  with Find.chrg do
+  begin
+    cpMin := StartPos;
+    cpMax := cpMin + Length;
+  end;
+  Flags := 0;
+  if stWholeWord in Options then Flags := Flags or FT_WHOLEWORD;
+  if stMatchCase in Options then Flags := Flags or FT_MATCHCASE;
+  Find.lpstrText := PChar(SearchStr);
+  Result := SendMessage(Handle, EM_FINDTEXT, Flags, LongInt(@Find));
+end;
+
+procedure AppendConversionFormat(const Ext: string; AClass: TConversionClass);
+var
+  NewRec: PConversionFormat;
+begin
+  New(NewRec);
+  with NewRec^ do
+  begin
+    Extension := AnsiLowerCaseFileName(Ext);
+    ConversionClass := AClass;
+    Next := ConversionFormatList;
+  end;
+  ConversionFormatList := NewRec;
+end;
+
+class procedure TXWBCustomRichEdit.RegisterConversionFormat(const AExtension: string;
+  AConversionClass: TConversionClass);
+begin
+  AppendConversionFormat(AExtension, AConversionClass);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D50.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D50.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D50.dof	(revision 1676)
@@ -0,0 +1,86 @@
+[Compiler]
+A=1
+B=0
+C=0
+D=0
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=0
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA RPC Broker
+[Directories]
+OutputDir=
+UnitOutputDir=..\D5
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veterans Affairs, VHA, OI, SD&D
+FileDescription=TRPCBroker Component
+FileVersion=1.1.40.11
+InternalName=XWB*1.1*40
+LegalCopyright=(c) 1996-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=TRPCBroker
+ProductVersion=1.1.40.0
+Comments=
+[Excluded Packages]
+$(DELPHI)\Bin\dclite50.bpl=Borland Integrated Translation Environment
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D50.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D50.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D50.dpk	(revision 1676)
@@ -0,0 +1,38 @@
+package XWB_D50;
+
+{$R *.RES}
+{$R 'XWB_D50.DCR'}
+{$ALIGN ON}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS OFF}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA RPC Broker'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  XWB_R50,
+  Vcl50;
+
+contains
+  RpcbEdtr in 'RpcbEdtr.pas' {in 'Rpcbedtr.pas'},
+  XWBReg in 'XWBReg.pas' {in 'XWBReg.pas'};
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D60.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D60.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D60.dof	(revision 1676)
@@ -0,0 +1,94 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=0
+D=0
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=0
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA RPC Broker
+[Directories]
+OutputDir=
+UnitOutputDir=..\D6
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veterans Affairs, VHA, OI, SD&D
+FileDescription=TRPCBroker Component
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=TRPCBroker
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\D6
+Item1=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D60.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D60.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D60.dpk	(revision 1676)
@@ -0,0 +1,39 @@
+package XWB_D60;
+
+{$R *.res}
+{$R 'XWB_D60.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS OFF}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA RPC Broker'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  XWB_R60,
+  vcl,
+  designide;
+
+contains
+  RpcbEdtr in 'RpcbEdtr.pas' {in 'Rpcbedtr.pas'},
+  XWBReg in 'XWBReg.pas' {in 'XWBReg.pas'};
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D70.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D70.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D70.dof	(revision 1676)
@@ -0,0 +1,144 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=0
+D=0
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=0
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=1
+UnsafeCode=1
+UnsafeCast=1
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA RPC Broker
+[Directories]
+OutputDir=
+UnitOutputDir=..\D7
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veterans Affairs, VHA, OI, SD&D
+FileDescription=TRPCBroker Component
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=TRPCBroker
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=3
+Item0=..\D7
+Item1=..\D6
+Item2=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D70.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D70.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_D70.dpk	(revision 1676)
@@ -0,0 +1,39 @@
+package XWB_D70;
+
+{$R *.res}
+{$R 'XWB_D70.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS OFF}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA RPC Broker'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  XWB_R70,
+  vcl,
+  designide;
+
+contains
+  RpcbEdtr in 'RpcbEdtr.pas' {in 'Rpcbedtr.pas'},
+  XWBReg in 'XWBReg.pas' {in 'XWBReg.pas'};
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R50.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R50.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R50.dof	(revision 1676)
@@ -0,0 +1,86 @@
+[Compiler]
+A=1
+B=0
+C=0
+D=0
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=0
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA RPC Broker Runtime Package
+[Directories]
+OutputDir=
+UnitOutputDir=..\D5
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veterans Affairs, VHA, OI, SD&D
+FileDescription=TRPCBroker component
+FileVersion=1.1.40.11
+InternalName=XWB*1.1*40
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=TRPCBroker
+ProductVersion=1.1.40.0
+Comments=
+[Excluded Packages]
+$(DELPHI)\Bin\dclite50.bpl=Borland Integrated Translation Environment
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R50.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R50.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R50.dpk	(revision 1676)
@@ -0,0 +1,57 @@
+package XWB_R50;
+
+{$R *.RES}
+{$ALIGN ON}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS OFF}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA RPC Broker Runtime Package'}
+{$RUNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+  vcl50;
+
+contains
+  Xwbut1 in 'Xwbut1.pas' {in 'Xwbut1.pas'},
+  Hash in 'Hash.pas' {in 'Hash.pas'},
+  Loginfrm in 'Loginfrm.pas' {in 'Loginfrm.pas'},
+  MFunStr in 'MFunStr.pas' {in 'Mfunstr.pas'},
+  Rpcberr in 'Rpcberr.pas' {in 'Rpcberr.pas'},
+  Rpcconf1 in 'Rpcconf1.pas' {in 'Rpcconf1.pas'},
+  RpcNet in 'RpcNet.pas' {in 'Rpcnet.pas'},
+  seldiv in 'seldiv.pas' {in 'SelDiv.pas'},
+  Sgnoncnf in 'Sgnoncnf.pas' {in 'Sgnoncnf.pas'},
+  Splvista in 'Splvista.pas' {in 'Splvista.pas'},
+  Trpcb in 'Trpcb.pas' {in 'Trpcb.pas'},
+  VCEdit in 'VCEdit.pas' {in 'Vcedit.pas'},
+  WSockc in 'WSockc.pas' {in 'WSockc.pas'},
+  frmSignonMessage in 'frmSignonMessage.pas' {frmSignonMsg},
+  RpcSLogin in 'RpcSLogin.pas' {in 'Rpcslogin.pas'},
+  XWBRich20 in 'XWBRich20.PAS',
+  AddServer in 'AddServer.pas' {frmAddServer},
+  fRPCBErrMsg in 'fRPCBErrMsg.pas' {frmErrMsg},
+  fDebugInfo in 'fDebugInfo.pas' {frmDebugInfo},
+  fSgnonDlg in 'fSgnonDlg.pas' {frmSignonDialog},
+  CCOWRPCBroker in 'CCOWRPCBroker.pas',
+  CCOW_const in 'CCOW_const.pas',
+  VERGENCECONTEXTORLib_TLB in 'VERGENCECONTEXTORLib_TLB.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R60.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R60.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R60.dof	(revision 1676)
@@ -0,0 +1,94 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=0
+D=0
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=0
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA RPC Broker Runtime Package
+[Directories]
+OutputDir=
+UnitOutputDir=..\D6
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veterans Affairs, VHA, OI, SD&D
+FileDescription=TRPCBroker component
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=(c) 1996-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=TRPCBroker
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\D6
+Item1=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R60.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R60.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R60.dpk	(revision 1676)
@@ -0,0 +1,57 @@
+package XWB_R60;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS OFF}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA RPC Broker Runtime Package'}
+{$RUNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl;
+
+contains
+  Xwbut1 in 'Xwbut1.pas' {in 'Xwbut1.pas'},
+  Hash in 'Hash.pas' {in 'Hash.pas'},
+  Loginfrm in 'Loginfrm.pas' {in 'Loginfrm.pas'},
+  MFunStr in 'MFunStr.pas' {in 'Mfunstr.pas'},
+  Rpcberr in 'Rpcberr.pas' {in 'Rpcberr.pas'},
+  Rpcconf1 in 'Rpcconf1.pas' {in 'Rpcconf1.pas'},
+  RpcNet in 'RpcNet.pas' {in 'Rpcnet.pas'},
+  seldiv in 'seldiv.pas' {in 'SelDiv.pas'},
+  Sgnoncnf in 'Sgnoncnf.pas' {in 'Sgnoncnf.pas'},
+  Splvista in 'Splvista.pas' {in 'Splvista.pas'},
+  Trpcb in 'Trpcb.pas' {in 'Trpcb.pas'},
+  VCEdit in 'VCEdit.pas' {in 'Vcedit.pas'},
+  WSockc in 'WSockc.pas' {in 'WSockc.pas'},
+  frmSignonMessage in 'frmSignonMessage.pas' {in 'frmSignonMessage.pas'},
+  RpcSLogin in 'RpcSLogin.pas' {in 'Rpcslogin.pas'},
+  XWBRich20 in 'XWBRich20.PAS',
+  AddServer in 'AddServer.pas' {frmAddServer},
+  fRPCBErrMsg in 'fRPCBErrMsg.pas' {frmErrMsg},
+  fSgnonDlg in 'fSgnonDlg.pas' {frmSignonDialog},
+  fDebugInfo in 'fDebugInfo.pas' {frmDebugInfo},
+  CCOWRPCBroker in 'CCOWRPCBroker.pas',
+  CCOW_const in 'CCOW_const.pas',
+  VERGENCECONTEXTORLib_TLB in 'VERGENCECONTEXTORLib_TLB.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R70.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R70.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R70.dof	(revision 1676)
@@ -0,0 +1,144 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=0
+D=0
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=0
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=0
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=1
+UnsafeCode=1
+UnsafeCast=1
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA RPC Broker Runtime Package
+[Directories]
+OutputDir=
+UnitOutputDir=..\D7
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=1
+MinorVer=1
+Release=40
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=Dept of Veterans Affairs, VHA, OI, SD&D
+FileDescription=TRPCBroker component
+FileVersion=1.1.40.11
+InternalName=
+LegalCopyright=(c) 1996-2004
+LegalTrademarks=
+OriginalFilename=
+ProductName=TRPCBroker
+ProductVersion=1.1.40.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=3
+Item0=..\D7
+Item1=..\D6
+Item2=..\D5
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R70.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R70.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/XWB_R70.dpk	(revision 1676)
@@ -0,0 +1,58 @@
+package XWB_R70;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS OFF}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA RPC Broker Runtime Package'}
+{$RUNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  rtl;
+
+contains
+  Xwbut1 in 'Xwbut1.pas' {in 'Xwbut1.pas'},
+  Hash in 'Hash.pas' {in 'Hash.pas'},
+  Loginfrm in 'Loginfrm.pas' {in 'Loginfrm.pas'},
+  MFunStr in 'MFunStr.pas' {in 'Mfunstr.pas'},
+  Rpcberr in 'Rpcberr.pas' {in 'Rpcberr.pas'},
+  Rpcconf1 in 'Rpcconf1.pas' {in 'Rpcconf1.pas'},
+  RpcNet in 'RpcNet.pas' {in 'Rpcnet.pas'},
+  seldiv in 'seldiv.pas' {in 'SelDiv.pas'},
+  Sgnoncnf in 'Sgnoncnf.pas' {in 'Sgnoncnf.pas'},
+  Splvista in 'Splvista.pas' {in 'Splvista.pas'},
+  Trpcb in 'Trpcb.pas' {in 'Trpcb.pas'},
+  VCEdit in 'VCEdit.pas' {in 'Vcedit.pas'},
+  WSockc in 'WSockc.pas' {in 'WSockc.pas'},
+  frmSignonMessage in 'frmSignonMessage.pas' {in 'frmSignonMessage.pas'},
+  RpcSLogin in 'RpcSLogin.pas' {in 'Rpcslogin.pas'},
+  XWBRich20 in 'XWBRich20.PAS',
+  AddServer in 'AddServer.pas' {frmAddServer},
+  fRPCBErrMsg in 'fRPCBErrMsg.pas' {frmErrMsg},
+  fDebugInfo in 'fDebugInfo.pas' {frmDebugInfo},
+  fSgnonDlg in 'fSgnonDlg.pas' {frmSignonDialog},
+  CCOWRPCBroker in 'CCOWRPCBroker.pas',
+  CCOW_const in 'CCOW_const.pas',
+  VERGENCECONTEXTORLib_TLB in 'VERGENCECONTEXTORLib_TLB.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/Xwbut1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/Xwbut1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/Xwbut1.pas	(revision 1676)
@@ -0,0 +1,319 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Contains utilities used by the BDK.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit Xwbut1;
+
+interface
+
+Uses
+Sysutils, Classes, Messages, WinProcs, IniFiles,
+Dialogs, Registry;
+
+const
+  xwb_ConnectAction = wm_User + 200;
+  IniFile = 'VISTA.INI';
+  BrokerSection = 'RPCBroker';
+  BrokerServerSection = 'RPCBroker_Servers';
+  TAB = #9;
+  {For Registry interaction}
+    {Roots}
+    HKCR = HKEY_CLASSES_ROOT;
+    HKCU = HKEY_CURRENT_USER;
+    HKLM = HKEY_LOCAL_MACHINE;
+    HKU  = HKEY_USERS;
+    HKCC = HKEY_CURRENT_CONFIG;
+    HKDD = HKEY_DYN_DATA;
+    {Keys}
+    REG_BROKER = 'Software\Vista\Broker';
+    REG_VISTA  = 'Software\Vista';
+    REG_SIGNON = 'Software\Vista\Signon';
+    REG_SERVERS = 'Software\Vista\Broker\Servers';
+
+var
+  RetryLimit: integer;
+
+
+function  BuildSect(s1: string; s2: string): string;
+procedure GetHostList(HostList: TStrings);
+function  GetHostsPath : String;
+function  GetIniValue(Value, Default: string): string;
+function  Iff(Condition: boolean; strTrue, strFalse: string): string;
+function  Sizer (s1: string; s2: string): string;
+function  ReadRegData(Root : HKEY; Key, Name : string) : string;
+procedure WriteRegData(Root: HKEY; Key, Name, Value : string);
+procedure DeleteRegData(Root: HKEY; Key, Name : string);
+function  ReadRegDataDefault(Root: HKEY; Key, Name, Default : string) : string;
+procedure ReadRegValues(Root: HKEY; Key : string; var RegValues : TStringList);
+procedure ReadRegValueNames(Root:HKEY; Key : string; var RegNames : TStringlist);
+
+implementation
+
+
+
+{---------------------------- BuildSect ---------------------------
+------------------------------------------------------------------}
+Function BuildSect(s1: string; s2: string): string;
+var
+   s, x: string[100];
+begin
+     if s2 <> '' then
+          s := s1 + s2
+     else
+         s := s1;
+
+     x := IntToStr(length(s));
+     if length(x) = 1 then x := '00' + x;
+     if length(x) = 2 then x := '0' + x;
+     Result := x + s;
+end;
+
+
+
+{--------------------------- GetHostList --------------------------
+Reads HOSTS file and fills the passed HostList with all
+entries from that file.
+------------------------------------------------------------------}
+procedure GetHostList(HostList: TStrings);
+var
+  I, SpacePos: integer;
+  IP, HostName: string;
+  S : string;                             //Individual line from Hosts file.
+  WholeList: TStringList;
+begin
+
+  HostList.Clear;
+  WholeList := nil;
+  try
+    WholeList := TStringList.Create;             {create temp buffer}
+    WholeList.LoadFromFile(GetHostsPath + '\HOSTS');  {read in the file}
+    for I := 0 to WholeList.Count - 1 do
+    begin
+        S := WholeList[I];
+        {ignore lines that start with '#' and empty lines}
+        if (Copy(S,1,1) <> '#') and (Length(S) > 0) then
+        begin
+           while Pos(TAB, S) > 0 do              //Convert tabs to spaces
+              S[Pos(TAB, S)] := ' ';
+           IP := Copy(S,1,pos(' ', S)-1);  {get IP addr}
+           {parse out Host name}
+           SpacePos := Length(IP) + 1;
+           while Copy(S,SpacePos,1) = ' ' do inc(SpacePos);
+           HostName := Copy(S,SpacePos,255);
+           if pos(' ',HostName) > 0 then
+              HostName := Copy(HostName,1,pos(' ',HostName)-1);
+           if pos('#',HostName) > 0 then
+              HostName := Copy(HostName,1,pos('#',HostName)-1);
+           HostList.Add(HostName+'   [' + IP + ']');
+        end{if};
+    end{for};
+  finally
+    WholeList.Free;
+  end{try};
+end;
+
+{GetHostsPath returns path to host file without terminating '\'.
+If path in VISTA.INI that is used.  Otherwise, path is determined based
+on default windows directory and Windows OS.}
+function  GetHostsPath : String;
+var
+  OsInfo : TOSVersionInfo;                    //Type for OS info
+  HostsPath : String;
+  WinDir   : PChar;
+begin
+  Result := '';
+  OSInfo.dwOSVersionInfoSize := SizeOf(OsInfo);
+  GetVersionEx(OSInfo);                           // Retrieve OS info
+  WinDir := StrAlloc(MAX_PATH + 1);
+  GetWindowsDirectory(WinDir, MAX_PATH);          //Retieve windows directory
+  HostsPath := StrPas(WinDir);
+  StrDispose(WinDir);
+  {Now check OS.  VER_PLATFORM_WIN32_WINDOWS indicates Windows 95.
+   If Windows 95, hosts default directory is windows directory.
+   Else assume NT and append NT's directory for hosts to windows directory.}
+  if OSInfo.dwPlatformID <> VER_PLATFORM_WIN32_WINDOWS then
+    HostsPath := HostsPath + '\system32\drivers\etc';
+  HostsPath := GetIniValue('HostsPath',HostsPath);
+  if Copy(HostsPath, Length(HostsPath), 1) = '\' then  //Strip terminating '\'
+    HostsPath := Copy(HostsPath, 1, Length(HostsPath)-1);
+  Result := HostsPath;
+end;
+
+
+{-------------------------- GetIniValue --------------------------
+------------------------------------------------------------------}
+function GetIniValue(Value, Default: string): string;
+var
+  DhcpIni: TIniFile;
+  pchWinDir: array[0..100] of char;
+begin
+  GetWindowsDirectory(pchWinDir, SizeOf(pchWinDir));
+  DhcpIni := TIniFile.Create(IniFile);
+  Result := DhcpIni.ReadString(BrokerSection, Value, 'Could not find!');
+  if Result = 'Could not find!' then begin
+     if ((Value <> 'Installing') and (GetIniValue('Installing','0') <> '1')) then
+        {during Broker install Installing=1 so warnings should not display}
+     begin
+        DhcpIni.WriteString(BrokerSection, Value, Default);   {Creates vista.ini
+                                                               if necessary}
+     end;
+     Result := Default;
+  end;
+  DhcpIni.Free;
+end;
+
+
+
+{------------------------------ Iff ------------------------------
+------------------------------------------------------------------}
+function Iff(Condition: boolean; strTrue, strFalse: string): string;
+begin
+  if Condition then Result := strTrue else Result := strFalse;
+end;
+
+
+{------------------------------ Sizer -----------------------------
+This function is used in conjunction with the ListSetUp function.  It returns
+the number of characters found in the string passed in.  The string is
+returned with a leading 0 for the 3 character number format required by the
+broker call.
+------------------------------------------------------------------}
+function Sizer (s1: string; s2: string): string;
+var
+   x: integer;
+   st: string;
+begin
+  st := s1 + s2;
+  x := Length(st);
+  st := IntToStr(x);
+  if length(st) < 3 then
+     Result := '0' + st
+  else
+      Result := st;
+end;
+
+{Function to retrieve a data value from the Windows Registry.
+If Key or Name does not exist, null returned.}
+function  ReadRegData(Root: HKEY; Key, Name : string) : string;
+var
+  Registry: TRegistry;
+begin
+  Result := '';
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := Root;
+    if Registry.OpenKeyReadOnly(Key) then
+    begin
+      Result := Registry.ReadString(Name);
+      Registry.CloseKey;
+    end;
+  finally
+    Registry.Free;
+  end;
+end;
+
+{Function to set a data value into the Windows Registry.
+If Key or Name does not exist, it is created.}
+procedure  WriteRegData(Root: HKEY; Key, Name, Value : string);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := Root;
+    if Registry.OpenKey(Key, True) then
+    begin
+      Registry.WriteString(Name, Value);
+      Registry.CloseKey;
+    end;
+  finally
+    Registry.Free;
+  end;
+end;
+
+{Procedure to delete a data value into the Windows Registry.}
+procedure  DeleteRegData(Root: HKEY; Key, Name : string);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := Root;
+    if Registry.OpenKey(Key, True) then
+    begin
+      Registry.DeleteValue(Name);
+      Registry.CloseKey;
+    end;
+  finally
+    Registry.Free;
+  end;
+end;
+
+
+{Returns string value from registry.  If value is '', then Default
+value is filed in Registry and Default is returned.}
+function  ReadRegDataDefault(Root: HKEY; Key, Name, Default : string) : string;
+begin
+  Result := ReadRegData(Root, Key, Name);
+  if Result = '' then
+  begin
+    WriteRegData(Root, Key, Name, Default);
+    Result := Default;
+  end;
+end;
+
+{Returns name=value pairs for a key.  Format returned same as found in .ini
+files.  Useful with the Values method of TStringList.}
+procedure  ReadRegValues(Root: HKEY; Key : string; var RegValues : TStringList);
+var
+  RegNames : TStringList;
+  Registry  : TRegistry;
+  i         : integer;
+begin
+  RegNames := TStringlist.Create;
+  Registry  := TRegistry.Create;
+  try
+    Registry.RootKey := Root;
+    if Registry.OpenKeyReadOnly(Key) then
+    begin
+      Registry.GetValueNames(RegNames);
+      for i := 0 to (RegNames.Count - 1) do
+        RegValues.Add(RegNames.Strings[i] + '='
+                   + Registry.ReadString(RegNames.Strings[i]));
+    end
+    else
+      RegValues.Add('');
+  finally
+    Registry.Free;
+    RegNames.Free;
+  end;
+end;
+
+procedure ReadRegValueNames(Root:HKEY; Key : string; var RegNames : TStringlist);
+var
+  Registry  : TRegistry;
+  ReturnedNames : TStringList;
+begin
+  RegNames.Clear;
+  Registry  := TRegistry.Create;
+  ReturnedNames := TStringList.Create;
+  try
+    Registry.RootKey := Root;
+    if Registry.OpenKeyReadOnly(Key) then
+    begin
+      Registry.GetValueNames(ReturnedNames);
+      RegNames.Assign(ReturnedNames);
+    end;
+  finally
+    Registry.Free;
+    ReturnedNames.Free;
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/dunit.ini
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/dunit.ini	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/dunit.ini	(revision 1676)
@@ -0,0 +1,62 @@
+[Tests]
+Unit Tests=1
+[Tests.Unit Tests]
+type of suite=1
+ReadRegistry=1
+Test Piece=1
+Test Translate=1
+[Tests.Unit Tests.type of suite]
+TTestType=1
+[GUITestRunner Config]
+AutoSave=1
+Left=22
+Top=22
+Width=827
+Height=602
+ResultsPanel.Height=191
+ErrorMessage.Height=44
+ErrorMessage.Visible=1
+FailureList.ColumnWidth[0]=180
+FailureList.ColumnWidth[1]=100
+AutoFocus=1
+HideTestNodesOnOpen=0
+BreakOnFailures=0
+[Tests.Unit Tests.ReadRegistry]
+TTestSgnoncnf=1
+[Tests.Unit Tests.ReadRegistry.TTestSgnoncnf]
+TestReadRegistry=1
+TestShowModal=1
+TestShowModal1=1
+TestShowModal2=1
+[Tests.Unit Tests.Test Piece]
+TTestMFunStr=1
+TTestMFunStr1=1
+[Tests.Unit Tests.Test Piece.TTestMFunStr]
+TestPiece=1
+TestPiece1=1
+Setup=1
+TestPiece2=1
+TestPiece3=1
+TestPiece4=1
+TestPiece5=1
+TestPiece6=1
+TestPiece7=1
+TestPiece8=1
+TestPiece9=1
+[Tests.Unit Tests.Test Piece.TTestMFunStr1]
+TestPiece1=1
+TestPiece2=1
+TestPiece3=1
+TestPiece4=1
+TestPiece5=1
+TestPiece6=1
+TestPiece7=1
+TestPiece8=1
+TestPiece9=1
+[Tests.Unit Tests.Test Translate]
+TTestMFunStr2=1
+[Tests.Unit Tests.Test Translate.TTestMFunStr2]
+TestTran1=1
+TestTran2=1
+TestTran3=1
+TestTran4=1
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fDebugInfo.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fDebugInfo.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fDebugInfo.dfm	(revision 1676)
@@ -0,0 +1,34 @@
+object frmDebugInfo: TfrmDebugInfo
+  Left = 255
+  Top = 107
+  Width = 329
+  Height = 217
+  Caption = 'RPCBroker Debug Info'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblDebugInfo: TLabel
+    Left = 44
+    Top = 16
+    Width = 233
+    Height = 105
+    AutoSize = False
+  end
+  object btnOK: TButton
+    Left = 123
+    Top = 144
+    Width = 75
+    Height = 25
+    Caption = '&OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 0
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fDebugInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fDebugInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fDebugInfo.pas	(revision 1676)
@@ -0,0 +1,35 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Displays Information for Debug Mode.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit fDebugInfo;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls;
+
+type
+  TfrmDebugInfo = class(TForm)
+    lblDebugInfo: TLabel;
+    btnOK: TButton;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmDebugInfo: TfrmDebugInfo;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCBErrMsg.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCBErrMsg.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCBErrMsg.dfm	(revision 1676)
@@ -0,0 +1,42 @@
+object frmErrMsg: TfrmErrMsg
+  Left = 325
+  Top = 293
+  Width = 376
+  Height = 215
+  Caption = 'Error Encountered'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Button1: TButton
+    Left = 146
+    Top = 152
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    ModalResult = 1
+    TabOrder = 0
+  end
+  object mmoErrorMessage: TMemo
+    Left = 8
+    Top = 16
+    Width = 345
+    Height = 129
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Fixedsys'
+    Font.Style = []
+    Lines.Strings = (
+      '')
+    ParentFont = False
+    ScrollBars = ssVertical
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCBErrMsg.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCBErrMsg.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCBErrMsg.pas	(revision 1676)
@@ -0,0 +1,55 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Error Display to permit application control over
+	             bringing it to the front.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit fRPCBErrMsg;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls;
+
+type
+  TfrmErrMsg = class(TForm)
+    Button1: TButton;
+    mmoErrorMessage: TMemo;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    class procedure RPCBShowException(Sender: TObject; E: Exception);
+  end;
+
+procedure RPCBShowErrMsg(ErrorText: String);
+
+var
+  frmErrMsg: TfrmErrMsg;
+
+implementation
+
+{$R *.DFM}
+
+procedure RPCBShowErrMsg(ErrorText: String);
+begin
+  frmErrMsg := TfrmErrMsg.Create(Application);
+  frmErrMsg.mmoErrorMessage.Lines.Add(ErrorText);
+  frmErrMsg.ShowModal;
+  frmErrMsg.Free;
+end;
+
+class procedure TfrmErrMsg.RPCBShowException(Sender: TObject; E: Exception);
+begin
+  frmErrMsg := TfrmErrMsg.Create(Application);
+  frmErrMsg.mmoErrorMessage.Lines.Add(E.Message);
+  frmErrMsg.ShowModal;
+  frmErrMsg.Free;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCSharedBrokerSessionMgr1.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCSharedBrokerSessionMgr1.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCSharedBrokerSessionMgr1.dfm	(revision 1676)
@@ -0,0 +1,16 @@
+object Form1: TForm1
+  Left = 215
+  Top = 111
+  Width = 696
+  Height = 480
+  Caption = 'Form1'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCSharedBrokerSessionMgr1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCSharedBrokerSessionMgr1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fRPCSharedBrokerSessionMgr1.pas	(revision 1676)
@@ -0,0 +1,32 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Kevin Meldrum, Travis Hilton, Joel Ivey
+	Description: form file for RPCSharedBrokerSessionMgr1.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit fRPCSharedBrokerSessionMgr1;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
+
+type
+  TForm1 = class(TForm)
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  Form1: TForm1;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fSgnonDlg.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fSgnonDlg.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fSgnonDlg.dfm	(revision 1676)
@@ -0,0 +1,126 @@
+object frmSignonDialog: TfrmSignonDialog
+  Left = 212
+  Top = 111
+  Width = 326
+  Height = 188
+  Caption = 'Configuration Selection Question'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 32
+    Top = 8
+    Width = 220
+    Height = 96
+    Caption = 'Do you want to use the standard Windows Window Background Color?'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -19
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    WordWrap = True
+  end
+  object btnOK: TBitBtn
+    Left = 48
+    Top = 120
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 0
+    Glyph.Data = {
+      BE060000424DBE06000000000000360400002800000024000000120000000100
+      0800000000008802000000000000000000000001000000010000000000000000
+      80000080000000808000800000008000800080800000C0C0C000C0DCC000F0C8
+      A400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000F0FBFF00A4A0A000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030303030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      03030303030303030303030303030303030303030303FF030303030303030303
+      03030303030303040403030303030303030303030303030303F8F8FF03030303
+      03030303030303030303040202040303030303030303030303030303F80303F8
+      FF030303030303030303030303040202020204030303030303030303030303F8
+      03030303F8FF0303030303030303030304020202020202040303030303030303
+      0303F8030303030303F8FF030303030303030304020202FA0202020204030303
+      0303030303F8FF0303F8FF030303F8FF03030303030303020202FA03FA020202
+      040303030303030303F8FF03F803F8FF0303F8FF03030303030303FA02FA0303
+      03FA0202020403030303030303F8FFF8030303F8FF0303F8FF03030303030303
+      FA0303030303FA0202020403030303030303F80303030303F8FF0303F8FF0303
+      0303030303030303030303FA0202020403030303030303030303030303F8FF03
+      03F8FF03030303030303030303030303FA020202040303030303030303030303
+      0303F8FF0303F8FF03030303030303030303030303FA02020204030303030303
+      03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403
+      030303030303030303030303F8FF0303F8FF03030303030303030303030303FA
+      0202040303030303030303030303030303F8FF03F8FF03030303030303030303
+      03030303FA0202030303030303030303030303030303F8FFF803030303030303
+      030303030303030303FA0303030303030303030303030303030303F803030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      0303}
+    NumGlyphs = 2
+  end
+  object btnNO: TBitBtn
+    Left = 160
+    Top = 120
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = 'NO'
+    ModalResult = 2
+    TabOrder = 1
+    Glyph.Data = {
+      DE010000424DDE01000000000000760000002800000024000000120000000100
+      0400000000006801000000000000000000001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      333333333333333333333333000033338833333333333333333F333333333333
+      0000333911833333983333333388F333333F3333000033391118333911833333
+      38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333
+      911118111118333338F3338F833338F3000033333911111111833333338F3338
+      3333F8330000333333911111183333333338F333333F83330000333333311111
+      8333333333338F3333383333000033333339111183333333333338F333833333
+      00003333339111118333333333333833338F3333000033333911181118333333
+      33338333338F333300003333911183911183333333383338F338F33300003333
+      9118333911183333338F33838F338F33000033333913333391113333338FF833
+      38F338F300003333333333333919333333388333338FFF830000333333333333
+      3333333333333333333888330000333333333333333333333333333333333333
+      0000}
+    NumGlyphs = 2
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fSgnonDlg.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fSgnonDlg.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fSgnonDlg.pas	(revision 1676)
@@ -0,0 +1,36 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Signon Dialog for Initial ESSO Signon.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit fSgnonDlg;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Buttons;
+
+type
+  TfrmSignonDialog = class(TForm)
+    btnOK: TBitBtn;
+    btnNO: TBitBtn;
+    Label1: TLabel;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmSignonDialog: TfrmSignonDialog;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fSignonConfigColor.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fSignonConfigColor.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fSignonConfigColor.dfm	(revision 1676)
@@ -0,0 +1,126 @@
+object frmColorSelectDialog: TfrmColorSelectDialog
+  Left = 205
+  Top = 106
+  Width = 326
+  Height = 188
+  Caption = 'Configuration Selection Question'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 32
+    Top = 8
+    Width = 220
+    Height = 96
+    Caption = 'Do you want to use the standard Windows Window Background Color?'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -19
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    WordWrap = True
+  end
+  object btnOK: TBitBtn
+    Left = 48
+    Top = 120
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 0
+    Glyph.Data = {
+      BE060000424DBE06000000000000360400002800000024000000120000000100
+      0800000000008802000000000000000000000001000000010000000000000000
+      80000080000000808000800000008000800080800000C0C0C000C0DCC000F0C8
+      A400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000F0FBFF00A4A0A000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030303030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      03030303030303030303030303030303030303030303FF030303030303030303
+      03030303030303040403030303030303030303030303030303F8F8FF03030303
+      03030303030303030303040202040303030303030303030303030303F80303F8
+      FF030303030303030303030303040202020204030303030303030303030303F8
+      03030303F8FF0303030303030303030304020202020202040303030303030303
+      0303F8030303030303F8FF030303030303030304020202FA0202020204030303
+      0303030303F8FF0303F8FF030303F8FF03030303030303020202FA03FA020202
+      040303030303030303F8FF03F803F8FF0303F8FF03030303030303FA02FA0303
+      03FA0202020403030303030303F8FFF8030303F8FF0303F8FF03030303030303
+      FA0303030303FA0202020403030303030303F80303030303F8FF0303F8FF0303
+      0303030303030303030303FA0202020403030303030303030303030303F8FF03
+      03F8FF03030303030303030303030303FA020202040303030303030303030303
+      0303F8FF0303F8FF03030303030303030303030303FA02020204030303030303
+      03030303030303F8FF0303F8FF03030303030303030303030303FA0202020403
+      030303030303030303030303F8FF0303F8FF03030303030303030303030303FA
+      0202040303030303030303030303030303F8FF03F8FF03030303030303030303
+      03030303FA0202030303030303030303030303030303F8FFF803030303030303
+      030303030303030303FA0303030303030303030303030303030303F803030303
+      0303030303030303030303030303030303030303030303030303030303030303
+      0303}
+    NumGlyphs = 2
+  end
+  object btnNO: TBitBtn
+    Left = 160
+    Top = 120
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = 'NO'
+    ModalResult = 2
+    TabOrder = 1
+    Glyph.Data = {
+      DE010000424DDE01000000000000760000002800000024000000120000000100
+      0400000000006801000000000000000000001000000000000000000000000000
+      80000080000000808000800000008000800080800000C0C0C000808080000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      333333333333333333333333000033338833333333333333333F333333333333
+      0000333911833333983333333388F333333F3333000033391118333911833333
+      38F38F333F88F33300003339111183911118333338F338F3F8338F3300003333
+      911118111118333338F3338F833338F3000033333911111111833333338F3338
+      3333F8330000333333911111183333333338F333333F83330000333333311111
+      8333333333338F3333383333000033333339111183333333333338F333833333
+      00003333339111118333333333333833338F3333000033333911181118333333
+      33338333338F333300003333911183911183333333383338F338F33300003333
+      9118333911183333338F33838F338F33000033333913333391113333338FF833
+      38F338F300003333333333333919333333388333338FFF830000333333333333
+      3333333333333333333888330000333333333333333333333333333333333333
+      0000}
+    NumGlyphs = 2
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fSignonConfigColor.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fSignonConfigColor.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fSignonConfigColor.pas	(revision 1676)
@@ -0,0 +1,36 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Color selection for signon form.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit fSignonConfigColor;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Buttons;
+
+type
+  TfrmColorSelectDialog = class(TForm)
+    btnOK: TBitBtn;
+    btnNO: TBitBtn;
+    Label1: TLabel;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmColorSelectDialog: TfrmColorSelectDialog;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fVistaBar.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fVistaBar.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fVistaBar.dfm	(revision 1676)
@@ -0,0 +1,30 @@
+object frmVistABar: TfrmVistABar
+  Left = 200
+  Top = 200
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsNone
+  ClientHeight = 213
+  ClientWidth = 104
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  WindowState = wsMinimized
+  OnActivate = FormActivate
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pmnSysTray: TPopupMenu
+    Left = 24
+    Top = 32
+    object About1: TMenuItem
+      Caption = '&About'
+      OnClick = About1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/fVistaBar.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/fVistaBar.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/fVistaBar.pas	(revision 1676)
@@ -0,0 +1,168 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Kevin Meldrum, Travis Hilton, Joel Ivey
+	Description: Basic form for RPCSharedBrokerSessionMgr1.exe.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit fVistaBar;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  Buttons, StdCtrls, ExtCtrls, Menus, ShellAPI;
+  
+const
+  {Support SysTray}
+  wm_IconNotification =  wm_User + 100; //System Tray Msg Handle
+  ICON_OFF = 100;                       //IconId for not connected icon
+  ICON_ON  = 101;                       //IconId for connected icon
+  ICON_OFF_TIP = 'RPCSharedBrokerSessionMgr: no connections';     //Tip when not connected
+  ICON_ON_TIP  = 'RPCSharedBrokerSessionMgr';  //Tip when connected
+
+
+
+type
+  TfrmVistABar = class(TForm)
+    pmnSysTray: TPopupMenu;
+    About1: TMenuItem;
+
+    procedure FormActivate(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    function AddTrayIcon(iconId : UINT; icon : THandle; tip : string)
+             : Boolean;
+    function DeleteTrayIcon(iconId : UINT) : Boolean;
+    procedure FormDestroy(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure About1Click(Sender: TObject);
+  private
+    { Private declarations }
+    NotifyIconData : TNOTIFYICONDATA;
+    TrayIconId     : UINT;
+    TrayIcon       : HICON;
+    TrayTip        : string;
+  protected
+    procedure WMIconNotification(var Msg : TMessage);
+              message wm_IconNotification;
+    procedure  wmQueryEndSession(var Msg : TMessage);
+              message wm_QueryEndSession;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmVistABar: TfrmVistABar;
+
+implementation
+
+uses uSharedBroker1, frmVistAAbout;
+
+{$R *.DFM}
+{$R *.RES}
+
+procedure TfrmVistABar.FormActivate(Sender: TObject);
+begin
+  ShowWindow(Application.Handle, SW_HIDE);
+  Top := 0;
+  Left := (Screen.Width - Width) div 2;
+
+  // Is there a better way to hide this window?
+  // Visible := false;  // doesn't work
+  // TODO
+  // Find a way to make the main form non visible
+  Width := 0;
+  Height := 0;
+
+end;
+
+procedure TfrmVistABar.FormCreate(Sender: TObject);
+var
+  I: Integer;
+begin
+  for I := 1 to ParamCount do    // Iterate
+    if UpperCase(ParamStr(I)) = 'REGISTER' then
+      Halt;
+  {Setup NotifyIconData fields that won't change}
+  NotifyIconData.cbSize := SizeOf(TNOTIFYICONDATA);
+  NotifyIconData.Wnd := Handle;
+  NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
+  NotifyIconData.uCallbackMessage := wm_IconNotification;
+
+  {Setup initial icon (= NotConnected) and add it!}
+  TrayIconId := ICON_ON;
+  TrayIcon   := LoadIcon(HInstance, 'ICON_ON');   //Loads icon from resource.
+  TrayTip    := ICON_ON_TIP;
+  AddTrayIcon(TrayIconId, TrayIcon, TrayTip);
+  SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
+  //ShowWindow(Application.Handle, SW_HIDE);
+end;
+
+function TfrmVistaBar.AddTrayIcon(iconId : UINT; icon : THandle; tip : string)
+             : Boolean;
+begin
+  NotifyIconData.uID := IconID;
+  NotifyIconData.HIcon := icon;
+  if tip <> '' then
+    StrLCopy(NotifyIconData.szTip, PChar(tip), SizeOf(NotifyIconData.szTip))
+  else
+    NotifyIconData.szTip := #0;
+  Result := Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
+end;
+
+{Processes messages to the icon in the System Tray.}
+procedure TfrmVistaBar.WMIconNotification(var Msg : TMessage);
+var
+  MouseMsg : LongInt;
+  Pt: TPoint;
+begin
+  MouseMsg := Msg.LParam;
+
+  case MouseMsg of
+    wm_LButtonDown :
+      ;
+    wm_RButtonUp :
+    begin
+      GetCursorPos(Pt);               //Used to locate pop-up menu
+      pmnSysTray.PopUp(Pt.X, Pt.Y);   //Displays menu
+    end;
+    wm_LButtonDblClk :               //DoubleClick displays form.
+//      mitShowClick(Self);
+  end;
+end;
+
+{Event handler sets flag used in FormCloseQuery so that user is }
+procedure TfrmVistaBar.wmQueryEndSession(var Msg : TMessage);
+begin
+//  CanAutoClose := True;
+  Msg.Result := 1;
+end;
+
+function TfrmVistaBar.DeleteTrayIcon(iconId : UINT) : Boolean;
+begin
+  NotifyIconData.uID := IconID;
+  Result := Shell_NotifyIcon(NIM_DELETE, @ NotifyIconData);
+  Application.ProcessMessages;
+end;
+
+
+
+procedure TfrmVistABar.FormDestroy(Sender: TObject);
+begin
+  DeleteTrayIcon(TrayIconId);
+end;
+
+procedure TfrmVistABar.Exit1Click(Sender: TObject);
+begin
+  ShowMessage('If the system warns against closing this Application - DON''T CLOSE IT.#13#10Closing this when it shouldn''t be will cause any applications using it to crash');
+  Halt;
+end;
+
+procedure TfrmVistABar.About1Click(Sender: TObject);
+begin
+  ShowAboutBox;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/frmSignonMessage.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/frmSignonMessage.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/frmSignonMessage.dfm	(revision 1676)
@@ -0,0 +1,134 @@
+object frmSignonMsg: TfrmSignonMsg
+  Left = 194
+  Top = 16
+  Width = 766
+  Height = 630
+  Caption = 'Signon Message'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 758
+    Height = 562
+    Align = alClient
+    BevelInner = bvLowered
+    BevelOuter = bvNone
+    BorderWidth = 3
+    Caption = 'Panel1'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 1
+    object mmoMsg: TXWBRichEdit
+      Left = 4
+      Top = 4
+      Width = 750
+      Height = 554
+      Align = alClient
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Fixedsys'
+      Font.Style = [fsBold]
+      URLDetect = True
+      HideScrollBars = False
+      Lines.Strings = (
+        
+          '1234567891123456789212345678931234567894123456789512345678961234' +
+          '5678971234567898      '#13)
+      ParentFont = False
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 0
+    end
+  end
+  object Panel2: TPanel
+    Left = 0
+    Top = 562
+    Width = 758
+    Height = 41
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    OnResize = Panel2Resize
+    object BitBtn1: TBitBtn
+      Left = 342
+      Top = 8
+      Width = 75
+      Height = 25
+      Caption = '&Close'
+      Default = True
+      TabOrder = 0
+      OnClick = BitBtn1Click
+      Glyph.Data = {
+        BE060000424DBE06000000000000360400002800000024000000120000000100
+        0800000000008802000000000000000000000001000000010000000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A600F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
+        FF00FFFF0000FFFFFF0000000000000080000080000000808000800000008000
+        800080800000C0C0C000C0DCC000F0CAA600F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A600F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
+        FF00FFFF0000FFFFFF0000000000000080000080000000808000800000008000
+        800080800000C0C0C000C0DCC000F0CAA600F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A600F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
+        FF00FFFF0000FFFFFF0000000000000080000080000000808000800000008000
+        800080800000C0C0C000C0DCC000F0CAA600F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A600F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
+        FF00FFFF0000FFFFFF0000000000000080000080000000808000800000008000
+        800080800000C0C0C000C0DCC000F0CAA600F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A600F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
+        FF00FFFF0000FFFFFF0000000000000080000080000000808000800000008000
+        800080800000C0C0C000C0DCC000F0CAA600F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A600F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00
+        FF00FFFF0000FFFFFF0000000000000080000080000000808000800000008000
+        800080800000C0C0C000C0DCC000F0CAA600F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000
+        800000800000008080008000000080008000F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00030C0C0C0C0C
+        0C0C0C0C0707130713070C07130C0C0C0C0C0C0C0C0C0C030303030303130404
+        04040400000C0C0C13131304040404040C0C0C0C0C0C0C0C0C0C130303031313
+        0C130303030304110500000713131304030303030C0C0C0C0C0C0C0C0C0C0303
+        030C0C0C0C13030303030405110500131313130403030303030303030C130C0C
+        0C130303030C1303031303030303041105110013131313040303030303030303
+        0C0C070C0C130303030C13030313030303030405110500131213120403030303
+        030303030C130C070C130303030C130303130303030304110511001313131304
+        03030303030303030C0C070C0C130303030C1303031303030303040511050013
+        1213120403030303030303030C130C070C130303030C13030313030303030411
+        051100131313130403030303030303030C0C070C0C130303030C130303130303
+        03030405110500131213120403030303030303030C130C070C130303030C1303
+        0313030303030411051100121312130403030303030303030C0C070C0C130303
+        030C13030313030303030405110500131213120403030303030303030C130C07
+        0C130303030C1303031303030303041105110012131213040303030303030303
+        0C0C070C0C130303030C13030313030303030404040404040404040403030303
+        030303030C130C130C131313130C130303130303030303030303030303030303
+        03030303030303030C0C0C0C0C0C0C0C0C0C0303031303030303030300000000
+        0000030303030303030303030303031313131313130303030313030303030303
+        000E0E0E0E000303030303030303030303030C0C0C0C0C0C1303030303130303
+        030303030000000000000303030303030303030303030C131313130C13030303
+        0313}
+      NumGlyphs = 2
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/frmSignonMessage.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/frmSignonMessage.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/frmSignonMessage.pas	(revision 1676)
@@ -0,0 +1,49 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Danila Manapsal, Don Craven, Joel Ivey
+	Description: Displays message from server after user signon.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit frmSignonMessage;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, Buttons, ExtCtrls, XWBRich20;
+
+type
+  TfrmSignonMsg = class(TForm)
+    Panel1: TPanel;
+    Panel2: TPanel;
+    BitBtn1: TBitBtn;
+    mmoMsg: TXWBRichEdit;
+    procedure Panel2Resize(Sender: TObject);
+    procedure BitBtn1Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmSignonMsg: TfrmSignonMsg;
+                                                  
+implementation
+
+{$R *.DFM}
+
+procedure TfrmSignonMsg.Panel2Resize(Sender: TObject);
+begin
+  BitBtn1.Left := (Panel2.Width - BitBtn1.Width) div 2;
+end;
+
+procedure TfrmSignonMsg.BitBtn1Click(Sender: TObject);
+begin
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/frmVistAAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/frmVistAAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/frmVistAAbout.dfm	(revision 1676)
@@ -0,0 +1,1201 @@
+object frmVistAAbout: TfrmVistAAbout
+  Left = 279
+  Top = 106
+  BorderStyle = bsDialog
+  Caption = 'About'
+  ClientHeight = 236
+  ClientWidth = 353
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 185
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    ParentColor = True
+    TabOrder = 0
+    object VistaLogo: TImage
+      Left = 8
+      Top = 8
+      Width = 153
+      Height = 73
+      Center = True
+      Picture.Data = {
+        07544269746D61702A880000424D2A8800000000000036000000280000009600
+        00004D0000000100180000000000F48700000000000000000000000000000000
+        0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDFFFFFFDDDDDDCCCCCCB2B2B2CC
+        CCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0DDDDDDF1F1F1F1F1F1DDDDDDCCCC
+        CCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFC0C0C0DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDF1F1
+        F1FFFFFFF1F1F1DDDDDD999999CCCCCCF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1DDDDDDCCCCCCB2B2B2
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1F1DDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1CCCCCCB2B2B2CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1FFFFFFFFFFFFDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCCFFFFFFDDDDDDB2B2B2C0C0
+        C0FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFF1F1
+        F1F1F1F1CCCCCCFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFB2B2B2C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1DDDDDDFFFFFFC0C0C0FFFFFFF1F1F1CCCCCCF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCCCCCCCCCCCCCC
+        CCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDCCCCCCDDDDDDDDDD
+        DDCCCCCCF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDCCCCCCC0C0C0C0C0C0CCCCCCC0C0C0CCCCCCB2B2B2F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0CCCCCCCCCCCCCCCCCCDDDDDDC0C0
+        C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDD
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1
+        FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFC0C0C0CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDD0000FFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCC0C0C0C0C0
+        C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCC0C0C0
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDD0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD
+        C0C0C0C0C0C0C0C0C0B2B2B20000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0
+        C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0CCCCCCCCCCCCDDDDDDDDDDDD
+        FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCC
+        CCC0C0C0DDDDDDF1F1F1F1F1F10000FF0000FF0000FF0000FFFFFFFFF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFC0C0C0C0C0C0CC
+        CCCCF1F1F1DDDDDDDDDDDDCCCCCCCCCCCCCCCCCCB2B2B2F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        DDDDDDDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1
+        F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFCCCCCC
+        DDDDDDF1F1F1FFFFFFDDDDDDCCCCCCB2B2B2DDDDDDB2B2B2C0C0C0F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1DDDDDDF1F1
+        F1F1F1F1B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFF1F1F1DD
+        DDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1
+        F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1CCCCCCB2B2B2DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCCCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFF
+        FFFFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFF1F1F1C0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFDDDDDD
+        CCCCCCC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1B2B2B2C0C0C0CCCCCCDDDDDDFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1DDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1CCCCCCFFFF
+        FFFFFFFFFFFFFFDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDD
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDCCCCCCC0C0C0DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0
+        C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFDDDD
+        DD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCCCCCCCDDDDDDB2B2B2FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDFFFFFFF1F1F1DD
+        DDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0DDDDDDF1F1F1F1F1F1FFFF
+        FFDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF999999C0C0C0FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDCCCCCCFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDB2B2B2DDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FFDDDDDDC0C0C0C0C0C0CCCCCCDDDDDDC0C0C0F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCC
+        F1F1F1FFFFFFC0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFCCCCCCCCCCCCFFFFFFDDDDDDCCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2F1F1F1
+        FFFFFFDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFC0C0C0B2B2B2CCCCCCF1F1F1F1F1F1DDDDDDF1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDD
+        DDFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1DDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1CCCCCCB2B2B2C0C0C0CCCCCCF1F1F1FF
+        FFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0FFFFFFDDDDDDF1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDD
+        DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFDDDDDDCC
+        CCCCC0C0C0FFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1CCCCCCB2B2B2CCCCCCC0C0C0CCCCCCF1F1F1F1F1F1F1F1F1DDDD
+        DDFFFFFFCCCCCCF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0DDDDDDFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFF
+        FFFFF1F1F1F1F1F1CCCCCCC0C0C0C0C0C0CCCCCCDDDDDDF1F1F1F1F1F1CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDB2B2B2C0C0C0FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCC
+        CCCCDDDDDDFFFFFFC0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFCCCCCCC0C0C0B2B2B2DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2C0C0C0CCCCCCCCCCCCDDDDDDC0C0C0C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1
+        F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1C0C0C0F1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1B2B2B2C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1FFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0
+        C0C0F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        B2B2B2CCCCCCFFFFFFFFFFFFFFFFFFDDDDDDDDDDDD999999C0C0C0FFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0CCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1CCCCCCDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDCCCC
+        CCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCCCCCCCDDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDC0C0C0DDDDDDFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDFFFFFFF1F1F1DD
+        DDDDCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDCCCCCCB2B2B2F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDC0
+        C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDDDDDDDDDDDDC0C0C0DDDDDD
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCCCCCCCDDDDDDDDDDDDC0C0C0B2B2B2CCCCCCF1F1F1FFFFFF
+        F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDB2B2B2CCCCCCFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1CCCCCCC0C0C00000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0C0
+        999999DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0
+        F1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1FFFFFFF1
+        F1F1DDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCC
+        CCFFFFFFF1F1F1DDDDDDC0C0C0B2B2B2DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0
+        CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1
+        CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFCCCCCCCCCCCCDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCCDDDDDDF1F1F1F1F1F1DDDDDDF1F1
+        F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDD
+        DDC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDD
+        DDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1DDDDDDCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DD
+        DDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCCCCCCC
+        CCCCCCCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0DDDD
+        DDCCCCCCF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDCCCCCCC0C0C0C0C0C0DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0CCCCCCF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DD
+        DDDDF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDD999999B2B2B2DD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1C0C0C0DDDDDDFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1
+        CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1DDDDDDF1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCDDDDDDCCCCCCC0C0C0DDDDDD
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDF1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFF1F1F1F1F1
+        F1F1F1F1CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCC0
+        C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0CCCCCCF1F1F1DDDDDDF1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFCCCCCCCCCCCCCCCCCCFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDF1F1F1FFFFFF
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0F1F1
+        F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DDDDDD
+        C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDF1F1
+        F1F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1
+        F1F1F1F1F1FFFFFFDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1
+        F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDCCCCCCC0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCC
+        DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCDDDDDDC0C0C0CCCCCCB2B2B2F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+        DDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFCCCCCCF1F1F1FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFFFFDDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCC0C0C0DD
+        DDDDDDDDDDCCCCCCCCCCCC999999DDDDDDDDDDDDFFFFFFFFFFFFDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1FFFFFFDDDDDDDDDDDDF1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1DDDDDDDDDDDDF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDD
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1FFFF
+        FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DD
+        DDDDC0C0C0C0C0C0B2B2B2F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDC0C0C0
+        DDDDDDF1F1F1CCCCCCCCCCCCC0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1CCCCCCDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCCCCCC
+        CCDDDDDDF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDC0C0C0C0C0C0CCCCCCDDDDDDCCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1CCCCCCFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFC0C0C0F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        CCCCCCDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1C0C0C0F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDDDDDDDF1F1F1
+        FFFFFFFFFFFFF1F1F1CCCCCCC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFF
+        FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1DDDDDDDDDDDDDD
+        DDDDDDDDDDF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCCCCCC
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000F1F1F1
+        FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF8000008000
+        00800000800000800000800000800000800000800000FFFFFFC0C0C0DDDDDDCC
+        CCCCDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1800000
+        800000800000DDDDDDCCCCCCC0C0C0C0C0C0DDDDDD0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDDD
+        DDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFF
+        FFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF8000008000008000
+        00800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000800000800000800000800000800000800000DDDDDD
+        F1F1F1DDDDDDF1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1800000800000800000C0C0C0C0C0C0DDDDDDF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDCCCCCCF1F1F10000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDD0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFF800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        8000008000008000008000008000008000008000008000008000008000008000
+        00800000800000800000F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1F1F1F1800000800000800000800000CCCCCCFFFFFFFFFFFFF1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1FFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1C0C0C0CCCCCCF1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1FFFFFFDDDDDD0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCCC0C0C0F1F1F1DDDDDD800000800000800000800000FFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFCCCCCCDDDDDDCCCCCCDDDDDDC0C0C0DDDDDDFFFFFFFFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1DDDDDDCCCCCCB2B2B2C0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1CCCCCC0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDD
+        DDDDDDDDF1F1F1F1F1F1F1F1F1800000800000800000DDDDDDF1F1F1DDDDDDF1
+        F1F1F1F1F1800000800000800000800000F1F1F1DDDDDDDDDDDDDDDDDDFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1800000800000800000F1F1F1F1F1F1F1F1
+        F1DDDDDDDDDDDD999999B2B2B2F1F1F1DDDDDDDDDDDD800000800000800000FF
+        FFFFFFFFFFF1F1F1FFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFF1F1F1F1F1F1DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1F1F1F1F1F1
+        F10000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCC
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0CCCCCCC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F1800000800000800000DDDDDD
+        DDDDDDF1F1F1DDDDDD800000800000800000800000F1F1F1DDDDDDDDDDDDDDDD
+        DDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000F1F1F1C0C0C0B2B2B2DDDDDDFFFFFFFFFFFFFFFFFFF1F1F1800000800000
+        800000800000F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0
+        C0CCCCCCF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1CCCCCC999999CCCCCCF1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F18000008000
+        00800000C0C0C0CCCCCCC0C0C0C0C0C0800000800000800000F1F1F1DDDDDDDD
+        DDDDDDDDDDCCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        800000800000800000CCCCCCDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDD
+        DD800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDDDDDDDF1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0DDDDDDF1F1F1
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDD
+        DDDDDDCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F180
+        0000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFF800000800000800000
+        DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFF
+        FFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFCCCCCCC0
+        C0C0C0C0C0C0C0C0CCCCCC800000800000800000FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1DDDDDD0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDDDDDDDFFFF
+        FFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1DDDDDDFFFF
+        FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0CCCCCC0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1DDDDDDDDDDDDDDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFF800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD800000800000800000DDDDDDC0C0C0F1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFF1F1F1DDDDDDF1
+        F1F1FFFFFFF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0DD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDCCCCCCDDDDDD
+        DDDDDDF1F1F1CCCCCCCCCCCC0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1CCCCCCB2B2B2CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFF
+        F1F1F1FFFFFFFFFFFF800000800000800000800000800000800000F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF800000800000800000C0
+        C0C0FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCDDDDDDF1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FFFFFFFFFFFF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFF1F1F1DDDDDDDDDDDDDDDDDDDDDDDD800000800000800000FFFFFF
+        FFFFFFFFFFFFFFFFFFC0C0C0CCCCCCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCF1F1
+        F1FFFFFF800000800000800000800000800000800000800000800000DDDDDDDD
+        DDDDF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000
+        800000800000F1F1F1F1F1F1DDDDDDCCCCCCCCCCCCDDDDDDF1F1F1F1F1F10000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1F1F1F100
+        00FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDB2B2B2C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FFFFFFFFFFFFFFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDDF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FFCCCCCCCCCCCCDDDDDDCCCCCC8000008000008000
+        00FFFFFFFFFFFFFFFFFFF1F1F1C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFCCCCCCDD
+        DDDDF1F1F1800000800000800000800000800000800000800000800000800000
+        F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1
+        F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFF1F1F1
+        F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0C0C0C0DDDDDDFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDDDDDDDDDD
+        DDDDFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDDF1F1F180
+        0000800000800000800000F1F1F1DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFF1F1F1
+        8000008000008000008000008000008000008000008000008000008000008000
+        00F1F1F1FFFFFFF1F1F1B2B2B2C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFF1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000
+        FFF1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FFF1F1F1FFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0C0C0CCCCCCFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFF1F1F100
+        00FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FFF1F1F1F1F1F1
+        F1F1F1FFFFFF800000800000800000F1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1
+        F1F1F1F1800000800000800000800000800000800000800000800000F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FFFFFFF1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFCCCCCCC0C0C0C0C0C0F1F1F10000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1DDDDDDC0C0C0CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1CCCCCCFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF
+        0000FFFFFFFF0000FF0000FFFFFFFFFFFFFF0000FF0000FF0000FF0000FFF1F1
+        F1F1F1F1F1F1F1FFFFFF800000800000800000800000DDDDDDC0C0C0F1F1F1F1
+        F1F1F1F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFF1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000FF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1B2B2B2C0C0C0CCCCCCDDDDDD0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F10000FF0000FF0000FF0000FF0000
+        FF0000FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCCCCCCCF1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1DDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1DDDDDDCCCCCCC0C0C0F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F10000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000CCCCCC
+        F1F1F1F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1CCCCCCFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1800000800000
+        800000FFFFFFF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FF0000FFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1CCCCCC999999F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0FFFFFFDDDDDDDDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDD
+        DDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC0000FF00
+        00FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFF0000FF
+        0000FF0000FF0000FF0000FFF1F1F1DDDDDDDDDDDDCCCCCCDDDDDD8000008000
+        00F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFF800000800000800000F1F1F1F1
+        F1F1DDDDDDC0C0C0CCCCCCCCCCCCFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000
+        800000800000F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FF800000800000800000800000F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDD
+        DDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1
+        F1F1F1F1F1CCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1
+        F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFDDDDDDDDDDDDC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F10000FF0000FF0000FFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCF1F1F1FFFF
+        FFDDDDDDF1F1F1F1F1F10000FF0000FF0000FFB2B2B2C0C0C0DDDDDDF1F1F180
+        0000800000800000FFFFFFFFFFFFF1F1F1F1F1F1FFFFFF800000800000800000
+        800000DDDDDDB2B2B2CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCC
+        CC800000800000800000F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFF800000800000800000F1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDDDDDDDDCCCCCCCC
+        CCCCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFF
+        F1F1F1DDDDDDCCCCCCCCCCCCFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFC0C0C0C0C0C0B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F10000FF0000FF0000FF0000FF0000FF0000FF0000FFCCCCCCF1
+        F1F1F1F1F10000FF0000FF0000FF0000FF0000FF0000FFCCCCCCDDDDDDF1F1F1
+        F1F1F1800000800000800000800000FFFFFFF1F1F1FFFFFFFFFFFFF1F1F18000
+        00800000800000F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDD800000800000800000F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFF800000800000800000800000FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F10000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFDDDDDDDDDDDD
+        999999DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFF
+        FFF1F1F1F1F1F1CCCCCCB2B2B2DDDDDDFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FFF1F1F1FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFF800000800000800000FFFFFFFFFFFFFFFFFFF1
+        F1F1F1F1F1800000800000800000800000800000FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1800000800000800000800000FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDC0C0C0800000800000800000800000FF
+        FFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1
+        FFFFFF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFC0C0
+        C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1CCCCCCC0C0C0CC
+        CCCCFFFFFFF1F1F1F1F1F1C0C0C0DDDDDDFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FFFFFFFF0000FF0000FF0000FF0000FF0000FF0000FF00
+        00FF0000FFFFFFFFF1F1F1FFFFFFFFFFFF800000800000800000DDDDDDF1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F18000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000FFFFFFFFFFFFFF
+        FFFFFFFFFF800000800000800000800000800000800000800000800000800000
+        800000800000800000800000800000800000800000800000800000F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1B2B2B20000FF0000FF0000FF0000FF0000FF0000FF00
+        00FFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFCCCCCC999999B2B2B2
+        F1F1F1F1F1F1FFFFFFC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDDDDD
+        DDC0C0C0C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F10000FF0000FF00
+        00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF
+        0000FF0000FF0000FFFFFFFFF1F1F1DDDDDDF1F1F1DDDDDD8000008000008000
+        00DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F180000080000080000080
+        0000800000800000800000800000800000800000800000800000FFFFFFF1F1F1
+        F1F1F1FFFFFFFFFFFF8000008000008000008000008000008000008000008000
+        00800000800000800000800000800000800000800000800000800000800000F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1C0C0C00000FF0000FF0000FF0000FF0000FF
+        0000FF0000FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1B2B2B2CCCC
+        CCDDDDDDFFFFFFFFFFFFF1F1F1CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0DDDDDDCCCCCCCCCCCCC0C0C0C0C0C0B2
+        B2B2CCCCCCDDDDDDFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCDDDDDDF1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1CCCCCCCCCCCCFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1
+        0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+        FF0000FF0000FF0000FF0000FF0000FF0000FFF1F1F1F1F1F1DDDDDD80000080
+        0000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1DDDDDD800000800000800000800000800000800000800000FFFFFFF1F1
+        F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F180000080000080000080000080000080
+        0000800000800000800000800000800000800000800000800000800000800000
+        800000800000800000F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F10000FF0000
+        FF0000FF0000FF0000FFFFFFFFFFFFFFDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDCCCCCCF1F1F1F1
+        F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        C0C0C0F1F1F1F1F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1FFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FF
+        FFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCF1F1F1F1F1F1F1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1F1F1F1C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1F1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFF1F1F1DDDDDDFFFFFFFFFFFFFFFFFFDDDDDDDDDDDDDDDDDD
+        F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1CCCCCCC0C0C0F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFDDDDDDF1F1
+        F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1
+        F1F1DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC0C0C0DDDDDDF1F1F1
+        F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1DDDDDDC0C0C0F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1
+        F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDDDDF1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDC0C0C0DDDDDDC0C0C0DDDDDDFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDD
+        DDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1
+        F1F1DDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        C0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCDDDD
+        DDF1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1DDDDDDF1F1F1F1
+        F1F1C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FFFFFF
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDC0C0C0F1
+        F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFC0C0
+        C0CCCCCCCCCCCCDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1
+        F1F1F1F1F1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1C0C0C0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFF
+        FFFFFFF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1DDDDDDDDDDDDDDDDDDC0C0C0CCCC
+        CCCCCCCCCCCCCCF1F1F1DDDDDDDDDDDDF1F1F1F1F1F1F1F1F1DDDDDDDDDDDDCC
+        CCCCF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDDDDDDDD
+        DDDDDDDDDDDDC0C0C0DDDDDDF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1
+        F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C00000C0C0
+        C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1
+        F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1CCCCCC
+        DDDDDDC0C0C0CCCCCCDDDDDDC0C0C0C0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDDDDDDDDDD
+        DDDDF1F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        FFFFFFF1F1F1F1F1F1DDDDDDC0C0C0DDDDDDF1F1F1F1F1F1FFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFC0C0C0CCCCCCF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0DDDDDDDD
+        DDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1DDDDDD
+        DDDDDDDDDDDDDDDDDDFFFFFFF1F1F1FFFFFFFFFFFFDDDDDDDDDDDDF1F1F1F1F1
+        F1DDDDDDCCCCCCDDDDDDDDDDDDF1F1F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FF
+        FFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCDDDDDDF1F1F1
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDD
+        DDCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0C0C0C0C0
+        0000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1
+        F1F1F1F1F1F1DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1
+        F1DDDDDDCCCCCCC0C0C0DDDDDDCCCCCCC0C0C0CCCCCCF1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1DDDDDD
+        CCCCCCC0C0C0DDDDDDCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1FFFFFFF1F1F1DDDDDDC0C0C0CCCCCCF1F1F1F1F1F1FFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFF1F1F1DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1DDDDDD
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1DDDDDDDDDDDDDDDDDDDDDDDDF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1CCCCCCDDDDDDF1F1F1F1F1F1FFFFFFF1F1F1FFFFFFF1F1F1F1F1F1
+        F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1B2B2B2CCCC
+        CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1
+        F1F1DDDDDDC0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0C0C0
+        C0C0C0C00000C0C0C0C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1
+        F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1FFFFFFF1F1F1FF
+        FFFFF1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFF1F1F1F1F1F1DDDDDDC0C0C0CCCCCCF1F1F1DDDD
+        DDC0C0C0DDDDDDF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1
+        F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFF1F1F1DD
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDF1F1F1DDDDDDCCCCCCDDDDDDF1F1F1FFFFFF
+        FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1FFFFFFFFFFFFF1F1F1DDDD
+        DDF1F1F1FFFFFFFFFFFFF1F1F1DDDDDDF1F1F1FFFFFFF1F1F1DDDDDDCCCCCCDD
+        DDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        DDDDDDCCCCCCB2B2B2C0C0C0FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CCCCCCC0
+        C0C0C0C0C0C0C0C00000C0C0C0C0C0C0F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFF1F1F1F1F1F1FFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFF1F1F1F1F1F1DDDDDDCCCCCCCCCCCCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1CC
+        CCCCCCCCCCC0C0C0F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1F1F1F1FFFF
+        FFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1
+        DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCC0C0C0CCCCCCDDDDDDF1F1F1F1F1
+        F1FFFFFFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1
+        F1F1F1F1F1FFFFFFFFFFFFDDDDDDCCCCCCCCCCCCF1F1F1FFFFFFFFFFFFF1F1F1
+        F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFF1F1F1FFFFFFFFFFFFFFFFFFFF
+        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1F1F1F1DDDDDDDDDDDDC0C0C0
+        CCCCCCC0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+        C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00000}
+      Stretch = True
+      IsControl = True
+    end
+    object lblProductName: TLabel
+      Left = 5
+      Top = 80
+      Width = 68
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Product Name'
+      IsControl = True
+    end
+    object lblVersion: TLabel
+      Left = 8
+      Top = 160
+      Width = 74
+      Height = 13
+      Caption = 'Version: 1.1.1.1'
+      IsControl = True
+    end
+    object lblGovStatement: TLabel
+      Left = 5
+      Top = 96
+      Width = 231
+      Height = 13
+      Alignment = taCenter
+      Caption = 'Developed by the Department of Veterans Affairs'
+      IsControl = True
+    end
+    object lblCRC: TLabel
+      Left = 232
+      Top = 160
+      Width = 92
+      Height = 13
+      Caption = 'CRC: DDDDDDDD'
+    end
+    object lblDate: TLabel
+      Left = 97
+      Top = 160
+      Width = 82
+      Height = 13
+      Alignment = taCenter
+      Caption = 'January 30, 2000'
+    end
+    object ProgramIcon: TImage
+      Left = 176
+      Top = 8
+      Width = 145
+      Height = 73
+    end
+    object Memo1: TMemo
+      Left = 8
+      Top = 112
+      Width = 321
+      Height = 49
+      BorderStyle = bsNone
+      Lines.Strings = (
+        'Unauthorized access or use of this system and/or its data is a '
+        
+          'federal crime.  Use of all data must be in accordance with VA po' +
+          'licy '
+        'on security and privacy.')
+      ParentColor = True
+      TabOrder = 0
+    end
+  end
+  object OKButton: TButton
+    Left = 139
+    Top = 204
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/frmVistAAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/frmVistAAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/frmVistAAbout.pas	(revision 1676)
@@ -0,0 +1,278 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Wally Fort, Joel Ivey
+	Description: Generic About form, simply call ShowAboutBox.
+	             Includes display of date, CRC32, and info from
+	             Program Info.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit frmVistAAbout;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ExtCtrls, jpeg, jconsts, Dialogs;
+
+TYPE
+  TInteger8 = Int64;
+
+type
+  TfrmVistAAbout = class(TForm)
+    Panel1: TPanel;
+    VistaLogo: TImage;
+    lblProductName: TLabel;
+    lblVersion: TLabel;
+    lblGovStatement: TLabel;
+    OKButton: TButton;
+    lblCRC: TLabel;
+    Memo1: TMemo;
+    lblDate: TLabel;
+    ProgramIcon: TImage;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  procedure getfileinfo(var Version: String; var ProductName: String); virtual;
+  end;
+
+procedure ShowAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+  CONST
+    table:  ARRAY[0..255] OF DWORD =
+   ($00000000, $77073096, $EE0E612C, $990951BA,
+    $076DC419, $706AF48F, $E963A535, $9E6495A3,
+    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,
+    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,
+    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,
+    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,
+    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,
+    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116,
+    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,
+    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+
+    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,
+    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,
+    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,
+    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,
+    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,
+    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,
+    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086,
+    $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,
+    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+
+    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,
+    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,
+    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,
+    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,
+    $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,
+    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,
+    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,
+    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,
+    $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,
+    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+
+    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,
+    $9C0906A9, $EB0E363F, $72076785, $05005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,
+    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,
+    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,
+    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,
+    $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,
+    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,
+    $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,
+    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+  // Use CalcCRC32 as a procedure so CRCValue can be passed in but
+  // also returned.  This allows multiple calls to CalcCRC32 for
+  // the "same" CRC-32 calculation.
+  PROCEDURE CalcCRC32 (p:  pointer; ByteCount:  DWORD; VAR CRCValue:  DWORD);
+    // The following is a little cryptic (but executes very quickly).
+    // The algorithm is as follows:
+    //  1.  exclusive-or the input byte with the low-order byte of
+    //      the CRC register to get an INDEX
+    //  2.  shift the CRC register eight bits to the right
+    //  3.  exclusive-or the CRC register with the contents of
+    //      Table[INDEX]
+    //  4.  repeat steps 1 through 3 for all bytes
+
+   VAR
+    i:  DWORD;
+    q:  ^BYTE;
+  BEGIN
+    q := p;
+    FOR   i := 0 TO ByteCount-1 DO BEGIN
+      CRCvalue := (CRCvalue SHR 8)  XOR
+                  Table[ q^ XOR (CRCvalue AND $000000FF) ];
+      INC(q)
+    END
+  END {CalcCRC32};
+
+
+  // The CRC-32 value calculated here matches the one from the PKZIP program.
+  // Use MemoryStream to read file in binary mode.
+  PROCEDURE CalcFileCRC32 (FromName:  STRING; VAR CRCvalue:  DWORD;
+            VAR TotalBytes:  TInteger8;
+            VAR error:  WORD);
+    VAR
+      Stream:  TMemoryStream;
+  BEGIN
+    error := 0;
+    CRCValue := $FFFFFFFF;
+    Stream := TMemoryStream.Create;
+    TRY
+      TRY
+        Stream.LoadFromFile(FromName);
+        IF   Stream.Size > 0
+        THEN CalcCRC32 (Stream.Memory, Stream.Size, CRCvalue)
+      EXCEPT
+        ON E: EReadError DO
+         error := 1
+      END;
+
+      CRCvalue := NOT CRCvalue;
+      TotalBytes := Stream.Size
+    FINALLY
+      Stream.Free
+    END;
+  END {CalcFileCRC32};
+
+procedure TfrmVistAAbout.FormCreate(Sender: TObject);
+var
+  CRC32: DWord;
+  TotalBytes: Int64;
+  Error: Word;
+  Text: String;
+  Version: String;
+  ProductName: String;
+begin
+  CalcFileCRC32(Application.ExeName, CRC32, TotalBytes, Error);
+  lblCRC.Caption := 'CRC: ' + IntToHex(CRC32,8);
+  Text := Application.ExeName;
+  while pos('\',Text) > 0 do
+  begin
+    Text := copy(Text,pos('\',Text)+1,Length(Text));
+  end;    // while
+  Text := copy(Text,1,Length(Text)-4);
+  Caption := 'About ' + Text;
+  getfileinfo(Version, ProductName);
+  lblProductName.Caption := ProductName;
+  lblVersion.Caption := 'Version: ' + Version;
+  lblProductName.Width := Panel1.Width-10;
+  lblGovStatement.Width := Panel1.Width-10;
+  if ProgramIcon.Picture.Graphic = nil then
+  begin
+    VistALogo.Left := (Panel1.Width - VistALogo.Width) div 2;
+  end;
+end;
+
+procedure TfrmVistAAbout.GetFileInfo(var Version: String; var ProductName: String);
+var
+  VerInfoSize: DWORD;         // holds the size of the version info resource
+  GetInfoSizeJunk: DWORD;     // a junk variable, its value is ignored
+  VersionInfo: Pointer;       // points to the version info resource
+  Translation: Pointer;       // holds version info translation table
+  InfoPointer: Pointer;       // a pointer to version information
+
+  VersionInfoSize: UINT;      // holds the size of version information
+  VersionValue: string;       // holds the version info request string
+  SearchRec: TSearchRec;
+  DateTimeVal: TDateTime;
+  WriteTime: Integer;
+begin
+  {retrieve the size of the version information resource, if one exists}
+  VerInfoSize := GetFileVersionInfoSize(PChar(Application.ExeName),
+                                        GetInfoSizeJunk);
+
+  {if there was a version information resource available...}
+
+  if VerInfoSize>0 then
+  begin
+    {retrieve enough memory to hold the version resource}
+    GetMem(VersionInfo, VerInfoSize);
+
+    {retrieve the version resource for the selected file}
+    GetFileVersionInfo(PChar(Application.ExeName), 0,
+                       VerInfoSize, VersionInfo);
+
+    {retrieve a pointer to the translation table}
+    VerQueryValue(VersionInfo, '\\VarFileInfo\\Translation',
+                  Translation, VersionInfoSize);
+
+    {initialize the version value request string}
+    VersionValue :='\\StringFileInfo\\'+
+                  IntToHex(LoWord(LongInt(Translation^)),4)+
+                  IntToHex(HiWord(LongInt(Translation^)),4)+
+                  '\\';
+
+    {retrieve and display the file version}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'FileVersion'), InfoPointer,
+                  VersionInfoSize);
+    Version := string(PChar(InfoPointer));
+
+    {retrieve and display the product name}
+    VerQueryValue(VersionInfo, PChar(VersionValue+'ProductName'), InfoPointer,
+                  VersionInfoSize);
+    ProductName := string(PChar(InfoPointer));
+
+    {free the version resource memory}
+    FreeMem(VersionInfo, VerInfoSize);
+  end
+  else
+  begin
+  Version := 'Not in File';
+  ProductName := 'Not Identified In File';
+  end;
+  if findfirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
+  begin
+    WriteTime := SearchRec.Time;
+    DateTimeVal := FileDateToDateTime(WriteTime);
+    lblDate.Caption := FormatDateTime('mmmm dd, yyyy hh:nn',DateTimeVal);
+  end;
+end;
+
+procedure ShowAboutBox;
+begin
+  with TfrmVistAAbout.Create(Application) do
+    try
+      ShowModal;
+    finally
+      free;
+    end;
+end;
+
+end.
+ 
+ 
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.dof	(revision 1676)
@@ -0,0 +1,82 @@
+[Compiler]
+A=1
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VistA SharedBroker2 test
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=Vcl50;Vclx50;Vcldb50;Vclbde50;VclSmp50;vclado50;ibevnt50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;JLITestFDE;Rz252N50;Rz252D50;CS20Comps50;CSP20I50;gmunitsd5;gmctrlsd5;gmchrtedd5;gmdaouid5;GMDaod5;gmdbgend5;gmdbctrld5;gmadouid5;GMAdod5;democomponentsd5;XUtilsR50;XUDT_R50;XU_R50;Indy50;XWB_R50
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.dpk	(revision 1676)
@@ -0,0 +1,34 @@
+package uSharedBroker1;
+
+{$R *.RES}
+{$ALIGN ON}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VistA SharedBroker2 test'}
+{$IMPLICITBUILD OFF}
+
+requires
+  vcl50;
+
+contains
+  uSharedBroker1 in 'uSharedBroker1.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/uSharedBroker1.pas	(revision 1676)
@@ -0,0 +1,2127 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Kevin Meldrum, Travis Hilton, Joel Ivey
+	Description: SharedBroker functionality for the 
+	             RPCSharedBrokerSessionMgr1.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit uSharedBroker1;
+
+interface
+
+uses
+  Windows, ComObj, ActiveX, AxCtrls, Classes, RPCSharedBrokerSessionMgr1_TLB, StdVcl,
+  Trpcb;
+
+const
+  kMilliSecondScale: double = 1000;
+  kCloseAllClientsWaitTimeDefault: double = 10 * 1000; // In milliseconds
+  kMillisecondTicksPerSecond: Extended = 1000;
+
+type
+  // RPCCallHistoryEntry contains the call name, params, results and other
+  // info regarding a single rpc call. It is using in passing rpc info
+  // around the history
+  RPCCallHistoryEntry = class
+  private
+    FBrokerContext:   WideString;    // Context in which the RPC call was made
+    FRpcName:         WideString;    // M name of the RPC call
+    FParams:          WideString;    // M parameters to the RPC call
+    FResults:         WideString;    // results of the call
+    FStartDateTime:   Double;        // time/date just before the call was made
+    FDurationInMS:    Longword;      // duration of the RPC in milliseconds
+    FUniqueRPCCallId: Longword;      // Unique RPC call id
+    FUniqueClientId:  Integer;       // The client that made the RPC
+
+  public
+    constructor Create; overload;
+    constructor Create(context:WideString;
+                       name:WideString;
+                       params:WideString;
+                       results:WideString;
+                       startDateTime:Double;
+                       durationInMS:Longword;
+                       clientId:Integer); overload;
+
+    property CallContext:WideString        read FBrokerContext   write FBrokerContext;
+    property CallName:WideString           read FRpcName         write FRpcName;
+    property CallParams:WideString         read FParams          write FParams;
+    property CallResults:WideString        read FResults         write FResults;
+    property CallStartDateTime:Double      read FStartDateTime   write FStartDateTime;
+    property CallDurationInMS:Longword     read FDurationInMS    write FDurationInMS;
+    property UniqueRPCCallId:longword      read FUniqueRPCCallId write FUniqueRPCCallId;
+    property BrokerUniqueClientId:Integer  read FUniqueClientId  write FUniqueClientId;
+  end;
+
+  RPCCallHistoryEntryPointer = ^RPCCallHistoryEntry;
+
+  // RPCCallHistory keeps track of RPCs and their Results. The end data/time and
+  // duration of the call in milliseconds is recorded. The uniqueRPCId of the
+  // call is recorded as well.
+  RPCCallHistory = class(TList)
+    constructor Create; overload;
+  private
+    FEnabled: boolean;
+
+  public
+    function    Add(entry: RPCCallHistoryEntry): Integer; reintroduce; overload;
+    property    Enabled: boolean read FEnabled write FEnabled;
+    function    GetRPCCallEntryPtr(uniqueRpcId:Longword;
+                                   out rpcEntryPtr:RPCCallHistoryEntryPointer)
+                                   : ISharedBrokerErrorCode;
+    function    GetRPCCallEntryPtrFromIndex(rpcCallIndex:Integer;
+                                   out rpcEntryPtr:RPCCallHistoryEntryPointer)
+                                   : ISharedBrokerErrorCode;
+    function    GetRPCCallClientId(uniqueRpcId:Integer;
+                                   out uniqueClientId:Integer)
+                                   : ISharedBrokerErrorCode;
+  end;
+
+  // Every TSharedBroker contains a reference to a TBrokerConnection.
+  // The TBrokerConnection contains an actual instance to to a TRPCBroker
+  // This is where the connection sharing takes place
+  TBrokerConnection = class
+  private
+    FBroker:            TRPCBroker;
+    FShared:            Boolean;
+    FServerIP:          string;
+    FServer:            string;
+    FPort:              Integer;
+    FRefCount:          Integer;
+    FLastContext:       WideString;
+    FConnectionIndex:   Integer;
+  end;
+
+  TSharedBroker = class(TAutoObject, IConnectionPointContainer, ISharedBroker)
+  private
+    { Private declarations }
+    FConnectionPoints: TConnectionPoints;
+//    FConnectionPoint: TConnectionPoint;
+//    FSinkList: TList;
+    FEvents: ISharedBrokerEvents;
+
+    FBrokerConnection:    TBrokerConnection;
+    FBrokerContext:       WideString;
+    FClientName:          WideString;
+    FUniqueClientId:      Longword;
+    FRpcCallHistory:      RPCCallHistory;
+    FConnectType:         ISharedBrokerClient;
+    FInGeneralClientList: Boolean;
+//    FShowErrorMsgs:       ISharedBrokerShowErrorMsgs;
+
+    procedure DoDisconnect;
+
+  public
+    Destructor Destroy; override;
+    procedure Initialize; override;
+    function GetEnumerator: IEnumConnections;
+    function GetConnectionIndex: Integer;
+  public
+    { Protected declarations }
+    property ConnectionPoints: TConnectionPoints read FConnectionPoints
+      implements IConnectionPointContainer;
+    procedure EventSinkChanged(const EventSink: IUnknown); override;
+    function BrokerConnect(const ClientName: WideString;
+      ConnectionType: ISharedBrokerClient; const ServerPort: WideString;
+      WantDebug, AllowShared, KernelLoginVal: WordBool;
+      ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT;
+      var LoginStr: WideString; out UniqueClientIId: SYSINT;
+      out ErrorMsg: WideString): ISharedBrokerErrorCode; safecall;
+    function BrokerCall(const RpcName, RpcParams: WideString;
+      RpcTimeLimit: Integer; out RpcResults: WideString;
+      out UniqueRpcCallId: Integer): ISharedBrokerErrorCode; safecall;
+    function BrokerDisconnect: ISharedBrokerErrorCode; safecall;
+    function BrokerSetContext(
+      const OptionName: WideString): ISharedBrokerErrorCode; safecall;
+    function ReadRegDataDefault(Root: IRegistryRootEnum; const Key, Name,
+      Default: WideString;
+      out RegResult: WideString): ISharedBrokerErrorCode; safecall;
+    function Get_PerClientRpcHistoryLimit: Integer; safecall;
+    function Get_RpcHistoryEnabled: WordBool; safecall;
+    function Get_RpcVersion: WideString; safecall;
+    procedure Set_PerClientRpcHistoryLimit(limit: Integer); safecall;
+    procedure Set_RpcHistoryEnabled(enabled: WordBool); safecall;
+    procedure Set_RpcVersion(const version: WideString); safecall;
+    function GetActiveBrokerConnectionIndexCount(
+      out connectionIndexCount: Integer): ISharedBrokerErrorCode; safecall;
+    function GetActiveBrokerConnectionIndexFromUniqueClientId(
+      uniqueClientId: Integer;
+      out connectionIndex: Integer): ISharedBrokerErrorCode; safecall;
+    function GetActiveBrokerConnectionInfo(connectionIndex: Integer;
+      out connectedServerIp: WideString; out connectedServerPort: Integer;
+      out lastContext: WideString): ISharedBrokerErrorCode; safecall;
+    function GetClientIdAndNameFromIndex(clientIndex: Integer;
+      out uniqueClientId: Integer;
+      out clientName: WideString): ISharedBrokerErrorCode; safecall;
+    function GetClientNameFromUniqueClientId(uniqueClientId: Integer;
+      out clientName: WideString): ISharedBrokerErrorCode; safecall;
+    function GetRpcHistoryCountForClient(uniqueClientId: Integer;
+      out rpcHistoryCount: Integer): ISharedBrokerErrorCode; safecall;
+    function LogoutConnectedClients(
+      logoutTimeLimit: Integer): ISharedBrokerErrorCode; safecall;
+    function GetRpcCallFromHistoryIndex(uniqueClientId, rpcCallIndex: Integer;
+      out uniqueRpcId: Integer; out brokerContext, rpcName, rpcParams,
+      rpcResult: WideString; out rpcStartDateTime: Double;
+      out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function GetRpcClientIdFromHistory(uniqueRpcId: Integer;
+      out uniqueClientId: Integer;
+      out clientName: WideString): ISharedBrokerErrorCode; safecall;
+    function GetConnectedClientCount(
+      out connectedClientCount: Integer): ISharedBrokerErrorCode; safecall;
+    function GetRpcCallFromHistory(uniqueRpcId: Integer;
+      out uniqueClientId: Integer; out brokerContext, rpcName, rpcParams,
+      rpcResult: WideString; out rpcStartDateTime: Double;
+      out rpcDuration: Integer): ISharedBrokerErrorCode; safecall;
+    function Get_CurrentContext: WideString; safecall;
+    function Get_KernelLogin: WordBool; safecall;
+    function Get_Login: WideString; safecall;
+    function Get_RpcbError: WideString; safecall;
+    function Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs; safecall;
+    function Get_Socket: Integer; safecall;
+    function Get_User: WideString; safecall;
+    procedure Set_KernelLogin(Value: WordBool); safecall;
+    procedure Set_Login(const Value: WideString); safecall;
+    procedure Set_ShowErrorMsgs(Value: ISharedBrokerShowErrorMsgs); safecall;
+
+    property ClientName: WideString read FClientName write FClientName;
+    property BrokerUniqueClientId: Longword read FUniqueClientId write FUniqueClientId;
+    property RpcHistory: RPCCallHistory read FRpcCallHistory ;
+    property ConnectType: ISharedBrokerClient read FConnectType write FConnectType;
+    property BrokerConnectionIndex: Integer read GetConnectionIndex;
+  end;
+
+  // TSharedBrokerClientMgr is used as a global container to manage all of the clients of the shared broker
+  // There is a single global instance of this class allocated below called ClientMgr;
+  // Other classes within the RPCSharedBrokerSessionMgr can get at the client information through ClientMgr;
+  // All new Send event methods should be implemented here.
+  TSharedBrokerClientMgr = class
+  private
+    FAllConnections: TList;             // The list of unique ServerPort/Shared actual connections
+    FAllConnectedClients: TList;        // All Clients connected through a broker connection
+                                        // are added to this list
+    FAllClients: TList;                 // Any TSharedBroker is added to this list
+    FNextRpcUniqueId: Longword;
+    FRpcCallHistoryEnabled: boolean;
+    FPerClientRpcHistoryLimit: integer;
+    FNoClientsHaveConnectedYet: boolean;
+    FInProcessOfLoggingOutClients: boolean;
+    FCloseAllClientsWaitTime : Double;
+    FKillClientsStartedTime : Int64;
+    FKillClientsCountdownStarted : boolean;
+
+    procedure SetRpcCallHistoryEnabled(enabled: boolean);
+
+  public
+    constructor Create;
+    destructor  Destroy; override;
+
+    // event procedures
+    // SendOnLogout sends the OnLogout event to all attached event controllers.
+    // Messages are sent to both DebuggerClient and BrokerClient types
+    procedure SendOnLogout;
+
+    // SendOnRpcCallRecorded is only sent to DebuggerClient type connections
+    // when any RPC call completes. The unique RPC id of the RPC is sent
+    // as a parameter
+    procedure SendOnRpcCallRecorded(uniqueRpcId: Longword);
+
+    // SendOnClientConnect is only sent to DebuggerClient type connections
+    // when any client successfully connects. The unique Id of that
+    // client is passed as a parameter
+    procedure SendOnClientConnect(uniqueClientId: Integer; connection: ISharedBrokerConnection);
+
+    // SendOnClientDisconnect is only sent to DebuggerClient type connections
+    // when any client disconnects. The unique Id of that
+    // client is passed as a parameter
+    procedure SendOnClientDisconnect(uniqueClientId: Integer);
+
+    // SendOnContextChanged calls the OnContextChanged event handlers on DebbugerClient type
+    // connections.
+    procedure SendOnContextChanged(connectionIndex: Integer; newContext: WideString);
+
+    // SendOnConnectionDropped (or other WSA___ error) calls the OnConnectionDropped event
+    // handlers for DebuggerClient type and for BrokerClient types on the connection that encountered the error.
+    procedure SendOnConnectionDropped(RPCBroker: TRPCBroker; ErrorText: String);
+
+    // Connected Client management mmethods
+    procedure CloseAllClients(maxWaitTime: Integer); // Wait time is in seconds
+    procedure CheckDisconnectWaitTimeAndShutdownClients;
+    procedure ListAllConnectedClients(AList: TStrings);
+    procedure AddConnectedBrokerClient(broker: TSharedBroker);
+    procedure RemoveConnectedBrokerClient(broker: TSharedBroker);
+    function  ConnectedClientCount : integer;
+
+    // General Client management methods
+    procedure AddToGeneralClientList(broker: TSharedBroker);
+    procedure RemoveFromGeneralClientList(broker: TSharedBroker);
+    function  GeneralClientCount:Integer;
+
+    property AllConnections: TList read FAllConnections write FAllConnections;
+    property NoClientsHaveConnectedYet: Boolean read FNoClientsHaveConnectedYet write FNoClientsHaveConnectedYet;
+
+    // General Methods
+    function Piece(const S: string; Delim: char; PieceNum: Integer): string;
+
+    // Methods for RPC history
+    function GetNextRpcUniqueId: Longword;
+    property RpcCallHistoryEnabled: boolean read FRpcCallHistoryEnabled write SetRpcCallHistoryEnabled;
+    property PerClientRpcHistoryLimit: integer read FPerClientRpcHistoryLimit write FPerClientRpcHistoryLimit;
+
+    function GetRpcCallEntryPtrFromHistory(uniqueRpcId: Longword;
+                                 out rpcEntryPtr: RPCCallHistoryEntryPointer)
+                                 : ISharedBrokerErrorCode;
+
+    function GetRpcCallEntryPtrFromHistoryIndex(uniqueClientId: Longword;
+                                 rpcCallIndex: Integer;
+                                 out rpcEntryPtr: RPCCallHistoryEntryPointer)
+                                 : ISharedBrokerErrorCode;
+
+    function GetRpcClientIdFromHistory(uniqueRpcId: Integer;
+                                 out uniqueClientId: Integer;
+                                 out clientName: WideString)
+                                 : ISharedBrokerErrorCode;
+
+    function GetRpcHistoryCountForClient(uniqueClientId: Integer;
+                                 out rpcCount: Integer)
+                                 : ISharedBrokerErrorCode;
+
+    function GetClientIdAndNameFromIndex(clientIndex: Integer;
+                                 out uniqueClientId: Integer;
+                                 out clientName: WideString)
+                                 : ISharedBrokerErrorCode;
+
+    function GetClientNameFromUniqueClientId(uniqueClientId: Integer;
+                                 out clientName: WideString)
+                                 : ISharedBrokerErrorCode;
+
+    function GetActiveBrokerConnectionIndexFromUniqueClientId(uniqueClientId: Integer;
+                                 out connectionIndex: Integer)
+                                 : ISharedBrokerErrorCode;
+
+    procedure OnIdleEventHandler(Sender: TObject; var Done: Boolean);
+
+    property InProcessOfLoggingOutClients: boolean read FInProcessOfLoggingOutClients write FInProcessOfLoggingOutClients;
+    property CloseAllClientsWaitTime: Double read FCloseAllClientsWaitTime write FCloseAllClientsWaitTime;
+    
+  end;
+
+  function GetPerformanceCounterTimeInMS: Int64;
+
+
+var
+  ClientMgr: TSharedBrokerClientMgr;
+
+implementation
+
+//uses ComServ;
+uses Messages, ComServ, SysUtils, Forms, {lmdnonvs,} Math, XWBut1,
+     syncobjs, Rpcconf1, MfunStr;
+
+const
+  kUniqueClientIdDefault: Longword = 0;
+  kClientNameDefault: string = 'UNNAMED';
+  kNextRpcUniqueIdInitialValue: Longword = 1; // Start numbering at 1
+  kRpcCallHistoryEnabledDefault: boolean = false;
+  kPerClientRpcHistoryLimitDefault: integer = 10;
+  kUnassignedString: string = 'UNASSIGNED';
+  kNoneString: string = 'NONE';
+
+procedure SetBrokerLogin(Str: String; Broker: TRPCBroker);
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+var
+  StrFS, StrGS: String;
+  DivLst: String;
+  ModeVal: String;
+
+  function TorF(Value: String): Boolean;
+  begin
+    Result := False;
+    if Value = '1' then
+      Result := True;
+  end;
+
+begin
+    with Broker.Login do
+    begin
+      StrFS := SEP_FS;
+      StrGS := SEP_GS;
+      LoginHandle := Piece(Str,StrFS,1);
+      NTToken := Piece(Str,StrFS,2);
+      AccessCode := Piece(Str,StrFS,3);
+      VerifyCode := Piece(Str,StrFS,4);
+      Division := Piece(Str,StrFS,5);
+      ModeVal := Piece(Str,StrFS,6);
+      DivLst := Piece(Str,StrFS,7);
+      MultiDivision := TorF(Piece(Str,StrFS,8));
+      DUZ := Piece(Str,StrFS,9);
+      PromptDivision := TorF(Piece(Str,StrFS,10));
+      ErrorText := Piece(Str,StrFS,11);
+      if ModeVal = '1' then
+        Mode := lmAVCodes
+      else if ModeVal = '2' then
+        Mode := lmAppHandle
+      else if ModeVal = '3' then
+        Mode := lmNTToken;
+    end;  // with
+end;
+
+function GetBrokerLogin(Broker: TRPCBroker): WideString;
+
+   function TorF1(Value: Boolean): String;
+   begin
+     Result := '0';
+     if Value then
+       Result := '1';
+   end;
+   
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+var
+  I: Integer;
+  Str: String;
+  ModeVal: String;
+  DivLst: String;
+  MultiDiv: String;
+  PromptDiv: String;
+  StrFS, StrGS: String;
+begin
+  Str := '';
+    with Broker.Login do
+    begin
+      StrFS := SEP_FS;
+      StrGS := SEP_GS;
+      ModeVal := '';
+      if Mode = lmAVCodes then
+        ModeVal := '1'
+      else if Mode = lmAppHandle then
+        ModeVal := '2'
+      else if Mode = lmNTToken then
+        ModeVal := '3';
+      DivLst := '';
+      for i := 0 to Pred(DivList.Count) do
+        DivLst := DivLst + DivList[i] + SEP_GS;
+      MultiDiv := TorF1(MultiDivision);
+      PromptDiv := TorF1(PromptDivision);
+      Str := LoginHandle + StrFS + NTToken + StrFS + AccessCode + StrFS;
+      Str := Str + VerifyCode + StrFS + Division + StrFS + ModeVal + StrFS;
+      Str := Str + DivLst + StrFS + MultiDiv + StrFS + DUZ + StrFS;
+      Str := Str + PromptDiv + StrFS + ErrorText + StrFS;
+    end;  // with
+  Result := Str;
+end;
+
+
+function GetPerformanceCounterTimeInMS: Int64;
+var
+  frequency: Int64;
+  performanceCount: Int64;
+  useNonPerformanceCounter: boolean;
+begin
+  useNonPerformanceCounter := false;
+  Result := 0;
+
+  if QueryPerformanceFrequency(frequency) then
+  begin
+    if frequency >= kMillisecondTicksPerSecond then
+    begin
+      if QueryPerformanceCounter(performanceCount) then
+      begin
+        Result := Trunc((performanceCount* kMillisecondTicksPerSecond)/frequency);
+      end else
+      begin
+        useNonPerformanceCounter := true;
+      end;
+    end else
+    begin
+      useNonPerformanceCounter := true;
+    end;
+  end else
+  begin
+    useNonPerformanceCounter := true;
+  end;
+
+  if useNonPerformanceCounter = true then
+    Result := GetTickCount;
+end;
+
+
+procedure TSharedBroker.EventSinkChanged(const EventSink: IUnknown);
+begin
+  FEvents := EventSink as ISharedBrokerEvents;
+end;
+
+function TSharedBroker.GetEnumerator: IEnumConnections;
+var
+  Container: IConnectionPointContainer;
+  ConnectionPoint: IConnectionPoint;
+begin
+  OleCheck(QueryInterface(IConnectionPointContainer,Container));
+  OleCheck(Container.FindConnectionPoint(AutoFactory.EventIID,ConnectionPoint));
+  ConnectionPoint.EnumConnections(Result);
+end;
+
+procedure TSharedBroker.Initialize;
+begin
+  inherited Initialize;
+  FConnectionPoints := TConnectionPoints.Create(Self);
+  FUniqueClientId := kUniqueClientIdDefault;
+  FClientName := kClientNameDefault;
+  FRpcCallHistory := RPCCallHistory.Create();
+
+  // Use this for multiple client connections to this server
+  if AutoFactory.EventTypeInfo <> nil then
+    FConnectionPoints.CreateConnectionPoint(
+      AutoFactory.EventIID, ckMulti, EventConnect);
+
+  // add both connected and non connected clients to the general client list
+  ClientMgr.AddToGeneralClientList(self);
+  FInGeneralClientList := true;
+
+end;
+
+
+destructor TSharedBroker.Destroy;
+begin
+  DoDisconnect;
+
+  FRpcCallHistory.Free;
+  FRpcCallHistory := nil;
+
+  inherited Destroy;
+
+  // Remove self from the general client list
+  if FInGeneralClientList = true then
+  begin
+    ClientMgr.RemoveFromGeneralClientList(self);
+    FInGeneralClientList := False;
+  end;
+end;
+
+{
+function TSharedBroker.BrokerConnect(const clientName: WideString;
+  connectionType: ISharedBrokerClient; const serverPort: WideString;
+  wantDebug, allowShared: WordBool; rpcTimeLimit: SYSINT;
+  out uniqueClientIId: SYSINT): ISharedBrokerErrorCode;
+}
+function TSharedBroker.BrokerConnect(const ClientName: WideString;
+  ConnectionType: ISharedBrokerClient; const ServerPort: WideString;
+  WantDebug, AllowShared, KernelLoginVal: WordBool;
+  ShowErrMsgs: ISharedBrokerShowErrorMsgs; RpcTimeLim: SYSINT;
+  var LoginStr: WideString; out UniqueClientIId: SYSINT;
+  out ErrorMsg: WideString): ISharedBrokerErrorCode;
+safecall;
+var
+  aBrokerConnection: TBrokerConnection;
+  i: Integer;
+  connectMessage : ISharedBrokerConnection;
+  serverIP,serverStr: string;
+  port: Integer;
+begin
+  Result := CouldNotConnect;
+  ErrorMsg := '';
+  connectMessage := Failed;
+
+  if connectionType = BrokerClient then
+  begin
+    // First separate out the server/port param into server and port strings
+    // next look up the serverIP from the server name.
+    // If valid proceed otherwise error.
+    serverStr := ClientMgr.Piece(serverPort, ':', 1);
+    // use a default for the port in case it is not sent in
+    port := StrToIntDef(ClientMgr.Piece(ServerPort, ':', 2), 9200);
+
+    serverIP := GetServerIP(serverStr);
+
+    aBrokerConnection := nil;
+    if AllowShared then
+      for i := 0 to Pred(ClientMgr.AllConnections.Count) do
+        // Compare against the server IP and the port since a server name
+        // is not unique.
+        if (TBrokerConnection(ClientMgr.AllConnections.Items[i]).FServerIP = serverIP) and
+//        if (TBrokerConnection(ClientMgr.AllConnections.Items[i]).FServerIP = serverStr) and
+           (TBrokerConnection(ClientMgr.AllConnections.Items[i]).FPort = port) and
+            TBrokerConnection(ClientMgr.AllConnections.Items[i]).FShared then
+              aBrokerConnection := TBrokerConnection(ClientMgr.AllConnections.Items[i]);
+
+    if aBrokerConnection = nil then
+    begin
+
+      aBrokerConnection := TBrokerConnection.Create;
+      aBrokerConnection.FBroker := TRPCBroker.Create(Application);
+      ConnectType := BrokerClient;
+
+      with aBrokerConnection.FBroker do
+      begin
+        ClearParameters := True;
+        ClearResults    := True;
+        DebugMode       := wantDebug;
+//        Server          := serverIP;
+        Server          := serverStr;
+        ListenerPort    := port;
+        RPCTimeLimit    := rpcTimeLim;
+        KernelLogin     := KernelLoginVal;
+        OnPulseError    := ClientMgr.SendOnConnectionDropped;
+        SetBrokerLogin(LoginStr, aBrokerConnection.FBroker);
+        if ShowErrMsgs = isemRaise then
+          ShowErrorMsgs := semRaise
+        else
+          ShowErrorMsgs := semQuiet; 
+        try
+          Connected       := True;
+          ErrorMsg := RPCBError;
+        except
+          ErrorMsg := RPCBError;
+        end;
+      end;
+
+      LoginStr := GetBrokerLogin(aBrokerConnection.FBroker);
+      aBrokerConnection.FShared          := allowShared;
+      aBrokerConnection.FServer          := serverStr;
+      aBrokerConnection.FPort            := port;
+      aBrokerConnection.FServerIP        := serverIP;
+      aBrokerConnection.FConnectionIndex := ClientMgr.AllConnections.Count;
+
+      if aBrokerConnection.FBroker.Connected = true then
+      begin
+        ClientMgr.AllConnections.Add(aBrokerConnection);
+        if aBrokerConnection.FShared then       // Set up for cleaning between RPC calls
+        begin
+          aBrokerConnection.FBroker.RemoteProcedure := 'XUS SET SHARED';
+          aBrokerConnection.FBroker.Param.Clear;
+          aBrokerConnection.FBroker.Call;
+        end;
+      end;
+
+      connectMessage := New;
+    end else
+    begin
+      connectMessage := Shared;
+    end;
+
+    if aBrokerConnection.FBroker.Connected then
+    begin
+      Result := Success;
+      Inc(aBrokerConnection.FRefCount);
+      FBrokerConnection     := aBrokerConnection;
+    end else
+    begin
+      connectMessage := Failed;
+      Result := CouldNotConnect;
+    end;
+    Set_RpcHistoryEnabled(ClientMgr.RpcCallHistoryEnabled);
+  end
+  else if connectionType = DebuggerClient then
+  begin
+    ConnectType := DebuggerClient;
+
+    // Debugger clients enable RPC history for Al clients by default
+    Set_RpcHistoryEnabled(true);
+
+    connectMessage := Debug;
+    Result := Success;
+  end;
+
+  FBrokerContext        := '';
+
+
+  FClientName           := clientName;          // The name passed in should be the name
+                                                // of the executable
+  BrokerUniqueClientId  := Longword(self);      // The self pointer is unique and could
+                                                // be dereference later on so use it.
+                                                // store it locally for quick access
+  uniqueClientIId       := BrokerUniqueClientId;// Put the unique client id back in
+                                                // the out param as well.
+
+  // Only add connected clients to the connected broker client list
+  if (Result = Success) and (ConnectType <> DebuggerClient)then
+  begin
+    ClientMgr.AddConnectedBrokerClient(self);
+
+    // Be sure to send the OnClientConnect message to any
+    // debugger clients
+    ClientMgr.SendOnClientConnect(BrokerUniqueClientId,connectMessage);
+  end;
+end;
+
+function TSharedBroker.BrokerSetContext(
+  const optionName: WideString): ISharedBrokerErrorCode;
+begin
+  // So don't set the context if it is already the same on
+  // on the current connection. Also store the new context
+  // in the connection.
+  Result := Success;
+  if FBrokerConnection.FLastContext <> optionName then
+  begin
+    if FBrokerConnection.FBroker.CreateContext(optionName) then
+    begin
+      FBrokerConnection.FLastContext := optionName;
+      FBrokerContext := optionName;
+      Result := Success;
+      ClientMgr.SendOnContextChanged(FBrokerConnection.FConnectionIndex,optionName);
+    end else
+    begin
+      Result := CouldNotSetContext;
+      FBrokerConnection.FLastContext := '';
+      FBrokerContext := '';
+    end;
+  end;
+end;
+
+function TSharedBroker.BrokerCall(const rpcName, rpcParams: WideString;
+  rpcTimeLimit: Integer; out rpcResults: WideString;
+  out uniqueRpcCallId: Integer): ISharedBrokerErrorCode;
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+  SEP_US = #30;
+  SEP_RS = #31;
+var
+  i, curStart, lengthOfrpcParams, endOfSegment: Integer;
+  aRef, aVal: string;
+  startTimeMS, timeElapsedMS: Int64;
+  currentDateTime: TDateTime;
+  rpcEntry: RPCCallHistoryEntry;
+
+  function PosNext(aChar: WideChar; startPos: Integer): Integer;
+  begin
+    Result := 0;
+    while (Result = 0) and (StartPos <= lengthOfrpcParams) do
+    begin
+      if rpcParams[StartPos] = aChar then Result := startPos;
+      Inc(startPos);
+    end;
+  end;
+
+begin
+  Result := Success;
+  rpcResults := '';
+  startTimeMS := 0;
+  currentDateTime := 0;
+
+  BrokerSetContext(FBrokerContext);
+
+  if Result <> Success then Exit;
+
+  // setup and make the RPC call
+  FBrokerConnection.FBroker.ClearParameters := True;
+  FBrokerConnection.FBroker.RemoteProcedure := rpcName;
+
+  // Set RPC timeout
+  FBrokerConnection.FBroker.RPCTimeLimit := rpcTimeLimit;
+
+  curStart := 1;
+  i := 0;
+  lengthOfrpcParams := Length(rpcParams);
+  while curStart < lengthOfrpcParams do
+  begin
+    case rpcParams[curStart] of
+    'L': FBrokerConnection.FBroker.Param[i].PType := literal;
+    'R': FBrokerConnection.FBroker.Param[i].PType := reference;
+    'M': FBrokerConnection.FBroker.Param[i].PType := list;
+    else FBrokerConnection.FBroker.Param[i].PType := undefined;
+    end;
+    Inc(curStart, 2);
+    if FBrokerConnection.FBroker.Param[i].PType = list then
+    begin
+//      endOfSegment := 0;
+      while rpcParams[curStart] <> SEP_GS do
+      begin
+        endOfSegment := PosNext(SEP_US, curStart);
+        aRef := Copy(rpcParams, curStart, endOfSegment - curStart);
+        curStart := endOfSegment + 1;
+        endOfSegment := PosNext(SEP_RS, curStart);
+        aVal := Copy(rpcParams, curStart, endOfSegment - curStart);
+        curStart := endOfSegment + 1;
+        FBrokerConnection.FBroker.Param[i].Mult[aRef] := aVal;
+      end; {while rpcParams}
+      {if endOfSegment = 0 then} endOfSegment := PosNext(SEP_GS, curStart);
+      curStart := endOfSegment + 1;
+    end else
+    begin
+      endOfSegment := PosNext(SEP_GS, curStart);
+      FBrokerConnection.FBroker.Param[i].Value :=
+        Copy(rpcParams, curStart, endOfSegment - curStart);
+      curStart := endOfSegment + 1;
+    end; {if Param[i].PType ... else}
+    Inc(i);
+  end; {while curStart}
+
+  if Get_RpcHistoryEnabled = true then
+  begin
+  // Get the current time and date of this call
+  // start the millisecond counter
+    startTimeMS := GetPerformanceCounterTimeInMS;
+    currentDateTime := Date;
+  end;
+
+  FBrokerConnection.FBroker.Call;
+
+  RPCResults := FBrokerConnection.FBroker.Results.Text;
+
+  if FBrokerConnection.FBroker.RPCBError <> '' then
+    Result := GeneralFailure;
+
+  if ClientMgr.RpcCallHistoryEnabled then
+  begin
+    timeElapsedMS := GetPerformanceCounterTimeInMS - startTimeMS;
+
+    rpcEntry :=  RPCCallHistoryEntry.Create(
+        FBrokerContext,
+        rpcName,
+        rpcParams,
+        RPCResults,
+        Double(currentDateTime),
+        Longword(timeElapsedMS),
+        BrokerUniqueClientId
+      );
+
+    RpcHistory.Add(rpcEntry);
+
+    // Now fire the event so any debugger connected can
+    // read it
+    ClientMgr.SendOnRpcCallRecorded(rpcEntry.UniqueRPCCallId);
+  end;
+end;
+
+procedure TSharedBroker.DoDisconnect;
+begin
+  if FBrokerConnection<>nil then
+  begin
+    Dec(FBrokerConnection.FRefCount);
+    if FBrokerConnection.FRefCount = 0 then
+    begin
+      if ConnectType = BrokerClient then
+        FBrokerConnection.FBroker.Destroy;
+
+      if ClientMgr <> nil then
+        ClientMgr.AllConnections.Remove(FBrokerConnection);
+
+      FBrokerConnection.Free;
+    end;
+
+   FBrokerConnection := nil;
+   FBrokerContext    := '';
+
+   if ConnectType <> DebuggerClient then
+   begin
+     ClientMgr.RemoveConnectedBrokerClient(Self);
+     // Send a message to all debugger clients that
+     // a non-debugger client has disconnected
+     ClientMgr.SendOnClientDisconnect(BrokerUniqueClientId);
+   end;
+ end;
+end;
+
+function TSharedBroker.BrokerDisconnect: ISharedBrokerErrorCode;
+begin
+  DoDisconnect;
+  Result := Success;
+end;
+
+function TSharedBroker.ReadRegDataDefault(Root: IRegistryRootEnum;
+  const Key, Name, Default: WideString;
+  out RegResult: WideString): ISharedBrokerErrorCode;
+var
+  marshalledRoot: LongWord;
+begin
+  // do a little data marshaling here
+  case Root of
+    IRegistryRootEnum(HKCR) : marshalledRoot := HKCR;
+    IRegistryRootEnum(HKCU) : marshalledRoot := HKCU;
+    IRegistryRootEnum(HKLM) : marshalledRoot := HKLM;
+    IRegistryRootEnum(HKU)  : marshalledRoot := HKU;
+    IRegistryRootEnum(HKCC) : marshalledRoot := HKCC;
+  else
+    marshalledRoot := HKDD;
+  end;
+
+  regResult := XWBut1.ReadRegDataDefault(marshalledRoot,key,name,default);
+  Result := Success;
+end;
+
+function TSharedBroker.Get_RpcVersion: WideString;
+begin
+  if FBrokerConnection <> nil then
+  begin
+    Result := FBrokerConnection.FBroker.RpcVersion;
+  end else
+  begin
+    // Don't know what else to make this if we don't actually have a TRPCBroker to ask
+    Result := '0';
+  end;
+end;
+
+procedure TSharedBroker.Set_RpcVersion(const version: WideString);
+begin
+  if FBrokerConnection <> nil then
+  begin
+    FBrokerConnection.FBroker.RpcVersion := version;
+  end
+end;
+
+function TSharedBroker.Get_PerClientRpcHistoryLimit: Integer;
+begin
+  Result := ClientMgr.PerClientRpcHistoryLimit;
+end;
+
+function TSharedBroker.Get_RpcHistoryEnabled: WordBool;
+begin
+  // If debugger client then operate on all of the clients
+  // else just operate on this one
+  if ConnectType = DebuggerClient then
+    Result := ClientMgr.RpcCallHistoryEnabled
+  else
+    Result := RpcHistory.Enabled;
+end;
+
+function TSharedBroker.GetConnectedClientCount(
+  out connectedClientCount: Integer): ISharedBrokerErrorCode;
+begin
+  connectedClientCount := ClientMgr.ConnectedClientCount;
+
+  Result := Success;
+end;
+
+function TSharedBroker.GetRpcCallFromHistory(uniqueRpcId: Integer;
+  out uniqueClientId: Integer; out brokerContext, rpcName, rpcParams,
+  rpcResult: WideString; out rpcStartDateTime: Double;
+  out rpcDuration: Integer): ISharedBrokerErrorCode;
+var
+  rpcEntryPtr: RPCCallHistoryEntryPointer;
+begin
+  Result := ClientMgr.GetRPCCallEntryPtrFromHistory(uniqueRpcId,rpcEntryPtr);
+
+  if Result = Success then
+  begin
+    uniqueClientId   := rpcEntryPtr^.BrokerUniqueClientId;
+    brokerContext    := rpcEntryPtr^.CallContext;
+    rpcName          := rpcEntryPtr^.CallName;
+    rpcParams        := rpcEntryPtr^.CallParams;
+    rpcResult        := rpcEntryPtr^.CallResults;
+    rpcStartDateTime := rpcEntryPtr^.CallStartDateTime;
+    rpcDuration      := rpcEntryPtr^.CallDurationInMS;
+  end else
+  begin
+    uniqueClientId   := 0;
+    brokerContext    := '';
+    rpcName          := '';
+    rpcParams        := '';
+    rpcResult        := '';
+    rpcStartDateTime := 0;
+    rpcDuration      := 0;
+  end;
+end;
+
+function TSharedBroker.GetRpcCallFromHistoryIndex(uniqueClientId,
+  rpcCallIndex: Integer; out uniqueRpcId: Integer; out brokerContext,
+  rpcName, rpcParams, rpcResult: WideString; out rpcStartDateTime: Double;
+  out rpcDuration: Integer): ISharedBrokerErrorCode;
+var
+  rpcEntryPtr: RPCCallHistoryEntryPointer;
+begin
+  Result := ClientMgr.GetRPCCallEntryPtrFromHistoryIndex(uniqueClientId,rpcCallIndex,rpcEntryPtr);
+
+  if Result = Success then
+  begin
+    uniqueRpcId      := rpcEntryPtr^.UniqueRPCCallId;
+    brokerContext    := rpcEntryPtr^.CallContext;
+    rpcName          := rpcEntryPtr^.CallName;
+    rpcParams        := rpcEntryPtr^.CallParams;
+    rpcResult        := rpcEntryPtr^.CallResults;
+    rpcStartDateTime := rpcEntryPtr^.CallStartDateTime;
+    rpcDuration      := rpcEntryPtr^.CallDurationInMS;
+  end else
+  begin
+    uniqueRpcId      := 0;
+    brokerContext    := '';
+    rpcName          := '';
+    rpcParams        := '';
+    rpcResult        := '';
+    rpcStartDateTime := 0;
+    rpcDuration      := 0;
+  end;
+end;
+
+
+function TSharedBroker.GetClientIdAndNameFromIndex(clientIndex: Integer;
+  out uniqueClientId: Integer;
+  out clientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := ClientMgr.GetClientIdAndNameFromIndex(clientIndex,uniqueClientId,clientName);
+  // Failure defaults are taken care of by ClientMgr.
+end;
+
+function TSharedBroker.GetRpcClientIdFromHistory(uniqueRpcId: Integer;
+  out uniqueClientId: Integer;
+  out clientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := ClientMgr.GetRPCClientIdFromHistory(uniqueRpcId,uniqueClientId,clientName);
+
+  if Result <> Success then
+  begin
+     uniqueClientId := 0;
+     clientName := '';
+  end;
+end;
+
+function TSharedBroker.GetRpcHistoryCountForClient(uniqueClientId: Integer;
+  out rpcHistoryCount: Integer): ISharedBrokerErrorCode;
+begin
+  Result := ClientMgr.GetRpcHistoryCountForClient(uniqueClientId,rpcHistoryCount);
+
+  if Result <> Success then
+    rpcHistoryCount := 0;
+end;
+
+procedure TSharedBroker.Set_PerClientRpcHistoryLimit(limit: Integer);
+begin
+  ClientMgr.PerClientRpcHistoryLimit := limit;
+end;
+
+procedure TSharedBroker.Set_RpcHistoryEnabled(enabled: WordBool);
+begin
+  // If debugger client then operate on all of the clients
+  // else just operate on this one
+  if ConnectType = DebuggerClient then
+    ClientMgr.RpcCallHistoryEnabled := enabled
+  else
+    RpcHistory.Enabled := enabled;
+end;
+
+function TSharedBroker.LogoutConnectedClients(
+  logoutTimeLimit: Integer): ISharedBrokerErrorCode;
+begin
+  ClientMgr.CloseAllClients(logoutTimeLimit);
+  ClientMgr.InProcessOfLoggingOutClients := true;
+  Result := Success;
+end;
+
+function TSharedBroker.GetClientNameFromUniqueClientId(
+  uniqueClientId: Integer;
+  out clientName: WideString): ISharedBrokerErrorCode;
+begin
+  Result := ClientMgr.GetClientNameFromUniqueClientId(uniqueClientId,clientName);
+end;
+
+function TSharedBroker.GetActiveBrokerConnectionIndexCount(
+  out connectionIndexCount: Integer): ISharedBrokerErrorCode;
+begin
+  connectionIndexCount := ClientMgr.AllConnections.Count;
+  Result := Success;
+end;
+
+function TSharedBroker.GetActiveBrokerConnectionIndexFromUniqueClientId(
+  uniqueClientId: Integer;
+  out connectionIndex: Integer): ISharedBrokerErrorCode;
+begin
+  Result := ClientMgr.GetActiveBrokerConnectionIndexFromUniqueClientId(uniqueClientId,connectionIndex);
+end;
+
+function TSharedBroker.GetActiveBrokerConnectionInfo(connectionIndex: Integer;
+  out connectedServerIp: WideString; out connectedServerPort: Integer;
+  out lastContext: WideString): ISharedBrokerErrorCode;
+begin
+  Result := ConnectionIndexOutOfRange;
+
+  if (connectionIndex >= 0) and (connectionIndex < ClientMgr.AllConnections.Count) then
+  begin
+    with TBrokerConnection(ClientMgr.AllConnections.Items[connectionIndex]) do
+      begin
+        connectedServerIp := FServerIP;
+        connectedServerPort := FPort;
+        lastContext := FLastContext;
+        Result := Success;
+      end;
+  end;
+end;
+
+function TSharedBroker.GetConnectionIndex: Integer;
+begin
+  Result := FBrokerConnection.FConnectionIndex;
+end;
+
+constructor TSharedBrokerClientMgr.Create;
+begin
+  inherited;
+  FAllConnections              := TList.Create;
+  FAllConnectedClients         := TList.Create;
+  FAllClients                  := TList.Create;
+  FNoClientsHaveConnectedYet   := True;
+
+  FNextRpcUniqueId             := kNextRpcUniqueIdInitialValue;
+  RpcCallHistoryEnabled        := kRpcCallHistoryEnabledDefault;
+  PerClientRpcHistoryLimit     := kPerClientRpcHistoryLimitDefault;
+  InProcessOfLoggingOutClients := false;
+  CloseAllClientsWaitTime      := kCloseAllClientsWaitTimeDefault;
+
+  FKillClientsStartedTime      := 0;
+  FKillClientsCountdownStarted := false;
+end;
+
+destructor  TSharedBrokerClientMgr.Destroy;
+begin
+  FAllConnections.Free;
+  FAllConnectedClients.Free;
+  FAllClients.Free;
+  inherited;
+end;
+
+procedure TSharedBrokerClientMgr.SendOnLogout;
+var
+  Enum: IEnumConnections;
+  ConnectData: TConnectData;
+  Fetched: Cardinal;
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+begin
+  for i := Pred(FAllClients.Count) downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      Enum := aBrokerClient.GetEnumerator;
+      if Enum <> nil then
+      begin
+
+        while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+        begin
+          if ConnectData.pUnk <> nil then
+            try
+              (ConnectData.pUnk as ISharedBrokerEvents).OnLogout;
+            except
+            end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.SendOnRpcCallRecorded(uniqueRpcId: Longword);
+var
+  Enum: IEnumConnections;
+  ConnectData: TConnectData;
+  Fetched: Cardinal;
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+
+begin
+  for i := Pred(FAllClients.Count) downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      // only send these events to Debugger type clients
+      if aBrokerClient.ConnectType = DebuggerClient then
+      begin
+        Enum := aBrokerClient.GetEnumerator;
+        if Enum <> nil then
+        begin
+          while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+            if ConnectData.pUnk <> nil then
+              try
+                (ConnectData.pUnk as ISharedBrokerEvents).OnRpcCallRecorded(uniqueRpcId);
+              except
+              end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.SendOnClientConnect(uniqueClientId: Integer;connection: ISharedBrokerConnection);
+var
+  Enum: IEnumConnections;
+  ConnectData: TConnectData;
+  Fetched: Cardinal;
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+
+begin
+  for i := Pred(FAllClients.Count) downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      // only send these events to Debugger type clients
+      if aBrokerClient.ConnectType = DebuggerClient then
+      begin
+        Enum := aBrokerClient.GetEnumerator;
+        if Enum <> nil then
+        begin
+          while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+            if ConnectData.pUnk <> nil then
+              try
+                (ConnectData.pUnk as ISharedBrokerEvents).OnClientConnect(uniqueClientId,connection);
+              except
+              end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.SendOnClientDisconnect(uniqueClientId: Integer);
+var
+  Enum: IEnumConnections;
+  ConnectData: TConnectData;
+  Fetched: Cardinal;
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+
+begin
+  if FAllClients <> nil then
+  for i := Pred(FAllClients.Count) downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      // only send these events to Debugger type clients
+      if aBrokerClient.ConnectType = DebuggerClient then
+      begin
+        Enum := aBrokerClient.GetEnumerator;
+        if Enum <> nil then
+        begin
+          while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+            if ConnectData.pUnk <> nil then
+              try
+                (ConnectData.pUnk as ISharedBrokerEvents).OnClientDisconnect(uniqueClientId);
+              except
+              end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.SendOnContextChanged(connectionIndex: Integer; newContext: WideString);
+var
+  Enum: IEnumConnections;
+  ConnectData: TConnectData;
+  Fetched: Cardinal;
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+
+begin
+  if FAllClients <> nil then
+  for i := Pred(FAllClients.Count) downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      // only send these events to Debugger type clients
+      if aBrokerClient.ConnectType = DebuggerClient then
+      begin
+        Enum := aBrokerClient.GetEnumerator;
+        if Enum <> nil then
+        begin
+          while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+            if ConnectData.pUnk <> nil then
+              try
+                (ConnectData.pUnk as ISharedBrokerEvents).OnContextChanged(connectionIndex,newContext);
+              except
+              end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.SendOnConnectionDropped(RPCBroker: TRPCBroker; ErrorText: String);
+var
+  Enum: IEnumConnections;
+  ConnectData: TConnectData;
+  Fetched: Cardinal;
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+  IsRightConnection: Boolean;
+  ConnectionIndex: Integer;
+begin
+    ConnectionIndex := 0;
+    // first pass -- get BrokerClients and identify ConnectionIndex's
+    if FAllClients <> nil then
+    for i := Pred(FAllClients.Count) downto 0 do
+    begin
+      aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+      if aBrokerClient <> nil then
+      begin
+        IsRightConnection := False;
+        if ABrokerClient.ConnectType <> DebuggerClient then
+        begin
+          if ABrokerClient.FBrokerConnection.FBroker = RPCBroker then
+          begin
+            IsRightConnection := True;
+            ConnectionIndex := ABrokerClient.FBrokerConnection.FConnectionIndex;
+          end;
+          if IsRightConnection then
+          begin
+            Enum := aBrokerClient.GetEnumerator;
+            if Enum <> nil then
+            begin
+              while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+                if ConnectData.pUnk <> nil then
+                  try
+                    (ConnectData.pUnk as ISharedBrokerEvents).OnConnectionDropped(ConnectionIndex,ErrorText);
+                  except
+                  end;
+            end;
+          end;
+        end;
+      end;
+    end;
+    // Now get Debuggers
+    if FAllClients <> nil then
+    for i := Pred(FAllClients.Count) downto 0 do
+    begin
+      aBrokerClient := TSharedBroker(FAllClients.Items[i]);
+      if aBrokerClient <> nil then
+      begin
+        // only send these events to Debugger type clients
+        if aBrokerClient.ConnectType = DebuggerClient then
+        begin
+          Enum := aBrokerClient.GetEnumerator;
+          if Enum <> nil then
+          begin
+            while Enum.Next(1,ConnectData, @Fetched) = S_OK do
+              if ConnectData.pUnk <> nil then
+                try
+                  (ConnectData.pUnk as ISharedBrokerEvents).OnConnectionDropped(ConnectionIndex,ErrorText);
+                except
+                end;
+          end;
+        end;
+      end;
+    end;
+end;
+
+
+procedure TSharedBrokerClientMgr.CloseAllClients(maxWaitTime: Integer);
+begin
+  if maxWaitTime > 0 then
+    // Since maxWaitTime is in seconds we need to scale by 1000ms/sec
+    CloseAllClientsWaitTime := maxWaitTime * kMilliSecondScale
+  else
+    CloseAllClientsWaitTime := kCloseAllClientsWaitTimeDefault;
+
+  // Be sure to send the OnLogout message to all clients
+  ClientMgr.SendOnLogout;
+  FKillClientsCountdownStarted := true;
+  FKillClientsStartedTime := GetTickCount; // use MS calculations
+end;
+
+procedure TSharedBrokerClientMgr.CheckDisconnectWaitTimeAndShutdownClients;
+var
+  ABrokerClient: TSharedBroker;
+  i: Integer;
+  timeElapsedMS: Double;
+begin
+  if FKillClientsCountdownStarted = true then
+  begin
+    if FAllClients.Count > 0 then
+    begin
+      timeElapsedMS := GetTickCount - FKillClientsStartedTime;
+      if timeElapsedMS > CloseAllClientsWaitTime then
+      begin
+        // Put up a warning dialog that all RPC connections will now be terminated
+        Application.MessageBox('All client connections will now be terminated!','RPCSharedBrokerSessionMgr Warning',MB_ICONWARNING);
+        for i := Pred(FAllClients.Count) downto 0 do
+        begin
+          ABrokerClient := TSharedBroker(FAllClients.Items[i]);
+          if ABrokerClient <> nil then ABrokerClient.DoDisconnect;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.ListAllConnectedClients(AList: TStrings);
+var
+  aBrokerClient: TSharedBroker;
+  i: Integer;
+begin
+  for i := 0 to Pred(ConnectedClientCount) do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+    AList.Add(ABrokerClient.FBrokerConnection.FServer+':'+
+              ABrokerClient.FBrokerConnection.FServerIP+':'+
+              IntToStr(ABrokerClient.FBrokerConnection.FPort)+'> <'+
+              ABrokerClient.ClientName+'> '+
+              ABrokerClient.FBrokerContext);
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.AddConnectedBrokerClient(broker: TSharedBroker);
+begin
+  if broker <> nil then
+    FAllConnectedClients.Add(broker);
+end;
+
+procedure TSharedBrokerClientMgr.RemoveConnectedBrokerClient(broker: TSharedBroker);
+begin
+  if broker <> nil then
+    FAllConnectedClients.Remove(broker);
+end;
+
+procedure TSharedBrokerClientMgr.AddToGeneralClientList(broker: TSharedBroker);
+begin
+  if broker <> nil then
+  begin
+    FAllClients.Add(broker);
+    NoClientsHaveConnectedYet := false;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.RemoveFromGeneralClientList(broker: TSharedBroker);
+begin
+  if broker <> nil then
+    FAllClients.Remove(broker);
+end;
+
+function TSharedBrokerClientMgr.ConnectedClientCount : integer;
+begin
+  Result := FAllConnectedClients.Count;
+end;
+
+function TSharedBrokerClientMgr.GetNextRpcUniqueId: Longword;
+begin
+  FNextRpcUniqueId := FNextRpcUniqueId + 1;  // Let this wrap it should be ok.
+  Result := FNextRpcUniqueId;
+end;
+
+function TSharedBrokerClientMgr.GetRPCCallEntryPtrFromHistory(uniqueRpcId: Longword;
+                                 out rpcEntryPtr: RPCCallHistoryEntryPointer)
+                                 : ISharedBrokerErrorCode;
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+
+begin
+  count :=  Pred(ConnectedClientCount);
+
+  Result := UniqueRPCIdDoesNotExist;
+
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      Result := aBrokerClient.RpcHistory.GetRPCCallEntryPtr(uniqueRpcId,rpcEntryPtr);
+      if Result = Success then
+        Exit;
+    end;
+  end;
+end;
+
+function TSharedBrokerClientMgr.GetRPCCallEntryPtrFromHistoryIndex(uniqueClientId:Longword;
+                                 rpcCallIndex: Integer;
+                                 out rpcEntryPtr: RPCCallHistoryEntryPointer)
+                                 : ISharedBrokerErrorCode;
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+
+begin
+  count :=  Pred(ConnectedClientCount);
+
+  Result := UniqueClientIdDoesNotExist;
+
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+
+    if aBrokerClient <> nil then
+    begin
+      if (aBrokerClient.BrokerUniqueClientId = uniqueClientId) then
+      begin
+        Result := aBrokerClient.RpcHistory.GetRPCCallEntryPtrFromIndex(rpcCallIndex,rpcEntryPtr);
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+function TSharedBrokerClientMgr.GetRPCClientIdFromHistory(uniqueRpcId: Integer;
+                                 out uniqueClientId: Integer;
+                                 out clientName: WideString)
+                                 : ISharedBrokerErrorCode;
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+
+begin
+  count :=  Pred(ConnectedClientCount);
+
+  Result := UniqueRPCIdDoesNotExist;
+
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+
+    if aBrokerClient <> nil then
+    begin
+      Result := aBrokerClient.RpcHistory.GetRPCCallClientId(uniqueRpcId,uniqueClientId);
+      if Result = Success then
+      begin
+        clientName := aBrokerClient.ClientName;
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+function TSharedBrokerClientMgr.GetRPCHistoryCountForClient(uniqueClientId: Integer;
+                                 out rpcCount: Integer)
+                                 : ISharedBrokerErrorCode;
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+
+begin
+  count :=  Pred(ConnectedClientCount);
+
+  Result := UniqueClientIdDoesNotExist;
+
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+
+    if aBrokerClient <> nil then
+    begin
+      if Integer(aBrokerClient.BrokerUniqueClientId) = Integer(uniqueClientId) then
+      begin
+        rpcCount := aBrokerClient.RpcHistory.Count;
+        Result := Success;
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+function TSharedBrokerClientMgr.GetClientIdAndNameFromIndex(clientIndex: Integer;
+                                 out uniqueClientId: Integer;
+                                 out clientName: WideString)
+                                 : ISharedBrokerErrorCode;
+var
+  aBrokerClient: TSharedBroker;
+begin
+  if (clientIndex >= 0) and (clientIndex < FAllConnectedClients.Count) then
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[clientIndex]);
+    if aBrokerClient <> nil then
+    begin
+      uniqueClientId := aBrokerClient.BrokerUniqueClientId;
+      clientName := aBrokerClient.ClientName;
+      Result := Success;
+    end else
+      Result := NilClientPointer;
+  end else
+    Result := ClientIndexOutOfRange;
+
+  if Result <> Success then
+  begin
+    uniqueClientId := 0;
+    clientName := '';
+  end;
+end;
+
+function TSharedBrokerClientMgr.GetClientNameFromUniqueClientId(uniqueClientId: Integer;
+                                 out clientName: WideString)
+                                 : ISharedBrokerErrorCode;
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+
+begin
+  count :=  Pred(ConnectedClientCount);
+
+  Result := UniqueClientIdDoesNotExist;
+
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+
+    if aBrokerClient <> nil then
+    begin
+      if Integer(aBrokerClient.BrokerUniqueClientId) = Integer(uniqueClientId) then
+      begin
+        clientName := aBrokerClient.ClientName;
+        Result := Success;
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+function TSharedBrokerClientMgr.GetActiveBrokerConnectionIndexFromUniqueClientId(uniqueClientId: Integer;
+                                 out connectionIndex: Integer)
+                                 : ISharedBrokerErrorCode;
+
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+begin
+  count :=  Pred(ConnectedClientCount);
+  Result := UniqueClientIdDoesNotExist;
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+
+    if aBrokerClient <> nil then
+    begin
+      if Integer(aBrokerClient.BrokerUniqueClientId) = Integer(uniqueClientId) then
+      begin
+        connectionIndex := aBrokerClient.BrokerConnectionIndex;
+        Result := Success;
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+procedure TSharedBrokerClientMgr.SetRpcCallHistoryEnabled(enabled: boolean);
+
+var
+  aBrokerClient: TSharedBroker;
+  i,count: Integer;
+
+begin
+  // be sure to set the local state
+  FRpcCallHistoryEnabled := enabled;
+
+  count :=  Pred(ConnectedClientCount);
+
+  for i := count downto 0 do
+  begin
+    aBrokerClient := TSharedBroker(FAllConnectedClients.Items[i]);
+    if aBrokerClient <> nil then
+    begin
+      // Set the RpcCallHistory for all of the broker connections
+      aBrokerClient.RpcHistory.Enabled := enabled;
+    end;
+  end;
+
+end;
+
+function TSharedBrokerClientMgr.GeneralClientCount:Integer;
+begin
+  if FAllClients <> nil then
+    Result:= FAllClients.Count
+  else
+    Result:= 0;
+end;
+
+procedure TSharedBrokerClientMgr.OnIdleEventHandler(Sender: TObject; var Done: Boolean);
+begin
+  // Shut me down any time the client count goes to zero
+  // Since this server is non visual it has to be able to shut
+  // down automatically.
+  // It is started up automatically any time a client tries
+  // to connect
+  if (ClientMgr.InProcessOfLoggingOutClients = true) then
+    ClientMgr.CheckDisconnectWaitTimeAndShutdownClients;
+
+  if (GeneralClientCount = 0) and (NoClientsHaveConnectedYet = false)then
+  begin
+   Application.Terminate;
+//   SendMessage(Application.MainForm.Handle,WM_CLOSE,0,0);
+  end;
+end;
+
+// Global Function Implementation
+function TSharedBrokerClientMgr.Piece(const S: string; Delim: char; PieceNum: Integer): string;
+{ returns the Nth piece (PieceNum) of a string delimited by Delim }
+var
+  i: Integer;
+  Strt, Next: PChar;
+begin
+  i := 1;
+  Strt := PChar(S);
+  Next := StrScan(Strt, Delim);
+  while (i < PieceNum) and (Next <> nil) do
+  begin
+    Inc(i);
+    Strt := Next + 1;
+    Next := StrScan(Strt, Delim);
+  end;
+  if Next = nil then Next := StrEnd(Strt);
+  if i < PieceNum then Result := '' else SetString(Result, Strt, Next - Strt);
+end;
+
+constructor RPCCallHistoryEntry.Create;
+begin
+  CallName := kNoneString;
+  CallParams := kNoneString;
+  CallResults := kNoneString;
+  CallStartDateTime := 0;
+  CallDurationInMS := 0;
+end;
+
+
+constructor RPCCallHistoryEntry.Create(context:WideString;
+                                       name:WideString;
+                                       params:WideString;
+                                       results:WideString;
+                                       startDateTime:Double;
+                                       durationInMS:Longword;
+                                       clientId:Integer);
+begin;
+  CallContext := context;
+  CallName := name;
+  CallParams := params;
+  CallResults := results;
+  CallStartDateTime := startDateTime;
+  CallDurationInMS := durationInMS;
+
+  UniqueRPCCallId := ClientMgr.GetNextRpcUniqueId;
+
+  BrokerUniqueClientId := clientId;
+end;
+
+constructor RPCCallHistory.Create;
+begin
+  inherited;
+  FEnabled := kRpcCallHistoryEnabledDefault;
+end;
+
+function RPCCallHistory.Add(entry: RPCCallHistoryEntry): Integer;
+var
+  diff,i,limit: integer;
+begin
+  // Don't put critical sections around these ClientMgr accesses since
+  // this call is most often nested
+  Result := -1;
+  if (Enabled = True) then
+  begin
+    limit := ClientMgr.PerClientRpcHistoryLimit;
+    if (Count > limit ) then
+    begin
+      // This could happen since a client may reduce the max number
+      // of history entries on the fly and it may be less than what is
+      // already recorded.
+      diff := ClientMgr.PerClientRpcHistoryLimit - Count;
+      for i:=1 to diff do Delete(Count-1);  // Delete the extras
+    end else if (Count <= limit) then
+    begin
+      // If the history is full then delete the first one.
+      // The latest is added to the back
+      if (Count = limit) and (limit > 0) then Delete(0);
+
+      Result := Add(Pointer(entry));
+      Assert(Result <> -1);
+    end;
+  end;
+end;
+
+function RPCCallHistory.GetRPCCallEntryPtr(uniqueRpcId:Longword;
+                  out rpcEntryPtr:RPCCallHistoryEntryPointer)
+                  : ISharedBrokerErrorCode;
+var
+  i,entryCount:integer;
+  item: RPCCallHistoryEntry;
+begin
+  Result := UniqueRPCIdDoesNotExist;
+  rpcEntryPtr := nil;
+
+  entryCount := Pred(Count);
+
+  for i:=0 to entryCount do
+  begin
+    item := RPCCallHistoryEntry(self[i]);
+    if item <> nil then
+    begin
+      if item.UniqueRPCCallId = uniqueRpcId then
+      begin
+        rpcEntryPtr := @item;
+        Result := Success;
+        // We found one so exit the routine
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+function RPCCallHistory.GetRPCCallEntryPtrFromIndex(rpcCallIndex:Integer;
+                                   out rpcEntryPtr:RPCCallHistoryEntryPointer)
+                                   : ISharedBrokerErrorCode;
+begin
+  rpcEntryPtr := nil;
+  Result := RPCHistoryIndexOutOfRange;
+
+  if (rpcCallIndex > 0) and (rpcCallIndex <= Count) then
+  begin
+    rpcEntryPtr := self[rpcCallIndex];
+    Result := Success;
+  end;
+end;
+
+function RPCCallHistory.GetRPCCallClientId(uniqueRpcId:Integer;
+                                   out uniqueClientId:Integer)
+                                   : ISharedBrokerErrorCode;
+var
+  rpcEntryPtr : RPCCallHistoryEntryPointer;
+begin
+  Result := GetRPCCallEntryPtr(uniqueRpcId,rpcEntryPtr);
+  if (Result = Success) and (rpcEntryPtr <> nil)then
+    uniqueClientId := rpcEntryPtr^.BrokerUniqueClientId
+  else
+    uniqueClientId := 0;
+end;
+
+
+{
+procedure TSharedBroker.EventSinkChanged(const EventSink: IUnknown);
+begin
+  FEvents := EventSink as ISharedBrokerEvents;
+  if FConnectionPoint <> nil then
+     FSinkList := FConnectionPoint.SinkList;
+end;
+
+procedure TSharedBroker.Initialize;
+begin
+  inherited Initialize;
+  FConnectionPoints := TConnectionPoints.Create(Self);
+  if AutoFactory.EventTypeInfo <> nil then
+    FConnectionPoint := FConnectionPoints.CreateConnectionPoint(
+      AutoFactory.EventIID, ckSingle, EventConnect)
+  else FConnectionPoint := nil;
+end;
+
+
+function TSharedBroker.BrokerConnect(const ClientName: WideString;
+  ConnectionType: ISharedBrokerClient; const ServerPort: WideString;
+  WantDebug, AllowShared: WordBool; RpcTimeLimit: SYSINT;
+  out UniqueClientId: SYSINT): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.BrokerCall(const RpcName, RpcParams: WideString;
+  RpcTimeLimit: Integer; out RpcResults: WideString;
+  out UniqueRpcCallId: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.BrokerDisconnect: ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.BrokerSetContext(
+  const OptionName: WideString): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.ReadRegDataDefault(const Root, Key, Name,
+  Default: WideString; out RegResult: WideString): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.Get_PerClientRpcHistoryLimit: Integer;
+begin
+
+end;
+
+function TSharedBroker.Get_RpcHistoryEnabled: WordBool;
+begin
+
+end;
+
+function TSharedBroker.Get_RpcVersion: WideString;
+begin
+
+end;
+
+procedure TSharedBroker.Set_PerClientRpcHistoryLimit(limit: Integer);
+begin
+
+end;
+
+procedure TSharedBroker.Set_RpcHistoryEnabled(enabled: WordBool);
+begin
+
+end;
+
+procedure TSharedBroker.Set_RpcVersion(const version: WideString);
+begin
+
+end;
+
+function TSharedBroker.GetActiveBrokerConnectionIndexCount(
+  out connectionIndexCount: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetActiveBrokerConnectionIndexFromUniqueClientId(
+  uniqueClientId: Integer;
+  out connectionIndex: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetActiveBrokerConnectionInfo(
+  connectionIndex: Integer; out connectedServerIp: WideString;
+  out connectedServerPort: Integer;
+  out lastContext: WideString): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetClientIdAndNameFromIndex(clientIndex: Integer;
+  out uniqueClientId: Integer;
+  out clientName: WideString): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetClientNameFromUniqueClientId(
+  uniqueClientId: Integer;
+  out clientName: WideString): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetRpcHistoryCountForClient(uniqueClientId: Integer;
+  out rpcHistoryCount: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.LogoutConnectedClients(
+  logoutTimeLimit: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetRpcCallFromHistoryIndex(uniqueClientId,
+  rpcCallIndex: Integer; out uniqueRpcId: Integer; out brokerContext,
+  rpcName, rpcParams, rpcResult: WideString; out rpcStartDateTime: Double;
+  out rpcDuration: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetRpcClientIdFromHistory(uniqueRpcId: Integer;
+  out uniqueClientId: Integer;
+  out clientName: WideString): ISharedBrokerErrorCode;
+begin
+
+end;
+
+function TSharedBroker.GetConnectedClientCount(
+  out connectedClientCount: Integer): ISharedBrokerErrorCode;
+begin
+
+end;
+}
+
+{
+function TSharedBroker.GetRpcCallFromHistory(uniqueRpcId: Integer;
+  out uniqueClientId: Integer; out brokerContext, rpcName, rpcParams,
+  rpcResult: WideString; out rpcStartDateTime: Double;
+  out rpcDuration: Integer): ISharedBrokerErrorCode;
+begin
+ //
+end;
+}
+function TSharedBroker.Get_CurrentContext: WideString;
+begin
+  if FBrokerConnection <> nil then
+  begin
+    Result := FBrokerConnection.FBroker.CurrentContext;
+  end else
+  begin
+    // Don't know what else to make this if we don't actually have a TRPCBroker to ask
+    Result := '';
+  end;
+end;
+
+function TSharedBroker.Get_KernelLogin: WordBool;
+begin
+  if FBrokerConnection <> nil then
+  begin
+    Result := FBrokerConnection.FBroker.KernelLogin;
+  end else
+  begin
+    // Don't know what else to make this if we don't actually have a TRPCBroker to ask
+    Result := True;
+  end;
+end;
+
+function TSharedBroker.Get_Login: WideString;
+
+   function TorF1(Value: Boolean): String;
+   begin
+     Result := '0';
+     if Value then
+       Result := '1';
+   end;
+   
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+var
+  I: Integer;
+  Str: String;
+  ModeVal: String;
+  DivLst: String;
+  MultiDiv: String;
+  PromptDiv: String;
+  StrFS, StrGS: String;
+begin
+  //TODO
+  if FBrokerConnection <> nil then
+    with FBrokerConnection.FBroker.Login do
+    begin
+      StrFS := SEP_FS;
+      StrGS := SEP_GS;
+      ModeVal := '';
+      if Mode = lmAVCodes then
+        ModeVal := '1'
+      else if Mode = lmAppHandle then
+        ModeVal := '2'
+      else if Mode = lmNTToken then
+        ModeVal := '3';
+      DivLst := '';
+      for i := 0 to Pred(DivList.Count) do
+        DivLst := DivLst + DivList[i] + SEP_GS;
+      MultiDiv := TorF1(MultiDivision);
+      PromptDiv := TorF1(PromptDivision);
+      Str := LoginHandle + StrFS + NTToken + StrFS + AccessCode + StrFS;
+      Str := Str + VerifyCode + StrFS + Division + StrFS + ModeVal + StrFS;
+      Str := Str + DivLst + StrFS + MultiDiv + StrFS + DUZ + StrFS;
+      Str := Str + PromptDiv + StrFS;
+    end;  // with
+end;
+
+function TSharedBroker.Get_RpcbError: WideString;
+begin
+  if FBrokerConnection <> nil then
+  begin
+    Result := FBrokerConnection.FBroker.RPCBError;
+  end else
+  begin
+    // Don't know what else to make this if we don't actually have a TRPCBroker to ask
+    Result := '';
+  end;
+end;
+
+function TSharedBroker.Get_ShowErrorMsgs: ISharedBrokerShowErrorMsgs;
+begin
+  Result := isemRaise;
+  if FBrokerConnection <> nil then
+    if FBrokerConnection.FBroker.ShowErrorMsgs = semQuiet then
+      Result := isemQuiet;
+end;
+
+function TSharedBroker.Get_Socket: Integer;
+begin
+  Result := 0;
+  if FBrokerConnection <> nil then
+    Result := FBrokerConnection.FBroker.Socket;
+end;
+
+function TSharedBroker.Get_User: WideString;
+const
+  SEP_FS = #28;
+var
+  Str: String;
+begin
+  Str := '';
+  if FBrokerConnection <> nil then
+  begin
+    with FBrokerConnection.FBroker.User do
+    begin
+      Str := DUZ + SEP_FS + Name + SEP_FS + StandardName + SEP_FS;
+      Str := Str + Division + SEP_FS;
+      if VerifyCodeChngd then
+        Str := Str + '1' + SEP_FS
+      else
+        Str := Str + '0' + SEP_FS;
+      Str := Str + Title + SEP_FS + ServiceSection + SEP_FS;
+      Str := Str + Language + SEP_FS + DTime + SEP_FS;
+    end;    // with
+  end;
+  Result := WideString(Str);
+end;
+
+procedure TSharedBroker.Set_KernelLogin(Value: WordBool);
+begin
+  if FBrokerConnection <> nil then
+    FBrokerConnection.FBroker.KernelLogin := Value;
+end;
+
+procedure TSharedBroker.Set_Login(const Value: WideString);
+const
+  SEP_FS = #28;
+  SEP_GS = #29;
+var
+  Str: String;
+  StrFS, StrGS: String;
+  DivLst: String;
+  ModeVal: String;
+
+  function TorF(Value: String): Boolean;
+  begin
+    Result := False;
+    if Value = '1' then
+      Result := True;
+  end;
+
+begin
+  Str := Value;
+  if FBrokerConnection <> nil then
+    with FBrokerConnection.FBroker.Login do
+    begin
+      StrFS := SEP_FS;
+      StrGS := SEP_GS;
+      LoginHandle := Piece(Str,StrFS,1);
+      NTToken := Piece(Str,StrFS,2);
+      AccessCode := Piece(Str,StrFS,3);
+      VerifyCode := Piece(Str,StrFS,4);
+      Division := Piece(Str,StrFS,5);
+      ModeVal := Piece(Str,StrFS,6);
+      DivLst := Piece(Str,StrFS,7);
+      MultiDivision := TorF(Piece(Str,StrFS,8));
+      DUZ := Piece(Str,StrFS,9);
+      PromptDivision := TorF(Piece(Str,StrFS,10));
+      if ModeVal = '1' then
+        Mode := lmAVCodes
+      else if ModeVal = '2' then
+        Mode := lmAppHandle
+      else if ModeVal = '3' then
+        Mode := lmNTToken;
+    end;  // with
+end;
+
+procedure TSharedBroker.Set_ShowErrorMsgs(
+  Value: ISharedBrokerShowErrorMsgs);
+begin
+  if FBrokerConnection <> nil then
+  begin
+    if Value = isemRaise then
+      FBrokerConnection.FBroker.ShowErrorMsgs := semRaise
+    else
+      FBrokerConnection.FBroker.ShowErrorMsgs := semQuiet;
+  end;
+end;
+
+
+initialization
+  TAutoObjectFactory.Create(ComServer, TSharedBroker, Class_SharedBroker,
+    ciMultiInstance, tmApartment);
+  ClientMgr := TSharedBrokerClientMgr.Create();
+  Application.OnIdle := ClientMgr.OnIdleEventHandler;
+
+finalization
+  ClientMgr.Free;
+  ClientMgr := nil;
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/uUnitTestBroker.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/uUnitTestBroker.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/uUnitTestBroker.pas	(revision 1676)
@@ -0,0 +1,226 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Unit tests for RPCBroker functionality - requires
+	             dUnit to run unit tests.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit uUnitTestBroker;
+
+interface
+
+uses
+  TestFramework, Sgnoncnf, Classes, Graphics, SysUtils, Forms;
+
+type
+  TTestType = class(TTestCase)
+  private
+  // any private fields needed for processing
+  protected
+  // procedure SetUp; override;
+  // procedure TearDown; override;
+  published
+  // procedure TestName1;
+  // procedure TestName2;
+  end;
+
+  TTestSgnoncnf = class(TTestCase)
+  private
+    FSignonConfiguration: TSignonConfiguration;
+    FRegValues: TStringList;
+  protected
+    procedure SetUp; override;
+    procedure TearDown; override;
+  published
+    procedure TestReadRegistry;
+    procedure TestShowModal1;
+    procedure TestShowModal2;
+  end;
+
+  TTestMFunStr = class(TTestCase)
+  private
+  protected
+    procedure Setup; override;
+  public
+  published
+    procedure TestPiece1;
+    procedure TestPiece2;
+    procedure TestPiece3;
+    procedure TestPiece4;
+    procedure TestPiece5;
+    procedure TestPiece6;
+    procedure TestPiece7;
+    procedure TestPiece8;
+    procedure TestPiece9;
+  end;
+
+implementation
+
+uses
+  XWBut1, Dialogs, MFunStr, LoginFrm;
+
+var
+  Str: String;
+  Val: String;
+
+
+procedure TTestSgnoncnf.SetUp;
+begin
+{   setup as would be done in loginfrm.pas }
+
+  FSignonConfiguration := TSignonConfiguration.Create;
+{
+ //  if any data currently in registry then save it
+  FRegValues := TStringList.Create;
+  ReadRegValues(HKCU,'Software\Vista\Signon',FRegValues);
+  // Now delete current data
+  DeleteRegData(HKCU,'Software\Vista\Signon');
+
+  // Test for reading without registry data
+  FOriginalValues := TSignonValues.Create;
+}
+  with SignonDefaults do
+  begin
+    Position := '0';
+    Size := '0';
+    IntroFont := 'Courier New^11';
+    IntroFontStyles := 'B';
+    TextColor := clWindowText;
+    BackColor := clWindow;
+  end;    // with FSignonConfiguration.SignonDefaults
+  frmSignon := TfrmSignon.Create(Application);
+end;
+
+procedure TTestSgnoncnf.TearDown;
+begin
+  FSignonConfiguration.Free;
+  frmSignon.Free;
+end;
+
+procedure TTestSgnoncnf.TestReadRegistry;
+begin
+  FSignonConfiguration.ReadRegistrySettings;
+  with InitialValues do
+  begin
+    Check(Position = '0', 'ReadRegistry Error in Position value-'+Position);
+    Check(Size = '0', 'ReadRegistry Error in Size value-'+Size);
+    Check(IntroFont = 'Courier New^11', 'ReadRegistry Error in IntroFont-'+IntroFont);
+    Check(IntroFontStyles = 'B', 'ReadRegistry Error in IntroFontStyles value-'+IntroFontStyles);
+    Check(BackColor = clWindow, 'ReadRegistry Error in BackColor = '+IntToStr(BackColor));
+    Check(TextColor = clWindowText, 'ReadRegistry Error in TextColor = '+IntToStr(TextColor));
+  end;    // with
+end;
+
+procedure TTestSgnoncnf.TestShowModal1;
+begin
+  ShowMessage('Click on Default Button');
+  InitialValues.TextColor := clWindow;
+  FSignonConfiguration.ShowModal;
+  with InitialValues do
+  begin
+    Check(TextColor = clWindowText, 'TestShowModal bad TextColor on restore');
+  end;    // with
+end;
+
+procedure TTestSgnoncnf.TestShowModal2;
+begin
+  ShowMessage('Click on ''Select New'' Background Color then select OK (Standard) on next form Then click OK on Main Form');
+  InitialValues.TextColor := clWindowText;
+  FSignonConfiguration.ShowModal;
+  with InitialValues do
+  begin
+    Check(BackColor = clWindow, 'TestShowModal bad TextColor on restore');
+  end;    // with
+end;
+
+procedure TTestMFunStr.TestPiece1;
+begin
+  Val := Piece(Str,'^');
+  Check(Val = 'Piece1','Failed Piece not specified');
+end;
+
+procedure TTestMFunStr.Setup;
+begin
+  Str := 'Piece1^Piece2^Piece3';
+end;
+
+procedure TTestMFunStr.TestPiece2;
+begin
+  Val := Piece(Str,'^',2);
+  Check(Val = 'Piece2', 'Failed Piece specified as 2');
+end;
+
+procedure TTestMFunStr.TestPiece3;
+begin
+  Val := Piece(Str,'^',3);
+  Check(Val = 'Piece3', 'Failed Piece specifed as 3');
+end;
+
+procedure TTestMFunStr.TestPiece4;
+begin
+  Val := Piece(Str,'^',4);
+  Check(Val = '','Failed piece specifed as 4');
+end;
+
+procedure TTestMFunStr.TestPiece5;
+begin
+  Val := Piece(Str,'^',1,2);
+  Check(Val = 'Piece1^Piece2','Failed Piece 1,2');
+end;
+
+procedure TTestMFunStr.TestPiece6;
+begin
+  Val := Piece(Str,'^',2,3);
+  Check(Val = 'Piece2^Piece3','Failed Piece 2,3');
+end;
+
+procedure TTestMFunStr.TestPiece7;
+begin
+  Val := Piece(Str,'^',2,4);
+  Check(Val = 'Piece2^Piece3', 'Failed on Piece 2,4');
+end;
+
+procedure TTestMFunStr.TestPiece8;
+begin
+  Val := Piece(Str,'^',3,5);
+  Check(Val = 'Piece3','Failed on Piece 3,5');
+end;
+
+procedure TTestMFunStr.TestPiece9;
+begin
+  Val := Piece(Str,'^',4,6);
+  Check(Val = '','Failed on Piece 4,6');
+end;
+
+{  // used with second method of registering tests
+function UnitTests: ITestSuite;
+var
+  ATestSuite: TTestSuite;
+begin
+  ATestSuite := TTestSuite.create('Some trivial tests');
+// add each test suite to be tested
+  ATestSuite.addSuite(TTestType.Suite);
+//  ATestSuite.addSuite(TTestStringlist.Suite);
+  Result := ATestSuite;
+end;
+}
+
+
+{
+procedure TTestType.TestName1;
+begin
+// Check( Boolean true for success, String comment for failed test)
+  Check(1+1=2,'Comment on Failure')
+end;
+}
+
+initialization
+// one entry per testclass
+  TestFramework.RegisterTest('ReadRegistry',TTestSgnoncnf.Suite);
+  TestFramework.RegisterTest('Test Piece',TTestMFunStr.Suite);
+// or
+//    TestFramework.RegisterTest('SimpleTest',UnitTests);
+end.
Index: cprs/branches/HealthSevak-CPRS/BDK32/Source/uUnitTestMFunStr.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/BDK32/Source/uUnitTestMFunStr.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/BDK32/Source/uUnitTestMFunStr.pas	(revision 1676)
@@ -0,0 +1,182 @@
+{ **************************************************************
+	Package: XWB - Kernel RPCBroker
+	Date Created: Sept 18, 1997 (Version 1.1)
+	Site Name: Oakland, OI Field Office, Dept of Veteran Affairs
+	Developers: Joel Ivey
+	Description: Unit testing MFunStr code - requires dUnit for
+	             unit testing.
+	Current Release: Version 1.1 Patch 40 (January 7, 2005))
+*************************************************************** }
+
+unit uUniTTestMFunStr;
+
+interface
+
+uses
+  TestFramework, Sgnoncnf, Classes, Graphics, SysUtils, Forms;
+
+type
+  TTestType = class(TTestCase)
+  private
+  // any private fields needed for processing
+  protected
+  // procedure SetUp; override;
+  // procedure TearDown; override;
+  published
+  // procedure TestName1;
+  // procedure TestName2;
+  end;
+
+  TTestMFunStr1 = class(TTestCase)
+  private
+  protected
+    procedure Setup; override;
+  public
+  published
+    procedure TestPiece1;
+    procedure TestPiece2;
+    procedure TestPiece3;
+    procedure TestPiece4;
+    procedure TestPiece5;
+    procedure TestPiece6;
+    procedure TestPiece7;
+    procedure TestPiece8;
+    procedure TestPiece9;
+  end;
+
+  TTestMFunStr2 = class(TTestCase)
+  protected
+    procedure Setup; override;
+  published
+    procedure TestTran1;
+    procedure TestTran2;
+    procedure TestTran3;
+    procedure TestTran4;
+  end;
+
+implementation
+
+uses
+  MFunStr_1;
+
+var
+  Str: String;
+  Val: String;
+
+procedure TTestMFunStr1.TestPiece1;
+begin
+  Val := Piece(Str,'^');
+  Check(Val = 'Piece1','Failed Piece not specified');
+end;
+
+procedure TTestMFunStr1.Setup;
+begin
+  Str := 'Piece1^Piece2^Piece3';
+end;
+
+procedure TTestMFunStr1.TestPiece2;
+begin
+  Val := Piece(Str,'^',2);
+  Check(Val = 'Piece2', 'Failed Piece specified as 2');
+end;
+
+procedure TTestMFunStr1.TestPiece3;
+begin
+  Val := Piece(Str,'^',3);
+  Check(Val = 'Piece3', 'Failed Piece specifed as 3');
+end;
+
+procedure TTestMFunStr1.TestPiece4;
+begin
+  Val := Piece(Str,'^',4);
+  Check(Val = '','Failed piece specifed as 4');
+end;
+
+procedure TTestMFunStr1.TestPiece5;
+begin
+  Val := Piece(Str,'^',1,2);
+  Check(Val = 'Piece1^Piece2','Failed Piece 1,2');
+end;
+
+procedure TTestMFunStr1.TestPiece6;
+begin
+  Val := Piece(Str,'^',2,3);
+  Check(Val = 'Piece2^Piece3','Failed Piece 2,3');
+end;
+
+procedure TTestMFunStr1.TestPiece7;
+begin
+  Val := Piece(Str,'^',2,4);
+  Check(Val = 'Piece2^Piece3', 'Failed on Piece 2,4');
+end;
+
+procedure TTestMFunStr1.TestPiece8;
+begin
+  Val := Piece(Str,'^',3,5);
+  Check(Val = 'Piece3','Failed on Piece 3,5');
+end;
+
+procedure TTestMFunStr1.TestPiece9;
+begin
+  Val := Piece(Str,'^',4,6);
+  Check(Val = '','Failed on Piece 4,6');
+end;
+
+procedure TTestMFunStr2.Setup;
+begin
+  Str := 'ABCDEFGHABCDE';
+end;
+
+procedure TTestMFunStr2.TestTran1;
+begin
+  Val := Translate(Str,'ABCDEFGH','abcdefgh');
+  Check(Val = 'abcdefghabcde','Failed upper to lower case');
+end;
+
+procedure TTestMFunStr2.TestTran2;
+begin
+  Val := Translate(Str,'ABCD','abcde');
+  Check(Val = 'abcdEFGHabcdE', 'Failed Partial');
+end;
+
+procedure TTestMFunStr2.TestTran3;
+begin
+  Val := Translate(Str,'ABCDEABC','abcdefgh');
+  Check(Val = 'abcdeFGHabcde', 'Failed repeat chars');
+end;
+
+procedure TTestMFunStr2.TestTran4;
+begin
+  Val := Translate(Str,'ABCDEFGH','abcdeabc');
+  Check(Val = 'abcdeabcabcde', 'Failed in assignment');
+end;
+
+{  // used with second method of registering tests
+function UnitTests: ITestSuite;
+var
+  ATestSuite: TTestSuite;
+begin
+  ATestSuite := TTestSuite.create('Some trivial tests');
+// add each test suite to be tested
+  ATestSuite.addSuite(TTestType.Suite);
+//  ATestSuite.addSuite(TTestStringlist.Suite);
+  Result := ATestSuite;
+end;
+}
+
+
+{
+procedure TTestType.TestName1;
+begin
+// Check( Boolean true for success, String comment for failed test)
+  Check(1+1=2,'Comment on Failure')
+end;
+}
+
+initialization
+// one entry per testclass
+  TestFramework.RegisterTest('Test Piece',TTestMFunStr1.Suite);
+  TestFramework.RegisterTest('Test Translate',TTestMFunStr2.Suite);
+// or
+//    TestFramework.RegisterTest('SimpleTest',UnitTests);
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAConst.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAConst.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAConst.pas	(revision 1676)
@@ -0,0 +1,62 @@
+unit UBAConst;
+ 
+{$OPTIMIZATION OFF}
+
+interface
+ 
+const
+
+  BUFFER_ORDER_ID = '9999999999';
+ 
+  CARET = '^';
+  NOT_APPLICABLE          = 'N/A';
+  
+  ENCOUNTER_TODAYS_DX     = '^Diagnoses from Today''s Orders'; //BAPHII 1.3.10
+  ENCOUNTER_PERSONAL_DX   = '^Personal Diagnoses List Items';
+  DX_PROBLEM_LIST_TXT     = 'Problem List Items';
+  DX_PERSONAL_LIST_TXT    = 'Personal Diagnoses List Items';
+  DX_ENCOUNTER_LIST_TXT   = 'Encounter Form Diagnoses';
+  DX_TODAYS_DX_LIST_TXT   = 'Diagnoses from Today''s Orders';
+
+  MIN_SC_CONDITION = 0;
+  MAX_SC_CONDITION = 0;
+  BILLABLE_ORDER = '1';
+  SERVICE_CONNECTED       = 'SC';
+  NOT_SERVICE_CONNECTED   = 'NSC';
+  AGENT_ORANGE            = 'AO';
+  IONIZING_RADIATION      = 'IR';
+  ENVIRONMENTAL_CONTAM    = 'EC';
+  HEAD_NECK_CANCER        = 'HNC';
+  MILITARY_SEXUAL_TRAUMA  = 'MST';
+  COMBAT_VETERAN          = 'CV';
+  SHIPBOARD_HAZARD_DEFENSE= 'SHD';
+
+  MAX_DX = 4;
+  DXREC_INIT_FIELD_VAL        = '';
+  UNSIGNED_REC_INIT_FIELD_VAL = '';
+ 
+  PRIMARY_DX = 'Primary';
+  SECONDARY_DX = 'Secondary';
+
+  //Form identifiers
+  F_ORDERS_SIGN  = 1;
+  F_REVIEW       = 2;
+  F_CONSULTS     = 3;
+  // Order Status
+
+  BAOK2SIGN = 1;
+  DISCONTINUED = 5;
+  MIN_RECT = 0;
+  MAX_RECT = 199;
+
+  ADD_TO_PROBLEM_LIST     = 'PL';
+  ADD_TO_PERSONAL_DX_LIST = 'PD';
+  BA_INACTIVE_CODE =  '#';
+
+
+ 
+implementation
+ 
+end.
+ 
+  
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBACore.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBACore.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBACore.pas	(revision 1676)
@@ -0,0 +1,1504 @@
+unit UBACore;
+
+{.$define debug}
+
+interface
+uses
+  Classes, ORNet, uConst, ORFn, Sysutils, Dialogs, Windows,Messages, UBAGlobals,Trpcb,
+  fFrame;
+
+function  rpcAddToPersonalDxList(UserDUZ:int64; DxCodes:TStringList):boolean;
+function  rpcGetPersonalDxList(UserDUZ:int64):TStringList;
+function  rpcDeleteFromPersonalDxList(UserDUZ:int64; Dest:TStringList):integer;
+procedure rpcSaveBillingDxEntered;  // save dx enteries regardless of being mandatory....
+function  rpcNonBillableOrders(pOrderList: TStringList): TStringList;
+function  rpcOrderRequiresDx(pList: TStringList):boolean;
+procedure rpcSetBillingAwareSwitch(encProvider: int64; pPatientDFN: string);
+procedure rpcGetProviderPatientDaysDx(ProviderIEN: string;PatientIEN: string);
+procedure rpcGetSC4Orders;    // returns Eligible Treatment Factors for a given patient
+
+function  rpcTreatmentFactorsActive(pOrderID: string):boolean;
+procedure rpcBuildSCIEList(pOrderList: TList);
+function  rpcGetUnsignedOrdersBillingData(pOrderList: TStringList):TStringList;
+function  rpcRetrieveSelectedOrderInfo(pOrderIDList: TStringList):TStringList;
+function  rpcGetTFHintData:TStringList;
+procedure rpcSaveNurseConsultOrder(pOrderRec:TStringList);
+function  rpcGetBAMasterSwStatus:boolean;
+procedure rpcSaveCIDCData(pCIDCList: TStringList);
+function  rpcIsPatientInsured(pPatientDFN: string):boolean;
+
+procedure SaveBillingData(pBillingData:TStringList);
+function  OrdersHaveDx(pOrderList:TStringList):boolean;
+procedure SetTreatmentFactors(TFactors: string);
+function  AttachDxToOrderList(pOrderList:TStringList):TStringList;
+procedure AttachPLTFactorsToDx(var Dest:String;ProblemRec:string);
+procedure BALoadStsFlagsAsIs(StsFlagsIN: string);
+function  BADxEntered:boolean;  //  main logic to determine if dx has been entered for order that requires dx
+function  StripTFactors(FactorsIN: string): string;
+function  AddProviderPatientDaysDx(Dest: TStringList; ProviderIEN: string;PatientIEN: string) : TStringList;
+function  IsOrderBillable(pOrderID: string):boolean;
+
+function  OrderRequiresSCEI(pOrderID :String): boolean;
+procedure SaveUnsignedOrders(pOrderRec:String);
+
+procedure CompleteUnsignedBillingInfo(pOrderList: TStringList);
+procedure BuildSaveUnsignedList(pOrderList: TStringList);
+procedure LoadUnsignedOrderRec(var thisRetVal: TBAUnsignedBillingRec;UnsignedBillingInfo:string);
+function  GetUnsignedOrderFlags(pOrderID: string; pFlagList: TStringList):string;  // returns STSFlags if found
+procedure BuildTFHintRec;
+function  IsAllOrdersNA(pOrderList:TStringList):boolean;
+function  PrepOrderID(pOrderID:String): String;
+procedure ClearSelectedOrderDiagnoses(pOrderIDList: TStringList);
+procedure LoadConsultOrderRec(var thisRetVal: TBAConsultOrderRec; pOrderID: String; pDxList: TStringList);
+procedure CompleteConsultOrderRec(pOrderID: string; pDxList: TStringList);
+function  GetConsultFlags(pOrderID:String; pFlagList:TStringList;FlagsAsIs:string):string;
+function  SetConsultFlags(pPLFactors: string;pFlagsAsIs: string):string; //  return updated flags.
+procedure GetBAStatus(pProvider:int64; pPatientDFN: string);
+function  IsICD9CodeActive(ACode: string; LexApp: string; ADate:TFMDateTime = 0): boolean;
+function  BuildConsultDxRec(ConsultRec: TBAConsultOrderRec): string;
+function  ConvertPIMTreatmentFactors(pTFactors:string):string;
+procedure DeleteDCOrdersFromCopiedList(pOrderID:string);
+procedure UpdateBAConsultOrderList(pDcOrders: TStringList);
+function  VerifyOrderIdExists(pOrderList: TStringList): TStringList; // removes records without order id
+function  IsCIDCProvider(encProvider:int64):boolean;
+function  ProcessProblemTFactors(pText:String):String;
+
+var
+  uAddToPDl: integer;
+  uDeleteFromPDL: integer;
+  uDxLst: TStringList;
+  BADxList: TStringList;
+
+implementation
+
+uses fBALocalDiagnoses, fOrdersSign, fReview, rOrders, uCore, rCore, rPCE,uPCE,
+     UBAConst, UBAMessages, USignItems;
+
+
+// -----------------  MAIN CIDC DX HAS BEEN ENTERED LOGIC  ---------------------------
+function BADxEntered:boolean;
+var
+  i: integer;
+  //orderStatus: integer;
+  x: string;
+  passList: TStringList;
+  holdOrderList: TStringList;
+  thisOrderID: string;
+  thisRec: string;
+begin
+ //  Result := TRUE;   // caused hint.....
+   holdOrderList := TStringList.Create;
+   holdOrderList.Clear;
+   updatedBAOrderList := TStringList.Create;
+   updatedBAOrderList.Clear;
+   passList := TStringList.Create;
+   passList.Clear;
+   // determine which orders require a dx (lrmp- only)
+   // if NO then continue
+   // if YES, check BADxList for orders with DX enteries.
+   // if ok then create data string pass to M via RPC
+
+  for i := 0 to BAOrderList.Count-1 do
+  begin
+     thisRec := BAOrderList.Strings[i];
+     thisOrderID := piece(thisRec,';',1) + ';1';  //rebuild orderID pass to M.
+     x := BAOrderList.Strings[i];
+     //orderStatus := StrToInt(CharAt(Piece(x, ';', 2), 1));  //  Order Status 1=OK, 2=DISCONTINUE
+    if IsOrderBillable(thisOrderID) then
+     begin
+        passList.Add(piece(x,';',1));
+        holdOrderList.Add(x);//  place holder for orders that can be signed!
+     end;
+  end;
+
+   FastAssign(holdOrderList, BAOrderList); //assign signable orders to BAOrderList for further processing
+   holdOrderList.Clear; // CQ5025
+
+    //call with passList determine if LRMP
+     if rpcOrderRequiresDx(passList) then
+      FastAssign(updatedBAOrderList, BAOrderList);
+
+    // check of all orders dx columns are flagged with N/A.....
+    if UBACore.IsAllOrdersNA(BAOrderList) then
+    begin
+       Result := TRUE;              //  force true, no record needs DX entry
+       Exit;                        //to do.  clean this up... when time permitts
+    end
+    else
+      begin
+      if OrdersHaveDx(UBAGlobals.BAOrderList) then
+      begin
+         Result := True; // CIDC orders have dx
+         SaveBillingData(UBAGlobals.BAOrderList) ;
+      end
+      else
+         begin
+            Result := FALSE;
+            Exit;
+         end;
+     end;
+end;
+
+
+function rpcOrderRequiresDx(pList: TStringList):boolean;
+var x: string;
+    i,j: integer;
+    returnList, updatedList: TStringList;
+   begin
+    Result := FALSE;  // initial set dx NOT required
+    returnList := TStringList.Create;
+    updatedList := TStringList.Create;
+    returnList.Clear;
+    updatedList.Clear;
+    // remove deleted orderid's
+    if UBAGlobals.BADeltedOrders.Count > 0 then
+    begin
+       for i := 0 to UBAGlobals.BADeltedOrders.Count-1 do
+          x := UBAGlobals.BADeltedOrders.Strings[i];
+         for j := 0 to pList.Count-1 do
+         begin
+            if x = pList.Strings[j] then
+              continue   // orderid is removed.. or skipped
+            else
+               updatedList.Add(x);
+         end;
+    end
+    else
+       FastAssign(pList, updatedList);
+
+    // call returns boolean, orders is billable=1 or nonbillable=0 or discontinued = 0
+    tCallV(returnList,'ORWDBA1 ORPKGTYP',[updatedList]);
+
+     //Remove NON LRMP orders from the mix(when checking for dx entry);
+     // BAOrderList and pList are in sync - order id....
+     for i := 0 to BAOrderList.Count-1 do
+     begin
+        x:= piece(returnList.Strings[i],'^',1);
+        if x = BILLABLE_ORDER  then
+        begin
+           updatedBAOrderList.Add(BAOrderList[i]);
+           Result := TRUE;
+        end;
+    end;
+end;
+
+
+// UBAGlobals.NonBillableOrderList must be populated prior to calling this function.
+// call   rpcNonBillableOrders to populate List.
+function IsOrderBillable(pOrderID: string):boolean ;
+var
+  i: integer;
+  currOrderID: string;
+  matchOrderID : string;
+
+begin
+  Result := TRUE;    //  = Billable
+  currOrderID := PrepOrderID(pOrderID);
+  if Piece(pOrderID,';',2) = DISCONTINUED_ORDER THEN
+  begin
+     Result := FALSE;
+     Exit;
+  end;
+  try
+     for i := 0 to UBAGlobals.NonBillableOrderList.Count -1 do
+     begin
+        matchOrderID := PrepOrderID( (Piece(UBAGlobals.NonBillableOrderList.Strings[i],U,1)) );
+        if currOrderID = matchOrderID  then
+        begin
+           Result := FALSE;  //= Non Billable
+           Exit;
+        end;
+     end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.IsOrderBillable()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+
+procedure SaveBillingData(pBillingData:TStringList);
+var
+  RecsToSave: TStringList;
+begin
+  RecsToSave := TStringList.Create;
+  RecsToSave.Clear;
+
+  RecsToSave := AttachDxToOrderList(pBillingData); //call with new Biling data, return-code returned
+  rpcSaveCIDCData(RecsToSave);  // verify and save billing data
+
+  if Assigned(UBAGlobals.BAOrderList) then UBAGlobals.BAOrderList.Clear; // hds00005025
+end;
+
+function rpcTreatmentFactorsActive(pOrderID:string): boolean;
+var x: string;
+    i: integer;
+    pList: TStringList;
+    rList: TStringList;
+   begin
+      pList := TStringList.Create;
+      rList := TStringList.Create;
+      rList.Clear;
+      rList := nil;
+      pList.Clear;
+      pList.Add(pOrderID);
+      Result := FALSE;
+     // call returns boolean, orders is billable=1 or nonbillable=0 or discontinued = 0
+      tCallV(rList,'ORWDBA1 ORPKGTYP',[pList]);
+     //returns boolean value by OrderID - True = billable
+     for i := 0 to rList.Count-1 do
+     begin
+        x := rList[i];
+        if rList[i] = BILLABLE_ORDER then
+        begin
+           Result := True;
+        end;
+     end;
+end;
+
+
+function AttachDxToOrderList(pOrderList:TStringList):TStringList;
+var
+  i: integer;
+  newBillingList: TStringList;
+  baseDxRec: TBADxRecord;
+  currentOrderID: string;
+  currentOrderString: string;
+  dxString,FlagsStatsIn: string;
+
+begin
+   newBillingList:= TStringList.Create;
+   newBillingList.Clear;
+   dxString := '';
+   baseDxRec := nil;
+   baseDxRec := TBADxRecord.Create;
+
+  InitializeNewDxRec(baseDxRec);
+  for i := 0 to pOrderList.Count-1 do
+  begin
+     currentOrderString := pOrderList.Strings[i];
+     currentOrderID := piece(pOrderList.Strings[i],';',1)+ ';1';
+
+     GetBADxListForOrder(baseDxRec, currentOrderID);
+     FlagsStatsIn := BAFlagsIN;
+     dxString := currentOrderString + '^' + piece(baseDxRec.FBADxCode,':',2);
+     if baseDxRec.FBASecDx1 <> '' then
+        dxString := dxString + '^' + piece(baseDxRec.FBASecDx1,':',2);
+     if baseDxRec.FBASecDx2 <> '' then
+        dxString := dxString + '^' + piece(baseDxRec.FBASecDx2,':',2);
+     if baseDxRec.FBASecDx3 <> '' then
+        dxString := dxString + '^' + piece(baseDxRec.FBASecDx3,':',2);
+
+     NewBillingList.Add(dxString);
+     InitializeNewDxRec(baseDxRec);  //HDS00004744
+  end;
+  Result := NewBillingList;
+end;
+
+function  rpcAddToPersonalDxList(UserDUZ:int64; DxCodes:TStringList):boolean;
+//input example ien^code(s) = 12345^306.70^431.22
+begin
+   Result := (sCallV('ORWDBA2 ADDPDL', [UserDUZ,DxCodes])= '1');
+end;
+
+function rpcGetPersonalDxList(UserDUZ:int64):TStringList;
+var
+tmplst: TStringList;
+begin
+    tmplst := TStringList.Create;
+    tmplst.clear;
+    tCallV(tmplst, 'ORWDBA2 GETPDL', [UserDUZ]);
+    Result := tmplst;
+end;
+
+function  rpcDeleteFromPersonalDxList(UserDUZ:int64; Dest:TStringList):integer;
+begin
+    uDeleteFromPDL := StrToIntDef(sCallV('ORWDBA2 DELPDL', [UserDUZ,Dest]), 0);
+    Result := uDeleteFromPDL;
+end;
+
+// returns value used to bypass Billing Aware if needed.
+//  turns off visual and functionality
+procedure rpcSetBillingAwareSwitch(encProvider:int64; pPatientDFN: string);
+begin
+// Is Provider -> Is Master Sw -> Is CIDC SW -> Is Patient Insured
+   BILLING_AWARE := FALSE;
+   // verify user is a provider
+   if (encProvider <> 0) and PersonHasKey(encProvider, 'PROVIDER') then
+    //  Master switch is set "ON"
+      if  (sCallV('ORWDBA1 BASTATUS', [nil]) = '1') then
+         // User is CIDC Enabled
+        if  (sCallV('ORWDBA4 GETBAUSR', [encProvider]) = '1') then
+        begin
+           // Verify Patient is Insured
+           // OR Switch = 2 ask questions for all patients.
+           if  rpcIsPatientInsured(pPatientDFN)  then
+              BILLING_AWARE := TRUE;
+        end;
+       {$ifdef debug}BILLING_AWARE := TRUE;{$endif}
+end;
+
+//  verify CIDC Master Switch and Provider is CIDC Enabled.
+//  Patient insurance check is bypassed.  (hds7564)
+function  IsCIDCProvider(encProvider:int64):boolean;
+begin
+    Result := False;
+    if rpcGetBAMasterSwStatus then
+       if (encProvider <> 0) and PersonHasKey(encProvider, 'PROVIDER') then
+          Result := True;
+end;
+
+
+function rpcGetBAMasterSwStatus:boolean;
+begin
+   Result :=  (sCallV('ORWDBA1 BASTATUS', [nil]) = '1');    //  Master switch is set "ON"
+end;
+
+
+procedure rpcSaveNurseConsultOrder(pOrderRec:TStringList);
+begin
+    rpcSaveCIDCData(pOrderRec);
+end;
+
+
+procedure rpcSaveBillingDxEntered;  // if not mandatory and user enters dx.
+var
+ ordersWithDx,i: integer;
+ newBillingList: TStringList;
+ baseDxRec, tempDxRec: TBADxRecord;
+ currentOrderID, thisOrderID: string;
+ currentOrderString, thisRec: string;
+begin
+// verify Dx has been entered for orders checked for signature..
+     ordersWithDx := 0;
+     tempDxRec := TBADxRecord.Create;
+     UBAGlobals.InitializeNewDxRec(tempDxRec);
+     for i := 0 to BAOrderList.Count-1 do
+     begin
+        thisRec := BAOrderList.Strings[i];
+        thisOrderID := piece(thisRec,';',1) + ';1';  //rebuild orderID pass to M.
+        if tempDxNodeExists(thisOrderID) then
+           inc(ordersWithDx);
+     end;
+
+     // if orders have dx enteries - save billing data.
+     if ordersWithDx > 0 then
+     begin
+        newBillingList:= TStringList.Create;
+        newBillingList.Clear;
+        baseDxRec := nil;
+        baseDxRec := TBADxRecord.Create;
+        InitializeNewDxRec(baseDxRec);
+
+       try
+       for i := 0 to BAOrderList.Count-1 do
+       begin
+          currentOrderString := BAOrderList.Strings[i];
+          currentOrderID := piece(BAOrderList.Strings[i],';',1)+ ';1';
+          GetBADxListForOrder(baseDxRec, currentOrderID);
+          if baseDxRec.FBADxCode <> '' then
+          begin
+             NewBillingList.Add(currentOrderString +'^'+ baseDxRec.FBADxCode +'^'+ baseDxRec.FBASecDx1+
+                                '^'+ baseDxRec.FBASecDx2+'^'+ baseDxRec.FBASecDx3);
+          end;
+       end;
+       except
+       on EListError do
+       begin
+         {$ifdef debug}Show508Message('EListError in UBACore.rpcSaveBillingDxEntered()');{$endif}
+         raise;
+     end;
+  end;
+
+   rpcSaveCIDCData(NewBillingList);
+   if Assigned(NewBillingList) then FreeAndNil(NewBillingList);
+  end;
+end;
+
+procedure rpcGetSC4Orders;
+begin
+//  ****** RPC Logic returning SC/TF codes for COPAY  ********
+//     if (CIDC is ON) and (PatientInsured is True) then
+//        return SC/TF for OutPatient Meds, Labs, Prosthetics, Imaging.
+//     else
+//       return SC/TF for Outpatient Meds only. 
+   RPCBrokerV.Param[0].PType := literal;
+   RPCBrokerV.Param[0].Value := Patient.DFN;
+   RPCBrokerV.RemoteProcedure := 'ORWDBA1 SCLST';
+   CallBroker;
+end;
+
+procedure rpcGetProviderPatientDaysDx(ProviderIEN: string;PatientIEN: string);
+var
+    tmplst: TStringList;
+begin
+    tmplst := TStringList.Create;
+    uDxLst := TStringList.Create;
+    tmplst.clear;
+    uDxLst.Clear;
+    tCallV(tmplst, 'ORWDBA2 GETDUDC', [ProviderIEN, PatientIEN]);
+    FastAssign(tmplst, UBACore.UDxLst);
+    tmplst.clear;
+end;
+
+
+function rpcGetTFHintData:TStringList;
+begin
+  tCallv(BATFHints,'ORWDBA3 HINTS', [nil]);
+  Result := BATFHints;
+end;
+
+//  call made to determine if order type is billable
+//  if order type NOT billable, flagged with "NA".
+function rpcNonBillableOrders(pOrderList: TStringList):TStringList;
+var x: string;
+    i: integer;
+    rList: TStringList;
+  begin
+    rList := TStringList.Create;
+    rList.Clear;
+    NonBillableOrderList.Clear;
+    // call returns boolean, orders is billable=1 or nonbillable=0 or discontinued = 0
+    tCallV(rList,'ORWDBA1 ORPKGTYP',[pOrderList]);
+    for i := 0 to rList.Count-1 do
+    begin
+       x := rList[i];
+       if rList[i] <> BILLABLE_ORDER then
+          NonBillableOrderList.Add(pOrderList[i] + U + 'NA');
+    end;
+    Result := NonBillableOrderList;
+end;
+
+
+procedure rpcBuildSCIEList(pOrderList: TList);
+var AnOrder: TOrder;
+    OrderIDList: TStringList;
+    rList: TStringList;
+    i: integer;
+   begin
+      OrderIDList := TStringList.Create;
+      rList := TStringList.Create;
+      if Assigned(OrderListSCEI) then OrderListSCEI.Clear;
+      OrderIDList.Clear;
+      rList.Clear;
+      for i := 0 to pOrderList.Count -1 do
+      begin
+         AnOrder := TOrder(pOrderList.Items[i]);
+         OrderIDList.Add(AnOrder.ID);
+      end;
+      // call returns boolean, orders is billable=1 or nonbillable=0 or discontinued = 0
+      tCallV(rList,'ORWDBA1 ORPKGTYP',[OrderIDList]);
+
+     for i := 0 to rList.Count-1 do
+     begin
+        if rList.Strings[i] = BILLABLE_ORDER then
+           OrderListSCEI.Add(OrderIDList.Strings[i]);
+   end;
+end;
+
+procedure rpcSaveCIDCData(pCIDCList: TStringList);
+var
+ CIDCList :TStringList;
+begin
+    CIDCList := TStringList.create;
+    CIDCList.Clear;
+    // insure record contain valid orderid
+    if pCIDCList.Count > 0 then
+    begin
+       CIDCList := VerifyOrderIdExists(pCIDCList);
+       if CIDCList.Count > 0 then
+          CallV('ORWDBA1 RCVORCI',[CIDCList]);
+    end;
+    if Assigned(CIDCList) then FreeAndNil(CIDCList);
+end;
+
+function  rpcIsPatientInsured(pPatientDFN: string):boolean;
+begin
+   Result := (sCallV('ORWDBA7 ISWITCH',[pPatientDFN]) > '0');
+     
+end;
+
+
+function OrdersHaveDx(pOrderList:TStringList):boolean;
+var
+  i: integer;
+  thisOrderID: string;
+  thisRec: string;
+  tempDxRec: TBADxRecord;
+begin
+     Result := TRUE;
+     tempDxRec := nil;
+     tempDxRec := TBADxRecord.Create;
+     UBAGlobals.InitializeNewDxRec(tempDxRec);
+
+  try
+     for i := 0 to pOrderList.Count-1 do
+     begin
+          thisRec := pOrderList.Strings[i];
+          thisOrderID := piece(thisRec,';',1) + ';1';  //rebuild orderID pass to M.
+          if not tempDxNodeExists(thisOrderID) then
+          begin
+             Result := FALSE;
+             Break;
+          end
+          else
+          begin
+             GetBADxListForOrder(tempDxRec, thisOrderID);
+             if tempDxRec.FBADxCode = '' then
+                begin
+                   Result := FALSE;
+                   Break;
+                end;
+          end;
+
+     end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.OrdersHaveDx()');{$endif}
+        raise;
+        end;
+  end;
+
+   if Assigned(tempDxRec) then
+       FreeAndNil(tempDxRec);
+end;
+
+
+
+
+procedure LoadUnsignedOrderRec(var thisRetVal: TBAUnsignedBillingRec;UnsignedBillingInfo:string);
+var
+  thisString : String;
+begin
+  thisString := UnsignedBillingInfo;
+   with thisRetVal do
+   begin
+      FBAOrderID       := Piece(thisString,U,1) + ';1';
+      FBASTSFlags      := Piece(thisString,U,2);
+      FBADxCode        := (Piece(thisString,U,4)+ U + (Piece(thisString,U,3)));
+      FBASecDx1        := (Piece(thisString,U,6)+ U + (Piece(thisString,U,5)));
+      FBASecDx2        := (Piece(thisString,U,8)+ U + (Piece(thisString,U,7)));
+      FBASecDx3        := (Piece(thisString,U,10)+ U + (Piece(thisString,U,9)));
+      //  if codes are absent then get rid of '^'.
+      if FBADxCode = U then FBADxCode := DXREC_INIT_FIELD_VAL;
+      if FBASecDx1 = U then FBASecDx1 := DXREC_INIT_FIELD_VAL;
+      if FBASecDx2 = U then FBASecDx2 := DXREC_INIT_FIELD_VAL;
+      if FBASecDx3 = U then FBASecDx3 := DXREC_INIT_FIELD_VAL;
+   end;
+end;
+
+procedure AttachPLTFactorsToDx(var Dest:String;ProblemRec:string);
+var
+    TFResults: string;
+    thisRec: TBAPLFactorsIN;
+begin
+    TFResults := '';
+    thisRec := TBAPLFactorsIN.Create;
+    thisRec.FBADxText            := Piece(ProblemRec,'(',1);
+    thisRec.FBADxText            := Piece(thisRec.FBADxText,U,2);
+    thisRec.FBADxCode            := Piece(ProblemRec,U,3);
+    thisRec.FBASC                := Piece(ProblemRec,U,5);
+    thisRec.FBASC_YN             := Piece(ProblemRec,U,6);
+    //HDS8409
+    if StrPos(PChar(ProblemRec),'(') <> nil then
+       thisRec.FBATreatFactors :=  ProcessProblemTFactors(ProblemRec)
+    else
+    begin
+       thisRec.FBATreatFactors  := Piece(ProblemRec,')',1);
+       thisRec.FBATreatFactors  := Piece(thisRec.FBATreatFactors,'(',2);
+    end;
+    //HDS8409
+  with thisRec do
+  begin
+      if StrLen(pchar(FBATreatFactors)) > 0 then   // 0 Treatment Factors exist
+      //build string containing Problem List Treatment Factors
+        TFResults := ( FBADXCode + U + FBADxText  + '  (' + FBASC + '/' + FBATreatFactors + ')  ' )
+      else
+        if StrLen(PChar(FBASC)) > 0 then
+           TFResults := ( FBADxCode + U + FBADxText  + '  (' + FBASC + ')  ' )
+        else
+           TFResults := ( FBADxCode + U  + FBADxText );
+  end;
+
+    Dest := TFResults;
+end;
+
+
+// this code is to handle adding Problem List(only) TF's when selected
+procedure BALoadStsFlagsAsIs(StsFlagsIN: String);
+var
+  x: string;
+begin
+   x:= Piece(StsFlagsIN,U,2);
+   UBAGlobals.SC  := Copy(x,1,1);
+   UBAGlobals.AO  := Copy(x,2,1);
+   UBAGlobals.IR  := Copy(x,3,1);
+   UBAGlobals.EC  := Copy(x,4,1);
+   UBAGlobals.MST := Copy(x,5,1);
+   UBAGlobals.HNC := Copy(x,6,1);
+   UBAGlobals.CV  := Copy(x,7,1);
+   UBAGlobals.SHD := Copy(x,8,1);
+end;
+
+
+// this code is to handle adding Problem List(only) TF's when selected
+
+procedure SetTreatmentFactors(TFactors: string);
+var
+ strTFactors : string;
+ strFlagsOut: string;
+ FlagsIN : TStringList;
+ Idx: string;
+ i : integer;
+begin
+    UBAGlobals.BAFlagsOUT := TStringList.Create;
+    UBAGlobals.BAFlagsOUT.Clear;
+    FlagsIN := TStringList.Create;
+    FlagsIN.Clear;
+    FlagsIN := UBAGlobals.PLFactorsIndexes;
+
+    for i:= 0 to FlagsIN.Count-1 do
+    begin
+       BALoadStsFlagsAsIs(FlagsIN.Strings[i]);
+       IDX := Piece(FlagsIN.Strings[i],U,1);
+
+       strTFactors := TFactors;
+
+       if UBAGlobals.SC  <> 'N' then
+          if StrPos(PChar(strTFactors),PChar(SERVICE_CONNECTED)) <> nil then
+             UBAGlobals.SC := 'C' ;
+
+       if UBAGlobals.SC <> 'N' then
+          if StrPos(PChar(strTFactors),PChar(NOT_SERVICE_CONNECTED)) <> nil then
+             UBAGlobals.SC := 'U';
+
+       if UBAGlobals.AO <>'N' then
+          if StrPos(PChar(strTFactors),PChar(AGENT_ORANGE)) <> nil then
+             UBAGlobals.AO := 'C';
+
+       if UBAGlobals.IR <>'N' then
+          if StrPos(PChar(strTFactors),PChar(IONIZING_RADIATION)) <> nil then
+             UBAGlobals.IR := 'C';
+
+       if UBAGlobals.EC <>'N' then
+          if StrPos(PChar(strTFactors),PChar(ENVIRONMENTAL_CONTAM)) <> nil then
+             UBAGlobals.EC := 'C';
+
+       if UBAGlobals.MST <>'N' then
+          if StrPos(PChar(strTFactors),PChar(MILITARY_SEXUAL_TRAUMA)) <> nil then
+             UBAGlobals.MST := 'C';
+
+       if UBAGlobals.CV <>'N' then
+          if StrPos(PChar(strTFactors),PChar(COMBAT_VETERAN)) <> nil then
+             UBAGlobals.CV := 'C';
+
+       if UBAGlobals.HNC <>'N' then
+          if StrPos(PChar(strTFactors),PChar(HEAD_NECK_CANCER)) <> nil then
+             UBAGlobals.HNC := 'C';
+
+       if UBAGlobals.SHD <> 'N' then
+          if StrPos(PChar(strTFactors),PChar(SHIPBOARD_HAZARD_DEFENSE)) <> nil then
+             UBAGlobals.SHD := 'C';
+
+       //  Build Treatment Factor List to be passed to fOrdersSign form
+       strFlagsOut := (SC + AO + IR + EC + MST + HNC + CV + SHD);
+       UBAGlobals.BAFlagsOUT.Add(IDX + '^' + strFlagsOut );
+     end;
+  end;
+
+
+function StripTFactors(FactorsIN: string):string;
+var strDxCode,strDxName:string;
+begin
+   Result := '';
+   strDxCode := Piece(FactorsIN,U,2);
+   strDxName := Piece(FactorsIN,'(',1);
+   Result := (strDxName + U + strDxCode);
+end;
+
+function AddProviderPatientDaysDx(Dest: TStringList; ProviderIEN: string;PatientIEN: string) : TStringList;
+var i:integer;
+    x: string;
+    tmplst: TStringList;
+begin
+    tmplst := TStringList.Create;
+    tmplst.clear;
+    tCallV(tmplst, 'ORWDBA2 GETDUDC', [ProviderIEN, PatientIEN]);
+
+  try
+    for i := 0 to tmplst.count-1 do
+       x := tmplst.Strings[i];
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.AddProviderPatientDaysDx()');{$endif}
+        raise;
+        end;
+  end;
+
+    Result := tmplst;
+end;
+
+
+function  OrderRequiresSCEI(pOrderID: string):boolean;
+var i:integer;
+
+begin
+    Result := False;
+
+  try
+    for i := 0 to UBAGlobals.OrderListSCEI.Count-1 do
+    begin
+       if pOrderID = UBAGlobals.OrderListSCEI.Strings[i] then
+       begin
+          Result := True;
+          Break;
+       end;
+    end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.OrderRequiresSCEI()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+procedure SaveUnsignedOrders(pOrderRec:String);
+begin
+     // save all unsigned orders, keeping freview and fordersSign in sync
+     // this change may have an impact on response time??????
+     // change from save orders with dx to save all. 06/24/04
+     // /  if not  clear treatment factors for order is non cidc
+   uBAGlobals.UnsignedOrders.Add(pOrderRec);
+
+end;
+
+function rpcRetrieveSelectedOrderInfo(pOrderIDList: TStringList):TStringList;
+var
+  rList : TStringList;
+  newList:TStringList;
+  i: integer;
+  x: string;
+begin
+   rList := TStringList.Create;
+   newList := TStringList.Create;
+   if Assigned(rList) then rList.Clear;
+   if Assigned(newList) then newList.Clear;
+
+   for i := 0 to pOrderIDList.Count-1 do
+   begin
+      newList.Add(Piece(pOrderIDList.Strings[i],';',1));
+      x := newlist.strings[i];
+   end;
+   if newList.Count > 0 then
+      tCallV(rList,'ORWDBA4 GETTFCI',[newList]);
+   Result := rList;
+
+
+end;
+
+procedure BuildSaveUnsignedList(pOrderList: TStringList);
+var
+   thisList: TStringList;
+   rList: TStringList;
+begin
+
+  thisList := TStringList.Create;
+  rList := TStringList.Create;
+  if Assigned(rList) then rList.Clear;
+  if Assigned(thisList)then thisList.Clear;
+  SaveBillingData(pOrderList);  //  save unsigned info to be displayed when recalled at later time
+end;
+
+function  rpcGetUnsignedOrdersBillingData(pOrderList: TStringList):TStringList;
+var
+ i:integer;
+ newList:TStringList;
+ rList:TStringList;
+begin
+  newList := TStringList.Create;
+  rList := TStringList.Create;
+  if Assigned(newList) then newList.Clear;
+  if Assigned(rList) then rList.Clear;
+  Result := rList;
+
+  if pOrderList.Count = 0 then Exit;
+  for i := 0 to pOrderList.Count-1 do
+  begin
+     newList.Add(Piece(pOrderList.Strings[i],';',1));
+  end;
+   tCallV(rList,'ORWDBA4 GETTFCI',[newList]);
+  Result := rList;
+end;
+
+procedure CompleteUnsignedBillingInfo(pOrderList:TStringList);
+var
+i: integer;
+RecOut : TBADxRecord;
+copyList: TStringList;
+begin
+   copyList := TStringList.Create;
+   if Assigned(copyList) then copyList.Clear;
+
+   if Assigned(BAUnSignedOrders) then  BAUnSignedOrders.Clear;
+
+   if not Assigned(UBAGlobals.UnsignedBillingRec) then
+   begin
+      UBAGlobals.UnSignedBillingRec := UBAGlobals.TBAUnsignedBillingRec.Create;
+      UBAGlobals.InitializeUnsignedOrderRec(UBAGlobals.UnsignedBillingRec);
+   end;
+
+   UBAGlobals.InitializeUnsignedOrderRec(UnsignedBillingRec);
+
+  try
+     for i := 0 to pOrderList.Count-1 do
+        begin
+           LoadUnsignedOrderRec(UBAGlobals.UnsignedBillingRec, pOrderList.Strings[i]);
+           if Not UBAGlobals.tempDxNodeExists(UnsignedBillingRec.FBAOrderID) then
+           begin
+              SimpleAddTempDxList(UnSignedBillingRec.FBAOrderID);
+              RecOut := TBADxRecord.Create;
+              RecOut.FExistingRecordID := UnSignedBillingRec.FBAOrderID;
+              RecOut.FBADxCode  := UnsignedBillingRec.FBADxCode;
+              RecOut.FBASecDx1  := UnsignedBillingRec.FBASecDx1;
+              RecOut.FBASecDx2  := UnsignedBillingRec.FBASecDx2;
+              RecOut.FBASecDx3  := UnsignedBillingRec.FBASecDx3;
+              RecOut.FTreatmentFactors := UnSignedBillingRec.FBASTSFlags;
+              PutBADxListForOrder(RecOut, RecOut.FExistingRecordID);
+              UBAGlobals.BAUnSignedOrders.Add(UnSignedBillingRec.FBAOrderID + '^' + UnSignedBillingRec.FBASTSFlags);
+           end
+           else
+           begin
+              RecOut := TBADxRecord.Create;
+              if tempDxNodeExists(UnSignedBillingRec.FBAOrderID) then
+              begin
+                 GetBADxListForOrder(RecOut, UnSignedBillingRec.FBAOrderID); //load data from source
+                 copyList.Add(UnSignedBillingRec.FBAOrderID + '^' + UnSignedBillingRec.FBASTSFlags);
+                 BuildSaveUnsignedList(copyList);
+             end;
+         end;
+     end;
+     except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.CompleteUnsignedBillingInfo()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+function  GetUnsignedOrderFlags(pOrderID: string; pFlagList: TStringList):string;
+var
+  i: integer;
+begin
+   Result := '';
+   try
+    for i := 0 to pFlagList.Count-1 do
+       begin
+          if pOrderID = Piece(pFlagList.Strings[i],U,1) then
+          begin
+             Result := Piece(pFlagList.Strings[i],U,2); //  STSFlags
+             Break;
+          end;
+       end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.GetUnsignedOrderFlags()');{$endif}
+        raise;
+        end;
+  end;
+
+end;
+
+// BuildTFHintRec is meant to run once, first user of the session
+//  contains the information to be displayed while mouse-over in fOrdersSign and fReview.
+procedure BuildTFHintRec;
+var
+hintList :TStringList;
+i: integer;
+x: string;
+begin
+   hintList := TStringList.Create;
+   if Assigned(hintList) then hintList.Clear;
+   hintList := rpcGetTFHintData;
+   if hintList.Count > 0 then  UBAGlobals.BAFactorsRec.FBAFactorActive := TRUE;
+
+  try
+      for i := 0 to hintList.Count -1 do
+         begin
+            x := hintList.Strings[i];
+            if piece(x,U,1) = SERVICE_CONNECTED then
+            begin
+               if piece(x,U,2) = '1' then
+                  UBAGlobals.BAFactorsRec.FBAFactorSC := Piece(x,U,3)
+               else
+                  UBAGlobals.BAFactorsRec.FBAFactorSC := ( UBAGlobals.BAFactorsRec.FBAFactorSC + CRLF + Piece(x,U,3) );
+            end
+            else
+               if piece(x,U,1) = AGENT_ORANGE then
+               begin
+                  if piece(x,U,2) = '1' then
+                     UBAGlobals.BAFactorsRec.FBAFactorAO := Piece(x,U,3)
+                  else
+                     UBAGlobals.BAFactorsRec.FBAFactorAO := (UBAGlobals.BAFactorsRec.FBAFactorAO + CRLF + Piece(x,U,3) );
+               end
+               else
+                if piece(x,U,1) = IONIZING_RADIATION then
+                begin
+                  if piece(x,U,2) = '1' then
+                     UBAGlobals.BAFactorsRec.FBAFactorIR := Piece(x,U,3)
+                  else
+                     UBAGlobals.BAFactorsRec.FBAFactorIR := (UBAGlobals.BAFactorsRec.FBAFactorIR + CRLF + Piece(x,U,3) );
+               end
+               else
+                 if piece(x,U,1) = ENVIRONMENTAL_CONTAM then
+                 begin
+                  if piece(x,U,2) = '1' then
+                     UBAGlobals.BAFactorsRec.FBAFactorEC := Piece(x,U,3)
+                  else
+                     UBAGlobals.BAFactorsRec.FBAFactorEC := (UBAGlobals.BAFactorsRec.FBAFactorEC + CRLF + Piece(x,U,3) );
+               end
+               else
+                 if piece(x,U,1) = HEAD_NECK_CANCER then
+                 begin
+                  if piece(x,U,2) = '1' then
+                     UBAGlobals.BAFactorsRec.FBAFactorHNC := Piece(x,U,3)
+                  else
+                     UBAGlobals.BAFactorsRec.FBAFactorHNC := (UBAGlobals.BAFactorsRec.FBAFactorHNC + CRLF + Piece(x,U,3) );
+               end
+               else
+                 if piece(x,U,1) = MILITARY_SEXUAL_TRAUMA then
+                 begin
+                  if piece(x,U,2) = '1' then
+                     UBAGlobals.BAFactorsRec.FBAFactorMST := Piece(x,U,3)
+                  else
+                     UBAGlobals.BAFactorsRec.FBAFactorMST := (UBAGlobals.BAFactorsRec.FBAFactorMST + CRLF + Piece(x,U,3) );
+               end
+               else
+                 if piece(x,U,1) = COMBAT_VETERAN then
+                 begin
+                   if piece(x,U,2) = '1' then
+                      UBAGlobals.BAFactorsRec.FBAFactorCV := Piece(x,U,3)
+                   else
+                      UBAGlobals.BAFactorsRec.FBAFactorCV := (UBAGlobals.BAFactorsRec.FBAFactorCV + CRLF + Piece(x,U,3) );
+                 end
+                 else
+                    if piece(x,U,1) = SHIPBOARD_HAZARD_DEFENSE then
+                    begin
+                       if piece(x,U,2) = '1' then
+                          UBAGlobals.BAFactorsRec.FBAFactorSHAD := Piece(x,U,3)
+                      else
+                         UBAGlobals.BAFactorsRec.FBAFactorSHAD := (UBAGlobals.BAFactorsRec.FBAFactorSHAD + CRLF + Piece(x,U,3) );
+                  end;
+            end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.BuileTFHintRec()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+
+function  IsAllOrdersNA(pOrderList:TStringList):boolean;
+var
+  i:integer;
+  rList: TStringList;
+begin
+  rList := TStringList.Create;
+  if Assigned(rList) then rList.Clear;
+  Result := True;// disables dx button
+ 
+  // call returns boolean, orders is billable=1 or nonbillable=0 or discontinued = 0
+  tCallV(rList,'ORWDBA1 ORPKGTYP',[pOrderList]);
+
+  for i := 0 to rList.Count-1 do
+  begin
+     if rList.Strings[i] =  BILLABLE_ORDER then
+     begin
+        Result := False;
+        Break;
+     end;
+  end;
+end;
+
+function  PrepOrderID(pOrderID:String): String;
+var
+  newOrderID: String;
+begin
+   newOrderID := '';
+   if pos(';',pOrderID) > 0 then
+          newOrderID := Piece(pOrderID,';',1)
+       else
+          newOrderID := pOrderID ;
+
+    Result := newOrderID;
+end;
+
+procedure ClearSelectedOrderDiagnoses(pOrderIDList: TStringList);
+var
+  RecOut: TBADXRecord;
+  i: integer;
+begin
+  try
+     for i := 0 to pOrderIDList.Count-1 do
+     begin
+         if UBAGlobals.tempDxNodeExists(pOrderIDList.Strings[i]) then
+         begin
+            RecOut := TBADxRecord.Create;
+            GetBADxListForOrder(RecOut, pOrderIDList.Strings[i]);
+            RecOut.FOrderID   := RecOut.FOrderID;
+            RecOut.FBADxCode  := DXREC_INIT_FIELD_VAL;
+            RecOut.FBASecDx1  := DXREC_INIT_FIELD_VAL;
+            RecOut.FBASecDx2  := DXREC_INIT_FIELD_VAL;
+            RecOut.FBASecDx3  := DXREC_INIT_FIELD_VAL;
+            PutBADxListForOrder(RecOut, pOrderIDList.Strings[i]);
+            frmReview.lstReview.Refresh;
+         end;
+     end;
+  except
+     on EListError do
+        begin
+           {$ifdef debug}Show508Message('EListError in UBACore.ClearSelectedORdersDiagnoses()');{$endif}
+           raise;
+        end;
+  end;
+end;
+
+procedure LoadConsultOrderRec(var thisRetVal: TBAConsultOrderRec; pOrderID: String; pDxList: TStringList);
+var
+  thisString, thisFlags:String;
+  dx1,dx2,dx3,dx4: string;
+  i: integer;
+begin
+   thisFlags := '';
+   dx1 := '';
+   dx2 := '';
+   dx3 := '';
+   dx4 := '';
+   UBAGlobals.BAConsultDxList.Sort;
+
+  try
+   for i := 0 to UBAGlobals.BAConsultDxList.Count -1 do
+      begin
+         thisString := UBAGlobals.BAConsultDxList[i];
+
+         if i = 0 then
+            begin
+               if pos( '(', thisString) > 0 then
+                  begin
+                  thisFlags := Piece(thisString,'(',2);
+                  thisFlags := Piece(thisFlags,')',1);
+                  UBAGlobals.BAConsultPLFlags.Add(pOrderID + U + thisFlags);
+                  dx1 := Piece(thisString,U,2);
+                  dx1 := Piece(dx1,'(',1) + U + Piece(thisString,':',2);
+                  end
+               else
+                  begin
+                  dx1 := Piece(thisString,U,2);
+                  dx1 := Piece(dx1,':',1)+ U + Piece(thisString,':',2);
+                  end
+            end
+         else
+            if i = 1 then
+               begin
+               if pos( '(', thisString) > 0 then
+                  begin
+                     dx2 := Piece(thisString,U,2);
+                     dx2 := Piece(dx2,'(',1)+ U + Piece(thisString,':',2);
+                  end
+               else
+                   begin
+                      dx2 := Piece(thisString,U,2);
+                      dx2 := Piece(dx2,':',1)+ U + Piece(thisString,':',2);
+                   end
+               end
+            else
+               if i = 2 then
+                  begin
+                  if pos( '(', thisString) > 0 then
+                     begin
+                        dx3 := Piece(thisString,U,2);
+                        dx3 := Piece(dx3,'(',1)+ U + Piece(thisString,':',2);
+                     end
+                  else
+                     begin
+                        dx3  := Piece(thisString,U,2);
+                        dx3  := Piece(dx3,':',1)+ U + Piece(thisString,':',2);
+                     end
+                  end
+               else
+                  if i = 3 then
+                     begin
+                     if pos( '(', thisString) > 0 then
+                        begin
+                           dx4 := Piece(thisString,U,2);
+                           dx4 := Piece(dx4,'(',1)+ U + Piece(thisString,':',2);
+                        end
+                     else
+                        begin
+                           dx4 := Piece(thisString,U,2);
+                           dx4 := Piece(dx4,':',1)+ U + Piece(thisString,':',2);
+                        end;
+                     end;
+      end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in UBACore.LoadConsultOrderRec()');{$endif}
+        raise;
+        end;
+  end;
+
+      with thisRetVal do
+      begin
+        FBAOrderID          := pOrderID;
+        FBATreatmentFactors:= thisFlags;
+        FBADxCode        := dx1;
+        FBASecDx1        := dx2;
+        FBASecDx2        := dx3;
+        FBASecDx3        := dx4;
+       end;
+end;
+
+procedure LoadTFactorsInRec(var thisRetVal: TBATreatmentFactorsInRec; pOrderID:string; pEligible: string; pTFactors:string);
+begin
+     with thisRetVal do
+     begin
+        FBAOrderID    := pOrderID;
+        FBAEligible   := pEligible;
+        FBATFactors   := pTFactors;
+     end;
+end;
+
+procedure CompleteConsultOrderRec(pOrderID: string; pDxList: TStringList);
+var
+  RecOut : TBADxRecord;
+  TfFlags,dxRec: string;
+  orderList : TStringList;
+  tmpOrderList: TStringList;
+begin
+    orderList    := TStringList.Create;
+    tmpOrderList := TStringList.Create;
+    orderList.Clear;
+    tmpOrderList.Clear;
+    if not Assigned(uBAGlobals.ConsultOrderRec)then
+       begin
+          UBAGlobals.ConsultOrderRec := UBAGlobals.TBAConsultOrderRec.Create;
+          InitializeConsultOrderRec(UBAGlobals.ConsultOrderRec);
+       end
+    else
+       InitializeConsultOrderRec(UBAGlobals.ConsultOrderRec);
+    // call rpc to load list with boolean values based on orders package type.
+    UBAGlobals.NonBillableOrderList.Clear;
+    tmpOrderList.Add(UBAGLobals.BAOrderID);
+    rpcNonBillableOrders(tmpOrderList);
+    if IsOrderBillable(uBAGlobals.BAOrderID) then
+    begin
+       if not UBAGlobals.tempDxNodeExists(uBAGlobals.BAOrderID) then
+          begin
+             LoadConsultOrderRec(UBAGlobals.ConsultOrderRec,UBAGlobals.BAOrderID,uBAGlobals.BAConsultDxList);
+             if NOT UBAGlobals.tempDxNodeExists(pOrderID) then
+                SimpleAddTempDxList(pOrderID);
+             RecOut := TBADxRecord.Create;
+             RecOut.FExistingRecordID := pOrderID;
+             RecOut.FBADxCode  := ConsultOrderRec.FBADxCode;
+             RecOut.FBASecDx1  := ConsultOrderRec.FBASecDx1;
+             RecOut.FBASecDx2  := ConsultOrderRec.FBASecDx2;
+             RecOut.FBASecDx3  := ConsultOrderRec.FBASecDx3;
+             RecOut.FTreatmentFactors := ConsultOrderRec.FBATreatmentFactors;
+             PutBADxListForOrder(RecOut, RecOut.FExistingRecordID);
+//  HDS00003380
+             if IsUserNurseProvider(User.DUZ) then
+             begin
+                dxRec := BuildConsultDxRec(ConsultOrderRec);
+                orderList.Add(RecOut.FExistingRecordID);
+              //  TfFlags := Piece(GetPatientTFactors(orderList),U,2);
+                TfFlags := GetPatientTFactors(orderList);
+                TfFlags := ConvertPIMTreatmentFactors(TfFlags);
+                orderList.Clear;
+              //  if strLen(PChar(dxRec)) > 0 then
+              //     orderList.Add(RecOut.FExistingRecordID +TfFlags + '^'+ BuildConsultDxRec(ConsultOrderRec) )
+              //  else
+                   orderList.Add(RecOut.FExistingRecordID +TfFlags);
+                SaveBillingData(OrderList);  //  save unsigned info to be displayed when re
+             end;
+          end;
+      end;
+end;
+
+function  GetConsultFlags(pOrderID:String; pFlagList:TStringList;FlagsAsIs:string):string;
+var
+   i: integer;  //add code to match order id.....
+begin
+  Result := '';
+    for i := 0 to pFlagList.Count -1 do
+        begin
+           if pOrderID = Piece(pFlagList.Strings[i],U,1) then
+           begin
+              Result := SetConsultFlags( Piece(pFlagList.Strings[i],U,2), FlagsAsIs);
+              break;
+           end;
+        end;
+
+end;
+
+function  SetConsultFlags(pPLFactors: string; pFlagsAsIs:string):string; //  return updated flags.
+var
+  strFlagsAsIs: string;
+  strTFactors: string;
+  strFlagsOut,x: string;
+
+begin
+    strFlagsAsIs  := pFlagsAsIs; // flags from pims
+    strTFactors   :=  pPLFactors;  // value selected from problem list
+    strFlagsOut   := '';   // flags updated with selected values from problem list
+    x             := strFlagsAsIs;
+    Result        := '';
+
+    UBAGlobals.SC  := Copy(x,1,1);
+    UBAGlobals.AO  := Copy(x,2,1);
+    UBAGlobals.IR  := Copy(x,3,1);
+    UBAGlobals.EC  := Copy(x,4,1);
+    UBAGlobals.MST := Copy(x,5,1);
+    UBAGlobals.HNC := Copy(x,6,1);
+    UBAGlobals.CV  :=  Copy(x,7,1); // load factors to global vars;
+    UBAGlobals.SHD := Copy(x,8,1);
+
+  if UBAGlobals.SC  <> 'N' then
+       if StrPos(PChar(strTFactors),PChar(SERVICE_CONNECTED)) <> nil then
+          UBAGlobals.SC := 'C' ;
+
+    if UBAGlobals.SC <> 'N' then
+       if StrPos(PChar(strTFactors),PChar(NOT_SERVICE_CONNECTED)) <> nil then
+          UBAGlobals.SC := 'U';
+
+    if UBAGlobals.AO <>'N' then
+       if StrPos(PChar(strTFactors),PChar(AGENT_ORANGE)) <> nil then
+          UBAGlobals.AO := 'C';
+
+    if UBAGlobals.IR <>'N' then
+       if StrPos(PChar(strTFactors),PChar(IONIZING_RADIATION)) <> nil then
+          UBAGlobals.IR := 'C';
+
+    if UBAGlobals.EC <>'N' then
+       if StrPos(PChar(strTFactors),PChar(ENVIRONMENTAL_CONTAM)) <> nil then
+          UBAGlobals.EC := 'C';
+
+    if UBAGlobals.MST <>'N' then
+       if StrPos(PChar(strTFactors),PChar(MILITARY_SEXUAL_TRAUMA)) <> nil then
+          UBAGlobals.MST := 'C';
+
+    if UBAGlobals.HNC <> 'N' then
+       if StrPos(PChar(strTFactors),PChar(HEAD_NECK_CANCER)) <> nil then
+          UBAGlobals.HNC := 'C';
+
+    if UBAGlobals.CV <>'N' then
+       if StrPos(PChar(strTFactors),PChar(COMBAT_VETERAN)) <> nil then
+          UBAGlobals.CV := 'C';
+
+    if UBAGlobals.SHD <> 'N' then
+       if StrPos(PChar(strTFactors),PChar(SHIPBOARD_HAZARD_DEFENSE)) <> nil then
+          UBAGlobals.SHD := 'C';
+
+     strFlagsOut := (UBAGlobals.SC + UBAGlobals.AO + UBAGlobals.IR +
+                     UBAGlobals.EC + UBAGlobals.MST + UBAGlobals.HNC +
+                     UBAGlobals.CV + UBAGlobals.SHD);
+  Result := strFlagsOut;
+end;
+
+procedure GetBAStatus(pProvider:int64; pPatientDFN: string);
+begin
+  // sets global switch, based in value returned from server.
+  // True ->  Billing Aware Switch ON. else OFF
+
+  UBACore.rpcSetBillingAwareSwitch(pProvider,pPatientDFN);
+
+  if Assigned(UBAGlobals.BAPCEDiagList) then UBAGlobals.BAPCEDiagList.Clear;
+     frmFrame.SetBADxList;
+  if not UBAGlobals.BAFactorsRec.FBAFactorActive then
+     UBACore.BuildTFHintRec;
+end;
+
+function IsICD9CodeActive(ACode: string; LexApp: string; ADate: TFMDateTime = 0): boolean;
+var
+  inactiveChar : string;
+begin
+    inactiveChar := '#';
+    if StrPos(PChar(ACode),PChar(inactiveChar) ) <> nil then
+       ACode := Piece(ACode,'#',1);  //  remove the '#' added for inactive code.
+   Result := (sCallV('ORWPCE ACTIVE CODE',[ACode, LexApp, ADate]) = '1');
+end;
+
+function  BuildConsultDxRec(ConsultRec: TBAConsultOrderRec): string;
+var
+newString: string;
+begin
+   if strLen(PChar(ConsultRec.FBADxCode)) > 0 then
+      newString := Piece(ConsultRec.FBADxCode,U,2)
+   else
+      if strLen(PChar(ConsultRec.FBASecDx1)) > 0 then
+         newString := newString + '^' + Piece(ConsultRec.FBASecDx1,U,2)
+   else
+      if strLen(PChar(ConsultRec.FBASecDx2)) > 0 then
+         newString := newString + '^' + Piece(ConsultRec.FBASecDx2,U,2)
+   else
+      if strLen(PChar(ConsultRec.FBASecDx3)) > 0 then
+         newString := newString + '^' + Piece(ConsultRec.FBASecDx3,U,2);
+   Result := newString;
+end;
+
+function  ConvertPIMTreatmentFactors(pTFactors:string):string;
+var
+ strSC,strAO, strIR: string;
+ strEC, strMST, strHNC, strCV: string;
+
+begin
+    Result := '';
+   if StrPos(PChar(pTFactors),PChar(SERVICE_CONNECTED)) <> nil then
+      strSC := '?'
+   else
+      strSC := 'N';
+
+   if StrPos(PChar(pTFactors),PChar(AGENT_ORANGE)) <> nil then
+      strAO := '?'
+   else
+      strAO := 'N';
+
+   if StrPos(PChar(pTFactors),PChar(IONIZING_RADIATION)) <> nil then
+      strIR := '?'
+   else
+      strIR := 'N';
+
+   if StrPos(PChar(pTFactors),PChar(ENVIRONMENTAL_CONTAM)) <> nil then
+      strEC := '?'
+   else
+      strEC := 'N';
+
+   if StrPos(PChar(pTFactors),PChar(MILITARY_SEXUAL_TRAUMA)) <> nil then
+      strMST := '?'
+   else
+      strMST := 'N';
+
+   if StrPos(PChar(pTFactors),PChar(HEAD_NECK_CANCER)) <> nil then
+      strHNC := '?'
+   else
+      strHNC := 'N';
+
+   if StrPos(PChar(pTFactors),PChar(COMBAT_VETERAN)) <> nil then
+      strCV := '?'
+   else
+      strCV := 'N';
+
+   Result := (strSC + strAO + strIR + strEC + strMST + strHNC + strCV);
+end;
+
+
+// Delete dc'd orders from BACopiedOrderList to keep things in sync.
+procedure DeleteDCOrdersFromCopiedList(pOrderID:string);
+var i:integer;
+    holdList: TStringList;
+    x: string;
+begin
+   holdList := TStringList.Create;
+   holdList.Clear;
+   FastAssign(UBAGlobals.BACopiedOrderFlags, holdList);
+   UBAGlobals.BACopiedOrderFlags.Clear;
+   for i := 0 to holdList.Count-1 do
+   begin
+      x := Piece(holdList.Strings[i],';',1);
+      if pOrderID = Piece(holdList.Strings[i],';',1) then
+         continue
+      else
+         UBAGlobals.BACopiedOrderFlags.Add(holdList.Strings[i]);
+   end;
+end;
+
+procedure UpdateBAConsultOrderList(pDcOrders: TStringList);
+var
+ x: string;
+ var i,j: integer;
+ holdList : TStringList;
+begin
+   // remove order enteries from the dx list that are being discontinued.
+   for i := 0 to pDcOrders.Count -1 do
+   begin
+       UBAGlobals.RemoveOrderFromDxList(pDcOrders.Strings[i]);
+   end;
+   if UBAGlobals.BAConsultPLFlags.Count > 0 then
+   begin
+      holdList := TStringList.Create;
+      holdList.Clear;
+      FastAssign(UBAGlobals.BAConsultPLFlags, holdList);
+      UBAGlobals.BAConsultPLFlags.Clear;
+      for i := 0 to holdList.Count-1 do
+      begin
+         x := holdList.Strings[i];
+         for j := 0 to pDcOrders.Count-1 do
+         begin
+            if x = pDcOrders.Strings[j] then
+            continue
+            else
+               UBAGlobals.BAConsultPLFlags.Add(x);
+         end;
+      end;
+   end;
+end;
+
+// loop thru CIDC records remove records with invalid orderid
+function  VerifyOrderIdExists(pOrderList: TStringList): TStringList;
+var
+  goodList: TStringList;
+  tOrderID: integer;
+ i: integer;
+begin
+  goodList := TStringList.Create;
+  goodList.clear;
+
+  if pOrderList.Count > 0 then
+  begin
+      for i := 0 to pOrderList.Count-1 do
+      begin
+         tOrderID := StrToIntDef(Piece(pOrderList.Strings[i],';',1), 0);
+         if tOrderID > 0 then
+            goodList.add(pOrderList.Strings[i]);
+      end;
+  end;
+  result := goodList;
+end;
+
+// parse string return Treatment Factors when text inlcudes multiple "(())"
+//HDS8409
+function  ProcessProblemTFactors(pText:String):String;
+var AText1,x: string;
+    i,j: integer;
+begin
+ if StrPos(PChar(pText),'(') = nil then exit;
+ AText1 := Piece(pText,U,2);
+ i := 1;
+ j := 0;
+ while j = 0 do
+ begin
+    x := Piece(AText1,'(',i);
+    if Length(x) > 0 then
+       inc(i)
+    else
+    begin
+       x := Piece(AText1,'(',i-1);
+       x := Piece(x,')',1);
+       j := 1;
+       Result := x;
+    end;
+  end;
+end;
+
+end.
+
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAGlobals.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAGlobals.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAGlobals.pas	(revision 1676)
@@ -0,0 +1,1183 @@
+ unit UBAGlobals;
+
+{$OPTIMIZATION OFF}
+
+{$define debug}
+
+interface
+
+uses
+  Classes, ORNet, uConst, ORFn, Sysutils, Dialogs, Windows,Messages, rOrders;
+
+type
+
+ {Problem List Record Used To Add New DX From SignOrders Form }
+ TBAPLRec = class(TObject)
+  constructor Create(PLlist:TStringList);
+   function BuildProblemListDxEntry(pDxCode:string):TStringList;
+   function FMToDateTime(FMDateTime: string): TDateTime;
+
+ end;
+
+ {patient qualifiers}
+ TBAPLPt=class(TObject)
+   PtVAMC:string;
+   PtDead:string;
+   PtBid:string;
+   PtServiceConnected:boolean;
+   PtAgentOrange:boolean;
+   PtRadiation:boolean;
+   PtEnvironmental:boolean;
+   PtHNC:boolean;
+   PtMST:boolean;
+   PtSHAD:boolean;
+   constructor Create(Alist:TStringList);
+   function GetGMPDFN(dfn:string;name:String):string;
+ public
+   function rpcInitPt(const PatientDFN: string): TStrings ;
+   procedure LoadPatientParams(AList:TstringList);
+
+ end;
+
+  TBAGlobals = class(TObject)
+  private
+     FOrderNum: string;
+    protected
+  public
+     constructor Create;
+  published
+     property  OrderNum: string read FOrderNum write FOrderNum;
+     procedure AddBAPCEDiag(DiagStr:string);
+     procedure ClearBAPCEDiagList;
+  end;
+
+ TBADxRecord = class(TObject)
+     FExistingRecordID: string;
+     FOrderID: string;
+     FBADxCode: string; //Primary Dx
+     FBASecDx1: string; //Secondary Dx 1
+     FBASecDx2: string; //Secondary Dx 2
+     FBASecDx3: string; //Secondary Dx 3
+     FDxDescCode: string;
+     FDxDesc1: string;
+     FDxDesc2: string;
+     FDxDesc3: string;
+     FTreatmentFactors: string;
+ end;
+
+ TBACopiedOrderFlags = class
+     OrderID: string;
+end;
+
+ TBATreatmentFactorsInRec = class(TObject)
+     FBAOrderID:   string;
+     FBAEligible:  string;
+     FBATFactors:  string;
+ end;
+
+ TBAUnsignedBillingRec = class(TObject)
+     FBAOrderID:  string;
+     FBASTSFlags: string;
+     FBADxCode:   string;
+     FBASecDx1:   string;
+     FBASecDx2:   string;
+     FBASecDx3:   string;
+ end;
+
+ TBAConsultOrderRec = class(TObject)
+    FBAOrderID:  string;
+    FBADxCode:   string;
+    FBASecDx1:   string;
+    FBASecDx2:   string;
+    FBASecDx3:   string;
+    FBATreatmentFactors: string;
+ end;
+
+ TBAClearedBillingRec = class(TObject)
+     FBAOrderID:  string;
+     FBASTSFlags: string;
+     FBADxCode:   string;
+     FBASecDx1:   string;
+     FBASecDx2:   string;
+     FBASecDx3:   string;
+ end;
+
+  TBAFactorsRec = class(TObject)
+     FBAFactorActive    : boolean;
+     FBAFactorSC        : string;
+     FBAFactorMST       : string;
+     FBAFactorAO        : string;
+     FBAFactorIR        : string;
+     FBAFactorEC        : string;
+     FBAFactorHNC       : string;
+     FBAFactorCV        : string;
+     FBAFactorSHAD       : string;
+  end;
+
+  TBAPLFactorsIN = class(TOBject)
+      FPatientID         : string; // UProblems.piece 1
+      FBADxText          : string; // UProblems.piece 2
+      FBADxCode          : string; // UProblems.piece 3
+      FBASC              : string; // UProblems.piece 5
+      FBASC_YN           : string; // UProblems.piece 6
+      FBATreatFactors    : string; //(......)
+  end;
+
+  TBACBStsFlagsIN = class(TOBject) // Y/N/U
+     CB_Sts_Flags       :string;
+  //   CB_SC              :string;
+     CB_AO              :string;
+     CB_IR              :string;
+     CB_EC              :string;
+     CB_MST             :string;
+     CB_HNC             :string;
+     CB_CV              :string;
+     CB_SHAD             :string;
+  end;
+
+procedure PutBADxListForOrder(var thisRecord: TBADxRecord; thisOrderID: string); //BAPHII 1.3.1
+procedure CopyDxRecord(sourceOrderID: string; targetOrderID: string); //BAPHII 1.3.1
+function  GetPrimaryDx(thisOrderID: string) : string; //BAPHII 1.3.1
+function  tempDxNodeExists(thisOrderID: string) : boolean;
+function  GetDxNodeIndex(thisOrderID: string) : smallint;
+function  DiagnosesMatch(var List1: TStringList; var List2: TStringList) : boolean;
+function  CountSelectedOrders(const Caller: smallint) : smallint;
+function  CompareOrderDx(const Caller: smallint) : boolean;
+procedure GetBADxListForOrder(var thisRetVal: TBADxRecord; thisOrderID: string);
+procedure DestroyDxList;
+procedure SetBADxList;
+procedure SimpleAddTempDxList(thisOrderID: string);
+procedure SetBADxListForOrder(thisRec: TBADxRecord; thisOrderID: string);
+function  AllSelectedDxBlank(const Caller: smallint) : boolean;
+function  SecondaryDxFull(thisOrderID: string) : boolean;
+procedure AddSecondaryDx(thisOrderID: string; thisDxCode: string);
+procedure InitializeNewDxRec(var thisDxRec:  TBADxRecord);
+procedure InitializeConsultOrderRec(var thisDxRec: TBAConsultOrderRec);
+procedure InitializeUnsignedOrderRec(var thisUnsignedRec: TBAUnsignedBillingRec);
+procedure InitializeTFactorsInRec(var thisTFactorsRecIn: TBATreatmentFactorsInRec);
+procedure BACopyOrder(sourceOrderList: TStringList);  //BAPHII 1.3.2
+procedure CopyTreatmentFactorsDxsToCopiedOrder(pSourceOrderID:string; pTargetOrderID:string); //BAPHII 1.3.2
+procedure CopyTreatmentFactorsDxsToRenewedOrder; //BAPHII 1.3.2
+function GetTFCIForOrder(thisIndex: integer) : string; //BAPHII 1.3.2
+procedure CopyTFCIToTargetOrder(thisTargetOrderID: string; thisCheckBoxStatus: string);
+
+procedure ResetOrderID(fromID: string; toID: string);
+procedure RemoveOrderFromDxList(thisOrderID: string);
+function IsUserNurseProvider(pUserID: int64): boolean;
+function GetPatientTFactors(pOrderList:TStringList): String;
+
+var
+  BAGlobals         : TBAGlobals;
+  BAPLPt            : TBAPLPt;
+  BAPLRec           : TBAPLRec;
+  PLlist            : TStringList;
+  BADiagnosisList   : TStringList;
+  BALocation        : integer;
+  BAPCEDiagList     : TStringList;
+  BAOrderIDList    : TStringList;
+  tempDxList        : TList;
+  globalDxRec       : TBADxRecord;
+  UnsignedBillingRec   : TBAUnsignedBillingRec;
+  ClearedBillingRec    : TBAClearedBillingRec;
+  ConsultOrderRec      : TBAConsultOrderRec;
+  BAFactorsInRec        : TBATreatmentFactorsInRec;
+  BAFactorsRec      : TBAFactorsRec;
+  BAOrderList       : TStringList;
+  UpdatedBAOrderList: TStringList;
+  ChangeItemOrderNum: string;
+  i                 : integer;
+  OrderIDList       : TStringList;
+  OrderBillableList : TStrings;
+  BAOrderID         : string;
+  BILLING_AWARE     : boolean;
+
+  BAtmpOrderList    : TStringList;
+  BAFlagsIN         : string;
+  BAFlagsOUT        : TStringList;
+
+  SourceOrderID     : string; //BAPHII 1.3.2
+  TargetOrderID     : string; //BAPHII 1.3.2
+  BACopiedOrderFlags: TStringList; //BAPHII 1.3.2
+  BANurseConsultOrders: TStringList;
+
+ // Used to display Dx's on fordersSign and fReview grids
+  Dx1               : string;
+  Dx2               : string;
+  Dx3               : string;
+  Dx4               : string;
+  TFactors          : string;
+  SC,AO,IR          : string;
+  MST,HNC,CV,SHD,EC : string;
+  PLFactorsIndexes  : TStringList;
+  BAHoldPrimaryDx   : string;     //  used to verify primart dx has been changed.
+  BAPrimaryDxChanged: boolean;
+  NonBillableOrderList : TStringList;  // contains reference to those selected orders that are non billable
+  OrderListSCEI    : TSTringList;  //   OrderID Exists SCEI are required.
+  UnsignedOrders   : TStringList;  //    List of Orders from fReview when "don't sign" action
+  BAUnSignedOrders  : TStringList;  // OrderID^StsFlags  ie., 12345^NNNNNNN
+  BATFHints        : TStringList;
+  BASelectedList   : TStringList;  //  contains list of orders selected for signature.
+  BAConsultDxList: TStringList; //  contains dx^code^DxRequired(consults Only) selected for consults.
+  BAConsultPLFlags: TStringList;  // orderid^flags contains TF's if dx is selected from Problem list and Problem had TF associated.
+  BAFWarningShown: boolean;       // flag used to determine if Inactive ICD Code has been shown.
+  BAPersonalDX:  boolean;
+  BADeltedOrders: TStringList;
+
+implementation
+
+uses fBALocalDiagnoses, fOrdersSign, fReview, uCore, rCore, rPCE,uPCE, UBAConst, UBAMessages, UBACore,
+  VAUtils;
+
+procedure RemoveOrderFromDxList(thisOrderID: string);
+{
+  This routine written for CQ4589.  Called from fOrdersDC.ExecuteDCOrders().
+}
+var
+  i: integer;
+begin
+   if tempDxList.Count > 0 then
+      for i := 0 to tempDxList.Count-1 do
+        if tempDxNodeExists(thisOrderID) then
+           if ((TBADxRecord(tempDxList[i]).FOrderID = thisOrderID) and (tempDxList[i] <> nil)) then
+              begin
+              //tempDxList.Items[i] := nil; //remove reference to this item, effectively deleting it from the list (see Delphi help)
+              BACopiedOrderFlags.Clear;
+              UBAGlobals.SourceOrderID := '';
+              UBAGlobals.TargetOrderID := '';
+              tempDxList.Delete(i); //remove this item from the CIDC Dx list
+              end;
+end;
+
+procedure ResetOrderID(fromID: string; toID: string);
+var
+  i: integer;
+begin
+   for i := 0 to tempDxList.Count-1 do
+   begin
+     if TBADxRecord(tempDxList[i]).FOrderID = fromID then
+        TBADxRecord(tempDxList[i]).FOrderID := toID;
+     end;
+end;
+
+function GetTFCIForOrder(thisIndex: integer) : string;
+{
+ Retrieve BA flags for 'thisOrderID', and convert them to CPRS type uSignItems.StsChar array.
+}
+begin
+  Result := BACopiedOrderFlags[thisIndex];
+end;
+
+procedure CopyTFCIToTargetOrder(thisTargetOrderID: string; thisCheckBoxStatus: string);
+var
+  i: integer;
+begin
+  for i := 0 to tempDxList.Count - 1 do
+     if TBADxRecord(tempDxList[i]).FOrderID = thisTargetOrderID then
+        TBADxRecord(tempDxList[i]).FTreatmentFactors := thisCheckBoxStatus;
+end;
+
+procedure BACopyOrder(sourceOrderList: TStringList);
+{ BAPHII 1.3.2
+ Copy source order to target order, including Dx's, Dx descriptions, Treatment Factors and Clinical Indicators
+}
+var
+  newList,rList: TStringList;
+  i: integer;
+  x: string;
+
+begin
+   newList := TStringList.Create;
+   rList := TSTRingList.Create;
+   newList.Clear;
+   rList.Clear;
+
+   CopyDxRecord(UBAGlobals.SourceOrderID, UBAGlobals.TargetOrderID); //copy dx's to tempDxList record
+   newList.Add(UBAGlobals.SourceOrderID);
+   rList := rpcGetUnsignedOrdersBillingData(newList);
+
+   if RList.Count > 0 then
+   begin
+      for i := 0 to rList.Count-1 do
+      begin
+         x := rList.Strings[i];
+         BACopiedOrderFlags.Add(TargetOrderID + '^' + Piece(x,U,2) );
+      end;
+    end
+    else
+      begin
+        BACopiedOrderFlags.Add(TargetOrderID + '^' + frmSignOrders.GetCheckBoxStatus(sourceOrderID) );
+      end;
+end;
+
+procedure CopyTreatmentFactorsDxsToCopiedOrder(pSourceOrderID:string; pTargetOrderID:string);
+{
+ BAPHII 1.3.2
+}
+var
+   sourceOrderList: TStringList;
+   sourceOrderID: TStringList;
+   targetOrderIDLst: TStringList;
+begin
+     //Retrieve TF's/CI's from SOURCE Order
+        sourceOrderList := TStringList.Create;
+        targetOrderIDLst := TStringList.Create;
+        sourceOrderList.Clear;
+        targetOrderIDLst.Clear;
+        sourceOrderID := TStringList.Create;
+        sourceOrderID.Clear;
+        sourceOrderID.Add(Piece(pSourceOrderID, ';', 1));
+        targetOrderIDLst.Add(pTargetOrderID);
+     { if targetORderID is not billable do not create entry in BADXRecord - List  fix HDS00003130}
+        rpcNonBillableOrders(targetOrderIDLst);
+        if IsOrderBillable(pTargetOrderID) then
+        begin
+           tCallV(sourceOrderList, 'ORWDBA4 GETTFCI', [sourceOrderID]);
+           BACopyOrder(sourceOrderList);
+        end;
+end;
+
+procedure CopyTreatmentFactorsDxsToRenewedOrder;
+{
+ BAPHII 1.3.2
+}
+var
+   sourceOrderList: TStringList;
+   sourceOrderID: TStringList;
+   targetOrderList: TStringList;
+begin
+     //Retrieve TF's/CI's from SOURCE Order
+      sourceOrderList := TStringList.Create;
+      sourceOrderList.Clear;
+      sourceOrderID := TStringList.Create;
+      sourceOrderID.Clear;
+      targetOrderList := TStringList.Create;
+      targetOrderList.Clear;
+      sourceOrderID.Add(Piece(UBAGlobals.sourceOrderID, ';', 1));
+      { if targetORderID is not billable do not create entry in BADXRecord - List fix HDS00003130}
+      rpcNonBillableOrders(targetOrderList);
+      if IsOrderBillable(UBAGLobals.TargetOrderID) then
+      begin
+         tCallV(sourceOrderList, 'ORWDBA4 GETTFCI', [sourceOrderID]);
+         BACopyOrder(sourceOrderList); //BAPHII 1.3.2
+      end;
+end;
+
+procedure PutBADxListForOrder(var thisRecord: TBADxRecord; thisOrderID: string);
+{                              //existingRecord        //targetOrderID  }
+var
+  i: integer;
+  thisRec: TBADxRecord;
+begin
+   if UBAGlobals.tempDxNodeExists(thisOrderID) then
+     begin
+     if Assigned(tempDxList) then
+
+     try
+        for i := 0 to (tempDxList.Count - 1) do
+          begin
+           thisRec := TBADxRecord(tempDxList.Items[i]);
+
+           if Assigned(thisRec) then
+             if (thisRec.FOrderID = thisOrderID) then
+                begin
+                   thisRec.FBADxCode := thisRecord.FBADxCode;
+                   thisRec.FBASecDx1 := thisRecord.FBASecDx1;
+                   thisRec.FBASecDx2 := thisRecord.FBASecDx2;
+                   thisRec.FBASecDx3 := thisRecord.FBASecDx3;
+                   thisRec.FTreatmentFactors := thisRecord.FTreatmentFactors;
+                end;
+           end;
+
+     except
+        on EListError do
+           begin
+           {$ifdef debug}ShowMsg('EListError in UBAGlobals.PutBADxListForOrder()');{$endif}
+           raise;
+           end;
+     end;
+     end;
+end;
+
+procedure CopyDxRecord(sourceOrderID: string; targetOrderID: string);
+ {
+     BAPHII 1.3.1
+     Copy contents of one TBADxRecord to another.
+     If target record does NOT exist, then add it to the Dx list.
+     If target record DOES exist, then change its contents to those of source record.
+ }
+   var
+  thisRecord: TBADxRecord;
+  thatRecord: TBADxRecord;
+  billingInfo: TstringList;
+  orderList:  TStringList;
+begin
+   thisRecord := TBADxRecord.Create;
+   thatRecord := TBADxRecord.Create;
+   billingInfo := TStringList.Create;
+   orderList   := TStringList.Create;
+   if Assigned(billingInfo) then billingInfo.Clear;
+   if Assigned(orderList) then orderList.Clear;
+
+   if tempDxNodeExists(sourceOrderID) then
+     GetBADxListForOrder(thisRecord, sourceOrderID); //load data from source
+
+    if not tempDxNodeExists(targetOrderID) then
+    begin
+       SimpleAddTempDxList(targetOrderID);
+       orderList.Add(sourceOrderID);
+       billingInfo := rpcRetrieveSelectedOrderInfo(orderList);
+       if billingInfo.Count > 0 then
+       begin
+           thisRecord.FBADxCode := Piece(billingInfo.Strings[0],U,4) + U +
+                                   Piece(billingInfo.Strings[0],U,3);
+           thisRecord.FBASecDx1 := Piece(billingInfo.Strings[0],U,6) + U +
+                                   Piece(billingInfo.Strings[0],U,5);
+           thisRecord.FBASecDx2 := Piece(billingInfo.Strings[0],U,8) + U +
+                                   Piece(billingInfo.Strings[0],U,7);
+           thisRecord.FBASecDx3 := Piece(billingInfo.Strings[0],U,10) + U +
+                                   Piece(billingInfo.Strings[0],U,9);
+           if thisRecord.FBADxCode = CARET then thisRecord.FBADxCode := DXREC_INIT_FIELD_VAL;
+           if thisRecord.FBASecDx1 = CARET then thisRecord.FBASecDx1 := DXREC_INIT_FIELD_VAL ;
+           if thisRecord.FBASecDx2 = CARET then thisRecord.FBASecDx2 := DXREC_INIT_FIELD_VAL ;
+           if thisRecord.FBASecDx3 = CARET then thisRecord.FBASecDx3 := DXREC_INIT_FIELD_VAL ;
+
+       end
+       else
+           PutBADxListForOrder(thisRecord, targetOrderID);
+      //copy source data to temporary record
+       with thatRecord do
+         begin
+            FOrderID :=  targetOrderID;
+            FBADxCode := thisRecord.FBADxCode;
+            FBASecDx1 := thisRecord.FBASecDx1;
+            FBASecDx2 := thisRecord.FBASecDx2;
+            FBASecDx3 := thisRecord.FBASecDx3;
+            PutBADxListForOrder(thatRecord, targetOrderID);
+         end;
+    end;
+end;
+
+
+function GetPrimaryDx(thisOrderID: string) : string;
+{
+BAPHII 1.3.1
+}
+var
+  retVal: TBADxRecord;
+begin
+  retVal := TBADxRecord.Create;
+  GetBADxListForOrder(retVal, thisOrderID);
+  Result := retVal.FBADxCode;
+end;
+
+function AllSelectedDxBlank(const Caller: smallint) : boolean;
+var
+  i: smallint;
+  selectedOrderID: string;
+begin
+  Result := true;
+
+  case Caller of
+     F_ORDERS_SIGN: begin
+                       try
+                          for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
+                              if (frmSignOrders.clstOrders.Selected[i]) then
+                                 begin
+                                 selectedOrderID :=  TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
+                                 if (tempDxNodeExists(selectedOrderID)) then
+                                      Result := false;
+                                 end;
+                       except
+                           on EListError do
+                             begin
+                              {$ifdef debug}ShowMsg('EListError in UBAGlobals.AllSelectedDxBlank() - F_ORDERS_SIGN');{$endif}
+                              raise;
+                             end;
+                       end;
+                    end;
+     F_REVIEW:      begin
+                       try
+                          for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
+                              if (fReview.frmReview.lstReview.Selected[i]) then
+                                 begin
+                                 selectedOrderID :=  TOrder(fReview.frmReview.lstReview.Items.Objects[i]).ID;
+                                 if tempDxNodeExists(selectedOrderID) then
+                                      Result := false;
+                                 end;
+                       except
+                           on EListError do
+                             begin
+                              {$ifdef debug}ShowMsg('EListError in UBAGlobals.AllSelectedDxBlank() - F_REVIEW');{$endif}
+                              raise;
+                             end;
+                       end;
+                    end;
+  end; //case
+end;
+
+function GetDxNodeIndex(thisOrderID: string) : smallint;
+var
+  i: integer;
+  thisRec: TBADxRecord;
+begin
+  Result := 0;
+
+   if Assigned(tempDxList) then
+
+   try
+        for i := 0 to (tempDxList.Count - 1) do
+           begin
+            thisRec := TBADxRecord(tempDxList.Items[i]);
+            if Assigned(thisRec) then
+              if (thisRec.FOrderID = thisOrderID) then
+                 Result := i;
+            end;
+  except
+      on EListError do
+        begin
+         {$ifdef debug}ShowMsg('EListError in UBAGlobals.GetDxNodeIndex()');{$endif}
+         raise;
+        end;
+  end;
+end;
+
+function DiagnosesMatch(var List1: TStringList; var List2: TStringList) : boolean;
+var
+  i: smallint;
+begin
+  Result := false;
+
+  // If the number of Dx's in the lists differs, then bail
+  if (List1.Count <> List2.Count) then
+     begin
+     Result := false;
+     Exit;
+     end;
+
+  List1.Sort;
+  List2.Sort;
+
+  try
+     for i := 0 to (List1.Count - 1) do
+        if (List1.Strings[i] <> List2.Strings[i]) then
+           Result := false
+        else
+           Result := true;
+  except
+      on EListError do
+        begin
+         {$ifdef debug}ShowMsg('EListError in UBAGlobals.DiagnosesMatch()');{$endif}
+         raise;
+        end;
+  end;
+end;
+
+function CountSelectedOrders(const Caller: smallint) : smallint;
+var
+  i: integer;
+  selectedOrders: smallint;
+begin
+  selectedOrders := 0;
+
+  // How many orders selected?
+  case Caller of
+     F_ORDERS_SIGN: begin
+                       try
+                          for i := 0 to (fOrdersSign.frmSignOrders.clstOrders.Items.Count-1) do
+                              if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+                                   Inc(selectedOrders);
+                       except
+                          on EListError do
+                             begin
+                             {$ifdef debug}ShowMsg('EListError in UBAGlobals.CountSelectedOrders() - F_ORDERS_SIGN');{$endif}
+                             raise;
+                             end;
+                       end;
+                    end;
+     F_REVIEW:      begin
+                       try
+                          for i := 0 to (fReview.frmReview.lstReview.Items.Count-1) do
+                              if (fReview.frmReview.lstReview.Selected[i]) then
+                                   Inc(selectedOrders);
+                       except
+                          on EListError do
+                             begin
+                             {$ifdef debug}ShowMsg('EListError in UBAGlobals.CountSelectedOrders() - F_REVIEW');{$endif}
+                             raise;
+                             end;
+                       end;
+                    end;
+  end; //case
+
+  Result := selectedOrders;
+
+end;
+
+function CompareOrderDx(const Caller: smallint) : boolean;
+var
+  i: integer;
+  firstSelectedID: string;
+  thisOrderID: string;
+  firstDxRec: TBADxRecord;
+  compareDxRec: TBADxRecord;
+  thisStringList: TStringList;
+  thatStringList: TStringList;
+begin
+  Result := false;
+  firstSelectedID := '';
+  firstDxRec := nil;
+  firstDxRec := TBADxRecord.Create;
+  thisStringList := TStringList.Create;
+  thisStringList.Clear;
+  thatStringList := TStringList.Create;
+  thatStringList.Clear;
+
+  case Caller of
+     F_ORDERS_SIGN: begin
+                       try
+                          for i := 0 to (fOrdersSign.frmSignOrders.clstOrders.Items.Count-1) do
+                              if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+                                 begin
+                                 firstSelectedID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
+                                 Break;
+                                 end;
+                       except
+                          on EListError do
+                             begin
+                             {$ifdef debug}ShowMsg('EListError in UBAGlobals.CompareOrderDx() - F_ORDERS_SIGN');{$endif}
+                             raise;
+                             end;
+                       end;
+                    end;
+     F_REVIEW:      begin
+                       try
+                          for i := 0 to (fReview.frmReview.lstReview.Items.Count-1) do
+                              if (fReview.frmReview.lstReview.Selected[i]) then
+                                 begin
+                                 firstSelectedID := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID;
+                                 Break;
+                                 end;
+                       except
+                          on EListError do
+                             begin
+                             {$ifdef debug}ShowMsg('EListError in UBAGlobals.CompareOrderDx() - F_REVIEW');{$endif}
+                             raise;
+                             end;
+                       end;
+                    end;
+  end; //case
+
+  firstDxRec := TBADxRecord.Create;
+  InitializeNewDxRec(firstDxRec);
+  GetBADxListForOrder(firstDxRec, firstSelectedID);
+
+  // first string to compare
+  thisStringList.Add(firstDxRec.FBADxCode);
+  thisStringList.Add(firstDxRec.FBASecDx1);
+  thisStringList.Add(firstDxRec.FBASecDx2);
+  thisStringList.Add(firstDxRec.FBASecDx3);
+
+  case Caller of
+     F_ORDERS_SIGN: begin
+                       try
+                          for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
+                              if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+                                 begin
+                                 thisOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
+                                 // If order ID is same as the first selected order, then skip it
+                                 if thisOrderID = firstSelectedID then
+                                      Continue
+                                 else
+                                     begin
+                                     compareDxRec := TBADxRecord.Create;
+                                     InitializeNewDxRec(compareDxRec);
+                                     GetBADxListForOrder(compareDxRec, thisOrderID);
+
+                                     thatStringList.Add(compareDxRec.FBADxCode);
+                                     thatStringList.Add(compareDxRec.FBASecDx1);
+                                     thatStringList.Add(compareDxRec.FBASecDx2);
+                                     thatStringList.Add(compareDxRec.FBASecDx3);
+
+                                     if DiagnosesMatch(thisStringList, thatStringList) then
+                                         Result := true;
+                                     end;
+                                 end;
+                       except
+                          on EListError do
+                             begin
+                             {$ifdef debug}ShowMsg('EListError in UBAGlobals.CompareOrderDx() - F_ORDERS_SIGN');{$endif}
+                             raise;
+                             end;
+                       end;
+                    end;
+     F_REVIEW:      begin
+                       try
+                          for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
+                              if (fReview.frmReview.lstReview.Selected[i]) then
+                                 begin
+                                 thisOrderID := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID;
+                                 // If order ID is same as the first selected order, then skip it
+                                 if thisOrderID = firstSelectedID then
+                                      Continue
+                                 else
+                                     begin
+                                     compareDxRec := TBADxRecord.Create;
+                                     InitializeNewDxRec(compareDxRec);
+                                     GetBADxListForOrder(compareDxRec, thisOrderID);
+
+                                     thatStringList.Add(compareDxRec.FBADxCode);
+                                     thatStringList.Add(compareDxRec.FBASecDx1);
+                                     thatStringList.Add(compareDxRec.FBASecDx2);
+                                     thatStringList.Add(compareDxRec.FBASecDx3);
+
+                                     if DiagnosesMatch(thisStringList, thatStringList) then
+                                         Result := true;
+                                     end;
+                                 end;
+                          except
+                          on EListError do
+                             begin
+                             {$ifdef debug}ShowMsg('EListError in UBAGlobals.CompareOrderDx() - F_REVIEW');{$endif}
+                             raise;
+                             end;
+                          end;
+                    end;
+  end; //case
+
+  if Assigned(thisStringList) then
+     FreeAndNil(thisStringList);
+
+  if Assigned(thatStringList) then
+     FreeAndNil(thatStringList);
+end;
+
+procedure GetBADxListForOrder(var thisRetVal: TBADxRecord; thisOrderID: string);
+var
+  i: integer;
+  thisRec: TBADxRecord;
+begin
+   if UBAGlobals.tempDxNodeExists(thisOrderID) then
+     begin
+
+     if Assigned(tempDxList) then
+     for i := 0 to (tempDxList.Count - 1) do
+     begin
+        thisRec := TBADxRecord(tempDxList.Items[i]);
+
+                 if Assigned(thisRec) then
+                   if (thisRec.FOrderID = thisOrderID) then
+                      begin
+                      with thisRetVal do
+                          begin
+                             FOrderID := thisRec.FOrderID;
+                             FBADxCode := StringReplace(thisrec.FBADxCode,'^',':',[rfReplaceAll]);
+                             FBASecDx1 := StringReplace(thisrec.FBASecDx1,'^',':',[rfReplaceAll]);
+                             FBASecDx2 := StringReplace(thisrec.FBASecDx2,'^',':',[rfReplaceAll]);;
+                             FBASecDx3 := StringReplace(thisrec.FBASecDx3,'^',':',[rfReplaceAll]);
+                          end;
+                      end;
+                 end;
+        end;
+end;
+
+procedure DestroyDxList;
+var
+   i: integer;
+begin
+  if Assigned(tempDxList) then
+     for i := 0 to pred(UBAGlobals.tempDxList.Count) do
+        TObject(tempDxList[i]).Free;
+
+     tempDxList := nil;
+     FreeAndNil(tempDxList);
+end;
+
+procedure SimpleAddTempDxList(thisOrderID: string);
+var
+   tempDxRec: TBADxRecord;
+begin
+     frmBALocalDiagnoses.LoadTempRec(tempDxRec, thisOrderID);
+     UBAGlobals.tempDxList.Add(TBADxRecord(tempDxRec));
+end;
+
+procedure SetBADxList;
+var
+  i: smallint;
+begin
+  if not Assigned(UBAGlobals.tempDxList) then
+     begin
+     UBAGlobals.tempDxList := TList.Create;
+     UBAGlobals.tempDxList.Count := 0;
+     end
+  else
+     begin
+     //Kill the old Dx list
+     for i := 0 to pred(UBAGlobals.tempDxList.Count) do
+        TObject(UBAGlobals.tempDxList[i]).Free;
+
+     UBAGlobals.tempDxList := nil;
+
+     //Create new Dx list for newly selected patient
+      if not Assigned(UBAGlobals.tempDxList) then
+         begin
+         UBAGlobals.tempDxList := TList.Create;
+         UBAGlobals.tempDxList.Count := 0;
+         end;
+     end;
+end;
+
+procedure SetBADxListForOrder(thisRec: TBADxRecord; thisOrderID: string);
+var
+  i: integer;
+  foundRec: TBADxRecord;
+begin
+   if UBAGlobals.tempDxNodeExists(thisOrderID) then
+     begin
+     foundRec := TBADxRecord.Create;
+
+     if Assigned(tempDxList) then
+           try
+             for i := 0 to (tempDxList.Count - 1) do
+                begin
+                 foundRec := TBADxRecord(tempDxList.Items[i]);
+
+                 if Assigned(thisRec) then
+                   if (thisOrderID = foundRec.FOrderID) then
+                      begin
+                      with foundRec do
+                          begin
+                          FOrderID := thisRec.FOrderID;
+                          FBADxCode := thisRec.FBADxCode;
+                          FBASecDx1 := thisRec.FBASecDx1;
+                          FBASecDx2 := thisRec.FBASecDx2;
+                          FBASecDx3 := thisRec.FBASecDx3;
+                          PutBADxListForOrder(foundRec, thisOrderID);
+                      end;
+                      Break;
+                      end;
+                 end;
+           except
+              on EListError do
+                 begin
+                 {$ifdef debug}ShowMsg('EListError in UBAGlobals.SetBADxListForOrder()');{$endif}
+                 raise;
+                 end;
+           end;
+     end;
+end;
+
+function SecondaryDxFull(thisOrderID: string) : boolean;
+var
+  i: integer;
+  thisRec: TBADxRecord;
+begin
+  Result := false;
+
+     try
+        for i := 0 to tempDxList.Count - 1 do
+           begin
+           thisRec := TBADxRecord(tempDxList.Items[i]);
+
+           if Assigned(thisRec) then
+               if thisRec.FOrderID = thisOrderID then
+                  begin
+                  if (thisRec.FBADxCode <> UBAConst.DXREC_INIT_FIELD_VAL) then
+                     if (thisRec.FBASecDx1 <> UBAConst.DXREC_INIT_FIELD_VAL) then
+                        if (thisRec.FBASecDx2 <> UBAConst.DXREC_INIT_FIELD_VAL) then
+                           if (thisRec.FBASecDx3 <> UBAConst.DXREC_INIT_FIELD_VAL) then
+                              Result := true;
+                  end;
+           end;
+     except
+        on EListError do
+           begin
+           {$ifdef debug}ShowMsg('EListError in UBAGlobals.SecondaryDxFull()');{$endif}
+           raise;
+           end;
+     end;
+end;
+
+procedure AddSecondaryDx(thisOrderID: string; thisDxCode: string);
+// Add a Secondary Dx to the first open slot in DxRec, if there IS an open slot
+var
+  thisRec: TBADxRecord;
+  i: integer;
+begin
+
+  try
+     for i := 0 to tempDxList.Count - 1 do
+        begin
+        thisRec := TBADxRecord(tempDxList.Items[i]);
+
+        if thisRec.FOrderID = thisOrderID then
+           begin
+           if (thisRec.FBASecDx1 = UBAConst.DXREC_INIT_FIELD_VAL) then
+              thisRec.FBASecDx1 := thisDxCode
+           else
+              if (thisRec.FBASecDx2 = UBAConst.DXREC_INIT_FIELD_VAL) then
+                 thisRec.FBASecDx2 := thisDxCode
+           else
+              if (thisRec.FBASecDx3 = UBAConst.DXREC_INIT_FIELD_VAL) then
+                 thisRec.FBASecDx3 := thisDxCode;
+           end
+        end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}ShowMsg('EListError in UBAGlobals.AddSecondaryDx()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+procedure InitializeConsultOrderRec(var thisDxRec: TBAConsultOrderRec);
+begin
+  with thisDxRec do
+  begin
+     FBAOrderID   := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBADxCode    := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBASecDx1    := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBASecDx2    := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBASecDx3    := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBATreatmentFactors:= UBAConst.DXREC_INIT_FIELD_VAL;
+  end;
+end;
+
+
+procedure InitializeNewDxRec(var thisDxRec: TBADxRecord);
+begin
+  with thisDxRec do
+     begin
+     FExistingRecordID := UBAConst.DXREC_INIT_FIELD_VAL;
+     FOrderID := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBADxCode := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBASecDx1 := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBASecDx2 := UBAConst.DXREC_INIT_FIELD_VAL;
+     FBASecDx3 := UBAConst.DXREC_INIT_FIELD_VAL;
+   end;
+end;
+
+procedure InitializeUnsignedOrderRec(var thisUnsignedRec: TBAUnsignedBillingRec);
+begin
+    with thisUnsignedRec do
+    begin
+       FBAOrderID    := UNSIGNED_REC_INIT_FIELD_VAL;
+       FBASTSFlags   := UNSIGNED_REC_INIT_FIELD_VAL;
+       FBADxCode     := UNSIGNED_REC_INIT_FIELD_VAL;
+       FBASecDx1     := UNSIGNED_REC_INIT_FIELD_VAL;
+       FBASecDx2     := UNSIGNED_REC_INIT_FIELD_VAL;
+       FBASecDx3     := UNSIGNED_REC_INIT_FIELD_VAL;
+  end;
+end;
+
+procedure InitializeTFactorsInRec(var thisTFactorsRecIn: TBATreatmentFactorsInRec);
+begin
+    with thisTFactorsRecIn do
+    begin
+       FBAOrderID     :=  UNSIGNED_REC_INIT_FIELD_VAL;
+       FBAEligible    :=  UNSIGNED_REC_INIT_FIELD_VAL;
+       FBATFactors    :=  UNSIGNED_REC_INIT_FIELD_VAL;
+    end;
+end;
+constructor TBAGlobals.Create;
+begin
+  inherited Create;
+end;
+// This procedure is called from uPCE.pas only --  do not delete.....
+procedure TBAGlobals.AddBAPCEDiag(DiagStr:string);
+begin
+  if (BAPCEDiagList.Count <= 0) then
+    BAPCEDiagList.Add('^Encounter Diagnoses');
+
+  BAPCEDiagList.Add(DiagStr);
+end;
+
+procedure TBAGlobals.ClearBAPCEDiagList;
+begin
+
+   BAPCEDiagList.Clear;
+end;
+
+constructor TBAPLRec.Create;
+begin
+  inherited Create;
+end;
+
+function TBAPLRec.BuildProblemListDxEntry(pDxCode:string): TStringList;
+// StringList used to store DX Codes selected from Encounter Form
+var
+  BADxIEN: string;
+  BAProviderStr, BAProviderName : string;
+  AList: TStringList;
+begin
+// Build Problem List record to be saved for selection.
+  PLlist     := TStringList.Create;
+  AList      := TStringList.Create;
+  AList.Clear;
+  PLlist.Clear;
+  BALocation := Encounter.Location;
+  BAProviderStr := IntToStr(Encounter.Provider);
+  BAProviderName := Encounter.ProviderName;
+  BADxIEN :=  sCallV('ORWDBA7 GETIEN9', [Piece(pDxCode,U,1)]);
+  BAPLPt.LoadPatientParams(AList);
+
+  //BAPLPt.PtVAMC
+  PLlist.Add('GMPFLD(.01)='+'"' +BADxIEN+ '^'+Piece(pDxCode,U,1)+'"');
+  PLlist.Add('GMPFLD(.03)=' +'"'+'0^' +'"');
+  PLlist.Add('GMPFLD(.05)=' + '"' +'^'+Piece(pDxCode,U,2)+ '"');
+  PLlist.Add('GMPFLD(.08)=' + '"'+ '^'+FloatToStr(FMToday)+'"');
+  PLlist.Add('GMPFLD(.12)=' + '"' + 'A^ACTIVE'+ '"');
+  PLlist.Add('GMPFLD(.13)=' + '"' + '^'+ '"');
+  PLlist.Add('GMPFLD(1.01)=' + '"'+ Piece(pDxCode,U,2) + '"');
+  PLlist.Add('GMPFLD(1.02)=' + '"'+'P' + '"');
+  PLlist.Add('GMPFLD(1.03)=' + '"'+ BAProviderStr + '^'+ BAProviderName + '"');
+  PLlist.Add('GMPFLD(1.04)=' + '"'+ BAProviderStr + '^' + BAProviderName + '"');
+  PLlist.Add('GMPFLD(1.05)=' + '"'+ BAProviderStr + '^' + BAProviderName + '"');
+  PLlist.Add('GMPFLD(1.08)=' +'"' + IntToStr(BALocation) + '^' + Encounter.LocationName + '"');
+  PLlist.Add('GMPFLD(1.09)=' + '"'+ FloatToStr(FMToday) +'"');
+  PLlist.Add('GMPFLD(10,0)=' + '"'+'0'+ '"');
+  Result := PLlist;
+  
+end;
+
+function TBAPLRec.FMToDateTime(FMDateTime: string): TDateTime;
+var
+  x, Year: string;
+begin
+  { Note: TDateTime cannot store month only or year only dates }
+  x := FMDateTime + '0000000';
+  if Length(x) > 12 then x := Copy(x, 1, 12);
+  if StrToInt(Copy(x, 9, 4)) > 2359 then x := Copy(x,1,7) + '.2359';
+  Year := IntToStr(17 + StrToInt(Copy(x,1,1))) + Copy(x,2,2);
+  x := Copy(x,4,2) + '/' + Copy(x,6,2) + '/' + Year + ' ' + Copy(x,9,2) + ':' + Copy(x,11,2);
+  Result := StrToDateTime(x);
+end;
+
+{-------------------------- TPLPt Class ----------------------}
+constructor TBAPLPT.Create(Alist:TStringList);
+var
+  i: integer;
+begin
+  for i := 0 to AList.Count - 1 do
+    case i of
+      0: PtVAMC             := Copy(Alist[i],1,999);
+      1: PtDead             := AList[i];
+      2: PtServiceConnected := (AList[i] = '1');
+      3: PtAgentOrange      := (AList[i] = '1');
+      4: PtRadiation        := (AList[i] = '1');
+      5: PtEnvironmental    := (AList[i] = '1');
+      6: PtBID              := Alist[i];
+      7: PtHNC              := (AList[i] = '1');
+      8: PtMST              := (AList[i] = '1');
+      9: PtSHAD              := (AList[i] = '1');
+    end;
+end;
+
+function TBAPLPt.GetGMPDFN(dfn:string;name:string):string;
+begin
+  Result := dfn + u + name + u + PtBID + u + PtDead;
+end;
+
+procedure TBAPLPt.LoadPatientParams(AList:TstringList);
+begin
+  FastAssign(rpcInitPt(Patient.DFN), AList);
+  BAPLPt := TBAPLPt.create(Alist);
+end;
+
+function TBAPLPt.rpcInitPt(const PatientDFN: string): TStrings ;  //*DFN*
+begin
+   CallV('ORQQPL INIT PT',[PatientDFN]);
+   Result := RPCBrokerV.Results;
+end ;
+
+function tempDxNodeExists(thisOrderID: string) : boolean;
+// Returns true if a node with the specified Order ID exists, false otherwise.
+var
+  i: integer;
+  thisRec: TBADxRecord;
+begin
+  Result := false;
+  if Assigned(tempDxList) then
+     try
+        for i := 0 to (tempDxList.Count - 1) do
+           begin
+            thisRec := TBADxRecord(tempDxList.Items[i]);
+
+            if Assigned(thisRec) then
+              if (thisRec.FOrderID = thisOrderID) then
+                 begin
+                 Result := true;
+                 Break;
+                 end;
+            end;
+     except
+        on EListError do
+           begin
+           {$ifdef debug}ShowMsg('EListError in UBAGlobals.tempDxNodeExists()');{$endif}
+           raise;
+           end;
+     end;
+end;
+ // HDS00003380
+function IsUserNurseProvider(pUserID: int64):boolean;
+begin
+   Result := False;
+   if BILLING_AWARE then
+   begin
+      if (pUserID <> 0) and PersonHasKey(pUserID, 'PROVIDER') then
+         if (uCore.User.OrderRole = OR_NURSE)  then
+            Result := True;
+   end;
+end;
+
+function GetPatientTFactors(pOrderList:TStringList):String;
+begin
+   Result := '';
+   Result := sCallV('ORWDBA1 SCLST',[Patient.DFN,pOrderList]);
+end;
+
+
+Initialization
+  BAPrimaryDxChanged := False;
+  BAFWarningShown    := False;
+  BAPersonalDX       := False;
+  BAHoldPrimaryDx      :=  DXREC_INIT_FIELD_VAL;
+  NonBillableOrderList := TStringList.Create;
+  BAPCEDiagList        := TStringList.Create;
+  OrderListSCEI        := TStringList.Create;
+  BAOrderList          := TStringList.Create;
+  UnSignedOrders       := TStringList.Create;
+  BAOrderIDList        := TStringList.Create;
+  BAUnSignedOrders     := TStringList.Create;
+  BATFHints            := TStringList.Create;
+  BAFactorsRec         := TBAFactorsRec.Create;
+  BAFactorsInRec       := TBATreatmentFactorsInRec.Create;
+  BASelectedList       := TStringList.Create;
+  PLFactorsIndexes     := TStringList.Create;
+  BAtmpOrderList       := TStringList.Create;
+  BACopiedOrderFlags   := TStringList.Create; //BAPHII 1.3.2
+  OrderIDList          := TStringList.Create;
+  BAConsultDxList      := TStringList.Create;
+  BAConsultPLFlags     := TStringList.Create;
+  BANurseConsultOrders := TStringList.Create;
+  BADeltedOrders       := TStringList.Create;
+  BAConsultDxList.Clear;
+  NonBillableOrderList.Clear;
+  OrderListSCEI.Clear;
+  UnSignedOrders.Clear;
+  BAOrderIDList.Clear;
+  BAUnSignedOrders.Clear;
+  BATFHints.Clear;
+  PLFactorsIndexes.Clear;
+  BASelectedList.Clear;
+  BAtmpOrderList.Clear;
+  OrderIDList.Clear;
+  BAConsultPLFlags.Clear;
+  BAPCEDiagList.Clear;
+  BANurseConsultOrders.Clear;
+  BADeltedOrders.Clear;
+
+end.
+
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAMessages.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAMessages.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/UBAMessages.pas	(revision 1676)
@@ -0,0 +1,43 @@
+unit UBAMessages;
+
+{$OPTIMIZATION OFF}
+{.$define debug}
+
+interface
+
+const
+
+  {$ifdef debug}
+  BA_ASSRTF                     = 'Assertion failed' + #13;
+  {$endif}
+
+  //CPRS User Messages
+  BA_MAX_DX_ALLOWED             = 'Can Not Add Diagnosis' + #13 +
+                                   'Reason: Maximum (4) diagnoses have already been applied to this order.' + #13 +
+                                   'You may use the ''Diagnosis Editor'' to manage diagnoses for order(s).';
+  BA_NO_ORDERS_SELECTED         = 'No orders have been selected.  Select one or more orders to be signed.';
+  BA_CONFIRM_DX_OVERWRITE       = '''Lookup Diagnoses'' action will overwrite any existing diagnoses for selected orders.'+#13+'Do you wish to proceed?';
+  BA_MAX_DX                     = 'A maximum of 4 diagnosis can be selected';
+  BA_BILLING_DATA_SAVE_FAILED   = 'Error: Billing data was not saved';
+
+  BA_NA_COPY_DISALLOWED         = 'Can''t copy ''N/A'' orders.  Select non-''N/A'' order(s), and retry the copy.';
+  BA_NA_PASTE_DISALLOWED        = 'Selected Diagnoses will not be pasted to orders flagged with N/A.';
+
+  BA_ONE_ORDER_ONLY             = 'Only 1 order at a time may be selected for copying';
+  BA_PERSONAL_LIST_UPDATED      = 'Personal Diagnoses List Updated.';
+  BA_NO_BILLABLE_ORDERS         = 'No billable orders have been selected.';
+
+  BA_INACTIVE_CODE              = 'Inactive Code';
+  BA_INACTIVE_ICD9_CODE_1       = 'The diagnosis code (';
+  BA_INACTIVE_ICD9_CODE_2       = ') is not active as of today''s date,' + #13#10+
+                                  'Please select another.';
+  BA_DATA_NOT_REQD              = '9';
+  BA_DUP_DX                     = 'Duplicate Diagnosis.';
+  BA_DUP_DX_DISALLOWED_1        = 'Diagnosis (';
+  BA_DUP_DX_DISALLOWED_2        = ') has already been selected.'; 
+
+
+
+implementation
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBALocalDiagnoses.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBALocalDiagnoses.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBALocalDiagnoses.dfm	(revision 1676)
@@ -0,0 +1,296 @@
+inherited frmBALocalDiagnoses: TfrmBALocalDiagnoses
+  Left = 272
+  Top = 142
+  Caption = 'Assign Diagnoses to Order(s)'
+  ClientHeight = 517
+  ClientWidth = 612
+  OldCreateOrder = False
+  Position = poScreenCenter
+  ShowHint = True
+  OnActivate = FormActivate
+  OnCreate = FormCreate
+  OnKeyPress = FormKeyPress
+  OnShow = FormShow
+  ExplicitWidth = 620
+  ExplicitHeight = 551
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 612
+    Height = 96
+    Align = alTop
+    Caption = 'pnlTop'
+    TabOrder = 0
+    DesignSize = (
+      612
+      96)
+    object lbOrders: TListBox
+      Left = 8
+      Top = 25
+      Width = 602
+      Height = 69
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      IntegralHeight = True
+      ItemHeight = 13
+      TabOrder = 1
+      OnMouseMove = lbOrdersMouseMove
+    end
+    object lblPatientName: TStaticText
+      Left = 8
+      Top = 8
+      Width = 76
+      Height = 17
+      Caption = 'PatientName'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 0
+    end
+  end
+  object pnlMain: TPanel [1]
+    Left = 0
+    Top = 96
+    Width = 612
+    Height = 259
+    Align = alClient
+    TabOrder = 1
+    object lblDiagSect: TLabel
+      Left = 9
+      Top = 1
+      Width = 241
+      Height = 17
+      AutoSize = False
+      Caption = 'Diagnosis Section'
+    end
+    object lblDiagCodes: TLabel
+      Left = 253
+      Top = 1
+      Width = 353
+      Height = 17
+      AutoSize = False
+      Caption = 'Diagnosis Codes'
+    end
+    object lbSections: TORListBox
+      Left = 9
+      Top = 14
+      Width = 238
+      Height = 199
+      IntegralHeight = True
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = lbSectionsClick
+      OnDrawItem = lbSectionsDrawItem
+      Caption = 'Diagnosis Section'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '3'
+    end
+    object btnOther: TButton
+      Left = 155
+      Top = 219
+      Width = 92
+      Height = 20
+      Caption = 'Other &Diagnosis'
+      TabOrder = 2
+      OnClick = btnOtherClick
+    end
+    object lbDiagnosis: TORListBox
+      Left = 253
+      Top = 16
+      Width = 353
+      Height = 225
+      IntegralHeight = True
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = lbDiagnosisClick
+      Caption = 'Diagnosis Section'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '1,2,3'
+    end
+  end
+  object pnlBottom: TORAutoPanel [2]
+    Left = 0
+    Top = 355
+    Width = 612
+    Height = 162
+    Align = alBottom
+    TabOrder = 2
+    DesignSize = (
+      612
+      162)
+    object cbAddToPDList: TCheckBox
+      Left = 459
+      Top = 33
+      Width = 129
+      Height = 17
+      Caption = 'Add to Personal Dx List'
+      TabOrder = 2
+      OnClick = cbAddToPDListClick
+    end
+    object cbAddToPL: TCheckBox
+      Left = 459
+      Top = 17
+      Width = 149
+      Height = 16
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      Caption = 'Add To Problem List'
+      TabOrder = 0
+      OnClick = cbAddToPLClick
+    end
+    object btnPrimary: TButton
+      Left = 480
+      Top = 57
+      Width = 72
+      Height = 19
+      Caption = '&Primary'
+      TabOrder = 3
+      OnClick = btnPrimaryClick
+    end
+    object btnRemove: TButton
+      Left = 480
+      Top = 81
+      Width = 72
+      Height = 19
+      Caption = '&Remove'
+      TabOrder = 4
+      OnClick = btnRemoveClick
+    end
+    object btnSelectAll: TButton
+      Left = 385
+      Top = 108
+      Width = 72
+      Height = 18
+      Caption = '&Select All'
+      TabOrder = 5
+      OnClick = btnSelectAllClick
+    end
+    object buOK: TButton
+      Left = 384
+      Top = 136
+      Width = 72
+      Height = 21
+      Caption = '&OK'
+      TabOrder = 6
+      OnClick = buOKClick
+    end
+    object buCancel: TButton
+      Left = 482
+      Top = 136
+      Width = 72
+      Height = 21
+      Caption = '&Cancel'
+      TabOrder = 7
+      OnClick = buCancelClick
+    end
+    object gbProvDiag: TGroupBox
+      Left = 8
+      Top = 0
+      Width = 449
+      Height = 105
+      Caption = 'Provisional Diagnosis'
+      TabOrder = 1
+      object lvDxGrid: TListView
+        Left = 2
+        Top = 15
+        Width = 445
+        Height = 88
+        Align = alClient
+        Color = clInfoBk
+        Columns = <
+          item
+            Caption = 'Add To PL/PD'
+            Width = 85
+          end
+          item
+            Caption = 'Primary'
+            MinWidth = 65
+            Width = 65
+          end
+          item
+            Caption = 'Diagnosis for Selected Orders'
+            MinWidth = 275
+            Width = 290
+          end>
+        Ctl3D = False
+        HideSelection = False
+        MultiSelect = True
+        ReadOnly = True
+        RowSelect = True
+        TabOrder = 0
+        ViewStyle = vsReport
+        OnClick = lvDxGridClick
+        OnKeyDown = lvDxGridKeyDown
+        OnKeyUp = lvDxGridKeyUp
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lbOrders'
+        'Status = stsDefault')
+      (
+        'Component = lblPatientName'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbSections'
+        'Label = lblDiagSect'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = lbDiagnosis'
+        'Label = lblDiagCodes'
+        'Status = stsOK')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cbAddToPDList'
+        'Status = stsDefault')
+      (
+        'Component = cbAddToPL'
+        'Status = stsDefault')
+      (
+        'Component = btnPrimary'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = buOK'
+        'Status = stsDefault')
+      (
+        'Component = buCancel'
+        'Status = stsDefault')
+      (
+        'Component = gbProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = lvDxGrid'
+        'Status = stsDefault')
+      (
+        'Component = frmBALocalDiagnoses'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBALocalDiagnoses.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBALocalDiagnoses.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBALocalDiagnoses.pas	(revision 1676)
@@ -0,0 +1,1586 @@
+unit fBALocalDiagnoses;
+ {.$define debug}
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ORCtrls, ExtCtrls,fPCELex, uConsults, ORFn,
+  rPCE,DBCtrls, DB, DBClient, uPCE, fEncounterFrame, ComCtrls, Grids, UBAGlobals,
+  Buttons, Menus, UBACore, UCore, VA508AccessibilityManager;
+
+type
+  DxRecord = Record
+         DxFiller1  : string;
+         DxFiller2  : string;
+         DxAddToPL  : string;
+         DxPrimary  : string;
+         DxCode     : string;
+     end;
+  TfrmBALocalDiagnoses = class(TfrmAutoSz)
+    pnlTop: TPanel;
+    lbOrders: TListBox;
+    pnlMain: TPanel;
+    lbSections: TORListBox;
+    pnlBottom: TORAutoPanel;
+    cbAddToPDList: TCheckBox;
+    cbAddToPL: TCheckBox;
+    btnPrimary: TButton;
+    btnRemove: TButton;
+    btnSelectAll: TButton;
+    buOK: TButton;
+    buCancel: TButton;
+    btnOther: TButton;
+    lbDiagnosis: TORListBox;
+    lblDiagSect: TLabel;
+    lblDiagCodes: TLabel;
+    lblPatientName: TStaticText;
+    gbProvDiag: TGroupBox;
+    lvDxGrid: TListView;
+    procedure buOKClick(Sender: TObject);
+    procedure buCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure Button4Click(Sender: TObject);
+    procedure lbSectionsClick(Sender: TObject);
+    procedure btnOtherClick(Sender: TObject);
+    procedure btnPrimaryClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure btnSelectAllClick(Sender: TObject);
+    procedure cbAddToPLClick(Sender: TObject);
+    procedure ProcessAddToItems;
+    procedure lbDiagnosisClick(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure AddDiagnosistoPersonalDiagnosesList1Click(Sender: TObject);
+    procedure AddDiagnosistoPersonalDiagnosesList2Click(Sender: TObject);
+
+    procedure cbAddToPDListClick(Sender: TObject);
+    procedure lbSectionsDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure lvDxGridKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure lvDxGridKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure lvDxGridClick(Sender: TObject);
+    procedure lbOrdersMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure FormKeyPress(Sender: TObject; var Key: Char);
+
+  private
+    { Private declarations }
+
+
+    inactiveCodes: integer;
+    procedure MainDriver;
+    procedure LoadEncounterForm;
+    procedure AddProbsToDiagnosis;
+    procedure AddPCEToDiagnosis;//**  adds dx's if selected currently from ecf
+    procedure AddPersonalDxToDiagnosisList;
+    procedure ListDiagnosisSections(Dest: TStrings);
+    procedure ListDiagnosisCodes(Section : String);
+    procedure DiagnosisSelection(SelectedDx: String);
+    procedure EnsurePrimary;
+    function  IsDxAlreadySelected(SelectedDx: string):boolean;
+    procedure BuildTempDxList;
+    procedure AssocDxToOrders;
+    procedure BuildBADxList;
+    procedure ListGlobalDx(pOrderIDList: TStringList);
+    procedure ListConsultDX(pOrderDxList: TStringList);
+    procedure DeselectGridItems;
+    procedure ListSelectedOrders;
+    procedure BuildConsultDxList(pDxList: TStringList);
+    function  AddToWhatList(IsPLChecked:boolean; IsPDLChecked:boolean):string;
+    procedure AddToProblemList;
+    procedure AddToPersonalDxList;
+    procedure InactiveICDNotification;
+    procedure LoadTempDXLists;
+    procedure SetAddToCBoxStatus;
+    procedure SetAddToCheckBoxStatus(ADiagnosis:string);
+    procedure ClearAndDisableCBoxes;
+    procedure ProcessMultSelections;
+    function  ProblemListDxFound(pDxCode:string):boolean;
+    function  PersonalListDxFound(pDxCode:string):boolean;
+    procedure ReSetCheckBoxStatus(pDxCode:String);
+    procedure DeleteSelectedDx;
+    function  IsCtrlDown: boolean;
+
+  public
+     FLastHintItemNum: integer;
+     procedure Enter(theCaller: smallint; pOrderIDList: TStringList);
+     procedure LoadTempRec(var thisRec: TBADxRecord; thisOrderID: string);
+
+  end;
+
+  const
+  TX799 = '799.9';
+  PROBLEM_LIST_SECTION = 'Problem List Items';
+  PERSONAL_DX_SECTION  = 'Personal Diagnoses List Items';
+
+var
+  deleteDX: boolean;
+  selectingDX: boolean;
+  FDxCode: string;
+  FDxSection: string;
+  PList: TextFile;
+  FName: string;
+  MaxDx : Integer;
+  GridItems: integer;
+  UpdatingGrid: boolean;
+  whoCalled: smallint;
+  currentOrderIDList: TStringList;
+  ProblemDxHoldList, PersonalDxHoldList: TStringList;
+  frmBALocalDiagnoses: TfrmBALocalDiagnoses;
+  lexIENHoldList: TStringList;   //** OrderID^Lexicon IEN
+
+
+implementation
+
+uses rCore, rODMeds, rODBase, rOrders, fRptBox, fODMedOIFA,
+  ORNet, fProbs, fOrdersSign, UBAConst,
+  UBAMessages, fReview, uSignItems, fODConsult, fFrame, VAUtils;
+
+var
+  uProblems    : TStringList;
+  BADiagnosis  : TStringList;
+  ECFDiagnosis : TStringList;
+  uLastDFN     : string;
+  uLastLocation: integer;
+  ListItem     : TListItem;
+  uPrimaryDxHold: string;
+  PrimaryChanged: boolean;
+{$R *.dfm}
+
+//*************  Entry point *****************//
+
+procedure TfrmBALocalDiagnoses.Enter(theCaller:smallint; pOrderIDList: TStringList);
+begin
+   selectingDX := False;
+   deleteDX    := False;
+   fBALocalDiagnoses.whoCalled := theCaller;
+   currentOrderIDList := pOrderIDList;
+   frmBALocalDiagnoses := TfrmBALocalDiagnoses.Create(Application);
+   ResizeFormToFont(TForm(frmBALocalDiagnoses));
+   frmBALocalDiagnoses.ShowModal;
+   frmBALocalDiagnoses.Release;
+
+end;
+procedure TfrmBALocalDiagnoses.FormCreate(Sender: TObject);
+begin
+     MaxDx := 4;
+     inactiveCodes := 0;
+     MainDriver;
+     GridItems := 0;
+     PrimaryChanged := False;
+     FLastHintItemNum := -1;
+     ClearAndDisableCBoxes
+end;
+
+procedure TfrmBALocalDiagnoses.FormKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+   if frmBALocalDiagnoses.IsCtrlDown then
+   begin
+     if ( Key = #10 ) then
+        frmBALocalDiagnoses.buOK.Click;
+   end;
+   
+end;
+
+procedure TfrmBALocalDiagnoses.ListDiagnosisSections(Dest: TStrings);
+{ return section names in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+    for i := 0 to BADiagnosis.Count - 1 do if CharAt(BADiagnosis[i], 1) = U then
+    begin
+       x := Piece(BADiagnosis[i], U, 2);
+       if Length(x) = 0 then x := '<No Section Name>';
+       Dest.Add(IntToStr(i) + U + Piece(BADiagnosis[i], U, 2) + U + x);
+    end;
+end;
+
+procedure TfrmBALocalDiagnoses.MainDriver;
+begin
+    BADiagnosis := TStringList.Create;
+    ECFDiagnosis := TStringList.Create;
+    uProblems := TStringList.Create;
+    lblPatientName.Caption := Patient.Name + ' Selected Orders';
+    DeselectGridItems;
+    
+    if whoCalled = F_CONSULTS then
+       ListConsultDX(uBAGlobals.BAConsultDxList)
+    else
+       ListGlobalDx(currentOrderIDList);
+
+    LoadEncounterForm;
+    ListDiagnosisSections(lbSections.Items);
+    ListSelectedOrders;
+    LoadTempDXLists;
+end;
+
+procedure TfrmBALocalDiagnoses.LoadTempRec(var thisRec: TBADxRecord; thisOrderID: string);
+begin
+  if frmFrame.TimedOut then exit;
+  thisRec := TBADxRecord.Create;
+  UBAGlobals.InitializeNewDxRec(thisRec);
+  //** Load it
+  thisRec.FOrderID := thisOrderID;
+   if pos( '(', UBAGlobals.Dx1) > 0 then
+     thisRec.FBADxCode := UBACore.StripTFactors(UBAGlobals.Dx1)
+   else
+      thisRec.FBADxCode := UBAGlobals.Dx1;
+
+   if pos( '(', UBAGlobals.Dx2) > 0 then
+     thisRec.FBASecDx1 := UBACore.StripTFactors(UBAGlobals.Dx2)
+   else
+      thisRec.FBASecDx1 := UBAGlobals.Dx2;
+
+   if pos( '(', UBAGlobals.Dx3) > 0 then
+     thisRec.FBASecDx2 := UBACore.StripTFactors(UBAGlobals.Dx3)
+   else
+      thisRec.FBASecDx2 := UBAGlobals.Dx3;
+
+   if pos( '(', UBAGlobals.Dx4) > 0 then
+     thisRec.FBASecDx3 := UBACore.StripTFactors(UBAGlobals.Dx4)
+   else
+      thisRec.FBASecDx3 := UBAGlobals.Dx4;
+
+ //**  Verify Diagnosis exists prior to adding to list.
+  if UBAGlobals.Dx1 <> '' then
+     BADiagnosis.Add(UBAGlobals.Dx1);
+  if UBAGlobals.Dx2 <> '' then
+     BADiagnosis.Add(UBAGlobals.Dx2);
+  if UBAGlobals.Dx3 <> '' then
+     BADiagnosis.Add(UBAGlobals.Dx3);
+  if UBAGlobals.Dx4 <> '' then
+     BADiagnosis.Add(UBAGlobals.Dx4);
+end;
+
+procedure TfrmBALocalDiagnoses.AssocDxToOrders;
+var
+  tmpFlagList: TStringList;
+  i: integer;
+  thisOrderID: string;
+  tempDxRec: TBADxRecord;
+  {$ifdef debug}thismsg: string;{$endif}
+begin
+   //** Initialize
+  if Assigned(UBAGlobals.OrderIDList) then
+     UBAGlobals.OrderIDList.Clear;
+  tmpFlagList := TStringList.Create;
+
+  //** Associate Dx's to Orders
+  if whoCalled = F_ORDERS_SIGN then
+  begin
+  for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
+  begin
+      if (frmSignOrders.clstOrders.Selected[i]) then
+      begin
+         thisOrderID := TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
+         if Not UBACore.IsOrderBillable(thisOrderID) then Continue; //BAPHII 1.4.16
+            LoadTempRec(tempDxRec, thisOrderID);
+         if ((UBAGlobals.tempDxList <> nil) and (not UBAGlobals.tempDxNodeExists(thisOrderID))) then
+            UBAGlobals.tempDxList.Add(TBADxRecord(tempDxRec))
+         else
+         begin
+          //** Order already exists in Dx list, so modifiy existing Dx record
+            SetBADxListForOrder(tempDxRec, thisOrderID);
+         end;
+            //** Add it to OrderID string list
+         if Assigned(UBAGlobals.OrderIDList) then
+            UBAGlobals.OrderIDList.Add(thisOrderID);
+      end; //** if
+   end; //** for
+   end
+   else
+      if whoCalled = F_REVIEW then
+         begin
+         DeselectGridItems;
+         for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
+         begin
+            if (frmReview.lstReview.Selected[i]) then
+            begin
+               thisOrderID := TOrder(fReview.frmReview.lstReview.Items.Objects[i]).ID;
+               if Not UBACore.IsOrderBillable(thisOrderID) then Continue; //BAPHII 1.4.16
+               LoadTempRec(tempDxRec, thisOrderID);
+               if ((UBAGlobals.tempDxList <> nil) and (not UBAGlobals.tempDxNodeExists(thisOrderID))) then
+                  UBAGlobals.tempDxList.Add(TBADxRecord(tempDxRec))
+               else
+               begin
+                      //** Order already exists in Dx list, so modifiy existing Dx record
+                  SetBADxListForOrder(tempDxRec, thisOrderID);
+                  GetUnsignedOrderFlags(thisOrderID,tmpFlagList);
+              end;
+
+                    //** Add it to OrderID string list
+               if Assigned(UBAGlobals.OrderIDList) then
+                  UBAGlobals.OrderIDList.Add(thisOrderID);
+            end;
+         end; //for
+   end;
+end;
+
+procedure TfrmBALocalDiagnoses.buOKClick(Sender: TObject);
+begin
+  inherited;
+//*** Load selected diagnosis to Temp List*** /////
+
+   if whoCalled <> F_CONSULTS then
+   begin
+      BuildTempDxList; //** Loop thru dx grid and build list of dx's
+      BuildBADxList;   //** Save selected Dx  passed to PCE-Diagnosis Tab
+      AssocDxToOrders; //** Add selected Dx to TList for display and tracking.
+   end
+   else
+   begin
+      BuildConsultDxList(UBAGlobals.BAConsultDxList); //** Loop thru dx grid and build list of dx's
+      fODConsult.consultQuickOrder := False; // allow multiple dx's if first selection was a quick order
+   end;
+   ProcessAddToItems; //** Items flagged with 'add' will be added to the Problem list table
+   lvDxGrid.Clear;
+   frmBALocalDiagnoses.Close;
+
+end;
+
+procedure  TfrmBALocalDiagnoses.LoadEncounterForm;
+{ load the major coding lists that are used by the encounter form for a given location }
+var
+  i: integer;
+  uTempList: TStringList;
+  EncDt: TFMDateTime;
+begin
+    uLastLocation := Encounter.Location;
+    EncDt := Trunc(FMToday);
+  // ** add problems to the top of diagnoses.
+    uTempList := TstringList.Create;
+    BADiagnosis.clear;
+    tCallV(uTempList,'ORWPCE DIAG',  [uLastLocation, EncDt]);
+    BADiagnosis.add(utemplist.strings[0]);
+    AddProbsToDiagnosis;
+
+    // ** Loading Diagnoses if previously entered via the Encounter Form
+    AddPersonalDxToDiagnosisList;
+
+    if Assigned(BAPCEDiagList) then
+    begin
+       AddPCEToDiagnosis;
+    end;
+
+    for i := 1 to (uTempList.Count-1) do
+       BADiagnosis.add(uTemplist.strings[i]);
+
+end;
+
+// **  Add problem-list enteries to Diagnosis selection list
+procedure TfrmBALocalDiagnoses.AddProbsToDiagnosis;
+var
+  i : integer;
+  EncDt: TFMDateTime;
+  ProblemListTFactors: string;
+begin
+   // ** Get problem list
+   EncDt := Trunc(FMToday);
+   uLastDFN := Patient.DFN;
+   tCallV(UProblems, 'ORWPCE ACTPROB', [Patient.DFN, EncDT]);
+
+   if uProblems.Count > 0 then
+   begin
+      BADiagnosis.add('^Problem List Items');
+      for i := 1 to (uProblems.count-1) do
+      begin
+        // ** add PL Treatment Factors to Dx Display List.
+   //HDS00006194     if (Piece(uproblems.Strings[i],U,3) = '799.9') then continue;
+   //HDS00006194     if (Piece(uproblems.Strings[i],U,2) = '799.9') then continue;
+              // change made to allow 799.9 into selection list
+        AttachPLTFactorsToDx(ProblemListTFactors,uProblems.Strings[i]);
+
+        if (Piece(uproblems.Strings[i], U, 11) =  '#') then
+        begin
+           BADiagnosis.add(Piece(uProblems.Strings[i],U,3) + U +                   // PL code inactive
+                           Piece(uProblems.Strings[i],U,2) + U + '#');
+           inc(inactiveCodes);
+        end
+        else if (Piece(uproblems.Strings[i], U, 10) =  '') then                  // no inactive date for code
+           BADiagnosis.add(ProblemListTFactors)
+        else if (Trunc(StrToFloat(Piece(uProblems.Strings[i], U, 10))) > EncDT) then     // code active as of EncDt
+           BADiagnosis.add(Piece(uProblems.Strings[i],U,3) + U +
+                           ProblemListTFactors )
+        else
+           BADiagnosis.add(Piece(uProblems.Strings[i],U,3) + U +                   // PL code inactive
+                           Piece(uProblems.Strings[i],U,2) + U + '#');
+    end;
+  end;
+end;
+
+procedure TfrmBALocalDiagnoses.AddPCEToDiagnosis;
+var
+  i: integer;
+begin
+     for i := 0 to (BAPCEDiagList.Count-1) do
+     begin
+        if CharAt(BAPCEDiagList.Strings[i], 1) = U then
+           BADiagnosis.Add(BAPCEDiagList.Strings[i])  //** section header
+        else
+           BADiagnosis.add(Piece(BAPCEDiagList.Strings[i],U,1) + U + Piece(BAPCEDiagList.Strings[i],U,2));
+    end;
+end;
+
+procedure TfrmBALocalDiagnoses.AddPersonalDxToDiagnosisList;
+var
+ personalDxList: TStringList;
+ personalDxListSorted: TStringList;
+ i,z: integer;
+begin
+
+   personalDxList := TStringList.Create;
+   personalDxListSorted := TStringlist.Create;
+   personalDxList.Clear;
+   personalDxListSorted.Clear;
+   personalDxList := rpcGetPersonalDxList(User.DUZ);
+   for i := 0 to personalDxList.Count-1 do
+      personalDxListSorted.Add(Piece(personalDXList.Strings[i],U,2) + U + (Piece(personalDXList.Strings[i],U,1)) );
+   //******  sort personal dx list alphabetical by code name
+    personalDxListSorted.Sorted := False;
+    personalDxListSorted.Sorted := True ;
+    personalDxList.Clear;
+    for z := 0 to personalDxListSorted.Count-1 do
+        personalDxList.Add(Piece(personalDXListSorted.Strings[z],U,2) + U + (Piece(personalDXListSorted.Strings[z],U,1)) );
+
+
+   if personalDxList.Count > 0  then
+   begin
+      BADiagnosis.add(U + DX_PERSONAL_LIST_TXT);
+      for i := 0 to personalDxList.Count-1 do
+         BADiagnosis.Add(personalDxList.Strings[i]);
+   end
+   else
+      BADiagnosis.add('^NO Personal Diagnoses Available');
+end;
+
+
+procedure TfrmBALocalDiagnoses.buCancelClick(Sender: TObject);
+begin
+   lvDxGrid.Clear;
+   fODConsult.displayDXCode := 'DXCANCEL';// retain original dx in consult dialog
+   uBAGlobals.TFactors := '';  // clear treatment factors from last order.// hds00006266
+   Close;
+end;
+
+procedure TfrmBALocalDiagnoses.Button4Click(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TfrmBALocalDiagnoses.lbSectionsClick(Sender: TObject);
+var i: integer;
+begin
+     for i := 0 to lbSections.Items.Count-1 do
+     begin
+        if(lbSections.Selected[i]) then
+        begin
+           lvDxGrid.ClearSelection;
+           ClearAndDisableCBoxes;
+           ListDiagnosisCodes(lbSections.Items[i]);
+           FDXSection := lbSections.Items[i];
+           Break;
+        end;
+    end;
+end;
+
+procedure TfrmBALocalDiagnoses.ListDiagnosisCodes(Section: String);
+var
+i,j: integer;
+a: string;
+begin
+   lbDiagnosis.Clear;
+
+   for i := 0 to BADiagnosis.Count-1 do
+   begin
+      a := BADiagnosis.Strings[i];
+      if Piece(BADiagnosis[i], U, 2) = (Piece(Section,U,2)) then
+         Break;
+   end;
+
+   inc(i);
+
+   for j := i to BADiagnosis.Count-1 do
+   begin
+      if Piece(BADiagnosis[j], U, 0) = '' then
+         break
+      else
+      begin
+         a :=  Piece(BADiagnosis[j], U, 2) + U + Piece(BADiagnosis[j], U, 1) + U + '        ' + Piece(BADiagnosis[j], U, 3) ;
+         if a = '' then ShowMsg('found nothing');
+            lbDiagnosis.Items.Add(a);
+      end;
+   end;
+end;
+
+procedure TfrmBALocalDiagnoses.btnOtherClick(Sender: TObject);
+var
+  Match: string;
+  selectedDx: string;
+  i: integer;
+  lexIEN: string;
+begin
+  lvDxGrid.ClearSelection;
+  ProvDx.Code := ''; //** init
+  lexIEN := '';
+  BAPersonalDX := True; //** returns LexIEN in piece 3
+  //** Execute LEXICON
+  LexiconLookup(Match, LX_ICD);
+  if Match = '' then Exit;
+  fOrdersSign.ProvDx.Code := Piece(Match, U, 1);
+  fOrdersSign.ProvDx.Text := Piece(Match, U, 2);
+  lexIEN := Piece(Match, U, 3);
+  i := Pos(' (ICD', fOrdersSign.ProvDx.Text);
+  if i = 0 then i := Length(ProvDx.Text) + 1;
+  if fOrdersSign.ProvDx.Text[i-1] = '*' then i := i - 2;
+  fOrdersSign.ProvDx.Text := Copy(fOrdersSign.ProvDx.Text, 1, i - 1);
+  fOrdersSign.ProvDx.Text := StringReplace(fOrdersSign.ProvDx.Text,':',' ',[rfReplaceAll]);
+  fOrdersSign.ProvDx.Code := StringReplace(fOrdersSign.ProvDx.Code,':',' ',[rfReplaceAll]);
+
+  selectedDx := (fOrdersSign.ProvDx.Text + ':' + fOrdersSign.ProvDx.Code);
+   if strLen(PChar(lexIEN) ) > 0 then
+      lexIENHoldList.Add(fOrdersSign.ProvDx.Code + U + lexIEN);
+
+  //** Begin CQ4819
+  if not IsDxAlreadySelected(selectedDx) then
+  begin
+     if UBACore.IsICD9CodeActive(fOrdersSign.ProvDx.Code,'ICD',0) then
+        DiagnosisSelection(selectedDx)
+     else
+        InfoBox(BA_INACTIVE_ICD9_CODE_1 + fOrdersSign.ProvDx.Code + BA_INACTIVE_ICD9_CODE_2 , BA_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+  end;
+  //** End CQ4819
+  BAPersonalDX := False;
+  SetAddToCheckBoxStatus(selectedDX);
+
+end;
+
+procedure TfrmBALocalDiagnoses.btnPrimaryClick(Sender: TObject);
+var
+  i: shortint;
+  Primary: boolean;
+begin
+  inherited;
+   Primary := FALSE;
+   if lvDxGrid.Items.Count = 0 then Exit; //** Exit if list empty
+   for i := 0 to lvDxGrid.Items.Count-1 do
+   begin
+   if(lvDxGrid.Items[i].Selected) then
+   begin
+      if not Primary then
+      begin
+         LvDxGrid.Items[i].SubItems[0] := UBAConst.PRIMARY_DX;
+         Primary :=TRUE;
+      end;
+   end
+   else
+      LvDxGrid.Items[i].SubItems[0] := UBAConst.SECONDARY_DX ;
+   end;
+
+     if not Primary then EnsurePrimary;
+end;
+
+procedure TfrmBALocalDiagnoses.btnRemoveClick(Sender: TObject);
+begin
+  inherited;
+  deleteDX := True;
+  frmBALocalDiagnoses.DeleteSelectedDX;
+  ClearAndDisableCBoxes;
+  DeselectGridItems;
+  EnsurePrimary;
+  deleteDX := False;
+  // if all dx's removed, clear out displaycode
+  if lvDxGrid.items.Count = 0 then FODConsult.displayDXCode := '';
+end;
+
+procedure TfrmBALocalDiagnoses.btnSelectAllClick(Sender: TObject);
+var
+ i: integer;
+begin
+  inherited;
+  for i := 0 to lvDxGrid.Items.Count-1 do
+  begin
+      if cbAddToPDList.Enabled then
+         SetAddToCheckBoxStatus(lvDxGrid.Items[i].Subitems[1]);  //** personal dx
+      if cbAddToPL.Enabled then
+         SetAddToCheckBoxStatus(lvDxGrid.Items[i].Subitems[1]);; //** problem dx
+  end;
+
+  lvDxGrid.MultiSelect := true;
+  lvDxGrid.SelectAll;
+  lvDxGrid.Setfocus;
+end;
+
+procedure TfrmBALocalDiagnoses.DiagnosisSelection(SelectedDx: String);
+begin
+// ** Set up Dx grid
+ if lvDxGrid.Items.Count < MaxDx then
+    begin
+      if lvDxGrid.Items.count = 0 then
+         begin
+            ListItem := lvDxGrid.Items.Add; // ** add the row instance prior to adding text //  adding text.
+            ListItem.SubItems.Add(UBAConst.PRIMARY_DX);
+            ListItem.SubItems.Add(SelectedDX);
+         end
+      else
+         begin
+            DeselectGridItems;
+            ListItem := lvDxGrid.Items.Add;    // ** add the row instance prior to adding text.
+            ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+            ListItem.SubItems.Add(SelectedDX);
+         end;
+    end
+ else
+    begin
+       DeselectGridItems;
+       ShowMsg(BA_MAX_DX); //** max  4 diagnoses per order
+    end;
+end;
+
+// insure unique diagnoses entered.
+function TfrmBALocalDiagnoses.IsDxAlreadySelected(SelectedDx: string):boolean;
+var i: integer;
+x: string;
+begin
+   Result := False;
+   with lvDxGrid do
+   begin
+      for i := 0 to lvDxGrid.Items.Count-1 do
+      begin
+         x := lvDxGrid.Items[i].Subitems[1];
+         if Piece(x,':',2) = Piece(SelectedDx,':',2) then
+         begin
+            Result := True;
+            Break;
+         end;
+      end;
+  end;
+end;
+
+function  TFrmBALocalDiagnoses.ProblemListDxFound(pDxCode:string):boolean;
+var
+ i: integer;
+ problemDx: string;
+begin
+    Result := False;
+    for i := 0 to ProblemDXHoldList.Count -1 do
+    begin
+      problemDX := ProblemDXHoldList.Strings[i];
+      problemDX := Piece(ProblemDX,':',2);
+      if pDxCode = problemDX then
+      begin
+         Result := True;
+         break;
+      end;
+    end;//** for
+end;
+
+function  TFrmBALocalDiagnoses.PersonalListDxFound(pDxCode:string):boolean;
+var
+ i: integer;
+ personalDx: string;
+begin
+   Result := False;
+   for i := 0 to PersonalDxHoldList.Count -1 do
+   begin
+      personalDX := PersonalDXHoldList.Strings[i];
+      personalDX := Piece(personalDX,':',2);
+      if pDxCode = personalDX then
+      begin
+         Result := True;
+         break;
+      end;
+   end;
+end;
+
+
+procedure TfrmBALocalDiagnoses.EnsurePrimary;
+var
+   Primary: boolean;
+   i : integer;
+begin
+  Primary := False;
+
+  for i := 0 to lvDxGrid.Items.Count-1 do
+  begin
+     if LvDxGrid.Items[i].SubItems[0] = UBAConst.PRIMARY_DX then
+     begin
+        Primary := True;
+        Break;
+     end;
+  end;
+
+  if not Primary then
+  begin
+     if lvDxGrid.Items.Count > 0 then
+        lvDxGrid.Items[0].Subitems[0] := UBAConst.PRIMARY_DX;
+  end;
+end;
+
+procedure TfrmBALocalDiagnoses.cbAddToPLClick(Sender: TObject);
+var i: integer;
+begin
+  inherited;
+  if cbAddToPL.Checked then
+  begin
+      for i := 0 to lvDxGrid.Items.Count-1 do
+      begin
+          if(lvDxGrid.Items[i].Selected) then
+          begin
+              lvDxGrid.Items[i].Caption :=  AddToWhatList(cbAddToPL.Checked,cbAddToPDList.Checked);
+              cbaddToPL.Checked := true;
+              lvDxGrid.Items[i].Selected := True;
+              lvDxGrid.SetFocus;
+          end;
+      end;
+   end
+   else
+     begin
+      if not cbaddToPL.Checked then
+      for i := 0 to lvDxGrid.Items.Count-1 do
+      begin
+         if(lvDxGrid.Items[i].Selected) then
+         begin
+           lvDxGrid.Items[i].Caption := AddToWhatList(cbAddToPL.Checked,cbAddToPDList.Checked);
+           lvDxGrid.Items[i].Selected := True;
+           lvDxGrid.SetFocus;
+         end;
+      end;
+end;
+    EnsurePrimary;
+end;
+
+procedure TfrmBALocalDiagnoses.ProcessAddToItems;
+begin
+   AddToProblemList;
+   AddToPersonalDxList;
+end;
+
+
+procedure TfrmBALocalDiagnoses.AddToPersonalDxList;
+var
+ i,j: integer;
+ tempcode,thisCode : string;
+ tempList, addToPDList: TStringList;
+begin
+    templist := TStringList.Create;
+    addToPDList := TStringList.Create;
+    tempList.Clear;
+    addTOPDList.Clear;
+    with lvDxGrid do
+    begin
+       for i := 0 to Items.Count-1 do
+       begin
+          if StrPos(PChar(LvDxGrid.Items[i].Caption),PChar(ADD_TO_PERSONAL_DX_LIST)) <> nil then
+          begin
+             tempCode := lvDxGrid.Items[i].Subitems[1];
+             tempCode := Piece(tempCode, ':', 2);
+             tempList.Add(tempCode);
+          end;
+       end;
+    end;
+
+    //** add Lexicon IEN to list (if any)
+    for i := 0 to tempList.Count -1 do
+    begin
+       thisCode := tempList.Strings[i];
+       if lexIENHoldList.Count > 0 then  //HDS6393
+       begin
+          for j := 0 to lexIENHoldList.Count-1 do
+          begin
+             if thisCode = Piece(lexIENHoldList.Strings[j],U,1) then
+                AddToPDList.Add(thisCode + U + Piece(lexIENHoldList.Strings[j],U,2) )  // code was selected from Lexicon
+             else
+                AddToPDList.Add(thisCode);
+          end;
+       end
+       else  //HDS6393
+          AddToPDList.Add(thisCode); // code was not selected from the Lexicon.  //HDS6393
+    end;
+    if AddToPDList.Count > 0 then
+       rpcAddToPersonalDxList(User.DUZ,AddToPDList);
+end;
+
+
+procedure TfrmBALocalDiagnoses.AddToProblemList;
+var
+   i: integer;
+   tempCode, passCode: string;
+   NewList: TStringList;
+   PatientInfo:string;
+   ProviderID:string;
+   ptVAMC:string;
+
+begin
+    PatientInfo := Patient.DFN + U + Patient.Name + U;
+    ProviderID := IntToStr(Encounter.Provider);
+    ptVAMC := '';
+    NewList := TStringList.Create;
+    NewList.Clear;
+    // ** Add Diagnosis to Problem List if flagged with 'Add' in First Col.
+    with frmBALocalDiagnoses.lvDxGrid do
+    begin
+       for i := 0 to Items.Count-1 do
+       begin
+          if StrPos(PChar(LvDxGrid.Items[i].Caption),PChar(ADD_TO_PROBLEM_LIST)) <> nil then
+          begin
+             tempCode := lvDxGrid.Items[i].Subitems[1];
+             // ** passCode consists of Dx Code '^' Dx Desc /////
+             passCode := Piece(tempCode,':',2) + U + Piece(tempCode,':',1);
+             if Piece(passCode,U,1) <> TX799 then
+             begin
+                NewList := BAPLRec.BuildProblemListDxEntry(passCode);
+                CallV('ORQQPL ADD SAVE',[PatientInfo, ProviderID,  BAPLPt.PtVAMC, NewList]);
+                NewList.Free;
+             end;
+          end;
+       end;
+    end;
+end;
+
+procedure TfrmBALocalDiagnoses.BuildConsultDxList(pDxList: TStringList); // ** adds grid items to BAConsultDxList - uConsults
+var
+  i: integer;
+  x: string;
+begin
+    UBAGlobals.BAConsultDxList.Clear;
+
+    if lvDxGrid.Items.Count > 0 then
+    with lvDxGrid do
+    begin
+       for i := 0 to Items.Count-1 do
+       begin
+          if i = 0 then fODConsult.displayDXCode := lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1];
+          x:= lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1];
+          if Piece(lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1],U,1) = PRIMARY_DX  then
+             fODConsult.displayDXCode := Piece(lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1],U,2);
+          uBAGlobals.BAConsultDxList.Add(lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1]);
+       end;
+       uBAGlobals.BAConsultDxList.Sort;
+    end
+    else
+       uBAGlobals.BAConsultDxList.Clear;
+end;
+
+
+procedure TfrmBALocalDiagnoses.BuildTempDxList;
+var
+   i : integer;
+   tempStr1,tempStr2, tempStr3: string;
+   tempFactor1: string;
+   tempStrList: TStringList;
+begin
+   tempStrList := TStringList.Create;
+   if Assigned(tempStrList) then tempStrList.Clear;
+
+   UBAGlobals.Dx1 := '';
+   UBAGlobals.Dx2 := '';
+   UBAGlobals.Dx3 := '';
+   UBAGlobals.Dx4 := '';
+   UBAGlobals.TFactors := '';
+   tempstr1 := '';
+   tempstr2 := '';
+   tempstr3 := '';
+   tempFactor1 := '';
+
+   if frmBALocalDiagnoses.lvDxGrid.Items.Count > 0 then
+   with frmBALocalDiagnoses.lvDxGrid do
+   begin
+      for i := 0 to Items.Count-1 do
+      begin
+     //    x := lvDxGrid.Items[i].Subitems[0];
+     //    x := lvDxGrid.Items[i].Subitems[1];
+     //    x:= lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1];
+         tempStrList.Add(lvDxGrid.Items[i].Subitems[0] + '^' + lvDxGrid.Items[i].Subitems[1]);
+      end;
+      if tempStrList.Count > 0 then
+         tempStrList.Sort;  //**  Sort list Ascending order.
+      with  tempStrList do
+      begin
+         tempFactor1 := (Piece(tempStrList.Strings[0],'(',2)); //** 0 = Primary
+         tempFactor1 := (Piece(tempFactor1,')',1) );
+         if (Length(tempFactor1) > 0) then
+            UBAGLobals.TFactors := tempFactor1;
+         for i := 0 to  tempStrList.Count-1 do
+         begin
+            tempstr1 := (Piece(tempStrList.Strings[i],U,2));
+            tempstr2 := (Piece(tempstr1,':',1) + '^'+ Piece(tempstr1,':',2));
+            if i = 0 then //** has primary dx changed
+            begin
+               if tempStr2 <> uPrimaryDxHold then
+               begin
+                  if tempStr2 <> '' then
+                     PrimaryChanged := True;
+               end;
+            end;
+            if tempstr2 = U then
+               tempstr2 := DXREC_INIT_FIELD_VAL;
+            case i of
+               0: UBAGlobals.Dx1 := tempStr2;
+               1: UBAGlobals.Dx2 := tempStr2;
+               2: UBAGlobals.Dx3 := tempStr2;
+               3: UBAGlobals.Dx4 := tempStr2;
+            else
+               Exit;
+            end;
+         end;
+   end;
+  end
+   else
+      if lvDxGrid.Items.Count = 0 then
+      begin
+         UBAGlobals.Dx1 := DXREC_INIT_FIELD_VAL;
+         UBAGlobals.Dx2 := DXREC_INIT_FIELD_VAL;
+         UBAGlobals.Dx3 := DXREC_INIT_FIELD_VAL;
+         UBAGlobals.Dx4 := DXREC_INIT_FIELD_VAL;
+      end;
+end;
+
+procedure TfrmBALocalDiagnoses.BuildBADxList;
+begin
+   if not assigned(BADiagnosisList) then
+   begin
+      BADiagnosisList := TStringList.Create;
+      BADiagnosisList.Duplicates := dupIgnore;
+      BADiagnosisList.Sorted := True;
+   end;
+
+   if UBAGlobals.Dx1 <> '' then
+      BADiagnosisList.Add(U + UBAGlobals.Dx1 + U);
+
+   if UBAGlobals.Dx2 <> '' then
+      BADiagnosisList.Add(U + UBAGlobals.Dx2 + U);
+
+   if UBAGlobals.Dx3 <> '' then
+      BADiagnosisList.Add(U + UBAGlobals.Dx3 + U);
+
+   if UBAGlobals.Dx4 <> '' then
+      BADiagnosisList.Add(U + UBAGlobals.Dx4 + U);
+end;
+
+procedure TfrmBALocalDiagnoses.ListConsultDX(pOrderDxList: TStringList);
+var
+ i: integer;
+ dx1,dx2,dx3,dx4: string;
+ begin
+   if UBAGlobals.BAConsultDxList.Count = 0 then Exit;
+   dx1 := '';
+   dx2 := '';
+   dx3 := '';
+   dx4 := '';
+   for i := 0 to BAConsultDxList.Count-1 do
+   begin
+     case i of
+       0: dx1 := BAConsultDxList.Strings[i];
+       1: dx2 := BAConsultDxList.Strings[i];
+       2: dx3 := BAConsultDxList.Strings[i];
+       3: dx4 := BAConsultDxList.Strings[i];
+     end;
+   end;
+
+   ListItem := lvDxGrid.Items.Add;
+   if Length(dx1) > 0 then
+      ListItem.SubItems.Add(UBAConst.PRIMARY_DX)
+   else
+       ListItem.SubItems.Add(DXREC_INIT_FIELD_VAL);
+       ListItem.SubItems.Add(Piece(dx1,U,2));
+
+       if Length(dx2) > 1 then
+       begin
+          ListItem := lvDxGrid.Items.Add;
+          ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+          ListItem.SubItems.Add(Piece(dx2,U,2));
+       end;
+
+       if Length(dx3) > 1 then
+       begin
+          ListItem := lvDxGrid.Items.Add;
+          ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+          ListItem.SubItems.Add(Piece(dx3,U,2));
+       end;
+
+       if Length(dx4) > 1 then
+       begin
+          ListItem := lvDxGrid.Items.Add;
+          ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+          ListItem.SubItems.Add(Piece(dx4,U,2));
+       end;
+end;
+
+procedure TfrmBALocalDiagnoses.ListGlobalDx(pOrderIDList: TStringList);  //  need to get rec based on orderid
+var
+  i :integer;
+begin
+
+   if not Assigned(UBAGlobals.globalDxRec) then Exit;
+
+   if (Assigned(UBAGlobals.globalDxRec)) and (UBAGlobals.globalDxRec.FBADxCode = '') then Exit;
+
+    for i := 0 to pOrderIDList.Count-1 do
+    begin
+       if tempDxNodeExists(pOrderIDList.Strings[i]) then
+          begin
+             UBAGlobals.globalDxRec.FOrderID :=  pOrderIDList.Strings[i];
+             break;
+          end;
+    end;
+    ListItem := lvDxGrid.Items.Add;
+    if Length(UBAGlobals.globalDxRec.FBADxCode) > 0 then
+       ListItem.SubItems.Add(UBAConst.PRIMARY_DX)
+    else
+       ListItem.SubItems.Add(DXREC_INIT_FIELD_VAL);
+       uPrimaryDxHold := UBAGlobals.globalDxRec.FBADxCode;
+       ListItem.SubItems.Add(UBAGlobals.globalDxRec.FBADxCode);
+
+       if Length(UBAGlobals.globalDxRec.FBASecDx1) > 1 then
+       begin
+          ListItem := lvDxGrid.Items.Add;
+          ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+          ListItem.SubItems.Add(UBAGlobals.globalDxRec.FBASecDx1);
+       end;
+
+       if Length(UBAGlobals.globalDxRec.FBASecDx2) > 1 then
+       begin
+          ListItem := lvDxGrid.Items.Add;
+          ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+          ListItem.SubItems.Add(UBAGlobals.globalDxRec.FBASecDx2);
+       end;
+
+       if Length(UBAGlobals.globalDxRec.FBASecDx3) > 1 then
+       begin
+          ListItem := lvDxGrid.Items.Add;
+          ListItem.SubItems.Add(UBAConst.SECONDARY_DX);
+          ListItem.SubItems.Add(UBAGlobals.globalDxRec.FBASecDx3);
+       end;
+end;
+
+procedure TfrmBALocalDiagnoses.lbDiagnosisClick(Sender: TObject);
+var
+ i : integer;
+  newDxCode, initDxCode: string;
+begin
+  inherited;
+    for i := 0 to lbDiagnosis.Count-1 do
+    begin
+       if(lbDiagnosis.Selected[i]) then
+       begin
+          initDxCode :=  StringReplace(lbDiagnosis.Items[i],':',' ',[rfReplaceAll]);
+          newDxCode := (Piece(initDxCode,U,1) + ':'+ Piece(initDxCode,U,2));
+          if UBACore.IsICD9CodeActive(Piece(newDxCode,':',2),'ICD',Encounter.DateTime) then
+          begin
+             if not IsDxAlreadySelected(newDxCode) then
+             begin
+                 DiagnosisSelection(newDxCode);
+                 SetAddToCheckBoxStatus(newDxCode);
+             end
+             else
+                begin
+                   DeselectGridItems;
+                   lvDxGrid.Items[lvDxGrid.items.Count-1].Selected := true;
+                   InfoBox(BA_DUP_DX_DISALLOWED_1 + Piece(newDxCode,':',2) + BA_DUP_DX_DISALLOWED_2,BA_DUP_DX ,MB_ICONINFORMATION or MB_OK);
+                end;
+           end
+           else
+              InfoBox(BA_INACTIVE_ICD9_CODE_1 + Piece(newDxCode,':',2) + BA_INACTIVE_ICD9_CODE_2 , BA_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+    end;
+  end;
+end;
+
+
+procedure TfrmBALocalDiagnoses.DeselectGridItems;
+var
+i: integer;
+begin
+    if lvDxGrid.Items.Count = 0 then
+       lvDxGrid.Clear
+    else
+       begin
+       for i := 0 to lvDxGrid.Items.Count-1 do
+          lvDxGrid.Items[i].Selected := false;
+       end;
+end;
+
+procedure TfrmBALocalDiagnoses.FormActivate(Sender: TObject);
+begin
+  inherited;
+     InactiveICDNotification;
+end;
+
+procedure TfrmBALocalDiagnoses.FormShow(Sender: TObject);
+begin
+  lbSections.Selected[0] := false;
+  
+   if lbSections.Count > 0 then
+      ListDiagnosisCodes(lbSections.Items[0]);
+end;
+
+procedure TfrmBALocalDiagnoses.ListSelectedOrders;
+var i: integer;
+begin
+    if BAtmpOrderList.Count > 0 then
+    try
+       for i:= 0 to BAtmpOrderList.Count -1 do
+       begin
+          lbOrders.Items.Add(StringReplace(BAtmpOrderList.Strings[i],CRLF,'  ',[rfReplaceAll]) );
+
+       end;
+   except
+      on EListError do
+         begin
+         {$ifdef debug}Show508Message('EListError in frmBALocalDiagnoses.ListSelectedOrders()');{$endif}
+         raise;
+         end;
+    end; //try
+
+end;
+
+procedure TfrmBALocalDiagnoses.AddDiagnosistoPersonalDiagnosesList1Click(Sender: TObject);
+var
+   i: integer;
+   pCodeList: TStringList;
+   selectedList: TStringList;
+begin
+  inherited;
+  pCodeList := TStringList.Create;
+  selectedList := TStringList.Create;
+
+  if Assigned(pCodeList) then pCodeList.Clear;
+  if Assigned(selectedList) then selectedList.Clear;
+
+  try
+     for i := 0 to lbDiagnosis.Items.Count-1 do
+        if(lbDiagnosis.Selected[i]) then
+             selectedList.Add((Piece(lbDiagnosis.Items[i],U,2)) );
+   except
+      on EListError do
+         begin
+         {$ifdef debug}Show508Message('EListError in frmBALocalDiagnoses.AddDiagnosisToPersonalDiagnosesListClick()');{$endif}
+         raise;
+         end;
+    end; //try
+
+     if selectedList.Count > 0 then
+       if UBACore.rpcAddToPersonalDxList(User.DUZ,selectedList) then
+       begin
+          ShowMsg(UBAMessages.BA_PERSONAL_LIST_UPDATED);
+          LoadEncounterForm;
+          Refresh;
+       end;
+
+end;
+
+procedure TfrmBALocalDiagnoses.AddDiagnosistoPersonalDiagnosesList2Click(
+  Sender: TObject);
+  var i:integer;
+      selectedList: TStringList;
+begin
+  inherited;
+  selectedList := TStringList.Create;
+  if Assigned(selectedList) then selectedList.create;
+
+  for i := 0 to lvDxGrid.Items.Count-1 do
+  begin
+  if(lvDxGrid.Items[i].Selected) then
+     selectedList.Add( piece(LvDxGrid.Items[i].SubItems[1],':',2) );
+  end;
+  if UBACore.rpcAddToPersonalDxList(User.DUZ,selectedList) then
+  begin
+     ShowMsg(UBAMessages.BA_PERSONAL_LIST_UPDATED);
+     LoadEncounterForm;
+     Refresh;
+  end;
+end;
+
+
+procedure TfrmBALocalDiagnoses.cbAddToPDListClick(Sender: TObject);
+var i: integer;
+begin
+  inherited;
+
+   if cbAddToPDList.Checked then
+      begin
+      for i := 0 to lvDxGrid.Items.Count-1 do
+      begin
+          if(lvDxGrid.Items[i].Selected) then
+          begin
+              lvDxGrid.Items[i].Caption := AddToWhatList(cbAddToPL.Checked,cbAddToPDList.Checked);
+              cbaddToPDList.Checked := true;
+              lvDxGrid.SetFocus;
+          end
+          else
+             if(lvDxGrid.Items[i].Selected) then
+             begin
+                lvDxGrid.Items[i].Caption := AddToWhatList(cbAddToPL.Checked,cbAddToPDList.Checked);
+                cbaddToPL.Checked := false;
+                lvDxGrid.SetFocus;
+             end;
+      end;
+   end
+   else
+     begin
+      if not cbaddToPDList.Checked then
+      for i := 0 to lvDxGrid.Items.Count-1 do
+      begin
+         if(lvDxGrid.Items[i].Selected) then
+            lvDxGrid.Items[i].Caption := AddToWhatList(cbAddToPL.Checked,cbAddToPDList.Checked);
+      end;
+end;
+    EnsurePrimary;
+end;
+
+function  TfrmBALocalDiagnoses.AddToWhatList(IsPLChecked:boolean; IsPDLChecked:boolean):string;
+begin
+  Result := '';
+  
+  if IsPLChecked and IsPDLChecked then
+     Result := 'PL/PD'
+  else
+    if IsPLChecked then
+       Result := 'PL'
+  else
+    if IsPDLChecked then
+       Result := 'PD';
+
+end;
+
+procedure TfrmBALocalDiagnoses.InactiveICDNotification;
+begin
+   if inactiveCodes > 0 then
+   begin
+      if (not BAFWarningShown) and (inactiveCodes > 0)  then
+      begin
+       InfoBox('There are ' + IntToStr(inactiveCodes) + ' active problem(s) flagged with a "#" as having' + #13#10 +
+               'inactive ICD codes as of today''s date.  Please correct these' + #13#10 +
+               'problems via the Problems Tab - Change" option.', 'Inactive ICD Codes Found', MB_ICONWARNING or MB_OK);
+       BAFWarningShown := True;
+      end;
+   end;
+end;
+
+procedure TfrmBALocalDiagnoses.lbSectionsDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+begin
+  inherited;
+  lbsections.Font.Size := MainFontSize;
+  if (control as Tlistbox).items[index] = DX_PROBLEM_LIST_TXT then
+     (Control as TListBox).Canvas.Font.Style := [fsBold]
+  else
+     if (control as Tlistbox).items[index] = DX_PERSONAL_LIST_TXT then
+        (Control as TListBox).Canvas.Font.Style := [fsBold]
+  else
+     if (control as Tlistbox).items[index] = DX_ENCOUNTER_LIST_TXT then
+        (Control as TListBox).Canvas.Font.Style := [fsBold];
+
+  (Control as TListBox).Canvas.TextOut(Rect.Left+2, Rect.Top+1, (Control as
+              TListBox).Items[Index]); {** display the text }
+
+end;
+
+//** Loads string lists containing Diagnoses contained in the Problem and Personal DX List.
+//** These lists will be used to insure duplicates can not be entered via add to check boxes.
+procedure TfrmBALocalDiagnoses.LoadTempDXLists;
+var
+  i: integer;
+  sChar,probDX,x: string;
+  updatingProblemList, updatingPersonalList: boolean;
+begin
+   sChar := ')';
+   updatingProblemList := FALSE;
+   updatingPersonalList := FALSE;
+   if Assigned(ProblemDxHoldList) then ProblemDxHoldList.Clear;
+   if Assigned(PersonalDxHoldList) then PersonalDxHoldList.Clear;
+   for i := 0 to BADiagnosis.Count - 1 do
+   begin
+      x := BADiagnosis.Strings[i];
+      if CharAt(BADiagnosis[i], 1) = U then
+      begin
+         if Piece(BADiagnosis.Strings[i],U,2) = PROBLEM_LIST_SECTION then
+         begin
+            updatingProblemList := TRUE;
+            updatingPersonalList := FALSE;
+         end
+         else
+         begin
+            if Piece(BADiagnosis.Strings[i],U,2) = PERSONAL_DX_SECTION then
+            begin
+              updatingProblemList :=  FALSE;
+              updatingPersonalList := TRUE;
+            end
+            else
+            begin
+               updatingProblemList := FALSE;
+               updatingPersonalList := FALSE;
+            end;
+         end;
+     end;
+     if updatingProblemList then
+     begin
+        if Piece(BADiagnosis.Strings[i],U,2) = PROBLEM_LIST_SECTION then lbSections.Selected[0] := true;
+        if strPos(pChar(BADiagnosis.Strings[i]) , pChar(sChar) ) <> nil then
+        begin
+           probDX := StringReplace(BADiagnosis.Strings[i],'(','^',[rfReplaceAll]);
+           probDX := StringReplace(probDX,')','^',[rfReplaceAll]);
+           probDX := Piece(probDX,U,2) + ':' + Piece(probDX,U,1);
+           probDX := StringReplace(probDX,' ','',[rfReplaceAll]);
+           ProblemDXHoldList.Add(probDX);
+        end
+        else
+           ProblemDxHoldList.Add(Piece(BADiagnosis.Strings[i],U,2) +':' +Piece(BADiagnosis.Strings[i],U,1) );
+     end
+     else
+       if updatingPersonalList then
+          PersonalDxHoldList.Add(Piece(BADiagnosis.Strings[i],U,2) + ':' + Piece(BADiagnosis.Strings[i],U,1) );
+      end;
+end;
+
+procedure TfrmBALocalDiagnoses.lvDxGridKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  if(ssShift in Shift) or(ssCtrl in Shift) then
+     selectingDX := True;
+end;
+
+//** set Add To Check Boxes status.
+procedure TfrmBALocalDiagnoses.SetAddToCBoxStatus;
+var
+    i: integer;
+    x: string;
+begin
+  UpdatingGrid := False;
+
+  // ** detemine status of "add to" check boxes.....
+
+  //** if dx selected already exists in Problem or Personal Dx List then
+  //** add to checkboxes are disabled.
+  for i := 0 to lvDxGrid.Items.Count-1 do
+  begin
+     if lvDxGrid.Items[i].Selected then
+     begin
+         x:= lvDxGrid.Items[i].Subitems[1];
+         lvDxGrid.Items[i].Selected := True;
+         SetAddToCheckBoxStatus(lvDxGrid.Items[i].Subitems[1]);
+         lvDxGrid.SetFocus;
+     end;
+  end;
+
+  for i := 0 to lvDxGrid.Items.Count-1 do
+  begin
+     if lvDxGrid.Items[i].Selected then
+        if lvDxGrid.Items[i].Caption = 'PL/PD' then
+        begin
+           UpdatingGrid := True;
+           lvDxGrid.Items[i].Selected := True;
+           cbaddToPL.Checked := True;
+           cbAddToPDList.Checked := true;
+           ResetCheckBoxStatus(lvDxGrid.Items[i].Subitems[1]);
+           lvDxGrid.SetFocus;
+        end
+        else if lvDxGrid.Items[i].Caption = 'PL' then
+        begin
+           UpdatingGrid := True;
+           lvDxGrid.Items[i].Selected := True;
+           cbaddToPL.Checked := True;
+           cbAddToPDList.Checked := False;
+           ResetCheckBoxStatus(lvDxGrid.Items[i].Subitems[1]);
+           lvDxGrid.SetFocus;
+        end
+        else if lvDxGrid.Items[i].Caption = 'PD' then
+        begin
+           UpdatingGrid := True;
+           lvDxGrid.Items[i].Selected := True;
+           cbaddToPL.Checked := False;
+           cbAddToPDList.Checked := True;
+           ResetCheckBoxStatus(lvDxGrid.Items[i].Subitems[1]);
+           lvDxGrid.SetFocus;
+        end;
+  end;
+   // ** end determine check box status................
+end;
+
+
+procedure TfrmBALocalDiagnoses.lvDxGridKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+     selectingDX := False;
+end;
+
+procedure TfrmBALocalDiagnoses.lvDxGridClick(Sender: TObject);
+begin
+  inherited;
+if deleteDX then Exit;
+
+if lvDxGrid.SelCount > 1 then
+   ProcessMultSelections
+else
+   SetAddToCBoxStatus;
+end;
+
+procedure TfrmBALocalDiagnoses.lbOrdersMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+var
+  lstIndex: integer;
+begin
+  inherited;
+  //** CQ4739
+  with lbOrders do
+     begin
+     lstIndex := SendMessage(Handle, LB_ITEMFROMPOINT, 0, MakeLParam(X, Y));
+     if (lstIndex >= 0) and (lstIndex <= Items.Count-1) then
+        Hint := Items[lstIndex]
+     else
+        Hint := '';
+     end;
+  //** end CQ4739
+end;
+
+procedure TfrmBALocalDiagnoses.SetAddToCheckBoxStatus(ADiagnosis:string);
+var
+ selectedDX :string;
+ i: integer;
+ begin
+ if (cbAddToPL.Checked or cbAddToPDList.Checked) then
+ begin
+    for i := 0 to LvDxGrid.Items.Count-1 do
+    begin
+       if(lvDxGrid.Items[i].Selected) then
+       begin
+          if StrPos(PChar(LvDxGrid.Items[i].Caption),PChar(ADD_TO_PERSONAL_DX_LIST)) <> nil then Exit;
+          if StrPos(PChar(LvDxGrid.Items[i].Caption),PChar(ADD_TO_PROBLEM_LIST)) <> nil then Exit;
+       end;
+    end;
+ end;
+
+   if lvDxGrid.SelCount = 0 then
+   begin
+      ClearAndDisableCBoxes;
+      Exit;
+   end;
+   selectedDX:= Piece(ADiagnosis,':',2);
+   //** loop thru problem list dx, if match check box disabled
+   if ProblemListDxFound(selectedDx) then
+   begin
+      cbAddToPL.Enabled := False;
+      cbAddToPL.Checked := False;
+   end
+   else
+   begin
+      cbAddToPL.Enabled := True;
+      cbAddToPL.Checked := False;
+   end;
+
+   if  PersonalListDxFound(selectedDx) then
+   begin
+      cbAddToPDList.Enabled  := False;
+      cbAddToPDList.Checked  := False;
+   end
+   else
+   begin
+      cbAddToPDList.Enabled  := True;
+      cbAddToPDList.Checked  := False;
+   end;
+
+end;
+
+procedure TfrmBALocalDiagnoses.ProcessMultSelections;
+var
+ i: integer;
+ selectedDX: string;
+ PLFound, PDLFound: boolean;
+begin
+   PLFound  := False;
+   PDLFound := False;
+   for i := 0 to lvDxGrid.Items.Count-1 do
+   begin
+       if(lvDxGrid.Items[i].Selected) then
+       begin
+          selectedDX := lvDxGrid.Items[i].Subitems[1];
+          selectedDX := Piece(selectedDX,':',2);
+          if not PLFound then
+             PLFound := ProblemListDxFound(selectedDX);
+          if not PDLFound then
+             PDLFound := PersonalListDXFound(selectedDX);
+       end;
+   end;
+   if not PDLFound then
+   begin
+      cbAddToPDList.Enabled := True;
+      cbAddTOPDList.Checked := False;
+   end
+   else
+   begin
+      cbAddToPDList.Enabled := False;
+      cbAddTOPDList.Checked := False;
+   end;
+   if not PLFound then
+   begin
+      cbAddToPL.Enabled := True;
+      cbAddToPL.Checked := False;
+   end
+   else
+   begin
+      cbAddToPL.Enabled := False;
+      cbAddToPL.Checked := False;
+   end;
+end;
+
+procedure TfrmBALocalDiagnoses.ClearAndDisableCBoxes;
+begin
+     cbAddToPL.Checked := False;
+     cbAddToPDList.Checked := False;
+     lvDxGrid.ClearSelection;
+     cbAddToPL.Enabled := False;
+     cbAddToPDList.Enabled := False;
+end;
+
+procedure TfrmBALocalDiagnoses.ResetCheckBoxStatus(pDxCode:string);
+begin
+ if Not ProblemListDxFound(pDxCode) then
+    cbAddToPL.Enabled := True;
+ if  Not PersonalListDxFound(pDxCode) then
+    cbAddToPDList.Enabled  := True;
+end;
+
+procedure TfrmBALocalDiagnoses.DeleteSelectedDx;
+var
+  I: Integer;
+begin
+  frmBALocalDiagnoses.lvDxGrid.Items.BeginUpdate;
+  try
+    for I := frmBALocalDiagnoses.lvDxGrid.Items.Count - 1 downto 0 do
+      if  frmBALocalDiagnoses.lvDxGrid.Items[I].Selected then
+        frmBALocalDiagnoses.lvdxGrid.Items[I].delete;
+  finally
+    lvDxGrid.Items.EndUpdate;
+  end;
+
+end;
+
+function  TfrmBALocalDiagnoses.IsCtrlDown: boolean;
+var
+  State: TKeyboardState;
+begin { isCtrlDown }
+  GetKeyboardState(State);
+  Result := ((State[VK_CONTROL] and 128)<>0); // Ctrl-button
+end; { isCtrlDown }
+
+
+
+
+Initialization
+  BADiagnosis        := TStringList.Create;
+  currentOrderIDList := TStringList.Create;
+  ProblemDxHoldList  := TStringList.Create;
+  PersonalDxHoldList := TStringList.Create;
+  lexIENHoldList     := TStringList.Create;
+  BADiagnosis.Clear;
+  currentOrderIDList.Clear;
+  PersonalDxHoldList.Clear;
+  ProblemDxHoldList.Clear;
+  lexIENHoldList.Clear;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBAOptionsDiagnoses.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBAOptionsDiagnoses.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBAOptionsDiagnoses.dfm	(revision 1676)
@@ -0,0 +1,373 @@
+inherited frmBAOptionsDiagnoses: TfrmBAOptionsDiagnoses
+  Left = 231
+  Top = 183
+  Caption = 'Personal Diagnoses List'
+  ClientHeight = 530
+  ClientWidth = 739
+  Constraints.MinHeight = 100
+  Constraints.MinWidth = 200
+  OnActivate = FormActivate
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitWidth = 747
+  ExplicitHeight = 557
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 739
+    Height = 530
+    Align = alClient
+    Caption = 'Panel1'
+    Constraints.MinHeight = 344
+    Constraints.MinWidth = 576
+    TabOrder = 0
+    object Panel2: TPanel
+      Left = 16
+      Top = 10
+      Width = 713
+      Height = 519
+      Caption = 'Panel1'
+      TabOrder = 0
+      object Splitter1: TSplitter
+        Left = 458
+        Top = 26
+        Width = -3
+        Height = 463
+      end
+      object Splitter2: TSplitter
+        Left = 169
+        Top = 26
+        Width = 7
+        Height = 463
+      end
+      object Splitter3: TSplitter
+        Left = 457
+        Top = 26
+        Width = 1
+        Height = 463
+      end
+      object Splitter5: TSplitter
+        Left = 455
+        Top = 26
+        Width = 2
+        Height = 463
+      end
+      object pnlBottom: TPanel
+        Left = 1
+        Top = 489
+        Width = 711
+        Height = 29
+        Align = alBottom
+        BevelOuter = bvNone
+        Caption = ' '
+        TabOrder = 0
+        DesignSize = (
+          711
+          29)
+        object btnOther: TButton
+          Left = 13
+          Top = 3
+          Width = 129
+          Height = 23
+          Anchors = [akLeft, akBottom]
+          Caption = 'Other &Diagnoses'
+          Constraints.MinHeight = 23
+          Constraints.MinWidth = 115
+          TabOrder = 0
+          OnClick = btnOtherClick
+        end
+        object btnOK: TButton
+          Left = 523
+          Top = 3
+          Width = 75
+          Height = 23
+          Anchors = [akRight, akBottom]
+          Caption = '&OK'
+          TabOrder = 1
+          OnClick = btnOKClick
+        end
+        object Button1: TButton
+          Left = 632
+          Top = 4
+          Width = 75
+          Height = 21
+          Anchors = [akRight, akBottom]
+          Caption = '&Cancel'
+          TabOrder = 2
+          OnClick = Button1Click
+        end
+      end
+      object Panel3: TPanel
+        Left = 1
+        Top = 26
+        Width = 168
+        Height = 463
+        Align = alLeft
+        BevelOuter = bvNone
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 1
+        object lbSections: TORListBox
+          Left = 0
+          Top = 17
+          Width = 161
+          Height = 446
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ItemHeight = 13
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = lbSectionsClick
+          OnEnter = lbSectionsEnter
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '3'
+        end
+        object hdrCntlDxSections: THeaderControl
+          Left = 0
+          Top = 0
+          Width = 168
+          Height = 17
+          Sections = <
+            item
+              Alignment = taCenter
+              ImageIndex = -1
+              Text = 'Diagnoses Sections'
+              Width = 50
+            end>
+        end
+      end
+      object Panel4: TPanel
+        Left = 176
+        Top = 26
+        Width = 201
+        Height = 463
+        Align = alLeft
+        BevelOuter = bvNone
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 2
+        object lbDiagnosis: TORListBox
+          Left = 0
+          Top = 17
+          Width = 201
+          Height = 446
+          Align = alClient
+          ItemHeight = 13
+          MultiSelect = True
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 0
+          OnClick = lbDiagnosisChange
+          OnEnter = lbDiagnosisEnter
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '1,2,3'
+          OnChange = lbDiagnosisChange
+        end
+        object hdrCntlDxAdd: THeaderControl
+          Left = 0
+          Top = 0
+          Width = 201
+          Height = 17
+          Sections = <
+            item
+              Alignment = taCenter
+              ImageIndex = -1
+              Text = 'Diagnoses to add'
+              Width = 50
+            end>
+        end
+      end
+      object Panel5: TPanel
+        Left = 455
+        Top = 26
+        Width = 257
+        Height = 463
+        Align = alClient
+        BevelOuter = bvNone
+        Caption = 'Panel5'
+        TabOrder = 3
+        object lbPersonalDx: TORListBox
+          Left = 0
+          Top = 17
+          Width = 257
+          Height = 446
+          Align = alClient
+          Anchors = [akRight]
+          Color = clInfoBk
+          ItemHeight = 13
+          MultiSelect = True
+          ParentShowHint = False
+          ShowHint = True
+          Sorted = True
+          TabOrder = 0
+          OnClick = lbPersonalDxClick
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2,1,3'
+        end
+        object hdrCntlDx: THeaderControl
+          Left = 0
+          Top = 0
+          Width = 257
+          Height = 17
+          Sections = <
+            item
+              Alignment = taCenter
+              ImageIndex = -1
+              MinWidth = 150
+              Text = 'Diagnoses Codes'
+              Width = 150
+            end>
+          OnSectionClick = hdrCntlDxSectionClick
+        end
+      end
+      object pnlTop: TPanel
+        Left = 1
+        Top = 1
+        Width = 711
+        Height = 25
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 4
+        object StaticText3: TStaticText
+          Left = 472
+          Top = 8
+          Width = 140
+          Height = 17
+          Caption = 'Personal Diagnoses List'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          TabOrder = 0
+          TabStop = True
+        end
+      end
+      object Panel7: TPanel
+        Left = 377
+        Top = 26
+        Width = 78
+        Height = 463
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 5
+        DesignSize = (
+          78
+          463)
+        object btnAdd: TBitBtn
+          Left = 1
+          Top = 88
+          Width = 75
+          Height = 25
+          Anchors = [akLeft, akTop, akRight]
+          Caption = '&Add'
+          Constraints.MinHeight = 25
+          Constraints.MinWidth = 70
+          Enabled = False
+          TabOrder = 0
+          OnClick = btnAddClick
+          NumGlyphs = 2
+        end
+        object btnDelete: TBitBtn
+          Left = 2
+          Top = 136
+          Width = 75
+          Height = 25
+          Caption = '&Remove'
+          Constraints.MinHeight = 25
+          Constraints.MinWidth = 70
+          Enabled = False
+          TabOrder = 1
+          OnClick = btnDeleteClick
+          NumGlyphs = 2
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = Button1'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = lbSections'
+        'Status = stsDefault')
+      (
+        'Component = hdrCntlDxSections'
+        'Status = stsDefault')
+      (
+        'Component = Panel4'
+        'Status = stsDefault')
+      (
+        'Component = lbDiagnosis'
+        'Status = stsDefault')
+      (
+        'Component = hdrCntlDxAdd'
+        'Status = stsDefault')
+      (
+        'Component = Panel5'
+        'Status = stsDefault')
+      (
+        'Component = lbPersonalDx'
+        'Status = stsDefault')
+      (
+        'Component = hdrCntlDx'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = StaticText3'
+        'Status = stsDefault')
+      (
+        'Component = Panel7'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnDelete'
+        'Status = stsDefault')
+      (
+        'Component = frmBAOptionsDiagnoses'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBAOptionsDiagnoses.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBAOptionsDiagnoses.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/BA/fBAOptionsDiagnoses.pas	(revision 1676)
@@ -0,0 +1,652 @@
+unit fBAOptionsDiagnoses;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ORCtrls, ExtCtrls, ORFn, UCore, RCore, ORNet,
+  UBAGlobals, fPCELex, rPCE, Buttons, UBACore, UBAMessages, UBAConst,
+  ComCtrls, VA508AccessibilityManager;
+
+type
+  TfrmBAOptionsDiagnoses = class(TfrmAutoSz)
+    Panel1: TPanel;
+    Panel2: TPanel;
+    Splitter1: TSplitter;
+    Splitter2: TSplitter;
+    Splitter3: TSplitter;
+    pnlBottom: TPanel;
+    btnOther: TButton;
+    btnOK: TButton;
+    Panel3: TPanel;
+    lbSections: TORListBox;
+    Panel4: TPanel;
+    lbDiagnosis: TORListBox;
+    Panel5: TPanel;
+    lbPersonalDx: TORListBox;
+    pnlTop: TPanel;
+    Panel7: TPanel;
+    btnAdd: TBitBtn;
+    btnDelete: TBitBtn;
+    Splitter5: TSplitter;
+    Button1: TButton;
+    StaticText3: TStaticText;
+    hdrCntlDx: THeaderControl;
+    hdrCntlDxSections: THeaderControl;
+    hdrCntlDxAdd: THeaderControl;
+    procedure FormCreate(Sender: TObject);
+    procedure btnOtherClick(Sender: TObject);
+    procedure lbSectionsClick(Sender: TObject);
+    procedure lbSectionsEnter(Sender: TObject);
+    procedure lbDiagnosisClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure btnAddClick(Sender: TObject);
+    procedure btnDeleteClick(Sender: TObject);
+    procedure lbDiagnosisChange(Sender: TObject);
+    procedure lbPersonalDxClick(Sender: TObject);
+    procedure lbDiagnosisEnter(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure Button1Click(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    function  IsDXInList(ADXCode: string):boolean;
+    procedure LoadPersonalDxList;
+    procedure btnRemoveAllClick(Sender: TObject);
+    procedure btnAddAllClick(Sender: TObject);
+    procedure hdrCntlDxSectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure FormResize(Sender: TObject);
+  private
+    { Private declarations }
+    procedure LoadEncounterDx;
+    procedure ListDiagnosesSections(Dest: TStrings);
+    procedure AddProblemsToDxList;
+    procedure ListDiagnosesCodes(Section: String);
+    procedure InactiveICDNotification;
+    procedure SyncDxDeleteList;
+    procedure SyncDxNewList;
+  
+  public
+    { Public declarations }
+  end;
+
+var
+
+  uAddToP       : integer;
+  uDeleteFromPDL: integer;
+  uNewDxList    : TStringList;
+  Problems      : TStringList;
+  DxList        : TStringList;
+  ECFDiagnoses  : TStringList;
+  tmplst        : TStringList;
+  newDxLst      : TStringList;
+  delDxLst      : TStringList;
+  inactiveCodes : integer;
+
+procedure DialogOptionsDiagnoses(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+{$R *.dfm}
+
+var
+
+  LastDFN      : string;
+  LastLocation : integer;
+  FDxSection: string;
+  BADxCode: String;
+
+procedure DialogOptionsDiagnoses(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+var
+ frmBAOptionsDiagnoses: TfrmBAOptionsDiagnoses;
+ begin
+ frmBAOptionsDiagnoses := TfrmBAOptionsDiagnoses.Create(Application);
+  actiontype := 0;
+  with frmBAOptionsDiagnoses do
+   begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmBAOptionsDiagnoses);
+      ShowModal;
+   end;
+
+end;
+
+procedure TfrmBAOptionsDiagnoses.FormCreate(Sender: TObject);
+begin
+    inactiveCodes := 0;
+    LoadEncounterDx;
+    ListDiagnosesSections(lbSections.Items);
+  //  lbPersonalDx.Items := rpcGetPersonalDxList(User.DUZ);
+    LoadPersonalDxList;
+    btnOK.Enabled := False;
+    hdrCntlDx.Sections[0].Width := lbPersonalDX.Width;
+    hdrCntlDxSections.Sections[0].Width := lbSections.Width;
+    hdrCntlDxAdd.Sections[0].Width := lbDiagnosis.Width;
+  //  lbPersonalDx.Sorted := false;
+ //  lbPersonalDx.Sorted := True;
+    lbPersonalDX.Repaint;
+end;
+
+
+procedure  TfrmBAOptionsDiagnoses.LoadEncounterDx;
+{ load the major coding lists that are used by the encounter form for a given location }
+var
+  i: integer;
+  TempList: TStringList;
+  EncDt: TFMDateTime;
+begin
+ Caption := 'Personal Diagnoses List for ' + User.Name;
+ LastLocation := Encounter.Location;
+ EncDt := Trunc(FMToday);
+  //add problems to the top of diagnoses.
+  TempList := TstringList.Create;
+  DxList.clear;
+  tCallV(TempList,'ORWPCE DIAG',  [LastLocation, EncDt]);
+  DxList.add(templist.strings[0]);
+  AddProblemsToDxList;
+    for i := 1 to (TempList.Count-1) do
+    begin
+      DxList.add(Templist.strings[i]);
+    end;
+end;
+
+procedure  TfrmBAOptionsDiagnoses.ListDiagnosesSections(Dest: TStrings);
+var
+  i: Integer;
+  x: string;
+begin
+  for i := 0 to DxList.Count - 1 do if CharAt(DxList[i], 1) = U then
+  begin
+    x := Piece(DxList[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(DxList[i], U, 2) + U + x);
+  end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.ListDiagnosesCodes(Section: String);
+var
+i,j: integer;
+a: string;
+begin
+   lbDiagnosis.Clear;
+   a := '';
+   for i := 0 to DxList.Count-1 do
+      begin
+         a := DxList.Strings[i];
+         if Piece(DxList[i], U, 2) = (Piece(Section,U,2)) then
+            break;
+     end;
+     inc(i);
+     for j := i to DxList.Count-1 do
+     begin
+        if Piece(DxList[j], U, 0) = '' then
+           break
+        else
+        begin
+           a :=  Piece(DxList[j], U, 2) + '^' + Piece(DxList[j], U, 1);
+           if not UBACore.IsICD9CodeActive(Piece(a,U,2),'ICD',Encounter.DateTime) then
+           begin
+              a := a + '    ' + UBAConst.BA_INACTIVE_CODE;
+              inc(inactiveCodes);
+           end;
+           lbDiagnosis.Items.Add(a);
+        end;
+     end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.AddProblemsToDxList;
+var
+  i : integer;
+  EncDt: TFMDateTime;
+  x : String;
+begin
+   //Get problem list
+   EncDt := Trunc(FMToday);
+   LastDFN := Patient.DFN;
+   tCallV(Problems, 'ORWPCE ACTPROB', [Patient.DFN, EncDT]);
+   if Problems.Count > 0 then
+   begin
+      DxList.add('^Problem List Items');
+      for i := 1 to (Problems.count-1) do
+      begin
+         x :=(Piece(Problems.Strings[i],U,3) + U +
+          Piece(Problems.Strings[i],U,2));
+       //  if (Piece(Problems.Strings[i],U,3) = '799.9') then continue;            // DON'T INCLUDE 799.9 CODES
+
+         if (Piece(problems.Strings[i], U, 11) =  '#') then
+           DxList.add(Piece(Problems.Strings[i],U,3) + U +                   // PL code inactive
+            Piece(Problems.Strings[i],U,2) + U + '#')
+         else if (Piece(problems.Strings[i], U, 10) =  '') then                  // no inactive date for code
+           DxList.add(Piece(Problems.Strings[i],U,3) + U +
+             Piece(Problems.Strings[i],U,2))
+         else if (Trunc(StrToFloat(Piece(Problems.Strings[i], U, 10))) > EncDT) then     // code active as of EncDt
+           DxList.add(Piece(Problems.Strings[i],U,3) + U +
+             Piece(Problems.Strings[i],U,2))
+         else
+           DxList.add(Piece(Problems.Strings[i],U,3) + U +                   // PL code inactive
+             Piece(Problems.Strings[i],U,2) + U + '#');
+    end;
+  end;
+end;
+
+procedure  TfrmBAOptionsDiagnoses.btnOtherClick(Sender: TObject);
+ var
+  Match: string;
+  SelectedList : TStringList;
+  lexIEN: string;
+begin
+ inherited;
+  BAPersonalDX := True;
+  SelectedList := TStringList.Create;
+  if Assigned (SelectedList) then SelectedList.Clear;
+  BADxCode := ''; //init
+   //Execute LEXICON
+  LexiconLookup(Match, LX_ICD);
+  if Match = '' then Exit;
+  if strLen(PChar(Piece(Match, U, 3)))> 0 then
+     lexIEN := Piece(Match, U, 3);
+
+  BADxCode := Piece(Match,U,2) + '  ' + Piece(Match, U, 1);
+  if IsDXInList(Piece(Match,U,1) ) then Exit; // eliminate duplicates
+  if UBACore.IsICD9CodeActive(Piece(Match,U,1),'ICD',Encounter.DateTime) then
+  begin
+     lbPersonalDx.Items.Add(BADxCode);
+     if strLen(PChar(lexIEN)) > 0 then
+        newDxLst.Add(Piece(Match,U,1) + U + lexIEN)
+     else
+        newDxLst.Add(Piece(Match,U,1));
+  end
+  else
+     InfoBox(BA_INACTIVE_ICD9_CODE_1 + BADxCode + BA_INACTIVE_ICD9_CODE_2 , BA_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+
+  lexIEN := '';
+  BAPersonalDX := False;
+  if newDxLst.Count > 0 then btnOK.Enabled := True;
+end;
+
+procedure TfrmBAOptionsDiagnoses.lbSectionsClick(Sender: TObject);
+var i: integer;
+begin
+ inherited;
+for i := 0 to lbSections.Items.Count-1 do
+begin
+    if(lbSections.Selected[i]) then
+    begin
+       ListDiagnosesCodes(lbSections.Items[i]);
+       FDXSection := lbSections.Items[i];
+       Break;
+    end;
+ end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.lbSectionsEnter(Sender: TObject);
+begin
+  inherited;
+   lbSections.Selected[0] := true;
+end;
+
+procedure TfrmBAOptionsDiagnoses.lbDiagnosisClick(Sender: TObject);
+var
+ i : integer;
+  newDxCodes: TStringList;
+  selectedCode: String;
+begin
+  inherited;
+  newDxCodes := TStringList.Create;
+  newDxCodes.Clear;
+  for i := 0 to lbDiagnosis.Items.Count-1 do
+  begin
+        if(lbDiagnosis.Selected[i]) then
+        begin
+           selectedCode := Piece(lbDiagnosis.Items[i],U,2);
+           newDxCodes.Add(selectedCode);
+        end;
+        if newDxCodes.Count > 0 then
+        begin
+           rpcAddToPersonalDxList(User.DUZ,NewDxCodes);
+           NewDxCodes.Clear;
+           lbPersonalDx.Items := rpcGetPersonalDxList(User.DUZ);
+        end;
+  end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.btnCancelClick(Sender: TObject);
+begin
+  inherited;
+        Close;
+end;
+
+procedure TfrmBAOptionsDiagnoses.btnOKClick(Sender: TObject);
+begin
+  inherited;
+  if delDxLst.Count > 0 then
+  begin
+     //  delete selected dx's  
+     rpcDeleteFromPersonalDxList(User.DUZ,delDxLst);
+     delDxLst.Clear;
+  end;
+
+  if newDxLst.Count > 0 then
+  begin
+     newDxLst.Sort;
+     newDxLst.Duplicates := dupIgnore;
+      //  add selected dx's
+     rpcAddToPersonalDxList(User.DUZ,newDxLst);
+     newDxLst.Clear;
+  end;
+  Close;
+end;
+
+procedure TfrmBAOptionsDiagnoses.btnAddClick(Sender: TObject);
+var
+ i : integer;
+  newDxCode: string;
+
+begin
+  inherited;
+  for i := 0 to lbDiagnosis.Items.Count-1 do
+  begin
+     if(lbDiagnosis.Selected[i]) then
+     begin
+         newDxCode := Piece(lbDiagnosis.Items[i],U,2);
+        if (not IsDxInList(newDxCode) ) then
+         begin
+              if UBACore.IsICD9CodeActive(newDxCode,'ICD',Encounter.DateTime) then
+              begin
+                 newDxLst.Add(newDxCode);
+                 lbPersonalDx.Items.Add(Piece(lbDiagnosis.Items[i],U,2) + U + Piece(lbDiagnosis.Items[i],U,1) )
+              end
+              else
+                 InfoBox(BA_INACTIVE_ICD9_CODE_1 + Trim(Piece(newDxCode,'#',1)) + BA_INACTIVE_ICD9_CODE_2 , BA_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+        end;
+     end;
+  end;
+     btnAdd.Enabled := False;
+     lbDiagnosis.ClearSelection;
+     if newDxLst.Count > 0 then btnOK.Enabled := True;
+end;
+
+procedure TfrmBAOptionsDiagnoses.btnDeleteClick(Sender: TObject);
+var
+   i, c: integer;
+begin
+  inherited;
+  SyncDxDeleteList;
+  SyncDxNewList;
+ // delete selected dx from listbox.
+ with lbPersonalDX do
+ begin
+    i := Items.Count - 1;
+    c := SelCount;
+    Items.BeginUpdate;
+    while (i >= 0) and (c > 0) do
+    begin
+       if Selected[i] = true then
+       begin
+          Dec(c);
+          Items.Delete(i);
+       end;
+       Dec(i);
+    end;
+    Items.EndUpdate;
+ end;
+
+ btnDelete.Enabled := False;
+ lbDiagnosis.ClearSelection;
+ if delDxLst.Count > 0 then btnOK.Enabled := True;
+end;
+
+procedure TfrmBAOptionsDiagnoses.lbDiagnosisChange(Sender: TObject);
+begin
+  inherited;
+ if lbDiagnosis.Count = 0 then
+    btnAdd.Enabled := False
+ else
+ begin
+    if (lbDiagnosis.SelCount > 0) then
+       btnAdd.Enabled := True
+    else
+       btnAdd.Enabled := False;
+ end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.lbPersonalDxClick(Sender: TObject);
+var i : integer;
+begin
+  inherited;
+   for i := 0 to lbPersonalDX.Count-1 do
+   begin
+     if(lbPersonalDX.Selected[i]) then
+     begin
+        btnDelete.Enabled := True;
+        break;
+     end
+     else
+        btnDelete.Enabled := False;
+  end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.lbDiagnosisEnter(Sender: TObject);
+begin
+  inherited;
+if lbDiagnosis.Count > 0 then
+     lbDiagnosis.Selected[0] := true;
+end;
+
+procedure TfrmBAOptionsDiagnoses.FormShow(Sender: TObject);
+begin
+  inherited;
+   if lbSections.Count > 0 then
+      ListDiagnosesCodes(lbSections.Items[0]);
+   lbSections.SetFocus;
+end;
+
+procedure TfrmBAOptionsDiagnoses.Button1Click(Sender: TObject);
+begin
+  inherited;
+   newDxLst.Clear;
+   Close;
+end;
+
+procedure TfrmBAOptionsDiagnoses.InactiveICDNotification;
+begin
+   if inactiveCodes > 0 then
+   begin
+      if (not BAFWarningShown) and (inactiveCodes > 0)  then
+      begin
+       InfoBox('There are ' + IntToStr(inactiveCodes) + ' active problem(s) flagged with a "#" as having' + #13#10 +
+               'inactive ICD codes as of today''s date.  Please correct these' + #13#10 +
+               'problems via the Problems Tab - Change" option.', 'Inactive ICD Codes Found', MB_ICONWARNING or MB_OK);
+       BAFWarningShown := True;
+      end;
+   end;
+end;
+
+
+procedure TfrmBAOptionsDiagnoses.FormActivate(Sender: TObject);
+begin
+  inherited;
+  InactiveICDNotification;
+end;
+
+function  TfrmBAOptionsDiagnoses.IsDXInList(ADXCode: string):boolean;
+var
+ i: integer;
+ //x,y: string;
+begin
+     Result := False;
+     for i := 0 to lbPersonalDx.Count-1 do
+        if ADXCode = Piece(lbPersonalDx.Items[i],U,1) then
+        begin
+           Result := True;
+           Break;
+        end;
+end;
+
+
+procedure TfrmBAOptionsDiagnoses.LoadPersonalDxList;
+var
+ i: integer;
+ dxList: TStringList;
+ inActiveDx: string;
+begin
+  dxList := TStringList.Create;
+  dxList.Clear;
+  dxList := rpcGetPersonalDxList(User.DUZ);
+  if dxList.Count > 0 then
+  begin
+     for i := 0 to dxList.Count -1 do
+     begin
+        if not UBACore.IsICD9CodeActive(Piece(dxList.Strings[i],U,1),'ICD',Encounter.DateTime ) then
+        begin
+           inActiveDx := Piece(dxList.Strings[i],U,1)  + '  ' + BA_INACTIVE_CODE + U + Piece(DxList.Strings[i],U,2);
+           lbPersonalDx.Items.Add(inActiveDx);
+        end
+        else
+           lbPersonalDx.Items.Add(dxList.Strings[i]);
+     end;
+  end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.btnRemoveAllClick(Sender: TObject);
+var
+  i: integer;
+  delDxCode: string;
+begin
+  inherited;
+ // save dx seleted for deletion, update file when ok is pressed
+  for i := 0 to lbPersonalDX.Count-1 do
+  begin
+     delDxCode := Piece(lbPersonalDX.Items[i],U,1);
+     delDxLst.Add(delDxCode);
+  end;
+
+
+ // delete selected dx from listbox.
+ with lbPersonalDX do
+ begin
+    i := Items.Count - 1;
+    Items.BeginUpdate;
+    while (i >= 0)  do
+    begin
+       Items.Delete(i);
+       Dec(i);
+    end;
+    Items.EndUpdate;
+ end;
+
+ btnDelete.Enabled := False;
+ lbDiagnosis.ClearSelection;
+ if delDxLst.Count > 0 then btnOK.Enabled := True;
+end;
+
+procedure TfrmBAOptionsDiagnoses.btnAddAllClick(Sender: TObject);
+var
+ i : integer;
+  newDxCode: string;
+
+begin
+  inherited;
+  for i := 0 to lbDiagnosis.Items.Count-1 do
+  begin
+     newDxCode := Piece(lbDiagnosis.Items[i],U,2);
+     if (not IsDxInList(newDxCode) ) then
+     begin
+        if UBACore.IsICD9CodeActive(newDxCode,'ICD',Encounter.DateTime) then
+        begin
+           newDxLst.Add(newDxCode);
+           lbPersonalDx.Items.Add(Piece(lbDiagnosis.Items[i],U,2) + U + Piece(lbDiagnosis.Items[i],U,1) )
+        end
+        else
+           InfoBox(BA_INACTIVE_ICD9_CODE_1 + Trim(Piece(newDxCode,'#',1)) + BA_INACTIVE_ICD9_CODE_2 , BA_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+        end;
+  end;
+     btnAdd.Enabled := False;
+     lbDiagnosis.ClearSelection;
+     if newDxLst.Count > 0 then btnOK.Enabled := True;
+
+end;
+
+procedure TfrmBAOptionsDiagnoses.hdrCntlDxSectionClick(
+  HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  lbPersonalDx.Sorted := false;
+  lbPersonalDx.Sorted := True;
+  lbPersonalDX.Repaint;
+end;
+
+procedure TfrmBAOptionsDiagnoses.FormResize(Sender: TObject);
+begin
+  inherited;
+  hdrCntlDxSections.Sections[0].Width := lbSections.Width;
+  hdrCntlDxAdd.Sections[0].Width :=  lbDiagnosis.Width;
+  hdrCntlDx.Sections[0].Width := lbPersonalDx.Width;
+end;
+
+procedure TfrmBAOptionsDiagnoses.SyncDxDeleteList;
+var
+ i: integer;
+ delDxCode: string;
+begin
+// save dx selected for deletion, update file when ok is pressed
+  for i := 0 to lbPersonalDX.Count-1 do
+  begin
+     if(lbPersonalDX.Selected[i]) then
+     begin
+        delDxCode := Piece(lbPersonalDX.Items[i],U,1);
+        delDxLst.Add(delDxCode);
+     end;
+ end;
+end;
+
+procedure TfrmBAOptionsDiagnoses.SyncDxNewList;
+var
+i,j :integer;
+begin
+ // remove diagnoses selected for deletion from newdxList;
+   for i := 0 to lbPersonalDX.Count-1 do
+   begin
+      if lbPersonalDX.Selected[i] then
+      begin
+        for j := 0 to newDxLst.Count-1 do
+        begin
+           if (Piece(lbPersonalDX.Items[i],U,1)) = (newDxLst.Strings[j]) then
+           begin
+              newDxLst.Delete(j);
+              Break;
+           end;
+        end;
+     end;
+  end;
+end;
+
+
+initialization
+  uAddToPDL := 0;
+  uDeleteFromPDL := 0;
+
+  Problems     := TStringList.Create;
+  DxList       := TStringList.Create;
+  ECFDiagnoses := TStringList.Create;
+  uNewDxList   := TStringList.Create;
+  tmplst       := TStringList.Create;
+  newDxLst     := TStringList.Create;
+  delDxLst     := TStringList.Create;
+
+  Problems.Clear;
+  DxList.Clear;
+  ECFDiagnoses.Clear;
+  uNewDxList.Clear;
+  tmplst.Clear;
+  newDxLst.Clear;
+  delDxLst.Clear;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.bdsproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.bdsproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.bdsproj	(revision 1676)
@@ -0,0 +1,177 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType">VCLApplication</Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{B0A908D8-813B-4A01-B1DE-D0C343E41F8B}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">CPRSChart.dpr</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">1</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">3</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">32768</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="AutoRegisterTLB">False</Linker>
+			<Linker Name="AutoGenImportAssembly">False</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription"></Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir"></Directories>
+			<Directories Name="UnitOutputDir">P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU</Directories>
+			<Directories Name="PackageDLLOutputDir">P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\Packages</Directories>
+			<Directories Name="PackageDCPOutputDir">P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\Packages</Directories>
+			<Directories Name="SearchPath">P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\WVEHR-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source</Directories>
+			<Directories Name="Packages">vcl;vclx;dbrtl;Rave65VCL;bdertl;rtl;vcldb;adortl;dbxcds;dbexpress;vclib;ibxpress;xmlrtl;vclactnband;inet;IntrawebDB_80_100;Intraweb_80_100;vclie;inetdbbde;inetdbxpress;IndyCore;IndySystem;dclOfficeXP;VclSmp;soaprtl;dsnap;IndyProtocols;teeui;teedb;tee;vcldbx</Directories>
+			<Directories Name="Conditionals"></Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams"></Parameters>
+			<Parameters Name="HostApplication"></Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir"></Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">0</VersionInfo>
+			<VersionInfo Name="Release">27</VersionInfo>
+			<VersionInfo Name="Build">83</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1033</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName">Department of Veterans Affairs</VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription">11/04/2008</VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.0.27.83</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName">1.0.27.83 server required</VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright">Unauthorized access or misuse of this system and/or its data is a federal crime. Use of all data shall be in accordance with VA policy on security and privacy.</VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename">Patch 304</VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName">Computerized Patient Record System</VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments">Version 1.0.27.83</VersionInfoKeys>
+		</VersionInfoKeys>
+	</Delphi.Personality>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.bdsproj.local
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.bdsproj.local	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.bdsproj.local	(revision 1676)
@@ -0,0 +1,2 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject/>
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.cfg	(revision 1676)
@@ -0,0 +1,44 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J+
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M32768,1048576
+-K$00400000
+-N0"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU"
+-LE"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\Packages"
+-LN"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\Packages"
+-U"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\WVEHR-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source"
+-O"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\WVEHR-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source"
+-I"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\WVEHR-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source"
+-R"P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\WVEHR-Lib;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\DCU;P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dpr	(revision 1676)
@@ -0,0 +1,344 @@
+program CPRSChart;
+
+
+
+
+
+uses
+  ShareMem,
+  Forms,
+  ORSystem,
+  fPage in 'fPage.pas' {frmPage},
+  fHSplit in 'fHSplit.pas' {frmHSplit},
+  fHP in 'fHP.pas' {frmHP},
+  fCover in 'fCover.pas' {frmCover},
+  fMeds in 'fMeds.pas' {frmMeds},
+  fNotes in 'fNotes.pas' {frmNotes},
+  fDCSumm in 'fDCSumm.pas' {frmDCSumm},
+  fLabs in 'fLabs.pas' {frmLabs},
+  fReports in 'fReports.pas' {frmReports},
+  uCore in 'uCore.pas',
+  fPtSel in 'fPtSel.pas' {frmPtSel},
+  fPtSens in 'fPtSens.pas' {frmPtSens},
+  rCore in 'rCore.pas',
+  fEncnt in 'fEncnt.pas' {frmEncounter},
+  fVisit in 'fVisit.pas' {frmVisit},
+  fPtDemo in 'fPtDemo.pas' {frmPtDemo},
+  rTIU in 'rTIU.pas',
+  fxBroker in 'fxBroker.pas' {frmBroker},
+  fNoteBA in 'fNoteBA.pas' {frmNotesByAuthor},
+  fNoteBD in 'fNoteBD.pas' {frmNotesByDate},
+  fLabTest in 'fLabTest.pas' {frmLabTest},
+  fLabTestGroups in 'fLabTestGroups.pas' {frmLabTestGroups},
+  fLabTests in 'fLabTests.pas' {frmLabTests},
+  rLabs in 'rLabs.pas',
+  fSignItem in 'fSignItem.pas' {frmSignItem},
+  rCover in 'rCover.pas',
+  fRptBox in 'fRptBox.pas' {frmReportBox},
+  rReports in 'rReports.pas',
+  fAbout in 'fAbout.pas' {frmAbout},
+  fxLists in 'fxLists.pas' {frmDbgList},
+  fProbs in 'fProbs.pas' {frmProblems},
+  fAutoSz in 'fAutoSz.pas' {frmAutoSz},
+  rMisc in 'rMisc.pas',
+  fxServer in 'fxServer.pas' {frmDbgServer},
+  fPtCWAD in 'fPtCWAD.pas' {frmPtCWAD},
+  rMeds in 'rMeds.pas',
+  fVitals in 'fVitals.pas' {frmVitals},
+  uProbs in 'uProbs.pas',
+  fProbEdt in 'fProbEdt.pas' {frmdlgProb},
+  fProbFlt in 'fProbFlt.pas' {frmPlVuFilt},
+  fProbCmt in 'fProbCmt.pas' {frmProbCmt},
+  fNoteCslt in 'fNoteCslt.pas' {frmNoteConsult},
+  fNotePrt in 'fNotePrt.pas' {frmNotePrint},
+  uConst in 'uConst.pas',
+  fConsults in 'Consults\fConsults.pas' {frmConsults},
+  fLkUpLocation in 'fLkUpLocation.pas' {frmLkUpLocation},
+  fRename in 'fRename.pas' {frmRename},
+  fDateRange in 'fDateRange.pas' {frmDateRange},
+  fRenewOutMed in 'fRenewOutMed.pas' {frmRenewOutMed},
+  fConsult513Prt in 'Consults\fConsult513Prt.pas' {frm513Print},
+  fConsultAct in 'Consults\fConsultAct.pas' {frmConsultAction},
+  fConsultAlertTo in 'Consults\fConsultAlertTo.pas' {frmConsultAlertsTo},
+  fConsultBD in 'Consults\fConsultBD.pas' {frmConsultsByDate},
+  fConsultBS in 'Consults\fConsultBS.pas' {frmConsultsByService},
+  fConsultBSt in 'Consults\fConsultBSt.pas' {frmConsultsByStatus},
+  fConsultsView in 'Consults\fConsultsView.pas' {frmConsultsView},
+  rConsults in 'Consults\rConsults.pas',
+  uConsults in 'Consults\uConsults.pas',
+  fTimeout in 'fTimeout.pas' {frmTimeout},
+  fNoteDR in 'fNoteDR.pas' {frmNoteDelReason},
+  rDCSumm in 'rDCSumm.pas',
+  fSplash in 'fSplash.pas' {frmSplash},
+  fCsltNote in 'Consults\fCsltNote.pas' {frmCsltNote},
+  rProbs in 'rProbs.pas',
+  fEditConsult in 'Consults\fEditConsult.pas' {frmEditCslt},
+  fEditProc in 'Consults\fEditProc.pas' {frmEditProc},
+  fAllgyFind in 'fAllgyFind.pas' {frmAllgyFind},
+  fAddlSigners in 'fAddlSigners.pas' {frmAddlSigners},
+  fLabPrint in 'fLabPrint.pas' {frmLabPrint},
+  fReportsPrint in 'fReportsPrint.pas' {frmReportPrt},
+  fvit in 'fvit.pas' {frmVit},
+  uPCE in 'Encounter\uPCE.pas',
+  fEncounterFrame in 'Encounter\fEncounterFrame.pas' {frmEncounterFrame},
+  fPCEBase in 'Encounter\fPCEBase.pas' {frmPCEBase},
+  fPCELex in 'Encounter\fPCELex.pas' {frmPCELex},
+  fPCEOther in 'Encounter\fPCEOther.pas' {frmPCEOther},
+  fProcedure in 'Encounter\fProcedure.pas' {frmProcedures},
+  fSkinTest in 'Encounter\fSkinTest.pas' {frmSkinTests},
+  fVisitType in 'Encounter\fVisitType.pas' {frmVisitType},
+  rPCE in 'Encounter\rPCE.pas',
+  fDiagnoses in 'Encounter\fDiagnoses.pas' {frmDiagnoses},
+  fPatientEd in 'Encounter\fPatientEd.pas' {frmPatientEd},
+  fExam in 'Encounter\fExam.pas' {frmExams},
+  fHealthFactor in 'Encounter\fHealthFactor.pas' {frmHealthFactors},
+  fImmunization in 'Encounter\fImmunization.pas' {frmImmunizations},
+  fEncVitals in 'Encounter\fEncVitals.pas' {frmEncVitals},
+  fEffectDate in 'fEffectDate.pas' {frmEffectDate},
+  fPtSelDemog in 'fPtSelDemog.pas' {frmPtSelDemog},
+  fPtSelOptns in 'fPtSelOptns.pas' {frmPtSelOptns},
+  uInit in 'uInit.pas',
+  uSpell in 'uSpell.pas',
+  dShared in 'dShared.pas' {dmodShared: TDataModule},
+  fDrawers in 'fDrawers.pas' {frmDrawers},
+  fMedCopy in 'fMedCopy.pas' {frmMedCopy},
+  uReminders in 'uReminders.pas',
+  rReminders in 'rReminders.pas',
+  fReminderTree in 'fReminderTree.pas' {frmReminderTree},
+  fReminderDialog in 'fReminderDialog.pas' {frmRemDlg},
+  fReportsAdhocSubItem1 in 'fReportsAdhocSubItem1.pas' {frmReportsAdhocSubItem1},
+  fReportsAdhocComponent1 in 'fReportsAdhocComponent1.pas' {frmReportsAdhocComponent1},
+  fPtSelMsg in 'fPtSelMsg.pas' {frmPtSelMsg},
+  fMHTest in 'fMHTest.pas' {frmMHTest},
+  fGAF in 'Encounter\fGAF.pas' {frmGAF},
+  fPCEProvider in 'Encounter\fPCEProvider.pas' {frmPCEProvider},
+  fPCEBaseGrid in 'Encounter\fPCEBaseGrid.pas' {frmPCEBaseGrid},
+  fPCEBaseMain in 'Encounter\fPCEBaseMain.pas' {frmPCEBaseMain},
+  fNoteProps in 'fNoteProps.pas' {frmNoteProperties},
+  fNotesBP in 'fNotesBP.pas' {frmNotesBP},
+  fLabInfo in 'fLabInfo.pas' {frmLabInfo},
+  fPreReq in 'Consults\fPreReq.pas' {frmPrerequisites},
+  fDCSummProps in 'fDCSummProps.pas' {frmDCSummProperties},
+  fHFSearch in 'Encounter\fHFSearch.pas' {frmHFSearch},
+  fConsMedRslt in 'Consults\fConsMedRslt.pas' {frmConsMedRslt},
+  uVitals in 'Vitals\uVitals.pas',
+  rVitals in 'Vitals\rVitals.pas',
+  uDCSumm in 'uDCSumm.pas',
+  uDocTree in 'uDocTree.pas',
+  fVitalsDate in 'Vitals\fVitalsDate.pas' {frmVitalsDate},
+  uTemplates in 'Templates\uTemplates.pas',
+  fTemplateDialog in 'Templates\fTemplateDialog.pas' {frmTemplateDialog},
+  fTemplateEditor in 'Templates\fTemplateEditor.pas' {frmTemplateEditor},
+  fTemplateFieldEditor in 'Templates\fTemplateFieldEditor.pas' {frmTemplateFieldEditor},
+  fTemplateFields in 'Templates\fTemplateFields.pas' {frmTemplateFields},
+  fTemplateObjects in 'Templates\fTemplateObjects.pas' {frmTemplateObjects},
+  fTemplateView in 'Templates\fTemplateView.pas' {frmTemplateView},
+  mTemplateFieldButton in 'Templates\mTemplateFieldButton.pas' {fraTemplateFieldButton: TFrame},
+  rTemplates in 'Templates\rTemplates.pas',
+  uTemplateFields in 'Templates\uTemplateFields.pas',
+  fTemplateAutoGen in 'Templates\fTemplateAutoGen.pas' {frmTemplateAutoGen},
+  mVisitRelated in 'Encounter\mVisitRelated.pas' {fraVisitRelated: TFrame},
+  fRemVisitInfo in 'fRemVisitInfo.pas' {frmRemVisitInfo},
+  fIconLegend in 'fIconLegend.pas' {frmIconLegend},
+  mImgText in 'mImgText.pas' {fraImgText: TFrame},
+  fTemplateImport in 'Templates\fTemplateImport.pas' {frmTemplateImport},
+  fRemCoverSheet in 'fRemCoverSheet.pas' {frmRemCoverSheet},
+  uTIU in 'uTIU.pas',
+  fRemCoverPreview in 'fRemCoverPreview.pas' {frmRemCoverPreview},
+  fPCEEdit in 'Encounter\fPCEEdit.pas' {frmPCEEdit},
+  uSurgery in 'uSurgery.pas',
+  fSurgeryView in 'fSurgeryView.pas' {frmSurgeryView},
+  rSurgery in 'rSurgery.pas',
+  uCaseTree in 'uCaseTree.pas',
+  fSurgery in 'fSurgery.pas' {frmSurgery},
+  fNoteIDParents in 'fNoteIDParents.pas' {frmNoteIDParents},
+  uReports in 'uReports.pas',
+  fNoteCPFields in 'fNoteCPFields.pas' {frmNoteCPFields},
+  CPRSChart_TLB in 'CPRSChart_TLB.pas',
+  uEventHooks in 'uEventHooks.pas',
+  rEventHooks in 'rEventHooks.pas',
+  fPtSelOptSave in 'fPtSelOptSave.pas' {frmPtSelOptSave},
+  uOrders in 'Orders\uOrders.pas',
+  fOCSession in 'Orders\fOCSession.pas' {frmOCSession},
+  fODAuto in 'Orders\fODAuto.pas',
+  fODBase in 'Orders\fODBase.pas' {frmODBase},
+  fODDiet in 'Orders\fODDiet.pas' {frmODDiet},
+  fODDietLT in 'Orders\fODDietLT.pas' {frmODDietLT},
+  fODGen in 'Orders\fODGen.pas' {frmODGen},
+  fODLab in 'Orders\fODLab.pas' {frmODLab},
+  fODLabImmedColl in 'Orders\fODLabImmedColl.pas' {frmODLabImmedColl},
+  fODLabOthCollSamp in 'Orders\fODLabOthCollSamp.pas' {frmODLabOthCollSamp},
+  fODLabOthSpec in 'Orders\fODLabOthSpec.pas' {frmODLabOthSpec},
+  fODMedComplex in 'Orders\fODMedComplex.pas' {frmODMedComplex},
+  fODMedFA in 'Orders\fODMedFA.pas' {frmODMedFA},
+  fODMedIn in 'Orders\fODMedIn.pas' {frmODMedIn},
+  fODMedIV in 'Orders\fODMedIV.pas' {frmODMedIV},
+  fODMedOIFA in 'Orders\fODMedOIFA.pas' {frmODMedOIFA},
+  fODMedOut in 'Orders\fODMedOut.pas' {frmODMedOut},
+  fODMeds in 'Orders\fODMeds.pas' {frmODMeds},
+  fODMessage in 'Orders\fODMessage.pas' {frmODMessage},
+  fODMisc in 'Orders\fODMisc.pas' {frmODMisc},
+  fODRad in 'Orders\fODRad.pas' {frmODRad},
+  fODRadApproval in 'Orders\fODRadApproval.pas' {frmODRadApproval},
+  fODRadConShRes in 'Orders\fODRadConShRes.pas' {frmODRadConShRes},
+  fODRadImType in 'Orders\fODRadImType.pas' {frmODRadImType},
+  fODSaveQuick in 'Orders\fODSaveQuick.pas' {frmODQuick},
+  fODText in 'Orders\fODText.pas' {frmODText},
+  fODVitals in 'Orders\fODVitals.pas' {frmODVitals},
+  fOMAction in 'Orders\fOMAction.pas' {frmOMAction},
+  fOMHTML in 'Orders\fOMHTML.pas' {frmOMHTML},
+  fOMNavA in 'Orders\fOMNavA.pas' {frmOMNavA},
+  fOMProgress in 'Orders\fOMProgress.pas' {frmOMProgress},
+  fOMSet in 'Orders\fOMSet.pas' {frmOMSet},
+  fOMVerify in 'Orders\fOMVerify.pas' {frmOMVerify},
+  fOrderComment in 'Orders\fOrderComment.pas' {frmWardComments},
+  fOrderFlag in 'Orders\fOrderFlag.pas' {frmFlagOrder},
+  fOrders in 'Orders\fOrders.pas' {frmOrders},
+  fOrdersAlert in 'Orders\fOrdersAlert.pas' {frmAlertOrders},
+  fOrderSaveQuick in 'Orders\fOrderSaveQuick.pas' {frmSaveQuickOrder},
+  fOrdersComplete in 'Orders\fOrdersComplete.pas' {frmCompleteOrders},
+  fOrdersCopy in 'Orders\fOrdersCopy.pas' {frmCopyOrders},
+  fOrdersDC in 'Orders\fOrdersDC.pas' {frmDCOrders},
+  fOrdersHold in 'Orders\fOrdersHold.pas' {frmHoldOrders},
+  fOrdersOnChart in 'Orders\fOrdersOnChart.pas' {frmOnChartOrders},
+  fOrdersPrint in 'Orders\fOrdersPrint.pas' {frmOrdersPrint},
+  fOrdersRefill in 'Orders\fOrdersRefill.pas' {frmRefillOrders},
+  fOrdersRelease in 'Orders\fOrdersRelease.pas' {frmReleaseOrders},
+  fOrdersRenew in 'Orders\fOrdersRenew.pas' {frmRenewOrders},
+  fOrdersSign in 'Orders\fOrdersSign.pas' {frmSignOrders},
+  fOrdersTS in 'Orders\fOrdersTS.pas' {frmOrdersTS},
+  fOrdersUnhold in 'Orders\fOrdersUnhold.pas' {frmUnholdOrders},
+  fOrdersVerify in 'Orders\fOrdersVerify.pas' {frmVerifyOrders},
+  fOrderUnflag in 'Orders\fOrderUnflag.pas' {frmUnflagOrder},
+  fOrderVw in 'Orders\fOrderVw.pas' {frmOrderView},
+  rODAllergy in 'Orders\rODAllergy.pas',
+  rODBase in 'Orders\rODBase.pas',
+  rODDiet in 'Orders\rODDiet.pas',
+  rODLab in 'Orders\rODLab.pas',
+  rODMeds in 'Orders\rODMeds.pas',
+  rODRad in 'Orders\rODRad.pas',
+  rOrders in 'Orders\rOrders.pas',
+  uODBase in 'Orders\uODBase.pas',
+  fOCAccept in 'Orders\fOCAccept.pas' {frmOCAccept},
+  fODConsult in 'Consults\fODConsult.pas' {frmODCslt},
+  fODProc in 'Consults\fODProc.pas' {frmODProc},
+  uOptions in 'Options\uOptions.pas',
+  fOptionsCombinations in 'Options\fOptionsCombinations.pas' {frmOptionsCombinations},
+  fOptionsDays in 'Options\fOptionsDays.pas' {frmOptionsDays},
+  fOptionsLists in 'Options\fOptionsLists.pas' {frmOptionsLists},
+  fOptionsNewList in 'Options\fOptionsNewList.pas' {frmOptionsNewList},
+  fOptionsNotes in 'Options\fOptionsNotes.pas' {frmOptionsNotes},
+  fOptionsOther in 'Options\fOptionsOther.pas' {frmOptionsOther},
+  fOptionsPatientSelection in 'Options\fOptionsPatientSelection.pas' {frmOptionsPatientSelection},
+  fOptionsPrimaryList in 'Options\fOptionsPrimaryList.pas' {frmOptionsPrimaryList},
+  fOptionsReminders in 'Options\fOptionsReminders.pas' {frmOptionsReminders},
+  fOptionsReportsCustom in 'Options\fOptionsReportsCustom.pas' {frmOptionsReportsCustom},
+  fOptionsReportsDefault in 'Options\fOptionsReportsDefault.pas' {frmOptionsReportsDefault},
+  fOptionsSubscribe in 'Options\fOptionsSubscribe.pas' {frmOptionsSubscribe},
+  fOptionsSurrogate in 'Options\fOptionsSurrogate.pas' {frmOptionsSurrogate},
+  fOptionsTeams in 'Options\fOptionsTeams.pas' {frmOptionsTeams},
+  fOptionsTitles in 'Options\fOptionsTitles.pas' {frmOptionsTitles},
+  rOptions in 'Options\rOptions.pas',
+  fOptions in 'Options\fOptions.pas' {frmOptions},
+  uSignItems in 'uSignItems.pas',
+  mCoPayDesc in 'mCoPayDesc.pas' {fraCoPayDesc: TFrame},
+  XuDigSigSC_TLB in 'XuDigSigSC_TLB.pas',
+  fOrdersCV in 'Orders\fOrdersCV.pas' {frmChgEvent},
+  fODReleaseEvent in 'Orders\fODReleaseEvent.pas' {frmOrdersReleaseEvent},
+  fODActive in 'Orders\fODActive.pas' {frmODActive},
+  fDefaultEvent in 'fDefaultEvent.pas' {frmDefaultEvent},
+  mEvntDelay in 'mEvntDelay.pas' {fraEvntDelayList: TFrame},
+  fOrdersEvntRelease in 'Orders\fOrdersEvntRelease.pas' {frmOrdersEvntRelease},
+  rECS in 'rECS.pas',
+  fODChangeEvtDisp in 'Orders\fODChangeEvtDisp.pas' {frmChangeEventDisp},
+  fODValidateAction in 'Orders\fODValidateAction.pas' {frmInvalidActionList},
+  fODChild in 'Orders\fODChild.pas' {frmODChild},
+  fDupPts in 'fDupPts.pas' {frmDupPts},
+  VERGENCECONTEXTORLib_TLB in 'VERGENCECONTEXTORLib_TLB.pas',
+  uOrPtf in 'uOrPtf.pas',
+  fPatientFlagMulti in 'fPatientFlagMulti.pas' {frmFlags},
+  fFrame in 'fFrame.pas' {frmFrame},
+  fAlertForward in 'fAlertForward.pas' {frmAlertForward},
+  fODMedNVA in 'Orders\fODMedNVA.pas' {frmODMedNVA},
+  fPrintList in 'fPrintList.pas' {frmPrintList},
+  fODChangeUnreleasedRenew in 'Orders\fODChangeUnreleasedRenew.pas' {frmODChangeUnreleasedRenew},
+  UBAMessages in 'BA\UBAMessages.pas',
+  UBAConst in 'BA\UBAConst.pas',
+  UBAGlobals in 'BA\UBAGlobals.pas',
+  fBALocalDiagnoses in 'BA\fBALocalDiagnoses.pas' {frmBALocalDiagnoses},
+  fReview in 'fReview.pas' {frmReview},
+  fARTFreeTextMsg in 'fARTFreeTextMsg.pas' {frmARTFreeTextMsg},
+  fAllgyBox in 'fAllgyBox.pas' {frmAllgyBox},
+  fARTAllgy in 'fARTAllgy.pas' {frmARTAllergy},
+  UBACore in 'BA\UBACore.pas',
+  fBAOptionsDiagnoses in 'BA\fBAOptionsDiagnoses.pas' {frmBAOptionsDiagnoses},
+  fOtherSchedule in 'Orders\fOtherSchedule.pas' {frmOtherSchedule},
+  fODBBank in 'Orders\fODBBank.pas' {frmODBBank},
+  fNoteST in 'fNoteST.pas' {frmNotesSearchText},
+  fNoteSTStop in 'fNoteSTStop.pas' {frmSearchStop},
+  rGraphs in 'rGraphs.pas',
+  fGraphs in 'fGraphs.pas' {frmGraphs},
+  fGraphSettings in 'fGraphSettings.pas' {frmGraphSettings},
+  fGraphProfiles in 'fGraphProfiles.pas' {frmGraphProfiles},
+  uGraphs in 'uGraphs.pas',
+  fClinicWardMeds in 'fClinicWardMeds.pas' {frmClinicWardMeds},
+  fActivateDeactivate in 'fActivateDeactivate.pas' {frmActivateDeactive},
+  uFormMonitor in 'uFormMonitor.pas',
+  fAResize in 'fAResize.pas' {frmAutoResize},
+  fODAllgy in 'Orders\fODAllgy.pas' {frmODAllergy},
+  fDeviceSelect in 'fDeviceSelect.pas' {frmDeviceSelect},
+  fLabCollTimes in 'fLabCollTimes.pas' {frmLabCollectTimes},
+  fPostings in 'fPostings.pas' {frmPostings},
+  fProbLex in 'fProbLex.pas' {frmPLLex},
+  fTIUView in 'fTIUView.pas' {frmTIUView},
+  ORClasses in '..\CPRS-Lib\ORClasses.pas',
+  ORCtrls in '..\CPRS-Lib\ORCtrls.pas',
+  ORDtTm in '..\CPRS-Lib\ORDtTm.pas' {ORfrmDtTm},
+  ORDtTmCal in '..\CPRS-Lib\ORDtTmCal.pas',
+  ORDtTmRng in '..\CPRS-Lib\ORDtTmRng.pas' {ORfrmDateRange},
+  ORFn in '..\CPRS-Lib\ORFn.pas',
+  ORNet in '..\CPRS-Lib\ORNet.pas',
+  Vawrgrid in '..\CPRS-Lib\Vawrgrid.pas',
+  XMLUtils in '..\CPRS-Lib\XMLUtils.pas',
+  fBase508Form in 'fBase508Form.pas' {frmBase508Form},
+  VAUtils in '..\VA\VAUtils.pas',
+  VA2006Utils in '..\VA\VA2006Utils.pas',
+  VAClasses in '..\VA\VAClasses.pas',
+  fPrintLocation in 'fPrintLocation.pas' {frmPrintLocation},
+  uVA508CPRSCompatibility in 'uVA508CPRSCompatibility.pas',
+  VA508AccessibilityManager in '..\VA\VA508Accessibility\VA508AccessibilityManager.pas',
+  ORCtrlsVA508Compatibility in '..\CPRS-Lib\ORCtrlsVA508Compatibility.pas',
+  VA508DelphiCompatibility in '..\VA\VA508Accessibility\VA508DelphiCompatibility.pas',
+  uDlgComponents in 'uDlgComponents.pas',
+  fGraphData in 'fGraphData.pas' {frmGraphData},
+  fGraphOthers in 'fGraphOthers.pas' {frmGraphOthers},
+  VA508AccessibilityRouter in '..\VA\VA508Accessibility\VA508AccessibilityRouter.pas',
+  fIVRoutes in 'Orders\fIVRoutes.pas' {frmIVRoutes},
+  fFindingTemplates in 'Templates\fFindingTemplates.pas' {frmFindingTemplates};
+
+{$R *.TLB}
+
+{$R *.RES}
+
+begin
+  if not UpdateSelf then                          // only start if not copying new version
+  begin
+    if not BorlandDLLVersionOK then exit;         // Exit immediately if old or missing BORLNDMM.DLL
+    RegisterCPRSTypeLibrary;                      // will halt program if /regserver or /unregserver param
+    Application.Initialize;
+    frmSplash := nil;
+    if ParamSearch('SPLASH') <> 'OFF' then
+    begin
+      frmSplash := TfrmSplash.Create(Application);  // show splash screen
+      frmSplash.Show;                               //         "
+      frmSplash.Refresh;                            //         "
+    end;
+    Application.Title := 'CPRS - Patient Chart';
+    Application.HelpFile := 'cprs.hlp';
+    Application.CreateForm(TdmodShared, dmodShared);
+  Application.CreateForm(TfrmFrame, frmFrame);
+  Application.CreateForm(TfrmSearchStop, frmSearchStop);
+  frmSplash.Free;                               // close & free splash screen
+    Application.Run;
+  end;
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dproj	(revision 1676)
@@ -0,0 +1,877 @@
+﻿<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ProjectGuid>{b0a908d8-813b-4a01-b1de-d0c343e41f8b}</ProjectGuid>
+    <MainSource>CPRSChart.dpr</MainSource>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
+    <DCC_DependencyCheckOutputName>CPRSChart.exe</DCC_DependencyCheckOutputName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <Version>7.0</Version>
+    <DCC_DebugInformation>False</DCC_DebugInformation>
+    <DCC_WriteableConstants>True</DCC_WriteableConstants>
+    <DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols>
+    <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+    <DCC_MapFile>3</DCC_MapFile>
+    <DCC_StackSize>32768,1048576</DCC_StackSize>
+    <DCC_ExeOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart</DCC_ExeOutput>
+    <DCC_DcuOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart\DCU</DCC_DcuOutput>
+    <DCC_ObjOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart\DCU</DCC_ObjOutput>
+    <DCC_HppOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart\DCU</DCC_HppOutput>
+    <DCC_BplOutput>C:\Vista\cprs\OR_3_243V27\Packages</DCC_BplOutput>
+    <DCC_DcpOutput>C:\Vista\cprs\OR_3_243V27\Packages</DCC_DcpOutput>
+    <DCC_UnitSearchPath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_UnitSearchPath>
+    <DCC_ResourcePath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_ResourcePath>
+    <DCC_ObjPath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_ObjPath>
+    <DCC_IncludePath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_IncludePath>
+    <DCC_Define>RELEASE</DCC_Define>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <Version>7.0</Version>
+    <DCC_WriteableConstants>True</DCC_WriteableConstants>
+    <DCC_MapFile>3</DCC_MapFile>
+    <DCC_StackSize>32768,1048576</DCC_StackSize>
+    <DCC_ExeOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart</DCC_ExeOutput>
+    <DCC_DcuOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart\DCU</DCC_DcuOutput>
+    <DCC_ObjOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart\DCU</DCC_ObjOutput>
+    <DCC_HppOutput>C:\Vista\cprs\OR_3_243V27\CPRS-chart\DCU</DCC_HppOutput>
+    <DCC_BplOutput>C:\Vista\cprs\OR_3_243V27\Packages</DCC_BplOutput>
+    <DCC_DcpOutput>C:\Vista\cprs\OR_3_243V27\Packages</DCC_DcpOutput>
+    <DCC_UnitSearchPath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_UnitSearchPath>
+    <DCC_ResourcePath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_ResourcePath>
+    <DCC_ObjPath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_ObjPath>
+    <DCC_IncludePath>C:\Vista\cprs\OR_3_243V27\CPRS-chart;C:\Vista\cprs\OR_3_243V27\CPRS-Lib;C:\Vista\cprs\OR_3_243V27\VA;C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility</DCC_IncludePath>
+    <DCC_Define>DEBUG</DCC_Define>
+  </PropertyGroup>
+  <ProjectExtensions>
+    <Borland.Personality>Delphi.Personality</Borland.Personality>
+    <Borland.ProjectType>VCLApplication</Borland.ProjectType>
+    <BorlandProject>
+<BorlandProject xmlns=""> <Delphi.Personality>   <Parameters>
+      <Parameters Name="UseLauncher">False</Parameters>
+      <Parameters Name="LoadAllSymbols">True</Parameters>
+      <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+    </Parameters>
+    <VersionInfo>
+      <VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+      <VersionInfo Name="AutoIncBuild">False</VersionInfo>
+      <VersionInfo Name="MajorVer">1</VersionInfo>
+      <VersionInfo Name="MinorVer">0</VersionInfo>
+      <VersionInfo Name="Release">27</VersionInfo>
+      <VersionInfo Name="Build">77</VersionInfo>
+      <VersionInfo Name="Debug">False</VersionInfo>
+      <VersionInfo Name="PreRelease">False</VersionInfo>
+      <VersionInfo Name="Special">False</VersionInfo>
+      <VersionInfo Name="Private">False</VersionInfo>
+      <VersionInfo Name="DLL">False</VersionInfo>
+      <VersionInfo Name="Locale">1033</VersionInfo>
+      <VersionInfo Name="CodePage">1252</VersionInfo>
+    </VersionInfo>
+    <VersionInfoKeys>
+      <VersionInfoKeys Name="CompanyName">Department of Veterans Affairs</VersionInfoKeys>
+      <VersionInfoKeys Name="FileDescription">6/26/2007</VersionInfoKeys>
+      <VersionInfoKeys Name="FileVersion">1.0.27.77</VersionInfoKeys>
+      <VersionInfoKeys Name="InternalName">1.0.27.77 server required</VersionInfoKeys>
+      <VersionInfoKeys Name="LegalCopyright">Unauthorized access or misuse of this system and/or its data is a federal crime. Use of all data shall be in accordance with VA policy on security and privacy.</VersionInfoKeys>
+      <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+      <VersionInfoKeys Name="OriginalFilename">Patch 243</VersionInfoKeys>
+      <VersionInfoKeys Name="ProductName">Computerized Patient Record System</VersionInfoKeys>
+      <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+      <VersionInfoKeys Name="Comments">Version 1.0.27.77</VersionInfoKeys>
+    </VersionInfoKeys>
+    <Excluded_Packages>
+      
+      
+      <Excluded_Packages Name="C:\Vista\cprs\ShiftChangeHandOff\ORCtrlLib60.bpl">CPRS Custom Controls</Excluded_Packages>
+    </Excluded_Packages>
+    <Source>
+      <Source Name="MainSource">CPRSChart.dpr</Source>
+    </Source>
+  </Delphi.Personality> </BorlandProject></BorlandProject>
+  </ProjectExtensions>
+  <ItemGroup />
+  <ItemGroup>
+    <DelphiCompile Include="CPRSChart.dpr">
+      <MainSource>MainSource</MainSource>
+    </DelphiCompile>
+    <DCCReference Include="..\CPRS-Lib\ORClasses.pas" />
+    <DCCReference Include="..\CPRS-Lib\ORCtrls.pas" />
+    <DCCReference Include="..\CPRS-Lib\ORCtrlsVA508Compatibility.pas" />
+    <DCCReference Include="..\CPRS-Lib\ORDtTm.pas">
+      <Form>ORfrmDtTm</Form>
+    </DCCReference>
+    <DCCReference Include="..\CPRS-Lib\ORDtTmCal.pas" />
+    <DCCReference Include="..\CPRS-Lib\ORDtTmRng.pas">
+      <Form>ORfrmDateRange</Form>
+    </DCCReference>
+    <DCCReference Include="..\CPRS-Lib\ORFn.pas" />
+    <DCCReference Include="..\CPRS-Lib\ORNet.pas" />
+    <DCCReference Include="..\CPRS-Lib\Vawrgrid.pas" />
+    <DCCReference Include="..\CPRS-Lib\XMLUtils.pas" />
+    <DCCReference Include="..\VA\VA2006Utils.pas" />
+    <DCCReference Include="..\VA\VA508Accessibility\VA508AccessibilityManager.pas" />
+    <DCCReference Include="..\VA\VA508Accessibility\VA508AccessibilityRouter.pas" />
+    <DCCReference Include="..\VA\VA508Accessibility\VA508DelphiCompatibility.pas" />
+    <DCCReference Include="..\VA\VAClasses.pas" />
+    <DCCReference Include="..\VA\VAUtils.pas" />
+    <DCCReference Include="BA\fBALocalDiagnoses.pas">
+      <Form>frmBALocalDiagnoses</Form>
+    </DCCReference>
+    <DCCReference Include="BA\fBAOptionsDiagnoses.pas">
+      <Form>frmBAOptionsDiagnoses</Form>
+    </DCCReference>
+    <DCCReference Include="BA\UBAConst.pas" />
+    <DCCReference Include="BA\UBACore.pas" />
+    <DCCReference Include="BA\UBAGlobals.pas" />
+    <DCCReference Include="BA\UBAMessages.pas" />
+    <DCCReference Include="Consults\fConsMedRslt.pas">
+      <Form>frmConsMedRslt</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsult513Prt.pas">
+      <Form>frm513Print</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsultAct.pas">
+      <Form>frmConsultAction</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsultAlertTo.pas">
+      <Form>frmConsultAlertsTo</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsultBD.pas">
+      <Form>frmConsultsByDate</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsultBS.pas">
+      <Form>frmConsultsByService</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsultBSt.pas">
+      <Form>frmConsultsByStatus</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsults.pas">
+      <Form>frmConsults</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fConsultsView.pas">
+      <Form>frmConsultsView</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fCsltNote.pas">
+      <Form>frmCsltNote</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fEditConsult.pas">
+      <Form>frmEditCslt</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fEditProc.pas">
+      <Form>frmEditProc</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fODConsult.pas">
+      <Form>frmODCslt</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fODProc.pas">
+      <Form>frmODProc</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\fPreReq.pas">
+      <Form>frmPrerequisites</Form>
+    </DCCReference>
+    <DCCReference Include="Consults\rConsults.pas" />
+    <DCCReference Include="Consults\uConsults.pas" />
+    <DCCReference Include="CPRSChart_TLB.pas" />
+    <DCCReference Include="dShared.pas">
+      <Form>dmodShared</Form>
+      <DesignClass>TDataModule</DesignClass>
+    </DCCReference>
+    <DCCReference Include="Encounter\fDiagnoses.pas">
+      <Form>frmDiagnoses</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fEncounterFrame.pas">
+      <Form>frmEncounterFrame</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fEncVitals.pas">
+      <Form>frmEncVitals</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fExam.pas">
+      <Form>frmExams</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fGAF.pas">
+      <Form>frmGAF</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fHealthFactor.pas">
+      <Form>frmHealthFactors</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fHFSearch.pas">
+      <Form>frmHFSearch</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fImmunization.pas">
+      <Form>frmImmunizations</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPatientEd.pas">
+      <Form>frmPatientEd</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCEBase.pas">
+      <Form>frmPCEBase</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCEBaseGrid.pas">
+      <Form>frmPCEBaseGrid</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCEBaseMain.pas">
+      <Form>frmPCEBaseMain</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCEEdit.pas">
+      <Form>frmPCEEdit</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCELex.pas">
+      <Form>frmPCELex</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCEOther.pas">
+      <Form>frmPCEOther</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fPCEProvider.pas">
+      <Form>frmPCEProvider</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fProcedure.pas">
+      <Form>frmProcedures</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fSkinTest.pas">
+      <Form>frmSkinTests</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\fVisitType.pas">
+      <Form>frmVisitType</Form>
+    </DCCReference>
+    <DCCReference Include="Encounter\mVisitRelated.pas">
+      <Form>fraVisitRelated</Form>
+      <DesignClass>TFrame</DesignClass>
+    </DCCReference>
+    <DCCReference Include="Encounter\rPCE.pas" />
+    <DCCReference Include="Encounter\uPCE.pas" />
+    <DCCReference Include="fAbout.pas">
+      <Form>frmAbout</Form>
+    </DCCReference>
+    <DCCReference Include="fActivateDeactivate.pas">
+      <Form>frmActivateDeactive</Form>
+    </DCCReference>
+    <DCCReference Include="fAddlSigners.pas">
+      <Form>frmAddlSigners</Form>
+    </DCCReference>
+    <DCCReference Include="fAlertForward.pas">
+      <Form>frmAlertForward</Form>
+    </DCCReference>
+    <DCCReference Include="fAllgyBox.pas">
+      <Form>frmAllgyBox</Form>
+    </DCCReference>
+    <DCCReference Include="fAllgyFind.pas">
+      <Form>frmAllgyFind</Form>
+    </DCCReference>
+    <DCCReference Include="fAResize.pas">
+      <Form>frmAutoResize</Form>
+    </DCCReference>
+    <DCCReference Include="fARTAllgy.pas">
+      <Form>frmARTAllergy</Form>
+    </DCCReference>
+    <DCCReference Include="fARTFreeTextMsg.pas">
+      <Form>frmARTFreeTextMsg</Form>
+    </DCCReference>
+    <DCCReference Include="fAutoSz.pas">
+      <Form>frmAutoSz</Form>
+    </DCCReference>
+    <DCCReference Include="fBase508Form.pas">
+      <Form>frmBase508Form</Form>
+    </DCCReference>
+    <DCCReference Include="fClinicWardMeds.pas">
+      <Form>frmClinicWardMeds</Form>
+    </DCCReference>
+    <DCCReference Include="fCover.pas">
+      <Form>frmCover</Form>
+    </DCCReference>
+    <DCCReference Include="fDateRange.pas">
+      <Form>frmDateRange</Form>
+    </DCCReference>
+    <DCCReference Include="fDCSumm.pas">
+      <Form>frmDCSumm</Form>
+    </DCCReference>
+    <DCCReference Include="fDCSummProps.pas">
+      <Form>frmDCSummProperties</Form>
+    </DCCReference>
+    <DCCReference Include="fDefaultEvent.pas">
+      <Form>frmDefaultEvent</Form>
+    </DCCReference>
+    <DCCReference Include="fDeviceSelect.pas">
+      <Form>frmDeviceSelect</Form>
+    </DCCReference>
+    <DCCReference Include="fDrawers.pas">
+      <Form>frmDrawers</Form>
+    </DCCReference>
+    <DCCReference Include="fDupPts.pas">
+      <Form>frmDupPts</Form>
+    </DCCReference>
+    <DCCReference Include="fEffectDate.pas">
+      <Form>frmEffectDate</Form>
+    </DCCReference>
+    <DCCReference Include="fEncnt.pas">
+      <Form>frmEncounter</Form>
+    </DCCReference>
+    <DCCReference Include="fFrame.pas">
+      <Form>frmFrame</Form>
+    </DCCReference>
+    <DCCReference Include="fGraphData.pas">
+      <Form>frmGraphData</Form>
+    </DCCReference>
+    <DCCReference Include="fGraphOthers.pas">
+      <Form>frmGraphOthers</Form>
+    </DCCReference>
+    <DCCReference Include="fGraphProfiles.pas">
+      <Form>frmGraphProfiles</Form>
+    </DCCReference>
+    <DCCReference Include="fGraphs.pas">
+      <Form>frmGraphs</Form>
+    </DCCReference>
+    <DCCReference Include="fGraphSettings.pas">
+      <Form>frmGraphSettings</Form>
+    </DCCReference>
+    <DCCReference Include="fHP.pas">
+      <Form>frmHP</Form>
+    </DCCReference>
+    <DCCReference Include="fHSplit.pas">
+      <Form>frmHSplit</Form>
+    </DCCReference>
+    <DCCReference Include="fIconLegend.pas">
+      <Form>frmIconLegend</Form>
+    </DCCReference>
+    <DCCReference Include="fLabCollTimes.pas">
+      <Form>frmLabCollectTimes</Form>
+    </DCCReference>
+    <DCCReference Include="fLabInfo.pas">
+      <Form>frmLabInfo</Form>
+    </DCCReference>
+    <DCCReference Include="fLabPrint.pas">
+      <Form>frmLabPrint</Form>
+    </DCCReference>
+    <DCCReference Include="fLabs.pas">
+      <Form>frmLabs</Form>
+    </DCCReference>
+    <DCCReference Include="fLabTest.pas">
+      <Form>frmLabTest</Form>
+    </DCCReference>
+    <DCCReference Include="fLabTestGroups.pas">
+      <Form>frmLabTestGroups</Form>
+    </DCCReference>
+    <DCCReference Include="fLabTests.pas">
+      <Form>frmLabTests</Form>
+    </DCCReference>
+    <DCCReference Include="fLkUpLocation.pas">
+      <Form>frmLkUpLocation</Form>
+    </DCCReference>
+    <DCCReference Include="fMedCopy.pas">
+      <Form>frmMedCopy</Form>
+    </DCCReference>
+    <DCCReference Include="fMeds.pas">
+      <Form>frmMeds</Form>
+    </DCCReference>
+    <DCCReference Include="fMHTest.pas">
+      <Form>frmMHTest</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteBA.pas">
+      <Form>frmNotesByAuthor</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteBD.pas">
+      <Form>frmNotesByDate</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteCPFields.pas">
+      <Form>frmNoteCPFields</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteCslt.pas">
+      <Form>frmNoteConsult</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteDR.pas">
+      <Form>frmNoteDelReason</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteIDParents.pas">
+      <Form>frmNoteIDParents</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteProps.pas">
+      <Form>frmNoteProperties</Form>
+    </DCCReference>
+    <DCCReference Include="fNotePrt.pas">
+      <Form>frmNotePrint</Form>
+    </DCCReference>
+    <DCCReference Include="fNotes.pas">
+      <Form>frmNotes</Form>
+    </DCCReference>
+    <DCCReference Include="fNotesBP.pas">
+      <Form>frmNotesBP</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteST.pas">
+      <Form>frmNotesSearchText</Form>
+    </DCCReference>
+    <DCCReference Include="fNoteSTStop.pas">
+      <Form>frmSearchStop</Form>
+    </DCCReference>
+    <DCCReference Include="fPage.pas">
+      <Form>frmPage</Form>
+    </DCCReference>
+    <DCCReference Include="fPatientFlagMulti.pas">
+      <Form>frmFlags</Form>
+    </DCCReference>
+    <DCCReference Include="fPostings.pas">
+      <Form>frmPostings</Form>
+    </DCCReference>
+    <DCCReference Include="fPrintList.pas">
+      <Form>frmPrintList</Form>
+    </DCCReference>
+    <DCCReference Include="fPrintLocation.pas">
+      <Form>frmPrintLocation</Form>
+    </DCCReference>
+    <DCCReference Include="fProbCmt.pas">
+      <Form>frmProbCmt</Form>
+    </DCCReference>
+    <DCCReference Include="fProbEdt.pas">
+      <Form>frmdlgProb</Form>
+    </DCCReference>
+    <DCCReference Include="fProbFlt.pas">
+      <Form>frmPlVuFilt</Form>
+    </DCCReference>
+    <DCCReference Include="fProbLex.pas">
+      <Form>frmPLLex</Form>
+    </DCCReference>
+    <DCCReference Include="fProbs.pas">
+      <Form>frmProblems</Form>
+    </DCCReference>
+    <DCCReference Include="fPtCWAD.pas">
+      <Form>frmPtCWAD</Form>
+    </DCCReference>
+    <DCCReference Include="fPtDemo.pas">
+      <Form>frmPtDemo</Form>
+    </DCCReference>
+    <DCCReference Include="fPtSel.pas">
+      <Form>frmPtSel</Form>
+    </DCCReference>
+    <DCCReference Include="fPtSelDemog.pas">
+      <Form>frmPtSelDemog</Form>
+    </DCCReference>
+    <DCCReference Include="fPtSelMsg.pas">
+      <Form>frmPtSelMsg</Form>
+    </DCCReference>
+    <DCCReference Include="fPtSelOptns.pas">
+      <Form>frmPtSelOptns</Form>
+    </DCCReference>
+    <DCCReference Include="fPtSelOptSave.pas">
+      <Form>frmPtSelOptSave</Form>
+    </DCCReference>
+    <DCCReference Include="fPtSens.pas">
+      <Form>frmPtSens</Form>
+    </DCCReference>
+    <DCCReference Include="fRemCoverPreview.pas">
+      <Form>frmRemCoverPreview</Form>
+    </DCCReference>
+    <DCCReference Include="fRemCoverSheet.pas">
+      <Form>frmRemCoverSheet</Form>
+    </DCCReference>
+    <DCCReference Include="fReminderDialog.pas">
+      <Form>frmRemDlg</Form>
+    </DCCReference>
+    <DCCReference Include="fReminderTree.pas">
+      <Form>frmReminderTree</Form>
+    </DCCReference>
+    <DCCReference Include="fRemVisitInfo.pas">
+      <Form>frmRemVisitInfo</Form>
+    </DCCReference>
+    <DCCReference Include="fRename.pas">
+      <Form>frmRename</Form>
+    </DCCReference>
+    <DCCReference Include="fRenewOutMed.pas">
+      <Form>frmRenewOutMed</Form>
+    </DCCReference>
+    <DCCReference Include="fReports.pas">
+      <Form>frmReports</Form>
+    </DCCReference>
+    <DCCReference Include="fReportsAdhocComponent1.pas">
+      <Form>frmReportsAdhocComponent1</Form>
+    </DCCReference>
+    <DCCReference Include="fReportsAdhocSubItem1.pas">
+      <Form>frmReportsAdhocSubItem1</Form>
+    </DCCReference>
+    <DCCReference Include="fReportsPrint.pas">
+      <Form>frmReportPrt</Form>
+    </DCCReference>
+    <DCCReference Include="fReview.pas">
+      <Form>frmReview</Form>
+    </DCCReference>
+    <DCCReference Include="fRptBox.pas">
+      <Form>frmReportBox</Form>
+    </DCCReference>
+    <DCCReference Include="fSignItem.pas">
+      <Form>frmSignItem</Form>
+    </DCCReference>
+    <DCCReference Include="fSplash.pas">
+      <Form>frmSplash</Form>
+    </DCCReference>
+    <DCCReference Include="fSurgery.pas">
+      <Form>frmSurgery</Form>
+    </DCCReference>
+    <DCCReference Include="fSurgeryView.pas">
+      <Form>frmSurgeryView</Form>
+    </DCCReference>
+    <DCCReference Include="fTimeout.pas">
+      <Form>frmTimeout</Form>
+    </DCCReference>
+    <DCCReference Include="fTIUView.pas">
+      <Form>frmTIUView</Form>
+    </DCCReference>
+    <DCCReference Include="fVisit.pas">
+      <Form>frmVisit</Form>
+    </DCCReference>
+    <DCCReference Include="fvit.pas">
+      <Form>frmVit</Form>
+    </DCCReference>
+    <DCCReference Include="fVitals.pas">
+      <Form>frmVitals</Form>
+    </DCCReference>
+    <DCCReference Include="fxBroker.pas">
+      <Form>frmBroker</Form>
+    </DCCReference>
+    <DCCReference Include="fxLists.pas">
+      <Form>frmDbgList</Form>
+    </DCCReference>
+    <DCCReference Include="fxServer.pas">
+      <Form>frmDbgServer</Form>
+    </DCCReference>
+    <DCCReference Include="mCoPayDesc.pas">
+      <Form>fraCoPayDesc</Form>
+      <DesignClass>TFrame</DesignClass>
+    </DCCReference>
+    <DCCReference Include="mEvntDelay.pas">
+      <Form>fraEvntDelayList</Form>
+      <DesignClass>TFrame</DesignClass>
+    </DCCReference>
+    <DCCReference Include="mImgText.pas">
+      <Form>fraImgText</Form>
+      <DesignClass>TFrame</DesignClass>
+    </DCCReference>
+    <DCCReference Include="Options\fOptions.pas">
+      <Form>frmOptions</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsCombinations.pas">
+      <Form>frmOptionsCombinations</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsDays.pas">
+      <Form>frmOptionsDays</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsLists.pas">
+      <Form>frmOptionsLists</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsNewList.pas">
+      <Form>frmOptionsNewList</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsNotes.pas">
+      <Form>frmOptionsNotes</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsOther.pas">
+      <Form>frmOptionsOther</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsPatientSelection.pas">
+      <Form>frmOptionsPatientSelection</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsPrimaryList.pas">
+      <Form>frmOptionsPrimaryList</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsReminders.pas">
+      <Form>frmOptionsReminders</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsReportsCustom.pas">
+      <Form>frmOptionsReportsCustom</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsReportsDefault.pas">
+      <Form>frmOptionsReportsDefault</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsSubscribe.pas">
+      <Form>frmOptionsSubscribe</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsSurrogate.pas">
+      <Form>frmOptionsSurrogate</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsTeams.pas">
+      <Form>frmOptionsTeams</Form>
+    </DCCReference>
+    <DCCReference Include="Options\fOptionsTitles.pas">
+      <Form>frmOptionsTitles</Form>
+    </DCCReference>
+    <DCCReference Include="Options\rOptions.pas" />
+    <DCCReference Include="Options\uOptions.pas" />
+    <DCCReference Include="Orders\fIVRoutes.pas">
+      <Form>frmIVRoutes</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOCAccept.pas">
+      <Form>frmOCAccept</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOCSession.pas">
+      <Form>frmOCSession</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODActive.pas">
+      <Form>frmODActive</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODAllgy.pas">
+      <Form>frmODAllergy</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODAuto.pas" />
+    <DCCReference Include="Orders\fODBase.pas">
+      <Form>frmODBase</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODBBank.pas">
+      <Form>frmODBBank</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODChangeEvtDisp.pas">
+      <Form>frmChangeEventDisp</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODChangeUnreleasedRenew.pas">
+      <Form>frmODChangeUnreleasedRenew</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODChild.pas">
+      <Form>frmODChild</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODDiet.pas">
+      <Form>frmODDiet</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODDietLT.pas">
+      <Form>frmODDietLT</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODGen.pas">
+      <Form>frmODGen</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODLab.pas">
+      <Form>frmODLab</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODLabImmedColl.pas">
+      <Form>frmODLabImmedColl</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODLabOthCollSamp.pas">
+      <Form>frmODLabOthCollSamp</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODLabOthSpec.pas">
+      <Form>frmODLabOthSpec</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedComplex.pas">
+      <Form>frmODMedComplex</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedFA.pas">
+      <Form>frmODMedFA</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedIn.pas">
+      <Form>frmODMedIn</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedIV.pas">
+      <Form>frmODMedIV</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedNVA.pas">
+      <Form>frmODMedNVA</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedOIFA.pas">
+      <Form>frmODMedOIFA</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMedOut.pas">
+      <Form>frmODMedOut</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMeds.pas">
+      <Form>frmODMeds</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMessage.pas">
+      <Form>frmODMessage</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODMisc.pas">
+      <Form>frmODMisc</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODRad.pas">
+      <Form>frmODRad</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODRadApproval.pas">
+      <Form>frmODRadApproval</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODRadConShRes.pas">
+      <Form>frmODRadConShRes</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODRadImType.pas">
+      <Form>frmODRadImType</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODReleaseEvent.pas">
+      <Form>frmOrdersReleaseEvent</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODSaveQuick.pas">
+      <Form>frmODQuick</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODText.pas">
+      <Form>frmODText</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODValidateAction.pas">
+      <Form>frmInvalidActionList</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fODVitals.pas">
+      <Form>frmODVitals</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOMAction.pas">
+      <Form>frmOMAction</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOMHTML.pas">
+      <Form>frmOMHTML</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOMNavA.pas">
+      <Form>frmOMNavA</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOMProgress.pas">
+      <Form>frmOMProgress</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOMSet.pas">
+      <Form>frmOMSet</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOMVerify.pas">
+      <Form>frmOMVerify</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrderComment.pas">
+      <Form>frmWardComments</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrderFlag.pas">
+      <Form>frmFlagOrder</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrders.pas">
+      <Form>frmOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersAlert.pas">
+      <Form>frmAlertOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrderSaveQuick.pas">
+      <Form>frmSaveQuickOrder</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersComplete.pas">
+      <Form>frmCompleteOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersCopy.pas">
+      <Form>frmCopyOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersCV.pas">
+      <Form>frmChgEvent</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersDC.pas">
+      <Form>frmDCOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersEvntRelease.pas">
+      <Form>frmOrdersEvntRelease</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersHold.pas">
+      <Form>frmHoldOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersOnChart.pas">
+      <Form>frmOnChartOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersPrint.pas">
+      <Form>frmOrdersPrint</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersRefill.pas">
+      <Form>frmRefillOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersRelease.pas">
+      <Form>frmReleaseOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersRenew.pas">
+      <Form>frmRenewOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersSign.pas">
+      <Form>frmSignOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersTS.pas">
+      <Form>frmOrdersTS</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersUnhold.pas">
+      <Form>frmUnholdOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrdersVerify.pas">
+      <Form>frmVerifyOrders</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrderUnflag.pas">
+      <Form>frmUnflagOrder</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOrderVw.pas">
+      <Form>frmOrderView</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\fOtherSchedule.pas">
+      <Form>frmOtherSchedule</Form>
+    </DCCReference>
+    <DCCReference Include="Orders\rODAllergy.pas" />
+    <DCCReference Include="Orders\rODBase.pas" />
+    <DCCReference Include="Orders\rODDiet.pas" />
+    <DCCReference Include="Orders\rODLab.pas" />
+    <DCCReference Include="Orders\rODMeds.pas" />
+    <DCCReference Include="Orders\rODRad.pas" />
+    <DCCReference Include="Orders\rOrders.pas" />
+    <DCCReference Include="Orders\uODBase.pas" />
+    <DCCReference Include="Orders\uOrders.pas" />
+    <DCCReference Include="rCore.pas" />
+    <DCCReference Include="rCover.pas" />
+    <DCCReference Include="rDCSumm.pas" />
+    <DCCReference Include="rECS.pas" />
+    <DCCReference Include="rEventHooks.pas" />
+    <DCCReference Include="rGraphs.pas" />
+    <DCCReference Include="rLabs.pas" />
+    <DCCReference Include="rMeds.pas" />
+    <DCCReference Include="rMisc.pas" />
+    <DCCReference Include="rProbs.pas" />
+    <DCCReference Include="rReminders.pas" />
+    <DCCReference Include="rReports.pas" />
+    <DCCReference Include="rSurgery.pas" />
+    <DCCReference Include="rTIU.pas" />
+    <DCCReference Include="Templates\fFindingTemplates.pas">
+      <Form>frmFindingTemplates</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateAutoGen.pas">
+      <Form>frmTemplateAutoGen</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateDialog.pas">
+      <Form>frmTemplateDialog</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateEditor.pas">
+      <Form>frmTemplateEditor</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateFieldEditor.pas">
+      <Form>frmTemplateFieldEditor</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateFields.pas">
+      <Form>frmTemplateFields</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateImport.pas">
+      <Form>frmTemplateImport</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateObjects.pas">
+      <Form>frmTemplateObjects</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\fTemplateView.pas">
+      <Form>frmTemplateView</Form>
+    </DCCReference>
+    <DCCReference Include="Templates\mTemplateFieldButton.pas">
+      <Form>fraTemplateFieldButton</Form>
+      <DesignClass>TFrame</DesignClass>
+    </DCCReference>
+    <DCCReference Include="Templates\rTemplates.pas" />
+    <DCCReference Include="Templates\uTemplateFields.pas" />
+    <DCCReference Include="Templates\uTemplates.pas" />
+    <DCCReference Include="uCaseTree.pas" />
+    <DCCReference Include="uConst.pas" />
+    <DCCReference Include="uCore.pas" />
+    <DCCReference Include="uDCSumm.pas" />
+    <DCCReference Include="uDlgComponents.pas" />
+    <DCCReference Include="uDocTree.pas" />
+    <DCCReference Include="uEventHooks.pas" />
+    <DCCReference Include="uFormMonitor.pas" />
+    <DCCReference Include="uGraphs.pas" />
+    <DCCReference Include="uInit.pas" />
+    <DCCReference Include="uOrPtf.pas" />
+    <DCCReference Include="uProbs.pas" />
+    <DCCReference Include="uReminders.pas" />
+    <DCCReference Include="uReports.pas" />
+    <DCCReference Include="uSignItems.pas" />
+    <DCCReference Include="uSpell.pas" />
+    <DCCReference Include="uSurgery.pas" />
+    <DCCReference Include="uTIU.pas" />
+    <DCCReference Include="uVA508CPRSCompatibility.pas" />
+    <DCCReference Include="VERGENCECONTEXTORLib_TLB.pas" />
+    <DCCReference Include="Vitals\fVitalsDate.pas">
+      <Form>frmVitalsDate</Form>
+    </DCCReference>
+    <DCCReference Include="Vitals\rVitals.pas" />
+    <DCCReference Include="Vitals\uVitals.pas" />
+    <DCCReference Include="XuDigSigSC_TLB.pas" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
+</Project>
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dproj.local
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dproj.local	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dproj.local	(revision 1676)
@@ -0,0 +1,2 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject/>
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.drc	(revision 1676)
@@ -0,0 +1,792 @@
+/* VER180
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+#define VDBConsts_SPostEdit 65136
+#define VDBConsts_SCancelEdit 65137
+#define VDBConsts_SRefreshRecord 65138
+#define VDBConsts_SRemoteLogin 65139
+#define fPtSel_StrFPtSel_lstvAlerts_Co 65140
+#define OleConst_SCannotActivate 65152
+#define OleConst_SNoWindowHandle 65153
+#define OleConst_SInvalidLicense 65154
+#define OleConst_SNotLicensed 65155
+#define OleConst_sNoRunningObject 65156
+#define DBConsts_SBcdOverflow 65157
+#define DBConsts_SInvalidBcdValue 65158
+#define DBConsts_SCouldNotParseTimeStamp 65159
+#define DBConsts_SInvalidSqlTimeStamp 65160
+#define VDBConsts_SFirstRecord 65161
+#define VDBConsts_SPriorRecord 65162
+#define VDBConsts_SNextRecord 65163
+#define VDBConsts_SLastRecord 65164
+#define VDBConsts_SInsertRecord 65165
+#define VDBConsts_SDeleteRecord 65166
+#define VDBConsts_SEditRecord 65167
+#define TeeConst_TeeMsg_PieOther 65168
+#define TeeConst_TeeMsg_ValuesX 65169
+#define TeeConst_TeeMsg_ValuesY 65170
+#define TeeConst_TeeMsg_ValuesPie 65171
+#define TeeConst_TeeMsg_ValuesBar 65172
+#define TeeConst_TeeMsg_ValuesAngle 65173
+#define TeeConst_TeeMsg_ValuesGanttStart 65174
+#define TeeConst_TeeMsg_ValuesGanttEnd 65175
+#define TeeConst_TeeMsg_ValuesGanttNextTask 65176
+#define TeeConst_TeeMsg_ValuesArrowEndX 65177
+#define TeeConst_TeeMsg_ValuesArrowEndY 65178
+#define ComConst_SOleError 65179
+#define ComConst_SNoMethod 65180
+#define ComConst_SVarNotObject 65181
+#define ComConst_STooManyParams 65182
+#define ComConst_SDCOMNotInstalled 65183
+#define TeeConst_TeeMsg_GanttSample6 65184
+#define TeeConst_TeeMsg_GanttSample7 65185
+#define TeeConst_TeeMsg_GanttSample8 65186
+#define TeeConst_TeeMsg_GanttSample9 65187
+#define TeeConst_TeeMsg_GanttSample10 65188
+#define TeeConst_TeeMsg_DefaultFontSize 65189
+#define TeeConst_TeeMsg_FunctionAdd 65190
+#define TeeConst_TeeMsg_FunctionSubtract 65191
+#define TeeConst_TeeMsg_FunctionMultiply 65192
+#define TeeConst_TeeMsg_FunctionDivide 65193
+#define TeeConst_TeeMsg_FunctionHigh 65194
+#define TeeConst_TeeMsg_FunctionLow 65195
+#define TeeConst_TeeMsg_FunctionAverage 65196
+#define TeeConst_TeeMsg_DefaultFontName 65197
+#define TeeConst_TeeMsg_CheckPointerSize 65198
+#define TeeConst_TeeMsg_FunctionPeriod 65199
+#define TeeConst_TeeMsg_PieSample2 65200
+#define TeeConst_TeeMsg_PieSample3 65201
+#define TeeConst_TeeMsg_PieSample4 65202
+#define TeeConst_TeeMsg_PieSample5 65203
+#define TeeConst_TeeMsg_PieSample6 65204
+#define TeeConst_TeeMsg_PieSample7 65205
+#define TeeConst_TeeMsg_PieSample8 65206
+#define TeeConst_TeeMsg_GalleryStandard 65207
+#define TeeConst_TeeMsg_GalleryFunctions 65208
+#define TeeConst_TeeMsg_GalleryArrow 65209
+#define TeeConst_TeeMsg_GalleryGantt 65210
+#define TeeConst_TeeMsg_GanttSample1 65211
+#define TeeConst_TeeMsg_GanttSample2 65212
+#define TeeConst_TeeMsg_GanttSample3 65213
+#define TeeConst_TeeMsg_GanttSample4 65214
+#define TeeConst_TeeMsg_GanttSample5 65215
+#define TeeConst_TeeMsg_BarWidthPercent 65216
+#define TeeConst_TeeMsg_BarOffsetPercent 65217
+#define TeeConst_TeeMsg_DefaultPercentOf 65218
+#define TeeConst_TeeMsg_DefPercentFormat 65219
+#define TeeConst_TeeMsg_DefValueFormat 65220
+#define TeeConst_TeeMsg_AxisTitle 65221
+#define TeeConst_TeeMsg_AxisLabels 65222
+#define TeeConst_TeeMsg_GalleryLine 65223
+#define TeeConst_TeeMsg_GalleryPoint 65224
+#define TeeConst_TeeMsg_GalleryArea 65225
+#define TeeConst_TeeMsg_GalleryBar 65226
+#define TeeConst_TeeMsg_GalleryHorizBar 65227
+#define TeeConst_TeeMsg_GalleryPie 65228
+#define TeeConst_TeeMsg_GalleryFastLine 65229
+#define TeeConst_TeeMsg_Rotation 65230
+#define TeeConst_TeeMsg_PieSample1 65231
+#define TeeConst_TeeMsg_LegendFirstValue 65232
+#define TeeConst_TeeMsg_LegendColorWidth 65233
+#define TeeConst_TeeMsg_SeriesSetDataSource 65234
+#define TeeConst_TeeMsg_SeriesInvDataSource 65235
+#define TeeConst_TeeMsg_FillSample 65236
+#define TeeConst_TeeMsg_Angle 65237
+#define TeeConst_TeeMsg_AxisLogDateTime 65238
+#define TeeConst_TeeMsg_AxisLogNotPositive 65239
+#define TeeConst_TeeMsg_AxisLabelSep 65240
+#define TeeConst_TeeMsg_AxisIncrementNeg 65241
+#define TeeConst_TeeMsg_AxisMinMax 65242
+#define TeeConst_TeeMsg_AxisMaxMin 65243
+#define TeeConst_TeeMsg_AxisLogBase 65244
+#define TeeConst_TeeMsg_MaxPointsPerPage 65245
+#define TeeConst_TeeMsg_3dPercent 65246
+#define TeeConst_TeeMsg_CircularSeries 65247
+#define ComStrs_sInvalidIndex 65248
+#define ComStrs_sInsertError 65249
+#define ComStrs_sInvalidOwner 65250
+#define ComStrs_sRichEditInsertError 65251
+#define ComStrs_sRichEditLoadFail 65252
+#define ComStrs_sRichEditSaveFail 65253
+#define ComStrs_sUDAssociated 65254
+#define ComStrs_sPageIndexError 65255
+#define ComStrs_sInvalidComCtl32 65256
+#define ComStrs_sDateTimeMax 65257
+#define ComStrs_sDateTimeMin 65258
+#define ComStrs_sFailSetCalDateTime 65259
+#define ComStrs_sFailSetCalMaxSelRange 65260
+#define ComStrs_sFailSetCalMinMaxRange 65261
+#define ComStrs_sFailsetCalSelRange 65262
+#define TeeConst_TeeMsg_LegendTopPos 65263
+#define Consts_SListBoxMustBeVirtual 65264
+#define Consts_SNoGetItemEventHandler 65265
+#define Consts_SANSIEncoding 65266
+#define Consts_SASCIIEncoding 65267
+#define Consts_SUnicodeEncoding 65268
+#define Consts_SBigEndianEncoding 65269
+#define Consts_SUTF8Encoding 65270
+#define Consts_SUTF7Encoding 65271
+#define Consts_SPageControlNotSet 65272
+#define ComStrs_sTabFailClear 65273
+#define ComStrs_sTabFailDelete 65274
+#define ComStrs_sTabFailRetrieve 65275
+#define ComStrs_sTabFailGetObject 65276
+#define ComStrs_sTabFailSet 65277
+#define ComStrs_sTabFailSetObject 65278
+#define ComStrs_sTabMustBeMultiLine 65279
+#define Consts_SInvalidClipFmt 65280
+#define Consts_SIconToClipboard 65281
+#define Consts_SCannotOpenClipboard 65282
+#define Consts_SInvalidMemoSize 65283
+#define Consts_SInvalidPrinterOp 65284
+#define Consts_SNoDefaultPrinter 65285
+#define Consts_SDuplicateMenus 65286
+#define Consts_SCannotOpenAVI 65287
+#define Consts_SDockedCtlNeedsName 65288
+#define Consts_SDockTreeRemoveError 65289
+#define Consts_SDockZoneNotFound 65290
+#define Consts_SDockZoneHasNoCtl 65291
+#define Consts_SDockZoneVersionConflict 65292
+#define Consts_SMultiSelectRequired 65293
+#define Consts_SSeparator 65294
+#define Consts_SErrorSettingCount 65295
+#define Consts_SmkcSpace 65296
+#define Consts_SmkcPgUp 65297
+#define Consts_SmkcPgDn 65298
+#define Consts_SmkcEnd 65299
+#define Consts_SmkcHome 65300
+#define Consts_SmkcLeft 65301
+#define Consts_SmkcUp 65302
+#define Consts_SmkcRight 65303
+#define Consts_SmkcDown 65304
+#define Consts_SmkcIns 65305
+#define Consts_SmkcDel 65306
+#define Consts_SmkcShift 65307
+#define Consts_SmkcCtrl 65308
+#define Consts_SmkcAlt 65309
+#define Consts_SOutOfRange 65310
+#define Consts_SInsertLineError 65311
+#define Consts_SMsgDlgConfirm 65312
+#define Consts_SMsgDlgYes 65313
+#define Consts_SMsgDlgNo 65314
+#define Consts_SMsgDlgOK 65315
+#define Consts_SMsgDlgCancel 65316
+#define Consts_SMsgDlgHelp 65317
+#define Consts_SMsgDlgAbort 65318
+#define Consts_SMsgDlgRetry 65319
+#define Consts_SMsgDlgIgnore 65320
+#define Consts_SMsgDlgAll 65321
+#define Consts_SMsgDlgNoToAll 65322
+#define Consts_SMsgDlgYesToAll 65323
+#define Consts_SmkcBkSp 65324
+#define Consts_SmkcTab 65325
+#define Consts_SmkcEsc 65326
+#define Consts_SmkcEnter 65327
+#define Consts_SHelpButton 65328
+#define Consts_SCloseButton 65329
+#define Consts_SIgnoreButton 65330
+#define Consts_SRetryButton 65331
+#define Consts_SAbortButton 65332
+#define Consts_SAllButton 65333
+#define Consts_SCannotDragForm 65334
+#define Consts_SVMetafiles 65335
+#define Consts_SVEnhMetafiles 65336
+#define Consts_SVIcons 65337
+#define Consts_SVBitmaps 65338
+#define Consts_SMaskErr 65339
+#define Consts_SMaskEditErr 65340
+#define Consts_SMsgDlgWarning 65341
+#define Consts_SMsgDlgError 65342
+#define Consts_SMsgDlgInformation 65343
+#define Consts_SPropertyOutOfRange 65344
+#define Consts_SMenuIndexError 65345
+#define Consts_SMenuReinserted 65346
+#define Consts_SMenuNotFound 65347
+#define Consts_SNoTimers 65348
+#define Consts_SNotPrinting 65349
+#define Consts_SPrinting 65350
+#define Consts_SInvalidPrinter 65351
+#define Consts_SDeviceOnPort 65352
+#define Consts_SGroupIndexTooLow 65353
+#define Consts_SNoMDIForm 65354
+#define Consts_SControlParentSetToSelf 65355
+#define Consts_SOKButton 65356
+#define Consts_SCancelButton 65357
+#define Consts_SYesButton 65358
+#define Consts_SNoButton 65359
+#define Consts_SNoCanvasHandle 65360
+#define Consts_SInvalidImageSize 65361
+#define Consts_SInvalidImageList 65362
+#define Consts_SReplaceImage 65363
+#define Consts_SImageIndexError 65364
+#define Consts_SImageReadFail 65365
+#define Consts_SImageWriteFail 65366
+#define Consts_SWindowDCError 65367
+#define Consts_SWindowClass 65368
+#define Consts_SCannotFocus 65369
+#define Consts_SParentRequired 65370
+#define Consts_SParentGivenNotAParent 65371
+#define Consts_SMDIChildNotVisible 65372
+#define Consts_SVisibleChanged 65373
+#define Consts_SCannotShowModal 65374
+#define Consts_SScrollBarRange 65375
+#define RTLConsts_SThreadCreateError 65376
+#define RTLConsts_SThreadError 65377
+#define HelpIntfs_hNoTableOfContents 65378
+#define HelpIntfs_hNothingFound 65379
+#define HelpIntfs_hNoContext 65380
+#define HelpIntfs_hNoContextFound 65381
+#define HelpIntfs_hNoTopics 65382
+#define Consts_SInvalidTabPosition 65383
+#define Consts_SInvalidTabStyle 65384
+#define Consts_SInvalidBitmap 65385
+#define Consts_SInvalidIcon 65386
+#define Consts_SInvalidMetafile 65387
+#define Consts_SChangeIconSize 65388
+#define Consts_SOleGraphic 65389
+#define Consts_SUnknownClipboardFormat 65390
+#define Consts_SOutOfResources 65391
+#define RTLConsts_SListCapacityError 65392
+#define RTLConsts_SListCountError 65393
+#define RTLConsts_SListIndexError 65394
+#define RTLConsts_SMemoryStreamError 65395
+#define RTLConsts_SPropertyException 65396
+#define RTLConsts_SReadError 65397
+#define RTLConsts_SReadOnlyProperty 65398
+#define RTLConsts_SRegGetDataFailed 65399
+#define RTLConsts_SRegSetDataFailed 65400
+#define RTLConsts_SResNotFound 65401
+#define RTLConsts_SSeekNotImplemented 65402
+#define RTLConsts_SSortedListError 65403
+#define RTLConsts_STooManyDeleted 65404
+#define RTLConsts_SUnknownGroup 65405
+#define RTLConsts_SUnknownProperty 65406
+#define RTLConsts_SWriteError 65407
+#define RTLConsts_SDuplicateString 65408
+#define RTLConsts_SFCreateErrorEx 65409
+#define RTLConsts_SFixedColTooBig 65410
+#define RTLConsts_SFixedRowTooBig 65411
+#define RTLConsts_SFOpenErrorEx 65412
+#define RTLConsts_SGridTooLarge 65413
+#define RTLConsts_SIndexOutOfRange 65414
+#define RTLConsts_SInvalidImage 65415
+#define RTLConsts_SInvalidName 65416
+#define RTLConsts_SInvalidProperty 65417
+#define RTLConsts_SInvalidPropertyElement 65418
+#define RTLConsts_SInvalidPropertyPath 65419
+#define RTLConsts_SInvalidPropertyType 65420
+#define RTLConsts_SInvalidPropertyValue 65421
+#define RTLConsts_SInvalidRegType 65422
+#define RTLConsts_SInvalidStringGridOp 65423
+#define SysConst_SLongDayNameSun 65424
+#define SysConst_SLongDayNameMon 65425
+#define SysConst_SLongDayNameTue 65426
+#define SysConst_SLongDayNameWed 65427
+#define SysConst_SLongDayNameThu 65428
+#define SysConst_SLongDayNameFri 65429
+#define SysConst_SLongDayNameSat 65430
+#define RTLConsts_SAncestorNotFound 65431
+#define RTLConsts_SAssignError 65432
+#define RTLConsts_SBitsIndexError 65433
+#define RTLConsts_SCantWriteResourceStreamError 65434
+#define RTLConsts_SCheckSynchronizeError 65435
+#define RTLConsts_SClassNotFound 65436
+#define RTLConsts_SDuplicateClass 65437
+#define RTLConsts_SDuplicateItem 65438
+#define RTLConsts_SDuplicateName 65439
+#define SysConst_SLongMonthNameApr 65440
+#define SysConst_SLongMonthNameMay 65441
+#define SysConst_SLongMonthNameJun 65442
+#define SysConst_SLongMonthNameJul 65443
+#define SysConst_SLongMonthNameAug 65444
+#define SysConst_SLongMonthNameSep 65445
+#define SysConst_SLongMonthNameOct 65446
+#define SysConst_SLongMonthNameNov 65447
+#define SysConst_SLongMonthNameDec 65448
+#define SysConst_SShortDayNameSun 65449
+#define SysConst_SShortDayNameMon 65450
+#define SysConst_SShortDayNameTue 65451
+#define SysConst_SShortDayNameWed 65452
+#define SysConst_SShortDayNameThu 65453
+#define SysConst_SShortDayNameFri 65454
+#define SysConst_SShortDayNameSat 65455
+#define SysConst_SUnkOSError 65456
+#define SysConst_SShortMonthNameJan 65457
+#define SysConst_SShortMonthNameFeb 65458
+#define SysConst_SShortMonthNameMar 65459
+#define SysConst_SShortMonthNameApr 65460
+#define SysConst_SShortMonthNameMay 65461
+#define SysConst_SShortMonthNameJun 65462
+#define SysConst_SShortMonthNameJul 65463
+#define SysConst_SShortMonthNameAug 65464
+#define SysConst_SShortMonthNameSep 65465
+#define SysConst_SShortMonthNameOct 65466
+#define SysConst_SShortMonthNameNov 65467
+#define SysConst_SShortMonthNameDec 65468
+#define SysConst_SLongMonthNameJan 65469
+#define SysConst_SLongMonthNameFeb 65470
+#define SysConst_SLongMonthNameMar 65471
+#define SysConst_SVarTypeTooManyCustom 65472
+#define SysConst_SVarTypeCouldNotConvert 65473
+#define SysConst_SVarTypeConvertOverflow 65474
+#define SysConst_SVarOverflow 65475
+#define SysConst_SVarInvalid 65476
+#define SysConst_SVarBadType 65477
+#define SysConst_SVarNotImplemented 65478
+#define SysConst_SVarUnexpected 65479
+#define SysConst_SExternalException 65480
+#define SysConst_SAssertionFailed 65481
+#define SysConst_SIntfCastError 65482
+#define SysConst_SSafecallException 65483
+#define SysConst_SAssertError 65484
+#define SysConst_SAbstractError 65485
+#define SysConst_SModuleAccessViolation 65486
+#define SysConst_SOSError 65487
+#define SysConst_SInvalidFormat 65488
+#define SysConst_SArgumentMissing 65489
+#define SysConst_SDispatchError 65490
+#define SysConst_SReadAccess 65491
+#define SysConst_SWriteAccess 65492
+#define SysConst_SFormatTooLong 65493
+#define SysConst_SVarArrayCreate 65494
+#define SysConst_SVarArrayBounds 65495
+#define SysConst_SVarArrayLocked 65496
+#define SysConst_SInvalidVarCast 65497
+#define SysConst_SInvalidVarOp 65498
+#define SysConst_SInvalidVarNullOp 65499
+#define SysConst_SInvalidVarOpWithHResultWithPrefix 65500
+#define SysConst_SVarTypeOutOfRangeWithPrefix 65501
+#define SysConst_SVarTypeAlreadyUsedWithPrefix 65502
+#define SysConst_SVarTypeNotUsableWithPrefix 65503
+#define SysConst_SRangeError 65504
+#define SysConst_SIntOverflow 65505
+#define SysConst_SInvalidOp 65506
+#define SysConst_SZeroDivide 65507
+#define SysConst_SOverflow 65508
+#define SysConst_SUnderflow 65509
+#define SysConst_SInvalidPointer 65510
+#define SysConst_SInvalidCast 65511
+#define SysConst_SAccessViolationArg3 65512
+#define SysConst_SAccessViolationNoArg 65513
+#define SysConst_SStackOverflow 65514
+#define SysConst_SControlC 65515
+#define SysConst_SPrivilege 65516
+#define SysConst_SOperationAborted 65517
+#define SysConst_SException 65518
+#define SysConst_SExceptTitle 65519
+#define SysConst_SInvalidInteger 65520
+#define SysConst_SInvalidFloat 65521
+#define SysConst_SInvalidTime 65522
+#define SysConst_SInvalidDateTime 65523
+#define SysConst_STimeEncodeError 65524
+#define SysConst_SDateEncodeError 65525
+#define SysConst_SOutOfMemory 65526
+#define SysConst_SInOutError 65527
+#define SysConst_SFileNotFound 65528
+#define SysConst_SInvalidFilename 65529
+#define SysConst_STooManyOpenFiles 65530
+#define SysConst_SAccessDenied 65531
+#define SysConst_SEndOfFile 65532
+#define SysConst_SDiskFull 65533
+#define SysConst_SInvalidInput 65534
+#define SysConst_SDivByZero 65535
+STRINGTABLE
+BEGIN
+	VDBConsts_SPostEdit,	"Post edit"
+	VDBConsts_SCancelEdit,	"Cancel edit"
+	VDBConsts_SRefreshRecord,	"Refresh data"
+	VDBConsts_SRemoteLogin,	"Remote Login"
+	fPtSel_StrFPtSel_lstvAlerts_Co,	"C^fPtSel.lstvAlerts.Cols"
+	OleConst_SCannotActivate,	"OLE control activation failed"
+	OleConst_SNoWindowHandle,	"Could not obtain OLE control window handle"
+	OleConst_SInvalidLicense,	"License information for %s is invalid"
+	OleConst_SNotLicensed,	"License information for %s not found. You cannot use this control in design mode"
+	OleConst_sNoRunningObject,	"Unable to retrieve a pointer to a running object registered with OLE for %s/%s"
+	DBConsts_SBcdOverflow,	"BCD overflow"
+	DBConsts_SInvalidBcdValue,	"%s is not a valid BCD value"
+	DBConsts_SCouldNotParseTimeStamp,	"Could not parse SQL TimeStamp string"
+	DBConsts_SInvalidSqlTimeStamp,	"Invalid SQL date/time values"
+	VDBConsts_SFirstRecord,	"First record"
+	VDBConsts_SPriorRecord,	"Prior record"
+	VDBConsts_SNextRecord,	"Next record"
+	VDBConsts_SLastRecord,	"Last record"
+	VDBConsts_SInsertRecord,	"Insert record"
+	VDBConsts_SDeleteRecord,	"Delete record"
+	VDBConsts_SEditRecord,	"Edit record"
+	TeeConst_TeeMsg_PieOther,	"Other"
+	TeeConst_TeeMsg_ValuesX,	"X"
+	TeeConst_TeeMsg_ValuesY,	"Y"
+	TeeConst_TeeMsg_ValuesPie,	"Pie"
+	TeeConst_TeeMsg_ValuesBar,	"Bar"
+	TeeConst_TeeMsg_ValuesAngle,	"Angle"
+	TeeConst_TeeMsg_ValuesGanttStart,	"Start"
+	TeeConst_TeeMsg_ValuesGanttEnd,	"End"
+	TeeConst_TeeMsg_ValuesGanttNextTask,	"NextTask"
+	TeeConst_TeeMsg_ValuesArrowEndX,	"EndX"
+	TeeConst_TeeMsg_ValuesArrowEndY,	"EndY"
+	ComConst_SOleError,	"OLE error %.8x"
+	ComConst_SNoMethod,	"Method '%s' not supported by automation object"
+	ComConst_SVarNotObject,	"Variant does not reference an automation object"
+	ComConst_STooManyParams,	"Dispatch methods do not support more than 64 parameters"
+	ComConst_SDCOMNotInstalled,	"DCOM not installed"
+	TeeConst_TeeMsg_GanttSample6,	"Testing"
+	TeeConst_TeeMsg_GanttSample7,	"Manufac."
+	TeeConst_TeeMsg_GanttSample8,	"Debugging"
+	TeeConst_TeeMsg_GanttSample9,	"New Version"
+	TeeConst_TeeMsg_GanttSample10,	"Banking"
+	TeeConst_TeeMsg_DefaultFontSize,	"8"
+	TeeConst_TeeMsg_FunctionAdd,	"Add"
+	TeeConst_TeeMsg_FunctionSubtract,	"Subtract"
+	TeeConst_TeeMsg_FunctionMultiply,	"Multiply"
+	TeeConst_TeeMsg_FunctionDivide,	"Divide"
+	TeeConst_TeeMsg_FunctionHigh,	"High"
+	TeeConst_TeeMsg_FunctionLow,	"Low"
+	TeeConst_TeeMsg_FunctionAverage,	"Average"
+	TeeConst_TeeMsg_DefaultFontName,	"Arial"
+	TeeConst_TeeMsg_CheckPointerSize,	"Pointer size must be greater than zero"
+	TeeConst_TeeMsg_FunctionPeriod,	"Function Period should be >= 0"
+	TeeConst_TeeMsg_PieSample2,	"Phones"
+	TeeConst_TeeMsg_PieSample3,	"Tables"
+	TeeConst_TeeMsg_PieSample4,	"Monitors"
+	TeeConst_TeeMsg_PieSample5,	"Lamps"
+	TeeConst_TeeMsg_PieSample6,	"Keyboards"
+	TeeConst_TeeMsg_PieSample7,	"Bikes"
+	TeeConst_TeeMsg_PieSample8,	"Chairs"
+	TeeConst_TeeMsg_GalleryStandard,	"Standard"
+	TeeConst_TeeMsg_GalleryFunctions,	"Functions"
+	TeeConst_TeeMsg_GalleryArrow,	"Arrow"
+	TeeConst_TeeMsg_GalleryGantt,	"Gantt"
+	TeeConst_TeeMsg_GanttSample1,	"Design"
+	TeeConst_TeeMsg_GanttSample2,	"Prototyping"
+	TeeConst_TeeMsg_GanttSample3,	"Development"
+	TeeConst_TeeMsg_GanttSample4,	"Sales"
+	TeeConst_TeeMsg_GanttSample5,	"Marketing"
+	TeeConst_TeeMsg_BarWidthPercent,	"Bar Width Percent must be between 1 and 100"
+	TeeConst_TeeMsg_BarOffsetPercent,	"Bar Offset Percent must be between -100% and 100%"
+	TeeConst_TeeMsg_DefaultPercentOf,	"%s of %s"
+	TeeConst_TeeMsg_DefPercentFormat,	"##0.## %"
+	TeeConst_TeeMsg_DefValueFormat,	"#,##0.###"
+	TeeConst_TeeMsg_AxisTitle,	"Axis Title"
+	TeeConst_TeeMsg_AxisLabels,	"Axis Labels"
+	TeeConst_TeeMsg_GalleryLine,	"Line"
+	TeeConst_TeeMsg_GalleryPoint,	"Point"
+	TeeConst_TeeMsg_GalleryArea,	"Area"
+	TeeConst_TeeMsg_GalleryBar,	"Bar"
+	TeeConst_TeeMsg_GalleryHorizBar,	"Horiz. Bar"
+	TeeConst_TeeMsg_GalleryPie,	"Pie"
+	TeeConst_TeeMsg_GalleryFastLine,	"Fast Line"
+	TeeConst_TeeMsg_Rotation,	"Rotation"
+	TeeConst_TeeMsg_PieSample1,	"Cars"
+	TeeConst_TeeMsg_LegendFirstValue,	"First Legend Value must be > 0"
+	TeeConst_TeeMsg_LegendColorWidth,	"Legend Color Width must be between 0 and 100 %"
+	TeeConst_TeeMsg_SeriesSetDataSource,	"No ParentChart to validate DataSource"
+	TeeConst_TeeMsg_SeriesInvDataSource,	"No valid DataSource: %s"
+	TeeConst_TeeMsg_FillSample,	"FillSampleValues NumValues must be > 0"
+	TeeConst_TeeMsg_Angle,	"%s Angle must be between 0 and 359 degrees"
+	TeeConst_TeeMsg_AxisLogDateTime,	"DateTime Axis cannot be Logarithmic"
+	TeeConst_TeeMsg_AxisLogNotPositive,	"Logarithmic Axis Min and Max values should be >= 0"
+	TeeConst_TeeMsg_AxisLabelSep,	"Labels Separation % must be greater than 0"
+	TeeConst_TeeMsg_AxisIncrementNeg,	"Axis increment must be >= 0"
+	TeeConst_TeeMsg_AxisMinMax,	"Axis Minimum Value must be <= Maximum"
+	TeeConst_TeeMsg_AxisMaxMin,	"Axis Maximum Value must be >= Minimum"
+	TeeConst_TeeMsg_AxisLogBase,	"Axis Logarithmic Base should be >= 2"
+	TeeConst_TeeMsg_MaxPointsPerPage,	"MaxPointsPerPage must be >= 0"
+	TeeConst_TeeMsg_3dPercent,	"3D effect percent must be between %d and %d"
+	TeeConst_TeeMsg_CircularSeries,	"Circular Series dependences are not allowed"
+	ComStrs_sInvalidIndex,	"Invalid index"
+	ComStrs_sInsertError,	"Unable to insert an item"
+	ComStrs_sInvalidOwner,	"Invalid owner"
+	ComStrs_sRichEditInsertError,	"RichEdit line insertion error"
+	ComStrs_sRichEditLoadFail,	"Failed to Load Stream"
+	ComStrs_sRichEditSaveFail,	"Failed to Save Stream"
+	ComStrs_sUDAssociated,	"%s is already associated with %s"
+	ComStrs_sPageIndexError,	"%d is an invalid PageIndex value.  PageIndex must be between 0 and %d"
+	ComStrs_sInvalidComCtl32,	"This control requires version 4.70 or greater of COMCTL32.DLL"
+	ComStrs_sDateTimeMax,	"Date exceeds maximum of %s"
+	ComStrs_sDateTimeMin,	"Date is less than minimum of %s"
+	ComStrs_sFailSetCalDateTime,	"Failed to set calendar date or time"
+	ComStrs_sFailSetCalMaxSelRange,	"Failed to set maximum selection range"
+	ComStrs_sFailSetCalMinMaxRange,	"Failed to set calendar min/max range"
+	ComStrs_sFailsetCalSelRange,	"Failed to set calendar selected range"
+	TeeConst_TeeMsg_LegendTopPos,	"Top Legend Position must be between 0 and 100 %"
+	Consts_SListBoxMustBeVirtual,	"Listbox (%s) style must be virtual in order to set Count"
+	Consts_SNoGetItemEventHandler,	"No OnGetItem event handler assigned"
+	Consts_SANSIEncoding,	"ANSI"
+	Consts_SASCIIEncoding,	"ASCII"
+	Consts_SUnicodeEncoding,	"Unicode"
+	Consts_SBigEndianEncoding,	"Big Endian Unicode"
+	Consts_SUTF8Encoding,	"UTF-8"
+	Consts_SUTF7Encoding,	"UTF-7"
+	Consts_SPageControlNotSet,	"PageControl must first be assigned"
+	ComStrs_sTabFailClear,	"Failed to clear tab control"
+	ComStrs_sTabFailDelete,	"Failed to delete tab at index %d"
+	ComStrs_sTabFailRetrieve,	"Failed to retrieve tab at index %d"
+	ComStrs_sTabFailGetObject,	"Failed to get object at index %d"
+	ComStrs_sTabFailSet,	"Failed to set tab \"%s\" at index %d"
+	ComStrs_sTabFailSetObject,	"Failed to set object at index %d"
+	ComStrs_sTabMustBeMultiLine,	"MultiLine must be True when TabPosition is tpLeft or tpRight"
+	Consts_SInvalidClipFmt,	"Invalid clipboard format"
+	Consts_SIconToClipboard,	"Clipboard does not support Icons"
+	Consts_SCannotOpenClipboard,	"Cannot open clipboard"
+	Consts_SInvalidMemoSize,	"Text exceeds memo capacity"
+	Consts_SInvalidPrinterOp,	"Operation not supported on selected printer"
+	Consts_SNoDefaultPrinter,	"There is no default printer currently selected"
+	Consts_SDuplicateMenus,	"Menu '%s' is already being used by another form"
+	Consts_SCannotOpenAVI,	"Cannot open AVI"
+	Consts_SDockedCtlNeedsName,	"Docked control must have a name"
+	Consts_SDockTreeRemoveError,	"Error removing control from dock tree"
+	Consts_SDockZoneNotFound,	" - Dock zone not found"
+	Consts_SDockZoneHasNoCtl,	" - Dock zone has no control"
+	Consts_SDockZoneVersionConflict,	"Error loading dock zone from the stream. Expecting version %d, but found %d."
+	Consts_SMultiSelectRequired,	"Multiselect mode must be on for this feature"
+	Consts_SSeparator,	"Separator"
+	Consts_SErrorSettingCount,	"Error setting %s.Count"
+	Consts_SmkcSpace,	"Space"
+	Consts_SmkcPgUp,	"PgUp"
+	Consts_SmkcPgDn,	"PgDn"
+	Consts_SmkcEnd,	"End"
+	Consts_SmkcHome,	"Home"
+	Consts_SmkcLeft,	"Left"
+	Consts_SmkcUp,	"Up"
+	Consts_SmkcRight,	"Right"
+	Consts_SmkcDown,	"Down"
+	Consts_SmkcIns,	"Ins"
+	Consts_SmkcDel,	"Del"
+	Consts_SmkcShift,	"Shift+"
+	Consts_SmkcCtrl,	"Ctrl+"
+	Consts_SmkcAlt,	"Alt+"
+	Consts_SOutOfRange,	"Value must be between %d and %d"
+	Consts_SInsertLineError,	"Unable to insert a line"
+	Consts_SMsgDlgConfirm,	"Confirm"
+	Consts_SMsgDlgYes,	"&Yes"
+	Consts_SMsgDlgNo,	"&No"
+	Consts_SMsgDlgOK,	"OK"
+	Consts_SMsgDlgCancel,	"Cancel"
+	Consts_SMsgDlgHelp,	"&Help"
+	Consts_SMsgDlgAbort,	"&Abort"
+	Consts_SMsgDlgRetry,	"&Retry"
+	Consts_SMsgDlgIgnore,	"&Ignore"
+	Consts_SMsgDlgAll,	"&All"
+	Consts_SMsgDlgNoToAll,	"N&o to All"
+	Consts_SMsgDlgYesToAll,	"Yes to &All"
+	Consts_SmkcBkSp,	"BkSp"
+	Consts_SmkcTab,	"Tab"
+	Consts_SmkcEsc,	"Esc"
+	Consts_SmkcEnter,	"Enter"
+	Consts_SHelpButton,	"&Help"
+	Consts_SCloseButton,	"&Close"
+	Consts_SIgnoreButton,	"&Ignore"
+	Consts_SRetryButton,	"&Retry"
+	Consts_SAbortButton,	"Abort"
+	Consts_SAllButton,	"&All"
+	Consts_SCannotDragForm,	"Cannot drag a form"
+	Consts_SVMetafiles,	"Metafiles"
+	Consts_SVEnhMetafiles,	"Enhanced Metafiles"
+	Consts_SVIcons,	"Icons"
+	Consts_SVBitmaps,	"Bitmaps"
+	Consts_SMaskErr,	"Invalid input value"
+	Consts_SMaskEditErr,	"Invalid input value.  Use escape key to abandon changes"
+	Consts_SMsgDlgWarning,	"Warning"
+	Consts_SMsgDlgError,	"Error"
+	Consts_SMsgDlgInformation,	"Information"
+	Consts_SPropertyOutOfRange,	"%s property out of range"
+	Consts_SMenuIndexError,	"Menu index out of range"
+	Consts_SMenuReinserted,	"Menu inserted twice"
+	Consts_SMenuNotFound,	"Sub-menu is not in menu"
+	Consts_SNoTimers,	"Not enough timers available"
+	Consts_SNotPrinting,	"Printer is not currently printing"
+	Consts_SPrinting,	"Printing in progress"
+	Consts_SInvalidPrinter,	"Printer selected is not valid"
+	Consts_SDeviceOnPort,	"%s on %s"
+	Consts_SGroupIndexTooLow,	"GroupIndex cannot be less than a previous menu item's GroupIndex"
+	Consts_SNoMDIForm,	"Cannot create form. No MDI forms are currently active"
+	Consts_SControlParentSetToSelf,	"A control cannot have itself as its parent"
+	Consts_SOKButton,	"OK"
+	Consts_SCancelButton,	"Cancel"
+	Consts_SYesButton,	"&Yes"
+	Consts_SNoButton,	"&No"
+	Consts_SNoCanvasHandle,	"Canvas does not allow drawing"
+	Consts_SInvalidImageSize,	"Invalid image size"
+	Consts_SInvalidImageList,	"Invalid ImageList"
+	Consts_SReplaceImage,	"Unable to Replace Image"
+	Consts_SImageIndexError,	"Invalid ImageList Index"
+	Consts_SImageReadFail,	"Failed to read ImageList data from stream"
+	Consts_SImageWriteFail,	"Failed to write ImageList data to stream"
+	Consts_SWindowDCError,	"Error creating window device context"
+	Consts_SWindowClass,	"Error creating window class"
+	Consts_SCannotFocus,	"Cannot focus a disabled or invisible window"
+	Consts_SParentRequired,	"Control '%s' has no parent window"
+	Consts_SParentGivenNotAParent,	"Parent given is not a parent of '%s'"
+	Consts_SMDIChildNotVisible,	"Cannot hide an MDI Child Form"
+	Consts_SVisibleChanged,	"Cannot change Visible in OnShow or OnHide"
+	Consts_SCannotShowModal,	"Cannot make a visible window modal"
+	Consts_SScrollBarRange,	"Scrollbar property out of range"
+	RTLConsts_SThreadCreateError,	"Thread creation error: %s"
+	RTLConsts_SThreadError,	"Thread Error: %s (%d)"
+	HelpIntfs_hNoTableOfContents,	"Unable to find a Table of Contents"
+	HelpIntfs_hNothingFound,	"No help found for %s"
+	HelpIntfs_hNoContext,	"No context-sensitive help installed"
+	HelpIntfs_hNoContextFound,	"No help found for context"
+	HelpIntfs_hNoTopics,	"No topic-based help system installed"
+	Consts_SInvalidTabPosition,	"Tab position incompatible with current tab style"
+	Consts_SInvalidTabStyle,	"Tab style incompatible with current tab position"
+	Consts_SInvalidBitmap,	"Bitmap image is not valid"
+	Consts_SInvalidIcon,	"Icon image is not valid"
+	Consts_SInvalidMetafile,	"Metafile is not valid"
+	Consts_SChangeIconSize,	"Cannot change the size of an icon"
+	Consts_SOleGraphic,	"Invalid operation on TOleGraphic"
+	Consts_SUnknownClipboardFormat,	"Unsupported clipboard format"
+	Consts_SOutOfResources,	"Out of system resources"
+	RTLConsts_SListCapacityError,	"List capacity out of bounds (%d)"
+	RTLConsts_SListCountError,	"List count out of bounds (%d)"
+	RTLConsts_SListIndexError,	"List index out of bounds (%d)"
+	RTLConsts_SMemoryStreamError,	"Out of memory while expanding memory stream"
+	RTLConsts_SPropertyException,	"Error reading %s%s%s: %s"
+	RTLConsts_SReadError,	"Stream read error"
+	RTLConsts_SReadOnlyProperty,	"Property is read-only"
+	RTLConsts_SRegGetDataFailed,	"Failed to get data for '%s'"
+	RTLConsts_SRegSetDataFailed,	"Failed to set data for '%s'"
+	RTLConsts_SResNotFound,	"Resource %s not found"
+	RTLConsts_SSeekNotImplemented,	"%s.Seek not implemented"
+	RTLConsts_SSortedListError,	"Operation not allowed on sorted list"
+	RTLConsts_STooManyDeleted,	"Too many rows or columns deleted"
+	RTLConsts_SUnknownGroup,	"%s not in a class registration group"
+	RTLConsts_SUnknownProperty,	"Property %s does not exist"
+	RTLConsts_SWriteError,	"Stream write error"
+	RTLConsts_SDuplicateString,	"String list does not allow duplicates"
+	RTLConsts_SFCreateErrorEx,	"Cannot create file \"%s\". %s"
+	RTLConsts_SFixedColTooBig,	"Fixed column count must be less than column count"
+	RTLConsts_SFixedRowTooBig,	"Fixed row count must be less than row count"
+	RTLConsts_SFOpenErrorEx,	"Cannot open file \"%s\". %s"
+	RTLConsts_SGridTooLarge,	"Grid too large for operation"
+	RTLConsts_SIndexOutOfRange,	"Grid index out of range"
+	RTLConsts_SInvalidImage,	"Invalid stream format"
+	RTLConsts_SInvalidName,	"''%s'' is not a valid component name"
+	RTLConsts_SInvalidProperty,	"Invalid property value"
+	RTLConsts_SInvalidPropertyElement,	"Invalid property element: %s"
+	RTLConsts_SInvalidPropertyPath,	"Invalid property path"
+	RTLConsts_SInvalidPropertyType,	"Invalid property type: %s"
+	RTLConsts_SInvalidPropertyValue,	"Invalid property value"
+	RTLConsts_SInvalidRegType,	"Invalid data type for '%s'"
+	RTLConsts_SInvalidStringGridOp,	"Cannot insert or delete rows from grid"
+	SysConst_SLongDayNameSun,	"Sunday"
+	SysConst_SLongDayNameMon,	"Monday"
+	SysConst_SLongDayNameTue,	"Tuesday"
+	SysConst_SLongDayNameWed,	"Wednesday"
+	SysConst_SLongDayNameThu,	"Thursday"
+	SysConst_SLongDayNameFri,	"Friday"
+	SysConst_SLongDayNameSat,	"Saturday"
+	RTLConsts_SAncestorNotFound,	"Ancestor for '%s' not found"
+	RTLConsts_SAssignError,	"Cannot assign a %s to a %s"
+	RTLConsts_SBitsIndexError,	"Bits index out of range"
+	RTLConsts_SCantWriteResourceStreamError,	"Can't write to a read-only resource stream"
+	RTLConsts_SCheckSynchronizeError,	"CheckSynchronize called from thread $%x, which is NOT the main thread"
+	RTLConsts_SClassNotFound,	"Class %s not found"
+	RTLConsts_SDuplicateClass,	"A class named %s already exists"
+	RTLConsts_SDuplicateItem,	"List does not allow duplicates ($0%x)"
+	RTLConsts_SDuplicateName,	"A component named %s already exists"
+	SysConst_SLongMonthNameApr,	"April"
+	SysConst_SLongMonthNameMay,	"May"
+	SysConst_SLongMonthNameJun,	"June"
+	SysConst_SLongMonthNameJul,	"July"
+	SysConst_SLongMonthNameAug,	"August"
+	SysConst_SLongMonthNameSep,	"September"
+	SysConst_SLongMonthNameOct,	"October"
+	SysConst_SLongMonthNameNov,	"November"
+	SysConst_SLongMonthNameDec,	"December"
+	SysConst_SShortDayNameSun,	"Sun"
+	SysConst_SShortDayNameMon,	"Mon"
+	SysConst_SShortDayNameTue,	"Tue"
+	SysConst_SShortDayNameWed,	"Wed"
+	SysConst_SShortDayNameThu,	"Thu"
+	SysConst_SShortDayNameFri,	"Fri"
+	SysConst_SShortDayNameSat,	"Sat"
+	SysConst_SUnkOSError,	"A call to an OS function failed"
+	SysConst_SShortMonthNameJan,	"Jan"
+	SysConst_SShortMonthNameFeb,	"Feb"
+	SysConst_SShortMonthNameMar,	"Mar"
+	SysConst_SShortMonthNameApr,	"Apr"
+	SysConst_SShortMonthNameMay,	"May"
+	SysConst_SShortMonthNameJun,	"Jun"
+	SysConst_SShortMonthNameJul,	"Jul"
+	SysConst_SShortMonthNameAug,	"Aug"
+	SysConst_SShortMonthNameSep,	"Sep"
+	SysConst_SShortMonthNameOct,	"Oct"
+	SysConst_SShortMonthNameNov,	"Nov"
+	SysConst_SShortMonthNameDec,	"Dec"
+	SysConst_SLongMonthNameJan,	"January"
+	SysConst_SLongMonthNameFeb,	"February"
+	SysConst_SLongMonthNameMar,	"March"
+	SysConst_SVarTypeTooManyCustom,	"Too many custom variant types have been registered"
+	SysConst_SVarTypeCouldNotConvert,	"Could not convert variant of type (%s) into type (%s)"
+	SysConst_SVarTypeConvertOverflow,	"Overflow while converting variant of type (%s) into type (%s)"
+	SysConst_SVarOverflow,	"Variant overflow"
+	SysConst_SVarInvalid,	"Invalid argument"
+	SysConst_SVarBadType,	"Invalid variant type"
+	SysConst_SVarNotImplemented,	"Operation not supported"
+	SysConst_SVarUnexpected,	"Unexpected variant error"
+	SysConst_SExternalException,	"External exception %x"
+	SysConst_SAssertionFailed,	"Assertion failed"
+	SysConst_SIntfCastError,	"Interface not supported"
+	SysConst_SSafecallException,	"Exception in safecall method"
+	SysConst_SAssertError,	"%s (%s, line %d)"
+	SysConst_SAbstractError,	"Abstract Error"
+	SysConst_SModuleAccessViolation,	"Access violation at address %p in module '%s'. %s of address %p"
+	SysConst_SOSError,	"System Error.  Code: %d.\r\n%s"
+	SysConst_SInvalidFormat,	"Format '%s' invalid or incompatible with argument"
+	SysConst_SArgumentMissing,	"No argument for format '%s'"
+	SysConst_SDispatchError,	"Variant method calls not supported"
+	SysConst_SReadAccess,	"Read"
+	SysConst_SWriteAccess,	"Write"
+	SysConst_SFormatTooLong,	"Format string too long"
+	SysConst_SVarArrayCreate,	"Error creating variant or safe array"
+	SysConst_SVarArrayBounds,	"Variant or safe array index out of bounds"
+	SysConst_SVarArrayLocked,	"Variant or safe array is locked"
+	SysConst_SInvalidVarCast,	"Invalid variant type conversion"
+	SysConst_SInvalidVarOp,	"Invalid variant operation"
+	SysConst_SInvalidVarNullOp,	"Invalid NULL variant operation"
+	SysConst_SInvalidVarOpWithHResultWithPrefix,	"Invalid variant operation (%s%.8x)\n%s"
+	SysConst_SVarTypeOutOfRangeWithPrefix,	"Custom variant type (%s%.4x) is out of range"
+	SysConst_SVarTypeAlreadyUsedWithPrefix,	"Custom variant type (%s%.4x) already used by %s"
+	SysConst_SVarTypeNotUsableWithPrefix,	"Custom variant type (%s%.4x) is not usable"
+	SysConst_SRangeError,	"Range check error"
+	SysConst_SIntOverflow,	"Integer overflow"
+	SysConst_SInvalidOp,	"Invalid floating point operation"
+	SysConst_SZeroDivide,	"Floating point division by zero"
+	SysConst_SOverflow,	"Floating point overflow"
+	SysConst_SUnderflow,	"Floating point underflow"
+	SysConst_SInvalidPointer,	"Invalid pointer operation"
+	SysConst_SInvalidCast,	"Invalid class typecast"
+	SysConst_SAccessViolationArg3,	"Access violation at address %p. %s of address %p"
+	SysConst_SAccessViolationNoArg,	"Access violation"
+	SysConst_SStackOverflow,	"Stack overflow"
+	SysConst_SControlC,	"Control-C hit"
+	SysConst_SPrivilege,	"Privileged instruction"
+	SysConst_SOperationAborted,	"Operation aborted"
+	SysConst_SException,	"Exception %s in module %s at %p.\r\n%s%s\r\n"
+	SysConst_SExceptTitle,	"Application Error"
+	SysConst_SInvalidInteger,	"'%s' is not a valid integer value"
+	SysConst_SInvalidFloat,	"'%s' is not a valid floating point value"
+	SysConst_SInvalidTime,	"'%s' is not a valid time"
+	SysConst_SInvalidDateTime,	"'%s' is not a valid date and time"
+	SysConst_STimeEncodeError,	"Invalid argument to time encode"
+	SysConst_SDateEncodeError,	"Invalid argument to date encode"
+	SysConst_SOutOfMemory,	"Out of memory"
+	SysConst_SInOutError,	"I/O error %d"
+	SysConst_SFileNotFound,	"File not found"
+	SysConst_SInvalidFilename,	"Invalid filename"
+	SysConst_STooManyOpenFiles,	"Too many open files"
+	SysConst_SAccessDenied,	"File access denied"
+	SysConst_SEndOfFile,	"Read beyond end of file"
+	SysConst_SDiskFull,	"Disk full"
+	SysConst_SInvalidInput,	"Invalid numeric input"
+	SysConst_SDivByZero,	"Division by zero"
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dsk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dsk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.dsk	(revision 1676)
@@ -0,0 +1,592 @@
+[Closed Files]
+File_0=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\fFrame.pas',0,1,3475,6,3476,0,0,,
+File_1=TSourceModule,'C:\Program Files\vista\BDK32\Source\wsockc.pas',0,1,1464,1,1485,0,0,,
+File_2=TSourceModule,'C:\Vista\cprs\OR_3_243V27\VA\VAUtils.pas',0,1,1390,1,1407,0,0,,
+File_3=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\fReports.pas',0,1,245,1,266,0,0,,
+File_4=TSourceModule,'C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility\VA508AccessibilityManager.pas',0,1,1163,1,1184,0,0,,
+File_5=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\uGraphs.pas',0,1,199,1,220,0,0,,
+File_6=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\VERGENCECONTEXTORLib_TLB.pas',0,1,1104,47,1117,0,0,,
+File_7=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\Orders\fOrdersDC.pas',0,1,98,51,121,0,0,,
+File_8=TSourceModule,'c:\program files\borland\bds\4.0\source\Win32\rtl\common\ComObj.pas',0,1,1249,1,1270,0,0,,
+File_9=TSourceModule,'C:\Vista\cprs\main\CPRS-Chart\fAutoSz.pas',0,1,1,1,1,0,0,,
+
+[Modules]
+Module0=default.htm
+Count=1
+EditWindowCount=1
+TypeLibWindowCount=1
+
+[default.htm]
+ModuleType=TURLModule
+
+[EditWindow0]
+ViewCount=1
+CurrentView=0
+View0=0
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=3154
+Top=1192
+Width=6797
+Height=8767
+MaxLeft=0
+MaxTop=0
+ClientWidth=6719
+ClientHeight=8306
+DockedToMainForm=0
+MessageView=MessageView@EditWindow0
+BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
+TopPanelSize=0
+LeftPanelSize=0
+LeftPanelClients=BorlandEditorCodeExplorer@EditWindow0
+LeftPanelData=0000080001000100000019000000426F726C616E64456469746F72436F64654578706C6F726572B70C00000000000000E201000000000000FFFFFFFF
+RightPanelSize=0
+BottomPanelSize=0
+BottomPanelClients=MessageView@EditWindow0
+BottomPanelData=000008000100010000000B0000004D657373616765566965770000000000000000000000000000000000FFFFFFFF
+BottomMiddlePanelSize=0
+BottomMiddlePanelClients=DockSite1
+BottomMiddelPanelData=0000080001000100000009000000446F636B53697465310000000000000000000000000000000000FFFFFFFF
+
+[View0]
+CustomEditViewType=TWelcomePageView
+WelcomePageURL=bds:/default.htm
+
+[TypeLibEditWindow0]
+Module=P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart\CPRSChart.tlb
+
+[Watches]
+Count=0
+
+[WatchWindow]
+WatchColumnWidth=120
+WatchShowColumnHeaders=1
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=1738
+Top=1423
+Width=2627
+Height=2344
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2549
+ClientHeight=1992
+TBDockHeight=163
+LRDockWidth=2549
+Dockable=1
+StayOnTop=0
+
+[Breakpoints]
+Count=1
+Breakpoint0='C:\Vista\cprs\OR_3_243V27\CPRS-chart\fGraphs.pas',462,'',0,1,'',1,0,0,'',1,'','','',0
+
+[AddressBreakpoints]
+Count=0
+
+[Main Window]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=0
+Top=0
+Width=10000
+Height=1165
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=9922
+ClientHeight=705
+BottomPanelSize=0
+
+[ProjectManager]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=1289
+Height=2358
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1289
+ClientHeight=2358
+TBDockHeight=271
+LRDockWidth=3730
+Dockable=1
+StayOnTop=0
+
+[ToolForm]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=2920
+Height=7696
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=2920
+ClientHeight=7696
+TBDockHeight=5813
+LRDockWidth=1406
+Dockable=1
+StayOnTop=0
+
+[DebugLogView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=68
+Top=8198
+Width=3623
+Height=3360
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=3545
+ClientHeight=3008
+TBDockHeight=298
+LRDockWidth=3623
+Dockable=1
+StayOnTop=0
+
+[ThreadStatusWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=68
+Top=8198
+Width=5420
+Height=1762
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=5342
+ClientHeight=1409
+TBDockHeight=149
+LRDockWidth=5420
+Dockable=1
+StayOnTop=0
+Column0Width=145
+Column1Width=100
+Column2Width=115
+Column3Width=250
+
+[LocalVarsWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=1738
+Top=1423
+Width=2627
+Height=2412
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2549
+ClientHeight=2060
+TBDockHeight=203
+LRDockWidth=2549
+Dockable=1
+StayOnTop=0
+
+[CallStackWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=117
+Top=1558
+Width=2627
+Height=2344
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2549
+ClientHeight=1992
+TBDockHeight=163
+LRDockWidth=2549
+Dockable=1
+StayOnTop=0
+
+[FindReferencsForm]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=4307
+Height=1396
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=4307
+ClientHeight=1396
+TBDockHeight=5081
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[RefactoringForm]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=4307
+Height=1396
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=4307
+ClientHeight=1396
+TBDockHeight=3835
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[TemplateView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=0
+Top=0
+Width=4297
+Height=5827
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=4219
+ClientHeight=5474
+TBDockHeight=5827
+LRDockWidth=4297
+Dockable=1
+StayOnTop=0
+Name=60
+Description=308
+filter=1
+
+[DataExplorer]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=1289
+Height=2358
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1289
+ClientHeight=2358
+TBDockHeight=4878
+LRDockWidth=7148
+Dockable=1
+StayOnTop=0
+
+[MetricsView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-183
+Top=-748
+Width=5303
+Height=3835
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3835
+TBDockHeight=3835
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[QAView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-183
+Top=-748
+Width=5303
+Height=3835
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3835
+TBDockHeight=3835
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[RefactoringsView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-183
+Top=-748
+Width=5303
+Height=3835
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3835
+TBDockHeight=3835
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[UsagesView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-183
+Top=-748
+Width=5303
+Height=3835
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3835
+TBDockHeight=3835
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[ModelViewTool]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=1289
+Height=2358
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1289
+ClientHeight=2358
+TBDockHeight=4878
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[PropertyInspector]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=2920
+Height=7696
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=2920
+ClientHeight=7696
+TBDockHeight=5813
+LRDockWidth=1543
+Dockable=1
+StayOnTop=0
+SplitPos=73
+
+[BreakpointWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=88
+Top=7453
+Width=6396
+Height=2276
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=6318
+ClientHeight=1924
+TBDockHeight=203
+LRDockWidth=6396
+Dockable=1
+StayOnTop=0
+Column0Width=100
+Column1Width=75
+Column2Width=200
+Column3Width=200
+Column4Width=75
+Column5Width=75
+
+[StructureView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=0
+Top=1192
+Width=1670
+Height=3469
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=1592
+ClientHeight=3117
+TBDockHeight=3469
+LRDockWidth=1670
+Dockable=1
+StayOnTop=0
+
+[frmCaliberMain]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=78
+Top=7656
+Width=9863
+Height=2209
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=9785
+ClientHeight=1856
+TBDockHeight=1098
+LRDockWidth=1504
+Dockable=1
+StayOnTop=0
+
+[MessageView@EditWindow0]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-179
+Top=-726
+Width=2773
+Height=1152
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=2773
+ClientHeight=1152
+TBDockHeight=1152
+LRDockWidth=2773
+Dockable=1
+StayOnTop=0
+
+[BorlandEditorCodeExplorer@EditWindow0]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-179
+Top=-113
+Width=1465
+Height=8266
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1465
+ClientHeight=8266
+TBDockHeight=8266
+LRDockWidth=1465
+Dockable=1
+StayOnTop=0
+
+[DockHosts]
+DockHostCount=3
+
+[DockSite0]
+DockSiteType=1
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=-10
+Top=1369
+Width=3076
+Height=8523
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2998
+ClientHeight=8171
+TBDockHeight=8523
+LRDockWidth=3076
+Dockable=1
+StayOnTop=0
+TabPosition=0
+ActiveTabID=ToolForm
+TabDockClients=PropertyInspector,ToolForm
+
+[DockSite1]
+DockSiteType=1
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-179
+Top=-726
+Width=4385
+Height=1870
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=4385
+ClientHeight=1870
+TBDockHeight=1870
+LRDockWidth=4385
+Dockable=1
+StayOnTop=0
+TabPosition=1
+ActiveTabID=RefactoringForm
+TabDockClients=RefactoringForm,FindReferencsForm,UsagesView,RefactoringsView,QAView,MetricsView
+
+[DockSite2]
+DockSiteType=1
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=8516
+Top=1125
+Width=1445
+Height=3184
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=1367
+ClientHeight=2832
+TBDockHeight=3184
+LRDockWidth=1445
+Dockable=1
+StayOnTop=0
+TabPosition=1
+ActiveTabID=ProjectManager
+TabDockClients=ProjectManager,ModelViewTool,DataExplorer
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.map	(revision 1676)
@@ -0,0 +1,68053 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 003B5BACH .text                   CODE
+ 0002:007B7000 00002198H .itext                  ICODE
+ 0003:007BA000 00004CE4H .data                   DATA
+ 0004:007BF000 000067B4H .bss                    BSS
+ 0005:00000000 00000040H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 000063D1 C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:000063D4 00000105 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:000064DC 0000028A C=CODE     S=.text    G=(none)   M=ShareMem ACBP=A9
+ 0001:00006768 00000111 C=CODE     S=.text    G=(none)   M=Types    ACBP=A9
+ 0001:0000687C 00000FA8 C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:00007824 00000372 C=CODE     S=.text    G=(none)   M=ActiveX  ACBP=A9
+ 0001:00007B98 00000338 C=CODE     S=.text    G=(none)   M=SysConst ACBP=A9
+ 0001:00007ED0 00007ED8 C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:0000FDA8 00000816 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:000105C0 00009390 C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00019950 00000158 C=CODE     S=.text    G=(none)   M=RTLConsts ACBP=A9
+ 0001:00019AA8 00001FFF C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:0001BAA8 0000EFD5 C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:0002AA80 00000075 C=CODE     S=.text    G=(none)   M=Math     ACBP=A9
+ 0001:0002AAF8 00000529 C=CODE     S=.text    G=(none)   M=Contnrs  ACBP=A9
+ 0001:0002B024 00001100 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:0002C124 00000772 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:0002C898 000003C6 C=CODE     S=.text    G=(none)   M=CommCtrl ACBP=A9
+ 0001:0002CC60 00000390 C=CODE     S=.text    G=(none)   M=Consts   ACBP=A9
+ 0001:0002CFF0 0000005D C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:0002D050 00000975 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:0002D9C8 0000A0E2 C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:00037AAC 0000016A C=CODE     S=.text    G=(none)   M=SyncObjs ACBP=A9
+ 0001:00037C18 0000099D C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:000385B8 00000006 C=CODE     S=.text    G=(none)   M=ShellAPI ACBP=A9
+ 0001:000385C0 0000006E C=CODE     S=.text    G=(none)   M=ShlObj   ACBP=A9
+ 0001:00038630 0000EE62 C=CODE     S=.text    G=(none)   M=StdCtrls ACBP=A9
+ 0001:00047494 0000001E C=CODE     S=.text    G=(none)   M=WinSpool ACBP=A9
+ 0001:000474B4 00001152 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00048608 00000036 C=CODE     S=.text    G=(none)   M=CommDlg  ACBP=A9
+ 0001:00048640 000016E9 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:00049D2C 0000635E C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:0005008C 0000481C C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:000548A8 00000264 C=CODE     S=.text    G=(none)   M=StrUtils ACBP=A9
+ 0001:00054B0C 00000886 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:00055394 0000012D C=CODE     S=.text    G=(none)   M=StdActns ACBP=A9
+ 0001:000554C4 0000030E C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:000557D4 00000E56 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:0005662C 00006B55 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:0005D184 00014048 C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:000711CC 00001C0D C=CODE     S=.text    G=(none)   M=ImgList  ACBP=A9
+ 0001:00072DDC 0000140A C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:000741E8 0000FB38 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00083D20 00003D01 C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:00087A24 00000AD6 C=CODE     S=.text    G=(none)   M=ToolWin  ACBP=A9
+ 0001:000884FC 0000007C C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:00088578 00000062 C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:000885DC 0000004D C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:0008862C 000000B0 C=CODE     S=.text    G=(none)   M=ComStrs  ACBP=A9
+ 0001:000886DC 000020A2 C=CODE     S=.text    G=(none)   M=ListActns ACBP=A9
+ 0001:0008A780 00029BC0 C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:000B4340 00004B03 C=CODE     S=.text    G=(none)   M=TeCanvas ACBP=A9
+ 0001:000B8E44 00000260 C=CODE     S=.text    G=(none)   M=TeeConst ACBP=A9
+ 0001:000B90A4 00002944 C=CODE     S=.text    G=(none)   M=TeeProcs ACBP=A9
+ 0001:000BB9E8 0000C296 C=CODE     S=.text    G=(none)   M=TeEngine ACBP=A9
+ 0001:000C7C80 00000028 C=CODE     S=.text    G=(none)   M=ComConst ACBP=A9
+ 0001:000C7CA8 00001847 C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:000C94F0 000003EF C=CODE     S=.text    G=(none)   M=VAClasses ACBP=A9
+ 0001:000C98E0 000020C7 C=CODE     S=.text    G=(none)   M=VAUtils  ACBP=A9
+ 0001:000CB9A8 00001A52 C=CODE     S=.text    G=(none)   M=CheckLst ACBP=A9
+ 0001:000CD3FC 00000C03 C=CODE     S=.text    G=(none)   M=TeeFunci ACBP=A9
+ 0001:000CE000 00005B39 C=CODE     S=.text    G=(none)   M=Chart    ACBP=A9
+ 0001:000D3B3C 00000B93 C=CODE     S=.text    G=(none)   M=MaskUtils ACBP=A9
+ 0001:000D46D0 00002BA7 C=CODE     S=.text    G=(none)   M=Mask     ACBP=A9
+ 0001:000D7278 0000966B C=CODE     S=.text    G=(none)   M=Grids    ACBP=A9
+ 0001:000E08E4 000101AF C=CODE     S=.text    G=(none)   M=ORCtrls  ACBP=A9
+ 0001:000F0A94 00005694 C=CODE     S=.text    G=(none)   M=ORFn     ACBP=A9
+ 0001:000F6128 00001100 C=CODE     S=.text    G=(none)   M=ORSystem ACBP=A9
+ 0001:000F7228 000001F5 C=CODE     S=.text    G=(none)   M=OR2006Compatibility ACBP=A9
+ 0001:000F7420 00000028 C=CODE     S=.text    G=(none)   M=OleConst ACBP=A9
+ 0001:000F7448 000008FA C=CODE     S=.text    G=(none)   M=OleServer ACBP=A9
+ 0001:000F7D44 000000C4 C=CODE     S=.text    G=(none)   M=oleacc2  ACBP=A9
+ 0001:000F7E08 0000175B C=CODE     S=.text    G=(none)   M=VA508MSAASupport ACBP=A9
+ 0001:000F9564 000001E4 C=CODE     S=.text    G=(none)   M=DateUtils ACBP=A9
+ 0001:000F9748 0000172D C=CODE     S=.text    G=(none)   M=VA508AccessibilityRouter ACBP=A9
+ 0001:000FAE78 00000858 C=CODE     S=.text    G=(none)   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0001:000FB6D0 00000E90 C=CODE     S=.text    G=(none)   M=Calendar ACBP=A9
+ 0001:000FC560 0000005E C=CODE     S=.text    G=(none)   M=WideStrings ACBP=A9
+ 0001:000FC5C0 00000020 C=CODE     S=.text    G=(none)   M=DBConsts ACBP=A9
+ 0001:000FC5E0 00003EFA C=CODE     S=.text    G=(none)   M=FMTBcd   ACBP=A9
+ 0001:001004DC 00000E06 C=CODE     S=.text    G=(none)   M=SqlTimSt ACBP=A9
+ 0001:001012E4 000004D5 C=CODE     S=.text    G=(none)   M=DB       ACBP=A9
+ 0001:001017BC 00000058 C=CODE     S=.text    G=(none)   M=VDBConsts ACBP=A9
+ 0001:00101814 00000529 C=CODE     S=.text    G=(none)   M=DBPWDlg  ACBP=A9
+ 0001:00101D40 000006E2 C=CODE     S=.text    G=(none)   M=DBLogDlg ACBP=A9
+ 0001:00102424 00000294 C=CODE     S=.text    G=(none)   M=DBCtrls  ACBP=A9
+ 0001:001026B8 00001152 C=CODE     S=.text    G=(none)   M=VA508DelphiCompatibility ACBP=A9
+ 0001:0010380C 00001480 C=CODE     S=.text    G=(none)   M=VA508ImageListLabeler ACBP=A9
+ 0001:00104C8C 000007C8 C=CODE     S=.text    G=(none)   M=VA508Classes ACBP=A9
+ 0001:00105454 00006806 C=CODE     S=.text    G=(none)   M=VA508AccessibilityManager ACBP=A9
+ 0001:0010BC5C 000002AA C=CODE     S=.text    G=(none)   M=uConst   ACBP=A9
+ 0001:0010BF08 000006D2 C=CODE     S=.text    G=(none)   M=fBase508Form ACBP=A9
+ 0001:0010C5DC 0000104C C=CODE     S=.text    G=(none)   M=ORClasses ACBP=A9
+ 0001:0010D628 0000043E C=CODE     S=.text    G=(none)   M=Xwbut1   ACBP=A9
+ 0001:0010DA68 0000030E C=CODE     S=.text    G=(none)   M=MFunStr  ACBP=A9
+ 0001:0010DD78 0000091D C=CODE     S=.text    G=(none)   M=Hash     ACBP=A9
+ 0001:0010E698 0000176E C=CODE     S=.text    G=(none)   M=AxCtrls  ACBP=A9
+ 0001:0010FE08 0000363E C=CODE     S=.text    G=(none)   M=OleCtrls ACBP=A9
+ 0001:00113448 00003240 C=CODE     S=.text    G=(none)   M=XWBRich20 ACBP=A9
+ 0001:00116688 0000022A C=CODE     S=.text    G=(none)   M=frmSignonMessage ACBP=A9
+ 0001:001168B4 00000848 C=CODE     S=.text    G=(none)   M=VERGENCECONTEXTORLib_TLB ACBP=A9
+ 0001:001170FC 000000CA C=CODE     S=.text    G=(none)   M=WinSock  ACBP=A9
+ 0001:001171C8 000001BA C=CODE     S=.text    G=(none)   M=fDebugInfo ACBP=A9
+ 0001:00117384 00003D36 C=CODE     S=.text    G=(none)   M=Wsockc   ACBP=A9
+ 0001:0011B0BC 00000B72 C=CODE     S=.text    G=(none)   M=SelDiv   ACBP=A9
+ 0001:0011BC30 00000858 C=CODE     S=.text    G=(none)   M=RpcSLogin ACBP=A9
+ 0001:0011C488 0000028E C=CODE     S=.text    G=(none)   M=fRPCBErrMsg ACBP=A9
+ 0001:0011C718 00001C32 C=CODE     S=.text    G=(none)   M=CCOWRPCBroker ACBP=A9
+ 0001:0011E34C 00000BC6 C=CODE     S=.text    G=(none)   M=VCEdit   ACBP=A9
+ 0001:0011EF14 00000205 C=CODE     S=.text    G=(none)   M=AddServer ACBP=A9
+ 0001:0011F11C 00000D74 C=CODE     S=.text    G=(none)   M=Rpcconf1 ACBP=A9
+ 0001:0011FE90 00000635 C=CODE     S=.text    G=(none)   M=RpcNet   ACBP=A9
+ 0001:001204C8 0000159A C=CODE     S=.text    G=(none)   M=Loginfrm ACBP=A9
+ 0001:00121A64 000001C4 C=CODE     S=.text    G=(none)   M=fSgnonDlg ACBP=A9
+ 0001:00121C28 00001AC8 C=CODE     S=.text    G=(none)   M=Sgnoncnf ACBP=A9
+ 0001:001236F0 0000302C C=CODE     S=.text    G=(none)   M=Trpcb    ACBP=A9
+ 0001:0012671C 00001311 C=CODE     S=.text    G=(none)   M=ORNet    ACBP=A9
+ 0001:00127A30 00000532 C=CODE     S=.text    G=(none)   M=fAutoSz  ACBP=A9
+ 0001:00127F64 00000104 C=CODE     S=.text    G=(none)   M=rWVEHR   ACBP=A9
+ 0001:00128068 00001262 C=CODE     S=.text    G=(none)   M=AppEvnts ACBP=A9
+ 0001:001292CC 00000186 C=CODE     S=.text    G=(none)   M=Tabs     ACBP=A9
+ 0001:00129454 000003E9 C=CODE     S=.text    G=(none)   M=fTimeout ACBP=A9
+ 0001:00129840 000005F9 C=CODE     S=.text    G=(none)   M=uInit    ACBP=A9
+ 0001:00129E3C 00000572 C=CODE     S=.text    G=(none)   M=fPtSelMsg ACBP=A9
+ 0001:0012A3B0 000004E4 C=CODE     S=.text    G=(none)   M=rVitals  ACBP=A9
+ 0001:0012A894 0000035B C=CODE     S=.text    G=(none)   M=ORDtTmCal ACBP=A9
+ 0001:0012ABF0 00004B9E C=CODE     S=.text    G=(none)   M=ORDtTm   ACBP=A9
+ 0001:0012F790 00000236 C=CODE     S=.text    G=(none)   M=fVitalsDate ACBP=A9
+ 0001:0012F9C8 00001858 C=CODE     S=.text    G=(none)   M=uVitals  ACBP=A9
+ 0001:00131220 00000F18 C=CODE     S=.text    G=(none)   M=uReports ACBP=A9
+ 0001:00132138 00000880 C=CODE     S=.text    G=(none)   M=rECS     ACBP=A9
+ 0001:001329B8 00001768 C=CODE     S=.text    G=(none)   M=SHDocVw  ACBP=A9
+ 0001:00134120 00000B9D C=CODE     S=.text    G=(none)   M=ORDtTmRng ACBP=A9
+ 0001:00134CC0 000001D8 C=CODE     S=.text    G=(none)   M=fHSplit  ACBP=A9
+ 0001:00134E98 00001106 C=CODE     S=.text    G=(none)   M=rGraphs  ACBP=A9
+ 0001:00135FA0 00000504 C=CODE     S=.text    G=(none)   M=uGraphs  ACBP=A9
+ 0001:001364A4 00002206 C=CODE     S=.text    G=(none)   M=fGraphData ACBP=A9
+ 0001:001386AC 00001DB4 C=CODE     S=.text    G=(none)   M=WordXP   ACBP=A9
+ 0001:0013A460 00008DD9 C=CODE     S=.text    G=(none)   M=Series   ACBP=A9
+ 0001:0014323C 0000081E C=CODE     S=.text    G=(none)   M=ArrowCha ACBP=A9
+ 0001:00143A5C 00000A86 C=CODE     S=.text    G=(none)   M=GanttCh  ACBP=A9
+ 0001:001444E4 00000D1A C=CODE     S=.text    G=(none)   M=uFormMonitor ACBP=A9
+ 0001:00145200 00000A65 C=CODE     S=.text    G=(none)   M=fRptBox  ACBP=A9
+ 0001:00145C68 000019CC C=CODE     S=.text    G=(none)   M=rLabs    ACBP=A9
+ 0001:00147634 0000056C C=CODE     S=.text    G=(none)   M=fGraphOthers ACBP=A9
+ 0001:00147BA0 00007989 C=CODE     S=.text    G=(none)   M=fGraphProfiles ACBP=A9
+ 0001:0014F52C 000042CA C=CODE     S=.text    G=(none)   M=fGraphSettings ACBP=A9
+ 0001:001537F8 0001A752 C=CODE     S=.text    G=(none)   M=fGraphs  ACBP=A9
+ 0001:0016DF4C 0000041D C=CODE     S=.text    G=(none)   M=uDCSumm  ACBP=A9
+ 0001:0016E36C 00000569 C=CODE     S=.text    G=(none)   M=uTIU     ACBP=A9
+ 0001:0016E8D8 0000012C C=CODE     S=.text    G=(none)   M=MSXML_TLB ACBP=A9
+ 0001:0016EA04 000019F2 C=CODE     S=.text    G=(none)   M=rTemplates ACBP=A9
+ 0001:001703F8 000006C6 C=CODE     S=.text    G=(none)   M=fFindingTemplates ACBP=A9
+ 0001:00170AC0 0000628A C=CODE     S=.text    G=(none)   M=uTemplateFields ACBP=A9
+ 0001:00176D4C 00002076 C=CODE     S=.text    G=(none)   M=rReminders ACBP=A9
+ 0001:00178DC4 00003200 C=CODE     S=.text    G=(none)   M=fMHTest  ACBP=A9
+ 0001:0017BFC4 00000787 C=CODE     S=.text    G=(none)   M=fPCELex  ACBP=A9
+ 0001:0017C74C 000042EC C=CODE     S=.text    G=(none)   M=rTIU     ACBP=A9
+ 0001:00180A38 000001D3 C=CODE     S=.text    G=(none)   M=VA2006Utils ACBP=A9
+ 0001:00180C0C 000009F6 C=CODE     S=.text    G=(none)   M=fPCEBaseGrid ACBP=A9
+ 0001:00181604 0000179E C=CODE     S=.text    G=(none)   M=ORCtrlsVA508Compatibility ACBP=A9
+ 0001:00182DA4 00000D4E C=CODE     S=.text    G=(none)   M=mVisitRelated ACBP=A9
+ 0001:00183AF4 00000960 C=CODE     S=.text    G=(none)   M=fPCEProvider ACBP=A9
+ 0001:00184454 00000B2A C=CODE     S=.text    G=(none)   M=fGAF     ACBP=A9
+ 0001:00184F80 00001906 C=CODE     S=.text    G=(none)   M=fVisitType ACBP=A9
+ 0001:00186888 00000E22 C=CODE     S=.text    G=(none)   M=fDiagnoses ACBP=A9
+ 0001:001876AC 0000189E C=CODE     S=.text    G=(none)   M=fProcedure ACBP=A9
+ 0001:00188F4C 0000086E C=CODE     S=.text    G=(none)   M=fImmunization ACBP=A9
+ 0001:001897BC 0000082E C=CODE     S=.text    G=(none)   M=fSkinTest ACBP=A9
+ 0001:00189FEC 00000556 C=CODE     S=.text    G=(none)   M=fPatientEd ACBP=A9
+ 0001:0018A544 0000055A C=CODE     S=.text    G=(none)   M=fHealthFactor ACBP=A9
+ 0001:0018AAA0 00000B18 C=CODE     S=.text    G=(none)   M=fHFSearch ACBP=A9
+ 0001:0018B5B8 00001992 C=CODE     S=.text    G=(none)   M=fPCEBaseMain ACBP=A9
+ 0001:0018CF4C 0000053A C=CODE     S=.text    G=(none)   M=fExam    ACBP=A9
+ 0001:0018D488 000004BC C=CODE     S=.text    G=(none)   M=fPCEOther ACBP=A9
+ 0001:0018D944 00001A78 C=CODE     S=.text    G=(none)   M=uConsults ACBP=A9
+ 0001:0018F3BC 00000B0C C=CODE     S=.text    G=(none)   M=rODDiet  ACBP=A9
+ 0001:0018FEC8 00001176 C=CODE     S=.text    G=(none)   M=fODDietLT ACBP=A9
+ 0001:00191040 00000A06 C=CODE     S=.text    G=(none)   M=fClinicWardMeds ACBP=A9
+ 0001:00191A48 00000BB6 C=CODE     S=.text    G=(none)   M=fConsult513Prt ACBP=A9
+ 0001:00192600 000026F6 C=CODE     S=.text    G=(none)   M=rDCSumm  ACBP=A9
+ 0001:00194CF8 00001EAA C=CODE     S=.text    G=(none)   M=fTemplateDialog ACBP=A9
+ 0001:00196BA4 00000518 C=CODE     S=.text    G=(none)   M=fNoteIDParents ACBP=A9
+ 0001:001970BC 000001FA C=CODE     S=.text    G=(none)   M=mImgText ACBP=A9
+ 0001:001972B8 00000A48 C=CODE     S=.text    G=(none)   M=fIconLegend ACBP=A9
+ 0001:00197D00 00000287 C=CODE     S=.text    G=(none)   M=fRemVisitInfo ACBP=A9
+ 0001:00197F88 000008D5 C=CODE     S=.text    G=(none)   M=fNoteCPFields ACBP=A9
+ 0001:00198860 0000036B C=CODE     S=.text    G=(none)   M=MenuBar  ACBP=A9
+ 0001:00198BCC 00000992 C=CODE     S=.text    G=(none)   M=fTemplateFields ACBP=A9
+ 0001:00199560 000013C6 C=CODE     S=.text    G=(none)   M=uSpell   ACBP=A9
+ 0001:0019A928 00004080 C=CODE     S=.text    G=(none)   M=fTemplateFieldEditor ACBP=A9
+ 0001:0019E9A8 0000062A C=CODE     S=.text    G=(none)   M=fConsultAlertTo ACBP=A9
+ 0001:0019EFD4 00000CC8 C=CODE     S=.text    G=(none)   M=fConsMedRslt ACBP=A9
+ 0001:0019FC9C 0000036A C=CODE     S=.text    G=(none)   M=fRemCoverPreview ACBP=A9
+ 0001:001A0008 00000B60 C=CODE     S=.text    G=(none)   M=rProbs   ACBP=A9
+ 0001:001A0B68 00006923 C=CODE     S=.text    G=(none)   M=fRemCoverSheet ACBP=A9
+ 0001:001A748C 000004E8 C=CODE     S=.text    G=(none)   M=fNoteST  ACBP=A9
+ 0001:001A7974 00002140 C=CODE     S=.text    G=(none)   M=rOptions ACBP=A9
+ 0001:001A9AB4 00000CAC C=CODE     S=.text    G=(none)   M=rMeds    ACBP=A9
+ 0001:001AA760 00001AEC C=CODE     S=.text    G=(none)   M=rODMeds  ACBP=A9
+ 0001:001AC24C 00000A50 C=CODE     S=.text    G=(none)   M=fActivateDeactivate ACBP=A9
+ 0001:001ACC9C 0000004E C=CODE     S=.text    G=(none)   M=DSIntf   ACBP=A9
+ 0001:001ACCEC 0000012D C=CODE     S=.text    G=(none)   M=Provider ACBP=A9
+ 0001:001ACE1C 0000014D C=CODE     S=.text    G=(none)   M=DBClient ACBP=A9
+ 0001:001ACF6C 00000C66 C=CODE     S=.text    G=(none)   M=uODBase  ACBP=A9
+ 0001:001ADBD4 000008D5 C=CODE     S=.text    G=(none)   M=fPreReq  ACBP=A9
+ 0001:001AE4AC 000000BC C=CODE     S=.text    G=(none)   M=XuDigSigSC_TLB ACBP=A9
+ 0001:001AE568 0000070A C=CODE     S=.text    G=(none)   M=mCoPayDesc ACBP=A9
+ 0001:001AEC74 000017F0 C=CODE     S=.text    G=(none)   M=rODLab   ACBP=A9
+ 0001:001B0464 00001300 C=CODE     S=.text    G=(none)   M=fOrdersPrint ACBP=A9
+ 0001:001B1764 0000457C C=CODE     S=.text    G=(none)   M=fOrdersSign ACBP=A9
+ 0001:001B5CE0 00000C9F C=CODE     S=.text    G=(none)   M=rSurgery ACBP=A9
+ 0001:001B6980 000003A8 C=CODE     S=.text    G=(none)   M=uSurgery ACBP=A9
+ 0001:001B6D28 0000152C C=CODE     S=.text    G=(none)   M=uCaseTree ACBP=A9
+ 0001:001B8254 00000864 C=CODE     S=.text    G=(none)   M=fSurgeryView ACBP=A9
+ 0001:001B8AB8 0000083C C=CODE     S=.text    G=(none)   M=fPCEEdit ACBP=A9
+ 0001:001B92F4 0000031A C=CODE     S=.text    G=(none)   M=fNotesBP ACBP=A9
+ 0001:001B9610 000030E7 C=CODE     S=.text    G=(none)   M=fNoteProps ACBP=A9
+ 0001:001BC6F8 00000596 C=CODE     S=.text    G=(none)   M=fTemplateObjects ACBP=A9
+ 0001:001BCC90 00000619 C=CODE     S=.text    G=(none)   M=fTemplateView ACBP=A9
+ 0001:001BD2AC 00000706 C=CODE     S=.text    G=(none)   M=fTemplateAutoGen ACBP=A9
+ 0001:001BD9B4 0000061E C=CODE     S=.text    G=(none)   M=XMLUtils ACBP=A9
+ 0001:001BDFD4 00000128 C=CODE     S=.text    G=(none)   M=rEventHooks ACBP=A9
+ 0001:001BE0FC 0000B140 C=CODE     S=.text    G=(none)   M=fTemplateEditor ACBP=A9
+ 0001:001C923C 00001246 C=CODE     S=.text    G=(none)   M=fTIUView ACBP=A9
+ 0001:001CA484 000003DE C=CODE     S=.text    G=(none)   M=fNoteDR  ACBP=A9
+ 0001:001CA864 00001628 C=CODE     S=.text    G=(none)   M=fAddlSigners ACBP=A9
+ 0001:001CBE8C 00000BE2 C=CODE     S=.text    G=(none)   M=fNotePrt ACBP=A9
+ 0001:001CCA70 00000417 C=CODE     S=.text    G=(none)   M=fSignItem ACBP=A9
+ 0001:001CCE88 000006C9 C=CODE     S=.text    G=(none)   M=fNoteBD  ACBP=A9
+ 0001:001CD554 000005DC C=CODE     S=.text    G=(none)   M=fNoteBA  ACBP=A9
+ 0001:001CDB30 0000947C C=CODE     S=.text    G=(none)   M=fSurgery ACBP=A9
+ 0001:001D6FAC 000003DA C=CODE     S=.text    G=(none)   M=fLkUpLocation ACBP=A9
+ 0001:001D7388 000010D1 C=CODE     S=.text    G=(none)   M=fOCSession ACBP=A9
+ 0001:001D845C 0000245B C=CODE     S=.text    G=(none)   M=uSignItems ACBP=A9
+ 0001:001DA8B8 000037F4 C=CODE     S=.text    G=(none)   M=uProbs   ACBP=A9
+ 0001:001DE0AC 00002BF6 C=CODE     S=.text    G=(none)   M=fReportsPrint ACBP=A9
+ 0001:001E0CA4 0000052C C=CODE     S=.text    G=(none)   M=fProbCmt ACBP=A9
+ 0001:001E11D0 0000195D C=CODE     S=.text    G=(none)   M=rODAllergy ACBP=A9
+ 0001:001E2B30 00000204 C=CODE     S=.text    G=(none)   M=fOMAction ACBP=A9
+ 0001:001E2D34 00001849 C=CODE     S=.text    G=(none)   M=rCover   ACBP=A9
+ 0001:001E4580 0000022C C=CODE     S=.text    G=(none)   M=uOrPtf   ACBP=A9
+ 0001:001E47AC 00000E78 C=CODE     S=.text    G=(none)   M=fPatientFlagMulti ACBP=A9
+ 0001:001E5624 0000187C C=CODE     S=.text    G=(none)   M=fvit     ACBP=A9
+ 0001:001E6EA0 000036CD C=CODE     S=.text    G=(none)   M=fCover   ACBP=A9
+ 0001:001EA570 000005C2 C=CODE     S=.text    G=(none)   M=fPtCWAD  ACBP=A9
+ 0001:001EAB34 000004B5 C=CODE     S=.text    G=(none)   M=fARTFreeTextMsg ACBP=A9
+ 0001:001EAFEC 00001654 C=CODE     S=.text    G=(none)   M=fAllgyFind ACBP=A9
+ 0001:001EC640 000015FD C=CODE     S=.text    G=(none)   M=fProbflt ACBP=A9
+ 0001:001EDC40 00000DCF C=CODE     S=.text    G=(none)   M=fProbLex ACBP=A9
+ 0001:001EEA10 00003E9E C=CODE     S=.text    G=(none)   M=fProbEdt ACBP=A9
+ 0001:001F28B0 000087FA C=CODE     S=.text    G=(none)   M=fProbs   ACBP=A9
+ 0001:001FB0AC 0000629A C=CODE     S=.text    G=(none)   M=fODConsult ACBP=A9
+ 0001:00201348 00000F37 C=CODE     S=.text    G=(none)   M=fODValidateAction ACBP=A9
+ 0001:00202280 00000530 C=CODE     S=.text    G=(none)   M=fODAuto  ACBP=A9
+ 0001:002027B0 00000604 C=CODE     S=.text    G=(none)   M=fOMVerify ACBP=A9
+ 0001:00202DB4 00000F48 C=CODE     S=.text    G=(none)   M=fOrdersTS ACBP=A9
+ 0001:00203CFC 00001318 C=CODE     S=.text    G=(none)   M=fMedCopy ACBP=A9
+ 0001:00205014 00001356 C=CODE     S=.text    G=(none)   M=mEvntDelay ACBP=A9
+ 0001:0020636C 000011E8 C=CODE     S=.text    G=(none)   M=fOrdersCopy ACBP=A9
+ 0001:00207554 00000659 C=CODE     S=.text    G=(none)   M=fODChild ACBP=A9
+ 0001:00207BB0 000010CD C=CODE     S=.text    G=(none)   M=fODActive ACBP=A9
+ 0001:00208C80 0000030A C=CODE     S=.text    G=(none)   M=fEffectDate ACBP=A9
+ 0001:00208F8C 00002308 C=CODE     S=.text    G=(none)   M=fODGen   ACBP=A9
+ 0001:0020B294 00001A58 C=CODE     S=.text    G=(none)   M=fOMNavA  ACBP=A9
+ 0001:0020CCEC 00000F8F C=CODE     S=.text    G=(none)   M=fODReleaseEvent ACBP=A9
+ 0001:0020DC7C 00000328 C=CODE     S=.text    G=(none)   M=fOCAccept ACBP=A9
+ 0001:0020DFA4 000004FE C=CODE     S=.text    G=(none)   M=fRenewOutMed ACBP=A9
+ 0001:0020E4A4 000005F6 C=CODE     S=.text    G=(none)   M=fDateRange ACBP=A9
+ 0001:0020EA9C 000014AF C=CODE     S=.text    G=(none)   M=fOrdersRenew ACBP=A9
+ 0001:0020FF4C 00000322 C=CODE     S=.text    G=(none)   M=fRename  ACBP=A9
+ 0001:00210270 00001232 C=CODE     S=.text    G=(none)   M=fOrderSaveQuick ACBP=A9
+ 0001:002114A4 00000448 C=CODE     S=.text    G=(none)   M=fOrderComment ACBP=A9
+ 0001:002118EC 00000877 C=CODE     S=.text    G=(none)   M=fOrdersVerify ACBP=A9
+ 0001:00212164 0000055A C=CODE     S=.text    G=(none)   M=fOrdersComplete ACBP=A9
+ 0001:002126C0 000015F9 C=CODE     S=.text    G=(none)   M=fOrdersEvntRelease ACBP=A9
+ 0001:00213CBC 00000B5F C=CODE     S=.text    G=(none)   M=fOrdersOnChart ACBP=A9
+ 0001:0021481C 00001013 C=CODE     S=.text    G=(none)   M=fOrdersRelease ACBP=A9
+ 0001:00215830 00000356 C=CODE     S=.text    G=(none)   M=fOrderUnflag ACBP=A9
+ 0001:00215B88 000005BE C=CODE     S=.text    G=(none)   M=fOrderFlag ACBP=A9
+ 0001:00216148 00000512 C=CODE     S=.text    G=(none)   M=fOrdersAlert ACBP=A9
+ 0001:0021665C 00000376 C=CODE     S=.text    G=(none)   M=fOrdersUnhold ACBP=A9
+ 0001:002169D4 000003BE C=CODE     S=.text    G=(none)   M=fOrdersHold ACBP=A9
+ 0001:00216D94 0000052D C=CODE     S=.text    G=(none)   M=fODChangeEvtDisp ACBP=A9
+ 0001:002172C4 000017CB C=CODE     S=.text    G=(none)   M=fOrdersCV ACBP=A9
+ 0001:00218A90 00000BE8 C=CODE     S=.text    G=(none)   M=fOrdersDC ACBP=A9
+ 0001:00219678 0000103F C=CODE     S=.text    G=(none)   M=fOrderVw ACBP=A9
+ 0001:0021A6B8 000006EA C=CODE     S=.text    G=(none)   M=fOrdersRefill ACBP=A9
+ 0001:0021ADA4 00007126 C=CODE     S=.text    G=(none)   M=fMeds    ACBP=A9
+ 0001:00221ECC 00001D76 C=CODE     S=.text    G=(none)   M=fPrintLocation ACBP=A9
+ 0001:00223C44 000066BC C=CODE     S=.text    G=(none)   M=fReview  ACBP=A9
+ 0001:0022A300 00001EEE C=CODE     S=.text    G=(none)   M=fEncnt   ACBP=A9
+ 0001:0022C1F0 0000EF3A C=CODE     S=.text    G=(none)   M=fNotes   ACBP=A9
+ 0001:0023B12C 00002199 C=CODE     S=.text    G=(none)   M=fReminderTree ACBP=A9
+ 0001:0023D2C8 00002544 C=CODE     S=.text    G=(none)   M=fEditConsult ACBP=A9
+ 0001:0023F80C 000025D4 C=CODE     S=.text    G=(none)   M=fEditProc ACBP=A9
+ 0001:00241DE0 00000CB8 C=CODE     S=.text    G=(none)   M=fCsltNote ACBP=A9
+ 0001:00242A98 000033D6 C=CODE     S=.text    G=(none)   M=fODProc  ACBP=A9
+ 0001:00245E70 0000235E C=CODE     S=.text    G=(none)   M=fConsultAct ACBP=A9
+ 0001:002481D0 00000EC0 C=CODE     S=.text    G=(none)   M=fConsultsView ACBP=A9
+ 0001:00249090 0000070C C=CODE     S=.text    G=(none)   M=fConsultBSt ACBP=A9
+ 0001:0024979C 00000695 C=CODE     S=.text    G=(none)   M=fConsultBD ACBP=A9
+ 0001:00249E34 0000095C C=CODE     S=.text    G=(none)   M=fConsultBS ACBP=A9
+ 0001:0024A790 0000FD29 C=CODE     S=.text    G=(none)   M=fConsults ACBP=A9
+ 0001:0025A4BC 00001E36 C=CODE     S=.text    G=(none)   M=fDCSummProps ACBP=A9
+ 0001:0025C2F4 0000BC00 C=CODE     S=.text    G=(none)   M=fDCSumm  ACBP=A9
+ 0001:00267EF4 000006C4 C=CODE     S=.text    G=(none)   M=fPrintList ACBP=A9
+ 0001:002685B8 000008C4 C=CODE     S=.text    G=(none)   M=fODChangeUnreleasedRenew ACBP=A9
+ 0001:00268E7C 000073FA C=CODE     S=.text    G=(none)   M=fODMedNVA ACBP=A9
+ 0001:00270278 00000068 C=CODE     S=.text    G=(none)   M=MSHTML   ACBP=A9
+ 0001:002702E0 00002410 C=CODE     S=.text    G=(none)   M=fOMHTML  ACBP=A9
+ 0001:002726F0 00000FC0 C=CODE     S=.text    G=(none)   M=fOMSet   ACBP=A9
+ 0001:002736B0 00000B06 C=CODE     S=.text    G=(none)   M=fODVitals ACBP=A9
+ 0001:002741B8 000003ED C=CODE     S=.text    G=(none)   M=fIVRoutes ACBP=A9
+ 0001:002745A8 00000057 C=CODE     S=.text    G=(none)   M=IdSysBase ACBP=A9
+ 0001:00274600 000001B6 C=CODE     S=.text    G=(none)   M=IdSysVCL ACBP=A9
+ 0001:002747B8 00000066 C=CODE     S=.text    G=(none)   M=IdSysNativeVCL ACBP=A9
+ 0001:00274820 00000058 C=CODE     S=.text    G=(none)   M=IdSysWin32 ACBP=A9
+ 0001:00274878 00000067 C=CODE     S=.text    G=(none)   M=IdGlobal ACBP=A9
+ 0001:002748E0 000027BD C=CODE     S=.text    G=(none)   M=fOtherSchedule ACBP=A9
+ 0001:002770A0 0000895B C=CODE     S=.text    G=(none)   M=fODMedIV ACBP=A9
+ 0001:0027F9FC 00016C4E C=CODE     S=.text    G=(none)   M=fODMeds  ACBP=A9
+ 0001:0029664C 000005CC C=CODE     S=.text    G=(none)   M=fLabCollTimes ACBP=A9
+ 0001:00296C18 000005CD C=CODE     S=.text    G=(none)   M=fODLabImmedColl ACBP=A9
+ 0001:002971E8 0000056C C=CODE     S=.text    G=(none)   M=fODLabOthCollSamp ACBP=A9
+ 0001:00297754 00008334 C=CODE     S=.text    G=(none)   M=fODLab   ACBP=A9
+ 0001:0029FA88 000004AA C=CODE     S=.text    G=(none)   M=fODLabOthSpec ACBP=A9
+ 0001:0029FF34 00011858 C=CODE     S=.text    G=(none)   M=fODBBank ACBP=A9
+ 0001:002B178C 0000043C C=CODE     S=.text    G=(none)   M=rODRad   ACBP=A9
+ 0001:002B1BC8 00000694 C=CODE     S=.text    G=(none)   M=fODRadConShRes ACBP=A9
+ 0001:002B225C 00000430 C=CODE     S=.text    G=(none)   M=fODRadApproval ACBP=A9
+ 0001:002B268C 00003D4A C=CODE     S=.text    G=(none)   M=fODRad   ACBP=A9
+ 0001:002B63D8 0000087C C=CODE     S=.text    G=(none)   M=fODText  ACBP=A9
+ 0001:002B6C54 00002216 C=CODE     S=.text    G=(none)   M=fODMedComplex ACBP=A9
+ 0001:002B8E6C 000005B2 C=CODE     S=.text    G=(none)   M=fODMedFA ACBP=A9
+ 0001:002B9420 00002D94 C=CODE     S=.text    G=(none)   M=fODMedOut ACBP=A9
+ 0001:002BC1B4 00002018 C=CODE     S=.text    G=(none)   M=fODMedIn ACBP=A9
+ 0001:002BE1CC 000008D0 C=CODE     S=.text    G=(none)   M=fODMisc  ACBP=A9
+ 0001:002BEA9C 00009D5A C=CODE     S=.text    G=(none)   M=fODDiet  ACBP=A9
+ 0001:002C87F8 0000006F C=CODE     S=.text    G=(none)   M=CPRSChart_TLB ACBP=A9
+ 0001:002C8868 00001DA5 C=CODE     S=.text    G=(none)   M=uEventHooks ACBP=A9
+ 0001:002CA610 0000594E C=CODE     S=.text    G=(none)   M=fODBase  ACBP=A9
+ 0001:002CFF60 000038AF C=CODE     S=.text    G=(none)   M=rODBase  ACBP=A9
+ 0001:002D3810 000036C0 C=CODE     S=.text    G=(none)   M=rConsults ACBP=A9
+ 0001:002D6ED0 00002AB4 C=CODE     S=.text    G=(none)   M=uDocTree ACBP=A9
+ 0001:002D9984 0000020B C=CODE     S=.text    G=(none)   M=fNoteSTStop ACBP=A9
+ 0001:002D9B90 0000448C C=CODE     S=.text    G=(none)   M=fARTAllgy ACBP=A9
+ 0001:002DE01C 000008C5 C=CODE     S=.text    G=(none)   M=fAllgyBox ACBP=A9
+ 0001:002DE8E4 00002DC7 C=CODE     S=.text    G=(none)   M=fVitals  ACBP=A9
+ 0001:002E16AC 0000229E C=CODE     S=.text    G=(none)   M=fEncVitals ACBP=A9
+ 0001:002E394C 00005DD0 C=CODE     S=.text    G=(none)   M=rPCE     ACBP=A9
+ 0001:002E971C 0000529D C=CODE     S=.text    G=(none)   M=fReminderDialog ACBP=A9
+ 0001:002EE9BC 0001374D C=CODE     S=.text    G=(none)   M=uReminders ACBP=A9
+ 0001:0030210C 000030F5 C=CODE     S=.text    G=(none)   M=uDlgComponents ACBP=A9
+ 0001:00305204 0000061E C=CODE     S=.text    G=(none)   M=mTemplateFieldButton ACBP=A9
+ 0001:00305824 00001E82 C=CODE     S=.text    G=(none)   M=uVA508CPRSCompatibility ACBP=A9
+ 0001:003076A8 000036D2 C=CODE     S=.text    G=(none)   M=fDrawers ACBP=A9
+ 0001:0030AD7C 00001FEA C=CODE     S=.text    G=(none)   M=dShared  ACBP=A9
+ 0001:0030CD68 00001086 C=CODE     S=.text    G=(none)   M=Gauges   ACBP=A9
+ 0001:0030DDF0 000003C0 C=CODE     S=.text    G=(none)   M=fTemplateImport ACBP=A9
+ 0001:0030E1B0 00008CBF C=CODE     S=.text    G=(none)   M=uTemplates ACBP=A9
+ 0001:00316E70 0000142D C=CODE     S=.text    G=(none)   M=fReportsAdhocSubItem1 ACBP=A9
+ 0001:003182A0 000030EA C=CODE     S=.text    G=(none)   M=fReportsAdhocComponent1 ACBP=A9
+ 0001:0031B38C 0000DE7C C=CODE     S=.text    G=(none)   M=fReports ACBP=A9
+ 0001:00329208 00003446 C=CODE     S=.text    G=(none)   M=rReports ACBP=A9
+ 0001:0032C650 000008B2 C=CODE     S=.text    G=(none)   M=fDeviceSelect ACBP=A9
+ 0001:0032CF04 00008A0E C=CODE     S=.text    G=(none)   M=uPCE     ACBP=A9
+ 0001:00335914 0000067E C=CODE     S=.text    G=(none)   M=fPCEBase ACBP=A9
+ 0001:00335F94 00001F64 C=CODE     S=.text    G=(none)   M=fEncounterFrame ACBP=A9
+ 0001:00337EF8 00003F4C C=CODE     S=.text    G=(none)   M=UBACore  ACBP=A9
+ 0001:0033BE44 00000418 C=CODE     S=.text    G=(none)   M=fDupPts  ACBP=A9
+ 0001:0033C25C 00000AEA C=CODE     S=.text    G=(none)   M=fPtSelDemog ACBP=A9
+ 0001:0033CD48 00000426 C=CODE     S=.text    G=(none)   M=fPtSelOptSave ACBP=A9
+ 0001:0033D170 00001C46 C=CODE     S=.text    G=(none)   M=fPtSelOptns ACBP=A9
+ 0001:0033EDB8 00000BEE C=CODE     S=.text    G=(none)   M=fAlertForward ACBP=A9
+ 0001:0033F9A8 0000578A C=CODE     S=.text    G=(none)   M=fPtSel   ACBP=A9
+ 0001:00345134 000024A6 C=CODE     S=.text    G=(none)   M=fLabPrint ACBP=A9
+ 0001:003475DC 00000742 C=CODE     S=.text    G=(none)   M=fLabTest ACBP=A9
+ 0001:00347D20 00000792 C=CODE     S=.text    G=(none)   M=fLabTests ACBP=A9
+ 0001:003484B4 00001A35 C=CODE     S=.text    G=(none)   M=fLabTestGroups ACBP=A9
+ 0001:00349EEC 0001377C C=CODE     S=.text    G=(none)   M=fLabs    ACBP=A9
+ 0001:0035D668 00000768 C=CODE     S=.text    G=(none)   M=fPtDemo  ACBP=A9
+ 0001:0035DDD0 0000064C C=CODE     S=.text    G=(none)   M=fAbout   ACBP=A9
+ 0001:0035E41C 0000075C C=CODE     S=.text    G=(none)   M=fxBroker ACBP=A9
+ 0001:0035EB78 00000273 C=CODE     S=.text    G=(none)   M=fxLists  ACBP=A9
+ 0001:0035EDEC 0000029F C=CODE     S=.text    G=(none)   M=fxServer ACBP=A9
+ 0001:0035F08C 0000032C C=CODE     S=.text    G=(none)   M=fSplash  ACBP=A9
+ 0001:0035F3B8 00000383 C=CODE     S=.text    G=(none)   M=fLabInfo ACBP=A9
+ 0001:0035F73C 00002382 C=CODE     S=.text    G=(none)   M=fBAOptionsDiagnoses ACBP=A9
+ 0001:00361AC0 00000DB8 C=CODE     S=.text    G=(none)   M=uOptions ACBP=A9
+ 0001:00362878 00001920 C=CODE     S=.text    G=(none)   M=fOptionsReportsDefault ACBP=A9
+ 0001:00364198 0000230F C=CODE     S=.text    G=(none)   M=fOptionsReportsCustom ACBP=A9
+ 0001:003664A8 00001355 C=CODE     S=.text    G=(none)   M=fOptionsTitles ACBP=A9
+ 0001:00367800 00000A8C C=CODE     S=.text    G=(none)   M=fOptionsNotes ACBP=A9
+ 0001:0036828C 0000108B C=CODE     S=.text    G=(none)   M=fOptionsOther ACBP=A9
+ 0001:00369318 0000105F C=CODE     S=.text    G=(none)   M=fOptionsCombinations ACBP=A9
+ 0001:0036A378 00001028 C=CODE     S=.text    G=(none)   M=fOptionsTeams ACBP=A9
+ 0001:0036B3A0 000005D3 C=CODE     S=.text    G=(none)   M=fOptionsNewList ACBP=A9
+ 0001:0036B974 00001FCE C=CODE     S=.text    G=(none)   M=fOptionsLists ACBP=A9
+ 0001:0036D944 00001601 C=CODE     S=.text    G=(none)   M=fOptionsPatientSelection ACBP=A9
+ 0001:0036EF48 00000D09 C=CODE     S=.text    G=(none)   M=fOptionsSurrogate ACBP=A9
+ 0001:0036FC54 00000C0B C=CODE     S=.text    G=(none)   M=fOptionsReminders ACBP=A9
+ 0001:00370860 0000155F C=CODE     S=.text    G=(none)   M=fOptionsDays ACBP=A9
+ 0001:00371DC0 00002546 C=CODE     S=.text    G=(none)   M=fOptions ACBP=A9
+ 0001:00374308 00010062 C=CODE     S=.text    G=(none)   M=fFrame   ACBP=A9
+ 0001:0038436C 0000527A C=CODE     S=.text    G=(none)   M=fBALocalDiagnoses ACBP=A9
+ 0001:003895E8 0000292E C=CODE     S=.text    G=(none)   M=UBAGlobals ACBP=A9
+ 0001:0038BF18 0000A173 C=CODE     S=.text    G=(none)   M=rOrders  ACBP=A9
+ 0001:0039608C 0000D622 C=CODE     S=.text    G=(none)   M=fOrders  ACBP=A9
+ 0001:003A36B0 00001B31 C=CODE     S=.text    G=(none)   M=rMisc    ACBP=A9
+ 0001:003A51E4 000006EA C=CODE     S=.text    G=(none)   M=fODMedOIFA ACBP=A9
+ 0001:003A58D0 000068DE C=CODE     S=.text    G=(none)   M=uOrders  ACBP=A9
+ 0001:003AC1B0 000047C6 C=CODE     S=.text    G=(none)   M=rCore    ACBP=A9
+ 0001:003B0978 000038FF C=CODE     S=.text    G=(none)   M=uCore    ACBP=A9
+ 0001:003B4278 00000572 C=CODE     S=.text    G=(none)   M=fPage    ACBP=A9
+ 0001:003B47EC 000004D6 C=CODE     S=.text    G=(none)   M=fAResize ACBP=A9
+ 0001:003B4CC4 00000EE8 C=CODE     S=.text    G=(none)   M=CPRSChart ACBP=A9
+ 0002:00000000 00000095 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000098 00000036 C=ICODE    S=.itext   G=(none)   M=ShareMem ACBP=A9
+ 0002:000000D0 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:000000E4 00000088 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:0000016C 0000000F C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:0000017C 000000AA C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:00000228 00000008 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000230 00000092 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:000002C4 00000008 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:000002CC 0000000F C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:000002DC 00000008 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:000002E4 00000008 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:000002EC 000000FB C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:000003E8 0000001B C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000404 00000008 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:0000040C 0000007F C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:0000048C 00000044 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000004D0 0000003D C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:00000510 00000058 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:00000568 0000000F C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:00000578 00000008 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:00000580 00000085 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:00000608 0000008F C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:00000698 0000002A C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:000006C4 0000004C C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000710 00000025 C=ICODE    S=.itext   G=(none)   M=Buttons  ACBP=A9
+ 0002:00000738 00000014 C=ICODE    S=.itext   G=(none)   M=ExtDlgs  ACBP=A9
+ 0002:0000074C 00000008 C=ICODE    S=.itext   G=(none)   M=Mapi     ACBP=A9
+ 0002:00000754 00000008 C=ICODE    S=.itext   G=(none)   M=ExtActns ACBP=A9
+ 0002:0000075C 00000008 C=ICODE    S=.itext   G=(none)   M=ComCtrls ACBP=A9
+ 0002:00000764 00000040 C=ICODE    S=.itext   G=(none)   M=TeeProcs ACBP=A9
+ 0002:000007A4 00000040 C=ICODE    S=.itext   G=(none)   M=TeEngine ACBP=A9
+ 0002:000007E4 00000055 C=ICODE    S=.itext   G=(none)   M=ComObj   ACBP=A9
+ 0002:0000083C 00000036 C=ICODE    S=.itext   G=(none)   M=VAUtils  ACBP=A9
+ 0002:00000874 0000000F C=ICODE    S=.itext   G=(none)   M=CheckLst ACBP=A9
+ 0002:00000884 00000178 C=ICODE    S=.itext   G=(none)   M=Chart    ACBP=A9
+ 0002:000009FC 00000037 C=ICODE    S=.itext   G=(none)   M=ORCtrls  ACBP=A9
+ 0002:00000A34 0000008C C=ICODE    S=.itext   G=(none)   M=ORFn     ACBP=A9
+ 0002:00000AC0 0000001A C=ICODE    S=.itext   G=(none)   M=OleServer ACBP=A9
+ 0002:00000ADC 00000014 C=ICODE    S=.itext   G=(none)   M=VA508MSAASupport ACBP=A9
+ 0002:00000AF0 00000021 C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityRouter ACBP=A9
+ 0002:00000B14 00000008 C=ICODE    S=.itext   G=(none)   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0002:00000B1C 0000000F C=ICODE    S=.itext   G=(none)   M=WideStrings ACBP=A9
+ 0002:00000B2C 0000001B C=ICODE    S=.itext   G=(none)   M=FMTBcd   ACBP=A9
+ 0002:00000B48 0000001B C=ICODE    S=.itext   G=(none)   M=SqlTimSt ACBP=A9
+ 0002:00000B64 0000008C C=ICODE    S=.itext   G=(none)   M=DB       ACBP=A9
+ 0002:00000BF0 00000015 C=ICODE    S=.itext   G=(none)   M=DBPWDlg  ACBP=A9
+ 0002:00000C08 00000054 C=ICODE    S=.itext   G=(none)   M=DBLogDlg ACBP=A9
+ 0002:00000C5C 00000070 C=ICODE    S=.itext   G=(none)   M=DBCtrls  ACBP=A9
+ 0002:00000CCC 0000000F C=ICODE    S=.itext   G=(none)   M=VA508DelphiCompatibility ACBP=A9
+ 0002:00000CDC 00000014 C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityManager ACBP=A9
+ 0002:00000CF0 00000016 C=ICODE    S=.itext   G=(none)   M=uConst   ACBP=A9
+ 0002:00000D08 00000050 C=ICODE    S=.itext   G=(none)   M=fBase508Form ACBP=A9
+ 0002:00000D58 00000008 C=ICODE    S=.itext   G=(none)   M=ORClasses ACBP=A9
+ 0002:00000D60 00000008 C=ICODE    S=.itext   G=(none)   M=MFunStr  ACBP=A9
+ 0002:00000D68 00000008 C=ICODE    S=.itext   G=(none)   M=Hash     ACBP=A9
+ 0002:00000D70 00000023 C=ICODE    S=.itext   G=(none)   M=AxCtrls  ACBP=A9
+ 0002:00000D94 00000051 C=ICODE    S=.itext   G=(none)   M=OleCtrls ACBP=A9
+ 0002:00000DE8 00000008 C=ICODE    S=.itext   G=(none)   M=XWBRich20 ACBP=A9
+ 0002:00000DF0 00000008 C=ICODE    S=.itext   G=(none)   M=Wsockc   ACBP=A9
+ 0002:00000DF8 00000008 C=ICODE    S=.itext   G=(none)   M=SelDiv   ACBP=A9
+ 0002:00000E00 00000008 C=ICODE    S=.itext   G=(none)   M=CCOWRPCBroker ACBP=A9
+ 0002:00000E08 00000008 C=ICODE    S=.itext   G=(none)   M=Rpcconf1 ACBP=A9
+ 0002:00000E10 00000008 C=ICODE    S=.itext   G=(none)   M=RpcNet   ACBP=A9
+ 0002:00000E18 00000008 C=ICODE    S=.itext   G=(none)   M=Sgnoncnf ACBP=A9
+ 0002:00000E20 00000008 C=ICODE    S=.itext   G=(none)   M=Trpcb    ACBP=A9
+ 0002:00000E28 00000084 C=ICODE    S=.itext   G=(none)   M=ORNet    ACBP=A9
+ 0002:00000EAC 00000014 C=ICODE    S=.itext   G=(none)   M=fAutoSz  ACBP=A9
+ 0002:00000EC0 00000033 C=ICODE    S=.itext   G=(none)   M=AppEvnts ACBP=A9
+ 0002:00000EF4 00000008 C=ICODE    S=.itext   G=(none)   M=Tabs     ACBP=A9
+ 0002:00000EFC 00000008 C=ICODE    S=.itext   G=(none)   M=uInit    ACBP=A9
+ 0002:00000F04 00000008 C=ICODE    S=.itext   G=(none)   M=rVitals  ACBP=A9
+ 0002:00000F0C 00000018 C=ICODE    S=.itext   G=(none)   M=ORDtTm   ACBP=A9
+ 0002:00000F24 00000008 C=ICODE    S=.itext   G=(none)   M=uVitals  ACBP=A9
+ 0002:00000F2C 00000019 C=ICODE    S=.itext   G=(none)   M=Series   ACBP=A9
+ 0002:00000F48 00000072 C=ICODE    S=.itext   G=(none)   M=ArrowCha ACBP=A9
+ 0002:00000FBC 00000072 C=ICODE    S=.itext   G=(none)   M=GanttCh  ACBP=A9
+ 0002:00001030 0000000F C=ICODE    S=.itext   G=(none)   M=uFormMonitor ACBP=A9
+ 0002:00001040 00000011 C=ICODE    S=.itext   G=(none)   M=fGraphs  ACBP=A9
+ 0002:00001054 00000008 C=ICODE    S=.itext   G=(none)   M=rTemplates ACBP=A9
+ 0002:0000105C 00000008 C=ICODE    S=.itext   G=(none)   M=uTemplateFields ACBP=A9
+ 0002:00001064 00000008 C=ICODE    S=.itext   G=(none)   M=rReminders ACBP=A9
+ 0002:0000106C 0000002F C=ICODE    S=.itext   G=(none)   M=rTIU     ACBP=A9
+ 0002:0000109C 00000014 C=ICODE    S=.itext   G=(none)   M=fPCEBaseGrid ACBP=A9
+ 0002:000010B0 0000000F C=ICODE    S=.itext   G=(none)   M=ORCtrlsVA508Compatibility ACBP=A9
+ 0002:000010C0 00000014 C=ICODE    S=.itext   G=(none)   M=mVisitRelated ACBP=A9
+ 0002:000010D4 00000014 C=ICODE    S=.itext   G=(none)   M=fGAF     ACBP=A9
+ 0002:000010E8 00000014 C=ICODE    S=.itext   G=(none)   M=fVisitType ACBP=A9
+ 0002:000010FC 00000014 C=ICODE    S=.itext   G=(none)   M=fDiagnoses ACBP=A9
+ 0002:00001110 00000014 C=ICODE    S=.itext   G=(none)   M=fProcedure ACBP=A9
+ 0002:00001124 00000014 C=ICODE    S=.itext   G=(none)   M=fImmunization ACBP=A9
+ 0002:00001138 00000014 C=ICODE    S=.itext   G=(none)   M=fSkinTest ACBP=A9
+ 0002:0000114C 00000014 C=ICODE    S=.itext   G=(none)   M=fPatientEd ACBP=A9
+ 0002:00001160 00000014 C=ICODE    S=.itext   G=(none)   M=fHealthFactor ACBP=A9
+ 0002:00001174 00000014 C=ICODE    S=.itext   G=(none)   M=fPCEBaseMain ACBP=A9
+ 0002:00001188 00000014 C=ICODE    S=.itext   G=(none)   M=fExam    ACBP=A9
+ 0002:0000119C 00000008 C=ICODE    S=.itext   G=(none)   M=uConsults ACBP=A9
+ 0002:000011A4 00000008 C=ICODE    S=.itext   G=(none)   M=fClinicWardMeds ACBP=A9
+ 0002:000011AC 00000008 C=ICODE    S=.itext   G=(none)   M=rDCSumm  ACBP=A9
+ 0002:000011B4 00000014 C=ICODE    S=.itext   G=(none)   M=mImgText ACBP=A9
+ 0002:000011C8 00000008 C=ICODE    S=.itext   G=(none)   M=uSpell   ACBP=A9
+ 0002:000011D0 00000008 C=ICODE    S=.itext   G=(none)   M=fConsMedRslt ACBP=A9
+ 0002:000011D8 00000008 C=ICODE    S=.itext   G=(none)   M=fRemCoverSheet ACBP=A9
+ 0002:000011E0 00000008 C=ICODE    S=.itext   G=(none)   M=rODMeds  ACBP=A9
+ 0002:000011E8 00000014 C=ICODE    S=.itext   G=(none)   M=DSIntf   ACBP=A9
+ 0002:000011FC 00000008 C=ICODE    S=.itext   G=(none)   M=Provider ACBP=A9
+ 0002:00001204 00000008 C=ICODE    S=.itext   G=(none)   M=DBClient ACBP=A9
+ 0002:0000120C 0000006B C=ICODE    S=.itext   G=(none)   M=uODBase  ACBP=A9
+ 0002:00001278 00000014 C=ICODE    S=.itext   G=(none)   M=mCoPayDesc ACBP=A9
+ 0002:0000128C 00000008 C=ICODE    S=.itext   G=(none)   M=fOrdersPrint ACBP=A9
+ 0002:00001294 00000008 C=ICODE    S=.itext   G=(none)   M=fOrdersSign ACBP=A9
+ 0002:0000129C 00000008 C=ICODE    S=.itext   G=(none)   M=rSurgery ACBP=A9
+ 0002:000012A4 00000008 C=ICODE    S=.itext   G=(none)   M=fPCEEdit ACBP=A9
+ 0002:000012AC 00000008 C=ICODE    S=.itext   G=(none)   M=XMLUtils ACBP=A9
+ 0002:000012B4 0000005D C=ICODE    S=.itext   G=(none)   M=fSurgery ACBP=A9
+ 0002:00001314 0000006A C=ICODE    S=.itext   G=(none)   M=uSignItems ACBP=A9
+ 0002:00001380 00000008 C=ICODE    S=.itext   G=(none)   M=uProbs   ACBP=A9
+ 0002:00001388 00000008 C=ICODE    S=.itext   G=(none)   M=rODAllergy ACBP=A9
+ 0002:00001390 00000008 C=ICODE    S=.itext   G=(none)   M=rCover   ACBP=A9
+ 0002:00001398 0000003B C=ICODE    S=.itext   G=(none)   M=fCover   ACBP=A9
+ 0002:000013D4 00000014 C=ICODE    S=.itext   G=(none)   M=fProbEdt ACBP=A9
+ 0002:000013E8 00000014 C=ICODE    S=.itext   G=(none)   M=fProbs   ACBP=A9
+ 0002:000013FC 00000008 C=ICODE    S=.itext   G=(none)   M=fODConsult ACBP=A9
+ 0002:00001404 00000014 C=ICODE    S=.itext   G=(none)   M=mEvntDelay ACBP=A9
+ 0002:00001418 00000008 C=ICODE    S=.itext   G=(none)   M=fOrdersAlert ACBP=A9
+ 0002:00001420 0000003B C=ICODE    S=.itext   G=(none)   M=fMeds    ACBP=A9
+ 0002:0000145C 00000008 C=ICODE    S=.itext   G=(none)   M=fPrintLocation ACBP=A9
+ 0002:00001464 00000008 C=ICODE    S=.itext   G=(none)   M=fReview  ACBP=A9
+ 0002:0000146C 00000008 C=ICODE    S=.itext   G=(none)   M=fEncnt   ACBP=A9
+ 0002:00001474 0000005D C=ICODE    S=.itext   G=(none)   M=fNotes   ACBP=A9
+ 0002:000014D4 00000008 C=ICODE    S=.itext   G=(none)   M=fEditConsult ACBP=A9
+ 0002:000014DC 00000008 C=ICODE    S=.itext   G=(none)   M=fEditProc ACBP=A9
+ 0002:000014E4 00000008 C=ICODE    S=.itext   G=(none)   M=fODProc  ACBP=A9
+ 0002:000014EC 00000042 C=ICODE    S=.itext   G=(none)   M=fConsultAct ACBP=A9
+ 0002:00001530 00000042 C=ICODE    S=.itext   G=(none)   M=fConsultsView ACBP=A9
+ 0002:00001574 00000042 C=ICODE    S=.itext   G=(none)   M=fConsultBS ACBP=A9
+ 0002:000015B8 0000005D C=ICODE    S=.itext   G=(none)   M=fConsults ACBP=A9
+ 0002:00001618 0000005D C=ICODE    S=.itext   G=(none)   M=fDCSumm  ACBP=A9
+ 0002:00001678 00000008 C=ICODE    S=.itext   G=(none)   M=fODMedNVA ACBP=A9
+ 0002:00001680 00000008 C=ICODE    S=.itext   G=(none)   M=IdSysVCL ACBP=A9
+ 0002:00001688 00000068 C=ICODE    S=.itext   G=(none)   M=IdGlobal ACBP=A9
+ 0002:000016F0 00000008 C=ICODE    S=.itext   G=(none)   M=fODMeds  ACBP=A9
+ 0002:000016F8 00000008 C=ICODE    S=.itext   G=(none)   M=fODLab   ACBP=A9
+ 0002:00001700 00000008 C=ICODE    S=.itext   G=(none)   M=fODBBank ACBP=A9
+ 0002:00001708 00000008 C=ICODE    S=.itext   G=(none)   M=fODRad   ACBP=A9
+ 0002:00001710 00000008 C=ICODE    S=.itext   G=(none)   M=fODDiet  ACBP=A9
+ 0002:00001718 00000008 C=ICODE    S=.itext   G=(none)   M=uEventHooks ACBP=A9
+ 0002:00001720 00000008 C=ICODE    S=.itext   G=(none)   M=fODBase  ACBP=A9
+ 0002:00001728 00000042 C=ICODE    S=.itext   G=(none)   M=rODBase  ACBP=A9
+ 0002:0000176C 00000050 C=ICODE    S=.itext   G=(none)   M=rConsults ACBP=A9
+ 0002:000017BC 00000008 C=ICODE    S=.itext   G=(none)   M=fARTAllgy ACBP=A9
+ 0002:000017C4 00000014 C=ICODE    S=.itext   G=(none)   M=fEncVitals ACBP=A9
+ 0002:000017D8 000000FB C=ICODE    S=.itext   G=(none)   M=rPCE     ACBP=A9
+ 0002:000018D4 00000008 C=ICODE    S=.itext   G=(none)   M=fReminderDialog ACBP=A9
+ 0002:000018DC 00000036 C=ICODE    S=.itext   G=(none)   M=uReminders ACBP=A9
+ 0002:00001914 00000014 C=ICODE    S=.itext   G=(none)   M=uDlgComponents ACBP=A9
+ 0002:00001928 00000014 C=ICODE    S=.itext   G=(none)   M=mTemplateFieldButton ACBP=A9
+ 0002:0000193C 0000000F C=ICODE    S=.itext   G=(none)   M=uVA508CPRSCompatibility ACBP=A9
+ 0002:0000194C 00000014 C=ICODE    S=.itext   G=(none)   M=fDrawers ACBP=A9
+ 0002:00001960 00000014 C=ICODE    S=.itext   G=(none)   M=dShared  ACBP=A9
+ 0002:00001974 00000008 C=ICODE    S=.itext   G=(none)   M=uTemplates ACBP=A9
+ 0002:0000197C 00000008 C=ICODE    S=.itext   G=(none)   M=fReportsAdhocComponent1 ACBP=A9
+ 0002:00001984 0000003B C=ICODE    S=.itext   G=(none)   M=fReports ACBP=A9
+ 0002:000019C0 00000008 C=ICODE    S=.itext   G=(none)   M=rReports ACBP=A9
+ 0002:000019C8 00000008 C=ICODE    S=.itext   G=(none)   M=fDeviceSelect ACBP=A9
+ 0002:000019D0 00000008 C=ICODE    S=.itext   G=(none)   M=uPCE     ACBP=A9
+ 0002:000019D8 00000014 C=ICODE    S=.itext   G=(none)   M=fPCEBase ACBP=A9
+ 0002:000019EC 00000014 C=ICODE    S=.itext   G=(none)   M=fPtSelDemog ACBP=A9
+ 0002:00001A00 0000003B C=ICODE    S=.itext   G=(none)   M=fPtSelOptns ACBP=A9
+ 0002:00001A3C 00000008 C=ICODE    S=.itext   G=(none)   M=fAlertForward ACBP=A9
+ 0002:00001A44 00000008 C=ICODE    S=.itext   G=(none)   M=fPtSel   ACBP=A9
+ 0002:00001A4C 0000003B C=ICODE    S=.itext   G=(none)   M=fLabs    ACBP=A9
+ 0002:00001A88 00000102 C=ICODE    S=.itext   G=(none)   M=fBAOptionsDiagnoses ACBP=A9
+ 0002:00001B8C 0000003B C=ICODE    S=.itext   G=(none)   M=fFrame   ACBP=A9
+ 0002:00001BC8 000000BC C=ICODE    S=.itext   G=(none)   M=fBALocalDiagnoses ACBP=A9
+ 0002:00001C84 0000022D C=ICODE    S=.itext   G=(none)   M=UBAGlobals ACBP=A9
+ 0002:00001EB4 00000018 C=ICODE    S=.itext   G=(none)   M=rOrders  ACBP=A9
+ 0002:00001ECC 00000014 C=ICODE    S=.itext   G=(none)   M=fOrders  ACBP=A9
+ 0002:00001EE0 00000008 C=ICODE    S=.itext   G=(none)   M=rMisc    ACBP=A9
+ 0002:00001EE8 0000009D C=ICODE    S=.itext   G=(none)   M=uOrders  ACBP=A9
+ 0002:00001F88 00000008 C=ICODE    S=.itext   G=(none)   M=rCore    ACBP=A9
+ 0002:00001F90 0000003D C=ICODE    S=.itext   G=(none)   M=uCore    ACBP=A9
+ 0002:00001FD0 00000014 C=ICODE    S=.itext   G=(none)   M=fPage    ACBP=A9
+ 0002:00001FE4 00000014 C=ICODE    S=.itext   G=(none)   M=fAResize ACBP=A9
+ 0002:00001FF8 000001A0 C=ICODE    S=.itext   G=(none)   M=CPRSChart ACBP=A9
+ 0003:00000000 0000079C C=DATA     S=.data    G=DGROUP   M=System   ACBP=A9
+ 0003:0000079C 00000020 C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0003:000007BC 00000010 C=DATA     S=.data    G=DGROUP   M=ActiveX  ACBP=A9
+ 0003:000007CC 00000250 C=DATA     S=.data    G=DGROUP   M=SysUtils ACBP=A9
+ 0003:00000A1C 00000110 C=DATA     S=.data    G=DGROUP   M=VarUtils ACBP=A9
+ 0003:00000B2C 000001BA C=DATA     S=.data    G=DGROUP   M=Variants ACBP=A9
+ 0003:00000CE8 0000000C C=DATA     S=.data    G=DGROUP   M=TypInfo  ACBP=A9
+ 0003:00000CF4 00000064 C=DATA     S=.data    G=DGROUP   M=Classes  ACBP=A9
+ 0003:00000D58 00000008 C=DATA     S=.data    G=DGROUP   M=IniFiles ACBP=A9
+ 0003:00000D60 00000008 C=DATA     S=.data    G=DGROUP   M=Registry ACBP=A9
+ 0003:00000D68 00000318 C=DATA     S=.data    G=DGROUP   M=Graphics ACBP=A9
+ 0003:00001080 00000010 C=DATA     S=.data    G=DGROUP   M=ShlObj   ACBP=A9
+ 0003:00001090 00000190 C=DATA     S=.data    G=DGROUP   M=StdCtrls ACBP=A9
+ 0003:00001220 00000004 C=DATA     S=.data    G=DGROUP   M=Printers ACBP=A9
+ 0003:00001224 000004B8 C=DATA     S=.data    G=DGROUP   M=GraphUtil ACBP=A9
+ 0003:000016DC 00000020 C=DATA     S=.data    G=DGROUP   M=ExtCtrls ACBP=A9
+ 0003:000016FC 000001B4 C=DATA     S=.data    G=DGROUP   M=Dialogs  ACBP=A9
+ 0003:000018B0 00000068 C=DATA     S=.data    G=DGROUP   M=Themes   ACBP=A9
+ 0003:00001918 000000F4 C=DATA     S=.data    G=DGROUP   M=Menus    ACBP=A9
+ 0003:00001A0C 0000013C C=DATA     S=.data    G=DGROUP   M=Controls ACBP=A9
+ 0003:00001B48 00000020 C=DATA     S=.data    G=DGROUP   M=ImgList  ACBP=A9
+ 0003:00001B68 0000013C C=DATA     S=.data    G=DGROUP   M=Forms    ACBP=A9
+ 0003:00001CA4 0000009E C=DATA     S=.data    G=DGROUP   M=Buttons  ACBP=A9
+ 0003:00001D44 00000020 C=DATA     S=.data    G=DGROUP   M=ToolWin  ACBP=A9
+ 0003:00001D64 00000018 C=DATA     S=.data    G=DGROUP   M=ExtDlgs  ACBP=A9
+ 0003:00001D7C 00000008 C=DATA     S=.data    G=DGROUP   M=Mapi     ACBP=A9
+ 0003:00001D84 000002A8 C=DATA     S=.data    G=DGROUP   M=ComCtrls ACBP=A9
+ 0003:0000202C 00000010 C=DATA     S=.data    G=DGROUP   M=TeCanvas ACBP=A9
+ 0003:0000203C 00000148 C=DATA     S=.data    G=DGROUP   M=TeeProcs ACBP=A9
+ 0003:00002184 0000002A C=DATA     S=.data    G=DGROUP   M=TeEngine ACBP=A9
+ 0003:000021B0 00000030 C=DATA     S=.data    G=DGROUP   M=ComObj   ACBP=A9
+ 0003:000021E0 00000455 C=DATA     S=.data    G=DGROUP   M=VAUtils  ACBP=A9
+ 0003:00002638 0000000A C=DATA     S=.data    G=DGROUP   M=Chart    ACBP=A9
+ 0003:00002644 00000009 C=DATA     S=.data    G=DGROUP   M=MaskUtils ACBP=A9
+ 0003:00002650 00000004 C=DATA     S=.data    G=DGROUP   M=Mask     ACBP=A9
+ 0003:00002654 00000006 C=DATA     S=.data    G=DGROUP   M=Grids    ACBP=A9
+ 0003:0000265C 00000248 C=DATA     S=.data    G=DGROUP   M=ORCtrls  ACBP=A9
+ 0003:000028A4 00000510 C=DATA     S=.data    G=DGROUP   M=ORFn     ACBP=A9
+ 0003:00002DB4 00000010 C=DATA     S=.data    G=DGROUP   M=MSAAConstants ACBP=A9
+ 0003:00002DC4 00000010 C=DATA     S=.data    G=DGROUP   M=oleacc2  ACBP=A9
+ 0003:00002DD4 00000018 C=DATA     S=.data    G=DGROUP   M=VA508MSAASupport ACBP=A9
+ 0003:00002DEC 00000024 C=DATA     S=.data    G=DGROUP   M=VA508AccessibilityRouter ACBP=A9
+ 0003:00002E10 00000030 C=DATA     S=.data    G=DGROUP   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0003:00002E40 00000030 C=DATA     S=.data    G=DGROUP   M=Calendar ACBP=A9
+ 0003:00002E70 000000FC C=DATA     S=.data    G=DGROUP   M=FMTBcd   ACBP=A9
+ 0003:00002F6C 0000003C C=DATA     S=.data    G=DGROUP   M=SqlTimSt ACBP=A9
+ 0003:00002FA8 000000A8 C=DATA     S=.data    G=DGROUP   M=DB       ACBP=A9
+ 0003:00003050 00000028 C=DATA     S=.data    G=DGROUP   M=DBCtrls  ACBP=A9
+ 0003:00003078 00000061 C=DATA     S=.data    G=DGROUP   M=VA508AccessibilityManager ACBP=A9
+ 0003:000030DC 00000064 C=DATA     S=.data    G=DGROUP   M=uConst   ACBP=A9
+ 0003:00003140 00000004 C=DATA     S=.data    G=DGROUP   M=fBase508Form ACBP=A9
+ 0003:00003144 00000004 C=DATA     S=.data    G=DGROUP   M=ORClasses ACBP=A9
+ 0003:00003148 00000004 C=DATA     S=.data    G=DGROUP   M=MFunStr  ACBP=A9
+ 0003:0000314C 00000050 C=DATA     S=.data    G=DGROUP   M=Hash     ACBP=A9
+ 0003:0000319C 0000002C C=DATA     S=.data    G=DGROUP   M=OleCtrls ACBP=A9
+ 0003:000031C8 00000031 C=DATA     S=.data    G=DGROUP   M=XWBRich20 ACBP=A9
+ 0003:000031FC 00000080 C=DATA     S=.data    G=DGROUP   M=VERGENCECONTEXTORLib_TLB ACBP=A9
+ 0003:0000327C 00000008 C=DATA     S=.data    G=DGROUP   M=CCOWRPCBroker ACBP=A9
+ 0003:00003284 00000004 C=DATA     S=.data    G=DGROUP   M=VCEdit   ACBP=A9
+ 0003:00003288 00000018 C=DATA     S=.data    G=DGROUP   M=Trpcb    ACBP=A9
+ 0003:000032A0 0000000E C=DATA     S=.data    G=DGROUP   M=ORNet    ACBP=A9
+ 0003:000032B0 0000000E C=DATA     S=.data    G=DGROUP   M=rWVEHR   ACBP=A9
+ 0003:000032C0 00000004 C=DATA     S=.data    G=DGROUP   M=AppEvnts ACBP=A9
+ 0003:000032C4 00000030 C=DATA     S=.data    G=DGROUP   M=Tabs     ACBP=A9
+ 0003:000032F4 00000005 C=DATA     S=.data    G=DGROUP   M=uInit    ACBP=A9
+ 0003:000032FC 00000004 C=DATA     S=.data    G=DGROUP   M=fPtSelMsg ACBP=A9
+ 0003:00003300 00000004 C=DATA     S=.data    G=DGROUP   M=rVitals  ACBP=A9
+ 0003:00003304 00000030 C=DATA     S=.data    G=DGROUP   M=ORDtTm   ACBP=A9
+ 0003:00003334 000000B8 C=DATA     S=.data    G=DGROUP   M=uVitals  ACBP=A9
+ 0003:000033EC 00000030 C=DATA     S=.data    G=DGROUP   M=uReports ACBP=A9
+ 0003:0000341C 000000D4 C=DATA     S=.data    G=DGROUP   M=SHDocVw  ACBP=A9
+ 0003:000034F0 00000078 C=DATA     S=.data    G=DGROUP   M=WordXP   ACBP=A9
+ 0003:00003568 00000038 C=DATA     S=.data    G=DGROUP   M=Series   ACBP=A9
+ 0003:000035A0 00000004 C=DATA     S=.data    G=DGROUP   M=uFormMonitor ACBP=A9
+ 0003:000035A4 00000010 C=DATA     S=.data    G=DGROUP   M=MSXML_TLB ACBP=A9
+ 0003:000035B4 00000005 C=DATA     S=.data    G=DGROUP   M=rTemplates ACBP=A9
+ 0003:000035BC 0000012C C=DATA     S=.data    G=DGROUP   M=uTemplateFields ACBP=A9
+ 0003:000036E8 00000018 C=DATA     S=.data    G=DGROUP   M=rReminders ACBP=A9
+ 0003:00003700 00000014 C=DATA     S=.data    G=DGROUP   M=fMHTest  ACBP=A9
+ 0003:00003714 00000001 C=DATA     S=.data    G=DGROUP   M=rTIU     ACBP=A9
+ 0003:00003718 00000005 C=DATA     S=.data    G=DGROUP   M=fIconLegend ACBP=A9
+ 0003:00003720 00000004 C=DATA     S=.data    G=DGROUP   M=fTemplateFieldEditor ACBP=A9
+ 0003:00003724 00000058 C=DATA     S=.data    G=DGROUP   M=fRemCoverSheet ACBP=A9
+ 0003:0000377C 00000004 C=DATA     S=.data    G=DGROUP   M=DSIntf   ACBP=A9
+ 0003:00003780 0000002C C=DATA     S=.data    G=DGROUP   M=Provider ACBP=A9
+ 0003:000037AC 00000038 C=DATA     S=.data    G=DGROUP   M=DBClient ACBP=A9
+ 0003:000037E4 00000010 C=DATA     S=.data    G=DGROUP   M=XuDigSigSC_TLB ACBP=A9
+ 0003:000037F4 0000000C C=DATA     S=.data    G=DGROUP   M=fPCEEdit ACBP=A9
+ 0003:00003800 00000004 C=DATA     S=.data    G=DGROUP   M=fNoteProps ACBP=A9
+ 0003:00003804 00000005 C=DATA     S=.data    G=DGROUP   M=fTemplateView ACBP=A9
+ 0003:0000380C 00000028 C=DATA     S=.data    G=DGROUP   M=XMLUtils ACBP=A9
+ 0003:00003834 00000060 C=DATA     S=.data    G=DGROUP   M=fTemplateEditor ACBP=A9
+ 0003:00003894 00000051 C=DATA     S=.data    G=DGROUP   M=uSignItems ACBP=A9
+ 0003:000038E8 0000000D C=DATA     S=.data    G=DGROUP   M=uProbs   ACBP=A9
+ 0003:000038F8 00000008 C=DATA     S=.data    G=DGROUP   M=rODAllergy ACBP=A9
+ 0003:00003900 00000008 C=DATA     S=.data    G=DGROUP   M=rCover   ACBP=A9
+ 0003:00003908 00000001 C=DATA     S=.data    G=DGROUP   M=fvit     ACBP=A9
+ 0003:0000390C 00000040 C=DATA     S=.data    G=DGROUP   M=fProbs   ACBP=A9
+ 0003:0000394C 00000014 C=DATA     S=.data    G=DGROUP   M=fReminderTree ACBP=A9
+ 0003:00003960 0000002C C=DATA     S=.data    G=DGROUP   M=fConsults ACBP=A9
+ 0003:0000398C 0000004C C=DATA     S=.data    G=DGROUP   M=IdSysVCL ACBP=A9
+ 0003:000039D8 00000004 C=DATA     S=.data    G=DGROUP   M=IdGlobal ACBP=A9
+ 0003:000039DC 0000002C C=DATA     S=.data    G=DGROUP   M=fODLab   ACBP=A9
+ 0003:00003A08 0000002C C=DATA     S=.data    G=DGROUP   M=fODBBank ACBP=A9
+ 0003:00003A34 0000000E C=DATA     S=.data    G=DGROUP   M=fODDiet  ACBP=A9
+ 0003:00003A44 00000020 C=DATA     S=.data    G=DGROUP   M=CPRSChart_TLB ACBP=A9
+ 0003:00003A64 00000005 C=DATA     S=.data    G=DGROUP   M=uEventHooks ACBP=A9
+ 0003:00003A6C 00000025 C=DATA     S=.data    G=DGROUP   M=fODBase  ACBP=A9
+ 0003:00003A94 0000000D C=DATA     S=.data    G=DGROUP   M=fARTAllgy ACBP=A9
+ 0003:00003AA4 00000001 C=DATA     S=.data    G=DGROUP   M=fEncVitals ACBP=A9
+ 0003:00003AA8 00000049 C=DATA     S=.data    G=DGROUP   M=rPCE     ACBP=A9
+ 0003:00003AF4 00000029 C=DATA     S=.data    G=DGROUP   M=fReminderDialog ACBP=A9
+ 0003:00003B20 0000022C C=DATA     S=.data    G=DGROUP   M=uReminders ACBP=A9
+ 0003:00003D4C 0000001D C=DATA     S=.data    G=DGROUP   M=uDlgComponents ACBP=A9
+ 0003:00003D6C 00000100 C=DATA     S=.data    G=DGROUP   M=dShared  ACBP=A9
+ 0003:00003E6C 00000004 C=DATA     S=.data    G=DGROUP   M=fTemplateImport ACBP=A9
+ 0003:00003E70 0000013C C=DATA     S=.data    G=DGROUP   M=uTemplates ACBP=A9
+ 0003:00003FAC 000000A4 C=DATA     S=.data    G=DGROUP   M=uPCE     ACBP=A9
+ 0003:00004050 0000000C C=DATA     S=.data    G=DGROUP   M=fPtSel   ACBP=A9
+ 0003:0000405C 00000001 C=DATA     S=.data    G=DGROUP   M=fFrame   ACBP=A9
+ 0003:00004060 00000002 C=DATA     S=.data    G=DGROUP   M=rOrders  ACBP=A9
+ 0003:00004064 00000004 C=DATA     S=.data    G=DGROUP   M=rCore    ACBP=A9
+ 0003:00004068 00000024 C=DATA     S=.data    G=DGROUP   M=uCore    ACBP=A9
+ 0004:00000000 000027F4 C=BSS      S=.bss     G=DGROUP   M=System   ACBP=A9
+ 0004:000027F4 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:00002800 0000001C C=BSS      S=.bss     G=DGROUP   M=ShareMem ACBP=A9
+ 0004:0000281C 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00002824 00000A20 C=BSS      S=.bss     G=DGROUP   M=SysUtils ACBP=A9
+ 0004:00003244 0000005C C=BSS      S=.bss     G=DGROUP   M=VarUtils ACBP=A9
+ 0004:000032A0 00000040 C=BSS      S=.bss     G=DGROUP   M=Variants ACBP=A9
+ 0004:000032E0 00000004 C=BSS      S=.bss     G=DGROUP   M=TypInfo  ACBP=A9
+ 0004:000032E4 00000044 C=BSS      S=.bss     G=DGROUP   M=Classes  ACBP=A9
+ 0004:00003328 00000008 C=BSS      S=.bss     G=DGROUP   M=HelpIntfs ACBP=A9
+ 0004:00003330 00000031 C=BSS      S=.bss     G=DGROUP   M=MultiMon ACBP=A9
+ 0004:00003364 00000008 C=BSS      S=.bss     G=DGROUP   M=CommCtrl ACBP=A9
+ 0004:0000336C 00000004 C=BSS      S=.bss     G=DGROUP   M=IniFiles ACBP=A9
+ 0004:00003370 00000004 C=BSS      S=.bss     G=DGROUP   M=Registry ACBP=A9
+ 0004:00003374 00000060 C=BSS      S=.bss     G=DGROUP   M=Graphics ACBP=A9
+ 0004:000033D4 000000CC C=BSS      S=.bss     G=DGROUP   M=UxTheme  ACBP=A9
+ 0004:000034A0 00000004 C=BSS      S=.bss     G=DGROUP   M=Printers ACBP=A9
+ 0004:000034A4 00000004 C=BSS      S=.bss     G=DGROUP   M=GraphUtil ACBP=A9
+ 0004:000034A8 00000008 C=BSS      S=.bss     G=DGROUP   M=ExtCtrls ACBP=A9
+ 0004:000034B0 0000003C C=BSS      S=.bss     G=DGROUP   M=Dialogs  ACBP=A9
+ 0004:000034EC 0000000C C=BSS      S=.bss     G=DGROUP   M=Clipbrd  ACBP=A9
+ 0004:000034F8 00000034 C=BSS      S=.bss     G=DGROUP   M=FlatSB   ACBP=A9
+ 0004:0000352C 00000008 C=BSS      S=.bss     G=DGROUP   M=Themes   ACBP=A9
+ 0004:00003534 00000010 C=BSS      S=.bss     G=DGROUP   M=Menus    ACBP=A9
+ 0004:00003544 00000088 C=BSS      S=.bss     G=DGROUP   M=Controls ACBP=A9
+ 0004:000035CC 00000008 C=BSS      S=.bss     G=DGROUP   M=ImgList  ACBP=A9
+ 0004:000035D4 00000004 C=BSS      S=.bss     G=DGROUP   M=ActnList ACBP=A9
+ 0004:000035D8 00000024 C=BSS      S=.bss     G=DGROUP   M=Forms    ACBP=A9
+ 0004:000035FC 00000030 C=BSS      S=.bss     G=DGROUP   M=Buttons  ACBP=A9
+ 0004:0000362C 00000004 C=BSS      S=.bss     G=DGROUP   M=ExtDlgs  ACBP=A9
+ 0004:00003630 00000004 C=BSS      S=.bss     G=DGROUP   M=Mapi     ACBP=A9
+ 0004:00003634 00000009 C=BSS      S=.bss     G=DGROUP   M=ExtActns ACBP=A9
+ 0004:00003640 00000039 C=BSS      S=.bss     G=DGROUP   M=ComCtrls ACBP=A9
+ 0004:0000367C 00000004 C=BSS      S=.bss     G=DGROUP   M=TeeProcs ACBP=A9
+ 0004:00003680 00000004 C=BSS      S=.bss     G=DGROUP   M=TeEngine ACBP=A9
+ 0004:00003684 00000011 C=BSS      S=.bss     G=DGROUP   M=ComObj   ACBP=A9
+ 0004:00003698 0000001C C=BSS      S=.bss     G=DGROUP   M=VAUtils  ACBP=A9
+ 0004:000036B4 0000000C C=BSS      S=.bss     G=DGROUP   M=CheckLst ACBP=A9
+ 0004:000036C0 00000014 C=BSS      S=.bss     G=DGROUP   M=Chart    ACBP=A9
+ 0004:000036D4 00000095 C=BSS      S=.bss     G=DGROUP   M=ORCtrls  ACBP=A9
+ 0004:0000376C 00000010 C=BSS      S=.bss     G=DGROUP   M=ORFn     ACBP=A9
+ 0004:0000377C 00000004 C=BSS      S=.bss     G=DGROUP   M=OleServer ACBP=A9
+ 0004:00003780 00000018 C=BSS      S=.bss     G=DGROUP   M=VA508MSAASupport ACBP=A9
+ 0004:00003798 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityRouter ACBP=A9
+ 0004:0000379C 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0004:000037A0 00000008 C=BSS      S=.bss     G=DGROUP   M=WideStrings ACBP=A9
+ 0004:000037A8 00000004 C=BSS      S=.bss     G=DGROUP   M=FMTBcd   ACBP=A9
+ 0004:000037AC 00000004 C=BSS      S=.bss     G=DGROUP   M=SqlTimSt ACBP=A9
+ 0004:000037B0 00000020 C=BSS      S=.bss     G=DGROUP   M=DB       ACBP=A9
+ 0004:000037D0 00000004 C=BSS      S=.bss     G=DGROUP   M=DBPWDlg  ACBP=A9
+ 0004:000037D4 00000004 C=BSS      S=.bss     G=DGROUP   M=DBLogDlg ACBP=A9
+ 0004:000037D8 00000004 C=BSS      S=.bss     G=DGROUP   M=DBCtrls  ACBP=A9
+ 0004:000037DC 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508DelphiCompatibility ACBP=A9
+ 0004:000037E0 0000000C C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityManager ACBP=A9
+ 0004:000037EC 00000004 C=BSS      S=.bss     G=DGROUP   M=uConst   ACBP=A9
+ 0004:000037F0 0000000C C=BSS      S=.bss     G=DGROUP   M=fBase508Form ACBP=A9
+ 0004:000037FC 00000004 C=BSS      S=.bss     G=DGROUP   M=ORClasses ACBP=A9
+ 0004:00003800 00000004 C=BSS      S=.bss     G=DGROUP   M=MFunStr  ACBP=A9
+ 0004:00003804 00000004 C=BSS      S=.bss     G=DGROUP   M=Hash     ACBP=A9
+ 0004:00003808 0000001C C=BSS      S=.bss     G=DGROUP   M=AxCtrls  ACBP=A9
+ 0004:00003824 00000014 C=BSS      S=.bss     G=DGROUP   M=OleCtrls ACBP=A9
+ 0004:00003838 00000008 C=BSS      S=.bss     G=DGROUP   M=XWBRich20 ACBP=A9
+ 0004:00003840 00000004 C=BSS      S=.bss     G=DGROUP   M=frmSignonMessage ACBP=A9
+ 0004:00003844 00000004 C=BSS      S=.bss     G=DGROUP   M=fDebugInfo ACBP=A9
+ 0004:00003848 00000018 C=BSS      S=.bss     G=DGROUP   M=Wsockc   ACBP=A9
+ 0004:00003860 00000014 C=BSS      S=.bss     G=DGROUP   M=SelDiv   ACBP=A9
+ 0004:00003874 00000004 C=BSS      S=.bss     G=DGROUP   M=fRPCBErrMsg ACBP=A9
+ 0004:00003878 00000014 C=BSS      S=.bss     G=DGROUP   M=CCOWRPCBroker ACBP=A9
+ 0004:0000388C 00000004 C=BSS      S=.bss     G=DGROUP   M=VCEdit   ACBP=A9
+ 0004:00003890 00000018 C=BSS      S=.bss     G=DGROUP   M=Rpcconf1 ACBP=A9
+ 0004:000038A8 00001004 C=BSS      S=.bss     G=DGROUP   M=RpcNet   ACBP=A9
+ 0004:000048AC 00000010 C=BSS      S=.bss     G=DGROUP   M=Loginfrm ACBP=A9
+ 0004:000048BC 0000001C C=BSS      S=.bss     G=DGROUP   M=Sgnoncnf ACBP=A9
+ 0004:000048D8 00000010 C=BSS      S=.bss     G=DGROUP   M=Trpcb    ACBP=A9
+ 0004:000048E8 00000015 C=BSS      S=.bss     G=DGROUP   M=ORNet    ACBP=A9
+ 0004:00004900 00000004 C=BSS      S=.bss     G=DGROUP   M=fAutoSz  ACBP=A9
+ 0004:00004904 00000004 C=BSS      S=.bss     G=DGROUP   M=AppEvnts ACBP=A9
+ 0004:00004908 00000004 C=BSS      S=.bss     G=DGROUP   M=Tabs     ACBP=A9
+ 0004:0000490C 00000004 C=BSS      S=.bss     G=DGROUP   M=uInit    ACBP=A9
+ 0004:00004910 00000004 C=BSS      S=.bss     G=DGROUP   M=rVitals  ACBP=A9
+ 0004:00004914 0000000C C=BSS      S=.bss     G=DGROUP   M=ORDtTm   ACBP=A9
+ 0004:00004920 00000004 C=BSS      S=.bss     G=DGROUP   M=uVitals  ACBP=A9
+ 0004:00004924 00000004 C=BSS      S=.bss     G=DGROUP   M=uReports ACBP=A9
+ 0004:00004928 00000088 C=BSS      S=.bss     G=DGROUP   M=fGraphData ACBP=A9
+ 0004:000049B0 00000004 C=BSS      S=.bss     G=DGROUP   M=Series   ACBP=A9
+ 0004:000049B4 00000004 C=BSS      S=.bss     G=DGROUP   M=ArrowCha ACBP=A9
+ 0004:000049B8 00000004 C=BSS      S=.bss     G=DGROUP   M=GanttCh  ACBP=A9
+ 0004:000049BC 0000000C C=BSS      S=.bss     G=DGROUP   M=uFormMonitor ACBP=A9
+ 0004:000049C8 00000002 C=BSS      S=.bss     G=DGROUP   M=rLabs    ACBP=A9
+ 0004:000049CC 00000004 C=BSS      S=.bss     G=DGROUP   M=fGraphSettings ACBP=A9
+ 0004:000049D0 0000000C C=BSS      S=.bss     G=DGROUP   M=fGraphs  ACBP=A9
+ 0004:000049DC 00000005 C=BSS      S=.bss     G=DGROUP   M=rTemplates ACBP=A9
+ 0004:000049E4 00000004 C=BSS      S=.bss     G=DGROUP   M=uTemplateFields ACBP=A9
+ 0004:000049E8 00000006 C=BSS      S=.bss     G=DGROUP   M=rReminders ACBP=A9
+ 0004:000049F0 0000000E C=BSS      S=.bss     G=DGROUP   M=fMHTest  ACBP=A9
+ 0004:00004A00 00000012 C=BSS      S=.bss     G=DGROUP   M=rTIU     ACBP=A9
+ 0004:00004A14 00000004 C=BSS      S=.bss     G=DGROUP   M=fPCEBaseGrid ACBP=A9
+ 0004:00004A18 00000004 C=BSS      S=.bss     G=DGROUP   M=ORCtrlsVA508Compatibility ACBP=A9
+ 0004:00004A1C 00000004 C=BSS      S=.bss     G=DGROUP   M=mVisitRelated ACBP=A9
+ 0004:00004A20 00000008 C=BSS      S=.bss     G=DGROUP   M=fGAF     ACBP=A9
+ 0004:00004A28 00000008 C=BSS      S=.bss     G=DGROUP   M=fVisitType ACBP=A9
+ 0004:00004A30 00000008 C=BSS      S=.bss     G=DGROUP   M=fDiagnoses ACBP=A9
+ 0004:00004A38 00000008 C=BSS      S=.bss     G=DGROUP   M=fProcedure ACBP=A9
+ 0004:00004A40 00000008 C=BSS      S=.bss     G=DGROUP   M=fImmunization ACBP=A9
+ 0004:00004A48 00000008 C=BSS      S=.bss     G=DGROUP   M=fSkinTest ACBP=A9
+ 0004:00004A50 00000008 C=BSS      S=.bss     G=DGROUP   M=fPatientEd ACBP=A9
+ 0004:00004A58 00000008 C=BSS      S=.bss     G=DGROUP   M=fHealthFactor ACBP=A9
+ 0004:00004A60 00000004 C=BSS      S=.bss     G=DGROUP   M=fPCEBaseMain ACBP=A9
+ 0004:00004A64 00000008 C=BSS      S=.bss     G=DGROUP   M=fExam    ACBP=A9
+ 0004:00004A6C 00000094 C=BSS      S=.bss     G=DGROUP   M=uConsults ACBP=A9
+ 0004:00004B00 00000004 C=BSS      S=.bss     G=DGROUP   M=rODDiet  ACBP=A9
+ 0004:00004B04 00000030 C=BSS      S=.bss     G=DGROUP   M=fClinicWardMeds ACBP=A9
+ 0004:00004B34 0000000C C=BSS      S=.bss     G=DGROUP   M=rDCSumm  ACBP=A9
+ 0004:00004B40 00000004 C=BSS      S=.bss     G=DGROUP   M=fTemplateDialog ACBP=A9
+ 0004:00004B44 00000004 C=BSS      S=.bss     G=DGROUP   M=mImgText ACBP=A9
+ 0004:00004B48 00000008 C=BSS      S=.bss     G=DGROUP   M=fIconLegend ACBP=A9
+ 0004:00004B50 00000022 C=BSS      S=.bss     G=DGROUP   M=uSpell   ACBP=A9
+ 0004:00004B74 0000000C C=BSS      S=.bss     G=DGROUP   M=fConsMedRslt ACBP=A9
+ 0004:00004B80 00000004 C=BSS      S=.bss     G=DGROUP   M=fRemCoverSheet ACBP=A9
+ 0004:00004B84 0000001C C=BSS      S=.bss     G=DGROUP   M=rODMeds  ACBP=A9
+ 0004:00004BA0 00000007 C=BSS      S=.bss     G=DGROUP   M=fActivateDeactivate ACBP=A9
+ 0004:00004BA8 0000001C C=BSS      S=.bss     G=DGROUP   M=DSIntf   ACBP=A9
+ 0004:00004BC4 00000004 C=BSS      S=.bss     G=DGROUP   M=Provider ACBP=A9
+ 0004:00004BC8 00000004 C=BSS      S=.bss     G=DGROUP   M=DBClient ACBP=A9
+ 0004:00004BCC 0000001C C=BSS      S=.bss     G=DGROUP   M=uODBase  ACBP=A9
+ 0004:00004BE8 00000001 C=BSS      S=.bss     G=DGROUP   M=fPreReq  ACBP=A9
+ 0004:00004BEC 00000004 C=BSS      S=.bss     G=DGROUP   M=mCoPayDesc ACBP=A9
+ 0004:00004BF0 00000028 C=BSS      S=.bss     G=DGROUP   M=fOrdersPrint ACBP=A9
+ 0004:00004C18 00000CD0 C=BSS      S=.bss     G=DGROUP   M=fOrdersSign ACBP=A9
+ 0004:000058E8 0000000A C=BSS      S=.bss     G=DGROUP   M=rSurgery ACBP=A9
+ 0004:000058F4 00000004 C=BSS      S=.bss     G=DGROUP   M=fPCEEdit ACBP=A9
+ 0004:000058F8 00000005 C=BSS      S=.bss     G=DGROUP   M=fNoteProps ACBP=A9
+ 0004:00005900 00000004 C=BSS      S=.bss     G=DGROUP   M=fTemplateAutoGen ACBP=A9
+ 0004:00005904 00000004 C=BSS      S=.bss     G=DGROUP   M=XMLUtils ACBP=A9
+ 0004:00005908 00000051 C=BSS      S=.bss     G=DGROUP   M=fSurgery ACBP=A9
+ 0004:0000595C 00000004 C=BSS      S=.bss     G=DGROUP   M=fLkUpLocation ACBP=A9
+ 0004:00005960 00000008 C=BSS      S=.bss     G=DGROUP   M=fOCSession ACBP=A9
+ 0004:00005968 0000001C C=BSS      S=.bss     G=DGROUP   M=uSignItems ACBP=A9
+ 0004:00005984 00000024 C=BSS      S=.bss     G=DGROUP   M=uProbs   ACBP=A9
+ 0004:000059A8 00000004 C=BSS      S=.bss     G=DGROUP   M=fProbCmt ACBP=A9
+ 0004:000059AC 00000018 C=BSS      S=.bss     G=DGROUP   M=rODAllergy ACBP=A9
+ 0004:000059C4 00000004 C=BSS      S=.bss     G=DGROUP   M=rCover   ACBP=A9
+ 0004:000059C8 00000014 C=BSS      S=.bss     G=DGROUP   M=fvit     ACBP=A9
+ 0004:000059DC 00000020 C=BSS      S=.bss     G=DGROUP   M=fCover   ACBP=A9
+ 0004:000059FC 00000004 C=BSS      S=.bss     G=DGROUP   M=fARTFreeTextMsg ACBP=A9
+ 0004:00005A00 00000004 C=BSS      S=.bss     G=DGROUP   M=fAllgyFind ACBP=A9
+ 0004:00005A04 00000004 C=BSS      S=.bss     G=DGROUP   M=fProbLex ACBP=A9
+ 0004:00005A08 00000004 C=BSS      S=.bss     G=DGROUP   M=fProbEdt ACBP=A9
+ 0004:00005A0C 00000054 C=BSS      S=.bss     G=DGROUP   M=fProbs   ACBP=A9
+ 0004:00005A60 0000003C C=BSS      S=.bss     G=DGROUP   M=fODConsult ACBP=A9
+ 0004:00005A9C 00000004 C=BSS      S=.bss     G=DGROUP   M=fOrdersTS ACBP=A9
+ 0004:00005AA0 00000004 C=BSS      S=.bss     G=DGROUP   M=fMedCopy ACBP=A9
+ 0004:00005AA4 00000004 C=BSS      S=.bss     G=DGROUP   M=mEvntDelay ACBP=A9
+ 0004:00005AA8 00000004 C=BSS      S=.bss     G=DGROUP   M=fOrdersCopy ACBP=A9
+ 0004:00005AAC 00000008 C=BSS      S=.bss     G=DGROUP   M=fOrderFlag ACBP=A9
+ 0004:00005AB4 00000010 C=BSS      S=.bss     G=DGROUP   M=fOrdersAlert ACBP=A9
+ 0004:00005AC4 00000008 C=BSS      S=.bss     G=DGROUP   M=fOrderVw ACBP=A9
+ 0004:00005ACC 00000054 C=BSS      S=.bss     G=DGROUP   M=fMeds    ACBP=A9
+ 0004:00005B20 0000001C C=BSS      S=.bss     G=DGROUP   M=fPrintLocation ACBP=A9
+ 0004:00005B3C 00000048 C=BSS      S=.bss     G=DGROUP   M=fReview  ACBP=A9
+ 0004:00005B84 0000000C C=BSS      S=.bss     G=DGROUP   M=fEncnt   ACBP=A9
+ 0004:00005B90 0000007B C=BSS      S=.bss     G=DGROUP   M=fNotes   ACBP=A9
+ 0004:00005C0C 000000E9 C=BSS      S=.bss     G=DGROUP   M=fEditConsult ACBP=A9
+ 0004:00005CF8 000000E4 C=BSS      S=.bss     G=DGROUP   M=fEditProc ACBP=A9
+ 0004:00005DDC 0000001C C=BSS      S=.bss     G=DGROUP   M=fODProc  ACBP=A9
+ 0004:00005DF8 00000018 C=BSS      S=.bss     G=DGROUP   M=fConsultAct ACBP=A9
+ 0004:00005E10 00000010 C=BSS      S=.bss     G=DGROUP   M=fConsultsView ACBP=A9
+ 0004:00005E20 0000000D C=BSS      S=.bss     G=DGROUP   M=fConsultBS ACBP=A9
+ 0004:00005E30 000000A6 C=BSS      S=.bss     G=DGROUP   M=fConsults ACBP=A9
+ 0004:00005ED8 00000004 C=BSS      S=.bss     G=DGROUP   M=fDCSummProps ACBP=A9
+ 0004:00005EDC 00000077 C=BSS      S=.bss     G=DGROUP   M=fDCSumm  ACBP=A9
+ 0004:00005F54 00000008 C=BSS      S=.bss     G=DGROUP   M=fPrintList ACBP=A9
+ 0004:00005F5C 00000008 C=BSS      S=.bss     G=DGROUP   M=fODMedNVA ACBP=A9
+ 0004:00005F64 00000004 C=BSS      S=.bss     G=DGROUP   M=fIVRoutes ACBP=A9
+ 0004:00005F68 00000004 C=BSS      S=.bss     G=DGROUP   M=IdSysVCL ACBP=A9
+ 0004:00005F6C 00000008 C=BSS      S=.bss     G=DGROUP   M=IdGlobal ACBP=A9
+ 0004:00005F74 00000004 C=BSS      S=.bss     G=DGROUP   M=fOtherSchedule ACBP=A9
+ 0004:00005F78 00000008 C=BSS      S=.bss     G=DGROUP   M=fODMeds  ACBP=A9
+ 0004:00005F80 0000002C C=BSS      S=.bss     G=DGROUP   M=fODLab   ACBP=A9
+ 0004:00005FAC 00000068 C=BSS      S=.bss     G=DGROUP   M=fODBBank ACBP=A9
+ 0004:00006014 00000020 C=BSS      S=.bss     G=DGROUP   M=fODRad   ACBP=A9
+ 0004:00006034 00000040 C=BSS      S=.bss     G=DGROUP   M=fODDiet  ACBP=A9
+ 0004:00006074 00000004 C=BSS      S=.bss     G=DGROUP   M=uEventHooks ACBP=A9
+ 0004:00006078 00000010 C=BSS      S=.bss     G=DGROUP   M=fODBase  ACBP=A9
+ 0004:00006088 00000016 C=BSS      S=.bss     G=DGROUP   M=rODBase  ACBP=A9
+ 0004:000060A0 00000020 C=BSS      S=.bss     G=DGROUP   M=rConsults ACBP=A9
+ 0004:000060C0 00000004 C=BSS      S=.bss     G=DGROUP   M=fNoteSTStop ACBP=A9
+ 0004:000060C4 00000144 C=BSS      S=.bss     G=DGROUP   M=fARTAllgy ACBP=A9
+ 0004:00006208 00000004 C=BSS      S=.bss     G=DGROUP   M=fAllgyBox ACBP=A9
+ 0004:0000620C 00000018 C=BSS      S=.bss     G=DGROUP   M=fVitals  ACBP=A9
+ 0004:00006224 00000008 C=BSS      S=.bss     G=DGROUP   M=fEncVitals ACBP=A9
+ 0004:0000622C 00000049 C=BSS      S=.bss     G=DGROUP   M=rPCE     ACBP=A9
+ 0004:00006278 00000004 C=BSS      S=.bss     G=DGROUP   M=fReminderDialog ACBP=A9
+ 0004:0000627C 00000040 C=BSS      S=.bss     G=DGROUP   M=uReminders ACBP=A9
+ 0004:000062BC 00000004 C=BSS      S=.bss     G=DGROUP   M=uDlgComponents ACBP=A9
+ 0004:000062C0 00000004 C=BSS      S=.bss     G=DGROUP   M=mTemplateFieldButton ACBP=A9
+ 0004:000062C4 00000004 C=BSS      S=.bss     G=DGROUP   M=uVA508CPRSCompatibility ACBP=A9
+ 0004:000062C8 00000004 C=BSS      S=.bss     G=DGROUP   M=fDrawers ACBP=A9
+ 0004:000062CC 00000008 C=BSS      S=.bss     G=DGROUP   M=dShared  ACBP=A9
+ 0004:000062D4 0000000C C=BSS      S=.bss     G=DGROUP   M=uTemplates ACBP=A9
+ 0004:000062E0 00000004 C=BSS      S=.bss     G=DGROUP   M=fReportsAdhocSubItem1 ACBP=A9
+ 0004:000062E4 00000020 C=BSS      S=.bss     G=DGROUP   M=fReportsAdhocComponent1 ACBP=A9
+ 0004:00006304 0000008D C=BSS      S=.bss     G=DGROUP   M=fReports ACBP=A9
+ 0004:00006394 00000018 C=BSS      S=.bss     G=DGROUP   M=rReports ACBP=A9
+ 0004:000063AC 00000008 C=BSS      S=.bss     G=DGROUP   M=fDeviceSelect ACBP=A9
+ 0004:000063B4 00000008 C=BSS      S=.bss     G=DGROUP   M=uPCE     ACBP=A9
+ 0004:000063BC 00000008 C=BSS      S=.bss     G=DGROUP   M=fPCEBase ACBP=A9
+ 0004:000063C4 00000020 C=BSS      S=.bss     G=DGROUP   M=fEncounterFrame ACBP=A9
+ 0004:000063E4 00000010 C=BSS      S=.bss     G=DGROUP   M=UBACore  ACBP=A9
+ 0004:000063F4 00000008 C=BSS      S=.bss     G=DGROUP   M=fPtSelDemog ACBP=A9
+ 0004:000063FC 00000004 C=BSS      S=.bss     G=DGROUP   M=fPtSelOptSave ACBP=A9
+ 0004:00006400 00000010 C=BSS      S=.bss     G=DGROUP   M=fPtSelOptns ACBP=A9
+ 0004:00006410 00000008 C=BSS      S=.bss     G=DGROUP   M=fAlertForward ACBP=A9
+ 0004:00006418 00000020 C=BSS      S=.bss     G=DGROUP   M=fPtSel   ACBP=A9
+ 0004:00006438 0000009D C=BSS      S=.bss     G=DGROUP   M=fLabs    ACBP=A9
+ 0004:000064D8 00000004 C=BSS      S=.bss     G=DGROUP   M=fSplash  ACBP=A9
+ 0004:000064DC 00000004 C=BSS      S=.bss     G=DGROUP   M=fLabInfo ACBP=A9
+ 0004:000064E0 00000038 C=BSS      S=.bss     G=DGROUP   M=fBAOptionsDiagnoses ACBP=A9
+ 0004:00006518 00000008 C=BSS      S=.bss     G=DGROUP   M=fOptionsSurrogate ACBP=A9
+ 0004:00006520 00000028 C=BSS      S=.bss     G=DGROUP   M=fFrame   ACBP=A9
+ 0004:00006548 00000051 C=BSS      S=.bss     G=DGROUP   M=fBALocalDiagnoses ACBP=A9
+ 0004:0000659C 000000D4 C=BSS      S=.bss     G=DGROUP   M=UBAGlobals ACBP=A9
+ 0004:00006670 0000000D C=BSS      S=.bss     G=DGROUP   M=rOrders  ACBP=A9
+ 0004:00006680 0000003C C=BSS      S=.bss     G=DGROUP   M=fOrders  ACBP=A9
+ 0004:000066BC 00000014 C=BSS      S=.bss     G=DGROUP   M=rMisc    ACBP=A9
+ 0004:000066D0 00000090 C=BSS      S=.bss     G=DGROUP   M=uOrders  ACBP=A9
+ 0004:00006760 00000004 C=BSS      S=.bss     G=DGROUP   M=rCore    ACBP=A9
+ 0004:00006764 00000048 C=BSS      S=.bss     G=DGROUP   M=uCore    ACBP=A9
+ 0004:000067AC 00000004 C=BSS      S=.bss     G=DGROUP   M=fPage    ACBP=A9
+ 0004:000067B0 00000004 C=BSS      S=.bss     G=DGROUP   M=fAResize ACBP=A9
+ 0005:00000000 00000008 C=TLS      S=.tls     G=(none)   M=System   ACBP=A9
+ 0005:00000008 00000008 C=TLS      S=.tls     G=(none)   M=Classes  ACBP=A9
+ 0005:00000010 00000030 C=TLS      S=.tls     G=(none)   M=GraphUtil ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0001:00007B10       ActiveX.CLSIDFromProgID
+ 0001:00007B00       ActiveX.CLSIDFromString
+ 0001:00007AF0       ActiveX.CoCreateInstance
+ 0001:00007AE8       ActiveX.CoGetClassObject
+ 0001:00007AD8       ActiveX.CoInitialize
+ 0001:00007B18       ActiveX.CoTaskMemAlloc
+ 0001:00007B20       ActiveX.CoTaskMemFree
+ 0001:00007AE0       ActiveX.CoUninitialize
+ 0001:00007B90       ActiveX.CreateErrorInfo
+ 0001:00007B40       ActiveX.CreateStreamOnHGlobal
+ 0001:00007B70       ActiveX.DispGetIDsOfNames
+ 0001:00007B78       ActiveX.GetActiveObject
+ 0001:00007B88       ActiveX.GetErrorInfo
+ 0003:000007BC       ActiveX.GUID_NULL
+ 0001:00007B38       ActiveX.IsAccelerator
+ 0001:00007AD0       ActiveX.IsEqualIID
+ 0001:00007B60       ActiveX.LoadRegTypeLib
+ 0001:00007B58       ActiveX.LoadTypeLib
+ 0001:00007B30       ActiveX.OleDraw
+ 0001:00007B28       ActiveX.OleSetMenuDescriptor
+ 0001:00007B08       ActiveX.ProgIDFromCLSID
+ 0001:00007B68       ActiveX.RegisterTypeLib
+ 0001:00007B80       ActiveX.SetErrorInfo
+ 0001:00007AF8       ActiveX.StringFromCLSID
+ 0001:00007B48       ActiveX.SysFreeString
+ 0001:00007B50       ActiveX.VariantInit
+ 0004:000035D4       ActnList..9
+ 0001:00073284       ActnList..TActionLink
+ 0001:00072DDC       ActnList..TContainedAction
+ 0001:0007317C       ActnList..TCustomAction
+ 0001:00072F44       ActnList..TCustomActionList
+ 0001:00073024       ActnList..TShortCutList
+ 0002:00000698       ActnList.ActnList
+ 0001:000741B8       ActnList.Finalization
+ 0001:00073974       ActnList.TActionLink.IsCaptionLinked
+ 0001:00073988       ActnList.TActionLink.IsCheckedLinked
+ 0001:0007399C       ActnList.TActionLink.IsEnabledLinked
+ 0001:000739B0       ActnList.TActionLink.IsGroupIndexLinked
+ 0001:000739C4       ActnList.TActionLink.IsHelpContextLinked
+ 0001:000739D8       ActnList.TActionLink.IsHelpLinked
+ 0001:000739EC       ActnList.TActionLink.IsHintLinked
+ 0001:00073A00       ActnList.TActionLink.IsImageIndexLinked
+ 0001:00073A14       ActnList.TActionLink.IsShortCutLinked
+ 0001:00073A28       ActnList.TActionLink.IsVisibleLinked
+ 0001:00073A3C       ActnList.TActionLink.SetAutoCheck
+ 0001:00073A40       ActnList.TActionLink.SetCaption
+ 0001:00073A44       ActnList.TActionLink.SetChecked
+ 0001:00073A48       ActnList.TActionLink.SetEnabled
+ 0001:00073A4C       ActnList.TActionLink.SetGroupIndex
+ 0001:00073A50       ActnList.TActionLink.SetHelpContext
+ 0001:00073A54       ActnList.TActionLink.SetHelpKeyword
+ 0001:00073A58       ActnList.TActionLink.SetHelpType
+ 0001:00073A5C       ActnList.TActionLink.SetHint
+ 0001:00073A60       ActnList.TActionLink.SetImageIndex
+ 0001:00073A64       ActnList.TActionLink.SetShortCut
+ 0001:00073A68       ActnList.TActionLink.SetVisible
+ 0001:00073354       ActnList.TContainedAction.Destroy
+ 0001:000734C0       ActnList.TContainedAction.Execute
+ 0001:00073388       ActnList.TContainedAction.GetIndex
+ 0001:000733A4       ActnList.TContainedAction.GetParentComponent
+ 0001:000733B4       ActnList.TContainedAction.HasParent
+ 0001:000733A0       ActnList.TContainedAction.IsCategoryStored
+ 0001:000733C4       ActnList.TContainedAction.ReadState
+ 0001:0007346C       ActnList.TContainedAction.SetActionList
+ 0001:00073440       ActnList.TContainedAction.SetCategory
+ 0001:000733F8       ActnList.TContainedAction.SetIndex
+ 0001:00073494       ActnList.TContainedAction.SetParentComponent
+ 0001:00073518       ActnList.TContainedAction.Update
+ 0001:00073B10       ActnList.TCustomAction.AssignTo
+ 0001:00073A6C       ActnList.TCustomAction.Create
+ 0001:00073AC0       ActnList.TCustomAction.Destroy
+ 0001:00074030       ActnList.TCustomAction.DoHint
+ 0001:00074058       ActnList.TCustomAction.Execute
+ 0001:000740BC       ActnList.TCustomAction.GetSecondaryShortCuts
+ 0001:0007413C       ActnList.TCustomAction.HandleShortCut
+ 0001:00074118       ActnList.TCustomAction.IsSecondaryShortCutsStored
+ 0001:00073BC0       ActnList.TCustomAction.SetCaption
+ 0001:00073C20       ActnList.TCustomAction.SetChecked
+ 0001:00073D28       ActnList.TCustomAction.SetEnabled
+ 0001:00073E0C       ActnList.TCustomAction.SetHelpContext
+ 0001:00073DA4       ActnList.TCustomAction.SetHelpKeyword
+ 0001:00073E64       ActnList.TCustomAction.SetHint
+ 0001:00073EC4       ActnList.TCustomAction.SetImageIndex
+ 0001:00073FE4       ActnList.TCustomAction.SetName
+ 0001:000740E4       ActnList.TCustomAction.SetSecondaryShortCuts
+ 0001:00073F20       ActnList.TCustomAction.SetShortCut
+ 0001:00073F84       ActnList.TCustomAction.SetVisible
+ 0001:00073748       ActnList.TCustomActionList.AddAction
+ 0001:00073784       ActnList.TCustomActionList.Change
+ 0001:00073570       ActnList.TCustomActionList.Create
+ 0001:000735DC       ActnList.TCustomActionList.Destroy
+ 0001:00073890       ActnList.TCustomActionList.ExecuteAction
+ 0001:000736A4       ActnList.TCustomActionList.GetAction
+ 0001:000736B8       ActnList.TCustomActionList.GetActionCount
+ 0001:0007362C       ActnList.TCustomActionList.GetChildren
+ 0001:000736F4       ActnList.TCustomActionList.ImageListChange
+ 0001:000737EC       ActnList.TCustomActionList.IsShortCut
+ 0001:00073700       ActnList.TCustomActionList.Notification
+ 0001:00073768       ActnList.TCustomActionList.RemoveAction
+ 0001:00073674       ActnList.TCustomActionList.SetChildOrder
+ 0001:000736C0       ActnList.TCustomActionList.SetImages
+ 0001:000738D0       ActnList.TCustomActionList.SetState
+ 0001:000738B0       ActnList.TCustomActionList.UpdateAction
+ 0001:00074148       ActnList.TShortCutList.Add
+ 0001:00074174       ActnList.TShortCutList.IndexOfShortCut
+ 0001:0011EF14       AddServer..TfrmAddServer
+ 0004:00004904       AppEvnts..3
+ 0001:00128134       AppEvnts..TApplicationEvents
+ 0001:00128068       AppEvnts..TCustomApplicationEvents
+ 0001:00128448       AppEvnts..TMultiCaster
+ 0002:00000EC0       AppEvnts.AppEvnts
+ 0001:0012929C       AppEvnts.Finalization
+ 0003:000032C0       AppEvnts.MultiCaster
+ 0001:001284FC       AppEvnts.TCustomApplicationEvents.Create
+ 0001:00128548       AppEvnts.TCustomApplicationEvents.DoActionExecute
+ 0001:0012855C       AppEvnts.TCustomApplicationEvents.DoActionUpdate
+ 0001:00128570       AppEvnts.TCustomApplicationEvents.DoActivate
+ 0001:00128584       AppEvnts.TCustomApplicationEvents.DoDeactivate
+ 0001:00128598       AppEvnts.TCustomApplicationEvents.DoException
+ 0001:001285C8       AppEvnts.TCustomApplicationEvents.DoHelp
+ 0001:001285E8       AppEvnts.TCustomApplicationEvents.DoHint
+ 0001:00128660       AppEvnts.TCustomApplicationEvents.DoIdle
+ 0001:00128674       AppEvnts.TCustomApplicationEvents.DoMessage
+ 0001:00128688       AppEvnts.TCustomApplicationEvents.DoMinimize
+ 0001:00128728       AppEvnts.TCustomApplicationEvents.DoModalBegin
+ 0001:00128744       AppEvnts.TCustomApplicationEvents.DoModalEnd
+ 0001:0012869C       AppEvnts.TCustomApplicationEvents.DoRestore
+ 0001:001286FC       AppEvnts.TCustomApplicationEvents.DoSettingChange
+ 0001:001286B8       AppEvnts.TCustomApplicationEvents.DoShortcut
+ 0001:001286D4       AppEvnts.TCustomApplicationEvents.DoShowHint
+ 0001:00128760       AppEvnts.TMultiCaster.AddAppEvent
+ 0001:00128780       AppEvnts.TMultiCaster.BeginDispatch
+ 0001:00128784       AppEvnts.TMultiCaster.Create
+ 0001:001288FC       AppEvnts.TMultiCaster.Destroy
+ 0001:00128A38       AppEvnts.TMultiCaster.DoActionExecute
+ 0001:00128AB4       AppEvnts.TMultiCaster.DoActionUpdate
+ 0001:00128B30       AppEvnts.TMultiCaster.DoActivate
+ 0001:00128BA4       AppEvnts.TMultiCaster.DoDeactivate
+ 0001:00128C18       AppEvnts.TMultiCaster.DoException
+ 0001:00128CD4       AppEvnts.TMultiCaster.DoHelp
+ 0001:00128D74       AppEvnts.TMultiCaster.DoHint
+ 0001:00128DE8       AppEvnts.TMultiCaster.DoIdle
+ 0001:00128E64       AppEvnts.TMultiCaster.DoMessage
+ 0001:00128EE0       AppEvnts.TMultiCaster.DoMinimize
+ 0001:001291B4       AppEvnts.TMultiCaster.DoModalBegin
+ 0001:00129228       AppEvnts.TMultiCaster.DoModalEnd
+ 0001:00128F54       AppEvnts.TMultiCaster.DoRestore
+ 0001:001290C4       AppEvnts.TMultiCaster.DoSettingChange
+ 0001:00128FC8       AppEvnts.TMultiCaster.DoShortcut
+ 0001:00129044       AppEvnts.TMultiCaster.DoShowHint
+ 0001:00129148       AppEvnts.TMultiCaster.EndDispatch
+ 0001:00129198       AppEvnts.TMultiCaster.GetAppEvents
+ 0001:001291AC       AppEvnts.TMultiCaster.GetCount
+ 0004:000049B4       ArrowCha..2
+ 0001:0014323C       ArrowCha..TArrowSeries
+ 0002:00000F48       ArrowCha.ArrowCha
+ 0001:00143A2C       ArrowCha.Finalization
+ 0001:00143620       ArrowCha.TArrowSeries.AddArrow
+ 0001:001434FC       ArrowCha.TArrowSeries.Create
+ 0001:001437B0       ArrowCha.TArrowSeries.DrawValue
+ 0001:00143688       ArrowCha.TArrowSeries.FillSampleValues
+ 0001:0014378C       ArrowCha.TArrowSeries.GetArrowHeight
+ 0001:00143780       ArrowCha.TArrowSeries.GetArrowWidth
+ 0001:0014397C       ArrowCha.TArrowSeries.GetEditorClass
+ 0001:001439AC       ArrowCha.TArrowSeries.GetStartXValues
+ 0001:001439BC       ArrowCha.TArrowSeries.GetStartYValues
+ 0001:00143A18       ArrowCha.TArrowSeries.IsValidSourceOf
+ 0001:0014389C       ArrowCha.TArrowSeries.MaxXValue
+ 0001:0014390C       ArrowCha.TArrowSeries.MaxYValue
+ 0001:001438D4       ArrowCha.TArrowSeries.MinXValue
+ 0001:00143944       ArrowCha.TArrowSeries.MinYValue
+ 0001:001439CC       ArrowCha.TArrowSeries.PrepareForGallery
+ 0001:001437A4       ArrowCha.TArrowSeries.SetArrowHeight
+ 0001:00143798       ArrowCha.TArrowSeries.SetArrowWidth
+ 0001:00143600       ArrowCha.TArrowSeries.SetEndXValues
+ 0001:00143610       ArrowCha.TArrowSeries.SetEndYValues
+ 0001:001439B4       ArrowCha.TArrowSeries.SetStartXValues
+ 0001:001439C4       ArrowCha.TArrowSeries.SetStartYValues
+ 0004:00003808       AxCtrls..02
+ 0001:0010E784       AxCtrls..TAdapterNotifier
+ 0001:0010E698       AxCtrls..TCustomAdapter
+ 0001:0010E8A0       AxCtrls..TFontAdapter
+ 0001:0010EA24       AxCtrls..TOleGraphic
+ 0001:0010E9C0       AxCtrls..TPictureAdapter
+ 0002:00000D70       AxCtrls.AxCtrls
+ 0001:0010FDA8       AxCtrls.Finalization
+ 0001:0010EB4C       AxCtrls.GetFontAccess
+ 0001:0010EBEC       AxCtrls.GetOleFont
+ 0001:0010ECA4       AxCtrls.GetOlePicture
+ 0001:0010EB9C       AxCtrls.GetPictureAccess
+ 0001:0010EB20       AxCtrls.HandleException
+ 0001:0010F8B4       AxCtrls.HIMETRICtoDP
+ 0001:0010FC04       AxCtrls.InitOlePro32
+ 0001:0010F9CC       AxCtrls.InvalidOperation
+ 0001:0010FCF4       AxCtrls.OleCreateFontIndirect
+ 0001:0010FD10       AxCtrls.OleCreatePictureIndirect
+ 0001:0010FD38       AxCtrls.OleLoadPicture
+ 0004:00003810       AxCtrls.OlePro32DLL
+ 0001:0010EC3C       AxCtrls.SetOleFont
+ 0001:0010EE34       AxCtrls.TAdapterNotifier.Create
+ 0001:0010EE70       AxCtrls.TAdapterNotifier.OnChanged
+ 0001:0010EEB8       AxCtrls.TAdapterNotifier.OnRequestEdit
+ 0001:0010ED74       AxCtrls.TCustomAdapter.Changed
+ 0001:0010ED80       AxCtrls.TCustomAdapter.ConnectOleObject
+ 0001:0010ECF4       AxCtrls.TCustomAdapter.Create
+ 0001:0010ED48       AxCtrls.TCustomAdapter.Destroy
+ 0001:0010EE04       AxCtrls.TCustomAdapter.ReleaseOleObject
+ 0001:0010F0CC       AxCtrls.TFontAdapter.Changed
+ 0001:0010EEC4       AxCtrls.TFontAdapter.Create
+ 0001:0010F268       AxCtrls.TFontAdapter.GetOleFont
+ 0001:0010F3C8       AxCtrls.TFontAdapter.SetOleFont
+ 0001:0010EF00       AxCtrls.TFontAdapter.Update
+ 0001:0010F744       AxCtrls.TOleGraphic.Assign
+ 0001:0010F778       AxCtrls.TOleGraphic.Changed
+ 0001:0010F77C       AxCtrls.TOleGraphic.Draw
+ 0001:0010F888       AxCtrls.TOleGraphic.GetEmpty
+ 0001:0010F8FC       AxCtrls.TOleGraphic.GetHeight
+ 0001:0010F92C       AxCtrls.TOleGraphic.GetMMHeight
+ 0001:0010F948       AxCtrls.TOleGraphic.GetMMWidth
+ 0001:0010F964       AxCtrls.TOleGraphic.GetPalette
+ 0001:0010F980       AxCtrls.TOleGraphic.GetTransparent
+ 0001:0010F9A0       AxCtrls.TOleGraphic.GetWidth
+ 0001:0010FB6C       AxCtrls.TOleGraphic.LoadFromClipboardFormat
+ 0001:0010FA94       AxCtrls.TOleGraphic.LoadFromFile
+ 0001:0010FA98       AxCtrls.TOleGraphic.LoadFromStream
+ 0001:0010FBB8       AxCtrls.TOleGraphic.SaveToClipboardFormat
+ 0001:0010FAE8       AxCtrls.TOleGraphic.SaveToStream
+ 0001:0010F9E4       AxCtrls.TOleGraphic.SetHeight
+ 0001:0010FA2C       AxCtrls.TOleGraphic.SetPalette
+ 0001:0010FA4C       AxCtrls.TOleGraphic.SetWidth
+ 0001:0010F434       AxCtrls.TPictureAdapter.Create
+ 0001:0010F4FC       AxCtrls.TPictureAdapter.GetOlePicture
+ 0001:0010F730       AxCtrls.TPictureAdapter.SetOlePicture
+ 0001:0010F470       AxCtrls.TPictureAdapter.Update
+ 0004:0000380C       AxCtrls.xParkingWindow
+ 0004:00003818       AxCtrls._OleCreateFontIndirect
+ 0004:0000381C       AxCtrls._OleCreatePictureIndirect
+ 0004:00003814       AxCtrls._OleCreatePropertyFrame
+ 0004:00003820       AxCtrls._OleLoadPicture
+ 0004:000035FC       Buttons..5
+ 0001:0008462C       Buttons..TBitBtn
+ 0001:000844C0       Buttons..TBitBtnActionLink
+ 0001:00084D24       Buttons..TButtonGlyph
+ 0001:00084CCC       Buttons..TGlyphCache
+ 0001:00084C0C       Buttons..TGlyphList
+ 0001:00083ED4       Buttons..TSpeedButton
+ 0001:00083DDC       Buttons..TSpeedButtonActionLink
+ 0003:00001CD0       Buttons.BitBtnCaptions
+ 0004:00003600       Buttons.BitBtnGlyphs
+ 0003:00001CFC       Buttons.BitBtnModalResults
+ 0003:00001CA4       Buttons.BitBtnResNames
+ 0003:00001D2C       Buttons.ButtonCount
+ 0002:00000710       Buttons.Buttons
+ 0001:000877D8       Buttons.DestroyLocals
+ 0003:00001D30       Buttons.DownStyles
+ 0003:00001D38       Buttons.FillStyles
+ 0001:000879EC       Buttons.Finalization
+ 0001:00084B80       Buttons.GetBitBtnGlyph
+ 0003:00001D28       Buttons.GlyphCache
+ 0003:00001D40       Buttons.NewState
+ 0001:0008771C       Buttons.TBitBtn.ActionChange
+ 0001:00086E58       Buttons.TBitBtn.Click
+ 0001:0008732C       Buttons.TBitBtn.CMEnabledChanged
+ 0001:00087314       Buttons.TBitBtn.CMFontChanged
+ 0001:000877F4       Buttons.TBitBtn.CMMouseEnter
+ 0001:00087830       Buttons.TBitBtn.CMMouseLeave
+ 0001:00086ED8       Buttons.TBitBtn.CNDrawItem
+ 0001:00086EC8       Buttons.TBitBtn.CNMeasureItem
+ 0001:00087698       Buttons.TBitBtn.CopyImage
+ 0001:00086D18       Buttons.TBitBtn.Create
+ 0001:00086E08       Buttons.TBitBtn.CreateHandle
+ 0001:00086E34       Buttons.TBitBtn.CreateParams
+ 0001:00086DCC       Buttons.TBitBtn.Destroy
+ 0001:00086EE4       Buttons.TBitBtn.DrawItem
+ 0001:00087864       Buttons.TBitBtn.GetActionLinkClass
+ 0001:00087390       Buttons.TBitBtn.GetGlyph
+ 0001:000875A0       Buttons.TBitBtn.GetKind
+ 0001:00087628       Buttons.TBitBtn.GetNumGlyphs
+ 0001:00087358       Buttons.TBitBtn.GetPalette
+ 0001:0008739C       Buttons.TBitBtn.GlyphChanged
+ 0001:000873A8       Buttons.TBitBtn.IsCustom
+ 0001:000874E0       Buttons.TBitBtn.IsCustomCaption
+ 0001:00086E44       Buttons.TBitBtn.SetButtonStyle
+ 0001:0008736C       Buttons.TBitBtn.SetGlyph
+ 0001:000873D4       Buttons.TBitBtn.SetKind
+ 0001:00087610       Buttons.TBitBtn.SetLayout
+ 0001:0008767C       Buttons.TBitBtn.SetMargin
+ 0001:00087634       Buttons.TBitBtn.SetNumGlyphs
+ 0001:00087664       Buttons.TBitBtn.SetSpacing
+ 0001:000873BC       Buttons.TBitBtn.SetStyle
+ 0001:00087344       Buttons.TBitBtn.WMLButtonDblClk
+ 0001:0008786C       Buttons.TBitBtnActionLink.AssignClient
+ 0001:00087890       Buttons.TBitBtnActionLink.Create
+ 0001:000878CC       Buttons.TBitBtnActionLink.IsImageIndexLinked
+ 0001:000878FC       Buttons.TBitBtnActionLink.SetImageIndex
+ 0001:000859D0       Buttons.TButtonGlyph.CalcButtonLayout
+ 0001:00084FB0       Buttons.TButtonGlyph.Create
+ 0001:000851B0       Buttons.TButtonGlyph.CreateButtonGlyph
+ 0001:00085040       Buttons.TButtonGlyph.Destroy
+ 0001:00085D14       Buttons.TButtonGlyph.Draw
+ 0001:00085784       Buttons.TButtonGlyph.DrawButtonGlyph
+ 0001:000858E0       Buttons.TButtonGlyph.DrawButtonText
+ 0001:000850E0       Buttons.TButtonGlyph.GlyphChanged
+ 0001:0008509C       Buttons.TButtonGlyph.Invalidate
+ 0001:00085110       Buttons.TButtonGlyph.SetGlyph
+ 0001:00085188       Buttons.TButtonGlyph.SetNumGlyphs
+ 0001:00084EAC       Buttons.TGlyphCache.Create
+ 0001:00084EF0       Buttons.TGlyphCache.Destroy
+ 0001:00084FA4       Buttons.TGlyphCache.Empty
+ 0001:00084F20       Buttons.TGlyphCache.GetList
+ 0001:00084F80       Buttons.TGlyphCache.ReturnList
+ 0001:00084E50       Buttons.TGlyphList.AddMasked
+ 0001:00084E04       Buttons.TGlyphList.AllocateIndex
+ 0001:00084D80       Buttons.TGlyphList.CreateSize
+ 0001:00084E7C       Buttons.TGlyphList.Delete
+ 0001:00084DD4       Buttons.TGlyphList.Destroy
+ 0001:00086C44       Buttons.TSpeedButton.ActionChange
+ 0001:00086710       Buttons.TSpeedButton.Click
+ 0001:00086994       Buttons.TSpeedButton.CMButtonPressed
+ 0001:00086A08       Buttons.TSpeedButton.CMDialogChar
+ 0001:00086960       Buttons.TSpeedButton.CMEnabledChanged
+ 0001:00086AA0       Buttons.TSpeedButton.CMFontChanged
+ 0001:00086AE4       Buttons.TSpeedButton.CMMouseEnter
+ 0001:00086B58       Buttons.TSpeedButton.CMMouseLeave
+ 0001:00086AC0       Buttons.TSpeedButton.CMSysColorChange
+ 0001:00086AB0       Buttons.TSpeedButton.CMTextChanged
+ 0001:00086BC0       Buttons.TSpeedButton.CopyImage
+ 0001:00085F40       Buttons.TSpeedButton.Create
+ 0001:00086000       Buttons.TSpeedButton.Destroy
+ 0001:0008672C       Buttons.TSpeedButton.GetActionLinkClass
+ 0001:00086734       Buttons.TSpeedButton.GetGlyph
+ 0001:0008675C       Buttons.TSpeedButton.GetNumGlyphs
+ 0001:00086718       Buttons.TSpeedButton.GetPalette
+ 0001:00086798       Buttons.TSpeedButton.GlyphChanged
+ 0001:000864E0       Buttons.TSpeedButton.Loaded
+ 0001:0008650C       Buttons.TSpeedButton.MouseDown
+ 0001:00086568       Buttons.TSpeedButton.MouseMove
+ 0001:00086610       Buttons.TSpeedButton.MouseUp
+ 0001:00086038       Buttons.TSpeedButton.Paint
+ 0001:00086928       Buttons.TSpeedButton.SetAllowAllUp
+ 0001:000867E0       Buttons.TSpeedButton.SetDown
+ 0001:00086850       Buttons.TSpeedButton.SetFlat
+ 0001:00086740       Buttons.TSpeedButton.SetGlyph
+ 0001:00086870       Buttons.TSpeedButton.SetGroupIndex
+ 0001:00086884       Buttons.TSpeedButton.SetLayout
+ 0001:000868A4       Buttons.TSpeedButton.SetMargin
+ 0001:00086768       Buttons.TSpeedButton.SetNumGlyphs
+ 0001:000868C8       Buttons.TSpeedButton.SetSpacing
+ 0001:000868E8       Buttons.TSpeedButton.SetTransparent
+ 0001:000867A8       Buttons.TSpeedButton.UpdateExclusive
+ 0001:0008647C       Buttons.TSpeedButton.UpdateTracking
+ 0001:0008693C       Buttons.TSpeedButton.WMLButtonDblClk
+ 0001:00085D88       Buttons.TSpeedButtonActionLink.AssignClient
+ 0001:00085DAC       Buttons.TSpeedButtonActionLink.Create
+ 0001:00085DE8       Buttons.TSpeedButtonActionLink.IsCheckedLinked
+ 0001:00085E34       Buttons.TSpeedButtonActionLink.IsGroupIndexLinked
+ 0001:00085E64       Buttons.TSpeedButtonActionLink.IsImageIndexLinked
+ 0001:00085E94       Buttons.TSpeedButtonActionLink.SetChecked
+ 0001:00085EB4       Buttons.TSpeedButtonActionLink.SetGroupIndex
+ 0001:00085ED4       Buttons.TSpeedButtonActionLink.SetImageIndex
+ 0001:000FB6EC       Calendar..TCalendar
+ 0003:00002E40       Calendar.DaysInMonth
+ 0001:000FBEC0       Calendar.TCalendar.Change
+ 0001:000FC314       Calendar.TCalendar.ChangeMonth
+ 0001:000FBEE0       Calendar.TCalendar.Click
+ 0001:000FBE10       Calendar.TCalendar.Create
+ 0001:000FBF90       Calendar.TCalendar.DaysPerMonth
+ 0001:000FBFC0       Calendar.TCalendar.DaysThisMonth
+ 0001:000FBFEC       Calendar.TCalendar.DrawCell
+ 0001:000FC09C       Calendar.TCalendar.GetCellText
+ 0001:000FC1C0       Calendar.TCalendar.GetDateElement
+ 0001:000FBF54       Calendar.TCalendar.IsLeapYear
+ 0001:000FC414       Calendar.TCalendar.NextMonth
+ 0001:000FC408       Calendar.TCalendar.PrevMonth
+ 0001:000FC110       Calendar.TCalendar.SelectCell
+ 0001:000FC18C       Calendar.TCalendar.SetCalendarDate
+ 0001:000FC20C       Calendar.TCalendar.SetDateElement
+ 0001:000FC2C4       Calendar.TCalendar.SetStartOfWeek
+ 0001:000FC2E4       Calendar.TCalendar.SetUseCurrentDate
+ 0001:000FC420       Calendar.TCalendar.UpdateCalendar
+ 0001:000FC51C       Calendar.TCalendar.WMSize
+ 0004:00003878       CCOWRPCBroker..2
+ 0001:0011C730       CCOWRPCBroker..TCCOWRPCBroker
+ 0001:0011D1D8       CCOWRPCBroker.AuthenticateUser
+ 0002:00000E00       CCOWRPCBroker.CCOWRPCBroker
+ 0004:0000387C       CCOWRPCBroker.CCOWToken
+ 0003:00003280       CCOWRPCBroker.CURRENT_RPC_VERSION
+ 0004:00003880       CCOWRPCBroker.Domain
+ 0001:0011E2E8       CCOWRPCBroker.Finalization
+ 0003:0000327C       CCOWRPCBroker.NoMore
+ 0004:00003884       CCOWRPCBroker.PassCode1
+ 0004:00003888       CCOWRPCBroker.PassCode2
+ 0001:0011D82C       CCOWRPCBroker.TCCOWRPCBroker.CCOWsetUser
+ 0001:0011D6E4       CCOWRPCBroker.TCCOWRPCBroker.GetCCOWHandle
+ 0001:0011DBBC       CCOWRPCBroker.TCCOWRPCBroker.GetCCOWtoken
+ 0001:0011D094       CCOWRPCBroker.TCCOWRPCBroker.IsUserCleared
+ 0001:0011DECC       CCOWRPCBroker.TCCOWRPCBroker.IsUserContextPending
+ 0001:0011C894       CCOWRPCBroker.TCCOWRPCBroker.SetConnected
+ 0001:0011D08C       CCOWRPCBroker.TCCOWRPCBroker.WasUserDefined
+ 0004:000036D0       Chart..31
+ 0001:000CE31C       Chart..LegendException
+ 0001:000CEE5C       Chart..TChart
+ 0001:000CE000       Chart..TChartBrush
+ 0001:000CE4A8       Chart..TChartLegend
+ 0001:000CE7E4       Chart..TChartTitle
+ 0001:000CE13C       Chart..TChartWall
+ 0001:000CEC6C       Chart..TCustomChart
+ 0001:000CE3F8       Chart..TCustomChartLegend
+ 0001:000CE0A8       Chart..TCustomChartWall
+ 0001:000CFEEC       Chart..TTeeSeriesType
+ 0001:000CFF48       Chart..TTeeSeriesTypes
+ 0004:000036C0       Chart.AnimatedZoomFactor
+ 0001:000D14DC       Chart.CalcAxisScale
+ 0001:000D31C8       Chart.CalcHorizMargin
+ 0001:000D3150       Chart.CalcHorizontalColsRows
+ 0001:000D2AD4       Chart.CalcMaxLegendValues
+ 0001:000D22F4       Chart.CalcSeriesAxisRect
+ 0001:000D31FC       Chart.CalcVertMargin
+ 0002:00000884       Chart.Chart
+ 0001:000D1860       Chart.CheckBackground
+ 0001:000D1B6C       Chart.CheckMouseSeries
+ 0001:000D1790       Chart.CheckZoomPanning
+ 0001:000D15F4       Chart.ClickedAxis
+ 0001:000D37F0       Chart.ClickedRow
+ 0001:000D2FAC       Chart.DrawLegendBackground
+ 0001:000D2D1C       Chart.DrawLegendItem
+ 0001:000D0E74       Chart.DrawTitleFoot
+ 0001:000D049C       Chart.DrawTitleLine
+ 0001:000D3B04       Chart.Finalization
+ 0001:000CFFB4       Chart.GetDefaultPattern
+ 0001:000D1C34       Chart.PanAxis
+ 0003:0000263C       Chart.PatternPalette
+ 0001:000D0FA4       Chart.PrepareWallCanvas
+ 0001:000D1AD8       Chart.ProcessPanning
+ 0001:000D3A78       Chart.RegisterTeeBasicFunction
+ 0001:000D3A60       Chart.RegisterTeeFunction
+ 0001:000D3A48       Chart.RegisterTeeSeries
+ 0001:000D395C       Chart.RegisterTeeSeriesFunction
+ 0001:000D0CF8       Chart.RestoreAxisScales
+ 0001:000D0C88       Chart.SaveAxisScales
+ 0001:000CFFCC       Chart.TChartBrush.Create
+ 0001:000D0020       Chart.TChartBrush.HasBitmap
+ 0001:000D02AC       Chart.TChartTitle.Assign
+ 0001:000D045C       Chart.TChartTitle.Clicked
+ 0001:000D01DC       Chart.TChartTitle.Create
+ 0001:000D03B0       Chart.TChartTitle.Destroy
+ 0001:000D0568       Chart.TChartTitle.Draw
+ 0001:000D0310       Chart.TChartTitle.IsFontStored
+ 0001:000D0414       Chart.TChartTitle.SetAdjustFrame
+ 0001:000D0424       Chart.TChartTitle.SetAlignment
+ 0001:000D0434       Chart.TChartTitle.SetBrush
+ 0001:000D0440       Chart.TChartTitle.SetColor
+ 0001:000D0450       Chart.TChartTitle.SetFrame
+ 0001:000D03F0       Chart.TChartTitle.SetText
+ 0001:000D0404       Chart.TChartTitle.SetVisible
+ 0001:000D2450       Chart.TCustomChart.Assign
+ 0001:000D219C       Chart.TCustomChart.CalcAxisRect
+ 0001:000D1628       Chart.TCustomChart.CalcClickedPart
+ 0001:000D2404       Chart.TCustomChart.CalcSeriesRect
+ 0001:000D0F68       Chart.TCustomChart.CalcWallSize
+ 0001:000D1FC8       Chart.TCustomChart.CalcZoomPoints
+ 0001:000D09C4       Chart.TCustomChart.Create
+ 0001:000D0B70       Chart.TCustomChart.Destroy
+ 0001:000D1E80       Chart.TCustomChart.DoMouseWheel
+ 0001:000D1F2C       Chart.TCustomChart.DoMouseWheelDown
+ 0001:000D1F64       Chart.TCustomChart.DoMouseWheelUp
+ 0001:000D13A8       Chart.TCustomChart.DoZoom
+ 0001:000D0F48       Chart.TCustomChart.DrawImage
+ 0001:000D0EB4       Chart.TCustomChart.DrawTitlesAndLegend
+ 0001:000D1054       Chart.TCustomChart.DrawWalls
+ 0001:000D24EC       Chart.TCustomChart.FillSeriesSourceItems
+ 0001:000D24F4       Chart.TCustomChart.FillValueSourceItems
+ 0001:000D0C38       Chart.TCustomChart.FormattedLegend
+ 0001:000D0C00       Chart.TCustomChart.FormattedValueLegend
+ 0001:000D2560       Chart.TCustomChart.GetASeries
+ 0001:000D0DAC       Chart.TCustomChart.GetBackColor
+ 0001:000D0D88       Chart.TCustomChart.GetFrame
+ 0001:000D0DE4       Chart.TCustomChart.IsFreeSeriesColor
+ 0001:000D18CC       Chart.TCustomChart.MouseDown
+ 0001:000D1CE8       Chart.TCustomChart.MouseMove
+ 0001:000D208C       Chart.TCustomChart.MouseUp
+ 0001:000D134C       Chart.TCustomChart.RemoveAllSeries
+ 0001:000D0D3C       Chart.TCustomChart.RestoreScales
+ 0001:000D0CB8       Chart.TCustomChart.SaveScales
+ 0001:000D1EA8       Chart.TCustomChart.ScrollVerticalAxes
+ 0001:000D0DB8       Chart.TCustomChart.SetBackColor
+ 0001:000D0BE4       Chart.TCustomChart.SetBackImageInside
+ 0001:000D0D7C       Chart.TCustomChart.SetBackWall
+ 0001:000D0E68       Chart.TCustomChart.SetBottomWall
+ 0001:000D0BF4       Chart.TCustomChart.SetFoot
+ 0001:000D0D9C       Chart.TCustomChart.SetFrame
+ 0001:000D0E5C       Chart.TCustomChart.SetLeftWall
+ 0001:000D0C78       Chart.TCustomChart.SetLegend
+ 0001:000D0BD8       Chart.TCustomChart.SetTitle
+ 0001:000D1F9C       Chart.TCustomChart.UndoZoom
+ 0001:000D1554       Chart.TCustomChart.ZoomPercent
+ 0001:000D26B8       Chart.TCustomChartLegend.Assign
+ 0001:000D29DC       Chart.TCustomChartLegend.CalcLegendStyle
+ 0001:000D3848       Chart.TCustomChartLegend.Clicked
+ 0001:000D27A8       Chart.TCustomChartLegend.CMColorChanged
+ 0001:000D27A0       Chart.TCustomChartLegend.CMVisibleChanged
+ 0001:000D25A0       Chart.TCustomChartLegend.Create
+ 0001:000D2678       Chart.TCustomChartLegend.Destroy
+ 0001:000D3230       Chart.TCustomChartLegend.Draw
+ 0001:000D2A10       Chart.TCustomChartLegend.FormattedLegend
+ 0001:000D3750       Chart.TCustomChartLegend.FormattedValue
+ 0001:000D2CD8       Chart.TCustomChartLegend.GetColorRect
+ 0001:000D291C       Chart.TCustomChartLegend.GetParentChart
+ 0001:000D2D08       Chart.TCustomChartLegend.GetVertical
+ 0001:000D2B48       Chart.TCustomChartLegend.MaxLegendValues
+ 0001:000D2C2C       Chart.TCustomChartLegend.MaxLegendWidth
+ 0001:000D2784       Chart.TCustomChartLegend.SetAlignment
+ 0001:000D293C       Chart.TCustomChartLegend.SetBrush
+ 0001:000D2948       Chart.TCustomChartLegend.SetColor
+ 0001:000D2964       Chart.TCustomChartLegend.SetColorWidth
+ 0001:000D2AC8       Chart.TCustomChartLegend.SetDividingLines
+ 0001:000D2828       Chart.TCustomChartLegend.SetFirstValue
+ 0001:000D2794       Chart.TCustomChartLegend.SetFrame
+ 0001:000D28E4       Chart.TCustomChartLegend.SetHorizMargin
+ 0001:000D2768       Chart.TCustomChartLegend.SetInverted
+ 0001:000D28C8       Chart.TCustomChartLegend.SetLegendStyle
+ 0001:000D28AC       Chart.TCustomChartLegend.SetMaxNumRows
+ 0001:000D2920       Chart.TCustomChartLegend.SetResizeChart
+ 0001:000D2A90       Chart.TCustomChartLegend.SetShadowColor
+ 0001:000D2AAC       Chart.TCustomChartLegend.SetShadowSize
+ 0001:000D289C       Chart.TCustomChartLegend.SetTextStyle
+ 0001:000D27B0       Chart.TCustomChartLegend.SetTopLeftPos
+ 0001:000D2900       Chart.TCustomChartLegend.SetVertMargin
+ 0001:000D274C       Chart.TCustomChartLegend.SetVisible
+ 0001:000D2BA4       Chart.TCustomChartLegend.TotalLegendItems
+ 0001:000D0168       Chart.TCustomChartWall.ApplyDark3D
+ 0001:000D0114       Chart.TCustomChartWall.Assign
+ 0001:000D0048       Chart.TCustomChartWall.Create
+ 0001:000D00D0       Chart.TCustomChartWall.Destroy
+ 0001:000D0108       Chart.TCustomChartWall.IsColorStored
+ 0001:000D01A0       Chart.TCustomChartWall.SetBrush
+ 0001:000D01BC       Chart.TCustomChartWall.SetColor
+ 0001:000D01CC       Chart.TCustomChartWall.SetDark3D
+ 0001:000D0194       Chart.TCustomChartWall.SetPen
+ 0001:000D01AC       Chart.TCustomChartWall.SetSize
+ 0001:000D3AD0       Chart.TeeGalleryExitProc
+ 0004:000036CB       Chart.TeeScrollKeyShift
+ 0004:000036C9       Chart.TeeScrollMouseButton
+ 0004:000036CC       Chart.TeeSeriesTypes
+ 0003:00002638       Chart.TeeTitleFootDistance
+ 0004:000036CA       Chart.TeeZoomKeyShift
+ 0004:000036C8       Chart.TeeZoomMouseButton
+ 0001:000D3948       Chart.TTeeSeriesTypes.GetSeriesType
+ 0001:000D1370       Chart.ZoomAxis
+ 0004:000036B4       CheckLst..2
+ 0001:000CB9A8       CheckLst..TCheckListBox
+ 0001:000CC510       CheckLst..TCheckListBoxDataWrapper
+ 0002:00000874       CheckLst.CheckLst
+ 0004:000036BC       CheckLst.FCheckHeight
+ 0004:000036B8       CheckLst.FCheckWidth
+ 0001:000CD3CC       CheckLst.Finalization
+ 0001:000CC578       CheckLst.GetCheckSize
+ 0001:000CD00C       CheckLst.TCheckListBox.ClickCheck
+ 0001:000CC710       CheckLst.TCheckListBox.CMFontChanged
+ 0001:000CC928       CheckLst.TCheckListBox.CNDrawItem
+ 0001:000CC618       CheckLst.TCheckListBox.Create
+ 0001:000CC6EC       CheckLst.TCheckListBox.CreateParams
+ 0001:000CC6D8       CheckLst.TCheckListBox.CreateWnd
+ 0001:000CD0E0       CheckLst.TCheckListBox.CreateWrapper
+ 0001:000CD308       CheckLst.TCheckListBox.DeleteString
+ 0001:000CC67C       CheckLst.TCheckListBox.Destroy
+ 0001:000CC984       CheckLst.TCheckListBox.DrawCheck
+ 0001:000CC780       CheckLst.TCheckListBox.DrawItem
+ 0001:000CD074       CheckLst.TCheckListBox.ExtractWrapper
+ 0001:000CCCCC       CheckLst.TCheckListBox.GetChecked
+ 0001:000CC704       CheckLst.TCheckListBox.GetCheckWidth
+ 0001:000CD374       CheckLst.TCheckListBox.GetHeader
+ 0001:000CD02C       CheckLst.TCheckListBox.GetItemData
+ 0001:000CCCF8       CheckLst.TCheckListBox.GetItemEnabled
+ 0001:000CCD24       CheckLst.TCheckListBox.GetState
+ 0001:000CD054       CheckLst.TCheckListBox.GetWrapper
+ 0001:000CD120       CheckLst.TCheckListBox.HaveWrapper
+ 0001:000CD0D0       CheckLst.TCheckListBox.InternalGetItemData
+ 0001:000CD0D8       CheckLst.TCheckListBox.InternalSetItemData
+ 0001:000CCC48       CheckLst.TCheckListBox.InvalidateCheck
+ 0001:000CCD54       CheckLst.TCheckListBox.KeyPress
+ 0001:000CCD80       CheckLst.TCheckListBox.LoadRecreateItems
+ 0001:000CCEC8       CheckLst.TCheckListBox.MouseDown
+ 0001:000CD164       CheckLst.TCheckListBox.ResetContent
+ 0001:000CC724       CheckLst.TCheckListBox.ResetItemHeight
+ 0001:000CD1C4       CheckLst.TCheckListBox.SaveRecreateItems
+ 0001:000CCBE4       CheckLst.TCheckListBox.SetChecked
+ 0001:000CD35C       CheckLst.TCheckListBox.SetFlat
+ 0001:000CD39C       CheckLst.TCheckListBox.SetHeaderBackgroundColor
+ 0001:000CD3B4       CheckLst.TCheckListBox.SetHeaderColor
+ 0001:000CD138       CheckLst.TCheckListBox.SetItemData
+ 0001:000CCC18       CheckLst.TCheckListBox.SetState
+ 0001:000CCF9C       CheckLst.TCheckListBox.ToggleClickCheck
+ 0001:000CC60C       CheckLst.TCheckListBoxDataWrapper.GetChecked
+ 0001:000CC614       CheckLst.TCheckListBoxDataWrapper.GetDefaultState
+ 0001:000CC5FC       CheckLst.TCheckListBoxDataWrapper.SetChecked
+ 0004:000032F0       Classes..95
+ 0001:0001C070       Classes..EBitsError
+ 0001:0001BF60       Classes..EClassNotFound
+ 0001:0001C128       Classes..EComponentError
+ 0001:0001BDA4       Classes..EFCreateError
+ 0001:0001BE58       Classes..EFilerError
+ 0001:0001BD44       Classes..EFileStreamError
+ 0001:0001BE00       Classes..EFOpenError
+ 0001:0001C1E0       Classes..EInvalidOperation
+ 0001:0001C018       Classes..EListError
+ 0001:0001C184       Classes..EOutOfResources
+ 0001:0001BEB0       Classes..EReadError
+ 0001:0001BFBC       Classes..EResNotFound
+ 0001:0001BCE8       Classes..EStreamError
+ 0001:0001C0C8       Classes..EStringListError
+ 0001:0001D1A8       Classes..EThread
+ 0001:0001BF08       Classes..EWriteError
+ 0001:0001D52C       Classes..TBasicAction
+ 0001:0001D4AC       Classes..TBasicActionLink
+ 0001:0001C490       Classes..TBits
+ 0001:0001CFD4       Classes..TClassFinder
+ 0001:0001C740       Classes..TCollection
+ 0001:0001C688       Classes..TCollectionItem
+ 0001:0001D34C       Classes..TComponent
+ 0001:0001CCC8       Classes..TCustomMemoryStream
+ 0001:0001D600       Classes..TDataModule
+ 0001:0001D030       Classes..TFiler
+ 0001:0001CC40       Classes..TFileStream
+ 0001:0001CBC8       Classes..THandleStream
+ 0001:0001E560       Classes..TIntConst
+ 0001:0001C5D4       Classes..TInterfacedPersistent
+ 0001:0001C434       Classes..TInterfaceList
+ 0001:0001C240       Classes..TList
+ 0001:0001CD44       Classes..TMemoryStream
+ 0001:0001C814       Classes..TOwnedCollection
+ 0001:0001C4E4       Classes..TPersistent
+ 0001:0002325C       Classes..TPropFixup
+ 0001:000232D4       Classes..TPropIntfFixup
+ 0001:0001D094       Classes..TReader
+ 0001:0001D808       Classes..TRegGroup
+ 0001:0001D860       Classes..TRegGroups
+ 0001:0001CDC0       Classes..TResourceStream
+ 0001:0001CB58       Classes..TStream
+ 0001:0001CF4C       Classes..TStreamAdapter
+ 0001:0001CA40       Classes..TStringList
+ 0001:0001C908       Classes..TStrings
+ 0001:0001D1FC       Classes..TThread
+ 0001:0001C2C4       Classes..TThreadList
+ 0001:0001D128       Classes..TWriter
+ 0001:0001E504       Classes.ActivateClassGroup
+ 0003:00000CF4       Classes.AddDataModule
+ 0001:00023534       Classes.AddFinished
+ 0001:0002356C       Classes.AddNotFinished
+ 0001:000240E0       Classes.AddSubComponentsToLoaded
+ 0001:000288BC       Classes.AddThread
+ 0001:0002A8F4       Classes.AllocateHWnd
+ 0001:00026FC0       Classes.AncestorIsValid
+ 0003:00000D04       Classes.ApplicationHandleException
+ 0003:00000D0C       Classes.ApplicationShowException
+ 0001:0001E8D8       Classes.BeginGlobalLoading
+ 0003:00000D2C       Classes.BlockCode
+ 0001:0001D7B0       Classes.Bounds
+ 0001:0002A830       Classes.CalcJmpOffset
+ 0001:0002411C       Classes.CheckSubComponents
+ 0001:000288D4       Classes.CheckSynchronize
+ 0002:00000230       Classes.Classes
+ 0001:0001E294       Classes.ClassNotFound
+ 0001:0001EB98       Classes.CollectionsEqual
+ 0001:000241FC       Classes.ComponentCreated
+ 0001:0002427C       Classes.CreateComponent
+ 0001:0002A9A8       Classes.DeallocateHWnd
+ 0001:00028870       Classes.DoneThreadSynchronization
+ 0001:00020B60       Classes.DoWrite
+ 0001:0002A5B4       Classes.DoWriteHeight
+ 0001:0002A54C       Classes.DoWriteHorizontalOffset
+ 0001:0002A580       Classes.DoWriteVerticalOffset
+ 0001:0002A524       Classes.DoWriteWidth
+ 0001:0001E960       Classes.EndGlobalLoading
+ 0001:0001DE34       Classes.Error
+ 0001:00023094       Classes.Error
+ 0003:00000D1C       Classes.FilerSignature
+ 0001:0002A9D0       Classes.Finalization
+ 0001:000266AC       Classes.FindAncestor
+ 0001:0001E354       Classes.FindClass
+ 0001:0002442C       Classes.FindExistingComponent
+ 0001:0001E7F0       Classes.FindGlobalComponent
+ 0004:000032FC       Classes.FindGlobalComponentProcs
+ 0001:0001E698       Classes.FindIdentToInt
+ 0001:0001E61C       Classes.FindIntToIdent
+ 0001:0002744C       Classes.FindMethodName
+ 0001:00023468       Classes.FindNestedComponent
+ 0001:0002537C       Classes.FindUniqueName
+ 0001:0002A17C       Classes.FreeIntConstList
+ 0001:0002A8D0       Classes.FreeObjectInstance
+ 0001:0001E300       Classes.GetClass
+ 0001:00027B3C       Classes.GetComponentValue
+ 0001:000200A4       Classes.GetDesigner
+ 0001:0001E288       Classes.GetFieldClassTable
+ 0004:00003300       Classes.GlobalFixupList
+ 0001:000235B4       Classes.GlobalFixupReferences
+ 0005:0000000C       Classes.GlobalLists
+ 0005:00000008       Classes.GlobalLoaded
+ 0004:000032E4       Classes.GlobalNameSpace
+ 0001:0001E4B0       Classes.GroupDescendentsWith
+ 0001:00024BA0       Classes.HandleException
+ 0001:0001E714       Classes.IdentToInt
+ 0001:0001E9BC       Classes.InitComponent
+ 0001:0001EA64       Classes.InitInheritedComponent
+ 0001:0002883C       Classes.InitThreadSynchronization
+ 0004:00003320       Classes.InstBlockList
+ 0004:00003324       Classes.InstFreeList
+ 0004:000032F4       Classes.IntConstList
+ 0001:0001E854       Classes.InternalReadComponentRes
+ 0001:0001E754       Classes.IntToIdent
+ 0001:0001D7EC       Classes.InvalidPoint
+ 0001:0001D7D8       Classes.InvalidPoint
+ 0001:000271CC       Classes.IsDefault
+ 0001:00027048       Classes.IsDefaultFloatProp
+ 0001:000270A4       Classes.IsDefaultInt64Prop
+ 0001:00027370       Classes.IsDefaultInterfaceProp
+ 0001:000274B8       Classes.IsDefaultMethodProp
+ 0001:00027224       Classes.IsDefaultObjectProp
+ 0001:00026FF0       Classes.IsDefaultOrdProp
+ 0001:000275F0       Classes.IsDefaultPropertyValue
+ 0001:000270FC       Classes.IsDefaultStrProp
+ 0001:000272A4       Classes.IsDefaultValue
+ 0001:00027558       Classes.IsDefaultVariantProp
+ 0001:0001E830       Classes.IsUniqueGlobalComponentName
+ 0004:000032E8       Classes.IsUniqueGlobalComponentNameProc
+ 0001:0002A838       Classes.MakeObjectInstance
+ 0001:0001FCB0       Classes.Min
+ 0001:0002A1E8       Classes.ModuleUnload
+ 0003:00000D20       Classes.NilMethod
+ 0001:00020144       Classes.NotifyDesigner
+ 0001:0001E930       Classes.NotifyGlobalLoading
+ 0001:0002718C       Classes.ObjectAncestorMatch
+ 0001:00027B24       Classes.OwnedBy
+ 0001:0001D760       Classes.Point
+ 0001:0001DBC0       Classes.PointerInModule
+ 0001:000238D4       Classes.PropertyNotFound
+ 0001:00024CA0       Classes.PropPathError
+ 0001:000238C8       Classes.PropValueError
+ 0001:0001F0F8       Classes.QuickSort
+ 0001:000227CC       Classes.RaiseException
+ 0001:00025F30       Classes.ReadCustomVariant
+ 0001:000238B0       Classes.ReadError
+ 0001:0002421C       Classes.Recover
+ 0001:0001D788       Classes.Rect
+ 0004:000032F8       Classes.RegGroups
+ 0001:0001E374       Classes.RegisterClass
+ 0001:0001E3E4       Classes.RegisterClasses
+ 0001:0001E798       Classes.RegisterFindGlobalComponentProc
+ 0001:0001E5F0       Classes.RegisterIntegerConsts
+ 0003:00000CFC       Classes.RemoveDataModule
+ 0001:00023780       Classes.RemoveFixupReferences
+ 0001:0002382C       Classes.RemoveFixups
+ 0001:00023BC4       Classes.RemoveGlobalFixup
+ 0001:000288C8       Classes.RemoveThread
+ 0001:00028888       Classes.ResetSyncEvent
+ 0001:0001ED8C       Classes.ReturnAddr
+ 0001:00020CC0       Classes.ReturnAddr
+ 0001:0002438C       Classes.SetCompName
+ 0001:00023900       Classes.SetElementValue
+ 0001:00024FA4       Classes.SetInterfaceReference
+ 0001:00024EC0       Classes.SetIntIdent
+ 0001:00024F08       Classes.SetObjectIdent
+ 0001:00024194       Classes.SetSubComponentState
+ 0001:00024F48       Classes.SetVariantReference
+ 0001:000288B0       Classes.SignalSyncEvent
+ 0001:00025A50       Classes.SkipBinary
+ 0001:00025A80       Classes.SkipCollection
+ 0001:00025A28       Classes.SkipList
+ 0001:0001D778       Classes.SmallPoint
+ 0001:0001E464       Classes.StartClassGroup
+ 0001:0002A810       Classes.StdWndProc
+ 0001:000225F4       Classes.StringListCompareStrings
+ 0004:000032EC       Classes.SyncEvent
+ 0003:00000D28       Classes.SyncList
+ 0001:00029BE8       Classes.TBasicAction.Change
+ 0001:00029A7C       Classes.TBasicAction.Create
+ 0001:00029AC0       Classes.TBasicAction.Destroy
+ 0001:00029B54       Classes.TBasicAction.Execute
+ 0001:00029B24       Classes.TBasicAction.ExecuteTarget
+ 0001:00029B20       Classes.TBasicAction.HandlesTarget
+ 0001:00029B28       Classes.TBasicAction.Notification
+ 0001:00029BFC       Classes.TBasicAction.RegisterChanges
+ 0001:00029C48       Classes.TBasicAction.SetActionComponent
+ 0001:00029B8C       Classes.TBasicAction.SetOnExecute
+ 0001:00029C08       Classes.TBasicAction.UnRegisterChanges
+ 0001:00029B70       Classes.TBasicAction.Update
+ 0001:00029B50       Classes.TBasicAction.UpdateTarget
+ 0001:000299CC       Classes.TBasicActionLink.AssignClient
+ 0001:00029A04       Classes.TBasicActionLink.Change
+ 0001:00029988       Classes.TBasicActionLink.Create
+ 0001:000299D0       Classes.TBasicActionLink.Destroy
+ 0001:00029A1C       Classes.TBasicActionLink.Execute
+ 0001:00029A64       Classes.TBasicActionLink.IsOnExecuteLinked
+ 0001:00029A38       Classes.TBasicActionLink.SetAction
+ 0001:00029A68       Classes.TBasicActionLink.SetOnExecute
+ 0001:00029A70       Classes.TBasicActionLink.Update
+ 0001:0001FC68       Classes.TBits.Destroy
+ 0001:0001FC98       Classes.TBits.Error
+ 0001:0001FD8C       Classes.TBits.GetBit
+ 0001:0001FDA4       Classes.TBits.OpenBit
+ 0001:0001FD60       Classes.TBits.SetBit
+ 0001:0001FCBC       Classes.TBits.SetSize
+ 0001:0001E0A4       Classes.TClassFinder.Create
+ 0001:0001E1D0       Classes.TClassFinder.Destroy
+ 0001:0001E200       Classes.TClassFinder.GetClass
+ 0001:00020424       Classes.TCollection.Add
+ 0001:000208E0       Classes.TCollection.Added
+ 0001:00020444       Classes.TCollection.Assign
+ 0001:000204DC       Classes.TCollection.BeginUpdate
+ 0001:000204E0       Classes.TCollection.Changed
+ 0001:000204F0       Classes.TCollection.Clear
+ 0001:0002038C       Classes.TCollection.Create
+ 0001:000208A4       Classes.TCollection.Delete
+ 0001:000208E4       Classes.TCollection.Deleting
+ 0001:000203D8       Classes.TCollection.Destroy
+ 0001:00020558       Classes.TCollection.EndUpdate
+ 0001:00020564       Classes.TCollection.FindItemID
+ 0001:00020598       Classes.TCollection.GetAttr
+ 0001:00020594       Classes.TCollection.GetAttrCount
+ 0001:000205C4       Classes.TCollection.GetCount
+ 0001:000205CC       Classes.TCollection.GetItem
+ 0001:000205A4       Classes.TCollection.GetItemAttr
+ 0001:000205E0       Classes.TCollection.GetNamePath
+ 0001:000206A8       Classes.TCollection.GetPropName
+ 0001:000207C4       Classes.TCollection.Insert
+ 0001:000207E0       Classes.TCollection.InsertItem
+ 0001:000208E8       Classes.TCollection.Notify
+ 0001:000208D4       Classes.TCollection.Owner
+ 0001:00020848       Classes.TCollection.RemoveItem
+ 0001:0002089C       Classes.TCollection.SetItemName
+ 0001:000208A0       Classes.TCollection.Update
+ 0001:00020210       Classes.TCollectionItem.Changed
+ 0001:000201A8       Classes.TCollectionItem.Create
+ 0001:000201E0       Classes.TCollectionItem.Destroy
+ 0001:0002024C       Classes.TCollectionItem.GetDisplayName
+ 0001:00020234       Classes.TCollectionItem.GetIndex
+ 0001:00020274       Classes.TCollectionItem.GetNamePath
+ 0001:00020328       Classes.TCollectionItem.GetOwner
+ 0001:0002032C       Classes.TCollectionItem.SetCollection
+ 0001:00020354       Classes.TCollectionItem.SetDisplayName
+ 0001:0002035C       Classes.TCollectionItem.SetIndex
+ 0001:000291F0       Classes.TComponent.BeforeDestruction
+ 0001:00029728       Classes.TComponent.ChangeName
+ 0001:00029128       Classes.TComponent.Create
+ 0001:000294B8       Classes.TComponent.DefineProperties
+ 0001:00029174       Classes.TComponent.Destroy
+ 0001:00029380       Classes.TComponent.DestroyComponents
+ 0001:000293DC       Classes.TComponent.Destroying
+ 0001:00029880       Classes.TComponent.ExecuteAction
+ 0001:00029648       Classes.TComponent.FindComponent
+ 0001:000291FC       Classes.TComponent.FreeNotification
+ 0001:0002954C       Classes.TComponent.GetChildOwner
+ 0001:00029550       Classes.TComponent.GetChildParent
+ 0001:00029544       Classes.TComponent.GetChildren
+ 0001:00029758       Classes.TComponent.GetComponent
+ 0001:00029784       Classes.TComponent.GetComponentCount
+ 0001:0002973C       Classes.TComponent.GetComponentIndex
+ 0001:00029554       Classes.TComponent.GetNamePath
+ 0001:00029568       Classes.TComponent.GetOwner
+ 0001:00029570       Classes.TComponent.GetParentComponent
+ 0001:00029540       Classes.TComponent.HasParent
+ 0001:00029290       Classes.TComponent.Insert
+ 0001:000292E4       Classes.TComponent.InsertComponent
+ 0001:00029984       Classes.TComponent.IntfGetComponent
+ 0001:00029590       Classes.TComponent.Loaded
+ 0001:00029458       Classes.TComponent.Notification
+ 0001:0002959C       Classes.TComponent.PaletteCreated
+ 0001:00029904       Classes.TComponent.QueryInterface
+ 0001:00029250       Classes.TComponent.ReadLeft
+ 0001:000295A0       Classes.TComponent.ReadState
+ 0001:00029264       Classes.TComponent.ReadTop
+ 0001:000292BC       Classes.TComponent.Remove
+ 0001:00029348       Classes.TComponent.RemoveComponent
+ 0001:0002943C       Classes.TComponent.RemoveFreeNotification
+ 0001:00029418       Classes.TComponent.RemoveNotification
+ 0001:000298E4       Classes.TComponent.SafeCallException
+ 0001:0002956C       Classes.TComponent.SetChildOrder
+ 0001:00029794       Classes.TComponent.SetComponentIndex
+ 0001:000297E8       Classes.TComponent.SetDesigning
+ 0001:00029698       Classes.TComponent.SetName
+ 0001:00029574       Classes.TComponent.SetParentComponent
+ 0001:00029838       Classes.TComponent.SetReference
+ 0001:000298D0       Classes.TComponent.SetSubComponent
+ 0001:000298A8       Classes.TComponent.UpdateAction
+ 0001:00029584       Classes.TComponent.Updated
+ 0001:000298FC       Classes.TComponent.UpdateRegistry
+ 0001:00029578       Classes.TComponent.Updating
+ 0001:00029630       Classes.TComponent.ValidateContainer
+ 0001:00029644       Classes.TComponent.ValidateInsert
+ 0001:000295B0       Classes.TComponent.ValidateRename
+ 0001:00029278       Classes.TComponent.WriteLeft
+ 0001:000295A8       Classes.TComponent.WriteState
+ 0001:00029284       Classes.TComponent.WriteTop
+ 0001:00029944       Classes.TComponent._AddRef
+ 0001:00029964       Classes.TComponent._Release
+ 0001:00022DEC       Classes.TCustomMemoryStream.Read
+ 0001:00022E24       Classes.TCustomMemoryStream.Seek
+ 0001:00022DE4       Classes.TCustomMemoryStream.SetPointer
+ 0001:0002A330       Classes.TDataModule.AfterConstruction
+ 0001:0002A398       Classes.TDataModule.BeforeDestruction
+ 0001:0002A1F0       Classes.TDataModule.Create
+ 0001:0002A33C       Classes.TDataModule.CreateNew
+ 0001:0002A5DC       Classes.TDataModule.DefineProperties
+ 0001:0002A3C4       Classes.TDataModule.Destroy
+ 0001:0002A460       Classes.TDataModule.DoCreate
+ 0001:0002A4C0       Classes.TDataModule.DoDestroy
+ 0001:0002A6F0       Classes.TDataModule.GetChildren
+ 0001:0002A75C       Classes.TDataModule.HandleCreateException
+ 0001:0002A7CC       Classes.TDataModule.ReadHeight
+ 0001:0002A7A4       Classes.TDataModule.ReadHorizontalOffset
+ 0001:0002A77C       Classes.TDataModule.ReadState
+ 0001:0002A7B8       Classes.TDataModule.ReadVerticalOffset
+ 0001:0002A790       Classes.TDataModule.ReadWidth
+ 0001:0002A804       Classes.TDataModule.WriteHeight
+ 0001:0002A7EC       Classes.TDataModule.WriteHorizontalOffset
+ 0001:0002A7F8       Classes.TDataModule.WriteVerticalOffset
+ 0001:0002A7E0       Classes.TDataModule.WriteWidth
+ 0001:000231E8       Classes.TFiler.Create
+ 0001:00023230       Classes.TFiler.Destroy
+ 0001:00023258       Classes.TFiler.SetRoot
+ 0001:00022BF8       Classes.TFileStream.Create
+ 0001:00022C3C       Classes.TFileStream.Create
+ 0001:00022DB0       Classes.TFileStream.Destroy
+ 0001:00022B34       Classes.THandleStream.Create
+ 0001:00022B70       Classes.THandleStream.Read
+ 0001:00022B90       Classes.THandleStream.Seek
+ 0001:00022BBC       Classes.THandleStream.SetSize
+ 0001:00022BD0       Classes.THandleStream.SetSize
+ 0001:00022B80       Classes.THandleStream.Write
+ 0004:0000331C       Classes.ThreadCount
+ 0004:00003304       Classes.ThreadLock
+ 0001:00028AAC       Classes.ThreadProc
+ 0001:0001E5B8       Classes.TIntConst.Create
+ 0001:0001FFEC       Classes.TInterfacedPersistent.AfterConstruction
+ 0001:0002007C       Classes.TInterfacedPersistent.QueryInterface
+ 0001:0002003C       Classes.TInterfacedPersistent._AddRef
+ 0001:0002005C       Classes.TInterfacedPersistent._Release
+ 0001:0001F938       Classes.TInterfaceList.Add
+ 0001:0001F6E8       Classes.TInterfaceList.Clear
+ 0001:0001F670       Classes.TInterfaceList.Create
+ 0001:0001F758       Classes.TInterfaceList.Delete
+ 0001:0001F6B4       Classes.TInterfaceList.Destroy
+ 0001:0001FBFC       Classes.TInterfaceList.Exchange
+ 0001:0001F7B8       Classes.TInterfaceList.First
+ 0001:0001F7CC       Classes.TInterfaceList.Get
+ 0001:0001F840       Classes.TInterfaceList.GetCapacity
+ 0001:0001F890       Classes.TInterfaceList.GetCount
+ 0001:0001F8E0       Classes.TInterfaceList.IndexOf
+ 0001:0001F9A8       Classes.TInterfaceList.Insert
+ 0001:0001FA10       Classes.TInterfaceList.Last
+ 0001:0001FC50       Classes.TInterfaceList.Lock
+ 0001:0001FA6C       Classes.TInterfaceList.Put
+ 0001:0001FAE0       Classes.TInterfaceList.Remove
+ 0001:0001FB5C       Classes.TInterfaceList.SetCapacity
+ 0001:0001FBAC       Classes.TInterfaceList.SetCount
+ 0001:0001FC5C       Classes.TInterfaceList.Unlock
+ 0001:0001ECDC       Classes.TList.Add
+ 0001:0001F1DC       Classes.TList.Assign
+ 0001:0001ED10       Classes.TList.Clear
+ 0001:0001ED28       Classes.TList.Delete
+ 0001:0001ECBC       Classes.TList.Destroy
+ 0001:0001ED90       Classes.TList.Error
+ 0001:0001EDC8       Classes.TList.Error
+ 0001:0001EE1C       Classes.TList.Exchange
+ 0001:0001EE6C       Classes.TList.Expand
+ 0001:0001F19C       Classes.TList.Extract
+ 0001:0001EE84       Classes.TList.First
+ 0001:0001EE8C       Classes.TList.Get
+ 0001:0001EEB4       Classes.TList.Grow
+ 0001:0001EEE8       Classes.TList.IndexOf
+ 0001:0001EF08       Classes.TList.Insert
+ 0001:0001EF74       Classes.TList.Last
+ 0001:0001EF80       Classes.TList.Move
+ 0001:0001F1D8       Classes.TList.Notify
+ 0001:0001EFD8       Classes.TList.Put
+ 0001:0001F028       Classes.TList.Remove
+ 0001:0001F048       Classes.TList.SetCapacity
+ 0001:0001F084       Classes.TList.SetCount
+ 0001:0001F17C       Classes.TList.Sort
+ 0001:00022E74       Classes.TMemoryStream.Clear
+ 0001:00022E48       Classes.TMemoryStream.Destroy
+ 0001:00022E8C       Classes.TMemoryStream.LoadFromStream
+ 0001:00022F18       Classes.TMemoryStream.Realloc
+ 0001:00022EC4       Classes.TMemoryStream.SetCapacity
+ 0001:00022EEC       Classes.TMemoryStream.SetSize
+ 0001:00022F98       Classes.TMemoryStream.Write
+ 0001:0002090C       Classes.TOwnedCollection.Create
+ 0001:00020950       Classes.TOwnedCollection.GetOwner
+ 0001:0001FE48       Classes.TPersistent.Assign
+ 0001:0001FE5C       Classes.TPersistent.AssignError
+ 0001:0001FF2C       Classes.TPersistent.AssignTo
+ 0001:0001FF34       Classes.TPersistent.DefineProperties
+ 0001:0001FE1C       Classes.TPersistent.Destroy
+ 0001:0001FF38       Classes.TPersistent.GetNamePath
+ 0001:0001FFE8       Classes.TPersistent.GetOwner
+ 0001:00023334       Classes.TPropFixup.Create
+ 0001:0002338C       Classes.TPropFixup.MakeGlobalReference
+ 0001:000233D4       Classes.TPropFixup.ResolveReference
+ 0001:000233E4       Classes.TPropIntfFixup.ResolveReference
+ 0001:00023954       Classes.TReader.CheckValue
+ 0001:000239B4       Classes.TReader.DefineBinaryProperty
+ 0001:00023978       Classes.TReader.DefineProperty
+ 0001:00023918       Classes.TReader.Destroy
+ 0001:00023C40       Classes.TReader.DoFixupReferences
+ 0001:00023A9C       Classes.TReader.EndOfList
+ 0001:00023AB0       Classes.TReader.Error
+ 0001:00025D7C       Classes.TReader.FindAncestorComponent
+ 0001:00025E74       Classes.TReader.FindComponentClass
+ 0001:00023B5C       Classes.TReader.FindMethod
+ 0001:00023AD4       Classes.TReader.FindMethodInstance
+ 0001:00023D84       Classes.TReader.FlushBuffer
+ 0001:00023DA8       Classes.TReader.FreeFixups
+ 0001:00023DE4       Classes.TReader.GetFieldClass
+ 0001:00023E7C       Classes.TReader.GetPosition
+ 0001:00023E94       Classes.TReader.NextValue
+ 0001:00023EA4       Classes.TReader.PropertyError
+ 0001:00023EB8       Classes.TReader.Read
+ 0001:00023F40       Classes.TReader.ReadBoolean
+ 0001:00023F04       Classes.TReader.ReadBuffer
+ 0001:00023F54       Classes.TReader.ReadChar
+ 0001:00024010       Classes.TReader.ReadCollection
+ 0001:000244D0       Classes.TReader.ReadComponent
+ 0001:00024910       Classes.TReader.ReadCurrency
+ 0001:00024710       Classes.TReader.ReadData
+ 0001:00024780       Classes.TReader.ReadDataInner
+ 0001:00024960       Classes.TReader.ReadDate
+ 0001:00024888       Classes.TReader.ReadDouble
+ 0001:00024850       Classes.TReader.ReadFloat
+ 0001:000249A4       Classes.TReader.ReadIdent
+ 0001:00024B0C       Classes.TReader.ReadInt64
+ 0001:00024AA0       Classes.TReader.ReadInteger
+ 0001:00024B50       Classes.TReader.ReadListBegin
+ 0001:00024B58       Classes.TReader.ReadListEnd
+ 0001:00024B60       Classes.TReader.ReadPrefix
+ 0001:00024CBC       Classes.TReader.ReadProperty
+ 0001:00025064       Classes.TReader.ReadPropValue
+ 0001:000253DC       Classes.TReader.ReadRootComponent
+ 0001:00025710       Classes.TReader.ReadSet
+ 0001:000257CC       Classes.TReader.ReadSignature
+ 0001:000248CC       Classes.TReader.ReadSingle
+ 0001:000257F0       Classes.TReader.ReadStr
+ 0001:0002582C       Classes.TReader.ReadString
+ 0001:000259CC       Classes.TReader.ReadValue
+ 0001:000260F8       Classes.TReader.ReadVariant
+ 0001:00023FB4       Classes.TReader.ReadWideChar
+ 0001:000258E8       Classes.TReader.ReadWideString
+ 0001:00025E34       Classes.TReader.ReferenceName
+ 0001:00025E4C       Classes.TReader.SetName
+ 0001:00025EE8       Classes.TReader.SkipBytes
+ 0001:00025CD4       Classes.TReader.SkipComponent
+ 0001:00025C8C       Classes.TReader.SkipProperty
+ 0001:000259E0       Classes.TReader.SkipSetBody
+ 0001:00025ADC       Classes.TReader.SkipValue
+ 0001:0001D8B8       Classes.TRegGroup.AddClass
+ 0001:0001D8C4       Classes.TRegGroup.BestClass
+ 0001:0001D924       Classes.TRegGroup.BestGroup
+ 0001:0001D994       Classes.TRegGroup.Create
+ 0001:0001D9F0       Classes.TRegGroup.Destroy
+ 0001:0001DA30       Classes.TRegGroup.GetClass
+ 0001:0001DA98       Classes.TRegGroup.InGroup
+ 0001:0001DADC       Classes.TRegGroup.RegisterClass
+ 0001:0001DB9C       Classes.TRegGroup.Registered
+ 0001:0001DBE0       Classes.TRegGroup.UnregisterModuleClasses
+ 0001:0001DC8C       Classes.TRegGroups.Activate
+ 0001:0001DCD8       Classes.TRegGroups.Create
+ 0001:0001DD4C       Classes.TRegGroups.Destroy
+ 0001:0001DDAC       Classes.TRegGroups.FindGroup
+ 0001:0001DDF0       Classes.TRegGroups.GetClass
+ 0001:0001DEC4       Classes.TRegGroups.GroupWith
+ 0001:0001DF90       Classes.TRegGroups.Lock
+ 0001:0001DF9C       Classes.TRegGroups.RegisterClass
+ 0001:0001DFB4       Classes.TRegGroups.Registered
+ 0001:0001DFF8       Classes.TRegGroups.StartGroup
+ 0001:0001E048       Classes.TRegGroups.Unlock
+ 0001:0001E054       Classes.TRegGroups.UnregisterModuleClasses
+ 0001:00022FE8       Classes.TResourceStream.Create
+ 0001:00023040       Classes.TResourceStream.CreateFromID
+ 0001:000231A0       Classes.TResourceStream.Destroy
+ 0001:00023134       Classes.TResourceStream.Initialize
+ 0001:000231D0       Classes.TResourceStream.Write
+ 0001:0002297C       Classes.TStream.CopyFrom
+ 0001:000226E0       Classes.TStream.GetPosition
+ 0001:00022714       Classes.TStream.GetSize
+ 0001:0002290C       Classes.TStream.ReadBuffer
+ 0001:00022A70       Classes.TStream.ReadComponent
+ 0001:0002289C       Classes.TStream.Seek
+ 0001:00022818       Classes.TStream.Seek
+ 0001:00022700       Classes.TStream.SetPosition
+ 0001:00022760       Classes.TStream.SetSize
+ 0001:00022778       Classes.TStream.SetSize
+ 0001:00022764       Classes.TStream.SetSize64
+ 0001:00022944       Classes.TStream.WriteBuffer
+ 0001:00022AD0       Classes.TStream.WriteComponent
+ 0001:00022AD8       Classes.TStream.WriteDescendent
+ 0001:0002A164       Classes.TStreamAdapter.Clone
+ 0001:0002A0B8       Classes.TStreamAdapter.Commit
+ 0001:00029EB0       Classes.TStreamAdapter.CopyTo
+ 0001:00029C74       Classes.TStreamAdapter.Create
+ 0001:00029CC0       Classes.TStreamAdapter.Destroy
+ 0001:0002A0D0       Classes.TStreamAdapter.LockRegion
+ 0001:00029CF8       Classes.TStreamAdapter.Read
+ 0001:0002A0C4       Classes.TStreamAdapter.Revert
+ 0001:00029DC8       Classes.TStreamAdapter.Seek
+ 0001:00029E4C       Classes.TStreamAdapter.SetSize
+ 0001:0002A0E8       Classes.TStreamAdapter.Stat
+ 0001:0002A0DC       Classes.TStreamAdapter.UnlockRegion
+ 0001:00029D60       Classes.TStreamAdapter.Write
+ 0001:00022060       Classes.TStringList.Add
+ 0001:00022070       Classes.TStringList.AddObject
+ 0001:000220D4       Classes.TStringList.Changed
+ 0001:000220F0       Classes.TStringList.Changing
+ 0001:0002210C       Classes.TStringList.Clear
+ 0001:0002265C       Classes.TStringList.CompareStrings
+ 0001:00022624       Classes.TStringList.CustomSort
+ 0001:0002214C       Classes.TStringList.Delete
+ 0001:00022004       Classes.TStringList.Destroy
+ 0001:000221B8       Classes.TStringList.Exchange
+ 0001:00022214       Classes.TStringList.ExchangeItems
+ 0001:00022238       Classes.TStringList.Find
+ 0001:000222BC       Classes.TStringList.Get
+ 0001:000222F0       Classes.TStringList.GetCapacity
+ 0001:000222F4       Classes.TStringList.GetCount
+ 0001:000222F8       Classes.TStringList.GetObject
+ 0001:00022320       Classes.TStringList.Grow
+ 0001:00022354       Classes.TStringList.IndexOf
+ 0001:00022390       Classes.TStringList.Insert
+ 0001:000223F4       Classes.TStringList.InsertItem
+ 0001:000223A0       Classes.TStringList.InsertObject
+ 0001:00022470       Classes.TStringList.Put
+ 0001:000224CC       Classes.TStringList.PutObject
+ 0001:0002250C       Classes.TStringList.QuickSort
+ 0001:000225A0       Classes.TStringList.SetCapacity
+ 0001:000225BC       Classes.TStringList.SetSorted
+ 0001:000225DC       Classes.TStringList.SetUpdateState
+ 0001:00022614       Classes.TStringList.Sort
+ 0001:00020984       Classes.TStrings.Add
+ 0001:000209A8       Classes.TStrings.AddObject
+ 0001:000209D8       Classes.TStrings.AddStrings
+ 0001:000209CC       Classes.TStrings.Append
+ 0001:00020A90       Classes.TStrings.Assign
+ 0001:00020B48       Classes.TStrings.BeginUpdate
+ 0001:00021F8C       Classes.TStrings.CompareStrings
+ 0001:00020BB8       Classes.TStrings.DefineProperties
+ 0001:00020954       Classes.TStrings.Destroy
+ 0001:00020C04       Classes.TStrings.EndUpdate
+ 0001:00020C18       Classes.TStrings.Equals
+ 0001:00020CFC       Classes.TStrings.Error
+ 0001:00020CC4       Classes.TStrings.Error
+ 0001:00020D54       Classes.TStrings.Exchange
+ 0001:00020E40       Classes.TStrings.ExtractName
+ 0001:00020EBC       Classes.TStrings.GetCapacity
+ 0001:00020EC4       Classes.TStrings.GetCommaText
+ 0001:00020F54       Classes.TStrings.GetDelimitedText
+ 0001:00021E90       Classes.TStrings.GetDelimiter
+ 0001:00021EA8       Classes.TStrings.GetLineBreak
+ 0001:000211D0       Classes.TStrings.GetName
+ 0001:00021FD0       Classes.TStrings.GetNameValueSeparator
+ 0001:00021230       Classes.TStrings.GetObject
+ 0001:00021EDC       Classes.TStrings.GetQuoteChar
+ 0001:00021EF4       Classes.TStrings.GetStrictDelimiter
+ 0001:00021234       Classes.TStrings.GetText
+ 0001:00021288       Classes.TStrings.GetTextStr
+ 0001:000213C0       Classes.TStrings.GetValue
+ 0001:00021458       Classes.TStrings.IndexOf
+ 0001:000214E4       Classes.TStrings.IndexOfName
+ 0001:000215B8       Classes.TStrings.IndexOfObject
+ 0001:000215EC       Classes.TStrings.InsertObject
+ 0001:0002161C       Classes.TStrings.LoadFromFile
+ 0001:00021670       Classes.TStrings.LoadFromStream
+ 0001:0002171C       Classes.TStrings.Move
+ 0001:000217CC       Classes.TStrings.Put
+ 0001:000217FC       Classes.TStrings.PutObject
+ 0001:00021800       Classes.TStrings.ReadData
+ 0001:000218B0       Classes.TStrings.SaveToFile
+ 0001:00021908       Classes.TStrings.SaveToStream
+ 0001:00021968       Classes.TStrings.SetCapacity
+ 0001:0002196C       Classes.TStrings.SetCommaText
+ 0001:00021CF4       Classes.TStrings.SetDelimitedText
+ 0001:00021F0C       Classes.TStrings.SetDelimiter
+ 0001:00021F28       Classes.TStrings.SetLineBreak
+ 0001:00021FE8       Classes.TStrings.SetNameValueSeparator
+ 0001:00021F54       Classes.TStrings.SetQuoteChar
+ 0001:00021F70       Classes.TStrings.SetStrictDelimiter
+ 0001:00021990       Classes.TStrings.SetStringsAdapter
+ 0001:000219C4       Classes.TStrings.SetText
+ 0001:00021A14       Classes.TStrings.SetTextStr
+ 0001:00021BB8       Classes.TStrings.SetUpdateState
+ 0001:00021BBC       Classes.TStrings.SetValue
+ 0001:00021C70       Classes.TStrings.WriteData
+ 0001:00028C98       Classes.TThread.AfterConstruction
+ 0001:00028D38       Classes.TThread.CallOnTerminate
+ 0001:00028CA4       Classes.TThread.CheckThreadError
+ 0001:00028D20       Classes.TThread.CheckThreadError
+ 0001:00028B54       Classes.TThread.Create
+ 0001:00028C24       Classes.TThread.Destroy
+ 0001:00028D4C       Classes.TThread.DoTerminate
+ 0001:00028D60       Classes.TThread.RemoveQueuedEvents
+ 0001:00029054       Classes.TThread.Resume
+ 0001:00028FE4       Classes.TThread.Suspend
+ 0001:00028E20       Classes.TThread.Synchronize
+ 0001:00028FBC       Classes.TThread.Synchronize
+ 0001:0002907C       Classes.TThread.Terminate
+ 0001:00029084       Classes.TThread.WaitFor
+ 0001:0001F578       Classes.TThreadList.Add
+ 0001:0001F4A8       Classes.TThreadList.Create
+ 0001:0001F4FC       Classes.TThreadList.Destroy
+ 0001:0001F600       Classes.TThreadList.LockList
+ 0001:0001F614       Classes.TThreadList.Remove
+ 0001:0001F664       Classes.TThreadList.UnlockList
+ 0001:00026344       Classes.TWriter.AddAncestor
+ 0001:00026378       Classes.TWriter.DefineBinaryProperty
+ 0001:00026350       Classes.TWriter.DefineProperty
+ 0001:00026318       Classes.TWriter.Destroy
+ 0001:000263B4       Classes.TWriter.FindMethodName
+ 0001:00026410       Classes.TWriter.FlushBuffer
+ 0001:00028818       Classes.TWriter.GetLookupInfo
+ 0001:000263A4       Classes.TWriter.GetPosition
+ 0001:00026418       Classes.TWriter.SetPosition
+ 0001:00026454       Classes.TWriter.SetRoot
+ 0001:0002646C       Classes.TWriter.Write
+ 0001:000264B8       Classes.TWriter.WriteBinary
+ 0001:00026558       Classes.TWriter.WriteBoolean
+ 0001:00026540       Classes.TWriter.WriteBuffer
+ 0001:0002656C       Classes.TWriter.WriteChar
+ 0001:0002660C       Classes.TWriter.WriteCollection
+ 0001:000266FC       Classes.TWriter.WriteComponent
+ 0001:00026CC8       Classes.TWriter.WriteCurrency
+ 0001:00026850       Classes.TWriter.WriteData
+ 0001:00026CEC       Classes.TWriter.WriteDate
+ 0001:00026C58       Classes.TWriter.WriteDescendent
+ 0001:00026C80       Classes.TWriter.WriteFloat
+ 0001:00026D10       Classes.TWriter.WriteIdent
+ 0001:00026DD4       Classes.TWriter.WriteInteger
+ 0001:00026E48       Classes.TWriter.WriteInteger
+ 0001:00026EA0       Classes.TWriter.WriteListBegin
+ 0001:00026EA8       Classes.TWriter.WriteListEnd
+ 0001:0002864C       Classes.TWriter.WriteMinStr
+ 0001:00026EB0       Classes.TWriter.WritePrefix
+ 0001:00026EF8       Classes.TWriter.WriteProperties
+ 0001:00028048       Classes.TWriter.WriteProperty
+ 0001:0002859C       Classes.TWriter.WritePropName
+ 0001:000285F0       Classes.TWriter.WriteSignature
+ 0001:00026CA4       Classes.TWriter.WriteSingle
+ 0001:00028600       Classes.TWriter.WriteStr
+ 0001:000286F8       Classes.TWriter.WriteString
+ 0001:00028804       Classes.TWriter.WriteValue
+ 0001:000281A0       Classes.TWriter.WriteVariant
+ 0001:000265BC       Classes.TWriter.WriteWideChar
+ 0001:0002874C       Classes.TWriter.WriteWideString
+ 0001:0001E7D8       Classes.UnregisterFindGlobalComponentProc
+ 0001:0001E418       Classes.UnRegisterModuleClasses
+ 0003:00000D30       Classes.UtilWindowClass
+ 0001:00028894       Classes.WaitForSyncEvent
+ 0003:00000D14       Classes.WakeMainThread
+ 0001:0001EB2C       Classes.WriteCollection
+ 0001:000278AC       Classes.WriteCollectionProp
+ 0001:00027A48       Classes.WriteFloatProp
+ 0001:00027A88       Classes.WriteInt64Prop
+ 0001:00027E78       Classes.WriteInterfaceProp
+ 0001:00027840       Classes.WriteIntProp
+ 0001:00027F54       Classes.WriteMethodProp
+ 0001:00027C64       Classes.WriteObjectProp
+ 0001:00027950       Classes.WriteOrdProp
+ 0001:00027758       Classes.WritePropPath
+ 0001:000277AC       Classes.WriteSet
+ 0001:00027AC4       Classes.WriteStrProp
+ 0001:00027FE4       Classes.WriteVariantProp
+ 0004:000034F0       Clipbrd..2
+ 0001:00054B0C       Clipbrd..TClipboard
+ 0004:000034EE       Clipbrd.CF_COMPONENT
+ 0004:000034EC       Clipbrd.CF_PICTURE
+ 0001:000552A8       Clipbrd.Clipboard
+ 0002:00000510       Clipbrd.Clipbrd
+ 0004:000034F4       Clipbrd.FClipboard
+ 0001:00055358       Clipbrd.Finalization
+ 0001:000551F0       Clipbrd.HasAPicture
+ 0001:00054BE8       Clipbrd.TClipboard.Adding
+ 0001:00055150       Clipbrd.TClipboard.Assign
+ 0001:000550CC       Clipbrd.TClipboard.AssignGraphic
+ 0001:00055048       Clipbrd.TClipboard.AssignPicture
+ 0001:00054FE0       Clipbrd.TClipboard.AssignTo
+ 0001:00054F14       Clipbrd.TClipboard.AssignToBitmap
+ 0001:00054F7C       Clipbrd.TClipboard.AssignToMetafile
+ 0001:00054E5C       Clipbrd.TClipboard.AssignToPicture
+ 0001:00054BA4       Clipbrd.TClipboard.Clear
+ 0001:00054C04       Clipbrd.TClipboard.Close
+ 0001:00055324       Clipbrd.TClipboard.Destroy
+ 0001:0005519C       Clipbrd.TClipboard.GetAsHandle
+ 0001:00054DB0       Clipbrd.TClipboard.GetAsText
+ 0001:00055270       Clipbrd.TClipboard.HasFormat
+ 0001:000552C8       Clipbrd.TClipboard.MainWndProc
+ 0001:00054C30       Clipbrd.TClipboard.Open
+ 0001:00054E30       Clipbrd.TClipboard.SetAsText
+ 0001:00054CAC       Clipbrd.TClipboard.SetBuffer
+ 0001:00054D90       Clipbrd.TClipboard.SetTextBuf
+ 0001:00054C8C       Clipbrd.TClipboard.WndProc
+ 0004:00003640       ComCtrls..76
+ 0001:00095E7C       ComCtrls..ECommonCalendarError
+ 0001:000962CC       ComCtrls..EMonthCalError
+ 0001:0008E884       ComCtrls..ETreeViewError
+ 0001:00093ED4       ComCtrls..TAnimate
+ 0001:00097098       ComCtrls..TComboBoxExActionLink
+ 0001:000B2ECC       ComCtrls..TComboBoxExEnumerator
+ 0001:00096D8C       ComCtrls..TComboBoxExStrings
+ 0001:00096BA4       ComCtrls..TComboExItem
+ 0001:00096CD8       ComCtrls..TComboExItems
+ 0001:00096150       ComCtrls..TCommonCalendar
+ 0001:00090098       ComCtrls..TConversion
+ 0001:00096EA4       ComCtrls..TCustomComboBoxEx
+ 0001:0008D860       ComCtrls..TCustomHeaderControl
+ 0001:00092A7C       ComCtrls..TCustomListView
+ 0001:00090120       ComCtrls..TCustomRichEdit
+ 0001:0008C730       ComCtrls..TCustomStatusBar
+ 0001:0008A920       ComCtrls..TCustomTabControl
+ 0001:0008EE38       ComCtrls..TCustomTreeView
+ 0001:00091068       ComCtrls..TCustomUpDown
+ 0001:0008DEE4       ComCtrls..THeaderControl
+ 0001:0008D25C       ComCtrls..THeaderSection
+ 0001:0008D498       ComCtrls..THeaderSections
+ 0001:00091D00       ComCtrls..TIconOptions
+ 0001:000917D4       ComCtrls..TListColumn
+ 0001:00091998       ComCtrls..TListColumns
+ 0001:00091A4C       ComCtrls..TListItem
+ 0001:00091AE4       ComCtrls..TListItems
+ 0001:00092CF0       ComCtrls..TListView
+ 0001:00093D24       ComCtrls..TListViewActionLink
+ 0001:00095EE0       ComCtrls..TMonthCalColors
+ 0001:00096328       ComCtrls..TMonthCalendar
+ 0001:0008BA74       ComCtrls..TPageControl
+ 0001:0008FECC       ComCtrls..TParaAttributes
+ 0001:000902F0       ComCtrls..TRichEdit
+ 0001:000A1DC4       ComCtrls..TRichEditStrings
+ 0001:0008C96C       ComCtrls..TStatusBar
+ 0001:0008C478       ComCtrls..TStatusPanel
+ 0001:0008C61C       ComCtrls..TStatusPanels
+ 0001:000A4AEC       ComCtrls..TSubItems
+ 0001:0008AADC       ComCtrls..TTabControl
+ 0001:0008B414       ComCtrls..TTabSheet
+ 0001:000972E0       ComCtrls..TTabStrings
+ 0001:0008FE38       ComCtrls..TTextAttributes
+ 0001:00095018       ComCtrls..TToolBar
+ 0001:00094514       ComCtrls..TToolButton
+ 0001:0009441C       ComCtrls..TToolButtonActionLink
+ 0001:0008E694       ComCtrls..TTreeNode
+ 0001:0008E730       ComCtrls..TTreeNodes
+ 0001:0008F07C       ComCtrls..TTreeView
+ 0001:000911F0       ComCtrls..TUpDown
+ 0001:00091B70       ComCtrls..TWorkArea
+ 0001:00091C1C       ComCtrls..TWorkAreas
+ 0001:000A23F4       ComCtrls.AdjustLineBreaks
+ 0003:00001DB8       ComCtrls.AlignStyles
+ 0003:00001EBC       ComCtrls.Arrangements
+ 0003:00001EC4       ComCtrls.AutoArrange
+ 0003:00001E58       ComCtrls.AutoExpandStyles
+ 0003:00001E9C       ComCtrls.BorderStyles
+ 0003:00001E10       ComCtrls.BorderStyles
+ 0003:00001F84       ComCtrls.ButtonStates
+ 0003:00001F94       ComCtrls.ButtonStyles
+ 0003:00001E28       ComCtrls.ButtonStyles
+ 0003:00001E04       ComCtrls.cAddMode
+ 0001:000AE568       ComCtrls.CalcSize
+ 0003:00001F48       ComCtrls.CenterStyles
+ 0001:000971F0       ComCtrls.CheckCommonControl
+ 0003:00001E88       ComCtrls.Codes
+ 0003:00001F18       ComCtrls.Codes
+ 0004:00003678       ComCtrls.CoInitExProcLoaded
+ 0004:00003674       ComCtrls.CoInitializeExProc
+ 0003:00001FD4       ComCtrls.ColorIndex
+ 0003:00001EEC       ComCtrls.ColumnClicks
+ 0003:0000200C       ComCtrls.ComboBoxExStyles
+ 0003:00002018       ComCtrls.ComboExStyles
+ 0004:0000364C       ComCtrls.ComCtlVersion
+ 0002:0000075C       ComCtrls.ComCtrls
+ 0003:00001F60       ComCtrls.CommonAVIId
+ 0001:000AEE58       ComCtrls.ContainsActiveControl
+ 0003:00001D9C       ComCtrls.ConversionFormatList
+ 0001:000A7AC0       ComCtrls.ConvertFlags
+ 0001:000A7928       ComCtrls.ConvertMask
+ 0001:000A7AE4       ComCtrls.ConvertStates
+ 0001:000AACE0       ComCtrls.CreateResStream
+ 0003:00001FC8       ComCtrls.CustomizeStyles
+ 0001:000A6274       ComCtrls.DefaultListViewSort
+ 0001:0009C0F8       ComCtrls.DefaultTreeViewSort
+ 0003:00001F04       ComCtrls.Directions
+ 0003:00001FA0       ComCtrls.DownMessage
+ 0003:00001E40       ComCtrls.DragStyles
+ 0003:00001E30       ComCtrls.EditStyles
+ 0003:00001EA4       ComCtrls.EditStyles
+ 0003:00001E70       ComCtrls.Empty
+ 0001:000B42C8       ComCtrls.Finalization
+ 0001:000B0974       ComCtrls.FindButton
+ 0003:00001FB8       ComCtrls.FlatOnXp
+ 0003:00001FB0       ComCtrls.FlatStyles
+ 0004:00003648       ComCtrls.FRichEditModule
+ 0001:0009BAA4       ComCtrls.FullWindowUpdate
+ 0001:000A5EB4       ComCtrls.GetByteLength
+ 0001:00097260       ComCtrls.GetComCtlVersion
+ 0001:000AD784       ComCtrls.GetImageBitmap
+ 0001:00097218       ComCtrls.GetShellModule
+ 0003:00001DEC       ComCtrls.GripStyles
+ 0003:00001DFC       ComCtrls.HeaderStyles
+ 0003:00001E74       ComCtrls.HideScrollBars
+ 0003:00001E7C       ComCtrls.HideSelections
+ 0003:00001E38       ComCtrls.HideSelections
+ 0003:00001EB4       ComCtrls.HideSelections
+ 0003:00001E60       ComCtrls.HotTrackStyles
+ 0003:00001F30       ComCtrls.IAlignment
+ 0001:000971C4       ComCtrls.InitCommonControl
+ 0003:00001FD0       ComCtrls.InitDone
+ 0001:000B0CF8       ComCtrls.InitToolMenuHooks
+ 0001:000B0DF8       ComCtrls.InitToolMenuKeyHooks
+ 0001:000B2750       ComCtrls.IsBlankSysTime
+ 0001:000A3B88       ComCtrls.IsClass
+ 0001:000B1204       ComCtrls.IsMenuBar
+ 0001:000AFAC0       ComCtrls.IsToolButtonMouseMsg
+ 0004:00003660       ComCtrls.LastMenuItem
+ 0004:00003664       ComCtrls.LastMousePos
+ 0003:00001E18       ComCtrls.LineStyles
+ 0003:00001E98       ComCtrls.ListItemStreamVersion
+ 0003:00001FA8       ComCtrls.ListStyles
+ 0004:0000365C       ComCtrls.MenuButtonIndex
+ 0004:00003654       ComCtrls.MenuToolBar
+ 0004:00003658       ComCtrls.MenuToolBar2
+ 0003:00001EAC       ComCtrls.MultiSelections
+ 0003:00002004       ComCtrls.MultiSelFlags
+ 0001:000A1244       ComCtrls.NodeInList
+ 0003:00001E84       ComCtrls.Painting
+ 0001:000A66FC       ComCtrls.ReadCols
+ 0001:0009B004       ComCtrls.ReadSections
+ 0001:000B0D30       ComCtrls.ReleaseToolMenuHooks
+ 0001:000B0E1C       ComCtrls.ReleaseToolMenuKeyHooks
+ 0003:00001E20       ComCtrls.RootStyles
+ 0003:00001E68       ComCtrls.RowSelectStyles
+ 0003:00001DE4       ComCtrls.RRStyles
+ 0003:00001D84       ComCtrls.RTFConversionFormat
+ 0003:00001DA8       ComCtrls.RTL
+ 0003:00001DB0       ComCtrls.RTL
+ 0003:00001DA0       ComCtrls.RTL
+ 0003:00001DF4       ComCtrls.RTLReading
+ 0003:00001E48       ComCtrls.RTLStyles
+ 0001:000AFB80       ComCtrls.SendDropdownMsg
+ 0001:00097298       ComCtrls.SetComCtlStyle
+ 0004:00003644       ComCtrls.ShellModule
+ 0003:00001EE4       ComCtrls.ShowColumns
+ 0003:00001FF4       ComCtrls.ShowTodayCircleFlags
+ 0003:00001FEC       ComCtrls.ShowTodayFlags
+ 0001:000A1274       ComCtrls.SiblingNotInList
+ 0004:0000366C       ComCtrls.StillModal
+ 0001:000A2488       ComCtrls.StreamLoad
+ 0001:000A2428       ComCtrls.StreamSave
+ 0001:000973E0       ComCtrls.TabControlError
+ 0003:00001DD8       ComCtrls.TabStyles
+ 0001:000AB444       ComCtrls.TAnimate.CanAutoSize
+ 0001:000AB230       ComCtrls.TAnimate.CheckOpen
+ 0001:000AAAD8       ComCtrls.TAnimate.CMColorChanged
+ 0001:000AAAF4       ComCtrls.TAnimate.CNCommand
+ 0001:000AA6D0       ComCtrls.TAnimate.Create
+ 0001:000AA750       ComCtrls.TAnimate.CreateParams
+ 0001:000AA844       ComCtrls.TAnimate.CreateWnd
+ 0001:000AA868       ComCtrls.TAnimate.DestroyWnd
+ 0001:000AAB60       ComCtrls.TAnimate.DoClose
+ 0001:000AAB40       ComCtrls.TAnimate.DoOpen
+ 0001:000AAB80       ComCtrls.TAnimate.DoStart
+ 0001:000AABA0       ComCtrls.TAnimate.DoStop
+ 0001:000AAC64       ComCtrls.TAnimate.GetActualResHandle
+ 0001:000AAC9C       ComCtrls.TAnimate.GetActualResId
+ 0001:000AABE4       ComCtrls.TAnimate.GetAnimateParams
+ 0001:000AAD74       ComCtrls.TAnimate.GetFrameInfo
+ 0001:000AB300       ComCtrls.TAnimate.InternalClose
+ 0001:000AB260       ComCtrls.TAnimate.InternalOpen
+ 0001:000AABC4       ComCtrls.TAnimate.Loaded
+ 0001:000AB348       ComCtrls.TAnimate.Play
+ 0001:000AB3A8       ComCtrls.TAnimate.Reset
+ 0001:000AB3C8       ComCtrls.TAnimate.Seek
+ 0001:000AAE38       ComCtrls.TAnimate.SetActive
+ 0001:000AAC24       ComCtrls.TAnimate.SetAnimateParams
+ 0001:000AAE78       ComCtrls.TAnimate.SetCenter
+ 0001:000AAE8C       ComCtrls.TAnimate.SetCommonAVI
+ 0001:000AAF00       ComCtrls.TAnimate.SetFileName
+ 0001:000AB050       ComCtrls.TAnimate.SetOpen
+ 0001:000AB090       ComCtrls.TAnimate.SetRepetitions
+ 0001:000AB0AC       ComCtrls.TAnimate.SetResHandle
+ 0001:000AB100       ComCtrls.TAnimate.SetResName
+ 0001:000AB1BC       ComCtrls.TAnimate.SetStartFrame
+ 0001:000AB1EC       ComCtrls.TAnimate.SetStopFrame
+ 0001:000AB208       ComCtrls.TAnimate.SetTimers
+ 0001:000AB21C       ComCtrls.TAnimate.SetTransparent
+ 0001:000AB3FC       ComCtrls.TAnimate.Stop
+ 0001:000AA8A4       ComCtrls.TAnimate.UpdateActiveState
+ 0001:000AA8D4       ComCtrls.TAnimate.WMNCCalcSize
+ 0001:000AA8FC       ComCtrls.TAnimate.WMNCHitTest
+ 0001:000AA910       ComCtrls.TAnimate.WMNCPaint
+ 0001:000AAA1C       ComCtrls.TAnimate.WMSize
+ 0001:000AAA24       ComCtrls.TAnimate.WMWindowPosChanged
+ 0001:000B40CC       ComCtrls.TComboBoxExActionLink.AddItem
+ 0001:000B405C       ComCtrls.TComboBoxExActionLink.AddItem
+ 0001:000B4100       ComCtrls.TComboBoxExEnumerator.Clone
+ 0001:000B4144       ComCtrls.TComboBoxExEnumerator.Create
+ 0001:000B4180       ComCtrls.TComboBoxExEnumerator.GetCount
+ 0001:000B418C       ComCtrls.TComboBoxExEnumerator.GetString
+ 0001:000B41B0       ComCtrls.TComboBoxExEnumerator.Next
+ 0001:000B4288       ComCtrls.TComboBoxExEnumerator.Reset
+ 0001:000B429C       ComCtrls.TComboBoxExEnumerator.Skip
+ 0001:000B3A74       ComCtrls.TComboBoxExStrings.Add
+ 0001:000B3A98       ComCtrls.TComboBoxExStrings.AddObject
+ 0001:000B3AC8       ComCtrls.TComboBoxExStrings.Clear
+ 0001:000B3B30       ComCtrls.TComboBoxExStrings.Create
+ 0001:000B3BBC       ComCtrls.TComboBoxExStrings.Delete
+ 0001:000B3B8C       ComCtrls.TComboBoxExStrings.Destroy
+ 0001:000B3BC8       ComCtrls.TComboBoxExStrings.Exchange
+ 0001:000B3D14       ComCtrls.TComboBoxExStrings.Get
+ 0001:000B3D38       ComCtrls.TComboBoxExStrings.GetCapacity
+ 0001:000B3D44       ComCtrls.TComboBoxExStrings.GetCount
+ 0001:000B3EB0       ComCtrls.TComboBoxExStrings.GetItemClass
+ 0001:000B3EA8       ComCtrls.TComboBoxExStrings.GetItemsClass
+ 0001:000B3D50       ComCtrls.TComboBoxExStrings.GetObject
+ 0001:000B3D68       ComCtrls.TComboBoxExStrings.IndexOf
+ 0001:000B3E0C       ComCtrls.TComboBoxExStrings.IndexOfName
+ 0001:000B3E14       ComCtrls.TComboBoxExStrings.Insert
+ 0001:000B3E28       ComCtrls.TComboBoxExStrings.Move
+ 0001:000B3E48       ComCtrls.TComboBoxExStrings.PutObject
+ 0001:000B3E68       ComCtrls.TComboBoxExStrings.SetUpdateState
+ 0001:000B2AD0       ComCtrls.TComboExItem.Assign
+ 0001:000B2B24       ComCtrls.TComboExItem.SetCaption
+ 0001:000B2B58       ComCtrls.TComboExItem.SetData
+ 0001:000B2B8C       ComCtrls.TComboExItem.SetDisplayName
+ 0001:000B2BAC       ComCtrls.TComboExItem.SetImageIndex
+ 0001:000B2BDC       ComCtrls.TComboExItem.SetIndex
+ 0001:000B2BF8       ComCtrls.TComboExItem.SetOverlayImageIndex
+ 0001:000B2C14       ComCtrls.TComboExItem.SetSelectedImageIndex
+ 0001:000B2C30       ComCtrls.TComboExItems.Add
+ 0001:000B2C3C       ComCtrls.TComboExItems.AddItem
+ 0001:000B2CA4       ComCtrls.TComboExItems.GetComboItem
+ 0001:000B2CB8       ComCtrls.TComboExItems.Insert
+ 0001:000B2CF0       ComCtrls.TComboExItems.Notify
+ 0001:000B2D60       ComCtrls.TComboExItems.SetItem
+ 0001:000B1D5C       ComCtrls.TCommonCalendar.CheckEmptyDate
+ 0001:000B1D60       ComCtrls.TCommonCalendar.CheckValidDate
+ 0001:000B1C90       ComCtrls.TCommonCalendar.Create
+ 0001:000B1E98       ComCtrls.TCommonCalendar.CreateWnd
+ 0001:000B1D2C       ComCtrls.TCommonCalendar.Destroy
+ 0001:000B1F74       ComCtrls.TCommonCalendar.DoStoreEndDate
+ 0001:000B1F7C       ComCtrls.TCommonCalendar.DoStoreMaxDate
+ 0001:000B1F98       ComCtrls.TCommonCalendar.DoStoreMinDate
+ 0001:000B1F34       ComCtrls.TCommonCalendar.GetCalStyles
+ 0001:000B1FB4       ComCtrls.TCommonCalendar.GetDate
+ 0001:000B1FD0       ComCtrls.TCommonCalendar.SetCalColors
+ 0001:000B1FE4       ComCtrls.TCommonCalendar.SetDate
+ 0001:000B20A0       ComCtrls.TCommonCalendar.SetDateTime
+ 0001:000B2128       ComCtrls.TCommonCalendar.SetEndDate
+ 0001:000B21B0       ComCtrls.TCommonCalendar.SetFirstDayOfWeek
+ 0001:000B2220       ComCtrls.TCommonCalendar.SetMaxDate
+ 0001:000B231C       ComCtrls.TCommonCalendar.SetMaxSelectRange
+ 0001:000B2378       ComCtrls.TCommonCalendar.SetMinDate
+ 0001:000B2474       ComCtrls.TCommonCalendar.SetMonthDelta
+ 0001:000B24B4       ComCtrls.TCommonCalendar.SetMultiSelect
+ 0001:000B24F4       ComCtrls.TCommonCalendar.SetRange
+ 0001:000B2644       ComCtrls.TCommonCalendar.SetSelectedRange
+ 0001:000B26F4       ComCtrls.TCommonCalendar.SetShowToday
+ 0001:000B2714       ComCtrls.TCommonCalendar.SetShowTodayCircle
+ 0001:000B2734       ComCtrls.TCommonCalendar.SetWeekNumbers
+ 0001:000A1D9C       ComCtrls.TConversion.ConvertReadStream
+ 0001:000A1DB0       ComCtrls.TConversion.ConvertWriteStream
+ 0001:000B37B8       ComCtrls.TCustomComboBoxEx.ActionChange
+ 0001:000B32FC       ComCtrls.TCustomComboBoxEx.CMColorChanged
+ 0001:000B32D0       ComCtrls.TCustomComboBoxEx.CMParentColorChanged
+ 0001:000B30D0       ComCtrls.TCustomComboBoxEx.CNNotify
+ 0001:000B33D4       ComCtrls.TCustomComboBoxEx.ComboExWndProc
+ 0001:000B2F30       ComCtrls.TCustomComboBoxEx.Create
+ 0001:000B3120       ComCtrls.TCustomComboBoxEx.CreateParams
+ 0001:000B33F4       ComCtrls.TCustomComboBoxEx.CreateWnd
+ 0001:000B3058       ComCtrls.TCustomComboBoxEx.Destroy
+ 0001:000B3864       ComCtrls.TCustomComboBoxEx.DestroyWnd
+ 0001:000B38C8       ComCtrls.TCustomComboBoxEx.Focused
+ 0001:000B3750       ComCtrls.TCustomComboBoxEx.GetActionLinkClass
+ 0001:000B373C       ComCtrls.TCustomComboBoxEx.GetItemCount
+ 0001:000B385C       ComCtrls.TCustomComboBoxEx.GetItemHt
+ 0001:000B3748       ComCtrls.TCustomComboBoxEx.GetItemsClass
+ 0001:000B322C       ComCtrls.TCustomComboBoxEx.ImageListChange
+ 0001:000B32A0       ComCtrls.TCustomComboBoxEx.Notification
+ 0001:000B381C       ComCtrls.TCustomComboBoxEx.SetDropDownCount
+ 0001:000B3198       ComCtrls.TCustomComboBoxEx.SetImages
+ 0001:000B3758       ComCtrls.TCustomComboBoxEx.SetStyleEx
+ 0001:000B3904       ComCtrls.TCustomComboBoxEx.UpdateAutoComplete
+ 0001:000B3A24       ComCtrls.TCustomComboBoxEx.WMHelp
+ 0001:000B335C       ComCtrls.TCustomComboBoxEx.WMLButtonDown
+ 0001:000B3258       ComCtrls.TCustomComboBoxEx.WndProc
+ 0001:0009B1F0       ComCtrls.TCustomHeaderControl.CMBiDiModeChanged
+ 0001:0009B6A8       ComCtrls.TCustomHeaderControl.CNDrawItem
+ 0001:0009B7C0       ComCtrls.TCustomHeaderControl.CNNotify
+ 0001:0009AE64       ComCtrls.TCustomHeaderControl.Create
+ 0001:0009AF8C       ComCtrls.TCustomHeaderControl.CreateParams
+ 0001:0009C0B0       ComCtrls.TCustomHeaderControl.CreateSection
+ 0001:0009C0E8       ComCtrls.TCustomHeaderControl.CreateSections
+ 0001:0009B0D0       ComCtrls.TCustomHeaderControl.CreateWnd
+ 0001:0009AF34       ComCtrls.TCustomHeaderControl.Destroy
+ 0001:0009B140       ComCtrls.TCustomHeaderControl.DestroyWnd
+ 0001:0009BDA4       ComCtrls.TCustomHeaderControl.DoSectionDrag
+ 0001:0009C034       ComCtrls.TCustomHeaderControl.DoSectionEndDrag
+ 0001:0009B3F8       ComCtrls.TCustomHeaderControl.DrawSection
+ 0001:0009B24C       ComCtrls.TCustomHeaderControl.FlipChildren
+ 0001:0009BE80       ComCtrls.TCustomHeaderControl.ImageListChange
+ 0001:0009BDC8       ComCtrls.TCustomHeaderControl.Notification
+ 0001:0009B434       ComCtrls.TCustomHeaderControl.SectionClick
+ 0001:0009BEB0       ComCtrls.TCustomHeaderControl.SectionDrag
+ 0001:0009C090       ComCtrls.TCustomHeaderControl.SectionEndDrag
+ 0001:0009B454       ComCtrls.TCustomHeaderControl.SectionResize
+ 0001:0009B474       ComCtrls.TCustomHeaderControl.SectionTrack
+ 0001:0009B4DC       ComCtrls.TCustomHeaderControl.SetDragReorder
+ 0001:0009B4A0       ComCtrls.TCustomHeaderControl.SetFullDrag
+ 0001:0009B4B4       ComCtrls.TCustomHeaderControl.SetHotTrack
+ 0001:0009BDFC       ComCtrls.TCustomHeaderControl.SetImages
+ 0001:0009B4F0       ComCtrls.TCustomHeaderControl.SetSections
+ 0001:0009B4C8       ComCtrls.TCustomHeaderControl.SetStyle
+ 0001:0009B500       ComCtrls.TCustomHeaderControl.UpdateItem
+ 0001:0009B608       ComCtrls.TCustomHeaderControl.UpdateSection
+ 0001:0009B62C       ComCtrls.TCustomHeaderControl.UpdateSections
+ 0001:0009BB80       ComCtrls.TCustomHeaderControl.WMLButtonDown
+ 0001:0009BBE0       ComCtrls.TCustomHeaderControl.WMSize
+ 0001:0009BD8C       ComCtrls.TCustomHeaderControl.WMWindowPosChanged
+ 0001:0009BADC       ComCtrls.TCustomHeaderControl.WndProc
+ 0001:000AA5DC       ComCtrls.TCustomListView.ActionChange
+ 0001:000A8A38       ComCtrls.TCustomListView.AddItem
+ 0001:000A8FD0       ComCtrls.TCustomListView.AlphaSort
+ 0001:000AA274       ComCtrls.TCustomListView.AreItemsStored
+ 0001:000A95B4       ComCtrls.TCustomListView.Arrange
+ 0001:000A8AA0       ComCtrls.TCustomListView.CanChange
+ 0001:000A8B58       ComCtrls.TCustomListView.CanEdit
+ 0001:000A9C04       ComCtrls.TCustomListView.CanvasChanged
+ 0001:000A8AE8       ComCtrls.TCustomListView.Change
+ 0001:000A8954       ComCtrls.TCustomListView.ChangeScale
+ 0001:000AA57C       ComCtrls.TCustomListView.Clear
+ 0001:000AA3DC       ComCtrls.TCustomListView.ClearSelection
+ 0001:000A73D0       ComCtrls.TCustomListView.CMColorChanged
+ 0001:000A73F4       ComCtrls.TCustomListView.CMCtl3DChanged
+ 0001:000A8DAC       ComCtrls.TCustomListView.CMDrag
+ 0001:000A7674       ComCtrls.TCustomListView.CMFontChanged
+ 0001:000AA0C0       ComCtrls.TCustomListView.CMHintShow
+ 0001:000A9AD4       ComCtrls.TCustomListView.CNDrawItem
+ 0001:000A7B30       ComCtrls.TCustomListView.CNNotify
+ 0001:000A89C8       ComCtrls.TCustomListView.ColClick
+ 0001:000A89E8       ComCtrls.TCustomListView.ColRightClick
+ 0001:000A765C       ComCtrls.TCustomListView.ColumnsShowing
+ 0001:000AA418       ComCtrls.TCustomListView.CopySelection
+ 0001:000A62E0       ComCtrls.TCustomListView.Create
+ 0001:000A78DC       ComCtrls.TCustomListView.CreateListItem
+ 0001:000A7918       ComCtrls.TCustomListView.CreateListItems
+ 0001:000A65DC       ComCtrls.TCustomListView.CreateParams
+ 0001:000A67B0       ComCtrls.TCustomListView.CreateWnd
+ 0001:000A9D20       ComCtrls.TCustomListView.CustomDraw
+ 0001:000A9D78       ComCtrls.TCustomListView.CustomDrawItem
+ 0001:000A9DEC       ComCtrls.TCustomListView.CustomDrawSubItem
+ 0001:000A8F8C       ComCtrls.TCustomListView.CustomSort
+ 0001:000A8B20       ComCtrls.TCustomListView.Delete
+ 0001:000AA48C       ComCtrls.TCustomListView.DeleteSelected
+ 0001:000A64DC       ComCtrls.TCustomListView.Destroy
+ 0001:000A69E0       ComCtrls.TCustomListView.DestroyWnd
+ 0001:000A990C       ComCtrls.TCustomListView.DoAutoSize
+ 0001:000A8EE4       ComCtrls.TCustomListView.DoDragOver
+ 0001:000A8D80       ComCtrls.TCustomListView.DoEndDrag
+ 0001:000AA1E8       ComCtrls.TCustomListView.DoInfoTip
+ 0001:000A8CA0       ComCtrls.TCustomListView.DoStartDrag
+ 0001:000A9E64       ComCtrls.TCustomListView.DrawItem
+ 0001:000A9F20       ComCtrls.TCustomListView.DrawWorkAreas
+ 0001:000A8B84       ComCtrls.TCustomListView.Edit
+ 0001:000A6DE4       ComCtrls.TCustomListView.EditWndProc
+ 0001:000AA5D4       ComCtrls.TCustomListView.GetActionLinkClass
+ 0001:000A9294       ComCtrls.TCustomListView.GetColumnFromIndex
+ 0001:000AA2F4       ComCtrls.TCustomListView.GetColumnFromTag
+ 0001:000AA534       ComCtrls.TCustomListView.GetCount
+ 0001:000A8C04       ComCtrls.TCustomListView.GetDragImages
+ 0001:000A9320       ComCtrls.TCustomListView.GetDropTarget
+ 0001:000A938C       ComCtrls.TCustomListView.GetFocused
+ 0001:000AA244       ComCtrls.TCustomListView.GetHoverTime
+ 0001:000A93E8       ComCtrls.TCustomListView.GetImageIndex
+ 0001:000A7974       ComCtrls.TCustomListView.GetItem
+ 0001:000A9548       ComCtrls.TCustomListView.GetItemAt
+ 0001:000A77E0       ComCtrls.TCustomListView.GetItemIndex
+ 0001:000A94DC       ComCtrls.TCustomListView.GetNearestItem
+ 0001:000A9408       ComCtrls.TCustomListView.GetNextItem
+ 0001:000A7AA8       ComCtrls.TCustomListView.GetSelCount
+ 0001:000A92A0       ComCtrls.TCustomListView.GetSelected
+ 0001:000A9EDC       ComCtrls.TCustomListView.GetSubItemImage
+ 0001:000A9088       ComCtrls.TCustomListView.GetTopItem
+ 0001:000A906C       ComCtrls.TCustomListView.GetViewOrigin
+ 0001:000A9044       ComCtrls.TCustomListView.GetVisibleRowCount
+ 0001:000A6CEC       ComCtrls.TCustomListView.HeaderWndProc
+ 0001:000A6ABC       ComCtrls.TCustomListView.ImageListChange
+ 0001:000A8A18       ComCtrls.TCustomListView.InsertItem
+ 0001:000A9C0C       ComCtrls.TCustomListView.IsCustomDrawn
+ 0001:000AA2AC       ComCtrls.TCustomListView.MouseUp
+ 0001:000A6B30       ComCtrls.TCustomListView.Notification
+ 0001:000A7808       ComCtrls.TCustomListView.OwnerDataFetch
+ 0001:000A7830       ComCtrls.TCustomListView.OwnerDataFind
+ 0001:000A787C       ComCtrls.TCustomListView.OwnerDataHint
+ 0001:000A78A4       ComCtrls.TCustomListView.OwnerDataStateChange
+ 0001:000A6F04       ComCtrls.TCustomListView.ResetExStyles
+ 0001:000A700C       ComCtrls.TCustomListView.RestoreChecks
+ 0001:000A7098       ComCtrls.TCustomListView.SaveChecks
+ 0001:000A90C8       ComCtrls.TCustomListView.Scroll
+ 0001:000AA540       ComCtrls.TCustomListView.SelectAll
+ 0001:000A7398       ComCtrls.TCustomListView.SetAllocBy
+ 0001:000A7288       ComCtrls.TCustomListView.SetBorderStyle
+ 0001:000A711C       ComCtrls.TCustomListView.SetCheckboxes
+ 0001:000A729C       ComCtrls.TCustomListView.SetColumnClick
+ 0001:000A730C       ComCtrls.TCustomListView.SetColumnHeaders
+ 0001:000A9348       ComCtrls.TCustomListView.SetDropTarget
+ 0001:000A7260       ComCtrls.TCustomListView.SetFlatScrollBars
+ 0001:000A93A4       ComCtrls.TCustomListView.SetFocused
+ 0001:000A7274       ComCtrls.TCustomListView.SetFullDrag
+ 0001:000A71BC       ComCtrls.TCustomListView.SetGridLines
+ 0001:000A76B4       ComCtrls.TCustomListView.SetHideSelection
+ 0001:000A71D0       ComCtrls.TCustomListView.SetHotTrack
+ 0001:000A71E4       ComCtrls.TCustomListView.SetHotTrackStyles
+ 0001:000AA208       ComCtrls.TCustomListView.SetHoverTime
+ 0001:000A76DC       ComCtrls.TCustomListView.SetIconOptions
+ 0001:000A6A8C       ComCtrls.TCustomListView.SetImageList
+ 0001:000A72B0       ComCtrls.TCustomListView.SetItemIndex
+ 0001:000A8F70       ComCtrls.TCustomListView.SetItems
+ 0001:000A90E8       ComCtrls.TCustomListView.SetLargeImages
+ 0001:000A8F7C       ComCtrls.TCustomListView.SetListColumns
+ 0001:000A72F8       ComCtrls.TCustomListView.SetMultiSelect
+ 0001:000A720C       ComCtrls.TCustomListView.SetOwnerData
+ 0001:000A7238       ComCtrls.TCustomListView.SetOwnerDraw
+ 0001:000A76C8       ComCtrls.TCustomListView.SetReadOnly
+ 0001:000A724C       ComCtrls.TCustomListView.SetRowSelect
+ 0001:000A92B8       ComCtrls.TCustomListView.SetSelected
+ 0001:000AA0B0       ComCtrls.TCustomListView.SetShowWorkAreas
+ 0001:000A915C       ComCtrls.TCustomListView.SetSmallImages
+ 0001:000A9008       ComCtrls.TCustomListView.SetSortType
+ 0001:000A91D8       ComCtrls.TCustomListView.SetStateImages
+ 0001:000A734C       ComCtrls.TCustomListView.SetTextBkColor
+ 0001:000A7320       ComCtrls.TCustomListView.SetTextColor
+ 0001:000A770C       ComCtrls.TCustomListView.SetViewStyle
+ 0001:000A961C       ComCtrls.TCustomListView.UpdateColumn
+ 0001:000A95DC       ComCtrls.TCustomListView.UpdateColumns
+ 0001:000A6EE4       ComCtrls.TCustomListView.UpdateItems
+ 0001:000A7668       ComCtrls.TCustomListView.ValidHeaderHandle
+ 0001:000AA330       ComCtrls.TCustomListView.WMContextMenu
+ 0001:000AA3B8       ComCtrls.TCustomListView.WMCtlColorEdit
+ 0001:000A9788       ComCtrls.TCustomListView.WMLButtonDown
+ 0001:000A7418       ComCtrls.TCustomListView.WMNotify
+ 0001:000AA088       ComCtrls.TCustomListView.WMPaint
+ 0001:000A7790       ComCtrls.TCustomListView.WMParentNotify
+ 0001:000AA640       ComCtrls.TCustomListView.WMVScroll
+ 0001:000A9AA0       ComCtrls.TCustomListView.WMWindowPosChanged
+ 0001:000A8C20       ComCtrls.TCustomListView.WndProc
+ 0001:000A2B84       ComCtrls.TCustomRichEdit.Clear
+ 0001:000A3108       ComCtrls.TCustomRichEdit.CMBiDiModeChanged
+ 0001:000A3214       ComCtrls.TCustomRichEdit.CMColorChanged
+ 0001:000A2F18       ComCtrls.TCustomRichEdit.CMFontChanged
+ 0001:000A35C0       ComCtrls.TCustomRichEdit.CNNotify
+ 0001:000A29F8       ComCtrls.TCustomRichEdit.Create
+ 0001:000A2B9C       ComCtrls.TCustomRichEdit.CreateParams
+ 0001:000A2C28       ComCtrls.TCustomRichEdit.CreateWnd
+ 0001:000A2B28       ComCtrls.TCustomRichEdit.Destroy
+ 0001:000A2D80       ComCtrls.TCustomRichEdit.DestroyWnd
+ 0001:000A2F28       ComCtrls.TCustomRichEdit.DoSetMaxLength
+ 0001:000A36DC       ComCtrls.TCustomRichEdit.FindText
+ 0001:000A2F48       ComCtrls.TCustomRichEdit.GetCaretPos
+ 0001:000A31FC       ComCtrls.TCustomRichEdit.GetPlainText
+ 0001:000A2FF4       ComCtrls.TCustomRichEdit.GetSelLength
+ 0001:000A301C       ComCtrls.TCustomRichEdit.GetSelStart
+ 0001:000A30C4       ComCtrls.TCustomRichEdit.GetSelText
+ 0001:000A3040       ComCtrls.TCustomRichEdit.GetSelTextBuf
+ 0001:000A3278       ComCtrls.TCustomRichEdit.Print
+ 0001:000A366C       ComCtrls.TCustomRichEdit.ProtectChange
+ 0001:000A36BC       ComCtrls.TCustomRichEdit.RequestSize
+ 0001:000A363C       ComCtrls.TCustomRichEdit.SaveClipboard
+ 0001:000A369C       ComCtrls.TCustomRichEdit.SelectionChange
+ 0001:000A2FA8       ComCtrls.TCustomRichEdit.SetCaretPos
+ 0001:000A315C       ComCtrls.TCustomRichEdit.SetHideScrollBars
+ 0001:000A3170       ComCtrls.TCustomRichEdit.SetHideSelection
+ 0001:000A3208       ComCtrls.TCustomRichEdit.SetPlainText
+ 0001:000A3240       ComCtrls.TCustomRichEdit.SetRichEditStrings
+ 0001:000A31A0       ComCtrls.TCustomRichEdit.SetSelLength
+ 0001:000A3250       ComCtrls.TCustomRichEdit.SetSelStart
+ 0001:000A2E88       ComCtrls.TCustomRichEdit.WMNCDestroy
+ 0001:000A3450       ComCtrls.TCustomRichEdit.WMPaint
+ 0001:000A2EA0       ComCtrls.TCustomRichEdit.WMRButtonUp
+ 0001:000A3514       ComCtrls.TCustomRichEdit.WMSetCursor
+ 0001:000A2E90       ComCtrls.TCustomRichEdit.WMSetFont
+ 0001:0009A924       ComCtrls.TCustomStatusBar.ChangeScale
+ 0001:0009A144       ComCtrls.TCustomStatusBar.CMBiDiModeChanged
+ 0001:0009A844       ComCtrls.TCustomStatusBar.CMColorChanged
+ 0001:0009A858       ComCtrls.TCustomStatusBar.CMParentFontChanged
+ 0001:0009A8FC       ComCtrls.TCustomStatusBar.CMSysColorChange
+ 0001:0009A910       ComCtrls.TCustomStatusBar.CMSysFontChanged
+ 0001:0009A66C       ComCtrls.TCustomStatusBar.CMWinIniChange
+ 0001:0009A694       ComCtrls.TCustomStatusBar.CNDrawItem
+ 0001:00099DAC       ComCtrls.TCustomStatusBar.Create
+ 0001:0009AA08       ComCtrls.TCustomStatusBar.CreatePanel
+ 0001:0009AA44       ComCtrls.TCustomStatusBar.CreatePanels
+ 0001:00099EA0       ComCtrls.TCustomStatusBar.CreateParams
+ 0001:00099F24       ComCtrls.TCustomStatusBar.CreateWnd
+ 0001:00099E64       ComCtrls.TCustomStatusBar.Destroy
+ 0001:00099FAC       ComCtrls.TCustomStatusBar.DoHint
+ 0001:0009A04C       ComCtrls.TCustomStatusBar.DoRightToLeftAlignment
+ 0001:00099FD0       ComCtrls.TCustomStatusBar.DrawPanel
+ 0001:0009A87C       ComCtrls.TCustomStatusBar.ExecuteAction
+ 0001:0009A1BC       ComCtrls.TCustomStatusBar.FlipChildren
+ 0001:0009AA54       ComCtrls.TCustomStatusBar.GetPanelClass
+ 0001:0009A7F8       ComCtrls.TCustomStatusBar.IsFontStored
+ 0001:0009A94C       ComCtrls.TCustomStatusBar.SetBounds
+ 0001:0009A000       ComCtrls.TCustomStatusBar.SetPanels
+ 0001:0009A970       ComCtrls.TCustomStatusBar.SetParent
+ 0001:0009A010       ComCtrls.TCustomStatusBar.SetSimplePanel
+ 0001:0009A118       ComCtrls.TCustomStatusBar.SetSimpleText
+ 0001:0009A37C       ComCtrls.TCustomStatusBar.SetSizeGrip
+ 0001:0009A814       ComCtrls.TCustomStatusBar.SetUseSystemFont
+ 0001:0009A394       ComCtrls.TCustomStatusBar.SyncToSystemFont
+ 0001:0009A3C4       ComCtrls.TCustomStatusBar.UpdatePanel
+ 0001:0009A550       ComCtrls.TCustomStatusBar.UpdatePanels
+ 0001:0009A0B4       ComCtrls.TCustomStatusBar.UpdateSimpleText
+ 0001:0009A978       ComCtrls.TCustomStatusBar.ValidateSizeGrip
+ 0001:0009AA5C       ComCtrls.TCustomStatusBar.WMEraseBkGnd
+ 0001:0009A7A0       ComCtrls.TCustomStatusBar.WMGetTextLength
+ 0001:0009A7B4       ComCtrls.TCustomStatusBar.WMPaint
+ 0001:0009A7D4       ComCtrls.TCustomStatusBar.WMSize
+ 0001:00098688       ComCtrls.TCustomTabControl.AdjustClientRect
+ 0001:00097A74       ComCtrls.TCustomTabControl.CanChange
+ 0001:00097AA0       ComCtrls.TCustomTabControl.CanShowTab
+ 0001:00097AA4       ComCtrls.TCustomTabControl.Change
+ 0001:000985A4       ComCtrls.TCustomTabControl.CMDialogChar
+ 0001:00098504       ComCtrls.TCustomTabControl.CMFontChanged
+ 0001:0009852C       ComCtrls.TCustomTabControl.CMSysColorChange
+ 0001:00098554       ComCtrls.TCustomTabControl.CMTabStopChanged
+ 0001:0009833C       ComCtrls.TCustomTabControl.CNDrawItem
+ 0001:00098560       ComCtrls.TCustomTabControl.CNNotify
+ 0001:00097960       ComCtrls.TCustomTabControl.Create
+ 0001:00097AC4       ComCtrls.TCustomTabControl.CreateParams
+ 0001:00097BCC       ComCtrls.TCustomTabControl.CreateWnd
+ 0001:00097A20       ComCtrls.TCustomTabControl.Destroy
+ 0001:00097C54       ComCtrls.TCustomTabControl.DrawTab
+ 0001:00097C90       ComCtrls.TCustomTabControl.GetDisplayRect
+ 0001:00097CC4       ComCtrls.TCustomTabControl.GetImageIndex
+ 0001:00097CEC       ComCtrls.TCustomTabControl.GetTabIndex
+ 0001:0009873C       ComCtrls.TCustomTabControl.GetTabs
+ 0001:00097DD8       ComCtrls.TCustomTabControl.ImageListChange
+ 0001:00097DF8       ComCtrls.TCustomTabControl.InternalSetMultiLine
+ 0001:00097D08       ComCtrls.TCustomTabControl.Loaded
+ 0001:00097D38       ComCtrls.TCustomTabControl.Notification
+ 0001:00097D24       ComCtrls.TCustomTabControl.SetHotTrack
+ 0001:00097D68       ComCtrls.TCustomTabControl.SetImages
+ 0001:00097E88       ComCtrls.TCustomTabControl.SetMultiLine
+ 0001:00097EA8       ComCtrls.TCustomTabControl.SetMultiSelect
+ 0001:00097EBC       ComCtrls.TCustomTabControl.SetOwnerDraw
+ 0001:00097ED0       ComCtrls.TCustomTabControl.SetRaggedRight
+ 0001:00097EEC       ComCtrls.TCustomTabControl.SetScrollOpposite
+ 0001:00097F0C       ComCtrls.TCustomTabControl.SetStyle
+ 0001:00097F9C       ComCtrls.TCustomTabControl.SetTabHeight
+ 0001:00098048       ComCtrls.TCustomTabControl.SetTabIndex
+ 0001:0009806C       ComCtrls.TCustomTabControl.SetTabPosition
+ 0001:00098104       ComCtrls.TCustomTabControl.SetTabs
+ 0001:00098114       ComCtrls.TCustomTabControl.SetTabWidth
+ 0001:000981D8       ComCtrls.TCustomTabControl.TabsChanged
+ 0001:000986B8       ComCtrls.TCustomTabControl.TCMAdjustRect
+ 0001:00098240       ComCtrls.TCustomTabControl.UpdateTabImages
+ 0001:00098218       ComCtrls.TCustomTabControl.UpdateTabSize
+ 0001:00098430       ComCtrls.TCustomTabControl.WMDestroy
+ 0001:000984C0       ComCtrls.TCustomTabControl.WMNotifyFormat
+ 0001:000984E4       ComCtrls.TCustomTabControl.WMSize
+ 0001:0009FF94       ComCtrls.TCustomTreeView.Added
+ 0001:0009EBF0       ComCtrls.TCustomTreeView.AlphaSort
+ 0001:0009FF18       ComCtrls.TCustomTreeView.CanChange
+ 0001:000A0040       ComCtrls.TCustomTreeView.CanCollapse
+ 0001:000A006C       ComCtrls.TCustomTreeView.CanEdit
+ 0001:0009FFF4       ComCtrls.TCustomTreeView.CanExpand
+ 0001:000A0684       ComCtrls.TCustomTreeView.CanvasChanged
+ 0001:0009FF44       ComCtrls.TCustomTreeView.Change
+ 0001:000A0800       ComCtrls.TCustomTreeView.ClearSelection
+ 0001:0009EB48       ComCtrls.TCustomTreeView.CMColorChanged
+ 0001:0009EB78       ComCtrls.TCustomTreeView.CMCtl3DChanged
+ 0001:0009FDF4       ComCtrls.TCustomTreeView.CMDrag
+ 0001:0009EB94       ComCtrls.TCustomTreeView.CMFontChanged
+ 0001:0009EBC8       ComCtrls.TCustomTreeView.CMSysColorChange
+ 0001:0009F1A4       ComCtrls.TCustomTreeView.CNNotify
+ 0001:000A0020       ComCtrls.TCustomTreeView.Collapse
+ 0001:000A0838       ComCtrls.TCustomTreeView.ControlSelectNode
+ 0001:000A089C       ComCtrls.TCustomTreeView.ControlShiftSelectNode
+ 0001:0009E2A4       ComCtrls.TCustomTreeView.Create
+ 0001:000A0148       ComCtrls.TCustomTreeView.CreateNode
+ 0001:000A0184       ComCtrls.TCustomTreeView.CreateNodes
+ 0001:0009E50C       ComCtrls.TCustomTreeView.CreateParams
+ 0001:0009E624       ComCtrls.TCustomTreeView.CreateWnd
+ 0001:000A072C       ComCtrls.TCustomTreeView.CustomDraw
+ 0001:000A0784       ComCtrls.TCustomTreeView.CustomDrawItem
+ 0001:0009EBFC       ComCtrls.TCustomTreeView.CustomSort
+ 0001:0009FFB4       ComCtrls.TCustomTreeView.Delete
+ 0001:000A1220       ComCtrls.TCustomTreeView.Deselect
+ 0001:0009E45C       ComCtrls.TCustomTreeView.Destroy
+ 0001:0009E86C       ComCtrls.TCustomTreeView.DestroyWnd
+ 0001:0009FE7C       ComCtrls.TCustomTreeView.DoDragOver
+ 0001:0009FDD4       ComCtrls.TCustomTreeView.DoEndDrag
+ 0001:000A08B8       ComCtrls.TCustomTreeView.DoEnter
+ 0001:000A08CC       ComCtrls.TCustomTreeView.DoExit
+ 0001:0009FD3C       ComCtrls.TCustomTreeView.DoStartDrag
+ 0001:000A0098       ComCtrls.TCustomTreeView.Edit
+ 0001:0009EA48       ComCtrls.TCustomTreeView.EditWndProc
+ 0001:0009FFD4       ComCtrls.TCustomTreeView.Expand
+ 0001:000A12DC       ComCtrls.TCustomTreeView.FindNextToSelect
+ 0001:000A08E0       ComCtrls.TCustomTreeView.FinishSelection
+ 0001:0009EFC4       ComCtrls.TCustomTreeView.FullCollapse
+ 0001:0009EF98       ComCtrls.TCustomTreeView.FullExpand
+ 0001:0009F104       ComCtrls.TCustomTreeView.GetChangeDelay
+ 0001:0009FC88       ComCtrls.TCustomTreeView.GetDragImages
+ 0001:0009F110       ComCtrls.TCustomTreeView.GetDropTarget
+ 0001:0009EE8C       ComCtrls.TCustomTreeView.GetHitTestInfoAt
+ 0001:0009FED8       ComCtrls.TCustomTreeView.GetImageIndex
+ 0001:0009EF80       ComCtrls.TCustomTreeView.GetIndent
+ 0001:0009EE48       ComCtrls.TCustomTreeView.GetNodeAt
+ 0001:0009F17C       ComCtrls.TCustomTreeView.GetNodeFromItem
+ 0001:0009F08C       ComCtrls.TCustomTreeView.GetSelected
+ 0001:0009FEF8       ComCtrls.TCustomTreeView.GetSelectedIndex
+ 0001:000A0AD4       ComCtrls.TCustomTreeView.GetSelection
+ 0001:000A0AC8       ComCtrls.TCustomTreeView.GetSelectionCount
+ 0001:000A1368       ComCtrls.TCustomTreeView.GetSelections
+ 0001:0009F00C       ComCtrls.TCustomTreeView.GetTopItem
+ 0001:000A01C4       ComCtrls.TCustomTreeView.ImageListChange
+ 0001:000A0AEC       ComCtrls.TCustomTreeView.InvalidateSelectionsRects
+ 0001:000A068C       ComCtrls.TCustomTreeView.IsCustomDrawn
+ 0001:0009EFF0       ComCtrls.TCustomTreeView.Loaded
+ 0001:000A0B38       ComCtrls.TCustomTreeView.MouseDown
+ 0001:000A0BA8       ComCtrls.TCustomTreeView.NodeDeselect
+ 0001:000A0BD0       ComCtrls.TCustomTreeView.NodeSelect
+ 0001:000A0220       ComCtrls.TCustomTreeView.Notification
+ 0001:0009F064       ComCtrls.TCustomTreeView.OnChangeTimer
+ 0001:000A0BF8       ComCtrls.TCustomTreeView.Select
+ 0001:000A1094       ComCtrls.TCustomTreeView.Select
+ 0001:000A101C       ComCtrls.TCustomTreeView.Select
+ 0001:000A0C20       ComCtrls.TCustomTreeView.SelectNode
+ 0001:0009ECB8       ComCtrls.TCustomTreeView.SetAutoExpand
+ 0001:0009ED68       ComCtrls.TCustomTreeView.SetBorderStyle
+ 0001:0009EDA4       ComCtrls.TCustomTreeView.SetButtonStyle
+ 0001:0009F0F8       ComCtrls.TCustomTreeView.SetChangeDelay
+ 0001:0009ED7C       ComCtrls.TCustomTreeView.SetDragMode
+ 0001:0009F148       ComCtrls.TCustomTreeView.SetDropTarget
+ 0001:0009EE18       ComCtrls.TCustomTreeView.SetHideSelection
+ 0001:0009ECD4       ComCtrls.TCustomTreeView.SetHotTrack
+ 0001:000A0194       ComCtrls.TCustomTreeView.SetImageList
+ 0001:000A0260       ComCtrls.TCustomTreeView.SetImages
+ 0001:0009EF54       ComCtrls.TCustomTreeView.SetIndent
+ 0001:0009EDC0       ComCtrls.TCustomTreeView.SetLineStyle
+ 0001:000A0C98       ComCtrls.TCustomTreeView.SetMultiSelect
+ 0001:000A0CCC       ComCtrls.TCustomTreeView.SetMultiSelectStyle
+ 0001:0009EDF8       ComCtrls.TCustomTreeView.SetReadOnly
+ 0001:0009EDDC       ComCtrls.TCustomTreeView.SetRootStyle
+ 0001:0009ECF0       ComCtrls.TCustomTreeView.SetRowSelect
+ 0001:0009F0D4       ComCtrls.TCustomTreeView.SetSelected
+ 0001:0009ED2C       ComCtrls.TCustomTreeView.SetSortType
+ 0001:000A02C8       ComCtrls.TCustomTreeView.SetStateImages
+ 0001:0009ED0C       ComCtrls.TCustomTreeView.SetToolTips
+ 0001:0009F03C       ComCtrls.TCustomTreeView.SetTopItem
+ 0001:0009EF48       ComCtrls.TCustomTreeView.SetTreeNodes
+ 0001:000A0CF4       ComCtrls.TCustomTreeView.ShiftSelectNode
+ 0001:000A0ED4       ComCtrls.TCustomTreeView.Subselect
+ 0001:000A0F70       ComCtrls.TCustomTreeView.ValidateSelection
+ 0001:000A0334       ComCtrls.TCustomTreeView.WMContextMenu
+ 0001:000A0400       ComCtrls.TCustomTreeView.WMCtlColorEdit
+ 0001:000A0424       ComCtrls.TCustomTreeView.WMLButtonDown
+ 0001:000A0540       ComCtrls.TCustomTreeView.WMNotify
+ 0001:0009FCA8       ComCtrls.TCustomTreeView.WndProc
+ 0001:000A3A70       ComCtrls.TCustomUpDown.CanChange
+ 0001:000A3B68       ComCtrls.TCustomUpDown.Click
+ 0001:000A3B14       ComCtrls.TCustomUpDown.CMAllChildrenFlipped
+ 0001:000A3B30       ComCtrls.TCustomUpDown.CNNotify
+ 0001:000A3734       ComCtrls.TCustomUpDown.Create
+ 0001:000A3800       ComCtrls.TCustomUpDown.CreateParams
+ 0001:000A3894       ComCtrls.TCustomUpDown.CreateWnd
+ 0001:000A3A50       ComCtrls.TCustomUpDown.DoCanChange
+ 0001:000A3E68       ComCtrls.TCustomUpDown.GetPosition
+ 0001:000A3E18       ComCtrls.TCustomUpDown.Notification
+ 0001:000A40E8       ComCtrls.TCustomUpDown.SetAlignButton
+ 0001:000A4124       ComCtrls.TCustomUpDown.SetArrowKeys
+ 0001:000A3BB8       ComCtrls.TCustomUpDown.SetAssociate
+ 0001:000A3F40       ComCtrls.TCustomUpDown.SetIncrement
+ 0001:000A3EF0       ComCtrls.TCustomUpDown.SetMax
+ 0001:000A3EA0       ComCtrls.TCustomUpDown.SetMin
+ 0001:000A4074       ComCtrls.TCustomUpDown.SetOrientation
+ 0001:000A3F9C       ComCtrls.TCustomUpDown.SetPosition
+ 0001:000A4160       ComCtrls.TCustomUpDown.SetThousands
+ 0001:000A419C       ComCtrls.TCustomUpDown.SetWrap
+ 0001:000A3DC4       ComCtrls.TCustomUpDown.UndoAutoResizing
+ 0001:000A39F8       ComCtrls.TCustomUpDown.WMHScroll
+ 0001:000A39C8       ComCtrls.TCustomUpDown.WMSize
+ 0001:000A3970       ComCtrls.TCustomUpDown.WMVScroll
+ 0003:00001D90       ComCtrls.TextConversionFormat
+ 0001:000B3EB8       ComCtrls.THeaderControl.GetOnDrawSection
+ 0001:000B3ECC       ComCtrls.THeaderControl.GetOnSectionClick
+ 0001:000B3EE0       ComCtrls.THeaderControl.GetOnSectionResize
+ 0001:000B3EF4       ComCtrls.THeaderControl.GetOnSectionTrack
+ 0001:000B3F08       ComCtrls.THeaderControl.SetOnDrawSection
+ 0001:000B3F24       ComCtrls.THeaderControl.SetOnSectionClick
+ 0001:000B3F40       ComCtrls.THeaderControl.SetOnSectionResize
+ 0001:000B3F5C       ComCtrls.THeaderControl.SetOnSectionTrack
+ 0001:0009AB18       ComCtrls.THeaderSection.Assign
+ 0001:0009AABC       ComCtrls.THeaderSection.Create
+ 0001:0009AC28       ComCtrls.THeaderSection.GetDisplayName
+ 0001:0009AC4C       ComCtrls.THeaderSection.GetLeft
+ 0001:0009ABA4       ComCtrls.THeaderSection.IsBiDiModeStored
+ 0001:0009ABBC       ComCtrls.THeaderSection.ParentBiDiModeChanged
+ 0001:0009AC80       ComCtrls.THeaderSection.SetAlignment
+ 0001:0009AC90       ComCtrls.THeaderSection.SetAutoSize
+ 0001:0009AB90       ComCtrls.THeaderSection.SetBiDiMode
+ 0001:0009AD70       ComCtrls.THeaderSection.SetImageIndex
+ 0001:0009ACB0       ComCtrls.THeaderSection.SetMaxWidth
+ 0001:0009ACD4       ComCtrls.THeaderSection.SetMinWidth
+ 0001:0009ABAC       ComCtrls.THeaderSection.SetParentBiDiMode
+ 0001:0009ACF0       ComCtrls.THeaderSection.SetStyle
+ 0001:0009AD00       ComCtrls.THeaderSection.SetText
+ 0001:0009AD28       ComCtrls.THeaderSection.SetWidth
+ 0001:0009AC10       ComCtrls.THeaderSection.UseRightToLeftAlignment
+ 0001:0009ABF8       ComCtrls.THeaderSection.UseRightToLeftReading
+ 0001:0009ADC4       ComCtrls.THeaderSections.Add
+ 0001:0009AE14       ComCtrls.THeaderSections.AddItem
+ 0001:0009AD80       ComCtrls.THeaderSections.Create
+ 0001:0009ADD0       ComCtrls.THeaderSections.GetItem
+ 0001:0009ADE4       ComCtrls.THeaderSections.GetOwner
+ 0001:0009ADE8       ComCtrls.THeaderSections.Update
+ 0001:000A61C4       ComCtrls.TIconOptions.Create
+ 0001:000A6238       ComCtrls.TIconOptions.SetArrangement
+ 0001:000A624C       ComCtrls.TIconOptions.SetAutoArrange
+ 0001:000A6260       ComCtrls.TIconOptions.SetWrapText
+ 0003:00001F50       ComCtrls.TimerStyles
+ 0001:000A4728       ComCtrls.TListColumn.Assign
+ 0001:000A41D8       ComCtrls.TListColumn.Create
+ 0001:000A42FC       ComCtrls.TListColumn.DefineProperties
+ 0001:000A4288       ComCtrls.TListColumn.Destroy
+ 0001:000A448C       ComCtrls.TListColumn.DoChange
+ 0001:000A479C       ComCtrls.TListColumn.GetDisplayName
+ 0001:000A45F0       ComCtrls.TListColumn.GetWidth
+ 0001:000A4658       ComCtrls.TListColumn.IsWidthStored
+ 0001:000A4344       ComCtrls.TListColumn.ReadData
+ 0001:000A468C       ComCtrls.TListColumn.SetAlignment
+ 0001:000A46C4       ComCtrls.TListColumn.SetAutoSize
+ 0001:000A45C8       ComCtrls.TListColumn.SetCaption
+ 0001:000A46F8       ComCtrls.TListColumn.SetImageIndex
+ 0001:000A450C       ComCtrls.TListColumn.SetIndex
+ 0001:000A4708       ComCtrls.TListColumn.SetMaxWidth
+ 0001:000A4718       ComCtrls.TListColumn.SetMinWidth
+ 0001:000A4660       ComCtrls.TListColumn.SetWidth
+ 0001:000A436C       ComCtrls.TListColumn.WriteData
+ 0001:000A4818       ComCtrls.TListColumns.Add
+ 0001:000A47C0       ComCtrls.TListColumns.Create
+ 0001:000A4804       ComCtrls.TListColumns.GetItem
+ 0001:000A4838       ComCtrls.TListColumns.GetOwner
+ 0001:000A4834       ComCtrls.TListColumns.Owner
+ 0001:000A483C       ComCtrls.TListColumns.Update
+ 0001:000A4870       ComCtrls.TListColumns.UpdateCols
+ 0001:000A538C       ComCtrls.TListItem.Assign
+ 0001:000A4E08       ComCtrls.TListItem.Create
+ 0001:000A4EE4       ComCtrls.TListItem.Delete
+ 0001:000A4E58       ComCtrls.TListItem.Destroy
+ 0001:000A547C       ComCtrls.TListItem.DisplayRect
+ 0001:000A4F40       ComCtrls.TListItem.GetChecked
+ 0001:000A4F08       ComCtrls.TListItem.GetHandle
+ 0001:000A5460       ComCtrls.TListItem.GetIndex
+ 0001:000A4EDC       ComCtrls.TListItem.GetListView
+ 0001:000A50F4       ComCtrls.TListItem.GetState
+ 0001:000A54AC       ComCtrls.TListItem.GetSubItemImage
+ 0001:000A5424       ComCtrls.TListItem.IsEqual
+ 0001:000A4F1C       ComCtrls.TListItem.MakeVisible
+ 0001:000A5010       ComCtrls.TListItem.SetCaption
+ 0001:000A4F94       ComCtrls.TListItem.SetChecked
+ 0001:000A50C4       ComCtrls.TListItem.SetData
+ 0001:000A51D4       ComCtrls.TListItem.SetImage
+ 0001:000A5314       ComCtrls.TListItem.SetIndent
+ 0001:000A5164       ComCtrls.TListItem.SetState
+ 0001:000A54B8       ComCtrls.TListItem.SetSubItemImage
+ 0001:000A544C       ComCtrls.TListItem.SetSubItems
+ 0001:000A4FE0       ComCtrls.TListItem.Update
+ 0001:000A5594       ComCtrls.TListItems.Add
+ 0001:000A55AC       ComCtrls.TListItems.AddItem
+ 0001:000A594C       ComCtrls.TListItems.Assign
+ 0001:000A5754       ComCtrls.TListItems.BeginUpdate
+ 0001:000A5728       ComCtrls.TListItems.Clear
+ 0001:000A552C       ComCtrls.TListItems.Create
+ 0001:000A61A0       ComCtrls.TListItems.CreateItem
+ 0001:000A5A3C       ComCtrls.TListItems.DefineProperties
+ 0001:000A6188       ComCtrls.TListItems.Delete
+ 0001:000A5568       ComCtrls.TListItems.Destroy
+ 0001:000A5938       ComCtrls.TListItems.EndUpdate
+ 0001:000A5608       ComCtrls.TListItems.GetCount
+ 0001:000A5634       ComCtrls.TListItems.GetHandle
+ 0001:000A5640       ComCtrls.TListItems.GetItem
+ 0001:000A56CC       ComCtrls.TListItems.IndexOf
+ 0001:000A55A0       ComCtrls.TListItems.Insert
+ 0001:000A5AC4       ComCtrls.TListItems.ReadData
+ 0001:000A5CBC       ComCtrls.TListItems.ReadItemData
+ 0001:000A56F4       ComCtrls.TListItems.SetCount
+ 0001:000A576C       ComCtrls.TListItems.SetUpdateState
+ 0001:000A5ECC       ComCtrls.TListItems.WriteItemData
+ 0001:000B3FF0       ComCtrls.TListViewActionLink.AddItem
+ 0001:000B3F78       ComCtrls.TListViewActionLink.AddItem
+ 0001:000B4028       ComCtrls.TListViewActionLink.SetImages
+ 0001:000B1AB0       ComCtrls.TMonthCalColors.Assign
+ 0001:000B1A60       ComCtrls.TMonthCalColors.Create
+ 0001:000B1C34       ComCtrls.TMonthCalColors.SetAllColors
+ 0001:000B1BBC       ComCtrls.TMonthCalColors.SetColor
+ 0001:000B2A80       ComCtrls.TMonthCalendar.CanAutoSize
+ 0001:000B27B8       ComCtrls.TMonthCalendar.CMFontChanged
+ 0001:000B27E0       ComCtrls.TMonthCalendar.CNNotify
+ 0001:000B28F0       ComCtrls.TMonthCalendar.ConstrainedResize
+ 0001:000B2760       ComCtrls.TMonthCalendar.Create
+ 0001:000B2968       ComCtrls.TMonthCalendar.CreateParams
+ 0001:000B29B4       ComCtrls.TMonthCalendar.GetCalendarHandle
+ 0001:000B29BC       ComCtrls.TMonthCalendar.MsgSetCalColors
+ 0001:000B29F8       ComCtrls.TMonthCalendar.MsgSetDateTime
+ 0001:000B2A40       ComCtrls.TMonthCalendar.MsgSetRange
+ 0001:000B0A20       ComCtrls.ToolMenuGetMsgHook
+ 0004:00003650       ComCtrls.ToolMenuHook
+ 0004:00003670       ComCtrls.ToolMenuKeyHook
+ 0001:000B0D6C       ComCtrls.ToolMenuKeyMsgHook
+ 0003:00001E50       ComCtrls.ToolTipStyles
+ 0001:00098E5C       ComCtrls.TPageControl.CanShowTab
+ 0001:00098E80       ComCtrls.TPageControl.Change
+ 0001:00098EC8       ComCtrls.TPageControl.ChangeActivePage
+ 0001:00099588       ComCtrls.TPageControl.CMDesignHitTest
+ 0001:000995F4       ComCtrls.TPageControl.CMDialogKey
+ 0001:00099660       ComCtrls.TPageControl.CMDockClient
+ 0001:000997FC       ComCtrls.TPageControl.CMDockNotification
+ 0001:000998D4       ComCtrls.TPageControl.CMUnDockClient
+ 0001:00098D54       ComCtrls.TPageControl.Create
+ 0001:00098FD0       ComCtrls.TPageControl.DeleteTab
+ 0001:00098DA8       ComCtrls.TPageControl.Destroy
+ 0001:0009902C       ComCtrls.TPageControl.DoAddDockClient
+ 0001:00099048       ComCtrls.TPageControl.DockOver
+ 0001:0009909C       ComCtrls.TPageControl.DoRemoveDockClient
+ 0001:000990D0       ComCtrls.TPageControl.FindNextPage
+ 0001:00099158       ComCtrls.TPageControl.GetChildren
+ 0001:00099900       ComCtrls.TPageControl.GetDockClientFromMousePos
+ 0001:00099198       ComCtrls.TPageControl.GetImageIndex
+ 0001:00099264       ComCtrls.TPageControl.GetPage
+ 0001:0009927C       ComCtrls.TPageControl.GetPageCount
+ 0001:00099214       ComCtrls.TPageControl.GetPageFromDockClient
+ 0001:00099288       ComCtrls.TPageControl.GetSiteInfo
+ 0001:000992CC       ComCtrls.TPageControl.InsertPage
+ 0001:000992F0       ComCtrls.TPageControl.InsertTab
+ 0001:00098E48       ComCtrls.TPageControl.Loaded
+ 0001:0009935C       ComCtrls.TPageControl.MoveTab
+ 0001:00099AF8       ComCtrls.TPageControl.PageIndexFromTabIndex
+ 0001:0009937C       ComCtrls.TPageControl.RemovePage
+ 0001:000993CC       ComCtrls.TPageControl.SelectNextPage
+ 0001:00099418       ComCtrls.TPageControl.SetActivePage
+ 0001:00099A30       ComCtrls.TPageControl.SetActivePageIndex
+ 0001:000994AC       ComCtrls.TPageControl.SetChildOrder
+ 0001:00099A68       ComCtrls.TPageControl.SetTabIndex
+ 0001:000994B8       ComCtrls.TPageControl.ShowControl
+ 0001:0009954C       ComCtrls.TPageControl.UpdateActivePage
+ 0001:000994EC       ComCtrls.TPageControl.UpdateTab
+ 0001:00098E08       ComCtrls.TPageControl.UpdateTabHighlights
+ 0001:00099AC0       ComCtrls.TPageControl.WMEraseBkGnd
+ 0001:000999E4       ComCtrls.TPageControl.WMLButtonDblClk
+ 0001:00099990       ComCtrls.TPageControl.WMLButtonDown
+ 0001:000A1D00       ComCtrls.TParaAttributes.Assign
+ 0001:000A19AC       ComCtrls.TParaAttributes.Create
+ 0001:000A1A9C       ComCtrls.TParaAttributes.GetAlignment
+ 0001:000A1A04       ComCtrls.TParaAttributes.GetAttributes
+ 0001:000A1B70       ComCtrls.TParaAttributes.GetFirstIndent
+ 0001:000A1BCC       ComCtrls.TParaAttributes.GetLeftIndent
+ 0001:000A1AF0       ComCtrls.TParaAttributes.GetNumbering
+ 0001:000A1C28       ComCtrls.TParaAttributes.GetRightIndent
+ 0001:000A1C84       ComCtrls.TParaAttributes.GetTab
+ 0001:000A19E8       ComCtrls.TParaAttributes.InitPara
+ 0001:000A1AB8       ComCtrls.TParaAttributes.SetAlignment
+ 0001:000A1A38       ComCtrls.TParaAttributes.SetAttributes
+ 0001:000A1B90       ComCtrls.TParaAttributes.SetFirstIndent
+ 0001:000A1BEC       ComCtrls.TParaAttributes.SetLeftIndent
+ 0001:000A1B0C       ComCtrls.TParaAttributes.SetNumbering
+ 0001:000A1C48       ComCtrls.TParaAttributes.SetRightIndent
+ 0001:000A1CAC       ComCtrls.TParaAttributes.SetTab
+ 0003:00001F58       ComCtrls.TransparentStyles
+ 0003:00001FC0       ComCtrls.TransparentStyles
+ 0003:00001E0C       ComCtrls.TreeNodeStreamVersion
+ 0001:0009C164       ComCtrls.TreeViewError
+ 0001:000A1F00       ComCtrls.TRichEditStrings.AddStrings
+ 0001:000A22E8       ComCtrls.TRichEditStrings.Clear
+ 0001:000A223C       ComCtrls.TRichEditStrings.Delete
+ 0001:000A1ED0       ComCtrls.TRichEditStrings.Destroy
+ 0001:000A2348       ComCtrls.TRichEditStrings.EnableChange
+ 0001:000A1FD0       ComCtrls.TRichEditStrings.Get
+ 0001:000A1F78       ComCtrls.TRichEditStrings.GetCount
+ 0001:000A20B0       ComCtrls.TRichEditStrings.Insert
+ 0001:000A27F4       ComCtrls.TRichEditStrings.LoadFromFile
+ 0001:000A2580       ComCtrls.TRichEditStrings.LoadFromStream
+ 0001:000A2024       ComCtrls.TRichEditStrings.Put
+ 0001:000A2900       ComCtrls.TRichEditStrings.SaveToFile
+ 0001:000A26E4       ComCtrls.TRichEditStrings.SaveToStream
+ 0001:000A23A4       ComCtrls.TRichEditStrings.SetTextStr
+ 0001:000A22F8       ComCtrls.TRichEditStrings.SetUpdateState
+ 0001:000B3A44       ComCtrls.TStatusBar.GetOnDrawPanel
+ 0001:000B3A58       ComCtrls.TStatusBar.SetOnDrawPanel
+ 0001:00099B74       ComCtrls.TStatusPanel.Assign
+ 0001:00099B28       ComCtrls.TStatusPanel.Create
+ 0001:00099C6C       ComCtrls.TStatusPanel.GetDisplayName
+ 0001:00099BE8       ComCtrls.TStatusPanel.IsBiDiModeStored
+ 0001:00099C00       ComCtrls.TStatusPanel.ParentBiDiModeChanged
+ 0001:00099C90       ComCtrls.TStatusPanel.SetAlignment
+ 0001:00099CA0       ComCtrls.TStatusPanel.SetBevel
+ 0001:00099BD4       ComCtrls.TStatusPanel.SetBiDiMode
+ 0001:00099BF0       ComCtrls.TStatusPanel.SetParentBiDiMode
+ 0001:00099CB0       ComCtrls.TStatusPanel.SetStyle
+ 0001:00099CC0       ComCtrls.TStatusPanel.SetText
+ 0001:00099CE8       ComCtrls.TStatusPanel.SetWidth
+ 0001:00099C54       ComCtrls.TStatusPanel.UseRightToLeftAlignment
+ 0001:00099C3C       ComCtrls.TStatusPanel.UseRightToLeftReading
+ 0001:00099D58       ComCtrls.TStatusPanels.Add
+ 0001:00099CF8       ComCtrls.TStatusPanels.Create
+ 0001:00099D64       ComCtrls.TStatusPanels.GetItem
+ 0001:00099D78       ComCtrls.TStatusPanels.GetOwner
+ 0001:00099D7C       ComCtrls.TStatusPanels.Update
+ 0001:000A4C7C       ComCtrls.TSubItems.Add
+ 0001:000A4CA4       ComCtrls.TSubItems.AddObject
+ 0001:000A4CCC       ComCtrls.TSubItems.Clear
+ 0001:000A4C00       ComCtrls.TSubItems.Create
+ 0001:000A4CE0       ComCtrls.TSubItems.Delete
+ 0001:000A4C4C       ComCtrls.TSubItems.Destroy
+ 0001:000A4D04       ComCtrls.TSubItems.GetHandle
+ 0001:000A4DE8       ComCtrls.TSubItems.GetImageIndex
+ 0001:000A4D54       ComCtrls.TSubItems.Insert
+ 0001:000A4D94       ComCtrls.TSubItems.Put
+ 0001:000A4DB0       ComCtrls.TSubItems.RefreshItem
+ 0001:000A4D10       ComCtrls.TSubItems.SetColumnWidth
+ 0001:000A4DFC       ComCtrls.TSubItems.SetImageIndex
+ 0001:000A4DDC       ComCtrls.TSubItems.SetUpdateState
+ 0001:00098AB0       ComCtrls.TTabSheet.CMShowingChanged
+ 0001:00098A98       ComCtrls.TTabSheet.CMTextChanged
+ 0001:00098750       ComCtrls.TTabSheet.Create
+ 0001:000988B0       ComCtrls.TTabSheet.CreateParams
+ 0001:000987B8       ComCtrls.TTabSheet.Destroy
+ 0001:00098804       ComCtrls.TTabSheet.DoHide
+ 0001:00098824       ComCtrls.TTabSheet.DoShow
+ 0001:00098844       ComCtrls.TTabSheet.GetPageIndex
+ 0001:00098860       ComCtrls.TTabSheet.GetTabIndex
+ 0001:000988CC       ComCtrls.TTabSheet.ReadState
+ 0001:00098B58       ComCtrls.TTabSheet.SetHighlighted
+ 0001:00098900       ComCtrls.TTabSheet.SetImageIndex
+ 0001:00098928       ComCtrls.TTabSheet.SetPageControl
+ 0001:0009895C       ComCtrls.TTabSheet.SetPageIndex
+ 0001:000989F0       ComCtrls.TTabSheet.SetTabShowing
+ 0001:00098A34       ComCtrls.TTabSheet.SetTabVisible
+ 0001:00098A48       ComCtrls.TTabSheet.UpdateControlOriginalParentSize
+ 0001:00098A78       ComCtrls.TTabSheet.UpdateTabShowing
+ 0001:00098BF4       ComCtrls.TTabSheet.WMNCPaint
+ 0001:00098D0C       ComCtrls.TTabSheet.WMPrintClient
+ 0001:000973F8       ComCtrls.TTabStrings.Clear
+ 0001:00097468       ComCtrls.TTabStrings.Delete
+ 0001:00097504       ComCtrls.TTabStrings.Get
+ 0001:000975FC       ComCtrls.TTabStrings.GetCount
+ 0001:00097618       ComCtrls.TTabStrings.GetObject
+ 0001:00097838       ComCtrls.TTabStrings.Insert
+ 0001:000976B8       ComCtrls.TTabStrings.Put
+ 0001:00097798       ComCtrls.TTabStrings.PutObject
+ 0001:00097918       ComCtrls.TTabStrings.SetUpdateState
+ 0001:000A173C       ComCtrls.TTextAttributes.Assign
+ 0001:000A187C       ComCtrls.TTextAttributes.AssignTo
+ 0001:000A13AC       ComCtrls.TTextAttributes.Create
+ 0001:000A1414       ComCtrls.TTextAttributes.GetAttributes
+ 0001:000A1490       ComCtrls.TTextAttributes.GetCharset
+ 0001:000A14D4       ComCtrls.TTextAttributes.GetColor
+ 0001:000A153C       ComCtrls.TTextAttributes.GetName
+ 0001:000A16CC       ComCtrls.TTextAttributes.GetPitch
+ 0001:000A1678       ComCtrls.TTextAttributes.GetSize
+ 0001:000A15D0       ComCtrls.TTextAttributes.GetStyle
+ 0001:000A13F8       ComCtrls.TTextAttributes.InitFormat
+ 0001:000A1454       ComCtrls.TTextAttributes.SetAttributes
+ 0001:000A14A4       ComCtrls.TTextAttributes.SetCharset
+ 0001:000A14F4       ComCtrls.TTextAttributes.SetColor
+ 0001:000A1560       ComCtrls.TTextAttributes.SetName
+ 0001:000A16FC       ComCtrls.TTextAttributes.SetPitch
+ 0001:000A1694       ComCtrls.TTextAttributes.SetSize
+ 0001:000A1620       ComCtrls.TTextAttributes.SetStyle
+ 0001:000AE1F4       ComCtrls.TToolBar.AdjustControl
+ 0001:000AE2C8       ComCtrls.TToolBar.AlignControls
+ 0001:000ADF88       ComCtrls.TToolBar.BeginUpdate
+ 0001:000ADFE4       ComCtrls.TToolBar.ButtonIndex
+ 0001:000AEDE8       ComCtrls.TToolBar.CanAutoSize
+ 0001:000B142C       ComCtrls.TToolBar.CancelMenu
+ 0001:000B0070       ComCtrls.TToolBar.CanvasChanged
+ 0001:000AE304       ComCtrls.TToolBar.ChangeScale
+ 0001:000B0EEC       ComCtrls.TToolBar.CheckMenuDropdown
+ 0001:000B0E40       ComCtrls.TToolBar.ClearTempMenu
+ 0001:000B1348       ComCtrls.TToolBar.ClickButton
+ 0001:000AEF98       ComCtrls.TToolBar.CMColorChanged
+ 0001:000AEDF0       ComCtrls.TToolBar.CMControlChange
+ 0001:000AEEAC       ComCtrls.TToolBar.CMDialogChar
+ 0001:000AEF7C       ComCtrls.TToolBar.CMEnabledChanged
+ 0001:000B1528       ComCtrls.TToolBar.CMFontChanged
+ 0001:000AEFAC       ComCtrls.TToolBar.CMParentColorChanged
+ 0001:000AEFF0       ComCtrls.TToolBar.CMSysFontChanged
+ 0001:000AEE20       ComCtrls.TToolBar.CNChar
+ 0001:000AF004       ComCtrls.TToolBar.CNDropDownClosed
+ 0001:000AF044       ComCtrls.TToolBar.CNNotify
+ 0001:000AEFCC       ComCtrls.TToolBar.CNSysKeyDown
+ 0001:000AC3B0       ComCtrls.TToolBar.Create
+ 0001:000AC838       ComCtrls.TToolBar.CreateButtons
+ 0001:000AC69C       ComCtrls.TToolBar.CreateParams
+ 0001:000AC750       ComCtrls.TToolBar.CreateWnd
+ 0001:000AFFA0       ComCtrls.TToolBar.CustomDraw
+ 0001:000AFFF8       ComCtrls.TToolBar.CustomDrawButton
+ 0001:000AC5E0       ComCtrls.TToolBar.Destroy
+ 0001:000ADA9C       ComCtrls.TToolBar.DisabledImageListChange
+ 0001:000B1590       ComCtrls.TToolBar.DoGetButton
+ 0001:000B17A4       ComCtrls.TToolBar.DoQueryDelete
+ 0001:000B17D0       ComCtrls.TToolBar.DoQueryInsert
+ 0001:000ADF90       ComCtrls.TToolBar.EndUpdate
+ 0001:000AFE40       ComCtrls.TToolBar.FindButtonFromAccel
+ 0001:000AFE3C       ComCtrls.TToolBar.FlipChildren
+ 0001:000AD65C       ComCtrls.TToolBar.GetButton
+ 0001:000AD674       ComCtrls.TToolBar.GetButtonCount
+ 0001:000ACB78       ComCtrls.TToolBar.GetButtonSize
+ 0001:000ADEA0       ComCtrls.TToolBar.GetChildren
+ 0001:000B0078       ComCtrls.TToolBar.GradientDrawButton
+ 0001:000B0870       ComCtrls.TToolBar.GradientDrawToolBar
+ 0001:000ADB44       ComCtrls.TToolBar.HotImageListChange
+ 0001:000AD9F4       ComCtrls.TToolBar.ImageListChange
+ 0001:000B13B4       ComCtrls.TToolBar.InitMenu
+ 0001:000ACCB0       ComCtrls.TToolBar.InsertButton
+ 0001:000ADFD4       ComCtrls.TToolBar.InternalButtonCount
+ 0001:000AFF00       ComCtrls.TToolBar.IsCustomDrawn
+ 0001:000B0954       ComCtrls.TToolBar.IsGradientEndColorStored
+ 0001:000ADF3C       ComCtrls.TToolBar.Loaded
+ 0001:000AD87C       ComCtrls.TToolBar.LoadImages
+ 0001:000AD720       ComCtrls.TToolBar.Notification
+ 0001:000ADD78       ComCtrls.TToolBar.RecreateButtons
+ 0001:000AF9F8       ComCtrls.TToolBar.RecreateButtonsFromToolbar
+ 0001:000AD24C       ComCtrls.TToolBar.RefreshButton
+ 0001:000ACD6C       ComCtrls.TToolBar.RemoveButton
+ 0001:000AE12C       ComCtrls.TToolBar.ReorderButton
+ 0001:000AC99C       ComCtrls.TToolBar.RepositionButton
+ 0001:000ACB00       ComCtrls.TToolBar.RepositionButtons
+ 0001:000B1888       ComCtrls.TToolBar.Resize
+ 0001:000ADF98       ComCtrls.TToolBar.ResizeButtons
+ 0001:000B17FC       ComCtrls.TToolBar.SaveButtons
+ 0001:000AD624       ComCtrls.TToolBar.SetAllowTextButtons
+ 0001:000B18B4       ComCtrls.TToolBar.SetAutoSize
+ 0001:000ACC50       ComCtrls.TToolBar.SetButtonHeight
+ 0001:000ACC80       ComCtrls.TToolBar.SetButtonWidth
+ 0001:000B157C       ComCtrls.TToolBar.SetCustomizable
+ 0001:000ADAC0       ComCtrls.TToolBar.SetDisabledImageList
+ 0001:000ADAF0       ComCtrls.TToolBar.SetDisabledImages
+ 0001:000B08DC       ComCtrls.TToolBar.SetDrawingStyle
+ 0001:000AD6A4       ComCtrls.TToolBar.SetFlat
+ 0001:000B1860       ComCtrls.TToolBar.SetGradientDirection
+ 0001:000B08A4       ComCtrls.TToolBar.SetGradientDrawingOptions
+ 0001:000B0904       ComCtrls.TToolBar.SetGradientEndColor
+ 0001:000B092C       ComCtrls.TToolBar.SetGradientStartColor
+ 0001:000B184C       ComCtrls.TToolBar.SetHideClippedButtons
+ 0001:000ADB68       ComCtrls.TToolBar.SetHotImageList
+ 0001:000ADB98       ComCtrls.TToolBar.SetHotImages
+ 0001:000ADA18       ComCtrls.TToolBar.SetImageList
+ 0001:000ADA48       ComCtrls.TToolBar.SetImages
+ 0001:000ADBEC       ComCtrls.TToolBar.SetIndent
+ 0001:000AD680       ComCtrls.TToolBar.SetList
+ 0001:000ADC00       ComCtrls.TToolBar.SetMenu
+ 0001:000AD5F8       ComCtrls.TToolBar.SetShowCaptions
+ 0001:000AD6B8       ComCtrls.TToolBar.SetTransparent
+ 0001:000AD6DC       ComCtrls.TToolBar.SetWrapable
+ 0001:000B1478       ComCtrls.TToolBar.TrackMenu
+ 0001:000AD358       ComCtrls.TToolBar.UpdateButton
+ 0001:000AD454       ComCtrls.TToolBar.UpdateButtons
+ 0001:000AD558       ComCtrls.TToolBar.UpdateButtonState
+ 0001:000AD5B4       ComCtrls.TToolBar.UpdateButtonStates
+ 0001:000AD978       ComCtrls.TToolBar.UpdateImages
+ 0001:000ACDFC       ComCtrls.TToolBar.UpdateItem
+ 0001:000AD024       ComCtrls.TToolBar.UpdateItem2
+ 0001:000ADDC4       ComCtrls.TToolBar.WMCaptureChanged
+ 0001:000AE308       ComCtrls.TToolBar.WMEraseBkgnd
+ 0001:000AE328       ComCtrls.TToolBar.WMGetDlgCode
+ 0001:000AE33C       ComCtrls.TToolBar.WMGetText
+ 0001:000AE368       ComCtrls.TToolBar.WMGetTextLength
+ 0001:000ADDF0       ComCtrls.TToolBar.WMKeyDown
+ 0001:000AE3A0       ComCtrls.TToolBar.WMNotifyFormat
+ 0001:000AE37C       ComCtrls.TToolBar.WMSetText
+ 0001:000AE3C4       ComCtrls.TToolBar.WMSize
+ 0001:000AE3F8       ComCtrls.TToolBar.WMSysChar
+ 0001:000B1270       ComCtrls.TToolBar.WMSysCommand
+ 0001:000AE424       ComCtrls.TToolBar.WMWindowPosChanged
+ 0001:000AE508       ComCtrls.TToolBar.WMWindowPosChanging
+ 0001:000AFBF0       ComCtrls.TToolBar.WndProc
+ 0001:000AEB9C       ComCtrls.TToolBar.WrapButtons
+ 0001:000AC1E4       ComCtrls.TToolButton.ActionChange
+ 0001:000AC2A8       ComCtrls.TToolButton.AssignTo
+ 0001:000AC0D4       ComCtrls.TToolButton.BeginUpdate
+ 0001:000AC158       ComCtrls.TToolButton.CheckMenuDropdown
+ 0001:000AB618       ComCtrls.TToolButton.Click
+ 0001:000ABD4C       ComCtrls.TToolButton.CMEnabledChanged
+ 0001:000ABD88       ComCtrls.TToolButton.CMHitTest
+ 0001:000AB664       ComCtrls.TToolButton.CMTextChanged
+ 0001:000ABCBC       ComCtrls.TToolButton.CMVisibleChanged
+ 0001:000AB46C       ComCtrls.TToolButton.Create
+ 0001:000AC0DC       ComCtrls.TToolButton.EndUpdate
+ 0001:000AC2A0       ComCtrls.TToolButton.GetActionLinkClass
+ 0001:000ABB40       ComCtrls.TToolButton.GetButtonState
+ 0001:000AC0E4       ComCtrls.TToolButton.GetIndex
+ 0001:000AC1A4       ComCtrls.TToolButton.IsCheckedStored
+ 0001:000AC1C4       ComCtrls.TToolButton.IsImageIndexStored
+ 0001:000AC100       ComCtrls.TToolButton.IsWidthStored
+ 0001:000AB4F0       ComCtrls.TToolButton.MouseDown
+ 0001:000AB54C       ComCtrls.TToolButton.MouseMove
+ 0001:000AB5B4       ComCtrls.TToolButton.MouseUp
+ 0001:000AB620       ComCtrls.TToolButton.Notification
+ 0001:000AB8BC       ComCtrls.TToolButton.Paint
+ 0001:000AC110       ComCtrls.TToolButton.RefreshControl
+ 0001:000ABBE4       ComCtrls.TToolButton.SetAutoSize
+ 0001:000AB6CC       ComCtrls.TToolButton.SetBounds
+ 0001:000ABC54       ComCtrls.TToolButton.SetButtonState
+ 0001:000ABDB0       ComCtrls.TToolButton.SetDown
+ 0001:000ABE0C       ComCtrls.TToolButton.SetDropdownMenu
+ 0001:000AC348       ComCtrls.TToolButton.SetEnableDropdown
+ 0001:000ABE28       ComCtrls.TToolButton.SetGrouped
+ 0001:000ABE48       ComCtrls.TToolButton.SetImageIndex
+ 0001:000ABF04       ComCtrls.TToolButton.SetIndeterminate
+ 0001:000ABEC8       ComCtrls.TToolButton.SetMarked
+ 0001:000ABF50       ComCtrls.TToolButton.SetMenuItem
+ 0001:000ABFC8       ComCtrls.TToolButton.SetStyle
+ 0001:000AC0AC       ComCtrls.TToolButton.SetWrap
+ 0001:000AC134       ComCtrls.TToolButton.UpdateControl
+ 0001:000AC2EC       ComCtrls.TToolButton.ValidateContainer
+ 0001:000B18E0       ComCtrls.TToolButtonActionLink.AssignClient
+ 0001:000B1904       ComCtrls.TToolButtonActionLink.IsCheckedLinked
+ 0001:000B1938       ComCtrls.TToolButtonActionLink.IsDropdownMenuLinked
+ 0001:000B1970       ComCtrls.TToolButtonActionLink.IsEnableDropdownLinked
+ 0001:000B19A8       ComCtrls.TToolButtonActionLink.IsImageIndexLinked
+ 0001:000B19E0       ComCtrls.TToolButtonActionLink.SetChecked
+ 0001:000B1A00       ComCtrls.TToolButtonActionLink.SetDropdownMenu
+ 0001:000B1A20       ComCtrls.TToolButtonActionLink.SetEnableDropdown
+ 0001:000B1A40       ComCtrls.TToolButtonActionLink.SetImageIndex
+ 0001:0009D26C       ComCtrls.TTreeNode.AlphaSort
+ 0001:0009D370       ComCtrls.TTreeNode.Assign
+ 0001:0009C890       ComCtrls.TTreeNode.Collapse
+ 0001:0009C6BC       ComCtrls.TTreeNode.CompareCount
+ 0001:0009C17C       ComCtrls.TTreeNode.Create
+ 0001:0009D278       ComCtrls.TTreeNode.CustomSort
+ 0001:0009D324       ComCtrls.TTreeNode.Delete
+ 0001:0009D330       ComCtrls.TTreeNode.DeleteChildren
+ 0001:0009C1C8       ComCtrls.TTreeNode.Destroy
+ 0001:0009D230       ComCtrls.TTreeNode.DisplayRect
+ 0001:0009C6F4       ComCtrls.TTreeNode.DoCanExpand
+ 0001:0009C748       ComCtrls.TTreeNode.DoExpand
+ 0001:0009C884       ComCtrls.TTreeNode.Expand
+ 0001:0009C78C       ComCtrls.TTreeNode.ExpandItem
+ 0001:0009CD00       ComCtrls.TTreeNode.GetAbsoluteIndex
+ 0001:0009C9FC       ComCtrls.TTreeNode.GetChildren
+ 0001:0009CE38       ComCtrls.TTreeNode.GetCount
+ 0001:0009C984       ComCtrls.TTreeNode.GetCut
+ 0001:0009C9AC       ComCtrls.TTreeNode.GetDropTarget
+ 0001:0009C89C       ComCtrls.TTreeNode.GetExpanded
+ 0001:0009CBF4       ComCtrls.TTreeNode.getFirstChild
+ 0001:0009CA64       ComCtrls.TTreeNode.GetFocused
+ 0001:0009C2B0       ComCtrls.TTreeNode.GetHandle
+ 0001:0009CD3C       ComCtrls.TTreeNode.GetIndex
+ 0001:0009CD5C       ComCtrls.TTreeNode.GetItem
+ 0001:0009CC30       ComCtrls.TTreeNode.GetLastChild
+ 0001:0009D1DC       ComCtrls.TTreeNode.GetLevel
+ 0001:0009CC50       ComCtrls.TTreeNode.GetNext
+ 0001:0009CBE4       ComCtrls.TTreeNode.GetNextChild
+ 0001:0009CAE4       ComCtrls.TTreeNode.getNextSibling
+ 0001:0009CB5C       ComCtrls.TTreeNode.GetNextVisible
+ 0001:0009CAA8       ComCtrls.TTreeNode.GetParent
+ 0001:0009CCD0       ComCtrls.TTreeNode.GetPrev
+ 0001:0009CB20       ComCtrls.TTreeNode.getPrevSibling
+ 0001:0009CBA0       ComCtrls.TTreeNode.GetPrevVisible
+ 0001:0009C8D0       ComCtrls.TTreeNode.GetSelected
+ 0001:0009C420       ComCtrls.TTreeNode.GetState
+ 0001:0009C2C4       ComCtrls.TTreeNode.GetTreeView
+ 0001:0009C2CC       ComCtrls.TTreeNode.HasAsParent
+ 0001:0009CDFC       ComCtrls.TTreeNode.IndexOf
+ 0001:0009CE5C       ComCtrls.TTreeNode.InternalMove
+ 0001:0009D424       ComCtrls.TTreeNode.IsEqual
+ 0001:0009D180       ComCtrls.TTreeNode.IsFirstNode
+ 0001:0009D200       ComCtrls.TTreeNode.IsNodeVisible
+ 0001:0009D1A8       ComCtrls.TTreeNode.MakeVisible
+ 0001:0009CFF4       ComCtrls.TTreeNode.MoveTo
+ 0001:0009D44C       ComCtrls.TTreeNode.ReadData
+ 0001:0009D54C       ComCtrls.TTreeNode.ReadNodeData
+ 0001:0009CA6C       ComCtrls.TTreeNode.SetChildren
+ 0001:0009C98C       ComCtrls.TTreeNode.SetCut
+ 0001:0009C3B0       ComCtrls.TTreeNode.SetData
+ 0001:0009C9B4       ComCtrls.TTreeNode.SetDropTarget
+ 0001:0009C8A4       ComCtrls.TTreeNode.SetExpanded
+ 0001:0009CA44       ComCtrls.TTreeNode.SetFocused
+ 0001:0009C560       ComCtrls.TTreeNode.SetImageIndex
+ 0001:0009C618       ComCtrls.TTreeNode.SetOverlayIndex
+ 0001:0009C8D8       ComCtrls.TTreeNode.SetSelected
+ 0001:0009C978       ComCtrls.TTreeNode.SetSelectedBit
+ 0001:0009C5BC       ComCtrls.TTreeNode.SetSelectedIndex
+ 0001:0009C4BC       ComCtrls.TTreeNode.SetState
+ 0001:0009C668       ComCtrls.TTreeNode.SetStateIndex
+ 0001:0009C30C       ComCtrls.TTreeNode.SetText
+ 0001:0009D680       ComCtrls.TTreeNode.WriteNodeData
+ 0001:0009D960       ComCtrls.TTreeNodes.Add
+ 0001:0009D910       ComCtrls.TTreeNodes.AddChild
+ 0001:0009D8E8       ComCtrls.TTreeNodes.AddChildFirst
+ 0001:0009D920       ComCtrls.TTreeNodes.AddChildObject
+ 0001:0009D8F8       ComCtrls.TTreeNodes.AddChildObjectFirst
+ 0001:0009DB90       ComCtrls.TTreeNodes.AddedNode
+ 0001:0009D938       ComCtrls.TTreeNodes.AddFirst
+ 0001:0009DBD4       ComCtrls.TTreeNodes.AddItem
+ 0001:0009D988       ComCtrls.TTreeNodes.AddNode
+ 0001:0009D970       ComCtrls.TTreeNodes.AddObject
+ 0001:0009D948       ComCtrls.TTreeNodes.AddObjectFirst
+ 0001:0009DDF0       ComCtrls.TTreeNodes.Assign
+ 0001:0009DD90       ComCtrls.TTreeNodes.BeginUpdate
+ 0001:0009D854       ComCtrls.TTreeNodes.Clear
+ 0001:0009E29C       ComCtrls.TTreeNodes.ClearCache
+ 0001:0009D7AC       ComCtrls.TTreeNodes.Create
+ 0001:0009DBB0       ComCtrls.TTreeNodes.CreateItem
+ 0001:0009DF14       ComCtrls.TTreeNodes.DefineProperties
+ 0001:0009D84C       ComCtrls.TTreeNodes.Delete
+ 0001:0009D7E8       ComCtrls.TTreeNodes.Destroy
+ 0001:0009DDDC       ComCtrls.TTreeNodes.EndUpdate
+ 0001:0009D814       ComCtrls.TTreeNodes.GetCount
+ 0001:0009DC54       ComCtrls.TTreeNodes.GetFirstNode
+ 0001:0009D840       ComCtrls.TTreeNodes.GetHandle
+ 0001:0009DD58       ComCtrls.TTreeNodes.GetNode
+ 0001:0009DC70       ComCtrls.TTreeNodes.GetNodeFromIndex
+ 0001:0009DF9C       ComCtrls.TTreeNodes.ReadData
+ 0001:0009E1C4       ComCtrls.TTreeNodes.ReadExpandedState
+ 0001:0009E064       ComCtrls.TTreeNodes.ReadNodeData
+ 0001:0009DB3C       ComCtrls.TTreeNodes.Repaint
+ 0001:0009DDA8       ComCtrls.TTreeNodes.SetUpdateState
+ 0001:0009E240       ComCtrls.TTreeNodes.WriteExpandedState
+ 0001:0009E148       ComCtrls.TTreeNodes.WriteNodeData
+ 0001:000A4968       ComCtrls.TWorkArea.Create
+ 0001:000A49AC       ComCtrls.TWorkArea.GetDisplayName
+ 0001:000A49C0       ComCtrls.TWorkArea.SetDisplayName
+ 0001:000A4AD8       ComCtrls.TWorkAreas.GetItem
+ 0001:000A4A00       ComCtrls.TWorkAreas.Update
+ 0001:000A6BA4       ComCtrls.UpdateColumnOrder
+ 0001:0009BF00       ComCtrls.UpdateSectionOrder
+ 0003:00001EF4       ComCtrls.ViewStyles
+ 0003:00001ED4       ComCtrls.ViewStyles
+ 0003:00001FFC       ComCtrls.WeekNumFlags
+ 0001:000AE7B4       ComCtrls.WrapHorz
+ 0001:000AEAFC       ComCtrls.WrapSizeHorz
+ 0001:000AE9E0       ComCtrls.WrapSizeVert
+ 0003:00001ECC       ComCtrls.WrapText
+ 0001:000A4390       ComCtrls.WriteCols
+ 0001:000A59AC       ComCtrls.WriteItems
+ 0001:0009DE84       ComCtrls.WriteNodes
+ 0004:00003364       CommCtrl.ComCtl32DLL
+ 0001:0002C94C       CommCtrl.ImageList_Add
+ 0001:0002C98C       CommCtrl.ImageList_BeginDrag
+ 0001:0002C934       CommCtrl.ImageList_Create
+ 0001:0002C93C       CommCtrl.ImageList_Destroy
+ 0001:0002C99C       CommCtrl.ImageList_DragEnter
+ 0001:0002C9A4       CommCtrl.ImageList_DragLeave
+ 0001:0002C9AC       CommCtrl.ImageList_DragMove
+ 0001:0002C9B4       CommCtrl.ImageList_DragShowNolock
+ 0001:0002C96C       CommCtrl.ImageList_Draw
+ 0001:0002C97C       CommCtrl.ImageList_DrawEx
+ 0001:0002C994       CommCtrl.ImageList_EndDrag
+ 0001:0002C95C       CommCtrl.ImageList_GetBkColor
+ 0001:0002C9BC       CommCtrl.ImageList_GetDragImage
+ 0001:0002C9D4       CommCtrl.ImageList_GetIconSize
+ 0001:0002C944       CommCtrl.ImageList_GetImageCount
+ 0001:0002C9C4       CommCtrl.ImageList_Read
+ 0001:0002C984       CommCtrl.ImageList_Remove
+ 0001:0002C974       CommCtrl.ImageList_Replace
+ 0001:0002C954       CommCtrl.ImageList_SetBkColor
+ 0001:0002C9DC       CommCtrl.ImageList_SetIconSize
+ 0001:0002C964       CommCtrl.ImageList_SetOverlayImage
+ 0001:0002C9CC       CommCtrl.ImageList_Write
+ 0001:0002C8A0       CommCtrl.InitComCtl
+ 0001:0002C898       CommCtrl.InitCommonControls
+ 0001:0002C900       CommCtrl.InitCommonControlsEx
+ 0001:0002CA34       CommCtrl.ListView_EnsureVisible
+ 0001:0002C9F8       CommCtrl.ListView_GetItemRect
+ 0001:0002C9E4       CommCtrl.ListView_GetNextItem
+ 0001:0002CAB0       CommCtrl.ListView_SetCheckState
+ 0001:0002CA60       CommCtrl.ListView_SetColumnWidth
+ 0001:0002CA80       CommCtrl.ListView_SetItemState
+ 0001:0002CADC       CommCtrl.ListView_SetItemText
+ 0001:0002CB30       CommCtrl.TreeView_GetChild
+ 0001:0002CBE8       CommCtrl.TreeView_GetDropHilite
+ 0001:0002CB90       CommCtrl.TreeView_GetFirstVisible
+ 0001:0002CB0C       CommCtrl.TreeView_GetItemRect
+ 0001:0002CB48       CommCtrl.TreeView_GetNextSibling
+ 0001:0002CBA4       CommCtrl.TreeView_GetNextVisible
+ 0001:0002CB78       CommCtrl.TreeView_GetParent
+ 0001:0002CB60       CommCtrl.TreeView_GetPrevSibling
+ 0001:0002CBBC       CommCtrl.TreeView_GetPrevVisible
+ 0001:0002CBFC       CommCtrl.TreeView_GetRoot
+ 0001:0002CBD4       CommCtrl.TreeView_GetSelection
+ 0001:0002CC28       CommCtrl.TreeView_SelectDropTarget
+ 0001:0002CC10       CommCtrl.TreeView_SelectItem
+ 0001:0002CC40       CommCtrl.TreeView_SelectSetFirstVisible
+ 0004:00003368       CommCtrl._InitCommonControlsEx
+ 0001:0002CC58       CommCtrl._TrackMouseEvent
+ 0001:00048618       CommDlg.ChooseColor
+ 0001:00048630       CommDlg.ChooseFont
+ 0001:00048620       CommDlg.FindText
+ 0001:00048608       CommDlg.GetOpenFileName
+ 0001:00048610       CommDlg.GetSaveFileName
+ 0001:00048638       CommDlg.PrintDlg
+ 0001:00048628       CommDlg.ReplaceText
+ 0004:00003684       ComObj..41
+ 0001:000C7DF4       ComObj..EOleError
+ 0001:000C7EA8       ComObj..EOleException
+ 0001:000C7E4C       ComObj..EOleSysError
+ 0001:000C7D84       ComObj..TAutoIntfObject
+ 0001:000C84BC       ComObj.ClassIDToProgID
+ 0001:000C9224       ComObj.ClearExcepInfo
+ 0003:000021B8       ComObj.CoAddRefServerProcess
+ 0003:000021B0       ComObj.CoCreateInstanceEx
+ 0003:000021C8       ComObj.CoInitFlags
+ 0003:000021B4       ComObj.CoInitializeEx
+ 0004:0000368C       ComObj.ComClassManagerVar
+ 0002:000007E4       ComObj.ComObj
+ 0003:000021BC       ComObj.CoReleaseServerProcess
+ 0003:000021C0       ComObj.CoResumeClassObjects
+ 0003:000021C4       ComObj.CoSuspendClassObjects
+ 0001:000C84E8       ComObj.CreateComObject
+ 0001:000C87BC       ComObj.CreateOleObject
+ 0001:000C85FC       ComObj.CreateRemoteComObject
+ 0001:000C8C40       ComObj.DispatchInvoke
+ 0001:000C9218       ComObj.DispatchInvokeError
+ 0001:000C9234       ComObj.DispCall
+ 0001:000C9318       ComObj.DispCallByID
+ 0001:000C9144       ComObj.DispCallError
+ 0001:000C8314       ComObj.EOleException.Create
+ 0001:000C8240       ComObj.EOleSysError.Create
+ 0001:000C9470       ComObj.Finalization
+ 0001:000C8FB0       ComObj.GetIDsOfNames
+ 0001:000C8434       ComObj.GUIDToString
+ 0001:000C7F1C       ComObj.HandleSafeCallException
+ 0001:000C93F4       ComObj.InitComObj
+ 0001:000C88CC       ComObj.InterfaceConnect
+ 0001:000C8980       ComObj.InterfaceDisconnect
+ 0001:000C8A3C       ComObj.LoadComExProcs
+ 0004:00003694       ComObj.NeedToUninitialize
+ 0001:000C83C8       ComObj.OleCheck
+ 0001:000C83AC       ComObj.OleError
+ 0004:00003688       ComObj.OleUninitializing
+ 0001:000C8460       ComObj.ProgIDToClassID
+ 0001:000C9090       ComObj.RaiseException
+ 0001:000C8F7C       ComObj.RaiseNameException
+ 0001:000C8B40       ComObj.SafeCallError
+ 0004:00003690       ComObj.SaveInitProc
+ 0001:000C83D8       ComObj.StringToGUID
+ 0001:000C80AC       ComObj.TAutoIntfObject.Create
+ 0001:000C8114       ComObj.TAutoIntfObject.GetIDsOfNames
+ 0001:000C8134       ComObj.TAutoIntfObject.GetTypeInfo
+ 0001:000C8164       ComObj.TAutoIntfObject.GetTypeInfoCount
+ 0001:000C81B8       ComObj.TAutoIntfObject.InterfaceSupportsErrorInfo
+ 0001:000C8178       ComObj.TAutoIntfObject.Invoke
+ 0001:000C81E0       ComObj.TAutoIntfObject.SafeCallException
+ 0003:000021CC       ComObj.ThreadStrs
+ 0001:000C81F0       ComObj.TrimPunctuation
+ 0001:000C90A8       ComObj.VarDispInvoke
+ 0001:0002AB60       Contnrs..TComponentList
+ 0001:0002AD88       Contnrs..TComponentListNexus
+ 0001:0002AAF8       Contnrs..TObjectList
+ 0001:0002ABCC       Contnrs..TOrderedList
+ 0001:0002AC34       Contnrs..TStack
+ 0001:0002AE78       Contnrs.TComponentList.Add
+ 0001:0002AE80       Contnrs.TComponentList.Destroy
+ 0001:0002AEB0       Contnrs.TComponentList.Extract
+ 0001:0002AEC4       Contnrs.TComponentList.GetItems
+ 0001:0002AED8       Contnrs.TComponentList.HandleFreeNotify
+ 0001:0002AEE0       Contnrs.TComponentList.IndexOf
+ 0001:0002AEE8       Contnrs.TComponentList.Notify
+ 0001:0002AF50       Contnrs.TComponentList.Remove
+ 0001:0002AE48       Contnrs.TComponentListNexus.Notification
+ 0001:0002AC94       Contnrs.TObjectList.Add
+ 0001:0002AC9C       Contnrs.TObjectList.Create
+ 0001:0002ACD8       Contnrs.TObjectList.Create
+ 0001:0002AD1C       Contnrs.TObjectList.Extract
+ 0001:0002AD30       Contnrs.TObjectList.GetItem
+ 0001:0002AD44       Contnrs.TObjectList.IndexOf
+ 0001:0002AD4C       Contnrs.TObjectList.Notify
+ 0001:0002AD78       Contnrs.TObjectList.Remove
+ 0001:0002AD80       Contnrs.TObjectList.SetItem
+ 0001:0002AF70       Contnrs.TOrderedList.Create
+ 0001:0002AFB4       Contnrs.TOrderedList.Destroy
+ 0001:0002AFE4       Contnrs.TOrderedList.PeekItem
+ 0001:0002AF58       Contnrs.TOrderedList.Pop
+ 0001:0002AFF8       Contnrs.TOrderedList.PopItem
+ 0001:0002AF60       Contnrs.TOrderedList.Push
+ 0001:0002B018       Contnrs.TStack.PushItem
+ 0004:00003554       Controls..33
+ 0001:0005D2B8       Controls..TBaseDragControlObject
+ 0001:0005E650       Controls..TControl
+ 0001:0005D788       Controls..TControlActionLink
+ 0001:0005D600       Controls..TControlCanvas
+ 0001:0005F418       Controls..TCustomControl
+ 0001:0005D6A0       Controls..TCustomControlAction
+ 0001:0005FC44       Controls..TCustomListControl
+ 0001:0005FDD4       Controls..TCustomMultiSelectListControl
+ 0001:0005FB4C       Controls..TDockTree
+ 0001:0005FA00       Controls..TDockZone
+ 0001:0005D37C       Controls..TDragControlObject
+ 0001:0005D408       Controls..TDragControlObjectEx
+ 0001:0005D498       Controls..TDragDockObject
+ 0001:0005D560       Controls..TDragDockObjectEx
+ 0001:0005F714       Controls..TDragImageList
+ 0001:0005D214       Controls..TDragObject
+ 0001:0005F2F4       Controls..TGraphicControl
+ 0001:0005F584       Controls..THintWindow
+ 0001:0005F7E0       Controls..TImageList
+ 0001:0005DBE4       Controls..TMargins
+ 0001:0005FBF0       Controls..TMouse
+ 0001:0005DCFC       Controls..TPadding
+ 0001:00060490       Controls..TSiteList
+ 0001:0005DA98       Controls..TSizeConstraints
+ 0001:0005EEE4       Controls..TWinControl
+ 0001:0005EAC0       Controls..TWinControlActionLink
+ 0001:00060B00       Controls.AbsMin
+ 0004:00003588       Controls.ActiveDrag
+ 0001:00067018       Controls.AlignWork
+ 0003:00001A18       Controls.AnchorAlign
+ 0003:00001A0C       Controls.AnimateWindowProc
+ 0003:00001B14       Controls.AnimationStyle
+ 0001:00063A8C       Controls.BackgroundClipped
+ 0001:00070304       Controls.CalcSplitterPos
+ 0001:00061BA4       Controls.CancelDrag
+ 0004:0000359C       Controls.CanvasList
+ 0003:00001AD0       Controls.CaptureControl
+ 0001:0005FF80       Controls.ChangeBiDiModeAlignment
+ 0001:0006180C       Controls.CheckUndock
+ 0001:0006D148       Controls.ClientToWindow
+ 0004:0000355A       Controls.ControlAtom
+ 0004:00003560       Controls.ControlAtomString
+ 0002:00000608       Controls.Controls
+ 0003:00001A10       Controls.CreationControl
+ 0003:00001B0C       Controls.Ctl3DStyles
+ 0003:00001A20       Controls.Cursors
+ 0001:00060328       Controls.CursorToIdent
+ 0003:00001A14       Controls.DefaultDockTreeClass
+ 0001:00067FA4       Controls.DestroyChildWindow
+ 0001:00066E8C       Controls.DoAlign
+ 0001:0006BA64       Controls.DoCalcConstraints
+ 0004:00003590       Controls.DockSiteList
+ 0001:00068CD4       Controls.DoControlMsg
+ 0001:00061114       Controls.DoDragOver
+ 0001:0006DE0C       Controls.DoFindControlZone
+ 0001:0006E534       Controls.DoFindZone
+ 0001:0006DE90       Controls.DoForEach
+ 0001:0006FAD8       Controls.DoGetNextLimit
+ 0001:00070B28       Controls.DoneControls
+ 0001:00066E44       Controls.DoPosition
+ 0001:0006EFE8       Controls.DoPrune
+ 0001:0006F4FC       Controls.DoSaveZone
+ 0001:0006F7C0       Controls.DoSetNewBounds
+ 0001:00067C50       Controls.DoWriteDesignSize
+ 0001:00064E88       Controls.DoWriteExplicit
+ 0001:00064E54       Controls.DoWriteIsControl
+ 0004:00003574       Controls.DragCapture
+ 0004:00003568       Controls.DragControl
+ 0001:00061880       Controls.DragDone
+ 0001:000610C4       Controls.DragFindTarget
+ 0001:00061098       Controls.DragFindWindow
+ 0004:0000358C       Controls.DragImageList
+ 0001:000614D8       Controls.DragInit
+ 0001:00061648       Controls.DragInitControl
+ 0004:00003570       Controls.DragInternalObject
+ 0001:00060FE0       Controls.DragMessage
+ 0004:0000356C       Controls.DragObject
+ 0004:00003598       Controls.DragSave
+ 0004:00003580       Controls.DragSaveCursor
+ 0004:00003578       Controls.DragStartPos
+ 0004:00003584       Controls.DragThreshold
+ 0001:000611F0       Controls.DragTo
+ 0001:0006EA6C       Controls.DrawCloseButton
+ 0001:0006EB00       Controls.DrawGrabberLine
+ 0001:0006EB88       Controls.DrawThemedGrabber
+ 0003:00001AFC       Controls.EdgeStyles
+ 0001:00071164       Controls.Finalization
+ 0001:000600D8       Controls.FindControl
+ 0001:00061BF0       Controls.FindDragTarget
+ 0001:00061BBC       Controls.FindVCLWindow
+ 0001:00061CB4       Controls.FreeDeviceContext
+ 0001:00061D70       Controls.FreeDeviceContexts
+ 0001:00060424       Controls.GetCaptureControl
+ 0001:00066CB4       Controls.GetClientSize
+ 0001:000683C4       Controls.GetControlAtPos
+ 0001:0006FBB8       Controls.GetDockAlign
+ 0001:00060E30       Controls.GetDockSiteAtPos
+ 0001:00061150       Controls.GetDropCtl
+ 0001:0006DB3C       Controls.GetLastChildZone
+ 0001:0006038C       Controls.GetLongHint
+ 0001:00060348       Controls.GetShortHint
+ 0001:00060530       Controls.GetTopParent
+ 0001:0006FC34       Controls.HideZone
+ 0001:00060338       Controls.IdentToCursor
+ 0003:00001B3C       Controls.IMM32DLL
+ 0001:00070B14       Controls.Imm32IsIME
+ 0001:00070BB0       Controls.InitControls
+ 0001:000707B8       Controls.InitIMM32
+ 0001:0005FF94       Controls.InitWndProc
+ 0003:00001ADC       Controls.InnerStyles
+ 0001:00066D14       Controls.InsertBefore
+ 0001:00060BE4       Controls.IsBeforeTargetWindow
+ 0001:00061038       Controls.IsDelphiHandle
+ 0001:0006D570       Controls.IsOrientationSet
+ 0001:00060DEC       Controls.IsSiteChildOfClient
+ 0001:00060134       Controls.IsVCLControl
+ 0004:00003548       Controls.IsVCLControlHook
+ 0001:00061C3C       Controls.ListAdd
+ 0001:00061C64       Controls.ListRemove
+ 0003:00001B28       Controls.MakeLast
+ 0001:00065F4C       Controls.MinVar
+ 0003:00001B40       Controls.ModeMap
+ 0004:00003544       Controls.Mouse
+ 0001:00061C84       Controls.MoveWindowOrg
+ 0004:00003550       Controls.NewStyleControls
+ 0001:0006D554       Controls.NextVisibleZone
+ 0001:000600A4       Controls.ObjectFromHWnd
+ 0003:00001B20       Controls.OrientArray
+ 0003:00001AEC       Controls.OuterStyles
+ 0001:0006D964       Controls.ParentNotLast
+ 0001:000603D0       Controls.PerformEraseBackground
+ 0001:00067C3C       Controls.PointsEqual
+ 0004:00003594       Controls.QualifyingSites
+ 0001:0006E6D0       Controls.ReadControlName
+ 0001:00060F84       Controls.RegisterDockSite
+ 0004:00003564       Controls.RM_GetObjectInstance
+ 0001:00060164       Controls.SendAppMessage
+ 0001:0006044C       Controls.SetCaptureControl
+ 0001:00070A3C       Controls.SetImeMode
+ 0003:00001AD4       Controls.ShowFlags
+ 0001:0006FCB4       Controls.ShowZone
+ 0003:00001B34       Controls.SizeCursors
+ 0001:00060900       Controls.TBaseDragControlObject.Assign
+ 0001:000608DC       Controls.TBaseDragControlObject.Create
+ 0001:0006092C       Controls.TBaseDragControlObject.EndDrag
+ 0001:00060950       Controls.TBaseDragControlObject.Finished
+ 0001:00065C7C       Controls.TControl.ActionChange
+ 0001:0006606C       Controls.TControl.AdjustSize
+ 0001:00065EA0       Controls.TControl.AssignTo
+ 0001:00063E34       Controls.TControl.BeginAutoDrag
+ 0001:00063E50       Controls.TControl.BeginDrag
+ 0001:00063910       Controls.TControl.BringToFront
+ 0001:000648CC       Controls.TControl.CalcCursorPos
+ 0001:00064A34       Controls.TControl.CalcDockSizes
+ 0001:000647CC       Controls.TControl.CanAutoSize
+ 0001:000647D0       Controls.TControl.CanResize
+ 0001:000632A8       Controls.TControl.Changed
+ 0001:000632B8       Controls.TControl.ChangeScale
+ 0001:00065444       Controls.TControl.CheckNewSize
+ 0001:00065238       Controls.TControl.Click
+ 0001:000662AC       Controls.TControl.ClientToParent
+ 0001:00063130       Controls.TControl.ClientToScreen
+ 0001:000659D4       Controls.TControl.CMBiDiModeChanged
+ 0001:00065900       Controls.TControl.CMColorChanged
+ 0001:00065B04       Controls.TControl.CMDesignHitTest
+ 0001:000658E0       Controls.TControl.CMEnabledChanged
+ 0001:00065C1C       Controls.TControl.CMFloat
+ 0001:000658F0       Controls.TControl.CMFontChanged
+ 0001:000660F8       Controls.TControl.CMHintShow
+ 0001:00065A84       Controls.TControl.CMHitTest
+ 0001:000663BC       Controls.TControl.CMMouseActivate
+ 0001:00065A8C       Controls.TControl.CMMouseEnter
+ 0001:00065AC8       Controls.TControl.CMMouseLeave
+ 0001:00065964       Controls.TControl.CMMouseWheel
+ 0001:00065940       Controls.TControl.CMParentBiDiModeChanged
+ 0001:00065910       Controls.TControl.CMParentColorChanged
+ 0001:00065A30       Controls.TControl.CMParentFontChanged
+ 0001:000659F4       Controls.TControl.CMParentShowHintChanged
+ 0001:00065A60       Controls.TControl.CMSysFontChanged
+ 0001:000658B8       Controls.TControl.CMVisibleChanged
+ 0001:0006489C       Controls.TControl.ConstrainedResize
+ 0001:000624E0       Controls.TControl.Create
+ 0001:00065B0C       Controls.TControl.CreateFloatingDockSite
+ 0001:000652A4       Controls.TControl.DblClick
+ 0001:0006430C       Controls.TControl.DefaultDockImage
+ 0001:00064DAC       Controls.TControl.DefaultHandler
+ 0001:000650A8       Controls.TControl.DefineProperties
+ 0001:000648F8       Controls.TControl.DesignWndProc
+ 0001:000625D8       Controls.TControl.Destroy
+ 0001:00065D7C       Controls.TControl.DoActionChange
+ 0001:00064800       Controls.TControl.DoCanAutoSize
+ 0001:0006486C       Controls.TControl.DoCanResize
+ 0001:00062DD8       Controls.TControl.Dock
+ 0001:00064108       Controls.TControl.DockTrackNoTarget
+ 0001:0006492C       Controls.TControl.DoConstrainedResize
+ 0001:000647BC       Controls.TControl.DoConstraintsChange
+ 0001:0006626C       Controls.TControl.DoContextPopup
+ 0001:00062F08       Controls.TControl.DoDock
+ 0001:00064458       Controls.TControl.DoDragMsg
+ 0001:00064120       Controls.TControl.DoEndDock
+ 0001:00064008       Controls.TControl.DoEndDrag
+ 0001:000663E0       Controls.TControl.DoMarginChange
+ 0001:0006416C       Controls.TControl.DoMouseActivate
+ 0001:000652FC       Controls.TControl.DoMouseDown
+ 0001:00065674       Controls.TControl.DoMouseUp
+ 0001:000641A0       Controls.TControl.DoMouseWheel
+ 0001:00064274       Controls.TControl.DoMouseWheelDown
+ 0001:000642C0       Controls.TControl.DoMouseWheelUp
+ 0001:0006414C       Controls.TControl.DoStartDock
+ 0001:00063FE8       Controls.TControl.DoStartDrag
+ 0001:00063F70       Controls.TControl.DragCanceled
+ 0001:00063FBC       Controls.TControl.DragDrop
+ 0001:00063F74       Controls.TControl.Dragging
+ 0001:00063F80       Controls.TControl.DragOver
+ 0001:00064438       Controls.TControl.DrawDragDockImage
+ 0001:0006608C       Controls.TControl.DrawTextBiDiModeFlags
+ 0001:000660CC       Controls.TControl.DrawTextBiDiModeFlagsReadingOnly
+ 0001:00063F3C       Controls.TControl.EndDrag
+ 0001:00064448       Controls.TControl.EraseDragDockImage
+ 0001:00063760       Controls.TControl.FontChanged
+ 0001:00062760       Controls.TControl.GetAction
+ 0001:00065DA0       Controls.TControl.GetActionLinkClass
+ 0001:000663F4       Controls.TControl.GetAlignWithMargins
+ 0001:00062FC0       Controls.TControl.GetBoundsRect
+ 0001:00063060       Controls.TControl.GetClientHeight
+ 0001:000630A0       Controls.TControl.GetClientOrigin
+ 0001:00063004       Controls.TControl.GetClientRect
+ 0001:0006301C       Controls.TControl.GetClientWidth
+ 0001:00063DCC       Controls.TControl.GetControlsAlignment
+ 0001:000639E4       Controls.TControl.GetDeviceContext
+ 0001:00065F88       Controls.TControl.GetDockEdge
+ 0001:000626A0       Controls.TControl.GetDragImages
+ 0001:000626A4       Controls.TControl.GetEnabled
+ 0001:00066038       Controls.TControl.GetFloating
+ 0001:00066064       Controls.TControl.GetFloatingDockSiteClass
+ 0001:000638D8       Controls.TControl.GetMouseCapture
+ 0001:000626AC       Controls.TControl.GetPalette
+ 0001:000626B8       Controls.TControl.GetParentComponent
+ 0001:0006543C       Controls.TControl.GetPopupMenu
+ 0001:000636B0       Controls.TControl.GetText
+ 0001:00063630       Controls.TControl.GetTextBuf
+ 0001:00063620       Controls.TControl.GetTextLen
+ 0001:0006363C       Controls.TControl.GetUndockHeight
+ 0001:00063650       Controls.TControl.GetUndockWidth
+ 0001:000626B0       Controls.TControl.HasParent
+ 0001:00063C78       Controls.TControl.Hide
+ 0001:000660E8       Controls.TControl.InitiateAction
+ 0001:00063BA4       Controls.TControl.Invalidate
+ 0001:00063B18       Controls.TControl.InvalidateControl
+ 0001:0006288C       Controls.TControl.IsAnchorsStored
+ 0001:000637D4       Controls.TControl.IsBiDiModeStored
+ 0001:00065DA8       Controls.TControl.IsCaptionStored
+ 0001:0006386C       Controls.TControl.IsColorStored
+ 0001:00065DC8       Controls.TControl.IsEnabledStored
+ 0001:000637B4       Controls.TControl.IsFontStored
+ 0001:00065E08       Controls.TControl.IsHelpContextStored
+ 0001:00065DE8       Controls.TControl.IsHintStored
+ 0001:00065E48       Controls.TControl.IsOnClickStored
+ 0001:00063DD0       Controls.TControl.IsRightToLeft
+ 0001:000637C8       Controls.TControl.IsShowHintStored
+ 0001:00065E28       Controls.TControl.IsVisibleStored
+ 0001:00065E68       Controls.TControl.Loaded
+ 0001:00064548       Controls.TControl.ManualDock
+ 0001:00064728       Controls.TControl.ManualFloat
+ 0001:00063BB8       Controls.TControl.MouseActivate
+ 0001:000652C4       Controls.TControl.MouseDown
+ 0001:00065590       Controls.TControl.MouseMove
+ 0001:0006563C       Controls.TControl.MouseUp
+ 0001:00063C00       Controls.TControl.MouseWheelHandler
+ 0001:000629A4       Controls.TControl.Notification
+ 0001:000626E4       Controls.TControl.PaletteChanged
+ 0001:00064A00       Controls.TControl.Perform
+ 0001:00064034       Controls.TControl.PositionDockRect
+ 0001:000664D0       Controls.TControl.ReadExplicitHeight
+ 0001:000664E8       Controls.TControl.ReadExplicitLeft
+ 0001:000664B8       Controls.TControl.ReadExplicitTop
+ 0001:00066490       Controls.TControl.ReadExplicitWidth
+ 0001:00064E34       Controls.TControl.ReadIsControl
+ 0001:00062910       Controls.TControl.ReadState
+ 0001:00063CC4       Controls.TControl.Refresh
+ 0001:00063CD0       Controls.TControl.Repaint
+ 0001:000628E0       Controls.TControl.RequestAlign
+ 0001:000628F0       Controls.TControl.Resize
+ 0001:0006315C       Controls.TControl.ScaleConstraints
+ 0001:000631E0       Controls.TControl.ScreenToClient
+ 0001:0006320C       Controls.TControl.SendCancelMode
+ 0001:0006323C       Controls.TControl.SendDockNotification
+ 0001:00063924       Controls.TControl.SendToBack
+ 0001:00062810       Controls.TControl.SetAction
+ 0001:000629FC       Controls.TControl.SetAlign
+ 0001:000663FC       Controls.TControl.SetAlignWithMargins
+ 0001:00062770       Controls.TControl.SetAnchors
+ 0001:0006347C       Controls.TControl.SetAutoSize
+ 0001:00063744       Controls.TControl.SetBiDiMode
+ 0001:00062AE4       Controls.TControl.SetBounds
+ 0001:00062FE0       Controls.TControl.SetBoundsRect
+ 0001:00063078       Controls.TControl.SetClientHeight
+ 0001:0006353C       Controls.TControl.SetClientSize
+ 0001:00063034       Controls.TControl.SetClientWidth
+ 0001:00063850       Controls.TControl.SetColor
+ 0001:000662A0       Controls.TControl.SetConstraints
+ 0001:000638BC       Controls.TControl.SetCursor
+ 0001:000628A4       Controls.TControl.SetDesignVisible
+ 0001:000628DC       Controls.TControl.SetDragMode
+ 0001:00063608       Controls.TControl.SetEnabled
+ 0001:000637A4       Controls.TControl.SetFont
+ 0001:00062DA4       Controls.TControl.SetHeight
+ 0001:00062F60       Controls.TControl.SetHelpContext
+ 0001:00062F74       Controls.TControl.SetHelpKeyword
+ 0001:00062F98       Controls.TControl.SetHostDockSite
+ 0001:00062D08       Controls.TControl.SetLeft
+ 0001:000663E8       Controls.TControl.SetMargins
+ 0001:000638E8       Controls.TControl.SetMouseCapture
+ 0001:00063498       Controls.TControl.SetName
+ 0001:00063584       Controls.TControl.SetParent
+ 0001:00063898       Controls.TControl.SetParentBiDiMode
+ 0001:00063874       Controls.TControl.SetParentColor
+ 0001:000626BC       Controls.TControl.SetParentComponent
+ 0001:000637DC       Controls.TControl.SetParentFont
+ 0001:00063824       Controls.TControl.SetParentShowHint
+ 0001:00063664       Controls.TControl.SetPopupMenu
+ 0001:00063800       Controls.TControl.SetShowHint
+ 0001:000636E0       Controls.TControl.SetText
+ 0001:0006368C       Controls.TControl.SetTextBuf
+ 0001:00062D3C       Controls.TControl.SetTop
+ 0001:000635D0       Controls.TControl.SetVisible
+ 0001:00062D70       Controls.TControl.SetWidth
+ 0001:000639C0       Controls.TControl.SetZOrder
+ 0001:00063938       Controls.TControl.SetZOrderPosition
+ 0001:00063C80       Controls.TControl.Show
+ 0001:00063CB0       Controls.TControl.Update
+ 0001:00062B84       Controls.TControl.UpdateAnchorRules
+ 0001:00064AA8       Controls.TControl.UpdateBoundsRect
+ 0001:0006642C       Controls.TControl.UpdateExplicitBounds
+ 0001:00063E00       Controls.TControl.UseRightToLeftAlignment
+ 0001:00063DE8       Controls.TControl.UseRightToLeftReading
+ 0001:00063E18       Controls.TControl.UseRightToLeftScrollBar
+ 0001:00064AD8       Controls.TControl.VisibleChanging
+ 0001:000657C8       Controls.TControl.WMCancelMode
+ 0001:00066128       Controls.TControl.WMContextMenu
+ 0001:000653E8       Controls.TControl.WMLButtonDblClk
+ 0001:00065380       Controls.TControl.WMLButtonDown
+ 0001:000656AC       Controls.TControl.WMLButtonUp
+ 0001:00065564       Controls.TControl.WMMButtonDblClk
+ 0001:00065538       Controls.TControl.WMMButtonDown
+ 0001:00065750       Controls.TControl.WMMButtonUp
+ 0001:000655C4       Controls.TControl.WMMouseMove
+ 0001:00065770       Controls.TControl.WMMouseWheel
+ 0001:000653CC       Controls.TControl.WMNCLButtonDown
+ 0001:0006550C       Controls.TControl.WMRButtonDblClk
+ 0001:000654E0       Controls.TControl.WMRButtonDown
+ 0001:00065730       Controls.TControl.WMRButtonUp
+ 0001:00065808       Controls.TControl.WMWindowPosChanged
+ 0001:00064ADC       Controls.TControl.WndProc
+ 0001:00066470       Controls.TControl.WriteExplicitHeight
+ 0001:00066480       Controls.TControl.WriteExplicitLeft
+ 0001:00066460       Controls.TControl.WriteExplicitTop
+ 0001:000664A8       Controls.TControl.WriteExplicitWidth
+ 0001:00064E48       Controls.TControl.WriteIsControl
+ 0001:0006208C       Controls.TControlActionLink.AssignClient
+ 0001:000620A8       Controls.TControlActionLink.DoShowHint
+ 0001:00062198       Controls.TControlActionLink.IsCaptionLinked
+ 0001:0006220C       Controls.TControlActionLink.IsDropdownMenuLinked
+ 0001:00062220       Controls.TControlActionLink.IsEnabledLinked
+ 0001:00062254       Controls.TControlActionLink.IsEnableDropdownLinked
+ 0001:000623F4       Controls.TControlActionLink.IsHelpLinked
+ 0001:00062268       Controls.TControlActionLink.IsHintLinked
+ 0001:00062314       Controls.TControlActionLink.IsOnExecuteLinked
+ 0001:000622A0       Controls.TControlActionLink.IsPopupMenuLinked
+ 0001:000622E0       Controls.TControlActionLink.IsVisibleLinked
+ 0001:0006233C       Controls.TControlActionLink.SetCaption
+ 0001:0006235C       Controls.TControlActionLink.SetDropdownMenu
+ 0001:00062360       Controls.TControlActionLink.SetEnabled
+ 0001:00062380       Controls.TControlActionLink.SetEnableDropdown
+ 0001:0006247C       Controls.TControlActionLink.SetHelpContext
+ 0001:0006245C       Controls.TControlActionLink.SetHelpKeyword
+ 0001:0006249C       Controls.TControlActionLink.SetHelpType
+ 0001:00062384       Controls.TControlActionLink.SetHint
+ 0001:000623C8       Controls.TControlActionLink.SetOnExecute
+ 0001:000624BC       Controls.TControlActionLink.SetPopupMenu
+ 0001:000623A8       Controls.TControlActionLink.SetVisible
+ 0001:00061E48       Controls.TControlCanvas.CreateHandle
+ 0001:00061E1C       Controls.TControlCanvas.Destroy
+ 0001:00061EF0       Controls.TControlCanvas.FreeHandle
+ 0001:00061F24       Controls.TControlCanvas.SetControl
+ 0001:00061F3C       Controls.TControlCanvas.UpdateTextFlags
+ 0001:0006D3F8       Controls.TCustomControl.Create
+ 0001:0006D454       Controls.TCustomControl.Destroy
+ 0001:0006D550       Controls.TCustomControl.Paint
+ 0001:0006D4A4       Controls.TCustomControl.PaintWindow
+ 0001:0006D484       Controls.TCustomControl.WMPaint
+ 0001:00070D7C       Controls.TCustomListControl.MoveSelection
+ 0001:0007010C       Controls.TDockTree.ActualSize
+ 0001:0006DDDC       Controls.TDockTree.AdjustDockRect
+ 0001:000701A0       Controls.TDockTree.AdjustFrameRect
+ 0001:0006DDF4       Controls.TDockTree.BeginUpdate
+ 0001:0006FDEC       Controls.TDockTree.ControlVisibilityChanged
+ 0001:0006DC20       Controls.TDockTree.Create
+ 0001:0006DD88       Controls.TDockTree.Destroy
+ 0001:0006F9EC       Controls.TDockTree.DrawSizeSplitter
+ 0001:0006DDF8       Controls.TDockTree.EndUpdate
+ 0001:0006E4A8       Controls.TDockTree.FindControlAtPos
+ 0001:0006DE64       Controls.TDockTree.FindControlZone
+ 0001:0006DECC       Controls.TDockTree.ForEachAt
+ 0001:0006DEE4       Controls.TDockTree.GetControlBounds
+ 0001:0006FB68       Controls.TDockTree.GetNextLimit
+ 0001:0006DF58       Controls.TDockTree.HitTest
+ 0001:0006DF68       Controls.TDockTree.InsertControl
+ 0001:0006E184       Controls.TDockTree.InsertNewParent
+ 0001:0006E32C       Controls.TDockTree.InsertSibling
+ 0001:0006E648       Controls.TDockTree.InternalHitTest
+ 0001:0006E718       Controls.TDockTree.LoadFromStream
+ 0001:000701E0       Controls.TDockTree.MouseDown
+ 0001:00070394       Controls.TDockTree.MouseMove
+ 0001:000703E4       Controls.TDockTree.MouseUp
+ 0001:0006EBE4       Controls.TDockTree.PaintDockFrame
+ 0001:0006ED38       Controls.TDockTree.PaintSite
+ 0001:0006EE6C       Controls.TDockTree.PositionDockRect
+ 0001:0006F01C       Controls.TDockTree.PruneZone
+ 0001:00070174       Controls.TDockTree.ReferenceFromOrient
+ 0001:0007013C       Controls.TDockTree.RelativeSize
+ 0001:0006F078       Controls.TDockTree.RemoveControl
+ 0001:0006F0B8       Controls.TDockTree.RemoveZone
+ 0001:0006F358       Controls.TDockTree.ResetBounds
+ 0001:0006F60C       Controls.TDockTree.SaveToStream
+ 0001:0006F440       Controls.TDockTree.ScaleZone
+ 0001:0006F848       Controls.TDockTree.SetNewBounds
+ 0001:0006F878       Controls.TDockTree.SetReplacingControl
+ 0001:0006F890       Controls.TDockTree.ShiftZone
+ 0001:00070458       Controls.TDockTree.ShowHint
+ 0001:0006F8C4       Controls.TDockTree.SplitterMouseDown
+ 0001:0006F924       Controls.TDockTree.SplitterMouseUp
+ 0001:0006F9A0       Controls.TDockTree.UpdateAll
+ 0001:0006F9C8       Controls.TDockTree.UpdateZone
+ 0001:0006F9D8       Controls.TDockTree.WindowProc
+ 0001:0006FE74       Controls.TDockTree.WndProc
+ 0001:0006E3A4       Controls.TDockTree.ZoneCaptionHitTest
+ 0001:0006D594       Controls.TDockZone.Create
+ 0001:0006DB4C       Controls.TDockZone.ExpandZoneLimit
+ 0001:0006DC14       Controls.TDockZone.FirstVisibleChild
+ 0001:0006D5B8       Controls.TDockZone.GetChildCount
+ 0001:0006D89C       Controls.TDockZone.GetControlName
+ 0001:0006D73C       Controls.TDockZone.GetHeightWidth
+ 0001:0006D628       Controls.TDockZone.GetLimitBegin
+ 0001:0006D670       Controls.TDockZone.GetLimitSize
+ 0001:0006D6B8       Controls.TDockZone.GetTopLeft
+ 0001:0006D5F0       Controls.TDockZone.GetVisible
+ 0001:0006D5CC       Controls.TDockZone.GetVisibleChildCount
+ 0001:0006DB10       Controls.TDockZone.GetZoneLimit
+ 0001:0006DBEC       Controls.TDockZone.NextVisible
+ 0001:0006DBF8       Controls.TDockZone.PrevVisible
+ 0001:0006D7F4       Controls.TDockZone.ResetChildren
+ 0001:0006DB8C       Controls.TDockZone.ResetZoneLimits
+ 0001:0006D8E0       Controls.TDockZone.SetControlName
+ 0001:0006DB38       Controls.TDockZone.SetZoneLimit
+ 0001:0006D994       Controls.TDockZone.Update
+ 0001:00060984       Controls.TDragControlObject.GetDragCursor
+ 0001:0006099C       Controls.TDragControlObject.GetDragImages
+ 0001:000609A8       Controls.TDragControlObject.HideDragImage
+ 0001:000609C8       Controls.TDragControlObject.ShowDragImage
+ 0001:000609E8       Controls.TDragControlObjectEx.BeforeDestruction
+ 0001:00060B24       Controls.TDragDockObject.AdjustDockRect
+ 0001:00060A84       Controls.TDragDockObject.Assign
+ 0001:000609EC       Controls.TDragDockObject.Create
+ 0001:00060A54       Controls.TDragDockObject.Destroy
+ 0001:00060BA0       Controls.TDragDockObject.DrawDragDockImage
+ 0001:00060AE4       Controls.TDragDockObject.EndDrag
+ 0001:00060BB4       Controls.TDragDockObject.EraseDragDockImage
+ 0001:00060BC8       Controls.TDragDockObject.GetDragCursor
+ 0001:00060BD4       Controls.TDragDockObject.GetEraseWhenMoving
+ 0001:00060BD8       Controls.TDragDockObject.GetFrameWidth
+ 0001:00060BE0       Controls.TDragDockObjectEx.BeforeDestruction
+ 0001:0006D238       Controls.TDragImageList.BeginDrag
+ 0001:0006D2AC       Controls.TDragImageList.DragLock
+ 0001:0006D334       Controls.TDragImageList.DragMove
+ 0001:0006D310       Controls.TDragImageList.DragUnlock
+ 0001:0006D3A8       Controls.TDragImageList.EndDrag
+ 0001:0006D20C       Controls.TDragImageList.GetHotSpot
+ 0001:0006D390       Controls.TDragImageList.HideDragImage
+ 0001:0006D188       Controls.TDragImageList.Initialize
+ 0001:0006D1E8       Controls.TDragImageList.SetDragCursor
+ 0001:0006D1A0       Controls.TDragImageList.SetDragImage
+ 0001:0006D378       Controls.TDragImageList.ShowDragImage
+ 0001:000608CC       Controls.TDragObject.AfterConstruction
+ 0001:00060678       Controls.TDragObject.Assign
+ 0001:000608BC       Controls.TDragObject.BeforeDestruction
+ 0001:000606B8       Controls.TDragObject.Capture
+ 0001:000606D0       Controls.TDragObject.Finished
+ 0001:00060848       Controls.TDragObject.GetDragCursor
+ 0001:00060844       Controls.TDragObject.GetDragImages
+ 0001:000606D8       Controls.TDragObject.GetName
+ 0001:00060860       Controls.TDragObject.HideDragImage
+ 0001:00060864       Controls.TDragObject.Instance
+ 0001:00060870       Controls.TDragObject.MainWndProc
+ 0001:00060700       Controls.TDragObject.ReleaseCapture
+ 0001:0006086C       Controls.TDragObject.ShowDragImage
+ 0001:00060714       Controls.TDragObject.WndProc
+ 0001:0006CA08       Controls.TGraphicControl.Create
+ 0001:0006CA64       Controls.TGraphicControl.Destroy
+ 0001:0006CB4C       Controls.TGraphicControl.Paint
+ 0001:0006CAA4       Controls.TGraphicControl.WMPaint
+ 0001:0006CE3C       Controls.THintWindow.ActivateHint
+ 0001:0006D030       Controls.THintWindow.ActivateHintData
+ 0001:0006D058       Controls.THintWindow.CalcHintRect
+ 0001:0006CDA4       Controls.THintWindow.CMTextChanged
+ 0001:0006CB50       Controls.THintWindow.Create
+ 0001:0006CBBC       Controls.THintWindow.CreateParams
+ 0001:0006CD34       Controls.THintWindow.IsHintMsg
+ 0001:0006D0B4       Controls.THintWindow.NCPaint
+ 0001:0006CC8C       Controls.THintWindow.Paint
+ 0001:0006CD98       Controls.THintWindow.ReleaseHandle
+ 0001:0006D144       Controls.THintWindow.ShouldHideHint
+ 0001:0006CC20       Controls.THintWindow.WMNCHitTest
+ 0001:0006CC28       Controls.THintWindow.WMNCPaint
+ 0001:0006D120       Controls.THintWindow.WMPrint
+ 0001:00070DDC       Controls.TMargins.AssignTo
+ 0001:00070E24       Controls.TMargins.Change
+ 0001:00070D98       Controls.TMargins.Create
+ 0001:00070F9C       Controls.TMargins.GetControlBound
+ 0001:00070E38       Controls.TMargins.InitDefaults
+ 0001:00070EB0       Controls.TMargins.SetControlBounds
+ 0001:00070E58       Controls.TMargins.SetMargin
+ 0001:0007054C       Controls.TMouse.Create
+ 0001:000705DC       Controls.TMouse.CreatePanningWindow
+ 0001:00070608       Controls.TMouse.Destroy
+ 0001:00070638       Controls.TMouse.GetCapture
+ 0001:00070640       Controls.TMouse.GetCursorPos
+ 0001:00070650       Controls.TMouse.GetIsDragging
+ 0001:0007065C       Controls.TMouse.GetIsPanning
+ 0001:00070680       Controls.TMouse.GetMouseData
+ 0001:0007069C       Controls.TMouse.GetNativeData
+ 0001:000706CC       Controls.TMouse.GetRegisteredData
+ 0001:000706F4       Controls.TMouse.SetCapture
+ 0001:0007071C       Controls.TMouse.SetCursorPos
+ 0001:00070734       Controls.TMouse.SetPanningWindow
+ 0001:00070754       Controls.TMouse.SettingChanged
+ 0001:00071160       Controls.TPadding.InitDefaults
+ 0001:0006A37C       Controls.TraverseControls
+ 0003:00001B30       Controls.TreeStreamEndFlag
+ 0001:0006055C       Controls.TSiteList.AddSite
+ 0001:000605E0       Controls.TSiteList.Clear
+ 0001:000604F8       Controls.TSiteList.Find
+ 0001:00060614       Controls.TSiteList.GetTopSite
+ 0001:00061FA4       Controls.TSizeConstraints.AssignTo
+ 0001:00062078       Controls.TSizeConstraints.Change
+ 0001:00061F68       Controls.TSizeConstraints.Create
+ 0001:00061FEC       Controls.TSizeConstraints.SetConstraints
+ 0001:0006BFF0       Controls.TWinControl.ActionChange
+ 0001:0006780C       Controls.TWinControl.AddBiDiModeExStyle
+ 0001:000668A4       Controls.TWinControl.AdjustClientRect
+ 0001:0006B510       Controls.TWinControl.AdjustSize
+ 0001:00067170       Controls.TWinControl.AlignControl
+ 0001:0006706C       Controls.TWinControl.AlignControls
+ 0001:000668D4       Controls.TWinControl.ArrangeControl
+ 0001:0006C038       Controls.TWinControl.AssignTo
+ 0001:00067708       Controls.TWinControl.Broadcast
+ 0001:0006BB28       Controls.TWinControl.CalcConstraints
+ 0001:0006C068       Controls.TWinControl.CanAutoSize
+ 0001:0006B2CC       Controls.TWinControl.CanFocus
+ 0001:0006BA5C       Controls.TWinControl.CanResize
+ 0001:0006AE58       Controls.TWinControl.ChangeScale
+ 0001:0006A6A4       Controls.TWinControl.CMBiDiModeChanged
+ 0001:0006A900       Controls.TWinControl.CMBorderChanged
+ 0001:0006A77C       Controls.TWinControl.CMChanged
+ 0001:0006A790       Controls.TWinControl.CMChildKey
+ 0001:0006A85C       Controls.TWinControl.CMColorChanged
+ 0001:0006AA40       Controls.TWinControl.CMControlListChange
+ 0001:0006AA54       Controls.TWinControl.CMControlListChanging
+ 0001:0006A940       Controls.TWinControl.CMCtl3DChanged
+ 0001:0006A8C0       Controls.TWinControl.CMCursorChanged
+ 0001:0006A75C       Controls.TWinControl.CMDesignHitTest
+ 0001:0006A7AC       Controls.TWinControl.CMDialogChar
+ 0001:0006A7A4       Controls.TWinControl.CMDialogKey
+ 0001:00069F38       Controls.TWinControl.CMDockClient
+ 0001:0006A9E0       Controls.TWinControl.CMDrag
+ 0001:0006A814       Controls.TWinControl.CMEnabledChanged
+ 0001:0006A6DC       Controls.TWinControl.CMEnter
+ 0001:0006A74C       Controls.TWinControl.CMExit
+ 0001:0006A050       Controls.TWinControl.CMFloat
+ 0001:0006A7B4       Controls.TWinControl.CMFocusChanged
+ 0001:0006A9D0       Controls.TWinControl.CMFontChange
+ 0001:0006A884       Controls.TWinControl.CMFontChanged
+ 0001:0006B1C8       Controls.TWinControl.CMInvalidate
+ 0001:0006A980       Controls.TWinControl.CMParentCtl3DChanged
+ 0001:00068074       Controls.TWinControl.CMRecreateWnd
+ 0001:0006A68C       Controls.TWinControl.CMShowHintChanged
+ 0001:0006A7EC       Controls.TWinControl.CMShowingChanged
+ 0001:0006A9C0       Controls.TWinControl.CMSysColorChange
+ 0001:0006AA68       Controls.TWinControl.CMSysFontChanged
+ 0001:0006C800       Controls.TWinControl.CMTextChanged
+ 0001:0006A9D8       Controls.TWinControl.CMTimeChange
+ 0001:0006A028       Controls.TWinControl.CMUnDockClient
+ 0001:0006A7BC       Controls.TWinControl.CMVisibleChanged
+ 0001:0006A9C8       Controls.TWinControl.CMWinIniChange
+ 0001:0006AC54       Controls.TWinControl.CNChar
+ 0001:0006AB1C       Controls.TWinControl.CNKeyDown
+ 0001:0006AC00       Controls.TWinControl.CNKeyUp
+ 0001:0006AD00       Controls.TWinControl.CNSysChar
+ 0001:0006ACA4       Controls.TWinControl.CNSysKeyDown
+ 0001:0006BFB4       Controls.TWinControl.ConstrainedResize
+ 0001:00067450       Controls.TWinControl.ContainsControl
+ 0001:00068490       Controls.TWinControl.ControlAtPos
+ 0001:00069DDC       Controls.TWinControl.ControlsAligned
+ 0001:00066534       Controls.TWinControl.Create
+ 0001:00069DE0       Controls.TWinControl.CreateDockManager
+ 0001:00067E98       Controls.TWinControl.CreateHandle
+ 0001:00067874       Controls.TWinControl.CreateParams
+ 0001:000677A0       Controls.TWinControl.CreateSubClass
+ 0001:00067B70       Controls.TWinControl.CreateWindowHandle
+ 0001:000679A0       Controls.TWinControl.CreateWnd
+ 0001:00067F30       Controls.TWinControl.CustomAlignInsertBefore
+ 0001:00067F54       Controls.TWinControl.CustomAlignPosition
+ 0001:00068BCC       Controls.TWinControl.DefaultHandler
+ 0001:00067D30       Controls.TWinControl.DefineProperties
+ 0001:00066678       Controls.TWinControl.Destroy
+ 0001:00067FE8       Controls.TWinControl.DestroyHandle
+ 0001:00067DEC       Controls.TWinControl.DestroyWindowHandle
+ 0001:00067D8C       Controls.TWinControl.DestroyWnd
+ 0001:00067204       Controls.TWinControl.DisableAlign
+ 0001:00069B70       Controls.TWinControl.DoAddDockClient
+ 0001:00069BC4       Controls.TWinControl.DockDrop
+ 0001:00069C48       Controls.TWinControl.DockOver
+ 0001:0006C84C       Controls.TWinControl.DockReplaceDockClient
+ 0001:00069C14       Controls.TWinControl.DoDockOver
+ 0001:00069B84       Controls.TWinControl.DoEnter
+ 0001:00069BA4       Controls.TWinControl.DoExit
+ 0001:00067234       Controls.TWinControl.DoFlipChildren
+ 0001:0006A100       Controls.TWinControl.DoKeyDown
+ 0001:0006A2F4       Controls.TWinControl.DoKeyPress
+ 0001:0006A22C       Controls.TWinControl.DoKeyUp
+ 0001:0006C8B0       Controls.TWinControl.DoPaddingChange
+ 0001:00069B80       Controls.TWinControl.DoRemoveDockClient
+ 0001:00069C8C       Controls.TWinControl.DoUnDock
+ 0001:0006720C       Controls.TWinControl.EnableAlign
+ 0001:0006B854       Controls.TWinControl.FindNextControl
+ 0001:00066758       Controls.TWinControl.FixupTabList
+ 0001:00067308       Controls.TWinControl.FlipChildren
+ 0001:0006B348       Controls.TWinControl.Focused
+ 0001:0006C030       Controls.TWinControl.GetActionLinkClass
+ 0001:0006B9D4       Controls.TWinControl.GetChildren
+ 0001:0006B4D8       Controls.TWinControl.GetClientOrigin
+ 0001:0006B4F8       Controls.TWinControl.GetClientRect
+ 0001:000676AC       Controls.TWinControl.GetControl
+ 0001:000676E8       Controls.TWinControl.GetControlCount
+ 0001:0006B3A4       Controls.TWinControl.GetControlExtents
+ 0001:0006B12C       Controls.TWinControl.GetDeviceContext
+ 0001:00069D0C       Controls.TWinControl.GetDockClientCount
+ 0001:00069D20       Controls.TWinControl.GetDockClients
+ 0001:0006B390       Controls.TWinControl.GetHandle
+ 0001:0006C7B8       Controls.TWinControl.GetParentBackground
+ 0001:0006B180       Controls.TWinControl.GetParentHandle
+ 0001:00069D44       Controls.TWinControl.GetSiteInfo
+ 0001:0006B5C8       Controls.TWinControl.GetTabOrder
+ 0001:0006B7F4       Controls.TWinControl.GetTabOrderList
+ 0001:0006B198       Controls.TWinControl.GetTopParentHandle
+ 0001:00069DA0       Controls.TWinControl.GetVisibleDockClientCount
+ 0001:0006B730       Controls.TWinControl.HandleAllocated
+ 0001:0006B36C       Controls.TWinControl.HandleNeeded
+ 0001:00067484       Controls.TWinControl.Insert
+ 0001:00067518       Controls.TWinControl.InsertControl
+ 0001:0006B1B8       Controls.TWinControl.Invalidate
+ 0001:0006C818       Controls.TWinControl.InvalidateDockHostSite
+ 0001:0006B294       Controls.TWinControl.InvalidateFrame
+ 0001:00068554       Controls.TWinControl.IsControlActivateMsg
+ 0001:000686A0       Controls.TWinControl.IsControlMouseMsg
+ 0001:0006B590       Controls.TWinControl.IsCtl3DStored
+ 0001:0006AA84       Controls.TWinControl.IsMenuKey
+ 0001:0006C88C       Controls.TWinControl.IsQualifyingSite
+ 0001:0006A0D4       Controls.TWinControl.KeyDown
+ 0001:0006A2D4       Controls.TWinControl.KeyPress
+ 0001:0006A200       Controls.TWinControl.KeyUp
+ 0001:0006834C       Controls.TWinControl.MainWndProc
+ 0001:00067748       Controls.TWinControl.Notification
+ 0001:00067778       Controls.TWinControl.NotifyControls
+ 0001:00068EA0       Controls.TWinControl.PaintControls
+ 0001:00068D08       Controls.TWinControl.PaintHandler
+ 0001:00069170       Controls.TWinControl.PaintTo
+ 0001:00068E78       Controls.TWinControl.PaintWindow
+ 0001:0006A5F0       Controls.TWinControl.PaletteChanged
+ 0001:00067E50       Controls.TWinControl.PrecedingWindow
+ 0001:0006C858       Controls.TWinControl.PreProcessMessage
+ 0001:00067BB0       Controls.TWinControl.ReadDesignSize
+ 0001:0006682C       Controls.TWinControl.ReadState
+ 0001:0006722C       Controls.TWinControl.Realign
+ 0001:0006805C       Controls.TWinControl.RecreateWnd
+ 0001:00069CE8       Controls.TWinControl.ReloadDockedControl
+ 0001:000674D0       Controls.TWinControl.Remove
+ 0001:0006760C       Controls.TWinControl.RemoveControl
+ 0001:00067464       Controls.TWinControl.RemoveFocus
+ 0001:0006C85C       Controls.TWinControl.RemoveWindowProps
+ 0001:0006B278       Controls.TWinControl.Repaint
+ 0001:00069A90       Controls.TWinControl.ResetIme
+ 0001:0006AE10       Controls.TWinControl.ScaleControls
+ 0001:0006AF04       Controls.TWinControl.ScrollBy
+ 0001:0006B98C       Controls.TWinControl.SelectFirst
+ 0001:0006B960       Controls.TWinControl.SelectNext
+ 0001:0006C230       Controls.TWinControl.SetBevelCut
+ 0001:0006C274       Controls.TWinControl.SetBevelEdges
+ 0001:0006C2A4       Controls.TWinControl.SetBevelKind
+ 0001:0006C2C4       Controls.TWinControl.SetBevelWidth
+ 0001:0006B54C       Controls.TWinControl.SetBorderWidth
+ 0001:0006AD34       Controls.TWinControl.SetBounds
+ 0001:0006BA1C       Controls.TWinControl.SetChildOrder
+ 0001:0006B56C       Controls.TWinControl.SetCtl3D
+ 0001:00069E4C       Controls.TWinControl.SetDesignVisible
+ 0001:00069E80       Controls.TWinControl.SetDockSite
+ 0001:0006B30C       Controls.TWinControl.SetFocus
+ 0001:00069960       Controls.TWinControl.SetIme
+ 0001:0006C8B8       Controls.TWinControl.SetPadding
+ 0001:0006C98C       Controls.TWinControl.SetParent
+ 0001:0006C7C0       Controls.TWinControl.SetParentBackground
+ 0001:0006B59C       Controls.TWinControl.SetParentCtl3D
+ 0001:00068268       Controls.TWinControl.SetParentWindow
+ 0001:0006B648       Controls.TWinControl.SetTabOrder
+ 0001:0006B660       Controls.TWinControl.SetTabStop
+ 0001:0006B6C0       Controls.TWinControl.SetUseDockManager
+ 0001:0006B0CC       Controls.TWinControl.SetZOrder
+ 0001:0006AFF4       Controls.TWinControl.SetZOrderPosition
+ 0001:0006AFDC       Controls.TWinControl.ShowControl
+ 0001:0006B25C       Controls.TWinControl.Update
+ 0001:0006B73C       Controls.TWinControl.UpdateBounds
+ 0001:0006C910       Controls.TWinControl.UpdateControlOriginalParentSize
+ 0001:00068224       Controls.TWinControl.UpdateControlState
+ 0001:0006C8C4       Controls.TWinControl.UpdateRecreatingFlag
+ 0001:00068100       Controls.TWinControl.UpdateShowing
+ 0001:0006B5EC       Controls.TWinControl.UpdateTabOrder
+ 0001:0006C6E0       Controls.TWinControl.UpdateUIState
+ 0001:0006A35C       Controls.TWinControl.WMChar
+ 0001:0006A4D8       Controls.TWinControl.WMCharToItem
+ 0001:00069460       Controls.TWinControl.WMCommand
+ 0001:00069534       Controls.TWinControl.WMCompareItem
+ 0001:0006C668       Controls.TWinControl.WMContextMenu
+ 0001:00069558       Controls.TWinControl.WMDeleteItem
+ 0001:0006A54C       Controls.TWinControl.WMDestroy
+ 0001:0006957C       Controls.TWinControl.WMDrawItem
+ 0001:000695F4       Controls.TWinControl.WMEraseBkgnd
+ 0001:000694D4       Controls.TWinControl.WMFontChange
+ 0001:000694F4       Controls.TWinControl.WMHScroll
+ 0001:0006994C       Controls.TWinControl.WMIMEEndComp
+ 0001:00069938       Controls.TWinControl.WMIMEStartComp
+ 0001:0006A1A8       Controls.TWinControl.WMKeyDown
+ 0001:0006A294       Controls.TWinControl.WMKeyUp
+ 0001:0006991C       Controls.TWinControl.WMKillFocus
+ 0001:000695A0       Controls.TWinControl.WMMeasureItem
+ 0001:000695C0       Controls.TWinControl.WMMouseActivate
+ 0001:000697E0       Controls.TWinControl.WMMove
+ 0001:0006C2E4       Controls.TWinControl.WMNCCalcSize
+ 0001:0006A5B0       Controls.TWinControl.WMNCDestroy
+ 0001:0006A5CC       Controls.TWinControl.WMNCHitTest
+ 0001:0006C374       Controls.TWinControl.WMNCPaint
+ 0001:00069480       Controls.TWinControl.WMNotify
+ 0001:00069300       Controls.TWinControl.WMPaint
+ 0001:0006A66C       Controls.TWinControl.WMPaletteChanged
+ 0001:0006A4F8       Controls.TWinControl.WMParentNotify
+ 0001:0006C72C       Controls.TWinControl.WMPrintClient
+ 0001:0006A648       Controls.TWinControl.WMQueryNewPalette
+ 0001:000697FC       Controls.TWinControl.WMSetCursor
+ 0001:00069900       Controls.TWinControl.WMSetFocus
+ 0001:000697A8       Controls.TWinControl.WMSize
+ 0001:000694A4       Controls.TWinControl.WMSysColorChange
+ 0001:0006A42C       Controls.TWinControl.WMSysCommand
+ 0001:0006A1D4       Controls.TWinControl.WMSysKeyDown
+ 0001:0006A2B4       Controls.TWinControl.WMSysKeyUp
+ 0001:000694E4       Controls.TWinControl.WMTimeChange
+ 0001:0006A52C       Controls.TWinControl.WMVKeyToItem
+ 0001:00069514       Controls.TWinControl.WMVScroll
+ 0001:00069694       Controls.TWinControl.WMWindowPosChanged
+ 0001:00069754       Controls.TWinControl.WMWindowPosChanging
+ 0001:000694C0       Controls.TWinControl.WMWinIniChange
+ 0001:00068754       Controls.TWinControl.WndProc
+ 0001:00067BE8       Controls.TWinControl.WriteDesignSize
+ 0001:00066500       Controls.TWinControlActionLink.AssignClient
+ 0001:00066524       Controls.TWinControlActionLink.IsHelpContextLinked
+ 0001:0006652C       Controls.TWinControlActionLink.SetHelpContext
+ 0001:00065B90       Controls.UpdateFloatingDockSitePos
+ 0001:00060C50       Controls.ValidDockTarget
+ 0001:00070A20       Controls.Win32NLSEnableIME
+ 0004:00003558       Controls.WindowAtom
+ 0004:0000355C       Controls.WindowAtomString
+ 0003:00001AD8       Controls.WindowPos
+ 0001:0006F480       Controls.WriteControlName
+ 0004:000035C0       Controls._ImmGetCompositionString
+ 0004:000035A4       Controls._ImmGetContext
+ 0004:000035AC       Controls._ImmGetConversionStatus
+ 0004:000035C4       Controls._ImmIsIME
+ 0004:000035C8       Controls._ImmNotifyIME
+ 0004:000035A8       Controls._ImmReleaseContext
+ 0004:000035BC       Controls._ImmSetCompositionFont
+ 0004:000035B8       Controls._ImmSetCompositionWindow
+ 0004:000035B0       Controls._ImmSetConversionStatus
+ 0004:000035B4       Controls._ImmSetOpenStatus
+ 0004:000035A0       Controls._WINNLSEnableIME
+ 0002:00001FF8       CPRSChart.CPRSChart
+ 0001:003B4CC4       CPRSChart.Finalization
+ 0003:00003A54       CPRSChart_TLB.IID_ICPRSExtension
+ 0003:00003A44       CPRSChart_TLB.LIBID_CPRSChart
+ 0001:000F959C       DateUtils.DayOfTheWeek
+ 0001:000F95C8       DateUtils.DaysBetween
+ 0001:000F9564       DateUtils.DaysInAMonth
+ 0001:000F967C       DateUtils.DaySpan
+ 0001:000F9700       DateUtils.IncDay
+ 0001:000F971C       DateUtils.IncSecond
+ 0001:000F9618       DateUtils.MilliSecondsBetween
+ 0001:000F96D0       DateUtils.MilliSecondSpan
+ 0001:000F95E8       DateUtils.SecondsBetween
+ 0001:000F96A0       DateUtils.SecondSpan
+ 0001:000F9648       DateUtils.SpanOfNowAndThen
+ 0004:000037CC       DB..66
+ 0001:001016AC       DB..TDefaultDBScreenApplication
+ 0002:00000B64       DB.DB
+ 0004:000037C8       DB.DBApplication
+ 0004:000037C4       DB.DBScreen
+ 0003:00002FA8       DB.FieldTypeNames
+ 0001:00101760       DB.Finalization
+ 0004:000037B4       DB.LoginDialogExProc
+ 0004:000037B0       DB.LoginDialogProc
+ 0004:000037C0       DB.PasswordDialog
+ 0004:000037B8       DB.RemoteLoginDialogProc
+ 0004:000037BC       DB.ScreenCursorProc
+ 0001:00101728       DB.TDefaultDBScreenApplication.GetCursor
+ 0001:00101730       DB.TDefaultDBScreenApplication.GetTitle
+ 0001:00101744       DB.TDefaultDBScreenApplication.ProcessMessages
+ 0001:00101748       DB.TDefaultDBScreenApplication.SetCursor
+ 0001:0010174C       DB.TDefaultDBScreenApplication.SetTitle
+ 0004:00004BC8       DBClient..31
+ 0002:00001204       DBClient.DBClient
+ 0003:000037AC       DBClient.FieldPropNames
+ 0001:001ACF24       DBClient.Finalization
+ 0004:000037D8       DBCtrls..22
+ 0001:001024F4       DBCtrls..TVCLScreenApplication
+ 0003:00003050       DBCtrls.BtnHintId
+ 0002:00000C5C       DBCtrls.DBCtrls
+ 0001:00102674       DBCtrls.Finalization
+ 0001:00102558       DBCtrls.TVCLScreenApplication.GetCursor
+ 0001:00102584       DBCtrls.TVCLScreenApplication.GetTitle
+ 0001:00102598       DBCtrls.TVCLScreenApplication.ProcessMessages
+ 0001:001025A8       DBCtrls.TVCLScreenApplication.SetCursor
+ 0001:001025E8       DBCtrls.TVCLScreenApplication.SetTitle
+ 0004:000037D4       DBLogDlg..2
+ 0001:00101D40       DBLogDlg..TLoginDialog
+ 0002:00000C08       DBLogDlg.DBLogDlg
+ 0001:001023F4       DBLogDlg.Finalization
+ 0001:00101F94       DBLogDlg.LoginDialog
+ 0001:001020AC       DBLogDlg.LoginDialogEx
+ 0001:001021DC       DBLogDlg.RemoteLoginDialog
+ 0001:001023E4       DBLogDlg.SetCursorType
+ 0001:0010239C       DBLogDlg.TLoginDialog.FormShow
+ 0004:000037D0       DBPWDlg..2
+ 0001:00101814       DBPWDlg..TPasswordDialog
+ 0002:00000BF0       DBPWDlg.DBPWDlg
+ 0001:00101D04       DBPWDlg.Finalization
+ 0001:00101AAC       DBPWDlg.PasswordDialog
+ 0001:00101BA8       DBPWDlg.TPasswordDialog.AddButtonClick
+ 0001:00101B20       DBPWDlg.TPasswordDialog.EditChange
+ 0001:00101CB0       DBPWDlg.TPasswordDialog.OKButtonClick
+ 0001:00101C90       DBPWDlg.TPasswordDialog.RemoveAllButtonClick
+ 0001:00101C20       DBPWDlg.TPasswordDialog.RemoveButtonClick
+ 0004:000034B0       Dialogs..11
+ 0001:000508C8       Dialogs..TColorDialog
+ 0001:0005008C       Dialogs..TCommonDialog
+ 0001:00051128       Dialogs..TFindDialog
+ 0001:00050BBC       Dialogs..TFontDialog
+ 0001:00053634       Dialogs..TMessageForm
+ 0001:00050464       Dialogs..TOpenDialog
+ 0001:00050E38       Dialogs..TPrintDialog
+ 0001:00051490       Dialogs..TRedirectorWindow
+ 0001:00051260       Dialogs..TReplaceDialog
+ 0001:00050760       Dialogs..TSaveDialog
+ 0001:00051CB8       Dialogs.AllocFilterStr
+ 0003:00001858       Dialogs.ButtonCaptions
+ 0003:0000182C       Dialogs.ButtonNames
+ 0004:000034C0       Dialogs.ButtonWidths
+ 0001:00052FF4       Dialogs.CallDefWndProc
+ 0003:00001804       Dialogs.Captions
+ 0001:00051374       Dialogs.CenterWindow
+ 0001:00052D54       Dialogs.CopyData
+ 0001:00054248       Dialogs.CreateMessageDialog
+ 0001:00053CA8       Dialogs.CreateMessageDialog
+ 0003:00001700       Dialogs.CreationControl
+ 0003:000017B8       Dialogs.Devices
+ 0001:00051428       Dialogs.DialogHook
+ 0003:00001764       Dialogs.DialogOptions
+ 0002:000004D0       Dialogs.Dialogs
+ 0001:000542B4       Dialogs.DoMessageDlgPosHelp
+ 0001:00051944       Dialogs.ExplorerHook
+ 0001:0005202C       Dialogs.ExtractFileName
+ 0001:00052074       Dialogs.ExtractFileNames
+ 0001:0005484C       Dialogs.Finalization
+ 0004:000034B8       Dialogs.FindMsg
+ 0003:000017D0       Dialogs.FindOptions
+ 0001:000530E4       Dialogs.FindReplaceDialogHook
+ 0001:00053030       Dialogs.FindReplaceWndProc
+ 0004:000034BC       Dialogs.FontDialog
+ 0001:000526FC       Dialogs.FontDialogHook
+ 0003:00001778       Dialogs.FontOptions
+ 0003:000016FC       Dialogs.ForceCurrentDirectory
+ 0001:000535E0       Dialogs.GetAveCharSize
+ 0001:00052444       Dialogs.GetCustomColorsArray
+ 0001:00052BD4       Dialogs.GetPrinter
+ 0001:0005326C       Dialogs.GetTopWindow
+ 0004:000034B4       Dialogs.HelpMsg
+ 0003:00001818       Dialogs.IconIDs
+ 0001:000546F8       Dialogs.InitGlobals
+ 0001:000546C8       Dialogs.InputBox
+ 0001:000543AC       Dialogs.InputQuery
+ 0001:00054270       Dialogs.MessageDlg
+ 0001:00054290       Dialogs.MessageDlgPos
+ 0001:00054350       Dialogs.MessageDlgPosHelp
+ 0003:00001884       Dialogs.ModalResults
+ 0003:00001708       Dialogs.OpenOptions
+ 0003:00001760       Dialogs.OpenOptionsEx
+ 0003:000017C4       Dialogs.PrintRanges
+ 0001:00052510       Dialogs.SetCustomColorsArray
+ 0001:00052CD8       Dialogs.SetPrinter
+ 0001:00054388       Dialogs.ShowMessage
+ 0001:00054394       Dialogs.ShowMessagePos
+ 0001:000523D0       Dialogs.TColorDialog.Create
+ 0001:00052414       Dialogs.TColorDialog.Destroy
+ 0001:000525D8       Dialogs.TColorDialog.Execute
+ 0001:000526EC       Dialogs.TColorDialog.SetCustomColors
+ 0001:00051694       Dialogs.TCommonDialog.Create
+ 0001:00051790       Dialogs.TCommonDialog.DefaultHandler
+ 0001:000516DC       Dialogs.TCommonDialog.Destroy
+ 0001:0005191C       Dialogs.TCommonDialog.DoClose
+ 0001:00051930       Dialogs.TCommonDialog.DoShow
+ 0001:00051724       Dialogs.TCommonDialog.Execute
+ 0001:000517C8       Dialogs.TCommonDialog.MainWndProc
+ 0001:00051768       Dialogs.TCommonDialog.MessageHook
+ 0001:00051860       Dialogs.TCommonDialog.TaskModalDialog
+ 0001:0005181C       Dialogs.TCommonDialog.WMDestroy
+ 0001:00051834       Dialogs.TCommonDialog.WMInitDialog
+ 0001:0005184C       Dialogs.TCommonDialog.WMNCDestroy
+ 0001:00051814       Dialogs.TCommonDialog.WndProc
+ 0001:00053254       Dialogs.TFindDialog.CloseDialog
+ 0001:0005316C       Dialogs.TFindDialog.Create
+ 0001:00053218       Dialogs.TFindDialog.Destroy
+ 0001:000532A8       Dialogs.TFindDialog.Execute
+ 0001:00053374       Dialogs.TFindDialog.Find
+ 0001:00053388       Dialogs.TFindDialog.GetFindText
+ 0001:000533A4       Dialogs.TFindDialog.GetLeft
+ 0001:000533BC       Dialogs.TFindDialog.GetPosition
+ 0001:000533F0       Dialogs.TFindDialog.GetReplaceText
+ 0001:0005340C       Dialogs.TFindDialog.GetTop
+ 0001:00053424       Dialogs.TFindDialog.MessageHook
+ 0001:00053508       Dialogs.TFindDialog.Replace
+ 0001:0005351C       Dialogs.TFindDialog.SetFindText
+ 0001:00053540       Dialogs.TFindDialog.SetPosition
+ 0001:0005357C       Dialogs.TFindDialog.SetReplaceText
+ 0001:000527F8       Dialogs.TFontDialog.Apply
+ 0001:00052740       Dialogs.TFontDialog.Create
+ 0001:00052794       Dialogs.TFontDialog.Destroy
+ 0001:00052810       Dialogs.TFontDialog.DoApply
+ 0001:000528BC       Dialogs.TFontDialog.Execute
+ 0001:00052B14       Dialogs.TFontDialog.SetFont
+ 0001:00052B24       Dialogs.TFontDialog.UpdateFromLogFont
+ 0001:000527C4       Dialogs.TFontDialog.WndProc
+ 0001:000537BC       Dialogs.TMessageForm.CreateNew
+ 0001:0005384C       Dialogs.TMessageForm.CustomKeyDown
+ 0001:000539FC       Dialogs.TMessageForm.GetFormText
+ 0001:00053834       Dialogs.TMessageForm.HelpButtonClick
+ 0001:000538B8       Dialogs.TMessageForm.WriteToClipBoard
+ 0001:00051A84       Dialogs.TOpenDialog.CanClose
+ 0001:000519C8       Dialogs.TOpenDialog.Create
+ 0001:00051C74       Dialogs.TOpenDialog.DefineProperties
+ 0001:00051A4C       Dialogs.TOpenDialog.Destroy
+ 0001:00051BAC       Dialogs.TOpenDialog.DoCanClose
+ 0001:00051D10       Dialogs.TOpenDialog.DoExecute
+ 0001:00051BF8       Dialogs.TOpenDialog.DoFolderChange
+ 0001:00052394       Dialogs.TOpenDialog.DoIncludeItem
+ 0001:00051BD8       Dialogs.TOpenDialog.DoSelectionChange
+ 0001:00051C18       Dialogs.TOpenDialog.DoTypeChange
+ 0001:00052374       Dialogs.TOpenDialog.Execute
+ 0001:000522AC       Dialogs.TOpenDialog.GetFileName
+ 0001:00052190       Dialogs.TOpenDialog.GetFileNames
+ 0001:00052308       Dialogs.TOpenDialog.GetFilterIndex
+ 0001:00052258       Dialogs.TOpenDialog.GetStaticRect
+ 0001:00051C38       Dialogs.TOpenDialog.ReadFileEditStyle
+ 0001:00052318       Dialogs.TOpenDialog.SetInitialDir
+ 0001:00051AB0       Dialogs.TOpenDialog.WndProc
+ 0001:00052E00       Dialogs.TPrintDialog.Execute
+ 0001:00052DEC       Dialogs.TPrintDialog.SetNumCopies
+ 0001:0005168C       Dialogs.TRedirectorWindow.CMRelease
+ 0001:000515FC       Dialogs.TRedirectorWindow.CreateParams
+ 0001:00051620       Dialogs.TRedirectorWindow.WndProc
+ 0001:000535A0       Dialogs.TReplaceDialog.Create
+ 0001:000523B0       Dialogs.TSaveDialog.Execute
+ 0003:00001704       Dialogs.WndProcPtrAtom
+ 0004:000062D0       dShared..2
+ 0001:0030AD7C       dShared..TdmodShared
+ 0001:0030B0B8       dShared.AddChildObject
+ 0001:0030BE80       dShared.AddErr
+ 0001:0030B778       dShared.BuildNodes
+ 0003:00003E64       dShared.COMObjIdx
+ 0003:00003E1C       dShared.DialogImageXRef
+ 0004:000062CC       dShared.dmodShared
+ 0002:00001960       dShared.dShared
+ 0001:0030BEEC       dShared.ErrCount
+ 0001:0030CD38       dShared.Finalization
+ 0001:0030C5BC       dShared.FindNode
+ 0001:0030B398       dShared.GetID
+ 0001:0030B524       dShared.GetNode
+ 0001:0030B368       dShared.InSyncNode
+ 0003:00003E5C       dShared.RemDlgIdx
+ 0001:0030BC60       dShared.TdmodShared.AddDrawerTree
+ 0001:0030B178       dShared.TdmodShared.AddTemplateNode
+ 0001:0030BF10       dShared.TdmodShared.BoilerplateOK
+ 0001:0030BBFC       dShared.TdmodShared.dmodSharedCreate
+ 0001:0030BC40       dShared.TdmodShared.dmodSharedDestroy
+ 0001:0030C588       dShared.TdmodShared.EncounterLocationChanged
+ 0001:0030B294       dShared.TdmodShared.ExpandNode
+ 0001:0030C7CC       dShared.TdmodShared.ExpandTree
+ 0001:0030C8BC       dShared.TdmodShared.FindRichEditText
+ 0001:0030AF90       dShared.TdmodShared.ImgIdx
+ 0001:0030C79C       dShared.TdmodShared.InDialog
+ 0001:0030BD0C       dShared.TdmodShared.LoadTIUObjects
+ 0001:0030BE48       dShared.TdmodShared.NeedsCollapsing
+ 0001:0030BCCC       dShared.TdmodShared.Reload
+ 0001:0030BCA4       dShared.TdmodShared.RemoveDrawerTree
+ 0001:0030CB0C       dShared.TdmodShared.ReplaceRichEditText
+ 0001:0030B8F4       dShared.TdmodShared.Resync
+ 0001:0030C634       dShared.TdmodShared.SelectNode
+ 0001:0030C394       dShared.TdmodShared.TemplateOK
+ 0003:00003D6C       dShared.TemplateImageIdx
+ 0004:00004BA8       DSIntf..2
+ 0003:0000377C       DSIntf.DbClientHandle
+ 0002:000011E8       DSIntf.DSIntf
+ 0001:001ACC9C       DSIntf.Finalization
+ 0004:00004BAC       DSIntf.Loading
+ 0004:00003634       ExtActns..72
+ 0002:00000754       ExtActns.ExtActns
+ 0001:000885DC       ExtActns.Finalization
+ 0004:00003638       ExtActns.UrlMonHandle
+ 0004:0000363C       ExtActns.UrlMonInitialized
+ 0004:000034AC       ExtCtrls..83
+ 0001:0004AE88       ExtCtrls..TBevel
+ 0001:0004C9AC       ExtCtrls..TBoundLabel
+ 0001:0004CF98       ExtCtrls..TCustomLabeledEdit
+ 0001:0004B1BC       ExtCtrls..TCustomPanel
+ 0001:0004BDD8       ExtCtrls..TCustomRadioGroup
+ 0001:0004E894       ExtCtrls..TGroupButton
+ 0001:0004A7E0       ExtCtrls..TImage
+ 0001:0004A264       ExtCtrls..TPaintBox
+ 0001:0004B348       ExtCtrls..TPanel
+ 0001:0004BF64       ExtCtrls..TRadioGroup
+ 0001:00049D94       ExtCtrls..TShape
+ 0001:0004C694       ExtCtrls..TSplitter
+ 0001:0004B0A8       ExtCtrls..TTimer
+ 0001:0004E424       ExtCtrls.AdjustColors
+ 0003:000016E4       ExtCtrls.Alignments
+ 0001:0004DCF4       ExtCtrls.BevelLine
+ 0001:0004DC04       ExtCtrls.BevelRect
+ 0003:000016DC       ExtCtrls.BorderStyles
+ 0001:0004D134       ExtCtrls.DoRect
+ 0002:0000048C       ExtCtrls.ExtCtrls
+ 0001:0005005C       ExtCtrls.Finalization
+ 0001:0004D1F8       ExtCtrls.Frame3D
+ 0001:0004DB58       ExtCtrls.TBevel.Create
+ 0001:0004DD34       ExtCtrls.TBevel.Paint
+ 0001:0004DBE4       ExtCtrls.TBevel.SetShape
+ 0001:0004DBC4       ExtCtrls.TBevel.SetStyle
+ 0001:0004FC60       ExtCtrls.TBoundLabel.AdjustBounds
+ 0001:0004FBEC       ExtCtrls.TBoundLabel.Create
+ 0001:0004FC9C       ExtCtrls.TBoundLabel.GetHeight
+ 0001:0004FCA0       ExtCtrls.TBoundLabel.GetLeft
+ 0001:0004FCA4       ExtCtrls.TBoundLabel.GetTop
+ 0001:0004FCA8       ExtCtrls.TBoundLabel.GetWidth
+ 0001:0004FCAC       ExtCtrls.TBoundLabel.SetHeight
+ 0001:0004FCDC       ExtCtrls.TBoundLabel.SetWidth
+ 0001:0004FD5C       ExtCtrls.TCustomLabeledEdit.CMBidimodechanged
+ 0001:0004FD80       ExtCtrls.TCustomLabeledEdit.CMEnabledchanged
+ 0001:0004FDA8       ExtCtrls.TCustomLabeledEdit.CMVisiblechanged
+ 0001:0004FD0C       ExtCtrls.TCustomLabeledEdit.Create
+ 0001:0004FDC8       ExtCtrls.TCustomLabeledEdit.Notification
+ 0001:0004FDF8       ExtCtrls.TCustomLabeledEdit.SetBounds
+ 0001:0004FE20       ExtCtrls.TCustomLabeledEdit.SetLabelPosition
+ 0001:0004FF2C       ExtCtrls.TCustomLabeledEdit.SetName
+ 0001:0004FFEC       ExtCtrls.TCustomLabeledEdit.SetParent
+ 0001:00050020       ExtCtrls.TCustomLabeledEdit.SetupInternalLabel
+ 0001:0004E688       ExtCtrls.TCustomPanel.AdjustClientRect
+ 0001:0004E81C       ExtCtrls.TCustomPanel.CanAutoSize
+ 0001:0004E2BC       ExtCtrls.TCustomPanel.CMBorderChanged
+ 0001:0004E2E0       ExtCtrls.TCustomPanel.CMCtl3DChanged
+ 0001:0004E6E0       ExtCtrls.TCustomPanel.CMDockClient
+ 0001:0004E30C       ExtCtrls.TCustomPanel.CMIsToolControl
+ 0001:0004E2D4       ExtCtrls.TCustomPanel.CMTextChanged
+ 0001:0004E190       ExtCtrls.TCustomPanel.Create
+ 0001:0004E268       ExtCtrls.TCustomPanel.CreateParams
+ 0001:0004E680       ExtCtrls.TCustomPanel.GetControlsAlignment
+ 0001:0004E45C       ExtCtrls.TCustomPanel.Paint
+ 0001:0004E5EC       ExtCtrls.TCustomPanel.SetAlignment
+ 0001:0004E5FC       ExtCtrls.TCustomPanel.SetBevelInner
+ 0001:0004E618       ExtCtrls.TCustomPanel.SetBevelOuter
+ 0001:0004E634       ExtCtrls.TCustomPanel.SetBevelWidth
+ 0001:0004E66C       ExtCtrls.TCustomPanel.SetBorderStyle
+ 0001:0004E650       ExtCtrls.TCustomPanel.SetBorderWidth
+ 0001:0004E848       ExtCtrls.TCustomPanel.SetParentBackground
+ 0001:0004E884       ExtCtrls.TCustomPanel.SetVerticalAlignment
+ 0001:0004E320       ExtCtrls.TCustomPanel.WMWindowPosChanged
+ 0001:0004ECA8       ExtCtrls.TCustomRadioGroup.ArrangeButtons
+ 0001:0004EE40       ExtCtrls.TCustomRadioGroup.ButtonClick
+ 0001:0004F134       ExtCtrls.TCustomRadioGroup.CanModify
+ 0001:0004F0CC       ExtCtrls.TCustomRadioGroup.CMEnabledChanged
+ 0001:0004F10C       ExtCtrls.TCustomRadioGroup.CMFontChanged
+ 0001:0004EBC8       ExtCtrls.TCustomRadioGroup.Create
+ 0001:0004EC58       ExtCtrls.TCustomRadioGroup.Destroy
+ 0001:0004ECA4       ExtCtrls.TCustomRadioGroup.FlipChildren
+ 0001:0004F138       ExtCtrls.TCustomRadioGroup.GetChildren
+ 0001:0004EE78       ExtCtrls.TCustomRadioGroup.ItemsChange
+ 0001:0004EEB4       ExtCtrls.TCustomRadioGroup.Loaded
+ 0001:0004EEC8       ExtCtrls.TCustomRadioGroup.ReadState
+ 0001:0004EEEC       ExtCtrls.TCustomRadioGroup.SetButtonCount
+ 0001:0004EF2C       ExtCtrls.TCustomRadioGroup.SetColumns
+ 0001:0004EF64       ExtCtrls.TCustomRadioGroup.SetItemIndex
+ 0001:0004EFE0       ExtCtrls.TCustomRadioGroup.SetItems
+ 0001:0004EFF0       ExtCtrls.TCustomRadioGroup.UpdateButtons
+ 0001:0004F120       ExtCtrls.TCustomRadioGroup.WMSize
+ 0004:000034A8       ExtCtrls.TCustomTrayIcon.RM_TaskbarCreated
+ 0001:0004EAC8       ExtCtrls.TGroupButton.CNCommand
+ 0001:0004EA90       ExtCtrls.TGroupButton.Destroy
+ 0001:0004EA0C       ExtCtrls.TGroupButton.InternalCreate
+ 0001:0004EB98       ExtCtrls.TGroupButton.KeyDown
+ 0001:0004EB58       ExtCtrls.TGroupButton.KeyPress
+ 0001:0004DAF0       ExtCtrls.TImage.CanAutoSize
+ 0001:0004D578       ExtCtrls.TImage.Create
+ 0001:0004D660       ExtCtrls.TImage.DestRect
+ 0001:0004D610       ExtCtrls.TImage.Destroy
+ 0001:0004D84C       ExtCtrls.TImage.DoPaletteChange
+ 0001:0004D640       ExtCtrls.TImage.GetPalette
+ 0001:0004D78C       ExtCtrls.TImage.Paint
+ 0001:0004D9C4       ExtCtrls.TImage.PictureChanged
+ 0001:0004D8E8       ExtCtrls.TImage.Progress
+ 0001:0004D954       ExtCtrls.TImage.SetCenter
+ 0001:0004D96C       ExtCtrls.TImage.SetPicture
+ 0001:0004D9AC       ExtCtrls.TImage.SetProportional
+ 0001:0004D97C       ExtCtrls.TImage.SetStretch
+ 0001:0004D994       ExtCtrls.TImage.SetTransparent
+ 0001:0004D4A4       ExtCtrls.TPaintBox.Create
+ 0001:0004D504       ExtCtrls.TPaintBox.Paint
+ 0001:0004D258       ExtCtrls.TShape.Create
+ 0001:0004D2FC       ExtCtrls.TShape.Destroy
+ 0001:0004D338       ExtCtrls.TShape.Paint
+ 0001:0004D46C       ExtCtrls.TShape.SetBrush
+ 0001:0004D478       ExtCtrls.TShape.SetPen
+ 0001:0004D484       ExtCtrls.TShape.SetShape
+ 0001:0004D45C       ExtCtrls.TShape.StyleChanged
+ 0001:0004F1F4       ExtCtrls.TSplitter.AllocateLineDC
+ 0001:0004F944       ExtCtrls.TSplitter.CalcSplitSize
+ 0001:0004F5E8       ExtCtrls.TSplitter.CanResize
+ 0001:0004F140       ExtCtrls.TSplitter.Create
+ 0001:0004F1C4       ExtCtrls.TSplitter.Destroy
+ 0001:0004F5B8       ExtCtrls.TSplitter.DoCanResize
+ 0001:0004F270       ExtCtrls.TSplitter.DrawLine
+ 0001:0004F328       ExtCtrls.TSplitter.FindControl
+ 0001:0004FB30       ExtCtrls.TSplitter.FocusKeyDown
+ 0001:0004F614       ExtCtrls.TSplitter.MouseDown
+ 0001:0004FA30       ExtCtrls.TSplitter.MouseMove
+ 0001:0004FADC       ExtCtrls.TSplitter.MouseUp
+ 0001:0004F45C       ExtCtrls.TSplitter.Paint
+ 0001:0004F2E0       ExtCtrls.TSplitter.ReleaseLineDC
+ 0001:0004F41C       ExtCtrls.TSplitter.RequestAlign
+ 0001:0004FB6C       ExtCtrls.TSplitter.SetBeveled
+ 0001:0004FB7C       ExtCtrls.TSplitter.StopSizing
+ 0001:0004F7C0       ExtCtrls.TSplitter.UpdateControlSize
+ 0001:0004FA18       ExtCtrls.TSplitter.UpdateSize
+ 0001:0004DFBC       ExtCtrls.TTimer.Create
+ 0001:0004E00C       ExtCtrls.TTimer.Destroy
+ 0001:0004E144       ExtCtrls.TTimer.SetEnabled
+ 0001:0004E154       ExtCtrls.TTimer.SetInterval
+ 0001:0004E164       ExtCtrls.TTimer.SetOnTimer
+ 0001:0004E17C       ExtCtrls.TTimer.Timer
+ 0001:0004E0B8       ExtCtrls.TTimer.UpdateTimer
+ 0001:0004E044       ExtCtrls.TTimer.WndProc
+ 0003:000016F0       ExtCtrls.VerticalAlignments
+ 0004:0000362C       ExtDlgs..6
+ 0003:00001D64       ExtDlgs.DefaultEncodingNames
+ 0002:00000738       ExtDlgs.ExtDlgs
+ 0001:000884FC       ExtDlgs.Finalization
+ 0001:0035DDD0       fAbout..TfrmAbout
+ 0001:0035E0A4       fAbout.ShowAbout
+ 0001:0035E14C       fAbout.TfrmAbout.FormCreate
+ 0001:001AC24C       fActivateDeactivate..TfrmActivateDeactive
+ 0004:00004BA4       fActivateDeactivate.Act
+ 0004:00004BA6       fActivateDeactivate.CancelProcess
+ 0004:00004BA5       fActivateDeactivate.Deact
+ 0004:00004BA0       fActivateDeactivate.frmActivateDeactive
+ 0001:001AC47C       fActivateDeactivate.TfrmActivateDeactive.BuildForm
+ 0001:001ACC28       fActivateDeactivate.TfrmActivateDeactive.DCOriginalOrder
+ 0001:001AC744       fActivateDeactivate.TfrmActivateDeactive.fActivateDeactive
+ 0001:001AC88C       fActivateDeactivate.TfrmActivateDeactive.fActivateDeactive
+ 0001:001ACA44       fActivateDeactivate.TfrmActivateDeactive.GetOriginalOrders
+ 0001:001ACAFC       fActivateDeactivate.TfrmActivateDeactive.PromptForm
+ 0001:001ACBC8       fActivateDeactivate.TfrmActivateDeactive.TActivateClick
+ 0001:001ACC08       fActivateDeactivate.TfrmActivateDeactive.TCancelClick
+ 0001:001ACBE8       fActivateDeactivate.TfrmActivateDeactive.TDeactiveClick
+ 0001:001CA864       fAddlSigners..TfrmAddlSigners
+ 0001:001CACC8       fAddlSigners.SelectAdditionalSigners
+ 0001:001CB628       fAddlSigners.TfrmAddlSigners.btnAddSignersClick
+ 0001:001CB4D8       fAddlSigners.TfrmAddlSigners.btnRemoveAllSignersClick
+ 0001:001CB4F4       fAddlSigners.TfrmAddlSigners.btnRemoveSignersClick
+ 0001:001CB634       fAddlSigners.TfrmAddlSigners.cboCosignerChange
+ 0001:001CBCD8       fAddlSigners.TfrmAddlSigners.cboCosignerExit
+ 0001:001CBC3C       fAddlSigners.TfrmAddlSigners.cboCosignerNeedData
+ 0001:001CBD30       fAddlSigners.TfrmAddlSigners.cboSrcListChange
+ 0001:001CBD50       fAddlSigners.TfrmAddlSigners.cboSrcListClick
+ 0001:001CBA48       fAddlSigners.TfrmAddlSigners.cboSrcListKeyDown
+ 0001:001CB274       fAddlSigners.TfrmAddlSigners.cboSrcListMouseClick
+ 0001:001CB0F4       fAddlSigners.TfrmAddlSigners.cmdCancelClick
+ 0001:001CB0FC       fAddlSigners.TfrmAddlSigners.cmdOKClick
+ 0001:001CBA5C       fAddlSigners.TfrmAddlSigners.CosignerOK
+ 0001:001CB96C       fAddlSigners.TfrmAddlSigners.DstListChange
+ 0001:001CB924       fAddlSigners.TfrmAddlSigners.FormCreate
+ 0001:001CB950       fAddlSigners.TfrmAddlSigners.FormDestroy
+ 0001:001CB0D0       fAddlSigners.TfrmAddlSigners.NewPersonNeedData
+ 0004:00006410       fAlertForward..2
+ 0001:0033EDB8       fAlertForward..TfrmAlertForward
+ 0002:00001A3C       fAlertForward.fAlertForward
+ 0001:0033F96C       fAlertForward.Finalization
+ 0001:0033F150       fAlertForward.ForwardAlertTo
+ 0001:0033F518       fAlertForward.TfrmAlertForward.btnAddAlertClick
+ 0001:0033F524       fAlertForward.TfrmAlertForward.btnRemoveAlertFwrdClick
+ 0001:0033F660       fAlertForward.TfrmAlertForward.btnRemoveAllAlertFwrdClick
+ 0001:0033F73C       fAlertForward.TfrmAlertForward.cboSrcListChange
+ 0001:0033F75C       fAlertForward.TfrmAlertForward.cboSrcListKeyDown
+ 0001:0033F770       fAlertForward.TfrmAlertForward.cboSrcListMouseClick
+ 0001:0033F274       fAlertForward.TfrmAlertForward.cboSrcListNeedData
+ 0001:0033F2A4       fAlertForward.TfrmAlertForward.cmdCancelClick
+ 0001:0033F2AC       fAlertForward.TfrmAlertForward.cmdOKClick
+ 0001:0033F3EC       fAlertForward.TfrmAlertForward.DstListChange
+ 0001:0033F24C       fAlertForward.TfrmAlertForward.FormCreate
+ 0004:00006414       fAlertForward.XQAID
+ 0001:002DE01C       fAllgyBox..TfrmAllgyBox
+ 0001:002DE730       fAllgyBox.AllergyBox
+ 0001:002DE288       fAllgyBox.CreateAllergyBox
+ 0004:00006208       fAllgyBox.frmAllgyBox
+ 0001:002DE80C       fAllgyBox.TfrmAllgyBox.cmdAddClick
+ 0001:002DE848       fAllgyBox.TfrmAllgyBox.cmdEditClick
+ 0001:002DE87C       fAllgyBox.TfrmAllgyBox.cmdInErrorClick
+ 0001:002DE8B8       fAllgyBox.TfrmAllgyBox.RefreshText
+ 0001:001EAFEC       fAllgyFind..TfrmAllgyFind
+ 0001:001EB344       fAllgyFind.AllergyLookup
+ 0001:001EC40C       fAllgyFind.TfrmAllgyFind.BuildAgentTree
+ 0001:001EC364       fAllgyFind.TfrmAllgyFind.ckNoKnownAllergiesClick
+ 0001:001EC34C       fAllgyFind.TfrmAllgyFind.cmdCancelClick
+ 0001:001EBA3C       fAllgyFind.TfrmAllgyFind.cmdOKClick
+ 0001:001EB414       fAllgyFind.TfrmAllgyFind.cmdSearchClick
+ 0001:001EB3C8       fAllgyFind.TfrmAllgyFind.FormCreate
+ 0001:001EC638       fAllgyFind.TfrmAllgyFind.tvAgentDblClick
+ 0001:001EB3E8       fAllgyFind.TfrmAllgyFind.txtSearchChange
+ 0004:00005A00       fAllgyFind.uFileCount
+ 0004:000067B0       fAResize..2
+ 0001:003B47EC       fAResize..TfrmAutoResize
+ 0001:003B49B8       fAResize..TSizeRatio
+ 0002:00001FE4       fAResize.fAResize
+ 0001:003B4C94       fAResize.Finalization
+ 0001:003B4C58       fAResize.TfrmAutoResize.FormDestroy
+ 0001:003B4B58       fAResize.TfrmAutoResize.FormResize
+ 0001:003B4A88       fAResize.TfrmAutoResize.Loaded
+ 0001:003B4A10       fAResize.TSizeRatio.Create
+ 0004:00006204       fARTAllgy..2
+ 0001:002D9B90       fARTAllgy..TfrmARTAllergy
+ 0004:000060C4       fARTAllgy.AllergyList
+ 0004:000061FC       fARTAllgy.Changing
+ 0004:000061F8       fARTAllgy.Defaults
+ 0001:002DA4BC       fARTAllgy.EnterEditAllergy
+ 0001:002DA378       fARTAllgy.EnterNKAForPatient
+ 0002:000017BC       fARTAllgy.fARTAllgy
+ 0001:002DDFCC       fARTAllgy.Finalization
+ 0001:002DA4B0       fARTAllgy.MarkEnteredInError
+ 0004:00006160       fARTAllgy.NewRec
+ 0004:000060C8       fARTAllgy.OldRec
+ 0001:002DB4A0       fARTAllgy.SetError
+ 0001:002DC914       fARTAllgy.TfrmARTAllergy.btnAgentClick
+ 0001:002DD028       fARTAllgy.TfrmARTAllergy.btnCurrentClick
+ 0001:002DD23C       fARTAllgy.TfrmARTAllergy.btnDateTimeClick
+ 0001:002DD0C8       fARTAllgy.TfrmARTAllergy.btnRemoveClick
+ 0001:002DDD94       fARTAllgy.TfrmARTAllergy.btnSevHelpClick
+ 0001:002DBE08       fARTAllgy.TfrmARTAllergy.cboOriginatorNeedData
+ 0001:002DCA0C       fARTAllgy.TfrmARTAllergy.cboSymptomsClick
+ 0001:002DD888       fARTAllgy.TfrmARTAllergy.cboSymptomsKeyDown
+ 0001:002DD4BC       fARTAllgy.TfrmARTAllergy.cboSymptomsMouseClick
+ 0001:002DBE30       fARTAllgy.TfrmARTAllergy.cboSymptomsNeedData
+ 0001:002DD958       fARTAllgy.TfrmARTAllergy.cboVerifierNeedData
+ 0001:002DCBD4       fARTAllgy.TfrmARTAllergy.ckNoKnownAllergiesClick
+ 0001:002DD89C       fARTAllgy.TfrmARTAllergy.cmdCancelClick
+ 0001:002DCD48       fARTAllgy.TfrmARTAllergy.cmdOKClick
+ 0001:002DD8AC       fARTAllgy.TfrmARTAllergy.cmdPrevCmtsClick
+ 0001:002DD8E0       fARTAllgy.TfrmARTAllergy.cmdPrevObsClick
+ 0001:002DBF38       fARTAllgy.TfrmARTAllergy.ControlChange
+ 0001:002DCC14       fARTAllgy.TfrmARTAllergy.EnableDisableControls
+ 0001:002DDD60       fARTAllgy.TfrmARTAllergy.FormClose
+ 0001:002DDD8C       fARTAllgy.TfrmARTAllergy.FormCloseQuery
+ 0001:002DA900       fARTAllgy.TfrmARTAllergy.FormCreate
+ 0001:002DCB20       fARTAllgy.TfrmARTAllergy.FormDestroy
+ 0001:002DBE58       fARTAllgy.TfrmARTAllergy.grpObsHistClick
+ 0001:002DAAE8       fARTAllgy.TfrmARTAllergy.InitDialog
+ 0001:002DD228       fARTAllgy.TfrmARTAllergy.lstAllergyClick
+ 0001:002DC77C       fARTAllgy.TfrmARTAllergy.lstAllergySelect
+ 0001:002DD918       fARTAllgy.TfrmARTAllergy.lstSelectedSymptomsChange
+ 0001:002DC89C       fARTAllgy.TfrmARTAllergy.memCommentsExit
+ 0001:002DB154       fARTAllgy.TfrmARTAllergy.SetupDialog
+ 0001:002DDB64       fARTAllgy.TfrmARTAllergy.SetUpEnteredInErrorFields
+ 0001:002DD980       fARTAllgy.TfrmARTAllergy.SetupVerifyFields
+ 0001:002DB4FC       fARTAllgy.TfrmARTAllergy.Validate
+ 0001:002DCF38       fARTAllgy.TfrmARTAllergy.ValidSave
+ 0003:00003A94       fARTAllgy.uAddingNew
+ 0004:00006200       fARTAllgy.uDeletedSymptoms
+ 0003:00003A98       fARTAllgy.uEditing
+ 0003:00003A9C       fARTAllgy.uEnteredInError
+ 0003:00003AA0       fARTAllgy.uUserCanVerify
+ 0001:001EAB34       fARTFreeTextMsg..TfrmARTFreeTextMsg
+ 0001:001EAD68       fARTFreeTextMsg.GetFreeTextARTComment
+ 0001:001EAFC0       fARTFreeTextMsg.TfrmARTFreeTextMsg.cmdContinueClick
+ 0004:000059FC       fARTFreeTextMsg.tmpList
+ 0004:00004900       fAutoSz..2
+ 0001:00127A30       fAutoSz..TfrmAutoSz
+ 0001:00127BD8       fAutoSz..TSizeRatio
+ 0002:00000EAC       fAutoSz.fAutoSz
+ 0001:00127F34       fAutoSz.Finalization
+ 0001:00127EF4       fAutoSz.TfrmAutoSz.FormDestroy
+ 0001:00127DBC       fAutoSz.TfrmAutoSz.FormResize
+ 0001:00127CA4       fAutoSz.TfrmAutoSz.Loaded
+ 0001:00127C30       fAutoSz.TSizeRatio.Create
+ 0004:00006578       fBALocalDiagnoses..2
+ 0001:0038436C       fBALocalDiagnoses..TfrmBALocalDiagnoses
+ 0004:00006580       fBALocalDiagnoses.BADiagnosis
+ 0004:00006564       fBALocalDiagnoses.currentOrderIDList
+ 0004:00006548       fBALocalDiagnoses.deleteDX
+ 0004:00006584       fBALocalDiagnoses.ECFDiagnosis
+ 0002:00001BC8       fBALocalDiagnoses.fBALocalDiagnoses
+ 0004:0000654C       fBALocalDiagnoses.FDxCode
+ 0004:00006550       fBALocalDiagnoses.FDxSection
+ 0001:00389584       fBALocalDiagnoses.Finalization
+ 0004:00006554       fBALocalDiagnoses.FName
+ 0004:00006570       fBALocalDiagnoses.frmBALocalDiagnoses
+ 0004:0000655C       fBALocalDiagnoses.GridItems
+ 0004:00006574       fBALocalDiagnoses.lexIENHoldList
+ 0004:00006590       fBALocalDiagnoses.ListItem
+ 0004:00006558       fBALocalDiagnoses.MaxDx
+ 0004:0000656C       fBALocalDiagnoses.PersonalDxHoldList
+ 0004:00006598       fBALocalDiagnoses.PrimaryChanged
+ 0004:00006568       fBALocalDiagnoses.ProblemDxHoldList
+ 0004:00006549       fBALocalDiagnoses.selectingDX
+ 0001:00387E68       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddDiagnosistoPersonalDiagnosesList1Click
+ 0001:00387FF8       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddDiagnosistoPersonalDiagnosesList2Click
+ 0001:00385508       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddPCEToDiagnosis
+ 0001:0038562C       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddPersonalDxToDiagnosisList
+ 0001:003851B0       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddProbsToDiagnosis
+ 0001:00386804       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddToPersonalDxList
+ 0001:00386A58       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddToProblemList
+ 0001:00388390       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddToWhatList
+ 0001:00384DCC       fBALocalDiagnoses.TfrmBALocalDiagnoses.AssocDxToOrders
+ 0001:00385BC8       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnOtherClick
+ 0001:00385EC4       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnPrimaryClick
+ 0001:00385FBC       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnRemoveClick
+ 0001:00386010       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnSelectAllClick
+ 0001:00385894       fBALocalDiagnoses.TfrmBALocalDiagnoses.buCancelClick
+ 0001:003872C4       fBALocalDiagnoses.TfrmBALocalDiagnoses.BuildBADxList
+ 0001:00386C90       fBALocalDiagnoses.TfrmBALocalDiagnoses.BuildConsultDxList
+ 0001:00386F8C       fBALocalDiagnoses.TfrmBALocalDiagnoses.BuildTempDxList
+ 0001:0038501C       fBALocalDiagnoses.TfrmBALocalDiagnoses.buOKClick
+ 0001:003858DC       fBALocalDiagnoses.TfrmBALocalDiagnoses.Button4Click
+ 0001:00388150       fBALocalDiagnoses.TfrmBALocalDiagnoses.cbAddToPDListClick
+ 0001:003865E4       fBALocalDiagnoses.TfrmBALocalDiagnoses.cbAddToPLClick
+ 0001:003893E4       fBALocalDiagnoses.TfrmBALocalDiagnoses.ClearAndDisableCBoxes
+ 0001:003894AC       fBALocalDiagnoses.TfrmBALocalDiagnoses.DeleteSelectedDx
+ 0001:00387C6C       fBALocalDiagnoses.TfrmBALocalDiagnoses.DeselectGridItems
+ 0001:00386128       fBALocalDiagnoses.TfrmBALocalDiagnoses.DiagnosisSelection
+ 0001:003864F0       fBALocalDiagnoses.TfrmBALocalDiagnoses.EnsurePrimary
+ 0001:00384890       fBALocalDiagnoses.TfrmBALocalDiagnoses.Enter
+ 0001:00387CD8       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormActivate
+ 0001:003848E8       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormCreate
+ 0001:00384928       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormKeyPress
+ 0001:00387CE0       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormShow
+ 0001:0038840C       fBALocalDiagnoses.TfrmBALocalDiagnoses.InactiveICDNotification
+ 0001:00389568       fBALocalDiagnoses.TfrmBALocalDiagnoses.IsCtrlDown
+ 0001:00386284       fBALocalDiagnoses.TfrmBALocalDiagnoses.IsDxAlreadySelected
+ 0001:0038795C       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbDiagnosisClick
+ 0001:00388FCC       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbOrdersMouseMove
+ 0001:003858E4       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbSectionsClick
+ 0001:003885B8       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbSectionsDrawItem
+ 0001:00387420       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListConsultDX
+ 0001:003859B0       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListDiagnosisCodes
+ 0001:00384958       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListDiagnosisSections
+ 0001:003876D0       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListGlobalDx
+ 0001:00387D5C       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListSelectedOrders
+ 0001:00385078       fBALocalDiagnoses.TfrmBALocalDiagnoses.LoadEncounterForm
+ 0001:003887D4       fBALocalDiagnoses.TfrmBALocalDiagnoses.LoadTempDXLists
+ 0001:00384BB0       fBALocalDiagnoses.TfrmBALocalDiagnoses.LoadTempRec
+ 0001:00388F9C       fBALocalDiagnoses.TfrmBALocalDiagnoses.lvDxGridClick
+ 0001:00388BDC       fBALocalDiagnoses.TfrmBALocalDiagnoses.lvDxGridKeyDown
+ 0001:00388F8C       fBALocalDiagnoses.TfrmBALocalDiagnoses.lvDxGridKeyUp
+ 0001:00384AAC       fBALocalDiagnoses.TfrmBALocalDiagnoses.MainDriver
+ 0001:00386434       fBALocalDiagnoses.TfrmBALocalDiagnoses.PersonalListDxFound
+ 0001:00386378       fBALocalDiagnoses.TfrmBALocalDiagnoses.ProblemListDxFound
+ 0001:003867F0       fBALocalDiagnoses.TfrmBALocalDiagnoses.ProcessAddToItems
+ 0001:00389258       fBALocalDiagnoses.TfrmBALocalDiagnoses.ProcessMultSelections
+ 0001:00389434       fBALocalDiagnoses.TfrmBALocalDiagnoses.ReSetCheckBoxStatus
+ 0001:00388BF8       fBALocalDiagnoses.TfrmBALocalDiagnoses.SetAddToCBoxStatus
+ 0001:00389070       fBALocalDiagnoses.TfrmBALocalDiagnoses.SetAddToCheckBoxStatus
+ 0004:00006588       fBALocalDiagnoses.uLastDFN
+ 0004:0000658C       fBALocalDiagnoses.uLastLocation
+ 0004:00006560       fBALocalDiagnoses.UpdatingGrid
+ 0004:00006594       fBALocalDiagnoses.uPrimaryDxHold
+ 0004:0000657C       fBALocalDiagnoses.uProblems
+ 0004:00006562       fBALocalDiagnoses.whoCalled
+ 0004:00006504       fBAOptionsDiagnoses..2
+ 0001:0035F73C       fBAOptionsDiagnoses..TfrmBAOptionsDiagnoses
+ 0004:00006514       fBAOptionsDiagnoses.BADxCode
+ 0004:000064FC       fBAOptionsDiagnoses.delDxLst
+ 0001:0035FC34       fBAOptionsDiagnoses.DialogOptionsDiagnoses
+ 0004:000064EC       fBAOptionsDiagnoses.DxList
+ 0004:000064F0       fBAOptionsDiagnoses.ECFDiagnoses
+ 0002:00001A88       fBAOptionsDiagnoses.fBAOptionsDiagnoses
+ 0004:00006510       fBAOptionsDiagnoses.FDxSection
+ 0001:00361A70       fBAOptionsDiagnoses.Finalization
+ 0004:00006500       fBAOptionsDiagnoses.inactiveCodes
+ 0004:00006508       fBAOptionsDiagnoses.LastDFN
+ 0004:0000650C       fBAOptionsDiagnoses.LastLocation
+ 0004:000064F8       fBAOptionsDiagnoses.newDxLst
+ 0004:000064E8       fBAOptionsDiagnoses.Problems
+ 0001:00360240       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.AddProblemsToDxList
+ 0001:003615AC       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnAddAllClick
+ 0001:00360BC4       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnAddClick
+ 0001:00360B3C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnCancelClick
+ 0001:00360E48       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnDeleteClick
+ 0001:00360B44       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnOKClick
+ 0001:0036068C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnOtherClick
+ 0001:00361484       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnRemoveAllClick
+ 0001:00361040       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.Button1Click
+ 0001:00361200       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormActivate
+ 0001:0035FCA4       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormCreate
+ 0001:00361848       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormResize
+ 0001:00360FC8       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormShow
+ 0001:00361818       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.hdrCntlDxSectionClick
+ 0001:00361058       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.InactiveICDNotification
+ 0001:00361208       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.IsDXInList
+ 0001:00360EF8       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbDiagnosisChange
+ 0001:00360A20       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbDiagnosisClick
+ 0001:00360FA0       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbDiagnosisEnter
+ 0001:00360F4C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbPersonalDxClick
+ 0001:00360958       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbSectionsClick
+ 0001:00360A10       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbSectionsEnter
+ 0001:00360018       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.ListDiagnosesCodes
+ 0001:0035FEC4       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.ListDiagnosesSections
+ 0001:0035FD50       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.LoadEncounterDx
+ 0001:003612CC       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.LoadPersonalDxList
+ 0001:003618B8       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.SyncDxDeleteList
+ 0001:0036196C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.SyncDxNewList
+ 0004:000064F4       fBAOptionsDiagnoses.tmplst
+ 0004:000064E0       fBAOptionsDiagnoses.uDeleteFromPDL
+ 0004:000064E4       fBAOptionsDiagnoses.uNewDxList
+ 0004:000037F0       fBase508Form..2
+ 0001:0010BF08       fBase508Form..TfrmBase508Form
+ 0001:0010C3E0       fBase508Form.AdjustControls
+ 0002:00000D08       fBase508Form.fBase508Form
+ 0001:0010C594       fBase508Form.Finalization
+ 0004:000037F4       fBase508Form.KeyMonitorHook
+ 0001:0010C52C       fBase508Form.KeyMonitorProc
+ 0003:00003140       fBase508Form.Last508KeyCode
+ 0004:000037F8       fBase508Form.MouseMonitorHook
+ 0001:0010C55C       fBase508Form.MouseMonitorProc
+ 0001:0010C154       fBase508Form.TfrmBase508Form.Activate
+ 0001:0010C164       fBase508Form.TfrmBase508Form.AdjustForTitleBarHeightChanges
+ 0001:0010C3B4       fBase508Form.TfrmBase508Form.ClickDefaultButton
+ 0001:0010C450       fBase508Form.TfrmBase508Form.Create
+ 0001:0010C1E0       fBase508Form.TfrmBase508Form.FormKeyDown
+ 0001:0010C250       fBase508Form.TfrmBase508Form.GetDefaultButton
+ 0001:0010C2E4       fBase508Form.TfrmBase508Form.Loaded
+ 0001:0010C2F8       fBase508Form.TfrmBase508Form.ModifyUnfocusableControl
+ 0001:0010C204       fBase508Form.TfrmBase508Form.Notification
+ 0001:0010C37C       fBase508Form.TfrmBase508Form.SetDefaultButton
+ 0001:0010C384       fBase508Form.TfrmBase508Form.SetParent
+ 0001:0010C3A4       fBase508Form.TfrmBase508Form.UM508
+ 0001:0010C3B0       fBase508Form.TfrmBase508Form.UpdateAccessabilityActions
+ 0001:0010C0DC       fBase508Form.UnfocusableControlEnter
+ 0004:00004B30       fClinicWardMeds..2
+ 0001:00191040       fClinicWardMeds..TfrmClinicWardMeds
+ 0004:00004B10       fClinicWardMeds.AClinicLoc
+ 0004:00004B24       fClinicWardMeds.AClinicName
+ 0004:00004B08       fClinicWardMeds.ALocation
+ 0004:00004B2C       fClinicWardMeds.AMsgSw
+ 0004:00004B18       fClinicWardMeds.AName
+ 0004:00004B28       fClinicWardMeds.AOrderLocList
+ 0004:00004B14       fClinicWardMeds.ASelectedLoc
+ 0004:00004B1C       fClinicWardMeds.ASvc
+ 0004:00004B0C       fClinicWardMeds.AWardLoc
+ 0004:00004B20       fClinicWardMeds.AWardName
+ 0002:000011A4       fClinicWardMeds.fClinicWardMeds
+ 0001:001919E4       fClinicWardMeds.Finalization
+ 0004:00004B04       fClinicWardMeds.frmClinicWardMeds
+ 0001:00191480       fClinicWardMeds.TfrmClinicWardMeds.btnClinicClick
+ 0001:00191498       fClinicWardMeds.TfrmClinicWardMeds.btnWardClick
+ 0001:001914B0       fClinicWardMeds.TfrmClinicWardMeds.BuildMessage
+ 0001:0019180C       fClinicWardMeds.TfrmClinicWardMeds.BuildOrderLocList
+ 0001:00191264       fClinicWardMeds.TfrmClinicWardMeds.ClinicOrWardLocation
+ 0001:001912F4       fClinicWardMeds.TfrmClinicWardMeds.ClinicOrWardLocation
+ 0001:001918E8       fClinicWardMeds.TfrmClinicWardMeds.rpcChangeOrderLocation
+ 0001:00191944       fClinicWardMeds.TfrmClinicWardMeds.rpcIsPatientOnWard
+ 0001:001913D8       fClinicWardMeds.TfrmClinicWardMeds.StartLocationCheck
+ 0004:00004B74       fConsMedRslt..2
+ 0001:0019F008       fConsMedRslt..TfrmConsMedRslt
+ 0002:000011D0       fConsMedRslt.fConsMedRslt
+ 0001:0019FC5C       fConsMedRslt.Finalization
+ 0004:00004B78       fConsMedRslt.RecipientList
+ 0001:0019F360       fConsMedRslt.SelectMedicineResult
+ 0001:0019F91C       fConsMedRslt.TfrmConsMedRslt.ckAlertClick
+ 0001:0019F54C       fConsMedRslt.TfrmConsMedRslt.cmdCancelClick
+ 0001:0019F6A0       fConsMedRslt.TfrmConsMedRslt.cmdDetailsClick
+ 0001:0019F574       fConsMedRslt.TfrmConsMedRslt.cmdOKClick
+ 0001:0019F988       fConsMedRslt.TfrmConsMedRslt.FormDestroy
+ 0001:0019F9A4       fConsMedRslt.TfrmConsMedRslt.lstMedResultsDrawItem
+ 0001:0019F958       fConsMedRslt.TfrmConsMedRslt.NewPersonNeedData
+ 0001:0019F8CC       fConsMedRslt.TfrmConsMedRslt.ShowDetailsDestroyed
+ 0001:00191A48       fConsult513Prt..Tfrm513Print
+ 0001:00191D94       fConsult513Prt.PrintSF513
+ 0001:00192160       fConsult513Prt.Tfrm513Print.cboDeviceChange
+ 0001:00192138       fConsult513Prt.Tfrm513Print.cboDeviceNeedData
+ 0001:001925F8       fConsult513Prt.Tfrm513Print.cmdCancelClick
+ 0001:0019223C       fConsult513Prt.Tfrm513Print.cmdOKClick
+ 0001:00191FDC       fConsult513Prt.Tfrm513Print.DisplaySelectDevice
+ 0001:0019222C       fConsult513Prt.Tfrm513Print.radChartCopyClick
+ 0001:00192234       fConsult513Prt.Tfrm513Print.radWorkCopyClick
+ 0004:00005E04       fConsultAct..2
+ 0001:00245E70       fConsultAct..TfrmConsultAction
+ 0002:000014EC       fConsultAct.fConsultAct
+ 0001:00248184       fConsultAct.Finalization
+ 0004:00005DF8       fConsultAct.frmConsultAction
+ 0004:00005E08       fConsultAct.RecipientList
+ 0001:002462C8       fConsultAct.SetActionContext
+ 0004:00005DFC       fConsultAct.SvcList
+ 0001:00247E5C       fConsultAct.TfrmConsultAction.cboServiceSelect
+ 0001:00247D64       fConsultAct.TfrmConsultAction.ckAlertClick
+ 0001:00247248       fConsultAct.TfrmConsultAction.cmdCancelClick
+ 0001:00247258       fConsultAct.TfrmConsultAction.cmdOKClick
+ 0001:002471E8       fConsultAct.TfrmConsultAction.NewPersonNeedData
+ 0001:00247218       fConsultAct.TfrmConsultAction.ProviderNeedData
+ 0001:00246B30       fConsultAct.TfrmConsultAction.SetupAddComment
+ 0001:00246D30       fConsultAct.TfrmConsultAction.SetupAdminComplete
+ 0001:0024654C       fConsultAct.TfrmConsultAction.SetupForward
+ 0001:002470B4       fConsultAct.TfrmConsultAction.SetupOther
+ 0001:00247000       fConsultAct.TfrmConsultAction.SetupReceive
+ 0001:00246BD4       fConsultAct.TfrmConsultAction.SetupSchedule
+ 0001:00246E44       fConsultAct.TfrmConsultAction.SetupSigFindings
+ 0001:00247F9C       fConsultAct.TfrmConsultAction.ShowAutoAlertText
+ 0001:00246EC0       fConsultAct.TfrmConsultAction.SigFindPanelShow
+ 0001:00247D94       fConsultAct.TfrmConsultAction.treServiceChange
+ 0001:00247E58       fConsultAct.TfrmConsultAction.treServiceExit
+ 0004:00005E00       fConsultAct.uChanging
+ 0001:0019E9A8       fConsultAlertTo..TfrmConsultAlertsTo
+ 0001:0019ECA8       fConsultAlertTo.SelectRecipients
+ 0001:0019EF04       fConsultAlertTo.TfrmConsultAlertsTo.cboSrcListKeyDown
+ 0001:0019EF18       fConsultAlertTo.TfrmConsultAlertsTo.cboSrcListMouseClick
+ 0001:0019ED4C       fConsultAlertTo.TfrmConsultAlertsTo.cboSrcListNeedData
+ 0001:0019ED7C       fConsultAlertTo.TfrmConsultAlertsTo.cmdCancelClick
+ 0001:0019ED84       fConsultAlertTo.TfrmConsultAlertsTo.cmdOKClick
+ 0001:0019EECC       fConsultAlertTo.TfrmConsultAlertsTo.DstListClick
+ 0001:0024979C       fConsultBD..TfrmConsultsByDate
+ 0001:00249A78       fConsultBD.SelectConsultDateRange
+ 0001:00249E14       fConsultBD.TfrmConsultsByDate.calBeginDateKeyPress
+ 0001:00249E24       fConsultBD.TfrmConsultsByDate.calEndDateKeyPress
+ 0001:00249E0C       fConsultBD.TfrmConsultsByDate.cmdCancelClick
+ 0001:00249C90       fConsultBD.TfrmConsultsByDate.cmdOKClick
+ 0004:00005E20       fConsultBS..2
+ 0001:00249E34       fConsultBS..TfrmConsultsByService
+ 0002:00001574       fConsultBS.fConsultBS
+ 0001:0024A74C       fConsultBS.Finalization
+ 0001:0024A100       fConsultBS.SelectService
+ 0004:00005E28       fConsultBS.SvcInfo
+ 0004:00005E24       fConsultBS.SvcList
+ 0001:0024A644       fConsultBS.TfrmConsultsByService.cboServiceSelect
+ 0001:0024A458       fConsultBS.TfrmConsultsByService.cmdCancelClick
+ 0001:0024A460       fConsultBS.TfrmConsultsByService.cmdOKClick
+ 0001:0024A5B4       fConsultBS.TfrmConsultsByService.treServiceChange
+ 0004:00005E2C       fConsultBS.uChanging
+ 0001:00249090       fConsultBSt..TfrmConsultsByStatus
+ 0001:00249310       fConsultBSt.SelectStatus
+ 0001:0024952C       fConsultBSt.TfrmConsultsByStatus.cmdCancelClick
+ 0001:00249534       fConsultBSt.TfrmConsultsByStatus.cmdOKClick
+ 0004:00005E34       fConsults..3
+ 0001:0024A790       fConsults..TfrmConsults
+ 0003:00003960       fConsults.ActionType
+ 0001:00257AE4       fConsults.AssignBoilerText
+ 0004:00005E3C       fConsults.CurrNotifIEN
+ 0004:00005E60       fConsults.DateRange
+ 0002:000015B8       fConsults.fConsults
+ 0001:0025A410       fConsults.Finalization
+ 0004:00005E30       fConsults.frmConsults
+ 0004:00005EA0       fConsults.frmDrawers
+ 0004:00005EB4       fConsults.MedResult
+ 0004:00005EA4       fConsults.MenuAccessRec
+ 0001:0024E1E0       fConsults.SaveOrAbort
+ 0001:00258924       fConsults.SortByDate
+ 0001:00258780       fConsults.SortByTitle
+ 0004:00005E50       fConsults.StsCtxt
+ 0004:00005E40       fConsults.SvcCtxt
+ 0001:00256580       fConsults.TfrmConsults.ActiveEditOf
+ 0001:0024C2A8       fConsults.TfrmConsults.AllowContextChange
+ 0001:00257A38       fConsults.TfrmConsults.AssignRemForm
+ 0001:00257A84       fConsults.TfrmConsults.CanFinishReminder
+ 0001:0024C9D4       fConsults.TfrmConsults.ClearEditControls
+ 0001:0024C540       fConsults.TfrmConsults.ClearPtData
+ 0001:00257330       fConsults.TfrmConsults.cmdChangeClick
+ 0001:00255D2C       fConsults.TfrmConsults.cmdEditResubmitClick
+ 0001:00255D34       fConsults.TfrmConsults.cmdEditResubmitExit
+ 0001:0024F390       fConsults.TfrmConsults.cmdNewConsultClick
+ 0001:0024F398       fConsults.TfrmConsults.cmdNewConsultExit
+ 0001:0024F3AC       fConsults.TfrmConsults.cmdNewProcClick
+ 0001:00251F60       fConsults.TfrmConsults.cmdPCEClick
+ 0001:0024CABC       fConsults.TfrmConsults.CompleteConsult
+ 0001:0024C778       fConsults.TfrmConsults.DisplayPage
+ 0001:002530C4       fConsults.TfrmConsults.DisplayPCE
+ 0001:002541BC       fConsults.TfrmConsults.dlgFindTextFind
+ 0001:002541DC       fConsults.TfrmConsults.dlgReplaceTextFind
+ 0001:002541FC       fConsults.TfrmConsults.dlgReplaceTextReplace
+ 0001:00259964       fConsults.TfrmConsults.DoAttachIDChild
+ 0001:00256FD4       fConsults.TfrmConsults.DoAutoSave
+ 0001:002572F8       fConsults.TfrmConsults.DoLeftPanelCustomShiftTab
+ 0001:00258F18       fConsults.TfrmConsults.EnableDisableIDNotes
+ 0001:00255CE0       fConsults.TfrmConsults.EnableDisableOrdering
+ 0001:00254D38       fConsults.TfrmConsults.FormClose
+ 0001:00254B58       fConsults.TfrmConsults.FormCreate
+ 0001:002561A0       fConsults.TfrmConsults.FormDestroy
+ 0001:0025A118       fConsults.TfrmConsults.FormHide
+ 0001:0025A140       fConsults.TfrmConsults.FormShow
+ 0001:0025A0E0       fConsults.TfrmConsults.frmFramePnlPatientExit
+ 0001:002561D4       fConsults.TfrmConsults.GetDrawers
+ 0001:00256E2C       fConsults.TfrmConsults.GetTitleText
+ 0001:0024D48C       fConsults.TfrmConsults.InsertAddendum
+ 0001:00256B78       fConsults.TfrmConsults.LacksClinProcFields
+ 0001:00256D64       fConsults.TfrmConsults.LacksClinProcFieldsForSignature
+ 0001:00256A9C       fConsults.TfrmConsults.LacksRequiredForCreate
+ 0001:00259038       fConsults.TfrmConsults.LoadConsults
+ 0001:0024DAD0       fConsults.TfrmConsults.LoadForEdit
+ 0001:00256204       fConsults.TfrmConsults.LockConsultRequest
+ 0001:00256324       fConsults.TfrmConsults.LockConsultRequestAndNote
+ 0001:0024E9F4       fConsults.TfrmConsults.lstConsultsClick
+ 0001:00259F88       fConsults.TfrmConsults.LstConsultsToPrint
+ 0001:002538A0       fConsults.TfrmConsults.lstNotesClick
+ 0001:0024F3E4       fConsults.TfrmConsults.memResultChange
+ 0001:00259E64       fConsults.TfrmConsults.memResultsKeyDown
+ 0001:0024FA68       fConsults.TfrmConsults.mnuActAddIDEntryClick
+ 0001:002582A8       fConsults.TfrmConsults.mnuActAttachMedClick
+ 0001:002597F0       fConsults.TfrmConsults.mnuActAttachtoIDParentClick
+ 0001:00257AB0       fConsults.TfrmConsults.mnuActChangeClick
+ 0001:0024F674       fConsults.TfrmConsults.mnuActCompleteClick
+ 0001:00251FA4       fConsults.TfrmConsults.mnuActConsultClick
+ 0001:0024FD94       fConsults.TfrmConsults.mnuActDetachFromIDParentClick
+ 0001:00254CC8       fConsults.TfrmConsults.mnuActDisplayDetailsClick
+ 0001:00254728       fConsults.TfrmConsults.mnuActDisplayResultsClick
+ 0001:002547C8       fConsults.TfrmConsults.mnuActDisplaySF513Click
+ 0001:00255B4C       fConsults.TfrmConsults.mnuActEditResubmitClick
+ 0001:00254E34       fConsults.TfrmConsults.mnuActIdentifyAddlSignersClick
+ 0001:00257B94       fConsults.TfrmConsults.mnuActLoadBoilerClick
+ 0001:0024FB60       fConsults.TfrmConsults.mnuActMakeAddendumClick
+ 0001:0024F00C       fConsults.TfrmConsults.mnuActNewConsultRequestClick
+ 0001:0024F1F8       fConsults.TfrmConsults.mnuActNewProcedureClick
+ 0001:00250550       fConsults.TfrmConsults.mnuActNoteDeleteClick
+ 0001:00250B14       fConsults.TfrmConsults.mnuActNoteEditClick
+ 0001:00255FE8       fConsults.TfrmConsults.mnuActNotePrintClick
+ 0001:00254B18       fConsults.TfrmConsults.mnuActPrintSF513Click
+ 0001:002582C4       fConsults.TfrmConsults.mnuActRemoveMedClick
+ 0001:00250160       fConsults.TfrmConsults.mnuActSignatureListClick
+ 0001:00250BF8       fConsults.TfrmConsults.mnuActSignatureSaveClick
+ 0001:00250ED8       fConsults.TfrmConsults.mnuActSignatureSignClick
+ 0001:0024C9C4       fConsults.TfrmConsults.mnuChartTabClick
+ 0001:002582E0       fConsults.TfrmConsults.mnuEditDialgFieldsClick
+ 0001:00255FD0       fConsults.TfrmConsults.mnuEditSharedTemplatesClick
+ 0001:00255E94       fConsults.TfrmConsults.mnuEditTemplatesClick
+ 0001:002597E4       fConsults.TfrmConsults.mnuIconLegendClick
+ 0001:00255FDC       fConsults.TfrmConsults.mnuNewSharedTemplateClick
+ 0001:00255EA0       fConsults.TfrmConsults.mnuNewTemplateClick
+ 0001:00255F5C       fConsults.TfrmConsults.mnuOptionsClick
+ 0001:0024F3EC       fConsults.TfrmConsults.mnuViewClick
+ 0001:0025A288       fConsults.TfrmConsults.mnuViewInformationClick
+ 0001:00255DF0       fConsults.TfrmConsults.mnuViewReturntoDefaultClick
+ 0001:00255D3C       fConsults.TfrmConsults.mnuViewSaveAsDefaultClick
+ 0001:0024F3B4       fConsults.TfrmConsults.NewPersonNeedData
+ 0001:00254A28       fConsults.TfrmConsults.NotifyOrder
+ 0001:002579E0       fConsults.TfrmConsults.pnlFieldsResize
+ 0001:00255EAC       fConsults.TfrmConsults.pnlLeftExit
+ 0001:00255F08       fConsults.TfrmConsults.pnlLeftResize
+ 0001:0025499C       fConsults.TfrmConsults.pnlResultsResize
+ 0001:0024E95C       fConsults.TfrmConsults.pnlRightExit
+ 0001:0024E9AC       fConsults.TfrmConsults.pnlRightResize
+ 0001:00258D9C       fConsults.TfrmConsults.popNoteListCollapseAllClick
+ 0001:00258EBC       fConsults.TfrmConsults.popNoteListCollapseSelectedClick
+ 0001:00258D64       fConsults.TfrmConsults.popNoteListExpandAllClick
+ 0001:00258E60       fConsults.TfrmConsults.popNoteListExpandSelectedClick
+ 0001:00259798       fConsults.TfrmConsults.popNoteListPopup
+ 0001:0025520C       fConsults.TfrmConsults.popNoteMemoAddlSignClick
+ 0001:002540B0       fConsults.TfrmConsults.popNoteMemoCopyClick
+ 0001:002540A4       fConsults.TfrmConsults.popNoteMemoCutClick
+ 0001:00254130       fConsults.TfrmConsults.popNoteMemoFindClick
+ 0001:0025432C       fConsults.TfrmConsults.popNoteMemoGrammarClick
+ 0001:00259F7C       fConsults.TfrmConsults.popNoteMemoInsTemplateClick
+ 0001:002540BC       fConsults.TfrmConsults.popNoteMemoPasteClick
+ 0001:00253E6C       fConsults.TfrmConsults.popNoteMemoPopup
+ 0001:00259F70       fConsults.TfrmConsults.popNoteMemoPreviewClick
+ 0001:00256198       fConsults.TfrmConsults.popNoteMemoPrintClick
+ 0001:00254110       fConsults.TfrmConsults.popNoteMemoReformatClick
+ 0001:0025421C       fConsults.TfrmConsults.popNoteMemoReplaceClick
+ 0001:00257E98       fConsults.TfrmConsults.popNoteMemoSaveContinueClick
+ 0001:002542B0       fConsults.TfrmConsults.popNoteMemoSpellClick
+ 0001:00255E3C       fConsults.TfrmConsults.popNoteMemoTemplateClick
+ 0001:00257EAC       fConsults.TfrmConsults.ProcessMedResults
+ 0001:00255214       fConsults.TfrmConsults.ProcessNotifications
+ 0001:002536A4       fConsults.TfrmConsults.RemovePCEFromChanges
+ 0001:00254560       fConsults.TfrmConsults.RequestMultiplePrint
+ 0001:002543A8       fConsults.TfrmConsults.RequestPrint
+ 0001:0024E94C       fConsults.TfrmConsults.SaveCurrentNote
+ 0001:0024E2E8       fConsults.TfrmConsults.SaveEditedConsult
+ 0001:00251878       fConsults.TfrmConsults.SaveSignItem
+ 0001:002526C8       fConsults.TfrmConsults.SetActionMenus
+ 0001:002561DC       fConsults.TfrmConsults.SetEditingIndex
+ 0001:0024C960       fConsults.TfrmConsults.SetFontSize
+ 0001:00252A10       fConsults.TfrmConsults.SetResultMenus
+ 0001:00256F54       fConsults.TfrmConsults.SetSubjectVisible
+ 0001:0024C638       fConsults.TfrmConsults.SetViewContext
+ 0001:00253658       fConsults.TfrmConsults.ShowPCEControls
+ 0001:00259F10       fConsults.TfrmConsults.sptHorzCanResize
+ 0001:0025664C       fConsults.TfrmConsults.StartNewEdit
+ 0001:00256FC8       fConsults.TfrmConsults.timAutoSaveTimer
+ 0001:002594BC       fConsults.TfrmConsults.tvConsultsChange
+ 0001:002593E0       fConsults.TfrmConsults.tvConsultsClick
+ 0001:002593B0       fConsults.TfrmConsults.tvConsultsCollapsed
+ 0001:0025A0B0       fConsults.TfrmConsults.tvConsultsExit
+ 0001:00259380       fConsults.TfrmConsults.tvConsultsExpanded
+ 0001:00259D34       fConsults.TfrmConsults.tvConsultsKeyUp
+ 0001:00258414       fConsults.TfrmConsults.tvCsltNotesChange
+ 0001:00258FA0       fConsults.TfrmConsults.tvCsltNotesClick
+ 0001:0025873C       fConsults.TfrmConsults.tvCsltNotesCollapsed
+ 0001:00258BF4       fConsults.TfrmConsults.tvCsltNotesDragDrop
+ 0001:00258B5C       fConsults.TfrmConsults.tvCsltNotesDragOver
+ 0001:00258AC8       fConsults.TfrmConsults.tvCsltNotesExpanded
+ 0001:00258C80       fConsults.TfrmConsults.tvCsltNotesStartDrag
+ 0001:00255D1C       fConsults.TfrmConsults.UMNewOrder
+ 0001:00256500       fConsults.TfrmConsults.UnlockConsultRequest
+ 0001:00259318       fConsults.TfrmConsults.UpdateConsultsTreeView
+ 0001:0025230C       fConsults.TfrmConsults.UpdateList
+ 0001:002582E8       fConsults.TfrmConsults.UpdateNoteTreeView
+ 0001:00259D64       fConsults.TfrmConsults.UserIsSigner
+ 0001:00256EA8       fConsults.TfrmConsults.VerifyNoteTitle
+ 0001:0025A278       fConsults.TfrmConsults.ViewInfo
+ 0004:00005ED4       fConsults.uChanging
+ 0004:00005ED5       fConsults.uIDNotesActive
+ 0004:00005E9C       fConsults.uPCEEdit
+ 0004:00005E98       fConsults.uPCEShow
+ 0004:00005E70       fConsults.uSelectContext
+ 0004:00005E38       fConsults.ViewContext
+ 0004:00005E14       fConsultsView..2
+ 0001:002481D0       fConsultsView..TfrmConsultsView
+ 0002:00001530       fConsultsView.fConsultsView
+ 0001:0024904C       fConsultsView.Finalization
+ 0001:00248568       fConsultsView.SelectConsultsView
+ 0004:00005E1C       fConsultsView.SvcInfo
+ 0004:00005E18       fConsultsView.SvcList
+ 0001:00248F04       fConsultsView.TfrmConsultsView.cboServiceSelect
+ 0001:00248E6C       fConsultsView.TfrmConsultsView.cmdCancelClick
+ 0001:00248A2C       fConsultsView.TfrmConsultsView.cmdOKClick
+ 0001:0024900C       fConsultsView.TfrmConsultsView.popStatusSelectNoneClick
+ 0001:00248E74       fConsultsView.TfrmConsultsView.treServiceChange
+ 0004:00005E10       fConsultsView.uChanging
+ 0004:000059F0       fCover..2
+ 0001:001E6EA0       fCover..TfrmCover
+ 0002:00001398       fCover.fCover
+ 0001:001EA50C       fCover.Finalization
+ 0004:000059DC       fCover.frmCover
+ 0004:000059E4       fCover.MHVFlag
+ 0004:000059ED       fCover.PtIsMHV
+ 0004:000059EC       fCover.PtIsVAA
+ 0001:001E74C8       fCover.TfrmCover.ClearPtData
+ 0001:001E8148       fCover.TfrmCover.CoverItemClick
+ 0001:001E9EB0       fCover.TfrmCover.CoverItemExit
+ 0001:001E77F8       fCover.TfrmCover.DisplayPage
+ 0001:001E8B70       fCover.TfrmCover.FormClose
+ 0001:001E96D8       fCover.TfrmCover.FormCreate
+ 0001:001E97F0       fCover.TfrmCover.FormDestroy
+ 0001:001E9EDC       fCover.TfrmCover.GetPatientFlag
+ 0001:001E75F8       fCover.TfrmCover.LoadList
+ 0001:001E9F24       fCover.TfrmCover.lstFlagClick
+ 0001:001E9FA0       fCover.TfrmCover.lstFlagKeyDown
+ 0001:001E91A8       fCover.TfrmCover.NotifyOrder
+ 0001:001E99FC       fCover.TfrmCover.popEditAllergyClick
+ 0001:001E9A24       fCover.TfrmCover.popEnteredInErrorClick
+ 0001:001E9888       fCover.TfrmCover.popMenuAllergiesPopup
+ 0001:001E99C8       fCover.TfrmCover.popNewAllergyClick
+ 0001:001E99E4       fCover.TfrmCover.popNKAClick
+ 0001:001E9538       fCover.TfrmCover.RemContextPopup
+ 0001:001E922C       fCover.TfrmCover.RemindersChange
+ 0001:001E80D4       fCover.TfrmCover.SetFontSize
+ 0001:001E97FC       fCover.TfrmCover.sptBottomCanResize
+ 0001:001E9810       fCover.TfrmCover.sptTopCanResize
+ 0001:001E9824       fCover.TfrmCover.spt_1CanResize
+ 0001:001E9838       fCover.TfrmCover.spt_2CanResize
+ 0001:001E984C       fCover.TfrmCover.spt_3CanResize
+ 0001:001E9860       fCover.TfrmCover.spt_4CanResize
+ 0001:001E9874       fCover.TfrmCover.spt_5CanResize
+ 0001:001E8BC8       fCover.TfrmCover.timPollTimer
+ 0001:001E9A54       fCover.TfrmCover.UpdateAllergiesList
+ 0001:001E9FB4       fCover.TfrmCover.UpdateVAAButton
+ 0004:000059F8       fCover.uARTCoverSheetParams
+ 0004:000059F4       fCover.uIPAddress
+ 0004:000059E0       fCover.VAAFlag
+ 0004:000059E8       fCover.VAA_DFN
+ 0001:001E779C       fCover.WaitList
+ 0001:00241DE0       fCsltNote..TfrmCsltNote
+ 0001:00242008       fCsltNote.SelectNoteForProcessing
+ 0001:0024294C       fCsltNote.TfrmCsltNote.cmdCancelClick
+ 0001:00242974       fCsltNote.TfrmCsltNote.cmdOKClick
+ 0001:0020E4A4       fDateRange..TfrmDateRange
+ 0001:0020E700       fDateRange.ExecuteDateRange
+ 0001:0020EA94       fDateRange.TfrmDateRange.cmdCancelClick
+ 0001:0020E890       fDateRange.TfrmDateRange.cmdOKClick
+ 0001:0020E888       fDateRange.TfrmDateRange.FormCreate
+ 0004:00005EE0       fDCSumm..2
+ 0001:0025C2F4       fDCSumm..TfrmDCSumm
+ 0001:002655D0       fDCSumm.AssignBoilerText
+ 0004:00005F50       fDCSumm.ColumnSortForward
+ 0004:00005F4C       fDCSumm.ColumnToSort
+ 0002:00001618       fDCSumm.fDCSumm
+ 0001:00267EA0       fDCSumm.Finalization
+ 0004:00005EDC       fDCSumm.frmDCSumm
+ 0004:00005EF0       fDCSumm.frmDrawers
+ 0001:0026770C       fDCSumm.SetDateRangeText
+ 0001:00266940       fDCSumm.SortByDate
+ 0001:0026679C       fDCSumm.SortByTitle
+ 0001:0025D72C       fDCSumm.TfrmDCSumm.AllowContextChange
+ 0001:0025E160       fDCSumm.TfrmDCSumm.ClearEditControls
+ 0001:0025DB08       fDCSumm.TfrmDCSumm.ClearPtData
+ 0001:00265090       fDCSumm.TfrmDCSumm.cmdChangeClick
+ 0001:00260780       fDCSumm.TfrmDCSumm.cmdNewSummClick
+ 0001:002607CC       fDCSumm.TfrmDCSumm.cmdOrdersClick
+ 0001:00260788       fDCSumm.TfrmDCSumm.cmdPCEClick
+ 0001:0025DBB0       fDCSumm.TfrmDCSumm.DisplayPage
+ 0001:0025E2A8       fDCSumm.TfrmDCSumm.DisplayPCE
+ 0001:00263708       fDCSumm.TfrmDCSumm.dlgFindTextFind
+ 0001:002637DC       fDCSumm.TfrmDCSumm.dlgReplaceTextFind
+ 0001:002637BC       fDCSumm.TfrmDCSumm.dlgReplaceTextReplace
+ 0001:0026735C       fDCSumm.TfrmDCSumm.DoAttachIDChild
+ 0001:00264BEC       fDCSumm.TfrmDCSumm.DoAutoSave
+ 0001:0026717C       fDCSumm.TfrmDCSumm.EnableDisableIDNotes
+ 0001:00263ADC       fDCSumm.TfrmDCSumm.FormClose
+ 0001:002638F4       fDCSumm.TfrmDCSumm.FormCreate
+ 0001:0026497C       fDCSumm.TfrmDCSumm.FormDestroy
+ 0001:002649A4       fDCSumm.TfrmDCSumm.GetDrawers
+ 0001:00264F1C       fDCSumm.TfrmDCSumm.GetTitleText
+ 0001:0025F03C       fDCSumm.TfrmDCSumm.InsertAddendum
+ 0001:0025E734       fDCSumm.TfrmDCSumm.InsertNewSumm
+ 0001:002649B4       fDCSumm.TfrmDCSumm.LacksRequiredForCreate
+ 0001:0025F668       fDCSumm.TfrmDCSumm.LoadForEdit
+ 0001:002659B0       fDCSumm.TfrmDCSumm.LoadSumms
+ 0001:00264B3C       fDCSumm.TfrmDCSumm.LockSumm
+ 0001:00260478       fDCSumm.TfrmDCSumm.lstSummsClick
+ 0001:0025D9E0       fDCSumm.TfrmDCSumm.LstSummsToPrint
+ 0001:00266D84       fDCSumm.TfrmDCSumm.lvSummsColumnClick
+ 0001:00266F60       fDCSumm.TfrmDCSumm.lvSummsCompare
+ 0001:002670D8       fDCSumm.TfrmDCSumm.lvSummsResize
+ 0001:0026700C       fDCSumm.TfrmDCSumm.lvSummsSelectItem
+ 0001:002607D0       fDCSumm.TfrmDCSumm.memNewSummChange
+ 0001:00267B5C       fDCSumm.TfrmDCSumm.memNewSummKeyUp
+ 0001:002613FC       fDCSumm.TfrmDCSumm.mnuActAddendClick
+ 0001:0026129C       fDCSumm.TfrmDCSumm.mnuActAddIDEntryClick
+ 0001:00267210       fDCSumm.TfrmDCSumm.mnuActAttachtoIDParentClick
+ 0001:00265594       fDCSumm.TfrmDCSumm.mnuActChangeClick
+ 0001:00261F78       fDCSumm.TfrmDCSumm.mnuActDeleteClick
+ 0001:00261670       fDCSumm.TfrmDCSumm.mnuActDetachFromIDParentClick
+ 0001:00262454       fDCSumm.TfrmDCSumm.mnuActEditClick
+ 0001:00263BD8       fDCSumm.TfrmDCSumm.mnuActIdentifyAddlSignersClick
+ 0001:00265680       fDCSumm.TfrmDCSumm.mnuActLoadBoilerClick
+ 0001:0026127C       fDCSumm.TfrmDCSumm.mnuActNewClick
+ 0001:002625AC       fDCSumm.TfrmDCSumm.mnuActSaveClick
+ 0001:002626F8       fDCSumm.TfrmDCSumm.mnuActSignClick
+ 0001:002619FC       fDCSumm.TfrmDCSumm.mnuActSignListClick
+ 0001:0025E150       fDCSumm.TfrmDCSumm.mnuChartTabClick
+ 0001:002659A8       fDCSumm.TfrmDCSumm.mnuEditDialgFieldsClick
+ 0001:00264964       fDCSumm.TfrmDCSumm.mnuEditSharedTemplatesClick
+ 0001:002648E4       fDCSumm.TfrmDCSumm.mnuEditTemplatesClick
+ 0001:00267204       fDCSumm.TfrmDCSumm.mnuIconLegendClick
+ 0001:00264970       fDCSumm.TfrmDCSumm.mnuNewSharedTemplateClick
+ 0001:002648D8       fDCSumm.TfrmDCSumm.mnuNewTemplateClick
+ 0001:002648F0       fDCSumm.TfrmDCSumm.mnuOptionsClick
+ 0001:002607D8       fDCSumm.TfrmDCSumm.mnuViewClick
+ 0001:002639D8       fDCSumm.TfrmDCSumm.mnuViewDetailClick
+ 0001:00267D18       fDCSumm.TfrmDCSumm.mnuViewInformationClick
+ 0001:00264728       fDCSumm.TfrmDCSumm.mnuViewReturntoDefaultClick
+ 0001:00264500       fDCSumm.TfrmDCSumm.mnuViewSaveAsDefaultClick
+ 0001:00267C80       fDCSumm.TfrmDCSumm.NoSummSelected
+ 0001:002603A8       fDCSumm.TfrmDCSumm.pnlRightResize
+ 0001:002603C8       fDCSumm.TfrmDCSumm.pnlWriteResize
+ 0001:00264814       fDCSumm.TfrmDCSumm.popSummListCollapseAllClick
+ 0001:002648A0       fDCSumm.TfrmDCSumm.popSummListCollapseSelectedClick
+ 0001:00264808       fDCSumm.TfrmDCSumm.popSummListExpandAllClick
+ 0001:00264868       fDCSumm.TfrmDCSumm.popSummListExpandSelectedClick
+ 0001:0026478C       fDCSumm.TfrmDCSumm.popSummListPopup
+ 0001:00263F74       fDCSumm.TfrmDCSumm.popSummMemoAddlSignClick
+ 0001:002635FC       fDCSumm.TfrmDCSumm.popSummMemoCopyClick
+ 0001:002635F0       fDCSumm.TfrmDCSumm.popSummMemoCutClick
+ 0001:0026367C       fDCSumm.TfrmDCSumm.popSummMemoFindClick
+ 0001:00263878       fDCSumm.TfrmDCSumm.popSummMemoGrammarClick
+ 0001:00267C74       fDCSumm.TfrmDCSumm.popSummMemoInsTemplateClick
+ 0001:00263608       fDCSumm.TfrmDCSumm.popSummMemoPasteClick
+ 0001:002633B8       fDCSumm.TfrmDCSumm.popSummMemoPopup
+ 0001:00267C68       fDCSumm.TfrmDCSumm.popSummMemoPreviewClick
+ 0001:0026365C       fDCSumm.TfrmDCSumm.popSummMemoReformatClick
+ 0001:00263728       fDCSumm.TfrmDCSumm.popSummMemoReplaceClick
+ 0001:00265994       fDCSumm.TfrmDCSumm.popSummMemoSaveContinueClick
+ 0001:002637FC       fDCSumm.TfrmDCSumm.popSummMemoSpellClick
+ 0001:00264734       fDCSumm.TfrmDCSumm.popSummMemoTemplateClick
+ 0001:00263F7C       fDCSumm.TfrmDCSumm.ProcessNotifications
+ 0001:00261D7C       fDCSumm.TfrmDCSumm.RemovePCEFromChanges
+ 0001:0025DF18       fDCSumm.TfrmDCSumm.RequestMultiplePrint
+ 0001:0025DD58       fDCSumm.TfrmDCSumm.RequestPrint
+ 0001:00260398       fDCSumm.TfrmDCSumm.SaveCurrentSumm
+ 0001:0025FBFC       fDCSumm.TfrmDCSumm.SaveEditedSumm
+ 0001:00262ECC       fDCSumm.TfrmDCSumm.SaveSignItem
+ 0001:002649AC       fDCSumm.TfrmDCSumm.SetEditingIndex
+ 0001:0025E0EC       fDCSumm.TfrmDCSumm.SetFontSize
+ 0001:00267820       fDCSumm.TfrmDCSumm.SetSummTreeLabel
+ 0001:00264398       fDCSumm.TfrmDCSumm.SetViewContext
+ 0001:0025E25C       fDCSumm.TfrmDCSumm.ShowPCEControls
+ 0001:00267C08       fDCSumm.TfrmDCSumm.sptHorzCanResize
+ 0001:00260EB4       fDCSumm.TfrmDCSumm.StartNewEdit
+ 0001:00264F10       fDCSumm.TfrmDCSumm.timAutoSaveTimer
+ 0001:0025FB08       fDCSumm.TfrmDCSumm.TitleText
+ 0001:00266088       fDCSumm.TfrmDCSumm.tvSummsChange
+ 0001:00266B78       fDCSumm.TfrmDCSumm.tvSummsClick
+ 0001:00266758       fDCSumm.TfrmDCSumm.tvSummsCollapsed
+ 0001:00266C14       fDCSumm.TfrmDCSumm.tvSummsDragDrop
+ 0001:00266B7C       fDCSumm.TfrmDCSumm.tvSummsDragOver
+ 0001:00266AE4       fDCSumm.TfrmDCSumm.tvSummsExpanded
+ 0001:00266CA0       fDCSumm.TfrmDCSumm.tvSummsStartDrag
+ 0001:0026601C       fDCSumm.TfrmDCSumm.UpdateTreeView
+ 0001:00264A90       fDCSumm.TfrmDCSumm.VerifySummTitle
+ 0001:00267D08       fDCSumm.TfrmDCSumm.ViewInfo
+ 0004:00005F51       fDCSumm.uChanging
+ 0004:00005EF4       fDCSumm.uDCSummContext
+ 0004:00005F52       fDCSumm.uIDNotesActive
+ 0004:00005EE8       fDCSumm.uPCEEdit
+ 0004:00005EE4       fDCSumm.uPCEShow
+ 0004:00005EEC       fDCSumm.ViewContext
+ 0001:0025A4BC       fDCSummProps..TfrmDCSummProperties
+ 0004:00005ED8       fDCSummProps.EditLines
+ 0001:0025AA2C       fDCSummProps.ExecuteDCSummProperties
+ 0001:0025B568       fDCSummProps.TfrmDCSummProperties.cboAttendingExit
+ 0001:0025B48C       fDCSummProps.TfrmDCSummProperties.cboAttendingNeedData
+ 0001:0025B500       fDCSummProps.TfrmDCSummProperties.cboAuthorEnter
+ 0001:0025B53C       fDCSummProps.TfrmDCSummProperties.cboAuthorExit
+ 0001:0025B518       fDCSummProps.TfrmDCSummProperties.cboAuthorMouseClick
+ 0001:0025B45C       fDCSummProps.TfrmDCSummProperties.cboAuthorNeedData
+ 0001:0025C234       fDCSummProps.TfrmDCSummProperties.cboNewTitleChange
+ 0001:0025C2E4       fDCSummProps.TfrmDCSummProperties.cboNewTitleDblClick
+ 0001:0025BCB4       fDCSummProps.TfrmDCSummProperties.cboNewTitleDropDownClose
+ 0001:0025B364       fDCSummProps.TfrmDCSummProperties.cboNewTitleEnter
+ 0001:0025B42C       fDCSummProps.TfrmDCSummProperties.cboNewTitleExit
+ 0001:0025B370       fDCSummProps.TfrmDCSummProperties.cboNewTitleMouseClick
+ 0001:0025B334       fDCSummProps.TfrmDCSummProperties.cboNewTitleNeedData
+ 0001:0025BCA4       fDCSummProps.TfrmDCSummProperties.cmdCancelClick
+ 0001:0025B650       fDCSummProps.TfrmDCSummProperties.cmdOKClick
+ 0001:0025C2EC       fDCSummProps.TfrmDCSummProperties.FormClose
+ 0001:0025B0E4       fDCSummProps.TfrmDCSummProperties.FormShow
+ 0001:0025BCB8       fDCSummProps.TfrmDCSummProperties.lstAdmissionsChange
+ 0001:0025B0F0       fDCSummProps.TfrmDCSummProperties.SetCosignerRequired
+ 0001:0025B118       fDCSummProps.TfrmDCSummProperties.ShowAdmissionList
+ 0001:0025B0EC       fDCSummProps.TfrmDCSummProperties.UMDelayEvent
+ 0001:001171C8       fDebugInfo..TfrmDebugInfo
+ 0004:00003844       fDebugInfo.frmDebugInfo
+ 0004:000063B0       fDeviceSelect..2
+ 0001:0032C650       fDeviceSelect..TfrmDeviceSelect
+ 0004:000063AC       fDeviceSelect.ADevice
+ 0002:000019C8       fDeviceSelect.fDeviceSelect
+ 0001:0032CEC8       fDeviceSelect.Finalization
+ 0001:0032C938       fDeviceSelect.SelectDevice
+ 0001:0032CC24       fDeviceSelect.TfrmDeviceSelect.cboDeviceChange
+ 0001:0032CE84       fDeviceSelect.TfrmDeviceSelect.cboDeviceNeedData
+ 0001:0032CE6C       fDeviceSelect.TfrmDeviceSelect.cmdCancelClick
+ 0001:0032CCEC       fDeviceSelect.TfrmDeviceSelect.cmdOKClick
+ 0001:0032CEAC       fDeviceSelect.TfrmDeviceSelect.FormClose
+ 0001:0032CEB4       fDeviceSelect.TfrmDeviceSelect.FormCreate
+ 0004:00004A34       fDiagnoses..2
+ 0001:00186888       fDiagnoses..TfrmDiagnoses
+ 0002:000010FC       fDiagnoses.fDiagnoses
+ 0001:0018767C       fDiagnoses.Finalization
+ 0004:00004A30       fDiagnoses.frmDiagnoses
+ 0001:0018728C       fDiagnoses.TfrmDiagnoses.btnOKClick
+ 0001:00186D70       fDiagnoses.TfrmDiagnoses.btnRemoveClick
+ 0001:00186C38       fDiagnoses.TfrmDiagnoses.ckbDiagProbClicked
+ 0001:00186BD4       fDiagnoses.TfrmDiagnoses.cmdDiagPrimaryClick
+ 0001:00186B50       fDiagnoses.TfrmDiagnoses.EnsurePrimaryDiag
+ 0001:00186CF8       fDiagnoses.TfrmDiagnoses.FormCreate
+ 0001:00187014       fDiagnoses.TfrmDiagnoses.FormResize
+ 0001:001872B4       fDiagnoses.TfrmDiagnoses.GetEncounterDiagnoses
+ 0001:001872AC       fDiagnoses.TfrmDiagnoses.lbSectionClick
+ 0001:001873D0       fDiagnoses.TfrmDiagnoses.lbSectionDrawItem
+ 0001:00187078       fDiagnoses.TfrmDiagnoses.lbxSectionClickCheck
+ 0001:00186E04       fDiagnoses.TfrmDiagnoses.UpdateControls
+ 0001:00186D84       fDiagnoses.TfrmDiagnoses.UpdateNewItemStr
+ 0004:000062C8       fDrawers..2
+ 0001:003076A8       fDrawers..TfrmDrawers
+ 0001:00308074       fDrawers.AllCtrls
+ 0002:0000194C       fDrawers.fDrawers
+ 0001:0030AD4C       fDrawers.Finalization
+ 0001:0030A140       fDrawers.FindNode
+ 0001:0030AA1C       fDrawers.REOK
+ 0001:00308D90       fDrawers.TfrmDrawers.AddTemplateNode
+ 0001:00309944       fDrawers.TfrmDrawers.btnFindClick
+ 0001:003082CC       fDrawers.TfrmDrawers.ButtonHeights
+ 0001:00309FC8       fDrawers.TfrmDrawers.CanEditShared
+ 0001:00309FB4       fDrawers.TfrmDrawers.CanEditTemplates
+ 0001:0030A018       fDrawers.TfrmDrawers.cbFindOptionClick
+ 0001:00308FEC       fDrawers.TfrmDrawers.CheckAsk
+ 0001:003085F8       fDrawers.TfrmDrawers.CreateDrawers
+ 0001:0030ACDC       fDrawers.TfrmDrawers.DisableArrowKeyMove
+ 0001:00309F24       fDrawers.TfrmDrawers.DisplayDrawers
+ 0001:00309F40       fDrawers.TfrmDrawers.DisplayDrawers
+ 0001:00309B60       fDrawers.TfrmDrawers.edtSearchChange
+ 0001:00309C08       fDrawers.TfrmDrawers.edtSearchEnter
+ 0001:00309C18       fDrawers.TfrmDrawers.edtSearchExit
+ 0001:0030870C       fDrawers.TfrmDrawers.EnableDrawer
+ 0001:003087A8       fDrawers.TfrmDrawers.EnableDrawers
+ 0001:003089E8       fDrawers.TfrmDrawers.EndInternalResize
+ 0001:00309CDC       fDrawers.TfrmDrawers.ExternalReloadTemplates
+ 0001:00309D84       fDrawers.TfrmDrawers.fldAccessRemindersInstructionsQuery
+ 0001:00309DFC       fDrawers.TfrmDrawers.fldAccessRemindersStateQuery
+ 0001:00309E54       fDrawers.TfrmDrawers.fldAccessTemplatesInstructionsQuery
+ 0001:00309ECC       fDrawers.TfrmDrawers.fldAccessTemplatesStateQuery
+ 0001:00308BAC       fDrawers.TfrmDrawers.FontChanged
+ 0001:00308274       fDrawers.TfrmDrawers.FormCanResize
+ 0001:00309CC0       fDrawers.TfrmDrawers.FormCreate
+ 0001:00309898       fDrawers.TfrmDrawers.FormDestroy
+ 0001:0030884C       fDrawers.TfrmDrawers.FormResize
+ 0001:0030A4C4       fDrawers.TfrmDrawers.GetAlign
+ 0001:00308588       fDrawers.TfrmDrawers.GetDrawerControls
+ 0001:00308A34       fDrawers.TfrmDrawers.InitButtons
+ 0001:0030AA4C       fDrawers.TfrmDrawers.InsertOK
+ 0001:003093D8       fDrawers.TfrmDrawers.InsertText
+ 0001:0030805C       fDrawers.TfrmDrawers.MinDrawerControlHeight
+ 0001:003098B8       fDrawers.TfrmDrawers.mnuCollapseTreeClick
+ 0001:0030A8B8       fDrawers.TfrmDrawers.mnuCopyTemplateClick
+ 0001:0030A54C       fDrawers.TfrmDrawers.mnuDefaultClick
+ 0001:00309CA8       fDrawers.TfrmDrawers.mnuEditTemplatesClick
+ 0001:00309C28       fDrawers.TfrmDrawers.mnuFindTemplatesClick
+ 0001:0030A724       fDrawers.TfrmDrawers.mnuGotoDefaultClick
+ 0001:0030A040       fDrawers.TfrmDrawers.mnuInsertTemplateClick
+ 0001:00309CB4       fDrawers.TfrmDrawers.mnuNewTemplateClick
+ 0001:003097D8       fDrawers.TfrmDrawers.mnuPreviewTemplateClick
+ 0001:0030A78C       fDrawers.TfrmDrawers.mnuViewNotesClick
+ 0001:0030AAD8       fDrawers.TfrmDrawers.mnuViewTemplateIconLegendClick
+ 0001:003092D8       fDrawers.TfrmDrawers.MoveCaret
+ 0001:00309328       fDrawers.TfrmDrawers.NewRECDragDrop
+ 0001:00309370       fDrawers.TfrmDrawers.NewRECDragOver
+ 0001:0030A46C       fDrawers.TfrmDrawers.NotifyWhenRemTreeChanges
+ 0001:00308438       fDrawers.TfrmDrawers.OpenDrawer
+ 0001:0030A61C       fDrawers.TfrmDrawers.OpenToNode
+ 0001:0030AAE4       fDrawers.TfrmDrawers.pnlTemplatesButtonEnter
+ 0001:0030AB44       fDrawers.TfrmDrawers.pnlTemplatesButtonExit
+ 0001:00309FD4       fDrawers.TfrmDrawers.pnlTemplateSearchResize
+ 0001:00309594       fDrawers.TfrmDrawers.popTemplatesPopup
+ 0001:0030A340       fDrawers.TfrmDrawers.PositionToReminder
+ 0001:003098D8       fDrawers.TfrmDrawers.ReloadTemplates
+ 0001:0030A228       fDrawers.TfrmDrawers.RemindersChanged
+ 0001:0030A4A4       fDrawers.TfrmDrawers.RemoveNotifyWhenRemTreeChanges
+ 0001:0030A4E0       fDrawers.TfrmDrawers.ResetTemplates
+ 0001:00308100       fDrawers.TfrmDrawers.ResizeToVisible
+ 0001:00308938       fDrawers.TfrmDrawers.sbEncounterClick
+ 0001:003089C8       fDrawers.TfrmDrawers.sbOrdersClick
+ 0001:00308940       fDrawers.TfrmDrawers.sbRemindersClick
+ 0001:00308A00       fDrawers.TfrmDrawers.sbResize
+ 0001:0030889C       fDrawers.TfrmDrawers.sbTemplatesClick
+ 0001:0030A4CC       fDrawers.TfrmDrawers.SetAlign
+ 0001:00309B04       fDrawers.TfrmDrawers.SetFindNext
+ 0001:00309228       fDrawers.TfrmDrawers.SetRichEditControl
+ 0001:0030A074       fDrawers.TfrmDrawers.SetSplitter
+ 0001:0030A0F8       fDrawers.TfrmDrawers.SetSplitterActive
+ 0001:00308350       fDrawers.TfrmDrawers.ShowDrawers
+ 0001:0030A0E4       fDrawers.TfrmDrawers.SplitterCanResize
+ 0001:003089F8       fDrawers.TfrmDrawers.StartInternalResize
+ 0001:003089D0       fDrawers.TfrmDrawers.ToggleDrawer
+ 0001:00309BC0       fDrawers.TfrmDrawers.ToggleMenuItem
+ 0001:0030A458       fDrawers.TfrmDrawers.tvRemindersCurListChanged
+ 0001:0030AB6C       fDrawers.TfrmDrawers.tvRemindersKeyDown
+ 0001:0030A2F0       fDrawers.TfrmDrawers.tvRemindersMouseUp
+ 0001:0030ABA8       fDrawers.TfrmDrawers.tvRemindersNodeCaptioning
+ 0001:00309074       fDrawers.TfrmDrawers.tvTemplatesClick
+ 0001:003090D0       fDrawers.TfrmDrawers.tvTemplatesCollapsing
+ 0001:00309084       fDrawers.TfrmDrawers.tvTemplatesDblClick
+ 0001:00309C74       fDrawers.TfrmDrawers.tvTemplatesDragging
+ 0001:00308EA8       fDrawers.TfrmDrawers.tvTemplatesExpanding
+ 0001:00308DB0       fDrawers.TfrmDrawers.tvTemplatesGetImageIndex
+ 0001:00308DCC       fDrawers.TfrmDrawers.tvTemplatesGetSelectedIndex
+ 0001:003091E8       fDrawers.TfrmDrawers.tvTemplatesKeyDown
+ 0001:0030921C       fDrawers.TfrmDrawers.tvTemplatesKeyUp
+ 0001:0030A180       fDrawers.TfrmDrawers.UpdatePersonalTemplates
+ 0001:0033BE44       fDupPts..TfrmDupPts
+ 0001:0033C0B4       fDupPts.TfrmDupPts.btnCancelClick
+ 0001:0033C11C       fDupPts.TfrmDupPts.btnOKClick
+ 0001:0033C0BC       fDupPts.TfrmDupPts.FormCreate
+ 0001:0033C21C       fDupPts.TfrmDupPts.FormKeyDown
+ 0001:0033C250       fDupPts.TfrmDupPts.lboSelPtDblClick
+ 0004:00005C10       fEditConsult..2
+ 0001:0023D2C8       fEditConsult..TfrmEditCslt
+ 0004:00005CF4       fEditConsult.BADxUpdated
+ 0004:00005CD8       fEditConsult.Defaults
+ 0001:0023D8F0       fEditConsult.EditResubmitConsult
+ 0002:000014D4       fEditConsult.fEditConsult
+ 0001:0023F7AC       fEditConsult.Finalization
+ 0004:00005C0C       fEditConsult.frmEditCslt
+ 0004:00005C78       fEditConsult.NewRec
+ 0004:00005C18       fEditConsult.OldRec
+ 0004:00005CE0       fEditConsult.ProvDx
+ 0001:0023DF08       fEditConsult.SetError
+ 0004:00005C14       fEditConsult.SvcList
+ 0001:0023EF98       fEditConsult.TfrmEditCslt.btnCmtCancelClick
+ 0001:0023EFCC       fEditConsult.TfrmEditCslt.btnCmtOtherClick
+ 0001:0023EC24       fEditConsult.TfrmEditCslt.cmdAcceptClick
+ 0001:0023EFF8       fEditConsult.TfrmEditCslt.cmdLexSearchClick
+ 0001:0023EDC4       fEditConsult.TfrmEditCslt.cmdQuitClick
+ 0001:0023E640       fEditConsult.TfrmEditCslt.ControlChange
+ 0001:0023EBB0       fEditConsult.TfrmEditCslt.FormClose
+ 0001:0023DB30       fEditConsult.TfrmEditCslt.InitDialog
+ 0001:0023F750       fEditConsult.TfrmEditCslt.memCommentKeyDown
+ 0001:0023F79C       fEditConsult.TfrmEditCslt.memCommentKeyPress
+ 0001:0023F6A4       fEditConsult.TfrmEditCslt.memCommentKeyUp
+ 0001:0023ECFC       fEditConsult.TfrmEditCslt.memReasonExit
+ 0001:0023F4EC       fEditConsult.TfrmEditCslt.mnuPopProvDxDeleteClick
+ 0001:0023EF38       fEditConsult.TfrmEditCslt.OrderMessage
+ 0001:0023F614       fEditConsult.TfrmEditCslt.popReasonCopyClick
+ 0001:0023F608       fEditConsult.TfrmEditCslt.popReasonCutClick
+ 0001:0023F620       fEditConsult.TfrmEditCslt.popReasonPasteClick
+ 0001:0023F524       fEditConsult.TfrmEditCslt.popReasonPopup
+ 0001:0023F674       fEditConsult.TfrmEditCslt.popReasonReformatClick
+ 0001:0023E460       fEditConsult.TfrmEditCslt.radInpatientClick
+ 0001:0023E550       fEditConsult.TfrmEditCslt.radOutpatientClick
+ 0001:0023F174       fEditConsult.TfrmEditCslt.SetProvDiagPromptingMode
+ 0001:0023E438       fEditConsult.TfrmEditCslt.txtAttnNeedData
+ 0001:0023DF64       fEditConsult.TfrmEditCslt.Validate
+ 0001:0023EDD4       fEditConsult.TfrmEditCslt.ValidSave
+ 0004:00005CDC       fEditConsult.uMessageVisible
+ 0004:00005CFC       fEditProc..2
+ 0001:0023F80C       fEditProc..TfrmEditProc
+ 0004:00005DC0       fEditProc.Defaults
+ 0001:0023FE78       fEditProc.EditResubmitProcedure
+ 0002:000014DC       fEditProc.fEditProc
+ 0001:00241D80       fEditProc.Finalization
+ 0004:00005CF8       fEditProc.frmEditProc
+ 0004:00005D60       fEditProc.NewRec
+ 0004:00005D00       fEditProc.OldRec
+ 0004:00005DC8       fEditProc.ProvDx
+ 0001:00240430       fEditProc.SetError
+ 0001:002415B8       fEditProc.TfrmEditProc.btnCmtCancelClick
+ 0001:002415EC       fEditProc.TfrmEditProc.btnCmtOtherClick
+ 0001:00240870       fEditProc.TfrmEditProc.cboProcNeedData
+ 0001:00241248       fEditProc.TfrmEditProc.cboProcSelect
+ 0001:002414D0       fEditProc.TfrmEditProc.cmdAcceptClick
+ 0001:00241618       fEditProc.TfrmEditProc.cmdLexSearchClick
+ 0001:00241548       fEditProc.TfrmEditProc.cmdQuitClick
+ 0001:00240A38       fEditProc.TfrmEditProc.ControlChange
+ 0001:00241070       fEditProc.TfrmEditProc.FormClose
+ 0001:0024009C       fEditProc.TfrmEditProc.InitDialog
+ 0001:00241C7C       fEditProc.TfrmEditProc.memCommentKeyUp
+ 0001:00241408       fEditProc.TfrmEditProc.memReasonExit
+ 0001:00241D24       fEditProc.TfrmEditProc.memReasonKeyDown
+ 0001:00241D70       fEditProc.TfrmEditProc.memReasonKeyPress
+ 0001:00241AC4       fEditProc.TfrmEditProc.mnuPopProvDxDeleteClick
+ 0001:00241558       fEditProc.TfrmEditProc.OrderMessage
+ 0001:00241BEC       fEditProc.TfrmEditProc.popReasonCopyClick
+ 0001:00241BE0       fEditProc.TfrmEditProc.popReasonCutClick
+ 0001:00241BF8       fEditProc.TfrmEditProc.popReasonPasteClick
+ 0001:00241AFC       fEditProc.TfrmEditProc.popReasonPopup
+ 0001:00241C4C       fEditProc.TfrmEditProc.popReasonReformatClick
+ 0001:00240898       fEditProc.TfrmEditProc.radInpatientClick
+ 0001:00240968       fEditProc.TfrmEditProc.radOutpatientClick
+ 0001:00241774       fEditProc.TfrmEditProc.SetProvDiagPromptingMode
+ 0001:00240848       fEditProc.TfrmEditProc.txtAttnNeedData
+ 0001:0024048C       fEditProc.TfrmEditProc.Validate
+ 0001:002410E4       fEditProc.TfrmEditProc.ValidSave
+ 0004:00005DC4       fEditProc.uMessageVisible
+ 0001:00208C80       fEffectDate..TfrmEffectDate
+ 0001:00208EB8       fEffectDate.ObtainEffectiveDate
+ 0001:00208F84       fEffectDate.TfrmEffectDate.cmdCancelClick
+ 0001:00208F74       fEffectDate.TfrmEffectDate.cmdOKClick
+ 0001:00208F6C       fEffectDate.TfrmEffectDate.FormCreate
+ 0004:00005B84       fEncnt..2
+ 0001:0022A300       fEncnt..TfrmEncounter
+ 0002:0000146C       fEncnt.fEncnt
+ 0001:0022C1B4       fEncnt.Finalization
+ 0001:0022BC8C       fEncnt.TfrmEncounter.AllowAutoFocusChange
+ 0001:0022BBF8       fEncnt.TfrmEncounter.AppShowHint
+ 0001:0022B6D0       fEncnt.TfrmEncounter.calVisitDateChange
+ 0001:0022B7B8       fEncnt.TfrmEncounter.calVisitDateExit
+ 0001:0022B598       fEncnt.TfrmEncounter.cboNewVisitChange
+ 0001:0022B384       fEncnt.TfrmEncounter.cboNewVisitNeedData
+ 0001:0022B094       fEncnt.TfrmEncounter.cboPtProviderNeedData
+ 0001:0022BBF0       fEncnt.TfrmEncounter.ckbHistoricalClick
+ 0001:0022BBE8       fEncnt.TfrmEncounter.cmdCancelClick
+ 0001:0022B3AC       fEncnt.TfrmEncounter.cmdDateRangeClick
+ 0001:0022B90C       fEncnt.TfrmEncounter.cmdOKClick
+ 0001:0022BCC8       fEncnt.TfrmEncounter.FormClose
+ 0001:0022AB28       fEncnt.TfrmEncounter.FormCreate
+ 0001:0022BC38       fEncnt.TfrmEncounter.FormDestroy
+ 0001:0022C010       fEncnt.TfrmEncounter.FormResize
+ 0001:0022C0D4       fEncnt.TfrmEncounter.FormShow
+ 0001:0022BCEC       fEncnt.TfrmEncounter.lstAdmitChange
+ 0001:0022BE04       fEncnt.TfrmEncounter.lstClinicChange
+ 0001:0022B0E0       fEncnt.TfrmEncounter.pgeVisitChange
+ 0001:0022B340       fEncnt.TfrmEncounter.pgeVisitMouseDown
+ 0001:0022BC3C       fEncnt.TfrmEncounter.SetVisitCat
+ 0001:0022A838       fEncnt.UpdateEncounter
+ 0001:0022A828       fEncnt.UpdateVisit
+ 0001:0022A818       fEncnt.UpdateVisit
+ 0004:00005B88       fEncnt.uTIULocation
+ 0004:00005B8C       fEncnt.uTIULocationName
+ 0001:00335F94       fEncounterFrame..TfrmEncounterFrame
+ 0004:000063C4       fEncounterFrame.frmEncounterFrame
+ 0001:00336EC4       fEncounterFrame.InitList
+ 0001:00336B30       fEncounterFrame.TfrmEncounterFrame.AddTabs
+ 0001:003364D0       fEncounterFrame.TfrmEncounterFrame.CreateChildForms
+ 0001:003366C8       fEncounterFrame.TfrmEncounterFrame.CreateForms
+ 0001:00337EB4       fEncounterFrame.TfrmEncounterFrame.FormCanResize
+ 0001:00337EAC       fEncounterFrame.TfrmEncounterFrame.FormClose
+ 0001:00337434       fEncounterFrame.TfrmEncounterFrame.FormCloseQuery
+ 0001:0033729C       fEncounterFrame.TfrmEncounterFrame.FormCreate
+ 0001:0033722C       fEncounterFrame.TfrmEncounterFrame.FormDestroy
+ 0001:00337B58       fEncounterFrame.TfrmEncounterFrame.FormKeyDown
+ 0001:0033666C       fEncounterFrame.TfrmEncounterFrame.FormListContains
+ 0001:00336A90       fEncounterFrame.TfrmEncounterFrame.FormResize
+ 0001:00337ED0       fEncounterFrame.TfrmEncounterFrame.FormShow
+ 0001:003364EC       fEncounterFrame.TfrmEncounterFrame.LoadFormList
+ 0001:0033643C       fEncounterFrame.TfrmEncounterFrame.PageIDToForm
+ 0001:00336284       fEncounterFrame.TfrmEncounterFrame.PageIDToTab
+ 0001:00336E74       fEncounterFrame.TfrmEncounterFrame.SectionClick
+ 0001:00337AA0       fEncounterFrame.TfrmEncounterFrame.SelectTab
+ 0001:003372F8       fEncounterFrame.TfrmEncounterFrame.SendData
+ 0001:00337C94       fEncounterFrame.TfrmEncounterFrame.SetFormFonts
+ 0001:003369C4       fEncounterFrame.TfrmEncounterFrame.SwitchToPage
+ 0001:00336F7C       fEncounterFrame.TfrmEncounterFrame.SynchPCEData
+ 0001:00337750       fEncounterFrame.TfrmEncounterFrame.TabControlChange
+ 0001:00337858       fEncounterFrame.TfrmEncounterFrame.TabControlChanging
+ 0001:00337B20       fEncounterFrame.TfrmEncounterFrame.TabControlEnter
+ 0001:003369F8       fEncounterFrame.TfrmEncounterFrame.tabPageChange
+ 0001:00337874       fEncounterFrame.TfrmEncounterFrame.UpdateEncounter
+ 0004:000063DC       fEncounterFrame.uEncPCEData
+ 0001:00336BC8       fEncounterFrame.UpdatePCE
+ 0004:000063E0       fEncounterFrame.uProviders
+ 0004:000063C8       fEncounterFrame.uSCCond
+ 0004:000063D8       fEncounterFrame.uVisitType
+ 0004:00006228       fEncVitals..2
+ 0001:002E16AC       fEncVitals..TfrmEncVitals
+ 0002:000017C4       fEncVitals.fEncVitals
+ 0001:002E391C       fEncVitals.Finalization
+ 0004:00006224       fEncVitals.frmEncVitals
+ 0001:002E28C4       fEncVitals.TfrmEncVitals.AssignVitals
+ 0001:002E3600       fEncVitals.TfrmEncVitals.btnEnterVitalsClick
+ 0001:002E2C08       fEncVitals.TfrmEncVitals.cboHeightChange
+ 0001:002E2D0C       fEncVitals.TfrmEncVitals.cboHeightExit
+ 0001:002E303C       fEncVitals.TfrmEncVitals.cboPainChange
+ 0001:002E2A54       fEncVitals.TfrmEncVitals.cboTempChange
+ 0001:002E2C50       fEncVitals.TfrmEncVitals.cboTempExit
+ 0001:002E2C10       fEncVitals.TfrmEncVitals.cboWeightChange
+ 0001:002E2D84       fEncVitals.TfrmEncVitals.cboWeightExit
+ 0001:002E31B0       fEncVitals.TfrmEncVitals.ChangeFocus
+ 0001:002E2A70       fEncVitals.TfrmEncVitals.CheckVitalUnit
+ 0001:002E33EC       fEncVitals.TfrmEncVitals.ClearData
+ 0001:002E301C       fEncVitals.TfrmEncVitals.FormActivate
+ 0001:002E2DD0       fEncVitals.TfrmEncVitals.FormCreate
+ 0001:002E2E20       fEncVitals.TfrmEncVitals.FormDestroy
+ 0001:002E3044       fEncVitals.TfrmEncVitals.FormResize
+ 0001:002E2ED0       fEncVitals.TfrmEncVitals.FormShow
+ 0001:002E2864       fEncVitals.TfrmEncVitals.GetVitHTRate
+ 0001:002E1D1C       fEncVitals.TfrmEncVitals.HasData
+ 0001:002E1DFC       fEncVitals.TfrmEncVitals.InitVitalPanel
+ 0001:002E2E68       fEncVitals.TfrmEncVitals.lbllastClick
+ 0001:002E37E8       fEncVitals.TfrmEncVitals.LoadVitalsList
+ 0001:002E344C       fEncVitals.TfrmEncVitals.LoadVitalView
+ 0001:002E31FC       fEncVitals.TfrmEncVitals.OK2SaveVitals
+ 0001:002E211C       fEncVitals.TfrmEncVitals.PopulateLastVital
+ 0001:002E2780       fEncVitals.TfrmEncVitals.SetVitPointer
+ 0001:002E2C18       fEncVitals.TfrmEncVitals.txtMeasBPExit
+ 0001:002E30EC       fEncVitals.TfrmEncVitals.txtMeasHtExit
+ 0001:002E2CD4       fEncVitals.TfrmEncVitals.txtMeasPulseExit
+ 0001:002E2C9C       fEncVitals.TfrmEncVitals.txtMeasRespExit
+ 0001:002E30A0       fEncVitals.TfrmEncVitals.txtMeasTempExit
+ 0001:002E3164       fEncVitals.TfrmEncVitals.txtMeasWtExit
+ 0003:00003AA4       fEncVitals.UcboVitChanging
+ 0004:00004A68       fExam..2
+ 0001:0018CF4C       fExam..TfrmExams
+ 0002:00001188       fExam.fExam
+ 0001:0018D458       fExam.Finalization
+ 0004:00004A64       fExam.frmExams
+ 0001:0018D158       fExam.TfrmExams.cboExamResultsChange
+ 0001:0018D228       fExam.TfrmExams.FormCreate
+ 0001:0018D2B4       fExam.TfrmExams.UpdateControls
+ 0001:0018D294       fExam.TfrmExams.UpdateNewItemStr
+ 0001:001703F8       fFindingTemplates..TfrmFindingTemplates
+ 0001:00170620       fFindingTemplates.FindTemplate
+ 0001:00170828       fFindingTemplates.TfrmFindingTemplates.btnCancelClick
+ 0001:00170840       fFindingTemplates.TfrmFindingTemplates.Find
+ 0001:00170AA0       fFindingTemplates.TfrmFindingTemplates.FormShow
+ 0004:00006540       fFrame..2
+ 0001:00374308       fFrame..TfrmFrame
+ 0001:003755C4       fFrame.CloseCPRS
+ 0004:00006530       fFrame.ctxContextor
+ 0001:0037AB8C       fFrame.ExcuteEC
+ 0001:0037ADCC       fFrame.ExcuteECS
+ 0002:00001B8C       fFrame.fFrame
+ 0001:00384330       fFrame.Finalization
+ 0001:00381B50       fFrame.FindNextBestDFN
+ 0004:0000652C       fFrame.FlaggedPTList
+ 0004:00006520       fFrame.frmFrame
+ 0004:00006544       fFrame.GraphFloat
+ 0003:0000405C       fFrame.IsRunExecuted
+ 0004:00006538       fFrame.LastTab
+ 0004:00006534       fFrame.NextTab
+ 0001:0037F5B8       fFrame.StopProcessingNotifs
+ 0001:0037A7A8       fFrame.Substitute
+ 0001:0037AAD4       fFrame.TakeOutAmps
+ 0001:00380CC4       fFrame.TfrmFrame.AllowCCOWContextChange
+ 0001:0037588C       fFrame.TfrmFrame.AllowContextChangeAll
+ 0001:0037FB4C       fFrame.TfrmFrame.AppActivated
+ 0001:0037FBB4       fFrame.TfrmFrame.AppDeActivated
+ 0001:0038361C       fFrame.TfrmFrame.AppEventsActivate
+ 0001:003836F4       fFrame.TfrmFrame.AppEventsShortCut
+ 0001:003756A4       fFrame.TfrmFrame.AppException
+ 0001:0037C9E4       fFrame.TfrmFrame.ChangeFont
+ 0001:003828BC       fFrame.TfrmFrame.CheckForDifferentPatient
+ 0001:00382A88       fFrame.TfrmFrame.CheckForDifferentUser
+ 0001:00382B10       fFrame.TfrmFrame.CheckHyperlinkResponse
+ 0001:00375B24       fFrame.TfrmFrame.ClearPatient
+ 0001:00377C90       fFrame.TfrmFrame.compAccessTabPageCaptionQuery
+ 0001:0037FC20       fFrame.TfrmFrame.CreateTab
+ 0001:0038156C       fFrame.TfrmFrame.ctxContextorCanceled
+ 0001:00381860       fFrame.TfrmFrame.ctxContextorCommitted
+ 0001:003815A4       fFrame.TfrmFrame.ctxContextorPending
+ 0001:0037A3AC       fFrame.TfrmFrame.DetermineNextTab
+ 0001:003760F0       fFrame.TfrmFrame.DisplayEncounterText
+ 0001:003762EC       fFrame.TfrmFrame.DLLActive
+ 0001:0037A888       fFrame.TfrmFrame.ExpandCommand
+ 0001:00381CEC       fFrame.TfrmFrame.FindBestCCOWDFN
+ 0001:0037CF60       fFrame.TfrmFrame.FitToolbar
+ 0001:00383688       fFrame.TfrmFrame.FocusApplicationTopForm
+ 0001:00380700       fFrame.TfrmFrame.FormActivate
+ 0001:00377DA8       fFrame.TfrmFrame.FormClose
+ 0001:0037765C       fFrame.TfrmFrame.FormCloseQuery
+ 0001:00376398       fFrame.TfrmFrame.FormCreate
+ 0001:00377560       fFrame.TfrmFrame.FormDestroy
+ 0001:0037D838       fFrame.TfrmFrame.FormHelp
+ 0001:003805C0       fFrame.TfrmFrame.FormKeyDown
+ 0001:0037C648       fFrame.TfrmFrame.FormResize
+ 0001:003755AC       fFrame.TfrmFrame.GetTimedOut
+ 0001:00380AF8       fFrame.TfrmFrame.HandleCCOWError
+ 0001:00382D4C       fFrame.TfrmFrame.HideEverything
+ 0001:0037F5A0       fFrame.TfrmFrame.LabInfo1Click
+ 0001:00383A24       fFrame.TfrmFrame.laMHVClick
+ 0001:00383A48       fFrame.TfrmFrame.laVAA2Click
+ 0001:0037BA08       fFrame.TfrmFrame.LoadSizesForUser
+ 0001:0037FA90       fFrame.TfrmFrame.LoadUserPreferences
+ 0001:0037F4AC       fFrame.TfrmFrame.lstCIRNLocationsChange
+ 0001:0037E418       fFrame.TfrmFrame.lstCIRNLocationsClick
+ 0001:003835C8       fFrame.TfrmFrame.lstCIRNLocationsExit
+ 0001:0038319C       fFrame.TfrmFrame.mnuAlertForwardClick
+ 0001:00383124       fFrame.TfrmFrame.mnuAlertRenewClick
+ 0001:003786A8       fFrame.TfrmFrame.mnuChartTabClick
+ 0001:0037D4CC       fFrame.TfrmFrame.mnuEditClick
+ 0001:0037D6CC       fFrame.TfrmFrame.mnuEditCopyClick
+ 0001:0037D6AC       fFrame.TfrmFrame.mnuEditCutClick
+ 0001:0037D6EC       fFrame.TfrmFrame.mnuEditPasteClick
+ 0001:0037D684       fFrame.TfrmFrame.mnuEditUndoClick
+ 0001:00382178       fFrame.TfrmFrame.mnuFileBreakContextClick
+ 0001:0037A508       fFrame.TfrmFrame.mnuFileEncounterClick
+ 0001:0037A6CC       fFrame.TfrmFrame.mnuFileExitClick
+ 0001:003790BC       fFrame.TfrmFrame.mnuFileNextClick
+ 0001:0037F620       fFrame.TfrmFrame.mnuFileNotifRemoveClick
+ 0001:00379CE4       fFrame.TfrmFrame.mnuFileOpenClick
+ 0001:0037D74C       fFrame.TfrmFrame.mnuFilePrintClick
+ 0001:003830C4       fFrame.TfrmFrame.mnuFilePrintSelectedItemsClick
+ 0001:0037F424       fFrame.TfrmFrame.mnuFilePrintSetupClick
+ 0001:0037FAF8       fFrame.TfrmFrame.mnuFileRefreshClick
+ 0001:00382328       fFrame.TfrmFrame.mnuFileResumeContextGetClick
+ 0001:00382548       fFrame.TfrmFrame.mnuFileResumeContextSetClick
+ 0001:0037A530       fFrame.TfrmFrame.mnuFileReviewClick
+ 0001:0037D3C0       fFrame.TfrmFrame.mnuFontSizeClick
+ 0001:00383268       fFrame.TfrmFrame.mnuGECStatusClick
+ 0001:0037B54C       fFrame.TfrmFrame.mnuHelpAboutClick
+ 0001:0037B490       fFrame.TfrmFrame.mnuHelpBrokerClick
+ 0001:0037B4A8       fFrame.TfrmFrame.mnuHelpListsClick
+ 0001:0037B534       fFrame.TfrmFrame.mnuHelpSymbolsClick
+ 0001:00377A08       fFrame.TfrmFrame.mnuToolsClick
+ 0001:00383730       fFrame.TfrmFrame.mnuToolsGraphingClick
+ 0001:0037FA70       fFrame.TfrmFrame.mnuToolsOptionsClick
+ 0001:00383F24       fFrame.TfrmFrame.mnuViewInformationClick
+ 0001:0037A798       fFrame.TfrmFrame.mnuViewPostingsClick
+ 0001:00384128       fFrame.TfrmFrame.NextButtonClick
+ 0001:00384180       fFrame.TfrmFrame.NextButtonMouseDown
+ 0001:003788E8       fFrame.TfrmFrame.PageIDToTab
+ 0001:0037E3F4       fFrame.TfrmFrame.pnlCIRNClick
+ 0001:003839D4       fFrame.TfrmFrame.pnlCIRNMouseDown
+ 0001:003839FC       fFrame.TfrmFrame.pnlCIRNMouseUp
+ 0001:003830A0       fFrame.TfrmFrame.pnlFlagClick
+ 0001:00383508       fFrame.TfrmFrame.pnlFlagEnter
+ 0001:0038354C       fFrame.TfrmFrame.pnlFlagExit
+ 0001:00383050       fFrame.TfrmFrame.pnlFlagMouseDown
+ 0001:00383078       fFrame.TfrmFrame.pnlFlagMouseUp
+ 0001:00380880       fFrame.TfrmFrame.pnlPatientClick
+ 0001:0037B5E0       fFrame.TfrmFrame.pnlPatientMouseDown
+ 0001:0037B6C4       fFrame.TfrmFrame.pnlPatientMouseUp
+ 0001:00380AD4       fFrame.TfrmFrame.pnlPostingsClick
+ 0001:0037B8D8       fFrame.TfrmFrame.pnlPostingsMouseDown
+ 0001:0037B970       fFrame.TfrmFrame.pnlPostingsMouseUp
+ 0001:00380A80       fFrame.TfrmFrame.pnlPrimaryCareClick
+ 0001:0038072C       fFrame.TfrmFrame.pnlPrimaryCareEnter
+ 0001:0038079C       fFrame.TfrmFrame.pnlPrimaryCareExit
+ 0001:0037B7A8       fFrame.TfrmFrame.pnlPrimaryCareMouseDown
+ 0001:0037B840       fFrame.TfrmFrame.pnlPrimaryCareMouseUp
+ 0001:00380AA4       fFrame.TfrmFrame.pnlRemindersClick
+ 0001:0037DFFC       fFrame.TfrmFrame.pnlRemindersMouseDown
+ 0001:0037E040       fFrame.TfrmFrame.pnlRemindersMouseUp
+ 0001:003808C4       fFrame.TfrmFrame.pnlVisitClick
+ 0001:00380A04       fFrame.TfrmFrame.pnlVistaWebClick
+ 0001:00380A30       fFrame.TfrmFrame.pnlVistaWebMouseDown
+ 0001:00380A58       fFrame.TfrmFrame.pnlVistaWebMouseUp
+ 0001:0037F344       fFrame.TfrmFrame.popCIRNCloseClick
+ 0001:0037F384       fFrame.TfrmFrame.popCIRNSelectAllClick
+ 0001:0037F3D4       fFrame.TfrmFrame.popCIRNSelectNoneClick
+ 0001:0037631C       fFrame.TfrmFrame.RefreshFixedStatusWidth
+ 0001:0037DB54       fFrame.TfrmFrame.RemindersChanged
+ 0001:0037FFD8       fFrame.TfrmFrame.ReportsOnlyDisplay
+ 0001:0037C018       fFrame.TfrmFrame.SaveSizesForUser
+ 0001:0037FAE0       fFrame.TfrmFrame.SaveUserPreferences
+ 0001:00383638       fFrame.TfrmFrame.ScreenActiveFormChange
+ 0001:003840E4       fFrame.TfrmFrame.SetActiveTab
+ 0001:00379C0C       fFrame.TfrmFrame.SetBADxList
+ 0001:00377F44       fFrame.TfrmFrame.SetDebugMenu
+ 0001:0037E088       fFrame.TfrmFrame.SetUpCIRN
+ 0001:003841A4       fFrame.TfrmFrame.SetUpNextButton
+ 0001:003789CC       fFrame.TfrmFrame.SetupPatient
+ 0001:003776FC       fFrame.TfrmFrame.SetUserTools
+ 0001:00382EC4       fFrame.TfrmFrame.ShowEverything
+ 0001:0037FF20       fFrame.TfrmFrame.ShowHideChartTabMenus
+ 0001:00377180       fFrame.TfrmFrame.StartCCOWContextor
+ 0001:00378448       fFrame.TfrmFrame.SwitchToPage
+ 0001:0037FF78       fFrame.TfrmFrame.TabExists
+ 0001:00378718       fFrame.TfrmFrame.tabPageChange
+ 0001:00383590       fFrame.TfrmFrame.tabPageMouseUp
+ 0001:0037894C       fFrame.TfrmFrame.TabToPageID
+ 0001:00375618       fFrame.TfrmFrame.TimeOutAction
+ 0001:0037558C       fFrame.TfrmFrame.TimeoutCondition
+ 0001:0037D380       fFrame.TfrmFrame.ToggleMenuItemChecked
+ 0001:0037B100       fFrame.TfrmFrame.ToolClick
+ 0001:00377498       fFrame.TfrmFrame.UMInitiate
+ 0001:00377FC0       fFrame.TfrmFrame.UMNewOrder
+ 0001:003783D8       fFrame.TfrmFrame.UMShowPage
+ 0001:0037B564       fFrame.TfrmFrame.UMStatusText
+ 0001:00381F70       fFrame.TfrmFrame.UpdateCCOWContext
+ 0001:00377A94       fFrame.TfrmFrame.UpdateECSParameter
+ 0001:003801CC       fFrame.TfrmFrame.UpdatePtInfoOnRefresh
+ 0001:00377CE8       fFrame.TfrmFrame.ValidECSUser
+ 0001:00383A6C       fFrame.TfrmFrame.ViewInfo
+ 0001:00378384       fFrame.TfrmFrame.WMSetFocus
+ 0001:0037D91C       fFrame.TfrmFrame.WMSysCommand
+ 0001:00378FFC       fFrame.UpdatePatientInfoForAlert
+ 0004:00006528       fFrame.uRemoteType
+ 0004:00006524       fFrame.uTabList
+ 0004:0000653C       fFrame.uToolsMaxed
+ 0004:0000653D       fFrame.uToolsWarned
+ 0004:0000653E       fFrame.uUseVistaWeb
+ 0004:00004A24       fGAF..2
+ 0001:00184454       fGAF..TfrmGAF
+ 0002:000010D4       fGAF.fGAF
+ 0001:00184F50       fGAF.Finalization
+ 0004:00004A20       fGAF.frmGAF
+ 0001:00184D40       fGAF.TfrmGAF.AllowTabChange
+ 0001:001849EC       fGAF.TfrmGAF.BADData
+ 0001:00184E5C       fGAF.TfrmGAF.btnURLClick
+ 0001:00184D38       fGAF.TfrmGAF.cboGAFProviderExit
+ 0001:001849C4       fGAF.TfrmGAF.cboGAFProviderNeedData
+ 0001:00184D34       fGAF.TfrmGAF.dteGAFExit
+ 0001:00184C54       fGAF.TfrmGAF.edtScoreChange
+ 0001:00184DE0       fGAF.TfrmGAF.FormActivate
+ 0001:00184EB8       fGAF.TfrmGAF.FormCreate
+ 0001:00184E54       fGAF.TfrmGAF.FormShow
+ 0001:00184D58       fGAF.TfrmGAF.GetGAFScore
+ 0001:001847D0       fGAF.TfrmGAF.LoadScores
+ 0001:00184764       fGAF.ValidGAFData
+ 0001:001364A4       fGraphData..TfrmGraphData
+ 0004:000049AC       fGraphData.FGraphActivity
+ 0004:00004928       fGraphData.frmGraphData
+ 0001:0013829C       fGraphData.GetATestGroup
+ 0001:00137E58       fGraphData.GetCurrentSetting
+ 0001:00137E70       fGraphData.GetDefaultInpatientDate
+ 0001:00137E88       fGraphData.GetDefaultOutpatientDate
+ 0001:00137EA0       fGraphData.GetGraphProfiles
+ 0001:001384D4       fGraphData.GetPersonalSetting
+ 0001:001384EC       fGraphData.GetPublicSetting
+ 0001:00136A40       fGraphData.GraphDataOnUser
+ 0001:00138504       fGraphData.GraphPublicEditor
+ 0001:00138510       fGraphData.GraphTurboOn
+ 0004:00004938       fGraphData.GtslAllTypes
+ 0004:0000493C       fGraphData.GtslAllViews
+ 0004:0000494C       fGraphData.GtslCheck
+ 0004:0000492C       fGraphData.GtslData
+ 0004:00004944       fGraphData.GtslDrugClass
+ 0004:00004930       fGraphData.GtslItems
+ 0004:000049A8       fGraphData.GtslLabGroup
+ 0004:00004974       fGraphData.GtslMultiSpec
+ 0004:00004950       fGraphData.GtslNonNum
+ 0004:00004954       fGraphData.GtslNonNumDates
+ 0004:00004960       fGraphData.GtslScratchLab
+ 0004:00004958       fGraphData.GtslScratchSwap
+ 0004:0000495C       fGraphData.GtslScratchTemp
+ 0004:00004984       fGraphData.GtslSelCopyBottom
+ 0004:00004980       fGraphData.GtslSelCopyTop
+ 0004:00004998       fGraphData.GtslSelPrevBottomFloat
+ 0004:0000499C       fGraphData.GtslSelPrevBottomReport
+ 0004:00004990       fGraphData.GtslSelPrevTopFloat
+ 0004:00004994       fGraphData.GtslSelPrevTopReport
+ 0004:00004964       fGraphData.GtslSpec1
+ 0004:00004968       fGraphData.GtslSpec2
+ 0004:0000496C       fGraphData.GtslSpec3
+ 0004:00004970       fGraphData.GtslSpec4
+ 0004:0000497C       fGraphData.GtslTemp
+ 0004:00004978       fGraphData.GtslTempCheck
+ 0004:00004940       fGraphData.GtslTestSpec
+ 0004:00004934       fGraphData.GtslTypes
+ 0004:000049A0       fGraphData.GtslViewPersonal
+ 0004:000049A4       fGraphData.GtslViewPublic
+ 0004:00004948       fGraphData.GtslViews
+ 0004:00004988       fGraphData.GtslZoomHistoryFloat
+ 0004:0000498C       fGraphData.GtslZoomHistoryReport
+ 0001:0013852C       fGraphData.SetCurrentSetting
+ 0001:0013857C       fGraphData.SetDefaultInpatientDate
+ 0001:001385CC       fGraphData.SetDefaultOutpatientDate
+ 0001:00136C88       fGraphData.TfrmGraphData.AllowContextChange
+ 0001:00137104       fGraphData.TfrmGraphData.btnDataClick
+ 0001:001378C4       fGraphData.TfrmGraphData.btnRefreshClick
+ 0001:001378D8       fGraphData.TfrmGraphData.btnTestingClick
+ 0001:00136EB0       fGraphData.TfrmGraphData.ClearGtsl
+ 0001:00137A7C       fGraphData.TfrmGraphData.ClearMemos
+ 0001:00136BAC       fGraphData.TfrmGraphData.ClearPtData
+ 0001:00137ADC       fGraphData.TfrmGraphData.FillMemos
+ 0001:0013861C       fGraphData.TfrmGraphData.FormClose
+ 0001:0013679C       fGraphData.TfrmGraphData.FormCreate
+ 0001:001386A4       fGraphData.TfrmGraphData.FormDestroy
+ 0001:00136FE0       fGraphData.TfrmGraphData.FreeGtsl
+ 0001:001367C0       fGraphData.TfrmGraphData.MakeGraphActivity
+ 0001:00136C8C       fGraphData.TfrmGraphData.MakeGtsl
+ 0001:001378F4       fGraphData.TfrmGraphData.MakeMemos
+ 0001:00136830       fGraphData.TfrmGraphData.MakeUserSettings
+ 0001:00147634       fGraphOthers..TfrmGraphOthers
+ 0001:00147968       fGraphOthers.DialogGraphOthers
+ 0001:00147A9C       fGraphOthers.TfrmGraphOthers.AddTests
+ 0001:001479E0       fGraphOthers.TfrmGraphOthers.cboOthersClick
+ 0001:00147A0C       fGraphOthers.TfrmGraphOthers.cboOthersNeedData
+ 0001:00147A34       fGraphOthers.TfrmGraphOthers.FormShow
+ 0001:00147A70       fGraphOthers.TfrmGraphOthers.lstViewsClick
+ 0001:00147BA0       fGraphProfiles..TfrmGraphProfiles
+ 0001:0014850C       fGraphProfiles.DialogGraphProfiles
+ 0001:00148408       fGraphProfiles.DialogOptionsGraphProfiles
+ 0001:0014C638       fGraphProfiles.TfrmGraphProfiles.AddToList
+ 0001:0014BEBC       fGraphProfiles.TfrmGraphProfiles.AllItemsAfter
+ 0001:0014BB24       fGraphProfiles.TfrmGraphProfiles.AllItemsBefore
+ 0001:0014C9A8       fGraphProfiles.TfrmGraphProfiles.ArrangeList
+ 0001:0014E4EC       fGraphProfiles.TfrmGraphProfiles.AssignHints
+ 0001:0014CBA8       fGraphProfiles.TfrmGraphProfiles.AssignProfile
+ 0001:0014D6A4       fGraphProfiles.TfrmGraphProfiles.AssignProfilePost
+ 0001:0014D45C       fGraphProfiles.TfrmGraphProfiles.AssignProfilePre
+ 0001:0014966C       fGraphProfiles.TfrmGraphProfiles.btnAddAllClick
+ 0001:00149FBC       fGraphProfiles.TfrmGraphProfiles.btnClearClick
+ 0001:0014B010       fGraphProfiles.TfrmGraphProfiles.btnCloseClick
+ 0001:00149708       fGraphProfiles.TfrmGraphProfiles.btnDefinitionsClick
+ 0001:0014A034       fGraphProfiles.TfrmGraphProfiles.btnDeleteClick
+ 0001:001496E4       fGraphProfiles.TfrmGraphProfiles.btnRemoveAllClick
+ 0001:001496CC       fGraphProfiles.TfrmGraphProfiles.btnRemoveOneClick
+ 0001:0014A420       fGraphProfiles.TfrmGraphProfiles.btnRenameClick
+ 0001:0014AA24       fGraphProfiles.TfrmGraphProfiles.btnSaveClick
+ 0001:0014B040       fGraphProfiles.TfrmGraphProfiles.btnViewsClick
+ 0001:00149154       fGraphProfiles.TfrmGraphProfiles.cboAllItemsChange
+ 0001:0014927C       fGraphProfiles.TfrmGraphProfiles.cboAllItemsClick
+ 0001:001493A8       fGraphProfiles.TfrmGraphProfiles.cboAllItemsNeedData
+ 0001:00149068       fGraphProfiles.TfrmGraphProfiles.cboUserClick
+ 0001:0014912C       fGraphProfiles.TfrmGraphProfiles.cboUserNeedData
+ 0001:0014B0C8       fGraphProfiles.TfrmGraphProfiles.CheckPublic
+ 0001:0014B8AC       fGraphProfiles.TfrmGraphProfiles.CheckToClear
+ 0001:0014B420       fGraphProfiles.TfrmGraphProfiles.ComboBoxSetup
+ 0001:0014DAB0       fGraphProfiles.TfrmGraphProfiles.FillSource
+ 0001:00148BA0       fGraphProfiles.TfrmGraphProfiles.FormClose
+ 0001:00148AFC       fGraphProfiles.TfrmGraphProfiles.FormCreate
+ 0001:00148B0C       fGraphProfiles.TfrmGraphProfiles.FormShow
+ 0001:0014F220       fGraphProfiles.TfrmGraphProfiles.GetProfileName
+ 0001:0014F394       fGraphProfiles.TfrmGraphProfiles.IDProfile
+ 0001:0014B1EC       fGraphProfiles.TfrmGraphProfiles.ListBoxSetup
+ 0001:00149450       fGraphProfiles.TfrmGraphProfiles.lstItemsDisplayedChange
+ 0001:001495C8       fGraphProfiles.TfrmGraphProfiles.lstItemsDisplayedDblClick
+ 0001:00148CF0       fGraphProfiles.TfrmGraphProfiles.lstSourcesChange
+ 0001:00149000       fGraphProfiles.TfrmGraphProfiles.lstSourcesDblClick
+ 0001:00148FCC       fGraphProfiles.TfrmGraphProfiles.lstSourcesEnter
+ 0001:00148FE8       fGraphProfiles.TfrmGraphProfiles.lstSourcesExit
+ 0001:0014E3D8       fGraphProfiles.TfrmGraphProfiles.ProfileExists
+ 0001:0014B928       fGraphProfiles.TfrmGraphProfiles.QualifierDelete
+ 0001:00148BB4       fGraphProfiles.TfrmGraphProfiles.radSourceAllClick
+ 0001:0014F1A0       fGraphProfiles.TfrmGraphProfiles.wmNCLButtonDown
+ 0004:000049D8       fGraphs..2
+ 0001:001537F8       fGraphs..TfrmGraphs
+ 0001:00154BE0       fGraphs..TGraphItem
+ 0001:0015D884       fGraphs.AddRow
+ 0001:00167B9C       fGraphs.CheckRef
+ 0002:00001040       fGraphs.fGraphs
+ 0004:000049D5       fGraphs.FHintStop
+ 0004:000049D0       fGraphs.FHintWin
+ 0004:000049D4       fGraphs.FHintWinActive
+ 0001:0016DF1C       fGraphs.Finalization
+ 0001:001562C8       fGraphs.GetWidth
+ 0001:00155EB0       fGraphs.Layout
+ 0001:001563A0       fGraphs.Layout
+ 0001:00155E3C       fGraphs.SetWidth
+ 0001:0015D090       fGraphs.SplitGraphs
+ 0001:001559EC       fGraphs.TfrmGraphs.AddOnLabGroups
+ 0001:00158F9C       fGraphs.TfrmGraphs.AdjustTimeframe
+ 0001:001625B0       fGraphs.TfrmGraphs.AllDetails
+ 0001:0015FF90       fGraphs.TfrmGraphs.AllTypeDate
+ 0001:00165B14       fGraphs.TfrmGraphs.AssignProfile
+ 0001:00166C54       fGraphs.TfrmGraphs.AutoSelect
+ 0001:00168C14       fGraphs.TfrmGraphs.BaseResize
+ 0001:00169348       fGraphs.TfrmGraphs.BorderValue
+ 0001:00158F10       fGraphs.TfrmGraphs.BottomAxis
+ 0001:00169378       fGraphs.TfrmGraphs.BPAdd
+ 0001:00169500       fGraphs.TfrmGraphs.BPCheck
+ 0001:00168548       fGraphs.TfrmGraphs.BPValue
+ 0001:0015676C       fGraphs.TfrmGraphs.btnChangeSettingsClick
+ 0001:00156764       fGraphs.TfrmGraphs.btnCloseClick
+ 0001:001646E0       fGraphs.TfrmGraphs.btnGraphSelectionsClick
+ 0001:00163C50       fGraphs.TfrmGraphs.cboDateRangeChange
+ 0001:0016DAE8       fGraphs.TfrmGraphs.cboDateRangeDropDown
+ 0001:0015F7A4       fGraphs.TfrmGraphs.ChangeStyle
+ 0001:00168158       fGraphs.TfrmGraphs.chartBaseClickLegend
+ 0001:0015F9B0       fGraphs.TfrmGraphs.chartBaseClickSeries
+ 0001:001614A8       fGraphs.TfrmGraphs.chartBaseMouseDown
+ 0001:0016B9B8       fGraphs.TfrmGraphs.chartBaseMouseMove
+ 0001:0016BC00       fGraphs.TfrmGraphs.chartBaseMouseUp
+ 0001:0015F3C8       fGraphs.TfrmGraphs.ChartColor
+ 0001:00159360       fGraphs.TfrmGraphs.ChartOnUndoZoom
+ 0001:001590C4       fGraphs.TfrmGraphs.ChartOnZoom
+ 0001:0015F494       fGraphs.TfrmGraphs.ChartStyle
+ 0001:0016B3FC       fGraphs.TfrmGraphs.CheckMedNum
+ 0001:001666A4       fGraphs.TfrmGraphs.CheckProfile
+ 0001:00164FE4       fGraphs.TfrmGraphs.CheckToAddData
+ 0001:00156B9C       fGraphs.TfrmGraphs.chkDualViewsClick
+ 0001:00158E94       fGraphs.TfrmGraphs.chkItemsBottomClick
+ 0001:0016DC28       fGraphs.TfrmGraphs.chkItemsBottomEnter
+ 0001:00158E1C       fGraphs.TfrmGraphs.chkItemsTopClick
+ 0001:00162F0C       fGraphs.TfrmGraphs.CreateExcelPatientHeader
+ 0001:00162B00       fGraphs.TfrmGraphs.CreatePatientHeader
+ 0001:00155D58       fGraphs.TfrmGraphs.DateDefaults
+ 0001:0015753C       fGraphs.TfrmGraphs.DateRangeItems
+ 0001:0015793C       fGraphs.TfrmGraphs.DateRangeMultiItems
+ 0001:00163F2C       fGraphs.TfrmGraphs.DateSteps
+ 0001:00163A54       fGraphs.TfrmGraphs.DCName
+ 0001:00158958       fGraphs.TfrmGraphs.DisplayData
+ 0001:00158C48       fGraphs.TfrmGraphs.DisplayDataInfo
+ 0001:001649E0       fGraphs.TfrmGraphs.DisplayFreeText
+ 0001:0015882C       fGraphs.TfrmGraphs.DisplayType
+ 0001:001663F0       fGraphs.TfrmGraphs.ExpandTax
+ 0001:00158224       fGraphs.TfrmGraphs.FastLab
+ 0001:00157A90       fGraphs.TfrmGraphs.FileNameX
+ 0001:0015541C       fGraphs.TfrmGraphs.FillViews
+ 0001:00156E94       fGraphs.TfrmGraphs.FilterListView
+ 0001:00169004       fGraphs.TfrmGraphs.FixedDates
+ 0001:00168ED8       fGraphs.TfrmGraphs.FMCorrectedDate
+ 0001:0016350C       fGraphs.TfrmGraphs.FMToDateTime
+ 0001:0016BC2C       fGraphs.TfrmGraphs.FormatHint
+ 0001:00155E00       fGraphs.TfrmGraphs.FormClose
+ 0001:00154C4C       fGraphs.TfrmGraphs.FormCreate
+ 0001:0016DB4C       fGraphs.TfrmGraphs.FormDestroy
+ 0001:00155C54       fGraphs.TfrmGraphs.FormShow
+ 0001:001630B0       fGraphs.TfrmGraphs.GetData
+ 0001:00156078       fGraphs.TfrmGraphs.GetSize
+ 0001:0015A994       fGraphs.TfrmGraphs.GraphBoundry
+ 0001:001599D4       fGraphs.TfrmGraphs.GraphFooter
+ 0001:0015CBD8       fGraphs.TfrmGraphs.GraphSwap
+ 0001:0015CCE0       fGraphs.TfrmGraphs.GraphSwitch
+ 0001:00163714       fGraphs.TfrmGraphs.GraphTypeNum
+ 0001:0016C338       fGraphs.TfrmGraphs.HideDates
+ 0001:001692D0       fGraphs.TfrmGraphs.HideGraphs
+ 0001:001690B4       fGraphs.TfrmGraphs.HighLow
+ 0001:00163878       fGraphs.TfrmGraphs.HSAbbrev
+ 0001:0016C280       fGraphs.TfrmGraphs.InactivateHint
+ 0001:0016C438       fGraphs.TfrmGraphs.InfoMessage
+ 0001:00157F80       fGraphs.TfrmGraphs.InitialData
+ 0001:0015518C       fGraphs.TfrmGraphs.Initialize
+ 0001:00155418       fGraphs.TfrmGraphs.InitialRetain
+ 0001:001643A4       fGraphs.TfrmGraphs.InvVal
+ 0001:001612C0       fGraphs.TfrmGraphs.ItemCheck
+ 0001:001609A0       fGraphs.TfrmGraphs.ItemDateRange
+ 0001:00157D28       fGraphs.TfrmGraphs.ItemName
+ 0001:00164CD4       fGraphs.TfrmGraphs.ItemsClick
+ 0001:00167458       fGraphs.TfrmGraphs.LabAdd
+ 0001:00167588       fGraphs.TfrmGraphs.LabCheck
+ 0001:0016765C       fGraphs.TfrmGraphs.LabData
+ 0001:001618A8       fGraphs.TfrmGraphs.LabelClicks
+ 0001:00158598       fGraphs.TfrmGraphs.LoadDateRange
+ 0001:00166BB8       fGraphs.TfrmGraphs.LoadDisplayCheck
+ 0001:00156C4C       fGraphs.TfrmGraphs.LoadListView
+ 0001:001586CC       fGraphs.TfrmGraphs.LoadType
+ 0001:0016D78C       fGraphs.TfrmGraphs.lstViewsBottomChange
+ 0001:0016D7D8       fGraphs.TfrmGraphs.lstViewsBottomEnter
+ 0001:0016D7E8       fGraphs.TfrmGraphs.lstViewsBottomMouseDown
+ 0001:0016D72C       fGraphs.TfrmGraphs.lstViewsTopChange
+ 0001:0016D774       fGraphs.TfrmGraphs.lstViewsTopEnter
+ 0001:0016D784       fGraphs.TfrmGraphs.lstViewsTopMouseDown
+ 0001:0016D7F0       fGraphs.TfrmGraphs.lvwItemsBottomChange
+ 0001:0016531C       fGraphs.TfrmGraphs.lvwItemsBottomClick
+ 0001:0016468C       fGraphs.TfrmGraphs.lvwItemsBottomColumnClick
+ 0001:0016456C       fGraphs.TfrmGraphs.lvwItemsBottomCompare
+ 0001:0016DC6C       fGraphs.TfrmGraphs.lvwItemsBottomEnter
+ 0001:0016D834       fGraphs.TfrmGraphs.lvwItemsTopChange
+ 0001:0016D878       fGraphs.TfrmGraphs.lvwItemsTopClick
+ 0001:00164518       fGraphs.TfrmGraphs.lvwItemsTopColumnClick
+ 0001:001643F8       fGraphs.TfrmGraphs.lvwItemsTopCompare
+ 0001:0016DA74       fGraphs.TfrmGraphs.lvwItemsTopEnter
+ 0001:0016DAC0       fGraphs.TfrmGraphs.lvwItemsTopKeyDown
+ 0001:0016A10C       fGraphs.TfrmGraphs.MakeBarSeries
+ 0001:0015B2E8       fGraphs.TfrmGraphs.MakeChart
+ 0001:0015B990       fGraphs.TfrmGraphs.MakeComments
+ 0001:0015C770       fGraphs.TfrmGraphs.MakeDateline
+ 0001:0016A484       fGraphs.TfrmGraphs.MakeGanttSeries
+ 0001:0016989C       fGraphs.TfrmGraphs.MakeLineSeries
+ 0001:0015BA20       fGraphs.TfrmGraphs.MakeNonNumerics
+ 0001:0015BD8C       fGraphs.TfrmGraphs.MakeNonNumSeries
+ 0001:0015B940       fGraphs.TfrmGraphs.MakeOtherSeries
+ 0001:00169EC4       fGraphs.TfrmGraphs.MakePointSeries
+ 0001:00159A90       fGraphs.TfrmGraphs.MakeSeparate
+ 0001:00159F28       fGraphs.TfrmGraphs.MakeSeparateItems
+ 0001:0015B854       fGraphs.TfrmGraphs.MakeSeriesBP
+ 0001:0015B45C       fGraphs.TfrmGraphs.MakeSeriesInfo
+ 0001:0015B5A0       fGraphs.TfrmGraphs.MakeSeriesPoint
+ 0001:0015B684       fGraphs.TfrmGraphs.MakeSeriesRef
+ 0001:0015A5D4       fGraphs.TfrmGraphs.MakeTogether
+ 0001:0015AEE4       fGraphs.TfrmGraphs.MakeTogetherAnyLines
+ 0001:0015A488       fGraphs.TfrmGraphs.MakeTogetherMaybe
+ 0001:0015AAFC       fGraphs.TfrmGraphs.MakeTogetherNoLines
+ 0001:0015AD08       fGraphs.TfrmGraphs.MakeTogetherOnlyLines
+ 0001:0016A850       fGraphs.TfrmGraphs.MakeVisitGanttSeries
+ 0001:0016DD1C       fGraphs.TfrmGraphs.memBottomEnter
+ 0001:0016DD30       fGraphs.TfrmGraphs.memBottomExit
+ 0001:0016DE30       fGraphs.TfrmGraphs.memBottomKeyDown
+ 0001:0016DCF4       fGraphs.TfrmGraphs.memTopEnter
+ 0001:0016DD08       fGraphs.TfrmGraphs.memTopExit
+ 0001:0016DD44       fGraphs.TfrmGraphs.memTopKeyDown
+ 0001:00168708       fGraphs.TfrmGraphs.mnuCustomClick
+ 0001:0016874C       fGraphs.TfrmGraphs.mnuGraphDataClick
+ 0001:0016875C       fGraphs.TfrmGraphs.mnuMHasNumeric1Click
+ 0001:0015D3C8       fGraphs.TfrmGraphs.mnuPopGraph3DClick
+ 0001:0015D700       fGraphs.TfrmGraphs.mnuPopGraphClearClick
+ 0001:0015D83C       fGraphs.TfrmGraphs.mnuPopGraphDatesClick
+ 0001:0016224C       fGraphs.TfrmGraphs.mnuPopGraphDetailsClick
+ 0001:0015D854       fGraphs.TfrmGraphs.mnuPopGraphDualViewsClick
+ 0001:0015DAA4       fGraphs.TfrmGraphs.mnuPopGraphExportClick
+ 0001:0016DB34       fGraphs.TfrmGraphs.mnuPopGraphFixedClick
+ 0001:0015F378       fGraphs.TfrmGraphs.mnuPopGraphGradientClick
+ 0001:0015F398       fGraphs.TfrmGraphs.mnuPopGraphHintsClick
+ 0001:0015D750       fGraphs.TfrmGraphs.mnuPopGraphHorizontalClick
+ 0001:00160F28       fGraphs.TfrmGraphs.mnuPopGraphIsolateClick
+ 0001:0015F3B0       fGraphs.TfrmGraphs.mnuPopGraphLegendClick
+ 0001:0015D3B0       fGraphs.TfrmGraphs.mnuPopGraphLinesClick
+ 0001:0016C7B0       fGraphs.TfrmGraphs.mnuPopGraphPrintClick
+ 0001:00168A3C       fGraphs.TfrmGraphs.mnuPopGraphRemoveClick
+ 0001:00168768       fGraphs.TfrmGraphs.mnuPopGraphResetClick
+ 0001:0015F318       fGraphs.TfrmGraphs.mnuPopGraphSeparate1Click
+ 0001:0015D628       fGraphs.TfrmGraphs.mnuPopGraphSortClick
+ 0001:0015CFE0       fGraphs.TfrmGraphs.mnuPopGraphSplitClick
+ 0001:0016C294       fGraphs.TfrmGraphs.mnuPopGraphStayOnTopClick
+ 0001:00161F28       fGraphs.TfrmGraphs.mnuPopGraphStuffPopup
+ 0001:0015CA68       fGraphs.TfrmGraphs.mnuPopGraphSwapClick
+ 0001:00168BD8       fGraphs.TfrmGraphs.mnuPopGraphTodayClick
+ 0001:0015D3E0       fGraphs.TfrmGraphs.mnuPopGraphValueMarksClick
+ 0001:0015D610       fGraphs.TfrmGraphs.mnuPopGraphValuesClick
+ 0001:0015D784       fGraphs.TfrmGraphs.mnuPopGraphVerticalClick
+ 0001:0015D7B8       fGraphs.TfrmGraphs.mnuPopGraphViewDefinitionClick
+ 0001:0016C4AC       fGraphs.TfrmGraphs.mnuPopGraphZoomBackClick
+ 0001:00161738       fGraphs.TfrmGraphs.MouseClicks
+ 0001:0015C988       fGraphs.TfrmGraphs.NextColor
+ 0001:00168CC8       fGraphs.TfrmGraphs.NextPointerStyle
+ 0001:00169784       fGraphs.TfrmGraphs.NonNumSave
+ 0001:0016AB8C       fGraphs.TfrmGraphs.NonNumText
+ 0001:00162A00       fGraphs.TfrmGraphs.NotifyApps
+ 0001:00169618       fGraphs.TfrmGraphs.NumAdd
+ 0001:001627C4       fGraphs.TfrmGraphs.OneDayTypeDetails
+ 0001:0015A310       fGraphs.TfrmGraphs.PadLeftEvent
+ 0001:0015A3F0       fGraphs.TfrmGraphs.PadLeftNonNumeric
+ 0001:0015C34C       fGraphs.TfrmGraphs.PadNonNum
+ 0001:00169588       fGraphs.TfrmGraphs.PainAdd
+ 0001:00168C9C       fGraphs.TfrmGraphs.pnlScrollTopBaseResize
+ 0001:0015C660       fGraphs.TfrmGraphs.PortionSize
+ 0001:00165D64       fGraphs.TfrmGraphs.ProfileName
+ 0001:00167958       fGraphs.TfrmGraphs.RefUnits
+ 0001:00167FA8       fGraphs.TfrmGraphs.ResetSpec
+ 0001:0016B57C       fGraphs.TfrmGraphs.ResultValue
+ 0001:0016551C       fGraphs.TfrmGraphs.SelCopy
+ 0001:0015D2E0       fGraphs.TfrmGraphs.SelectItem
+ 0001:00167E94       fGraphs.TfrmGraphs.SelectRef
+ 0001:0016557C       fGraphs.TfrmGraphs.SelReset
+ 0001:001687A0       fGraphs.TfrmGraphs.serDatelineTopGetMarkText
+ 0001:0015FAC8       fGraphs.TfrmGraphs.SeriesClicks
+ 0001:00159754       fGraphs.TfrmGraphs.SeriesForLabels
+ 0001:0016DB54       fGraphs.TfrmGraphs.SetFontSize
+ 0001:00165C00       fGraphs.TfrmGraphs.SetProfile
+ 0001:001565CC       fGraphs.TfrmGraphs.SetSize
+ 0001:00154EB0       fGraphs.TfrmGraphs.SetupFields
+ 0001:0015B208       fGraphs.TfrmGraphs.SingleLabTest
+ 0001:00159570       fGraphs.TfrmGraphs.SizeDates
+ 0001:0015C850       fGraphs.TfrmGraphs.SizeTogether
+ 0001:001572BC       fGraphs.TfrmGraphs.SortListView
+ 0001:00155C30       fGraphs.TfrmGraphs.SourceContext
+ 0001:001550B0       fGraphs.TfrmGraphs.SourcesDefault
+ 0001:00166E48       fGraphs.TfrmGraphs.SpecCheck
+ 0001:001670B0       fGraphs.TfrmGraphs.SpecSet
+ 0001:0016AB68       fGraphs.TfrmGraphs.splGraphsMoved
+ 0001:0015D138       fGraphs.TfrmGraphs.SplitClick
+ 0001:00163B84       fGraphs.TfrmGraphs.splItemsBottomMoved
+ 0001:00163BD4       fGraphs.TfrmGraphs.splItemsTopMoved
+ 0001:00163C24       fGraphs.TfrmGraphs.splViewsTopMoved
+ 0001:0015C108       fGraphs.TfrmGraphs.StackNonNum
+ 0001:0016C2E0       fGraphs.TfrmGraphs.StayOnTop
+ 0001:00164338       fGraphs.TfrmGraphs.StdDev
+ 0001:00157E4C       fGraphs.TfrmGraphs.Switch
+ 0001:00163960       fGraphs.TfrmGraphs.TempCheck
+ 0001:00160488       fGraphs.TfrmGraphs.TempData
+ 0001:0016C040       fGraphs.TfrmGraphs.timHintPauseTimer
+ 0001:00159D10       fGraphs.TfrmGraphs.TitleInfo
+ 0001:001584A0       fGraphs.TfrmGraphs.TypeIsDisplayed
+ 0001:001583D0       fGraphs.TfrmGraphs.TypeIsLoaded
+ 0001:00157BF8       fGraphs.TfrmGraphs.TypeString
+ 0001:0016DCDC       fGraphs.TfrmGraphs.UpdateAccessabilityActions
+ 0001:001577FC       fGraphs.TfrmGraphs.UpdateView
+ 0001:0016B218       fGraphs.TfrmGraphs.ValueDates
+ 0001:0016AE70       fGraphs.TfrmGraphs.ValueText
+ 0001:001660A8       fGraphs.TfrmGraphs.ViewDefinition
+ 0001:001656BC       fGraphs.TfrmGraphs.ViewsChange
+ 0001:00164A88       fGraphs.TfrmGraphs.ViewSelections
+ 0001:0016C6D4       fGraphs.TfrmGraphs.ZoomTo
+ 0001:0016C4F8       fGraphs.TfrmGraphs.ZoomUpdate
+ 0001:0016C5D0       fGraphs.TfrmGraphs.ZoomUpdateInfo
+ 0001:0016BF34       fGraphs.TitleOK
+ 0001:0014F52C       fGraphSettings..TfrmGraphSettings
+ 0001:0014FDF8       fGraphSettings.DialogGraphSettings
+ 0001:0014FBE8       fGraphSettings.DialogOptionsGraphSettings
+ 0001:00150E94       fGraphSettings.FileNameX
+ 0004:000049CC       fGraphSettings.frmGraphSettings
+ 0001:00152B94       fGraphSettings.TfrmGraphSettings.AssignHints
+ 0001:001510E4       fGraphSettings.TfrmGraphSettings.btnAllClick
+ 0001:00151124       fGraphSettings.TfrmGraphSettings.btnCloseClick
+ 0001:001514F4       fGraphSettings.TfrmGraphSettings.btnPublicClick
+ 0001:00150128       fGraphSettings.TfrmGraphSettings.ChangeSettings
+ 0001:00150478       fGraphSettings.TfrmGraphSettings.ChangeSources
+ 0001:001519F8       fGraphSettings.TfrmGraphSettings.CheckSetting
+ 0001:001518A4       fGraphSettings.TfrmGraphSettings.chklstOptionsClickCheck
+ 0001:0015069C       fGraphSettings.TfrmGraphSettings.Conversion
+ 0001:0015118C       fGraphSettings.TfrmGraphSettings.DisplaySettings
+ 0001:001537E4       fGraphSettings.TfrmGraphSettings.FormClose
+ 0001:00150FF8       fGraphSettings.TfrmGraphSettings.FormCreate
+ 0001:00152B74       fGraphSettings.TfrmGraphSettings.FormShow
+ 0001:00150DD8       fGraphSettings.TfrmGraphSettings.GetTypeList
+ 0001:00151ACC       fGraphSettings.TfrmGraphSettings.SaveClick
+ 0001:00150820       fGraphSettings.TfrmGraphSettings.SetSettings
+ 0001:00150BD0       fGraphSettings.TfrmGraphSettings.SetSources
+ 0001:00151D80       fGraphSettings.TfrmGraphSettings.spnMaxGraphsClick
+ 0001:001521E8       fGraphSettings.TfrmGraphSettings.spnMaxSelectClick
+ 0001:00152184       fGraphSettings.TfrmGraphSettings.spnMinGraphHeightClick
+ 0001:00151DE4       fGraphSettings.TfrmGraphSettings.txtMaxGraphsChange
+ 0001:00151FD4       fGraphSettings.TfrmGraphSettings.txtMaxGraphsExit
+ 0001:00152158       fGraphSettings.TfrmGraphSettings.txtMaxGraphsKeyPress
+ 0001:00152474       fGraphSettings.TfrmGraphSettings.txtMaxSelectChange
+ 0001:0015288C       fGraphSettings.TfrmGraphSettings.txtMaxSelectExit
+ 0001:00152AF8       fGraphSettings.TfrmGraphSettings.txtMaxSelectKeyPress
+ 0001:0015224C       fGraphSettings.TfrmGraphSettings.txtMinGraphHeightChange
+ 0001:0015269C       fGraphSettings.TfrmGraphSettings.txtMinGraphHeightExit
+ 0001:00152A7C       fGraphSettings.TfrmGraphSettings.txtMinGraphHeightKeyPress
+ 0001:00153764       fGraphSettings.TfrmGraphSettings.wmNCLButtonDown
+ 0004:00004A5C       fHealthFactor..2
+ 0001:0018A544       fHealthFactor..TfrmHealthFactors
+ 0002:00001160       fHealthFactor.fHealthFactor
+ 0001:0018AA70       fHealthFactor.Finalization
+ 0004:00004A58       fHealthFactor.frmHealthFactors
+ 0001:0018A768       fHealthFactor.TfrmHealthFactors.cboHealthLevelChange
+ 0001:0018A838       fHealthFactor.TfrmHealthFactors.FormCreate
+ 0001:0018A8CC       fHealthFactor.TfrmHealthFactors.UpdateControls
+ 0001:0018A8AC       fHealthFactor.TfrmHealthFactors.UpdateNewItemStr
+ 0001:0018AAA0       fHFSearch..TfrmHFSearch
+ 0001:0018AD60       fHFSearch.HFLookup
+ 0001:0018B2DC       fHFSearch.TfrmHFSearch.btnOKClick
+ 0001:0018ADD0       fHFSearch.TfrmHFSearch.cbxSearchChange
+ 0001:0018AFF0       fHFSearch.TfrmHFSearch.FormCreate
+ 0001:0018B400       fHFSearch.TfrmHFSearch.tvSearchChange
+ 0001:0018B358       fHFSearch.TfrmHFSearch.tvSearchDblClick
+ 0001:0018B360       fHFSearch.TfrmHFSearch.tvSearchGetImageIndex
+ 0001:0018B4EC       fHFSearch.TfrmHFSearch.UpdateCat
+ 0001:00134CC0       fHSplit..TfrmHSplit
+ 0001:001972B8       fIconLegend..TfrmIconLegend
+ 0003:0000371C       fIconLegend.FirstSize
+ 0003:00003718       fIconLegend.frmIconLegend
+ 0004:00004B48       fIconLegend.LastX
+ 0004:00004B4C       fIconLegend.LastY
+ 0001:00197A14       fIconLegend.ShowIconLegend
+ 0001:00197AA0       fIconLegend.TfrmIconLegend.btnOKClick
+ 0001:00197B2C       fIconLegend.TfrmIconLegend.FormClose
+ 0001:00197B30       fIconLegend.TfrmIconLegend.FormDestroy
+ 0001:00197C90       fIconLegend.TfrmIconLegend.FormKeyDown
+ 0001:00197B54       fIconLegend.TfrmIconLegend.SetFontSize
+ 0001:00197AA8       fIconLegend.TfrmIconLegend.ShowTab
+ 0001:00197C0C       fIconLegend.TfrmIconLegend.SnapLabels
+ 0004:00004A44       fImmunization..2
+ 0001:00188F4C       fImmunization..TfrmImmunizations
+ 0002:00001124       fImmunization.fImmunization
+ 0001:0018978C       fImmunization.Finalization
+ 0004:00004A40       fImmunization.frmImmunizations
+ 0001:001892B0       fImmunization.TfrmImmunizations.cboImmReactionChange
+ 0001:001891E0       fImmunization.TfrmImmunizations.cboImmSeriesChange
+ 0001:00189380       fImmunization.TfrmImmunizations.ckbContraClick
+ 0001:001893F4       fImmunization.TfrmImmunizations.FormCreate
+ 0001:001894E0       fImmunization.TfrmImmunizations.UpdateControls
+ 0001:00189470       fImmunization.TfrmImmunizations.UpdateNewItemStr
+ 0001:002741B8       fIVRoutes..TfrmIVRoutes
+ 0004:00005F64       fIVRoutes.frmIVRoutes
+ 0001:002743F4       fIVRoutes.ShowOtherRoutes
+ 0001:002744E0       fIVRoutes.TfrmIVRoutes.btnCancelClick
+ 0001:00274504       fIVRoutes.TfrmIVRoutes.BtnOKClick
+ 0001:0027457C       fIVRoutes.TfrmIVRoutes.FormCreate
+ 0001:00274598       fIVRoutes.TfrmIVRoutes.FormDestroy
+ 0001:0029664C       fLabCollTimes..TfrmLabCollectTimes
+ 0001:00296900       fLabCollTimes.GetFutureLabTime
+ 0001:002969D0       fLabCollTimes.TfrmLabCollectTimes.calLabCollectChange
+ 0001:00296B18       fLabCollTimes.TfrmLabCollectTimes.calMonthClick
+ 0001:00296B5C       fLabCollTimes.TfrmLabCollectTimes.calMonthKeyDown
+ 0001:00296B00       fLabCollTimes.TfrmLabCollectTimes.cmdCancelClick
+ 0001:00296A1C       fLabCollTimes.TfrmLabCollectTimes.cmdOKClick
+ 0001:00296B54       fLabCollTimes.TfrmLabCollectTimes.FormCreate
+ 0001:0035F3B8       fLabInfo..TfrmLabInfo
+ 0001:0035F5E0       fLabInfo.ExecuteLabInfo
+ 0004:000064DC       fLabInfo.frmLabInfo
+ 0001:0035F660       fLabInfo.TfrmLabInfo.btnOKClick
+ 0001:0035F6CC       fLabInfo.TfrmLabInfo.cboTestsClick
+ 0001:0035F6A4       fLabInfo.TfrmLabInfo.cboTestsNeedData
+ 0001:0035F670       fLabInfo.TfrmLabInfo.FormCreate
+ 0001:00345134       fLabPrint..TfrmLabPrint
+ 0001:0034542C       fLabPrint.PrintLabs
+ 0001:00345834       fLabPrint.StringPad
+ 0001:00345740       fLabPrint.TfrmLabPrint.cboDeviceChange
+ 0001:0034580C       fLabPrint.TfrmLabPrint.cboDeviceNeedData
+ 0001:003475D4       fLabPrint.TfrmLabPrint.cmdCancelClick
+ 0001:003458DC       fLabPrint.TfrmLabPrint.cmdOKClick
+ 0001:00345688       fLabPrint.TfrmLabPrint.DisplaySelectDevice
+ 0001:00346C38       fLabPrint.TfrmLabPrint.FindVType
+ 0004:000064AC       fLabs..3
+ 0001:00349F9C       fLabs..TfrmLabs
+ 0001:00349EEC       fLabs..TGrdLab508Manager
+ 0004:000064D4       fLabs.ColumnSortForward
+ 0004:000064D0       fLabs.ColumnToSort
+ 0001:003551D0       fLabs.CompareValues
+ 0001:0035D5C0       fLabs.Finalization
+ 0002:00001A4C       fLabs.fLabs
+ 0004:00006438       fLabs.frmLabs
+ 0001:003535B8       fLabs.OkFloatValue
+ 0001:0034CF14       fLabs.TfrmLabs.AlignList
+ 0001:0034B740       fLabs.TfrmLabs.AllowContextChange
+ 0001:00357468       fLabs.TfrmLabs.BeginEndDates
+ 0001:00354418       fLabs.TfrmLabs.chk3DClick
+ 0001:0035D014       fLabs.TfrmLabs.ChkBrowser
+ 0001:00355F64       fLabs.TfrmLabs.chkGraph3DClick
+ 0001:00355F40       fLabs.TfrmLabs.chkGraphValuesClick
+ 0001:00355F84       fLabs.TfrmLabs.chkGraphZoomClick
+ 0001:00356150       fLabs.TfrmLabs.chkMaxFreqClick
+ 0001:003543F4       fLabs.TfrmLabs.chkValuesClick
+ 0001:00356964       fLabs.TfrmLabs.chkZoomClick
+ 0001:00356DDC       fLabs.TfrmLabs.chtChartClickLegend
+ 0001:00356CAC       fLabs.TfrmLabs.chtChartClickSeries
+ 0001:00356C84       fLabs.TfrmLabs.chtChartMouseDown
+ 0001:003569D0       fLabs.TfrmLabs.chtChartUndoZoom
+ 0001:0034B8B0       fLabs.TfrmLabs.ClearPtData
+ 0001:0035335C       fLabs.TfrmLabs.cmdNextClick
+ 0001:003540C0       fLabs.TfrmLabs.cmdOldClick
+ 0001:0035122C       fLabs.TfrmLabs.cmdOtherTestsClick
+ 0001:00353488       fLabs.TfrmLabs.cmdPrevClick
+ 0001:00354010       fLabs.TfrmLabs.cmdRecentClick
+ 0001:0035D034       fLabs.TfrmLabs.CommonComponentVisible
+ 0001:00354A98       fLabs.TfrmLabs.Copy1Click
+ 0001:00354C98       fLabs.TfrmLabs.Copy2Click
+ 0001:0034C9D0       fLabs.TfrmLabs.DisplayHeading
+ 0001:0034B968       fLabs.TfrmLabs.DisplayPage
+ 0001:003528B0       fLabs.TfrmLabs.FillComments
+ 0001:00352530       fLabs.TfrmLabs.FillGrid
+ 0001:003541EC       fLabs.TfrmLabs.FMToDateTime
+ 0001:0034B400       fLabs.TfrmLabs.FormCreate
+ 0001:0035238C       fLabs.TfrmLabs.FormDestroy
+ 0001:00354154       fLabs.TfrmLabs.FormResize
+ 0001:003562DC       fLabs.TfrmLabs.FreezeText1Click
+ 0001:00352A68       fLabs.TfrmLabs.GetInterimGrid
+ 0001:00353F0C       fLabs.TfrmLabs.GetStartStop
+ 0001:0035AD80       fLabs.TfrmLabs.GoRemote
+ 0001:0035C1D8       fLabs.TfrmLabs.GoRemoteOld
+ 0001:0035621C       fLabs.TfrmLabs.GotoBottom1Click
+ 0001:003561F0       fLabs.TfrmLabs.GotoTop1Click
+ 0001:00354438       fLabs.TfrmLabs.GraphChart
+ 0001:00351234       fLabs.TfrmLabs.GraphList
+ 0001:0035224C       fLabs.TfrmLabs.GridComments
+ 0001:003514BC       fLabs.TfrmLabs.HGrid
+ 0001:0034FA90       fLabs.TfrmLabs.lblDateEnter
+ 0001:0034BE74       fLabs.TfrmLabs.LoadListView
+ 0001:0034D080       fLabs.TfrmLabs.LoadTreeView
+ 0001:0034FB1C       fLabs.TfrmLabs.lstDatesClick
+ 0001:0034D4E0       fLabs.TfrmLabs.lstHeadersClick
+ 0001:0034D544       fLabs.TfrmLabs.lstQualifierClick
+ 0001:00354A1C       fLabs.TfrmLabs.lstTestGraphClick
+ 0001:00354CB4       fLabs.TfrmLabs.lvReportsColumnClick
+ 0001:003554C0       fLabs.TfrmLabs.lvReportsCompare
+ 0001:00355570       fLabs.TfrmLabs.lvReportsKeyUp
+ 0001:003555AC       fLabs.TfrmLabs.lvReportsSelectItem
+ 0001:0035D320       fLabs.TfrmLabs.Memo1KeyUp
+ 0001:003541C8       fLabs.TfrmLabs.pnlRightResize
+ 0001:00356BA0       fLabs.TfrmLabs.pop3DClick
+ 0001:003569F0       fLabs.TfrmLabs.popChartPopup
+ 0001:003569E4       fLabs.TfrmLabs.popCopyClick
+ 0001:00356E94       fLabs.TfrmLabs.popDetailsClick
+ 0001:003572F4       fLabs.TfrmLabs.popPrintClick
+ 0001:0035647C       fLabs.TfrmLabs.PopupMenu1Popup
+ 0001:00356B38       fLabs.TfrmLabs.popValuesClick
+ 0001:00356C70       fLabs.TfrmLabs.popZoomBackClick
+ 0001:00356C08       fLabs.TfrmLabs.popZoomClick
+ 0001:00354A88       fLabs.TfrmLabs.Print1Click
+ 0001:00354CA4       fLabs.TfrmLabs.Print2Click
+ 0001:00357308       fLabs.TfrmLabs.PrintLabGraph
+ 0001:0035658C       fLabs.TfrmLabs.ProcessNotifications
+ 0001:00354858       fLabs.TfrmLabs.ragCorGClick
+ 0001:00354830       fLabs.TfrmLabs.ragHorVClick
+ 0001:0034AD34       fLabs.TfrmLabs.RequestPrint
+ 0001:00355EEC       fLabs.TfrmLabs.SelectAll1Click
+ 0001:00355F34       fLabs.TfrmLabs.SelectAll2Click
+ 0001:0034BE5C       fLabs.TfrmLabs.SetFontSize
+ 0001:0035D28C       fLabs.TfrmLabs.ShowTabControl
+ 0001:0035D2DC       fLabs.TfrmLabs.Splitter1CanResize
+ 0001:0035D2F4       fLabs.TfrmLabs.sptHorzRightCanResize
+ 0001:0035D308       fLabs.TfrmLabs.sptHorzRightMoved
+ 0001:0035C9AC       fLabs.TfrmLabs.TabControl1Change
+ 0001:003576C4       fLabs.TfrmLabs.Timer1Timer
+ 0001:00357A28       fLabs.TfrmLabs.tvReportsClick
+ 0001:0035AD2C       fLabs.TfrmLabs.tvReportsCollapsing
+ 0001:0035AD40       fLabs.TfrmLabs.tvReportsExpanding
+ 0001:0035AD54       fLabs.TfrmLabs.tvReportsKeyDown
+ 0001:00356440       fLabs.TfrmLabs.UnfreezeText1Click
+ 0001:0034B5C8       fLabs.TfrmLabs.UpdateRemoteStatus
+ 0001:00351BB0       fLabs.TfrmLabs.VGrid
+ 0001:0035CF5C       fLabs.TfrmLabs.WebBrowser1DocumentComplete
+ 0001:00353708       fLabs.TfrmLabs.WorksheetChart
+ 0001:0035D3CC       fLabs.TGrdLab508Manager.Create
+ 0001:0035D40C       fLabs.TGrdLab508Manager.GetItem
+ 0001:0035D438       fLabs.TGrdLab508Manager.GetTextToSpeak
+ 0001:0035D538       fLabs.TGrdLab508Manager.GetValue
+ 0001:0035D550       fLabs.TGrdLab508Manager.ToBlankIfEmpty
+ 0004:00006454       fLabs.tmpGrid
+ 0004:00006470       fLabs.uColChange
+ 0004:00006484       fLabs.uColumns
+ 0004:00006444       fLabs.uDate1
+ 0004:0000644C       fLabs.uDate2
+ 0004:000064CC       fLabs.uDirect
+ 0004:000064C4       fLabs.uEmptyImageList
+ 0004:0000649C       fLabs.uFirstSort
+ 0004:0000643C       fLabs.uFormat
+ 0004:000064B0       fLabs.uFrozen
+ 0004:000064B1       fLabs.uGraphingActivated
+ 0004:00006498       fLabs.uHState
+ 0004:000064B8       fLabs.uHTMLDoc
+ 0004:000064C0       fLabs.uHTMLPatient
+ 0004:00006458       fLabs.uLabLocalReportData
+ 0004:0000645C       fLabs.uLabRemoteReportData
+ 0004:0000648C       fLabs.uLocalReportData
+ 0004:000064A8       fLabs.ulvSelectOn
+ 0004:00006480       fLabs.uMaxOcc
+ 0004:00006488       fLabs.uNewColumn
+ 0004:00006440       fLabs.uPrevReportNode
+ 0004:00006474       fLabs.uQualifier
+ 0004:00006494       fLabs.uQualifierType
+ 0004:000064B4       fLabs.uRemoteCount
+ 0004:00006490       fLabs.uRemoteReportData
+ 0004:0000646C       fLabs.uReportInstruction
+ 0004:000064BC       fLabs.uReportRPC
+ 0004:00006478       fLabs.uReportType
+ 0004:000064C8       fLabs.uRptID
+ 0004:00006464       fLabs.uScreenSplitLoc
+ 0004:00006461       fLabs.uScreenSplitMoved
+ 0004:000064A0       fLabs.uSecondSort
+ 0004:0000647C       fLabs.uSortOrder
+ 0004:000064A4       fLabs.uThirdSort
+ 0004:00006468       fLabs.uTreeStrings
+ 0004:00006460       fLabs.uUpdateStat
+ 0001:003475DC       fLabTest..TfrmLabTest
+ 0001:00347874       fLabTest.SelectTest
+ 0001:00347D00       fLabTest.TfrmLabTest.cboListEnter
+ 0001:00347D10       fLabTest.TfrmLabTest.cboListExit
+ 0001:00347BC4       fLabTest.TfrmLabTest.cboListNeedData
+ 0001:00347BEC       fLabTest.TfrmLabTest.cboSpecimenNeedData
+ 0001:00347C14       fLabTest.TfrmLabTest.cmdOKClick
+ 0001:00347980       fLabTest.TfrmLabTest.FormCreate
+ 0001:003484B4       fLabTestGroups..TfrmLabTestGroups
+ 0001:00348A50       fLabTestGroups.SelectTestGroups
+ 0001:0034958C       fLabTestGroups.TfrmLabTestGroups.AddTests
+ 0001:00349534       fLabTestGroups.TfrmLabTestGroups.cboSpecimenNeedData
+ 0001:00349E1C       fLabTestGroups.TfrmLabTestGroups.cboTestsChange
+ 0001:00349E3C       fLabTestGroups.TfrmLabTestGroups.cboTestsEnter
+ 0001:00349E4C       fLabTestGroups.TfrmLabTestGroups.cboTestsExit
+ 0001:00348F80       fLabTestGroups.TfrmLabTestGroups.cboTestsNeedData
+ 0001:0034955C       fLabTestGroups.TfrmLabTestGroups.cboUsersClick
+ 0001:0034950C       fLabTestGroups.TfrmLabTestGroups.cboUsersNeedData
+ 0001:003499B8       fLabTestGroups.TfrmLabTestGroups.cmdAddClick
+ 0001:00349E5C       fLabTestGroups.TfrmLabTestGroups.cmdAddTestClick
+ 0001:00349084       fLabTestGroups.TfrmLabTestGroups.cmdClearClick
+ 0001:00349BF8       fLabTestGroups.TfrmLabTestGroups.cmdDeleteClick
+ 0001:00349294       fLabTestGroups.TfrmLabTestGroups.cmdDownClick
+ 0001:00348FA8       fLabTestGroups.TfrmLabTestGroups.cmdOKClick
+ 0001:003490A0       fLabTestGroups.TfrmLabTestGroups.cmdRemoveClick
+ 0001:003497D4       fLabTestGroups.TfrmLabTestGroups.cmdReplaceClick
+ 0001:00349154       fLabTestGroups.TfrmLabTestGroups.cmdUpClick
+ 0001:00348C20       fLabTestGroups.TfrmLabTestGroups.FormCreate
+ 0001:003493D4       fLabTestGroups.TfrmLabTestGroups.lstListClick
+ 0001:003496E0       fLabTestGroups.TfrmLabTestGroups.lstTestGroupsChange
+ 0001:00349E9C       fLabTestGroups.TfrmLabTestGroups.pnlDownButtonEnter
+ 0001:00349EAC       fLabTestGroups.TfrmLabTestGroups.pnlDownButtonExit
+ 0001:00349ED4       fLabTestGroups.TfrmLabTestGroups.pnlDownButtonResize
+ 0001:00349E7C       fLabTestGroups.TfrmLabTestGroups.pnlUpButtonEnter
+ 0001:00349E8C       fLabTestGroups.TfrmLabTestGroups.pnlUpButtonExit
+ 0001:00349EBC       fLabTestGroups.TfrmLabTestGroups.pnlUpButtonResize
+ 0001:00349724       fLabTestGroups.TfrmLabTestGroups.TestGroupEnable
+ 0001:00347D20       fLabTests..TfrmLabTests
+ 0001:00348030       fLabTests.SelectTests
+ 0001:00348348       fLabTests.TfrmLabTests.cboTestsChange
+ 0001:00348368       fLabTests.TfrmLabTests.cboTestsEnter
+ 0001:00348378       fLabTests.TfrmLabTests.cboTestsExit
+ 0001:0034818C       fLabTests.TfrmLabTests.cboTestsNeedData
+ 0001:00348388       fLabTests.TfrmLabTests.cmdAddClick
+ 0001:00348228       fLabTests.TfrmLabTests.cmdClearClick
+ 0001:003481B4       fLabTests.TfrmLabTests.cmdOKClick
+ 0001:00348244       fLabTests.TfrmLabTests.cmdRemoveClick
+ 0001:003484AC       fLabTests.TfrmLabTests.FormClose
+ 0001:00348158       fLabTests.TfrmLabTests.FormCreate
+ 0001:003482F8       fLabTests.TfrmLabTests.lstListClick
+ 0004:00003518       FlatSB..1
+ 0001:000557A4       FlatSB.Finalization
+ 0002:00000568       FlatSB.FlatSB
+ 0004:000034F8       FlatSB.FlatSB_EnableScrollBar
+ 0004:00003504       FlatSB.FlatSB_GetScrollInfo
+ 0004:00003508       FlatSB.FlatSB_GetScrollPos
+ 0004:00003500       FlatSB.FlatSB_GetScrollRange
+ 0004:00003510       FlatSB.FlatSB_SetScrollInfo
+ 0004:0000350C       FlatSB.FlatSB_SetScrollPos
+ 0001:000554C4       FlatSB.FlatSB_SetScrollProp
+ 0004:00003514       FlatSB.FlatSB_SetScrollRange
+ 0004:000034FC       FlatSB.FlatSB_ShowScrollBar
+ 0001:00055520       FlatSB.InitFlatSB
+ 0001:000554F8       FlatSB.InitializeFlatSB
+ 0004:0000351C       FlatSB._FlatSB_GetScrollProp
+ 0004:00003520       FlatSB._FlatSB_SetScrollProp
+ 0004:00003524       FlatSB._InitializeFlatSB
+ 0004:00003528       FlatSB._UninitializeFlatSB
+ 0001:001D6FAC       fLkUpLocation..TfrmLkUpLocation
+ 0004:0000595C       fLkUpLocation.LocType
+ 0001:001D71F8       fLkUpLocation.LookupLocation
+ 0001:001D7304       fLkUpLocation.TfrmLkUpLocation.cboLocationNeedData
+ 0001:001D7380       fLkUpLocation.TfrmLkUpLocation.cmdCancelClick
+ 0001:001D7370       fLkUpLocation.TfrmLkUpLocation.cmdOKClick
+ 0001:001D72EC       fLkUpLocation.TfrmLkUpLocation.FormCreate
+ 0001:00203CFC       fMedCopy..TfrmMedCopy
+ 0001:00204188       fMedCopy.DisplayEvntDialog
+ 0004:00005AA0       fMedCopy.frmMedCopy
+ 0001:002040B4       fMedCopy.Highlight
+ 0001:0020425C       fMedCopy.SetDelayEventForMed
+ 0001:00204C90       fMedCopy.TfrmMedCopy.AdjustFormSize
+ 0001:00204D20       fMedCopy.TfrmMedCopy.cmdCancelClick
+ 0001:00204ADC       fMedCopy.TfrmMedCopy.cmdOKClick
+ 0001:00204A90       fMedCopy.TfrmMedCopy.FormCreate
+ 0001:00204FE8       fMedCopy.TfrmMedCopy.FormKeyDown
+ 0001:00204EFC       fMedCopy.TfrmMedCopy.fraEvntDelayListcboEvntListChange
+ 0001:00204FB8       fMedCopy.TfrmMedCopy.fraEvntDelayListmlstEventsChange
+ 0001:00204F34       fMedCopy.TfrmMedCopy.fraEvntDelayListmlstEventsDblClick
+ 0001:00204D28       fMedCopy.TfrmMedCopy.radDelayedClick
+ 0001:00204EE0       fMedCopy.TfrmMedCopy.radReleaseClick
+ 0001:00204F24       fMedCopy.TfrmMedCopy.UMStillDelay
+ 0004:00005B1C       fMeds..3
+ 0001:0021ADA4       fMeds..TChildOD
+ 0001:0021AE14       fMeds..TfrmMeds
+ 0001:00221E90       fMeds.Finalization
+ 0002:00001420       fMeds.fMeds
+ 0004:00005ACC       fMeds.frmMeds
+ 0001:0021BE1C       fMeds.IndexForCurrentID
+ 0004:00005B18       fMeds.oldFont
+ 0004:00005AEC       fMeds.OrigInPtSecWidths
+ 0004:00005B00       fMeds.OrigNonVASecWidths
+ 0004:00005AD0       fMeds.OrigOutPtSecWidths
+ 0004:00005B10       fMeds.s
+ 0001:00220854       fMeds.TChildOD.Create
+ 0001:002216C8       fMeds.TfrmMeds.ActivateDeactiveRenew
+ 0001:00221514       fMeds.TfrmMeds.CheckMedStatus
+ 0001:002214A8       fMeds.TfrmMeds.ClearChildODList
+ 0001:0021BA2C       fMeds.TfrmMeds.ClearPtData
+ 0001:0021BAE4       fMeds.TfrmMeds.DisplayPage
+ 0001:0021C874       fMeds.TfrmMeds.FormCreate
+ 0001:0021CCD0       fMeds.TfrmMeds.FormDestroy
+ 0001:002209CC       fMeds.TfrmMeds.FormMouseUp
+ 0001:00220790       fMeds.TfrmMeds.FormResize
+ 0001:002209AC       fMeds.TfrmMeds.FormShow
+ 0001:0021D7C0       fMeds.TfrmMeds.GetActionText
+ 0001:0021DE4C       fMeds.TfrmMeds.GetHeader
+ 0001:0021DA0C       fMeds.TfrmMeds.GetInstructText
+ 0001:0021DBB4       fMeds.TfrmMeds.GetListText
+ 0001:0021DEA0       fMeds.TfrmMeds.GetMedList
+ 0001:0021DEF4       fMeds.TfrmMeds.GetPharmacyOrders
+ 0001:0021DD04       fMeds.TfrmMeds.GetPlainText
+ 0001:00220C58       fMeds.TfrmMeds.GetTotalSectionsWidth
+ 0001:00221044       fMeds.TfrmMeds.hdrMedsInMouseDown
+ 0001:0022133C       fMeds.TfrmMeds.hdrMedsInMouseUp
+ 0001:00220954       fMeds.TfrmMeds.hdrMedsInResize
+ 0001:00221D2C       fMeds.TfrmMeds.hdrMedsInSectionClick
+ 0001:0021E780       fMeds.TfrmMeds.hdrMedsInSectionResize
+ 0001:00221024       fMeds.TfrmMeds.hdrMedsNonVAMouseDown
+ 0001:002211D0       fMeds.TfrmMeds.hdrMedsNonVAMouseUp
+ 0001:002208FC       fMeds.TfrmMeds.hdrMedsNonVAResize
+ 0001:00221D0C       fMeds.TfrmMeds.hdrMedsNonVASectionClick
+ 0001:00220714       fMeds.TfrmMeds.hdrMedsNonVASectionResize
+ 0001:00221004       fMeds.TfrmMeds.hdrMedsOutMouseDown
+ 0001:00221064       fMeds.TfrmMeds.hdrMedsOutMouseUp
+ 0001:002208A4       fMeds.TfrmMeds.hdrMedsOutResize
+ 0001:00221CEC       fMeds.TfrmMeds.hdrMedsOutSectionClick
+ 0001:0021E704       fMeds.TfrmMeds.hdrMedsOutSectionResize
+ 0001:00220A38       fMeds.TfrmMeds.InitfMedsSize
+ 0001:0021FDB0       fMeds.TfrmMeds.ListSelected
+ 0001:0021E520       fMeds.TfrmMeds.lstMedsDblClick
+ 0001:0021E168       fMeds.TfrmMeds.lstMedsDrawItem
+ 0001:0021E4FC       fMeds.TfrmMeds.lstMedsExit
+ 0001:0021E53C       fMeds.TfrmMeds.lstMedsInClick
+ 0001:0021E5CC       fMeds.TfrmMeds.lstMedsInRightClickHandler
+ 0001:0021DF48       fMeds.TfrmMeds.lstMedsMeasureItem
+ 0001:002205F0       fMeds.TfrmMeds.lstMedsNonVAClick
+ 0001:00220680       fMeds.TfrmMeds.lstMedsNonVADblClick
+ 0001:0022069C       fMeds.TfrmMeds.lstMedsNonVAExit
+ 0001:002206C0       fMeds.TfrmMeds.lstMedsNonVARightClickHandler
+ 0001:0021E620       fMeds.TfrmMeds.lstMedsOutClick
+ 0001:0021E6B0       fMeds.TfrmMeds.lstMedsOutRightClickHandler
+ 0001:002202C0       fMeds.TfrmMeds.MakeSelectedList
+ 0001:0021EFB0       fMeds.TfrmMeds.mnuActChangeClick
+ 0001:0021E7FC       fMeds.TfrmMeds.mnuActClick
+ 0001:0021F23C       fMeds.TfrmMeds.mnuActCopyClick
+ 0001:0021E904       fMeds.TfrmMeds.mnuActDCClick
+ 0001:0021EAEC       fMeds.TfrmMeds.mnuActHoldClick
+ 0001:0021F96C       fMeds.TfrmMeds.mnuActNewClick
+ 0001:0021FBD0       fMeds.TfrmMeds.mnuActRefillClick
+ 0001:0021ECD4       fMeds.TfrmMeds.mnuActRenewClick
+ 0001:0021BDFC       fMeds.TfrmMeds.mnuChartTabClick
+ 0001:00221A40       fMeds.TfrmMeds.mnuOptimizeFieldsClick
+ 0001:002205E0       fMeds.TfrmMeds.mnuViewClick
+ 0001:0021CDC8       fMeds.TfrmMeds.mnuViewDetailClick
+ 0001:0021D174       fMeds.TfrmMeds.mnuViewHistoryClick
+ 0001:00221870       fMeds.TfrmMeds.mnuViewInformationClick
+ 0001:0021BF58       fMeds.TfrmMeds.NotifyOrder
+ 0001:002205D0       fMeds.TfrmMeds.popMedPopup
+ 0001:0021D3BC       fMeds.TfrmMeds.RefreshMedLists
+ 0001:0021C838       fMeds.TfrmMeds.SetFontSize
+ 0001:00220DE4       fMeds.TfrmMeds.SetSectionWidths
+ 0001:00220F7C       fMeds.TfrmMeds.SetViewCaption
+ 0001:00221DB8       fMeds.TfrmMeds.SortbyClinicOrderthenStatusthenStopDate1Click
+ 0001:00221E24       fMeds.TfrmMeds.SortbyDrugalphabeticallystatusactivestatusrecentexpired1Click
+ 0001:00221D4C       fMeds.TfrmMeds.SortbyStatusthenLocation1Click
+ 0001:002209F0       fMeds.TfrmMeds.splitBottomMoved
+ 0001:00220A14       fMeds.TfrmMeds.splitTopMoved
+ 0001:002205B0       fMeds.TfrmMeds.SynchListToOrders
+ 0001:0021FE60       fMeds.TfrmMeds.ValidateSelected
+ 0001:00221850       fMeds.TfrmMeds.ViewInfo
+ 0004:00005B14       fMeds.totalHeight
+ 0001:00178DC4       fMHTest..TfrmMHTest
+ 0001:0017903C       fMHTest..TMHQuestion
+ 0001:00179F5C       fMHTest.AddTxt2Str
+ 0001:0017AFBC       fMHTest.AdjDY
+ 0001:00179B44       fMHTest.CheckforMHDll
+ 0001:00179C48       fMHTest.CloseMHDLL
+ 0003:00003710       fMHTest.CloseProc
+ 0004:000049F4       fMHTest.FFirstCtrl
+ 0004:000049F0       fMHTest.frmMHTest
+ 0004:000049F8       fMHTest.FYPos
+ 0001:0017AF54       fMHTest.GetCtrl
+ 0001:0017AFD0       fMHTest.GetRLbl
+ 0003:00003700       fMHTest.MHDLLHandle
+ 0001:00179D88       fMHTest.ParseText
+ 0001:0017913C       fMHTest.PerformMHTest
+ 0001:001790C0       fMHTest.ProcessMsg
+ 0001:001798A0       fMHTest.RemoveMHTest
+ 0003:0000370C       fMHTest.RemoveTempFile
+ 0001:00179580       fMHTest.SaveMHTest
+ 0003:00003708       fMHTest.SaveProc
+ 0003:00003704       fMHTest.ShowProc
+ 0001:00179CC4       fMHTest.TfrmMHTest.Answers
+ 0001:0017BF10       fMHTest.TfrmMHTest.btnClearClick
+ 0001:0017BB5C       fMHTest.TfrmMHTest.btnOKClick
+ 0001:0017A63C       fMHTest.TfrmMHTest.BuildControls
+ 0001:0017A9B8       fMHTest.TfrmMHTest.CallMHDLL
+ 0001:0017ADE0       fMHTest.TfrmMHTest.CurrentQ
+ 0001:0017A5B0       fMHTest.TfrmMHTest.FormCreate
+ 0001:0017A604       fMHTest.TfrmMHTest.FormDestroy
+ 0001:0017AEF4       fMHTest.TfrmMHTest.FormKeyDown
+ 0001:0017B940       fMHTest.TfrmMHTest.FormShow
+ 0001:0017A8C0       fMHTest.TfrmMHTest.GetQText
+ 0001:0017AE70       fMHTest.TfrmMHTest.GotoQ
+ 0001:0017A024       fMHTest.TfrmMHTest.LoadTest
+ 0001:0017B9A4       fMHTest.TfrmMHTest.sbMainResize
+ 0001:0017B170       fMHTest.TMHQuestion.BuildControls
+ 0001:0017B77C       fMHTest.TMHQuestion.Create
+ 0001:0017B818       fMHTest.TMHQuestion.Destroy
+ 0001:0017B848       fMHTest.TMHQuestion.OnChange
+ 0001:0017B9B4       fMHTest.TMHQuestion.Question
+ 0004:000049FC       fMHTest.UsedMHDll
+ 0004:000037A8       FMTBcd..3
+ 0001:000FC5E0       FMTBcd..EBcdException
+ 0001:000FC63C       FMTBcd..EBcdOverflowException
+ 0001:000FC7D4       FMTBcd..TFMTBcdData
+ 0001:000FC720       FMTBcd..TFMTBcdVariantType
+ 0001:000FD874       FMTBcd.AddChars
+ 0001:000FF28C       FMTBcd.AddNormalizedFractions
+ 0001:000FD930       FMTBcd.AddStrings
+ 0001:000FF164       FMTBcd.AddSubtractNormalizedFractions
+ 0001:000FE4E8       FMTBcd.AdjustDecimalPosition
+ 0001:000FF8D4       FMTBcd.AdjustNibbles
+ 0001:000FFE74       FMTBcd.BcdAdd
+ 0001:000FFA84       FMTBcd.BcdCompare
+ 0001:000FFE08       FMTBcd.BcdDivide
+ 0001:000FFCAC       FMTBcd.BcdDivide
+ 0001:000FC980       FMTBcd.BcdError
+ 0001:000FC910       FMTBcd.BcdErrorFmt
+ 0001:000FFC40       FMTBcd.BcdMultiply
+ 0001:000FFB4C       FMTBcd.BcdMultiply
+ 0001:001001C0       FMTBcd.BcdScale
+ 0001:000FFB10       FMTBcd.BcdSubtract
+ 0001:001003A4       FMTBcd.BCDToCurr
+ 0001:000FD274       FMTBcd.BcdToDouble
+ 0001:000FFFA4       FMTBcd.BcdToStr
+ 0001:000FE334       FMTBcd.BlankArgument
+ 0001:000FE1F0       FMTBcd.CanUseShort
+ 0001:000FF83C       FMTBcd.CompactBcd
+ 0001:000FD5FC       FMTBcd.CompareDigits
+ 0001:000FF294       FMTBcd.CompareNormalizedFractions
+ 0001:000FF510       FMTBcd.CompareSignificantFractions
+ 0001:00100230       FMTBcd.CurrToBCD
+ 0003:00002E70       FMTBcd.DValue
+ 0001:000FC6A0       FMTBcd.EmptyBcd
+ 0001:001004A0       FMTBcd.Finalization
+ 0002:00000B2C       FMTBcd.FMTBcd
+ 0003:00002F68       FMTBcd.FMTBcdVariantType
+ 0001:000FC6C8       FMTBcd.GetBcdDigit
+ 0001:001001D4       FMTBcd.GetNextByte
+ 0001:000FD6C0       FMTBcd.GetValueAndMultiplyOrder
+ 0001:000FED28       FMTBcd.InvalidBcdString
+ 0001:001001CC       FMTBcd.IsBcdNegative
+ 0001:000FD5B0       FMTBcd.LeftTrim
+ 0001:000FF470       FMTBcd.LoadNibbleArray
+ 0001:000FF38C       FMTBcd.MoveBytesToRight
+ 0001:000FF5C4       FMTBcd.MoveNibblesToLeft
+ 0001:000FF3E8       FMTBcd.MoveNibblesToRight
+ 0001:000FE428       FMTBcd.NextDigit
+ 0001:000FF6B8       FMTBcd.NormalizeBcd
+ 0001:000FF93C       FMTBcd.NormalizeBcdPair
+ 0001:000FF81C       FMTBcd.NumberOfDigits
+ 0001:000FC998       FMTBcd.OverflowError
+ 0001:000FC6FC       FMTBcd.PutCurrencyDigit
+ 0001:000FC6A8       FMTBcd.PutTwoBcdDigits
+ 0001:000FEE10       FMTBcd.ReverseNegative
+ 0001:000FD334       FMTBcd.RoundAt
+ 0001:000FD2CC       FMTBcd.RoundChar
+ 0001:000FF118       FMTBcd.SignificantIntDigits
+ 0001:000FDE70       FMTBcd.StringMultiplyByByte
+ 0001:000FD218       FMTBcd.StrToBcd
+ 0001:000FD8E0       FMTBcd.SubtractChars
+ 0001:000FF284       FMTBcd.SubtractNormalizedFractions
+ 0001:000FDA90       FMTBcd.SubtractStrings
+ 0001:000FCA98       FMTBcd.TFMTBcdData.Compare
+ 0001:000FCD00       FMTBcd.TFMTBcdData.Create
+ 0001:000FCEA4       FMTBcd.TFMTBcdData.Create
+ 0001:000FCDF4       FMTBcd.TFMTBcdData.Create
+ 0001:000FCCB8       FMTBcd.TFMTBcdData.Create
+ 0001:000FC9B0       FMTBcd.TFMTBcdData.DoAdd
+ 0001:000FC9E4       FMTBcd.TFMTBcdData.DoAdd
+ 0001:000FCA64       FMTBcd.TFMTBcdData.DoDivide
+ 0001:000FCA30       FMTBcd.TFMTBcdData.DoMultiply
+ 0001:000FC9F0       FMTBcd.TFMTBcdData.DoSubtract
+ 0001:000FCA24       FMTBcd.TFMTBcdData.DoSubtract
+ 0001:000FCB78       FMTBcd.TFMTBcdData.GetAsCurrency
+ 0001:000FCAC4       FMTBcd.TFMTBcdData.GetAsDouble
+ 0001:000FCB1C       FMTBcd.TFMTBcdData.GetAsInteger
+ 0001:000FCB6C       FMTBcd.TFMTBcdData.GetAsSmallInt
+ 0001:000FCAB0       FMTBcd.TFMTBcdData.GetAsString
+ 0001:000FCC98       FMTBcd.TFMTBcdData.SetAsCurrency
+ 0001:000FCBB4       FMTBcd.TFMTBcdData.SetAsDouble
+ 0001:000FCC24       FMTBcd.TFMTBcdData.SetAsInteger
+ 0001:000FCC8C       FMTBcd.TFMTBcdData.SetAsSmallInt
+ 0001:000FCB8C       FMTBcd.TFMTBcdData.SetAsString
+ 0001:000FD1A0       FMTBcd.TFMTBcdVariantType.BinaryOp
+ 0001:000FCEF0       FMTBcd.TFMTBcdVariantType.Cast
+ 0001:000FD028       FMTBcd.TFMTBcdVariantType.CastTo
+ 0001:000FCEE0       FMTBcd.TFMTBcdVariantType.Clear
+ 0001:000FD1F8       FMTBcd.TFMTBcdVariantType.Compare
+ 0001:000FD154       FMTBcd.TFMTBcdVariantType.Copy
+ 0001:000FD1F4       FMTBcd.TFMTBcdVariantType.GetInstance
+ 0001:000FEE38       FMTBcd.TryStrToBcd
+ 0001:000FE6FC       FMTBcd.ValueOverOne
+ 0001:000FEE1C       FMTBcd.ZeroBcd
+ 0001:000FEC0C       FMTBcd._Divide
+ 0001:000FE9A4       FMTBcd._LongDivide
+ 0001:000FDF54       FMTBcd._LongMultiply
+ 0001:000FE3C4       FMTBcd._Multiply
+ 0001:000FDC90       FMTBcd._ShortMultiply
+ 0001:001CD554       fNoteBA..TfrmNotesByAuthor
+ 0001:001CD7D0       fNoteBA.SelectAuthor
+ 0001:001CD9E8       fNoteBA.TfrmNotesByAuthor.cboAuthorNeedData
+ 0001:001CDA10       fNoteBA.TfrmNotesByAuthor.cmdCancelClick
+ 0001:001CDA18       fNoteBA.TfrmNotesByAuthor.cmdOKClick
+ 0001:001CCE88       fNoteBD..TfrmNotesByDate
+ 0001:001CD158       fNoteBD.SelectNoteDateRange
+ 0001:001CD534       fNoteBD.TfrmNotesByDate.calBeginDateKeyPress
+ 0001:001CD544       fNoteBD.TfrmNotesByDate.calEndDateKeyPress
+ 0001:001CD52C       fNoteBD.TfrmNotesByDate.cmdCancelClick
+ 0001:001CD374       fNoteBD.TfrmNotesByDate.cmdOKClick
+ 0001:00197F88       fNoteCPFields..TfrmNoteCPFields
+ 0001:00198220       fNoteCPFields.EnterClinProcFields
+ 0001:00198830       fNoteCPFields.TfrmNoteCPFields.cboAuthorNeedData
+ 0001:001986FC       fNoteCPFields.TfrmNoteCPFields.cmdCancelClick
+ 0001:0019837C       fNoteCPFields.TfrmNoteCPFields.cmdOKClick
+ 0001:00198340       fNoteCPFields.TfrmNoteCPFields.FormCreate
+ 0001:00198414       fNoteCPFields.TfrmNoteCPFields.ValidateFields
+ 0001:001CA484       fNoteDR..TfrmNoteDelReason
+ 0001:001CA6B4       fNoteDR.SelectDeleteReason
+ 0001:001CA85C       fNoteDR.TfrmNoteDelReason.cmdCancelClick
+ 0001:001CA7BC       fNoteDR.TfrmNoteDelReason.cmdOKClick
+ 0001:001CA7B4       fNoteDR.TfrmNoteDelReason.FormCreate
+ 0001:00196BA4       fNoteIDParents..TfrmNoteIDParents
+ 0001:00196DE4       fNoteIDParents.SelectParentNodeFromList
+ 0001:00196FB8       fNoteIDParents.TfrmNoteIDParents.cmdCancelClick
+ 0001:00196FD0       fNoteIDParents.TfrmNoteIDParents.cmdOKClick
+ 0001:00196FA8       fNoteIDParents.TfrmNoteIDParents.FormCreate
+ 0001:001B9668       fNoteProps..TfrmNoteProperties
+ 0001:001B9610       fNoteProps..TPRFActions
+ 0001:001B9CCC       fNoteProps.ExecuteNoteProperties
+ 0003:00003800       fNoteProps.SPACE
+ 0001:001BC528       fNoteProps.TfrmNoteProperties.btnDetailsClick
+ 0001:001BBDF8       fNoteProps.TfrmNoteProperties.btnShowListClick
+ 0001:001BBF50       fNoteProps.TfrmNoteProperties.calNoteEnter
+ 0001:001BB124       fNoteProps.TfrmNoteProperties.cboAuthorEnter
+ 0001:001BB164       fNoteProps.TfrmNoteProperties.cboAuthorExit
+ 0001:001BB13C       fNoteProps.TfrmNoteProperties.cboAuthorMouseClick
+ 0001:001BB190       fNoteProps.TfrmNoteProperties.cboCosignerExit
+ 0001:001BBD80       fNoteProps.TfrmNoteProperties.cboCosignerNeedData
+ 0001:001BB0EC       fNoteProps.TfrmNoteProperties.cboNewTitleDblClick
+ 0001:001BBD7C       fNoteProps.TfrmNoteProperties.cboNewTitleDropDownClose
+ 0001:001BADDC       fNoteProps.TfrmNoteProperties.cboNewTitleEnter
+ 0001:001BB0BC       fNoteProps.TfrmNoteProperties.cboNewTitleExit
+ 0001:001BADE8       fNoteProps.TfrmNoteProperties.cboNewTitleMouseClick
+ 0001:001BAD2C       fNoteProps.TfrmNoteProperties.cboNewTitleNeedData
+ 0001:001BBD70       fNoteProps.TfrmNoteProperties.cmdCancelClick
+ 0001:001BB27C       fNoteProps.TfrmNoteProperties.cmdOKClick
+ 0001:001BBE00       fNoteProps.TfrmNoteProperties.FormatRequestList
+ 0001:001BC51C       fNoteProps.TfrmNoteProperties.FormDestroy
+ 0001:001BBE98       fNoteProps.TfrmNoteProperties.FormResize
+ 0001:001BA868       fNoteProps.TfrmNoteProperties.FormShow
+ 0001:001BC6CC       fNoteProps.TfrmNoteProperties.lstRequestsChange
+ 0001:001BB0F4       fNoteProps.TfrmNoteProperties.NewPersonNeedData
+ 0001:001BA870       fNoteProps.TfrmNoteProperties.SetCosignerRequired
+ 0001:001BC0F4       fNoteProps.TfrmNoteProperties.SetGenericFormSize
+ 0001:001BBDB8       fNoteProps.TfrmNoteProperties.ShowClinProcFields
+ 0001:001BBF78       fNoteProps.TfrmNoteProperties.ShowPRFList
+ 0001:001BAA40       fNoteProps.TfrmNoteProperties.ShowRequestList
+ 0001:001BACC4       fNoteProps.TfrmNoteProperties.ShowSurgCaseList
+ 0001:001BA86C       fNoteProps.TfrmNoteProperties.UMDelayEvent
+ 0001:001BC10C       fNoteProps.TPRFActions.Create
+ 0001:001BC150       fNoteProps.TPRFActions.Destroy
+ 0001:001BC180       fNoteProps.TPRFActions.GetActionIEN
+ 0001:001BC1E8       fNoteProps.TPRFActions.GetPRF_IEN
+ 0001:001BC258       fNoteProps.TPRFActions.Load
+ 0001:001BC2F8       fNoteProps.TPRFActions.SelActionHasNote
+ 0001:001BC36C       fNoteProps.TPRFActions.ShowActionsOnList
+ 0004:000058F8       fNoteProps.uConsultsList
+ 0004:000058FC       fNoteProps.uShowUnresolvedOnly
+ 0001:001CBE8C       fNotePrt..TfrmNotePrint
+ 0001:001CC1D0       fNotePrt.PrintNote
+ 0001:001CC63C       fNotePrt.TfrmNotePrint.cboDeviceChange
+ 0001:001CC614       fNotePrt.TfrmNotePrint.cboDeviceNeedData
+ 0001:001CCA68       fNotePrt.TfrmNotePrint.cmdCancelClick
+ 0001:001CC718       fNotePrt.TfrmNotePrint.cmdOKClick
+ 0001:001CC4B8       fNotePrt.TfrmNotePrint.DisplaySelectDevice
+ 0001:001CC708       fNotePrt.TfrmNotePrint.radChartCopyClick
+ 0001:001CC710       fNotePrt.TfrmNotePrint.radWorkCopyClick
+ 0004:00005B98       fNotes..2
+ 0001:0022C1F0       fNotes..TfrmNotes
+ 0001:002316A4       fNotes.AssignBoilerText
+ 0004:00005C08       fNotes.ColumnSortForward
+ 0004:00005C04       fNotes.ColumnToSort
+ 0001:0023B0C4       fNotes.Finalization
+ 0002:00001474       fNotes.fNotes
+ 0004:00005BA8       fNotes.frmDrawers
+ 0004:00005B90       fNotes.frmNotes
+ 0004:00005B94       fNotes.SearchTextStopFlag
+ 0001:00239D94       fNotes.SetDateRangeText
+ 0001:00238B98       fNotes.SortByDate
+ 0001:002389D4       fNotes.SortByTitle
+ 0001:0022F118       fNotes.TfrmNotes.ActiveEditOf
+ 0001:0022D770       fNotes.TfrmNotes.AllowContextChange
+ 0001:0023764C       fNotes.TfrmNotes.AssignRemForm
+ 0001:002375B8       fNotes.TfrmNotes.CanFinishReminder
+ 0001:0022E318       fNotes.TfrmNotes.ClearEditControls
+ 0001:0022DC58       fNotes.TfrmNotes.ClearPtData
+ 0001:00231A6C       fNotes.TfrmNotes.cmdChangeClick
+ 0001:0023AD68       fNotes.TfrmNotes.cmdChangeExit
+ 0001:00231458       fNotes.TfrmNotes.cmdNewNoteClick
+ 0001:0023A7D8       fNotes.TfrmNotes.cmdNewNoteExit
+ 0001:00231564       fNotes.TfrmNotes.cmdPCEClick
+ 0001:0023ADA8       fNotes.TfrmNotes.cmdPCEExit
+ 0001:0022DD30       fNotes.TfrmNotes.DisplayPage
+ 0001:0022E4D0       fNotes.TfrmNotes.DisplayPCE
+ 0001:00235F50       fNotes.TfrmNotes.dlgFindTextFind
+ 0001:00236030       fNotes.TfrmNotes.dlgReplaceTextFind
+ 0001:00236064       fNotes.TfrmNotes.dlgReplaceTextReplace
+ 0001:00239994       fNotes.TfrmNotes.DoAttachIDChild
+ 0001:002324F8       fNotes.TfrmNotes.DoAutoSave
+ 0001:00239540       fNotes.TfrmNotes.EnableDisableIDNotes
+ 0001:0023642C       fNotes.TfrmNotes.FormClose
+ 0001:00230CF0       fNotes.TfrmNotes.FormCreate
+ 0001:002375F8       fNotes.TfrmNotes.FormDestroy
+ 0001:0023A960       fNotes.TfrmNotes.FormHide
+ 0001:0023AA0C       fNotes.TfrmNotes.FormShow
+ 0001:0023AB30       fNotes.TfrmNotes.frmDrawerEdtSearchExit
+ 0001:0023ABD8       fNotes.TfrmNotes.frmDrawerPnlEncounterButtonExit
+ 0001:0023AB60       fNotes.TfrmNotes.frmDrawerPnlTemplatesButtonExit
+ 0001:0023A874       fNotes.TfrmNotes.frmFramePnlPatientExit
+ 0001:00237634       fNotes.TfrmNotes.GetDrawers
+ 0001:0022E934       fNotes.TfrmNotes.GetTitleText
+ 0001:0022FAF4       fNotes.TfrmNotes.InsertAddendum
+ 0001:0022F1A4       fNotes.TfrmNotes.InsertNewNote
+ 0001:0022EAB0       fNotes.TfrmNotes.LacksRequiredForCreate
+ 0001:00230218       fNotes.TfrmNotes.LoadForEdit
+ 0001:002376EC       fNotes.TfrmNotes.LoadNotes
+ 0001:0022ED70       fNotes.TfrmNotes.LockConsultRequest
+ 0001:0022EEB0       fNotes.TfrmNotes.LockConsultRequestAndNote
+ 0001:00230F44       fNotes.TfrmNotes.lstNotesClick
+ 0001:0022DAFC       fNotes.TfrmNotes.LstNotesToPrint
+ 0001:002390CC       fNotes.TfrmNotes.lvNotesColumnClick
+ 0001:002392D0       fNotes.TfrmNotes.lvNotesCompare
+ 0001:00239474       fNotes.TfrmNotes.lvNotesResize
+ 0001:0023938C       fNotes.TfrmNotes.lvNotesSelectItem
+ 0001:00232448       fNotes.TfrmNotes.memNewNoteChange
+ 0001:0023A1F4       fNotes.TfrmNotes.memNewNoteKeyDown
+ 0001:0023AC08       fNotes.TfrmNotes.memNewNoteKeyPress
+ 0001:0023AC30       fNotes.TfrmNotes.memNewNoteKeyUp
+ 0001:0023AD20       fNotes.TfrmNotes.memPCEShowExit
+ 0001:00233868       fNotes.TfrmNotes.mnuActAddendClick
+ 0001:002336F0       fNotes.TfrmNotes.mnuActAddIDEntryClick
+ 0001:0023980C       fNotes.TfrmNotes.mnuActAttachtoIDParentClick
+ 0001:00231660       fNotes.TfrmNotes.mnuActChangeClick
+ 0001:0023449C       fNotes.TfrmNotes.mnuActDeleteClick
+ 0001:00233B10       fNotes.TfrmNotes.mnuActDetachFromIDParentClick
+ 0001:002349D4       fNotes.TfrmNotes.mnuActEditClick
+ 0001:00236540       fNotes.TfrmNotes.mnuActIdentifyAddlSignersClick
+ 0001:00231764       fNotes.TfrmNotes.mnuActLoadBoilerClick
+ 0001:002335F0       fNotes.TfrmNotes.mnuActNewClick
+ 0001:00234B3C       fNotes.TfrmNotes.mnuActSaveClick
+ 0001:00234CA4       fNotes.TfrmNotes.mnuActSignClick
+ 0001:00233ED4       fNotes.TfrmNotes.mnuActSignListClick
+ 0001:0022E2F8       fNotes.TfrmNotes.mnuChartTabClick
+ 0001:002376D4       fNotes.TfrmNotes.mnuEditDialgFieldsClick
+ 0001:002374A0       fNotes.TfrmNotes.mnuEditSharedTemplatesClick
+ 0001:00237460       fNotes.TfrmNotes.mnuEditTemplatesClick
+ 0001:002397F0       fNotes.TfrmNotes.mnuIconLegendClick
+ 0001:002374C0       fNotes.TfrmNotes.mnuNewSharedTemplateClick
+ 0001:00237480       fNotes.TfrmNotes.mnuNewTemplateClick
+ 0001:002374E0       fNotes.TfrmNotes.mnuOptionsClick
+ 0001:00232840       fNotes.TfrmNotes.mnuViewClick
+ 0001:00236300       fNotes.TfrmNotes.mnuViewDetailClick
+ 0001:0023AE14       fNotes.TfrmNotes.mnuViewInformationClick
+ 0001:0023720C       fNotes.TfrmNotes.mnuViewReturntoDefaultClick
+ 0001:00236FDC       fNotes.TfrmNotes.mnuViewSaveAsDefaultClick
+ 0001:00232464       fNotes.TfrmNotes.pnlFieldsResize
+ 0001:0023A6FC       fNotes.TfrmNotes.pnlReadExit
+ 0001:00230E04       fNotes.TfrmNotes.pnlRightResize
+ 0001:00230E34       fNotes.TfrmNotes.pnlWriteResize
+ 0001:00237354       fNotes.TfrmNotes.popNoteListCollapseAllClick
+ 0001:00237414       fNotes.TfrmNotes.popNoteListCollapseSelectedClick
+ 0001:00237334       fNotes.TfrmNotes.popNoteListExpandAllClick
+ 0001:002373C8       fNotes.TfrmNotes.popNoteListExpandSelectedClick
+ 0001:00237294       fNotes.TfrmNotes.popNoteListPopup
+ 0001:00236948       fNotes.TfrmNotes.popNoteMemoAddlSignClick
+ 0001:00235DC4       fNotes.TfrmNotes.popNoteMemoCopyClick
+ 0001:00235DA4       fNotes.TfrmNotes.popNoteMemoCutClick
+ 0001:00235EAC       fNotes.TfrmNotes.popNoteMemoFindClick
+ 0001:00236118       fNotes.TfrmNotes.popNoteMemoGrammarClick
+ 0001:0023A620       fNotes.TfrmNotes.popNoteMemoInsTemplateClick
+ 0001:00235DE4       fNotes.TfrmNotes.popNoteMemoPasteClick
+ 0001:00235AB8       fNotes.TfrmNotes.popNoteMemoPopup
+ 0001:0023A640       fNotes.TfrmNotes.popNoteMemoPreviewClick
+ 0001:00235E50       fNotes.TfrmNotes.popNoteMemoReformatClick
+ 0001:00235F84       fNotes.TfrmNotes.popNoteMemoReplaceClick
+ 0001:00235E84       fNotes.TfrmNotes.popNoteMemoSaveContinueClick
+ 0001:00236098       fNotes.TfrmNotes.popNoteMemoSpellClick
+ 0001:00237230       fNotes.TfrmNotes.popNoteMemoTemplateClick
+ 0001:00236198       fNotes.TfrmNotes.popNoteMemoViewCsltClick
+ 0001:00236964       fNotes.TfrmNotes.ProcessNotifications
+ 0001:00234274       fNotes.TfrmNotes.RemovePCEFromChanges
+ 0001:0022E0D4       fNotes.TfrmNotes.RequestMultiplePrint
+ 0001:0022DF10       fNotes.TfrmNotes.RequestPrint
+ 0001:00230CC8       fNotes.TfrmNotes.SaveCurrentNote
+ 0001:00230750       fNotes.TfrmNotes.SaveEditedNote
+ 0001:00235568       fNotes.TfrmNotes.SaveSignItem
+ 0001:00237570       fNotes.TfrmNotes.SetEditingIndex
+ 0001:0022E2AC       fNotes.TfrmNotes.SetFontSize
+ 0001:00239EA8       fNotes.TfrmNotes.SetNoteTreeLabel
+ 0001:0022ECC4       fNotes.TfrmNotes.SetSubjectVisible
+ 0001:00236DCC       fNotes.TfrmNotes.SetViewContext
+ 0001:002395F8       fNotes.TfrmNotes.ShowPCEButtons
+ 0001:0022E460       fNotes.TfrmNotes.ShowPCEControls
+ 0001:0023A5A4       fNotes.TfrmNotes.sptHorzCanResize
+ 0001:002331C8       fNotes.TfrmNotes.StartNewEdit
+ 0001:00232820       fNotes.TfrmNotes.timAutoSaveTimer
+ 0001:002381C4       fNotes.TfrmNotes.tvNotesChange
+ 0001:00238E14       fNotes.TfrmNotes.tvNotesClick
+ 0001:00238978       fNotes.TfrmNotes.tvNotesCollapsed
+ 0001:00238EE8       fNotes.TfrmNotes.tvNotesDragDrop
+ 0001:00238E24       fNotes.TfrmNotes.tvNotesDragOver
+ 0001:0023A660       fNotes.TfrmNotes.tvNotesExit
+ 0001:00238D5C       fNotes.TfrmNotes.tvNotesExpanded
+ 0001:00238F88       fNotes.TfrmNotes.tvNotesStartDrag
+ 0001:0022F088       fNotes.TfrmNotes.UnlockConsultRequest
+ 0001:0023AFE4       fNotes.TfrmNotes.UpdateFormForInput
+ 0001:0023A250       fNotes.TfrmNotes.UpdateNoteAuthor
+ 0001:00238144       fNotes.TfrmNotes.UpdateTreeView
+ 0001:0022EC04       fNotes.TfrmNotes.VerifyNoteTitle
+ 0001:0023ADF4       fNotes.TfrmNotes.ViewInfo
+ 0004:00005C09       fNotes.uChanging
+ 0004:00005C0A       fNotes.uIDNotesActive
+ 0004:00005BA0       fNotes.uPCEEdit
+ 0004:00005B9C       fNotes.uPCEShow
+ 0001:00231474       fNotes.UpdateEncounterInfo
+ 0004:00005BAC       fNotes.uTIUContext
+ 0004:00005BA4       fNotes.ViewContext
+ 0001:001B92F4       fNotesBP..TfrmNotesBP
+ 0001:001B9520       fNotesBP.QueryBoilerPlate
+ 0001:001B95DC       fNotesBP.TfrmNotesBP.cmdCloseClick
+ 0001:001B95A4       fNotesBP.TfrmNotesBP.cmdPreviewClick
+ 0001:001B95E4       fNotesBP.TfrmNotesBP.FormKeyUp
+ 0001:001A748C       fNoteST..TfrmNotesSearchText
+ 0001:001A771C       fNoteST.SelectSearchText
+ 0001:001A7850       fNoteST.TfrmNotesSearchText.cmdCancelClick
+ 0001:001A7860       fNoteST.TfrmNotesSearchText.cmdOKClick
+ 0001:001A794C       fNoteST.TfrmNotesSearchText.FormDestroy
+ 0001:001A7954       fNoteST.TfrmNotesSearchText.FormResize
+ 0001:001A7944       fNoteST.TfrmNotesSearchText.FormShow
+ 0001:002D9984       fNoteSTStop..TfrmSearchStop
+ 0004:000060C0       fNoteSTStop.frmSearchStop
+ 0001:002D9B78       fNoteSTStop.TfrmSearchStop.btnSearchStopClick
+ 0001:002D9B84       fNoteSTStop.TfrmSearchStop.FormShow
+ 0001:0020DC7C       fOCAccept..TfrmOCAccept
+ 0001:0020DE5C       fOCAccept.AcceptOrderWithChecks
+ 0001:001D7388       fOCSession..TfrmOCSession
+ 0001:001D7694       fOCSession..TOCRec
+ 0001:001D779C       fOCSession.ExecuteReleaseOrderChecks
+ 0001:001D78D8       fOCSession.ExecuteSessionOrderChecks
+ 0004:00005964       fOCSession.FOldHintHidePause
+ 0001:001D8438       fOCSession.TfrmOCSession.btnReturnClick
+ 0001:001D80EC       fOCSession.TfrmOCSession.cmdCancelOrderClick
+ 0001:001D8294       fOCSession.TfrmOCSession.cmdContinueClick
+ 0001:001D8400       fOCSession.TfrmOCSession.FormClose
+ 0001:001D841C       fOCSession.TfrmOCSession.FormResize
+ 0001:001D8408       fOCSession.TfrmOCSession.FormShow
+ 0001:001D7F08       fOCSession.TfrmOCSession.lstChecksDrawItem
+ 0001:001D7D9C       fOCSession.TfrmOCSession.lstChecksMeasureItem
+ 0001:001D8448       fOCSession.TfrmOCSession.memNoteEnter
+ 0001:001D7C6C       fOCSession.TfrmOCSession.SetReqJustify
+ 0001:001D8424       fOCSession.TfrmOCSession.txtJustifyKeyDown
+ 0001:001D7704       fOCSession.TOCRec.Create
+ 0001:001D775C       fOCSession.TOCRec.Destroy
+ 0004:00005960       fOCSession.uCheckedOrders
+ 0001:00207BB0       fODActive..TfrmODActive
+ 0001:00207E7C       fODActive.CopyActiveOrdersToEvent
+ 0001:00208254       fODActive.TfrmODActive.btnCancelClick
+ 0001:00207FEC       fODActive.TfrmODActive.btnOKClick
+ 0001:0020825C       fODActive.TfrmODActive.FormCreate
+ 0001:002084A4       fODActive.TfrmODActive.FormDestroy
+ 0001:00208B0C       fODActive.TfrmODActive.hdControlSectionResize
+ 0001:0020829C       fODActive.TfrmODActive.LoadActiveOrders
+ 0001:002086E4       fODActive.TfrmODActive.lstActiveOrdersDrawItem
+ 0001:002084E0       fODActive.TfrmODActive.lstActiveOrdersMeasureItem
+ 0001:00208BEC       fODActive.TfrmODActive.MeasureColumnHeight
+ 0001:00208B40       fODActive.TfrmODActive.RedrawActiveList
+ 0001:00208AA0       fODActive.TfrmODActive.RetrieveVisibleOrders
+ 0001:00202280       fODAuto..TfrmODAuto
+ 0001:00202434       fODAuto.TfrmODAuto.InitDialog
+ 0001:002026D0       fODAuto.TfrmODAuto.SetupDialog
+ 0001:0020243C       fODAuto.TfrmODAuto.Validate
+ 0004:00006084       fODBase..5
+ 0001:002CA610       fODBase..TCtrlInit
+ 0001:002CA688       fODBase..TCtrlInits
+ 0001:002CA784       fODBase..TfrmODBase
+ 0001:002CA6E0       fODBase..TResponses
+ 0001:002CD8D4       fODBase.AssignBPText
+ 0004:00006080       fODBase.CIDCOkToSave
+ 0001:002CAAAC       fODBase.ClearControl
+ 0004:00006078       fODBase.DEASig
+ 0004:0000607C       fODBase.DupORIFN
+ 0003:00003A8C       fODBase.EventDefaultOD
+ 0001:002CFF10       fODBase.Finalization
+ 0002:00001720       fODBase.fODBase
+ 0003:00003A6C       fODBase.frmODBase
+ 0003:00003A78       fODBase.ImmdCopyAct
+ 0003:00003A90       fODBase.IsTransferAction
+ 0003:00003A7C       fODBase.IsUDGroup
+ 0003:00003A80       fODBase.NoFresh
+ 0003:00003A88       fODBase.OrderSource
+ 0001:002CAC10       fODBase.ResetControl
+ 0003:00003A84       fODBase.SaveAsCurrent
+ 0001:002CB7BC       fODBase.SortPromptsBySequence
+ 0001:002CAD54       fODBase.TCtrlInit.Create
+ 0001:002CADA0       fODBase.TCtrlInit.Destroy
+ 0001:002CAEC0       fODBase.TCtrlInits.ClearOI
+ 0001:002CADDC       fODBase.TCtrlInits.Create
+ 0001:002CB73C       fODBase.TCtrlInits.DefaultText
+ 0001:002CAE38       fODBase.TCtrlInits.Destroy
+ 0001:002CAF10       fODBase.TCtrlInits.ExtractInits
+ 0001:002CB1DC       fODBase.TCtrlInits.FindInitByName
+ 0001:002CB184       fODBase.TCtrlInits.LoadDefaults
+ 0001:002CB1B0       fODBase.TCtrlInits.LoadOrderItem
+ 0001:002CB298       fODBase.TCtrlInits.SetControl
+ 0001:002CB4D4       fODBase.TCtrlInits.SetListOnly
+ 0001:002CB5CC       fODBase.TCtrlInits.SetPopupMenu
+ 0001:002CB77C       fODBase.TCtrlInits.TextOf
+ 0001:002CEE28       fODBase.TfrmODBase.AcceptOrderChecks
+ 0001:002CDFE0       fODBase.TfrmODBase.ClearDialogControls
+ 0001:002CF384       fODBase.TfrmODBase.cmdAcceptClick
+ 0001:002CF830       fODBase.TfrmODBase.cmdQuitClick
+ 0001:002CFAB8       fODBase.TfrmODBase.DoSetFontSize
+ 0001:002CF854       fODBase.TfrmODBase.FormClose
+ 0001:002CF88C       fODBase.TfrmODBase.FormCloseQuery
+ 0001:002CEB90       fODBase.TfrmODBase.FormCreate
+ 0001:002CED38       fODBase.TfrmODBase.FormDestroy
+ 0001:002CEDDC       fODBase.TfrmODBase.FormKeyPress
+ 0001:002CE4F8       fODBase.TfrmODBase.GetKeyVariable
+ 0001:002CE1CC       fODBase.TfrmODBase.InitDialog
+ 0001:002CFC4C       fODBase.TfrmODBase.LESValidationCheck
+ 0001:002CFA30       fODBase.TfrmODBase.memMessageMouseUp
+ 0001:002CE200       fODBase.TfrmODBase.OrderForInpatient
+ 0001:002CE2F0       fODBase.TfrmODBase.OrderMessage
+ 0001:002CFB88       fODBase.TfrmODBase.pnlMessageExit
+ 0001:002CFBA4       fODBase.TfrmODBase.pnlMessageMouseDown
+ 0001:002CFBD4       fODBase.TfrmODBase.pnlMessageMouseMove
+ 0001:002CE360       fODBase.TfrmODBase.PreserveControl
+ 0001:002CFA50       fODBase.TfrmODBase.SetDefaultCoPay
+ 0001:002CE384       fODBase.TfrmODBase.SetDialogIEN
+ 0001:002CE0B0       fODBase.TfrmODBase.SetDisplayGroup
+ 0001:002CE0DC       fODBase.TfrmODBase.SetFillerID
+ 0001:002CFB04       fODBase.TfrmODBase.SetFontSize
+ 0001:002CE828       fODBase.TfrmODBase.SetKeyVariables
+ 0001:002CE3A0       fODBase.TfrmODBase.SetupDialog
+ 0001:002CE27C       fODBase.TfrmODBase.ShowOrderMessage
+ 0001:002CFA24       fODBase.TfrmODBase.updateSig
+ 0001:002CE848       fODBase.TfrmODBase.Validate
+ 0001:002CEF54       fODBase.TfrmODBase.ValidSave
+ 0001:002CC898       fODBase.TResponses.AppendChildren
+ 0001:002CBD3C       fODBase.TResponses.BuildOCItems
+ 0001:002CB9B8       fODBase.TResponses.Clear
+ 0001:002CB940       fODBase.TResponses.Clear
+ 0001:002CB818       fODBase.TResponses.Create
+ 0001:002CB8AC       fODBase.TResponses.Destroy
+ 0001:002CC078       fODBase.TResponses.EValueFor
+ 0001:002CC830       fODBase.TResponses.FindPromptByIEN
+ 0001:002CC3A8       fODBase.TResponses.FindResponseByIEN
+ 0001:002CC1D8       fODBase.TResponses.FindResponseByName
+ 0001:002CC420       fODBase.TResponses.FormatResponse
+ 0001:002CFB20       fODBase.TResponses.GetIENForPrompt
+ 0001:002CCA3C       fODBase.TResponses.GetOrderText
+ 0001:002CC254       fODBase.TResponses.IENForPrompt
+ 0001:002CC2BC       fODBase.TResponses.InstanceCount
+ 0001:002CC0F8       fODBase.TResponses.IValueFor
+ 0001:002CC31C       fODBase.TResponses.NextInstance
+ 0001:002CCEBC       fODBase.TResponses.OrderCRC
+ 0001:002CC178       fODBase.TResponses.PromptExists
+ 0001:002CD038       fODBase.TResponses.Remove
+ 0001:002CD128       fODBase.TResponses.SaveOrder
+ 0001:002CD078       fODBase.TResponses.SaveQuickOrder
+ 0001:002CDAC8       fODBase.TResponses.SetControl
+ 0001:002CBADC       fODBase.TResponses.SetCopyOrder
+ 0001:002CBA28       fODBase.TResponses.SetDialog
+ 0001:002CBB98       fODBase.TResponses.SetEditOrder
+ 0001:002CDE84       fODBase.TResponses.SetEventDelay
+ 0001:002CDF78       fODBase.TResponses.SetPromptFormat
+ 0001:002CBC3C       fODBase.TResponses.SetQuickOrder
+ 0001:002CBCB4       fODBase.TResponses.SetQuickOrderByID
+ 0001:002CCE2C       fODBase.TResponses.Update
+ 0003:00003A74       fODBase.XferOuttoInOnMeds
+ 0003:00003A70       fODBase.XfInToOutNow
+ 0004:00005FAC       fODBBank..5
+ 0001:002A08BC       fODBBank..TCollSamp
+ 0001:0029FF34       fODBBank..TfrmODBBank
+ 0001:002A093C       fODBBank..TLabTest
+ 0004:00005FF0       fODBBank.ALabTest
+ 0003:00003A08       fODBBank.CmtType
+ 0001:002B16D4       fODBBank.Finalization
+ 0003:00003A24       fODBBank.FMDateResponses
+ 0002:00001700       fODBBank.fODBBank
+ 0004:00006004       fODBBank.LRFDATE
+ 0004:00005FFC       fODBBank.LRFSAMP
+ 0004:0000600C       fODBBank.LRFSCH
+ 0004:00006000       fODBBank.LRFSPEC
+ 0004:00006008       fODBBank.LRFURG
+ 0004:00005FF8       fODBBank.LRFZX
+ 0004:00006010       fODBBank.LRORDERMODE
+ 0001:002A7454       fODBBank.SetError
+ 0001:002A7574       fODBBank.SetError
+ 0001:002AF44C       fODBBank.TfrmODBBank.btnCancelCommentClick
+ 0001:002AF46C       fODBBank.TfrmODBBank.btnRemoveAllClick
+ 0001:002AE038       fODBBank.TfrmODBBank.btnRemoveClick
+ 0001:002AF384       fODBBank.TfrmODBBank.btnUpdateCommentsClick
+ 0001:002B12D4       fODBBank.TfrmODBBank.calCollTimeChange
+ 0001:002AF804       fODBBank.TfrmODBBank.calWantTimeChange
+ 0001:002ACC28       fODBBank.TfrmODBBank.cboAvailCompChange
+ 0001:002ACC38       fODBBank.TfrmODBBank.cboAvailCompExit
+ 0001:002ACD98       fODBBank.TfrmODBBank.cboAvailCompNeedData
+ 0001:002AAD3C       fODBBank.TfrmODBBank.cboAvailCompSelect
+ 0001:002ACAF4       fODBBank.TfrmODBBank.cboAvailTestExit
+ 0001:002ACD6C       fODBBank.TfrmODBBank.cboAvailTestNeedData
+ 0001:002A9724       fODBBank.TfrmODBBank.cboAvailTestSelect
+ 0001:002ACFB8       fODBBank.TfrmODBBank.cboCollTimeChange
+ 0001:002AD2F4       fODBBank.TfrmODBBank.cboCollTypeChange
+ 0001:002AD604       fODBBank.TfrmODBBank.cboModifiersChange
+ 0001:002A9498       fODBBank.TfrmODBBank.cboQuickClick
+ 0001:002A94A0       fODBBank.TfrmODBBank.cboReasonsChange
+ 0001:002A961C       fODBBank.TfrmODBBank.cboReasonsEnter
+ 0001:002A96A0       fODBBank.TfrmODBBank.cboReasonsExit
+ 0001:002AFDDC       fODBBank.TfrmODBBank.cboSurgeryChange
+ 0001:002B0910       fODBBank.TfrmODBBank.cboSurgeryClick
+ 0001:002AFB28       fODBBank.TfrmODBBank.cboUrgencyChange
+ 0001:002AFD58       fODBBank.TfrmODBBank.cboUrgencyExit
+ 0001:002AFA70       fODBBank.TfrmODBBank.chkConsentClick
+ 0001:002AF618       fODBBank.TfrmODBBank.cmdAcceptClick
+ 0001:002ACDC4       fODBBank.TfrmODBBank.cmdImmedCollClick
+ 0001:002AC7AC       fODBBank.TfrmODBBank.DisableCommentPanels
+ 0001:002AC7BC       fODBBank.TfrmODBBank.DisableComponentControls
+ 0001:002AC980       fODBBank.TfrmODBBank.DisableDiagTestControls
+ 0001:002AC804       fODBBank.TfrmODBBank.EnableComponentControls
+ 0001:002AC9F0       fODBBank.TfrmODBBank.EnableDiagTestControls
+ 0001:002A72B4       fODBBank.TfrmODBBank.ExtractModifiers
+ 0001:002A7434       fODBBank.TfrmODBBank.ExtractMSBOS
+ 0001:002A73B0       fODBBank.TfrmODBBank.ExtractOther
+ 0001:002A73F4       fODBBank.TfrmODBBank.ExtractPatientInfo
+ 0001:002A72D8       fODBBank.TfrmODBBank.ExtractReasons
+ 0001:002A73D0       fODBBank.TfrmODBBank.ExtractSpecimen
+ 0001:002A7364       fODBBank.TfrmODBBank.ExtractSpecimens
+ 0001:002A7340       fODBBank.TfrmODBBank.ExtractSurgeries
+ 0001:002A7414       fODBBank.TfrmODBBank.ExtractTests
+ 0001:002A731C       fODBBank.TfrmODBBank.ExtractTNSOrders
+ 0001:002A7388       fODBBank.TfrmODBBank.ExtractTypeScreen
+ 0001:002A72F8       fODBBank.TfrmODBBank.ExtractUrgencies
+ 0001:002A0A6C       fODBBank.TfrmODBBank.FormCreate
+ 0001:002ADFE0       fODBBank.TfrmODBBank.FormDestroy
+ 0001:002A137C       fODBBank.TfrmODBBank.InitDialog
+ 0001:002A907C       fODBBank.TfrmODBBank.LoadCollType
+ 0001:002AD8F8       fODBBank.TfrmODBBank.LoadModifiers
+ 0001:002AD97C       fODBBank.TfrmODBBank.LoadReasons
+ 0001:002ACAD8       fODBBank.TfrmODBBank.LoadRequiredComment
+ 0001:002ADA00       fODBBank.TfrmODBBank.LoadUrgencies
+ 0001:002ADADC       fODBBank.TfrmODBBank.lvSelectionListClick
+ 0001:002ADE58       fODBBank.TfrmODBBank.memDiagCommentChange
+ 0001:002ACE8C       fODBBank.TfrmODBBank.pgeProductChange
+ 0001:002A934C       fODBBank.TfrmODBBank.ReadServerVariables
+ 0001:002A35DC       fODBBank.TfrmODBBank.SetOnQuickOrder
+ 0001:002A88C0       fODBBank.TfrmODBBank.SetupCollTimes
+ 0001:002A13F0       fODBBank.TfrmODBBank.SetupDialog
+ 0001:002B0998       fODBBank.TfrmODBBank.tQuantityChange
+ 0001:002B128C       fODBBank.TfrmODBBank.tQuantityClick
+ 0001:002B12B0       fODBBank.TfrmODBBank.tQuantityEnter
+ 0001:002A85CC       fODBBank.TfrmODBBank.ValidAdd
+ 0001:002A74B0       fODBBank.TfrmODBBank.Validate
+ 0001:002A75D0       fODBBank.TfrmODBBank.ValidateAdd
+ 0001:002A86E0       fODBBank.TfrmODBBank.ValidCollTime
+ 0001:002A7254       fODBBank.TLabTest.ChangeSpecimen
+ 0001:002A666C       fODBBank.TLabTest.Create
+ 0001:002A6C10       fODBBank.TLabTest.Destroy
+ 0001:002A6E08       fODBBank.TLabTest.FillCollSampList
+ 0001:002A6CA8       fODBBank.TLabTest.IndexOfCollSamp
+ 0001:002A726C       fODBBank.TLabTest.LabCanCollect
+ 0001:002A6CE4       fODBBank.TLabTest.LoadAllSamples
+ 0001:002A7298       fODBBank.TLabTest.ObtainCollSamp
+ 0001:002A72A0       fODBBank.TLabTest.ObtainComment
+ 0001:002A71BC       fODBBank.TLabTest.SetCollSampDflts
+ 0004:00005FD1       fODBBank.uComponentSelected
+ 0004:00005FE8       fODBBank.uDfltCollType
+ 0004:00005FD4       fODBBank.uDfltUrgency
+ 0004:00005FE4       fODBBank.uGetTnS
+ 0004:00005FC4       fODBBank.uModifierList
+ 0004:00005FCC       fODBBank.uRaw
+ 0004:00005FEC       fODBBank.uReason
+ 0004:00005FC8       fODBBank.uReasonsList
+ 0004:00005FB0       fODBBank.uSelectedItems
+ 0004:00005FDC       fODBBank.uSelSurgery
+ 0004:00005FD8       fODBBank.uSelUrgency
+ 0004:00005FF4       fODBBank.UserHasLRLABKey
+ 0004:00005FE0       fODBBank.uSpecimen
+ 0004:00005FD0       fODBBank.uTestSelected
+ 0004:00005FB8       fODBBank.uTestsForResults
+ 0004:00005FC0       fODBBank.uTNSOrders
+ 0004:00005FBC       fODBBank.uUrgencyList
+ 0004:00005FB4       fODBBank.uVBECList
+ 0001:00216D94       fODChangeEvtDisp..TfrmChangeEventDisp
+ 0001:00217004       fODChangeEvtDisp.DispOrdersForEventChange
+ 0001:002172B4       fODChangeEvtDisp.TfrmChangeEventDisp.cmdCancelClick
+ 0001:002172A4       fODChangeEvtDisp.TfrmChangeEventDisp.cmdOKClick
+ 0001:002170C8       fODChangeEvtDisp.TfrmChangeEventDisp.lstCVOrdersDrawItem
+ 0001:002171CC       fODChangeEvtDisp.TfrmChangeEventDisp.lstCVOrdersMeasureItem
+ 0001:002685B8       fODChangeUnreleasedRenew..TfrmODChangeUnreleasedRenew
+ 0001:00268898       fODChangeUnreleasedRenew.ExecuteChangeRenewedOrder
+ 0001:00268BD8       fODChangeUnreleasedRenew.TfrmODChangeUnreleasedRenew.btnCancelClick
+ 0001:00268BE0       fODChangeUnreleasedRenew.TfrmODChangeUnreleasedRenew.btnOKClick
+ 0001:00268B60       fODChangeUnreleasedRenew.TfrmODChangeUnreleasedRenew.FormCreate
+ 0001:00207554       fODChild..TfrmODChild
+ 0001:002077C0       fODChild.ActionOnComplexOrder
+ 0001:00207BA0       fODChild.TfrmODChild.btnCancelClick
+ 0001:00207B90       fODChild.TfrmODChild.btnOKClick
+ 0001:00207944       fODChild.TfrmODChild.FormCreate
+ 0001:0020794C       fODChild.TfrmODChild.lstODComplexDrawItem
+ 0001:00207A90       fODChild.TfrmODChild.lstODComplexMeasureItem
+ 0004:00005A6C       fODConsult..2
+ 0001:001FB0AC       fODConsult..TfrmODCslt
+ 0004:00005A94       fODConsult.BADxUpdated
+ 0004:00005A68       fODConsult.consultQuickOrder
+ 0004:00005A78       fODConsult.Defaults
+ 0001:001FFAAC       fODConsult.DisableReason
+ 0004:00005A64       fODConsult.displayDXCode
+ 0001:001FFA30       fODConsult.EnableReason
+ 0001:002012E8       fODConsult.Finalization
+ 0002:000013FC       fODConsult.fODConsult
+ 0004:00005A90       fODConsult.GMRCREAF
+ 0004:00005A60       fODConsult.LastNode
+ 0004:00005A7C       fODConsult.ProvDx
+ 0004:00005A98       fODConsult.quickCode
+ 0004:00005A74       fODConsult.QuickList
+ 0001:001FC738       fODConsult.SetError
+ 0004:00005A70       fODConsult.SvcList
+ 0001:0020128C       fODConsult.TfrmODCslt.AdjustMemReasonSize
+ 0001:00200A78       fODConsult.TfrmODCslt.btnDiagnosisClick
+ 0001:001FEDA0       fODConsult.TfrmODCslt.btnServiceTreeClick
+ 0001:001FCE14       fODConsult.TfrmODCslt.BuildQuickTree
+ 0001:001FFEC0       fODConsult.TfrmODCslt.cboServiceExit
+ 0001:00200A10       fODConsult.TfrmODCslt.cboServiceKeyDown
+ 0001:00200A58       fODConsult.TfrmODCslt.cboServiceKeyUp
+ 0001:001FE5F8       fODConsult.TfrmODCslt.cboServiceSelect
+ 0001:001FE3C8       fODConsult.TfrmODCslt.cmdAcceptClick
+ 0001:001FF370       fODConsult.TfrmODCslt.cmdLexSearchClick
+ 0001:00200D5C       fODConsult.TfrmODCslt.cmdQuitClick
+ 0001:001FDB50       fODConsult.TfrmODCslt.ControlChange
+ 0001:00200254       fODConsult.TfrmODCslt.DefaultReasonForRequest
+ 0001:00200540       fODConsult.TfrmODCslt.DoSetFontSize
+ 0001:00201230       fODConsult.TfrmODCslt.FormClose
+ 0001:001FB820       fODConsult.TfrmODCslt.FormCreate
+ 0001:001FED64       fODConsult.TfrmODCslt.FormDestroy
+ 0001:00201268       fODConsult.TfrmODCslt.FormResize
+ 0001:00200670       fODConsult.TfrmODCslt.GetProvDxandValidateCode
+ 0001:001FBA24       fODConsult.TfrmODCslt.InitDialog
+ 0001:001FE520       fODConsult.TfrmODCslt.memReasonExit
+ 0001:0020098C       fODConsult.TfrmODCslt.memReasonKeyDown
+ 0001:002009E8       fODConsult.TfrmODCslt.memReasonKeyPress
+ 0001:002005B4       fODConsult.TfrmODCslt.memReasonKeyUp
+ 0001:001FF958       fODConsult.TfrmODCslt.mnuPopProvDxDeleteClick
+ 0001:00200454       fODConsult.TfrmODCslt.pnlServiceTreeButtonEnter
+ 0001:0020047C       fODConsult.TfrmODCslt.pnlServiceTreeButtonExit
+ 0001:002001A0       fODConsult.TfrmODCslt.popReasonCopyClick
+ 0001:00200180       fODConsult.TfrmODCslt.popReasonCutClick
+ 0001:002001C0       fODConsult.TfrmODCslt.popReasonPasteClick
+ 0001:00200064       fODConsult.TfrmODCslt.popReasonPopup
+ 0001:00200220       fODConsult.TfrmODCslt.popReasonReformatClick
+ 0001:001FCC4C       fODConsult.TfrmODCslt.radInpatientClick
+ 0001:001FCD30       fODConsult.TfrmODCslt.radOutpatientClick
+ 0001:001FF068       fODConsult.TfrmODCslt.ReadServerVariables
+ 0001:00200D90       fODConsult.TfrmODCslt.SaveConsultDxForNurse
+ 0001:0020058C       fODConsult.TfrmODCslt.SetFontSize
+ 0001:001FF500       fODConsult.TfrmODCslt.SetProvDiagPromptingMode
+ 0001:00200E84       fODConsult.TfrmODCslt.SetUpCopyConsultDiagnoses
+ 0001:001FBD24       fODConsult.TfrmODCslt.SetupDialog
+ 0001:001FE2F8       fODConsult.TfrmODCslt.SetUpQuickOrderDX
+ 0001:001FFB38       fODConsult.TfrmODCslt.SetupReasonForRequest
+ 0001:001FFD10       fODConsult.TfrmODCslt.ShowPrerequisites
+ 0001:001FCF24       fODConsult.TfrmODCslt.treServiceChange
+ 0001:001FF250       fODConsult.TfrmODCslt.treServiceCollapsing
+ 0001:001FE1F0       fODConsult.TfrmODCslt.treServiceEnter
+ 0001:001FE210       fODConsult.TfrmODCslt.treServiceExit
+ 0001:002004A4       fODConsult.TfrmODCslt.treServiceKeyDown
+ 0001:00200520       fODConsult.TfrmODCslt.treServiceKeyUp
+ 0001:001FF290       fODConsult.TfrmODCslt.treServiceMouseDown
+ 0001:001FCC1C       fODConsult.TfrmODCslt.txtAttnNeedData
+ 0001:001FF998       fODConsult.TfrmODCslt.txtProvDiagChange
+ 0001:001FC7A4       fODConsult.TfrmODCslt.Validate
+ 0004:00006040       fODDiet..2
+ 0001:002BEA9C       fODDiet..TfrmODDiet
+ 0001:002BF70C       fODDiet..TTFProduct
+ 0001:002C56EC       fODDiet.ActivateButton
+ 0001:002C87AC       fODDiet.Finalization
+ 0003:00003A34       fODDiet.FMDayLetters
+ 0002:00001710       fODDiet.fODDiet
+ 0001:002C032C       fODDiet.MealTimePassed
+ 0001:002C04B4       fODDiet.OPMealTimePassed
+ 0001:002C3D44       fODDiet.PlaceControl
+ 0001:002C02C0       fODDiet.SetError
+ 0001:002C2AAC       fODDiet.SetError
+ 0001:002C5760       fODDiet.SetMealTimes
+ 0001:002C6604       fODDiet.TfrmODDiet.AOChange
+ 0001:002C5B6C       fODDiet.TfrmODDiet.calELStartChange
+ 0001:002C5AEC       fODDiet.TfrmODDiet.calELStartEnter
+ 0001:002C5BE8       fODDiet.TfrmODDiet.calELStartExit
+ 0001:002C5CD8       fODDiet.TfrmODDiet.calELStopChange
+ 0001:002C72FC       fODDiet.TfrmODDiet.calOPStartChange
+ 0001:002C727C       fODDiet.TfrmODDiet.calOPStartEnter
+ 0001:002C7480       fODDiet.TfrmODDiet.calOPStartExit
+ 0001:002C75F0       fODDiet.TfrmODDiet.calOPStopChange
+ 0001:002C3064       fODDiet.TfrmODDiet.cboDietAvailExit
+ 0001:002C2AF0       fODDiet.TfrmODDiet.cboDietAvailMouseClick
+ 0001:002C2A7C       fODDiet.TfrmODDiet.cboDietAvailNeedData
+ 0001:002C6AFC       fODDiet.TfrmODDiet.cboOPDietAvailExit
+ 0001:002C8598       fODDiet.TfrmODDiet.cboOPDietAvailKeyDown
+ 0001:002C67BC       fODDiet.TfrmODDiet.cboOPDietAvailMouseClick
+ 0001:002C3BC8       fODDiet.TfrmODDiet.cboProductExit
+ 0001:002C3964       fODDiet.TfrmODDiet.cboProductMouseClick
+ 0001:002C42D0       fODDiet.TfrmODDiet.cboStrengthChange
+ 0001:002C4210       fODDiet.TfrmODDiet.cboStrengthEnter
+ 0001:002C4378       fODDiet.TfrmODDiet.cboStrengthExit
+ 0001:002C423C       fODDiet.TfrmODDiet.cboStrengthKeyDown
+ 0001:002C837C       fODDiet.TfrmODDiet.cmdAcceptClick
+ 0001:002C7FB0       fODDiet.TfrmODDiet.cmdOPRemoveClick
+ 0001:002C3104       fODDiet.TfrmODDiet.cmdRemoveClick
+ 0001:002C488C       fODDiet.TfrmODDiet.cmdTFRemoveClick
+ 0001:002C31B0       fODDiet.TfrmODDiet.DietChange
+ 0001:002C24F8       fODDiet.TfrmODDiet.DietCheckForNPO
+ 0001:002C25F4       fODDiet.TfrmODDiet.DietCheckForTF
+ 0001:002C5DA4       fODDiet.TfrmODDiet.ELChange
+ 0001:002C73BC       fODDiet.TfrmODDiet.FMDays
+ 0001:002C7384       fODDiet.TfrmODDiet.FMDOW
+ 0001:002BF778       fODDiet.TfrmODDiet.FormCreate
+ 0001:002BFBA0       fODDiet.TfrmODDiet.FormDestroy
+ 0001:002C8514       fODDiet.TfrmODDiet.FormKeyDown
+ 0001:002BFBD0       fODDiet.TfrmODDiet.FormResize
+ 0001:002C551C       fODDiet.TfrmODDiet.GetDaysOfWeek
+ 0001:002C5420       fODDiet.TfrmODDiet.GetMealTime
+ 0001:002C7E40       fODDiet.TfrmODDiet.GetOPDaysOfWeek
+ 0001:002C805C       fODDiet.TfrmODDiet.GetOPMealWindow
+ 0001:002C3C68       fODDiet.TfrmODDiet.grdSelectedDrawCell
+ 0001:002C3DD0       fODDiet.TfrmODDiet.grdSelectedSelectCell
+ 0001:002C58C8       fODDiet.TfrmODDiet.grpMealClick
+ 0001:002C7BDC       fODDiet.TfrmODDiet.grpOPMealClick
+ 0001:002BFD88       fODDiet.TfrmODDiet.InitDialog
+ 0001:002C6350       fODDiet.TfrmODDiet.IPChange
+ 0001:002C568C       fODDiet.TfrmODDiet.IsEarlyTray
+ 0001:002C1850       fODDiet.TfrmODDiet.nbkDietChange
+ 0001:002C1560       fODDiet.TfrmODDiet.nbkDietChanging
+ 0001:002C7768       fODDiet.TfrmODDiet.OPChange
+ 0001:002C80EC       fODDiet.TfrmODDiet.OPDietCheckForNPO
+ 0001:002C81E8       fODDiet.TfrmODDiet.OPDietCheckForTF
+ 0001:002C85C4       fODDiet.TfrmODDiet.PatientHasRecurringMeals
+ 0001:002C6544       fODDiet.TfrmODDiet.ResetControlsAO
+ 0001:002C2788       fODDiet.TfrmODDiet.ResetControlsDO
+ 0001:002C4D94       fODDiet.TfrmODDiet.ResetControlsEL
+ 0001:002C628C       fODDiet.TfrmODDiet.ResetControlsIP
+ 0001:002C6B9C       fODDiet.TfrmODDiet.ResetControlsOP
+ 0001:002C35EC       fODDiet.TfrmODDiet.ResetControlsTF
+ 0001:002C5A54       fODDiet.TfrmODDiet.SetEnableDOW
+ 0001:002C7BF8       fODDiet.TfrmODDiet.SetEnableOPDOW
+ 0001:002C3F00       fODDiet.TfrmODDiet.SetNextCell
+ 0001:002BFDB4       fODDiet.TfrmODDiet.SetupDialog
+ 0001:002C6570       fODDiet.TfrmODDiet.SetValuesFromResponsesAO
+ 0001:002C2824       fODDiet.TfrmODDiet.SetValuesFromResponsesDO
+ 0001:002C4EFC       fODDiet.TfrmODDiet.SetValuesFromResponsesEL
+ 0001:002C62BC       fODDiet.TfrmODDiet.SetValuesFromResponsesIP
+ 0001:002C6DEC       fODDiet.TfrmODDiet.SetValuesFromResponsesOP
+ 0001:002C3634       fODDiet.TfrmODDiet.SetValuesFromResponsesTF
+ 0001:002C495C       fODDiet.TfrmODDiet.TFChange
+ 0001:002C38F4       fODDiet.TfrmODDiet.TFClearGrid
+ 0001:002C3F2C       fODDiet.TfrmODDiet.TFMoveToNextCell
+ 0001:002C3FE0       fODDiet.TfrmODDiet.TFSetAmountForRow
+ 0001:002C4164       fODDiet.TfrmODDiet.TFStrengthCode
+ 0001:002C470C       fODDiet.TfrmODDiet.txtQuantityChange
+ 0001:002C4450       fODDiet.TfrmODDiet.txtQuantityEnter
+ 0001:002C47B4       fODDiet.TfrmODDiet.txtQuantityExit
+ 0001:002C4470       fODDiet.TfrmODDiet.txtQuantityKeyDown
+ 0001:002C05D8       fODDiet.TfrmODDiet.Validate
+ 0004:00006034       fODDiet.uDialogName
+ 0004:00006044       fODDiet.uDietParams
+ 0004:00006038       fODDiet.uFHAUTH
+ 0004:0000603C       fODDiet.uRecurringMealList
+ 0001:0018FEC8       fODDietLT..TfrmODDietLT
+ 0001:00190160       fODDietLT.AMPMToFMTime
+ 0001:00190378       fODDietLT.CheckLateTray
+ 0001:00190C28       fODDietLT.LateTrayCheck
+ 0001:00190DC4       fODDietLT.LateTrayOrder
+ 0001:00190298       fODDietLT.SetAvailTimes
+ 0001:00191038       fODDietLT.TfrmODDietLT.cmdNoClick
+ 0001:00190F88       fODDietLT.TfrmODDietLT.cmdYesClick
+ 0001:00190F80       fODDietLT.TfrmODDietLT.FormCreate
+ 0001:00208F8C       fODGen..TDialogCtrl
+ 0001:00209008       fODGen..TfrmODGen
+ 0001:002099B8       fODGen.SetError
+ 0001:0020AF08       fODGen.TfrmODGen.cmdAcceptClick
+ 0001:0020AF28       fODGen.TfrmODGen.ControlChange
+ 0001:00209424       fODGen.TfrmODGen.FormClose
+ 0001:00209220       fODGen.TfrmODGen.FormCreate
+ 0001:002098CC       fODGen.TfrmODGen.InitDialog
+ 0001:0020ABE8       fODGen.TfrmODGen.LookupNeedData
+ 0001:00209D58       fODGen.TfrmODGen.PlaceControls
+ 0001:0020A020       fODGen.TfrmODGen.PlaceDateTime
+ 0001:0020A150       fODGen.TfrmODGen.PlaceFreeText
+ 0001:0020ADA4       fODGen.TfrmODGen.PlaceHidden
+ 0001:0020ADC4       fODGen.TfrmODGen.PlaceLabel
+ 0001:0020A6FC       fODGen.TfrmODGen.PlaceLookup
+ 0001:0020ACB0       fODGen.TfrmODGen.PlaceMemo
+ 0001:0020A2A4       fODGen.TfrmODGen.PlaceNumeric
+ 0001:0020A3A0       fODGen.TfrmODGen.PlaceSetOfCodes
+ 0001:0020A5B4       fODGen.TfrmODGen.PlaceYesNo
+ 0001:00209570       fODGen.TfrmODGen.SetDialogIEN
+ 0001:0020963C       fODGen.TfrmODGen.SetupDialog
+ 0001:0020AE44       fODGen.TfrmODGen.TrimAllMemos
+ 0001:002098C4       fODGen.TfrmODGen.UpdateAccessabilityActions
+ 0001:00209A14       fODGen.TfrmODGen.Validate
+ 0004:00005F80       fODLab..5
+ 0001:00297FBC       fODLab..TCollSamp
+ 0001:00297754       fODLab..TfrmODLab
+ 0001:0029803C       fODLab..TLabTest
+ 0004:00005F8C       fODLab.ALabTest
+ 0003:000039DC       fODLab.CmtType
+ 0001:0029F9E8       fODLab.Finalization
+ 0003:000039F8       fODLab.FMDateResponses
+ 0002:000016F8       fODLab.fODLab
+ 0004:00005FA0       fODLab.LRFDATE
+ 0004:00005F98       fODLab.LRFSAMP
+ 0004:00005FA8       fODLab.LRFSCH
+ 0004:00005F9C       fODLab.LRFSPEC
+ 0004:00005FA4       fODLab.LRFURG
+ 0004:00005F94       fODLab.LRFZX
+ 0001:0029AC98       fODLab.SetError
+ 0001:0029C63C       fODLab.TfrmODLab.cboAvailTestExit
+ 0001:0029C600       fODLab.TfrmODLab.cboAvailTestNeedData
+ 0001:0029C770       fODLab.TfrmODLab.cboAvailTestSelect
+ 0001:0029D288       fODLab.TfrmODLab.cboCollSampChange
+ 0001:0029EB48       fODLab.TfrmODLab.cboCollSampKeyPause
+ 0001:0029EBEC       fODLab.TfrmODLab.cboCollSampMouseClick
+ 0001:0029D5E8       fODLab.TfrmODLab.cboCollTimeChange
+ 0001:0029EEA0       fODLab.TfrmODLab.cboCollTimeExit
+ 0001:0029D8B4       fODLab.TfrmODLab.cboCollTypeChange
+ 0001:0029D6CC       fODLab.TfrmODLab.cboFrequencyChange
+ 0001:0029D504       fODLab.TfrmODLab.cboSpecimenChange
+ 0001:0029F454       fODLab.TfrmODLab.cboSpecimenKeyPause
+ 0001:0029F174       fODLab.TfrmODLab.cboSpecimenMouseClick
+ 0001:0029D484       fODLab.TfrmODLab.cboUrgencyChange
+ 0001:0029F4CC       fODLab.TfrmODLab.cmdImmedCollClick
+ 0001:0029A3E0       fODLab.TfrmODLab.ControlChange
+ 0001:0029F6E0       fODLab.TfrmODLab.DetermineCollectionDefaults
+ 0001:0029EAD0       fODLab.TfrmODLab.DisableCommentPanels
+ 0001:0029C2D0       fODLab.TfrmODLab.DisplayChangedOrders
+ 0001:0029E9A4       fODLab.TfrmODLab.DoseDrawComment
+ 0001:0029E240       fODLab.TfrmODLab.FormClose
+ 0001:0029816C       fODLab.TfrmODLab.FormCreate
+ 0001:0029F1E4       fODLab.TfrmODLab.GetAllCollSamples
+ 0001:0029F328       fODLab.TfrmODLab.GetAllSpecimens
+ 0001:0029E638       fODLab.TfrmODLab.grpPeakTroughClick
+ 0001:00298758       fODLab.TfrmODLab.InitDialog
+ 0001:00299D68       fODLab.TfrmODLab.LoadCollType
+ 0001:0029E270       fODLab.TfrmODLab.LoadRequiredComment
+ 0001:0029F97C       fODLab.TfrmODLab.pnlCollTimeButtonEnter
+ 0001:0029F998       fODLab.TfrmODLab.pnlCollTimeButtonExit
+ 0001:0029F594       fODLab.TfrmODLab.ReadServerVariables
+ 0001:0029DA84       fODLab.TfrmODLab.SetupCollTimes
+ 0001:00298878       fODLab.TfrmODLab.SetupDialog
+ 0001:0029EAB4       fODLab.TfrmODLab.txtAddlCommentExit
+ 0001:0029E480       fODLab.TfrmODLab.txtAntiCoagulantExit
+ 0001:0029E7A4       fODLab.TfrmODLab.txtDoseTimeExit
+ 0001:0029E8A4       fODLab.TfrmODLab.txtDrawTimeExit
+ 0001:0029E358       fODLab.TfrmODLab.txtOrderCommentExit
+ 0001:0029E5B8       fODLab.TfrmODLab.txtUrineVolumeExit
+ 0001:0029ACF4       fODLab.TfrmODLab.Validate
+ 0001:0029ECC0       fODLab.TfrmODLab.ValidCollTime
+ 0001:0029F9B4       fODLab.TfrmODLab.ViewinReportWindow1Click
+ 0001:00299928       fODLab.TLabTest.ChangeCollSamp
+ 0001:00299964       fODLab.TLabTest.ChangeComment
+ 0001:00299934       fODLab.TLabTest.ChangeSpecimen
+ 0001:0029994C       fODLab.TLabTest.ChangeUrgency
+ 0001:00298D78       fODLab.TLabTest.Create
+ 0001:002992E4       fODLab.TLabTest.Destroy
+ 0001:002994DC       fODLab.TLabTest.FillCollSampList
+ 0001:0029937C       fODLab.TLabTest.IndexOfCollSamp
+ 0001:00299974       fODLab.TLabTest.LabCanCollect
+ 0001:002993B8       fODLab.TLabTest.LoadAllSamples
+ 0001:002999A0       fODLab.TLabTest.LoadCollSamp
+ 0001:00299B54       fODLab.TLabTest.LoadSpecimen
+ 0001:0029A038       fODLab.TLabTest.LoadUrgency
+ 0001:0029A168       fODLab.TLabTest.NameOfCollSamp
+ 0001:0029A1A4       fODLab.TLabTest.NameOfSpecimen
+ 0001:0029A2BC       fODLab.TLabTest.NameOfUrgency
+ 0001:0029A384       fODLab.TLabTest.ObtainCollSamp
+ 0001:0029A3CC       fODLab.TLabTest.ObtainComment
+ 0001:0029A38C       fODLab.TLabTest.ObtainSpecimen
+ 0001:0029A3C4       fODLab.TLabTest.ObtainUrgency
+ 0001:00299890       fODLab.TLabTest.SetCollSampDflts
+ 0004:00005F88       fODLab.uDfltCollType
+ 0004:00005F84       fODLab.uDfltUrgency
+ 0004:00005F90       fODLab.UserHasLRLABKey
+ 0001:00296C18       fODLabImmedColl..TfrmODLabImmedColl
+ 0001:00296E9C       fODLabImmedColl.SelectImmediateCollectTime
+ 0001:002971C8       fODLabImmedColl.TfrmODLabImmedColl.calImmedCollectKeyUp
+ 0001:00296F58       fODLabImmedColl.TfrmODLabImmedColl.cmdCancelClick
+ 0001:00296F80       fODLabImmedColl.TfrmODLabImmedColl.cmdOKClick
+ 0001:00297160       fODLabImmedColl.TfrmODLabImmedColl.FormShow
+ 0001:002971E8       fODLabOthCollSamp..TfrmODLabOthCollSamp
+ 0001:00297438       fODLabOthCollSamp.SelectOtherCollSample
+ 0001:0029774C       fODLabOthCollSamp.TfrmODLabOthCollSamp.cboOtherCollSampDblClick
+ 0001:00297600       fODLabOthCollSamp.TfrmODLabOthCollSamp.cmdCancelClick
+ 0001:00297628       fODLabOthCollSamp.TfrmODLabOthCollSamp.cmdOKClick
+ 0001:0029FA88       fODLabOthSpec..TfrmODLabOthSpec
+ 0001:0029FCE0       fODLabOthSpec.SelectOtherSpecimen
+ 0001:0029FF04       fODLabOthSpec.TfrmODLabOthSpec.cboOtherSpecDblClick
+ 0001:0029FF0C       fODLabOthSpec.TfrmODLabOthSpec.cboOtherSpecNeedData
+ 0001:0029FDC8       fODLabOthSpec.TfrmODLabOthSpec.cmdCancelClick
+ 0001:0029FDF0       fODLabOthSpec.TfrmODLabOthSpec.cmdOKClick
+ 0001:002B6C54       fODMedComplex..TfrmODMedComplex
+ 0001:002B708C       fODMedComplex.ExecuteComplexDose
+ 0001:002B794C       fODMedComplex.FindInCombo
+ 0001:002B7D28       fODMedComplex.PlaceControl
+ 0001:002B8A38       fODMedComplex.SetError
+ 0001:002B8420       fODMedComplex.TfrmODMedComplex.btnUnitsClick
+ 0001:002B8470       fODMedComplex.TfrmODMedComplex.cboRouteClick
+ 0001:002B8638       fODMedComplex.TfrmODMedComplex.cboRouteExit
+ 0001:002B8658       fODMedComplex.TfrmODMedComplex.cboScheduleExit
+ 0001:002B8E64       fODMedComplex.TfrmODMedComplex.cmdCancelClick
+ 0001:002B882C       fODMedComplex.TfrmODMedComplex.cmdInsertClick
+ 0001:002B8DD4       fODMedComplex.TfrmODMedComplex.cmdOKClick
+ 0001:002B89BC       fODMedComplex.TfrmODMedComplex.cmdRemoveClick
+ 0001:002B7A78       fODMedComplex.TfrmODMedComplex.FormCreate
+ 0001:002B7C88       fODMedComplex.TfrmODMedComplex.grdDosesDrawCell
+ 0001:002B7BB0       fODMedComplex.TfrmODMedComplex.grdDosesKeyPress
+ 0001:002B7B44       fODMedComplex.TfrmODMedComplex.grdDosesMouseDown
+ 0001:002B7C00       fODMedComplex.TfrmODMedComplex.grdDosesMouseUp
+ 0001:002B86CC       fODMedComplex.TfrmODMedComplex.pnlDaysEnter
+ 0001:002B86DC       fODMedComplex.TfrmODMedComplex.pnlDaysExit
+ 0001:002B8278       fODMedComplex.TfrmODMedComplex.pnlInstructEnter
+ 0001:002B82AC       fODMedComplex.TfrmODMedComplex.pnlInstructExit
+ 0001:002B7DAC       fODMedComplex.TfrmODMedComplex.ShowEditor
+ 0001:002B87BC       fODMedComplex.TfrmODMedComplex.txtDaysChange
+ 0001:002B81A4       fODMedComplex.TfrmODMedComplex.UMDelayEvent
+ 0001:002B8460       fODMedComplex.TfrmODMedComplex.UnitClick
+ 0001:002B7700       fODMedComplex.TfrmODMedComplex.ValFor
+ 0001:002B8A94       fODMedComplex.TfrmODMedComplex.Validate
+ 0001:002B8E6C       fODMedFA..TfrmODMedFA
+ 0001:002B90B0       fODMedFA.SelectFormularyAlt
+ 0001:002B9418       fODMedFA.TfrmODMedFA.cmdNoClick
+ 0001:002B939C       fODMedFA.TfrmODMedFA.cmdYesClick
+ 0001:002B9368       fODMedFA.TfrmODMedFA.FormCreate
+ 0001:002B9378       fODMedFA.TfrmODMedFA.lstFormAltClick
+ 0001:002BC1B4       fODMedIn..TfrmODMedIn
+ 0001:002BC9C8       fODMedIn.SetError
+ 0001:002BDB10       fODMedIn.TfrmODMedIn.cboDispenseExit
+ 0001:002BDBF0       fODMedIn.TfrmODMedIn.cboDispenseMouseClick
+ 0001:002BD678       fODMedIn.TfrmODMedIn.cboMedicationNeedData
+ 0001:002BD6C0       fODMedIn.TfrmODMedIn.cboMedicationSelect
+ 0001:002BD9C4       fODMedIn.TfrmODMedIn.CheckFormAlt
+ 0001:002BDCA8       fODMedIn.TfrmODMedIn.ControlChange
+ 0001:002BC528       fODMedIn.TfrmODMedIn.FormCreate
+ 0001:002BC698       fODMedIn.TfrmODMedIn.InitDialog
+ 0001:002BD324       fODMedIn.TfrmODMedIn.ResetOnMedChange
+ 0001:002BD384       fODMedIn.TfrmODMedIn.SetAltCombo
+ 0001:002BD4A0       fODMedIn.TfrmODMedIn.SetOnOISelect
+ 0001:002BC7F0       fODMedIn.TfrmODMedIn.SetupDialog
+ 0001:002BCA34       fODMedIn.TfrmODMedIn.Validate
+ 0001:002770A0       fODMedIV..TfrmODMedIV
+ 0001:002778F0       fODMedIV..TIVComponent
+ 0001:0027D618       fODMedIV.IsNumericRate
+ 0001:0027CC24       fODMedIV.PlaceControl
+ 0001:00278D64       fODMedIV.SetError
+ 0001:0027CB48       fODMedIV.TfrmODMedIV.cboAdditiveExit
+ 0001:0027C850       fODMedIV.TfrmODMedIV.cboAdditiveMouseClick
+ 0001:0027C3E8       fODMedIV.TfrmODMedIV.cboAdditiveNeedData
+ 0001:0027C498       fODMedIV.TfrmODMedIV.cboDurationChange
+ 0001:0027C518       fODMedIV.TfrmODMedIV.cboDurationEnter
+ 0001:0027C534       fODMedIV.TfrmODMedIV.cboInfusionTimeChange
+ 0001:0027C5B4       fODMedIV.TfrmODMedIV.cboInfusionTimeEnter
+ 0001:0027C5D0       fODMedIV.TfrmODMedIV.cboPriorityChange
+ 0001:0027C5D8       fODMedIV.TfrmODMedIV.cboPriorityExit
+ 0001:0027C688       fODMedIV.TfrmODMedIV.cboRouteChange
+ 0001:0027C6E0       fODMedIV.TfrmODMedIV.cboRouteClick
+ 0001:0027C84C       fODMedIV.TfrmODMedIV.cboRouteExit
+ 0001:0027D08C       fODMedIV.TfrmODMedIV.cboScheduleChange
+ 0001:0027D154       fODMedIV.TfrmODMedIV.cboScheduleClick
+ 0001:0027D2EC       fODMedIV.TfrmODMedIV.cboScheduleExit
+ 0001:0027D424       fODMedIV.TfrmODMedIV.cboSelectedChange
+ 0001:0027D4BC       fODMedIV.TfrmODMedIV.cboSelectedExit
+ 0001:0027C338       fODMedIV.TfrmODMedIV.cboSolutionExit
+ 0001:0027BE60       fODMedIV.TfrmODMedIV.cboSolutionMouseClick
+ 0001:0027B858       fODMedIV.TfrmODMedIV.cboSolutionNeedData
+ 0001:0027B908       fODMedIV.TfrmODMedIV.cboTypeChange
+ 0001:0027BB3C       fODMedIV.TfrmODMedIV.chkDoseNowClick
+ 0001:0027BE58       fODMedIV.TfrmODMedIV.chkPRNClick
+ 0001:0027CB78       fODMedIV.TfrmODMedIV.ClearAllFields
+ 0001:0027CCCC       fODMedIV.TfrmODMedIV.ClickOnGridCell
+ 0001:0027D548       fODMedIV.TfrmODMedIV.cmdRemoveClick
+ 0001:0027D650       fODMedIV.TfrmODMedIV.ControlChange
+ 0001:0027E538       fODMedIV.TfrmODMedIV.CreateOtherRoute
+ 0001:0027E5B8       fODMedIV.TfrmODMedIV.CreateOtherSchedule
+ 0001:0027E758       fODMedIV.TfrmODMedIV.DisplayDoseNow
+ 0001:0027E7BC       fODMedIV.TfrmODMedIV.DoSetFontSize
+ 0001:0027796C       fODMedIV.TfrmODMedIV.FormCreate
+ 0001:00277AEC       fODMedIV.TfrmODMedIV.FormDestroy
+ 0001:0027E7FC       fODMedIV.TfrmODMedIV.FormKeyDown
+ 0001:00277B44       fODMedIV.TfrmODMedIV.FormResize
+ 0001:0027E680       fODMedIV.TfrmODMedIV.grdSelectedDrawCell
+ 0001:0027E870       fODMedIV.TfrmODMedIV.grdSelectedKeyPress
+ 0001:0027E878       fODMedIV.TfrmODMedIV.grdSelectedMouseDown
+ 0001:00277E18       fODMedIV.TfrmODMedIV.InitDialog
+ 0001:002782E0       fODMedIV.TfrmODMedIV.IVTypeHelpText
+ 0001:00278440       fODMedIV.TfrmODMedIV.lblTypeHelpClick
+ 0001:002784B0       fODMedIV.TfrmODMedIV.loadExpectFirstDose
+ 0001:0027E894       fODMedIV.TfrmODMedIV.pnlXDurationEnter
+ 0001:0027E73C       fODMedIV.TfrmODMedIV.SetFontSize
+ 0001:0027E8A4       fODMedIV.TfrmODMedIV.SetLimitationControl
+ 0001:0027EC4C       fODMedIV.TfrmODMedIV.SetSchedule
+ 0001:0027B6EC       fODMedIV.TfrmODMedIV.SetupDialog
+ 0001:0027A5B8       fODMedIV.TfrmODMedIV.SetValuesFromResponses
+ 0001:0027B7DC       fODMedIV.TfrmODMedIV.tabFluidChange
+ 0001:0027F708       fODMedIV.TfrmODMedIV.txtAllIVRoutesClick
+ 0001:0027F888       fODMedIV.TfrmODMedIV.txtNSSClick
+ 0001:0027F9EC       fODMedIV.TfrmODMedIV.txtRateChange
+ 0001:0027CF68       fODMedIV.TfrmODMedIV.txtSelectedChange
+ 0001:0027D000       fODMedIV.TfrmODMedIV.txtSelectedExit
+ 0001:0027E884       fODMedIV.TfrmODMedIV.txtXDurationChange
+ 0001:0027F0E4       fODMedIV.TfrmODMedIV.txtXDurationExit
+ 0001:0027F37C       fODMedIV.TfrmODMedIV.UpdateDuration
+ 0001:0027F448       fODMedIV.TfrmODMedIV.UpdateRoute
+ 0001:00278DC0       fODMedIV.TfrmODMedIV.Validate
+ 0001:0027A420       fODMedIV.TfrmODMedIV.ValidateInfusionRate
+ 0004:00005F60       fODMedNVA..2
+ 0001:00268E7C       fODMedNVA..TfrmODMedNVA
+ 0001:0026FF84       fODMedNVA.CheckAuthForNVAMeds
+ 0004:00005F5C       fODMedNVA.crypto
+ 0001:0027023C       fODMedNVA.Finalization
+ 0002:00001678       fODMedNVA.fODMedNVA
+ 0001:0026DE64       fODMedNVA.GetSchedule
+ 0001:0026DF84       fODMedNVA.GetScheduleEX
+ 0001:0026CFA4       fODMedNVA.KillDrug
+ 0001:0026FEDC       fODMedNVA.OIForNVA
+ 0001:0026CDC0       fODMedNVA.SaveDrug
+ 0001:00269D04       fODMedNVA.SetError
+ 0001:0026AA84       fODMedNVA.TfrmODMedNVA.btnSelectClick
+ 0001:0026C588       fODMedNVA.TfrmODMedNVA.cboDosageChange
+ 0001:0026C494       fODMedNVA.TfrmODMedNVA.cboDosageClick
+ 0001:0026C590       fODMedNVA.TfrmODMedNVA.cboDosageExit
+ 0001:0026C630       fODMedNVA.TfrmODMedNVA.cboRouteChange
+ 0001:0026C758       fODMedNVA.TfrmODMedNVA.cboRouteExit
+ 0001:0026C764       fODMedNVA.TfrmODMedNVA.cboScheduleChange
+ 0001:0026C75C       fODMedNVA.TfrmODMedNVA.cboScheduleClick
+ 0001:0026C76C       fODMedNVA.TfrmODMedNVA.cboScheduleExit
+ 0001:0026A2A8       fODMedNVA.TfrmODMedNVA.ChangeDelayed
+ 0001:0026F300       fODMedNVA.TfrmODMedNVA.CheckDecimal
+ 0001:0026C3E4       fODMedNVA.TfrmODMedNVA.CheckFormAltDose
+ 0001:0026F748       fODMedNVA.TfrmODMedNVA.chkPRNClick
+ 0001:0026F2E0       fODMedNVA.TfrmODMedNVA.cmdAcceptClick
+ 0001:0026C8F4       fODMedNVA.TfrmODMedNVA.ConstructedDoseFields
+ 0001:0026D6E4       fODMedNVA.TfrmODMedNVA.ControlChange
+ 0001:0026F940       fODMedNVA.TfrmODMedNVA.DisableCancelButton
+ 0001:0026F9D0       fODMedNVA.TfrmODMedNVA.DisableDefaultButton
+ 0001:00270164       fODMedNVA.TfrmODMedNVA.DispOrderMessage
+ 0001:0026D0A8       fODMedNVA.TfrmODMedNVA.FindCommonDrug
+ 0001:0026CC54       fODMedNVA.TfrmODMedNVA.FindDoseFields
+ 0001:0026FCC4       fODMedNVA.TfrmODMedNVA.FindQuickOrder
+ 0001:002695B8       fODMedNVA.TfrmODMedNVA.FormCreate
+ 0001:002699E8       fODMedNVA.TfrmODMedNVA.FormDestroy
+ 0001:0026FEBC       fODMedNVA.TfrmODMedNVA.FormKeyPress
+ 0001:0026FAFC       fODMedNVA.TfrmODMedNVA.FormResize
+ 0001:0026FB24       fODMedNVA.TfrmODMedNVA.GetCacheChunkIndex
+ 0001:0026F928       fODMedNVA.TfrmODMedNVA.grdDosesEnter
+ 0001:0026DE48       fODMedNVA.TfrmODMedNVA.grdDosesExit
+ 0001:0026F8A8       fODMedNVA.TfrmODMedNVA.grdDosesKeyDown
+ 0001:00269A48       fODMedNVA.TfrmODMedNVA.InitDialog
+ 0001:00270028       fODMedNVA.TfrmODMedNVA.isUniqueQuickOrder
+ 0001:0026C324       fODMedNVA.TfrmODMedNVA.lblGuidelineClick
+ 0001:0026FE18       fODMedNVA.TfrmODMedNVA.lbStatementsClickCheck
+ 0001:0026A834       fODMedNVA.TfrmODMedNVA.ListViewClick
+ 0001:0026A874       fODMedNVA.TfrmODMedNVA.ListViewEditing
+ 0001:0026A7AC       fODMedNVA.TfrmODMedNVA.ListViewEnter
+ 0001:0026A884       fODMedNVA.TfrmODMedNVA.ListViewResize
+ 0001:0026A8B8       fODMedNVA.TfrmODMedNVA.LoadNonVAMedCache
+ 0001:0026FBD4       fODMedNVA.TfrmODMedNVA.LoadOTCStatements
+ 0001:0026A990       fODMedNVA.TfrmODMedNVA.lstAllData
+ 0001:0026AA70       fODMedNVA.TfrmODMedNVA.lstAllDataHint
+ 0001:0026FE20       fODMedNVA.TfrmODMedNVA.lstChange
+ 0001:0026FB34       fODMedNVA.TfrmODMedNVA.lstQuickData
+ 0001:0026FAD0       fODMedNVA.TfrmODMedNVA.memMessageKeyDown
+ 0001:0026C770       fODMedNVA.TfrmODMedNVA.OutpatientSig
+ 0001:0026FA9C       fODMedNVA.TfrmODMedNVA.pnlMessageEnter
+ 0001:0026FAB4       fODMedNVA.TfrmODMedNVA.pnlMessageExit
+ 0001:0026AD40       fODMedNVA.TfrmODMedNVA.ResetOnMedChange
+ 0001:0026FA60       fODMedNVA.TfrmODMedNVA.RestoreCancelButton
+ 0001:0026FA7C       fODMedNVA.TfrmODMedNVA.RestoreDefaultButton
+ 0001:0026A220       fODMedNVA.TfrmODMedNVA.ScrollToVisible
+ 0001:0026C094       fODMedNVA.TfrmODMedNVA.SearchStatements
+ 0001:0026BDEC       fODMedNVA.TfrmODMedNVA.SetDosage
+ 0001:0026AE28       fODMedNVA.TfrmODMedNVA.SetOnMedSelect
+ 0001:0026B3B8       fODMedNVA.TfrmODMedNVA.SetOnQuickOrder
+ 0001:0026C15C       fODMedNVA.TfrmODMedNVA.SetSchedule
+ 0001:0026C150       fODMedNVA.TfrmODMedNVA.SetStartDate
+ 0001:0026BEC4       fODMedNVA.TfrmODMedNVA.SetStatements
+ 0001:00269B40       fODMedNVA.TfrmODMedNVA.SetupDialog
+ 0001:0026BD7C       fODMedNVA.TfrmODMedNVA.ShowControlsSimple
+ 0001:0026BC60       fODMedNVA.TfrmODMedNVA.ShowMedFields
+ 0001:0026BAC4       fODMedNVA.TfrmODMedNVA.ShowMedSelect
+ 0001:0026A058       fODMedNVA.TfrmODMedNVA.StartKeyTimer
+ 0001:0026A0A0       fODMedNVA.TfrmODMedNVA.StopKeyTimer
+ 0001:0026C2FC       fODMedNVA.TfrmODMedNVA.tabDoseChange
+ 0001:0026EDE4       fODMedNVA.TfrmODMedNVA.timCheckChangesTimer
+ 0001:0026A20C       fODMedNVA.TfrmODMedNVA.txtMedChange
+ 0001:0026A780       fODMedNVA.TfrmODMedNVA.txtMedExit
+ 0001:0026A0C8       fODMedNVA.TfrmODMedNVA.txtMedKeyDown
+ 0001:0026A1E8       fODMedNVA.TfrmODMedNVA.txtMedKeyUp
+ 0001:0026A86C       fODMedNVA.TfrmODMedNVA.UMDelayClick
+ 0001:0026EDB0       fODMedNVA.TfrmODMedNVA.UpdateRelated
+ 0001:0026EB00       fODMedNVA.TfrmODMedNVA.UpdateStartExpires
+ 0001:00269D60       fODMedNVA.TfrmODMedNVA.Validate
+ 0001:0026E0F4       fODMedNVA.TfrmODMedNVA.ValueOf
+ 0001:0026E85C       fODMedNVA.TfrmODMedNVA.ValueOfResponse
+ 0001:0026A02C       fODMedNVA.TfrmODMedNVA.WMTimer
+ 0001:003A51E4       fODMedOIFA..TfrmODMedOIFA
+ 0001:003A5690       fODMedOIFA.CheckFormularyDose
+ 0001:003A5460       fODMedOIFA.CheckFormularyOI
+ 0001:003A58B8       fODMedOIFA.TfrmODMedOIFA.cmdNoClick
+ 0001:003A583C       fODMedOIFA.TfrmODMedOIFA.cmdYesClick
+ 0001:003A58C8       fODMedOIFA.TfrmODMedOIFA.FormClose
+ 0001:003A5808       fODMedOIFA.TfrmODMedOIFA.FormCreate
+ 0001:003A58C0       fODMedOIFA.TfrmODMedOIFA.FormShow
+ 0001:003A5818       fODMedOIFA.TfrmODMedOIFA.lstFormAltClick
+ 0001:002B9420       fODMedOut..TfrmODMedOut
+ 0001:002B9E88       fODMedOut.SetError
+ 0001:002BB398       fODMedOut.TfrmODMedOut.btnUnitsClick
+ 0001:002BB0F8       fODMedOut.TfrmODMedOut.cboDispenseExit
+ 0001:002BB1E8       fODMedOut.TfrmODMedOut.cboDispenseMouseClick
+ 0001:002BAB5C       fODMedOut.TfrmODMedOut.cboMedicationNeedData
+ 0001:002BAB98       fODMedOut.TfrmODMedOut.cboMedicationSelect
+ 0001:002BBAF8       fODMedOut.TfrmODMedOut.cboSCEnter
+ 0001:002BAE74       fODMedOut.TfrmODMedOut.CheckFormAlt
+ 0001:002BB948       fODMedOut.TfrmODMedOut.cmdComplexClick
+ 0001:002BBB4C       fODMedOut.TfrmODMedOut.ControlChange
+ 0001:002B9900       fODMedOut.TfrmODMedOut.FormCreate
+ 0001:002B9A78       fODMedOut.TfrmODMedOut.InitDialog
+ 0001:002BBB44       fODMedOut.TfrmODMedOut.memCommentsEnter
+ 0001:002BA7BC       fODMedOut.TfrmODMedOut.ResetOnMedChange
+ 0001:002BA848       fODMedOut.TfrmODMedOut.SetAltCombo
+ 0001:002BBA38       fODMedOut.TfrmODMedOut.SetAskSC
+ 0001:002BB3E8       fODMedOut.TfrmODMedOut.SetComplex
+ 0001:002BB574       fODMedOut.TfrmODMedOut.SetInstructions
+ 0001:002BAFA4       fODMedOut.TfrmODMedOut.SetMaxRefills
+ 0001:002BA938       fODMedOut.TfrmODMedOut.SetOnOISelect
+ 0001:002BB480       fODMedOut.TfrmODMedOut.SetSimple
+ 0001:002B9BD4       fODMedOut.TfrmODMedOut.SetupDialog
+ 0001:002BB290       fODMedOut.TfrmODMedOut.SetupNouns
+ 0001:002BB9C8       fODMedOut.TfrmODMedOut.txtQuantityEnter
+ 0001:002BB3D8       fODMedOut.TfrmODMedOut.UnitClick
+ 0001:002B9EE4       fODMedOut.TfrmODMedOut.Validate
+ 0004:00005F7C       fODMeds..2
+ 0001:0027F9FC       fODMeds..TfrmODMeds
+ 0004:00005F78       fODMeds.crypto
+ 0001:00296610       fODMeds.Finalization
+ 0001:0028C82C       fODMeds.FindInCombo
+ 0002:000016F0       fODMeds.fODMeds
+ 0001:0028FB4C       fODMeds.GetComplexDoseSchedule
+ 0001:0028FD28       fODMeds.GetComplexDoseScheduleEX
+ 0001:0028F5F8       fODMeds.GetSingleDoseSchedule
+ 0001:0028F75C       fODMeds.GetSingleDoseScheduleEX
+ 0001:0028AB04       fODMeds.KillDrug
+ 0001:0028713C       fODMeds.MoveCombo
+ 0001:0028D2DC       fODMeds.PlaceControl
+ 0001:0028A90C       fODMeds.SaveDrug
+ 0001:00281E94       fODMeds.SetError
+ 0001:0028D374       fODMeds.SynchCombo
+ 0001:002843A8       fODMeds.TfrmODMeds.btnSelectClick
+ 0001:0029449C       fODMeds.TfrmODMeds.btnXDurationClick
+ 0001:0028F3B4       fODMeds.TfrmODMeds.btnXInsertClick
+ 0001:0028F534       fODMeds.TfrmODMeds.btnXRemoveClick
+ 0001:002889E0       fODMeds.TfrmODMeds.cboDosageChange
+ 0001:0028870C       fODMeds.TfrmODMeds.cboDosageClick
+ 0001:00288B64       fODMeds.TfrmODMeds.cboDosageExit
+ 0001:0029637C       fODMeds.TfrmODMeds.cboDosageKeyUp
+ 0001:00288DE0       fODMeds.TfrmODMeds.cboRouteChange
+ 0001:00288F28       fODMeds.TfrmODMeds.cboRouteExit
+ 0001:00289134       fODMeds.TfrmODMeds.cboScheduleChange
+ 0001:00288FA4       fODMeds.TfrmODMeds.cboScheduleClick
+ 0001:00295850       fODMeds.TfrmODMeds.cboScheduleEnter
+ 0001:002959D8       fODMeds.TfrmODMeds.cboScheduleExit
+ 0001:0028DC80       fODMeds.TfrmODMeds.cboXDosageChange
+ 0001:0028DE60       fODMeds.TfrmODMeds.cboXDosageClick
+ 0001:0028DC18       fODMeds.TfrmODMeds.cboXDosageEnter
+ 0001:0028E080       fODMeds.TfrmODMeds.cboXDosageExit
+ 0001:002963BC       fODMeds.TfrmODMeds.cboXDosageKeyUp
+ 0001:0028E320       fODMeds.TfrmODMeds.cboXRouteChange
+ 0001:0028E3C0       fODMeds.TfrmODMeds.cboXRouteClick
+ 0001:00294AB0       fODMeds.TfrmODMeds.cboXRouteEnter
+ 0001:0028E4B4       fODMeds.TfrmODMeds.cboXRouteExit
+ 0001:0028E648       fODMeds.TfrmODMeds.cboXScheduleChange
+ 0001:0028E8D8       fODMeds.TfrmODMeds.cboXScheduleClick
+ 0001:002965E0       fODMeds.TfrmODMeds.cboXScheduleEnter
+ 0001:00295F2C       fODMeds.TfrmODMeds.cboXScheduleExit
+ 0001:0029635C       fODMeds.TfrmODMeds.cboXSequence1Exit
+ 0001:00295F50       fODMeds.TfrmODMeds.cboXSequenceChange
+ 0001:00296188       fODMeds.TfrmODMeds.cboXSequenceEnter
+ 0001:002961B0       fODMeds.TfrmODMeds.cboXSequenceExit
+ 0001:00283940       fODMeds.TfrmODMeds.ChangeDelayed
+ 0001:00293FF0       fODMeds.TfrmODMeds.CheckDecimal
+ 0001:00288640       fODMeds.TfrmODMeds.CheckFormAltDose
+ 0001:00293B44       fODMeds.TfrmODMeds.chkDoseNowClick
+ 0001:002944E0       fODMeds.TfrmODMeds.chkPRNClick
+ 0001:00293B28       fODMeds.TfrmODMeds.chkPtInstructClick
+ 0001:0028EA78       fODMeds.TfrmODMeds.chkXPRNClick
+ 0001:002938A4       fODMeds.TfrmODMeds.cmdAcceptClick
+ 0001:00289FCC       fODMeds.TfrmODMeds.ConstructedDoseFields
+ 0001:0028B368       fODMeds.TfrmODMeds.ControlChange
+ 0001:002951C4       fODMeds.TfrmODMeds.CreateOtherScheduel
+ 0001:00295638       fODMeds.TfrmODMeds.CreateOtherScheduelComplex
+ 0001:00294818       fODMeds.TfrmODMeds.DisableCancelButton
+ 0001:002948C4       fODMeds.TfrmODMeds.DisableDefaultButton
+ 0001:00295430       fODMeds.TfrmODMeds.DisplayDoseNow
+ 0001:002954B4       fODMeds.TfrmODMeds.DispOrderMessage
+ 0001:00294220       fODMeds.TfrmODMeds.DropLastSequence
+ 0001:0028C848       fODMeds.TfrmODMeds.DurationToDays
+ 0001:0028A4CC       fODMeds.TfrmODMeds.FieldsForDose
+ 0001:0028A38C       fODMeds.TfrmODMeds.FieldsForDrug
+ 0001:0028AC2C       fODMeds.TfrmODMeds.FindCommonDrug
+ 0001:0028A778       fODMeds.TfrmODMeds.FindDoseFields
+ 0001:00283540       fODMeds.TfrmODMeds.FindQuickOrder
+ 0001:002955F4       fODMeds.TfrmODMeds.FormClose
+ 0001:00280890       fODMeds.TfrmODMeds.FormCreate
+ 0001:002812BC       fODMeds.TfrmODMeds.FormDestroy
+ 0001:00294A10       fODMeds.TfrmODMeds.FormKeyDown
+ 0001:002949D8       fODMeds.TfrmODMeds.FormKeyPress
+ 0001:00294BD8       fODMeds.TfrmODMeds.FormResize
+ 0001:002958D8       fODMeds.TfrmODMeds.FormShow
+ 0001:00295E60       fODMeds.TfrmODMeds.GetCacheChunkIndex
+ 0001:00295E84       fODMeds.TfrmODMeds.GetSchedListIndex
+ 0001:0028D200       fODMeds.TfrmODMeds.grdDosesDrawCell
+ 0001:002947F0       fODMeds.TfrmODMeds.grdDosesEnter
+ 0001:0028D2B0       fODMeds.TfrmODMeds.grdDosesExit
+ 0001:00294674       fODMeds.TfrmODMeds.grdDosesKeyDown
+ 0001:0028D0AC       fODMeds.TfrmODMeds.grdDosesKeyPress
+ 0001:0028D014       fODMeds.TfrmODMeds.grdDosesMouseDown
+ 0001:0028D114       fODMeds.TfrmODMeds.grdDosesMouseUp
+ 0001:002952BC       fODMeds.TfrmODMeds.IfIsIMODialog
+ 0001:00281334       fODMeds.TfrmODMeds.InitDialog
+ 0001:00289D00       fODMeds.TfrmODMeds.InpatientSig
+ 0001:00295E24       fODMeds.TfrmODMeds.IsSupplyAndOutPatient
+ 0001:00295CC0       fODMeds.TfrmODMeds.isUniqueQuickOrder
+ 0001:002882FC       fODMeds.TfrmODMeds.lblAdminSchGetText
+ 0001:0028845C       fODMeds.TfrmODMeds.lblAdminSchSetText
+ 0001:00288578       fODMeds.TfrmODMeds.lblGuidelineClick
+ 0001:00283F88       fODMeds.TfrmODMeds.ListViewClick
+ 0001:00283FEC       fODMeds.TfrmODMeds.ListViewEditing
+ 0001:00283EE0       fODMeds.TfrmODMeds.ListViewEnter
+ 0001:00284008       fODMeds.TfrmODMeds.ListViewKeyUp
+ 0001:00284020       fODMeds.TfrmODMeds.ListViewResize
+ 0001:00284068       fODMeds.TfrmODMeds.Loaded
+ 0001:00284094       fODMeds.TfrmODMeds.LoadMedCache
+ 0001:002841B4       fODMeds.TfrmODMeds.lstAllData
+ 0001:002842B4       fODMeds.TfrmODMeds.lstAllDataHint
+ 0001:00295340       fODMeds.TfrmODMeds.lstChange
+ 0001:002842D8       fODMeds.TfrmODMeds.lstQuickData
+ 0001:00284390       fODMeds.TfrmODMeds.lstQuickDataHint
+ 0001:00294478       fODMeds.TfrmODMeds.memCommentClick
+ 0001:00294B2C       fODMeds.TfrmODMeds.memMessageKeyDown
+ 0001:00294B6C       fODMeds.TfrmODMeds.memPIClick
+ 0001:00294D10       fODMeds.TfrmODMeds.memPIKeyDown
+ 0001:00289698       fODMeds.TfrmODMeds.OutpatientSig
+ 0001:0028CC3C       fODMeds.TfrmODMeds.pnlFieldsResize
+ 0001:00294AD8       fODMeds.TfrmODMeds.pnlMessageEnter
+ 0001:00294B00       fODMeds.TfrmODMeds.pnlMessageExit
+ 0001:0028EC48       fODMeds.TfrmODMeds.pnlXAdminTimeClick
+ 0001:0028ED74       fODMeds.TfrmODMeds.pnlXDurationEnter
+ 0001:0028F2C8       fODMeds.TfrmODMeds.pnlXDurationExit
+ 0001:0028E610       fODMeds.TfrmODMeds.pnlXScheduleEnter
+ 0001:0028EB40       fODMeds.TfrmODMeds.pnlXScheduleExit
+ 0001:00289358       fODMeds.TfrmODMeds.popDurationClick
+ 0001:00284A44       fODMeds.TfrmODMeds.ResetOnMedChange
+ 0001:00284D04       fODMeds.TfrmODMeds.ResetOnTabChange
+ 0001:00294970       fODMeds.TfrmODMeds.RestoreCancelButton
+ 0001:002949A4       fODMeds.TfrmODMeds.RestoreDefaultButton
+ 0001:002838A8       fODMeds.TfrmODMeds.ScrollToVisible
+ 0001:0028307C       fODMeds.TfrmODMeds.SetControlsInpatient
+ 0001:002832BC       fODMeds.TfrmODMeds.SetControlsOutpatient
+ 0001:002874C8       fODMeds.TfrmODMeds.SetDosage
+ 0001:002850A8       fODMeds.TfrmODMeds.SetOnMedSelect
+ 0001:00285C44       fODMeds.TfrmODMeds.SetOnQuickOrder
+ 0001:002875B0       fODMeds.TfrmODMeds.SetPickup
+ 0001:00287654       fODMeds.TfrmODMeds.SetSchedule
+ 0001:00281444       fODMeds.TfrmODMeds.SetupDialog
+ 0001:00283040       fODMeds.TfrmODMeds.SetVisibleCommentRows
+ 0001:0028739C       fODMeds.TfrmODMeds.ShowControlsComplex
+ 0001:00287050       fODMeds.TfrmODMeds.ShowControlsSimple
+ 0001:0028D430       fODMeds.TfrmODMeds.ShowEditor
+ 0001:00286E20       fODMeds.TfrmODMeds.ShowMedFields
+ 0001:00286B78       fODMeds.TfrmODMeds.ShowMedSelect
+ 0001:002834A8       fODMeds.TfrmODMeds.StartKeyTimer
+ 0001:0028350C       fODMeds.TfrmODMeds.StopKeyTimer
+ 0001:00287CBC       fODMeds.TfrmODMeds.tabDoseChange
+ 0001:00294D80       fODMeds.TfrmODMeds.TextDosage
+ 0001:00293028       fODMeds.TfrmODMeds.timCheckChangesTimer
+ 0001:00283880       fODMeds.TfrmODMeds.txtMedChange
+ 0001:00283E84       fODMeds.TfrmODMeds.txtMedExit
+ 0001:002836B8       fODMeds.TfrmODMeds.txtMedKeyDown
+ 0001:00283840       fODMeds.TfrmODMeds.txtMedKeyUp
+ 0001:00295730       fODMeds.TfrmODMeds.txtNSSClick
+ 0001:002894F8       fODMeds.TfrmODMeds.txtQuantityChange
+ 0001:00296480       fODMeds.TfrmODMeds.txtQuantityClick
+ 0001:002964A0       fODMeds.TfrmODMeds.txtRefillsChange
+ 0001:002964BC       fODMeds.TfrmODMeds.txtRefillsClick
+ 0001:00289444       fODMeds.TfrmODMeds.txtSupplyChange
+ 0001:00296460       fODMeds.TfrmODMeds.txtSupplyClick
+ 0001:0028EDAC       fODMeds.TfrmODMeds.txtXDurationChange
+ 0001:00283FD0       fODMeds.TfrmODMeds.UMDelayClick
+ 0001:0028DAE4       fODMeds.TfrmODMeds.UMDelayEvent
+ 0001:002959B0       fODMeds.TfrmODMeds.UMShowNSSBuilder
+ 0001:00291504       fODMeds.TfrmODMeds.UpdateDefaultSupply
+ 0001:00289258       fODMeds.TfrmODMeds.UpdateDurationControls
+ 0001:00292EA4       fODMeds.TfrmODMeds.UpdateRefills
+ 0001:00292FE4       fODMeds.TfrmODMeds.UpdateRelated
+ 0001:0029200C       fODMeds.TfrmODMeds.updateSig
+ 0001:00292080       fODMeds.TfrmODMeds.UpdateStartExpires
+ 0001:00291A80       fODMeds.TfrmODMeds.UpdateSupplyQuantity
+ 0001:0028C530       fODMeds.TfrmODMeds.ValFor
+ 0001:002825C0       fODMeds.TfrmODMeds.Validate
+ 0001:00295A64       fODMeds.TfrmODMeds.ValidateInpatientSchedule
+ 0001:0029016C       fODMeds.TfrmODMeds.ValueOf
+ 0001:00291228       fODMeds.TfrmODMeds.ValueOfResponse
+ 0001:002964DC       fODMeds.TfrmODMeds.WMClose
+ 0001:00283470       fODMeds.TfrmODMeds.WMTimer
+ 0001:00281F00       fODMeds.ValidateRoute
+ 0001:002820C0       fODMeds.ValidateSchedule
+ 0001:002BE1CC       fODMisc..TfrmODMisc
+ 0001:002BE5F8       fODMisc.SetError
+ 0001:002BE818       fODMisc.TfrmODMisc.cboCareNeedData
+ 0001:002BE854       fODMisc.TfrmODMisc.ControlChange
+ 0001:002BE434       fODMisc.TfrmODMisc.FormCreate
+ 0001:002BE4F0       fODMisc.TfrmODMisc.InitDialog
+ 0001:002BE518       fODMisc.TfrmODMisc.SetupDialog
+ 0001:002BE654       fODMisc.TfrmODMisc.Validate
+ 0004:00005DDC       fODProc..2
+ 0001:00242A98       fODProc..TfrmODProc
+ 0001:002453F4       fODProc.DisableReason
+ 0001:00245378       fODProc.EnableReason
+ 0001:00245E24       fODProc.Finalization
+ 0002:000014E4       fODProc.fODProc
+ 0004:00005DF4       fODProc.GMRCREAF
+ 0004:00005DE0       fODProc.ProvDx
+ 0001:002437C8       fODProc.SetError
+ 0001:00243B94       fODProc.TfrmODProc.cboProcNeedData
+ 0001:00244390       fODProc.TfrmODProc.cboProcSelect
+ 0001:00245158       fODProc.TfrmODProc.cboServiceChange
+ 0001:00244CAC       fODProc.TfrmODProc.cmdLexSearchClick
+ 0001:00243D44       fODProc.TfrmODProc.ControlChange
+ 0001:002457A8       fODProc.TfrmODProc.DefaultReasonForRequest
+ 0001:00245D4C       fODProc.TfrmODProc.DoSetFontSize
+ 0001:00245E08       fODProc.TfrmODProc.FormClose
+ 0001:00243060       fODProc.TfrmODProc.FormCreate
+ 0001:00245DE0       fODProc.TfrmODProc.FormResize
+ 0001:00245A7C       fODProc.TfrmODProc.GetProvDxandValidateCode
+ 0001:002431D0       fODProc.TfrmODProc.InitDialog
+ 0001:00244A34       fODProc.TfrmODProc.memReasonExit
+ 0001:00245D84       fODProc.TfrmODProc.memReasonKeyDown
+ 0001:00245DD0       fODProc.TfrmODProc.memReasonKeyPress
+ 0001:002459D0       fODProc.TfrmODProc.memReasonKeyUp
+ 0001:00245160       fODProc.TfrmODProc.mnuPopProvDxDeleteClick
+ 0001:002452F8       fODProc.TfrmODProc.popReasonCopyClick
+ 0001:002452EC       fODProc.TfrmODProc.popReasonCutClick
+ 0001:00245304       fODProc.TfrmODProc.popReasonPasteClick
+ 0001:00245208       fODProc.TfrmODProc.popReasonPopup
+ 0001:00245358       fODProc.TfrmODProc.popReasonReformatClick
+ 0001:00243BBC       fODProc.TfrmODProc.radInpatientClick
+ 0001:00243C80       fODProc.TfrmODProc.radOutpatientClick
+ 0001:00244AFC       fODProc.TfrmODProc.ReadServerVariables
+ 0001:00245D30       fODProc.TfrmODProc.SetFontSize
+ 0001:00244E08       fODProc.TfrmODProc.SetProvDiagPromptingMode
+ 0001:0024342C       fODProc.TfrmODProc.SetupDialog
+ 0001:00245480       fODProc.TfrmODProc.SetupReasonForRequest
+ 0001:00245638       fODProc.TfrmODProc.ShowPrerequisites
+ 0001:00243B6C       fODProc.TfrmODProc.txtAttnNeedData
+ 0001:00245190       fODProc.TfrmODProc.txtProvDiagChange
+ 0001:00243824       fODProc.TfrmODProc.Validate
+ 0004:00006014       fODRad..2
+ 0001:002B268C       fODRad..TfrmODRad
+ 0004:0000602C       fODRad.ALocation
+ 0004:00006024       fODRad.AName
+ 0004:00006030       fODRad.AType
+ 0004:0000601C       fODRad.Contract
+ 0001:002B6374       fODRad.Finalization
+ 0002:00001708       fODRad.fODRad
+ 0001:002B4434       fODRad.GetOrderingLocation
+ 0004:00006028       fODRad.IsPregnant
+ 0004:00006018       fODRad.Radiologist
+ 0004:00006020       fODRad.Research
+ 0001:002B43D8       fODRad.SetError
+ 0001:002B5DA0       fODRad.TfrmODRad.calPreOpChange
+ 0001:002B6184       fODRad.TfrmODRad.calPreOpExit
+ 0001:002B5D8C       fODRad.TfrmODRad.cboAvailModKeyDown
+ 0001:002B501C       fODRad.TfrmODRad.cboAvailModMouseClick
+ 0001:002B580C       fODRad.TfrmODRad.cboCategoryChange
+ 0001:002B5CB8       fODRad.TfrmODRad.cboImTypeChange
+ 0001:002B6204       fODRad.TfrmODRad.cboImTypeDropDownClose
+ 0001:002B6110       fODRad.TfrmODRad.cboImTypeExit
+ 0001:002B5F40       fODRad.TfrmODRad.cboProcedureExit
+ 0001:002B4FF0       fODRad.TfrmODRad.cboProcedureNeedData
+ 0001:002B5340       fODRad.TfrmODRad.cboProcedureSelect
+ 0001:002B6148       fODRad.TfrmODRad.chkIsolationExit
+ 0001:002B5E44       fODRad.TfrmODRad.cmdAcceptClick
+ 0001:002B51B4       fODRad.TfrmODRad.cmdRemoveClick
+ 0001:002B39F8       fODRad.TfrmODRad.ControlChange
+ 0001:002B6118       fODRad.TfrmODRad.FormClose
+ 0001:002B5A50       fODRad.TfrmODRad.FormCreate
+ 0001:002B6314       fODRad.TfrmODRad.FormFirstOpened
+ 0001:002B5D44       fODRad.TfrmODRad.FormResize
+ 0001:002B620C       fODRad.TfrmODRad.ImageTypeChange
+ 0001:002B3348       fODRad.TfrmODRad.InitDialog
+ 0001:002B5CC0       fODRad.TfrmODRad.memHistoryExit
+ 0001:002B61C0       fODRad.TfrmODRad.NoPregnantSelection
+ 0001:002B5E08       fODRad.TfrmODRad.SetDefaultPregant
+ 0001:002B56FC       fODRad.TfrmODRad.SetModifierList
+ 0001:002B2CEC       fODRad.TfrmODRad.SetupDialog
+ 0001:002B468C       fODRad.TfrmODRad.Validate
+ 0001:002B225C       fODRadApproval..TfrmODRadApproval
+ 0001:002B2498       fODRadApproval.SelectApprovingRadiologist
+ 0001:002B2594       fODRadApproval.TfrmODRadApproval.cmdCancelClick
+ 0001:002B259C       fODRadApproval.TfrmODRadApproval.cmdOKClick
+ 0001:002B1BC8       fODRadConShRes..TfrmODRadConShRes
+ 0001:002B1E14       fODRadConShRes.SelectSource
+ 0001:002B2048       fODRadConShRes.TfrmODRadConShRes.cmdCancelClick
+ 0001:002B2068       fODRadConShRes.TfrmODRadConShRes.cmdOKClick
+ 0001:0020CCEC       fODReleaseEvent..TfrmOrdersReleaseEvent
+ 0001:0020D014       fODReleaseEvent.ExecuteReleaseEventOrders
+ 0001:0020CFB8       fODReleaseEvent.FindOrderText
+ 0001:0020D850       fODReleaseEvent.TfrmOrdersReleaseEvent.btnCancelClick
+ 0001:0020D8BC       fODReleaseEvent.TfrmOrdersReleaseEvent.btnOKClick
+ 0001:0020DA54       fODReleaseEvent.TfrmOrdersReleaseEvent.cklstOrdersDrawItem
+ 0001:0020D974       fODReleaseEvent.TfrmOrdersReleaseEvent.cklstOrdersMeasureItem
+ 0001:0020DB74       fODReleaseEvent.TfrmOrdersReleaseEvent.cklstOrdersMouseMove
+ 0001:0020D858       fODReleaseEvent.TfrmOrdersReleaseEvent.FormCreate
+ 0001:0020D950       fODReleaseEvent.TfrmOrdersReleaseEvent.FormDestroy
+ 0001:002B63D8       fODText..TfrmODText
+ 0001:002B6784       fODText.SetError
+ 0001:002B6A24       fODText.TfrmODText.cmdAcceptClick
+ 0001:002B6AA4       fODText.TfrmODText.ControlChange
+ 0001:002B661C       fODText.TfrmODText.FormCreate
+ 0001:002B66B8       fODText.TfrmODText.InitDialog
+ 0001:002B66D4       fODText.TfrmODText.SetupDialog
+ 0001:002B67E0       fODText.TfrmODText.Validate
+ 0001:00201348       fODValidateAction..TfrmInvalidActionList
+ 0001:0020166C       fODValidateAction.DisplayOrdersForAction
+ 0001:00201E50       fODValidateAction.TfrmInvalidActionList.btnOKClick
+ 0001:00201E58       fODValidateAction.TfrmInvalidActionList.FormCreate
+ 0001:00202254       fODValidateAction.TfrmInvalidActionList.FormResize
+ 0001:00201E7C       fODValidateAction.TfrmInvalidActionList.hdrActionSectionResize
+ 0001:00201A10       fODValidateAction.TfrmInvalidActionList.lstActDeniedOrdersDrawItem
+ 0001:00201C58       fODValidateAction.TfrmInvalidActionList.lstActDeniedOrdersMeasureItem
+ 0001:0020210C       fODValidateAction.TfrmInvalidActionList.lstValidOrdersDrawItem
+ 0001:00201FD4       fODValidateAction.TfrmInvalidActionList.lstValidOrdersMeasureItem
+ 0001:00201EB0       fODValidateAction.TfrmInvalidActionList.RedrawActiveList
+ 0001:002736B0       fODVitals..TfrmODVitals
+ 0001:00273CB8       fODVitals.SetError
+ 0001:00273EE0       fODVitals.TfrmODVitals.ControlChange
+ 0001:0027419C       fODVitals.TfrmODVitals.FormClose
+ 0001:00273A60       fODVitals.TfrmODVitals.FormCreate
+ 0001:00273B3C       fODVitals.TfrmODVitals.InitDialog
+ 0001:00273BBC       fODVitals.TfrmODVitals.SetupDialog
+ 0001:00273D14       fODVitals.TfrmODVitals.Validate
+ 0001:001E2B30       fOMAction..TfrmOMAction
+ 0001:001E2CD4       fOMAction.TfrmOMAction.FormDestroy
+ 0001:001E2D2C       fOMAction.TfrmOMAction.InitDialog
+ 0001:002702E0       fOMHTML..TfrmOMHTML
+ 0001:002705AC       fOMHTML..TPageState
+ 0001:00271898       fOMHTML.GetStateFromName
+ 0001:002706BC       fOMHTML.GetURLforDialog
+ 0001:00270868       fOMHTML.NameValueToOrderSet
+ 0001:00270730       fOMHTML.NameValueToViewList
+ 0001:00270E78       fOMHTML.TfrmOMHTML.AddPageToCache
+ 0001:002724C8       fOMHTML.TfrmOMHTML.btnBackClick
+ 0001:002724B0       fOMHTML.TfrmOMHTML.btnCancelClick
+ 0001:002723C8       fOMHTML.TfrmOMHTML.btnOKClick
+ 0001:002725CC       fOMHTML.TfrmOMHTML.btnShowClick
+ 0001:002721A4       fOMHTML.TfrmOMHTML.FormClose
+ 0001:00272130       fOMHTML.TfrmOMHTML.FormCreate
+ 0001:00272208       fOMHTML.TfrmOMHTML.FormDestroy
+ 0001:00270BF0       fOMHTML.TfrmOMHTML.GetPageIndex
+ 0001:00270C54       fOMHTML.TfrmOMHTML.MetaElementExists
+ 0001:00271970       fOMHTML.TfrmOMHTML.RestoreState
+ 0001:00270EC4       fOMHTML.TfrmOMHTML.SaveState
+ 0001:002720AC       fOMHTML.TfrmOMHTML.SetDialog
+ 0001:00270B7C       fOMHTML.TfrmOMHTML.SetEventDelay
+ 0001:002723A8       fOMHTML.TfrmOMHTML.webViewBeforeNavigate2
+ 0001:00272278       fOMHTML.TfrmOMHTML.webViewDocumentComplete
+ 0001:00270618       fOMHTML.TPageState.Create
+ 0001:00270674       fOMHTML.TPageState.Destroy
+ 0001:0020B294       fOMNavA..TfrmOMNavA
+ 0001:0020B674       fOMNavA..TMenuPath
+ 0001:0020BC58       fOMNavA.TfrmOMNavA.accEventsGrdMenuCaptionQuery
+ 0001:0020C85C       fOMNavA.TfrmOMNavA.accEventsGrdMenuValueQuery
+ 0001:0020C8D8       fOMNavA.TfrmOMNavA.ActivateDialog
+ 0001:0020C1A4       fOMNavA.TfrmOMNavA.AddToSelectList
+ 0001:0020B6DC       fOMNavA.TfrmOMNavA.ClearMenuGrid
+ 0001:0020BAB8       fOMNavA.TfrmOMNavA.cmdDoneClick
+ 0001:0020BA74       fOMNavA.TfrmOMNavA.cmdNextClick
+ 0001:0020BA30       fOMNavA.TfrmOMNavA.cmdPrevClick
+ 0001:0020C7BC       fOMNavA.TfrmOMNavA.CMMouseLeave
+ 0001:0020BC24       fOMNavA.TfrmOMNavA.CreateParams
+ 0001:0020C7DC       fOMNavA.TfrmOMNavA.DialogNotDisabled
+ 0001:0020C1CC       fOMNavA.TfrmOMNavA.DoSelectList
+ 0001:0020B758       fOMNavA.TfrmOMNavA.FindOrderMenu
+ 0001:0020BDA8       fOMNavA.TfrmOMNavA.FormActivate
+ 0001:0020BDAC       fOMNavA.TfrmOMNavA.FormClose
+ 0001:0020BB7C       fOMNavA.TfrmOMNavA.FormCreate
+ 0001:0020BCAC       fOMNavA.TfrmOMNavA.FormDestroy
+ 0001:0020CC94       fOMNavA.TfrmOMNavA.FormResize
+ 0001:0020BEB8       fOMNavA.TfrmOMNavA.grdMenuDrawCell
+ 0001:0020C334       fOMNavA.TfrmOMNavA.grdMenuKeyDown
+ 0001:0020C4D8       fOMNavA.TfrmOMNavA.grdMenuKeyUp
+ 0001:0020C4FC       fOMNavA.TfrmOMNavA.grdMenuMouseDown
+ 0001:0020C620       fOMNavA.TfrmOMNavA.grdMenuMouseMove
+ 0001:0020C6BC       fOMNavA.TfrmOMNavA.grdMenuMouseUp
+ 0001:0020B7DC       fOMNavA.TfrmOMNavA.PlaceMenuItems
+ 0001:0020CBA0       fOMNavA.TfrmOMNavA.pnlToolMouseDown
+ 0001:0020CC18       fOMNavA.TfrmOMNavA.pnlToolMouseMove
+ 0001:0020CC84       fOMNavA.TfrmOMNavA.pnlToolMouseUp
+ 0001:0020CCCC       fOMNavA.TfrmOMNavA.ResizeFont
+ 0001:0020BE44       fOMNavA.TfrmOMNavA.SetEventDelay
+ 0001:0020B98C       fOMNavA.TfrmOMNavA.SetNavButtons
+ 0001:0020B904       fOMNavA.TfrmOMNavA.SetNewMenu
+ 0001:0020BC40       fOMNavA.TfrmOMNavA.UMDestroy
+ 0001:00272760       fOMSet..TfrmOMSet
+ 0001:002726F0       fOMSet..TSetItem
+ 0001:00272CD0       fOMSet.SkipToNext
+ 0001:00273534       fOMSet.TfrmOMSet.cmdInteruptClick
+ 0001:0027354C       fOMSet.TfrmOMSet.DeaCheckPassed
+ 0001:00272D08       fOMSet.TfrmOMSet.DoNextItem
+ 0001:0027344C       fOMSet.TfrmOMSet.FormClose
+ 0001:00273398       fOMSet.TfrmOMSet.FormCloseQuery
+ 0001:00273328       fOMSet.TfrmOMSet.FormCreate
+ 0001:00273358       fOMSet.TfrmOMSet.FormDestroy
+ 0001:00272A08       fOMSet.TfrmOMSet.InsertList
+ 0001:00273674       fOMSet.TfrmOMSet.IsCreatedByMenu
+ 0001:00272994       fOMSet.TfrmOMSet.SetEventDelay
+ 0001:002731A0       fOMSet.TfrmOMSet.UMDelayEvent
+ 0001:00273204       fOMSet.TfrmOMSet.UMDestroy
+ 0001:002027B0       fOMVerify..TfrmOMVerify
+ 0001:002029F8       fOMVerify.CutoffOutptPrompts
+ 0001:00202ADC       fOMVerify.ShowVerifyText
+ 0001:00202CD0       fOMVerify.TfrmOMVerify.cmdAcceptClick
+ 0001:00202CF0       fOMVerify.TfrmOMVerify.cmdCancelClick
+ 0001:00202CE0       fOMVerify.TfrmOMVerify.cmdEditClick
+ 0001:00202D00       fOMVerify.TfrmOMVerify.FormClose
+ 0001:00202CC4       fOMVerify.TfrmOMVerify.FormCreate
+ 0001:00202D08       fOMVerify.TfrmOMVerify.memTextKeyUp
+ 0001:00371DC0       fOptions..TfrmOptions
+ 0001:003729D8       fOptions..TRule
+ 0001:00372A4C       fOptions.DialogOptions
+ 0001:003735D0       fOptions.TfrmOptions.ApplyNotifications
+ 0001:0037377C       fOptions.TfrmOptions.ApplyOrderChecks
+ 0001:003738DC       fOptions.TfrmOptions.ApplyOtherStuff
+ 0001:00373448       fOptions.TfrmOptions.btnApplyClick
+ 0001:00374094       fOptions.TfrmOptions.btnCombinationsClick
+ 0001:00373138       fOptions.TfrmOptions.btnCoverDaysClick
+ 0001:0037317C       fOptions.TfrmOptions.btnCoverRemindersClick
+ 0001:0037425C       fOptions.TfrmOptions.btnDiagnosesClick
+ 0001:003742B8       fOptions.TfrmOptions.btnGraphSettingsClick
+ 0001:003742F8       fOptions.TfrmOptions.btnGraphViewsClick
+ 0001:003740D8       fOptions.TfrmOptions.btnNotesNotesClick
+ 0001:0037411C       fOptions.TfrmOptions.btnNotesTitlesClick
+ 0001:003732D0       fOptions.TfrmOptions.btnNotificationsRemoveClick
+ 0001:003731C0       fOptions.TfrmOptions.btnOtherParametersClick
+ 0001:00373204       fOptions.TfrmOptions.btnPatientSelectionClick
+ 0001:00373248       fOptions.TfrmOptions.btnPersonalListsClick
+ 0001:003741A4       fOptions.TfrmOptions.btnReport1Click
+ 0001:00374160       fOptions.TfrmOptions.btnReportsClick
+ 0001:00373FF0       fOptions.TfrmOptions.btnSurrogateClick
+ 0001:0037328C       fOptions.TfrmOptions.btnTeamsClick
+ 0001:00373FCC       fOptions.TfrmOptions.ChangeOnOff
+ 0001:00373970       fOptions.TfrmOptions.CheckApply
+ 0001:003739A0       fOptions.TfrmOptions.chkNotificationsFlaggedClick
+ 0001:00373034       fOptions.TfrmOptions.FormCreate
+ 0001:003730A4       fOptions.TfrmOptions.FormDestroy
+ 0001:003739B0       fOptions.TfrmOptions.LoadListView
+ 0001:00373498       fOptions.TfrmOptions.LoadNotifications
+ 0001:003735A8       fOptions.TfrmOptions.LoadOrderChecks
+ 0001:00373B94       fOptions.TfrmOptions.lvwNotificationsChange
+ 0001:00373D24       fOptions.TfrmOptions.lvwNotificationsColumnClick
+ 0001:00373D78       fOptions.TfrmOptions.lvwNotificationsCompare
+ 0001:00373E98       fOptions.TfrmOptions.lvwNotificationsDblClick
+ 0001:003741E8       fOptions.TfrmOptions.lvwNotificationsEnter
+ 0001:0037422C       fOptions.TfrmOptions.lvwNotificationsMouseDown
+ 0001:003733C8       fOptions.TfrmOptions.Offset
+ 0001:00373410       fOptions.TfrmOptions.pagOptionsEnter
+ 0001:003696E4       fOptionsCombinations..TCombination
+ 0001:00369318       fOptionsCombinations..TfrmOptionsCombinations
+ 0001:00369760       fOptionsCombinations.DialogOptionsCombinations
+ 0001:00369B10       fOptionsCombinations.TfrmOptionsCombinations.btnAddClick
+ 0001:0036A0D4       fOptionsCombinations.TfrmOptionsCombinations.btnOKClick
+ 0001:00369E38       fOptionsCombinations.TfrmOptionsCombinations.btnRemoveClick
+ 0001:00369FCC       fOptionsCombinations.TfrmOptionsCombinations.Duplicate
+ 0001:00369AEC       fOptionsCombinations.TfrmOptionsCombinations.FormCreate
+ 0001:0036A364       fOptionsCombinations.TfrmOptionsCombinations.FormShow
+ 0001:0036A204       fOptionsCombinations.TfrmOptionsCombinations.LoadCombinations
+ 0001:00369EA4       fOptionsCombinations.TfrmOptionsCombinations.lstAddByChange
+ 0001:0036A1B8       fOptionsCombinations.TfrmOptionsCombinations.lstAddByEnter
+ 0001:0036A1C8       fOptionsCombinations.TfrmOptionsCombinations.lstAddByExit
+ 0001:0036A0B8       fOptionsCombinations.TfrmOptionsCombinations.lstAddByKeyUp
+ 0001:00369A24       fOptionsCombinations.TfrmOptionsCombinations.lstAddByNeedData
+ 0001:0036A1D8       fOptionsCombinations.TfrmOptionsCombinations.lvwCombinationsChange
+ 0001:00369CC4       fOptionsCombinations.TfrmOptionsCombinations.lvwCombinationsColumnClick
+ 0001:00369D18       fOptionsCombinations.TfrmOptionsCombinations.lvwCombinationsCompare
+ 0001:00369810       fOptionsCombinations.TfrmOptionsCombinations.radAddByTypeClick
+ 0001:00370860       fOptionsDays..TfrmOptionsDays
+ 0001:00370DD4       fOptionsDays.DialogOptionsDays
+ 0001:003715E0       fOptionsDays.TfrmOptionsDays.AdjustLabLabel
+ 0001:00371490       fOptionsDays.TfrmOptionsDays.AdjustVisitLabel
+ 0001:003713A0       fOptionsDays.TfrmOptionsDays.btnLabDefaultsClick
+ 0001:003716FC       fOptionsDays.TfrmOptionsDays.btnOKClick
+ 0001:00371440       fOptionsDays.TfrmOptionsDays.btnVisitDefaultsClick
+ 0001:00370E84       fOptionsDays.TfrmOptionsDays.FormCreate
+ 0001:00370E94       fOptionsDays.TfrmOptionsDays.FormShow
+ 0001:0037129C       fOptionsDays.TfrmOptionsDays.spnLabInpatientClick
+ 0001:00371308       fOptionsDays.TfrmOptionsDays.spnLabOutpatientClick
+ 0001:00370FD8       fOptionsDays.TfrmOptionsDays.spnVisitStartClick
+ 0001:00371130       fOptionsDays.TfrmOptionsDays.spnVisitStopClick
+ 0001:00371728       fOptionsDays.TfrmOptionsDays.txtLabInpatientChange
+ 0001:00371844       fOptionsDays.TfrmOptionsDays.txtLabInpatientExit
+ 0001:00371374       fOptionsDays.TfrmOptionsDays.txtLabInpatientKeyPress
+ 0001:00371954       fOptionsDays.TfrmOptionsDays.txtLabOutpatientChange
+ 0001:00371A70       fOptionsDays.TfrmOptionsDays.txtLabOutpatientExit
+ 0001:00371B80       fOptionsDays.TfrmOptionsDays.txtVisitStartExit
+ 0001:00371D88       fOptionsDays.TfrmOptionsDays.txtVisitStartKeyPress
+ 0001:00371C20       fOptionsDays.TfrmOptionsDays.txtVisitStartKeyUp
+ 0001:00371C84       fOptionsDays.TfrmOptionsDays.txtVisitStopExit
+ 0001:00371DA4       fOptionsDays.TfrmOptionsDays.txtVisitStopKeyPress
+ 0001:00371D24       fOptionsDays.TfrmOptionsDays.txtVisitStopKeyUp
+ 0001:0036B974       fOptionsLists..TfrmOptionsLists
+ 0001:0036BF20       fOptionsLists.DialogOptionsLists
+ 0001:0036D798       fOptionsLists.ShowMatchingPatients
+ 0001:0036C338       fOptionsLists.TfrmOptionsLists.AddIfUnique
+ 0001:0036CB38       fOptionsLists.TfrmOptionsLists.btnDeleteListClick
+ 0001:0036CEB0       fOptionsLists.TfrmOptionsLists.btnListAddAllClick
+ 0001:0036D158       fOptionsLists.TfrmOptionsLists.btnListAddClick
+ 0001:0036CD5C       fOptionsLists.TfrmOptionsLists.btnListSaveChangesClick
+ 0001:0036C020       fOptionsLists.TfrmOptionsLists.btnNewListClick
+ 0001:0036D4FC       fOptionsLists.TfrmOptionsLists.btnOKClick
+ 0001:0036CE50       fOptionsLists.TfrmOptionsLists.btnPersonalPatientRAClick
+ 0001:0036CFD8       fOptionsLists.TfrmOptionsLists.btnPersonalPatientRClick
+ 0001:0036BFD0       fOptionsLists.TfrmOptionsLists.FormCreate
+ 0001:0036D36C       fOptionsLists.TfrmOptionsLists.FormShow
+ 0001:0036D3F8       fOptionsLists.TfrmOptionsLists.grpVisibilityClick
+ 0001:0036C76C       fOptionsLists.TfrmOptionsLists.lstAddByClick
+ 0001:0036D860       fOptionsLists.TfrmOptionsLists.lstAddByKeyPress
+ 0001:0036D410       fOptionsLists.TfrmOptionsLists.lstAddByNeedData
+ 0001:0036D280       fOptionsLists.TfrmOptionsLists.lstListPatsChange
+ 0001:0036D6B0       fOptionsLists.TfrmOptionsLists.lstListPatsMouseDown
+ 0001:0036C420       fOptionsLists.TfrmOptionsLists.lstPersonalListsChange
+ 0001:0036D07C       fOptionsLists.TfrmOptionsLists.lstPersonalPatientsChange
+ 0001:0036D724       fOptionsLists.TfrmOptionsLists.lstPersonalPatientsMouseDown
+ 0001:0036D600       fOptionsLists.TfrmOptionsLists.mnuPatientIDClick
+ 0001:0036C0E4       fOptionsLists.TfrmOptionsLists.radAddByTypeClick
+ 0001:0036B3A0       fOptionsNewList..TfrmOptionsNewList
+ 0001:0036B638       fOptionsNewList.DialogOptionsNewList
+ 0001:0036B6BC       fOptionsNewList.TfrmOptionsNewList.btnOKClick
+ 0001:0036B8E4       fOptionsNewList.TfrmOptionsNewList.FormCreate
+ 0001:0036B904       fOptionsNewList.TfrmOptionsNewList.txtNewListChange
+ 0001:0036B8BC       fOptionsNewList.TfrmOptionsNewList.txtNewListKeyPress
+ 0001:00367800       fOptionsNotes..TfrmOptionsNotes
+ 0001:00367B40       fOptionsNotes.DialogOptionsNotes
+ 0001:00367D88       fOptionsNotes.TfrmOptionsNotes.btnOKClick
+ 0001:00368210       fOptionsNotes.TfrmOptionsNotes.cboCosignerExit
+ 0001:003681E8       fOptionsNotes.TfrmOptionsNotes.cboCosignerNeedData
+ 0001:00367BF0       fOptionsNotes.TfrmOptionsNotes.FormShow
+ 0001:00368180       fOptionsNotes.TfrmOptionsNotes.spnAutoSaveClick
+ 0001:00367F28       fOptionsNotes.TfrmOptionsNotes.txtAutoSaveChange
+ 0001:00368070       fOptionsNotes.TfrmOptionsNotes.txtAutoSaveExit
+ 0001:00368044       fOptionsNotes.TfrmOptionsNotes.txtAutoSaveKeyPress
+ 0001:0036828C       fOptionsOther..TfrmOptionsOther
+ 0001:003686F0       fOptionsOther.DialogOptionsOther
+ 0001:003692A0       fOptionsOther.TfrmOptionsOther.btnEncDefaultsClick
+ 0001:00368A28       fOptionsOther.TfrmOptionsOther.btnOKClick
+ 0001:00368E94       fOptionsOther.TfrmOptionsOther.dtStartChange
+ 0001:00368D44       fOptionsOther.TfrmOptionsOther.dtStartExit
+ 0001:00368DD0       fOptionsOther.TfrmOptionsOther.dtStopExit
+ 0001:00368D24       fOptionsOther.TfrmOptionsOther.FormCreate
+ 0001:003687A0       fOptionsOther.TfrmOptionsOther.FormShow
+ 0001:00368F20       fOptionsOther.TfrmOptionsOther.txtEncStartChange
+ 0001:003691D8       fOptionsOther.TfrmOptionsOther.txtEncStartExit
+ 0001:0036907C       fOptionsOther.TfrmOptionsOther.txtEncStopChange
+ 0001:0036923C       fOptionsOther.TfrmOptionsOther.txtEncStopExit
+ 0001:0036D944       fOptionsPatientSelection..TfrmOptionsPatientSelection
+ 0001:0036E024       fOptionsPatientSelection.DialogOptionsPatientSelection
+ 0001:0036E8E8       fOptionsPatientSelection.TfrmOptionsPatientSelection.btnOKClick
+ 0001:0036EE2C       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboFridayNeedData
+ 0001:0036ED8C       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboMondayNeedData
+ 0001:0036EC90       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboProviderExit
+ 0001:0036EF20       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboProviderKeyUp
+ 0001:0036EEA4       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboProviderNeedData
+ 0001:0036EE54       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboSaturdayNeedData
+ 0001:0036EE7C       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboSundayNeedData
+ 0001:0036EE04       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboThursdayNeedData
+ 0001:0036EDB4       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboTuesdayNeedData
+ 0001:0036EDDC       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboWednesdayNeedData
+ 0001:0036E0E0       fOptionsPatientSelection.TfrmOptionsPatientSelection.FormCreate
+ 0001:0036E190       fOptionsPatientSelection.TfrmOptionsPatientSelection.FormShow
+ 0001:0036EECC       fOptionsPatientSelection.TfrmOptionsPatientSelection.NextControl
+ 0001:0036ECB8       fOptionsPatientSelection.TfrmOptionsPatientSelection.radListSourceClick
+ 0001:0036E680       fOptionsPatientSelection.TfrmOptionsPatientSelection.spnVisitStartClick
+ 0001:0036E7C0       fOptionsPatientSelection.TfrmOptionsPatientSelection.spnVisitStopClick
+ 0001:0036EA98       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStartExit
+ 0001:0036EEE0       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStartKeyPress
+ 0001:0036EBC8       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStartKeyUp
+ 0001:0036EB30       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStopExit
+ 0001:0036EEFC       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStopKeyPress
+ 0001:0036EC2C       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStopKeyUp
+ 0001:0036FC54       fOptionsReminders..TfrmOptionsReminders
+ 0001:0036FFD8       fOptionsReminders.DialogOptionsReminders
+ 0001:00370470       fOptionsReminders.TfrmOptionsReminders.btnAddClick
+ 0001:00370428       fOptionsReminders.TfrmOptionsReminders.btnDeleteClick
+ 0001:003703C0       fOptionsReminders.TfrmOptionsReminders.btnDownClick
+ 0001:003705F8       fOptionsReminders.TfrmOptionsReminders.btnOKClick
+ 0001:0037035C       fOptionsReminders.TfrmOptionsReminders.btnUpClick
+ 0001:00370214       fOptionsReminders.TfrmOptionsReminders.CheckEnable
+ 0001:0037009C       fOptionsReminders.TfrmOptionsReminders.FormCreate
+ 0001:003704D0       fOptionsReminders.TfrmOptionsReminders.GetFirstSelection
+ 0001:0037034C       fOptionsReminders.TfrmOptionsReminders.lstDisplayedChange
+ 0001:00370354       fOptionsReminders.TfrmOptionsReminders.lstNotDisplayedChange
+ 0001:00370550       fOptionsReminders.TfrmOptionsReminders.MoveSelected
+ 0001:0037070C       fOptionsReminders.TfrmOptionsReminders.radSortClick
+ 0001:00370508       fOptionsReminders.TfrmOptionsReminders.SetItem
+ 0001:00364198       fOptionsReportsCustom..TfrmOptionsReportsCustom
+ 0001:003646B0       fOptionsReportsCustom.DialogOptionsHSCustom
+ 0001:00364778       fOptionsReportsCustom.PlaceControl
+ 0001:00364814       fOptionsReportsCustom.Synch
+ 0001:00365240       fOptionsReportsCustom.TfrmOptionsReportsCustom.btnApplyClick
+ 0001:00365514       fOptionsReportsCustom.TfrmOptionsReportsCustom.btnCancelClick
+ 0001:00365D3C       fOptionsReportsCustom.TfrmOptionsReportsCustom.btnOKClick
+ 0001:00364F00       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtMaxExit
+ 0001:00365D14       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtMaxKeyPress
+ 0001:00365D60       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtSearchChange
+ 0001:00365F1C       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtSearchKeyPress
+ 0001:00365CAC       fOptionsReportsCustom.TfrmOptionsReportsCustom.FormClose
+ 0001:00364760       fOptionsReportsCustom.TfrmOptionsReportsCustom.FormCreate
+ 0001:00365F44       fOptionsReportsCustom.TfrmOptionsReportsCustom.FormShow
+ 0001:00364E60       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportDrawCell
+ 0001:00366428       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportKeyDown
+ 0001:00364A3C       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportKeyPress
+ 0001:00364C2C       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportMouseDown
+ 0001:0036552C       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStartExit
+ 0001:00365CC4       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStartKeyPress
+ 0001:003658EC       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStopExit
+ 0001:00365CEC       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStopKeyPress
+ 0001:00364828       fOptionsReportsCustom.TfrmOptionsReportsCustom.ShowEditor
+ 0001:003645E4       fOptionsReportsCustom.TfrmOptionsReportsCustom.UMDelayEvent
+ 0001:00364A14       fOptionsReportsCustom.TfrmOptionsReportsCustom.ValFor
+ 0001:00362878       fOptionsReportsDefault..TfrmOptionsReportsDefault
+ 0001:00362C84       fOptionsReportsDefault.DialogOptionsHSDefault
+ 0001:00363138       fOptionsReportsDefault.TfrmOptionsReportsDefault.btnCancelClick
+ 0001:00362D34       fOptionsReportsDefault.TfrmOptionsReportsDefault.btnOKClick
+ 0001:00363140       fOptionsReportsDefault.TfrmOptionsReportsDefault.btnResetClick
+ 0001:003638CC       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultEndKeyPress
+ 0001:0036418C       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultMaxClick
+ 0001:00363580       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultMaxExit
+ 0001:003638E0       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultMaxKeyPress
+ 0001:003638B8       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultStartKeyPress
+ 0001:0036371C       fOptionsReportsDefault.TfrmOptionsReportsDefault.fillLabelText
+ 0001:003638F4       fOptionsReportsDefault.TfrmOptionsReportsDefault.FormCreate
+ 0001:00364174       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStartClick
+ 0001:00363C10       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStartExit
+ 0001:00364114       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStartKeyPress
+ 0001:00364180       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStopClick
+ 0001:00363E8C       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStopExit
+ 0001:00364144       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStopKeyPress
+ 0001:0036EF48       fOptionsSurrogate..TfrmOptionsSurrogate
+ 0001:0036F294       fOptionsSurrogate.DialogOptionsSurrogate
+ 0004:00006518       fOptionsSurrogate.Surrogate
+ 0004:0000651C       fOptionsSurrogate.TempSurrogate
+ 0001:0036F700       fOptionsSurrogate.TfrmOptionsSurrogate.btnOKClick
+ 0001:0036F8D0       fOptionsSurrogate.TfrmOptionsSurrogate.btnRemoveClick
+ 0001:0036F580       fOptionsSurrogate.TfrmOptionsSurrogate.btnSurrogateDateRangeClick
+ 0001:0036FB54       fOptionsSurrogate.TfrmOptionsSurrogate.cboSurrogateChange
+ 0001:0036FC2C       fOptionsSurrogate.TfrmOptionsSurrogate.cboSurrogateKeyDown
+ 0001:0036F6D8       fOptionsSurrogate.TfrmOptionsSurrogate.cboSurrogateNeedData
+ 0001:0036F548       fOptionsSurrogate.TfrmOptionsSurrogate.FormShow
+ 0001:0036F934       fOptionsSurrogate.TfrmOptionsSurrogate.LabelInfo
+ 0001:0036A378       fOptionsTeams..TfrmOptionsTeams
+ 0001:0036A750       fOptionsTeams.DialogOptionsTeams
+ 0001:0036AFC8       fOptionsTeams.TfrmOptionsTeams.btnRemoveClick
+ 0001:0036AFC0       fOptionsTeams.TfrmOptionsTeams.cboSubscribeClick
+ 0001:0036B1AC       fOptionsTeams.TfrmOptionsTeams.cboSubscribeKeyDown
+ 0001:0036B1E8       fOptionsTeams.TfrmOptionsTeams.cboSubscribeMouseClick
+ 0001:0036AC20       fOptionsTeams.TfrmOptionsTeams.chkPersonalClick
+ 0001:0036AFB8       fOptionsTeams.TfrmOptionsTeams.chkRestrictClick
+ 0001:0036A820       fOptionsTeams.TfrmOptionsTeams.FillATeams
+ 0001:0036A94C       fOptionsTeams.TfrmOptionsTeams.FillList
+ 0001:0036A7F0       fOptionsTeams.TfrmOptionsTeams.FormCreate
+ 0001:0036AAC0       fOptionsTeams.TfrmOptionsTeams.ItemNotAMember
+ 0001:0036B164       fOptionsTeams.TfrmOptionsTeams.lstPatientsMouseDown
+ 0001:0036AC84       fOptionsTeams.TfrmOptionsTeams.lstTeamsClick
+ 0001:0036AB70       fOptionsTeams.TfrmOptionsTeams.MemberNotOnList
+ 0001:0036AA10       fOptionsTeams.TfrmOptionsTeams.MergeList
+ 0001:0036B0FC       fOptionsTeams.TfrmOptionsTeams.mnuPatientIDClick
+ 0001:003664A8       fOptionsTitles..TfrmOptionsTitles
+ 0001:00366930       fOptionsTitles.DialogOptionsTitles
+ 0001:0036723C       fOptionsTitles.TfrmOptionsTitles.AddIfUnique
+ 0001:0036707C       fOptionsTitles.TfrmOptionsTitles.btnAddClick
+ 0001:00366EFC       fOptionsTitles.TfrmOptionsTitles.btnDefaultClick
+ 0001:00367458       fOptionsTitles.TfrmOptionsTitles.btnDownClick
+ 0001:00366B38       fOptionsTitles.TfrmOptionsTitles.btnOKClick
+ 0001:003671C0       fOptionsTitles.TfrmOptionsTitles.btnRemoveClick
+ 0001:00366E18       fOptionsTitles.TfrmOptionsTitles.btnSaveChangesClick
+ 0001:003673DC       fOptionsTitles.TfrmOptionsTitles.btnUpClick
+ 0001:00366B60       fOptionsTitles.TfrmOptionsTitles.cboDocumentClassClick
+ 0001:003673D4       fOptionsTitles.TfrmOptionsTitles.cboDocumentTitlesChange
+ 0001:00366DC4       fOptionsTitles.TfrmOptionsTitles.cboDocumentTitlesNeedData
+ 0001:0036765C       fOptionsTitles.TfrmOptionsTitles.CheckEnable
+ 0001:003669E0       fOptionsTitles.TfrmOptionsTitles.FormShow
+ 0001:003674D8       fOptionsTitles.TfrmOptionsTitles.GetFirstSelection
+ 0001:0036711C       fOptionsTitles.TfrmOptionsTitles.lstYourTitlesChange
+ 0001:003677E8       fOptionsTitles.TfrmOptionsTitles.lstYourTitlesClick
+ 0001:00367324       fOptionsTitles.TfrmOptionsTitles.MemberNotOnList
+ 0001:0036754C       fOptionsTitles.TfrmOptionsTitles.RemoveSelected
+ 0001:00367510       fOptionsTitles.TfrmOptionsTitles.SetItem
+ 0001:002114A4       fOrderComment..TfrmWardComments
+ 0001:002116EC       fOrderComment.ExecuteWardComments
+ 0001:00211838       fOrderComment.TfrmWardComments.cmdCancelClick
+ 0001:00211828       fOrderComment.TfrmWardComments.cmdOKClick
+ 0001:00211820       fOrderComment.TfrmWardComments.FormCreate
+ 0001:00211840       fOrderComment.TfrmWardComments.memCommentsKeyUp
+ 0001:00215B88       fOrderFlag..TfrmFlagOrder
+ 0004:00005AAC       fOrderFlag.AlertRecip
+ 0001:00215E14       fOrderFlag.ExecuteFlagOrder
+ 0001:00216120       fOrderFlag.TfrmFlagOrder.cboAlertRecipientNeedData
+ 0001:0021608C       fOrderFlag.TfrmFlagOrder.cboOnExit
+ 0001:00216084       fOrderFlag.TfrmFlagOrder.cmdCancelClick
+ 0001:00215FBC       fOrderFlag.TfrmFlagOrder.cmdOKClick
+ 0001:00215F14       fOrderFlag.TfrmFlagOrder.FormCreate
+ 0004:000066AC       fOrders..2
+ 0001:0039608C       fOrders..TfrmOrders
+ 0001:003A3680       fOrders.Finalization
+ 0002:00001ECC       fOrders.fOrders
+ 0004:00006680       fOrders.frmOrders
+ 0004:00006684       fOrders.origWidths
+ 0001:00397338       fOrders.RemoveFromOrderList
+ 0001:003A3220       fOrders.TfrmOrders.ActivateDeactiveRenew
+ 0001:003A2228       fOrders.TfrmOrders.AddToListBox
+ 0001:00396E3C       fOrders.TfrmOrders.AllowContextChange
+ 0001:003A03CC       fOrders.TfrmOrders.btnDelayedOrderClick
+ 0001:003981FC       fOrders.TfrmOrders.CanChangeOrderView
+ 0001:003A22F8       fOrders.TfrmOrders.ChangesUpdate
+ 0001:003A306C       fOrders.TfrmOrders.CheckOrderStatus
+ 0001:00399694       fOrders.TfrmOrders.ClearOrderSheets
+ 0001:00396ED0       fOrders.TfrmOrders.ClearPtData
+ 0001:003A1EF4       fOrders.TfrmOrders.ClickLstSheet
+ 0001:003A0550       fOrders.TfrmOrders.CompressEventSection
+ 0001:003A06B8       fOrders.TfrmOrders.DfltViewForEvtDelay
+ 0001:003A1A6C       fOrders.TfrmOrders.DisplayDefaultDlgList
+ 0001:00396F30       fOrders.TfrmOrders.DisplayPage
+ 0001:003A0788       fOrders.TfrmOrders.EventRealeasedOrder1Click
+ 0001:003A05D0       fOrders.TfrmOrders.ExpandEventSection
+ 0001:00397988       fOrders.TfrmOrders.FormCreate
+ 0001:00397AF8       fOrders.TfrmOrders.FormDestroy
+ 0001:003A2F58       fOrders.TfrmOrders.FormShow
+ 0001:003A12D0       fOrders.TfrmOrders.GetEvtIFN
+ 0001:0039A78C       fOrders.TfrmOrders.GetOrderText
+ 0001:0039A274       fOrders.TfrmOrders.GetPlainText
+ 0001:0039A5B4       fOrders.TfrmOrders.GetStartStopText
+ 0001:003A2EF8       fOrders.TfrmOrders.getTotalSectionsWidth
+ 0001:003A2A28       fOrders.TfrmOrders.GroupChangesUpdate
+ 0001:003A304C       fOrders.TfrmOrders.hdrOrdersMouseDown
+ 0001:003A2F68       fOrders.TfrmOrders.hdrOrdersMouseUp
+ 0001:003A3644       fOrders.TfrmOrders.hdrOrdersSectionClick
+ 0001:0039AE8C       fOrders.TfrmOrders.hdrOrdersSectionResize
+ 0001:00399704       fOrders.TfrmOrders.InitOrderSheets
+ 0001:003A1F90       fOrders.TfrmOrders.InitOrderSheets2
+ 0001:003A069C       fOrders.TfrmOrders.InitOrderSheetsForEvtDelay
+ 0001:003A1F20       fOrders.TfrmOrders.lblWriteMouseMove
+ 0001:0039AEF8       fOrders.TfrmOrders.lstOrdersDblClick
+ 0001:0039AAA8       fOrders.TfrmOrders.lstOrdersDrawItem
+ 0001:0039A444       fOrders.TfrmOrders.lstOrdersMeasureItem
+ 0001:00399A68       fOrders.TfrmOrders.lstSheetsClick
+ 0001:0039AF14       fOrders.TfrmOrders.lstWriteClick
+ 0001:0039C288       fOrders.TfrmOrders.MakeSelectedList
+ 0001:0039A388       fOrders.TfrmOrders.MeasureColumnHeight
+ 0001:0039D39C       fOrders.TfrmOrders.mnuActAlertClick
+ 0001:0039DF90       fOrders.TfrmOrders.mnuActChangeClick
+ 0001:0039DC10       fOrders.TfrmOrders.mnuActChartRevClick
+ 0001:0039CB00       fOrders.TfrmOrders.mnuActChgEvntClick
+ 0001:003A2208       fOrders.TfrmOrders.mnuActClick
+ 0001:0039DD5C       fOrders.TfrmOrders.mnuActCommentClick
+ 0001:0039D978       fOrders.TfrmOrders.mnuActCompleteClick
+ 0001:0039E208       fOrders.TfrmOrders.mnuActCopyClick
+ 0001:0039C4AC       fOrders.TfrmOrders.mnuActDCClick
+ 0001:0039D4E8       fOrders.TfrmOrders.mnuActFlagClick
+ 0001:0039CDAC       fOrders.TfrmOrders.mnuActHoldClick
+ 0001:0039EA64       fOrders.TfrmOrders.mnuActOnChartClick
+ 0001:0039C73C       fOrders.TfrmOrders.mnuActRelClick
+ 0001:0039E6CC       fOrders.TfrmOrders.mnuActReleaseClick
+ 0001:0039D114       fOrders.TfrmOrders.mnuActRenewClick
+ 0001:0039EE08       fOrders.TfrmOrders.mnuActSignClick
+ 0001:0039D728       fOrders.TfrmOrders.mnuActUnflagClick
+ 0001:0039CF78       fOrders.TfrmOrders.mnuActUnholdClick
+ 0001:0039DAC4       fOrders.TfrmOrders.mnuActVerifyClick
+ 0001:00397318       fOrders.TfrmOrders.mnuChartTabClick
+ 0001:003A2218       fOrders.TfrmOrders.mnuOptClick
+ 0001:0039F2FC       fOrders.TfrmOrders.mnuOptEditCommonClick
+ 0001:003A34B0       fOrders.TfrmOrders.mnuOptimizeFieldsClick
+ 0001:0039F2E4       fOrders.TfrmOrders.mnuOptSaveQuickClick
+ 0001:003985B0       fOrders.TfrmOrders.mnuViewActiveClick
+ 0001:003A21F8       fOrders.TfrmOrders.mnuViewClick
+ 0001:00398628       fOrders.TfrmOrders.mnuViewCurrentClick
+ 0001:003987A0       fOrders.TfrmOrders.mnuViewCustomClick
+ 0001:00398E9C       fOrders.TfrmOrders.mnuViewDetailClick
+ 0001:00398B80       fOrders.TfrmOrders.mnuViewDfltSaveClick
+ 0001:003989E8       fOrders.TfrmOrders.mnuViewDfltShowClick
+ 0001:003986F0       fOrders.TfrmOrders.mnuViewExpiredClick
+ 0001:0039869C       fOrders.TfrmOrders.mnuViewExpiringClick
+ 0001:003A32E0       fOrders.TfrmOrders.mnuViewInformationClick
+ 0001:003992C8       fOrders.TfrmOrders.mnuViewResultClick
+ 0001:003994AC       fOrders.TfrmOrders.mnuViewResultsHistoryClick
+ 0001:0039874C       fOrders.TfrmOrders.mnuViewUnsignedClick
+ 0001:0039C2F4       fOrders.TfrmOrders.NoneSelected
+ 0001:003973C8       fOrders.TfrmOrders.NotifyOrder
+ 0001:003A1404       fOrders.TfrmOrders.PlaceOrderForDefaultDialog
+ 0001:003A007C       fOrders.TfrmOrders.pnlRightResize
+ 0001:003A21E8       fOrders.TfrmOrders.popOrderPopup
+ 0001:00397BD0       fOrders.TfrmOrders.PositionTopOrder
+ 0001:0039F314       fOrders.TfrmOrders.ProcessNotifications
+ 0001:003A24AC       fOrders.TfrmOrders.PtEvtCompleted
+ 0001:00397D00       fOrders.TfrmOrders.RedrawOrderList
+ 0001:00397E14       fOrders.TfrmOrders.RefreshOrderList
+ 0001:0039C384       fOrders.TfrmOrders.RemoveSelectedFromChanges
+ 0001:003A00AC       fOrders.TfrmOrders.RequestPrint
+ 0001:003A09C4       fOrders.TfrmOrders.ResetOrderPage
+ 0001:0039A198       fOrders.TfrmOrders.RetrieveVisibleOrders
+ 0001:0039A230       fOrders.TfrmOrders.RightClickMessageHandler
+ 0001:0039B700       fOrders.TfrmOrders.SaveSignOrders
+ 0001:003A2184       fOrders.TfrmOrders.SetFontSize
+ 0001:003982D4       fOrders.TfrmOrders.SetOrderView
+ 0001:003A2EB8       fOrders.TfrmOrders.setSectionWidths
+ 0001:003A3664       fOrders.TfrmOrders.sptHorzMoved
+ 0001:0039C3D8       fOrders.TfrmOrders.SynchListToOrders
+ 0001:00397BAC       fOrders.TfrmOrders.UMDestroy
+ 0001:003A2B38       fOrders.TfrmOrders.UMEventOccur
+ 0001:0039818C       fOrders.TfrmOrders.UseDefaultSort
+ 0001:0039B8B0       fOrders.TfrmOrders.ValidateSelected
+ 0001:0039FDC4       fOrders.TfrmOrders.ViewAlertedOrders
+ 0001:003A32C0       fOrders.TfrmOrders.ViewInfo
+ 0004:000066B4       fOrders.uEvtDCList
+ 0004:000066B8       fOrders.uEvtRLList
+ 0004:000066B0       fOrders.uOrderList
+ 0004:00005AB4       fOrdersAlert..2
+ 0001:00216148       fOrdersAlert..TfrmAlertOrders
+ 0004:00005AB8       fOrdersAlert.AlertRecip
+ 0001:002163C8       fOrdersAlert.ExecuteAlertOrders
+ 0001:00216620       fOrdersAlert.Finalization
+ 0002:00001418       fOrdersAlert.fOrdersAlert
+ 0004:00005AC0       fOrdersAlert.Provider
+ 0001:00216564       fOrdersAlert.TfrmAlertOrders.cboAlertRecipientNeedData
+ 0001:0021658C       fOrdersAlert.TfrmAlertOrders.cboOnExit
+ 0001:0021655C       fOrdersAlert.TfrmAlertOrders.cmdCancelClick
+ 0001:00216538       fOrdersAlert.TfrmAlertOrders.cmdOKClick
+ 0001:00216504       fOrdersAlert.TfrmAlertOrders.FormCreate
+ 0001:00210270       fOrderSaveQuick..TfrmSaveQuickOrder
+ 0001:00210604       fOrderSaveQuick.EditCommonList
+ 0001:00210818       fOrderSaveQuick.SaveAsQuickOrder
+ 0001:00211484       fOrderSaveQuick.TfrmSaveQuickOrder.cmdCancelClick
+ 0001:002110DC       fOrderSaveQuick.TfrmSaveQuickOrder.cmdDeleteClick
+ 0001:00210E78       fOrderSaveQuick.TfrmSaveQuickOrder.cmdDownClick
+ 0001:00211254       fOrderSaveQuick.TfrmSaveQuickOrder.cmdOKClick
+ 0001:00210ED8       fOrderSaveQuick.TfrmSaveQuickOrder.cmdRenameClick
+ 0001:00210E28       fOrderSaveQuick.TfrmSaveQuickOrder.cmdUpClick
+ 0001:0021124C       fOrderSaveQuick.TfrmSaveQuickOrder.FormCreate
+ 0001:0021148C       fOrderSaveQuick.TfrmSaveQuickOrder.pnlUpButtonEnter
+ 0001:00211498       fOrderSaveQuick.TfrmSaveQuickOrder.pnlUpButtonExit
+ 0001:00210D2C       fOrderSaveQuick.TfrmSaveQuickOrder.txtDisplayNameChange
+ 0001:00212164       fOrdersComplete..TfrmCompleteOrders
+ 0001:002123BC       fOrdersComplete.ExecuteCompleteOrders
+ 0001:002126B8       fOrdersComplete.TfrmCompleteOrders.cmdCancelClick
+ 0001:002124D0       fOrdersComplete.TfrmCompleteOrders.cmdOKClick
+ 0001:002124C8       fOrdersComplete.TfrmCompleteOrders.FormCreate
+ 0001:0020636C       fOrdersCopy..TfrmCopyOrders
+ 0001:002067E8       fOrdersCopy.DisplayEvntDialog
+ 0001:002068BC       fOrdersCopy.FindMatchedPtEvtID
+ 0004:00005AA8       fOrdersCopy.frmCopyOrders
+ 0001:00206714       fOrdersCopy.Highlight
+ 0001:00206A10       fOrdersCopy.SetViewForCopy
+ 0001:00207284       fOrdersCopy.TfrmCopyOrders.AdjustFormSize
+ 0001:00207314       fOrdersCopy.TfrmCopyOrders.cmdCancelClick
+ 0001:002071AC       fOrdersCopy.TfrmCopyOrders.cmdOKClick
+ 0001:0020716C       fOrdersCopy.TfrmCopyOrders.FormCreate
+ 0001:00207528       fOrdersCopy.TfrmCopyOrders.FormKeyDown
+ 0001:00207434       fOrdersCopy.TfrmCopyOrders.fraEvntDelayListcboEvntListChange
+ 0001:002074F8       fOrdersCopy.TfrmCopyOrders.fraEvntDelayListmlstEventsChange
+ 0001:00207474       fOrdersCopy.TfrmCopyOrders.fraEvntDelayListmlstEventsDblClick
+ 0001:0020731C       fOrdersCopy.TfrmCopyOrders.radEvtDelayClick
+ 0001:002073E8       fOrdersCopy.TfrmCopyOrders.radReleaseClick
+ 0001:00207464       fOrdersCopy.TfrmCopyOrders.UMStillDelay
+ 0001:002172C4       fOrdersCV..TfrmChgEvent
+ 0001:00217560       fOrdersCV.DisplayEvntDialog
+ 0001:00217788       fOrdersCV.ExecuteChangeEvt
+ 0001:00217634       fOrdersCV.FindMatchedPtEvtID
+ 0001:00218634       fOrdersCV.TfrmChgEvent.btnActionClick
+ 0001:002186B4       fOrdersCV.TfrmChgEvent.btnCancelClick
+ 0001:00218248       fOrdersCV.TfrmChgEvent.cboSpecialtyChange
+ 0001:002186BC       fOrdersCV.TfrmChgEvent.cboSpecialtyDblClick
+ 0001:00218980       fOrdersCV.TfrmChgEvent.FilterOutEmptyPtEvt
+ 0001:002186D8       fOrdersCV.TfrmChgEvent.FormClose
+ 0001:0021820C       fOrdersCV.TfrmChgEvent.FormCreate
+ 0001:002188A0       fOrdersCV.TfrmChgEvent.Highlight
+ 0001:00217FD0       fOrdersCV.TfrmChgEvent.LoadSpecialtyList
+ 0001:002186E8       fOrdersCV.TfrmChgEvent.updateChanges
+ 0001:00218A90       fOrdersDC..TfrmDCOrders
+ 0001:00218D44       fOrdersDC.ExecuteDCOrders
+ 0001:00219410       fOrdersDC.TfrmDCOrders.cmdCancelClick
+ 0001:0021935C       fOrdersDC.TfrmDCOrders.cmdOKClick
+ 0001:00219318       fOrdersDC.TfrmDCOrders.FormCreate
+ 0001:0021962C       fOrdersDC.TfrmDCOrders.FormDestroy
+ 0001:0021942C       fOrdersDC.TfrmDCOrders.lstOrdersDrawItem
+ 0001:00219530       fOrdersDC.TfrmDCOrders.lstOrdersMeasureItem
+ 0001:002195B0       fOrdersDC.TfrmDCOrders.MeasureColumnHeight
+ 0001:00219640       fOrdersDC.TfrmDCOrders.unMarkedOrignalOrderDC
+ 0001:002126C0       fOrdersEvntRelease..TfrmOrdersEvntRelease
+ 0001:00212ADC       fOrdersEvntRelease.SelectEvtReleasedOrders
+ 0001:00213BB4       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnApplyClick
+ 0001:00213C14       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnApplyKeyDown
+ 0001:00212FBC       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnCancelClick
+ 0001:00213268       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnOKClick
+ 0001:00213A10       fOrdersEvntRelease.TfrmOrdersEvntRelease.edtNumberChange
+ 0001:00213C28       fOrdersEvntRelease.TfrmOrdersEvntRelease.edtNumberClick
+ 0001:00213BA0       fOrdersEvntRelease.TfrmOrdersEvntRelease.edtNumberKeyDown
+ 0001:00213CAC       fOrdersEvntRelease.TfrmOrdersEvntRelease.FormClose
+ 0001:00212C24       fOrdersEvntRelease.TfrmOrdersEvntRelease.FormCreate
+ 0001:00212FC4       fOrdersEvntRelease.TfrmOrdersEvntRelease.FormShow
+ 0001:0021373C       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListDblClick
+ 0001:00212FD0       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListDrawCell
+ 0001:0021353C       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListKeyPress
+ 0001:00213070       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListMouseDown
+ 0001:00213754       fOrdersEvntRelease.TfrmOrdersEvntRelease.pnlBottomResize
+ 0001:0021379C       fOrdersEvntRelease.TfrmOrdersEvntRelease.ShowEvents
+ 0001:00213C34       fOrdersEvntRelease.TfrmOrdersEvntRelease.updown1Click
+ 0001:002169D4       fOrdersHold..TfrmHoldOrders
+ 0001:00216BEC       fOrdersHold.ExecuteHoldOrders
+ 0001:00216D8C       fOrdersHold.TfrmHoldOrders.cmdCancelClick
+ 0001:00216D7C       fOrdersHold.TfrmHoldOrders.cmdOKClick
+ 0001:00216D74       fOrdersHold.TfrmHoldOrders.FormCreate
+ 0001:00213CBC       fOrdersOnChart..TfrmOnChartOrders
+ 0001:00213F9C       fOrdersOnChart.ExecuteOnChartOrders
+ 0001:00213F40       fOrdersOnChart.FindOrderText
+ 0001:002145F0       fOrdersOnChart.TfrmOnChartOrders.cmdCancelClick
+ 0001:002145E0       fOrdersOnChart.TfrmOnChartOrders.cmdOKClick
+ 0001:002145D8       fOrdersOnChart.TfrmOnChartOrders.FormCreate
+ 0001:002146C8       fOrdersOnChart.TfrmOnChartOrders.lstOrdersDrawItem
+ 0001:002145F8       fOrdersOnChart.TfrmOnChartOrders.lstOrdersMeasureItem
+ 0001:0021480C       fOrdersOnChart.TfrmOnChartOrders.Panel2Resize
+ 0004:00004C14       fOrdersPrint..2
+ 0001:001B0464       fOrdersPrint..TfrmOrdersPrint
+ 0001:001B1724       fOrdersPrint.Finalization
+ 0002:0000128C       fOrdersPrint.fOrdersPrint
+ 0004:00004BF0       fOrdersPrint.PrintParams
+ 0001:001B0864       fOrdersPrint.SetupOrdersPrint
+ 0001:001B162C       fOrdersPrint.TfrmOrdersPrint.ckChartCopyClick
+ 0001:001B1660       fOrdersPrint.TfrmOrdersPrint.ckLabelsClick
+ 0001:001B1694       fOrdersPrint.TfrmOrdersPrint.ckRequisitionsClick
+ 0001:001B16C8       fOrdersPrint.TfrmOrdersPrint.ckWorkCopyClick
+ 0001:001B1310       fOrdersPrint.TfrmOrdersPrint.cmdCancelClick
+ 0001:001B0E34       fOrdersPrint.TfrmOrdersPrint.cmdChartClick
+ 0001:001B0EAC       fOrdersPrint.TfrmOrdersPrint.cmdLabelsClick
+ 0001:001B1014       fOrdersPrint.TfrmOrdersPrint.cmdOKClick
+ 0001:001B0F24       fOrdersPrint.TfrmOrdersPrint.cmdReqsClick
+ 0001:001B0F9C       fOrdersPrint.TfrmOrdersPrint.cmdWorkClick
+ 0001:001B16FC       fOrdersPrint.TfrmOrdersPrint.DeviceListClick
+ 0001:001B170C       fOrdersPrint.TfrmOrdersPrint.FormKeyUp
+ 0001:001B0A40       fOrdersPrint.TfrmOrdersPrint.SetupControls
+ 0001:001B0C60       fOrdersPrint.TfrmOrdersPrint.SetupPrompting
+ 0001:0021A6B8       fOrdersRefill..TfrmRefillOrders
+ 0001:0021A974       fOrdersRefill.ExecuteRefillOrders
+ 0001:0021AD8C       fOrdersRefill.TfrmRefillOrders.cmdCancelClick
+ 0001:0021AC60       fOrdersRefill.TfrmRefillOrders.cmdOKClick
+ 0001:0021AD94       fOrdersRefill.TfrmRefillOrders.FormClose
+ 0001:0021AB80       fOrdersRefill.TfrmRefillOrders.FormCreate
+ 0001:0021AD9C       fOrdersRefill.TfrmRefillOrders.FormShow
+ 0001:0021481C       fOrdersRelease..TfrmReleaseOrders
+ 0001:00214B94       fOrdersRelease.ExecuteReleaseOrders
+ 0001:00214AFC       fOrdersRelease.FindOrderText
+ 0001:00214B58       fOrdersRelease.SignNotRequired
+ 0001:00215604       fOrdersRelease.TfrmReleaseOrders.cmdCancelClick
+ 0001:00215340       fOrdersRelease.TfrmReleaseOrders.cmdOKClick
+ 0001:002152D0       fOrdersRelease.TfrmReleaseOrders.FormCreate
+ 0001:0021560C       fOrdersRelease.TfrmReleaseOrders.lstOrdersDrawItem
+ 0001:00215750       fOrdersRelease.TfrmReleaseOrders.lstOrdersMeasureItem
+ 0001:00215820       fOrdersRelease.TfrmReleaseOrders.Panel1Resize
+ 0001:0020EA9C       fOrdersRenew..TfrmRenewOrders
+ 0001:0020EE34       fOrdersRenew.ExecuteRenewOrders
+ 0001:0020EE28       fOrdersRenew.OrderForInpatient
+ 0001:0020ED78       fOrdersRenew.PickupText
+ 0001:0020FEA0       fOrdersRenew.TfrmRenewOrders.AcceptOrderCheckOnRenew
+ 0001:0020FE04       fOrdersRenew.TfrmRenewOrders.cmdCancelClick
+ 0001:0020F9C4       fOrdersRenew.TfrmRenewOrders.cmdChangeClick
+ 0001:0020FDF4       fOrdersRenew.TfrmRenewOrders.cmdOKClick
+ 0001:0020FF34       fOrdersRenew.TfrmRenewOrders.FormClose
+ 0001:0020F5E8       fOrdersRenew.TfrmRenewOrders.FormCreate
+ 0001:0020F610       fOrdersRenew.TfrmRenewOrders.FormResize
+ 0001:0020FF3C       fOrdersRenew.TfrmRenewOrders.hdrOrdersSectionResize
+ 0001:0020F8BC       fOrdersRenew.TfrmRenewOrders.lstOrdersClick
+ 0001:0020F79C       fOrdersRenew.TfrmRenewOrders.lstOrdersDrawItem
+ 0001:0020F694       fOrdersRenew.TfrmRenewOrders.lstOrdersMeasureItem
+ 0001:0020FE0C       fOrdersRenew.TfrmRenewOrders.MeasureColumnHeight
+ 0004:000058E4       fOrdersSign..2
+ 0001:001B1764       fOrdersSign..TfrmSignOrders
+ 0004:00004C18       fOrdersSign.arRect
+ 0004:000058C4       fOrdersSign.chkBoxStatus
+ 0004:000058E0       fOrdersSign.CopyBuffer
+ 0004:000058D8       fOrdersSign.copyOrderID
+ 0004:000058B8       fOrdersSign.crypto
+ 0001:001B1EF8       fOrdersSign.DigitalSign
+ 0001:001B1F9C       fOrdersSign.ExecuteSignOrders
+ 0001:001B5C64       fOrdersSign.Finalization
+ 0001:001B1E4C       fOrdersSign.FindOrderText
+ 0002:00001294       fOrdersSign.fOrdersSign
+ 0004:000058B0       fOrdersSign.FOSTFhintWindow
+ 0004:000058AC       fOrdersSign.FOSTFHintWndActive
+ 0004:000058C0       fOrdersSign.frmSignOrders
+ 0004:00005898       fOrdersSign.ProvDx
+ 0004:000058BC       fOrdersSign.rectIndex
+ 0001:001B1EB4       fOrdersSign.SignNotRequired
+ 0004:000058D0       fOrdersSign.srcDx
+ 0004:000058DC       fOrdersSign.srcIndex
+ 0004:000058C8       fOrdersSign.srcOrderID
+ 0004:000058CC       fOrdersSign.targetOrderID
+ 0004:000058B4       fOrdersSign.tempList
+ 0004:000058D4       fOrdersSign.tempOrderList
+ 0001:001B491C       fOrdersSign.TfrmSignOrders.buOrdersDiagnosisClick
+ 0001:001B54AC       fOrdersSign.TfrmSignOrders.clstOrdersClick
+ 0001:001B4054       fOrdersSign.TfrmSignOrders.clstOrdersClickCheck
+ 0001:001B3A50       fOrdersSign.TfrmSignOrders.clstOrdersDrawItem
+ 0001:001B5C38       fOrdersSign.TfrmSignOrders.clstOrdersKeyUp
+ 0001:001B3E94       fOrdersSign.TfrmSignOrders.clstOrdersMeasureItem
+ 0001:001B5330       fOrdersSign.TfrmSignOrders.clstOrdersMouseDown
+ 0001:001B41D8       fOrdersSign.TfrmSignOrders.clstOrdersMouseMove
+ 0001:001B3A18       fOrdersSign.TfrmSignOrders.cmdCancelClick
+ 0001:001B3668       fOrdersSign.TfrmSignOrders.cmdOKClick
+ 0001:001B4DA4       fOrdersSign.TfrmSignOrders.Copy1Click
+ 0001:001B4D9C       fOrdersSign.TfrmSignOrders.Exit1Click
+ 0001:001B5C4C       fOrdersSign.TfrmSignOrders.FormatListForScreenReader
+ 0001:001B3504       fOrdersSign.TfrmSignOrders.FormCreate
+ 0001:001B3A20       fOrdersSign.TfrmSignOrders.FormDestroy
+ 0001:001B5604       fOrdersSign.TfrmSignOrders.FormKeyDown
+ 0001:001B599C       fOrdersSign.TfrmSignOrders.FormMouseMove
+ 0001:001B5A04       fOrdersSign.TfrmSignOrders.FormResize
+ 0001:001B4528       fOrdersSign.TfrmSignOrders.FormShow
+ 0001:001B5A30       fOrdersSign.TfrmSignOrders.fraCoPayLabel23Enter
+ 0001:001B5A58       fOrdersSign.TfrmSignOrders.fraCoPayLabel23Exit
+ 0001:001B5A14       fOrdersSign.TfrmSignOrders.fraCoPaylblHNCMouseMove
+ 0001:001B1D10       fOrdersSign.TfrmSignOrders.GetCheckBoxStatus
+ 0001:001B1C24       fOrdersSign.TfrmSignOrders.GetNumberOfSelectedOrders
+ 0001:001B361C       fOrdersSign.TfrmSignOrders.IsSignatureRequired
+ 0001:001B4198       fOrdersSign.TfrmSignOrders.ItemsAreChecked
+ 0001:001B50AC       fOrdersSign.TfrmSignOrders.Paste1Click
+ 0001:001B1CB0       fOrdersSign.TfrmSignOrders.SetCheckBoxStatus
+ 0001:001B5A80       fOrdersSign.TfrmSignOrders.SetItemTextToState
+ 0001:001B5860       fOrdersSign.TfrmSignOrders.ShowTreatmentFactorHints
+ 0001:001B3F74       fOrdersSign.updateAllChilds
+ 0001:00202DB4       fOrdersTS..TfrmOrdersTS
+ 0004:00005A9C       fOrdersTS.frmOrdersTS
+ 0001:00203168       fOrdersTS.ShowDelayedEventsTreatingSepecialty
+ 0001:002039C8       fOrdersTS.TfrmOrdersTS.cmdCancelClick
+ 0001:0020388C       fOrdersTS.TfrmOrdersTS.cmdOKClick
+ 0001:00203C90       fOrdersTS.TfrmOrdersTS.FormClose
+ 0001:00203844       fOrdersTS.TfrmOrdersTS.FormCreate
+ 0001:00203CD0       fOrdersTS.TfrmOrdersTS.FormKeyDown
+ 0001:00203AE4       fOrdersTS.TfrmOrdersTS.fraEvntDelayListcboEvntListChange
+ 0001:00203CA0       fOrdersTS.TfrmOrdersTS.fraEvntDelayListmlstEventsChange
+ 0001:00203C0C       fOrdersTS.TfrmOrdersTS.fraEvntDelayListmlstEventsDblClick
+ 0001:002039D8       fOrdersTS.TfrmOrdersTS.radDelayedClick
+ 0001:00203A04       fOrdersTS.TfrmOrdersTS.radReleaseNowClick
+ 0001:00203B14       fOrdersTS.TfrmOrdersTS.UMStillDelay
+ 0001:0021665C       fOrdersUnhold..TfrmUnholdOrders
+ 0001:00216878       fOrdersUnhold.ExecuteUnholdOrders
+ 0001:002169CC       fOrdersUnhold.TfrmUnholdOrders.cmdCancelClick
+ 0001:002169BC       fOrdersUnhold.TfrmUnholdOrders.cmdOKClick
+ 0001:002169B4       fOrdersUnhold.TfrmUnholdOrders.FormCreate
+ 0001:002118EC       fOrdersVerify..TfrmVerifyOrders
+ 0001:00211BA4       fOrdersVerify.ExecuteVerifyOrders
+ 0001:00211F38       fOrdersVerify.TfrmVerifyOrders.cmdCancelClick
+ 0001:00211D54       fOrdersVerify.TfrmVerifyOrders.cmdOKClick
+ 0001:00211D4C       fOrdersVerify.TfrmVerifyOrders.FormCreate
+ 0001:00212010       fOrdersVerify.TfrmVerifyOrders.lstOrdersDrawItem
+ 0001:00211F40       fOrdersVerify.TfrmVerifyOrders.lstOrdersMeasureItem
+ 0001:00212154       fOrdersVerify.TfrmVerifyOrders.Panel1Resize
+ 0001:00215830       fOrderUnflag..TfrmUnflagOrder
+ 0001:00215A70       fOrderUnflag.ExecuteUnflagOrder
+ 0001:00215B80       fOrderUnflag.TfrmUnflagOrder.cmdCancelClick
+ 0001:00215B70       fOrderUnflag.TfrmUnflagOrder.cmdOKClick
+ 0001:00215B68       fOrderUnflag.TfrmUnflagOrder.FormCreate
+ 0001:00219678       fOrderVw..TfrmOrderView
+ 0001:00219A24       fOrderVw.SelectOrderView
+ 0001:0021A410       fOrderVw.TfrmOrderView.calChange
+ 0001:0021A2EC       fOrderVw.TfrmOrderView.chkDateRangeClick
+ 0001:0021A560       fOrderVw.TfrmOrderView.cmdCancelClick
+ 0001:0021A418       fOrderVw.TfrmOrderView.cmdOKClick
+ 0001:00219BF4       fOrderVw.TfrmOrderView.FormCreate
+ 0001:00219FC4       fOrderVw.TfrmOrderView.LoadDGroups
+ 0001:0021A13C       fOrderVw.TfrmOrderView.LoadFilters
+ 0001:0021A698       fOrderVw.TfrmOrderView.Splitter1Moved
+ 0001:00219E28       fOrderVw.TfrmOrderView.SynchViewData
+ 0001:0021A2B4       fOrderVw.TfrmOrderView.treServiceClick
+ 0001:0021A568       fOrderVw.TfrmOrderView.trFiltersClick
+ 0001:00219CA8       fOrderVw.TfrmOrderView.UpdateViewName
+ 0004:00005AC4       fOrderVw.uDGroupList
+ 0004:00005AC8       fOrderVw.uFilterList
+ 0004:000035E0       Forms..41
+ 0001:000777E8       Forms..TApplication
+ 0001:00074288       Forms..TControlScrollBar
+ 0001:00077328       Forms..TCustomDockForm
+ 0001:000760C0       Forms..TCustomForm
+ 0001:000751E0       Forms..TCustomFrame
+ 0001:0007643C       Forms..TForm
+ 0001:0007534C       Forms..TFrame
+ 0001:00077510       Forms..TMonitor
+ 0001:00077568       Forms..TScreen
+ 0001:000747F4       Forms..TScrollBox
+ 0001:00074524       Forms..TScrollingWinControl
+ 0001:000781B8       Forms.Adjustment
+ 0001:000804EC       Forms.AlignWork
+ 0001:00077C44       Forms.AllocateHWnd
+ 0004:000035D8       Forms.Application
+ 0003:00001C9C       Forms.AppVisible
+ 0003:00001BD0       Forms.BorderStyles
+ 0001:00077B78       Forms.CheckTaskWindow
+ 0001:0007DA10       Forms.ControlHasHelp
+ 0003:00001C14       Forms.CursorMap
+ 0003:00001C04       Forms.cUseAlpha
+ 0003:00001C0C       Forms.cUseColorKey
+ 0001:00077C58       Forms.DeallocateHWnd
+ 0001:0007AB9C       Forms.Default
+ 0001:0008143C       Forms.Default
+ 0001:0007C780       Forms.DestroyPopupWindow
+ 0001:000779BC       Forms.DisableTaskWindows
+ 0003:00001B84       Forms.DisablingWindows
+ 0001:0007EE98       Forms.DispatchShortCut
+ 0001:0008039C       Forms.DoAlign
+ 0001:0007796C       Forms.DoDisableWindow
+ 0001:00077AB8       Forms.DoFindWindow
+ 0001:00077934       Forms.DoneApplication
+ 0001:0007CF34       Forms.DoNestedActivation
+ 0001:000801E0       Forms.DoPosition
+ 0001:00081478       Forms.DrawAppIcon
+ 0001:00077A80       Forms.EnableTaskWindows
+ 0001:0007B548       Forms.EnumMonitorsProc
+ 0001:00083CC4       Forms.Finalization
+ 0001:00077BC4       Forms.FindGlobalComponent
+ 0001:000832F8       Forms.FindScanline
+ 0001:00077B1C       Forms.FindTopMostWindow
+ 0003:00001B74       Forms.FocusCount
+ 0003:00001B70       Forms.FocusMessages
+ 0001:00077B98       Forms.ForegroundTask
+ 0002:000006C4       Forms.Forms
+ 0001:0008087C       Forms.GetAnimation
+ 0001:00083308       Forms.GetCursorHeightMargin
+ 0001:0007DA48       Forms.GetHelpInfo
+ 0001:00080660       Forms.GetHint
+ 0001:00080698       Forms.GetHintControl
+ 0001:0007D9D0       Forms.GetMenuHelpContext
+ 0001:0007C0C4       Forms.GetNonToolWindowPopupParent
+ 0001:00077E18       Forms.GetParentForm
+ 0001:00081210       Forms.GetPopupOwnerWindows
+ 0001:00077DD4       Forms.GetRealParentForm
+ 0001:000782CC       Forms.GetRealScrollPosition
+ 0001:00080FCC       Forms.GetTopMostWindows
+ 0001:0007DC68       Forms.HandleEdge
+ 0004:000035EC       Forms.HintDoneEvent
+ 0001:00080768       Forms.HintGetMsgHook
+ 0004:000035F0       Forms.HintHook
+ 0001:0008070C       Forms.HintMouseThread
+ 0004:000035F4       Forms.HintThread
+ 0004:000035E8       Forms.HintThreadID
+ 0001:000806B8       Forms.HintTimerProc
+ 0003:00001B68       Forms.HintWindowClass
+ 0001:000807AC       Forms.HookHintHooks
+ 0003:00001BD8       Forms.HWND_STYLE
+ 0004:000035F8       Forms.IdleTimerHandle
+ 0001:00082C9C       Forms.IdleTimerProc
+ 0001:00083BCC       Forms.InitProcs
+ 0001:00080158       Forms.InsertBefore
+ 0001:00077D64       Forms.IsAccel
+ 0001:00082564       Forms.IsClass
+ 0001:00077D44       Forms.KeyboardStateToShiftState
+ 0001:00077CF8       Forms.KeyboardStateToShiftState
+ 0001:00077CB8       Forms.KeyDataToShiftState
+ 0001:00077C60       Forms.KeysToShiftState
+ 0001:0007ABE8       Forms.MaximizedChildren
+ 0001:0007D2D0       Forms.ModifySystemMenu
+ 0003:00001C68       Forms.MonitorDefaultFlags
+ 0001:000834C0       Forms.MultiLineWidth
+ 0001:0007EC98       Forms.ProcessExecute
+ 0001:00077FC4       Forms.ProcessHorz
+ 0001:0007ED98       Forms.ProcessUpdate
+ 0001:00078034       Forms.ProcessVert
+ 0003:00001B9C       Forms.Props
+ 0001:000778E0       Forms.RestoreFocusState
+ 0004:000035E4       Forms.RM_TaskbarCreated
+ 0001:000778D8       Forms.SaveFocusState
+ 0004:000035DC       Forms.Screen
+ 0001:00078184       Forms.ScrollBarVisible
+ 0001:00077B58       Forms.SendFocusMessage
+ 0001:000808AC       Forms.SetAnimation
+ 0003:00001B6C       Forms.SetLayeredWindowAttributes
+ 0001:00082F94       Forms.SetVisible
+ 0003:00001BEC       Forms.ShowCommands
+ 0003:00001BE0       Forms.ShowCommands
+ 0003:00001BF8       Forms.ShowCommands
+ 0003:00001CA0       Forms.ShowFlags
+ 0001:000778E8       Forms.ShowMDIClientEdge
+ 0001:000808D4       Forms.ShowWinNoAnimate
+ 0003:00001BC4       Forms.Styles
+ 0003:00001B94       Forms.SysConsts
+ 0003:00001B8C       Forms.SysConsts
+ 0001:00083570       Forms.TApplication.ActivateHint
+ 0001:00083908       Forms.TApplication.AddPopupForm
+ 0001:00081DC4       Forms.TApplication.BringToFront
+ 0001:000832D0       Forms.TApplication.CancelHint
+ 0001:00081378       Forms.TApplication.CheckIniChange
+ 0001:00080F6C       Forms.TApplication.ControlDestroyed
+ 0001:00080A68       Forms.TApplication.Create
+ 0001:000823E4       Forms.TApplication.CreateForm
+ 0001:00080DBC       Forms.TApplication.CreateHandle
+ 0001:00080C84       Forms.TApplication.Destroy
+ 0001:00083AE4       Forms.TApplication.DispatchAction
+ 0001:00082C14       Forms.TApplication.DoActionIdle
+ 0001:00082C78       Forms.TApplication.DoMouseIdle
+ 0001:0008103C       Forms.TApplication.DoNormalizeTopMosts
+ 0001:000829C8       Forms.TApplication.DoOnHelp
+ 0001:00081280       Forms.TApplication.DoShowOwnedPopups
+ 0001:00083B7C       Forms.TApplication.ExecuteAction
+ 0001:00083A5C       Forms.TApplication.GetActiveFormHandle
+ 0001:000839D0       Forms.TApplication.GetCurrentHelpFile
+ 0001:00083A0C       Forms.TApplication.GetDialogHandle
+ 0001:00082BB4       Forms.TApplication.GetExeName
+ 0001:00081BD8       Forms.TApplication.GetIconHandle
+ 0001:00083AA4       Forms.TApplication.GetMainFormHandle
+ 0001:00081E00       Forms.TApplication.GetTitle
+ 0001:000825C0       Forms.TApplication.HandleException
+ 0001:000822D0       Forms.TApplication.HandleMessage
+ 0001:00082BAC       Forms.TApplication.HelpCommand
+ 0001:00082B24       Forms.TApplication.HelpContext
+ 0001:00082A94       Forms.TApplication.HelpKeyword
+ 0001:0008325C       Forms.TApplication.HideHint
+ 0001:00083104       Forms.TApplication.HintMouseMessage
+ 0001:00083224       Forms.TApplication.HintTimerExpired
+ 0001:000822F4       Forms.TApplication.HookMainWindow
+ 0001:00083C28       Forms.TApplication.HookSynchronizeWakeup
+ 0001:00082E9C       Forms.TApplication.IconChanged
+ 0001:00082D04       Forms.TApplication.Idle
+ 0001:000823CC       Forms.TApplication.Initialize
+ 0001:000828A4       Forms.TApplication.InvokeHelp
+ 0001:00081EDC       Forms.TApplication.IsDlgMsg
+ 0001:00082068       Forms.TApplication.IsHintMsg
+ 0001:00081F74       Forms.TApplication.IsKeyMsg
+ 0001:00081F24       Forms.TApplication.IsMDIMsg
+ 0001:00083C48       Forms.TApplication.IsPreProcessMessage
+ 0001:0008209C       Forms.TApplication.IsShortCut
+ 0001:00082650       Forms.TApplication.MessageBox
+ 0001:00081BF4       Forms.TApplication.Minimize
+ 0001:00081118       Forms.TApplication.ModalFinished
+ 0001:000810EC       Forms.TApplication.ModalStarted
+ 0001:0008114C       Forms.TApplication.NormalizeAllTopMosts
+ 0001:00081144       Forms.TApplication.NormalizeTopMosts
+ 0001:00082E60       Forms.TApplication.NotifyForms
+ 0001:00082108       Forms.TApplication.PopupControlProc
+ 0001:000821A4       Forms.TApplication.ProcessMessage
+ 0001:000822B8       Forms.TApplication.ProcessMessages
+ 0001:00081154       Forms.TApplication.RemovePopupForm
+ 0001:00081CB8       Forms.TApplication.Restore
+ 0001:000811A4       Forms.TApplication.RestoreTopMosts
+ 0001:00082464       Forms.TApplication.Run
+ 0001:00083A30       Forms.TApplication.SetDialogHandle
+ 0001:00082F00       Forms.TApplication.SetHint
+ 0001:00082BC4       Forms.TApplication.SetShowHint
+ 0001:000813D0       Forms.TApplication.SettingChange
+ 0001:00081E4C       Forms.TApplication.SetTitle
+ 0001:000827CC       Forms.TApplication.ShowException
+ 0001:00083098       Forms.TApplication.StartHintTimer
+ 0001:000830DC       Forms.TApplication.StopHintTimer
+ 0001:00082550       Forms.TApplication.Terminate
+ 0001:00082350       Forms.TApplication.UnhookMainWindow
+ 0001:00083C38       Forms.TApplication.UnhookSynchronizeWakeup
+ 0001:00083BA4       Forms.TApplication.UpdateAction
+ 0001:00082FF0       Forms.TApplication.UpdateVisible
+ 0001:00081360       Forms.TApplication.UseRightToLeftAlignment
+ 0001:00081348       Forms.TApplication.UseRightToLeftReading
+ 0001:00083078       Forms.TApplication.ValidateHelpSystem
+ 0001:00083C18       Forms.TApplication.WakeMainThread
+ 0001:000814C4       Forms.TApplication.WndProc
+ 0003:00001B78       Forms.TaskActiveWindow
+ 0003:00001B80       Forms.TaskFirstTopMost
+ 0003:00001B7C       Forms.TaskFirstWindow
+ 0003:00001B88       Forms.TaskWindowList
+ 0001:00077F3C       Forms.TControlScrollBar.Assign
+ 0001:000780A0       Forms.TControlScrollBar.CalcAutoRange
+ 0001:00077F8C       Forms.TControlScrollBar.ChangeBiDiPosition
+ 0001:00078234       Forms.TControlScrollBar.ControlSize
+ 0001:00077EA8       Forms.TControlScrollBar.Create
+ 0001:000787F4       Forms.TControlScrollBar.DoSetRange
+ 0001:00077F34       Forms.TControlScrollBar.IsIncrementStored
+ 0001:00078820       Forms.TControlScrollBar.IsRangeStored
+ 0001:0007814C       Forms.TControlScrollBar.IsScrollBarVisible
+ 0001:000782B4       Forms.TControlScrollBar.NeedsScrollBarVisible
+ 0001:0007832C       Forms.TControlScrollBar.ScrollMessage
+ 0001:00078644       Forms.TControlScrollBar.SetButtonSize
+ 0001:00078688       Forms.TControlScrollBar.SetColor
+ 0001:000786A4       Forms.TControlScrollBar.SetParentColor
+ 0001:000786BC       Forms.TControlScrollBar.SetPosition
+ 0001:0007880C       Forms.TControlScrollBar.SetRange
+ 0001:00078780       Forms.TControlScrollBar.SetSize
+ 0001:000787C4       Forms.TControlScrollBar.SetStyle
+ 0001:000787DC       Forms.TControlScrollBar.SetThumbSize
+ 0001:00078830       Forms.TControlScrollBar.SetVisible
+ 0001:00078944       Forms.TControlScrollBar.Update
+ 0001:0007F490       Forms.TCustomDockForm.CMControlListChange
+ 0001:0007F4E8       Forms.TCustomDockForm.CMDockNotification
+ 0001:0007F5CC       Forms.TCustomDockForm.CMUnDockClient
+ 0001:0007F5E4       Forms.TCustomDockForm.CMVisibleChanged
+ 0001:0007F1E0       Forms.TCustomDockForm.Create
+ 0001:0007F248       Forms.TCustomDockForm.DoAddDockClient
+ 0001:0007F338       Forms.TCustomDockForm.DoRemoveDockClient
+ 0001:0007F3A4       Forms.TCustomDockForm.GetSiteInfo
+ 0001:0007F358       Forms.TCustomDockForm.Loaded
+ 0001:0007F3D0       Forms.TCustomDockForm.WMNCHitTest
+ 0001:0007F3F8       Forms.TCustomDockForm.WMNCLButtonDown
+ 0001:0007CF80       Forms.TCustomForm.Activate
+ 0001:0007CD5C       Forms.TCustomForm.ActiveChanged
+ 0001:0007976C       Forms.TCustomForm.AfterConstruction
+ 0001:0007AE08       Forms.TCustomForm.AlignControls
+ 0001:00079928       Forms.TCustomForm.BeforeDestruction
+ 0001:0007A104       Forms.TCustomForm.BeginAutoDrag
+ 0001:0007A108       Forms.TCustomForm.ChangeScale
+ 0001:0007AC28       Forms.TCustomForm.ClientWndProc
+ 0001:0007E5E4       Forms.TCustomForm.Close
+ 0001:0007E6EC       Forms.TCustomForm.CloseModal
+ 0001:0007E688       Forms.TCustomForm.CloseQuery
+ 0001:0007ED44       Forms.TCustomForm.CMActionExecute
+ 0001:0007EE44       Forms.TCustomForm.CMActionUpdate
+ 0001:0007DDCC       Forms.TCustomForm.CMActivate
+ 0001:0007D7B8       Forms.TCustomForm.CMAppSysCommand
+ 0001:0007AE74       Forms.TCustomForm.CMBiDiModeChanged
+ 0001:0007BC60       Forms.TCustomForm.CMColorChanged
+ 0001:0007BC9C       Forms.TCustomForm.CMCtl3DChanged
+ 0001:0007DDF0       Forms.TCustomForm.CMDeactivate
+ 0001:0007DE14       Forms.TCustomForm.CMDialogKey
+ 0001:0007BCE4       Forms.TCustomForm.CMFontChanged
+ 0001:0007E4CC       Forms.TCustomForm.CMIconChanged
+ 0001:0007E5B8       Forms.TCustomForm.CMIsShortCut
+ 0001:0007BD04       Forms.TCustomForm.CMMenuChanged
+ 0001:0007AF0C       Forms.TCustomForm.CMParentBiDiModeChanged
+ 0001:0007E54C       Forms.TCustomForm.CMParentFontChanged
+ 0001:0007AF98       Forms.TCustomForm.CMPopupHwndDestroy
+ 0001:0007E4EC       Forms.TCustomForm.CMRelease
+ 0001:0007DEB0       Forms.TCustomForm.CMShowingChanged
+ 0001:0007E4F4       Forms.TCustomForm.CMTextChanged
+ 0001:0007E544       Forms.TCustomForm.CMUIActivate
+ 0001:000795E0       Forms.TCustomForm.Create
+ 0001:000797A4       Forms.TCustomForm.CreateNew
+ 0001:0007C134       Forms.TCustomForm.CreateParams
+ 0001:0007C648       Forms.TCustomForm.CreateWindowHandle
+ 0001:0007C474       Forms.TCustomForm.CreateWnd
+ 0001:0007CFB0       Forms.TCustomForm.Deactivate
+ 0001:0007C90C       Forms.TCustomForm.DefaultHandler
+ 0001:00079F84       Forms.TCustomForm.DefineProperties
+ 0001:0007CA4C       Forms.TCustomForm.DefocusControl
+ 0001:00079990       Forms.TCustomForm.Destroy
+ 0001:0007C7C4       Forms.TCustomForm.DestroyHandle
+ 0001:0007C8C8       Forms.TCustomForm.DestroyWindowHandle
+ 0001:0007B3DC       Forms.TCustomForm.Dock
+ 0001:0007A258       Forms.TCustomForm.DoClose
+ 0001:00079A90       Forms.TCustomForm.DoCreate
+ 0001:00079B0C       Forms.TCustomForm.DoDestroy
+ 0001:0007B420       Forms.TCustomForm.DoDock
+ 0001:0007A278       Forms.TCustomForm.DoHide
+ 0001:0007A298       Forms.TCustomForm.DoShow
+ 0001:0007CA94       Forms.TCustomForm.FocusControl
+ 0001:0007B478       Forms.TCustomForm.GetActiveMDIChild
+ 0001:0007B000       Forms.TCustomForm.GetBorderIconStyles
+ 0001:0007B198       Forms.TCustomForm.GetBorderStyles
+ 0001:0007B618       Forms.TCustomForm.GetCanvas
+ 0001:0007A340       Forms.TCustomForm.GetChildren
+ 0001:0007A2B8       Forms.TCustomForm.GetClientRect
+ 0001:0007A3AC       Forms.TCustomForm.GetFloating
+ 0001:0007D000       Forms.TCustomForm.GetIconHandle
+ 0001:0007A0A4       Forms.TCustomForm.GetLeft
+ 0001:0007B4AC       Forms.TCustomForm.GetMDIChildCount
+ 0001:0007B4F8       Forms.TCustomForm.GetMDIChildren
+ 0001:0007B578       Forms.TCustomForm.GetMonitor
+ 0001:0007A3D8       Forms.TCustomForm.GetOwnerWindow
+ 0001:0007BABC       Forms.TCustomForm.GetPixelsPerInch
+ 0001:0007BAD0       Forms.TCustomForm.GetPopupChildren
+ 0001:0007BAF8       Forms.TCustomForm.GetRecreateChildren
+ 0001:0007BC24       Forms.TCustomForm.GetScaled
+ 0001:0007A0E0       Forms.TCustomForm.GetTextHeight
+ 0001:0007A0C4       Forms.TCustomForm.GetTop
+ 0001:0007F000       Forms.TCustomForm.HandleCreateException
+ 0001:0007E784       Forms.TCustomForm.Hide
+ 0001:0007A190       Forms.TCustomForm.IconChanged
+ 0001:0007F138       Forms.TCustomForm.InitAlphaBlending
+ 0001:0007A224       Forms.TCustomForm.IsAutoScrollStored
+ 0001:0007A1EC       Forms.TCustomForm.IsClientSizeStored
+ 0001:0007B62C       Forms.TCustomForm.IsForm
+ 0001:0007A1FC       Forms.TCustomForm.IsFormSizeStored
+ 0001:0007B634       Forms.TCustomForm.IsIconStored
+ 0001:0007EF14       Forms.TCustomForm.IsShortCut
+ 0001:00079B6C       Forms.TCustomForm.Loaded
+ 0001:0007CE8C       Forms.TCustomForm.MergeMenu
+ 0001:0007EFC8       Forms.TCustomForm.MouseWheelHandler
+ 0001:0007BC84       Forms.TCustomForm.NormalColor
+ 0001:00079BB8       Forms.TCustomForm.Notification
+ 0001:0007CFE0       Forms.TCustomForm.Paint
+ 0001:0007D01C       Forms.TCustomForm.PaintWindow
+ 0001:0007D0D8       Forms.TCustomForm.PaletteChanged
+ 0001:0007EF8C       Forms.TCustomForm.QueryInterface
+ 0001:0007A034       Forms.TCustomForm.ReadIgnoreFontProperty
+ 0001:00079CF4       Forms.TCustomForm.ReadState
+ 0001:0007A054       Forms.TCustomForm.ReadTextHeight
+ 0001:0007E830       Forms.TCustomForm.RecreateAsPopup
+ 0001:0007B7D0       Forms.TCustomForm.RefreshMDIMenu
+ 0001:0007E860       Forms.TCustomForm.Release
+ 0001:0007EC58       Forms.TCustomForm.RequestAlign
+ 0001:0007D75C       Forms.TCustomForm.Resizing
+ 0001:0007CE3C       Forms.TCustomForm.SendCancelMode
+ 0001:0007CDD8       Forms.TCustomForm.SetActive
+ 0001:0007C970       Forms.TCustomForm.SetActiveControl
+ 0001:0007CA30       Forms.TCustomForm.SetActiveOleControl
+ 0001:0007F0E8       Forms.TCustomForm.SetAlphaBlend
+ 0001:0007F0FC       Forms.TCustomForm.SetAlphaBlendValue
+ 0001:0007B0CC       Forms.TCustomForm.SetBorderIcons
+ 0001:0007B2AC       Forms.TCustomForm.SetBorderStyle
+ 0001:0007A3F0       Forms.TCustomForm.SetChildOrder
+ 0001:0007A4E0       Forms.TCustomForm.SetClientHeight
+ 0001:0007A4AC       Forms.TCustomForm.SetClientWidth
+ 0001:0007E7A4       Forms.TCustomForm.SetFocus
+ 0001:0007CAB8       Forms.TCustomForm.SetFocusedControl
+ 0001:0007B65C       Forms.TCustomForm.SetFormStyle
+ 0001:0007B620       Forms.TCustomForm.SetIcon
+ 0001:0007F010       Forms.TCustomForm.SetLayeredAttribs
+ 0001:0007F164       Forms.TCustomForm.SetLeft
+ 0001:0007B898       Forms.TCustomForm.SetMenu
+ 0001:0007B84C       Forms.TCustomForm.SetObjectMenuItem
+ 0001:0007A5C8       Forms.TCustomForm.SetParent
+ 0001:0007A484       Forms.TCustomForm.SetParentBiDiMode
+ 0001:0007BB20       Forms.TCustomForm.SetPixelsPerInch
+ 0001:0007BB70       Forms.TCustomForm.SetPopupMode
+ 0001:0007BBC4       Forms.TCustomForm.SetPopupParent
+ 0001:0007BB54       Forms.TCustomForm.SetPosition
+ 0001:0007BC30       Forms.TCustomForm.SetScaled
+ 0001:0007F1A0       Forms.TCustomForm.SetTop
+ 0001:0007F124       Forms.TCustomForm.SetTransparentColor
+ 0001:0007F110       Forms.TCustomForm.SetTransparentColorValue
+ 0001:0007A514       Forms.TCustomForm.SetVisible
+ 0001:0007CD60       Forms.TCustomForm.SetWindowFocus
+ 0001:0007B870       Forms.TCustomForm.SetWindowMenu
+ 0001:0007BD20       Forms.TCustomForm.SetWindowState
+ 0001:0007BD60       Forms.TCustomForm.SetWindowToMonitor
+ 0001:0007E78C       Forms.TCustomForm.Show
+ 0001:0007E87C       Forms.TCustomForm.ShowModal
+ 0001:0007EBF0       Forms.TCustomForm.UpdateActions
+ 0001:0007A684       Forms.TCustomForm.ValidateRename
+ 0001:0007A558       Forms.TCustomForm.VisibleChanging
+ 0001:0007A5C4       Forms.TCustomForm.WantChildKey
+ 0001:0007D73C       Forms.TCustomForm.WMActivate
+ 0001:0007D794       Forms.TCustomForm.WMClose
+ 0001:0007D610       Forms.TCustomForm.WMCommand
+ 0001:0007D4A8       Forms.TCustomForm.WMDestroy
+ 0001:0007D9B4       Forms.TCustomForm.WMEnterMenuLoop
+ 0001:0007D284       Forms.TCustomForm.WMEraseBkgnd
+ 0001:0007DBF4       Forms.TCustomForm.WMGetMinMaxInfo
+ 0001:0007DA7C       Forms.TCustomForm.WMHelp
+ 0001:0007D224       Forms.TCustomForm.WMIconEraseBkgnd
+ 0001:0007D644       Forms.TCustomForm.WMInitMenuPopup
+ 0001:0007D930       Forms.TCustomForm.WMMDIActivate
+ 0001:0007D65C       Forms.TCustomForm.WMMenuChar
+ 0001:0007D694       Forms.TCustomForm.WMMenuSelect
+ 0001:0007DD80       Forms.TCustomForm.WMNCCalcSize
+ 0001:0007D3CC       Forms.TCustomForm.WMNCCreate
+ 0001:0007D400       Forms.TCustomForm.WMNCHitTest
+ 0001:0007D418       Forms.TCustomForm.WMNCLButtonDown
+ 0001:0007D1FC       Forms.TCustomForm.WMNCPaint
+ 0001:0007D988       Forms.TCustomForm.WMNextDlgCtl
+ 0001:0007D17C       Forms.TCustomForm.WMPaint
+ 0001:0007D2BC       Forms.TCustomForm.WMQueryDragIcon
+ 0001:0007D79C       Forms.TCustomForm.WMQueryEndSession
+ 0001:0007EC78       Forms.TCustomForm.WMSettingChange
+ 0001:0007D898       Forms.TCustomForm.WMShowWindow
+ 0001:0007D810       Forms.TCustomForm.WMSysCommand
+ 0001:0007DC94       Forms.TCustomForm.WMWindowPosChanging
+ 0001:0007A6C4       Forms.TCustomForm.WndProc
+ 0001:0007A088       Forms.TCustomForm.WritePixelsPerInch
+ 0001:0007A06C       Forms.TCustomForm.WriteTextHeight
+ 0001:000793BC       Forms.TCustomFrame.Create
+ 0001:000794C8       Forms.TCustomFrame.CreateParams
+ 0001:000794EC       Forms.TCustomFrame.GetChildren
+ 0001:00079558       Forms.TCustomFrame.PaintWindow
+ 0001:0007955C       Forms.TCustomFrame.SetParent
+ 0001:0007F68C       Forms.TMonitor.GetBoundsRect
+ 0001:0007F63C       Forms.TMonitor.GetHeight
+ 0001:0007F624       Forms.TMonitor.GetLeft
+ 0001:0007F6EC       Forms.TMonitor.GetPrimary
+ 0001:0007F658       Forms.TMonitor.GetTop
+ 0001:0007F670       Forms.TMonitor.GetWidth
+ 0001:0007F6BC       Forms.TMonitor.GetWorkareaRect
+ 0001:0007EB80       Forms.TraverseClients
+ 0001:0007EDC8       Forms.TraverseClients
+ 0001:0007ECC8       Forms.TraverseClients
+ 0001:0007FAB4       Forms.TScreen.AddDataModule
+ 0001:0007FA2C       Forms.TScreen.AddForm
+ 0001:000805CC       Forms.TScreen.AlignForm
+ 0001:00080544       Forms.TScreen.AlignForms
+ 0001:0008097C       Forms.TScreen.ClearMonitors
+ 0001:0007F710       Forms.TScreen.Create
+ 0001:0007FACC       Forms.TScreen.CreateCursors
+ 0001:0007FB88       Forms.TScreen.DeleteCursor
+ 0001:0007F868       Forms.TScreen.Destroy
+ 0001:0007FB28       Forms.TScreen.DestroyCursors
+ 0001:00080128       Forms.TScreen.DisableAlign
+ 0001:00080130       Forms.TScreen.EnableAlign
+ 0001:0007FBD0       Forms.TScreen.FindMonitor
+ 0001:0007FEC8       Forms.TScreen.GetCursors
+ 0001:0007F9D8       Forms.TScreen.GetCustomFormCount
+ 0001:0007F9C4       Forms.TScreen.GetCustomForms
+ 0001:0007FEAC       Forms.TScreen.GetDataModule
+ 0001:0007FEC0       Forms.TScreen.GetDataModuleCount
+ 0001:0007FE40       Forms.TScreen.GetDefaultIME
+ 0001:0007F960       Forms.TScreen.GetDesktopHeight
+ 0001:0007F954       Forms.TScreen.GetDesktopLeft
+ 0001:0007F948       Forms.TScreen.GetDesktopTop
+ 0001:0007F96C       Forms.TScreen.GetDesktopWidth
+ 0001:0007F9A8       Forms.TScreen.GetForm
+ 0001:0007F9BC       Forms.TScreen.GetFormCount
+ 0001:0007F930       Forms.TScreen.GetHeight
+ 0001:0007FC40       Forms.TScreen.GetImes
+ 0001:0007FFD4       Forms.TScreen.GetMetricSettings
+ 0001:0007F978       Forms.TScreen.GetMonitor
+ 0001:0007F98C       Forms.TScreen.GetMonitorCount
+ 0001:000809B4       Forms.TScreen.GetMonitors
+ 0001:000809D8       Forms.TScreen.GetPrimaryMonitor
+ 0001:0007F93C       Forms.TScreen.GetWidth
+ 0001:00080904       Forms.TScreen.GetWorkAreaHeight
+ 0001:00080920       Forms.TScreen.GetWorkAreaRect
+ 0001:00080930       Forms.TScreen.GetWorkAreaWidth
+ 0001:0007FE5C       Forms.TScreen.IconFontChanged
+ 0001:0007FC18       Forms.TScreen.InsertCursor
+ 0001:0008094C       Forms.TScreen.MonitorFromPoint
+ 0001:00080150       Forms.TScreen.Realign
+ 0001:0007FAC0       Forms.TScreen.RemoveDataModule
+ 0001:0007FA64       Forms.TScreen.RemoveForm
+ 0001:00080654       Forms.TScreen.ResetFonts
+ 0001:0007FEF0       Forms.TScreen.SetCursor
+ 0001:0007FF8C       Forms.TScreen.SetCursors
+ 0001:0007F9E0       Forms.TScreen.UpdateLastActive
+ 0001:0007938C       Forms.TScrollBox.CMCtl3DChanged
+ 0001:000792B4       Forms.TScrollBox.Create
+ 0001:00079320       Forms.TScrollBox.CreateParams
+ 0001:000793B8       Forms.TScrollBox.PaintWindow
+ 0001:00079370       Forms.TScrollBox.SetBorderStyle
+ 0001:00079384       Forms.TScrollBox.WMNCHitTest
+ 0001:000791A4       Forms.TScrollingWinControl.AdjustClientRect
+ 0001:00078B64       Forms.TScrollingWinControl.AlignControls
+ 0001:00078B84       Forms.TScrollingWinControl.AutoScrollEnabled
+ 0001:00078E34       Forms.TScrollingWinControl.AutoScrollInView
+ 0001:00078CBC       Forms.TScrollingWinControl.CalcAutoRange
+ 0001:00079044       Forms.TScrollingWinControl.ChangeScale
+ 0001:00079224       Forms.TScrollingWinControl.CMBiDiModeChanged
+ 0001:00078A60       Forms.TScrollingWinControl.Create
+ 0001:00078B14       Forms.TScrollingWinControl.CreateParams
+ 0001:00078B24       Forms.TScrollingWinControl.CreateWnd
+ 0001:00078AD8       Forms.TScrollingWinControl.Destroy
+ 0001:00078BA4       Forms.TScrollingWinControl.DoFlipChildren
+ 0001:00079068       Forms.TScrollingWinControl.Resizing
+ 0001:00078FA0       Forms.TScrollingWinControl.ScaleScrollBars
+ 0001:00078E4C       Forms.TScrollingWinControl.ScrollInView
+ 0001:00078CE0       Forms.TScrollingWinControl.SetAutoScroll
+ 0001:00078D1C       Forms.TScrollingWinControl.SetHorzScrollBar
+ 0001:00078D2C       Forms.TScrollingWinControl.SetVertScrollBar
+ 0001:00078D3C       Forms.TScrollingWinControl.UpdateScrollBars
+ 0001:0007915C       Forms.TScrollingWinControl.WMHScroll
+ 0001:0007906C       Forms.TScrollingWinControl.WMSize
+ 0001:00079180       Forms.TScrollingWinControl.WMVScroll
+ 0001:00080820       Forms.UnhookHintHooks
+ 0001:0007883C       Forms.UpdateScrollProperties
+ 0001:00083460       Forms.ValidateHintWindow
+ 0001:00077E28       Forms.ValidParentForm
+ 0003:00001C74       Forms.WindowClass
+ 0001:002748F4       fOtherSchedule..TfrmOtherSchedule
+ 0004:00005F74       fOtherSchedule.frmOtherSchedule
+ 0001:00274E24       fOtherSchedule.ShowOtherSchedule
+ 0001:002751DC       fOtherSchedule.TfrmOtherSchedule.btn0k1Click
+ 0001:00275AA4       fOtherSchedule.TfrmOtherSchedule.btnAddClick
+ 0001:002751D0       fOtherSchedule.TfrmOtherSchedule.btnCancelClick
+ 0001:00275F78       fOtherSchedule.TfrmOtherSchedule.btnRemoveClick
+ 0001:00275CF4       fOtherSchedule.TfrmOtherSchedule.btnResetClick
+ 0001:00275DF4       fOtherSchedule.TfrmOtherSchedule.btnSchAddClick
+ 0001:00275EE0       fOtherSchedule.TfrmOtherSchedule.btnSchRemoveClick
+ 0001:00277028       fOtherSchedule.TfrmOtherSchedule.Button1Click
+ 0001:002759CC       fOtherSchedule.TfrmOtherSchedule.cbo1Click
+ 0001:002759F0       fOtherSchedule.TfrmOtherSchedule.cbo2Click
+ 0001:00275A14       fOtherSchedule.TfrmOtherSchedule.cbo3Click
+ 0001:00275A38       fOtherSchedule.TfrmOtherSchedule.cbo4Click
+ 0001:00275A5C       fOtherSchedule.TfrmOtherSchedule.cbo5Click
+ 0001:00275A80       fOtherSchedule.TfrmOtherSchedule.cbo6Click
+ 0001:002759A8       fOtherSchedule.TfrmOtherSchedule.cbo7Click
+ 0001:00276BDC       fOtherSchedule.TfrmOtherSchedule.CheckDay
+ 0001:00276F08       fOtherSchedule.TfrmOtherSchedule.EnabledSch
+ 0001:00276F58       fOtherSchedule.TfrmOtherSchedule.EnabledTime
+ 0001:0027622C       fOtherSchedule.TfrmOtherSchedule.FormClose
+ 0001:00275050       fOtherSchedule.TfrmOtherSchedule.FormCreate
+ 0001:002751B0       fOtherSchedule.TfrmOtherSchedule.FormDestroy
+ 0001:00276158       fOtherSchedule.TfrmOtherSchedule.GetSiteMessage
+ 0001:00276B90       fOtherSchedule.TfrmOtherSchedule.lstHourClick
+ 0001:00276FF4       fOtherSchedule.TfrmOtherSchedule.lstMinuteKeyDown
+ 0001:00276FC8       fOtherSchedule.TfrmOtherSchedule.lstMinuteMouseUp
+ 0001:00275354       fOtherSchedule.TfrmOtherSchedule.SetDaySchedule
+ 0001:00275670       fOtherSchedule.TfrmOtherSchedule.SetScheduleSelection
+ 0001:00275788       fOtherSchedule.TfrmOtherSchedule.SetTimeSchedule
+ 0001:00276BB8       fOtherSchedule.TfrmOtherSchedule.txtScheduleChange
+ 0001:0027687C       fOtherSchedule.TfrmOtherSchedule.UpdateOnFreeTextInput
+ 0001:00276270       fOtherSchedule.updateCheckbox
+ 0004:000067AC       fPage..2
+ 0001:003B4278       fPage..TfrmPage
+ 0001:003B47BC       fPage.Finalization
+ 0002:00001FD0       fPage.fPage
+ 0001:003B454C       fPage.TfrmPage.AllowContextChange
+ 0001:003B4564       fPage.TfrmPage.ClearPtData
+ 0001:003B457C       fPage.TfrmPage.DisplayPage
+ 0001:003B4758       fPage.TfrmPage.FocusFirstControl
+ 0001:003B46D4       fPage.TfrmPage.FormClose
+ 0001:003B4450       fPage.TfrmPage.FormCreate
+ 0001:003B46F0       fPage.TfrmPage.frmPageEnter
+ 0001:003B4674       fPage.TfrmPage.GetInitPage
+ 0001:003B4694       fPage.TfrmPage.GetInitPatient
+ 0001:003B46B4       fPage.TfrmPage.GetPatientViewed
+ 0001:003B44E0       fPage.TfrmPage.Loaded
+ 0001:003B45F8       fPage.TfrmPage.NotifyOrder
+ 0001:003B460C       fPage.TfrmPage.RequestPrint
+ 0001:003B4618       fPage.TfrmPage.SetFontSize
+ 0004:00004A54       fPatientEd..2
+ 0001:00189FEC       fPatientEd..TfrmPatientEd
+ 0001:0018A514       fPatientEd.Finalization
+ 0002:0000114C       fPatientEd.fPatientEd
+ 0004:00004A50       fPatientEd.frmPatientEd
+ 0001:0018A210       fPatientEd.TfrmPatientEd.cboPatUnderstandingChange
+ 0001:0018A2E0       fPatientEd.TfrmPatientEd.FormCreate
+ 0001:0018A370       fPatientEd.TfrmPatientEd.UpdateControls
+ 0001:0018A350       fPatientEd.TfrmPatientEd.UpdateNewItemStr
+ 0001:001E4804       fPatientFlagMulti..TfrmFlags
+ 0001:001E47AC       fPatientFlagMulti..TPRFNotes
+ 0001:001E4B78       fPatientFlagMulti.ShowFlags
+ 0001:001E547C       fPatientFlagMulti.TfrmFlags.ActivateSpecificFlag
+ 0001:001E4CC0       fPatientFlagMulti.TfrmFlags.FormClose
+ 0001:001E4CB4       fPatientFlagMulti.TfrmFlags.FormCreate
+ 0001:001E5184       fPatientFlagMulti.TfrmFlags.FormDestroy
+ 0001:001E4C74       fPatientFlagMulti.TfrmFlags.FormKeyDown
+ 0001:001E4C88       fPatientFlagMulti.TfrmFlags.FormShow
+ 0001:001E54D8       fPatientFlagMulti.TfrmFlags.GetListToActivate
+ 0001:001E4CC8       fPatientFlagMulti.TfrmFlags.GetNotes
+ 0001:001E5384       fPatientFlagMulti.TfrmFlags.LoadSelectedFlagData
+ 0001:001E4C30       fPatientFlagMulti.TfrmFlags.lstFlagsCat1Click
+ 0001:001E5438       fPatientFlagMulti.TfrmFlags.lstFlagsCat2Click
+ 0001:001E5190       fPatientFlagMulti.TfrmFlags.lvPRFClick
+ 0001:001E526C       fPatientFlagMulti.TfrmFlags.lvPRFKeyDown
+ 0001:001E5284       fPatientFlagMulti.TfrmFlags.MakeCat1FlagsStandOut
+ 0001:001E5550       fPatientFlagMulti.TfrmFlags.PutFlagsOnLists
+ 0001:001E5334       fPatientFlagMulti.TfrmFlags.TimerTextFlashTimer
+ 0001:001E4E9C       fPatientFlagMulti.TPRFNotes.create
+ 0001:001E4EE0       fPatientFlagMulti.TPRFNotes.Destroy
+ 0001:001E4F10       fPatientFlagMulti.TPRFNotes.getNoteIEN
+ 0001:001E4F78       fPatientFlagMulti.TPRFNotes.Load
+ 0001:001E5028       fPatientFlagMulti.TPRFNotes.ShowActionsOnList
+ 0004:000063C0       fPCEBase..2
+ 0001:00335914       fPCEBase..TfrmPCEBase
+ 0001:00335F64       fPCEBase.Finalization
+ 0002:000019D8       fPCEBase.fPCEBase
+ 0004:000063BC       fPCEBase.frmPCEBase
+ 0001:00335DCC       fPCEBase.TfrmPCEBase.ActiveCtrl
+ 0001:00335D4C       fPCEBase.TfrmPCEBase.AllowTabChange
+ 0001:00335CC4       fPCEBase.TfrmPCEBase.btnCancelClick
+ 0001:00335CFC       fPCEBase.TfrmPCEBase.btnOKClick
+ 0001:00335D5C       fPCEBase.TfrmPCEBase.CreateLinked
+ 0001:00335BD4       fPCEBase.TfrmPCEBase.DisplayPage
+ 0001:00335F3C       fPCEBase.TfrmPCEBase.DoEnter
+ 0001:00335D28       fPCEBase.TfrmPCEBase.FormClose
+ 0001:00335B40       fPCEBase.TfrmPCEBase.FormCreate
+ 0001:00335B68       fPCEBase.TfrmPCEBase.Loaded
+ 0001:00335E0C       fPCEBase.TfrmPCEBase.SectionString
+ 0001:00335C34       fPCEBase.TfrmPCEBase.SetFontSize
+ 0001:00335C54       fPCEBase.TfrmPCEBase.UMResizePage
+ 0004:00004A14       fPCEBaseGrid..2
+ 0001:00180C0C       fPCEBaseGrid..TfrmPCEBaseGrid
+ 0001:001815D4       fPCEBaseGrid.Finalization
+ 0002:0000109C       fPCEBaseGrid.fPCEBaseGrid
+ 0001:00181440       fPCEBaseGrid.TfrmPCEBaseGrid.ClearGrid
+ 0001:00180E44       fPCEBaseGrid.TfrmPCEBaseGrid.FormCreate
+ 0001:001813A0       fPCEBaseGrid.TfrmPCEBaseGrid.GetGridIndex
+ 0001:001810D8       fPCEBaseGrid.TfrmPCEBaseGrid.hcGridSectionResize
+ 0001:001810E0       fPCEBaseGrid.TfrmPCEBaseGrid.pnlGridResize
+ 0001:00181498       fPCEBaseGrid.TfrmPCEBaseGrid.RestoreGridSelected
+ 0001:00181540       fPCEBaseGrid.TfrmPCEBaseGrid.SaveGridSelected
+ 0001:001813F8       fPCEBaseGrid.TfrmPCEBaseGrid.SetGridIndex
+ 0001:001810E8       fPCEBaseGrid.TfrmPCEBaseGrid.SyncGridData
+ 0001:00180E70       fPCEBaseGrid.TfrmPCEBaseGrid.SyncGridHeader
+ 0001:00181494       fPCEBaseGrid.TfrmPCEBaseGrid.UpdateControls
+ 0004:00004A60       fPCEBaseMain..2
+ 0001:0018B5B8       fPCEBaseMain..TfrmPCEBaseMain
+ 0001:0018B9F8       fPCEBaseMain..TLBSectionManager
+ 0001:0018CF1C       fPCEBaseMain.Finalization
+ 0002:00001174       fPCEBaseMain.fPCEBaseMain
+ 0001:0018BED4       fPCEBaseMain.TfrmPCEBaseMain.AllowTabChange
+ 0001:0018C2F0       fPCEBaseMain.TfrmPCEBaseMain.BeginUpdate
+ 0001:0018BC60       fPCEBaseMain.TfrmPCEBaseMain.btnOtherClick
+ 0001:0018BDF4       fPCEBaseMain.TfrmPCEBaseMain.btnOtherExit
+ 0001:0018BEF8       fPCEBaseMain.TfrmPCEBaseMain.btnRemoveClick
+ 0001:0018C4B4       fPCEBaseMain.TfrmPCEBaseMain.btnSelectAllClick
+ 0001:0018C314       fPCEBaseMain.TfrmPCEBaseMain.CheckOffEntries
+ 0001:0018C1D4       fPCEBaseMain.TfrmPCEBaseMain.clbListClick
+ 0001:0018C54C       fPCEBaseMain.TfrmPCEBaseMain.clbListMouseDown
+ 0001:0018BEDC       fPCEBaseMain.TfrmPCEBaseMain.edtCommentChange
+ 0001:0018BE54       fPCEBaseMain.TfrmPCEBaseMain.edtCommentExit
+ 0001:0018CD54       fPCEBaseMain.TfrmPCEBaseMain.edtCommentKeyPress
+ 0001:0018C2F8       fPCEBaseMain.TfrmPCEBaseMain.EndUpdate
+ 0001:0018C218       fPCEBaseMain.TfrmPCEBaseMain.FormCreate
+ 0001:0018C250       fPCEBaseMain.TfrmPCEBaseMain.FormDestroy
+ 0001:0018C534       fPCEBaseMain.TfrmPCEBaseMain.FormResize
+ 0001:0018C554       fPCEBaseMain.TfrmPCEBaseMain.GetCat
+ 0001:0018BB18       fPCEBaseMain.TfrmPCEBaseMain.GridChanged
+ 0001:0018C290       fPCEBaseMain.TfrmPCEBaseMain.InitTab
+ 0001:0018C1D8       fPCEBaseMain.TfrmPCEBaseMain.lbGridExit
+ 0001:0018C20C       fPCEBaseMain.TfrmPCEBaseMain.lbGridSelect
+ 0001:0018BAA8       fPCEBaseMain.TfrmPCEBaseMain.lbSectionClick
+ 0001:0018BAE0       fPCEBaseMain.TfrmPCEBaseMain.lbSectionExit
+ 0001:0018C5F0       fPCEBaseMain.TfrmPCEBaseMain.lbxSectionClickCheck
+ 0001:0018C8E8       fPCEBaseMain.TfrmPCEBaseMain.lbxSectionExit
+ 0001:0018C308       fPCEBaseMain.TfrmPCEBaseMain.NotUpdating
+ 0001:0018C998       fPCEBaseMain.TfrmPCEBaseMain.splLeftMoved
+ 0001:0018C9D4       fPCEBaseMain.TfrmPCEBaseMain.Sync2Grid
+ 0001:0018CBA0       fPCEBaseMain.TfrmPCEBaseMain.Sync2Section
+ 0001:0018C0B8       fPCEBaseMain.TfrmPCEBaseMain.UpdateControls
+ 0001:0018BB14       fPCEBaseMain.TfrmPCEBaseMain.UpdateNewItemStr
+ 0001:0018C948       fPCEBaseMain.TfrmPCEBaseMain.UpdateTabPos
+ 0001:0018CDC0       fPCEBaseMain.TLBSectionManager.GetItemInstructions
+ 0001:0018CE5C       fPCEBaseMain.TLBSectionManager.GetState
+ 0004:000058F4       fPCEEdit..2
+ 0001:001B8AB8       fPCEEdit..TfrmPCEEdit
+ 0001:001B8CBC       fPCEEdit.EditPCEData
+ 0001:001B9298       fPCEEdit.Finalization
+ 0002:000012A4       fPCEEdit.fPCEEdit
+ 0001:001B9250       fPCEEdit.TfrmPCEEdit.FormCreate
+ 0003:000037FC       fPCEEdit.uPatient
+ 0003:000037F4       fPCEEdit.uPCETemp
+ 0003:000037F8       fPCEEdit.uPCETempOld
+ 0001:0017BFC4       fPCELex..TfrmPCELex
+ 0001:0017C270       fPCELex.LexiconLookup
+ 0001:0017C718       fPCELex.TfrmPCELex.cmdCancelClick
+ 0001:0017C5BC       fPCELex.TfrmPCELex.cmdOKClick
+ 0001:0017C414       fPCELex.TfrmPCELex.cmdSearchClick
+ 0001:0017C300       fPCELex.TfrmPCELex.FormCreate
+ 0001:0017C570       fPCELex.TfrmPCELex.lstSelectClick
+ 0001:0017C730       fPCELex.TfrmPCELex.lstSelectDblClick
+ 0001:0017C310       fPCELex.TfrmPCELex.SetApp
+ 0001:0017C3D8       fPCELex.TfrmPCELex.SetDate
+ 0001:0017C3F4       fPCELex.TfrmPCELex.txtSearchChange
+ 0001:0018D488       fPCEOther..TfrmPCEOther
+ 0001:0018D6C4       fPCEOther.OtherLookup
+ 0001:0018D924       fPCEOther.TfrmPCEOther.cboOtherChange
+ 0001:0018D91C       fPCEOther.TfrmPCEOther.cboOtherDblClick
+ 0001:0018D904       fPCEOther.TfrmPCEOther.cmdCancelClick
+ 0001:0018D878       fPCEOther.TfrmPCEOther.cmdOKClick
+ 0001:0018D8F4       fPCEOther.TfrmPCEOther.FormCreate
+ 0001:0018D744       fPCEOther.TfrmPCEOther.SetApp
+ 0001:00183B08       fPCEProvider..TfrmPCEProvider
+ 0001:00183D74       fPCEProvider.NoPrimaryPCEProvider
+ 0001:001842D4       fPCEProvider.TfrmPCEProvider.AskUser
+ 0001:00184190       fPCEProvider.TfrmPCEProvider.btnSelectClick
+ 0001:00184088       fPCEProvider.TfrmPCEProvider.cboPrimaryChange
+ 0001:00183FEC       fPCEProvider.TfrmPCEProvider.cboPrimaryNeedData
+ 0001:00184174       fPCEProvider.TfrmPCEProvider.FormCreate
+ 0001:001ADBD4       fPreReq..TfrmPrerequisites
+ 0004:00004BE8       fPreReq.ContinueWithOrder
+ 0001:001ADE84       fPreReq.CreateReportBox
+ 0001:001AE0C0       fPreReq.DisplayPrerequisites
+ 0001:001AE434       fPreReq.TfrmPrerequisites.AlignButtons
+ 0001:001AE16C       fPreReq.TfrmPrerequisites.cmdCancelClick
+ 0001:001AE15C       fPreReq.TfrmPrerequisites.cmdContinueClick
+ 0001:001AE17C       fPreReq.TfrmPrerequisites.cmdPrintClick
+ 0001:001AE46C       fPreReq.TfrmPrerequisites.FormClose
+ 0001:001AE474       fPreReq.TfrmPrerequisites.FormCreate
+ 0001:001AE158       fPreReq.TfrmPrerequisites.memReportClick
+ 0001:001AE488       fPreReq.TfrmPrerequisites.OnActivate
+ 0001:00267EF4       fPrintList..TfrmPrintList
+ 0004:00005F54       fPrintList.frmPrintList
+ 0004:00005F58       fPrintList.HLDPageID
+ 0001:00268134       fPrintList.TfrmPrintList.cmdCancelClick
+ 0001:0026814C       fPrintList.TfrmPrintList.cmdOKClick
+ 0001:00268124       fPrintList.TfrmPrintList.FormCreate
+ 0001:002681EC       fPrintList.TfrmPrintList.SelectParentFromList
+ 0004:00005B38       fPrintLocation..2
+ 0001:00221ECC       fPrintLocation..TfrmPrintLocation
+ 0004:00005B24       fPrintLocation.ASvc
+ 0004:00005B30       fPrintLocation.ClinicArr
+ 0004:00005B28       fPrintLocation.ClinicLocation
+ 0001:00223BF4       fPrintLocation.Finalization
+ 0002:0000145C       fPrintLocation.fPrintLocation
+ 0004:00005B20       fPrintLocation.frmPrintLocation
+ 0001:002236F8       fPrintLocation.PlaceControl
+ 0001:00223784       fPrintLocation.SynchCombo
+ 0001:00222260       fPrintLocation.TfrmPrintLocation.btnClinicClick
+ 0001:002222A0       fPrintLocation.TfrmPrintLocation.btnOKClick
+ 0001:00222520       fPrintLocation.TfrmPrintLocation.btnWardClick
+ 0001:00222560       fPrintLocation.TfrmPrintLocation.cbolocationChange
+ 0001:002225C4       fPrintLocation.TfrmPrintLocation.cbolocationExit
+ 0001:002225D0       fPrintLocation.TfrmPrintLocation.FormClose
+ 0001:0022283C       fPrintLocation.TfrmPrintLocation.FormResize
+ 0001:00222858       fPrintLocation.TfrmPrintLocation.OrderGridDrawCell
+ 0001:002228F8       fPrintLocation.TfrmPrintLocation.orderGridKeyPress
+ 0001:00222924       fPrintLocation.TfrmPrintLocation.orderGridMouseDown
+ 0001:00222990       fPrintLocation.TfrmPrintLocation.pnlFieldsResize
+ 0001:0022313C       fPrintLocation.TfrmPrintLocation.PrintLocation
+ 0001:00223504       fPrintLocation.TfrmPrintLocation.ProcessClinicOrders
+ 0001:00223634       fPrintLocation.TfrmPrintLocation.rpcChangeOrderLocation
+ 0001:00223838       fPrintLocation.TfrmPrintLocation.ShowEditor
+ 0001:002238C8       fPrintLocation.TfrmPrintLocation.SwitchEncounterLoction
+ 0001:00223B08       fPrintLocation.TfrmPrintLocation.ValFor
+ 0004:00005B34       fPrintLocation.WardArr
+ 0004:00005B2C       fPrintLocation.WardLocation
+ 0001:001E0CA4       fProbCmt..TfrmProbCmt
+ 0001:001E0F30       fProbCmt.EditComment
+ 0004:000059A8       fProbCmt.frmProbCmt
+ 0001:001E0EB4       fProbCmt.NewComment
+ 0001:001E100C       fProbCmt.TfrmProbCmt.bbCancelClick
+ 0001:001E1038       fProbCmt.TfrmProbCmt.bbOKClick
+ 0004:00005A08       fProbEdt..2
+ 0001:001EEA10       fProbEdt..TfrmdlgProb
+ 0001:001F2880       fProbEdt.Finalization
+ 0002:000013D4       fProbEdt.fProbEdt
+ 0001:001F1B18       fProbEdt.Msg
+ 0001:001F10EC       fProbEdt.Permanent
+ 0001:001F1C54       fProbEdt.TfrmdlgProb.BadDates
+ 0001:001EF104       fProbEdt.TfrmdlgProb.bbAddComClick
+ 0001:001F23F8       fProbEdt.TfrmdlgProb.bbChangeProbClick
+ 0001:001EF1A0       fProbEdt.TfrmdlgProb.bbEditClick
+ 0001:001F0364       fProbEdt.TfrmdlgProb.bbFileClick
+ 0001:001EEFEC       fProbEdt.TfrmdlgProb.bbQuitClick
+ 0001:001F0F14       fProbEdt.TfrmdlgProb.bbRemoveClick
+ 0001:001F108C       fProbEdt.TfrmdlgProb.cbLocClick
+ 0001:001F2124       fProbEdt.TfrmdlgProb.cbLocDropDown
+ 0001:001F10AC       fProbEdt.TfrmdlgProb.cbLocKeyPress
+ 0001:001F2808       fProbEdt.TfrmdlgProb.cbLocNeedData
+ 0001:001F106C       fProbEdt.TfrmdlgProb.cbProvClick
+ 0001:001F1FE4       fProbEdt.TfrmdlgProb.cbProvDropDown
+ 0001:001F0F80       fProbEdt.TfrmdlgProb.cbProvKeyPress
+ 0001:001F2830       fProbEdt.TfrmdlgProb.cbProvNeedData
+ 0001:001F2858       fProbEdt.TfrmdlgProb.cbServNeedData
+ 0001:001F2360       fProbEdt.TfrmdlgProb.ClearDialogControls
+ 0001:001F1F44       fProbEdt.TfrmdlgProb.ControlChange
+ 0001:001F2240       fProbEdt.TfrmdlgProb.Create
+ 0001:001F22A4       fProbEdt.TfrmdlgProb.CreateParams
+ 0001:001F1F4C       fProbEdt.TfrmdlgProb.Destroy
+ 0001:001F2348       fProbEdt.TfrmdlgProb.DoShow
+ 0001:001F0270       fProbEdt.TfrmdlgProb.FormClose
+ 0001:001F21FC       fProbEdt.TfrmdlgProb.FormCreate
+ 0001:001EF2AC       fProbEdt.TfrmdlgProb.FormShow
+ 0001:001F0C78       fProbEdt.TfrmdlgProb.GetEditedComments
+ 0001:001F0DF4       fProbEdt.TfrmdlgProb.GetNewComments
+ 0001:001F23BC       fProbEdt.TfrmdlgProb.LackRequired
+ 0001:001F23B8       fProbEdt.TfrmdlgProb.LoadDefaults
+ 0001:001F2308       fProbEdt.TfrmdlgProb.Loaded
+ 0001:001EEFE0       fProbEdt.TfrmdlgProb.OkToQuit
+ 0001:001F0FC0       fProbEdt.TfrmdlgProb.rgStatusClick
+ 0001:001F110C       fProbEdt.TfrmdlgProb.SetDefaultProb
+ 0001:001F2358       fProbEdt.TfrmdlgProb.SetFontSize
+ 0001:001F01A8       fProbEdt.TfrmdlgProb.ShowComments
+ 0001:001F23C0       fProbEdt.TfrmdlgProb.UMTakeFocus
+ 0001:001EC640       fProbflt..TfrmPlVuFilt
+ 0001:001ECAA8       fProbflt.GetViewFilters
+ 0001:001ED244       fProbflt.SetVu
+ 0001:001ED89C       fProbflt.TfrmPlVuFilt.cboProviderNeedData
+ 0001:001ED20C       fProbflt.TfrmPlVuFilt.cboSourceChange
+ 0001:001ED214       fProbflt.TfrmPlVuFilt.cboSourceEnter
+ 0001:001ED224       fProbflt.TfrmPlVuFilt.cboSourceExit
+ 0001:001ED8EC       fProbflt.TfrmPlVuFilt.cboSourceNeedData
+ 0001:001ECD84       fProbflt.TfrmPlVuFilt.cmdAddClick
+ 0001:001ED234       fProbflt.TfrmPlVuFilt.cmdCancelClick
+ 0001:001ED5D0       fProbflt.TfrmPlVuFilt.cmdDefaultViewClick
+ 0001:001ED33C       fProbflt.TfrmPlVuFilt.cmdOKClick
+ 0001:001ECF24       fProbflt.TfrmPlVuFilt.cmdRemoveAllClick
+ 0001:001ECE70       fProbflt.TfrmPlVuFilt.cmdRemoveClick
+ 0001:001EDC3C       fProbflt.TfrmPlVuFilt.cmdSaveClick
+ 0001:001ED94C       fProbflt.TfrmPlVuFilt.CreateContextString
+ 0001:001EDA88       fProbflt.TfrmPlVuFilt.CreateFilterString
+ 0001:001ED5D4       fProbflt.TfrmPlVuFilt.FormClose
+ 0001:001ECBB0       fProbflt.TfrmPlVuFilt.FormCreate
+ 0001:001ECBF0       fProbflt.TfrmPlVuFilt.FormShow
+ 0001:001ED5DC       fProbflt.TfrmPlVuFilt.GetClinicList
+ 0001:001ED7A0       fProbflt.TfrmPlVuFilt.GetLocationList
+ 0001:001ED6BC       fProbflt.TfrmPlVuFilt.GetServiceList
+ 0001:001ED204       fProbflt.TfrmPlVuFilt.lstDestClick
+ 0001:001ECFBC       fProbflt.TfrmPlVuFilt.rgVuClick
+ 0001:001ECF40       fProbflt.TfrmPlVuFilt.SetButtons
+ 0001:001EDC40       fProbLex..TfrmPLLex
+ 0004:00005A04       fProbLex.ProblemList
+ 0001:001EE3DC       fProbLex.SetLexList
+ 0001:001EE338       fProbLex.TfrmPLLex.bbCanClick
+ 0001:001EDEFC       fProbLex.TfrmPLLex.bbOKClick
+ 0001:001EE690       fProbLex.TfrmPLLex.bbSearchClick
+ 0001:001EE3A4       fProbLex.TfrmPLLex.ebLexKeyPress
+ 0001:001EDEE4       fProbLex.TfrmPLLex.FormClose
+ 0001:001EE350       fProbLex.TfrmPLLex.FormCreate
+ 0001:001EEA00       fProbLex.TfrmPLLex.FormShow
+ 0001:001EE9F8       fProbLex.TfrmPLLex.lbLexClick
+ 0004:00005A5C       fProbs..2
+ 0001:001F28B0       fProbs..TfrmProblems
+ 0004:00005A10       fProbs.dlgProbs
+ 0001:001F9768       fProbs.EncounterPresent
+ 0001:001FB07C       fProbs.Finalization
+ 0002:000013E8       fProbs.fProbs
+ 0004:00005A0C       fProbs.frmProblems
+ 0004:00005A14       fProbs.gFontHeight
+ 0004:00005A18       fProbs.gFontWidth
+ 0003:0000390C       fProbs.GridColWidths
+ 0004:00005A1C       fProbs.origWidths
+ 0001:001F6834       fProbs.ReverseList
+ 0001:001F7DB4       fProbs.TfrmProblems.AddProblem
+ 0001:001F3394       fProbs.TfrmProblems.AllowContextChange
+ 0001:001F5794       fProbs.TfrmProblems.ApplyViewFilters
+ 0001:001F96A4       fProbs.TfrmProblems.bbCancelClick
+ 0001:001FA830       fProbs.TfrmProblems.bbNewProbExit
+ 0001:001F5518       fProbs.TfrmProblems.bbOtherProbClick
+ 0001:001F67A0       fProbs.TfrmProblems.ClearGrid
+ 0001:001F3490       fProbs.TfrmProblems.ClearPtData
+ 0001:001F351C       fProbs.TfrmProblems.DisplayPage
+ 0001:001F8274       fProbs.TfrmProblems.EditProblem
+ 0001:001F54F0       fProbs.TfrmProblems.edProbEntKeyPress
+ 0001:001F63C0       fProbs.TfrmProblems.FormCreate
+ 0001:001F9880       fProbs.TfrmProblems.FormDestroy
+ 0001:001FA9B8       fProbs.TfrmProblems.FormHide
+ 0001:001FAA48       fProbs.TfrmProblems.FormMouseMove
+ 0001:001FA9F0       fProbs.TfrmProblems.FormShow
+ 0001:001FA910       fProbs.TfrmProblems.frmFramePnlPatientExit
+ 0001:001F5D44       fProbs.TfrmProblems.GetRowCount
+ 0001:001FAFA0       fProbs.TfrmProblems.getTotalSectionsWidth
+ 0001:001FB000       fProbs.TfrmProblems.HeaderControlMouseDown
+ 0001:001FAEBC       fProbs.TfrmProblems.HeaderControlMouseUp
+ 0001:001FAE9C       fProbs.TfrmProblems.HeaderControlSectionClick
+ 0001:001FA610       fProbs.TfrmProblems.HeaderControlSectionResize
+ 0001:001F7928       fProbs.TfrmProblems.HighlightDuplicate
+ 0001:001F6760       fProbs.TfrmProblems.LoadPatientParams
+ 0001:001F6878       fProbs.TfrmProblems.LoadPatientProblems
+ 0001:001F76F4       fProbs.TfrmProblems.LoadProblems
+ 0001:001F7558       fProbs.TfrmProblems.LoadUserCats
+ 0001:001F6454       fProbs.TfrmProblems.LoadUserParams
+ 0001:001F7648       fProbs.TfrmProblems.LoadUserProbs
+ 0001:001F3604       fProbs.TfrmProblems.lstCatPickClick
+ 0001:001F365C       fProbs.TfrmProblems.lstProbActsClick
+ 0001:001F5290       fProbs.TfrmProblems.lstProbPickClick
+ 0001:001F5490       fProbs.TfrmProblems.lstProbPickDblClick
+ 0001:001F96F4       fProbs.TfrmProblems.lstViewClick
+ 0001:001FA634       fProbs.TfrmProblems.lstViewExit
+ 0001:001F35E4       fProbs.TfrmProblems.mnuChartTabClick
+ 0001:001FACA4       fProbs.TfrmProblems.mnuOptimizeFieldsClick
+ 0001:001F9B44       fProbs.TfrmProblems.mnuViewCommentsClick
+ 0001:001FAAD4       fProbs.TfrmProblems.mnuViewInformationClick
+ 0001:001F9A60       fProbs.TfrmProblems.mnuViewRestoreDefaultClick
+ 0001:001F98C4       fProbs.TfrmProblems.mnuViewSaveClick
+ 0001:001FA58C       fProbs.TfrmProblems.MString
+ 0001:001F8FB8       fProbs.TfrmProblems.NoRowSelected
+ 0001:001FA450       fProbs.TfrmProblems.PlainText
+ 0001:001F52F0       fProbs.TfrmProblems.pnlProbEntResize
+ 0001:001FA6E0       fProbs.TfrmProblems.pnlRightExit
+ 0001:001F62C8       fProbs.TfrmProblems.pnlRightResize
+ 0001:001FA038       fProbs.TfrmProblems.RefreshList
+ 0001:001F9E3C       fProbs.TfrmProblems.RequestPrint
+ 0001:001F8C50       fProbs.TfrmProblems.RestoreProblem
+ 0001:001F90A4       fProbs.TfrmProblems.RowSelected
+ 0001:001F9F3C       fProbs.TfrmProblems.SetFontSize
+ 0001:001F602C       fProbs.TfrmProblems.SetGridPieces
+ 0001:001FB020       fProbs.TfrmProblems.setSectionWidths
+ 0001:001FAA6C       fProbs.TfrmProblems.ShowPnlView
+ 0001:001FB060       fProbs.TfrmProblems.sptHorzMoved
+ 0001:001F5584       fProbs.TfrmProblems.UMCloseProblem
+ 0001:001F6000       fProbs.TfrmProblems.UMPLLexicon
+ 0001:001F8700       fProbs.TfrmProblems.UpdateProblem
+ 0001:001FAAB4       fProbs.TfrmProblems.ViewInfo
+ 0001:001F5300       fProbs.TfrmProblems.wgProbDataClick
+ 0001:001F546C       fProbs.TfrmProblems.wgProbDataDblClick
+ 0001:001FA338       fProbs.TfrmProblems.wgProbDataDrawItem
+ 0001:001FA1E8       fProbs.TfrmProblems.wgProbDataMeasureItem
+ 0004:00004A3C       fProcedure..2
+ 0001:001876AC       fProcedure..TfrmProcedures
+ 0001:00188F1C       fProcedure.Finalization
+ 0002:00001110       fProcedure.fProcedure
+ 0004:00004A38       fProcedure.frmProcedures
+ 0001:00188C80       fProcedure.TfrmProcedures.btnOtherClick
+ 0001:00188C9C       fProcedure.TfrmProcedures.btnOtherExit
+ 0001:00188CFC       fProcedure.TfrmProcedures.btnRemoveClick
+ 0001:00188104       fProcedure.TfrmProcedures.btnSelectAllClick
+ 0001:00187AF4       fProcedure.TfrmProcedures.cboProviderChange
+ 0001:00188D18       fProcedure.TfrmProcedures.cboProviderNeedData
+ 0001:00188464       fProcedure.TfrmProcedures.CheckModifiers
+ 0001:001880C4       fProcedure.TfrmProcedures.clbListClick
+ 0001:00187BB8       fProcedure.TfrmProcedures.FormCreate
+ 0001:00187F98       fProcedure.TfrmProcedures.FormResize
+ 0001:00188EC4       fProcedure.TfrmProcedures.InitTab
+ 0001:001880E8       fProcedure.TfrmProcedures.lbGridSelect
+ 0001:0018872C       fProcedure.TfrmProcedures.lbModsClickCheck
+ 0001:00188938       fProcedure.TfrmProcedures.lbModsExit
+ 0001:0018896C       fProcedure.TfrmProcedures.lbSectionClick
+ 0001:00188980       fProcedure.TfrmProcedures.lbxSectionClickCheck
+ 0001:00188C20       fProcedure.TfrmProcedures.lbxSectionExit
+ 0001:00188E54       fProcedure.TfrmProcedures.MissingProvider
+ 0001:00188DB4       fProcedure.TfrmProcedures.OK2SaveProcedures
+ 0001:00188120       fProcedure.TfrmProcedures.ShowModifiers
+ 0001:00188088       fProcedure.TfrmProcedures.splRightMoved
+ 0001:00187A80       fProcedure.TfrmProcedures.txtProcQtyChange
+ 0001:00187CAC       fProcedure.TfrmProcedures.UpdateControls
+ 0001:00187C8C       fProcedure.TfrmProcedures.UpdateNewItemStr
+ 0001:001EA570       fPtCWAD..TfrmPtCWAD
+ 0001:001EA7D4       fPtCWAD.ShowCWAD
+ 0001:001EAB2C       fPtCWAD.TfrmPtCWAD.btnCloseClick
+ 0001:001EA830       fPtCWAD.TfrmPtCWAD.FormCreate
+ 0001:001EAB14       fPtCWAD.TfrmPtCWAD.FormKeyUp
+ 0001:001EA950       fPtCWAD.TfrmPtCWAD.lstAllergiesClick
+ 0001:001EA9D0       fPtCWAD.TfrmPtCWAD.lstNotesClick
+ 0001:0035D668       fPtDemo..TfrmPtDemo
+ 0001:0035D8C8       fPtDemo.PatientInquiry
+ 0001:0035DB00       fPtDemo.TfrmPtDemo.cmdCloseClick
+ 0001:0035DAF0       fPtDemo.TfrmPtDemo.cmdNewPtClick
+ 0001:0035DB08       fPtDemo.TfrmPtDemo.cmdPrintClick
+ 0001:0035D950       fPtDemo.TfrmPtDemo.FormCreate
+ 0004:00006434       fPtSel..2
+ 0001:0033F9A8       fPtSel..TfrmPtSel
+ 0004:00006428       fPtSel.DupDFN
+ 0003:00004054       fPtSel.enhanceskip
+ 0004:00006418       fPtSel.FDfltSrc
+ 0004:0000641C       fPtSel.FDfltSrcType
+ 0001:003450D0       fPtSel.Finalization
+ 0002:00001A44       fPtSel.fPtSel
+ 0004:00006420       fPtSel.IsRPL
+ 0003:00004050       fPtSel.itimson
+ 0004:00006430       fPtSel.PtStrs
+ 0003:00004058       fPtSel.radiogrp1index
+ 0004:00006424       fPtSel.RPLJob
+ 0004:0000642C       fPtSel.RPLProblem
+ 0001:0034005C       fPtSel.SelectPatient
+ 0001:00340FCC       fPtSel.ShowMatchingPatients
+ 0001:00344CF8       fPtSel.TfrmPtSel.AdjustButtonSize
+ 0001:00340218       fPtSel.TfrmPtSel.AdjustFormSize
+ 0001:00344E2C       fPtSel.TfrmPtSel.AdjustNotificationButtons
+ 0001:00343760       fPtSel.TfrmPtSel.AlertList
+ 0001:003410B8       fPtSel.TfrmPtSel.cboPatientChange
+ 0001:00341534       fPtSel.TfrmPtSel.cboPatientDblClick
+ 0001:00340F68       fPtSel.TfrmPtSel.cboPatientEnter
+ 0001:00340FAC       fPtSel.TfrmPtSel.cboPatientExit
+ 0001:00343728       fPtSel.TfrmPtSel.cboPatientKeyDown
+ 0001:003413E4       fPtSel.TfrmPtSel.cboPatientKeyPause
+ 0001:0034148C       fPtSel.TfrmPtSel.cboPatientMouseClick
+ 0001:0034160C       fPtSel.TfrmPtSel.cboPatientNeedData
+ 0001:003418D0       fPtSel.TfrmPtSel.ClearIDInfo
+ 0001:003421E4       fPtSel.TfrmPtSel.cmdCancelClick
+ 0001:00342208       fPtSel.TfrmPtSel.cmdCommentsClick
+ 0001:00342CF8       fPtSel.TfrmPtSel.cmdForwardClick
+ 0001:00341978       fPtSel.TfrmPtSel.cmdOKClick
+ 0001:00342C5C       fPtSel.TfrmPtSel.cmdProcessAllClick
+ 0001:003423D4       fPtSel.TfrmPtSel.cmdProcessClick
+ 0001:00342A34       fPtSel.TfrmPtSel.cmdProcessInfoClick
+ 0001:00342EF8       fPtSel.TfrmPtSel.cmdRemoveClick
+ 0001:00342A14       fPtSel.TfrmPtSel.cmdSaveListClick
+ 0001:00343F74       fPtSel.TfrmPtSel.DupLastSSN
+ 0001:003434CC       fPtSel.TfrmPtSel.FormClose
+ 0001:003436FC       fPtSel.TfrmPtSel.FormCreate
+ 0001:00343140       fPtSel.TfrmPtSel.FormDestroy
+ 0001:00343174       fPtSel.TfrmPtSel.FormResize
+ 0001:00344794       fPtSel.TfrmPtSel.FormShow
+ 0001:00340014       fPtSel.TfrmPtSel.IsOther
+ 0001:00343264       fPtSel.TfrmPtSel.Loaded
+ 0001:00344378       fPtSel.TfrmPtSel.lstFlagsClick
+ 0001:00344388       fPtSel.TfrmPtSel.lstFlagsKeyDown
+ 0001:00343C64       fPtSel.TfrmPtSel.lstvAlertsColumnClick
+ 0001:00343E2C       fPtSel.TfrmPtSel.lstvAlertsCompare
+ 0001:00342CDC       fPtSel.TfrmPtSel.lstvAlertsDblClick
+ 0001:003444C8       fPtSel.TfrmPtSel.lstvAlertsInfoTip
+ 0001:00344530       fPtSel.TfrmPtSel.lstvAlertsKeyDown
+ 0001:003443B4       fPtSel.TfrmPtSel.lstvAlertsSelectItem
+ 0001:00344F14       fPtSel.TfrmPtSel.onclick1
+ 0001:00343210       fPtSel.TfrmPtSel.pnlPtSelResize
+ 0001:003449DC       fPtSel.TfrmPtSel.ReadyAlert
+ 0001:00344A38       fPtSel.TfrmPtSel.ReformatAlertDateTime
+ 0001:003434A4       fPtSel.TfrmPtSel.RPLDisplay
+ 0001:0034040C       fPtSel.TfrmPtSel.SetCaptionTop
+ 0001:00340718       fPtSel.TfrmPtSel.SetPtListTop
+ 0001:00344400       fPtSel.TfrmPtSel.ShowButts
+ 0001:00344240       fPtSel.TfrmPtSel.ShowFlagInfo
+ 0001:003418E8       fPtSel.TfrmPtSel.ShowIDInfo
+ 0001:00341958       fPtSel.TfrmPtSel.WMReadyAlert
+ 0004:000063F8       fPtSelDemog..2
+ 0001:0033C25C       fPtSelDemog..TfrmPtSelDemog
+ 0001:0033CD18       fPtSelDemog.Finalization
+ 0002:000019EC       fPtSelDemog.fPtSelDemog
+ 0004:000063F4       fPtSelDemog.frmPtSelDemog
+ 0001:0033C520       fPtSelDemog.TfrmPtSelDemog.ClearIDInfo
+ 0001:0033C9C0       fPtSelDemog.TfrmPtSelDemog.FormCreate
+ 0001:0033CCFC       fPtSelDemog.TfrmPtSelDemog.FormDestroy
+ 0001:0033C9EC       fPtSelDemog.TfrmPtSelDemog.NewWinProc
+ 0001:0033C5A8       fPtSelDemog.TfrmPtSelDemog.ShowDemog
+ 0001:0033C998       fPtSelDemog.TfrmPtSelDemog.ToggleMemo
+ 0001:00129E3C       fPtSelMsg..TfrmPtSelMsg
+ 0003:000032FC       fPtSelMsg.frmPtSelMsg
+ 0001:0012A128       fPtSelMsg.HidePatientSelectMessages
+ 0001:0012A068       fPtSelMsg.ShowPatientSelectMessages
+ 0001:0012A2A8       fPtSelMsg.TfrmPtSelMsg.ActiveFormChanged
+ 0001:0012A338       fPtSelMsg.TfrmPtSelMsg.ClearEvents
+ 0001:0012A214       fPtSelMsg.TfrmPtSelMsg.cmdCloseClick
+ 0001:0012A21C       fPtSelMsg.TfrmPtSelMsg.FormClose
+ 0001:0012A220       fPtSelMsg.TfrmPtSelMsg.FormCreate
+ 0001:0012A298       fPtSelMsg.TfrmPtSelMsg.FormDestroy
+ 0001:0012A38C       fPtSelMsg.TfrmPtSelMsg.TabChanged
+ 0001:0012A144       fPtSelMsg.TfrmPtSelMsg.timCloseTimer
+ 0004:0000640C       fPtSelOptns..2
+ 0001:0033D170       fPtSelOptns..TfrmPtSelOptns
+ 0004:00006408       fPtSelOptns.clinDefaults
+ 0004:00006404       fPtSelOptns.clinDoSave
+ 0004:00006405       fPtSelOptns.clinSaveToday
+ 0001:0033ED7C       fPtSelOptns.Finalization
+ 0002:00001A00       fPtSelOptns.fPtSelOptns
+ 0004:00006400       fPtSelOptns.frmPtSelOptns
+ 0001:0033DFC8       fPtSelOptns.TfrmPtSelOptns.cboDateRangeExit
+ 0001:0033DFEC       fPtSelOptns.TfrmPtSelOptns.cboDateRangeMouseClick
+ 0001:0033DCC0       fPtSelOptns.TfrmPtSelOptns.cboListExit
+ 0001:0033DCF8       fPtSelOptns.TfrmPtSelOptns.cboListKeyPause
+ 0001:0033DD30       fPtSelOptns.TfrmPtSelOptns.cboListMouseClick
+ 0001:0033DD68       fPtSelOptns.TfrmPtSelOptns.cboListNeedData
+ 0001:0033E148       fPtSelOptns.TfrmPtSelOptns.cmdSaveListClick
+ 0001:0033EBD0       fPtSelOptns.TfrmPtSelOptns.FormCreate
+ 0001:0033DDC0       fPtSelOptns.TfrmPtSelOptns.HideDateRange
+ 0001:0033D640       fPtSelOptns.TfrmPtSelOptns.IsEnhanced
+ 0001:0033D6A0       fPtSelOptns.TfrmPtSelOptns.IsFullSSN
+ 0001:0033D4F4       fPtSelOptns.TfrmPtSelOptns.IsLast5
+ 0001:0033D5B8       fPtSelOptns.TfrmPtSelOptns.IsPatientName
+ 0001:0033D91C       fPtSelOptns.TfrmPtSelOptns.radHideSrcClick
+ 0001:0033DAD0       fPtSelOptns.TfrmPtSelOptns.radLongSrcClick
+ 0001:0033D9D4       fPtSelOptns.TfrmPtSelOptns.radShowSrcClick
+ 0001:0033EBDC       fPtSelOptns.TfrmPtSelOptns.SetDefaultPtList
+ 0001:0033DDF8       fPtSelOptns.TfrmPtSelOptns.ShowDateRange
+ 0001:0033EC9C       fPtSelOptns.TfrmPtSelOptns.UpdateDefault
+ 0001:0033CD48       fPtSelOptSave..TfrmPtSelOptSave
+ 0004:000063FC       fPtSelOptSave.frmPtSelOptSave
+ 0001:0033D0A8       fPtSelOptSave.TfrmPtSelOptSave.btnCancelClick
+ 0001:0033D0B0       fPtSelOptSave.TfrmPtSelOptSave.btnOKClick
+ 0001:0033CFA0       fPtSelOptSave.TfrmPtSelOptSave.FormCreate
+ 0001:0033D14C       fPtSelOptSave.TfrmPtSelOptSave.rGrpClinSaveClick
+ 0001:0019FC9C       fRemCoverPreview..TfrmRemCoverPreview
+ 0001:0019FEB8       fRemCoverPreview.TfrmRemCoverPreview.FormCreate
+ 0001:0019FECC       fRemCoverPreview.TfrmRemCoverPreview.lvMainColumnClick
+ 0001:0019FF00       fRemCoverPreview.TfrmRemCoverPreview.lvMainCompare
+ 0004:00004B80       fRemCoverSheet..2
+ 0001:001A0B68       fRemCoverSheet..TfrmRemCoverSheet
+ 0003:00003724       fRemCoverSheet.DataCode
+ 0003:00003734       fRemCoverSheet.DataName
+ 0001:001A1538       fRemCoverSheet.EditCoverSheetReminderList
+ 0001:001A741C       fRemCoverSheet.Finalization
+ 0002:000011D8       fRemCoverSheet.fRemCoverSheet
+ 0001:001A5A80       fRemCoverSheet.GetAllChildren
+ 0001:001A2710       fRemCoverSheet.GetNameFromList
+ 0003:00003750       fRemCoverSheet.InternalName
+ 0003:0000376C       fRemCoverSheet.RemClsText
+ 0001:001A72F4       fRemCoverSheet.TfrmRemCoverSheet.ActiveControlChanged
+ 0001:001A4584       fRemCoverSheet.TfrmRemCoverSheet.btnAddClick
+ 0001:001A5344       fRemCoverSheet.TfrmRemCoverSheet.btnApplyClick
+ 0001:001A45B4       fRemCoverSheet.TfrmRemCoverSheet.btnLockClick
+ 0001:001A5360       fRemCoverSheet.TfrmRemCoverSheet.btnOKClick
+ 0001:001A459C       fRemCoverSheet.TfrmRemCoverSheet.btnRemoveClick
+ 0001:001A5C20       fRemCoverSheet.TfrmRemCoverSheet.btnViewClick
+ 0001:001A2CE8       fRemCoverSheet.TfrmRemCoverSheet.cbEditLevelClick
+ 0001:001A2A08       fRemCoverSheet.TfrmRemCoverSheet.cbxClassChange
+ 0001:001A1DC4       fRemCoverSheet.TfrmRemCoverSheet.cbxClassNeedData
+ 0001:001A28C4       fRemCoverSheet.TfrmRemCoverSheet.cbxDivisionChange
+ 0001:001A6420       fRemCoverSheet.TfrmRemCoverSheet.cbxDivisionKeyDown
+ 0001:001A2C88       fRemCoverSheet.TfrmRemCoverSheet.cbxDropDownClose
+ 0001:001A299C       fRemCoverSheet.TfrmRemCoverSheet.cbxLocationChange
+ 0001:001A1D50       fRemCoverSheet.TfrmRemCoverSheet.cbxLocationNeedData
+ 0001:001A2930       fRemCoverSheet.TfrmRemCoverSheet.cbxServiceChange
+ 0001:001A1D74       fRemCoverSheet.TfrmRemCoverSheet.cbxServiceNeedData
+ 0001:001A2A74       fRemCoverSheet.TfrmRemCoverSheet.cbxUserChange
+ 0001:001A1D9C       fRemCoverSheet.TfrmRemCoverSheet.cbxUserNeedData
+ 0001:001A40DC       fRemCoverSheet.TfrmRemCoverSheet.ChangeStatus
+ 0001:001A2370       fRemCoverSheet.TfrmRemCoverSheet.compAccessCopyLeftCaptionQuery
+ 0001:001A23E0       fRemCoverSheet.TfrmRemCoverSheet.compAccessCopyRightCaptionQuery
+ 0001:001A3F50       fRemCoverSheet.TfrmRemCoverSheet.edtSeqChange
+ 0001:001A6410       fRemCoverSheet.TfrmRemCoverSheet.edtSeqKeyPress
+ 0001:001A717C       fRemCoverSheet.TfrmRemCoverSheet.FormCreate
+ 0001:001A1DEC       fRemCoverSheet.TfrmRemCoverSheet.FormDestroy
+ 0001:001A3C20       fRemCoverSheet.TfrmRemCoverSheet.GetCatInfo
+ 0001:001A6440       fRemCoverSheet.TfrmRemCoverSheet.GetCoverSheetLvlData
+ 0001:001A1EEC       fRemCoverSheet.TfrmRemCoverSheet.GetCurrent
+ 0001:001A27F0       fRemCoverSheet.TfrmRemCoverSheet.GetExternalName
+ 0001:001A4044       fRemCoverSheet.TfrmRemCoverSheet.GetIndex
+ 0001:001A1E9C       fRemCoverSheet.TfrmRemCoverSheet.GetUserInfo
+ 0001:001A15E0       fRemCoverSheet.TfrmRemCoverSheet.Init
+ 0001:001A4FD4       fRemCoverSheet.TfrmRemCoverSheet.ListHasData
+ 0001:001A7318       fRemCoverSheet.TfrmRemCoverSheet.LockButtonUpdate
+ 0001:001A4038       fRemCoverSheet.TfrmRemCoverSheet.lvCoverChange
+ 0001:001A4600       fRemCoverSheet.TfrmRemCoverSheet.lvCoverColumnClick
+ 0001:001A47F4       fRemCoverSheet.TfrmRemCoverSheet.lvCoverCompare
+ 0001:001A55F8       fRemCoverSheet.TfrmRemCoverSheet.lvCoverDblClick
+ 0001:001A63DC       fRemCoverSheet.TfrmRemCoverSheet.lvCoverKeyDown
+ 0001:001A5620       fRemCoverSheet.TfrmRemCoverSheet.lvViewChange
+ 0001:001A45CC       fRemCoverSheet.TfrmRemCoverSheet.lvViewColumnClick
+ 0001:001A4634       fRemCoverSheet.TfrmRemCoverSheet.lvViewCompare
+ 0001:001A5630       fRemCoverSheet.TfrmRemCoverSheet.lvViewSelectItem
+ 0001:001A3E60       fRemCoverSheet.TfrmRemCoverSheet.MarkListAsChanged
+ 0001:001A5A04       fRemCoverSheet.TfrmRemCoverSheet.RPad
+ 0001:001A5368       fRemCoverSheet.TfrmRemCoverSheet.SaveData
+ 0001:001A5130       fRemCoverSheet.TfrmRemCoverSheet.sbCopyLeftClick
+ 0001:001A4CBC       fRemCoverSheet.TfrmRemCoverSheet.sbCopyRightClick
+ 0001:001A4A68       fRemCoverSheet.TfrmRemCoverSheet.sbDownClick
+ 0001:001A4918       fRemCoverSheet.TfrmRemCoverSheet.sbUpClick
+ 0001:001A6584       fRemCoverSheet.TfrmRemCoverSheet.SetButtonHints
+ 0001:001A4BCC       fRemCoverSheet.TfrmRemCoverSheet.SetSeq
+ 0001:001A2640       fRemCoverSheet.TfrmRemCoverSheet.SetupItem
+ 0001:001A244C       fRemCoverSheet.TfrmRemCoverSheet.SetupItem
+ 0001:001A4030       fRemCoverSheet.TfrmRemCoverSheet.tvAllChange
+ 0001:001A531C       fRemCoverSheet.TfrmRemCoverSheet.tvAllDblClick
+ 0001:001A4000       fRemCoverSheet.TfrmRemCoverSheet.tvAllExpanded
+ 0001:001A3A64       fRemCoverSheet.TfrmRemCoverSheet.tvAllExpanding
+ 0001:001A5090       fRemCoverSheet.TfrmRemCoverSheet.udSeqChangingEx
+ 0001:001A31CC       fRemCoverSheet.TfrmRemCoverSheet.UpdateButtons
+ 0001:001A30A0       fRemCoverSheet.TfrmRemCoverSheet.UpdateMasterListView
+ 0001:001A2188       fRemCoverSheet.TfrmRemCoverSheet.UpdateView
+ 0004:00006278       fReminderDialog..2
+ 0001:002E971C       fReminderDialog..TfrmRemDlg
+ 0001:002EBFE0       fReminderDialog.Add
+ 0001:002E9AFC       fReminderDialog.ClinRemText
+ 0003:00003B14       fReminderDialog.ClinRemTextLocation
+ 0003:00003B18       fReminderDialog.ClinRemTextStr
+ 0001:002E9BD4       fReminderDialog.CurrentReminderInDialog
+ 0001:002EE96C       fReminderDialog.Finalization
+ 0002:000018D4       fReminderDialog.fReminderDialog
+ 0003:00003AF4       fReminderDialog.frmRemDlg
+ 0001:002EA178       fReminderDialog.HideReminderDialog
+ 0001:002EA6D8       fReminderDialog.IsOnBox
+ 0001:002EA1CC       fReminderDialog.KillReminderDialog
+ 0001:002E9B74       fReminderDialog.NotifyWhenProcessingReminderChanges
+ 0003:00003B10       fReminderDialog.PositionList
+ 0003:00003B0C       fReminderDialog.RemDlgHeight
+ 0003:00003B00       fReminderDialog.RemDlgLeft
+ 0003:00003AF8       fReminderDialog.RemDlgSpltr1
+ 0003:00003AFC       fReminderDialog.RemDlgSpltr2
+ 0003:00003B04       fReminderDialog.RemDlgTop
+ 0003:00003B08       fReminderDialog.RemDlgWidth
+ 0001:002E9BC8       fReminderDialog.ReminderDialogActive
+ 0001:002E9BA8       fReminderDialog.RemoveNotifyWhenProcessingReminderChanges
+ 0001:002EC220       fReminderDialog.SaveMSTData
+ 0001:002EA714       fReminderDialog.SetActiveVars
+ 0001:002EBCA0       fReminderDialog.TfrmRemDlg.BackReminder
+ 0001:002EAB6C       fReminderDialog.TfrmRemDlg.BoxUpdateDone
+ 0001:002EBE3C       fReminderDialog.TfrmRemDlg.btnBackClick
+ 0001:002EB5B0       fReminderDialog.TfrmRemDlg.btnCancelClick
+ 0001:002EB384       fReminderDialog.TfrmRemDlg.btnClearClick
+ 0001:002EE428       fReminderDialog.TfrmRemDlg.btnClinMaintClick
+ 0001:002EC320       fReminderDialog.TfrmRemDlg.btnFinishClick
+ 0001:002EBDF0       fReminderDialog.TfrmRemDlg.btnNextClick
+ 0001:002EE548       fReminderDialog.TfrmRemDlg.btnVisitClick
+ 0001:002EA880       fReminderDialog.TfrmRemDlg.BuildControls
+ 0001:002EA694       fReminderDialog.TfrmRemDlg.ClearControls
+ 0001:002EE51C       fReminderDialog.TfrmRemDlg.ClinMaintDestroyed
+ 0001:002EABD0       fReminderDialog.TfrmRemDlg.ControlsChanged
+ 0001:002EA4F4       fReminderDialog.TfrmRemDlg.FormClose
+ 0001:002EA4F8       fReminderDialog.TfrmRemDlg.FormCloseQuery
+ 0001:002EA514       fReminderDialog.TfrmRemDlg.FormCreate
+ 0001:002EA560       fReminderDialog.TfrmRemDlg.FormDestroy
+ 0001:002EE930       fReminderDialog.TfrmRemDlg.FormShow
+ 0001:002EAB54       fReminderDialog.TfrmRemDlg.GetBox
+ 0001:002EB9E4       fReminderDialog.TfrmRemDlg.GetCurReminderList
+ 0001:002EB624       fReminderDialog.TfrmRemDlg.KillAll
+ 0001:002EE80C       fReminderDialog.TfrmRemDlg.KillDlg
+ 0001:002EBC28       fReminderDialog.TfrmRemDlg.NextReminder
+ 0001:002EBF58       fReminderDialog.TfrmRemDlg.PositionTrees
+ 0001:002EA214       fReminderDialog.TfrmRemDlg.ProcessReminder
+ 0001:002EBD0C       fReminderDialog.TfrmRemDlg.ProcessReminderFromNodeStr
+ 0001:002EE6D4       fReminderDialog.TfrmRemDlg.ProcessTemplate
+ 0001:002EE420       fReminderDialog.TfrmRemDlg.RemindersChanged
+ 0001:002EE200       fReminderDialog.TfrmRemDlg.ResetProcessing
+ 0001:002EAC08       fReminderDialog.TfrmRemDlg.sbResize
+ 0001:002EE7E4       fReminderDialog.TfrmRemDlg.SetFontSize
+ 0001:002EAC00       fReminderDialog.TfrmRemDlg.UMResyncRem
+ 0001:002EBE88       fReminderDialog.TfrmRemDlg.UpdateButtons
+ 0001:002EAC30       fReminderDialog.TfrmRemDlg.UpdateText
+ 0001:002EA18C       fReminderDialog.UpdateReminderFinish
+ 0003:00003B1C       fReminderDialog.uRemDlgStarting
+ 0001:002EA078       fReminderDialog.ViewRemDlg
+ 0001:002E9BEC       fReminderDialog.ViewRemDlgFromForm
+ 0001:002EA148       fReminderDialog.ViewRemDlgTemplateFromForm
+ 0001:002EA134       fReminderDialog.ViewReminderDialog
+ 0001:002EA624       fReminderDialog.WipeOutControls
+ 0001:0023B1DC       fReminderTree..TfrmReminderTree
+ 0001:0023B12C       fReminderTree..TtvRem508Manager
+ 0003:0000394C       fReminderTree.frmReminderTree
+ 0001:0023BB14       fReminderTree.IsVis
+ 0003:0000395C       fReminderTree.RemTreeDlgHeight
+ 0003:00003950       fReminderTree.RemTreeDlgLeft
+ 0003:00003954       fReminderTree.RemTreeDlgTop
+ 0003:00003958       fReminderTree.RemTreeDlgWidth
+ 0001:0023C9B0       fReminderTree.TfrmReminderTree.EnableActions
+ 0001:0023B690       fReminderTree.TfrmReminderTree.FormClose
+ 0001:0023B694       fReminderTree.TfrmReminderTree.FormCreate
+ 0001:0023CB84       fReminderTree.TfrmReminderTree.FormDestroy
+ 0001:0023C330       fReminderTree.TfrmReminderTree.hcRemSectionClick
+ 0001:0023C2A4       fReminderTree.TfrmReminderTree.lbRemChange
+ 0001:0023C2C0       fReminderTree.TfrmReminderTree.lbRemClick
+ 0001:0023C064       fReminderTree.TfrmReminderTree.lbRemDrawItem
+ 0001:0023B7FC       fReminderTree.TfrmReminderTree.LinkTopControls
+ 0001:0023CC34       fReminderTree.TfrmReminderTree.memActionClick
+ 0001:0023CB7C       fReminderTree.TfrmReminderTree.memEvalAllClick
+ 0001:0023CC3C       fReminderTree.TfrmReminderTree.memEvalCatClick
+ 0001:0023C8F4       fReminderTree.TfrmReminderTree.memEvalClick
+ 0001:0023CC14       fReminderTree.TfrmReminderTree.memRefreshClick
+ 0001:0023CC44       fReminderTree.TfrmReminderTree.mnuCoverSheetClick
+ 0001:0023CF24       fReminderTree.TfrmReminderTree.mnuExitClick
+ 0001:0023BF04       fReminderTree.TfrmReminderTree.pnlTopResize
+ 0001:0023CB74       fReminderTree.TfrmReminderTree.ProcessedRemindersChanged
+ 0001:0023B910       fReminderTree.TfrmReminderTree.RemindersChanged
+ 0001:0023BB44       fReminderTree.TfrmReminderTree.ResetlbItems
+ 0001:0023C88C       fReminderTree.TfrmReminderTree.Resync
+ 0001:0023CC54       fReminderTree.TfrmReminderTree.SetFontSize
+ 0001:0023CD78       fReminderTree.TfrmReminderTree.SetRemHeaderSectionWidth
+ 0001:0023C668       fReminderTree.TfrmReminderTree.SortData
+ 0001:0023C47C       fReminderTree.TfrmReminderTree.SortNode
+ 0001:0023BD90       fReminderTree.TfrmReminderTree.SyncTopControls
+ 0001:0023C7A0       fReminderTree.TfrmReminderTree.tvRemChange
+ 0001:0023C798       fReminderTree.TfrmReminderTree.tvRemClick
+ 0001:0023BEA0       fReminderTree.TfrmReminderTree.tvRemCollapsed
+ 0001:0023C2D0       fReminderTree.TfrmReminderTree.tvRemEnter
+ 0001:0023C300       fReminderTree.TfrmReminderTree.tvRemExit
+ 0001:0023BE3C       fReminderTree.TfrmReminderTree.tvRemExpanded
+ 0001:0023C87C       fReminderTree.TfrmReminderTree.tvRemMouseDown
+ 0001:0023CDF0       fReminderTree.TfrmReminderTree.tvRemNodeCaptioning
+ 0001:0023CF2C       fReminderTree.TtvRem508Manager.Create
+ 0001:0023CF6C       fReminderTree.TtvRem508Manager.getDueDate
+ 0001:0023D018       fReminderTree.TtvRem508Manager.getImgText
+ 0001:0023D068       fReminderTree.TtvRem508Manager.GetItem
+ 0001:0023D070       fReminderTree.TtvRem508Manager.getLastOcc
+ 0001:0023D124       fReminderTree.TtvRem508Manager.getName
+ 0001:0023D178       fReminderTree.TtvRem508Manager.getPriority
+ 0001:0023D214       fReminderTree.TtvRem508Manager.GetValue
+ 0001:0023B654       fReminderTree.ViewReminderTree
+ 0001:0023C5E0       fReminderTree.ZForm
+ 0001:00197D00       fRemVisitInfo..TfrmRemVisitInfo
+ 0001:00197F30       fRemVisitInfo.TfrmRemVisitInfo.btnNowClick
+ 0001:00197F50       fRemVisitInfo.TfrmRemVisitInfo.FormCreate
+ 0001:0020FF4C       fRename..TfrmRename
+ 0001:00210158       fRename.ExecuteRename
+ 0001:00210268       fRename.TfrmRename.cmdCancelClick
+ 0001:00210258       fRename.TfrmRename.cmdOKClick
+ 0001:00210250       fRename.TfrmRename.FormCreate
+ 0001:0020DFA4       fRenewOutMed..TfrmRenewOutMed
+ 0001:0020E220       fRenewOutMed.ExecuteRenewOutMed
+ 0001:0020E49C       fRenewOutMed.TfrmRenewOutMed.cmdCancelClick
+ 0001:0020E3E0       fRenewOutMed.TfrmRenewOutMed.cmdOKClick
+ 0001:0020E368       fRenewOutMed.TfrmRenewOutMed.FormCreate
+ 0004:00006360       fReports..2
+ 0001:0031B38C       fReports..TfrmReports
+ 0004:00006388       fReports.ColumnSortForward
+ 0004:00006384       fReports.ColumnToSort
+ 0001:00326D94       fReports.CompareValues
+ 0001:00329160       fReports.Finalization
+ 0001:0032003C       fReports.FindReport
+ 0001:003200F4       fReports.FindReport
+ 0002:00001984       fReports.fReports
+ 0004:00006304       fReports.frmReports
+ 0004:0000638C       fReports.GraphForm
+ 0004:00006390       fReports.GraphFormActive
+ 0001:0031C32C       fReports.TfrmReports.AllowContextChange
+ 0001:00329034       fReports.TfrmReports.btnChangeViewClick
+ 0001:00329080       fReports.TfrmReports.btnGraphSelectionsClick
+ 0001:00328F58       fReports.TfrmReports.chkDualViewsClick
+ 0001:00328F94       fReports.TfrmReports.chkMaxFreqClick
+ 0001:0031BCF8       fReports.TfrmReports.ClearPtData
+ 0001:003282A4       fReports.TfrmReports.Copy1Click
+ 0001:003284A4       fReports.TfrmReports.Copy2Click
+ 0001:00320B80       fReports.TfrmReports.DisplayHeading
+ 0001:0031C838       fReports.TfrmReports.DisplayPage
+ 0001:0031FF78       fReports.TfrmReports.FormCreate
+ 0001:003232E4       fReports.TfrmReports.FormDestroy
+ 0001:00321090       fReports.TfrmReports.FormShow
+ 0001:0031FCA8       fReports.TfrmReports.FreezeText1Click
+ 0001:00321E8C       fReports.TfrmReports.GoRemote
+ 0001:0031FB5C       fReports.TfrmReports.GotoBottom1Click
+ 0001:0031FAB8       fReports.TfrmReports.GotoTop1Click
+ 0001:0031BE28       fReports.TfrmReports.Graph
+ 0001:0031C020       fReports.TfrmReports.GraphPanel
+ 0001:0031D578       fReports.TfrmReports.LoadListView
+ 0001:00328674       fReports.TfrmReports.LoadProceduresTreeView
+ 0001:0031CE74       fReports.TfrmReports.LoadTreeView
+ 0001:003290CC       fReports.TfrmReports.lstDateRangeClick
+ 0001:003234A8       fReports.TfrmReports.lstHeadersClick
+ 0001:0031E30C       fReports.TfrmReports.lstQualifierClick
+ 0001:00323694       fReports.TfrmReports.lstQualifierDrawItem
+ 0001:00326878       fReports.TfrmReports.lvReportsColumnClick
+ 0001:00327084       fReports.TfrmReports.lvReportsCompare
+ 0001:003284BC       fReports.TfrmReports.lvReportsKeyUp
+ 0001:00327134       fReports.TfrmReports.lvReportsSelectItem
+ 0001:003285C8       fReports.TfrmReports.Memo1KeyUp
+ 0001:0031FE68       fReports.TfrmReports.PopupMenu1Popup
+ 0001:00328298       fReports.TfrmReports.Print1Click
+ 0001:003284B0       fReports.TfrmReports.Print2Click
+ 0001:003201B8       fReports.TfrmReports.ProcessNotifications
+ 0001:0031C4AC       fReports.TfrmReports.RequestPrint
+ 0001:003284F8       fReports.TfrmReports.SelectAll1Click
+ 0001:00328540       fReports.TfrmReports.SelectAll2Click
+ 0001:0031D440       fReports.TfrmReports.SetFontSize
+ 0001:00328578       fReports.TfrmReports.ShowTabControl
+ 0001:0032351C       fReports.TfrmReports.Splitter1CanResize
+ 0001:0032914C       fReports.TfrmReports.sptHorzMoved
+ 0001:00323680       fReports.TfrmReports.sptHorzRightCanResize
+ 0001:00321688       fReports.TfrmReports.TabControl1Change
+ 0001:003210F0       fReports.TfrmReports.Timer1Timer
+ 0001:003289E4       fReports.TfrmReports.tvProceduresChange
+ 0001:003287A0       fReports.TfrmReports.tvProceduresClick
+ 0001:00328778       fReports.TfrmReports.tvProceduresCollapsing
+ 0001:0032878C       fReports.TfrmReports.tvProceduresExpanding
+ 0001:00328F2C       fReports.TfrmReports.tvProceduresKeyDown
+ 0001:00323918       fReports.TfrmReports.tvReportsClick
+ 0001:00328284       fReports.TfrmReports.tvReportsCollapsing
+ 0001:00328270       fReports.TfrmReports.tvReportsExpanding
+ 0001:0032854C       fReports.TfrmReports.tvReportsKeyDown
+ 0001:0031FE1C       fReports.TfrmReports.UnFreezeText1Click
+ 0001:0031CCFC       fReports.TfrmReports.UpdateRemoteStatus
+ 0001:00323530       fReports.TfrmReports.WebBrowser1DocumentComplete
+ 0004:0000634C       fReports.uColChange
+ 0004:00006320       fReports.uColumns
+ 0004:0000637C       fReports.uDirect
+ 0004:00006358       fReports.uECSReport
+ 0004:00006380       fReports.uEmptyImageList
+ 0004:00006340       fReports.uFirstSort
+ 0004:00006368       fReports.uFrozen
+ 0004:0000630C       fReports.uHSAll
+ 0004:00006308       fReports.uHSComponents
+ 0004:0000632C       fReports.uHState
+ 0004:0000636C       fReports.uHTMLDoc
+ 0004:00006374       fReports.uHTMLPatient
+ 0004:00006354       fReports.uListState
+ 0004:00006310       fReports.uLocalReportData
+ 0004:00006351       fReports.ulvSelectOn
+ 0004:00006328       fReports.uMaxOcc
+ 0004:0000631C       fReports.uNewColumn
+ 0004:0000635C       fReports.UpdatingLvReports
+ 0004:0000635D       fReports.UpdatingTvProcedures
+ 0004:00006330       fReports.uQualifier
+ 0004:0000633C       fReports.uQualifierType
+ 0004:00006364       fReports.uRemoteCount
+ 0004:00006314       fReports.uRemoteReportData
+ 0004:00006318       fReports.uReportInstruction
+ 0004:00006370       fReports.uReportRPC
+ 0004:00006334       fReports.uReportType
+ 0004:00006378       fReports.uRptID
+ 0004:00006344       fReports.uSecondSort
+ 0004:00006338       fReports.uSortOrder
+ 0004:00006348       fReports.uThirdSort
+ 0004:00006324       fReports.uTreeStrings
+ 0004:00006350       fReports.uUpdateStat
+ 0004:00006300       fReportsAdhocComponent1..2
+ 0001:003182A0       fReportsAdhocComponent1..TfrmReportsAdhocComponent1
+ 0001:00318A78       fReportsAdhocComponent1.ExecuteAdhoc1
+ 0001:0031B350       fReportsAdhocComponent1.Finalization
+ 0002:0000197C       fReportsAdhocComponent1.fReportsAdhocComponent1
+ 0004:000062E4       fReportsAdhocComponent1.frmReportsAdhocComponent1
+ 0004:000062F0       fReportsAdhocComponent1.HSCompCtr
+ 0001:00319A40       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnAddComponentClick
+ 0001:00318C54       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnCancelMainClick
+ 0001:0031A9CC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnEditSubitemsClick
+ 0001:00318C5C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnOKMainClick
+ 0001:00319890       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnRemoveAllComponentsClick
+ 0001:00319668       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnRemoveComponentClick
+ 0001:0031AED0       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.cboICDExit
+ 0001:0031AC78       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.cboTimeLimitExit
+ 0001:0031AD70       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ckbHospitalLocationExit
+ 0001:0031AE20       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ckbProviderNarrativeExit
+ 0001:0031AB30       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.edtHeaderNameExit
+ 0001:0031ABD4       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.edtOccuranceLimitExit
+ 0001:00318F68       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.FormClose
+ 0001:00318AF8       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.FormCreate
+ 0001:00318BEC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.FormShow
+ 0001:00318FCC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.HideEdits
+ 0001:0031B01C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.LoadComponents
+ 0001:0031AF74       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORComboBox1KeyDown
+ 0001:003190B4       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2Click
+ 0001:0031A8A0       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2DragDrop
+ 0001:0031A7EC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2DragOver
+ 0001:0031A918       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2EndDrag
+ 0001:0031B318       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.pnl5ButtonEnter
+ 0001:0031B334       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.pnl5ButtonExit
+ 0001:0031B264       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.rbtnAbbrevClick
+ 0001:0031B2DC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.rbtnHeaderClick
+ 0001:0031B2A0       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.rbtnNameClick
+ 0001:0031A718       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.SpeedButton5Click
+ 0001:0031A774       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.SpeedButton6Click
+ 0001:00319A2C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.Splitter1CanResize
+ 0001:00319A18       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.Splitter4CanResize
+ 0001:0031A94C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.Timer1Timer
+ 0004:000062E8       fReportsAdhocComponent1.uComponents
+ 0004:000062EC       fReportsAdhocComponent1.uCurrentComponent
+ 0004:000062F4       fReportsAdhocComponent1.uFile
+ 0004:000062F8       fReportsAdhocComponent1.uLimit
+ 0004:000062FC       fReportsAdhocComponent1.uLimitCount
+ 0001:00316E70       fReportsAdhocSubItem1..TfrmReportsAdhocSubItem1
+ 0001:00317304       fReportsAdhocSubItem1.ExecuteForm2
+ 0004:000062E0       fReportsAdhocSubItem1.frmReportsAdhocSubItem1
+ 0001:00317E18       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnAddSelClick
+ 0001:00317384       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnCancelClick
+ 0001:00317C54       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnOKClick
+ 0001:003178E0       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnRemoveAllSelClick
+ 0001:00317A34       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnRemoveSelClick
+ 0001:003173AC       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.FormCreate
+ 0001:00318188       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORComboBox2KeyUp
+ 0001:00318238       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORComboBox2NeedData
+ 0001:00317688       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORListBox1DragDrop
+ 0001:00317700       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORListBox1DragOver
+ 0001:00317654       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORListBox1EndDrag
+ 0001:00318268       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.pnl7ButtonEnter
+ 0001:00318284       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.pnl7ButtonExit
+ 0001:00317898       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.SpeedButton7Click
+ 0001:00317834       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.SpeedButton8Click
+ 0001:003177B4       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.Timer2Timer
+ 0001:001DE0AC       fReportsPrint..TfrmReportPrt
+ 0001:001DE3B0       fReportsPrint.PrintReports
+ 0001:001DEF9C       fReportsPrint.StringPad
+ 0001:001DF0FC       fReportsPrint.TfrmReportPrt.cboDeviceChange
+ 0001:001E0C7C       fReportsPrint.TfrmReportPrt.cboDeviceNeedData
+ 0001:001E0C74       fReportsPrint.TfrmReportPrt.cmdCancelClick
+ 0001:001DF1C8       fReportsPrint.TfrmReportPrt.cmdOKClick
+ 0001:001DF044       fReportsPrint.TfrmReportPrt.DisplaySelectDevice
+ 0001:001DE600       fReportsPrint.TfrmReportPrt.FindVType
+ 0004:00005B80       fReview..2
+ 0001:00223C44       fReview..TfrmReview
+ 0004:00005B50       fReview.chkBoxStatus
+ 0004:00005B6C       fReview.CopyBuffer
+ 0004:00005B64       fReview.copyOrderID
+ 0004:00005B78       fReview.crypto
+ 0004:00005B7C       fReview.currentlySelectedItem
+ 0004:00005B40       fReview.DxRect
+ 0001:0022A294       fReview.Finalization
+ 0002:00001464       fReview.fReview
+ 0004:00005B3C       fReview.frmReview
+ 0004:00005B74       fReview.FRVTFHintWindow
+ 0004:00005B70       fReview.FRVTFHintWindowActive
+ 0001:00225E74       fReview.OrdersSignedOrReleased
+ 0001:00225F68       fReview.OrdersToBeSignedOrReleased
+ 0001:00224370       fReview.ReviewChanges
+ 0004:00005B5C       fReview.srcDx
+ 0004:00005B68       fReview.srcIndex
+ 0004:00005B54       fReview.srcOrderID
+ 0004:00005B58       fReview.targetOrderID
+ 0004:00005B60       fReview.tempOrderList
+ 0001:002246EC       fReview.TfrmReview.AddHeader
+ 0001:00224744       fReview.TfrmReview.AddItem
+ 0001:0022482C       fReview.TfrmReview.AdjustSignatureTop
+ 0001:00228B68       fReview.TfrmReview.buDiagnosisClick
+ 0001:00225350       fReview.TfrmReview.BuildFullList
+ 0001:002248F4       fReview.TfrmReview.BuildList
+ 0001:00225358       fReview.TfrmReview.BuildSignList
+ 0001:0022867C       fReview.TfrmReview.CleanupChangesList
+ 0001:00229874       fReview.TfrmReview.ClearDiagnoses1Click
+ 0001:002286C0       fReview.TfrmReview.cmdCancelClick
+ 0001:00226070       fReview.TfrmReview.cmdOKClick
+ 0001:00229358       fReview.TfrmReview.Copy1Click
+ 0001:002291D4       fReview.TfrmReview.Exit1Click
+ 0001:0022A27C       fReview.TfrmReview.FormatListForScreenReader
+ 0001:00229FF0       fReview.TfrmReview.FormClose
+ 0001:00224558       fReview.TfrmReview.FormCreate
+ 0001:002287B8       fReview.TfrmReview.FormDestroy
+ 0001:00229B68       fReview.TfrmReview.FormKeyDown
+ 0001:00229E3C       fReview.TfrmReview.FormKeyUp
+ 0001:00229FA4       fReview.TfrmReview.FormMouseDown
+ 0001:00229F70       fReview.TfrmReview.FormMouseMove
+ 0001:00229F94       fReview.TfrmReview.FormResize
+ 0001:0022997C       fReview.TfrmReview.FormShow
+ 0001:00229FD4       fReview.TfrmReview.fraCoPayLabel24MouseMove
+ 0001:00224210       fReview.TfrmReview.GetCheckBoxStatus
+ 0001:00229930       fReview.TfrmReview.GetNonNilItemCount
+ 0001:00224318       fReview.TfrmReview.GetNumberOfSelectedOrders
+ 0001:00224874       fReview.TfrmReview.IsSignatureRequired
+ 0001:00225360       fReview.TfrmReview.ItemsAreChecked
+ 0001:00229018       fReview.TfrmReview.lstReviewClick
+ 0001:00225540       fReview.TfrmReview.lstReviewClickCheck
+ 0001:0022564C       fReview.TfrmReview.lstReviewDrawItem
+ 0001:0022A268       fReview.TfrmReview.lstReviewKeyUp
+ 0001:002286C8       fReview.TfrmReview.lstReviewMeasureItem
+ 0001:002291DC       fReview.TfrmReview.lstReviewMouseDown
+ 0001:002287DC       fReview.TfrmReview.lstReviewMouseMove
+ 0001:00229624       fReview.TfrmReview.Paste1Click
+ 0001:00225C9C       fReview.TfrmReview.radReleaseClick
+ 0001:002241B0       fReview.TfrmReview.SetCheckBoxStatus
+ 0001:0022A0B0       fReview.TfrmReview.SetItemTextToState
+ 0001:00229E94       fReview.TfrmReview.ShowTreatmentFactorHints
+ 0001:002253A0       fReview.TfrmReview.SignRequiredForAny
+ 0001:00225D84       fReview.TfrmReview.txtESCodeChange
+ 0001:00225450       fReview.updateAllChilds
+ 0001:00225610       fReview.UpdateTextRecord
+ 0001:00116688       frmSignonMessage..TfrmSignonMsg
+ 0004:00003840       frmSignonMessage.frmSignonMsg
+ 0001:001168AC       frmSignonMessage.TfrmSignonMsg.BitBtn1Click
+ 0001:00116888       frmSignonMessage.TfrmSignonMsg.Panel2Resize
+ 0001:0011C488       fRPCBErrMsg..TfrmErrMsg
+ 0004:00003874       fRPCBErrMsg.frmErrMsg
+ 0001:0011C640       fRPCBErrMsg.RPCBShowErrMsg
+ 0001:0011C6C8       fRPCBErrMsg.TfrmErrMsg.RPCBShowException
+ 0001:00145200       fRptBox..TfrmReportBox
+ 0001:001454BC       fRptBox.CreateReportBox
+ 0001:001458F4       fRptBox.ModelessReportBox
+ 0001:0014595C       fRptBox.PrintStrings
+ 0001:00145864       fRptBox.ReportBox
+ 0001:00145C50       fRptBox.TfrmReportBox.cmdCloseClick
+ 0001:00145BCC       fRptBox.TfrmReportBox.cmdPrintClick
+ 0001:00145C58       fRptBox.TfrmReportBox.FormClose
+ 0001:00145BC8       fRptBox.TfrmReportBox.memReportClick
+ 0001:00121A64       fSgnonDlg..TfrmSignonDialog
+ 0001:001CCA70       fSignItem..TfrmSignItem
+ 0001:001CCC98       fSignItem.SignatureForItem
+ 0001:001CCE70       fSignItem.TfrmSignItem.cmdCancelClick
+ 0001:001CCD38       fSignItem.TfrmSignItem.cmdOKClick
+ 0004:00004A4C       fSkinTest..2
+ 0001:001897BC       fSkinTest..TfrmSkinTests
+ 0001:00189FBC       fSkinTest.Finalization
+ 0004:00004A48       fSkinTest.frmSkinTests
+ 0002:00001138       fSkinTest.fSkinTest
+ 0001:00189AB0       fSkinTest.TfrmSkinTests.cboSkinResultsChange
+ 0001:00189C40       fSkinTest.TfrmSkinTests.edtDTGivenChange
+ 0001:00189C3C       fSkinTest.TfrmSkinTests.edtDtReadChange
+ 0001:00189B80       fSkinTest.TfrmSkinTests.EdtReadingChange
+ 0001:00189C44       fSkinTest.TfrmSkinTests.FormCreate
+ 0001:00189CF8       fSkinTest.TfrmSkinTests.UpdateControls
+ 0001:00189CB4       fSkinTest.TfrmSkinTests.UpdateNewItemStr
+ 0001:00189F98       fSkinTest.TfrmSkinTests.UpDnReadingChanging
+ 0001:0035F08C       fSplash..TfrmSplash
+ 0004:000064D8       fSplash.frmSplash
+ 0001:0035F2A4       fSplash.TfrmSplash.FormCreate
+ 0004:00005944       fSurgery..2
+ 0001:001CDB30       fSurgery..TfrmSurgery
+ 0001:001D1EB8       fSurgery.AssignBoilerText
+ 0001:001D6F58       fSurgery.Finalization
+ 0004:00005954       fSurgery.frmDrawers
+ 0004:00005908       fSurgery.frmSurgery
+ 0002:000012B4       fSurgery.fSurgery
+ 0001:001D6580       fSurgery.SetDateRangeText
+ 0001:001CEE24       fSurgery.TfrmSurgery.AllowContextChange
+ 0001:001CFD8C       fSurgery.TfrmSurgery.ClearEditControls
+ 0001:001CF0C0       fSurgery.TfrmSurgery.ClearPtData
+ 0001:001D2264       fSurgery.TfrmSurgery.cmdChangeClick
+ 0001:001D1D70       fSurgery.TfrmSurgery.cmdNewNoteClick
+ 0001:001D1D78       fSurgery.TfrmSurgery.cmdPCEClick
+ 0001:001CF15C       fSurgery.TfrmSurgery.DisplayPage
+ 0001:001CFEA8       fSurgery.TfrmSurgery.DisplayPCE
+ 0001:001CFD6C       fSurgery.TfrmSurgery.dlgFindTextFind
+ 0001:001D4D9C       fSurgery.TfrmSurgery.dlgReplaceTextFind
+ 0001:001D4DBC       fSurgery.TfrmSurgery.dlgReplaceTextReplace
+ 0001:001D2814       fSurgery.TfrmSurgery.DoAutoSave
+ 0001:001D6B18       fSurgery.TfrmSurgery.EnableDisableMenus
+ 0001:001D507C       fSurgery.TfrmSurgery.FormClose
+ 0001:001CF2EC       fSurgery.TfrmSurgery.FormCreate
+ 0001:001CF5DC       fSurgery.TfrmSurgery.FormDestroy
+ 0001:001CF604       fSurgery.TfrmSurgery.GetDrawers
+ 0001:001D02E8       fSurgery.TfrmSurgery.GetTitleText
+ 0001:001D0D78       fSurgery.TfrmSurgery.InsertAddendum
+ 0001:001D0634       fSurgery.TfrmSurgery.InsertNewNote
+ 0001:001D046C       fSurgery.TfrmSurgery.LacksRequiredForCreate
+ 0001:001D136C       fSurgery.TfrmSurgery.LoadForEdit
+ 0001:001D61E8       fSurgery.TfrmSurgery.LoadSurgeryCases
+ 0001:001D6830       fSurgery.TfrmSurgery.lstNotesClick
+ 0001:001D27B4       fSurgery.TfrmSurgery.memNewNoteChange
+ 0001:001D6C9C       fSurgery.TfrmSurgery.memNewNoteKeyDown
+ 0001:001D2F14       fSurgery.TfrmSurgery.mnuActAddendClick
+ 0001:001D1E84       fSurgery.TfrmSurgery.mnuActChangeClick
+ 0001:001D3700       fSurgery.TfrmSurgery.mnuActDeleteClick
+ 0001:001D3BEC       fSurgery.TfrmSurgery.mnuActEditClick
+ 0001:001D5178       fSurgery.TfrmSurgery.mnuActIdentifyAddlSignersClick
+ 0001:001D1F64       fSurgery.TfrmSurgery.mnuActLoadBoilerClick
+ 0001:001D2E30       fSurgery.TfrmSurgery.mnuActNewClick
+ 0001:001D3D30       fSurgery.TfrmSurgery.mnuActSaveClick
+ 0001:001D3E74       fSurgery.TfrmSurgery.mnuActSignClick
+ 0001:001D318C       fSurgery.TfrmSurgery.mnuActSignListClick
+ 0001:001CF8C8       fSurgery.TfrmSurgery.mnuChartTabClick
+ 0001:001D5C70       fSurgery.TfrmSurgery.mnuEditDialgFieldsClick
+ 0001:001D5BBC       fSurgery.TfrmSurgery.mnuEditSharedTemplatesClick
+ 0001:001D5BA4       fSurgery.TfrmSurgery.mnuEditTemplatesClick
+ 0001:001D5DAC       fSurgery.TfrmSurgery.mnuIconLegendClick
+ 0001:001D5BC8       fSurgery.TfrmSurgery.mnuNewSharedTemplateClick
+ 0001:001D5BB0       fSurgery.TfrmSurgery.mnuNewTemplateClick
+ 0001:001D5BD4       fSurgery.TfrmSurgery.mnuOptionsClick
+ 0001:001CF960       fSurgery.TfrmSurgery.mnuViewClick
+ 0001:001D4ED4       fSurgery.TfrmSurgery.mnuViewDetailClick
+ 0001:001D6DD0       fSurgery.TfrmSurgery.mnuViewInformationClick
+ 0001:001D5A04       fSurgery.TfrmSurgery.mnuViewReturntoDefaultClick
+ 0001:001D5910       fSurgery.TfrmSurgery.mnuViewSaveAsDefaultClick
+ 0001:001D27BC       fSurgery.TfrmSurgery.pnlFieldsResize
+ 0001:001CF3CC       fSurgery.TfrmSurgery.pnlRightResize
+ 0001:001CF3EC       fSurgery.TfrmSurgery.pnlWriteResize
+ 0001:001D5AF0       fSurgery.TfrmSurgery.popNoteListCollapseAllClick
+ 0001:001D5B6C       fSurgery.TfrmSurgery.popNoteListCollapseSelectedClick
+ 0001:001D5AE4       fSurgery.TfrmSurgery.popNoteListExpandAllClick
+ 0001:001D5B34       fSurgery.TfrmSurgery.popNoteListExpandSelectedClick
+ 0001:001D5A68       fSurgery.TfrmSurgery.popNoteListPopup
+ 0001:001D54EC       fSurgery.TfrmSurgery.popNoteMemoAddlSignClick
+ 0001:001D4C74       fSurgery.TfrmSurgery.popNoteMemoCopyClick
+ 0001:001D4C68       fSurgery.TfrmSurgery.popNoteMemoCutClick
+ 0001:001CFCE0       fSurgery.TfrmSurgery.popNoteMemoFindClick
+ 0001:001D4E58       fSurgery.TfrmSurgery.popNoteMemoGrammarClick
+ 0001:001D6DB4       fSurgery.TfrmSurgery.popNoteMemoInsTemplateClick
+ 0001:001D4C80       fSurgery.TfrmSurgery.popNoteMemoPasteClick
+ 0001:001D4A30       fSurgery.TfrmSurgery.popNoteMemoPopup
+ 0001:001D6DA8       fSurgery.TfrmSurgery.popNoteMemoPreviewClick
+ 0001:001D4CD4       fSurgery.TfrmSurgery.popNoteMemoReformatClick
+ 0001:001D4D08       fSurgery.TfrmSurgery.popNoteMemoReplaceClick
+ 0001:001D4CF4       fSurgery.TfrmSurgery.popNoteMemoSaveContinueClick
+ 0001:001D4DDC       fSurgery.TfrmSurgery.popNoteMemoSpellClick
+ 0001:001D5A10       fSurgery.TfrmSurgery.popNoteMemoTemplateClick
+ 0001:001D54F4       fSurgery.TfrmSurgery.ProcessNotifications
+ 0001:001D3504       fSurgery.TfrmSurgery.RemovePCEFromChanges
+ 0001:001CF710       fSurgery.TfrmSurgery.RequestPrint
+ 0001:001D1D60       fSurgery.TfrmSurgery.SaveCurrentNote
+ 0001:001D17F8       fSurgery.TfrmSurgery.SaveEditedNote
+ 0001:001D4544       fSurgery.TfrmSurgery.SaveSignItem
+ 0001:001D5C48       fSurgery.TfrmSurgery.SetEditingIndex
+ 0001:001CF8D8       fSurgery.TfrmSurgery.SetFontSize
+ 0001:001D05C0       fSurgery.TfrmSurgery.SetSubjectVisible
+ 0001:001D6694       fSurgery.TfrmSurgery.SetSurgTreeLabel
+ 0001:001CF49C       fSurgery.TfrmSurgery.SetViewContext
+ 0001:001D5CB0       fSurgery.TfrmSurgery.ShowPCEButtons
+ 0001:001CFE5C       fSurgery.TfrmSurgery.ShowPCEControls
+ 0001:001D6D48       fSurgery.TfrmSurgery.sptHorzCanResize
+ 0001:001D2B44       fSurgery.TfrmSurgery.StartNewEdit
+ 0001:001D2B38       fSurgery.TfrmSurgery.timAutoSaveTimer
+ 0001:001D5DB8       fSurgery.TfrmSurgery.tvSurgeryChange
+ 0001:001D5C78       fSurgery.TfrmSurgery.tvSurgeryClick
+ 0001:001D61A4       fSurgery.TfrmSurgery.tvSurgeryCollapsed
+ 0001:001D6144       fSurgery.TfrmSurgery.tvSurgeryExpanded
+ 0001:001CF60C       fSurgery.TfrmSurgery.UpdateTreeView
+ 0001:001D0514       fSurgery.TfrmSurgery.VerifyNoteTitle
+ 0001:001D6DC0       fSurgery.TfrmSurgery.ViewInfo
+ 0004:00005958       fSurgery.uChanging
+ 0004:0000594C       fSurgery.uPCEEdit
+ 0004:00005948       fSurgery.uPCEShow
+ 0004:0000590C       fSurgery.uSurgeryContext
+ 0004:00005950       fSurgery.ViewContext
+ 0001:001B8254       fSurgeryView..TfrmSurgeryView
+ 0001:001B856C       fSurgeryView.SelectSurgeryView
+ 0001:001B8A88       fSurgeryView.TfrmSurgeryView.cmdCancelClick
+ 0001:001B8A98       fSurgeryView.TfrmSurgeryView.cmdClearClick
+ 0001:001B884C       fSurgeryView.TfrmSurgeryView.cmdOKClick
+ 0001:001BD2AC       fTemplateAutoGen..TfrmTemplateAutoGen
+ 0001:001BD540       fTemplateAutoGen.GetAutoGenText
+ 0004:00005900       fTemplateAutoGen.PersObjects
+ 0001:001BD984       fTemplateAutoGen.TfrmTemplateAutoGen.cbxObjectsDblClick
+ 0001:001BD964       fTemplateAutoGen.TfrmTemplateAutoGen.cbxTitlesDblClick
+ 0001:001BD93C       fTemplateAutoGen.TfrmTemplateAutoGen.cbxTitlesNeedData
+ 0001:001BD9A4       fTemplateAutoGen.TfrmTemplateAutoGen.FormShow
+ 0001:001BD770       fTemplateAutoGen.TfrmTemplateAutoGen.rgSourceClick
+ 0001:00194CF8       fTemplateDialog..TfrmTemplateDialog
+ 0001:00195A30       fTemplateDialog.CheckBoilerplate4Fields
+ 0001:00195914       fTemplateDialog.CheckBoilerplate4Fields
+ 0001:00195394       fTemplateDialog.CountDlgProps
+ 0001:001954B0       fTemplateDialog.DoTemplateDialog
+ 0004:00004B40       fTemplateDialog.frmTemplateDialog
+ 0001:00194FF0       fTemplateDialog.GetText
+ 0001:001952AC       fTemplateDialog.IncDlgID
+ 0001:00195D4C       fTemplateDialog.NextTabCtrl
+ 0001:001967B4       fTemplateDialog.TfrmTemplateDialog.AppShowHint
+ 0001:00195B38       fTemplateDialog.TfrmTemplateDialog.btnAllClick
+ 0001:00195B40       fTemplateDialog.TfrmTemplateDialog.btnNoneClick
+ 0001:00196A5C       fTemplateDialog.TfrmTemplateDialog.btnOKClick
+ 0001:00196A64       fTemplateDialog.TfrmTemplateDialog.btnPreviewClick
+ 0001:001965E4       fTemplateDialog.TfrmTemplateDialog.BuildAllControls
+ 0001:00195D88       fTemplateDialog.TfrmTemplateDialog.BuildCB
+ 0001:00195ADC       fTemplateDialog.TfrmTemplateDialog.ChkAll
+ 0001:00196AF0       fTemplateDialog.TfrmTemplateDialog.EntryDestroyed
+ 0001:00196818       fTemplateDialog.TfrmTemplateDialog.FieldChanged
+ 0001:00195C0C       fTemplateDialog.TfrmTemplateDialog.FindObjectByID
+ 0001:00196B14       fTemplateDialog.TfrmTemplateDialog.FormClose
+ 0001:00196870       fTemplateDialog.TfrmTemplateDialog.FormCloseQuery
+ 0001:00196708       fTemplateDialog.TfrmTemplateDialog.FormCreate
+ 0001:001967E4       fTemplateDialog.TfrmTemplateDialog.FormDestroy
+ 0001:001966CC       fTemplateDialog.TfrmTemplateDialog.FormPaint
+ 0001:001966F0       fTemplateDialog.TfrmTemplateDialog.FormShow
+ 0001:00195B48       fTemplateDialog.TfrmTemplateDialog.GetObjectID
+ 0001:00195CC0       fTemplateDialog.TfrmTemplateDialog.InitScreenReaderSetup
+ 0001:00196564       fTemplateDialog.TfrmTemplateDialog.ItemChecked
+ 0001:0019652C       fTemplateDialog.TfrmTemplateDialog.ParentCBEnter
+ 0001:00196548       fTemplateDialog.TfrmTemplateDialog.ParentCBExit
+ 0001:00196B3C       fTemplateDialog.TfrmTemplateDialog.SizeFormToCancelBtn
+ 0001:00196B58       fTemplateDialog.TfrmTemplateDialog.UMScreenReaderInit
+ 0001:001BE0FC       fTemplateEditor..TfrmTemplateEditor
+ 0001:001C36F8       fTemplateEditor.Adjust
+ 0001:001C6DDC       fTemplateEditor.ClearFields
+ 0001:001BFA7C       fTemplateEditor.EditTemplates
+ 0003:00003850       fTemplateEditor.ForcedIdx
+ 0003:00003890       fTemplateEditor.frmTemplateFields
+ 0003:0000388C       fTemplateEditor.frmTemplateObjects
+ 0001:001C82FC       fTemplateEditor.GetFirstPersonalNode
+ 0003:00003880       fTemplateEditor.IdxForced
+ 0001:001C4BA4       fTemplateEditor.ScanTree
+ 0001:001C371C       fTemplateEditor.TfrmTemplateEditor.AdjustControls4FontChange
+ 0001:001C385C       fTemplateEditor.TfrmTemplateEditor.AllowMove
+ 0001:001C60E0       fTemplateEditor.TfrmTemplateEditor.AutoDel
+ 0001:001C82E8       fTemplateEditor.TfrmTemplateEditor.AutoLongLines
+ 0001:001C0048       fTemplateEditor.TfrmTemplateEditor.btnApplyClick
+ 0001:001C4ED0       fTemplateEditor.TfrmTemplateEditor.btnCancelClick
+ 0001:001C42EC       fTemplateEditor.TfrmTemplateEditor.btnFindClick
+ 0001:001BFD7C       fTemplateEditor.TfrmTemplateEditor.btnNewClick
+ 0001:001C4654       fTemplateEditor.TfrmTemplateEditor.btnOKClick
+ 0001:001C8344       fTemplateEditor.TfrmTemplateEditor.CanClone
+ 0001:001C182C       fTemplateEditor.TfrmTemplateEditor.cbActiveClick
+ 0001:001C66C8       fTemplateEditor.TfrmTemplateEditor.cbClick
+ 0001:001C6690       fTemplateEditor.TfrmTemplateEditor.cbDisplayOnlyClick
+ 0001:001C3D7C       fTemplateEditor.TfrmTemplateEditor.cbEditSharedClick
+ 0001:001C1984       fTemplateEditor.TfrmTemplateEditor.cbExcludeClick
+ 0001:001C6698       fTemplateEditor.TfrmTemplateEditor.cbFirstLineClick
+ 0001:001C66B0       fTemplateEditor.TfrmTemplateEditor.cbHideDlgItemsClick
+ 0001:001C66BC       fTemplateEditor.TfrmTemplateEditor.cbHideItemsClick
+ 0001:001C6820       fTemplateEditor.TfrmTemplateEditor.cbIndentClick
+ 0001:001C8480       fTemplateEditor.TfrmTemplateEditor.cbLockClick
+ 0001:001C82D0       fTemplateEditor.TfrmTemplateEditor.cbLongLinesClick
+ 0001:001C65F8       fTemplateEditor.TfrmTemplateEditor.cbNotesClick
+ 0001:001C66A4       fTemplateEditor.TfrmTemplateEditor.cbOneItemOnlyClick
+ 0001:001C0494       fTemplateEditor.TfrmTemplateEditor.cboOwnerChange
+ 0001:001C048C       fTemplateEditor.TfrmTemplateEditor.cboOwnerNeedData
+ 0001:001C5CD8       fTemplateEditor.TfrmTemplateEditor.cbPerFindOptionClick
+ 0001:001C1DB0       fTemplateEditor.TfrmTemplateEditor.cbPerHideClick
+ 0001:001C5CA8       fTemplateEditor.TfrmTemplateEditor.cbShFindOptionClick
+ 0001:001C1D3C       fTemplateEditor.TfrmTemplateEditor.cbShHideClick
+ 0001:001C8B68       fTemplateEditor.TfrmTemplateEditor.cbxCOMObjChange
+ 0001:001C8EC4       fTemplateEditor.TfrmTemplateEditor.cbxLinkChange
+ 0001:001C8D78       fTemplateEditor.TfrmTemplateEditor.cbxLinkNeedData
+ 0001:001C81B8       fTemplateEditor.TfrmTemplateEditor.cbxRemDlgsChange
+ 0001:001C7EF0       fTemplateEditor.TfrmTemplateEditor.cbxTypeChange
+ 0001:001C7DBC       fTemplateEditor.TfrmTemplateEditor.cbxTypeDrawItem
+ 0001:001C1BC0       fTemplateEditor.TfrmTemplateEditor.ChangeTree
+ 0001:001C3964       fTemplateEditor.TfrmTemplateEditor.Clone
+ 0001:001C1E10       fTemplateEditor.TfrmTemplateEditor.DisplayBoilerplate
+ 0001:001C8C48       fTemplateEditor.TfrmTemplateEditor.edtCOMParamChange
+ 0001:001C1AA8       fTemplateEditor.TfrmTemplateEditor.edtGapChange
+ 0001:001C4FD0       fTemplateEditor.TfrmTemplateEditor.edtGapKeyPress
+ 0001:001C4FE0       fTemplateEditor.TfrmTemplateEditor.edtNameExit
+ 0001:001C16F8       fTemplateEditor.TfrmTemplateEditor.edtNameOldChange
+ 0001:001C4634       fTemplateEditor.TfrmTemplateEditor.edtPerSearchEnter
+ 0001:001C4644       fTemplateEditor.TfrmTemplateEditor.edtPerSearchExit
+ 0001:001C44D0       fTemplateEditor.TfrmTemplateEditor.edtSearchChange
+ 0001:001C4614       fTemplateEditor.TfrmTemplateEditor.edtShSearchEnter
+ 0001:001C4624       fTemplateEditor.TfrmTemplateEditor.edtShSearchExit
+ 0001:001C074C       fTemplateEditor.TfrmTemplateEditor.EnableControls
+ 0001:001C2B40       fTemplateEditor.TfrmTemplateEditor.EnableNavControls
+ 0001:001C4ED8       fTemplateEditor.TfrmTemplateEditor.FormClose
+ 0001:001C4EE0       fTemplateEditor.TfrmTemplateEditor.FormCloseQuery
+ 0001:001C0084       fTemplateEditor.TfrmTemplateEditor.FormCreate
+ 0001:001C20D0       fTemplateEditor.TfrmTemplateEditor.FormDestroy
+ 0001:001C4694       fTemplateEditor.TfrmTemplateEditor.FormShow
+ 0001:001C8CF8       fTemplateEditor.TfrmTemplateEditor.GetLinkType
+ 0001:001C42B0       fTemplateEditor.TfrmTemplateEditor.GetTree
+ 0001:001C03F8       fTemplateEditor.TfrmTemplateEditor.HideControls
+ 0001:001C8844       fTemplateEditor.TfrmTemplateEditor.InitTrees
+ 0001:001C05E0       fTemplateEditor.TfrmTemplateEditor.IsTemplateLocked
+ 0001:001C6024       fTemplateEditor.TfrmTemplateEditor.mbMainResize
+ 0001:001C6278       fTemplateEditor.TfrmTemplateEditor.mnuAutoGenClick
+ 0001:001C6058       fTemplateEditor.TfrmTemplateEditor.mnuBPCheckGrammarClick
+ 0001:001C554C       fTemplateEditor.TfrmTemplateEditor.mnuBPCopyClick
+ 0001:001C5540       fTemplateEditor.TfrmTemplateEditor.mnuBPCutClick
+ 0001:001C4884       fTemplateEditor.TfrmTemplateEditor.mnuBPErrorCheckClick
+ 0001:001C68D8       fTemplateEditor.TfrmTemplateEditor.mnuBPInsertFieldClick
+ 0001:001C46EC       fTemplateEditor.TfrmTemplateEditor.mnuBPInsertObjectClick
+ 0001:001C5558       fTemplateEditor.TfrmTemplateEditor.mnuBPPasteClick
+ 0001:001C55B8       fTemplateEditor.TfrmTemplateEditor.mnuBPSelectAllClick
+ 0001:001C4F80       fTemplateEditor.TfrmTemplateEditor.mnuBPSpellCheckClick
+ 0001:001C6184       fTemplateEditor.TfrmTemplateEditor.mnuBPTryClick
+ 0001:001C57FC       fTemplateEditor.TfrmTemplateEditor.mnuBPUndoClick
+ 0001:001C406C       fTemplateEditor.TfrmTemplateEditor.mnuCollapseTreeClick
+ 0001:001C59E0       fTemplateEditor.TfrmTemplateEditor.mnuEditClick
+ 0001:001C6894       fTemplateEditor.TfrmTemplateEditor.mnuEditTemplateFieldsClick
+ 0001:001C6960       fTemplateEditor.TfrmTemplateEditor.mnuExportTemplateClick
+ 0001:001C5F3C       fTemplateEditor.TfrmTemplateEditor.mnuFindPersonalClick
+ 0001:001C5F24       fTemplateEditor.TfrmTemplateEditor.mnuFindSharedClick
+ 0001:001C40CC       fTemplateEditor.TfrmTemplateEditor.mnuFindTemplatesClick
+ 0001:001C5C40       fTemplateEditor.TfrmTemplateEditor.mnuGroupBoilerplateClick
+ 0001:001C54CC       fTemplateEditor.TfrmTemplateEditor.mnuGroupBPCopyClick
+ 0001:001C55AC       fTemplateEditor.TfrmTemplateEditor.mnuGroupBPSelectAllClick
+ 0001:001C6DFC       fTemplateEditor.TfrmTemplateEditor.mnuImportTemplateClick
+ 0001:001C5638       fTemplateEditor.TfrmTemplateEditor.mnuNodeCopyClick
+ 0001:001C55C4       fTemplateEditor.TfrmTemplateEditor.mnuNodeDeleteClick
+ 0001:001C5664       fTemplateEditor.TfrmTemplateEditor.mnuNodePasteClick
+ 0001:001C6454       fTemplateEditor.TfrmTemplateEditor.mnuNotesCopyClick
+ 0001:001C6448       fTemplateEditor.TfrmTemplateEditor.mnuNotesCutClick
+ 0001:001C64C0       fTemplateEditor.TfrmTemplateEditor.mnuNotesGrammarClick
+ 0001:001C6460       fTemplateEditor.TfrmTemplateEditor.mnuNotesPasteClick
+ 0001:001C64B4       fTemplateEditor.TfrmTemplateEditor.mnuNotesSelectAllClick
+ 0001:001C64CC       fTemplateEditor.TfrmTemplateEditor.mnuNotesSpellingClick
+ 0001:001C6430       fTemplateEditor.TfrmTemplateEditor.mnuNotesUndoClick
+ 0001:001C5F6C       fTemplateEditor.TfrmTemplateEditor.mnuPerCollapseClick
+ 0001:001C848C       fTemplateEditor.TfrmTemplateEditor.mnuRefreshClick
+ 0001:001C5F54       fTemplateEditor.TfrmTemplateEditor.mnuShCollapseClick
+ 0001:001C6064       fTemplateEditor.TfrmTemplateEditor.mnuSortClick
+ 0001:001C5D08       fTemplateEditor.TfrmTemplateEditor.mnuTemplateClick
+ 0001:001C82C4       fTemplateEditor.TfrmTemplateEditor.mnuTemplateIconLegendClick
+ 0001:001C682C       fTemplateEditor.TfrmTemplateEditor.mnuToolsClick
+ 0001:001C0978       fTemplateEditor.TfrmTemplateEditor.MoveCopyButtons
+ 0001:001C04B0       fTemplateEditor.TfrmTemplateEditor.NewPersonalUser
+ 0001:001C5724       fTemplateEditor.TfrmTemplateEditor.PasteOK
+ 0001:001C60C8       fTemplateEditor.TfrmTemplateEditor.pnlBoilerplateCanResize
+ 0001:001C1688       fTemplateEditor.TfrmTemplateEditor.pnlBoilerplateResize
+ 0001:001C5FC8       fTemplateEditor.TfrmTemplateEditor.pnlPerSearchResize
+ 0001:001C600C       fTemplateEditor.TfrmTemplateEditor.pnlPropertiesResize
+ 0001:001C5F84       fTemplateEditor.TfrmTemplateEditor.pnlShSearchResize
+ 0001:001C4A0C       fTemplateEditor.TfrmTemplateEditor.popBoilerplatePopup
+ 0001:001C54D8       fTemplateEditor.TfrmTemplateEditor.popGroupPopup
+ 0001:001C64D8       fTemplateEditor.TfrmTemplateEditor.popNotesPopup
+ 0001:001C3D9C       fTemplateEditor.TfrmTemplateEditor.popTemplatesPopup
+ 0001:001C3AA4       fTemplateEditor.TfrmTemplateEditor.reBoilChange
+ 0001:001C91F0       fTemplateEditor.TfrmTemplateEditor.reBoilKeyDown
+ 0001:001C91E0       fTemplateEditor.TfrmTemplateEditor.reBoilKeyPress
+ 0001:001C9134       fTemplateEditor.TfrmTemplateEditor.reBoilKeyUp
+ 0001:001C8A64       fTemplateEditor.TfrmTemplateEditor.reBoilSelectionChange
+ 0001:001C8594       fTemplateEditor.TfrmTemplateEditor.RefreshData
+ 0001:001C8A80       fTemplateEditor.TfrmTemplateEditor.reGroupBPSelectionChange
+ 0001:001C6328       fTemplateEditor.TfrmTemplateEditor.reNotesChange
+ 0001:001C8A04       fTemplateEditor.TfrmTemplateEditor.reResizeRequest
+ 0001:001C3258       fTemplateEditor.TfrmTemplateEditor.Resync
+ 0001:001C35C0       fTemplateEditor.TfrmTemplateEditor.sbCopyLeftClick
+ 0001:001C365C       fTemplateEditor.TfrmTemplateEditor.sbCopyRightClick
+ 0001:001C2808       fTemplateEditor.TfrmTemplateEditor.sbDeleteClick
+ 0001:001C24B0       fTemplateEditor.TfrmTemplateEditor.sbMoveDownClick
+ 0001:001C2190       fTemplateEditor.TfrmTemplateEditor.sbMoveUpClick
+ 0001:001C4C24       fTemplateEditor.TfrmTemplateEditor.ScanNames
+ 0001:001C4578       fTemplateEditor.TfrmTemplateEditor.SetFindNext
+ 0001:001C3CA4       fTemplateEditor.TfrmTemplateEditor.SharedEditing
+ 0001:001C0A18       fTemplateEditor.TfrmTemplateEditor.ShowGroupBoilerplate
+ 0001:001C0AA0       fTemplateEditor.TfrmTemplateEditor.ShowInfo
+ 0001:001C41D8       fTemplateEditor.TfrmTemplateEditor.ShowTemplateType
+ 0001:001C4F8C       fTemplateEditor.TfrmTemplateEditor.splBoilMoved
+ 0001:001C0A10       fTemplateEditor.TfrmTemplateEditor.splMainMoved
+ 0001:001C83C8       fTemplateEditor.TfrmTemplateEditor.TemplateLocked
+ 0001:001C51E8       fTemplateEditor.TfrmTemplateEditor.tmrAutoScrollTimer
+ 0001:001C0500       fTemplateEditor.TfrmTemplateEditor.tvPersonalExpanding
+ 0001:001C0554       fTemplateEditor.TfrmTemplateEditor.tvSharedExpanding
+ 0001:001C0668       fTemplateEditor.TfrmTemplateEditor.tvTreeChange
+ 0001:001C2F14       fTemplateEditor.TfrmTemplateEditor.tvTreeDragDrop
+ 0001:001C2E10       fTemplateEditor.TfrmTemplateEditor.tvTreeDragging
+ 0001:001C2E44       fTemplateEditor.TfrmTemplateEditor.tvTreeDragOver
+ 0001:001C54B8       fTemplateEditor.TfrmTemplateEditor.tvTreeEndDrag
+ 0001:001C1C98       fTemplateEditor.TfrmTemplateEditor.tvTreeEnter
+ 0001:001C05A8       fTemplateEditor.TfrmTemplateEditor.tvTreeGetImageIndex
+ 0001:001C05C4       fTemplateEditor.TfrmTemplateEditor.tvTreeGetSelectedIndex
+ 0001:001C5814       fTemplateEditor.TfrmTemplateEditor.tvTreeKeyDown
+ 0001:001C1CD4       fTemplateEditor.TfrmTemplateEditor.tvTreeNodeEdited
+ 0001:001C5490       fTemplateEditor.TfrmTemplateEditor.tvTreeStartDrag
+ 0001:001C839C       fTemplateEditor.TfrmTemplateEditor.UpdateApply
+ 0001:001C6938       fTemplateEditor.TfrmTemplateEditor.UpdateInsertsDialogs
+ 0001:001C8A9C       fTemplateEditor.TfrmTemplateEditor.UpdateXY
+ 0003:00003840       fTemplateEditor.tmplEditorSplitterBoil
+ 0003:0000383C       fTemplateEditor.tmplEditorSplitterMain
+ 0003:00003834       fTemplateEditor.tmplEditorSplitterMiddle
+ 0003:00003844       fTemplateEditor.tmplEditorSplitterNotes
+ 0003:00003838       fTemplateEditor.tmplEditorSplitterProperties
+ 0003:00003848       fTemplateEditor.TypeTag
+ 0001:0019A928       fTemplateFieldEditor..TfrmTemplateFieldEditor
+ 0001:0019B4E4       fTemplateFieldEditor.EditDialogFields
+ 0003:00003720       fTemplateFieldEditor.frmTemplateFields
+ 0001:0019B54C       fTemplateFieldEditor.SetLbl
+ 0001:0019B5A0       fTemplateFieldEditor.SetY
+ 0001:0019CF0C       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnApplyClick
+ 0001:0019D010       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnCancelClick
+ 0001:0019CF04       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnOKClick
+ 0001:0019D95C       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnPreviewClick
+ 0001:0019CD20       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbActiveClick
+ 0001:0019E670       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbExcludeClick
+ 0001:0019D2A0       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbHideClick
+ 0001:0019DB1C       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbRequiredClick
+ 0001:0019DF88       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbSepLinesClick
+ 0001:0019E5B8       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxDateTypeChange
+ 0001:0019CC24       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxDefaultChange
+ 0001:0019C56C       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsChange
+ 0001:0019E050       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsKeyDown
+ 0001:0019C318       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsNeedData
+ 0001:0019DBD4       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsSynonymCheck
+ 0001:0019C974       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxTypeChange
+ 0001:0019E8E0       fTemplateFieldEditor.TfrmTemplateFieldEditor.ControlExit
+ 0001:0019CB94       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtDefaultChange
+ 0001:0019E12C       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtDefNumChange
+ 0001:0019E3A0       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtIncChange
+ 0001:0019E4E4       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtIndentChange
+ 0001:0019CA24       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtLenChange
+ 0001:0019CCA4       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtLMTextChange
+ 0001:0019E2E8       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtMaxValChange
+ 0001:0019E230       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtMinValChange
+ 0001:0019C604       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtNameChange
+ 0001:0019D2BC       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtNameExit
+ 0001:0019E48C       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtPadChange
+ 0001:0019DFD4       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtpopControlEnter
+ 0001:0019E084       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtTextLenChange
+ 0001:0019E404       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtURLChange
+ 0001:0019DA74       fTemplateFieldEditor.TfrmTemplateFieldEditor.EnableButtons
+ 0001:0019CFA0       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormCloseQuery
+ 0001:0019C438       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormCreate
+ 0001:0019DB84       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormDestroy
+ 0001:0019E6C4       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormResize
+ 0001:0019DE6C       fTemplateFieldEditor.TfrmTemplateFieldEditor.GetPopupControl
+ 0001:0019DB14       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuActionClick
+ 0001:0019DF38       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPCheckGrammarClick
+ 0001:0019DEC0       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPCopyClick
+ 0001:0019DEB0       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPCutClick
+ 0001:0019DED0       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPPasteClick
+ 0001:0019DF28       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPSelectAllClick
+ 0001:0019DF60       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPSpellCheckClick
+ 0001:0019DE98       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPUndoClick
+ 0001:0019D39C       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuCopyClick
+ 0001:0019D400       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuDeleteClick
+ 0001:0019E820       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuInsertTemplateFieldClick
+ 0001:0019CD74       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuNewClick
+ 0001:0019DB6C       fTemplateFieldEditor.TfrmTemplateFieldEditor.pnlObjsResize
+ 0001:0019DC20       fTemplateFieldEditor.TfrmTemplateFieldEditor.popTextPopup
+ 0001:0019D214       fTemplateFieldEditor.TfrmTemplateFieldEditor.reItemsChange
+ 0001:0019E6EC       fTemplateFieldEditor.TfrmTemplateFieldEditor.reItemsResizeRequest
+ 0001:0019E74C       fTemplateFieldEditor.TfrmTemplateFieldEditor.reItemsSelectionChange
+ 0001:0019E53C       fTemplateFieldEditor.TfrmTemplateFieldEditor.reNotesChange
+ 0001:0019E8FC       fTemplateFieldEditor.TfrmTemplateFieldEditor.reNotesKeyUp
+ 0001:0019D8A0       fTemplateFieldEditor.TfrmTemplateFieldEditor.ResetListEntry
+ 0001:0019D0B4       fTemplateFieldEditor.TfrmTemplateFieldEditor.SaveChanges
+ 0001:0019D3F4       fTemplateFieldEditor.TfrmTemplateFieldEditor.SetFld
+ 0001:0019DBAC       fTemplateFieldEditor.TfrmTemplateFieldEditor.SetHideSynonyms
+ 0001:0019C0E0       fTemplateFieldEditor.TfrmTemplateFieldEditor.SyncItems
+ 0001:0019B5D8       fTemplateFieldEditor.TfrmTemplateFieldEditor.UpdateControls
+ 0001:0019D2D8       fTemplateFieldEditor.TfrmTemplateFieldEditor.VerifyName
+ 0001:00198BCC       fTemplateFields..TfrmTemplateFields
+ 0001:00199230       fTemplateFields.TfrmTemplateFields.btnCancelClick
+ 0001:001993C0       fTemplateFields.TfrmTemplateFields.btnInsertClick
+ 0001:001993D8       fTemplateFields.TfrmTemplateFields.btnPreviewClick
+ 0001:00199520       fTemplateFields.TfrmTemplateFields.cboObjectsChange
+ 0001:00199218       fTemplateFields.TfrmTemplateFields.cboObjectsDblClick
+ 0001:00198FEC       fTemplateFields.TfrmTemplateFields.cboObjectsNeedData
+ 0001:00199238       fTemplateFields.TfrmTemplateFields.FormClose
+ 0001:00198F7C       fTemplateFields.TfrmTemplateFields.FormCreate
+ 0001:00198F14       fTemplateFields.TfrmTemplateFields.FormShow
+ 0001:0019901C       fTemplateFields.TfrmTemplateFields.InsertField
+ 0001:0019923C       fTemplateFields.TfrmTemplateFields.Setre
+ 0001:00199248       fTemplateFields.TfrmTemplateFields.UpdateStatus
+ 0001:00199288       fTemplateFields.TfrmTemplateFields.ValidInsert
+ 0001:00199318       fTemplateFields.TfrmTemplateFields.ValidPreview
+ 0001:0030DDF0       fTemplateImport..TfrmTemplateImport
+ 0003:00003E6C       fTemplateImport.frmTemplateImport
+ 0001:0030E000       fTemplateImport.StartImportMessage
+ 0001:0030E154       fTemplateImport.StopImportMessage
+ 0001:0030E168       fTemplateImport.TfrmTemplateImport.btnCancelClick
+ 0001:0030E104       fTemplateImport.UpdateImportMessage
+ 0001:001BC6F8       fTemplateObjects..TfrmTemplateObjects
+ 0001:001BCB18       fTemplateObjects.TfrmTemplateObjects.btnCancelClick
+ 0001:001BC9F4       fTemplateObjects.TfrmTemplateObjects.btnInsertClick
+ 0001:001BCB4C       fTemplateObjects.TfrmTemplateObjects.btnRefreshClick
+ 0001:001BCB10       fTemplateObjects.TfrmTemplateObjects.cboObjectsDblClick
+ 0001:001BCB20       fTemplateObjects.TfrmTemplateObjects.FormClose
+ 0001:001BC978       fTemplateObjects.TfrmTemplateObjects.FormShow
+ 0001:001BC9FC       fTemplateObjects.TfrmTemplateObjects.InsertObject
+ 0001:001BCB24       fTemplateObjects.TfrmTemplateObjects.Setre
+ 0001:001BCB30       fTemplateObjects.TfrmTemplateObjects.UpdateStatus
+ 0001:001BCC90       fTemplateView..TfrmTemplateView
+ 0003:00003804       fTemplateView.frmTemplateView
+ 0003:00003808       fTemplateView.LastStayOnTop
+ 0001:001BCF88       fTemplateView.ShowTemplateData
+ 0001:001BD270       fTemplateView.TfrmTemplateView.AlignButtons
+ 0001:001BD114       fTemplateView.TfrmTemplateView.btnCloseClick
+ 0001:001BD1FC       fTemplateView.TfrmTemplateView.btnPrintClick
+ 0001:001BD144       fTemplateView.TfrmTemplateView.cbStayOnTopClick
+ 0001:001BD1E4       fTemplateView.TfrmTemplateView.Copy1Click
+ 0001:001BD11C       fTemplateView.TfrmTemplateView.FormClose
+ 0001:001BD130       fTemplateView.TfrmTemplateView.FormCreate
+ 0001:001BD198       fTemplateView.TfrmTemplateView.FormDestroy
+ 0001:001BD1A0       fTemplateView.TfrmTemplateView.popViewPopup
+ 0001:001BD1F0       fTemplateView.TfrmTemplateView.SelectAll1Click
+ 0001:00129454       fTimeout..TfrmTimeout
+ 0001:00129680       fTimeout.AllowTimeout
+ 0001:00129774       fTimeout.TfrmTimeout.cmdContinueClick
+ 0001:001296F4       fTimeout.TfrmTimeout.FormCreate
+ 0001:00129784       fTimeout.TfrmTimeout.timCountDownTimer
+ 0001:001C923C       fTIUView..TfrmTIUView
+ 0001:001C96A4       fTIUView.SelectTIUView
+ 0001:001CA3EC       fTIUView.TfrmTIUView.cboAuthorNeedData
+ 0001:001CA0B0       fTIUView.TfrmTIUView.cmdCancelClick
+ 0001:001CA414       fTIUView.TfrmTIUView.cmdClearClick
+ 0001:001C9BE8       fTIUView.TfrmTIUView.cmdOKClick
+ 0001:001CA0C0       fTIUView.TfrmTIUView.lstStatusSelect
+ 0004:00004A2C       fVisitType..2
+ 0001:00184F80       fVisitType..TfrmVisitType
+ 0001:00186858       fVisitType.Finalization
+ 0004:00004A28       fVisitType.frmVisitType
+ 0002:000010E8       fVisitType.fVisitType
+ 0001:00185B18       fVisitType.TfrmVisitType.btnAddClick
+ 0001:00185BB0       fVisitType.TfrmVisitType.btnDeleteClick
+ 0001:00185C48       fVisitType.TfrmVisitType.btnPrimaryClick
+ 0001:00185CF8       fVisitType.TfrmVisitType.cboPtProviderChange
+ 0001:00185CF0       fVisitType.TfrmVisitType.cboPtProviderDblClick
+ 0001:00185D00       fVisitType.TfrmVisitType.cboPtProviderNeedData
+ 0001:001864B8       fVisitType.TfrmVisitType.CheckModifiers
+ 0001:00185820       fVisitType.TfrmVisitType.FormCloseQuery
+ 0001:0018593C       fVisitType.TfrmVisitType.FormCreate
+ 0001:00185DAC       fVisitType.TfrmVisitType.FormResize
+ 0001:00186704       fVisitType.TfrmVisitType.lbModsClickCheck
+ 0001:00185D9C       fVisitType.TfrmVisitType.lbProvidersChange
+ 0001:00185DA4       fVisitType.TfrmVisitType.lbProvidersDblClick
+ 0001:0018683C       fVisitType.TfrmVisitType.lbxVisitsClick
+ 0001:00186008       fVisitType.TfrmVisitType.lbxVisitsClickCheck
+ 0001:00185698       fVisitType.TfrmVisitType.lstVTypeSectionClick
+ 0001:001854A0       fVisitType.TfrmVisitType.MatchVType
+ 0001:00186844       fVisitType.TfrmVisitType.memSCDisplayEnter
+ 0001:00185824       fVisitType.TfrmVisitType.RefreshProviders
+ 0001:00186274       fVisitType.TfrmVisitType.ShowModifiers
+ 0001:00185AC0       fVisitType.TfrmVisitType.UpdateProviderButtons
+ 0001:001E5624       fvit..TfrmVit
+ 0004:000059C8       fvit.frmVit
+ 0001:001E65D4       fvit.TfrmVit.AssignVitals
+ 0001:001E6934       fvit.TfrmVit.cboHeightChange
+ 0001:001E6A4C       fvit.TfrmVit.cboHeightExit
+ 0001:001E6CD8       fvit.TfrmVit.cboPainChange
+ 0001:001E6744       fvit.TfrmVit.cboTempChange
+ 0001:001E6988       fvit.TfrmVit.cboTempExit
+ 0001:001E6940       fvit.TfrmVit.cboWeightChange
+ 0001:001E6AC0       fvit.TfrmVit.cboWeightExit
+ 0001:001E6768       fvit.TfrmVit.CheckVitalUnit
+ 0001:001E6B58       fvit.TfrmVit.cmdCancelClick
+ 0001:001E6B60       fvit.TfrmVit.cmdOKClick
+ 0001:001E6CBC       fvit.TfrmVit.FormActivate
+ 0001:001E6B0C       fvit.TfrmVit.FormCreate
+ 0001:001E6B3C       fvit.TfrmVit.FormDestroy
+ 0001:001E5C1C       fvit.TfrmVit.FormKeyPress
+ 0001:001E6C48       fvit.TfrmVit.FormShow
+ 0001:001E6574       fvit.TfrmVit.GetVitHTRate
+ 0001:001E5C6C       fvit.TfrmVit.InitVitalPanel
+ 0001:001E6BE0       fvit.TfrmVit.lbllastClick
+ 0001:001E5F54       fvit.TfrmVit.PopulateLastVital
+ 0001:001E6CE4       fvit.TfrmVit.SetVitPointer
+ 0001:001E694C       fvit.TfrmVit.txtMeasBPExit
+ 0001:001E6DE0       fvit.TfrmVit.txtMeasHtExit
+ 0001:001E6A10       fvit.TfrmVit.txtMeasPulseExit
+ 0001:001E69D4       fvit.TfrmVit.txtMeasRespExit
+ 0001:001E6D94       fvit.TfrmVit.txtMeasTempExit
+ 0001:001E6E54       fvit.TfrmVit.txtMeasWtExit
+ 0003:00003908       fvit.UcboVitChanging
+ 0004:000059CC       fvit.uVitalLocation
+ 0004:000059D8       fvit.uVitalNew
+ 0004:000059D4       fvit.uVitalOld
+ 0001:002DE8E4       fVitals..TfrmVitals
+ 0004:0000620C       fVitals.frmVitals
+ 0001:002DEF5C       fVitals.getVitalsStartDate
+ 0001:002DFD74       fVitals.OkFloatValue
+ 0001:002DEEA4       fVitals.SelectVital
+ 0001:002DF034       fVitals.SelectVitals
+ 0001:002E1438       fVitals.TfrmVitals.BeginEndDates
+ 0001:002E0A14       fVitals.TfrmVitals.btnEnterVitalsClick
+ 0001:002E0924       fVitals.TfrmVitals.chk3DClick
+ 0001:002E0944       fVitals.TfrmVitals.chkValuesClick
+ 0001:002E08A8       fVitals.TfrmVitals.chkZoomClick
+ 0001:002E11AC       fVitals.TfrmVitals.chtChartClickLegend
+ 0001:002E1070       fVitals.TfrmVitals.chtChartClickSeries
+ 0001:002E1184       fVitals.TfrmVitals.chtChartMouseDown
+ 0001:002E0B9C       fVitals.TfrmVitals.chtChartUndoZoom
+ 0001:002DFB30       fVitals.TfrmVitals.FMToDateTime
+ 0001:002DFAB0       fVitals.TfrmVitals.FormCreate
+ 0001:002DFB24       fVitals.TfrmVitals.FormDestroy
+ 0001:002E1694       fVitals.TfrmVitals.FormKeyUp
+ 0001:002E09B4       fVitals.TfrmVitals.FormShow
+ 0001:002E06DC       fVitals.TfrmVitals.GetStartStop
+ 0001:002E07E0       fVitals.TfrmVitals.grdVitalsSelectCell
+ 0001:002DF7CC       fVitals.TfrmVitals.lstDatesClick
+ 0001:002DFD38       fVitals.TfrmVitals.lstVitalsClick
+ 0001:002E09BC       fVitals.TfrmVitals.pnlEnterVitalsResize
+ 0001:002E0BE0       fVitals.TfrmVitals.pop3DClick
+ 0001:002E1288       fVitals.TfrmVitals.popChartPopup
+ 0001:002E0C54       fVitals.TfrmVitals.popCopyClick
+ 0001:002E0C60       fVitals.TfrmVitals.popDetailsClick
+ 0001:002E1374       fVitals.TfrmVitals.popPrintClick
+ 0001:002E0BB0       fVitals.TfrmVitals.popValuesClick
+ 0001:002E0C40       fVitals.TfrmVitals.popZoomBackClick
+ 0001:002E0C10       fVitals.TfrmVitals.popZoomClick
+ 0001:002DF3AC       fVitals.TfrmVitals.VGrid
+ 0001:002DFE98       fVitals.TfrmVitals.WorksheetChart
+ 0004:00006210       fVitals.tmpGrid
+ 0004:00006214       fVitals.uDate1
+ 0004:0000621C       fVitals.uDate2
+ 0001:002DF6B8       fVitals.VitalsGrid
+ 0001:002DF744       fVitals.VitalsMemo
+ 0001:0012F790       fVitalsDate..TfrmVitalsDate
+ 0001:0012F9A0       fVitalsDate.TfrmVitalsDate.btnNowClick
+ 0001:0012F9C0       fVitalsDate.TfrmVitalsDate.FormCreate
+ 0001:0035E41C       fxBroker..TfrmBroker
+ 0001:0035E6CC       fxBroker.ShowBroker
+ 0001:0035EA20       fxBroker.TfrmBroker.btnRLTClick
+ 0001:0035E8C4       fxBroker.TfrmBroker.cmdNextClick
+ 0001:0035E7FC       fxBroker.TfrmBroker.cmdPrevClick
+ 0001:0035E990       fxBroker.TfrmBroker.FormClose
+ 0001:0035E9F0       fxBroker.TfrmBroker.FormCreate
+ 0001:0035EA08       fxBroker.TfrmBroker.FormKeyUp
+ 0001:0035E9E8       fxBroker.TfrmBroker.FormResize
+ 0001:0035EB78       fxLists..TfrmDbgList
+ 0001:0035ED2C       fxLists.DebugListItems
+ 0001:0035EDD4       fxLists.TfrmDbgList.FormKeyUp
+ 0001:0035EDEC       fxServer..TfrmDbgServer
+ 0001:0035F004       fxServer.DebugShowServer
+ 0001:0035F060       fxServer.TfrmDbgServer.FormCreate
+ 0001:0035F074       fxServer.TfrmDbgServer.FormKeyUp
+ 0004:000049B8       GanttCh..2
+ 0001:00143A5C       GanttCh..TGanttSeries
+ 0001:001444B4       GanttCh.Finalization
+ 0002:00000FBC       GanttCh.GanttCh
+ 0001:00143ED0       GanttCh.GanttSampleStr
+ 0001:00143EAC       GanttCh.TGanttSeries.AddGantt
+ 0001:00143E44       GanttCh.TGanttSeries.AddGanttColor
+ 0001:00144464       GanttCh.TGanttSeries.Assign
+ 0001:001444AC       GanttCh.TGanttSeries.CalcHorizMargins
+ 0001:001443D0       GanttCh.TGanttSeries.ClearTempValue
+ 0001:0014410C       GanttCh.TGanttSeries.ClickedPointer
+ 0001:00143CCC       GanttCh.TGanttSeries.Create
+ 0001:00143DE8       GanttCh.TGanttSeries.Destroy
+ 0001:00144374       GanttCh.TGanttSeries.DrawMark
+ 0001:00144168       GanttCh.TGanttSeries.DrawValue
+ 0001:00143F94       GanttCh.TGanttSeries.FillSampleValues
+ 0001:00144434       GanttCh.TGanttSeries.GetEditorClass
+ 0001:001443F8       GanttCh.TGanttSeries.GetStartValues
+ 0001:00144498       GanttCh.TGanttSeries.IsValidSourceOf
+ 0001:001443F0       GanttCh.TGanttSeries.MandatoryValueList
+ 0001:0014433C       GanttCh.TGanttSeries.MaxXValue
+ 0001:00144408       GanttCh.TGanttSeries.PrepareForGallery
+ 0001:00143E38       GanttCh.TGanttSeries.SetConnectingPen
+ 0001:00143E18       GanttCh.TGanttSeries.SetEndValues
+ 0001:00143E28       GanttCh.TGanttSeries.SetNextTask
+ 0001:00144400       GanttCh.TGanttSeries.SetStartValues
+ 0001:0030D188       Gauges..TBltBitmap
+ 0001:0030CDC0       Gauges..TGauge
+ 0001:0030D30C       Gauges.SolveForX
+ 0001:0030D344       Gauges.SolveForY
+ 0001:0030D288       Gauges.TBltBitmap.MakeLike
+ 0001:0030D37C       Gauges.TGauge.Create
+ 0001:0030D41C       Gauges.TGauge.GetPercentDone
+ 0001:0030D440       Gauges.TGauge.Paint
+ 0001:0030D7DC       Gauges.TGauge.PaintAsBar
+ 0001:0030DA44       Gauges.TGauge.PaintAsNeedle
+ 0001:0030D79C       Gauges.TGauge.PaintAsNothing
+ 0001:0030D8DC       Gauges.TGauge.PaintAsPie
+ 0001:0030D63C       Gauges.TGauge.PaintAsText
+ 0001:0030D5E8       Gauges.TGauge.PaintBackground
+ 0001:0030DC2C       Gauges.TGauge.SetBackColor
+ 0001:0030DC04       Gauges.TGauge.SetBorderStyle
+ 0001:0030DC18       Gauges.TGauge.SetForeColor
+ 0001:0030DBDC       Gauges.TGauge.SetGaugeKind
+ 0001:0030DCF0       Gauges.TGauge.SetMaxValue
+ 0001:0030DC40       Gauges.TGauge.SetMinValue
+ 0001:0030DDA0       Gauges.TGauge.SetProgress
+ 0001:0030DBF0       Gauges.TGauge.SetShowText
+ 0004:00003378       Graphics..12
+ 0001:0002D9E0       Graphics..EInvalidGraphic
+ 0001:0002DA3C       Graphics..EInvalidGraphicOperation
+ 0001:0002E870       Graphics..TBitmap
+ 0001:00034724       Graphics..TBitmapCanvas
+ 0001:0002E810       Graphics..TBitmapImage
+ 0001:0002E0A8       Graphics..TBrush
+ 0001:0002EB10       Graphics..TBrushResourceManager
+ 0001:0002E16C       Graphics..TCanvas
+ 0001:00032C54       Graphics..TClipboardFormats
+ 0001:00032940       Graphics..TFileFormatsList
+ 0001:0002DE08       Graphics..TFont
+ 0001:0002E3C8       Graphics..TGraphic
+ 0001:0002DD34       Graphics..TGraphicsObject
+ 0001:0002E9B8       Graphics..TIcon
+ 0001:0002E95C       Graphics..TIconImage
+ 0001:0002E72C       Graphics..TMetafile
+ 0001:0002E5CC       Graphics..TMetafileCanvas
+ 0001:0002E6CC       Graphics..TMetafileImage
+ 0001:00037694       Graphics..TPatternManager
+ 0001:0002DFA8       Graphics..TPen
+ 0001:0002E520       Graphics..TPicture
+ 0001:0002EAA8       Graphics..TResourceManager
+ 0001:0002E66C       Graphics..TSharedImage
+ 0001:00031DBC       Graphics.AdjustColor
+ 0001:000379A0       Graphics.AllocPatternBitmap
+ 0001:00031DC8       Graphics.BetterSize
+ 0003:00001034       Graphics.BitmapCanvasList
+ 0004:00003390       Graphics.BitmapImageLock
+ 0004:000033C8       Graphics.BrushManager
+ 0001:0003159C       Graphics.BytesPerScanline
+ 0001:00031900       Graphics.ByteSwapColors
+ 0004:000033CC       Graphics.CanvasList
+ 0001:0002F640       Graphics.CharsetToIdent
+ 0001:0003239C       Graphics.CheckBool
+ 0001:0002EEA8       Graphics.ClearColor
+ 0003:0000102C       Graphics.ClipboardFormats
+ 0003:00000D9C       Graphics.Colors
+ 0001:0002F438       Graphics.ColorToIdent
+ 0001:0002F404       Graphics.ColorToRGB
+ 0001:00032164       Graphics.ComputeAldusChecksum
+ 0001:00034CB0       Graphics.CopyBitmap
+ 0001:00035378       Graphics.CopyBitmapAsMask
+ 0001:00035314       Graphics.CopyPalette
+ 0004:000033A8       Graphics.CounterLock
+ 0001:00031954       Graphics.CreateSystemPalette
+ 0003:00000D98       Graphics.DDBsOnly
+ 0003:00000FFC       Graphics.DefBrushData
+ 0003:00000D68       Graphics.DefFontData
+ 0003:00000FCC       Graphics.DefPenData
+ 0001:0003486C       Graphics.DeselectBitmap
+ 0003:00001038       Graphics.DIBPalSizes
+ 0001:000333B8       Graphics.DoWrite
+ 0001:000325F8       Graphics.DoWrite
+ 0001:0003141C       Graphics.DupBits
+ 0003:00001030       Graphics.FileFormats
+ 0001:000379D8       Graphics.Finalization
+ 0001:00034C64       Graphics.FixupBitFields
+ 0003:00000F3C       Graphics.FontCharsets
+ 0004:000033C0       Graphics.FontManager
+ 0001:000347C0       Graphics.FreeMemoryContexts
+ 0001:0003140C       Graphics.GDICheck
+ 0001:00031364       Graphics.GDIError
+ 0001:00032E24       Graphics.GetClipboardFormats
+ 0001:000374D0       Graphics.GetDefFontCharSet
+ 0001:00032384       Graphics.GetDIB
+ 0001:000322C8       Graphics.GetDIBSizes
+ 0001:0003157C       Graphics.GetDInColors
+ 0001:00032E04       Graphics.GetFileFormats
+ 0001:0002F660       Graphics.GetFontData
+ 0001:0002EB7C       Graphics.GetHashCode
+ 0001:0002FD3C       Graphics.GetPenData
+ 0002:000002EC       Graphics.Graphics
+ 0001:0002F650       Graphics.IdentToCharset
+ 0001:0002F448       Graphics.IdentToColor
+ 0001:00037514       Graphics.InitDefFontData
+ 0001:0003217C       Graphics.InitializeBitmapInfoHeader
+ 0001:00037498       Graphics.InitScreenLogPixels
+ 0001:0002EA94       Graphics.InternalDeletePalette
+ 0001:000322D0       Graphics.InternalGetDIB
+ 0001:00032260       Graphics.InternalGetDIBSizes
+ 0001:000312EC       Graphics.InvalidBitmap
+ 0001:000312D4       Graphics.InvalidGraphic
+ 0001:000312F8       Graphics.InvalidIcon
+ 0001:00031304       Graphics.InvalidMetafile
+ 0001:000312BC       Graphics.InvalidOperation
+ 0001:0002F908       Graphics.IsDefaultFont
+ 0003:00000FDC       Graphics.LogPenStyles
+ 0001:00031310       Graphics.OutOfResources
+ 0003:00001040       Graphics.Pal16
+ 0001:0002EF18       Graphics.PaletteChanged
+ 0001:00031B04       Graphics.PaletteFromDIBColorTable
+ 0001:00031BA8       Graphics.PaletteToDIBColorTable
+ 0003:0000103C       Graphics.PalSize
+ 0004:000033D0       Graphics.PatternManager
+ 0004:000033C4       Graphics.PenManager
+ 0003:0000100C       Graphics.PenModes
+ 0003:00000FE8       Graphics.PenStyles
+ 0001:00031E58       Graphics.ReadIcon
+ 0001:00031884       Graphics.RGBQuadToTriple
+ 0001:00031848       Graphics.RGBTripleToQuad
+ 0004:0000337C       Graphics.ScreenLogPixels
+ 0004:00003384       Graphics.StockBrush
+ 0004:00003388       Graphics.StockFont
+ 0004:0000338C       Graphics.StockIcon
+ 0004:00003380       Graphics.StockPen
+ 0001:0002F414       Graphics.StringToColor
+ 0004:00003374       Graphics.SystemPalette16
+ 0001:00031A6C       Graphics.SystemPaletteOverride
+ 0001:00035628       Graphics.TBitmap.Assign
+ 0001:00035808       Graphics.TBitmap.Changed
+ 0001:000357E4       Graphics.TBitmap.Changing
+ 0001:00035724       Graphics.TBitmap.CopyImage
+ 0001:00035584       Graphics.TBitmap.Create
+ 0001:000355EC       Graphics.TBitmap.Destroy
+ 0001:00035C94       Graphics.TBitmap.DIBNeeded
+ 0001:00035814       Graphics.TBitmap.Dormant
+ 0001:00035888       Graphics.TBitmap.Draw
+ 0001:00035D08       Graphics.TBitmap.FreeContext
+ 0001:00035AD8       Graphics.TBitmap.FreeImage
+ 0001:00035B58       Graphics.TBitmap.GetCanvas
+ 0001:00035B3C       Graphics.TBitmap.GetEmpty
+ 0001:00035BA0       Graphics.TBitmap.GetHandle
+ 0001:00035BC4       Graphics.TBitmap.GetHandleType
+ 0001:00035BF0       Graphics.TBitmap.GetHeight
+ 0001:00035C00       Graphics.TBitmap.GetMaskHandle
+ 0001:00035C14       Graphics.TBitmap.GetMonochrome
+ 0001:00035C30       Graphics.TBitmap.GetPalette
+ 0001:00035C44       Graphics.TBitmap.GetTransparentColor
+ 0001:00035C8C       Graphics.TBitmap.GetWidth
+ 0001:00035D18       Graphics.TBitmap.HandleNeeded
+ 0001:00035FB4       Graphics.TBitmap.LoadFromClipboardFormat
+ 0001:0003605C       Graphics.TBitmap.LoadFromResourceName
+ 0001:00036038       Graphics.TBitmap.LoadFromStream
+ 0001:00035DB8       Graphics.TBitmap.Mask
+ 0001:00035E9C       Graphics.TBitmap.MaskHandleNeeded
+ 0001:000360BC       Graphics.TBitmap.NewImage
+ 0001:00035EFC       Graphics.TBitmap.PaletteNeeded
+ 0001:000361BC       Graphics.TBitmap.ReadData
+ 0001:000361E4       Graphics.TBitmap.ReadDIB
+ 0001:00036754       Graphics.TBitmap.ReadStream
+ 0001:00036E5C       Graphics.TBitmap.ReleaseHandle
+ 0001:00036E90       Graphics.TBitmap.ReleasePalette
+ 0001:00036EBC       Graphics.TBitmap.SaveToClipboardFormat
+ 0001:00036EB4       Graphics.TBitmap.SaveToStream
+ 0001:000367C4       Graphics.TBitmap.SetHandle
+ 0001:00036888       Graphics.TBitmap.SetHandleType
+ 0001:000369C4       Graphics.TBitmap.SetHeight
+ 0001:000369E0       Graphics.TBitmap.SetMonochrome
+ 0001:00036A5C       Graphics.TBitmap.SetPalette
+ 0001:00036F5C       Graphics.TBitmap.SetSize
+ 0001:00036B30       Graphics.TBitmap.SetTransparentColor
+ 0001:00036B80       Graphics.TBitmap.SetWidth
+ 0001:00036B9C       Graphics.TBitmap.WriteData
+ 0001:00036BA4       Graphics.TBitmap.WriteStream
+ 0001:000348E8       Graphics.TBitmapCanvas.Create
+ 0001:000349F0       Graphics.TBitmapCanvas.CreateHandle
+ 0001:00034924       Graphics.TBitmapCanvas.Destroy
+ 0001:00034950       Graphics.TBitmapCanvas.FreeContext
+ 0001:00034B00       Graphics.TBitmapImage.Destroy
+ 0001:00034B5C       Graphics.TBitmapImage.FreeHandle
+ 0001:000301A4       Graphics.TBrush.Assign
+ 0001:0003013C       Graphics.TBrush.Create
+ 0001:0003017C       Graphics.TBrush.Destroy
+ 0001:000302B8       Graphics.TBrush.GetBitmap
+ 0001:000302E4       Graphics.TBrush.GetColor
+ 0001:0003024C       Graphics.TBrush.GetData
+ 0001:00030320       Graphics.TBrush.GetHandle
+ 0001:00030400       Graphics.TBrush.GetStyle
+ 0001:000302C0       Graphics.TBrush.SetBitmap
+ 0001:000302EC       Graphics.TBrush.SetColor
+ 0001:00030268       Graphics.TBrush.SetData
+ 0001:00030408       Graphics.TBrush.SetStyle
+ 0001:0002EE98       Graphics.TBrushResourceManager.FreeObjects
+ 0001:0003129C       Graphics.TCanvas.BrushChanged
+ 0001:0003055C       Graphics.TCanvas.BrushCopy
+ 0001:00031170       Graphics.TCanvas.Changed
+ 0001:0003115C       Graphics.TCanvas.Changing
+ 0001:00030820       Graphics.TCanvas.CopyRect
+ 0001:0003043C       Graphics.TCanvas.Create
+ 0001:000311E0       Graphics.TCanvas.CreateBrush
+ 0001:00031184       Graphics.TCanvas.CreateFont
+ 0001:0003108C       Graphics.TCanvas.CreateHandle
+ 0001:000311B0       Graphics.TCanvas.CreatePen
+ 0001:0003102C       Graphics.TCanvas.DeselectHandles
+ 0001:00030500       Graphics.TCanvas.Destroy
+ 0001:000308A8       Graphics.TCanvas.Draw
+ 0001:00030954       Graphics.TCanvas.DrawFocusRect
+ 0001:00030988       Graphics.TCanvas.Ellipse
+ 0001:000309D0       Graphics.TCanvas.FillRect
+ 0001:0003125C       Graphics.TCanvas.FontChanged
+ 0001:00030A0C       Graphics.TCanvas.FrameRect
+ 0001:00030C80       Graphics.TCanvas.GetCanvasOrientation
+ 0001:00030FE0       Graphics.TCanvas.GetClipRect
+ 0001:00031008       Graphics.TCanvas.GetHandle
+ 0001:00030F24       Graphics.TCanvas.GetPenPos
+ 0001:00030F6C       Graphics.TCanvas.GetPixel
+ 0001:00030A48       Graphics.TCanvas.LineTo
+ 0001:00030A80       Graphics.TCanvas.Lock
+ 0001:00030AA8       Graphics.TCanvas.MoveTo
+ 0001:0003127C       Graphics.TCanvas.PenChanged
+ 0001:00030AD4       Graphics.TCanvas.Pie
+ 0001:00030B2C       Graphics.TCanvas.Polygon
+ 0001:00030B68       Graphics.TCanvas.Polyline
+ 0001:00030BA4       Graphics.TCanvas.Rectangle
+ 0001:00030BEC       Graphics.TCanvas.Refresh
+ 0001:000310E4       Graphics.TCanvas.RequiredState
+ 0001:00030BF4       Graphics.TCanvas.RoundRect
+ 0001:00030F18       Graphics.TCanvas.SetBrush
+ 0001:00030EFC       Graphics.TCanvas.SetFont
+ 0001:00031090       Graphics.TCanvas.SetHandle
+ 0001:00030F0C       Graphics.TCanvas.SetPen
+ 0001:00030F4C       Graphics.TCanvas.SetPenPos
+ 0001:00030F98       Graphics.TCanvas.SetPixel
+ 0001:00030C44       Graphics.TCanvas.StretchDraw
+ 0001:00030DF4       Graphics.TCanvas.TextExtent
+ 0001:00030E58       Graphics.TCanvas.TextHeight
+ 0001:00030CAC       Graphics.TCanvas.TextOut
+ 0001:00030D48       Graphics.TCanvas.TextRect
+ 0001:00030E3C       Graphics.TCanvas.TextWidth
+ 0001:00030E78       Graphics.TCanvas.TryLock
+ 0001:00030ED4       Graphics.TCanvas.Unlock
+ 0001:00032D60       Graphics.TClipboardFormats.Add
+ 0001:00032CB4       Graphics.TClipboardFormats.Create
+ 0001:00032D34       Graphics.TClipboardFormats.Destroy
+ 0001:00032DC8       Graphics.TClipboardFormats.FindFormat
+ 0001:00032B30       Graphics.TFileFormatsList.Add
+ 0001:000329B0       Graphics.TFileFormatsList.Create
+ 0001:00032AE4       Graphics.TFileFormatsList.Destroy
+ 0001:00032BC4       Graphics.TFileFormatsList.FindClassName
+ 0001:0002F7B8       Graphics.TFont.Assign
+ 0001:0002F79C       Graphics.TFont.Changed
+ 0001:0002F720       Graphics.TFont.Create
+ 0001:0002F774       Graphics.TFont.Destroy
+ 0001:0002FCDC       Graphics.TFont.GetCharset
+ 0001:0002F88C       Graphics.TFont.GetData
+ 0001:0002F934       Graphics.TFont.GetHandle
+ 0001:0002FB94       Graphics.TFont.GetHeight
+ 0001:0002FBC4       Graphics.TFont.GetName
+ 0001:0002FD0C       Graphics.TFont.GetOrientation
+ 0001:0002FCAC       Graphics.TFont.GetPitch
+ 0001:0002FC38       Graphics.TFont.GetSize
+ 0001:0002FC74       Graphics.TFont.GetStyle
+ 0001:0002FCE4       Graphics.TFont.SetCharset
+ 0001:0002F8F4       Graphics.TFont.SetColor
+ 0001:0002F8A4       Graphics.TFont.SetData
+ 0001:0002FB70       Graphics.TFont.SetHandle
+ 0001:0002FB9C       Graphics.TFont.SetHeight
+ 0001:0002FBDC       Graphics.TFont.SetName
+ 0001:0002FD14       Graphics.TFont.SetOrientation
+ 0001:0002FCB4       Graphics.TFont.SetPitch
+ 0001:0002FC54       Graphics.TFont.SetSize
+ 0001:0002FC80       Graphics.TFont.SetStyle
+ 0001:000325E0       Graphics.TGraphic.Changed
+ 0001:000325A8       Graphics.TGraphic.Create
+ 0001:00032650       Graphics.TGraphic.DefineProperties
+ 0001:0003269C       Graphics.TGraphic.Equals
+ 0001:000327E8       Graphics.TGraphic.GetPalette
+ 0001:000327EC       Graphics.TGraphic.GetTransparent
+ 0001:000327F4       Graphics.TGraphic.LoadFromFile
+ 0001:00032848       Graphics.TGraphic.Progress
+ 0001:00032874       Graphics.TGraphic.ReadData
+ 0001:00032880       Graphics.TGraphic.SaveToFile
+ 0001:000328D8       Graphics.TGraphic.SetPalette
+ 0001:000328DC       Graphics.TGraphic.SetSize
+ 0001:000328F8       Graphics.TGraphic.SetTransparent
+ 0001:00032908       Graphics.TGraphic.WriteData
+ 0001:0002F458       Graphics.TGraphicsObject.Changed
+ 0001:0002F46C       Graphics.TGraphicsObject.Lock
+ 0001:0002F47C       Graphics.TGraphicsObject.Unlock
+ 0001:0003708C       Graphics.TIcon.Assign
+ 0001:00037008       Graphics.TIcon.Create
+ 0001:0003705C       Graphics.TIcon.Destroy
+ 0001:000370EC       Graphics.TIcon.Draw
+ 0001:00037130       Graphics.TIcon.GetEmpty
+ 0001:00037148       Graphics.TIcon.GetHandle
+ 0001:0003715C       Graphics.TIcon.GetHeight
+ 0001:00037170       Graphics.TIcon.GetWidth
+ 0001:00037184       Graphics.TIcon.HandleNeeded
+ 0001:000371FC       Graphics.TIcon.ImageNeeded
+ 0001:00037470       Graphics.TIcon.LoadFromClipboardFormat
+ 0001:000372B0       Graphics.TIcon.LoadFromStream
+ 0001:00037368       Graphics.TIcon.NewImage
+ 0001:00037484       Graphics.TIcon.SaveToClipboardFormat
+ 0001:00037448       Graphics.TIcon.SaveToStream
+ 0001:000373DC       Graphics.TIcon.SetHandle
+ 0001:000373F4       Graphics.TIcon.SetHeight
+ 0001:0003740C       Graphics.TIcon.SetSize
+ 0001:0003742C       Graphics.TIcon.SetTransparent
+ 0001:00037430       Graphics.TIcon.SetWidth
+ 0001:00036FC0       Graphics.TIconImage.Destroy
+ 0001:00036FF0       Graphics.TIconImage.FreeHandle
+ 0001:000338AC       Graphics.TMetafile.Assign
+ 0001:00033834       Graphics.TMetafile.Create
+ 0001:0003387C       Graphics.TMetafile.Destroy
+ 0001:00033940       Graphics.TMetafile.Draw
+ 0001:000339D0       Graphics.TMetafile.GetAuthor
+ 0001:00033A38       Graphics.TMetafile.GetDesc
+ 0001:00033AB8       Graphics.TMetafile.GetEmpty
+ 0001:00033AC0       Graphics.TMetafile.GetHandle
+ 0001:00033AD0       Graphics.TMetafile.GetHeight
+ 0001:00033B34       Graphics.TMetafile.GetMMHeight
+ 0001:00033B4C       Graphics.TMetafile.GetMMWidth
+ 0001:00033B64       Graphics.TMetafile.GetPalette
+ 0001:00033BF0       Graphics.TMetafile.GetWidth
+ 0001:0003459C       Graphics.TMetafile.LoadFromClipboardFormat
+ 0001:00033C54       Graphics.TMetafile.LoadFromStream
+ 0001:00033CA8       Graphics.TMetafile.NewImage
+ 0001:00033CD0       Graphics.TMetafile.ReadData
+ 0001:00033D3C       Graphics.TMetafile.ReadEMFStream
+ 0001:00033E0C       Graphics.TMetafile.ReadWMFStream
+ 0001:00034654       Graphics.TMetafile.ReleaseHandle
+ 0001:00034620       Graphics.TMetafile.SaveToClipboardFormat
+ 0001:00033F8C       Graphics.TMetafile.SaveToFile
+ 0001:00034054       Graphics.TMetafile.SaveToStream
+ 0001:00034070       Graphics.TMetafile.SetHandle
+ 0001:00034100       Graphics.TMetafile.SetHeight
+ 0001:00034174       Graphics.TMetafile.SetMMHeight
+ 0001:000341B0       Graphics.TMetafile.SetMMWidth
+ 0001:00034670       Graphics.TMetafile.SetSize
+ 0001:000341EC       Graphics.TMetafile.SetTransparent
+ 0001:000341F0       Graphics.TMetafile.SetWidth
+ 0001:00034264       Graphics.TMetafile.TestEMF
+ 0001:000342C4       Graphics.TMetafile.UniqueImage
+ 0001:00034348       Graphics.TMetafile.WriteData
+ 0001:000343C8       Graphics.TMetafile.WriteEMFStream
+ 0001:00034454       Graphics.TMetafile.WriteWMFStream
+ 0001:000334F0       Graphics.TMetafileCanvas.Create
+ 0001:00033588       Graphics.TMetafileCanvas.CreateWithComment
+ 0001:000337E8       Graphics.TMetafileCanvas.Destroy
+ 0001:000334B0       Graphics.TMetafileImage.Destroy
+ 0001:000334EC       Graphics.TMetafileImage.FreeHandle
+ 0001:0003776C       Graphics.TPatternManager.AllocPattern
+ 0001:000376F0       Graphics.TPatternManager.Create
+ 0001:00037820       Graphics.TPatternManager.CreateBitmap
+ 0001:00037728       Graphics.TPatternManager.Destroy
+ 0001:00037920       Graphics.TPatternManager.FreePatterns
+ 0001:00037754       Graphics.TPatternManager.Lock
+ 0001:00037760       Graphics.TPatternManager.Unlock
+ 0001:0002FEB8       Graphics.TPen.Assign
+ 0001:0002FE4C       Graphics.TPen.Create
+ 0001:0002FE90       Graphics.TPen.Destroy
+ 0001:0002FFD8       Graphics.TPen.GetColor
+ 0001:0002FF70       Graphics.TPen.GetData
+ 0001:00030008       Graphics.TPen.GetHandle
+ 0001:000300D8       Graphics.TPen.GetStyle
+ 0001:00030108       Graphics.TPen.GetWidth
+ 0001:0002FFE0       Graphics.TPen.SetColor
+ 0001:0002FF88       Graphics.TPen.SetData
+ 0001:000300A0       Graphics.TPen.SetHandle
+ 0001:000300C4       Graphics.TPen.SetMode
+ 0001:000300E0       Graphics.TPen.SetStyle
+ 0001:00030110       Graphics.TPen.SetWidth
+ 0001:0003317C       Graphics.TPicture.Assign
+ 0001:00032EB4       Graphics.TPicture.AssignTo
+ 0001:000331FC       Graphics.TPicture.Changed
+ 0001:00032E44       Graphics.TPicture.Create
+ 0001:00033434       Graphics.TPicture.DefineProperties
+ 0001:00032E84       Graphics.TPicture.Destroy
+ 0001:00032EE8       Graphics.TPicture.ForceType
+ 0001:00032F4C       Graphics.TPicture.GetBitmap
+ 0001:00033498       Graphics.TPicture.GetHeight
+ 0001:00032F64       Graphics.TPicture.GetIcon
+ 0001:00032F7C       Graphics.TPicture.GetMetafile
+ 0001:00033480       Graphics.TPicture.GetWidth
+ 0001:00033044       Graphics.TPicture.LoadFromClipboardFormat
+ 0001:0003314C       Graphics.TPicture.LoadFromStream
+ 0001:00033220       Graphics.TPicture.Progress
+ 0001:0003324C       Graphics.TPicture.ReadData
+ 0001:000331D8       Graphics.TPicture.RegisterFileFormat
+ 0001:00033108       Graphics.TPicture.SaveToClipboardFormat
+ 0001:00033164       Graphics.TPicture.SaveToStream
+ 0001:00032F94       Graphics.TPicture.SetGraphic
+ 0001:00033134       Graphics.TPicture.SupportsClipboardFormat
+ 0001:00033360       Graphics.TPicture.WriteData
+ 0001:000315BC       Graphics.TransparentStretchBlt
+ 0001:0002EC08       Graphics.TResourceManager.AllocResource
+ 0001:0002EE2C       Graphics.TResourceManager.AssignResource
+ 0001:0002EDB0       Graphics.TResourceManager.ChangeResource
+ 0001:0002EB90       Graphics.TResourceManager.Create
+ 0001:0002EBCC       Graphics.TResourceManager.Destroy
+ 0001:0002EE28       Graphics.TResourceManager.FreeObjects
+ 0001:0002ECEC       Graphics.TResourceManager.FreeResource
+ 0001:0002EBF0       Graphics.TResourceManager.Lock
+ 0001:0002EBFC       Graphics.TResourceManager.Unlock
+ 0001:00034ADC       Graphics.TSharedImage.Reference
+ 0001:00034AE0       Graphics.TSharedImage.Release
+ 0001:00031BFC       Graphics.TwoBitsFromDIB
+ 0001:00034BA8       Graphics.UpdateDIBColorTable
+ 0001:00032398       Graphics.WinError
+ 0001:000323A8       Graphics.WriteIcon
+ 0004:000034A4       GraphUtil..2
+ 0003:00001674       GraphUtil.ArrowPts
+ 0005:0000003C       GraphUtil.CachedColorAdjustLuma
+ 0005:00000034       GraphUtil.CachedColorValue
+ 0005:00000024       GraphUtil.CachedHighlight
+ 0005:00000020       GraphUtil.CachedHighlightColor
+ 0005:0000001C       GraphUtil.CachedHighlightLum
+ 0005:00000038       GraphUtil.CachedLumValue
+ 0005:00000010       GraphUtil.CachedRGBToHLSclrRGB
+ 0005:00000014       GraphUtil.CachedRGBToHLSHue
+ 0005:00000016       GraphUtil.CachedRGBToHLSLum
+ 0005:00000018       GraphUtil.CachedRGBToHLSSat
+ 0005:00000030       GraphUtil.CachedShadow
+ 0005:0000002C       GraphUtil.CachedShadowColor
+ 0005:00000028       GraphUtil.CachedShadowLum
+ 0003:000016D4       GraphUtil.cGradientDirections
+ 0001:000499FC       GraphUtil.ColorAdjustLuma
+ 0001:000497D8       GraphUtil.ColorHLSToRGB
+ 0001:0004939C       GraphUtil.ColorRGBToHLS
+ 0001:00049B48       GraphUtil.DrawArrow
+ 0001:00049CE4       GraphUtil.Finalization
+ 0001:00049A88       GraphUtil.GetShadowColor
+ 0001:00049C14       GraphUtil.GradientFillCanvas
+ 0002:0000040C       GraphUtil.GraphUtil
+ 0001:000496BC       GraphUtil.HueToRGB
+ 0001:000497AC       GraphUtil.RoundColor
+ 0003:00001224       GraphUtil.WebNamedColors
+ 0001:000D7278       Grids..EInvalidGridOperation
+ 0001:000D7ABC       Grids..TCustomDrawGrid
+ 0001:000D76E8       Grids..TCustomGrid
+ 0001:000D7C60       Grids..TDrawGrid
+ 0001:000D72DC       Grids..TInplaceEdit
+ 0001:000DF3E4       Grids..TSparseList
+ 0001:000DF384       Grids..TSparsePointerArray
+ 0001:000D88EC       Grids..TStringGrid
+ 0001:000D87E0       Grids..TStringGridStrings
+ 0001:000DF43C       Grids..TStringSparseList
+ 0001:000E00A8       Grids.BlankStr
+ 0001:000D8B80       Grids.Build
+ 0001:000DBD44       Grids.CalcAxis
+ 0001:000DB01C       Grids.CalcAxis
+ 0001:000DB260       Grids.CalcAxisState
+ 0001:000DB0A8       Grids.CalcFixedAxis
+ 0001:000DB1BC       Grids.CalcMaxCell
+ 0001:000DD188       Grids.CalcPageExtents
+ 0001:000DCA78       Grids.CalcScroll
+ 0001:000DC0E0       Grids.CalcScrollBar
+ 0001:000DCDE0       Grids.CalcSizeInfo
+ 0001:000D9158       Grids.CaretPos
+ 0001:000DFE50       Grids.ClearItem
+ 0001:000D8EF0       Grids.CompareExtents
+ 0001:000DFC30       Grids.CountItem
+ 0001:000D9124       Grids.Ctrl
+ 0001:000DF7EC       Grids.Detector
+ 0001:000DF378       Grids.DisposeStrItem
+ 0001:000DAEB4       Grids.DoCalc
+ 0001:000DAF1C       Grids.DoCalcRightToLeft
+ 0001:000DB6A0       Grids.DoChange
+ 0001:000D9FC8       Grids.DoColWidths
+ 0001:000DA00C       Grids.DoRowHeights
+ 0001:000D9A70       Grids.DoSizeAdjust
+ 0001:000DCD4C       Grids.DoUpdate
+ 0001:000DA3B4       Grids.DrawAxisLines
+ 0001:000DA62C       Grids.DrawCells
+ 0001:000DA59C       Grids.DrawLines
+ 0001:000DF548       Grids.ExpandDir
+ 0001:000DA360       Grids.FillDWord
+ 0001:000D9108       Grids.ForwardMovement
+ 0001:000E031C       Grids.FreeItem
+ 0001:000D8A94       Grids.GridRect
+ 0001:000D8B34       Grids.Includes
+ 0001:000D8A7C       Grids.InvalidOp
+ 0001:000D91EC       Grids.LeftSide
+ 0001:000DBCE8       Grids.LinePos
+ 0001:000D8F24       Grids.LongMulDiv
+ 0001:000DF588       Grids.MakeSec
+ 0001:000DC010       Grids.Max
+ 0001:000DBFE8       Grids.Min
+ 0001:000DB638       Grids.MinRedraw
+ 0001:000D8D88       Grids.ModifyExtents
+ 0001:000DC218       Grids.ModifyPixelScrollBar
+ 0001:000E03BC       Grids.MoveColData
+ 0001:000D8E94       Grids.MoveExtent
+ 0001:000DF34C       Grids.NewStrItem
+ 0001:000DC08C       Grids.PageDown
+ 0001:000DC02C       Grids.PageUp
+ 0001:000D90C0       Grids.ParentEvent
+ 0001:000D8AFC       Grids.PointInGridRect
+ 0001:000D8B18       Grids.PtInRect
+ 0001:000DDC20       Grids.ResizeLine
+ 0001:000DD1F4       Grids.Restrict
+ 0001:000D9194       Grids.RightSide
+ 0001:000DCD70       Grids.ScrollBarVisible
+ 0001:000D9134       Grids.Selection
+ 0001:000D908C       Grids.SendToParent
+ 0001:000DCE58       Grids.SetAxisRange
+ 0001:000DCED4       Grids.SetHorzRange
+ 0001:000DCB7C       Grids.SetScroll
+ 0001:000DCF68       Grids.SetVertRange
+ 0003:00002654       Grids.SPAIndexMask
+ 0003:00002658       Grids.SPASecShift
+ 0001:000DA36C       Grids.StackAlloc
+ 0001:000DA39C       Grids.StackFree
+ 0001:000DFC40       Grids.StoreItem
+ 0001:000DF0F0       Grids.TCustomDrawGrid.CellRect
+ 0001:000DF14C       Grids.TCustomDrawGrid.ColumnMoved
+ 0001:000DF268       Grids.TCustomDrawGrid.DrawCell
+ 0001:000DF16C       Grids.TCustomDrawGrid.GetEditMask
+ 0001:000DF1AC       Grids.TCustomDrawGrid.GetEditText
+ 0001:000DF114       Grids.TCustomDrawGrid.MouseToCell
+ 0001:000DF1EC       Grids.TCustomDrawGrid.RowMoved
+ 0001:000DF20C       Grids.TCustomDrawGrid.SelectCell
+ 0001:000DF23C       Grids.TCustomDrawGrid.SetEditText
+ 0001:000DF308       Grids.TCustomDrawGrid.TopLeftChanged
+ 0001:000D9B90       Grids.TCustomGrid.AdjustSize
+ 0001:000DF0A4       Grids.TCustomGrid.BeginColumnDrag
+ 0001:000DF0B0       Grids.TCustomGrid.BeginRowDrag
+ 0001:000D9CF4       Grids.TCustomGrid.BoxRect
+ 0001:000DAF9C       Grids.TCustomGrid.CalcCoordFromPoint
+ 0001:000DAFF8       Grids.TCustomGrid.CalcDrawInfo
+ 0001:000DB07C       Grids.TCustomGrid.CalcDrawInfoXY
+ 0001:000DB138       Grids.TCustomGrid.CalcFixedInfo
+ 0001:000DB230       Grids.TCustomGrid.CalcMaxTopLeft
+ 0001:000DB410       Grids.TCustomGrid.CalcSizingState
+ 0001:000DEBE0       Grids.TCustomGrid.CancelMode
+ 0001:000D9D68       Grids.TCustomGrid.CanEditAcceptKey
+ 0001:000D9D70       Grids.TCustomGrid.CanEditModify
+ 0001:000D9D78       Grids.TCustomGrid.CanEditShow
+ 0001:000D9D6C       Grids.TCustomGrid.CanGridAcceptKey
+ 0001:000D9D44       Grids.TCustomGrid.CellRect
+ 0001:000DB4E4       Grids.TCustomGrid.ChangeGridOrientation
+ 0001:000DB848       Grids.TCustomGrid.ChangeSize
+ 0001:000DF08C       Grids.TCustomGrid.CheckColumnDrag
+ 0001:000DF098       Grids.TCustomGrid.CheckRowDrag
+ 0001:000DB920       Grids.TCustomGrid.ClampInView
+ 0001:000DEC8C       Grids.TCustomGrid.CMCancelMode
+ 0001:000DECDC       Grids.TCustomGrid.CMCtl3DChanged
+ 0001:000DECF0       Grids.TCustomGrid.CMDesignHitTest
+ 0001:000DECB8       Grids.TCustomGrid.CMFontChanged
+ 0001:000DF0D4       Grids.TCustomGrid.CMShowingChanged
+ 0001:000DED10       Grids.TCustomGrid.CMWantSpecialKey
+ 0001:000DA1C8       Grids.TCustomGrid.ColumnMoved
+ 0001:000DEF48       Grids.TCustomGrid.ColWidthsChanged
+ 0001:000D98CC       Grids.TCustomGrid.Create
+ 0001:000DD0F8       Grids.TCustomGrid.CreateEditor
+ 0001:000DD108       Grids.TCustomGrid.CreateParams
+ 0001:000DA050       Grids.TCustomGrid.DefineProperties
+ 0001:000DEF70       Grids.TCustomGrid.DeleteColumn
+ 0001:000DEF94       Grids.TCustomGrid.DeleteRow
+ 0001:000D9A1C       Grids.TCustomGrid.Destroy
+ 0001:000D9D28       Grids.TCustomGrid.DoExit
+ 0001:000DEFF8       Grids.TCustomGrid.DoMouseWheelDown
+ 0001:000DF044       Grids.TCustomGrid.DoMouseWheelUp
+ 0001:000DBB28       Grids.TCustomGrid.DrawMove
+ 0001:000DB9E8       Grids.TCustomGrid.DrawSizingLine
+ 0001:000DF0BC       Grids.TCustomGrid.EndColumnDrag
+ 0001:000DF0C8       Grids.TCustomGrid.EndRowDrag
+ 0001:000DBCB8       Grids.TCustomGrid.FocusCell
+ 0001:000DE090       Grids.TCustomGrid.GetColWidths
+ 0001:000D9E50       Grids.TCustomGrid.GetEditLimit
+ 0001:000D9E28       Grids.TCustomGrid.GetEditMask
+ 0001:000D9E54       Grids.TCustomGrid.GetEditStyle
+ 0001:000D9E38       Grids.TCustomGrid.GetEditText
+ 0001:000DE0B0       Grids.TCustomGrid.GetRowHeights
+ 0001:000DE0D0       Grids.TCustomGrid.GetSelection
+ 0001:000DE0EC       Grids.TCustomGrid.GetTabStops
+ 0001:000DE100       Grids.TCustomGrid.GetVisibleColCount
+ 0001:000DE120       Grids.TCustomGrid.GetVisibleRowCount
+ 0001:000DBE20       Grids.TCustomGrid.GridRectToScreenRect
+ 0001:000DE6F0       Grids.TCustomGrid.HideEdit
+ 0001:000D9E58       Grids.TCustomGrid.HideEditor
+ 0001:000DBF10       Grids.TCustomGrid.Initialize
+ 0001:000DBF70       Grids.TCustomGrid.InvalidateCell
+ 0001:000D9EAC       Grids.TCustomGrid.InvalidateEditor
+ 0001:000DBF94       Grids.TCustomGrid.InvalidateGrid
+ 0001:000DBFA0       Grids.TCustomGrid.InvalidateRect
+ 0001:000D9DD4       Grids.TCustomGrid.IsActiveControl
+ 0001:000DD234       Grids.TCustomGrid.KeyDown
+ 0001:000DD6AC       Grids.TCustomGrid.KeyPress
+ 0001:000DC3C4       Grids.TCustomGrid.ModifyScrollBar
+ 0001:000DA254       Grids.TCustomGrid.MouseCoord
+ 0001:000DD6E8       Grids.TCustomGrid.MouseDown
+ 0001:000DDAB8       Grids.TCustomGrid.MouseMove
+ 0001:000DDC78       Grids.TCustomGrid.MouseUp
+ 0001:000DC5AC       Grids.TCustomGrid.MoveAdjust
+ 0001:000DC5E0       Grids.TCustomGrid.MoveAnchor
+ 0001:000DDF18       Grids.TCustomGrid.MoveAndScroll
+ 0001:000DA2A8       Grids.TCustomGrid.MoveColRow
+ 0001:000DA0F4       Grids.TCustomGrid.MoveColumn
+ 0001:000DC668       Grids.TCustomGrid.MoveCurrent
+ 0001:000DA1CC       Grids.TCustomGrid.MoveRow
+ 0001:000DC7C0       Grids.TCustomGrid.MoveTopLeft
+ 0001:000DA988       Grids.TCustomGrid.Paint
+ 0001:000D9EC8       Grids.TCustomGrid.ReadColWidths
+ 0001:000D9F08       Grids.TCustomGrid.ReadRowHeights
+ 0001:000DC814       Grids.TCustomGrid.ResizeCol
+ 0001:000DC820       Grids.TCustomGrid.ResizeRow
+ 0001:000DEF5C       Grids.TCustomGrid.RowHeightsChanged
+ 0001:000DA250       Grids.TCustomGrid.RowMoved
+ 0001:000DCA50       Grids.TCustomGrid.ScrollData
+ 0001:000DC8A4       Grids.TCustomGrid.ScrollDataInfo
+ 0001:000DA2C0       Grids.TCustomGrid.SelectCell
+ 0001:000DC82C       Grids.TCustomGrid.SelectionMoved
+ 0001:000DE140       Grids.TCustomGrid.SetBorderStyle
+ 0001:000DE154       Grids.TCustomGrid.SetCol
+ 0001:000DE16C       Grids.TCustomGrid.SetColCount
+ 0001:000DE1C8       Grids.TCustomGrid.SetColWidths
+ 0001:000DE274       Grids.TCustomGrid.SetDefaultColWidth
+ 0001:000DE2B0       Grids.TCustomGrid.SetDefaultRowHeight
+ 0001:000DE430       Grids.TCustomGrid.SetEditorMode
+ 0001:000D9E48       Grids.TCustomGrid.SetEditText
+ 0001:000DE2EC       Grids.TCustomGrid.SetFixedColor
+ 0001:000DE300       Grids.TCustomGrid.SetFixedCols
+ 0001:000DE398       Grids.TCustomGrid.SetFixedRows
+ 0001:000DE458       Grids.TCustomGrid.SetGridLineWidth
+ 0001:000DE46C       Grids.TCustomGrid.SetOptions
+ 0001:000DE4E4       Grids.TCustomGrid.SetRow
+ 0001:000DE4FC       Grids.TCustomGrid.SetRowCount
+ 0001:000DE538       Grids.TCustomGrid.SetRowHeights
+ 0001:000DE5E4       Grids.TCustomGrid.SetScrollBars
+ 0001:000DE5F8       Grids.TCustomGrid.SetSelection
+ 0001:000DE650       Grids.TCustomGrid.SetTabStops
+ 0001:000DE6D8       Grids.TCustomGrid.SetTopRow
+ 0001:000D9E68       Grids.TCustomGrid.ShowEditor
+ 0001:000D9E78       Grids.TCustomGrid.ShowEditorChar
+ 0001:000DA2C4       Grids.TCustomGrid.SizeChanged
+ 0001:000DA2C8       Grids.TCustomGrid.Sizing
+ 0001:000DED38       Grids.TCustomGrid.TimedScroll
+ 0001:000DA320       Grids.TCustomGrid.TopLeftChanged
+ 0001:000DCAFC       Grids.TCustomGrid.TopLeftMoved
+ 0001:000DEFB8       Grids.TCustomGrid.UpdateDesigner
+ 0001:000DE7CC       Grids.TCustomGrid.UpdateEdit
+ 0001:000DCBFC       Grids.TCustomGrid.UpdateScrollPos
+ 0001:000DCFAC       Grids.TCustomGrid.UpdateScrollRange
+ 0001:000DE8AC       Grids.TCustomGrid.UpdateText
+ 0001:000DEC78       Grids.TCustomGrid.WMCancelMode
+ 0001:000DE920       Grids.TCustomGrid.WMChar
+ 0001:000DE94C       Grids.TCustomGrid.WMCommand
+ 0001:000DE980       Grids.TCustomGrid.WMGetDlgCode
+ 0001:000DEBCC       Grids.TCustomGrid.WMHScroll
+ 0001:000DE9B0       Grids.TCustomGrid.WMKillFocus
+ 0001:000DEA00       Grids.TCustomGrid.WMLButtonDown
+ 0001:000DEA28       Grids.TCustomGrid.WMNCHitTest
+ 0001:000DEA7C       Grids.TCustomGrid.WMSetCursor
+ 0001:000DEB28       Grids.TCustomGrid.WMSetFocus
+ 0001:000DEB84       Grids.TCustomGrid.WMSize
+ 0001:000DEDEC       Grids.TCustomGrid.WMTimer
+ 0001:000DEBB4       Grids.TCustomGrid.WMVScroll
+ 0001:000D9F48       Grids.TCustomGrid.WriteColWidths
+ 0001:000D9F88       Grids.TCustomGrid.WriteRowHeights
+ 0001:000D97A8       Grids.TInplaceEdit.BoundsChanged
+ 0001:000D8FA4       Grids.TInplaceEdit.CMShowingChanged
+ 0001:000D8F2C       Grids.TInplaceEdit.Create
+ 0001:000D8F8C       Grids.TInplaceEdit.CreateParams
+ 0001:000D9030       Grids.TInplaceEdit.DblClick
+ 0001:000D95EC       Grids.TInplaceEdit.Deselect
+ 0001:000D9044       Grids.TInplaceEdit.DoMouseWheel
+ 0001:000D9078       Grids.TInplaceEdit.EditCanModify
+ 0001:000D9690       Grids.TInplaceEdit.Hide
+ 0001:000D96F8       Grids.TInplaceEdit.InternalMove
+ 0001:000D960C       Grids.TInplaceEdit.Invalidate
+ 0001:000D9238       Grids.TInplaceEdit.KeyDown
+ 0001:000D946C       Grids.TInplaceEdit.KeyPress
+ 0001:000D9554       Grids.TInplaceEdit.KeyUp
+ 0001:000D9808       Grids.TInplaceEdit.Move
+ 0001:000D8F9C       Grids.TInplaceEdit.SetGrid
+ 0001:000D9810       Grids.TInplaceEdit.UpdateContents
+ 0001:000D9800       Grids.TInplaceEdit.UpdateLoc
+ 0001:000D8FF0       Grids.TInplaceEdit.WMClear
+ 0001:000D9010       Grids.TInplaceEdit.WMCut
+ 0001:000D8FA8       Grids.TInplaceEdit.WMGetDlgCode
+ 0001:000D8FD0       Grids.TInplaceEdit.WMPaste
+ 0001:000D9570       Grids.TInplaceEdit.WndProc
+ 0001:000DF8A0       Grids.TSparseList.Clear
+ 0001:000DF840       Grids.TSparseList.Create
+ 0001:000DF8C0       Grids.TSparseList.Delete
+ 0001:000DF878       Grids.TSparseList.Destroy
+ 0001:000DF90C       Grids.TSparseList.Exchange
+ 0001:000DF948       Grids.TSparseList.ForAll
+ 0001:000DF954       Grids.TSparseList.Get
+ 0001:000DF9C0       Grids.TSparseList.Insert
+ 0001:000DFA64       Grids.TSparseList.Move
+ 0001:000DFA98       Grids.TSparseList.NewList
+ 0001:000DFAB8       Grids.TSparseList.Put
+ 0001:000DF5B0       Grids.TSparsePointerArray.Create
+ 0001:000DF614       Grids.TSparsePointerArray.Destroy
+ 0001:000DF760       Grids.TSparsePointerArray.ForAll
+ 0001:000DF674       Grids.TSparsePointerArray.GetAt
+ 0001:000DF6C0       Grids.TSparsePointerArray.MakeAt
+ 0001:000DF72C       Grids.TSparsePointerArray.PutAt
+ 0001:000DF814       Grids.TSparsePointerArray.ResetHighBound
+ 0001:000E03D8       Grids.TStringGrid.ColumnMoved
+ 0001:000E02E0       Grids.TStringGrid.Create
+ 0001:000E0328       Grids.TStringGrid.Destroy
+ 0001:000E05EC       Grids.TStringGrid.DisableEditUpdate
+ 0001:000E054C       Grids.TStringGrid.DrawCell
+ 0001:000E05F4       Grids.TStringGrid.EnableEditUpdate
+ 0001:000E06F4       Grids.TStringGrid.EnsureColRow
+ 0001:000E0758       Grids.TStringGrid.EnsureDataRow
+ 0001:000E07AC       Grids.TStringGrid.GetCells
+ 0001:000E0448       Grids.TStringGrid.GetEditText
+ 0001:000E07F0       Grids.TStringGrid.GetObjects
+ 0001:000E081C       Grids.TStringGrid.GetRows
+ 0001:000E05FC       Grids.TStringGrid.Initialize
+ 0001:000E0414       Grids.TStringGrid.RowMoved
+ 0001:000E0824       Grids.TStringGrid.SetCells
+ 0001:000E048C       Grids.TStringGrid.SetEditText
+ 0001:000E0874       Grids.TStringGrid.SetObjects
+ 0001:000E08C4       Grids.TStringGrid.SetRows
+ 0001:000E0680       Grids.TStringGrid.SetUpdateState
+ 0001:000E06A8       Grids.TStringGrid.Update
+ 0001:000E0000       Grids.TStringGridStrings.Add
+ 0001:000DFEC8       Grids.TStringGridStrings.Assign
+ 0001:000DFFC0       Grids.TStringGridStrings.CalcXY
+ 0001:000E00D4       Grids.TStringGridStrings.Clear
+ 0001:000DFE80       Grids.TStringGridStrings.Create
+ 0001:000E0148       Grids.TStringGridStrings.Delete
+ 0001:000E0190       Grids.TStringGridStrings.Get
+ 0001:000E01D0       Grids.TStringGridStrings.GetCount
+ 0001:000E01F4       Grids.TStringGridStrings.GetObject
+ 0001:000E0228       Grids.TStringGridStrings.Insert
+ 0001:000E0274       Grids.TStringGridStrings.Put
+ 0001:000E02A4       Grids.TStringGridStrings.PutObject
+ 0001:000E02D4       Grids.TStringGridStrings.SetUpdateState
+ 0001:000DFDD4       Grids.TStringSparseList.Changed
+ 0001:000DFE5C       Grids.TStringSparseList.Clear
+ 0001:000DFB30       Grids.TStringSparseList.Create
+ 0001:000DFCA4       Grids.TStringSparseList.DefineProperties
+ 0001:000DFDE8       Grids.TStringSparseList.Delete
+ 0001:000DFB84       Grids.TStringSparseList.Destroy
+ 0001:000DFE18       Grids.TStringSparseList.Exchange
+ 0001:000DFCD4       Grids.TStringSparseList.Get
+ 0001:000DFD04       Grids.TStringSparseList.GetCount
+ 0001:000DFD0C       Grids.TStringSparseList.GetObject
+ 0001:000DFE24       Grids.TStringSparseList.Insert
+ 0001:000DFD2C       Grids.TStringSparseList.Put
+ 0001:000DFD94       Grids.TStringSparseList.PutObject
+ 0001:000DFBB4       Grids.TStringSparseList.ReadData
+ 0001:000DFC68       Grids.TStringSparseList.WriteData
+ 0001:000DE75C       Grids.UpdateEditor
+ 0001:000D8E78       Grids.UpdateExtents
+ 0001:000D8BF8       Grids.XorRects
+ 0001:000DB378       Grids.XOutsideHorzFixedBoundary
+ 0001:000DB3C4       Grids.XOutsideOrEqualHorzFixedBoundary
+ 0004:00003804       Hash..2
+ 0003:0000314C       Hash.CipherPad
+ 0001:0010E598       Hash.Encrypt
+ 0001:0010E650       Hash.Finalization
+ 0002:00000D68       Hash.Hash
+ 0004:00003328       HelpIntfs..2
+ 0001:0002B148       HelpIntfs..EHelpSystemException
+ 0001:0002B2D4       HelpIntfs..THelpManager
+ 0001:0002B994       HelpIntfs.DefaultContextHelp
+ 0001:0002B370       HelpIntfs.EnsureHelpManager
+ 0001:0002C0E4       HelpIntfs.Finalization
+ 0001:0002B38C       HelpIntfs.GetHelpSystem
+ 0002:000002C4       HelpIntfs.HelpIntfs
+ 0004:0000332C       HelpIntfs.HelpManager
+ 0001:0002BDB8       HelpIntfs.THelpManager.AssignHelpSelector
+ 0001:0002B658       HelpIntfs.THelpManager.CallSpecialWinHelp
+ 0001:0002B3D4       HelpIntfs.THelpManager.Create
+ 0001:0002C080       HelpIntfs.THelpManager.Destroy
+ 0001:0002B488       HelpIntfs.THelpManager.DoSoftShutDown
+ 0001:0002B4B8       HelpIntfs.THelpManager.DoTableOfContents
+ 0001:0002BFDC       HelpIntfs.THelpManager.GetHandle
+ 0001:0002BFE0       HelpIntfs.THelpManager.GetHelpFile
+ 0001:0002BE14       HelpIntfs.THelpManager.Hook
+ 0001:0002BFF4       HelpIntfs.THelpManager.Release
+ 0001:0002BA28       HelpIntfs.THelpManager.ShowContextHelp
+ 0001:0002B760       HelpIntfs.THelpManager.ShowHelp
+ 0001:0002BCD0       HelpIntfs.THelpManager.ShowTableOfContents
+ 0001:0002BCD8       HelpIntfs.THelpManager.ShowTopicHelp
+ 0001:0002BED0       HelpIntfs.THelpManager.UnderstandsKeyword
+ 0001:0002B448       HelpIntfs.THelpManager.UnloadAllViewers
+ 0004:00005F6C       IdGlobal..21
+ 0001:00274890       IdGlobal.AnsiPos
+ 0001:002748A0       IdGlobal.Finalization
+ 0004:00005F70       IdGlobal.GIdPorts
+ 0002:00001688       IdGlobal.IdGlobal
+ 0003:000039D8       IdGlobal.IndyPos
+ 0001:00274878       IdGlobal.IsNumeric
+ 0001:00274888       IdGlobal.SBPos
+ 0001:002745A8       IdSysBase..TIdSysBase
+ 0001:002747B8       IdSysNativeVCL..TIdSysNativeVCL
+ 0001:00274814       IdSysNativeVCL.TIdSysNativeVCL.AnsiPos
+ 0004:00005F68       IdSysVCL..2
+ 0001:00274600       IdSysVCL..TIdSysVCL
+ 0001:0027475C       IdSysVCL.Finalization
+ 0002:00001680       IdSysVCL.IdSysVCL
+ 0003:000039A8       IdSysVCL.monthnames
+ 0001:00274658       IdSysVCL.TIdSysVCL.FreeAndNil
+ 0001:00274660       IdSysVCL.TIdSysVCL.LeadBytes
+ 0003:0000398C       IdSysVCL.wdays
+ 0001:00274820       IdSysWin32..TIdSysWin32
+ 0001:000711CC       ImgList..TChangeLink
+ 0001:000712D0       ImgList..TCustomImageList
+ 0004:000035CC       ImgList.CachedComCtrlVer
+ 0001:0007268C       ImgList.DoWrite
+ 0003:00001B48       ImgList.DrawingStyles
+ 0001:000713C8       ImgList.GetColor
+ 0001:000713A8       ImgList.GetRGBColor
+ 0004:000035D0       ImgList.ImageListWriteExProc
+ 0003:00001B58       ImgList.Images
+ 0003:00001B60       ImgList.Mask
+ 0001:00072558       ImgList.StreamsEqual
+ 0001:00072DC4       ImgList.TChangeLink.Change
+ 0001:00072D90       ImgList.TChangeLink.Destroy
+ 0001:000718BC       ImgList.TCustomImageList.Add
+ 0001:00072278       ImgList.TCustomImageList.AddImages
+ 0001:00071988       ImgList.TCustomImageList.AddMasked
+ 0001:00072298       ImgList.TCustomImageList.Assign
+ 0001:0007235C       ImgList.TCustomImageList.AssignTo
+ 0001:00072D6C       ImgList.TCustomImageList.BeginUpdate
+ 0001:000724B0       ImgList.TCustomImageList.Change
+ 0001:00072410       ImgList.TCustomImageList.CheckImage
+ 0001:00071DE4       ImgList.TCustomImageList.Clear
+ 0001:000720D0       ImgList.TCustomImageList.CopyImages
+ 0001:000713E8       ImgList.TCustomImageList.Create
+ 0001:0007181C       ImgList.TCustomImageList.CreateImageList
+ 0001:00071434       ImgList.TCustomImageList.CreateSize
+ 0001:000726E8       ImgList.TCustomImageList.DefineProperties
+ 0001:00071D58       ImgList.TCustomImageList.Delete
+ 0001:00071488       ImgList.TCustomImageList.Destroy
+ 0001:00071E50       ImgList.TCustomImageList.DoDraw
+ 0001:00072024       ImgList.TCustomImageList.Draw
+ 0001:0007204C       ImgList.TCustomImageList.Draw
+ 0001:00072D70       ImgList.TCustomImageList.EndUpdate
+ 0001:0007259C       ImgList.TCustomImageList.Equal
+ 0001:000717E4       ImgList.TCustomImageList.FreeHandle
+ 0001:00071AA4       ImgList.TCustomImageList.GetBitmap
+ 0001:00071770       ImgList.TCustomImageList.GetBitmapHandle
+ 0001:00071E28       ImgList.TCustomImageList.GetBkColor
+ 0001:00071B0C       ImgList.TCustomImageList.GetCount
+ 0001:00071780       ImgList.TCustomImageList.GetHandle
+ 0001:000724A0       ImgList.TCustomImageList.GetHotSpot
+ 0001:00071790       ImgList.TCustomImageList.GetImageHandle
+ 0001:000715AC       ImgList.TCustomImageList.HandleAllocated
+ 0001:000715B4       ImgList.TCustomImageList.HandleNeeded
+ 0001:000715C0       ImgList.TCustomImageList.InitBitmap
+ 0001:000714F4       ImgList.TCustomImageList.Initialize
+ 0001:00072098       ImgList.TCustomImageList.Overlay
+ 0001:00072740       ImgList.TCustomImageList.ReadD2Stream
+ 0001:000729D4       ImgList.TCustomImageList.ReadD3Stream
+ 0001:00072B9C       ImgList.TCustomImageList.ReadData
+ 0001:00072544       ImgList.TCustomImageList.RegisterChanges
+ 0001:00071B30       ImgList.TCustomImageList.ReplaceMasked
+ 0001:00071DF0       ImgList.TCustomImageList.SetBkColor
+ 0001:00072488       ImgList.TCustomImageList.SetDrawingStyle
+ 0001:00071744       ImgList.TCustomImageList.SetHandle
+ 0001:00071700       ImgList.TCustomImageList.SetHeight
+ 0001:00071684       ImgList.TCustomImageList.SetNewDimensions
+ 0001:000716BC       ImgList.TCustomImageList.SetWidth
+ 0001:00072500       ImgList.TCustomImageList.UnRegisterChanges
+ 0001:00072C28       ImgList.TCustomImageList.WriteData
+ 0004:0000336C       IniFiles..8
+ 0001:0002D008       IniFiles.Finalization
+ 0002:000002DC       IniFiles.IniFiles
+ 0003:00000D58       IniFiles.Values
+ 0001:00088A78       ListActns..TCustomListAction
+ 0001:000890F4       ListActns..TCustomStaticListAction
+ 0001:00088BF4       ListActns..TCustomVirtualListAction
+ 0001:00089708       ListActns..TListActionLink
+ 0001:000886DC       ListActns..TListControlItem
+ 0001:000888B4       ListActns..TListControlItems
+ 0001:00089404       ListActns..TStaticListAction
+ 0001:0008903C       ListActns..TStaticListItems
+ 0001:00088CF0       ListActns..TVirtualListAction
+ 0001:0008994C       ListActns.ListItemsCompare
+ 0001:00089BD0       ListActns.TCustomListAction.Create
+ 0001:00089C28       ListActns.TCustomListAction.ExecuteTarget
+ 0001:00089D50       ListActns.TCustomListAction.GetCount
+ 0001:00089D7C       ListActns.TCustomListAction.GetString
+ 0001:00089D88       ListActns.TCustomListAction.HandlesTarget
+ 0001:00089D8C       ListActns.TCustomListAction.Loaded
+ 0001:00089DC0       ListActns.TCustomListAction.SetActive
+ 0001:00089EC4       ListActns.TCustomListAction.SetImages
+ 0001:00089F30       ListActns.TCustomListAction.SetItemIndex
+ 0001:00089F8C       ListActns.TCustomListAction.SetString
+ 0001:0008A370       ListActns.TCustomStaticListAction.Create
+ 0001:0008A3D0       ListActns.TCustomStaticListAction.Destroy
+ 0001:0008A400       ListActns.TCustomStaticListAction.GetCount
+ 0001:0008A40C       ListActns.TCustomStaticListAction.GetItem
+ 0001:0008A470       ListActns.TCustomStaticListAction.GetItemClass
+ 0001:0008A478       ListActns.TCustomStaticListAction.GetString
+ 0001:0008A49C       ListActns.TCustomStaticListAction.SetListitems
+ 0001:0008A4AC       ListActns.TCustomStaticListAction.SetString
+ 0001:00089F90       ListActns.TCustomVirtualListAction.GetItem
+ 0001:00089FE0       ListActns.TCustomVirtualListAction.GetString
+ 0001:0008A71C       ListActns.TListActionLink.AddItem
+ 0001:0008A718       ListActns.TListActionLink.AddItem
+ 0001:0008A4D0       ListActns.TListActionLink.IsActiveLinked
+ 0001:0008A4E4       ListActns.TListActionLink.IsImagesLinked
+ 0001:0008A5C4       ListActns.TListActionLink.RefreshControl
+ 0001:0008A510       ListActns.TListActionLink.SetAction
+ 0001:0008A554       ListActns.TListActionLink.SetActive
+ 0001:0008A5C0       ListActns.TListActionLink.SetImages
+ 0001:0008A748       ListActns.TListActionLink.SetItemIndex
+ 0001:00089814       ListActns.TListControlItem.Assign
+ 0001:0008989C       ListActns.TListControlItem.Changed
+ 0001:000898AC       ListActns.TListControlItem.Create
+ 0001:000898E8       ListActns.TListControlItem.GetDisplayName
+ 0001:00089918       ListActns.TListControlItem.SetCaption
+ 0001:00089934       ListActns.TListControlItem.SetData
+ 0001:00089940       ListActns.TListControlItem.SetImageIndex
+ 0001:00089978       ListActns.TListControlItems.Add
+ 0001:000899B8       ListActns.TListControlItems.CompareItems
+ 0001:00089B88       ListActns.TListControlItems.Create
+ 0001:00089988       ListActns.TListControlItems.CustomSort
+ 0001:00089A60       ListActns.TListControlItems.ExchangeItems
+ 0001:00089B50       ListActns.TListControlItems.GetListItem
+ 0001:00089ABC       ListActns.TListControlItems.QuickSort
+ 0001:00089B64       ListActns.TListControlItems.SetSortType
+ 0001:00089B7C       ListActns.TListControlItems.Sort
+ 0001:0008A0C0       ListActns.TStaticListItems.Notify
+ 0001:0008A254       ListActns.TStaticListItems.Update
+ 0001:001204C8       Loginfrm..TfrmSignon
+ 0004:000048AC       Loginfrm.frmSignon
+ 0004:000048B0       Loginfrm.intDeviceLock
+ 0004:000048B4       Loginfrm.LoginfrmSignOnBroker
+ 0001:0012087C       Loginfrm.PrepareSignonForm
+ 0001:00120884       Loginfrm.SetUpSignOn
+ 0004:000048B8       Loginfrm.SysMenu
+ 0001:00120EAC       Loginfrm.TfrmSignon.btnCancelClick
+ 0001:00120ABC       Loginfrm.TfrmSignon.btnOkClick
+ 0001:001219BC       Loginfrm.TfrmSignon.DoVerify
+ 0001:00121788       Loginfrm.TfrmSignon.FormClose
+ 0001:0012109C       Loginfrm.TfrmSignon.FormCreate
+ 0001:00120EF8       Loginfrm.TfrmSignon.FormShow
+ 0001:00121950       Loginfrm.TfrmSignon.introTextURLClick
+ 0001:001215F8       Loginfrm.TfrmSignon.WMSysCommand
+ 0004:00003630       Mapi..1
+ 0001:0008858C       Mapi.Finalization
+ 0002:0000074C       Mapi.Mapi
+ 0003:00001D7C       Mapi.MAPIDLL
+ 0003:00001D80       Mapi.MAPIModule
+ 0001:000D46D0       Mask..EDBEditError
+ 0001:000D472C       Mask..TCustomMaskEdit
+ 0001:000D4920       Mask..TMaskEdit
+ 0003:00002650       Mask.ArrowKey
+ 0001:000D69A8       Mask.IsKatakana
+ 0001:000D66A0       Mask.TCustomMaskEdit.AddEditFormat
+ 0001:000D5FB4       Mask.TCustomMaskEdit.ArrowKeys
+ 0001:000D5DDC       Mask.TCustomMaskEdit.CharKeys
+ 0001:000D5D68       Mask.TCustomMaskEdit.CheckCursor
+ 0001:000D5DA8       Mask.TCustomMaskEdit.Clear
+ 0001:000D6438       Mask.TCustomMaskEdit.CMEnter
+ 0001:000D6590       Mask.TCustomMaskEdit.CMExit
+ 0001:000D64C8       Mask.TCustomMaskEdit.CMTextChanged
+ 0001:000D6558       Mask.TCustomMaskEdit.CMWantSpecialKey
+ 0001:000D52A8       Mask.TCustomMaskEdit.Create
+ 0001:000D61D4       Mask.TCustomMaskEdit.CursorDec
+ 0001:000D619C       Mask.TCustomMaskEdit.CursorInc
+ 0001:000D631C       Mask.TCustomMaskEdit.DeleteKeys
+ 0001:000D6E64       Mask.TCustomMaskEdit.DeleteSelection
+ 0001:000D6ACC       Mask.TCustomMaskEdit.DoInputChar
+ 0001:000D5DB0       Mask.TCustomMaskEdit.EditCanModify
+ 0001:000D7208       Mask.TCustomMaskEdit.FindLiteralChar
+ 0001:000D5570       Mask.TCustomMaskEdit.GetEditText
+ 0001:000D5898       Mask.TCustomMaskEdit.GetMasked
+ 0001:000D5A3C       Mask.TCustomMaskEdit.GetMaxLength
+ 0001:000D61F0       Mask.TCustomMaskEdit.GetNextEditChar
+ 0001:000D6218       Mask.TCustomMaskEdit.GetPriorEditChar
+ 0001:000D5A74       Mask.TCustomMaskEdit.GetSel
+ 0001:000D55E4       Mask.TCustomMaskEdit.GetText
+ 0001:000D5584       Mask.TCustomMaskEdit.GetTextLen
+ 0001:000D624C       Mask.TCustomMaskEdit.HomeEndKeys
+ 0001:000D6908       Mask.TCustomMaskEdit.InputChar
+ 0001:000D6F04       Mask.TCustomMaskEdit.InputString
+ 0001:000D52FC       Mask.TCustomMaskEdit.KeyDown
+ 0001:000D542C       Mask.TCustomMaskEdit.KeyPress
+ 0001:000D53DC       Mask.TCustomMaskEdit.KeyUp
+ 0001:000D58A8       Mask.TCustomMaskEdit.ReformatText
+ 0001:000D66E8       Mask.TCustomMaskEdit.RemoveEditFormat
+ 0001:000D5DB4       Mask.TCustomMaskEdit.Reset
+ 0001:000D5ABC       Mask.TCustomMaskEdit.SetCursor
+ 0001:000D5970       Mask.TCustomMaskEdit.SetEditMask
+ 0001:000D5508       Mask.TCustomMaskEdit.SetEditText
+ 0001:000D5A44       Mask.TCustomMaskEdit.SetMaxLength
+ 0001:000D5A98       Mask.TCustomMaskEdit.SetSel
+ 0001:000D5678       Mask.TCustomMaskEdit.SetText
+ 0001:000D6DAC       Mask.TCustomMaskEdit.Validate
+ 0001:000D65C4       Mask.TCustomMaskEdit.ValidateEdit
+ 0001:000D6664       Mask.TCustomMaskEdit.ValidateError
+ 0001:000D577C       Mask.TCustomMaskEdit.WMCut
+ 0001:000D546C       Mask.TCustomMaskEdit.WMLButtonDown
+ 0001:000D5488       Mask.TCustomMaskEdit.WMLButtonUp
+ 0001:000D57B0       Mask.TCustomMaskEdit.WMPaste
+ 0001:000D54E8       Mask.TCustomMaskEdit.WMSetFocus
+ 0001:000D69C0       Mask.TestChar
+ 0003:00002644       MaskUtils.DefaultBlank
+ 0001:000D42B8       MaskUtils.IsLiteralChar
+ 0001:000D3DB0       MaskUtils.MaskDoFormatText
+ 0003:00002648       MaskUtils.MaskFieldSeparator
+ 0001:000D3B60       MaskUtils.MaskGetCharType
+ 0001:000D3D08       MaskUtils.MaskGetCurrentDirectives
+ 0001:000D40D0       MaskUtils.MaskGetMaskBlank
+ 0001:000D4004       MaskUtils.MaskGetMaskSave
+ 0001:000D3D8C       MaskUtils.MaskIntlLiteralToChar
+ 0003:0000264C       MaskUtils.MaskNoSave
+ 0001:000D41EC       MaskUtils.MaskOffsetToOffset
+ 0001:000D4160       MaskUtils.MaskOffsetToString
+ 0001:000D4250       MaskUtils.OffsetToMaskOffset
+ 0001:000D449C       MaskUtils.PadInputLiterals
+ 0001:000D42E0       MaskUtils.PadSubField
+ 0001:0002AAC8       Math.IntPower
+ 0001:0002AA80       Math.RoundTo
+ 0004:00004BEC       mCoPayDesc..2
+ 0001:001AE568       mCoPayDesc..TfraCoPayDesc
+ 0001:001AEC44       mCoPayDesc.Finalization
+ 0002:00001278       mCoPayDesc.mCoPayDesc
+ 0001:001AEBB4       mCoPayDesc.TfraCoPayDesc.ConvertShortLabelsToLong
+ 0001:001AE8C8       mCoPayDesc.TfraCoPayDesc.Create
+ 0001:001AEA88       mCoPayDesc.TfraCoPayDesc.LabelCaptionsOn
+ 0001:001AEB64       mCoPayDesc.TfraCoPayDesc.lblEnter
+ 0001:001AEB8C       mCoPayDesc.TfraCoPayDesc.lblExit
+ 0001:00198860       MenuBar..TMenuBar
+ 0001:00198A20       MenuBar.TMenuBar.Create
+ 0001:00198A88       MenuBar.TMenuBar.GetChildren
+ 0001:00198A90       MenuBar.TMenuBar.SetMenu
+ 0004:0000353C       Menus..01
+ 0001:0005662C       Menus..EMenuError
+ 0001:00056ED8       Menus..TMainMenu
+ 0001:00056DDC       Menus..TMenu
+ 0001:000568E0       Menus..TMenuActionLink
+ 0001:000569B8       Menus..TMenuItem
+ 0001:000574CC       Menus..TMenuItemStack
+ 0001:00057460       Menus..TPopupList
+ 0001:000571BC       Menus..TPopupMenu
+ 0001:000582D4       Menus.AddIn
+ 0001:0005C4A0       Menus.AddOle2
+ 0003:000019EC       Menus.Alignments
+ 0003:000019DC       Menus.Alignments
+ 0001:0005CFCC       Menus.AnsiSameCaption
+ 0001:000591A8       Menus.BiDiDraw
+ 0003:00001984       Menus.Breaks
+ 0001:0005BC40       Menus.BuildImage
+ 0003:00001A08       Menus.Buttons
+ 0003:00001924       Menus.cBooleanToItemAutoFlag
+ 0003:00001974       Menus.Checks
+ 0003:00001928       Menus.cItemAutoFlagToBoolean
+ 0003:00001920       Menus.cItemAutoFlagToMenu
+ 0003:0000191C       Menus.cMenuAutoFlagToItem
+ 0004:00003540       Menus.CommandPool
+ 0001:00057844       Menus.CompareFront
+ 0001:0005AAC0       Menus.CopyToBest
+ 0003:000019F4       Menus.CurrentKeyboardLayout
+ 0001:0005B934       Menus.DoClick
+ 0001:0005CD8C       Menus.DrawMenuItem
+ 0003:000019E4       Menus.EdgeStyle
+ 0003:0000197C       Menus.Enables
+ 0001:000575A0       Menus.Error
+ 0001:0005D114       Menus.Finalization
+ 0001:0005B4C4       Menus.Find
+ 0001:00057564       Menus.FindPopupControl
+ 0003:000019FC       Menus.Flags
+ 0001:0005B6F4       Menus.GetAltGRStatus
+ 0001:0005CF64       Menus.GetHotkey
+ 0001:00059CB0       Menus.GetMenuSize
+ 0001:000575F8       Menus.GetSpecialName
+ 0003:00001998       Menus.IBreaks
+ 0003:000019A4       Menus.IChecks
+ 0003:000019AC       Menus.IDefaults
+ 0003:000019B4       Menus.IEnables
+ 0001:0005AA90       Menus.IfHotkeyAvailable
+ 0001:0005AB44       Menus.InsertHotkeyFarEastFormat
+ 0003:000019D4       Menus.IOwnerDraw
+ 0003:000019BC       Menus.IRadios
+ 0003:000019CC       Menus.IRTL
+ 0001:0005BF30       Menus.IsAccelChar
+ 0003:000019F8       Menus.IsAltGRKeyLayout
+ 0001:0005B898       Menus.IsAltGRPressed
+ 0003:000019C4       Menus.ISeparators
+ 0001:0005BF8C       Menus.IsInitialChar
+ 0001:00057A30       Menus.Iterate
+ 0001:00057A94       Menus.IterateMenus
+ 0003:0000192C       Menus.MenuKeyCaps
+ 0002:00000580       Menus.Menus
+ 0001:00058848       Menus.NormalDraw
+ 0001:0005B924       Menus.NthParentOf
+ 0004:00003534       Menus.PopupList
+ 0001:00057598       Menus.ReturnAddr
+ 0003:00001990       Menus.Separators
+ 0001:000575C0       Menus.ShortCut
+ 0001:0005B8D4       Menus.ShortCutFromMessage
+ 0004:00003538       Menus.ShortCutItems
+ 0001:0005764C       Menus.ShortCutToText
+ 0001:0005CE74       Menus.StripHotkey
+ 0001:000578CC       Menus.TextToShortCut
+ 0001:0005C490       Menus.TMainMenu.GetHandle
+ 0001:0005C464       Menus.TMainMenu.ItemChanged
+ 0001:0005C3D0       Menus.TMainMenu.MenuChanged
+ 0001:0005C42C       Menus.TMainMenu.Merge
+ 0001:0005C4EC       Menus.TMainMenu.PopulateOle2Menu
+ 0001:0005C3B0       Menus.TMainMenu.SetAutoMerge
+ 0001:0005C53C       Menus.TMainMenu.SetOle2MenuHandle
+ 0001:0005C448       Menus.TMainMenu.Unmerge
+ 0001:0005BD80       Menus.TMenu.AdjustBiDiBehavior
+ 0001:0005B364       Menus.TMenu.Create
+ 0001:0005B400       Menus.TMenu.CreateMenuItem
+ 0001:0005B410       Menus.TMenu.Destroy
+ 0001:0005B5FC       Menus.TMenu.DispatchCommand
+ 0001:0005B618       Menus.TMenu.DispatchPopup
+ 0001:0005BB84       Menus.TMenu.DoBiDiModeChanged
+ 0001:0005BE38       Menus.TMenu.DoChange
+ 0001:0005C248       Menus.TMenu.DoGetMenuString
+ 0001:0005B55C       Menus.TMenu.FindItem
+ 0001:0005C368       Menus.TMenu.GetAutoHotkeys
+ 0001:0005C38C       Menus.TMenu.GetAutoLineReduction
+ 0001:0005B448       Menus.TMenu.GetChildren
+ 0001:0005B464       Menus.TMenu.GetHandle
+ 0001:0005B58C       Menus.TMenu.GetHelpContext
+ 0001:0005BEA4       Menus.TMenu.ImageListChange
+ 0001:0005BB7C       Menus.TMenu.IsBiDiModeStored
+ 0001:0005B6E0       Menus.TMenu.IsOwnerDraw
+ 0001:0005BF18       Menus.TMenu.IsRightToLeft
+ 0001:0005BA88       Menus.TMenu.IsShortCut
+ 0001:0005BE50       Menus.TMenu.Loaded
+ 0001:0005BE68       Menus.TMenu.MenuChanged
+ 0001:0005BEEC       Menus.TMenu.Notification
+ 0001:0005C314       Menus.TMenu.ParentBiDiModeChanged
+ 0001:0005C33C       Menus.TMenu.ParentBiDiModeChanged
+ 0001:0005C0CC       Menus.TMenu.ProcessMenuChar
+ 0001:0005C378       Menus.TMenu.SetAutoHotkeys
+ 0001:0005C39C       Menus.TMenu.SetAutoLineReduction
+ 0001:0005C2F0       Menus.TMenu.SetBiDiMode
+ 0001:0005B470       Menus.TMenu.SetChildOrder
+ 0001:0005BEB0       Menus.TMenu.SetImages
+ 0001:0005BD70       Menus.TMenu.SetOwnerDraw
+ 0001:0005C304       Menus.TMenu.SetParentBiDiMode
+ 0001:0005BE00       Menus.TMenu.SetWindowHandle
+ 0001:0005BCEC       Menus.TMenu.UpdateImage
+ 0001:0005B4AC       Menus.TMenu.UpdateItems
+ 0001:00057BA0       Menus.TMenuActionLink.AssignClient
+ 0001:00057BBC       Menus.TMenuActionLink.IsAutoCheckLinked
+ 0001:00057BE4       Menus.TMenuActionLink.IsCaptionLinked
+ 0001:00057C1C       Menus.TMenuActionLink.IsCheckedLinked
+ 0001:00057C4C       Menus.TMenuActionLink.IsEnabledLinked
+ 0001:00057CE0       Menus.TMenuActionLink.IsGroupIndexLinked
+ 0001:00057C7C       Menus.TMenuActionLink.IsHelpContextLinked
+ 0001:00057CAC       Menus.TMenuActionLink.IsHintLinked
+ 0001:00057D1C       Menus.TMenuActionLink.IsImageIndexLinked
+ 0001:00057DB8       Menus.TMenuActionLink.IsOnExecuteLinked
+ 0001:00057D50       Menus.TMenuActionLink.IsShortCutLinked
+ 0001:00057D84       Menus.TMenuActionLink.IsVisibleLinked
+ 0001:00057DE0       Menus.TMenuActionLink.SetAutoCheck
+ 0001:00057E00       Menus.TMenuActionLink.SetCaption
+ 0001:00057E20       Menus.TMenuActionLink.SetChecked
+ 0001:00057E40       Menus.TMenuActionLink.SetEnabled
+ 0001:00057E60       Menus.TMenuActionLink.SetHelpContext
+ 0001:00057E7C       Menus.TMenuActionLink.SetHint
+ 0001:00057EA0       Menus.TMenuActionLink.SetImageIndex
+ 0001:00057F00       Menus.TMenuActionLink.SetOnExecute
+ 0001:00057EC0       Menus.TMenuActionLink.SetShortCut
+ 0001:00057EE0       Menus.TMenuActionLink.SetVisible
+ 0001:0005A6A8       Menus.TMenuItem.ActionChange
+ 0001:0005A42C       Menus.TMenuItem.Add
+ 0001:00059B28       Menus.TMenuItem.AdvancedDrawItem
+ 0001:0005805C       Menus.TMenuItem.AppendTo
+ 0001:0005A910       Menus.TMenuItem.AssignTo
+ 0001:0005AA64       Menus.TMenuItem.Clear
+ 0001:0005A364       Menus.TMenuItem.Click
+ 0001:00057F2C       Menus.TMenuItem.Create
+ 0001:000585AC       Menus.TMenuItem.DefineProperties
+ 0001:0005A2F0       Menus.TMenuItem.Delete
+ 0001:00057FA8       Menus.TMenuItem.Destroy
+ 0001:0005A7CC       Menus.TMenuItem.DoActionChange
+ 0001:000585F0       Menus.TMenuItem.DoDrawText
+ 0001:00058808       Menus.TMenuItem.DrawItem
+ 0001:0005A094       Menus.TMenuItem.GetAction
+ 0001:0005A0A4       Menus.TMenuItem.GetActionLinkClass
+ 0001:0005B304       Menus.TMenuItem.GetAutoHotkeys
+ 0001:0005B334       Menus.TMenuItem.GetAutoLineReduction
+ 0001:0005A50C       Menus.TMenuItem.GetBitmap
+ 0001:0005A174       Menus.TMenuItem.GetChildren
+ 0001:0005A0AC       Menus.TMenuItem.GetCount
+ 0001:00058560       Menus.TMenuItem.GetHandle
+ 0001:00059C80       Menus.TMenuItem.GetImageList
+ 0001:0005A0BC       Menus.TMenuItem.GetItem
+ 0001:0005A114       Menus.TMenuItem.GetMenuIndex
+ 0001:0005A604       Menus.TMenuItem.GetParentComponent
+ 0001:0005A66C       Menus.TMenuItem.GetParentMenu
+ 0001:00059EFC       Menus.TMenuItem.HasParent
+ 0001:0005AA1C       Menus.TMenuItem.ImageListChange
+ 0001:0005A414       Menus.TMenuItem.IndexOf
+ 0001:0005A228       Menus.TMenuItem.InitiateAction
+ 0001:0005A5D8       Menus.TMenuItem.InitiateActions
+ 0001:0005A238       Menus.TMenuItem.Insert
+ 0001:0005ACC4       Menus.TMenuItem.InternalRethinkHotkeys
+ 0001:0005B1AC       Menus.TMenuItem.InternalRethinkLines
+ 0001:0005A7F0       Menus.TMenuItem.IsCaptionStored
+ 0001:0005A810       Menus.TMenuItem.IsCheckedStored
+ 0001:0005A830       Menus.TMenuItem.IsEnabledStored
+ 0001:0005A870       Menus.TMenuItem.IsHelpContextStored
+ 0001:0005A850       Menus.TMenuItem.IsHintStored
+ 0001:0005A890       Menus.TMenuItem.IsImageIndexStored
+ 0001:0005B188       Menus.TMenuItem.IsLine
+ 0001:0005A8F0       Menus.TMenuItem.IsOnClickStored
+ 0001:0005A8B0       Menus.TMenuItem.IsShortCutStored
+ 0001:0005A8D0       Menus.TMenuItem.IsVisibleStored
+ 0001:000583F4       Menus.TMenuItem.Loaded
+ 0001:00059CFC       Menus.TMenuItem.MeasureItem
+ 0001:0005A470       Menus.TMenuItem.MenuChanged
+ 0001:000583B8       Menus.TMenuItem.MergeWith
+ 0001:0005A98C       Menus.TMenuItem.Notification
+ 0001:000582F0       Menus.TMenuItem.PopulateMenu
+ 0001:00058360       Menus.TMenuItem.ReadShortCutText
+ 0001:00058430       Menus.TMenuItem.RebuildHandle
+ 0001:0005A448       Menus.TMenuItem.Remove
+ 0001:0005A534       Menus.TMenuItem.SetAction
+ 0001:0005B178       Menus.TMenuItem.SetAutoHotkeys
+ 0001:0005B2F4       Menus.TMenuItem.SetAutoLineReduction
+ 0001:0005A5A4       Menus.TMenuItem.SetBitmap
+ 0001:00059F00       Menus.TMenuItem.SetBreak
+ 0001:00059F10       Menus.TMenuItem.SetCaption
+ 0001:00059F84       Menus.TMenuItem.SetChecked
+ 0001:0005A1AC       Menus.TMenuItem.SetChildOrder
+ 0001:0005A1CC       Menus.TMenuItem.SetDefault
+ 0001:00059FD8       Menus.TMenuItem.SetEnabled
+ 0001:0005A050       Menus.TMenuItem.SetGroupIndex
+ 0001:0005A104       Menus.TMenuItem.SetImageIndex
+ 0001:0005A12C       Menus.TMenuItem.SetMenuIndex
+ 0001:0005A618       Menus.TMenuItem.SetParentComponent
+ 0001:0005A67C       Menus.TMenuItem.SetRadioItem
+ 0001:0005A0E0       Menus.TMenuItem.SetShortCut
+ 0001:0005A9E0       Menus.TMenuItem.SetSubMenuImages
+ 0001:0005A0F4       Menus.TMenuItem.SetVisible
+ 0001:0005A4B4       Menus.TMenuItem.SubItemChanged
+ 0001:00059F38       Menus.TMenuItem.TurnSiblingsOff
+ 0001:0005AA50       Menus.TMenuItem.UpdateItems
+ 0001:00058500       Menus.TMenuItem.VerifyGroupIndex
+ 0001:0005CD50       Menus.TMenuItemStack.ClearItem
+ 0001:0005CAD8       Menus.TPopupList.Add
+ 0001:0005C548       Menus.TPopupList.MainWndProc
+ 0001:0005CB00       Menus.TPopupList.Remove
+ 0001:0005C594       Menus.TPopupList.WndProc
+ 0001:0005CB1C       Menus.TPopupMenu.Create
+ 0001:0005CB90       Menus.TPopupMenu.Destroy
+ 0001:0005CBC4       Menus.TPopupMenu.DoPopup
+ 0001:0005CBD8       Menus.TPopupMenu.GetHelpContext
+ 0001:0005CC80       Menus.TPopupMenu.Popup
+ 0001:0005CBE8       Menus.TPopupMenu.SetBiDiModeFromPopupControl
+ 0001:0005CBE0       Menus.TPopupMenu.SetHelpContext
+ 0001:0005CD30       Menus.TPopupMenu.SetPopupPoint
+ 0001:0005CC34       Menus.TPopupMenu.UseRightToLeftAlignment
+ 0001:00057A10       Menus.UniqueCommand
+ 0001:0005AA28       Menus.UpdateItem
+ 0001:0005B484       Menus.UpdateItem
+ 0003:00001918       Menus.ValidMenuHotkeys
+ 0004:00005AA4       mEvntDelay..2
+ 0001:00205014       mEvntDelay..TfraEvntDelayList
+ 0001:0020633C       mEvntDelay.Finalization
+ 0002:00001404       mEvntDelay.mEvntDelay
+ 0001:0020572C       mEvntDelay.TfraEvntDelayList.CheckMatch
+ 0001:0020528C       mEvntDelay.TfraEvntDelayList.Create
+ 0001:002052F8       mEvntDelay.TfraEvntDelayList.DisplayEvntDelayList
+ 0001:002058E0       mEvntDelay.TfraEvntDelayList.edtSearchChange
+ 0001:00206264       mEvntDelay.TfraEvntDelayList.edtSearchKeyDown
+ 0001:00205AC0       mEvntDelay.TfraEvntDelayList.mlstEventsChange
+ 0001:002060B0       mEvntDelay.TfraEvntDelayList.mlstEventsClick
+ 0001:00206114       mEvntDelay.TfraEvntDelayList.mlstEventsKeyUp
+ 0001:002056FC       mEvntDelay.TfraEvntDelayList.ResetProperty
+ 0004:00003800       MFunStr..1
+ 0001:0010DD3C       MFunStr.Finalization
+ 0002:00000D60       MFunStr.MFunStr
+ 0001:0010DB74       MFunStr.Piece
+ 0001:0010DA74       MFunStr.Translate
+ 0003:00003148       MFunStr.U
+ 0004:00004B44       mImgText..2
+ 0001:001970BC       mImgText..TfraImgText
+ 0001:00197288       mImgText.Finalization
+ 0002:000011B4       mImgText.mImgText
+ 0001:00197248       mImgText.TfraImgText.Create
+ 0003:00002DB4       MSAAConstants.PROPID_ACC_NAME
+ 0001:0016E944       MSXML_TLB..CoDOMDocument
+ 0003:000035A4       MSXML_TLB.CLASS_DOMDocument
+ 0001:0016E9A0       MSXML_TLB.CoDOMDocument.Create
+ 0004:000062C0       mTemplateFieldButton..2
+ 0001:00305228       mTemplateFieldButton..TfraTemplateFieldButton
+ 0001:003057F4       mTemplateFieldButton.Finalization
+ 0002:00001928       mTemplateFieldButton.mTemplateFieldButton
+ 0001:003056FC       mTemplateFieldButton.TfraTemplateFieldButton.ButtonKeyDown
+ 0001:00305720       mTemplateFieldButton.TfraTemplateFieldButton.ButtonKeyUp
+ 0001:00305638       mTemplateFieldButton.TfraTemplateFieldButton.Create
+ 0001:003057B8       mTemplateFieldButton.TfraTemplateFieldButton.Destroy
+ 0001:00305610       mTemplateFieldButton.TfraTemplateFieldButton.FrameEnter
+ 0001:00305624       mTemplateFieldButton.TfraTemplateFieldButton.FrameExit
+ 0001:00305740       mTemplateFieldButton.TfraTemplateFieldButton.GetButtonText
+ 0001:00305764       mTemplateFieldButton.TfraTemplateFieldButton.pbFocusPaint
+ 0001:00305460       mTemplateFieldButton.TfraTemplateFieldButton.pnlBtnMouseDown
+ 0001:003055EC       mTemplateFieldButton.TfraTemplateFieldButton.pnlBtnMouseUp
+ 0001:00305758       mTemplateFieldButton.TfraTemplateFieldButton.SetButtonText
+ 0004:00003350       MultiMon..1
+ 0004:0000334C       MultiMon.EnumDisplayMonitors
+ 0001:0002C868       MultiMon.Finalization
+ 0004:00003340       MultiMon.GetMonitorInfo
+ 0004:00003344       MultiMon.GetMonitorInfoA
+ 0004:00003348       MultiMon.GetMonitorInfoW
+ 0004:00003330       MultiMon.GetSystemMetrics
+ 0001:0002C124       MultiMon.InitAnApi
+ 0004:00003358       MultiMon.InitApis
+ 0001:0002C7FC       MultiMon.InitMultiMonStubs
+ 0004:00003360       MultiMon.MMAvailable
+ 0004:0000333C       MultiMon.MonitorFromPoint
+ 0004:00003338       MultiMon.MonitorFromRect
+ 0004:00003334       MultiMon.MonitorFromWindow
+ 0002:000002CC       MultiMon.MultiMon
+ 0004:00003354       MultiMon.User32Dll
+ 0001:0002C6CC       MultiMon.xEnumDisplayMonitors
+ 0001:0002C450       MultiMon.xGetMonitorInfo
+ 0001:0002C524       MultiMon.xGetMonitorInfoA
+ 0001:0002C5F8       MultiMon.xGetMonitorInfoW
+ 0001:0002C3B8       MultiMon.xMonitorFromPoint
+ 0001:0002C290       MultiMon.xMonitorFromRect
+ 0001:0002C320       MultiMon.xMonitorFromWindow
+ 0001:0002C208       MultiMon._GetSystemMetrics
+ 0004:00004A1C       mVisitRelated..2
+ 0001:00182DA4       mVisitRelated..TfraVisitRelated
+ 0001:0018305C       mVisitRelated.DisableCheck
+ 0001:00183AC4       mVisitRelated.Finalization
+ 0002:000010C0       mVisitRelated.mVisitRelated
+ 0001:00183078       mVisitRelated.TfraVisitRelated.chkClick
+ 0001:00183500       mVisitRelated.TfraVisitRelated.Create
+ 0001:00183560       mVisitRelated.TfraVisitRelated.GetCheckState
+ 0001:001835AC       mVisitRelated.TfraVisitRelated.GetRelated
+ 0001:00183698       mVisitRelated.TfraVisitRelated.GetRelated
+ 0001:00183768       mVisitRelated.TfraVisitRelated.InitAllow
+ 0001:00183934       mVisitRelated.TfraVisitRelated.InitRelated
+ 0001:00183854       mVisitRelated.TfraVisitRelated.InitRelated
+ 0001:00183A18       mVisitRelated.TfraVisitRelated.SetCheckEnable
+ 0001:00183A40       mVisitRelated.TfraVisitRelated.SetCheckState
+ 0001:000F7D44       oleacc2..CoCAccPropServices
+ 0003:00002DC4       oleacc2.CLASS_CAccPropServices
+ 0001:000F7DA4       oleacc2.CoCAccPropServices.Create
+ 0004:00003834       OleCtrls..5
+ 0001:0010FEAC       OleCtrls..TEventDispatch
+ 0001:001104E4       OleCtrls..TOleControl
+ 0003:000031C0       OleCtrls.ButtonMap
+ 0001:00111818       OleCtrls.CallEventMethod
+ 0003:000031AC       OleCtrls.DispIDArgs
+ 0003:0000319C       OleCtrls.DispParams
+ 0004:00003824       OleCtrls.EmptyParam
+ 0001:0011340C       OleCtrls.Finalization
+ 0001:001106D8       OleCtrls.FontToOleFont
+ 0001:00110B24       OleCtrls.FreeList
+ 0001:00110F30       OleCtrls.LicenseCheck
+ 0003:000031B8       OleCtrls.MouseMap
+ 0002:00000D94       OleCtrls.OleCtrls
+ 0001:00110724       OleCtrls.OleFontToFont
+ 0003:000031B0       OleCtrls.ShiftMap
+ 0001:001107A0       OleCtrls.StringToVarOleStr
+ 0001:001107C0       OleCtrls.TEventDispatch.Create
+ 0001:0011089C       OleCtrls.TEventDispatch.GetIDsOfNames
+ 0001:00110888       OleCtrls.TEventDispatch.GetTypeInfo
+ 0001:00110878       OleCtrls.TEventDispatch.GetTypeInfoCount
+ 0001:001108A8       OleCtrls.TEventDispatch.Invoke
+ 0001:001107E4       OleCtrls.TEventDispatch.QueryInterface
+ 0001:00110850       OleCtrls.TEventDispatch._AddRef
+ 0001:00110864       OleCtrls.TEventDispatch._Release
+ 0001:00112CE0       OleCtrls.TOleControl.CanInPlaceActivate
+ 0001:00112718       OleCtrls.TOleControl.CMColorChanged
+ 0001:00112928       OleCtrls.TOleControl.CMDialogKey
+ 0001:001126BC       OleCtrls.TOleControl.CMDocWindowActivate
+ 0001:0011279C       OleCtrls.TOleControl.CMEnabledChanged
+ 0001:00112828       OleCtrls.TOleControl.CMFontChanged
+ 0001:001129C4       OleCtrls.TOleControl.CMUIActivate
+ 0001:00112A14       OleCtrls.TOleControl.CMUIDeactivate
+ 0001:00112CA8       OleCtrls.TOleControl.ContextSensitiveHelp
+ 0001:001108F0       OleCtrls.TOleControl.Create
+ 0001:00110C10       OleCtrls.TOleControl.CreateControl
+ 0001:00110F88       OleCtrls.TOleControl.CreateInstance
+ 0001:001110D0       OleCtrls.TOleControl.CreateStorage
+ 0001:001111B0       OleCtrls.TOleControl.CreateWnd
+ 0001:00111858       OleCtrls.TOleControl.D2InvokeEvent
+ 0001:00112E5C       OleCtrls.TOleControl.DeactivateAndUndo
+ 0001:00111254       OleCtrls.TOleControl.DefaultHandler
+ 0001:0011130C       OleCtrls.TOleControl.DefineProperties
+ 0001:00110B5C       OleCtrls.TOleControl.Destroy
+ 0001:001113B0       OleCtrls.TOleControl.DestroyControl
+ 0001:00111418       OleCtrls.TOleControl.DestroyEnumPropDescs
+ 0001:00111458       OleCtrls.TOleControl.DestroyStorage
+ 0001:00111478       OleCtrls.TOleControl.DestroyWindowHandle
+ 0001:00112E50       OleCtrls.TOleControl.DiscardUndoState
+ 0001:00112FAC       OleCtrls.TOleControl.EnableModeless
+ 0001:00112EB4       OleCtrls.TOleControl.GetBorder
+ 0001:00112AD8       OleCtrls.TOleControl.GetContainer
+ 0001:001114C4       OleCtrls.TOleControl.GetEventMethod
+ 0001:00112BCC       OleCtrls.TOleControl.GetExtendedControl
+ 0001:00111524       OleCtrls.TOleControl.GetIDispatchProp
+ 0001:00112FE8       OleCtrls.TOleControl.GetIDsOfNames
+ 0001:00111544       OleCtrls.TOleControl.GetIntegerProp
+ 0001:00111558       OleCtrls.TOleControl.GetMainMenu
+ 0001:00112AC0       OleCtrls.TOleControl.GetMoniker
+ 0001:001115C8       OleCtrls.TOleControl.GetOleObject
+ 0001:00111638       OleCtrls.TOleControl.GetOleVariantProp
+ 0001:00111658       OleCtrls.TOleControl.GetProperty
+ 0001:001116E8       OleCtrls.TOleControl.GetStringProp
+ 0001:001115C0       OleCtrls.TOleControl.GetTOleEnumProp
+ 0001:00112FD4       OleCtrls.TOleControl.GetTypeInfo
+ 0001:00112FC4       OleCtrls.TOleControl.GetTypeInfoCount
+ 0001:00111744       OleCtrls.TOleControl.GetVariantProp
+ 0001:0011175C       OleCtrls.TOleControl.GetWideStringProp
+ 0001:00112D68       OleCtrls.TOleControl.GetWindowContext
+ 0001:001115AC       OleCtrls.TOleControl.GetWordBoolProp
+ 0001:00111788       OleCtrls.TOleControl.HookControlWndProc
+ 0001:00111AD8       OleCtrls.TOleControl.InitControlInterface
+ 0001:00112F00       OleCtrls.TOleControl.InsertMenus
+ 0001:00112FF4       OleCtrls.TOleControl.Invoke
+ 0001:001119F8       OleCtrls.TOleControl.InvokeEvent
+ 0001:00112BC0       OleCtrls.TOleControl.LockInPlaceActive
+ 0001:00112C84       OleCtrls.TOleControl.OleControlSite_TranslateAccelerator
+ 0001:00112EE4       OleCtrls.TOleControl.OleInPlaceFrame_GetWindow
+ 0001:00112FB8       OleCtrls.TOleControl.OleInPlaceFrame_TranslateAccelerator
+ 0001:00112CB4       OleCtrls.TOleControl.OleInPlaceSite_GetWindow
+ 0001:00113198       OleCtrls.TOleControl.OnChanged
+ 0001:00112BB4       OleCtrls.TOleControl.OnControlInfoChanged
+ 0001:00112C90       OleCtrls.TOleControl.OnFocus
+ 0001:00112CEC       OleCtrls.TOleControl.OnInPlaceActivate
+ 0001:00112E2C       OleCtrls.TOleControl.OnInPlaceDeactivate
+ 0001:00112E74       OleCtrls.TOleControl.OnPosRectChange
+ 0001:001133B0       OleCtrls.TOleControl.OnRequestEdit
+ 0001:00112B04       OleCtrls.TOleControl.OnShowWindow
+ 0001:00112D54       OleCtrls.TOleControl.OnUIActivate
+ 0001:00112E08       OleCtrls.TOleControl.OnUIDeactivate
+ 0001:00111ADC       OleCtrls.TOleControl.PaletteChanged
+ 0001:00111B2C       OleCtrls.TOleControl.PictureChanged
+ 0001:001133C8       OleCtrls.TOleControl.PostMessageFilter
+ 0001:001133BC       OleCtrls.TOleControl.PreMessageFilter
+ 0001:00112A5C       OleCtrls.TOleControl.QueryInterface
+ 0001:001133D4       OleCtrls.TOleControl.QueryService
+ 0001:00111B98       OleCtrls.TOleControl.ReadData
+ 0001:00112F78       OleCtrls.TOleControl.RemoveMenus
+ 0001:00112EC0       OleCtrls.TOleControl.RequestBorderSpace
+ 0001:00112B10       OleCtrls.TOleControl.RequestNewObjectLayout
+ 0001:00112AB4       OleCtrls.TOleControl.SaveObject
+ 0001:00112DFC       OleCtrls.TOleControl.Scroll
+ 0001:00112ED8       OleCtrls.TOleControl.SetActiveObject
+ 0001:00112ECC       OleCtrls.TOleControl.SetBorderSpace
+ 0001:00111C54       OleCtrls.TOleControl.SetBounds
+ 0001:00111D34       OleCtrls.TOleControl.SetColorProp
+ 0001:00111D3C       OleCtrls.TOleControl.SetIDispatchProp
+ 0001:00111D54       OleCtrls.TOleControl.SetIntegerProp
+ 0001:00112F40       OleCtrls.TOleControl.SetMenu
+ 0001:00111D6C       OleCtrls.TOleControl.SetName
+ 0001:00111E4C       OleCtrls.TOleControl.SetOleVariantProp
+ 0001:00111E54       OleCtrls.TOleControl.SetParent
+ 0001:00112024       OleCtrls.TOleControl.SetProperty
+ 0001:00112FA0       OleCtrls.TOleControl.SetStatusText
+ 0001:001120DC       OleCtrls.TOleControl.SetStringProp
+ 0001:00111F34       OleCtrls.TOleControl.SetTPictureProp
+ 0001:0011213C       OleCtrls.TOleControl.SetUIActive
+ 0001:00112194       OleCtrls.TOleControl.SetVariantProp
+ 0001:001121F0       OleCtrls.TOleControl.SetWideStringProp
+ 0001:00111E20       OleCtrls.TOleControl.SetWordBoolProp
+ 0001:00112AF0       OleCtrls.TOleControl.ShowObject
+ 0001:00112C9C       OleCtrls.TOleControl.ShowPropertyFrame
+ 0001:00112234       OleCtrls.TOleControl.StandardEvent
+ 0001:001112E4       OleCtrls.TOleControl.SuppressException
+ 0001:00112BE4       OleCtrls.TOleControl.TransformCoords
+ 0001:0011262C       OleCtrls.TOleControl.WMEraseBkgnd
+ 0001:0011264C       OleCtrls.TOleControl.WMPaint
+ 0001:0011243C       OleCtrls.TOleControl.WndProc
+ 0001:00112524       OleCtrls.TOleControl.WriteData
+ 0001:00112A84       OleCtrls.TOleControl._AddRef
+ 0001:00112A9C       OleCtrls.TOleControl._Release
+ 0004:0000377C       OleServer..3
+ 0001:000F7648       OleServer..TOleServer
+ 0001:000F7594       OleServer..TServerEventDispatch
+ 0001:000F7D14       OleServer.Finalization
+ 0002:00000AC0       OleServer.OleServer
+ 0001:000F7C6C       OleServer.TOleServer.ConnectEvents
+ 0001:000F7A48       OleServer.TOleServer.Create
+ 0001:000F7A9C       OleServer.TOleServer.Destroy
+ 0001:000F7C88       OleServer.TOleServer.DisconnectEvents
+ 0001:000F7CB0       OleServer.TOleServer.GetAutoConnect
+ 0001:000F7C98       OleServer.TOleServer.GetConnectKind
+ 0001:000F7B14       OleServer.TOleServer.GetServer
+ 0001:000F7B10       OleServer.TOleServer.InvokeEvent
+ 0001:000F7AEC       OleServer.TOleServer.Loaded
+ 0001:000F7CCC       OleServer.TOleServer.QueryInterface
+ 0001:000F7CC8       OleServer.TOleServer.SetAutoConnect
+ 0001:000F7CAC       OleServer.TOleServer.SetConnectKind
+ 0001:000F7CF4       OleServer.TOleServer._AddRef
+ 0001:000F7D04       OleServer.TOleServer._Release
+ 0001:000F7798       OleServer.TServerEventDispatch.Create
+ 0001:000F788C       OleServer.TServerEventDispatch.GetIDsOfNames
+ 0001:000F7878       OleServer.TServerEventDispatch.GetTypeInfo
+ 0001:000F7868       OleServer.TServerEventDispatch.GetTypeInfoCount
+ 0001:000F7898       OleServer.TServerEventDispatch.Invoke
+ 0001:000F77C4       OleServer.TServerEventDispatch.QueryInterface
+ 0001:000F7A38       OleServer.TServerEventDispatch.ServerDisconnect
+ 0001:000F7828       OleServer.TServerEventDispatch._AddRef
+ 0001:000F7848       OleServer.TServerEventDispatch._Release
+ 0001:000F7228       OR2006Compatibility..Tfrm2006Compatibility
+ 0001:000F73CC       OR2006Compatibility.Tfrm2006Compatibility.CreateNew
+ 0004:000037FC       ORClasses..8
+ 0001:0010C740       ORClasses..TORNotifier
+ 0001:0010C5DC       ORClasses..TORNotifyList
+ 0001:0010C7BC       ORClasses..TORStringList
+ 0001:0010C9C8       ORClasses.AddToNotifyWhenCreated
+ 0001:0010D5EC       ORClasses.Finalization
+ 0001:0010C8EC       ORClasses.IndexOfClass
+ 0003:00003144       ORClasses.NotifyLists
+ 0001:0010C9EC       ORClasses.ObjectCreated
+ 0002:00000D58       ORClasses.ORClasses
+ 0001:0010D3D8       ORClasses.QSort
+ 0001:0010CD7C       ORClasses.TORNotifier.BeginUpdate
+ 0001:0010CCF8       ORClasses.TORNotifier.Create
+ 0001:0010CD4C       ORClasses.TORNotifier.Destroy
+ 0001:0010CEA0       ORClasses.TORNotifier.DoNotify
+ 0001:0010CD80       ORClasses.TORNotifier.EndUpdate
+ 0001:0010CE80       ORClasses.TORNotifier.GetOnNotify
+ 0001:0010CDC8       ORClasses.TORNotifier.Notify
+ 0001:0010CD9C       ORClasses.TORNotifier.Notify
+ 0001:0010CE74       ORClasses.TORNotifier.NotifyMethod
+ 0001:0010CE20       ORClasses.TORNotifier.NotifyWhenChanged
+ 0001:0010CDF0       ORClasses.TORNotifier.NotifyWhenChanged
+ 0001:0010CE64       ORClasses.TORNotifier.RemoveNotify
+ 0001:0010CE48       ORClasses.TORNotifier.RemoveNotify
+ 0001:0010CE8C       ORClasses.TORNotifier.SetOnNotify
+ 0001:0010CB48       ORClasses.TORNotifyList.Add
+ 0001:0010CC48       ORClasses.TORNotifyList.Add
+ 0001:0010CC40       ORClasses.TORNotifyList.Count
+ 0001:0010CA4C       ORClasses.TORNotifyList.Create
+ 0001:0010CAA0       ORClasses.TORNotifyList.Destroy
+ 0001:0010CC7C       ORClasses.TORNotifyList.IndexOf
+ 0001:0010CADC       ORClasses.TORNotifyList.IndexOf
+ 0001:0010CBC8       ORClasses.TORNotifyList.Notify
+ 0001:0010CCD0       ORClasses.TORNotifyList.Remove
+ 0001:0010CB94       ORClasses.TORNotifyList.Remove
+ 0001:0010D31C       ORClasses.TORStringList.CaseInsensitiveIndexOfPiece
+ 0001:0010CF00       ORClasses.TORStringList.Changed
+ 0001:0010CED0       ORClasses.TORStringList.Destroy
+ 0001:0010D0CC       ORClasses.TORStringList.GetNotifier
+ 0001:0010CF84       ORClasses.TORStringList.IndexOfPiece
+ 0001:0010D0B4       ORClasses.TORStringList.IndexOfPieces
+ 0001:0010D03C       ORClasses.TORStringList.IndexOfPieces
+ 0001:0010D0A0       ORClasses.TORStringList.IndexOfPieces
+ 0001:0010D108       ORClasses.TORStringList.KillObjects
+ 0001:0010D168       ORClasses.TORStringList.PiecesEqual
+ 0001:0010D150       ORClasses.TORStringList.PiecesEqual
+ 0001:0010D250       ORClasses.TORStringList.RemoveDuplicates
+ 0001:0010D564       ORClasses.TORStringList.SetStrPiece
+ 0001:0010D5D8       ORClasses.TORStringList.SetStrPiece
+ 0001:0010D23C       ORClasses.TORStringList.SortByPiece
+ 0001:0010D4F8       ORClasses.TORStringList.SortByPieces
+ 0004:000036D4       ORCtrls..03
+ 0001:000E4350       ORCtrls..TCaptionCheckListBox
+ 0001:000E4C40       ORCtrls..TCaptionComboBox
+ 0001:000E47B0       ORCtrls..TCaptionEdit
+ 0001:000E40AC       ORCtrls..TCaptionListBox
+ 0001:000E4E94       ORCtrls..TCaptionListView
+ 0001:000E4594       ORCtrls..TCaptionMemo
+ 0001:000E49E4       ORCtrls..TCaptionRichEdit
+ 0001:000E50F4       ORCtrls..TCaptionStringGrid
+ 0001:000E2DC0       ORCtrls..TCaptionTreeView
+ 0001:000E52DC       ORCtrls..TItemTip
+ 0001:000E3D4C       ORCtrls..TKeyClickPanel
+ 0001:000E3EB4       ORCtrls..TKeyClickRadioGroup
+ 0001:000E2800       ORCtrls..TORAlignButton
+ 0001:000E2B54       ORCtrls..TORAlignEdit
+ 0001:000E29F0       ORCtrls..TORAlignSpeedButton
+ 0001:000E2210       ORCtrls..TORAutoPanel
+ 0001:000E3380       ORCtrls..TORCBImageIndexes
+ 0001:000E3610       ORCtrls..TORCheckBox
+ 0001:000E17C8       ORCtrls..TORComboBox
+ 0001:000E1568       ORCtrls..TORComboEdit
+ 0001:000E1400       ORCtrls..TORComboPanelEdit
+ 0001:000E1254       ORCtrls..TORDropPanel
+ 0001:000E0CB4       ORCtrls..TORListBox
+ 0001:000E39C8       ORCtrls..TORListView
+ 0001:000E3C70       ORCtrls..TORMenuItem
+ 0001:000E2378       ORCtrls..TOROffsetLabel
+ 0001:000E3B98       ORCtrls..TORPopupMenu
+ 0001:000E08E4       ORCtrls..TORStrings
+ 0001:000E2F9C       ORCtrls..TORTreeNode
+ 0001:000E3090       ORCtrls..TORTreeView
+ 0001:000E5434       ORCtrls..TSizeRatio
+ 0001:000E59D0       ORCtrls.AddItemTipRef
+ 0003:0000265C       ORCtrls.ALPHA_DISTRIBUTION
+ 0003:00002830       ORCtrls.BlackCheckBoxImageResNames
+ 0003:0000287C       ORCtrls.BlackComboBoxImages
+ 0003:00002884       ORCtrls.ButtonAlignment
+ 0003:00002898       ORCtrls.ButtonLayout
+ 0003:00002890       ORCtrls.ButtonWordWrap
+ 0001:000EDC14       ORCtrls.CalcShortName
+ 0003:000027F0       ORCtrls.CheckBoxImageResNames
+ 0001:000E9A38       ORCtrls.ClearLong
+ 0001:000E548C       ORCtrls.ClientWidthOfList
+ 0003:00002874       ORCtrls.ComboBoxImages
+ 0001:000E6350       ORCtrls.DestroyORCBBitmaps
+ 0001:000EAAE4       ORCtrls.DropDownPanelClosed
+ 0001:000EAAB0       ORCtrls.DropDownPanelOpened
+ 0001:000EF970       ORCtrls.EnableCtrl
+ 0001:000F0A34       ORCtrls.Finalization
+ 0001:000E55B0       ORCtrls.FontHeightPixel
+ 0001:000E54B4       ORCtrls.FontWidthPixel
+ 0001:000E628C       ORCtrls.GetORCBBitmap
+ 0001:000F0714       ORCtrls.GoodNotifyWinEvent
+ 0001:000E55EC       ORCtrls.HigherOf
+ 0001:000E5790       ORCtrls.IntArrayToString
+ 0001:000F07E4       ORCtrls.IsAMouseButtonDown
+ 0001:000E599C       ORCtrls.ItemTipKeyHook
+ 0001:000E55F8       ORCtrls.LowerOf
+ 0004:000036E8       ORCtrls.ORCBImages
+ 0002:000009FC       ORCtrls.ORCtrls
+ 0001:000E5604       ORCtrls.Piece
+ 0001:000E59FC       ORCtrls.RemoveItemTipRef
+ 0001:000EE634       ORCtrls.RStr
+ 0001:000E5680       ORCtrls.SetPiece
+ 0001:000E596C       ORCtrls.StringBetween
+ 0001:000E5850       ORCtrls.StringToIntArray
+ 0001:000F026C       ORCtrls.TCaptionCheckListBox.GetCaption
+ 0001:000F0294       ORCtrls.TCaptionCheckListBox.GetDynamicProperty
+ 0001:000F02B4       ORCtrls.TCaptionCheckListBox.SetCaption
+ 0001:000F0334       ORCtrls.TCaptionCheckListBox.SupportsDynamicProperty
+ 0001:000F05D0       ORCtrls.TCaptionComboBox.GetCaption
+ 0001:000F05F8       ORCtrls.TCaptionComboBox.GetDynamicProperty
+ 0001:000F0618       ORCtrls.TCaptionComboBox.SetCaption
+ 0001:000F0698       ORCtrls.TCaptionComboBox.SupportsDynamicProperty
+ 0001:000F040C       ORCtrls.TCaptionEdit.GetCaption
+ 0001:000F0434       ORCtrls.TCaptionEdit.GetDynamicProperty
+ 0001:000F0454       ORCtrls.TCaptionEdit.SetCaption
+ 0001:000F04D4       ORCtrls.TCaptionEdit.SupportsDynamicProperty
+ 0001:000EFE78       ORCtrls.TCaptionListBox.DoEnter
+ 0001:000EFE98       ORCtrls.TCaptionListBox.GetCaption
+ 0001:000EFEC0       ORCtrls.TCaptionListBox.GetDynamicProperty
+ 0001:000EFF10       ORCtrls.TCaptionListBox.MoveFocusDown
+ 0001:000EFEE0       ORCtrls.TCaptionListBox.MoveFocusUp
+ 0001:000EFF50       ORCtrls.TCaptionListBox.SetCaption
+ 0001:000EFFD0       ORCtrls.TCaptionListBox.SupportsDynamicProperty
+ 0001:000EFFD8       ORCtrls.TCaptionListBox.WMKeyDown
+ 0001:000F0080       ORCtrls.TCaptionListBox.WMMouseMove
+ 0001:000F0140       ORCtrls.TCaptionListBox.WMRButtonUp
+ 0001:000F0A0C       ORCtrls.TCaptionListView.GetDynamicProperty
+ 0001:000F0A2C       ORCtrls.TCaptionListView.SupportsDynamicProperty
+ 0001:000F033C       ORCtrls.TCaptionMemo.GetCaption
+ 0001:000F0364       ORCtrls.TCaptionMemo.GetDynamicProperty
+ 0001:000F0384       ORCtrls.TCaptionMemo.SetCaption
+ 0001:000F0404       ORCtrls.TCaptionMemo.SupportsDynamicProperty
+ 0001:000F04DC       ORCtrls.TCaptionRichEdit.GetDynamicProperty
+ 0001:000F0500       ORCtrls.TCaptionRichEdit.SupportsDynamicProperty
+ 0001:000F071C       ORCtrls.TCaptionStringGrid.ColRowToIndex
+ 0001:000F0740       ORCtrls.TCaptionStringGrid.GetDynamicProperty
+ 0001:000F0764       ORCtrls.TCaptionStringGrid.KeyUp
+ 0001:000F07DC       ORCtrls.TCaptionStringGrid.SupportsDynamicProperty
+ 0001:000F0508       ORCtrls.TCaptionTreeView.GetCaption
+ 0001:000F051C       ORCtrls.TCaptionTreeView.GetDynamicProperty
+ 0001:000F053C       ORCtrls.TCaptionTreeView.SetCaption
+ 0001:000F05C8       ORCtrls.TCaptionTreeView.SupportsDynamicProperty
+ 0001:000E5A20       ORCtrls.TItemTip.Create
+ 0001:000E5AA8       ORCtrls.TItemTip.CreateParams
+ 0001:000E5A70       ORCtrls.TItemTip.Destroy
+ 0001:000E5BF4       ORCtrls.TItemTip.GetTabSettings
+ 0001:000E5BB4       ORCtrls.TItemTip.Hide
+ 0001:000E5AD0       ORCtrls.TItemTip.Paint
+ 0001:000E5F40       ORCtrls.TItemTip.Show
+ 0001:000E5CA8       ORCtrls.TItemTip.UpdateText
+ 0001:000EFD5C       ORCtrls.TKeyClickPanel.KeyDown
+ 0001:000EFD7C       ORCtrls.TKeyClickRadioGroup.Click
+ 0001:000EFDB0       ORCtrls.TKeyClickRadioGroup.Create
+ 0001:000EFE0C       ORCtrls.TKeyClickRadioGroup.KeyDown
+ 0001:000ED8B0       ORCtrls.TORAlignButton.Create
+ 0001:000ED8FC       ORCtrls.TORAlignButton.CreateParams
+ 0001:000ED940       ORCtrls.TORAlignButton.SetAlignment
+ 0001:000ED954       ORCtrls.TORAlignButton.SetLayout
+ 0001:000ED968       ORCtrls.TORAlignButton.SetWordWrap
+ 0001:000F06A0       ORCtrls.TORAlignSpeedButton.Paint
+ 0001:000ED35C       ORCtrls.TORAutoPanel.BuildSizes
+ 0001:000ED2F8       ORCtrls.TORAutoPanel.Destroy
+ 0001:000ED484       ORCtrls.TORAutoPanel.DoResize
+ 0001:000ED454       ORCtrls.TORAutoPanel.Loaded
+ 0001:000ED5CC       ORCtrls.TORAutoPanel.Resize
+ 0001:000EE544       ORCtrls.TORCBImageIndexes.Create
+ 0001:000EE5C8       ORCtrls.TORCBImageIndexes.Destroy
+ 0001:000EE66C       ORCtrls.TORCBImageIndexes.IdxString
+ 0001:000EE898       ORCtrls.TORCBImageIndexes.ImageListChanged
+ 0001:000EE8C8       ORCtrls.TORCBImageIndexes.Notification
+ 0001:000EE8F4       ORCtrls.TORCBImageIndexes.SetCheckedDisabledIndex
+ 0001:000EE904       ORCtrls.TORCBImageIndexes.SetCheckedEnabledIndex
+ 0001:000EE914       ORCtrls.TORCBImageIndexes.SetGrayedDisabledIndex
+ 0001:000EE924       ORCtrls.TORCBImageIndexes.SetGrayedEnabledIndex
+ 0001:000EE758       ORCtrls.TORCBImageIndexes.SetIdxString
+ 0001:000EE5F8       ORCtrls.TORCBImageIndexes.SetImages
+ 0001:000EE934       ORCtrls.TORCBImageIndexes.SetUncheckedDisabledIndex
+ 0001:000EE944       ORCtrls.TORCBImageIndexes.SetUncheckedEnabledIndex
+ 0001:000EF65C       ORCtrls.TORCheckBox.AutoAdjustSize
+ 0001:000EFA64       ORCtrls.TORCheckBox.BMGetCheck
+ 0001:000EFA8C       ORCtrls.TORCheckBox.BMGetState
+ 0001:000EF50C       ORCtrls.TORCheckBox.BMSetCheck
+ 0001:000EEAFC       ORCtrls.TORCheckBox.CMEnabledChanged
+ 0001:000EEB14       ORCtrls.TORCheckBox.CMFontChanged
+ 0001:000EEB2C       ORCtrls.TORCheckBox.CNDrawItem
+ 0001:000EEB44       ORCtrls.TORCheckBox.CNMeasureItem
+ 0001:000EE954       ORCtrls.TORCheckBox.Create
+ 0001:000EE9AC       ORCtrls.TORCheckBox.CreateCommon
+ 0001:000EEAE4       ORCtrls.TORCheckBox.CreateParams
+ 0001:000EE9D8       ORCtrls.TORCheckBox.Destroy
+ 0001:000EF0B8       ORCtrls.TORCheckBox.DrawItem
+ 0001:000EF7EC       ORCtrls.TORCheckBox.GetCaption
+ 0001:000EEB54       ORCtrls.TORCheckBox.GetDrawData
+ 0001:000EEA1C       ORCtrls.TORCheckBox.GetImageIndexes
+ 0001:000EEA34       ORCtrls.TORCheckBox.GetImageList
+ 0001:000EFA24       ORCtrls.TORCheckBox.Notification
+ 0001:000EF86C       ORCtrls.TORCheckBox.SetAllowAllUnchecked
+ 0001:000EF938       ORCtrls.TORCheckBox.SetAssociate
+ 0001:000EF620       ORCtrls.TORCheckBox.SetAutoSize
+ 0001:000EF644       ORCtrls.TORCheckBox.SetBlackColorMode
+ 0001:000EF800       ORCtrls.TORCheckBox.SetCaption
+ 0001:000EFA54       ORCtrls.TORCheckBox.SetFocusOnBox
+ 0001:000EF4B4       ORCtrls.TORCheckBox.SetGrayedStyle
+ 0001:000EF878       ORCtrls.TORCheckBox.SetGroupIndex
+ 0001:000EEA40       ORCtrls.TORCheckBox.SetImageIndexes
+ 0001:000EEA4C       ORCtrls.TORCheckBox.SetImageList
+ 0001:000EF914       ORCtrls.TORCheckBox.SetParent
+ 0001:000EF928       ORCtrls.TORCheckBox.SetRadioStyle
+ 0001:000EF5FC       ORCtrls.TORCheckBox.SetWordWrap
+ 0001:000EF8A4       ORCtrls.TORCheckBox.SyncAllowAllUnchecked
+ 0001:000EEA58       ORCtrls.TORCheckBox.Toggle
+ 0001:000EFA04       ORCtrls.TORCheckBox.UpdateAssociate
+ 0001:000EF4D4       ORCtrls.TORCheckBox.WMLButtonDblClk
+ 0001:000EF4E8       ORCtrls.TORCheckBox.WMSize
+ 0001:000EB2CC       ORCtrls.TORComboBox.AdjustSizeOfSelf
+ 0001:000ED1EC       ORCtrls.TORComboBox.CheckBoxSelected
+ 0001:000EC7EC       ORCtrls.TORComboBox.Clear
+ 0001:000EB4B4       ORCtrls.TORComboBox.ClearDropDownStatus
+ 0001:000EC810       ORCtrls.TORComboBox.ClearTop
+ 0001:000EB21C       ORCtrls.TORComboBox.CMFontChanged
+ 0001:000EB04C       ORCtrls.TORComboBox.Create
+ 0001:000EB4C8       ORCtrls.TORComboBox.Destroy
+ 0001:000EB4F4       ORCtrls.TORComboBox.DoEnter
+ 0001:000EB544       ORCtrls.TORComboBox.DoExit
+ 0001:000EB3F4       ORCtrls.TORComboBox.DropButtonDown
+ 0001:000EB424       ORCtrls.TORComboBox.DropButtonUp
+ 0001:000EB454       ORCtrls.TORComboBox.DropDownStatusChanged
+ 0001:000ECE78       ORCtrls.TORComboBox.DropPanelBtnPressed
+ 0001:000EB2B8       ORCtrls.TORComboBox.EditControl
+ 0001:000EC81C       ORCtrls.TORComboBox.ForDataUse
+ 0001:000EB638       ORCtrls.TORComboBox.FwdChange
+ 0001:000EB668       ORCtrls.TORComboBox.FwdChangeDelayed
+ 0001:000EB9C0       ORCtrls.TORComboBox.FwdClick
+ 0001:000EBB20       ORCtrls.TORComboBox.FwdDblClick
+ 0001:000EBB40       ORCtrls.TORComboBox.FwdKeyDown
+ 0001:000EBF0C       ORCtrls.TORComboBox.FwdKeyPress
+ 0001:000EBF78       ORCtrls.TORComboBox.FwdKeyUp
+ 0001:000EBFE4       ORCtrls.TORComboBox.FwdMouseUp
+ 0001:000EC008       ORCtrls.TORComboBox.FwdNeedData
+ 0001:000EC8E4       ORCtrls.TORComboBox.GetAutoSelect
+ 0001:000ED228       ORCtrls.TORComboBox.GetCaption
+ 0001:000ED240       ORCtrls.TORComboBox.GetCaseChanged
+ 0001:000ECC38       ORCtrls.TORComboBox.GetCheckBoxes
+ 0001:000ECEDC       ORCtrls.TORComboBox.GetCheckedString
+ 0001:000ECC48       ORCtrls.TORComboBox.GetCheckEntireLine
+ 0001:000EC8F4       ORCtrls.TORComboBox.GetColor
+ 0001:000EC900       ORCtrls.TORComboBox.GetDelimiter
+ 0001:000EC910       ORCtrls.TORComboBox.GetDisplayText
+ 0001:000EC92C       ORCtrls.TORComboBox.GetDynamicProperty
+ 0001:000ED070       ORCtrls.TORComboBox.GetEditBoxText
+ 0001:000ED030       ORCtrls.TORComboBox.GetEnabled
+ 0001:000ECC58       ORCtrls.TORComboBox.GetFlatCheckBoxes
+ 0001:000ECA28       ORCtrls.TORComboBox.GetHideSynonyms
+ 0001:000EC94C       ORCtrls.TORComboBox.GetItemHeight
+ 0001:000EC958       ORCtrls.TORComboBox.GetItemID
+ 0001:000EC970       ORCtrls.TORComboBox.GetItemIEN
+ 0001:000EC990       ORCtrls.TORComboBox.GetItemIndex
+ 0001:000EC9B0       ORCtrls.TORComboBox.GetItemTipColor
+ 0001:000EC9A0       ORCtrls.TORComboBox.GetItemTipEnable
+ 0001:000EC9C0       ORCtrls.TORComboBox.GetLongList
+ 0001:000ED260       ORCtrls.TORComboBox.GetLookupPiece
+ 0001:000EC9D0       ORCtrls.TORComboBox.GetMaxLength
+ 0001:000ECFF8       ORCtrls.TORComboBox.GetOnSynonymCheck
+ 0001:000EC9E0       ORCtrls.TORComboBox.GetPieces
+ 0001:000EC9F8       ORCtrls.TORComboBox.GetSelStart
+ 0001:000ECA08       ORCtrls.TORComboBox.GetShortCount
+ 0001:000ECA18       ORCtrls.TORComboBox.GetSorted
+ 0001:000ECA38       ORCtrls.TORComboBox.GetSynonymChars
+ 0001:000ECAC8       ORCtrls.TORComboBox.GetTabPosInPixels
+ 0001:000ECAB0       ORCtrls.TORComboBox.GetTabPositions
+ 0001:000ECAD8       ORCtrls.TORComboBox.GetText
+ 0001:000EC828       ORCtrls.TORComboBox.InitLongList
+ 0001:000EC878       ORCtrls.TORComboBox.InsertSeparator
+ 0001:000EC884       ORCtrls.TORComboBox.Invalidate
+ 0001:000EB588       ORCtrls.TORComboBox.LoadComboBoxImage
+ 0001:000EB620       ORCtrls.TORComboBox.Loaded
+ 0001:000ECAF0       ORCtrls.TORComboBox.SelectAll
+ 0001:000EC544       ORCtrls.TORComboBox.SelectByID
+ 0001:000EC518       ORCtrls.TORComboBox.SelectByIEN
+ 0001:000ECAFC       ORCtrls.TORComboBox.SetAutoSelect
+ 0001:000ECB0C       ORCtrls.TORComboBox.SetBlackColorMode
+ 0001:000ED21C       ORCtrls.TORComboBox.SetCaption
+ 0001:000ED250       ORCtrls.TORComboBox.SetCaseChanged
+ 0001:000ECF00       ORCtrls.TORComboBox.SetCheckBoxEditColor
+ 0001:000ECC68       ORCtrls.TORComboBox.SetCheckBoxes
+ 0001:000ECEF4       ORCtrls.TORComboBox.SetCheckedString
+ 0001:000ECE5C       ORCtrls.TORComboBox.SetCheckEntireLine
+ 0001:000ECB34       ORCtrls.TORComboBox.SetColor
+ 0001:000ECB68       ORCtrls.TORComboBox.SetDelimiter
+ 0001:000EC080       ORCtrls.TORComboBox.SetDropDownCount
+ 0001:000EC08C       ORCtrls.TORComboBox.SetDroppedDown
+ 0001:000EC2D8       ORCtrls.TORComboBox.SetEditRect
+ 0001:000EC380       ORCtrls.TORComboBox.SetEditText
+ 0001:000ED038       ORCtrls.TORComboBox.SetEnabled
+ 0001:000EC564       ORCtrls.TORComboBox.SetExactByIEN
+ 0001:000ECE6C       ORCtrls.TORComboBox.SetFlatCheckBoxes
+ 0001:000ECA54       ORCtrls.TORComboBox.SetHideSynonyms
+ 0001:000ECB74       ORCtrls.TORComboBox.SetItemHeight
+ 0001:000EC434       ORCtrls.TORComboBox.SetItemIndex
+ 0001:000ECC28       ORCtrls.TORComboBox.SetItems
+ 0001:000ECB90       ORCtrls.TORComboBox.SetItemTipColor
+ 0001:000ECB80       ORCtrls.TORComboBox.SetItemTipEnable
+ 0001:000ECF30       ORCtrls.TORComboBox.SetListItemsOnly
+ 0001:000ECBA0       ORCtrls.TORComboBox.SetLongList
+ 0001:000ED270       ORCtrls.TORComboBox.SetLookupPiece
+ 0001:000ECBAC       ORCtrls.TORComboBox.SetMaxLength
+ 0001:000F0818       ORCtrls.TORComboBox.SetNumForMatch
+ 0001:000ECF4C       ORCtrls.TORComboBox.SetOnCheckedText
+ 0001:000ED010       ORCtrls.TORComboBox.SetOnSynonymCheck
+ 0001:000ECBB8       ORCtrls.TORComboBox.SetPieces
+ 0001:000ECBC4       ORCtrls.TORComboBox.SetSelLength
+ 0001:000ECBD8       ORCtrls.TORComboBox.SetSelStart
+ 0001:000ECBEC       ORCtrls.TORComboBox.SetSelText
+ 0001:000ECBF8       ORCtrls.TORComboBox.SetSorted
+ 0001:000EC590       ORCtrls.TORComboBox.SetStyle
+ 0001:000ECA60       ORCtrls.TORComboBox.SetSynonymChars
+ 0001:000ECC10       ORCtrls.TORComboBox.SetTabPosInPixels
+ 0001:000ECC04       ORCtrls.TORComboBox.SetTabPositions
+ 0001:000ECFB4       ORCtrls.TORComboBox.SetTemplateField
+ 0001:000ECC1C       ORCtrls.TORComboBox.SetText
+ 0001:000F0988       ORCtrls.TORComboBox.SetTextAutoComplete
+ 0001:000F0840       ORCtrls.TORComboBox.SetUniqueAutoComplete
+ 0001:000EC75C       ORCtrls.TORComboBox.StartKeyTimer
+ 0001:000EC7BC       ORCtrls.TORComboBox.StopKeyTimer
+ 0001:000EC7E4       ORCtrls.TORComboBox.SupportsDynamicProperty
+ 0001:000EB518       ORCtrls.TORComboBox.UMGotFocus
+ 0001:000ED16C       ORCtrls.TORComboBox.UpdateCheckEditBoxText
+ 0001:000EB1F0       ORCtrls.TORComboBox.WMDestroy
+ 0001:000EB230       ORCtrls.TORComboBox.WMMove
+ 0001:000EB248       ORCtrls.TORComboBox.WMSize
+ 0001:000EB25C       ORCtrls.TORComboBox.WMTimer
+ 0001:000EAF60       ORCtrls.TORComboEdit.CreateParams
+ 0001:000EAF7C       ORCtrls.TORComboEdit.WMKillFocus
+ 0001:000EAFF4       ORCtrls.TORComboEdit.WMSetFocus
+ 0001:000EFC60       ORCtrls.TORComboPanelEdit.Destroy
+ 0001:000EFC94       ORCtrls.TORComboPanelEdit.Paint
+ 0001:000EAB20       ORCtrls.TORDropPanel.BtnClicked
+ 0001:000EAB54       ORCtrls.TORDropPanel.Create
+ 0001:000EABC8       ORCtrls.TORDropPanel.CreateParams
+ 0001:000EAC04       ORCtrls.TORDropPanel.GetButton
+ 0001:000EAC9C       ORCtrls.TORDropPanel.ResetButtons
+ 0001:000EACCC       ORCtrls.TORDropPanel.Resize
+ 0001:000EAD4C       ORCtrls.TORDropPanel.UpdateButtons
+ 0001:000EAEC4       ORCtrls.TORDropPanel.WMActivateApp
+ 0001:000E9408       ORCtrls.TORListBox.AdjustScrollBar
+ 0001:000EA9DC       ORCtrls.TORListBox.Clear
+ 0001:000E99E0       ORCtrls.TORListBox.ClearTop
+ 0001:000E7C98       ORCtrls.TORListBox.Click
+ 0001:000E7450       ORCtrls.TORListBox.CMFontChanged
+ 0001:000E7C3C       ORCtrls.TORListBox.CMHintShow
+ 0001:000E820C       ORCtrls.TORListBox.CNDrawItem
+ 0001:000E6ACC       ORCtrls.TORListBox.Create
+ 0001:000E6C18       ORCtrls.TORListBox.CreateParams
+ 0001:000E947C       ORCtrls.TORListBox.CreateScrollBar
+ 0001:000E6C2C       ORCtrls.TORListBox.CreateWnd
+ 0001:000E6BC8       ORCtrls.TORListBox.Destroy
+ 0001:000E7D9C       ORCtrls.TORListBox.DestroyItems
+ 0001:000E6CB0       ORCtrls.TORListBox.DestroyWnd
+ 0001:000E7CB0       ORCtrls.TORListBox.DoChange
+ 0001:000E7D18       ORCtrls.TORListBox.DoEnter
+ 0001:000E7D54       ORCtrls.TORListBox.DoExit
+ 0001:000E8224       ORCtrls.TORListBox.DrawItem
+ 0001:000E9548       ORCtrls.TORListBox.ForDataUse
+ 0001:000E9528       ORCtrls.TORListBox.FreeScrollBar
+ 0001:000EAA98       ORCtrls.TORListBox.GetCaption
+ 0001:000EA698       ORCtrls.TORListBox.GetChecked
+ 0001:000EA768       ORCtrls.TORListBox.GetCheckedState
+ 0001:000EA848       ORCtrls.TORListBox.GetCheckedString
+ 0001:000E6EA0       ORCtrls.TORListBox.GetDisplayText
+ 0001:000E6EF4       ORCtrls.TORListBox.GetDynamicProperty
+ 0001:000E896C       ORCtrls.TORListBox.GetIEN
+ 0001:000E8594       ORCtrls.TORListBox.GetIndexFromY
+ 0001:000E8C14       ORCtrls.TORListBox.GetItemID
+ 0001:000E8A1C       ORCtrls.TORListBox.GetItemIEN
+ 0001:000EA968       ORCtrls.TORListBox.GetMItems
+ 0001:000EA820       ORCtrls.TORListBox.GetMultiSelect
+ 0001:000E9190       ORCtrls.TORListBox.GetPieces
+ 0001:000EA218       ORCtrls.TORListBox.GetStringIndex
+ 0001:000E914C       ORCtrls.TORListBox.GetStyle
+ 0001:000E8D6C       ORCtrls.TORListBox.GetTabPositions
+ 0001:000E97CC       ORCtrls.TORListBox.InitLongList
+ 0001:000E993C       ORCtrls.TORListBox.InsertSeparator
+ 0001:000E6DC4       ORCtrls.TORListBox.IsSynonym
+ 0001:000E7EFC       ORCtrls.TORListBox.KeyPress
+ 0001:000E7154       ORCtrls.TORListBox.LBAddString
+ 0001:000E7334       ORCtrls.TORListBox.LBDeleteString
+ 0001:000E6F14       ORCtrls.TORListBox.LBGetItemData
+ 0001:000E6FCC       ORCtrls.TORListBox.LBGetText
+ 0001:000E70A0       ORCtrls.TORListBox.LBGetTextLen
+ 0001:000E723C       ORCtrls.TORListBox.LBInsertString
+ 0001:000E73AC       ORCtrls.TORListBox.LBResetContent
+ 0001:000E7438       ORCtrls.TORListBox.LBSetCurSel
+ 0001:000E6F44       ORCtrls.TORListBox.LBSetItemData
+ 0001:000E6C80       ORCtrls.TORListBox.Loaded
+ 0001:000E8140       ORCtrls.TORListBox.MeasureItem
+ 0001:000E7F2C       ORCtrls.TORListBox.MouseDown
+ 0001:000E7FB0       ORCtrls.TORListBox.MouseMove
+ 0001:000E9B00       ORCtrls.TORListBox.NeedData
+ 0001:000E9E00       ORCtrls.TORListBox.PositionThumb
+ 0001:000E91CC       ORCtrls.TORListBox.ResetItems
+ 0001:000E9E9C       ORCtrls.TORListBox.ScrollTo
+ 0001:000E8CB0       ORCtrls.TORListBox.SelectByID
+ 0001:000E8ACC       ORCtrls.TORListBox.SelectByIEN
+ 0001:000EA358       ORCtrls.TORListBox.SelectString
+ 0001:000EA9F4       ORCtrls.TORListBox.SetBlackColorMode
+ 0001:000EA9FC       ORCtrls.TORListBox.SetCaption
+ 0001:000EA634       ORCtrls.TORListBox.SetCheckBoxes
+ 0001:000EA6DC       ORCtrls.TORListBox.SetChecked
+ 0001:000EA7A4       ORCtrls.TORListBox.SetCheckedState
+ 0001:000EA8E0       ORCtrls.TORListBox.SetCheckedString
+ 0001:000E9184       ORCtrls.TORListBox.SetDelimiter
+ 0001:000E8B28       ORCtrls.TORListBox.SetExactByIEN
+ 0001:000EA680       ORCtrls.TORListBox.SetFlatCheckBoxes
+ 0001:000E8604       ORCtrls.TORListBox.SetFocusIndex
+ 0001:000E8FF8       ORCtrls.TORListBox.SetHideSynonyms
+ 0001:000E93D4       ORCtrls.TORListBox.SetLongList
+ 0001:000EA99C       ORCtrls.TORListBox.SetMItems
+ 0001:000EA828       ORCtrls.TORListBox.SetMultiSelect
+ 0001:000E91AC       ORCtrls.TORListBox.SetPieces
+ 0001:000E9154       ORCtrls.TORListBox.SetStyle
+ 0001:000E90B8       ORCtrls.TORListBox.SetSynonymChars
+ 0001:000E8EC0       ORCtrls.TORListBox.SetTabPosInPixels
+ 0001:000E8DA8       ORCtrls.TORListBox.SetTabPositions
+ 0001:000E8ED4       ORCtrls.TORListBox.SetTabStops
+ 0001:000E8FF0       ORCtrls.TORListBox.SupportsDynamicProperty
+ 0001:000E6CCC       ORCtrls.TORListBox.TextToShow
+ 0001:000E7E08       ORCtrls.TORListBox.ToggleCheckBox
+ 0001:000E8860       ORCtrls.TORListBox.UMShowTip
+ 0001:000F0848       ORCtrls.TORListBox.VerifyUnique
+ 0001:000E7B94       ORCtrls.TORListBox.WMCancelMode
+ 0001:000E81E4       ORCtrls.TORListBox.WMDestroy
+ 0001:000E747C       ORCtrls.TORListBox.WMKeyDown
+ 0001:000E79DC       ORCtrls.TORListBox.WMLButtonDblClk
+ 0001:000E7654       ORCtrls.TORListBox.WMLButtonDown
+ 0001:000E78F0       ORCtrls.TORListBox.WMLButtonUp
+ 0001:000E7BC4       ORCtrls.TORListBox.WMMove
+ 0001:000E7934       ORCtrls.TORListBox.WMRButtonUp
+ 0001:000E7BE0       ORCtrls.TORListBox.WMSize
+ 0001:000E7C1C       ORCtrls.TORListBox.WMVScroll
+ 0001:000EFB3C       ORCtrls.TORListView.LVMSetColumn
+ 0001:000EFBD4       ORCtrls.TORListView.LVMSetColumnWidth
+ 0001:000EFA90       ORCtrls.TORListView.WMNotify
+ 0001:000ED674       ORCtrls.TOROffsetLabel.AdjustSizeOfSelf
+ 0001:000ED660       ORCtrls.TOROffsetLabel.CMFontChanged
+ 0001:000ED64C       ORCtrls.TOROffsetLabel.CMTextChanged
+ 0001:000ED5F0       ORCtrls.TOROffsetLabel.Create
+ 0001:000ED700       ORCtrls.TOROffsetLabel.DoDrawText
+ 0001:000ED838       ORCtrls.TOROffsetLabel.GetTransparent
+ 0001:000ED7AC       ORCtrls.TOROffsetLabel.Paint
+ 0001:000ED890       ORCtrls.TOROffsetLabel.SetHorzOffset
+ 0001:000ED844       ORCtrls.TOROffsetLabel.SetTransparent
+ 0001:000ED884       ORCtrls.TOROffsetLabel.SetVertOffset
+ 0001:000ED89C       ORCtrls.TOROffsetLabel.SetWordWrap
+ 0001:000E6380       ORCtrls.TORStrings.Add
+ 0001:000E6400       ORCtrls.TORStrings.Clear
+ 0001:000E642C       ORCtrls.TORStrings.Create
+ 0001:000E6484       ORCtrls.TORStrings.Delete
+ 0001:000E64B8       ORCtrls.TORStrings.Destroy
+ 0001:000E64E8       ORCtrls.TORStrings.Get
+ 0001:000E6508       ORCtrls.TORStrings.GetCount
+ 0001:000E651C       ORCtrls.TORStrings.GetObject
+ 0001:000E6538       ORCtrls.TORStrings.IndexOf
+ 0001:000E6554       ORCtrls.TORStrings.Insert
+ 0001:000E65DC       ORCtrls.TORStrings.Put
+ 0001:000E665C       ORCtrls.TORStrings.PutObject
+ 0001:000E6674       ORCtrls.TORStrings.SetUpdateState
+ 0001:000E668C       ORCtrls.TORStrings.Verify
+ 0001:000ED97C       ORCtrls.TORTreeNode.EnsureVisible
+ 0001:000EDA08       ORCtrls.TORTreeNode.GetORTreeView
+ 0001:000EDA20       ORCtrls.TORTreeNode.GetParent
+ 0001:000EDA38       ORCtrls.TORTreeNode.GetText
+ 0001:000EDA4C       ORCtrls.TORTreeNode.SetBold
+ 0001:000EDE04       ORCtrls.TORTreeNode.SetCaption
+ 0001:000EDA94       ORCtrls.TORTreeNode.SetPiece
+ 0001:000EDAD0       ORCtrls.TORTreeNode.SetStringData
+ 0001:000EDB7C       ORCtrls.TORTreeNode.SetText
+ 0001:000EDB84       ORCtrls.TORTreeNode.UpdateText
+ 0001:000EDEB4       ORCtrls.TORTreeView.CNNotify
+ 0001:000EDF34       ORCtrls.TORTreeView.Create
+ 0001:000EDF70       ORCtrls.TORTreeView.CreateNode
+ 0001:000EE008       ORCtrls.TORTreeView.FindPieceNode
+ 0001:000EDFA8       ORCtrls.TORTreeView.FindPieceNode
+ 0001:000EE0E0       ORCtrls.TORTreeView.GetExpandedIDStr
+ 0001:000EE338       ORCtrls.TORTreeView.GetHorzScrollPos
+ 0001:000EE474       ORCtrls.TORTreeView.GetNodeID
+ 0001:000EE34C       ORCtrls.TORTreeView.GetVertScrollPos
+ 0001:000EE360       ORCtrls.TORTreeView.RenameNodes
+ 0001:000EE1D4       ORCtrls.TORTreeView.SetExpandedIDStr
+ 0001:000EE428       ORCtrls.TORTreeView.SetHorzScrollPos
+ 0001:000EE414       ORCtrls.TORTreeView.SetNodeDelim
+ 0001:000EE444       ORCtrls.TORTreeView.SetNodePiece
+ 0001:000EE538       ORCtrls.TORTreeView.SetShortNodeCaptions
+ 0001:000EE458       ORCtrls.TORTreeView.SetVertScrollPos
+ 0001:000ED280       ORCtrls.TSizeRatio.Create
+ 0003:00002870       ORCtrls.uDropPanelOpenCount
+ 0004:000036DC       ORCtrls.uItemTip
+ 0004:000036E0       ORCtrls.uItemTipCount
+ 0004:000036D8       ORCtrls.uKeyHookHandle
+ 0004:000036E4       ORCtrls.uNewStyle
+ 0004:00003768       ORCtrls.uOldShowHintsSetting
+ 0004:00004A18       ORCtrlsVA508Compatibility..01
+ 0001:001816B8       ORCtrlsVA508Compatibility..TLBMgr
+ 0001:00181604       ORCtrlsVA508Compatibility..TORCheckBox508Manager
+ 0001:00181840       ORCtrlsVA508Compatibility..TORComboBox508Manager
+ 0001:00181B10       ORCtrlsVA508Compatibility..TORDateButton508Manager
+ 0001:001818F4       ORCtrlsVA508Compatibility..TORDayCombo508Manager
+ 0001:00181718       ORCtrlsVA508Compatibility..TORListBox508Manager
+ 0001:001824C4       ORCtrlsVA508Compatibility..TORListBoxCheckBoxes508Manager
+ 0001:0018253C       ORCtrlsVA508Compatibility..TORListBoxMultiSelect508Manager
+ 0001:001825B4       ORCtrlsVA508Compatibility..TORListBoxStandard508Manager
+ 0001:001819A8       ORCtrlsVA508Compatibility..TORMonthCombo508Manager
+ 0001:00181A5C       ORCtrlsVA508Compatibility..TORYearEdit508Manager
+ 0001:001817CC       ORCtrlsVA508Compatibility..TVA508TORDateComboComplexManager
+ 0001:00182D74       ORCtrlsVA508Compatibility.Finalization
+ 0001:00181BC4       ORCtrlsVA508Compatibility.GetEditBox
+ 0001:00181C10       ORCtrlsVA508Compatibility.ORComboBoxAlternateHandle
+ 0002:000010B0       ORCtrlsVA508Compatibility.ORCtrlsVA508Compatibility
+ 0001:00181C30       ORCtrlsVA508Compatibility.RegisterORComponents
+ 0001:00182A9C       ORCtrlsVA508Compatibility.TLBMgr.GetIdx
+ 0001:001823A8       ORCtrlsVA508Compatibility.TORCheckBox508Manager.Create
+ 0001:001823F4       ORCtrlsVA508Compatibility.TORCheckBox508Manager.GetComponentName
+ 0001:00182440       ORCtrlsVA508Compatibility.TORCheckBox508Manager.GetInstructions
+ 0001:0018245C       ORCtrlsVA508Compatibility.TORCheckBox508Manager.GetState
+ 0001:00182D14       ORCtrlsVA508Compatibility.TORComboBox508Manager.Create
+ 0001:00182D60       ORCtrlsVA508Compatibility.TORComboBox508Manager.GetValue
+ 0001:00182CA4       ORCtrlsVA508Compatibility.TORDateButton508Manager.Create
+ 0001:00182CF0       ORCtrlsVA508Compatibility.TORDateButton508Manager.GetCaption
+ 0001:00182B58       ORCtrlsVA508Compatibility.TORDayCombo508Manager.Create
+ 0001:00182BA4       ORCtrlsVA508Compatibility.TORDayCombo508Manager.GetCaption
+ 0001:0018262C       ORCtrlsVA508Compatibility.TORListBox508Manager.Create
+ 0001:00182678       ORCtrlsVA508Compatibility.TORListBox508Manager.Destroy
+ 0001:001826CC       ORCtrlsVA508Compatibility.TORListBox508Manager.GetComponentName
+ 0001:001827A0       ORCtrlsVA508Compatibility.TORListBox508Manager.GetCurrent
+ 0001:001826EC       ORCtrlsVA508Compatibility.TORListBox508Manager.GetItem
+ 0001:0018273C       ORCtrlsVA508Compatibility.TORListBox508Manager.GetItemInstructions
+ 0001:0018275C       ORCtrlsVA508Compatibility.TORListBox508Manager.GetState
+ 0001:0018277C       ORCtrlsVA508Compatibility.TORListBox508Manager.GetValue
+ 0001:00182818       ORCtrlsVA508Compatibility.TORListBoxCheckBoxes508Manager.GetComponentName
+ 0001:00182844       ORCtrlsVA508Compatibility.TORListBoxCheckBoxes508Manager.GetItemInstructions
+ 0001:00182884       ORCtrlsVA508Compatibility.TORListBoxCheckBoxes508Manager.GetState
+ 0001:001828E4       ORCtrlsVA508Compatibility.TORListBoxMultiSelect508Manager.GetComponentName
+ 0001:00182918       ORCtrlsVA508Compatibility.TORListBoxMultiSelect508Manager.GetItemInstructions
+ 0001:001829B4       ORCtrlsVA508Compatibility.TORListBoxMultiSelect508Manager.GetState
+ 0001:00182A28       ORCtrlsVA508Compatibility.TORListBoxStandard508Manager.GetComponentName
+ 0001:00182A50       ORCtrlsVA508Compatibility.TORListBoxStandard508Manager.GetItemInstructions
+ 0001:00182A5C       ORCtrlsVA508Compatibility.TORListBoxStandard508Manager.GetState
+ 0001:00182BC4       ORCtrlsVA508Compatibility.TORMonthCombo508Manager.Create
+ 0001:00182C10       ORCtrlsVA508Compatibility.TORMonthCombo508Manager.GetCaption
+ 0001:00182C34       ORCtrlsVA508Compatibility.TORYearEdit508Manager.Create
+ 0001:00182C80       ORCtrlsVA508Compatibility.TORYearEdit508Manager.GetCaption
+ 0001:00182AC0       ORCtrlsVA508Compatibility.TVA508TORDateComboComplexManager.Create
+ 0001:00182AFC       ORCtrlsVA508Compatibility.TVA508TORDateComboComplexManager.Refresh
+ 0004:00004914       ORDtTm..01
+ 0001:0012B4E4       ORDtTm..TORDateBox
+ 0001:0012B130       ORDtTm..TORDateButton
+ 0001:0012BBB0       ORDtTm..TORDateCombo
+ 0001:0012B298       ORDtTm..TORDateEdit
+ 0001:0012AFF8       ORDtTm..TORDateTimeDlg
+ 0001:0012B710       ORDtTm..TORDayCombo
+ 0001:0012ABF0       ORDtTm..TORfrmDtTm
+ 0001:0012B864       ORDtTm..TORMonthCombo
+ 0001:0012B9C0       ORDtTm..TORYearEdit
+ 0001:0012BF50       ORDtTm.ActiveBroker
+ 0003:00003304       ORDtTm.DaysInMonth
+ 0001:0012DC2C       ORDtTm.DaysPerMonth
+ 0001:0012F760       ORDtTm.Finalization
+ 0001:0012DBE0       ORDtTm.IsLeapYear
+ 0001:0012C2C4       ORDtTm.LoadEllipsis
+ 0002:00000F0C       ORDtTm.ORDtTm
+ 0001:0012C150       ORDtTm.RelativeDateTime
+ 0001:0012BF7C       ORDtTm.ServerFMNow
+ 0001:0012C020       ORDtTm.ServerNow
+ 0001:0012C0A8       ORDtTm.ServerParseFMDate
+ 0001:0012C058       ORDtTm.ServerToday
+ 0001:0012D190       ORDtTm.TORDateBox.ButtonClick
+ 0001:0012D320       ORDtTm.TORDateBox.Change
+ 0001:0012CF04       ORDtTm.TORDateBox.Create
+ 0001:0012DB8C       ORDtTm.TORDateBox.GetCaption
+ 0001:0012DBB0       ORDtTm.TORDateBox.GetDynamicProperty
+ 0001:0012D384       ORDtTm.TORDateBox.GetFMDateTime
+ 0001:0012D430       ORDtTm.TORDateBox.GetRelativeTime
+ 0001:0012D9EC       ORDtTm.TORDateBox.IsValid
+ 0001:0012D33C       ORDtTm.TORDateBox.KeyDown
+ 0001:0012DA9C       ORDtTm.TORDateBox.SetBlackColorMode
+ 0001:0012DAE4       ORDtTm.TORDateBox.SetCaption
+ 0001:0012D578       ORDtTm.TORDateBox.SetDateOnly
+ 0001:0012D6E0       ORDtTm.TORDateBox.SetEditRect
+ 0001:0012D628       ORDtTm.TORDateBox.SetFMDateTime
+ 0001:0012D654       ORDtTm.TORDateBox.SetRequireTime
+ 0001:0012D0B0       ORDtTm.TORDateBox.SetTemplateField
+ 0001:0012D174       ORDtTm.TORDateBox.SupportsDynamicProperty
+ 0001:0012D748       ORDtTm.TORDateBox.UpdateText
+ 0001:0012D860       ORDtTm.TORDateBox.Validate
+ 0001:0012D024       ORDtTm.TORDateBox.WMSize
+ 0001:0012EF30       ORDtTm.TORDateCombo.BtnClicked
+ 0001:0012EDF4       ORDtTm.TORDateCombo.CheckDays
+ 0001:0012F524       ORDtTm.TORDateCombo.CMFontChanged
+ 0001:0012DCBC       ORDtTm.TORDateCombo.Create
+ 0001:0012EC18       ORDtTm.TORDateCombo.DayChanged
+ 0001:0012DD68       ORDtTm.TORDateCombo.Destroy
+ 0001:0012F4DC       ORDtTm.TORDateCombo.DoChange
+ 0001:0012F370       ORDtTm.TORDateCombo.GetFMDate
+ 0001:0012DDE4       ORDtTm.TORDateCombo.GetYearSize
+ 0001:0012DE20       ORDtTm.TORDateCombo.InitDays
+ 0001:0012DFB0       ORDtTm.TORDateCombo.InitMonths
+ 0001:0012EED8       ORDtTm.TORDateCombo.Loaded
+ 0001:0012EC68       ORDtTm.TORDateCombo.MonthChanged
+ 0001:0012EF04       ORDtTm.TORDateCombo.Paint
+ 0001:0012E0F8       ORDtTm.TORDateCombo.Rebuild
+ 0001:0012F508       ORDtTm.TORDateCombo.Resized
+ 0001:0012E7C4       ORDtTm.TORDateCombo.SetBlackColorMode
+ 0001:0012E818       ORDtTm.TORDateCombo.SetDay
+ 0001:0012F3CC       ORDtTm.TORDateCombo.SetFMDate
+ 0001:0012E8D4       ORDtTm.TORDateCombo.SetIncludeBtn
+ 0001:0012E90C       ORDtTm.TORDateCombo.SetIncludeDay
+ 0001:0012E968       ORDtTm.TORDateCombo.SetIncludeMonth
+ 0001:0012EA4C       ORDtTm.TORDateCombo.SetLongMonths
+ 0001:0012E9C4       ORDtTm.TORDateCombo.SetMonth
+ 0001:0012F728       ORDtTm.TORDateCombo.SetTemplateField
+ 0001:0012EA84       ORDtTm.TORDateCombo.SetYear
+ 0001:0012F54C       ORDtTm.TORDateCombo.Text
+ 0001:0012ECC0       ORDtTm.TORDateCombo.YearChanged
+ 0001:0012F280       ORDtTm.TORDateCombo.YearKeyPress
+ 0001:0012F0EC       ORDtTm.TORDateCombo.YearUDChange
+ 0001:0012CED4       ORDtTm.TORDateEdit.CreateParams
+ 0001:0012CAA4       ORDtTm.TORDateTimeDlg.Create
+ 0001:0012CB10       ORDtTm.TORDateTimeDlg.Execute
+ 0001:0012CE0C       ORDtTm.TORDateTimeDlg.GetFMDateTime
+ 0001:0012CE30       ORDtTm.TORDateTimeDlg.SetDateOnly
+ 0001:0012CE74       ORDtTm.TORDateTimeDlg.SetFMDateTime
+ 0001:0012CEA8       ORDtTm.TORDateTimeDlg.SetRequireTime
+ 0001:0012C3AC       ORDtTm.TORfrmDtTm.calSelectChange
+ 0001:0012CA68       ORDtTm.TORfrmDtTm.cmdCancelClick
+ 0001:0012C82C       ORDtTm.TORfrmDtTm.cmdMidnightClick
+ 0001:0012C788       ORDtTm.TORfrmDtTm.cmdNowClick
+ 0001:0012C860       ORDtTm.TORfrmDtTm.cmdOKClick
+ 0001:0012C524       ORDtTm.TORfrmDtTm.cmdTodayClick
+ 0001:0012C36C       ORDtTm.TORfrmDtTm.FormCreate
+ 0001:0012C4B4       ORDtTm.TORfrmDtTm.imgNextMonthClick
+ 0001:0012C46C       ORDtTm.TORfrmDtTm.imgNextMonthMouseDown
+ 0001:0012C4FC       ORDtTm.TORfrmDtTm.imgNextMonthMouseUp
+ 0001:0012C494       ORDtTm.TORfrmDtTm.imgPrevMonthClick
+ 0001:0012C444       ORDtTm.TORfrmDtTm.imgPrevMonthMouseDown
+ 0001:0012C4D4       ORDtTm.TORfrmDtTm.imgPrevMonthMouseUp
+ 0001:0012CA88       ORDtTm.TORfrmDtTm.Loaded
+ 0001:0012C5D8       ORDtTm.TORfrmDtTm.lstHourClick
+ 0001:0012C68C       ORDtTm.TORfrmDtTm.lstMinuteClick
+ 0001:0012C588       ORDtTm.TORfrmDtTm.txtTimeChange
+ 0001:0012DC74       ORDtTm.TORYearEdit.SetTemplateField
+ 0004:00004918       ORDtTm.uServerToday
+ 0001:0012A894       ORDtTmCal..TORCalendar
+ 0001:0012AA24       ORDtTmCal.TORCalendar.DrawCell
+ 0001:0012AB80       ORDtTmCal.TORCalendar.KeyDown
+ 0001:00134354       ORDtTmRng..TORDateRangeDlg
+ 0001:00134120       ORDtTmRng..TORfrmDateRange
+ 0001:001345C8       ORDtTmRng.TORDateRangeDlg.Create
+ 0001:00134694       ORDtTmRng.TORDateRangeDlg.Execute
+ 0001:00134914       ORDtTmRng.TORDateRangeDlg.SetDateOnly
+ 0001:00134A08       ORDtTmRng.TORDateRangeDlg.SetFMDateStart
+ 0001:00134A6C       ORDtTmRng.TORDateRangeDlg.SetFMDateStop
+ 0001:001349A8       ORDtTmRng.TORDateRangeDlg.SetRequireTime
+ 0001:00134AD0       ORDtTmRng.TORDateRangeDlg.SetTextOfStart
+ 0001:00134AEC       ORDtTmRng.TORDateRangeDlg.SetTextOfStop
+ 0001:00134BD4       ORDtTmRng.TORfrmDateRange.cmdCancelClick
+ 0001:00134B08       ORDtTmRng.TORfrmDateRange.cmdOKClick
+ 0001:00134BE0       ORDtTmRng.TORfrmDateRange.FormCreate
+ 0001:00134C8C       ORDtTmRng.TORfrmDateRange.FormDestroy
+ 0001:00134CA8       ORDtTmRng.TORfrmDateRange.Loaded
+ 0004:0000376C       ORFn..1
+ 0001:000F0B8C       ORFn..EFMDateTimeError
+ 0001:000F3140       ORFn..QuickAddError
+ 0001:000F2CA8       ORFn..QuickCopyError
+ 0001:000F4DC4       ORFn.AdjustForWindowsXPStyleTitleBar
+ 0004:00003774       ORFn.AlignList
+ 0004:00003778       ORFn.AnchorList
+ 0001:000F47A8       ORFn.AnchorsToStr
+ 0001:000F3B40       ORFn.BaseFont
+ 0001:000F5854       ORFn.BlackColorScheme
+ 0001:000F592C       ORFn.BlackColorSchemeUpdate
+ 0003:000028A4       ORFn.BOOLCHAR
+ 0001:000F1810       ORFn.CharAt
+ 0001:000F571C       ORFn.CheckColorScheme
+ 0001:000F262C       ORFn.ComparePieces
+ 0001:000F5AAC       ORFn.ComponentUpdateColorsFor508Compliance
+ 0001:000F1858       ORFn.ContainsAlpha
+ 0001:000F18B8       ORFn.ContainsVisibleChar
+ 0001:000F1914       ORFn.ConvertSpecialStrings
+ 0003:00002994       ORFn.CRC32_TABLE
+ 0001:000F1A00       ORFn.CRCForFile
+ 0001:000F1AB0       ORFn.CRCForStrings
+ 0001:000F0BEC       ORFn.DateTimeToFMDateTime
+ 0001:000F2BDC       ORFn.DelimCount
+ 0001:000F608C       ORFn.EnterIsPressed
+ 0001:000F1F90       ORFn.ExtractDefault
+ 0001:000F1EA4       ORFn.ExtractFloat
+ 0001:000F1DC4       ORFn.ExtractInteger
+ 0001:000F20D4       ORFn.ExtractItems
+ 0001:000F220C       ORFn.ExtractText
+ 0001:000F36AC       ORFn.FastAddStrings
+ 0001:000F3574       ORFn.FastAssign
+ 0004:00003770       ORFn.FBaseFont
+ 0001:000F1BA8       ORFn.FilteredString
+ 0001:000F60A4       ORFn.Finalization
+ 0001:000F0EDC       ORFn.FMDateTimeOffsetBy
+ 0001:000F0C7C       ORFn.FMDateTimeToDateTime
+ 0001:000F3C18       ORFn.FontWidthPixel
+ 0001:000F3BA0       ORFn.FontWidthSubPixel
+ 0001:000F46C4       ORFn.ForceInsideWorkArea
+ 0001:000F0F60       ORFn.FormatFMDateTime
+ 0001:000F14F8       ORFn.FormatFMDateTimeStr
+ 0001:000F5894       ORFn.Get508CompliantColor
+ 0001:000F2D04       ORFn.GetStrings
+ 0001:000F319C       ORFn.GetStrings
+ 0001:000F1784       ORFn.HigherOf
+ 0003:00002DB0       ORFn.IdleCaller
+ 0001:000F39A4       ORFn.InfoBox
+ 0001:000F2344       ORFn.InvertStringList
+ 0001:000F1540       ORFn.IsFMDateTime
+ 0001:000F5E6C       ORFn.KillObj
+ 0001:000F39E8       ORFn.LimitEditWidth
+ 0001:000F37D8       ORFn.LimitStringLength
+ 0001:000F5C7C       ORFn.ListGridDrawCell
+ 0001:000F5D50       ORFn.ListGridDrawLines
+ 0001:000F17AC       ORFn.LowerOf
+ 0001:000F3B54       ORFn.MainFont
+ 0001:000F3C5C       ORFn.MainFontHeight
+ 0001:000F3B88       ORFn.MainFontSize
+ 0001:000F3C44       ORFn.MainFontWidth
+ 0001:000F1618       ORFn.MakeFMDateTime
+ 0001:000F5F4C       ORFn.menuHideAllBut
+ 0001:000F2394       ORFn.MixedCase
+ 0001:000F2514       ORFn.MixedCaseByPiece
+ 0001:000F2484       ORFn.MixedCaseList
+ 0003:000028DC       ORFn.MONTH_NAMES_LONG
+ 0003:000028AC       ORFn.MONTH_NAMES_SHORT
+ 0001:000F5874       ORFn.NormalColorScheme
+ 0001:000F5318       ORFn.NumCharsFitInWidth
+ 0002:00000A34       ORFn.ORFn
+ 0001:000F25D8       ORFn.Piece
+ 0001:000F2600       ORFn.Pieces
+ 0001:000F276C       ORFn.PiecesToList
+ 0001:000F5478       ORFn.PopupComponent
+ 0003:00002DA8       ORFn.PURE_BLACK
+ 0001:000F34A4       ORFn.QuickAdd
+ 0001:000F3010       ORFn.QuickCopy
+ 0001:000F3C94       ORFn.RedrawActivate
+ 0001:000F3C78       ORFn.RedrawSuspend
+ 0001:000F54CC       ORFn.ReformatMemoParagraph
+ 0003:00002974       ORFn.ReplaceChars
+ 0001:000F3CBC       ORFn.ResetSelectedForList
+ 0001:000F4C40       ORFn.ResizeAnchoredFormToFont
+ 0001:000F4358       ORFn.ResizeChartFonts
+ 0001:000F3F80       ORFn.ResizeCheckListBox
+ 0001:000F3F14       ORFn.ResizeComboBox
+ 0001:000F3FB4       ORFn.ResizeDescendants
+ 0001:000F453C       ORFn.ResizeFontsInDescendants
+ 0001:000F4AA0       ORFn.ResizeFormToFont
+ 0001:000F3E20       ORFn.ResizeHeaderControl
+ 0001:000F3D44       ORFn.ResizeHeight
+ 0001:000F3F4C       ORFn.ResizeListBox
+ 0001:000F3E90       ORFn.ResizeListView
+ 0001:000F3DA0       ORFn.ResizeToFont
+ 0001:000F3CFC       ORFn.ResizeWidth
+ 0001:000F49BC       ORFn.RestoreAlign
+ 0001:000F2820       ORFn.ReverseStr
+ 0001:000F5B48       ORFn.ScanAllComponents
+ 0003:000028A8       ORFn.ScrollBarHeight
+ 0003:00002954       ORFn.SearchChars
+ 0001:000F4E98       ORFn.SetEqualTabStops
+ 0001:000F166C       ORFn.SetListFMDateTime
+ 0001:000F28AC       ORFn.SetPiece
+ 0001:000F29D0       ORFn.SetPieces
+ 0001:000F603C       ORFn.ShiftTabIsPressed
+ 0001:000F4FC8       ORFn.ShowMsgOn
+ 0001:000F2A88       ORFn.SortByPiece
+ 0001:000F4F78       ORFn.StatusText
+ 0001:000F481C       ORFn.StrToAnchors
+ 0001:000F17D4       ORFn.StrToFloatDef
+ 0001:000F48DC       ORFn.SuspendAlign
+ 0001:000F5FEC       ORFn.TabIsPressed
+ 0001:000F50BC       ORFn.TextHeightByFont
+ 0001:000F4FF8       ORFn.TextWidthByFont
+ 0001:000F0F14       ORFn.TrimFormatCount
+ 0003:00002D98       ORFn.uBlackColorScheme
+ 0003:00002DAC       ORFn.uBorderlessWindowColorWhenBlack
+ 0003:00002DA4       ORFn.uCheckColorScheme
+ 0003:00002DA0       ORFn.uMaroonColorWhenBlack
+ 0003:00002D94       ORFn.uNormalColorScheme
+ 0001:000F5BF0       ORFn.UpdateColorsFor508Compliance
+ 0001:000F199C       ORFn.UpdateCrc32
+ 0001:000F5C20       ORFn.UpdateReadOnlyColorScheme
+ 0003:00002D9C       ORFn.uWhiteColorScheme
+ 0001:000F376C       ORFn.ValidFileName
+ 0001:000F5190       ORFn.WrappedTextHeightByFont
+ 0004:000048F0       ORNet..1
+ 0003:000032A0       ORNet.AppStartedCursorForm
+ 0001:00127448       ORNet.AuthorizedOption
+ 0003:000032AC       ORNet.BoolChar
+ 0001:001273D8       ORNet.CallBroker
+ 0001:00126E00       ORNet.CallBrokerInContext
+ 0001:00127784       ORNet.CallV
+ 0001:0012748C       ORNet.ConnectToServer
+ 0001:00127944       ORNet.DottedIPStr
+ 0001:0012671C       ORNet.EnsureBroker
+ 0001:001279B0       ORNet.Finalization
+ 0001:00127728       ORNet.GetRPCCursor
+ 0001:00127910       ORNet.GetRPCMax
+ 0001:00126DDC       ORNet.IsBaseContext
+ 0001:00127918       ORNet.LoadRPCData
+ 0002:00000E28       ORNet.ORNet
+ 0001:001278F8       ORNet.RetainedRPCCount
+ 0004:000048E8       ORNet.RPCBrokerV
+ 0004:000048EC       ORNet.RPCLastCall
+ 0001:001277D0       ORNet.sCallV
+ 0001:001273E8       ORNet.SetBrokerServer
+ 0001:00126784       ORNet.SetList
+ 0001:0012682C       ORNet.SetParams
+ 0001:00127904       ORNet.SetRetainedRPCMax
+ 0001:0012785C       ORNet.tCallV
+ 0003:000032A4       ORNet.uBaseContext
+ 0004:000048F4       ORNet.uCallList
+ 0003:000032A8       ORNet.uCurrentContext
+ 0004:000048F8       ORNet.uMaxCalls
+ 0001:00126D24       ORNet.UpdateContext
+ 0004:000048FC       ORNet.uShowRPCs
+ 0001:000F618C       ORSystem.AppOutOfDate
+ 0001:000F6F30       ORSystem.BorlandDLLVersionOK
+ 0001:000F64F8       ORSystem.ClientVersion
+ 0001:000F6638       ORSystem.CompareVersion
+ 0001:000F6128       ORSystem.FileLastWrite
+ 0001:000F6790       ORSystem.FullToFilePart
+ 0001:000F681C       ORSystem.FullToPathPart
+ 0001:000F68BC       ORSystem.ParamIndex
+ 0001:000F6988       ORSystem.ParamSearch
+ 0001:000F6AD8       ORSystem.QuotedExeName
+ 0001:000F6C50       ORSystem.RegReadBool
+ 0001:000F6B9C       ORSystem.RegReadStr
+ 0001:000F6DD8       ORSystem.RunProgram
+ 0001:000F6E20       ORSystem.UpdateSelf
+ 0001:000F6D00       ORSystem.UserRegReadDateTime
+ 0004:000034A0       Printers..3
+ 0001:000474B4       Printers..EPrinter
+ 0001:0004750C       Printers..TPrinter
+ 0001:00047748       Printers..TPrinterCanvas
+ 0001:000475E4       Printers..TPrinterDevice
+ 0001:000475C0       Printers.AbortProc
+ 0001:00047574       Printers.FetchStr
+ 0001:000485CC       Printers.Finalization
+ 0003:00001220       Printers.FPrinter
+ 0001:000485AC       Printers.Printer
+ 0002:00000404       Printers.Printers
+ 0001:000475A8       Printers.RaiseError
+ 0001:00047B58       Printers.TPrinter.BeginDoc
+ 0001:00047AE8       Printers.TPrinter.CheckPrinting
+ 0001:00047900       Printers.TPrinter.Create
+ 0001:0004793C       Printers.TPrinter.Destroy
+ 0001:00047BE0       Printers.TPrinter.EndDoc
+ 0001:000485A0       Printers.TPrinter.FreeFonts
+ 0001:00048564       Printers.TPrinter.FreePrinters
+ 0001:00047F40       Printers.TPrinter.GetCanvas
+ 0001:00047F60       Printers.TPrinter.GetHandle
+ 0001:00047F74       Printers.TPrinter.GetNumCopies
+ 0001:00048050       Printers.TPrinter.GetPageHeight
+ 0001:0004806C       Printers.TPrinter.GetPageWidth
+ 0001:00047C44       Printers.TPrinter.GetPrinter
+ 0001:00048088       Printers.TPrinter.GetPrinterIndex
+ 0001:000480A0       Printers.TPrinter.GetPrinters
+ 0001:00047C14       Printers.TPrinter.NewPage
+ 0001:00047FD8       Printers.TPrinter.SetNumCopies
+ 0001:00047CEC       Printers.TPrinter.SetPrinter
+ 0001:00047CB0       Printers.TPrinter.SetPrinterCapabilities
+ 0001:000479B8       Printers.TPrinter.SetState
+ 0001:000482E0       Printers.TPrinter.SetToDefaultPrinter
+ 0001:00047898       Printers.TPrinterCanvas.Changing
+ 0001:00047838       Printers.TPrinterCanvas.Create
+ 0001:00047874       Printers.TPrinterCanvas.CreateHandle
+ 0001:000478B8       Printers.TPrinterCanvas.UpdateFont
+ 0001:00047664       Printers.TPrinterDevice.Create
+ 0001:000476C4       Printers.TPrinterDevice.IsEqual
+ 0004:00004BC4       Provider..41
+ 0003:00003780       Provider.ExtraFieldProps
+ 0001:001ACDD4       Provider.Finalization
+ 0002:000011FC       Provider.Provider
+ 0004:000060B4       rConsults..1
+ 0001:002D5158       rConsults.AddComment
+ 0001:002D5214       rConsults.AdminComplete
+ 0001:002D49DC       rConsults.AttachMedicineResult
+ 0001:002D5A60       rConsults.ConsultCanBeResubmitted
+ 0001:002D5928       rConsults.ConsultMessage
+ 0001:002D4B48       rConsults.ConsultServiceUser
+ 0001:002D4F80       rConsults.DenyConsult
+ 0001:002D3DD8       rConsults.DfltClinProcTitle
+ 0001:002D3DF0       rConsults.DfltClinProcTitleName
+ 0001:002D3A4C       rConsults.DfltConsultTitle
+ 0001:002D3A64       rConsults.DfltConsultTitleName
+ 0001:002D501C       rConsults.DiscontinueConsult
+ 0001:002D41C8       rConsults.DisplayResults
+ 0001:002D6E70       rConsults.Finalization
+ 0001:002D481C       rConsults.FindConsult
+ 0001:002D50B8       rConsults.ForwardConsult
+ 0001:002D4C98       rConsults.GetActionMenuLevel
+ 0001:002D48A0       rConsults.GetAssignableMedResults
+ 0001:002D6C38       rConsults.GetConsultOrderIEN
+ 0001:002D421C       rConsults.GetConsultRec
+ 0001:002D3F28       rConsults.GetConsultsList
+ 0001:002D65B4       rConsults.GetCurrentContext
+ 0001:002D6880       rConsults.GetDefaultReasonForRequest
+ 0001:002D4948       rConsults.GetDetailedMedicineResults
+ 0001:002D57A8       rConsults.GetFormattedSF513
+ 0001:002D6A58       rConsults.GetNewDialog
+ 0001:002D5998       rConsults.GetProcedureIEN
+ 0001:002D5A14       rConsults.GetProcedureServices
+ 0001:002D6B64       rConsults.GetProvDxMode
+ 0001:002D48F4       rConsults.GetRemovableMedResults
+ 0001:002D6C80       rConsults.GetSavedCPFields
+ 0001:002D6AE4       rConsults.GetServiceIEN
+ 0001:002D69B4       rConsults.GetServicePrerequisites
+ 0001:002D5844       rConsults.GetUnresolvedConsultsInfo
+ 0001:002D3B9C       rConsults.IdentifyClinProcClass
+ 0001:002D3810       rConsults.IdentifyConsultsClass
+ 0001:002D3E14       rConsults.ListClinProcTitlesShort
+ 0001:002D3A88       rConsults.ListConsultTitlesShort
+ 0001:002D3C38       rConsults.LoadClinProcTitles
+ 0001:002D4178       rConsults.LoadConsultDetail
+ 0001:002D5AA0       rConsults.LoadConsultForEdit
+ 0001:002D38AC       rConsults.LoadConsultTitles
+ 0001:002D54BC       rConsults.LoadServiceList
+ 0001:002D5588       rConsults.LoadServiceListWithSynonyms
+ 0001:002D5510       rConsults.LoadServiceListWithSynonyms
+ 0001:002D53D8       rConsults.ODForConsults
+ 0001:002D541C       rConsults.ODForProcedures
+ 0001:002D56FC       rConsults.PrintSF513ToDevice
+ 0002:0000176C       rConsults.rConsults
+ 0001:002D6930       rConsults.ReasonForRequestEditable
+ 0001:002D4E2C       rConsults.ReceiveConsult
+ 0001:002D4AA0       rConsults.RemoveMedicineResult
+ 0001:002D3DB8       rConsults.ResetClinProcTitles
+ 0001:002D3A2C       rConsults.ResetConsultTitles
+ 0001:002D604C       rConsults.ResubmitConsult
+ 0001:002D674C       rConsults.SaveCurrentContext
+ 0001:002D4EAC       rConsults.ScheduleConsult
+ 0001:002D560C       rConsults.ShowSF513
+ 0001:002D5300       rConsults.SigFindings
+ 0001:002D3EC0       rConsults.SubSetOfClinProcTitles
+ 0001:002D3B34       rConsults.SubSetOfConsultTitles
+ 0001:002D5460       rConsults.SubSetOfProcedures
+ 0001:002D476C       rConsults.SubSetOfStatus
+ 0001:002D47C4       rConsults.SubSetOfUrgencies
+ 0004:000060A8       rConsults.uClinProcClass
+ 0004:000060AC       rConsults.uClinProcTitles
+ 0004:000060A0       rConsults.uConsultsClass
+ 0004:000060A4       rConsults.uConsultTitles
+ 0004:000060B8       rConsults.uLastOrderedIEN
+ 0004:000060BC       rConsults.uLastOrderMsg
+ 0004:000060B0       rConsults.uUnresolvedConsults
+ 0004:00006760       rCore..1
+ 0001:003AD4E8       rCore.AutoUnflagAlertedOrders
+ 0001:003B07AC       rCore.CheckHL7TCPLink
+ 0001:003AF4EC       rCore.CheckSensitiveRecordAccess
+ 0001:003AF604       rCore.CurrentLocationForPatient
+ 0001:003AF6EC       rCore.DateOfDeath
+ 0001:003AD584       rCore.DeleteAlert
+ 0001:003AD5FC       rCore.DeleteAlertForUser
+ 0001:003AC814       rCore.DfltDateRangeClinic
+ 0001:003ADA28       rCore.DfltPtList
+ 0001:003ADAD8       rCore.DfltPtListSrc
+ 0001:003AC864       rCore.ExternalName
+ 0001:003B093C       rCore.Finalization
+ 0001:003AC498       rCore.FMNow
+ 0001:003AC478       rCore.FMToday
+ 0001:003AC314       rCore.FormatSSN
+ 0001:003AD67C       rCore.ForwardAlert
+ 0001:003B08E0       rCore.GetDefaultPrinter
+ 0001:003ADF5C       rCore.GetDfltSort
+ 0001:003B01D0       rCore.GetDFNFromICN
+ 0001:003B0270       rCore.GetEncounterText
+ 0001:003AD978       rCore.GetNotificationFollowUpText
+ 0001:003AF76C       rCore.GetPtIDInfo
+ 0001:003AD7B4       rCore.GetSortMethod
+ 0001:003AD8FC       rCore.GetTIUAlertInfo
+ 0001:003ACA44       rCore.GetUserInfo
+ 0001:003ACEEC       rCore.GetUserListParam
+ 0001:003ACEB0       rCore.GetUserParam
+ 0001:003B0854       rCore.GetVistaWebAddress
+ 0001:003AD884       rCore.GetXQAData
+ 0001:003AC95C       rCore.GlobalRefForFile
+ 0001:003AFADC       rCore.HasLegacyData
+ 0001:003AD000       rCore.HasMenuOptionAccess
+ 0001:003B06D4       rCore.HasRemoteData
+ 0001:003ACF70       rCore.HasSecurityKey
+ 0001:003AC444       rCore.IsFMDate
+ 0001:003AC3F8       rCore.IsSSN
+ 0001:003AF478       rCore.KillRPLPtList
+ 0001:003B0478       rCore.ListAdmitAll
+ 0001:003B0390       rCore.ListApptAll
+ 0001:003ADEF0       rCore.ListClinicTop
+ 0001:003AC7C4       rCore.ListDateRangeClinic
+ 0001:003ADCA0       rCore.ListProviderTop
+ 0001:003AE574       rCore.ListPtByClinic
+ 0001:003AE020       rCore.ListPtByDflt
+ 0001:003AEDBC       rCore.ListPtByFullSSN
+ 0001:003AE9F0       rCore.ListPtByLast5
+ 0001:003AE8A0       rCore.ListPtByOther
+ 0001:003AE3E4       rCore.ListPtByProvider
+ 0001:003AF024       rCore.ListPtByRPLFullSSN
+ 0001:003AEBD4       rCore.ListPtByRPLLast5
+ 0001:003AE4EC       rCore.ListPtBySpecialty
+ 0001:003AE46C       rCore.ListPtByTeam
+ 0001:003AE958       rCore.ListPtByTimson
+ 0001:003AE7B0       rCore.ListPtByWard
+ 0001:003AF290       rCore.ListPtTop
+ 0001:003ADB94       rCore.ListSpecialtyAll
+ 0001:003ADBF8       rCore.ListTeamAll
+ 0001:003ADC54       rCore.ListWardAll
+ 0001:003AD140       rCore.LoadNotifications
+ 0001:003AFC10       rCore.LogSensitiveRecordAccess
+ 0001:003AC51C       rCore.MakeRelativeDateTime
+ 0001:003AF354       rCore.MakeRPLPtList
+ 0001:003AFCB0       rCore.MeansTestRequired
+ 0001:003AC8BC       rCore.PersonHasKey
+ 0002:00001F88       rCore.rCore
+ 0001:003AF3CC       rCore.ReadRPLPtList
+ 0001:003AD740       rCore.RenewAlert
+ 0001:003AE014       rCore.ResetDfltSort
+ 0001:003ADB5C       rCore.SavePtListDflt
+ 0001:003AFDF0       rCore.SelectPatient
+ 0001:003AD7F4       rCore.SetSortMethod
+ 0001:003AC6C0       rCore.StrToFMDateTime
+ 0001:003ADE5C       rCore.SubSetOfActiveAndInactivePersons
+ 0001:003ADEF4       rCore.SubSetOfClinics
+ 0001:003ADD1C       rCore.SubSetOfCosigners
+ 0001:003AC998       rCore.SubsetOfDevices
+ 0001:003B0680       rCore.SubSetOfInpatientLocations
+ 0001:003B05D0       rCore.SubSetOfLocations
+ 0001:003B0628       rCore.SubSetOfNewLocs
+ 0001:003AF2EC       rCore.SubSetOfPatients
+ 0001:003AC9EC       rCore.SubSetOfPersons
+ 0001:003ADCA4       rCore.SubSetOfProviders
+ 0001:003ADDA8       rCore.SubSetOfUsersWithClass
+ 0001:003AD24C       rCore.UnsignedOrderAlertFollowup
+ 0001:003AD354       rCore.UpdateExpiringFlaggedOIAlerts
+ 0001:003AD2D4       rCore.UpdateExpiringMedAlerts
+ 0001:003AD1C8       rCore.UpdateUnsignedOrderAlerts
+ 0001:003AD3E0       rCore.UpdateUnverifiedMedAlerts
+ 0001:003AD464       rCore.UpdateUnverifiedOrderAlerts
+ 0003:00004064       rCore.uPtListDfltSort
+ 0001:003AC738       rCore.ValidDateTimeStr
+ 0001:003AD098       rCore.ValidESCode
+ 0004:000059C4       rCover..2
+ 0001:001E2D34       rCover..TCoverSheetList
+ 0001:001E3D64       rCover.AssignList
+ 0001:001E2F94       rCover.DetailAllergy
+ 0001:001E2E94       rCover.DetailGeneric
+ 0001:001E3100       rCover.DetailMed
+ 0001:001E2FFC       rCover.DetailPosting
+ 0001:001E2F2C       rCover.DetailProblem
+ 0001:001E31C4       rCover.ExtractActiveMeds
+ 0001:001E4538       rCover.Finalization
+ 0001:001E3A60       rCover.ListActiveProblems
+ 0001:001E4030       rCover.ListAllBackGround
+ 0001:001E3BD0       rCover.ListAllergies
+ 0001:001E35CC       rCover.ListGeneric
+ 0001:001E3C34       rCover.ListPostings
+ 0001:001E314C       rCover.LoadCoverSheetList
+ 0001:001E4380       rCover.LoadDemographics
+ 0003:00003900       rCover.MED_TYPE
+ 0001:001E4328       rCover.NoDataText
+ 0002:00001390       rCover.rCover
+ 0001:001E43D4       rCover.StartCoverSheet
+ 0001:001E44A0       rCover.StopCoverSheet
+ 0001:001E3CCC       rCover.SubListPresent
+ 0001:001E2D90       rCover.TCoverSheetList.Add
+ 0001:001E2DBC       rCover.TCoverSheetList.Create
+ 0001:001E2E6C       rCover.TCoverSheetList.CVlbl
+ 0001:001E2E80       rCover.TCoverSheetList.CVlst
+ 0001:001E2E58       rCover.TCoverSheetList.CVpln
+ 0001:001E2E18       rCover.TCoverSheetList.Destroy
+ 0004:00004B34       rDCSumm..1
+ 0001:00192B40       rDCSumm.ActOnDCDocument
+ 0001:00194608       rDCSumm.ChangeAttending
+ 0001:001927A0       rDCSumm.DfltDCSummTitle
+ 0001:001927B8       rDCSumm.DfltDCSummTitleName
+ 0001:00194CA0       rDCSumm.Finalization
+ 0001:00192D1C       rDCSumm.FindDT
+ 0001:00192E08       rDCSumm.FindExt
+ 0001:00192EE0       rDCSumm.FindInt
+ 0001:00192FC0       rDCSumm.FindInt64
+ 0001:00194288       rDCSumm.GetAttending
+ 0001:001947C8       rDCSumm.GetCurrentDCSummContext
+ 0001:001930BC       rDCSumm.GetDCSummForEdit
+ 0001:00194328       rDCSumm.GetDischargeDate
+ 0001:001927DC       rDCSumm.ListDCSummTitlesShort
+ 0001:00192C3C       rDCSumm.ListSummsForTree
+ 0001:00192938       rDCSumm.LoadDCSummPrefs
+ 0001:00192600       rDCSumm.LoadDCSummTitles
+ 0001:00193448       rDCSumm.LoadDCUrgencies
+ 0001:00193B88       rDCSumm.PutDCAddendum
+ 0001:00193EE8       rDCSumm.PutEditedDCSumm
+ 0001:0019361C       rDCSumm.PutNewDCSumm
+ 0002:000011AC       rDCSumm.rDCSumm
+ 0001:001944E4       rDCSumm.RequireMASVerification
+ 0001:001943C4       rDCSumm.RequireRelease
+ 0001:00192B00       rDCSumm.ResetDCSummPreferences
+ 0001:00192780       rDCSumm.ResetDCSummTitles
+ 0001:00192B20       rDCSumm.ReturnMaxDCSumms
+ 0001:00194A7C       rDCSumm.SaveCurrentDCSummContext
+ 0001:00193538       rDCSumm.SignDCDocument
+ 0001:00192888       rDCSumm.SubSetOfDCSummTitles
+ 0004:00004B3C       rDCSumm.uDCSummPrefs
+ 0004:00004B38       rDCSumm.uDCSummTitles
+ 0001:00132138       rECS..TECSReport
+ 0001:001323EC       rECS.FormatECSDate
+ 0001:001322E0       rECS.GetDivisionID
+ 0001:0013222C       rECS.GetVisitID
+ 0001:00132570       rECS.LoadECSReportText
+ 0001:00132794       rECS.PrintECSReportToDevice
+ 0001:0013235C       rECS.SaveUserPath
+ 0001:001321CC       rECS.TECSReport.Create
+ 0004:00003370       Registry..5
+ 0001:0002D050       Registry..ERegistryException
+ 0001:0002D0B0       Registry..TRegistry
+ 0001:0002D188       Registry.DataTypeToRegData
+ 0001:0002D980       Registry.Finalization
+ 0001:0002D144       Registry.IsRelative
+ 0001:0002D118       Registry.ReadError
+ 0001:0002D158       Registry.RegDataToDataType
+ 0002:000002E4       Registry.Registry
+ 0001:0002D27C       Registry.TRegistry.ChangeKey
+ 0001:0002D220       Registry.TRegistry.CloseKey
+ 0001:0002D1B0       Registry.TRegistry.Create
+ 0001:0002D590       Registry.TRegistry.DeleteValue
+ 0001:0002D1F4       Registry.TRegistry.Destroy
+ 0001:0002D2A0       Registry.TRegistry.GetBaseKey
+ 0001:0002D8E4       Registry.TRegistry.GetData
+ 0001:0002D6E0       Registry.TRegistry.GetDataInfo
+ 0001:0002D730       Registry.TRegistry.GetDataSize
+ 0001:0002D5B0       Registry.TRegistry.GetKeyInfo
+ 0001:0002D618       Registry.TRegistry.GetValueNames
+ 0001:0002D2B4       Registry.TRegistry.OpenKey
+ 0001:0002D3D8       Registry.TRegistry.OpenKeyReadOnly
+ 0001:0002D87C       Registry.TRegistry.PutData
+ 0001:0002D830       Registry.TRegistry.ReadBool
+ 0001:0002D848       Registry.TRegistry.ReadDateTime
+ 0001:0002D800       Registry.TRegistry.ReadInteger
+ 0001:0002D788       Registry.TRegistry.ReadString
+ 0001:0002D250       Registry.TRegistry.SetRootKey
+ 0001:0002D958       Registry.TRegistry.ValueExists
+ 0001:0002D758       Registry.TRegistry.WriteString
+ 0003:00000D60       Registry.Values
+ 0001:001BE084       rEventHooks.GetAllActiveCOMObjects
+ 0001:001BE0BC       rEventHooks.GetCOMObjectDetails
+ 0001:001BE044       rEventHooks.GetOrderAcceptGUIDs
+ 0001:001BDFD4       rEventHooks.GetPatientChangeGUIDs
+ 0001:00135F9C       rGraphs.onoff
+ 0001:00134EF0       rGraphs.rpcATestGroup
+ 0001:0013564C       rGraphs.rpcClass
+ 0001:00135ED4       rGraphs.rpcDateItem
+ 0001:00135C5C       rGraphs.rpcDeleteGraphProfile
+ 0001:0013504C       rGraphs.rpcDetailDay
+ 0001:00135168       rGraphs.rpcDetailSelected
+ 0001:00135268       rGraphs.rpcFastData
+ 0001:001352E0       rGraphs.rpcFastItems
+ 0001:00135368       rGraphs.rpcFastLabs
+ 0001:001353E0       rGraphs.rpcFastTask
+ 0001:00135448       rGraphs.rpcGetAllItems
+ 0001:00135884       rGraphs.rpcGetGraphDateRange
+ 0001:00135AB0       rGraphs.rpcGetGraphProfiles
+ 0001:0013591C       rGraphs.rpcGetGraphSettings
+ 0001:00135A10       rGraphs.rpcGetGraphSizing
+ 0001:001357C4       rGraphs.rpcGetItemData
+ 0001:00135598       rGraphs.rpcGetItems
+ 0001:00135D00       rGraphs.rpcGetTestSpec
+ 0001:001354B4       rGraphs.rpcGetTypes
+ 0001:00135D94       rGraphs.rpcGetViews
+ 0001:00135E4C       rGraphs.rpcLookupItems
+ 0001:00134F54       rGraphs.rpcPublicEdit
+ 0001:00134FF4       rGraphs.rpcReportParams
+ 0001:00135BAC       rGraphs.rpcSetGraphProfile
+ 0001:00135970       rGraphs.rpcSetGraphSettings
+ 0001:00135A64       rGraphs.rpcSetGraphSizing
+ 0001:001356F4       rGraphs.rpcTaxonomy
+ 0001:00134E98       rGraphs.rpcTestGroups
+ 0001:00135D4C       rGraphs.rpcTesting
+ 0001:00145D34       rLabs.AllTests
+ 0001:00145EC4       rLabs.ATest
+ 0001:00145F18       rLabs.ATestGroup
+ 0001:00145C68       rLabs.AtomicTests
+ 0001:00145D9C       rLabs.ChemTest
+ 0001:00146174       rLabs.Cumulative
+ 0001:00146E9C       rLabs.GetChart
+ 0001:001472F8       rLabs.GetFormattedLabReport
+ 0001:00146DB4       rLabs.GetNewestOldest
+ 0001:00146390       rLabs.Interim
+ 0001:0014682C       rLabs.InterimGrid
+ 0001:001467B0       rLabs.InterimSelect
+ 0001:001475F8       rLabs.LabPatchInstalled
+ 0001:001465A0       rLabs.Micro
+ 0001:00146F68       rLabs.PrintLabsToDevice
+ 0001:00146C50       rLabs.RemoteLab
+ 0001:001462AC       rLabs.RemoteLabCumulative
+ 0001:001464C0       rLabs.RemoteLabInterim
+ 0001:001466D0       rLabs.RemoteLabMicro
+ 0001:00146AEC       rLabs.RemoteLabReports
+ 0001:00146960       rLabs.Reports
+ 0001:0014601C       rLabs.SpecimenDefaults
+ 0001:00145CD0       rLabs.Specimens
+ 0001:00145E6C       rLabs.TestGroups
+ 0001:00147578       rLabs.TestInfo
+ 0004:000049C8       rLabs.uLabPatchInstalled
+ 0001:00145E04       rLabs.Users
+ 0001:00145F7C       rLabs.UTGAdd
+ 0001:00145FEC       rLabs.UTGDelete
+ 0001:00145FAC       rLabs.UTGReplace
+ 0001:001468A4       rLabs.Worksheet
+ 0001:001A9AB4       rMeds..TMedListRec
+ 0001:001A9B50       rMeds.ClearMedList
+ 0001:001A9BA8       rMeds.DetailMedLM
+ 0001:001AA6B8       rMeds.GetMedStatus
+ 0001:001AA4C0       rMeds.GetNewDialog
+ 0001:001AA614       rMeds.IsFirstDoseNowOrder
+ 0001:001AA114       rMeds.LoadActiveMedLists
+ 0001:001A9C58       rMeds.MedAdminHistory
+ 0001:001A9CF0       rMeds.MedStatusGroup
+ 0001:001AA50C       rMeds.PickUpDefault
+ 0001:001AA550       rMeds.Refill
+ 0001:001A9E68       rMeds.SetMedFields
+ 0004:000066C0       rMisc..2
+ 0001:003A36D8       rMisc..TSizeHolder
+ 0001:003A3730       rMisc.DetailPrimaryCare
+ 0001:003A5178       rMisc.Finalization
+ 0001:003A3778       rMisc.GetToolMenu
+ 0001:003A3900       rMisc.ListSymbolTable
+ 0001:003A3C4C       rMisc.LoadSizes
+ 0001:003A3A04       rMisc.MScalar
+ 0001:003A3B80       rMisc.PackageVersion
+ 0002:00001EE0       rMisc.rMisc
+ 0001:003A45A4       rMisc.SaveUserBounds
+ 0001:003A46C4       rMisc.SaveUserFontSize
+ 0001:003A4690       rMisc.SaveUserSizes
+ 0001:003A3AA4       rMisc.ServerHasPatch
+ 0001:003A3B30       rMisc.ServerVersion
+ 0001:003A4740       rMisc.SetFormPosition
+ 0001:003A3EB4       rMisc.SetShareNode
+ 0001:003A3F6C       rMisc.SetUserBounds
+ 0001:003A419C       rMisc.SetUserBounds2
+ 0001:003A4394       rMisc.SetUserColumns
+ 0001:003A4294       rMisc.SetUserWidths
+ 0004:000066BC       rMisc.SizeHolder
+ 0001:003A4890       rMisc.StrUserBounds
+ 0001:003A49EC       rMisc.StrUserBounds2
+ 0001:003A4B94       rMisc.StrUserColumns
+ 0001:003A4AC8       rMisc.StrUserWidth
+ 0001:003A4DCC       rMisc.TSizeHolder.AddSizesToStrList
+ 0001:003A4F10       rMisc.TSizeHolder.Create
+ 0001:003A4F64       rMisc.TSizeHolder.Destroy
+ 0001:003A4F9C       rMisc.TSizeHolder.GetSize
+ 0001:003A50EC       rMisc.TSizeHolder.SetSize
+ 0004:000066C4       rMisc.uBounds
+ 0004:000066CC       rMisc.uColumns
+ 0001:003A3BC0       rMisc.UserFontSize
+ 0004:000066C8       rMisc.uWidths
+ 0004:000059AC       rODAllergy..1
+ 0001:001E26BC       rODAllergy.ARTPatchInstalled
+ 0001:001E2864       rODAllergy.EnableErrorComments
+ 0001:001E2AD8       rODAllergy.Finalization
+ 0001:001E29DC       rODAllergy.GetAllergyTitleText
+ 0001:001E13A4       rODAllergy.GetCWADInfo
+ 0001:001E2704       rODAllergy.GetSiteParams
+ 0001:001E287C       rODAllergy.IsARTClinicalUser
+ 0001:001E13E8       rODAllergy.LoadAllergyForEdit
+ 0001:001E2838       rODAllergy.MarkIDBand
+ 0003:000038F8       rODAllergy.NO_YES
+ 0001:001E1260       rODAllergy.ODForAllergies
+ 0001:001E284C       rODAllergy.RequireOriginatorComments
+ 0002:00001388       rODAllergy.rODAllergy
+ 0001:001E22E8       rODAllergy.RPCEnterNKAForPatient
+ 0001:001E1950       rODAllergy.SaveAllergy
+ 0001:001E12B0       rODAllergy.SearchForAllergies
+ 0001:001E244C       rODAllergy.SendARTBulletin
+ 0001:001E133C       rODAllergy.SubsetofSymptoms
+ 0004:000059B8       rODAllergy.uARTClinUser
+ 0004:000059B0       rODAllergy.uARTPatchInstalled
+ 0004:000059B4       rODAllergy.uGMRASiteParams
+ 0004:00006088       rODBase..4
+ 0001:002D0068       rODBase..TDialogItem
+ 0001:002CFF60       rODBase..TPrompt
+ 0001:002CFFF0       rODBase..TResponse
+ 0001:002D3450       rODBase.AmountsForIVFluid
+ 0001:002D0AE8       rODBase.AskAnotherOrder
+ 0001:002D2E00       rODBase.CheckAuthForMeds
+ 0001:002D2EA0       rODBase.DispenseMessage
+ 0001:002D0B74       rODBase.DisplayGroupByName
+ 0001:002D0BF0       rODBase.DisplayGroupForDialog
+ 0001:002D15AC       rODBase.ExtractToResponses
+ 0001:002D37B8       rODBase.Finalization
+ 0001:002D24A8       rODBase.GetDefaultCopay
+ 0001:002D08A0       rODBase.GetQuickName
+ 0001:002D0C6C       rODBase.IdentifyDialog
+ 0001:002D2D4C       rODBase.IsPFSSActive
+ 0001:002D0D68       rODBase.LoadDialogDefinition
+ 0001:002D3124       rODBase.LoadFormularyAlt
+ 0001:002D10F0       rODBase.LoadOrderPrompting
+ 0001:002D08E0       rODBase.LoadQuickListForOD
+ 0001:002D18D8       rODBase.LoadResponses
+ 0001:002D3184       rODBase.LookupRoute
+ 0001:002D324C       rODBase.MedIsSupply
+ 0001:002D32DC       rODBase.MedTypeIsIV
+ 0001:002D33E0       rODBase.ODForIVFluids
+ 0001:002D3370       rODBase.ODForMedIn
+ 0001:002D34A4       rODBase.ODForMedOut
+ 0001:002D3774       rODBase.ODForVitals
+ 0001:002D3514       rODBase.OIForMedIn
+ 0001:002D357C       rODBase.OIForMedOut
+ 0001:002D231C       rODBase.OIMessage
+ 0001:002D23C4       rODBase.OrderMenuStyle
+ 0001:002D195C       rODBase.PutNewOrder
+ 0001:002D0974       rODBase.PutQuickOrder
+ 0001:002D2F90       rODBase.QuantityMessage
+ 0001:002D35E4       rODBase.RatedDisabilities
+ 0001:002D3080       rODBase.RequiresCopay
+ 0002:00001728       rODBase.rODBase
+ 0001:002D0930       rODBase.SaveQuickListForOD
+ 0001:002D25CC       rODBase.SetDefaultCoPayToNewOrder
+ 0001:002D0190       rODBase.SetupORDIALOG
+ 0001:002D2BFC       rODBase.SubsetOfEntries
+ 0001:002D2444       rODBase.SubSetOfOrderItems
+ 0004:0000608C       rODBase.uLastDispenseIEN
+ 0004:00006090       rODBase.uLastDispenseMsg
+ 0004:00006094       rODBase.uLastQuantityMsg
+ 0004:00006098       rODBase.uMedRoutes
+ 0004:0000609C       rODBase.uPFSSActive
+ 0001:002D2C74       rODBase.ValidateNumericStr
+ 0001:002D36CC       rODBase.ValidQuantity
+ 0001:002D363C       rODBase.ValidSchedule
+ 0001:0018F8D4       rODDiet.AppendTFProducts
+ 0001:0018F880       rODDiet.CurrentDietText
+ 0001:0018FB20       rODDiet.CurrentIsolation
+ 0001:0018F410       rODDiet.DietAttributes
+ 0001:0018FC18       rODDiet.DietDialogType
+ 0001:0018F924       rODDiet.ExpandedQuantity
+ 0001:0018FD78       rODDiet.GetCurrentRecurringOPMeals
+ 0001:0018FAE0       rODDiet.IsolationID
+ 0001:0018F45C       rODDiet.LoadDietParams
+ 0001:0018FBB8       rODDiet.LoadDietQuickList
+ 0001:0018FB68       rODDiet.LoadIsolations
+ 0001:0018FA48       rODDiet.OrderLateTray
+ 0001:0018FE24       rODDiet.OutpatientLocationConfigured
+ 0001:0018FCB8       rODDiet.OutpatientPatchInstalled
+ 0001:0018F9AC       rODDiet.SubSetOfDiets
+ 0001:0018FA04       rODDiet.SubSetOfOPDiets
+ 0004:00004B00       rODDiet.uOutpatientPatchInstalled
+ 0001:0018FD40       rODDiet.UserHasFHAUTHKey
+ 0004:00004B02       rODDiet.uUserHasFHAUTHKey
+ 0001:001AF9CC       rODLab.CheckForChangeFromLCtoWCOnAccept
+ 0001:001AFB04       rODLab.CheckForChangeFromLCtoWCOnRelease
+ 0001:001AFBB8       rODLab.FormatLCtoWCDisplayTextOnAccept
+ 0001:001AFF14       rODLab.FormatLCtoWCDisplayTextOnRelease
+ 0001:001AEC74       rODLab.GetBloodComponents
+ 0001:001AF5A8       rODLab.GetDefaultImmCollTime
+ 0001:001AF794       rODLab.GetLabTimesForDate
+ 0001:001AF750       rODLab.GetLastCollectionTime
+ 0001:001B0418       rODLab.GetLCtoWCInstructions
+ 0001:001AF6C0       rODLab.GetOneCollSamp
+ 0001:001AF708       rODLab.GetOneSpecimen
+ 0001:001AEEBC       rODLab.GetPatientBBInfo
+ 0001:001AEE38       rODLab.GetPatientBloodResults
+ 0001:001AEDB8       rODLab.GetPatientBloodResultsRaw
+ 0001:001AEF40       rODLab.GetSubtype
+ 0001:001AF55C       rODLab.ImmediateCollectTimes
+ 0001:001AF420       rODLab.IsLabCollectTime
+ 0001:001AF4C0       rODLab.LabCollectFutureDays
+ 0001:001AF03C       rODLab.ListForQuickOrders
+ 0001:001AF23C       rODLab.LoadLabTestData
+ 0001:001AF2B4       rODLab.LoadSamples
+ 0001:001AF350       rODLab.LoadSpecimens
+ 0001:001AF390       rODLab.MaxDays
+ 0001:001AECA0       rODLab.NursAdminSuppress
+ 0001:001AF1EC       rODLab.ODForLab
+ 0001:001AED24       rODLab.StatAllowed
+ 0001:001AF124       rODLab.SubsetOfQuickOrders
+ 0001:001AF2F4       rODLab.SubsetOfSpecimens
+ 0001:001AEFB8       rODLab.TNSDaysBack
+ 0001:001AF65C       rODLab.ValidImmCollTime
+ 0004:00004B84       rODMeds..1
+ 0001:001ABC8C       rODMeds.AdminTimeHelpText
+ 0001:001AB500       rODMeds.CalcMaxRefills
+ 0001:001AB8C8       rODMeds.CheckExistingPI
+ 0001:001AC130       rODMeds.ClearMaxData
+ 0001:001AB374       rODMeds.DaysToQty
+ 0001:001AA7B8       rODMeds.DEACheckFailed
+ 0001:001AA870       rODMeds.DEACheckFailedForIVOnOutPatient
+ 0001:001AB444       rODMeds.DefaultDays
+ 0001:001AC138       rODMeds.DifferentOrderLocations
+ 0001:001AC1FC       rODMeds.Finalization
+ 0001:001AB7F0       rODMeds.GetPickupForLocation
+ 0001:001AAAF4       rODMeds.IndexOfOrderable
+ 0001:001AACA4       rODMeds.IsActivateOI
+ 0001:001AC1EC       rODMeds.IsClozapineOrder
+ 0001:001AA920       rODMeds.ListForOrderable
+ 0001:001AAD24       rODMeds.ListForQuickOrders
+ 0001:001AAFB4       rODMeds.LoadAdminInfo
+ 0001:001AB18C       rODMeds.LoadAllIVRoutes
+ 0001:001AB1D0       rODMeds.LoadDosageFormIVRoutes
+ 0001:001AB23C       rODMeds.LoadDOWSchedules
+ 0001:001AAF3C       rODMeds.LoadFormularyAltDose
+ 0001:001AAED4       rODMeds.LoadFormularyAltOI
+ 0001:001AB0E8       rODMeds.LoadSchedules
+ 0001:001AB670       rODMeds.ODForMedsIn
+ 0001:001AB6DC       rODMeds.ODForMedsOut
+ 0001:001AB748       rODMeds.OIForMed
+ 0001:001AB958       rODMeds.PassDrugTest
+ 0001:001AB830       rODMeds.QOHasRouteDefined
+ 0001:001AB2AC       rODMeds.QtyToDays
+ 0002:000011E0       rODMeds.rODMeds
+ 0001:001AB5C4       rODMeds.ScheduleRequired
+ 0001:001AAA08       rODMeds.SubsetOfOrderable
+ 0001:001AAE0C       rODMeds.SubsetOfQuickOrders
+ 0004:00004B88       rODMeds.uAdminTimeHelpText
+ 0004:00004B8C       rODMeds.uDrugHasMaxData
+ 0004:00004B9C       rODMeds.uInpatientClozapineText
+ 0001:001ABFCC       rODMeds.ValidateDaySupplyandQuantityErrorMsg
+ 0001:001ABDA4       rODMeds.ValidateDrugAutoAccept
+ 0001:002B1858       rODRad.ImagingMessage
+ 0001:002B1AF4       rODRad.LocationType
+ 0001:002B178C       rODRad.ODForRad
+ 0001:002B1940       rODRad.PatientOnIsolationProcedures
+ 0001:002B1B38       rODRad.ReasonForStudyCarryOn
+ 0001:002B1A28       rODRad.SubsetOfImagingTypes
+ 0001:002B19E0       rODRad.SubsetOfRadiologists
+ 0001:002B17F0       rODRad.SubsetOfRadProcs
+ 0001:002B1A70       rODRad.SubsetOfRadSources
+ 0001:001A93AC       rOptions.rpcActiveDefaultSetting
+ 0001:001A9154       rOptions.rpcAddList
+ 0001:001A7BC8       rOptions.rpcClearNotifications
+ 0001:001A8F58       rOptions.rpcDeleteList
+ 0001:001A933C       rOptions.rpcDeleteUserLevelReportsSetting
+ 0001:001A8E38       rOptions.rpcGetAllTeams
+ 0001:001A82F0       rOptions.rpcGetApptDays
+ 0001:001A83E4       rOptions.rpcGetApptUserDays
+ 0001:001A8EF8       rOptions.rpcGetATeams
+ 0001:001A7F98       rOptions.rpcGetClasses
+ 0001:001A8808       rOptions.rpcGetClinicDefaults
+ 0001:001A8718       rOptions.rpcGetClinicUserDays
+ 0001:001A9188       rOptions.rpcGetCombo
+ 0001:001A7DE8       rOptions.rpcGetCosigners
+ 0001:001A7E50       rOptions.rpcGetDefaultCosigner
+ 0001:001A9214       rOptions.rpcGetDefaultReportsSetting
+ 0001:001A9A38       rOptions.rpcGetEncFutureDays
+ 0001:001A816C       rOptions.rpcGetLabDays
+ 0001:001A822C       rOptions.rpcGetLabUserDays
+ 0001:001A8694       rOptions.rpcGetListOrder
+ 0001:001A8980       rOptions.rpcGetListSourceDefaults
+ 0001:001A7A24       rOptions.rpcGetNotificationDefaults
+ 0001:001A7974       rOptions.rpcGetNotifications
+ 0001:001A79CC       rOptions.rpcGetOrderChecks
+ 0001:001A7D34       rOptions.rpcGetOther
+ 0001:001A7CDC       rOptions.rpcGetOtherTabs
+ 0001:001A8DD8       rOptions.rpcGetPersonalLists
+ 0001:001A9874       rOptions.rpcGetRangeForEncs
+ 0001:001A967C       rOptions.rpcGetRangeForMeds
+ 0001:001A8600       rOptions.rpcGetReminders
+ 0001:001A7ED0       rOptions.rpcGetSubject
+ 0001:001A7A64       rOptions.rpcGetSurrogateInfo
+ 0001:001A8E98       rOptions.rpcGetTeams
+ 0001:001A80A0       rOptions.rpcGetTitleDefault
+ 0001:001A7FF0       rOptions.rpcGetTitlesForClass
+ 0001:001A805C       rOptions.rpcGetTitlesForUser
+ 0001:001A90C0       rOptions.rpcListUsersByTeam
+ 0001:001A8FCC       rOptions.rpcNewList
+ 0001:001A9974       rOptions.rpcPutRangeForEncs
+ 0001:001A97F4       rOptions.rpcPutRangeForMeds
+ 0001:001A9120       rOptions.rpcRemoveList
+ 0001:001A9530       rOptions.rpcRetrieveDefaultSetting
+ 0001:001A8120       rOptions.rpcSaveDocumentDefaults
+ 0001:001A9074       rOptions.rpcSaveListChanges
+ 0001:001A8A90       rOptions.rpcSetClinicDefaults
+ 0001:001A91E0       rOptions.rpcSetCombo
+ 0001:001A84D8       rOptions.rpcSetDays
+ 0001:001A7E90       rOptions.rpcSetDefaultCosigner
+ 0001:001A941C       rOptions.rpcSetDefaultReportsSetting
+ 0001:001A9498       rOptions.rpcSetIndividualReportSetting
+ 0001:001A7C00       rOptions.rpcSetNotifications
+ 0001:001A7C34       rOptions.rpcSetOrderChecks
+ 0001:001A7D74       rOptions.rpcSetOther
+ 0001:001A7C68       rOptions.rpcSetOtherStuff
+ 0001:001A8C64       rOptions.rpcSetPtListDefaults
+ 0001:001A8660       rOptions.rpcSetReminders
+ 0001:001A7F64       rOptions.rpcSetSubject
+ 0001:001A7AE0       rOptions.rpcSetSurrogateInfo
+ 0004:00006670       rOrders..8
+ 0001:0038BF18       rOrders..TOrder
+ 0001:0038C100       rOrders..TOrderMenu
+ 0001:0038C174       rOrders..TOrderMenuItem
+ 0001:0038C1EC       rOrders..TOrderRenewFields
+ 0001:0038C2B8       rOrders..TOrderView
+ 0001:0038C020       rOrders..TParentEvent
+ 0001:00391F0C       rOrders.AlertOrder
+ 0001:003938CC       rOrders.AnyOrdersRequireSignature
+ 0003:00004060       rOrders.BoolChars
+ 0001:0038FB30       rOrders.BuildResponses
+ 0001:00392814       rOrders.CanEditSuchRenewedOrder
+ 0001:003945FC       rOrders.CanManualRelease
+ 0001:00392FF4       rOrders.ChangeEvent
+ 0001:0038CFB0       rOrders.CheckOrderGroup
+ 0001:0038D040       rOrders.CheckQOGroup
+ 0001:003901A0       rOrders.ClearOrderRecall
+ 0001:0038D174       rOrders.ClearOrders
+ 0001:003901DC       rOrders.CommonLocationForOrders
+ 0001:00394C00       rOrders.CompleteEvt
+ 0001:00392160       rOrders.CompleteOrder
+ 0001:00395248       rOrders.DataForOrderCheck
+ 0001:00391D8C       rOrders.DCOrder
+ 0001:003951B4       rOrders.DeleteCheckedOrder
+ 0001:00394A6C       rOrders.DeleteEmptyEvt
+ 0001:00393084       rOrders.DeletePtEvent
+ 0001:0038C720       rOrders.DetailOrder
+ 0001:0038F2B4       rOrders.DGroupAll
+ 0001:0038F354       rOrders.DGroupIEN
+ 0001:00390E0C       rOrders.DialogForOrder
+ 0001:0038CCFC       rOrders.DispOrdersForEvent
+ 0001:003902E4       rOrders.DlgIENForName
+ 0001:00393CF8       rOrders.DoesOIPIInSigForQO
+ 0001:00392A38       rOrders.DoesOrderStatusMatch
+ 0001:0039581C       rOrders.EventExist
+ 0001:0038CD9C       rOrders.EventInfo
+ 0001:0038CE14       rOrders.EventInfo1
+ 0001:00390DAC       rOrders.ExecutePrintOrders
+ 0001:0038CC7C       rOrders.ExpiredOrdersStartDT
+ 0001:00394E10       rOrders.FillerIDForDialog
+ 0001:00396048       rOrders.Finalization
+ 0001:00391F5C       rOrders.FlagOrder
+ 0001:00393EE0       rOrders.ForIVandUD
+ 0001:00390260       rOrders.FormIDForDialog
+ 0001:0038EE88       rOrders.ForwardByGroup
+ 0001:0038F158       rOrders.ForwardChrono
+ 0001:00392DB0       rOrders.GetChildrenOfComplexOrder
+ 0001:00393444       rOrders.GetConsultOrderNumber
+ 0001:003940A4       rOrders.GetCurrentSpec
+ 0001:003940EC       rOrders.GetDefaultEvt
+ 0001:00394520       rOrders.GetDefaultTSForEvt
+ 0001:00393D7C       rOrders.GetDispGroupForLES
+ 0001:003932D8       rOrders.GetDlgData
+ 0001:00393A88       rOrders.GetDrugSchedule
+ 0001:003945B0       rOrders.GetEventDefaultDlg
+ 0001:0039405C       rOrders.GetEventDiv1
+ 0001:00393F84       rOrders.GetEventIFN
+ 0001:00394014       rOrders.GetEventLoc1
+ 0001:00393FCC       rOrders.GetEventName
+ 0001:0039449C       rOrders.GetEventPromptID
+ 0001:0039227C       rOrders.GetOrderableIen
+ 0001:003934C4       rOrders.GetOrderByIFN
+ 0001:00393DC0       rOrders.GetOrderPtEvtID
+ 0001:0038CBE8       rOrders.GetOrderStatus
+ 0001:00393884       rOrders.GetPackageByOrderID
+ 0001:00393BD8       rOrders.GetPKISite
+ 0001:00393C68       rOrders.GetPKIUse
+ 0001:00394568       rOrders.GetPromptIDs
+ 0001:00391D0C       rOrders.GetREQReason
+ 0001:003949E4       rOrders.GetTSListForEvt
+ 0001:00391BE0       rOrders.HoldOrder
+ 0001:0038EC90       rOrders.InverseByGroup
+ 0001:0038F05C       rOrders.InverseChrono
+ 0001:00395CF0       rOrders.IsClinicLoc
+ 0001:00394708       rOrders.IsCompletedPtEvt
+ 0001:003931A8       rOrders.IsComplexOrder
+ 0001:00394370       rOrders.isDCedOrder
+ 0001:00394138       rOrders.isExistedEvent
+ 0001:00395B28       rOrders.IsIMOOrder
+ 0001:00395BC8       rOrders.IsInptQO
+ 0001:00395C5C       rOrders.IsIVQO
+ 0001:00391648       rOrders.IsLatestAction
+ 0001:0039428C       rOrders.isMatchedEvent
+ 0001:003943FC       rOrders.isOnholdMedOrder
+ 0001:00394798       rOrders.IsPassEvt
+ 0001:00394838       rOrders.IsPassEvt1
+ 0001:003928C8       rOrders.IsPSOSupplyDlg
+ 0001:00393108       rOrders.IsRenewableComplexOrder
+ 0001:00395A80       rOrders.IsValidIMOLoc
+ 0001:00395E28       rOrders.IsValidQOSch
+ 0001:00395D84       rOrders.IsValidSchedule
+ 0001:00392F50       rOrders.LESValidationForChangedLabOrder
+ 0001:00391C9C       rOrders.ListDCReasons
+ 0001:0038F3E4       rOrders.ListDGroupAll
+ 0001:0038FADC       rOrders.ListOrderFiltersAll
+ 0001:0038F438       rOrders.ListSpecialtiesED
+ 0001:0038C870       rOrders.LoadDGroupMap
+ 0001:00391FC0       rOrders.LoadFlagReason
+ 0001:00390378       rOrders.LoadOrderMenu
+ 0001:0038D62C       rOrders.LoadOrdersAbbr
+ 0001:0038DC5C       rOrders.LoadOrdersAbbr
+ 0001:00390730       rOrders.LoadOrderSet
+ 0001:0038E160       rOrders.LoadOrderSheetsED
+ 0001:0038E2D0       rOrders.LoadOrderViewDefault
+ 0001:00392B64       rOrders.LoadRenewFields
+ 0001:0038E498       rOrders.LoadUnsignedOrders
+ 0001:00392074       rOrders.LoadWardComments
+ 0001:0039087C       rOrders.LoadWriteOrders
+ 0001:003908D4       rOrders.LoadWriteOrdersED
+ 0001:0039136C       rOrders.LockOrder
+ 0001:00391204       rOrders.LockPatient
+ 0001:0038CE8C       rOrders.NameOfDGroup
+ 0001:0038C8CC       rOrders.NameOfStatus
+ 0001:00394E58       rOrders.OrderChecksEnabled
+ 0001:003950E8       rOrders.OrderChecksForSession
+ 0001:00394FC0       rOrders.OrderChecksOnAccept
+ 0001:00394EEC       rOrders.OrderChecksOnDisplay
+ 0001:00390994       rOrders.OrderDisabledMessage
+ 0001:00392AD0       rOrders.OrderIsReleased
+ 0001:00395290       rOrders.OrderPrintDeviceInfo
+ 0001:003939F4       rOrders.OrderRequiresDigitalSignature
+ 0001:00393960       rOrders.OrderRequiresSignature
+ 0001:00390CAC       rOrders.PrintOrdersOnReview
+ 0001:00390D34       rOrders.PrintServiceCopies
+ 0001:00393350       rOrders.PtEvtEmpty
+ 0001:003920CC       rOrders.PutWardComments
+ 0001:00391C3C       rOrders.ReleaseOrderHold
+ 0001:003916BC       rOrders.RenewOrder
+ 0001:0038C788       rOrders.ResultOrder
+ 0001:0038C7F8       rOrders.ResultOrderHistory
+ 0001:0038E63C       rOrders.RetrieveOrderFields
+ 0002:00001EB4       rOrders.rOrders
+ 0001:0039296C       rOrders.SaveChangesOnRenewOrder
+ 0001:00395970       rOrders.SaveCoPayStatus
+ 0001:00395754       rOrders.SaveEvtForOrder
+ 0001:00395154       rOrders.SaveOrderChecksForSession
+ 0001:0038EB20       rOrders.SaveOrderViewDefault
+ 0001:003909DC       rOrders.SendOrders
+ 0001:00390BB0       rOrders.SendReleaseOrders
+ 0001:0038CF20       rOrders.SeqOfDGroup
+ 0001:00393AD0       rOrders.SetExternalText
+ 0001:0038D1C0       rOrders.SetOrderFields
+ 0001:00390E8C       rOrders.SetOrderFromResults
+ 0001:003948DC       rOrders.SetPtEvtList
+ 0001:0038F254       rOrders.SortOrders
+ 0001:00392310       rOrders.StoreDigitalSig
+ 0001:003933EC       rOrders.TextForOrder
+ 0001:0039468C       rOrders.TheParentPtEvt
+ 0001:0038D0E0       rOrders.TopNameOfDGroup
+ 0001:0038C414       rOrders.TOrder.Assign
+ 0001:0038C5F8       rOrders.TOrder.Clear
+ 0001:0038C32C       rOrders.TOrderView.Assign
+ 0001:00395EA0       rOrders.TParentEvent.Assign
+ 0001:00395FD8       rOrders.TParentEvent.Create
+ 0001:003941E8       rOrders.TypeOfExistedEvent
+ 0004:00006678       rOrders.uDGroupAll
+ 0004:00006674       rOrders.uDGroupMap
+ 0001:00392018       rOrders.UnflagOrder
+ 0001:00391470       rOrders.UnlockOrder
+ 0001:003912F4       rOrders.UnlockPatient
+ 0004:0000667C       rOrders.uOrderChecksOn
+ 0001:003926F0       rOrders.UpdateOrderDGIfNeeded
+ 0001:003958E0       rOrders.UseNewMedDialogs
+ 0001:00393248       rOrders.ValidateComplexOrderAct
+ 0001:003914F4       rOrders.ValidateOrderAction
+ 0001:00391598       rOrders.ValidateOrderActionNature
+ 0001:00393E3C       rOrders.VerbTelPolicyOrder
+ 0001:003921BC       rOrders.VerifyOrder
+ 0001:00392218       rOrders.VerifyOrderChartReview
+ 0004:000038A4       Rpcconf1..2
+ 0001:0011F11C       Rpcconf1..TrpcConfig
+ 0004:00003894       Rpcconf1.ButtonStatus
+ 0001:0011FE4C       Rpcconf1.Finalization
+ 0001:0011F758       Rpcconf1.GetServerInfo
+ 0001:0011F464       Rpcconf1.GetServerIP
+ 0001:0011F3E4       Rpcconf1.IsIPAddress
+ 0002:00000E08       Rpcconf1.Rpcconf1
+ 0004:00003890       Rpcconf1.rpcConfig
+ 0004:0000389C       Rpcconf1.rPort
+ 0004:00003898       Rpcconf1.rServer
+ 0004:000038A0       Rpcconf1.TaskInstance
+ 0001:0011FBD8       Rpcconf1.TrpcConfig.butCancelClick
+ 0001:0011FB20       Rpcconf1.TrpcConfig.butOkClick
+ 0001:0011F52C       Rpcconf1.TrpcConfig.cboServerClick
+ 0001:0011FC9C       Rpcconf1.TrpcConfig.cboServerExit
+ 0001:0011F718       Rpcconf1.TrpcConfig.FormClose
+ 0001:0011F634       Rpcconf1.TrpcConfig.FormCreate
+ 0001:0011FC64       Rpcconf1.TrpcConfig.FormDestroy
+ 0001:0011FCA0       Rpcconf1.TrpcConfig.NewClick
+ 0004:00006230       rPCE..1
+ 0001:002E4E70       rPCE.AddProbsToDiagnoses
+ 0001:002E8F84       rPCE.AnytimeEncounters
+ 0001:002E9024       rPCE.AutoCheckout
+ 0001:002E49CC       rPCE.AutoSelectVisit
+ 0001:002E8318       rPCE.CheckActivePerson
+ 0001:002E7F38       rPCE.DataHasCPTCodes
+ 0001:002E9474       rPCE.DefaultProvider
+ 0001:002E3D7C       rPCE.DeletePCE
+ 0001:002E77E4       rPCE.EligbleConditions
+ 0001:002E9658       rPCE.Finalization
+ 0001:002E83F8       rPCE.ForcePCEEntry
+ 0001:002E895C       rPCE.GAFOK
+ 0001:002E8D88       rPCE.GAFURL
+ 0001:002E8178       rPCE.GetAskPCE
+ 0001:002E88A0       rPCE.GetLocSecondaryVisitCode
+ 0001:002E394C       rPCE.GetVisitCat
+ 0001:002E7DD0       rPCE.GetVisitIEN
+ 0001:002E8260       rPCE.HasVisit
+ 0001:002E4584       rPCE.InsertTab
+ 0001:002E3C68       rPCE.IsActiveCode
+ 0001:002E3C0C       rPCE.IsActiveICDCode
+ 0001:002E9348       rPCE.IsCancelOrNoShow
+ 0001:002E93DC       rPCE.IsNonCountClinic
+ 0001:002E94F4       rPCE.IsUserAProvider
+ 0001:002E95A4       rPCE.IsUserAUSRProvider
+ 0001:002E3A48       rPCE.LexiconToCode
+ 0001:002E5E88       rPCE.ListCPTModifiers
+ 0001:002E4C00       rPCE.ListDiagnosisCodes
+ 0001:002E4A8C       rPCE.ListDiagnosisSections
+ 0001:002E7720       rPCE.ListExamsCodes
+ 0001:002E75A0       rPCE.ListExamsSections
+ 0001:002E71DC       rPCE.ListHealthCodes
+ 0001:002E705C       rPCE.ListHealthSections
+ 0001:002E568C       rPCE.ListImmunizCodes
+ 0001:002E550C       rPCE.ListImmunizSections
+ 0001:002E3B24       rPCE.ListLexicon
+ 0001:002E6F18       rPCE.ListPatientCodes
+ 0001:002E6D98       rPCE.ListPatientSections
+ 0001:002E58D0       rPCE.ListProcedureCodes
+ 0001:002E5750       rPCE.ListProcedureSections
+ 0001:002E7CA8       rPCE.ListSCDisabilities
+ 0001:002E6C54       rPCE.ListSkinCodes
+ 0001:002E6AD4       rPCE.ListSkinSections
+ 0001:002E47E0       rPCE.ListVisitTypeByLoc
+ 0001:002E4684       rPCE.ListVisitTypeCodes
+ 0001:002E4404       rPCE.ListVisitTypeSections
+ 0001:002E84BC       rPCE.LoadcboOther
+ 0001:002E3E04       rPCE.LoadEncounterForm
+ 0001:002E6FDC       rPCE.LoadHFLevelItems
+ 0001:002E7320       rPCE.LoadHistLocations
+ 0001:002E540C       rPCE.LoadImmReactionItems
+ 0001:002E548C       rPCE.LoadImmSeriesItems
+ 0001:002E7D04       rPCE.LoadPCEDataForNote
+ 0001:002E6D18       rPCE.LoadPEDLevelItems
+ 0001:002E6A54       rPCE.LoadSkResultsItems
+ 0001:002E72A0       rPCE.LoadXAMResultsItems
+ 0001:002E8A00       rPCE.MHClinic
+ 0001:002E8EC0       rPCE.MHTestAuthorized
+ 0001:002E8E1C       rPCE.MHTestsOK
+ 0001:002E5A48       rPCE.MixedCaseModifier
+ 0001:002E6404       rPCE.ModifierCode
+ 0001:002E5AD8       rPCE.ModifierIdx
+ 0001:002E5C20       rPCE.ModifierList
+ 0001:002E636C       rPCE.ModifierName
+ 0001:002E888C       rPCE.PCERPCEncLocation
+ 0001:002E9200       rPCE.PromptForWorkload
+ 0001:002E8AA4       rPCE.RecentGAFScores
+ 0001:002E90DC       rPCE.RequireExposures
+ 0002:000017D8       rPCE.rPCE
+ 0001:002E8BB4       rPCE.SaveGAFScore
+ 0001:002E7EE0       rPCE.SavePCEData
+ 0001:002E8868       rPCE.SetRPCEncLocation
+ 0003:00003AE0       rPCE.uAnytimeEnc
+ 0004:00006272       rPCE.uAPAsk
+ 0003:00003ADC       rPCE.uAPLoc
+ 0003:00003AD4       rPCE.uAPUser
+ 0003:00003AE4       rPCE.UAutoSelLoc
+ 0004:00006273       rPCE.UAutoSelVal
+ 0004:00006240       rPCE.uDiagnoses
+ 0004:0000622C       rPCE.uEncLocation
+ 0004:00006244       rPCE.uExams
+ 0004:00006268       rPCE.uGAFOK
+ 0003:00003AB4       rPCE.uGAFOKCalled
+ 0004:0000626C       rPCE.uGAFURL
+ 0003:00003AC0       rPCE.uGAFURLChecked
+ 0003:00003ABC       rPCE.uHasCPT
+ 0004:00006248       rPCE.uHealthFactors
+ 0004:0000624C       rPCE.uImmunizations
+ 0004:00006274       rPCE.uLastChkOut
+ 0003:00003AE8       rPCE.uLastChkOutLoc
+ 0004:00006238       rPCE.uLastDFN
+ 0004:00006269       rPCE.uLastForce
+ 0003:00003AB8       rPCE.uLastForceLoc
+ 0003:00003AF0       rPCE.uLastIsClinic
+ 0003:00003AEC       rPCE.uLastIsClinicLoc
+ 0004:00006234       rPCE.uLastLocation
+ 0004:00006270       rPCE.uMHOK
+ 0003:00003AC4       rPCE.uMHOKChecked
+ 0003:00003AB0       rPCE.uModifiers
+ 0004:00006250       rPCE.uPatientEds
+ 0001:002E649C       rPCE.UpdateModifierList
+ 0001:002E6778       rPCE.UpdateVisitTypeModifierList
+ 0004:00006264       rPCE.uProblems
+ 0004:00006254       rPCE.uProcedures
+ 0004:00006258       rPCE.uSkinTests
+ 0003:00003AC8       rPCE.uVCInitialCat
+ 0003:00003AD0       rPCE.uVCInpatient
+ 0003:00003ACC       rPCE.uVCLocation
+ 0004:00006271       rPCE.uVCResult
+ 0004:0000625C       rPCE.uVisitTypes
+ 0004:00006260       rPCE.uVTypeForLoc
+ 0003:00003AA8       rPCE.uVTypeLastDate
+ 0004:0000623C       rPCE.uVTypeLastLoc
+ 0004:000048A8       RpcNet..4
+ 0001:0011FE90       RpcNet..TRPCFRM1
+ 0001:00120480       RpcNet.Finalization
+ 0001:00120094       RpcNet.libClose
+ 0001:001200B4       RpcNet.libGetHostIP1
+ 0001:00120030       RpcNet.libOpen
+ 0002:00000E10       RpcNet.RpcNet
+ 0001:001202AC       RpcNet.TRPCFRM1.WndProc
+ 0001:001202D8       RpcNet.TRPCFRM1.XWBGHIP
+ 0004:000038A8       RpcNet.WRec
+ 0001:0011C2B8       RpcSLogin.GetUserInfo
+ 0001:0011C038       RpcSLogin.SilentLogIn
+ 0001:0011BE50       RpcSLogin.ValidAppHandle
+ 0001:0011BC30       RpcSLogin.ValidAVCodes
+ 0001:0011C034       RpcSLogin.ValidNTToken
+ 0001:001A0008       rProbs.AddSave
+ 0001:001A0AA8       rProbs.CheckForDuplicateProblem
+ 0001:001A00BC       rProbs.ClinicFilterList
+ 0001:001A0118       rProbs.ClinicSearch
+ 0001:001A0260       rProbs.EditLoad
+ 0001:001A0310       rProbs.EditSave
+ 0001:001A09A8       rProbs.GetProblemComments
+ 0001:001A03E0       rProbs.InitPt
+ 0001:001A0428       rProbs.InitUser
+ 0001:001A0478       rProbs.OldProblemLexiconSearch
+ 0001:001A01A0       rProbs.ProblemDelete
+ 0001:001A0530       rProbs.ProblemList
+ 0001:001A0690       rProbs.ProblemReplace
+ 0001:001A07F8       rProbs.ProblemUpdate
+ 0001:001A083C       rProbs.ProblemVerify
+ 0001:001A05C4       rProbs.ProviderList
+ 0001:001A0A34       rProbs.SaveViewPreferences
+ 0001:001A0714       rProbs.ServiceFilterList
+ 0001:001A0770       rProbs.ServiceSearch
+ 0001:001A08C0       rProbs.UserProblemCategories
+ 0001:001A091C       rProbs.UserProblemList
+ 0004:000049E8       rReminders..1
+ 0001:001783C8       rReminders.CanEditAllRemCoverSheetLists
+ 0001:00177D68       rReminders.CheckGECValue
+ 0001:00177174       rReminders.DetailReminder
+ 0001:00177284       rReminders.EducationTopicDetail
+ 0001:00176F8C       rReminders.EvaluateReminder
+ 0001:00176E34       rReminders.EvaluateReminders
+ 0001:00178D88       rReminders.Finalization
+ 0001:00178688       rReminders.GetAllRemindersAndCategories
+ 0001:0017863C       rReminders.GetCategoryItems
+ 0001:0017840C       rReminders.GetCoverSheetLevelData
+ 0001:00176D4C       rReminders.GetCurrentReminders
+ 0001:001781E4       rReminders.GetDefLocations
+ 0001:001772D4       rReminders.GetDialogInfo
+ 0001:001773D0       rReminders.GetDialogPrompts
+ 0001:00177480       rReminders.GetDialogStatus
+ 0001:00177098       rReminders.GetEducationSubtopics
+ 0001:00177058       rReminders.GetEducationTopicsForReminder
+ 0001:00178940       rReminders.GetMHResultText
+ 0001:00176DB4       rReminders.GetOtherReminders
+ 0001:00177648       rReminders.GetProgressNoteHeader
+ 0001:00178134       rReminders.GetReminderFolders
+ 0001:00177590       rReminders.GetRemindersActive
+ 0001:001770DC       rReminders.GetReminderWebPages
+ 0001:00178274       rReminders.InsertRemTextAtCursor
+ 0001:001776A0       rReminders.LoadMentalHealthTest
+ 0001:0017772C       rReminders.MentalHealthTestResults
+ 0004:000049EC       rReminders.MHDLL
+ 0001:00178894       rReminders.MHDLLFound
+ 0001:0017831C       rReminders.NewRemCoverSheetListActive
+ 0001:00177234       rReminders.ReminderInquiry
+ 0002:00001064       rReminders.rReminders
+ 0001:00177AF4       rReminders.SaveMentalHealthTest
+ 0001:00178034       rReminders.SaveMSTDataFromReminder
+ 0001:00177D20       rReminders.SaveWomenHealthData
+ 0001:001784AC       rReminders.SetCoverSheetLevelData
+ 0001:001781A8       rReminders.SetReminderFolders
+ 0003:000036FC       rReminders.uCanEditAllCoverSheetLists
+ 0003:000036F0       rReminders.uDefLocs
+ 0003:000036E8       rReminders.uLastDefLocUser
+ 0003:000036F8       rReminders.uNewCoverSheetListActive
+ 0003:000036F4       rReminders.uRemInsertAtCursor
+ 0001:001788B8       rReminders.UsedMHDllRPC
+ 0001:001786D0       rReminders.VerifyMentalHealthTestComplete
+ 0004:00006394       rReports..1
+ 0001:0032A954       rReports.AutoRDV
+ 0001:00329710       rReports.ColumnHeaders
+ 0001:0032B7F4       rReports.CreatePatientHeader
+ 0001:0032A700       rReports.DirectQuery
+ 0001:00329208       rReports.ExtractSection
+ 0001:0032C5EC       rReports.Finalization
+ 0001:0032C224       rReports.GetAdhocLookup
+ 0001:0032AFC4       rReports.GetFormattedReport
+ 0001:0032C34C       rReports.GetRemoteData
+ 0001:0032C190       rReports.GetRemoteStatus
+ 0001:0032A994       rReports.HDRActive
+ 0001:003296AC       rReports.HealthSummaryCheck
+ 0001:0032C048       rReports.HSABVComponents
+ 0001:0032BE4C       rReports.HSComponentFiles
+ 0001:0032BFF0       rReports.HSComponents
+ 0001:0032C0E8       rReports.HSComponentSubs
+ 0001:0032C098       rReports.HSDispComponents
+ 0001:0032BD98       rReports.HSFileLookup
+ 0001:0032BF80       rReports.HSReportText
+ 0001:0032BEE0       rReports.HSSubItems
+ 0001:0032A914       rReports.ImagingParams
+ 0001:00329680       rReports.ListHealthSummaryTypes
+ 0001:00329818       rReports.ListImagingExams
+ 0001:00329598       rReports.ListLabReports
+ 0001:00329D3C       rReports.ListNutrAssessments
+ 0001:00329AD8       rReports.ListProcedures
+ 0001:00329660       rReports.ListReportDateRanges
+ 0001:003294D0       rReports.ListReports
+ 0001:00329EA8       rReports.ListSurgeryReports
+ 0001:0032932C       rReports.LoadReportLists
+ 0001:0032A13C       rReports.LoadReportText
+ 0001:0032941C       rReports.LoadTree
+ 0001:0032C47C       rReports.ModifyHDRData
+ 0001:0032C510       rReports.PrintBitmap
+ 0001:0032BAB0       rReports.PrintGraph
+ 0001:0032AA88       rReports.PrintReportsToDevice
+ 0001:0032A9D4       rReports.PrintVReports
+ 0001:0032B400       rReports.PrintWindowsReport
+ 0001:0032A4EC       rReports.RemoteQuery
+ 0001:0032A4AC       rReports.RemoteQueryAbortAll
+ 0002:000019C0       rReports.rReports
+ 0001:003297A4       rReports.SaveColumnSizes
+ 0001:0032BD18       rReports.SaveDefaultPrinter
+ 0001:0032C2D0       rReports.SetAdhocLookup
+ 0004:000063A4       rReports.uDateRanges
+ 0004:000063A8       rReports.uHSTypes
+ 0004:000063A0       rReports.uLabReports
+ 0004:0000639C       rReports.uReportsList
+ 0004:00006398       rReports.uTree
+ 0004:000058E8       rSurgery..1
+ 0001:001B693C       rSurgery.Finalization
+ 0001:001B6554       rSurgery.GetCurrentSurgCaseContext
+ 0001:001B6850       rSurgery.GetSingleCaseListItemWithDocs
+ 0001:001B6220       rSurgery.GetSurgCaseList
+ 0001:001B68A0       rSurgery.IsNonORProcedure
+ 0001:001B6178       rSurgery.IsSurgeryTitle
+ 0001:001B63A8       rSurgery.ListSurgeryCases
+ 0001:001B5FCC       rSurgery.ListSurgeryTitlesShort
+ 0001:001B5DD8       rSurgery.LoadSurgeryTitles
+ 0001:001B64FC       rSurgery.LoadSurgReportDetail
+ 0001:001B64A8       rSurgery.LoadSurgReportText
+ 0002:0000129C       rSurgery.rSurgery
+ 0001:001B6708       rSurgery.SaveCurrentSurgCaseContext
+ 0001:001B5D28       rSurgery.ShowSurgeryTab
+ 0001:001B60CC       rSurgery.SubSetOfSurgeryTitles
+ 0004:000058F0       rSurgery.uShowSurgeryTab
+ 0004:000058EC       rSurgery.uSurgeryTitles
+ 0004:000049DC       rTemplates..1
+ 0001:00170190       rTemplates.BuildTemplateFields
+ 0001:0016FDC4       rTemplates.CallImportExportTemplateFields
+ 0001:0016FBE8       rTemplates.CanEditTemplateFields
+ 0001:0016FF1C       rTemplates.CheckTemplateFields
+ 0001:00170018       rTemplates.Convert2LMText
+ 0001:0016FD88       rTemplates.DeleteTemplateField
+ 0001:0016F224       rTemplates.DeleteTemplates
+ 0001:0016FEF4       rTemplates.ExportTemplateFields
+ 0001:001703BC       rTemplates.Finalization
+ 0001:0016F354       rTemplates.GetAllowedPersonalObjects
+ 0001:0016FA50       rTemplates.GetLinkedTemplateData
+ 0001:0016F324       rTemplates.GetObjectList
+ 0001:0016F4C0       rTemplates.GetTemplateAccess
+ 0001:0016F824       rTemplates.GetTemplateAllowedReminderDialogs
+ 0001:0016EBDC       rTemplates.GetTemplateBoilerplate
+ 0001:0016EB2C       rTemplates.GetTemplateChildren
+ 0001:0016EA04       rTemplates.GetTemplateRoots
+ 0001:0016EC8C       rTemplates.GetTemplateText
+ 0001:0016F5E4       rTemplates.GetTitleBoilerplate
+ 0001:0016F674       rTemplates.GetUserTemplateDefaults
+ 0001:00170354       rTemplates.ImportLoadedFields
+ 0001:0016F8E4       rTemplates.IsRemDlgAllowed
+ 0001:0016FF6C       rTemplates.IsTemplateFieldNameUnique
+ 0001:0016EA4C       rTemplates.IsUserTemplateEditor
+ 0001:0016F7A0       rTemplates.LoadTemplateDescription
+ 0001:0016FB50       rTemplates.LoadTemplateField
+ 0001:0016FB98       rTemplates.LoadTemplateFieldByIEN
+ 0001:0016F980       rTemplates.LockTemplate
+ 0001:0016FCBC       rTemplates.LockTemplateField
+ 0001:00170138       rTemplates.reset_broker
+ 0002:00001054       rTemplates.rTemplates
+ 0001:0016F758       rTemplates.SaveUserTemplateDefaults
+ 0001:0016F704       rTemplates.SetUserTemplateDefaults
+ 0001:0016FA98       rTemplates.SubSetOfAllTitles
+ 0001:0016F580       rTemplates.SubSetOfBoilerplatedTitles
+ 0001:0016FAF8       rTemplates.SubSetOfTemplateFields
+ 0001:0016F38C       rTemplates.TestBoilerplate
+ 0003:000035B8       rTemplates.uCanEditDlgFldChecked
+ 0004:000049E0       rTemplates.uCanEditDlgFlds
+ 0001:0016FA14       rTemplates.UnlockTemplate
+ 0001:0016FD4C       rTemplates.UnlockTemplateField
+ 0001:0016F0D4       rTemplates.UpdateChildren
+ 0001:0016F058       rTemplates.UpdateTemplate
+ 0001:0016FC88       rTemplates.UpdateTemplateField
+ 0001:0016EE6C       rTemplates.UpdateTIURec
+ 0003:000035B4       rTemplates.uUserTemplateDefaults
+ 0004:00004A00       rTIU..1
+ 0001:0017D484       rTIU.ActOnDocument
+ 0001:0017F694       rTIU.AllowChartPrintForNote
+ 0001:0017CFF4       rTIU.AskCosignerForDocument
+ 0001:0017D148       rTIU.AskCosignerForTitle
+ 0001:0017D29C       rTIU.AskSubjectForNotes
+ 0001:001805E4       rTIU.AttachEntryToParent
+ 0001:0017D580       rTIU.AuthorSignedDocument
+ 0001:001802BC       rTIU.CanBeAttached
+ 0001:0017F960       rTIU.CanChangeCosigner
+ 0001:0017D2B4       rTIU.CanCosign
+ 0001:001804F4       rTIU.CanReceiveAttachment
+ 0001:001801B4       rTIU.CanTitleBeIDChild
+ 0001:0017FA18       rTIU.ChangeCosigner
+ 0001:0017D62C       rTIU.CosignDocument
+ 0001:0017D414       rTIU.DefaultCosigner
+ 0001:0017E510       rTIU.DeleteDocument
+ 0001:001806E0       rTIU.DetachEntryFromParent
+ 0001:0017C8EC       rTIU.DfltNoteTitle
+ 0001:0017C904       rTIU.DfltNoteTitleName
+ 0001:0017D46C       rTIU.DfltTIULocation
+ 0001:001809D8       rTIU.Finalization
+ 0001:0017D920       rTIU.FindDT
+ 0001:0017DA0C       rTIU.FindExt
+ 0001:0017DAE4       rTIU.FindInt
+ 0001:0017DBC4       rTIU.FindInt64
+ 0001:0017DCC0       rTIU.FindVal
+ 0001:0017E254       rTIU.GetConsultIENforNote
+ 0001:0017F8AC       rTIU.GetCurrentSigners
+ 0001:0017FC30       rTIU.GetCurrentTIUContext
+ 0001:0017F854       rTIU.GetFormattedNote
+ 0001:0017DD98       rTIU.GetNoteForEdit
+ 0001:0017E214       rTIU.GetPackageRefForNote
+ 0001:0017E4C4       rTIU.GetTIUListItem
+ 0001:001801B0       rTIU.IDNotesInstalled
+ 0001:0017F57C       rTIU.InitParams
+ 0001:0017CA5C       rTIU.IsClinProcTitle
+ 0001:0017C928       rTIU.IsConsultTitle
+ 0001:0017C9C8       rTIU.IsPRFTitle
+ 0001:0017E5F8       rTIU.JustifyDocumentDelete
+ 0001:0017E42C       rTIU.LastSaveClean
+ 0001:0017D6D0       rTIU.ListConsultRequests
+ 0001:0017D794       rTIU.ListNotesForTree
+ 0001:0017CAFC       rTIU.ListNoteTitlesShort
+ 0001:0017CBA8       rTIU.LoadBoilerPlate
+ 0001:0017D8C8       rTIU.LoadDetailText
+ 0001:0017D874       rTIU.LoadDocumentText
+ 0001:0017C74C       rTIU.LoadNoteTitles
+ 0001:0017CD5C       rTIU.LoadTIUPrefs
+ 0001:0017E330       rTIU.LockDocument
+ 0001:00180954       rTIU.NoteHasText
+ 0001:0017FB5C       rTIU.OneNotePerVisit
+ 0001:0017CC68       rTIU.PrintNameForTitle
+ 0001:0017F74C       rTIU.PrintNoteToDevice
+ 0001:0017EBD0       rTIU.PutAddendum
+ 0001:0017EE78       rTIU.PutEditedNote
+ 0001:0017E770       rTIU.PutNewNote
+ 0001:0017C8CC       rTIU.ResetNoteTitles
+ 0001:0017CFD4       rTIU.ResetTIUPreferences
+ 0001:0017D44C       rTIU.ReturnMaxNotes
+ 0002:0000106C       rTIU.rTIU
+ 0001:0017FEF8       rTIU.SaveCurrentTIUContext
+ 0001:0017F23C       rTIU.SetText
+ 0001:0017E68C       rTIU.SignDocument
+ 0001:0017CCAC       rTIU.SubSetOfNoteTitles
+ 0001:001807C4       rTIU.SubSetOfUserClasses
+ 0001:0017E188       rTIU.TitleForNote
+ 0001:00180918       rTIU.TIUPatch175Installed
+ 0001:00180118       rTIU.TIUSiteParams
+ 0001:0017E3E8       rTIU.UnlockDocument
+ 0004:00004A08       rTIU.uNoteTitles
+ 0004:00004A10       rTIU.uPatch175Installed
+ 0001:0017F90C       rTIU.UpdateAdditionalSigners
+ 0001:00180828       rTIU.UserDivClassInfo
+ 0001:0018087C       rTIU.UserInactive
+ 0004:00004A0C       rTIU.uTIUPrefs
+ 0004:00004A04       rTIU.uTIUSiteParams
+ 0003:00003714       rTIU.uTIUSiteParamsLoaded
+ 0001:0017E148       rTIU.VisitStrForNote
+ 0004:00004910       rVitals..1
+ 0001:0012A858       rVitals.Finalization
+ 0001:0012A3B0       rVitals.GetLastVital
+ 0001:0012A6E4       rVitals.GetVitalFromNoteIEN
+ 0001:0012A79C       rVitals.GetVitalsFromEncDateTime
+ 0002:00000F04       rVitals.rVitals
+ 0003:00003300       rVitals.uVitalList
+ 0001:0012A540       rVitals.ValAndStoreVitals
+ 0001:0012A444       rVitals.VerifyVital
+ 0001:00127F64       rWVEHR.GetPatientBriefAge
+ 0003:000032B0       rWVEHR.PERIOD
+ 0004:00003864       SelDiv..2
+ 0001:0011B0BC       SelDiv..TSelDivForm
+ 0001:0011B2E8       SelDiv.ChooseDiv
+ 0004:0000386C       SelDiv.CntDiv
+ 0004:00003870       SelDiv.DivArray
+ 0004:00003868       SelDiv.DivSel
+ 0001:0011BBF4       SelDiv.Finalization
+ 0001:0011B704       SelDiv.MultDiv
+ 0002:00000DF8       SelDiv.SelDiv
+ 0004:00003860       SelDiv.SelDivForm
+ 0001:0011B4F0       SelDiv.SelectDivision
+ 0001:0011B7C0       SelDiv.SetDiv
+ 0001:0011B9AC       SelDiv.TSelDivForm.btnCancelClick
+ 0001:0011B9B4       SelDiv.TSelDivForm.btnHelpClick
+ 0001:0011B8F8       SelDiv.TSelDivForm.btnOKClick
+ 0001:0011B8C8       SelDiv.TSelDivForm.Enter
+ 0001:0011BA80       SelDiv.TSelDivForm.FormCreate
+ 0004:000049B0       Series..61
+ 0001:0013B2CC       Series..BarException
+ 0001:0013BEA0       Series..PieException
+ 0001:0013AF4C       Series..TAreaSeries
+ 0001:0013B854       Series..TBarSeries
+ 0001:0013BC58       Series..TCircledSeries
+ 0001:0013B450       Series..TCustomBarSeries
+ 0001:0013A788       Series..TCustomSeries
+ 0001:0013BF24       Series..TExplodedSlices
+ 0001:0013C418       Series..TFastLineSeries
+ 0001:0013BA50       Series..THorizBarSeries
+ 0001:0013A990       Series..TLineSeries
+ 0001:0013BFDC       Series..TPieOtherSlice
+ 0001:0013C0E0       Series..TPieSeries
+ 0001:0013ACA0       Series..TPointSeries
+ 0001:0013A550       Series..TSeriesPointer
+ 0001:00141404       Series.AdjustCircleMarks
+ 0001:00141098       Series.AllCircled
+ 0001:001412C4       Series.CalcCircledRatio
+ 0001:0013D988       Series.CalcYPosLeftRight
+ 0001:0013D350       Series.CheckPointInLine
+ 0001:00142128       Series.CompareSliceAngle
+ 0001:0013CAA8       Series.DoTriangle3D
+ 0001:0013C9F0       Series.DrawCross
+ 0001:0013C914       Series.DrawDiagonalCross
+ 0001:0013D7DC       Series.DrawLine
+ 0001:0013DC84       Series.DrawPoint
+ 0001:001431F4       Series.Finalization
+ 0001:00142080       Series.GetAngleSlice
+ 0003:00003570       Series.HalfPi
+ 0001:0013DA38       Series.InternalDrawArea
+ 0003:00003578       Series.PiDegree
+ 0003:00003580       Series.PieSampleStr
+ 0001:0013D338       Series.PointInHorizLine
+ 0001:0013D320       Series.PointInVertLine
+ 0001:00143028       Series.RegisterStandardSeries
+ 0002:00000F2C       Series.Series
+ 0001:0013EA08       Series.SetOtherMultiArea
+ 0001:00142188       Series.SortSlices
+ 0001:0013E958       Series.TAreaSeries.Assign
+ 0001:0013EC18       Series.TAreaSeries.CalcYPos
+ 0001:0013E9B8       Series.TAreaSeries.CalcZOrder
+ 0001:0013E8B4       Series.TAreaSeries.Create
+ 0001:0013E9D8       Series.TAreaSeries.GetEditorClass
+ 0001:0013EB44       Series.TAreaSeries.GetOriginPos
+ 0001:0013EAA8       Series.TAreaSeries.InternalCalcStackedYPos
+ 0001:0013EB60       Series.TAreaSeries.MaxYValue
+ 0001:0013EBF0       Series.TAreaSeries.MinYValue
+ 0001:0013E90C       Series.TAreaSeries.PrepareLegendCanvas
+ 0001:0013EA78       Series.TAreaSeries.SetMultiArea
+ 0001:0013FAF8       Series.TBarSeries.CalcHorizMargins
+ 0001:0013FB1C       Series.TBarSeries.CalcVerticalMargins
+ 0001:0013FA20       Series.TBarSeries.CalcXPos
+ 0001:00140140       Series.TBarSeries.CalcYPos
+ 0001:0013FC24       Series.TBarSeries.DrawBar
+ 0001:0013FBB4       Series.TBarSeries.DrawMark
+ 0001:0014031C       Series.TBarSeries.DrawSeriesForward
+ 0001:001400AC       Series.TBarSeries.DrawValue
+ 0001:0014030C       Series.TBarSeries.DrawValuesForward
+ 0001:001401F4       Series.TBarSeries.GetOriginPos
+ 0001:0013FBA4       Series.TBarSeries.InternalCalcMarkLength
+ 0001:00140204       Series.TBarSeries.InternalClicked
+ 0001:0013FAA4       Series.TBarSeries.MaxYValue
+ 0001:0013FAD0       Series.TBarSeries.MinYValue
+ 0001:00141248       Series.TCircledSeries.AdjustCircleRect
+ 0001:001415D8       Series.TCircledSeries.AngleToPos
+ 0001:00141778       Series.TCircledSeries.Assign
+ 0001:00141244       Series.TCircledSeries.AssociatedToAxis
+ 0001:00141634       Series.TCircledSeries.CalcCircleBackColor
+ 0001:0014152C       Series.TCircledSeries.CalcRadius
+ 0001:00140E1C       Series.TCircledSeries.Create
+ 0001:00140E78       Series.TCircledSeries.Destroy
+ 0001:001414C4       Series.TCircledSeries.DoBeforeDrawValues
+ 0001:00141680       Series.TCircledSeries.PointToAngle
+ 0001:00141668       Series.TCircledSeries.PrepareLegendCanvas
+ 0001:001417DC       Series.TCircledSeries.SetActive
+ 0001:001415C8       Series.TCircledSeries.SetCircleBackColor
+ 0001:00140EAC       Series.TCircledSeries.SetCircled
+ 0001:00141050       Series.TCircledSeries.SetCustomXRadius
+ 0001:00141074       Series.TCircledSeries.SetCustomYRadius
+ 0001:00140FD4       Series.TCircledSeries.SetOtherCustomRadius
+ 0001:00141208       Series.TCircledSeries.SetParentChart
+ 0001:001410EC       Series.TCircledSeries.SetParentProperties
+ 0001:00140F1C       Series.TCircledSeries.SetRotationAngle
+ 0001:0014104C       Series.TCircledSeries.UseAxis
+ 0001:0013F8B4       Series.TCustomBarSeries.AdjustGradientRectPen
+ 0001:0013F778       Series.TCustomBarSeries.ApplyBarOffset
+ 0001:0013F7DC       Series.TCustomBarSeries.Assign
+ 0001:0013F758       Series.TCustomBarSeries.BarMargin
+ 0001:0013EF14       Series.TCustomBarSeries.BarOrderPos
+ 0001:0013F5E4       Series.TCustomBarSeries.BarRectangle
+ 0001:0013F238       Series.TCustomBarSeries.BarSeriesCount
+ 0001:0013EF7C       Series.TCustomBarSeries.CalcBarWidth
+ 0001:0013F104       Series.TCustomBarSeries.CalcMarkLength
+ 0001:0013ED74       Series.TCustomBarSeries.CalcZOrder
+ 0001:0013F2A0       Series.TCustomBarSeries.Clicked
+ 0001:0013EC50       Series.TCustomBarSeries.Create
+ 0001:0013ED28       Series.TCustomBarSeries.Destroy
+ 0001:0013F4B8       Series.TCustomBarSeries.DrawLegendShape
+ 0001:0013F6EC       Series.TCustomBarSeries.GetBarStyle
+ 0001:0013F728       Series.TCustomBarSeries.GetEditorClass
+ 0001:0013FA00       Series.TCustomBarSeries.InternalApplyBarMargin
+ 0001:0013EF78       Series.TCustomBarSeries.InternalClicked
+ 0001:0013F3C4       Series.TCustomBarSeries.InternalGetOriginPos
+ 0001:0013F8E0       Series.TCustomBarSeries.MaxMandatoryValue
+ 0001:0013F9A4       Series.TCustomBarSeries.MinMandatoryValue
+ 0001:0013EE08       Series.TCustomBarSeries.NumSampleValues
+ 0001:0013F474       Series.TCustomBarSeries.PointOrigin
+ 0001:0013F1FC       Series.TCustomBarSeries.PrepareForGallery
+ 0001:0013F500       Series.TCustomBarSeries.PrepareLegendCanvas
+ 0001:0013F7CC       Series.TCustomBarSeries.SetAutoBarSize
+ 0001:0013F7BC       Series.TCustomBarSeries.SetAutoMarkPosition
+ 0001:0013F71C       Series.TCustomBarSeries.SetBarBrush
+ 0001:0013F6E0       Series.TCustomBarSeries.SetBarPen
+ 0001:0013EF00       Series.TCustomBarSeries.SetBarStyle
+ 0001:0013EE10       Series.TCustomBarSeries.SetBarWidthPercent
+ 0001:0013EEF0       Series.TCustomBarSeries.SetCustomBarSize
+ 0001:0013F1EC       Series.TCustomBarSeries.SetDark3d
+ 0001:0013F3A0       Series.TCustomBarSeries.SetMultiBar
+ 0001:0013EE80       Series.TCustomBarSeries.SetOffsetPercent
+ 0001:0013F220       Series.TCustomBarSeries.SetOrigin
+ 0001:0013F348       Series.TCustomBarSeries.SetOtherMultiBar
+ 0001:0013F55C       Series.TCustomBarSeries.SetPenBrushBar
+ 0001:0013F178       Series.TCustomBarSeries.SetSideMargins
+ 0001:0013F168       Series.TCustomBarSeries.SetUseOrigin
+ 0001:0013D240       Series.TCustomSeries.Assign
+ 0001:0013E5AC       Series.TCustomSeries.CalcHorizMargins
+ 0001:0013E614       Series.TCustomSeries.CalcVerticalMargins
+ 0001:0013D4F0       Series.TCustomSeries.Clicked
+ 0001:0013D208       Series.TCustomSeries.ClickedPointer
+ 0001:0013D100       Series.TCustomSeries.Create
+ 0001:0013D18C       Series.TCustomSeries.Destroy
+ 0001:0013D858       Series.TCustomSeries.DrawLegendShape
+ 0001:0013D1D4       Series.TCustomSeries.DrawMark
+ 0001:0013E518       Series.TCustomSeries.DrawPointer
+ 0001:0013E230       Series.TCustomSeries.DrawValue
+ 0001:0013D96C       Series.TCustomSeries.GetAreaBrushColor
+ 0001:0013E57C       Series.TCustomSeries.GetEditorClass
+ 0001:0013E694       Series.TCustomSeries.GetOriginPos
+ 0001:0013D90C       Series.TCustomSeries.LinePrepareCanvas
+ 0001:0013D7BC       Series.TCustomSeries.SetAreaBrush
+ 0001:0013D7A0       Series.TCustomSeries.SetAreaColor
+ 0001:0013D758       Series.TCustomSeries.SetAreaLinesPen
+ 0001:0013D7B0       Series.TCustomSeries.SetBrushProperty
+ 0001:0013E6A0       Series.TCustomSeries.SetDark3D
+ 0001:0013D738       Series.TCustomSeries.SetDrawArea
+ 0001:0013D790       Series.TCustomSeries.SetInvertedStairs
+ 0001:0013D7CC       Series.TCustomSeries.SetLineBrush
+ 0001:0013D770       Series.TCustomSeries.SetLineHeight
+ 0001:0013D764       Series.TCustomSeries.SetLinePen
+ 0001:0013D748       Series.TCustomSeries.SetPointer
+ 0001:0013D780       Series.TCustomSeries.SetStairs
+ 0001:001417FC       Series.TExplodedSlices.GetValue
+ 0001:00141828       Series.TExplodedSlices.SetValue
+ 0001:00142ED8       Series.TFastLineSeries.Assign
+ 0001:00142F1C       Series.TFastLineSeries.Clicked
+ 0001:00142B78       Series.TFastLineSeries.Create
+ 0001:00142BD0       Series.TFastLineSeries.Destroy
+ 0001:00142D44       Series.TFastLineSeries.DrawAllValues
+ 0001:00142EAC       Series.TFastLineSeries.DrawLegendShape
+ 0001:00143008       Series.TFastLineSeries.DrawMark
+ 0001:00142D58       Series.TFastLineSeries.DrawValue
+ 0001:00142CE0       Series.TFastLineSeries.GetEditorClass
+ 0001:00142C28       Series.TFastLineSeries.NotifyNewValue
+ 0001:00142D14       Series.TFastLineSeries.PrepareCanvas
+ 0001:00142C00       Series.TFastLineSeries.SetLinePen
+ 0001:00142E8C       Series.TFastLineSeries.SetSeriesColor
+ 0001:00140344       Series.THorizBarSeries.CalcHorizMargins
+ 0001:001403BC       Series.THorizBarSeries.CalcVerticalMargins
+ 0001:001403E0       Series.THorizBarSeries.CalcXPos
+ 0001:001404A4       Series.THorizBarSeries.CalcYPos
+ 0001:00140780       Series.THorizBarSeries.DrawBar
+ 0001:001406F0       Series.THorizBarSeries.DrawMark
+ 0001:00140DFC       Series.THorizBarSeries.DrawSeriesForward
+ 0001:00140C28       Series.THorizBarSeries.DrawValue
+ 0001:00140DEC       Series.THorizBarSeries.DrawValuesForward
+ 0001:00140CBC       Series.THorizBarSeries.FillSampleValues
+ 0001:00140494       Series.THorizBarSeries.GetOriginPos
+ 0001:00140684       Series.THorizBarSeries.InternalCalcMarkLength
+ 0001:0014051C       Series.THorizBarSeries.InternalClicked
+ 0001:0014033C       Series.THorizBarSeries.MandatoryValueList
+ 0001:00140630       Series.THorizBarSeries.MaxXValue
+ 0001:0014065C       Series.THorizBarSeries.MinXValue
+ 0001:0013E72C       Series.TLineSeries.Assign
+ 0001:0013E6B0       Series.TLineSeries.Create
+ 0001:0013E700       Series.TLineSeries.PrepareLegendCanvas
+ 0001:001418C0       Series.TPieOtherSlice.Assign
+ 0001:00141868       Series.TPieOtherSlice.Create
+ 0001:001418FC       Series.TPieOtherSlice.SetStyle
+ 0001:00141910       Series.TPieOtherSlice.SetText
+ 0001:00141920       Series.TPieOtherSlice.SetValue
+ 0001:00142928       Series.TPieSeries.Assign
+ 0001:00141D08       Series.TPieSeries.BelongsToOtherSlice
+ 0001:00141D30       Series.TPieSeries.CalcAngles
+ 0001:00141B74       Series.TPieSeries.CalcClickedPie
+ 0001:001426FC       Series.TPieSeries.CalcExplodeBiggest
+ 0001:001425E0       Series.TPieSeries.CalcExplodedOffset
+ 0001:00141E94       Series.TPieSeries.CalcExplodedRadius
+ 0001:00141A5C       Series.TPieSeries.CalcXPos
+ 0001:00141AA4       Series.TPieSeries.ClearLists
+ 0001:00141C54       Series.TPieSeries.Clicked
+ 0001:00141C7C       Series.TPieSeries.CountLegendItems
+ 0001:00141938       Series.TPieSeries.Create
+ 0001:001419F8       Series.TPieSeries.Destroy
+ 0001:001428A8       Series.TPieSeries.DisableRotation
+ 0001:001429A0       Series.TPieSeries.DoBeforeDrawChart
+ 0001:00142258       Series.TPieSeries.DrawAllValues
+ 0001:00141F04       Series.TPieSeries.DrawMark
+ 0001:00142434       Series.TPieSeries.DrawPie
+ 0001:0014276C       Series.TPieSeries.DrawValue
+ 0001:00141B0C       Series.TPieSeries.FillSampleValues
+ 0001:00141AF8       Series.TPieSeries.GalleryChanged3D
+ 0001:001427E8       Series.TPieSeries.GetEditorClass
+ 0001:00142818       Series.TPieSeries.GetPieValues
+ 0001:00141CB8       Series.TPieSeries.LegendToValueIndex
+ 0001:00142838       Series.TPieSeries.MaxXValue
+ 0001:00142870       Series.TPieSeries.MaxYValue
+ 0001:00142854       Series.TPieSeries.MinXValue
+ 0001:0014288C       Series.TPieSeries.MinYValue
+ 0001:00141A9C       Series.TPieSeries.NumSampleValues
+ 0001:001428D4       Series.TPieSeries.PrepareForGallery
+ 0001:00141AC0       Series.TPieSeries.PrepareLegendCanvas
+ 0001:00142828       Series.TPieSeries.SetDark3d
+ 0001:00142738       Series.TPieSeries.SetExplodeBiggest
+ 0001:00142760       Series.TPieSeries.SetOtherSlice
+ 0001:00142754       Series.TPieSeries.SetPiePen
+ 0001:00142820       Series.TPieSeries.SetPieValues
+ 0001:001427D8       Series.TPieSeries.SetUsePatterns
+ 0001:00142B2C       Series.TPieSeries.SwapValueIndex
+ 0001:0013E7CC       Series.TPointSeries.Assign
+ 0001:0013E770       Series.TPointSeries.Create
+ 0001:0013E7FC       Series.TPointSeries.GetEditorClass
+ 0001:0013E830       Series.TPointSeries.PrepareForGallery
+ 0001:0013E888       Series.TPointSeries.SetColorEachPoint
+ 0001:0013CFE4       Series.TSeriesPointer.Assign
+ 0001:0013C824       Series.TSeriesPointer.CalcHorizMargins
+ 0001:0013C858       Series.TSeriesPointer.CalcVerticalMargins
+ 0001:0013C750       Series.TSeriesPointer.CheckPointerSize
+ 0001:0013C674       Series.TSeriesPointer.Create
+ 0001:0013C700       Series.TSeriesPointer.Destroy
+ 0001:0013CFB4       Series.TSeriesPointer.Draw
+ 0001:0013D054       Series.TSeriesPointer.DrawLegendShape
+ 0001:0013CB7C       Series.TSeriesPointer.DrawPointer
+ 0001:0013C8AC       Series.TSeriesPointer.PrepareCanvas
+ 0001:0013C744       Series.TSeriesPointer.SetBooleanProperty
+ 0001:0013C800       Series.TSeriesPointer.SetBrush
+ 0001:0013C80C       Series.TSeriesPointer.SetDark3D
+ 0001:0013C818       Series.TSeriesPointer.SetDraw3D
+ 0001:0013C7A8       Series.TSeriesPointer.SetHorizSize
+ 0001:0013C7C8       Series.TSeriesPointer.SetInflateMargins
+ 0001:0013C738       Series.TSeriesPointer.SetIntegerProperty
+ 0001:0013C7F4       Series.TSeriesPointer.SetPen
+ 0001:0013C898       Series.TSeriesPointer.SetStyle
+ 0001:0013C7D4       Series.TSeriesPointer.SetVertSize
+ 0001:0013C88C       Series.TSeriesPointer.SetVisible
+ 0003:00003568       Series.TwoPi
+ 0004:000048D4       Sgnoncnf..4
+ 0001:00121CB0       Sgnoncnf..TfrmSignonConfig
+ 0001:00121F80       Sgnoncnf..TSignonConfiguration
+ 0001:00121C28       Sgnoncnf..TSignonValues
+ 0001:001236AC       Sgnoncnf.Finalization
+ 0004:000048BC       Sgnoncnf.frmSignonConfig
+ 0004:000048C8       Sgnoncnf.InitialValues
+ 0004:000048D0       Sgnoncnf.IsSharedBroker
+ 0001:001223C4       Sgnoncnf.RestoreFontStyles
+ 0002:00000E18       Sgnoncnf.Sgnoncnf
+ 0004:000048CC       Sgnoncnf.SignonDefaults
+ 0001:00122334       Sgnoncnf.StoreFontStyle
+ 0004:000048C0       Sgnoncnf.strPosition
+ 0004:000048C4       Sgnoncnf.strSize
+ 0001:00122028       Sgnoncnf.TfrmSignonConfig.Button1Click
+ 0001:001223C0       Sgnoncnf.TfrmSignonConfig.FormShow
+ 0001:00122034       Sgnoncnf.TfrmSignonConfig.OKBtnClick
+ 0001:001224C0       Sgnoncnf.TfrmSignonConfig.rgrIntroBackClrClick
+ 0001:00123094       Sgnoncnf.TSignonConfiguration.Create
+ 0001:001227DC       Sgnoncnf.TSignonConfiguration.FontDialog
+ 0001:00122714       Sgnoncnf.TSignonConfiguration.IntroBackColor
+ 0001:00122038       Sgnoncnf.TSignonConfiguration.ReadRegistrySettings
+ 0001:00122A84       Sgnoncnf.TSignonConfiguration.ResetToDefaults
+ 0001:001224CC       Sgnoncnf.TSignonConfiguration.ShowModal
+ 0001:00123100       Sgnoncnf.TSignonConfiguration.UpdateWindow
+ 0001:00122C54       Sgnoncnf.TSignonConfiguration.UserClickedOK
+ 0001:00123208       Sgnoncnf.TSignonValues.Clear
+ 0001:00123288       Sgnoncnf.TSignonValues.Create
+ 0001:001232CC       Sgnoncnf.TSignonValues.Destroy
+ 0001:00123544       Sgnoncnf.TSignonValues.SetEqual
+ 0001:00123600       Sgnoncnf.TSignonValues.SetFont
+ 0001:00123464       Sgnoncnf.TSignonValues.SetIntroFont
+ 0001:00123504       Sgnoncnf.TSignonValues.SetIntroFontStyles
+ 0001:001233B0       Sgnoncnf.TSignonValues.SetPosition
+ 0001:001232FC       Sgnoncnf.TSignonValues.SetSize
+ 0001:001236A0       Sgnoncnf.TSignonValues.SetTextColor
+ 0004:00002800       ShareMem..1
+ 0001:00006594       ShareMem.DefaultAllocMem
+ 0001:000065B8       ShareMem.DefaultRegisterAndUnregisterExpectedMemoryLeak
+ 0001:00006728       ShareMem.Finalization
+ 0001:000064E4       ShareMem.GetModuleHandle
+ 0001:000064EC       ShareMem.GetProcAddress
+ 0001:000064F4       ShareMem.HeapAddRef
+ 0001:00006544       ShareMem.HeapRelease
+ 0001:000065BC       ShareMem.InitMemoryManager
+ 0004:00002804       ShareMem.SharedMemoryManager
+ 0002:00000098       ShareMem.ShareMem
+ 0001:000064DC       ShareMem.SysGetMem
+ 0001:001334F4       SHDocVw..TWebBrowser
+ 0003:0000349C       SHDocVw.CControlData
+ 0003:0000341C       SHDocVw.CEventDispIDs
+ 0001:00133FF0       SHDocVw.DoCreate
+ 0001:00134074       SHDocVw.TWebBrowser.CreateControl
+ 0001:00134094       SHDocVw.TWebBrowser.GetControlInterface
+ 0001:00133FD4       SHDocVw.TWebBrowser.InitControlData
+ 0001:001340B4       SHDocVw.TWebBrowser.Navigate
+ 0001:000385B8       ShellAPI.ShellExecute
+ 0003:00001080       ShlObj.CLSID_AutoComplete
+ 0001:00038628       ShlObj.SHGetSpecialFolderPath
+ 0004:000037AC       SqlTimSt..1
+ 0001:00100598       SqlTimSt..TSQLTimeStampData
+ 0001:001004DC       SqlTimSt..TSQLTimeStampVariantType
+ 0003:00002F98       SqlTimSt.AdjustAmt
+ 0003:00002FA0       SqlTimSt.AdjustAmt
+ 0003:00002F90       SqlTimSt.AdjustAmt
+ 0003:00002F88       SqlTimSt.AdjustAmt
+ 0001:0010119C       SqlTimSt.CheckSqlTimeStamp
+ 0001:001010CC       SqlTimSt.DateTimeToSQLTimeStamp
+ 0001:001012A8       SqlTimSt.Finalization
+ 0003:00002F7C       SqlTimSt.IncrementAmount
+ 0001:0010075C       SqlTimSt.IsSQLTimeStampBlank
+ 0001:00100FD4       SqlTimSt.IsSqlTimeStampValid
+ 0003:00002F6C       SqlTimSt.NullSQLTimeStamp
+ 0001:00101114       SqlTimSt.SQLTimeStampToDateTime
+ 0001:00100F98       SqlTimSt.SQLTimeStampToStr
+ 0003:00002F84       SqlTimSt.SQLTimeStampVariantType
+ 0002:00000B48       SqlTimSt.SqlTimSt
+ 0001:00101060       SqlTimSt.StrToSQLTimeStamp
+ 0001:00101014       SqlTimSt.TryStrToSQLTimeStamp
+ 0001:00100904       SqlTimSt.TSQLTimeStampData.AdjustDate
+ 0001:001007D4       SqlTimSt.TSQLTimeStampData.AdjustDays
+ 0001:0010082C       SqlTimSt.TSQLTimeStampData.AdjustHours
+ 0001:00100874       SqlTimSt.TSQLTimeStampData.AdjustMinutes
+ 0001:001007A0       SqlTimSt.TSQLTimeStampData.AdjustMonths
+ 0001:001008BC       SqlTimSt.TSQLTimeStampData.AdjustSeconds
+ 0001:00100A1C       SqlTimSt.TSQLTimeStampData.Compare
+ 0001:00100B78       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100C20       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100B1C       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100BD0       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100970       SqlTimSt.TSQLTimeStampData.DaysInMonth
+ 0001:001009C8       SqlTimSt.TSQLTimeStampData.DoAdd
+ 0001:00100988       SqlTimSt.TSQLTimeStampData.DoSubtract
+ 0001:00100AB4       SqlTimSt.TSQLTimeStampData.GetAsDateTime
+ 0001:00100A9C       SqlTimSt.TSQLTimeStampData.GetAsString
+ 0001:00100794       SqlTimSt.TSQLTimeStampData.GetIsBlank
+ 0001:00100AF0       SqlTimSt.TSQLTimeStampData.SetAsDateTime
+ 0001:00100ACC       SqlTimSt.TSQLTimeStampData.SetAsString
+ 0001:00100C5C       SqlTimSt.TSQLTimeStampData.SetDay
+ 0001:00100C64       SqlTimSt.TSQLTimeStampData.SetFractions
+ 0001:00100C68       SqlTimSt.TSQLTimeStampData.SetHour
+ 0001:00100C70       SqlTimSt.TSQLTimeStampData.SetMinute
+ 0001:00100C78       SqlTimSt.TSQLTimeStampData.SetMonth
+ 0001:00100C80       SqlTimSt.TSQLTimeStampData.SetSecond
+ 0001:00100C88       SqlTimSt.TSQLTimeStampData.SetYear
+ 0001:00100F44       SqlTimSt.TSQLTimeStampVariantType.BinaryOp
+ 0001:00100CA0       SqlTimSt.TSQLTimeStampVariantType.Cast
+ 0001:00100DCC       SqlTimSt.TSQLTimeStampVariantType.CastTo
+ 0001:00100C90       SqlTimSt.TSQLTimeStampVariantType.Clear
+ 0001:00100F78       SqlTimSt.TSQLTimeStampVariantType.Compare
+ 0001:00100EF4       SqlTimSt.TSQLTimeStampVariantType.Copy
+ 0001:00100F40       SqlTimSt.TSQLTimeStampVariantType.GetInstance
+ 0001:00055394       StdActns..THintAction
+ 0001:00055488       StdActns.THintAction.Create
+ 0001:0003C374       StdCtrls..TButton
+ 0001:0003C0FC       StdCtrls..TButtonActionLink
+ 0001:0003C1F0       StdCtrls..TButtonControl
+ 0001:0003CCEC       StdCtrls..TCheckBox
+ 0001:0003B690       StdCtrls..TComboBox
+ 0001:0003FE3C       StdCtrls..TComboBoxStrings
+ 0001:0003CB38       StdCtrls..TCustomCheckBox
+ 0001:0003B22C       StdCtrls..TCustomCombo
+ 0001:0003B498       StdCtrls..TCustomComboBox
+ 0001:0003B114       StdCtrls..TCustomComboBoxStrings
+ 0001:00039900       StdCtrls..TCustomEdit
+ 0001:00038630       StdCtrls..TCustomGroupBox
+ 0001:00039088       StdCtrls..TCustomLabel
+ 0001:0003DE68       StdCtrls..TCustomListBox
+ 0001:0003A4E0       StdCtrls..TCustomMemo
+ 0001:0003F3D8       StdCtrls..TCustomStaticText
+ 0001:00039ACC       StdCtrls..TEdit
+ 0001:000387B0       StdCtrls..TGroupBox
+ 0001:000391C4       StdCtrls..TLabel
+ 0001:0003E0A4       StdCtrls..TListBox
+ 0001:0003FF48       StdCtrls..TListBoxStrings
+ 0001:0003A67C       StdCtrls..TMemo
+ 0001:0003FD38       StdCtrls..TMemoStrings
+ 0001:0003D4E8       StdCtrls..TRadioButton
+ 0001:0003EC78       StdCtrls..TScrollBar
+ 0001:0003F554       StdCtrls..TStaticText
+ 0003:00001190       StdCtrls.Alignments
+ 0003:000011FC       StdCtrls.Alignments
+ 0003:000010E8       StdCtrls.Alignments
+ 0003:00001180       StdCtrls.Alignments
+ 0003:000010A8       StdCtrls.Alignments
+ 0003:00001214       StdCtrls.Borders
+ 0003:00001090       StdCtrls.BorderStyles
+ 0003:00001178       StdCtrls.ButtonStyles
+ 0003:000010C8       StdCtrls.CharCases
+ 0003:0000112C       StdCtrls.CharCases
+ 0003:00001118       StdCtrls.ComboBoxStyles
+ 0003:000011E4       StdCtrls.CSHREDRAW
+ 0003:00001170       StdCtrls.Ctl3DStyles
+ 0003:000011EC       StdCtrls.Data
+ 0001:000434F0       StdCtrls.DeleteSelectedText
+ 0003:00001160       StdCtrls.EdgeStyles
+ 0003:00001098       StdCtrls.Ellipsis
+ 0003:000010E4       StdCtrls.Empty
+ 0003:000011C4       StdCtrls.ExtendSelects
+ 0001:0004663C       StdCtrls.FindString
+ 0001:0003FD1C       StdCtrls.HasPopup
+ 0001:000434AC       StdCtrls.HasSelectedText
+ 0003:000010D4       StdCtrls.HideSelections
+ 0003:00001140       StdCtrls.InnerStyles
+ 0003:000011CC       StdCtrls.IntegralHeights
+ 0003:000011F4       StdCtrls.Kinds
+ 0003:000011D4       StdCtrls.MultiColumns
+ 0003:000011BC       StdCtrls.MultiSelects
+ 0003:000010DC       StdCtrls.OEMConverts
+ 0003:00001150       StdCtrls.OuterStyles
+ 0001:00046118       StdCtrls.PaintListBox
+ 0003:000010B8       StdCtrls.Passwords
+ 0003:000010C0       StdCtrls.ReadOnlys
+ 0003:00001100       StdCtrls.ScrollBar
+ 0003:000011B4       StdCtrls.Sorteds
+ 0003:00001138       StdCtrls.Sorts
+ 0003:000011A0       StdCtrls.Styles
+ 0003:000011DC       StdCtrls.TabStops
+ 0001:000442FC       StdCtrls.TButton.Click
+ 0001:00044490       StdCtrls.TButton.CMDialogChar
+ 0001:00044420       StdCtrls.TButton.CMDialogKey
+ 0001:00044514       StdCtrls.TButton.CMFocusChanged
+ 0001:0004440C       StdCtrls.TButton.CNCommand
+ 0001:00044594       StdCtrls.TButton.CNCtlColorBtn
+ 0001:00044298       StdCtrls.TButton.Create
+ 0001:000443B4       StdCtrls.TButton.CreateParams
+ 0001:000443F0       StdCtrls.TButton.CreateWnd
+ 0001:00044328       StdCtrls.TButton.SetButtonStyle
+ 0001:0004437C       StdCtrls.TButton.SetDefault
+ 0001:00044324       StdCtrls.TButton.UseRightToLeftAlignment
+ 0001:00044568       StdCtrls.TButton.WMEraseBkgnd
+ 0001:00043FC8       StdCtrls.TButtonActionLink.AssignClient
+ 0001:00043FEC       StdCtrls.TButtonActionLink.IsCheckedLinked
+ 0001:00044024       StdCtrls.TButtonActionLink.SetChecked
+ 0001:000440DC       StdCtrls.TButtonControl.ActionChange
+ 0001:000441D0       StdCtrls.TButtonControl.CNCtlColorStatic
+ 0001:00044088       StdCtrls.TButtonControl.Create
+ 0001:00044260       StdCtrls.TButtonControl.CreateParams
+ 0001:00044128       StdCtrls.TButtonControl.GetActionLinkClass
+ 0001:00044130       StdCtrls.TButtonControl.GetChecked
+ 0001:00044134       StdCtrls.TButtonControl.IsCheckedStored
+ 0001:00044154       StdCtrls.TButtonControl.SetChecked
+ 0001:00044284       StdCtrls.TButtonControl.SetWordWrap
+ 0001:00044234       StdCtrls.TButtonControl.WMEraseBkGnd
+ 0001:00044158       StdCtrls.TButtonControl.WndProc
+ 0001:00042158       StdCtrls.TComboBoxStrings.Add
+ 0001:000421DC       StdCtrls.TComboBoxStrings.Insert
+ 0001:000446D0       StdCtrls.TCustomCheckBox.Click
+ 0001:00044800       StdCtrls.TCustomCheckBox.CMCtl3DChanged
+ 0001:00044808       StdCtrls.TCustomCheckBox.CMDialogChar
+ 0001:000448A4       StdCtrls.TCustomCheckBox.CNCommand
+ 0001:000445F8       StdCtrls.TCustomCheckBox.Create
+ 0001:00044768       StdCtrls.TCustomCheckBox.CreateParams
+ 0001:000447C0       StdCtrls.TCustomCheckBox.CreateWnd
+ 0001:000446E4       StdCtrls.TCustomCheckBox.GetChecked
+ 0001:00044664       StdCtrls.TCustomCheckBox.GetControlsAlignment
+ 0001:000446F0       StdCtrls.TCustomCheckBox.SetAlignment
+ 0001:00044704       StdCtrls.TCustomCheckBox.SetChecked
+ 0001:00044718       StdCtrls.TCustomCheckBox.SetState
+ 0001:00044690       StdCtrls.TCustomCheckBox.Toggle
+ 0001:000447E8       StdCtrls.TCustomCheckBox.WMSize
+ 0001:000430C4       StdCtrls.TCustomCombo.AddItem
+ 0001:00042F0C       StdCtrls.TCustomCombo.AdjustDropDown
+ 0001:00042D20       StdCtrls.TCustomCombo.Change
+ 0001:000423B0       StdCtrls.TCustomCombo.Clear
+ 0001:00042FEC       StdCtrls.TCustomCombo.ClearSelection
+ 0001:00042E88       StdCtrls.TCustomCombo.CloseUp
+ 0001:000425F4       StdCtrls.TCustomCombo.CMCancelMode
+ 0001:00042608       StdCtrls.TCustomCombo.CMCtl3DChanged
+ 0001:00042BA4       StdCtrls.TCustomCombo.CNCommand
+ 0001:000427B8       StdCtrls.TCustomCombo.ComboWndProc
+ 0001:00042FF8       StdCtrls.TCustomCombo.CopySelection
+ 0001:0004225C       StdCtrls.TCustomCombo.Create
+ 0001:00042ED4       StdCtrls.TCustomCombo.CreateWnd
+ 0001:00043084       StdCtrls.TCustomCombo.DeleteSelected
+ 0001:00042354       StdCtrls.TCustomCombo.Destroy
+ 0001:000423DC       StdCtrls.TCustomCombo.DestroyWindowHandle
+ 0001:00042E00       StdCtrls.TCustomCombo.DropDown
+ 0001:00042658       StdCtrls.TCustomCombo.EditWndProc
+ 0001:00042E48       StdCtrls.TCustomCombo.Focused
+ 0001:000430B0       StdCtrls.TCustomCombo.GetCount
+ 0001:00042420       StdCtrls.TCustomCombo.GetDroppedDown
+ 0001:00042488       StdCtrls.TCustomCombo.GetItemIndex
+ 0001:00042784       StdCtrls.TCustomCombo.ListWndProc
+ 0001:00042E20       StdCtrls.TCustomCombo.Loaded
+ 0001:00042EA8       StdCtrls.TCustomCombo.Select
+ 0001:00042400       StdCtrls.TCustomCombo.SelectAll
+ 0001:000430BC       StdCtrls.TCustomCombo.SetDropDownCount
+ 0001:00042444       StdCtrls.TCustomCombo.SetDroppedDown
+ 0001:00042584       StdCtrls.TCustomCombo.SetItemHeight
+ 0001:000424B4       StdCtrls.TCustomCombo.SetItemIndex
+ 0001:00042FC8       StdCtrls.TCustomCombo.SetItems
+ 0001:00042544       StdCtrls.TCustomCombo.SetMaxLength
+ 0001:000424F0       StdCtrls.TCustomCombo.SetSelLength
+ 0001:00042594       StdCtrls.TCustomCombo.WMCreate
+ 0001:000425C8       StdCtrls.TCustomCombo.WMDeleteItem
+ 0001:000425B8       StdCtrls.TCustomCombo.WMDrawItem
+ 0001:000425D0       StdCtrls.TCustomCombo.WMGetDlgCode
+ 0001:000425C0       StdCtrls.TCustomCombo.WMMeasureItem
+ 0001:00042A94       StdCtrls.TCustomCombo.WndProc
+ 0001:0004262C       StdCtrls.TCustomComboBox.CMParentColorChanged
+ 0001:00043BB4       StdCtrls.TCustomComboBox.CNDrawItem
+ 0001:00043C8C       StdCtrls.TCustomComboBox.CNMeasureItem
+ 0001:0004311C       StdCtrls.TCustomComboBox.Create
+ 0001:00043260       StdCtrls.TCustomComboBox.CreateParams
+ 0001:000432C4       StdCtrls.TCustomComboBox.CreateWnd
+ 0001:000431A8       StdCtrls.TCustomComboBox.Destroy
+ 0001:00043404       StdCtrls.TCustomComboBox.DestroyWnd
+ 0001:00042D44       StdCtrls.TCustomComboBox.DrawItem
+ 0001:00043D78       StdCtrls.TCustomComboBox.GetItemCount
+ 0001:00043238       StdCtrls.TCustomComboBox.GetItemHt
+ 0001:00043D84       StdCtrls.TCustomComboBox.GetItemsClass
+ 0001:000435B8       StdCtrls.TCustomComboBox.KeyPress
+ 0001:00043B94       StdCtrls.TCustomComboBox.MeasureItem
+ 0001:000439A0       StdCtrls.TCustomComboBox.SelectItem
+ 0001:000427A4       StdCtrls.TCustomComboBox.SetCharCase
+ 0001:000431E4       StdCtrls.TCustomComboBox.SetSorted
+ 0001:000431F8       StdCtrls.TCustomComboBox.SetStyle
+ 0001:00043458       StdCtrls.TCustomComboBox.WMEraseBkgnd
+ 0001:00043CB8       StdCtrls.TCustomComboBox.WMLButtonDown
+ 0001:00043D8C       StdCtrls.TCustomComboBox.WMPaint
+ 0001:00043D30       StdCtrls.TCustomComboBox.WndProc
+ 0001:0004206C       StdCtrls.TCustomComboBoxStrings.Clear
+ 0001:000420DC       StdCtrls.TCustomComboBoxStrings.Delete
+ 0001:00042010       StdCtrls.TCustomComboBoxStrings.Get
+ 0001:00041F40       StdCtrls.TCustomComboBoxStrings.GetCount
+ 0001:00041F5C       StdCtrls.TCustomComboBoxStrings.GetObject
+ 0001:000420FC       StdCtrls.TCustomComboBoxStrings.IndexOf
+ 0001:00041FEC       StdCtrls.TCustomComboBoxStrings.PutObject
+ 0001:00042124       StdCtrls.TCustomComboBoxStrings.SetUpdateState
+ 0001:0004157C       StdCtrls.TCustomEdit.AdjustHeight
+ 0001:00041624       StdCtrls.TCustomEdit.Change
+ 0001:00041130       StdCtrls.TCustomEdit.Clear
+ 0001:000416C0       StdCtrls.TCustomEdit.CMCtl3DChanged
+ 0001:0004173C       StdCtrls.TCustomEdit.CMEnter
+ 0001:000416F4       StdCtrls.TCustomEdit.CMFontChanged
+ 0001:00041778       StdCtrls.TCustomEdit.CMTextChanged
+ 0001:0004171C       StdCtrls.TCustomEdit.CNCommand
+ 0001:0004114C       StdCtrls.TCustomEdit.CopyToClipboard
+ 0001:00040DA4       StdCtrls.TCustomEdit.Create
+ 0001:00041300       StdCtrls.TCustomEdit.CreateParams
+ 0001:000413B8       StdCtrls.TCustomEdit.CreateWindowHandle
+ 0001:00041428       StdCtrls.TCustomEdit.CreateWnd
+ 0001:00041168       StdCtrls.TCustomEdit.CutToClipboard
+ 0001:00041648       StdCtrls.TCustomEdit.DefaultHandler
+ 0001:00041504       StdCtrls.TCustomEdit.DestroyWnd
+ 0001:00040E60       StdCtrls.TCustomEdit.DoSetMaxLength
+ 0001:00040F24       StdCtrls.TCustomEdit.GetModified
+ 0001:0004109C       StdCtrls.TCustomEdit.GetSelLength
+ 0001:00041058       StdCtrls.TCustomEdit.GetSelStart
+ 0001:0004123C       StdCtrls.TCustomEdit.GetSelText
+ 0001:000411A0       StdCtrls.TCustomEdit.GetSelTextBuf
+ 0001:00041184       StdCtrls.TCustomEdit.SelectAll
+ 0001:00040E80       StdCtrls.TCustomEdit.SetAutoSize
+ 0001:00040E94       StdCtrls.TCustomEdit.SetBorderStyle
+ 0001:00040EB8       StdCtrls.TCustomEdit.SetCharCase
+ 0001:00040ECC       StdCtrls.TCustomEdit.SetHideSelection
+ 0001:00040EE0       StdCtrls.TCustomEdit.SetMaxLength
+ 0001:00040F5C       StdCtrls.TCustomEdit.SetModified
+ 0001:00040F10       StdCtrls.TCustomEdit.SetOEMConvert
+ 0001:00040F94       StdCtrls.TCustomEdit.SetPasswordChar
+ 0001:0004101C       StdCtrls.TCustomEdit.SetReadOnly
+ 0001:000410CC       StdCtrls.TCustomEdit.SetSelLength
+ 0001:0004107C       StdCtrls.TCustomEdit.SetSelStart
+ 0001:000412D8       StdCtrls.TCustomEdit.SetSelText
+ 0001:00041540       StdCtrls.TCustomEdit.UpdateHeight
+ 0001:000417B0       StdCtrls.TCustomEdit.WMContextMenu
+ 0001:00041680       StdCtrls.TCustomEdit.WMSetFont
+ 0001:000400AC       StdCtrls.TCustomGroupBox.AdjustClientRect
+ 0001:000405AC       StdCtrls.TCustomGroupBox.CMCtl3DChanged
+ 0001:00040514       StdCtrls.TCustomGroupBox.CMDialogChar
+ 0001:00040594       StdCtrls.TCustomGroupBox.CMTextChanged
+ 0001:00040050       StdCtrls.TCustomGroupBox.Create
+ 0001:00040108       StdCtrls.TCustomGroupBox.CreateParams
+ 0001:00040118       StdCtrls.TCustomGroupBox.Paint
+ 0001:000405CC       StdCtrls.TCustomGroupBox.WMSize
+ 0001:00040A98       StdCtrls.TCustomLabel.AdjustBounds
+ 0001:00040D08       StdCtrls.TCustomLabel.CMDialogChar
+ 0001:00040CF0       StdCtrls.TCustomLabel.CMFontChanged
+ 0001:00040CD4       StdCtrls.TCustomLabel.CMTextChanged
+ 0001:000405E4       StdCtrls.TCustomLabel.Create
+ 0001:00040690       StdCtrls.TCustomLabel.DoDrawText
+ 0001:0004067C       StdCtrls.TCustomLabel.GetLabelText
+ 0001:00040BD0       StdCtrls.TCustomLabel.GetTransparent
+ 0001:00040A7C       StdCtrls.TCustomLabel.Loaded
+ 0001:00040CA4       StdCtrls.TCustomLabel.Notification
+ 0001:00040980       StdCtrls.TCustomLabel.Paint
+ 0001:00040B68       StdCtrls.TCustomLabel.SetAlignment
+ 0001:00040BAC       StdCtrls.TCustomLabel.SetAutoSize
+ 0001:00040B88       StdCtrls.TCustomLabel.SetEllipsisPosition
+ 0001:00040BDC       StdCtrls.TCustomLabel.SetFocusControl
+ 0001:00040C58       StdCtrls.TCustomLabel.SetLayout
+ 0001:00040BF0       StdCtrls.TCustomLabel.SetShowAccelChar
+ 0001:00040C10       StdCtrls.TCustomLabel.SetTransparent
+ 0001:00040C78       StdCtrls.TCustomLabel.SetWordWrap
+ 0001:00045380       StdCtrls.TCustomListBox.AddItem
+ 0001:000454C0       StdCtrls.TCustomListBox.Clear
+ 0001:000454CC       StdCtrls.TCustomListBox.ClearSelection
+ 0001:000465D8       StdCtrls.TCustomListBox.CMCtl3DChanged
+ 0001:000460E0       StdCtrls.TCustomListBox.CNCommand
+ 0001:000464F4       StdCtrls.TCustomListBox.CNDrawItem
+ 0001:000465B0       StdCtrls.TCustomListBox.CNMeasureItem
+ 0001:00045514       StdCtrls.TCustomListBox.CopySelection
+ 0001:00045244       StdCtrls.TCustomListBox.Create
+ 0001:00045D40       StdCtrls.TCustomListBox.CreateParams
+ 0001:00045E58       StdCtrls.TCustomListBox.CreateWnd
+ 0001:0004563C       StdCtrls.TCustomListBox.DeleteSelected
+ 0001:00045464       StdCtrls.TCustomListBox.DeleteString
+ 0001:00045338       StdCtrls.TCustomListBox.Destroy
+ 0001:00045F3C       StdCtrls.TCustomListBox.DestroyWnd
+ 0001:00046A44       StdCtrls.TCustomListBox.DoFindData
+ 0001:000469FC       StdCtrls.TCustomListBox.DoGetData
+ 0001:00046A1C       StdCtrls.TCustomListBox.DoGetDataObject
+ 0001:00046344       StdCtrls.TCustomListBox.DragCanceled
+ 0001:000463B0       StdCtrls.TCustomListBox.DrawItem
+ 0001:00045798       StdCtrls.TCustomListBox.GetCount
+ 0001:00045404       StdCtrls.TCustomListBox.GetItemData
+ 0001:0004585C       StdCtrls.TCustomListBox.GetItemHeight
+ 0001:00045740       StdCtrls.TCustomListBox.GetItemIndex
+ 0001:00046A68       StdCtrls.TCustomListBox.GetScrollWidth
+ 0001:000457BC       StdCtrls.TCustomListBox.GetSelCount
+ 0001:000458E8       StdCtrls.TCustomListBox.GetSelected
+ 0001:00045A48       StdCtrls.TCustomListBox.GetTopIndex
+ 0001:00045448       StdCtrls.TCustomListBox.InternalGetItemData
+ 0001:00045454       StdCtrls.TCustomListBox.InternalSetItemData
+ 0001:00045C50       StdCtrls.TCustomListBox.ItemAtPos
+ 0001:00045CDC       StdCtrls.TCustomListBox.ItemRect
+ 0001:00046724       StdCtrls.TCustomListBox.KeyPress
+ 0001:00045A64       StdCtrls.TCustomListBox.LBGetText
+ 0001:00045B20       StdCtrls.TCustomListBox.LBGetTextLen
+ 0001:00046908       StdCtrls.TCustomListBox.LoadRecreateItems
+ 0001:000464D4       StdCtrls.TCustomListBox.MeasureItem
+ 0001:00045484       StdCtrls.TCustomListBox.ResetContent
+ 0001:000454AC       StdCtrls.TCustomListBox.SaveRecreateItems
+ 0001:00046604       StdCtrls.TCustomListBox.SelectAll
+ 0001:00045BC8       StdCtrls.TCustomListBox.SetBorderStyle
+ 0001:000456FC       StdCtrls.TCustomListBox.SetColumns
+ 0001:000456A8       StdCtrls.TCustomListBox.SetColumnWidth
+ 0001:00046918       StdCtrls.TCustomListBox.SetCount
+ 0001:00045824       StdCtrls.TCustomListBox.SetExtendedSelect
+ 0001:00045838       StdCtrls.TCustomListBox.SetIntegralHeight
+ 0001:00045424       StdCtrls.TCustomListBox.SetItemData
+ 0001:000458A0       StdCtrls.TCustomListBox.SetItemHeight
+ 0001:000457D8       StdCtrls.TCustomListBox.SetItemIndex
+ 0001:00045C08       StdCtrls.TCustomListBox.SetItems
+ 0001:000458D4       StdCtrls.TCustomListBox.SetMultiSelect
+ 0001:00046A84       StdCtrls.TCustomListBox.SetScrollWidth
+ 0001:00045938       StdCtrls.TCustomListBox.SetSelected
+ 0001:000459E8       StdCtrls.TCustomListBox.SetSorted
+ 0001:00045A0C       StdCtrls.TCustomListBox.SetStyle
+ 0001:000458B8       StdCtrls.TCustomListBox.SetTabWidth
+ 0001:00045BDC       StdCtrls.TCustomListBox.SetTopIndex
+ 0001:00046034       StdCtrls.TCustomListBox.WMLButtonDown
+ 0001:00046300       StdCtrls.TCustomListBox.WMPaint
+ 0001:00046330       StdCtrls.TCustomListBox.WMSize
+ 0001:00045FCC       StdCtrls.TCustomListBox.WndProc
+ 0001:00041BE8       StdCtrls.TCustomMemo.Create
+ 0001:00041CA8       StdCtrls.TCustomMemo.CreateParams
+ 0001:00041D0C       StdCtrls.TCustomMemo.CreateWindowHandle
+ 0001:00041C78       StdCtrls.TCustomMemo.Destroy
+ 0001:00041DDC       StdCtrls.TCustomMemo.GetCaretPos
+ 0001:00041E74       StdCtrls.TCustomMemo.GetControlsAlignment
+ 0001:00041F1C       StdCtrls.TCustomMemo.KeyPress
+ 0001:00041E7C       StdCtrls.TCustomMemo.Loaded
+ 0001:00041E94       StdCtrls.TCustomMemo.SetAlignment
+ 0001:00041E38       StdCtrls.TCustomMemo.SetCaretPos
+ 0001:00041EA8       StdCtrls.TCustomMemo.SetLines
+ 0001:00041EB8       StdCtrls.TCustomMemo.SetScrollBars
+ 0001:00041ECC       StdCtrls.TCustomMemo.SetWordWrap
+ 0001:00041EE0       StdCtrls.TCustomMemo.WMGetDlgCode
+ 0001:00041F14       StdCtrls.TCustomMemo.WMNCDestroy
+ 0001:00047250       StdCtrls.TCustomStaticText.AdjustBounds
+ 0001:0004716C       StdCtrls.TCustomStaticText.CMDialogChar
+ 0001:00047208       StdCtrls.TCustomStaticText.CMFontChanged
+ 0001:0004721C       StdCtrls.TCustomStaticText.CMTextChanged
+ 0001:000473E4       StdCtrls.TCustomStaticText.CNCtlColorStatic
+ 0001:00047080       StdCtrls.TCustomStaticText.Create
+ 0001:000470F0       StdCtrls.TCustomStaticText.CreateParams
+ 0001:00047488       StdCtrls.TCustomStaticText.GetTransparent
+ 0001:0004723C       StdCtrls.TCustomStaticText.Loaded
+ 0001:0004734C       StdCtrls.TCustomStaticText.Notification
+ 0001:0004737C       StdCtrls.TCustomStaticText.SetAlignment
+ 0001:00047390       StdCtrls.TCustomStaticText.SetAutoSize
+ 0001:000473A8       StdCtrls.TCustomStaticText.SetBorderStyle
+ 0001:000473BC       StdCtrls.TCustomStaticText.SetFocusControl
+ 0001:000473D0       StdCtrls.TCustomStaticText.SetShowAccelChar
+ 0001:00047448       StdCtrls.TCustomStaticText.SetTransparent
+ 0001:00044E00       StdCtrls.TListBoxStrings.Add
+ 0001:000450AC       StdCtrls.TListBoxStrings.Clear
+ 0001:00044F38       StdCtrls.TListBoxStrings.Delete
+ 0001:00044F48       StdCtrls.TListBoxStrings.Exchange
+ 0001:00044BF4       StdCtrls.TListBoxStrings.Get
+ 0001:00044BD8       StdCtrls.TListBoxStrings.GetCount
+ 0001:00044CC8       StdCtrls.TListBoxStrings.GetObject
+ 0001:000450F0       StdCtrls.TListBoxStrings.IndexOf
+ 0001:00044EA0       StdCtrls.TListBoxStrings.Insert
+ 0001:00045134       StdCtrls.TListBoxStrings.Move
+ 0001:00044D5C       StdCtrls.TListBoxStrings.Put
+ 0001:00044DD8       StdCtrls.TListBoxStrings.PutObject
+ 0001:000450BC       StdCtrls.TListBoxStrings.SetUpdateState
+ 0001:00041A90       StdCtrls.TMemoStrings.Clear
+ 0001:00041A00       StdCtrls.TMemoStrings.Delete
+ 0001:0004183C       StdCtrls.TMemoStrings.Get
+ 0001:000417CC       StdCtrls.TMemoStrings.GetCount
+ 0001:00041AF0       StdCtrls.TMemoStrings.GetTextStr
+ 0001:000418F4       StdCtrls.TMemoStrings.Insert
+ 0001:00041880       StdCtrls.TMemoStrings.Put
+ 0001:00041B04       StdCtrls.TMemoStrings.SetTextStr
+ 0001:00041AA0       StdCtrls.TMemoStrings.SetUpdateState
+ 0001:00044B20       StdCtrls.TRadioButton.CMCtl3DChanged
+ 0001:00044B28       StdCtrls.TRadioButton.CMDialogChar
+ 0001:00044BAC       StdCtrls.TRadioButton.CNCommand
+ 0001:000448B4       StdCtrls.TRadioButton.Create
+ 0001:00044AA4       StdCtrls.TRadioButton.CreateParams
+ 0001:00044AF8       StdCtrls.TRadioButton.CreateWnd
+ 0001:00044914       StdCtrls.TRadioButton.GetChecked
+ 0001:0004491C       StdCtrls.TRadioButton.GetControlsAlignment
+ 0001:00044948       StdCtrls.TRadioButton.SetAlignment
+ 0001:00044A18       StdCtrls.TRadioButton.SetChecked
+ 0001:00046EE4       StdCtrls.TScrollBar.Change
+ 0001:00047050       StdCtrls.TScrollBar.CNCtlColorScrollBar
+ 0001:00047040       StdCtrls.TScrollBar.CNHScroll
+ 0001:00047048       StdCtrls.TScrollBar.CNVScroll
+ 0001:00046AB0       StdCtrls.TScrollBar.Create
+ 0001:00046B68       StdCtrls.TScrollBar.CreateParams
+ 0001:00046BEC       StdCtrls.TScrollBar.CreateWnd
+ 0001:00046F28       StdCtrls.TScrollBar.DoScroll
+ 0001:00046CA8       StdCtrls.TScrollBar.NotRightToLeft
+ 0001:00046F08       StdCtrls.TScrollBar.Scroll
+ 0001:00046CC8       StdCtrls.TScrollBar.SetKind
+ 0001:00046ED0       StdCtrls.TScrollBar.SetMax
+ 0001:00046EB8       StdCtrls.TScrollBar.SetMin
+ 0001:00046E60       StdCtrls.TScrollBar.SetPageSize
+ 0001:00046D04       StdCtrls.TScrollBar.SetParams
+ 0001:00046E4C       StdCtrls.TScrollBar.SetPosition
+ 0001:00047078       StdCtrls.TScrollBar.WMEraseBkgnd
+ 0001:0004495C       StdCtrls.TurnSiblingsOff
+ 0003:00001110       StdCtrls.WordWraps
+ 0003:000010B0       StdCtrls.WordWraps
+ 0003:000010B4       StdCtrls.WordWraps
+ 0001:00054908       StrUtils.AnsiContainsStr
+ 0001:000548A8       StrUtils.AnsiReplaceStr
+ 0001:000548D8       StrUtils.AnsiReplaceText
+ 0001:00054968       StrUtils.LeftStr
+ 0001:00054A5C       StrUtils.PosEx
+ 0001:00054920       StrUtils.ReverseString
+ 0001:000549D8       StrUtils.RightStr
+ 0001:00037B10       SyncObjs..TCriticalSection
+ 0001:00037AAC       SyncObjs..TSynchroObject
+ 0001:00037BF0       SyncObjs.TCriticalSection.Acquire
+ 0001:00037B80       SyncObjs.TCriticalSection.Create
+ 0001:00037BC0       SyncObjs.TCriticalSection.Destroy
+ 0001:00037C08       SyncObjs.TCriticalSection.Enter
+ 0001:00037C10       SyncObjs.TCriticalSection.Leave
+ 0001:00037BFC       SyncObjs.TCriticalSection.Release
+ 0001:00037B78       SyncObjs.TSynchroObject.Acquire
+ 0001:00037B7C       SyncObjs.TSynchroObject.Release
+ 0001:0000644C       SysInit.@GetTls
+ 0001:00006498       SysInit.@InitExe
+ 0001:000063F4       SysInit.AllocTlsBuffer
+ 0001:000063D4       SysInit.GetModuleHandle
+ 0001:00006400       SysInit.GetTlsSize
+ 0004:000027F8       SysInit.HInstance
+ 0001:0000648C       SysInit.InitializeModule
+ 0001:00006408       SysInit.InitThreadTLS
+ 0001:000063DC       SysInit.LocalAlloc
+ 0003:000007A4       SysInit.Module
+ 0004:000027F5       SysInit.ModuleIsCpp
+ 0004:000027F4       SysInit.ModuleIsLib
+ 0003:000007A0       SysInit.PtrToNil
+ 0004:000027FC       SysInit.tlsBuffer
+ 0001:000063E4       SysInit.TlsGetValue
+ 0003:0000079C       SysInit.TlsIndex
+ 0005:00000040       SysInit.TlsLast
+ 0001:000063EC       SysInit.TlsSetValue
+ 0004:000005B8       System..6
+ 0001:00000254       System..TInterfacedObject
+ 0001:00000130       System..TObject
+ 0001:00002408       System.@AbstractError
+ 0001:00004D38       System.@AddRefArray
+ 0001:00004CF0       System.@AddRefRecord
+ 0001:000032A8       System.@AfterConstruction
+ 0001:0000309C       System.@AsClass
+ 0001:00003E1C       System.@Assert
+ 0001:000025AC       System.@AStrCmp
+ 0001:000032F8       System.@BeforeDestruction
+ 0001:00002DBC       System.@BoundErr
+ 0001:000030E8       System.@CallDynaInst
+ 0001:00005F28       System.@CheckAutoResult
+ 0001:00003250       System.@ClassCreate
+ 0001:000032A0       System.@ClassDestroy
+ 0001:00002478       System.@Close
+ 0001:00001F8C       System.@Copy
+ 0001:00004F2C       System.@CopyArray
+ 0001:00004E10       System.@CopyRecord
+ 0001:00005094       System.@DispCallByIDError
+ 0001:00005034       System.@Dispose
+ 0001:000038E0       System.@DoneExcept
+ 0001:00005768       System.@DynArrayAddRef
+ 0001:00005740       System.@DynArrayAsg
+ 0001:00005704       System.@DynArrayClear
+ 0001:000055F0       System.@DynArrayCopy
+ 0001:00005610       System.@DynArrayCopyRange
+ 0001:00005430       System.@DynArrayHigh
+ 0001:00005428       System.@DynArrayLength
+ 0001:000055E4       System.@DynArraySetLength
+ 0001:000039C8       System.@ExceptionHandler
+ 0001:0000261C       System.@FillChar
+ 0001:00004CE4       System.@Finalize
+ 0001:00004BF8       System.@FinalizeArray
+ 0001:00004BAC       System.@FinalizeRecord
+ 0001:00003100       System.@FindDynaInst
+ 0001:00002DB0       System.@FpuInit
+ 0001:00002CEC       System.@FpuMaskInit
+ 0001:00001DC0       System.@FreeMem
+ 0001:00001DA4       System.@GetMem
+ 0001:00003E04       System.@Halt
+ 0001:00003D28       System.@Halt0
+ 0001:0000340C       System.@HandleAnyException
+ 0001:000037A0       System.@HandleAutoException
+ 0001:000036C0       System.@HandleFinally
+ 0001:00003768       System.@HandleFinallyInternal
+ 0001:00003538       System.@HandleOnException
+ 0001:00004BA0       System.@Initialize
+ 0001:00004B0C       System.@InitializeArray
+ 0001:00004ADC       System.@InitializeRecord
+ 0001:00003BE4       System.@InitImports
+ 0001:00003BBC       System.@InitResStringImports
+ 0001:00005E8C       System.@IntfAddRef
+ 0001:00005E5C       System.@IntfCast
+ 0001:00005E18       System.@IntfClear
+ 0001:00005E30       System.@IntfCopy
+ 0001:00003078       System.@IsClass
+ 0001:00002CBC       System.@isNECWindows
+ 0001:000043A4       System.@LStrAddRef
+ 0001:00003F14       System.@LStrArrayClr
+ 0001:00003F44       System.@LStrAsg
+ 0001:000041BC       System.@LStrCat
+ 0001:00004200       System.@LStrCat3
+ 0001:00004274       System.@LStrCatN
+ 0001:00003EF0       System.@LStrClr
+ 0001:00004300       System.@LStrCmp
+ 0001:00004414       System.@LStrCopy
+ 0001:00004454       System.@LStrDelete
+ 0001:00004160       System.@LStrFromArray
+ 0001:000040D8       System.@LStrFromChar
+ 0001:000040E8       System.@LStrFromPChar
+ 0001:00003FE0       System.@LStrFromPCharLen
+ 0001:00004118       System.@LStrFromPWChar
+ 0001:0000404C       System.@LStrFromPWCharLen
+ 0001:00004154       System.@LStrFromString
+ 0001:00004178       System.@LStrFromWStr
+ 0001:0000449C       System.@LStrInsert
+ 0001:00003F88       System.@LStrLAsg
+ 0001:000041B0       System.@LStrLen
+ 0001:0000463C       System.@LStrSetLength
+ 0001:000043B4       System.@LStrToPChar
+ 0001:0000418C       System.@LStrToString
+ 0001:00005020       System.@New
+ 0001:00003FB4       System.@NewAnsiString
+ 0001:000046D4       System.@NewWideString
+ 0001:000029D0       System.@Pow10
+ 0001:00002528       System.@PStrCmp
+ 0001:00002500       System.@PStrCpy
+ 0001:000024D0       System.@PStrNCat
+ 0001:0000250C       System.@PStrNCpy
+ 0001:0000388C       System.@RaiseAgain
+ 0001:00003864       System.@RaiseExcept
+ 0001:00001DD8       System.@ReallocMem
+ 0001:000023D8       System.@ROUND
+ 0001:00003E10       System.@RunError
+ 0001:00002828       System.@SetElem
+ 0001:000028A4       System.@SetEq
+ 0001:000022AC       System.@SetLength
+ 0001:0000284C       System.@SetRange
+ 0001:000028B8       System.@SetUnion
+ 0001:00003B7C       System.@StartExe
+ 0001:00002718       System.@Str0Long
+ 0001:000003AC       System.@strlen
+ 0001:000026B8       System.@StrLong
+ 0001:000023E4       System.@TRUNC
+ 0001:00003910       System.@TryFinallyExit
+ 0001:0000440C       System.@UniqueStringA
+ 0001:000028C4       System.@ValExt
+ 0001:00005210       System.@ValInt64
+ 0001:00002724       System.@ValLong
+ 0001:00004D20       System.@VarAddRef
+ 0001:00004BE0       System.@VarClr
+ 0001:00004DF8       System.@VarCopy
+ 0001:00004ABC       System.@WStrAddRef
+ 0001:00004714       System.@WStrArrayClr
+ 0001:00004738       System.@WStrAsg
+ 0001:00004900       System.@WStrCat
+ 0001:00004960       System.@WStrCatN
+ 0001:000046FC       System.@WStrClr
+ 0001:000049A8       System.@WStrCmp
+ 0001:00004A2C       System.@WStrCopy
+ 0001:00004868       System.@WStrFromLStr
+ 0001:00004760       System.@WStrFromPCharLen
+ 0001:00004820       System.@WStrFromPWChar
+ 0001:000047EC       System.@WStrFromPWCharLen
+ 0001:0000485C       System.@WStrFromString
+ 0001:00004810       System.@WStrFromWChar
+ 0001:000048F4       System.@WStrLen
+ 0001:00004A78       System.@WStrSetLength
+ 0001:000048E4       System.@WStrToPWChar
+ 0001:00004878       System.@WStrToString
+ 0001:00002804       System.@_CLenToPasStr
+ 0001:000027F8       System.@_CToPasStr
+ 0001:00001F5C       System.@_IOTest
+ 0001:000050C0       System.@_lldiv
+ 0001:00005154       System.@_llmod
+ 0001:0000509C       System.@_llmul
+ 0001:000051D0       System.@_llshl
+ 0001:000051F0       System.@_llushr
+ 0004:0000002C       System.AbstractErrorProc
+ 0001:00001EC4       System.AcquireExceptionObject
+ 0001:00005CA8       System.AddModuleUnloadProc
+ 0001:00005CB8       System.AddModuleUnloadProc
+ 0001:00000818       System.AllocateLargeBlock
+ 0001:00001D8C       System.AllocMem
+ 0001:00000760       System.AllocNewSequentialFeedMediumPool
+ 0004:000005C0       System.AllocSize2SmallBlockTypeIndX4
+ 0001:000062C4       System.AnsiToUtf8
+ 0001:00001374       System.AppendStringToBuffer
+ 0004:00000024       System.AssertErrorProc
+ 0001:00003E74       System.BeginThread
+ 0001:000006F4       System.BinMediumSequentialFeedRemainder
+ 0001:00001B3C       System.BuildBlockTypeLookupTable
+ 0001:00001258       System.CardinalToStrBuf
+ 0001:00004010       System.CharFromWChar
+ 0001:00000314       System.CharNext
+ 0001:00003388       System.CheckJmp
+ 0001:00001578       System.CheckSmallBlockPoolForLeaks
+ 0004:00000040       System.CmdLine
+ 0004:0000003C       System.CmdShow
+ 0001:0000031C       System.CompareString
+ 0001:00005438       System.CopyArray
+ 0003:00000044       System.Copyright
+ 0001:00002394       System.Cos
+ 0001:00000324       System.CreateThread
+ 0003:00000028       System.DebugHook
+ 0003:00000024       System.Default8087CW
+ 0004:000005BC       System.DefaultSystemCodePage
+ 0001:000057A4       System.DelayLoadResourceModule
+ 0001:00000460       System.DestroyWindow
+ 0003:0000078C       System.dig
+ 0004:00000000       System.DispCallByIDProc
+ 0001:00005450       System.DynArrayClear
+ 0001:00005458       System.DynArraySetLength
+ 0001:00003ED4       System.EndThread
+ 0001:00005C80       System.EnumModules
+ 0001:00005C78       System.EnumModules
+ 0003:00000764       System.errCaption
+ 0001:00001F50       System.Error
+ 0003:00000004       System.ErrorAddr
+ 0001:00001F04       System.ErrorAt
+ 0004:00000008       System.ErrorProc
+ 0004:000003E8       System.ErrOutput
+ 0001:00001EA4       System.ExceptAddr
+ 0004:0000000C       System.ExceptClsProc
+ 0004:0000001C       System.ExceptionClass
+ 0001:00001E84       System.ExceptObject
+ 0004:00000010       System.ExceptObjProc
+ 0004:00000004       System.ExceptProc
+ 0003:00000000       System.ExitCode
+ 0001:00003C6C       System.ExitDll
+ 0004:00000048       System.ExitProc
+ 0001:00000334       System.ExitProcess
+ 0004:00000028       System.ExitProcessProc
+ 0001:0000032C       System.ExitThread
+ 0001:00002374       System.Exp
+ 0004:000027BC       System.ExpectedMemoryLeaks
+ 0004:000027C0       System.ExpectedMemoryLeaksListLocked
+ 0003:0000000C       System.FileMode
+ 0001:00006374       System.Finalization
+ 0001:00005448       System.FinalizeArray
+ 0001:00001D38       System.FinalizeMemoryManager
+ 0001:00003AB0       System.FinalizeUnits
+ 0001:00005824       System.FindBS
+ 0001:0000579C       System.FindClassHInstance
+ 0001:00000344       System.FindClose
+ 0001:0000034C       System.FindFirstFile
+ 0001:00005774       System.FindHInstance
+ 0001:000057EC       System.FindResourceHInstance
+ 0001:0000246C       System.Flush
+ 0001:000029C8       System.FPower10
+ 0001:00002344       System.Frac
+ 0001:00001CA8       System.FreeAllMemory
+ 0001:0000087C       System.FreeLargeBlock
+ 0001:00000354       System.FreeLibrary
+ 0001:00002310       System.Get8087CW
+ 0001:0000636C       System.GetACP
+ 0001:00000424       System.GetCmdShow
+ 0001:0000035C       System.GetCommandLine
+ 0001:0000040C       System.GetCurrentThreadId
+ 0001:000030B8       System.GetDynaMethod
+ 0001:0000121C       System.GetFirstAndLastSmallBlockInPool
+ 0001:000011DC       System.GetFirstMediumBlockInPool
+ 0001:00002CB4       System.GetKeyboardType
+ 0001:00000364       System.GetLocaleInfo
+ 0001:0000036C       System.GetModuleFileName
+ 0001:00000374       System.GetModuleHandle
+ 0001:00001444       System.GetObjectClass
+ 0001:000020F0       System.GetParamStr
+ 0001:0000037C       System.GetProcAddress
+ 0001:00000384       System.GetStartupInfo
+ 0001:000002EC       System.GetStdHandle
+ 0001:0000038C       System.GetThreadLocale
+ 0001:0000041C       System.GetTickCount
+ 0004:000027C8       System.InitContext
+ 0001:00001B80       System.InitializeMemoryManager
+ 0004:00000044       System.InitProc
+ 0001:00003B14       System.InitUnits
+ 0005:00000004       System.InOutRes
+ 0004:00000050       System.Input
+ 0001:00000694       System.InsertMediumBlockIntoBin
+ 0001:00002318       System.Int
+ 0001:00000404       System.InterlockedDecrement
+ 0001:000003FC       System.InterlockedIncrement
+ 0001:00002424       System.InternalFlush
+ 0001:0000138C       System.InternalIsValidClass
+ 0001:000043C0       System.InternalUniqueString
+ 0001:00002F70       System.InvokeImplGetter
+ 0001:00001FD0       System.IOResult
+ 0004:0000004C       System.IsConsole
+ 0004:00000038       System.IsLibrary
+ 0001:00001E3C       System.IsMemoryManagerSet
+ 0004:0000004D       System.IsMultiThread
+ 0003:0000002C       System.JITEnable
+ 0004:000027AC       System.LargeBlocksCircularList
+ 0004:000027A8       System.LargeBlocksLocked
+ 0004:0000071C       System.LastSequentiallyFedMediumBlock
+ 0003:0000003C       System.LibModuleList
+ 0001:000023B4       System.Ln
+ 0001:00000394       System.LoadLibraryEx
+ 0001:00005A08       System.LoadResourceModule
+ 0001:00006314       System.LoadResString
+ 0001:0000039C       System.LoadString
+ 0001:000004C8       System.LockCmpxchg
+ 0001:00001474       System.LockExpectedMemoryLeaksList
+ 0001:000007D8       System.LockLargeBlocks
+ 0001:000003A4       System.lstrcpyn
+ 0004:00000030       System.MainInstance
+ 0004:00000034       System.MainThreadID
+ 0001:00003C08       System.MakeErrorMessage
+ 0001:00003928       System.MapToRunError
+ 0004:00000728       System.MediumBlockBinBitmaps
+ 0004:00000724       System.MediumBlockBinGroupBitmap
+ 0004:000007A8       System.MediumBlockBins
+ 0004:00000708       System.MediumBlockPoolsCircularList
+ 0004:00000718       System.MediumBlocksLocked
+ 0004:00000720       System.MediumSequentialFeedBytesLeft
+ 0003:00000728       System.MemoryManager
+ 0001:0000033C       System.MessageBox
+ 0004:00000706       System.MinimumBlockAlignment
+ 0004:000027C4       System.MMSharingWindow
+ 0003:00000040       System.ModuleUnloadList
+ 0001:00001FF0       System.Move
+ 0001:000004D0       System.Move12
+ 0001:000004E4       System.Move20
+ 0001:00000504       System.Move28
+ 0001:00000530       System.Move36
+ 0001:00000550       System.Move44
+ 0001:00000574       System.Move52
+ 0001:000005A0       System.Move60
+ 0001:000005D0       System.Move68
+ 0001:00000608       System.MoveX16L4
+ 0001:00000638       System.MoveX8L4
+ 0001:000003B4       System.MultiByteToWideChar
+ 0001:000011B8       System.NextMediumBlock
+ 0003:00000030       System.NoErrMsg
+ 0001:00003374       System.NotifyAnyExcept
+ 0001:00003348       System.NotifyExcept
+ 0001:000033A8       System.NotifyExceptFinally
+ 0001:00005D3C       System.NotifyModuleUnload
+ 0001:00003324       System.NotifyNonDelphiException
+ 0001:00003360       System.NotifyOnExcept
+ 0001:00003308       System.NotifyReRaise
+ 0001:000033D0       System.NotifyTerminate
+ 0001:000033EC       System.NotifyUnhandled
+ 0001:00005050       System.OleStrToStrVar
+ 0004:0000021C       System.Output
+ 0001:000021EC       System.ParamCount
+ 0001:0000224C       System.ParamStr
+ 0001:000044F8       System.Pos
+ 0001:00000414       System.QueryPerformanceCounter
+ 0001:000002F4       System.RaiseException
+ 0004:00000014       System.RaiseExceptionProc
+ 0005:00000000       System.RaiseListPtr
+ 0001:000022D8       System.Random
+ 0001:000022B0       System.Randomize
+ 0003:00000008       System.RandSeed
+ 0001:000003BC       System.RegCloseKey
+ 0001:00005D98       System.RegisterModule
+ 0001:000003C4       System.RegOpenKeyEx
+ 0001:000003CC       System.RegQueryValueEx
+ 0003:00000740       System.reMap
+ 0001:00000654       System.RemoveMediumFreeBlock
+ 0001:00005CD8       System.RemoveModuleUnloadProc
+ 0001:00005CB0       System.RemoveModuleUnloadProc
+ 0004:000005B4       System.ReportMemoryLeaksOnShutdown
+ 0001:000002FC       System.RtlUnwind
+ 0004:00000018       System.RTLUnwindProc
+ 0003:0000076C       System.runErrMsg
+ 0001:00001EF8       System.RunErrorAt
+ 0004:00000020       System.SafeCallErrorProc
+ 0001:000016C4       System.ScanForMemoryLeaks
+ 0001:00002300       System.Set8087CW
+ 0001:00003A68       System.SetExceptionHandler
+ 0001:00001F7C       System.SetInOutRes
+ 0001:00001E28       System.SetMemoryManager
+ 0001:000023A4       System.Sin
+ 0001:00000458       System.Sleep
+ 0003:00000048       System.SmallBlockTypes
+ 0001:000023C8       System.Sqrt
+ 0001:000046A0       System.StringOfChar
+ 0001:00005074       System.StringToOleStr
+ 0001:00001188       System.SysAllocMem
+ 0001:000003E4       System.SysAllocStringLen
+ 0001:00000C20       System.SysFreeMem
+ 0001:000003F4       System.SysFreeString
+ 0001:000008B8       System.SysGetMem
+ 0001:00000E00       System.SysReallocMem
+ 0001:000003EC       System.SysReAllocStringLen
+ 0001:000014E0       System.SysRegisterExpectedMemoryLeak
+ 0002:00000000       System.System
+ 0003:00000038       System.SystemThreadEndProc
+ 0003:00000034       System.SystemThreadFuncProc
+ 0001:00001520       System.SysUnregisterExpectedMemoryLeak
+ 0003:0000075C       System.Ten
+ 0004:0000004E       System.Test8086
+ 0001:00003E3C       System.ThreadWrapper
+ 0001:00005E98       System.TInterfacedObject.AfterConstruction
+ 0001:00005EA4       System.TInterfacedObject.BeforeDestruction
+ 0001:00005EB4       System.TInterfacedObject.NewInstance
+ 0001:00005EC4       System.TInterfacedObject.QueryInterface
+ 0001:00005EEC       System.TInterfacedObject._AddRef
+ 0001:00005F00       System.TInterfacedObject._Release
+ 0001:00003140       System.TObject.AfterConstruction
+ 0001:00003144       System.TObject.BeforeDestruction
+ 0001:0000312C       System.TObject.ClassInfo
+ 0001:00002DCC       System.TObject.ClassName
+ 0001:00002DE0       System.TObject.ClassNameIs
+ 0001:00002E78       System.TObject.ClassParent
+ 0001:00002DC4       System.TObject.ClassType
+ 0001:00002F50       System.TObject.CleanupInstance
+ 0001:00002EBC       System.TObject.Create
+ 0001:0000313C       System.TObject.DefaultHandler
+ 0001:00002EDC       System.TObject.Destroy
+ 0001:00003148       System.TObject.Dispatch
+ 0001:00003200       System.TObject.FieldAddress
+ 0001:00002EEC       System.TObject.Free
+ 0001:00002EA0       System.TObject.FreeInstance
+ 0001:00002FA0       System.TObject.GetInterface
+ 0001:00003034       System.TObject.GetInterfaceEntry
+ 0001:00003118       System.TObject.InheritsFrom
+ 0001:00002EF8       System.TObject.InitInstance
+ 0001:00002EB4       System.TObject.InstanceSize
+ 0001:00003170       System.TObject.MethodAddress
+ 0001:000031C0       System.TObject.MethodName
+ 0001:00002E84       System.TObject.NewInstance
+ 0001:00003134       System.TObject.SafeCallException
+ 0001:00005844       System.ToLongPath
+ 0001:00000304       System.UnhandledExceptionFilter
+ 0001:00005F44       System.UnicodeToUtf8
+ 0001:00004404       System.UniqueString
+ 0001:00005DA8       System.UnregisterModule
+ 0001:00003A88       System.UnsetExceptionHandler
+ 0001:000022F4       System.UpCase
+ 0001:0000620C       System.UTF8Decode
+ 0001:00006150       System.UTF8Encode
+ 0001:00006020       System.Utf8ToUnicode
+ 0003:00000014       System.VarAddRefProc
+ 0003:00000010       System.VarClearProc
+ 0003:00000018       System.VarCopyProc
+ 0003:0000001C       System.VarToLStrProc
+ 0003:00000020       System.VarToWStrProc
+ 0001:00000448       System.VirtualAlloc
+ 0001:00000450       System.VirtualFree
+ 0001:000003DC       System.VirtualQuery
+ 0001:00004030       System.WCharFromChar
+ 0001:00005044       System.WideCharLenToStrVar
+ 0001:000003D4       System.WideCharToMultiByte
+ 0001:00003C9C       System.WriteErrorMessage
+ 0001:0000030C       System.WriteFile
+ 0001:000046CC       System.WStrError
+ 0001:000046EC       System.WStrSet
+ 0004:00002934       SysUtils..35
+ 0001:00007F8C       SysUtils..EAbort
+ 0001:00008800       SysUtils..EAbstractError
+ 0001:000085D8       SysUtils..EAccessViolation
+ 0001:000087A0       SysUtils..EAssertionFailed
+ 0001:000086EC       SysUtils..EControlC
+ 0001:0000857C       SysUtils..EConvertError
+ 0001:00008200       SysUtils..EDivByZero
+ 0001:000080F0       SysUtils..EExternal
+ 0001:00008148       SysUtils..EExternalException
+ 0001:00007FE0       SysUtils..EHeapException
+ 0001:00008098       SysUtils..EInOutError
+ 0001:000081A8       SysUtils..EIntError
+ 0001:0000885C       SysUtils..EIntfCastError
+ 0001:000082B0       SysUtils..EIntOverflow
+ 0001:00008520       SysUtils..EInvalidCast
+ 0001:00008364       SysUtils..EInvalidOp
+ 0001:000084C4       SysUtils..EInvalidPointer
+ 0001:0000830C       SysUtils..EMathError
+ 0001:000088B8       SysUtils..EOSError
+ 0001:0000803C       SysUtils..EOutOfMemory
+ 0001:00008414       SysUtils..EOverflow
+ 0001:00008638       SysUtils..EPrivilege
+ 0001:00008258       SysUtils..ERangeError
+ 0001:00008910       SysUtils..ESafecallException
+ 0001:00008690       SysUtils..EStackOverflow
+ 0001:0000846C       SysUtils..EUnderflow
+ 0001:00008744       SysUtils..EVariantError
+ 0001:00007F00       SysUtils..Exception
+ 0001:000083BC       SysUtils..EZeroDivide
+ 0001:00008AA0       SysUtils..TMultiReadExclusiveWriteSynchronizer
+ 0001:000089C4       SysUtils..TThreadLocalCounter
+ 0001:0000D668       SysUtils.Abort
+ 0001:0000DA3C       SysUtils.AbstractErrorHandler
+ 0003:00000850       SysUtils.AccessMode
+ 0001:00008BA0       SysUtils.AddExitProc
+ 0001:0000925C       SysUtils.AdjustLineBreaks
+ 0001:00008F04       SysUtils.AnsiCompareText
+ 0001:0000915C       SysUtils.AnsiExtractQuotedStr
+ 0001:00009BBC       SysUtils.AnsiLastChar
+ 0001:00008ECC       SysUtils.AnsiLowerCase
+ 0001:0000E44C       SysUtils.AnsiLowerCaseFileName
+ 0001:0000E414       SysUtils.AnsiPos
+ 0001:0000902C       SysUtils.AnsiQuotedStr
+ 0001:00008F48       SysUtils.AnsiStrLIComp
+ 0001:0000E4E0       SysUtils.AnsiStrPos
+ 0001:0000E580       SysUtils.AnsiStrRScan
+ 0001:0000E5B4       SysUtils.AnsiStrScan
+ 0001:00008E94       SysUtils.AnsiUpperCase
+ 0001:0000B890       SysUtils.AppendChars
+ 0001:0000BC74       SysUtils.AppendFormat
+ 0001:0000B8F0       SysUtils.AppendNumber
+ 0001:0000B8D4       SysUtils.AppendString
+ 0001:0000DA20       SysUtils.AssertErrorHandler
+ 0001:00009DEC       SysUtils.BackfillGetDiskFreeSpaceEx
+ 0001:0000E010       SysUtils.Beep
+ 0001:00009914       SysUtils.BoolToStr
+ 0001:0000E0EC       SysUtils.ByteToCharIndex
+ 0001:0000E0C8       SysUtils.ByteToCharLen
+ 0001:0000E08C       SysUtils.ByteType
+ 0001:0000E018       SysUtils.ByteTypeTest
+ 0001:0000F2D0       SysUtils.CallTerminateProcs
+ 0004:00002940       SysUtils.CharHash
+ 0001:0000E300       SysUtils.CharLength
+ 0001:0000E1E4       SysUtils.CharToByteIndex
+ 0001:0000E268       SysUtils.CharToByteLen
+ 0001:0000DF04       SysUtils.CheckWin32Version
+ 0001:00008D40       SysUtils.CompareMem
+ 0001:00008D10       SysUtils.CompareStr
+ 0001:00008DD4       SysUtils.CompareText
+ 0001:000097F4       SysUtils.CompareWith
+ 0001:0000D408       SysUtils.ConvertAddr
+ 0001:0000B9E0       SysUtils.ConvertEraString
+ 0001:00008B30       SysUtils.ConvertError
+ 0001:00008B48       SysUtils.ConvertErrorFmt
+ 0001:0000BB5C       SysUtils.ConvertYearString
+ 0001:0000E154       SysUtils.CountChars
+ 0001:0000D964       SysUtils.CreateAssertException
+ 0001:0000DAEC       SysUtils.CreateAVObject
+ 0001:0000D894       SysUtils.CreateInOutError
+ 0003:00000848       SysUtils.cSimpleBoolStrs
+ 0004:0000282C       SysUtils.CurrencyDecimals
+ 0004:00002828       SysUtils.CurrencyFormat
+ 0004:00002824       SysUtils.CurrencyString
+ 0001:0000B87C       SysUtils.CurrentYear
+ 0001:0000B054       SysUtils.CurrToStr
+ 0001:000094A0       SysUtils.CvtInt
+ 0001:0000950C       SysUtils.CvtInt64
+ 0003:00000888       SysUtils.CWNear
+ 0001:0000B6B0       SysUtils.Date
+ 0004:0000282D       SysUtils.DateSeparator
+ 0001:0000C42C       SysUtils.DateTimeToString
+ 0001:0000B5D8       SysUtils.DateTimeToSystemTime
+ 0001:0000B1E4       SysUtils.DateTimeToTimeStamp
+ 0001:0000B688       SysUtils.DayOfWeek
+ 0003:00000884       SysUtils.DCon10
+ 0004:0000282B       SysUtils.DecimalSeparator
+ 0001:0000B5B8       SysUtils.DecodeDate
+ 0001:0000B46C       SysUtils.DecodeDateFully
+ 0001:0000B2D8       SysUtils.DecodeTime
+ 0003:00000914       SysUtils.DefLongDayNames
+ 0003:000008C8       SysUtils.DefLongMonthNames
+ 0003:000008F8       SysUtils.DefShortDayNames
+ 0003:00000898       SysUtils.DefShortMonthNames
+ 0001:00009A84       SysUtils.DirectoryExists
+ 0001:00008B14       SysUtils.DivMod
+ 0001:00008B74       SysUtils.DoExitProc
+ 0001:0000DE14       SysUtils.DoneExceptions
+ 0001:0000D868       SysUtils.EHeapException.FreeInstance
+ 0003:000007CC       SysUtils.EmptyStr
+ 0003:000007D0       SysUtils.EmptyWideStr
+ 0001:0000B43C       SysUtils.EncodeDate
+ 0001:0000B298       SysUtils.EncodeTime
+ 0001:0000D074       SysUtils.EnumEraNames
+ 0001:0000D0B0       SysUtils.EnumEraYearOffsets
+ 0004:000028F4       SysUtils.EraNames
+ 0001:0000C73C       SysUtils.EraToYear
+ 0004:00002910       SysUtils.EraYearOffsets
+ 0001:0000D914       SysUtils.ErrorHandler
+ 0003:00000930       SysUtils.ErrorMap
+ 0001:0000DD80       SysUtils.ExceptHandler
+ 0001:0000D694       SysUtils.Exception.Create
+ 0001:0000D6D0       SysUtils.Exception.CreateFmt
+ 0001:0000D820       SysUtils.Exception.CreateHelp
+ 0001:0000D750       SysUtils.Exception.CreateRes
+ 0001:0000D78C       SysUtils.Exception.CreateResFmt
+ 0001:0000D414       SysUtils.ExceptionErrorMessage
+ 0003:00000968       SysUtils.ExceptMap
+ 0003:00000844       SysUtils.ExitProcList
+ 0001:00009DB0       SysUtils.ExpandFileName
+ 0001:00009C78       SysUtils.ExtractFileDrive
+ 0001:00009D68       SysUtils.ExtractFileExt
+ 0001:00009D30       SysUtils.ExtractFileName
+ 0001:00009C44       SysUtils.ExtractFilePath
+ 0004:00002930       SysUtils.FalseBoolStrs
+ 0003:00000878       SysUtils.FCon1E18
+ 0001:00009A60       SysUtils.FileExists
+ 0001:00009960       SysUtils.FileOpen
+ 0001:000099B8       SysUtils.FileRead
+ 0001:00009A10       SysUtils.FileSeek
+ 0001:000099E4       SysUtils.FileWrite
+ 0001:0000FC20       SysUtils.Finalization
+ 0001:00009BA0       SysUtils.FindClose
+ 0001:0000EE18       SysUtils.FindCmdLineSwitch
+ 0001:00009B2C       SysUtils.FindFirst
+ 0001:00009AA8       SysUtils.FindMatchingFile
+ 0001:00009B7C       SysUtils.FindNext
+ 0004:00003240       SysUtils.FLanguages
+ 0001:0000ACE4       SysUtils.FloatToDecimal
+ 0001:0000B024       SysUtils.FloatToStr
+ 0001:0000B084       SysUtils.FloatToStrF
+ 0001:0000A71C       SysUtils.FloatToText
+ 0001:0000A9F0       SysUtils.FloatToTextFmt
+ 0003:0000088C       SysUtils.FMSecsPerDay
+ 0001:0000A5FC       SysUtils.FmtStr
+ 0001:0000A5E8       SysUtils.Format
+ 0003:00000894       SysUtils.Format
+ 0001:0000A1F0       SysUtils.FormatBuf
+ 0001:0000A1E4       SysUtils.FormatClearStr
+ 0001:0000A168       SysUtils.FormatError
+ 0003:00000870       SysUtils.FormatErrorStrs
+ 0001:0000B0BC       SysUtils.FormatFloat
+ 0001:0000A1C0       SysUtils.FormatVarToStr
+ 0001:0000F7AC       SysUtils.FreeAndNil
+ 0001:0000F2F0       SysUtils.FreeTerminateProcs
+ 0001:0000B93C       SysUtils.GetCount
+ 0001:0000B968       SysUtils.GetDate
+ 0001:0000C654       SysUtils.GetDateOrder
+ 0003:00000840       SysUtils.GetDiskFreeSpaceEx
+ 0001:0000D128       SysUtils.GetEraNamesAndYearOffsets
+ 0001:0000C6E8       SysUtils.GetEraYearOffset
+ 0001:0000DAD4       SysUtils.GetExceptionClass
+ 0001:0000DCB8       SysUtils.GetExceptionObject
+ 0001:0000DF24       SysUtils.GetFileVersion
+ 0001:0000E714       SysUtils.GetFormatSettings
+ 0001:0000CEE8       SysUtils.GetLocaleChar
+ 0001:0000CE9C       SysUtils.GetLocaleStr
+ 0001:0000CF50       SysUtils.GetMonthDayNames
+ 0001:0000B9A0       SysUtils.GetTime
+ 0003:0000083C       SysUtils.HexDisplayPrefix
+ 0003:00000890       SysUtils.IMSecsPerDay
+ 0001:0000B788       SysUtils.IncAMonth
+ 0001:0000B72C       SysUtils.IncMonth
+ 0001:0000F314       SysUtils.InitDriveSpacePtr
+ 0001:0000DD90       SysUtils.InitExceptions
+ 0001:0000E5F4       SysUtils.InitLeadBytes
+ 0001:0000DE94       SysUtils.InitPlatformId
+ 0001:0000E650       SysUtils.InitSysLocale
+ 0001:0000F37C       SysUtils.InterlockedDecrement
+ 0001:0000F388       SysUtils.InterlockedExchange
+ 0001:0000F390       SysUtils.InterlockedExchangeAdd
+ 0001:0000F370       SysUtils.InterlockedIncrement
+ 0001:00009600       SysUtils.IntToHex
+ 0001:00009628       SysUtils.IntToHex
+ 0001:000095D8       SysUtils.IntToStr
+ 0001:000094EC       SysUtils.IntToStr
+ 0004:0000293C       SysUtils.InvalidPointer
+ 0001:0000E3B8       SysUtils.IsDelimiter
+ 0001:00008B6C       SysUtils.IsEqualGUID
+ 0001:0000B334       SysUtils.IsLeapYear
+ 0001:0000E370       SysUtils.IsPathDelimiter
+ 0001:000093D4       SysUtils.IsValidIdent
+ 0001:00009BF0       SysUtils.LastDelimiter
+ 0003:0000081C       SysUtils.LeadBytes
+ 0004:000028F2       SysUtils.ListSeparator
+ 0001:0000CF14       SysUtils.LocalGetLocaleStr
+ 0004:00002834       SysUtils.LongDateFormat
+ 0004:000028C8       SysUtils.LongDayNames
+ 0004:0000287C       SysUtils.LongMonthNames
+ 0004:00002848       SysUtils.LongTimeFormat
+ 0001:00008C74       SysUtils.LowerCase
+ 0001:0000DA54       SysUtils.MapException
+ 0001:0000F03C       SysUtils.ModuleUnloaded
+ 0003:000007EC       SysUtils.MonthDays
+ 0004:00002829       SysUtils.NegCurrFormat
+ 0001:0000E338       SysUtils.NextCharIndex
+ 0001:0000B6DC       SysUtils.Now
+ 0004:00002938       SysUtils.OutOfMemory
+ 0001:0000D688       SysUtils.OutOfMemoryError
+ 0001:0000A6D8       SysUtils.PutExponent
+ 0001:0000DA10       SysUtils.RaiseAssertException
+ 0001:0000F21C       SysUtils.RaiseLastOSError
+ 0001:0000F228       SysUtils.RaiseLastOSError
+ 0001:0000B818       SysUtils.ReplaceTime
+ 0001:0000D664       SysUtils.ReturnAddr
+ 0001:0000F8CC       SysUtils.SafeLoadLibrary
+ 0001:00008E70       SysUtils.SameText
+ 0001:0000C488       SysUtils.ScanBlanks
+ 0001:0000C618       SysUtils.ScanChar
+ 0001:0000C798       SysUtils.ScanDate
+ 0001:0000C4AC       SysUtils.ScanNumber
+ 0001:0000C540       SysUtils.ScanString
+ 0001:0000CAE4       SysUtils.ScanTime
+ 0001:0000C6A0       SysUtils.ScanToNumber
+ 0003:0000085C       SysUtils.ShareMode
+ 0004:00002830       SysUtils.ShortDateFormat
+ 0004:000028AC       SysUtils.ShortDayNames
+ 0004:0000284C       SysUtils.ShortMonthNames
+ 0004:00002844       SysUtils.ShortTimeFormat
+ 0001:0000D59C       SysUtils.ShowException
+ 0001:0000F214       SysUtils.Sleep
+ 0001:0000A10C       SysUtils.StrAlloc
+ 0001:0000A120       SysUtils.StrBufSize
+ 0001:0000E0B0       SysUtils.StrByteType
+ 0001:00009F7C       SysUtils.StrCat
+ 0001:0000E2D8       SysUtils.StrCharLength
+ 0001:00009F98       SysUtils.StrComp
+ 0001:00009E9C       SysUtils.StrCopy
+ 0001:0000A158       SysUtils.StrDispose
+ 0001:00009ED4       SysUtils.StrECopy
+ 0001:00009E78       SysUtils.StrEnd
+ 0001:0000A568       SysUtils.StrFmt
+ 0001:0000EA8C       SysUtils.StringReplace
+ 0001:0000A024       SysUtils.StrLComp
+ 0001:00009F00       SysUtils.StrLCopy
+ 0001:00009E60       SysUtils.StrLen
+ 0001:0000A5A8       SysUtils.StrLFmt
+ 0001:0000A04C       SysUtils.StrLIComp
+ 0001:00009E8C       SysUtils.StrMove
+ 0001:0000A12C       SysUtils.StrNew
+ 0001:0000E2F8       SysUtils.StrNextChar
+ 0001:0000A0F8       SysUtils.StrPas
+ 0001:00009F34       SysUtils.StrPCopy
+ 0001:00009F5C       SysUtils.StrPLCopy
+ 0001:0000A0A4       SysUtils.StrPos
+ 0001:0000A090       SysUtils.StrScan
+ 0001:0000CD80       SysUtils.StrToDateTime
+ 0001:0000B118       SysUtils.StrToFloat
+ 0001:00009658       SysUtils.StrToInt
+ 0001:000096CC       SysUtils.StrToInt64
+ 0001:00009710       SysUtils.StrToInt64Def
+ 0001:00009694       SysUtils.StrToIntDef
+ 0001:0000CD14       SysUtils.StrToTime
+ 0001:0000F7BC       SysUtils.Supports
+ 0001:0000F878       SysUtils.Supports
+ 0001:0000F7E0       SysUtils.Supports
+ 0001:0000CE50       SysUtils.SysErrorMessage
+ 0004:000028E4       SysUtils.SysLocale
+ 0001:0000B618       SysUtils.SystemTimeToDateTime
+ 0002:000000E4       SysUtils.SysUtils
+ 0003:00000A18       SysUtils.TerminateProcList
+ 0001:0000AF10       SysUtils.TextToFloat
+ 0004:0000282A       SysUtils.ThousandSeparator
+ 0004:0000283C       SysUtils.TimeAMString
+ 0004:00002840       SysUtils.TimePMString
+ 0004:00002838       SysUtils.TimeSeparator
+ 0001:0000F6D4       SysUtils.TMultiReadExclusiveWriteSynchronizer.BeginRead
+ 0001:0000F5D8       SysUtils.TMultiReadExclusiveWriteSynchronizer.BeginWrite
+ 0001:0000F594       SysUtils.TMultiReadExclusiveWriteSynchronizer.BlockReaders
+ 0001:0000F4D8       SysUtils.TMultiReadExclusiveWriteSynchronizer.Create
+ 0001:0000F54C       SysUtils.TMultiReadExclusiveWriteSynchronizer.Destroy
+ 0001:0000F744       SysUtils.TMultiReadExclusiveWriteSynchronizer.EndRead
+ 0001:0000F684       SysUtils.TMultiReadExclusiveWriteSynchronizer.EndWrite
+ 0001:0000F5AC       SysUtils.TMultiReadExclusiveWriteSynchronizer.UnblockOneWriter
+ 0001:0000F5A0       SysUtils.TMultiReadExclusiveWriteSynchronizer.UnblockReaders
+ 0001:0000F5B8       SysUtils.TMultiReadExclusiveWriteSynchronizer.WaitForReadSignal
+ 0001:0000F5C8       SysUtils.TMultiReadExclusiveWriteSynchronizer.WaitForWriteSignal
+ 0001:0000D1D8       SysUtils.TranslateDateFormat
+ 0001:00008F68       SysUtils.Trim
+ 0001:00008FBC       SysUtils.TrimLeft
+ 0001:00008FF4       SysUtils.TrimRight
+ 0004:0000292C       SysUtils.TrueBoolStrs
+ 0001:0000B370       SysUtils.TryEncodeDate
+ 0001:0000B228       SysUtils.TryEncodeTime
+ 0001:00009878       SysUtils.TryStrToBool
+ 0001:0000B1C8       SysUtils.TryStrToCurr
+ 0001:0000CCDC       SysUtils.TryStrToDate
+ 0001:0000CDB4       SysUtils.TryStrToDateTime
+ 0001:0000B154       SysUtils.TryStrToFloat
+ 0001:0000B19C       SysUtils.TryStrToFloat
+ 0001:0000B170       SysUtils.TryStrToFloat
+ 0001:000096AC       SysUtils.TryStrToInt
+ 0001:00009744       SysUtils.TryStrToInt64
+ 0001:0000CD48       SysUtils.TryStrToTime
+ 0001:0000F484       SysUtils.TThreadLocalCounter.Delete
+ 0001:0000F398       SysUtils.TThreadLocalCounter.Destroy
+ 0001:0000F3F0       SysUtils.TThreadLocalCounter.HashIndex
+ 0001:0000F40C       SysUtils.TThreadLocalCounter.Open
+ 0001:0000F494       SysUtils.TThreadLocalCounter.Recycle
+ 0003:000007E8       SysUtils.TwoDigitYearCenturyWindow
+ 0004:00002E40       SysUtils.UnitHashBuckets
+ 0001:00008BD8       SysUtils.UpperCase
+ 0004:00002A40       SysUtils.ValidatedUnitHashBuckets
+ 0001:00009764       SysUtils.VerifyBoolStrArray
+ 0003:000007E0       SysUtils.Win32BuildNumber
+ 0001:0000F2C0       SysUtils.Win32Check
+ 0003:000007E4       SysUtils.Win32CSDVersion
+ 0003:000007D8       SysUtils.Win32MajorVersion
+ 0003:000007DC       SysUtils.Win32MinorVersion
+ 0003:000007D4       SysUtils.Win32Platform
+ 0001:0000EBE8       SysUtils.WrapText
+ 0004:00004908       Tabs..4
+ 0003:000032D4       Tabs.cLeftDisOrient
+ 0003:000032CC       Tabs.cLeftDnOrient
+ 0003:000032C4       Tabs.cLeftOrient
+ 0003:000032EC       Tabs.cRightDisOrient
+ 0003:000032E4       Tabs.cRightDnOrient
+ 0003:000032DC       Tabs.cRightOrient
+ 0001:001293A4       Tabs.Finalization
+ 0002:00000EF4       Tabs.Tabs
+ 0001:000B4AF4       TeCanvas..TCanvas3D
+ 0001:000B4648       TeCanvas..TChartArrowPen
+ 0001:000B46FC       TeCanvas..TChartAxisPen
+ 0001:000B4410       TeCanvas..TChartHiddenPen
+ 0001:000B4340       TeCanvas..TChartPen
+ 0001:000B4598       TeCanvas..TDarkGrayPen
+ 0001:000B44C4       TeCanvas..TDottedGrayPen
+ 0001:000B4A08       TeCanvas..TTeeCanvas
+ 0001:000B4C7C       TeCanvas..TTeeCanvas3D
+ 0001:000B47AC       TeCanvas..TView3DOptions
+ 0001:000B6AF8       TeCanvas.ApplyDark
+ 0001:000B4E1C       TeCanvas.ArcTan2
+ 0001:000B89B0       TeCanvas.CalcArrowPoint
+ 0001:000B6470       TeCanvas.CalcBrushColor
+ 0001:000B5FA8       TeCanvas.CalcTrigValues
+ 0001:000B5CF4       TeCanvas.ClipCanvas
+ 0001:000B6B50       TeCanvas.Dark
+ 0001:000B8254       TeCanvas.Dark
+ 0001:000B7B2C       TeCanvas.Dark
+ 0001:000B7490       TeCanvas.Dark
+ 0003:00002034       TeCanvas.DarkColorQuantity
+ 0003:00002030       TeCanvas.DarkerColorQuantity
+ 0001:000B74E8       TeCanvas.Draw3DPie
+ 0001:000B6768       TeCanvas.FromCenter
+ 0001:000B6650       TeCanvas.FromCorner
+ 0001:000B8D84       TeCanvas.MaxDouble
+ 0001:000B8DF4       TeCanvas.MaxLong
+ 0001:000B8DBC       TeCanvas.MinDouble
+ 0001:000B8DFC       TeCanvas.MinLong
+ 0001:000B4E40       TeCanvas.RectCenter
+ 0001:000B6524       TeCanvas.RectGradient
+ 0001:000B4E2C       TeCanvas.RectSize
+ 0001:000B4E08       TeCanvas.SinCos
+ 0001:000B8E10       TeCanvas.SwapDouble
+ 0001:000B8E38       TeCanvas.SwapInteger
+ 0001:000B8E04       TeCanvas.SwapLongint
+ 0001:000B53EC       TeCanvas.TCanvas3D.Assign
+ 0001:000B5050       TeCanvas.TChartArrowPen.Create
+ 0001:000B5000       TeCanvas.TChartAxisPen.Create
+ 0001:000B4F0C       TeCanvas.TChartHiddenPen.Create
+ 0001:000B4EB0       TeCanvas.TChartPen.Assign
+ 0001:000B4E60       TeCanvas.TChartPen.Create
+ 0001:000B4EF8       TeCanvas.TChartPen.SetSmallDots
+ 0001:000B4EE4       TeCanvas.TChartPen.SetVisible
+ 0001:000B4FB0       TeCanvas.TDarkGrayPen.Create
+ 0001:000B4F58       TeCanvas.TDottedGrayPen.Create
+ 0003:0000202C       TeCanvas.TeeDefaultConePercent
+ 0003:00002038       TeCanvas.TeeGradientPrecision
+ 0001:000B52C0       TeCanvas.TTeeCanvas.AssignVisiblePen
+ 0001:000B53D4       TeCanvas.TTeeCanvas.FontHeight
+ 0001:000B5250       TeCanvas.TTeeCanvas.ResetState
+ 0001:000B5230       TeCanvas.TTeeCanvas.SetCanvas
+ 0001:000B5384       TeCanvas.TTeeCanvas.TextHeight
+ 0001:000B5338       TeCanvas.TTeeCanvas.TextWidth
+ 0001:000B7418       TeCanvas.TTeeCanvas3D.Arc
+ 0001:000B8A14       TeCanvas.TTeeCanvas3D.Arrow
+ 0001:000B5774       TeCanvas.TTeeCanvas3D.Calc3DPoint
+ 0001:000B58D0       TeCanvas.TTeeCanvas3D.Calc3DPos
+ 0001:000B5720       TeCanvas.TTeeCanvas3D.Calc3DTPoint
+ 0001:000B572C       TeCanvas.TTeeCanvas3D.Calc3DTPoint3D
+ 0001:000B57A0       TeCanvas.TTeeCanvas3D.Calculate2DPosition
+ 0001:000B5740       TeCanvas.TTeeCanvas3D.Calculate3DPosition
+ 0001:000B5D64       TeCanvas.TTeeCanvas3D.ClipCube
+ 0001:000B5D58       TeCanvas.TTeeCanvas3D.ClipRectangle
+ 0001:000B5A1C       TeCanvas.TTeeCanvas3D.Cone
+ 0001:000B5408       TeCanvas.TTeeCanvas3D.Create
+ 0001:000B6B9C       TeCanvas.TTeeCanvas3D.Cube
+ 0001:000B8228       TeCanvas.TTeeCanvas3D.Cylinder
+ 0001:000B5470       TeCanvas.TTeeCanvas3D.DeleteBitmap
+ 0001:000B5484       TeCanvas.TTeeCanvas3D.Destroy
+ 0001:000B5C8C       TeCanvas.TTeeCanvas3D.DoHorizLine
+ 0001:000B5628       TeCanvas.TTeeCanvas3D.DoRectangle
+ 0001:000B5CC4       TeCanvas.TTeeCanvas3D.DoVertLine
+ 0001:000B63E8       TeCanvas.TTeeCanvas3D.Draw
+ 0001:000B7138       TeCanvas.TTeeCanvas3D.Ellipse
+ 0001:000B7164       TeCanvas.TTeeCanvas3D.EllipseWithZ
+ 0001:000B69D0       TeCanvas.TTeeCanvas3D.EraseBackground
+ 0001:000B69E4       TeCanvas.TTeeCanvas3D.FillRect
+ 0001:000B6A08       TeCanvas.TTeeCanvas3D.Frame3D
+ 0001:000B6F08       TeCanvas.TTeeCanvas3D.FrontPlaneBegin
+ 0001:000B6F20       TeCanvas.TTeeCanvas3D.FrontPlaneEnd
+ 0001:000B5500       TeCanvas.TTeeCanvas3D.GetBackColor
+ 0001:000B54B0       TeCanvas.TTeeCanvas3D.GetBackMode
+ 0001:000B5A10       TeCanvas.TTeeCanvas3D.GetHandle
+ 0001:000B8720       TeCanvas.TTeeCanvas3D.GetMonochrome
+ 0001:000B86D0       TeCanvas.TTeeCanvas3D.GetSupports3DText
+ 0001:000B86D4       TeCanvas.TTeeCanvas3D.GetSupportsFullRotation
+ 0001:000B86D8       TeCanvas.TTeeCanvas3D.GetTextAlign
+ 0001:000B86EC       TeCanvas.TTeeCanvas3D.GetUseBuffer
+ 0001:000B68B4       TeCanvas.TTeeCanvas3D.GradientFill
+ 0001:000B8758       TeCanvas.TTeeCanvas3D.HorizLine3D
+ 0001:000B6154       TeCanvas.TTeeCanvas3D.InitWindow
+ 0001:000B7B84       TeCanvas.TTeeCanvas3D.InternalCylinder
+ 0001:000B6F30       TeCanvas.TTeeCanvas3D.Invalidate
+ 0001:000B706C       TeCanvas.TTeeCanvas3D.Line
+ 0001:000B5608       TeCanvas.TTeeCanvas3D.LineTo
+ 0001:000B5BE4       TeCanvas.TTeeCanvas3D.LineTo3D
+ 0001:000B70A0       TeCanvas.TTeeCanvas3D.LineWithZ
+ 0001:000B55E8       TeCanvas.TTeeCanvas3D.MoveTo
+ 0001:000B5BA4       TeCanvas.TTeeCanvas3D.MoveTo3D
+ 0001:000B7454       TeCanvas.TTeeCanvas3D.Pie
+ 0001:000B7614       TeCanvas.TTeeCanvas3D.Pie3D
+ 0001:000B7AB4       TeCanvas.TTeeCanvas3D.Plane3D
+ 0001:000B85EC       TeCanvas.TTeeCanvas3D.PlaneFour3D
+ 0001:000B566C       TeCanvas.TTeeCanvas3D.PlaneWithZ
+ 0001:000B7100       TeCanvas.TTeeCanvas3D.Polygon
+ 0001:000B5650       TeCanvas.TTeeCanvas3D.PolygonFour
+ 0001:000B7120       TeCanvas.TTeeCanvas3D.PolygonWithZ
+ 0001:000B5F40       TeCanvas.TTeeCanvas3D.Projection
+ 0001:000B82AC       TeCanvas.TTeeCanvas3D.Pyramid
+ 0001:000B5570       TeCanvas.TTeeCanvas3D.Rectangle
+ 0001:000B5C24       TeCanvas.TTeeCanvas3D.RectangleWithZ
+ 0001:000B6E9C       TeCanvas.TTeeCanvas3D.RectangleY
+ 0001:000B6E2C       TeCanvas.TTeeCanvas3D.RectangleZ
+ 0001:000B636C       TeCanvas.TTeeCanvas3D.ReDrawBitmap
+ 0001:000B6F78       TeCanvas.TTeeCanvas3D.RotateLabel
+ 0001:000B6F38       TeCanvas.TTeeCanvas3D.RotateLabel3D
+ 0001:000B559C       TeCanvas.TTeeCanvas3D.RoundRect
+ 0001:000B54E0       TeCanvas.TTeeCanvas3D.SetBackColor
+ 0001:000B54C4       TeCanvas.TTeeCanvas3D.SetBackMode
+ 0001:000B8728       TeCanvas.TTeeCanvas3D.SetMonochrome
+ 0001:000B73EC       TeCanvas.TTeeCanvas3D.SetPixel
+ 0001:000B8660       TeCanvas.TTeeCanvas3D.SetPixel3D
+ 0001:000B55D0       TeCanvas.TTeeCanvas3D.SetTextAlign
+ 0001:000B86F4       TeCanvas.TTeeCanvas3D.SetUseBuffer
+ 0001:000B638C       TeCanvas.TTeeCanvas3D.ShowImage
+ 0001:000B5A4C       TeCanvas.TTeeCanvas3D.Sphere
+ 0001:000B63CC       TeCanvas.TTeeCanvas3D.StretchDraw
+ 0001:000B5A8C       TeCanvas.TTeeCanvas3D.Surface3D
+ 0001:000B5514       TeCanvas.TTeeCanvas3D.TextOut
+ 0001:000B5A94       TeCanvas.TTeeCanvas3D.TextOut3D
+ 0001:000B6314       TeCanvas.TTeeCanvas3D.TransferBitmap
+ 0001:000B88AC       TeCanvas.TTeeCanvas3D.Triangle3D
+ 0001:000B8944       TeCanvas.TTeeCanvas3D.TriangleWithZ
+ 0001:000B5F34       TeCanvas.TTeeCanvas3D.UnClipRectangle
+ 0001:000B87C8       TeCanvas.TTeeCanvas3D.VertLine3D
+ 0001:000B8834       TeCanvas.TTeeCanvas3D.ZLine3D
+ 0001:000B51DC       TeCanvas.TView3DOptions.Assign
+ 0001:000B50A0       TeCanvas.TView3DOptions.Create
+ 0001:000B5100       TeCanvas.TView3DOptions.Repaint
+ 0001:000B5118       TeCanvas.TView3DOptions.SetBooleanProperty
+ 0001:000B5124       TeCanvas.TView3DOptions.SetElevation
+ 0001:000B5154       TeCanvas.TView3DOptions.SetHorizOffset
+ 0001:000B510C       TeCanvas.TView3DOptions.SetIntegerProperty
+ 0001:000B519C       TeCanvas.TView3DOptions.SetOrthogonal
+ 0001:000B5130       TeCanvas.TView3DOptions.SetPerspective
+ 0001:000B513C       TeCanvas.TView3DOptions.SetRotation
+ 0001:000B5148       TeCanvas.TView3DOptions.SetTilt
+ 0001:000B5178       TeCanvas.TView3DOptions.SetVertOffset
+ 0001:000B51A8       TeCanvas.TView3DOptions.SetZoom
+ 0001:000B51D0       TeCanvas.TView3DOptions.SetZoomText
+ 0001:000B5F20       TeCanvas.UnClipCanvas
+ 0001:000CD3FC       TeeFunci..TAddTeeFunction
+ 0001:000CD9F0       TeeFunci..TAverageTeeFunction
+ 0001:000CD770       TeeFunci..TDivideTeeFunction
+ 0001:000CD84C       TeeFunci..THighTeeFunction
+ 0001:000CD920       TeeFunci..TLowTeeFunction
+ 0001:000CD4CC       TeeFunci..TManySeriesTeeFunction
+ 0001:000CD690       TeeFunci..TMultiplyTeeFunction
+ 0001:000CD5B0       TeeFunci..TSubtractTeeFunction
+ 0001:000CDAC8       TeeFunci.TAddTeeFunction.Calculate
+ 0001:000CDB20       TeeFunci.TAddTeeFunction.CalculateMany
+ 0001:000CDEC8       TeeFunci.TAverageTeeFunction.Calculate
+ 0001:000CDF70       TeeFunci.TAverageTeeFunction.CalculateMany
+ 0001:000CDC6C       TeeFunci.TDivideTeeFunction.CalculateValue
+ 0001:000CDCA8       TeeFunci.THighTeeFunction.Calculate
+ 0001:000CDD2C       TeeFunci.THighTeeFunction.CalculateMany
+ 0001:000CDDB8       TeeFunci.TLowTeeFunction.Calculate
+ 0001:000CDE3C       TeeFunci.TLowTeeFunction.CalculateMany
+ 0001:000CDB90       TeeFunci.TManySeriesTeeFunction.CalculateMany
+ 0001:000CDC50       TeeFunci.TMultiplyTeeFunction.CalculateValue
+ 0001:000CDC34       TeeFunci.TSubtractTeeFunction.CalculateValue
+ 0004:00003680       TeEngine..71
+ 0001:000BBD60       TeEngine..AxisException
+ 0001:000BBEC0       TeEngine..TChartAxis
+ 0001:000BBC58       TeEngine..TChartAxisTitle
+ 0001:000BC514       TeEngine..TChartDepthAxis
+ 0001:000BD5E4       TeEngine..TChartSeries
+ 0001:000BCD08       TeEngine..TChartSeriesList
+ 0001:000BBAD8       TeEngine..TChartValueList
+ 0001:000BD4F8       TeEngine..TChartValueLists
+ 0001:000BCDA4       TeEngine..TCustomAxisPanel
+ 0001:000BBE10       TeEngine..TCustomChartAxis
+ 0001:000BCF6C       TeEngine..TSeriesMarkPosition
+ 0001:000BD040       TeEngine..TSeriesMarks
+ 0001:000BCFCC       TeEngine..TSeriesMarksPositions
+ 0001:000BD3AC       TeEngine..TTeeFunction
+ 0001:000C0AF8       TeEngine.AddTick
+ 0003:00002194       TeEngine.Aligns
+ 0001:000C06A8       TeEngine.AProc
+ 0003:000021A4       TeEngine.ArrowColors
+ 0001:000C0E88       TeEngine.AxisLabelsSeries
+ 0003:000021AC       TeEngine.BrushStyles
+ 0001:000C0D74       TeEngine.CalcAllSeries
+ 0001:000C0DFC       TeEngine.CalcFirstLastAllSeries
+ 0001:000C1B2C       TeEngine.CalcLabelsRect
+ 0001:000C4048       TeEngine.CalcMinMaxValue
+ 0001:000C65F8       TeEngine.CalcNumPages
+ 0001:000C3078       TeEngine.CalculateFunctionMany
+ 0001:000C2FF4       TeEngine.CalculateMovingFunction
+ 0001:000C3BA8       TeEngine.ClearDataSources
+ 0001:000C6FC8       TeEngine.ClipRegionCreate
+ 0001:000C7020       TeEngine.ClipRegionDone
+ 0001:000C2254       TeEngine.CompareValueIndex
+ 0001:000C162C       TeEngine.DepthAxisLabels
+ 0001:000BFED8       TeEngine.DoCalculation
+ 0001:000C14A8       TeEngine.DoCustomLabels
+ 0001:000C1310       TeEngine.DoDefaultLabels
+ 0001:000C1200       TeEngine.DoDefaultLogLabels
+ 0001:000C1468       TeEngine.DoNotCustomLabels
+ 0001:000C7544       TeEngine.DrawAllAxis
+ 0001:000C7094       TeEngine.DrawAllSeriesValue
+ 0001:000C04C0       TeEngine.DrawAxisLine
+ 0001:000C158C       TeEngine.DrawAxisTitle
+ 0001:000C0070       TeEngine.DrawGridLine
+ 0001:000C026C       TeEngine.DrawGrids
+ 0001:000C272C       TeEngine.DrawLine
+ 0001:000C7148       TeEngine.DrawMarksSeries
+ 0001:000C2794       TeEngine.DrawMarkText
+ 0001:000C7184       TeEngine.DrawSeries
+ 0001:000C0B14       TeEngine.DrawThisLabel
+ 0001:000C0A48       TeEngine.DrawTicksGrid
+ 0001:000C7C50       TeEngine.Finalization
+ 0001:000C0C38       TeEngine.GetAxisSeriesLabel
+ 0001:000C1AEC       TeEngine.InflateAxisPos
+ 0001:000C1A90       TeEngine.InflateAxisRect
+ 0001:000BE3C8       TeEngine.InternalCalcLabelsIncrement
+ 0001:000BDFD0       TeEngine.InternalCalcPos
+ 0001:000C10CC       TeEngine.InternalDrawLabel
+ 0001:000C035C       TeEngine.InternalDrawTick
+ 0001:000C3BC8       TeEngine.InternalRemoveDataSource
+ 0001:000C3C48       TeEngine.InternalSetDataSource
+ 0001:000C11B8       TeEngine.IntPower
+ 0001:000C11E8       TeEngine.LogBaseN
+ 0001:000BED78       TeEngine.MaxLabelsValueWidth
+ 0001:000C22B8       TeEngine.PrivateSort
+ 0001:000C0A04       TeEngine.ProcessMinor
+ 0001:000C0760       TeEngine.ProcessMinorTicks
+ 0001:000C0994       TeEngine.ProcessTicks
+ 0001:000BE788       TeEngine.RecalcAdjustedMinMax
+ 0001:000C55A0       TeEngine.SelfSetDataSources
+ 0001:000C73D4       TeEngine.SetSeriesZOrder
+ 0001:000C74C4       TeEngine.SetSeriesZPositions
+ 0001:000BDB64       TeEngine.TChartAxisTitle.Assign
+ 0001:000BDBA4       TeEngine.TChartAxisTitle.IsAngleStored
+ 0001:000BDBB4       TeEngine.TChartAxisTitle.SetAngle
+ 0001:000BDC18       TeEngine.TChartAxisTitle.SetCaption
+ 0001:000C4D08       TeEngine.TChartSeries.Add
+ 0001:000C438C       TeEngine.TChartSeries.AddChartValue
+ 0001:000C446C       TeEngine.TChartSeries.AddedValue
+ 0001:000C6128       TeEngine.TChartSeries.AddLinkedSeries
+ 0001:000C4CB8       TeEngine.TChartSeries.AddNull
+ 0001:000C4CD8       TeEngine.TChartSeries.AddNullXY
+ 0001:000C434C       TeEngine.TChartSeries.AddValue
+ 0001:000C4708       TeEngine.TChartSeries.AddValues
+ 0001:000C4D4C       TeEngine.TChartSeries.AddX
+ 0001:000C4BB0       TeEngine.TChartSeries.AddXY
+ 0001:000C4D94       TeEngine.TChartSeries.AddY
+ 0001:000C55E0       TeEngine.TChartSeries.Assign
+ 0001:000C47A4       TeEngine.TChartSeries.AssignValues
+ 0001:000C5B40       TeEngine.TChartSeries.AssociatedToAxis
+ 0001:000C40CC       TeEngine.TChartSeries.CalcFirstLastVisibleIndex
+ 0001:000C4AF4       TeEngine.TChartSeries.CalcHorizMargins
+ 0001:000C5D9C       TeEngine.TChartSeries.CalcPosValue
+ 0001:000C5248       TeEngine.TChartSeries.CalcRandomBounds
+ 0001:000C4B00       TeEngine.TChartSeries.CalcVerticalMargins
+ 0001:000C5DD0       TeEngine.TChartSeries.CalcXPos
+ 0001:000C5D54       TeEngine.TChartSeries.CalcXPosValue
+ 0001:000C5E9C       TeEngine.TChartSeries.CalcYPos
+ 0001:000C5D84       TeEngine.TChartSeries.CalcYPosValue
+ 0001:000C5CF8       TeEngine.TChartSeries.CalcZOrder
+ 0001:000C3DDC       TeEngine.TChartSeries.CanvasChanged
+ 0001:000C3A70       TeEngine.TChartSeries.CheckDataSource
+ 0001:000C3EAC       TeEngine.TChartSeries.CheckOtherSeries
+ 0001:000C5AF4       TeEngine.TChartSeries.Clear
+ 0001:000C5A6C       TeEngine.TChartSeries.ClearLists
+ 0001:000C5FD8       TeEngine.TChartSeries.ClearTempValue
+ 0001:000C3EBC       TeEngine.TChartSeries.Clicked
+ 0001:000C4DDC       TeEngine.TChartSeries.Count
+ 0001:000C4DE8       TeEngine.TChartSeries.CountLegendItems
+ 0001:000C3340       TeEngine.TChartSeries.Create
+ 0001:000C3A58       TeEngine.TChartSeries.CreateChartPen
+ 0001:000C35D4       TeEngine.TChartSeries.DefineProperties
+ 0001:000C5EC0       TeEngine.TChartSeries.Delete
+ 0001:000C4340       TeEngine.TChartSeries.DeletedValue
+ 0001:000C6300       TeEngine.TChartSeries.Destroy
+ 0001:000C48BC       TeEngine.TChartSeries.DoAfterDrawValues
+ 0001:000C4898       TeEngine.TChartSeries.DoBeforeDrawChart
+ 0001:000C489C       TeEngine.TChartSeries.DoBeforeDrawValues
+ 0001:000C5E04       TeEngine.TChartSeries.DoSeriesClick
+ 0001:000C5DF4       TeEngine.TChartSeries.DoSeriesMouseMove
+ 0001:000C5DFC       TeEngine.TChartSeries.DoSeriesMouseUp
+ 0001:000C391C       TeEngine.TChartSeries.DrawAllValues
+ 0001:000C5BF8       TeEngine.TChartSeries.DrawLegend
+ 0001:000C5B8C       TeEngine.TChartSeries.DrawLegendShape
+ 0001:000C4B0C       TeEngine.TChartSeries.DrawMark
+ 0001:000C48DC       TeEngine.TChartSeries.DrawMarks
+ 0001:000C3918       TeEngine.TChartSeries.DrawSeriesForward
+ 0001:000C4280       TeEngine.TChartSeries.DrawValue
+ 0001:000C3914       TeEngine.TChartSeries.DrawValuesForward
+ 0001:000C542C       TeEngine.TChartSeries.FillSampleValues
+ 0001:000C482C       TeEngine.TChartSeries.FirstInZOrder
+ 0001:000C5A44       TeEngine.TChartSeries.FreeXLabel
+ 0001:000C554C       TeEngine.TChartSeries.GalleryChanged3D
+ 0001:000C5914       TeEngine.TChartSeries.GetBitmapEditor
+ 0001:000C3518       TeEngine.TChartSeries.GetChildren
+ 0001:000C3AF0       TeEngine.TChartSeries.GetDataSource
+ 0001:000C47B8       TeEngine.TChartSeries.GetEditorClass
+ 0001:000C4F94       TeEngine.TChartSeries.GetMarkText
+ 0001:000C4F20       TeEngine.TChartSeries.GetMarkValue
+ 0001:000C5A14       TeEngine.TChartSeries.GetMemLabel
+ 0001:000C4F08       TeEngine.TChartSeries.GetOriginValue
+ 0001:000C3544       TeEngine.TChartSeries.GetParentComponent
+ 0001:000C4018       TeEngine.TChartSeries.GetValue
+ 0001:000C5990       TeEngine.TChartSeries.GetValueColor
+ 0001:000C594C       TeEngine.TChartSeries.GetXLabel
+ 0001:000C591C       TeEngine.TChartSeries.GetxValue
+ 0001:000C5934       TeEngine.TChartSeries.GetyValue
+ 0001:000C3DE4       TeEngine.TChartSeries.GetYValueList
+ 0001:000C63D8       TeEngine.TChartSeries.GetZOrder
+ 0001:000C356C       TeEngine.TChartSeries.HasParent
+ 0001:000C4B88       TeEngine.TChartSeries.InsertLabel
+ 0001:000C3B14       TeEngine.TChartSeries.InternalAddDataSource
+ 0001:000C4C9C       TeEngine.TChartSeries.IsNull
+ 0001:000C42E8       TeEngine.TChartSeries.IsPercentFormatStored
+ 0001:000C3DD8       TeEngine.TChartSeries.IsValidSeriesSource
+ 0001:000C3DD0       TeEngine.TChartSeries.IsValidSourceOf
+ 0001:000C4290       TeEngine.TChartSeries.IsValueFormatStored
+ 0001:000C5BF0       TeEngine.TChartSeries.LegendItemColor
+ 0001:000C451C       TeEngine.TChartSeries.LegendString
+ 0001:000C4518       TeEngine.TChartSeries.LegendToValueIndex
+ 0001:000C624C       TeEngine.TChartSeries.Loaded
+ 0001:000C390C       TeEngine.TChartSeries.MandatoryValueList
+ 0001:000C4DF0       TeEngine.TChartSeries.MarkPercent
+ 0001:000C6098       TeEngine.TChartSeries.MaxMarkWidth
+ 0001:000C5FF0       TeEngine.TChartSeries.MaxXValue
+ 0001:000C6008       TeEngine.TChartSeries.MaxYValue
+ 0001:000C6050       TeEngine.TChartSeries.MaxZValue
+ 0001:000C6020       TeEngine.TChartSeries.MinXValue
+ 0001:000C6038       TeEngine.TChartSeries.MinYValue
+ 0001:000C6074       TeEngine.TChartSeries.MinZValue
+ 0001:000C47C4       TeEngine.TChartSeries.MoreSameZOrder
+ 0001:000C359C       TeEngine.TChartSeries.Notification
+ 0001:000C4C60       TeEngine.TChartSeries.NotifyNewValue
+ 0001:000C616C       TeEngine.TChartSeries.NotifyValue
+ 0001:000C5240       TeEngine.TChartSeries.NumSampleValues
+ 0001:000C39A0       TeEngine.TChartSeries.PointOrigin
+ 0001:000C5204       TeEngine.TChartSeries.PrepareForGallery
+ 0001:000C5CF0       TeEngine.TChartSeries.PrepareLegendCanvas
+ 0001:000C382C       TeEngine.TChartSeries.ReadData
+ 0001:000C3690       TeEngine.TChartSeries.ReadIdentifier
+ 0001:000C36F4       TeEngine.TChartSeries.ReadStyle
+ 0001:000C3EC0       TeEngine.TChartSeries.RecalcGetAxis
+ 0001:000C47AC       TeEngine.TChartSeries.RefreshSeries
+ 0001:000C3B50       TeEngine.TChartSeries.RemoveAllLinkedSeries
+ 0001:000C6148       TeEngine.TChartSeries.RemoveDataSource
+ 0001:000C615C       TeEngine.TChartSeries.RemoveLinkedSeries
+ 0001:000C4268       TeEngine.TChartSeries.Repaint
+ 0001:000C3968       TeEngine.TChartSeries.SameClass
+ 0001:000C4284       TeEngine.TChartSeries.SetActive
+ 0001:000C4B7C       TeEngine.TChartSeries.SetBooleanProperty
+ 0001:000C3F8C       TeEngine.TChartSeries.SetChartValueList
+ 0001:000C58C8       TeEngine.TChartSeries.SetColorEachPoint
+ 0001:000C5594       TeEngine.TChartSeries.SetColorProperty
+ 0001:000C3A88       TeEngine.TChartSeries.SetColorSource
+ 0001:000C3DA8       TeEngine.TChartSeries.SetDataSource
+ 0001:000C556C       TeEngine.TChartSeries.SetDoubleProperty
+ 0001:000C3570       TeEngine.TChartSeries.SetFunction
+ 0001:000C3F44       TeEngine.TChartSeries.SetHorizAxis
+ 0001:000C4B3C       TeEngine.TChartSeries.SetIntegerProperty
+ 0001:000C3ABC       TeEngine.TChartSeries.SetLabelsSource
+ 0001:000C4B48       TeEngine.TChartSeries.SetLongintProperty
+ 0001:000C5FC8       TeEngine.TChartSeries.SetMarks
+ 0001:000C59CC       TeEngine.TChartSeries.SetParentChart
+ 0001:000C3548       TeEngine.TChartSeries.SetParentComponent
+ 0001:000C51F8       TeEngine.TChartSeries.SetPercentFormat
+ 0001:000C5FE4       TeEngine.TChartSeries.SetSeriesColor
+ 0001:000C5908       TeEngine.TChartSeries.SetShowInLegend
+ 0001:000C4B54       TeEngine.TChartSeries.SetStringProperty
+ 0001:000C3FC8       TeEngine.TChartSeries.SetTitle
+ 0001:000C5A00       TeEngine.TChartSeries.SetValueColor
+ 0001:000C51EC       TeEngine.TChartSeries.SetValueFormat
+ 0001:000C3F68       TeEngine.TChartSeries.SetVertAxis
+ 0001:000C3FA8       TeEngine.TChartSeries.SetXValues
+ 0001:000C3FB8       TeEngine.TChartSeries.SetYValues
+ 0001:000C5F58       TeEngine.TChartSeries.SwapValueIndex
+ 0001:000C6248       TeEngine.TChartSeries.UseAxis
+ 0001:000C38B4       TeEngine.TChartSeries.WriteData
+ 0001:000C36E4       TeEngine.TChartSeries.WriteIdentifier
+ 0001:000C37D8       TeEngine.TChartSeries.WriteStyle
+ 0001:000C5D6C       TeEngine.TChartSeries.XScreenToValue
+ 0001:000C38F4       TeEngine.TChartSeries.YMandatory
+ 0001:000C6404       TeEngine.TChartSeriesList.CountActive
+ 0001:000C63F0       TeEngine.TChartSeriesList.GetSeries
+ 0001:000C1E00       TeEngine.TChartValueList.AddChartValue
+ 0001:000C2394       TeEngine.TChartValueList.Assign
+ 0001:000C2158       TeEngine.TChartValueList.ClearValues
+ 0001:000C1D74       TeEngine.TChartValueList.Count
+ 0001:000C1CC0       TeEngine.TChartValueList.Create
+ 0001:000C1DA0       TeEngine.TChartValueList.Delete
+ 0001:000C1D44       TeEngine.TChartValueList.Destroy
+ 0001:000C221C       TeEngine.TChartValueList.FillSequence
+ 0001:000C1FB4       TeEngine.TChartValueList.GetMaxValue
+ 0001:000C1FDC       TeEngine.TChartValueList.GetMinValue
+ 0001:000C2004       TeEngine.TChartValueList.GetTotal
+ 0001:000C202C       TeEngine.TChartValueList.GetTotalABS
+ 0001:000C1F1C       TeEngine.TChartValueList.GetValue
+ 0001:000C1DCC       TeEngine.TChartValueList.InsertChartValue
+ 0001:000C1D7C       TeEngine.TChartValueList.Last
+ 0001:000C1F40       TeEngine.TChartValueList.Locate
+ 0001:000C2054       TeEngine.TChartValueList.RecalcStats
+ 0001:000C21A4       TeEngine.TChartValueList.Scroll
+ 0001:000C2148       TeEngine.TChartValueList.SetDateTime
+ 0001:000C1EE0       TeEngine.TChartValueList.SetMultiplier
+ 0001:000C1F80       TeEngine.TChartValueList.SetValue
+ 0001:000C21F4       TeEngine.TChartValueList.SetValueSource
+ 0001:000C236C       TeEngine.TChartValueList.Sort
+ 0001:000C332C       TeEngine.TChartValueLists.GetValueList
+ 0001:000C6CD0       TeEngine.TCustomAxisPanel.ActiveSeriesLegend
+ 0001:000C7B84       TeEngine.TCustomAxisPanel.Assign
+ 0001:000C6EF4       TeEngine.TCustomAxisPanel.CalcSize3DWalls
+ 0001:000C7B34       TeEngine.TCustomAxisPanel.CheckDatasource
+ 0001:000C7A3C       TeEngine.TCustomAxisPanel.CheckOtherSeries
+ 0001:000C6434       TeEngine.TCustomAxisPanel.Create
+ 0001:000C67FC       TeEngine.TCustomAxisPanel.Destroy
+ 0001:000C7908       TeEngine.TCustomAxisPanel.FormattedValueLegend
+ 0001:000C67CC       TeEngine.TCustomAxisPanel.FreeAllSeries
+ 0001:000C78A8       TeEngine.TCustomAxisPanel.GetAxisSeries
+ 0001:000C77AC       TeEngine.TCustomAxisPanel.GetChildren
+ 0001:000C7910       TeEngine.TCustomAxisPanel.GetFreeSeriesColor
+ 0001:000C79C8       TeEngine.TCustomAxisPanel.GetMaxValuesCount
+ 0001:000C6EDC       TeEngine.TCustomAxisPanel.GetSeries
+ 0001:000C7948       TeEngine.TCustomAxisPanel.InternalAddSeries
+ 0001:000C75C0       TeEngine.TCustomAxisPanel.InternalDraw
+ 0001:000C6950       TeEngine.TCustomAxisPanel.InternalMinMax
+ 0001:000C6864       TeEngine.TCustomAxisPanel.IsAxisVisible
+ 0001:000C7AFC       TeEngine.TCustomAxisPanel.IsValidDataSource
+ 0001:000C6E8C       TeEngine.TCustomAxisPanel.MaxMarkWidth
+ 0001:000C6DC0       TeEngine.TCustomAxisPanel.MaxTextWidth
+ 0001:000C6C70       TeEngine.TCustomAxisPanel.MaxXValue
+ 0001:000C6C88       TeEngine.TCustomAxisPanel.MaxYValue
+ 0001:000C6CA0       TeEngine.TCustomAxisPanel.MinXValue
+ 0001:000C6CB8       TeEngine.TCustomAxisPanel.MinYValue
+ 0001:000C6900       TeEngine.TCustomAxisPanel.NoActiveSeries
+ 0001:000C66AC       TeEngine.TCustomAxisPanel.NumPages
+ 0001:000C77FC       TeEngine.TCustomAxisPanel.RemovedDataSource
+ 0001:000C784C       TeEngine.TCustomAxisPanel.RemoveSeries
+ 0001:000C7B70       TeEngine.TCustomAxisPanel.SeriesCount
+ 0001:000C6D20       TeEngine.TCustomAxisPanel.SeriesTitleLegend
+ 0001:000C7A2C       TeEngine.TCustomAxisPanel.SetAxisVisible
+ 0001:000C7840       TeEngine.TCustomAxisPanel.SetBottomAxis
+ 0001:000C7800       TeEngine.TCustomAxisPanel.SetClipPoints
+ 0001:000C781C       TeEngine.TCustomAxisPanel.SetDepthAxis
+ 0001:000C7810       TeEngine.TCustomAxisPanel.SetLeftAxis
+ 0001:000C673C       TeEngine.TCustomAxisPanel.SetMaxPointsPerPage
+ 0001:000C6590       TeEngine.TCustomAxisPanel.SetPage
+ 0001:000C7828       TeEngine.TCustomAxisPanel.SetRightAxis
+ 0001:000C65E8       TeEngine.TCustomAxisPanel.SetScaleLastPage
+ 0001:000C7834       TeEngine.TCustomAxisPanel.SetTopAxis
+ 0001:000C779C       TeEngine.TCustomAxisPanel.SetView3DWalls
+ 0001:000BE904       TeEngine.TCustomChartAxis.AdjustMaxMin
+ 0001:000BE7FC       TeEngine.TCustomChartAxis.AdjustMaxMinRect
+ 0001:000BFFA0       TeEngine.TCustomChartAxis.ApplyPosition
+ 0001:000BE950       TeEngine.TCustomChartAxis.Assign
+ 0001:000BE2F0       TeEngine.TCustomChartAxis.CalcDateTimeIncrement
+ 0001:000BE708       TeEngine.TCustomChartAxis.CalcIncrement
+ 0001:000BE4D8       TeEngine.TCustomChartAxis.CalcLabelsIncrement
+ 0001:000BEC30       TeEngine.TCustomChartAxis.CalcLabelStyle
+ 0001:000BE8A8       TeEngine.TCustomChartAxis.CalcMinMax
+ 0001:000BE038       TeEngine.TCustomChartAxis.CalcPosPoint
+ 0001:000BFC90       TeEngine.TCustomChartAxis.CalcPosValue
+ 0001:000C1B4C       TeEngine.TCustomChartAxis.CalcRect
+ 0001:000BFCB8       TeEngine.TCustomChartAxis.CalcXPosValue
+ 0001:000BE688       TeEngine.TCustomChartAxis.CalcXYIncrement
+ 0001:000BFCFC       TeEngine.TCustomChartAxis.CalcYPosValue
+ 0001:000BFDE0       TeEngine.TCustomChartAxis.Clicked
+ 0001:000BDC28       TeEngine.TCustomChartAxis.Create
+ 0001:000BDF14       TeEngine.TCustomChartAxis.Destroy
+ 0001:000C1768       TeEngine.TCustomChartAxis.Draw
+ 0001:000BF688       TeEngine.TCustomChartAxis.DrawAxisLabel
+ 0001:000BF5EC       TeEngine.TCustomChartAxis.DrawTitle
+ 0001:000C001C       TeEngine.TCustomChartAxis.GetRectangleEdge
+ 0001:000BDE08       TeEngine.TCustomChartAxis.IncDecDateTime
+ 0001:000BFB34       TeEngine.TCustomChartAxis.InternalCalcDepthPosValue
+ 0001:000BFAB0       TeEngine.TCustomChartAxis.InternalCalcLog
+ 0001:000BFBB4       TeEngine.TCustomChartAxis.InternalCalcLogPosValue
+ 0001:000BFF50       TeEngine.TCustomChartAxis.InternalCalcPositions
+ 0001:000BFD44       TeEngine.TCustomChartAxis.InternalCalcPosValue
+ 0001:000C19D8       TeEngine.TCustomChartAxis.InternalCalcSize
+ 0001:000BF580       TeEngine.TCustomChartAxis.InternalSetMaximum
+ 0001:000BF464       TeEngine.TCustomChartAxis.InternalSetMinimum
+ 0001:000BF02C       TeEngine.TCustomChartAxis.IsAxisValuesFormatStored
+ 0001:000BDE44       TeEngine.TCustomChartAxis.IsDateTime
+ 0001:000BDFB4       TeEngine.TCustomChartAxis.IsEndStored
+ 0001:000BEF90       TeEngine.TCustomChartAxis.IsFontStored
+ 0001:000BE660       TeEngine.TCustomChartAxis.IsMaxStored
+ 0001:000BE674       TeEngine.TCustomChartAxis.IsMinStored
+ 0001:000BDF7C       TeEngine.TCustomChartAxis.IsPosStored
+ 0001:000BDF98       TeEngine.TCustomChartAxis.IsStartStored
+ 0001:000BE5D4       TeEngine.TCustomChartAxis.LabelHeight
+ 0001:000BEB3C       TeEngine.TCustomChartAxis.LabelValue
+ 0001:000BE544       TeEngine.TCustomChartAxis.LabelWidth
+ 0001:000BEF1C       TeEngine.TCustomChartAxis.MaxLabelsWidth
+ 0001:000BFEAC       TeEngine.TCustomChartAxis.RecalcSizeCenter
+ 0001:000BFA0C       TeEngine.TCustomChartAxis.Scroll
+ 0001:000BEFA0       TeEngine.TCustomChartAxis.SetAutomatic
+ 0001:000BEFFC       TeEngine.TCustomChartAxis.SetAutomaticMaximum
+ 0001:000BEFCC       TeEngine.TCustomChartAxis.SetAutomaticMinimum
+ 0001:000BDF08       TeEngine.TCustomChartAxis.SetAxis
+ 0001:000BE248       TeEngine.TCustomChartAxis.SetAxisTitle
+ 0001:000BE234       TeEngine.TCustomChartAxis.SetDateTimeFormat
+ 0001:000BF33C       TeEngine.TCustomChartAxis.SetDesiredIncrement
+ 0001:000BE274       TeEngine.TCustomChartAxis.SetEndPosition
+ 0001:000BF2F8       TeEngine.TCustomChartAxis.SetExactDateTime
+ 0001:000BDEDC       TeEngine.TCustomChartAxis.SetGrid
+ 0001:000BDEF4       TeEngine.TCustomChartAxis.SetGridCentered
+ 0001:000BF098       TeEngine.TCustomChartAxis.SetInverted
+ 0001:000BEF6C       TeEngine.TCustomChartAxis.SetLabels
+ 0001:000BF1F0       TeEngine.TCustomChartAxis.SetLabelsAngle
+ 0001:000BEF80       TeEngine.TCustomChartAxis.SetLabelsFont
+ 0001:000BE2C8       TeEngine.TCustomChartAxis.SetLabelsMultiLine
+ 0001:000BF2E4       TeEngine.TCustomChartAxis.SetLabelsOnAxis
+ 0001:000BF254       TeEngine.TCustomChartAxis.SetLabelsSeparation
+ 0001:000BF2BC       TeEngine.TCustomChartAxis.SetLabelsSize
+ 0001:000BF30C       TeEngine.TCustomChartAxis.SetLabelStyle
+ 0001:000BF118       TeEngine.TCustomChartAxis.SetLogarithmic
+ 0001:000BF0AC       TeEngine.TCustomChartAxis.SetLogarithmicBase
+ 0001:000BF480       TeEngine.TCustomChartAxis.SetMaximum
+ 0001:000BF3E4       TeEngine.TCustomChartAxis.SetMinimum
+ 0001:000BF500       TeEngine.TCustomChartAxis.SetMinMax
+ 0001:000BDEE8       TeEngine.TCustomChartAxis.SetMinorGrid
+ 0001:000BF5C4       TeEngine.TCustomChartAxis.SetMinorTickCount
+ 0001:000BF5B0       TeEngine.TCustomChartAxis.SetMinorTickLength
+ 0001:000BDEC4       TeEngine.TCustomChartAxis.SetMinorTicks
+ 0001:000BE294       TeEngine.TCustomChartAxis.SetPositionPercent
+ 0001:000BE2B4       TeEngine.TCustomChartAxis.SetRoundFirstLabel
+ 0001:000BE254       TeEngine.TCustomChartAxis.SetStartPosition
+ 0001:000BF5D8       TeEngine.TCustomChartAxis.SetTickInnerLength
+ 0001:000BF59C       TeEngine.TCustomChartAxis.SetTickLength
+ 0001:000BE2DC       TeEngine.TCustomChartAxis.SetTickOnLabelsOnly
+ 0001:000BDEB8       TeEngine.TCustomChartAxis.SetTicks
+ 0001:000BDED0       TeEngine.TCustomChartAxis.SetTicksInner
+ 0001:000BF2D0       TeEngine.TCustomChartAxis.SetTitleSize
+ 0001:000BF084       TeEngine.TCustomChartAxis.SetValuesFormat
+ 0001:000BF328       TeEngine.TCustomChartAxis.SetVisible
+ 0001:000C19C4       TeEngine.TCustomChartAxis.SizeLabels
+ 0001:000C1974       TeEngine.TCustomChartAxis.SizeTickAxis
+ 0001:000C19AC       TeEngine.TCustomChartAxis.SizeTitle
+ 0003:0000218C       TeEngine.TeeAxisClickGap
+ 0003:00002188       TeEngine.TeeCheckMarkArrowColor
+ 0003:00002190       TeEngine.TeeDefaultCapacity
+ 0003:00002184       TeEngine.TeeDrawAxisBeforeSeries
+ 0002:000007A4       TeEngine.TeEngine
+ 0001:000C704C       TeEngine.TryDrawSeries
+ 0001:000C1C70       TeEngine.TSeriesMarkPosition.Assign
+ 0001:000C1CA4       TeEngine.TSeriesMarkPosition.Bounds
+ 0001:000C24A0       TeEngine.TSeriesMarks.Assign
+ 0001:000C267C       TeEngine.TSeriesMarks.ClearPositions
+ 0001:000C257C       TeEngine.TSeriesMarks.Clicked
+ 0001:000C2404       TeEngine.TSeriesMarks.Create
+ 0001:000C26AC       TeEngine.TSeriesMarks.Destroy
+ 0001:000C28C8       TeEngine.TSeriesMarks.Draw
+ 0001:000C2514       TeEngine.TSeriesMarks.IsFontStored
+ 0001:000C2540       TeEngine.TSeriesMarks.SetArrow
+ 0001:000C254C       TeEngine.TSeriesMarks.SetArrowLength
+ 0001:000C255C       TeEngine.TSeriesMarks.SetBackColor
+ 0001:000C256C       TeEngine.TSeriesMarks.SetBackTransparent
+ 0001:000C271C       TeEngine.TSeriesMarks.SetClip
+ 0001:000C26F8       TeEngine.TSeriesMarks.SetFont
+ 0001:000C2534       TeEngine.TSeriesMarks.SetFrame
+ 0001:000C2708       TeEngine.TSeriesMarks.SetStyle
+ 0001:000C2524       TeEngine.TSeriesMarks.SetVisible
+ 0001:000C2614       TeEngine.TSeriesMarks.UsePosition
+ 0001:000C23D8       TeEngine.TSeriesMarksPositions.GetPosition
+ 0001:000C2FB8       TeEngine.TTeeFunction.AddFunctionXY
+ 0001:000C3148       TeEngine.TTeeFunction.AddPoints
+ 0001:000C3234       TeEngine.TTeeFunction.Assign
+ 0001:000C2B6C       TeEngine.TTeeFunction.Calculate
+ 0001:000C2BFC       TeEngine.TTeeFunction.CalculateAllPoints
+ 0001:000C2DD4       TeEngine.TTeeFunction.CalculateByPeriod
+ 0001:000C3220       TeEngine.TTeeFunction.CalculateMany
+ 0001:000C2D90       TeEngine.TTeeFunction.CalculatePeriod
+ 0001:000C2B08       TeEngine.TTeeFunction.Create
+ 0001:000C3318       TeEngine.TTeeFunction.GetParentComponent
+ 0001:000C3328       TeEngine.TTeeFunction.HasParent
+ 0001:000C2B54       TeEngine.TTeeFunction.ReCalculate
+ 0001:000C331C       TeEngine.TTeeFunction.SetParentComponent
+ 0001:000C31FC       TeEngine.TTeeFunction.SetParentSeries
+ 0001:000C326C       TeEngine.TTeeFunction.SetPeriod
+ 0001:000C32F8       TeEngine.TTeeFunction.SetPeriodAlign
+ 0001:000C3308       TeEngine.TTeeFunction.SetPeriodStyle
+ 0001:000C2B84       TeEngine.TTeeFunction.ValueList
+ 0001:000C4F48       TeEngine.XLabelOrValue
+ 0004:0000367C       TeeProcs..9
+ 0001:000B90A4       TeeProcs..ChartException
+ 0001:000B96F0       TeeProcs..TChartFontObject
+ 0001:000B9428       TeeProcs..TChartGradient
+ 0001:000B938C       TeeProcs..TCustomTeeGradient
+ 0001:000B91AC       TeeProcs..TCustomTeePanel
+ 0001:000B9548       TeeProcs..TCustomTeePanelExtended
+ 0001:000B9100       TeeProcs..TZoomPanningRecord
+ 0003:00002160       TeeProcs.BrushColors
+ 0001:000BAA44       TeeProcs.Calc3DRect
+ 0001:000B987C       TeeProcs.CheckJapaneseFontSize
+ 0003:0000203C       TeeProcs.ColorPalette
+ 0003:00002168       TeeProcs.Colors
+ 0001:000B9A00       TeeProcs.CreateDefaultFont
+ 0001:000B9788       TeeProcs.DateTimeDefaultFormat
+ 0003:00002090       TeeProcs.DateTimeStep
+ 0001:000BB540       TeeProcs.DecMonths
+ 0001:000BAFC0       TeeProcs.Dif
+ 0003:00002170       TeeProcs.Extensions
+ 0001:000BB990       TeeProcs.Finalization
+ 0001:000B9810       TeeProcs.FindDateTimeStep
+ 0001:000B9A90       TeeProcs.GetDefaultColor
+ 0001:000B990C       TeeProcs.GetDefaultFontName
+ 0001:000B98AC       TeeProcs.GetDefaultFontSize
+ 0001:000B9858       TeeProcs.GetScreenLogPixels
+ 0001:000BB5AC       TeeProcs.IncDecMonths
+ 0001:000BB57C       TeeProcs.IncMonths
+ 0001:000B9958       TeeProcs.IsDefaultFont
+ 0001:000BB87C       TeeProcs.LoadClassBitmap
+ 0001:000B9844       TeeProcs.MaxLong
+ 0001:000B97C8       TeeProcs.NextDateTimeStep
+ 0001:000BB318       TeeProcs.PointInEllipse
+ 0001:000BB298       TeeProcs.PointInHorizTriangle
+ 0001:000BB164       TeeProcs.PointInLine
+ 0001:000BAFD0       TeeProcs.PointInLineTolerance
+ 0001:000BB17C       TeeProcs.PointInPolygon
+ 0001:000BB218       TeeProcs.PointInTriangle
+ 0003:0000208C       TeeProcs.PrintTeePanel
+ 0001:000B984C       TeeProcs.SwapLongint
+ 0001:000BAEF0       TeeProcs.TChartFontObject.Assign
+ 0001:000BAE54       TeeProcs.TChartFontObject.Create
+ 0001:000BAEC0       TeeProcs.TChartFontObject.Destroy
+ 0001:000BAEB0       TeeProcs.TChartFontObject.IsFontStored
+ 0001:000BAF34       TeeProcs.TChartFontObject.Repaint
+ 0001:000BAF24       TeeProcs.TChartFontObject.SetFont
+ 0001:000BAE10       TeeProcs.TCustomTeeGradient.Assign
+ 0001:000BAD40       TeeProcs.TCustomTeeGradient.Create
+ 0001:000BADB0       TeeProcs.TCustomTeeGradient.SetDirection
+ 0001:000BADF0       TeeProcs.TCustomTeeGradient.SetEndColor
+ 0001:000BADD0       TeeProcs.TCustomTeeGradient.SetStartColor
+ 0001:000BAD90       TeeProcs.TCustomTeeGradient.SetVisible
+ 0001:000BA49C       TeeProcs.TCustomTeePanel.Assign
+ 0001:000B9F68       TeeProcs.TCustomTeePanel.CanClip
+ 0001:000B9CFC       TeeProcs.TCustomTeePanel.CanvasChanged
+ 0001:000BA644       TeeProcs.TCustomTeePanel.CheckPenWidth
+ 0001:000BA124       TeeProcs.TCustomTeePanel.CMMouseLeave
+ 0001:000BA5DC       TeeProcs.TCustomTeePanel.CopyToClipboardBitmap
+ 0001:000B9B20       TeeProcs.TCustomTeePanel.Create
+ 0001:000B9D0C       TeeProcs.TCustomTeePanel.CreateParams
+ 0001:000B9CA8       TeeProcs.TCustomTeePanel.Destroy
+ 0001:000B9D44       TeeProcs.TCustomTeePanel.Draw
+ 0001:000BA674       TeeProcs.TCustomTeePanel.DrawPanelBevels
+ 0001:000BA3F0       TeeProcs.TCustomTeePanel.DrawZoomRectangle
+ 0001:000B9F4C       TeeProcs.TCustomTeePanel.FontCanvas
+ 0001:000BA344       TeeProcs.TCustomTeePanel.GetBufferedDisplay
+ 0001:000BA2E8       TeeProcs.TCustomTeePanel.GetMargin
+ 0001:000BA484       TeeProcs.TCustomTeePanel.GetMonochrome
+ 0001:000BA470       TeeProcs.TCustomTeePanel.GetRectangle
+ 0001:000BA17C       TeeProcs.TCustomTeePanel.Invalidate
+ 0001:000BA10C       TeeProcs.TCustomTeePanel.Loaded
+ 0001:000BA1A8       TeeProcs.TCustomTeePanel.MultiLineTextWidth
+ 0001:000B9E8C       TeeProcs.TCustomTeePanel.Paint
+ 0001:000BA35C       TeeProcs.TCustomTeePanel.ReCalcWidthHeight
+ 0001:000B9FC4       TeeProcs.TCustomTeePanel.Set3DPercent
+ 0001:000BA0DC       TeeProcs.TCustomTeePanel.SetBooleanProperty
+ 0001:000B9ED0       TeeProcs.TCustomTeePanel.SetBrushCanvas
+ 0001:000BA350       TeeProcs.TCustomTeePanel.SetBufferedDisplay
+ 0001:000BA0C4       TeeProcs.TCustomTeePanel.SetColorProperty
+ 0001:000BA098       TeeProcs.TCustomTeePanel.SetDoubleProperty
+ 0001:000BA0F4       TeeProcs.TCustomTeePanel.SetIntegerProperty
+ 0001:000BA054       TeeProcs.TCustomTeePanel.SetLongintProperty
+ 0001:000BA308       TeeProcs.TCustomTeePanel.SetMargin
+ 0001:000BA490       TeeProcs.TCustomTeePanel.SetMonochrome
+ 0001:000BA06C       TeeProcs.TCustomTeePanel.SetStringProperty
+ 0001:000B9D34       TeeProcs.TCustomTeePanel.SetView3D
+ 0001:000B9D24       TeeProcs.TCustomTeePanel.SetView3DOptions
+ 0001:000BA54C       TeeProcs.TCustomTeePanel.TeeCreateBitmap
+ 0001:000BA160       TeeProcs.TCustomTeePanel.WMEraseBkgnd
+ 0001:000BA150       TeeProcs.TCustomTeePanel.WMGetDlgCode
+ 0001:000BA8DC       TeeProcs.TCustomTeePanelExtended.Assign
+ 0001:000BA7D0       TeeProcs.TCustomTeePanelExtended.Create
+ 0001:000BA864       TeeProcs.TCustomTeePanelExtended.Destroy
+ 0001:000BAACC       TeeProcs.TCustomTeePanelExtended.DrawBitmap
+ 0001:000BAC50       TeeProcs.TCustomTeePanelExtended.DrawImage
+ 0001:000BACB4       TeeProcs.TCustomTeePanelExtended.FillPanelRect
+ 0001:000BA968       TeeProcs.TCustomTeePanelExtended.GetPalette
+ 0001:000BAC64       TeeProcs.TCustomTeePanelExtended.PanelPaint
+ 0001:000BA780       TeeProcs.TCustomTeePanelExtended.SetAnimatedZoom
+ 0001:000BA790       TeeProcs.TCustomTeePanelExtended.SetAnimatedZoomSteps
+ 0001:000BA7A0       TeeProcs.TCustomTeePanelExtended.SetBackImage
+ 0001:000BA7B0       TeeProcs.TCustomTeePanelExtended.SetBackImageMode
+ 0001:000BA8D0       TeeProcs.TCustomTeePanelExtended.SetGradient
+ 0001:000BA8A0       TeeProcs.TCustomTeePanelExtended.UndoZoom
+ 0001:000B9AA8       TeeProcs.TeeCheckAngle
+ 0003:00002084       TeeProcs.TeeClipWhenMetafiling
+ 0003:00002080       TeeProcs.TeeClipWhenPrinting
+ 0001:000BB5D0       TeeProcs.TeeDateTimeIncrement
+ 0003:00002088       TeeProcs.TeeEraseBack
+ 0001:000BB974       TeeProcs.TeeGetClassNameBitmap
+ 0003:0000207C       TeeProcs.TeeLineSeparator
+ 0001:000BB704       TeeProcs.TeeNextStep
+ 0001:000BB3F8       TeeProcs.TeeNumTextLines
+ 0002:00000764       TeeProcs.TeeProcs
+ 0001:000BB4A0       TeeProcs.TeeRoundDate
+ 0001:000BB3C8       TeeProcs.TeeSplitInLines
+ 0001:000BA9A4       TeeProcs.TileBitmap
+ 0001:000BB7D8       TeeProcs.TryFindResource
+ 0001:000BAF70       TeeProcs.TZoomPanningRecord.Activate
+ 0001:000BAF44       TeeProcs.TZoomPanningRecord.Check
+ 0004:0000352C       Themes..2
+ 0001:000557D4       Themes..TThemeServices
+ 0003:000018B4       Themes.Copyright
+ 0001:000565DC       Themes.Finalization
+ 0004:00003530       Themes.InternalServices
+ 0003:000018B8       Themes.ThemeDataNames
+ 0002:00000578       Themes.Themes
+ 0001:000559FC       Themes.ThemeServices
+ 0003:000018B0       Themes.ThemeServicesClass
+ 0001:00055B60       Themes.TThemeServices.ApplyThemeChange
+ 0001:00055B74       Themes.TThemeServices.ContentRect
+ 0001:00055A1C       Themes.TThemeServices.Create
+ 0001:00055A90       Themes.TThemeServices.Destroy
+ 0001:00055B1C       Themes.TThemeServices.DoOnThemeChange
+ 0001:00055BC4       Themes.TThemeServices.DrawEdge
+ 0001:00055C10       Themes.TThemeServices.DrawElement
+ 0001:00055C54       Themes.TThemeServices.DrawIcon
+ 0001:00055C9C       Themes.TThemeServices.DrawParentBackground
+ 0001:00055D04       Themes.TThemeServices.DrawText
+ 0001:00055E2C       Themes.TThemeServices.GetElementDetails
+ 0001:00055F18       Themes.TThemeServices.GetElementDetails
+ 0001:00056030       Themes.TThemeServices.GetElementDetails
+ 0001:00055DF0       Themes.TThemeServices.GetElementDetails
+ 0001:00055D6C       Themes.TThemeServices.GetElementDetails
+ 0001:000560C8       Themes.TThemeServices.GetElementDetails
+ 0001:00055EC8       Themes.TThemeServices.GetElementDetails
+ 0001:00055AC4       Themes.TThemeServices.GetTheme
+ 0001:00055B04       Themes.TThemeServices.GetThemesEnabled
+ 0001:00056454       Themes.TThemeServices.PaintBorder
+ 0001:00055B30       Themes.TThemeServices.UnloadThemeData
+ 0001:000565C0       Themes.TThemeServices.UpdateThemes
+ 0001:00087C38       ToolWin..TToolDockForm
+ 0001:00087AC0       ToolWin..TToolWindow
+ 0003:00001D5C       ToolWin.Ctl3DStyles
+ 0003:00001D44       ToolWin.InnerStyles
+ 0001:000882B4       ToolWin.ModifySystemMenu
+ 0003:00001D50       ToolWin.OuterStyles
+ 0001:00088108       ToolWin.TToolDockForm.CanResize
+ 0001:000880A8       ToolWin.TToolDockForm.Create
+ 0001:000880F4       ToolWin.TToolDockForm.CreateParams
+ 0001:00088290       ToolWin.TToolDockForm.DoAddDockClient
+ 0001:00088334       ToolWin.TToolDockForm.WMNCCreate
+ 0001:00088358       ToolWin.TToolDockForm.WMNCHitTest
+ 0001:00088454       ToolWin.TToolDockForm.WMNCLButtonDown
+ 0001:00088488       ToolWin.TToolDockForm.WMSize
+ 0001:000884C8       ToolWin.TToolDockForm.WMSysCommand
+ 0001:00088064       ToolWin.TToolWindow.CMBorderChanged
+ 0001:00088080       ToolWin.TToolWindow.CMCtl3DChanged
+ 0001:00087DE4       ToolWin.TToolWindow.Create
+ 0001:00087E98       ToolWin.TToolWindow.NCPaint
+ 0001:00087E48       ToolWin.TToolWindow.SetEdgeBorders
+ 0001:00087E70       ToolWin.TToolWindow.SetEdgeInner
+ 0001:00087E84       ToolWin.TToolWindow.SetEdgeOuter
+ 0001:00087F84       ToolWin.TToolWindow.WMNCCalcSize
+ 0001:00088000       ToolWin.TToolWindow.WMNCPaint
+ 0004:000048E4       Trpcb..9
+ 0001:001237BC       Trpcb..EBrokerError
+ 0001:00123898       Trpcb..TMult
+ 0001:0012393C       Trpcb..TParamRecord
+ 0001:001239FC       Trpcb..TParams
+ 0001:00123CE0       Trpcb..TRPCBroker
+ 0001:00123830       Trpcb..TString
+ 0001:00123AA0       Trpcb..TVistaLogin
+ 0001:00123C34       Trpcb..TVistaUser
+ 0001:00125B80       Trpcb.AuthenticateUser
+ 0004:000048E0       Trpcb.BrokerAllConnections
+ 0004:000048DC       Trpcb.BrokerConnections
+ 0003:00003290       Trpcb.CURRENT_RPC_VERSION
+ 0004:000048D8       Trpcb.DebugData
+ 0003:00003294       Trpcb.DEFAULT_PULSE
+ 0001:00125B78       Trpcb.ExistingSocket
+ 0001:001266D8       Trpcb.Finalization
+ 0001:00126208       Trpcb.GetAppHandle
+ 0001:00125FDC       Trpcb.GetBrokerInfo
+ 0003:00003298       Trpcb.MINIMUM_TIMEOUT
+ 0003:0000328C       Trpcb.MIN_RPCTIMELIMIT
+ 0003:00003288       Trpcb.NoMore
+ 0001:00126144       Trpcb.NoSignOnNeeded
+ 0001:00126148       Trpcb.ProcessExecute
+ 0003:0000329C       Trpcb.PULSE_PERCENTAGE
+ 0001:00125A90       Trpcb.RemoveConnection
+ 0001:00126600       Trpcb.ShowApplicationAndFocusOK
+ 0001:00125920       Trpcb.StoreConnection
+ 0001:0012408C       Trpcb.TMult.Assign
+ 0001:001241EC       Trpcb.TMult.ClearAll
+ 0001:0012400C       Trpcb.TMult.Create
+ 0001:00124050       Trpcb.TMult.Destroy
+ 0001:00124230       Trpcb.TMult.GetCount
+ 0001:0012424C       Trpcb.TMult.GetFirst
+ 0001:001242B0       Trpcb.TMult.GetFMultiple
+ 0001:00124278       Trpcb.TMult.GetLast
+ 0001:001245AC       Trpcb.TMult.Order
+ 0001:00124644       Trpcb.TMult.Position
+ 0001:00124504       Trpcb.TMult.SetFMultiple
+ 0001:00124650       Trpcb.TMult.Subscript
+ 0001:00124684       Trpcb.TParamRecord.Create
+ 0001:001246F4       Trpcb.TParamRecord.Destroy
+ 0001:001247A8       Trpcb.TParams.Assign
+ 0001:0012483C       Trpcb.TParams.Clear
+ 0001:00124728       Trpcb.TParams.Create
+ 0001:0012476C       Trpcb.TParams.Destroy
+ 0001:0012488C       Trpcb.TParams.GetCount
+ 0001:001248A8       Trpcb.TParams.GetParameter
+ 0002:00000E20       Trpcb.Trpcb
+ 0001:00124EEC       Trpcb.TRPCBroker.Call
+ 0001:00124910       Trpcb.TRPCBroker.Create
+ 0001:00124C6C       Trpcb.TRPCBroker.CreateContext
+ 0001:00124BD4       Trpcb.TRPCBroker.Destroy
+ 0001:00126254       Trpcb.TRPCBroker.DoPulseOnTimer
+ 0001:00124EE4       Trpcb.TRPCBroker.Loaded
+ 0001:00124F64       Trpcb.TRPCBroker.lstCall
+ 0001:001255C4       Trpcb.TRPCBroker.pchCall
+ 0001:001254F8       Trpcb.TRPCBroker.SetClearParameters
+ 0001:00125518       Trpcb.TRPCBroker.SetClearResults
+ 0001:00124FA4       Trpcb.TRPCBroker.SetConnected
+ 0001:0012642C       Trpcb.TRPCBroker.SetKernelLogIn
+ 0001:00125538       Trpcb.TRPCBroker.SetResults
+ 0001:00125548       Trpcb.TRPCBroker.SetRPCTimeLimit
+ 0001:00125570       Trpcb.TRPCBroker.SetServer
+ 0001:00126434       Trpcb.TRPCBroker.SetUser
+ 0001:00124F84       Trpcb.TRPCBroker.strCall
+ 0001:0012643C       Trpcb.TVistaLogin.Create
+ 0001:00126480       Trpcb.TVistaLogin.Destroy
+ 0001:001264B4       Trpcb.TVistaLogin.FailedLogin
+ 0001:001264DC       Trpcb.TVistaLogin.SetAccessCode
+ 0001:001264F0       Trpcb.TVistaLogin.SetDivision
+ 0001:00126504       Trpcb.TVistaLogin.SetDuz
+ 0001:00126518       Trpcb.TVistaLogin.SetErrorText
+ 0001:0012652C       Trpcb.TVistaLogin.SetLogInHandle
+ 0001:00126540       Trpcb.TVistaLogin.SetMode
+ 0001:00126544       Trpcb.TVistaLogin.SetMultiDivision
+ 0001:00126548       Trpcb.TVistaLogin.SetPromptDiv
+ 0001:0012654C       Trpcb.TVistaLogin.SetVerifyCode
+ 0001:00126560       Trpcb.TVistaUser.SetDivision
+ 0001:00126574       Trpcb.TVistaUser.SetDTime
+ 0001:00126588       Trpcb.TVistaUser.SetDUZ
+ 0001:0012659C       Trpcb.TVistaUser.SetLanguage
+ 0001:001265B0       Trpcb.TVistaUser.SetName
+ 0001:001265C4       Trpcb.TVistaUser.SetServiceSection
+ 0001:001265D8       Trpcb.TVistaUser.SetStandardName
+ 0001:001265EC       Trpcb.TVistaUser.SetTitle
+ 0001:00006834       Types.Bounds
+ 0001:00006850       Types.CenterPoint
+ 0001:000067A4       Types.IntersectRect
+ 0001:00006804       Types.IsRectEmpty
+ 0001:0000681C       Types.OffsetRect
+ 0001:00006784       Types.Point
+ 0001:00006768       Types.Rect
+ 0001:0000678C       Types.SmallPoint
+ 0004:000032E0       TypInfo..6
+ 0001:00019C20       TypInfo..EPropertyConvertError
+ 0001:00019BC4       TypInfo..EPropertyError
+ 0001:00019B0C       TypInfo..TPublishableVariantType
+ 0001:0001AFF0       TypInfo.AssignLongStr
+ 0001:0001B674       TypInfo.AssignVariant
+ 0003:00000CE8       TypInfo.BooleanIdents
+ 0003:00000CF0       TypInfo.DotSep
+ 0001:0001BA58       TypInfo.Finalization
+ 0001:00019D58       TypInfo.FindPropInfo
+ 0001:0001B8D8       TypInfo.GetAccessToProperty
+ 0001:0001B95C       TypInfo.GetDynArrayProp
+ 0001:0001A5C8       TypInfo.GetEnumName
+ 0001:0001A6A0       TypInfo.GetEnumNameValue
+ 0001:0001AC00       TypInfo.GetEnumProp
+ 0001:0001A6EC       TypInfo.GetEnumValue
+ 0001:0001B364       TypInfo.GetFloatProp
+ 0001:0001B780       TypInfo.GetInt64Prop
+ 0001:0001B7E4       TypInfo.GetInterfaceProp
+ 0001:0001B004       TypInfo.GetLongStrProp
+ 0001:0001B708       TypInfo.GetMethodProp
+ 0001:0001AEC8       TypInfo.GetObjectProp
+ 0001:00019DC0       TypInfo.GetObjectProp
+ 0001:00019D80       TypInfo.GetOrdProp
+ 0001:0001AA00       TypInfo.GetOrdProp
+ 0001:0001A750       TypInfo.GetPropInfo
+ 0001:00019D18       TypInfo.GetPropInfo
+ 0001:0001A7C0       TypInfo.GetPropInfo
+ 0001:00019D38       TypInfo.GetPropInfo
+ 0001:0001A7FC       TypInfo.GetPropInfos
+ 0001:0001A8F8       TypInfo.GetPropList
+ 0001:0001A99C       TypInfo.GetPropList
+ 0001:00019E08       TypInfo.GetPropValue
+ 0001:00019E5C       TypInfo.GetPropValue
+ 0001:0001AAD0       TypInfo.GetSetElementName
+ 0001:0001AB60       TypInfo.GetSetElementValue
+ 0001:0001AC74       TypInfo.GetSetProp
+ 0001:0001AEFC       TypInfo.GetShortStrProp
+ 0001:0001AF94       TypInfo.GetShortStrPropAsLongStr
+ 0001:0001B134       TypInfo.GetStrProp
+ 0001:0001A5BC       TypInfo.GetTypeData
+ 0001:0001B688       TypInfo.GetVariantProp
+ 0001:0001B1A4       TypInfo.GetWideStrProp
+ 0001:0001B084       TypInfo.GetWideStrPropAsLongStr
+ 0001:00019CF4       TypInfo.IsPublishedProp
+ 0001:0001A9D0       TypInfo.IsStoredProp
+ 0001:0001AD88       TypInfo.NextWord
+ 0001:00019CB0       TypInfo.PropertyNotFound
+ 0001:0001A128       TypInfo.RangedCharValue
+ 0001:0001A0D0       TypInfo.RangedValue
+ 0001:00019CDC       TypInfo.RangeError
+ 0001:0001B9F8       TypInfo.SetDynArrayProp
+ 0001:0001AC24       TypInfo.SetEnumProp
+ 0001:0001B47C       TypInfo.SetFloatProp
+ 0001:0001B7A8       TypInfo.SetInt64Prop
+ 0001:0001B864       TypInfo.SetInterfaceProp
+ 0001:0001B044       TypInfo.SetLongStrProp
+ 0001:0001B748       TypInfo.SetMethodProp
+ 0001:00019D9C       TypInfo.SetOrdProp
+ 0001:0001AA74       TypInfo.SetOrdProp
+ 0001:0001A258       TypInfo.SetPropValue
+ 0001:0001A098       TypInfo.SetPropValue
+ 0001:0001AEA4       TypInfo.SetSetProp
+ 0001:0001AF40       TypInfo.SetShortStrProp
+ 0001:0001AFBC       TypInfo.SetShortStrPropAsLongStr
+ 0001:00019DE4       TypInfo.SetStrProp
+ 0001:0001B174       TypInfo.SetStrProp
+ 0001:0001ACA0       TypInfo.SetToString
+ 0001:0001B6C8       TypInfo.SetVariantProp
+ 0001:0001B28C       TypInfo.SetWideStrProp
+ 0001:0001B0DC       TypInfo.SetWideStrPropAsLongStr
+ 0001:0001A850       TypInfo.SortPropList
+ 0001:0001ADCC       TypInfo.StringToSet
+ 0001:0001A524       TypInfo.TPublishableVariantType.GetProperty
+ 0001:0001A594       TypInfo.TPublishableVariantType.SetProperty
+ 0002:00000228       TypInfo.TypInfo
+ 0001:003383F4       UBACore.AttachDxToOrderList
+ 0001:00339274       UBACore.AttachPLTFactorsToDx
+ 0001:00337EF8       UBACore.BADxEntered
+ 0004:000063F0       UBACore.BADxList
+ 0001:003394AC       UBACore.BALoadStsFlagsAsIs
+ 0001:0033B84C       UBACore.BuildConsultDxRec
+ 0001:00339C50       UBACore.BuildSaveUnsignedList
+ 0001:0033A0EC       UBACore.BuildTFHintRec
+ 0001:0033A95C       UBACore.ClearSelectedOrderDiagnoses
+ 0001:0033AF8C       UBACore.CompleteConsultOrderRec
+ 0001:00339DA4       UBACore.CompleteUnsignedBillingInfo
+ 0001:0033B988       UBACore.ConvertPIMTreatmentFactors
+ 0001:0033BB74       UBACore.DeleteDCOrdersFromCopiedList
+ 0001:0033B6A0       UBACore.GetBAStatus
+ 0001:0033B1D4       UBACore.GetConsultFlags
+ 0001:00339FE8       UBACore.GetUnsignedOrderFlags
+ 0001:0033A7D8       UBACore.IsAllOrdersNA
+ 0001:003388D8       UBACore.IsCIDCProvider
+ 0001:0033B724       UBACore.IsICD9CodeActive
+ 0001:0033827C       UBACore.IsOrderBillable
+ 0001:0033AAA0       UBACore.LoadConsultOrderRec
+ 0001:0033904C       UBACore.LoadUnsignedOrderRec
+ 0001:00339A1C       UBACore.OrderRequiresSCEI
+ 0001:00338F10       UBACore.OrdersHaveDx
+ 0001:0033A8BC       UBACore.PrepOrderID
+ 0001:0033BD4C       UBACore.ProcessProblemTFactors
+ 0001:00338604       UBACore.rpcAddToPersonalDxList
+ 0001:00338CA0       UBACore.rpcBuildSCIEList
+ 0001:003386FC       UBACore.rpcDeleteFromPersonalDxList
+ 0001:00338924       UBACore.rpcGetBAMasterSwStatus
+ 0001:003386A4       UBACore.rpcGetPersonalDxList
+ 0001:00338A30       UBACore.rpcGetProviderPatientDaysDx
+ 0001:003389C0       UBACore.rpcGetSC4Orders
+ 0001:00338B04       UBACore.rpcGetTFHintData
+ 0001:00339C94       UBACore.rpcGetUnsignedOrdersBillingData
+ 0001:00338E70       UBACore.rpcIsPatientInsured
+ 0001:00338B4C       UBACore.rpcNonBillableOrders
+ 0001:003380B0       UBACore.rpcOrderRequiresDx
+ 0001:00339B34       UBACore.rpcRetrieveSelectedOrderInfo
+ 0001:00338DEC       UBACore.rpcSaveCIDCData
+ 0001:003389B8       UBACore.rpcSaveNurseConsultOrder
+ 0001:00338794       UBACore.rpcSetBillingAwareSwitch
+ 0001:003383BC       UBACore.SaveBillingData
+ 0001:00339AE8       UBACore.SaveUnsignedOrders
+ 0001:0033B2C4       UBACore.SetConsultFlags
+ 0001:003395CC       UBACore.SetTreatmentFactors
+ 0001:00339980       UBACore.StripTFactors
+ 0004:000063E4       UBACore.uAddToPDl
+ 0004:000063E8       UBACore.uDeleteFromPDL
+ 0004:000063EC       UBACore.uDxLst
+ 0001:0033BC80       UBACore.VerifyOrderIdExists
+ 0004:0000666C       UBAGlobals..31
+ 0001:00389840       UBAGlobals..TBAConsultOrderRec
+ 0001:00389660       UBAGlobals..TBADxRecord
+ 0001:003898DC       UBAGlobals..TBAFactorsRec
+ 0001:00389980       UBAGlobals..TBAPLFactorsIN
+ 0001:003895E8       UBAGlobals..TBAPLPt
+ 0001:0038971C       UBAGlobals..TBATreatmentFactorsInRec
+ 0001:003897A4       UBAGlobals..TBAUnsignedBillingRec
+ 0001:0038A40C       UBAGlobals.AllSelectedDxBlank
+ 0004:0000661C       UBAGlobals.AO
+ 0004:0000665C       UBAGlobals.BAConsultDxList
+ 0004:00006660       UBAGlobals.BAConsultPLFlags
+ 0004:000065FC       UBAGlobals.BACopiedOrderFlags
+ 0001:00389B90       UBAGlobals.BACopyOrder
+ 0004:00006668       UBAGlobals.BADeltedOrders
+ 0004:000065A8       UBAGlobals.BADiagnosisList
+ 0004:000065C8       UBAGlobals.BAFactorsInRec
+ 0004:000065CC       UBAGlobals.BAFactorsRec
+ 0004:000065EC       UBAGlobals.BAFlagsIN
+ 0004:000065F0       UBAGlobals.BAFlagsOUT
+ 0004:00006664       UBAGlobals.BAFWarningShown
+ 0004:0000663C       UBAGlobals.BAHoldPrimaryDx
+ 0004:000065AC       UBAGlobals.BALocation
+ 0004:00006600       UBAGlobals.BANurseConsultOrders
+ 0004:000065E0       UBAGlobals.BAOrderID
+ 0004:000065B4       UBAGlobals.BAOrderIDList
+ 0004:000065D0       UBAGlobals.BAOrderList
+ 0004:000065B0       UBAGlobals.BAPCEDiagList
+ 0004:00006665       UBAGlobals.BAPersonalDX
+ 0004:0000659C       UBAGlobals.BAPLPt
+ 0004:000065A0       UBAGlobals.BAPLRec
+ 0004:00006640       UBAGlobals.BAPrimaryDxChanged
+ 0004:00006658       UBAGlobals.BASelectedList
+ 0004:00006654       UBAGlobals.BATFHints
+ 0004:000065E8       UBAGlobals.BAtmpOrderList
+ 0004:00006650       UBAGlobals.BAUnSignedOrders
+ 0004:000065E4       UBAGlobals.BILLING_AWARE
+ 0004:000065D8       UBAGlobals.ChangeItemOrderNum
+ 0001:0038A9E4       UBAGlobals.CompareOrderDx
+ 0004:000065C4       UBAGlobals.ConsultOrderRec
+ 0001:0038A0A0       UBAGlobals.CopyDxRecord
+ 0001:00389AEC       UBAGlobals.CopyTFCIToTargetOrder
+ 0001:00389D04       UBAGlobals.CopyTreatmentFactorsDxsToCopiedOrder
+ 0001:00389E20       UBAGlobals.CopyTreatmentFactorsDxsToRenewedOrder
+ 0001:0038A7F4       UBAGlobals.CountSelectedOrders
+ 0004:0000662C       UBAGlobals.CV
+ 0001:0038A68C       UBAGlobals.DiagnosesMatch
+ 0004:00006604       UBAGlobals.Dx1
+ 0004:00006608       UBAGlobals.Dx2
+ 0004:0000660C       UBAGlobals.Dx3
+ 0004:00006610       UBAGlobals.Dx4
+ 0004:00006634       UBAGlobals.EC
+ 0001:0038BE24       UBAGlobals.Finalization
+ 0001:0038AF8C       UBAGlobals.GetBADxListForOrder
+ 0001:0038BDC0       UBAGlobals.GetPatientTFactors
+ 0004:000065BC       UBAGlobals.globalDxRec
+ 0004:00006628       UBAGlobals.HNC
+ 0001:0038B348       UBAGlobals.InitializeConsultOrderRec
+ 0001:0038B3A0       UBAGlobals.InitializeNewDxRec
+ 0001:0038B3F8       UBAGlobals.InitializeUnsignedOrderRec
+ 0004:00006620       UBAGlobals.IR
+ 0001:0038BD60       UBAGlobals.IsUserNurseProvider
+ 0004:00006624       UBAGlobals.MST
+ 0004:00006644       UBAGlobals.NonBillableOrderList
+ 0004:000065DC       UBAGlobals.OrderIDList
+ 0004:00006648       UBAGlobals.OrderListSCEI
+ 0004:00006638       UBAGlobals.PLFactorsIndexes
+ 0004:000065A4       UBAGlobals.PLlist
+ 0001:00389F14       UBAGlobals.PutBADxListForOrder
+ 0001:00389A18       UBAGlobals.RemoveOrderFromDxList
+ 0004:00006618       UBAGlobals.SC
+ 0001:0038B1A8       UBAGlobals.SetBADxListForOrder
+ 0004:00006630       UBAGlobals.SHD
+ 0001:0038B148       UBAGlobals.SimpleAddTempDxList
+ 0004:000065F4       UBAGlobals.SourceOrderID
+ 0004:000065F8       UBAGlobals.TargetOrderID
+ 0001:0038B948       UBAGlobals.TBAPLPt.Create
+ 0001:0038BBB0       UBAGlobals.TBAPLPt.LoadPatientParams
+ 0001:0038BBF0       UBAGlobals.TBAPLPt.rpcInitPt
+ 0001:0038B450       UBAGlobals.TBAPLRec.BuildProblemListDxEntry
+ 0004:000065B8       UBAGlobals.tempDxList
+ 0001:0038BC44       UBAGlobals.tempDxNodeExists
+ 0004:00006614       UBAGlobals.TFactors
+ 0002:00001C84       UBAGlobals.UBAGlobals
+ 0004:000065C0       UBAGlobals.UnsignedBillingRec
+ 0004:0000664C       UBAGlobals.UnsignedOrders
+ 0004:000065D4       UBAGlobals.UpdatedBAOrderList
+ 0001:001B767C       uCaseTree.BuildCaseTree
+ 0001:001B6DD8       uCaseTree.CreateListItemsForCaseTree
+ 0001:001B7DF0       uCaseTree.KillCaseTreeNode
+ 0001:001B7D74       uCaseTree.KillCaseTreeObjects
+ 0001:001B7EAC       uCaseTree.MakeCaseTreeObject
+ 0001:001B7E24       uCaseTree.RemoveParentsWithNoChildren
+ 0001:001B7CE0       uCaseTree.ResetCaseTreeObjectStrings
+ 0001:001B7924       uCaseTree.SetCaseTreeNodeImagesAndFormatting
+ 0001:001B7C40       uCaseTree.SetImageFlag
+ 0004:000037EC       uConst..4
+ 0003:00003124       uConst.CC_TV_TEXT
+ 0001:0010BEAC       uConst.Finalization
+ 0003:000030DC       uConst.NC_TV_TEXT
+ 0003:0000313C       uConst.ScrollBarWidth
+ 0002:00000CF0       uConst.uConst
+ 0004:00004AFC       uConsults..3
+ 0001:0018DB24       uConsults..TClinProcTitles
+ 0001:0018DAB4       uConsults..TConsultTitles
+ 0001:0018ED9C       uConsults.BuildConsultsTree
+ 0001:0018E398       uConsults.BuildServiceTree
+ 0004:00004A6C       uConsults.ConsultRec
+ 0001:0018E5A8       uConsults.CreateListItemsForConsultTree
+ 0001:0018F37C       uConsults.Finalization
+ 0001:0018E07C       uConsults.MakeConsultListDisplayText
+ 0001:0018DC7C       uConsults.MakeConsultListItem
+ 0001:0018E160       uConsults.MakeConsultNoteDisplayText
+ 0001:0018EFAC       uConsults.SetNodeImage
+ 0001:0018DC08       uConsults.TClinProcTitles.Create
+ 0001:0018DC4C       uConsults.TClinProcTitles.Destroy
+ 0001:0018DB94       uConsults.TConsultTitles.Create
+ 0001:0018DBD8       uConsults.TConsultTitles.Destroy
+ 0002:0000119C       uConsults.uConsults
+ 0004:0000679C       uCore..21
+ 0001:003B0B64       uCore..TChangeItem
+ 0001:003B0BF0       uCore..TChanges
+ 0001:003B0AE0       uCore..TEncounter
+ 0001:003B0CBC       uCore..TNotifications
+ 0001:003B0F00       uCore..TNotifyAppsThread
+ 0001:003B0C48       uCore..TNotifyItem
+ 0001:003B0A04       uCore..TPatient
+ 0001:003B0E2C       uCore..TRemoteReport
+ 0001:003B0EA0       uCore..TRemoteReportList
+ 0001:003B0D18       uCore..TRemoteSite
+ 0001:003B0DBC       uCore..TRemoteSiteList
+ 0001:003B0978       uCore..TUser
+ 0001:003B0F80       uCore.AllowAccessToSensitivePatient
+ 0003:00004080       uCore.AnAtom
+ 0001:003B1528       uCore.AppNotificationEnabled
+ 0004:0000676C       uCore.Changes
+ 0003:00004068       uCore.Encounter
+ 0001:003B4214       uCore.Finalization
+ 0004:00006780       uCore.FlagList
+ 0001:003B1864       uCore.FlushNotifierBuffer
+ 0001:003B3FF8       uCore.GotoWebPage
+ 0004:0000677C       uCore.HasFlag
+ 0004:000067A8       uCore.HlinkNav
+ 0001:003B401C       uCore.LoadURLMon
+ 0003:00004084       uCore.MSG_TYPE
+ 0004:00006778       uCore.Notifications
+ 0001:003B1714       uCore.NotifyOtherApps
+ 0004:00006768       uCore.Patient
+ 0001:003B12A8       uCore.ProcessQueue
+ 0001:003B1254       uCore.QueuePending
+ 0001:003B163C       uCore.ReleaseAppNotification
+ 0001:003B4090       uCore.ReleaseURLMon
+ 0004:00006774       uCore.RemoteReports
+ 0004:00006770       uCore.RemoteSites
+ 0001:003B238C       uCore.TChangeItem.Create
+ 0001:003B2590       uCore.TChanges.Add
+ 0001:003B31F0       uCore.TChanges.AddUnsignedToChanges
+ 0001:003B281C       uCore.TChanges.CanSign
+ 0001:003B411C       uCore.TChanges.ChangeOrderGrp
+ 0001:003B28B8       uCore.TChanges.Clear
+ 0001:003B2484       uCore.TChanges.Create
+ 0001:003B2520       uCore.TChanges.Destroy
+ 0001:003B2A28       uCore.TChanges.Exist
+ 0001:003B2B14       uCore.TChanges.ExistForOrder
+ 0001:003B2BDC       uCore.TChanges.Locate
+ 0001:003B2CD4       uCore.TChanges.Remove
+ 0001:003B40AC       uCore.TChanges.ReplaceODGrpName
+ 0001:003B2F90       uCore.TChanges.ReplaceSignState
+ 0001:003B3080       uCore.TChanges.ReplaceText
+ 0001:003B3178       uCore.TChanges.RequireReview
+ 0004:00006790       uCore.TempEncounterDateTime
+ 0004:00006784       uCore.TempEncounterLoc
+ 0004:00006788       uCore.TempEncounterLocName
+ 0004:0000678C       uCore.TempEncounterText
+ 0004:00006798       uCore.TempEncounterVistCat
+ 0001:003B1EAC       uCore.TEncounter.Clear
+ 0001:003B1D64       uCore.TEncounter.Create
+ 0001:003B1DCC       uCore.TEncounter.Destroy
+ 0001:003B1E08       uCore.TEncounter.EncounterSwitch
+ 0001:003B1F4C       uCore.TEncounter.GetLocationName
+ 0001:003B1F1C       uCore.TEncounter.GetLocationText
+ 0001:003B1F7C       uCore.TEncounter.GetProviderName
+ 0001:003B1FAC       uCore.TEncounter.GetVisitCategory
+ 0001:003B1FD0       uCore.TEncounter.GetVisitStr
+ 0001:003B2078       uCore.TEncounter.NeedVisit
+ 0001:003B20B4       uCore.TEncounter.SetDateTime
+ 0001:003B20E8       uCore.TEncounter.SetInpatient
+ 0001:003B2114       uCore.TEncounter.SetLocation
+ 0001:003B2150       uCore.TEncounter.SetProvider
+ 0001:003B2188       uCore.TEncounter.SetStandAlone
+ 0001:003B21B4       uCore.TEncounter.SetVisitCategory
+ 0001:003B21E0       uCore.TEncounter.UpdateText
+ 0001:003B18B4       uCore.TerminateOtherAppNotification
+ 0001:003B3504       uCore.TNotifications.Add
+ 0001:003B3564       uCore.TNotifications.Clear
+ 0001:003B3464       uCore.TNotifications.Create
+ 0001:003B37FC       uCore.TNotifications.Delete
+ 0001:003B3864       uCore.TNotifications.DeleteForCurrentUser
+ 0001:003B34C0       uCore.TNotifications.Destroy
+ 0001:003B3634       uCore.TNotifications.GetAlertData
+ 0001:003B35D4       uCore.TNotifications.GetDFN
+ 0001:003B3608       uCore.TNotifications.GetFollowUp
+ 0001:003B36AC       uCore.TNotifications.GetRecordID
+ 0001:003B36E0       uCore.TNotifications.GetText
+ 0001:003B3760       uCore.TNotifications.Next
+ 0001:003B37AC       uCore.TNotifications.Prior
+ 0001:003B145C       uCore.TNotifyAppsThread.CreateThread
+ 0001:003B14E8       uCore.TNotifyAppsThread.Execute
+ 0001:003B14C4       uCore.TNotifyAppsThread.ResumeAndTerminate
+ 0001:003B14A8       uCore.TNotifyAppsThread.ResumeIfIdle
+ 0001:003B1AB8       uCore.TPatient.Clear
+ 0001:003B1B84       uCore.TPatient.GetDateDied
+ 0001:003B1BC8       uCore.TPatient.SetDFN
+ 0001:003B3AC8       uCore.TRemoteReport.Create
+ 0001:003B3B50       uCore.TRemoteReport.Destroy
+ 0001:003B3C14       uCore.TRemoteReportList.Add
+ 0001:003B3B84       uCore.TRemoteReportList.Create
+ 0001:003B3BD8       uCore.TRemoteReportList.Destroy
+ 0001:003B38CC       uCore.TRemoteSite.Create
+ 0001:003B3A14       uCore.TRemoteSite.Destroy
+ 0001:003B3A8C       uCore.TRemoteSite.LabClear
+ 0001:003B3A6C       uCore.TRemoteSite.ReportClear
+ 0001:003B3AAC       uCore.TRemoteSite.SetSelected
+ 0001:003B3D4C       uCore.TRemoteSiteList.Add
+ 0001:003B3E20       uCore.TRemoteSiteList.ChangePatient
+ 0001:003B3DC0       uCore.TRemoteSiteList.Clear
+ 0001:003B3CB4       uCore.TRemoteSiteList.Create
+ 0001:003B3D08       uCore.TRemoteSiteList.Destroy
+ 0001:003B18BC       uCore.TUser.Create
+ 0001:003B1A98       uCore.TUser.HasKey
+ 0001:003B3FA4       uCore.TUser.SetCurrentPrinter
+ 0002:00001F90       uCore.uCore
+ 0003:0000407C       uCore.uNotifyAppsActive
+ 0003:00004078       uCore.uNotifyAppsQueue
+ 0003:00004074       uCore.uNotifyAppsThread
+ 0003:0000406C       uCore.URLMonHandle
+ 0004:00006764       uCore.User
+ 0003:00004070       uCore.uSynchronizer
+ 0004:000067A4       uCore.uVistaDomMsg
+ 0004:000067A0       uCore.uVistaMsg
+ 0001:0016E024       uDCSumm..TDCSummPrefs
+ 0001:0016DFB8       uDCSumm..TDCSummTitles
+ 0001:0016E098       uDCSumm.MakeDCSummDisplayText
+ 0001:0016E2F8       uDCSumm.TDCSummTitles.Create
+ 0001:0016E33C       uDCSumm.TDCSummTitles.Destroy
+ 0004:000062BC       uDlgComponents..02
+ 0001:00302AF4       uDlgComponents..TCPRSDialogButton
+ 0001:00302944       uDlgComponents..TCPRSDialogCheckBox
+ 0001:003027A0       uDlgComponents..TCPRSDialogComboBox
+ 0001:00302218       uDlgComponents..TCPRSDialogComponent
+ 0001:00302FF0       uDlgComponents..TCPRSDialogDateBox
+ 0001:00302E40       uDlgComponents..TCPRSDialogDateCombo
+ 0001:003025D8       uDlgComponents..TCPRSDialogFieldEdit
+ 0001:0030365C       uDlgComponents..TCPRSDialogHyperlinkLabel
+ 0001:00303340       uDlgComponents..TCPRSDialogNumber
+ 0001:0030241C       uDlgComponents..TCPRSDialogParentCheckBox
+ 0001:00303818       uDlgComponents..TCPRSDialogRichEdit
+ 0001:003022A4       uDlgComponents..TCPRSDialogStaticLabel
+ 0001:00302C7C       uDlgComponents..TCPRSDialogYearEdit
+ 0001:00303190       uDlgComponents..TCPRSNumberField
+ 0001:003034C0       uDlgComponents..TCPRSTemplateFieldLabel
+ 0001:003039C8       uDlgComponents..TDlgFieldPanel
+ 0001:00303ED8       uDlgComponents..TMentalHealthMemo
+ 0001:00303D08       uDlgComponents..TVitalComboBox
+ 0001:00303B54       uDlgComponents..TVitalEdit
+ 0001:003051B8       uDlgComponents.Finalization
+ 0003:00003D4C       uDlgComponents.ReminderScreenReaderReadThroughClasses
+ 0001:00304260       uDlgComponents.ScreenReaderSystem_AddText
+ 0001:00304354       uDlgComponents.ScreenReaderSystem_Clear
+ 0001:00304328       uDlgComponents.ScreenReaderSystem_Continue
+ 0001:00304114       uDlgComponents.ScreenReaderSystem_CurrentCheckBox
+ 0001:00304140       uDlgComponents.ScreenReaderSystem_CurrentComponent
+ 0001:00304124       uDlgComponents.ScreenReaderSystem_CurrentLabel
+ 0001:00304344       uDlgComponents.ScreenReaderSystem_Stop
+ 0003:00003D58       uDlgComponents.SRCheckBox
+ 0003:00003D60       uDlgComponents.SRComp
+ 0003:00003D68       uDlgComponents.SRContinuePending
+ 0003:00003D5C       uDlgComponents.SRLabel
+ 0003:00003D64       uDlgComponents.SRText
+ 0001:0030488C       uDlgComponents.TCPRSDialogButton.Create
+ 0001:003048FC       uDlgComponents.TCPRSDialogButton.Destroy
+ 0001:003047E8       uDlgComponents.TCPRSDialogCheckBox.Create
+ 0001:0030485C       uDlgComponents.TCPRSDialogCheckBox.Destroy
+ 0001:00304744       uDlgComponents.TCPRSDialogComboBox.Create
+ 0001:003047B8       uDlgComponents.TCPRSDialogComboBox.Destroy
+ 0001:00304F48       uDlgComponents.TCPRSDialogComponent.AccessText
+ 0001:00304EA4       uDlgComponents.TCPRSDialogComponent.Component
+ 0001:00304EA8       uDlgComponents.TCPRSDialogComponent.Create
+ 0001:0030500C       uDlgComponents.TCPRSDialogComponent.GetAfterText
+ 0001:00305020       uDlgComponents.TCPRSDialogComponent.GetBeforeText
+ 0001:00305034       uDlgComponents.TCPRSDialogComponent.GetRequiredField
+ 0001:0030503C       uDlgComponents.TCPRSDialogComponent.GetSRBreak
+ 0001:00305044       uDlgComponents.TCPRSDialogComponent.SetAfterText
+ 0001:00305090       uDlgComponents.TCPRSDialogComponent.SetBeforeText
+ 0001:003050DC       uDlgComponents.TCPRSDialogComponent.SetRequiredField
+ 0001:003050E0       uDlgComponents.TCPRSDialogComponent.SetSRBreak
+ 0001:003049EC       uDlgComponents.TCPRSDialogDateBox.Create
+ 0001:00304A74       uDlgComponents.TCPRSDialogDateBox.Destroy
+ 0001:0030492C       uDlgComponents.TCPRSDialogDateCombo.Create
+ 0001:003049BC       uDlgComponents.TCPRSDialogDateCombo.Destroy
+ 0001:003046A4       uDlgComponents.TCPRSDialogFieldEdit.Create
+ 0001:00304714       uDlgComponents.TCPRSDialogFieldEdit.Destroy
+ 0001:00304C08       uDlgComponents.TCPRSDialogHyperlinkLabel.Clicked
+ 0001:00304C58       uDlgComponents.TCPRSDialogHyperlinkLabel.Create
+ 0001:00304CE0       uDlgComponents.TCPRSDialogHyperlinkLabel.Destroy
+ 0001:00304D10       uDlgComponents.TCPRSDialogHyperlinkLabel.Init
+ 0001:00304DF4       uDlgComponents.TCPRSDialogHyperlinkLabel.KeyPressed
+ 0001:00304AA4       uDlgComponents.TCPRSDialogNumber.CreatePanel
+ 0001:00304BD8       uDlgComponents.TCPRSDialogNumber.Destroy
+ 0001:00304E04       uDlgComponents.TCPRSDialogRichEdit.Create
+ 0001:00304E74       uDlgComponents.TCPRSDialogRichEdit.Destroy
+ 0001:003043EC       uDlgComponents.TDlgFieldPanel.Create
+ 0001:00304434       uDlgComponents.TDlgFieldPanel.Destroy
+ 0001:0030447C       uDlgComponents.TDlgFieldPanel.Paint
+ 0001:00304548       uDlgComponents.TDlgFieldPanel.SetTheFocus
+ 0001:0030455C       uDlgComponents.TVitalComboBox.Create
+ 0001:003045D0       uDlgComponents.TVitalComboBox.Destroy
+ 0001:00304600       uDlgComponents.TVitalComboBox.SelectByID
+ 0001:003050E4       uDlgComponents.TVitalEdit.Create
+ 0001:0030516C       uDlgComponents.TVitalEdit.Destroy
+ 0002:00001914       uDlgComponents.uDlgComponents
+ 0001:003040C8       uDlgComponents.UpdateCheckBox
+ 0001:0030406C       uDlgComponents.UpdatePending
+ 0001:002D8ED8       uDocTree.AddListViewItem
+ 0001:002D7938       uDocTree.BuildDocumentTree
+ 0001:002D87A0       uDocTree.ContextMatch
+ 0001:002D6F5C       uDocTree.CreateListItemsForDocumentTree
+ 0001:002D8DD8       uDocTree.KillDocTreeNode
+ 0001:002D8D5C       uDocTree.KillDocTreeObjects
+ 0001:002D7C6C       uDocTree.MakeBold
+ 0001:002D9638       uDocTree.MakeConsultsNoteTreeObject
+ 0001:002D92C8       uDocTree.MakeDCSummTreeObject
+ 0001:002D8FC4       uDocTree.MakeNoteTreeObject
+ 0001:002D8E0C       uDocTree.RemoveParentsWithNoChildren
+ 0001:002D8CE8       uDocTree.ResetDocTreeObjectStrings
+ 0001:002D7DBC       uDocTree.SetTreeNodeImagesAndFormatting
+ 0001:002D8BCC       uDocTree.TextFound
+ 0001:002D83AC       uDocTree.TraverseTree
+ 0004:00006074       uEventHooks..1
+ 0001:002C8A64       uEventHooks..TCPRSBroker
+ 0001:002C8C50       uEventHooks..TCPRSEventHookManager
+ 0001:002C8BE4       uEventHooks..TCPRSState
+ 0001:002CA5D0       uEventHooks.COMObjectActive
+ 0001:002CA55C       uEventHooks.COMObjectOK
+ 0001:002C8CCC       uEventHooks.EnsureEventHookObjects
+ 0001:002CA5D8       uEventHooks.Finalization
+ 0001:002CA034       uEventHooks.FreeEventHookObjects
+ 0001:002CA488       uEventHooks.GetCOMObjectText
+ 0001:002CA3A8       uEventHooks.ProcessOrderAcceptEventHook
+ 0001:002CA2E0       uEventHooks.ProcessPatientChangeEventHook
+ 0001:002CA040       uEventHooks.RegisterCPRSTypeLibrary
+ 0001:002C8DB0       uEventHooks.TCPRSBroker.CallRPC
+ 0001:002C8CE8       uEventHooks.TCPRSBroker.Create
+ 0001:002C90A4       uEventHooks.TCPRSBroker.DebugMode
+ 0001:002C9770       uEventHooks.TCPRSBroker.Destroy
+ 0001:002C90F0       uEventHooks.TCPRSBroker.Get_ClearParameters
+ 0001:002C9130       uEventHooks.TCPRSBroker.Get_ClearResults
+ 0001:002C9170       uEventHooks.TCPRSBroker.Get_Param
+ 0001:002C91C4       uEventHooks.TCPRSBroker.Get_ParamList
+ 0001:002C9248       uEventHooks.TCPRSBroker.Get_ParamType
+ 0001:002C92B8       uEventHooks.TCPRSBroker.Get_Results
+ 0001:002C9304       uEventHooks.TCPRSBroker.Get_RPCVersion
+ 0001:002C9718       uEventHooks.TCPRSBroker.Initialize
+ 0001:002C9350       uEventHooks.TCPRSBroker.ParamCount
+ 0001:002C9394       uEventHooks.TCPRSBroker.ParamListCount
+ 0001:002C93E4       uEventHooks.TCPRSBroker.Port
+ 0001:002C9428       uEventHooks.TCPRSBroker.Server
+ 0001:002C96C8       uEventHooks.TCPRSBroker.SetContext
+ 0001:002C947C       uEventHooks.TCPRSBroker.Set_ClearParameters
+ 0001:002C94BC       uEventHooks.TCPRSBroker.Set_ClearResults
+ 0001:002C94FC       uEventHooks.TCPRSBroker.Set_Param
+ 0001:002C9548       uEventHooks.TCPRSBroker.Set_ParamList
+ 0001:002C95C4       uEventHooks.TCPRSBroker.Set_ParamType
+ 0001:002C9648       uEventHooks.TCPRSBroker.Set_Results
+ 0001:002C9688       uEventHooks.TCPRSBroker.Set_RPCVersion
+ 0001:002C9BC0       uEventHooks.TCPRSEventHookManager.Create
+ 0001:002C9C30       uEventHooks.TCPRSEventHookManager.Destroy
+ 0001:002C9C74       uEventHooks.TCPRSEventHookManager.EnterCriticalSection
+ 0001:002C9C80       uEventHooks.TCPRSEventHookManager.LeaveCriticalSection
+ 0001:002C9C8C       uEventHooks.TCPRSEventHookManager.ProcessComObject
+ 0001:002C97A8       uEventHooks.TCPRSState.Create
+ 0001:002C98A0       uEventHooks.TCPRSState.Handle
+ 0001:002C98EC       uEventHooks.TCPRSState.LocationIEN
+ 0001:002C9930       uEventHooks.TCPRSState.LocationName
+ 0001:002C9994       uEventHooks.TCPRSState.PatientDFN
+ 0001:002C99E4       uEventHooks.TCPRSState.PatientDOB
+ 0001:002C9A68       uEventHooks.TCPRSState.PatientName
+ 0001:002C9AB8       uEventHooks.TCPRSState.PatientSSN
+ 0001:002C9B08       uEventHooks.TCPRSState.UserDUZ
+ 0001:002C9B70       uEventHooks.TCPRSState.UserName
+ 0003:00003A68       uEventHooks.uCOMObjectActive
+ 0003:00003A64       uEventHooks.uCPRSEventHookManager
+ 0002:00001718       uEventHooks.uEventHooks
+ 0004:000049BC       uFormMonitor..1
+ 0001:00144540       uFormMonitor..TFormEvent
+ 0001:001444E4       uFormMonitor..TFormMonitor
+ 0001:00144BE0       uFormMonitor.CallWndHook
+ 0001:00144598       uFormMonitor.DisableGhosting
+ 0001:001451D0       uFormMonitor.Finalization
+ 0001:00144F74       uFormMonitor.FindActiveWindow
+ 0001:00144724       uFormMonitor.FindFormEvent
+ 0001:001446E4       uFormMonitor.FindFormEventIndex
+ 0001:00144EE4       uFormMonitor.FindWindows
+ 0001:001448AC       uFormMonitor.FindWindowZOrder
+ 0003:000035A0       uFormMonitor.FormMonitor
+ 0001:00144748       uFormMonitor.FormMonitorBringToFrontEvent
+ 0001:001447C0       uFormMonitor.IsFormStayOnTop
+ 0001:00144F14       uFormMonitor.IsHandleOK
+ 0001:00144678       uFormMonitor.MarkFormAsStayOnTop
+ 0001:0014462C       uFormMonitor.SetFormMonitoring
+ 0001:001447E8       uFormMonitor.TFormMonitor.Activate
+ 0001:00144808       uFormMonitor.TFormMonitor.ActiveFormChange
+ 0001:00144844       uFormMonitor.TFormMonitor.FormValid
+ 0001:00144FB4       uFormMonitor.TFormMonitor.GetActiveFormHandle
+ 0001:00144878       uFormMonitor.TFormMonitor.HandleValid
+ 0001:00144EBC       uFormMonitor.TFormMonitor.IsNormalized
+ 0001:00144ED0       uFormMonitor.TFormMonitor.IsTopMost
+ 0001:001448E0       uFormMonitor.TFormMonitor.ManageForms
+ 0001:00145120       uFormMonitor.TFormMonitor.ModalDelphiForm
+ 0001:00144E24       uFormMonitor.TFormMonitor.MoveOffTop
+ 0001:00144E5C       uFormMonitor.TFormMonitor.MoveOnTop
+ 0001:00144E94       uFormMonitor.TFormMonitor.Normalize
+ 0001:00144F00       uFormMonitor.TFormMonitor.NormalizeReset
+ 0001:00144824       uFormMonitor.TFormMonitor.Restore
+ 0001:00144C38       uFormMonitor.TFormMonitor.Start
+ 0001:001450B4       uFormMonitor.TFormMonitor.StartZOrdering
+ 0001:00144D80       uFormMonitor.TFormMonitor.Stop
+ 0001:001450E0       uFormMonitor.TFormMonitor.SystemRunning
+ 0001:00145174       uFormMonitor.TFormMonitor.Timer
+ 0004:000049C4       uFormMonitor.uActiveWindowCount
+ 0004:000049C0       uFormMonitor.uActiveWindowHandle
+ 0002:00001030       uFormMonitor.uFormMonitor
+ 0001:0013601C       uGraphs..TGraphActivity
+ 0001:00135FA0       uGraphs..TGraphSetting
+ 0001:001360BC       uGraphs.GraphSettingsInit
+ 0004:0000490C       uInit..1
+ 0001:00129840       uInit..TCPRSTimeoutTimer
+ 0001:001298FC       uInit.AutoUpdateCheck
+ 0001:00129E04       uInit.Finalization
+ 0003:000032F8       uInit.FTimedOut
+ 0001:00129C44       uInit.InitTimeOut
+ 0001:00129D28       uInit.ShutDownTimeOut
+ 0001:00129D80       uInit.TCPRSTimeoutTimer.ResetTimeout
+ 0001:00129DA4       uInit.TCPRSTimeoutTimer.timTimeoutTimer
+ 0001:00129D20       uInit.TimedOut
+ 0001:00129BC8       uInit.TimeoutKeyHook
+ 0001:00129C00       uInit.TimeoutMouseHook
+ 0003:000032F4       uInit.timTimeout
+ 0002:00000EFC       uInit.uInit
+ 0001:00129CF4       uInit.UpdateTimeOutInterval
+ 0004:00004BCC       uODBase..1
+ 0001:001ACF6C       uODBase.AddFillerAppID
+ 0001:001AD48C       uODBase.CheckForAutoDCDietOrders
+ 0001:001ACF98       uODBase.ClearFillerAppList
+ 0001:001AD110       uODBase.ExpandOrderObjects
+ 0001:001ADB84       uODBase.Finalization
+ 0001:001ACFE8       uODBase.GetKeyVars
+ 0001:001ACFE0       uODBase.OrderEventIDOnCreate
+ 0001:001ACFCC       uODBase.OrderEventNameOnCreate
+ 0001:001ACFBC       uODBase.OrderEventTypeOnCreate
+ 0001:001ACFAC       uODBase.OrderFormIDOnCreate
+ 0001:001AD01C       uODBase.PopKeyVars
+ 0001:001AD04C       uODBase.PushKeyVars
+ 0001:001ACFC4       uODBase.SetOrderEventIDOnCreate
+ 0001:001ACFB4       uODBase.SetOrderEventTypeOnCreate
+ 0001:001ACFA4       uODBase.SetOrderFormIDOnCreate
+ 0004:00004BE0       uODBase.uFillerAppID
+ 0004:00004BE4       uODBase.uKeyVarList
+ 0002:0000120C       uODBase.uODBase
+ 0004:00004BD4       uODBase.uOrderEventID
+ 0004:00004BD8       uODBase.uOrderEventName
+ 0004:00004BD0       uODBase.uOrderEventType
+ 0004:00004BDC       uODBase.uOrderFormID
+ 0001:00361AC0       uOptions..TSurrogate
+ 0001:00362064       uOptions.DateLimits
+ 0001:0036264C       uOptions.DisplayPtInfo
+ 0001:00361BF0       uOptions.GetMultiplier
+ 0001:0036235C       uOptions.LabelSurrogate
+ 0001:00361B2C       uOptions.OKToday
+ 0001:00361CBC       uOptions.RelativeDate
+ 0001:00362194       uOptions.ShowDisplay
+ 0001:00362298       uOptions.TextExit
+ 0004:00006734       uOrders..2
+ 0001:003A7C94       uOrders.ActivateAction
+ 0001:003A7DDC       uOrders.ActivateOrderDialog
+ 0001:003A97D4       uOrders.ActivateOrderHTML
+ 0001:003A9DCC       uOrders.ActivateOrderList
+ 0001:003A99B4       uOrders.ActivateOrderMenu
+ 0001:003A9C04       uOrders.ActivateOrderSet
+ 0001:003A9F1C       uOrders.ActiveOrdering
+ 0001:003A63AC       uOrders.AddSelectedToChanges
+ 0001:003ABBA8       uOrders.AllowActionOnIMO
+ 0001:003A5C30       uOrders.AuthorizedToVerify
+ 0001:003A5B54       uOrders.AuthorizedUser
+ 0001:003AA5A0       uOrders.ChangeOrders
+ 0004:000066E0       uOrders.ClinDisp
+ 0001:003A9F50       uOrders.CloseOrdering
+ 0001:003AA92C       uOrders.CopyOrders
+ 0001:003A58D0       uOrders.CreateOrderDialog
+ 0004:000066EC       uOrders.CsltDisp
+ 0001:003A6E14       uOrders.DeselectChild
+ 0001:003AAFF4       uOrders.DestroyingOrderAction
+ 0001:003AB010       uOrders.DestroyingOrderDialog
+ 0001:003AB02C       uOrders.DestroyingOrderHTML
+ 0001:003AB048       uOrders.DestroyingOrderMenu
+ 0001:003AB064       uOrders.DestroyingOrderSet
+ 0004:000066F8       uOrders.DietDisp
+ 0001:003A5D0C       uOrders.EncounterPresent
+ 0001:003A5F78       uOrders.EncounterPresentEDO
+ 0001:003AC174       uOrders.Finalization
+ 0004:000066F4       uOrders.ImgDisp
+ 0001:003ABC54       uOrders.IMOActionValidation
+ 0001:003A689C       uOrders.InitialOrderVariables
+ 0004:000066D4       uOrders.InptDisp
+ 0001:003ABB04       uOrders.IsIMODialog
+ 0001:003A6704       uOrders.IsInvalidActionWarning
+ 0001:003A6F88       uOrders.IsValidActionOnComplexOrder
+ 0004:000066E8       uOrders.IVDisp
+ 0001:003A6170       uOrders.LockedForOrdering
+ 0001:003A6EF8       uOrders.MakeMessage
+ 0004:000066DC       uOrders.MedsDisp
+ 0004:0000670C       uOrders.MedsInDlgFormId
+ 0004:00006700       uOrders.MedsInDlgIen
+ 0004:0000671C       uOrders.MedsIVDlgFormID
+ 0004:00006718       uOrders.MedsIVDlgIen
+ 0004:00006714       uOrders.MedsNVADlgFormID
+ 0004:00006708       uOrders.MedsNVADlgIen
+ 0004:00006710       uOrders.MedsOutDlgFormId
+ 0004:00006704       uOrders.MedsOutDlgIen
+ 0001:003ABAE4       uOrders.NextMove
+ 0004:000066FC       uOrders.NonVADisp
+ 0004:00006720       uOrders.NSSchedule
+ 0004:000066E4       uOrders.NurDisp
+ 0001:003A627C       uOrders.OrderCanBeLocked
+ 0001:003AB090       uOrders.OrderIsLocked
+ 0004:00006728       uOrders.OriginalMedsInHeight
+ 0004:00006724       uOrders.OriginalMedsOutHeight
+ 0004:0000672C       uOrders.OriginalNonVAMedsHeight
+ 0004:000066D8       uOrders.OutptDisp
+ 0004:00006730       uOrders.PassDrugTstCall
+ 0001:003AB20C       uOrders.PopLastMenu
+ 0001:003AB7E8       uOrders.PrintOrdersOnSignRelease
+ 0001:003AB5AC       uOrders.PrintOrdersOnSignReleaseMult
+ 0004:000066F0       uOrders.ProcDisp
+ 0001:003AB420       uOrders.QuickOrderListEdit
+ 0001:003AB228       uOrders.QuickOrderSave
+ 0001:003AA0D0       uOrders.ReadyForNewOrder
+ 0001:003AA3EC       uOrders.ReadyForNewOrder1
+ 0001:003AB524       uOrders.RefNumFor
+ 0001:003A64BC       uOrders.ResetDialogProperties
+ 0001:003A9734       uOrders.RetrieveOrderText
+ 0001:003A6AC4       uOrders.RetrieveOrderTextPSI
+ 0001:003AA594       uOrders.SetConfirmEventDelay
+ 0001:003ABAB8       uOrders.SetFontSize
+ 0001:003A9B44       uOrders.TakeoutDuplicateDlg
+ 0001:003AAC98       uOrders.TransferOrders
+ 0004:000066D0       uOrders.uAutoAc
+ 0004:00006739       uOrders.uKeepLock
+ 0004:00006750       uOrders.uLastConfirm
+ 0004:0000675C       uOrders.uNewMedDialog
+ 0001:003A6230       uOrders.UnlockIfAble
+ 0001:003A6340       uOrders.UnlockOrderIfAble
+ 0004:0000673C       uOrders.uOrderAction
+ 0004:00006740       uOrders.uOrderDialog
+ 0004:00006744       uOrders.uOrderHTML
+ 0004:00006748       uOrders.uOrderMenu
+ 0002:00001EE8       uOrders.uOrders
+ 0004:0000674C       uOrders.uOrderSet
+ 0004:00006754       uOrders.uOrderSetTime
+ 0004:00006738       uOrders.uPatientLocked
+ 0001:001E4740       uOrPtf.ClearFlag
+ 0001:001E46C8       uOrPtf.GetActiveFlg
+ 0001:001E4580       uOrPtf.HasActiveFlg
+ 0001:001E45F8       uOrPtf.TriggerPRFPopUp
+ 0004:000063B4       uPCE..31
+ 0001:0032D4B8       uPCE..TPCEData
+ 0001:0032D194       uPCE..TPCEDiag
+ 0001:0032D218       uPCE..TPCEExams
+ 0001:0032D29C       uPCE..TPCEHealth
+ 0001:0032D324       uPCE..TPCEImm
+ 0001:0032D06C       uPCE..TPCEItem
+ 0001:0032D3B0       uPCE..TPCEPat
+ 0001:0032D110       uPCE..TPCEProc
+ 0001:0032CF2C       uPCE..TPCEProviderList
+ 0001:0032D434       uPCE..TPCESkin
+ 0001:00334844       uPCE.Add
+ 0001:00334218       uPCE.Add
+ 0001:00334BF0       uPCE.AddList
+ 0001:00333B80       uPCE.AddTxt
+ 0001:00330AB4       uPCE.AppendComment
+ 0001:0032DA34       uPCE.CanEditPCE
+ 0001:00335198       uPCE.Check
+ 0001:003307B0       uPCE.ClearList
+ 0001:0032DBD0       uPCE.CodeSetIndex
+ 0001:003358A0       uPCE.Finalization
+ 0001:0032D9DC       uPCE.FutureEncounter
+ 0001:0032DA54       uPCE.GetComboBoxMinMax
+ 0001:0032DD30       uPCE.GetPCECodes
+ 0001:0032DE7C       uPCE.GetPCECodeString
+ 0001:0032E390       uPCE.GetPCEDataText
+ 0001:0032E0A0       uPCE.GetPCEDisplayText
+ 0001:0032EA10       uPCE.GetVitalsFromDate
+ 0001:0032EA60       uPCE.GetVitalsFromNote
+ 0003:00003FF8       uPCE.HistLocations
+ 0001:0032D6BC       uPCE.InvalidPCEProviderTxt
+ 0001:0032D8EC       uPCE.IsOK2Sign
+ 0003:00003FFC       uPCE.ListMinMax
+ 0001:0032D7A0       uPCE.MissingProviderInfo
+ 0003:00003FB8       uPCE.PCEDataCatText
+ 0001:0032E084       uPCE.PCELoadORCombo
+ 0001:0032E094       uPCE.PCELoadORCombo
+ 0001:0032DFC0       uPCE.PCELoadORComboData
+ 0003:00003FF4       uPCE.PCESetsOfCodes
+ 0003:00003FAC       uPCE.PCETypeText
+ 0001:00330A00       uPCE.SCCValue
+ 0001:0032E4D0       uPCE.SetDefaultProvider
+ 0001:003348A0       uPCE.TPCEData.AddStrData
+ 0001:0033498C       uPCE.TPCEData.AddVitalData
+ 0001:003307E0       uPCE.TPCEData.Clear
+ 0001:003308AC       uPCE.TPCEData.CopyDiagnoses
+ 0001:00330924       uPCE.TPCEData.CopyExams
+ 0001:00330910       uPCE.TPCEData.CopyHealthFactors
+ 0001:003308D4       uPCE.TPCEData.CopyImmunizations
+ 0001:003308FC       uPCE.TPCEData.CopyPatientEds
+ 0001:00333F3C       uPCE.TPCEData.CopyPCEData
+ 0001:00334CA0       uPCE.TPCEData.CopyPCEItems
+ 0001:003308C0       uPCE.TPCEData.CopyProcedures
+ 0001:003308E8       uPCE.TPCEData.CopySkinTests
+ 0001:00330568       uPCE.TPCEData.Create
+ 0001:00330658       uPCE.TPCEData.Destroy
+ 0001:00334D80       uPCE.TPCEData.Empty
+ 0001:003309D8       uPCE.TPCEData.GetCPTRequired
+ 0001:00334C60       uPCE.TPCEData.GetHasCPTList
+ 0001:00330938       uPCE.TPCEData.GetVisitString
+ 0001:00334A70       uPCE.TPCEData.IsSecondaryVisit
+ 0001:00332978       uPCE.TPCEData.MarkDeletions
+ 0001:00332918       uPCE.TPCEData.MatchItem
+ 0001:00334084       uPCE.TPCEData.NeededPCEData
+ 0001:00334A98       uPCE.TPCEData.NeedProviderInfo
+ 0001:00334294       uPCE.TPCEData.OK2SignNote
+ 0001:00330BD4       uPCE.TPCEData.PCEForNote
+ 0001:00334A14       uPCE.TPCEData.PersonClassDate
+ 0001:00331900       uPCE.TPCEData.Save
+ 0001:003332BC       uPCE.TPCEData.SetAORelated
+ 0001:0033330C       uPCE.TPCEData.SetCVRelated
+ 0001:00332A18       uPCE.TPCEData.SetDiagnoses
+ 0001:003332DC       uPCE.TPCEData.SetECRelated
+ 0001:0033332C       uPCE.TPCEData.SetEncUseCurr
+ 0001:00333134       uPCE.TPCEData.SetExams
+ 0001:0033300C       uPCE.TPCEData.SetHealthFactors
+ 0001:003332FC       uPCE.TPCEData.SetHNCRelated
+ 0001:00332C8C       uPCE.TPCEData.SetImmunizations
+ 0001:003332CC       uPCE.TPCEData.SetIRRelated
+ 0001:003332EC       uPCE.TPCEData.SetMSTRelated
+ 0001:00332F08       uPCE.TPCEData.SetPatientEds
+ 0001:00332B50       uPCE.TPCEData.SetProcedures
+ 0001:003332AC       uPCE.TPCEData.SetSCRelated
+ 0001:0033331C       uPCE.TPCEData.SetSHADRelated
+ 0001:00332DF4       uPCE.TPCEData.SetSkinTests
+ 0001:00333238       uPCE.TPCEData.SetVisitType
+ 0001:00333ECC       uPCE.TPCEData.StandAlone
+ 0001:003333BC       uPCE.TPCEData.StrDiagnoses
+ 0001:00333A68       uPCE.TPCEData.StrExams
+ 0001:00333950       uPCE.TPCEData.StrHealthFactors
+ 0001:00333608       uPCE.TPCEData.StrImmunizations
+ 0001:00333838       uPCE.TPCEData.StrPatientEds
+ 0001:003334D8       uPCE.TPCEData.StrProcedures
+ 0001:00333720       uPCE.TPCEData.StrSkinTests
+ 0001:00333DC4       uPCE.TPCEData.StrVisitType
+ 0001:00333C18       uPCE.TPCEData.StrVisitType
+ 0001:00334A3C       uPCE.TPCEData.VisitDateTime
+ 0001:00330178       uPCE.TPCEDiag.Assign
+ 0001:0033019C       uPCE.TPCEDiag.Clear
+ 0001:003301B0       uPCE.TPCEDiag.DelimitedStr
+ 0001:003302E0       uPCE.TPCEDiag.DelimitedStr2
+ 0001:003303D8       uPCE.TPCEDiag.ItemStr
+ 0001:003304B8       uPCE.TPCEDiag.SetFromString
+ 0001:0032EE2C       uPCE.TPCEExams.Assign
+ 0001:0032EE68       uPCE.TPCEExams.Clear
+ 0001:0032EE90       uPCE.TPCEExams.DelimitedStr
+ 0001:0032EF30       uPCE.TPCEExams.HasCPTStr
+ 0001:0032EF5C       uPCE.TPCEExams.ItemStr
+ 0001:0032EFF8       uPCE.TPCEExams.SetFromString
+ 0001:0032F3B8       uPCE.TPCEHealth.Assign
+ 0001:0032F3F4       uPCE.TPCEHealth.Clear
+ 0001:0032F41C       uPCE.TPCEHealth.DelimitedStr
+ 0001:0032F4C4       uPCE.TPCEHealth.HasCPTStr
+ 0001:0032F4F0       uPCE.TPCEHealth.ItemStr
+ 0001:0032F58C       uPCE.TPCEHealth.SetFromString
+ 0001:0032F60C       uPCE.TPCEImm.Assign
+ 0001:0032F674       uPCE.TPCEImm.Clear
+ 0001:0032F6B0       uPCE.TPCEImm.DelimitedStr
+ 0001:0032F7AC       uPCE.TPCEImm.HasCPTStr
+ 0001:0032F7D8       uPCE.TPCEImm.ItemStr
+ 0001:0032F8DC       uPCE.TPCEImm.SetFromString
+ 0001:0032EB78       uPCE.TPCEItem.Assign
+ 0001:0032EC04       uPCE.TPCEItem.Clear
+ 0001:0032EC40       uPCE.TPCEItem.DelimitedStr
+ 0001:0032EAA8       uPCE.TPCEItem.DelimitedStr2
+ 0001:0032ED40       uPCE.TPCEItem.HasCPTStr
+ 0001:0032ECF4       uPCE.TPCEItem.ItemStr
+ 0001:0032ED08       uPCE.TPCEItem.Match
+ 0001:00333F1C       uPCE.TPCEItem.MatchProvider
+ 0001:0032EBC8       uPCE.TPCEItem.SetComment
+ 0001:0032ED4C       uPCE.TPCEItem.SetFromString
+ 0001:0032FF2C       uPCE.TPCEPat.Assign
+ 0001:0032FF68       uPCE.TPCEPat.Clear
+ 0001:0032FF90       uPCE.TPCEPat.DelimitedStr
+ 0001:00330030       uPCE.TPCEPat.HasCPTStr
+ 0001:0033005C       uPCE.TPCEPat.ItemStr
+ 0001:003300F8       uPCE.TPCEPat.SetFromString
+ 0001:0032F9F8       uPCE.TPCEProc.Assign
+ 0001:0032FA2C       uPCE.TPCEProc.Clear
+ 0001:0032FA54       uPCE.TPCEProc.CopyProc
+ 0001:0032FAB0       uPCE.TPCEProc.DelimitedStr
+ 0001:0032FC5C       uPCE.TPCEProc.Empty
+ 0001:0032FD44       uPCE.TPCEProc.ItemStr
+ 0001:0032FC98       uPCE.TPCEProc.ModText
+ 0001:0032FE00       uPCE.TPCEProc.SetFromString
+ 0001:00334E58       uPCE.TPCEProviderList.Add
+ 0001:00334FC8       uPCE.TPCEProviderList.AddProvider
+ 0001:00335844       uPCE.TPCEProviderList.Assign
+ 0001:00335098       uPCE.TPCEProviderList.Clear
+ 0001:003350F0       uPCE.TPCEProviderList.Delete
+ 0001:0033532C       uPCE.TPCEProviderList.GetPrimaryIdx
+ 0001:0033534C       uPCE.TPCEProviderList.GetProviderData
+ 0001:0033545C       uPCE.TPCEProviderList.IndexOfProvider
+ 0001:003354B4       uPCE.TPCEProviderList.Merge
+ 0001:00335224       uPCE.TPCEProviderList.PCEProvider
+ 0001:00335294       uPCE.TPCEProviderList.PCEProviderName
+ 0001:003355AC       uPCE.TPCEProviderList.PendingIEN
+ 0001:00335648       uPCE.TPCEProviderList.PendingName
+ 0001:00335678       uPCE.TPCEProviderList.PrimaryIEN
+ 0001:00335714       uPCE.TPCEProviderList.SetPrimary
+ 0001:003357B4       uPCE.TPCEProviderList.SetPrimaryIdx
+ 0001:0032F078       uPCE.TPCESkin.Assign
+ 0001:0032F0D4       uPCE.TPCESkin.Clear
+ 0001:0032F110       uPCE.TPCESkin.DelimitedStr
+ 0001:0032F1C8       uPCE.TPCESkin.HasCPTStr
+ 0001:0032F1F4       uPCE.TPCESkin.ItemStr
+ 0001:0032F2C0       uPCE.TPCESkin.SetFromString
+ 0004:000063B8       uPCE.UNxtCommSeqNum
+ 0002:000019D0       uPCE.uPCE
+ 0001:0032E760       uPCE.ValidateGAFDate
+ 0004:000059A4       uProbs..7
+ 0001:001DA948       uProbs..TComment
+ 0001:001DA8B8       uProbs..TKeyVal
+ 0001:001DAB08       uProbs..TPLFilters
+ 0001:001DA9E8       uProbs..TPLPt
+ 0001:001DAA5C       uProbs..TPLUserParams
+ 0001:001DAB60       uProbs..TProbRec
+ 0001:001DD64C       uProbs.DateStringOK
+ 0001:001DE068       uProbs.Finalization
+ 0001:001DDFA0       uProbs.FixQuotes
+ 0001:001DDF00       uProbs.ForChars
+ 0001:001DDF04       uProbs.GetFontInfo
+ 0001:001DD800       uProbs.GetListforIP
+ 0001:001DD8F4       uProbs.GetListforOP
+ 0001:001DC0A8       uProbs.GetOrigVal
+ 0001:001DDCB0       uProbs.InitViewFilters
+ 0001:001DDA04       uProbs.LoadFilterList
+ 0004:0000599C       uProbs.PLFilters
+ 0004:000059A0       uProbs.PLProblem
+ 0004:00005988       uProbs.PLPt
+ 0004:0000598C       uProbs.PLUser
+ 0003:000038F0       uProbs.PL_IP_VIEW
+ 0003:000038EC       uProbs.PL_OP_VIEW
+ 0003:000038F4       uProbs.PL_UF_VIEW
+ 0004:00005990       uProbs.pProviderID
+ 0004:00005998       uProbs.pProviderName
+ 0004:00005984       uProbs.ProbRec
+ 0001:001DDB98       uProbs.SetViewFilters
+ 0001:001DDA94       uProbs.ShowFilterStatus
+ 0001:001DD778       uProbs.StripSpace
+ 0001:001DAC84       uProbs.TComment.Create
+ 0001:001DADDC       uProbs.TComment.Destroy
+ 0001:001DAF0C       uProbs.TComment.GetAge
+ 0001:001DAED4       uProbs.TComment.GetExtDateAdd
+ 0001:001DAE04       uProbs.TComment.TComtoDHCPCom
+ 0001:001DABFC       uProbs.TKeyVal.DHCPtoKeyVal
+ 0001:001DABD0       uProbs.TKeyVal.GetDHCPField
+ 0001:001DB6E0       uProbs.TPLFilters.create
+ 0001:001DB73C       uProbs.TPLFilters.Destroy
+ 0001:001DAF70       uProbs.TPLPt.Create
+ 0001:001DB1CC       uProbs.TPLPt.GetGMPDFN
+ 0001:001DB258       uProbs.TPLPt.Today
+ 0001:001DB310       uProbs.TPLUserParams.Create
+ 0001:001DB6A8       uProbs.TPLUserParams.Destroy
+ 0001:001DC5C0       uProbs.TProbRec.AddNewComment
+ 0001:001DB77C       uProbs.TProbRec.Create
+ 0001:001DBF28       uProbs.TProbRec.CreateFields
+ 0001:001DBDEC       uProbs.TProbRec.Destroy
+ 0001:001DBEFC       uProbs.TProbRec.EraseComments
+ 0001:001DD478       uProbs.TProbRec.GetAltFilerObject
+ 0001:001DCB4C       uProbs.TProbRec.GetAOProblem
+ 0001:001DC5B4       uProbs.TProbRec.GetCommentCount
+ 0001:001DC8F8       uProbs.TProbRec.GetCondition
+ 0001:001DCC8C       uProbs.TProbRec.GetENVProblem
+ 0001:001DD208       uProbs.TProbRec.GetFilerObject
+ 0001:001DCD2C       uProbs.TProbRec.GetHNCProblem
+ 0001:001DC6E8       uProbs.TProbRec.GetModDatstr
+ 0001:001DCDCC       uProbs.TProbRec.GetMSTProblem
+ 0001:001DC86C       uProbs.TProbRec.GetOnsetDatstr
+ 0001:001DD024       uProbs.TProbRec.GetPriority
+ 0001:001DCBEC       uProbs.TProbRec.GetRADProblem
+ 0001:001DD1A0       uProbs.TProbRec.GetRecDatstr
+ 0001:001DD138       uProbs.TProbRec.GetResDatstr
+ 0001:001DC8D4       uProbs.TProbRec.GetSCProblem
+ 0001:001DCE6C       uProbs.TProbRec.GetSHADProblem
+ 0001:001DCF0C       uProbs.TProbRec.GetStatus
+ 0001:001DC3D0       uProbs.TProbRec.LoadComments
+ 0001:001DC1E8       uProbs.TProbRec.LoadField
+ 0001:001DCB70       uProbs.TProbRec.SetAOProblem
+ 0001:001DC910       uProbs.TProbRec.SetCondition
+ 0001:001DC750       uProbs.TProbRec.SetDateString
+ 0001:001DCCB0       uProbs.TProbRec.SetENVProblem
+ 0001:001DCD50       uProbs.TProbRec.SetHNCProblem
+ 0001:001DC700       uProbs.TProbRec.SetModDatStr
+ 0001:001DCDF0       uProbs.TProbRec.SetMSTProblem
+ 0001:001DC884       uProbs.TProbRec.SetOnsetDatStr
+ 0001:001DD03C       uProbs.TProbRec.SetPriority
+ 0001:001DCC10       uProbs.TProbRec.SetRADProblem
+ 0001:001DD1B8       uProbs.TProbRec.SetRecDatStr
+ 0001:001DD150       uProbs.TProbRec.SetResDatStr
+ 0001:001DCAD0       uProbs.TProbRec.SetSCProblem
+ 0001:001DCE90       uProbs.TProbRec.SetSHADProblem
+ 0001:001DCF24       uProbs.TProbRec.SetStatus
+ 0002:00001380       uProbs.uProbs
+ 0003:000038E8       uProbs.v
+ 0004:000062B4       uReminders..9
+ 0001:002EF460       uReminders..EForcedPromptConflict
+ 0001:002EEB64       uReminders..TRemData
+ 0001:002EEAB4       uReminders..TRemDlgElement
+ 0001:002EEA3C       uReminders..TReminder
+ 0001:002EE9BC       uReminders..TReminderDialog
+ 0001:002EEC50       uReminders..TRemPCERoot
+ 0001:002EEBCC       uReminders..TRemPrompt
+ 0001:002EED78       uReminders..TWHCheckBox
+ 0003:00003B30       uReminders.ActiveReminders
+ 0001:002F1458       uReminders.Add
+ 0001:002FCA0C       uReminders.Add
+ 0001:002F1FB8       uReminders.Add2Tree
+ 0001:002F16D8       uReminders.AddEducationTopics
+ 0001:002FAB84       uReminders.AddNewTxt
+ 0001:002FC6DC       uReminders.AddPrompt
+ 0001:002F6F28       uReminders.AddPrompts
+ 0001:002F189C       uReminders.AddWebPages
+ 0001:002EF7E4       uReminders.BeginReminderUpdate
+ 0001:002F35FC       uReminders.Build
+ 0001:002F20E0       uReminders.BuildReminderTree
+ 0001:002F41A8       uReminders.CheckItem
+ 0001:002EFE28       uReminders.CheckReminders
+ 0001:002F41DC       uReminders.ChildrenChecked
+ 0001:002F2BDC       uReminders.ClearReminderData
+ 0001:002F4DFC       uReminders.Code2DataType
+ 0001:002F4E6C       uReminders.Code2PromptType
+ 0001:002EF3F0       uReminders.Code2VitalType
+ 0003:00003C58       uReminders.ComboPromptTags
+ 0003:00003B3C       uReminders.CoverSheetRemindersInBackground
+ 0001:002EF334       uReminders.CRLFText
+ 0003:00003B94       uReminders.EducationTopics
+ 0003:00003BB0       uReminders.ElementChecked
+ 0001:002EF894       uReminders.EndReminderUpdate
+ 0001:002F1148       uReminders.EvalProcessed
+ 0001:002F0F18       uReminders.EvalReminder
+ 0001:002F12E4       uReminders.EvaluateCategoryClicked
+ 0003:00003B84       uReminders.EvaluatedReminders
+ 0001:002F39D8       uReminders.ExpandTIUObjects
+ 0001:00302034       uReminders.Finalization
+ 0003:00003C18       uReminders.FinishPromptPieceNum
+ 0001:002F2EEC       uReminders.FreeReminderObjects
+ 0001:002F0580       uReminders.GetEducationTopics
+ 0001:002F0204       uReminders.GetImageIndex
+ 0001:002F6A74       uReminders.GetPanel
+ 0001:002EF954       uReminders.GetRemFolders
+ 0001:002F2FA4       uReminders.GetReminder
+ 0001:002F348C       uReminders.GetReminderData
+ 0001:002F34A0       uReminders.GetReminderData
+ 0001:002EF748       uReminders.GetReminderStatus
+ 0001:002F085C       uReminders.GetWebPageAddress
+ 0001:002F0800       uReminders.GetWebPageName
+ 0001:002F08B8       uReminders.GetWebPages
+ 0003:00003BB4       uReminders.HistRootCount
+ 0003:00003B20       uReminders.InitialRemindersLoaded
+ 0001:002F2E20       uReminders.InitReminderList
+ 0001:002F2E38       uReminders.InitReminderObjects
+ 0001:002EF250       uReminders.InitText
+ 0001:002F3468       uReminders.InteractiveRemindersActive
+ 0003:00003BA4       uReminders.InteractiveRemindersActiveChecked
+ 0003:00003BA8       uReminders.InteractiveRemindersActiveStatus
+ 0001:002EF4C4       uReminders.IsSyncPrompt
+ 0003:00003B40       uReminders.KillReminderDialogProc
+ 0003:00003BA0       uReminders.LastProcessingList
+ 0003:00003B80       uReminders.LastReminderLocation
+ 0001:002EFFF4       uReminders.LoadReminderData
+ 0001:002F2BD4       uReminders.LocationChanged
+ 0003:00003CE0       uReminders.MSTDescTxt
+ 0001:002F6BB4       uReminders.NextLine
+ 0001:002EF4E0       uReminders.NotifyWhenRemindersChange
+ 0004:000062AC       uReminders.NotPurposeValue
+ 0003:00003B34       uReminders.OtherReminders
+ 0004:000062B8       uReminders.PCERootList
+ 0001:002F38F4       uReminders.PrepText4NextLine
+ 0003:00003BAC       uReminders.PrimaryDiagRoot
+ 0003:00003B48       uReminders.ProcessedReminders
+ 0001:002EF618       uReminders.ProcessingChangeString
+ 0001:002F6C68       uReminders.ProcessLabel
+ 0003:00003C98       uReminders.PromptDescriptions
+ 0001:002F1D5C       uReminders.RemContextPopup
+ 0003:00003BBC       uReminders.RemData2PCECat
+ 0003:00003B50       uReminders.RemDataCodes
+ 0003:00003CD8       uReminders.RemFolderCodes
+ 0004:0000627C       uReminders.RemForm
+ 0003:00003B9C       uReminders.ReminderCallList
+ 0003:00003B90       uReminders.ReminderCatMenu
+ 0001:002F0CCC       uReminders.ReminderClinMaintClicked
+ 0003:00003B4C       uReminders.ReminderDialogInfo
+ 0001:002F0D64       uReminders.ReminderEduClicked
+ 0001:002F126C       uReminders.ReminderEvalClicked
+ 0001:002EFAC8       uReminders.ReminderEvaluated
+ 0001:002F144C       uReminders.ReminderIconLegendClicked
+ 0001:002F0E04       uReminders.ReminderInqClicked
+ 0001:002F1CF8       uReminders.ReminderMenu
+ 0001:002F1988       uReminders.ReminderMenuBuilder
+ 0001:002F1C3C       uReminders.ReminderMenuItemSelect
+ 0001:002F0B90       uReminders.ReminderName
+ 0001:002F2B24       uReminders.ReminderNode
+ 0001:002EFD4C       uReminders.RemindersEvaluated
+ 0001:002EF7C8       uReminders.RemindersEvaluatingInBackground
+ 0003:00003B38       uReminders.RemindersInProcess
+ 0001:002F2DBC       uReminders.RemindersInProcessChanged
+ 0003:00003B44       uReminders.RemindersStarted
+ 0003:00003B88       uReminders.ReminderTreeMenu
+ 0003:00003B8C       uReminders.ReminderTreeMenuDlg
+ 0001:002F1BA0       uReminders.ReminderTreePopup
+ 0001:002F1BD4       uReminders.ReminderTreePopupCover
+ 0001:002F1C08       uReminders.ReminderTreePopupDlg
+ 0001:002F1288       uReminders.ReminderViewFolderClicked
+ 0001:002F0EA0       uReminders.ReminderWebClicked
+ 0003:00003D10       uReminders.RemMenuFolder
+ 0003:00003D18       uReminders.RemMenuNames
+ 0001:002EF580       uReminders.RemoveNotifyRemindersChange
+ 0003:00003B24       uReminders.RemPriorityText
+ 0003:00003BC8       uReminders.RemPromptCodes
+ 0003:00003C08       uReminders.RemPromptTypes
+ 0001:002F36A8       uReminders.Reset
+ 0001:002EFFE0       uReminders.ResetReminderLoad
+ 0003:00003D48       uReminders.ScootOver
+ 0001:002F6EA0       uReminders.ScreenReaderSupport
+ 0001:002EF9F8       uReminders.SetRemFolders
+ 0001:002F34F0       uReminders.SetReminderFormBounds
+ 0001:002F1CD0       uReminders.SetReminderMenuSelectRoutine
+ 0001:002F1C90       uReminders.SetReminderPopupCoverRoutine
+ 0001:002F1CB0       uReminders.SetReminderPopupDlgRoutine
+ 0001:002F1C70       uReminders.SetReminderPopupRoutine
+ 0001:002EF728       uReminders.StartupReminders
+ 0003:00003D08       uReminders.TmpActive
+ 0003:00003D0C       uReminders.TmpOther
+ 0001:002FC670       uReminders.TRemData.Add2PN
+ 0001:002FD0C8       uReminders.TRemData.AddData
+ 0001:002FD390       uReminders.TRemData.DataType
+ 0001:002FD3E8       uReminders.TRemData.Destroy
+ 0001:002FD464       uReminders.TRemData.DisplayWHResults
+ 0001:002FD4D8       uReminders.TRemData.InternalValue
+ 0001:002FD4F4       uReminders.TRemData.Narrative
+ 0001:002F4F08       uReminders.TRemDlgElement.Add2PN
+ 0001:002FB180       uReminders.TRemDlgElement.AddData
+ 0001:002FAEC4       uReminders.TRemDlgElement.AddText
+ 0001:002F5024       uReminders.TRemDlgElement.Box
+ 0001:002F5090       uReminders.TRemDlgElement.BoxCaption
+ 0001:002FA530       uReminders.TRemDlgElement.BuildControls
+ 0001:002F6844       uReminders.TRemDlgElement.cbClicked
+ 0001:002F69DC       uReminders.TRemDlgElement.cbEntered
+ 0001:002FB3C8       uReminders.TRemDlgElement.Check4ChildrenSharedPrompts
+ 0001:002F50C0       uReminders.TRemDlgElement.ChildrenIndent
+ 0001:002F5118       uReminders.TRemDlgElement.ChildrenRequired
+ 0001:002F51E4       uReminders.TRemDlgElement.ChildrenSharePrompts
+ 0001:002FC288       uReminders.TRemDlgElement.Create
+ 0001:002F5250       uReminders.TRemDlgElement.Destroy
+ 0001:002F52A0       uReminders.TRemDlgElement.ElemType
+ 0001:002F6964       uReminders.TRemDlgElement.EnableChildren
+ 0001:002F6994       uReminders.TRemDlgElement.Enabled
+ 0001:002FC2C4       uReminders.TRemDlgElement.EntryID
+ 0001:002FC350       uReminders.TRemDlgElement.FieldPanelChange
+ 0001:002FC5AC       uReminders.TRemDlgElement.FieldPanelEntered
+ 0001:002FC5F4       uReminders.TRemDlgElement.FieldPanelExited
+ 0001:002FC63C       uReminders.TRemDlgElement.FieldPanelKeyPress
+ 0001:002FC664       uReminders.TRemDlgElement.FieldPanelLabelOnClick
+ 0001:002FC650       uReminders.TRemDlgElement.FieldPanelOnClick
+ 0001:002F532C       uReminders.TRemDlgElement.FindingType
+ 0001:002FB704       uReminders.TRemDlgElement.FinishProblems
+ 0001:002F548C       uReminders.TRemDlgElement.GetData
+ 0001:002FC448       uReminders.TRemDlgElement.GetFieldValues
+ 0001:002FAC30       uReminders.TRemDlgElement.GetTemplateFieldValues
+ 0001:002F535C       uReminders.TRemDlgElement.HideChildren
+ 0001:002F53C8       uReminders.TRemDlgElement.Historical
+ 0001:002FC084       uReminders.TRemDlgElement.IncludeMHTestInPN
+ 0001:002F5434       uReminders.TRemDlgElement.Indent
+ 0001:002FBFE8       uReminders.TRemDlgElement.IndentChildrenInPN
+ 0001:002FC054       uReminders.TRemDlgElement.IndentPNLevel
+ 0001:002FBFB8       uReminders.TRemDlgElement.IsChecked
+ 0001:002F6A3C       uReminders.TRemDlgElement.ParentCBEnter
+ 0001:002F6A58       uReminders.TRemDlgElement.ParentCBExit
+ 0001:002FC0F0       uReminders.TRemDlgElement.ResultDlgID
+ 0001:002F667C       uReminders.TRemDlgElement.SetChecked
+ 0001:002F69A8       uReminders.TRemDlgElement.ShowChildren
+ 0001:002FC10C       uReminders.TRemDlgElement.SubCommentChange
+ 0001:002F67F8       uReminders.TRemDlgElement.TrueIndent
+ 0001:002F55EC       uReminders.TRemDlgElement.UpdateData
+ 0001:002F4C50       uReminders.TReminder.Create
+ 0001:002F4CCC       uReminders.TReminder.GetDueDateStr
+ 0001:002F4CE8       uReminders.TReminder.GetIEN
+ 0001:002F4D4C       uReminders.TReminder.GetLastDateStr
+ 0001:002F4D68       uReminders.TReminder.GetPrintName
+ 0001:002F4D84       uReminders.TReminder.GetPriority
+ 0001:002F4DE0       uReminders.TReminder.GetStatus
+ 0001:002F46B4       uReminders.TReminderDialog.AddData
+ 0001:002F4590       uReminders.TReminderDialog.AddText
+ 0001:002F3D90       uReminders.TReminderDialog.BaseCreate
+ 0001:002F4A70       uReminders.TReminderDialog.BeginNeedRedraw
+ 0001:002F4A10       uReminders.TReminderDialog.BeginTextChanged
+ 0001:002F442C       uReminders.TReminderDialog.BuildControls
+ 0001:002F4724       uReminders.TReminderDialog.ClearMHTest
+ 0001:002F4814       uReminders.TReminderDialog.ComboBoxCheckedText
+ 0001:002F4C0C       uReminders.TReminderDialog.ComboBoxResized
+ 0001:002F40FC       uReminders.TReminderDialog.Create
+ 0001:002F4178       uReminders.TReminderDialog.Destroy
+ 0001:002F4A74       uReminders.TReminderDialog.EndNeedRedraw
+ 0001:002F4A14       uReminders.TReminderDialog.EndTextChanged
+ 0001:002F4A98       uReminders.TReminderDialog.FinishProblems
+ 0001:002F4328       uReminders.TReminderDialog.GetDlgSL
+ 0001:002F4A38       uReminders.TReminderDialog.GetIEN
+ 0001:002F4A54       uReminders.TReminderDialog.GetPrintName
+ 0001:002F421C       uReminders.TReminderDialog.Processing
+ 0001:002F4C40       uReminders.TReminderDialog.Visible
+ 0001:00301858       uReminders.TRemPCERoot.Destroy
+ 0001:00301894       uReminders.TRemPCERoot.Done
+ 0001:00301928       uReminders.TRemPCERoot.GetRoot
+ 0001:00301B58       uReminders.TRemPCERoot.GetValue
+ 0001:00301BE8       uReminders.TRemPCERoot.Sync
+ 0001:00302000       uReminders.TRemPCERoot.UnSync
+ 0001:002FD510       uReminders.TRemPrompt.Add2PN
+ 0001:002FF730       uReminders.TRemPrompt.CanShare
+ 0001:002FD5D8       uReminders.TRemPrompt.Caption
+ 0001:002FE670       uReminders.TRemPrompt.ComboBoxKeyDown
+ 0001:002FD614       uReminders.TRemPrompt.Create
+ 0001:002FF828       uReminders.TRemPrompt.Destroy
+ 0001:00300FD0       uReminders.TRemPrompt.DoMHTest
+ 0001:00300D44       uReminders.TRemPrompt.DoWHReport
+ 0001:003017E0       uReminders.TRemPrompt.EditKeyPress
+ 0001:002FD638       uReminders.TRemPrompt.Forced
+ 0001:003008D4       uReminders.TRemPrompt.ForcedCaption
+ 0001:00301784       uReminders.TRemPrompt.GAFHelp
+ 0001:002FFAB8       uReminders.TRemPrompt.GetValue
+ 0001:0030068C       uReminders.TRemPrompt.InitValue
+ 0001:002FD6A4       uReminders.TRemPrompt.InternalValue
+ 0001:002FE8D0       uReminders.TRemPrompt.NoteText
+ 0001:002FD7D0       uReminders.TRemPrompt.PromptChange
+ 0001:002FE6C0       uReminders.TRemPrompt.PromptOK
+ 0001:002FE77C       uReminders.TRemPrompt.PromptType
+ 0001:002FF858       uReminders.TRemPrompt.RemDataActive
+ 0001:002FF97C       uReminders.TRemPrompt.RemDataChoiceActive
+ 0001:002FE7E0       uReminders.TRemPrompt.Required
+ 0001:002FE864       uReminders.TRemPrompt.SameLine
+ 0001:002FFCB0       uReminders.TRemPrompt.SetValue
+ 0001:0030060C       uReminders.TRemPrompt.SetValueFromParent
+ 0001:00300E60       uReminders.TRemPrompt.ViewWHText
+ 0001:00300AC4       uReminders.TRemPrompt.VitalType
+ 0001:00300C04       uReminders.TRemPrompt.VitalUnitValue
+ 0001:00300CEC       uReminders.TRemPrompt.VitalValue
+ 0001:00300B20       uReminders.TRemPrompt.VitalVerify
+ 0001:002F6544       uReminders.UpdateForcedValues
+ 0001:002FA46C       uReminders.UpdatePrompts
+ 0001:002F37FC       uReminders.UpdateReminderDialogStatus
+ 0003:00003BB8       uReminders.uRemFolders
+ 0002:000018DC       uReminders.uReminders
+ 0003:00003B98       uReminders.WebPages
+ 0004:000062B0       uReminders.WHRemPrint
+ 0001:002F3104       uReminders.WordWrap
+ 0001:00131220       uReports..TCellObject
+ 0001:001312BC       uReports..TRowObject
+ 0001:001320B0       uReports.CreateReportTextComponent
+ 0001:00131954       uReports.IsValidNumber
+ 0001:00131FBC       uReports.MakeProcedureTreeObject
+ 0001:00131588       uReports.MakeReportTreeObject
+ 0003:000033EC       uReports.Months
+ 0001:001320A0       uReports.ReportTextFontChange
+ 0004:00004924       uReports.RowObjects
+ 0001:00131CD8       uReports.ShortDateStrToDate
+ 0001:00131A90       uReports.StringToFMDateTime
+ 0001:00131F34       uReports.StripSpace
+ 0001:00131450       uReports.TCellObject.Add
+ 0001:001313F0       uReports.TCellObject.Create
+ 0001:0013142C       uReports.TCellObject.Destroy
+ 0001:0013187C       uReports.TRowObject.Add
+ 0001:0013191C       uReports.TRowObject.Clear
+ 0001:0013180C       uReports.TRowObject.Create
+ 0001:0013184C       uReports.TRowObject.Destroy
+ 0004:00005968       uSignItems..2
+ 0001:001D845C       uSignItems..TSigItems
+ 0004:00005980       uSignItems.AllBtnLeft
+ 0004:00005970       uSignItems.BaseFlags
+ 0001:001D8B64       uSignItems.CreateCB
+ 0001:001DA854       uSignItems.Finalization
+ 0004:0000596C       uSignItems.FlagCount
+ 0001:001D8908       uSignItems.GetAllBtnLeftPos
+ 0003:00003898       uSignItems.SigItemDesc
+ 0003:000038D8       uSignItems.SigItemDisplayOrder
+ 0001:001D88FC       uSignItems.SigItemHeight
+ 0001:001D88A4       uSignItems.SigItems
+ 0003:000038E0       uSignItems.StsChar
+ 0004:00005974       uSignItems.tempCkBx
+ 0004:0000597C       uSignItems.thisChangeItem
+ 0004:00005978       uSignItems.thisOrderID
+ 0001:001D8910       uSignItems.TSigItems.Add
+ 0001:001D9A5C       uSignItems.TSigItems.cbClicked
+ 0001:001D9CEC       uSignItems.TSigItems.cbEnter
+ 0001:001D9D3C       uSignItems.TSigItems.cbExit
+ 0001:001D89B0       uSignItems.TSigItems.Clear
+ 0001:001D86B8       uSignItems.TSigItems.CopyCB
+ 0001:001DA5AC       uSignItems.TSigItems.CopyCBValues
+ 0001:001D89C8       uSignItems.TSigItems.Create
+ 0001:001D8A80       uSignItems.TSigItems.Destroy
+ 0001:001DA4F0       uSignItems.TSigItems.DisplayPlTreatmentFactors
+ 0001:001DA030       uSignItems.TSigItems.EnableSettings
+ 0001:001D8668       uSignItems.TSigItems.FindCB
+ 0001:001DA6E4       uSignItems.TSigItems.FindCBValues
+ 0001:001D8664       uSignItems.TSigItems.GetSigItems
+ 0001:001DA734       uSignItems.TSigItems.GetTempCkBxState
+ 0001:001D8AF8       uSignItems.TSigItems.ItemToTag
+ 0001:001D9D5C       uSignItems.TSigItems.lbDrawItem
+ 0001:001D9FE4       uSignItems.TSigItems.Notification
+ 0001:001DA138       uSignItems.TSigItems.OK2SaveSettings
+ 0001:001D8AB8       uSignItems.TSigItems.ResetOrders
+ 0001:001DA304       uSignItems.TSigItems.SaveSettings
+ 0001:001D8740       uSignItems.TSigItems.SetSigItems
+ 0001:001D8B24       uSignItems.TSigItems.TagInfo
+ 0001:001D8B34       uSignItems.TSigItems.TagToItem
+ 0001:001D8C14       uSignItems.TSigItems.UpdateListBox
+ 0003:00003894       uSignItems.uSigItems
+ 0002:00001314       uSignItems.uSignItems
+ 0003:000038E4       uSignItems.uSingletonFlag
+ 0004:00004B50       uSpell..1
+ 0001:00199644       uSpell.BringWordToFront
+ 0001:0019A8EC       uSpell.Finalization
+ 0001:00199624       uSpell.GetWindowList
+ 0001:00199604       uSpell.GetWindows
+ 0001:0019A8D0       uSpell.GrammarCheckForControl
+ 0004:00004B60       uSpell.MSWord
+ 0004:00004B5C       uSpell.NewList
+ 0004:00004B58       uSpell.OldList
+ 0001:001998BC       uSpell.SpellAndGrammarCheckForControl
+ 0001:00199814       uSpell.SpellCheckAvailable
+ 0001:0019A8B4       uSpell.SpellCheckForControl
+ 0001:00199560       uSpell.SpellCheckInProgress
+ 0001:0019957C       uSpell.SpellCheckTitle
+ 0002:000011C8       uSpell.uSpell
+ 0004:00004B70       uSpell.uSpellCheckAvailable
+ 0004:00004B54       uSpell.WindowList
+ 0001:001B6980       uSurgery..TSurgeryTitles
+ 0001:001B6A6C       uSurgery.MakeSurgeryCaseDisplayText
+ 0001:001B6BBC       uSurgery.MakeSurgeryReportDisplayText
+ 0001:001B69F8       uSurgery.TSurgeryTitles.Create
+ 0001:001B6A3C       uSurgery.TSurgeryTitles.Destroy
+ 0004:000049E4       uTemplateFields..01
+ 0001:00170BF4       uTemplateFields..TIntStruc
+ 0001:00170AC0       uTemplateFields..TTemplateDialogEntry
+ 0001:00170B4C       uTemplateFields..TTemplateField
+ 0001:00175C38       uTemplateFields.Add2TabOrder
+ 0001:00171720       uTemplateFields.AddNewTxt
+ 0001:001722C0       uTemplateFields.AnyTemplateFieldsModified
+ 0001:00171AC8       uTemplateFields.AreTemplateFieldsRequired
+ 0001:00171268       uTemplateFields.AssignFieldIDs
+ 0001:0017134C       uTemplateFields.AssignFieldIDs
+ 0001:001727CC       uTemplateFields.BoilerplateTemplateFieldsOK
+ 0001:00172270       uTemplateFields.ClearModifiedTemplateFields
+ 0001:00172B44       uTemplateFields.ConvertCodes2Text
+ 0001:00175FE4       uTemplateFields.Ctrl508Work
+ 0001:00175CBC       uTemplateFields.DoLabel
+ 0001:0017297C       uTemplateFields.EnsureText
+ 0001:00176C80       uTemplateFields.Finalization
+ 0003:00003694       uTemplateFields.FldNames
+ 0001:0017116C       uTemplateFields.FreeEntries
+ 0001:001710A8       uTemplateFields.GetDialogEntry
+ 0001:00170FF8       uTemplateFields.GetNewFieldID
+ 0001:001753A0       uTemplateFields.GetOriginalItem
+ 0001:00171DA8       uTemplateFields.GetTemplateField
+ 0001:00171D44       uTemplateFields.HasTemplateField
+ 0001:0017336C       uTemplateFields.ht
+ 0001:00175E44       uTemplateFields.Init
+ 0001:00172300       uTemplateFields.ListTemplateFields
+ 0001:00176110       uTemplateFields.NextLine
+ 0001:00174E1C       uTemplateFields.PanelDestroy
+ 0001:001717CC       uTemplateFields.ResolveTemplateFields
+ 0001:001720E8       uTemplateFields.SaveTemplateFieldErrors
+ 0003:000035D4       uTemplateFields.ScreenReaderCodeIDs
+ 0003:000035C8       uTemplateFields.ScreenReaderCodeLens
+ 0003:000035DC       uTemplateFields.ScreenReaderCodeLines
+ 0003:000035BC       uTemplateFields.ScreenReaderCodes
+ 0001:00176AB0       uTemplateFields.StripEmbedded
+ 0001:00176BB4       uTemplateFields.StripScreenReaderCodes
+ 0001:00176C04       uTemplateFields.StripScreenReaderCodes
+ 0001:00175C50       uTemplateFields.StripSRCode
+ 0001:00172ACC       uTemplateFields.TemplateDateCode2DateType
+ 0003:0000365C       uTemplateFields.TemplateDateTypeDesc
+ 0001:00172A54       uTemplateFields.TemplateFieldCode2Field
+ 0003:000036C4       uTemplateFields.TemplateFieldDateCodes
+ 0001:00171EB8       uTemplateFields.TemplateFieldNameProblem
+ 0003:000035E4       uTemplateFields.TemplateFieldTypeCodes
+ 0003:000035FC       uTemplateFields.TemplateFieldTypeDesc
+ 0001:00175F44       uTemplateFields.Text508Work
+ 0001:00174E4C       uTemplateFields.TTemplateDialogEntry.Create
+ 0001:00175318       uTemplateFields.TTemplateDialogEntry.Destroy
+ 0001:00175384       uTemplateFields.TTemplateDialogEntry.DoChange
+ 0001:001754D0       uTemplateFields.TTemplateDialogEntry.GetControlText
+ 0001:00175AC0       uTemplateFields.TTemplateDialogEntry.GetFieldValues
+ 0001:00176154       uTemplateFields.TTemplateDialogEntry.GetPanel
+ 0001:0017650C       uTemplateFields.TTemplateDialogEntry.GetText
+ 0001:00176524       uTemplateFields.TTemplateDialogEntry.KillLabels
+ 0001:001765AC       uTemplateFields.TTemplateDialogEntry.SetAutoDestroyOnPanelFree
+ 0001:001765F0       uTemplateFields.TTemplateDialogEntry.SetControlText
+ 0001:001768EC       uTemplateFields.TTemplateDialogEntry.SetFieldValues
+ 0001:001769F8       uTemplateFields.TTemplateDialogEntry.StripCode
+ 0001:00176A94       uTemplateFields.TTemplateDialogEntry.UpDownChange
+ 0001:00174ADC       uTemplateFields.TTemplateField.Assign
+ 0001:00173FA8       uTemplateFields.TTemplateField.CanModify
+ 0001:00172CC8       uTemplateFields.TTemplateField.Create
+ 0001:00173470       uTemplateFields.TTemplateField.CreateDialogControls
+ 0001:00174C94       uTemplateFields.TTemplateField.Destroy
+ 0001:00174DE8       uTemplateFields.TTemplateField.GetRequired
+ 0001:0017329C       uTemplateFields.TTemplateField.GetTemplateFieldDefault
+ 0001:00174CE4       uTemplateFields.TTemplateField.NewField
+ 0001:001742A8       uTemplateFields.TTemplateField.SaveError
+ 0001:00174E00       uTemplateFields.TTemplateField.SetDateType
+ 0001:00174090       uTemplateFields.TTemplateField.SetEditDefault
+ 0001:001740BC       uTemplateFields.TTemplateField.SetFldName
+ 0001:001740EC       uTemplateFields.TTemplateField.SetFldType
+ 0001:001741C0       uTemplateFields.TTemplateField.SetInactive
+ 0001:00174D14       uTemplateFields.TTemplateField.SetIncrement
+ 0001:00174D30       uTemplateFields.TTemplateField.SetIndent
+ 0001:001741DC       uTemplateFields.TTemplateField.SetItemDefault
+ 0001:00174208       uTemplateFields.TTemplateField.SetItems
+ 0001:00174234       uTemplateFields.TTemplateField.SetLMText
+ 0001:00174260       uTemplateFields.TTemplateField.SetMaxLen
+ 0001:00174D4C       uTemplateFields.TTemplateField.SetMaxVal
+ 0001:00174D68       uTemplateFields.TTemplateField.SetMinVal
+ 0001:0017427C       uTemplateFields.TTemplateField.SetNotes
+ 0001:00174D84       uTemplateFields.TTemplateField.SetPad
+ 0001:00174CC8       uTemplateFields.TTemplateField.SetRequired
+ 0001:00174CF8       uTemplateFields.TTemplateField.SetSepLines
+ 0001:00174DA0       uTemplateFields.TTemplateField.SetTextLen
+ 0001:00174DBC       uTemplateFields.TTemplateField.SetURL
+ 0001:00174B80       uTemplateFields.TTemplateField.Width
+ 0003:000036D8       uTemplateFields.uEntries
+ 0003:000036E4       uTemplateFields.uInternalFieldIDCount
+ 0003:000036DC       uTemplateFields.uNewTemplateFieldIDCnt
+ 0001:0017339C       uTemplateFields.UpdateIndents
+ 0003:000036E0       uTemplateFields.uRadioGroupIndex
+ 0002:0000105C       uTemplateFields.uTemplateFields
+ 0003:000036D4       uTemplateFields.uTmplFlds
+ 0001:0017333C       uTemplateFields.wdth
+ 0001:00171614       uTemplateFields.WordWrapText
+ 0001:001713C8       uTemplateFields.WrappedText
+ 0004:000062D4       uTemplates..2
+ 0001:0030E2B0       uTemplates..ETemplateError
+ 0001:0030E30C       uTemplates..ETemplateImportError
+ 0001:0030E370       uTemplates..ETemplateXMLImportError
+ 0001:0030E208       uTemplates..TTemplate
+ 0001:00310AE8       uTemplates.AddBoiler
+ 0001:00310BC0       uTemplates.AddField
+ 0001:00310CB0       uTemplates.AddFieldHeader
+ 0001:0030EA10       uTemplates.AddTemplate
+ 0001:00310894       uTemplates.AddXMLBool
+ 0001:003107B8       uTemplates.AddXMLData
+ 0001:00310920       uTemplates.AddXMLList
+ 0001:0030F320       uTemplates.BackupDiffers
+ 0001:003105D4       uTemplates.BadTemplateName
+ 0001:0030F078       uTemplates.CanEditLinkType
+ 0001:0030EF7C       uTemplates.CanEditType
+ 0001:003104E4       uTemplates.ClearBackup
+ 0003:00003E98       uTemplates.ConsultsTemplate
+ 0001:0030F1E0       uTemplates.ConvertFileLink
+ 0003:00003EB0       uTemplates.Deleted
+ 0001:0030F378       uTemplates.DisplayErrors
+ 0001:003125E8       uTemplates.DisplayGroupToLinkType
+ 0001:0030E668       uTemplates.DlgText
+ 0001:0031267C       uTemplates.ExecuteTemplateOrBoilerPlate
+ 0001:003127BC       uTemplates.ExecuteTemplateOrBoilerPlate
+ 0001:0031630C       uTemplates.ExpandEmbeddedFields
+ 0001:0030ECC8       uTemplates.ExpandTemplate
+ 0003:00003F20       uTemplates.ExportPieces
+ 0001:00316DDC       uTemplates.Finalization
+ 0001:0030F0D0       uTemplates.GetLinkedTemplate
+ 0001:0030F264       uTemplates.GetLinkName
+ 0003:00003EB8       uTemplates.GettingDialogText
+ 0001:00310F74       uTemplates.GetXMLFromWord
+ 0001:003169A4       uTemplates.GetXMLParamReturnValueTIU
+ 0003:00003EA8       uTemplates.LastTemplateLocation
+ 0003:00003F8C       uTemplates.LinkGlobal
+ 0003:00003F9C       uTemplates.LinkPassCode
+ 0001:0030EB74       uTemplates.LoadTemplateData
+ 0001:00316734       uTemplates.MakeXMLParamTIU
+ 0001:003164B8       uTemplates.MakeXMLParamTIU
+ 0001:00310530       uTemplates.MarkDeleted
+ 0003:00003E90       uTemplates.MyTemplate
+ 0003:00003EB4       uTemplates.NodeCount
+ 0003:00003E9C       uTemplates.ProceduresTemplate
+ 0001:0030EE4C       uTemplates.ReleaseTemplates
+ 0001:0030EF30       uTemplates.RemoveAllNodes
+ 0003:00003E8C       uTemplates.RootTemplate
+ 0001:0031010C       uTemplates.SaveAllTemplates
+ 0001:0030F3F0       uTemplates.SaveTemplate
+ 0001:0030E7A8       uTemplates.SearchMatch
+ 0001:00316DB4       uTemplates.SetTemplateBPHasObjects
+ 0001:00316D8C       uTemplates.SetTemplateDialogCanceled
+ 0003:00003EA4       uTemplates.TemplateAccessLevelChecked
+ 0004:000062D8       uTemplates.TemplateAccessLevelValue
+ 0003:00003EDC       uTemplates.TemplateActiveCode
+ 0001:00316DC8       uTemplates.TemplateBPHasObjects
+ 0001:003142F4       uTemplates.TemplateChildrenCompare
+ 0003:00003EE0       uTemplates.TemplateExportTag
+ 0003:00003F60       uTemplates.TemplateFieldExportTag
+ 0003:00003E88       uTemplates.Templates
+ 0003:00003E70       uTemplates.TemplateTypeCodes
+ 0003:00003EAC       uTemplates.TempSL
+ 0003:00003E94       uTemplates.TitlesTemplate
+ 0001:00313394       uTemplates.TTemplate.AddChild
+ 0001:00313D00       uTemplates.TTemplate.AddNode
+ 0001:00315E00       uTemplates.TTemplate.AssignFileLink
+ 0001:00316034       uTemplates.TTemplate.AutoLock
+ 0001:00314358       uTemplates.TTemplate.BackupItems
+ 0001:003151B0       uTemplates.TTemplate.CanExportXML
+ 0001:00315AB0       uTemplates.TTemplate.CanModify
+ 0001:00314764       uTemplates.TTemplate.Changed
+ 0001:00314654       uTemplates.TTemplate.ClearBackup
+ 0001:00313DD0       uTemplates.TTemplate.Clone
+ 0001:00315F28       uTemplates.TTemplate.COMObjectText
+ 0001:0031288C       uTemplates.TTemplate.Create
+ 0001:00312EA4       uTemplates.TTemplate.CreateFromXML
+ 0001:0031333C       uTemplates.TTemplate.Destroy
+ 0001:00314F1C       uTemplates.TTemplate.DialogProperties
+ 0001:00314E48       uTemplates.TTemplate.DlgID
+ 0001:003161A8       uTemplates.TTemplate.ExecuteReminderDialog
+ 0001:00313838       uTemplates.TTemplate.FullBoilerplate
+ 0001:0031354C       uTemplates.TTemplate.GetBoilerplate
+ 0001:003134CC       uTemplates.TTemplate.GetChildren
+ 0001:00314B08       uTemplates.TTemplate.GetDescription
+ 0001:0031515C       uTemplates.TTemplate.GetDialogAborted
+ 0001:00313418       uTemplates.TTemplate.GetItems
+ 0001:00313488       uTemplates.TTemplate.GetTemplateType
+ 0001:00313A14       uTemplates.TTemplate.GetText
+ 0001:00315184       uTemplates.TTemplate.IsDialog
+ 0001:00315CC8       uTemplates.TTemplate.IsLocked
+ 0001:0031366C       uTemplates.TTemplate.ItemBoilerplate
+ 0001:0031427C       uTemplates.TTemplate.ItemIENs
+ 0001:003160E4       uTemplates.TTemplate.LinkIEN
+ 0001:00316110       uTemplates.TTemplate.LinkName
+ 0001:00316074       uTemplates.TTemplate.LinkType
+ 0001:00315A60       uTemplates.TTemplate.ReminderDialogIEN
+ 0001:00316C88       uTemplates.TTemplate.ReminderWipe
+ 0001:003133CC       uTemplates.TTemplate.RemoveChild
+ 0001:00313D88       uTemplates.TTemplate.RemoveNode
+ 0001:003143D0       uTemplates.TTemplate.SetActive
+ 0001:00313960       uTemplates.TTemplate.SetBoilerplate
+ 0001:00315D08       uTemplates.TTemplate.SetCOMObject
+ 0001:00315D88       uTemplates.TTemplate.SetCOMParam
+ 0001:00314A88       uTemplates.TTemplate.SetDescription
+ 0001:00314498       uTemplates.TTemplate.SetDialog
+ 0001:00314BF0       uTemplates.TTemplate.SetDisplayOnly
+ 0001:00314434       uTemplates.TTemplate.SetExclude
+ 0001:00315F08       uTemplates.TTemplate.SetFileLink
+ 0001:00314C54       uTemplates.TTemplate.SetFirstLine
+ 0001:003144FC       uTemplates.TTemplate.SetGap
+ 0001:00314DE4       uTemplates.TTemplate.SetHideDlgItems
+ 0001:00314CB8       uTemplates.TTemplate.SetHideItems
+ 0001:00314D1C       uTemplates.TTemplate.SetIndentItems
+ 0001:00315C64       uTemplates.TTemplate.SetLock
+ 0001:00314D80       uTemplates.TTemplate.SetOneItemOnly
+ 0001:00313C2C       uTemplates.TTemplate.SetPersonalOwner
+ 0001:00314560       uTemplates.TTemplate.SetPrintName
+ 0001:003145D0       uTemplates.TTemplate.SetRealType
+ 0001:00315970       uTemplates.TTemplate.SetReminderDialog
+ 0001:0031431C       uTemplates.TTemplate.SortChildren
+ 0001:00313EF4       uTemplates.TTemplate.TrueClone
+ 0001:00315C2C       uTemplates.TTemplate.Unlock
+ 0001:003156B4       uTemplates.TTemplate.UpdateImportedFieldNames
+ 0001:00315BEC       uTemplates.TTemplate.ValidID
+ 0003:00003EC4       uTemplates.uCanEditLinkTypeResults
+ 0003:00003ECC       uTemplates.uDGroupConsults
+ 0003:00003ED0       uTemplates.uDGroupProcedures
+ 0003:00003EBC       uTemplates.uDlgCount
+ 0004:000062DC       uTemplates.uIndentLevel
+ 0001:003125A0       uTemplates.UnlockAllTemplates
+ 0001:00316CB4       uTemplates.UpdatePersonalObjects
+ 0003:00003EA0       uTemplates.uPersonalObjects
+ 0001:0030E87C       uTemplates.UserTemplateAccessLevel
+ 0003:00003ED8       uTemplates.uTemplateBPHasObjects
+ 0003:00003EC8       uTemplates.uTemplateDataLoaded
+ 0003:00003ED4       uTemplates.uTemplateDialogCanceled
+ 0002:00001974       uTemplates.uTemplates
+ 0003:00003EC0       uTemplates.uUniqueIDNum
+ 0001:00316DA0       uTemplates.WasTemplateDialogCanceled
+ 0001:00312590       uTemplates.WordImportActive
+ 0001:00310690       uTemplates.WordImportError
+ 0001:00310E44       uTemplates.WordWrap
+ 0001:0031072C       uTemplates.XMLImportError
+ 0001:0016E470       uTIU..TNoteTitles
+ 0001:0016E4DC       uTIU..TTIUPrefs
+ 0001:0016E554       uTIU.MakeConsultDisplayText
+ 0001:0016E638       uTIU.MakeNoteDisplayText
+ 0001:0016E864       uTIU.TNoteTitles.Create
+ 0001:0016E8A8       uTIU.TNoteTitles.Destroy
+ 0004:000062C4       uVA508CPRSCompatibility..1
+ 0001:003058E4       uVA508CPRSCompatibility..TCPRSBaseDialogComponent508Manager
+ 0001:00305BD8       uVA508CPRSCompatibility..TCPRSDialogCheckBox508Manager
+ 0001:00305B1C       uVA508CPRSCompatibility..TCPRSDialogDateBox508Manager
+ 0001:003060A8       uVA508CPRSCompatibility..TCPRSDialogDateCombo508Manager
+ 0001:003059A4       uVA508CPRSCompatibility..TCPRSDialogEdit508Manager
+ 0001:00305A5C       uVA508CPRSCompatibility..TCPRSDialogFieldComboBox508Manager
+ 0001:00305E08       uVA508CPRSCompatibility..TCPRSDialogHyperlink508Manager
+ 0001:00305D50       uVA508CPRSCompatibility..TCPRSDialogLabel508Manager
+ 0001:00305EC4       uVA508CPRSCompatibility..TCPRSDialogNumberComplexManager
+ 0001:00305C94       uVA508CPRSCompatibility..TCPRSDialogRichEdit508Manager
+ 0001:00305F34       uVA508CPRSCompatibility..TCPRSDialogYearEdit508Manager
+ 0001:00305FF0       uVA508CPRSCompatibility..TCPRSNumberField508Manager
+ 0001:00305824       uVA508CPRSCompatibility..TCPRSParentDialogCheckBox508Manager
+ 0001:00306164       uVA508CPRSCompatibility..TfraTemplateFieldButton508Manager
+ 0001:00306224       uVA508CPRSCompatibility..TMentalHealthMemo508Manager
+ 0001:00306C60       uVA508CPRSCompatibility.ControlShiftTabOverride
+ 0001:00306CC4       uVA508CPRSCompatibility.ControlShiftTOverride
+ 0001:00306C00       uVA508CPRSCompatibility.ControlTabOverride
+ 0001:0030647C       uVA508CPRSCompatibility.FastAssignWith508Msg
+ 0001:00307678       uVA508CPRSCompatibility.Finalization
+ 0001:00306CCC       uVA508CPRSCompatibility.GetTabText
+ 0001:00306408       uVA508CPRSCompatibility.QuickAddWith508Msg
+ 0001:00306394       uVA508CPRSCompatibility.QuickCopyWith508Msg
+ 0001:003064E0       uVA508CPRSCompatibility.Register508CompatibilityChanges
+ 0001:00306D84       uVA508CPRSCompatibility.SpeakPatient
+ 0001:00306DB4       uVA508CPRSCompatibility.SpeakTabAndPatient
+ 0001:003062DC       uVA508CPRSCompatibility.SpeakTextInserted
+ 0001:00306E9C       uVA508CPRSCompatibility.TCPRSBaseDialogComponent508Manager.GetCaption
+ 0001:00306FB8       uVA508CPRSCompatibility.TCPRSDialogCheckBox508Manager.Create
+ 0001:00307004       uVA508CPRSCompatibility.TCPRSDialogCheckBox508Manager.GetCaption
+ 0001:00307500       uVA508CPRSCompatibility.TCPRSDialogDateBox508Manager.Create
+ 0001:003075A0       uVA508CPRSCompatibility.TCPRSDialogDateCombo508Manager.Create
+ 0001:00306F20       uVA508CPRSCompatibility.TCPRSDialogEdit508Manager.Create
+ 0001:00306F6C       uVA508CPRSCompatibility.TCPRSDialogFieldComboBox508Manager.Create
+ 0001:0030716C       uVA508CPRSCompatibility.TCPRSDialogHyperlink508Manager.Create
+ 0001:003071B8       uVA508CPRSCompatibility.TCPRSDialogHyperlink508Manager.GetInstructions
+ 0001:003071F0       uVA508CPRSCompatibility.TCPRSDialogHyperlink508Manager.GetValue
+ 0001:0030710C       uVA508CPRSCompatibility.TCPRSDialogLabel508Manager.Create
+ 0001:00307158       uVA508CPRSCompatibility.TCPRSDialogLabel508Manager.GetValue
+ 0001:00307204       uVA508CPRSCompatibility.TCPRSDialogNumberComplexManager.Create
+ 0001:00307240       uVA508CPRSCompatibility.TCPRSDialogNumberComplexManager.Refresh
+ 0001:003070C0       uVA508CPRSCompatibility.TCPRSDialogRichEdit508Manager.Create
+ 0001:0030754C       uVA508CPRSCompatibility.TCPRSDialogYearEdit508Manager.Create
+ 0001:00307598       uVA508CPRSCompatibility.TCPRSDialogYearEdit508Manager.Redirect
+ 0001:0030726C       uVA508CPRSCompatibility.TCPRSNumberField508Manager.Create
+ 0001:003072B8       uVA508CPRSCompatibility.TCPRSNumberField508Manager.GetCaption
+ 0001:00306B9C       uVA508CPRSCompatibility.TCPRSParentDialogCheckBox508Manager.Create
+ 0001:00306BE8       uVA508CPRSCompatibility.TCPRSParentDialogCheckBox508Manager.GetCaption
+ 0001:00307348       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.Create
+ 0001:00307394       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetCaption
+ 0001:0030741C       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetComponentName
+ 0001:0030744C       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetInstructions
+ 0001:00307490       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetValue
+ 0001:003075EC       uVA508CPRSCompatibility.TMentalHealthMemo508Manager.Create
+ 0001:00307638       uVA508CPRSCompatibility.TMentalHealthMemo508Manager.GetComponentName
+ 0001:00307658       uVA508CPRSCompatibility.TMentalHealthMemo508Manager.GetInstructions
+ 0002:0000193C       uVA508CPRSCompatibility.uVA508CPRSCompatibility
+ 0004:00004920       uVitals..5
+ 0001:001302E0       uVitals.AddVital
+ 0001:0013036C       uVitals.AssignVitals2List
+ 0001:0012FC90       uVitals.CloseVitalsDLL
+ 0001:001306D0       uVitals.ConvertHeight2Inches
+ 0001:0012FF3C       uVitals.ConvertVital
+ 0001:00130A44       uVitals.ConvertVitalData
+ 0001:00131190       uVitals.Finalization
+ 0001:001308B4       uVitals.FormatVitalForNote
+ 0001:00130184       uVitals.GetVitalStr
+ 0001:0013028C       uVitals.GetVitalUser
+ 0001:0012FD8C       uVitals.InitPainCombo
+ 0001:00131158       uVitals.IsNumericWeight
+ 0003:000033E8       uVitals.uVitalFrames
+ 0002:00000F24       uVitals.uVitals
+ 0001:00130EB8       uVitals.ValidVitalsDate
+ 0003:0000335C       uVitals.VitalCodes
+ 0001:00130698       uVitals.VitalControlTag
+ 0003:00003394       uVitals.VitalDesc
+ 0001:0012FCDC       uVitals.VitalErrorText
+ 0003:000033C0       uVitals.VitalFormatedDesc
+ 0001:00130544       uVitals.VitalInvalid
+ 0003:00003334       uVitals.VitalPCECodes
+ 0003:00003384       uVitals.VitalsDLLHandle
+ 0003:00003388       uVitals.VitalTagCodes
+ 0004:00003490       UxTheme..1
+ 0004:000033D8       UxTheme.CloseThemeData
+ 0004:000033DC       UxTheme.DrawThemeBackground
+ 0004:00003400       UxTheme.DrawThemeEdge
+ 0004:00003404       UxTheme.DrawThemeIcon
+ 0004:00003488       UxTheme.DrawThemeParentBackground
+ 0004:000033E0       UxTheme.DrawThemeText
+ 0004:00003470       UxTheme.EnableThemeDialogTexture
+ 0004:0000348C       UxTheme.EnableTheming
+ 0001:00038564       UxTheme.Finalization
+ 0001:00037C18       UxTheme.FreeThemeLibrary
+ 0004:00003480       UxTheme.GetCurrentThemeName
+ 0004:00003478       UxTheme.GetThemeAppProperties
+ 0004:000033E4       UxTheme.GetThemeBackgroundContentRect
+ 0004:000033E8       UxTheme.GetThemeBackgroundExtent
+ 0004:000033F8       UxTheme.GetThemeBackgroundRegion
+ 0004:0000341C       UxTheme.GetThemeBool
+ 0004:00003410       UxTheme.GetThemeColor
+ 0004:00003484       UxTheme.GetThemeDocumentationProperty
+ 0004:00003424       UxTheme.GetThemeEnumValue
+ 0004:00003444       UxTheme.GetThemeFilename
+ 0004:0000342C       UxTheme.GetThemeFont
+ 0004:00003420       UxTheme.GetThemeInt
+ 0004:00003438       UxTheme.GetThemeIntList
+ 0004:00003434       UxTheme.GetThemeMargins
+ 0004:00003414       UxTheme.GetThemeMetric
+ 0004:000033EC       UxTheme.GetThemePartSize
+ 0004:00003428       UxTheme.GetThemePosition
+ 0004:0000343C       UxTheme.GetThemePropertyOrigin
+ 0004:00003430       UxTheme.GetThemeRect
+ 0004:00003418       UxTheme.GetThemeString
+ 0004:00003450       UxTheme.GetThemeSysBool
+ 0004:00003448       UxTheme.GetThemeSysColor
+ 0004:0000344C       UxTheme.GetThemeSysColorBrush
+ 0004:00003458       UxTheme.GetThemeSysFont
+ 0004:00003460       UxTheme.GetThemeSysInt
+ 0004:00003454       UxTheme.GetThemeSysSize
+ 0004:0000345C       UxTheme.GetThemeSysString
+ 0004:000033F0       UxTheme.GetThemeTextExtent
+ 0004:000033F4       UxTheme.GetThemeTextMetrics
+ 0004:0000346C       UxTheme.GetWindowTheme
+ 0004:000033FC       UxTheme.HitTestThemeBackground
+ 0001:00037DD8       UxTheme.InitThemeLibrary
+ 0004:00003468       UxTheme.IsAppThemed
+ 0004:00003464       UxTheme.IsThemeActive
+ 0004:0000340C       UxTheme.IsThemeBackgroundPartiallyTransparent
+ 0004:00003474       UxTheme.IsThemeDialogTextureEnabled
+ 0004:00003408       UxTheme.IsThemePartDefined
+ 0004:0000349C       UxTheme.Lock
+ 0004:000033D4       UxTheme.OpenThemeData
+ 0004:00003498       UxTheme.ReferenceCount
+ 0004:0000347C       UxTheme.SetThemeAppProperties
+ 0004:00003440       UxTheme.SetWindowTheme
+ 0004:00003494       UxTheme.ThemeLibrary
+ 0001:0003853C       UxTheme.UseThemes
+ 0002:000003E8       UxTheme.UxTheme
+ 0001:00180A38       VA2006Utils..THeaderControl2006BugFixer
+ 0001:00180BFC       VA2006Utils.FixHeaderControlDelphi2006Bug
+ 0001:00180BA0       VA2006Utils.THeaderControl2006BugFixer.CreateWrapper
+ 0001:00180B08       VA2006Utils.THeaderControl2006BugFixer.HeaderControlMessageHandler
+ 0001:00180B68       VA2006Utils.THeaderControl2006BugFixer.Notification
+ 0004:000037E0       VA508AccessibilityManager..21
+ 0001:00107DFC       VA508AccessibilityManager..TAlternateHandleData
+ 0001:0010B72C       VA508AccessibilityManager..TComplexDataItem
+ 0001:00106200       VA508AccessibilityManager..TComponentHelper
+ 0001:0010632C       VA508AccessibilityManager..TDFMData
+ 0001:001063AC       VA508AccessibilityManager..TMSAAData
+ 0001:0010568C       VA508AccessibilityManager..TVA508AccessibilityCollection
+ 0001:001054C4       VA508AccessibilityManager..TVA508AccessibilityItem
+ 0001:00105774       VA508AccessibilityManager..TVA508AccessibilityManager
+ 0001:00105CB8       VA508AccessibilityManager..TVA508ChainedLabel
+ 0001:0010612C       VA508AccessibilityManager..TVA508ComplexComponentManager
+ 0001:0010590C       VA508AccessibilityManager..TVA508ComponentAccessibility
+ 0001:00105C04       VA508AccessibilityManager..TVA508ComponentManager
+ 0001:00106074       VA508AccessibilityManager..TVA508ManagedComponentClass
+ 0001:00105DF0       VA508AccessibilityManager..TVA508StaticText
+ 0001:001062B0       VA508AccessibilityManager..TVAGlobalComponentRegistry
+ 0001:001085EC       VA508AccessibilityManager.AddControlType
+ 0003:000030C8       VA508AccessibilityManager.AltHandleClasses
+ 0001:00106EF4       VA508AccessibilityManager.BasicComponentCheck
+ 0003:000030D8       VA508AccessibilityManager.CanCheckEvent
+ 0001:00109474       VA508AccessibilityManager.CheckComplexClasses
+ 0001:001093CC       VA508AccessibilityManager.CheckManagedClasses
+ 0003:000030D0       VA508AccessibilityManager.ComplexClasses
+ 0003:00003078       VA508AccessibilityManager.ControlsWithDefaultPropertySettings
+ 0001:00106404       VA508AccessibilityManager.CreateGlobalRegistry
+ 0001:00106428       VA508AccessibilityManager.CreateGlobalVars
+ 0001:001094EC       VA508AccessibilityManager.CreateHelper
+ 0001:0010AEF0       VA508AccessibilityManager.DrawBottom
+ 0001:0010B5C0       VA508AccessibilityManager.DrawBottom
+ 0001:0010B434       VA508AccessibilityManager.DrawPartials
+ 0001:0010B560       VA508AccessibilityManager.DrawSides
+ 0001:0010B2E8       VA508AccessibilityManager.DrawText
+ 0001:0010B4D0       VA508AccessibilityManager.DrawTop
+ 0001:0010AE90       VA508AccessibilityManager.DrawTop
+ 0001:00106EB0       VA508AccessibilityManager.error
+ 0001:0010BC00       VA508AccessibilityManager.Finalization
+ 0001:00107FC4       VA508AccessibilityManager.FindMSAAQueryData
+ 0001:00106C98       VA508AccessibilityManager.FindOwnedComponent
+ 0001:00109B7C       VA508AccessibilityManager.FindRootHandle
+ 0001:00106448       VA508AccessibilityManager.FreeGlobalVars
+ 0001:001089B4       VA508AccessibilityManager.GetDataValues
+ 0001:00108E34       VA508AccessibilityManager.GetMessageHookProc
+ 0003:000030C4       VA508AccessibilityManager.GlobalRegistry
+ 0001:00108070       VA508AccessibilityManager.HandleStillValid
+ 0001:0010879C       VA508AccessibilityManager.HelperValid
+ 0001:0010811C       VA508AccessibilityManager.Init
+ 0001:0010AD9C       VA508AccessibilityManager.Init
+ 0001:0010B294       VA508AccessibilityManager.Init
+ 0001:0010ADF0       VA508AccessibilityManager.InitDrawBorder
+ 0001:0010B364       VA508AccessibilityManager.InitDrawBorder
+ 0001:0010A198       VA508AccessibilityManager.InitializeComponentHelper
+ 0001:00108928       VA508AccessibilityManager.InitializeVars
+ 0003:000030CC       VA508AccessibilityManager.ManagedClasses
+ 0003:000030C0       VA508AccessibilityManager.MasterPropertyList
+ 0003:000030D4       VA508AccessibilityManager.MSAAQueryClasses
+ 0003:000030A8       VA508AccessibilityManager.NewComponentData
+ 0001:001080A4       VA508AccessibilityManager.NoChangeNeeded
+ 0001:00108170       VA508AccessibilityManager.ProcessCaptionChange
+ 0001:0010822C       VA508AccessibilityManager.ProcessItemChange
+ 0001:00108524       VA508AccessibilityManager.ProcessStateChange
+ 0001:00107E60       VA508AccessibilityManager.RegisterAlternateHandleComponent
+ 0001:00107ED8       VA508AccessibilityManager.RegisterComplexComponentManager
+ 0001:00109588       VA508AccessibilityManager.RegisterComponent
+ 0001:00107F4C       VA508AccessibilityManager.RegisterManagedComponentClass
+ 0001:00108010       VA508AccessibilityManager.RegisterMSAAProc
+ 0001:00108064       VA508AccessibilityManager.RegisterMSAAQueryListClassProc
+ 0001:0010866C       VA508AccessibilityManager.SendChangeData
+ 0001:00109714       VA508AccessibilityManager.SkipCheck
+ 0001:0010B78C       VA508AccessibilityManager.TComplexDataItem.Create
+ 0001:0010B7E4       VA508AccessibilityManager.TComplexDataItem.Destroy
+ 0001:0010A3A4       VA508AccessibilityManager.TComponentHelper.ClearRedirect
+ 0001:0010A3B4       VA508AccessibilityManager.TComponentHelper.Create
+ 0001:0010A3E8       VA508AccessibilityManager.TComponentHelper.Destroy
+ 0001:0010A444       VA508AccessibilityManager.TComponentHelper.GetCaption
+ 0001:0010A4E4       VA508AccessibilityManager.TComponentHelper.GetComponentName
+ 0001:0010A578       VA508AccessibilityManager.TComponentHelper.GetData
+ 0001:0010A61C       VA508AccessibilityManager.TComponentHelper.GetInstructions
+ 0001:0010A6B0       VA508AccessibilityManager.TComponentHelper.GetItem
+ 0001:0010A718       VA508AccessibilityManager.TComponentHelper.GetItemInstructions
+ 0001:0010A7AC       VA508AccessibilityManager.TComponentHelper.GetState
+ 0001:0010A85C       VA508AccessibilityManager.TComponentHelper.GetValue
+ 0001:0010A320       VA508AccessibilityManager.TComponentHelper.InitializeComponentManager
+ 0001:0010A9E4       VA508AccessibilityManager.TComponentHelper.ManageCaption
+ 0001:0010A8D8       VA508AccessibilityManager.TComponentHelper.ManageComponentName
+ 0001:0010A924       VA508AccessibilityManager.TComponentHelper.ManageData
+ 0001:0010A954       VA508AccessibilityManager.TComponentHelper.ManageItemInstructions
+ 0001:0010A9A0       VA508AccessibilityManager.TComponentHelper.ManageValue
+ 0001:0010AA30       VA508AccessibilityManager.TComponentHelper.MonitorForItemChange
+ 0001:0010AA74       VA508AccessibilityManager.TComponentHelper.MonitorForStateChange
+ 0001:0010AAD0       VA508AccessibilityManager.TComponentHelper.Redirect
+ 0001:0010AAE8       VA508AccessibilityManager.TComponentHelper.StandardComponent
+ 0001:00106898       VA508AccessibilityManager.TVA508AccessibilityCollection.Add
+ 0001:001068A4       VA508AccessibilityManager.TVA508AccessibilityCollection.ComponentNotifyEvent
+ 0001:001068F0       VA508AccessibilityManager.TVA508AccessibilityCollection.Create
+ 0001:0010696C       VA508AccessibilityManager.TVA508AccessibilityCollection.Destroy
+ 0001:001069AC       VA508AccessibilityManager.TVA508AccessibilityCollection.EnsureItemExists
+ 0001:001069B4       VA508AccessibilityManager.TVA508AccessibilityCollection.FindItem
+ 0001:00106A58       VA508AccessibilityManager.TVA508AccessibilityCollection.GetItem
+ 0001:00106A6C       VA508AccessibilityManager.TVA508AccessibilityCollection.GetOwner
+ 0001:00106A70       VA508AccessibilityManager.TVA508AccessibilityCollection.IsComponentRegistered
+ 0001:00106B58       VA508AccessibilityManager.TVA508AccessibilityCollection.RegisterComponent
+ 0001:00106AD4       VA508AccessibilityManager.TVA508AccessibilityCollection.UnregisterComponent
+ 0001:001064BC       VA508AccessibilityManager.TVA508AccessibilityItem.Assign
+ 0001:00106518       VA508AccessibilityManager.TVA508AccessibilityItem.Create
+ 0001:00106550       VA508AccessibilityManager.TVA508AccessibilityItem.Destroy
+ 0001:00106594       VA508AccessibilityManager.TVA508AccessibilityItem.GetDisplayName
+ 0001:0010666C       VA508AccessibilityManager.TVA508AccessibilityItem.InitComponent
+ 0001:00106690       VA508AccessibilityManager.TVA508AccessibilityItem.Manager
+ 0001:00106698       VA508AccessibilityManager.TVA508AccessibilityItem.Parent
+ 0001:0010669C       VA508AccessibilityManager.TVA508AccessibilityItem.SetComponent
+ 0001:0010670C       VA508AccessibilityManager.TVA508AccessibilityItem.SetDefault
+ 0001:00106798       VA508AccessibilityManager.TVA508AccessibilityItem.SetLabel
+ 0001:001067C0       VA508AccessibilityManager.TVA508AccessibilityItem.SetProperty
+ 0001:0010681C       VA508AccessibilityManager.TVA508AccessibilityItem.SetText
+ 0001:00106854       VA508AccessibilityManager.TVA508AccessibilityItem.UpdateStatus
+ 0001:00106BE8       VA508AccessibilityManager.TVA508AccessibilityManager.Create
+ 0001:001075F4       VA508AccessibilityManager.TVA508AccessibilityManager.DefineProperties
+ 0001:00106C50       VA508AccessibilityManager.TVA508AccessibilityManager.Destroy
+ 0001:00106DBC       VA508AccessibilityManager.TVA508AccessibilityManager.FindComponentOnForm
+ 0001:00106E98       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentManager
+ 0001:00106F74       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentName
+ 0001:00106FEC       VA508AccessibilityManager.TVA508AccessibilityManager.GetData
+ 0001:00106FF0       VA508AccessibilityManager.TVA508AccessibilityManager.GetDefaultStringProperty
+ 0001:001070B8       VA508AccessibilityManager.TVA508AccessibilityManager.GetPropertList
+ 0001:00107280       VA508AccessibilityManager.TVA508AccessibilityManager.GetRootComponent
+ 0001:00107CEC       VA508AccessibilityManager.TVA508AccessibilityManager.Initialize
+ 0001:0010735C       VA508AccessibilityManager.TVA508AccessibilityManager.IsPropertyNameValid
+ 0001:001073C8       VA508AccessibilityManager.TVA508AccessibilityManager.Loaded
+ 0001:00107580       VA508AccessibilityManager.TVA508AccessibilityManager.Notification
+ 0001:001075D8       VA508AccessibilityManager.TVA508AccessibilityManager.OwnerCheck
+ 0001:00107630       VA508AccessibilityManager.TVA508AccessibilityManager.ReadData
+ 0001:00107890       VA508AccessibilityManager.TVA508AccessibilityManager.RefreshComponents
+ 0001:00107AC4       VA508AccessibilityManager.TVA508AccessibilityManager.ScreenReaderInquiry
+ 0001:00107C1C       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessText
+ 0001:00107C3C       VA508AccessibilityManager.TVA508AccessibilityManager.SetComponentManager
+ 0001:00107898       VA508AccessibilityManager.TVA508AccessibilityManager.WriteData
+ 0001:0010B248       VA508AccessibilityManager.TVA508ChainedLabel.Notification
+ 0001:0010B66C       VA508AccessibilityManager.TVA508ChainedLabel.Paint
+ 0001:0010B6D8       VA508AccessibilityManager.TVA508ChainedLabel.SetNextLabel
+ 0001:0010B818       VA508AccessibilityManager.TVA508ComplexComponentManager.AddSubControl
+ 0001:0010B914       VA508AccessibilityManager.TVA508ComplexComponentManager.ClearSubControls
+ 0001:0010BB10       VA508AccessibilityManager.TVA508ComplexComponentManager.ComponentNotifyEvent
+ 0001:0010B98C       VA508AccessibilityManager.TVA508ComplexComponentManager.Create
+ 0001:0010BA08       VA508AccessibilityManager.TVA508ComplexComponentManager.Destroy
+ 0001:0010BA50       VA508AccessibilityManager.TVA508ComplexComponentManager.GetSubComponentList
+ 0001:0010BAA0       VA508AccessibilityManager.TVA508ComplexComponentManager.IndexOfComponentItem
+ 0001:0010BAD8       VA508AccessibilityManager.TVA508ComplexComponentManager.IndexOfSubComponentXRef
+ 0001:0010B8AC       VA508AccessibilityManager.TVA508ComplexComponentManager.RemoveSubControl
+ 0001:0010BB5C       VA508AccessibilityManager.TVA508ComplexComponentManager.SubComponentNotifyEvent
+ 0001:00109FB0       VA508AccessibilityManager.TVA508ComponentAccessibility.Create
+ 0001:0010A000       VA508AccessibilityManager.TVA508ComponentAccessibility.SetComponent
+ 0001:00109E58       VA508AccessibilityManager.TVA508ComponentManager.Create
+ 0001:00109E8C       VA508AccessibilityManager.TVA508ComponentManager.GetCaption
+ 0001:00109E98       VA508AccessibilityManager.TVA508ComponentManager.GetComponentName
+ 0001:00109EA4       VA508AccessibilityManager.TVA508ComponentManager.GetData
+ 0001:00109ED8       VA508AccessibilityManager.TVA508ComponentManager.GetInstructions
+ 0001:00109EE4       VA508AccessibilityManager.TVA508ComponentManager.GetItem
+ 0001:00109EE8       VA508AccessibilityManager.TVA508ComponentManager.GetItemInstructions
+ 0001:00109EF4       VA508AccessibilityManager.TVA508ComponentManager.GetState
+ 0001:00109F00       VA508AccessibilityManager.TVA508ComponentManager.GetValue
+ 0001:00109F0C       VA508AccessibilityManager.TVA508ComponentManager.ManageCaption
+ 0001:00109F14       VA508AccessibilityManager.TVA508ComponentManager.ManageComponentName
+ 0001:00109F1C       VA508AccessibilityManager.TVA508ComponentManager.ManageData
+ 0001:00109F24       VA508AccessibilityManager.TVA508ComponentManager.ManageInstructions
+ 0001:00109F2C       VA508AccessibilityManager.TVA508ComponentManager.ManageItemInstructions
+ 0001:00109F34       VA508AccessibilityManager.TVA508ComponentManager.ManageState
+ 0001:00109F3C       VA508AccessibilityManager.TVA508ComponentManager.ManageValue
+ 0001:00109F44       VA508AccessibilityManager.TVA508ComponentManager.MonitorForItemChange
+ 0001:00109F4C       VA508AccessibilityManager.TVA508ComponentManager.MonitorForStateChange
+ 0001:00109F54       VA508AccessibilityManager.TVA508ComponentManager.Redirect
+ 0001:00109F5C       VA508AccessibilityManager.TVA508ComponentManager.RedirectsComponent
+ 0001:00109F64       VA508AccessibilityManager.TVA508ManagedComponentClass.Create
+ 0001:0010AAFC       VA508AccessibilityManager.TVA508StaticText.CMFontChanged
+ 0001:0010AB10       VA508AccessibilityManager.TVA508StaticText.CMTextChanged
+ 0001:0010AB24       VA508AccessibilityManager.TVA508StaticText.Create
+ 0001:0010ABB0       VA508AccessibilityManager.TVA508StaticText.DeleteChain
+ 0001:0010AC4C       VA508AccessibilityManager.TVA508StaticText.Destroy
+ 0001:0010AC88       VA508AccessibilityManager.TVA508StaticText.DoEnter
+ 0001:0010ACB4       VA508AccessibilityManager.TVA508StaticText.DoExit
+ 0001:0010ACE0       VA508AccessibilityManager.TVA508StaticText.GetAlignment
+ 0001:0010ACF0       VA508AccessibilityManager.TVA508StaticText.GetLabelCaption
+ 0001:0010AD08       VA508AccessibilityManager.TVA508StaticText.GetRootName
+ 0001:0010AD1C       VA508AccessibilityManager.TVA508StaticText.GetShowAccelChar
+ 0001:0010AD2C       VA508AccessibilityManager.TVA508StaticText.InvalidateAll
+ 0001:0010AD5C       VA508AccessibilityManager.TVA508StaticText.Notification
+ 0001:0010AFE8       VA508AccessibilityManager.TVA508StaticText.Paint
+ 0001:0010B014       VA508AccessibilityManager.TVA508StaticText.SetAlignment
+ 0001:0010B020       VA508AccessibilityManager.TVA508StaticText.SetLabelCaption
+ 0001:0010B110       VA508AccessibilityManager.TVA508StaticText.SetNextLabel
+ 0001:0010B154       VA508AccessibilityManager.TVA508StaticText.SetParent
+ 0001:0010B08C       VA508AccessibilityManager.TVA508StaticText.SetRootName
+ 0001:0010B1AC       VA508AccessibilityManager.TVA508StaticText.SetShowAccelChar
+ 0001:0010B1B8       VA508AccessibilityManager.TVA508StaticText.UpdateSize
+ 0001:001086D0       VA508AccessibilityManager.TVAGlobalComponentRegistry.CheckForChangeEvent
+ 0001:00108C14       VA508AccessibilityManager.TVAGlobalComponentRegistry.ComponentDataNeededEvent
+ 0001:00108EC4       VA508AccessibilityManager.TVAGlobalComponentRegistry.Create
+ 0001:00108FC8       VA508AccessibilityManager.TVAGlobalComponentRegistry.Destroy
+ 0004:000037E4       VA508AccessibilityManager.TVAGlobalComponentRegistry.FActive
+ 0004:000037E8       VA508AccessibilityManager.TVAGlobalComponentRegistry.FGetMsgHookHandle
+ 0001:0010903C       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetCompKey
+ 0001:00109050       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHandle
+ 0001:00109124       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHelper
+ 0001:001091D0       VA508AccessibilityManager.TVAGlobalComponentRegistry.HasHandle
+ 0001:001096B0       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterComponent
+ 0001:001092C4       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterFieldObject
+ 0001:00109388       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterMSAA
+ 0001:00109738       VA508AccessibilityManager.TVAGlobalComponentRegistry.TimerEvent
+ 0001:00109858       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterComponent
+ 0001:00109988       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterMSAA
+ 0001:00109DCC       VA508AccessibilityManager.TVAGlobalComponentRegistry.UpdateHandles
+ 0001:00107C58       VA508AccessibilityManager.Update
+ 0001:00109C04       VA508AccessibilityManager.UpdateAllHandles
+ 0001:00109C78       VA508AccessibilityManager.UpdateChildrenHandles
+ 0001:001074D4       VA508AccessibilityManager.UpdateComponent
+ 0001:00108834       VA508AccessibilityManager.UpdateComponentData
+ 0001:001099CC       VA508AccessibilityManager.UpdateHandle
+ 0002:00000CDC       VA508AccessibilityManager.VA508AccessibilityManager
+ 0004:00003798       VA508AccessibilityRouter..2
+ 0001:000F9840       VA508AccessibilityRouter..TMasterScreenReader
+ 0001:000F97C4       VA508AccessibilityRouter..TNullScreenReader
+ 0001:000F9748       VA508AccessibilityRouter..TVA508ScreenReader
+ 0003:00002DEC       VA508AccessibilityRouter.ActiveScreenReader
+ 0001:000FA89C       VA508AccessibilityRouter.AddDescription
+ 0003:00002E04       VA508AccessibilityRouter.CheckScreenReaderSystemActive
+ 0001:000FA0B8       VA508AccessibilityRouter.Coded
+ 0001:000FABE4       VA508AccessibilityRouter.ComponentDataRequested
+ 0001:000F9C3C       VA508AccessibilityRouter.CreateTimer
+ 0001:000F9EFC       VA508AccessibilityRouter.Decode
+ 0001:000FA514       VA508AccessibilityRouter.EnsureDialogAreSpecified
+ 0001:000FA4C0       VA508AccessibilityRouter.EnumResNameProc
+ 0001:000FAE0C       VA508AccessibilityRouter.Finalization
+ 0001:000F98F8       VA508AccessibilityRouter.GetScreenReader
+ 0003:00002DF0       VA508AccessibilityRouter.MasterScreenReader
+ 0003:00002DFC       VA508AccessibilityRouter.Need2RegisterData
+ 0003:00002E00       VA508AccessibilityRouter.OK2RegisterData
+ 0001:000F9940       VA508AccessibilityRouter.PostScreenReaderCheckEvent
+ 0003:00002DF8       VA508AccessibilityRouter.SaveInitProc
+ 0001:000F9CA0       VA508AccessibilityRouter.ScreenReaderSystemActive
+ 0001:000F9D80       VA508AccessibilityRouter.SpecifyFormIsNotADialog
+ 0001:000F9E84       VA508AccessibilityRouter.TMasterScreenReader.AddComponentDataNeededEventHandler
+ 0001:000F9E98       VA508AccessibilityRouter.TMasterScreenReader.Create
+ 0001:000F9F9C       VA508AccessibilityRouter.TMasterScreenReader.DecodeBehavior
+ 0001:000FA074       VA508AccessibilityRouter.TMasterScreenReader.Destroy
+ 0001:000FA190       VA508AccessibilityRouter.TMasterScreenReader.EncodeBehavior
+ 0001:000FA230       VA508AccessibilityRouter.TMasterScreenReader.HandleSRException
+ 0001:000FA2A4       VA508AccessibilityRouter.TMasterScreenReader.ProcessCustomKeyCommand
+ 0001:000FA2D0       VA508AccessibilityRouter.TMasterScreenReader.RegisterClassAsMSAA
+ 0001:000FA334       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomBehavior
+ 0001:000FA448       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomClassBehavior
+ 0001:000FA74C       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomData
+ 0001:000FA9CC       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomKeyMapping
+ 0001:000FAAAC       VA508AccessibilityRouter.TMasterScreenReader.RegisterDictionaryChange
+ 0001:000FAB14       VA508AccessibilityRouter.TMasterScreenReader.RegistrationAllowed
+ 0001:000FAB2C       VA508AccessibilityRouter.TMasterScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:000FAB40       VA508AccessibilityRouter.TMasterScreenReader.Speak
+ 0001:000FAD14       VA508AccessibilityRouter.TNullScreenReader.AddComponentDataNeededEventHandler
+ 0001:000FAD1C       VA508AccessibilityRouter.TNullScreenReader.RegisterClassAsMSAA
+ 0001:000FAD44       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomClassBehavior
+ 0001:000FAD6C       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomKeyMapping
+ 0001:000FADB4       VA508AccessibilityRouter.TNullScreenReader.RegisterDictionaryChange
+ 0001:000FADDC       VA508AccessibilityRouter.TNullScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:000FADE4       VA508AccessibilityRouter.TNullScreenReader.Speak
+ 0003:00002DF4       VA508AccessibilityRouter.uNonDialogClassNames
+ 0003:00002E0C       VA508AccessibilityRouter.uPostScreenReaderActivationTimer
+ 0003:00002E08       VA508AccessibilityRouter.uScreenReaderSystemActive
+ 0002:00000AF0       VA508AccessibilityRouter.VA508AccessibilityRouter
+ 0001:000F98BC       VA508AccessibilityRouter.VA508RouterInitProc
+ 0001:00104C8C       VA508Classes..EVA508AccessibilityException
+ 0001:00104D70       VA508Classes.EnsureManager
+ 0001:00104CF8       VA508Classes.HasAnotherAccessibilityManager
+ 0001:00104E8C       VA508Classes.VA508ComponentCreationCheck
+ 0001:001051B0       VA508Classes.VA508ComponentDestructionCheck
+ 0004:000037DC       VA508DelphiCompatibility..2
+ 0001:0010276C       VA508DelphiCompatibility..TCheckBox508Manager
+ 0001:0010281C       VA508DelphiCompatibility..TCheckListBox508Manager
+ 0001:00102A30       VA508DelphiCompatibility..TCustomGrid508Manager
+ 0001:00102980       VA508DelphiCompatibility..TVA508ComboManager
+ 0001:001028D0       VA508DelphiCompatibility..TVA508EditManager
+ 0001:001026B8       VA508DelphiCompatibility..TVA508StaticTextManager
+ 0001:00102AE4       VA508DelphiCompatibility.Append
+ 0001:00102B80       VA508DelphiCompatibility.AppendHeader
+ 0001:00102F0C       VA508DelphiCompatibility.CustomComboAlternateHandle
+ 0001:001037DC       VA508DelphiCompatibility.Finalization
+ 0001:00102F14       VA508DelphiCompatibility.GetCheckBoxComponentName
+ 0001:00102F6C       VA508DelphiCompatibility.GetCheckBoxInstructionMessage
+ 0001:00102FE0       VA508DelphiCompatibility.GetCheckBoxStateText
+ 0001:00102BF8       VA508DelphiCompatibility.ListViewIndexQueryProc
+ 0001:00102DA8       VA508DelphiCompatibility.RegisterStandardDelphiComponents
+ 0001:00103064       VA508DelphiCompatibility.TCheckBox508Manager.Create
+ 0001:001030B0       VA508DelphiCompatibility.TCheckBox508Manager.GetComponentName
+ 0001:001030C8       VA508DelphiCompatibility.TCheckBox508Manager.GetInstructions
+ 0001:001030E4       VA508DelphiCompatibility.TCheckBox508Manager.GetState
+ 0001:001030FC       VA508DelphiCompatibility.TCheckListBox508Manager.Create
+ 0001:00103148       VA508DelphiCompatibility.TCheckListBox508Manager.GetComponentName
+ 0001:001031E0       VA508DelphiCompatibility.TCheckListBox508Manager.GetIndex
+ 0001:00103214       VA508DelphiCompatibility.TCheckListBox508Manager.GetItem
+ 0001:001031B0       VA508DelphiCompatibility.TCheckListBox508Manager.GetItemInstructions
+ 0001:00103240       VA508DelphiCompatibility.TCheckListBox508Manager.GetState
+ 0001:00103270       VA508DelphiCompatibility.TCustomGrid508Manager.Create
+ 0001:001032BC       VA508DelphiCompatibility.TCustomGrid508Manager.GetComponentName
+ 0001:001032E0       VA508DelphiCompatibility.TCustomGrid508Manager.GetInstructions
+ 0001:0010336C       VA508DelphiCompatibility.TCustomGrid508Manager.GetItem
+ 0001:001033A0       VA508DelphiCompatibility.TCustomGrid508Manager.GetValue
+ 0001:0010377C       VA508DelphiCompatibility.TVA508ComboManager.Create
+ 0001:001037C8       VA508DelphiCompatibility.TVA508ComboManager.GetValue
+ 0001:0010371C       VA508DelphiCompatibility.TVA508EditManager.Create
+ 0001:00103768       VA508DelphiCompatibility.TVA508EditManager.GetValue
+ 0001:00103608       VA508DelphiCompatibility.TVA508StaticTextManager.Create
+ 0001:00103654       VA508DelphiCompatibility.TVA508StaticTextManager.GetCaption
+ 0001:00103674       VA508DelphiCompatibility.TVA508StaticTextManager.GetComponentName
+ 0001:00103698       VA508DelphiCompatibility.TVA508StaticTextManager.GetValue
+ 0002:00000CCC       VA508DelphiCompatibility.VA508DelphiCompatibility
+ 0001:00103A30       VA508ImageListLabeler..TVA508ImageListComponent
+ 0001:00103B1C       VA508ImageListLabeler..TVA508ImageListComponents
+ 0001:0010380C       VA508ImageListLabeler..TVA508ImageListLabel
+ 0001:00103BF8       VA508ImageListLabeler..TVA508ImageListLabeler
+ 0001:0010394C       VA508ImageListLabeler..TVA508ImageListLabels
+ 0001:0010490C       VA508ImageListLabeler.TVA508ImageListComponent.Assign
+ 0001:0010493C       VA508ImageListLabeler.TVA508ImageListComponent.ComponentNotifyEvent
+ 0001:00104954       VA508ImageListLabeler.TVA508ImageListComponent.Destroy
+ 0001:00104990       VA508ImageListLabeler.TVA508ImageListComponent.GetDisplayName
+ 0001:00104A54       VA508ImageListLabeler.TVA508ImageListComponent.ImageListTypes
+ 0001:00104B20       VA508ImageListLabeler.TVA508ImageListComponent.Labeler
+ 0001:00104B3C       VA508ImageListLabeler.TVA508ImageListComponent.SetComponent
+ 0001:0010486C       VA508ImageListLabeler.TVA508ImageListComponents.Create
+ 0001:001048B0       VA508ImageListLabeler.TVA508ImageListComponents.Destroy
+ 0001:001048DC       VA508ImageListLabeler.TVA508ImageListComponents.GetItem
+ 0001:001048F0       VA508ImageListLabeler.TVA508ImageListComponents.GetOwner
+ 0001:001048F4       VA508ImageListLabeler.TVA508ImageListComponents.Notify
+ 0001:001046C8       VA508ImageListLabeler.TVA508ImageListLabel.Assign
+ 0001:00104704       VA508ImageListLabeler.TVA508ImageListLabel.Changed
+ 0001:00104718       VA508ImageListLabeler.TVA508ImageListLabel.Create
+ 0001:0010475C       VA508ImageListLabeler.TVA508ImageListLabel.Destroy
+ 0001:00104784       VA508ImageListLabeler.TVA508ImageListLabel.Labeler
+ 0001:001047A0       VA508ImageListLabeler.TVA508ImageListLabel.Refresh
+ 0001:001047AC       VA508ImageListLabeler.TVA508ImageListLabel.SetCaption
+ 0001:001047E0       VA508ImageListLabeler.TVA508ImageListLabel.SetImageIndex
+ 0001:00104858       VA508ImageListLabeler.TVA508ImageListLabel.SetOverlayIndex
+ 0001:00103D5C       VA508ImageListLabeler.TVA508ImageListLabeler.ComponentImageListChanged
+ 0001:00103D64       VA508ImageListLabeler.TVA508ImageListLabeler.Create
+ 0001:00103E08       VA508ImageListLabeler.TVA508ImageListLabeler.Destroy
+ 0001:00103E70       VA508ImageListLabeler.TVA508ImageListLabeler.ImageIndexQuery
+ 0001:00103F28       VA508ImageListLabeler.TVA508ImageListLabeler.ImageListChange
+ 0001:00103FC8       VA508ImageListLabeler.TVA508ImageListLabeler.ItemChanged
+ 0001:00103FE8       VA508ImageListLabeler.TVA508ImageListLabeler.Loaded
+ 0001:00104160       VA508ImageListLabeler.TVA508ImageListLabeler.Notification
+ 0001:00104010       VA508ImageListLabeler.TVA508ImageListLabeler.SaveChanges
+ 0001:0010418C       VA508ImageListLabeler.TVA508ImageListLabeler.SetImageList
+ 0001:0010432C       VA508ImageListLabeler.TVA508ImageListLabeler.SetRemoteLabeler
+ 0001:00104354       VA508ImageListLabeler.TVA508ImageListLabels.Add
+ 0001:00104360       VA508ImageListLabeler.TVA508ImageListLabels.Create
+ 0001:00104450       VA508ImageListLabeler.TVA508ImageListLabels.Destroy
+ 0001:00104494       VA508ImageListLabeler.TVA508ImageListLabels.GetAttr
+ 0001:001044B0       VA508ImageListLabeler.TVA508ImageListLabels.GetAttrCount
+ 0001:001044BC       VA508ImageListLabeler.TVA508ImageListLabels.GetImageData
+ 0001:00104530       VA508ImageListLabeler.TVA508ImageListLabels.GetItem
+ 0001:00104544       VA508ImageListLabeler.TVA508ImageListLabels.GetItemAttr
+ 0001:00104608       VA508ImageListLabeler.TVA508ImageListLabels.GetOverlayData
+ 0001:00104680       VA508ImageListLabeler.TVA508ImageListLabels.GetOwner
+ 0001:00104684       VA508ImageListLabeler.TVA508ImageListLabels.Notify
+ 0001:00104698       VA508ImageListLabeler.TVA508ImageListLabels.ResetData
+ 0001:001046B4       VA508ImageListLabeler.TVA508ImageListLabels.Update
+ 0004:00003780       VA508MSAASupport..1
+ 0001:000F7E08       VA508MSAASupport..TImageEventData
+ 0001:000F7E64       VA508MSAASupport..TListProcData
+ 0001:000F8024       VA508MSAASupport..TMSAAServer
+ 0001:000F7EC0       VA508MSAASupport..TProcData
+ 0003:00002DE4       VA508MSAASupport.AccPropServices
+ 0003:00002DE8       VA508MSAASupport.AccServicesCount
+ 0001:000F8AD0       VA508MSAASupport.Append
+ 0001:000F81E8       VA508MSAASupport.Cleanup
+ 0001:000F81C4       VA508MSAASupport.DecAccServices
+ 0001:000F9078       VA508MSAASupport.DoListComponent
+ 0001:000F8D5C       VA508MSAASupport.DoListView
+ 0001:000F90E4       VA508MSAASupport.DoNormalComponent
+ 0001:000F8C1C       VA508MSAASupport.DoTreeView
+ 0003:00002DE0       VA508MSAASupport.Events
+ 0001:000F9524       VA508MSAASupport.Finalization
+ 0001:000F8208       VA508MSAASupport.FindServer
+ 0001:000F8B88       VA508MSAASupport.GetImageLabelText
+ 0001:000F914C       VA508MSAASupport.HasProperty
+ 0001:000F8128       VA508MSAASupport.IncAccServices
+ 0004:00003784       VA508MSAASupport.NamePropIDs
+ 0001:000F9174       VA508MSAASupport.NoProperty
+ 0001:000F807C       VA508MSAASupport.NotifyEvent
+ 0001:000F82C4       VA508MSAASupport.RegisterComponentImageListQueryEvent
+ 0001:000F8624       VA508MSAASupport.RegisterMSAAComponentListQueryProc
+ 0001:000F8480       VA508MSAASupport.RegisterMSAAComponentQueryProc
+ 0001:000F87C8       VA508MSAASupport.TMSAAServer.AddImageEvent
+ 0001:000F8830       VA508MSAASupport.TMSAAServer.AddListProc
+ 0001:000F8868       VA508MSAASupport.TMSAAServer.AddProc
+ 0001:000F88A0       VA508MSAASupport.TMSAAServer.AssignServerType
+ 0001:000F88C0       VA508MSAASupport.TMSAAServer.Attach
+ 0001:000F8918       VA508MSAASupport.TMSAAServer.Create
+ 0001:000F8978       VA508MSAASupport.TMSAAServer.Destroy
+ 0001:000F89B4       VA508MSAASupport.TMSAAServer.Detatch
+ 0001:000F8A18       VA508MSAASupport.TMSAAServer.EventCount
+ 0001:000F8ACC       VA508MSAASupport.TMSAAServer.GetComponent
+ 0001:000F9190       VA508MSAASupport.TMSAAServer.GetPropValue
+ 0001:000F9350       VA508MSAASupport.TMSAAServer.Hook
+ 0001:000F8A20       VA508MSAASupport.TMSAAServer.ImageEventIndex
+ 0001:000F8A7C       VA508MSAASupport.TMSAAServer.ListProcIndex
+ 0001:000F9490       VA508MSAASupport.TMSAAServer.MSAAWindowProc
+ 0001:000F94B8       VA508MSAASupport.TMSAAServer.ProcIndex
+ 0001:000F9370       VA508MSAASupport.TMSAAServer.RemoveImageEvent
+ 0001:000F93A0       VA508MSAASupport.TMSAAServer.RemoveListProc
+ 0001:000F93C4       VA508MSAASupport.TMSAAServer.RemoveProc
+ 0001:000F945C       VA508MSAASupport.TMSAAServer.UnassignServerType
+ 0001:000F9480       VA508MSAASupport.TMSAAServer.UnHook
+ 0001:000F93E8       VA508MSAASupport.TMSAAServer.ValidateServerType
+ 0004:00003794       VA508MSAASupport.uNotifier
+ 0001:000F83B4       VA508MSAASupport.UnregisterComponentImageListQueryEvent
+ 0001:000F870C       VA508MSAASupport.UnregisterMSAAComponentListQueryProc
+ 0001:000F8568       VA508MSAASupport.UnregisterMSAAComponentQueryProc
+ 0003:00002DDC       VA508MSAASupport.uShutDown
+ 0003:00002DD4       VA508MSAASupport.VA508ImageListLabelerClasses
+ 0002:00000ADC       VA508MSAASupport.VA508MSAASupport
+ 0004:0000379C       VA508ScreenReaderDLLLinker..1
+ 0001:000FB284       VA508ScreenReaderDLLLinker.CheckFile
+ 0001:000FB0D4       VA508ScreenReaderDLLLinker.CheckProcs
+ 0001:000FB088       VA508ScreenReaderDLLLinker.CheckRunning
+ 0001:000FAE78       VA508ScreenReaderDLLLinker.ClearProcPointers
+ 0001:000FAEF4       VA508ScreenReaderDLLLinker.CloseScreenReaderLink
+ 0003:00002E3C       VA508ScreenReaderDLLLinker.DLLHandle
+ 0003:00002E2C       VA508ScreenReaderDLLLinker.DoInitialize
+ 0003:00002E28       VA508ScreenReaderDLLLinker.ExecuteFind
+ 0001:000FB688       VA508ScreenReaderDLLLinker.Finalization
+ 0001:000FB520       VA508ScreenReaderDLLLinker.FindScreenReaders
+ 0003:00002E30       VA508ScreenReaderDLLLinker.InitializeResult
+ 0001:000FAEB8       VA508ScreenReaderDLLLinker.InitializeScreenReaderLink
+ 0001:000FB5FC       VA508ScreenReaderDLLLinker.IsScreenReaderSupported
+ 0001:000FAF1C       VA508ScreenReaderDLLLinker.LoadScreenReader
+ 0001:000FB36C       VA508ScreenReaderDLLLinker.ScanScreenReaders
+ 0001:000FB5E4       VA508ScreenReaderDLLLinker.ScreenReaderDLLsExist
+ 0003:00002E1C       VA508ScreenReaderDLLLinker.SRComponentData
+ 0003:00002E20       VA508ScreenReaderDLLLinker.SRConfigChangePending
+ 0003:00002E34       VA508ScreenReaderDLLLinker.SRInitialize
+ 0003:00002E14       VA508ScreenReaderDLLLinker.SRIsRunning
+ 0003:00002E18       VA508ScreenReaderDLLLinker.SRRegisterCustomBehavior
+ 0003:00002E38       VA508ScreenReaderDLLLinker.SRShutDown
+ 0003:00002E10       VA508ScreenReaderDLLLinker.SRSpeakText
+ 0002:00000B14       VA508ScreenReaderDLLLinker.VA508ScreenReaderDLLLinker
+ 0003:00002E24       VA508ScreenReaderDLLLinker.ValidSRFiles
+ 0001:000C94F0       VAClasses..TVABaseMethodList
+ 0001:000C9554       VAClasses..TVAMethodList
+ 0001:000C95B4       VAClasses..TVANotificationEventComponent
+ 0001:000C9690       VAClasses.TVABaseMethodList.Add
+ 0001:000C96BC       VAClasses.TVABaseMethodList.Count
+ 0001:000C96C4       VAClasses.TVABaseMethodList.Create
+ 0001:000C9710       VAClasses.TVABaseMethodList.Destroy
+ 0001:000C9748       VAClasses.TVABaseMethodList.GetMethod
+ 0001:000C9770       VAClasses.TVABaseMethodList.IndexOf
+ 0001:000C97CC       VAClasses.TVABaseMethodList.Remove
+ 0001:000C97F4       VAClasses.TVAMethodList.Add
+ 0001:000C97FC       VAClasses.TVAMethodList.Count
+ 0001:000C9804       VAClasses.TVAMethodList.Create
+ 0001:000C983C       VAClasses.TVAMethodList.Destroy
+ 0001:000C9864       VAClasses.TVAMethodList.Remove
+ 0001:000C986C       VAClasses.TVANotificationEventComponent.Notification
+ 0001:000C9898       VAClasses.TVANotificationEventComponent.NotifyCreate
+ 0004:000032C0       Variants..81
+ 0001:00010B10       Variants..EVariantArrayCreateError
+ 0001:00010AA8       Variants..EVariantArrayLockedError
+ 0001:00010A44       Variants..EVariantBadIndexError
+ 0001:000109E0       Variants..EVariantBadVarTypeError
+ 0001:00010CA8       Variants..EVariantDispatchError
+ 0001:0001097C       Variants..EVariantInvalidArgError
+ 0001:00010D0C       Variants..EVariantInvalidNullOpError
+ 0001:00010850       Variants..EVariantInvalidOpError
+ 0001:00010B78       Variants..EVariantNotImplError
+ 0001:00010BDC       Variants..EVariantOutOfMemoryError
+ 0001:00010918       Variants..EVariantOverflowError
+ 0001:000108B4       Variants..EVariantTypeCastError
+ 0001:00010C44       Variants..EVariantUnexpectedError
+ 0001:00010610       Variants..TCustomVariantType
+ 0001:0001079C       Variants..TInvokeableVariantType
+ 0001:0001161C       Variants.@DispInvoke
+ 0001:00011314       Variants.@DispInvokeError
+ 0001:00015B68       Variants.@OleVarFromInt
+ 0001:00015E6C       Variants.@OleVarFromLStr
+ 0001:00015F28       Variants.@OleVarFromVar
+ 0001:0001989C       Variants.@VarAdd
+ 0001:00017874       Variants.@VarAddRef
+ 0001:00017FE4       Variants.@VarArrayGet
+ 0001:000180D4       Variants.@VarArrayPut
+ 0001:00011F70       Variants.@VarCast
+ 0001:00011600       Variants.@VarClear
+ 0001:00011614       Variants.@VarClr
+ 0001:000198A8       Variants.@VarCmpEQ
+ 0001:000198C8       Variants.@VarCmpGT
+ 0001:000198B8       Variants.@VarCmpNE
+ 0001:00011A2C       Variants.@VarCopy
+ 0001:00011CAC       Variants.@VarCopyNoInd
+ 0001:00015CFC       Variants.@VarFromBool
+ 0001:00015B88       Variants.@VarFromByte
+ 0001:00015D4C       Variants.@VarFromCurr
+ 0001:00015CA4       Variants.@VarFromCurrency
+ 0001:00015CD0       Variants.@VarFromDate
+ 0001:00015E40       Variants.@VarFromDisp
+ 0001:00015C78       Variants.@VarFromDouble
+ 0001:00015B0C       Variants.@VarFromInt
+ 0001:00015C28       Variants.@VarFromInt64
+ 0001:00015B48       Variants.@VarFromInteger
+ 0001:00015E14       Variants.@VarFromIntf
+ 0001:00015BC8       Variants.@VarFromLongWord
+ 0001:00015D60       Variants.@VarFromLStr
+ 0001:00015D8C       Variants.@VarFromPStr
+ 0001:00015D24       Variants.@VarFromReal
+ 0001:00015BE8       Variants.@VarFromShortInt
+ 0001:00015C54       Variants.@VarFromSingle
+ 0001:00015C08       Variants.@VarFromSmallInt
+ 0001:00015D38       Variants.@VarFromTDateTime
+ 0001:00015BA8       Variants.@VarFromWord
+ 0001:00015DDC       Variants.@VarFromWStr
+ 0001:00011368       Variants.@VarNull
+ 0001:00016EA8       Variants.@VarOp
+ 0001:00011CC0       Variants.@VarStringToOleStr
+ 0001:00013750       Variants.@VarToBool
+ 0001:000133FC       Variants.@VarToBoolean
+ 0001:00012838       Variants.@VarToByte
+ 0001:000145F0       Variants.@VarToCurrency
+ 0001:00014088       Variants.@VarToDate
+ 0001:00015A60       Variants.@VarToDisp
+ 0001:0001391C       Variants.@VarToDouble
+ 0001:00012E04       Variants.@VarToInt64
+ 0001:00012334       Variants.@VarToInteger
+ 0001:00015994       Variants.@VarToIntf
+ 0001:00012AB4       Variants.@VarToLongWord
+ 0001:00014CA8       Variants.@VarToLStr
+ 0001:00013C94       Variants.@VarToReal
+ 0001:00012784       Variants.@VarToShortInt
+ 0001:00013CB0       Variants.@VarToSingle
+ 0001:000128E0       Variants.@VarToSmallInt
+ 0001:000129D8       Variants.@VarToWord
+ 0001:000153C8       Variants.@VarToWStr
+ 0001:000164B8       Variants.AnyOp
+ 0001:0001591C       Variants.AnyToIntf
+ 0003:00000B48       Variants.BaseTypeMap
+ 0003:00000B40       Variants.BooleanToStringRule
+ 0001:00014A28       Variants.BoolToWStrViaOS
+ 0003:00000BF4       Variants.CBooleanToRelationship
+ 0004:000032B8       Variants.ChangeAnyProc
+ 0001:00016494       Variants.CheckType
+ 0003:00000B60       Variants.CInvalidCustomVariantType
+ 0004:000032B4       Variants.ClearAnyProc
+ 0001:00018B1C       Variants.ClearVariantTypeList
+ 0003:00000C00       Variants.CmpTypeMap
+ 0003:00000B64       Variants.CRangeToType
+ 0003:00000CD4       Variants.CRelationshipToBoolean
+ 0003:00000C7C       Variants.CText
+ 0001:000171C0       Variants.CurrCompare
+ 0001:00016AA4       Variants.CurrOp
+ 0001:000149B8       Variants.CurrToWStrViaOS
+ 0001:00017194       Variants.DateCompare
+ 0001:000165D8       Variants.DateOp
+ 0001:000149F0       Variants.DateToWStrViaOS
+ 0001:00018384       Variants.DecIndices
+ 0001:00018330       Variants.DynArrayBounds
+ 0001:000182A0       Variants.DynArrayDim
+ 0001:00018288       Variants.DynArrayElTypeInfo
+ 0001:000187E8       Variants.DynArrayFromVariant
+ 0001:00018244       Variants.DynArrayIndex
+ 0001:000182C0       Variants.DynArraySize
+ 0001:0001849C       Variants.DynArrayToVariant
+ 0001:000183F0       Variants.DynArrayVariantBounds
+ 0001:00018454       Variants.DynArrayVarType
+ 0001:00017010       Variants.EmptyCompare
+ 0001:00016A0C       Variants.EmptyOp
+ 0004:000032A0       Variants.EmptyParam
+ 0001:000198D8       Variants.Finalization
+ 0001:000197A4       Variants.FindCustomVariantType
+ 0001:000196E8       Variants.FindCustomVariantType
+ 0001:00017B6C       Variants.FindVarData
+ 0001:00017D9C       Variants.GetVarDataArrayInfo
+ 0001:00011290       Variants.HandleConversionException
+ 0001:00011720       Variants.InBounds
+ 0001:0001137C       Variants.InBounds
+ 0001:00011750       Variants.Increment
+ 0001:000113AC       Variants.Increment
+ 0001:0001712C       Variants.Int64Compare
+ 0001:00016768       Variants.Int64Op
+ 0001:00017118       Variants.IntCompare
+ 0001:0001664C       Variants.IntOp
+ 0001:000182C8       Variants.IsDynArrayRectangular
+ 0003:00000CD0       Variants.LNextVarType
+ 0004:000032C4       Variants.LVarTypes
+ 0004:000032C8       Variants.LVarTypeSync
+ 0001:00019894       Variants.Null
+ 0003:00000B38       Variants.NullAsStringValue
+ 0001:00017024       Variants.NullCompare
+ 0003:00000B2C       Variants.NullEqualityRule
+ 0003:00000B30       Variants.NullMagnitudeRule
+ 0001:00016960       Variants.NullOp
+ 0003:00000B34       Variants.NullStrictConvert
+ 0001:00015EBC       Variants.OleVarFromAny
+ 0001:00015F20       Variants.OleVarFromVarArrayProc
+ 0003:00000B44       Variants.OleVariantInt64AsDouble
+ 0003:00000B78       Variants.OpTypeMap
+ 0003:00000B3C       Variants.PackVarCreation
+ 0001:00019158       Variants.ParseParam
+ 0001:00017168       Variants.RealCompare
+ 0001:00016544       Variants.RealOp
+ 0004:000032BC       Variants.RefAnyProc
+ 0001:00017D90       Variants.SetClearVarToEmptyParam
+ 0001:00017D78       Variants.SetVarAsError
+ 0001:00016C2C       Variants.SimpleVarOp
+ 0001:000171F0       Variants.StringCompare
+ 0001:00018B88       Variants.TCustomVariantType.BinaryOp
+ 0001:00018B94       Variants.TCustomVariantType.Cast
+ 0001:00018BCC       Variants.TCustomVariantType.CastTo
+ 0001:00018C58       Variants.TCustomVariantType.CastToOle
+ 0001:00018C14       Variants.TCustomVariantType.Compare
+ 0001:00018C20       Variants.TCustomVariantType.CompareOp
+ 0001:00018C94       Variants.TCustomVariantType.Create
+ 0001:00018CD8       Variants.TCustomVariantType.Create
+ 0001:00018F60       Variants.TCustomVariantType.Destroy
+ 0001:00019078       Variants.TCustomVariantType.DispInvoke
+ 0001:00018FEC       Variants.TCustomVariantType.IsClear
+ 0001:00018FF0       Variants.TCustomVariantType.LeftPromotion
+ 0001:00019004       Variants.TCustomVariantType.OlePromotion
+ 0001:000190B4       Variants.TCustomVariantType.QueryInterface
+ 0001:0001900C       Variants.TCustomVariantType.RaiseCastError
+ 0001:0001901C       Variants.TCustomVariantType.RaiseDispError
+ 0001:00019014       Variants.TCustomVariantType.RaiseInvalidOp
+ 0001:00019024       Variants.TCustomVariantType.RightPromotion
+ 0001:00019038       Variants.TCustomVariantType.UnaryOp
+ 0001:0001905C       Variants.TCustomVariantType.VarDataCastTo
+ 0001:00019048       Variants.TCustomVariantType.VarDataClear
+ 0001:00019050       Variants.TCustomVariantType.VarDataCopyNoInd
+ 0001:00019090       Variants.TCustomVariantType.VarDataFromOleStr
+ 0001:00019084       Variants.TCustomVariantType.VarDataFromStr
+ 0001:00019040       Variants.TCustomVariantType.VarDataInit
+ 0001:00019070       Variants.TCustomVariantType.VarDataIsByRef
+ 0001:000190DC       Variants.TCustomVariantType.VarDataIsStr
+ 0001:000190E8       Variants.TCustomVariantType.VarDataToStr
+ 0001:0001909C       Variants.TCustomVariantType._AddRef
+ 0001:000190A8       Variants.TCustomVariantType._Release
+ 0001:0001940C       Variants.TInvokeableVariantType.DispInvoke
+ 0001:000196D0       Variants.TInvokeableVariantType.DoFunction
+ 0001:000196DC       Variants.TInvokeableVariantType.DoProcedure
+ 0001:000190FC       Variants.TInvokeableVariantType.FixupIdent
+ 0001:000196B8       Variants.TInvokeableVariantType.GetProperty
+ 0001:000196C4       Variants.TInvokeableVariantType.SetProperty
+ 0001:00010FFC       Variants.TranslateResult
+ 0001:0001988C       Variants.Unassigned
+ 0001:00017E88       Variants.VarArrayAsPSafeArray
+ 0001:00011408       Variants.VarArrayClear
+ 0001:000117AC       Variants.VarArrayCopyForEach
+ 0001:00017DE0       Variants.VarArrayCreate
+ 0001:00010FA8       Variants.VarArrayCreateError
+ 0001:00017EB0       Variants.VarArrayDimCount
+ 0001:000180B0       Variants.VarArrayGet
+ 0001:00017EFC       Variants.VarArrayHighBound
+ 0001:00017F20       Variants.VarArrayLock
+ 0001:00017ED8       Variants.VarArrayLowBound
+ 0001:0001821C       Variants.VarArrayPut
+ 0001:00017F40       Variants.VarArrayUnlock
+ 0001:00011CE8       Variants.VarCastAsAny
+ 0001:00011DEC       Variants.VarCastAsDispatch
+ 0001:00011E38       Variants.VarCastAsInterface
+ 0001:00011D54       Variants.VarCastAsOleStr
+ 0001:00011DA0       Variants.VarCastAsString
+ 0001:00010DC8       Variants.VarCastError
+ 0001:00010D74       Variants.VarCastError
+ 0001:00011F04       Variants.VarCastRare
+ 0001:00011E84       Variants.VarCastViaOS
+ 0001:00011584       Variants.VarClearDeep
+ 0001:0001780C       Variants.VarCompare
+ 0001:00016F38       Variants.VarCompareAny
+ 0001:000173E8       Variants.VarCompareRare
+ 0001:0001725C       Variants.VarCompareSimple
+ 0001:00011AD4       Variants.VarCopyByRef
+ 0001:00011978       Variants.VarCopyCopyProc
+ 0001:00011980       Variants.VarCopyDeep
+ 0001:00011A98       Variants.VarCopyNoIndCopyProc
+ 0001:00011AA0       Variants.VarCopyNoIndDeep
+ 0001:00011A90       Variants.VarCopyNoIndOleStr
+ 0001:00011A70       Variants.VarCopyNoIndViaOS
+ 0004:000032B0       Variants.VarDispProc
+ 0002:0000017C       Variants.Variants
+ 0001:00010EB8       Variants.VarInvalidNullOp
+ 0001:00010E64       Variants.VarInvalidOp
+ 0001:00017F60       Variants.VarIsArray
+ 0001:00017F58       Variants.VarIsArray
+ 0001:00017B7C       Variants.VarIsClear
+ 0001:00017C10       Variants.VarIsEmpty
+ 0001:00017C24       Variants.VarIsNull
+ 0001:00016148       Variants.VarOpRare
+ 0001:00010F0C       Variants.VarOverflowError
+ 0001:0001125C       Variants.VarResultCheck
+ 0001:00011250       Variants.VarResultCheck
+ 0001:00017D00       Variants.VarSameValue
+ 0001:00016094       Variants.VarStrCat
+ 0001:00011CE0       Variants.VarStringToOleStr
+ 0001:0001334C       Variants.VarToBoolAny
+ 0001:00013248       Variants.VarToBoolAsString
+ 0001:000133B0       Variants.VarToBoolCustom
+ 0001:0001330C       Variants.VarToBoolViaOS
+ 0001:00014540       Variants.VarToCurrencyAny
+ 0001:00014494       Variants.VarToCurrencyAsDouble
+ 0001:000143D8       Variants.VarToCurrencyAsString
+ 0001:000145A4       Variants.VarToCurrencyCustom
+ 0001:000144F4       Variants.VarToCurrencyViaOS
+ 0001:00013FD8       Variants.VarToDateAny
+ 0001:00013F2C       Variants.VarToDateAsDouble
+ 0001:00013E40       Variants.VarToDateAsString
+ 0001:0001403C       Variants.VarToDateCustom
+ 0001:00013F8C       Variants.VarToDateViaOS
+ 0001:0001386C       Variants.VarToDoubleAny
+ 0001:0001375C       Variants.VarToDoubleAsString
+ 0001:000138D0       Variants.VarToDoubleCustom
+ 0001:00013820       Variants.VarToDoubleViaOS
+ 0001:00012D4C       Variants.VarToInt64Any
+ 0001:00012C4C       Variants.VarToInt64AsString
+ 0001:00012DB8       Variants.VarToInt64Custom
+ 0001:00012BA0       Variants.VarToInt64ViaOS
+ 0001:0001228C       Variants.VarToIntAny
+ 0001:0001219C       Variants.VarToIntAsString
+ 0001:000122F0       Variants.VarToIntCustom
+ 0001:00012250       Variants.VarToIntViaOS
+ 0001:00014BBC       Variants.VarToLStrAny
+ 0001:00014C20       Variants.VarToLStrCustom
+ 0001:00014AF0       Variants.VarToLStrViaOS
+ 0001:00017C38       Variants.VarToStr
+ 0001:00017C50       Variants.VarToStrDef
+ 0001:00017C7C       Variants.VarToWideStr
+ 0001:00017CD4       Variants.VarToWideStrDef
+ 0001:0001529C       Variants.VarToWStrAny
+ 0001:00015300       Variants.VarToWStrCustom
+ 0001:000151E4       Variants.VarToWStrViaOS
+ 0001:00017B68       Variants.VarType
+ 0001:000179F8       Variants.VarTypeAsText
+ 0001:00017BF0       Variants.VarTypeIsCustom
+ 0001:00017BFC       Variants.VarTypeIsStr
+ 0001:00017F88       Variants.VarTypeIsValidArrayType
+ 0001:00017FA8       Variants.VarTypeIsValidElementType
+ 0004:0000329C       VarUtils..5
+ 0001:00010040       VarUtils.BackupVarBoolFromStr
+ 0001:000101A4       VarUtils.BackupVarBStrFromBool
+ 0001:000100C0       VarUtils.BackupVarBStrFromCy
+ 0001:00010130       VarUtils.BackupVarBStrFromDate
+ 0001:0000FFD4       VarUtils.BackupVarCyFromStr
+ 0001:0000FF68       VarUtils.BackupVarDateFromStr
+ 0001:0000FE24       VarUtils.BackupVarI4FromStr
+ 0001:0000FDD0       VarUtils.BackupVariantChangeTypeEx
+ 0001:0000FE90       VarUtils.BackupVarR4FromStr
+ 0001:0000FEFC       VarUtils.BackupVarR8FromStr
+ 0001:0000FE0C       VarUtils.BiUnimplemented
+ 0001:0000FE18       VarUtils.CmpUnimplemented
+ 0003:00000B24       VarUtils.CResult
+ 0003:00000A1C       VarUtils.CVarTypeToElementInfo
+ 0001:00010590       VarUtils.Finalization
+ 0001:00010258       VarUtils.FindProc
+ 0001:00010284       VarUtils.InitializeVarUtils
+ 0001:00010230       VarUtils.SafeArrayAccessData
+ 0001:00010218       VarUtils.SafeArrayCreate
+ 0001:00010240       VarUtils.SafeArrayGetElement
+ 0001:00010220       VarUtils.SafeArrayGetLBound
+ 0001:00010228       VarUtils.SafeArrayGetUBound
+ 0001:00010250       VarUtils.SafeArrayPtrOfIndex
+ 0001:00010248       VarUtils.SafeArrayPutElement
+ 0001:00010238       VarUtils.SafeArrayUnaccessData
+ 0001:0000FE00       VarUtils.UniUnimplemented
+ 0004:00003250       VarUtils.VarAdd
+ 0004:00003268       VarUtils.VarAnd
+ 0004:0000328C       VarUtils.VarBoolFromStr
+ 0004:00003298       VarUtils.VarBstrFromBool
+ 0004:00003290       VarUtils.VarBstrFromCy
+ 0004:00003294       VarUtils.VarBstrFromDate
+ 0004:00003274       VarUtils.VarCmp
+ 0004:00003288       VarUtils.VarCyFromStr
+ 0004:00003284       VarUtils.VarDateFromStr
+ 0004:0000325C       VarUtils.VarDiv
+ 0004:00003278       VarUtils.VarI4FromStr
+ 0001:0000FDC8       VarUtils.VariantChangeType
+ 0004:00003244       VarUtils.VariantChangeTypeEx
+ 0001:0000FDB0       VarUtils.VariantClear
+ 0001:0000FDB8       VarUtils.VariantCopy
+ 0001:0000FDC0       VarUtils.VariantCopyInd
+ 0001:0000FDA8       VarUtils.VariantInit
+ 0004:00003260       VarUtils.VarIDiv
+ 0004:00003264       VarUtils.VarMod
+ 0004:00003258       VarUtils.VarMul
+ 0004:00003248       VarUtils.VarNeg
+ 0004:0000324C       VarUtils.VarNot
+ 0004:0000326C       VarUtils.VarOr
+ 0004:0000327C       VarUtils.VarR4FromStr
+ 0004:00003280       VarUtils.VarR8FromStr
+ 0004:00003254       VarUtils.VarSub
+ 0002:0000016C       VarUtils.VarUtils
+ 0004:00003270       VarUtils.VarXor
+ 0004:00003698       VAUtils..3
+ 0001:000CAF50       VAUtils..TVACustomMessageEventInterceptor
+ 0001:000CAFC8       VAUtils..TVAMessageEventHandler
+ 0001:000CB034       VAUtils..TVAWinProcMonitor
+ 0001:000CB1D0       VAUtils.AddMessageHandler
+ 0001:000CAC58       VAUtils.AppendBackSlash
+ 0003:000025E0       VAUtils.BinChars
+ 0003:00002620       VAUtils.CheckScreenReaderSupport
+ 0001:000CB19C       VAUtils.CleanupMessageHandlerSystem
+ 0001:000CB160       VAUtils.Clear
+ 0001:000CAA34       VAUtils.FastHexToByte
+ 0001:000CAADC       VAUtils.FastHexToInt
+ 0001:000CA9EC       VAUtils.FastIntToHex
+ 0001:000CB778       VAUtils.FileVersionValue
+ 0001:000CB928       VAUtils.Finalization
+ 0001:000CA95C       VAUtils.FreeAndNilTStringsAndObjects
+ 0001:000CAE80       VAUtils.GetAlternateProgramFilesPath
+ 0001:000CB650       VAUtils.GetNum
+ 0001:000CAE6C       VAUtils.GetProgramFilesPath
+ 0001:000CACD4       VAUtils.GetSpecialFolderPath
+ 0003:000021E0       VAUtils.HexChars
+ 0001:000CB0F0       VAUtils.InitializeMessageHandlerSystem
+ 0004:000036A8       VAUtils.ModuleHandles
+ 0004:0000369C       VAUtils.PIDList
+ 0001:000CA5E0       VAUtils.Piece
+ 0001:000CA65C       VAUtils.Pieces
+ 0001:000CB308       VAUtils.RemoveAllMessageHandlers
+ 0001:000CB26C       VAUtils.RemoveMessageHandler
+ 0001:000CA9A4       VAUtils.ScreenReaderActive
+ 0001:000CA9C8       VAUtils.ScreenReaderSupportEnabled
+ 0001:000CA730       VAUtils.ShowMsg
+ 0001:000CA864       VAUtils.ShowMsg
+ 0001:000CB3EC       VAUtils.TVACustomMessageEventInterceptor.Create
+ 0001:000CB490       VAUtils.TVACustomMessageEventInterceptor.Destroy
+ 0001:000CB4C4       VAUtils.TVACustomMessageEventInterceptor.NewMessageHandler
+ 0001:000CB4D0       VAUtils.TVAMessageEventHandler.AddMessageHandler
+ 0001:000CB4E4       VAUtils.TVAMessageEventHandler.Create
+ 0001:000CB530       VAUtils.TVAMessageEventHandler.Destroy
+ 0001:000CB560       VAUtils.TVAMessageEventHandler.DoMessageHandlers
+ 0001:000CB5B8       VAUtils.TVAMessageEventHandler.HandlerCount
+ 0001:000CB5C4       VAUtils.TVAMessageEventHandler.NewMessageHandler
+ 0001:000CB5E8       VAUtils.TVAMessageEventHandler.RemoveMessageHandler
+ 0001:000CB394       VAUtils.TVAWinProcMonitor.Notification
+ 0001:000CB3CC       VAUtils.TVAWinProcMonitor.RemoveFromList
+ 0003:00002628       VAUtils.uEventMessageHandlers
+ 0003:0000262C       VAUtils.uHandlePointers
+ 0003:00002634       VAUtils.uMessageHandlerSystemRunning
+ 0003:00002624       VAUtils.uScreenReaderSupportEnabled
+ 0003:00002630       VAUtils.uWinProcMonitor
+ 0002:0000083C       VAUtils.VAUtils
+ 0001:000CB63C       VAUtils.VersionStringSplit
+ 0001:000CB700       VAUtils.VersionStringSplit
+ 0001:0011E430       VCEdit..TfrmVCEdit
+ 0001:0011E34C       VCEdit..TVCEdit
+ 0004:0000388C       VCEdit.frmVCEdit
+ 0003:00003284       VCEdit.MAX_CONFIRM_FAIL
+ 0001:0011ED2C       VCEdit.TfrmVCEdit.btnHelpClick
+ 0001:0011E930       VCEdit.TfrmVCEdit.btnOKClick
+ 0001:0011EE58       VCEdit.TfrmVCEdit.edtNewVCExit
+ 0001:0011EE84       VCEdit.TfrmVCEdit.edtOldVCChange
+ 0001:0011E768       VCEdit.TVCEdit.ChangeVC
+ 0001:0011E704       VCEdit.TVCEdit.ChangeVCKnowOldVC
+ 0001:0011E6A0       VCEdit.TVCEdit.Create
+ 0001:0011E6DC       VCEdit.TVCEdit.Destroy
+ 0001:0011E88C       VCEdit.TVCEdit.NoChange
+ 0001:00116C88       VERGENCECONTEXTORLib_TLB..CoContextItem
+ 0001:00116C24       VERGENCECONTEXTORLib_TLB..CoContextItemCollection
+ 0001:001169E8       VERGENCECONTEXTORLib_TLB..TContextorControl
+ 0003:00003228       VERGENCECONTEXTORLib_TLB.CControlData
+ 0003:0000321C       VERGENCECONTEXTORLib_TLB.CEventDispIDs
+ 0003:0000320C       VERGENCECONTEXTORLib_TLB.CLASS_ContextItem
+ 0003:000031FC       VERGENCECONTEXTORLib_TLB.CLASS_ContextItemCollection
+ 0001:00117098       VERGENCECONTEXTORLib_TLB.CoContextItem.Create
+ 0001:00117034       VERGENCECONTEXTORLib_TLB.CoContextItemCollection.Create
+ 0001:00116D00       VERGENCECONTEXTORLib_TLB.DoCreate
+ 0001:00116D84       VERGENCECONTEXTORLib_TLB.TContextorControl.CreateControl
+ 0001:00116F74       VERGENCECONTEXTORLib_TLB.TContextorControl.EndContextChange
+ 0001:00116DA4       VERGENCECONTEXTORLib_TLB.TContextorControl.GetControlInterface
+ 0001:00116DC4       VERGENCECONTEXTORLib_TLB.TContextorControl.Get_CurrentContext
+ 0001:00116CE4       VERGENCECONTEXTORLib_TLB.TContextorControl.InitControlData
+ 0001:00116ED4       VERGENCECONTEXTORLib_TLB.TContextorControl.Resume
+ 0001:00116E20       VERGENCECONTEXTORLib_TLB.TContextorControl.Run
+ 0001:00116FE0       VERGENCECONTEXTORLib_TLB.TContextorControl.SetSurveyResponse
+ 0001:00116F24       VERGENCECONTEXTORLib_TLB.TContextorControl.StartContextChange
+ 0001:00116E84       VERGENCECONTEXTORLib_TLB.TContextorControl.Suspend
+ 0004:000037A0       WideStrings..4
+ 0004:000037A4       WideStrings.CharNextW
+ 0001:000FC560       WideStrings.CharNextW95
+ 0001:000FC590       WideStrings.Finalization
+ 0001:000FC570       WideStrings.InitCharNextWFunc
+ 0002:00000B1C       WideStrings.WideStrings
+ 0004:0000281C       Windows..3
+ 0001:00006F74       Windows.ActivateKeyboardLayout
+ 0001:00006F7C       Windows.AdjustWindowRectEx
+ 0001:00006F84       Windows.AnsiLower
+ 0001:00006F8C       Windows.AppendMenu
+ 0001:00006C2C       Windows.Arc
+ 0001:00006F94       Windows.BeginDeferWindowPos
+ 0001:00006F9C       Windows.BeginPaint
+ 0001:00006C34       Windows.BitBlt
+ 0001:00006FA4       Windows.BringWindowToTop
+ 0001:00006FAC       Windows.CallNextHookEx
+ 0001:00006FB4       Windows.CallWindowProc
+ 0001:00006FBC       Windows.CharLowerBuff
+ 0001:00006FC4       Windows.CharNext
+ 0001:00006FCC       Windows.CharNextW
+ 0001:00006FD4       Windows.CharToOemA
+ 0001:00006FDC       Windows.CharUpperBuff
+ 0001:00006FE4       Windows.CheckMenuItem
+ 0001:00006FEC       Windows.ChildWindowFromPoint
+ 0001:00006FF4       Windows.ClientToScreen
+ 0001:00006FFC       Windows.CloseClipboard
+ 0001:00006C3C       Windows.CloseEnhMetaFile
+ 0001:000069A4       Windows.CloseHandle
+ 0001:00006C44       Windows.CombineRgn
+ 0001:000069AC       Windows.CompareString
+ 0001:00006C4C       Windows.CopyEnhMetaFile
+ 0001:000075FC       Windows.CopyMemory
+ 0001:00006C54       Windows.CreateBitmap
+ 0001:00006C5C       Windows.CreateBrushIndirect
+ 0001:00007004       Windows.CreateCaret
+ 0001:00006C64       Windows.CreateCompatibleBitmap
+ 0001:00006C6C       Windows.CreateCompatibleDC
+ 0001:00006C74       Windows.CreateDC
+ 0001:00006C84       Windows.CreateDIBitmap
+ 0001:00006C7C       Windows.CreateDIBSection
+ 0001:00006C8C       Windows.CreateEnhMetaFile
+ 0001:000069B4       Windows.CreateEvent
+ 0001:000069BC       Windows.CreateFile
+ 0001:00006C94       Windows.CreateFont
+ 0001:00006C9C       Windows.CreateFontIndirect
+ 0001:00006CA4       Windows.CreateHalftonePalette
+ 0001:00006CAC       Windows.CreateIC
+ 0001:0000700C       Windows.CreateIcon
+ 0001:00007014       Windows.CreateMenu
+ 0001:00006CB4       Windows.CreatePalette
+ 0001:00006CBC       Windows.CreatePen
+ 0001:00006CC4       Windows.CreatePenIndirect
+ 0001:00006CCC       Windows.CreatePolygonRgn
+ 0001:0000701C       Windows.CreatePopupMenu
+ 0001:000069C4       Windows.CreateProcess
+ 0001:00006CD4       Windows.CreateRectRgn
+ 0001:00006CDC       Windows.CreateSolidBrush
+ 0001:000069CC       Windows.CreateThread
+ 0001:00007690       Windows.CreateWindow
+ 0001:00007638       Windows.CreateWindowEx
+ 0001:0000703C       Windows.DeferWindowPos
+ 0001:00007024       Windows.DefFrameProc
+ 0001:0000702C       Windows.DefMDIChildProc
+ 0001:00007034       Windows.DefWindowProc
+ 0001:000069D4       Windows.DeleteCriticalSection
+ 0001:00006CE4       Windows.DeleteDC
+ 0001:00006CEC       Windows.DeleteEnhMetaFile
+ 0001:00007044       Windows.DeleteMenu
+ 0001:00006CF4       Windows.DeleteObject
+ 0001:0000704C       Windows.DestroyCaret
+ 0001:00007054       Windows.DestroyCursor
+ 0001:0000705C       Windows.DestroyIcon
+ 0001:00007064       Windows.DestroyMenu
+ 0001:0000706C       Windows.DestroyWindow
+ 0001:00007074       Windows.DispatchMessage
+ 0001:0000707C       Windows.DispatchMessageW
+ 0001:00007084       Windows.DrawEdge
+ 0001:0000708C       Windows.DrawFocusRect
+ 0001:00007094       Windows.DrawFrameControl
+ 0001:0000709C       Windows.DrawIcon
+ 0001:000070A4       Windows.DrawIconEx
+ 0001:000070AC       Windows.DrawMenuBar
+ 0001:000070B4       Windows.DrawText
+ 0001:00006CFC       Windows.Ellipse
+ 0001:000070BC       Windows.EmptyClipboard
+ 0001:000070C4       Windows.EnableMenuItem
+ 0001:000070CC       Windows.EnableScrollBar
+ 0001:000070D4       Windows.EnableWindow
+ 0001:000070DC       Windows.EndDeferWindowPos
+ 0001:00006D04       Windows.EndDoc
+ 0001:00006D0C       Windows.EndPage
+ 0001:000070E4       Windows.EndPaint
+ 0001:000069DC       Windows.EnterCriticalSection
+ 0001:000069E4       Windows.EnumCalendarInfoA
+ 0001:000070EC       Windows.EnumChildWindows
+ 0001:000070F4       Windows.EnumClipboardFormats
+ 0001:000069EC       Windows.EnumResourceNames
+ 0001:000070FC       Windows.EnumThreadWindows
+ 0001:00007104       Windows.EnumWindows
+ 0001:0000710C       Windows.EqualRect
+ 0001:00006D14       Windows.ExcludeClipRect
+ 0001:00006D1C       Windows.ExtCreatePen
+ 0001:00006D24       Windows.ExtSelectClipRgn
+ 0001:00006D2C       Windows.ExtTextOut
+ 0001:000069F4       Windows.FileTimeToDosDateTime
+ 0001:000069FC       Windows.FileTimeToLocalFileTime
+ 0001:00007114       Windows.FillRect
+ 0001:000077E0       Windows.Finalization
+ 0001:00006A04       Windows.FindClose
+ 0001:00006A0C       Windows.FindFirstFile
+ 0001:00006A14       Windows.FindNextFile
+ 0001:00006A1C       Windows.FindResource
+ 0001:0000711C       Windows.FindWindow
+ 0001:00006A24       Windows.FormatMessage
+ 0001:00007124       Windows.FrameRect
+ 0001:00006A2C       Windows.FreeLibrary
+ 0001:00006A4C       Windows.FreeResource
+ 0001:0000712C       Windows.GetActiveWindow
+ 0001:00007134       Windows.GetAncestor
+ 0001:00006D34       Windows.GetBitmapBits
+ 0001:00006D3C       Windows.GetBkColor
+ 0001:00006D44       Windows.GetBkMode
+ 0001:00006D4C       Windows.GetBrushOrgEx
+ 0001:0000713C       Windows.GetCapture
+ 0001:00007144       Windows.GetCaretPos
+ 0001:0000714C       Windows.GetClassInfo
+ 0001:00007154       Windows.GetClassLong
+ 0001:0000715C       Windows.GetClassName
+ 0001:00007164       Windows.GetClientRect
+ 0001:0000716C       Windows.GetClipboardData
+ 0001:00006D54       Windows.GetClipBox
+ 0001:00006D5C       Windows.GetClipRgn
+ 0001:00006A5C       Windows.GetComputerName
+ 0001:00006A54       Windows.GetCPInfo
+ 0001:00006D64       Windows.GetCurrentPositionEx
+ 0001:00006A64       Windows.GetCurrentProcessId
+ 0001:00006A6C       Windows.GetCurrentThreadId
+ 0001:00007174       Windows.GetCursor
+ 0001:0000717C       Windows.GetCursorPos
+ 0001:00006A74       Windows.GetDateFormat
+ 0001:00007184       Windows.GetDC
+ 0001:0000718C       Windows.GetDCEx
+ 0001:00006D6C       Windows.GetDCOrgEx
+ 0001:00007194       Windows.GetDesktopWindow
+ 0001:00006D84       Windows.GetDeviceCaps
+ 0001:00006D74       Windows.GetDIBColorTable
+ 0001:00006D7C       Windows.GetDIBits
+ 0001:00006A7C       Windows.GetDiskFreeSpaceA
+ 0001:0000719C       Windows.GetDlgItem
+ 0001:000071A4       Windows.GetDoubleClickTime
+ 0001:00006A84       Windows.GetDriveType
+ 0001:00006D8C       Windows.GetEnhMetaFileBits
+ 0001:00006D94       Windows.GetEnhMetaFileDescription
+ 0001:00006D9C       Windows.GetEnhMetaFileHeader
+ 0001:00006DA4       Windows.GetEnhMetaFilePaletteEntries
+ 0001:00006A8C       Windows.GetExitCodeThread
+ 0001:00006A94       Windows.GetFileAttributes
+ 0001:00006C14       Windows.GetFileVersionInfo
+ 0001:00006C1C       Windows.GetFileVersionInfoSize
+ 0001:000071AC       Windows.GetFocus
+ 0001:000071B4       Windows.GetForegroundWindow
+ 0001:00006A9C       Windows.GetFullPathName
+ 0001:000071BC       Windows.GetIconInfo
+ 0001:000071D4       Windows.GetKeyboardLayout
+ 0001:000071DC       Windows.GetKeyboardLayoutList
+ 0001:000071E4       Windows.GetKeyboardLayoutName
+ 0001:000071EC       Windows.GetKeyboardState
+ 0001:000071C4       Windows.GetKeyNameText
+ 0001:000071CC       Windows.GetKeyState
+ 0001:000071F4       Windows.GetLastActivePopup
+ 0001:00006AA4       Windows.GetLastError
+ 0001:00006AB4       Windows.GetLocaleInfo
+ 0001:00006AAC       Windows.GetLocalTime
+ 0001:000071FC       Windows.GetMenu
+ 0001:00007204       Windows.GetMenuItemCount
+ 0001:0000720C       Windows.GetMenuItemID
+ 0001:00007214       Windows.GetMenuItemInfo
+ 0001:0000721C       Windows.GetMenuState
+ 0001:00007224       Windows.GetMenuString
+ 0001:0000722C       Windows.GetMessagePos
+ 0001:00007234       Windows.GetMessageTime
+ 0001:00006ABC       Windows.GetModuleFileName
+ 0001:00006AC4       Windows.GetModuleHandle
+ 0001:0000723C       Windows.GetNextWindow
+ 0001:00006DAC       Windows.GetObject
+ 0001:00006DB4       Windows.GetPaletteEntries
+ 0001:00007244       Windows.GetParent
+ 0001:00006DBC       Windows.GetPixel
+ 0001:00006ACC       Windows.GetProcAddress
+ 0001:00006AD4       Windows.GetProfileString
+ 0001:0000724C       Windows.GetProp
+ 0001:00006DC4       Windows.GetRgnBox
+ 0001:00007254       Windows.GetScrollInfo
+ 0001:0000725C       Windows.GetScrollPos
+ 0001:00007264       Windows.GetScrollRange
+ 0001:00006ADC       Windows.GetStdHandle
+ 0001:00006DCC       Windows.GetStockObject
+ 0001:0000726C       Windows.GetSubMenu
+ 0001:00007274       Windows.GetSysColor
+ 0001:0000727C       Windows.GetSysColorBrush
+ 0001:00007284       Windows.GetSystemMenu
+ 0001:0000728C       Windows.GetSystemMetrics
+ 0001:00006DD4       Windows.GetSystemPaletteEntries
+ 0001:00007294       Windows.GetTabbedTextExtent
+ 0001:00006DDC       Windows.GetTextAlign
+ 0001:00006DEC       Windows.GetTextExtentPoint
+ 0001:00006DE4       Windows.GetTextExtentPoint32
+ 0001:00006DF4       Windows.GetTextFace
+ 0001:00006DFC       Windows.GetTextMetrics
+ 0001:00006AE4       Windows.GetThreadLocale
+ 0001:00006AEC       Windows.GetTickCount
+ 0001:0000729C       Windows.GetTopWindow
+ 0001:000072A4       Windows.GetUpdateRect
+ 0001:00006AF4       Windows.GetUserDefaultLCID
+ 0001:00006AFC       Windows.GetVersion
+ 0001:00006B04       Windows.GetVersionEx
+ 0001:000072AC       Windows.GetWindow
+ 0001:000072B4       Windows.GetWindowDC
+ 0001:000072BC       Windows.GetWindowLong
+ 0001:000072C4       Windows.GetWindowLongW
+ 0001:00006E0C       Windows.GetWindowOrgEx
+ 0001:000072CC       Windows.GetWindowPlacement
+ 0001:000072D4       Windows.GetWindowRect
+ 0001:000072DC       Windows.GetWindowText
+ 0001:000072EC       Windows.GetWindowThreadProcessId
+ 0001:000072E4       Windows.GetWindowThreadProcessId
+ 0001:00006E04       Windows.GetWinMetaFileBits
+ 0001:00006B0C       Windows.GlobalAddAtom
+ 0001:00006B14       Windows.GlobalAlloc
+ 0001:00006B1C       Windows.GlobalDeleteAtom
+ 0001:00006B24       Windows.GlobalFindAtom
+ 0001:00006B2C       Windows.GlobalFree
+ 0001:00006B34       Windows.GlobalLock
+ 0001:00006B3C       Windows.GlobalSize
+ 0001:00006B44       Windows.GlobalUnlock
+ 0001:00006E14       Windows.GradientFill
+ 0001:000072F4       Windows.HideCaret
+ 0004:00002820       Windows.HtmlHelpModule
+ 0001:000076E8       Windows.HwndMSWheel
+ 0001:000072FC       Windows.InflateRect
+ 0001:00006B4C       Windows.InitializeCriticalSection
+ 0001:00007304       Windows.InsertMenu
+ 0001:0000730C       Windows.InsertMenuItem
+ 0001:00006A34       Windows.InterlockedDecrement
+ 0001:00006A3C       Windows.InterlockedExchange
+ 0001:00006A44       Windows.InterlockedIncrement
+ 0001:00006E1C       Windows.IntersectClipRect
+ 0001:00007314       Windows.IntersectRect
+ 0001:0000731C       Windows.InvalidateRect
+ 0001:00007324       Windows.IsCharAlpha
+ 0001:0000732C       Windows.IsCharAlphaNumeric
+ 0001:00007334       Windows.IsChild
+ 0001:0000733C       Windows.IsClipboardFormatAvailable
+ 0001:00007344       Windows.IsDialogMessageA
+ 0001:0000734C       Windows.IsDialogMessageW
+ 0001:00007354       Windows.IsIconic
+ 0001:0000735C       Windows.IsRectEmpty
+ 0001:00007364       Windows.IsWindow
+ 0001:0000736C       Windows.IsWindowEnabled
+ 0001:00007374       Windows.IsWindowUnicode
+ 0001:0000737C       Windows.IsWindowVisible
+ 0001:00007384       Windows.IsZoomed
+ 0001:000075F4       Windows.keybd_event
+ 0001:0000738C       Windows.KillTimer
+ 0001:00006B54       Windows.LeaveCriticalSection
+ 0001:00006E2C       Windows.LineTo
+ 0001:00007394       Windows.LoadBitmap
+ 0001:0000739C       Windows.LoadCursor
+ 0001:000073A4       Windows.LoadIcon
+ 0001:000073AC       Windows.LoadKeyboardLayout
+ 0001:00006B5C       Windows.LoadLibrary
+ 0001:00006B64       Windows.LoadResource
+ 0001:000073B4       Windows.LoadString
+ 0001:00006B6C       Windows.LockResource
+ 0001:00006E24       Windows.LPtoDP
+ 0001:00006C04       Windows.lstrcmp
+ 0001:00006C0C       Windows.lstrcpy
+ 0001:000073BC       Windows.MapVirtualKey
+ 0001:000073C4       Windows.MapWindowPoints
+ 0001:00006E34       Windows.MaskBlt
+ 0001:000073CC       Windows.MessageBeep
+ 0001:000073D4       Windows.MessageBox
+ 0001:00006E3C       Windows.MoveToEx
+ 0001:000073DC       Windows.MoveWindow
+ 0001:000073E4       Windows.MsgWaitForMultipleObjects
+ 0001:00006B74       Windows.MulDiv
+ 0001:00006B7C       Windows.MultiByteToWideChar
+ 0001:000073EC       Windows.OemToAnsi
+ 0001:000073F4       Windows.OffsetRect
+ 0001:000073FC       Windows.OpenClipboard
+ 0001:00006E44       Windows.PatBlt
+ 0001:00007404       Windows.PeekMessage
+ 0001:0000740C       Windows.PeekMessageW
+ 0001:00006E4C       Windows.Pie
+ 0001:00006E54       Windows.PlayEnhMetaFile
+ 0001:00007618       Windows.PointToSmallPoint
+ 0001:00006E64       Windows.Polygon
+ 0001:00006E6C       Windows.Polyline
+ 0001:00006E5C       Windows.PolyPolyline
+ 0001:00007414       Windows.PostMessage
+ 0001:0000741C       Windows.PostQuitMessage
+ 0001:00007424       Windows.PtInRect
+ 0001:00006B84       Windows.ReadFile
+ 0001:00006E74       Windows.RealizePalette
+ 0001:00006E84       Windows.Rectangle
+ 0001:00006E7C       Windows.RectVisible
+ 0001:0000742C       Windows.RedrawWindow
+ 0001:0000695C       Windows.RegCloseKey
+ 0001:00006964       Windows.RegCreateKeyEx
+ 0001:0000696C       Windows.RegDeleteValue
+ 0001:00006974       Windows.RegEnumValue
+ 0001:0000697C       Windows.RegFlushKey
+ 0001:00007434       Windows.RegisterClass
+ 0001:0000743C       Windows.RegisterClipboardFormat
+ 0001:00007444       Windows.RegisterWindowMessage
+ 0001:00006984       Windows.RegOpenKeyEx
+ 0001:0000698C       Windows.RegQueryInfoKey
+ 0001:00006994       Windows.RegQueryValueEx
+ 0001:0000699C       Windows.RegSetValueEx
+ 0001:0000744C       Windows.ReleaseCapture
+ 0001:00007454       Windows.ReleaseDC
+ 0001:0000745C       Windows.RemoveMenu
+ 0001:00007464       Windows.RemoveProp
+ 0001:00006B8C       Windows.ResetEvent
+ 0001:00006E8C       Windows.RestoreDC
+ 0001:00006B94       Windows.ResumeThread
+ 0001:00006E94       Windows.RoundRect
+ 0001:00006E9C       Windows.SaveDC
+ 0001:0000746C       Windows.ScreenToClient
+ 0001:00007474       Windows.ScrollWindow
+ 0001:0000747C       Windows.ScrollWindowEx
+ 0001:00006EA4       Windows.SelectClipRgn
+ 0001:00006EAC       Windows.SelectObject
+ 0001:00006EB4       Windows.SelectPalette
+ 0001:00007484       Windows.SendDlgItemMessage
+ 0001:0000748C       Windows.SendMessage
+ 0001:00007494       Windows.SendMessageA
+ 0001:000074A4       Windows.SendMessageTimeout
+ 0001:0000749C       Windows.SendMessageW
+ 0001:00006EBC       Windows.SetAbortProc
+ 0001:000074AC       Windows.SetActiveWindow
+ 0001:00006EC4       Windows.SetBkColor
+ 0001:00006ECC       Windows.SetBkMode
+ 0001:00006ED4       Windows.SetBrushOrgEx
+ 0001:000074B4       Windows.SetCapture
+ 0001:000074BC       Windows.SetCaretPos
+ 0001:000074C4       Windows.SetClassLong
+ 0001:000074CC       Windows.SetClipboardData
+ 0001:000074D4       Windows.SetCursor
+ 0001:000074DC       Windows.SetCursorPos
+ 0001:00006EDC       Windows.SetDIBColorTable
+ 0001:00006B9C       Windows.SetEndOfFile
+ 0001:00006EE4       Windows.SetEnhMetaFileBits
+ 0001:00006BA4       Windows.SetErrorMode
+ 0001:00006BAC       Windows.SetEvent
+ 0001:00006BB4       Windows.SetFilePointer
+ 0001:000074E4       Windows.SetFocus
+ 0001:000074EC       Windows.SetForegroundWindow
+ 0001:000074F4       Windows.SetKeyboardState
+ 0001:00006EEC       Windows.SetMapMode
+ 0001:000074FC       Windows.SetMenu
+ 0001:00007504       Windows.SetMenuItemInfo
+ 0001:0000750C       Windows.SetParent
+ 0001:00006EF4       Windows.SetPixel
+ 0001:00007514       Windows.SetProp
+ 0001:0000751C       Windows.SetRect
+ 0001:00006EFC       Windows.SetROP2
+ 0001:00007524       Windows.SetScrollInfo
+ 0001:0000752C       Windows.SetScrollPos
+ 0001:00007534       Windows.SetScrollRange
+ 0001:00006F04       Windows.SetStretchBltMode
+ 0001:00006F0C       Windows.SetTextAlign
+ 0001:00006F14       Windows.SetTextColor
+ 0001:00006BBC       Windows.SetThreadLocale
+ 0001:0000753C       Windows.SetTimer
+ 0001:00006F1C       Windows.SetViewportExtEx
+ 0001:00006F24       Windows.SetViewportOrgEx
+ 0001:00006F34       Windows.SetWindowExtEx
+ 0001:00007544       Windows.SetWindowLong
+ 0001:0000754C       Windows.SetWindowLongW
+ 0001:00006F3C       Windows.SetWindowOrgEx
+ 0001:00007554       Windows.SetWindowPlacement
+ 0001:0000755C       Windows.SetWindowPos
+ 0001:0000756C       Windows.SetWindowsHookEx
+ 0001:00007564       Windows.SetWindowText
+ 0001:00006F2C       Windows.SetWinMetaFileBits
+ 0001:00007574       Windows.ShowOwnedPopups
+ 0001:0000757C       Windows.ShowScrollBar
+ 0001:00007584       Windows.ShowWindow
+ 0001:00006BC4       Windows.SizeofResource
+ 0001:00006BCC       Windows.Sleep
+ 0001:00007604       Windows.SmallPointToPoint
+ 0001:00006F44       Windows.StartDoc
+ 0001:00006F4C       Windows.StartPage
+ 0001:00006F54       Windows.StretchBlt
+ 0001:00006F5C       Windows.StretchDIBits
+ 0001:00006BD4       Windows.SuspendThread
+ 0001:0000758C       Windows.SystemParametersInfo
+ 0001:00007594       Windows.TabbedTextOut
+ 0001:00006BDC       Windows.TerminateThread
+ 0001:00006F64       Windows.TextOut
+ 0001:0000759C       Windows.TrackPopupMenu
+ 0001:000075A4       Windows.TranslateMDISysAccel
+ 0001:000075AC       Windows.TranslateMessage
+ 0001:000075B4       Windows.UnhookWindowsHookEx
+ 0001:000075BC       Windows.UnionRect
+ 0001:00006F6C       Windows.UnrealizeObject
+ 0001:000075C4       Windows.UnregisterClass
+ 0001:000075CC       Windows.UpdateWindow
+ 0001:000075D4       Windows.ValidateRect
+ 0001:00006C24       Windows.VerQueryValue
+ 0001:00006BE4       Windows.VirtualAlloc
+ 0001:00006BEC       Windows.VirtualQuery
+ 0001:000075DC       Windows.WaitForInputIdle
+ 0001:00006BF4       Windows.WaitForSingleObject
+ 0001:000075E4       Windows.WaitMessage
+ 0001:000075EC       Windows.WindowFromPoint
+ 0002:000000D0       Windows.Windows
+ 0001:00006BFC       Windows.WriteFile
+ 0001:00007630       Windows._CreateWindowEx
+ 0001:00117100       WinSock.accept
+ 0001:00117108       WinSock.bind
+ 0001:00117110       WinSock.closesocket
+ 0001:00117118       WinSock.connect
+ 0001:00117170       WinSock.gethostbyaddr
+ 0001:00117178       WinSock.gethostbyname
+ 0001:00117180       WinSock.gethostname
+ 0001:00117120       WinSock.getsockname
+ 0001:00117128       WinSock.htons
+ 0001:00117130       WinSock.inet_addr
+ 0001:00117138       WinSock.inet_ntoa
+ 0001:00117140       WinSock.listen
+ 0001:00117148       WinSock.ntohs
+ 0001:00117150       WinSock.recv
+ 0001:00117158       WinSock.send
+ 0001:00117160       WinSock.setsockopt
+ 0001:00117168       WinSock.socket
+ 0001:00117188       WinSock.WSAAsyncGetHostByName
+ 0001:001171A8       WinSock.WSACancelBlockingCall
+ 0001:001171C0       WinSock.WSACleanup
+ 0001:001170FC       WinSock.WSAGetAsyncError
+ 0001:001171A0       WinSock.WSAGetLastError
+ 0001:001171B0       WinSock.WSAIsBlocking
+ 0001:00117190       WinSock.WSASetBlockingHook
+ 0001:001171B8       WinSock.WSAStartup
+ 0001:00117198       WinSock.WSAUnhookBlockingHook
+ 0001:00047494       WinSpool.ClosePrinter
+ 0001:0004749C       WinSpool.DocumentProperties
+ 0001:000474A4       WinSpool.EnumPrinters
+ 0001:000474AC       WinSpool.OpenPrinter
+ 0001:00139170       WordXP..TWordApplication
+ 0001:0013879C       WordXP..TWordDocument
+ 0003:000034F0       WordXP.CServerData
+ 0003:0000352C       WordXP.CServerData
+ 0001:00139B0C       WordXP.TWordApplication.Connect
+ 0001:00139BE4       WordXP.TWordApplication.Create
+ 0001:00139C1C       WordXP.TWordApplication.Destroy
+ 0001:00139B84       WordXP.TWordApplication.Disconnect
+ 0001:00139BBC       WordXP.TWordApplication.GetDefaultInterface
+ 0001:0013A2E4       WordXP.TWordApplication.Get_Documents
+ 0001:0013A340       WordXP.TWordApplication.Get_Visible
+ 0001:00139B00       WordXP.TWordApplication.InitServerData
+ 0001:00139C44       WordXP.TWordApplication.InvokeEvent
+ 0001:0013A3FC       WordXP.TWordApplication.Quit
+ 0001:0013A3A4       WordXP.TWordApplication.Set_Visible
+ 0001:00139970       WordXP.TWordDocument.Close
+ 0001:001396EC       WordXP.TWordDocument.Connect
+ 0001:00139760       WordXP.TWordDocument.ConnectTo
+ 0001:00139800       WordXP.TWordDocument.Create
+ 0001:00139838       WordXP.TWordDocument.Destroy
+ 0001:001397C0       WordXP.TWordDocument.Disconnect
+ 0001:001397E0       WordXP.TWordDocument.GetDefaultInterface
+ 0001:001398AC       WordXP.TWordDocument.Get_FormFields
+ 0001:0013990C       WordXP.TWordDocument.Get_ProtectionType
+ 0001:001396E0       WordXP.TWordDocument.InitServerData
+ 0001:00139860       WordXP.TWordDocument.InvokeEvent
+ 0001:00139A40       WordXP.TWordDocument.Range
+ 0001:001399D4       WordXP.TWordDocument.Range
+ 0001:00139AA8       WordXP.TWordDocument.Unprotect
+ 0004:00003858       Wsockc..2
+ 0001:00117384       Wsockc..TXWBWinsock
+ 0001:0011B080       Wsockc.Finalization
+ 0004:00003848       Wsockc.HookTimeOut
+ 0001:00117408       Wsockc.LPack
+ 0001:001182FC       Wsockc.NetBlockingHook
+ 0004:0000384C       Wsockc.NetCallPending
+ 0004:00003850       Wsockc.NetTimerStart
+ 0004:0000385C       Wsockc.Prefix
+ 0001:001175F8       Wsockc.SPack
+ 0001:00117734       Wsockc.TXWBWinsock.BuildApi
+ 0001:00117B54       Wsockc.TXWBWinsock.BuildHdr
+ 0001:00117C18       Wsockc.TXWBWinsock.BuildPar
+ 0001:0011AB6C       Wsockc.TXWBWinsock.BuildPar1
+ 0001:00119ACC       Wsockc.TXWBWinsock.Create
+ 0001:00119A0C       Wsockc.TXWBWinsock.GetServerPacket
+ 0001:00118364       Wsockc.TXWBWinsock.NetCall
+ 0001:00119B08       Wsockc.TXWBWinsock.NetError
+ 0001:001188C0       Wsockc.TXWBWinsock.NetStart
+ 0001:00118E0C       Wsockc.TXWBWinsock.NetStart1
+ 0001:0011977C       Wsockc.TXWBWinsock.NetStop
+ 0001:00117818       Wsockc.TXWBWinsock.NetworkConnect
+ 0001:00117AE8       Wsockc.TXWBWinsock.NetworkDisconnect
+ 0001:001180FC       Wsockc.TXWBWinsock.StrPack
+ 0001:00118774       Wsockc.TXWBWinsock.tCall
+ 0001:00118234       Wsockc.TXWBWinsock.VarPack
+ 0002:00000DF0       Wsockc.Wsockc
+ 0004:00005904       XMLUtils..1
+ 0001:001BDF78       XMLUtils.Finalization
+ 0001:001BDC50       XMLUtils.FindXMLAttributeValue
+ 0001:001BDB24       XMLUtils.FindXMLElement
+ 0001:001BDDCC       XMLUtils.GetXMLWPText
+ 0001:001BDA40       XMLUtils.Text2XML
+ 0003:0000380C       XMLUtils.XMLCnvChr
+ 0003:00003820       XMLUtils.XMLCnvStr
+ 0002:000012AC       XMLUtils.XMLUtils
+ 0001:001AE4AC       XuDigSigSC_TLB..CoXuDigSigS
+ 0003:000037E4       XuDigSigSC_TLB.CLASS_XuDigSigS
+ 0001:001AE504       XuDigSigSC_TLB.CoXuDigSigS.Create
+ 0004:00003838       XWBRich20..6
+ 0001:001136B0       XWBRich20..TConversion
+ 0001:001134E4       XWBRich20..TParaAttributes
+ 0001:00114D2C       XWBRich20..TRichEditStrings
+ 0001:00113738       XWBRich20..TXWBCustomRichEdit
+ 0001:00113910       XWBRich20..TXWBRichEdit
+ 0001:00113448       XWBRich20..TXWBTextAttributes
+ 0001:00115314       XWBRich20.AdjustLineBreaks
+ 0003:000031E0       XWBRich20.ConversionFormatList
+ 0003:000031E4       XWBRich20.Empty
+ 0001:00116638       XWBRich20.Finalization
+ 0004:0000383C       XWBRich20.FRichEditModule
+ 0003:000031E8       XWBRich20.HideScrollBar
+ 0003:000031F0       XWBRich20.HideSelections
+ 0003:000031F8       XWBRich20.Painting
+ 0003:000031C8       XWBRich20.RTFConversionFormat
+ 0001:001153A8       XWBRich20.StreamLoad
+ 0001:00115348       XWBRich20.StreamSave
+ 0001:00114D04       XWBRich20.TConversion.ConvertReadStream
+ 0001:00114D18       XWBRich20.TConversion.ConvertWriteStream
+ 0003:000031D4       XWBRich20.TextConversionFormat
+ 0001:00114C68       XWBRich20.TParaAttributes.Assign
+ 0001:00114914       XWBRich20.TParaAttributes.Create
+ 0001:00114A04       XWBRich20.TParaAttributes.GetAlignment
+ 0001:0011496C       XWBRich20.TParaAttributes.GetAttributes
+ 0001:00114AD8       XWBRich20.TParaAttributes.GetFirstIndent
+ 0001:00114B34       XWBRich20.TParaAttributes.GetLeftIndent
+ 0001:00114A58       XWBRich20.TParaAttributes.GetNumbering
+ 0001:00114B90       XWBRich20.TParaAttributes.GetRightIndent
+ 0001:00114BEC       XWBRich20.TParaAttributes.GetTab
+ 0001:00114950       XWBRich20.TParaAttributes.InitPara
+ 0001:00114A20       XWBRich20.TParaAttributes.SetAlignment
+ 0001:001149A0       XWBRich20.TParaAttributes.SetAttributes
+ 0001:00114AF8       XWBRich20.TParaAttributes.SetFirstIndent
+ 0001:00114B54       XWBRich20.TParaAttributes.SetLeftIndent
+ 0001:00114A74       XWBRich20.TParaAttributes.SetNumbering
+ 0001:00114BB0       XWBRich20.TParaAttributes.SetRightIndent
+ 0001:00114C14       XWBRich20.TParaAttributes.SetTab
+ 0001:00114E68       XWBRich20.TRichEditStrings.AddStrings
+ 0001:00115208       XWBRich20.TRichEditStrings.Clear
+ 0001:0011515C       XWBRich20.TRichEditStrings.Delete
+ 0001:00114E38       XWBRich20.TRichEditStrings.Destroy
+ 0001:00115268       XWBRich20.TRichEditStrings.EnableChange
+ 0001:00114F38       XWBRich20.TRichEditStrings.Get
+ 0001:00114EE0       XWBRich20.TRichEditStrings.GetCount
+ 0001:00115018       XWBRich20.TRichEditStrings.Insert
+ 0001:00115714       XWBRich20.TRichEditStrings.LoadFromFile
+ 0001:001154A0       XWBRich20.TRichEditStrings.LoadFromStream
+ 0001:00114F8C       XWBRich20.TRichEditStrings.Put
+ 0001:00115820       XWBRich20.TRichEditStrings.SaveToFile
+ 0001:00115604       XWBRich20.TRichEditStrings.SaveToStream
+ 0001:001152C4       XWBRich20.TRichEditStrings.SetTextStr
+ 0001:00115218       XWBRich20.TRichEditStrings.SetUpdateState
+ 0001:00115A98       XWBRich20.TXWBCustomRichEdit.Clear
+ 0001:00115F6C       XWBRich20.TXWBCustomRichEdit.CMBiDiModeChanged
+ 0001:0011608C       XWBRich20.TXWBCustomRichEdit.CMColorChanged
+ 0001:00115DC8       XWBRich20.TXWBCustomRichEdit.CMFontChanged
+ 0001:0011643C       XWBRich20.TXWBCustomRichEdit.CNNotify
+ 0001:00115918       XWBRich20.TXWBCustomRichEdit.Create
+ 0001:00115AB0       XWBRich20.TXWBCustomRichEdit.CreateParams
+ 0001:00115B3C       XWBRich20.TXWBCustomRichEdit.CreateWnd
+ 0001:00115A3C       XWBRich20.TXWBCustomRichEdit.Destroy
+ 0001:00115C88       XWBRich20.TXWBCustomRichEdit.DestroyWnd
+ 0001:00115DD8       XWBRich20.TXWBCustomRichEdit.DoSetMaxLength
+ 0001:00115DF8       XWBRich20.TXWBCustomRichEdit.GetCaretPos
+ 0001:00116074       XWBRich20.TXWBCustomRichEdit.GetPlainText
+ 0001:00115E58       XWBRich20.TXWBCustomRichEdit.GetSelLength
+ 0001:00115E80       XWBRich20.TXWBCustomRichEdit.GetSelStart
+ 0001:00115F28       XWBRich20.TXWBCustomRichEdit.GetSelText
+ 0001:00115EA4       XWBRich20.TXWBCustomRichEdit.GetSelTextBuf
+ 0001:001160F0       XWBRich20.TXWBCustomRichEdit.Print
+ 0001:001165C8       XWBRich20.TXWBCustomRichEdit.ProtectChange
+ 0001:00116618       XWBRich20.TXWBCustomRichEdit.RequestSize
+ 0001:00116598       XWBRich20.TXWBCustomRichEdit.SaveClipboard
+ 0001:001165F8       XWBRich20.TXWBCustomRichEdit.SelectionChange
+ 0001:00115FC0       XWBRich20.TXWBCustomRichEdit.SetHideScrollBars
+ 0001:00115FD4       XWBRich20.TXWBCustomRichEdit.SetHideSelection
+ 0001:00116080       XWBRich20.TXWBCustomRichEdit.SetPlainText
+ 0001:001160B8       XWBRich20.TXWBCustomRichEdit.SetRichEditStrings
+ 0001:00116018       XWBRich20.TXWBCustomRichEdit.SetSelLength
+ 0001:001160C8       XWBRich20.TXWBCustomRichEdit.SetSelStart
+ 0001:00116004       XWBRich20.TXWBCustomRichEdit.SetURLDetect
+ 0001:00115D58       XWBRich20.TXWBCustomRichEdit.WMNCDestroy
+ 0001:001162C8       XWBRich20.TXWBCustomRichEdit.WMPaint
+ 0001:00115D70       XWBRich20.TXWBCustomRichEdit.WMRButtonUp
+ 0001:00116390       XWBRich20.TXWBCustomRichEdit.WMSetCursor
+ 0001:00115D60       XWBRich20.TXWBCustomRichEdit.WMSetFont
+ 0001:001146B8       XWBRich20.TXWBTextAttributes.Assign
+ 0001:001147E4       XWBRich20.TXWBTextAttributes.AssignTo
+ 0001:00114328       XWBRich20.TXWBTextAttributes.Create
+ 0001:00114390       XWBRich20.TXWBTextAttributes.GetAttributes
+ 0001:0011440C       XWBRich20.TXWBTextAttributes.GetCharset
+ 0001:00114450       XWBRich20.TXWBTextAttributes.GetColor
+ 0001:001144B8       XWBRich20.TXWBTextAttributes.GetName
+ 0001:00114648       XWBRich20.TXWBTextAttributes.GetPitch
+ 0001:001145F4       XWBRich20.TXWBTextAttributes.GetSize
+ 0001:0011454C       XWBRich20.TXWBTextAttributes.GetStyle
+ 0001:00114374       XWBRich20.TXWBTextAttributes.InitFormat
+ 0001:001143D0       XWBRich20.TXWBTextAttributes.SetAttributes
+ 0001:00114420       XWBRich20.TXWBTextAttributes.SetCharset
+ 0001:00114470       XWBRich20.TXWBTextAttributes.SetColor
+ 0001:001144DC       XWBRich20.TXWBTextAttributes.SetName
+ 0001:00114678       XWBRich20.TXWBTextAttributes.SetPitch
+ 0001:00114610       XWBRich20.TXWBTextAttributes.SetSize
+ 0001:0011459C       XWBRich20.TXWBTextAttributes.SetStyle
+ 0002:00000DE8       XWBRich20.XWBRich20
+ 0001:0010D840       Xwbut1.DeleteRegData
+ 0001:0010D628       Xwbut1.Iff
+ 0001:0010D6A0       Xwbut1.ReadRegData
+ 0001:0010D8FC       Xwbut1.ReadRegDataDefault
+ 0001:0010D998       Xwbut1.ReadRegValueNames
+ 0001:0010D76C       Xwbut1.WriteRegData
+
+
+  Address             Publics by Value
+
+ 0001:00000130       System..TObject
+ 0001:00000254       System..TInterfacedObject
+ 0001:000002EC       System.GetStdHandle
+ 0001:000002F4       System.RaiseException
+ 0001:000002FC       System.RtlUnwind
+ 0001:00000304       System.UnhandledExceptionFilter
+ 0001:0000030C       System.WriteFile
+ 0001:00000314       System.CharNext
+ 0001:0000031C       System.CompareString
+ 0001:00000324       System.CreateThread
+ 0001:0000032C       System.ExitThread
+ 0001:00000334       System.ExitProcess
+ 0001:0000033C       System.MessageBox
+ 0001:00000344       System.FindClose
+ 0001:0000034C       System.FindFirstFile
+ 0001:00000354       System.FreeLibrary
+ 0001:0000035C       System.GetCommandLine
+ 0001:00000364       System.GetLocaleInfo
+ 0001:0000036C       System.GetModuleFileName
+ 0001:00000374       System.GetModuleHandle
+ 0001:0000037C       System.GetProcAddress
+ 0001:00000384       System.GetStartupInfo
+ 0001:0000038C       System.GetThreadLocale
+ 0001:00000394       System.LoadLibraryEx
+ 0001:0000039C       System.LoadString
+ 0001:000003A4       System.lstrcpyn
+ 0001:000003AC       System.@strlen
+ 0001:000003B4       System.MultiByteToWideChar
+ 0001:000003BC       System.RegCloseKey
+ 0001:000003C4       System.RegOpenKeyEx
+ 0001:000003CC       System.RegQueryValueEx
+ 0001:000003D4       System.WideCharToMultiByte
+ 0001:000003DC       System.VirtualQuery
+ 0001:000003E4       System.SysAllocStringLen
+ 0001:000003EC       System.SysReAllocStringLen
+ 0001:000003F4       System.SysFreeString
+ 0001:000003FC       System.InterlockedIncrement
+ 0001:00000404       System.InterlockedDecrement
+ 0001:0000040C       System.GetCurrentThreadId
+ 0001:00000414       System.QueryPerformanceCounter
+ 0001:0000041C       System.GetTickCount
+ 0001:00000424       System.GetCmdShow
+ 0001:00000448       System.VirtualAlloc
+ 0001:00000450       System.VirtualFree
+ 0001:00000458       System.Sleep
+ 0001:00000460       System.DestroyWindow
+ 0001:000004C8       System.LockCmpxchg
+ 0001:000004D0       System.Move12
+ 0001:000004E4       System.Move20
+ 0001:00000504       System.Move28
+ 0001:00000530       System.Move36
+ 0001:00000550       System.Move44
+ 0001:00000574       System.Move52
+ 0001:000005A0       System.Move60
+ 0001:000005D0       System.Move68
+ 0001:00000608       System.MoveX16L4
+ 0001:00000638       System.MoveX8L4
+ 0001:00000654       System.RemoveMediumFreeBlock
+ 0001:00000694       System.InsertMediumBlockIntoBin
+ 0001:000006F4       System.BinMediumSequentialFeedRemainder
+ 0001:00000760       System.AllocNewSequentialFeedMediumPool
+ 0001:000007D8       System.LockLargeBlocks
+ 0001:00000818       System.AllocateLargeBlock
+ 0001:0000087C       System.FreeLargeBlock
+ 0001:000008B8       System.SysGetMem
+ 0001:00000C20       System.SysFreeMem
+ 0001:00000E00       System.SysReallocMem
+ 0001:00001188       System.SysAllocMem
+ 0001:000011B8       System.NextMediumBlock
+ 0001:000011DC       System.GetFirstMediumBlockInPool
+ 0001:0000121C       System.GetFirstAndLastSmallBlockInPool
+ 0001:00001258       System.CardinalToStrBuf
+ 0001:00001374       System.AppendStringToBuffer
+ 0001:0000138C       System.InternalIsValidClass
+ 0001:00001444       System.GetObjectClass
+ 0001:00001474       System.LockExpectedMemoryLeaksList
+ 0001:000014E0       System.SysRegisterExpectedMemoryLeak
+ 0001:00001520       System.SysUnregisterExpectedMemoryLeak
+ 0001:00001578       System.CheckSmallBlockPoolForLeaks
+ 0001:000016C4       System.ScanForMemoryLeaks
+ 0001:00001B3C       System.BuildBlockTypeLookupTable
+ 0001:00001B80       System.InitializeMemoryManager
+ 0001:00001CA8       System.FreeAllMemory
+ 0001:00001D38       System.FinalizeMemoryManager
+ 0001:00001D8C       System.AllocMem
+ 0001:00001DA4       System.@GetMem
+ 0001:00001DC0       System.@FreeMem
+ 0001:00001DD8       System.@ReallocMem
+ 0001:00001E28       System.SetMemoryManager
+ 0001:00001E3C       System.IsMemoryManagerSet
+ 0001:00001E84       System.ExceptObject
+ 0001:00001EA4       System.ExceptAddr
+ 0001:00001EC4       System.AcquireExceptionObject
+ 0001:00001EF8       System.RunErrorAt
+ 0001:00001F04       System.ErrorAt
+ 0001:00001F50       System.Error
+ 0001:00001F5C       System.@_IOTest
+ 0001:00001F7C       System.SetInOutRes
+ 0001:00001F8C       System.@Copy
+ 0001:00001FD0       System.IOResult
+ 0001:00001FF0       System.Move
+ 0001:000020F0       System.GetParamStr
+ 0001:000021EC       System.ParamCount
+ 0001:0000224C       System.ParamStr
+ 0001:000022AC       System.@SetLength
+ 0001:000022B0       System.Randomize
+ 0001:000022D8       System.Random
+ 0001:000022F4       System.UpCase
+ 0001:00002300       System.Set8087CW
+ 0001:00002310       System.Get8087CW
+ 0001:00002318       System.Int
+ 0001:00002344       System.Frac
+ 0001:00002374       System.Exp
+ 0001:00002394       System.Cos
+ 0001:000023A4       System.Sin
+ 0001:000023B4       System.Ln
+ 0001:000023C8       System.Sqrt
+ 0001:000023D8       System.@ROUND
+ 0001:000023E4       System.@TRUNC
+ 0001:00002408       System.@AbstractError
+ 0001:00002424       System.InternalFlush
+ 0001:0000246C       System.Flush
+ 0001:00002478       System.@Close
+ 0001:000024D0       System.@PStrNCat
+ 0001:00002500       System.@PStrCpy
+ 0001:0000250C       System.@PStrNCpy
+ 0001:00002528       System.@PStrCmp
+ 0001:000025AC       System.@AStrCmp
+ 0001:0000261C       System.@FillChar
+ 0001:000026B8       System.@StrLong
+ 0001:00002718       System.@Str0Long
+ 0001:00002724       System.@ValLong
+ 0001:000027F8       System.@_CToPasStr
+ 0001:00002804       System.@_CLenToPasStr
+ 0001:00002828       System.@SetElem
+ 0001:0000284C       System.@SetRange
+ 0001:000028A4       System.@SetEq
+ 0001:000028B8       System.@SetUnion
+ 0001:000028C4       System.@ValExt
+ 0001:000029C8       System.FPower10
+ 0001:000029D0       System.@Pow10
+ 0001:00002CB4       System.GetKeyboardType
+ 0001:00002CBC       System.@isNECWindows
+ 0001:00002CEC       System.@FpuMaskInit
+ 0001:00002DB0       System.@FpuInit
+ 0001:00002DBC       System.@BoundErr
+ 0001:00002DC4       System.TObject.ClassType
+ 0001:00002DCC       System.TObject.ClassName
+ 0001:00002DE0       System.TObject.ClassNameIs
+ 0001:00002E78       System.TObject.ClassParent
+ 0001:00002E84       System.TObject.NewInstance
+ 0001:00002EA0       System.TObject.FreeInstance
+ 0001:00002EB4       System.TObject.InstanceSize
+ 0001:00002EBC       System.TObject.Create
+ 0001:00002EDC       System.TObject.Destroy
+ 0001:00002EEC       System.TObject.Free
+ 0001:00002EF8       System.TObject.InitInstance
+ 0001:00002F50       System.TObject.CleanupInstance
+ 0001:00002F70       System.InvokeImplGetter
+ 0001:00002FA0       System.TObject.GetInterface
+ 0001:00003034       System.TObject.GetInterfaceEntry
+ 0001:00003078       System.@IsClass
+ 0001:0000309C       System.@AsClass
+ 0001:000030B8       System.GetDynaMethod
+ 0001:000030E8       System.@CallDynaInst
+ 0001:00003100       System.@FindDynaInst
+ 0001:00003118       System.TObject.InheritsFrom
+ 0001:0000312C       System.TObject.ClassInfo
+ 0001:00003134       System.TObject.SafeCallException
+ 0001:0000313C       System.TObject.DefaultHandler
+ 0001:00003140       System.TObject.AfterConstruction
+ 0001:00003144       System.TObject.BeforeDestruction
+ 0001:00003148       System.TObject.Dispatch
+ 0001:00003170       System.TObject.MethodAddress
+ 0001:000031C0       System.TObject.MethodName
+ 0001:00003200       System.TObject.FieldAddress
+ 0001:00003250       System.@ClassCreate
+ 0001:000032A0       System.@ClassDestroy
+ 0001:000032A8       System.@AfterConstruction
+ 0001:000032F8       System.@BeforeDestruction
+ 0001:00003308       System.NotifyReRaise
+ 0001:00003324       System.NotifyNonDelphiException
+ 0001:00003348       System.NotifyExcept
+ 0001:00003360       System.NotifyOnExcept
+ 0001:00003374       System.NotifyAnyExcept
+ 0001:00003388       System.CheckJmp
+ 0001:000033A8       System.NotifyExceptFinally
+ 0001:000033D0       System.NotifyTerminate
+ 0001:000033EC       System.NotifyUnhandled
+ 0001:0000340C       System.@HandleAnyException
+ 0001:00003538       System.@HandleOnException
+ 0001:000036C0       System.@HandleFinally
+ 0001:00003768       System.@HandleFinallyInternal
+ 0001:000037A0       System.@HandleAutoException
+ 0001:00003864       System.@RaiseExcept
+ 0001:0000388C       System.@RaiseAgain
+ 0001:000038E0       System.@DoneExcept
+ 0001:00003910       System.@TryFinallyExit
+ 0001:00003928       System.MapToRunError
+ 0001:000039C8       System.@ExceptionHandler
+ 0001:00003A68       System.SetExceptionHandler
+ 0001:00003A88       System.UnsetExceptionHandler
+ 0001:00003AB0       System.FinalizeUnits
+ 0001:00003B14       System.InitUnits
+ 0001:00003B7C       System.@StartExe
+ 0001:00003BBC       System.@InitResStringImports
+ 0001:00003BE4       System.@InitImports
+ 0001:00003C08       System.MakeErrorMessage
+ 0001:00003C6C       System.ExitDll
+ 0001:00003C9C       System.WriteErrorMessage
+ 0001:00003D28       System.@Halt0
+ 0001:00003E04       System.@Halt
+ 0001:00003E10       System.@RunError
+ 0001:00003E1C       System.@Assert
+ 0001:00003E3C       System.ThreadWrapper
+ 0001:00003E74       System.BeginThread
+ 0001:00003ED4       System.EndThread
+ 0001:00003EF0       System.@LStrClr
+ 0001:00003F14       System.@LStrArrayClr
+ 0001:00003F44       System.@LStrAsg
+ 0001:00003F88       System.@LStrLAsg
+ 0001:00003FB4       System.@NewAnsiString
+ 0001:00003FE0       System.@LStrFromPCharLen
+ 0001:00004010       System.CharFromWChar
+ 0001:00004030       System.WCharFromChar
+ 0001:0000404C       System.@LStrFromPWCharLen
+ 0001:000040D8       System.@LStrFromChar
+ 0001:000040E8       System.@LStrFromPChar
+ 0001:00004118       System.@LStrFromPWChar
+ 0001:00004154       System.@LStrFromString
+ 0001:00004160       System.@LStrFromArray
+ 0001:00004178       System.@LStrFromWStr
+ 0001:0000418C       System.@LStrToString
+ 0001:000041B0       System.@LStrLen
+ 0001:000041BC       System.@LStrCat
+ 0001:00004200       System.@LStrCat3
+ 0001:00004274       System.@LStrCatN
+ 0001:00004300       System.@LStrCmp
+ 0001:000043A4       System.@LStrAddRef
+ 0001:000043B4       System.@LStrToPChar
+ 0001:000043C0       System.InternalUniqueString
+ 0001:00004404       System.UniqueString
+ 0001:0000440C       System.@UniqueStringA
+ 0001:00004414       System.@LStrCopy
+ 0001:00004454       System.@LStrDelete
+ 0001:0000449C       System.@LStrInsert
+ 0001:000044F8       System.Pos
+ 0001:0000463C       System.@LStrSetLength
+ 0001:000046A0       System.StringOfChar
+ 0001:000046CC       System.WStrError
+ 0001:000046D4       System.@NewWideString
+ 0001:000046EC       System.WStrSet
+ 0001:000046FC       System.@WStrClr
+ 0001:00004714       System.@WStrArrayClr
+ 0001:00004738       System.@WStrAsg
+ 0001:00004760       System.@WStrFromPCharLen
+ 0001:000047EC       System.@WStrFromPWCharLen
+ 0001:00004810       System.@WStrFromWChar
+ 0001:00004820       System.@WStrFromPWChar
+ 0001:0000485C       System.@WStrFromString
+ 0001:00004868       System.@WStrFromLStr
+ 0001:00004878       System.@WStrToString
+ 0001:000048E4       System.@WStrToPWChar
+ 0001:000048F4       System.@WStrLen
+ 0001:00004900       System.@WStrCat
+ 0001:00004960       System.@WStrCatN
+ 0001:000049A8       System.@WStrCmp
+ 0001:00004A2C       System.@WStrCopy
+ 0001:00004A78       System.@WStrSetLength
+ 0001:00004ABC       System.@WStrAddRef
+ 0001:00004ADC       System.@InitializeRecord
+ 0001:00004B0C       System.@InitializeArray
+ 0001:00004BA0       System.@Initialize
+ 0001:00004BAC       System.@FinalizeRecord
+ 0001:00004BE0       System.@VarClr
+ 0001:00004BF8       System.@FinalizeArray
+ 0001:00004CE4       System.@Finalize
+ 0001:00004CF0       System.@AddRefRecord
+ 0001:00004D20       System.@VarAddRef
+ 0001:00004D38       System.@AddRefArray
+ 0001:00004DF8       System.@VarCopy
+ 0001:00004E10       System.@CopyRecord
+ 0001:00004F2C       System.@CopyArray
+ 0001:00005020       System.@New
+ 0001:00005034       System.@Dispose
+ 0001:00005044       System.WideCharLenToStrVar
+ 0001:00005050       System.OleStrToStrVar
+ 0001:00005074       System.StringToOleStr
+ 0001:00005094       System.@DispCallByIDError
+ 0001:0000509C       System.@_llmul
+ 0001:000050C0       System.@_lldiv
+ 0001:00005154       System.@_llmod
+ 0001:000051D0       System.@_llshl
+ 0001:000051F0       System.@_llushr
+ 0001:00005210       System.@ValInt64
+ 0001:00005428       System.@DynArrayLength
+ 0001:00005430       System.@DynArrayHigh
+ 0001:00005438       System.CopyArray
+ 0001:00005448       System.FinalizeArray
+ 0001:00005450       System.DynArrayClear
+ 0001:00005458       System.DynArraySetLength
+ 0001:000055E4       System.@DynArraySetLength
+ 0001:000055F0       System.@DynArrayCopy
+ 0001:00005610       System.@DynArrayCopyRange
+ 0001:00005704       System.@DynArrayClear
+ 0001:00005740       System.@DynArrayAsg
+ 0001:00005768       System.@DynArrayAddRef
+ 0001:00005774       System.FindHInstance
+ 0001:0000579C       System.FindClassHInstance
+ 0001:000057A4       System.DelayLoadResourceModule
+ 0001:000057EC       System.FindResourceHInstance
+ 0001:00005824       System.FindBS
+ 0001:00005844       System.ToLongPath
+ 0001:00005A08       System.LoadResourceModule
+ 0001:00005C78       System.EnumModules
+ 0001:00005C80       System.EnumModules
+ 0001:00005CA8       System.AddModuleUnloadProc
+ 0001:00005CB0       System.RemoveModuleUnloadProc
+ 0001:00005CB8       System.AddModuleUnloadProc
+ 0001:00005CD8       System.RemoveModuleUnloadProc
+ 0001:00005D3C       System.NotifyModuleUnload
+ 0001:00005D98       System.RegisterModule
+ 0001:00005DA8       System.UnregisterModule
+ 0001:00005E18       System.@IntfClear
+ 0001:00005E30       System.@IntfCopy
+ 0001:00005E5C       System.@IntfCast
+ 0001:00005E8C       System.@IntfAddRef
+ 0001:00005E98       System.TInterfacedObject.AfterConstruction
+ 0001:00005EA4       System.TInterfacedObject.BeforeDestruction
+ 0001:00005EB4       System.TInterfacedObject.NewInstance
+ 0001:00005EC4       System.TInterfacedObject.QueryInterface
+ 0001:00005EEC       System.TInterfacedObject._AddRef
+ 0001:00005F00       System.TInterfacedObject._Release
+ 0001:00005F28       System.@CheckAutoResult
+ 0001:00005F44       System.UnicodeToUtf8
+ 0001:00006020       System.Utf8ToUnicode
+ 0001:00006150       System.UTF8Encode
+ 0001:0000620C       System.UTF8Decode
+ 0001:000062C4       System.AnsiToUtf8
+ 0001:00006314       System.LoadResString
+ 0001:0000636C       System.GetACP
+ 0001:00006374       System.Finalization
+ 0001:000063D4       SysInit.GetModuleHandle
+ 0001:000063DC       SysInit.LocalAlloc
+ 0001:000063E4       SysInit.TlsGetValue
+ 0001:000063EC       SysInit.TlsSetValue
+ 0001:000063F4       SysInit.AllocTlsBuffer
+ 0001:00006400       SysInit.GetTlsSize
+ 0001:00006408       SysInit.InitThreadTLS
+ 0001:0000644C       SysInit.@GetTls
+ 0001:0000648C       SysInit.InitializeModule
+ 0001:00006498       SysInit.@InitExe
+ 0001:000064DC       ShareMem.SysGetMem
+ 0001:000064E4       ShareMem.GetModuleHandle
+ 0001:000064EC       ShareMem.GetProcAddress
+ 0001:000064F4       ShareMem.HeapAddRef
+ 0001:00006544       ShareMem.HeapRelease
+ 0001:00006594       ShareMem.DefaultAllocMem
+ 0001:000065B8       ShareMem.DefaultRegisterAndUnregisterExpectedMemoryLeak
+ 0001:000065BC       ShareMem.InitMemoryManager
+ 0001:00006728       ShareMem.Finalization
+ 0001:00006768       Types.Rect
+ 0001:00006784       Types.Point
+ 0001:0000678C       Types.SmallPoint
+ 0001:000067A4       Types.IntersectRect
+ 0001:00006804       Types.IsRectEmpty
+ 0001:0000681C       Types.OffsetRect
+ 0001:00006834       Types.Bounds
+ 0001:00006850       Types.CenterPoint
+ 0001:0000695C       Windows.RegCloseKey
+ 0001:00006964       Windows.RegCreateKeyEx
+ 0001:0000696C       Windows.RegDeleteValue
+ 0001:00006974       Windows.RegEnumValue
+ 0001:0000697C       Windows.RegFlushKey
+ 0001:00006984       Windows.RegOpenKeyEx
+ 0001:0000698C       Windows.RegQueryInfoKey
+ 0001:00006994       Windows.RegQueryValueEx
+ 0001:0000699C       Windows.RegSetValueEx
+ 0001:000069A4       Windows.CloseHandle
+ 0001:000069AC       Windows.CompareString
+ 0001:000069B4       Windows.CreateEvent
+ 0001:000069BC       Windows.CreateFile
+ 0001:000069C4       Windows.CreateProcess
+ 0001:000069CC       Windows.CreateThread
+ 0001:000069D4       Windows.DeleteCriticalSection
+ 0001:000069DC       Windows.EnterCriticalSection
+ 0001:000069E4       Windows.EnumCalendarInfoA
+ 0001:000069EC       Windows.EnumResourceNames
+ 0001:000069F4       Windows.FileTimeToDosDateTime
+ 0001:000069FC       Windows.FileTimeToLocalFileTime
+ 0001:00006A04       Windows.FindClose
+ 0001:00006A0C       Windows.FindFirstFile
+ 0001:00006A14       Windows.FindNextFile
+ 0001:00006A1C       Windows.FindResource
+ 0001:00006A24       Windows.FormatMessage
+ 0001:00006A2C       Windows.FreeLibrary
+ 0001:00006A34       Windows.InterlockedDecrement
+ 0001:00006A3C       Windows.InterlockedExchange
+ 0001:00006A44       Windows.InterlockedIncrement
+ 0001:00006A4C       Windows.FreeResource
+ 0001:00006A54       Windows.GetCPInfo
+ 0001:00006A5C       Windows.GetComputerName
+ 0001:00006A64       Windows.GetCurrentProcessId
+ 0001:00006A6C       Windows.GetCurrentThreadId
+ 0001:00006A74       Windows.GetDateFormat
+ 0001:00006A7C       Windows.GetDiskFreeSpaceA
+ 0001:00006A84       Windows.GetDriveType
+ 0001:00006A8C       Windows.GetExitCodeThread
+ 0001:00006A94       Windows.GetFileAttributes
+ 0001:00006A9C       Windows.GetFullPathName
+ 0001:00006AA4       Windows.GetLastError
+ 0001:00006AAC       Windows.GetLocalTime
+ 0001:00006AB4       Windows.GetLocaleInfo
+ 0001:00006ABC       Windows.GetModuleFileName
+ 0001:00006AC4       Windows.GetModuleHandle
+ 0001:00006ACC       Windows.GetProcAddress
+ 0001:00006AD4       Windows.GetProfileString
+ 0001:00006ADC       Windows.GetStdHandle
+ 0001:00006AE4       Windows.GetThreadLocale
+ 0001:00006AEC       Windows.GetTickCount
+ 0001:00006AF4       Windows.GetUserDefaultLCID
+ 0001:00006AFC       Windows.GetVersion
+ 0001:00006B04       Windows.GetVersionEx
+ 0001:00006B0C       Windows.GlobalAddAtom
+ 0001:00006B14       Windows.GlobalAlloc
+ 0001:00006B1C       Windows.GlobalDeleteAtom
+ 0001:00006B24       Windows.GlobalFindAtom
+ 0001:00006B2C       Windows.GlobalFree
+ 0001:00006B34       Windows.GlobalLock
+ 0001:00006B3C       Windows.GlobalSize
+ 0001:00006B44       Windows.GlobalUnlock
+ 0001:00006B4C       Windows.InitializeCriticalSection
+ 0001:00006B54       Windows.LeaveCriticalSection
+ 0001:00006B5C       Windows.LoadLibrary
+ 0001:00006B64       Windows.LoadResource
+ 0001:00006B6C       Windows.LockResource
+ 0001:00006B74       Windows.MulDiv
+ 0001:00006B7C       Windows.MultiByteToWideChar
+ 0001:00006B84       Windows.ReadFile
+ 0001:00006B8C       Windows.ResetEvent
+ 0001:00006B94       Windows.ResumeThread
+ 0001:00006B9C       Windows.SetEndOfFile
+ 0001:00006BA4       Windows.SetErrorMode
+ 0001:00006BAC       Windows.SetEvent
+ 0001:00006BB4       Windows.SetFilePointer
+ 0001:00006BBC       Windows.SetThreadLocale
+ 0001:00006BC4       Windows.SizeofResource
+ 0001:00006BCC       Windows.Sleep
+ 0001:00006BD4       Windows.SuspendThread
+ 0001:00006BDC       Windows.TerminateThread
+ 0001:00006BE4       Windows.VirtualAlloc
+ 0001:00006BEC       Windows.VirtualQuery
+ 0001:00006BF4       Windows.WaitForSingleObject
+ 0001:00006BFC       Windows.WriteFile
+ 0001:00006C04       Windows.lstrcmp
+ 0001:00006C0C       Windows.lstrcpy
+ 0001:00006C14       Windows.GetFileVersionInfo
+ 0001:00006C1C       Windows.GetFileVersionInfoSize
+ 0001:00006C24       Windows.VerQueryValue
+ 0001:00006C2C       Windows.Arc
+ 0001:00006C34       Windows.BitBlt
+ 0001:00006C3C       Windows.CloseEnhMetaFile
+ 0001:00006C44       Windows.CombineRgn
+ 0001:00006C4C       Windows.CopyEnhMetaFile
+ 0001:00006C54       Windows.CreateBitmap
+ 0001:00006C5C       Windows.CreateBrushIndirect
+ 0001:00006C64       Windows.CreateCompatibleBitmap
+ 0001:00006C6C       Windows.CreateCompatibleDC
+ 0001:00006C74       Windows.CreateDC
+ 0001:00006C7C       Windows.CreateDIBSection
+ 0001:00006C84       Windows.CreateDIBitmap
+ 0001:00006C8C       Windows.CreateEnhMetaFile
+ 0001:00006C94       Windows.CreateFont
+ 0001:00006C9C       Windows.CreateFontIndirect
+ 0001:00006CA4       Windows.CreateHalftonePalette
+ 0001:00006CAC       Windows.CreateIC
+ 0001:00006CB4       Windows.CreatePalette
+ 0001:00006CBC       Windows.CreatePen
+ 0001:00006CC4       Windows.CreatePenIndirect
+ 0001:00006CCC       Windows.CreatePolygonRgn
+ 0001:00006CD4       Windows.CreateRectRgn
+ 0001:00006CDC       Windows.CreateSolidBrush
+ 0001:00006CE4       Windows.DeleteDC
+ 0001:00006CEC       Windows.DeleteEnhMetaFile
+ 0001:00006CF4       Windows.DeleteObject
+ 0001:00006CFC       Windows.Ellipse
+ 0001:00006D04       Windows.EndDoc
+ 0001:00006D0C       Windows.EndPage
+ 0001:00006D14       Windows.ExcludeClipRect
+ 0001:00006D1C       Windows.ExtCreatePen
+ 0001:00006D24       Windows.ExtSelectClipRgn
+ 0001:00006D2C       Windows.ExtTextOut
+ 0001:00006D34       Windows.GetBitmapBits
+ 0001:00006D3C       Windows.GetBkColor
+ 0001:00006D44       Windows.GetBkMode
+ 0001:00006D4C       Windows.GetBrushOrgEx
+ 0001:00006D54       Windows.GetClipBox
+ 0001:00006D5C       Windows.GetClipRgn
+ 0001:00006D64       Windows.GetCurrentPositionEx
+ 0001:00006D6C       Windows.GetDCOrgEx
+ 0001:00006D74       Windows.GetDIBColorTable
+ 0001:00006D7C       Windows.GetDIBits
+ 0001:00006D84       Windows.GetDeviceCaps
+ 0001:00006D8C       Windows.GetEnhMetaFileBits
+ 0001:00006D94       Windows.GetEnhMetaFileDescription
+ 0001:00006D9C       Windows.GetEnhMetaFileHeader
+ 0001:00006DA4       Windows.GetEnhMetaFilePaletteEntries
+ 0001:00006DAC       Windows.GetObject
+ 0001:00006DB4       Windows.GetPaletteEntries
+ 0001:00006DBC       Windows.GetPixel
+ 0001:00006DC4       Windows.GetRgnBox
+ 0001:00006DCC       Windows.GetStockObject
+ 0001:00006DD4       Windows.GetSystemPaletteEntries
+ 0001:00006DDC       Windows.GetTextAlign
+ 0001:00006DE4       Windows.GetTextExtentPoint32
+ 0001:00006DEC       Windows.GetTextExtentPoint
+ 0001:00006DF4       Windows.GetTextFace
+ 0001:00006DFC       Windows.GetTextMetrics
+ 0001:00006E04       Windows.GetWinMetaFileBits
+ 0001:00006E0C       Windows.GetWindowOrgEx
+ 0001:00006E14       Windows.GradientFill
+ 0001:00006E1C       Windows.IntersectClipRect
+ 0001:00006E24       Windows.LPtoDP
+ 0001:00006E2C       Windows.LineTo
+ 0001:00006E34       Windows.MaskBlt
+ 0001:00006E3C       Windows.MoveToEx
+ 0001:00006E44       Windows.PatBlt
+ 0001:00006E4C       Windows.Pie
+ 0001:00006E54       Windows.PlayEnhMetaFile
+ 0001:00006E5C       Windows.PolyPolyline
+ 0001:00006E64       Windows.Polygon
+ 0001:00006E6C       Windows.Polyline
+ 0001:00006E74       Windows.RealizePalette
+ 0001:00006E7C       Windows.RectVisible
+ 0001:00006E84       Windows.Rectangle
+ 0001:00006E8C       Windows.RestoreDC
+ 0001:00006E94       Windows.RoundRect
+ 0001:00006E9C       Windows.SaveDC
+ 0001:00006EA4       Windows.SelectClipRgn
+ 0001:00006EAC       Windows.SelectObject
+ 0001:00006EB4       Windows.SelectPalette
+ 0001:00006EBC       Windows.SetAbortProc
+ 0001:00006EC4       Windows.SetBkColor
+ 0001:00006ECC       Windows.SetBkMode
+ 0001:00006ED4       Windows.SetBrushOrgEx
+ 0001:00006EDC       Windows.SetDIBColorTable
+ 0001:00006EE4       Windows.SetEnhMetaFileBits
+ 0001:00006EEC       Windows.SetMapMode
+ 0001:00006EF4       Windows.SetPixel
+ 0001:00006EFC       Windows.SetROP2
+ 0001:00006F04       Windows.SetStretchBltMode
+ 0001:00006F0C       Windows.SetTextAlign
+ 0001:00006F14       Windows.SetTextColor
+ 0001:00006F1C       Windows.SetViewportExtEx
+ 0001:00006F24       Windows.SetViewportOrgEx
+ 0001:00006F2C       Windows.SetWinMetaFileBits
+ 0001:00006F34       Windows.SetWindowExtEx
+ 0001:00006F3C       Windows.SetWindowOrgEx
+ 0001:00006F44       Windows.StartDoc
+ 0001:00006F4C       Windows.StartPage
+ 0001:00006F54       Windows.StretchBlt
+ 0001:00006F5C       Windows.StretchDIBits
+ 0001:00006F64       Windows.TextOut
+ 0001:00006F6C       Windows.UnrealizeObject
+ 0001:00006F74       Windows.ActivateKeyboardLayout
+ 0001:00006F7C       Windows.AdjustWindowRectEx
+ 0001:00006F84       Windows.AnsiLower
+ 0001:00006F8C       Windows.AppendMenu
+ 0001:00006F94       Windows.BeginDeferWindowPos
+ 0001:00006F9C       Windows.BeginPaint
+ 0001:00006FA4       Windows.BringWindowToTop
+ 0001:00006FAC       Windows.CallNextHookEx
+ 0001:00006FB4       Windows.CallWindowProc
+ 0001:00006FBC       Windows.CharLowerBuff
+ 0001:00006FC4       Windows.CharNext
+ 0001:00006FCC       Windows.CharNextW
+ 0001:00006FD4       Windows.CharToOemA
+ 0001:00006FDC       Windows.CharUpperBuff
+ 0001:00006FE4       Windows.CheckMenuItem
+ 0001:00006FEC       Windows.ChildWindowFromPoint
+ 0001:00006FF4       Windows.ClientToScreen
+ 0001:00006FFC       Windows.CloseClipboard
+ 0001:00007004       Windows.CreateCaret
+ 0001:0000700C       Windows.CreateIcon
+ 0001:00007014       Windows.CreateMenu
+ 0001:0000701C       Windows.CreatePopupMenu
+ 0001:00007024       Windows.DefFrameProc
+ 0001:0000702C       Windows.DefMDIChildProc
+ 0001:00007034       Windows.DefWindowProc
+ 0001:0000703C       Windows.DeferWindowPos
+ 0001:00007044       Windows.DeleteMenu
+ 0001:0000704C       Windows.DestroyCaret
+ 0001:00007054       Windows.DestroyCursor
+ 0001:0000705C       Windows.DestroyIcon
+ 0001:00007064       Windows.DestroyMenu
+ 0001:0000706C       Windows.DestroyWindow
+ 0001:00007074       Windows.DispatchMessage
+ 0001:0000707C       Windows.DispatchMessageW
+ 0001:00007084       Windows.DrawEdge
+ 0001:0000708C       Windows.DrawFocusRect
+ 0001:00007094       Windows.DrawFrameControl
+ 0001:0000709C       Windows.DrawIcon
+ 0001:000070A4       Windows.DrawIconEx
+ 0001:000070AC       Windows.DrawMenuBar
+ 0001:000070B4       Windows.DrawText
+ 0001:000070BC       Windows.EmptyClipboard
+ 0001:000070C4       Windows.EnableMenuItem
+ 0001:000070CC       Windows.EnableScrollBar
+ 0001:000070D4       Windows.EnableWindow
+ 0001:000070DC       Windows.EndDeferWindowPos
+ 0001:000070E4       Windows.EndPaint
+ 0001:000070EC       Windows.EnumChildWindows
+ 0001:000070F4       Windows.EnumClipboardFormats
+ 0001:000070FC       Windows.EnumThreadWindows
+ 0001:00007104       Windows.EnumWindows
+ 0001:0000710C       Windows.EqualRect
+ 0001:00007114       Windows.FillRect
+ 0001:0000711C       Windows.FindWindow
+ 0001:00007124       Windows.FrameRect
+ 0001:0000712C       Windows.GetActiveWindow
+ 0001:00007134       Windows.GetAncestor
+ 0001:0000713C       Windows.GetCapture
+ 0001:00007144       Windows.GetCaretPos
+ 0001:0000714C       Windows.GetClassInfo
+ 0001:00007154       Windows.GetClassLong
+ 0001:0000715C       Windows.GetClassName
+ 0001:00007164       Windows.GetClientRect
+ 0001:0000716C       Windows.GetClipboardData
+ 0001:00007174       Windows.GetCursor
+ 0001:0000717C       Windows.GetCursorPos
+ 0001:00007184       Windows.GetDC
+ 0001:0000718C       Windows.GetDCEx
+ 0001:00007194       Windows.GetDesktopWindow
+ 0001:0000719C       Windows.GetDlgItem
+ 0001:000071A4       Windows.GetDoubleClickTime
+ 0001:000071AC       Windows.GetFocus
+ 0001:000071B4       Windows.GetForegroundWindow
+ 0001:000071BC       Windows.GetIconInfo
+ 0001:000071C4       Windows.GetKeyNameText
+ 0001:000071CC       Windows.GetKeyState
+ 0001:000071D4       Windows.GetKeyboardLayout
+ 0001:000071DC       Windows.GetKeyboardLayoutList
+ 0001:000071E4       Windows.GetKeyboardLayoutName
+ 0001:000071EC       Windows.GetKeyboardState
+ 0001:000071F4       Windows.GetLastActivePopup
+ 0001:000071FC       Windows.GetMenu
+ 0001:00007204       Windows.GetMenuItemCount
+ 0001:0000720C       Windows.GetMenuItemID
+ 0001:00007214       Windows.GetMenuItemInfo
+ 0001:0000721C       Windows.GetMenuState
+ 0001:00007224       Windows.GetMenuString
+ 0001:0000722C       Windows.GetMessagePos
+ 0001:00007234       Windows.GetMessageTime
+ 0001:0000723C       Windows.GetNextWindow
+ 0001:00007244       Windows.GetParent
+ 0001:0000724C       Windows.GetProp
+ 0001:00007254       Windows.GetScrollInfo
+ 0001:0000725C       Windows.GetScrollPos
+ 0001:00007264       Windows.GetScrollRange
+ 0001:0000726C       Windows.GetSubMenu
+ 0001:00007274       Windows.GetSysColor
+ 0001:0000727C       Windows.GetSysColorBrush
+ 0001:00007284       Windows.GetSystemMenu
+ 0001:0000728C       Windows.GetSystemMetrics
+ 0001:00007294       Windows.GetTabbedTextExtent
+ 0001:0000729C       Windows.GetTopWindow
+ 0001:000072A4       Windows.GetUpdateRect
+ 0001:000072AC       Windows.GetWindow
+ 0001:000072B4       Windows.GetWindowDC
+ 0001:000072BC       Windows.GetWindowLong
+ 0001:000072C4       Windows.GetWindowLongW
+ 0001:000072CC       Windows.GetWindowPlacement
+ 0001:000072D4       Windows.GetWindowRect
+ 0001:000072DC       Windows.GetWindowText
+ 0001:000072E4       Windows.GetWindowThreadProcessId
+ 0001:000072EC       Windows.GetWindowThreadProcessId
+ 0001:000072F4       Windows.HideCaret
+ 0001:000072FC       Windows.InflateRect
+ 0001:00007304       Windows.InsertMenu
+ 0001:0000730C       Windows.InsertMenuItem
+ 0001:00007314       Windows.IntersectRect
+ 0001:0000731C       Windows.InvalidateRect
+ 0001:00007324       Windows.IsCharAlpha
+ 0001:0000732C       Windows.IsCharAlphaNumeric
+ 0001:00007334       Windows.IsChild
+ 0001:0000733C       Windows.IsClipboardFormatAvailable
+ 0001:00007344       Windows.IsDialogMessageA
+ 0001:0000734C       Windows.IsDialogMessageW
+ 0001:00007354       Windows.IsIconic
+ 0001:0000735C       Windows.IsRectEmpty
+ 0001:00007364       Windows.IsWindow
+ 0001:0000736C       Windows.IsWindowEnabled
+ 0001:00007374       Windows.IsWindowUnicode
+ 0001:0000737C       Windows.IsWindowVisible
+ 0001:00007384       Windows.IsZoomed
+ 0001:0000738C       Windows.KillTimer
+ 0001:00007394       Windows.LoadBitmap
+ 0001:0000739C       Windows.LoadCursor
+ 0001:000073A4       Windows.LoadIcon
+ 0001:000073AC       Windows.LoadKeyboardLayout
+ 0001:000073B4       Windows.LoadString
+ 0001:000073BC       Windows.MapVirtualKey
+ 0001:000073C4       Windows.MapWindowPoints
+ 0001:000073CC       Windows.MessageBeep
+ 0001:000073D4       Windows.MessageBox
+ 0001:000073DC       Windows.MoveWindow
+ 0001:000073E4       Windows.MsgWaitForMultipleObjects
+ 0001:000073EC       Windows.OemToAnsi
+ 0001:000073F4       Windows.OffsetRect
+ 0001:000073FC       Windows.OpenClipboard
+ 0001:00007404       Windows.PeekMessage
+ 0001:0000740C       Windows.PeekMessageW
+ 0001:00007414       Windows.PostMessage
+ 0001:0000741C       Windows.PostQuitMessage
+ 0001:00007424       Windows.PtInRect
+ 0001:0000742C       Windows.RedrawWindow
+ 0001:00007434       Windows.RegisterClass
+ 0001:0000743C       Windows.RegisterClipboardFormat
+ 0001:00007444       Windows.RegisterWindowMessage
+ 0001:0000744C       Windows.ReleaseCapture
+ 0001:00007454       Windows.ReleaseDC
+ 0001:0000745C       Windows.RemoveMenu
+ 0001:00007464       Windows.RemoveProp
+ 0001:0000746C       Windows.ScreenToClient
+ 0001:00007474       Windows.ScrollWindow
+ 0001:0000747C       Windows.ScrollWindowEx
+ 0001:00007484       Windows.SendDlgItemMessage
+ 0001:0000748C       Windows.SendMessage
+ 0001:00007494       Windows.SendMessageA
+ 0001:0000749C       Windows.SendMessageW
+ 0001:000074A4       Windows.SendMessageTimeout
+ 0001:000074AC       Windows.SetActiveWindow
+ 0001:000074B4       Windows.SetCapture
+ 0001:000074BC       Windows.SetCaretPos
+ 0001:000074C4       Windows.SetClassLong
+ 0001:000074CC       Windows.SetClipboardData
+ 0001:000074D4       Windows.SetCursor
+ 0001:000074DC       Windows.SetCursorPos
+ 0001:000074E4       Windows.SetFocus
+ 0001:000074EC       Windows.SetForegroundWindow
+ 0001:000074F4       Windows.SetKeyboardState
+ 0001:000074FC       Windows.SetMenu
+ 0001:00007504       Windows.SetMenuItemInfo
+ 0001:0000750C       Windows.SetParent
+ 0001:00007514       Windows.SetProp
+ 0001:0000751C       Windows.SetRect
+ 0001:00007524       Windows.SetScrollInfo
+ 0001:0000752C       Windows.SetScrollPos
+ 0001:00007534       Windows.SetScrollRange
+ 0001:0000753C       Windows.SetTimer
+ 0001:00007544       Windows.SetWindowLong
+ 0001:0000754C       Windows.SetWindowLongW
+ 0001:00007554       Windows.SetWindowPlacement
+ 0001:0000755C       Windows.SetWindowPos
+ 0001:00007564       Windows.SetWindowText
+ 0001:0000756C       Windows.SetWindowsHookEx
+ 0001:00007574       Windows.ShowOwnedPopups
+ 0001:0000757C       Windows.ShowScrollBar
+ 0001:00007584       Windows.ShowWindow
+ 0001:0000758C       Windows.SystemParametersInfo
+ 0001:00007594       Windows.TabbedTextOut
+ 0001:0000759C       Windows.TrackPopupMenu
+ 0001:000075A4       Windows.TranslateMDISysAccel
+ 0001:000075AC       Windows.TranslateMessage
+ 0001:000075B4       Windows.UnhookWindowsHookEx
+ 0001:000075BC       Windows.UnionRect
+ 0001:000075C4       Windows.UnregisterClass
+ 0001:000075CC       Windows.UpdateWindow
+ 0001:000075D4       Windows.ValidateRect
+ 0001:000075DC       Windows.WaitForInputIdle
+ 0001:000075E4       Windows.WaitMessage
+ 0001:000075EC       Windows.WindowFromPoint
+ 0001:000075F4       Windows.keybd_event
+ 0001:000075FC       Windows.CopyMemory
+ 0001:00007604       Windows.SmallPointToPoint
+ 0001:00007618       Windows.PointToSmallPoint
+ 0001:00007630       Windows._CreateWindowEx
+ 0001:00007638       Windows.CreateWindowEx
+ 0001:00007690       Windows.CreateWindow
+ 0001:000076E8       Windows.HwndMSWheel
+ 0001:000077E0       Windows.Finalization
+ 0001:00007AD0       ActiveX.IsEqualIID
+ 0001:00007AD8       ActiveX.CoInitialize
+ 0001:00007AE0       ActiveX.CoUninitialize
+ 0001:00007AE8       ActiveX.CoGetClassObject
+ 0001:00007AF0       ActiveX.CoCreateInstance
+ 0001:00007AF8       ActiveX.StringFromCLSID
+ 0001:00007B00       ActiveX.CLSIDFromString
+ 0001:00007B08       ActiveX.ProgIDFromCLSID
+ 0001:00007B10       ActiveX.CLSIDFromProgID
+ 0001:00007B18       ActiveX.CoTaskMemAlloc
+ 0001:00007B20       ActiveX.CoTaskMemFree
+ 0001:00007B28       ActiveX.OleSetMenuDescriptor
+ 0001:00007B30       ActiveX.OleDraw
+ 0001:00007B38       ActiveX.IsAccelerator
+ 0001:00007B40       ActiveX.CreateStreamOnHGlobal
+ 0001:00007B48       ActiveX.SysFreeString
+ 0001:00007B50       ActiveX.VariantInit
+ 0001:00007B58       ActiveX.LoadTypeLib
+ 0001:00007B60       ActiveX.LoadRegTypeLib
+ 0001:00007B68       ActiveX.RegisterTypeLib
+ 0001:00007B70       ActiveX.DispGetIDsOfNames
+ 0001:00007B78       ActiveX.GetActiveObject
+ 0001:00007B80       ActiveX.SetErrorInfo
+ 0001:00007B88       ActiveX.GetErrorInfo
+ 0001:00007B90       ActiveX.CreateErrorInfo
+ 0001:00007F00       SysUtils..Exception
+ 0001:00007F8C       SysUtils..EAbort
+ 0001:00007FE0       SysUtils..EHeapException
+ 0001:0000803C       SysUtils..EOutOfMemory
+ 0001:00008098       SysUtils..EInOutError
+ 0001:000080F0       SysUtils..EExternal
+ 0001:00008148       SysUtils..EExternalException
+ 0001:000081A8       SysUtils..EIntError
+ 0001:00008200       SysUtils..EDivByZero
+ 0001:00008258       SysUtils..ERangeError
+ 0001:000082B0       SysUtils..EIntOverflow
+ 0001:0000830C       SysUtils..EMathError
+ 0001:00008364       SysUtils..EInvalidOp
+ 0001:000083BC       SysUtils..EZeroDivide
+ 0001:00008414       SysUtils..EOverflow
+ 0001:0000846C       SysUtils..EUnderflow
+ 0001:000084C4       SysUtils..EInvalidPointer
+ 0001:00008520       SysUtils..EInvalidCast
+ 0001:0000857C       SysUtils..EConvertError
+ 0001:000085D8       SysUtils..EAccessViolation
+ 0001:00008638       SysUtils..EPrivilege
+ 0001:00008690       SysUtils..EStackOverflow
+ 0001:000086EC       SysUtils..EControlC
+ 0001:00008744       SysUtils..EVariantError
+ 0001:000087A0       SysUtils..EAssertionFailed
+ 0001:00008800       SysUtils..EAbstractError
+ 0001:0000885C       SysUtils..EIntfCastError
+ 0001:000088B8       SysUtils..EOSError
+ 0001:00008910       SysUtils..ESafecallException
+ 0001:000089C4       SysUtils..TThreadLocalCounter
+ 0001:00008AA0       SysUtils..TMultiReadExclusiveWriteSynchronizer
+ 0001:00008B14       SysUtils.DivMod
+ 0001:00008B30       SysUtils.ConvertError
+ 0001:00008B48       SysUtils.ConvertErrorFmt
+ 0001:00008B6C       SysUtils.IsEqualGUID
+ 0001:00008B74       SysUtils.DoExitProc
+ 0001:00008BA0       SysUtils.AddExitProc
+ 0001:00008BD8       SysUtils.UpperCase
+ 0001:00008C74       SysUtils.LowerCase
+ 0001:00008D10       SysUtils.CompareStr
+ 0001:00008D40       SysUtils.CompareMem
+ 0001:00008DD4       SysUtils.CompareText
+ 0001:00008E70       SysUtils.SameText
+ 0001:00008E94       SysUtils.AnsiUpperCase
+ 0001:00008ECC       SysUtils.AnsiLowerCase
+ 0001:00008F04       SysUtils.AnsiCompareText
+ 0001:00008F48       SysUtils.AnsiStrLIComp
+ 0001:00008F68       SysUtils.Trim
+ 0001:00008FBC       SysUtils.TrimLeft
+ 0001:00008FF4       SysUtils.TrimRight
+ 0001:0000902C       SysUtils.AnsiQuotedStr
+ 0001:0000915C       SysUtils.AnsiExtractQuotedStr
+ 0001:0000925C       SysUtils.AdjustLineBreaks
+ 0001:000093D4       SysUtils.IsValidIdent
+ 0001:000094A0       SysUtils.CvtInt
+ 0001:000094EC       SysUtils.IntToStr
+ 0001:0000950C       SysUtils.CvtInt64
+ 0001:000095D8       SysUtils.IntToStr
+ 0001:00009600       SysUtils.IntToHex
+ 0001:00009628       SysUtils.IntToHex
+ 0001:00009658       SysUtils.StrToInt
+ 0001:00009694       SysUtils.StrToIntDef
+ 0001:000096AC       SysUtils.TryStrToInt
+ 0001:000096CC       SysUtils.StrToInt64
+ 0001:00009710       SysUtils.StrToInt64Def
+ 0001:00009744       SysUtils.TryStrToInt64
+ 0001:00009764       SysUtils.VerifyBoolStrArray
+ 0001:000097F4       SysUtils.CompareWith
+ 0001:00009878       SysUtils.TryStrToBool
+ 0001:00009914       SysUtils.BoolToStr
+ 0001:00009960       SysUtils.FileOpen
+ 0001:000099B8       SysUtils.FileRead
+ 0001:000099E4       SysUtils.FileWrite
+ 0001:00009A10       SysUtils.FileSeek
+ 0001:00009A60       SysUtils.FileExists
+ 0001:00009A84       SysUtils.DirectoryExists
+ 0001:00009AA8       SysUtils.FindMatchingFile
+ 0001:00009B2C       SysUtils.FindFirst
+ 0001:00009B7C       SysUtils.FindNext
+ 0001:00009BA0       SysUtils.FindClose
+ 0001:00009BBC       SysUtils.AnsiLastChar
+ 0001:00009BF0       SysUtils.LastDelimiter
+ 0001:00009C44       SysUtils.ExtractFilePath
+ 0001:00009C78       SysUtils.ExtractFileDrive
+ 0001:00009D30       SysUtils.ExtractFileName
+ 0001:00009D68       SysUtils.ExtractFileExt
+ 0001:00009DB0       SysUtils.ExpandFileName
+ 0001:00009DEC       SysUtils.BackfillGetDiskFreeSpaceEx
+ 0001:00009E60       SysUtils.StrLen
+ 0001:00009E78       SysUtils.StrEnd
+ 0001:00009E8C       SysUtils.StrMove
+ 0001:00009E9C       SysUtils.StrCopy
+ 0001:00009ED4       SysUtils.StrECopy
+ 0001:00009F00       SysUtils.StrLCopy
+ 0001:00009F34       SysUtils.StrPCopy
+ 0001:00009F5C       SysUtils.StrPLCopy
+ 0001:00009F7C       SysUtils.StrCat
+ 0001:00009F98       SysUtils.StrComp
+ 0001:0000A024       SysUtils.StrLComp
+ 0001:0000A04C       SysUtils.StrLIComp
+ 0001:0000A090       SysUtils.StrScan
+ 0001:0000A0A4       SysUtils.StrPos
+ 0001:0000A0F8       SysUtils.StrPas
+ 0001:0000A10C       SysUtils.StrAlloc
+ 0001:0000A120       SysUtils.StrBufSize
+ 0001:0000A12C       SysUtils.StrNew
+ 0001:0000A158       SysUtils.StrDispose
+ 0001:0000A168       SysUtils.FormatError
+ 0001:0000A1C0       SysUtils.FormatVarToStr
+ 0001:0000A1E4       SysUtils.FormatClearStr
+ 0001:0000A1F0       SysUtils.FormatBuf
+ 0001:0000A568       SysUtils.StrFmt
+ 0001:0000A5A8       SysUtils.StrLFmt
+ 0001:0000A5E8       SysUtils.Format
+ 0001:0000A5FC       SysUtils.FmtStr
+ 0001:0000A6D8       SysUtils.PutExponent
+ 0001:0000A71C       SysUtils.FloatToText
+ 0001:0000A9F0       SysUtils.FloatToTextFmt
+ 0001:0000ACE4       SysUtils.FloatToDecimal
+ 0001:0000AF10       SysUtils.TextToFloat
+ 0001:0000B024       SysUtils.FloatToStr
+ 0001:0000B054       SysUtils.CurrToStr
+ 0001:0000B084       SysUtils.FloatToStrF
+ 0001:0000B0BC       SysUtils.FormatFloat
+ 0001:0000B118       SysUtils.StrToFloat
+ 0001:0000B154       SysUtils.TryStrToFloat
+ 0001:0000B170       SysUtils.TryStrToFloat
+ 0001:0000B19C       SysUtils.TryStrToFloat
+ 0001:0000B1C8       SysUtils.TryStrToCurr
+ 0001:0000B1E4       SysUtils.DateTimeToTimeStamp
+ 0001:0000B228       SysUtils.TryEncodeTime
+ 0001:0000B298       SysUtils.EncodeTime
+ 0001:0000B2D8       SysUtils.DecodeTime
+ 0001:0000B334       SysUtils.IsLeapYear
+ 0001:0000B370       SysUtils.TryEncodeDate
+ 0001:0000B43C       SysUtils.EncodeDate
+ 0001:0000B46C       SysUtils.DecodeDateFully
+ 0001:0000B5B8       SysUtils.DecodeDate
+ 0001:0000B5D8       SysUtils.DateTimeToSystemTime
+ 0001:0000B618       SysUtils.SystemTimeToDateTime
+ 0001:0000B688       SysUtils.DayOfWeek
+ 0001:0000B6B0       SysUtils.Date
+ 0001:0000B6DC       SysUtils.Now
+ 0001:0000B72C       SysUtils.IncMonth
+ 0001:0000B788       SysUtils.IncAMonth
+ 0001:0000B818       SysUtils.ReplaceTime
+ 0001:0000B87C       SysUtils.CurrentYear
+ 0001:0000B890       SysUtils.AppendChars
+ 0001:0000B8D4       SysUtils.AppendString
+ 0001:0000B8F0       SysUtils.AppendNumber
+ 0001:0000B93C       SysUtils.GetCount
+ 0001:0000B968       SysUtils.GetDate
+ 0001:0000B9A0       SysUtils.GetTime
+ 0001:0000B9E0       SysUtils.ConvertEraString
+ 0001:0000BB5C       SysUtils.ConvertYearString
+ 0001:0000BC74       SysUtils.AppendFormat
+ 0001:0000C42C       SysUtils.DateTimeToString
+ 0001:0000C488       SysUtils.ScanBlanks
+ 0001:0000C4AC       SysUtils.ScanNumber
+ 0001:0000C540       SysUtils.ScanString
+ 0001:0000C618       SysUtils.ScanChar
+ 0001:0000C654       SysUtils.GetDateOrder
+ 0001:0000C6A0       SysUtils.ScanToNumber
+ 0001:0000C6E8       SysUtils.GetEraYearOffset
+ 0001:0000C73C       SysUtils.EraToYear
+ 0001:0000C798       SysUtils.ScanDate
+ 0001:0000CAE4       SysUtils.ScanTime
+ 0001:0000CCDC       SysUtils.TryStrToDate
+ 0001:0000CD14       SysUtils.StrToTime
+ 0001:0000CD48       SysUtils.TryStrToTime
+ 0001:0000CD80       SysUtils.StrToDateTime
+ 0001:0000CDB4       SysUtils.TryStrToDateTime
+ 0001:0000CE50       SysUtils.SysErrorMessage
+ 0001:0000CE9C       SysUtils.GetLocaleStr
+ 0001:0000CEE8       SysUtils.GetLocaleChar
+ 0001:0000CF14       SysUtils.LocalGetLocaleStr
+ 0001:0000CF50       SysUtils.GetMonthDayNames
+ 0001:0000D074       SysUtils.EnumEraNames
+ 0001:0000D0B0       SysUtils.EnumEraYearOffsets
+ 0001:0000D128       SysUtils.GetEraNamesAndYearOffsets
+ 0001:0000D1D8       SysUtils.TranslateDateFormat
+ 0001:0000D408       SysUtils.ConvertAddr
+ 0001:0000D414       SysUtils.ExceptionErrorMessage
+ 0001:0000D59C       SysUtils.ShowException
+ 0001:0000D664       SysUtils.ReturnAddr
+ 0001:0000D668       SysUtils.Abort
+ 0001:0000D688       SysUtils.OutOfMemoryError
+ 0001:0000D694       SysUtils.Exception.Create
+ 0001:0000D6D0       SysUtils.Exception.CreateFmt
+ 0001:0000D750       SysUtils.Exception.CreateRes
+ 0001:0000D78C       SysUtils.Exception.CreateResFmt
+ 0001:0000D820       SysUtils.Exception.CreateHelp
+ 0001:0000D868       SysUtils.EHeapException.FreeInstance
+ 0001:0000D894       SysUtils.CreateInOutError
+ 0001:0000D914       SysUtils.ErrorHandler
+ 0001:0000D964       SysUtils.CreateAssertException
+ 0001:0000DA10       SysUtils.RaiseAssertException
+ 0001:0000DA20       SysUtils.AssertErrorHandler
+ 0001:0000DA3C       SysUtils.AbstractErrorHandler
+ 0001:0000DA54       SysUtils.MapException
+ 0001:0000DAD4       SysUtils.GetExceptionClass
+ 0001:0000DAEC       SysUtils.CreateAVObject
+ 0001:0000DCB8       SysUtils.GetExceptionObject
+ 0001:0000DD80       SysUtils.ExceptHandler
+ 0001:0000DD90       SysUtils.InitExceptions
+ 0001:0000DE14       SysUtils.DoneExceptions
+ 0001:0000DE94       SysUtils.InitPlatformId
+ 0001:0000DF04       SysUtils.CheckWin32Version
+ 0001:0000DF24       SysUtils.GetFileVersion
+ 0001:0000E010       SysUtils.Beep
+ 0001:0000E018       SysUtils.ByteTypeTest
+ 0001:0000E08C       SysUtils.ByteType
+ 0001:0000E0B0       SysUtils.StrByteType
+ 0001:0000E0C8       SysUtils.ByteToCharLen
+ 0001:0000E0EC       SysUtils.ByteToCharIndex
+ 0001:0000E154       SysUtils.CountChars
+ 0001:0000E1E4       SysUtils.CharToByteIndex
+ 0001:0000E268       SysUtils.CharToByteLen
+ 0001:0000E2D8       SysUtils.StrCharLength
+ 0001:0000E2F8       SysUtils.StrNextChar
+ 0001:0000E300       SysUtils.CharLength
+ 0001:0000E338       SysUtils.NextCharIndex
+ 0001:0000E370       SysUtils.IsPathDelimiter
+ 0001:0000E3B8       SysUtils.IsDelimiter
+ 0001:0000E414       SysUtils.AnsiPos
+ 0001:0000E44C       SysUtils.AnsiLowerCaseFileName
+ 0001:0000E4E0       SysUtils.AnsiStrPos
+ 0001:0000E580       SysUtils.AnsiStrRScan
+ 0001:0000E5B4       SysUtils.AnsiStrScan
+ 0001:0000E5F4       SysUtils.InitLeadBytes
+ 0001:0000E650       SysUtils.InitSysLocale
+ 0001:0000E714       SysUtils.GetFormatSettings
+ 0001:0000EA8C       SysUtils.StringReplace
+ 0001:0000EBE8       SysUtils.WrapText
+ 0001:0000EE18       SysUtils.FindCmdLineSwitch
+ 0001:0000F03C       SysUtils.ModuleUnloaded
+ 0001:0000F214       SysUtils.Sleep
+ 0001:0000F21C       SysUtils.RaiseLastOSError
+ 0001:0000F228       SysUtils.RaiseLastOSError
+ 0001:0000F2C0       SysUtils.Win32Check
+ 0001:0000F2D0       SysUtils.CallTerminateProcs
+ 0001:0000F2F0       SysUtils.FreeTerminateProcs
+ 0001:0000F314       SysUtils.InitDriveSpacePtr
+ 0001:0000F370       SysUtils.InterlockedIncrement
+ 0001:0000F37C       SysUtils.InterlockedDecrement
+ 0001:0000F388       SysUtils.InterlockedExchange
+ 0001:0000F390       SysUtils.InterlockedExchangeAdd
+ 0001:0000F398       SysUtils.TThreadLocalCounter.Destroy
+ 0001:0000F3F0       SysUtils.TThreadLocalCounter.HashIndex
+ 0001:0000F40C       SysUtils.TThreadLocalCounter.Open
+ 0001:0000F484       SysUtils.TThreadLocalCounter.Delete
+ 0001:0000F494       SysUtils.TThreadLocalCounter.Recycle
+ 0001:0000F4D8       SysUtils.TMultiReadExclusiveWriteSynchronizer.Create
+ 0001:0000F54C       SysUtils.TMultiReadExclusiveWriteSynchronizer.Destroy
+ 0001:0000F594       SysUtils.TMultiReadExclusiveWriteSynchronizer.BlockReaders
+ 0001:0000F5A0       SysUtils.TMultiReadExclusiveWriteSynchronizer.UnblockReaders
+ 0001:0000F5AC       SysUtils.TMultiReadExclusiveWriteSynchronizer.UnblockOneWriter
+ 0001:0000F5B8       SysUtils.TMultiReadExclusiveWriteSynchronizer.WaitForReadSignal
+ 0001:0000F5C8       SysUtils.TMultiReadExclusiveWriteSynchronizer.WaitForWriteSignal
+ 0001:0000F5D8       SysUtils.TMultiReadExclusiveWriteSynchronizer.BeginWrite
+ 0001:0000F684       SysUtils.TMultiReadExclusiveWriteSynchronizer.EndWrite
+ 0001:0000F6D4       SysUtils.TMultiReadExclusiveWriteSynchronizer.BeginRead
+ 0001:0000F744       SysUtils.TMultiReadExclusiveWriteSynchronizer.EndRead
+ 0001:0000F7AC       SysUtils.FreeAndNil
+ 0001:0000F7BC       SysUtils.Supports
+ 0001:0000F7E0       SysUtils.Supports
+ 0001:0000F878       SysUtils.Supports
+ 0001:0000F8CC       SysUtils.SafeLoadLibrary
+ 0001:0000FC20       SysUtils.Finalization
+ 0001:0000FDA8       VarUtils.VariantInit
+ 0001:0000FDB0       VarUtils.VariantClear
+ 0001:0000FDB8       VarUtils.VariantCopy
+ 0001:0000FDC0       VarUtils.VariantCopyInd
+ 0001:0000FDC8       VarUtils.VariantChangeType
+ 0001:0000FDD0       VarUtils.BackupVariantChangeTypeEx
+ 0001:0000FE00       VarUtils.UniUnimplemented
+ 0001:0000FE0C       VarUtils.BiUnimplemented
+ 0001:0000FE18       VarUtils.CmpUnimplemented
+ 0001:0000FE24       VarUtils.BackupVarI4FromStr
+ 0001:0000FE90       VarUtils.BackupVarR4FromStr
+ 0001:0000FEFC       VarUtils.BackupVarR8FromStr
+ 0001:0000FF68       VarUtils.BackupVarDateFromStr
+ 0001:0000FFD4       VarUtils.BackupVarCyFromStr
+ 0001:00010040       VarUtils.BackupVarBoolFromStr
+ 0001:000100C0       VarUtils.BackupVarBStrFromCy
+ 0001:00010130       VarUtils.BackupVarBStrFromDate
+ 0001:000101A4       VarUtils.BackupVarBStrFromBool
+ 0001:00010218       VarUtils.SafeArrayCreate
+ 0001:00010220       VarUtils.SafeArrayGetLBound
+ 0001:00010228       VarUtils.SafeArrayGetUBound
+ 0001:00010230       VarUtils.SafeArrayAccessData
+ 0001:00010238       VarUtils.SafeArrayUnaccessData
+ 0001:00010240       VarUtils.SafeArrayGetElement
+ 0001:00010248       VarUtils.SafeArrayPutElement
+ 0001:00010250       VarUtils.SafeArrayPtrOfIndex
+ 0001:00010258       VarUtils.FindProc
+ 0001:00010284       VarUtils.InitializeVarUtils
+ 0001:00010590       VarUtils.Finalization
+ 0001:00010610       Variants..TCustomVariantType
+ 0001:0001079C       Variants..TInvokeableVariantType
+ 0001:00010850       Variants..EVariantInvalidOpError
+ 0001:000108B4       Variants..EVariantTypeCastError
+ 0001:00010918       Variants..EVariantOverflowError
+ 0001:0001097C       Variants..EVariantInvalidArgError
+ 0001:000109E0       Variants..EVariantBadVarTypeError
+ 0001:00010A44       Variants..EVariantBadIndexError
+ 0001:00010AA8       Variants..EVariantArrayLockedError
+ 0001:00010B10       Variants..EVariantArrayCreateError
+ 0001:00010B78       Variants..EVariantNotImplError
+ 0001:00010BDC       Variants..EVariantOutOfMemoryError
+ 0001:00010C44       Variants..EVariantUnexpectedError
+ 0001:00010CA8       Variants..EVariantDispatchError
+ 0001:00010D0C       Variants..EVariantInvalidNullOpError
+ 0001:00010D74       Variants.VarCastError
+ 0001:00010DC8       Variants.VarCastError
+ 0001:00010E64       Variants.VarInvalidOp
+ 0001:00010EB8       Variants.VarInvalidNullOp
+ 0001:00010F0C       Variants.VarOverflowError
+ 0001:00010FA8       Variants.VarArrayCreateError
+ 0001:00010FFC       Variants.TranslateResult
+ 0001:00011250       Variants.VarResultCheck
+ 0001:0001125C       Variants.VarResultCheck
+ 0001:00011290       Variants.HandleConversionException
+ 0001:00011314       Variants.@DispInvokeError
+ 0001:00011368       Variants.@VarNull
+ 0001:0001137C       Variants.InBounds
+ 0001:000113AC       Variants.Increment
+ 0001:00011408       Variants.VarArrayClear
+ 0001:00011584       Variants.VarClearDeep
+ 0001:00011600       Variants.@VarClear
+ 0001:00011614       Variants.@VarClr
+ 0001:0001161C       Variants.@DispInvoke
+ 0001:00011720       Variants.InBounds
+ 0001:00011750       Variants.Increment
+ 0001:000117AC       Variants.VarArrayCopyForEach
+ 0001:00011978       Variants.VarCopyCopyProc
+ 0001:00011980       Variants.VarCopyDeep
+ 0001:00011A2C       Variants.@VarCopy
+ 0001:00011A70       Variants.VarCopyNoIndViaOS
+ 0001:00011A90       Variants.VarCopyNoIndOleStr
+ 0001:00011A98       Variants.VarCopyNoIndCopyProc
+ 0001:00011AA0       Variants.VarCopyNoIndDeep
+ 0001:00011AD4       Variants.VarCopyByRef
+ 0001:00011CAC       Variants.@VarCopyNoInd
+ 0001:00011CC0       Variants.@VarStringToOleStr
+ 0001:00011CE0       Variants.VarStringToOleStr
+ 0001:00011CE8       Variants.VarCastAsAny
+ 0001:00011D54       Variants.VarCastAsOleStr
+ 0001:00011DA0       Variants.VarCastAsString
+ 0001:00011DEC       Variants.VarCastAsDispatch
+ 0001:00011E38       Variants.VarCastAsInterface
+ 0001:00011E84       Variants.VarCastViaOS
+ 0001:00011F04       Variants.VarCastRare
+ 0001:00011F70       Variants.@VarCast
+ 0001:0001219C       Variants.VarToIntAsString
+ 0001:00012250       Variants.VarToIntViaOS
+ 0001:0001228C       Variants.VarToIntAny
+ 0001:000122F0       Variants.VarToIntCustom
+ 0001:00012334       Variants.@VarToInteger
+ 0001:00012784       Variants.@VarToShortInt
+ 0001:00012838       Variants.@VarToByte
+ 0001:000128E0       Variants.@VarToSmallInt
+ 0001:000129D8       Variants.@VarToWord
+ 0001:00012AB4       Variants.@VarToLongWord
+ 0001:00012BA0       Variants.VarToInt64ViaOS
+ 0001:00012C4C       Variants.VarToInt64AsString
+ 0001:00012D4C       Variants.VarToInt64Any
+ 0001:00012DB8       Variants.VarToInt64Custom
+ 0001:00012E04       Variants.@VarToInt64
+ 0001:00013248       Variants.VarToBoolAsString
+ 0001:0001330C       Variants.VarToBoolViaOS
+ 0001:0001334C       Variants.VarToBoolAny
+ 0001:000133B0       Variants.VarToBoolCustom
+ 0001:000133FC       Variants.@VarToBoolean
+ 0001:00013750       Variants.@VarToBool
+ 0001:0001375C       Variants.VarToDoubleAsString
+ 0001:00013820       Variants.VarToDoubleViaOS
+ 0001:0001386C       Variants.VarToDoubleAny
+ 0001:000138D0       Variants.VarToDoubleCustom
+ 0001:0001391C       Variants.@VarToDouble
+ 0001:00013C94       Variants.@VarToReal
+ 0001:00013CB0       Variants.@VarToSingle
+ 0001:00013E40       Variants.VarToDateAsString
+ 0001:00013F2C       Variants.VarToDateAsDouble
+ 0001:00013F8C       Variants.VarToDateViaOS
+ 0001:00013FD8       Variants.VarToDateAny
+ 0001:0001403C       Variants.VarToDateCustom
+ 0001:00014088       Variants.@VarToDate
+ 0001:000143D8       Variants.VarToCurrencyAsString
+ 0001:00014494       Variants.VarToCurrencyAsDouble
+ 0001:000144F4       Variants.VarToCurrencyViaOS
+ 0001:00014540       Variants.VarToCurrencyAny
+ 0001:000145A4       Variants.VarToCurrencyCustom
+ 0001:000145F0       Variants.@VarToCurrency
+ 0001:000149B8       Variants.CurrToWStrViaOS
+ 0001:000149F0       Variants.DateToWStrViaOS
+ 0001:00014A28       Variants.BoolToWStrViaOS
+ 0001:00014AF0       Variants.VarToLStrViaOS
+ 0001:00014BBC       Variants.VarToLStrAny
+ 0001:00014C20       Variants.VarToLStrCustom
+ 0001:00014CA8       Variants.@VarToLStr
+ 0001:000151E4       Variants.VarToWStrViaOS
+ 0001:0001529C       Variants.VarToWStrAny
+ 0001:00015300       Variants.VarToWStrCustom
+ 0001:000153C8       Variants.@VarToWStr
+ 0001:0001591C       Variants.AnyToIntf
+ 0001:00015994       Variants.@VarToIntf
+ 0001:00015A60       Variants.@VarToDisp
+ 0001:00015B0C       Variants.@VarFromInt
+ 0001:00015B48       Variants.@VarFromInteger
+ 0001:00015B68       Variants.@OleVarFromInt
+ 0001:00015B88       Variants.@VarFromByte
+ 0001:00015BA8       Variants.@VarFromWord
+ 0001:00015BC8       Variants.@VarFromLongWord
+ 0001:00015BE8       Variants.@VarFromShortInt
+ 0001:00015C08       Variants.@VarFromSmallInt
+ 0001:00015C28       Variants.@VarFromInt64
+ 0001:00015C54       Variants.@VarFromSingle
+ 0001:00015C78       Variants.@VarFromDouble
+ 0001:00015CA4       Variants.@VarFromCurrency
+ 0001:00015CD0       Variants.@VarFromDate
+ 0001:00015CFC       Variants.@VarFromBool
+ 0001:00015D24       Variants.@VarFromReal
+ 0001:00015D38       Variants.@VarFromTDateTime
+ 0001:00015D4C       Variants.@VarFromCurr
+ 0001:00015D60       Variants.@VarFromLStr
+ 0001:00015D8C       Variants.@VarFromPStr
+ 0001:00015DDC       Variants.@VarFromWStr
+ 0001:00015E14       Variants.@VarFromIntf
+ 0001:00015E40       Variants.@VarFromDisp
+ 0001:00015E6C       Variants.@OleVarFromLStr
+ 0001:00015EBC       Variants.OleVarFromAny
+ 0001:00015F20       Variants.OleVarFromVarArrayProc
+ 0001:00015F28       Variants.@OleVarFromVar
+ 0001:00016094       Variants.VarStrCat
+ 0001:00016148       Variants.VarOpRare
+ 0001:00016494       Variants.CheckType
+ 0001:000164B8       Variants.AnyOp
+ 0001:00016544       Variants.RealOp
+ 0001:000165D8       Variants.DateOp
+ 0001:0001664C       Variants.IntOp
+ 0001:00016768       Variants.Int64Op
+ 0001:00016960       Variants.NullOp
+ 0001:00016A0C       Variants.EmptyOp
+ 0001:00016AA4       Variants.CurrOp
+ 0001:00016C2C       Variants.SimpleVarOp
+ 0001:00016EA8       Variants.@VarOp
+ 0001:00016F38       Variants.VarCompareAny
+ 0001:00017010       Variants.EmptyCompare
+ 0001:00017024       Variants.NullCompare
+ 0001:00017118       Variants.IntCompare
+ 0001:0001712C       Variants.Int64Compare
+ 0001:00017168       Variants.RealCompare
+ 0001:00017194       Variants.DateCompare
+ 0001:000171C0       Variants.CurrCompare
+ 0001:000171F0       Variants.StringCompare
+ 0001:0001725C       Variants.VarCompareSimple
+ 0001:000173E8       Variants.VarCompareRare
+ 0001:0001780C       Variants.VarCompare
+ 0001:00017874       Variants.@VarAddRef
+ 0001:000179F8       Variants.VarTypeAsText
+ 0001:00017B68       Variants.VarType
+ 0001:00017B6C       Variants.FindVarData
+ 0001:00017B7C       Variants.VarIsClear
+ 0001:00017BF0       Variants.VarTypeIsCustom
+ 0001:00017BFC       Variants.VarTypeIsStr
+ 0001:00017C10       Variants.VarIsEmpty
+ 0001:00017C24       Variants.VarIsNull
+ 0001:00017C38       Variants.VarToStr
+ 0001:00017C50       Variants.VarToStrDef
+ 0001:00017C7C       Variants.VarToWideStr
+ 0001:00017CD4       Variants.VarToWideStrDef
+ 0001:00017D00       Variants.VarSameValue
+ 0001:00017D78       Variants.SetVarAsError
+ 0001:00017D90       Variants.SetClearVarToEmptyParam
+ 0001:00017D9C       Variants.GetVarDataArrayInfo
+ 0001:00017DE0       Variants.VarArrayCreate
+ 0001:00017E88       Variants.VarArrayAsPSafeArray
+ 0001:00017EB0       Variants.VarArrayDimCount
+ 0001:00017ED8       Variants.VarArrayLowBound
+ 0001:00017EFC       Variants.VarArrayHighBound
+ 0001:00017F20       Variants.VarArrayLock
+ 0001:00017F40       Variants.VarArrayUnlock
+ 0001:00017F58       Variants.VarIsArray
+ 0001:00017F60       Variants.VarIsArray
+ 0001:00017F88       Variants.VarTypeIsValidArrayType
+ 0001:00017FA8       Variants.VarTypeIsValidElementType
+ 0001:00017FE4       Variants.@VarArrayGet
+ 0001:000180B0       Variants.VarArrayGet
+ 0001:000180D4       Variants.@VarArrayPut
+ 0001:0001821C       Variants.VarArrayPut
+ 0001:00018244       Variants.DynArrayIndex
+ 0001:00018288       Variants.DynArrayElTypeInfo
+ 0001:000182A0       Variants.DynArrayDim
+ 0001:000182C0       Variants.DynArraySize
+ 0001:000182C8       Variants.IsDynArrayRectangular
+ 0001:00018330       Variants.DynArrayBounds
+ 0001:00018384       Variants.DecIndices
+ 0001:000183F0       Variants.DynArrayVariantBounds
+ 0001:00018454       Variants.DynArrayVarType
+ 0001:0001849C       Variants.DynArrayToVariant
+ 0001:000187E8       Variants.DynArrayFromVariant
+ 0001:00018B1C       Variants.ClearVariantTypeList
+ 0001:00018B88       Variants.TCustomVariantType.BinaryOp
+ 0001:00018B94       Variants.TCustomVariantType.Cast
+ 0001:00018BCC       Variants.TCustomVariantType.CastTo
+ 0001:00018C14       Variants.TCustomVariantType.Compare
+ 0001:00018C20       Variants.TCustomVariantType.CompareOp
+ 0001:00018C58       Variants.TCustomVariantType.CastToOle
+ 0001:00018C94       Variants.TCustomVariantType.Create
+ 0001:00018CD8       Variants.TCustomVariantType.Create
+ 0001:00018F60       Variants.TCustomVariantType.Destroy
+ 0001:00018FEC       Variants.TCustomVariantType.IsClear
+ 0001:00018FF0       Variants.TCustomVariantType.LeftPromotion
+ 0001:00019004       Variants.TCustomVariantType.OlePromotion
+ 0001:0001900C       Variants.TCustomVariantType.RaiseCastError
+ 0001:00019014       Variants.TCustomVariantType.RaiseInvalidOp
+ 0001:0001901C       Variants.TCustomVariantType.RaiseDispError
+ 0001:00019024       Variants.TCustomVariantType.RightPromotion
+ 0001:00019038       Variants.TCustomVariantType.UnaryOp
+ 0001:00019040       Variants.TCustomVariantType.VarDataInit
+ 0001:00019048       Variants.TCustomVariantType.VarDataClear
+ 0001:00019050       Variants.TCustomVariantType.VarDataCopyNoInd
+ 0001:0001905C       Variants.TCustomVariantType.VarDataCastTo
+ 0001:00019070       Variants.TCustomVariantType.VarDataIsByRef
+ 0001:00019078       Variants.TCustomVariantType.DispInvoke
+ 0001:00019084       Variants.TCustomVariantType.VarDataFromStr
+ 0001:00019090       Variants.TCustomVariantType.VarDataFromOleStr
+ 0001:0001909C       Variants.TCustomVariantType._AddRef
+ 0001:000190A8       Variants.TCustomVariantType._Release
+ 0001:000190B4       Variants.TCustomVariantType.QueryInterface
+ 0001:000190DC       Variants.TCustomVariantType.VarDataIsStr
+ 0001:000190E8       Variants.TCustomVariantType.VarDataToStr
+ 0001:000190FC       Variants.TInvokeableVariantType.FixupIdent
+ 0001:00019158       Variants.ParseParam
+ 0001:0001940C       Variants.TInvokeableVariantType.DispInvoke
+ 0001:000196B8       Variants.TInvokeableVariantType.GetProperty
+ 0001:000196C4       Variants.TInvokeableVariantType.SetProperty
+ 0001:000196D0       Variants.TInvokeableVariantType.DoFunction
+ 0001:000196DC       Variants.TInvokeableVariantType.DoProcedure
+ 0001:000196E8       Variants.FindCustomVariantType
+ 0001:000197A4       Variants.FindCustomVariantType
+ 0001:0001988C       Variants.Unassigned
+ 0001:00019894       Variants.Null
+ 0001:0001989C       Variants.@VarAdd
+ 0001:000198A8       Variants.@VarCmpEQ
+ 0001:000198B8       Variants.@VarCmpNE
+ 0001:000198C8       Variants.@VarCmpGT
+ 0001:000198D8       Variants.Finalization
+ 0001:00019B0C       TypInfo..TPublishableVariantType
+ 0001:00019BC4       TypInfo..EPropertyError
+ 0001:00019C20       TypInfo..EPropertyConvertError
+ 0001:00019CB0       TypInfo.PropertyNotFound
+ 0001:00019CDC       TypInfo.RangeError
+ 0001:00019CF4       TypInfo.IsPublishedProp
+ 0001:00019D18       TypInfo.GetPropInfo
+ 0001:00019D38       TypInfo.GetPropInfo
+ 0001:00019D58       TypInfo.FindPropInfo
+ 0001:00019D80       TypInfo.GetOrdProp
+ 0001:00019D9C       TypInfo.SetOrdProp
+ 0001:00019DC0       TypInfo.GetObjectProp
+ 0001:00019DE4       TypInfo.SetStrProp
+ 0001:00019E08       TypInfo.GetPropValue
+ 0001:00019E5C       TypInfo.GetPropValue
+ 0001:0001A098       TypInfo.SetPropValue
+ 0001:0001A0D0       TypInfo.RangedValue
+ 0001:0001A128       TypInfo.RangedCharValue
+ 0001:0001A258       TypInfo.SetPropValue
+ 0001:0001A524       TypInfo.TPublishableVariantType.GetProperty
+ 0001:0001A594       TypInfo.TPublishableVariantType.SetProperty
+ 0001:0001A5BC       TypInfo.GetTypeData
+ 0001:0001A5C8       TypInfo.GetEnumName
+ 0001:0001A6A0       TypInfo.GetEnumNameValue
+ 0001:0001A6EC       TypInfo.GetEnumValue
+ 0001:0001A750       TypInfo.GetPropInfo
+ 0001:0001A7C0       TypInfo.GetPropInfo
+ 0001:0001A7FC       TypInfo.GetPropInfos
+ 0001:0001A850       TypInfo.SortPropList
+ 0001:0001A8F8       TypInfo.GetPropList
+ 0001:0001A99C       TypInfo.GetPropList
+ 0001:0001A9D0       TypInfo.IsStoredProp
+ 0001:0001AA00       TypInfo.GetOrdProp
+ 0001:0001AA74       TypInfo.SetOrdProp
+ 0001:0001AAD0       TypInfo.GetSetElementName
+ 0001:0001AB60       TypInfo.GetSetElementValue
+ 0001:0001AC00       TypInfo.GetEnumProp
+ 0001:0001AC24       TypInfo.SetEnumProp
+ 0001:0001AC74       TypInfo.GetSetProp
+ 0001:0001ACA0       TypInfo.SetToString
+ 0001:0001AD88       TypInfo.NextWord
+ 0001:0001ADCC       TypInfo.StringToSet
+ 0001:0001AEA4       TypInfo.SetSetProp
+ 0001:0001AEC8       TypInfo.GetObjectProp
+ 0001:0001AEFC       TypInfo.GetShortStrProp
+ 0001:0001AF40       TypInfo.SetShortStrProp
+ 0001:0001AF94       TypInfo.GetShortStrPropAsLongStr
+ 0001:0001AFBC       TypInfo.SetShortStrPropAsLongStr
+ 0001:0001AFF0       TypInfo.AssignLongStr
+ 0001:0001B004       TypInfo.GetLongStrProp
+ 0001:0001B044       TypInfo.SetLongStrProp
+ 0001:0001B084       TypInfo.GetWideStrPropAsLongStr
+ 0001:0001B0DC       TypInfo.SetWideStrPropAsLongStr
+ 0001:0001B134       TypInfo.GetStrProp
+ 0001:0001B174       TypInfo.SetStrProp
+ 0001:0001B1A4       TypInfo.GetWideStrProp
+ 0001:0001B28C       TypInfo.SetWideStrProp
+ 0001:0001B364       TypInfo.GetFloatProp
+ 0001:0001B47C       TypInfo.SetFloatProp
+ 0001:0001B674       TypInfo.AssignVariant
+ 0001:0001B688       TypInfo.GetVariantProp
+ 0001:0001B6C8       TypInfo.SetVariantProp
+ 0001:0001B708       TypInfo.GetMethodProp
+ 0001:0001B748       TypInfo.SetMethodProp
+ 0001:0001B780       TypInfo.GetInt64Prop
+ 0001:0001B7A8       TypInfo.SetInt64Prop
+ 0001:0001B7E4       TypInfo.GetInterfaceProp
+ 0001:0001B864       TypInfo.SetInterfaceProp
+ 0001:0001B8D8       TypInfo.GetAccessToProperty
+ 0001:0001B95C       TypInfo.GetDynArrayProp
+ 0001:0001B9F8       TypInfo.SetDynArrayProp
+ 0001:0001BA58       TypInfo.Finalization
+ 0001:0001BCE8       Classes..EStreamError
+ 0001:0001BD44       Classes..EFileStreamError
+ 0001:0001BDA4       Classes..EFCreateError
+ 0001:0001BE00       Classes..EFOpenError
+ 0001:0001BE58       Classes..EFilerError
+ 0001:0001BEB0       Classes..EReadError
+ 0001:0001BF08       Classes..EWriteError
+ 0001:0001BF60       Classes..EClassNotFound
+ 0001:0001BFBC       Classes..EResNotFound
+ 0001:0001C018       Classes..EListError
+ 0001:0001C070       Classes..EBitsError
+ 0001:0001C0C8       Classes..EStringListError
+ 0001:0001C128       Classes..EComponentError
+ 0001:0001C184       Classes..EOutOfResources
+ 0001:0001C1E0       Classes..EInvalidOperation
+ 0001:0001C240       Classes..TList
+ 0001:0001C2C4       Classes..TThreadList
+ 0001:0001C434       Classes..TInterfaceList
+ 0001:0001C490       Classes..TBits
+ 0001:0001C4E4       Classes..TPersistent
+ 0001:0001C5D4       Classes..TInterfacedPersistent
+ 0001:0001C688       Classes..TCollectionItem
+ 0001:0001C740       Classes..TCollection
+ 0001:0001C814       Classes..TOwnedCollection
+ 0001:0001C908       Classes..TStrings
+ 0001:0001CA40       Classes..TStringList
+ 0001:0001CB58       Classes..TStream
+ 0001:0001CBC8       Classes..THandleStream
+ 0001:0001CC40       Classes..TFileStream
+ 0001:0001CCC8       Classes..TCustomMemoryStream
+ 0001:0001CD44       Classes..TMemoryStream
+ 0001:0001CDC0       Classes..TResourceStream
+ 0001:0001CF4C       Classes..TStreamAdapter
+ 0001:0001CFD4       Classes..TClassFinder
+ 0001:0001D030       Classes..TFiler
+ 0001:0001D094       Classes..TReader
+ 0001:0001D128       Classes..TWriter
+ 0001:0001D1A8       Classes..EThread
+ 0001:0001D1FC       Classes..TThread
+ 0001:0001D34C       Classes..TComponent
+ 0001:0001D4AC       Classes..TBasicActionLink
+ 0001:0001D52C       Classes..TBasicAction
+ 0001:0001D600       Classes..TDataModule
+ 0001:0001D760       Classes.Point
+ 0001:0001D778       Classes.SmallPoint
+ 0001:0001D788       Classes.Rect
+ 0001:0001D7B0       Classes.Bounds
+ 0001:0001D7D8       Classes.InvalidPoint
+ 0001:0001D7EC       Classes.InvalidPoint
+ 0001:0001D808       Classes..TRegGroup
+ 0001:0001D860       Classes..TRegGroups
+ 0001:0001D8B8       Classes.TRegGroup.AddClass
+ 0001:0001D8C4       Classes.TRegGroup.BestClass
+ 0001:0001D924       Classes.TRegGroup.BestGroup
+ 0001:0001D994       Classes.TRegGroup.Create
+ 0001:0001D9F0       Classes.TRegGroup.Destroy
+ 0001:0001DA30       Classes.TRegGroup.GetClass
+ 0001:0001DA98       Classes.TRegGroup.InGroup
+ 0001:0001DADC       Classes.TRegGroup.RegisterClass
+ 0001:0001DB9C       Classes.TRegGroup.Registered
+ 0001:0001DBC0       Classes.PointerInModule
+ 0001:0001DBE0       Classes.TRegGroup.UnregisterModuleClasses
+ 0001:0001DC8C       Classes.TRegGroups.Activate
+ 0001:0001DCD8       Classes.TRegGroups.Create
+ 0001:0001DD4C       Classes.TRegGroups.Destroy
+ 0001:0001DDAC       Classes.TRegGroups.FindGroup
+ 0001:0001DDF0       Classes.TRegGroups.GetClass
+ 0001:0001DE34       Classes.Error
+ 0001:0001DEC4       Classes.TRegGroups.GroupWith
+ 0001:0001DF90       Classes.TRegGroups.Lock
+ 0001:0001DF9C       Classes.TRegGroups.RegisterClass
+ 0001:0001DFB4       Classes.TRegGroups.Registered
+ 0001:0001DFF8       Classes.TRegGroups.StartGroup
+ 0001:0001E048       Classes.TRegGroups.Unlock
+ 0001:0001E054       Classes.TRegGroups.UnregisterModuleClasses
+ 0001:0001E0A4       Classes.TClassFinder.Create
+ 0001:0001E1D0       Classes.TClassFinder.Destroy
+ 0001:0001E200       Classes.TClassFinder.GetClass
+ 0001:0001E288       Classes.GetFieldClassTable
+ 0001:0001E294       Classes.ClassNotFound
+ 0001:0001E300       Classes.GetClass
+ 0001:0001E354       Classes.FindClass
+ 0001:0001E374       Classes.RegisterClass
+ 0001:0001E3E4       Classes.RegisterClasses
+ 0001:0001E418       Classes.UnRegisterModuleClasses
+ 0001:0001E464       Classes.StartClassGroup
+ 0001:0001E4B0       Classes.GroupDescendentsWith
+ 0001:0001E504       Classes.ActivateClassGroup
+ 0001:0001E560       Classes..TIntConst
+ 0001:0001E5B8       Classes.TIntConst.Create
+ 0001:0001E5F0       Classes.RegisterIntegerConsts
+ 0001:0001E61C       Classes.FindIntToIdent
+ 0001:0001E698       Classes.FindIdentToInt
+ 0001:0001E714       Classes.IdentToInt
+ 0001:0001E754       Classes.IntToIdent
+ 0001:0001E798       Classes.RegisterFindGlobalComponentProc
+ 0001:0001E7D8       Classes.UnregisterFindGlobalComponentProc
+ 0001:0001E7F0       Classes.FindGlobalComponent
+ 0001:0001E830       Classes.IsUniqueGlobalComponentName
+ 0001:0001E854       Classes.InternalReadComponentRes
+ 0001:0001E8D8       Classes.BeginGlobalLoading
+ 0001:0001E930       Classes.NotifyGlobalLoading
+ 0001:0001E960       Classes.EndGlobalLoading
+ 0001:0001E9BC       Classes.InitComponent
+ 0001:0001EA64       Classes.InitInheritedComponent
+ 0001:0001EB2C       Classes.WriteCollection
+ 0001:0001EB98       Classes.CollectionsEqual
+ 0001:0001ECBC       Classes.TList.Destroy
+ 0001:0001ECDC       Classes.TList.Add
+ 0001:0001ED10       Classes.TList.Clear
+ 0001:0001ED28       Classes.TList.Delete
+ 0001:0001ED8C       Classes.ReturnAddr
+ 0001:0001ED90       Classes.TList.Error
+ 0001:0001EDC8       Classes.TList.Error
+ 0001:0001EE1C       Classes.TList.Exchange
+ 0001:0001EE6C       Classes.TList.Expand
+ 0001:0001EE84       Classes.TList.First
+ 0001:0001EE8C       Classes.TList.Get
+ 0001:0001EEB4       Classes.TList.Grow
+ 0001:0001EEE8       Classes.TList.IndexOf
+ 0001:0001EF08       Classes.TList.Insert
+ 0001:0001EF74       Classes.TList.Last
+ 0001:0001EF80       Classes.TList.Move
+ 0001:0001EFD8       Classes.TList.Put
+ 0001:0001F028       Classes.TList.Remove
+ 0001:0001F048       Classes.TList.SetCapacity
+ 0001:0001F084       Classes.TList.SetCount
+ 0001:0001F0F8       Classes.QuickSort
+ 0001:0001F17C       Classes.TList.Sort
+ 0001:0001F19C       Classes.TList.Extract
+ 0001:0001F1D8       Classes.TList.Notify
+ 0001:0001F1DC       Classes.TList.Assign
+ 0001:0001F4A8       Classes.TThreadList.Create
+ 0001:0001F4FC       Classes.TThreadList.Destroy
+ 0001:0001F578       Classes.TThreadList.Add
+ 0001:0001F600       Classes.TThreadList.LockList
+ 0001:0001F614       Classes.TThreadList.Remove
+ 0001:0001F664       Classes.TThreadList.UnlockList
+ 0001:0001F670       Classes.TInterfaceList.Create
+ 0001:0001F6B4       Classes.TInterfaceList.Destroy
+ 0001:0001F6E8       Classes.TInterfaceList.Clear
+ 0001:0001F758       Classes.TInterfaceList.Delete
+ 0001:0001F7B8       Classes.TInterfaceList.First
+ 0001:0001F7CC       Classes.TInterfaceList.Get
+ 0001:0001F840       Classes.TInterfaceList.GetCapacity
+ 0001:0001F890       Classes.TInterfaceList.GetCount
+ 0001:0001F8E0       Classes.TInterfaceList.IndexOf
+ 0001:0001F938       Classes.TInterfaceList.Add
+ 0001:0001F9A8       Classes.TInterfaceList.Insert
+ 0001:0001FA10       Classes.TInterfaceList.Last
+ 0001:0001FA6C       Classes.TInterfaceList.Put
+ 0001:0001FAE0       Classes.TInterfaceList.Remove
+ 0001:0001FB5C       Classes.TInterfaceList.SetCapacity
+ 0001:0001FBAC       Classes.TInterfaceList.SetCount
+ 0001:0001FBFC       Classes.TInterfaceList.Exchange
+ 0001:0001FC50       Classes.TInterfaceList.Lock
+ 0001:0001FC5C       Classes.TInterfaceList.Unlock
+ 0001:0001FC68       Classes.TBits.Destroy
+ 0001:0001FC98       Classes.TBits.Error
+ 0001:0001FCB0       Classes.Min
+ 0001:0001FCBC       Classes.TBits.SetSize
+ 0001:0001FD60       Classes.TBits.SetBit
+ 0001:0001FD8C       Classes.TBits.GetBit
+ 0001:0001FDA4       Classes.TBits.OpenBit
+ 0001:0001FE1C       Classes.TPersistent.Destroy
+ 0001:0001FE48       Classes.TPersistent.Assign
+ 0001:0001FE5C       Classes.TPersistent.AssignError
+ 0001:0001FF2C       Classes.TPersistent.AssignTo
+ 0001:0001FF34       Classes.TPersistent.DefineProperties
+ 0001:0001FF38       Classes.TPersistent.GetNamePath
+ 0001:0001FFE8       Classes.TPersistent.GetOwner
+ 0001:0001FFEC       Classes.TInterfacedPersistent.AfterConstruction
+ 0001:0002003C       Classes.TInterfacedPersistent._AddRef
+ 0001:0002005C       Classes.TInterfacedPersistent._Release
+ 0001:0002007C       Classes.TInterfacedPersistent.QueryInterface
+ 0001:000200A4       Classes.GetDesigner
+ 0001:00020144       Classes.NotifyDesigner
+ 0001:000201A8       Classes.TCollectionItem.Create
+ 0001:000201E0       Classes.TCollectionItem.Destroy
+ 0001:00020210       Classes.TCollectionItem.Changed
+ 0001:00020234       Classes.TCollectionItem.GetIndex
+ 0001:0002024C       Classes.TCollectionItem.GetDisplayName
+ 0001:00020274       Classes.TCollectionItem.GetNamePath
+ 0001:00020328       Classes.TCollectionItem.GetOwner
+ 0001:0002032C       Classes.TCollectionItem.SetCollection
+ 0001:00020354       Classes.TCollectionItem.SetDisplayName
+ 0001:0002035C       Classes.TCollectionItem.SetIndex
+ 0001:0002038C       Classes.TCollection.Create
+ 0001:000203D8       Classes.TCollection.Destroy
+ 0001:00020424       Classes.TCollection.Add
+ 0001:00020444       Classes.TCollection.Assign
+ 0001:000204DC       Classes.TCollection.BeginUpdate
+ 0001:000204E0       Classes.TCollection.Changed
+ 0001:000204F0       Classes.TCollection.Clear
+ 0001:00020558       Classes.TCollection.EndUpdate
+ 0001:00020564       Classes.TCollection.FindItemID
+ 0001:00020594       Classes.TCollection.GetAttrCount
+ 0001:00020598       Classes.TCollection.GetAttr
+ 0001:000205A4       Classes.TCollection.GetItemAttr
+ 0001:000205C4       Classes.TCollection.GetCount
+ 0001:000205CC       Classes.TCollection.GetItem
+ 0001:000205E0       Classes.TCollection.GetNamePath
+ 0001:000206A8       Classes.TCollection.GetPropName
+ 0001:000207C4       Classes.TCollection.Insert
+ 0001:000207E0       Classes.TCollection.InsertItem
+ 0001:00020848       Classes.TCollection.RemoveItem
+ 0001:0002089C       Classes.TCollection.SetItemName
+ 0001:000208A0       Classes.TCollection.Update
+ 0001:000208A4       Classes.TCollection.Delete
+ 0001:000208D4       Classes.TCollection.Owner
+ 0001:000208E0       Classes.TCollection.Added
+ 0001:000208E4       Classes.TCollection.Deleting
+ 0001:000208E8       Classes.TCollection.Notify
+ 0001:0002090C       Classes.TOwnedCollection.Create
+ 0001:00020950       Classes.TOwnedCollection.GetOwner
+ 0001:00020954       Classes.TStrings.Destroy
+ 0001:00020984       Classes.TStrings.Add
+ 0001:000209A8       Classes.TStrings.AddObject
+ 0001:000209CC       Classes.TStrings.Append
+ 0001:000209D8       Classes.TStrings.AddStrings
+ 0001:00020A90       Classes.TStrings.Assign
+ 0001:00020B48       Classes.TStrings.BeginUpdate
+ 0001:00020B60       Classes.DoWrite
+ 0001:00020BB8       Classes.TStrings.DefineProperties
+ 0001:00020C04       Classes.TStrings.EndUpdate
+ 0001:00020C18       Classes.TStrings.Equals
+ 0001:00020CC0       Classes.ReturnAddr
+ 0001:00020CC4       Classes.TStrings.Error
+ 0001:00020CFC       Classes.TStrings.Error
+ 0001:00020D54       Classes.TStrings.Exchange
+ 0001:00020E40       Classes.TStrings.ExtractName
+ 0001:00020EBC       Classes.TStrings.GetCapacity
+ 0001:00020EC4       Classes.TStrings.GetCommaText
+ 0001:00020F54       Classes.TStrings.GetDelimitedText
+ 0001:000211D0       Classes.TStrings.GetName
+ 0001:00021230       Classes.TStrings.GetObject
+ 0001:00021234       Classes.TStrings.GetText
+ 0001:00021288       Classes.TStrings.GetTextStr
+ 0001:000213C0       Classes.TStrings.GetValue
+ 0001:00021458       Classes.TStrings.IndexOf
+ 0001:000214E4       Classes.TStrings.IndexOfName
+ 0001:000215B8       Classes.TStrings.IndexOfObject
+ 0001:000215EC       Classes.TStrings.InsertObject
+ 0001:0002161C       Classes.TStrings.LoadFromFile
+ 0001:00021670       Classes.TStrings.LoadFromStream
+ 0001:0002171C       Classes.TStrings.Move
+ 0001:000217CC       Classes.TStrings.Put
+ 0001:000217FC       Classes.TStrings.PutObject
+ 0001:00021800       Classes.TStrings.ReadData
+ 0001:000218B0       Classes.TStrings.SaveToFile
+ 0001:00021908       Classes.TStrings.SaveToStream
+ 0001:00021968       Classes.TStrings.SetCapacity
+ 0001:0002196C       Classes.TStrings.SetCommaText
+ 0001:00021990       Classes.TStrings.SetStringsAdapter
+ 0001:000219C4       Classes.TStrings.SetText
+ 0001:00021A14       Classes.TStrings.SetTextStr
+ 0001:00021BB8       Classes.TStrings.SetUpdateState
+ 0001:00021BBC       Classes.TStrings.SetValue
+ 0001:00021C70       Classes.TStrings.WriteData
+ 0001:00021CF4       Classes.TStrings.SetDelimitedText
+ 0001:00021E90       Classes.TStrings.GetDelimiter
+ 0001:00021EA8       Classes.TStrings.GetLineBreak
+ 0001:00021EDC       Classes.TStrings.GetQuoteChar
+ 0001:00021EF4       Classes.TStrings.GetStrictDelimiter
+ 0001:00021F0C       Classes.TStrings.SetDelimiter
+ 0001:00021F28       Classes.TStrings.SetLineBreak
+ 0001:00021F54       Classes.TStrings.SetQuoteChar
+ 0001:00021F70       Classes.TStrings.SetStrictDelimiter
+ 0001:00021F8C       Classes.TStrings.CompareStrings
+ 0001:00021FD0       Classes.TStrings.GetNameValueSeparator
+ 0001:00021FE8       Classes.TStrings.SetNameValueSeparator
+ 0001:00022004       Classes.TStringList.Destroy
+ 0001:00022060       Classes.TStringList.Add
+ 0001:00022070       Classes.TStringList.AddObject
+ 0001:000220D4       Classes.TStringList.Changed
+ 0001:000220F0       Classes.TStringList.Changing
+ 0001:0002210C       Classes.TStringList.Clear
+ 0001:0002214C       Classes.TStringList.Delete
+ 0001:000221B8       Classes.TStringList.Exchange
+ 0001:00022214       Classes.TStringList.ExchangeItems
+ 0001:00022238       Classes.TStringList.Find
+ 0001:000222BC       Classes.TStringList.Get
+ 0001:000222F0       Classes.TStringList.GetCapacity
+ 0001:000222F4       Classes.TStringList.GetCount
+ 0001:000222F8       Classes.TStringList.GetObject
+ 0001:00022320       Classes.TStringList.Grow
+ 0001:00022354       Classes.TStringList.IndexOf
+ 0001:00022390       Classes.TStringList.Insert
+ 0001:000223A0       Classes.TStringList.InsertObject
+ 0001:000223F4       Classes.TStringList.InsertItem
+ 0001:00022470       Classes.TStringList.Put
+ 0001:000224CC       Classes.TStringList.PutObject
+ 0001:0002250C       Classes.TStringList.QuickSort
+ 0001:000225A0       Classes.TStringList.SetCapacity
+ 0001:000225BC       Classes.TStringList.SetSorted
+ 0001:000225DC       Classes.TStringList.SetUpdateState
+ 0001:000225F4       Classes.StringListCompareStrings
+ 0001:00022614       Classes.TStringList.Sort
+ 0001:00022624       Classes.TStringList.CustomSort
+ 0001:0002265C       Classes.TStringList.CompareStrings
+ 0001:000226E0       Classes.TStream.GetPosition
+ 0001:00022700       Classes.TStream.SetPosition
+ 0001:00022714       Classes.TStream.GetSize
+ 0001:00022760       Classes.TStream.SetSize
+ 0001:00022764       Classes.TStream.SetSize64
+ 0001:00022778       Classes.TStream.SetSize
+ 0001:000227CC       Classes.RaiseException
+ 0001:00022818       Classes.TStream.Seek
+ 0001:0002289C       Classes.TStream.Seek
+ 0001:0002290C       Classes.TStream.ReadBuffer
+ 0001:00022944       Classes.TStream.WriteBuffer
+ 0001:0002297C       Classes.TStream.CopyFrom
+ 0001:00022A70       Classes.TStream.ReadComponent
+ 0001:00022AD0       Classes.TStream.WriteComponent
+ 0001:00022AD8       Classes.TStream.WriteDescendent
+ 0001:00022B34       Classes.THandleStream.Create
+ 0001:00022B70       Classes.THandleStream.Read
+ 0001:00022B80       Classes.THandleStream.Write
+ 0001:00022B90       Classes.THandleStream.Seek
+ 0001:00022BBC       Classes.THandleStream.SetSize
+ 0001:00022BD0       Classes.THandleStream.SetSize
+ 0001:00022BF8       Classes.TFileStream.Create
+ 0001:00022C3C       Classes.TFileStream.Create
+ 0001:00022DB0       Classes.TFileStream.Destroy
+ 0001:00022DE4       Classes.TCustomMemoryStream.SetPointer
+ 0001:00022DEC       Classes.TCustomMemoryStream.Read
+ 0001:00022E24       Classes.TCustomMemoryStream.Seek
+ 0001:00022E48       Classes.TMemoryStream.Destroy
+ 0001:00022E74       Classes.TMemoryStream.Clear
+ 0001:00022E8C       Classes.TMemoryStream.LoadFromStream
+ 0001:00022EC4       Classes.TMemoryStream.SetCapacity
+ 0001:00022EEC       Classes.TMemoryStream.SetSize
+ 0001:00022F18       Classes.TMemoryStream.Realloc
+ 0001:00022F98       Classes.TMemoryStream.Write
+ 0001:00022FE8       Classes.TResourceStream.Create
+ 0001:00023040       Classes.TResourceStream.CreateFromID
+ 0001:00023094       Classes.Error
+ 0001:00023134       Classes.TResourceStream.Initialize
+ 0001:000231A0       Classes.TResourceStream.Destroy
+ 0001:000231D0       Classes.TResourceStream.Write
+ 0001:000231E8       Classes.TFiler.Create
+ 0001:00023230       Classes.TFiler.Destroy
+ 0001:00023258       Classes.TFiler.SetRoot
+ 0001:0002325C       Classes..TPropFixup
+ 0001:000232D4       Classes..TPropIntfFixup
+ 0001:00023334       Classes.TPropFixup.Create
+ 0001:0002338C       Classes.TPropFixup.MakeGlobalReference
+ 0001:000233D4       Classes.TPropFixup.ResolveReference
+ 0001:000233E4       Classes.TPropIntfFixup.ResolveReference
+ 0001:00023468       Classes.FindNestedComponent
+ 0001:00023534       Classes.AddFinished
+ 0001:0002356C       Classes.AddNotFinished
+ 0001:000235B4       Classes.GlobalFixupReferences
+ 0001:00023780       Classes.RemoveFixupReferences
+ 0001:0002382C       Classes.RemoveFixups
+ 0001:000238B0       Classes.ReadError
+ 0001:000238C8       Classes.PropValueError
+ 0001:000238D4       Classes.PropertyNotFound
+ 0001:00023900       Classes.SetElementValue
+ 0001:00023918       Classes.TReader.Destroy
+ 0001:00023954       Classes.TReader.CheckValue
+ 0001:00023978       Classes.TReader.DefineProperty
+ 0001:000239B4       Classes.TReader.DefineBinaryProperty
+ 0001:00023A9C       Classes.TReader.EndOfList
+ 0001:00023AB0       Classes.TReader.Error
+ 0001:00023AD4       Classes.TReader.FindMethodInstance
+ 0001:00023B5C       Classes.TReader.FindMethod
+ 0001:00023BC4       Classes.RemoveGlobalFixup
+ 0001:00023C40       Classes.TReader.DoFixupReferences
+ 0001:00023D84       Classes.TReader.FlushBuffer
+ 0001:00023DA8       Classes.TReader.FreeFixups
+ 0001:00023DE4       Classes.TReader.GetFieldClass
+ 0001:00023E7C       Classes.TReader.GetPosition
+ 0001:00023E94       Classes.TReader.NextValue
+ 0001:00023EA4       Classes.TReader.PropertyError
+ 0001:00023EB8       Classes.TReader.Read
+ 0001:00023F04       Classes.TReader.ReadBuffer
+ 0001:00023F40       Classes.TReader.ReadBoolean
+ 0001:00023F54       Classes.TReader.ReadChar
+ 0001:00023FB4       Classes.TReader.ReadWideChar
+ 0001:00024010       Classes.TReader.ReadCollection
+ 0001:000240E0       Classes.AddSubComponentsToLoaded
+ 0001:0002411C       Classes.CheckSubComponents
+ 0001:00024194       Classes.SetSubComponentState
+ 0001:000241FC       Classes.ComponentCreated
+ 0001:0002421C       Classes.Recover
+ 0001:0002427C       Classes.CreateComponent
+ 0001:0002438C       Classes.SetCompName
+ 0001:0002442C       Classes.FindExistingComponent
+ 0001:000244D0       Classes.TReader.ReadComponent
+ 0001:00024710       Classes.TReader.ReadData
+ 0001:00024780       Classes.TReader.ReadDataInner
+ 0001:00024850       Classes.TReader.ReadFloat
+ 0001:00024888       Classes.TReader.ReadDouble
+ 0001:000248CC       Classes.TReader.ReadSingle
+ 0001:00024910       Classes.TReader.ReadCurrency
+ 0001:00024960       Classes.TReader.ReadDate
+ 0001:000249A4       Classes.TReader.ReadIdent
+ 0001:00024AA0       Classes.TReader.ReadInteger
+ 0001:00024B0C       Classes.TReader.ReadInt64
+ 0001:00024B50       Classes.TReader.ReadListBegin
+ 0001:00024B58       Classes.TReader.ReadListEnd
+ 0001:00024B60       Classes.TReader.ReadPrefix
+ 0001:00024BA0       Classes.HandleException
+ 0001:00024CA0       Classes.PropPathError
+ 0001:00024CBC       Classes.TReader.ReadProperty
+ 0001:00024EC0       Classes.SetIntIdent
+ 0001:00024F08       Classes.SetObjectIdent
+ 0001:00024F48       Classes.SetVariantReference
+ 0001:00024FA4       Classes.SetInterfaceReference
+ 0001:00025064       Classes.TReader.ReadPropValue
+ 0001:0002537C       Classes.FindUniqueName
+ 0001:000253DC       Classes.TReader.ReadRootComponent
+ 0001:00025710       Classes.TReader.ReadSet
+ 0001:000257CC       Classes.TReader.ReadSignature
+ 0001:000257F0       Classes.TReader.ReadStr
+ 0001:0002582C       Classes.TReader.ReadString
+ 0001:000258E8       Classes.TReader.ReadWideString
+ 0001:000259CC       Classes.TReader.ReadValue
+ 0001:000259E0       Classes.TReader.SkipSetBody
+ 0001:00025A28       Classes.SkipList
+ 0001:00025A50       Classes.SkipBinary
+ 0001:00025A80       Classes.SkipCollection
+ 0001:00025ADC       Classes.TReader.SkipValue
+ 0001:00025C8C       Classes.TReader.SkipProperty
+ 0001:00025CD4       Classes.TReader.SkipComponent
+ 0001:00025D7C       Classes.TReader.FindAncestorComponent
+ 0001:00025E34       Classes.TReader.ReferenceName
+ 0001:00025E4C       Classes.TReader.SetName
+ 0001:00025E74       Classes.TReader.FindComponentClass
+ 0001:00025EE8       Classes.TReader.SkipBytes
+ 0001:00025F30       Classes.ReadCustomVariant
+ 0001:000260F8       Classes.TReader.ReadVariant
+ 0001:00026318       Classes.TWriter.Destroy
+ 0001:00026344       Classes.TWriter.AddAncestor
+ 0001:00026350       Classes.TWriter.DefineProperty
+ 0001:00026378       Classes.TWriter.DefineBinaryProperty
+ 0001:000263A4       Classes.TWriter.GetPosition
+ 0001:000263B4       Classes.TWriter.FindMethodName
+ 0001:00026410       Classes.TWriter.FlushBuffer
+ 0001:00026418       Classes.TWriter.SetPosition
+ 0001:00026454       Classes.TWriter.SetRoot
+ 0001:0002646C       Classes.TWriter.Write
+ 0001:000264B8       Classes.TWriter.WriteBinary
+ 0001:00026540       Classes.TWriter.WriteBuffer
+ 0001:00026558       Classes.TWriter.WriteBoolean
+ 0001:0002656C       Classes.TWriter.WriteChar
+ 0001:000265BC       Classes.TWriter.WriteWideChar
+ 0001:0002660C       Classes.TWriter.WriteCollection
+ 0001:000266AC       Classes.FindAncestor
+ 0001:000266FC       Classes.TWriter.WriteComponent
+ 0001:00026850       Classes.TWriter.WriteData
+ 0001:00026C58       Classes.TWriter.WriteDescendent
+ 0001:00026C80       Classes.TWriter.WriteFloat
+ 0001:00026CA4       Classes.TWriter.WriteSingle
+ 0001:00026CC8       Classes.TWriter.WriteCurrency
+ 0001:00026CEC       Classes.TWriter.WriteDate
+ 0001:00026D10       Classes.TWriter.WriteIdent
+ 0001:00026DD4       Classes.TWriter.WriteInteger
+ 0001:00026E48       Classes.TWriter.WriteInteger
+ 0001:00026EA0       Classes.TWriter.WriteListBegin
+ 0001:00026EA8       Classes.TWriter.WriteListEnd
+ 0001:00026EB0       Classes.TWriter.WritePrefix
+ 0001:00026EF8       Classes.TWriter.WriteProperties
+ 0001:00026FC0       Classes.AncestorIsValid
+ 0001:00026FF0       Classes.IsDefaultOrdProp
+ 0001:00027048       Classes.IsDefaultFloatProp
+ 0001:000270A4       Classes.IsDefaultInt64Prop
+ 0001:000270FC       Classes.IsDefaultStrProp
+ 0001:0002718C       Classes.ObjectAncestorMatch
+ 0001:000271CC       Classes.IsDefault
+ 0001:00027224       Classes.IsDefaultObjectProp
+ 0001:000272A4       Classes.IsDefaultValue
+ 0001:00027370       Classes.IsDefaultInterfaceProp
+ 0001:0002744C       Classes.FindMethodName
+ 0001:000274B8       Classes.IsDefaultMethodProp
+ 0001:00027558       Classes.IsDefaultVariantProp
+ 0001:000275F0       Classes.IsDefaultPropertyValue
+ 0001:00027758       Classes.WritePropPath
+ 0001:000277AC       Classes.WriteSet
+ 0001:00027840       Classes.WriteIntProp
+ 0001:000278AC       Classes.WriteCollectionProp
+ 0001:00027950       Classes.WriteOrdProp
+ 0001:00027A48       Classes.WriteFloatProp
+ 0001:00027A88       Classes.WriteInt64Prop
+ 0001:00027AC4       Classes.WriteStrProp
+ 0001:00027B24       Classes.OwnedBy
+ 0001:00027B3C       Classes.GetComponentValue
+ 0001:00027C64       Classes.WriteObjectProp
+ 0001:00027E78       Classes.WriteInterfaceProp
+ 0001:00027F54       Classes.WriteMethodProp
+ 0001:00027FE4       Classes.WriteVariantProp
+ 0001:00028048       Classes.TWriter.WriteProperty
+ 0001:000281A0       Classes.TWriter.WriteVariant
+ 0001:0002859C       Classes.TWriter.WritePropName
+ 0001:000285F0       Classes.TWriter.WriteSignature
+ 0001:00028600       Classes.TWriter.WriteStr
+ 0001:0002864C       Classes.TWriter.WriteMinStr
+ 0001:000286F8       Classes.TWriter.WriteString
+ 0001:0002874C       Classes.TWriter.WriteWideString
+ 0001:00028804       Classes.TWriter.WriteValue
+ 0001:00028818       Classes.TWriter.GetLookupInfo
+ 0001:0002883C       Classes.InitThreadSynchronization
+ 0001:00028870       Classes.DoneThreadSynchronization
+ 0001:00028888       Classes.ResetSyncEvent
+ 0001:00028894       Classes.WaitForSyncEvent
+ 0001:000288B0       Classes.SignalSyncEvent
+ 0001:000288BC       Classes.AddThread
+ 0001:000288C8       Classes.RemoveThread
+ 0001:000288D4       Classes.CheckSynchronize
+ 0001:00028AAC       Classes.ThreadProc
+ 0001:00028B54       Classes.TThread.Create
+ 0001:00028C24       Classes.TThread.Destroy
+ 0001:00028C98       Classes.TThread.AfterConstruction
+ 0001:00028CA4       Classes.TThread.CheckThreadError
+ 0001:00028D20       Classes.TThread.CheckThreadError
+ 0001:00028D38       Classes.TThread.CallOnTerminate
+ 0001:00028D4C       Classes.TThread.DoTerminate
+ 0001:00028D60       Classes.TThread.RemoveQueuedEvents
+ 0001:00028E20       Classes.TThread.Synchronize
+ 0001:00028FBC       Classes.TThread.Synchronize
+ 0001:00028FE4       Classes.TThread.Suspend
+ 0001:00029054       Classes.TThread.Resume
+ 0001:0002907C       Classes.TThread.Terminate
+ 0001:00029084       Classes.TThread.WaitFor
+ 0001:00029128       Classes.TComponent.Create
+ 0001:00029174       Classes.TComponent.Destroy
+ 0001:000291F0       Classes.TComponent.BeforeDestruction
+ 0001:000291FC       Classes.TComponent.FreeNotification
+ 0001:00029250       Classes.TComponent.ReadLeft
+ 0001:00029264       Classes.TComponent.ReadTop
+ 0001:00029278       Classes.TComponent.WriteLeft
+ 0001:00029284       Classes.TComponent.WriteTop
+ 0001:00029290       Classes.TComponent.Insert
+ 0001:000292BC       Classes.TComponent.Remove
+ 0001:000292E4       Classes.TComponent.InsertComponent
+ 0001:00029348       Classes.TComponent.RemoveComponent
+ 0001:00029380       Classes.TComponent.DestroyComponents
+ 0001:000293DC       Classes.TComponent.Destroying
+ 0001:00029418       Classes.TComponent.RemoveNotification
+ 0001:0002943C       Classes.TComponent.RemoveFreeNotification
+ 0001:00029458       Classes.TComponent.Notification
+ 0001:000294B8       Classes.TComponent.DefineProperties
+ 0001:00029540       Classes.TComponent.HasParent
+ 0001:00029544       Classes.TComponent.GetChildren
+ 0001:0002954C       Classes.TComponent.GetChildOwner
+ 0001:00029550       Classes.TComponent.GetChildParent
+ 0001:00029554       Classes.TComponent.GetNamePath
+ 0001:00029568       Classes.TComponent.GetOwner
+ 0001:0002956C       Classes.TComponent.SetChildOrder
+ 0001:00029570       Classes.TComponent.GetParentComponent
+ 0001:00029574       Classes.TComponent.SetParentComponent
+ 0001:00029578       Classes.TComponent.Updating
+ 0001:00029584       Classes.TComponent.Updated
+ 0001:00029590       Classes.TComponent.Loaded
+ 0001:0002959C       Classes.TComponent.PaletteCreated
+ 0001:000295A0       Classes.TComponent.ReadState
+ 0001:000295A8       Classes.TComponent.WriteState
+ 0001:000295B0       Classes.TComponent.ValidateRename
+ 0001:00029630       Classes.TComponent.ValidateContainer
+ 0001:00029644       Classes.TComponent.ValidateInsert
+ 0001:00029648       Classes.TComponent.FindComponent
+ 0001:00029698       Classes.TComponent.SetName
+ 0001:00029728       Classes.TComponent.ChangeName
+ 0001:0002973C       Classes.TComponent.GetComponentIndex
+ 0001:00029758       Classes.TComponent.GetComponent
+ 0001:00029784       Classes.TComponent.GetComponentCount
+ 0001:00029794       Classes.TComponent.SetComponentIndex
+ 0001:000297E8       Classes.TComponent.SetDesigning
+ 0001:00029838       Classes.TComponent.SetReference
+ 0001:00029880       Classes.TComponent.ExecuteAction
+ 0001:000298A8       Classes.TComponent.UpdateAction
+ 0001:000298D0       Classes.TComponent.SetSubComponent
+ 0001:000298E4       Classes.TComponent.SafeCallException
+ 0001:000298FC       Classes.TComponent.UpdateRegistry
+ 0001:00029904       Classes.TComponent.QueryInterface
+ 0001:00029944       Classes.TComponent._AddRef
+ 0001:00029964       Classes.TComponent._Release
+ 0001:00029984       Classes.TComponent.IntfGetComponent
+ 0001:00029988       Classes.TBasicActionLink.Create
+ 0001:000299CC       Classes.TBasicActionLink.AssignClient
+ 0001:000299D0       Classes.TBasicActionLink.Destroy
+ 0001:00029A04       Classes.TBasicActionLink.Change
+ 0001:00029A1C       Classes.TBasicActionLink.Execute
+ 0001:00029A38       Classes.TBasicActionLink.SetAction
+ 0001:00029A64       Classes.TBasicActionLink.IsOnExecuteLinked
+ 0001:00029A68       Classes.TBasicActionLink.SetOnExecute
+ 0001:00029A70       Classes.TBasicActionLink.Update
+ 0001:00029A7C       Classes.TBasicAction.Create
+ 0001:00029AC0       Classes.TBasicAction.Destroy
+ 0001:00029B20       Classes.TBasicAction.HandlesTarget
+ 0001:00029B24       Classes.TBasicAction.ExecuteTarget
+ 0001:00029B28       Classes.TBasicAction.Notification
+ 0001:00029B50       Classes.TBasicAction.UpdateTarget
+ 0001:00029B54       Classes.TBasicAction.Execute
+ 0001:00029B70       Classes.TBasicAction.Update
+ 0001:00029B8C       Classes.TBasicAction.SetOnExecute
+ 0001:00029BE8       Classes.TBasicAction.Change
+ 0001:00029BFC       Classes.TBasicAction.RegisterChanges
+ 0001:00029C08       Classes.TBasicAction.UnRegisterChanges
+ 0001:00029C48       Classes.TBasicAction.SetActionComponent
+ 0001:00029C74       Classes.TStreamAdapter.Create
+ 0001:00029CC0       Classes.TStreamAdapter.Destroy
+ 0001:00029CF8       Classes.TStreamAdapter.Read
+ 0001:00029D60       Classes.TStreamAdapter.Write
+ 0001:00029DC8       Classes.TStreamAdapter.Seek
+ 0001:00029E4C       Classes.TStreamAdapter.SetSize
+ 0001:00029EB0       Classes.TStreamAdapter.CopyTo
+ 0001:0002A0B8       Classes.TStreamAdapter.Commit
+ 0001:0002A0C4       Classes.TStreamAdapter.Revert
+ 0001:0002A0D0       Classes.TStreamAdapter.LockRegion
+ 0001:0002A0DC       Classes.TStreamAdapter.UnlockRegion
+ 0001:0002A0E8       Classes.TStreamAdapter.Stat
+ 0001:0002A164       Classes.TStreamAdapter.Clone
+ 0001:0002A17C       Classes.FreeIntConstList
+ 0001:0002A1E8       Classes.ModuleUnload
+ 0001:0002A1F0       Classes.TDataModule.Create
+ 0001:0002A330       Classes.TDataModule.AfterConstruction
+ 0001:0002A33C       Classes.TDataModule.CreateNew
+ 0001:0002A398       Classes.TDataModule.BeforeDestruction
+ 0001:0002A3C4       Classes.TDataModule.Destroy
+ 0001:0002A460       Classes.TDataModule.DoCreate
+ 0001:0002A4C0       Classes.TDataModule.DoDestroy
+ 0001:0002A524       Classes.DoWriteWidth
+ 0001:0002A54C       Classes.DoWriteHorizontalOffset
+ 0001:0002A580       Classes.DoWriteVerticalOffset
+ 0001:0002A5B4       Classes.DoWriteHeight
+ 0001:0002A5DC       Classes.TDataModule.DefineProperties
+ 0001:0002A6F0       Classes.TDataModule.GetChildren
+ 0001:0002A75C       Classes.TDataModule.HandleCreateException
+ 0001:0002A77C       Classes.TDataModule.ReadState
+ 0001:0002A790       Classes.TDataModule.ReadWidth
+ 0001:0002A7A4       Classes.TDataModule.ReadHorizontalOffset
+ 0001:0002A7B8       Classes.TDataModule.ReadVerticalOffset
+ 0001:0002A7CC       Classes.TDataModule.ReadHeight
+ 0001:0002A7E0       Classes.TDataModule.WriteWidth
+ 0001:0002A7EC       Classes.TDataModule.WriteHorizontalOffset
+ 0001:0002A7F8       Classes.TDataModule.WriteVerticalOffset
+ 0001:0002A804       Classes.TDataModule.WriteHeight
+ 0001:0002A810       Classes.StdWndProc
+ 0001:0002A830       Classes.CalcJmpOffset
+ 0001:0002A838       Classes.MakeObjectInstance
+ 0001:0002A8D0       Classes.FreeObjectInstance
+ 0001:0002A8F4       Classes.AllocateHWnd
+ 0001:0002A9A8       Classes.DeallocateHWnd
+ 0001:0002A9D0       Classes.Finalization
+ 0001:0002AA80       Math.RoundTo
+ 0001:0002AAC8       Math.IntPower
+ 0001:0002AAF8       Contnrs..TObjectList
+ 0001:0002AB60       Contnrs..TComponentList
+ 0001:0002ABCC       Contnrs..TOrderedList
+ 0001:0002AC34       Contnrs..TStack
+ 0001:0002AC94       Contnrs.TObjectList.Add
+ 0001:0002AC9C       Contnrs.TObjectList.Create
+ 0001:0002ACD8       Contnrs.TObjectList.Create
+ 0001:0002AD1C       Contnrs.TObjectList.Extract
+ 0001:0002AD30       Contnrs.TObjectList.GetItem
+ 0001:0002AD44       Contnrs.TObjectList.IndexOf
+ 0001:0002AD4C       Contnrs.TObjectList.Notify
+ 0001:0002AD78       Contnrs.TObjectList.Remove
+ 0001:0002AD80       Contnrs.TObjectList.SetItem
+ 0001:0002AD88       Contnrs..TComponentListNexus
+ 0001:0002AE48       Contnrs.TComponentListNexus.Notification
+ 0001:0002AE78       Contnrs.TComponentList.Add
+ 0001:0002AE80       Contnrs.TComponentList.Destroy
+ 0001:0002AEB0       Contnrs.TComponentList.Extract
+ 0001:0002AEC4       Contnrs.TComponentList.GetItems
+ 0001:0002AED8       Contnrs.TComponentList.HandleFreeNotify
+ 0001:0002AEE0       Contnrs.TComponentList.IndexOf
+ 0001:0002AEE8       Contnrs.TComponentList.Notify
+ 0001:0002AF50       Contnrs.TComponentList.Remove
+ 0001:0002AF58       Contnrs.TOrderedList.Pop
+ 0001:0002AF60       Contnrs.TOrderedList.Push
+ 0001:0002AF70       Contnrs.TOrderedList.Create
+ 0001:0002AFB4       Contnrs.TOrderedList.Destroy
+ 0001:0002AFE4       Contnrs.TOrderedList.PeekItem
+ 0001:0002AFF8       Contnrs.TOrderedList.PopItem
+ 0001:0002B018       Contnrs.TStack.PushItem
+ 0001:0002B148       HelpIntfs..EHelpSystemException
+ 0001:0002B2D4       HelpIntfs..THelpManager
+ 0001:0002B370       HelpIntfs.EnsureHelpManager
+ 0001:0002B38C       HelpIntfs.GetHelpSystem
+ 0001:0002B3D4       HelpIntfs.THelpManager.Create
+ 0001:0002B448       HelpIntfs.THelpManager.UnloadAllViewers
+ 0001:0002B488       HelpIntfs.THelpManager.DoSoftShutDown
+ 0001:0002B4B8       HelpIntfs.THelpManager.DoTableOfContents
+ 0001:0002B658       HelpIntfs.THelpManager.CallSpecialWinHelp
+ 0001:0002B760       HelpIntfs.THelpManager.ShowHelp
+ 0001:0002B994       HelpIntfs.DefaultContextHelp
+ 0001:0002BA28       HelpIntfs.THelpManager.ShowContextHelp
+ 0001:0002BCD0       HelpIntfs.THelpManager.ShowTableOfContents
+ 0001:0002BCD8       HelpIntfs.THelpManager.ShowTopicHelp
+ 0001:0002BDB8       HelpIntfs.THelpManager.AssignHelpSelector
+ 0001:0002BE14       HelpIntfs.THelpManager.Hook
+ 0001:0002BED0       HelpIntfs.THelpManager.UnderstandsKeyword
+ 0001:0002BFDC       HelpIntfs.THelpManager.GetHandle
+ 0001:0002BFE0       HelpIntfs.THelpManager.GetHelpFile
+ 0001:0002BFF4       HelpIntfs.THelpManager.Release
+ 0001:0002C080       HelpIntfs.THelpManager.Destroy
+ 0001:0002C0E4       HelpIntfs.Finalization
+ 0001:0002C124       MultiMon.InitAnApi
+ 0001:0002C208       MultiMon._GetSystemMetrics
+ 0001:0002C290       MultiMon.xMonitorFromRect
+ 0001:0002C320       MultiMon.xMonitorFromWindow
+ 0001:0002C3B8       MultiMon.xMonitorFromPoint
+ 0001:0002C450       MultiMon.xGetMonitorInfo
+ 0001:0002C524       MultiMon.xGetMonitorInfoA
+ 0001:0002C5F8       MultiMon.xGetMonitorInfoW
+ 0001:0002C6CC       MultiMon.xEnumDisplayMonitors
+ 0001:0002C7FC       MultiMon.InitMultiMonStubs
+ 0001:0002C868       MultiMon.Finalization
+ 0001:0002C898       CommCtrl.InitCommonControls
+ 0001:0002C8A0       CommCtrl.InitComCtl
+ 0001:0002C900       CommCtrl.InitCommonControlsEx
+ 0001:0002C934       CommCtrl.ImageList_Create
+ 0001:0002C93C       CommCtrl.ImageList_Destroy
+ 0001:0002C944       CommCtrl.ImageList_GetImageCount
+ 0001:0002C94C       CommCtrl.ImageList_Add
+ 0001:0002C954       CommCtrl.ImageList_SetBkColor
+ 0001:0002C95C       CommCtrl.ImageList_GetBkColor
+ 0001:0002C964       CommCtrl.ImageList_SetOverlayImage
+ 0001:0002C96C       CommCtrl.ImageList_Draw
+ 0001:0002C974       CommCtrl.ImageList_Replace
+ 0001:0002C97C       CommCtrl.ImageList_DrawEx
+ 0001:0002C984       CommCtrl.ImageList_Remove
+ 0001:0002C98C       CommCtrl.ImageList_BeginDrag
+ 0001:0002C994       CommCtrl.ImageList_EndDrag
+ 0001:0002C99C       CommCtrl.ImageList_DragEnter
+ 0001:0002C9A4       CommCtrl.ImageList_DragLeave
+ 0001:0002C9AC       CommCtrl.ImageList_DragMove
+ 0001:0002C9B4       CommCtrl.ImageList_DragShowNolock
+ 0001:0002C9BC       CommCtrl.ImageList_GetDragImage
+ 0001:0002C9C4       CommCtrl.ImageList_Read
+ 0001:0002C9CC       CommCtrl.ImageList_Write
+ 0001:0002C9D4       CommCtrl.ImageList_GetIconSize
+ 0001:0002C9DC       CommCtrl.ImageList_SetIconSize
+ 0001:0002C9E4       CommCtrl.ListView_GetNextItem
+ 0001:0002C9F8       CommCtrl.ListView_GetItemRect
+ 0001:0002CA34       CommCtrl.ListView_EnsureVisible
+ 0001:0002CA60       CommCtrl.ListView_SetColumnWidth
+ 0001:0002CA80       CommCtrl.ListView_SetItemState
+ 0001:0002CAB0       CommCtrl.ListView_SetCheckState
+ 0001:0002CADC       CommCtrl.ListView_SetItemText
+ 0001:0002CB0C       CommCtrl.TreeView_GetItemRect
+ 0001:0002CB30       CommCtrl.TreeView_GetChild
+ 0001:0002CB48       CommCtrl.TreeView_GetNextSibling
+ 0001:0002CB60       CommCtrl.TreeView_GetPrevSibling
+ 0001:0002CB78       CommCtrl.TreeView_GetParent
+ 0001:0002CB90       CommCtrl.TreeView_GetFirstVisible
+ 0001:0002CBA4       CommCtrl.TreeView_GetNextVisible
+ 0001:0002CBBC       CommCtrl.TreeView_GetPrevVisible
+ 0001:0002CBD4       CommCtrl.TreeView_GetSelection
+ 0001:0002CBE8       CommCtrl.TreeView_GetDropHilite
+ 0001:0002CBFC       CommCtrl.TreeView_GetRoot
+ 0001:0002CC10       CommCtrl.TreeView_SelectItem
+ 0001:0002CC28       CommCtrl.TreeView_SelectDropTarget
+ 0001:0002CC40       CommCtrl.TreeView_SelectSetFirstVisible
+ 0001:0002CC58       CommCtrl._TrackMouseEvent
+ 0001:0002D008       IniFiles.Finalization
+ 0001:0002D050       Registry..ERegistryException
+ 0001:0002D0B0       Registry..TRegistry
+ 0001:0002D118       Registry.ReadError
+ 0001:0002D144       Registry.IsRelative
+ 0001:0002D158       Registry.RegDataToDataType
+ 0001:0002D188       Registry.DataTypeToRegData
+ 0001:0002D1B0       Registry.TRegistry.Create
+ 0001:0002D1F4       Registry.TRegistry.Destroy
+ 0001:0002D220       Registry.TRegistry.CloseKey
+ 0001:0002D250       Registry.TRegistry.SetRootKey
+ 0001:0002D27C       Registry.TRegistry.ChangeKey
+ 0001:0002D2A0       Registry.TRegistry.GetBaseKey
+ 0001:0002D2B4       Registry.TRegistry.OpenKey
+ 0001:0002D3D8       Registry.TRegistry.OpenKeyReadOnly
+ 0001:0002D590       Registry.TRegistry.DeleteValue
+ 0001:0002D5B0       Registry.TRegistry.GetKeyInfo
+ 0001:0002D618       Registry.TRegistry.GetValueNames
+ 0001:0002D6E0       Registry.TRegistry.GetDataInfo
+ 0001:0002D730       Registry.TRegistry.GetDataSize
+ 0001:0002D758       Registry.TRegistry.WriteString
+ 0001:0002D788       Registry.TRegistry.ReadString
+ 0001:0002D800       Registry.TRegistry.ReadInteger
+ 0001:0002D830       Registry.TRegistry.ReadBool
+ 0001:0002D848       Registry.TRegistry.ReadDateTime
+ 0001:0002D87C       Registry.TRegistry.PutData
+ 0001:0002D8E4       Registry.TRegistry.GetData
+ 0001:0002D958       Registry.TRegistry.ValueExists
+ 0001:0002D980       Registry.Finalization
+ 0001:0002D9E0       Graphics..EInvalidGraphic
+ 0001:0002DA3C       Graphics..EInvalidGraphicOperation
+ 0001:0002DD34       Graphics..TGraphicsObject
+ 0001:0002DE08       Graphics..TFont
+ 0001:0002DFA8       Graphics..TPen
+ 0001:0002E0A8       Graphics..TBrush
+ 0001:0002E16C       Graphics..TCanvas
+ 0001:0002E3C8       Graphics..TGraphic
+ 0001:0002E520       Graphics..TPicture
+ 0001:0002E5CC       Graphics..TMetafileCanvas
+ 0001:0002E66C       Graphics..TSharedImage
+ 0001:0002E6CC       Graphics..TMetafileImage
+ 0001:0002E72C       Graphics..TMetafile
+ 0001:0002E810       Graphics..TBitmapImage
+ 0001:0002E870       Graphics..TBitmap
+ 0001:0002E95C       Graphics..TIconImage
+ 0001:0002E9B8       Graphics..TIcon
+ 0001:0002EA94       Graphics.InternalDeletePalette
+ 0001:0002EAA8       Graphics..TResourceManager
+ 0001:0002EB10       Graphics..TBrushResourceManager
+ 0001:0002EB7C       Graphics.GetHashCode
+ 0001:0002EB90       Graphics.TResourceManager.Create
+ 0001:0002EBCC       Graphics.TResourceManager.Destroy
+ 0001:0002EBF0       Graphics.TResourceManager.Lock
+ 0001:0002EBFC       Graphics.TResourceManager.Unlock
+ 0001:0002EC08       Graphics.TResourceManager.AllocResource
+ 0001:0002ECEC       Graphics.TResourceManager.FreeResource
+ 0001:0002EDB0       Graphics.TResourceManager.ChangeResource
+ 0001:0002EE28       Graphics.TResourceManager.FreeObjects
+ 0001:0002EE2C       Graphics.TResourceManager.AssignResource
+ 0001:0002EE98       Graphics.TBrushResourceManager.FreeObjects
+ 0001:0002EEA8       Graphics.ClearColor
+ 0001:0002EF18       Graphics.PaletteChanged
+ 0001:0002F404       Graphics.ColorToRGB
+ 0001:0002F414       Graphics.StringToColor
+ 0001:0002F438       Graphics.ColorToIdent
+ 0001:0002F448       Graphics.IdentToColor
+ 0001:0002F458       Graphics.TGraphicsObject.Changed
+ 0001:0002F46C       Graphics.TGraphicsObject.Lock
+ 0001:0002F47C       Graphics.TGraphicsObject.Unlock
+ 0001:0002F640       Graphics.CharsetToIdent
+ 0001:0002F650       Graphics.IdentToCharset
+ 0001:0002F660       Graphics.GetFontData
+ 0001:0002F720       Graphics.TFont.Create
+ 0001:0002F774       Graphics.TFont.Destroy
+ 0001:0002F79C       Graphics.TFont.Changed
+ 0001:0002F7B8       Graphics.TFont.Assign
+ 0001:0002F88C       Graphics.TFont.GetData
+ 0001:0002F8A4       Graphics.TFont.SetData
+ 0001:0002F8F4       Graphics.TFont.SetColor
+ 0001:0002F908       Graphics.IsDefaultFont
+ 0001:0002F934       Graphics.TFont.GetHandle
+ 0001:0002FB70       Graphics.TFont.SetHandle
+ 0001:0002FB94       Graphics.TFont.GetHeight
+ 0001:0002FB9C       Graphics.TFont.SetHeight
+ 0001:0002FBC4       Graphics.TFont.GetName
+ 0001:0002FBDC       Graphics.TFont.SetName
+ 0001:0002FC38       Graphics.TFont.GetSize
+ 0001:0002FC54       Graphics.TFont.SetSize
+ 0001:0002FC74       Graphics.TFont.GetStyle
+ 0001:0002FC80       Graphics.TFont.SetStyle
+ 0001:0002FCAC       Graphics.TFont.GetPitch
+ 0001:0002FCB4       Graphics.TFont.SetPitch
+ 0001:0002FCDC       Graphics.TFont.GetCharset
+ 0001:0002FCE4       Graphics.TFont.SetCharset
+ 0001:0002FD0C       Graphics.TFont.GetOrientation
+ 0001:0002FD14       Graphics.TFont.SetOrientation
+ 0001:0002FD3C       Graphics.GetPenData
+ 0001:0002FE4C       Graphics.TPen.Create
+ 0001:0002FE90       Graphics.TPen.Destroy
+ 0001:0002FEB8       Graphics.TPen.Assign
+ 0001:0002FF70       Graphics.TPen.GetData
+ 0001:0002FF88       Graphics.TPen.SetData
+ 0001:0002FFD8       Graphics.TPen.GetColor
+ 0001:0002FFE0       Graphics.TPen.SetColor
+ 0001:00030008       Graphics.TPen.GetHandle
+ 0001:000300A0       Graphics.TPen.SetHandle
+ 0001:000300C4       Graphics.TPen.SetMode
+ 0001:000300D8       Graphics.TPen.GetStyle
+ 0001:000300E0       Graphics.TPen.SetStyle
+ 0001:00030108       Graphics.TPen.GetWidth
+ 0001:00030110       Graphics.TPen.SetWidth
+ 0001:0003013C       Graphics.TBrush.Create
+ 0001:0003017C       Graphics.TBrush.Destroy
+ 0001:000301A4       Graphics.TBrush.Assign
+ 0001:0003024C       Graphics.TBrush.GetData
+ 0001:00030268       Graphics.TBrush.SetData
+ 0001:000302B8       Graphics.TBrush.GetBitmap
+ 0001:000302C0       Graphics.TBrush.SetBitmap
+ 0001:000302E4       Graphics.TBrush.GetColor
+ 0001:000302EC       Graphics.TBrush.SetColor
+ 0001:00030320       Graphics.TBrush.GetHandle
+ 0001:00030400       Graphics.TBrush.GetStyle
+ 0001:00030408       Graphics.TBrush.SetStyle
+ 0001:0003043C       Graphics.TCanvas.Create
+ 0001:00030500       Graphics.TCanvas.Destroy
+ 0001:0003055C       Graphics.TCanvas.BrushCopy
+ 0001:00030820       Graphics.TCanvas.CopyRect
+ 0001:000308A8       Graphics.TCanvas.Draw
+ 0001:00030954       Graphics.TCanvas.DrawFocusRect
+ 0001:00030988       Graphics.TCanvas.Ellipse
+ 0001:000309D0       Graphics.TCanvas.FillRect
+ 0001:00030A0C       Graphics.TCanvas.FrameRect
+ 0001:00030A48       Graphics.TCanvas.LineTo
+ 0001:00030A80       Graphics.TCanvas.Lock
+ 0001:00030AA8       Graphics.TCanvas.MoveTo
+ 0001:00030AD4       Graphics.TCanvas.Pie
+ 0001:00030B2C       Graphics.TCanvas.Polygon
+ 0001:00030B68       Graphics.TCanvas.Polyline
+ 0001:00030BA4       Graphics.TCanvas.Rectangle
+ 0001:00030BEC       Graphics.TCanvas.Refresh
+ 0001:00030BF4       Graphics.TCanvas.RoundRect
+ 0001:00030C44       Graphics.TCanvas.StretchDraw
+ 0001:00030C80       Graphics.TCanvas.GetCanvasOrientation
+ 0001:00030CAC       Graphics.TCanvas.TextOut
+ 0001:00030D48       Graphics.TCanvas.TextRect
+ 0001:00030DF4       Graphics.TCanvas.TextExtent
+ 0001:00030E3C       Graphics.TCanvas.TextWidth
+ 0001:00030E58       Graphics.TCanvas.TextHeight
+ 0001:00030E78       Graphics.TCanvas.TryLock
+ 0001:00030ED4       Graphics.TCanvas.Unlock
+ 0001:00030EFC       Graphics.TCanvas.SetFont
+ 0001:00030F0C       Graphics.TCanvas.SetPen
+ 0001:00030F18       Graphics.TCanvas.SetBrush
+ 0001:00030F24       Graphics.TCanvas.GetPenPos
+ 0001:00030F4C       Graphics.TCanvas.SetPenPos
+ 0001:00030F6C       Graphics.TCanvas.GetPixel
+ 0001:00030F98       Graphics.TCanvas.SetPixel
+ 0001:00030FE0       Graphics.TCanvas.GetClipRect
+ 0001:00031008       Graphics.TCanvas.GetHandle
+ 0001:0003102C       Graphics.TCanvas.DeselectHandles
+ 0001:0003108C       Graphics.TCanvas.CreateHandle
+ 0001:00031090       Graphics.TCanvas.SetHandle
+ 0001:000310E4       Graphics.TCanvas.RequiredState
+ 0001:0003115C       Graphics.TCanvas.Changing
+ 0001:00031170       Graphics.TCanvas.Changed
+ 0001:00031184       Graphics.TCanvas.CreateFont
+ 0001:000311B0       Graphics.TCanvas.CreatePen
+ 0001:000311E0       Graphics.TCanvas.CreateBrush
+ 0001:0003125C       Graphics.TCanvas.FontChanged
+ 0001:0003127C       Graphics.TCanvas.PenChanged
+ 0001:0003129C       Graphics.TCanvas.BrushChanged
+ 0001:000312BC       Graphics.InvalidOperation
+ 0001:000312D4       Graphics.InvalidGraphic
+ 0001:000312EC       Graphics.InvalidBitmap
+ 0001:000312F8       Graphics.InvalidIcon
+ 0001:00031304       Graphics.InvalidMetafile
+ 0001:00031310       Graphics.OutOfResources
+ 0001:00031364       Graphics.GDIError
+ 0001:0003140C       Graphics.GDICheck
+ 0001:0003141C       Graphics.DupBits
+ 0001:0003157C       Graphics.GetDInColors
+ 0001:0003159C       Graphics.BytesPerScanline
+ 0001:000315BC       Graphics.TransparentStretchBlt
+ 0001:00031848       Graphics.RGBTripleToQuad
+ 0001:00031884       Graphics.RGBQuadToTriple
+ 0001:00031900       Graphics.ByteSwapColors
+ 0001:00031954       Graphics.CreateSystemPalette
+ 0001:00031A6C       Graphics.SystemPaletteOverride
+ 0001:00031B04       Graphics.PaletteFromDIBColorTable
+ 0001:00031BA8       Graphics.PaletteToDIBColorTable
+ 0001:00031BFC       Graphics.TwoBitsFromDIB
+ 0001:00031DBC       Graphics.AdjustColor
+ 0001:00031DC8       Graphics.BetterSize
+ 0001:00031E58       Graphics.ReadIcon
+ 0001:00032164       Graphics.ComputeAldusChecksum
+ 0001:0003217C       Graphics.InitializeBitmapInfoHeader
+ 0001:00032260       Graphics.InternalGetDIBSizes
+ 0001:000322C8       Graphics.GetDIBSizes
+ 0001:000322D0       Graphics.InternalGetDIB
+ 0001:00032384       Graphics.GetDIB
+ 0001:00032398       Graphics.WinError
+ 0001:0003239C       Graphics.CheckBool
+ 0001:000323A8       Graphics.WriteIcon
+ 0001:000325A8       Graphics.TGraphic.Create
+ 0001:000325E0       Graphics.TGraphic.Changed
+ 0001:000325F8       Graphics.DoWrite
+ 0001:00032650       Graphics.TGraphic.DefineProperties
+ 0001:0003269C       Graphics.TGraphic.Equals
+ 0001:000327E8       Graphics.TGraphic.GetPalette
+ 0001:000327EC       Graphics.TGraphic.GetTransparent
+ 0001:000327F4       Graphics.TGraphic.LoadFromFile
+ 0001:00032848       Graphics.TGraphic.Progress
+ 0001:00032874       Graphics.TGraphic.ReadData
+ 0001:00032880       Graphics.TGraphic.SaveToFile
+ 0001:000328D8       Graphics.TGraphic.SetPalette
+ 0001:000328DC       Graphics.TGraphic.SetSize
+ 0001:000328F8       Graphics.TGraphic.SetTransparent
+ 0001:00032908       Graphics.TGraphic.WriteData
+ 0001:00032940       Graphics..TFileFormatsList
+ 0001:000329B0       Graphics.TFileFormatsList.Create
+ 0001:00032AE4       Graphics.TFileFormatsList.Destroy
+ 0001:00032B30       Graphics.TFileFormatsList.Add
+ 0001:00032BC4       Graphics.TFileFormatsList.FindClassName
+ 0001:00032C54       Graphics..TClipboardFormats
+ 0001:00032CB4       Graphics.TClipboardFormats.Create
+ 0001:00032D34       Graphics.TClipboardFormats.Destroy
+ 0001:00032D60       Graphics.TClipboardFormats.Add
+ 0001:00032DC8       Graphics.TClipboardFormats.FindFormat
+ 0001:00032E04       Graphics.GetFileFormats
+ 0001:00032E24       Graphics.GetClipboardFormats
+ 0001:00032E44       Graphics.TPicture.Create
+ 0001:00032E84       Graphics.TPicture.Destroy
+ 0001:00032EB4       Graphics.TPicture.AssignTo
+ 0001:00032EE8       Graphics.TPicture.ForceType
+ 0001:00032F4C       Graphics.TPicture.GetBitmap
+ 0001:00032F64       Graphics.TPicture.GetIcon
+ 0001:00032F7C       Graphics.TPicture.GetMetafile
+ 0001:00032F94       Graphics.TPicture.SetGraphic
+ 0001:00033044       Graphics.TPicture.LoadFromClipboardFormat
+ 0001:00033108       Graphics.TPicture.SaveToClipboardFormat
+ 0001:00033134       Graphics.TPicture.SupportsClipboardFormat
+ 0001:0003314C       Graphics.TPicture.LoadFromStream
+ 0001:00033164       Graphics.TPicture.SaveToStream
+ 0001:0003317C       Graphics.TPicture.Assign
+ 0001:000331D8       Graphics.TPicture.RegisterFileFormat
+ 0001:000331FC       Graphics.TPicture.Changed
+ 0001:00033220       Graphics.TPicture.Progress
+ 0001:0003324C       Graphics.TPicture.ReadData
+ 0001:00033360       Graphics.TPicture.WriteData
+ 0001:000333B8       Graphics.DoWrite
+ 0001:00033434       Graphics.TPicture.DefineProperties
+ 0001:00033480       Graphics.TPicture.GetWidth
+ 0001:00033498       Graphics.TPicture.GetHeight
+ 0001:000334B0       Graphics.TMetafileImage.Destroy
+ 0001:000334EC       Graphics.TMetafileImage.FreeHandle
+ 0001:000334F0       Graphics.TMetafileCanvas.Create
+ 0001:00033588       Graphics.TMetafileCanvas.CreateWithComment
+ 0001:000337E8       Graphics.TMetafileCanvas.Destroy
+ 0001:00033834       Graphics.TMetafile.Create
+ 0001:0003387C       Graphics.TMetafile.Destroy
+ 0001:000338AC       Graphics.TMetafile.Assign
+ 0001:00033940       Graphics.TMetafile.Draw
+ 0001:000339D0       Graphics.TMetafile.GetAuthor
+ 0001:00033A38       Graphics.TMetafile.GetDesc
+ 0001:00033AB8       Graphics.TMetafile.GetEmpty
+ 0001:00033AC0       Graphics.TMetafile.GetHandle
+ 0001:00033AD0       Graphics.TMetafile.GetHeight
+ 0001:00033B34       Graphics.TMetafile.GetMMHeight
+ 0001:00033B4C       Graphics.TMetafile.GetMMWidth
+ 0001:00033B64       Graphics.TMetafile.GetPalette
+ 0001:00033BF0       Graphics.TMetafile.GetWidth
+ 0001:00033C54       Graphics.TMetafile.LoadFromStream
+ 0001:00033CA8       Graphics.TMetafile.NewImage
+ 0001:00033CD0       Graphics.TMetafile.ReadData
+ 0001:00033D3C       Graphics.TMetafile.ReadEMFStream
+ 0001:00033E0C       Graphics.TMetafile.ReadWMFStream
+ 0001:00033F8C       Graphics.TMetafile.SaveToFile
+ 0001:00034054       Graphics.TMetafile.SaveToStream
+ 0001:00034070       Graphics.TMetafile.SetHandle
+ 0001:00034100       Graphics.TMetafile.SetHeight
+ 0001:00034174       Graphics.TMetafile.SetMMHeight
+ 0001:000341B0       Graphics.TMetafile.SetMMWidth
+ 0001:000341EC       Graphics.TMetafile.SetTransparent
+ 0001:000341F0       Graphics.TMetafile.SetWidth
+ 0001:00034264       Graphics.TMetafile.TestEMF
+ 0001:000342C4       Graphics.TMetafile.UniqueImage
+ 0001:00034348       Graphics.TMetafile.WriteData
+ 0001:000343C8       Graphics.TMetafile.WriteEMFStream
+ 0001:00034454       Graphics.TMetafile.WriteWMFStream
+ 0001:0003459C       Graphics.TMetafile.LoadFromClipboardFormat
+ 0001:00034620       Graphics.TMetafile.SaveToClipboardFormat
+ 0001:00034654       Graphics.TMetafile.ReleaseHandle
+ 0001:00034670       Graphics.TMetafile.SetSize
+ 0001:00034724       Graphics..TBitmapCanvas
+ 0001:000347C0       Graphics.FreeMemoryContexts
+ 0001:0003486C       Graphics.DeselectBitmap
+ 0001:000348E8       Graphics.TBitmapCanvas.Create
+ 0001:00034924       Graphics.TBitmapCanvas.Destroy
+ 0001:00034950       Graphics.TBitmapCanvas.FreeContext
+ 0001:000349F0       Graphics.TBitmapCanvas.CreateHandle
+ 0001:00034ADC       Graphics.TSharedImage.Reference
+ 0001:00034AE0       Graphics.TSharedImage.Release
+ 0001:00034B00       Graphics.TBitmapImage.Destroy
+ 0001:00034B5C       Graphics.TBitmapImage.FreeHandle
+ 0001:00034BA8       Graphics.UpdateDIBColorTable
+ 0001:00034C64       Graphics.FixupBitFields
+ 0001:00034CB0       Graphics.CopyBitmap
+ 0001:00035314       Graphics.CopyPalette
+ 0001:00035378       Graphics.CopyBitmapAsMask
+ 0001:00035584       Graphics.TBitmap.Create
+ 0001:000355EC       Graphics.TBitmap.Destroy
+ 0001:00035628       Graphics.TBitmap.Assign
+ 0001:00035724       Graphics.TBitmap.CopyImage
+ 0001:000357E4       Graphics.TBitmap.Changing
+ 0001:00035808       Graphics.TBitmap.Changed
+ 0001:00035814       Graphics.TBitmap.Dormant
+ 0001:00035888       Graphics.TBitmap.Draw
+ 0001:00035AD8       Graphics.TBitmap.FreeImage
+ 0001:00035B3C       Graphics.TBitmap.GetEmpty
+ 0001:00035B58       Graphics.TBitmap.GetCanvas
+ 0001:00035BA0       Graphics.TBitmap.GetHandle
+ 0001:00035BC4       Graphics.TBitmap.GetHandleType
+ 0001:00035BF0       Graphics.TBitmap.GetHeight
+ 0001:00035C00       Graphics.TBitmap.GetMaskHandle
+ 0001:00035C14       Graphics.TBitmap.GetMonochrome
+ 0001:00035C30       Graphics.TBitmap.GetPalette
+ 0001:00035C44       Graphics.TBitmap.GetTransparentColor
+ 0001:00035C8C       Graphics.TBitmap.GetWidth
+ 0001:00035C94       Graphics.TBitmap.DIBNeeded
+ 0001:00035D08       Graphics.TBitmap.FreeContext
+ 0001:00035D18       Graphics.TBitmap.HandleNeeded
+ 0001:00035DB8       Graphics.TBitmap.Mask
+ 0001:00035E9C       Graphics.TBitmap.MaskHandleNeeded
+ 0001:00035EFC       Graphics.TBitmap.PaletteNeeded
+ 0001:00035FB4       Graphics.TBitmap.LoadFromClipboardFormat
+ 0001:00036038       Graphics.TBitmap.LoadFromStream
+ 0001:0003605C       Graphics.TBitmap.LoadFromResourceName
+ 0001:000360BC       Graphics.TBitmap.NewImage
+ 0001:000361BC       Graphics.TBitmap.ReadData
+ 0001:000361E4       Graphics.TBitmap.ReadDIB
+ 0001:00036754       Graphics.TBitmap.ReadStream
+ 0001:000367C4       Graphics.TBitmap.SetHandle
+ 0001:00036888       Graphics.TBitmap.SetHandleType
+ 0001:000369C4       Graphics.TBitmap.SetHeight
+ 0001:000369E0       Graphics.TBitmap.SetMonochrome
+ 0001:00036A5C       Graphics.TBitmap.SetPalette
+ 0001:00036B30       Graphics.TBitmap.SetTransparentColor
+ 0001:00036B80       Graphics.TBitmap.SetWidth
+ 0001:00036B9C       Graphics.TBitmap.WriteData
+ 0001:00036BA4       Graphics.TBitmap.WriteStream
+ 0001:00036E5C       Graphics.TBitmap.ReleaseHandle
+ 0001:00036E90       Graphics.TBitmap.ReleasePalette
+ 0001:00036EB4       Graphics.TBitmap.SaveToStream
+ 0001:00036EBC       Graphics.TBitmap.SaveToClipboardFormat
+ 0001:00036F5C       Graphics.TBitmap.SetSize
+ 0001:00036FC0       Graphics.TIconImage.Destroy
+ 0001:00036FF0       Graphics.TIconImage.FreeHandle
+ 0001:00037008       Graphics.TIcon.Create
+ 0001:0003705C       Graphics.TIcon.Destroy
+ 0001:0003708C       Graphics.TIcon.Assign
+ 0001:000370EC       Graphics.TIcon.Draw
+ 0001:00037130       Graphics.TIcon.GetEmpty
+ 0001:00037148       Graphics.TIcon.GetHandle
+ 0001:0003715C       Graphics.TIcon.GetHeight
+ 0001:00037170       Graphics.TIcon.GetWidth
+ 0001:00037184       Graphics.TIcon.HandleNeeded
+ 0001:000371FC       Graphics.TIcon.ImageNeeded
+ 0001:000372B0       Graphics.TIcon.LoadFromStream
+ 0001:00037368       Graphics.TIcon.NewImage
+ 0001:000373DC       Graphics.TIcon.SetHandle
+ 0001:000373F4       Graphics.TIcon.SetHeight
+ 0001:0003740C       Graphics.TIcon.SetSize
+ 0001:0003742C       Graphics.TIcon.SetTransparent
+ 0001:00037430       Graphics.TIcon.SetWidth
+ 0001:00037448       Graphics.TIcon.SaveToStream
+ 0001:00037470       Graphics.TIcon.LoadFromClipboardFormat
+ 0001:00037484       Graphics.TIcon.SaveToClipboardFormat
+ 0001:00037498       Graphics.InitScreenLogPixels
+ 0001:000374D0       Graphics.GetDefFontCharSet
+ 0001:00037514       Graphics.InitDefFontData
+ 0001:00037694       Graphics..TPatternManager
+ 0001:000376F0       Graphics.TPatternManager.Create
+ 0001:00037728       Graphics.TPatternManager.Destroy
+ 0001:00037754       Graphics.TPatternManager.Lock
+ 0001:00037760       Graphics.TPatternManager.Unlock
+ 0001:0003776C       Graphics.TPatternManager.AllocPattern
+ 0001:00037820       Graphics.TPatternManager.CreateBitmap
+ 0001:00037920       Graphics.TPatternManager.FreePatterns
+ 0001:000379A0       Graphics.AllocPatternBitmap
+ 0001:000379D8       Graphics.Finalization
+ 0001:00037AAC       SyncObjs..TSynchroObject
+ 0001:00037B10       SyncObjs..TCriticalSection
+ 0001:00037B78       SyncObjs.TSynchroObject.Acquire
+ 0001:00037B7C       SyncObjs.TSynchroObject.Release
+ 0001:00037B80       SyncObjs.TCriticalSection.Create
+ 0001:00037BC0       SyncObjs.TCriticalSection.Destroy
+ 0001:00037BF0       SyncObjs.TCriticalSection.Acquire
+ 0001:00037BFC       SyncObjs.TCriticalSection.Release
+ 0001:00037C08       SyncObjs.TCriticalSection.Enter
+ 0001:00037C10       SyncObjs.TCriticalSection.Leave
+ 0001:00037C18       UxTheme.FreeThemeLibrary
+ 0001:00037DD8       UxTheme.InitThemeLibrary
+ 0001:0003853C       UxTheme.UseThemes
+ 0001:00038564       UxTheme.Finalization
+ 0001:000385B8       ShellAPI.ShellExecute
+ 0001:00038628       ShlObj.SHGetSpecialFolderPath
+ 0001:00038630       StdCtrls..TCustomGroupBox
+ 0001:000387B0       StdCtrls..TGroupBox
+ 0001:00039088       StdCtrls..TCustomLabel
+ 0001:000391C4       StdCtrls..TLabel
+ 0001:00039900       StdCtrls..TCustomEdit
+ 0001:00039ACC       StdCtrls..TEdit
+ 0001:0003A4E0       StdCtrls..TCustomMemo
+ 0001:0003A67C       StdCtrls..TMemo
+ 0001:0003B114       StdCtrls..TCustomComboBoxStrings
+ 0001:0003B22C       StdCtrls..TCustomCombo
+ 0001:0003B498       StdCtrls..TCustomComboBox
+ 0001:0003B690       StdCtrls..TComboBox
+ 0001:0003C0FC       StdCtrls..TButtonActionLink
+ 0001:0003C1F0       StdCtrls..TButtonControl
+ 0001:0003C374       StdCtrls..TButton
+ 0001:0003CB38       StdCtrls..TCustomCheckBox
+ 0001:0003CCEC       StdCtrls..TCheckBox
+ 0001:0003D4E8       StdCtrls..TRadioButton
+ 0001:0003DE68       StdCtrls..TCustomListBox
+ 0001:0003E0A4       StdCtrls..TListBox
+ 0001:0003EC78       StdCtrls..TScrollBar
+ 0001:0003F3D8       StdCtrls..TCustomStaticText
+ 0001:0003F554       StdCtrls..TStaticText
+ 0001:0003FD1C       StdCtrls.HasPopup
+ 0001:0003FD38       StdCtrls..TMemoStrings
+ 0001:0003FE3C       StdCtrls..TComboBoxStrings
+ 0001:0003FF48       StdCtrls..TListBoxStrings
+ 0001:00040050       StdCtrls.TCustomGroupBox.Create
+ 0001:000400AC       StdCtrls.TCustomGroupBox.AdjustClientRect
+ 0001:00040108       StdCtrls.TCustomGroupBox.CreateParams
+ 0001:00040118       StdCtrls.TCustomGroupBox.Paint
+ 0001:00040514       StdCtrls.TCustomGroupBox.CMDialogChar
+ 0001:00040594       StdCtrls.TCustomGroupBox.CMTextChanged
+ 0001:000405AC       StdCtrls.TCustomGroupBox.CMCtl3DChanged
+ 0001:000405CC       StdCtrls.TCustomGroupBox.WMSize
+ 0001:000405E4       StdCtrls.TCustomLabel.Create
+ 0001:0004067C       StdCtrls.TCustomLabel.GetLabelText
+ 0001:00040690       StdCtrls.TCustomLabel.DoDrawText
+ 0001:00040980       StdCtrls.TCustomLabel.Paint
+ 0001:00040A7C       StdCtrls.TCustomLabel.Loaded
+ 0001:00040A98       StdCtrls.TCustomLabel.AdjustBounds
+ 0001:00040B68       StdCtrls.TCustomLabel.SetAlignment
+ 0001:00040B88       StdCtrls.TCustomLabel.SetEllipsisPosition
+ 0001:00040BAC       StdCtrls.TCustomLabel.SetAutoSize
+ 0001:00040BD0       StdCtrls.TCustomLabel.GetTransparent
+ 0001:00040BDC       StdCtrls.TCustomLabel.SetFocusControl
+ 0001:00040BF0       StdCtrls.TCustomLabel.SetShowAccelChar
+ 0001:00040C10       StdCtrls.TCustomLabel.SetTransparent
+ 0001:00040C58       StdCtrls.TCustomLabel.SetLayout
+ 0001:00040C78       StdCtrls.TCustomLabel.SetWordWrap
+ 0001:00040CA4       StdCtrls.TCustomLabel.Notification
+ 0001:00040CD4       StdCtrls.TCustomLabel.CMTextChanged
+ 0001:00040CF0       StdCtrls.TCustomLabel.CMFontChanged
+ 0001:00040D08       StdCtrls.TCustomLabel.CMDialogChar
+ 0001:00040DA4       StdCtrls.TCustomEdit.Create
+ 0001:00040E60       StdCtrls.TCustomEdit.DoSetMaxLength
+ 0001:00040E80       StdCtrls.TCustomEdit.SetAutoSize
+ 0001:00040E94       StdCtrls.TCustomEdit.SetBorderStyle
+ 0001:00040EB8       StdCtrls.TCustomEdit.SetCharCase
+ 0001:00040ECC       StdCtrls.TCustomEdit.SetHideSelection
+ 0001:00040EE0       StdCtrls.TCustomEdit.SetMaxLength
+ 0001:00040F10       StdCtrls.TCustomEdit.SetOEMConvert
+ 0001:00040F24       StdCtrls.TCustomEdit.GetModified
+ 0001:00040F5C       StdCtrls.TCustomEdit.SetModified
+ 0001:00040F94       StdCtrls.TCustomEdit.SetPasswordChar
+ 0001:0004101C       StdCtrls.TCustomEdit.SetReadOnly
+ 0001:00041058       StdCtrls.TCustomEdit.GetSelStart
+ 0001:0004107C       StdCtrls.TCustomEdit.SetSelStart
+ 0001:0004109C       StdCtrls.TCustomEdit.GetSelLength
+ 0001:000410CC       StdCtrls.TCustomEdit.SetSelLength
+ 0001:00041130       StdCtrls.TCustomEdit.Clear
+ 0001:0004114C       StdCtrls.TCustomEdit.CopyToClipboard
+ 0001:00041168       StdCtrls.TCustomEdit.CutToClipboard
+ 0001:00041184       StdCtrls.TCustomEdit.SelectAll
+ 0001:000411A0       StdCtrls.TCustomEdit.GetSelTextBuf
+ 0001:0004123C       StdCtrls.TCustomEdit.GetSelText
+ 0001:000412D8       StdCtrls.TCustomEdit.SetSelText
+ 0001:00041300       StdCtrls.TCustomEdit.CreateParams
+ 0001:000413B8       StdCtrls.TCustomEdit.CreateWindowHandle
+ 0001:00041428       StdCtrls.TCustomEdit.CreateWnd
+ 0001:00041504       StdCtrls.TCustomEdit.DestroyWnd
+ 0001:00041540       StdCtrls.TCustomEdit.UpdateHeight
+ 0001:0004157C       StdCtrls.TCustomEdit.AdjustHeight
+ 0001:00041624       StdCtrls.TCustomEdit.Change
+ 0001:00041648       StdCtrls.TCustomEdit.DefaultHandler
+ 0001:00041680       StdCtrls.TCustomEdit.WMSetFont
+ 0001:000416C0       StdCtrls.TCustomEdit.CMCtl3DChanged
+ 0001:000416F4       StdCtrls.TCustomEdit.CMFontChanged
+ 0001:0004171C       StdCtrls.TCustomEdit.CNCommand
+ 0001:0004173C       StdCtrls.TCustomEdit.CMEnter
+ 0001:00041778       StdCtrls.TCustomEdit.CMTextChanged
+ 0001:000417B0       StdCtrls.TCustomEdit.WMContextMenu
+ 0001:000417CC       StdCtrls.TMemoStrings.GetCount
+ 0001:0004183C       StdCtrls.TMemoStrings.Get
+ 0001:00041880       StdCtrls.TMemoStrings.Put
+ 0001:000418F4       StdCtrls.TMemoStrings.Insert
+ 0001:00041A00       StdCtrls.TMemoStrings.Delete
+ 0001:00041A90       StdCtrls.TMemoStrings.Clear
+ 0001:00041AA0       StdCtrls.TMemoStrings.SetUpdateState
+ 0001:00041AF0       StdCtrls.TMemoStrings.GetTextStr
+ 0001:00041B04       StdCtrls.TMemoStrings.SetTextStr
+ 0001:00041BE8       StdCtrls.TCustomMemo.Create
+ 0001:00041C78       StdCtrls.TCustomMemo.Destroy
+ 0001:00041CA8       StdCtrls.TCustomMemo.CreateParams
+ 0001:00041D0C       StdCtrls.TCustomMemo.CreateWindowHandle
+ 0001:00041DDC       StdCtrls.TCustomMemo.GetCaretPos
+ 0001:00041E38       StdCtrls.TCustomMemo.SetCaretPos
+ 0001:00041E74       StdCtrls.TCustomMemo.GetControlsAlignment
+ 0001:00041E7C       StdCtrls.TCustomMemo.Loaded
+ 0001:00041E94       StdCtrls.TCustomMemo.SetAlignment
+ 0001:00041EA8       StdCtrls.TCustomMemo.SetLines
+ 0001:00041EB8       StdCtrls.TCustomMemo.SetScrollBars
+ 0001:00041ECC       StdCtrls.TCustomMemo.SetWordWrap
+ 0001:00041EE0       StdCtrls.TCustomMemo.WMGetDlgCode
+ 0001:00041F14       StdCtrls.TCustomMemo.WMNCDestroy
+ 0001:00041F1C       StdCtrls.TCustomMemo.KeyPress
+ 0001:00041F40       StdCtrls.TCustomComboBoxStrings.GetCount
+ 0001:00041F5C       StdCtrls.TCustomComboBoxStrings.GetObject
+ 0001:00041FEC       StdCtrls.TCustomComboBoxStrings.PutObject
+ 0001:00042010       StdCtrls.TCustomComboBoxStrings.Get
+ 0001:0004206C       StdCtrls.TCustomComboBoxStrings.Clear
+ 0001:000420DC       StdCtrls.TCustomComboBoxStrings.Delete
+ 0001:000420FC       StdCtrls.TCustomComboBoxStrings.IndexOf
+ 0001:00042124       StdCtrls.TCustomComboBoxStrings.SetUpdateState
+ 0001:00042158       StdCtrls.TComboBoxStrings.Add
+ 0001:000421DC       StdCtrls.TComboBoxStrings.Insert
+ 0001:0004225C       StdCtrls.TCustomCombo.Create
+ 0001:00042354       StdCtrls.TCustomCombo.Destroy
+ 0001:000423B0       StdCtrls.TCustomCombo.Clear
+ 0001:000423DC       StdCtrls.TCustomCombo.DestroyWindowHandle
+ 0001:00042400       StdCtrls.TCustomCombo.SelectAll
+ 0001:00042420       StdCtrls.TCustomCombo.GetDroppedDown
+ 0001:00042444       StdCtrls.TCustomCombo.SetDroppedDown
+ 0001:00042488       StdCtrls.TCustomCombo.GetItemIndex
+ 0001:000424B4       StdCtrls.TCustomCombo.SetItemIndex
+ 0001:000424F0       StdCtrls.TCustomCombo.SetSelLength
+ 0001:00042544       StdCtrls.TCustomCombo.SetMaxLength
+ 0001:00042584       StdCtrls.TCustomCombo.SetItemHeight
+ 0001:00042594       StdCtrls.TCustomCombo.WMCreate
+ 0001:000425B8       StdCtrls.TCustomCombo.WMDrawItem
+ 0001:000425C0       StdCtrls.TCustomCombo.WMMeasureItem
+ 0001:000425C8       StdCtrls.TCustomCombo.WMDeleteItem
+ 0001:000425D0       StdCtrls.TCustomCombo.WMGetDlgCode
+ 0001:000425F4       StdCtrls.TCustomCombo.CMCancelMode
+ 0001:00042608       StdCtrls.TCustomCombo.CMCtl3DChanged
+ 0001:0004262C       StdCtrls.TCustomComboBox.CMParentColorChanged
+ 0001:00042658       StdCtrls.TCustomCombo.EditWndProc
+ 0001:00042784       StdCtrls.TCustomCombo.ListWndProc
+ 0001:000427A4       StdCtrls.TCustomComboBox.SetCharCase
+ 0001:000427B8       StdCtrls.TCustomCombo.ComboWndProc
+ 0001:00042A94       StdCtrls.TCustomCombo.WndProc
+ 0001:00042BA4       StdCtrls.TCustomCombo.CNCommand
+ 0001:00042D20       StdCtrls.TCustomCombo.Change
+ 0001:00042D44       StdCtrls.TCustomComboBox.DrawItem
+ 0001:00042E00       StdCtrls.TCustomCombo.DropDown
+ 0001:00042E20       StdCtrls.TCustomCombo.Loaded
+ 0001:00042E48       StdCtrls.TCustomCombo.Focused
+ 0001:00042E88       StdCtrls.TCustomCombo.CloseUp
+ 0001:00042EA8       StdCtrls.TCustomCombo.Select
+ 0001:00042ED4       StdCtrls.TCustomCombo.CreateWnd
+ 0001:00042F0C       StdCtrls.TCustomCombo.AdjustDropDown
+ 0001:00042FC8       StdCtrls.TCustomCombo.SetItems
+ 0001:00042FEC       StdCtrls.TCustomCombo.ClearSelection
+ 0001:00042FF8       StdCtrls.TCustomCombo.CopySelection
+ 0001:00043084       StdCtrls.TCustomCombo.DeleteSelected
+ 0001:000430B0       StdCtrls.TCustomCombo.GetCount
+ 0001:000430BC       StdCtrls.TCustomCombo.SetDropDownCount
+ 0001:000430C4       StdCtrls.TCustomCombo.AddItem
+ 0001:0004311C       StdCtrls.TCustomComboBox.Create
+ 0001:000431A8       StdCtrls.TCustomComboBox.Destroy
+ 0001:000431E4       StdCtrls.TCustomComboBox.SetSorted
+ 0001:000431F8       StdCtrls.TCustomComboBox.SetStyle
+ 0001:00043238       StdCtrls.TCustomComboBox.GetItemHt
+ 0001:00043260       StdCtrls.TCustomComboBox.CreateParams
+ 0001:000432C4       StdCtrls.TCustomComboBox.CreateWnd
+ 0001:00043404       StdCtrls.TCustomComboBox.DestroyWnd
+ 0001:00043458       StdCtrls.TCustomComboBox.WMEraseBkgnd
+ 0001:000434AC       StdCtrls.HasSelectedText
+ 0001:000434F0       StdCtrls.DeleteSelectedText
+ 0001:000435B8       StdCtrls.TCustomComboBox.KeyPress
+ 0001:000439A0       StdCtrls.TCustomComboBox.SelectItem
+ 0001:00043B94       StdCtrls.TCustomComboBox.MeasureItem
+ 0001:00043BB4       StdCtrls.TCustomComboBox.CNDrawItem
+ 0001:00043C8C       StdCtrls.TCustomComboBox.CNMeasureItem
+ 0001:00043CB8       StdCtrls.TCustomComboBox.WMLButtonDown
+ 0001:00043D30       StdCtrls.TCustomComboBox.WndProc
+ 0001:00043D78       StdCtrls.TCustomComboBox.GetItemCount
+ 0001:00043D84       StdCtrls.TCustomComboBox.GetItemsClass
+ 0001:00043D8C       StdCtrls.TCustomComboBox.WMPaint
+ 0001:00043FC8       StdCtrls.TButtonActionLink.AssignClient
+ 0001:00043FEC       StdCtrls.TButtonActionLink.IsCheckedLinked
+ 0001:00044024       StdCtrls.TButtonActionLink.SetChecked
+ 0001:00044088       StdCtrls.TButtonControl.Create
+ 0001:000440DC       StdCtrls.TButtonControl.ActionChange
+ 0001:00044128       StdCtrls.TButtonControl.GetActionLinkClass
+ 0001:00044130       StdCtrls.TButtonControl.GetChecked
+ 0001:00044134       StdCtrls.TButtonControl.IsCheckedStored
+ 0001:00044154       StdCtrls.TButtonControl.SetChecked
+ 0001:00044158       StdCtrls.TButtonControl.WndProc
+ 0001:000441D0       StdCtrls.TButtonControl.CNCtlColorStatic
+ 0001:00044234       StdCtrls.TButtonControl.WMEraseBkGnd
+ 0001:00044260       StdCtrls.TButtonControl.CreateParams
+ 0001:00044284       StdCtrls.TButtonControl.SetWordWrap
+ 0001:00044298       StdCtrls.TButton.Create
+ 0001:000442FC       StdCtrls.TButton.Click
+ 0001:00044324       StdCtrls.TButton.UseRightToLeftAlignment
+ 0001:00044328       StdCtrls.TButton.SetButtonStyle
+ 0001:0004437C       StdCtrls.TButton.SetDefault
+ 0001:000443B4       StdCtrls.TButton.CreateParams
+ 0001:000443F0       StdCtrls.TButton.CreateWnd
+ 0001:0004440C       StdCtrls.TButton.CNCommand
+ 0001:00044420       StdCtrls.TButton.CMDialogKey
+ 0001:00044490       StdCtrls.TButton.CMDialogChar
+ 0001:00044514       StdCtrls.TButton.CMFocusChanged
+ 0001:00044568       StdCtrls.TButton.WMEraseBkgnd
+ 0001:00044594       StdCtrls.TButton.CNCtlColorBtn
+ 0001:000445F8       StdCtrls.TCustomCheckBox.Create
+ 0001:00044664       StdCtrls.TCustomCheckBox.GetControlsAlignment
+ 0001:00044690       StdCtrls.TCustomCheckBox.Toggle
+ 0001:000446D0       StdCtrls.TCustomCheckBox.Click
+ 0001:000446E4       StdCtrls.TCustomCheckBox.GetChecked
+ 0001:000446F0       StdCtrls.TCustomCheckBox.SetAlignment
+ 0001:00044704       StdCtrls.TCustomCheckBox.SetChecked
+ 0001:00044718       StdCtrls.TCustomCheckBox.SetState
+ 0001:00044768       StdCtrls.TCustomCheckBox.CreateParams
+ 0001:000447C0       StdCtrls.TCustomCheckBox.CreateWnd
+ 0001:000447E8       StdCtrls.TCustomCheckBox.WMSize
+ 0001:00044800       StdCtrls.TCustomCheckBox.CMCtl3DChanged
+ 0001:00044808       StdCtrls.TCustomCheckBox.CMDialogChar
+ 0001:000448A4       StdCtrls.TCustomCheckBox.CNCommand
+ 0001:000448B4       StdCtrls.TRadioButton.Create
+ 0001:00044914       StdCtrls.TRadioButton.GetChecked
+ 0001:0004491C       StdCtrls.TRadioButton.GetControlsAlignment
+ 0001:00044948       StdCtrls.TRadioButton.SetAlignment
+ 0001:0004495C       StdCtrls.TurnSiblingsOff
+ 0001:00044A18       StdCtrls.TRadioButton.SetChecked
+ 0001:00044AA4       StdCtrls.TRadioButton.CreateParams
+ 0001:00044AF8       StdCtrls.TRadioButton.CreateWnd
+ 0001:00044B20       StdCtrls.TRadioButton.CMCtl3DChanged
+ 0001:00044B28       StdCtrls.TRadioButton.CMDialogChar
+ 0001:00044BAC       StdCtrls.TRadioButton.CNCommand
+ 0001:00044BD8       StdCtrls.TListBoxStrings.GetCount
+ 0001:00044BF4       StdCtrls.TListBoxStrings.Get
+ 0001:00044CC8       StdCtrls.TListBoxStrings.GetObject
+ 0001:00044D5C       StdCtrls.TListBoxStrings.Put
+ 0001:00044DD8       StdCtrls.TListBoxStrings.PutObject
+ 0001:00044E00       StdCtrls.TListBoxStrings.Add
+ 0001:00044EA0       StdCtrls.TListBoxStrings.Insert
+ 0001:00044F38       StdCtrls.TListBoxStrings.Delete
+ 0001:00044F48       StdCtrls.TListBoxStrings.Exchange
+ 0001:000450AC       StdCtrls.TListBoxStrings.Clear
+ 0001:000450BC       StdCtrls.TListBoxStrings.SetUpdateState
+ 0001:000450F0       StdCtrls.TListBoxStrings.IndexOf
+ 0001:00045134       StdCtrls.TListBoxStrings.Move
+ 0001:00045244       StdCtrls.TCustomListBox.Create
+ 0001:00045338       StdCtrls.TCustomListBox.Destroy
+ 0001:00045380       StdCtrls.TCustomListBox.AddItem
+ 0001:00045404       StdCtrls.TCustomListBox.GetItemData
+ 0001:00045424       StdCtrls.TCustomListBox.SetItemData
+ 0001:00045448       StdCtrls.TCustomListBox.InternalGetItemData
+ 0001:00045454       StdCtrls.TCustomListBox.InternalSetItemData
+ 0001:00045464       StdCtrls.TCustomListBox.DeleteString
+ 0001:00045484       StdCtrls.TCustomListBox.ResetContent
+ 0001:000454AC       StdCtrls.TCustomListBox.SaveRecreateItems
+ 0001:000454C0       StdCtrls.TCustomListBox.Clear
+ 0001:000454CC       StdCtrls.TCustomListBox.ClearSelection
+ 0001:00045514       StdCtrls.TCustomListBox.CopySelection
+ 0001:0004563C       StdCtrls.TCustomListBox.DeleteSelected
+ 0001:000456A8       StdCtrls.TCustomListBox.SetColumnWidth
+ 0001:000456FC       StdCtrls.TCustomListBox.SetColumns
+ 0001:00045740       StdCtrls.TCustomListBox.GetItemIndex
+ 0001:00045798       StdCtrls.TCustomListBox.GetCount
+ 0001:000457BC       StdCtrls.TCustomListBox.GetSelCount
+ 0001:000457D8       StdCtrls.TCustomListBox.SetItemIndex
+ 0001:00045824       StdCtrls.TCustomListBox.SetExtendedSelect
+ 0001:00045838       StdCtrls.TCustomListBox.SetIntegralHeight
+ 0001:0004585C       StdCtrls.TCustomListBox.GetItemHeight
+ 0001:000458A0       StdCtrls.TCustomListBox.SetItemHeight
+ 0001:000458B8       StdCtrls.TCustomListBox.SetTabWidth
+ 0001:000458D4       StdCtrls.TCustomListBox.SetMultiSelect
+ 0001:000458E8       StdCtrls.TCustomListBox.GetSelected
+ 0001:00045938       StdCtrls.TCustomListBox.SetSelected
+ 0001:000459E8       StdCtrls.TCustomListBox.SetSorted
+ 0001:00045A0C       StdCtrls.TCustomListBox.SetStyle
+ 0001:00045A48       StdCtrls.TCustomListBox.GetTopIndex
+ 0001:00045A64       StdCtrls.TCustomListBox.LBGetText
+ 0001:00045B20       StdCtrls.TCustomListBox.LBGetTextLen
+ 0001:00045BC8       StdCtrls.TCustomListBox.SetBorderStyle
+ 0001:00045BDC       StdCtrls.TCustomListBox.SetTopIndex
+ 0001:00045C08       StdCtrls.TCustomListBox.SetItems
+ 0001:00045C50       StdCtrls.TCustomListBox.ItemAtPos
+ 0001:00045CDC       StdCtrls.TCustomListBox.ItemRect
+ 0001:00045D40       StdCtrls.TCustomListBox.CreateParams
+ 0001:00045E58       StdCtrls.TCustomListBox.CreateWnd
+ 0001:00045F3C       StdCtrls.TCustomListBox.DestroyWnd
+ 0001:00045FCC       StdCtrls.TCustomListBox.WndProc
+ 0001:00046034       StdCtrls.TCustomListBox.WMLButtonDown
+ 0001:000460E0       StdCtrls.TCustomListBox.CNCommand
+ 0001:00046118       StdCtrls.PaintListBox
+ 0001:00046300       StdCtrls.TCustomListBox.WMPaint
+ 0001:00046330       StdCtrls.TCustomListBox.WMSize
+ 0001:00046344       StdCtrls.TCustomListBox.DragCanceled
+ 0001:000463B0       StdCtrls.TCustomListBox.DrawItem
+ 0001:000464D4       StdCtrls.TCustomListBox.MeasureItem
+ 0001:000464F4       StdCtrls.TCustomListBox.CNDrawItem
+ 0001:000465B0       StdCtrls.TCustomListBox.CNMeasureItem
+ 0001:000465D8       StdCtrls.TCustomListBox.CMCtl3DChanged
+ 0001:00046604       StdCtrls.TCustomListBox.SelectAll
+ 0001:0004663C       StdCtrls.FindString
+ 0001:00046724       StdCtrls.TCustomListBox.KeyPress
+ 0001:00046908       StdCtrls.TCustomListBox.LoadRecreateItems
+ 0001:00046918       StdCtrls.TCustomListBox.SetCount
+ 0001:000469FC       StdCtrls.TCustomListBox.DoGetData
+ 0001:00046A1C       StdCtrls.TCustomListBox.DoGetDataObject
+ 0001:00046A44       StdCtrls.TCustomListBox.DoFindData
+ 0001:00046A68       StdCtrls.TCustomListBox.GetScrollWidth
+ 0001:00046A84       StdCtrls.TCustomListBox.SetScrollWidth
+ 0001:00046AB0       StdCtrls.TScrollBar.Create
+ 0001:00046B68       StdCtrls.TScrollBar.CreateParams
+ 0001:00046BEC       StdCtrls.TScrollBar.CreateWnd
+ 0001:00046CA8       StdCtrls.TScrollBar.NotRightToLeft
+ 0001:00046CC8       StdCtrls.TScrollBar.SetKind
+ 0001:00046D04       StdCtrls.TScrollBar.SetParams
+ 0001:00046E4C       StdCtrls.TScrollBar.SetPosition
+ 0001:00046E60       StdCtrls.TScrollBar.SetPageSize
+ 0001:00046EB8       StdCtrls.TScrollBar.SetMin
+ 0001:00046ED0       StdCtrls.TScrollBar.SetMax
+ 0001:00046EE4       StdCtrls.TScrollBar.Change
+ 0001:00046F08       StdCtrls.TScrollBar.Scroll
+ 0001:00046F28       StdCtrls.TScrollBar.DoScroll
+ 0001:00047040       StdCtrls.TScrollBar.CNHScroll
+ 0001:00047048       StdCtrls.TScrollBar.CNVScroll
+ 0001:00047050       StdCtrls.TScrollBar.CNCtlColorScrollBar
+ 0001:00047078       StdCtrls.TScrollBar.WMEraseBkgnd
+ 0001:00047080       StdCtrls.TCustomStaticText.Create
+ 0001:000470F0       StdCtrls.TCustomStaticText.CreateParams
+ 0001:0004716C       StdCtrls.TCustomStaticText.CMDialogChar
+ 0001:00047208       StdCtrls.TCustomStaticText.CMFontChanged
+ 0001:0004721C       StdCtrls.TCustomStaticText.CMTextChanged
+ 0001:0004723C       StdCtrls.TCustomStaticText.Loaded
+ 0001:00047250       StdCtrls.TCustomStaticText.AdjustBounds
+ 0001:0004734C       StdCtrls.TCustomStaticText.Notification
+ 0001:0004737C       StdCtrls.TCustomStaticText.SetAlignment
+ 0001:00047390       StdCtrls.TCustomStaticText.SetAutoSize
+ 0001:000473A8       StdCtrls.TCustomStaticText.SetBorderStyle
+ 0001:000473BC       StdCtrls.TCustomStaticText.SetFocusControl
+ 0001:000473D0       StdCtrls.TCustomStaticText.SetShowAccelChar
+ 0001:000473E4       StdCtrls.TCustomStaticText.CNCtlColorStatic
+ 0001:00047448       StdCtrls.TCustomStaticText.SetTransparent
+ 0001:00047488       StdCtrls.TCustomStaticText.GetTransparent
+ 0001:00047494       WinSpool.ClosePrinter
+ 0001:0004749C       WinSpool.DocumentProperties
+ 0001:000474A4       WinSpool.EnumPrinters
+ 0001:000474AC       WinSpool.OpenPrinter
+ 0001:000474B4       Printers..EPrinter
+ 0001:0004750C       Printers..TPrinter
+ 0001:00047574       Printers.FetchStr
+ 0001:000475A8       Printers.RaiseError
+ 0001:000475C0       Printers.AbortProc
+ 0001:000475E4       Printers..TPrinterDevice
+ 0001:00047664       Printers.TPrinterDevice.Create
+ 0001:000476C4       Printers.TPrinterDevice.IsEqual
+ 0001:00047748       Printers..TPrinterCanvas
+ 0001:00047838       Printers.TPrinterCanvas.Create
+ 0001:00047874       Printers.TPrinterCanvas.CreateHandle
+ 0001:00047898       Printers.TPrinterCanvas.Changing
+ 0001:000478B8       Printers.TPrinterCanvas.UpdateFont
+ 0001:00047900       Printers.TPrinter.Create
+ 0001:0004793C       Printers.TPrinter.Destroy
+ 0001:000479B8       Printers.TPrinter.SetState
+ 0001:00047AE8       Printers.TPrinter.CheckPrinting
+ 0001:00047B58       Printers.TPrinter.BeginDoc
+ 0001:00047BE0       Printers.TPrinter.EndDoc
+ 0001:00047C14       Printers.TPrinter.NewPage
+ 0001:00047C44       Printers.TPrinter.GetPrinter
+ 0001:00047CB0       Printers.TPrinter.SetPrinterCapabilities
+ 0001:00047CEC       Printers.TPrinter.SetPrinter
+ 0001:00047F40       Printers.TPrinter.GetCanvas
+ 0001:00047F60       Printers.TPrinter.GetHandle
+ 0001:00047F74       Printers.TPrinter.GetNumCopies
+ 0001:00047FD8       Printers.TPrinter.SetNumCopies
+ 0001:00048050       Printers.TPrinter.GetPageHeight
+ 0001:0004806C       Printers.TPrinter.GetPageWidth
+ 0001:00048088       Printers.TPrinter.GetPrinterIndex
+ 0001:000480A0       Printers.TPrinter.GetPrinters
+ 0001:000482E0       Printers.TPrinter.SetToDefaultPrinter
+ 0001:00048564       Printers.TPrinter.FreePrinters
+ 0001:000485A0       Printers.TPrinter.FreeFonts
+ 0001:000485AC       Printers.Printer
+ 0001:000485CC       Printers.Finalization
+ 0001:00048608       CommDlg.GetOpenFileName
+ 0001:00048610       CommDlg.GetSaveFileName
+ 0001:00048618       CommDlg.ChooseColor
+ 0001:00048620       CommDlg.FindText
+ 0001:00048628       CommDlg.ReplaceText
+ 0001:00048630       CommDlg.ChooseFont
+ 0001:00048638       CommDlg.PrintDlg
+ 0001:0004939C       GraphUtil.ColorRGBToHLS
+ 0001:000496BC       GraphUtil.HueToRGB
+ 0001:000497AC       GraphUtil.RoundColor
+ 0001:000497D8       GraphUtil.ColorHLSToRGB
+ 0001:000499FC       GraphUtil.ColorAdjustLuma
+ 0001:00049A88       GraphUtil.GetShadowColor
+ 0001:00049B48       GraphUtil.DrawArrow
+ 0001:00049C14       GraphUtil.GradientFillCanvas
+ 0001:00049CE4       GraphUtil.Finalization
+ 0001:00049D94       ExtCtrls..TShape
+ 0001:0004A264       ExtCtrls..TPaintBox
+ 0001:0004A7E0       ExtCtrls..TImage
+ 0001:0004AE88       ExtCtrls..TBevel
+ 0001:0004B0A8       ExtCtrls..TTimer
+ 0001:0004B1BC       ExtCtrls..TCustomPanel
+ 0001:0004B348       ExtCtrls..TPanel
+ 0001:0004BDD8       ExtCtrls..TCustomRadioGroup
+ 0001:0004BF64       ExtCtrls..TRadioGroup
+ 0001:0004C694       ExtCtrls..TSplitter
+ 0001:0004C9AC       ExtCtrls..TBoundLabel
+ 0001:0004CF98       ExtCtrls..TCustomLabeledEdit
+ 0001:0004D134       ExtCtrls.DoRect
+ 0001:0004D1F8       ExtCtrls.Frame3D
+ 0001:0004D258       ExtCtrls.TShape.Create
+ 0001:0004D2FC       ExtCtrls.TShape.Destroy
+ 0001:0004D338       ExtCtrls.TShape.Paint
+ 0001:0004D45C       ExtCtrls.TShape.StyleChanged
+ 0001:0004D46C       ExtCtrls.TShape.SetBrush
+ 0001:0004D478       ExtCtrls.TShape.SetPen
+ 0001:0004D484       ExtCtrls.TShape.SetShape
+ 0001:0004D4A4       ExtCtrls.TPaintBox.Create
+ 0001:0004D504       ExtCtrls.TPaintBox.Paint
+ 0001:0004D578       ExtCtrls.TImage.Create
+ 0001:0004D610       ExtCtrls.TImage.Destroy
+ 0001:0004D640       ExtCtrls.TImage.GetPalette
+ 0001:0004D660       ExtCtrls.TImage.DestRect
+ 0001:0004D78C       ExtCtrls.TImage.Paint
+ 0001:0004D84C       ExtCtrls.TImage.DoPaletteChange
+ 0001:0004D8E8       ExtCtrls.TImage.Progress
+ 0001:0004D954       ExtCtrls.TImage.SetCenter
+ 0001:0004D96C       ExtCtrls.TImage.SetPicture
+ 0001:0004D97C       ExtCtrls.TImage.SetStretch
+ 0001:0004D994       ExtCtrls.TImage.SetTransparent
+ 0001:0004D9AC       ExtCtrls.TImage.SetProportional
+ 0001:0004D9C4       ExtCtrls.TImage.PictureChanged
+ 0001:0004DAF0       ExtCtrls.TImage.CanAutoSize
+ 0001:0004DB58       ExtCtrls.TBevel.Create
+ 0001:0004DBC4       ExtCtrls.TBevel.SetStyle
+ 0001:0004DBE4       ExtCtrls.TBevel.SetShape
+ 0001:0004DC04       ExtCtrls.BevelRect
+ 0001:0004DCF4       ExtCtrls.BevelLine
+ 0001:0004DD34       ExtCtrls.TBevel.Paint
+ 0001:0004DFBC       ExtCtrls.TTimer.Create
+ 0001:0004E00C       ExtCtrls.TTimer.Destroy
+ 0001:0004E044       ExtCtrls.TTimer.WndProc
+ 0001:0004E0B8       ExtCtrls.TTimer.UpdateTimer
+ 0001:0004E144       ExtCtrls.TTimer.SetEnabled
+ 0001:0004E154       ExtCtrls.TTimer.SetInterval
+ 0001:0004E164       ExtCtrls.TTimer.SetOnTimer
+ 0001:0004E17C       ExtCtrls.TTimer.Timer
+ 0001:0004E190       ExtCtrls.TCustomPanel.Create
+ 0001:0004E268       ExtCtrls.TCustomPanel.CreateParams
+ 0001:0004E2BC       ExtCtrls.TCustomPanel.CMBorderChanged
+ 0001:0004E2D4       ExtCtrls.TCustomPanel.CMTextChanged
+ 0001:0004E2E0       ExtCtrls.TCustomPanel.CMCtl3DChanged
+ 0001:0004E30C       ExtCtrls.TCustomPanel.CMIsToolControl
+ 0001:0004E320       ExtCtrls.TCustomPanel.WMWindowPosChanged
+ 0001:0004E424       ExtCtrls.AdjustColors
+ 0001:0004E45C       ExtCtrls.TCustomPanel.Paint
+ 0001:0004E5EC       ExtCtrls.TCustomPanel.SetAlignment
+ 0001:0004E5FC       ExtCtrls.TCustomPanel.SetBevelInner
+ 0001:0004E618       ExtCtrls.TCustomPanel.SetBevelOuter
+ 0001:0004E634       ExtCtrls.TCustomPanel.SetBevelWidth
+ 0001:0004E650       ExtCtrls.TCustomPanel.SetBorderWidth
+ 0001:0004E66C       ExtCtrls.TCustomPanel.SetBorderStyle
+ 0001:0004E680       ExtCtrls.TCustomPanel.GetControlsAlignment
+ 0001:0004E688       ExtCtrls.TCustomPanel.AdjustClientRect
+ 0001:0004E6E0       ExtCtrls.TCustomPanel.CMDockClient
+ 0001:0004E81C       ExtCtrls.TCustomPanel.CanAutoSize
+ 0001:0004E848       ExtCtrls.TCustomPanel.SetParentBackground
+ 0001:0004E884       ExtCtrls.TCustomPanel.SetVerticalAlignment
+ 0001:0004E894       ExtCtrls..TGroupButton
+ 0001:0004EA0C       ExtCtrls.TGroupButton.InternalCreate
+ 0001:0004EA90       ExtCtrls.TGroupButton.Destroy
+ 0001:0004EAC8       ExtCtrls.TGroupButton.CNCommand
+ 0001:0004EB58       ExtCtrls.TGroupButton.KeyPress
+ 0001:0004EB98       ExtCtrls.TGroupButton.KeyDown
+ 0001:0004EBC8       ExtCtrls.TCustomRadioGroup.Create
+ 0001:0004EC58       ExtCtrls.TCustomRadioGroup.Destroy
+ 0001:0004ECA4       ExtCtrls.TCustomRadioGroup.FlipChildren
+ 0001:0004ECA8       ExtCtrls.TCustomRadioGroup.ArrangeButtons
+ 0001:0004EE40       ExtCtrls.TCustomRadioGroup.ButtonClick
+ 0001:0004EE78       ExtCtrls.TCustomRadioGroup.ItemsChange
+ 0001:0004EEB4       ExtCtrls.TCustomRadioGroup.Loaded
+ 0001:0004EEC8       ExtCtrls.TCustomRadioGroup.ReadState
+ 0001:0004EEEC       ExtCtrls.TCustomRadioGroup.SetButtonCount
+ 0001:0004EF2C       ExtCtrls.TCustomRadioGroup.SetColumns
+ 0001:0004EF64       ExtCtrls.TCustomRadioGroup.SetItemIndex
+ 0001:0004EFE0       ExtCtrls.TCustomRadioGroup.SetItems
+ 0001:0004EFF0       ExtCtrls.TCustomRadioGroup.UpdateButtons
+ 0001:0004F0CC       ExtCtrls.TCustomRadioGroup.CMEnabledChanged
+ 0001:0004F10C       ExtCtrls.TCustomRadioGroup.CMFontChanged
+ 0001:0004F120       ExtCtrls.TCustomRadioGroup.WMSize
+ 0001:0004F134       ExtCtrls.TCustomRadioGroup.CanModify
+ 0001:0004F138       ExtCtrls.TCustomRadioGroup.GetChildren
+ 0001:0004F140       ExtCtrls.TSplitter.Create
+ 0001:0004F1C4       ExtCtrls.TSplitter.Destroy
+ 0001:0004F1F4       ExtCtrls.TSplitter.AllocateLineDC
+ 0001:0004F270       ExtCtrls.TSplitter.DrawLine
+ 0001:0004F2E0       ExtCtrls.TSplitter.ReleaseLineDC
+ 0001:0004F328       ExtCtrls.TSplitter.FindControl
+ 0001:0004F41C       ExtCtrls.TSplitter.RequestAlign
+ 0001:0004F45C       ExtCtrls.TSplitter.Paint
+ 0001:0004F5B8       ExtCtrls.TSplitter.DoCanResize
+ 0001:0004F5E8       ExtCtrls.TSplitter.CanResize
+ 0001:0004F614       ExtCtrls.TSplitter.MouseDown
+ 0001:0004F7C0       ExtCtrls.TSplitter.UpdateControlSize
+ 0001:0004F944       ExtCtrls.TSplitter.CalcSplitSize
+ 0001:0004FA18       ExtCtrls.TSplitter.UpdateSize
+ 0001:0004FA30       ExtCtrls.TSplitter.MouseMove
+ 0001:0004FADC       ExtCtrls.TSplitter.MouseUp
+ 0001:0004FB30       ExtCtrls.TSplitter.FocusKeyDown
+ 0001:0004FB6C       ExtCtrls.TSplitter.SetBeveled
+ 0001:0004FB7C       ExtCtrls.TSplitter.StopSizing
+ 0001:0004FBEC       ExtCtrls.TBoundLabel.Create
+ 0001:0004FC60       ExtCtrls.TBoundLabel.AdjustBounds
+ 0001:0004FC9C       ExtCtrls.TBoundLabel.GetHeight
+ 0001:0004FCA0       ExtCtrls.TBoundLabel.GetLeft
+ 0001:0004FCA4       ExtCtrls.TBoundLabel.GetTop
+ 0001:0004FCA8       ExtCtrls.TBoundLabel.GetWidth
+ 0001:0004FCAC       ExtCtrls.TBoundLabel.SetHeight
+ 0001:0004FCDC       ExtCtrls.TBoundLabel.SetWidth
+ 0001:0004FD0C       ExtCtrls.TCustomLabeledEdit.Create
+ 0001:0004FD5C       ExtCtrls.TCustomLabeledEdit.CMBidimodechanged
+ 0001:0004FD80       ExtCtrls.TCustomLabeledEdit.CMEnabledchanged
+ 0001:0004FDA8       ExtCtrls.TCustomLabeledEdit.CMVisiblechanged
+ 0001:0004FDC8       ExtCtrls.TCustomLabeledEdit.Notification
+ 0001:0004FDF8       ExtCtrls.TCustomLabeledEdit.SetBounds
+ 0001:0004FE20       ExtCtrls.TCustomLabeledEdit.SetLabelPosition
+ 0001:0004FF2C       ExtCtrls.TCustomLabeledEdit.SetName
+ 0001:0004FFEC       ExtCtrls.TCustomLabeledEdit.SetParent
+ 0001:00050020       ExtCtrls.TCustomLabeledEdit.SetupInternalLabel
+ 0001:0005005C       ExtCtrls.Finalization
+ 0001:0005008C       Dialogs..TCommonDialog
+ 0001:00050464       Dialogs..TOpenDialog
+ 0001:00050760       Dialogs..TSaveDialog
+ 0001:000508C8       Dialogs..TColorDialog
+ 0001:00050BBC       Dialogs..TFontDialog
+ 0001:00050E38       Dialogs..TPrintDialog
+ 0001:00051128       Dialogs..TFindDialog
+ 0001:00051260       Dialogs..TReplaceDialog
+ 0001:00051374       Dialogs.CenterWindow
+ 0001:00051428       Dialogs.DialogHook
+ 0001:00051490       Dialogs..TRedirectorWindow
+ 0001:000515FC       Dialogs.TRedirectorWindow.CreateParams
+ 0001:00051620       Dialogs.TRedirectorWindow.WndProc
+ 0001:0005168C       Dialogs.TRedirectorWindow.CMRelease
+ 0001:00051694       Dialogs.TCommonDialog.Create
+ 0001:000516DC       Dialogs.TCommonDialog.Destroy
+ 0001:00051724       Dialogs.TCommonDialog.Execute
+ 0001:00051768       Dialogs.TCommonDialog.MessageHook
+ 0001:00051790       Dialogs.TCommonDialog.DefaultHandler
+ 0001:000517C8       Dialogs.TCommonDialog.MainWndProc
+ 0001:00051814       Dialogs.TCommonDialog.WndProc
+ 0001:0005181C       Dialogs.TCommonDialog.WMDestroy
+ 0001:00051834       Dialogs.TCommonDialog.WMInitDialog
+ 0001:0005184C       Dialogs.TCommonDialog.WMNCDestroy
+ 0001:00051860       Dialogs.TCommonDialog.TaskModalDialog
+ 0001:0005191C       Dialogs.TCommonDialog.DoClose
+ 0001:00051930       Dialogs.TCommonDialog.DoShow
+ 0001:00051944       Dialogs.ExplorerHook
+ 0001:000519C8       Dialogs.TOpenDialog.Create
+ 0001:00051A4C       Dialogs.TOpenDialog.Destroy
+ 0001:00051A84       Dialogs.TOpenDialog.CanClose
+ 0001:00051AB0       Dialogs.TOpenDialog.WndProc
+ 0001:00051BAC       Dialogs.TOpenDialog.DoCanClose
+ 0001:00051BD8       Dialogs.TOpenDialog.DoSelectionChange
+ 0001:00051BF8       Dialogs.TOpenDialog.DoFolderChange
+ 0001:00051C18       Dialogs.TOpenDialog.DoTypeChange
+ 0001:00051C38       Dialogs.TOpenDialog.ReadFileEditStyle
+ 0001:00051C74       Dialogs.TOpenDialog.DefineProperties
+ 0001:00051CB8       Dialogs.AllocFilterStr
+ 0001:00051D10       Dialogs.TOpenDialog.DoExecute
+ 0001:0005202C       Dialogs.ExtractFileName
+ 0001:00052074       Dialogs.ExtractFileNames
+ 0001:00052190       Dialogs.TOpenDialog.GetFileNames
+ 0001:00052258       Dialogs.TOpenDialog.GetStaticRect
+ 0001:000522AC       Dialogs.TOpenDialog.GetFileName
+ 0001:00052308       Dialogs.TOpenDialog.GetFilterIndex
+ 0001:00052318       Dialogs.TOpenDialog.SetInitialDir
+ 0001:00052374       Dialogs.TOpenDialog.Execute
+ 0001:00052394       Dialogs.TOpenDialog.DoIncludeItem
+ 0001:000523B0       Dialogs.TSaveDialog.Execute
+ 0001:000523D0       Dialogs.TColorDialog.Create
+ 0001:00052414       Dialogs.TColorDialog.Destroy
+ 0001:00052444       Dialogs.GetCustomColorsArray
+ 0001:00052510       Dialogs.SetCustomColorsArray
+ 0001:000525D8       Dialogs.TColorDialog.Execute
+ 0001:000526EC       Dialogs.TColorDialog.SetCustomColors
+ 0001:000526FC       Dialogs.FontDialogHook
+ 0001:00052740       Dialogs.TFontDialog.Create
+ 0001:00052794       Dialogs.TFontDialog.Destroy
+ 0001:000527C4       Dialogs.TFontDialog.WndProc
+ 0001:000527F8       Dialogs.TFontDialog.Apply
+ 0001:00052810       Dialogs.TFontDialog.DoApply
+ 0001:000528BC       Dialogs.TFontDialog.Execute
+ 0001:00052B14       Dialogs.TFontDialog.SetFont
+ 0001:00052B24       Dialogs.TFontDialog.UpdateFromLogFont
+ 0001:00052BD4       Dialogs.GetPrinter
+ 0001:00052CD8       Dialogs.SetPrinter
+ 0001:00052D54       Dialogs.CopyData
+ 0001:00052DEC       Dialogs.TPrintDialog.SetNumCopies
+ 0001:00052E00       Dialogs.TPrintDialog.Execute
+ 0001:00052FF4       Dialogs.CallDefWndProc
+ 0001:00053030       Dialogs.FindReplaceWndProc
+ 0001:000530E4       Dialogs.FindReplaceDialogHook
+ 0001:0005316C       Dialogs.TFindDialog.Create
+ 0001:00053218       Dialogs.TFindDialog.Destroy
+ 0001:00053254       Dialogs.TFindDialog.CloseDialog
+ 0001:0005326C       Dialogs.GetTopWindow
+ 0001:000532A8       Dialogs.TFindDialog.Execute
+ 0001:00053374       Dialogs.TFindDialog.Find
+ 0001:00053388       Dialogs.TFindDialog.GetFindText
+ 0001:000533A4       Dialogs.TFindDialog.GetLeft
+ 0001:000533BC       Dialogs.TFindDialog.GetPosition
+ 0001:000533F0       Dialogs.TFindDialog.GetReplaceText
+ 0001:0005340C       Dialogs.TFindDialog.GetTop
+ 0001:00053424       Dialogs.TFindDialog.MessageHook
+ 0001:00053508       Dialogs.TFindDialog.Replace
+ 0001:0005351C       Dialogs.TFindDialog.SetFindText
+ 0001:00053540       Dialogs.TFindDialog.SetPosition
+ 0001:0005357C       Dialogs.TFindDialog.SetReplaceText
+ 0001:000535A0       Dialogs.TReplaceDialog.Create
+ 0001:000535E0       Dialogs.GetAveCharSize
+ 0001:00053634       Dialogs..TMessageForm
+ 0001:000537BC       Dialogs.TMessageForm.CreateNew
+ 0001:00053834       Dialogs.TMessageForm.HelpButtonClick
+ 0001:0005384C       Dialogs.TMessageForm.CustomKeyDown
+ 0001:000538B8       Dialogs.TMessageForm.WriteToClipBoard
+ 0001:000539FC       Dialogs.TMessageForm.GetFormText
+ 0001:00053CA8       Dialogs.CreateMessageDialog
+ 0001:00054248       Dialogs.CreateMessageDialog
+ 0001:00054270       Dialogs.MessageDlg
+ 0001:00054290       Dialogs.MessageDlgPos
+ 0001:000542B4       Dialogs.DoMessageDlgPosHelp
+ 0001:00054350       Dialogs.MessageDlgPosHelp
+ 0001:00054388       Dialogs.ShowMessage
+ 0001:00054394       Dialogs.ShowMessagePos
+ 0001:000543AC       Dialogs.InputQuery
+ 0001:000546C8       Dialogs.InputBox
+ 0001:000546F8       Dialogs.InitGlobals
+ 0001:0005484C       Dialogs.Finalization
+ 0001:000548A8       StrUtils.AnsiReplaceStr
+ 0001:000548D8       StrUtils.AnsiReplaceText
+ 0001:00054908       StrUtils.AnsiContainsStr
+ 0001:00054920       StrUtils.ReverseString
+ 0001:00054968       StrUtils.LeftStr
+ 0001:000549D8       StrUtils.RightStr
+ 0001:00054A5C       StrUtils.PosEx
+ 0001:00054B0C       Clipbrd..TClipboard
+ 0001:00054BA4       Clipbrd.TClipboard.Clear
+ 0001:00054BE8       Clipbrd.TClipboard.Adding
+ 0001:00054C04       Clipbrd.TClipboard.Close
+ 0001:00054C30       Clipbrd.TClipboard.Open
+ 0001:00054C8C       Clipbrd.TClipboard.WndProc
+ 0001:00054CAC       Clipbrd.TClipboard.SetBuffer
+ 0001:00054D90       Clipbrd.TClipboard.SetTextBuf
+ 0001:00054DB0       Clipbrd.TClipboard.GetAsText
+ 0001:00054E30       Clipbrd.TClipboard.SetAsText
+ 0001:00054E5C       Clipbrd.TClipboard.AssignToPicture
+ 0001:00054F14       Clipbrd.TClipboard.AssignToBitmap
+ 0001:00054F7C       Clipbrd.TClipboard.AssignToMetafile
+ 0001:00054FE0       Clipbrd.TClipboard.AssignTo
+ 0001:00055048       Clipbrd.TClipboard.AssignPicture
+ 0001:000550CC       Clipbrd.TClipboard.AssignGraphic
+ 0001:00055150       Clipbrd.TClipboard.Assign
+ 0001:0005519C       Clipbrd.TClipboard.GetAsHandle
+ 0001:000551F0       Clipbrd.HasAPicture
+ 0001:00055270       Clipbrd.TClipboard.HasFormat
+ 0001:000552A8       Clipbrd.Clipboard
+ 0001:000552C8       Clipbrd.TClipboard.MainWndProc
+ 0001:00055324       Clipbrd.TClipboard.Destroy
+ 0001:00055358       Clipbrd.Finalization
+ 0001:00055394       StdActns..THintAction
+ 0001:00055488       StdActns.THintAction.Create
+ 0001:000554C4       FlatSB.FlatSB_SetScrollProp
+ 0001:000554F8       FlatSB.InitializeFlatSB
+ 0001:00055520       FlatSB.InitFlatSB
+ 0001:000557A4       FlatSB.Finalization
+ 0001:000557D4       Themes..TThemeServices
+ 0001:000559FC       Themes.ThemeServices
+ 0001:00055A1C       Themes.TThemeServices.Create
+ 0001:00055A90       Themes.TThemeServices.Destroy
+ 0001:00055AC4       Themes.TThemeServices.GetTheme
+ 0001:00055B04       Themes.TThemeServices.GetThemesEnabled
+ 0001:00055B1C       Themes.TThemeServices.DoOnThemeChange
+ 0001:00055B30       Themes.TThemeServices.UnloadThemeData
+ 0001:00055B60       Themes.TThemeServices.ApplyThemeChange
+ 0001:00055B74       Themes.TThemeServices.ContentRect
+ 0001:00055BC4       Themes.TThemeServices.DrawEdge
+ 0001:00055C10       Themes.TThemeServices.DrawElement
+ 0001:00055C54       Themes.TThemeServices.DrawIcon
+ 0001:00055C9C       Themes.TThemeServices.DrawParentBackground
+ 0001:00055D04       Themes.TThemeServices.DrawText
+ 0001:00055D6C       Themes.TThemeServices.GetElementDetails
+ 0001:00055DF0       Themes.TThemeServices.GetElementDetails
+ 0001:00055E2C       Themes.TThemeServices.GetElementDetails
+ 0001:00055EC8       Themes.TThemeServices.GetElementDetails
+ 0001:00055F18       Themes.TThemeServices.GetElementDetails
+ 0001:00056030       Themes.TThemeServices.GetElementDetails
+ 0001:000560C8       Themes.TThemeServices.GetElementDetails
+ 0001:00056454       Themes.TThemeServices.PaintBorder
+ 0001:000565C0       Themes.TThemeServices.UpdateThemes
+ 0001:000565DC       Themes.Finalization
+ 0001:0005662C       Menus..EMenuError
+ 0001:000568E0       Menus..TMenuActionLink
+ 0001:000569B8       Menus..TMenuItem
+ 0001:00056DDC       Menus..TMenu
+ 0001:00056ED8       Menus..TMainMenu
+ 0001:000571BC       Menus..TPopupMenu
+ 0001:00057460       Menus..TPopupList
+ 0001:000574CC       Menus..TMenuItemStack
+ 0001:00057564       Menus.FindPopupControl
+ 0001:00057598       Menus.ReturnAddr
+ 0001:000575A0       Menus.Error
+ 0001:000575C0       Menus.ShortCut
+ 0001:000575F8       Menus.GetSpecialName
+ 0001:0005764C       Menus.ShortCutToText
+ 0001:00057844       Menus.CompareFront
+ 0001:000578CC       Menus.TextToShortCut
+ 0001:00057A10       Menus.UniqueCommand
+ 0001:00057A30       Menus.Iterate
+ 0001:00057A94       Menus.IterateMenus
+ 0001:00057BA0       Menus.TMenuActionLink.AssignClient
+ 0001:00057BBC       Menus.TMenuActionLink.IsAutoCheckLinked
+ 0001:00057BE4       Menus.TMenuActionLink.IsCaptionLinked
+ 0001:00057C1C       Menus.TMenuActionLink.IsCheckedLinked
+ 0001:00057C4C       Menus.TMenuActionLink.IsEnabledLinked
+ 0001:00057C7C       Menus.TMenuActionLink.IsHelpContextLinked
+ 0001:00057CAC       Menus.TMenuActionLink.IsHintLinked
+ 0001:00057CE0       Menus.TMenuActionLink.IsGroupIndexLinked
+ 0001:00057D1C       Menus.TMenuActionLink.IsImageIndexLinked
+ 0001:00057D50       Menus.TMenuActionLink.IsShortCutLinked
+ 0001:00057D84       Menus.TMenuActionLink.IsVisibleLinked
+ 0001:00057DB8       Menus.TMenuActionLink.IsOnExecuteLinked
+ 0001:00057DE0       Menus.TMenuActionLink.SetAutoCheck
+ 0001:00057E00       Menus.TMenuActionLink.SetCaption
+ 0001:00057E20       Menus.TMenuActionLink.SetChecked
+ 0001:00057E40       Menus.TMenuActionLink.SetEnabled
+ 0001:00057E60       Menus.TMenuActionLink.SetHelpContext
+ 0001:00057E7C       Menus.TMenuActionLink.SetHint
+ 0001:00057EA0       Menus.TMenuActionLink.SetImageIndex
+ 0001:00057EC0       Menus.TMenuActionLink.SetShortCut
+ 0001:00057EE0       Menus.TMenuActionLink.SetVisible
+ 0001:00057F00       Menus.TMenuActionLink.SetOnExecute
+ 0001:00057F2C       Menus.TMenuItem.Create
+ 0001:00057FA8       Menus.TMenuItem.Destroy
+ 0001:0005805C       Menus.TMenuItem.AppendTo
+ 0001:000582D4       Menus.AddIn
+ 0001:000582F0       Menus.TMenuItem.PopulateMenu
+ 0001:00058360       Menus.TMenuItem.ReadShortCutText
+ 0001:000583B8       Menus.TMenuItem.MergeWith
+ 0001:000583F4       Menus.TMenuItem.Loaded
+ 0001:00058430       Menus.TMenuItem.RebuildHandle
+ 0001:00058500       Menus.TMenuItem.VerifyGroupIndex
+ 0001:00058560       Menus.TMenuItem.GetHandle
+ 0001:000585AC       Menus.TMenuItem.DefineProperties
+ 0001:000585F0       Menus.TMenuItem.DoDrawText
+ 0001:00058808       Menus.TMenuItem.DrawItem
+ 0001:00058848       Menus.NormalDraw
+ 0001:000591A8       Menus.BiDiDraw
+ 0001:00059B28       Menus.TMenuItem.AdvancedDrawItem
+ 0001:00059C80       Menus.TMenuItem.GetImageList
+ 0001:00059CB0       Menus.GetMenuSize
+ 0001:00059CFC       Menus.TMenuItem.MeasureItem
+ 0001:00059EFC       Menus.TMenuItem.HasParent
+ 0001:00059F00       Menus.TMenuItem.SetBreak
+ 0001:00059F10       Menus.TMenuItem.SetCaption
+ 0001:00059F38       Menus.TMenuItem.TurnSiblingsOff
+ 0001:00059F84       Menus.TMenuItem.SetChecked
+ 0001:00059FD8       Menus.TMenuItem.SetEnabled
+ 0001:0005A050       Menus.TMenuItem.SetGroupIndex
+ 0001:0005A094       Menus.TMenuItem.GetAction
+ 0001:0005A0A4       Menus.TMenuItem.GetActionLinkClass
+ 0001:0005A0AC       Menus.TMenuItem.GetCount
+ 0001:0005A0BC       Menus.TMenuItem.GetItem
+ 0001:0005A0E0       Menus.TMenuItem.SetShortCut
+ 0001:0005A0F4       Menus.TMenuItem.SetVisible
+ 0001:0005A104       Menus.TMenuItem.SetImageIndex
+ 0001:0005A114       Menus.TMenuItem.GetMenuIndex
+ 0001:0005A12C       Menus.TMenuItem.SetMenuIndex
+ 0001:0005A174       Menus.TMenuItem.GetChildren
+ 0001:0005A1AC       Menus.TMenuItem.SetChildOrder
+ 0001:0005A1CC       Menus.TMenuItem.SetDefault
+ 0001:0005A228       Menus.TMenuItem.InitiateAction
+ 0001:0005A238       Menus.TMenuItem.Insert
+ 0001:0005A2F0       Menus.TMenuItem.Delete
+ 0001:0005A364       Menus.TMenuItem.Click
+ 0001:0005A414       Menus.TMenuItem.IndexOf
+ 0001:0005A42C       Menus.TMenuItem.Add
+ 0001:0005A448       Menus.TMenuItem.Remove
+ 0001:0005A470       Menus.TMenuItem.MenuChanged
+ 0001:0005A4B4       Menus.TMenuItem.SubItemChanged
+ 0001:0005A50C       Menus.TMenuItem.GetBitmap
+ 0001:0005A534       Menus.TMenuItem.SetAction
+ 0001:0005A5A4       Menus.TMenuItem.SetBitmap
+ 0001:0005A5D8       Menus.TMenuItem.InitiateActions
+ 0001:0005A604       Menus.TMenuItem.GetParentComponent
+ 0001:0005A618       Menus.TMenuItem.SetParentComponent
+ 0001:0005A66C       Menus.TMenuItem.GetParentMenu
+ 0001:0005A67C       Menus.TMenuItem.SetRadioItem
+ 0001:0005A6A8       Menus.TMenuItem.ActionChange
+ 0001:0005A7CC       Menus.TMenuItem.DoActionChange
+ 0001:0005A7F0       Menus.TMenuItem.IsCaptionStored
+ 0001:0005A810       Menus.TMenuItem.IsCheckedStored
+ 0001:0005A830       Menus.TMenuItem.IsEnabledStored
+ 0001:0005A850       Menus.TMenuItem.IsHintStored
+ 0001:0005A870       Menus.TMenuItem.IsHelpContextStored
+ 0001:0005A890       Menus.TMenuItem.IsImageIndexStored
+ 0001:0005A8B0       Menus.TMenuItem.IsShortCutStored
+ 0001:0005A8D0       Menus.TMenuItem.IsVisibleStored
+ 0001:0005A8F0       Menus.TMenuItem.IsOnClickStored
+ 0001:0005A910       Menus.TMenuItem.AssignTo
+ 0001:0005A98C       Menus.TMenuItem.Notification
+ 0001:0005A9E0       Menus.TMenuItem.SetSubMenuImages
+ 0001:0005AA1C       Menus.TMenuItem.ImageListChange
+ 0001:0005AA28       Menus.UpdateItem
+ 0001:0005AA50       Menus.TMenuItem.UpdateItems
+ 0001:0005AA64       Menus.TMenuItem.Clear
+ 0001:0005AA90       Menus.IfHotkeyAvailable
+ 0001:0005AAC0       Menus.CopyToBest
+ 0001:0005AB44       Menus.InsertHotkeyFarEastFormat
+ 0001:0005ACC4       Menus.TMenuItem.InternalRethinkHotkeys
+ 0001:0005B178       Menus.TMenuItem.SetAutoHotkeys
+ 0001:0005B188       Menus.TMenuItem.IsLine
+ 0001:0005B1AC       Menus.TMenuItem.InternalRethinkLines
+ 0001:0005B2F4       Menus.TMenuItem.SetAutoLineReduction
+ 0001:0005B304       Menus.TMenuItem.GetAutoHotkeys
+ 0001:0005B334       Menus.TMenuItem.GetAutoLineReduction
+ 0001:0005B364       Menus.TMenu.Create
+ 0001:0005B400       Menus.TMenu.CreateMenuItem
+ 0001:0005B410       Menus.TMenu.Destroy
+ 0001:0005B448       Menus.TMenu.GetChildren
+ 0001:0005B464       Menus.TMenu.GetHandle
+ 0001:0005B470       Menus.TMenu.SetChildOrder
+ 0001:0005B484       Menus.UpdateItem
+ 0001:0005B4AC       Menus.TMenu.UpdateItems
+ 0001:0005B4C4       Menus.Find
+ 0001:0005B55C       Menus.TMenu.FindItem
+ 0001:0005B58C       Menus.TMenu.GetHelpContext
+ 0001:0005B5FC       Menus.TMenu.DispatchCommand
+ 0001:0005B618       Menus.TMenu.DispatchPopup
+ 0001:0005B6E0       Menus.TMenu.IsOwnerDraw
+ 0001:0005B6F4       Menus.GetAltGRStatus
+ 0001:0005B898       Menus.IsAltGRPressed
+ 0001:0005B8D4       Menus.ShortCutFromMessage
+ 0001:0005B924       Menus.NthParentOf
+ 0001:0005B934       Menus.DoClick
+ 0001:0005BA88       Menus.TMenu.IsShortCut
+ 0001:0005BB7C       Menus.TMenu.IsBiDiModeStored
+ 0001:0005BB84       Menus.TMenu.DoBiDiModeChanged
+ 0001:0005BC40       Menus.BuildImage
+ 0001:0005BCEC       Menus.TMenu.UpdateImage
+ 0001:0005BD70       Menus.TMenu.SetOwnerDraw
+ 0001:0005BD80       Menus.TMenu.AdjustBiDiBehavior
+ 0001:0005BE00       Menus.TMenu.SetWindowHandle
+ 0001:0005BE38       Menus.TMenu.DoChange
+ 0001:0005BE50       Menus.TMenu.Loaded
+ 0001:0005BE68       Menus.TMenu.MenuChanged
+ 0001:0005BEA4       Menus.TMenu.ImageListChange
+ 0001:0005BEB0       Menus.TMenu.SetImages
+ 0001:0005BEEC       Menus.TMenu.Notification
+ 0001:0005BF18       Menus.TMenu.IsRightToLeft
+ 0001:0005BF30       Menus.IsAccelChar
+ 0001:0005BF8C       Menus.IsInitialChar
+ 0001:0005C0CC       Menus.TMenu.ProcessMenuChar
+ 0001:0005C248       Menus.TMenu.DoGetMenuString
+ 0001:0005C2F0       Menus.TMenu.SetBiDiMode
+ 0001:0005C304       Menus.TMenu.SetParentBiDiMode
+ 0001:0005C314       Menus.TMenu.ParentBiDiModeChanged
+ 0001:0005C33C       Menus.TMenu.ParentBiDiModeChanged
+ 0001:0005C368       Menus.TMenu.GetAutoHotkeys
+ 0001:0005C378       Menus.TMenu.SetAutoHotkeys
+ 0001:0005C38C       Menus.TMenu.GetAutoLineReduction
+ 0001:0005C39C       Menus.TMenu.SetAutoLineReduction
+ 0001:0005C3B0       Menus.TMainMenu.SetAutoMerge
+ 0001:0005C3D0       Menus.TMainMenu.MenuChanged
+ 0001:0005C42C       Menus.TMainMenu.Merge
+ 0001:0005C448       Menus.TMainMenu.Unmerge
+ 0001:0005C464       Menus.TMainMenu.ItemChanged
+ 0001:0005C490       Menus.TMainMenu.GetHandle
+ 0001:0005C4A0       Menus.AddOle2
+ 0001:0005C4EC       Menus.TMainMenu.PopulateOle2Menu
+ 0001:0005C53C       Menus.TMainMenu.SetOle2MenuHandle
+ 0001:0005C548       Menus.TPopupList.MainWndProc
+ 0001:0005C594       Menus.TPopupList.WndProc
+ 0001:0005CAD8       Menus.TPopupList.Add
+ 0001:0005CB00       Menus.TPopupList.Remove
+ 0001:0005CB1C       Menus.TPopupMenu.Create
+ 0001:0005CB90       Menus.TPopupMenu.Destroy
+ 0001:0005CBC4       Menus.TPopupMenu.DoPopup
+ 0001:0005CBD8       Menus.TPopupMenu.GetHelpContext
+ 0001:0005CBE0       Menus.TPopupMenu.SetHelpContext
+ 0001:0005CBE8       Menus.TPopupMenu.SetBiDiModeFromPopupControl
+ 0001:0005CC34       Menus.TPopupMenu.UseRightToLeftAlignment
+ 0001:0005CC80       Menus.TPopupMenu.Popup
+ 0001:0005CD30       Menus.TPopupMenu.SetPopupPoint
+ 0001:0005CD50       Menus.TMenuItemStack.ClearItem
+ 0001:0005CD8C       Menus.DrawMenuItem
+ 0001:0005CE74       Menus.StripHotkey
+ 0001:0005CF64       Menus.GetHotkey
+ 0001:0005CFCC       Menus.AnsiSameCaption
+ 0001:0005D114       Menus.Finalization
+ 0001:0005D214       Controls..TDragObject
+ 0001:0005D2B8       Controls..TBaseDragControlObject
+ 0001:0005D37C       Controls..TDragControlObject
+ 0001:0005D408       Controls..TDragControlObjectEx
+ 0001:0005D498       Controls..TDragDockObject
+ 0001:0005D560       Controls..TDragDockObjectEx
+ 0001:0005D600       Controls..TControlCanvas
+ 0001:0005D6A0       Controls..TCustomControlAction
+ 0001:0005D788       Controls..TControlActionLink
+ 0001:0005DA98       Controls..TSizeConstraints
+ 0001:0005DBE4       Controls..TMargins
+ 0001:0005DCFC       Controls..TPadding
+ 0001:0005E650       Controls..TControl
+ 0001:0005EAC0       Controls..TWinControlActionLink
+ 0001:0005EEE4       Controls..TWinControl
+ 0001:0005F2F4       Controls..TGraphicControl
+ 0001:0005F418       Controls..TCustomControl
+ 0001:0005F584       Controls..THintWindow
+ 0001:0005F714       Controls..TDragImageList
+ 0001:0005F7E0       Controls..TImageList
+ 0001:0005FA00       Controls..TDockZone
+ 0001:0005FB4C       Controls..TDockTree
+ 0001:0005FBF0       Controls..TMouse
+ 0001:0005FC44       Controls..TCustomListControl
+ 0001:0005FDD4       Controls..TCustomMultiSelectListControl
+ 0001:0005FF80       Controls.ChangeBiDiModeAlignment
+ 0001:0005FF94       Controls.InitWndProc
+ 0001:000600A4       Controls.ObjectFromHWnd
+ 0001:000600D8       Controls.FindControl
+ 0001:00060134       Controls.IsVCLControl
+ 0001:00060164       Controls.SendAppMessage
+ 0001:00060328       Controls.CursorToIdent
+ 0001:00060338       Controls.IdentToCursor
+ 0001:00060348       Controls.GetShortHint
+ 0001:0006038C       Controls.GetLongHint
+ 0001:000603D0       Controls.PerformEraseBackground
+ 0001:00060424       Controls.GetCaptureControl
+ 0001:0006044C       Controls.SetCaptureControl
+ 0001:00060490       Controls..TSiteList
+ 0001:000604F8       Controls.TSiteList.Find
+ 0001:00060530       Controls.GetTopParent
+ 0001:0006055C       Controls.TSiteList.AddSite
+ 0001:000605E0       Controls.TSiteList.Clear
+ 0001:00060614       Controls.TSiteList.GetTopSite
+ 0001:00060678       Controls.TDragObject.Assign
+ 0001:000606B8       Controls.TDragObject.Capture
+ 0001:000606D0       Controls.TDragObject.Finished
+ 0001:000606D8       Controls.TDragObject.GetName
+ 0001:00060700       Controls.TDragObject.ReleaseCapture
+ 0001:00060714       Controls.TDragObject.WndProc
+ 0001:00060844       Controls.TDragObject.GetDragImages
+ 0001:00060848       Controls.TDragObject.GetDragCursor
+ 0001:00060860       Controls.TDragObject.HideDragImage
+ 0001:00060864       Controls.TDragObject.Instance
+ 0001:0006086C       Controls.TDragObject.ShowDragImage
+ 0001:00060870       Controls.TDragObject.MainWndProc
+ 0001:000608BC       Controls.TDragObject.BeforeDestruction
+ 0001:000608CC       Controls.TDragObject.AfterConstruction
+ 0001:000608DC       Controls.TBaseDragControlObject.Create
+ 0001:00060900       Controls.TBaseDragControlObject.Assign
+ 0001:0006092C       Controls.TBaseDragControlObject.EndDrag
+ 0001:00060950       Controls.TBaseDragControlObject.Finished
+ 0001:00060984       Controls.TDragControlObject.GetDragCursor
+ 0001:0006099C       Controls.TDragControlObject.GetDragImages
+ 0001:000609A8       Controls.TDragControlObject.HideDragImage
+ 0001:000609C8       Controls.TDragControlObject.ShowDragImage
+ 0001:000609E8       Controls.TDragControlObjectEx.BeforeDestruction
+ 0001:000609EC       Controls.TDragDockObject.Create
+ 0001:00060A54       Controls.TDragDockObject.Destroy
+ 0001:00060A84       Controls.TDragDockObject.Assign
+ 0001:00060AE4       Controls.TDragDockObject.EndDrag
+ 0001:00060B00       Controls.AbsMin
+ 0001:00060B24       Controls.TDragDockObject.AdjustDockRect
+ 0001:00060BA0       Controls.TDragDockObject.DrawDragDockImage
+ 0001:00060BB4       Controls.TDragDockObject.EraseDragDockImage
+ 0001:00060BC8       Controls.TDragDockObject.GetDragCursor
+ 0001:00060BD4       Controls.TDragDockObject.GetEraseWhenMoving
+ 0001:00060BD8       Controls.TDragDockObject.GetFrameWidth
+ 0001:00060BE0       Controls.TDragDockObjectEx.BeforeDestruction
+ 0001:00060BE4       Controls.IsBeforeTargetWindow
+ 0001:00060C50       Controls.ValidDockTarget
+ 0001:00060DEC       Controls.IsSiteChildOfClient
+ 0001:00060E30       Controls.GetDockSiteAtPos
+ 0001:00060F84       Controls.RegisterDockSite
+ 0001:00060FE0       Controls.DragMessage
+ 0001:00061038       Controls.IsDelphiHandle
+ 0001:00061098       Controls.DragFindWindow
+ 0001:000610C4       Controls.DragFindTarget
+ 0001:00061114       Controls.DoDragOver
+ 0001:00061150       Controls.GetDropCtl
+ 0001:000611F0       Controls.DragTo
+ 0001:000614D8       Controls.DragInit
+ 0001:00061648       Controls.DragInitControl
+ 0001:0006180C       Controls.CheckUndock
+ 0001:00061880       Controls.DragDone
+ 0001:00061BA4       Controls.CancelDrag
+ 0001:00061BBC       Controls.FindVCLWindow
+ 0001:00061BF0       Controls.FindDragTarget
+ 0001:00061C3C       Controls.ListAdd
+ 0001:00061C64       Controls.ListRemove
+ 0001:00061C84       Controls.MoveWindowOrg
+ 0001:00061CB4       Controls.FreeDeviceContext
+ 0001:00061D70       Controls.FreeDeviceContexts
+ 0001:00061E1C       Controls.TControlCanvas.Destroy
+ 0001:00061E48       Controls.TControlCanvas.CreateHandle
+ 0001:00061EF0       Controls.TControlCanvas.FreeHandle
+ 0001:00061F24       Controls.TControlCanvas.SetControl
+ 0001:00061F3C       Controls.TControlCanvas.UpdateTextFlags
+ 0001:00061F68       Controls.TSizeConstraints.Create
+ 0001:00061FA4       Controls.TSizeConstraints.AssignTo
+ 0001:00061FEC       Controls.TSizeConstraints.SetConstraints
+ 0001:00062078       Controls.TSizeConstraints.Change
+ 0001:0006208C       Controls.TControlActionLink.AssignClient
+ 0001:000620A8       Controls.TControlActionLink.DoShowHint
+ 0001:00062198       Controls.TControlActionLink.IsCaptionLinked
+ 0001:0006220C       Controls.TControlActionLink.IsDropdownMenuLinked
+ 0001:00062220       Controls.TControlActionLink.IsEnabledLinked
+ 0001:00062254       Controls.TControlActionLink.IsEnableDropdownLinked
+ 0001:00062268       Controls.TControlActionLink.IsHintLinked
+ 0001:000622A0       Controls.TControlActionLink.IsPopupMenuLinked
+ 0001:000622E0       Controls.TControlActionLink.IsVisibleLinked
+ 0001:00062314       Controls.TControlActionLink.IsOnExecuteLinked
+ 0001:0006233C       Controls.TControlActionLink.SetCaption
+ 0001:0006235C       Controls.TControlActionLink.SetDropdownMenu
+ 0001:00062360       Controls.TControlActionLink.SetEnabled
+ 0001:00062380       Controls.TControlActionLink.SetEnableDropdown
+ 0001:00062384       Controls.TControlActionLink.SetHint
+ 0001:000623A8       Controls.TControlActionLink.SetVisible
+ 0001:000623C8       Controls.TControlActionLink.SetOnExecute
+ 0001:000623F4       Controls.TControlActionLink.IsHelpLinked
+ 0001:0006245C       Controls.TControlActionLink.SetHelpKeyword
+ 0001:0006247C       Controls.TControlActionLink.SetHelpContext
+ 0001:0006249C       Controls.TControlActionLink.SetHelpType
+ 0001:000624BC       Controls.TControlActionLink.SetPopupMenu
+ 0001:000624E0       Controls.TControl.Create
+ 0001:000625D8       Controls.TControl.Destroy
+ 0001:000626A0       Controls.TControl.GetDragImages
+ 0001:000626A4       Controls.TControl.GetEnabled
+ 0001:000626AC       Controls.TControl.GetPalette
+ 0001:000626B0       Controls.TControl.HasParent
+ 0001:000626B8       Controls.TControl.GetParentComponent
+ 0001:000626BC       Controls.TControl.SetParentComponent
+ 0001:000626E4       Controls.TControl.PaletteChanged
+ 0001:00062760       Controls.TControl.GetAction
+ 0001:00062770       Controls.TControl.SetAnchors
+ 0001:00062810       Controls.TControl.SetAction
+ 0001:0006288C       Controls.TControl.IsAnchorsStored
+ 0001:000628A4       Controls.TControl.SetDesignVisible
+ 0001:000628DC       Controls.TControl.SetDragMode
+ 0001:000628E0       Controls.TControl.RequestAlign
+ 0001:000628F0       Controls.TControl.Resize
+ 0001:00062910       Controls.TControl.ReadState
+ 0001:000629A4       Controls.TControl.Notification
+ 0001:000629FC       Controls.TControl.SetAlign
+ 0001:00062AE4       Controls.TControl.SetBounds
+ 0001:00062B84       Controls.TControl.UpdateAnchorRules
+ 0001:00062D08       Controls.TControl.SetLeft
+ 0001:00062D3C       Controls.TControl.SetTop
+ 0001:00062D70       Controls.TControl.SetWidth
+ 0001:00062DA4       Controls.TControl.SetHeight
+ 0001:00062DD8       Controls.TControl.Dock
+ 0001:00062F08       Controls.TControl.DoDock
+ 0001:00062F60       Controls.TControl.SetHelpContext
+ 0001:00062F74       Controls.TControl.SetHelpKeyword
+ 0001:00062F98       Controls.TControl.SetHostDockSite
+ 0001:00062FC0       Controls.TControl.GetBoundsRect
+ 0001:00062FE0       Controls.TControl.SetBoundsRect
+ 0001:00063004       Controls.TControl.GetClientRect
+ 0001:0006301C       Controls.TControl.GetClientWidth
+ 0001:00063034       Controls.TControl.SetClientWidth
+ 0001:00063060       Controls.TControl.GetClientHeight
+ 0001:00063078       Controls.TControl.SetClientHeight
+ 0001:000630A0       Controls.TControl.GetClientOrigin
+ 0001:00063130       Controls.TControl.ClientToScreen
+ 0001:0006315C       Controls.TControl.ScaleConstraints
+ 0001:000631E0       Controls.TControl.ScreenToClient
+ 0001:0006320C       Controls.TControl.SendCancelMode
+ 0001:0006323C       Controls.TControl.SendDockNotification
+ 0001:000632A8       Controls.TControl.Changed
+ 0001:000632B8       Controls.TControl.ChangeScale
+ 0001:0006347C       Controls.TControl.SetAutoSize
+ 0001:00063498       Controls.TControl.SetName
+ 0001:0006353C       Controls.TControl.SetClientSize
+ 0001:00063584       Controls.TControl.SetParent
+ 0001:000635D0       Controls.TControl.SetVisible
+ 0001:00063608       Controls.TControl.SetEnabled
+ 0001:00063620       Controls.TControl.GetTextLen
+ 0001:00063630       Controls.TControl.GetTextBuf
+ 0001:0006363C       Controls.TControl.GetUndockHeight
+ 0001:00063650       Controls.TControl.GetUndockWidth
+ 0001:00063664       Controls.TControl.SetPopupMenu
+ 0001:0006368C       Controls.TControl.SetTextBuf
+ 0001:000636B0       Controls.TControl.GetText
+ 0001:000636E0       Controls.TControl.SetText
+ 0001:00063744       Controls.TControl.SetBiDiMode
+ 0001:00063760       Controls.TControl.FontChanged
+ 0001:000637A4       Controls.TControl.SetFont
+ 0001:000637B4       Controls.TControl.IsFontStored
+ 0001:000637C8       Controls.TControl.IsShowHintStored
+ 0001:000637D4       Controls.TControl.IsBiDiModeStored
+ 0001:000637DC       Controls.TControl.SetParentFont
+ 0001:00063800       Controls.TControl.SetShowHint
+ 0001:00063824       Controls.TControl.SetParentShowHint
+ 0001:00063850       Controls.TControl.SetColor
+ 0001:0006386C       Controls.TControl.IsColorStored
+ 0001:00063874       Controls.TControl.SetParentColor
+ 0001:00063898       Controls.TControl.SetParentBiDiMode
+ 0001:000638BC       Controls.TControl.SetCursor
+ 0001:000638D8       Controls.TControl.GetMouseCapture
+ 0001:000638E8       Controls.TControl.SetMouseCapture
+ 0001:00063910       Controls.TControl.BringToFront
+ 0001:00063924       Controls.TControl.SendToBack
+ 0001:00063938       Controls.TControl.SetZOrderPosition
+ 0001:000639C0       Controls.TControl.SetZOrder
+ 0001:000639E4       Controls.TControl.GetDeviceContext
+ 0001:00063A8C       Controls.BackgroundClipped
+ 0001:00063B18       Controls.TControl.InvalidateControl
+ 0001:00063BA4       Controls.TControl.Invalidate
+ 0001:00063BB8       Controls.TControl.MouseActivate
+ 0001:00063C00       Controls.TControl.MouseWheelHandler
+ 0001:00063C78       Controls.TControl.Hide
+ 0001:00063C80       Controls.TControl.Show
+ 0001:00063CB0       Controls.TControl.Update
+ 0001:00063CC4       Controls.TControl.Refresh
+ 0001:00063CD0       Controls.TControl.Repaint
+ 0001:00063DCC       Controls.TControl.GetControlsAlignment
+ 0001:00063DD0       Controls.TControl.IsRightToLeft
+ 0001:00063DE8       Controls.TControl.UseRightToLeftReading
+ 0001:00063E00       Controls.TControl.UseRightToLeftAlignment
+ 0001:00063E18       Controls.TControl.UseRightToLeftScrollBar
+ 0001:00063E34       Controls.TControl.BeginAutoDrag
+ 0001:00063E50       Controls.TControl.BeginDrag
+ 0001:00063F3C       Controls.TControl.EndDrag
+ 0001:00063F70       Controls.TControl.DragCanceled
+ 0001:00063F74       Controls.TControl.Dragging
+ 0001:00063F80       Controls.TControl.DragOver
+ 0001:00063FBC       Controls.TControl.DragDrop
+ 0001:00063FE8       Controls.TControl.DoStartDrag
+ 0001:00064008       Controls.TControl.DoEndDrag
+ 0001:00064034       Controls.TControl.PositionDockRect
+ 0001:00064108       Controls.TControl.DockTrackNoTarget
+ 0001:00064120       Controls.TControl.DoEndDock
+ 0001:0006414C       Controls.TControl.DoStartDock
+ 0001:0006416C       Controls.TControl.DoMouseActivate
+ 0001:000641A0       Controls.TControl.DoMouseWheel
+ 0001:00064274       Controls.TControl.DoMouseWheelDown
+ 0001:000642C0       Controls.TControl.DoMouseWheelUp
+ 0001:0006430C       Controls.TControl.DefaultDockImage
+ 0001:00064438       Controls.TControl.DrawDragDockImage
+ 0001:00064448       Controls.TControl.EraseDragDockImage
+ 0001:00064458       Controls.TControl.DoDragMsg
+ 0001:00064548       Controls.TControl.ManualDock
+ 0001:00064728       Controls.TControl.ManualFloat
+ 0001:000647BC       Controls.TControl.DoConstraintsChange
+ 0001:000647CC       Controls.TControl.CanAutoSize
+ 0001:000647D0       Controls.TControl.CanResize
+ 0001:00064800       Controls.TControl.DoCanAutoSize
+ 0001:0006486C       Controls.TControl.DoCanResize
+ 0001:0006489C       Controls.TControl.ConstrainedResize
+ 0001:000648CC       Controls.TControl.CalcCursorPos
+ 0001:000648F8       Controls.TControl.DesignWndProc
+ 0001:0006492C       Controls.TControl.DoConstrainedResize
+ 0001:00064A00       Controls.TControl.Perform
+ 0001:00064A34       Controls.TControl.CalcDockSizes
+ 0001:00064AA8       Controls.TControl.UpdateBoundsRect
+ 0001:00064AD8       Controls.TControl.VisibleChanging
+ 0001:00064ADC       Controls.TControl.WndProc
+ 0001:00064DAC       Controls.TControl.DefaultHandler
+ 0001:00064E34       Controls.TControl.ReadIsControl
+ 0001:00064E48       Controls.TControl.WriteIsControl
+ 0001:00064E54       Controls.DoWriteIsControl
+ 0001:00064E88       Controls.DoWriteExplicit
+ 0001:000650A8       Controls.TControl.DefineProperties
+ 0001:00065238       Controls.TControl.Click
+ 0001:000652A4       Controls.TControl.DblClick
+ 0001:000652C4       Controls.TControl.MouseDown
+ 0001:000652FC       Controls.TControl.DoMouseDown
+ 0001:00065380       Controls.TControl.WMLButtonDown
+ 0001:000653CC       Controls.TControl.WMNCLButtonDown
+ 0001:000653E8       Controls.TControl.WMLButtonDblClk
+ 0001:0006543C       Controls.TControl.GetPopupMenu
+ 0001:00065444       Controls.TControl.CheckNewSize
+ 0001:000654E0       Controls.TControl.WMRButtonDown
+ 0001:0006550C       Controls.TControl.WMRButtonDblClk
+ 0001:00065538       Controls.TControl.WMMButtonDown
+ 0001:00065564       Controls.TControl.WMMButtonDblClk
+ 0001:00065590       Controls.TControl.MouseMove
+ 0001:000655C4       Controls.TControl.WMMouseMove
+ 0001:0006563C       Controls.TControl.MouseUp
+ 0001:00065674       Controls.TControl.DoMouseUp
+ 0001:000656AC       Controls.TControl.WMLButtonUp
+ 0001:00065730       Controls.TControl.WMRButtonUp
+ 0001:00065750       Controls.TControl.WMMButtonUp
+ 0001:00065770       Controls.TControl.WMMouseWheel
+ 0001:000657C8       Controls.TControl.WMCancelMode
+ 0001:00065808       Controls.TControl.WMWindowPosChanged
+ 0001:000658B8       Controls.TControl.CMVisibleChanged
+ 0001:000658E0       Controls.TControl.CMEnabledChanged
+ 0001:000658F0       Controls.TControl.CMFontChanged
+ 0001:00065900       Controls.TControl.CMColorChanged
+ 0001:00065910       Controls.TControl.CMParentColorChanged
+ 0001:00065940       Controls.TControl.CMParentBiDiModeChanged
+ 0001:00065964       Controls.TControl.CMMouseWheel
+ 0001:000659D4       Controls.TControl.CMBiDiModeChanged
+ 0001:000659F4       Controls.TControl.CMParentShowHintChanged
+ 0001:00065A30       Controls.TControl.CMParentFontChanged
+ 0001:00065A60       Controls.TControl.CMSysFontChanged
+ 0001:00065A84       Controls.TControl.CMHitTest
+ 0001:00065A8C       Controls.TControl.CMMouseEnter
+ 0001:00065AC8       Controls.TControl.CMMouseLeave
+ 0001:00065B04       Controls.TControl.CMDesignHitTest
+ 0001:00065B0C       Controls.TControl.CreateFloatingDockSite
+ 0001:00065B90       Controls.UpdateFloatingDockSitePos
+ 0001:00065C1C       Controls.TControl.CMFloat
+ 0001:00065C7C       Controls.TControl.ActionChange
+ 0001:00065D7C       Controls.TControl.DoActionChange
+ 0001:00065DA0       Controls.TControl.GetActionLinkClass
+ 0001:00065DA8       Controls.TControl.IsCaptionStored
+ 0001:00065DC8       Controls.TControl.IsEnabledStored
+ 0001:00065DE8       Controls.TControl.IsHintStored
+ 0001:00065E08       Controls.TControl.IsHelpContextStored
+ 0001:00065E28       Controls.TControl.IsVisibleStored
+ 0001:00065E48       Controls.TControl.IsOnClickStored
+ 0001:00065E68       Controls.TControl.Loaded
+ 0001:00065EA0       Controls.TControl.AssignTo
+ 0001:00065F4C       Controls.MinVar
+ 0001:00065F88       Controls.TControl.GetDockEdge
+ 0001:00066038       Controls.TControl.GetFloating
+ 0001:00066064       Controls.TControl.GetFloatingDockSiteClass
+ 0001:0006606C       Controls.TControl.AdjustSize
+ 0001:0006608C       Controls.TControl.DrawTextBiDiModeFlags
+ 0001:000660CC       Controls.TControl.DrawTextBiDiModeFlagsReadingOnly
+ 0001:000660E8       Controls.TControl.InitiateAction
+ 0001:000660F8       Controls.TControl.CMHintShow
+ 0001:00066128       Controls.TControl.WMContextMenu
+ 0001:0006626C       Controls.TControl.DoContextPopup
+ 0001:000662A0       Controls.TControl.SetConstraints
+ 0001:000662AC       Controls.TControl.ClientToParent
+ 0001:000663BC       Controls.TControl.CMMouseActivate
+ 0001:000663E0       Controls.TControl.DoMarginChange
+ 0001:000663E8       Controls.TControl.SetMargins
+ 0001:000663F4       Controls.TControl.GetAlignWithMargins
+ 0001:000663FC       Controls.TControl.SetAlignWithMargins
+ 0001:0006642C       Controls.TControl.UpdateExplicitBounds
+ 0001:00066460       Controls.TControl.WriteExplicitTop
+ 0001:00066470       Controls.TControl.WriteExplicitHeight
+ 0001:00066480       Controls.TControl.WriteExplicitLeft
+ 0001:00066490       Controls.TControl.ReadExplicitWidth
+ 0001:000664A8       Controls.TControl.WriteExplicitWidth
+ 0001:000664B8       Controls.TControl.ReadExplicitTop
+ 0001:000664D0       Controls.TControl.ReadExplicitHeight
+ 0001:000664E8       Controls.TControl.ReadExplicitLeft
+ 0001:00066500       Controls.TWinControlActionLink.AssignClient
+ 0001:00066524       Controls.TWinControlActionLink.IsHelpContextLinked
+ 0001:0006652C       Controls.TWinControlActionLink.SetHelpContext
+ 0001:00066534       Controls.TWinControl.Create
+ 0001:00066678       Controls.TWinControl.Destroy
+ 0001:00066758       Controls.TWinControl.FixupTabList
+ 0001:0006682C       Controls.TWinControl.ReadState
+ 0001:000668A4       Controls.TWinControl.AdjustClientRect
+ 0001:000668D4       Controls.TWinControl.ArrangeControl
+ 0001:00066CB4       Controls.GetClientSize
+ 0001:00066D14       Controls.InsertBefore
+ 0001:00066E44       Controls.DoPosition
+ 0001:00066E8C       Controls.DoAlign
+ 0001:00067018       Controls.AlignWork
+ 0001:0006706C       Controls.TWinControl.AlignControls
+ 0001:00067170       Controls.TWinControl.AlignControl
+ 0001:00067204       Controls.TWinControl.DisableAlign
+ 0001:0006720C       Controls.TWinControl.EnableAlign
+ 0001:0006722C       Controls.TWinControl.Realign
+ 0001:00067234       Controls.TWinControl.DoFlipChildren
+ 0001:00067308       Controls.TWinControl.FlipChildren
+ 0001:00067450       Controls.TWinControl.ContainsControl
+ 0001:00067464       Controls.TWinControl.RemoveFocus
+ 0001:00067484       Controls.TWinControl.Insert
+ 0001:000674D0       Controls.TWinControl.Remove
+ 0001:00067518       Controls.TWinControl.InsertControl
+ 0001:0006760C       Controls.TWinControl.RemoveControl
+ 0001:000676AC       Controls.TWinControl.GetControl
+ 0001:000676E8       Controls.TWinControl.GetControlCount
+ 0001:00067708       Controls.TWinControl.Broadcast
+ 0001:00067748       Controls.TWinControl.Notification
+ 0001:00067778       Controls.TWinControl.NotifyControls
+ 0001:000677A0       Controls.TWinControl.CreateSubClass
+ 0001:0006780C       Controls.TWinControl.AddBiDiModeExStyle
+ 0001:00067874       Controls.TWinControl.CreateParams
+ 0001:000679A0       Controls.TWinControl.CreateWnd
+ 0001:00067B70       Controls.TWinControl.CreateWindowHandle
+ 0001:00067BB0       Controls.TWinControl.ReadDesignSize
+ 0001:00067BE8       Controls.TWinControl.WriteDesignSize
+ 0001:00067C3C       Controls.PointsEqual
+ 0001:00067C50       Controls.DoWriteDesignSize
+ 0001:00067D30       Controls.TWinControl.DefineProperties
+ 0001:00067D8C       Controls.TWinControl.DestroyWnd
+ 0001:00067DEC       Controls.TWinControl.DestroyWindowHandle
+ 0001:00067E50       Controls.TWinControl.PrecedingWindow
+ 0001:00067E98       Controls.TWinControl.CreateHandle
+ 0001:00067F30       Controls.TWinControl.CustomAlignInsertBefore
+ 0001:00067F54       Controls.TWinControl.CustomAlignPosition
+ 0001:00067FA4       Controls.DestroyChildWindow
+ 0001:00067FE8       Controls.TWinControl.DestroyHandle
+ 0001:0006805C       Controls.TWinControl.RecreateWnd
+ 0001:00068074       Controls.TWinControl.CMRecreateWnd
+ 0001:00068100       Controls.TWinControl.UpdateShowing
+ 0001:00068224       Controls.TWinControl.UpdateControlState
+ 0001:00068268       Controls.TWinControl.SetParentWindow
+ 0001:0006834C       Controls.TWinControl.MainWndProc
+ 0001:000683C4       Controls.GetControlAtPos
+ 0001:00068490       Controls.TWinControl.ControlAtPos
+ 0001:00068554       Controls.TWinControl.IsControlActivateMsg
+ 0001:000686A0       Controls.TWinControl.IsControlMouseMsg
+ 0001:00068754       Controls.TWinControl.WndProc
+ 0001:00068BCC       Controls.TWinControl.DefaultHandler
+ 0001:00068CD4       Controls.DoControlMsg
+ 0001:00068D08       Controls.TWinControl.PaintHandler
+ 0001:00068E78       Controls.TWinControl.PaintWindow
+ 0001:00068EA0       Controls.TWinControl.PaintControls
+ 0001:00069170       Controls.TWinControl.PaintTo
+ 0001:00069300       Controls.TWinControl.WMPaint
+ 0001:00069460       Controls.TWinControl.WMCommand
+ 0001:00069480       Controls.TWinControl.WMNotify
+ 0001:000694A4       Controls.TWinControl.WMSysColorChange
+ 0001:000694C0       Controls.TWinControl.WMWinIniChange
+ 0001:000694D4       Controls.TWinControl.WMFontChange
+ 0001:000694E4       Controls.TWinControl.WMTimeChange
+ 0001:000694F4       Controls.TWinControl.WMHScroll
+ 0001:00069514       Controls.TWinControl.WMVScroll
+ 0001:00069534       Controls.TWinControl.WMCompareItem
+ 0001:00069558       Controls.TWinControl.WMDeleteItem
+ 0001:0006957C       Controls.TWinControl.WMDrawItem
+ 0001:000695A0       Controls.TWinControl.WMMeasureItem
+ 0001:000695C0       Controls.TWinControl.WMMouseActivate
+ 0001:000695F4       Controls.TWinControl.WMEraseBkgnd
+ 0001:00069694       Controls.TWinControl.WMWindowPosChanged
+ 0001:00069754       Controls.TWinControl.WMWindowPosChanging
+ 0001:000697A8       Controls.TWinControl.WMSize
+ 0001:000697E0       Controls.TWinControl.WMMove
+ 0001:000697FC       Controls.TWinControl.WMSetCursor
+ 0001:00069900       Controls.TWinControl.WMSetFocus
+ 0001:0006991C       Controls.TWinControl.WMKillFocus
+ 0001:00069938       Controls.TWinControl.WMIMEStartComp
+ 0001:0006994C       Controls.TWinControl.WMIMEEndComp
+ 0001:00069960       Controls.TWinControl.SetIme
+ 0001:00069A90       Controls.TWinControl.ResetIme
+ 0001:00069B70       Controls.TWinControl.DoAddDockClient
+ 0001:00069B80       Controls.TWinControl.DoRemoveDockClient
+ 0001:00069B84       Controls.TWinControl.DoEnter
+ 0001:00069BA4       Controls.TWinControl.DoExit
+ 0001:00069BC4       Controls.TWinControl.DockDrop
+ 0001:00069C14       Controls.TWinControl.DoDockOver
+ 0001:00069C48       Controls.TWinControl.DockOver
+ 0001:00069C8C       Controls.TWinControl.DoUnDock
+ 0001:00069CE8       Controls.TWinControl.ReloadDockedControl
+ 0001:00069D0C       Controls.TWinControl.GetDockClientCount
+ 0001:00069D20       Controls.TWinControl.GetDockClients
+ 0001:00069D44       Controls.TWinControl.GetSiteInfo
+ 0001:00069DA0       Controls.TWinControl.GetVisibleDockClientCount
+ 0001:00069DDC       Controls.TWinControl.ControlsAligned
+ 0001:00069DE0       Controls.TWinControl.CreateDockManager
+ 0001:00069E4C       Controls.TWinControl.SetDesignVisible
+ 0001:00069E80       Controls.TWinControl.SetDockSite
+ 0001:00069F38       Controls.TWinControl.CMDockClient
+ 0001:0006A028       Controls.TWinControl.CMUnDockClient
+ 0001:0006A050       Controls.TWinControl.CMFloat
+ 0001:0006A0D4       Controls.TWinControl.KeyDown
+ 0001:0006A100       Controls.TWinControl.DoKeyDown
+ 0001:0006A1A8       Controls.TWinControl.WMKeyDown
+ 0001:0006A1D4       Controls.TWinControl.WMSysKeyDown
+ 0001:0006A200       Controls.TWinControl.KeyUp
+ 0001:0006A22C       Controls.TWinControl.DoKeyUp
+ 0001:0006A294       Controls.TWinControl.WMKeyUp
+ 0001:0006A2B4       Controls.TWinControl.WMSysKeyUp
+ 0001:0006A2D4       Controls.TWinControl.KeyPress
+ 0001:0006A2F4       Controls.TWinControl.DoKeyPress
+ 0001:0006A35C       Controls.TWinControl.WMChar
+ 0001:0006A37C       Controls.TraverseControls
+ 0001:0006A42C       Controls.TWinControl.WMSysCommand
+ 0001:0006A4D8       Controls.TWinControl.WMCharToItem
+ 0001:0006A4F8       Controls.TWinControl.WMParentNotify
+ 0001:0006A52C       Controls.TWinControl.WMVKeyToItem
+ 0001:0006A54C       Controls.TWinControl.WMDestroy
+ 0001:0006A5B0       Controls.TWinControl.WMNCDestroy
+ 0001:0006A5CC       Controls.TWinControl.WMNCHitTest
+ 0001:0006A5F0       Controls.TWinControl.PaletteChanged
+ 0001:0006A648       Controls.TWinControl.WMQueryNewPalette
+ 0001:0006A66C       Controls.TWinControl.WMPaletteChanged
+ 0001:0006A68C       Controls.TWinControl.CMShowHintChanged
+ 0001:0006A6A4       Controls.TWinControl.CMBiDiModeChanged
+ 0001:0006A6DC       Controls.TWinControl.CMEnter
+ 0001:0006A74C       Controls.TWinControl.CMExit
+ 0001:0006A75C       Controls.TWinControl.CMDesignHitTest
+ 0001:0006A77C       Controls.TWinControl.CMChanged
+ 0001:0006A790       Controls.TWinControl.CMChildKey
+ 0001:0006A7A4       Controls.TWinControl.CMDialogKey
+ 0001:0006A7AC       Controls.TWinControl.CMDialogChar
+ 0001:0006A7B4       Controls.TWinControl.CMFocusChanged
+ 0001:0006A7BC       Controls.TWinControl.CMVisibleChanged
+ 0001:0006A7EC       Controls.TWinControl.CMShowingChanged
+ 0001:0006A814       Controls.TWinControl.CMEnabledChanged
+ 0001:0006A85C       Controls.TWinControl.CMColorChanged
+ 0001:0006A884       Controls.TWinControl.CMFontChanged
+ 0001:0006A8C0       Controls.TWinControl.CMCursorChanged
+ 0001:0006A900       Controls.TWinControl.CMBorderChanged
+ 0001:0006A940       Controls.TWinControl.CMCtl3DChanged
+ 0001:0006A980       Controls.TWinControl.CMParentCtl3DChanged
+ 0001:0006A9C0       Controls.TWinControl.CMSysColorChange
+ 0001:0006A9C8       Controls.TWinControl.CMWinIniChange
+ 0001:0006A9D0       Controls.TWinControl.CMFontChange
+ 0001:0006A9D8       Controls.TWinControl.CMTimeChange
+ 0001:0006A9E0       Controls.TWinControl.CMDrag
+ 0001:0006AA40       Controls.TWinControl.CMControlListChange
+ 0001:0006AA54       Controls.TWinControl.CMControlListChanging
+ 0001:0006AA68       Controls.TWinControl.CMSysFontChanged
+ 0001:0006AA84       Controls.TWinControl.IsMenuKey
+ 0001:0006AB1C       Controls.TWinControl.CNKeyDown
+ 0001:0006AC00       Controls.TWinControl.CNKeyUp
+ 0001:0006AC54       Controls.TWinControl.CNChar
+ 0001:0006ACA4       Controls.TWinControl.CNSysKeyDown
+ 0001:0006AD00       Controls.TWinControl.CNSysChar
+ 0001:0006AD34       Controls.TWinControl.SetBounds
+ 0001:0006AE10       Controls.TWinControl.ScaleControls
+ 0001:0006AE58       Controls.TWinControl.ChangeScale
+ 0001:0006AF04       Controls.TWinControl.ScrollBy
+ 0001:0006AFDC       Controls.TWinControl.ShowControl
+ 0001:0006AFF4       Controls.TWinControl.SetZOrderPosition
+ 0001:0006B0CC       Controls.TWinControl.SetZOrder
+ 0001:0006B12C       Controls.TWinControl.GetDeviceContext
+ 0001:0006B180       Controls.TWinControl.GetParentHandle
+ 0001:0006B198       Controls.TWinControl.GetTopParentHandle
+ 0001:0006B1B8       Controls.TWinControl.Invalidate
+ 0001:0006B1C8       Controls.TWinControl.CMInvalidate
+ 0001:0006B25C       Controls.TWinControl.Update
+ 0001:0006B278       Controls.TWinControl.Repaint
+ 0001:0006B294       Controls.TWinControl.InvalidateFrame
+ 0001:0006B2CC       Controls.TWinControl.CanFocus
+ 0001:0006B30C       Controls.TWinControl.SetFocus
+ 0001:0006B348       Controls.TWinControl.Focused
+ 0001:0006B36C       Controls.TWinControl.HandleNeeded
+ 0001:0006B390       Controls.TWinControl.GetHandle
+ 0001:0006B3A4       Controls.TWinControl.GetControlExtents
+ 0001:0006B4D8       Controls.TWinControl.GetClientOrigin
+ 0001:0006B4F8       Controls.TWinControl.GetClientRect
+ 0001:0006B510       Controls.TWinControl.AdjustSize
+ 0001:0006B54C       Controls.TWinControl.SetBorderWidth
+ 0001:0006B56C       Controls.TWinControl.SetCtl3D
+ 0001:0006B590       Controls.TWinControl.IsCtl3DStored
+ 0001:0006B59C       Controls.TWinControl.SetParentCtl3D
+ 0001:0006B5C8       Controls.TWinControl.GetTabOrder
+ 0001:0006B5EC       Controls.TWinControl.UpdateTabOrder
+ 0001:0006B648       Controls.TWinControl.SetTabOrder
+ 0001:0006B660       Controls.TWinControl.SetTabStop
+ 0001:0006B6C0       Controls.TWinControl.SetUseDockManager
+ 0001:0006B730       Controls.TWinControl.HandleAllocated
+ 0001:0006B73C       Controls.TWinControl.UpdateBounds
+ 0001:0006B7F4       Controls.TWinControl.GetTabOrderList
+ 0001:0006B854       Controls.TWinControl.FindNextControl
+ 0001:0006B960       Controls.TWinControl.SelectNext
+ 0001:0006B98C       Controls.TWinControl.SelectFirst
+ 0001:0006B9D4       Controls.TWinControl.GetChildren
+ 0001:0006BA1C       Controls.TWinControl.SetChildOrder
+ 0001:0006BA5C       Controls.TWinControl.CanResize
+ 0001:0006BA64       Controls.DoCalcConstraints
+ 0001:0006BB28       Controls.TWinControl.CalcConstraints
+ 0001:0006BFB4       Controls.TWinControl.ConstrainedResize
+ 0001:0006BFF0       Controls.TWinControl.ActionChange
+ 0001:0006C030       Controls.TWinControl.GetActionLinkClass
+ 0001:0006C038       Controls.TWinControl.AssignTo
+ 0001:0006C068       Controls.TWinControl.CanAutoSize
+ 0001:0006C230       Controls.TWinControl.SetBevelCut
+ 0001:0006C274       Controls.TWinControl.SetBevelEdges
+ 0001:0006C2A4       Controls.TWinControl.SetBevelKind
+ 0001:0006C2C4       Controls.TWinControl.SetBevelWidth
+ 0001:0006C2E4       Controls.TWinControl.WMNCCalcSize
+ 0001:0006C374       Controls.TWinControl.WMNCPaint
+ 0001:0006C668       Controls.TWinControl.WMContextMenu
+ 0001:0006C6E0       Controls.TWinControl.UpdateUIState
+ 0001:0006C72C       Controls.TWinControl.WMPrintClient
+ 0001:0006C7B8       Controls.TWinControl.GetParentBackground
+ 0001:0006C7C0       Controls.TWinControl.SetParentBackground
+ 0001:0006C800       Controls.TWinControl.CMTextChanged
+ 0001:0006C818       Controls.TWinControl.InvalidateDockHostSite
+ 0001:0006C84C       Controls.TWinControl.DockReplaceDockClient
+ 0001:0006C858       Controls.TWinControl.PreProcessMessage
+ 0001:0006C85C       Controls.TWinControl.RemoveWindowProps
+ 0001:0006C88C       Controls.TWinControl.IsQualifyingSite
+ 0001:0006C8B0       Controls.TWinControl.DoPaddingChange
+ 0001:0006C8B8       Controls.TWinControl.SetPadding
+ 0001:0006C8C4       Controls.TWinControl.UpdateRecreatingFlag
+ 0001:0006C910       Controls.TWinControl.UpdateControlOriginalParentSize
+ 0001:0006C98C       Controls.TWinControl.SetParent
+ 0001:0006CA08       Controls.TGraphicControl.Create
+ 0001:0006CA64       Controls.TGraphicControl.Destroy
+ 0001:0006CAA4       Controls.TGraphicControl.WMPaint
+ 0001:0006CB4C       Controls.TGraphicControl.Paint
+ 0001:0006CB50       Controls.THintWindow.Create
+ 0001:0006CBBC       Controls.THintWindow.CreateParams
+ 0001:0006CC20       Controls.THintWindow.WMNCHitTest
+ 0001:0006CC28       Controls.THintWindow.WMNCPaint
+ 0001:0006CC8C       Controls.THintWindow.Paint
+ 0001:0006CD34       Controls.THintWindow.IsHintMsg
+ 0001:0006CD98       Controls.THintWindow.ReleaseHandle
+ 0001:0006CDA4       Controls.THintWindow.CMTextChanged
+ 0001:0006CE3C       Controls.THintWindow.ActivateHint
+ 0001:0006D030       Controls.THintWindow.ActivateHintData
+ 0001:0006D058       Controls.THintWindow.CalcHintRect
+ 0001:0006D0B4       Controls.THintWindow.NCPaint
+ 0001:0006D120       Controls.THintWindow.WMPrint
+ 0001:0006D144       Controls.THintWindow.ShouldHideHint
+ 0001:0006D148       Controls.ClientToWindow
+ 0001:0006D188       Controls.TDragImageList.Initialize
+ 0001:0006D1A0       Controls.TDragImageList.SetDragImage
+ 0001:0006D1E8       Controls.TDragImageList.SetDragCursor
+ 0001:0006D20C       Controls.TDragImageList.GetHotSpot
+ 0001:0006D238       Controls.TDragImageList.BeginDrag
+ 0001:0006D2AC       Controls.TDragImageList.DragLock
+ 0001:0006D310       Controls.TDragImageList.DragUnlock
+ 0001:0006D334       Controls.TDragImageList.DragMove
+ 0001:0006D378       Controls.TDragImageList.ShowDragImage
+ 0001:0006D390       Controls.TDragImageList.HideDragImage
+ 0001:0006D3A8       Controls.TDragImageList.EndDrag
+ 0001:0006D3F8       Controls.TCustomControl.Create
+ 0001:0006D454       Controls.TCustomControl.Destroy
+ 0001:0006D484       Controls.TCustomControl.WMPaint
+ 0001:0006D4A4       Controls.TCustomControl.PaintWindow
+ 0001:0006D550       Controls.TCustomControl.Paint
+ 0001:0006D554       Controls.NextVisibleZone
+ 0001:0006D570       Controls.IsOrientationSet
+ 0001:0006D594       Controls.TDockZone.Create
+ 0001:0006D5B8       Controls.TDockZone.GetChildCount
+ 0001:0006D5CC       Controls.TDockZone.GetVisibleChildCount
+ 0001:0006D5F0       Controls.TDockZone.GetVisible
+ 0001:0006D628       Controls.TDockZone.GetLimitBegin
+ 0001:0006D670       Controls.TDockZone.GetLimitSize
+ 0001:0006D6B8       Controls.TDockZone.GetTopLeft
+ 0001:0006D73C       Controls.TDockZone.GetHeightWidth
+ 0001:0006D7F4       Controls.TDockZone.ResetChildren
+ 0001:0006D89C       Controls.TDockZone.GetControlName
+ 0001:0006D8E0       Controls.TDockZone.SetControlName
+ 0001:0006D964       Controls.ParentNotLast
+ 0001:0006D994       Controls.TDockZone.Update
+ 0001:0006DB10       Controls.TDockZone.GetZoneLimit
+ 0001:0006DB38       Controls.TDockZone.SetZoneLimit
+ 0001:0006DB3C       Controls.GetLastChildZone
+ 0001:0006DB4C       Controls.TDockZone.ExpandZoneLimit
+ 0001:0006DB8C       Controls.TDockZone.ResetZoneLimits
+ 0001:0006DBEC       Controls.TDockZone.NextVisible
+ 0001:0006DBF8       Controls.TDockZone.PrevVisible
+ 0001:0006DC14       Controls.TDockZone.FirstVisibleChild
+ 0001:0006DC20       Controls.TDockTree.Create
+ 0001:0006DD88       Controls.TDockTree.Destroy
+ 0001:0006DDDC       Controls.TDockTree.AdjustDockRect
+ 0001:0006DDF4       Controls.TDockTree.BeginUpdate
+ 0001:0006DDF8       Controls.TDockTree.EndUpdate
+ 0001:0006DE0C       Controls.DoFindControlZone
+ 0001:0006DE64       Controls.TDockTree.FindControlZone
+ 0001:0006DE90       Controls.DoForEach
+ 0001:0006DECC       Controls.TDockTree.ForEachAt
+ 0001:0006DEE4       Controls.TDockTree.GetControlBounds
+ 0001:0006DF58       Controls.TDockTree.HitTest
+ 0001:0006DF68       Controls.TDockTree.InsertControl
+ 0001:0006E184       Controls.TDockTree.InsertNewParent
+ 0001:0006E32C       Controls.TDockTree.InsertSibling
+ 0001:0006E3A4       Controls.TDockTree.ZoneCaptionHitTest
+ 0001:0006E4A8       Controls.TDockTree.FindControlAtPos
+ 0001:0006E534       Controls.DoFindZone
+ 0001:0006E648       Controls.TDockTree.InternalHitTest
+ 0001:0006E6D0       Controls.ReadControlName
+ 0001:0006E718       Controls.TDockTree.LoadFromStream
+ 0001:0006EA6C       Controls.DrawCloseButton
+ 0001:0006EB00       Controls.DrawGrabberLine
+ 0001:0006EB88       Controls.DrawThemedGrabber
+ 0001:0006EBE4       Controls.TDockTree.PaintDockFrame
+ 0001:0006ED38       Controls.TDockTree.PaintSite
+ 0001:0006EE6C       Controls.TDockTree.PositionDockRect
+ 0001:0006EFE8       Controls.DoPrune
+ 0001:0006F01C       Controls.TDockTree.PruneZone
+ 0001:0006F078       Controls.TDockTree.RemoveControl
+ 0001:0006F0B8       Controls.TDockTree.RemoveZone
+ 0001:0006F358       Controls.TDockTree.ResetBounds
+ 0001:0006F440       Controls.TDockTree.ScaleZone
+ 0001:0006F480       Controls.WriteControlName
+ 0001:0006F4FC       Controls.DoSaveZone
+ 0001:0006F60C       Controls.TDockTree.SaveToStream
+ 0001:0006F7C0       Controls.DoSetNewBounds
+ 0001:0006F848       Controls.TDockTree.SetNewBounds
+ 0001:0006F878       Controls.TDockTree.SetReplacingControl
+ 0001:0006F890       Controls.TDockTree.ShiftZone
+ 0001:0006F8C4       Controls.TDockTree.SplitterMouseDown
+ 0001:0006F924       Controls.TDockTree.SplitterMouseUp
+ 0001:0006F9A0       Controls.TDockTree.UpdateAll
+ 0001:0006F9C8       Controls.TDockTree.UpdateZone
+ 0001:0006F9D8       Controls.TDockTree.WindowProc
+ 0001:0006F9EC       Controls.TDockTree.DrawSizeSplitter
+ 0001:0006FAD8       Controls.DoGetNextLimit
+ 0001:0006FB68       Controls.TDockTree.GetNextLimit
+ 0001:0006FBB8       Controls.GetDockAlign
+ 0001:0006FC34       Controls.HideZone
+ 0001:0006FCB4       Controls.ShowZone
+ 0001:0006FDEC       Controls.TDockTree.ControlVisibilityChanged
+ 0001:0006FE74       Controls.TDockTree.WndProc
+ 0001:0007010C       Controls.TDockTree.ActualSize
+ 0001:0007013C       Controls.TDockTree.RelativeSize
+ 0001:00070174       Controls.TDockTree.ReferenceFromOrient
+ 0001:000701A0       Controls.TDockTree.AdjustFrameRect
+ 0001:000701E0       Controls.TDockTree.MouseDown
+ 0001:00070304       Controls.CalcSplitterPos
+ 0001:00070394       Controls.TDockTree.MouseMove
+ 0001:000703E4       Controls.TDockTree.MouseUp
+ 0001:00070458       Controls.TDockTree.ShowHint
+ 0001:0007054C       Controls.TMouse.Create
+ 0001:000705DC       Controls.TMouse.CreatePanningWindow
+ 0001:00070608       Controls.TMouse.Destroy
+ 0001:00070638       Controls.TMouse.GetCapture
+ 0001:00070640       Controls.TMouse.GetCursorPos
+ 0001:00070650       Controls.TMouse.GetIsDragging
+ 0001:0007065C       Controls.TMouse.GetIsPanning
+ 0001:00070680       Controls.TMouse.GetMouseData
+ 0001:0007069C       Controls.TMouse.GetNativeData
+ 0001:000706CC       Controls.TMouse.GetRegisteredData
+ 0001:000706F4       Controls.TMouse.SetCapture
+ 0001:0007071C       Controls.TMouse.SetCursorPos
+ 0001:00070734       Controls.TMouse.SetPanningWindow
+ 0001:00070754       Controls.TMouse.SettingChanged
+ 0001:000707B8       Controls.InitIMM32
+ 0001:00070A20       Controls.Win32NLSEnableIME
+ 0001:00070A3C       Controls.SetImeMode
+ 0001:00070B14       Controls.Imm32IsIME
+ 0001:00070B28       Controls.DoneControls
+ 0001:00070BB0       Controls.InitControls
+ 0001:00070D7C       Controls.TCustomListControl.MoveSelection
+ 0001:00070D98       Controls.TMargins.Create
+ 0001:00070DDC       Controls.TMargins.AssignTo
+ 0001:00070E24       Controls.TMargins.Change
+ 0001:00070E38       Controls.TMargins.InitDefaults
+ 0001:00070E58       Controls.TMargins.SetMargin
+ 0001:00070EB0       Controls.TMargins.SetControlBounds
+ 0001:00070F9C       Controls.TMargins.GetControlBound
+ 0001:00071160       Controls.TPadding.InitDefaults
+ 0001:00071164       Controls.Finalization
+ 0001:000711CC       ImgList..TChangeLink
+ 0001:000712D0       ImgList..TCustomImageList
+ 0001:000713A8       ImgList.GetRGBColor
+ 0001:000713C8       ImgList.GetColor
+ 0001:000713E8       ImgList.TCustomImageList.Create
+ 0001:00071434       ImgList.TCustomImageList.CreateSize
+ 0001:00071488       ImgList.TCustomImageList.Destroy
+ 0001:000714F4       ImgList.TCustomImageList.Initialize
+ 0001:000715AC       ImgList.TCustomImageList.HandleAllocated
+ 0001:000715B4       ImgList.TCustomImageList.HandleNeeded
+ 0001:000715C0       ImgList.TCustomImageList.InitBitmap
+ 0001:00071684       ImgList.TCustomImageList.SetNewDimensions
+ 0001:000716BC       ImgList.TCustomImageList.SetWidth
+ 0001:00071700       ImgList.TCustomImageList.SetHeight
+ 0001:00071744       ImgList.TCustomImageList.SetHandle
+ 0001:00071770       ImgList.TCustomImageList.GetBitmapHandle
+ 0001:00071780       ImgList.TCustomImageList.GetHandle
+ 0001:00071790       ImgList.TCustomImageList.GetImageHandle
+ 0001:000717E4       ImgList.TCustomImageList.FreeHandle
+ 0001:0007181C       ImgList.TCustomImageList.CreateImageList
+ 0001:000718BC       ImgList.TCustomImageList.Add
+ 0001:00071988       ImgList.TCustomImageList.AddMasked
+ 0001:00071AA4       ImgList.TCustomImageList.GetBitmap
+ 0001:00071B0C       ImgList.TCustomImageList.GetCount
+ 0001:00071B30       ImgList.TCustomImageList.ReplaceMasked
+ 0001:00071D58       ImgList.TCustomImageList.Delete
+ 0001:00071DE4       ImgList.TCustomImageList.Clear
+ 0001:00071DF0       ImgList.TCustomImageList.SetBkColor
+ 0001:00071E28       ImgList.TCustomImageList.GetBkColor
+ 0001:00071E50       ImgList.TCustomImageList.DoDraw
+ 0001:00072024       ImgList.TCustomImageList.Draw
+ 0001:0007204C       ImgList.TCustomImageList.Draw
+ 0001:00072098       ImgList.TCustomImageList.Overlay
+ 0001:000720D0       ImgList.TCustomImageList.CopyImages
+ 0001:00072278       ImgList.TCustomImageList.AddImages
+ 0001:00072298       ImgList.TCustomImageList.Assign
+ 0001:0007235C       ImgList.TCustomImageList.AssignTo
+ 0001:00072410       ImgList.TCustomImageList.CheckImage
+ 0001:00072488       ImgList.TCustomImageList.SetDrawingStyle
+ 0001:000724A0       ImgList.TCustomImageList.GetHotSpot
+ 0001:000724B0       ImgList.TCustomImageList.Change
+ 0001:00072500       ImgList.TCustomImageList.UnRegisterChanges
+ 0001:00072544       ImgList.TCustomImageList.RegisterChanges
+ 0001:00072558       ImgList.StreamsEqual
+ 0001:0007259C       ImgList.TCustomImageList.Equal
+ 0001:0007268C       ImgList.DoWrite
+ 0001:000726E8       ImgList.TCustomImageList.DefineProperties
+ 0001:00072740       ImgList.TCustomImageList.ReadD2Stream
+ 0001:000729D4       ImgList.TCustomImageList.ReadD3Stream
+ 0001:00072B9C       ImgList.TCustomImageList.ReadData
+ 0001:00072C28       ImgList.TCustomImageList.WriteData
+ 0001:00072D6C       ImgList.TCustomImageList.BeginUpdate
+ 0001:00072D70       ImgList.TCustomImageList.EndUpdate
+ 0001:00072D90       ImgList.TChangeLink.Destroy
+ 0001:00072DC4       ImgList.TChangeLink.Change
+ 0001:00072DDC       ActnList..TContainedAction
+ 0001:00072F44       ActnList..TCustomActionList
+ 0001:00073024       ActnList..TShortCutList
+ 0001:0007317C       ActnList..TCustomAction
+ 0001:00073284       ActnList..TActionLink
+ 0001:00073354       ActnList.TContainedAction.Destroy
+ 0001:00073388       ActnList.TContainedAction.GetIndex
+ 0001:000733A0       ActnList.TContainedAction.IsCategoryStored
+ 0001:000733A4       ActnList.TContainedAction.GetParentComponent
+ 0001:000733B4       ActnList.TContainedAction.HasParent
+ 0001:000733C4       ActnList.TContainedAction.ReadState
+ 0001:000733F8       ActnList.TContainedAction.SetIndex
+ 0001:00073440       ActnList.TContainedAction.SetCategory
+ 0001:0007346C       ActnList.TContainedAction.SetActionList
+ 0001:00073494       ActnList.TContainedAction.SetParentComponent
+ 0001:000734C0       ActnList.TContainedAction.Execute
+ 0001:00073518       ActnList.TContainedAction.Update
+ 0001:00073570       ActnList.TCustomActionList.Create
+ 0001:000735DC       ActnList.TCustomActionList.Destroy
+ 0001:0007362C       ActnList.TCustomActionList.GetChildren
+ 0001:00073674       ActnList.TCustomActionList.SetChildOrder
+ 0001:000736A4       ActnList.TCustomActionList.GetAction
+ 0001:000736B8       ActnList.TCustomActionList.GetActionCount
+ 0001:000736C0       ActnList.TCustomActionList.SetImages
+ 0001:000736F4       ActnList.TCustomActionList.ImageListChange
+ 0001:00073700       ActnList.TCustomActionList.Notification
+ 0001:00073748       ActnList.TCustomActionList.AddAction
+ 0001:00073768       ActnList.TCustomActionList.RemoveAction
+ 0001:00073784       ActnList.TCustomActionList.Change
+ 0001:000737EC       ActnList.TCustomActionList.IsShortCut
+ 0001:00073890       ActnList.TCustomActionList.ExecuteAction
+ 0001:000738B0       ActnList.TCustomActionList.UpdateAction
+ 0001:000738D0       ActnList.TCustomActionList.SetState
+ 0001:00073974       ActnList.TActionLink.IsCaptionLinked
+ 0001:00073988       ActnList.TActionLink.IsCheckedLinked
+ 0001:0007399C       ActnList.TActionLink.IsEnabledLinked
+ 0001:000739B0       ActnList.TActionLink.IsGroupIndexLinked
+ 0001:000739C4       ActnList.TActionLink.IsHelpContextLinked
+ 0001:000739D8       ActnList.TActionLink.IsHelpLinked
+ 0001:000739EC       ActnList.TActionLink.IsHintLinked
+ 0001:00073A00       ActnList.TActionLink.IsImageIndexLinked
+ 0001:00073A14       ActnList.TActionLink.IsShortCutLinked
+ 0001:00073A28       ActnList.TActionLink.IsVisibleLinked
+ 0001:00073A3C       ActnList.TActionLink.SetAutoCheck
+ 0001:00073A40       ActnList.TActionLink.SetCaption
+ 0001:00073A44       ActnList.TActionLink.SetChecked
+ 0001:00073A48       ActnList.TActionLink.SetEnabled
+ 0001:00073A4C       ActnList.TActionLink.SetGroupIndex
+ 0001:00073A50       ActnList.TActionLink.SetHelpContext
+ 0001:00073A54       ActnList.TActionLink.SetHelpKeyword
+ 0001:00073A58       ActnList.TActionLink.SetHelpType
+ 0001:00073A5C       ActnList.TActionLink.SetHint
+ 0001:00073A60       ActnList.TActionLink.SetImageIndex
+ 0001:00073A64       ActnList.TActionLink.SetShortCut
+ 0001:00073A68       ActnList.TActionLink.SetVisible
+ 0001:00073A6C       ActnList.TCustomAction.Create
+ 0001:00073AC0       ActnList.TCustomAction.Destroy
+ 0001:00073B10       ActnList.TCustomAction.AssignTo
+ 0001:00073BC0       ActnList.TCustomAction.SetCaption
+ 0001:00073C20       ActnList.TCustomAction.SetChecked
+ 0001:00073D28       ActnList.TCustomAction.SetEnabled
+ 0001:00073DA4       ActnList.TCustomAction.SetHelpKeyword
+ 0001:00073E0C       ActnList.TCustomAction.SetHelpContext
+ 0001:00073E64       ActnList.TCustomAction.SetHint
+ 0001:00073EC4       ActnList.TCustomAction.SetImageIndex
+ 0001:00073F20       ActnList.TCustomAction.SetShortCut
+ 0001:00073F84       ActnList.TCustomAction.SetVisible
+ 0001:00073FE4       ActnList.TCustomAction.SetName
+ 0001:00074030       ActnList.TCustomAction.DoHint
+ 0001:00074058       ActnList.TCustomAction.Execute
+ 0001:000740BC       ActnList.TCustomAction.GetSecondaryShortCuts
+ 0001:000740E4       ActnList.TCustomAction.SetSecondaryShortCuts
+ 0001:00074118       ActnList.TCustomAction.IsSecondaryShortCutsStored
+ 0001:0007413C       ActnList.TCustomAction.HandleShortCut
+ 0001:00074148       ActnList.TShortCutList.Add
+ 0001:00074174       ActnList.TShortCutList.IndexOfShortCut
+ 0001:000741B8       ActnList.Finalization
+ 0001:00074288       Forms..TControlScrollBar
+ 0001:00074524       Forms..TScrollingWinControl
+ 0001:000747F4       Forms..TScrollBox
+ 0001:000751E0       Forms..TCustomFrame
+ 0001:0007534C       Forms..TFrame
+ 0001:000760C0       Forms..TCustomForm
+ 0001:0007643C       Forms..TForm
+ 0001:00077328       Forms..TCustomDockForm
+ 0001:00077510       Forms..TMonitor
+ 0001:00077568       Forms..TScreen
+ 0001:000777E8       Forms..TApplication
+ 0001:000778D8       Forms.SaveFocusState
+ 0001:000778E0       Forms.RestoreFocusState
+ 0001:000778E8       Forms.ShowMDIClientEdge
+ 0001:00077934       Forms.DoneApplication
+ 0001:0007796C       Forms.DoDisableWindow
+ 0001:000779BC       Forms.DisableTaskWindows
+ 0001:00077A80       Forms.EnableTaskWindows
+ 0001:00077AB8       Forms.DoFindWindow
+ 0001:00077B1C       Forms.FindTopMostWindow
+ 0001:00077B58       Forms.SendFocusMessage
+ 0001:00077B78       Forms.CheckTaskWindow
+ 0001:00077B98       Forms.ForegroundTask
+ 0001:00077BC4       Forms.FindGlobalComponent
+ 0001:00077C44       Forms.AllocateHWnd
+ 0001:00077C58       Forms.DeallocateHWnd
+ 0001:00077C60       Forms.KeysToShiftState
+ 0001:00077CB8       Forms.KeyDataToShiftState
+ 0001:00077CF8       Forms.KeyboardStateToShiftState
+ 0001:00077D44       Forms.KeyboardStateToShiftState
+ 0001:00077D64       Forms.IsAccel
+ 0001:00077DD4       Forms.GetRealParentForm
+ 0001:00077E18       Forms.GetParentForm
+ 0001:00077E28       Forms.ValidParentForm
+ 0001:00077EA8       Forms.TControlScrollBar.Create
+ 0001:00077F34       Forms.TControlScrollBar.IsIncrementStored
+ 0001:00077F3C       Forms.TControlScrollBar.Assign
+ 0001:00077F8C       Forms.TControlScrollBar.ChangeBiDiPosition
+ 0001:00077FC4       Forms.ProcessHorz
+ 0001:00078034       Forms.ProcessVert
+ 0001:000780A0       Forms.TControlScrollBar.CalcAutoRange
+ 0001:0007814C       Forms.TControlScrollBar.IsScrollBarVisible
+ 0001:00078184       Forms.ScrollBarVisible
+ 0001:000781B8       Forms.Adjustment
+ 0001:00078234       Forms.TControlScrollBar.ControlSize
+ 0001:000782B4       Forms.TControlScrollBar.NeedsScrollBarVisible
+ 0001:000782CC       Forms.GetRealScrollPosition
+ 0001:0007832C       Forms.TControlScrollBar.ScrollMessage
+ 0001:00078644       Forms.TControlScrollBar.SetButtonSize
+ 0001:00078688       Forms.TControlScrollBar.SetColor
+ 0001:000786A4       Forms.TControlScrollBar.SetParentColor
+ 0001:000786BC       Forms.TControlScrollBar.SetPosition
+ 0001:00078780       Forms.TControlScrollBar.SetSize
+ 0001:000787C4       Forms.TControlScrollBar.SetStyle
+ 0001:000787DC       Forms.TControlScrollBar.SetThumbSize
+ 0001:000787F4       Forms.TControlScrollBar.DoSetRange
+ 0001:0007880C       Forms.TControlScrollBar.SetRange
+ 0001:00078820       Forms.TControlScrollBar.IsRangeStored
+ 0001:00078830       Forms.TControlScrollBar.SetVisible
+ 0001:0007883C       Forms.UpdateScrollProperties
+ 0001:00078944       Forms.TControlScrollBar.Update
+ 0001:00078A60       Forms.TScrollingWinControl.Create
+ 0001:00078AD8       Forms.TScrollingWinControl.Destroy
+ 0001:00078B14       Forms.TScrollingWinControl.CreateParams
+ 0001:00078B24       Forms.TScrollingWinControl.CreateWnd
+ 0001:00078B64       Forms.TScrollingWinControl.AlignControls
+ 0001:00078B84       Forms.TScrollingWinControl.AutoScrollEnabled
+ 0001:00078BA4       Forms.TScrollingWinControl.DoFlipChildren
+ 0001:00078CBC       Forms.TScrollingWinControl.CalcAutoRange
+ 0001:00078CE0       Forms.TScrollingWinControl.SetAutoScroll
+ 0001:00078D1C       Forms.TScrollingWinControl.SetHorzScrollBar
+ 0001:00078D2C       Forms.TScrollingWinControl.SetVertScrollBar
+ 0001:00078D3C       Forms.TScrollingWinControl.UpdateScrollBars
+ 0001:00078E34       Forms.TScrollingWinControl.AutoScrollInView
+ 0001:00078E4C       Forms.TScrollingWinControl.ScrollInView
+ 0001:00078FA0       Forms.TScrollingWinControl.ScaleScrollBars
+ 0001:00079044       Forms.TScrollingWinControl.ChangeScale
+ 0001:00079068       Forms.TScrollingWinControl.Resizing
+ 0001:0007906C       Forms.TScrollingWinControl.WMSize
+ 0001:0007915C       Forms.TScrollingWinControl.WMHScroll
+ 0001:00079180       Forms.TScrollingWinControl.WMVScroll
+ 0001:000791A4       Forms.TScrollingWinControl.AdjustClientRect
+ 0001:00079224       Forms.TScrollingWinControl.CMBiDiModeChanged
+ 0001:000792B4       Forms.TScrollBox.Create
+ 0001:00079320       Forms.TScrollBox.CreateParams
+ 0001:00079370       Forms.TScrollBox.SetBorderStyle
+ 0001:00079384       Forms.TScrollBox.WMNCHitTest
+ 0001:0007938C       Forms.TScrollBox.CMCtl3DChanged
+ 0001:000793B8       Forms.TScrollBox.PaintWindow
+ 0001:000793BC       Forms.TCustomFrame.Create
+ 0001:000794C8       Forms.TCustomFrame.CreateParams
+ 0001:000794EC       Forms.TCustomFrame.GetChildren
+ 0001:00079558       Forms.TCustomFrame.PaintWindow
+ 0001:0007955C       Forms.TCustomFrame.SetParent
+ 0001:000795E0       Forms.TCustomForm.Create
+ 0001:0007976C       Forms.TCustomForm.AfterConstruction
+ 0001:000797A4       Forms.TCustomForm.CreateNew
+ 0001:00079928       Forms.TCustomForm.BeforeDestruction
+ 0001:00079990       Forms.TCustomForm.Destroy
+ 0001:00079A90       Forms.TCustomForm.DoCreate
+ 0001:00079B0C       Forms.TCustomForm.DoDestroy
+ 0001:00079B6C       Forms.TCustomForm.Loaded
+ 0001:00079BB8       Forms.TCustomForm.Notification
+ 0001:00079CF4       Forms.TCustomForm.ReadState
+ 0001:00079F84       Forms.TCustomForm.DefineProperties
+ 0001:0007A034       Forms.TCustomForm.ReadIgnoreFontProperty
+ 0001:0007A054       Forms.TCustomForm.ReadTextHeight
+ 0001:0007A06C       Forms.TCustomForm.WriteTextHeight
+ 0001:0007A088       Forms.TCustomForm.WritePixelsPerInch
+ 0001:0007A0A4       Forms.TCustomForm.GetLeft
+ 0001:0007A0C4       Forms.TCustomForm.GetTop
+ 0001:0007A0E0       Forms.TCustomForm.GetTextHeight
+ 0001:0007A104       Forms.TCustomForm.BeginAutoDrag
+ 0001:0007A108       Forms.TCustomForm.ChangeScale
+ 0001:0007A190       Forms.TCustomForm.IconChanged
+ 0001:0007A1EC       Forms.TCustomForm.IsClientSizeStored
+ 0001:0007A1FC       Forms.TCustomForm.IsFormSizeStored
+ 0001:0007A224       Forms.TCustomForm.IsAutoScrollStored
+ 0001:0007A258       Forms.TCustomForm.DoClose
+ 0001:0007A278       Forms.TCustomForm.DoHide
+ 0001:0007A298       Forms.TCustomForm.DoShow
+ 0001:0007A2B8       Forms.TCustomForm.GetClientRect
+ 0001:0007A340       Forms.TCustomForm.GetChildren
+ 0001:0007A3AC       Forms.TCustomForm.GetFloating
+ 0001:0007A3D8       Forms.TCustomForm.GetOwnerWindow
+ 0001:0007A3F0       Forms.TCustomForm.SetChildOrder
+ 0001:0007A484       Forms.TCustomForm.SetParentBiDiMode
+ 0001:0007A4AC       Forms.TCustomForm.SetClientWidth
+ 0001:0007A4E0       Forms.TCustomForm.SetClientHeight
+ 0001:0007A514       Forms.TCustomForm.SetVisible
+ 0001:0007A558       Forms.TCustomForm.VisibleChanging
+ 0001:0007A5C4       Forms.TCustomForm.WantChildKey
+ 0001:0007A5C8       Forms.TCustomForm.SetParent
+ 0001:0007A684       Forms.TCustomForm.ValidateRename
+ 0001:0007A6C4       Forms.TCustomForm.WndProc
+ 0001:0007AB9C       Forms.Default
+ 0001:0007ABE8       Forms.MaximizedChildren
+ 0001:0007AC28       Forms.TCustomForm.ClientWndProc
+ 0001:0007AE08       Forms.TCustomForm.AlignControls
+ 0001:0007AE74       Forms.TCustomForm.CMBiDiModeChanged
+ 0001:0007AF0C       Forms.TCustomForm.CMParentBiDiModeChanged
+ 0001:0007AF98       Forms.TCustomForm.CMPopupHwndDestroy
+ 0001:0007B000       Forms.TCustomForm.GetBorderIconStyles
+ 0001:0007B0CC       Forms.TCustomForm.SetBorderIcons
+ 0001:0007B198       Forms.TCustomForm.GetBorderStyles
+ 0001:0007B2AC       Forms.TCustomForm.SetBorderStyle
+ 0001:0007B3DC       Forms.TCustomForm.Dock
+ 0001:0007B420       Forms.TCustomForm.DoDock
+ 0001:0007B478       Forms.TCustomForm.GetActiveMDIChild
+ 0001:0007B4AC       Forms.TCustomForm.GetMDIChildCount
+ 0001:0007B4F8       Forms.TCustomForm.GetMDIChildren
+ 0001:0007B548       Forms.EnumMonitorsProc
+ 0001:0007B578       Forms.TCustomForm.GetMonitor
+ 0001:0007B618       Forms.TCustomForm.GetCanvas
+ 0001:0007B620       Forms.TCustomForm.SetIcon
+ 0001:0007B62C       Forms.TCustomForm.IsForm
+ 0001:0007B634       Forms.TCustomForm.IsIconStored
+ 0001:0007B65C       Forms.TCustomForm.SetFormStyle
+ 0001:0007B7D0       Forms.TCustomForm.RefreshMDIMenu
+ 0001:0007B84C       Forms.TCustomForm.SetObjectMenuItem
+ 0001:0007B870       Forms.TCustomForm.SetWindowMenu
+ 0001:0007B898       Forms.TCustomForm.SetMenu
+ 0001:0007BABC       Forms.TCustomForm.GetPixelsPerInch
+ 0001:0007BAD0       Forms.TCustomForm.GetPopupChildren
+ 0001:0007BAF8       Forms.TCustomForm.GetRecreateChildren
+ 0001:0007BB20       Forms.TCustomForm.SetPixelsPerInch
+ 0001:0007BB54       Forms.TCustomForm.SetPosition
+ 0001:0007BB70       Forms.TCustomForm.SetPopupMode
+ 0001:0007BBC4       Forms.TCustomForm.SetPopupParent
+ 0001:0007BC24       Forms.TCustomForm.GetScaled
+ 0001:0007BC30       Forms.TCustomForm.SetScaled
+ 0001:0007BC60       Forms.TCustomForm.CMColorChanged
+ 0001:0007BC84       Forms.TCustomForm.NormalColor
+ 0001:0007BC9C       Forms.TCustomForm.CMCtl3DChanged
+ 0001:0007BCE4       Forms.TCustomForm.CMFontChanged
+ 0001:0007BD04       Forms.TCustomForm.CMMenuChanged
+ 0001:0007BD20       Forms.TCustomForm.SetWindowState
+ 0001:0007BD60       Forms.TCustomForm.SetWindowToMonitor
+ 0001:0007C0C4       Forms.GetNonToolWindowPopupParent
+ 0001:0007C134       Forms.TCustomForm.CreateParams
+ 0001:0007C474       Forms.TCustomForm.CreateWnd
+ 0001:0007C648       Forms.TCustomForm.CreateWindowHandle
+ 0001:0007C780       Forms.DestroyPopupWindow
+ 0001:0007C7C4       Forms.TCustomForm.DestroyHandle
+ 0001:0007C8C8       Forms.TCustomForm.DestroyWindowHandle
+ 0001:0007C90C       Forms.TCustomForm.DefaultHandler
+ 0001:0007C970       Forms.TCustomForm.SetActiveControl
+ 0001:0007CA30       Forms.TCustomForm.SetActiveOleControl
+ 0001:0007CA4C       Forms.TCustomForm.DefocusControl
+ 0001:0007CA94       Forms.TCustomForm.FocusControl
+ 0001:0007CAB8       Forms.TCustomForm.SetFocusedControl
+ 0001:0007CD5C       Forms.TCustomForm.ActiveChanged
+ 0001:0007CD60       Forms.TCustomForm.SetWindowFocus
+ 0001:0007CDD8       Forms.TCustomForm.SetActive
+ 0001:0007CE3C       Forms.TCustomForm.SendCancelMode
+ 0001:0007CE8C       Forms.TCustomForm.MergeMenu
+ 0001:0007CF34       Forms.DoNestedActivation
+ 0001:0007CF80       Forms.TCustomForm.Activate
+ 0001:0007CFB0       Forms.TCustomForm.Deactivate
+ 0001:0007CFE0       Forms.TCustomForm.Paint
+ 0001:0007D000       Forms.TCustomForm.GetIconHandle
+ 0001:0007D01C       Forms.TCustomForm.PaintWindow
+ 0001:0007D0D8       Forms.TCustomForm.PaletteChanged
+ 0001:0007D17C       Forms.TCustomForm.WMPaint
+ 0001:0007D1FC       Forms.TCustomForm.WMNCPaint
+ 0001:0007D224       Forms.TCustomForm.WMIconEraseBkgnd
+ 0001:0007D284       Forms.TCustomForm.WMEraseBkgnd
+ 0001:0007D2BC       Forms.TCustomForm.WMQueryDragIcon
+ 0001:0007D2D0       Forms.ModifySystemMenu
+ 0001:0007D3CC       Forms.TCustomForm.WMNCCreate
+ 0001:0007D400       Forms.TCustomForm.WMNCHitTest
+ 0001:0007D418       Forms.TCustomForm.WMNCLButtonDown
+ 0001:0007D4A8       Forms.TCustomForm.WMDestroy
+ 0001:0007D610       Forms.TCustomForm.WMCommand
+ 0001:0007D644       Forms.TCustomForm.WMInitMenuPopup
+ 0001:0007D65C       Forms.TCustomForm.WMMenuChar
+ 0001:0007D694       Forms.TCustomForm.WMMenuSelect
+ 0001:0007D73C       Forms.TCustomForm.WMActivate
+ 0001:0007D75C       Forms.TCustomForm.Resizing
+ 0001:0007D794       Forms.TCustomForm.WMClose
+ 0001:0007D79C       Forms.TCustomForm.WMQueryEndSession
+ 0001:0007D7B8       Forms.TCustomForm.CMAppSysCommand
+ 0001:0007D810       Forms.TCustomForm.WMSysCommand
+ 0001:0007D898       Forms.TCustomForm.WMShowWindow
+ 0001:0007D930       Forms.TCustomForm.WMMDIActivate
+ 0001:0007D988       Forms.TCustomForm.WMNextDlgCtl
+ 0001:0007D9B4       Forms.TCustomForm.WMEnterMenuLoop
+ 0001:0007D9D0       Forms.GetMenuHelpContext
+ 0001:0007DA10       Forms.ControlHasHelp
+ 0001:0007DA48       Forms.GetHelpInfo
+ 0001:0007DA7C       Forms.TCustomForm.WMHelp
+ 0001:0007DBF4       Forms.TCustomForm.WMGetMinMaxInfo
+ 0001:0007DC68       Forms.HandleEdge
+ 0001:0007DC94       Forms.TCustomForm.WMWindowPosChanging
+ 0001:0007DD80       Forms.TCustomForm.WMNCCalcSize
+ 0001:0007DDCC       Forms.TCustomForm.CMActivate
+ 0001:0007DDF0       Forms.TCustomForm.CMDeactivate
+ 0001:0007DE14       Forms.TCustomForm.CMDialogKey
+ 0001:0007DEB0       Forms.TCustomForm.CMShowingChanged
+ 0001:0007E4CC       Forms.TCustomForm.CMIconChanged
+ 0001:0007E4EC       Forms.TCustomForm.CMRelease
+ 0001:0007E4F4       Forms.TCustomForm.CMTextChanged
+ 0001:0007E544       Forms.TCustomForm.CMUIActivate
+ 0001:0007E54C       Forms.TCustomForm.CMParentFontChanged
+ 0001:0007E5B8       Forms.TCustomForm.CMIsShortCut
+ 0001:0007E5E4       Forms.TCustomForm.Close
+ 0001:0007E688       Forms.TCustomForm.CloseQuery
+ 0001:0007E6EC       Forms.TCustomForm.CloseModal
+ 0001:0007E784       Forms.TCustomForm.Hide
+ 0001:0007E78C       Forms.TCustomForm.Show
+ 0001:0007E7A4       Forms.TCustomForm.SetFocus
+ 0001:0007E830       Forms.TCustomForm.RecreateAsPopup
+ 0001:0007E860       Forms.TCustomForm.Release
+ 0001:0007E87C       Forms.TCustomForm.ShowModal
+ 0001:0007EB80       Forms.TraverseClients
+ 0001:0007EBF0       Forms.TCustomForm.UpdateActions
+ 0001:0007EC58       Forms.TCustomForm.RequestAlign
+ 0001:0007EC78       Forms.TCustomForm.WMSettingChange
+ 0001:0007EC98       Forms.ProcessExecute
+ 0001:0007ECC8       Forms.TraverseClients
+ 0001:0007ED44       Forms.TCustomForm.CMActionExecute
+ 0001:0007ED98       Forms.ProcessUpdate
+ 0001:0007EDC8       Forms.TraverseClients
+ 0001:0007EE44       Forms.TCustomForm.CMActionUpdate
+ 0001:0007EE98       Forms.DispatchShortCut
+ 0001:0007EF14       Forms.TCustomForm.IsShortCut
+ 0001:0007EF8C       Forms.TCustomForm.QueryInterface
+ 0001:0007EFC8       Forms.TCustomForm.MouseWheelHandler
+ 0001:0007F000       Forms.TCustomForm.HandleCreateException
+ 0001:0007F010       Forms.TCustomForm.SetLayeredAttribs
+ 0001:0007F0E8       Forms.TCustomForm.SetAlphaBlend
+ 0001:0007F0FC       Forms.TCustomForm.SetAlphaBlendValue
+ 0001:0007F110       Forms.TCustomForm.SetTransparentColorValue
+ 0001:0007F124       Forms.TCustomForm.SetTransparentColor
+ 0001:0007F138       Forms.TCustomForm.InitAlphaBlending
+ 0001:0007F164       Forms.TCustomForm.SetLeft
+ 0001:0007F1A0       Forms.TCustomForm.SetTop
+ 0001:0007F1E0       Forms.TCustomDockForm.Create
+ 0001:0007F248       Forms.TCustomDockForm.DoAddDockClient
+ 0001:0007F338       Forms.TCustomDockForm.DoRemoveDockClient
+ 0001:0007F358       Forms.TCustomDockForm.Loaded
+ 0001:0007F3A4       Forms.TCustomDockForm.GetSiteInfo
+ 0001:0007F3D0       Forms.TCustomDockForm.WMNCHitTest
+ 0001:0007F3F8       Forms.TCustomDockForm.WMNCLButtonDown
+ 0001:0007F490       Forms.TCustomDockForm.CMControlListChange
+ 0001:0007F4E8       Forms.TCustomDockForm.CMDockNotification
+ 0001:0007F5CC       Forms.TCustomDockForm.CMUnDockClient
+ 0001:0007F5E4       Forms.TCustomDockForm.CMVisibleChanged
+ 0001:0007F624       Forms.TMonitor.GetLeft
+ 0001:0007F63C       Forms.TMonitor.GetHeight
+ 0001:0007F658       Forms.TMonitor.GetTop
+ 0001:0007F670       Forms.TMonitor.GetWidth
+ 0001:0007F68C       Forms.TMonitor.GetBoundsRect
+ 0001:0007F6BC       Forms.TMonitor.GetWorkareaRect
+ 0001:0007F6EC       Forms.TMonitor.GetPrimary
+ 0001:0007F710       Forms.TScreen.Create
+ 0001:0007F868       Forms.TScreen.Destroy
+ 0001:0007F930       Forms.TScreen.GetHeight
+ 0001:0007F93C       Forms.TScreen.GetWidth
+ 0001:0007F948       Forms.TScreen.GetDesktopTop
+ 0001:0007F954       Forms.TScreen.GetDesktopLeft
+ 0001:0007F960       Forms.TScreen.GetDesktopHeight
+ 0001:0007F96C       Forms.TScreen.GetDesktopWidth
+ 0001:0007F978       Forms.TScreen.GetMonitor
+ 0001:0007F98C       Forms.TScreen.GetMonitorCount
+ 0001:0007F9A8       Forms.TScreen.GetForm
+ 0001:0007F9BC       Forms.TScreen.GetFormCount
+ 0001:0007F9C4       Forms.TScreen.GetCustomForms
+ 0001:0007F9D8       Forms.TScreen.GetCustomFormCount
+ 0001:0007F9E0       Forms.TScreen.UpdateLastActive
+ 0001:0007FA2C       Forms.TScreen.AddForm
+ 0001:0007FA64       Forms.TScreen.RemoveForm
+ 0001:0007FAB4       Forms.TScreen.AddDataModule
+ 0001:0007FAC0       Forms.TScreen.RemoveDataModule
+ 0001:0007FACC       Forms.TScreen.CreateCursors
+ 0001:0007FB28       Forms.TScreen.DestroyCursors
+ 0001:0007FB88       Forms.TScreen.DeleteCursor
+ 0001:0007FBD0       Forms.TScreen.FindMonitor
+ 0001:0007FC18       Forms.TScreen.InsertCursor
+ 0001:0007FC40       Forms.TScreen.GetImes
+ 0001:0007FE40       Forms.TScreen.GetDefaultIME
+ 0001:0007FE5C       Forms.TScreen.IconFontChanged
+ 0001:0007FEAC       Forms.TScreen.GetDataModule
+ 0001:0007FEC0       Forms.TScreen.GetDataModuleCount
+ 0001:0007FEC8       Forms.TScreen.GetCursors
+ 0001:0007FEF0       Forms.TScreen.SetCursor
+ 0001:0007FF8C       Forms.TScreen.SetCursors
+ 0001:0007FFD4       Forms.TScreen.GetMetricSettings
+ 0001:00080128       Forms.TScreen.DisableAlign
+ 0001:00080130       Forms.TScreen.EnableAlign
+ 0001:00080150       Forms.TScreen.Realign
+ 0001:00080158       Forms.InsertBefore
+ 0001:000801E0       Forms.DoPosition
+ 0001:0008039C       Forms.DoAlign
+ 0001:000804EC       Forms.AlignWork
+ 0001:00080544       Forms.TScreen.AlignForms
+ 0001:000805CC       Forms.TScreen.AlignForm
+ 0001:00080654       Forms.TScreen.ResetFonts
+ 0001:00080660       Forms.GetHint
+ 0001:00080698       Forms.GetHintControl
+ 0001:000806B8       Forms.HintTimerProc
+ 0001:0008070C       Forms.HintMouseThread
+ 0001:00080768       Forms.HintGetMsgHook
+ 0001:000807AC       Forms.HookHintHooks
+ 0001:00080820       Forms.UnhookHintHooks
+ 0001:0008087C       Forms.GetAnimation
+ 0001:000808AC       Forms.SetAnimation
+ 0001:000808D4       Forms.ShowWinNoAnimate
+ 0001:00080904       Forms.TScreen.GetWorkAreaHeight
+ 0001:00080920       Forms.TScreen.GetWorkAreaRect
+ 0001:00080930       Forms.TScreen.GetWorkAreaWidth
+ 0001:0008094C       Forms.TScreen.MonitorFromPoint
+ 0001:0008097C       Forms.TScreen.ClearMonitors
+ 0001:000809B4       Forms.TScreen.GetMonitors
+ 0001:000809D8       Forms.TScreen.GetPrimaryMonitor
+ 0001:00080A68       Forms.TApplication.Create
+ 0001:00080C84       Forms.TApplication.Destroy
+ 0001:00080DBC       Forms.TApplication.CreateHandle
+ 0001:00080F6C       Forms.TApplication.ControlDestroyed
+ 0001:00080FCC       Forms.GetTopMostWindows
+ 0001:0008103C       Forms.TApplication.DoNormalizeTopMosts
+ 0001:000810EC       Forms.TApplication.ModalStarted
+ 0001:00081118       Forms.TApplication.ModalFinished
+ 0001:00081144       Forms.TApplication.NormalizeTopMosts
+ 0001:0008114C       Forms.TApplication.NormalizeAllTopMosts
+ 0001:00081154       Forms.TApplication.RemovePopupForm
+ 0001:000811A4       Forms.TApplication.RestoreTopMosts
+ 0001:00081210       Forms.GetPopupOwnerWindows
+ 0001:00081280       Forms.TApplication.DoShowOwnedPopups
+ 0001:00081348       Forms.TApplication.UseRightToLeftReading
+ 0001:00081360       Forms.TApplication.UseRightToLeftAlignment
+ 0001:00081378       Forms.TApplication.CheckIniChange
+ 0001:000813D0       Forms.TApplication.SettingChange
+ 0001:0008143C       Forms.Default
+ 0001:00081478       Forms.DrawAppIcon
+ 0001:000814C4       Forms.TApplication.WndProc
+ 0001:00081BD8       Forms.TApplication.GetIconHandle
+ 0001:00081BF4       Forms.TApplication.Minimize
+ 0001:00081CB8       Forms.TApplication.Restore
+ 0001:00081DC4       Forms.TApplication.BringToFront
+ 0001:00081E00       Forms.TApplication.GetTitle
+ 0001:00081E4C       Forms.TApplication.SetTitle
+ 0001:00081EDC       Forms.TApplication.IsDlgMsg
+ 0001:00081F24       Forms.TApplication.IsMDIMsg
+ 0001:00081F74       Forms.TApplication.IsKeyMsg
+ 0001:00082068       Forms.TApplication.IsHintMsg
+ 0001:0008209C       Forms.TApplication.IsShortCut
+ 0001:00082108       Forms.TApplication.PopupControlProc
+ 0001:000821A4       Forms.TApplication.ProcessMessage
+ 0001:000822B8       Forms.TApplication.ProcessMessages
+ 0001:000822D0       Forms.TApplication.HandleMessage
+ 0001:000822F4       Forms.TApplication.HookMainWindow
+ 0001:00082350       Forms.TApplication.UnhookMainWindow
+ 0001:000823CC       Forms.TApplication.Initialize
+ 0001:000823E4       Forms.TApplication.CreateForm
+ 0001:00082464       Forms.TApplication.Run
+ 0001:00082550       Forms.TApplication.Terminate
+ 0001:00082564       Forms.IsClass
+ 0001:000825C0       Forms.TApplication.HandleException
+ 0001:00082650       Forms.TApplication.MessageBox
+ 0001:000827CC       Forms.TApplication.ShowException
+ 0001:000828A4       Forms.TApplication.InvokeHelp
+ 0001:000829C8       Forms.TApplication.DoOnHelp
+ 0001:00082A94       Forms.TApplication.HelpKeyword
+ 0001:00082B24       Forms.TApplication.HelpContext
+ 0001:00082BAC       Forms.TApplication.HelpCommand
+ 0001:00082BB4       Forms.TApplication.GetExeName
+ 0001:00082BC4       Forms.TApplication.SetShowHint
+ 0001:00082C14       Forms.TApplication.DoActionIdle
+ 0001:00082C78       Forms.TApplication.DoMouseIdle
+ 0001:00082C9C       Forms.IdleTimerProc
+ 0001:00082D04       Forms.TApplication.Idle
+ 0001:00082E60       Forms.TApplication.NotifyForms
+ 0001:00082E9C       Forms.TApplication.IconChanged
+ 0001:00082F00       Forms.TApplication.SetHint
+ 0001:00082F94       Forms.SetVisible
+ 0001:00082FF0       Forms.TApplication.UpdateVisible
+ 0001:00083078       Forms.TApplication.ValidateHelpSystem
+ 0001:00083098       Forms.TApplication.StartHintTimer
+ 0001:000830DC       Forms.TApplication.StopHintTimer
+ 0001:00083104       Forms.TApplication.HintMouseMessage
+ 0001:00083224       Forms.TApplication.HintTimerExpired
+ 0001:0008325C       Forms.TApplication.HideHint
+ 0001:000832D0       Forms.TApplication.CancelHint
+ 0001:000832F8       Forms.FindScanline
+ 0001:00083308       Forms.GetCursorHeightMargin
+ 0001:00083460       Forms.ValidateHintWindow
+ 0001:000834C0       Forms.MultiLineWidth
+ 0001:00083570       Forms.TApplication.ActivateHint
+ 0001:00083908       Forms.TApplication.AddPopupForm
+ 0001:000839D0       Forms.TApplication.GetCurrentHelpFile
+ 0001:00083A0C       Forms.TApplication.GetDialogHandle
+ 0001:00083A30       Forms.TApplication.SetDialogHandle
+ 0001:00083A5C       Forms.TApplication.GetActiveFormHandle
+ 0001:00083AA4       Forms.TApplication.GetMainFormHandle
+ 0001:00083AE4       Forms.TApplication.DispatchAction
+ 0001:00083B7C       Forms.TApplication.ExecuteAction
+ 0001:00083BA4       Forms.TApplication.UpdateAction
+ 0001:00083BCC       Forms.InitProcs
+ 0001:00083C18       Forms.TApplication.WakeMainThread
+ 0001:00083C28       Forms.TApplication.HookSynchronizeWakeup
+ 0001:00083C38       Forms.TApplication.UnhookSynchronizeWakeup
+ 0001:00083C48       Forms.TApplication.IsPreProcessMessage
+ 0001:00083CC4       Forms.Finalization
+ 0001:00083DDC       Buttons..TSpeedButtonActionLink
+ 0001:00083ED4       Buttons..TSpeedButton
+ 0001:000844C0       Buttons..TBitBtnActionLink
+ 0001:0008462C       Buttons..TBitBtn
+ 0001:00084B80       Buttons.GetBitBtnGlyph
+ 0001:00084C0C       Buttons..TGlyphList
+ 0001:00084CCC       Buttons..TGlyphCache
+ 0001:00084D24       Buttons..TButtonGlyph
+ 0001:00084D80       Buttons.TGlyphList.CreateSize
+ 0001:00084DD4       Buttons.TGlyphList.Destroy
+ 0001:00084E04       Buttons.TGlyphList.AllocateIndex
+ 0001:00084E50       Buttons.TGlyphList.AddMasked
+ 0001:00084E7C       Buttons.TGlyphList.Delete
+ 0001:00084EAC       Buttons.TGlyphCache.Create
+ 0001:00084EF0       Buttons.TGlyphCache.Destroy
+ 0001:00084F20       Buttons.TGlyphCache.GetList
+ 0001:00084F80       Buttons.TGlyphCache.ReturnList
+ 0001:00084FA4       Buttons.TGlyphCache.Empty
+ 0001:00084FB0       Buttons.TButtonGlyph.Create
+ 0001:00085040       Buttons.TButtonGlyph.Destroy
+ 0001:0008509C       Buttons.TButtonGlyph.Invalidate
+ 0001:000850E0       Buttons.TButtonGlyph.GlyphChanged
+ 0001:00085110       Buttons.TButtonGlyph.SetGlyph
+ 0001:00085188       Buttons.TButtonGlyph.SetNumGlyphs
+ 0001:000851B0       Buttons.TButtonGlyph.CreateButtonGlyph
+ 0001:00085784       Buttons.TButtonGlyph.DrawButtonGlyph
+ 0001:000858E0       Buttons.TButtonGlyph.DrawButtonText
+ 0001:000859D0       Buttons.TButtonGlyph.CalcButtonLayout
+ 0001:00085D14       Buttons.TButtonGlyph.Draw
+ 0001:00085D88       Buttons.TSpeedButtonActionLink.AssignClient
+ 0001:00085DAC       Buttons.TSpeedButtonActionLink.Create
+ 0001:00085DE8       Buttons.TSpeedButtonActionLink.IsCheckedLinked
+ 0001:00085E34       Buttons.TSpeedButtonActionLink.IsGroupIndexLinked
+ 0001:00085E64       Buttons.TSpeedButtonActionLink.IsImageIndexLinked
+ 0001:00085E94       Buttons.TSpeedButtonActionLink.SetChecked
+ 0001:00085EB4       Buttons.TSpeedButtonActionLink.SetGroupIndex
+ 0001:00085ED4       Buttons.TSpeedButtonActionLink.SetImageIndex
+ 0001:00085F40       Buttons.TSpeedButton.Create
+ 0001:00086000       Buttons.TSpeedButton.Destroy
+ 0001:00086038       Buttons.TSpeedButton.Paint
+ 0001:0008647C       Buttons.TSpeedButton.UpdateTracking
+ 0001:000864E0       Buttons.TSpeedButton.Loaded
+ 0001:0008650C       Buttons.TSpeedButton.MouseDown
+ 0001:00086568       Buttons.TSpeedButton.MouseMove
+ 0001:00086610       Buttons.TSpeedButton.MouseUp
+ 0001:00086710       Buttons.TSpeedButton.Click
+ 0001:00086718       Buttons.TSpeedButton.GetPalette
+ 0001:0008672C       Buttons.TSpeedButton.GetActionLinkClass
+ 0001:00086734       Buttons.TSpeedButton.GetGlyph
+ 0001:00086740       Buttons.TSpeedButton.SetGlyph
+ 0001:0008675C       Buttons.TSpeedButton.GetNumGlyphs
+ 0001:00086768       Buttons.TSpeedButton.SetNumGlyphs
+ 0001:00086798       Buttons.TSpeedButton.GlyphChanged
+ 0001:000867A8       Buttons.TSpeedButton.UpdateExclusive
+ 0001:000867E0       Buttons.TSpeedButton.SetDown
+ 0001:00086850       Buttons.TSpeedButton.SetFlat
+ 0001:00086870       Buttons.TSpeedButton.SetGroupIndex
+ 0001:00086884       Buttons.TSpeedButton.SetLayout
+ 0001:000868A4       Buttons.TSpeedButton.SetMargin
+ 0001:000868C8       Buttons.TSpeedButton.SetSpacing
+ 0001:000868E8       Buttons.TSpeedButton.SetTransparent
+ 0001:00086928       Buttons.TSpeedButton.SetAllowAllUp
+ 0001:0008693C       Buttons.TSpeedButton.WMLButtonDblClk
+ 0001:00086960       Buttons.TSpeedButton.CMEnabledChanged
+ 0001:00086994       Buttons.TSpeedButton.CMButtonPressed
+ 0001:00086A08       Buttons.TSpeedButton.CMDialogChar
+ 0001:00086AA0       Buttons.TSpeedButton.CMFontChanged
+ 0001:00086AB0       Buttons.TSpeedButton.CMTextChanged
+ 0001:00086AC0       Buttons.TSpeedButton.CMSysColorChange
+ 0001:00086AE4       Buttons.TSpeedButton.CMMouseEnter
+ 0001:00086B58       Buttons.TSpeedButton.CMMouseLeave
+ 0001:00086BC0       Buttons.TSpeedButton.CopyImage
+ 0001:00086C44       Buttons.TSpeedButton.ActionChange
+ 0001:00086D18       Buttons.TBitBtn.Create
+ 0001:00086DCC       Buttons.TBitBtn.Destroy
+ 0001:00086E08       Buttons.TBitBtn.CreateHandle
+ 0001:00086E34       Buttons.TBitBtn.CreateParams
+ 0001:00086E44       Buttons.TBitBtn.SetButtonStyle
+ 0001:00086E58       Buttons.TBitBtn.Click
+ 0001:00086EC8       Buttons.TBitBtn.CNMeasureItem
+ 0001:00086ED8       Buttons.TBitBtn.CNDrawItem
+ 0001:00086EE4       Buttons.TBitBtn.DrawItem
+ 0001:00087314       Buttons.TBitBtn.CMFontChanged
+ 0001:0008732C       Buttons.TBitBtn.CMEnabledChanged
+ 0001:00087344       Buttons.TBitBtn.WMLButtonDblClk
+ 0001:00087358       Buttons.TBitBtn.GetPalette
+ 0001:0008736C       Buttons.TBitBtn.SetGlyph
+ 0001:00087390       Buttons.TBitBtn.GetGlyph
+ 0001:0008739C       Buttons.TBitBtn.GlyphChanged
+ 0001:000873A8       Buttons.TBitBtn.IsCustom
+ 0001:000873BC       Buttons.TBitBtn.SetStyle
+ 0001:000873D4       Buttons.TBitBtn.SetKind
+ 0001:000874E0       Buttons.TBitBtn.IsCustomCaption
+ 0001:000875A0       Buttons.TBitBtn.GetKind
+ 0001:00087610       Buttons.TBitBtn.SetLayout
+ 0001:00087628       Buttons.TBitBtn.GetNumGlyphs
+ 0001:00087634       Buttons.TBitBtn.SetNumGlyphs
+ 0001:00087664       Buttons.TBitBtn.SetSpacing
+ 0001:0008767C       Buttons.TBitBtn.SetMargin
+ 0001:00087698       Buttons.TBitBtn.CopyImage
+ 0001:0008771C       Buttons.TBitBtn.ActionChange
+ 0001:000877D8       Buttons.DestroyLocals
+ 0001:000877F4       Buttons.TBitBtn.CMMouseEnter
+ 0001:00087830       Buttons.TBitBtn.CMMouseLeave
+ 0001:00087864       Buttons.TBitBtn.GetActionLinkClass
+ 0001:0008786C       Buttons.TBitBtnActionLink.AssignClient
+ 0001:00087890       Buttons.TBitBtnActionLink.Create
+ 0001:000878CC       Buttons.TBitBtnActionLink.IsImageIndexLinked
+ 0001:000878FC       Buttons.TBitBtnActionLink.SetImageIndex
+ 0001:000879EC       Buttons.Finalization
+ 0001:00087AC0       ToolWin..TToolWindow
+ 0001:00087C38       ToolWin..TToolDockForm
+ 0001:00087DE4       ToolWin.TToolWindow.Create
+ 0001:00087E48       ToolWin.TToolWindow.SetEdgeBorders
+ 0001:00087E70       ToolWin.TToolWindow.SetEdgeInner
+ 0001:00087E84       ToolWin.TToolWindow.SetEdgeOuter
+ 0001:00087E98       ToolWin.TToolWindow.NCPaint
+ 0001:00087F84       ToolWin.TToolWindow.WMNCCalcSize
+ 0001:00088000       ToolWin.TToolWindow.WMNCPaint
+ 0001:00088064       ToolWin.TToolWindow.CMBorderChanged
+ 0001:00088080       ToolWin.TToolWindow.CMCtl3DChanged
+ 0001:000880A8       ToolWin.TToolDockForm.Create
+ 0001:000880F4       ToolWin.TToolDockForm.CreateParams
+ 0001:00088108       ToolWin.TToolDockForm.CanResize
+ 0001:00088290       ToolWin.TToolDockForm.DoAddDockClient
+ 0001:000882B4       ToolWin.ModifySystemMenu
+ 0001:00088334       ToolWin.TToolDockForm.WMNCCreate
+ 0001:00088358       ToolWin.TToolDockForm.WMNCHitTest
+ 0001:00088454       ToolWin.TToolDockForm.WMNCLButtonDown
+ 0001:00088488       ToolWin.TToolDockForm.WMSize
+ 0001:000884C8       ToolWin.TToolDockForm.WMSysCommand
+ 0001:000884FC       ExtDlgs.Finalization
+ 0001:0008858C       Mapi.Finalization
+ 0001:000885DC       ExtActns.Finalization
+ 0001:000886DC       ListActns..TListControlItem
+ 0001:000888B4       ListActns..TListControlItems
+ 0001:00088A78       ListActns..TCustomListAction
+ 0001:00088BF4       ListActns..TCustomVirtualListAction
+ 0001:00088CF0       ListActns..TVirtualListAction
+ 0001:0008903C       ListActns..TStaticListItems
+ 0001:000890F4       ListActns..TCustomStaticListAction
+ 0001:00089404       ListActns..TStaticListAction
+ 0001:00089708       ListActns..TListActionLink
+ 0001:00089814       ListActns.TListControlItem.Assign
+ 0001:0008989C       ListActns.TListControlItem.Changed
+ 0001:000898AC       ListActns.TListControlItem.Create
+ 0001:000898E8       ListActns.TListControlItem.GetDisplayName
+ 0001:00089918       ListActns.TListControlItem.SetCaption
+ 0001:00089934       ListActns.TListControlItem.SetData
+ 0001:00089940       ListActns.TListControlItem.SetImageIndex
+ 0001:0008994C       ListActns.ListItemsCompare
+ 0001:00089978       ListActns.TListControlItems.Add
+ 0001:00089988       ListActns.TListControlItems.CustomSort
+ 0001:000899B8       ListActns.TListControlItems.CompareItems
+ 0001:00089A60       ListActns.TListControlItems.ExchangeItems
+ 0001:00089ABC       ListActns.TListControlItems.QuickSort
+ 0001:00089B50       ListActns.TListControlItems.GetListItem
+ 0001:00089B64       ListActns.TListControlItems.SetSortType
+ 0001:00089B7C       ListActns.TListControlItems.Sort
+ 0001:00089B88       ListActns.TListControlItems.Create
+ 0001:00089BD0       ListActns.TCustomListAction.Create
+ 0001:00089C28       ListActns.TCustomListAction.ExecuteTarget
+ 0001:00089D50       ListActns.TCustomListAction.GetCount
+ 0001:00089D7C       ListActns.TCustomListAction.GetString
+ 0001:00089D88       ListActns.TCustomListAction.HandlesTarget
+ 0001:00089D8C       ListActns.TCustomListAction.Loaded
+ 0001:00089DC0       ListActns.TCustomListAction.SetActive
+ 0001:00089EC4       ListActns.TCustomListAction.SetImages
+ 0001:00089F30       ListActns.TCustomListAction.SetItemIndex
+ 0001:00089F8C       ListActns.TCustomListAction.SetString
+ 0001:00089F90       ListActns.TCustomVirtualListAction.GetItem
+ 0001:00089FE0       ListActns.TCustomVirtualListAction.GetString
+ 0001:0008A0C0       ListActns.TStaticListItems.Notify
+ 0001:0008A254       ListActns.TStaticListItems.Update
+ 0001:0008A370       ListActns.TCustomStaticListAction.Create
+ 0001:0008A3D0       ListActns.TCustomStaticListAction.Destroy
+ 0001:0008A400       ListActns.TCustomStaticListAction.GetCount
+ 0001:0008A40C       ListActns.TCustomStaticListAction.GetItem
+ 0001:0008A470       ListActns.TCustomStaticListAction.GetItemClass
+ 0001:0008A478       ListActns.TCustomStaticListAction.GetString
+ 0001:0008A49C       ListActns.TCustomStaticListAction.SetListitems
+ 0001:0008A4AC       ListActns.TCustomStaticListAction.SetString
+ 0001:0008A4D0       ListActns.TListActionLink.IsActiveLinked
+ 0001:0008A4E4       ListActns.TListActionLink.IsImagesLinked
+ 0001:0008A510       ListActns.TListActionLink.SetAction
+ 0001:0008A554       ListActns.TListActionLink.SetActive
+ 0001:0008A5C0       ListActns.TListActionLink.SetImages
+ 0001:0008A5C4       ListActns.TListActionLink.RefreshControl
+ 0001:0008A718       ListActns.TListActionLink.AddItem
+ 0001:0008A71C       ListActns.TListActionLink.AddItem
+ 0001:0008A748       ListActns.TListActionLink.SetItemIndex
+ 0001:0008A920       ComCtrls..TCustomTabControl
+ 0001:0008AADC       ComCtrls..TTabControl
+ 0001:0008B414       ComCtrls..TTabSheet
+ 0001:0008BA74       ComCtrls..TPageControl
+ 0001:0008C478       ComCtrls..TStatusPanel
+ 0001:0008C61C       ComCtrls..TStatusPanels
+ 0001:0008C730       ComCtrls..TCustomStatusBar
+ 0001:0008C96C       ComCtrls..TStatusBar
+ 0001:0008D25C       ComCtrls..THeaderSection
+ 0001:0008D498       ComCtrls..THeaderSections
+ 0001:0008D860       ComCtrls..TCustomHeaderControl
+ 0001:0008DEE4       ComCtrls..THeaderControl
+ 0001:0008E694       ComCtrls..TTreeNode
+ 0001:0008E730       ComCtrls..TTreeNodes
+ 0001:0008E884       ComCtrls..ETreeViewError
+ 0001:0008EE38       ComCtrls..TCustomTreeView
+ 0001:0008F07C       ComCtrls..TTreeView
+ 0001:0008FE38       ComCtrls..TTextAttributes
+ 0001:0008FECC       ComCtrls..TParaAttributes
+ 0001:00090098       ComCtrls..TConversion
+ 0001:00090120       ComCtrls..TCustomRichEdit
+ 0001:000902F0       ComCtrls..TRichEdit
+ 0001:00091068       ComCtrls..TCustomUpDown
+ 0001:000911F0       ComCtrls..TUpDown
+ 0001:000917D4       ComCtrls..TListColumn
+ 0001:00091998       ComCtrls..TListColumns
+ 0001:00091A4C       ComCtrls..TListItem
+ 0001:00091AE4       ComCtrls..TListItems
+ 0001:00091B70       ComCtrls..TWorkArea
+ 0001:00091C1C       ComCtrls..TWorkAreas
+ 0001:00091D00       ComCtrls..TIconOptions
+ 0001:00092A7C       ComCtrls..TCustomListView
+ 0001:00092CF0       ComCtrls..TListView
+ 0001:00093D24       ComCtrls..TListViewActionLink
+ 0001:00093ED4       ComCtrls..TAnimate
+ 0001:0009441C       ComCtrls..TToolButtonActionLink
+ 0001:00094514       ComCtrls..TToolButton
+ 0001:00095018       ComCtrls..TToolBar
+ 0001:00095E7C       ComCtrls..ECommonCalendarError
+ 0001:00095EE0       ComCtrls..TMonthCalColors
+ 0001:00096150       ComCtrls..TCommonCalendar
+ 0001:000962CC       ComCtrls..EMonthCalError
+ 0001:00096328       ComCtrls..TMonthCalendar
+ 0001:00096BA4       ComCtrls..TComboExItem
+ 0001:00096CD8       ComCtrls..TComboExItems
+ 0001:00096D8C       ComCtrls..TComboBoxExStrings
+ 0001:00096EA4       ComCtrls..TCustomComboBoxEx
+ 0001:00097098       ComCtrls..TComboBoxExActionLink
+ 0001:000971C4       ComCtrls.InitCommonControl
+ 0001:000971F0       ComCtrls.CheckCommonControl
+ 0001:00097218       ComCtrls.GetShellModule
+ 0001:00097260       ComCtrls.GetComCtlVersion
+ 0001:00097298       ComCtrls.SetComCtlStyle
+ 0001:000972E0       ComCtrls..TTabStrings
+ 0001:000973E0       ComCtrls.TabControlError
+ 0001:000973F8       ComCtrls.TTabStrings.Clear
+ 0001:00097468       ComCtrls.TTabStrings.Delete
+ 0001:00097504       ComCtrls.TTabStrings.Get
+ 0001:000975FC       ComCtrls.TTabStrings.GetCount
+ 0001:00097618       ComCtrls.TTabStrings.GetObject
+ 0001:000976B8       ComCtrls.TTabStrings.Put
+ 0001:00097798       ComCtrls.TTabStrings.PutObject
+ 0001:00097838       ComCtrls.TTabStrings.Insert
+ 0001:00097918       ComCtrls.TTabStrings.SetUpdateState
+ 0001:00097960       ComCtrls.TCustomTabControl.Create
+ 0001:00097A20       ComCtrls.TCustomTabControl.Destroy
+ 0001:00097A74       ComCtrls.TCustomTabControl.CanChange
+ 0001:00097AA0       ComCtrls.TCustomTabControl.CanShowTab
+ 0001:00097AA4       ComCtrls.TCustomTabControl.Change
+ 0001:00097AC4       ComCtrls.TCustomTabControl.CreateParams
+ 0001:00097BCC       ComCtrls.TCustomTabControl.CreateWnd
+ 0001:00097C54       ComCtrls.TCustomTabControl.DrawTab
+ 0001:00097C90       ComCtrls.TCustomTabControl.GetDisplayRect
+ 0001:00097CC4       ComCtrls.TCustomTabControl.GetImageIndex
+ 0001:00097CEC       ComCtrls.TCustomTabControl.GetTabIndex
+ 0001:00097D08       ComCtrls.TCustomTabControl.Loaded
+ 0001:00097D24       ComCtrls.TCustomTabControl.SetHotTrack
+ 0001:00097D38       ComCtrls.TCustomTabControl.Notification
+ 0001:00097D68       ComCtrls.TCustomTabControl.SetImages
+ 0001:00097DD8       ComCtrls.TCustomTabControl.ImageListChange
+ 0001:00097DF8       ComCtrls.TCustomTabControl.InternalSetMultiLine
+ 0001:00097E88       ComCtrls.TCustomTabControl.SetMultiLine
+ 0001:00097EA8       ComCtrls.TCustomTabControl.SetMultiSelect
+ 0001:00097EBC       ComCtrls.TCustomTabControl.SetOwnerDraw
+ 0001:00097ED0       ComCtrls.TCustomTabControl.SetRaggedRight
+ 0001:00097EEC       ComCtrls.TCustomTabControl.SetScrollOpposite
+ 0001:00097F0C       ComCtrls.TCustomTabControl.SetStyle
+ 0001:00097F9C       ComCtrls.TCustomTabControl.SetTabHeight
+ 0001:00098048       ComCtrls.TCustomTabControl.SetTabIndex
+ 0001:0009806C       ComCtrls.TCustomTabControl.SetTabPosition
+ 0001:00098104       ComCtrls.TCustomTabControl.SetTabs
+ 0001:00098114       ComCtrls.TCustomTabControl.SetTabWidth
+ 0001:000981D8       ComCtrls.TCustomTabControl.TabsChanged
+ 0001:00098218       ComCtrls.TCustomTabControl.UpdateTabSize
+ 0001:00098240       ComCtrls.TCustomTabControl.UpdateTabImages
+ 0001:0009833C       ComCtrls.TCustomTabControl.CNDrawItem
+ 0001:00098430       ComCtrls.TCustomTabControl.WMDestroy
+ 0001:000984C0       ComCtrls.TCustomTabControl.WMNotifyFormat
+ 0001:000984E4       ComCtrls.TCustomTabControl.WMSize
+ 0001:00098504       ComCtrls.TCustomTabControl.CMFontChanged
+ 0001:0009852C       ComCtrls.TCustomTabControl.CMSysColorChange
+ 0001:00098554       ComCtrls.TCustomTabControl.CMTabStopChanged
+ 0001:00098560       ComCtrls.TCustomTabControl.CNNotify
+ 0001:000985A4       ComCtrls.TCustomTabControl.CMDialogChar
+ 0001:00098688       ComCtrls.TCustomTabControl.AdjustClientRect
+ 0001:000986B8       ComCtrls.TCustomTabControl.TCMAdjustRect
+ 0001:0009873C       ComCtrls.TCustomTabControl.GetTabs
+ 0001:00098750       ComCtrls.TTabSheet.Create
+ 0001:000987B8       ComCtrls.TTabSheet.Destroy
+ 0001:00098804       ComCtrls.TTabSheet.DoHide
+ 0001:00098824       ComCtrls.TTabSheet.DoShow
+ 0001:00098844       ComCtrls.TTabSheet.GetPageIndex
+ 0001:00098860       ComCtrls.TTabSheet.GetTabIndex
+ 0001:000988B0       ComCtrls.TTabSheet.CreateParams
+ 0001:000988CC       ComCtrls.TTabSheet.ReadState
+ 0001:00098900       ComCtrls.TTabSheet.SetImageIndex
+ 0001:00098928       ComCtrls.TTabSheet.SetPageControl
+ 0001:0009895C       ComCtrls.TTabSheet.SetPageIndex
+ 0001:000989F0       ComCtrls.TTabSheet.SetTabShowing
+ 0001:00098A34       ComCtrls.TTabSheet.SetTabVisible
+ 0001:00098A48       ComCtrls.TTabSheet.UpdateControlOriginalParentSize
+ 0001:00098A78       ComCtrls.TTabSheet.UpdateTabShowing
+ 0001:00098A98       ComCtrls.TTabSheet.CMTextChanged
+ 0001:00098AB0       ComCtrls.TTabSheet.CMShowingChanged
+ 0001:00098B58       ComCtrls.TTabSheet.SetHighlighted
+ 0001:00098BF4       ComCtrls.TTabSheet.WMNCPaint
+ 0001:00098D0C       ComCtrls.TTabSheet.WMPrintClient
+ 0001:00098D54       ComCtrls.TPageControl.Create
+ 0001:00098DA8       ComCtrls.TPageControl.Destroy
+ 0001:00098E08       ComCtrls.TPageControl.UpdateTabHighlights
+ 0001:00098E48       ComCtrls.TPageControl.Loaded
+ 0001:00098E5C       ComCtrls.TPageControl.CanShowTab
+ 0001:00098E80       ComCtrls.TPageControl.Change
+ 0001:00098EC8       ComCtrls.TPageControl.ChangeActivePage
+ 0001:00098FD0       ComCtrls.TPageControl.DeleteTab
+ 0001:0009902C       ComCtrls.TPageControl.DoAddDockClient
+ 0001:00099048       ComCtrls.TPageControl.DockOver
+ 0001:0009909C       ComCtrls.TPageControl.DoRemoveDockClient
+ 0001:000990D0       ComCtrls.TPageControl.FindNextPage
+ 0001:00099158       ComCtrls.TPageControl.GetChildren
+ 0001:00099198       ComCtrls.TPageControl.GetImageIndex
+ 0001:00099214       ComCtrls.TPageControl.GetPageFromDockClient
+ 0001:00099264       ComCtrls.TPageControl.GetPage
+ 0001:0009927C       ComCtrls.TPageControl.GetPageCount
+ 0001:00099288       ComCtrls.TPageControl.GetSiteInfo
+ 0001:000992CC       ComCtrls.TPageControl.InsertPage
+ 0001:000992F0       ComCtrls.TPageControl.InsertTab
+ 0001:0009935C       ComCtrls.TPageControl.MoveTab
+ 0001:0009937C       ComCtrls.TPageControl.RemovePage
+ 0001:000993CC       ComCtrls.TPageControl.SelectNextPage
+ 0001:00099418       ComCtrls.TPageControl.SetActivePage
+ 0001:000994AC       ComCtrls.TPageControl.SetChildOrder
+ 0001:000994B8       ComCtrls.TPageControl.ShowControl
+ 0001:000994EC       ComCtrls.TPageControl.UpdateTab
+ 0001:0009954C       ComCtrls.TPageControl.UpdateActivePage
+ 0001:00099588       ComCtrls.TPageControl.CMDesignHitTest
+ 0001:000995F4       ComCtrls.TPageControl.CMDialogKey
+ 0001:00099660       ComCtrls.TPageControl.CMDockClient
+ 0001:000997FC       ComCtrls.TPageControl.CMDockNotification
+ 0001:000998D4       ComCtrls.TPageControl.CMUnDockClient
+ 0001:00099900       ComCtrls.TPageControl.GetDockClientFromMousePos
+ 0001:00099990       ComCtrls.TPageControl.WMLButtonDown
+ 0001:000999E4       ComCtrls.TPageControl.WMLButtonDblClk
+ 0001:00099A30       ComCtrls.TPageControl.SetActivePageIndex
+ 0001:00099A68       ComCtrls.TPageControl.SetTabIndex
+ 0001:00099AC0       ComCtrls.TPageControl.WMEraseBkGnd
+ 0001:00099AF8       ComCtrls.TPageControl.PageIndexFromTabIndex
+ 0001:00099B28       ComCtrls.TStatusPanel.Create
+ 0001:00099B74       ComCtrls.TStatusPanel.Assign
+ 0001:00099BD4       ComCtrls.TStatusPanel.SetBiDiMode
+ 0001:00099BE8       ComCtrls.TStatusPanel.IsBiDiModeStored
+ 0001:00099BF0       ComCtrls.TStatusPanel.SetParentBiDiMode
+ 0001:00099C00       ComCtrls.TStatusPanel.ParentBiDiModeChanged
+ 0001:00099C3C       ComCtrls.TStatusPanel.UseRightToLeftReading
+ 0001:00099C54       ComCtrls.TStatusPanel.UseRightToLeftAlignment
+ 0001:00099C6C       ComCtrls.TStatusPanel.GetDisplayName
+ 0001:00099C90       ComCtrls.TStatusPanel.SetAlignment
+ 0001:00099CA0       ComCtrls.TStatusPanel.SetBevel
+ 0001:00099CB0       ComCtrls.TStatusPanel.SetStyle
+ 0001:00099CC0       ComCtrls.TStatusPanel.SetText
+ 0001:00099CE8       ComCtrls.TStatusPanel.SetWidth
+ 0001:00099CF8       ComCtrls.TStatusPanels.Create
+ 0001:00099D58       ComCtrls.TStatusPanels.Add
+ 0001:00099D64       ComCtrls.TStatusPanels.GetItem
+ 0001:00099D78       ComCtrls.TStatusPanels.GetOwner
+ 0001:00099D7C       ComCtrls.TStatusPanels.Update
+ 0001:00099DAC       ComCtrls.TCustomStatusBar.Create
+ 0001:00099E64       ComCtrls.TCustomStatusBar.Destroy
+ 0001:00099EA0       ComCtrls.TCustomStatusBar.CreateParams
+ 0001:00099F24       ComCtrls.TCustomStatusBar.CreateWnd
+ 0001:00099FAC       ComCtrls.TCustomStatusBar.DoHint
+ 0001:00099FD0       ComCtrls.TCustomStatusBar.DrawPanel
+ 0001:0009A000       ComCtrls.TCustomStatusBar.SetPanels
+ 0001:0009A010       ComCtrls.TCustomStatusBar.SetSimplePanel
+ 0001:0009A04C       ComCtrls.TCustomStatusBar.DoRightToLeftAlignment
+ 0001:0009A0B4       ComCtrls.TCustomStatusBar.UpdateSimpleText
+ 0001:0009A118       ComCtrls.TCustomStatusBar.SetSimpleText
+ 0001:0009A144       ComCtrls.TCustomStatusBar.CMBiDiModeChanged
+ 0001:0009A1BC       ComCtrls.TCustomStatusBar.FlipChildren
+ 0001:0009A37C       ComCtrls.TCustomStatusBar.SetSizeGrip
+ 0001:0009A394       ComCtrls.TCustomStatusBar.SyncToSystemFont
+ 0001:0009A3C4       ComCtrls.TCustomStatusBar.UpdatePanel
+ 0001:0009A550       ComCtrls.TCustomStatusBar.UpdatePanels
+ 0001:0009A66C       ComCtrls.TCustomStatusBar.CMWinIniChange
+ 0001:0009A694       ComCtrls.TCustomStatusBar.CNDrawItem
+ 0001:0009A7A0       ComCtrls.TCustomStatusBar.WMGetTextLength
+ 0001:0009A7B4       ComCtrls.TCustomStatusBar.WMPaint
+ 0001:0009A7D4       ComCtrls.TCustomStatusBar.WMSize
+ 0001:0009A7F8       ComCtrls.TCustomStatusBar.IsFontStored
+ 0001:0009A814       ComCtrls.TCustomStatusBar.SetUseSystemFont
+ 0001:0009A844       ComCtrls.TCustomStatusBar.CMColorChanged
+ 0001:0009A858       ComCtrls.TCustomStatusBar.CMParentFontChanged
+ 0001:0009A87C       ComCtrls.TCustomStatusBar.ExecuteAction
+ 0001:0009A8FC       ComCtrls.TCustomStatusBar.CMSysColorChange
+ 0001:0009A910       ComCtrls.TCustomStatusBar.CMSysFontChanged
+ 0001:0009A924       ComCtrls.TCustomStatusBar.ChangeScale
+ 0001:0009A94C       ComCtrls.TCustomStatusBar.SetBounds
+ 0001:0009A970       ComCtrls.TCustomStatusBar.SetParent
+ 0001:0009A978       ComCtrls.TCustomStatusBar.ValidateSizeGrip
+ 0001:0009AA08       ComCtrls.TCustomStatusBar.CreatePanel
+ 0001:0009AA44       ComCtrls.TCustomStatusBar.CreatePanels
+ 0001:0009AA54       ComCtrls.TCustomStatusBar.GetPanelClass
+ 0001:0009AA5C       ComCtrls.TCustomStatusBar.WMEraseBkGnd
+ 0001:0009AABC       ComCtrls.THeaderSection.Create
+ 0001:0009AB18       ComCtrls.THeaderSection.Assign
+ 0001:0009AB90       ComCtrls.THeaderSection.SetBiDiMode
+ 0001:0009ABA4       ComCtrls.THeaderSection.IsBiDiModeStored
+ 0001:0009ABAC       ComCtrls.THeaderSection.SetParentBiDiMode
+ 0001:0009ABBC       ComCtrls.THeaderSection.ParentBiDiModeChanged
+ 0001:0009ABF8       ComCtrls.THeaderSection.UseRightToLeftReading
+ 0001:0009AC10       ComCtrls.THeaderSection.UseRightToLeftAlignment
+ 0001:0009AC28       ComCtrls.THeaderSection.GetDisplayName
+ 0001:0009AC4C       ComCtrls.THeaderSection.GetLeft
+ 0001:0009AC80       ComCtrls.THeaderSection.SetAlignment
+ 0001:0009AC90       ComCtrls.THeaderSection.SetAutoSize
+ 0001:0009ACB0       ComCtrls.THeaderSection.SetMaxWidth
+ 0001:0009ACD4       ComCtrls.THeaderSection.SetMinWidth
+ 0001:0009ACF0       ComCtrls.THeaderSection.SetStyle
+ 0001:0009AD00       ComCtrls.THeaderSection.SetText
+ 0001:0009AD28       ComCtrls.THeaderSection.SetWidth
+ 0001:0009AD70       ComCtrls.THeaderSection.SetImageIndex
+ 0001:0009AD80       ComCtrls.THeaderSections.Create
+ 0001:0009ADC4       ComCtrls.THeaderSections.Add
+ 0001:0009ADD0       ComCtrls.THeaderSections.GetItem
+ 0001:0009ADE4       ComCtrls.THeaderSections.GetOwner
+ 0001:0009ADE8       ComCtrls.THeaderSections.Update
+ 0001:0009AE14       ComCtrls.THeaderSections.AddItem
+ 0001:0009AE64       ComCtrls.TCustomHeaderControl.Create
+ 0001:0009AF34       ComCtrls.TCustomHeaderControl.Destroy
+ 0001:0009AF8C       ComCtrls.TCustomHeaderControl.CreateParams
+ 0001:0009B004       ComCtrls.ReadSections
+ 0001:0009B0D0       ComCtrls.TCustomHeaderControl.CreateWnd
+ 0001:0009B140       ComCtrls.TCustomHeaderControl.DestroyWnd
+ 0001:0009B1F0       ComCtrls.TCustomHeaderControl.CMBiDiModeChanged
+ 0001:0009B24C       ComCtrls.TCustomHeaderControl.FlipChildren
+ 0001:0009B3F8       ComCtrls.TCustomHeaderControl.DrawSection
+ 0001:0009B434       ComCtrls.TCustomHeaderControl.SectionClick
+ 0001:0009B454       ComCtrls.TCustomHeaderControl.SectionResize
+ 0001:0009B474       ComCtrls.TCustomHeaderControl.SectionTrack
+ 0001:0009B4A0       ComCtrls.TCustomHeaderControl.SetFullDrag
+ 0001:0009B4B4       ComCtrls.TCustomHeaderControl.SetHotTrack
+ 0001:0009B4C8       ComCtrls.TCustomHeaderControl.SetStyle
+ 0001:0009B4DC       ComCtrls.TCustomHeaderControl.SetDragReorder
+ 0001:0009B4F0       ComCtrls.TCustomHeaderControl.SetSections
+ 0001:0009B500       ComCtrls.TCustomHeaderControl.UpdateItem
+ 0001:0009B608       ComCtrls.TCustomHeaderControl.UpdateSection
+ 0001:0009B62C       ComCtrls.TCustomHeaderControl.UpdateSections
+ 0001:0009B6A8       ComCtrls.TCustomHeaderControl.CNDrawItem
+ 0001:0009B7C0       ComCtrls.TCustomHeaderControl.CNNotify
+ 0001:0009BAA4       ComCtrls.FullWindowUpdate
+ 0001:0009BADC       ComCtrls.TCustomHeaderControl.WndProc
+ 0001:0009BB80       ComCtrls.TCustomHeaderControl.WMLButtonDown
+ 0001:0009BBE0       ComCtrls.TCustomHeaderControl.WMSize
+ 0001:0009BD8C       ComCtrls.TCustomHeaderControl.WMWindowPosChanged
+ 0001:0009BDA4       ComCtrls.TCustomHeaderControl.DoSectionDrag
+ 0001:0009BDC8       ComCtrls.TCustomHeaderControl.Notification
+ 0001:0009BDFC       ComCtrls.TCustomHeaderControl.SetImages
+ 0001:0009BE80       ComCtrls.TCustomHeaderControl.ImageListChange
+ 0001:0009BEB0       ComCtrls.TCustomHeaderControl.SectionDrag
+ 0001:0009BF00       ComCtrls.UpdateSectionOrder
+ 0001:0009C034       ComCtrls.TCustomHeaderControl.DoSectionEndDrag
+ 0001:0009C090       ComCtrls.TCustomHeaderControl.SectionEndDrag
+ 0001:0009C0B0       ComCtrls.TCustomHeaderControl.CreateSection
+ 0001:0009C0E8       ComCtrls.TCustomHeaderControl.CreateSections
+ 0001:0009C0F8       ComCtrls.DefaultTreeViewSort
+ 0001:0009C164       ComCtrls.TreeViewError
+ 0001:0009C17C       ComCtrls.TTreeNode.Create
+ 0001:0009C1C8       ComCtrls.TTreeNode.Destroy
+ 0001:0009C2B0       ComCtrls.TTreeNode.GetHandle
+ 0001:0009C2C4       ComCtrls.TTreeNode.GetTreeView
+ 0001:0009C2CC       ComCtrls.TTreeNode.HasAsParent
+ 0001:0009C30C       ComCtrls.TTreeNode.SetText
+ 0001:0009C3B0       ComCtrls.TTreeNode.SetData
+ 0001:0009C420       ComCtrls.TTreeNode.GetState
+ 0001:0009C4BC       ComCtrls.TTreeNode.SetState
+ 0001:0009C560       ComCtrls.TTreeNode.SetImageIndex
+ 0001:0009C5BC       ComCtrls.TTreeNode.SetSelectedIndex
+ 0001:0009C618       ComCtrls.TTreeNode.SetOverlayIndex
+ 0001:0009C668       ComCtrls.TTreeNode.SetStateIndex
+ 0001:0009C6BC       ComCtrls.TTreeNode.CompareCount
+ 0001:0009C6F4       ComCtrls.TTreeNode.DoCanExpand
+ 0001:0009C748       ComCtrls.TTreeNode.DoExpand
+ 0001:0009C78C       ComCtrls.TTreeNode.ExpandItem
+ 0001:0009C884       ComCtrls.TTreeNode.Expand
+ 0001:0009C890       ComCtrls.TTreeNode.Collapse
+ 0001:0009C89C       ComCtrls.TTreeNode.GetExpanded
+ 0001:0009C8A4       ComCtrls.TTreeNode.SetExpanded
+ 0001:0009C8D0       ComCtrls.TTreeNode.GetSelected
+ 0001:0009C8D8       ComCtrls.TTreeNode.SetSelected
+ 0001:0009C978       ComCtrls.TTreeNode.SetSelectedBit
+ 0001:0009C984       ComCtrls.TTreeNode.GetCut
+ 0001:0009C98C       ComCtrls.TTreeNode.SetCut
+ 0001:0009C9AC       ComCtrls.TTreeNode.GetDropTarget
+ 0001:0009C9B4       ComCtrls.TTreeNode.SetDropTarget
+ 0001:0009C9FC       ComCtrls.TTreeNode.GetChildren
+ 0001:0009CA44       ComCtrls.TTreeNode.SetFocused
+ 0001:0009CA64       ComCtrls.TTreeNode.GetFocused
+ 0001:0009CA6C       ComCtrls.TTreeNode.SetChildren
+ 0001:0009CAA8       ComCtrls.TTreeNode.GetParent
+ 0001:0009CAE4       ComCtrls.TTreeNode.getNextSibling
+ 0001:0009CB20       ComCtrls.TTreeNode.getPrevSibling
+ 0001:0009CB5C       ComCtrls.TTreeNode.GetNextVisible
+ 0001:0009CBA0       ComCtrls.TTreeNode.GetPrevVisible
+ 0001:0009CBE4       ComCtrls.TTreeNode.GetNextChild
+ 0001:0009CBF4       ComCtrls.TTreeNode.getFirstChild
+ 0001:0009CC30       ComCtrls.TTreeNode.GetLastChild
+ 0001:0009CC50       ComCtrls.TTreeNode.GetNext
+ 0001:0009CCD0       ComCtrls.TTreeNode.GetPrev
+ 0001:0009CD00       ComCtrls.TTreeNode.GetAbsoluteIndex
+ 0001:0009CD3C       ComCtrls.TTreeNode.GetIndex
+ 0001:0009CD5C       ComCtrls.TTreeNode.GetItem
+ 0001:0009CDFC       ComCtrls.TTreeNode.IndexOf
+ 0001:0009CE38       ComCtrls.TTreeNode.GetCount
+ 0001:0009CE5C       ComCtrls.TTreeNode.InternalMove
+ 0001:0009CFF4       ComCtrls.TTreeNode.MoveTo
+ 0001:0009D180       ComCtrls.TTreeNode.IsFirstNode
+ 0001:0009D1A8       ComCtrls.TTreeNode.MakeVisible
+ 0001:0009D1DC       ComCtrls.TTreeNode.GetLevel
+ 0001:0009D200       ComCtrls.TTreeNode.IsNodeVisible
+ 0001:0009D230       ComCtrls.TTreeNode.DisplayRect
+ 0001:0009D26C       ComCtrls.TTreeNode.AlphaSort
+ 0001:0009D278       ComCtrls.TTreeNode.CustomSort
+ 0001:0009D324       ComCtrls.TTreeNode.Delete
+ 0001:0009D330       ComCtrls.TTreeNode.DeleteChildren
+ 0001:0009D370       ComCtrls.TTreeNode.Assign
+ 0001:0009D424       ComCtrls.TTreeNode.IsEqual
+ 0001:0009D44C       ComCtrls.TTreeNode.ReadData
+ 0001:0009D54C       ComCtrls.TTreeNode.ReadNodeData
+ 0001:0009D680       ComCtrls.TTreeNode.WriteNodeData
+ 0001:0009D7AC       ComCtrls.TTreeNodes.Create
+ 0001:0009D7E8       ComCtrls.TTreeNodes.Destroy
+ 0001:0009D814       ComCtrls.TTreeNodes.GetCount
+ 0001:0009D840       ComCtrls.TTreeNodes.GetHandle
+ 0001:0009D84C       ComCtrls.TTreeNodes.Delete
+ 0001:0009D854       ComCtrls.TTreeNodes.Clear
+ 0001:0009D8E8       ComCtrls.TTreeNodes.AddChildFirst
+ 0001:0009D8F8       ComCtrls.TTreeNodes.AddChildObjectFirst
+ 0001:0009D910       ComCtrls.TTreeNodes.AddChild
+ 0001:0009D920       ComCtrls.TTreeNodes.AddChildObject
+ 0001:0009D938       ComCtrls.TTreeNodes.AddFirst
+ 0001:0009D948       ComCtrls.TTreeNodes.AddObjectFirst
+ 0001:0009D960       ComCtrls.TTreeNodes.Add
+ 0001:0009D970       ComCtrls.TTreeNodes.AddObject
+ 0001:0009D988       ComCtrls.TTreeNodes.AddNode
+ 0001:0009DB3C       ComCtrls.TTreeNodes.Repaint
+ 0001:0009DB90       ComCtrls.TTreeNodes.AddedNode
+ 0001:0009DBB0       ComCtrls.TTreeNodes.CreateItem
+ 0001:0009DBD4       ComCtrls.TTreeNodes.AddItem
+ 0001:0009DC54       ComCtrls.TTreeNodes.GetFirstNode
+ 0001:0009DC70       ComCtrls.TTreeNodes.GetNodeFromIndex
+ 0001:0009DD58       ComCtrls.TTreeNodes.GetNode
+ 0001:0009DD90       ComCtrls.TTreeNodes.BeginUpdate
+ 0001:0009DDA8       ComCtrls.TTreeNodes.SetUpdateState
+ 0001:0009DDDC       ComCtrls.TTreeNodes.EndUpdate
+ 0001:0009DDF0       ComCtrls.TTreeNodes.Assign
+ 0001:0009DE84       ComCtrls.WriteNodes
+ 0001:0009DF14       ComCtrls.TTreeNodes.DefineProperties
+ 0001:0009DF9C       ComCtrls.TTreeNodes.ReadData
+ 0001:0009E064       ComCtrls.TTreeNodes.ReadNodeData
+ 0001:0009E148       ComCtrls.TTreeNodes.WriteNodeData
+ 0001:0009E1C4       ComCtrls.TTreeNodes.ReadExpandedState
+ 0001:0009E240       ComCtrls.TTreeNodes.WriteExpandedState
+ 0001:0009E29C       ComCtrls.TTreeNodes.ClearCache
+ 0001:0009E2A4       ComCtrls.TCustomTreeView.Create
+ 0001:0009E45C       ComCtrls.TCustomTreeView.Destroy
+ 0001:0009E50C       ComCtrls.TCustomTreeView.CreateParams
+ 0001:0009E624       ComCtrls.TCustomTreeView.CreateWnd
+ 0001:0009E86C       ComCtrls.TCustomTreeView.DestroyWnd
+ 0001:0009EA48       ComCtrls.TCustomTreeView.EditWndProc
+ 0001:0009EB48       ComCtrls.TCustomTreeView.CMColorChanged
+ 0001:0009EB78       ComCtrls.TCustomTreeView.CMCtl3DChanged
+ 0001:0009EB94       ComCtrls.TCustomTreeView.CMFontChanged
+ 0001:0009EBC8       ComCtrls.TCustomTreeView.CMSysColorChange
+ 0001:0009EBF0       ComCtrls.TCustomTreeView.AlphaSort
+ 0001:0009EBFC       ComCtrls.TCustomTreeView.CustomSort
+ 0001:0009ECB8       ComCtrls.TCustomTreeView.SetAutoExpand
+ 0001:0009ECD4       ComCtrls.TCustomTreeView.SetHotTrack
+ 0001:0009ECF0       ComCtrls.TCustomTreeView.SetRowSelect
+ 0001:0009ED0C       ComCtrls.TCustomTreeView.SetToolTips
+ 0001:0009ED2C       ComCtrls.TCustomTreeView.SetSortType
+ 0001:0009ED68       ComCtrls.TCustomTreeView.SetBorderStyle
+ 0001:0009ED7C       ComCtrls.TCustomTreeView.SetDragMode
+ 0001:0009EDA4       ComCtrls.TCustomTreeView.SetButtonStyle
+ 0001:0009EDC0       ComCtrls.TCustomTreeView.SetLineStyle
+ 0001:0009EDDC       ComCtrls.TCustomTreeView.SetRootStyle
+ 0001:0009EDF8       ComCtrls.TCustomTreeView.SetReadOnly
+ 0001:0009EE18       ComCtrls.TCustomTreeView.SetHideSelection
+ 0001:0009EE48       ComCtrls.TCustomTreeView.GetNodeAt
+ 0001:0009EE8C       ComCtrls.TCustomTreeView.GetHitTestInfoAt
+ 0001:0009EF48       ComCtrls.TCustomTreeView.SetTreeNodes
+ 0001:0009EF54       ComCtrls.TCustomTreeView.SetIndent
+ 0001:0009EF80       ComCtrls.TCustomTreeView.GetIndent
+ 0001:0009EF98       ComCtrls.TCustomTreeView.FullExpand
+ 0001:0009EFC4       ComCtrls.TCustomTreeView.FullCollapse
+ 0001:0009EFF0       ComCtrls.TCustomTreeView.Loaded
+ 0001:0009F00C       ComCtrls.TCustomTreeView.GetTopItem
+ 0001:0009F03C       ComCtrls.TCustomTreeView.SetTopItem
+ 0001:0009F064       ComCtrls.TCustomTreeView.OnChangeTimer
+ 0001:0009F08C       ComCtrls.TCustomTreeView.GetSelected
+ 0001:0009F0D4       ComCtrls.TCustomTreeView.SetSelected
+ 0001:0009F0F8       ComCtrls.TCustomTreeView.SetChangeDelay
+ 0001:0009F104       ComCtrls.TCustomTreeView.GetChangeDelay
+ 0001:0009F110       ComCtrls.TCustomTreeView.GetDropTarget
+ 0001:0009F148       ComCtrls.TCustomTreeView.SetDropTarget
+ 0001:0009F17C       ComCtrls.TCustomTreeView.GetNodeFromItem
+ 0001:0009F1A4       ComCtrls.TCustomTreeView.CNNotify
+ 0001:0009FC88       ComCtrls.TCustomTreeView.GetDragImages
+ 0001:0009FCA8       ComCtrls.TCustomTreeView.WndProc
+ 0001:0009FD3C       ComCtrls.TCustomTreeView.DoStartDrag
+ 0001:0009FDD4       ComCtrls.TCustomTreeView.DoEndDrag
+ 0001:0009FDF4       ComCtrls.TCustomTreeView.CMDrag
+ 0001:0009FE7C       ComCtrls.TCustomTreeView.DoDragOver
+ 0001:0009FED8       ComCtrls.TCustomTreeView.GetImageIndex
+ 0001:0009FEF8       ComCtrls.TCustomTreeView.GetSelectedIndex
+ 0001:0009FF18       ComCtrls.TCustomTreeView.CanChange
+ 0001:0009FF44       ComCtrls.TCustomTreeView.Change
+ 0001:0009FF94       ComCtrls.TCustomTreeView.Added
+ 0001:0009FFB4       ComCtrls.TCustomTreeView.Delete
+ 0001:0009FFD4       ComCtrls.TCustomTreeView.Expand
+ 0001:0009FFF4       ComCtrls.TCustomTreeView.CanExpand
+ 0001:000A0020       ComCtrls.TCustomTreeView.Collapse
+ 0001:000A0040       ComCtrls.TCustomTreeView.CanCollapse
+ 0001:000A006C       ComCtrls.TCustomTreeView.CanEdit
+ 0001:000A0098       ComCtrls.TCustomTreeView.Edit
+ 0001:000A0148       ComCtrls.TCustomTreeView.CreateNode
+ 0001:000A0184       ComCtrls.TCustomTreeView.CreateNodes
+ 0001:000A0194       ComCtrls.TCustomTreeView.SetImageList
+ 0001:000A01C4       ComCtrls.TCustomTreeView.ImageListChange
+ 0001:000A0220       ComCtrls.TCustomTreeView.Notification
+ 0001:000A0260       ComCtrls.TCustomTreeView.SetImages
+ 0001:000A02C8       ComCtrls.TCustomTreeView.SetStateImages
+ 0001:000A0334       ComCtrls.TCustomTreeView.WMContextMenu
+ 0001:000A0400       ComCtrls.TCustomTreeView.WMCtlColorEdit
+ 0001:000A0424       ComCtrls.TCustomTreeView.WMLButtonDown
+ 0001:000A0540       ComCtrls.TCustomTreeView.WMNotify
+ 0001:000A0684       ComCtrls.TCustomTreeView.CanvasChanged
+ 0001:000A068C       ComCtrls.TCustomTreeView.IsCustomDrawn
+ 0001:000A072C       ComCtrls.TCustomTreeView.CustomDraw
+ 0001:000A0784       ComCtrls.TCustomTreeView.CustomDrawItem
+ 0001:000A0800       ComCtrls.TCustomTreeView.ClearSelection
+ 0001:000A0838       ComCtrls.TCustomTreeView.ControlSelectNode
+ 0001:000A089C       ComCtrls.TCustomTreeView.ControlShiftSelectNode
+ 0001:000A08B8       ComCtrls.TCustomTreeView.DoEnter
+ 0001:000A08CC       ComCtrls.TCustomTreeView.DoExit
+ 0001:000A08E0       ComCtrls.TCustomTreeView.FinishSelection
+ 0001:000A0AC8       ComCtrls.TCustomTreeView.GetSelectionCount
+ 0001:000A0AD4       ComCtrls.TCustomTreeView.GetSelection
+ 0001:000A0AEC       ComCtrls.TCustomTreeView.InvalidateSelectionsRects
+ 0001:000A0B38       ComCtrls.TCustomTreeView.MouseDown
+ 0001:000A0BA8       ComCtrls.TCustomTreeView.NodeDeselect
+ 0001:000A0BD0       ComCtrls.TCustomTreeView.NodeSelect
+ 0001:000A0BF8       ComCtrls.TCustomTreeView.Select
+ 0001:000A0C20       ComCtrls.TCustomTreeView.SelectNode
+ 0001:000A0C98       ComCtrls.TCustomTreeView.SetMultiSelect
+ 0001:000A0CCC       ComCtrls.TCustomTreeView.SetMultiSelectStyle
+ 0001:000A0CF4       ComCtrls.TCustomTreeView.ShiftSelectNode
+ 0001:000A0ED4       ComCtrls.TCustomTreeView.Subselect
+ 0001:000A0F70       ComCtrls.TCustomTreeView.ValidateSelection
+ 0001:000A101C       ComCtrls.TCustomTreeView.Select
+ 0001:000A1094       ComCtrls.TCustomTreeView.Select
+ 0001:000A1220       ComCtrls.TCustomTreeView.Deselect
+ 0001:000A1244       ComCtrls.NodeInList
+ 0001:000A1274       ComCtrls.SiblingNotInList
+ 0001:000A12DC       ComCtrls.TCustomTreeView.FindNextToSelect
+ 0001:000A1368       ComCtrls.TCustomTreeView.GetSelections
+ 0001:000A13AC       ComCtrls.TTextAttributes.Create
+ 0001:000A13F8       ComCtrls.TTextAttributes.InitFormat
+ 0001:000A1414       ComCtrls.TTextAttributes.GetAttributes
+ 0001:000A1454       ComCtrls.TTextAttributes.SetAttributes
+ 0001:000A1490       ComCtrls.TTextAttributes.GetCharset
+ 0001:000A14A4       ComCtrls.TTextAttributes.SetCharset
+ 0001:000A14D4       ComCtrls.TTextAttributes.GetColor
+ 0001:000A14F4       ComCtrls.TTextAttributes.SetColor
+ 0001:000A153C       ComCtrls.TTextAttributes.GetName
+ 0001:000A1560       ComCtrls.TTextAttributes.SetName
+ 0001:000A15D0       ComCtrls.TTextAttributes.GetStyle
+ 0001:000A1620       ComCtrls.TTextAttributes.SetStyle
+ 0001:000A1678       ComCtrls.TTextAttributes.GetSize
+ 0001:000A1694       ComCtrls.TTextAttributes.SetSize
+ 0001:000A16CC       ComCtrls.TTextAttributes.GetPitch
+ 0001:000A16FC       ComCtrls.TTextAttributes.SetPitch
+ 0001:000A173C       ComCtrls.TTextAttributes.Assign
+ 0001:000A187C       ComCtrls.TTextAttributes.AssignTo
+ 0001:000A19AC       ComCtrls.TParaAttributes.Create
+ 0001:000A19E8       ComCtrls.TParaAttributes.InitPara
+ 0001:000A1A04       ComCtrls.TParaAttributes.GetAttributes
+ 0001:000A1A38       ComCtrls.TParaAttributes.SetAttributes
+ 0001:000A1A9C       ComCtrls.TParaAttributes.GetAlignment
+ 0001:000A1AB8       ComCtrls.TParaAttributes.SetAlignment
+ 0001:000A1AF0       ComCtrls.TParaAttributes.GetNumbering
+ 0001:000A1B0C       ComCtrls.TParaAttributes.SetNumbering
+ 0001:000A1B70       ComCtrls.TParaAttributes.GetFirstIndent
+ 0001:000A1B90       ComCtrls.TParaAttributes.SetFirstIndent
+ 0001:000A1BCC       ComCtrls.TParaAttributes.GetLeftIndent
+ 0001:000A1BEC       ComCtrls.TParaAttributes.SetLeftIndent
+ 0001:000A1C28       ComCtrls.TParaAttributes.GetRightIndent
+ 0001:000A1C48       ComCtrls.TParaAttributes.SetRightIndent
+ 0001:000A1C84       ComCtrls.TParaAttributes.GetTab
+ 0001:000A1CAC       ComCtrls.TParaAttributes.SetTab
+ 0001:000A1D00       ComCtrls.TParaAttributes.Assign
+ 0001:000A1D9C       ComCtrls.TConversion.ConvertReadStream
+ 0001:000A1DB0       ComCtrls.TConversion.ConvertWriteStream
+ 0001:000A1DC4       ComCtrls..TRichEditStrings
+ 0001:000A1ED0       ComCtrls.TRichEditStrings.Destroy
+ 0001:000A1F00       ComCtrls.TRichEditStrings.AddStrings
+ 0001:000A1F78       ComCtrls.TRichEditStrings.GetCount
+ 0001:000A1FD0       ComCtrls.TRichEditStrings.Get
+ 0001:000A2024       ComCtrls.TRichEditStrings.Put
+ 0001:000A20B0       ComCtrls.TRichEditStrings.Insert
+ 0001:000A223C       ComCtrls.TRichEditStrings.Delete
+ 0001:000A22E8       ComCtrls.TRichEditStrings.Clear
+ 0001:000A22F8       ComCtrls.TRichEditStrings.SetUpdateState
+ 0001:000A2348       ComCtrls.TRichEditStrings.EnableChange
+ 0001:000A23A4       ComCtrls.TRichEditStrings.SetTextStr
+ 0001:000A23F4       ComCtrls.AdjustLineBreaks
+ 0001:000A2428       ComCtrls.StreamSave
+ 0001:000A2488       ComCtrls.StreamLoad
+ 0001:000A2580       ComCtrls.TRichEditStrings.LoadFromStream
+ 0001:000A26E4       ComCtrls.TRichEditStrings.SaveToStream
+ 0001:000A27F4       ComCtrls.TRichEditStrings.LoadFromFile
+ 0001:000A2900       ComCtrls.TRichEditStrings.SaveToFile
+ 0001:000A29F8       ComCtrls.TCustomRichEdit.Create
+ 0001:000A2B28       ComCtrls.TCustomRichEdit.Destroy
+ 0001:000A2B84       ComCtrls.TCustomRichEdit.Clear
+ 0001:000A2B9C       ComCtrls.TCustomRichEdit.CreateParams
+ 0001:000A2C28       ComCtrls.TCustomRichEdit.CreateWnd
+ 0001:000A2D80       ComCtrls.TCustomRichEdit.DestroyWnd
+ 0001:000A2E88       ComCtrls.TCustomRichEdit.WMNCDestroy
+ 0001:000A2E90       ComCtrls.TCustomRichEdit.WMSetFont
+ 0001:000A2EA0       ComCtrls.TCustomRichEdit.WMRButtonUp
+ 0001:000A2F18       ComCtrls.TCustomRichEdit.CMFontChanged
+ 0001:000A2F28       ComCtrls.TCustomRichEdit.DoSetMaxLength
+ 0001:000A2F48       ComCtrls.TCustomRichEdit.GetCaretPos
+ 0001:000A2FA8       ComCtrls.TCustomRichEdit.SetCaretPos
+ 0001:000A2FF4       ComCtrls.TCustomRichEdit.GetSelLength
+ 0001:000A301C       ComCtrls.TCustomRichEdit.GetSelStart
+ 0001:000A3040       ComCtrls.TCustomRichEdit.GetSelTextBuf
+ 0001:000A30C4       ComCtrls.TCustomRichEdit.GetSelText
+ 0001:000A3108       ComCtrls.TCustomRichEdit.CMBiDiModeChanged
+ 0001:000A315C       ComCtrls.TCustomRichEdit.SetHideScrollBars
+ 0001:000A3170       ComCtrls.TCustomRichEdit.SetHideSelection
+ 0001:000A31A0       ComCtrls.TCustomRichEdit.SetSelLength
+ 0001:000A31FC       ComCtrls.TCustomRichEdit.GetPlainText
+ 0001:000A3208       ComCtrls.TCustomRichEdit.SetPlainText
+ 0001:000A3214       ComCtrls.TCustomRichEdit.CMColorChanged
+ 0001:000A3240       ComCtrls.TCustomRichEdit.SetRichEditStrings
+ 0001:000A3250       ComCtrls.TCustomRichEdit.SetSelStart
+ 0001:000A3278       ComCtrls.TCustomRichEdit.Print
+ 0001:000A3450       ComCtrls.TCustomRichEdit.WMPaint
+ 0001:000A3514       ComCtrls.TCustomRichEdit.WMSetCursor
+ 0001:000A35C0       ComCtrls.TCustomRichEdit.CNNotify
+ 0001:000A363C       ComCtrls.TCustomRichEdit.SaveClipboard
+ 0001:000A366C       ComCtrls.TCustomRichEdit.ProtectChange
+ 0001:000A369C       ComCtrls.TCustomRichEdit.SelectionChange
+ 0001:000A36BC       ComCtrls.TCustomRichEdit.RequestSize
+ 0001:000A36DC       ComCtrls.TCustomRichEdit.FindText
+ 0001:000A3734       ComCtrls.TCustomUpDown.Create
+ 0001:000A3800       ComCtrls.TCustomUpDown.CreateParams
+ 0001:000A3894       ComCtrls.TCustomUpDown.CreateWnd
+ 0001:000A3970       ComCtrls.TCustomUpDown.WMVScroll
+ 0001:000A39C8       ComCtrls.TCustomUpDown.WMSize
+ 0001:000A39F8       ComCtrls.TCustomUpDown.WMHScroll
+ 0001:000A3A50       ComCtrls.TCustomUpDown.DoCanChange
+ 0001:000A3A70       ComCtrls.TCustomUpDown.CanChange
+ 0001:000A3B14       ComCtrls.TCustomUpDown.CMAllChildrenFlipped
+ 0001:000A3B30       ComCtrls.TCustomUpDown.CNNotify
+ 0001:000A3B68       ComCtrls.TCustomUpDown.Click
+ 0001:000A3B88       ComCtrls.IsClass
+ 0001:000A3BB8       ComCtrls.TCustomUpDown.SetAssociate
+ 0001:000A3DC4       ComCtrls.TCustomUpDown.UndoAutoResizing
+ 0001:000A3E18       ComCtrls.TCustomUpDown.Notification
+ 0001:000A3E68       ComCtrls.TCustomUpDown.GetPosition
+ 0001:000A3EA0       ComCtrls.TCustomUpDown.SetMin
+ 0001:000A3EF0       ComCtrls.TCustomUpDown.SetMax
+ 0001:000A3F40       ComCtrls.TCustomUpDown.SetIncrement
+ 0001:000A3F9C       ComCtrls.TCustomUpDown.SetPosition
+ 0001:000A4074       ComCtrls.TCustomUpDown.SetOrientation
+ 0001:000A40E8       ComCtrls.TCustomUpDown.SetAlignButton
+ 0001:000A4124       ComCtrls.TCustomUpDown.SetArrowKeys
+ 0001:000A4160       ComCtrls.TCustomUpDown.SetThousands
+ 0001:000A419C       ComCtrls.TCustomUpDown.SetWrap
+ 0001:000A41D8       ComCtrls.TListColumn.Create
+ 0001:000A4288       ComCtrls.TListColumn.Destroy
+ 0001:000A42FC       ComCtrls.TListColumn.DefineProperties
+ 0001:000A4344       ComCtrls.TListColumn.ReadData
+ 0001:000A436C       ComCtrls.TListColumn.WriteData
+ 0001:000A4390       ComCtrls.WriteCols
+ 0001:000A448C       ComCtrls.TListColumn.DoChange
+ 0001:000A450C       ComCtrls.TListColumn.SetIndex
+ 0001:000A45C8       ComCtrls.TListColumn.SetCaption
+ 0001:000A45F0       ComCtrls.TListColumn.GetWidth
+ 0001:000A4658       ComCtrls.TListColumn.IsWidthStored
+ 0001:000A4660       ComCtrls.TListColumn.SetWidth
+ 0001:000A468C       ComCtrls.TListColumn.SetAlignment
+ 0001:000A46C4       ComCtrls.TListColumn.SetAutoSize
+ 0001:000A46F8       ComCtrls.TListColumn.SetImageIndex
+ 0001:000A4708       ComCtrls.TListColumn.SetMaxWidth
+ 0001:000A4718       ComCtrls.TListColumn.SetMinWidth
+ 0001:000A4728       ComCtrls.TListColumn.Assign
+ 0001:000A479C       ComCtrls.TListColumn.GetDisplayName
+ 0001:000A47C0       ComCtrls.TListColumns.Create
+ 0001:000A4804       ComCtrls.TListColumns.GetItem
+ 0001:000A4818       ComCtrls.TListColumns.Add
+ 0001:000A4834       ComCtrls.TListColumns.Owner
+ 0001:000A4838       ComCtrls.TListColumns.GetOwner
+ 0001:000A483C       ComCtrls.TListColumns.Update
+ 0001:000A4870       ComCtrls.TListColumns.UpdateCols
+ 0001:000A4968       ComCtrls.TWorkArea.Create
+ 0001:000A49AC       ComCtrls.TWorkArea.GetDisplayName
+ 0001:000A49C0       ComCtrls.TWorkArea.SetDisplayName
+ 0001:000A4A00       ComCtrls.TWorkAreas.Update
+ 0001:000A4AD8       ComCtrls.TWorkAreas.GetItem
+ 0001:000A4AEC       ComCtrls..TSubItems
+ 0001:000A4C00       ComCtrls.TSubItems.Create
+ 0001:000A4C4C       ComCtrls.TSubItems.Destroy
+ 0001:000A4C7C       ComCtrls.TSubItems.Add
+ 0001:000A4CA4       ComCtrls.TSubItems.AddObject
+ 0001:000A4CCC       ComCtrls.TSubItems.Clear
+ 0001:000A4CE0       ComCtrls.TSubItems.Delete
+ 0001:000A4D04       ComCtrls.TSubItems.GetHandle
+ 0001:000A4D10       ComCtrls.TSubItems.SetColumnWidth
+ 0001:000A4D54       ComCtrls.TSubItems.Insert
+ 0001:000A4D94       ComCtrls.TSubItems.Put
+ 0001:000A4DB0       ComCtrls.TSubItems.RefreshItem
+ 0001:000A4DDC       ComCtrls.TSubItems.SetUpdateState
+ 0001:000A4DE8       ComCtrls.TSubItems.GetImageIndex
+ 0001:000A4DFC       ComCtrls.TSubItems.SetImageIndex
+ 0001:000A4E08       ComCtrls.TListItem.Create
+ 0001:000A4E58       ComCtrls.TListItem.Destroy
+ 0001:000A4EDC       ComCtrls.TListItem.GetListView
+ 0001:000A4EE4       ComCtrls.TListItem.Delete
+ 0001:000A4F08       ComCtrls.TListItem.GetHandle
+ 0001:000A4F1C       ComCtrls.TListItem.MakeVisible
+ 0001:000A4F40       ComCtrls.TListItem.GetChecked
+ 0001:000A4F94       ComCtrls.TListItem.SetChecked
+ 0001:000A4FE0       ComCtrls.TListItem.Update
+ 0001:000A5010       ComCtrls.TListItem.SetCaption
+ 0001:000A50C4       ComCtrls.TListItem.SetData
+ 0001:000A50F4       ComCtrls.TListItem.GetState
+ 0001:000A5164       ComCtrls.TListItem.SetState
+ 0001:000A51D4       ComCtrls.TListItem.SetImage
+ 0001:000A5314       ComCtrls.TListItem.SetIndent
+ 0001:000A538C       ComCtrls.TListItem.Assign
+ 0001:000A5424       ComCtrls.TListItem.IsEqual
+ 0001:000A544C       ComCtrls.TListItem.SetSubItems
+ 0001:000A5460       ComCtrls.TListItem.GetIndex
+ 0001:000A547C       ComCtrls.TListItem.DisplayRect
+ 0001:000A54AC       ComCtrls.TListItem.GetSubItemImage
+ 0001:000A54B8       ComCtrls.TListItem.SetSubItemImage
+ 0001:000A552C       ComCtrls.TListItems.Create
+ 0001:000A5568       ComCtrls.TListItems.Destroy
+ 0001:000A5594       ComCtrls.TListItems.Add
+ 0001:000A55A0       ComCtrls.TListItems.Insert
+ 0001:000A55AC       ComCtrls.TListItems.AddItem
+ 0001:000A5608       ComCtrls.TListItems.GetCount
+ 0001:000A5634       ComCtrls.TListItems.GetHandle
+ 0001:000A5640       ComCtrls.TListItems.GetItem
+ 0001:000A56CC       ComCtrls.TListItems.IndexOf
+ 0001:000A56F4       ComCtrls.TListItems.SetCount
+ 0001:000A5728       ComCtrls.TListItems.Clear
+ 0001:000A5754       ComCtrls.TListItems.BeginUpdate
+ 0001:000A576C       ComCtrls.TListItems.SetUpdateState
+ 0001:000A5938       ComCtrls.TListItems.EndUpdate
+ 0001:000A594C       ComCtrls.TListItems.Assign
+ 0001:000A59AC       ComCtrls.WriteItems
+ 0001:000A5A3C       ComCtrls.TListItems.DefineProperties
+ 0001:000A5AC4       ComCtrls.TListItems.ReadData
+ 0001:000A5CBC       ComCtrls.TListItems.ReadItemData
+ 0001:000A5EB4       ComCtrls.GetByteLength
+ 0001:000A5ECC       ComCtrls.TListItems.WriteItemData
+ 0001:000A6188       ComCtrls.TListItems.Delete
+ 0001:000A61A0       ComCtrls.TListItems.CreateItem
+ 0001:000A61C4       ComCtrls.TIconOptions.Create
+ 0001:000A6238       ComCtrls.TIconOptions.SetArrangement
+ 0001:000A624C       ComCtrls.TIconOptions.SetAutoArrange
+ 0001:000A6260       ComCtrls.TIconOptions.SetWrapText
+ 0001:000A6274       ComCtrls.DefaultListViewSort
+ 0001:000A62E0       ComCtrls.TCustomListView.Create
+ 0001:000A64DC       ComCtrls.TCustomListView.Destroy
+ 0001:000A65DC       ComCtrls.TCustomListView.CreateParams
+ 0001:000A66FC       ComCtrls.ReadCols
+ 0001:000A67B0       ComCtrls.TCustomListView.CreateWnd
+ 0001:000A69E0       ComCtrls.TCustomListView.DestroyWnd
+ 0001:000A6A8C       ComCtrls.TCustomListView.SetImageList
+ 0001:000A6ABC       ComCtrls.TCustomListView.ImageListChange
+ 0001:000A6B30       ComCtrls.TCustomListView.Notification
+ 0001:000A6BA4       ComCtrls.UpdateColumnOrder
+ 0001:000A6CEC       ComCtrls.TCustomListView.HeaderWndProc
+ 0001:000A6DE4       ComCtrls.TCustomListView.EditWndProc
+ 0001:000A6EE4       ComCtrls.TCustomListView.UpdateItems
+ 0001:000A6F04       ComCtrls.TCustomListView.ResetExStyles
+ 0001:000A700C       ComCtrls.TCustomListView.RestoreChecks
+ 0001:000A7098       ComCtrls.TCustomListView.SaveChecks
+ 0001:000A711C       ComCtrls.TCustomListView.SetCheckboxes
+ 0001:000A71BC       ComCtrls.TCustomListView.SetGridLines
+ 0001:000A71D0       ComCtrls.TCustomListView.SetHotTrack
+ 0001:000A71E4       ComCtrls.TCustomListView.SetHotTrackStyles
+ 0001:000A720C       ComCtrls.TCustomListView.SetOwnerData
+ 0001:000A7238       ComCtrls.TCustomListView.SetOwnerDraw
+ 0001:000A724C       ComCtrls.TCustomListView.SetRowSelect
+ 0001:000A7260       ComCtrls.TCustomListView.SetFlatScrollBars
+ 0001:000A7274       ComCtrls.TCustomListView.SetFullDrag
+ 0001:000A7288       ComCtrls.TCustomListView.SetBorderStyle
+ 0001:000A729C       ComCtrls.TCustomListView.SetColumnClick
+ 0001:000A72B0       ComCtrls.TCustomListView.SetItemIndex
+ 0001:000A72F8       ComCtrls.TCustomListView.SetMultiSelect
+ 0001:000A730C       ComCtrls.TCustomListView.SetColumnHeaders
+ 0001:000A7320       ComCtrls.TCustomListView.SetTextColor
+ 0001:000A734C       ComCtrls.TCustomListView.SetTextBkColor
+ 0001:000A7398       ComCtrls.TCustomListView.SetAllocBy
+ 0001:000A73D0       ComCtrls.TCustomListView.CMColorChanged
+ 0001:000A73F4       ComCtrls.TCustomListView.CMCtl3DChanged
+ 0001:000A7418       ComCtrls.TCustomListView.WMNotify
+ 0001:000A765C       ComCtrls.TCustomListView.ColumnsShowing
+ 0001:000A7668       ComCtrls.TCustomListView.ValidHeaderHandle
+ 0001:000A7674       ComCtrls.TCustomListView.CMFontChanged
+ 0001:000A76B4       ComCtrls.TCustomListView.SetHideSelection
+ 0001:000A76C8       ComCtrls.TCustomListView.SetReadOnly
+ 0001:000A76DC       ComCtrls.TCustomListView.SetIconOptions
+ 0001:000A770C       ComCtrls.TCustomListView.SetViewStyle
+ 0001:000A7790       ComCtrls.TCustomListView.WMParentNotify
+ 0001:000A77E0       ComCtrls.TCustomListView.GetItemIndex
+ 0001:000A7808       ComCtrls.TCustomListView.OwnerDataFetch
+ 0001:000A7830       ComCtrls.TCustomListView.OwnerDataFind
+ 0001:000A787C       ComCtrls.TCustomListView.OwnerDataHint
+ 0001:000A78A4       ComCtrls.TCustomListView.OwnerDataStateChange
+ 0001:000A78DC       ComCtrls.TCustomListView.CreateListItem
+ 0001:000A7918       ComCtrls.TCustomListView.CreateListItems
+ 0001:000A7928       ComCtrls.ConvertMask
+ 0001:000A7974       ComCtrls.TCustomListView.GetItem
+ 0001:000A7AA8       ComCtrls.TCustomListView.GetSelCount
+ 0001:000A7AC0       ComCtrls.ConvertFlags
+ 0001:000A7AE4       ComCtrls.ConvertStates
+ 0001:000A7B30       ComCtrls.TCustomListView.CNNotify
+ 0001:000A8954       ComCtrls.TCustomListView.ChangeScale
+ 0001:000A89C8       ComCtrls.TCustomListView.ColClick
+ 0001:000A89E8       ComCtrls.TCustomListView.ColRightClick
+ 0001:000A8A18       ComCtrls.TCustomListView.InsertItem
+ 0001:000A8A38       ComCtrls.TCustomListView.AddItem
+ 0001:000A8AA0       ComCtrls.TCustomListView.CanChange
+ 0001:000A8AE8       ComCtrls.TCustomListView.Change
+ 0001:000A8B20       ComCtrls.TCustomListView.Delete
+ 0001:000A8B58       ComCtrls.TCustomListView.CanEdit
+ 0001:000A8B84       ComCtrls.TCustomListView.Edit
+ 0001:000A8C04       ComCtrls.TCustomListView.GetDragImages
+ 0001:000A8C20       ComCtrls.TCustomListView.WndProc
+ 0001:000A8CA0       ComCtrls.TCustomListView.DoStartDrag
+ 0001:000A8D80       ComCtrls.TCustomListView.DoEndDrag
+ 0001:000A8DAC       ComCtrls.TCustomListView.CMDrag
+ 0001:000A8EE4       ComCtrls.TCustomListView.DoDragOver
+ 0001:000A8F70       ComCtrls.TCustomListView.SetItems
+ 0001:000A8F7C       ComCtrls.TCustomListView.SetListColumns
+ 0001:000A8F8C       ComCtrls.TCustomListView.CustomSort
+ 0001:000A8FD0       ComCtrls.TCustomListView.AlphaSort
+ 0001:000A9008       ComCtrls.TCustomListView.SetSortType
+ 0001:000A9044       ComCtrls.TCustomListView.GetVisibleRowCount
+ 0001:000A906C       ComCtrls.TCustomListView.GetViewOrigin
+ 0001:000A9088       ComCtrls.TCustomListView.GetTopItem
+ 0001:000A90C8       ComCtrls.TCustomListView.Scroll
+ 0001:000A90E8       ComCtrls.TCustomListView.SetLargeImages
+ 0001:000A915C       ComCtrls.TCustomListView.SetSmallImages
+ 0001:000A91D8       ComCtrls.TCustomListView.SetStateImages
+ 0001:000A9294       ComCtrls.TCustomListView.GetColumnFromIndex
+ 0001:000A92A0       ComCtrls.TCustomListView.GetSelected
+ 0001:000A92B8       ComCtrls.TCustomListView.SetSelected
+ 0001:000A9320       ComCtrls.TCustomListView.GetDropTarget
+ 0001:000A9348       ComCtrls.TCustomListView.SetDropTarget
+ 0001:000A938C       ComCtrls.TCustomListView.GetFocused
+ 0001:000A93A4       ComCtrls.TCustomListView.SetFocused
+ 0001:000A93E8       ComCtrls.TCustomListView.GetImageIndex
+ 0001:000A9408       ComCtrls.TCustomListView.GetNextItem
+ 0001:000A94DC       ComCtrls.TCustomListView.GetNearestItem
+ 0001:000A9548       ComCtrls.TCustomListView.GetItemAt
+ 0001:000A95B4       ComCtrls.TCustomListView.Arrange
+ 0001:000A95DC       ComCtrls.TCustomListView.UpdateColumns
+ 0001:000A961C       ComCtrls.TCustomListView.UpdateColumn
+ 0001:000A9788       ComCtrls.TCustomListView.WMLButtonDown
+ 0001:000A990C       ComCtrls.TCustomListView.DoAutoSize
+ 0001:000A9AA0       ComCtrls.TCustomListView.WMWindowPosChanged
+ 0001:000A9AD4       ComCtrls.TCustomListView.CNDrawItem
+ 0001:000A9C04       ComCtrls.TCustomListView.CanvasChanged
+ 0001:000A9C0C       ComCtrls.TCustomListView.IsCustomDrawn
+ 0001:000A9D20       ComCtrls.TCustomListView.CustomDraw
+ 0001:000A9D78       ComCtrls.TCustomListView.CustomDrawItem
+ 0001:000A9DEC       ComCtrls.TCustomListView.CustomDrawSubItem
+ 0001:000A9E64       ComCtrls.TCustomListView.DrawItem
+ 0001:000A9EDC       ComCtrls.TCustomListView.GetSubItemImage
+ 0001:000A9F20       ComCtrls.TCustomListView.DrawWorkAreas
+ 0001:000AA088       ComCtrls.TCustomListView.WMPaint
+ 0001:000AA0B0       ComCtrls.TCustomListView.SetShowWorkAreas
+ 0001:000AA0C0       ComCtrls.TCustomListView.CMHintShow
+ 0001:000AA1E8       ComCtrls.TCustomListView.DoInfoTip
+ 0001:000AA208       ComCtrls.TCustomListView.SetHoverTime
+ 0001:000AA244       ComCtrls.TCustomListView.GetHoverTime
+ 0001:000AA274       ComCtrls.TCustomListView.AreItemsStored
+ 0001:000AA2AC       ComCtrls.TCustomListView.MouseUp
+ 0001:000AA2F4       ComCtrls.TCustomListView.GetColumnFromTag
+ 0001:000AA330       ComCtrls.TCustomListView.WMContextMenu
+ 0001:000AA3B8       ComCtrls.TCustomListView.WMCtlColorEdit
+ 0001:000AA3DC       ComCtrls.TCustomListView.ClearSelection
+ 0001:000AA418       ComCtrls.TCustomListView.CopySelection
+ 0001:000AA48C       ComCtrls.TCustomListView.DeleteSelected
+ 0001:000AA534       ComCtrls.TCustomListView.GetCount
+ 0001:000AA540       ComCtrls.TCustomListView.SelectAll
+ 0001:000AA57C       ComCtrls.TCustomListView.Clear
+ 0001:000AA5D4       ComCtrls.TCustomListView.GetActionLinkClass
+ 0001:000AA5DC       ComCtrls.TCustomListView.ActionChange
+ 0001:000AA640       ComCtrls.TCustomListView.WMVScroll
+ 0001:000AA6D0       ComCtrls.TAnimate.Create
+ 0001:000AA750       ComCtrls.TAnimate.CreateParams
+ 0001:000AA844       ComCtrls.TAnimate.CreateWnd
+ 0001:000AA868       ComCtrls.TAnimate.DestroyWnd
+ 0001:000AA8A4       ComCtrls.TAnimate.UpdateActiveState
+ 0001:000AA8D4       ComCtrls.TAnimate.WMNCCalcSize
+ 0001:000AA8FC       ComCtrls.TAnimate.WMNCHitTest
+ 0001:000AA910       ComCtrls.TAnimate.WMNCPaint
+ 0001:000AAA1C       ComCtrls.TAnimate.WMSize
+ 0001:000AAA24       ComCtrls.TAnimate.WMWindowPosChanged
+ 0001:000AAAD8       ComCtrls.TAnimate.CMColorChanged
+ 0001:000AAAF4       ComCtrls.TAnimate.CNCommand
+ 0001:000AAB40       ComCtrls.TAnimate.DoOpen
+ 0001:000AAB60       ComCtrls.TAnimate.DoClose
+ 0001:000AAB80       ComCtrls.TAnimate.DoStart
+ 0001:000AABA0       ComCtrls.TAnimate.DoStop
+ 0001:000AABC4       ComCtrls.TAnimate.Loaded
+ 0001:000AABE4       ComCtrls.TAnimate.GetAnimateParams
+ 0001:000AAC24       ComCtrls.TAnimate.SetAnimateParams
+ 0001:000AAC64       ComCtrls.TAnimate.GetActualResHandle
+ 0001:000AAC9C       ComCtrls.TAnimate.GetActualResId
+ 0001:000AACE0       ComCtrls.CreateResStream
+ 0001:000AAD74       ComCtrls.TAnimate.GetFrameInfo
+ 0001:000AAE38       ComCtrls.TAnimate.SetActive
+ 0001:000AAE78       ComCtrls.TAnimate.SetCenter
+ 0001:000AAE8C       ComCtrls.TAnimate.SetCommonAVI
+ 0001:000AAF00       ComCtrls.TAnimate.SetFileName
+ 0001:000AB050       ComCtrls.TAnimate.SetOpen
+ 0001:000AB090       ComCtrls.TAnimate.SetRepetitions
+ 0001:000AB0AC       ComCtrls.TAnimate.SetResHandle
+ 0001:000AB100       ComCtrls.TAnimate.SetResName
+ 0001:000AB1BC       ComCtrls.TAnimate.SetStartFrame
+ 0001:000AB1EC       ComCtrls.TAnimate.SetStopFrame
+ 0001:000AB208       ComCtrls.TAnimate.SetTimers
+ 0001:000AB21C       ComCtrls.TAnimate.SetTransparent
+ 0001:000AB230       ComCtrls.TAnimate.CheckOpen
+ 0001:000AB260       ComCtrls.TAnimate.InternalOpen
+ 0001:000AB300       ComCtrls.TAnimate.InternalClose
+ 0001:000AB348       ComCtrls.TAnimate.Play
+ 0001:000AB3A8       ComCtrls.TAnimate.Reset
+ 0001:000AB3C8       ComCtrls.TAnimate.Seek
+ 0001:000AB3FC       ComCtrls.TAnimate.Stop
+ 0001:000AB444       ComCtrls.TAnimate.CanAutoSize
+ 0001:000AB46C       ComCtrls.TToolButton.Create
+ 0001:000AB4F0       ComCtrls.TToolButton.MouseDown
+ 0001:000AB54C       ComCtrls.TToolButton.MouseMove
+ 0001:000AB5B4       ComCtrls.TToolButton.MouseUp
+ 0001:000AB618       ComCtrls.TToolButton.Click
+ 0001:000AB620       ComCtrls.TToolButton.Notification
+ 0001:000AB664       ComCtrls.TToolButton.CMTextChanged
+ 0001:000AB6CC       ComCtrls.TToolButton.SetBounds
+ 0001:000AB8BC       ComCtrls.TToolButton.Paint
+ 0001:000ABB40       ComCtrls.TToolButton.GetButtonState
+ 0001:000ABBE4       ComCtrls.TToolButton.SetAutoSize
+ 0001:000ABC54       ComCtrls.TToolButton.SetButtonState
+ 0001:000ABCBC       ComCtrls.TToolButton.CMVisibleChanged
+ 0001:000ABD4C       ComCtrls.TToolButton.CMEnabledChanged
+ 0001:000ABD88       ComCtrls.TToolButton.CMHitTest
+ 0001:000ABDB0       ComCtrls.TToolButton.SetDown
+ 0001:000ABE0C       ComCtrls.TToolButton.SetDropdownMenu
+ 0001:000ABE28       ComCtrls.TToolButton.SetGrouped
+ 0001:000ABE48       ComCtrls.TToolButton.SetImageIndex
+ 0001:000ABEC8       ComCtrls.TToolButton.SetMarked
+ 0001:000ABF04       ComCtrls.TToolButton.SetIndeterminate
+ 0001:000ABF50       ComCtrls.TToolButton.SetMenuItem
+ 0001:000ABFC8       ComCtrls.TToolButton.SetStyle
+ 0001:000AC0AC       ComCtrls.TToolButton.SetWrap
+ 0001:000AC0D4       ComCtrls.TToolButton.BeginUpdate
+ 0001:000AC0DC       ComCtrls.TToolButton.EndUpdate
+ 0001:000AC0E4       ComCtrls.TToolButton.GetIndex
+ 0001:000AC100       ComCtrls.TToolButton.IsWidthStored
+ 0001:000AC110       ComCtrls.TToolButton.RefreshControl
+ 0001:000AC134       ComCtrls.TToolButton.UpdateControl
+ 0001:000AC158       ComCtrls.TToolButton.CheckMenuDropdown
+ 0001:000AC1A4       ComCtrls.TToolButton.IsCheckedStored
+ 0001:000AC1C4       ComCtrls.TToolButton.IsImageIndexStored
+ 0001:000AC1E4       ComCtrls.TToolButton.ActionChange
+ 0001:000AC2A0       ComCtrls.TToolButton.GetActionLinkClass
+ 0001:000AC2A8       ComCtrls.TToolButton.AssignTo
+ 0001:000AC2EC       ComCtrls.TToolButton.ValidateContainer
+ 0001:000AC348       ComCtrls.TToolButton.SetEnableDropdown
+ 0001:000AC3B0       ComCtrls.TToolBar.Create
+ 0001:000AC5E0       ComCtrls.TToolBar.Destroy
+ 0001:000AC69C       ComCtrls.TToolBar.CreateParams
+ 0001:000AC750       ComCtrls.TToolBar.CreateWnd
+ 0001:000AC838       ComCtrls.TToolBar.CreateButtons
+ 0001:000AC99C       ComCtrls.TToolBar.RepositionButton
+ 0001:000ACB00       ComCtrls.TToolBar.RepositionButtons
+ 0001:000ACB78       ComCtrls.TToolBar.GetButtonSize
+ 0001:000ACC50       ComCtrls.TToolBar.SetButtonHeight
+ 0001:000ACC80       ComCtrls.TToolBar.SetButtonWidth
+ 0001:000ACCB0       ComCtrls.TToolBar.InsertButton
+ 0001:000ACD6C       ComCtrls.TToolBar.RemoveButton
+ 0001:000ACDFC       ComCtrls.TToolBar.UpdateItem
+ 0001:000AD024       ComCtrls.TToolBar.UpdateItem2
+ 0001:000AD24C       ComCtrls.TToolBar.RefreshButton
+ 0001:000AD358       ComCtrls.TToolBar.UpdateButton
+ 0001:000AD454       ComCtrls.TToolBar.UpdateButtons
+ 0001:000AD558       ComCtrls.TToolBar.UpdateButtonState
+ 0001:000AD5B4       ComCtrls.TToolBar.UpdateButtonStates
+ 0001:000AD5F8       ComCtrls.TToolBar.SetShowCaptions
+ 0001:000AD624       ComCtrls.TToolBar.SetAllowTextButtons
+ 0001:000AD65C       ComCtrls.TToolBar.GetButton
+ 0001:000AD674       ComCtrls.TToolBar.GetButtonCount
+ 0001:000AD680       ComCtrls.TToolBar.SetList
+ 0001:000AD6A4       ComCtrls.TToolBar.SetFlat
+ 0001:000AD6B8       ComCtrls.TToolBar.SetTransparent
+ 0001:000AD6DC       ComCtrls.TToolBar.SetWrapable
+ 0001:000AD720       ComCtrls.TToolBar.Notification
+ 0001:000AD784       ComCtrls.GetImageBitmap
+ 0001:000AD87C       ComCtrls.TToolBar.LoadImages
+ 0001:000AD978       ComCtrls.TToolBar.UpdateImages
+ 0001:000AD9F4       ComCtrls.TToolBar.ImageListChange
+ 0001:000ADA18       ComCtrls.TToolBar.SetImageList
+ 0001:000ADA48       ComCtrls.TToolBar.SetImages
+ 0001:000ADA9C       ComCtrls.TToolBar.DisabledImageListChange
+ 0001:000ADAC0       ComCtrls.TToolBar.SetDisabledImageList
+ 0001:000ADAF0       ComCtrls.TToolBar.SetDisabledImages
+ 0001:000ADB44       ComCtrls.TToolBar.HotImageListChange
+ 0001:000ADB68       ComCtrls.TToolBar.SetHotImageList
+ 0001:000ADB98       ComCtrls.TToolBar.SetHotImages
+ 0001:000ADBEC       ComCtrls.TToolBar.SetIndent
+ 0001:000ADC00       ComCtrls.TToolBar.SetMenu
+ 0001:000ADD78       ComCtrls.TToolBar.RecreateButtons
+ 0001:000ADDC4       ComCtrls.TToolBar.WMCaptureChanged
+ 0001:000ADDF0       ComCtrls.TToolBar.WMKeyDown
+ 0001:000ADEA0       ComCtrls.TToolBar.GetChildren
+ 0001:000ADF3C       ComCtrls.TToolBar.Loaded
+ 0001:000ADF88       ComCtrls.TToolBar.BeginUpdate
+ 0001:000ADF90       ComCtrls.TToolBar.EndUpdate
+ 0001:000ADF98       ComCtrls.TToolBar.ResizeButtons
+ 0001:000ADFD4       ComCtrls.TToolBar.InternalButtonCount
+ 0001:000ADFE4       ComCtrls.TToolBar.ButtonIndex
+ 0001:000AE12C       ComCtrls.TToolBar.ReorderButton
+ 0001:000AE1F4       ComCtrls.TToolBar.AdjustControl
+ 0001:000AE2C8       ComCtrls.TToolBar.AlignControls
+ 0001:000AE304       ComCtrls.TToolBar.ChangeScale
+ 0001:000AE308       ComCtrls.TToolBar.WMEraseBkgnd
+ 0001:000AE328       ComCtrls.TToolBar.WMGetDlgCode
+ 0001:000AE33C       ComCtrls.TToolBar.WMGetText
+ 0001:000AE368       ComCtrls.TToolBar.WMGetTextLength
+ 0001:000AE37C       ComCtrls.TToolBar.WMSetText
+ 0001:000AE3A0       ComCtrls.TToolBar.WMNotifyFormat
+ 0001:000AE3C4       ComCtrls.TToolBar.WMSize
+ 0001:000AE3F8       ComCtrls.TToolBar.WMSysChar
+ 0001:000AE424       ComCtrls.TToolBar.WMWindowPosChanged
+ 0001:000AE508       ComCtrls.TToolBar.WMWindowPosChanging
+ 0001:000AE568       ComCtrls.CalcSize
+ 0001:000AE7B4       ComCtrls.WrapHorz
+ 0001:000AE9E0       ComCtrls.WrapSizeVert
+ 0001:000AEAFC       ComCtrls.WrapSizeHorz
+ 0001:000AEB9C       ComCtrls.TToolBar.WrapButtons
+ 0001:000AEDE8       ComCtrls.TToolBar.CanAutoSize
+ 0001:000AEDF0       ComCtrls.TToolBar.CMControlChange
+ 0001:000AEE20       ComCtrls.TToolBar.CNChar
+ 0001:000AEE58       ComCtrls.ContainsActiveControl
+ 0001:000AEEAC       ComCtrls.TToolBar.CMDialogChar
+ 0001:000AEF7C       ComCtrls.TToolBar.CMEnabledChanged
+ 0001:000AEF98       ComCtrls.TToolBar.CMColorChanged
+ 0001:000AEFAC       ComCtrls.TToolBar.CMParentColorChanged
+ 0001:000AEFCC       ComCtrls.TToolBar.CNSysKeyDown
+ 0001:000AEFF0       ComCtrls.TToolBar.CMSysFontChanged
+ 0001:000AF004       ComCtrls.TToolBar.CNDropDownClosed
+ 0001:000AF044       ComCtrls.TToolBar.CNNotify
+ 0001:000AF9F8       ComCtrls.TToolBar.RecreateButtonsFromToolbar
+ 0001:000AFAC0       ComCtrls.IsToolButtonMouseMsg
+ 0001:000AFB80       ComCtrls.SendDropdownMsg
+ 0001:000AFBF0       ComCtrls.TToolBar.WndProc
+ 0001:000AFE3C       ComCtrls.TToolBar.FlipChildren
+ 0001:000AFE40       ComCtrls.TToolBar.FindButtonFromAccel
+ 0001:000AFF00       ComCtrls.TToolBar.IsCustomDrawn
+ 0001:000AFFA0       ComCtrls.TToolBar.CustomDraw
+ 0001:000AFFF8       ComCtrls.TToolBar.CustomDrawButton
+ 0001:000B0070       ComCtrls.TToolBar.CanvasChanged
+ 0001:000B0078       ComCtrls.TToolBar.GradientDrawButton
+ 0001:000B0870       ComCtrls.TToolBar.GradientDrawToolBar
+ 0001:000B08A4       ComCtrls.TToolBar.SetGradientDrawingOptions
+ 0001:000B08DC       ComCtrls.TToolBar.SetDrawingStyle
+ 0001:000B0904       ComCtrls.TToolBar.SetGradientEndColor
+ 0001:000B092C       ComCtrls.TToolBar.SetGradientStartColor
+ 0001:000B0954       ComCtrls.TToolBar.IsGradientEndColorStored
+ 0001:000B0974       ComCtrls.FindButton
+ 0001:000B0A20       ComCtrls.ToolMenuGetMsgHook
+ 0001:000B0CF8       ComCtrls.InitToolMenuHooks
+ 0001:000B0D30       ComCtrls.ReleaseToolMenuHooks
+ 0001:000B0D6C       ComCtrls.ToolMenuKeyMsgHook
+ 0001:000B0DF8       ComCtrls.InitToolMenuKeyHooks
+ 0001:000B0E1C       ComCtrls.ReleaseToolMenuKeyHooks
+ 0001:000B0E40       ComCtrls.TToolBar.ClearTempMenu
+ 0001:000B0EEC       ComCtrls.TToolBar.CheckMenuDropdown
+ 0001:000B1204       ComCtrls.IsMenuBar
+ 0001:000B1270       ComCtrls.TToolBar.WMSysCommand
+ 0001:000B1348       ComCtrls.TToolBar.ClickButton
+ 0001:000B13B4       ComCtrls.TToolBar.InitMenu
+ 0001:000B142C       ComCtrls.TToolBar.CancelMenu
+ 0001:000B1478       ComCtrls.TToolBar.TrackMenu
+ 0001:000B1528       ComCtrls.TToolBar.CMFontChanged
+ 0001:000B157C       ComCtrls.TToolBar.SetCustomizable
+ 0001:000B1590       ComCtrls.TToolBar.DoGetButton
+ 0001:000B17A4       ComCtrls.TToolBar.DoQueryDelete
+ 0001:000B17D0       ComCtrls.TToolBar.DoQueryInsert
+ 0001:000B17FC       ComCtrls.TToolBar.SaveButtons
+ 0001:000B184C       ComCtrls.TToolBar.SetHideClippedButtons
+ 0001:000B1860       ComCtrls.TToolBar.SetGradientDirection
+ 0001:000B1888       ComCtrls.TToolBar.Resize
+ 0001:000B18B4       ComCtrls.TToolBar.SetAutoSize
+ 0001:000B18E0       ComCtrls.TToolButtonActionLink.AssignClient
+ 0001:000B1904       ComCtrls.TToolButtonActionLink.IsCheckedLinked
+ 0001:000B1938       ComCtrls.TToolButtonActionLink.IsDropdownMenuLinked
+ 0001:000B1970       ComCtrls.TToolButtonActionLink.IsEnableDropdownLinked
+ 0001:000B19A8       ComCtrls.TToolButtonActionLink.IsImageIndexLinked
+ 0001:000B19E0       ComCtrls.TToolButtonActionLink.SetChecked
+ 0001:000B1A00       ComCtrls.TToolButtonActionLink.SetDropdownMenu
+ 0001:000B1A20       ComCtrls.TToolButtonActionLink.SetEnableDropdown
+ 0001:000B1A40       ComCtrls.TToolButtonActionLink.SetImageIndex
+ 0001:000B1A60       ComCtrls.TMonthCalColors.Create
+ 0001:000B1AB0       ComCtrls.TMonthCalColors.Assign
+ 0001:000B1BBC       ComCtrls.TMonthCalColors.SetColor
+ 0001:000B1C34       ComCtrls.TMonthCalColors.SetAllColors
+ 0001:000B1C90       ComCtrls.TCommonCalendar.Create
+ 0001:000B1D2C       ComCtrls.TCommonCalendar.Destroy
+ 0001:000B1D5C       ComCtrls.TCommonCalendar.CheckEmptyDate
+ 0001:000B1D60       ComCtrls.TCommonCalendar.CheckValidDate
+ 0001:000B1E98       ComCtrls.TCommonCalendar.CreateWnd
+ 0001:000B1F34       ComCtrls.TCommonCalendar.GetCalStyles
+ 0001:000B1F74       ComCtrls.TCommonCalendar.DoStoreEndDate
+ 0001:000B1F7C       ComCtrls.TCommonCalendar.DoStoreMaxDate
+ 0001:000B1F98       ComCtrls.TCommonCalendar.DoStoreMinDate
+ 0001:000B1FB4       ComCtrls.TCommonCalendar.GetDate
+ 0001:000B1FD0       ComCtrls.TCommonCalendar.SetCalColors
+ 0001:000B1FE4       ComCtrls.TCommonCalendar.SetDate
+ 0001:000B20A0       ComCtrls.TCommonCalendar.SetDateTime
+ 0001:000B2128       ComCtrls.TCommonCalendar.SetEndDate
+ 0001:000B21B0       ComCtrls.TCommonCalendar.SetFirstDayOfWeek
+ 0001:000B2220       ComCtrls.TCommonCalendar.SetMaxDate
+ 0001:000B231C       ComCtrls.TCommonCalendar.SetMaxSelectRange
+ 0001:000B2378       ComCtrls.TCommonCalendar.SetMinDate
+ 0001:000B2474       ComCtrls.TCommonCalendar.SetMonthDelta
+ 0001:000B24B4       ComCtrls.TCommonCalendar.SetMultiSelect
+ 0001:000B24F4       ComCtrls.TCommonCalendar.SetRange
+ 0001:000B2644       ComCtrls.TCommonCalendar.SetSelectedRange
+ 0001:000B26F4       ComCtrls.TCommonCalendar.SetShowToday
+ 0001:000B2714       ComCtrls.TCommonCalendar.SetShowTodayCircle
+ 0001:000B2734       ComCtrls.TCommonCalendar.SetWeekNumbers
+ 0001:000B2750       ComCtrls.IsBlankSysTime
+ 0001:000B2760       ComCtrls.TMonthCalendar.Create
+ 0001:000B27B8       ComCtrls.TMonthCalendar.CMFontChanged
+ 0001:000B27E0       ComCtrls.TMonthCalendar.CNNotify
+ 0001:000B28F0       ComCtrls.TMonthCalendar.ConstrainedResize
+ 0001:000B2968       ComCtrls.TMonthCalendar.CreateParams
+ 0001:000B29B4       ComCtrls.TMonthCalendar.GetCalendarHandle
+ 0001:000B29BC       ComCtrls.TMonthCalendar.MsgSetCalColors
+ 0001:000B29F8       ComCtrls.TMonthCalendar.MsgSetDateTime
+ 0001:000B2A40       ComCtrls.TMonthCalendar.MsgSetRange
+ 0001:000B2A80       ComCtrls.TMonthCalendar.CanAutoSize
+ 0001:000B2AD0       ComCtrls.TComboExItem.Assign
+ 0001:000B2B24       ComCtrls.TComboExItem.SetCaption
+ 0001:000B2B58       ComCtrls.TComboExItem.SetData
+ 0001:000B2B8C       ComCtrls.TComboExItem.SetDisplayName
+ 0001:000B2BAC       ComCtrls.TComboExItem.SetImageIndex
+ 0001:000B2BDC       ComCtrls.TComboExItem.SetIndex
+ 0001:000B2BF8       ComCtrls.TComboExItem.SetOverlayImageIndex
+ 0001:000B2C14       ComCtrls.TComboExItem.SetSelectedImageIndex
+ 0001:000B2C30       ComCtrls.TComboExItems.Add
+ 0001:000B2C3C       ComCtrls.TComboExItems.AddItem
+ 0001:000B2CA4       ComCtrls.TComboExItems.GetComboItem
+ 0001:000B2CB8       ComCtrls.TComboExItems.Insert
+ 0001:000B2CF0       ComCtrls.TComboExItems.Notify
+ 0001:000B2D60       ComCtrls.TComboExItems.SetItem
+ 0001:000B2ECC       ComCtrls..TComboBoxExEnumerator
+ 0001:000B2F30       ComCtrls.TCustomComboBoxEx.Create
+ 0001:000B3058       ComCtrls.TCustomComboBoxEx.Destroy
+ 0001:000B30D0       ComCtrls.TCustomComboBoxEx.CNNotify
+ 0001:000B3120       ComCtrls.TCustomComboBoxEx.CreateParams
+ 0001:000B3198       ComCtrls.TCustomComboBoxEx.SetImages
+ 0001:000B322C       ComCtrls.TCustomComboBoxEx.ImageListChange
+ 0001:000B3258       ComCtrls.TCustomComboBoxEx.WndProc
+ 0001:000B32A0       ComCtrls.TCustomComboBoxEx.Notification
+ 0001:000B32D0       ComCtrls.TCustomComboBoxEx.CMParentColorChanged
+ 0001:000B32FC       ComCtrls.TCustomComboBoxEx.CMColorChanged
+ 0001:000B335C       ComCtrls.TCustomComboBoxEx.WMLButtonDown
+ 0001:000B33D4       ComCtrls.TCustomComboBoxEx.ComboExWndProc
+ 0001:000B33F4       ComCtrls.TCustomComboBoxEx.CreateWnd
+ 0001:000B373C       ComCtrls.TCustomComboBoxEx.GetItemCount
+ 0001:000B3748       ComCtrls.TCustomComboBoxEx.GetItemsClass
+ 0001:000B3750       ComCtrls.TCustomComboBoxEx.GetActionLinkClass
+ 0001:000B3758       ComCtrls.TCustomComboBoxEx.SetStyleEx
+ 0001:000B37B8       ComCtrls.TCustomComboBoxEx.ActionChange
+ 0001:000B381C       ComCtrls.TCustomComboBoxEx.SetDropDownCount
+ 0001:000B385C       ComCtrls.TCustomComboBoxEx.GetItemHt
+ 0001:000B3864       ComCtrls.TCustomComboBoxEx.DestroyWnd
+ 0001:000B38C8       ComCtrls.TCustomComboBoxEx.Focused
+ 0001:000B3904       ComCtrls.TCustomComboBoxEx.UpdateAutoComplete
+ 0001:000B3A24       ComCtrls.TCustomComboBoxEx.WMHelp
+ 0001:000B3A44       ComCtrls.TStatusBar.GetOnDrawPanel
+ 0001:000B3A58       ComCtrls.TStatusBar.SetOnDrawPanel
+ 0001:000B3A74       ComCtrls.TComboBoxExStrings.Add
+ 0001:000B3A98       ComCtrls.TComboBoxExStrings.AddObject
+ 0001:000B3AC8       ComCtrls.TComboBoxExStrings.Clear
+ 0001:000B3B30       ComCtrls.TComboBoxExStrings.Create
+ 0001:000B3B8C       ComCtrls.TComboBoxExStrings.Destroy
+ 0001:000B3BBC       ComCtrls.TComboBoxExStrings.Delete
+ 0001:000B3BC8       ComCtrls.TComboBoxExStrings.Exchange
+ 0001:000B3D14       ComCtrls.TComboBoxExStrings.Get
+ 0001:000B3D38       ComCtrls.TComboBoxExStrings.GetCapacity
+ 0001:000B3D44       ComCtrls.TComboBoxExStrings.GetCount
+ 0001:000B3D50       ComCtrls.TComboBoxExStrings.GetObject
+ 0001:000B3D68       ComCtrls.TComboBoxExStrings.IndexOf
+ 0001:000B3E0C       ComCtrls.TComboBoxExStrings.IndexOfName
+ 0001:000B3E14       ComCtrls.TComboBoxExStrings.Insert
+ 0001:000B3E28       ComCtrls.TComboBoxExStrings.Move
+ 0001:000B3E48       ComCtrls.TComboBoxExStrings.PutObject
+ 0001:000B3E68       ComCtrls.TComboBoxExStrings.SetUpdateState
+ 0001:000B3EA8       ComCtrls.TComboBoxExStrings.GetItemsClass
+ 0001:000B3EB0       ComCtrls.TComboBoxExStrings.GetItemClass
+ 0001:000B3EB8       ComCtrls.THeaderControl.GetOnDrawSection
+ 0001:000B3ECC       ComCtrls.THeaderControl.GetOnSectionClick
+ 0001:000B3EE0       ComCtrls.THeaderControl.GetOnSectionResize
+ 0001:000B3EF4       ComCtrls.THeaderControl.GetOnSectionTrack
+ 0001:000B3F08       ComCtrls.THeaderControl.SetOnDrawSection
+ 0001:000B3F24       ComCtrls.THeaderControl.SetOnSectionClick
+ 0001:000B3F40       ComCtrls.THeaderControl.SetOnSectionResize
+ 0001:000B3F5C       ComCtrls.THeaderControl.SetOnSectionTrack
+ 0001:000B3F78       ComCtrls.TListViewActionLink.AddItem
+ 0001:000B3FF0       ComCtrls.TListViewActionLink.AddItem
+ 0001:000B4028       ComCtrls.TListViewActionLink.SetImages
+ 0001:000B405C       ComCtrls.TComboBoxExActionLink.AddItem
+ 0001:000B40CC       ComCtrls.TComboBoxExActionLink.AddItem
+ 0001:000B4100       ComCtrls.TComboBoxExEnumerator.Clone
+ 0001:000B4144       ComCtrls.TComboBoxExEnumerator.Create
+ 0001:000B4180       ComCtrls.TComboBoxExEnumerator.GetCount
+ 0001:000B418C       ComCtrls.TComboBoxExEnumerator.GetString
+ 0001:000B41B0       ComCtrls.TComboBoxExEnumerator.Next
+ 0001:000B4288       ComCtrls.TComboBoxExEnumerator.Reset
+ 0001:000B429C       ComCtrls.TComboBoxExEnumerator.Skip
+ 0001:000B42C8       ComCtrls.Finalization
+ 0001:000B4340       TeCanvas..TChartPen
+ 0001:000B4410       TeCanvas..TChartHiddenPen
+ 0001:000B44C4       TeCanvas..TDottedGrayPen
+ 0001:000B4598       TeCanvas..TDarkGrayPen
+ 0001:000B4648       TeCanvas..TChartArrowPen
+ 0001:000B46FC       TeCanvas..TChartAxisPen
+ 0001:000B47AC       TeCanvas..TView3DOptions
+ 0001:000B4A08       TeCanvas..TTeeCanvas
+ 0001:000B4AF4       TeCanvas..TCanvas3D
+ 0001:000B4C7C       TeCanvas..TTeeCanvas3D
+ 0001:000B4E08       TeCanvas.SinCos
+ 0001:000B4E1C       TeCanvas.ArcTan2
+ 0001:000B4E2C       TeCanvas.RectSize
+ 0001:000B4E40       TeCanvas.RectCenter
+ 0001:000B4E60       TeCanvas.TChartPen.Create
+ 0001:000B4EB0       TeCanvas.TChartPen.Assign
+ 0001:000B4EE4       TeCanvas.TChartPen.SetVisible
+ 0001:000B4EF8       TeCanvas.TChartPen.SetSmallDots
+ 0001:000B4F0C       TeCanvas.TChartHiddenPen.Create
+ 0001:000B4F58       TeCanvas.TDottedGrayPen.Create
+ 0001:000B4FB0       TeCanvas.TDarkGrayPen.Create
+ 0001:000B5000       TeCanvas.TChartAxisPen.Create
+ 0001:000B5050       TeCanvas.TChartArrowPen.Create
+ 0001:000B50A0       TeCanvas.TView3DOptions.Create
+ 0001:000B5100       TeCanvas.TView3DOptions.Repaint
+ 0001:000B510C       TeCanvas.TView3DOptions.SetIntegerProperty
+ 0001:000B5118       TeCanvas.TView3DOptions.SetBooleanProperty
+ 0001:000B5124       TeCanvas.TView3DOptions.SetElevation
+ 0001:000B5130       TeCanvas.TView3DOptions.SetPerspective
+ 0001:000B513C       TeCanvas.TView3DOptions.SetRotation
+ 0001:000B5148       TeCanvas.TView3DOptions.SetTilt
+ 0001:000B5154       TeCanvas.TView3DOptions.SetHorizOffset
+ 0001:000B5178       TeCanvas.TView3DOptions.SetVertOffset
+ 0001:000B519C       TeCanvas.TView3DOptions.SetOrthogonal
+ 0001:000B51A8       TeCanvas.TView3DOptions.SetZoom
+ 0001:000B51D0       TeCanvas.TView3DOptions.SetZoomText
+ 0001:000B51DC       TeCanvas.TView3DOptions.Assign
+ 0001:000B5230       TeCanvas.TTeeCanvas.SetCanvas
+ 0001:000B5250       TeCanvas.TTeeCanvas.ResetState
+ 0001:000B52C0       TeCanvas.TTeeCanvas.AssignVisiblePen
+ 0001:000B5338       TeCanvas.TTeeCanvas.TextWidth
+ 0001:000B5384       TeCanvas.TTeeCanvas.TextHeight
+ 0001:000B53D4       TeCanvas.TTeeCanvas.FontHeight
+ 0001:000B53EC       TeCanvas.TCanvas3D.Assign
+ 0001:000B5408       TeCanvas.TTeeCanvas3D.Create
+ 0001:000B5470       TeCanvas.TTeeCanvas3D.DeleteBitmap
+ 0001:000B5484       TeCanvas.TTeeCanvas3D.Destroy
+ 0001:000B54B0       TeCanvas.TTeeCanvas3D.GetBackMode
+ 0001:000B54C4       TeCanvas.TTeeCanvas3D.SetBackMode
+ 0001:000B54E0       TeCanvas.TTeeCanvas3D.SetBackColor
+ 0001:000B5500       TeCanvas.TTeeCanvas3D.GetBackColor
+ 0001:000B5514       TeCanvas.TTeeCanvas3D.TextOut
+ 0001:000B5570       TeCanvas.TTeeCanvas3D.Rectangle
+ 0001:000B559C       TeCanvas.TTeeCanvas3D.RoundRect
+ 0001:000B55D0       TeCanvas.TTeeCanvas3D.SetTextAlign
+ 0001:000B55E8       TeCanvas.TTeeCanvas3D.MoveTo
+ 0001:000B5608       TeCanvas.TTeeCanvas3D.LineTo
+ 0001:000B5628       TeCanvas.TTeeCanvas3D.DoRectangle
+ 0001:000B5650       TeCanvas.TTeeCanvas3D.PolygonFour
+ 0001:000B566C       TeCanvas.TTeeCanvas3D.PlaneWithZ
+ 0001:000B5720       TeCanvas.TTeeCanvas3D.Calc3DTPoint
+ 0001:000B572C       TeCanvas.TTeeCanvas3D.Calc3DTPoint3D
+ 0001:000B5740       TeCanvas.TTeeCanvas3D.Calculate3DPosition
+ 0001:000B5774       TeCanvas.TTeeCanvas3D.Calc3DPoint
+ 0001:000B57A0       TeCanvas.TTeeCanvas3D.Calculate2DPosition
+ 0001:000B58D0       TeCanvas.TTeeCanvas3D.Calc3DPos
+ 0001:000B5A10       TeCanvas.TTeeCanvas3D.GetHandle
+ 0001:000B5A1C       TeCanvas.TTeeCanvas3D.Cone
+ 0001:000B5A4C       TeCanvas.TTeeCanvas3D.Sphere
+ 0001:000B5A8C       TeCanvas.TTeeCanvas3D.Surface3D
+ 0001:000B5A94       TeCanvas.TTeeCanvas3D.TextOut3D
+ 0001:000B5BA4       TeCanvas.TTeeCanvas3D.MoveTo3D
+ 0001:000B5BE4       TeCanvas.TTeeCanvas3D.LineTo3D
+ 0001:000B5C24       TeCanvas.TTeeCanvas3D.RectangleWithZ
+ 0001:000B5C8C       TeCanvas.TTeeCanvas3D.DoHorizLine
+ 0001:000B5CC4       TeCanvas.TTeeCanvas3D.DoVertLine
+ 0001:000B5CF4       TeCanvas.ClipCanvas
+ 0001:000B5D58       TeCanvas.TTeeCanvas3D.ClipRectangle
+ 0001:000B5D64       TeCanvas.TTeeCanvas3D.ClipCube
+ 0001:000B5F20       TeCanvas.UnClipCanvas
+ 0001:000B5F34       TeCanvas.TTeeCanvas3D.UnClipRectangle
+ 0001:000B5F40       TeCanvas.TTeeCanvas3D.Projection
+ 0001:000B5FA8       TeCanvas.CalcTrigValues
+ 0001:000B6154       TeCanvas.TTeeCanvas3D.InitWindow
+ 0001:000B6314       TeCanvas.TTeeCanvas3D.TransferBitmap
+ 0001:000B636C       TeCanvas.TTeeCanvas3D.ReDrawBitmap
+ 0001:000B638C       TeCanvas.TTeeCanvas3D.ShowImage
+ 0001:000B63CC       TeCanvas.TTeeCanvas3D.StretchDraw
+ 0001:000B63E8       TeCanvas.TTeeCanvas3D.Draw
+ 0001:000B6470       TeCanvas.CalcBrushColor
+ 0001:000B6524       TeCanvas.RectGradient
+ 0001:000B6650       TeCanvas.FromCorner
+ 0001:000B6768       TeCanvas.FromCenter
+ 0001:000B68B4       TeCanvas.TTeeCanvas3D.GradientFill
+ 0001:000B69D0       TeCanvas.TTeeCanvas3D.EraseBackground
+ 0001:000B69E4       TeCanvas.TTeeCanvas3D.FillRect
+ 0001:000B6A08       TeCanvas.TTeeCanvas3D.Frame3D
+ 0001:000B6AF8       TeCanvas.ApplyDark
+ 0001:000B6B50       TeCanvas.Dark
+ 0001:000B6B9C       TeCanvas.TTeeCanvas3D.Cube
+ 0001:000B6E2C       TeCanvas.TTeeCanvas3D.RectangleZ
+ 0001:000B6E9C       TeCanvas.TTeeCanvas3D.RectangleY
+ 0001:000B6F08       TeCanvas.TTeeCanvas3D.FrontPlaneBegin
+ 0001:000B6F20       TeCanvas.TTeeCanvas3D.FrontPlaneEnd
+ 0001:000B6F30       TeCanvas.TTeeCanvas3D.Invalidate
+ 0001:000B6F38       TeCanvas.TTeeCanvas3D.RotateLabel3D
+ 0001:000B6F78       TeCanvas.TTeeCanvas3D.RotateLabel
+ 0001:000B706C       TeCanvas.TTeeCanvas3D.Line
+ 0001:000B70A0       TeCanvas.TTeeCanvas3D.LineWithZ
+ 0001:000B7100       TeCanvas.TTeeCanvas3D.Polygon
+ 0001:000B7120       TeCanvas.TTeeCanvas3D.PolygonWithZ
+ 0001:000B7138       TeCanvas.TTeeCanvas3D.Ellipse
+ 0001:000B7164       TeCanvas.TTeeCanvas3D.EllipseWithZ
+ 0001:000B73EC       TeCanvas.TTeeCanvas3D.SetPixel
+ 0001:000B7418       TeCanvas.TTeeCanvas3D.Arc
+ 0001:000B7454       TeCanvas.TTeeCanvas3D.Pie
+ 0001:000B7490       TeCanvas.Dark
+ 0001:000B74E8       TeCanvas.Draw3DPie
+ 0001:000B7614       TeCanvas.TTeeCanvas3D.Pie3D
+ 0001:000B7AB4       TeCanvas.TTeeCanvas3D.Plane3D
+ 0001:000B7B2C       TeCanvas.Dark
+ 0001:000B7B84       TeCanvas.TTeeCanvas3D.InternalCylinder
+ 0001:000B8228       TeCanvas.TTeeCanvas3D.Cylinder
+ 0001:000B8254       TeCanvas.Dark
+ 0001:000B82AC       TeCanvas.TTeeCanvas3D.Pyramid
+ 0001:000B85EC       TeCanvas.TTeeCanvas3D.PlaneFour3D
+ 0001:000B8660       TeCanvas.TTeeCanvas3D.SetPixel3D
+ 0001:000B86D0       TeCanvas.TTeeCanvas3D.GetSupports3DText
+ 0001:000B86D4       TeCanvas.TTeeCanvas3D.GetSupportsFullRotation
+ 0001:000B86D8       TeCanvas.TTeeCanvas3D.GetTextAlign
+ 0001:000B86EC       TeCanvas.TTeeCanvas3D.GetUseBuffer
+ 0001:000B86F4       TeCanvas.TTeeCanvas3D.SetUseBuffer
+ 0001:000B8720       TeCanvas.TTeeCanvas3D.GetMonochrome
+ 0001:000B8728       TeCanvas.TTeeCanvas3D.SetMonochrome
+ 0001:000B8758       TeCanvas.TTeeCanvas3D.HorizLine3D
+ 0001:000B87C8       TeCanvas.TTeeCanvas3D.VertLine3D
+ 0001:000B8834       TeCanvas.TTeeCanvas3D.ZLine3D
+ 0001:000B88AC       TeCanvas.TTeeCanvas3D.Triangle3D
+ 0001:000B8944       TeCanvas.TTeeCanvas3D.TriangleWithZ
+ 0001:000B89B0       TeCanvas.CalcArrowPoint
+ 0001:000B8A14       TeCanvas.TTeeCanvas3D.Arrow
+ 0001:000B8D84       TeCanvas.MaxDouble
+ 0001:000B8DBC       TeCanvas.MinDouble
+ 0001:000B8DF4       TeCanvas.MaxLong
+ 0001:000B8DFC       TeCanvas.MinLong
+ 0001:000B8E04       TeCanvas.SwapLongint
+ 0001:000B8E10       TeCanvas.SwapDouble
+ 0001:000B8E38       TeCanvas.SwapInteger
+ 0001:000B90A4       TeeProcs..ChartException
+ 0001:000B9100       TeeProcs..TZoomPanningRecord
+ 0001:000B91AC       TeeProcs..TCustomTeePanel
+ 0001:000B938C       TeeProcs..TCustomTeeGradient
+ 0001:000B9428       TeeProcs..TChartGradient
+ 0001:000B9548       TeeProcs..TCustomTeePanelExtended
+ 0001:000B96F0       TeeProcs..TChartFontObject
+ 0001:000B9788       TeeProcs.DateTimeDefaultFormat
+ 0001:000B97C8       TeeProcs.NextDateTimeStep
+ 0001:000B9810       TeeProcs.FindDateTimeStep
+ 0001:000B9844       TeeProcs.MaxLong
+ 0001:000B984C       TeeProcs.SwapLongint
+ 0001:000B9858       TeeProcs.GetScreenLogPixels
+ 0001:000B987C       TeeProcs.CheckJapaneseFontSize
+ 0001:000B98AC       TeeProcs.GetDefaultFontSize
+ 0001:000B990C       TeeProcs.GetDefaultFontName
+ 0001:000B9958       TeeProcs.IsDefaultFont
+ 0001:000B9A00       TeeProcs.CreateDefaultFont
+ 0001:000B9A90       TeeProcs.GetDefaultColor
+ 0001:000B9AA8       TeeProcs.TeeCheckAngle
+ 0001:000B9B20       TeeProcs.TCustomTeePanel.Create
+ 0001:000B9CA8       TeeProcs.TCustomTeePanel.Destroy
+ 0001:000B9CFC       TeeProcs.TCustomTeePanel.CanvasChanged
+ 0001:000B9D0C       TeeProcs.TCustomTeePanel.CreateParams
+ 0001:000B9D24       TeeProcs.TCustomTeePanel.SetView3DOptions
+ 0001:000B9D34       TeeProcs.TCustomTeePanel.SetView3D
+ 0001:000B9D44       TeeProcs.TCustomTeePanel.Draw
+ 0001:000B9E8C       TeeProcs.TCustomTeePanel.Paint
+ 0001:000B9ED0       TeeProcs.TCustomTeePanel.SetBrushCanvas
+ 0001:000B9F4C       TeeProcs.TCustomTeePanel.FontCanvas
+ 0001:000B9F68       TeeProcs.TCustomTeePanel.CanClip
+ 0001:000B9FC4       TeeProcs.TCustomTeePanel.Set3DPercent
+ 0001:000BA054       TeeProcs.TCustomTeePanel.SetLongintProperty
+ 0001:000BA06C       TeeProcs.TCustomTeePanel.SetStringProperty
+ 0001:000BA098       TeeProcs.TCustomTeePanel.SetDoubleProperty
+ 0001:000BA0C4       TeeProcs.TCustomTeePanel.SetColorProperty
+ 0001:000BA0DC       TeeProcs.TCustomTeePanel.SetBooleanProperty
+ 0001:000BA0F4       TeeProcs.TCustomTeePanel.SetIntegerProperty
+ 0001:000BA10C       TeeProcs.TCustomTeePanel.Loaded
+ 0001:000BA124       TeeProcs.TCustomTeePanel.CMMouseLeave
+ 0001:000BA150       TeeProcs.TCustomTeePanel.WMGetDlgCode
+ 0001:000BA160       TeeProcs.TCustomTeePanel.WMEraseBkgnd
+ 0001:000BA17C       TeeProcs.TCustomTeePanel.Invalidate
+ 0001:000BA1A8       TeeProcs.TCustomTeePanel.MultiLineTextWidth
+ 0001:000BA2E8       TeeProcs.TCustomTeePanel.GetMargin
+ 0001:000BA308       TeeProcs.TCustomTeePanel.SetMargin
+ 0001:000BA344       TeeProcs.TCustomTeePanel.GetBufferedDisplay
+ 0001:000BA350       TeeProcs.TCustomTeePanel.SetBufferedDisplay
+ 0001:000BA35C       TeeProcs.TCustomTeePanel.ReCalcWidthHeight
+ 0001:000BA3F0       TeeProcs.TCustomTeePanel.DrawZoomRectangle
+ 0001:000BA470       TeeProcs.TCustomTeePanel.GetRectangle
+ 0001:000BA484       TeeProcs.TCustomTeePanel.GetMonochrome
+ 0001:000BA490       TeeProcs.TCustomTeePanel.SetMonochrome
+ 0001:000BA49C       TeeProcs.TCustomTeePanel.Assign
+ 0001:000BA54C       TeeProcs.TCustomTeePanel.TeeCreateBitmap
+ 0001:000BA5DC       TeeProcs.TCustomTeePanel.CopyToClipboardBitmap
+ 0001:000BA644       TeeProcs.TCustomTeePanel.CheckPenWidth
+ 0001:000BA674       TeeProcs.TCustomTeePanel.DrawPanelBevels
+ 0001:000BA780       TeeProcs.TCustomTeePanelExtended.SetAnimatedZoom
+ 0001:000BA790       TeeProcs.TCustomTeePanelExtended.SetAnimatedZoomSteps
+ 0001:000BA7A0       TeeProcs.TCustomTeePanelExtended.SetBackImage
+ 0001:000BA7B0       TeeProcs.TCustomTeePanelExtended.SetBackImageMode
+ 0001:000BA7D0       TeeProcs.TCustomTeePanelExtended.Create
+ 0001:000BA864       TeeProcs.TCustomTeePanelExtended.Destroy
+ 0001:000BA8A0       TeeProcs.TCustomTeePanelExtended.UndoZoom
+ 0001:000BA8D0       TeeProcs.TCustomTeePanelExtended.SetGradient
+ 0001:000BA8DC       TeeProcs.TCustomTeePanelExtended.Assign
+ 0001:000BA968       TeeProcs.TCustomTeePanelExtended.GetPalette
+ 0001:000BA9A4       TeeProcs.TileBitmap
+ 0001:000BAA44       TeeProcs.Calc3DRect
+ 0001:000BAACC       TeeProcs.TCustomTeePanelExtended.DrawBitmap
+ 0001:000BAC50       TeeProcs.TCustomTeePanelExtended.DrawImage
+ 0001:000BAC64       TeeProcs.TCustomTeePanelExtended.PanelPaint
+ 0001:000BACB4       TeeProcs.TCustomTeePanelExtended.FillPanelRect
+ 0001:000BAD40       TeeProcs.TCustomTeeGradient.Create
+ 0001:000BAD90       TeeProcs.TCustomTeeGradient.SetVisible
+ 0001:000BADB0       TeeProcs.TCustomTeeGradient.SetDirection
+ 0001:000BADD0       TeeProcs.TCustomTeeGradient.SetStartColor
+ 0001:000BADF0       TeeProcs.TCustomTeeGradient.SetEndColor
+ 0001:000BAE10       TeeProcs.TCustomTeeGradient.Assign
+ 0001:000BAE54       TeeProcs.TChartFontObject.Create
+ 0001:000BAEB0       TeeProcs.TChartFontObject.IsFontStored
+ 0001:000BAEC0       TeeProcs.TChartFontObject.Destroy
+ 0001:000BAEF0       TeeProcs.TChartFontObject.Assign
+ 0001:000BAF24       TeeProcs.TChartFontObject.SetFont
+ 0001:000BAF34       TeeProcs.TChartFontObject.Repaint
+ 0001:000BAF44       TeeProcs.TZoomPanningRecord.Check
+ 0001:000BAF70       TeeProcs.TZoomPanningRecord.Activate
+ 0001:000BAFC0       TeeProcs.Dif
+ 0001:000BAFD0       TeeProcs.PointInLineTolerance
+ 0001:000BB164       TeeProcs.PointInLine
+ 0001:000BB17C       TeeProcs.PointInPolygon
+ 0001:000BB218       TeeProcs.PointInTriangle
+ 0001:000BB298       TeeProcs.PointInHorizTriangle
+ 0001:000BB318       TeeProcs.PointInEllipse
+ 0001:000BB3C8       TeeProcs.TeeSplitInLines
+ 0001:000BB3F8       TeeProcs.TeeNumTextLines
+ 0001:000BB4A0       TeeProcs.TeeRoundDate
+ 0001:000BB540       TeeProcs.DecMonths
+ 0001:000BB57C       TeeProcs.IncMonths
+ 0001:000BB5AC       TeeProcs.IncDecMonths
+ 0001:000BB5D0       TeeProcs.TeeDateTimeIncrement
+ 0001:000BB704       TeeProcs.TeeNextStep
+ 0001:000BB7D8       TeeProcs.TryFindResource
+ 0001:000BB87C       TeeProcs.LoadClassBitmap
+ 0001:000BB974       TeeProcs.TeeGetClassNameBitmap
+ 0001:000BB990       TeeProcs.Finalization
+ 0001:000BBAD8       TeEngine..TChartValueList
+ 0001:000BBC58       TeEngine..TChartAxisTitle
+ 0001:000BBD60       TeEngine..AxisException
+ 0001:000BBE10       TeEngine..TCustomChartAxis
+ 0001:000BBEC0       TeEngine..TChartAxis
+ 0001:000BC514       TeEngine..TChartDepthAxis
+ 0001:000BCD08       TeEngine..TChartSeriesList
+ 0001:000BCDA4       TeEngine..TCustomAxisPanel
+ 0001:000BCF6C       TeEngine..TSeriesMarkPosition
+ 0001:000BCFCC       TeEngine..TSeriesMarksPositions
+ 0001:000BD040       TeEngine..TSeriesMarks
+ 0001:000BD3AC       TeEngine..TTeeFunction
+ 0001:000BD4F8       TeEngine..TChartValueLists
+ 0001:000BD5E4       TeEngine..TChartSeries
+ 0001:000BDB64       TeEngine.TChartAxisTitle.Assign
+ 0001:000BDBA4       TeEngine.TChartAxisTitle.IsAngleStored
+ 0001:000BDBB4       TeEngine.TChartAxisTitle.SetAngle
+ 0001:000BDC18       TeEngine.TChartAxisTitle.SetCaption
+ 0001:000BDC28       TeEngine.TCustomChartAxis.Create
+ 0001:000BDE08       TeEngine.TCustomChartAxis.IncDecDateTime
+ 0001:000BDE44       TeEngine.TCustomChartAxis.IsDateTime
+ 0001:000BDEB8       TeEngine.TCustomChartAxis.SetTicks
+ 0001:000BDEC4       TeEngine.TCustomChartAxis.SetMinorTicks
+ 0001:000BDED0       TeEngine.TCustomChartAxis.SetTicksInner
+ 0001:000BDEDC       TeEngine.TCustomChartAxis.SetGrid
+ 0001:000BDEE8       TeEngine.TCustomChartAxis.SetMinorGrid
+ 0001:000BDEF4       TeEngine.TCustomChartAxis.SetGridCentered
+ 0001:000BDF08       TeEngine.TCustomChartAxis.SetAxis
+ 0001:000BDF14       TeEngine.TCustomChartAxis.Destroy
+ 0001:000BDF7C       TeEngine.TCustomChartAxis.IsPosStored
+ 0001:000BDF98       TeEngine.TCustomChartAxis.IsStartStored
+ 0001:000BDFB4       TeEngine.TCustomChartAxis.IsEndStored
+ 0001:000BDFD0       TeEngine.InternalCalcPos
+ 0001:000BE038       TeEngine.TCustomChartAxis.CalcPosPoint
+ 0001:000BE234       TeEngine.TCustomChartAxis.SetDateTimeFormat
+ 0001:000BE248       TeEngine.TCustomChartAxis.SetAxisTitle
+ 0001:000BE254       TeEngine.TCustomChartAxis.SetStartPosition
+ 0001:000BE274       TeEngine.TCustomChartAxis.SetEndPosition
+ 0001:000BE294       TeEngine.TCustomChartAxis.SetPositionPercent
+ 0001:000BE2B4       TeEngine.TCustomChartAxis.SetRoundFirstLabel
+ 0001:000BE2C8       TeEngine.TCustomChartAxis.SetLabelsMultiLine
+ 0001:000BE2DC       TeEngine.TCustomChartAxis.SetTickOnLabelsOnly
+ 0001:000BE2F0       TeEngine.TCustomChartAxis.CalcDateTimeIncrement
+ 0001:000BE3C8       TeEngine.InternalCalcLabelsIncrement
+ 0001:000BE4D8       TeEngine.TCustomChartAxis.CalcLabelsIncrement
+ 0001:000BE544       TeEngine.TCustomChartAxis.LabelWidth
+ 0001:000BE5D4       TeEngine.TCustomChartAxis.LabelHeight
+ 0001:000BE660       TeEngine.TCustomChartAxis.IsMaxStored
+ 0001:000BE674       TeEngine.TCustomChartAxis.IsMinStored
+ 0001:000BE688       TeEngine.TCustomChartAxis.CalcXYIncrement
+ 0001:000BE708       TeEngine.TCustomChartAxis.CalcIncrement
+ 0001:000BE788       TeEngine.RecalcAdjustedMinMax
+ 0001:000BE7FC       TeEngine.TCustomChartAxis.AdjustMaxMinRect
+ 0001:000BE8A8       TeEngine.TCustomChartAxis.CalcMinMax
+ 0001:000BE904       TeEngine.TCustomChartAxis.AdjustMaxMin
+ 0001:000BE950       TeEngine.TCustomChartAxis.Assign
+ 0001:000BEB3C       TeEngine.TCustomChartAxis.LabelValue
+ 0001:000BEC30       TeEngine.TCustomChartAxis.CalcLabelStyle
+ 0001:000BED78       TeEngine.MaxLabelsValueWidth
+ 0001:000BEF1C       TeEngine.TCustomChartAxis.MaxLabelsWidth
+ 0001:000BEF6C       TeEngine.TCustomChartAxis.SetLabels
+ 0001:000BEF80       TeEngine.TCustomChartAxis.SetLabelsFont
+ 0001:000BEF90       TeEngine.TCustomChartAxis.IsFontStored
+ 0001:000BEFA0       TeEngine.TCustomChartAxis.SetAutomatic
+ 0001:000BEFCC       TeEngine.TCustomChartAxis.SetAutomaticMinimum
+ 0001:000BEFFC       TeEngine.TCustomChartAxis.SetAutomaticMaximum
+ 0001:000BF02C       TeEngine.TCustomChartAxis.IsAxisValuesFormatStored
+ 0001:000BF084       TeEngine.TCustomChartAxis.SetValuesFormat
+ 0001:000BF098       TeEngine.TCustomChartAxis.SetInverted
+ 0001:000BF0AC       TeEngine.TCustomChartAxis.SetLogarithmicBase
+ 0001:000BF118       TeEngine.TCustomChartAxis.SetLogarithmic
+ 0001:000BF1F0       TeEngine.TCustomChartAxis.SetLabelsAngle
+ 0001:000BF254       TeEngine.TCustomChartAxis.SetLabelsSeparation
+ 0001:000BF2BC       TeEngine.TCustomChartAxis.SetLabelsSize
+ 0001:000BF2D0       TeEngine.TCustomChartAxis.SetTitleSize
+ 0001:000BF2E4       TeEngine.TCustomChartAxis.SetLabelsOnAxis
+ 0001:000BF2F8       TeEngine.TCustomChartAxis.SetExactDateTime
+ 0001:000BF30C       TeEngine.TCustomChartAxis.SetLabelStyle
+ 0001:000BF328       TeEngine.TCustomChartAxis.SetVisible
+ 0001:000BF33C       TeEngine.TCustomChartAxis.SetDesiredIncrement
+ 0001:000BF3E4       TeEngine.TCustomChartAxis.SetMinimum
+ 0001:000BF464       TeEngine.TCustomChartAxis.InternalSetMinimum
+ 0001:000BF480       TeEngine.TCustomChartAxis.SetMaximum
+ 0001:000BF500       TeEngine.TCustomChartAxis.SetMinMax
+ 0001:000BF580       TeEngine.TCustomChartAxis.InternalSetMaximum
+ 0001:000BF59C       TeEngine.TCustomChartAxis.SetTickLength
+ 0001:000BF5B0       TeEngine.TCustomChartAxis.SetMinorTickLength
+ 0001:000BF5C4       TeEngine.TCustomChartAxis.SetMinorTickCount
+ 0001:000BF5D8       TeEngine.TCustomChartAxis.SetTickInnerLength
+ 0001:000BF5EC       TeEngine.TCustomChartAxis.DrawTitle
+ 0001:000BF688       TeEngine.TCustomChartAxis.DrawAxisLabel
+ 0001:000BFA0C       TeEngine.TCustomChartAxis.Scroll
+ 0001:000BFAB0       TeEngine.TCustomChartAxis.InternalCalcLog
+ 0001:000BFB34       TeEngine.TCustomChartAxis.InternalCalcDepthPosValue
+ 0001:000BFBB4       TeEngine.TCustomChartAxis.InternalCalcLogPosValue
+ 0001:000BFC90       TeEngine.TCustomChartAxis.CalcPosValue
+ 0001:000BFCB8       TeEngine.TCustomChartAxis.CalcXPosValue
+ 0001:000BFCFC       TeEngine.TCustomChartAxis.CalcYPosValue
+ 0001:000BFD44       TeEngine.TCustomChartAxis.InternalCalcPosValue
+ 0001:000BFDE0       TeEngine.TCustomChartAxis.Clicked
+ 0001:000BFEAC       TeEngine.TCustomChartAxis.RecalcSizeCenter
+ 0001:000BFED8       TeEngine.DoCalculation
+ 0001:000BFF50       TeEngine.TCustomChartAxis.InternalCalcPositions
+ 0001:000BFFA0       TeEngine.TCustomChartAxis.ApplyPosition
+ 0001:000C001C       TeEngine.TCustomChartAxis.GetRectangleEdge
+ 0001:000C0070       TeEngine.DrawGridLine
+ 0001:000C026C       TeEngine.DrawGrids
+ 0001:000C035C       TeEngine.InternalDrawTick
+ 0001:000C04C0       TeEngine.DrawAxisLine
+ 0001:000C06A8       TeEngine.AProc
+ 0001:000C0760       TeEngine.ProcessMinorTicks
+ 0001:000C0994       TeEngine.ProcessTicks
+ 0001:000C0A04       TeEngine.ProcessMinor
+ 0001:000C0A48       TeEngine.DrawTicksGrid
+ 0001:000C0AF8       TeEngine.AddTick
+ 0001:000C0B14       TeEngine.DrawThisLabel
+ 0001:000C0C38       TeEngine.GetAxisSeriesLabel
+ 0001:000C0D74       TeEngine.CalcAllSeries
+ 0001:000C0DFC       TeEngine.CalcFirstLastAllSeries
+ 0001:000C0E88       TeEngine.AxisLabelsSeries
+ 0001:000C10CC       TeEngine.InternalDrawLabel
+ 0001:000C11B8       TeEngine.IntPower
+ 0001:000C11E8       TeEngine.LogBaseN
+ 0001:000C1200       TeEngine.DoDefaultLogLabels
+ 0001:000C1310       TeEngine.DoDefaultLabels
+ 0001:000C1468       TeEngine.DoNotCustomLabels
+ 0001:000C14A8       TeEngine.DoCustomLabels
+ 0001:000C158C       TeEngine.DrawAxisTitle
+ 0001:000C162C       TeEngine.DepthAxisLabels
+ 0001:000C1768       TeEngine.TCustomChartAxis.Draw
+ 0001:000C1974       TeEngine.TCustomChartAxis.SizeTickAxis
+ 0001:000C19AC       TeEngine.TCustomChartAxis.SizeTitle
+ 0001:000C19C4       TeEngine.TCustomChartAxis.SizeLabels
+ 0001:000C19D8       TeEngine.TCustomChartAxis.InternalCalcSize
+ 0001:000C1A90       TeEngine.InflateAxisRect
+ 0001:000C1AEC       TeEngine.InflateAxisPos
+ 0001:000C1B2C       TeEngine.CalcLabelsRect
+ 0001:000C1B4C       TeEngine.TCustomChartAxis.CalcRect
+ 0001:000C1C70       TeEngine.TSeriesMarkPosition.Assign
+ 0001:000C1CA4       TeEngine.TSeriesMarkPosition.Bounds
+ 0001:000C1CC0       TeEngine.TChartValueList.Create
+ 0001:000C1D44       TeEngine.TChartValueList.Destroy
+ 0001:000C1D74       TeEngine.TChartValueList.Count
+ 0001:000C1D7C       TeEngine.TChartValueList.Last
+ 0001:000C1DA0       TeEngine.TChartValueList.Delete
+ 0001:000C1DCC       TeEngine.TChartValueList.InsertChartValue
+ 0001:000C1E00       TeEngine.TChartValueList.AddChartValue
+ 0001:000C1EE0       TeEngine.TChartValueList.SetMultiplier
+ 0001:000C1F1C       TeEngine.TChartValueList.GetValue
+ 0001:000C1F40       TeEngine.TChartValueList.Locate
+ 0001:000C1F80       TeEngine.TChartValueList.SetValue
+ 0001:000C1FB4       TeEngine.TChartValueList.GetMaxValue
+ 0001:000C1FDC       TeEngine.TChartValueList.GetMinValue
+ 0001:000C2004       TeEngine.TChartValueList.GetTotal
+ 0001:000C202C       TeEngine.TChartValueList.GetTotalABS
+ 0001:000C2054       TeEngine.TChartValueList.RecalcStats
+ 0001:000C2148       TeEngine.TChartValueList.SetDateTime
+ 0001:000C2158       TeEngine.TChartValueList.ClearValues
+ 0001:000C21A4       TeEngine.TChartValueList.Scroll
+ 0001:000C21F4       TeEngine.TChartValueList.SetValueSource
+ 0001:000C221C       TeEngine.TChartValueList.FillSequence
+ 0001:000C2254       TeEngine.CompareValueIndex
+ 0001:000C22B8       TeEngine.PrivateSort
+ 0001:000C236C       TeEngine.TChartValueList.Sort
+ 0001:000C2394       TeEngine.TChartValueList.Assign
+ 0001:000C23D8       TeEngine.TSeriesMarksPositions.GetPosition
+ 0001:000C2404       TeEngine.TSeriesMarks.Create
+ 0001:000C24A0       TeEngine.TSeriesMarks.Assign
+ 0001:000C2514       TeEngine.TSeriesMarks.IsFontStored
+ 0001:000C2524       TeEngine.TSeriesMarks.SetVisible
+ 0001:000C2534       TeEngine.TSeriesMarks.SetFrame
+ 0001:000C2540       TeEngine.TSeriesMarks.SetArrow
+ 0001:000C254C       TeEngine.TSeriesMarks.SetArrowLength
+ 0001:000C255C       TeEngine.TSeriesMarks.SetBackColor
+ 0001:000C256C       TeEngine.TSeriesMarks.SetBackTransparent
+ 0001:000C257C       TeEngine.TSeriesMarks.Clicked
+ 0001:000C2614       TeEngine.TSeriesMarks.UsePosition
+ 0001:000C267C       TeEngine.TSeriesMarks.ClearPositions
+ 0001:000C26AC       TeEngine.TSeriesMarks.Destroy
+ 0001:000C26F8       TeEngine.TSeriesMarks.SetFont
+ 0001:000C2708       TeEngine.TSeriesMarks.SetStyle
+ 0001:000C271C       TeEngine.TSeriesMarks.SetClip
+ 0001:000C272C       TeEngine.DrawLine
+ 0001:000C2794       TeEngine.DrawMarkText
+ 0001:000C28C8       TeEngine.TSeriesMarks.Draw
+ 0001:000C2B08       TeEngine.TTeeFunction.Create
+ 0001:000C2B54       TeEngine.TTeeFunction.ReCalculate
+ 0001:000C2B6C       TeEngine.TTeeFunction.Calculate
+ 0001:000C2B84       TeEngine.TTeeFunction.ValueList
+ 0001:000C2BFC       TeEngine.TTeeFunction.CalculateAllPoints
+ 0001:000C2D90       TeEngine.TTeeFunction.CalculatePeriod
+ 0001:000C2DD4       TeEngine.TTeeFunction.CalculateByPeriod
+ 0001:000C2FB8       TeEngine.TTeeFunction.AddFunctionXY
+ 0001:000C2FF4       TeEngine.CalculateMovingFunction
+ 0001:000C3078       TeEngine.CalculateFunctionMany
+ 0001:000C3148       TeEngine.TTeeFunction.AddPoints
+ 0001:000C31FC       TeEngine.TTeeFunction.SetParentSeries
+ 0001:000C3220       TeEngine.TTeeFunction.CalculateMany
+ 0001:000C3234       TeEngine.TTeeFunction.Assign
+ 0001:000C326C       TeEngine.TTeeFunction.SetPeriod
+ 0001:000C32F8       TeEngine.TTeeFunction.SetPeriodAlign
+ 0001:000C3308       TeEngine.TTeeFunction.SetPeriodStyle
+ 0001:000C3318       TeEngine.TTeeFunction.GetParentComponent
+ 0001:000C331C       TeEngine.TTeeFunction.SetParentComponent
+ 0001:000C3328       TeEngine.TTeeFunction.HasParent
+ 0001:000C332C       TeEngine.TChartValueLists.GetValueList
+ 0001:000C3340       TeEngine.TChartSeries.Create
+ 0001:000C3518       TeEngine.TChartSeries.GetChildren
+ 0001:000C3544       TeEngine.TChartSeries.GetParentComponent
+ 0001:000C3548       TeEngine.TChartSeries.SetParentComponent
+ 0001:000C356C       TeEngine.TChartSeries.HasParent
+ 0001:000C3570       TeEngine.TChartSeries.SetFunction
+ 0001:000C359C       TeEngine.TChartSeries.Notification
+ 0001:000C35D4       TeEngine.TChartSeries.DefineProperties
+ 0001:000C3690       TeEngine.TChartSeries.ReadIdentifier
+ 0001:000C36E4       TeEngine.TChartSeries.WriteIdentifier
+ 0001:000C36F4       TeEngine.TChartSeries.ReadStyle
+ 0001:000C37D8       TeEngine.TChartSeries.WriteStyle
+ 0001:000C382C       TeEngine.TChartSeries.ReadData
+ 0001:000C38B4       TeEngine.TChartSeries.WriteData
+ 0001:000C38F4       TeEngine.TChartSeries.YMandatory
+ 0001:000C390C       TeEngine.TChartSeries.MandatoryValueList
+ 0001:000C3914       TeEngine.TChartSeries.DrawValuesForward
+ 0001:000C3918       TeEngine.TChartSeries.DrawSeriesForward
+ 0001:000C391C       TeEngine.TChartSeries.DrawAllValues
+ 0001:000C3968       TeEngine.TChartSeries.SameClass
+ 0001:000C39A0       TeEngine.TChartSeries.PointOrigin
+ 0001:000C3A58       TeEngine.TChartSeries.CreateChartPen
+ 0001:000C3A70       TeEngine.TChartSeries.CheckDataSource
+ 0001:000C3A88       TeEngine.TChartSeries.SetColorSource
+ 0001:000C3ABC       TeEngine.TChartSeries.SetLabelsSource
+ 0001:000C3AF0       TeEngine.TChartSeries.GetDataSource
+ 0001:000C3B14       TeEngine.TChartSeries.InternalAddDataSource
+ 0001:000C3B50       TeEngine.TChartSeries.RemoveAllLinkedSeries
+ 0001:000C3BA8       TeEngine.ClearDataSources
+ 0001:000C3BC8       TeEngine.InternalRemoveDataSource
+ 0001:000C3C48       TeEngine.InternalSetDataSource
+ 0001:000C3DA8       TeEngine.TChartSeries.SetDataSource
+ 0001:000C3DD0       TeEngine.TChartSeries.IsValidSourceOf
+ 0001:000C3DD8       TeEngine.TChartSeries.IsValidSeriesSource
+ 0001:000C3DDC       TeEngine.TChartSeries.CanvasChanged
+ 0001:000C3DE4       TeEngine.TChartSeries.GetYValueList
+ 0001:000C3EAC       TeEngine.TChartSeries.CheckOtherSeries
+ 0001:000C3EBC       TeEngine.TChartSeries.Clicked
+ 0001:000C3EC0       TeEngine.TChartSeries.RecalcGetAxis
+ 0001:000C3F44       TeEngine.TChartSeries.SetHorizAxis
+ 0001:000C3F68       TeEngine.TChartSeries.SetVertAxis
+ 0001:000C3F8C       TeEngine.TChartSeries.SetChartValueList
+ 0001:000C3FA8       TeEngine.TChartSeries.SetXValues
+ 0001:000C3FB8       TeEngine.TChartSeries.SetYValues
+ 0001:000C3FC8       TeEngine.TChartSeries.SetTitle
+ 0001:000C4018       TeEngine.TChartSeries.GetValue
+ 0001:000C4048       TeEngine.CalcMinMaxValue
+ 0001:000C40CC       TeEngine.TChartSeries.CalcFirstLastVisibleIndex
+ 0001:000C4268       TeEngine.TChartSeries.Repaint
+ 0001:000C4280       TeEngine.TChartSeries.DrawValue
+ 0001:000C4284       TeEngine.TChartSeries.SetActive
+ 0001:000C4290       TeEngine.TChartSeries.IsValueFormatStored
+ 0001:000C42E8       TeEngine.TChartSeries.IsPercentFormatStored
+ 0001:000C4340       TeEngine.TChartSeries.DeletedValue
+ 0001:000C434C       TeEngine.TChartSeries.AddValue
+ 0001:000C438C       TeEngine.TChartSeries.AddChartValue
+ 0001:000C446C       TeEngine.TChartSeries.AddedValue
+ 0001:000C4518       TeEngine.TChartSeries.LegendToValueIndex
+ 0001:000C451C       TeEngine.TChartSeries.LegendString
+ 0001:000C4708       TeEngine.TChartSeries.AddValues
+ 0001:000C47A4       TeEngine.TChartSeries.AssignValues
+ 0001:000C47AC       TeEngine.TChartSeries.RefreshSeries
+ 0001:000C47B8       TeEngine.TChartSeries.GetEditorClass
+ 0001:000C47C4       TeEngine.TChartSeries.MoreSameZOrder
+ 0001:000C482C       TeEngine.TChartSeries.FirstInZOrder
+ 0001:000C4898       TeEngine.TChartSeries.DoBeforeDrawChart
+ 0001:000C489C       TeEngine.TChartSeries.DoBeforeDrawValues
+ 0001:000C48BC       TeEngine.TChartSeries.DoAfterDrawValues
+ 0001:000C48DC       TeEngine.TChartSeries.DrawMarks
+ 0001:000C4AF4       TeEngine.TChartSeries.CalcHorizMargins
+ 0001:000C4B00       TeEngine.TChartSeries.CalcVerticalMargins
+ 0001:000C4B0C       TeEngine.TChartSeries.DrawMark
+ 0001:000C4B3C       TeEngine.TChartSeries.SetIntegerProperty
+ 0001:000C4B48       TeEngine.TChartSeries.SetLongintProperty
+ 0001:000C4B54       TeEngine.TChartSeries.SetStringProperty
+ 0001:000C4B7C       TeEngine.TChartSeries.SetBooleanProperty
+ 0001:000C4B88       TeEngine.TChartSeries.InsertLabel
+ 0001:000C4BB0       TeEngine.TChartSeries.AddXY
+ 0001:000C4C60       TeEngine.TChartSeries.NotifyNewValue
+ 0001:000C4C9C       TeEngine.TChartSeries.IsNull
+ 0001:000C4CB8       TeEngine.TChartSeries.AddNull
+ 0001:000C4CD8       TeEngine.TChartSeries.AddNullXY
+ 0001:000C4D08       TeEngine.TChartSeries.Add
+ 0001:000C4D4C       TeEngine.TChartSeries.AddX
+ 0001:000C4D94       TeEngine.TChartSeries.AddY
+ 0001:000C4DDC       TeEngine.TChartSeries.Count
+ 0001:000C4DE8       TeEngine.TChartSeries.CountLegendItems
+ 0001:000C4DF0       TeEngine.TChartSeries.MarkPercent
+ 0001:000C4F08       TeEngine.TChartSeries.GetOriginValue
+ 0001:000C4F20       TeEngine.TChartSeries.GetMarkValue
+ 0001:000C4F48       TeEngine.XLabelOrValue
+ 0001:000C4F94       TeEngine.TChartSeries.GetMarkText
+ 0001:000C51EC       TeEngine.TChartSeries.SetValueFormat
+ 0001:000C51F8       TeEngine.TChartSeries.SetPercentFormat
+ 0001:000C5204       TeEngine.TChartSeries.PrepareForGallery
+ 0001:000C5240       TeEngine.TChartSeries.NumSampleValues
+ 0001:000C5248       TeEngine.TChartSeries.CalcRandomBounds
+ 0001:000C542C       TeEngine.TChartSeries.FillSampleValues
+ 0001:000C554C       TeEngine.TChartSeries.GalleryChanged3D
+ 0001:000C556C       TeEngine.TChartSeries.SetDoubleProperty
+ 0001:000C5594       TeEngine.TChartSeries.SetColorProperty
+ 0001:000C55A0       TeEngine.SelfSetDataSources
+ 0001:000C55E0       TeEngine.TChartSeries.Assign
+ 0001:000C58C8       TeEngine.TChartSeries.SetColorEachPoint
+ 0001:000C5908       TeEngine.TChartSeries.SetShowInLegend
+ 0001:000C5914       TeEngine.TChartSeries.GetBitmapEditor
+ 0001:000C591C       TeEngine.TChartSeries.GetxValue
+ 0001:000C5934       TeEngine.TChartSeries.GetyValue
+ 0001:000C594C       TeEngine.TChartSeries.GetXLabel
+ 0001:000C5990       TeEngine.TChartSeries.GetValueColor
+ 0001:000C59CC       TeEngine.TChartSeries.SetParentChart
+ 0001:000C5A00       TeEngine.TChartSeries.SetValueColor
+ 0001:000C5A14       TeEngine.TChartSeries.GetMemLabel
+ 0001:000C5A44       TeEngine.TChartSeries.FreeXLabel
+ 0001:000C5A6C       TeEngine.TChartSeries.ClearLists
+ 0001:000C5AF4       TeEngine.TChartSeries.Clear
+ 0001:000C5B40       TeEngine.TChartSeries.AssociatedToAxis
+ 0001:000C5B8C       TeEngine.TChartSeries.DrawLegendShape
+ 0001:000C5BF0       TeEngine.TChartSeries.LegendItemColor
+ 0001:000C5BF8       TeEngine.TChartSeries.DrawLegend
+ 0001:000C5CF0       TeEngine.TChartSeries.PrepareLegendCanvas
+ 0001:000C5CF8       TeEngine.TChartSeries.CalcZOrder
+ 0001:000C5D54       TeEngine.TChartSeries.CalcXPosValue
+ 0001:000C5D6C       TeEngine.TChartSeries.XScreenToValue
+ 0001:000C5D84       TeEngine.TChartSeries.CalcYPosValue
+ 0001:000C5D9C       TeEngine.TChartSeries.CalcPosValue
+ 0001:000C5DD0       TeEngine.TChartSeries.CalcXPos
+ 0001:000C5DF4       TeEngine.TChartSeries.DoSeriesMouseMove
+ 0001:000C5DFC       TeEngine.TChartSeries.DoSeriesMouseUp
+ 0001:000C5E04       TeEngine.TChartSeries.DoSeriesClick
+ 0001:000C5E9C       TeEngine.TChartSeries.CalcYPos
+ 0001:000C5EC0       TeEngine.TChartSeries.Delete
+ 0001:000C5F58       TeEngine.TChartSeries.SwapValueIndex
+ 0001:000C5FC8       TeEngine.TChartSeries.SetMarks
+ 0001:000C5FD8       TeEngine.TChartSeries.ClearTempValue
+ 0001:000C5FE4       TeEngine.TChartSeries.SetSeriesColor
+ 0001:000C5FF0       TeEngine.TChartSeries.MaxXValue
+ 0001:000C6008       TeEngine.TChartSeries.MaxYValue
+ 0001:000C6020       TeEngine.TChartSeries.MinXValue
+ 0001:000C6038       TeEngine.TChartSeries.MinYValue
+ 0001:000C6050       TeEngine.TChartSeries.MaxZValue
+ 0001:000C6074       TeEngine.TChartSeries.MinZValue
+ 0001:000C6098       TeEngine.TChartSeries.MaxMarkWidth
+ 0001:000C6128       TeEngine.TChartSeries.AddLinkedSeries
+ 0001:000C6148       TeEngine.TChartSeries.RemoveDataSource
+ 0001:000C615C       TeEngine.TChartSeries.RemoveLinkedSeries
+ 0001:000C616C       TeEngine.TChartSeries.NotifyValue
+ 0001:000C6248       TeEngine.TChartSeries.UseAxis
+ 0001:000C624C       TeEngine.TChartSeries.Loaded
+ 0001:000C6300       TeEngine.TChartSeries.Destroy
+ 0001:000C63D8       TeEngine.TChartSeries.GetZOrder
+ 0001:000C63F0       TeEngine.TChartSeriesList.GetSeries
+ 0001:000C6404       TeEngine.TChartSeriesList.CountActive
+ 0001:000C6434       TeEngine.TCustomAxisPanel.Create
+ 0001:000C6590       TeEngine.TCustomAxisPanel.SetPage
+ 0001:000C65E8       TeEngine.TCustomAxisPanel.SetScaleLastPage
+ 0001:000C65F8       TeEngine.CalcNumPages
+ 0001:000C66AC       TeEngine.TCustomAxisPanel.NumPages
+ 0001:000C673C       TeEngine.TCustomAxisPanel.SetMaxPointsPerPage
+ 0001:000C67CC       TeEngine.TCustomAxisPanel.FreeAllSeries
+ 0001:000C67FC       TeEngine.TCustomAxisPanel.Destroy
+ 0001:000C6864       TeEngine.TCustomAxisPanel.IsAxisVisible
+ 0001:000C6900       TeEngine.TCustomAxisPanel.NoActiveSeries
+ 0001:000C6950       TeEngine.TCustomAxisPanel.InternalMinMax
+ 0001:000C6C70       TeEngine.TCustomAxisPanel.MaxXValue
+ 0001:000C6C88       TeEngine.TCustomAxisPanel.MaxYValue
+ 0001:000C6CA0       TeEngine.TCustomAxisPanel.MinXValue
+ 0001:000C6CB8       TeEngine.TCustomAxisPanel.MinYValue
+ 0001:000C6CD0       TeEngine.TCustomAxisPanel.ActiveSeriesLegend
+ 0001:000C6D20       TeEngine.TCustomAxisPanel.SeriesTitleLegend
+ 0001:000C6DC0       TeEngine.TCustomAxisPanel.MaxTextWidth
+ 0001:000C6E8C       TeEngine.TCustomAxisPanel.MaxMarkWidth
+ 0001:000C6EDC       TeEngine.TCustomAxisPanel.GetSeries
+ 0001:000C6EF4       TeEngine.TCustomAxisPanel.CalcSize3DWalls
+ 0001:000C6FC8       TeEngine.ClipRegionCreate
+ 0001:000C7020       TeEngine.ClipRegionDone
+ 0001:000C704C       TeEngine.TryDrawSeries
+ 0001:000C7094       TeEngine.DrawAllSeriesValue
+ 0001:000C7148       TeEngine.DrawMarksSeries
+ 0001:000C7184       TeEngine.DrawSeries
+ 0001:000C73D4       TeEngine.SetSeriesZOrder
+ 0001:000C74C4       TeEngine.SetSeriesZPositions
+ 0001:000C7544       TeEngine.DrawAllAxis
+ 0001:000C75C0       TeEngine.TCustomAxisPanel.InternalDraw
+ 0001:000C779C       TeEngine.TCustomAxisPanel.SetView3DWalls
+ 0001:000C77AC       TeEngine.TCustomAxisPanel.GetChildren
+ 0001:000C77FC       TeEngine.TCustomAxisPanel.RemovedDataSource
+ 0001:000C7800       TeEngine.TCustomAxisPanel.SetClipPoints
+ 0001:000C7810       TeEngine.TCustomAxisPanel.SetLeftAxis
+ 0001:000C781C       TeEngine.TCustomAxisPanel.SetDepthAxis
+ 0001:000C7828       TeEngine.TCustomAxisPanel.SetRightAxis
+ 0001:000C7834       TeEngine.TCustomAxisPanel.SetTopAxis
+ 0001:000C7840       TeEngine.TCustomAxisPanel.SetBottomAxis
+ 0001:000C784C       TeEngine.TCustomAxisPanel.RemoveSeries
+ 0001:000C78A8       TeEngine.TCustomAxisPanel.GetAxisSeries
+ 0001:000C7908       TeEngine.TCustomAxisPanel.FormattedValueLegend
+ 0001:000C7910       TeEngine.TCustomAxisPanel.GetFreeSeriesColor
+ 0001:000C7948       TeEngine.TCustomAxisPanel.InternalAddSeries
+ 0001:000C79C8       TeEngine.TCustomAxisPanel.GetMaxValuesCount
+ 0001:000C7A2C       TeEngine.TCustomAxisPanel.SetAxisVisible
+ 0001:000C7A3C       TeEngine.TCustomAxisPanel.CheckOtherSeries
+ 0001:000C7AFC       TeEngine.TCustomAxisPanel.IsValidDataSource
+ 0001:000C7B34       TeEngine.TCustomAxisPanel.CheckDatasource
+ 0001:000C7B70       TeEngine.TCustomAxisPanel.SeriesCount
+ 0001:000C7B84       TeEngine.TCustomAxisPanel.Assign
+ 0001:000C7C50       TeEngine.Finalization
+ 0001:000C7D84       ComObj..TAutoIntfObject
+ 0001:000C7DF4       ComObj..EOleError
+ 0001:000C7E4C       ComObj..EOleSysError
+ 0001:000C7EA8       ComObj..EOleException
+ 0001:000C7F1C       ComObj.HandleSafeCallException
+ 0001:000C80AC       ComObj.TAutoIntfObject.Create
+ 0001:000C8114       ComObj.TAutoIntfObject.GetIDsOfNames
+ 0001:000C8134       ComObj.TAutoIntfObject.GetTypeInfo
+ 0001:000C8164       ComObj.TAutoIntfObject.GetTypeInfoCount
+ 0001:000C8178       ComObj.TAutoIntfObject.Invoke
+ 0001:000C81B8       ComObj.TAutoIntfObject.InterfaceSupportsErrorInfo
+ 0001:000C81E0       ComObj.TAutoIntfObject.SafeCallException
+ 0001:000C81F0       ComObj.TrimPunctuation
+ 0001:000C8240       ComObj.EOleSysError.Create
+ 0001:000C8314       ComObj.EOleException.Create
+ 0001:000C83AC       ComObj.OleError
+ 0001:000C83C8       ComObj.OleCheck
+ 0001:000C83D8       ComObj.StringToGUID
+ 0001:000C8434       ComObj.GUIDToString
+ 0001:000C8460       ComObj.ProgIDToClassID
+ 0001:000C84BC       ComObj.ClassIDToProgID
+ 0001:000C84E8       ComObj.CreateComObject
+ 0001:000C85FC       ComObj.CreateRemoteComObject
+ 0001:000C87BC       ComObj.CreateOleObject
+ 0001:000C88CC       ComObj.InterfaceConnect
+ 0001:000C8980       ComObj.InterfaceDisconnect
+ 0001:000C8A3C       ComObj.LoadComExProcs
+ 0001:000C8B40       ComObj.SafeCallError
+ 0001:000C8C40       ComObj.DispatchInvoke
+ 0001:000C8F7C       ComObj.RaiseNameException
+ 0001:000C8FB0       ComObj.GetIDsOfNames
+ 0001:000C9090       ComObj.RaiseException
+ 0001:000C90A8       ComObj.VarDispInvoke
+ 0001:000C9144       ComObj.DispCallError
+ 0001:000C9218       ComObj.DispatchInvokeError
+ 0001:000C9224       ComObj.ClearExcepInfo
+ 0001:000C9234       ComObj.DispCall
+ 0001:000C9318       ComObj.DispCallByID
+ 0001:000C93F4       ComObj.InitComObj
+ 0001:000C9470       ComObj.Finalization
+ 0001:000C94F0       VAClasses..TVABaseMethodList
+ 0001:000C9554       VAClasses..TVAMethodList
+ 0001:000C95B4       VAClasses..TVANotificationEventComponent
+ 0001:000C9690       VAClasses.TVABaseMethodList.Add
+ 0001:000C96BC       VAClasses.TVABaseMethodList.Count
+ 0001:000C96C4       VAClasses.TVABaseMethodList.Create
+ 0001:000C9710       VAClasses.TVABaseMethodList.Destroy
+ 0001:000C9748       VAClasses.TVABaseMethodList.GetMethod
+ 0001:000C9770       VAClasses.TVABaseMethodList.IndexOf
+ 0001:000C97CC       VAClasses.TVABaseMethodList.Remove
+ 0001:000C97F4       VAClasses.TVAMethodList.Add
+ 0001:000C97FC       VAClasses.TVAMethodList.Count
+ 0001:000C9804       VAClasses.TVAMethodList.Create
+ 0001:000C983C       VAClasses.TVAMethodList.Destroy
+ 0001:000C9864       VAClasses.TVAMethodList.Remove
+ 0001:000C986C       VAClasses.TVANotificationEventComponent.Notification
+ 0001:000C9898       VAClasses.TVANotificationEventComponent.NotifyCreate
+ 0001:000CA5E0       VAUtils.Piece
+ 0001:000CA65C       VAUtils.Pieces
+ 0001:000CA730       VAUtils.ShowMsg
+ 0001:000CA864       VAUtils.ShowMsg
+ 0001:000CA95C       VAUtils.FreeAndNilTStringsAndObjects
+ 0001:000CA9A4       VAUtils.ScreenReaderActive
+ 0001:000CA9C8       VAUtils.ScreenReaderSupportEnabled
+ 0001:000CA9EC       VAUtils.FastIntToHex
+ 0001:000CAA34       VAUtils.FastHexToByte
+ 0001:000CAADC       VAUtils.FastHexToInt
+ 0001:000CAC58       VAUtils.AppendBackSlash
+ 0001:000CACD4       VAUtils.GetSpecialFolderPath
+ 0001:000CAE6C       VAUtils.GetProgramFilesPath
+ 0001:000CAE80       VAUtils.GetAlternateProgramFilesPath
+ 0001:000CAF50       VAUtils..TVACustomMessageEventInterceptor
+ 0001:000CAFC8       VAUtils..TVAMessageEventHandler
+ 0001:000CB034       VAUtils..TVAWinProcMonitor
+ 0001:000CB0F0       VAUtils.InitializeMessageHandlerSystem
+ 0001:000CB160       VAUtils.Clear
+ 0001:000CB19C       VAUtils.CleanupMessageHandlerSystem
+ 0001:000CB1D0       VAUtils.AddMessageHandler
+ 0001:000CB26C       VAUtils.RemoveMessageHandler
+ 0001:000CB308       VAUtils.RemoveAllMessageHandlers
+ 0001:000CB394       VAUtils.TVAWinProcMonitor.Notification
+ 0001:000CB3CC       VAUtils.TVAWinProcMonitor.RemoveFromList
+ 0001:000CB3EC       VAUtils.TVACustomMessageEventInterceptor.Create
+ 0001:000CB490       VAUtils.TVACustomMessageEventInterceptor.Destroy
+ 0001:000CB4C4       VAUtils.TVACustomMessageEventInterceptor.NewMessageHandler
+ 0001:000CB4D0       VAUtils.TVAMessageEventHandler.AddMessageHandler
+ 0001:000CB4E4       VAUtils.TVAMessageEventHandler.Create
+ 0001:000CB530       VAUtils.TVAMessageEventHandler.Destroy
+ 0001:000CB560       VAUtils.TVAMessageEventHandler.DoMessageHandlers
+ 0001:000CB5B8       VAUtils.TVAMessageEventHandler.HandlerCount
+ 0001:000CB5C4       VAUtils.TVAMessageEventHandler.NewMessageHandler
+ 0001:000CB5E8       VAUtils.TVAMessageEventHandler.RemoveMessageHandler
+ 0001:000CB63C       VAUtils.VersionStringSplit
+ 0001:000CB650       VAUtils.GetNum
+ 0001:000CB700       VAUtils.VersionStringSplit
+ 0001:000CB778       VAUtils.FileVersionValue
+ 0001:000CB928       VAUtils.Finalization
+ 0001:000CB9A8       CheckLst..TCheckListBox
+ 0001:000CC510       CheckLst..TCheckListBoxDataWrapper
+ 0001:000CC578       CheckLst.GetCheckSize
+ 0001:000CC5FC       CheckLst.TCheckListBoxDataWrapper.SetChecked
+ 0001:000CC60C       CheckLst.TCheckListBoxDataWrapper.GetChecked
+ 0001:000CC614       CheckLst.TCheckListBoxDataWrapper.GetDefaultState
+ 0001:000CC618       CheckLst.TCheckListBox.Create
+ 0001:000CC67C       CheckLst.TCheckListBox.Destroy
+ 0001:000CC6D8       CheckLst.TCheckListBox.CreateWnd
+ 0001:000CC6EC       CheckLst.TCheckListBox.CreateParams
+ 0001:000CC704       CheckLst.TCheckListBox.GetCheckWidth
+ 0001:000CC710       CheckLst.TCheckListBox.CMFontChanged
+ 0001:000CC724       CheckLst.TCheckListBox.ResetItemHeight
+ 0001:000CC780       CheckLst.TCheckListBox.DrawItem
+ 0001:000CC928       CheckLst.TCheckListBox.CNDrawItem
+ 0001:000CC984       CheckLst.TCheckListBox.DrawCheck
+ 0001:000CCBE4       CheckLst.TCheckListBox.SetChecked
+ 0001:000CCC18       CheckLst.TCheckListBox.SetState
+ 0001:000CCC48       CheckLst.TCheckListBox.InvalidateCheck
+ 0001:000CCCCC       CheckLst.TCheckListBox.GetChecked
+ 0001:000CCCF8       CheckLst.TCheckListBox.GetItemEnabled
+ 0001:000CCD24       CheckLst.TCheckListBox.GetState
+ 0001:000CCD54       CheckLst.TCheckListBox.KeyPress
+ 0001:000CCD80       CheckLst.TCheckListBox.LoadRecreateItems
+ 0001:000CCEC8       CheckLst.TCheckListBox.MouseDown
+ 0001:000CCF9C       CheckLst.TCheckListBox.ToggleClickCheck
+ 0001:000CD00C       CheckLst.TCheckListBox.ClickCheck
+ 0001:000CD02C       CheckLst.TCheckListBox.GetItemData
+ 0001:000CD054       CheckLst.TCheckListBox.GetWrapper
+ 0001:000CD074       CheckLst.TCheckListBox.ExtractWrapper
+ 0001:000CD0D0       CheckLst.TCheckListBox.InternalGetItemData
+ 0001:000CD0D8       CheckLst.TCheckListBox.InternalSetItemData
+ 0001:000CD0E0       CheckLst.TCheckListBox.CreateWrapper
+ 0001:000CD120       CheckLst.TCheckListBox.HaveWrapper
+ 0001:000CD138       CheckLst.TCheckListBox.SetItemData
+ 0001:000CD164       CheckLst.TCheckListBox.ResetContent
+ 0001:000CD1C4       CheckLst.TCheckListBox.SaveRecreateItems
+ 0001:000CD308       CheckLst.TCheckListBox.DeleteString
+ 0001:000CD35C       CheckLst.TCheckListBox.SetFlat
+ 0001:000CD374       CheckLst.TCheckListBox.GetHeader
+ 0001:000CD39C       CheckLst.TCheckListBox.SetHeaderBackgroundColor
+ 0001:000CD3B4       CheckLst.TCheckListBox.SetHeaderColor
+ 0001:000CD3CC       CheckLst.Finalization
+ 0001:000CD3FC       TeeFunci..TAddTeeFunction
+ 0001:000CD4CC       TeeFunci..TManySeriesTeeFunction
+ 0001:000CD5B0       TeeFunci..TSubtractTeeFunction
+ 0001:000CD690       TeeFunci..TMultiplyTeeFunction
+ 0001:000CD770       TeeFunci..TDivideTeeFunction
+ 0001:000CD84C       TeeFunci..THighTeeFunction
+ 0001:000CD920       TeeFunci..TLowTeeFunction
+ 0001:000CD9F0       TeeFunci..TAverageTeeFunction
+ 0001:000CDAC8       TeeFunci.TAddTeeFunction.Calculate
+ 0001:000CDB20       TeeFunci.TAddTeeFunction.CalculateMany
+ 0001:000CDB90       TeeFunci.TManySeriesTeeFunction.CalculateMany
+ 0001:000CDC34       TeeFunci.TSubtractTeeFunction.CalculateValue
+ 0001:000CDC50       TeeFunci.TMultiplyTeeFunction.CalculateValue
+ 0001:000CDC6C       TeeFunci.TDivideTeeFunction.CalculateValue
+ 0001:000CDCA8       TeeFunci.THighTeeFunction.Calculate
+ 0001:000CDD2C       TeeFunci.THighTeeFunction.CalculateMany
+ 0001:000CDDB8       TeeFunci.TLowTeeFunction.Calculate
+ 0001:000CDE3C       TeeFunci.TLowTeeFunction.CalculateMany
+ 0001:000CDEC8       TeeFunci.TAverageTeeFunction.Calculate
+ 0001:000CDF70       TeeFunci.TAverageTeeFunction.CalculateMany
+ 0001:000CE000       Chart..TChartBrush
+ 0001:000CE0A8       Chart..TCustomChartWall
+ 0001:000CE13C       Chart..TChartWall
+ 0001:000CE31C       Chart..LegendException
+ 0001:000CE3F8       Chart..TCustomChartLegend
+ 0001:000CE4A8       Chart..TChartLegend
+ 0001:000CE7E4       Chart..TChartTitle
+ 0001:000CEC6C       Chart..TCustomChart
+ 0001:000CEE5C       Chart..TChart
+ 0001:000CFEEC       Chart..TTeeSeriesType
+ 0001:000CFF48       Chart..TTeeSeriesTypes
+ 0001:000CFFB4       Chart.GetDefaultPattern
+ 0001:000CFFCC       Chart.TChartBrush.Create
+ 0001:000D0020       Chart.TChartBrush.HasBitmap
+ 0001:000D0048       Chart.TCustomChartWall.Create
+ 0001:000D00D0       Chart.TCustomChartWall.Destroy
+ 0001:000D0108       Chart.TCustomChartWall.IsColorStored
+ 0001:000D0114       Chart.TCustomChartWall.Assign
+ 0001:000D0168       Chart.TCustomChartWall.ApplyDark3D
+ 0001:000D0194       Chart.TCustomChartWall.SetPen
+ 0001:000D01A0       Chart.TCustomChartWall.SetBrush
+ 0001:000D01AC       Chart.TCustomChartWall.SetSize
+ 0001:000D01BC       Chart.TCustomChartWall.SetColor
+ 0001:000D01CC       Chart.TCustomChartWall.SetDark3D
+ 0001:000D01DC       Chart.TChartTitle.Create
+ 0001:000D02AC       Chart.TChartTitle.Assign
+ 0001:000D0310       Chart.TChartTitle.IsFontStored
+ 0001:000D03B0       Chart.TChartTitle.Destroy
+ 0001:000D03F0       Chart.TChartTitle.SetText
+ 0001:000D0404       Chart.TChartTitle.SetVisible
+ 0001:000D0414       Chart.TChartTitle.SetAdjustFrame
+ 0001:000D0424       Chart.TChartTitle.SetAlignment
+ 0001:000D0434       Chart.TChartTitle.SetBrush
+ 0001:000D0440       Chart.TChartTitle.SetColor
+ 0001:000D0450       Chart.TChartTitle.SetFrame
+ 0001:000D045C       Chart.TChartTitle.Clicked
+ 0001:000D049C       Chart.DrawTitleLine
+ 0001:000D0568       Chart.TChartTitle.Draw
+ 0001:000D09C4       Chart.TCustomChart.Create
+ 0001:000D0B70       Chart.TCustomChart.Destroy
+ 0001:000D0BD8       Chart.TCustomChart.SetTitle
+ 0001:000D0BE4       Chart.TCustomChart.SetBackImageInside
+ 0001:000D0BF4       Chart.TCustomChart.SetFoot
+ 0001:000D0C00       Chart.TCustomChart.FormattedValueLegend
+ 0001:000D0C38       Chart.TCustomChart.FormattedLegend
+ 0001:000D0C78       Chart.TCustomChart.SetLegend
+ 0001:000D0C88       Chart.SaveAxisScales
+ 0001:000D0CB8       Chart.TCustomChart.SaveScales
+ 0001:000D0CF8       Chart.RestoreAxisScales
+ 0001:000D0D3C       Chart.TCustomChart.RestoreScales
+ 0001:000D0D7C       Chart.TCustomChart.SetBackWall
+ 0001:000D0D88       Chart.TCustomChart.GetFrame
+ 0001:000D0D9C       Chart.TCustomChart.SetFrame
+ 0001:000D0DAC       Chart.TCustomChart.GetBackColor
+ 0001:000D0DB8       Chart.TCustomChart.SetBackColor
+ 0001:000D0DE4       Chart.TCustomChart.IsFreeSeriesColor
+ 0001:000D0E5C       Chart.TCustomChart.SetLeftWall
+ 0001:000D0E68       Chart.TCustomChart.SetBottomWall
+ 0001:000D0E74       Chart.DrawTitleFoot
+ 0001:000D0EB4       Chart.TCustomChart.DrawTitlesAndLegend
+ 0001:000D0F48       Chart.TCustomChart.DrawImage
+ 0001:000D0F68       Chart.TCustomChart.CalcWallSize
+ 0001:000D0FA4       Chart.PrepareWallCanvas
+ 0001:000D1054       Chart.TCustomChart.DrawWalls
+ 0001:000D134C       Chart.TCustomChart.RemoveAllSeries
+ 0001:000D1370       Chart.ZoomAxis
+ 0001:000D13A8       Chart.TCustomChart.DoZoom
+ 0001:000D14DC       Chart.CalcAxisScale
+ 0001:000D1554       Chart.TCustomChart.ZoomPercent
+ 0001:000D15F4       Chart.ClickedAxis
+ 0001:000D1628       Chart.TCustomChart.CalcClickedPart
+ 0001:000D1790       Chart.CheckZoomPanning
+ 0001:000D1860       Chart.CheckBackground
+ 0001:000D18CC       Chart.TCustomChart.MouseDown
+ 0001:000D1AD8       Chart.ProcessPanning
+ 0001:000D1B6C       Chart.CheckMouseSeries
+ 0001:000D1C34       Chart.PanAxis
+ 0001:000D1CE8       Chart.TCustomChart.MouseMove
+ 0001:000D1E80       Chart.TCustomChart.DoMouseWheel
+ 0001:000D1EA8       Chart.TCustomChart.ScrollVerticalAxes
+ 0001:000D1F2C       Chart.TCustomChart.DoMouseWheelDown
+ 0001:000D1F64       Chart.TCustomChart.DoMouseWheelUp
+ 0001:000D1F9C       Chart.TCustomChart.UndoZoom
+ 0001:000D1FC8       Chart.TCustomChart.CalcZoomPoints
+ 0001:000D208C       Chart.TCustomChart.MouseUp
+ 0001:000D219C       Chart.TCustomChart.CalcAxisRect
+ 0001:000D22F4       Chart.CalcSeriesAxisRect
+ 0001:000D2404       Chart.TCustomChart.CalcSeriesRect
+ 0001:000D2450       Chart.TCustomChart.Assign
+ 0001:000D24EC       Chart.TCustomChart.FillSeriesSourceItems
+ 0001:000D24F4       Chart.TCustomChart.FillValueSourceItems
+ 0001:000D2560       Chart.TCustomChart.GetASeries
+ 0001:000D25A0       Chart.TCustomChartLegend.Create
+ 0001:000D2678       Chart.TCustomChartLegend.Destroy
+ 0001:000D26B8       Chart.TCustomChartLegend.Assign
+ 0001:000D274C       Chart.TCustomChartLegend.SetVisible
+ 0001:000D2768       Chart.TCustomChartLegend.SetInverted
+ 0001:000D2784       Chart.TCustomChartLegend.SetAlignment
+ 0001:000D2794       Chart.TCustomChartLegend.SetFrame
+ 0001:000D27A0       Chart.TCustomChartLegend.CMVisibleChanged
+ 0001:000D27A8       Chart.TCustomChartLegend.CMColorChanged
+ 0001:000D27B0       Chart.TCustomChartLegend.SetTopLeftPos
+ 0001:000D2828       Chart.TCustomChartLegend.SetFirstValue
+ 0001:000D289C       Chart.TCustomChartLegend.SetTextStyle
+ 0001:000D28AC       Chart.TCustomChartLegend.SetMaxNumRows
+ 0001:000D28C8       Chart.TCustomChartLegend.SetLegendStyle
+ 0001:000D28E4       Chart.TCustomChartLegend.SetHorizMargin
+ 0001:000D2900       Chart.TCustomChartLegend.SetVertMargin
+ 0001:000D291C       Chart.TCustomChartLegend.GetParentChart
+ 0001:000D2920       Chart.TCustomChartLegend.SetResizeChart
+ 0001:000D293C       Chart.TCustomChartLegend.SetBrush
+ 0001:000D2948       Chart.TCustomChartLegend.SetColor
+ 0001:000D2964       Chart.TCustomChartLegend.SetColorWidth
+ 0001:000D29DC       Chart.TCustomChartLegend.CalcLegendStyle
+ 0001:000D2A10       Chart.TCustomChartLegend.FormattedLegend
+ 0001:000D2A90       Chart.TCustomChartLegend.SetShadowColor
+ 0001:000D2AAC       Chart.TCustomChartLegend.SetShadowSize
+ 0001:000D2AC8       Chart.TCustomChartLegend.SetDividingLines
+ 0001:000D2AD4       Chart.CalcMaxLegendValues
+ 0001:000D2B48       Chart.TCustomChartLegend.MaxLegendValues
+ 0001:000D2BA4       Chart.TCustomChartLegend.TotalLegendItems
+ 0001:000D2C2C       Chart.TCustomChartLegend.MaxLegendWidth
+ 0001:000D2CD8       Chart.TCustomChartLegend.GetColorRect
+ 0001:000D2D08       Chart.TCustomChartLegend.GetVertical
+ 0001:000D2D1C       Chart.DrawLegendItem
+ 0001:000D2FAC       Chart.DrawLegendBackground
+ 0001:000D3150       Chart.CalcHorizontalColsRows
+ 0001:000D31C8       Chart.CalcHorizMargin
+ 0001:000D31FC       Chart.CalcVertMargin
+ 0001:000D3230       Chart.TCustomChartLegend.Draw
+ 0001:000D3750       Chart.TCustomChartLegend.FormattedValue
+ 0001:000D37F0       Chart.ClickedRow
+ 0001:000D3848       Chart.TCustomChartLegend.Clicked
+ 0001:000D3948       Chart.TTeeSeriesTypes.GetSeriesType
+ 0001:000D395C       Chart.RegisterTeeSeriesFunction
+ 0001:000D3A48       Chart.RegisterTeeSeries
+ 0001:000D3A60       Chart.RegisterTeeFunction
+ 0001:000D3A78       Chart.RegisterTeeBasicFunction
+ 0001:000D3AD0       Chart.TeeGalleryExitProc
+ 0001:000D3B04       Chart.Finalization
+ 0001:000D3B60       MaskUtils.MaskGetCharType
+ 0001:000D3D08       MaskUtils.MaskGetCurrentDirectives
+ 0001:000D3D8C       MaskUtils.MaskIntlLiteralToChar
+ 0001:000D3DB0       MaskUtils.MaskDoFormatText
+ 0001:000D4004       MaskUtils.MaskGetMaskSave
+ 0001:000D40D0       MaskUtils.MaskGetMaskBlank
+ 0001:000D4160       MaskUtils.MaskOffsetToString
+ 0001:000D41EC       MaskUtils.MaskOffsetToOffset
+ 0001:000D4250       MaskUtils.OffsetToMaskOffset
+ 0001:000D42B8       MaskUtils.IsLiteralChar
+ 0001:000D42E0       MaskUtils.PadSubField
+ 0001:000D449C       MaskUtils.PadInputLiterals
+ 0001:000D46D0       Mask..EDBEditError
+ 0001:000D472C       Mask..TCustomMaskEdit
+ 0001:000D4920       Mask..TMaskEdit
+ 0001:000D52A8       Mask.TCustomMaskEdit.Create
+ 0001:000D52FC       Mask.TCustomMaskEdit.KeyDown
+ 0001:000D53DC       Mask.TCustomMaskEdit.KeyUp
+ 0001:000D542C       Mask.TCustomMaskEdit.KeyPress
+ 0001:000D546C       Mask.TCustomMaskEdit.WMLButtonDown
+ 0001:000D5488       Mask.TCustomMaskEdit.WMLButtonUp
+ 0001:000D54E8       Mask.TCustomMaskEdit.WMSetFocus
+ 0001:000D5508       Mask.TCustomMaskEdit.SetEditText
+ 0001:000D5570       Mask.TCustomMaskEdit.GetEditText
+ 0001:000D5584       Mask.TCustomMaskEdit.GetTextLen
+ 0001:000D55E4       Mask.TCustomMaskEdit.GetText
+ 0001:000D5678       Mask.TCustomMaskEdit.SetText
+ 0001:000D577C       Mask.TCustomMaskEdit.WMCut
+ 0001:000D57B0       Mask.TCustomMaskEdit.WMPaste
+ 0001:000D5898       Mask.TCustomMaskEdit.GetMasked
+ 0001:000D58A8       Mask.TCustomMaskEdit.ReformatText
+ 0001:000D5970       Mask.TCustomMaskEdit.SetEditMask
+ 0001:000D5A3C       Mask.TCustomMaskEdit.GetMaxLength
+ 0001:000D5A44       Mask.TCustomMaskEdit.SetMaxLength
+ 0001:000D5A74       Mask.TCustomMaskEdit.GetSel
+ 0001:000D5A98       Mask.TCustomMaskEdit.SetSel
+ 0001:000D5ABC       Mask.TCustomMaskEdit.SetCursor
+ 0001:000D5D68       Mask.TCustomMaskEdit.CheckCursor
+ 0001:000D5DA8       Mask.TCustomMaskEdit.Clear
+ 0001:000D5DB0       Mask.TCustomMaskEdit.EditCanModify
+ 0001:000D5DB4       Mask.TCustomMaskEdit.Reset
+ 0001:000D5DDC       Mask.TCustomMaskEdit.CharKeys
+ 0001:000D5FB4       Mask.TCustomMaskEdit.ArrowKeys
+ 0001:000D619C       Mask.TCustomMaskEdit.CursorInc
+ 0001:000D61D4       Mask.TCustomMaskEdit.CursorDec
+ 0001:000D61F0       Mask.TCustomMaskEdit.GetNextEditChar
+ 0001:000D6218       Mask.TCustomMaskEdit.GetPriorEditChar
+ 0001:000D624C       Mask.TCustomMaskEdit.HomeEndKeys
+ 0001:000D631C       Mask.TCustomMaskEdit.DeleteKeys
+ 0001:000D6438       Mask.TCustomMaskEdit.CMEnter
+ 0001:000D64C8       Mask.TCustomMaskEdit.CMTextChanged
+ 0001:000D6558       Mask.TCustomMaskEdit.CMWantSpecialKey
+ 0001:000D6590       Mask.TCustomMaskEdit.CMExit
+ 0001:000D65C4       Mask.TCustomMaskEdit.ValidateEdit
+ 0001:000D6664       Mask.TCustomMaskEdit.ValidateError
+ 0001:000D66A0       Mask.TCustomMaskEdit.AddEditFormat
+ 0001:000D66E8       Mask.TCustomMaskEdit.RemoveEditFormat
+ 0001:000D6908       Mask.TCustomMaskEdit.InputChar
+ 0001:000D69A8       Mask.IsKatakana
+ 0001:000D69C0       Mask.TestChar
+ 0001:000D6ACC       Mask.TCustomMaskEdit.DoInputChar
+ 0001:000D6DAC       Mask.TCustomMaskEdit.Validate
+ 0001:000D6E64       Mask.TCustomMaskEdit.DeleteSelection
+ 0001:000D6F04       Mask.TCustomMaskEdit.InputString
+ 0001:000D7208       Mask.TCustomMaskEdit.FindLiteralChar
+ 0001:000D7278       Grids..EInvalidGridOperation
+ 0001:000D72DC       Grids..TInplaceEdit
+ 0001:000D76E8       Grids..TCustomGrid
+ 0001:000D7ABC       Grids..TCustomDrawGrid
+ 0001:000D7C60       Grids..TDrawGrid
+ 0001:000D87E0       Grids..TStringGridStrings
+ 0001:000D88EC       Grids..TStringGrid
+ 0001:000D8A7C       Grids.InvalidOp
+ 0001:000D8A94       Grids.GridRect
+ 0001:000D8AFC       Grids.PointInGridRect
+ 0001:000D8B18       Grids.PtInRect
+ 0001:000D8B34       Grids.Includes
+ 0001:000D8B80       Grids.Build
+ 0001:000D8BF8       Grids.XorRects
+ 0001:000D8D88       Grids.ModifyExtents
+ 0001:000D8E78       Grids.UpdateExtents
+ 0001:000D8E94       Grids.MoveExtent
+ 0001:000D8EF0       Grids.CompareExtents
+ 0001:000D8F24       Grids.LongMulDiv
+ 0001:000D8F2C       Grids.TInplaceEdit.Create
+ 0001:000D8F8C       Grids.TInplaceEdit.CreateParams
+ 0001:000D8F9C       Grids.TInplaceEdit.SetGrid
+ 0001:000D8FA4       Grids.TInplaceEdit.CMShowingChanged
+ 0001:000D8FA8       Grids.TInplaceEdit.WMGetDlgCode
+ 0001:000D8FD0       Grids.TInplaceEdit.WMPaste
+ 0001:000D8FF0       Grids.TInplaceEdit.WMClear
+ 0001:000D9010       Grids.TInplaceEdit.WMCut
+ 0001:000D9030       Grids.TInplaceEdit.DblClick
+ 0001:000D9044       Grids.TInplaceEdit.DoMouseWheel
+ 0001:000D9078       Grids.TInplaceEdit.EditCanModify
+ 0001:000D908C       Grids.SendToParent
+ 0001:000D90C0       Grids.ParentEvent
+ 0001:000D9108       Grids.ForwardMovement
+ 0001:000D9124       Grids.Ctrl
+ 0001:000D9134       Grids.Selection
+ 0001:000D9158       Grids.CaretPos
+ 0001:000D9194       Grids.RightSide
+ 0001:000D91EC       Grids.LeftSide
+ 0001:000D9238       Grids.TInplaceEdit.KeyDown
+ 0001:000D946C       Grids.TInplaceEdit.KeyPress
+ 0001:000D9554       Grids.TInplaceEdit.KeyUp
+ 0001:000D9570       Grids.TInplaceEdit.WndProc
+ 0001:000D95EC       Grids.TInplaceEdit.Deselect
+ 0001:000D960C       Grids.TInplaceEdit.Invalidate
+ 0001:000D9690       Grids.TInplaceEdit.Hide
+ 0001:000D96F8       Grids.TInplaceEdit.InternalMove
+ 0001:000D97A8       Grids.TInplaceEdit.BoundsChanged
+ 0001:000D9800       Grids.TInplaceEdit.UpdateLoc
+ 0001:000D9808       Grids.TInplaceEdit.Move
+ 0001:000D9810       Grids.TInplaceEdit.UpdateContents
+ 0001:000D98CC       Grids.TCustomGrid.Create
+ 0001:000D9A1C       Grids.TCustomGrid.Destroy
+ 0001:000D9A70       Grids.DoSizeAdjust
+ 0001:000D9B90       Grids.TCustomGrid.AdjustSize
+ 0001:000D9CF4       Grids.TCustomGrid.BoxRect
+ 0001:000D9D28       Grids.TCustomGrid.DoExit
+ 0001:000D9D44       Grids.TCustomGrid.CellRect
+ 0001:000D9D68       Grids.TCustomGrid.CanEditAcceptKey
+ 0001:000D9D6C       Grids.TCustomGrid.CanGridAcceptKey
+ 0001:000D9D70       Grids.TCustomGrid.CanEditModify
+ 0001:000D9D78       Grids.TCustomGrid.CanEditShow
+ 0001:000D9DD4       Grids.TCustomGrid.IsActiveControl
+ 0001:000D9E28       Grids.TCustomGrid.GetEditMask
+ 0001:000D9E38       Grids.TCustomGrid.GetEditText
+ 0001:000D9E48       Grids.TCustomGrid.SetEditText
+ 0001:000D9E50       Grids.TCustomGrid.GetEditLimit
+ 0001:000D9E54       Grids.TCustomGrid.GetEditStyle
+ 0001:000D9E58       Grids.TCustomGrid.HideEditor
+ 0001:000D9E68       Grids.TCustomGrid.ShowEditor
+ 0001:000D9E78       Grids.TCustomGrid.ShowEditorChar
+ 0001:000D9EAC       Grids.TCustomGrid.InvalidateEditor
+ 0001:000D9EC8       Grids.TCustomGrid.ReadColWidths
+ 0001:000D9F08       Grids.TCustomGrid.ReadRowHeights
+ 0001:000D9F48       Grids.TCustomGrid.WriteColWidths
+ 0001:000D9F88       Grids.TCustomGrid.WriteRowHeights
+ 0001:000D9FC8       Grids.DoColWidths
+ 0001:000DA00C       Grids.DoRowHeights
+ 0001:000DA050       Grids.TCustomGrid.DefineProperties
+ 0001:000DA0F4       Grids.TCustomGrid.MoveColumn
+ 0001:000DA1C8       Grids.TCustomGrid.ColumnMoved
+ 0001:000DA1CC       Grids.TCustomGrid.MoveRow
+ 0001:000DA250       Grids.TCustomGrid.RowMoved
+ 0001:000DA254       Grids.TCustomGrid.MouseCoord
+ 0001:000DA2A8       Grids.TCustomGrid.MoveColRow
+ 0001:000DA2C0       Grids.TCustomGrid.SelectCell
+ 0001:000DA2C4       Grids.TCustomGrid.SizeChanged
+ 0001:000DA2C8       Grids.TCustomGrid.Sizing
+ 0001:000DA320       Grids.TCustomGrid.TopLeftChanged
+ 0001:000DA360       Grids.FillDWord
+ 0001:000DA36C       Grids.StackAlloc
+ 0001:000DA39C       Grids.StackFree
+ 0001:000DA3B4       Grids.DrawAxisLines
+ 0001:000DA59C       Grids.DrawLines
+ 0001:000DA62C       Grids.DrawCells
+ 0001:000DA988       Grids.TCustomGrid.Paint
+ 0001:000DAEB4       Grids.DoCalc
+ 0001:000DAF1C       Grids.DoCalcRightToLeft
+ 0001:000DAF9C       Grids.TCustomGrid.CalcCoordFromPoint
+ 0001:000DAFF8       Grids.TCustomGrid.CalcDrawInfo
+ 0001:000DB01C       Grids.CalcAxis
+ 0001:000DB07C       Grids.TCustomGrid.CalcDrawInfoXY
+ 0001:000DB0A8       Grids.CalcFixedAxis
+ 0001:000DB138       Grids.TCustomGrid.CalcFixedInfo
+ 0001:000DB1BC       Grids.CalcMaxCell
+ 0001:000DB230       Grids.TCustomGrid.CalcMaxTopLeft
+ 0001:000DB260       Grids.CalcAxisState
+ 0001:000DB378       Grids.XOutsideHorzFixedBoundary
+ 0001:000DB3C4       Grids.XOutsideOrEqualHorzFixedBoundary
+ 0001:000DB410       Grids.TCustomGrid.CalcSizingState
+ 0001:000DB4E4       Grids.TCustomGrid.ChangeGridOrientation
+ 0001:000DB638       Grids.MinRedraw
+ 0001:000DB6A0       Grids.DoChange
+ 0001:000DB848       Grids.TCustomGrid.ChangeSize
+ 0001:000DB920       Grids.TCustomGrid.ClampInView
+ 0001:000DB9E8       Grids.TCustomGrid.DrawSizingLine
+ 0001:000DBB28       Grids.TCustomGrid.DrawMove
+ 0001:000DBCB8       Grids.TCustomGrid.FocusCell
+ 0001:000DBCE8       Grids.LinePos
+ 0001:000DBD44       Grids.CalcAxis
+ 0001:000DBE20       Grids.TCustomGrid.GridRectToScreenRect
+ 0001:000DBF10       Grids.TCustomGrid.Initialize
+ 0001:000DBF70       Grids.TCustomGrid.InvalidateCell
+ 0001:000DBF94       Grids.TCustomGrid.InvalidateGrid
+ 0001:000DBFA0       Grids.TCustomGrid.InvalidateRect
+ 0001:000DBFE8       Grids.Min
+ 0001:000DC010       Grids.Max
+ 0001:000DC02C       Grids.PageUp
+ 0001:000DC08C       Grids.PageDown
+ 0001:000DC0E0       Grids.CalcScrollBar
+ 0001:000DC218       Grids.ModifyPixelScrollBar
+ 0001:000DC3C4       Grids.TCustomGrid.ModifyScrollBar
+ 0001:000DC5AC       Grids.TCustomGrid.MoveAdjust
+ 0001:000DC5E0       Grids.TCustomGrid.MoveAnchor
+ 0001:000DC668       Grids.TCustomGrid.MoveCurrent
+ 0001:000DC7C0       Grids.TCustomGrid.MoveTopLeft
+ 0001:000DC814       Grids.TCustomGrid.ResizeCol
+ 0001:000DC820       Grids.TCustomGrid.ResizeRow
+ 0001:000DC82C       Grids.TCustomGrid.SelectionMoved
+ 0001:000DC8A4       Grids.TCustomGrid.ScrollDataInfo
+ 0001:000DCA50       Grids.TCustomGrid.ScrollData
+ 0001:000DCA78       Grids.CalcScroll
+ 0001:000DCAFC       Grids.TCustomGrid.TopLeftMoved
+ 0001:000DCB7C       Grids.SetScroll
+ 0001:000DCBFC       Grids.TCustomGrid.UpdateScrollPos
+ 0001:000DCD4C       Grids.DoUpdate
+ 0001:000DCD70       Grids.ScrollBarVisible
+ 0001:000DCDE0       Grids.CalcSizeInfo
+ 0001:000DCE58       Grids.SetAxisRange
+ 0001:000DCED4       Grids.SetHorzRange
+ 0001:000DCF68       Grids.SetVertRange
+ 0001:000DCFAC       Grids.TCustomGrid.UpdateScrollRange
+ 0001:000DD0F8       Grids.TCustomGrid.CreateEditor
+ 0001:000DD108       Grids.TCustomGrid.CreateParams
+ 0001:000DD188       Grids.CalcPageExtents
+ 0001:000DD1F4       Grids.Restrict
+ 0001:000DD234       Grids.TCustomGrid.KeyDown
+ 0001:000DD6AC       Grids.TCustomGrid.KeyPress
+ 0001:000DD6E8       Grids.TCustomGrid.MouseDown
+ 0001:000DDAB8       Grids.TCustomGrid.MouseMove
+ 0001:000DDC20       Grids.ResizeLine
+ 0001:000DDC78       Grids.TCustomGrid.MouseUp
+ 0001:000DDF18       Grids.TCustomGrid.MoveAndScroll
+ 0001:000DE090       Grids.TCustomGrid.GetColWidths
+ 0001:000DE0B0       Grids.TCustomGrid.GetRowHeights
+ 0001:000DE0D0       Grids.TCustomGrid.GetSelection
+ 0001:000DE0EC       Grids.TCustomGrid.GetTabStops
+ 0001:000DE100       Grids.TCustomGrid.GetVisibleColCount
+ 0001:000DE120       Grids.TCustomGrid.GetVisibleRowCount
+ 0001:000DE140       Grids.TCustomGrid.SetBorderStyle
+ 0001:000DE154       Grids.TCustomGrid.SetCol
+ 0001:000DE16C       Grids.TCustomGrid.SetColCount
+ 0001:000DE1C8       Grids.TCustomGrid.SetColWidths
+ 0001:000DE274       Grids.TCustomGrid.SetDefaultColWidth
+ 0001:000DE2B0       Grids.TCustomGrid.SetDefaultRowHeight
+ 0001:000DE2EC       Grids.TCustomGrid.SetFixedColor
+ 0001:000DE300       Grids.TCustomGrid.SetFixedCols
+ 0001:000DE398       Grids.TCustomGrid.SetFixedRows
+ 0001:000DE430       Grids.TCustomGrid.SetEditorMode
+ 0001:000DE458       Grids.TCustomGrid.SetGridLineWidth
+ 0001:000DE46C       Grids.TCustomGrid.SetOptions
+ 0001:000DE4E4       Grids.TCustomGrid.SetRow
+ 0001:000DE4FC       Grids.TCustomGrid.SetRowCount
+ 0001:000DE538       Grids.TCustomGrid.SetRowHeights
+ 0001:000DE5E4       Grids.TCustomGrid.SetScrollBars
+ 0001:000DE5F8       Grids.TCustomGrid.SetSelection
+ 0001:000DE650       Grids.TCustomGrid.SetTabStops
+ 0001:000DE6D8       Grids.TCustomGrid.SetTopRow
+ 0001:000DE6F0       Grids.TCustomGrid.HideEdit
+ 0001:000DE75C       Grids.UpdateEditor
+ 0001:000DE7CC       Grids.TCustomGrid.UpdateEdit
+ 0001:000DE8AC       Grids.TCustomGrid.UpdateText
+ 0001:000DE920       Grids.TCustomGrid.WMChar
+ 0001:000DE94C       Grids.TCustomGrid.WMCommand
+ 0001:000DE980       Grids.TCustomGrid.WMGetDlgCode
+ 0001:000DE9B0       Grids.TCustomGrid.WMKillFocus
+ 0001:000DEA00       Grids.TCustomGrid.WMLButtonDown
+ 0001:000DEA28       Grids.TCustomGrid.WMNCHitTest
+ 0001:000DEA7C       Grids.TCustomGrid.WMSetCursor
+ 0001:000DEB28       Grids.TCustomGrid.WMSetFocus
+ 0001:000DEB84       Grids.TCustomGrid.WMSize
+ 0001:000DEBB4       Grids.TCustomGrid.WMVScroll
+ 0001:000DEBCC       Grids.TCustomGrid.WMHScroll
+ 0001:000DEBE0       Grids.TCustomGrid.CancelMode
+ 0001:000DEC78       Grids.TCustomGrid.WMCancelMode
+ 0001:000DEC8C       Grids.TCustomGrid.CMCancelMode
+ 0001:000DECB8       Grids.TCustomGrid.CMFontChanged
+ 0001:000DECDC       Grids.TCustomGrid.CMCtl3DChanged
+ 0001:000DECF0       Grids.TCustomGrid.CMDesignHitTest
+ 0001:000DED10       Grids.TCustomGrid.CMWantSpecialKey
+ 0001:000DED38       Grids.TCustomGrid.TimedScroll
+ 0001:000DEDEC       Grids.TCustomGrid.WMTimer
+ 0001:000DEF48       Grids.TCustomGrid.ColWidthsChanged
+ 0001:000DEF5C       Grids.TCustomGrid.RowHeightsChanged
+ 0001:000DEF70       Grids.TCustomGrid.DeleteColumn
+ 0001:000DEF94       Grids.TCustomGrid.DeleteRow
+ 0001:000DEFB8       Grids.TCustomGrid.UpdateDesigner
+ 0001:000DEFF8       Grids.TCustomGrid.DoMouseWheelDown
+ 0001:000DF044       Grids.TCustomGrid.DoMouseWheelUp
+ 0001:000DF08C       Grids.TCustomGrid.CheckColumnDrag
+ 0001:000DF098       Grids.TCustomGrid.CheckRowDrag
+ 0001:000DF0A4       Grids.TCustomGrid.BeginColumnDrag
+ 0001:000DF0B0       Grids.TCustomGrid.BeginRowDrag
+ 0001:000DF0BC       Grids.TCustomGrid.EndColumnDrag
+ 0001:000DF0C8       Grids.TCustomGrid.EndRowDrag
+ 0001:000DF0D4       Grids.TCustomGrid.CMShowingChanged
+ 0001:000DF0F0       Grids.TCustomDrawGrid.CellRect
+ 0001:000DF114       Grids.TCustomDrawGrid.MouseToCell
+ 0001:000DF14C       Grids.TCustomDrawGrid.ColumnMoved
+ 0001:000DF16C       Grids.TCustomDrawGrid.GetEditMask
+ 0001:000DF1AC       Grids.TCustomDrawGrid.GetEditText
+ 0001:000DF1EC       Grids.TCustomDrawGrid.RowMoved
+ 0001:000DF20C       Grids.TCustomDrawGrid.SelectCell
+ 0001:000DF23C       Grids.TCustomDrawGrid.SetEditText
+ 0001:000DF268       Grids.TCustomDrawGrid.DrawCell
+ 0001:000DF308       Grids.TCustomDrawGrid.TopLeftChanged
+ 0001:000DF34C       Grids.NewStrItem
+ 0001:000DF378       Grids.DisposeStrItem
+ 0001:000DF384       Grids..TSparsePointerArray
+ 0001:000DF3E4       Grids..TSparseList
+ 0001:000DF43C       Grids..TStringSparseList
+ 0001:000DF548       Grids.ExpandDir
+ 0001:000DF588       Grids.MakeSec
+ 0001:000DF5B0       Grids.TSparsePointerArray.Create
+ 0001:000DF614       Grids.TSparsePointerArray.Destroy
+ 0001:000DF674       Grids.TSparsePointerArray.GetAt
+ 0001:000DF6C0       Grids.TSparsePointerArray.MakeAt
+ 0001:000DF72C       Grids.TSparsePointerArray.PutAt
+ 0001:000DF760       Grids.TSparsePointerArray.ForAll
+ 0001:000DF7EC       Grids.Detector
+ 0001:000DF814       Grids.TSparsePointerArray.ResetHighBound
+ 0001:000DF840       Grids.TSparseList.Create
+ 0001:000DF878       Grids.TSparseList.Destroy
+ 0001:000DF8A0       Grids.TSparseList.Clear
+ 0001:000DF8C0       Grids.TSparseList.Delete
+ 0001:000DF90C       Grids.TSparseList.Exchange
+ 0001:000DF948       Grids.TSparseList.ForAll
+ 0001:000DF954       Grids.TSparseList.Get
+ 0001:000DF9C0       Grids.TSparseList.Insert
+ 0001:000DFA64       Grids.TSparseList.Move
+ 0001:000DFA98       Grids.TSparseList.NewList
+ 0001:000DFAB8       Grids.TSparseList.Put
+ 0001:000DFB30       Grids.TStringSparseList.Create
+ 0001:000DFB84       Grids.TStringSparseList.Destroy
+ 0001:000DFBB4       Grids.TStringSparseList.ReadData
+ 0001:000DFC30       Grids.CountItem
+ 0001:000DFC40       Grids.StoreItem
+ 0001:000DFC68       Grids.TStringSparseList.WriteData
+ 0001:000DFCA4       Grids.TStringSparseList.DefineProperties
+ 0001:000DFCD4       Grids.TStringSparseList.Get
+ 0001:000DFD04       Grids.TStringSparseList.GetCount
+ 0001:000DFD0C       Grids.TStringSparseList.GetObject
+ 0001:000DFD2C       Grids.TStringSparseList.Put
+ 0001:000DFD94       Grids.TStringSparseList.PutObject
+ 0001:000DFDD4       Grids.TStringSparseList.Changed
+ 0001:000DFDE8       Grids.TStringSparseList.Delete
+ 0001:000DFE18       Grids.TStringSparseList.Exchange
+ 0001:000DFE24       Grids.TStringSparseList.Insert
+ 0001:000DFE50       Grids.ClearItem
+ 0001:000DFE5C       Grids.TStringSparseList.Clear
+ 0001:000DFE80       Grids.TStringGridStrings.Create
+ 0001:000DFEC8       Grids.TStringGridStrings.Assign
+ 0001:000DFFC0       Grids.TStringGridStrings.CalcXY
+ 0001:000E0000       Grids.TStringGridStrings.Add
+ 0001:000E00A8       Grids.BlankStr
+ 0001:000E00D4       Grids.TStringGridStrings.Clear
+ 0001:000E0148       Grids.TStringGridStrings.Delete
+ 0001:000E0190       Grids.TStringGridStrings.Get
+ 0001:000E01D0       Grids.TStringGridStrings.GetCount
+ 0001:000E01F4       Grids.TStringGridStrings.GetObject
+ 0001:000E0228       Grids.TStringGridStrings.Insert
+ 0001:000E0274       Grids.TStringGridStrings.Put
+ 0001:000E02A4       Grids.TStringGridStrings.PutObject
+ 0001:000E02D4       Grids.TStringGridStrings.SetUpdateState
+ 0001:000E02E0       Grids.TStringGrid.Create
+ 0001:000E031C       Grids.FreeItem
+ 0001:000E0328       Grids.TStringGrid.Destroy
+ 0001:000E03BC       Grids.MoveColData
+ 0001:000E03D8       Grids.TStringGrid.ColumnMoved
+ 0001:000E0414       Grids.TStringGrid.RowMoved
+ 0001:000E0448       Grids.TStringGrid.GetEditText
+ 0001:000E048C       Grids.TStringGrid.SetEditText
+ 0001:000E054C       Grids.TStringGrid.DrawCell
+ 0001:000E05EC       Grids.TStringGrid.DisableEditUpdate
+ 0001:000E05F4       Grids.TStringGrid.EnableEditUpdate
+ 0001:000E05FC       Grids.TStringGrid.Initialize
+ 0001:000E0680       Grids.TStringGrid.SetUpdateState
+ 0001:000E06A8       Grids.TStringGrid.Update
+ 0001:000E06F4       Grids.TStringGrid.EnsureColRow
+ 0001:000E0758       Grids.TStringGrid.EnsureDataRow
+ 0001:000E07AC       Grids.TStringGrid.GetCells
+ 0001:000E07F0       Grids.TStringGrid.GetObjects
+ 0001:000E081C       Grids.TStringGrid.GetRows
+ 0001:000E0824       Grids.TStringGrid.SetCells
+ 0001:000E0874       Grids.TStringGrid.SetObjects
+ 0001:000E08C4       Grids.TStringGrid.SetRows
+ 0001:000E08E4       ORCtrls..TORStrings
+ 0001:000E0CB4       ORCtrls..TORListBox
+ 0001:000E1254       ORCtrls..TORDropPanel
+ 0001:000E1400       ORCtrls..TORComboPanelEdit
+ 0001:000E1568       ORCtrls..TORComboEdit
+ 0001:000E17C8       ORCtrls..TORComboBox
+ 0001:000E2210       ORCtrls..TORAutoPanel
+ 0001:000E2378       ORCtrls..TOROffsetLabel
+ 0001:000E2800       ORCtrls..TORAlignButton
+ 0001:000E29F0       ORCtrls..TORAlignSpeedButton
+ 0001:000E2B54       ORCtrls..TORAlignEdit
+ 0001:000E2DC0       ORCtrls..TCaptionTreeView
+ 0001:000E2F9C       ORCtrls..TORTreeNode
+ 0001:000E3090       ORCtrls..TORTreeView
+ 0001:000E3380       ORCtrls..TORCBImageIndexes
+ 0001:000E3610       ORCtrls..TORCheckBox
+ 0001:000E39C8       ORCtrls..TORListView
+ 0001:000E3B98       ORCtrls..TORPopupMenu
+ 0001:000E3C70       ORCtrls..TORMenuItem
+ 0001:000E3D4C       ORCtrls..TKeyClickPanel
+ 0001:000E3EB4       ORCtrls..TKeyClickRadioGroup
+ 0001:000E40AC       ORCtrls..TCaptionListBox
+ 0001:000E4350       ORCtrls..TCaptionCheckListBox
+ 0001:000E4594       ORCtrls..TCaptionMemo
+ 0001:000E47B0       ORCtrls..TCaptionEdit
+ 0001:000E49E4       ORCtrls..TCaptionRichEdit
+ 0001:000E4C40       ORCtrls..TCaptionComboBox
+ 0001:000E4E94       ORCtrls..TCaptionListView
+ 0001:000E50F4       ORCtrls..TCaptionStringGrid
+ 0001:000E52DC       ORCtrls..TItemTip
+ 0001:000E5434       ORCtrls..TSizeRatio
+ 0001:000E548C       ORCtrls.ClientWidthOfList
+ 0001:000E54B4       ORCtrls.FontWidthPixel
+ 0001:000E55B0       ORCtrls.FontHeightPixel
+ 0001:000E55EC       ORCtrls.HigherOf
+ 0001:000E55F8       ORCtrls.LowerOf
+ 0001:000E5604       ORCtrls.Piece
+ 0001:000E5680       ORCtrls.SetPiece
+ 0001:000E5790       ORCtrls.IntArrayToString
+ 0001:000E5850       ORCtrls.StringToIntArray
+ 0001:000E596C       ORCtrls.StringBetween
+ 0001:000E599C       ORCtrls.ItemTipKeyHook
+ 0001:000E59D0       ORCtrls.AddItemTipRef
+ 0001:000E59FC       ORCtrls.RemoveItemTipRef
+ 0001:000E5A20       ORCtrls.TItemTip.Create
+ 0001:000E5A70       ORCtrls.TItemTip.Destroy
+ 0001:000E5AA8       ORCtrls.TItemTip.CreateParams
+ 0001:000E5AD0       ORCtrls.TItemTip.Paint
+ 0001:000E5BB4       ORCtrls.TItemTip.Hide
+ 0001:000E5BF4       ORCtrls.TItemTip.GetTabSettings
+ 0001:000E5CA8       ORCtrls.TItemTip.UpdateText
+ 0001:000E5F40       ORCtrls.TItemTip.Show
+ 0001:000E628C       ORCtrls.GetORCBBitmap
+ 0001:000E6350       ORCtrls.DestroyORCBBitmaps
+ 0001:000E6380       ORCtrls.TORStrings.Add
+ 0001:000E6400       ORCtrls.TORStrings.Clear
+ 0001:000E642C       ORCtrls.TORStrings.Create
+ 0001:000E6484       ORCtrls.TORStrings.Delete
+ 0001:000E64B8       ORCtrls.TORStrings.Destroy
+ 0001:000E64E8       ORCtrls.TORStrings.Get
+ 0001:000E6508       ORCtrls.TORStrings.GetCount
+ 0001:000E651C       ORCtrls.TORStrings.GetObject
+ 0001:000E6538       ORCtrls.TORStrings.IndexOf
+ 0001:000E6554       ORCtrls.TORStrings.Insert
+ 0001:000E65DC       ORCtrls.TORStrings.Put
+ 0001:000E665C       ORCtrls.TORStrings.PutObject
+ 0001:000E6674       ORCtrls.TORStrings.SetUpdateState
+ 0001:000E668C       ORCtrls.TORStrings.Verify
+ 0001:000E6ACC       ORCtrls.TORListBox.Create
+ 0001:000E6BC8       ORCtrls.TORListBox.Destroy
+ 0001:000E6C18       ORCtrls.TORListBox.CreateParams
+ 0001:000E6C2C       ORCtrls.TORListBox.CreateWnd
+ 0001:000E6C80       ORCtrls.TORListBox.Loaded
+ 0001:000E6CB0       ORCtrls.TORListBox.DestroyWnd
+ 0001:000E6CCC       ORCtrls.TORListBox.TextToShow
+ 0001:000E6DC4       ORCtrls.TORListBox.IsSynonym
+ 0001:000E6EA0       ORCtrls.TORListBox.GetDisplayText
+ 0001:000E6EF4       ORCtrls.TORListBox.GetDynamicProperty
+ 0001:000E6F14       ORCtrls.TORListBox.LBGetItemData
+ 0001:000E6F44       ORCtrls.TORListBox.LBSetItemData
+ 0001:000E6FCC       ORCtrls.TORListBox.LBGetText
+ 0001:000E70A0       ORCtrls.TORListBox.LBGetTextLen
+ 0001:000E7154       ORCtrls.TORListBox.LBAddString
+ 0001:000E723C       ORCtrls.TORListBox.LBInsertString
+ 0001:000E7334       ORCtrls.TORListBox.LBDeleteString
+ 0001:000E73AC       ORCtrls.TORListBox.LBResetContent
+ 0001:000E7438       ORCtrls.TORListBox.LBSetCurSel
+ 0001:000E7450       ORCtrls.TORListBox.CMFontChanged
+ 0001:000E747C       ORCtrls.TORListBox.WMKeyDown
+ 0001:000E7654       ORCtrls.TORListBox.WMLButtonDown
+ 0001:000E78F0       ORCtrls.TORListBox.WMLButtonUp
+ 0001:000E7934       ORCtrls.TORListBox.WMRButtonUp
+ 0001:000E79DC       ORCtrls.TORListBox.WMLButtonDblClk
+ 0001:000E7B94       ORCtrls.TORListBox.WMCancelMode
+ 0001:000E7BC4       ORCtrls.TORListBox.WMMove
+ 0001:000E7BE0       ORCtrls.TORListBox.WMSize
+ 0001:000E7C1C       ORCtrls.TORListBox.WMVScroll
+ 0001:000E7C3C       ORCtrls.TORListBox.CMHintShow
+ 0001:000E7C98       ORCtrls.TORListBox.Click
+ 0001:000E7CB0       ORCtrls.TORListBox.DoChange
+ 0001:000E7D18       ORCtrls.TORListBox.DoEnter
+ 0001:000E7D54       ORCtrls.TORListBox.DoExit
+ 0001:000E7D9C       ORCtrls.TORListBox.DestroyItems
+ 0001:000E7E08       ORCtrls.TORListBox.ToggleCheckBox
+ 0001:000E7EFC       ORCtrls.TORListBox.KeyPress
+ 0001:000E7F2C       ORCtrls.TORListBox.MouseDown
+ 0001:000E7FB0       ORCtrls.TORListBox.MouseMove
+ 0001:000E8140       ORCtrls.TORListBox.MeasureItem
+ 0001:000E81E4       ORCtrls.TORListBox.WMDestroy
+ 0001:000E820C       ORCtrls.TORListBox.CNDrawItem
+ 0001:000E8224       ORCtrls.TORListBox.DrawItem
+ 0001:000E8594       ORCtrls.TORListBox.GetIndexFromY
+ 0001:000E8604       ORCtrls.TORListBox.SetFocusIndex
+ 0001:000E8860       ORCtrls.TORListBox.UMShowTip
+ 0001:000E896C       ORCtrls.TORListBox.GetIEN
+ 0001:000E8A1C       ORCtrls.TORListBox.GetItemIEN
+ 0001:000E8ACC       ORCtrls.TORListBox.SelectByIEN
+ 0001:000E8B28       ORCtrls.TORListBox.SetExactByIEN
+ 0001:000E8C14       ORCtrls.TORListBox.GetItemID
+ 0001:000E8CB0       ORCtrls.TORListBox.SelectByID
+ 0001:000E8D6C       ORCtrls.TORListBox.GetTabPositions
+ 0001:000E8DA8       ORCtrls.TORListBox.SetTabPositions
+ 0001:000E8EC0       ORCtrls.TORListBox.SetTabPosInPixels
+ 0001:000E8ED4       ORCtrls.TORListBox.SetTabStops
+ 0001:000E8FF0       ORCtrls.TORListBox.SupportsDynamicProperty
+ 0001:000E8FF8       ORCtrls.TORListBox.SetHideSynonyms
+ 0001:000E90B8       ORCtrls.TORListBox.SetSynonymChars
+ 0001:000E914C       ORCtrls.TORListBox.GetStyle
+ 0001:000E9154       ORCtrls.TORListBox.SetStyle
+ 0001:000E9184       ORCtrls.TORListBox.SetDelimiter
+ 0001:000E9190       ORCtrls.TORListBox.GetPieces
+ 0001:000E91AC       ORCtrls.TORListBox.SetPieces
+ 0001:000E91CC       ORCtrls.TORListBox.ResetItems
+ 0001:000E93D4       ORCtrls.TORListBox.SetLongList
+ 0001:000E9408       ORCtrls.TORListBox.AdjustScrollBar
+ 0001:000E947C       ORCtrls.TORListBox.CreateScrollBar
+ 0001:000E9528       ORCtrls.TORListBox.FreeScrollBar
+ 0001:000E9548       ORCtrls.TORListBox.ForDataUse
+ 0001:000E97CC       ORCtrls.TORListBox.InitLongList
+ 0001:000E993C       ORCtrls.TORListBox.InsertSeparator
+ 0001:000E99E0       ORCtrls.TORListBox.ClearTop
+ 0001:000E9A38       ORCtrls.ClearLong
+ 0001:000E9B00       ORCtrls.TORListBox.NeedData
+ 0001:000E9E00       ORCtrls.TORListBox.PositionThumb
+ 0001:000E9E9C       ORCtrls.TORListBox.ScrollTo
+ 0001:000EA218       ORCtrls.TORListBox.GetStringIndex
+ 0001:000EA358       ORCtrls.TORListBox.SelectString
+ 0001:000EA634       ORCtrls.TORListBox.SetCheckBoxes
+ 0001:000EA680       ORCtrls.TORListBox.SetFlatCheckBoxes
+ 0001:000EA698       ORCtrls.TORListBox.GetChecked
+ 0001:000EA6DC       ORCtrls.TORListBox.SetChecked
+ 0001:000EA768       ORCtrls.TORListBox.GetCheckedState
+ 0001:000EA7A4       ORCtrls.TORListBox.SetCheckedState
+ 0001:000EA820       ORCtrls.TORListBox.GetMultiSelect
+ 0001:000EA828       ORCtrls.TORListBox.SetMultiSelect
+ 0001:000EA848       ORCtrls.TORListBox.GetCheckedString
+ 0001:000EA8E0       ORCtrls.TORListBox.SetCheckedString
+ 0001:000EA968       ORCtrls.TORListBox.GetMItems
+ 0001:000EA99C       ORCtrls.TORListBox.SetMItems
+ 0001:000EA9DC       ORCtrls.TORListBox.Clear
+ 0001:000EA9F4       ORCtrls.TORListBox.SetBlackColorMode
+ 0001:000EA9FC       ORCtrls.TORListBox.SetCaption
+ 0001:000EAA98       ORCtrls.TORListBox.GetCaption
+ 0001:000EAAB0       ORCtrls.DropDownPanelOpened
+ 0001:000EAAE4       ORCtrls.DropDownPanelClosed
+ 0001:000EAB20       ORCtrls.TORDropPanel.BtnClicked
+ 0001:000EAB54       ORCtrls.TORDropPanel.Create
+ 0001:000EABC8       ORCtrls.TORDropPanel.CreateParams
+ 0001:000EAC04       ORCtrls.TORDropPanel.GetButton
+ 0001:000EAC9C       ORCtrls.TORDropPanel.ResetButtons
+ 0001:000EACCC       ORCtrls.TORDropPanel.Resize
+ 0001:000EAD4C       ORCtrls.TORDropPanel.UpdateButtons
+ 0001:000EAEC4       ORCtrls.TORDropPanel.WMActivateApp
+ 0001:000EAF60       ORCtrls.TORComboEdit.CreateParams
+ 0001:000EAF7C       ORCtrls.TORComboEdit.WMKillFocus
+ 0001:000EAFF4       ORCtrls.TORComboEdit.WMSetFocus
+ 0001:000EB04C       ORCtrls.TORComboBox.Create
+ 0001:000EB1F0       ORCtrls.TORComboBox.WMDestroy
+ 0001:000EB21C       ORCtrls.TORComboBox.CMFontChanged
+ 0001:000EB230       ORCtrls.TORComboBox.WMMove
+ 0001:000EB248       ORCtrls.TORComboBox.WMSize
+ 0001:000EB25C       ORCtrls.TORComboBox.WMTimer
+ 0001:000EB2B8       ORCtrls.TORComboBox.EditControl
+ 0001:000EB2CC       ORCtrls.TORComboBox.AdjustSizeOfSelf
+ 0001:000EB3F4       ORCtrls.TORComboBox.DropButtonDown
+ 0001:000EB424       ORCtrls.TORComboBox.DropButtonUp
+ 0001:000EB454       ORCtrls.TORComboBox.DropDownStatusChanged
+ 0001:000EB4B4       ORCtrls.TORComboBox.ClearDropDownStatus
+ 0001:000EB4C8       ORCtrls.TORComboBox.Destroy
+ 0001:000EB4F4       ORCtrls.TORComboBox.DoEnter
+ 0001:000EB518       ORCtrls.TORComboBox.UMGotFocus
+ 0001:000EB544       ORCtrls.TORComboBox.DoExit
+ 0001:000EB588       ORCtrls.TORComboBox.LoadComboBoxImage
+ 0001:000EB620       ORCtrls.TORComboBox.Loaded
+ 0001:000EB638       ORCtrls.TORComboBox.FwdChange
+ 0001:000EB668       ORCtrls.TORComboBox.FwdChangeDelayed
+ 0001:000EB9C0       ORCtrls.TORComboBox.FwdClick
+ 0001:000EBB20       ORCtrls.TORComboBox.FwdDblClick
+ 0001:000EBB40       ORCtrls.TORComboBox.FwdKeyDown
+ 0001:000EBF0C       ORCtrls.TORComboBox.FwdKeyPress
+ 0001:000EBF78       ORCtrls.TORComboBox.FwdKeyUp
+ 0001:000EBFE4       ORCtrls.TORComboBox.FwdMouseUp
+ 0001:000EC008       ORCtrls.TORComboBox.FwdNeedData
+ 0001:000EC080       ORCtrls.TORComboBox.SetDropDownCount
+ 0001:000EC08C       ORCtrls.TORComboBox.SetDroppedDown
+ 0001:000EC2D8       ORCtrls.TORComboBox.SetEditRect
+ 0001:000EC380       ORCtrls.TORComboBox.SetEditText
+ 0001:000EC434       ORCtrls.TORComboBox.SetItemIndex
+ 0001:000EC518       ORCtrls.TORComboBox.SelectByIEN
+ 0001:000EC544       ORCtrls.TORComboBox.SelectByID
+ 0001:000EC564       ORCtrls.TORComboBox.SetExactByIEN
+ 0001:000EC590       ORCtrls.TORComboBox.SetStyle
+ 0001:000EC75C       ORCtrls.TORComboBox.StartKeyTimer
+ 0001:000EC7BC       ORCtrls.TORComboBox.StopKeyTimer
+ 0001:000EC7E4       ORCtrls.TORComboBox.SupportsDynamicProperty
+ 0001:000EC7EC       ORCtrls.TORComboBox.Clear
+ 0001:000EC810       ORCtrls.TORComboBox.ClearTop
+ 0001:000EC81C       ORCtrls.TORComboBox.ForDataUse
+ 0001:000EC828       ORCtrls.TORComboBox.InitLongList
+ 0001:000EC878       ORCtrls.TORComboBox.InsertSeparator
+ 0001:000EC884       ORCtrls.TORComboBox.Invalidate
+ 0001:000EC8E4       ORCtrls.TORComboBox.GetAutoSelect
+ 0001:000EC8F4       ORCtrls.TORComboBox.GetColor
+ 0001:000EC900       ORCtrls.TORComboBox.GetDelimiter
+ 0001:000EC910       ORCtrls.TORComboBox.GetDisplayText
+ 0001:000EC92C       ORCtrls.TORComboBox.GetDynamicProperty
+ 0001:000EC94C       ORCtrls.TORComboBox.GetItemHeight
+ 0001:000EC958       ORCtrls.TORComboBox.GetItemID
+ 0001:000EC970       ORCtrls.TORComboBox.GetItemIEN
+ 0001:000EC990       ORCtrls.TORComboBox.GetItemIndex
+ 0001:000EC9A0       ORCtrls.TORComboBox.GetItemTipEnable
+ 0001:000EC9B0       ORCtrls.TORComboBox.GetItemTipColor
+ 0001:000EC9C0       ORCtrls.TORComboBox.GetLongList
+ 0001:000EC9D0       ORCtrls.TORComboBox.GetMaxLength
+ 0001:000EC9E0       ORCtrls.TORComboBox.GetPieces
+ 0001:000EC9F8       ORCtrls.TORComboBox.GetSelStart
+ 0001:000ECA08       ORCtrls.TORComboBox.GetShortCount
+ 0001:000ECA18       ORCtrls.TORComboBox.GetSorted
+ 0001:000ECA28       ORCtrls.TORComboBox.GetHideSynonyms
+ 0001:000ECA38       ORCtrls.TORComboBox.GetSynonymChars
+ 0001:000ECA54       ORCtrls.TORComboBox.SetHideSynonyms
+ 0001:000ECA60       ORCtrls.TORComboBox.SetSynonymChars
+ 0001:000ECAB0       ORCtrls.TORComboBox.GetTabPositions
+ 0001:000ECAC8       ORCtrls.TORComboBox.GetTabPosInPixels
+ 0001:000ECAD8       ORCtrls.TORComboBox.GetText
+ 0001:000ECAF0       ORCtrls.TORComboBox.SelectAll
+ 0001:000ECAFC       ORCtrls.TORComboBox.SetAutoSelect
+ 0001:000ECB0C       ORCtrls.TORComboBox.SetBlackColorMode
+ 0001:000ECB34       ORCtrls.TORComboBox.SetColor
+ 0001:000ECB68       ORCtrls.TORComboBox.SetDelimiter
+ 0001:000ECB74       ORCtrls.TORComboBox.SetItemHeight
+ 0001:000ECB80       ORCtrls.TORComboBox.SetItemTipEnable
+ 0001:000ECB90       ORCtrls.TORComboBox.SetItemTipColor
+ 0001:000ECBA0       ORCtrls.TORComboBox.SetLongList
+ 0001:000ECBAC       ORCtrls.TORComboBox.SetMaxLength
+ 0001:000ECBB8       ORCtrls.TORComboBox.SetPieces
+ 0001:000ECBC4       ORCtrls.TORComboBox.SetSelLength
+ 0001:000ECBD8       ORCtrls.TORComboBox.SetSelStart
+ 0001:000ECBEC       ORCtrls.TORComboBox.SetSelText
+ 0001:000ECBF8       ORCtrls.TORComboBox.SetSorted
+ 0001:000ECC04       ORCtrls.TORComboBox.SetTabPositions
+ 0001:000ECC10       ORCtrls.TORComboBox.SetTabPosInPixels
+ 0001:000ECC1C       ORCtrls.TORComboBox.SetText
+ 0001:000ECC28       ORCtrls.TORComboBox.SetItems
+ 0001:000ECC38       ORCtrls.TORComboBox.GetCheckBoxes
+ 0001:000ECC48       ORCtrls.TORComboBox.GetCheckEntireLine
+ 0001:000ECC58       ORCtrls.TORComboBox.GetFlatCheckBoxes
+ 0001:000ECC68       ORCtrls.TORComboBox.SetCheckBoxes
+ 0001:000ECE5C       ORCtrls.TORComboBox.SetCheckEntireLine
+ 0001:000ECE6C       ORCtrls.TORComboBox.SetFlatCheckBoxes
+ 0001:000ECE78       ORCtrls.TORComboBox.DropPanelBtnPressed
+ 0001:000ECEDC       ORCtrls.TORComboBox.GetCheckedString
+ 0001:000ECEF4       ORCtrls.TORComboBox.SetCheckedString
+ 0001:000ECF00       ORCtrls.TORComboBox.SetCheckBoxEditColor
+ 0001:000ECF30       ORCtrls.TORComboBox.SetListItemsOnly
+ 0001:000ECF4C       ORCtrls.TORComboBox.SetOnCheckedText
+ 0001:000ECFB4       ORCtrls.TORComboBox.SetTemplateField
+ 0001:000ECFF8       ORCtrls.TORComboBox.GetOnSynonymCheck
+ 0001:000ED010       ORCtrls.TORComboBox.SetOnSynonymCheck
+ 0001:000ED030       ORCtrls.TORComboBox.GetEnabled
+ 0001:000ED038       ORCtrls.TORComboBox.SetEnabled
+ 0001:000ED070       ORCtrls.TORComboBox.GetEditBoxText
+ 0001:000ED16C       ORCtrls.TORComboBox.UpdateCheckEditBoxText
+ 0001:000ED1EC       ORCtrls.TORComboBox.CheckBoxSelected
+ 0001:000ED21C       ORCtrls.TORComboBox.SetCaption
+ 0001:000ED228       ORCtrls.TORComboBox.GetCaption
+ 0001:000ED240       ORCtrls.TORComboBox.GetCaseChanged
+ 0001:000ED250       ORCtrls.TORComboBox.SetCaseChanged
+ 0001:000ED260       ORCtrls.TORComboBox.GetLookupPiece
+ 0001:000ED270       ORCtrls.TORComboBox.SetLookupPiece
+ 0001:000ED280       ORCtrls.TSizeRatio.Create
+ 0001:000ED2F8       ORCtrls.TORAutoPanel.Destroy
+ 0001:000ED35C       ORCtrls.TORAutoPanel.BuildSizes
+ 0001:000ED454       ORCtrls.TORAutoPanel.Loaded
+ 0001:000ED484       ORCtrls.TORAutoPanel.DoResize
+ 0001:000ED5CC       ORCtrls.TORAutoPanel.Resize
+ 0001:000ED5F0       ORCtrls.TOROffsetLabel.Create
+ 0001:000ED64C       ORCtrls.TOROffsetLabel.CMTextChanged
+ 0001:000ED660       ORCtrls.TOROffsetLabel.CMFontChanged
+ 0001:000ED674       ORCtrls.TOROffsetLabel.AdjustSizeOfSelf
+ 0001:000ED700       ORCtrls.TOROffsetLabel.DoDrawText
+ 0001:000ED7AC       ORCtrls.TOROffsetLabel.Paint
+ 0001:000ED838       ORCtrls.TOROffsetLabel.GetTransparent
+ 0001:000ED844       ORCtrls.TOROffsetLabel.SetTransparent
+ 0001:000ED884       ORCtrls.TOROffsetLabel.SetVertOffset
+ 0001:000ED890       ORCtrls.TOROffsetLabel.SetHorzOffset
+ 0001:000ED89C       ORCtrls.TOROffsetLabel.SetWordWrap
+ 0001:000ED8B0       ORCtrls.TORAlignButton.Create
+ 0001:000ED8FC       ORCtrls.TORAlignButton.CreateParams
+ 0001:000ED940       ORCtrls.TORAlignButton.SetAlignment
+ 0001:000ED954       ORCtrls.TORAlignButton.SetLayout
+ 0001:000ED968       ORCtrls.TORAlignButton.SetWordWrap
+ 0001:000ED97C       ORCtrls.TORTreeNode.EnsureVisible
+ 0001:000EDA08       ORCtrls.TORTreeNode.GetORTreeView
+ 0001:000EDA20       ORCtrls.TORTreeNode.GetParent
+ 0001:000EDA38       ORCtrls.TORTreeNode.GetText
+ 0001:000EDA4C       ORCtrls.TORTreeNode.SetBold
+ 0001:000EDA94       ORCtrls.TORTreeNode.SetPiece
+ 0001:000EDAD0       ORCtrls.TORTreeNode.SetStringData
+ 0001:000EDB7C       ORCtrls.TORTreeNode.SetText
+ 0001:000EDB84       ORCtrls.TORTreeNode.UpdateText
+ 0001:000EDC14       ORCtrls.CalcShortName
+ 0001:000EDE04       ORCtrls.TORTreeNode.SetCaption
+ 0001:000EDEB4       ORCtrls.TORTreeView.CNNotify
+ 0001:000EDF34       ORCtrls.TORTreeView.Create
+ 0001:000EDF70       ORCtrls.TORTreeView.CreateNode
+ 0001:000EDFA8       ORCtrls.TORTreeView.FindPieceNode
+ 0001:000EE008       ORCtrls.TORTreeView.FindPieceNode
+ 0001:000EE0E0       ORCtrls.TORTreeView.GetExpandedIDStr
+ 0001:000EE1D4       ORCtrls.TORTreeView.SetExpandedIDStr
+ 0001:000EE338       ORCtrls.TORTreeView.GetHorzScrollPos
+ 0001:000EE34C       ORCtrls.TORTreeView.GetVertScrollPos
+ 0001:000EE360       ORCtrls.TORTreeView.RenameNodes
+ 0001:000EE414       ORCtrls.TORTreeView.SetNodeDelim
+ 0001:000EE428       ORCtrls.TORTreeView.SetHorzScrollPos
+ 0001:000EE444       ORCtrls.TORTreeView.SetNodePiece
+ 0001:000EE458       ORCtrls.TORTreeView.SetVertScrollPos
+ 0001:000EE474       ORCtrls.TORTreeView.GetNodeID
+ 0001:000EE538       ORCtrls.TORTreeView.SetShortNodeCaptions
+ 0001:000EE544       ORCtrls.TORCBImageIndexes.Create
+ 0001:000EE5C8       ORCtrls.TORCBImageIndexes.Destroy
+ 0001:000EE5F8       ORCtrls.TORCBImageIndexes.SetImages
+ 0001:000EE634       ORCtrls.RStr
+ 0001:000EE66C       ORCtrls.TORCBImageIndexes.IdxString
+ 0001:000EE758       ORCtrls.TORCBImageIndexes.SetIdxString
+ 0001:000EE898       ORCtrls.TORCBImageIndexes.ImageListChanged
+ 0001:000EE8C8       ORCtrls.TORCBImageIndexes.Notification
+ 0001:000EE8F4       ORCtrls.TORCBImageIndexes.SetCheckedDisabledIndex
+ 0001:000EE904       ORCtrls.TORCBImageIndexes.SetCheckedEnabledIndex
+ 0001:000EE914       ORCtrls.TORCBImageIndexes.SetGrayedDisabledIndex
+ 0001:000EE924       ORCtrls.TORCBImageIndexes.SetGrayedEnabledIndex
+ 0001:000EE934       ORCtrls.TORCBImageIndexes.SetUncheckedDisabledIndex
+ 0001:000EE944       ORCtrls.TORCBImageIndexes.SetUncheckedEnabledIndex
+ 0001:000EE954       ORCtrls.TORCheckBox.Create
+ 0001:000EE9AC       ORCtrls.TORCheckBox.CreateCommon
+ 0001:000EE9D8       ORCtrls.TORCheckBox.Destroy
+ 0001:000EEA1C       ORCtrls.TORCheckBox.GetImageIndexes
+ 0001:000EEA34       ORCtrls.TORCheckBox.GetImageList
+ 0001:000EEA40       ORCtrls.TORCheckBox.SetImageIndexes
+ 0001:000EEA4C       ORCtrls.TORCheckBox.SetImageList
+ 0001:000EEA58       ORCtrls.TORCheckBox.Toggle
+ 0001:000EEAE4       ORCtrls.TORCheckBox.CreateParams
+ 0001:000EEAFC       ORCtrls.TORCheckBox.CMEnabledChanged
+ 0001:000EEB14       ORCtrls.TORCheckBox.CMFontChanged
+ 0001:000EEB2C       ORCtrls.TORCheckBox.CNDrawItem
+ 0001:000EEB44       ORCtrls.TORCheckBox.CNMeasureItem
+ 0001:000EEB54       ORCtrls.TORCheckBox.GetDrawData
+ 0001:000EF0B8       ORCtrls.TORCheckBox.DrawItem
+ 0001:000EF4B4       ORCtrls.TORCheckBox.SetGrayedStyle
+ 0001:000EF4D4       ORCtrls.TORCheckBox.WMLButtonDblClk
+ 0001:000EF4E8       ORCtrls.TORCheckBox.WMSize
+ 0001:000EF50C       ORCtrls.TORCheckBox.BMSetCheck
+ 0001:000EF5FC       ORCtrls.TORCheckBox.SetWordWrap
+ 0001:000EF620       ORCtrls.TORCheckBox.SetAutoSize
+ 0001:000EF644       ORCtrls.TORCheckBox.SetBlackColorMode
+ 0001:000EF65C       ORCtrls.TORCheckBox.AutoAdjustSize
+ 0001:000EF7EC       ORCtrls.TORCheckBox.GetCaption
+ 0001:000EF800       ORCtrls.TORCheckBox.SetCaption
+ 0001:000EF86C       ORCtrls.TORCheckBox.SetAllowAllUnchecked
+ 0001:000EF878       ORCtrls.TORCheckBox.SetGroupIndex
+ 0001:000EF8A4       ORCtrls.TORCheckBox.SyncAllowAllUnchecked
+ 0001:000EF914       ORCtrls.TORCheckBox.SetParent
+ 0001:000EF928       ORCtrls.TORCheckBox.SetRadioStyle
+ 0001:000EF938       ORCtrls.TORCheckBox.SetAssociate
+ 0001:000EF970       ORCtrls.EnableCtrl
+ 0001:000EFA04       ORCtrls.TORCheckBox.UpdateAssociate
+ 0001:000EFA24       ORCtrls.TORCheckBox.Notification
+ 0001:000EFA54       ORCtrls.TORCheckBox.SetFocusOnBox
+ 0001:000EFA64       ORCtrls.TORCheckBox.BMGetCheck
+ 0001:000EFA8C       ORCtrls.TORCheckBox.BMGetState
+ 0001:000EFA90       ORCtrls.TORListView.WMNotify
+ 0001:000EFB3C       ORCtrls.TORListView.LVMSetColumn
+ 0001:000EFBD4       ORCtrls.TORListView.LVMSetColumnWidth
+ 0001:000EFC60       ORCtrls.TORComboPanelEdit.Destroy
+ 0001:000EFC94       ORCtrls.TORComboPanelEdit.Paint
+ 0001:000EFD5C       ORCtrls.TKeyClickPanel.KeyDown
+ 0001:000EFD7C       ORCtrls.TKeyClickRadioGroup.Click
+ 0001:000EFDB0       ORCtrls.TKeyClickRadioGroup.Create
+ 0001:000EFE0C       ORCtrls.TKeyClickRadioGroup.KeyDown
+ 0001:000EFE78       ORCtrls.TCaptionListBox.DoEnter
+ 0001:000EFE98       ORCtrls.TCaptionListBox.GetCaption
+ 0001:000EFEC0       ORCtrls.TCaptionListBox.GetDynamicProperty
+ 0001:000EFEE0       ORCtrls.TCaptionListBox.MoveFocusUp
+ 0001:000EFF10       ORCtrls.TCaptionListBox.MoveFocusDown
+ 0001:000EFF50       ORCtrls.TCaptionListBox.SetCaption
+ 0001:000EFFD0       ORCtrls.TCaptionListBox.SupportsDynamicProperty
+ 0001:000EFFD8       ORCtrls.TCaptionListBox.WMKeyDown
+ 0001:000F0080       ORCtrls.TCaptionListBox.WMMouseMove
+ 0001:000F0140       ORCtrls.TCaptionListBox.WMRButtonUp
+ 0001:000F026C       ORCtrls.TCaptionCheckListBox.GetCaption
+ 0001:000F0294       ORCtrls.TCaptionCheckListBox.GetDynamicProperty
+ 0001:000F02B4       ORCtrls.TCaptionCheckListBox.SetCaption
+ 0001:000F0334       ORCtrls.TCaptionCheckListBox.SupportsDynamicProperty
+ 0001:000F033C       ORCtrls.TCaptionMemo.GetCaption
+ 0001:000F0364       ORCtrls.TCaptionMemo.GetDynamicProperty
+ 0001:000F0384       ORCtrls.TCaptionMemo.SetCaption
+ 0001:000F0404       ORCtrls.TCaptionMemo.SupportsDynamicProperty
+ 0001:000F040C       ORCtrls.TCaptionEdit.GetCaption
+ 0001:000F0434       ORCtrls.TCaptionEdit.GetDynamicProperty
+ 0001:000F0454       ORCtrls.TCaptionEdit.SetCaption
+ 0001:000F04D4       ORCtrls.TCaptionEdit.SupportsDynamicProperty
+ 0001:000F04DC       ORCtrls.TCaptionRichEdit.GetDynamicProperty
+ 0001:000F0500       ORCtrls.TCaptionRichEdit.SupportsDynamicProperty
+ 0001:000F0508       ORCtrls.TCaptionTreeView.GetCaption
+ 0001:000F051C       ORCtrls.TCaptionTreeView.GetDynamicProperty
+ 0001:000F053C       ORCtrls.TCaptionTreeView.SetCaption
+ 0001:000F05C8       ORCtrls.TCaptionTreeView.SupportsDynamicProperty
+ 0001:000F05D0       ORCtrls.TCaptionComboBox.GetCaption
+ 0001:000F05F8       ORCtrls.TCaptionComboBox.GetDynamicProperty
+ 0001:000F0618       ORCtrls.TCaptionComboBox.SetCaption
+ 0001:000F0698       ORCtrls.TCaptionComboBox.SupportsDynamicProperty
+ 0001:000F06A0       ORCtrls.TORAlignSpeedButton.Paint
+ 0001:000F0714       ORCtrls.GoodNotifyWinEvent
+ 0001:000F071C       ORCtrls.TCaptionStringGrid.ColRowToIndex
+ 0001:000F0740       ORCtrls.TCaptionStringGrid.GetDynamicProperty
+ 0001:000F0764       ORCtrls.TCaptionStringGrid.KeyUp
+ 0001:000F07DC       ORCtrls.TCaptionStringGrid.SupportsDynamicProperty
+ 0001:000F07E4       ORCtrls.IsAMouseButtonDown
+ 0001:000F0818       ORCtrls.TORComboBox.SetNumForMatch
+ 0001:000F0840       ORCtrls.TORComboBox.SetUniqueAutoComplete
+ 0001:000F0848       ORCtrls.TORListBox.VerifyUnique
+ 0001:000F0988       ORCtrls.TORComboBox.SetTextAutoComplete
+ 0001:000F0A0C       ORCtrls.TCaptionListView.GetDynamicProperty
+ 0001:000F0A2C       ORCtrls.TCaptionListView.SupportsDynamicProperty
+ 0001:000F0A34       ORCtrls.Finalization
+ 0001:000F0B8C       ORFn..EFMDateTimeError
+ 0001:000F0BEC       ORFn.DateTimeToFMDateTime
+ 0001:000F0C7C       ORFn.FMDateTimeToDateTime
+ 0001:000F0EDC       ORFn.FMDateTimeOffsetBy
+ 0001:000F0F14       ORFn.TrimFormatCount
+ 0001:000F0F60       ORFn.FormatFMDateTime
+ 0001:000F14F8       ORFn.FormatFMDateTimeStr
+ 0001:000F1540       ORFn.IsFMDateTime
+ 0001:000F1618       ORFn.MakeFMDateTime
+ 0001:000F166C       ORFn.SetListFMDateTime
+ 0001:000F1784       ORFn.HigherOf
+ 0001:000F17AC       ORFn.LowerOf
+ 0001:000F17D4       ORFn.StrToFloatDef
+ 0001:000F1810       ORFn.CharAt
+ 0001:000F1858       ORFn.ContainsAlpha
+ 0001:000F18B8       ORFn.ContainsVisibleChar
+ 0001:000F1914       ORFn.ConvertSpecialStrings
+ 0001:000F199C       ORFn.UpdateCrc32
+ 0001:000F1A00       ORFn.CRCForFile
+ 0001:000F1AB0       ORFn.CRCForStrings
+ 0001:000F1BA8       ORFn.FilteredString
+ 0001:000F1DC4       ORFn.ExtractInteger
+ 0001:000F1EA4       ORFn.ExtractFloat
+ 0001:000F1F90       ORFn.ExtractDefault
+ 0001:000F20D4       ORFn.ExtractItems
+ 0001:000F220C       ORFn.ExtractText
+ 0001:000F2344       ORFn.InvertStringList
+ 0001:000F2394       ORFn.MixedCase
+ 0001:000F2484       ORFn.MixedCaseList
+ 0001:000F2514       ORFn.MixedCaseByPiece
+ 0001:000F25D8       ORFn.Piece
+ 0001:000F2600       ORFn.Pieces
+ 0001:000F262C       ORFn.ComparePieces
+ 0001:000F276C       ORFn.PiecesToList
+ 0001:000F2820       ORFn.ReverseStr
+ 0001:000F28AC       ORFn.SetPiece
+ 0001:000F29D0       ORFn.SetPieces
+ 0001:000F2A88       ORFn.SortByPiece
+ 0001:000F2BDC       ORFn.DelimCount
+ 0001:000F2CA8       ORFn..QuickCopyError
+ 0001:000F2D04       ORFn.GetStrings
+ 0001:000F3010       ORFn.QuickCopy
+ 0001:000F3140       ORFn..QuickAddError
+ 0001:000F319C       ORFn.GetStrings
+ 0001:000F34A4       ORFn.QuickAdd
+ 0001:000F3574       ORFn.FastAssign
+ 0001:000F36AC       ORFn.FastAddStrings
+ 0001:000F376C       ORFn.ValidFileName
+ 0001:000F37D8       ORFn.LimitStringLength
+ 0001:000F39A4       ORFn.InfoBox
+ 0001:000F39E8       ORFn.LimitEditWidth
+ 0001:000F3B40       ORFn.BaseFont
+ 0001:000F3B54       ORFn.MainFont
+ 0001:000F3B88       ORFn.MainFontSize
+ 0001:000F3BA0       ORFn.FontWidthSubPixel
+ 0001:000F3C18       ORFn.FontWidthPixel
+ 0001:000F3C44       ORFn.MainFontWidth
+ 0001:000F3C5C       ORFn.MainFontHeight
+ 0001:000F3C78       ORFn.RedrawSuspend
+ 0001:000F3C94       ORFn.RedrawActivate
+ 0001:000F3CBC       ORFn.ResetSelectedForList
+ 0001:000F3CFC       ORFn.ResizeWidth
+ 0001:000F3D44       ORFn.ResizeHeight
+ 0001:000F3DA0       ORFn.ResizeToFont
+ 0001:000F3E20       ORFn.ResizeHeaderControl
+ 0001:000F3E90       ORFn.ResizeListView
+ 0001:000F3F14       ORFn.ResizeComboBox
+ 0001:000F3F4C       ORFn.ResizeListBox
+ 0001:000F3F80       ORFn.ResizeCheckListBox
+ 0001:000F3FB4       ORFn.ResizeDescendants
+ 0001:000F4358       ORFn.ResizeChartFonts
+ 0001:000F453C       ORFn.ResizeFontsInDescendants
+ 0001:000F46C4       ORFn.ForceInsideWorkArea
+ 0001:000F47A8       ORFn.AnchorsToStr
+ 0001:000F481C       ORFn.StrToAnchors
+ 0001:000F48DC       ORFn.SuspendAlign
+ 0001:000F49BC       ORFn.RestoreAlign
+ 0001:000F4AA0       ORFn.ResizeFormToFont
+ 0001:000F4C40       ORFn.ResizeAnchoredFormToFont
+ 0001:000F4DC4       ORFn.AdjustForWindowsXPStyleTitleBar
+ 0001:000F4E98       ORFn.SetEqualTabStops
+ 0001:000F4F78       ORFn.StatusText
+ 0001:000F4FC8       ORFn.ShowMsgOn
+ 0001:000F4FF8       ORFn.TextWidthByFont
+ 0001:000F50BC       ORFn.TextHeightByFont
+ 0001:000F5190       ORFn.WrappedTextHeightByFont
+ 0001:000F5318       ORFn.NumCharsFitInWidth
+ 0001:000F5478       ORFn.PopupComponent
+ 0001:000F54CC       ORFn.ReformatMemoParagraph
+ 0001:000F571C       ORFn.CheckColorScheme
+ 0001:000F5854       ORFn.BlackColorScheme
+ 0001:000F5874       ORFn.NormalColorScheme
+ 0001:000F5894       ORFn.Get508CompliantColor
+ 0001:000F592C       ORFn.BlackColorSchemeUpdate
+ 0001:000F5AAC       ORFn.ComponentUpdateColorsFor508Compliance
+ 0001:000F5B48       ORFn.ScanAllComponents
+ 0001:000F5BF0       ORFn.UpdateColorsFor508Compliance
+ 0001:000F5C20       ORFn.UpdateReadOnlyColorScheme
+ 0001:000F5C7C       ORFn.ListGridDrawCell
+ 0001:000F5D50       ORFn.ListGridDrawLines
+ 0001:000F5E6C       ORFn.KillObj
+ 0001:000F5F4C       ORFn.menuHideAllBut
+ 0001:000F5FEC       ORFn.TabIsPressed
+ 0001:000F603C       ORFn.ShiftTabIsPressed
+ 0001:000F608C       ORFn.EnterIsPressed
+ 0001:000F60A4       ORFn.Finalization
+ 0001:000F6128       ORSystem.FileLastWrite
+ 0001:000F618C       ORSystem.AppOutOfDate
+ 0001:000F64F8       ORSystem.ClientVersion
+ 0001:000F6638       ORSystem.CompareVersion
+ 0001:000F6790       ORSystem.FullToFilePart
+ 0001:000F681C       ORSystem.FullToPathPart
+ 0001:000F68BC       ORSystem.ParamIndex
+ 0001:000F6988       ORSystem.ParamSearch
+ 0001:000F6AD8       ORSystem.QuotedExeName
+ 0001:000F6B9C       ORSystem.RegReadStr
+ 0001:000F6C50       ORSystem.RegReadBool
+ 0001:000F6D00       ORSystem.UserRegReadDateTime
+ 0001:000F6DD8       ORSystem.RunProgram
+ 0001:000F6E20       ORSystem.UpdateSelf
+ 0001:000F6F30       ORSystem.BorlandDLLVersionOK
+ 0001:000F7228       OR2006Compatibility..Tfrm2006Compatibility
+ 0001:000F73CC       OR2006Compatibility.Tfrm2006Compatibility.CreateNew
+ 0001:000F7594       OleServer..TServerEventDispatch
+ 0001:000F7648       OleServer..TOleServer
+ 0001:000F7798       OleServer.TServerEventDispatch.Create
+ 0001:000F77C4       OleServer.TServerEventDispatch.QueryInterface
+ 0001:000F7828       OleServer.TServerEventDispatch._AddRef
+ 0001:000F7848       OleServer.TServerEventDispatch._Release
+ 0001:000F7868       OleServer.TServerEventDispatch.GetTypeInfoCount
+ 0001:000F7878       OleServer.TServerEventDispatch.GetTypeInfo
+ 0001:000F788C       OleServer.TServerEventDispatch.GetIDsOfNames
+ 0001:000F7898       OleServer.TServerEventDispatch.Invoke
+ 0001:000F7A38       OleServer.TServerEventDispatch.ServerDisconnect
+ 0001:000F7A48       OleServer.TOleServer.Create
+ 0001:000F7A9C       OleServer.TOleServer.Destroy
+ 0001:000F7AEC       OleServer.TOleServer.Loaded
+ 0001:000F7B10       OleServer.TOleServer.InvokeEvent
+ 0001:000F7B14       OleServer.TOleServer.GetServer
+ 0001:000F7C6C       OleServer.TOleServer.ConnectEvents
+ 0001:000F7C88       OleServer.TOleServer.DisconnectEvents
+ 0001:000F7C98       OleServer.TOleServer.GetConnectKind
+ 0001:000F7CAC       OleServer.TOleServer.SetConnectKind
+ 0001:000F7CB0       OleServer.TOleServer.GetAutoConnect
+ 0001:000F7CC8       OleServer.TOleServer.SetAutoConnect
+ 0001:000F7CCC       OleServer.TOleServer.QueryInterface
+ 0001:000F7CF4       OleServer.TOleServer._AddRef
+ 0001:000F7D04       OleServer.TOleServer._Release
+ 0001:000F7D14       OleServer.Finalization
+ 0001:000F7D44       oleacc2..CoCAccPropServices
+ 0001:000F7DA4       oleacc2.CoCAccPropServices.Create
+ 0001:000F7E08       VA508MSAASupport..TImageEventData
+ 0001:000F7E64       VA508MSAASupport..TListProcData
+ 0001:000F7EC0       VA508MSAASupport..TProcData
+ 0001:000F8024       VA508MSAASupport..TMSAAServer
+ 0001:000F807C       VA508MSAASupport.NotifyEvent
+ 0001:000F8128       VA508MSAASupport.IncAccServices
+ 0001:000F81C4       VA508MSAASupport.DecAccServices
+ 0001:000F81E8       VA508MSAASupport.Cleanup
+ 0001:000F8208       VA508MSAASupport.FindServer
+ 0001:000F82C4       VA508MSAASupport.RegisterComponentImageListQueryEvent
+ 0001:000F83B4       VA508MSAASupport.UnregisterComponentImageListQueryEvent
+ 0001:000F8480       VA508MSAASupport.RegisterMSAAComponentQueryProc
+ 0001:000F8568       VA508MSAASupport.UnregisterMSAAComponentQueryProc
+ 0001:000F8624       VA508MSAASupport.RegisterMSAAComponentListQueryProc
+ 0001:000F870C       VA508MSAASupport.UnregisterMSAAComponentListQueryProc
+ 0001:000F87C8       VA508MSAASupport.TMSAAServer.AddImageEvent
+ 0001:000F8830       VA508MSAASupport.TMSAAServer.AddListProc
+ 0001:000F8868       VA508MSAASupport.TMSAAServer.AddProc
+ 0001:000F88A0       VA508MSAASupport.TMSAAServer.AssignServerType
+ 0001:000F88C0       VA508MSAASupport.TMSAAServer.Attach
+ 0001:000F8918       VA508MSAASupport.TMSAAServer.Create
+ 0001:000F8978       VA508MSAASupport.TMSAAServer.Destroy
+ 0001:000F89B4       VA508MSAASupport.TMSAAServer.Detatch
+ 0001:000F8A18       VA508MSAASupport.TMSAAServer.EventCount
+ 0001:000F8A20       VA508MSAASupport.TMSAAServer.ImageEventIndex
+ 0001:000F8A7C       VA508MSAASupport.TMSAAServer.ListProcIndex
+ 0001:000F8ACC       VA508MSAASupport.TMSAAServer.GetComponent
+ 0001:000F8AD0       VA508MSAASupport.Append
+ 0001:000F8B88       VA508MSAASupport.GetImageLabelText
+ 0001:000F8C1C       VA508MSAASupport.DoTreeView
+ 0001:000F8D5C       VA508MSAASupport.DoListView
+ 0001:000F9078       VA508MSAASupport.DoListComponent
+ 0001:000F90E4       VA508MSAASupport.DoNormalComponent
+ 0001:000F914C       VA508MSAASupport.HasProperty
+ 0001:000F9174       VA508MSAASupport.NoProperty
+ 0001:000F9190       VA508MSAASupport.TMSAAServer.GetPropValue
+ 0001:000F9350       VA508MSAASupport.TMSAAServer.Hook
+ 0001:000F9370       VA508MSAASupport.TMSAAServer.RemoveImageEvent
+ 0001:000F93A0       VA508MSAASupport.TMSAAServer.RemoveListProc
+ 0001:000F93C4       VA508MSAASupport.TMSAAServer.RemoveProc
+ 0001:000F93E8       VA508MSAASupport.TMSAAServer.ValidateServerType
+ 0001:000F945C       VA508MSAASupport.TMSAAServer.UnassignServerType
+ 0001:000F9480       VA508MSAASupport.TMSAAServer.UnHook
+ 0001:000F9490       VA508MSAASupport.TMSAAServer.MSAAWindowProc
+ 0001:000F94B8       VA508MSAASupport.TMSAAServer.ProcIndex
+ 0001:000F9524       VA508MSAASupport.Finalization
+ 0001:000F9564       DateUtils.DaysInAMonth
+ 0001:000F959C       DateUtils.DayOfTheWeek
+ 0001:000F95C8       DateUtils.DaysBetween
+ 0001:000F95E8       DateUtils.SecondsBetween
+ 0001:000F9618       DateUtils.MilliSecondsBetween
+ 0001:000F9648       DateUtils.SpanOfNowAndThen
+ 0001:000F967C       DateUtils.DaySpan
+ 0001:000F96A0       DateUtils.SecondSpan
+ 0001:000F96D0       DateUtils.MilliSecondSpan
+ 0001:000F9700       DateUtils.IncDay
+ 0001:000F971C       DateUtils.IncSecond
+ 0001:000F9748       VA508AccessibilityRouter..TVA508ScreenReader
+ 0001:000F97C4       VA508AccessibilityRouter..TNullScreenReader
+ 0001:000F9840       VA508AccessibilityRouter..TMasterScreenReader
+ 0001:000F98BC       VA508AccessibilityRouter.VA508RouterInitProc
+ 0001:000F98F8       VA508AccessibilityRouter.GetScreenReader
+ 0001:000F9940       VA508AccessibilityRouter.PostScreenReaderCheckEvent
+ 0001:000F9C3C       VA508AccessibilityRouter.CreateTimer
+ 0001:000F9CA0       VA508AccessibilityRouter.ScreenReaderSystemActive
+ 0001:000F9D80       VA508AccessibilityRouter.SpecifyFormIsNotADialog
+ 0001:000F9E84       VA508AccessibilityRouter.TMasterScreenReader.AddComponentDataNeededEventHandler
+ 0001:000F9E98       VA508AccessibilityRouter.TMasterScreenReader.Create
+ 0001:000F9EFC       VA508AccessibilityRouter.Decode
+ 0001:000F9F9C       VA508AccessibilityRouter.TMasterScreenReader.DecodeBehavior
+ 0001:000FA074       VA508AccessibilityRouter.TMasterScreenReader.Destroy
+ 0001:000FA0B8       VA508AccessibilityRouter.Coded
+ 0001:000FA190       VA508AccessibilityRouter.TMasterScreenReader.EncodeBehavior
+ 0001:000FA230       VA508AccessibilityRouter.TMasterScreenReader.HandleSRException
+ 0001:000FA2A4       VA508AccessibilityRouter.TMasterScreenReader.ProcessCustomKeyCommand
+ 0001:000FA2D0       VA508AccessibilityRouter.TMasterScreenReader.RegisterClassAsMSAA
+ 0001:000FA334       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomBehavior
+ 0001:000FA448       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomClassBehavior
+ 0001:000FA4C0       VA508AccessibilityRouter.EnumResNameProc
+ 0001:000FA514       VA508AccessibilityRouter.EnsureDialogAreSpecified
+ 0001:000FA74C       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomData
+ 0001:000FA89C       VA508AccessibilityRouter.AddDescription
+ 0001:000FA9CC       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomKeyMapping
+ 0001:000FAAAC       VA508AccessibilityRouter.TMasterScreenReader.RegisterDictionaryChange
+ 0001:000FAB14       VA508AccessibilityRouter.TMasterScreenReader.RegistrationAllowed
+ 0001:000FAB2C       VA508AccessibilityRouter.TMasterScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:000FAB40       VA508AccessibilityRouter.TMasterScreenReader.Speak
+ 0001:000FABE4       VA508AccessibilityRouter.ComponentDataRequested
+ 0001:000FAD14       VA508AccessibilityRouter.TNullScreenReader.AddComponentDataNeededEventHandler
+ 0001:000FAD1C       VA508AccessibilityRouter.TNullScreenReader.RegisterClassAsMSAA
+ 0001:000FAD44       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomClassBehavior
+ 0001:000FAD6C       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomKeyMapping
+ 0001:000FADB4       VA508AccessibilityRouter.TNullScreenReader.RegisterDictionaryChange
+ 0001:000FADDC       VA508AccessibilityRouter.TNullScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:000FADE4       VA508AccessibilityRouter.TNullScreenReader.Speak
+ 0001:000FAE0C       VA508AccessibilityRouter.Finalization
+ 0001:000FAE78       VA508ScreenReaderDLLLinker.ClearProcPointers
+ 0001:000FAEB8       VA508ScreenReaderDLLLinker.InitializeScreenReaderLink
+ 0001:000FAEF4       VA508ScreenReaderDLLLinker.CloseScreenReaderLink
+ 0001:000FAF1C       VA508ScreenReaderDLLLinker.LoadScreenReader
+ 0001:000FB088       VA508ScreenReaderDLLLinker.CheckRunning
+ 0001:000FB0D4       VA508ScreenReaderDLLLinker.CheckProcs
+ 0001:000FB284       VA508ScreenReaderDLLLinker.CheckFile
+ 0001:000FB36C       VA508ScreenReaderDLLLinker.ScanScreenReaders
+ 0001:000FB520       VA508ScreenReaderDLLLinker.FindScreenReaders
+ 0001:000FB5E4       VA508ScreenReaderDLLLinker.ScreenReaderDLLsExist
+ 0001:000FB5FC       VA508ScreenReaderDLLLinker.IsScreenReaderSupported
+ 0001:000FB688       VA508ScreenReaderDLLLinker.Finalization
+ 0001:000FB6EC       Calendar..TCalendar
+ 0001:000FBE10       Calendar.TCalendar.Create
+ 0001:000FBEC0       Calendar.TCalendar.Change
+ 0001:000FBEE0       Calendar.TCalendar.Click
+ 0001:000FBF54       Calendar.TCalendar.IsLeapYear
+ 0001:000FBF90       Calendar.TCalendar.DaysPerMonth
+ 0001:000FBFC0       Calendar.TCalendar.DaysThisMonth
+ 0001:000FBFEC       Calendar.TCalendar.DrawCell
+ 0001:000FC09C       Calendar.TCalendar.GetCellText
+ 0001:000FC110       Calendar.TCalendar.SelectCell
+ 0001:000FC18C       Calendar.TCalendar.SetCalendarDate
+ 0001:000FC1C0       Calendar.TCalendar.GetDateElement
+ 0001:000FC20C       Calendar.TCalendar.SetDateElement
+ 0001:000FC2C4       Calendar.TCalendar.SetStartOfWeek
+ 0001:000FC2E4       Calendar.TCalendar.SetUseCurrentDate
+ 0001:000FC314       Calendar.TCalendar.ChangeMonth
+ 0001:000FC408       Calendar.TCalendar.PrevMonth
+ 0001:000FC414       Calendar.TCalendar.NextMonth
+ 0001:000FC420       Calendar.TCalendar.UpdateCalendar
+ 0001:000FC51C       Calendar.TCalendar.WMSize
+ 0001:000FC560       WideStrings.CharNextW95
+ 0001:000FC570       WideStrings.InitCharNextWFunc
+ 0001:000FC590       WideStrings.Finalization
+ 0001:000FC5E0       FMTBcd..EBcdException
+ 0001:000FC63C       FMTBcd..EBcdOverflowException
+ 0001:000FC6A0       FMTBcd.EmptyBcd
+ 0001:000FC6A8       FMTBcd.PutTwoBcdDigits
+ 0001:000FC6C8       FMTBcd.GetBcdDigit
+ 0001:000FC6FC       FMTBcd.PutCurrencyDigit
+ 0001:000FC720       FMTBcd..TFMTBcdVariantType
+ 0001:000FC7D4       FMTBcd..TFMTBcdData
+ 0001:000FC910       FMTBcd.BcdErrorFmt
+ 0001:000FC980       FMTBcd.BcdError
+ 0001:000FC998       FMTBcd.OverflowError
+ 0001:000FC9B0       FMTBcd.TFMTBcdData.DoAdd
+ 0001:000FC9E4       FMTBcd.TFMTBcdData.DoAdd
+ 0001:000FC9F0       FMTBcd.TFMTBcdData.DoSubtract
+ 0001:000FCA24       FMTBcd.TFMTBcdData.DoSubtract
+ 0001:000FCA30       FMTBcd.TFMTBcdData.DoMultiply
+ 0001:000FCA64       FMTBcd.TFMTBcdData.DoDivide
+ 0001:000FCA98       FMTBcd.TFMTBcdData.Compare
+ 0001:000FCAB0       FMTBcd.TFMTBcdData.GetAsString
+ 0001:000FCAC4       FMTBcd.TFMTBcdData.GetAsDouble
+ 0001:000FCB1C       FMTBcd.TFMTBcdData.GetAsInteger
+ 0001:000FCB6C       FMTBcd.TFMTBcdData.GetAsSmallInt
+ 0001:000FCB78       FMTBcd.TFMTBcdData.GetAsCurrency
+ 0001:000FCB8C       FMTBcd.TFMTBcdData.SetAsString
+ 0001:000FCBB4       FMTBcd.TFMTBcdData.SetAsDouble
+ 0001:000FCC24       FMTBcd.TFMTBcdData.SetAsInteger
+ 0001:000FCC8C       FMTBcd.TFMTBcdData.SetAsSmallInt
+ 0001:000FCC98       FMTBcd.TFMTBcdData.SetAsCurrency
+ 0001:000FCCB8       FMTBcd.TFMTBcdData.Create
+ 0001:000FCD00       FMTBcd.TFMTBcdData.Create
+ 0001:000FCDF4       FMTBcd.TFMTBcdData.Create
+ 0001:000FCEA4       FMTBcd.TFMTBcdData.Create
+ 0001:000FCEE0       FMTBcd.TFMTBcdVariantType.Clear
+ 0001:000FCEF0       FMTBcd.TFMTBcdVariantType.Cast
+ 0001:000FD028       FMTBcd.TFMTBcdVariantType.CastTo
+ 0001:000FD154       FMTBcd.TFMTBcdVariantType.Copy
+ 0001:000FD1A0       FMTBcd.TFMTBcdVariantType.BinaryOp
+ 0001:000FD1F4       FMTBcd.TFMTBcdVariantType.GetInstance
+ 0001:000FD1F8       FMTBcd.TFMTBcdVariantType.Compare
+ 0001:000FD218       FMTBcd.StrToBcd
+ 0001:000FD274       FMTBcd.BcdToDouble
+ 0001:000FD2CC       FMTBcd.RoundChar
+ 0001:000FD334       FMTBcd.RoundAt
+ 0001:000FD5B0       FMTBcd.LeftTrim
+ 0001:000FD5FC       FMTBcd.CompareDigits
+ 0001:000FD6C0       FMTBcd.GetValueAndMultiplyOrder
+ 0001:000FD874       FMTBcd.AddChars
+ 0001:000FD8E0       FMTBcd.SubtractChars
+ 0001:000FD930       FMTBcd.AddStrings
+ 0001:000FDA90       FMTBcd.SubtractStrings
+ 0001:000FDC90       FMTBcd._ShortMultiply
+ 0001:000FDE70       FMTBcd.StringMultiplyByByte
+ 0001:000FDF54       FMTBcd._LongMultiply
+ 0001:000FE1F0       FMTBcd.CanUseShort
+ 0001:000FE334       FMTBcd.BlankArgument
+ 0001:000FE3C4       FMTBcd._Multiply
+ 0001:000FE428       FMTBcd.NextDigit
+ 0001:000FE4E8       FMTBcd.AdjustDecimalPosition
+ 0001:000FE6FC       FMTBcd.ValueOverOne
+ 0001:000FE9A4       FMTBcd._LongDivide
+ 0001:000FEC0C       FMTBcd._Divide
+ 0001:000FED28       FMTBcd.InvalidBcdString
+ 0001:000FEE10       FMTBcd.ReverseNegative
+ 0001:000FEE1C       FMTBcd.ZeroBcd
+ 0001:000FEE38       FMTBcd.TryStrToBcd
+ 0001:000FF118       FMTBcd.SignificantIntDigits
+ 0001:000FF164       FMTBcd.AddSubtractNormalizedFractions
+ 0001:000FF284       FMTBcd.SubtractNormalizedFractions
+ 0001:000FF28C       FMTBcd.AddNormalizedFractions
+ 0001:000FF294       FMTBcd.CompareNormalizedFractions
+ 0001:000FF38C       FMTBcd.MoveBytesToRight
+ 0001:000FF3E8       FMTBcd.MoveNibblesToRight
+ 0001:000FF470       FMTBcd.LoadNibbleArray
+ 0001:000FF510       FMTBcd.CompareSignificantFractions
+ 0001:000FF5C4       FMTBcd.MoveNibblesToLeft
+ 0001:000FF6B8       FMTBcd.NormalizeBcd
+ 0001:000FF81C       FMTBcd.NumberOfDigits
+ 0001:000FF83C       FMTBcd.CompactBcd
+ 0001:000FF8D4       FMTBcd.AdjustNibbles
+ 0001:000FF93C       FMTBcd.NormalizeBcdPair
+ 0001:000FFA84       FMTBcd.BcdCompare
+ 0001:000FFB10       FMTBcd.BcdSubtract
+ 0001:000FFB4C       FMTBcd.BcdMultiply
+ 0001:000FFC40       FMTBcd.BcdMultiply
+ 0001:000FFCAC       FMTBcd.BcdDivide
+ 0001:000FFE08       FMTBcd.BcdDivide
+ 0001:000FFE74       FMTBcd.BcdAdd
+ 0001:000FFFA4       FMTBcd.BcdToStr
+ 0001:001001C0       FMTBcd.BcdScale
+ 0001:001001CC       FMTBcd.IsBcdNegative
+ 0001:001001D4       FMTBcd.GetNextByte
+ 0001:00100230       FMTBcd.CurrToBCD
+ 0001:001003A4       FMTBcd.BCDToCurr
+ 0001:001004A0       FMTBcd.Finalization
+ 0001:001004DC       SqlTimSt..TSQLTimeStampVariantType
+ 0001:00100598       SqlTimSt..TSQLTimeStampData
+ 0001:0010075C       SqlTimSt.IsSQLTimeStampBlank
+ 0001:00100794       SqlTimSt.TSQLTimeStampData.GetIsBlank
+ 0001:001007A0       SqlTimSt.TSQLTimeStampData.AdjustMonths
+ 0001:001007D4       SqlTimSt.TSQLTimeStampData.AdjustDays
+ 0001:0010082C       SqlTimSt.TSQLTimeStampData.AdjustHours
+ 0001:00100874       SqlTimSt.TSQLTimeStampData.AdjustMinutes
+ 0001:001008BC       SqlTimSt.TSQLTimeStampData.AdjustSeconds
+ 0001:00100904       SqlTimSt.TSQLTimeStampData.AdjustDate
+ 0001:00100970       SqlTimSt.TSQLTimeStampData.DaysInMonth
+ 0001:00100988       SqlTimSt.TSQLTimeStampData.DoSubtract
+ 0001:001009C8       SqlTimSt.TSQLTimeStampData.DoAdd
+ 0001:00100A1C       SqlTimSt.TSQLTimeStampData.Compare
+ 0001:00100A9C       SqlTimSt.TSQLTimeStampData.GetAsString
+ 0001:00100AB4       SqlTimSt.TSQLTimeStampData.GetAsDateTime
+ 0001:00100ACC       SqlTimSt.TSQLTimeStampData.SetAsString
+ 0001:00100AF0       SqlTimSt.TSQLTimeStampData.SetAsDateTime
+ 0001:00100B1C       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100B78       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100BD0       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100C20       SqlTimSt.TSQLTimeStampData.Create
+ 0001:00100C5C       SqlTimSt.TSQLTimeStampData.SetDay
+ 0001:00100C64       SqlTimSt.TSQLTimeStampData.SetFractions
+ 0001:00100C68       SqlTimSt.TSQLTimeStampData.SetHour
+ 0001:00100C70       SqlTimSt.TSQLTimeStampData.SetMinute
+ 0001:00100C78       SqlTimSt.TSQLTimeStampData.SetMonth
+ 0001:00100C80       SqlTimSt.TSQLTimeStampData.SetSecond
+ 0001:00100C88       SqlTimSt.TSQLTimeStampData.SetYear
+ 0001:00100C90       SqlTimSt.TSQLTimeStampVariantType.Clear
+ 0001:00100CA0       SqlTimSt.TSQLTimeStampVariantType.Cast
+ 0001:00100DCC       SqlTimSt.TSQLTimeStampVariantType.CastTo
+ 0001:00100EF4       SqlTimSt.TSQLTimeStampVariantType.Copy
+ 0001:00100F40       SqlTimSt.TSQLTimeStampVariantType.GetInstance
+ 0001:00100F44       SqlTimSt.TSQLTimeStampVariantType.BinaryOp
+ 0001:00100F78       SqlTimSt.TSQLTimeStampVariantType.Compare
+ 0001:00100F98       SqlTimSt.SQLTimeStampToStr
+ 0001:00100FD4       SqlTimSt.IsSqlTimeStampValid
+ 0001:00101014       SqlTimSt.TryStrToSQLTimeStamp
+ 0001:00101060       SqlTimSt.StrToSQLTimeStamp
+ 0001:001010CC       SqlTimSt.DateTimeToSQLTimeStamp
+ 0001:00101114       SqlTimSt.SQLTimeStampToDateTime
+ 0001:0010119C       SqlTimSt.CheckSqlTimeStamp
+ 0001:001012A8       SqlTimSt.Finalization
+ 0001:001016AC       DB..TDefaultDBScreenApplication
+ 0001:00101728       DB.TDefaultDBScreenApplication.GetCursor
+ 0001:00101730       DB.TDefaultDBScreenApplication.GetTitle
+ 0001:00101744       DB.TDefaultDBScreenApplication.ProcessMessages
+ 0001:00101748       DB.TDefaultDBScreenApplication.SetCursor
+ 0001:0010174C       DB.TDefaultDBScreenApplication.SetTitle
+ 0001:00101760       DB.Finalization
+ 0001:00101814       DBPWDlg..TPasswordDialog
+ 0001:00101AAC       DBPWDlg.PasswordDialog
+ 0001:00101B20       DBPWDlg.TPasswordDialog.EditChange
+ 0001:00101BA8       DBPWDlg.TPasswordDialog.AddButtonClick
+ 0001:00101C20       DBPWDlg.TPasswordDialog.RemoveButtonClick
+ 0001:00101C90       DBPWDlg.TPasswordDialog.RemoveAllButtonClick
+ 0001:00101CB0       DBPWDlg.TPasswordDialog.OKButtonClick
+ 0001:00101D04       DBPWDlg.Finalization
+ 0001:00101D40       DBLogDlg..TLoginDialog
+ 0001:00101F94       DBLogDlg.LoginDialog
+ 0001:001020AC       DBLogDlg.LoginDialogEx
+ 0001:001021DC       DBLogDlg.RemoteLoginDialog
+ 0001:0010239C       DBLogDlg.TLoginDialog.FormShow
+ 0001:001023E4       DBLogDlg.SetCursorType
+ 0001:001023F4       DBLogDlg.Finalization
+ 0001:001024F4       DBCtrls..TVCLScreenApplication
+ 0001:00102558       DBCtrls.TVCLScreenApplication.GetCursor
+ 0001:00102584       DBCtrls.TVCLScreenApplication.GetTitle
+ 0001:00102598       DBCtrls.TVCLScreenApplication.ProcessMessages
+ 0001:001025A8       DBCtrls.TVCLScreenApplication.SetCursor
+ 0001:001025E8       DBCtrls.TVCLScreenApplication.SetTitle
+ 0001:00102674       DBCtrls.Finalization
+ 0001:001026B8       VA508DelphiCompatibility..TVA508StaticTextManager
+ 0001:0010276C       VA508DelphiCompatibility..TCheckBox508Manager
+ 0001:0010281C       VA508DelphiCompatibility..TCheckListBox508Manager
+ 0001:001028D0       VA508DelphiCompatibility..TVA508EditManager
+ 0001:00102980       VA508DelphiCompatibility..TVA508ComboManager
+ 0001:00102A30       VA508DelphiCompatibility..TCustomGrid508Manager
+ 0001:00102AE4       VA508DelphiCompatibility.Append
+ 0001:00102B80       VA508DelphiCompatibility.AppendHeader
+ 0001:00102BF8       VA508DelphiCompatibility.ListViewIndexQueryProc
+ 0001:00102DA8       VA508DelphiCompatibility.RegisterStandardDelphiComponents
+ 0001:00102F0C       VA508DelphiCompatibility.CustomComboAlternateHandle
+ 0001:00102F14       VA508DelphiCompatibility.GetCheckBoxComponentName
+ 0001:00102F6C       VA508DelphiCompatibility.GetCheckBoxInstructionMessage
+ 0001:00102FE0       VA508DelphiCompatibility.GetCheckBoxStateText
+ 0001:00103064       VA508DelphiCompatibility.TCheckBox508Manager.Create
+ 0001:001030B0       VA508DelphiCompatibility.TCheckBox508Manager.GetComponentName
+ 0001:001030C8       VA508DelphiCompatibility.TCheckBox508Manager.GetInstructions
+ 0001:001030E4       VA508DelphiCompatibility.TCheckBox508Manager.GetState
+ 0001:001030FC       VA508DelphiCompatibility.TCheckListBox508Manager.Create
+ 0001:00103148       VA508DelphiCompatibility.TCheckListBox508Manager.GetComponentName
+ 0001:001031B0       VA508DelphiCompatibility.TCheckListBox508Manager.GetItemInstructions
+ 0001:001031E0       VA508DelphiCompatibility.TCheckListBox508Manager.GetIndex
+ 0001:00103214       VA508DelphiCompatibility.TCheckListBox508Manager.GetItem
+ 0001:00103240       VA508DelphiCompatibility.TCheckListBox508Manager.GetState
+ 0001:00103270       VA508DelphiCompatibility.TCustomGrid508Manager.Create
+ 0001:001032BC       VA508DelphiCompatibility.TCustomGrid508Manager.GetComponentName
+ 0001:001032E0       VA508DelphiCompatibility.TCustomGrid508Manager.GetInstructions
+ 0001:0010336C       VA508DelphiCompatibility.TCustomGrid508Manager.GetItem
+ 0001:001033A0       VA508DelphiCompatibility.TCustomGrid508Manager.GetValue
+ 0001:00103608       VA508DelphiCompatibility.TVA508StaticTextManager.Create
+ 0001:00103654       VA508DelphiCompatibility.TVA508StaticTextManager.GetCaption
+ 0001:00103674       VA508DelphiCompatibility.TVA508StaticTextManager.GetComponentName
+ 0001:00103698       VA508DelphiCompatibility.TVA508StaticTextManager.GetValue
+ 0001:0010371C       VA508DelphiCompatibility.TVA508EditManager.Create
+ 0001:00103768       VA508DelphiCompatibility.TVA508EditManager.GetValue
+ 0001:0010377C       VA508DelphiCompatibility.TVA508ComboManager.Create
+ 0001:001037C8       VA508DelphiCompatibility.TVA508ComboManager.GetValue
+ 0001:001037DC       VA508DelphiCompatibility.Finalization
+ 0001:0010380C       VA508ImageListLabeler..TVA508ImageListLabel
+ 0001:0010394C       VA508ImageListLabeler..TVA508ImageListLabels
+ 0001:00103A30       VA508ImageListLabeler..TVA508ImageListComponent
+ 0001:00103B1C       VA508ImageListLabeler..TVA508ImageListComponents
+ 0001:00103BF8       VA508ImageListLabeler..TVA508ImageListLabeler
+ 0001:00103D5C       VA508ImageListLabeler.TVA508ImageListLabeler.ComponentImageListChanged
+ 0001:00103D64       VA508ImageListLabeler.TVA508ImageListLabeler.Create
+ 0001:00103E08       VA508ImageListLabeler.TVA508ImageListLabeler.Destroy
+ 0001:00103E70       VA508ImageListLabeler.TVA508ImageListLabeler.ImageIndexQuery
+ 0001:00103F28       VA508ImageListLabeler.TVA508ImageListLabeler.ImageListChange
+ 0001:00103FC8       VA508ImageListLabeler.TVA508ImageListLabeler.ItemChanged
+ 0001:00103FE8       VA508ImageListLabeler.TVA508ImageListLabeler.Loaded
+ 0001:00104010       VA508ImageListLabeler.TVA508ImageListLabeler.SaveChanges
+ 0001:00104160       VA508ImageListLabeler.TVA508ImageListLabeler.Notification
+ 0001:0010418C       VA508ImageListLabeler.TVA508ImageListLabeler.SetImageList
+ 0001:0010432C       VA508ImageListLabeler.TVA508ImageListLabeler.SetRemoteLabeler
+ 0001:00104354       VA508ImageListLabeler.TVA508ImageListLabels.Add
+ 0001:00104360       VA508ImageListLabeler.TVA508ImageListLabels.Create
+ 0001:00104450       VA508ImageListLabeler.TVA508ImageListLabels.Destroy
+ 0001:00104494       VA508ImageListLabeler.TVA508ImageListLabels.GetAttr
+ 0001:001044B0       VA508ImageListLabeler.TVA508ImageListLabels.GetAttrCount
+ 0001:001044BC       VA508ImageListLabeler.TVA508ImageListLabels.GetImageData
+ 0001:00104530       VA508ImageListLabeler.TVA508ImageListLabels.GetItem
+ 0001:00104544       VA508ImageListLabeler.TVA508ImageListLabels.GetItemAttr
+ 0001:00104608       VA508ImageListLabeler.TVA508ImageListLabels.GetOverlayData
+ 0001:00104680       VA508ImageListLabeler.TVA508ImageListLabels.GetOwner
+ 0001:00104684       VA508ImageListLabeler.TVA508ImageListLabels.Notify
+ 0001:00104698       VA508ImageListLabeler.TVA508ImageListLabels.ResetData
+ 0001:001046B4       VA508ImageListLabeler.TVA508ImageListLabels.Update
+ 0001:001046C8       VA508ImageListLabeler.TVA508ImageListLabel.Assign
+ 0001:00104704       VA508ImageListLabeler.TVA508ImageListLabel.Changed
+ 0001:00104718       VA508ImageListLabeler.TVA508ImageListLabel.Create
+ 0001:0010475C       VA508ImageListLabeler.TVA508ImageListLabel.Destroy
+ 0001:00104784       VA508ImageListLabeler.TVA508ImageListLabel.Labeler
+ 0001:001047A0       VA508ImageListLabeler.TVA508ImageListLabel.Refresh
+ 0001:001047AC       VA508ImageListLabeler.TVA508ImageListLabel.SetCaption
+ 0001:001047E0       VA508ImageListLabeler.TVA508ImageListLabel.SetImageIndex
+ 0001:00104858       VA508ImageListLabeler.TVA508ImageListLabel.SetOverlayIndex
+ 0001:0010486C       VA508ImageListLabeler.TVA508ImageListComponents.Create
+ 0001:001048B0       VA508ImageListLabeler.TVA508ImageListComponents.Destroy
+ 0001:001048DC       VA508ImageListLabeler.TVA508ImageListComponents.GetItem
+ 0001:001048F0       VA508ImageListLabeler.TVA508ImageListComponents.GetOwner
+ 0001:001048F4       VA508ImageListLabeler.TVA508ImageListComponents.Notify
+ 0001:0010490C       VA508ImageListLabeler.TVA508ImageListComponent.Assign
+ 0001:0010493C       VA508ImageListLabeler.TVA508ImageListComponent.ComponentNotifyEvent
+ 0001:00104954       VA508ImageListLabeler.TVA508ImageListComponent.Destroy
+ 0001:00104990       VA508ImageListLabeler.TVA508ImageListComponent.GetDisplayName
+ 0001:00104A54       VA508ImageListLabeler.TVA508ImageListComponent.ImageListTypes
+ 0001:00104B20       VA508ImageListLabeler.TVA508ImageListComponent.Labeler
+ 0001:00104B3C       VA508ImageListLabeler.TVA508ImageListComponent.SetComponent
+ 0001:00104C8C       VA508Classes..EVA508AccessibilityException
+ 0001:00104CF8       VA508Classes.HasAnotherAccessibilityManager
+ 0001:00104D70       VA508Classes.EnsureManager
+ 0001:00104E8C       VA508Classes.VA508ComponentCreationCheck
+ 0001:001051B0       VA508Classes.VA508ComponentDestructionCheck
+ 0001:001054C4       VA508AccessibilityManager..TVA508AccessibilityItem
+ 0001:0010568C       VA508AccessibilityManager..TVA508AccessibilityCollection
+ 0001:00105774       VA508AccessibilityManager..TVA508AccessibilityManager
+ 0001:0010590C       VA508AccessibilityManager..TVA508ComponentAccessibility
+ 0001:00105C04       VA508AccessibilityManager..TVA508ComponentManager
+ 0001:00105CB8       VA508AccessibilityManager..TVA508ChainedLabel
+ 0001:00105DF0       VA508AccessibilityManager..TVA508StaticText
+ 0001:00106074       VA508AccessibilityManager..TVA508ManagedComponentClass
+ 0001:0010612C       VA508AccessibilityManager..TVA508ComplexComponentManager
+ 0001:00106200       VA508AccessibilityManager..TComponentHelper
+ 0001:001062B0       VA508AccessibilityManager..TVAGlobalComponentRegistry
+ 0001:0010632C       VA508AccessibilityManager..TDFMData
+ 0001:001063AC       VA508AccessibilityManager..TMSAAData
+ 0001:00106404       VA508AccessibilityManager.CreateGlobalRegistry
+ 0001:00106428       VA508AccessibilityManager.CreateGlobalVars
+ 0001:00106448       VA508AccessibilityManager.FreeGlobalVars
+ 0001:001064BC       VA508AccessibilityManager.TVA508AccessibilityItem.Assign
+ 0001:00106518       VA508AccessibilityManager.TVA508AccessibilityItem.Create
+ 0001:00106550       VA508AccessibilityManager.TVA508AccessibilityItem.Destroy
+ 0001:00106594       VA508AccessibilityManager.TVA508AccessibilityItem.GetDisplayName
+ 0001:0010666C       VA508AccessibilityManager.TVA508AccessibilityItem.InitComponent
+ 0001:00106690       VA508AccessibilityManager.TVA508AccessibilityItem.Manager
+ 0001:00106698       VA508AccessibilityManager.TVA508AccessibilityItem.Parent
+ 0001:0010669C       VA508AccessibilityManager.TVA508AccessibilityItem.SetComponent
+ 0001:0010670C       VA508AccessibilityManager.TVA508AccessibilityItem.SetDefault
+ 0001:00106798       VA508AccessibilityManager.TVA508AccessibilityItem.SetLabel
+ 0001:001067C0       VA508AccessibilityManager.TVA508AccessibilityItem.SetProperty
+ 0001:0010681C       VA508AccessibilityManager.TVA508AccessibilityItem.SetText
+ 0001:00106854       VA508AccessibilityManager.TVA508AccessibilityItem.UpdateStatus
+ 0001:00106898       VA508AccessibilityManager.TVA508AccessibilityCollection.Add
+ 0001:001068A4       VA508AccessibilityManager.TVA508AccessibilityCollection.ComponentNotifyEvent
+ 0001:001068F0       VA508AccessibilityManager.TVA508AccessibilityCollection.Create
+ 0001:0010696C       VA508AccessibilityManager.TVA508AccessibilityCollection.Destroy
+ 0001:001069AC       VA508AccessibilityManager.TVA508AccessibilityCollection.EnsureItemExists
+ 0001:001069B4       VA508AccessibilityManager.TVA508AccessibilityCollection.FindItem
+ 0001:00106A58       VA508AccessibilityManager.TVA508AccessibilityCollection.GetItem
+ 0001:00106A6C       VA508AccessibilityManager.TVA508AccessibilityCollection.GetOwner
+ 0001:00106A70       VA508AccessibilityManager.TVA508AccessibilityCollection.IsComponentRegistered
+ 0001:00106AD4       VA508AccessibilityManager.TVA508AccessibilityCollection.UnregisterComponent
+ 0001:00106B58       VA508AccessibilityManager.TVA508AccessibilityCollection.RegisterComponent
+ 0001:00106BE8       VA508AccessibilityManager.TVA508AccessibilityManager.Create
+ 0001:00106C50       VA508AccessibilityManager.TVA508AccessibilityManager.Destroy
+ 0001:00106C98       VA508AccessibilityManager.FindOwnedComponent
+ 0001:00106DBC       VA508AccessibilityManager.TVA508AccessibilityManager.FindComponentOnForm
+ 0001:00106E98       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentManager
+ 0001:00106EB0       VA508AccessibilityManager.error
+ 0001:00106EF4       VA508AccessibilityManager.BasicComponentCheck
+ 0001:00106F74       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentName
+ 0001:00106FEC       VA508AccessibilityManager.TVA508AccessibilityManager.GetData
+ 0001:00106FF0       VA508AccessibilityManager.TVA508AccessibilityManager.GetDefaultStringProperty
+ 0001:001070B8       VA508AccessibilityManager.TVA508AccessibilityManager.GetPropertList
+ 0001:00107280       VA508AccessibilityManager.TVA508AccessibilityManager.GetRootComponent
+ 0001:0010735C       VA508AccessibilityManager.TVA508AccessibilityManager.IsPropertyNameValid
+ 0001:001073C8       VA508AccessibilityManager.TVA508AccessibilityManager.Loaded
+ 0001:001074D4       VA508AccessibilityManager.UpdateComponent
+ 0001:00107580       VA508AccessibilityManager.TVA508AccessibilityManager.Notification
+ 0001:001075D8       VA508AccessibilityManager.TVA508AccessibilityManager.OwnerCheck
+ 0001:001075F4       VA508AccessibilityManager.TVA508AccessibilityManager.DefineProperties
+ 0001:00107630       VA508AccessibilityManager.TVA508AccessibilityManager.ReadData
+ 0001:00107890       VA508AccessibilityManager.TVA508AccessibilityManager.RefreshComponents
+ 0001:00107898       VA508AccessibilityManager.TVA508AccessibilityManager.WriteData
+ 0001:00107AC4       VA508AccessibilityManager.TVA508AccessibilityManager.ScreenReaderInquiry
+ 0001:00107C1C       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessText
+ 0001:00107C3C       VA508AccessibilityManager.TVA508AccessibilityManager.SetComponentManager
+ 0001:00107C58       VA508AccessibilityManager.Update
+ 0001:00107CEC       VA508AccessibilityManager.TVA508AccessibilityManager.Initialize
+ 0001:00107DFC       VA508AccessibilityManager..TAlternateHandleData
+ 0001:00107E60       VA508AccessibilityManager.RegisterAlternateHandleComponent
+ 0001:00107ED8       VA508AccessibilityManager.RegisterComplexComponentManager
+ 0001:00107F4C       VA508AccessibilityManager.RegisterManagedComponentClass
+ 0001:00107FC4       VA508AccessibilityManager.FindMSAAQueryData
+ 0001:00108010       VA508AccessibilityManager.RegisterMSAAProc
+ 0001:00108064       VA508AccessibilityManager.RegisterMSAAQueryListClassProc
+ 0001:00108070       VA508AccessibilityManager.HandleStillValid
+ 0001:001080A4       VA508AccessibilityManager.NoChangeNeeded
+ 0001:0010811C       VA508AccessibilityManager.Init
+ 0001:00108170       VA508AccessibilityManager.ProcessCaptionChange
+ 0001:0010822C       VA508AccessibilityManager.ProcessItemChange
+ 0001:00108524       VA508AccessibilityManager.ProcessStateChange
+ 0001:001085EC       VA508AccessibilityManager.AddControlType
+ 0001:0010866C       VA508AccessibilityManager.SendChangeData
+ 0001:001086D0       VA508AccessibilityManager.TVAGlobalComponentRegistry.CheckForChangeEvent
+ 0001:0010879C       VA508AccessibilityManager.HelperValid
+ 0001:00108834       VA508AccessibilityManager.UpdateComponentData
+ 0001:00108928       VA508AccessibilityManager.InitializeVars
+ 0001:001089B4       VA508AccessibilityManager.GetDataValues
+ 0001:00108C14       VA508AccessibilityManager.TVAGlobalComponentRegistry.ComponentDataNeededEvent
+ 0001:00108E34       VA508AccessibilityManager.GetMessageHookProc
+ 0001:00108EC4       VA508AccessibilityManager.TVAGlobalComponentRegistry.Create
+ 0001:00108FC8       VA508AccessibilityManager.TVAGlobalComponentRegistry.Destroy
+ 0001:0010903C       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetCompKey
+ 0001:00109050       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHandle
+ 0001:00109124       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHelper
+ 0001:001091D0       VA508AccessibilityManager.TVAGlobalComponentRegistry.HasHandle
+ 0001:001092C4       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterFieldObject
+ 0001:00109388       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterMSAA
+ 0001:001093CC       VA508AccessibilityManager.CheckManagedClasses
+ 0001:00109474       VA508AccessibilityManager.CheckComplexClasses
+ 0001:001094EC       VA508AccessibilityManager.CreateHelper
+ 0001:00109588       VA508AccessibilityManager.RegisterComponent
+ 0001:001096B0       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterComponent
+ 0001:00109714       VA508AccessibilityManager.SkipCheck
+ 0001:00109738       VA508AccessibilityManager.TVAGlobalComponentRegistry.TimerEvent
+ 0001:00109858       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterComponent
+ 0001:00109988       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterMSAA
+ 0001:001099CC       VA508AccessibilityManager.UpdateHandle
+ 0001:00109B7C       VA508AccessibilityManager.FindRootHandle
+ 0001:00109C04       VA508AccessibilityManager.UpdateAllHandles
+ 0001:00109C78       VA508AccessibilityManager.UpdateChildrenHandles
+ 0001:00109DCC       VA508AccessibilityManager.TVAGlobalComponentRegistry.UpdateHandles
+ 0001:00109E58       VA508AccessibilityManager.TVA508ComponentManager.Create
+ 0001:00109E8C       VA508AccessibilityManager.TVA508ComponentManager.GetCaption
+ 0001:00109E98       VA508AccessibilityManager.TVA508ComponentManager.GetComponentName
+ 0001:00109EA4       VA508AccessibilityManager.TVA508ComponentManager.GetData
+ 0001:00109ED8       VA508AccessibilityManager.TVA508ComponentManager.GetInstructions
+ 0001:00109EE4       VA508AccessibilityManager.TVA508ComponentManager.GetItem
+ 0001:00109EE8       VA508AccessibilityManager.TVA508ComponentManager.GetItemInstructions
+ 0001:00109EF4       VA508AccessibilityManager.TVA508ComponentManager.GetState
+ 0001:00109F00       VA508AccessibilityManager.TVA508ComponentManager.GetValue
+ 0001:00109F0C       VA508AccessibilityManager.TVA508ComponentManager.ManageCaption
+ 0001:00109F14       VA508AccessibilityManager.TVA508ComponentManager.ManageComponentName
+ 0001:00109F1C       VA508AccessibilityManager.TVA508ComponentManager.ManageData
+ 0001:00109F24       VA508AccessibilityManager.TVA508ComponentManager.ManageInstructions
+ 0001:00109F2C       VA508AccessibilityManager.TVA508ComponentManager.ManageItemInstructions
+ 0001:00109F34       VA508AccessibilityManager.TVA508ComponentManager.ManageState
+ 0001:00109F3C       VA508AccessibilityManager.TVA508ComponentManager.ManageValue
+ 0001:00109F44       VA508AccessibilityManager.TVA508ComponentManager.MonitorForItemChange
+ 0001:00109F4C       VA508AccessibilityManager.TVA508ComponentManager.MonitorForStateChange
+ 0001:00109F54       VA508AccessibilityManager.TVA508ComponentManager.Redirect
+ 0001:00109F5C       VA508AccessibilityManager.TVA508ComponentManager.RedirectsComponent
+ 0001:00109F64       VA508AccessibilityManager.TVA508ManagedComponentClass.Create
+ 0001:00109FB0       VA508AccessibilityManager.TVA508ComponentAccessibility.Create
+ 0001:0010A000       VA508AccessibilityManager.TVA508ComponentAccessibility.SetComponent
+ 0001:0010A198       VA508AccessibilityManager.InitializeComponentHelper
+ 0001:0010A320       VA508AccessibilityManager.TComponentHelper.InitializeComponentManager
+ 0001:0010A3A4       VA508AccessibilityManager.TComponentHelper.ClearRedirect
+ 0001:0010A3B4       VA508AccessibilityManager.TComponentHelper.Create
+ 0001:0010A3E8       VA508AccessibilityManager.TComponentHelper.Destroy
+ 0001:0010A444       VA508AccessibilityManager.TComponentHelper.GetCaption
+ 0001:0010A4E4       VA508AccessibilityManager.TComponentHelper.GetComponentName
+ 0001:0010A578       VA508AccessibilityManager.TComponentHelper.GetData
+ 0001:0010A61C       VA508AccessibilityManager.TComponentHelper.GetInstructions
+ 0001:0010A6B0       VA508AccessibilityManager.TComponentHelper.GetItem
+ 0001:0010A718       VA508AccessibilityManager.TComponentHelper.GetItemInstructions
+ 0001:0010A7AC       VA508AccessibilityManager.TComponentHelper.GetState
+ 0001:0010A85C       VA508AccessibilityManager.TComponentHelper.GetValue
+ 0001:0010A8D8       VA508AccessibilityManager.TComponentHelper.ManageComponentName
+ 0001:0010A924       VA508AccessibilityManager.TComponentHelper.ManageData
+ 0001:0010A954       VA508AccessibilityManager.TComponentHelper.ManageItemInstructions
+ 0001:0010A9A0       VA508AccessibilityManager.TComponentHelper.ManageValue
+ 0001:0010A9E4       VA508AccessibilityManager.TComponentHelper.ManageCaption
+ 0001:0010AA30       VA508AccessibilityManager.TComponentHelper.MonitorForItemChange
+ 0001:0010AA74       VA508AccessibilityManager.TComponentHelper.MonitorForStateChange
+ 0001:0010AAD0       VA508AccessibilityManager.TComponentHelper.Redirect
+ 0001:0010AAE8       VA508AccessibilityManager.TComponentHelper.StandardComponent
+ 0001:0010AAFC       VA508AccessibilityManager.TVA508StaticText.CMFontChanged
+ 0001:0010AB10       VA508AccessibilityManager.TVA508StaticText.CMTextChanged
+ 0001:0010AB24       VA508AccessibilityManager.TVA508StaticText.Create
+ 0001:0010ABB0       VA508AccessibilityManager.TVA508StaticText.DeleteChain
+ 0001:0010AC4C       VA508AccessibilityManager.TVA508StaticText.Destroy
+ 0001:0010AC88       VA508AccessibilityManager.TVA508StaticText.DoEnter
+ 0001:0010ACB4       VA508AccessibilityManager.TVA508StaticText.DoExit
+ 0001:0010ACE0       VA508AccessibilityManager.TVA508StaticText.GetAlignment
+ 0001:0010ACF0       VA508AccessibilityManager.TVA508StaticText.GetLabelCaption
+ 0001:0010AD08       VA508AccessibilityManager.TVA508StaticText.GetRootName
+ 0001:0010AD1C       VA508AccessibilityManager.TVA508StaticText.GetShowAccelChar
+ 0001:0010AD2C       VA508AccessibilityManager.TVA508StaticText.InvalidateAll
+ 0001:0010AD5C       VA508AccessibilityManager.TVA508StaticText.Notification
+ 0001:0010AD9C       VA508AccessibilityManager.Init
+ 0001:0010ADF0       VA508AccessibilityManager.InitDrawBorder
+ 0001:0010AE90       VA508AccessibilityManager.DrawTop
+ 0001:0010AEF0       VA508AccessibilityManager.DrawBottom
+ 0001:0010AFE8       VA508AccessibilityManager.TVA508StaticText.Paint
+ 0001:0010B014       VA508AccessibilityManager.TVA508StaticText.SetAlignment
+ 0001:0010B020       VA508AccessibilityManager.TVA508StaticText.SetLabelCaption
+ 0001:0010B08C       VA508AccessibilityManager.TVA508StaticText.SetRootName
+ 0001:0010B110       VA508AccessibilityManager.TVA508StaticText.SetNextLabel
+ 0001:0010B154       VA508AccessibilityManager.TVA508StaticText.SetParent
+ 0001:0010B1AC       VA508AccessibilityManager.TVA508StaticText.SetShowAccelChar
+ 0001:0010B1B8       VA508AccessibilityManager.TVA508StaticText.UpdateSize
+ 0001:0010B248       VA508AccessibilityManager.TVA508ChainedLabel.Notification
+ 0001:0010B294       VA508AccessibilityManager.Init
+ 0001:0010B2E8       VA508AccessibilityManager.DrawText
+ 0001:0010B364       VA508AccessibilityManager.InitDrawBorder
+ 0001:0010B434       VA508AccessibilityManager.DrawPartials
+ 0001:0010B4D0       VA508AccessibilityManager.DrawTop
+ 0001:0010B560       VA508AccessibilityManager.DrawSides
+ 0001:0010B5C0       VA508AccessibilityManager.DrawBottom
+ 0001:0010B66C       VA508AccessibilityManager.TVA508ChainedLabel.Paint
+ 0001:0010B6D8       VA508AccessibilityManager.TVA508ChainedLabel.SetNextLabel
+ 0001:0010B72C       VA508AccessibilityManager..TComplexDataItem
+ 0001:0010B78C       VA508AccessibilityManager.TComplexDataItem.Create
+ 0001:0010B7E4       VA508AccessibilityManager.TComplexDataItem.Destroy
+ 0001:0010B818       VA508AccessibilityManager.TVA508ComplexComponentManager.AddSubControl
+ 0001:0010B8AC       VA508AccessibilityManager.TVA508ComplexComponentManager.RemoveSubControl
+ 0001:0010B914       VA508AccessibilityManager.TVA508ComplexComponentManager.ClearSubControls
+ 0001:0010B98C       VA508AccessibilityManager.TVA508ComplexComponentManager.Create
+ 0001:0010BA08       VA508AccessibilityManager.TVA508ComplexComponentManager.Destroy
+ 0001:0010BA50       VA508AccessibilityManager.TVA508ComplexComponentManager.GetSubComponentList
+ 0001:0010BAA0       VA508AccessibilityManager.TVA508ComplexComponentManager.IndexOfComponentItem
+ 0001:0010BAD8       VA508AccessibilityManager.TVA508ComplexComponentManager.IndexOfSubComponentXRef
+ 0001:0010BB10       VA508AccessibilityManager.TVA508ComplexComponentManager.ComponentNotifyEvent
+ 0001:0010BB5C       VA508AccessibilityManager.TVA508ComplexComponentManager.SubComponentNotifyEvent
+ 0001:0010BC00       VA508AccessibilityManager.Finalization
+ 0001:0010BEAC       uConst.Finalization
+ 0001:0010BF08       fBase508Form..TfrmBase508Form
+ 0001:0010C0DC       fBase508Form.UnfocusableControlEnter
+ 0001:0010C154       fBase508Form.TfrmBase508Form.Activate
+ 0001:0010C164       fBase508Form.TfrmBase508Form.AdjustForTitleBarHeightChanges
+ 0001:0010C1E0       fBase508Form.TfrmBase508Form.FormKeyDown
+ 0001:0010C204       fBase508Form.TfrmBase508Form.Notification
+ 0001:0010C250       fBase508Form.TfrmBase508Form.GetDefaultButton
+ 0001:0010C2E4       fBase508Form.TfrmBase508Form.Loaded
+ 0001:0010C2F8       fBase508Form.TfrmBase508Form.ModifyUnfocusableControl
+ 0001:0010C37C       fBase508Form.TfrmBase508Form.SetDefaultButton
+ 0001:0010C384       fBase508Form.TfrmBase508Form.SetParent
+ 0001:0010C3A4       fBase508Form.TfrmBase508Form.UM508
+ 0001:0010C3B0       fBase508Form.TfrmBase508Form.UpdateAccessabilityActions
+ 0001:0010C3B4       fBase508Form.TfrmBase508Form.ClickDefaultButton
+ 0001:0010C3E0       fBase508Form.AdjustControls
+ 0001:0010C450       fBase508Form.TfrmBase508Form.Create
+ 0001:0010C52C       fBase508Form.KeyMonitorProc
+ 0001:0010C55C       fBase508Form.MouseMonitorProc
+ 0001:0010C594       fBase508Form.Finalization
+ 0001:0010C5DC       ORClasses..TORNotifyList
+ 0001:0010C740       ORClasses..TORNotifier
+ 0001:0010C7BC       ORClasses..TORStringList
+ 0001:0010C8EC       ORClasses.IndexOfClass
+ 0001:0010C9C8       ORClasses.AddToNotifyWhenCreated
+ 0001:0010C9EC       ORClasses.ObjectCreated
+ 0001:0010CA4C       ORClasses.TORNotifyList.Create
+ 0001:0010CAA0       ORClasses.TORNotifyList.Destroy
+ 0001:0010CADC       ORClasses.TORNotifyList.IndexOf
+ 0001:0010CB48       ORClasses.TORNotifyList.Add
+ 0001:0010CB94       ORClasses.TORNotifyList.Remove
+ 0001:0010CBC8       ORClasses.TORNotifyList.Notify
+ 0001:0010CC40       ORClasses.TORNotifyList.Count
+ 0001:0010CC48       ORClasses.TORNotifyList.Add
+ 0001:0010CC7C       ORClasses.TORNotifyList.IndexOf
+ 0001:0010CCD0       ORClasses.TORNotifyList.Remove
+ 0001:0010CCF8       ORClasses.TORNotifier.Create
+ 0001:0010CD4C       ORClasses.TORNotifier.Destroy
+ 0001:0010CD7C       ORClasses.TORNotifier.BeginUpdate
+ 0001:0010CD80       ORClasses.TORNotifier.EndUpdate
+ 0001:0010CD9C       ORClasses.TORNotifier.Notify
+ 0001:0010CDC8       ORClasses.TORNotifier.Notify
+ 0001:0010CDF0       ORClasses.TORNotifier.NotifyWhenChanged
+ 0001:0010CE20       ORClasses.TORNotifier.NotifyWhenChanged
+ 0001:0010CE48       ORClasses.TORNotifier.RemoveNotify
+ 0001:0010CE64       ORClasses.TORNotifier.RemoveNotify
+ 0001:0010CE74       ORClasses.TORNotifier.NotifyMethod
+ 0001:0010CE80       ORClasses.TORNotifier.GetOnNotify
+ 0001:0010CE8C       ORClasses.TORNotifier.SetOnNotify
+ 0001:0010CEA0       ORClasses.TORNotifier.DoNotify
+ 0001:0010CED0       ORClasses.TORStringList.Destroy
+ 0001:0010CF00       ORClasses.TORStringList.Changed
+ 0001:0010CF84       ORClasses.TORStringList.IndexOfPiece
+ 0001:0010D03C       ORClasses.TORStringList.IndexOfPieces
+ 0001:0010D0A0       ORClasses.TORStringList.IndexOfPieces
+ 0001:0010D0B4       ORClasses.TORStringList.IndexOfPieces
+ 0001:0010D0CC       ORClasses.TORStringList.GetNotifier
+ 0001:0010D108       ORClasses.TORStringList.KillObjects
+ 0001:0010D150       ORClasses.TORStringList.PiecesEqual
+ 0001:0010D168       ORClasses.TORStringList.PiecesEqual
+ 0001:0010D23C       ORClasses.TORStringList.SortByPiece
+ 0001:0010D250       ORClasses.TORStringList.RemoveDuplicates
+ 0001:0010D31C       ORClasses.TORStringList.CaseInsensitiveIndexOfPiece
+ 0001:0010D3D8       ORClasses.QSort
+ 0001:0010D4F8       ORClasses.TORStringList.SortByPieces
+ 0001:0010D564       ORClasses.TORStringList.SetStrPiece
+ 0001:0010D5D8       ORClasses.TORStringList.SetStrPiece
+ 0001:0010D5EC       ORClasses.Finalization
+ 0001:0010D628       Xwbut1.Iff
+ 0001:0010D6A0       Xwbut1.ReadRegData
+ 0001:0010D76C       Xwbut1.WriteRegData
+ 0001:0010D840       Xwbut1.DeleteRegData
+ 0001:0010D8FC       Xwbut1.ReadRegDataDefault
+ 0001:0010D998       Xwbut1.ReadRegValueNames
+ 0001:0010DA74       MFunStr.Translate
+ 0001:0010DB74       MFunStr.Piece
+ 0001:0010DD3C       MFunStr.Finalization
+ 0001:0010E598       Hash.Encrypt
+ 0001:0010E650       Hash.Finalization
+ 0001:0010E698       AxCtrls..TCustomAdapter
+ 0001:0010E784       AxCtrls..TAdapterNotifier
+ 0001:0010E8A0       AxCtrls..TFontAdapter
+ 0001:0010E9C0       AxCtrls..TPictureAdapter
+ 0001:0010EA24       AxCtrls..TOleGraphic
+ 0001:0010EB20       AxCtrls.HandleException
+ 0001:0010EB4C       AxCtrls.GetFontAccess
+ 0001:0010EB9C       AxCtrls.GetPictureAccess
+ 0001:0010EBEC       AxCtrls.GetOleFont
+ 0001:0010EC3C       AxCtrls.SetOleFont
+ 0001:0010ECA4       AxCtrls.GetOlePicture
+ 0001:0010ECF4       AxCtrls.TCustomAdapter.Create
+ 0001:0010ED48       AxCtrls.TCustomAdapter.Destroy
+ 0001:0010ED74       AxCtrls.TCustomAdapter.Changed
+ 0001:0010ED80       AxCtrls.TCustomAdapter.ConnectOleObject
+ 0001:0010EE04       AxCtrls.TCustomAdapter.ReleaseOleObject
+ 0001:0010EE34       AxCtrls.TAdapterNotifier.Create
+ 0001:0010EE70       AxCtrls.TAdapterNotifier.OnChanged
+ 0001:0010EEB8       AxCtrls.TAdapterNotifier.OnRequestEdit
+ 0001:0010EEC4       AxCtrls.TFontAdapter.Create
+ 0001:0010EF00       AxCtrls.TFontAdapter.Update
+ 0001:0010F0CC       AxCtrls.TFontAdapter.Changed
+ 0001:0010F268       AxCtrls.TFontAdapter.GetOleFont
+ 0001:0010F3C8       AxCtrls.TFontAdapter.SetOleFont
+ 0001:0010F434       AxCtrls.TPictureAdapter.Create
+ 0001:0010F470       AxCtrls.TPictureAdapter.Update
+ 0001:0010F4FC       AxCtrls.TPictureAdapter.GetOlePicture
+ 0001:0010F730       AxCtrls.TPictureAdapter.SetOlePicture
+ 0001:0010F744       AxCtrls.TOleGraphic.Assign
+ 0001:0010F778       AxCtrls.TOleGraphic.Changed
+ 0001:0010F77C       AxCtrls.TOleGraphic.Draw
+ 0001:0010F888       AxCtrls.TOleGraphic.GetEmpty
+ 0001:0010F8B4       AxCtrls.HIMETRICtoDP
+ 0001:0010F8FC       AxCtrls.TOleGraphic.GetHeight
+ 0001:0010F92C       AxCtrls.TOleGraphic.GetMMHeight
+ 0001:0010F948       AxCtrls.TOleGraphic.GetMMWidth
+ 0001:0010F964       AxCtrls.TOleGraphic.GetPalette
+ 0001:0010F980       AxCtrls.TOleGraphic.GetTransparent
+ 0001:0010F9A0       AxCtrls.TOleGraphic.GetWidth
+ 0001:0010F9CC       AxCtrls.InvalidOperation
+ 0001:0010F9E4       AxCtrls.TOleGraphic.SetHeight
+ 0001:0010FA2C       AxCtrls.TOleGraphic.SetPalette
+ 0001:0010FA4C       AxCtrls.TOleGraphic.SetWidth
+ 0001:0010FA94       AxCtrls.TOleGraphic.LoadFromFile
+ 0001:0010FA98       AxCtrls.TOleGraphic.LoadFromStream
+ 0001:0010FAE8       AxCtrls.TOleGraphic.SaveToStream
+ 0001:0010FB6C       AxCtrls.TOleGraphic.LoadFromClipboardFormat
+ 0001:0010FBB8       AxCtrls.TOleGraphic.SaveToClipboardFormat
+ 0001:0010FC04       AxCtrls.InitOlePro32
+ 0001:0010FCF4       AxCtrls.OleCreateFontIndirect
+ 0001:0010FD10       AxCtrls.OleCreatePictureIndirect
+ 0001:0010FD38       AxCtrls.OleLoadPicture
+ 0001:0010FDA8       AxCtrls.Finalization
+ 0001:0010FEAC       OleCtrls..TEventDispatch
+ 0001:001104E4       OleCtrls..TOleControl
+ 0001:001106D8       OleCtrls.FontToOleFont
+ 0001:00110724       OleCtrls.OleFontToFont
+ 0001:001107A0       OleCtrls.StringToVarOleStr
+ 0001:001107C0       OleCtrls.TEventDispatch.Create
+ 0001:001107E4       OleCtrls.TEventDispatch.QueryInterface
+ 0001:00110850       OleCtrls.TEventDispatch._AddRef
+ 0001:00110864       OleCtrls.TEventDispatch._Release
+ 0001:00110878       OleCtrls.TEventDispatch.GetTypeInfoCount
+ 0001:00110888       OleCtrls.TEventDispatch.GetTypeInfo
+ 0001:0011089C       OleCtrls.TEventDispatch.GetIDsOfNames
+ 0001:001108A8       OleCtrls.TEventDispatch.Invoke
+ 0001:001108F0       OleCtrls.TOleControl.Create
+ 0001:00110B24       OleCtrls.FreeList
+ 0001:00110B5C       OleCtrls.TOleControl.Destroy
+ 0001:00110C10       OleCtrls.TOleControl.CreateControl
+ 0001:00110F30       OleCtrls.LicenseCheck
+ 0001:00110F88       OleCtrls.TOleControl.CreateInstance
+ 0001:001110D0       OleCtrls.TOleControl.CreateStorage
+ 0001:001111B0       OleCtrls.TOleControl.CreateWnd
+ 0001:00111254       OleCtrls.TOleControl.DefaultHandler
+ 0001:001112E4       OleCtrls.TOleControl.SuppressException
+ 0001:0011130C       OleCtrls.TOleControl.DefineProperties
+ 0001:001113B0       OleCtrls.TOleControl.DestroyControl
+ 0001:00111418       OleCtrls.TOleControl.DestroyEnumPropDescs
+ 0001:00111458       OleCtrls.TOleControl.DestroyStorage
+ 0001:00111478       OleCtrls.TOleControl.DestroyWindowHandle
+ 0001:001114C4       OleCtrls.TOleControl.GetEventMethod
+ 0001:00111524       OleCtrls.TOleControl.GetIDispatchProp
+ 0001:00111544       OleCtrls.TOleControl.GetIntegerProp
+ 0001:00111558       OleCtrls.TOleControl.GetMainMenu
+ 0001:001115AC       OleCtrls.TOleControl.GetWordBoolProp
+ 0001:001115C0       OleCtrls.TOleControl.GetTOleEnumProp
+ 0001:001115C8       OleCtrls.TOleControl.GetOleObject
+ 0001:00111638       OleCtrls.TOleControl.GetOleVariantProp
+ 0001:00111658       OleCtrls.TOleControl.GetProperty
+ 0001:001116E8       OleCtrls.TOleControl.GetStringProp
+ 0001:00111744       OleCtrls.TOleControl.GetVariantProp
+ 0001:0011175C       OleCtrls.TOleControl.GetWideStringProp
+ 0001:00111788       OleCtrls.TOleControl.HookControlWndProc
+ 0001:00111818       OleCtrls.CallEventMethod
+ 0001:00111858       OleCtrls.TOleControl.D2InvokeEvent
+ 0001:001119F8       OleCtrls.TOleControl.InvokeEvent
+ 0001:00111AD8       OleCtrls.TOleControl.InitControlInterface
+ 0001:00111ADC       OleCtrls.TOleControl.PaletteChanged
+ 0001:00111B2C       OleCtrls.TOleControl.PictureChanged
+ 0001:00111B98       OleCtrls.TOleControl.ReadData
+ 0001:00111C54       OleCtrls.TOleControl.SetBounds
+ 0001:00111D34       OleCtrls.TOleControl.SetColorProp
+ 0001:00111D3C       OleCtrls.TOleControl.SetIDispatchProp
+ 0001:00111D54       OleCtrls.TOleControl.SetIntegerProp
+ 0001:00111D6C       OleCtrls.TOleControl.SetName
+ 0001:00111E20       OleCtrls.TOleControl.SetWordBoolProp
+ 0001:00111E4C       OleCtrls.TOleControl.SetOleVariantProp
+ 0001:00111E54       OleCtrls.TOleControl.SetParent
+ 0001:00111F34       OleCtrls.TOleControl.SetTPictureProp
+ 0001:00112024       OleCtrls.TOleControl.SetProperty
+ 0001:001120DC       OleCtrls.TOleControl.SetStringProp
+ 0001:0011213C       OleCtrls.TOleControl.SetUIActive
+ 0001:00112194       OleCtrls.TOleControl.SetVariantProp
+ 0001:001121F0       OleCtrls.TOleControl.SetWideStringProp
+ 0001:00112234       OleCtrls.TOleControl.StandardEvent
+ 0001:0011243C       OleCtrls.TOleControl.WndProc
+ 0001:00112524       OleCtrls.TOleControl.WriteData
+ 0001:0011262C       OleCtrls.TOleControl.WMEraseBkgnd
+ 0001:0011264C       OleCtrls.TOleControl.WMPaint
+ 0001:001126BC       OleCtrls.TOleControl.CMDocWindowActivate
+ 0001:00112718       OleCtrls.TOleControl.CMColorChanged
+ 0001:0011279C       OleCtrls.TOleControl.CMEnabledChanged
+ 0001:00112828       OleCtrls.TOleControl.CMFontChanged
+ 0001:00112928       OleCtrls.TOleControl.CMDialogKey
+ 0001:001129C4       OleCtrls.TOleControl.CMUIActivate
+ 0001:00112A14       OleCtrls.TOleControl.CMUIDeactivate
+ 0001:00112A5C       OleCtrls.TOleControl.QueryInterface
+ 0001:00112A84       OleCtrls.TOleControl._AddRef
+ 0001:00112A9C       OleCtrls.TOleControl._Release
+ 0001:00112AB4       OleCtrls.TOleControl.SaveObject
+ 0001:00112AC0       OleCtrls.TOleControl.GetMoniker
+ 0001:00112AD8       OleCtrls.TOleControl.GetContainer
+ 0001:00112AF0       OleCtrls.TOleControl.ShowObject
+ 0001:00112B04       OleCtrls.TOleControl.OnShowWindow
+ 0001:00112B10       OleCtrls.TOleControl.RequestNewObjectLayout
+ 0001:00112BB4       OleCtrls.TOleControl.OnControlInfoChanged
+ 0001:00112BC0       OleCtrls.TOleControl.LockInPlaceActive
+ 0001:00112BCC       OleCtrls.TOleControl.GetExtendedControl
+ 0001:00112BE4       OleCtrls.TOleControl.TransformCoords
+ 0001:00112C84       OleCtrls.TOleControl.OleControlSite_TranslateAccelerator
+ 0001:00112C90       OleCtrls.TOleControl.OnFocus
+ 0001:00112C9C       OleCtrls.TOleControl.ShowPropertyFrame
+ 0001:00112CA8       OleCtrls.TOleControl.ContextSensitiveHelp
+ 0001:00112CB4       OleCtrls.TOleControl.OleInPlaceSite_GetWindow
+ 0001:00112CE0       OleCtrls.TOleControl.CanInPlaceActivate
+ 0001:00112CEC       OleCtrls.TOleControl.OnInPlaceActivate
+ 0001:00112D54       OleCtrls.TOleControl.OnUIActivate
+ 0001:00112D68       OleCtrls.TOleControl.GetWindowContext
+ 0001:00112DFC       OleCtrls.TOleControl.Scroll
+ 0001:00112E08       OleCtrls.TOleControl.OnUIDeactivate
+ 0001:00112E2C       OleCtrls.TOleControl.OnInPlaceDeactivate
+ 0001:00112E50       OleCtrls.TOleControl.DiscardUndoState
+ 0001:00112E5C       OleCtrls.TOleControl.DeactivateAndUndo
+ 0001:00112E74       OleCtrls.TOleControl.OnPosRectChange
+ 0001:00112EB4       OleCtrls.TOleControl.GetBorder
+ 0001:00112EC0       OleCtrls.TOleControl.RequestBorderSpace
+ 0001:00112ECC       OleCtrls.TOleControl.SetBorderSpace
+ 0001:00112ED8       OleCtrls.TOleControl.SetActiveObject
+ 0001:00112EE4       OleCtrls.TOleControl.OleInPlaceFrame_GetWindow
+ 0001:00112F00       OleCtrls.TOleControl.InsertMenus
+ 0001:00112F40       OleCtrls.TOleControl.SetMenu
+ 0001:00112F78       OleCtrls.TOleControl.RemoveMenus
+ 0001:00112FA0       OleCtrls.TOleControl.SetStatusText
+ 0001:00112FAC       OleCtrls.TOleControl.EnableModeless
+ 0001:00112FB8       OleCtrls.TOleControl.OleInPlaceFrame_TranslateAccelerator
+ 0001:00112FC4       OleCtrls.TOleControl.GetTypeInfoCount
+ 0001:00112FD4       OleCtrls.TOleControl.GetTypeInfo
+ 0001:00112FE8       OleCtrls.TOleControl.GetIDsOfNames
+ 0001:00112FF4       OleCtrls.TOleControl.Invoke
+ 0001:00113198       OleCtrls.TOleControl.OnChanged
+ 0001:001133B0       OleCtrls.TOleControl.OnRequestEdit
+ 0001:001133BC       OleCtrls.TOleControl.PreMessageFilter
+ 0001:001133C8       OleCtrls.TOleControl.PostMessageFilter
+ 0001:001133D4       OleCtrls.TOleControl.QueryService
+ 0001:0011340C       OleCtrls.Finalization
+ 0001:00113448       XWBRich20..TXWBTextAttributes
+ 0001:001134E4       XWBRich20..TParaAttributes
+ 0001:001136B0       XWBRich20..TConversion
+ 0001:00113738       XWBRich20..TXWBCustomRichEdit
+ 0001:00113910       XWBRich20..TXWBRichEdit
+ 0001:00114328       XWBRich20.TXWBTextAttributes.Create
+ 0001:00114374       XWBRich20.TXWBTextAttributes.InitFormat
+ 0001:00114390       XWBRich20.TXWBTextAttributes.GetAttributes
+ 0001:001143D0       XWBRich20.TXWBTextAttributes.SetAttributes
+ 0001:0011440C       XWBRich20.TXWBTextAttributes.GetCharset
+ 0001:00114420       XWBRich20.TXWBTextAttributes.SetCharset
+ 0001:00114450       XWBRich20.TXWBTextAttributes.GetColor
+ 0001:00114470       XWBRich20.TXWBTextAttributes.SetColor
+ 0001:001144B8       XWBRich20.TXWBTextAttributes.GetName
+ 0001:001144DC       XWBRich20.TXWBTextAttributes.SetName
+ 0001:0011454C       XWBRich20.TXWBTextAttributes.GetStyle
+ 0001:0011459C       XWBRich20.TXWBTextAttributes.SetStyle
+ 0001:001145F4       XWBRich20.TXWBTextAttributes.GetSize
+ 0001:00114610       XWBRich20.TXWBTextAttributes.SetSize
+ 0001:00114648       XWBRich20.TXWBTextAttributes.GetPitch
+ 0001:00114678       XWBRich20.TXWBTextAttributes.SetPitch
+ 0001:001146B8       XWBRich20.TXWBTextAttributes.Assign
+ 0001:001147E4       XWBRich20.TXWBTextAttributes.AssignTo
+ 0001:00114914       XWBRich20.TParaAttributes.Create
+ 0001:00114950       XWBRich20.TParaAttributes.InitPara
+ 0001:0011496C       XWBRich20.TParaAttributes.GetAttributes
+ 0001:001149A0       XWBRich20.TParaAttributes.SetAttributes
+ 0001:00114A04       XWBRich20.TParaAttributes.GetAlignment
+ 0001:00114A20       XWBRich20.TParaAttributes.SetAlignment
+ 0001:00114A58       XWBRich20.TParaAttributes.GetNumbering
+ 0001:00114A74       XWBRich20.TParaAttributes.SetNumbering
+ 0001:00114AD8       XWBRich20.TParaAttributes.GetFirstIndent
+ 0001:00114AF8       XWBRich20.TParaAttributes.SetFirstIndent
+ 0001:00114B34       XWBRich20.TParaAttributes.GetLeftIndent
+ 0001:00114B54       XWBRich20.TParaAttributes.SetLeftIndent
+ 0001:00114B90       XWBRich20.TParaAttributes.GetRightIndent
+ 0001:00114BB0       XWBRich20.TParaAttributes.SetRightIndent
+ 0001:00114BEC       XWBRich20.TParaAttributes.GetTab
+ 0001:00114C14       XWBRich20.TParaAttributes.SetTab
+ 0001:00114C68       XWBRich20.TParaAttributes.Assign
+ 0001:00114D04       XWBRich20.TConversion.ConvertReadStream
+ 0001:00114D18       XWBRich20.TConversion.ConvertWriteStream
+ 0001:00114D2C       XWBRich20..TRichEditStrings
+ 0001:00114E38       XWBRich20.TRichEditStrings.Destroy
+ 0001:00114E68       XWBRich20.TRichEditStrings.AddStrings
+ 0001:00114EE0       XWBRich20.TRichEditStrings.GetCount
+ 0001:00114F38       XWBRich20.TRichEditStrings.Get
+ 0001:00114F8C       XWBRich20.TRichEditStrings.Put
+ 0001:00115018       XWBRich20.TRichEditStrings.Insert
+ 0001:0011515C       XWBRich20.TRichEditStrings.Delete
+ 0001:00115208       XWBRich20.TRichEditStrings.Clear
+ 0001:00115218       XWBRich20.TRichEditStrings.SetUpdateState
+ 0001:00115268       XWBRich20.TRichEditStrings.EnableChange
+ 0001:001152C4       XWBRich20.TRichEditStrings.SetTextStr
+ 0001:00115314       XWBRich20.AdjustLineBreaks
+ 0001:00115348       XWBRich20.StreamSave
+ 0001:001153A8       XWBRich20.StreamLoad
+ 0001:001154A0       XWBRich20.TRichEditStrings.LoadFromStream
+ 0001:00115604       XWBRich20.TRichEditStrings.SaveToStream
+ 0001:00115714       XWBRich20.TRichEditStrings.LoadFromFile
+ 0001:00115820       XWBRich20.TRichEditStrings.SaveToFile
+ 0001:00115918       XWBRich20.TXWBCustomRichEdit.Create
+ 0001:00115A3C       XWBRich20.TXWBCustomRichEdit.Destroy
+ 0001:00115A98       XWBRich20.TXWBCustomRichEdit.Clear
+ 0001:00115AB0       XWBRich20.TXWBCustomRichEdit.CreateParams
+ 0001:00115B3C       XWBRich20.TXWBCustomRichEdit.CreateWnd
+ 0001:00115C88       XWBRich20.TXWBCustomRichEdit.DestroyWnd
+ 0001:00115D58       XWBRich20.TXWBCustomRichEdit.WMNCDestroy
+ 0001:00115D60       XWBRich20.TXWBCustomRichEdit.WMSetFont
+ 0001:00115D70       XWBRich20.TXWBCustomRichEdit.WMRButtonUp
+ 0001:00115DC8       XWBRich20.TXWBCustomRichEdit.CMFontChanged
+ 0001:00115DD8       XWBRich20.TXWBCustomRichEdit.DoSetMaxLength
+ 0001:00115DF8       XWBRich20.TXWBCustomRichEdit.GetCaretPos
+ 0001:00115E58       XWBRich20.TXWBCustomRichEdit.GetSelLength
+ 0001:00115E80       XWBRich20.TXWBCustomRichEdit.GetSelStart
+ 0001:00115EA4       XWBRich20.TXWBCustomRichEdit.GetSelTextBuf
+ 0001:00115F28       XWBRich20.TXWBCustomRichEdit.GetSelText
+ 0001:00115F6C       XWBRich20.TXWBCustomRichEdit.CMBiDiModeChanged
+ 0001:00115FC0       XWBRich20.TXWBCustomRichEdit.SetHideScrollBars
+ 0001:00115FD4       XWBRich20.TXWBCustomRichEdit.SetHideSelection
+ 0001:00116004       XWBRich20.TXWBCustomRichEdit.SetURLDetect
+ 0001:00116018       XWBRich20.TXWBCustomRichEdit.SetSelLength
+ 0001:00116074       XWBRich20.TXWBCustomRichEdit.GetPlainText
+ 0001:00116080       XWBRich20.TXWBCustomRichEdit.SetPlainText
+ 0001:0011608C       XWBRich20.TXWBCustomRichEdit.CMColorChanged
+ 0001:001160B8       XWBRich20.TXWBCustomRichEdit.SetRichEditStrings
+ 0001:001160C8       XWBRich20.TXWBCustomRichEdit.SetSelStart
+ 0001:001160F0       XWBRich20.TXWBCustomRichEdit.Print
+ 0001:001162C8       XWBRich20.TXWBCustomRichEdit.WMPaint
+ 0001:00116390       XWBRich20.TXWBCustomRichEdit.WMSetCursor
+ 0001:0011643C       XWBRich20.TXWBCustomRichEdit.CNNotify
+ 0001:00116598       XWBRich20.TXWBCustomRichEdit.SaveClipboard
+ 0001:001165C8       XWBRich20.TXWBCustomRichEdit.ProtectChange
+ 0001:001165F8       XWBRich20.TXWBCustomRichEdit.SelectionChange
+ 0001:00116618       XWBRich20.TXWBCustomRichEdit.RequestSize
+ 0001:00116638       XWBRich20.Finalization
+ 0001:00116688       frmSignonMessage..TfrmSignonMsg
+ 0001:00116888       frmSignonMessage.TfrmSignonMsg.Panel2Resize
+ 0001:001168AC       frmSignonMessage.TfrmSignonMsg.BitBtn1Click
+ 0001:001169E8       VERGENCECONTEXTORLib_TLB..TContextorControl
+ 0001:00116C24       VERGENCECONTEXTORLib_TLB..CoContextItemCollection
+ 0001:00116C88       VERGENCECONTEXTORLib_TLB..CoContextItem
+ 0001:00116CE4       VERGENCECONTEXTORLib_TLB.TContextorControl.InitControlData
+ 0001:00116D00       VERGENCECONTEXTORLib_TLB.DoCreate
+ 0001:00116D84       VERGENCECONTEXTORLib_TLB.TContextorControl.CreateControl
+ 0001:00116DA4       VERGENCECONTEXTORLib_TLB.TContextorControl.GetControlInterface
+ 0001:00116DC4       VERGENCECONTEXTORLib_TLB.TContextorControl.Get_CurrentContext
+ 0001:00116E20       VERGENCECONTEXTORLib_TLB.TContextorControl.Run
+ 0001:00116E84       VERGENCECONTEXTORLib_TLB.TContextorControl.Suspend
+ 0001:00116ED4       VERGENCECONTEXTORLib_TLB.TContextorControl.Resume
+ 0001:00116F24       VERGENCECONTEXTORLib_TLB.TContextorControl.StartContextChange
+ 0001:00116F74       VERGENCECONTEXTORLib_TLB.TContextorControl.EndContextChange
+ 0001:00116FE0       VERGENCECONTEXTORLib_TLB.TContextorControl.SetSurveyResponse
+ 0001:00117034       VERGENCECONTEXTORLib_TLB.CoContextItemCollection.Create
+ 0001:00117098       VERGENCECONTEXTORLib_TLB.CoContextItem.Create
+ 0001:001170FC       WinSock.WSAGetAsyncError
+ 0001:00117100       WinSock.accept
+ 0001:00117108       WinSock.bind
+ 0001:00117110       WinSock.closesocket
+ 0001:00117118       WinSock.connect
+ 0001:00117120       WinSock.getsockname
+ 0001:00117128       WinSock.htons
+ 0001:00117130       WinSock.inet_addr
+ 0001:00117138       WinSock.inet_ntoa
+ 0001:00117140       WinSock.listen
+ 0001:00117148       WinSock.ntohs
+ 0001:00117150       WinSock.recv
+ 0001:00117158       WinSock.send
+ 0001:00117160       WinSock.setsockopt
+ 0001:00117168       WinSock.socket
+ 0001:00117170       WinSock.gethostbyaddr
+ 0001:00117178       WinSock.gethostbyname
+ 0001:00117180       WinSock.gethostname
+ 0001:00117188       WinSock.WSAAsyncGetHostByName
+ 0001:00117190       WinSock.WSASetBlockingHook
+ 0001:00117198       WinSock.WSAUnhookBlockingHook
+ 0001:001171A0       WinSock.WSAGetLastError
+ 0001:001171A8       WinSock.WSACancelBlockingCall
+ 0001:001171B0       WinSock.WSAIsBlocking
+ 0001:001171B8       WinSock.WSAStartup
+ 0001:001171C0       WinSock.WSACleanup
+ 0001:001171C8       fDebugInfo..TfrmDebugInfo
+ 0001:00117384       Wsockc..TXWBWinsock
+ 0001:00117408       Wsockc.LPack
+ 0001:001175F8       Wsockc.SPack
+ 0001:00117734       Wsockc.TXWBWinsock.BuildApi
+ 0001:00117818       Wsockc.TXWBWinsock.NetworkConnect
+ 0001:00117AE8       Wsockc.TXWBWinsock.NetworkDisconnect
+ 0001:00117B54       Wsockc.TXWBWinsock.BuildHdr
+ 0001:00117C18       Wsockc.TXWBWinsock.BuildPar
+ 0001:001180FC       Wsockc.TXWBWinsock.StrPack
+ 0001:00118234       Wsockc.TXWBWinsock.VarPack
+ 0001:001182FC       Wsockc.NetBlockingHook
+ 0001:00118364       Wsockc.TXWBWinsock.NetCall
+ 0001:00118774       Wsockc.TXWBWinsock.tCall
+ 0001:001188C0       Wsockc.TXWBWinsock.NetStart
+ 0001:00118E0C       Wsockc.TXWBWinsock.NetStart1
+ 0001:0011977C       Wsockc.TXWBWinsock.NetStop
+ 0001:00119A0C       Wsockc.TXWBWinsock.GetServerPacket
+ 0001:00119ACC       Wsockc.TXWBWinsock.Create
+ 0001:00119B08       Wsockc.TXWBWinsock.NetError
+ 0001:0011AB6C       Wsockc.TXWBWinsock.BuildPar1
+ 0001:0011B080       Wsockc.Finalization
+ 0001:0011B0BC       SelDiv..TSelDivForm
+ 0001:0011B2E8       SelDiv.ChooseDiv
+ 0001:0011B4F0       SelDiv.SelectDivision
+ 0001:0011B704       SelDiv.MultDiv
+ 0001:0011B7C0       SelDiv.SetDiv
+ 0001:0011B8C8       SelDiv.TSelDivForm.Enter
+ 0001:0011B8F8       SelDiv.TSelDivForm.btnOKClick
+ 0001:0011B9AC       SelDiv.TSelDivForm.btnCancelClick
+ 0001:0011B9B4       SelDiv.TSelDivForm.btnHelpClick
+ 0001:0011BA80       SelDiv.TSelDivForm.FormCreate
+ 0001:0011BBF4       SelDiv.Finalization
+ 0001:0011BC30       RpcSLogin.ValidAVCodes
+ 0001:0011BE50       RpcSLogin.ValidAppHandle
+ 0001:0011C034       RpcSLogin.ValidNTToken
+ 0001:0011C038       RpcSLogin.SilentLogIn
+ 0001:0011C2B8       RpcSLogin.GetUserInfo
+ 0001:0011C488       fRPCBErrMsg..TfrmErrMsg
+ 0001:0011C640       fRPCBErrMsg.RPCBShowErrMsg
+ 0001:0011C6C8       fRPCBErrMsg.TfrmErrMsg.RPCBShowException
+ 0001:0011C730       CCOWRPCBroker..TCCOWRPCBroker
+ 0001:0011C894       CCOWRPCBroker.TCCOWRPCBroker.SetConnected
+ 0001:0011D08C       CCOWRPCBroker.TCCOWRPCBroker.WasUserDefined
+ 0001:0011D094       CCOWRPCBroker.TCCOWRPCBroker.IsUserCleared
+ 0001:0011D1D8       CCOWRPCBroker.AuthenticateUser
+ 0001:0011D6E4       CCOWRPCBroker.TCCOWRPCBroker.GetCCOWHandle
+ 0001:0011D82C       CCOWRPCBroker.TCCOWRPCBroker.CCOWsetUser
+ 0001:0011DBBC       CCOWRPCBroker.TCCOWRPCBroker.GetCCOWtoken
+ 0001:0011DECC       CCOWRPCBroker.TCCOWRPCBroker.IsUserContextPending
+ 0001:0011E2E8       CCOWRPCBroker.Finalization
+ 0001:0011E34C       VCEdit..TVCEdit
+ 0001:0011E430       VCEdit..TfrmVCEdit
+ 0001:0011E6A0       VCEdit.TVCEdit.Create
+ 0001:0011E6DC       VCEdit.TVCEdit.Destroy
+ 0001:0011E704       VCEdit.TVCEdit.ChangeVCKnowOldVC
+ 0001:0011E768       VCEdit.TVCEdit.ChangeVC
+ 0001:0011E88C       VCEdit.TVCEdit.NoChange
+ 0001:0011E930       VCEdit.TfrmVCEdit.btnOKClick
+ 0001:0011ED2C       VCEdit.TfrmVCEdit.btnHelpClick
+ 0001:0011EE58       VCEdit.TfrmVCEdit.edtNewVCExit
+ 0001:0011EE84       VCEdit.TfrmVCEdit.edtOldVCChange
+ 0001:0011EF14       AddServer..TfrmAddServer
+ 0001:0011F11C       Rpcconf1..TrpcConfig
+ 0001:0011F3E4       Rpcconf1.IsIPAddress
+ 0001:0011F464       Rpcconf1.GetServerIP
+ 0001:0011F52C       Rpcconf1.TrpcConfig.cboServerClick
+ 0001:0011F634       Rpcconf1.TrpcConfig.FormCreate
+ 0001:0011F718       Rpcconf1.TrpcConfig.FormClose
+ 0001:0011F758       Rpcconf1.GetServerInfo
+ 0001:0011FB20       Rpcconf1.TrpcConfig.butOkClick
+ 0001:0011FBD8       Rpcconf1.TrpcConfig.butCancelClick
+ 0001:0011FC64       Rpcconf1.TrpcConfig.FormDestroy
+ 0001:0011FC9C       Rpcconf1.TrpcConfig.cboServerExit
+ 0001:0011FCA0       Rpcconf1.TrpcConfig.NewClick
+ 0001:0011FE4C       Rpcconf1.Finalization
+ 0001:0011FE90       RpcNet..TRPCFRM1
+ 0001:00120030       RpcNet.libOpen
+ 0001:00120094       RpcNet.libClose
+ 0001:001200B4       RpcNet.libGetHostIP1
+ 0001:001202AC       RpcNet.TRPCFRM1.WndProc
+ 0001:001202D8       RpcNet.TRPCFRM1.XWBGHIP
+ 0001:00120480       RpcNet.Finalization
+ 0001:001204C8       Loginfrm..TfrmSignon
+ 0001:0012087C       Loginfrm.PrepareSignonForm
+ 0001:00120884       Loginfrm.SetUpSignOn
+ 0001:00120ABC       Loginfrm.TfrmSignon.btnOkClick
+ 0001:00120EAC       Loginfrm.TfrmSignon.btnCancelClick
+ 0001:00120EF8       Loginfrm.TfrmSignon.FormShow
+ 0001:0012109C       Loginfrm.TfrmSignon.FormCreate
+ 0001:001215F8       Loginfrm.TfrmSignon.WMSysCommand
+ 0001:00121788       Loginfrm.TfrmSignon.FormClose
+ 0001:00121950       Loginfrm.TfrmSignon.introTextURLClick
+ 0001:001219BC       Loginfrm.TfrmSignon.DoVerify
+ 0001:00121A64       fSgnonDlg..TfrmSignonDialog
+ 0001:00121C28       Sgnoncnf..TSignonValues
+ 0001:00121CB0       Sgnoncnf..TfrmSignonConfig
+ 0001:00121F80       Sgnoncnf..TSignonConfiguration
+ 0001:00122028       Sgnoncnf.TfrmSignonConfig.Button1Click
+ 0001:00122034       Sgnoncnf.TfrmSignonConfig.OKBtnClick
+ 0001:00122038       Sgnoncnf.TSignonConfiguration.ReadRegistrySettings
+ 0001:00122334       Sgnoncnf.StoreFontStyle
+ 0001:001223C0       Sgnoncnf.TfrmSignonConfig.FormShow
+ 0001:001223C4       Sgnoncnf.RestoreFontStyles
+ 0001:001224C0       Sgnoncnf.TfrmSignonConfig.rgrIntroBackClrClick
+ 0001:001224CC       Sgnoncnf.TSignonConfiguration.ShowModal
+ 0001:00122714       Sgnoncnf.TSignonConfiguration.IntroBackColor
+ 0001:001227DC       Sgnoncnf.TSignonConfiguration.FontDialog
+ 0001:00122A84       Sgnoncnf.TSignonConfiguration.ResetToDefaults
+ 0001:00122C54       Sgnoncnf.TSignonConfiguration.UserClickedOK
+ 0001:00123094       Sgnoncnf.TSignonConfiguration.Create
+ 0001:00123100       Sgnoncnf.TSignonConfiguration.UpdateWindow
+ 0001:00123208       Sgnoncnf.TSignonValues.Clear
+ 0001:00123288       Sgnoncnf.TSignonValues.Create
+ 0001:001232CC       Sgnoncnf.TSignonValues.Destroy
+ 0001:001232FC       Sgnoncnf.TSignonValues.SetSize
+ 0001:001233B0       Sgnoncnf.TSignonValues.SetPosition
+ 0001:00123464       Sgnoncnf.TSignonValues.SetIntroFont
+ 0001:00123504       Sgnoncnf.TSignonValues.SetIntroFontStyles
+ 0001:00123544       Sgnoncnf.TSignonValues.SetEqual
+ 0001:00123600       Sgnoncnf.TSignonValues.SetFont
+ 0001:001236A0       Sgnoncnf.TSignonValues.SetTextColor
+ 0001:001236AC       Sgnoncnf.Finalization
+ 0001:001237BC       Trpcb..EBrokerError
+ 0001:00123830       Trpcb..TString
+ 0001:00123898       Trpcb..TMult
+ 0001:0012393C       Trpcb..TParamRecord
+ 0001:001239FC       Trpcb..TParams
+ 0001:00123AA0       Trpcb..TVistaLogin
+ 0001:00123C34       Trpcb..TVistaUser
+ 0001:00123CE0       Trpcb..TRPCBroker
+ 0001:0012400C       Trpcb.TMult.Create
+ 0001:00124050       Trpcb.TMult.Destroy
+ 0001:0012408C       Trpcb.TMult.Assign
+ 0001:001241EC       Trpcb.TMult.ClearAll
+ 0001:00124230       Trpcb.TMult.GetCount
+ 0001:0012424C       Trpcb.TMult.GetFirst
+ 0001:00124278       Trpcb.TMult.GetLast
+ 0001:001242B0       Trpcb.TMult.GetFMultiple
+ 0001:00124504       Trpcb.TMult.SetFMultiple
+ 0001:001245AC       Trpcb.TMult.Order
+ 0001:00124644       Trpcb.TMult.Position
+ 0001:00124650       Trpcb.TMult.Subscript
+ 0001:00124684       Trpcb.TParamRecord.Create
+ 0001:001246F4       Trpcb.TParamRecord.Destroy
+ 0001:00124728       Trpcb.TParams.Create
+ 0001:0012476C       Trpcb.TParams.Destroy
+ 0001:001247A8       Trpcb.TParams.Assign
+ 0001:0012483C       Trpcb.TParams.Clear
+ 0001:0012488C       Trpcb.TParams.GetCount
+ 0001:001248A8       Trpcb.TParams.GetParameter
+ 0001:00124910       Trpcb.TRPCBroker.Create
+ 0001:00124BD4       Trpcb.TRPCBroker.Destroy
+ 0001:00124C6C       Trpcb.TRPCBroker.CreateContext
+ 0001:00124EE4       Trpcb.TRPCBroker.Loaded
+ 0001:00124EEC       Trpcb.TRPCBroker.Call
+ 0001:00124F64       Trpcb.TRPCBroker.lstCall
+ 0001:00124F84       Trpcb.TRPCBroker.strCall
+ 0001:00124FA4       Trpcb.TRPCBroker.SetConnected
+ 0001:001254F8       Trpcb.TRPCBroker.SetClearParameters
+ 0001:00125518       Trpcb.TRPCBroker.SetClearResults
+ 0001:00125538       Trpcb.TRPCBroker.SetResults
+ 0001:00125548       Trpcb.TRPCBroker.SetRPCTimeLimit
+ 0001:00125570       Trpcb.TRPCBroker.SetServer
+ 0001:001255C4       Trpcb.TRPCBroker.pchCall
+ 0001:00125920       Trpcb.StoreConnection
+ 0001:00125A90       Trpcb.RemoveConnection
+ 0001:00125B78       Trpcb.ExistingSocket
+ 0001:00125B80       Trpcb.AuthenticateUser
+ 0001:00125FDC       Trpcb.GetBrokerInfo
+ 0001:00126144       Trpcb.NoSignOnNeeded
+ 0001:00126148       Trpcb.ProcessExecute
+ 0001:00126208       Trpcb.GetAppHandle
+ 0001:00126254       Trpcb.TRPCBroker.DoPulseOnTimer
+ 0001:0012642C       Trpcb.TRPCBroker.SetKernelLogIn
+ 0001:00126434       Trpcb.TRPCBroker.SetUser
+ 0001:0012643C       Trpcb.TVistaLogin.Create
+ 0001:00126480       Trpcb.TVistaLogin.Destroy
+ 0001:001264B4       Trpcb.TVistaLogin.FailedLogin
+ 0001:001264DC       Trpcb.TVistaLogin.SetAccessCode
+ 0001:001264F0       Trpcb.TVistaLogin.SetDivision
+ 0001:00126504       Trpcb.TVistaLogin.SetDuz
+ 0001:00126518       Trpcb.TVistaLogin.SetErrorText
+ 0001:0012652C       Trpcb.TVistaLogin.SetLogInHandle
+ 0001:00126540       Trpcb.TVistaLogin.SetMode
+ 0001:00126544       Trpcb.TVistaLogin.SetMultiDivision
+ 0001:00126548       Trpcb.TVistaLogin.SetPromptDiv
+ 0001:0012654C       Trpcb.TVistaLogin.SetVerifyCode
+ 0001:00126560       Trpcb.TVistaUser.SetDivision
+ 0001:00126574       Trpcb.TVistaUser.SetDTime
+ 0001:00126588       Trpcb.TVistaUser.SetDUZ
+ 0001:0012659C       Trpcb.TVistaUser.SetLanguage
+ 0001:001265B0       Trpcb.TVistaUser.SetName
+ 0001:001265C4       Trpcb.TVistaUser.SetServiceSection
+ 0001:001265D8       Trpcb.TVistaUser.SetStandardName
+ 0001:001265EC       Trpcb.TVistaUser.SetTitle
+ 0001:00126600       Trpcb.ShowApplicationAndFocusOK
+ 0001:001266D8       Trpcb.Finalization
+ 0001:0012671C       ORNet.EnsureBroker
+ 0001:00126784       ORNet.SetList
+ 0001:0012682C       ORNet.SetParams
+ 0001:00126D24       ORNet.UpdateContext
+ 0001:00126DDC       ORNet.IsBaseContext
+ 0001:00126E00       ORNet.CallBrokerInContext
+ 0001:001273D8       ORNet.CallBroker
+ 0001:001273E8       ORNet.SetBrokerServer
+ 0001:00127448       ORNet.AuthorizedOption
+ 0001:0012748C       ORNet.ConnectToServer
+ 0001:00127728       ORNet.GetRPCCursor
+ 0001:00127784       ORNet.CallV
+ 0001:001277D0       ORNet.sCallV
+ 0001:0012785C       ORNet.tCallV
+ 0001:001278F8       ORNet.RetainedRPCCount
+ 0001:00127904       ORNet.SetRetainedRPCMax
+ 0001:00127910       ORNet.GetRPCMax
+ 0001:00127918       ORNet.LoadRPCData
+ 0001:00127944       ORNet.DottedIPStr
+ 0001:001279B0       ORNet.Finalization
+ 0001:00127A30       fAutoSz..TfrmAutoSz
+ 0001:00127BD8       fAutoSz..TSizeRatio
+ 0001:00127C30       fAutoSz.TSizeRatio.Create
+ 0001:00127CA4       fAutoSz.TfrmAutoSz.Loaded
+ 0001:00127DBC       fAutoSz.TfrmAutoSz.FormResize
+ 0001:00127EF4       fAutoSz.TfrmAutoSz.FormDestroy
+ 0001:00127F34       fAutoSz.Finalization
+ 0001:00127F64       rWVEHR.GetPatientBriefAge
+ 0001:00128068       AppEvnts..TCustomApplicationEvents
+ 0001:00128134       AppEvnts..TApplicationEvents
+ 0001:00128448       AppEvnts..TMultiCaster
+ 0001:001284FC       AppEvnts.TCustomApplicationEvents.Create
+ 0001:00128548       AppEvnts.TCustomApplicationEvents.DoActionExecute
+ 0001:0012855C       AppEvnts.TCustomApplicationEvents.DoActionUpdate
+ 0001:00128570       AppEvnts.TCustomApplicationEvents.DoActivate
+ 0001:00128584       AppEvnts.TCustomApplicationEvents.DoDeactivate
+ 0001:00128598       AppEvnts.TCustomApplicationEvents.DoException
+ 0001:001285C8       AppEvnts.TCustomApplicationEvents.DoHelp
+ 0001:001285E8       AppEvnts.TCustomApplicationEvents.DoHint
+ 0001:00128660       AppEvnts.TCustomApplicationEvents.DoIdle
+ 0001:00128674       AppEvnts.TCustomApplicationEvents.DoMessage
+ 0001:00128688       AppEvnts.TCustomApplicationEvents.DoMinimize
+ 0001:0012869C       AppEvnts.TCustomApplicationEvents.DoRestore
+ 0001:001286B8       AppEvnts.TCustomApplicationEvents.DoShortcut
+ 0001:001286D4       AppEvnts.TCustomApplicationEvents.DoShowHint
+ 0001:001286FC       AppEvnts.TCustomApplicationEvents.DoSettingChange
+ 0001:00128728       AppEvnts.TCustomApplicationEvents.DoModalBegin
+ 0001:00128744       AppEvnts.TCustomApplicationEvents.DoModalEnd
+ 0001:00128760       AppEvnts.TMultiCaster.AddAppEvent
+ 0001:00128780       AppEvnts.TMultiCaster.BeginDispatch
+ 0001:00128784       AppEvnts.TMultiCaster.Create
+ 0001:001288FC       AppEvnts.TMultiCaster.Destroy
+ 0001:00128A38       AppEvnts.TMultiCaster.DoActionExecute
+ 0001:00128AB4       AppEvnts.TMultiCaster.DoActionUpdate
+ 0001:00128B30       AppEvnts.TMultiCaster.DoActivate
+ 0001:00128BA4       AppEvnts.TMultiCaster.DoDeactivate
+ 0001:00128C18       AppEvnts.TMultiCaster.DoException
+ 0001:00128CD4       AppEvnts.TMultiCaster.DoHelp
+ 0001:00128D74       AppEvnts.TMultiCaster.DoHint
+ 0001:00128DE8       AppEvnts.TMultiCaster.DoIdle
+ 0001:00128E64       AppEvnts.TMultiCaster.DoMessage
+ 0001:00128EE0       AppEvnts.TMultiCaster.DoMinimize
+ 0001:00128F54       AppEvnts.TMultiCaster.DoRestore
+ 0001:00128FC8       AppEvnts.TMultiCaster.DoShortcut
+ 0001:00129044       AppEvnts.TMultiCaster.DoShowHint
+ 0001:001290C4       AppEvnts.TMultiCaster.DoSettingChange
+ 0001:00129148       AppEvnts.TMultiCaster.EndDispatch
+ 0001:00129198       AppEvnts.TMultiCaster.GetAppEvents
+ 0001:001291AC       AppEvnts.TMultiCaster.GetCount
+ 0001:001291B4       AppEvnts.TMultiCaster.DoModalBegin
+ 0001:00129228       AppEvnts.TMultiCaster.DoModalEnd
+ 0001:0012929C       AppEvnts.Finalization
+ 0001:001293A4       Tabs.Finalization
+ 0001:00129454       fTimeout..TfrmTimeout
+ 0001:00129680       fTimeout.AllowTimeout
+ 0001:001296F4       fTimeout.TfrmTimeout.FormCreate
+ 0001:00129774       fTimeout.TfrmTimeout.cmdContinueClick
+ 0001:00129784       fTimeout.TfrmTimeout.timCountDownTimer
+ 0001:00129840       uInit..TCPRSTimeoutTimer
+ 0001:001298FC       uInit.AutoUpdateCheck
+ 0001:00129BC8       uInit.TimeoutKeyHook
+ 0001:00129C00       uInit.TimeoutMouseHook
+ 0001:00129C44       uInit.InitTimeOut
+ 0001:00129CF4       uInit.UpdateTimeOutInterval
+ 0001:00129D20       uInit.TimedOut
+ 0001:00129D28       uInit.ShutDownTimeOut
+ 0001:00129D80       uInit.TCPRSTimeoutTimer.ResetTimeout
+ 0001:00129DA4       uInit.TCPRSTimeoutTimer.timTimeoutTimer
+ 0001:00129E04       uInit.Finalization
+ 0001:00129E3C       fPtSelMsg..TfrmPtSelMsg
+ 0001:0012A068       fPtSelMsg.ShowPatientSelectMessages
+ 0001:0012A128       fPtSelMsg.HidePatientSelectMessages
+ 0001:0012A144       fPtSelMsg.TfrmPtSelMsg.timCloseTimer
+ 0001:0012A214       fPtSelMsg.TfrmPtSelMsg.cmdCloseClick
+ 0001:0012A21C       fPtSelMsg.TfrmPtSelMsg.FormClose
+ 0001:0012A220       fPtSelMsg.TfrmPtSelMsg.FormCreate
+ 0001:0012A298       fPtSelMsg.TfrmPtSelMsg.FormDestroy
+ 0001:0012A2A8       fPtSelMsg.TfrmPtSelMsg.ActiveFormChanged
+ 0001:0012A338       fPtSelMsg.TfrmPtSelMsg.ClearEvents
+ 0001:0012A38C       fPtSelMsg.TfrmPtSelMsg.TabChanged
+ 0001:0012A3B0       rVitals.GetLastVital
+ 0001:0012A444       rVitals.VerifyVital
+ 0001:0012A540       rVitals.ValAndStoreVitals
+ 0001:0012A6E4       rVitals.GetVitalFromNoteIEN
+ 0001:0012A79C       rVitals.GetVitalsFromEncDateTime
+ 0001:0012A858       rVitals.Finalization
+ 0001:0012A894       ORDtTmCal..TORCalendar
+ 0001:0012AA24       ORDtTmCal.TORCalendar.DrawCell
+ 0001:0012AB80       ORDtTmCal.TORCalendar.KeyDown
+ 0001:0012ABF0       ORDtTm..TORfrmDtTm
+ 0001:0012AFF8       ORDtTm..TORDateTimeDlg
+ 0001:0012B130       ORDtTm..TORDateButton
+ 0001:0012B298       ORDtTm..TORDateEdit
+ 0001:0012B4E4       ORDtTm..TORDateBox
+ 0001:0012B710       ORDtTm..TORDayCombo
+ 0001:0012B864       ORDtTm..TORMonthCombo
+ 0001:0012B9C0       ORDtTm..TORYearEdit
+ 0001:0012BBB0       ORDtTm..TORDateCombo
+ 0001:0012BF50       ORDtTm.ActiveBroker
+ 0001:0012BF7C       ORDtTm.ServerFMNow
+ 0001:0012C020       ORDtTm.ServerNow
+ 0001:0012C058       ORDtTm.ServerToday
+ 0001:0012C0A8       ORDtTm.ServerParseFMDate
+ 0001:0012C150       ORDtTm.RelativeDateTime
+ 0001:0012C2C4       ORDtTm.LoadEllipsis
+ 0001:0012C36C       ORDtTm.TORfrmDtTm.FormCreate
+ 0001:0012C3AC       ORDtTm.TORfrmDtTm.calSelectChange
+ 0001:0012C444       ORDtTm.TORfrmDtTm.imgPrevMonthMouseDown
+ 0001:0012C46C       ORDtTm.TORfrmDtTm.imgNextMonthMouseDown
+ 0001:0012C494       ORDtTm.TORfrmDtTm.imgPrevMonthClick
+ 0001:0012C4B4       ORDtTm.TORfrmDtTm.imgNextMonthClick
+ 0001:0012C4D4       ORDtTm.TORfrmDtTm.imgPrevMonthMouseUp
+ 0001:0012C4FC       ORDtTm.TORfrmDtTm.imgNextMonthMouseUp
+ 0001:0012C524       ORDtTm.TORfrmDtTm.cmdTodayClick
+ 0001:0012C588       ORDtTm.TORfrmDtTm.txtTimeChange
+ 0001:0012C5D8       ORDtTm.TORfrmDtTm.lstHourClick
+ 0001:0012C68C       ORDtTm.TORfrmDtTm.lstMinuteClick
+ 0001:0012C788       ORDtTm.TORfrmDtTm.cmdNowClick
+ 0001:0012C82C       ORDtTm.TORfrmDtTm.cmdMidnightClick
+ 0001:0012C860       ORDtTm.TORfrmDtTm.cmdOKClick
+ 0001:0012CA68       ORDtTm.TORfrmDtTm.cmdCancelClick
+ 0001:0012CA88       ORDtTm.TORfrmDtTm.Loaded
+ 0001:0012CAA4       ORDtTm.TORDateTimeDlg.Create
+ 0001:0012CB10       ORDtTm.TORDateTimeDlg.Execute
+ 0001:0012CE0C       ORDtTm.TORDateTimeDlg.GetFMDateTime
+ 0001:0012CE30       ORDtTm.TORDateTimeDlg.SetDateOnly
+ 0001:0012CE74       ORDtTm.TORDateTimeDlg.SetFMDateTime
+ 0001:0012CEA8       ORDtTm.TORDateTimeDlg.SetRequireTime
+ 0001:0012CED4       ORDtTm.TORDateEdit.CreateParams
+ 0001:0012CF04       ORDtTm.TORDateBox.Create
+ 0001:0012D024       ORDtTm.TORDateBox.WMSize
+ 0001:0012D0B0       ORDtTm.TORDateBox.SetTemplateField
+ 0001:0012D174       ORDtTm.TORDateBox.SupportsDynamicProperty
+ 0001:0012D190       ORDtTm.TORDateBox.ButtonClick
+ 0001:0012D320       ORDtTm.TORDateBox.Change
+ 0001:0012D33C       ORDtTm.TORDateBox.KeyDown
+ 0001:0012D384       ORDtTm.TORDateBox.GetFMDateTime
+ 0001:0012D430       ORDtTm.TORDateBox.GetRelativeTime
+ 0001:0012D578       ORDtTm.TORDateBox.SetDateOnly
+ 0001:0012D628       ORDtTm.TORDateBox.SetFMDateTime
+ 0001:0012D654       ORDtTm.TORDateBox.SetRequireTime
+ 0001:0012D6E0       ORDtTm.TORDateBox.SetEditRect
+ 0001:0012D748       ORDtTm.TORDateBox.UpdateText
+ 0001:0012D860       ORDtTm.TORDateBox.Validate
+ 0001:0012D9EC       ORDtTm.TORDateBox.IsValid
+ 0001:0012DA9C       ORDtTm.TORDateBox.SetBlackColorMode
+ 0001:0012DAE4       ORDtTm.TORDateBox.SetCaption
+ 0001:0012DB8C       ORDtTm.TORDateBox.GetCaption
+ 0001:0012DBB0       ORDtTm.TORDateBox.GetDynamicProperty
+ 0001:0012DBE0       ORDtTm.IsLeapYear
+ 0001:0012DC2C       ORDtTm.DaysPerMonth
+ 0001:0012DC74       ORDtTm.TORYearEdit.SetTemplateField
+ 0001:0012DCBC       ORDtTm.TORDateCombo.Create
+ 0001:0012DD68       ORDtTm.TORDateCombo.Destroy
+ 0001:0012DDE4       ORDtTm.TORDateCombo.GetYearSize
+ 0001:0012DE20       ORDtTm.TORDateCombo.InitDays
+ 0001:0012DFB0       ORDtTm.TORDateCombo.InitMonths
+ 0001:0012E0F8       ORDtTm.TORDateCombo.Rebuild
+ 0001:0012E7C4       ORDtTm.TORDateCombo.SetBlackColorMode
+ 0001:0012E818       ORDtTm.TORDateCombo.SetDay
+ 0001:0012E8D4       ORDtTm.TORDateCombo.SetIncludeBtn
+ 0001:0012E90C       ORDtTm.TORDateCombo.SetIncludeDay
+ 0001:0012E968       ORDtTm.TORDateCombo.SetIncludeMonth
+ 0001:0012E9C4       ORDtTm.TORDateCombo.SetMonth
+ 0001:0012EA4C       ORDtTm.TORDateCombo.SetLongMonths
+ 0001:0012EA84       ORDtTm.TORDateCombo.SetYear
+ 0001:0012EC18       ORDtTm.TORDateCombo.DayChanged
+ 0001:0012EC68       ORDtTm.TORDateCombo.MonthChanged
+ 0001:0012ECC0       ORDtTm.TORDateCombo.YearChanged
+ 0001:0012EDF4       ORDtTm.TORDateCombo.CheckDays
+ 0001:0012EED8       ORDtTm.TORDateCombo.Loaded
+ 0001:0012EF04       ORDtTm.TORDateCombo.Paint
+ 0001:0012EF30       ORDtTm.TORDateCombo.BtnClicked
+ 0001:0012F0EC       ORDtTm.TORDateCombo.YearUDChange
+ 0001:0012F280       ORDtTm.TORDateCombo.YearKeyPress
+ 0001:0012F370       ORDtTm.TORDateCombo.GetFMDate
+ 0001:0012F3CC       ORDtTm.TORDateCombo.SetFMDate
+ 0001:0012F4DC       ORDtTm.TORDateCombo.DoChange
+ 0001:0012F508       ORDtTm.TORDateCombo.Resized
+ 0001:0012F524       ORDtTm.TORDateCombo.CMFontChanged
+ 0001:0012F54C       ORDtTm.TORDateCombo.Text
+ 0001:0012F728       ORDtTm.TORDateCombo.SetTemplateField
+ 0001:0012F760       ORDtTm.Finalization
+ 0001:0012F790       fVitalsDate..TfrmVitalsDate
+ 0001:0012F9A0       fVitalsDate.TfrmVitalsDate.btnNowClick
+ 0001:0012F9C0       fVitalsDate.TfrmVitalsDate.FormCreate
+ 0001:0012FC90       uVitals.CloseVitalsDLL
+ 0001:0012FCDC       uVitals.VitalErrorText
+ 0001:0012FD8C       uVitals.InitPainCombo
+ 0001:0012FF3C       uVitals.ConvertVital
+ 0001:00130184       uVitals.GetVitalStr
+ 0001:0013028C       uVitals.GetVitalUser
+ 0001:001302E0       uVitals.AddVital
+ 0001:0013036C       uVitals.AssignVitals2List
+ 0001:00130544       uVitals.VitalInvalid
+ 0001:00130698       uVitals.VitalControlTag
+ 0001:001306D0       uVitals.ConvertHeight2Inches
+ 0001:001308B4       uVitals.FormatVitalForNote
+ 0001:00130A44       uVitals.ConvertVitalData
+ 0001:00130EB8       uVitals.ValidVitalsDate
+ 0001:00131158       uVitals.IsNumericWeight
+ 0001:00131190       uVitals.Finalization
+ 0001:00131220       uReports..TCellObject
+ 0001:001312BC       uReports..TRowObject
+ 0001:001313F0       uReports.TCellObject.Create
+ 0001:0013142C       uReports.TCellObject.Destroy
+ 0001:00131450       uReports.TCellObject.Add
+ 0001:00131588       uReports.MakeReportTreeObject
+ 0001:0013180C       uReports.TRowObject.Create
+ 0001:0013184C       uReports.TRowObject.Destroy
+ 0001:0013187C       uReports.TRowObject.Add
+ 0001:0013191C       uReports.TRowObject.Clear
+ 0001:00131954       uReports.IsValidNumber
+ 0001:00131A90       uReports.StringToFMDateTime
+ 0001:00131CD8       uReports.ShortDateStrToDate
+ 0001:00131F34       uReports.StripSpace
+ 0001:00131FBC       uReports.MakeProcedureTreeObject
+ 0001:001320A0       uReports.ReportTextFontChange
+ 0001:001320B0       uReports.CreateReportTextComponent
+ 0001:00132138       rECS..TECSReport
+ 0001:001321CC       rECS.TECSReport.Create
+ 0001:0013222C       rECS.GetVisitID
+ 0001:001322E0       rECS.GetDivisionID
+ 0001:0013235C       rECS.SaveUserPath
+ 0001:001323EC       rECS.FormatECSDate
+ 0001:00132570       rECS.LoadECSReportText
+ 0001:00132794       rECS.PrintECSReportToDevice
+ 0001:001334F4       SHDocVw..TWebBrowser
+ 0001:00133FD4       SHDocVw.TWebBrowser.InitControlData
+ 0001:00133FF0       SHDocVw.DoCreate
+ 0001:00134074       SHDocVw.TWebBrowser.CreateControl
+ 0001:00134094       SHDocVw.TWebBrowser.GetControlInterface
+ 0001:001340B4       SHDocVw.TWebBrowser.Navigate
+ 0001:00134120       ORDtTmRng..TORfrmDateRange
+ 0001:00134354       ORDtTmRng..TORDateRangeDlg
+ 0001:001345C8       ORDtTmRng.TORDateRangeDlg.Create
+ 0001:00134694       ORDtTmRng.TORDateRangeDlg.Execute
+ 0001:00134914       ORDtTmRng.TORDateRangeDlg.SetDateOnly
+ 0001:001349A8       ORDtTmRng.TORDateRangeDlg.SetRequireTime
+ 0001:00134A08       ORDtTmRng.TORDateRangeDlg.SetFMDateStart
+ 0001:00134A6C       ORDtTmRng.TORDateRangeDlg.SetFMDateStop
+ 0001:00134AD0       ORDtTmRng.TORDateRangeDlg.SetTextOfStart
+ 0001:00134AEC       ORDtTmRng.TORDateRangeDlg.SetTextOfStop
+ 0001:00134B08       ORDtTmRng.TORfrmDateRange.cmdOKClick
+ 0001:00134BD4       ORDtTmRng.TORfrmDateRange.cmdCancelClick
+ 0001:00134BE0       ORDtTmRng.TORfrmDateRange.FormCreate
+ 0001:00134C8C       ORDtTmRng.TORfrmDateRange.FormDestroy
+ 0001:00134CA8       ORDtTmRng.TORfrmDateRange.Loaded
+ 0001:00134CC0       fHSplit..TfrmHSplit
+ 0001:00134E98       rGraphs.rpcTestGroups
+ 0001:00134EF0       rGraphs.rpcATestGroup
+ 0001:00134F54       rGraphs.rpcPublicEdit
+ 0001:00134FF4       rGraphs.rpcReportParams
+ 0001:0013504C       rGraphs.rpcDetailDay
+ 0001:00135168       rGraphs.rpcDetailSelected
+ 0001:00135268       rGraphs.rpcFastData
+ 0001:001352E0       rGraphs.rpcFastItems
+ 0001:00135368       rGraphs.rpcFastLabs
+ 0001:001353E0       rGraphs.rpcFastTask
+ 0001:00135448       rGraphs.rpcGetAllItems
+ 0001:001354B4       rGraphs.rpcGetTypes
+ 0001:00135598       rGraphs.rpcGetItems
+ 0001:0013564C       rGraphs.rpcClass
+ 0001:001356F4       rGraphs.rpcTaxonomy
+ 0001:001357C4       rGraphs.rpcGetItemData
+ 0001:00135884       rGraphs.rpcGetGraphDateRange
+ 0001:0013591C       rGraphs.rpcGetGraphSettings
+ 0001:00135970       rGraphs.rpcSetGraphSettings
+ 0001:00135A10       rGraphs.rpcGetGraphSizing
+ 0001:00135A64       rGraphs.rpcSetGraphSizing
+ 0001:00135AB0       rGraphs.rpcGetGraphProfiles
+ 0001:00135BAC       rGraphs.rpcSetGraphProfile
+ 0001:00135C5C       rGraphs.rpcDeleteGraphProfile
+ 0001:00135D00       rGraphs.rpcGetTestSpec
+ 0001:00135D4C       rGraphs.rpcTesting
+ 0001:00135D94       rGraphs.rpcGetViews
+ 0001:00135E4C       rGraphs.rpcLookupItems
+ 0001:00135ED4       rGraphs.rpcDateItem
+ 0001:00135F9C       rGraphs.onoff
+ 0001:00135FA0       uGraphs..TGraphSetting
+ 0001:0013601C       uGraphs..TGraphActivity
+ 0001:001360BC       uGraphs.GraphSettingsInit
+ 0001:001364A4       fGraphData..TfrmGraphData
+ 0001:0013679C       fGraphData.TfrmGraphData.FormCreate
+ 0001:001367C0       fGraphData.TfrmGraphData.MakeGraphActivity
+ 0001:00136830       fGraphData.TfrmGraphData.MakeUserSettings
+ 0001:00136A40       fGraphData.GraphDataOnUser
+ 0001:00136BAC       fGraphData.TfrmGraphData.ClearPtData
+ 0001:00136C88       fGraphData.TfrmGraphData.AllowContextChange
+ 0001:00136C8C       fGraphData.TfrmGraphData.MakeGtsl
+ 0001:00136EB0       fGraphData.TfrmGraphData.ClearGtsl
+ 0001:00136FE0       fGraphData.TfrmGraphData.FreeGtsl
+ 0001:00137104       fGraphData.TfrmGraphData.btnDataClick
+ 0001:001378C4       fGraphData.TfrmGraphData.btnRefreshClick
+ 0001:001378D8       fGraphData.TfrmGraphData.btnTestingClick
+ 0001:001378F4       fGraphData.TfrmGraphData.MakeMemos
+ 0001:00137A7C       fGraphData.TfrmGraphData.ClearMemos
+ 0001:00137ADC       fGraphData.TfrmGraphData.FillMemos
+ 0001:00137E58       fGraphData.GetCurrentSetting
+ 0001:00137E70       fGraphData.GetDefaultInpatientDate
+ 0001:00137E88       fGraphData.GetDefaultOutpatientDate
+ 0001:00137EA0       fGraphData.GetGraphProfiles
+ 0001:0013829C       fGraphData.GetATestGroup
+ 0001:001384D4       fGraphData.GetPersonalSetting
+ 0001:001384EC       fGraphData.GetPublicSetting
+ 0001:00138504       fGraphData.GraphPublicEditor
+ 0001:00138510       fGraphData.GraphTurboOn
+ 0001:0013852C       fGraphData.SetCurrentSetting
+ 0001:0013857C       fGraphData.SetDefaultInpatientDate
+ 0001:001385CC       fGraphData.SetDefaultOutpatientDate
+ 0001:0013861C       fGraphData.TfrmGraphData.FormClose
+ 0001:001386A4       fGraphData.TfrmGraphData.FormDestroy
+ 0001:0013879C       WordXP..TWordDocument
+ 0001:00139170       WordXP..TWordApplication
+ 0001:001396E0       WordXP.TWordDocument.InitServerData
+ 0001:001396EC       WordXP.TWordDocument.Connect
+ 0001:00139760       WordXP.TWordDocument.ConnectTo
+ 0001:001397C0       WordXP.TWordDocument.Disconnect
+ 0001:001397E0       WordXP.TWordDocument.GetDefaultInterface
+ 0001:00139800       WordXP.TWordDocument.Create
+ 0001:00139838       WordXP.TWordDocument.Destroy
+ 0001:00139860       WordXP.TWordDocument.InvokeEvent
+ 0001:001398AC       WordXP.TWordDocument.Get_FormFields
+ 0001:0013990C       WordXP.TWordDocument.Get_ProtectionType
+ 0001:00139970       WordXP.TWordDocument.Close
+ 0001:001399D4       WordXP.TWordDocument.Range
+ 0001:00139A40       WordXP.TWordDocument.Range
+ 0001:00139AA8       WordXP.TWordDocument.Unprotect
+ 0001:00139B00       WordXP.TWordApplication.InitServerData
+ 0001:00139B0C       WordXP.TWordApplication.Connect
+ 0001:00139B84       WordXP.TWordApplication.Disconnect
+ 0001:00139BBC       WordXP.TWordApplication.GetDefaultInterface
+ 0001:00139BE4       WordXP.TWordApplication.Create
+ 0001:00139C1C       WordXP.TWordApplication.Destroy
+ 0001:00139C44       WordXP.TWordApplication.InvokeEvent
+ 0001:0013A2E4       WordXP.TWordApplication.Get_Documents
+ 0001:0013A340       WordXP.TWordApplication.Get_Visible
+ 0001:0013A3A4       WordXP.TWordApplication.Set_Visible
+ 0001:0013A3FC       WordXP.TWordApplication.Quit
+ 0001:0013A550       Series..TSeriesPointer
+ 0001:0013A788       Series..TCustomSeries
+ 0001:0013A990       Series..TLineSeries
+ 0001:0013ACA0       Series..TPointSeries
+ 0001:0013AF4C       Series..TAreaSeries
+ 0001:0013B2CC       Series..BarException
+ 0001:0013B450       Series..TCustomBarSeries
+ 0001:0013B854       Series..TBarSeries
+ 0001:0013BA50       Series..THorizBarSeries
+ 0001:0013BC58       Series..TCircledSeries
+ 0001:0013BEA0       Series..PieException
+ 0001:0013BF24       Series..TExplodedSlices
+ 0001:0013BFDC       Series..TPieOtherSlice
+ 0001:0013C0E0       Series..TPieSeries
+ 0001:0013C418       Series..TFastLineSeries
+ 0001:0013C674       Series.TSeriesPointer.Create
+ 0001:0013C700       Series.TSeriesPointer.Destroy
+ 0001:0013C738       Series.TSeriesPointer.SetIntegerProperty
+ 0001:0013C744       Series.TSeriesPointer.SetBooleanProperty
+ 0001:0013C750       Series.TSeriesPointer.CheckPointerSize
+ 0001:0013C7A8       Series.TSeriesPointer.SetHorizSize
+ 0001:0013C7C8       Series.TSeriesPointer.SetInflateMargins
+ 0001:0013C7D4       Series.TSeriesPointer.SetVertSize
+ 0001:0013C7F4       Series.TSeriesPointer.SetPen
+ 0001:0013C800       Series.TSeriesPointer.SetBrush
+ 0001:0013C80C       Series.TSeriesPointer.SetDark3D
+ 0001:0013C818       Series.TSeriesPointer.SetDraw3D
+ 0001:0013C824       Series.TSeriesPointer.CalcHorizMargins
+ 0001:0013C858       Series.TSeriesPointer.CalcVerticalMargins
+ 0001:0013C88C       Series.TSeriesPointer.SetVisible
+ 0001:0013C898       Series.TSeriesPointer.SetStyle
+ 0001:0013C8AC       Series.TSeriesPointer.PrepareCanvas
+ 0001:0013C914       Series.DrawDiagonalCross
+ 0001:0013C9F0       Series.DrawCross
+ 0001:0013CAA8       Series.DoTriangle3D
+ 0001:0013CB7C       Series.TSeriesPointer.DrawPointer
+ 0001:0013CFB4       Series.TSeriesPointer.Draw
+ 0001:0013CFE4       Series.TSeriesPointer.Assign
+ 0001:0013D054       Series.TSeriesPointer.DrawLegendShape
+ 0001:0013D100       Series.TCustomSeries.Create
+ 0001:0013D18C       Series.TCustomSeries.Destroy
+ 0001:0013D1D4       Series.TCustomSeries.DrawMark
+ 0001:0013D208       Series.TCustomSeries.ClickedPointer
+ 0001:0013D240       Series.TCustomSeries.Assign
+ 0001:0013D320       Series.PointInVertLine
+ 0001:0013D338       Series.PointInHorizLine
+ 0001:0013D350       Series.CheckPointInLine
+ 0001:0013D4F0       Series.TCustomSeries.Clicked
+ 0001:0013D738       Series.TCustomSeries.SetDrawArea
+ 0001:0013D748       Series.TCustomSeries.SetPointer
+ 0001:0013D758       Series.TCustomSeries.SetAreaLinesPen
+ 0001:0013D764       Series.TCustomSeries.SetLinePen
+ 0001:0013D770       Series.TCustomSeries.SetLineHeight
+ 0001:0013D780       Series.TCustomSeries.SetStairs
+ 0001:0013D790       Series.TCustomSeries.SetInvertedStairs
+ 0001:0013D7A0       Series.TCustomSeries.SetAreaColor
+ 0001:0013D7B0       Series.TCustomSeries.SetBrushProperty
+ 0001:0013D7BC       Series.TCustomSeries.SetAreaBrush
+ 0001:0013D7CC       Series.TCustomSeries.SetLineBrush
+ 0001:0013D7DC       Series.DrawLine
+ 0001:0013D858       Series.TCustomSeries.DrawLegendShape
+ 0001:0013D90C       Series.TCustomSeries.LinePrepareCanvas
+ 0001:0013D96C       Series.TCustomSeries.GetAreaBrushColor
+ 0001:0013D988       Series.CalcYPosLeftRight
+ 0001:0013DA38       Series.InternalDrawArea
+ 0001:0013DC84       Series.DrawPoint
+ 0001:0013E230       Series.TCustomSeries.DrawValue
+ 0001:0013E518       Series.TCustomSeries.DrawPointer
+ 0001:0013E57C       Series.TCustomSeries.GetEditorClass
+ 0001:0013E5AC       Series.TCustomSeries.CalcHorizMargins
+ 0001:0013E614       Series.TCustomSeries.CalcVerticalMargins
+ 0001:0013E694       Series.TCustomSeries.GetOriginPos
+ 0001:0013E6A0       Series.TCustomSeries.SetDark3D
+ 0001:0013E6B0       Series.TLineSeries.Create
+ 0001:0013E700       Series.TLineSeries.PrepareLegendCanvas
+ 0001:0013E72C       Series.TLineSeries.Assign
+ 0001:0013E770       Series.TPointSeries.Create
+ 0001:0013E7CC       Series.TPointSeries.Assign
+ 0001:0013E7FC       Series.TPointSeries.GetEditorClass
+ 0001:0013E830       Series.TPointSeries.PrepareForGallery
+ 0001:0013E888       Series.TPointSeries.SetColorEachPoint
+ 0001:0013E8B4       Series.TAreaSeries.Create
+ 0001:0013E90C       Series.TAreaSeries.PrepareLegendCanvas
+ 0001:0013E958       Series.TAreaSeries.Assign
+ 0001:0013E9B8       Series.TAreaSeries.CalcZOrder
+ 0001:0013E9D8       Series.TAreaSeries.GetEditorClass
+ 0001:0013EA08       Series.SetOtherMultiArea
+ 0001:0013EA78       Series.TAreaSeries.SetMultiArea
+ 0001:0013EAA8       Series.TAreaSeries.InternalCalcStackedYPos
+ 0001:0013EB44       Series.TAreaSeries.GetOriginPos
+ 0001:0013EB60       Series.TAreaSeries.MaxYValue
+ 0001:0013EBF0       Series.TAreaSeries.MinYValue
+ 0001:0013EC18       Series.TAreaSeries.CalcYPos
+ 0001:0013EC50       Series.TCustomBarSeries.Create
+ 0001:0013ED28       Series.TCustomBarSeries.Destroy
+ 0001:0013ED74       Series.TCustomBarSeries.CalcZOrder
+ 0001:0013EE08       Series.TCustomBarSeries.NumSampleValues
+ 0001:0013EE10       Series.TCustomBarSeries.SetBarWidthPercent
+ 0001:0013EE80       Series.TCustomBarSeries.SetOffsetPercent
+ 0001:0013EEF0       Series.TCustomBarSeries.SetCustomBarSize
+ 0001:0013EF00       Series.TCustomBarSeries.SetBarStyle
+ 0001:0013EF14       Series.TCustomBarSeries.BarOrderPos
+ 0001:0013EF78       Series.TCustomBarSeries.InternalClicked
+ 0001:0013EF7C       Series.TCustomBarSeries.CalcBarWidth
+ 0001:0013F104       Series.TCustomBarSeries.CalcMarkLength
+ 0001:0013F168       Series.TCustomBarSeries.SetUseOrigin
+ 0001:0013F178       Series.TCustomBarSeries.SetSideMargins
+ 0001:0013F1EC       Series.TCustomBarSeries.SetDark3d
+ 0001:0013F1FC       Series.TCustomBarSeries.PrepareForGallery
+ 0001:0013F220       Series.TCustomBarSeries.SetOrigin
+ 0001:0013F238       Series.TCustomBarSeries.BarSeriesCount
+ 0001:0013F2A0       Series.TCustomBarSeries.Clicked
+ 0001:0013F348       Series.TCustomBarSeries.SetOtherMultiBar
+ 0001:0013F3A0       Series.TCustomBarSeries.SetMultiBar
+ 0001:0013F3C4       Series.TCustomBarSeries.InternalGetOriginPos
+ 0001:0013F474       Series.TCustomBarSeries.PointOrigin
+ 0001:0013F4B8       Series.TCustomBarSeries.DrawLegendShape
+ 0001:0013F500       Series.TCustomBarSeries.PrepareLegendCanvas
+ 0001:0013F55C       Series.TCustomBarSeries.SetPenBrushBar
+ 0001:0013F5E4       Series.TCustomBarSeries.BarRectangle
+ 0001:0013F6E0       Series.TCustomBarSeries.SetBarPen
+ 0001:0013F6EC       Series.TCustomBarSeries.GetBarStyle
+ 0001:0013F71C       Series.TCustomBarSeries.SetBarBrush
+ 0001:0013F728       Series.TCustomBarSeries.GetEditorClass
+ 0001:0013F758       Series.TCustomBarSeries.BarMargin
+ 0001:0013F778       Series.TCustomBarSeries.ApplyBarOffset
+ 0001:0013F7BC       Series.TCustomBarSeries.SetAutoMarkPosition
+ 0001:0013F7CC       Series.TCustomBarSeries.SetAutoBarSize
+ 0001:0013F7DC       Series.TCustomBarSeries.Assign
+ 0001:0013F8B4       Series.TCustomBarSeries.AdjustGradientRectPen
+ 0001:0013F8E0       Series.TCustomBarSeries.MaxMandatoryValue
+ 0001:0013F9A4       Series.TCustomBarSeries.MinMandatoryValue
+ 0001:0013FA00       Series.TCustomBarSeries.InternalApplyBarMargin
+ 0001:0013FA20       Series.TBarSeries.CalcXPos
+ 0001:0013FAA4       Series.TBarSeries.MaxYValue
+ 0001:0013FAD0       Series.TBarSeries.MinYValue
+ 0001:0013FAF8       Series.TBarSeries.CalcHorizMargins
+ 0001:0013FB1C       Series.TBarSeries.CalcVerticalMargins
+ 0001:0013FBA4       Series.TBarSeries.InternalCalcMarkLength
+ 0001:0013FBB4       Series.TBarSeries.DrawMark
+ 0001:0013FC24       Series.TBarSeries.DrawBar
+ 0001:001400AC       Series.TBarSeries.DrawValue
+ 0001:00140140       Series.TBarSeries.CalcYPos
+ 0001:001401F4       Series.TBarSeries.GetOriginPos
+ 0001:00140204       Series.TBarSeries.InternalClicked
+ 0001:0014030C       Series.TBarSeries.DrawValuesForward
+ 0001:0014031C       Series.TBarSeries.DrawSeriesForward
+ 0001:0014033C       Series.THorizBarSeries.MandatoryValueList
+ 0001:00140344       Series.THorizBarSeries.CalcHorizMargins
+ 0001:001403BC       Series.THorizBarSeries.CalcVerticalMargins
+ 0001:001403E0       Series.THorizBarSeries.CalcXPos
+ 0001:00140494       Series.THorizBarSeries.GetOriginPos
+ 0001:001404A4       Series.THorizBarSeries.CalcYPos
+ 0001:0014051C       Series.THorizBarSeries.InternalClicked
+ 0001:00140630       Series.THorizBarSeries.MaxXValue
+ 0001:0014065C       Series.THorizBarSeries.MinXValue
+ 0001:00140684       Series.THorizBarSeries.InternalCalcMarkLength
+ 0001:001406F0       Series.THorizBarSeries.DrawMark
+ 0001:00140780       Series.THorizBarSeries.DrawBar
+ 0001:00140C28       Series.THorizBarSeries.DrawValue
+ 0001:00140CBC       Series.THorizBarSeries.FillSampleValues
+ 0001:00140DEC       Series.THorizBarSeries.DrawValuesForward
+ 0001:00140DFC       Series.THorizBarSeries.DrawSeriesForward
+ 0001:00140E1C       Series.TCircledSeries.Create
+ 0001:00140E78       Series.TCircledSeries.Destroy
+ 0001:00140EAC       Series.TCircledSeries.SetCircled
+ 0001:00140F1C       Series.TCircledSeries.SetRotationAngle
+ 0001:00140FD4       Series.TCircledSeries.SetOtherCustomRadius
+ 0001:0014104C       Series.TCircledSeries.UseAxis
+ 0001:00141050       Series.TCircledSeries.SetCustomXRadius
+ 0001:00141074       Series.TCircledSeries.SetCustomYRadius
+ 0001:00141098       Series.AllCircled
+ 0001:001410EC       Series.TCircledSeries.SetParentProperties
+ 0001:00141208       Series.TCircledSeries.SetParentChart
+ 0001:00141244       Series.TCircledSeries.AssociatedToAxis
+ 0001:00141248       Series.TCircledSeries.AdjustCircleRect
+ 0001:001412C4       Series.CalcCircledRatio
+ 0001:00141404       Series.AdjustCircleMarks
+ 0001:001414C4       Series.TCircledSeries.DoBeforeDrawValues
+ 0001:0014152C       Series.TCircledSeries.CalcRadius
+ 0001:001415C8       Series.TCircledSeries.SetCircleBackColor
+ 0001:001415D8       Series.TCircledSeries.AngleToPos
+ 0001:00141634       Series.TCircledSeries.CalcCircleBackColor
+ 0001:00141668       Series.TCircledSeries.PrepareLegendCanvas
+ 0001:00141680       Series.TCircledSeries.PointToAngle
+ 0001:00141778       Series.TCircledSeries.Assign
+ 0001:001417DC       Series.TCircledSeries.SetActive
+ 0001:001417FC       Series.TExplodedSlices.GetValue
+ 0001:00141828       Series.TExplodedSlices.SetValue
+ 0001:00141868       Series.TPieOtherSlice.Create
+ 0001:001418C0       Series.TPieOtherSlice.Assign
+ 0001:001418FC       Series.TPieOtherSlice.SetStyle
+ 0001:00141910       Series.TPieOtherSlice.SetText
+ 0001:00141920       Series.TPieOtherSlice.SetValue
+ 0001:00141938       Series.TPieSeries.Create
+ 0001:001419F8       Series.TPieSeries.Destroy
+ 0001:00141A5C       Series.TPieSeries.CalcXPos
+ 0001:00141A9C       Series.TPieSeries.NumSampleValues
+ 0001:00141AA4       Series.TPieSeries.ClearLists
+ 0001:00141AC0       Series.TPieSeries.PrepareLegendCanvas
+ 0001:00141AF8       Series.TPieSeries.GalleryChanged3D
+ 0001:00141B0C       Series.TPieSeries.FillSampleValues
+ 0001:00141B74       Series.TPieSeries.CalcClickedPie
+ 0001:00141C54       Series.TPieSeries.Clicked
+ 0001:00141C7C       Series.TPieSeries.CountLegendItems
+ 0001:00141CB8       Series.TPieSeries.LegendToValueIndex
+ 0001:00141D08       Series.TPieSeries.BelongsToOtherSlice
+ 0001:00141D30       Series.TPieSeries.CalcAngles
+ 0001:00141E94       Series.TPieSeries.CalcExplodedRadius
+ 0001:00141F04       Series.TPieSeries.DrawMark
+ 0001:00142080       Series.GetAngleSlice
+ 0001:00142128       Series.CompareSliceAngle
+ 0001:00142188       Series.SortSlices
+ 0001:00142258       Series.TPieSeries.DrawAllValues
+ 0001:00142434       Series.TPieSeries.DrawPie
+ 0001:001425E0       Series.TPieSeries.CalcExplodedOffset
+ 0001:001426FC       Series.TPieSeries.CalcExplodeBiggest
+ 0001:00142738       Series.TPieSeries.SetExplodeBiggest
+ 0001:00142754       Series.TPieSeries.SetPiePen
+ 0001:00142760       Series.TPieSeries.SetOtherSlice
+ 0001:0014276C       Series.TPieSeries.DrawValue
+ 0001:001427D8       Series.TPieSeries.SetUsePatterns
+ 0001:001427E8       Series.TPieSeries.GetEditorClass
+ 0001:00142818       Series.TPieSeries.GetPieValues
+ 0001:00142820       Series.TPieSeries.SetPieValues
+ 0001:00142828       Series.TPieSeries.SetDark3d
+ 0001:00142838       Series.TPieSeries.MaxXValue
+ 0001:00142854       Series.TPieSeries.MinXValue
+ 0001:00142870       Series.TPieSeries.MaxYValue
+ 0001:0014288C       Series.TPieSeries.MinYValue
+ 0001:001428A8       Series.TPieSeries.DisableRotation
+ 0001:001428D4       Series.TPieSeries.PrepareForGallery
+ 0001:00142928       Series.TPieSeries.Assign
+ 0001:001429A0       Series.TPieSeries.DoBeforeDrawChart
+ 0001:00142B2C       Series.TPieSeries.SwapValueIndex
+ 0001:00142B78       Series.TFastLineSeries.Create
+ 0001:00142BD0       Series.TFastLineSeries.Destroy
+ 0001:00142C00       Series.TFastLineSeries.SetLinePen
+ 0001:00142C28       Series.TFastLineSeries.NotifyNewValue
+ 0001:00142CE0       Series.TFastLineSeries.GetEditorClass
+ 0001:00142D14       Series.TFastLineSeries.PrepareCanvas
+ 0001:00142D44       Series.TFastLineSeries.DrawAllValues
+ 0001:00142D58       Series.TFastLineSeries.DrawValue
+ 0001:00142E8C       Series.TFastLineSeries.SetSeriesColor
+ 0001:00142EAC       Series.TFastLineSeries.DrawLegendShape
+ 0001:00142ED8       Series.TFastLineSeries.Assign
+ 0001:00142F1C       Series.TFastLineSeries.Clicked
+ 0001:00143008       Series.TFastLineSeries.DrawMark
+ 0001:00143028       Series.RegisterStandardSeries
+ 0001:001431F4       Series.Finalization
+ 0001:0014323C       ArrowCha..TArrowSeries
+ 0001:001434FC       ArrowCha.TArrowSeries.Create
+ 0001:00143600       ArrowCha.TArrowSeries.SetEndXValues
+ 0001:00143610       ArrowCha.TArrowSeries.SetEndYValues
+ 0001:00143620       ArrowCha.TArrowSeries.AddArrow
+ 0001:00143688       ArrowCha.TArrowSeries.FillSampleValues
+ 0001:00143780       ArrowCha.TArrowSeries.GetArrowWidth
+ 0001:0014378C       ArrowCha.TArrowSeries.GetArrowHeight
+ 0001:00143798       ArrowCha.TArrowSeries.SetArrowWidth
+ 0001:001437A4       ArrowCha.TArrowSeries.SetArrowHeight
+ 0001:001437B0       ArrowCha.TArrowSeries.DrawValue
+ 0001:0014389C       ArrowCha.TArrowSeries.MaxXValue
+ 0001:001438D4       ArrowCha.TArrowSeries.MinXValue
+ 0001:0014390C       ArrowCha.TArrowSeries.MaxYValue
+ 0001:00143944       ArrowCha.TArrowSeries.MinYValue
+ 0001:0014397C       ArrowCha.TArrowSeries.GetEditorClass
+ 0001:001439AC       ArrowCha.TArrowSeries.GetStartXValues
+ 0001:001439B4       ArrowCha.TArrowSeries.SetStartXValues
+ 0001:001439BC       ArrowCha.TArrowSeries.GetStartYValues
+ 0001:001439C4       ArrowCha.TArrowSeries.SetStartYValues
+ 0001:001439CC       ArrowCha.TArrowSeries.PrepareForGallery
+ 0001:00143A18       ArrowCha.TArrowSeries.IsValidSourceOf
+ 0001:00143A2C       ArrowCha.Finalization
+ 0001:00143A5C       GanttCh..TGanttSeries
+ 0001:00143CCC       GanttCh.TGanttSeries.Create
+ 0001:00143DE8       GanttCh.TGanttSeries.Destroy
+ 0001:00143E18       GanttCh.TGanttSeries.SetEndValues
+ 0001:00143E28       GanttCh.TGanttSeries.SetNextTask
+ 0001:00143E38       GanttCh.TGanttSeries.SetConnectingPen
+ 0001:00143E44       GanttCh.TGanttSeries.AddGanttColor
+ 0001:00143EAC       GanttCh.TGanttSeries.AddGantt
+ 0001:00143ED0       GanttCh.GanttSampleStr
+ 0001:00143F94       GanttCh.TGanttSeries.FillSampleValues
+ 0001:0014410C       GanttCh.TGanttSeries.ClickedPointer
+ 0001:00144168       GanttCh.TGanttSeries.DrawValue
+ 0001:0014433C       GanttCh.TGanttSeries.MaxXValue
+ 0001:00144374       GanttCh.TGanttSeries.DrawMark
+ 0001:001443D0       GanttCh.TGanttSeries.ClearTempValue
+ 0001:001443F0       GanttCh.TGanttSeries.MandatoryValueList
+ 0001:001443F8       GanttCh.TGanttSeries.GetStartValues
+ 0001:00144400       GanttCh.TGanttSeries.SetStartValues
+ 0001:00144408       GanttCh.TGanttSeries.PrepareForGallery
+ 0001:00144434       GanttCh.TGanttSeries.GetEditorClass
+ 0001:00144464       GanttCh.TGanttSeries.Assign
+ 0001:00144498       GanttCh.TGanttSeries.IsValidSourceOf
+ 0001:001444AC       GanttCh.TGanttSeries.CalcHorizMargins
+ 0001:001444B4       GanttCh.Finalization
+ 0001:001444E4       uFormMonitor..TFormMonitor
+ 0001:00144540       uFormMonitor..TFormEvent
+ 0001:00144598       uFormMonitor.DisableGhosting
+ 0001:0014462C       uFormMonitor.SetFormMonitoring
+ 0001:00144678       uFormMonitor.MarkFormAsStayOnTop
+ 0001:001446E4       uFormMonitor.FindFormEventIndex
+ 0001:00144724       uFormMonitor.FindFormEvent
+ 0001:00144748       uFormMonitor.FormMonitorBringToFrontEvent
+ 0001:001447C0       uFormMonitor.IsFormStayOnTop
+ 0001:001447E8       uFormMonitor.TFormMonitor.Activate
+ 0001:00144808       uFormMonitor.TFormMonitor.ActiveFormChange
+ 0001:00144824       uFormMonitor.TFormMonitor.Restore
+ 0001:00144844       uFormMonitor.TFormMonitor.FormValid
+ 0001:00144878       uFormMonitor.TFormMonitor.HandleValid
+ 0001:001448AC       uFormMonitor.FindWindowZOrder
+ 0001:001448E0       uFormMonitor.TFormMonitor.ManageForms
+ 0001:00144BE0       uFormMonitor.CallWndHook
+ 0001:00144C38       uFormMonitor.TFormMonitor.Start
+ 0001:00144D80       uFormMonitor.TFormMonitor.Stop
+ 0001:00144E24       uFormMonitor.TFormMonitor.MoveOffTop
+ 0001:00144E5C       uFormMonitor.TFormMonitor.MoveOnTop
+ 0001:00144E94       uFormMonitor.TFormMonitor.Normalize
+ 0001:00144EBC       uFormMonitor.TFormMonitor.IsNormalized
+ 0001:00144ED0       uFormMonitor.TFormMonitor.IsTopMost
+ 0001:00144EE4       uFormMonitor.FindWindows
+ 0001:00144F00       uFormMonitor.TFormMonitor.NormalizeReset
+ 0001:00144F14       uFormMonitor.IsHandleOK
+ 0001:00144F74       uFormMonitor.FindActiveWindow
+ 0001:00144FB4       uFormMonitor.TFormMonitor.GetActiveFormHandle
+ 0001:001450B4       uFormMonitor.TFormMonitor.StartZOrdering
+ 0001:001450E0       uFormMonitor.TFormMonitor.SystemRunning
+ 0001:00145120       uFormMonitor.TFormMonitor.ModalDelphiForm
+ 0001:00145174       uFormMonitor.TFormMonitor.Timer
+ 0001:001451D0       uFormMonitor.Finalization
+ 0001:00145200       fRptBox..TfrmReportBox
+ 0001:001454BC       fRptBox.CreateReportBox
+ 0001:00145864       fRptBox.ReportBox
+ 0001:001458F4       fRptBox.ModelessReportBox
+ 0001:0014595C       fRptBox.PrintStrings
+ 0001:00145BC8       fRptBox.TfrmReportBox.memReportClick
+ 0001:00145BCC       fRptBox.TfrmReportBox.cmdPrintClick
+ 0001:00145C50       fRptBox.TfrmReportBox.cmdCloseClick
+ 0001:00145C58       fRptBox.TfrmReportBox.FormClose
+ 0001:00145C68       rLabs.AtomicTests
+ 0001:00145CD0       rLabs.Specimens
+ 0001:00145D34       rLabs.AllTests
+ 0001:00145D9C       rLabs.ChemTest
+ 0001:00145E04       rLabs.Users
+ 0001:00145E6C       rLabs.TestGroups
+ 0001:00145EC4       rLabs.ATest
+ 0001:00145F18       rLabs.ATestGroup
+ 0001:00145F7C       rLabs.UTGAdd
+ 0001:00145FAC       rLabs.UTGReplace
+ 0001:00145FEC       rLabs.UTGDelete
+ 0001:0014601C       rLabs.SpecimenDefaults
+ 0001:00146174       rLabs.Cumulative
+ 0001:001462AC       rLabs.RemoteLabCumulative
+ 0001:00146390       rLabs.Interim
+ 0001:001464C0       rLabs.RemoteLabInterim
+ 0001:001465A0       rLabs.Micro
+ 0001:001466D0       rLabs.RemoteLabMicro
+ 0001:001467B0       rLabs.InterimSelect
+ 0001:0014682C       rLabs.InterimGrid
+ 0001:001468A4       rLabs.Worksheet
+ 0001:00146960       rLabs.Reports
+ 0001:00146AEC       rLabs.RemoteLabReports
+ 0001:00146C50       rLabs.RemoteLab
+ 0001:00146DB4       rLabs.GetNewestOldest
+ 0001:00146E9C       rLabs.GetChart
+ 0001:00146F68       rLabs.PrintLabsToDevice
+ 0001:001472F8       rLabs.GetFormattedLabReport
+ 0001:00147578       rLabs.TestInfo
+ 0001:001475F8       rLabs.LabPatchInstalled
+ 0001:00147634       fGraphOthers..TfrmGraphOthers
+ 0001:00147968       fGraphOthers.DialogGraphOthers
+ 0001:001479E0       fGraphOthers.TfrmGraphOthers.cboOthersClick
+ 0001:00147A0C       fGraphOthers.TfrmGraphOthers.cboOthersNeedData
+ 0001:00147A34       fGraphOthers.TfrmGraphOthers.FormShow
+ 0001:00147A70       fGraphOthers.TfrmGraphOthers.lstViewsClick
+ 0001:00147A9C       fGraphOthers.TfrmGraphOthers.AddTests
+ 0001:00147BA0       fGraphProfiles..TfrmGraphProfiles
+ 0001:00148408       fGraphProfiles.DialogOptionsGraphProfiles
+ 0001:0014850C       fGraphProfiles.DialogGraphProfiles
+ 0001:00148AFC       fGraphProfiles.TfrmGraphProfiles.FormCreate
+ 0001:00148B0C       fGraphProfiles.TfrmGraphProfiles.FormShow
+ 0001:00148BA0       fGraphProfiles.TfrmGraphProfiles.FormClose
+ 0001:00148BB4       fGraphProfiles.TfrmGraphProfiles.radSourceAllClick
+ 0001:00148CF0       fGraphProfiles.TfrmGraphProfiles.lstSourcesChange
+ 0001:00148FCC       fGraphProfiles.TfrmGraphProfiles.lstSourcesEnter
+ 0001:00148FE8       fGraphProfiles.TfrmGraphProfiles.lstSourcesExit
+ 0001:00149000       fGraphProfiles.TfrmGraphProfiles.lstSourcesDblClick
+ 0001:00149068       fGraphProfiles.TfrmGraphProfiles.cboUserClick
+ 0001:0014912C       fGraphProfiles.TfrmGraphProfiles.cboUserNeedData
+ 0001:00149154       fGraphProfiles.TfrmGraphProfiles.cboAllItemsChange
+ 0001:0014927C       fGraphProfiles.TfrmGraphProfiles.cboAllItemsClick
+ 0001:001493A8       fGraphProfiles.TfrmGraphProfiles.cboAllItemsNeedData
+ 0001:00149450       fGraphProfiles.TfrmGraphProfiles.lstItemsDisplayedChange
+ 0001:001495C8       fGraphProfiles.TfrmGraphProfiles.lstItemsDisplayedDblClick
+ 0001:0014966C       fGraphProfiles.TfrmGraphProfiles.btnAddAllClick
+ 0001:001496CC       fGraphProfiles.TfrmGraphProfiles.btnRemoveOneClick
+ 0001:001496E4       fGraphProfiles.TfrmGraphProfiles.btnRemoveAllClick
+ 0001:00149708       fGraphProfiles.TfrmGraphProfiles.btnDefinitionsClick
+ 0001:00149FBC       fGraphProfiles.TfrmGraphProfiles.btnClearClick
+ 0001:0014A034       fGraphProfiles.TfrmGraphProfiles.btnDeleteClick
+ 0001:0014A420       fGraphProfiles.TfrmGraphProfiles.btnRenameClick
+ 0001:0014AA24       fGraphProfiles.TfrmGraphProfiles.btnSaveClick
+ 0001:0014B010       fGraphProfiles.TfrmGraphProfiles.btnCloseClick
+ 0001:0014B040       fGraphProfiles.TfrmGraphProfiles.btnViewsClick
+ 0001:0014B0C8       fGraphProfiles.TfrmGraphProfiles.CheckPublic
+ 0001:0014B1EC       fGraphProfiles.TfrmGraphProfiles.ListBoxSetup
+ 0001:0014B420       fGraphProfiles.TfrmGraphProfiles.ComboBoxSetup
+ 0001:0014B8AC       fGraphProfiles.TfrmGraphProfiles.CheckToClear
+ 0001:0014B928       fGraphProfiles.TfrmGraphProfiles.QualifierDelete
+ 0001:0014BB24       fGraphProfiles.TfrmGraphProfiles.AllItemsBefore
+ 0001:0014BEBC       fGraphProfiles.TfrmGraphProfiles.AllItemsAfter
+ 0001:0014C638       fGraphProfiles.TfrmGraphProfiles.AddToList
+ 0001:0014C9A8       fGraphProfiles.TfrmGraphProfiles.ArrangeList
+ 0001:0014CBA8       fGraphProfiles.TfrmGraphProfiles.AssignProfile
+ 0001:0014D45C       fGraphProfiles.TfrmGraphProfiles.AssignProfilePre
+ 0001:0014D6A4       fGraphProfiles.TfrmGraphProfiles.AssignProfilePost
+ 0001:0014DAB0       fGraphProfiles.TfrmGraphProfiles.FillSource
+ 0001:0014E3D8       fGraphProfiles.TfrmGraphProfiles.ProfileExists
+ 0001:0014E4EC       fGraphProfiles.TfrmGraphProfiles.AssignHints
+ 0001:0014F1A0       fGraphProfiles.TfrmGraphProfiles.wmNCLButtonDown
+ 0001:0014F220       fGraphProfiles.TfrmGraphProfiles.GetProfileName
+ 0001:0014F394       fGraphProfiles.TfrmGraphProfiles.IDProfile
+ 0001:0014F52C       fGraphSettings..TfrmGraphSettings
+ 0001:0014FBE8       fGraphSettings.DialogOptionsGraphSettings
+ 0001:0014FDF8       fGraphSettings.DialogGraphSettings
+ 0001:00150128       fGraphSettings.TfrmGraphSettings.ChangeSettings
+ 0001:00150478       fGraphSettings.TfrmGraphSettings.ChangeSources
+ 0001:0015069C       fGraphSettings.TfrmGraphSettings.Conversion
+ 0001:00150820       fGraphSettings.TfrmGraphSettings.SetSettings
+ 0001:00150BD0       fGraphSettings.TfrmGraphSettings.SetSources
+ 0001:00150DD8       fGraphSettings.TfrmGraphSettings.GetTypeList
+ 0001:00150E94       fGraphSettings.FileNameX
+ 0001:00150FF8       fGraphSettings.TfrmGraphSettings.FormCreate
+ 0001:001510E4       fGraphSettings.TfrmGraphSettings.btnAllClick
+ 0001:00151124       fGraphSettings.TfrmGraphSettings.btnCloseClick
+ 0001:0015118C       fGraphSettings.TfrmGraphSettings.DisplaySettings
+ 0001:001514F4       fGraphSettings.TfrmGraphSettings.btnPublicClick
+ 0001:001518A4       fGraphSettings.TfrmGraphSettings.chklstOptionsClickCheck
+ 0001:001519F8       fGraphSettings.TfrmGraphSettings.CheckSetting
+ 0001:00151ACC       fGraphSettings.TfrmGraphSettings.SaveClick
+ 0001:00151D80       fGraphSettings.TfrmGraphSettings.spnMaxGraphsClick
+ 0001:00151DE4       fGraphSettings.TfrmGraphSettings.txtMaxGraphsChange
+ 0001:00151FD4       fGraphSettings.TfrmGraphSettings.txtMaxGraphsExit
+ 0001:00152158       fGraphSettings.TfrmGraphSettings.txtMaxGraphsKeyPress
+ 0001:00152184       fGraphSettings.TfrmGraphSettings.spnMinGraphHeightClick
+ 0001:001521E8       fGraphSettings.TfrmGraphSettings.spnMaxSelectClick
+ 0001:0015224C       fGraphSettings.TfrmGraphSettings.txtMinGraphHeightChange
+ 0001:00152474       fGraphSettings.TfrmGraphSettings.txtMaxSelectChange
+ 0001:0015269C       fGraphSettings.TfrmGraphSettings.txtMinGraphHeightExit
+ 0001:0015288C       fGraphSettings.TfrmGraphSettings.txtMaxSelectExit
+ 0001:00152A7C       fGraphSettings.TfrmGraphSettings.txtMinGraphHeightKeyPress
+ 0001:00152AF8       fGraphSettings.TfrmGraphSettings.txtMaxSelectKeyPress
+ 0001:00152B74       fGraphSettings.TfrmGraphSettings.FormShow
+ 0001:00152B94       fGraphSettings.TfrmGraphSettings.AssignHints
+ 0001:00153764       fGraphSettings.TfrmGraphSettings.wmNCLButtonDown
+ 0001:001537E4       fGraphSettings.TfrmGraphSettings.FormClose
+ 0001:001537F8       fGraphs..TfrmGraphs
+ 0001:00154BE0       fGraphs..TGraphItem
+ 0001:00154C4C       fGraphs.TfrmGraphs.FormCreate
+ 0001:00154EB0       fGraphs.TfrmGraphs.SetupFields
+ 0001:001550B0       fGraphs.TfrmGraphs.SourcesDefault
+ 0001:0015518C       fGraphs.TfrmGraphs.Initialize
+ 0001:00155418       fGraphs.TfrmGraphs.InitialRetain
+ 0001:0015541C       fGraphs.TfrmGraphs.FillViews
+ 0001:001559EC       fGraphs.TfrmGraphs.AddOnLabGroups
+ 0001:00155C30       fGraphs.TfrmGraphs.SourceContext
+ 0001:00155C54       fGraphs.TfrmGraphs.FormShow
+ 0001:00155D58       fGraphs.TfrmGraphs.DateDefaults
+ 0001:00155E00       fGraphs.TfrmGraphs.FormClose
+ 0001:00155E3C       fGraphs.SetWidth
+ 0001:00155EB0       fGraphs.Layout
+ 0001:00156078       fGraphs.TfrmGraphs.GetSize
+ 0001:001562C8       fGraphs.GetWidth
+ 0001:001563A0       fGraphs.Layout
+ 0001:001565CC       fGraphs.TfrmGraphs.SetSize
+ 0001:00156764       fGraphs.TfrmGraphs.btnCloseClick
+ 0001:0015676C       fGraphs.TfrmGraphs.btnChangeSettingsClick
+ 0001:00156B9C       fGraphs.TfrmGraphs.chkDualViewsClick
+ 0001:00156C4C       fGraphs.TfrmGraphs.LoadListView
+ 0001:00156E94       fGraphs.TfrmGraphs.FilterListView
+ 0001:001572BC       fGraphs.TfrmGraphs.SortListView
+ 0001:0015753C       fGraphs.TfrmGraphs.DateRangeItems
+ 0001:001577FC       fGraphs.TfrmGraphs.UpdateView
+ 0001:0015793C       fGraphs.TfrmGraphs.DateRangeMultiItems
+ 0001:00157A90       fGraphs.TfrmGraphs.FileNameX
+ 0001:00157BF8       fGraphs.TfrmGraphs.TypeString
+ 0001:00157D28       fGraphs.TfrmGraphs.ItemName
+ 0001:00157E4C       fGraphs.TfrmGraphs.Switch
+ 0001:00157F80       fGraphs.TfrmGraphs.InitialData
+ 0001:00158224       fGraphs.TfrmGraphs.FastLab
+ 0001:001583D0       fGraphs.TfrmGraphs.TypeIsLoaded
+ 0001:001584A0       fGraphs.TfrmGraphs.TypeIsDisplayed
+ 0001:00158598       fGraphs.TfrmGraphs.LoadDateRange
+ 0001:001586CC       fGraphs.TfrmGraphs.LoadType
+ 0001:0015882C       fGraphs.TfrmGraphs.DisplayType
+ 0001:00158958       fGraphs.TfrmGraphs.DisplayData
+ 0001:00158C48       fGraphs.TfrmGraphs.DisplayDataInfo
+ 0001:00158E1C       fGraphs.TfrmGraphs.chkItemsTopClick
+ 0001:00158E94       fGraphs.TfrmGraphs.chkItemsBottomClick
+ 0001:00158F10       fGraphs.TfrmGraphs.BottomAxis
+ 0001:00158F9C       fGraphs.TfrmGraphs.AdjustTimeframe
+ 0001:001590C4       fGraphs.TfrmGraphs.ChartOnZoom
+ 0001:00159360       fGraphs.TfrmGraphs.ChartOnUndoZoom
+ 0001:00159570       fGraphs.TfrmGraphs.SizeDates
+ 0001:00159754       fGraphs.TfrmGraphs.SeriesForLabels
+ 0001:001599D4       fGraphs.TfrmGraphs.GraphFooter
+ 0001:00159A90       fGraphs.TfrmGraphs.MakeSeparate
+ 0001:00159D10       fGraphs.TfrmGraphs.TitleInfo
+ 0001:00159F28       fGraphs.TfrmGraphs.MakeSeparateItems
+ 0001:0015A310       fGraphs.TfrmGraphs.PadLeftEvent
+ 0001:0015A3F0       fGraphs.TfrmGraphs.PadLeftNonNumeric
+ 0001:0015A488       fGraphs.TfrmGraphs.MakeTogetherMaybe
+ 0001:0015A5D4       fGraphs.TfrmGraphs.MakeTogether
+ 0001:0015A994       fGraphs.TfrmGraphs.GraphBoundry
+ 0001:0015AAFC       fGraphs.TfrmGraphs.MakeTogetherNoLines
+ 0001:0015AD08       fGraphs.TfrmGraphs.MakeTogetherOnlyLines
+ 0001:0015AEE4       fGraphs.TfrmGraphs.MakeTogetherAnyLines
+ 0001:0015B208       fGraphs.TfrmGraphs.SingleLabTest
+ 0001:0015B2E8       fGraphs.TfrmGraphs.MakeChart
+ 0001:0015B45C       fGraphs.TfrmGraphs.MakeSeriesInfo
+ 0001:0015B5A0       fGraphs.TfrmGraphs.MakeSeriesPoint
+ 0001:0015B684       fGraphs.TfrmGraphs.MakeSeriesRef
+ 0001:0015B854       fGraphs.TfrmGraphs.MakeSeriesBP
+ 0001:0015B940       fGraphs.TfrmGraphs.MakeOtherSeries
+ 0001:0015B990       fGraphs.TfrmGraphs.MakeComments
+ 0001:0015BA20       fGraphs.TfrmGraphs.MakeNonNumerics
+ 0001:0015BD8C       fGraphs.TfrmGraphs.MakeNonNumSeries
+ 0001:0015C108       fGraphs.TfrmGraphs.StackNonNum
+ 0001:0015C34C       fGraphs.TfrmGraphs.PadNonNum
+ 0001:0015C660       fGraphs.TfrmGraphs.PortionSize
+ 0001:0015C770       fGraphs.TfrmGraphs.MakeDateline
+ 0001:0015C850       fGraphs.TfrmGraphs.SizeTogether
+ 0001:0015C988       fGraphs.TfrmGraphs.NextColor
+ 0001:0015CA68       fGraphs.TfrmGraphs.mnuPopGraphSwapClick
+ 0001:0015CBD8       fGraphs.TfrmGraphs.GraphSwap
+ 0001:0015CCE0       fGraphs.TfrmGraphs.GraphSwitch
+ 0001:0015CFE0       fGraphs.TfrmGraphs.mnuPopGraphSplitClick
+ 0001:0015D090       fGraphs.SplitGraphs
+ 0001:0015D138       fGraphs.TfrmGraphs.SplitClick
+ 0001:0015D2E0       fGraphs.TfrmGraphs.SelectItem
+ 0001:0015D3B0       fGraphs.TfrmGraphs.mnuPopGraphLinesClick
+ 0001:0015D3C8       fGraphs.TfrmGraphs.mnuPopGraph3DClick
+ 0001:0015D3E0       fGraphs.TfrmGraphs.mnuPopGraphValueMarksClick
+ 0001:0015D610       fGraphs.TfrmGraphs.mnuPopGraphValuesClick
+ 0001:0015D628       fGraphs.TfrmGraphs.mnuPopGraphSortClick
+ 0001:0015D700       fGraphs.TfrmGraphs.mnuPopGraphClearClick
+ 0001:0015D750       fGraphs.TfrmGraphs.mnuPopGraphHorizontalClick
+ 0001:0015D784       fGraphs.TfrmGraphs.mnuPopGraphVerticalClick
+ 0001:0015D7B8       fGraphs.TfrmGraphs.mnuPopGraphViewDefinitionClick
+ 0001:0015D83C       fGraphs.TfrmGraphs.mnuPopGraphDatesClick
+ 0001:0015D854       fGraphs.TfrmGraphs.mnuPopGraphDualViewsClick
+ 0001:0015D884       fGraphs.AddRow
+ 0001:0015DAA4       fGraphs.TfrmGraphs.mnuPopGraphExportClick
+ 0001:0015F318       fGraphs.TfrmGraphs.mnuPopGraphSeparate1Click
+ 0001:0015F378       fGraphs.TfrmGraphs.mnuPopGraphGradientClick
+ 0001:0015F398       fGraphs.TfrmGraphs.mnuPopGraphHintsClick
+ 0001:0015F3B0       fGraphs.TfrmGraphs.mnuPopGraphLegendClick
+ 0001:0015F3C8       fGraphs.TfrmGraphs.ChartColor
+ 0001:0015F494       fGraphs.TfrmGraphs.ChartStyle
+ 0001:0015F7A4       fGraphs.TfrmGraphs.ChangeStyle
+ 0001:0015F9B0       fGraphs.TfrmGraphs.chartBaseClickSeries
+ 0001:0015FAC8       fGraphs.TfrmGraphs.SeriesClicks
+ 0001:0015FF90       fGraphs.TfrmGraphs.AllTypeDate
+ 0001:00160488       fGraphs.TfrmGraphs.TempData
+ 0001:001609A0       fGraphs.TfrmGraphs.ItemDateRange
+ 0001:00160F28       fGraphs.TfrmGraphs.mnuPopGraphIsolateClick
+ 0001:001612C0       fGraphs.TfrmGraphs.ItemCheck
+ 0001:001614A8       fGraphs.TfrmGraphs.chartBaseMouseDown
+ 0001:00161738       fGraphs.TfrmGraphs.MouseClicks
+ 0001:001618A8       fGraphs.TfrmGraphs.LabelClicks
+ 0001:00161F28       fGraphs.TfrmGraphs.mnuPopGraphStuffPopup
+ 0001:0016224C       fGraphs.TfrmGraphs.mnuPopGraphDetailsClick
+ 0001:001625B0       fGraphs.TfrmGraphs.AllDetails
+ 0001:001627C4       fGraphs.TfrmGraphs.OneDayTypeDetails
+ 0001:00162A00       fGraphs.TfrmGraphs.NotifyApps
+ 0001:00162B00       fGraphs.TfrmGraphs.CreatePatientHeader
+ 0001:00162F0C       fGraphs.TfrmGraphs.CreateExcelPatientHeader
+ 0001:001630B0       fGraphs.TfrmGraphs.GetData
+ 0001:0016350C       fGraphs.TfrmGraphs.FMToDateTime
+ 0001:00163714       fGraphs.TfrmGraphs.GraphTypeNum
+ 0001:00163878       fGraphs.TfrmGraphs.HSAbbrev
+ 0001:00163960       fGraphs.TfrmGraphs.TempCheck
+ 0001:00163A54       fGraphs.TfrmGraphs.DCName
+ 0001:00163B84       fGraphs.TfrmGraphs.splItemsBottomMoved
+ 0001:00163BD4       fGraphs.TfrmGraphs.splItemsTopMoved
+ 0001:00163C24       fGraphs.TfrmGraphs.splViewsTopMoved
+ 0001:00163C50       fGraphs.TfrmGraphs.cboDateRangeChange
+ 0001:00163F2C       fGraphs.TfrmGraphs.DateSteps
+ 0001:00164338       fGraphs.TfrmGraphs.StdDev
+ 0001:001643A4       fGraphs.TfrmGraphs.InvVal
+ 0001:001643F8       fGraphs.TfrmGraphs.lvwItemsTopCompare
+ 0001:00164518       fGraphs.TfrmGraphs.lvwItemsTopColumnClick
+ 0001:0016456C       fGraphs.TfrmGraphs.lvwItemsBottomCompare
+ 0001:0016468C       fGraphs.TfrmGraphs.lvwItemsBottomColumnClick
+ 0001:001646E0       fGraphs.TfrmGraphs.btnGraphSelectionsClick
+ 0001:001649E0       fGraphs.TfrmGraphs.DisplayFreeText
+ 0001:00164A88       fGraphs.TfrmGraphs.ViewSelections
+ 0001:00164CD4       fGraphs.TfrmGraphs.ItemsClick
+ 0001:00164FE4       fGraphs.TfrmGraphs.CheckToAddData
+ 0001:0016531C       fGraphs.TfrmGraphs.lvwItemsBottomClick
+ 0001:0016551C       fGraphs.TfrmGraphs.SelCopy
+ 0001:0016557C       fGraphs.TfrmGraphs.SelReset
+ 0001:001656BC       fGraphs.TfrmGraphs.ViewsChange
+ 0001:00165B14       fGraphs.TfrmGraphs.AssignProfile
+ 0001:00165C00       fGraphs.TfrmGraphs.SetProfile
+ 0001:00165D64       fGraphs.TfrmGraphs.ProfileName
+ 0001:001660A8       fGraphs.TfrmGraphs.ViewDefinition
+ 0001:001663F0       fGraphs.TfrmGraphs.ExpandTax
+ 0001:001666A4       fGraphs.TfrmGraphs.CheckProfile
+ 0001:00166BB8       fGraphs.TfrmGraphs.LoadDisplayCheck
+ 0001:00166C54       fGraphs.TfrmGraphs.AutoSelect
+ 0001:00166E48       fGraphs.TfrmGraphs.SpecCheck
+ 0001:001670B0       fGraphs.TfrmGraphs.SpecSet
+ 0001:00167458       fGraphs.TfrmGraphs.LabAdd
+ 0001:00167588       fGraphs.TfrmGraphs.LabCheck
+ 0001:0016765C       fGraphs.TfrmGraphs.LabData
+ 0001:00167958       fGraphs.TfrmGraphs.RefUnits
+ 0001:00167B9C       fGraphs.CheckRef
+ 0001:00167E94       fGraphs.TfrmGraphs.SelectRef
+ 0001:00167FA8       fGraphs.TfrmGraphs.ResetSpec
+ 0001:00168158       fGraphs.TfrmGraphs.chartBaseClickLegend
+ 0001:00168548       fGraphs.TfrmGraphs.BPValue
+ 0001:00168708       fGraphs.TfrmGraphs.mnuCustomClick
+ 0001:0016874C       fGraphs.TfrmGraphs.mnuGraphDataClick
+ 0001:0016875C       fGraphs.TfrmGraphs.mnuMHasNumeric1Click
+ 0001:00168768       fGraphs.TfrmGraphs.mnuPopGraphResetClick
+ 0001:001687A0       fGraphs.TfrmGraphs.serDatelineTopGetMarkText
+ 0001:00168A3C       fGraphs.TfrmGraphs.mnuPopGraphRemoveClick
+ 0001:00168BD8       fGraphs.TfrmGraphs.mnuPopGraphTodayClick
+ 0001:00168C14       fGraphs.TfrmGraphs.BaseResize
+ 0001:00168C9C       fGraphs.TfrmGraphs.pnlScrollTopBaseResize
+ 0001:00168CC8       fGraphs.TfrmGraphs.NextPointerStyle
+ 0001:00168ED8       fGraphs.TfrmGraphs.FMCorrectedDate
+ 0001:00169004       fGraphs.TfrmGraphs.FixedDates
+ 0001:001690B4       fGraphs.TfrmGraphs.HighLow
+ 0001:001692D0       fGraphs.TfrmGraphs.HideGraphs
+ 0001:00169348       fGraphs.TfrmGraphs.BorderValue
+ 0001:00169378       fGraphs.TfrmGraphs.BPAdd
+ 0001:00169500       fGraphs.TfrmGraphs.BPCheck
+ 0001:00169588       fGraphs.TfrmGraphs.PainAdd
+ 0001:00169618       fGraphs.TfrmGraphs.NumAdd
+ 0001:00169784       fGraphs.TfrmGraphs.NonNumSave
+ 0001:0016989C       fGraphs.TfrmGraphs.MakeLineSeries
+ 0001:00169EC4       fGraphs.TfrmGraphs.MakePointSeries
+ 0001:0016A10C       fGraphs.TfrmGraphs.MakeBarSeries
+ 0001:0016A484       fGraphs.TfrmGraphs.MakeGanttSeries
+ 0001:0016A850       fGraphs.TfrmGraphs.MakeVisitGanttSeries
+ 0001:0016AB68       fGraphs.TfrmGraphs.splGraphsMoved
+ 0001:0016AB8C       fGraphs.TfrmGraphs.NonNumText
+ 0001:0016AE70       fGraphs.TfrmGraphs.ValueText
+ 0001:0016B218       fGraphs.TfrmGraphs.ValueDates
+ 0001:0016B3FC       fGraphs.TfrmGraphs.CheckMedNum
+ 0001:0016B57C       fGraphs.TfrmGraphs.ResultValue
+ 0001:0016B9B8       fGraphs.TfrmGraphs.chartBaseMouseMove
+ 0001:0016BC00       fGraphs.TfrmGraphs.chartBaseMouseUp
+ 0001:0016BC2C       fGraphs.TfrmGraphs.FormatHint
+ 0001:0016BF34       fGraphs.TitleOK
+ 0001:0016C040       fGraphs.TfrmGraphs.timHintPauseTimer
+ 0001:0016C280       fGraphs.TfrmGraphs.InactivateHint
+ 0001:0016C294       fGraphs.TfrmGraphs.mnuPopGraphStayOnTopClick
+ 0001:0016C2E0       fGraphs.TfrmGraphs.StayOnTop
+ 0001:0016C338       fGraphs.TfrmGraphs.HideDates
+ 0001:0016C438       fGraphs.TfrmGraphs.InfoMessage
+ 0001:0016C4AC       fGraphs.TfrmGraphs.mnuPopGraphZoomBackClick
+ 0001:0016C4F8       fGraphs.TfrmGraphs.ZoomUpdate
+ 0001:0016C5D0       fGraphs.TfrmGraphs.ZoomUpdateInfo
+ 0001:0016C6D4       fGraphs.TfrmGraphs.ZoomTo
+ 0001:0016C7B0       fGraphs.TfrmGraphs.mnuPopGraphPrintClick
+ 0001:0016D72C       fGraphs.TfrmGraphs.lstViewsTopChange
+ 0001:0016D774       fGraphs.TfrmGraphs.lstViewsTopEnter
+ 0001:0016D784       fGraphs.TfrmGraphs.lstViewsTopMouseDown
+ 0001:0016D78C       fGraphs.TfrmGraphs.lstViewsBottomChange
+ 0001:0016D7D8       fGraphs.TfrmGraphs.lstViewsBottomEnter
+ 0001:0016D7E8       fGraphs.TfrmGraphs.lstViewsBottomMouseDown
+ 0001:0016D7F0       fGraphs.TfrmGraphs.lvwItemsBottomChange
+ 0001:0016D834       fGraphs.TfrmGraphs.lvwItemsTopChange
+ 0001:0016D878       fGraphs.TfrmGraphs.lvwItemsTopClick
+ 0001:0016DA74       fGraphs.TfrmGraphs.lvwItemsTopEnter
+ 0001:0016DAC0       fGraphs.TfrmGraphs.lvwItemsTopKeyDown
+ 0001:0016DAE8       fGraphs.TfrmGraphs.cboDateRangeDropDown
+ 0001:0016DB34       fGraphs.TfrmGraphs.mnuPopGraphFixedClick
+ 0001:0016DB4C       fGraphs.TfrmGraphs.FormDestroy
+ 0001:0016DB54       fGraphs.TfrmGraphs.SetFontSize
+ 0001:0016DC28       fGraphs.TfrmGraphs.chkItemsBottomEnter
+ 0001:0016DC6C       fGraphs.TfrmGraphs.lvwItemsBottomEnter
+ 0001:0016DCDC       fGraphs.TfrmGraphs.UpdateAccessabilityActions
+ 0001:0016DCF4       fGraphs.TfrmGraphs.memTopEnter
+ 0001:0016DD08       fGraphs.TfrmGraphs.memTopExit
+ 0001:0016DD1C       fGraphs.TfrmGraphs.memBottomEnter
+ 0001:0016DD30       fGraphs.TfrmGraphs.memBottomExit
+ 0001:0016DD44       fGraphs.TfrmGraphs.memTopKeyDown
+ 0001:0016DE30       fGraphs.TfrmGraphs.memBottomKeyDown
+ 0001:0016DF1C       fGraphs.Finalization
+ 0001:0016DFB8       uDCSumm..TDCSummTitles
+ 0001:0016E024       uDCSumm..TDCSummPrefs
+ 0001:0016E098       uDCSumm.MakeDCSummDisplayText
+ 0001:0016E2F8       uDCSumm.TDCSummTitles.Create
+ 0001:0016E33C       uDCSumm.TDCSummTitles.Destroy
+ 0001:0016E470       uTIU..TNoteTitles
+ 0001:0016E4DC       uTIU..TTIUPrefs
+ 0001:0016E554       uTIU.MakeConsultDisplayText
+ 0001:0016E638       uTIU.MakeNoteDisplayText
+ 0001:0016E864       uTIU.TNoteTitles.Create
+ 0001:0016E8A8       uTIU.TNoteTitles.Destroy
+ 0001:0016E944       MSXML_TLB..CoDOMDocument
+ 0001:0016E9A0       MSXML_TLB.CoDOMDocument.Create
+ 0001:0016EA04       rTemplates.GetTemplateRoots
+ 0001:0016EA4C       rTemplates.IsUserTemplateEditor
+ 0001:0016EB2C       rTemplates.GetTemplateChildren
+ 0001:0016EBDC       rTemplates.GetTemplateBoilerplate
+ 0001:0016EC8C       rTemplates.GetTemplateText
+ 0001:0016EE6C       rTemplates.UpdateTIURec
+ 0001:0016F058       rTemplates.UpdateTemplate
+ 0001:0016F0D4       rTemplates.UpdateChildren
+ 0001:0016F224       rTemplates.DeleteTemplates
+ 0001:0016F324       rTemplates.GetObjectList
+ 0001:0016F354       rTemplates.GetAllowedPersonalObjects
+ 0001:0016F38C       rTemplates.TestBoilerplate
+ 0001:0016F4C0       rTemplates.GetTemplateAccess
+ 0001:0016F580       rTemplates.SubSetOfBoilerplatedTitles
+ 0001:0016F5E4       rTemplates.GetTitleBoilerplate
+ 0001:0016F674       rTemplates.GetUserTemplateDefaults
+ 0001:0016F704       rTemplates.SetUserTemplateDefaults
+ 0001:0016F758       rTemplates.SaveUserTemplateDefaults
+ 0001:0016F7A0       rTemplates.LoadTemplateDescription
+ 0001:0016F824       rTemplates.GetTemplateAllowedReminderDialogs
+ 0001:0016F8E4       rTemplates.IsRemDlgAllowed
+ 0001:0016F980       rTemplates.LockTemplate
+ 0001:0016FA14       rTemplates.UnlockTemplate
+ 0001:0016FA50       rTemplates.GetLinkedTemplateData
+ 0001:0016FA98       rTemplates.SubSetOfAllTitles
+ 0001:0016FAF8       rTemplates.SubSetOfTemplateFields
+ 0001:0016FB50       rTemplates.LoadTemplateField
+ 0001:0016FB98       rTemplates.LoadTemplateFieldByIEN
+ 0001:0016FBE8       rTemplates.CanEditTemplateFields
+ 0001:0016FC88       rTemplates.UpdateTemplateField
+ 0001:0016FCBC       rTemplates.LockTemplateField
+ 0001:0016FD4C       rTemplates.UnlockTemplateField
+ 0001:0016FD88       rTemplates.DeleteTemplateField
+ 0001:0016FDC4       rTemplates.CallImportExportTemplateFields
+ 0001:0016FEF4       rTemplates.ExportTemplateFields
+ 0001:0016FF1C       rTemplates.CheckTemplateFields
+ 0001:0016FF6C       rTemplates.IsTemplateFieldNameUnique
+ 0001:00170018       rTemplates.Convert2LMText
+ 0001:00170138       rTemplates.reset_broker
+ 0001:00170190       rTemplates.BuildTemplateFields
+ 0001:00170354       rTemplates.ImportLoadedFields
+ 0001:001703BC       rTemplates.Finalization
+ 0001:001703F8       fFindingTemplates..TfrmFindingTemplates
+ 0001:00170620       fFindingTemplates.FindTemplate
+ 0001:00170828       fFindingTemplates.TfrmFindingTemplates.btnCancelClick
+ 0001:00170840       fFindingTemplates.TfrmFindingTemplates.Find
+ 0001:00170AA0       fFindingTemplates.TfrmFindingTemplates.FormShow
+ 0001:00170AC0       uTemplateFields..TTemplateDialogEntry
+ 0001:00170B4C       uTemplateFields..TTemplateField
+ 0001:00170BF4       uTemplateFields..TIntStruc
+ 0001:00170FF8       uTemplateFields.GetNewFieldID
+ 0001:001710A8       uTemplateFields.GetDialogEntry
+ 0001:0017116C       uTemplateFields.FreeEntries
+ 0001:00171268       uTemplateFields.AssignFieldIDs
+ 0001:0017134C       uTemplateFields.AssignFieldIDs
+ 0001:001713C8       uTemplateFields.WrappedText
+ 0001:00171614       uTemplateFields.WordWrapText
+ 0001:00171720       uTemplateFields.AddNewTxt
+ 0001:001717CC       uTemplateFields.ResolveTemplateFields
+ 0001:00171AC8       uTemplateFields.AreTemplateFieldsRequired
+ 0001:00171D44       uTemplateFields.HasTemplateField
+ 0001:00171DA8       uTemplateFields.GetTemplateField
+ 0001:00171EB8       uTemplateFields.TemplateFieldNameProblem
+ 0001:001720E8       uTemplateFields.SaveTemplateFieldErrors
+ 0001:00172270       uTemplateFields.ClearModifiedTemplateFields
+ 0001:001722C0       uTemplateFields.AnyTemplateFieldsModified
+ 0001:00172300       uTemplateFields.ListTemplateFields
+ 0001:001727CC       uTemplateFields.BoilerplateTemplateFieldsOK
+ 0001:0017297C       uTemplateFields.EnsureText
+ 0001:00172A54       uTemplateFields.TemplateFieldCode2Field
+ 0001:00172ACC       uTemplateFields.TemplateDateCode2DateType
+ 0001:00172B44       uTemplateFields.ConvertCodes2Text
+ 0001:00172CC8       uTemplateFields.TTemplateField.Create
+ 0001:0017329C       uTemplateFields.TTemplateField.GetTemplateFieldDefault
+ 0001:0017333C       uTemplateFields.wdth
+ 0001:0017336C       uTemplateFields.ht
+ 0001:0017339C       uTemplateFields.UpdateIndents
+ 0001:00173470       uTemplateFields.TTemplateField.CreateDialogControls
+ 0001:00173FA8       uTemplateFields.TTemplateField.CanModify
+ 0001:00174090       uTemplateFields.TTemplateField.SetEditDefault
+ 0001:001740BC       uTemplateFields.TTemplateField.SetFldName
+ 0001:001740EC       uTemplateFields.TTemplateField.SetFldType
+ 0001:001741C0       uTemplateFields.TTemplateField.SetInactive
+ 0001:001741DC       uTemplateFields.TTemplateField.SetItemDefault
+ 0001:00174208       uTemplateFields.TTemplateField.SetItems
+ 0001:00174234       uTemplateFields.TTemplateField.SetLMText
+ 0001:00174260       uTemplateFields.TTemplateField.SetMaxLen
+ 0001:0017427C       uTemplateFields.TTemplateField.SetNotes
+ 0001:001742A8       uTemplateFields.TTemplateField.SaveError
+ 0001:00174ADC       uTemplateFields.TTemplateField.Assign
+ 0001:00174B80       uTemplateFields.TTemplateField.Width
+ 0001:00174C94       uTemplateFields.TTemplateField.Destroy
+ 0001:00174CC8       uTemplateFields.TTemplateField.SetRequired
+ 0001:00174CE4       uTemplateFields.TTemplateField.NewField
+ 0001:00174CF8       uTemplateFields.TTemplateField.SetSepLines
+ 0001:00174D14       uTemplateFields.TTemplateField.SetIncrement
+ 0001:00174D30       uTemplateFields.TTemplateField.SetIndent
+ 0001:00174D4C       uTemplateFields.TTemplateField.SetMaxVal
+ 0001:00174D68       uTemplateFields.TTemplateField.SetMinVal
+ 0001:00174D84       uTemplateFields.TTemplateField.SetPad
+ 0001:00174DA0       uTemplateFields.TTemplateField.SetTextLen
+ 0001:00174DBC       uTemplateFields.TTemplateField.SetURL
+ 0001:00174DE8       uTemplateFields.TTemplateField.GetRequired
+ 0001:00174E00       uTemplateFields.TTemplateField.SetDateType
+ 0001:00174E1C       uTemplateFields.PanelDestroy
+ 0001:00174E4C       uTemplateFields.TTemplateDialogEntry.Create
+ 0001:00175318       uTemplateFields.TTemplateDialogEntry.Destroy
+ 0001:00175384       uTemplateFields.TTemplateDialogEntry.DoChange
+ 0001:001753A0       uTemplateFields.GetOriginalItem
+ 0001:001754D0       uTemplateFields.TTemplateDialogEntry.GetControlText
+ 0001:00175AC0       uTemplateFields.TTemplateDialogEntry.GetFieldValues
+ 0001:00175C38       uTemplateFields.Add2TabOrder
+ 0001:00175C50       uTemplateFields.StripSRCode
+ 0001:00175CBC       uTemplateFields.DoLabel
+ 0001:00175E44       uTemplateFields.Init
+ 0001:00175F44       uTemplateFields.Text508Work
+ 0001:00175FE4       uTemplateFields.Ctrl508Work
+ 0001:00176110       uTemplateFields.NextLine
+ 0001:00176154       uTemplateFields.TTemplateDialogEntry.GetPanel
+ 0001:0017650C       uTemplateFields.TTemplateDialogEntry.GetText
+ 0001:00176524       uTemplateFields.TTemplateDialogEntry.KillLabels
+ 0001:001765AC       uTemplateFields.TTemplateDialogEntry.SetAutoDestroyOnPanelFree
+ 0001:001765F0       uTemplateFields.TTemplateDialogEntry.SetControlText
+ 0001:001768EC       uTemplateFields.TTemplateDialogEntry.SetFieldValues
+ 0001:001769F8       uTemplateFields.TTemplateDialogEntry.StripCode
+ 0001:00176A94       uTemplateFields.TTemplateDialogEntry.UpDownChange
+ 0001:00176AB0       uTemplateFields.StripEmbedded
+ 0001:00176BB4       uTemplateFields.StripScreenReaderCodes
+ 0001:00176C04       uTemplateFields.StripScreenReaderCodes
+ 0001:00176C80       uTemplateFields.Finalization
+ 0001:00176D4C       rReminders.GetCurrentReminders
+ 0001:00176DB4       rReminders.GetOtherReminders
+ 0001:00176E34       rReminders.EvaluateReminders
+ 0001:00176F8C       rReminders.EvaluateReminder
+ 0001:00177058       rReminders.GetEducationTopicsForReminder
+ 0001:00177098       rReminders.GetEducationSubtopics
+ 0001:001770DC       rReminders.GetReminderWebPages
+ 0001:00177174       rReminders.DetailReminder
+ 0001:00177234       rReminders.ReminderInquiry
+ 0001:00177284       rReminders.EducationTopicDetail
+ 0001:001772D4       rReminders.GetDialogInfo
+ 0001:001773D0       rReminders.GetDialogPrompts
+ 0001:00177480       rReminders.GetDialogStatus
+ 0001:00177590       rReminders.GetRemindersActive
+ 0001:00177648       rReminders.GetProgressNoteHeader
+ 0001:001776A0       rReminders.LoadMentalHealthTest
+ 0001:0017772C       rReminders.MentalHealthTestResults
+ 0001:00177AF4       rReminders.SaveMentalHealthTest
+ 0001:00177D20       rReminders.SaveWomenHealthData
+ 0001:00177D68       rReminders.CheckGECValue
+ 0001:00178034       rReminders.SaveMSTDataFromReminder
+ 0001:00178134       rReminders.GetReminderFolders
+ 0001:001781A8       rReminders.SetReminderFolders
+ 0001:001781E4       rReminders.GetDefLocations
+ 0001:00178274       rReminders.InsertRemTextAtCursor
+ 0001:0017831C       rReminders.NewRemCoverSheetListActive
+ 0001:001783C8       rReminders.CanEditAllRemCoverSheetLists
+ 0001:0017840C       rReminders.GetCoverSheetLevelData
+ 0001:001784AC       rReminders.SetCoverSheetLevelData
+ 0001:0017863C       rReminders.GetCategoryItems
+ 0001:00178688       rReminders.GetAllRemindersAndCategories
+ 0001:001786D0       rReminders.VerifyMentalHealthTestComplete
+ 0001:00178894       rReminders.MHDLLFound
+ 0001:001788B8       rReminders.UsedMHDllRPC
+ 0001:00178940       rReminders.GetMHResultText
+ 0001:00178D88       rReminders.Finalization
+ 0001:00178DC4       fMHTest..TfrmMHTest
+ 0001:0017903C       fMHTest..TMHQuestion
+ 0001:001790C0       fMHTest.ProcessMsg
+ 0001:0017913C       fMHTest.PerformMHTest
+ 0001:00179580       fMHTest.SaveMHTest
+ 0001:001798A0       fMHTest.RemoveMHTest
+ 0001:00179B44       fMHTest.CheckforMHDll
+ 0001:00179C48       fMHTest.CloseMHDLL
+ 0001:00179CC4       fMHTest.TfrmMHTest.Answers
+ 0001:00179D88       fMHTest.ParseText
+ 0001:00179F5C       fMHTest.AddTxt2Str
+ 0001:0017A024       fMHTest.TfrmMHTest.LoadTest
+ 0001:0017A5B0       fMHTest.TfrmMHTest.FormCreate
+ 0001:0017A604       fMHTest.TfrmMHTest.FormDestroy
+ 0001:0017A63C       fMHTest.TfrmMHTest.BuildControls
+ 0001:0017A8C0       fMHTest.TfrmMHTest.GetQText
+ 0001:0017A9B8       fMHTest.TfrmMHTest.CallMHDLL
+ 0001:0017ADE0       fMHTest.TfrmMHTest.CurrentQ
+ 0001:0017AE70       fMHTest.TfrmMHTest.GotoQ
+ 0001:0017AEF4       fMHTest.TfrmMHTest.FormKeyDown
+ 0001:0017AF54       fMHTest.GetCtrl
+ 0001:0017AFBC       fMHTest.AdjDY
+ 0001:0017AFD0       fMHTest.GetRLbl
+ 0001:0017B170       fMHTest.TMHQuestion.BuildControls
+ 0001:0017B77C       fMHTest.TMHQuestion.Create
+ 0001:0017B818       fMHTest.TMHQuestion.Destroy
+ 0001:0017B848       fMHTest.TMHQuestion.OnChange
+ 0001:0017B940       fMHTest.TfrmMHTest.FormShow
+ 0001:0017B9A4       fMHTest.TfrmMHTest.sbMainResize
+ 0001:0017B9B4       fMHTest.TMHQuestion.Question
+ 0001:0017BB5C       fMHTest.TfrmMHTest.btnOKClick
+ 0001:0017BF10       fMHTest.TfrmMHTest.btnClearClick
+ 0001:0017BFC4       fPCELex..TfrmPCELex
+ 0001:0017C270       fPCELex.LexiconLookup
+ 0001:0017C300       fPCELex.TfrmPCELex.FormCreate
+ 0001:0017C310       fPCELex.TfrmPCELex.SetApp
+ 0001:0017C3D8       fPCELex.TfrmPCELex.SetDate
+ 0001:0017C3F4       fPCELex.TfrmPCELex.txtSearchChange
+ 0001:0017C414       fPCELex.TfrmPCELex.cmdSearchClick
+ 0001:0017C570       fPCELex.TfrmPCELex.lstSelectClick
+ 0001:0017C5BC       fPCELex.TfrmPCELex.cmdOKClick
+ 0001:0017C718       fPCELex.TfrmPCELex.cmdCancelClick
+ 0001:0017C730       fPCELex.TfrmPCELex.lstSelectDblClick
+ 0001:0017C74C       rTIU.LoadNoteTitles
+ 0001:0017C8CC       rTIU.ResetNoteTitles
+ 0001:0017C8EC       rTIU.DfltNoteTitle
+ 0001:0017C904       rTIU.DfltNoteTitleName
+ 0001:0017C928       rTIU.IsConsultTitle
+ 0001:0017C9C8       rTIU.IsPRFTitle
+ 0001:0017CA5C       rTIU.IsClinProcTitle
+ 0001:0017CAFC       rTIU.ListNoteTitlesShort
+ 0001:0017CBA8       rTIU.LoadBoilerPlate
+ 0001:0017CC68       rTIU.PrintNameForTitle
+ 0001:0017CCAC       rTIU.SubSetOfNoteTitles
+ 0001:0017CD5C       rTIU.LoadTIUPrefs
+ 0001:0017CFD4       rTIU.ResetTIUPreferences
+ 0001:0017CFF4       rTIU.AskCosignerForDocument
+ 0001:0017D148       rTIU.AskCosignerForTitle
+ 0001:0017D29C       rTIU.AskSubjectForNotes
+ 0001:0017D2B4       rTIU.CanCosign
+ 0001:0017D414       rTIU.DefaultCosigner
+ 0001:0017D44C       rTIU.ReturnMaxNotes
+ 0001:0017D46C       rTIU.DfltTIULocation
+ 0001:0017D484       rTIU.ActOnDocument
+ 0001:0017D580       rTIU.AuthorSignedDocument
+ 0001:0017D62C       rTIU.CosignDocument
+ 0001:0017D6D0       rTIU.ListConsultRequests
+ 0001:0017D794       rTIU.ListNotesForTree
+ 0001:0017D874       rTIU.LoadDocumentText
+ 0001:0017D8C8       rTIU.LoadDetailText
+ 0001:0017D920       rTIU.FindDT
+ 0001:0017DA0C       rTIU.FindExt
+ 0001:0017DAE4       rTIU.FindInt
+ 0001:0017DBC4       rTIU.FindInt64
+ 0001:0017DCC0       rTIU.FindVal
+ 0001:0017DD98       rTIU.GetNoteForEdit
+ 0001:0017E148       rTIU.VisitStrForNote
+ 0001:0017E188       rTIU.TitleForNote
+ 0001:0017E214       rTIU.GetPackageRefForNote
+ 0001:0017E254       rTIU.GetConsultIENforNote
+ 0001:0017E330       rTIU.LockDocument
+ 0001:0017E3E8       rTIU.UnlockDocument
+ 0001:0017E42C       rTIU.LastSaveClean
+ 0001:0017E4C4       rTIU.GetTIUListItem
+ 0001:0017E510       rTIU.DeleteDocument
+ 0001:0017E5F8       rTIU.JustifyDocumentDelete
+ 0001:0017E68C       rTIU.SignDocument
+ 0001:0017E770       rTIU.PutNewNote
+ 0001:0017EBD0       rTIU.PutAddendum
+ 0001:0017EE78       rTIU.PutEditedNote
+ 0001:0017F23C       rTIU.SetText
+ 0001:0017F57C       rTIU.InitParams
+ 0001:0017F694       rTIU.AllowChartPrintForNote
+ 0001:0017F74C       rTIU.PrintNoteToDevice
+ 0001:0017F854       rTIU.GetFormattedNote
+ 0001:0017F8AC       rTIU.GetCurrentSigners
+ 0001:0017F90C       rTIU.UpdateAdditionalSigners
+ 0001:0017F960       rTIU.CanChangeCosigner
+ 0001:0017FA18       rTIU.ChangeCosigner
+ 0001:0017FB5C       rTIU.OneNotePerVisit
+ 0001:0017FC30       rTIU.GetCurrentTIUContext
+ 0001:0017FEF8       rTIU.SaveCurrentTIUContext
+ 0001:00180118       rTIU.TIUSiteParams
+ 0001:001801B0       rTIU.IDNotesInstalled
+ 0001:001801B4       rTIU.CanTitleBeIDChild
+ 0001:001802BC       rTIU.CanBeAttached
+ 0001:001804F4       rTIU.CanReceiveAttachment
+ 0001:001805E4       rTIU.AttachEntryToParent
+ 0001:001806E0       rTIU.DetachEntryFromParent
+ 0001:001807C4       rTIU.SubSetOfUserClasses
+ 0001:00180828       rTIU.UserDivClassInfo
+ 0001:0018087C       rTIU.UserInactive
+ 0001:00180918       rTIU.TIUPatch175Installed
+ 0001:00180954       rTIU.NoteHasText
+ 0001:001809D8       rTIU.Finalization
+ 0001:00180A38       VA2006Utils..THeaderControl2006BugFixer
+ 0001:00180B08       VA2006Utils.THeaderControl2006BugFixer.HeaderControlMessageHandler
+ 0001:00180B68       VA2006Utils.THeaderControl2006BugFixer.Notification
+ 0001:00180BA0       VA2006Utils.THeaderControl2006BugFixer.CreateWrapper
+ 0001:00180BFC       VA2006Utils.FixHeaderControlDelphi2006Bug
+ 0001:00180C0C       fPCEBaseGrid..TfrmPCEBaseGrid
+ 0001:00180E44       fPCEBaseGrid.TfrmPCEBaseGrid.FormCreate
+ 0001:00180E70       fPCEBaseGrid.TfrmPCEBaseGrid.SyncGridHeader
+ 0001:001810D8       fPCEBaseGrid.TfrmPCEBaseGrid.hcGridSectionResize
+ 0001:001810E0       fPCEBaseGrid.TfrmPCEBaseGrid.pnlGridResize
+ 0001:001810E8       fPCEBaseGrid.TfrmPCEBaseGrid.SyncGridData
+ 0001:001813A0       fPCEBaseGrid.TfrmPCEBaseGrid.GetGridIndex
+ 0001:001813F8       fPCEBaseGrid.TfrmPCEBaseGrid.SetGridIndex
+ 0001:00181440       fPCEBaseGrid.TfrmPCEBaseGrid.ClearGrid
+ 0001:00181494       fPCEBaseGrid.TfrmPCEBaseGrid.UpdateControls
+ 0001:00181498       fPCEBaseGrid.TfrmPCEBaseGrid.RestoreGridSelected
+ 0001:00181540       fPCEBaseGrid.TfrmPCEBaseGrid.SaveGridSelected
+ 0001:001815D4       fPCEBaseGrid.Finalization
+ 0001:00181604       ORCtrlsVA508Compatibility..TORCheckBox508Manager
+ 0001:001816B8       ORCtrlsVA508Compatibility..TLBMgr
+ 0001:00181718       ORCtrlsVA508Compatibility..TORListBox508Manager
+ 0001:001817CC       ORCtrlsVA508Compatibility..TVA508TORDateComboComplexManager
+ 0001:00181840       ORCtrlsVA508Compatibility..TORComboBox508Manager
+ 0001:001818F4       ORCtrlsVA508Compatibility..TORDayCombo508Manager
+ 0001:001819A8       ORCtrlsVA508Compatibility..TORMonthCombo508Manager
+ 0001:00181A5C       ORCtrlsVA508Compatibility..TORYearEdit508Manager
+ 0001:00181B10       ORCtrlsVA508Compatibility..TORDateButton508Manager
+ 0001:00181BC4       ORCtrlsVA508Compatibility.GetEditBox
+ 0001:00181C10       ORCtrlsVA508Compatibility.ORComboBoxAlternateHandle
+ 0001:00181C30       ORCtrlsVA508Compatibility.RegisterORComponents
+ 0001:001823A8       ORCtrlsVA508Compatibility.TORCheckBox508Manager.Create
+ 0001:001823F4       ORCtrlsVA508Compatibility.TORCheckBox508Manager.GetComponentName
+ 0001:00182440       ORCtrlsVA508Compatibility.TORCheckBox508Manager.GetInstructions
+ 0001:0018245C       ORCtrlsVA508Compatibility.TORCheckBox508Manager.GetState
+ 0001:001824C4       ORCtrlsVA508Compatibility..TORListBoxCheckBoxes508Manager
+ 0001:0018253C       ORCtrlsVA508Compatibility..TORListBoxMultiSelect508Manager
+ 0001:001825B4       ORCtrlsVA508Compatibility..TORListBoxStandard508Manager
+ 0001:0018262C       ORCtrlsVA508Compatibility.TORListBox508Manager.Create
+ 0001:00182678       ORCtrlsVA508Compatibility.TORListBox508Manager.Destroy
+ 0001:001826CC       ORCtrlsVA508Compatibility.TORListBox508Manager.GetComponentName
+ 0001:001826EC       ORCtrlsVA508Compatibility.TORListBox508Manager.GetItem
+ 0001:0018273C       ORCtrlsVA508Compatibility.TORListBox508Manager.GetItemInstructions
+ 0001:0018275C       ORCtrlsVA508Compatibility.TORListBox508Manager.GetState
+ 0001:0018277C       ORCtrlsVA508Compatibility.TORListBox508Manager.GetValue
+ 0001:001827A0       ORCtrlsVA508Compatibility.TORListBox508Manager.GetCurrent
+ 0001:00182818       ORCtrlsVA508Compatibility.TORListBoxCheckBoxes508Manager.GetComponentName
+ 0001:00182844       ORCtrlsVA508Compatibility.TORListBoxCheckBoxes508Manager.GetItemInstructions
+ 0001:00182884       ORCtrlsVA508Compatibility.TORListBoxCheckBoxes508Manager.GetState
+ 0001:001828E4       ORCtrlsVA508Compatibility.TORListBoxMultiSelect508Manager.GetComponentName
+ 0001:00182918       ORCtrlsVA508Compatibility.TORListBoxMultiSelect508Manager.GetItemInstructions
+ 0001:001829B4       ORCtrlsVA508Compatibility.TORListBoxMultiSelect508Manager.GetState
+ 0001:00182A28       ORCtrlsVA508Compatibility.TORListBoxStandard508Manager.GetComponentName
+ 0001:00182A50       ORCtrlsVA508Compatibility.TORListBoxStandard508Manager.GetItemInstructions
+ 0001:00182A5C       ORCtrlsVA508Compatibility.TORListBoxStandard508Manager.GetState
+ 0001:00182A9C       ORCtrlsVA508Compatibility.TLBMgr.GetIdx
+ 0001:00182AC0       ORCtrlsVA508Compatibility.TVA508TORDateComboComplexManager.Create
+ 0001:00182AFC       ORCtrlsVA508Compatibility.TVA508TORDateComboComplexManager.Refresh
+ 0001:00182B58       ORCtrlsVA508Compatibility.TORDayCombo508Manager.Create
+ 0001:00182BA4       ORCtrlsVA508Compatibility.TORDayCombo508Manager.GetCaption
+ 0001:00182BC4       ORCtrlsVA508Compatibility.TORMonthCombo508Manager.Create
+ 0001:00182C10       ORCtrlsVA508Compatibility.TORMonthCombo508Manager.GetCaption
+ 0001:00182C34       ORCtrlsVA508Compatibility.TORYearEdit508Manager.Create
+ 0001:00182C80       ORCtrlsVA508Compatibility.TORYearEdit508Manager.GetCaption
+ 0001:00182CA4       ORCtrlsVA508Compatibility.TORDateButton508Manager.Create
+ 0001:00182CF0       ORCtrlsVA508Compatibility.TORDateButton508Manager.GetCaption
+ 0001:00182D14       ORCtrlsVA508Compatibility.TORComboBox508Manager.Create
+ 0001:00182D60       ORCtrlsVA508Compatibility.TORComboBox508Manager.GetValue
+ 0001:00182D74       ORCtrlsVA508Compatibility.Finalization
+ 0001:00182DA4       mVisitRelated..TfraVisitRelated
+ 0001:0018305C       mVisitRelated.DisableCheck
+ 0001:00183078       mVisitRelated.TfraVisitRelated.chkClick
+ 0001:00183500       mVisitRelated.TfraVisitRelated.Create
+ 0001:00183560       mVisitRelated.TfraVisitRelated.GetCheckState
+ 0001:001835AC       mVisitRelated.TfraVisitRelated.GetRelated
+ 0001:00183698       mVisitRelated.TfraVisitRelated.GetRelated
+ 0001:00183768       mVisitRelated.TfraVisitRelated.InitAllow
+ 0001:00183854       mVisitRelated.TfraVisitRelated.InitRelated
+ 0001:00183934       mVisitRelated.TfraVisitRelated.InitRelated
+ 0001:00183A18       mVisitRelated.TfraVisitRelated.SetCheckEnable
+ 0001:00183A40       mVisitRelated.TfraVisitRelated.SetCheckState
+ 0001:00183AC4       mVisitRelated.Finalization
+ 0001:00183B08       fPCEProvider..TfrmPCEProvider
+ 0001:00183D74       fPCEProvider.NoPrimaryPCEProvider
+ 0001:00183FEC       fPCEProvider.TfrmPCEProvider.cboPrimaryNeedData
+ 0001:00184088       fPCEProvider.TfrmPCEProvider.cboPrimaryChange
+ 0001:00184174       fPCEProvider.TfrmPCEProvider.FormCreate
+ 0001:00184190       fPCEProvider.TfrmPCEProvider.btnSelectClick
+ 0001:001842D4       fPCEProvider.TfrmPCEProvider.AskUser
+ 0001:00184454       fGAF..TfrmGAF
+ 0001:00184764       fGAF.ValidGAFData
+ 0001:001847D0       fGAF.TfrmGAF.LoadScores
+ 0001:001849C4       fGAF.TfrmGAF.cboGAFProviderNeedData
+ 0001:001849EC       fGAF.TfrmGAF.BADData
+ 0001:00184C54       fGAF.TfrmGAF.edtScoreChange
+ 0001:00184D34       fGAF.TfrmGAF.dteGAFExit
+ 0001:00184D38       fGAF.TfrmGAF.cboGAFProviderExit
+ 0001:00184D40       fGAF.TfrmGAF.AllowTabChange
+ 0001:00184D58       fGAF.TfrmGAF.GetGAFScore
+ 0001:00184DE0       fGAF.TfrmGAF.FormActivate
+ 0001:00184E54       fGAF.TfrmGAF.FormShow
+ 0001:00184E5C       fGAF.TfrmGAF.btnURLClick
+ 0001:00184EB8       fGAF.TfrmGAF.FormCreate
+ 0001:00184F50       fGAF.Finalization
+ 0001:00184F80       fVisitType..TfrmVisitType
+ 0001:001854A0       fVisitType.TfrmVisitType.MatchVType
+ 0001:00185698       fVisitType.TfrmVisitType.lstVTypeSectionClick
+ 0001:00185820       fVisitType.TfrmVisitType.FormCloseQuery
+ 0001:00185824       fVisitType.TfrmVisitType.RefreshProviders
+ 0001:0018593C       fVisitType.TfrmVisitType.FormCreate
+ 0001:00185AC0       fVisitType.TfrmVisitType.UpdateProviderButtons
+ 0001:00185B18       fVisitType.TfrmVisitType.btnAddClick
+ 0001:00185BB0       fVisitType.TfrmVisitType.btnDeleteClick
+ 0001:00185C48       fVisitType.TfrmVisitType.btnPrimaryClick
+ 0001:00185CF0       fVisitType.TfrmVisitType.cboPtProviderDblClick
+ 0001:00185CF8       fVisitType.TfrmVisitType.cboPtProviderChange
+ 0001:00185D00       fVisitType.TfrmVisitType.cboPtProviderNeedData
+ 0001:00185D9C       fVisitType.TfrmVisitType.lbProvidersChange
+ 0001:00185DA4       fVisitType.TfrmVisitType.lbProvidersDblClick
+ 0001:00185DAC       fVisitType.TfrmVisitType.FormResize
+ 0001:00186008       fVisitType.TfrmVisitType.lbxVisitsClickCheck
+ 0001:00186274       fVisitType.TfrmVisitType.ShowModifiers
+ 0001:001864B8       fVisitType.TfrmVisitType.CheckModifiers
+ 0001:00186704       fVisitType.TfrmVisitType.lbModsClickCheck
+ 0001:0018683C       fVisitType.TfrmVisitType.lbxVisitsClick
+ 0001:00186844       fVisitType.TfrmVisitType.memSCDisplayEnter
+ 0001:00186858       fVisitType.Finalization
+ 0001:00186888       fDiagnoses..TfrmDiagnoses
+ 0001:00186B50       fDiagnoses.TfrmDiagnoses.EnsurePrimaryDiag
+ 0001:00186BD4       fDiagnoses.TfrmDiagnoses.cmdDiagPrimaryClick
+ 0001:00186C38       fDiagnoses.TfrmDiagnoses.ckbDiagProbClicked
+ 0001:00186CF8       fDiagnoses.TfrmDiagnoses.FormCreate
+ 0001:00186D70       fDiagnoses.TfrmDiagnoses.btnRemoveClick
+ 0001:00186D84       fDiagnoses.TfrmDiagnoses.UpdateNewItemStr
+ 0001:00186E04       fDiagnoses.TfrmDiagnoses.UpdateControls
+ 0001:00187014       fDiagnoses.TfrmDiagnoses.FormResize
+ 0001:00187078       fDiagnoses.TfrmDiagnoses.lbxSectionClickCheck
+ 0001:0018728C       fDiagnoses.TfrmDiagnoses.btnOKClick
+ 0001:001872AC       fDiagnoses.TfrmDiagnoses.lbSectionClick
+ 0001:001872B4       fDiagnoses.TfrmDiagnoses.GetEncounterDiagnoses
+ 0001:001873D0       fDiagnoses.TfrmDiagnoses.lbSectionDrawItem
+ 0001:0018767C       fDiagnoses.Finalization
+ 0001:001876AC       fProcedure..TfrmProcedures
+ 0001:00187A80       fProcedure.TfrmProcedures.txtProcQtyChange
+ 0001:00187AF4       fProcedure.TfrmProcedures.cboProviderChange
+ 0001:00187BB8       fProcedure.TfrmProcedures.FormCreate
+ 0001:00187C8C       fProcedure.TfrmProcedures.UpdateNewItemStr
+ 0001:00187CAC       fProcedure.TfrmProcedures.UpdateControls
+ 0001:00187F98       fProcedure.TfrmProcedures.FormResize
+ 0001:00188088       fProcedure.TfrmProcedures.splRightMoved
+ 0001:001880C4       fProcedure.TfrmProcedures.clbListClick
+ 0001:001880E8       fProcedure.TfrmProcedures.lbGridSelect
+ 0001:00188104       fProcedure.TfrmProcedures.btnSelectAllClick
+ 0001:00188120       fProcedure.TfrmProcedures.ShowModifiers
+ 0001:00188464       fProcedure.TfrmProcedures.CheckModifiers
+ 0001:0018872C       fProcedure.TfrmProcedures.lbModsClickCheck
+ 0001:00188938       fProcedure.TfrmProcedures.lbModsExit
+ 0001:0018896C       fProcedure.TfrmProcedures.lbSectionClick
+ 0001:00188980       fProcedure.TfrmProcedures.lbxSectionClickCheck
+ 0001:00188C20       fProcedure.TfrmProcedures.lbxSectionExit
+ 0001:00188C80       fProcedure.TfrmProcedures.btnOtherClick
+ 0001:00188C9C       fProcedure.TfrmProcedures.btnOtherExit
+ 0001:00188CFC       fProcedure.TfrmProcedures.btnRemoveClick
+ 0001:00188D18       fProcedure.TfrmProcedures.cboProviderNeedData
+ 0001:00188DB4       fProcedure.TfrmProcedures.OK2SaveProcedures
+ 0001:00188E54       fProcedure.TfrmProcedures.MissingProvider
+ 0001:00188EC4       fProcedure.TfrmProcedures.InitTab
+ 0001:00188F1C       fProcedure.Finalization
+ 0001:00188F4C       fImmunization..TfrmImmunizations
+ 0001:001891E0       fImmunization.TfrmImmunizations.cboImmSeriesChange
+ 0001:001892B0       fImmunization.TfrmImmunizations.cboImmReactionChange
+ 0001:00189380       fImmunization.TfrmImmunizations.ckbContraClick
+ 0001:001893F4       fImmunization.TfrmImmunizations.FormCreate
+ 0001:00189470       fImmunization.TfrmImmunizations.UpdateNewItemStr
+ 0001:001894E0       fImmunization.TfrmImmunizations.UpdateControls
+ 0001:0018978C       fImmunization.Finalization
+ 0001:001897BC       fSkinTest..TfrmSkinTests
+ 0001:00189AB0       fSkinTest.TfrmSkinTests.cboSkinResultsChange
+ 0001:00189B80       fSkinTest.TfrmSkinTests.EdtReadingChange
+ 0001:00189C3C       fSkinTest.TfrmSkinTests.edtDtReadChange
+ 0001:00189C40       fSkinTest.TfrmSkinTests.edtDTGivenChange
+ 0001:00189C44       fSkinTest.TfrmSkinTests.FormCreate
+ 0001:00189CB4       fSkinTest.TfrmSkinTests.UpdateNewItemStr
+ 0001:00189CF8       fSkinTest.TfrmSkinTests.UpdateControls
+ 0001:00189F98       fSkinTest.TfrmSkinTests.UpDnReadingChanging
+ 0001:00189FBC       fSkinTest.Finalization
+ 0001:00189FEC       fPatientEd..TfrmPatientEd
+ 0001:0018A210       fPatientEd.TfrmPatientEd.cboPatUnderstandingChange
+ 0001:0018A2E0       fPatientEd.TfrmPatientEd.FormCreate
+ 0001:0018A350       fPatientEd.TfrmPatientEd.UpdateNewItemStr
+ 0001:0018A370       fPatientEd.TfrmPatientEd.UpdateControls
+ 0001:0018A514       fPatientEd.Finalization
+ 0001:0018A544       fHealthFactor..TfrmHealthFactors
+ 0001:0018A768       fHealthFactor.TfrmHealthFactors.cboHealthLevelChange
+ 0001:0018A838       fHealthFactor.TfrmHealthFactors.FormCreate
+ 0001:0018A8AC       fHealthFactor.TfrmHealthFactors.UpdateNewItemStr
+ 0001:0018A8CC       fHealthFactor.TfrmHealthFactors.UpdateControls
+ 0001:0018AA70       fHealthFactor.Finalization
+ 0001:0018AAA0       fHFSearch..TfrmHFSearch
+ 0001:0018AD60       fHFSearch.HFLookup
+ 0001:0018ADD0       fHFSearch.TfrmHFSearch.cbxSearchChange
+ 0001:0018AFF0       fHFSearch.TfrmHFSearch.FormCreate
+ 0001:0018B2DC       fHFSearch.TfrmHFSearch.btnOKClick
+ 0001:0018B358       fHFSearch.TfrmHFSearch.tvSearchDblClick
+ 0001:0018B360       fHFSearch.TfrmHFSearch.tvSearchGetImageIndex
+ 0001:0018B400       fHFSearch.TfrmHFSearch.tvSearchChange
+ 0001:0018B4EC       fHFSearch.TfrmHFSearch.UpdateCat
+ 0001:0018B5B8       fPCEBaseMain..TfrmPCEBaseMain
+ 0001:0018B9F8       fPCEBaseMain..TLBSectionManager
+ 0001:0018BAA8       fPCEBaseMain.TfrmPCEBaseMain.lbSectionClick
+ 0001:0018BAE0       fPCEBaseMain.TfrmPCEBaseMain.lbSectionExit
+ 0001:0018BB14       fPCEBaseMain.TfrmPCEBaseMain.UpdateNewItemStr
+ 0001:0018BB18       fPCEBaseMain.TfrmPCEBaseMain.GridChanged
+ 0001:0018BC60       fPCEBaseMain.TfrmPCEBaseMain.btnOtherClick
+ 0001:0018BDF4       fPCEBaseMain.TfrmPCEBaseMain.btnOtherExit
+ 0001:0018BE54       fPCEBaseMain.TfrmPCEBaseMain.edtCommentExit
+ 0001:0018BED4       fPCEBaseMain.TfrmPCEBaseMain.AllowTabChange
+ 0001:0018BEDC       fPCEBaseMain.TfrmPCEBaseMain.edtCommentChange
+ 0001:0018BEF8       fPCEBaseMain.TfrmPCEBaseMain.btnRemoveClick
+ 0001:0018C0B8       fPCEBaseMain.TfrmPCEBaseMain.UpdateControls
+ 0001:0018C1D4       fPCEBaseMain.TfrmPCEBaseMain.clbListClick
+ 0001:0018C1D8       fPCEBaseMain.TfrmPCEBaseMain.lbGridExit
+ 0001:0018C20C       fPCEBaseMain.TfrmPCEBaseMain.lbGridSelect
+ 0001:0018C218       fPCEBaseMain.TfrmPCEBaseMain.FormCreate
+ 0001:0018C250       fPCEBaseMain.TfrmPCEBaseMain.FormDestroy
+ 0001:0018C290       fPCEBaseMain.TfrmPCEBaseMain.InitTab
+ 0001:0018C2F0       fPCEBaseMain.TfrmPCEBaseMain.BeginUpdate
+ 0001:0018C2F8       fPCEBaseMain.TfrmPCEBaseMain.EndUpdate
+ 0001:0018C308       fPCEBaseMain.TfrmPCEBaseMain.NotUpdating
+ 0001:0018C314       fPCEBaseMain.TfrmPCEBaseMain.CheckOffEntries
+ 0001:0018C4B4       fPCEBaseMain.TfrmPCEBaseMain.btnSelectAllClick
+ 0001:0018C534       fPCEBaseMain.TfrmPCEBaseMain.FormResize
+ 0001:0018C54C       fPCEBaseMain.TfrmPCEBaseMain.clbListMouseDown
+ 0001:0018C554       fPCEBaseMain.TfrmPCEBaseMain.GetCat
+ 0001:0018C5F0       fPCEBaseMain.TfrmPCEBaseMain.lbxSectionClickCheck
+ 0001:0018C8E8       fPCEBaseMain.TfrmPCEBaseMain.lbxSectionExit
+ 0001:0018C948       fPCEBaseMain.TfrmPCEBaseMain.UpdateTabPos
+ 0001:0018C998       fPCEBaseMain.TfrmPCEBaseMain.splLeftMoved
+ 0001:0018C9D4       fPCEBaseMain.TfrmPCEBaseMain.Sync2Grid
+ 0001:0018CBA0       fPCEBaseMain.TfrmPCEBaseMain.Sync2Section
+ 0001:0018CD54       fPCEBaseMain.TfrmPCEBaseMain.edtCommentKeyPress
+ 0001:0018CDC0       fPCEBaseMain.TLBSectionManager.GetItemInstructions
+ 0001:0018CE5C       fPCEBaseMain.TLBSectionManager.GetState
+ 0001:0018CF1C       fPCEBaseMain.Finalization
+ 0001:0018CF4C       fExam..TfrmExams
+ 0001:0018D158       fExam.TfrmExams.cboExamResultsChange
+ 0001:0018D228       fExam.TfrmExams.FormCreate
+ 0001:0018D294       fExam.TfrmExams.UpdateNewItemStr
+ 0001:0018D2B4       fExam.TfrmExams.UpdateControls
+ 0001:0018D458       fExam.Finalization
+ 0001:0018D488       fPCEOther..TfrmPCEOther
+ 0001:0018D6C4       fPCEOther.OtherLookup
+ 0001:0018D744       fPCEOther.TfrmPCEOther.SetApp
+ 0001:0018D878       fPCEOther.TfrmPCEOther.cmdOKClick
+ 0001:0018D8F4       fPCEOther.TfrmPCEOther.FormCreate
+ 0001:0018D904       fPCEOther.TfrmPCEOther.cmdCancelClick
+ 0001:0018D91C       fPCEOther.TfrmPCEOther.cboOtherDblClick
+ 0001:0018D924       fPCEOther.TfrmPCEOther.cboOtherChange
+ 0001:0018DAB4       uConsults..TConsultTitles
+ 0001:0018DB24       uConsults..TClinProcTitles
+ 0001:0018DB94       uConsults.TConsultTitles.Create
+ 0001:0018DBD8       uConsults.TConsultTitles.Destroy
+ 0001:0018DC08       uConsults.TClinProcTitles.Create
+ 0001:0018DC4C       uConsults.TClinProcTitles.Destroy
+ 0001:0018DC7C       uConsults.MakeConsultListItem
+ 0001:0018E07C       uConsults.MakeConsultListDisplayText
+ 0001:0018E160       uConsults.MakeConsultNoteDisplayText
+ 0001:0018E398       uConsults.BuildServiceTree
+ 0001:0018E5A8       uConsults.CreateListItemsForConsultTree
+ 0001:0018ED9C       uConsults.BuildConsultsTree
+ 0001:0018EFAC       uConsults.SetNodeImage
+ 0001:0018F37C       uConsults.Finalization
+ 0001:0018F410       rODDiet.DietAttributes
+ 0001:0018F45C       rODDiet.LoadDietParams
+ 0001:0018F880       rODDiet.CurrentDietText
+ 0001:0018F8D4       rODDiet.AppendTFProducts
+ 0001:0018F924       rODDiet.ExpandedQuantity
+ 0001:0018F9AC       rODDiet.SubSetOfDiets
+ 0001:0018FA04       rODDiet.SubSetOfOPDiets
+ 0001:0018FA48       rODDiet.OrderLateTray
+ 0001:0018FAE0       rODDiet.IsolationID
+ 0001:0018FB20       rODDiet.CurrentIsolation
+ 0001:0018FB68       rODDiet.LoadIsolations
+ 0001:0018FBB8       rODDiet.LoadDietQuickList
+ 0001:0018FC18       rODDiet.DietDialogType
+ 0001:0018FCB8       rODDiet.OutpatientPatchInstalled
+ 0001:0018FD40       rODDiet.UserHasFHAUTHKey
+ 0001:0018FD78       rODDiet.GetCurrentRecurringOPMeals
+ 0001:0018FE24       rODDiet.OutpatientLocationConfigured
+ 0001:0018FEC8       fODDietLT..TfrmODDietLT
+ 0001:00190160       fODDietLT.AMPMToFMTime
+ 0001:00190298       fODDietLT.SetAvailTimes
+ 0001:00190378       fODDietLT.CheckLateTray
+ 0001:00190C28       fODDietLT.LateTrayCheck
+ 0001:00190DC4       fODDietLT.LateTrayOrder
+ 0001:00190F80       fODDietLT.TfrmODDietLT.FormCreate
+ 0001:00190F88       fODDietLT.TfrmODDietLT.cmdYesClick
+ 0001:00191038       fODDietLT.TfrmODDietLT.cmdNoClick
+ 0001:00191040       fClinicWardMeds..TfrmClinicWardMeds
+ 0001:00191264       fClinicWardMeds.TfrmClinicWardMeds.ClinicOrWardLocation
+ 0001:001912F4       fClinicWardMeds.TfrmClinicWardMeds.ClinicOrWardLocation
+ 0001:001913D8       fClinicWardMeds.TfrmClinicWardMeds.StartLocationCheck
+ 0001:00191480       fClinicWardMeds.TfrmClinicWardMeds.btnClinicClick
+ 0001:00191498       fClinicWardMeds.TfrmClinicWardMeds.btnWardClick
+ 0001:001914B0       fClinicWardMeds.TfrmClinicWardMeds.BuildMessage
+ 0001:0019180C       fClinicWardMeds.TfrmClinicWardMeds.BuildOrderLocList
+ 0001:001918E8       fClinicWardMeds.TfrmClinicWardMeds.rpcChangeOrderLocation
+ 0001:00191944       fClinicWardMeds.TfrmClinicWardMeds.rpcIsPatientOnWard
+ 0001:001919E4       fClinicWardMeds.Finalization
+ 0001:00191A48       fConsult513Prt..Tfrm513Print
+ 0001:00191D94       fConsult513Prt.PrintSF513
+ 0001:00191FDC       fConsult513Prt.Tfrm513Print.DisplaySelectDevice
+ 0001:00192138       fConsult513Prt.Tfrm513Print.cboDeviceNeedData
+ 0001:00192160       fConsult513Prt.Tfrm513Print.cboDeviceChange
+ 0001:0019222C       fConsult513Prt.Tfrm513Print.radChartCopyClick
+ 0001:00192234       fConsult513Prt.Tfrm513Print.radWorkCopyClick
+ 0001:0019223C       fConsult513Prt.Tfrm513Print.cmdOKClick
+ 0001:001925F8       fConsult513Prt.Tfrm513Print.cmdCancelClick
+ 0001:00192600       rDCSumm.LoadDCSummTitles
+ 0001:00192780       rDCSumm.ResetDCSummTitles
+ 0001:001927A0       rDCSumm.DfltDCSummTitle
+ 0001:001927B8       rDCSumm.DfltDCSummTitleName
+ 0001:001927DC       rDCSumm.ListDCSummTitlesShort
+ 0001:00192888       rDCSumm.SubSetOfDCSummTitles
+ 0001:00192938       rDCSumm.LoadDCSummPrefs
+ 0001:00192B00       rDCSumm.ResetDCSummPreferences
+ 0001:00192B20       rDCSumm.ReturnMaxDCSumms
+ 0001:00192B40       rDCSumm.ActOnDCDocument
+ 0001:00192C3C       rDCSumm.ListSummsForTree
+ 0001:00192D1C       rDCSumm.FindDT
+ 0001:00192E08       rDCSumm.FindExt
+ 0001:00192EE0       rDCSumm.FindInt
+ 0001:00192FC0       rDCSumm.FindInt64
+ 0001:001930BC       rDCSumm.GetDCSummForEdit
+ 0001:00193448       rDCSumm.LoadDCUrgencies
+ 0001:00193538       rDCSumm.SignDCDocument
+ 0001:0019361C       rDCSumm.PutNewDCSumm
+ 0001:00193B88       rDCSumm.PutDCAddendum
+ 0001:00193EE8       rDCSumm.PutEditedDCSumm
+ 0001:00194288       rDCSumm.GetAttending
+ 0001:00194328       rDCSumm.GetDischargeDate
+ 0001:001943C4       rDCSumm.RequireRelease
+ 0001:001944E4       rDCSumm.RequireMASVerification
+ 0001:00194608       rDCSumm.ChangeAttending
+ 0001:001947C8       rDCSumm.GetCurrentDCSummContext
+ 0001:00194A7C       rDCSumm.SaveCurrentDCSummContext
+ 0001:00194CA0       rDCSumm.Finalization
+ 0001:00194CF8       fTemplateDialog..TfrmTemplateDialog
+ 0001:00194FF0       fTemplateDialog.GetText
+ 0001:001952AC       fTemplateDialog.IncDlgID
+ 0001:00195394       fTemplateDialog.CountDlgProps
+ 0001:001954B0       fTemplateDialog.DoTemplateDialog
+ 0001:00195914       fTemplateDialog.CheckBoilerplate4Fields
+ 0001:00195A30       fTemplateDialog.CheckBoilerplate4Fields
+ 0001:00195ADC       fTemplateDialog.TfrmTemplateDialog.ChkAll
+ 0001:00195B38       fTemplateDialog.TfrmTemplateDialog.btnAllClick
+ 0001:00195B40       fTemplateDialog.TfrmTemplateDialog.btnNoneClick
+ 0001:00195B48       fTemplateDialog.TfrmTemplateDialog.GetObjectID
+ 0001:00195C0C       fTemplateDialog.TfrmTemplateDialog.FindObjectByID
+ 0001:00195CC0       fTemplateDialog.TfrmTemplateDialog.InitScreenReaderSetup
+ 0001:00195D4C       fTemplateDialog.NextTabCtrl
+ 0001:00195D88       fTemplateDialog.TfrmTemplateDialog.BuildCB
+ 0001:0019652C       fTemplateDialog.TfrmTemplateDialog.ParentCBEnter
+ 0001:00196548       fTemplateDialog.TfrmTemplateDialog.ParentCBExit
+ 0001:00196564       fTemplateDialog.TfrmTemplateDialog.ItemChecked
+ 0001:001965E4       fTemplateDialog.TfrmTemplateDialog.BuildAllControls
+ 0001:001966CC       fTemplateDialog.TfrmTemplateDialog.FormPaint
+ 0001:001966F0       fTemplateDialog.TfrmTemplateDialog.FormShow
+ 0001:00196708       fTemplateDialog.TfrmTemplateDialog.FormCreate
+ 0001:001967B4       fTemplateDialog.TfrmTemplateDialog.AppShowHint
+ 0001:001967E4       fTemplateDialog.TfrmTemplateDialog.FormDestroy
+ 0001:00196818       fTemplateDialog.TfrmTemplateDialog.FieldChanged
+ 0001:00196870       fTemplateDialog.TfrmTemplateDialog.FormCloseQuery
+ 0001:00196A5C       fTemplateDialog.TfrmTemplateDialog.btnOKClick
+ 0001:00196A64       fTemplateDialog.TfrmTemplateDialog.btnPreviewClick
+ 0001:00196AF0       fTemplateDialog.TfrmTemplateDialog.EntryDestroyed
+ 0001:00196B14       fTemplateDialog.TfrmTemplateDialog.FormClose
+ 0001:00196B3C       fTemplateDialog.TfrmTemplateDialog.SizeFormToCancelBtn
+ 0001:00196B58       fTemplateDialog.TfrmTemplateDialog.UMScreenReaderInit
+ 0001:00196BA4       fNoteIDParents..TfrmNoteIDParents
+ 0001:00196DE4       fNoteIDParents.SelectParentNodeFromList
+ 0001:00196FA8       fNoteIDParents.TfrmNoteIDParents.FormCreate
+ 0001:00196FB8       fNoteIDParents.TfrmNoteIDParents.cmdCancelClick
+ 0001:00196FD0       fNoteIDParents.TfrmNoteIDParents.cmdOKClick
+ 0001:001970BC       mImgText..TfraImgText
+ 0001:00197248       mImgText.TfraImgText.Create
+ 0001:00197288       mImgText.Finalization
+ 0001:001972B8       fIconLegend..TfrmIconLegend
+ 0001:00197A14       fIconLegend.ShowIconLegend
+ 0001:00197AA0       fIconLegend.TfrmIconLegend.btnOKClick
+ 0001:00197AA8       fIconLegend.TfrmIconLegend.ShowTab
+ 0001:00197B2C       fIconLegend.TfrmIconLegend.FormClose
+ 0001:00197B30       fIconLegend.TfrmIconLegend.FormDestroy
+ 0001:00197B54       fIconLegend.TfrmIconLegend.SetFontSize
+ 0001:00197C0C       fIconLegend.TfrmIconLegend.SnapLabels
+ 0001:00197C90       fIconLegend.TfrmIconLegend.FormKeyDown
+ 0001:00197D00       fRemVisitInfo..TfrmRemVisitInfo
+ 0001:00197F30       fRemVisitInfo.TfrmRemVisitInfo.btnNowClick
+ 0001:00197F50       fRemVisitInfo.TfrmRemVisitInfo.FormCreate
+ 0001:00197F88       fNoteCPFields..TfrmNoteCPFields
+ 0001:00198220       fNoteCPFields.EnterClinProcFields
+ 0001:00198340       fNoteCPFields.TfrmNoteCPFields.FormCreate
+ 0001:0019837C       fNoteCPFields.TfrmNoteCPFields.cmdOKClick
+ 0001:00198414       fNoteCPFields.TfrmNoteCPFields.ValidateFields
+ 0001:001986FC       fNoteCPFields.TfrmNoteCPFields.cmdCancelClick
+ 0001:00198830       fNoteCPFields.TfrmNoteCPFields.cboAuthorNeedData
+ 0001:00198860       MenuBar..TMenuBar
+ 0001:00198A20       MenuBar.TMenuBar.Create
+ 0001:00198A88       MenuBar.TMenuBar.GetChildren
+ 0001:00198A90       MenuBar.TMenuBar.SetMenu
+ 0001:00198BCC       fTemplateFields..TfrmTemplateFields
+ 0001:00198F14       fTemplateFields.TfrmTemplateFields.FormShow
+ 0001:00198F7C       fTemplateFields.TfrmTemplateFields.FormCreate
+ 0001:00198FEC       fTemplateFields.TfrmTemplateFields.cboObjectsNeedData
+ 0001:0019901C       fTemplateFields.TfrmTemplateFields.InsertField
+ 0001:00199218       fTemplateFields.TfrmTemplateFields.cboObjectsDblClick
+ 0001:00199230       fTemplateFields.TfrmTemplateFields.btnCancelClick
+ 0001:00199238       fTemplateFields.TfrmTemplateFields.FormClose
+ 0001:0019923C       fTemplateFields.TfrmTemplateFields.Setre
+ 0001:00199248       fTemplateFields.TfrmTemplateFields.UpdateStatus
+ 0001:00199288       fTemplateFields.TfrmTemplateFields.ValidInsert
+ 0001:00199318       fTemplateFields.TfrmTemplateFields.ValidPreview
+ 0001:001993C0       fTemplateFields.TfrmTemplateFields.btnInsertClick
+ 0001:001993D8       fTemplateFields.TfrmTemplateFields.btnPreviewClick
+ 0001:00199520       fTemplateFields.TfrmTemplateFields.cboObjectsChange
+ 0001:00199560       uSpell.SpellCheckInProgress
+ 0001:0019957C       uSpell.SpellCheckTitle
+ 0001:00199604       uSpell.GetWindows
+ 0001:00199624       uSpell.GetWindowList
+ 0001:00199644       uSpell.BringWordToFront
+ 0001:00199814       uSpell.SpellCheckAvailable
+ 0001:001998BC       uSpell.SpellAndGrammarCheckForControl
+ 0001:0019A8B4       uSpell.SpellCheckForControl
+ 0001:0019A8D0       uSpell.GrammarCheckForControl
+ 0001:0019A8EC       uSpell.Finalization
+ 0001:0019A928       fTemplateFieldEditor..TfrmTemplateFieldEditor
+ 0001:0019B4E4       fTemplateFieldEditor.EditDialogFields
+ 0001:0019B54C       fTemplateFieldEditor.SetLbl
+ 0001:0019B5A0       fTemplateFieldEditor.SetY
+ 0001:0019B5D8       fTemplateFieldEditor.TfrmTemplateFieldEditor.UpdateControls
+ 0001:0019C0E0       fTemplateFieldEditor.TfrmTemplateFieldEditor.SyncItems
+ 0001:0019C318       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsNeedData
+ 0001:0019C438       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormCreate
+ 0001:0019C56C       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsChange
+ 0001:0019C604       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtNameChange
+ 0001:0019C974       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxTypeChange
+ 0001:0019CA24       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtLenChange
+ 0001:0019CB94       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtDefaultChange
+ 0001:0019CC24       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxDefaultChange
+ 0001:0019CCA4       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtLMTextChange
+ 0001:0019CD20       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbActiveClick
+ 0001:0019CD74       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuNewClick
+ 0001:0019CF04       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnOKClick
+ 0001:0019CF0C       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnApplyClick
+ 0001:0019CFA0       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormCloseQuery
+ 0001:0019D010       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnCancelClick
+ 0001:0019D0B4       fTemplateFieldEditor.TfrmTemplateFieldEditor.SaveChanges
+ 0001:0019D214       fTemplateFieldEditor.TfrmTemplateFieldEditor.reItemsChange
+ 0001:0019D2A0       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbHideClick
+ 0001:0019D2BC       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtNameExit
+ 0001:0019D2D8       fTemplateFieldEditor.TfrmTemplateFieldEditor.VerifyName
+ 0001:0019D39C       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuCopyClick
+ 0001:0019D3F4       fTemplateFieldEditor.TfrmTemplateFieldEditor.SetFld
+ 0001:0019D400       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuDeleteClick
+ 0001:0019D8A0       fTemplateFieldEditor.TfrmTemplateFieldEditor.ResetListEntry
+ 0001:0019D95C       fTemplateFieldEditor.TfrmTemplateFieldEditor.btnPreviewClick
+ 0001:0019DA74       fTemplateFieldEditor.TfrmTemplateFieldEditor.EnableButtons
+ 0001:0019DB14       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuActionClick
+ 0001:0019DB1C       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbRequiredClick
+ 0001:0019DB6C       fTemplateFieldEditor.TfrmTemplateFieldEditor.pnlObjsResize
+ 0001:0019DB84       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormDestroy
+ 0001:0019DBAC       fTemplateFieldEditor.TfrmTemplateFieldEditor.SetHideSynonyms
+ 0001:0019DBD4       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsSynonymCheck
+ 0001:0019DC20       fTemplateFieldEditor.TfrmTemplateFieldEditor.popTextPopup
+ 0001:0019DE6C       fTemplateFieldEditor.TfrmTemplateFieldEditor.GetPopupControl
+ 0001:0019DE98       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPUndoClick
+ 0001:0019DEB0       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPCutClick
+ 0001:0019DEC0       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPCopyClick
+ 0001:0019DED0       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPPasteClick
+ 0001:0019DF28       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPSelectAllClick
+ 0001:0019DF38       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPCheckGrammarClick
+ 0001:0019DF60       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuBPSpellCheckClick
+ 0001:0019DF88       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbSepLinesClick
+ 0001:0019DFD4       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtpopControlEnter
+ 0001:0019E050       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxObjsKeyDown
+ 0001:0019E084       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtTextLenChange
+ 0001:0019E12C       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtDefNumChange
+ 0001:0019E230       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtMinValChange
+ 0001:0019E2E8       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtMaxValChange
+ 0001:0019E3A0       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtIncChange
+ 0001:0019E404       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtURLChange
+ 0001:0019E48C       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtPadChange
+ 0001:0019E4E4       fTemplateFieldEditor.TfrmTemplateFieldEditor.edtIndentChange
+ 0001:0019E53C       fTemplateFieldEditor.TfrmTemplateFieldEditor.reNotesChange
+ 0001:0019E5B8       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbxDateTypeChange
+ 0001:0019E670       fTemplateFieldEditor.TfrmTemplateFieldEditor.cbExcludeClick
+ 0001:0019E6C4       fTemplateFieldEditor.TfrmTemplateFieldEditor.FormResize
+ 0001:0019E6EC       fTemplateFieldEditor.TfrmTemplateFieldEditor.reItemsResizeRequest
+ 0001:0019E74C       fTemplateFieldEditor.TfrmTemplateFieldEditor.reItemsSelectionChange
+ 0001:0019E820       fTemplateFieldEditor.TfrmTemplateFieldEditor.mnuInsertTemplateFieldClick
+ 0001:0019E8E0       fTemplateFieldEditor.TfrmTemplateFieldEditor.ControlExit
+ 0001:0019E8FC       fTemplateFieldEditor.TfrmTemplateFieldEditor.reNotesKeyUp
+ 0001:0019E9A8       fConsultAlertTo..TfrmConsultAlertsTo
+ 0001:0019ECA8       fConsultAlertTo.SelectRecipients
+ 0001:0019ED4C       fConsultAlertTo.TfrmConsultAlertsTo.cboSrcListNeedData
+ 0001:0019ED7C       fConsultAlertTo.TfrmConsultAlertsTo.cmdCancelClick
+ 0001:0019ED84       fConsultAlertTo.TfrmConsultAlertsTo.cmdOKClick
+ 0001:0019EECC       fConsultAlertTo.TfrmConsultAlertsTo.DstListClick
+ 0001:0019EF04       fConsultAlertTo.TfrmConsultAlertsTo.cboSrcListKeyDown
+ 0001:0019EF18       fConsultAlertTo.TfrmConsultAlertsTo.cboSrcListMouseClick
+ 0001:0019F008       fConsMedRslt..TfrmConsMedRslt
+ 0001:0019F360       fConsMedRslt.SelectMedicineResult
+ 0001:0019F54C       fConsMedRslt.TfrmConsMedRslt.cmdCancelClick
+ 0001:0019F574       fConsMedRslt.TfrmConsMedRslt.cmdOKClick
+ 0001:0019F6A0       fConsMedRslt.TfrmConsMedRslt.cmdDetailsClick
+ 0001:0019F8CC       fConsMedRslt.TfrmConsMedRslt.ShowDetailsDestroyed
+ 0001:0019F91C       fConsMedRslt.TfrmConsMedRslt.ckAlertClick
+ 0001:0019F958       fConsMedRslt.TfrmConsMedRslt.NewPersonNeedData
+ 0001:0019F988       fConsMedRslt.TfrmConsMedRslt.FormDestroy
+ 0001:0019F9A4       fConsMedRslt.TfrmConsMedRslt.lstMedResultsDrawItem
+ 0001:0019FC5C       fConsMedRslt.Finalization
+ 0001:0019FC9C       fRemCoverPreview..TfrmRemCoverPreview
+ 0001:0019FEB8       fRemCoverPreview.TfrmRemCoverPreview.FormCreate
+ 0001:0019FECC       fRemCoverPreview.TfrmRemCoverPreview.lvMainColumnClick
+ 0001:0019FF00       fRemCoverPreview.TfrmRemCoverPreview.lvMainCompare
+ 0001:001A0008       rProbs.AddSave
+ 0001:001A00BC       rProbs.ClinicFilterList
+ 0001:001A0118       rProbs.ClinicSearch
+ 0001:001A01A0       rProbs.ProblemDelete
+ 0001:001A0260       rProbs.EditLoad
+ 0001:001A0310       rProbs.EditSave
+ 0001:001A03E0       rProbs.InitPt
+ 0001:001A0428       rProbs.InitUser
+ 0001:001A0478       rProbs.OldProblemLexiconSearch
+ 0001:001A0530       rProbs.ProblemList
+ 0001:001A05C4       rProbs.ProviderList
+ 0001:001A0690       rProbs.ProblemReplace
+ 0001:001A0714       rProbs.ServiceFilterList
+ 0001:001A0770       rProbs.ServiceSearch
+ 0001:001A07F8       rProbs.ProblemUpdate
+ 0001:001A083C       rProbs.ProblemVerify
+ 0001:001A08C0       rProbs.UserProblemCategories
+ 0001:001A091C       rProbs.UserProblemList
+ 0001:001A09A8       rProbs.GetProblemComments
+ 0001:001A0A34       rProbs.SaveViewPreferences
+ 0001:001A0AA8       rProbs.CheckForDuplicateProblem
+ 0001:001A0B68       fRemCoverSheet..TfrmRemCoverSheet
+ 0001:001A1538       fRemCoverSheet.EditCoverSheetReminderList
+ 0001:001A15E0       fRemCoverSheet.TfrmRemCoverSheet.Init
+ 0001:001A1D50       fRemCoverSheet.TfrmRemCoverSheet.cbxLocationNeedData
+ 0001:001A1D74       fRemCoverSheet.TfrmRemCoverSheet.cbxServiceNeedData
+ 0001:001A1D9C       fRemCoverSheet.TfrmRemCoverSheet.cbxUserNeedData
+ 0001:001A1DC4       fRemCoverSheet.TfrmRemCoverSheet.cbxClassNeedData
+ 0001:001A1DEC       fRemCoverSheet.TfrmRemCoverSheet.FormDestroy
+ 0001:001A1E9C       fRemCoverSheet.TfrmRemCoverSheet.GetUserInfo
+ 0001:001A1EEC       fRemCoverSheet.TfrmRemCoverSheet.GetCurrent
+ 0001:001A2188       fRemCoverSheet.TfrmRemCoverSheet.UpdateView
+ 0001:001A2370       fRemCoverSheet.TfrmRemCoverSheet.compAccessCopyLeftCaptionQuery
+ 0001:001A23E0       fRemCoverSheet.TfrmRemCoverSheet.compAccessCopyRightCaptionQuery
+ 0001:001A244C       fRemCoverSheet.TfrmRemCoverSheet.SetupItem
+ 0001:001A2640       fRemCoverSheet.TfrmRemCoverSheet.SetupItem
+ 0001:001A2710       fRemCoverSheet.GetNameFromList
+ 0001:001A27F0       fRemCoverSheet.TfrmRemCoverSheet.GetExternalName
+ 0001:001A28C4       fRemCoverSheet.TfrmRemCoverSheet.cbxDivisionChange
+ 0001:001A2930       fRemCoverSheet.TfrmRemCoverSheet.cbxServiceChange
+ 0001:001A299C       fRemCoverSheet.TfrmRemCoverSheet.cbxLocationChange
+ 0001:001A2A08       fRemCoverSheet.TfrmRemCoverSheet.cbxClassChange
+ 0001:001A2A74       fRemCoverSheet.TfrmRemCoverSheet.cbxUserChange
+ 0001:001A2C88       fRemCoverSheet.TfrmRemCoverSheet.cbxDropDownClose
+ 0001:001A2CE8       fRemCoverSheet.TfrmRemCoverSheet.cbEditLevelClick
+ 0001:001A30A0       fRemCoverSheet.TfrmRemCoverSheet.UpdateMasterListView
+ 0001:001A31CC       fRemCoverSheet.TfrmRemCoverSheet.UpdateButtons
+ 0001:001A3A64       fRemCoverSheet.TfrmRemCoverSheet.tvAllExpanding
+ 0001:001A3C20       fRemCoverSheet.TfrmRemCoverSheet.GetCatInfo
+ 0001:001A3E60       fRemCoverSheet.TfrmRemCoverSheet.MarkListAsChanged
+ 0001:001A3F50       fRemCoverSheet.TfrmRemCoverSheet.edtSeqChange
+ 0001:001A4000       fRemCoverSheet.TfrmRemCoverSheet.tvAllExpanded
+ 0001:001A4030       fRemCoverSheet.TfrmRemCoverSheet.tvAllChange
+ 0001:001A4038       fRemCoverSheet.TfrmRemCoverSheet.lvCoverChange
+ 0001:001A4044       fRemCoverSheet.TfrmRemCoverSheet.GetIndex
+ 0001:001A40DC       fRemCoverSheet.TfrmRemCoverSheet.ChangeStatus
+ 0001:001A4584       fRemCoverSheet.TfrmRemCoverSheet.btnAddClick
+ 0001:001A459C       fRemCoverSheet.TfrmRemCoverSheet.btnRemoveClick
+ 0001:001A45B4       fRemCoverSheet.TfrmRemCoverSheet.btnLockClick
+ 0001:001A45CC       fRemCoverSheet.TfrmRemCoverSheet.lvViewColumnClick
+ 0001:001A4600       fRemCoverSheet.TfrmRemCoverSheet.lvCoverColumnClick
+ 0001:001A4634       fRemCoverSheet.TfrmRemCoverSheet.lvViewCompare
+ 0001:001A47F4       fRemCoverSheet.TfrmRemCoverSheet.lvCoverCompare
+ 0001:001A4918       fRemCoverSheet.TfrmRemCoverSheet.sbUpClick
+ 0001:001A4A68       fRemCoverSheet.TfrmRemCoverSheet.sbDownClick
+ 0001:001A4BCC       fRemCoverSheet.TfrmRemCoverSheet.SetSeq
+ 0001:001A4CBC       fRemCoverSheet.TfrmRemCoverSheet.sbCopyRightClick
+ 0001:001A4FD4       fRemCoverSheet.TfrmRemCoverSheet.ListHasData
+ 0001:001A5090       fRemCoverSheet.TfrmRemCoverSheet.udSeqChangingEx
+ 0001:001A5130       fRemCoverSheet.TfrmRemCoverSheet.sbCopyLeftClick
+ 0001:001A531C       fRemCoverSheet.TfrmRemCoverSheet.tvAllDblClick
+ 0001:001A5344       fRemCoverSheet.TfrmRemCoverSheet.btnApplyClick
+ 0001:001A5360       fRemCoverSheet.TfrmRemCoverSheet.btnOKClick
+ 0001:001A5368       fRemCoverSheet.TfrmRemCoverSheet.SaveData
+ 0001:001A55F8       fRemCoverSheet.TfrmRemCoverSheet.lvCoverDblClick
+ 0001:001A5620       fRemCoverSheet.TfrmRemCoverSheet.lvViewChange
+ 0001:001A5630       fRemCoverSheet.TfrmRemCoverSheet.lvViewSelectItem
+ 0001:001A5A04       fRemCoverSheet.TfrmRemCoverSheet.RPad
+ 0001:001A5A80       fRemCoverSheet.GetAllChildren
+ 0001:001A5C20       fRemCoverSheet.TfrmRemCoverSheet.btnViewClick
+ 0001:001A63DC       fRemCoverSheet.TfrmRemCoverSheet.lvCoverKeyDown
+ 0001:001A6410       fRemCoverSheet.TfrmRemCoverSheet.edtSeqKeyPress
+ 0001:001A6420       fRemCoverSheet.TfrmRemCoverSheet.cbxDivisionKeyDown
+ 0001:001A6440       fRemCoverSheet.TfrmRemCoverSheet.GetCoverSheetLvlData
+ 0001:001A6584       fRemCoverSheet.TfrmRemCoverSheet.SetButtonHints
+ 0001:001A717C       fRemCoverSheet.TfrmRemCoverSheet.FormCreate
+ 0001:001A72F4       fRemCoverSheet.TfrmRemCoverSheet.ActiveControlChanged
+ 0001:001A7318       fRemCoverSheet.TfrmRemCoverSheet.LockButtonUpdate
+ 0001:001A741C       fRemCoverSheet.Finalization
+ 0001:001A748C       fNoteST..TfrmNotesSearchText
+ 0001:001A771C       fNoteST.SelectSearchText
+ 0001:001A7850       fNoteST.TfrmNotesSearchText.cmdCancelClick
+ 0001:001A7860       fNoteST.TfrmNotesSearchText.cmdOKClick
+ 0001:001A7944       fNoteST.TfrmNotesSearchText.FormShow
+ 0001:001A794C       fNoteST.TfrmNotesSearchText.FormDestroy
+ 0001:001A7954       fNoteST.TfrmNotesSearchText.FormResize
+ 0001:001A7974       rOptions.rpcGetNotifications
+ 0001:001A79CC       rOptions.rpcGetOrderChecks
+ 0001:001A7A24       rOptions.rpcGetNotificationDefaults
+ 0001:001A7A64       rOptions.rpcGetSurrogateInfo
+ 0001:001A7AE0       rOptions.rpcSetSurrogateInfo
+ 0001:001A7BC8       rOptions.rpcClearNotifications
+ 0001:001A7C00       rOptions.rpcSetNotifications
+ 0001:001A7C34       rOptions.rpcSetOrderChecks
+ 0001:001A7C68       rOptions.rpcSetOtherStuff
+ 0001:001A7CDC       rOptions.rpcGetOtherTabs
+ 0001:001A7D34       rOptions.rpcGetOther
+ 0001:001A7D74       rOptions.rpcSetOther
+ 0001:001A7DE8       rOptions.rpcGetCosigners
+ 0001:001A7E50       rOptions.rpcGetDefaultCosigner
+ 0001:001A7E90       rOptions.rpcSetDefaultCosigner
+ 0001:001A7ED0       rOptions.rpcGetSubject
+ 0001:001A7F64       rOptions.rpcSetSubject
+ 0001:001A7F98       rOptions.rpcGetClasses
+ 0001:001A7FF0       rOptions.rpcGetTitlesForClass
+ 0001:001A805C       rOptions.rpcGetTitlesForUser
+ 0001:001A80A0       rOptions.rpcGetTitleDefault
+ 0001:001A8120       rOptions.rpcSaveDocumentDefaults
+ 0001:001A816C       rOptions.rpcGetLabDays
+ 0001:001A822C       rOptions.rpcGetLabUserDays
+ 0001:001A82F0       rOptions.rpcGetApptDays
+ 0001:001A83E4       rOptions.rpcGetApptUserDays
+ 0001:001A84D8       rOptions.rpcSetDays
+ 0001:001A8600       rOptions.rpcGetReminders
+ 0001:001A8660       rOptions.rpcSetReminders
+ 0001:001A8694       rOptions.rpcGetListOrder
+ 0001:001A8718       rOptions.rpcGetClinicUserDays
+ 0001:001A8808       rOptions.rpcGetClinicDefaults
+ 0001:001A8980       rOptions.rpcGetListSourceDefaults
+ 0001:001A8A90       rOptions.rpcSetClinicDefaults
+ 0001:001A8C64       rOptions.rpcSetPtListDefaults
+ 0001:001A8DD8       rOptions.rpcGetPersonalLists
+ 0001:001A8E38       rOptions.rpcGetAllTeams
+ 0001:001A8E98       rOptions.rpcGetTeams
+ 0001:001A8EF8       rOptions.rpcGetATeams
+ 0001:001A8F58       rOptions.rpcDeleteList
+ 0001:001A8FCC       rOptions.rpcNewList
+ 0001:001A9074       rOptions.rpcSaveListChanges
+ 0001:001A90C0       rOptions.rpcListUsersByTeam
+ 0001:001A9120       rOptions.rpcRemoveList
+ 0001:001A9154       rOptions.rpcAddList
+ 0001:001A9188       rOptions.rpcGetCombo
+ 0001:001A91E0       rOptions.rpcSetCombo
+ 0001:001A9214       rOptions.rpcGetDefaultReportsSetting
+ 0001:001A933C       rOptions.rpcDeleteUserLevelReportsSetting
+ 0001:001A93AC       rOptions.rpcActiveDefaultSetting
+ 0001:001A941C       rOptions.rpcSetDefaultReportsSetting
+ 0001:001A9498       rOptions.rpcSetIndividualReportSetting
+ 0001:001A9530       rOptions.rpcRetrieveDefaultSetting
+ 0001:001A967C       rOptions.rpcGetRangeForMeds
+ 0001:001A97F4       rOptions.rpcPutRangeForMeds
+ 0001:001A9874       rOptions.rpcGetRangeForEncs
+ 0001:001A9974       rOptions.rpcPutRangeForEncs
+ 0001:001A9A38       rOptions.rpcGetEncFutureDays
+ 0001:001A9AB4       rMeds..TMedListRec
+ 0001:001A9B50       rMeds.ClearMedList
+ 0001:001A9BA8       rMeds.DetailMedLM
+ 0001:001A9C58       rMeds.MedAdminHistory
+ 0001:001A9CF0       rMeds.MedStatusGroup
+ 0001:001A9E68       rMeds.SetMedFields
+ 0001:001AA114       rMeds.LoadActiveMedLists
+ 0001:001AA4C0       rMeds.GetNewDialog
+ 0001:001AA50C       rMeds.PickUpDefault
+ 0001:001AA550       rMeds.Refill
+ 0001:001AA614       rMeds.IsFirstDoseNowOrder
+ 0001:001AA6B8       rMeds.GetMedStatus
+ 0001:001AA7B8       rODMeds.DEACheckFailed
+ 0001:001AA870       rODMeds.DEACheckFailedForIVOnOutPatient
+ 0001:001AA920       rODMeds.ListForOrderable
+ 0001:001AAA08       rODMeds.SubsetOfOrderable
+ 0001:001AAAF4       rODMeds.IndexOfOrderable
+ 0001:001AACA4       rODMeds.IsActivateOI
+ 0001:001AAD24       rODMeds.ListForQuickOrders
+ 0001:001AAE0C       rODMeds.SubsetOfQuickOrders
+ 0001:001AAED4       rODMeds.LoadFormularyAltOI
+ 0001:001AAF3C       rODMeds.LoadFormularyAltDose
+ 0001:001AAFB4       rODMeds.LoadAdminInfo
+ 0001:001AB0E8       rODMeds.LoadSchedules
+ 0001:001AB18C       rODMeds.LoadAllIVRoutes
+ 0001:001AB1D0       rODMeds.LoadDosageFormIVRoutes
+ 0001:001AB23C       rODMeds.LoadDOWSchedules
+ 0001:001AB2AC       rODMeds.QtyToDays
+ 0001:001AB374       rODMeds.DaysToQty
+ 0001:001AB444       rODMeds.DefaultDays
+ 0001:001AB500       rODMeds.CalcMaxRefills
+ 0001:001AB5C4       rODMeds.ScheduleRequired
+ 0001:001AB670       rODMeds.ODForMedsIn
+ 0001:001AB6DC       rODMeds.ODForMedsOut
+ 0001:001AB748       rODMeds.OIForMed
+ 0001:001AB7F0       rODMeds.GetPickupForLocation
+ 0001:001AB830       rODMeds.QOHasRouteDefined
+ 0001:001AB8C8       rODMeds.CheckExistingPI
+ 0001:001AB958       rODMeds.PassDrugTest
+ 0001:001ABC8C       rODMeds.AdminTimeHelpText
+ 0001:001ABDA4       rODMeds.ValidateDrugAutoAccept
+ 0001:001ABFCC       rODMeds.ValidateDaySupplyandQuantityErrorMsg
+ 0001:001AC130       rODMeds.ClearMaxData
+ 0001:001AC138       rODMeds.DifferentOrderLocations
+ 0001:001AC1EC       rODMeds.IsClozapineOrder
+ 0001:001AC1FC       rODMeds.Finalization
+ 0001:001AC24C       fActivateDeactivate..TfrmActivateDeactive
+ 0001:001AC47C       fActivateDeactivate.TfrmActivateDeactive.BuildForm
+ 0001:001AC744       fActivateDeactivate.TfrmActivateDeactive.fActivateDeactive
+ 0001:001AC88C       fActivateDeactivate.TfrmActivateDeactive.fActivateDeactive
+ 0001:001ACA44       fActivateDeactivate.TfrmActivateDeactive.GetOriginalOrders
+ 0001:001ACAFC       fActivateDeactivate.TfrmActivateDeactive.PromptForm
+ 0001:001ACBC8       fActivateDeactivate.TfrmActivateDeactive.TActivateClick
+ 0001:001ACBE8       fActivateDeactivate.TfrmActivateDeactive.TDeactiveClick
+ 0001:001ACC08       fActivateDeactivate.TfrmActivateDeactive.TCancelClick
+ 0001:001ACC28       fActivateDeactivate.TfrmActivateDeactive.DCOriginalOrder
+ 0001:001ACC9C       DSIntf.Finalization
+ 0001:001ACDD4       Provider.Finalization
+ 0001:001ACF24       DBClient.Finalization
+ 0001:001ACF6C       uODBase.AddFillerAppID
+ 0001:001ACF98       uODBase.ClearFillerAppList
+ 0001:001ACFA4       uODBase.SetOrderFormIDOnCreate
+ 0001:001ACFAC       uODBase.OrderFormIDOnCreate
+ 0001:001ACFB4       uODBase.SetOrderEventTypeOnCreate
+ 0001:001ACFBC       uODBase.OrderEventTypeOnCreate
+ 0001:001ACFC4       uODBase.SetOrderEventIDOnCreate
+ 0001:001ACFCC       uODBase.OrderEventNameOnCreate
+ 0001:001ACFE0       uODBase.OrderEventIDOnCreate
+ 0001:001ACFE8       uODBase.GetKeyVars
+ 0001:001AD01C       uODBase.PopKeyVars
+ 0001:001AD04C       uODBase.PushKeyVars
+ 0001:001AD110       uODBase.ExpandOrderObjects
+ 0001:001AD48C       uODBase.CheckForAutoDCDietOrders
+ 0001:001ADB84       uODBase.Finalization
+ 0001:001ADBD4       fPreReq..TfrmPrerequisites
+ 0001:001ADE84       fPreReq.CreateReportBox
+ 0001:001AE0C0       fPreReq.DisplayPrerequisites
+ 0001:001AE158       fPreReq.TfrmPrerequisites.memReportClick
+ 0001:001AE15C       fPreReq.TfrmPrerequisites.cmdContinueClick
+ 0001:001AE16C       fPreReq.TfrmPrerequisites.cmdCancelClick
+ 0001:001AE17C       fPreReq.TfrmPrerequisites.cmdPrintClick
+ 0001:001AE434       fPreReq.TfrmPrerequisites.AlignButtons
+ 0001:001AE46C       fPreReq.TfrmPrerequisites.FormClose
+ 0001:001AE474       fPreReq.TfrmPrerequisites.FormCreate
+ 0001:001AE488       fPreReq.TfrmPrerequisites.OnActivate
+ 0001:001AE4AC       XuDigSigSC_TLB..CoXuDigSigS
+ 0001:001AE504       XuDigSigSC_TLB.CoXuDigSigS.Create
+ 0001:001AE568       mCoPayDesc..TfraCoPayDesc
+ 0001:001AE8C8       mCoPayDesc.TfraCoPayDesc.Create
+ 0001:001AEA88       mCoPayDesc.TfraCoPayDesc.LabelCaptionsOn
+ 0001:001AEB64       mCoPayDesc.TfraCoPayDesc.lblEnter
+ 0001:001AEB8C       mCoPayDesc.TfraCoPayDesc.lblExit
+ 0001:001AEBB4       mCoPayDesc.TfraCoPayDesc.ConvertShortLabelsToLong
+ 0001:001AEC44       mCoPayDesc.Finalization
+ 0001:001AEC74       rODLab.GetBloodComponents
+ 0001:001AECA0       rODLab.NursAdminSuppress
+ 0001:001AED24       rODLab.StatAllowed
+ 0001:001AEDB8       rODLab.GetPatientBloodResultsRaw
+ 0001:001AEE38       rODLab.GetPatientBloodResults
+ 0001:001AEEBC       rODLab.GetPatientBBInfo
+ 0001:001AEF40       rODLab.GetSubtype
+ 0001:001AEFB8       rODLab.TNSDaysBack
+ 0001:001AF03C       rODLab.ListForQuickOrders
+ 0001:001AF124       rODLab.SubsetOfQuickOrders
+ 0001:001AF1EC       rODLab.ODForLab
+ 0001:001AF23C       rODLab.LoadLabTestData
+ 0001:001AF2B4       rODLab.LoadSamples
+ 0001:001AF2F4       rODLab.SubsetOfSpecimens
+ 0001:001AF350       rODLab.LoadSpecimens
+ 0001:001AF390       rODLab.MaxDays
+ 0001:001AF420       rODLab.IsLabCollectTime
+ 0001:001AF4C0       rODLab.LabCollectFutureDays
+ 0001:001AF55C       rODLab.ImmediateCollectTimes
+ 0001:001AF5A8       rODLab.GetDefaultImmCollTime
+ 0001:001AF65C       rODLab.ValidImmCollTime
+ 0001:001AF6C0       rODLab.GetOneCollSamp
+ 0001:001AF708       rODLab.GetOneSpecimen
+ 0001:001AF750       rODLab.GetLastCollectionTime
+ 0001:001AF794       rODLab.GetLabTimesForDate
+ 0001:001AF9CC       rODLab.CheckForChangeFromLCtoWCOnAccept
+ 0001:001AFB04       rODLab.CheckForChangeFromLCtoWCOnRelease
+ 0001:001AFBB8       rODLab.FormatLCtoWCDisplayTextOnAccept
+ 0001:001AFF14       rODLab.FormatLCtoWCDisplayTextOnRelease
+ 0001:001B0418       rODLab.GetLCtoWCInstructions
+ 0001:001B0464       fOrdersPrint..TfrmOrdersPrint
+ 0001:001B0864       fOrdersPrint.SetupOrdersPrint
+ 0001:001B0A40       fOrdersPrint.TfrmOrdersPrint.SetupControls
+ 0001:001B0C60       fOrdersPrint.TfrmOrdersPrint.SetupPrompting
+ 0001:001B0E34       fOrdersPrint.TfrmOrdersPrint.cmdChartClick
+ 0001:001B0EAC       fOrdersPrint.TfrmOrdersPrint.cmdLabelsClick
+ 0001:001B0F24       fOrdersPrint.TfrmOrdersPrint.cmdReqsClick
+ 0001:001B0F9C       fOrdersPrint.TfrmOrdersPrint.cmdWorkClick
+ 0001:001B1014       fOrdersPrint.TfrmOrdersPrint.cmdOKClick
+ 0001:001B1310       fOrdersPrint.TfrmOrdersPrint.cmdCancelClick
+ 0001:001B162C       fOrdersPrint.TfrmOrdersPrint.ckChartCopyClick
+ 0001:001B1660       fOrdersPrint.TfrmOrdersPrint.ckLabelsClick
+ 0001:001B1694       fOrdersPrint.TfrmOrdersPrint.ckRequisitionsClick
+ 0001:001B16C8       fOrdersPrint.TfrmOrdersPrint.ckWorkCopyClick
+ 0001:001B16FC       fOrdersPrint.TfrmOrdersPrint.DeviceListClick
+ 0001:001B170C       fOrdersPrint.TfrmOrdersPrint.FormKeyUp
+ 0001:001B1724       fOrdersPrint.Finalization
+ 0001:001B1764       fOrdersSign..TfrmSignOrders
+ 0001:001B1C24       fOrdersSign.TfrmSignOrders.GetNumberOfSelectedOrders
+ 0001:001B1CB0       fOrdersSign.TfrmSignOrders.SetCheckBoxStatus
+ 0001:001B1D10       fOrdersSign.TfrmSignOrders.GetCheckBoxStatus
+ 0001:001B1E4C       fOrdersSign.FindOrderText
+ 0001:001B1EB4       fOrdersSign.SignNotRequired
+ 0001:001B1EF8       fOrdersSign.DigitalSign
+ 0001:001B1F9C       fOrdersSign.ExecuteSignOrders
+ 0001:001B3504       fOrdersSign.TfrmSignOrders.FormCreate
+ 0001:001B361C       fOrdersSign.TfrmSignOrders.IsSignatureRequired
+ 0001:001B3668       fOrdersSign.TfrmSignOrders.cmdOKClick
+ 0001:001B3A18       fOrdersSign.TfrmSignOrders.cmdCancelClick
+ 0001:001B3A20       fOrdersSign.TfrmSignOrders.FormDestroy
+ 0001:001B3A50       fOrdersSign.TfrmSignOrders.clstOrdersDrawItem
+ 0001:001B3E94       fOrdersSign.TfrmSignOrders.clstOrdersMeasureItem
+ 0001:001B3F74       fOrdersSign.updateAllChilds
+ 0001:001B4054       fOrdersSign.TfrmSignOrders.clstOrdersClickCheck
+ 0001:001B4198       fOrdersSign.TfrmSignOrders.ItemsAreChecked
+ 0001:001B41D8       fOrdersSign.TfrmSignOrders.clstOrdersMouseMove
+ 0001:001B4528       fOrdersSign.TfrmSignOrders.FormShow
+ 0001:001B491C       fOrdersSign.TfrmSignOrders.buOrdersDiagnosisClick
+ 0001:001B4D9C       fOrdersSign.TfrmSignOrders.Exit1Click
+ 0001:001B4DA4       fOrdersSign.TfrmSignOrders.Copy1Click
+ 0001:001B50AC       fOrdersSign.TfrmSignOrders.Paste1Click
+ 0001:001B5330       fOrdersSign.TfrmSignOrders.clstOrdersMouseDown
+ 0001:001B54AC       fOrdersSign.TfrmSignOrders.clstOrdersClick
+ 0001:001B5604       fOrdersSign.TfrmSignOrders.FormKeyDown
+ 0001:001B5860       fOrdersSign.TfrmSignOrders.ShowTreatmentFactorHints
+ 0001:001B599C       fOrdersSign.TfrmSignOrders.FormMouseMove
+ 0001:001B5A04       fOrdersSign.TfrmSignOrders.FormResize
+ 0001:001B5A14       fOrdersSign.TfrmSignOrders.fraCoPaylblHNCMouseMove
+ 0001:001B5A30       fOrdersSign.TfrmSignOrders.fraCoPayLabel23Enter
+ 0001:001B5A58       fOrdersSign.TfrmSignOrders.fraCoPayLabel23Exit
+ 0001:001B5A80       fOrdersSign.TfrmSignOrders.SetItemTextToState
+ 0001:001B5C38       fOrdersSign.TfrmSignOrders.clstOrdersKeyUp
+ 0001:001B5C4C       fOrdersSign.TfrmSignOrders.FormatListForScreenReader
+ 0001:001B5C64       fOrdersSign.Finalization
+ 0001:001B5D28       rSurgery.ShowSurgeryTab
+ 0001:001B5DD8       rSurgery.LoadSurgeryTitles
+ 0001:001B5FCC       rSurgery.ListSurgeryTitlesShort
+ 0001:001B60CC       rSurgery.SubSetOfSurgeryTitles
+ 0001:001B6178       rSurgery.IsSurgeryTitle
+ 0001:001B6220       rSurgery.GetSurgCaseList
+ 0001:001B63A8       rSurgery.ListSurgeryCases
+ 0001:001B64A8       rSurgery.LoadSurgReportText
+ 0001:001B64FC       rSurgery.LoadSurgReportDetail
+ 0001:001B6554       rSurgery.GetCurrentSurgCaseContext
+ 0001:001B6708       rSurgery.SaveCurrentSurgCaseContext
+ 0001:001B6850       rSurgery.GetSingleCaseListItemWithDocs
+ 0001:001B68A0       rSurgery.IsNonORProcedure
+ 0001:001B693C       rSurgery.Finalization
+ 0001:001B6980       uSurgery..TSurgeryTitles
+ 0001:001B69F8       uSurgery.TSurgeryTitles.Create
+ 0001:001B6A3C       uSurgery.TSurgeryTitles.Destroy
+ 0001:001B6A6C       uSurgery.MakeSurgeryCaseDisplayText
+ 0001:001B6BBC       uSurgery.MakeSurgeryReportDisplayText
+ 0001:001B6DD8       uCaseTree.CreateListItemsForCaseTree
+ 0001:001B767C       uCaseTree.BuildCaseTree
+ 0001:001B7924       uCaseTree.SetCaseTreeNodeImagesAndFormatting
+ 0001:001B7C40       uCaseTree.SetImageFlag
+ 0001:001B7CE0       uCaseTree.ResetCaseTreeObjectStrings
+ 0001:001B7D74       uCaseTree.KillCaseTreeObjects
+ 0001:001B7DF0       uCaseTree.KillCaseTreeNode
+ 0001:001B7E24       uCaseTree.RemoveParentsWithNoChildren
+ 0001:001B7EAC       uCaseTree.MakeCaseTreeObject
+ 0001:001B8254       fSurgeryView..TfrmSurgeryView
+ 0001:001B856C       fSurgeryView.SelectSurgeryView
+ 0001:001B884C       fSurgeryView.TfrmSurgeryView.cmdOKClick
+ 0001:001B8A88       fSurgeryView.TfrmSurgeryView.cmdCancelClick
+ 0001:001B8A98       fSurgeryView.TfrmSurgeryView.cmdClearClick
+ 0001:001B8AB8       fPCEEdit..TfrmPCEEdit
+ 0001:001B8CBC       fPCEEdit.EditPCEData
+ 0001:001B9250       fPCEEdit.TfrmPCEEdit.FormCreate
+ 0001:001B9298       fPCEEdit.Finalization
+ 0001:001B92F4       fNotesBP..TfrmNotesBP
+ 0001:001B9520       fNotesBP.QueryBoilerPlate
+ 0001:001B95A4       fNotesBP.TfrmNotesBP.cmdPreviewClick
+ 0001:001B95DC       fNotesBP.TfrmNotesBP.cmdCloseClick
+ 0001:001B95E4       fNotesBP.TfrmNotesBP.FormKeyUp
+ 0001:001B9610       fNoteProps..TPRFActions
+ 0001:001B9668       fNoteProps..TfrmNoteProperties
+ 0001:001B9CCC       fNoteProps.ExecuteNoteProperties
+ 0001:001BA868       fNoteProps.TfrmNoteProperties.FormShow
+ 0001:001BA86C       fNoteProps.TfrmNoteProperties.UMDelayEvent
+ 0001:001BA870       fNoteProps.TfrmNoteProperties.SetCosignerRequired
+ 0001:001BAA40       fNoteProps.TfrmNoteProperties.ShowRequestList
+ 0001:001BACC4       fNoteProps.TfrmNoteProperties.ShowSurgCaseList
+ 0001:001BAD2C       fNoteProps.TfrmNoteProperties.cboNewTitleNeedData
+ 0001:001BADDC       fNoteProps.TfrmNoteProperties.cboNewTitleEnter
+ 0001:001BADE8       fNoteProps.TfrmNoteProperties.cboNewTitleMouseClick
+ 0001:001BB0BC       fNoteProps.TfrmNoteProperties.cboNewTitleExit
+ 0001:001BB0EC       fNoteProps.TfrmNoteProperties.cboNewTitleDblClick
+ 0001:001BB0F4       fNoteProps.TfrmNoteProperties.NewPersonNeedData
+ 0001:001BB124       fNoteProps.TfrmNoteProperties.cboAuthorEnter
+ 0001:001BB13C       fNoteProps.TfrmNoteProperties.cboAuthorMouseClick
+ 0001:001BB164       fNoteProps.TfrmNoteProperties.cboAuthorExit
+ 0001:001BB190       fNoteProps.TfrmNoteProperties.cboCosignerExit
+ 0001:001BB27C       fNoteProps.TfrmNoteProperties.cmdOKClick
+ 0001:001BBD70       fNoteProps.TfrmNoteProperties.cmdCancelClick
+ 0001:001BBD7C       fNoteProps.TfrmNoteProperties.cboNewTitleDropDownClose
+ 0001:001BBD80       fNoteProps.TfrmNoteProperties.cboCosignerNeedData
+ 0001:001BBDB8       fNoteProps.TfrmNoteProperties.ShowClinProcFields
+ 0001:001BBDF8       fNoteProps.TfrmNoteProperties.btnShowListClick
+ 0001:001BBE00       fNoteProps.TfrmNoteProperties.FormatRequestList
+ 0001:001BBE98       fNoteProps.TfrmNoteProperties.FormResize
+ 0001:001BBF50       fNoteProps.TfrmNoteProperties.calNoteEnter
+ 0001:001BBF78       fNoteProps.TfrmNoteProperties.ShowPRFList
+ 0001:001BC0F4       fNoteProps.TfrmNoteProperties.SetGenericFormSize
+ 0001:001BC10C       fNoteProps.TPRFActions.Create
+ 0001:001BC150       fNoteProps.TPRFActions.Destroy
+ 0001:001BC180       fNoteProps.TPRFActions.GetActionIEN
+ 0001:001BC1E8       fNoteProps.TPRFActions.GetPRF_IEN
+ 0001:001BC258       fNoteProps.TPRFActions.Load
+ 0001:001BC2F8       fNoteProps.TPRFActions.SelActionHasNote
+ 0001:001BC36C       fNoteProps.TPRFActions.ShowActionsOnList
+ 0001:001BC51C       fNoteProps.TfrmNoteProperties.FormDestroy
+ 0001:001BC528       fNoteProps.TfrmNoteProperties.btnDetailsClick
+ 0001:001BC6CC       fNoteProps.TfrmNoteProperties.lstRequestsChange
+ 0001:001BC6F8       fTemplateObjects..TfrmTemplateObjects
+ 0001:001BC978       fTemplateObjects.TfrmTemplateObjects.FormShow
+ 0001:001BC9F4       fTemplateObjects.TfrmTemplateObjects.btnInsertClick
+ 0001:001BC9FC       fTemplateObjects.TfrmTemplateObjects.InsertObject
+ 0001:001BCB10       fTemplateObjects.TfrmTemplateObjects.cboObjectsDblClick
+ 0001:001BCB18       fTemplateObjects.TfrmTemplateObjects.btnCancelClick
+ 0001:001BCB20       fTemplateObjects.TfrmTemplateObjects.FormClose
+ 0001:001BCB24       fTemplateObjects.TfrmTemplateObjects.Setre
+ 0001:001BCB30       fTemplateObjects.TfrmTemplateObjects.UpdateStatus
+ 0001:001BCB4C       fTemplateObjects.TfrmTemplateObjects.btnRefreshClick
+ 0001:001BCC90       fTemplateView..TfrmTemplateView
+ 0001:001BCF88       fTemplateView.ShowTemplateData
+ 0001:001BD114       fTemplateView.TfrmTemplateView.btnCloseClick
+ 0001:001BD11C       fTemplateView.TfrmTemplateView.FormClose
+ 0001:001BD130       fTemplateView.TfrmTemplateView.FormCreate
+ 0001:001BD144       fTemplateView.TfrmTemplateView.cbStayOnTopClick
+ 0001:001BD198       fTemplateView.TfrmTemplateView.FormDestroy
+ 0001:001BD1A0       fTemplateView.TfrmTemplateView.popViewPopup
+ 0001:001BD1E4       fTemplateView.TfrmTemplateView.Copy1Click
+ 0001:001BD1F0       fTemplateView.TfrmTemplateView.SelectAll1Click
+ 0001:001BD1FC       fTemplateView.TfrmTemplateView.btnPrintClick
+ 0001:001BD270       fTemplateView.TfrmTemplateView.AlignButtons
+ 0001:001BD2AC       fTemplateAutoGen..TfrmTemplateAutoGen
+ 0001:001BD540       fTemplateAutoGen.GetAutoGenText
+ 0001:001BD770       fTemplateAutoGen.TfrmTemplateAutoGen.rgSourceClick
+ 0001:001BD93C       fTemplateAutoGen.TfrmTemplateAutoGen.cbxTitlesNeedData
+ 0001:001BD964       fTemplateAutoGen.TfrmTemplateAutoGen.cbxTitlesDblClick
+ 0001:001BD984       fTemplateAutoGen.TfrmTemplateAutoGen.cbxObjectsDblClick
+ 0001:001BD9A4       fTemplateAutoGen.TfrmTemplateAutoGen.FormShow
+ 0001:001BDA40       XMLUtils.Text2XML
+ 0001:001BDB24       XMLUtils.FindXMLElement
+ 0001:001BDC50       XMLUtils.FindXMLAttributeValue
+ 0001:001BDDCC       XMLUtils.GetXMLWPText
+ 0001:001BDF78       XMLUtils.Finalization
+ 0001:001BDFD4       rEventHooks.GetPatientChangeGUIDs
+ 0001:001BE044       rEventHooks.GetOrderAcceptGUIDs
+ 0001:001BE084       rEventHooks.GetAllActiveCOMObjects
+ 0001:001BE0BC       rEventHooks.GetCOMObjectDetails
+ 0001:001BE0FC       fTemplateEditor..TfrmTemplateEditor
+ 0001:001BFA7C       fTemplateEditor.EditTemplates
+ 0001:001BFD7C       fTemplateEditor.TfrmTemplateEditor.btnNewClick
+ 0001:001C0048       fTemplateEditor.TfrmTemplateEditor.btnApplyClick
+ 0001:001C0084       fTemplateEditor.TfrmTemplateEditor.FormCreate
+ 0001:001C03F8       fTemplateEditor.TfrmTemplateEditor.HideControls
+ 0001:001C048C       fTemplateEditor.TfrmTemplateEditor.cboOwnerNeedData
+ 0001:001C0494       fTemplateEditor.TfrmTemplateEditor.cboOwnerChange
+ 0001:001C04B0       fTemplateEditor.TfrmTemplateEditor.NewPersonalUser
+ 0001:001C0500       fTemplateEditor.TfrmTemplateEditor.tvPersonalExpanding
+ 0001:001C0554       fTemplateEditor.TfrmTemplateEditor.tvSharedExpanding
+ 0001:001C05A8       fTemplateEditor.TfrmTemplateEditor.tvTreeGetImageIndex
+ 0001:001C05C4       fTemplateEditor.TfrmTemplateEditor.tvTreeGetSelectedIndex
+ 0001:001C05E0       fTemplateEditor.TfrmTemplateEditor.IsTemplateLocked
+ 0001:001C0668       fTemplateEditor.TfrmTemplateEditor.tvTreeChange
+ 0001:001C074C       fTemplateEditor.TfrmTemplateEditor.EnableControls
+ 0001:001C0978       fTemplateEditor.TfrmTemplateEditor.MoveCopyButtons
+ 0001:001C0A10       fTemplateEditor.TfrmTemplateEditor.splMainMoved
+ 0001:001C0A18       fTemplateEditor.TfrmTemplateEditor.ShowGroupBoilerplate
+ 0001:001C0AA0       fTemplateEditor.TfrmTemplateEditor.ShowInfo
+ 0001:001C1688       fTemplateEditor.TfrmTemplateEditor.pnlBoilerplateResize
+ 0001:001C16F8       fTemplateEditor.TfrmTemplateEditor.edtNameOldChange
+ 0001:001C182C       fTemplateEditor.TfrmTemplateEditor.cbActiveClick
+ 0001:001C1984       fTemplateEditor.TfrmTemplateEditor.cbExcludeClick
+ 0001:001C1AA8       fTemplateEditor.TfrmTemplateEditor.edtGapChange
+ 0001:001C1BC0       fTemplateEditor.TfrmTemplateEditor.ChangeTree
+ 0001:001C1C98       fTemplateEditor.TfrmTemplateEditor.tvTreeEnter
+ 0001:001C1CD4       fTemplateEditor.TfrmTemplateEditor.tvTreeNodeEdited
+ 0001:001C1D3C       fTemplateEditor.TfrmTemplateEditor.cbShHideClick
+ 0001:001C1DB0       fTemplateEditor.TfrmTemplateEditor.cbPerHideClick
+ 0001:001C1E10       fTemplateEditor.TfrmTemplateEditor.DisplayBoilerplate
+ 0001:001C20D0       fTemplateEditor.TfrmTemplateEditor.FormDestroy
+ 0001:001C2190       fTemplateEditor.TfrmTemplateEditor.sbMoveUpClick
+ 0001:001C24B0       fTemplateEditor.TfrmTemplateEditor.sbMoveDownClick
+ 0001:001C2808       fTemplateEditor.TfrmTemplateEditor.sbDeleteClick
+ 0001:001C2B40       fTemplateEditor.TfrmTemplateEditor.EnableNavControls
+ 0001:001C2E10       fTemplateEditor.TfrmTemplateEditor.tvTreeDragging
+ 0001:001C2E44       fTemplateEditor.TfrmTemplateEditor.tvTreeDragOver
+ 0001:001C2F14       fTemplateEditor.TfrmTemplateEditor.tvTreeDragDrop
+ 0001:001C3258       fTemplateEditor.TfrmTemplateEditor.Resync
+ 0001:001C35C0       fTemplateEditor.TfrmTemplateEditor.sbCopyLeftClick
+ 0001:001C365C       fTemplateEditor.TfrmTemplateEditor.sbCopyRightClick
+ 0001:001C36F8       fTemplateEditor.Adjust
+ 0001:001C371C       fTemplateEditor.TfrmTemplateEditor.AdjustControls4FontChange
+ 0001:001C385C       fTemplateEditor.TfrmTemplateEditor.AllowMove
+ 0001:001C3964       fTemplateEditor.TfrmTemplateEditor.Clone
+ 0001:001C3AA4       fTemplateEditor.TfrmTemplateEditor.reBoilChange
+ 0001:001C3CA4       fTemplateEditor.TfrmTemplateEditor.SharedEditing
+ 0001:001C3D7C       fTemplateEditor.TfrmTemplateEditor.cbEditSharedClick
+ 0001:001C3D9C       fTemplateEditor.TfrmTemplateEditor.popTemplatesPopup
+ 0001:001C406C       fTemplateEditor.TfrmTemplateEditor.mnuCollapseTreeClick
+ 0001:001C40CC       fTemplateEditor.TfrmTemplateEditor.mnuFindTemplatesClick
+ 0001:001C41D8       fTemplateEditor.TfrmTemplateEditor.ShowTemplateType
+ 0001:001C42B0       fTemplateEditor.TfrmTemplateEditor.GetTree
+ 0001:001C42EC       fTemplateEditor.TfrmTemplateEditor.btnFindClick
+ 0001:001C44D0       fTemplateEditor.TfrmTemplateEditor.edtSearchChange
+ 0001:001C4578       fTemplateEditor.TfrmTemplateEditor.SetFindNext
+ 0001:001C4614       fTemplateEditor.TfrmTemplateEditor.edtShSearchEnter
+ 0001:001C4624       fTemplateEditor.TfrmTemplateEditor.edtShSearchExit
+ 0001:001C4634       fTemplateEditor.TfrmTemplateEditor.edtPerSearchEnter
+ 0001:001C4644       fTemplateEditor.TfrmTemplateEditor.edtPerSearchExit
+ 0001:001C4654       fTemplateEditor.TfrmTemplateEditor.btnOKClick
+ 0001:001C4694       fTemplateEditor.TfrmTemplateEditor.FormShow
+ 0001:001C46EC       fTemplateEditor.TfrmTemplateEditor.mnuBPInsertObjectClick
+ 0001:001C4884       fTemplateEditor.TfrmTemplateEditor.mnuBPErrorCheckClick
+ 0001:001C4A0C       fTemplateEditor.TfrmTemplateEditor.popBoilerplatePopup
+ 0001:001C4BA4       fTemplateEditor.ScanTree
+ 0001:001C4C24       fTemplateEditor.TfrmTemplateEditor.ScanNames
+ 0001:001C4ED0       fTemplateEditor.TfrmTemplateEditor.btnCancelClick
+ 0001:001C4ED8       fTemplateEditor.TfrmTemplateEditor.FormClose
+ 0001:001C4EE0       fTemplateEditor.TfrmTemplateEditor.FormCloseQuery
+ 0001:001C4F80       fTemplateEditor.TfrmTemplateEditor.mnuBPSpellCheckClick
+ 0001:001C4F8C       fTemplateEditor.TfrmTemplateEditor.splBoilMoved
+ 0001:001C4FD0       fTemplateEditor.TfrmTemplateEditor.edtGapKeyPress
+ 0001:001C4FE0       fTemplateEditor.TfrmTemplateEditor.edtNameExit
+ 0001:001C51E8       fTemplateEditor.TfrmTemplateEditor.tmrAutoScrollTimer
+ 0001:001C5490       fTemplateEditor.TfrmTemplateEditor.tvTreeStartDrag
+ 0001:001C54B8       fTemplateEditor.TfrmTemplateEditor.tvTreeEndDrag
+ 0001:001C54CC       fTemplateEditor.TfrmTemplateEditor.mnuGroupBPCopyClick
+ 0001:001C54D8       fTemplateEditor.TfrmTemplateEditor.popGroupPopup
+ 0001:001C5540       fTemplateEditor.TfrmTemplateEditor.mnuBPCutClick
+ 0001:001C554C       fTemplateEditor.TfrmTemplateEditor.mnuBPCopyClick
+ 0001:001C5558       fTemplateEditor.TfrmTemplateEditor.mnuBPPasteClick
+ 0001:001C55AC       fTemplateEditor.TfrmTemplateEditor.mnuGroupBPSelectAllClick
+ 0001:001C55B8       fTemplateEditor.TfrmTemplateEditor.mnuBPSelectAllClick
+ 0001:001C55C4       fTemplateEditor.TfrmTemplateEditor.mnuNodeDeleteClick
+ 0001:001C5638       fTemplateEditor.TfrmTemplateEditor.mnuNodeCopyClick
+ 0001:001C5664       fTemplateEditor.TfrmTemplateEditor.mnuNodePasteClick
+ 0001:001C5724       fTemplateEditor.TfrmTemplateEditor.PasteOK
+ 0001:001C57FC       fTemplateEditor.TfrmTemplateEditor.mnuBPUndoClick
+ 0001:001C5814       fTemplateEditor.TfrmTemplateEditor.tvTreeKeyDown
+ 0001:001C59E0       fTemplateEditor.TfrmTemplateEditor.mnuEditClick
+ 0001:001C5C40       fTemplateEditor.TfrmTemplateEditor.mnuGroupBoilerplateClick
+ 0001:001C5CA8       fTemplateEditor.TfrmTemplateEditor.cbShFindOptionClick
+ 0001:001C5CD8       fTemplateEditor.TfrmTemplateEditor.cbPerFindOptionClick
+ 0001:001C5D08       fTemplateEditor.TfrmTemplateEditor.mnuTemplateClick
+ 0001:001C5F24       fTemplateEditor.TfrmTemplateEditor.mnuFindSharedClick
+ 0001:001C5F3C       fTemplateEditor.TfrmTemplateEditor.mnuFindPersonalClick
+ 0001:001C5F54       fTemplateEditor.TfrmTemplateEditor.mnuShCollapseClick
+ 0001:001C5F6C       fTemplateEditor.TfrmTemplateEditor.mnuPerCollapseClick
+ 0001:001C5F84       fTemplateEditor.TfrmTemplateEditor.pnlShSearchResize
+ 0001:001C5FC8       fTemplateEditor.TfrmTemplateEditor.pnlPerSearchResize
+ 0001:001C600C       fTemplateEditor.TfrmTemplateEditor.pnlPropertiesResize
+ 0001:001C6024       fTemplateEditor.TfrmTemplateEditor.mbMainResize
+ 0001:001C6058       fTemplateEditor.TfrmTemplateEditor.mnuBPCheckGrammarClick
+ 0001:001C6064       fTemplateEditor.TfrmTemplateEditor.mnuSortClick
+ 0001:001C60C8       fTemplateEditor.TfrmTemplateEditor.pnlBoilerplateCanResize
+ 0001:001C60E0       fTemplateEditor.TfrmTemplateEditor.AutoDel
+ 0001:001C6184       fTemplateEditor.TfrmTemplateEditor.mnuBPTryClick
+ 0001:001C6278       fTemplateEditor.TfrmTemplateEditor.mnuAutoGenClick
+ 0001:001C6328       fTemplateEditor.TfrmTemplateEditor.reNotesChange
+ 0001:001C6430       fTemplateEditor.TfrmTemplateEditor.mnuNotesUndoClick
+ 0001:001C6448       fTemplateEditor.TfrmTemplateEditor.mnuNotesCutClick
+ 0001:001C6454       fTemplateEditor.TfrmTemplateEditor.mnuNotesCopyClick
+ 0001:001C6460       fTemplateEditor.TfrmTemplateEditor.mnuNotesPasteClick
+ 0001:001C64B4       fTemplateEditor.TfrmTemplateEditor.mnuNotesSelectAllClick
+ 0001:001C64C0       fTemplateEditor.TfrmTemplateEditor.mnuNotesGrammarClick
+ 0001:001C64CC       fTemplateEditor.TfrmTemplateEditor.mnuNotesSpellingClick
+ 0001:001C64D8       fTemplateEditor.TfrmTemplateEditor.popNotesPopup
+ 0001:001C65F8       fTemplateEditor.TfrmTemplateEditor.cbNotesClick
+ 0001:001C6690       fTemplateEditor.TfrmTemplateEditor.cbDisplayOnlyClick
+ 0001:001C6698       fTemplateEditor.TfrmTemplateEditor.cbFirstLineClick
+ 0001:001C66A4       fTemplateEditor.TfrmTemplateEditor.cbOneItemOnlyClick
+ 0001:001C66B0       fTemplateEditor.TfrmTemplateEditor.cbHideDlgItemsClick
+ 0001:001C66BC       fTemplateEditor.TfrmTemplateEditor.cbHideItemsClick
+ 0001:001C66C8       fTemplateEditor.TfrmTemplateEditor.cbClick
+ 0001:001C6820       fTemplateEditor.TfrmTemplateEditor.cbIndentClick
+ 0001:001C682C       fTemplateEditor.TfrmTemplateEditor.mnuToolsClick
+ 0001:001C6894       fTemplateEditor.TfrmTemplateEditor.mnuEditTemplateFieldsClick
+ 0001:001C68D8       fTemplateEditor.TfrmTemplateEditor.mnuBPInsertFieldClick
+ 0001:001C6938       fTemplateEditor.TfrmTemplateEditor.UpdateInsertsDialogs
+ 0001:001C6960       fTemplateEditor.TfrmTemplateEditor.mnuExportTemplateClick
+ 0001:001C6DDC       fTemplateEditor.ClearFields
+ 0001:001C6DFC       fTemplateEditor.TfrmTemplateEditor.mnuImportTemplateClick
+ 0001:001C7DBC       fTemplateEditor.TfrmTemplateEditor.cbxTypeDrawItem
+ 0001:001C7EF0       fTemplateEditor.TfrmTemplateEditor.cbxTypeChange
+ 0001:001C81B8       fTemplateEditor.TfrmTemplateEditor.cbxRemDlgsChange
+ 0001:001C82C4       fTemplateEditor.TfrmTemplateEditor.mnuTemplateIconLegendClick
+ 0001:001C82D0       fTemplateEditor.TfrmTemplateEditor.cbLongLinesClick
+ 0001:001C82E8       fTemplateEditor.TfrmTemplateEditor.AutoLongLines
+ 0001:001C82FC       fTemplateEditor.GetFirstPersonalNode
+ 0001:001C8344       fTemplateEditor.TfrmTemplateEditor.CanClone
+ 0001:001C839C       fTemplateEditor.TfrmTemplateEditor.UpdateApply
+ 0001:001C83C8       fTemplateEditor.TfrmTemplateEditor.TemplateLocked
+ 0001:001C8480       fTemplateEditor.TfrmTemplateEditor.cbLockClick
+ 0001:001C848C       fTemplateEditor.TfrmTemplateEditor.mnuRefreshClick
+ 0001:001C8594       fTemplateEditor.TfrmTemplateEditor.RefreshData
+ 0001:001C8844       fTemplateEditor.TfrmTemplateEditor.InitTrees
+ 0001:001C8A04       fTemplateEditor.TfrmTemplateEditor.reResizeRequest
+ 0001:001C8A64       fTemplateEditor.TfrmTemplateEditor.reBoilSelectionChange
+ 0001:001C8A80       fTemplateEditor.TfrmTemplateEditor.reGroupBPSelectionChange
+ 0001:001C8A9C       fTemplateEditor.TfrmTemplateEditor.UpdateXY
+ 0001:001C8B68       fTemplateEditor.TfrmTemplateEditor.cbxCOMObjChange
+ 0001:001C8C48       fTemplateEditor.TfrmTemplateEditor.edtCOMParamChange
+ 0001:001C8CF8       fTemplateEditor.TfrmTemplateEditor.GetLinkType
+ 0001:001C8D78       fTemplateEditor.TfrmTemplateEditor.cbxLinkNeedData
+ 0001:001C8EC4       fTemplateEditor.TfrmTemplateEditor.cbxLinkChange
+ 0001:001C9134       fTemplateEditor.TfrmTemplateEditor.reBoilKeyUp
+ 0001:001C91E0       fTemplateEditor.TfrmTemplateEditor.reBoilKeyPress
+ 0001:001C91F0       fTemplateEditor.TfrmTemplateEditor.reBoilKeyDown
+ 0001:001C923C       fTIUView..TfrmTIUView
+ 0001:001C96A4       fTIUView.SelectTIUView
+ 0001:001C9BE8       fTIUView.TfrmTIUView.cmdOKClick
+ 0001:001CA0B0       fTIUView.TfrmTIUView.cmdCancelClick
+ 0001:001CA0C0       fTIUView.TfrmTIUView.lstStatusSelect
+ 0001:001CA3EC       fTIUView.TfrmTIUView.cboAuthorNeedData
+ 0001:001CA414       fTIUView.TfrmTIUView.cmdClearClick
+ 0001:001CA484       fNoteDR..TfrmNoteDelReason
+ 0001:001CA6B4       fNoteDR.SelectDeleteReason
+ 0001:001CA7B4       fNoteDR.TfrmNoteDelReason.FormCreate
+ 0001:001CA7BC       fNoteDR.TfrmNoteDelReason.cmdOKClick
+ 0001:001CA85C       fNoteDR.TfrmNoteDelReason.cmdCancelClick
+ 0001:001CA864       fAddlSigners..TfrmAddlSigners
+ 0001:001CACC8       fAddlSigners.SelectAdditionalSigners
+ 0001:001CB0D0       fAddlSigners.TfrmAddlSigners.NewPersonNeedData
+ 0001:001CB0F4       fAddlSigners.TfrmAddlSigners.cmdCancelClick
+ 0001:001CB0FC       fAddlSigners.TfrmAddlSigners.cmdOKClick
+ 0001:001CB274       fAddlSigners.TfrmAddlSigners.cboSrcListMouseClick
+ 0001:001CB4D8       fAddlSigners.TfrmAddlSigners.btnRemoveAllSignersClick
+ 0001:001CB4F4       fAddlSigners.TfrmAddlSigners.btnRemoveSignersClick
+ 0001:001CB628       fAddlSigners.TfrmAddlSigners.btnAddSignersClick
+ 0001:001CB634       fAddlSigners.TfrmAddlSigners.cboCosignerChange
+ 0001:001CB924       fAddlSigners.TfrmAddlSigners.FormCreate
+ 0001:001CB950       fAddlSigners.TfrmAddlSigners.FormDestroy
+ 0001:001CB96C       fAddlSigners.TfrmAddlSigners.DstListChange
+ 0001:001CBA48       fAddlSigners.TfrmAddlSigners.cboSrcListKeyDown
+ 0001:001CBA5C       fAddlSigners.TfrmAddlSigners.CosignerOK
+ 0001:001CBC3C       fAddlSigners.TfrmAddlSigners.cboCosignerNeedData
+ 0001:001CBCD8       fAddlSigners.TfrmAddlSigners.cboCosignerExit
+ 0001:001CBD30       fAddlSigners.TfrmAddlSigners.cboSrcListChange
+ 0001:001CBD50       fAddlSigners.TfrmAddlSigners.cboSrcListClick
+ 0001:001CBE8C       fNotePrt..TfrmNotePrint
+ 0001:001CC1D0       fNotePrt.PrintNote
+ 0001:001CC4B8       fNotePrt.TfrmNotePrint.DisplaySelectDevice
+ 0001:001CC614       fNotePrt.TfrmNotePrint.cboDeviceNeedData
+ 0001:001CC63C       fNotePrt.TfrmNotePrint.cboDeviceChange
+ 0001:001CC708       fNotePrt.TfrmNotePrint.radChartCopyClick
+ 0001:001CC710       fNotePrt.TfrmNotePrint.radWorkCopyClick
+ 0001:001CC718       fNotePrt.TfrmNotePrint.cmdOKClick
+ 0001:001CCA68       fNotePrt.TfrmNotePrint.cmdCancelClick
+ 0001:001CCA70       fSignItem..TfrmSignItem
+ 0001:001CCC98       fSignItem.SignatureForItem
+ 0001:001CCD38       fSignItem.TfrmSignItem.cmdOKClick
+ 0001:001CCE70       fSignItem.TfrmSignItem.cmdCancelClick
+ 0001:001CCE88       fNoteBD..TfrmNotesByDate
+ 0001:001CD158       fNoteBD.SelectNoteDateRange
+ 0001:001CD374       fNoteBD.TfrmNotesByDate.cmdOKClick
+ 0001:001CD52C       fNoteBD.TfrmNotesByDate.cmdCancelClick
+ 0001:001CD534       fNoteBD.TfrmNotesByDate.calBeginDateKeyPress
+ 0001:001CD544       fNoteBD.TfrmNotesByDate.calEndDateKeyPress
+ 0001:001CD554       fNoteBA..TfrmNotesByAuthor
+ 0001:001CD7D0       fNoteBA.SelectAuthor
+ 0001:001CD9E8       fNoteBA.TfrmNotesByAuthor.cboAuthorNeedData
+ 0001:001CDA10       fNoteBA.TfrmNotesByAuthor.cmdCancelClick
+ 0001:001CDA18       fNoteBA.TfrmNotesByAuthor.cmdOKClick
+ 0001:001CDB30       fSurgery..TfrmSurgery
+ 0001:001CEE24       fSurgery.TfrmSurgery.AllowContextChange
+ 0001:001CF0C0       fSurgery.TfrmSurgery.ClearPtData
+ 0001:001CF15C       fSurgery.TfrmSurgery.DisplayPage
+ 0001:001CF2EC       fSurgery.TfrmSurgery.FormCreate
+ 0001:001CF3CC       fSurgery.TfrmSurgery.pnlRightResize
+ 0001:001CF3EC       fSurgery.TfrmSurgery.pnlWriteResize
+ 0001:001CF49C       fSurgery.TfrmSurgery.SetViewContext
+ 0001:001CF5DC       fSurgery.TfrmSurgery.FormDestroy
+ 0001:001CF604       fSurgery.TfrmSurgery.GetDrawers
+ 0001:001CF60C       fSurgery.TfrmSurgery.UpdateTreeView
+ 0001:001CF710       fSurgery.TfrmSurgery.RequestPrint
+ 0001:001CF8C8       fSurgery.TfrmSurgery.mnuChartTabClick
+ 0001:001CF8D8       fSurgery.TfrmSurgery.SetFontSize
+ 0001:001CF960       fSurgery.TfrmSurgery.mnuViewClick
+ 0001:001CFCE0       fSurgery.TfrmSurgery.popNoteMemoFindClick
+ 0001:001CFD6C       fSurgery.TfrmSurgery.dlgFindTextFind
+ 0001:001CFD8C       fSurgery.TfrmSurgery.ClearEditControls
+ 0001:001CFE5C       fSurgery.TfrmSurgery.ShowPCEControls
+ 0001:001CFEA8       fSurgery.TfrmSurgery.DisplayPCE
+ 0001:001D02E8       fSurgery.TfrmSurgery.GetTitleText
+ 0001:001D046C       fSurgery.TfrmSurgery.LacksRequiredForCreate
+ 0001:001D0514       fSurgery.TfrmSurgery.VerifyNoteTitle
+ 0001:001D05C0       fSurgery.TfrmSurgery.SetSubjectVisible
+ 0001:001D0634       fSurgery.TfrmSurgery.InsertNewNote
+ 0001:001D0D78       fSurgery.TfrmSurgery.InsertAddendum
+ 0001:001D136C       fSurgery.TfrmSurgery.LoadForEdit
+ 0001:001D17F8       fSurgery.TfrmSurgery.SaveEditedNote
+ 0001:001D1D60       fSurgery.TfrmSurgery.SaveCurrentNote
+ 0001:001D1D70       fSurgery.TfrmSurgery.cmdNewNoteClick
+ 0001:001D1D78       fSurgery.TfrmSurgery.cmdPCEClick
+ 0001:001D1E84       fSurgery.TfrmSurgery.mnuActChangeClick
+ 0001:001D1EB8       fSurgery.AssignBoilerText
+ 0001:001D1F64       fSurgery.TfrmSurgery.mnuActLoadBoilerClick
+ 0001:001D2264       fSurgery.TfrmSurgery.cmdChangeClick
+ 0001:001D27B4       fSurgery.TfrmSurgery.memNewNoteChange
+ 0001:001D27BC       fSurgery.TfrmSurgery.pnlFieldsResize
+ 0001:001D2814       fSurgery.TfrmSurgery.DoAutoSave
+ 0001:001D2B38       fSurgery.TfrmSurgery.timAutoSaveTimer
+ 0001:001D2B44       fSurgery.TfrmSurgery.StartNewEdit
+ 0001:001D2E30       fSurgery.TfrmSurgery.mnuActNewClick
+ 0001:001D2F14       fSurgery.TfrmSurgery.mnuActAddendClick
+ 0001:001D318C       fSurgery.TfrmSurgery.mnuActSignListClick
+ 0001:001D3504       fSurgery.TfrmSurgery.RemovePCEFromChanges
+ 0001:001D3700       fSurgery.TfrmSurgery.mnuActDeleteClick
+ 0001:001D3BEC       fSurgery.TfrmSurgery.mnuActEditClick
+ 0001:001D3D30       fSurgery.TfrmSurgery.mnuActSaveClick
+ 0001:001D3E74       fSurgery.TfrmSurgery.mnuActSignClick
+ 0001:001D4544       fSurgery.TfrmSurgery.SaveSignItem
+ 0001:001D4A30       fSurgery.TfrmSurgery.popNoteMemoPopup
+ 0001:001D4C68       fSurgery.TfrmSurgery.popNoteMemoCutClick
+ 0001:001D4C74       fSurgery.TfrmSurgery.popNoteMemoCopyClick
+ 0001:001D4C80       fSurgery.TfrmSurgery.popNoteMemoPasteClick
+ 0001:001D4CD4       fSurgery.TfrmSurgery.popNoteMemoReformatClick
+ 0001:001D4CF4       fSurgery.TfrmSurgery.popNoteMemoSaveContinueClick
+ 0001:001D4D08       fSurgery.TfrmSurgery.popNoteMemoReplaceClick
+ 0001:001D4D9C       fSurgery.TfrmSurgery.dlgReplaceTextFind
+ 0001:001D4DBC       fSurgery.TfrmSurgery.dlgReplaceTextReplace
+ 0001:001D4DDC       fSurgery.TfrmSurgery.popNoteMemoSpellClick
+ 0001:001D4E58       fSurgery.TfrmSurgery.popNoteMemoGrammarClick
+ 0001:001D4ED4       fSurgery.TfrmSurgery.mnuViewDetailClick
+ 0001:001D507C       fSurgery.TfrmSurgery.FormClose
+ 0001:001D5178       fSurgery.TfrmSurgery.mnuActIdentifyAddlSignersClick
+ 0001:001D54EC       fSurgery.TfrmSurgery.popNoteMemoAddlSignClick
+ 0001:001D54F4       fSurgery.TfrmSurgery.ProcessNotifications
+ 0001:001D5910       fSurgery.TfrmSurgery.mnuViewSaveAsDefaultClick
+ 0001:001D5A04       fSurgery.TfrmSurgery.mnuViewReturntoDefaultClick
+ 0001:001D5A10       fSurgery.TfrmSurgery.popNoteMemoTemplateClick
+ 0001:001D5A68       fSurgery.TfrmSurgery.popNoteListPopup
+ 0001:001D5AE4       fSurgery.TfrmSurgery.popNoteListExpandAllClick
+ 0001:001D5AF0       fSurgery.TfrmSurgery.popNoteListCollapseAllClick
+ 0001:001D5B34       fSurgery.TfrmSurgery.popNoteListExpandSelectedClick
+ 0001:001D5B6C       fSurgery.TfrmSurgery.popNoteListCollapseSelectedClick
+ 0001:001D5BA4       fSurgery.TfrmSurgery.mnuEditTemplatesClick
+ 0001:001D5BB0       fSurgery.TfrmSurgery.mnuNewTemplateClick
+ 0001:001D5BBC       fSurgery.TfrmSurgery.mnuEditSharedTemplatesClick
+ 0001:001D5BC8       fSurgery.TfrmSurgery.mnuNewSharedTemplateClick
+ 0001:001D5BD4       fSurgery.TfrmSurgery.mnuOptionsClick
+ 0001:001D5C48       fSurgery.TfrmSurgery.SetEditingIndex
+ 0001:001D5C70       fSurgery.TfrmSurgery.mnuEditDialgFieldsClick
+ 0001:001D5C78       fSurgery.TfrmSurgery.tvSurgeryClick
+ 0001:001D5CB0       fSurgery.TfrmSurgery.ShowPCEButtons
+ 0001:001D5DAC       fSurgery.TfrmSurgery.mnuIconLegendClick
+ 0001:001D5DB8       fSurgery.TfrmSurgery.tvSurgeryChange
+ 0001:001D6144       fSurgery.TfrmSurgery.tvSurgeryExpanded
+ 0001:001D61A4       fSurgery.TfrmSurgery.tvSurgeryCollapsed
+ 0001:001D61E8       fSurgery.TfrmSurgery.LoadSurgeryCases
+ 0001:001D6580       fSurgery.SetDateRangeText
+ 0001:001D6694       fSurgery.TfrmSurgery.SetSurgTreeLabel
+ 0001:001D6830       fSurgery.TfrmSurgery.lstNotesClick
+ 0001:001D6B18       fSurgery.TfrmSurgery.EnableDisableMenus
+ 0001:001D6C9C       fSurgery.TfrmSurgery.memNewNoteKeyDown
+ 0001:001D6D48       fSurgery.TfrmSurgery.sptHorzCanResize
+ 0001:001D6DA8       fSurgery.TfrmSurgery.popNoteMemoPreviewClick
+ 0001:001D6DB4       fSurgery.TfrmSurgery.popNoteMemoInsTemplateClick
+ 0001:001D6DC0       fSurgery.TfrmSurgery.ViewInfo
+ 0001:001D6DD0       fSurgery.TfrmSurgery.mnuViewInformationClick
+ 0001:001D6F58       fSurgery.Finalization
+ 0001:001D6FAC       fLkUpLocation..TfrmLkUpLocation
+ 0001:001D71F8       fLkUpLocation.LookupLocation
+ 0001:001D72EC       fLkUpLocation.TfrmLkUpLocation.FormCreate
+ 0001:001D7304       fLkUpLocation.TfrmLkUpLocation.cboLocationNeedData
+ 0001:001D7370       fLkUpLocation.TfrmLkUpLocation.cmdOKClick
+ 0001:001D7380       fLkUpLocation.TfrmLkUpLocation.cmdCancelClick
+ 0001:001D7388       fOCSession..TfrmOCSession
+ 0001:001D7694       fOCSession..TOCRec
+ 0001:001D7704       fOCSession.TOCRec.Create
+ 0001:001D775C       fOCSession.TOCRec.Destroy
+ 0001:001D779C       fOCSession.ExecuteReleaseOrderChecks
+ 0001:001D78D8       fOCSession.ExecuteSessionOrderChecks
+ 0001:001D7C6C       fOCSession.TfrmOCSession.SetReqJustify
+ 0001:001D7D9C       fOCSession.TfrmOCSession.lstChecksMeasureItem
+ 0001:001D7F08       fOCSession.TfrmOCSession.lstChecksDrawItem
+ 0001:001D80EC       fOCSession.TfrmOCSession.cmdCancelOrderClick
+ 0001:001D8294       fOCSession.TfrmOCSession.cmdContinueClick
+ 0001:001D8400       fOCSession.TfrmOCSession.FormClose
+ 0001:001D8408       fOCSession.TfrmOCSession.FormShow
+ 0001:001D841C       fOCSession.TfrmOCSession.FormResize
+ 0001:001D8424       fOCSession.TfrmOCSession.txtJustifyKeyDown
+ 0001:001D8438       fOCSession.TfrmOCSession.btnReturnClick
+ 0001:001D8448       fOCSession.TfrmOCSession.memNoteEnter
+ 0001:001D845C       uSignItems..TSigItems
+ 0001:001D8664       uSignItems.TSigItems.GetSigItems
+ 0001:001D8668       uSignItems.TSigItems.FindCB
+ 0001:001D86B8       uSignItems.TSigItems.CopyCB
+ 0001:001D8740       uSignItems.TSigItems.SetSigItems
+ 0001:001D88A4       uSignItems.SigItems
+ 0001:001D88FC       uSignItems.SigItemHeight
+ 0001:001D8908       uSignItems.GetAllBtnLeftPos
+ 0001:001D8910       uSignItems.TSigItems.Add
+ 0001:001D89B0       uSignItems.TSigItems.Clear
+ 0001:001D89C8       uSignItems.TSigItems.Create
+ 0001:001D8A80       uSignItems.TSigItems.Destroy
+ 0001:001D8AB8       uSignItems.TSigItems.ResetOrders
+ 0001:001D8AF8       uSignItems.TSigItems.ItemToTag
+ 0001:001D8B24       uSignItems.TSigItems.TagInfo
+ 0001:001D8B34       uSignItems.TSigItems.TagToItem
+ 0001:001D8B64       uSignItems.CreateCB
+ 0001:001D8C14       uSignItems.TSigItems.UpdateListBox
+ 0001:001D9A5C       uSignItems.TSigItems.cbClicked
+ 0001:001D9CEC       uSignItems.TSigItems.cbEnter
+ 0001:001D9D3C       uSignItems.TSigItems.cbExit
+ 0001:001D9D5C       uSignItems.TSigItems.lbDrawItem
+ 0001:001D9FE4       uSignItems.TSigItems.Notification
+ 0001:001DA030       uSignItems.TSigItems.EnableSettings
+ 0001:001DA138       uSignItems.TSigItems.OK2SaveSettings
+ 0001:001DA304       uSignItems.TSigItems.SaveSettings
+ 0001:001DA4F0       uSignItems.TSigItems.DisplayPlTreatmentFactors
+ 0001:001DA5AC       uSignItems.TSigItems.CopyCBValues
+ 0001:001DA6E4       uSignItems.TSigItems.FindCBValues
+ 0001:001DA734       uSignItems.TSigItems.GetTempCkBxState
+ 0001:001DA854       uSignItems.Finalization
+ 0001:001DA8B8       uProbs..TKeyVal
+ 0001:001DA948       uProbs..TComment
+ 0001:001DA9E8       uProbs..TPLPt
+ 0001:001DAA5C       uProbs..TPLUserParams
+ 0001:001DAB08       uProbs..TPLFilters
+ 0001:001DAB60       uProbs..TProbRec
+ 0001:001DABD0       uProbs.TKeyVal.GetDHCPField
+ 0001:001DABFC       uProbs.TKeyVal.DHCPtoKeyVal
+ 0001:001DAC84       uProbs.TComment.Create
+ 0001:001DADDC       uProbs.TComment.Destroy
+ 0001:001DAE04       uProbs.TComment.TComtoDHCPCom
+ 0001:001DAED4       uProbs.TComment.GetExtDateAdd
+ 0001:001DAF0C       uProbs.TComment.GetAge
+ 0001:001DAF70       uProbs.TPLPt.Create
+ 0001:001DB1CC       uProbs.TPLPt.GetGMPDFN
+ 0001:001DB258       uProbs.TPLPt.Today
+ 0001:001DB310       uProbs.TPLUserParams.Create
+ 0001:001DB6A8       uProbs.TPLUserParams.Destroy
+ 0001:001DB6E0       uProbs.TPLFilters.create
+ 0001:001DB73C       uProbs.TPLFilters.Destroy
+ 0001:001DB77C       uProbs.TProbRec.Create
+ 0001:001DBDEC       uProbs.TProbRec.Destroy
+ 0001:001DBEFC       uProbs.TProbRec.EraseComments
+ 0001:001DBF28       uProbs.TProbRec.CreateFields
+ 0001:001DC0A8       uProbs.GetOrigVal
+ 0001:001DC1E8       uProbs.TProbRec.LoadField
+ 0001:001DC3D0       uProbs.TProbRec.LoadComments
+ 0001:001DC5B4       uProbs.TProbRec.GetCommentCount
+ 0001:001DC5C0       uProbs.TProbRec.AddNewComment
+ 0001:001DC6E8       uProbs.TProbRec.GetModDatstr
+ 0001:001DC700       uProbs.TProbRec.SetModDatStr
+ 0001:001DC750       uProbs.TProbRec.SetDateString
+ 0001:001DC86C       uProbs.TProbRec.GetOnsetDatstr
+ 0001:001DC884       uProbs.TProbRec.SetOnsetDatStr
+ 0001:001DC8D4       uProbs.TProbRec.GetSCProblem
+ 0001:001DC8F8       uProbs.TProbRec.GetCondition
+ 0001:001DC910       uProbs.TProbRec.SetCondition
+ 0001:001DCAD0       uProbs.TProbRec.SetSCProblem
+ 0001:001DCB4C       uProbs.TProbRec.GetAOProblem
+ 0001:001DCB70       uProbs.TProbRec.SetAOProblem
+ 0001:001DCBEC       uProbs.TProbRec.GetRADProblem
+ 0001:001DCC10       uProbs.TProbRec.SetRADProblem
+ 0001:001DCC8C       uProbs.TProbRec.GetENVProblem
+ 0001:001DCCB0       uProbs.TProbRec.SetENVProblem
+ 0001:001DCD2C       uProbs.TProbRec.GetHNCProblem
+ 0001:001DCD50       uProbs.TProbRec.SetHNCProblem
+ 0001:001DCDCC       uProbs.TProbRec.GetMSTProblem
+ 0001:001DCDF0       uProbs.TProbRec.SetMSTProblem
+ 0001:001DCE6C       uProbs.TProbRec.GetSHADProblem
+ 0001:001DCE90       uProbs.TProbRec.SetSHADProblem
+ 0001:001DCF0C       uProbs.TProbRec.GetStatus
+ 0001:001DCF24       uProbs.TProbRec.SetStatus
+ 0001:001DD024       uProbs.TProbRec.GetPriority
+ 0001:001DD03C       uProbs.TProbRec.SetPriority
+ 0001:001DD138       uProbs.TProbRec.GetResDatstr
+ 0001:001DD150       uProbs.TProbRec.SetResDatStr
+ 0001:001DD1A0       uProbs.TProbRec.GetRecDatstr
+ 0001:001DD1B8       uProbs.TProbRec.SetRecDatStr
+ 0001:001DD208       uProbs.TProbRec.GetFilerObject
+ 0001:001DD478       uProbs.TProbRec.GetAltFilerObject
+ 0001:001DD64C       uProbs.DateStringOK
+ 0001:001DD778       uProbs.StripSpace
+ 0001:001DD800       uProbs.GetListforIP
+ 0001:001DD8F4       uProbs.GetListforOP
+ 0001:001DDA04       uProbs.LoadFilterList
+ 0001:001DDA94       uProbs.ShowFilterStatus
+ 0001:001DDB98       uProbs.SetViewFilters
+ 0001:001DDCB0       uProbs.InitViewFilters
+ 0001:001DDF00       uProbs.ForChars
+ 0001:001DDF04       uProbs.GetFontInfo
+ 0001:001DDFA0       uProbs.FixQuotes
+ 0001:001DE068       uProbs.Finalization
+ 0001:001DE0AC       fReportsPrint..TfrmReportPrt
+ 0001:001DE3B0       fReportsPrint.PrintReports
+ 0001:001DE600       fReportsPrint.TfrmReportPrt.FindVType
+ 0001:001DEF9C       fReportsPrint.StringPad
+ 0001:001DF044       fReportsPrint.TfrmReportPrt.DisplaySelectDevice
+ 0001:001DF0FC       fReportsPrint.TfrmReportPrt.cboDeviceChange
+ 0001:001DF1C8       fReportsPrint.TfrmReportPrt.cmdOKClick
+ 0001:001E0C74       fReportsPrint.TfrmReportPrt.cmdCancelClick
+ 0001:001E0C7C       fReportsPrint.TfrmReportPrt.cboDeviceNeedData
+ 0001:001E0CA4       fProbCmt..TfrmProbCmt
+ 0001:001E0EB4       fProbCmt.NewComment
+ 0001:001E0F30       fProbCmt.EditComment
+ 0001:001E100C       fProbCmt.TfrmProbCmt.bbCancelClick
+ 0001:001E1038       fProbCmt.TfrmProbCmt.bbOKClick
+ 0001:001E1260       rODAllergy.ODForAllergies
+ 0001:001E12B0       rODAllergy.SearchForAllergies
+ 0001:001E133C       rODAllergy.SubsetofSymptoms
+ 0001:001E13A4       rODAllergy.GetCWADInfo
+ 0001:001E13E8       rODAllergy.LoadAllergyForEdit
+ 0001:001E1950       rODAllergy.SaveAllergy
+ 0001:001E22E8       rODAllergy.RPCEnterNKAForPatient
+ 0001:001E244C       rODAllergy.SendARTBulletin
+ 0001:001E26BC       rODAllergy.ARTPatchInstalled
+ 0001:001E2704       rODAllergy.GetSiteParams
+ 0001:001E2838       rODAllergy.MarkIDBand
+ 0001:001E284C       rODAllergy.RequireOriginatorComments
+ 0001:001E2864       rODAllergy.EnableErrorComments
+ 0001:001E287C       rODAllergy.IsARTClinicalUser
+ 0001:001E29DC       rODAllergy.GetAllergyTitleText
+ 0001:001E2AD8       rODAllergy.Finalization
+ 0001:001E2B30       fOMAction..TfrmOMAction
+ 0001:001E2CD4       fOMAction.TfrmOMAction.FormDestroy
+ 0001:001E2D2C       fOMAction.TfrmOMAction.InitDialog
+ 0001:001E2D34       rCover..TCoverSheetList
+ 0001:001E2D90       rCover.TCoverSheetList.Add
+ 0001:001E2DBC       rCover.TCoverSheetList.Create
+ 0001:001E2E18       rCover.TCoverSheetList.Destroy
+ 0001:001E2E58       rCover.TCoverSheetList.CVpln
+ 0001:001E2E6C       rCover.TCoverSheetList.CVlbl
+ 0001:001E2E80       rCover.TCoverSheetList.CVlst
+ 0001:001E2E94       rCover.DetailGeneric
+ 0001:001E2F2C       rCover.DetailProblem
+ 0001:001E2F94       rCover.DetailAllergy
+ 0001:001E2FFC       rCover.DetailPosting
+ 0001:001E3100       rCover.DetailMed
+ 0001:001E314C       rCover.LoadCoverSheetList
+ 0001:001E31C4       rCover.ExtractActiveMeds
+ 0001:001E35CC       rCover.ListGeneric
+ 0001:001E3A60       rCover.ListActiveProblems
+ 0001:001E3BD0       rCover.ListAllergies
+ 0001:001E3C34       rCover.ListPostings
+ 0001:001E3CCC       rCover.SubListPresent
+ 0001:001E3D64       rCover.AssignList
+ 0001:001E4030       rCover.ListAllBackGround
+ 0001:001E4328       rCover.NoDataText
+ 0001:001E4380       rCover.LoadDemographics
+ 0001:001E43D4       rCover.StartCoverSheet
+ 0001:001E44A0       rCover.StopCoverSheet
+ 0001:001E4538       rCover.Finalization
+ 0001:001E4580       uOrPtf.HasActiveFlg
+ 0001:001E45F8       uOrPtf.TriggerPRFPopUp
+ 0001:001E46C8       uOrPtf.GetActiveFlg
+ 0001:001E4740       uOrPtf.ClearFlag
+ 0001:001E47AC       fPatientFlagMulti..TPRFNotes
+ 0001:001E4804       fPatientFlagMulti..TfrmFlags
+ 0001:001E4B78       fPatientFlagMulti.ShowFlags
+ 0001:001E4C30       fPatientFlagMulti.TfrmFlags.lstFlagsCat1Click
+ 0001:001E4C74       fPatientFlagMulti.TfrmFlags.FormKeyDown
+ 0001:001E4C88       fPatientFlagMulti.TfrmFlags.FormShow
+ 0001:001E4CB4       fPatientFlagMulti.TfrmFlags.FormCreate
+ 0001:001E4CC0       fPatientFlagMulti.TfrmFlags.FormClose
+ 0001:001E4CC8       fPatientFlagMulti.TfrmFlags.GetNotes
+ 0001:001E4E9C       fPatientFlagMulti.TPRFNotes.create
+ 0001:001E4EE0       fPatientFlagMulti.TPRFNotes.Destroy
+ 0001:001E4F10       fPatientFlagMulti.TPRFNotes.getNoteIEN
+ 0001:001E4F78       fPatientFlagMulti.TPRFNotes.Load
+ 0001:001E5028       fPatientFlagMulti.TPRFNotes.ShowActionsOnList
+ 0001:001E5184       fPatientFlagMulti.TfrmFlags.FormDestroy
+ 0001:001E5190       fPatientFlagMulti.TfrmFlags.lvPRFClick
+ 0001:001E526C       fPatientFlagMulti.TfrmFlags.lvPRFKeyDown
+ 0001:001E5284       fPatientFlagMulti.TfrmFlags.MakeCat1FlagsStandOut
+ 0001:001E5334       fPatientFlagMulti.TfrmFlags.TimerTextFlashTimer
+ 0001:001E5384       fPatientFlagMulti.TfrmFlags.LoadSelectedFlagData
+ 0001:001E5438       fPatientFlagMulti.TfrmFlags.lstFlagsCat2Click
+ 0001:001E547C       fPatientFlagMulti.TfrmFlags.ActivateSpecificFlag
+ 0001:001E54D8       fPatientFlagMulti.TfrmFlags.GetListToActivate
+ 0001:001E5550       fPatientFlagMulti.TfrmFlags.PutFlagsOnLists
+ 0001:001E5624       fvit..TfrmVit
+ 0001:001E5C1C       fvit.TfrmVit.FormKeyPress
+ 0001:001E5C6C       fvit.TfrmVit.InitVitalPanel
+ 0001:001E5F54       fvit.TfrmVit.PopulateLastVital
+ 0001:001E6574       fvit.TfrmVit.GetVitHTRate
+ 0001:001E65D4       fvit.TfrmVit.AssignVitals
+ 0001:001E6744       fvit.TfrmVit.cboTempChange
+ 0001:001E6768       fvit.TfrmVit.CheckVitalUnit
+ 0001:001E6934       fvit.TfrmVit.cboHeightChange
+ 0001:001E6940       fvit.TfrmVit.cboWeightChange
+ 0001:001E694C       fvit.TfrmVit.txtMeasBPExit
+ 0001:001E6988       fvit.TfrmVit.cboTempExit
+ 0001:001E69D4       fvit.TfrmVit.txtMeasRespExit
+ 0001:001E6A10       fvit.TfrmVit.txtMeasPulseExit
+ 0001:001E6A4C       fvit.TfrmVit.cboHeightExit
+ 0001:001E6AC0       fvit.TfrmVit.cboWeightExit
+ 0001:001E6B0C       fvit.TfrmVit.FormCreate
+ 0001:001E6B3C       fvit.TfrmVit.FormDestroy
+ 0001:001E6B58       fvit.TfrmVit.cmdCancelClick
+ 0001:001E6B60       fvit.TfrmVit.cmdOKClick
+ 0001:001E6BE0       fvit.TfrmVit.lbllastClick
+ 0001:001E6C48       fvit.TfrmVit.FormShow
+ 0001:001E6CBC       fvit.TfrmVit.FormActivate
+ 0001:001E6CD8       fvit.TfrmVit.cboPainChange
+ 0001:001E6CE4       fvit.TfrmVit.SetVitPointer
+ 0001:001E6D94       fvit.TfrmVit.txtMeasTempExit
+ 0001:001E6DE0       fvit.TfrmVit.txtMeasHtExit
+ 0001:001E6E54       fvit.TfrmVit.txtMeasWtExit
+ 0001:001E6EA0       fCover..TfrmCover
+ 0001:001E74C8       fCover.TfrmCover.ClearPtData
+ 0001:001E75F8       fCover.TfrmCover.LoadList
+ 0001:001E779C       fCover.WaitList
+ 0001:001E77F8       fCover.TfrmCover.DisplayPage
+ 0001:001E80D4       fCover.TfrmCover.SetFontSize
+ 0001:001E8148       fCover.TfrmCover.CoverItemClick
+ 0001:001E8B70       fCover.TfrmCover.FormClose
+ 0001:001E8BC8       fCover.TfrmCover.timPollTimer
+ 0001:001E91A8       fCover.TfrmCover.NotifyOrder
+ 0001:001E922C       fCover.TfrmCover.RemindersChange
+ 0001:001E9538       fCover.TfrmCover.RemContextPopup
+ 0001:001E96D8       fCover.TfrmCover.FormCreate
+ 0001:001E97F0       fCover.TfrmCover.FormDestroy
+ 0001:001E97FC       fCover.TfrmCover.sptBottomCanResize
+ 0001:001E9810       fCover.TfrmCover.sptTopCanResize
+ 0001:001E9824       fCover.TfrmCover.spt_1CanResize
+ 0001:001E9838       fCover.TfrmCover.spt_2CanResize
+ 0001:001E984C       fCover.TfrmCover.spt_3CanResize
+ 0001:001E9860       fCover.TfrmCover.spt_4CanResize
+ 0001:001E9874       fCover.TfrmCover.spt_5CanResize
+ 0001:001E9888       fCover.TfrmCover.popMenuAllergiesPopup
+ 0001:001E99C8       fCover.TfrmCover.popNewAllergyClick
+ 0001:001E99E4       fCover.TfrmCover.popNKAClick
+ 0001:001E99FC       fCover.TfrmCover.popEditAllergyClick
+ 0001:001E9A24       fCover.TfrmCover.popEnteredInErrorClick
+ 0001:001E9A54       fCover.TfrmCover.UpdateAllergiesList
+ 0001:001E9EB0       fCover.TfrmCover.CoverItemExit
+ 0001:001E9EDC       fCover.TfrmCover.GetPatientFlag
+ 0001:001E9F24       fCover.TfrmCover.lstFlagClick
+ 0001:001E9FA0       fCover.TfrmCover.lstFlagKeyDown
+ 0001:001E9FB4       fCover.TfrmCover.UpdateVAAButton
+ 0001:001EA50C       fCover.Finalization
+ 0001:001EA570       fPtCWAD..TfrmPtCWAD
+ 0001:001EA7D4       fPtCWAD.ShowCWAD
+ 0001:001EA830       fPtCWAD.TfrmPtCWAD.FormCreate
+ 0001:001EA950       fPtCWAD.TfrmPtCWAD.lstAllergiesClick
+ 0001:001EA9D0       fPtCWAD.TfrmPtCWAD.lstNotesClick
+ 0001:001EAB14       fPtCWAD.TfrmPtCWAD.FormKeyUp
+ 0001:001EAB2C       fPtCWAD.TfrmPtCWAD.btnCloseClick
+ 0001:001EAB34       fARTFreeTextMsg..TfrmARTFreeTextMsg
+ 0001:001EAD68       fARTFreeTextMsg.GetFreeTextARTComment
+ 0001:001EAFC0       fARTFreeTextMsg.TfrmARTFreeTextMsg.cmdContinueClick
+ 0001:001EAFEC       fAllgyFind..TfrmAllgyFind
+ 0001:001EB344       fAllgyFind.AllergyLookup
+ 0001:001EB3C8       fAllgyFind.TfrmAllgyFind.FormCreate
+ 0001:001EB3E8       fAllgyFind.TfrmAllgyFind.txtSearchChange
+ 0001:001EB414       fAllgyFind.TfrmAllgyFind.cmdSearchClick
+ 0001:001EBA3C       fAllgyFind.TfrmAllgyFind.cmdOKClick
+ 0001:001EC34C       fAllgyFind.TfrmAllgyFind.cmdCancelClick
+ 0001:001EC364       fAllgyFind.TfrmAllgyFind.ckNoKnownAllergiesClick
+ 0001:001EC40C       fAllgyFind.TfrmAllgyFind.BuildAgentTree
+ 0001:001EC638       fAllgyFind.TfrmAllgyFind.tvAgentDblClick
+ 0001:001EC640       fProbflt..TfrmPlVuFilt
+ 0001:001ECAA8       fProbflt.GetViewFilters
+ 0001:001ECBB0       fProbflt.TfrmPlVuFilt.FormCreate
+ 0001:001ECBF0       fProbflt.TfrmPlVuFilt.FormShow
+ 0001:001ECD84       fProbflt.TfrmPlVuFilt.cmdAddClick
+ 0001:001ECE70       fProbflt.TfrmPlVuFilt.cmdRemoveClick
+ 0001:001ECF24       fProbflt.TfrmPlVuFilt.cmdRemoveAllClick
+ 0001:001ECF40       fProbflt.TfrmPlVuFilt.SetButtons
+ 0001:001ECFBC       fProbflt.TfrmPlVuFilt.rgVuClick
+ 0001:001ED204       fProbflt.TfrmPlVuFilt.lstDestClick
+ 0001:001ED20C       fProbflt.TfrmPlVuFilt.cboSourceChange
+ 0001:001ED214       fProbflt.TfrmPlVuFilt.cboSourceEnter
+ 0001:001ED224       fProbflt.TfrmPlVuFilt.cboSourceExit
+ 0001:001ED234       fProbflt.TfrmPlVuFilt.cmdCancelClick
+ 0001:001ED244       fProbflt.SetVu
+ 0001:001ED33C       fProbflt.TfrmPlVuFilt.cmdOKClick
+ 0001:001ED5D0       fProbflt.TfrmPlVuFilt.cmdDefaultViewClick
+ 0001:001ED5D4       fProbflt.TfrmPlVuFilt.FormClose
+ 0001:001ED5DC       fProbflt.TfrmPlVuFilt.GetClinicList
+ 0001:001ED6BC       fProbflt.TfrmPlVuFilt.GetServiceList
+ 0001:001ED7A0       fProbflt.TfrmPlVuFilt.GetLocationList
+ 0001:001ED89C       fProbflt.TfrmPlVuFilt.cboProviderNeedData
+ 0001:001ED8EC       fProbflt.TfrmPlVuFilt.cboSourceNeedData
+ 0001:001ED94C       fProbflt.TfrmPlVuFilt.CreateContextString
+ 0001:001EDA88       fProbflt.TfrmPlVuFilt.CreateFilterString
+ 0001:001EDC3C       fProbflt.TfrmPlVuFilt.cmdSaveClick
+ 0001:001EDC40       fProbLex..TfrmPLLex
+ 0001:001EDEE4       fProbLex.TfrmPLLex.FormClose
+ 0001:001EDEFC       fProbLex.TfrmPLLex.bbOKClick
+ 0001:001EE338       fProbLex.TfrmPLLex.bbCanClick
+ 0001:001EE350       fProbLex.TfrmPLLex.FormCreate
+ 0001:001EE3A4       fProbLex.TfrmPLLex.ebLexKeyPress
+ 0001:001EE3DC       fProbLex.SetLexList
+ 0001:001EE690       fProbLex.TfrmPLLex.bbSearchClick
+ 0001:001EE9F8       fProbLex.TfrmPLLex.lbLexClick
+ 0001:001EEA00       fProbLex.TfrmPLLex.FormShow
+ 0001:001EEA10       fProbEdt..TfrmdlgProb
+ 0001:001EEFE0       fProbEdt.TfrmdlgProb.OkToQuit
+ 0001:001EEFEC       fProbEdt.TfrmdlgProb.bbQuitClick
+ 0001:001EF104       fProbEdt.TfrmdlgProb.bbAddComClick
+ 0001:001EF1A0       fProbEdt.TfrmdlgProb.bbEditClick
+ 0001:001EF2AC       fProbEdt.TfrmdlgProb.FormShow
+ 0001:001F01A8       fProbEdt.TfrmdlgProb.ShowComments
+ 0001:001F0270       fProbEdt.TfrmdlgProb.FormClose
+ 0001:001F0364       fProbEdt.TfrmdlgProb.bbFileClick
+ 0001:001F0C78       fProbEdt.TfrmdlgProb.GetEditedComments
+ 0001:001F0DF4       fProbEdt.TfrmdlgProb.GetNewComments
+ 0001:001F0F14       fProbEdt.TfrmdlgProb.bbRemoveClick
+ 0001:001F0F80       fProbEdt.TfrmdlgProb.cbProvKeyPress
+ 0001:001F0FC0       fProbEdt.TfrmdlgProb.rgStatusClick
+ 0001:001F106C       fProbEdt.TfrmdlgProb.cbProvClick
+ 0001:001F108C       fProbEdt.TfrmdlgProb.cbLocClick
+ 0001:001F10AC       fProbEdt.TfrmdlgProb.cbLocKeyPress
+ 0001:001F10EC       fProbEdt.Permanent
+ 0001:001F110C       fProbEdt.TfrmdlgProb.SetDefaultProb
+ 0001:001F1B18       fProbEdt.Msg
+ 0001:001F1C54       fProbEdt.TfrmdlgProb.BadDates
+ 0001:001F1F44       fProbEdt.TfrmdlgProb.ControlChange
+ 0001:001F1F4C       fProbEdt.TfrmdlgProb.Destroy
+ 0001:001F1FE4       fProbEdt.TfrmdlgProb.cbProvDropDown
+ 0001:001F2124       fProbEdt.TfrmdlgProb.cbLocDropDown
+ 0001:001F21FC       fProbEdt.TfrmdlgProb.FormCreate
+ 0001:001F2240       fProbEdt.TfrmdlgProb.Create
+ 0001:001F22A4       fProbEdt.TfrmdlgProb.CreateParams
+ 0001:001F2308       fProbEdt.TfrmdlgProb.Loaded
+ 0001:001F2348       fProbEdt.TfrmdlgProb.DoShow
+ 0001:001F2358       fProbEdt.TfrmdlgProb.SetFontSize
+ 0001:001F2360       fProbEdt.TfrmdlgProb.ClearDialogControls
+ 0001:001F23B8       fProbEdt.TfrmdlgProb.LoadDefaults
+ 0001:001F23BC       fProbEdt.TfrmdlgProb.LackRequired
+ 0001:001F23C0       fProbEdt.TfrmdlgProb.UMTakeFocus
+ 0001:001F23F8       fProbEdt.TfrmdlgProb.bbChangeProbClick
+ 0001:001F2808       fProbEdt.TfrmdlgProb.cbLocNeedData
+ 0001:001F2830       fProbEdt.TfrmdlgProb.cbProvNeedData
+ 0001:001F2858       fProbEdt.TfrmdlgProb.cbServNeedData
+ 0001:001F2880       fProbEdt.Finalization
+ 0001:001F28B0       fProbs..TfrmProblems
+ 0001:001F3394       fProbs.TfrmProblems.AllowContextChange
+ 0001:001F3490       fProbs.TfrmProblems.ClearPtData
+ 0001:001F351C       fProbs.TfrmProblems.DisplayPage
+ 0001:001F35E4       fProbs.TfrmProblems.mnuChartTabClick
+ 0001:001F3604       fProbs.TfrmProblems.lstCatPickClick
+ 0001:001F365C       fProbs.TfrmProblems.lstProbActsClick
+ 0001:001F5290       fProbs.TfrmProblems.lstProbPickClick
+ 0001:001F52F0       fProbs.TfrmProblems.pnlProbEntResize
+ 0001:001F5300       fProbs.TfrmProblems.wgProbDataClick
+ 0001:001F546C       fProbs.TfrmProblems.wgProbDataDblClick
+ 0001:001F5490       fProbs.TfrmProblems.lstProbPickDblClick
+ 0001:001F54F0       fProbs.TfrmProblems.edProbEntKeyPress
+ 0001:001F5518       fProbs.TfrmProblems.bbOtherProbClick
+ 0001:001F5584       fProbs.TfrmProblems.UMCloseProblem
+ 0001:001F5794       fProbs.TfrmProblems.ApplyViewFilters
+ 0001:001F5D44       fProbs.TfrmProblems.GetRowCount
+ 0001:001F6000       fProbs.TfrmProblems.UMPLLexicon
+ 0001:001F602C       fProbs.TfrmProblems.SetGridPieces
+ 0001:001F62C8       fProbs.TfrmProblems.pnlRightResize
+ 0001:001F63C0       fProbs.TfrmProblems.FormCreate
+ 0001:001F6454       fProbs.TfrmProblems.LoadUserParams
+ 0001:001F6760       fProbs.TfrmProblems.LoadPatientParams
+ 0001:001F67A0       fProbs.TfrmProblems.ClearGrid
+ 0001:001F6834       fProbs.ReverseList
+ 0001:001F6878       fProbs.TfrmProblems.LoadPatientProblems
+ 0001:001F7558       fProbs.TfrmProblems.LoadUserCats
+ 0001:001F7648       fProbs.TfrmProblems.LoadUserProbs
+ 0001:001F76F4       fProbs.TfrmProblems.LoadProblems
+ 0001:001F7928       fProbs.TfrmProblems.HighlightDuplicate
+ 0001:001F7DB4       fProbs.TfrmProblems.AddProblem
+ 0001:001F8274       fProbs.TfrmProblems.EditProblem
+ 0001:001F8700       fProbs.TfrmProblems.UpdateProblem
+ 0001:001F8C50       fProbs.TfrmProblems.RestoreProblem
+ 0001:001F8FB8       fProbs.TfrmProblems.NoRowSelected
+ 0001:001F90A4       fProbs.TfrmProblems.RowSelected
+ 0001:001F96A4       fProbs.TfrmProblems.bbCancelClick
+ 0001:001F96F4       fProbs.TfrmProblems.lstViewClick
+ 0001:001F9768       fProbs.EncounterPresent
+ 0001:001F9880       fProbs.TfrmProblems.FormDestroy
+ 0001:001F98C4       fProbs.TfrmProblems.mnuViewSaveClick
+ 0001:001F9A60       fProbs.TfrmProblems.mnuViewRestoreDefaultClick
+ 0001:001F9B44       fProbs.TfrmProblems.mnuViewCommentsClick
+ 0001:001F9E3C       fProbs.TfrmProblems.RequestPrint
+ 0001:001F9F3C       fProbs.TfrmProblems.SetFontSize
+ 0001:001FA038       fProbs.TfrmProblems.RefreshList
+ 0001:001FA1E8       fProbs.TfrmProblems.wgProbDataMeasureItem
+ 0001:001FA338       fProbs.TfrmProblems.wgProbDataDrawItem
+ 0001:001FA450       fProbs.TfrmProblems.PlainText
+ 0001:001FA58C       fProbs.TfrmProblems.MString
+ 0001:001FA610       fProbs.TfrmProblems.HeaderControlSectionResize
+ 0001:001FA634       fProbs.TfrmProblems.lstViewExit
+ 0001:001FA6E0       fProbs.TfrmProblems.pnlRightExit
+ 0001:001FA830       fProbs.TfrmProblems.bbNewProbExit
+ 0001:001FA910       fProbs.TfrmProblems.frmFramePnlPatientExit
+ 0001:001FA9B8       fProbs.TfrmProblems.FormHide
+ 0001:001FA9F0       fProbs.TfrmProblems.FormShow
+ 0001:001FAA48       fProbs.TfrmProblems.FormMouseMove
+ 0001:001FAA6C       fProbs.TfrmProblems.ShowPnlView
+ 0001:001FAAB4       fProbs.TfrmProblems.ViewInfo
+ 0001:001FAAD4       fProbs.TfrmProblems.mnuViewInformationClick
+ 0001:001FACA4       fProbs.TfrmProblems.mnuOptimizeFieldsClick
+ 0001:001FAE9C       fProbs.TfrmProblems.HeaderControlSectionClick
+ 0001:001FAEBC       fProbs.TfrmProblems.HeaderControlMouseUp
+ 0001:001FAFA0       fProbs.TfrmProblems.getTotalSectionsWidth
+ 0001:001FB000       fProbs.TfrmProblems.HeaderControlMouseDown
+ 0001:001FB020       fProbs.TfrmProblems.setSectionWidths
+ 0001:001FB060       fProbs.TfrmProblems.sptHorzMoved
+ 0001:001FB07C       fProbs.Finalization
+ 0001:001FB0AC       fODConsult..TfrmODCslt
+ 0001:001FB820       fODConsult.TfrmODCslt.FormCreate
+ 0001:001FBA24       fODConsult.TfrmODCslt.InitDialog
+ 0001:001FBD24       fODConsult.TfrmODCslt.SetupDialog
+ 0001:001FC738       fODConsult.SetError
+ 0001:001FC7A4       fODConsult.TfrmODCslt.Validate
+ 0001:001FCC1C       fODConsult.TfrmODCslt.txtAttnNeedData
+ 0001:001FCC4C       fODConsult.TfrmODCslt.radInpatientClick
+ 0001:001FCD30       fODConsult.TfrmODCslt.radOutpatientClick
+ 0001:001FCE14       fODConsult.TfrmODCslt.BuildQuickTree
+ 0001:001FCF24       fODConsult.TfrmODCslt.treServiceChange
+ 0001:001FDB50       fODConsult.TfrmODCslt.ControlChange
+ 0001:001FE1F0       fODConsult.TfrmODCslt.treServiceEnter
+ 0001:001FE210       fODConsult.TfrmODCslt.treServiceExit
+ 0001:001FE2F8       fODConsult.TfrmODCslt.SetUpQuickOrderDX
+ 0001:001FE3C8       fODConsult.TfrmODCslt.cmdAcceptClick
+ 0001:001FE520       fODConsult.TfrmODCslt.memReasonExit
+ 0001:001FE5F8       fODConsult.TfrmODCslt.cboServiceSelect
+ 0001:001FED64       fODConsult.TfrmODCslt.FormDestroy
+ 0001:001FEDA0       fODConsult.TfrmODCslt.btnServiceTreeClick
+ 0001:001FF068       fODConsult.TfrmODCslt.ReadServerVariables
+ 0001:001FF250       fODConsult.TfrmODCslt.treServiceCollapsing
+ 0001:001FF290       fODConsult.TfrmODCslt.treServiceMouseDown
+ 0001:001FF370       fODConsult.TfrmODCslt.cmdLexSearchClick
+ 0001:001FF500       fODConsult.TfrmODCslt.SetProvDiagPromptingMode
+ 0001:001FF958       fODConsult.TfrmODCslt.mnuPopProvDxDeleteClick
+ 0001:001FF998       fODConsult.TfrmODCslt.txtProvDiagChange
+ 0001:001FFA30       fODConsult.EnableReason
+ 0001:001FFAAC       fODConsult.DisableReason
+ 0001:001FFB38       fODConsult.TfrmODCslt.SetupReasonForRequest
+ 0001:001FFD10       fODConsult.TfrmODCslt.ShowPrerequisites
+ 0001:001FFEC0       fODConsult.TfrmODCslt.cboServiceExit
+ 0001:00200064       fODConsult.TfrmODCslt.popReasonPopup
+ 0001:00200180       fODConsult.TfrmODCslt.popReasonCutClick
+ 0001:002001A0       fODConsult.TfrmODCslt.popReasonCopyClick
+ 0001:002001C0       fODConsult.TfrmODCslt.popReasonPasteClick
+ 0001:00200220       fODConsult.TfrmODCslt.popReasonReformatClick
+ 0001:00200254       fODConsult.TfrmODCslt.DefaultReasonForRequest
+ 0001:00200454       fODConsult.TfrmODCslt.pnlServiceTreeButtonEnter
+ 0001:0020047C       fODConsult.TfrmODCslt.pnlServiceTreeButtonExit
+ 0001:002004A4       fODConsult.TfrmODCslt.treServiceKeyDown
+ 0001:00200520       fODConsult.TfrmODCslt.treServiceKeyUp
+ 0001:00200540       fODConsult.TfrmODCslt.DoSetFontSize
+ 0001:0020058C       fODConsult.TfrmODCslt.SetFontSize
+ 0001:002005B4       fODConsult.TfrmODCslt.memReasonKeyUp
+ 0001:00200670       fODConsult.TfrmODCslt.GetProvDxandValidateCode
+ 0001:0020098C       fODConsult.TfrmODCslt.memReasonKeyDown
+ 0001:002009E8       fODConsult.TfrmODCslt.memReasonKeyPress
+ 0001:00200A10       fODConsult.TfrmODCslt.cboServiceKeyDown
+ 0001:00200A58       fODConsult.TfrmODCslt.cboServiceKeyUp
+ 0001:00200A78       fODConsult.TfrmODCslt.btnDiagnosisClick
+ 0001:00200D5C       fODConsult.TfrmODCslt.cmdQuitClick
+ 0001:00200D90       fODConsult.TfrmODCslt.SaveConsultDxForNurse
+ 0001:00200E84       fODConsult.TfrmODCslt.SetUpCopyConsultDiagnoses
+ 0001:00201230       fODConsult.TfrmODCslt.FormClose
+ 0001:00201268       fODConsult.TfrmODCslt.FormResize
+ 0001:0020128C       fODConsult.TfrmODCslt.AdjustMemReasonSize
+ 0001:002012E8       fODConsult.Finalization
+ 0001:00201348       fODValidateAction..TfrmInvalidActionList
+ 0001:0020166C       fODValidateAction.DisplayOrdersForAction
+ 0001:00201A10       fODValidateAction.TfrmInvalidActionList.lstActDeniedOrdersDrawItem
+ 0001:00201C58       fODValidateAction.TfrmInvalidActionList.lstActDeniedOrdersMeasureItem
+ 0001:00201E50       fODValidateAction.TfrmInvalidActionList.btnOKClick
+ 0001:00201E58       fODValidateAction.TfrmInvalidActionList.FormCreate
+ 0001:00201E7C       fODValidateAction.TfrmInvalidActionList.hdrActionSectionResize
+ 0001:00201EB0       fODValidateAction.TfrmInvalidActionList.RedrawActiveList
+ 0001:00201FD4       fODValidateAction.TfrmInvalidActionList.lstValidOrdersMeasureItem
+ 0001:0020210C       fODValidateAction.TfrmInvalidActionList.lstValidOrdersDrawItem
+ 0001:00202254       fODValidateAction.TfrmInvalidActionList.FormResize
+ 0001:00202280       fODAuto..TfrmODAuto
+ 0001:00202434       fODAuto.TfrmODAuto.InitDialog
+ 0001:0020243C       fODAuto.TfrmODAuto.Validate
+ 0001:002026D0       fODAuto.TfrmODAuto.SetupDialog
+ 0001:002027B0       fOMVerify..TfrmOMVerify
+ 0001:002029F8       fOMVerify.CutoffOutptPrompts
+ 0001:00202ADC       fOMVerify.ShowVerifyText
+ 0001:00202CC4       fOMVerify.TfrmOMVerify.FormCreate
+ 0001:00202CD0       fOMVerify.TfrmOMVerify.cmdAcceptClick
+ 0001:00202CE0       fOMVerify.TfrmOMVerify.cmdEditClick
+ 0001:00202CF0       fOMVerify.TfrmOMVerify.cmdCancelClick
+ 0001:00202D00       fOMVerify.TfrmOMVerify.FormClose
+ 0001:00202D08       fOMVerify.TfrmOMVerify.memTextKeyUp
+ 0001:00202DB4       fOrdersTS..TfrmOrdersTS
+ 0001:00203168       fOrdersTS.ShowDelayedEventsTreatingSepecialty
+ 0001:00203844       fOrdersTS.TfrmOrdersTS.FormCreate
+ 0001:0020388C       fOrdersTS.TfrmOrdersTS.cmdOKClick
+ 0001:002039C8       fOrdersTS.TfrmOrdersTS.cmdCancelClick
+ 0001:002039D8       fOrdersTS.TfrmOrdersTS.radDelayedClick
+ 0001:00203A04       fOrdersTS.TfrmOrdersTS.radReleaseNowClick
+ 0001:00203AE4       fOrdersTS.TfrmOrdersTS.fraEvntDelayListcboEvntListChange
+ 0001:00203B14       fOrdersTS.TfrmOrdersTS.UMStillDelay
+ 0001:00203C0C       fOrdersTS.TfrmOrdersTS.fraEvntDelayListmlstEventsDblClick
+ 0001:00203C90       fOrdersTS.TfrmOrdersTS.FormClose
+ 0001:00203CA0       fOrdersTS.TfrmOrdersTS.fraEvntDelayListmlstEventsChange
+ 0001:00203CD0       fOrdersTS.TfrmOrdersTS.FormKeyDown
+ 0001:00203CFC       fMedCopy..TfrmMedCopy
+ 0001:002040B4       fMedCopy.Highlight
+ 0001:00204188       fMedCopy.DisplayEvntDialog
+ 0001:0020425C       fMedCopy.SetDelayEventForMed
+ 0001:00204A90       fMedCopy.TfrmMedCopy.FormCreate
+ 0001:00204ADC       fMedCopy.TfrmMedCopy.cmdOKClick
+ 0001:00204C90       fMedCopy.TfrmMedCopy.AdjustFormSize
+ 0001:00204D20       fMedCopy.TfrmMedCopy.cmdCancelClick
+ 0001:00204D28       fMedCopy.TfrmMedCopy.radDelayedClick
+ 0001:00204EE0       fMedCopy.TfrmMedCopy.radReleaseClick
+ 0001:00204EFC       fMedCopy.TfrmMedCopy.fraEvntDelayListcboEvntListChange
+ 0001:00204F24       fMedCopy.TfrmMedCopy.UMStillDelay
+ 0001:00204F34       fMedCopy.TfrmMedCopy.fraEvntDelayListmlstEventsDblClick
+ 0001:00204FB8       fMedCopy.TfrmMedCopy.fraEvntDelayListmlstEventsChange
+ 0001:00204FE8       fMedCopy.TfrmMedCopy.FormKeyDown
+ 0001:00205014       mEvntDelay..TfraEvntDelayList
+ 0001:0020528C       mEvntDelay.TfraEvntDelayList.Create
+ 0001:002052F8       mEvntDelay.TfraEvntDelayList.DisplayEvntDelayList
+ 0001:002056FC       mEvntDelay.TfraEvntDelayList.ResetProperty
+ 0001:0020572C       mEvntDelay.TfraEvntDelayList.CheckMatch
+ 0001:002058E0       mEvntDelay.TfraEvntDelayList.edtSearchChange
+ 0001:00205AC0       mEvntDelay.TfraEvntDelayList.mlstEventsChange
+ 0001:002060B0       mEvntDelay.TfraEvntDelayList.mlstEventsClick
+ 0001:00206114       mEvntDelay.TfraEvntDelayList.mlstEventsKeyUp
+ 0001:00206264       mEvntDelay.TfraEvntDelayList.edtSearchKeyDown
+ 0001:0020633C       mEvntDelay.Finalization
+ 0001:0020636C       fOrdersCopy..TfrmCopyOrders
+ 0001:00206714       fOrdersCopy.Highlight
+ 0001:002067E8       fOrdersCopy.DisplayEvntDialog
+ 0001:002068BC       fOrdersCopy.FindMatchedPtEvtID
+ 0001:00206A10       fOrdersCopy.SetViewForCopy
+ 0001:0020716C       fOrdersCopy.TfrmCopyOrders.FormCreate
+ 0001:002071AC       fOrdersCopy.TfrmCopyOrders.cmdOKClick
+ 0001:00207284       fOrdersCopy.TfrmCopyOrders.AdjustFormSize
+ 0001:00207314       fOrdersCopy.TfrmCopyOrders.cmdCancelClick
+ 0001:0020731C       fOrdersCopy.TfrmCopyOrders.radEvtDelayClick
+ 0001:002073E8       fOrdersCopy.TfrmCopyOrders.radReleaseClick
+ 0001:00207434       fOrdersCopy.TfrmCopyOrders.fraEvntDelayListcboEvntListChange
+ 0001:00207464       fOrdersCopy.TfrmCopyOrders.UMStillDelay
+ 0001:00207474       fOrdersCopy.TfrmCopyOrders.fraEvntDelayListmlstEventsDblClick
+ 0001:002074F8       fOrdersCopy.TfrmCopyOrders.fraEvntDelayListmlstEventsChange
+ 0001:00207528       fOrdersCopy.TfrmCopyOrders.FormKeyDown
+ 0001:00207554       fODChild..TfrmODChild
+ 0001:002077C0       fODChild.ActionOnComplexOrder
+ 0001:00207944       fODChild.TfrmODChild.FormCreate
+ 0001:0020794C       fODChild.TfrmODChild.lstODComplexDrawItem
+ 0001:00207A90       fODChild.TfrmODChild.lstODComplexMeasureItem
+ 0001:00207B90       fODChild.TfrmODChild.btnOKClick
+ 0001:00207BA0       fODChild.TfrmODChild.btnCancelClick
+ 0001:00207BB0       fODActive..TfrmODActive
+ 0001:00207E7C       fODActive.CopyActiveOrdersToEvent
+ 0001:00207FEC       fODActive.TfrmODActive.btnOKClick
+ 0001:00208254       fODActive.TfrmODActive.btnCancelClick
+ 0001:0020825C       fODActive.TfrmODActive.FormCreate
+ 0001:0020829C       fODActive.TfrmODActive.LoadActiveOrders
+ 0001:002084A4       fODActive.TfrmODActive.FormDestroy
+ 0001:002084E0       fODActive.TfrmODActive.lstActiveOrdersMeasureItem
+ 0001:002086E4       fODActive.TfrmODActive.lstActiveOrdersDrawItem
+ 0001:00208AA0       fODActive.TfrmODActive.RetrieveVisibleOrders
+ 0001:00208B0C       fODActive.TfrmODActive.hdControlSectionResize
+ 0001:00208B40       fODActive.TfrmODActive.RedrawActiveList
+ 0001:00208BEC       fODActive.TfrmODActive.MeasureColumnHeight
+ 0001:00208C80       fEffectDate..TfrmEffectDate
+ 0001:00208EB8       fEffectDate.ObtainEffectiveDate
+ 0001:00208F6C       fEffectDate.TfrmEffectDate.FormCreate
+ 0001:00208F74       fEffectDate.TfrmEffectDate.cmdOKClick
+ 0001:00208F84       fEffectDate.TfrmEffectDate.cmdCancelClick
+ 0001:00208F8C       fODGen..TDialogCtrl
+ 0001:00209008       fODGen..TfrmODGen
+ 0001:00209220       fODGen.TfrmODGen.FormCreate
+ 0001:00209424       fODGen.TfrmODGen.FormClose
+ 0001:00209570       fODGen.TfrmODGen.SetDialogIEN
+ 0001:0020963C       fODGen.TfrmODGen.SetupDialog
+ 0001:002098C4       fODGen.TfrmODGen.UpdateAccessabilityActions
+ 0001:002098CC       fODGen.TfrmODGen.InitDialog
+ 0001:002099B8       fODGen.SetError
+ 0001:00209A14       fODGen.TfrmODGen.Validate
+ 0001:00209D58       fODGen.TfrmODGen.PlaceControls
+ 0001:0020A020       fODGen.TfrmODGen.PlaceDateTime
+ 0001:0020A150       fODGen.TfrmODGen.PlaceFreeText
+ 0001:0020A2A4       fODGen.TfrmODGen.PlaceNumeric
+ 0001:0020A3A0       fODGen.TfrmODGen.PlaceSetOfCodes
+ 0001:0020A5B4       fODGen.TfrmODGen.PlaceYesNo
+ 0001:0020A6FC       fODGen.TfrmODGen.PlaceLookup
+ 0001:0020ABE8       fODGen.TfrmODGen.LookupNeedData
+ 0001:0020ACB0       fODGen.TfrmODGen.PlaceMemo
+ 0001:0020ADA4       fODGen.TfrmODGen.PlaceHidden
+ 0001:0020ADC4       fODGen.TfrmODGen.PlaceLabel
+ 0001:0020AE44       fODGen.TfrmODGen.TrimAllMemos
+ 0001:0020AF08       fODGen.TfrmODGen.cmdAcceptClick
+ 0001:0020AF28       fODGen.TfrmODGen.ControlChange
+ 0001:0020B294       fOMNavA..TfrmOMNavA
+ 0001:0020B674       fOMNavA..TMenuPath
+ 0001:0020B6DC       fOMNavA.TfrmOMNavA.ClearMenuGrid
+ 0001:0020B758       fOMNavA.TfrmOMNavA.FindOrderMenu
+ 0001:0020B7DC       fOMNavA.TfrmOMNavA.PlaceMenuItems
+ 0001:0020B904       fOMNavA.TfrmOMNavA.SetNewMenu
+ 0001:0020B98C       fOMNavA.TfrmOMNavA.SetNavButtons
+ 0001:0020BA30       fOMNavA.TfrmOMNavA.cmdPrevClick
+ 0001:0020BA74       fOMNavA.TfrmOMNavA.cmdNextClick
+ 0001:0020BAB8       fOMNavA.TfrmOMNavA.cmdDoneClick
+ 0001:0020BB7C       fOMNavA.TfrmOMNavA.FormCreate
+ 0001:0020BC24       fOMNavA.TfrmOMNavA.CreateParams
+ 0001:0020BC40       fOMNavA.TfrmOMNavA.UMDestroy
+ 0001:0020BC58       fOMNavA.TfrmOMNavA.accEventsGrdMenuCaptionQuery
+ 0001:0020BCAC       fOMNavA.TfrmOMNavA.FormDestroy
+ 0001:0020BDA8       fOMNavA.TfrmOMNavA.FormActivate
+ 0001:0020BDAC       fOMNavA.TfrmOMNavA.FormClose
+ 0001:0020BE44       fOMNavA.TfrmOMNavA.SetEventDelay
+ 0001:0020BEB8       fOMNavA.TfrmOMNavA.grdMenuDrawCell
+ 0001:0020C1A4       fOMNavA.TfrmOMNavA.AddToSelectList
+ 0001:0020C1CC       fOMNavA.TfrmOMNavA.DoSelectList
+ 0001:0020C334       fOMNavA.TfrmOMNavA.grdMenuKeyDown
+ 0001:0020C4D8       fOMNavA.TfrmOMNavA.grdMenuKeyUp
+ 0001:0020C4FC       fOMNavA.TfrmOMNavA.grdMenuMouseDown
+ 0001:0020C620       fOMNavA.TfrmOMNavA.grdMenuMouseMove
+ 0001:0020C6BC       fOMNavA.TfrmOMNavA.grdMenuMouseUp
+ 0001:0020C7BC       fOMNavA.TfrmOMNavA.CMMouseLeave
+ 0001:0020C7DC       fOMNavA.TfrmOMNavA.DialogNotDisabled
+ 0001:0020C85C       fOMNavA.TfrmOMNavA.accEventsGrdMenuValueQuery
+ 0001:0020C8D8       fOMNavA.TfrmOMNavA.ActivateDialog
+ 0001:0020CBA0       fOMNavA.TfrmOMNavA.pnlToolMouseDown
+ 0001:0020CC18       fOMNavA.TfrmOMNavA.pnlToolMouseMove
+ 0001:0020CC84       fOMNavA.TfrmOMNavA.pnlToolMouseUp
+ 0001:0020CC94       fOMNavA.TfrmOMNavA.FormResize
+ 0001:0020CCCC       fOMNavA.TfrmOMNavA.ResizeFont
+ 0001:0020CCEC       fODReleaseEvent..TfrmOrdersReleaseEvent
+ 0001:0020CFB8       fODReleaseEvent.FindOrderText
+ 0001:0020D014       fODReleaseEvent.ExecuteReleaseEventOrders
+ 0001:0020D850       fODReleaseEvent.TfrmOrdersReleaseEvent.btnCancelClick
+ 0001:0020D858       fODReleaseEvent.TfrmOrdersReleaseEvent.FormCreate
+ 0001:0020D8BC       fODReleaseEvent.TfrmOrdersReleaseEvent.btnOKClick
+ 0001:0020D950       fODReleaseEvent.TfrmOrdersReleaseEvent.FormDestroy
+ 0001:0020D974       fODReleaseEvent.TfrmOrdersReleaseEvent.cklstOrdersMeasureItem
+ 0001:0020DA54       fODReleaseEvent.TfrmOrdersReleaseEvent.cklstOrdersDrawItem
+ 0001:0020DB74       fODReleaseEvent.TfrmOrdersReleaseEvent.cklstOrdersMouseMove
+ 0001:0020DC7C       fOCAccept..TfrmOCAccept
+ 0001:0020DE5C       fOCAccept.AcceptOrderWithChecks
+ 0001:0020DFA4       fRenewOutMed..TfrmRenewOutMed
+ 0001:0020E220       fRenewOutMed.ExecuteRenewOutMed
+ 0001:0020E368       fRenewOutMed.TfrmRenewOutMed.FormCreate
+ 0001:0020E3E0       fRenewOutMed.TfrmRenewOutMed.cmdOKClick
+ 0001:0020E49C       fRenewOutMed.TfrmRenewOutMed.cmdCancelClick
+ 0001:0020E4A4       fDateRange..TfrmDateRange
+ 0001:0020E700       fDateRange.ExecuteDateRange
+ 0001:0020E888       fDateRange.TfrmDateRange.FormCreate
+ 0001:0020E890       fDateRange.TfrmDateRange.cmdOKClick
+ 0001:0020EA94       fDateRange.TfrmDateRange.cmdCancelClick
+ 0001:0020EA9C       fOrdersRenew..TfrmRenewOrders
+ 0001:0020ED78       fOrdersRenew.PickupText
+ 0001:0020EE28       fOrdersRenew.OrderForInpatient
+ 0001:0020EE34       fOrdersRenew.ExecuteRenewOrders
+ 0001:0020F5E8       fOrdersRenew.TfrmRenewOrders.FormCreate
+ 0001:0020F610       fOrdersRenew.TfrmRenewOrders.FormResize
+ 0001:0020F694       fOrdersRenew.TfrmRenewOrders.lstOrdersMeasureItem
+ 0001:0020F79C       fOrdersRenew.TfrmRenewOrders.lstOrdersDrawItem
+ 0001:0020F8BC       fOrdersRenew.TfrmRenewOrders.lstOrdersClick
+ 0001:0020F9C4       fOrdersRenew.TfrmRenewOrders.cmdChangeClick
+ 0001:0020FDF4       fOrdersRenew.TfrmRenewOrders.cmdOKClick
+ 0001:0020FE04       fOrdersRenew.TfrmRenewOrders.cmdCancelClick
+ 0001:0020FE0C       fOrdersRenew.TfrmRenewOrders.MeasureColumnHeight
+ 0001:0020FEA0       fOrdersRenew.TfrmRenewOrders.AcceptOrderCheckOnRenew
+ 0001:0020FF34       fOrdersRenew.TfrmRenewOrders.FormClose
+ 0001:0020FF3C       fOrdersRenew.TfrmRenewOrders.hdrOrdersSectionResize
+ 0001:0020FF4C       fRename..TfrmRename
+ 0001:00210158       fRename.ExecuteRename
+ 0001:00210250       fRename.TfrmRename.FormCreate
+ 0001:00210258       fRename.TfrmRename.cmdOKClick
+ 0001:00210268       fRename.TfrmRename.cmdCancelClick
+ 0001:00210270       fOrderSaveQuick..TfrmSaveQuickOrder
+ 0001:00210604       fOrderSaveQuick.EditCommonList
+ 0001:00210818       fOrderSaveQuick.SaveAsQuickOrder
+ 0001:00210D2C       fOrderSaveQuick.TfrmSaveQuickOrder.txtDisplayNameChange
+ 0001:00210E28       fOrderSaveQuick.TfrmSaveQuickOrder.cmdUpClick
+ 0001:00210E78       fOrderSaveQuick.TfrmSaveQuickOrder.cmdDownClick
+ 0001:00210ED8       fOrderSaveQuick.TfrmSaveQuickOrder.cmdRenameClick
+ 0001:002110DC       fOrderSaveQuick.TfrmSaveQuickOrder.cmdDeleteClick
+ 0001:0021124C       fOrderSaveQuick.TfrmSaveQuickOrder.FormCreate
+ 0001:00211254       fOrderSaveQuick.TfrmSaveQuickOrder.cmdOKClick
+ 0001:00211484       fOrderSaveQuick.TfrmSaveQuickOrder.cmdCancelClick
+ 0001:0021148C       fOrderSaveQuick.TfrmSaveQuickOrder.pnlUpButtonEnter
+ 0001:00211498       fOrderSaveQuick.TfrmSaveQuickOrder.pnlUpButtonExit
+ 0001:002114A4       fOrderComment..TfrmWardComments
+ 0001:002116EC       fOrderComment.ExecuteWardComments
+ 0001:00211820       fOrderComment.TfrmWardComments.FormCreate
+ 0001:00211828       fOrderComment.TfrmWardComments.cmdOKClick
+ 0001:00211838       fOrderComment.TfrmWardComments.cmdCancelClick
+ 0001:00211840       fOrderComment.TfrmWardComments.memCommentsKeyUp
+ 0001:002118EC       fOrdersVerify..TfrmVerifyOrders
+ 0001:00211BA4       fOrdersVerify.ExecuteVerifyOrders
+ 0001:00211D4C       fOrdersVerify.TfrmVerifyOrders.FormCreate
+ 0001:00211D54       fOrdersVerify.TfrmVerifyOrders.cmdOKClick
+ 0001:00211F38       fOrdersVerify.TfrmVerifyOrders.cmdCancelClick
+ 0001:00211F40       fOrdersVerify.TfrmVerifyOrders.lstOrdersMeasureItem
+ 0001:00212010       fOrdersVerify.TfrmVerifyOrders.lstOrdersDrawItem
+ 0001:00212154       fOrdersVerify.TfrmVerifyOrders.Panel1Resize
+ 0001:00212164       fOrdersComplete..TfrmCompleteOrders
+ 0001:002123BC       fOrdersComplete.ExecuteCompleteOrders
+ 0001:002124C8       fOrdersComplete.TfrmCompleteOrders.FormCreate
+ 0001:002124D0       fOrdersComplete.TfrmCompleteOrders.cmdOKClick
+ 0001:002126B8       fOrdersComplete.TfrmCompleteOrders.cmdCancelClick
+ 0001:002126C0       fOrdersEvntRelease..TfrmOrdersEvntRelease
+ 0001:00212ADC       fOrdersEvntRelease.SelectEvtReleasedOrders
+ 0001:00212C24       fOrdersEvntRelease.TfrmOrdersEvntRelease.FormCreate
+ 0001:00212FBC       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnCancelClick
+ 0001:00212FC4       fOrdersEvntRelease.TfrmOrdersEvntRelease.FormShow
+ 0001:00212FD0       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListDrawCell
+ 0001:00213070       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListMouseDown
+ 0001:00213268       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnOKClick
+ 0001:0021353C       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListKeyPress
+ 0001:0021373C       fOrdersEvntRelease.TfrmOrdersEvntRelease.grdEvtListDblClick
+ 0001:00213754       fOrdersEvntRelease.TfrmOrdersEvntRelease.pnlBottomResize
+ 0001:0021379C       fOrdersEvntRelease.TfrmOrdersEvntRelease.ShowEvents
+ 0001:00213A10       fOrdersEvntRelease.TfrmOrdersEvntRelease.edtNumberChange
+ 0001:00213BA0       fOrdersEvntRelease.TfrmOrdersEvntRelease.edtNumberKeyDown
+ 0001:00213BB4       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnApplyClick
+ 0001:00213C14       fOrdersEvntRelease.TfrmOrdersEvntRelease.btnApplyKeyDown
+ 0001:00213C28       fOrdersEvntRelease.TfrmOrdersEvntRelease.edtNumberClick
+ 0001:00213C34       fOrdersEvntRelease.TfrmOrdersEvntRelease.updown1Click
+ 0001:00213CAC       fOrdersEvntRelease.TfrmOrdersEvntRelease.FormClose
+ 0001:00213CBC       fOrdersOnChart..TfrmOnChartOrders
+ 0001:00213F40       fOrdersOnChart.FindOrderText
+ 0001:00213F9C       fOrdersOnChart.ExecuteOnChartOrders
+ 0001:002145D8       fOrdersOnChart.TfrmOnChartOrders.FormCreate
+ 0001:002145E0       fOrdersOnChart.TfrmOnChartOrders.cmdOKClick
+ 0001:002145F0       fOrdersOnChart.TfrmOnChartOrders.cmdCancelClick
+ 0001:002145F8       fOrdersOnChart.TfrmOnChartOrders.lstOrdersMeasureItem
+ 0001:002146C8       fOrdersOnChart.TfrmOnChartOrders.lstOrdersDrawItem
+ 0001:0021480C       fOrdersOnChart.TfrmOnChartOrders.Panel2Resize
+ 0001:0021481C       fOrdersRelease..TfrmReleaseOrders
+ 0001:00214AFC       fOrdersRelease.FindOrderText
+ 0001:00214B58       fOrdersRelease.SignNotRequired
+ 0001:00214B94       fOrdersRelease.ExecuteReleaseOrders
+ 0001:002152D0       fOrdersRelease.TfrmReleaseOrders.FormCreate
+ 0001:00215340       fOrdersRelease.TfrmReleaseOrders.cmdOKClick
+ 0001:00215604       fOrdersRelease.TfrmReleaseOrders.cmdCancelClick
+ 0001:0021560C       fOrdersRelease.TfrmReleaseOrders.lstOrdersDrawItem
+ 0001:00215750       fOrdersRelease.TfrmReleaseOrders.lstOrdersMeasureItem
+ 0001:00215820       fOrdersRelease.TfrmReleaseOrders.Panel1Resize
+ 0001:00215830       fOrderUnflag..TfrmUnflagOrder
+ 0001:00215A70       fOrderUnflag.ExecuteUnflagOrder
+ 0001:00215B68       fOrderUnflag.TfrmUnflagOrder.FormCreate
+ 0001:00215B70       fOrderUnflag.TfrmUnflagOrder.cmdOKClick
+ 0001:00215B80       fOrderUnflag.TfrmUnflagOrder.cmdCancelClick
+ 0001:00215B88       fOrderFlag..TfrmFlagOrder
+ 0001:00215E14       fOrderFlag.ExecuteFlagOrder
+ 0001:00215F14       fOrderFlag.TfrmFlagOrder.FormCreate
+ 0001:00215FBC       fOrderFlag.TfrmFlagOrder.cmdOKClick
+ 0001:00216084       fOrderFlag.TfrmFlagOrder.cmdCancelClick
+ 0001:0021608C       fOrderFlag.TfrmFlagOrder.cboOnExit
+ 0001:00216120       fOrderFlag.TfrmFlagOrder.cboAlertRecipientNeedData
+ 0001:00216148       fOrdersAlert..TfrmAlertOrders
+ 0001:002163C8       fOrdersAlert.ExecuteAlertOrders
+ 0001:00216504       fOrdersAlert.TfrmAlertOrders.FormCreate
+ 0001:00216538       fOrdersAlert.TfrmAlertOrders.cmdOKClick
+ 0001:0021655C       fOrdersAlert.TfrmAlertOrders.cmdCancelClick
+ 0001:00216564       fOrdersAlert.TfrmAlertOrders.cboAlertRecipientNeedData
+ 0001:0021658C       fOrdersAlert.TfrmAlertOrders.cboOnExit
+ 0001:00216620       fOrdersAlert.Finalization
+ 0001:0021665C       fOrdersUnhold..TfrmUnholdOrders
+ 0001:00216878       fOrdersUnhold.ExecuteUnholdOrders
+ 0001:002169B4       fOrdersUnhold.TfrmUnholdOrders.FormCreate
+ 0001:002169BC       fOrdersUnhold.TfrmUnholdOrders.cmdOKClick
+ 0001:002169CC       fOrdersUnhold.TfrmUnholdOrders.cmdCancelClick
+ 0001:002169D4       fOrdersHold..TfrmHoldOrders
+ 0001:00216BEC       fOrdersHold.ExecuteHoldOrders
+ 0001:00216D74       fOrdersHold.TfrmHoldOrders.FormCreate
+ 0001:00216D7C       fOrdersHold.TfrmHoldOrders.cmdOKClick
+ 0001:00216D8C       fOrdersHold.TfrmHoldOrders.cmdCancelClick
+ 0001:00216D94       fODChangeEvtDisp..TfrmChangeEventDisp
+ 0001:00217004       fODChangeEvtDisp.DispOrdersForEventChange
+ 0001:002170C8       fODChangeEvtDisp.TfrmChangeEventDisp.lstCVOrdersDrawItem
+ 0001:002171CC       fODChangeEvtDisp.TfrmChangeEventDisp.lstCVOrdersMeasureItem
+ 0001:002172A4       fODChangeEvtDisp.TfrmChangeEventDisp.cmdOKClick
+ 0001:002172B4       fODChangeEvtDisp.TfrmChangeEventDisp.cmdCancelClick
+ 0001:002172C4       fOrdersCV..TfrmChgEvent
+ 0001:00217560       fOrdersCV.DisplayEvntDialog
+ 0001:00217634       fOrdersCV.FindMatchedPtEvtID
+ 0001:00217788       fOrdersCV.ExecuteChangeEvt
+ 0001:00217FD0       fOrdersCV.TfrmChgEvent.LoadSpecialtyList
+ 0001:0021820C       fOrdersCV.TfrmChgEvent.FormCreate
+ 0001:00218248       fOrdersCV.TfrmChgEvent.cboSpecialtyChange
+ 0001:00218634       fOrdersCV.TfrmChgEvent.btnActionClick
+ 0001:002186B4       fOrdersCV.TfrmChgEvent.btnCancelClick
+ 0001:002186BC       fOrdersCV.TfrmChgEvent.cboSpecialtyDblClick
+ 0001:002186D8       fOrdersCV.TfrmChgEvent.FormClose
+ 0001:002186E8       fOrdersCV.TfrmChgEvent.updateChanges
+ 0001:002188A0       fOrdersCV.TfrmChgEvent.Highlight
+ 0001:00218980       fOrdersCV.TfrmChgEvent.FilterOutEmptyPtEvt
+ 0001:00218A90       fOrdersDC..TfrmDCOrders
+ 0001:00218D44       fOrdersDC.ExecuteDCOrders
+ 0001:00219318       fOrdersDC.TfrmDCOrders.FormCreate
+ 0001:0021935C       fOrdersDC.TfrmDCOrders.cmdOKClick
+ 0001:00219410       fOrdersDC.TfrmDCOrders.cmdCancelClick
+ 0001:0021942C       fOrdersDC.TfrmDCOrders.lstOrdersDrawItem
+ 0001:00219530       fOrdersDC.TfrmDCOrders.lstOrdersMeasureItem
+ 0001:002195B0       fOrdersDC.TfrmDCOrders.MeasureColumnHeight
+ 0001:0021962C       fOrdersDC.TfrmDCOrders.FormDestroy
+ 0001:00219640       fOrdersDC.TfrmDCOrders.unMarkedOrignalOrderDC
+ 0001:00219678       fOrderVw..TfrmOrderView
+ 0001:00219A24       fOrderVw.SelectOrderView
+ 0001:00219BF4       fOrderVw.TfrmOrderView.FormCreate
+ 0001:00219CA8       fOrderVw.TfrmOrderView.UpdateViewName
+ 0001:00219E28       fOrderVw.TfrmOrderView.SynchViewData
+ 0001:00219FC4       fOrderVw.TfrmOrderView.LoadDGroups
+ 0001:0021A13C       fOrderVw.TfrmOrderView.LoadFilters
+ 0001:0021A2B4       fOrderVw.TfrmOrderView.treServiceClick
+ 0001:0021A2EC       fOrderVw.TfrmOrderView.chkDateRangeClick
+ 0001:0021A410       fOrderVw.TfrmOrderView.calChange
+ 0001:0021A418       fOrderVw.TfrmOrderView.cmdOKClick
+ 0001:0021A560       fOrderVw.TfrmOrderView.cmdCancelClick
+ 0001:0021A568       fOrderVw.TfrmOrderView.trFiltersClick
+ 0001:0021A698       fOrderVw.TfrmOrderView.Splitter1Moved
+ 0001:0021A6B8       fOrdersRefill..TfrmRefillOrders
+ 0001:0021A974       fOrdersRefill.ExecuteRefillOrders
+ 0001:0021AB80       fOrdersRefill.TfrmRefillOrders.FormCreate
+ 0001:0021AC60       fOrdersRefill.TfrmRefillOrders.cmdOKClick
+ 0001:0021AD8C       fOrdersRefill.TfrmRefillOrders.cmdCancelClick
+ 0001:0021AD94       fOrdersRefill.TfrmRefillOrders.FormClose
+ 0001:0021AD9C       fOrdersRefill.TfrmRefillOrders.FormShow
+ 0001:0021ADA4       fMeds..TChildOD
+ 0001:0021AE14       fMeds..TfrmMeds
+ 0001:0021BA2C       fMeds.TfrmMeds.ClearPtData
+ 0001:0021BAE4       fMeds.TfrmMeds.DisplayPage
+ 0001:0021BDFC       fMeds.TfrmMeds.mnuChartTabClick
+ 0001:0021BE1C       fMeds.IndexForCurrentID
+ 0001:0021BF58       fMeds.TfrmMeds.NotifyOrder
+ 0001:0021C838       fMeds.TfrmMeds.SetFontSize
+ 0001:0021C874       fMeds.TfrmMeds.FormCreate
+ 0001:0021CCD0       fMeds.TfrmMeds.FormDestroy
+ 0001:0021CDC8       fMeds.TfrmMeds.mnuViewDetailClick
+ 0001:0021D174       fMeds.TfrmMeds.mnuViewHistoryClick
+ 0001:0021D3BC       fMeds.TfrmMeds.RefreshMedLists
+ 0001:0021D7C0       fMeds.TfrmMeds.GetActionText
+ 0001:0021DA0C       fMeds.TfrmMeds.GetInstructText
+ 0001:0021DBB4       fMeds.TfrmMeds.GetListText
+ 0001:0021DD04       fMeds.TfrmMeds.GetPlainText
+ 0001:0021DE4C       fMeds.TfrmMeds.GetHeader
+ 0001:0021DEA0       fMeds.TfrmMeds.GetMedList
+ 0001:0021DEF4       fMeds.TfrmMeds.GetPharmacyOrders
+ 0001:0021DF48       fMeds.TfrmMeds.lstMedsMeasureItem
+ 0001:0021E168       fMeds.TfrmMeds.lstMedsDrawItem
+ 0001:0021E4FC       fMeds.TfrmMeds.lstMedsExit
+ 0001:0021E520       fMeds.TfrmMeds.lstMedsDblClick
+ 0001:0021E53C       fMeds.TfrmMeds.lstMedsInClick
+ 0001:0021E5CC       fMeds.TfrmMeds.lstMedsInRightClickHandler
+ 0001:0021E620       fMeds.TfrmMeds.lstMedsOutClick
+ 0001:0021E6B0       fMeds.TfrmMeds.lstMedsOutRightClickHandler
+ 0001:0021E704       fMeds.TfrmMeds.hdrMedsOutSectionResize
+ 0001:0021E780       fMeds.TfrmMeds.hdrMedsInSectionResize
+ 0001:0021E7FC       fMeds.TfrmMeds.mnuActClick
+ 0001:0021E904       fMeds.TfrmMeds.mnuActDCClick
+ 0001:0021EAEC       fMeds.TfrmMeds.mnuActHoldClick
+ 0001:0021ECD4       fMeds.TfrmMeds.mnuActRenewClick
+ 0001:0021EFB0       fMeds.TfrmMeds.mnuActChangeClick
+ 0001:0021F23C       fMeds.TfrmMeds.mnuActCopyClick
+ 0001:0021F96C       fMeds.TfrmMeds.mnuActNewClick
+ 0001:0021FBD0       fMeds.TfrmMeds.mnuActRefillClick
+ 0001:0021FDB0       fMeds.TfrmMeds.ListSelected
+ 0001:0021FE60       fMeds.TfrmMeds.ValidateSelected
+ 0001:002202C0       fMeds.TfrmMeds.MakeSelectedList
+ 0001:002205B0       fMeds.TfrmMeds.SynchListToOrders
+ 0001:002205D0       fMeds.TfrmMeds.popMedPopup
+ 0001:002205E0       fMeds.TfrmMeds.mnuViewClick
+ 0001:002205F0       fMeds.TfrmMeds.lstMedsNonVAClick
+ 0001:00220680       fMeds.TfrmMeds.lstMedsNonVADblClick
+ 0001:0022069C       fMeds.TfrmMeds.lstMedsNonVAExit
+ 0001:002206C0       fMeds.TfrmMeds.lstMedsNonVARightClickHandler
+ 0001:00220714       fMeds.TfrmMeds.hdrMedsNonVASectionResize
+ 0001:00220790       fMeds.TfrmMeds.FormResize
+ 0001:00220854       fMeds.TChildOD.Create
+ 0001:002208A4       fMeds.TfrmMeds.hdrMedsOutResize
+ 0001:002208FC       fMeds.TfrmMeds.hdrMedsNonVAResize
+ 0001:00220954       fMeds.TfrmMeds.hdrMedsInResize
+ 0001:002209AC       fMeds.TfrmMeds.FormShow
+ 0001:002209CC       fMeds.TfrmMeds.FormMouseUp
+ 0001:002209F0       fMeds.TfrmMeds.splitBottomMoved
+ 0001:00220A14       fMeds.TfrmMeds.splitTopMoved
+ 0001:00220A38       fMeds.TfrmMeds.InitfMedsSize
+ 0001:00220C58       fMeds.TfrmMeds.GetTotalSectionsWidth
+ 0001:00220DE4       fMeds.TfrmMeds.SetSectionWidths
+ 0001:00220F7C       fMeds.TfrmMeds.SetViewCaption
+ 0001:00221004       fMeds.TfrmMeds.hdrMedsOutMouseDown
+ 0001:00221024       fMeds.TfrmMeds.hdrMedsNonVAMouseDown
+ 0001:00221044       fMeds.TfrmMeds.hdrMedsInMouseDown
+ 0001:00221064       fMeds.TfrmMeds.hdrMedsOutMouseUp
+ 0001:002211D0       fMeds.TfrmMeds.hdrMedsNonVAMouseUp
+ 0001:0022133C       fMeds.TfrmMeds.hdrMedsInMouseUp
+ 0001:002214A8       fMeds.TfrmMeds.ClearChildODList
+ 0001:00221514       fMeds.TfrmMeds.CheckMedStatus
+ 0001:002216C8       fMeds.TfrmMeds.ActivateDeactiveRenew
+ 0001:00221850       fMeds.TfrmMeds.ViewInfo
+ 0001:00221870       fMeds.TfrmMeds.mnuViewInformationClick
+ 0001:00221A40       fMeds.TfrmMeds.mnuOptimizeFieldsClick
+ 0001:00221CEC       fMeds.TfrmMeds.hdrMedsOutSectionClick
+ 0001:00221D0C       fMeds.TfrmMeds.hdrMedsNonVASectionClick
+ 0001:00221D2C       fMeds.TfrmMeds.hdrMedsInSectionClick
+ 0001:00221D4C       fMeds.TfrmMeds.SortbyStatusthenLocation1Click
+ 0001:00221DB8       fMeds.TfrmMeds.SortbyClinicOrderthenStatusthenStopDate1Click
+ 0001:00221E24       fMeds.TfrmMeds.SortbyDrugalphabeticallystatusactivestatusrecentexpired1Click
+ 0001:00221E90       fMeds.Finalization
+ 0001:00221ECC       fPrintLocation..TfrmPrintLocation
+ 0001:00222260       fPrintLocation.TfrmPrintLocation.btnClinicClick
+ 0001:002222A0       fPrintLocation.TfrmPrintLocation.btnOKClick
+ 0001:00222520       fPrintLocation.TfrmPrintLocation.btnWardClick
+ 0001:00222560       fPrintLocation.TfrmPrintLocation.cbolocationChange
+ 0001:002225C4       fPrintLocation.TfrmPrintLocation.cbolocationExit
+ 0001:002225D0       fPrintLocation.TfrmPrintLocation.FormClose
+ 0001:0022283C       fPrintLocation.TfrmPrintLocation.FormResize
+ 0001:00222858       fPrintLocation.TfrmPrintLocation.OrderGridDrawCell
+ 0001:002228F8       fPrintLocation.TfrmPrintLocation.orderGridKeyPress
+ 0001:00222924       fPrintLocation.TfrmPrintLocation.orderGridMouseDown
+ 0001:00222990       fPrintLocation.TfrmPrintLocation.pnlFieldsResize
+ 0001:0022313C       fPrintLocation.TfrmPrintLocation.PrintLocation
+ 0001:00223504       fPrintLocation.TfrmPrintLocation.ProcessClinicOrders
+ 0001:00223634       fPrintLocation.TfrmPrintLocation.rpcChangeOrderLocation
+ 0001:002236F8       fPrintLocation.PlaceControl
+ 0001:00223784       fPrintLocation.SynchCombo
+ 0001:00223838       fPrintLocation.TfrmPrintLocation.ShowEditor
+ 0001:002238C8       fPrintLocation.TfrmPrintLocation.SwitchEncounterLoction
+ 0001:00223B08       fPrintLocation.TfrmPrintLocation.ValFor
+ 0001:00223BF4       fPrintLocation.Finalization
+ 0001:00223C44       fReview..TfrmReview
+ 0001:002241B0       fReview.TfrmReview.SetCheckBoxStatus
+ 0001:00224210       fReview.TfrmReview.GetCheckBoxStatus
+ 0001:00224318       fReview.TfrmReview.GetNumberOfSelectedOrders
+ 0001:00224370       fReview.ReviewChanges
+ 0001:00224558       fReview.TfrmReview.FormCreate
+ 0001:002246EC       fReview.TfrmReview.AddHeader
+ 0001:00224744       fReview.TfrmReview.AddItem
+ 0001:0022482C       fReview.TfrmReview.AdjustSignatureTop
+ 0001:00224874       fReview.TfrmReview.IsSignatureRequired
+ 0001:002248F4       fReview.TfrmReview.BuildList
+ 0001:00225350       fReview.TfrmReview.BuildFullList
+ 0001:00225358       fReview.TfrmReview.BuildSignList
+ 0001:00225360       fReview.TfrmReview.ItemsAreChecked
+ 0001:002253A0       fReview.TfrmReview.SignRequiredForAny
+ 0001:00225450       fReview.updateAllChilds
+ 0001:00225540       fReview.TfrmReview.lstReviewClickCheck
+ 0001:00225610       fReview.UpdateTextRecord
+ 0001:0022564C       fReview.TfrmReview.lstReviewDrawItem
+ 0001:00225C9C       fReview.TfrmReview.radReleaseClick
+ 0001:00225D84       fReview.TfrmReview.txtESCodeChange
+ 0001:00225E74       fReview.OrdersSignedOrReleased
+ 0001:00225F68       fReview.OrdersToBeSignedOrReleased
+ 0001:00226070       fReview.TfrmReview.cmdOKClick
+ 0001:0022867C       fReview.TfrmReview.CleanupChangesList
+ 0001:002286C0       fReview.TfrmReview.cmdCancelClick
+ 0001:002286C8       fReview.TfrmReview.lstReviewMeasureItem
+ 0001:002287B8       fReview.TfrmReview.FormDestroy
+ 0001:002287DC       fReview.TfrmReview.lstReviewMouseMove
+ 0001:00228B68       fReview.TfrmReview.buDiagnosisClick
+ 0001:00229018       fReview.TfrmReview.lstReviewClick
+ 0001:002291D4       fReview.TfrmReview.Exit1Click
+ 0001:002291DC       fReview.TfrmReview.lstReviewMouseDown
+ 0001:00229358       fReview.TfrmReview.Copy1Click
+ 0001:00229624       fReview.TfrmReview.Paste1Click
+ 0001:00229874       fReview.TfrmReview.ClearDiagnoses1Click
+ 0001:00229930       fReview.TfrmReview.GetNonNilItemCount
+ 0001:0022997C       fReview.TfrmReview.FormShow
+ 0001:00229B68       fReview.TfrmReview.FormKeyDown
+ 0001:00229E3C       fReview.TfrmReview.FormKeyUp
+ 0001:00229E94       fReview.TfrmReview.ShowTreatmentFactorHints
+ 0001:00229F70       fReview.TfrmReview.FormMouseMove
+ 0001:00229F94       fReview.TfrmReview.FormResize
+ 0001:00229FA4       fReview.TfrmReview.FormMouseDown
+ 0001:00229FD4       fReview.TfrmReview.fraCoPayLabel24MouseMove
+ 0001:00229FF0       fReview.TfrmReview.FormClose
+ 0001:0022A0B0       fReview.TfrmReview.SetItemTextToState
+ 0001:0022A268       fReview.TfrmReview.lstReviewKeyUp
+ 0001:0022A27C       fReview.TfrmReview.FormatListForScreenReader
+ 0001:0022A294       fReview.Finalization
+ 0001:0022A300       fEncnt..TfrmEncounter
+ 0001:0022A818       fEncnt.UpdateVisit
+ 0001:0022A828       fEncnt.UpdateVisit
+ 0001:0022A838       fEncnt.UpdateEncounter
+ 0001:0022AB28       fEncnt.TfrmEncounter.FormCreate
+ 0001:0022B094       fEncnt.TfrmEncounter.cboPtProviderNeedData
+ 0001:0022B0E0       fEncnt.TfrmEncounter.pgeVisitChange
+ 0001:0022B340       fEncnt.TfrmEncounter.pgeVisitMouseDown
+ 0001:0022B384       fEncnt.TfrmEncounter.cboNewVisitNeedData
+ 0001:0022B3AC       fEncnt.TfrmEncounter.cmdDateRangeClick
+ 0001:0022B598       fEncnt.TfrmEncounter.cboNewVisitChange
+ 0001:0022B6D0       fEncnt.TfrmEncounter.calVisitDateChange
+ 0001:0022B7B8       fEncnt.TfrmEncounter.calVisitDateExit
+ 0001:0022B90C       fEncnt.TfrmEncounter.cmdOKClick
+ 0001:0022BBE8       fEncnt.TfrmEncounter.cmdCancelClick
+ 0001:0022BBF0       fEncnt.TfrmEncounter.ckbHistoricalClick
+ 0001:0022BBF8       fEncnt.TfrmEncounter.AppShowHint
+ 0001:0022BC38       fEncnt.TfrmEncounter.FormDestroy
+ 0001:0022BC3C       fEncnt.TfrmEncounter.SetVisitCat
+ 0001:0022BC8C       fEncnt.TfrmEncounter.AllowAutoFocusChange
+ 0001:0022BCC8       fEncnt.TfrmEncounter.FormClose
+ 0001:0022BCEC       fEncnt.TfrmEncounter.lstAdmitChange
+ 0001:0022BE04       fEncnt.TfrmEncounter.lstClinicChange
+ 0001:0022C010       fEncnt.TfrmEncounter.FormResize
+ 0001:0022C0D4       fEncnt.TfrmEncounter.FormShow
+ 0001:0022C1B4       fEncnt.Finalization
+ 0001:0022C1F0       fNotes..TfrmNotes
+ 0001:0022D770       fNotes.TfrmNotes.AllowContextChange
+ 0001:0022DAFC       fNotes.TfrmNotes.LstNotesToPrint
+ 0001:0022DC58       fNotes.TfrmNotes.ClearPtData
+ 0001:0022DD30       fNotes.TfrmNotes.DisplayPage
+ 0001:0022DF10       fNotes.TfrmNotes.RequestPrint
+ 0001:0022E0D4       fNotes.TfrmNotes.RequestMultiplePrint
+ 0001:0022E2AC       fNotes.TfrmNotes.SetFontSize
+ 0001:0022E2F8       fNotes.TfrmNotes.mnuChartTabClick
+ 0001:0022E318       fNotes.TfrmNotes.ClearEditControls
+ 0001:0022E460       fNotes.TfrmNotes.ShowPCEControls
+ 0001:0022E4D0       fNotes.TfrmNotes.DisplayPCE
+ 0001:0022E934       fNotes.TfrmNotes.GetTitleText
+ 0001:0022EAB0       fNotes.TfrmNotes.LacksRequiredForCreate
+ 0001:0022EC04       fNotes.TfrmNotes.VerifyNoteTitle
+ 0001:0022ECC4       fNotes.TfrmNotes.SetSubjectVisible
+ 0001:0022ED70       fNotes.TfrmNotes.LockConsultRequest
+ 0001:0022EEB0       fNotes.TfrmNotes.LockConsultRequestAndNote
+ 0001:0022F088       fNotes.TfrmNotes.UnlockConsultRequest
+ 0001:0022F118       fNotes.TfrmNotes.ActiveEditOf
+ 0001:0022F1A4       fNotes.TfrmNotes.InsertNewNote
+ 0001:0022FAF4       fNotes.TfrmNotes.InsertAddendum
+ 0001:00230218       fNotes.TfrmNotes.LoadForEdit
+ 0001:00230750       fNotes.TfrmNotes.SaveEditedNote
+ 0001:00230CC8       fNotes.TfrmNotes.SaveCurrentNote
+ 0001:00230CF0       fNotes.TfrmNotes.FormCreate
+ 0001:00230E04       fNotes.TfrmNotes.pnlRightResize
+ 0001:00230E34       fNotes.TfrmNotes.pnlWriteResize
+ 0001:00230F44       fNotes.TfrmNotes.lstNotesClick
+ 0001:00231458       fNotes.TfrmNotes.cmdNewNoteClick
+ 0001:00231474       fNotes.UpdateEncounterInfo
+ 0001:00231564       fNotes.TfrmNotes.cmdPCEClick
+ 0001:00231660       fNotes.TfrmNotes.mnuActChangeClick
+ 0001:002316A4       fNotes.AssignBoilerText
+ 0001:00231764       fNotes.TfrmNotes.mnuActLoadBoilerClick
+ 0001:00231A6C       fNotes.TfrmNotes.cmdChangeClick
+ 0001:00232448       fNotes.TfrmNotes.memNewNoteChange
+ 0001:00232464       fNotes.TfrmNotes.pnlFieldsResize
+ 0001:002324F8       fNotes.TfrmNotes.DoAutoSave
+ 0001:00232820       fNotes.TfrmNotes.timAutoSaveTimer
+ 0001:00232840       fNotes.TfrmNotes.mnuViewClick
+ 0001:002331C8       fNotes.TfrmNotes.StartNewEdit
+ 0001:002335F0       fNotes.TfrmNotes.mnuActNewClick
+ 0001:002336F0       fNotes.TfrmNotes.mnuActAddIDEntryClick
+ 0001:00233868       fNotes.TfrmNotes.mnuActAddendClick
+ 0001:00233B10       fNotes.TfrmNotes.mnuActDetachFromIDParentClick
+ 0001:00233ED4       fNotes.TfrmNotes.mnuActSignListClick
+ 0001:00234274       fNotes.TfrmNotes.RemovePCEFromChanges
+ 0001:0023449C       fNotes.TfrmNotes.mnuActDeleteClick
+ 0001:002349D4       fNotes.TfrmNotes.mnuActEditClick
+ 0001:00234B3C       fNotes.TfrmNotes.mnuActSaveClick
+ 0001:00234CA4       fNotes.TfrmNotes.mnuActSignClick
+ 0001:00235568       fNotes.TfrmNotes.SaveSignItem
+ 0001:00235AB8       fNotes.TfrmNotes.popNoteMemoPopup
+ 0001:00235DA4       fNotes.TfrmNotes.popNoteMemoCutClick
+ 0001:00235DC4       fNotes.TfrmNotes.popNoteMemoCopyClick
+ 0001:00235DE4       fNotes.TfrmNotes.popNoteMemoPasteClick
+ 0001:00235E50       fNotes.TfrmNotes.popNoteMemoReformatClick
+ 0001:00235E84       fNotes.TfrmNotes.popNoteMemoSaveContinueClick
+ 0001:00235EAC       fNotes.TfrmNotes.popNoteMemoFindClick
+ 0001:00235F50       fNotes.TfrmNotes.dlgFindTextFind
+ 0001:00235F84       fNotes.TfrmNotes.popNoteMemoReplaceClick
+ 0001:00236030       fNotes.TfrmNotes.dlgReplaceTextFind
+ 0001:00236064       fNotes.TfrmNotes.dlgReplaceTextReplace
+ 0001:00236098       fNotes.TfrmNotes.popNoteMemoSpellClick
+ 0001:00236118       fNotes.TfrmNotes.popNoteMemoGrammarClick
+ 0001:00236198       fNotes.TfrmNotes.popNoteMemoViewCsltClick
+ 0001:00236300       fNotes.TfrmNotes.mnuViewDetailClick
+ 0001:0023642C       fNotes.TfrmNotes.FormClose
+ 0001:00236540       fNotes.TfrmNotes.mnuActIdentifyAddlSignersClick
+ 0001:00236948       fNotes.TfrmNotes.popNoteMemoAddlSignClick
+ 0001:00236964       fNotes.TfrmNotes.ProcessNotifications
+ 0001:00236DCC       fNotes.TfrmNotes.SetViewContext
+ 0001:00236FDC       fNotes.TfrmNotes.mnuViewSaveAsDefaultClick
+ 0001:0023720C       fNotes.TfrmNotes.mnuViewReturntoDefaultClick
+ 0001:00237230       fNotes.TfrmNotes.popNoteMemoTemplateClick
+ 0001:00237294       fNotes.TfrmNotes.popNoteListPopup
+ 0001:00237334       fNotes.TfrmNotes.popNoteListExpandAllClick
+ 0001:00237354       fNotes.TfrmNotes.popNoteListCollapseAllClick
+ 0001:002373C8       fNotes.TfrmNotes.popNoteListExpandSelectedClick
+ 0001:00237414       fNotes.TfrmNotes.popNoteListCollapseSelectedClick
+ 0001:00237460       fNotes.TfrmNotes.mnuEditTemplatesClick
+ 0001:00237480       fNotes.TfrmNotes.mnuNewTemplateClick
+ 0001:002374A0       fNotes.TfrmNotes.mnuEditSharedTemplatesClick
+ 0001:002374C0       fNotes.TfrmNotes.mnuNewSharedTemplateClick
+ 0001:002374E0       fNotes.TfrmNotes.mnuOptionsClick
+ 0001:00237570       fNotes.TfrmNotes.SetEditingIndex
+ 0001:002375B8       fNotes.TfrmNotes.CanFinishReminder
+ 0001:002375F8       fNotes.TfrmNotes.FormDestroy
+ 0001:00237634       fNotes.TfrmNotes.GetDrawers
+ 0001:0023764C       fNotes.TfrmNotes.AssignRemForm
+ 0001:002376D4       fNotes.TfrmNotes.mnuEditDialgFieldsClick
+ 0001:002376EC       fNotes.TfrmNotes.LoadNotes
+ 0001:00238144       fNotes.TfrmNotes.UpdateTreeView
+ 0001:002381C4       fNotes.TfrmNotes.tvNotesChange
+ 0001:00238978       fNotes.TfrmNotes.tvNotesCollapsed
+ 0001:002389D4       fNotes.SortByTitle
+ 0001:00238B98       fNotes.SortByDate
+ 0001:00238D5C       fNotes.TfrmNotes.tvNotesExpanded
+ 0001:00238E14       fNotes.TfrmNotes.tvNotesClick
+ 0001:00238E24       fNotes.TfrmNotes.tvNotesDragOver
+ 0001:00238EE8       fNotes.TfrmNotes.tvNotesDragDrop
+ 0001:00238F88       fNotes.TfrmNotes.tvNotesStartDrag
+ 0001:002390CC       fNotes.TfrmNotes.lvNotesColumnClick
+ 0001:002392D0       fNotes.TfrmNotes.lvNotesCompare
+ 0001:0023938C       fNotes.TfrmNotes.lvNotesSelectItem
+ 0001:00239474       fNotes.TfrmNotes.lvNotesResize
+ 0001:00239540       fNotes.TfrmNotes.EnableDisableIDNotes
+ 0001:002395F8       fNotes.TfrmNotes.ShowPCEButtons
+ 0001:002397F0       fNotes.TfrmNotes.mnuIconLegendClick
+ 0001:0023980C       fNotes.TfrmNotes.mnuActAttachtoIDParentClick
+ 0001:00239994       fNotes.TfrmNotes.DoAttachIDChild
+ 0001:00239D94       fNotes.SetDateRangeText
+ 0001:00239EA8       fNotes.TfrmNotes.SetNoteTreeLabel
+ 0001:0023A1F4       fNotes.TfrmNotes.memNewNoteKeyDown
+ 0001:0023A250       fNotes.TfrmNotes.UpdateNoteAuthor
+ 0001:0023A5A4       fNotes.TfrmNotes.sptHorzCanResize
+ 0001:0023A620       fNotes.TfrmNotes.popNoteMemoInsTemplateClick
+ 0001:0023A640       fNotes.TfrmNotes.popNoteMemoPreviewClick
+ 0001:0023A660       fNotes.TfrmNotes.tvNotesExit
+ 0001:0023A6FC       fNotes.TfrmNotes.pnlReadExit
+ 0001:0023A7D8       fNotes.TfrmNotes.cmdNewNoteExit
+ 0001:0023A874       fNotes.TfrmNotes.frmFramePnlPatientExit
+ 0001:0023A960       fNotes.TfrmNotes.FormHide
+ 0001:0023AA0C       fNotes.TfrmNotes.FormShow
+ 0001:0023AB30       fNotes.TfrmNotes.frmDrawerEdtSearchExit
+ 0001:0023AB60       fNotes.TfrmNotes.frmDrawerPnlTemplatesButtonExit
+ 0001:0023ABD8       fNotes.TfrmNotes.frmDrawerPnlEncounterButtonExit
+ 0001:0023AC08       fNotes.TfrmNotes.memNewNoteKeyPress
+ 0001:0023AC30       fNotes.TfrmNotes.memNewNoteKeyUp
+ 0001:0023AD20       fNotes.TfrmNotes.memPCEShowExit
+ 0001:0023AD68       fNotes.TfrmNotes.cmdChangeExit
+ 0001:0023ADA8       fNotes.TfrmNotes.cmdPCEExit
+ 0001:0023ADF4       fNotes.TfrmNotes.ViewInfo
+ 0001:0023AE14       fNotes.TfrmNotes.mnuViewInformationClick
+ 0001:0023AFE4       fNotes.TfrmNotes.UpdateFormForInput
+ 0001:0023B0C4       fNotes.Finalization
+ 0001:0023B12C       fReminderTree..TtvRem508Manager
+ 0001:0023B1DC       fReminderTree..TfrmReminderTree
+ 0001:0023B654       fReminderTree.ViewReminderTree
+ 0001:0023B690       fReminderTree.TfrmReminderTree.FormClose
+ 0001:0023B694       fReminderTree.TfrmReminderTree.FormCreate
+ 0001:0023B7FC       fReminderTree.TfrmReminderTree.LinkTopControls
+ 0001:0023B910       fReminderTree.TfrmReminderTree.RemindersChanged
+ 0001:0023BB14       fReminderTree.IsVis
+ 0001:0023BB44       fReminderTree.TfrmReminderTree.ResetlbItems
+ 0001:0023BD90       fReminderTree.TfrmReminderTree.SyncTopControls
+ 0001:0023BE3C       fReminderTree.TfrmReminderTree.tvRemExpanded
+ 0001:0023BEA0       fReminderTree.TfrmReminderTree.tvRemCollapsed
+ 0001:0023BF04       fReminderTree.TfrmReminderTree.pnlTopResize
+ 0001:0023C064       fReminderTree.TfrmReminderTree.lbRemDrawItem
+ 0001:0023C2A4       fReminderTree.TfrmReminderTree.lbRemChange
+ 0001:0023C2C0       fReminderTree.TfrmReminderTree.lbRemClick
+ 0001:0023C2D0       fReminderTree.TfrmReminderTree.tvRemEnter
+ 0001:0023C300       fReminderTree.TfrmReminderTree.tvRemExit
+ 0001:0023C330       fReminderTree.TfrmReminderTree.hcRemSectionClick
+ 0001:0023C47C       fReminderTree.TfrmReminderTree.SortNode
+ 0001:0023C5E0       fReminderTree.ZForm
+ 0001:0023C668       fReminderTree.TfrmReminderTree.SortData
+ 0001:0023C798       fReminderTree.TfrmReminderTree.tvRemClick
+ 0001:0023C7A0       fReminderTree.TfrmReminderTree.tvRemChange
+ 0001:0023C87C       fReminderTree.TfrmReminderTree.tvRemMouseDown
+ 0001:0023C88C       fReminderTree.TfrmReminderTree.Resync
+ 0001:0023C8F4       fReminderTree.TfrmReminderTree.memEvalClick
+ 0001:0023C9B0       fReminderTree.TfrmReminderTree.EnableActions
+ 0001:0023CB74       fReminderTree.TfrmReminderTree.ProcessedRemindersChanged
+ 0001:0023CB7C       fReminderTree.TfrmReminderTree.memEvalAllClick
+ 0001:0023CB84       fReminderTree.TfrmReminderTree.FormDestroy
+ 0001:0023CC14       fReminderTree.TfrmReminderTree.memRefreshClick
+ 0001:0023CC34       fReminderTree.TfrmReminderTree.memActionClick
+ 0001:0023CC3C       fReminderTree.TfrmReminderTree.memEvalCatClick
+ 0001:0023CC44       fReminderTree.TfrmReminderTree.mnuCoverSheetClick
+ 0001:0023CC54       fReminderTree.TfrmReminderTree.SetFontSize
+ 0001:0023CD78       fReminderTree.TfrmReminderTree.SetRemHeaderSectionWidth
+ 0001:0023CDF0       fReminderTree.TfrmReminderTree.tvRemNodeCaptioning
+ 0001:0023CF24       fReminderTree.TfrmReminderTree.mnuExitClick
+ 0001:0023CF2C       fReminderTree.TtvRem508Manager.Create
+ 0001:0023CF6C       fReminderTree.TtvRem508Manager.getDueDate
+ 0001:0023D018       fReminderTree.TtvRem508Manager.getImgText
+ 0001:0023D068       fReminderTree.TtvRem508Manager.GetItem
+ 0001:0023D070       fReminderTree.TtvRem508Manager.getLastOcc
+ 0001:0023D124       fReminderTree.TtvRem508Manager.getName
+ 0001:0023D178       fReminderTree.TtvRem508Manager.getPriority
+ 0001:0023D214       fReminderTree.TtvRem508Manager.GetValue
+ 0001:0023D2C8       fEditConsult..TfrmEditCslt
+ 0001:0023D8F0       fEditConsult.EditResubmitConsult
+ 0001:0023DB30       fEditConsult.TfrmEditCslt.InitDialog
+ 0001:0023DF08       fEditConsult.SetError
+ 0001:0023DF64       fEditConsult.TfrmEditCslt.Validate
+ 0001:0023E438       fEditConsult.TfrmEditCslt.txtAttnNeedData
+ 0001:0023E460       fEditConsult.TfrmEditCslt.radInpatientClick
+ 0001:0023E550       fEditConsult.TfrmEditCslt.radOutpatientClick
+ 0001:0023E640       fEditConsult.TfrmEditCslt.ControlChange
+ 0001:0023EBB0       fEditConsult.TfrmEditCslt.FormClose
+ 0001:0023EC24       fEditConsult.TfrmEditCslt.cmdAcceptClick
+ 0001:0023ECFC       fEditConsult.TfrmEditCslt.memReasonExit
+ 0001:0023EDC4       fEditConsult.TfrmEditCslt.cmdQuitClick
+ 0001:0023EDD4       fEditConsult.TfrmEditCslt.ValidSave
+ 0001:0023EF38       fEditConsult.TfrmEditCslt.OrderMessage
+ 0001:0023EF98       fEditConsult.TfrmEditCslt.btnCmtCancelClick
+ 0001:0023EFCC       fEditConsult.TfrmEditCslt.btnCmtOtherClick
+ 0001:0023EFF8       fEditConsult.TfrmEditCslt.cmdLexSearchClick
+ 0001:0023F174       fEditConsult.TfrmEditCslt.SetProvDiagPromptingMode
+ 0001:0023F4EC       fEditConsult.TfrmEditCslt.mnuPopProvDxDeleteClick
+ 0001:0023F524       fEditConsult.TfrmEditCslt.popReasonPopup
+ 0001:0023F608       fEditConsult.TfrmEditCslt.popReasonCutClick
+ 0001:0023F614       fEditConsult.TfrmEditCslt.popReasonCopyClick
+ 0001:0023F620       fEditConsult.TfrmEditCslt.popReasonPasteClick
+ 0001:0023F674       fEditConsult.TfrmEditCslt.popReasonReformatClick
+ 0001:0023F6A4       fEditConsult.TfrmEditCslt.memCommentKeyUp
+ 0001:0023F750       fEditConsult.TfrmEditCslt.memCommentKeyDown
+ 0001:0023F79C       fEditConsult.TfrmEditCslt.memCommentKeyPress
+ 0001:0023F7AC       fEditConsult.Finalization
+ 0001:0023F80C       fEditProc..TfrmEditProc
+ 0001:0023FE78       fEditProc.EditResubmitProcedure
+ 0001:0024009C       fEditProc.TfrmEditProc.InitDialog
+ 0001:00240430       fEditProc.SetError
+ 0001:0024048C       fEditProc.TfrmEditProc.Validate
+ 0001:00240848       fEditProc.TfrmEditProc.txtAttnNeedData
+ 0001:00240870       fEditProc.TfrmEditProc.cboProcNeedData
+ 0001:00240898       fEditProc.TfrmEditProc.radInpatientClick
+ 0001:00240968       fEditProc.TfrmEditProc.radOutpatientClick
+ 0001:00240A38       fEditProc.TfrmEditProc.ControlChange
+ 0001:00241070       fEditProc.TfrmEditProc.FormClose
+ 0001:002410E4       fEditProc.TfrmEditProc.ValidSave
+ 0001:00241248       fEditProc.TfrmEditProc.cboProcSelect
+ 0001:00241408       fEditProc.TfrmEditProc.memReasonExit
+ 0001:002414D0       fEditProc.TfrmEditProc.cmdAcceptClick
+ 0001:00241548       fEditProc.TfrmEditProc.cmdQuitClick
+ 0001:00241558       fEditProc.TfrmEditProc.OrderMessage
+ 0001:002415B8       fEditProc.TfrmEditProc.btnCmtCancelClick
+ 0001:002415EC       fEditProc.TfrmEditProc.btnCmtOtherClick
+ 0001:00241618       fEditProc.TfrmEditProc.cmdLexSearchClick
+ 0001:00241774       fEditProc.TfrmEditProc.SetProvDiagPromptingMode
+ 0001:00241AC4       fEditProc.TfrmEditProc.mnuPopProvDxDeleteClick
+ 0001:00241AFC       fEditProc.TfrmEditProc.popReasonPopup
+ 0001:00241BE0       fEditProc.TfrmEditProc.popReasonCutClick
+ 0001:00241BEC       fEditProc.TfrmEditProc.popReasonCopyClick
+ 0001:00241BF8       fEditProc.TfrmEditProc.popReasonPasteClick
+ 0001:00241C4C       fEditProc.TfrmEditProc.popReasonReformatClick
+ 0001:00241C7C       fEditProc.TfrmEditProc.memCommentKeyUp
+ 0001:00241D24       fEditProc.TfrmEditProc.memReasonKeyDown
+ 0001:00241D70       fEditProc.TfrmEditProc.memReasonKeyPress
+ 0001:00241D80       fEditProc.Finalization
+ 0001:00241DE0       fCsltNote..TfrmCsltNote
+ 0001:00242008       fCsltNote.SelectNoteForProcessing
+ 0001:0024294C       fCsltNote.TfrmCsltNote.cmdCancelClick
+ 0001:00242974       fCsltNote.TfrmCsltNote.cmdOKClick
+ 0001:00242A98       fODProc..TfrmODProc
+ 0001:00243060       fODProc.TfrmODProc.FormCreate
+ 0001:002431D0       fODProc.TfrmODProc.InitDialog
+ 0001:0024342C       fODProc.TfrmODProc.SetupDialog
+ 0001:002437C8       fODProc.SetError
+ 0001:00243824       fODProc.TfrmODProc.Validate
+ 0001:00243B6C       fODProc.TfrmODProc.txtAttnNeedData
+ 0001:00243B94       fODProc.TfrmODProc.cboProcNeedData
+ 0001:00243BBC       fODProc.TfrmODProc.radInpatientClick
+ 0001:00243C80       fODProc.TfrmODProc.radOutpatientClick
+ 0001:00243D44       fODProc.TfrmODProc.ControlChange
+ 0001:00244390       fODProc.TfrmODProc.cboProcSelect
+ 0001:00244A34       fODProc.TfrmODProc.memReasonExit
+ 0001:00244AFC       fODProc.TfrmODProc.ReadServerVariables
+ 0001:00244CAC       fODProc.TfrmODProc.cmdLexSearchClick
+ 0001:00244E08       fODProc.TfrmODProc.SetProvDiagPromptingMode
+ 0001:00245158       fODProc.TfrmODProc.cboServiceChange
+ 0001:00245160       fODProc.TfrmODProc.mnuPopProvDxDeleteClick
+ 0001:00245190       fODProc.TfrmODProc.txtProvDiagChange
+ 0001:00245208       fODProc.TfrmODProc.popReasonPopup
+ 0001:002452EC       fODProc.TfrmODProc.popReasonCutClick
+ 0001:002452F8       fODProc.TfrmODProc.popReasonCopyClick
+ 0001:00245304       fODProc.TfrmODProc.popReasonPasteClick
+ 0001:00245358       fODProc.TfrmODProc.popReasonReformatClick
+ 0001:00245378       fODProc.EnableReason
+ 0001:002453F4       fODProc.DisableReason
+ 0001:00245480       fODProc.TfrmODProc.SetupReasonForRequest
+ 0001:00245638       fODProc.TfrmODProc.ShowPrerequisites
+ 0001:002457A8       fODProc.TfrmODProc.DefaultReasonForRequest
+ 0001:002459D0       fODProc.TfrmODProc.memReasonKeyUp
+ 0001:00245A7C       fODProc.TfrmODProc.GetProvDxandValidateCode
+ 0001:00245D30       fODProc.TfrmODProc.SetFontSize
+ 0001:00245D4C       fODProc.TfrmODProc.DoSetFontSize
+ 0001:00245D84       fODProc.TfrmODProc.memReasonKeyDown
+ 0001:00245DD0       fODProc.TfrmODProc.memReasonKeyPress
+ 0001:00245DE0       fODProc.TfrmODProc.FormResize
+ 0001:00245E08       fODProc.TfrmODProc.FormClose
+ 0001:00245E24       fODProc.Finalization
+ 0001:00245E70       fConsultAct..TfrmConsultAction
+ 0001:002462C8       fConsultAct.SetActionContext
+ 0001:0024654C       fConsultAct.TfrmConsultAction.SetupForward
+ 0001:00246B30       fConsultAct.TfrmConsultAction.SetupAddComment
+ 0001:00246BD4       fConsultAct.TfrmConsultAction.SetupSchedule
+ 0001:00246D30       fConsultAct.TfrmConsultAction.SetupAdminComplete
+ 0001:00246E44       fConsultAct.TfrmConsultAction.SetupSigFindings
+ 0001:00246EC0       fConsultAct.TfrmConsultAction.SigFindPanelShow
+ 0001:00247000       fConsultAct.TfrmConsultAction.SetupReceive
+ 0001:002470B4       fConsultAct.TfrmConsultAction.SetupOther
+ 0001:002471E8       fConsultAct.TfrmConsultAction.NewPersonNeedData
+ 0001:00247218       fConsultAct.TfrmConsultAction.ProviderNeedData
+ 0001:00247248       fConsultAct.TfrmConsultAction.cmdCancelClick
+ 0001:00247258       fConsultAct.TfrmConsultAction.cmdOKClick
+ 0001:00247D64       fConsultAct.TfrmConsultAction.ckAlertClick
+ 0001:00247D94       fConsultAct.TfrmConsultAction.treServiceChange
+ 0001:00247E58       fConsultAct.TfrmConsultAction.treServiceExit
+ 0001:00247E5C       fConsultAct.TfrmConsultAction.cboServiceSelect
+ 0001:00247F9C       fConsultAct.TfrmConsultAction.ShowAutoAlertText
+ 0001:00248184       fConsultAct.Finalization
+ 0001:002481D0       fConsultsView..TfrmConsultsView
+ 0001:00248568       fConsultsView.SelectConsultsView
+ 0001:00248A2C       fConsultsView.TfrmConsultsView.cmdOKClick
+ 0001:00248E6C       fConsultsView.TfrmConsultsView.cmdCancelClick
+ 0001:00248E74       fConsultsView.TfrmConsultsView.treServiceChange
+ 0001:00248F04       fConsultsView.TfrmConsultsView.cboServiceSelect
+ 0001:0024900C       fConsultsView.TfrmConsultsView.popStatusSelectNoneClick
+ 0001:0024904C       fConsultsView.Finalization
+ 0001:00249090       fConsultBSt..TfrmConsultsByStatus
+ 0001:00249310       fConsultBSt.SelectStatus
+ 0001:0024952C       fConsultBSt.TfrmConsultsByStatus.cmdCancelClick
+ 0001:00249534       fConsultBSt.TfrmConsultsByStatus.cmdOKClick
+ 0001:0024979C       fConsultBD..TfrmConsultsByDate
+ 0001:00249A78       fConsultBD.SelectConsultDateRange
+ 0001:00249C90       fConsultBD.TfrmConsultsByDate.cmdOKClick
+ 0001:00249E0C       fConsultBD.TfrmConsultsByDate.cmdCancelClick
+ 0001:00249E14       fConsultBD.TfrmConsultsByDate.calBeginDateKeyPress
+ 0001:00249E24       fConsultBD.TfrmConsultsByDate.calEndDateKeyPress
+ 0001:00249E34       fConsultBS..TfrmConsultsByService
+ 0001:0024A100       fConsultBS.SelectService
+ 0001:0024A458       fConsultBS.TfrmConsultsByService.cmdCancelClick
+ 0001:0024A460       fConsultBS.TfrmConsultsByService.cmdOKClick
+ 0001:0024A5B4       fConsultBS.TfrmConsultsByService.treServiceChange
+ 0001:0024A644       fConsultBS.TfrmConsultsByService.cboServiceSelect
+ 0001:0024A74C       fConsultBS.Finalization
+ 0001:0024A790       fConsults..TfrmConsults
+ 0001:0024C2A8       fConsults.TfrmConsults.AllowContextChange
+ 0001:0024C540       fConsults.TfrmConsults.ClearPtData
+ 0001:0024C638       fConsults.TfrmConsults.SetViewContext
+ 0001:0024C778       fConsults.TfrmConsults.DisplayPage
+ 0001:0024C960       fConsults.TfrmConsults.SetFontSize
+ 0001:0024C9C4       fConsults.TfrmConsults.mnuChartTabClick
+ 0001:0024C9D4       fConsults.TfrmConsults.ClearEditControls
+ 0001:0024CABC       fConsults.TfrmConsults.CompleteConsult
+ 0001:0024D48C       fConsults.TfrmConsults.InsertAddendum
+ 0001:0024DAD0       fConsults.TfrmConsults.LoadForEdit
+ 0001:0024E1E0       fConsults.SaveOrAbort
+ 0001:0024E2E8       fConsults.TfrmConsults.SaveEditedConsult
+ 0001:0024E94C       fConsults.TfrmConsults.SaveCurrentNote
+ 0001:0024E95C       fConsults.TfrmConsults.pnlRightExit
+ 0001:0024E9AC       fConsults.TfrmConsults.pnlRightResize
+ 0001:0024E9F4       fConsults.TfrmConsults.lstConsultsClick
+ 0001:0024F00C       fConsults.TfrmConsults.mnuActNewConsultRequestClick
+ 0001:0024F1F8       fConsults.TfrmConsults.mnuActNewProcedureClick
+ 0001:0024F390       fConsults.TfrmConsults.cmdNewConsultClick
+ 0001:0024F398       fConsults.TfrmConsults.cmdNewConsultExit
+ 0001:0024F3AC       fConsults.TfrmConsults.cmdNewProcClick
+ 0001:0024F3B4       fConsults.TfrmConsults.NewPersonNeedData
+ 0001:0024F3E4       fConsults.TfrmConsults.memResultChange
+ 0001:0024F3EC       fConsults.TfrmConsults.mnuViewClick
+ 0001:0024F674       fConsults.TfrmConsults.mnuActCompleteClick
+ 0001:0024FA68       fConsults.TfrmConsults.mnuActAddIDEntryClick
+ 0001:0024FB60       fConsults.TfrmConsults.mnuActMakeAddendumClick
+ 0001:0024FD94       fConsults.TfrmConsults.mnuActDetachFromIDParentClick
+ 0001:00250160       fConsults.TfrmConsults.mnuActSignatureListClick
+ 0001:00250550       fConsults.TfrmConsults.mnuActNoteDeleteClick
+ 0001:00250B14       fConsults.TfrmConsults.mnuActNoteEditClick
+ 0001:00250BF8       fConsults.TfrmConsults.mnuActSignatureSaveClick
+ 0001:00250ED8       fConsults.TfrmConsults.mnuActSignatureSignClick
+ 0001:00251878       fConsults.TfrmConsults.SaveSignItem
+ 0001:00251F60       fConsults.TfrmConsults.cmdPCEClick
+ 0001:00251FA4       fConsults.TfrmConsults.mnuActConsultClick
+ 0001:0025230C       fConsults.TfrmConsults.UpdateList
+ 0001:002526C8       fConsults.TfrmConsults.SetActionMenus
+ 0001:00252A10       fConsults.TfrmConsults.SetResultMenus
+ 0001:002530C4       fConsults.TfrmConsults.DisplayPCE
+ 0001:00253658       fConsults.TfrmConsults.ShowPCEControls
+ 0001:002536A4       fConsults.TfrmConsults.RemovePCEFromChanges
+ 0001:002538A0       fConsults.TfrmConsults.lstNotesClick
+ 0001:00253E6C       fConsults.TfrmConsults.popNoteMemoPopup
+ 0001:002540A4       fConsults.TfrmConsults.popNoteMemoCutClick
+ 0001:002540B0       fConsults.TfrmConsults.popNoteMemoCopyClick
+ 0001:002540BC       fConsults.TfrmConsults.popNoteMemoPasteClick
+ 0001:00254110       fConsults.TfrmConsults.popNoteMemoReformatClick
+ 0001:00254130       fConsults.TfrmConsults.popNoteMemoFindClick
+ 0001:002541BC       fConsults.TfrmConsults.dlgFindTextFind
+ 0001:002541DC       fConsults.TfrmConsults.dlgReplaceTextFind
+ 0001:002541FC       fConsults.TfrmConsults.dlgReplaceTextReplace
+ 0001:0025421C       fConsults.TfrmConsults.popNoteMemoReplaceClick
+ 0001:002542B0       fConsults.TfrmConsults.popNoteMemoSpellClick
+ 0001:0025432C       fConsults.TfrmConsults.popNoteMemoGrammarClick
+ 0001:002543A8       fConsults.TfrmConsults.RequestPrint
+ 0001:00254560       fConsults.TfrmConsults.RequestMultiplePrint
+ 0001:00254728       fConsults.TfrmConsults.mnuActDisplayResultsClick
+ 0001:002547C8       fConsults.TfrmConsults.mnuActDisplaySF513Click
+ 0001:0025499C       fConsults.TfrmConsults.pnlResultsResize
+ 0001:00254A28       fConsults.TfrmConsults.NotifyOrder
+ 0001:00254B18       fConsults.TfrmConsults.mnuActPrintSF513Click
+ 0001:00254B58       fConsults.TfrmConsults.FormCreate
+ 0001:00254CC8       fConsults.TfrmConsults.mnuActDisplayDetailsClick
+ 0001:00254D38       fConsults.TfrmConsults.FormClose
+ 0001:00254E34       fConsults.TfrmConsults.mnuActIdentifyAddlSignersClick
+ 0001:0025520C       fConsults.TfrmConsults.popNoteMemoAddlSignClick
+ 0001:00255214       fConsults.TfrmConsults.ProcessNotifications
+ 0001:00255B4C       fConsults.TfrmConsults.mnuActEditResubmitClick
+ 0001:00255CE0       fConsults.TfrmConsults.EnableDisableOrdering
+ 0001:00255D1C       fConsults.TfrmConsults.UMNewOrder
+ 0001:00255D2C       fConsults.TfrmConsults.cmdEditResubmitClick
+ 0001:00255D34       fConsults.TfrmConsults.cmdEditResubmitExit
+ 0001:00255D3C       fConsults.TfrmConsults.mnuViewSaveAsDefaultClick
+ 0001:00255DF0       fConsults.TfrmConsults.mnuViewReturntoDefaultClick
+ 0001:00255E3C       fConsults.TfrmConsults.popNoteMemoTemplateClick
+ 0001:00255E94       fConsults.TfrmConsults.mnuEditTemplatesClick
+ 0001:00255EA0       fConsults.TfrmConsults.mnuNewTemplateClick
+ 0001:00255EAC       fConsults.TfrmConsults.pnlLeftExit
+ 0001:00255F08       fConsults.TfrmConsults.pnlLeftResize
+ 0001:00255F5C       fConsults.TfrmConsults.mnuOptionsClick
+ 0001:00255FD0       fConsults.TfrmConsults.mnuEditSharedTemplatesClick
+ 0001:00255FDC       fConsults.TfrmConsults.mnuNewSharedTemplateClick
+ 0001:00255FE8       fConsults.TfrmConsults.mnuActNotePrintClick
+ 0001:00256198       fConsults.TfrmConsults.popNoteMemoPrintClick
+ 0001:002561A0       fConsults.TfrmConsults.FormDestroy
+ 0001:002561D4       fConsults.TfrmConsults.GetDrawers
+ 0001:002561DC       fConsults.TfrmConsults.SetEditingIndex
+ 0001:00256204       fConsults.TfrmConsults.LockConsultRequest
+ 0001:00256324       fConsults.TfrmConsults.LockConsultRequestAndNote
+ 0001:00256500       fConsults.TfrmConsults.UnlockConsultRequest
+ 0001:00256580       fConsults.TfrmConsults.ActiveEditOf
+ 0001:0025664C       fConsults.TfrmConsults.StartNewEdit
+ 0001:00256A9C       fConsults.TfrmConsults.LacksRequiredForCreate
+ 0001:00256B78       fConsults.TfrmConsults.LacksClinProcFields
+ 0001:00256D64       fConsults.TfrmConsults.LacksClinProcFieldsForSignature
+ 0001:00256E2C       fConsults.TfrmConsults.GetTitleText
+ 0001:00256EA8       fConsults.TfrmConsults.VerifyNoteTitle
+ 0001:00256F54       fConsults.TfrmConsults.SetSubjectVisible
+ 0001:00256FC8       fConsults.TfrmConsults.timAutoSaveTimer
+ 0001:00256FD4       fConsults.TfrmConsults.DoAutoSave
+ 0001:002572F8       fConsults.TfrmConsults.DoLeftPanelCustomShiftTab
+ 0001:00257330       fConsults.TfrmConsults.cmdChangeClick
+ 0001:002579E0       fConsults.TfrmConsults.pnlFieldsResize
+ 0001:00257A38       fConsults.TfrmConsults.AssignRemForm
+ 0001:00257A84       fConsults.TfrmConsults.CanFinishReminder
+ 0001:00257AB0       fConsults.TfrmConsults.mnuActChangeClick
+ 0001:00257AE4       fConsults.AssignBoilerText
+ 0001:00257B94       fConsults.TfrmConsults.mnuActLoadBoilerClick
+ 0001:00257E98       fConsults.TfrmConsults.popNoteMemoSaveContinueClick
+ 0001:00257EAC       fConsults.TfrmConsults.ProcessMedResults
+ 0001:002582A8       fConsults.TfrmConsults.mnuActAttachMedClick
+ 0001:002582C4       fConsults.TfrmConsults.mnuActRemoveMedClick
+ 0001:002582E0       fConsults.TfrmConsults.mnuEditDialgFieldsClick
+ 0001:002582E8       fConsults.TfrmConsults.UpdateNoteTreeView
+ 0001:00258414       fConsults.TfrmConsults.tvCsltNotesChange
+ 0001:0025873C       fConsults.TfrmConsults.tvCsltNotesCollapsed
+ 0001:00258780       fConsults.SortByTitle
+ 0001:00258924       fConsults.SortByDate
+ 0001:00258AC8       fConsults.TfrmConsults.tvCsltNotesExpanded
+ 0001:00258B5C       fConsults.TfrmConsults.tvCsltNotesDragOver
+ 0001:00258BF4       fConsults.TfrmConsults.tvCsltNotesDragDrop
+ 0001:00258C80       fConsults.TfrmConsults.tvCsltNotesStartDrag
+ 0001:00258D64       fConsults.TfrmConsults.popNoteListExpandAllClick
+ 0001:00258D9C       fConsults.TfrmConsults.popNoteListCollapseAllClick
+ 0001:00258E60       fConsults.TfrmConsults.popNoteListExpandSelectedClick
+ 0001:00258EBC       fConsults.TfrmConsults.popNoteListCollapseSelectedClick
+ 0001:00258F18       fConsults.TfrmConsults.EnableDisableIDNotes
+ 0001:00258FA0       fConsults.TfrmConsults.tvCsltNotesClick
+ 0001:00259038       fConsults.TfrmConsults.LoadConsults
+ 0001:00259318       fConsults.TfrmConsults.UpdateConsultsTreeView
+ 0001:00259380       fConsults.TfrmConsults.tvConsultsExpanded
+ 0001:002593B0       fConsults.TfrmConsults.tvConsultsCollapsed
+ 0001:002593E0       fConsults.TfrmConsults.tvConsultsClick
+ 0001:002594BC       fConsults.TfrmConsults.tvConsultsChange
+ 0001:00259798       fConsults.TfrmConsults.popNoteListPopup
+ 0001:002597E4       fConsults.TfrmConsults.mnuIconLegendClick
+ 0001:002597F0       fConsults.TfrmConsults.mnuActAttachtoIDParentClick
+ 0001:00259964       fConsults.TfrmConsults.DoAttachIDChild
+ 0001:00259D34       fConsults.TfrmConsults.tvConsultsKeyUp
+ 0001:00259D64       fConsults.TfrmConsults.UserIsSigner
+ 0001:00259E64       fConsults.TfrmConsults.memResultsKeyDown
+ 0001:00259F10       fConsults.TfrmConsults.sptHorzCanResize
+ 0001:00259F70       fConsults.TfrmConsults.popNoteMemoPreviewClick
+ 0001:00259F7C       fConsults.TfrmConsults.popNoteMemoInsTemplateClick
+ 0001:00259F88       fConsults.TfrmConsults.LstConsultsToPrint
+ 0001:0025A0B0       fConsults.TfrmConsults.tvConsultsExit
+ 0001:0025A0E0       fConsults.TfrmConsults.frmFramePnlPatientExit
+ 0001:0025A118       fConsults.TfrmConsults.FormHide
+ 0001:0025A140       fConsults.TfrmConsults.FormShow
+ 0001:0025A278       fConsults.TfrmConsults.ViewInfo
+ 0001:0025A288       fConsults.TfrmConsults.mnuViewInformationClick
+ 0001:0025A410       fConsults.Finalization
+ 0001:0025A4BC       fDCSummProps..TfrmDCSummProperties
+ 0001:0025AA2C       fDCSummProps.ExecuteDCSummProperties
+ 0001:0025B0E4       fDCSummProps.TfrmDCSummProperties.FormShow
+ 0001:0025B0EC       fDCSummProps.TfrmDCSummProperties.UMDelayEvent
+ 0001:0025B0F0       fDCSummProps.TfrmDCSummProperties.SetCosignerRequired
+ 0001:0025B118       fDCSummProps.TfrmDCSummProperties.ShowAdmissionList
+ 0001:0025B334       fDCSummProps.TfrmDCSummProperties.cboNewTitleNeedData
+ 0001:0025B364       fDCSummProps.TfrmDCSummProperties.cboNewTitleEnter
+ 0001:0025B370       fDCSummProps.TfrmDCSummProperties.cboNewTitleMouseClick
+ 0001:0025B42C       fDCSummProps.TfrmDCSummProperties.cboNewTitleExit
+ 0001:0025B45C       fDCSummProps.TfrmDCSummProperties.cboAuthorNeedData
+ 0001:0025B48C       fDCSummProps.TfrmDCSummProperties.cboAttendingNeedData
+ 0001:0025B500       fDCSummProps.TfrmDCSummProperties.cboAuthorEnter
+ 0001:0025B518       fDCSummProps.TfrmDCSummProperties.cboAuthorMouseClick
+ 0001:0025B53C       fDCSummProps.TfrmDCSummProperties.cboAuthorExit
+ 0001:0025B568       fDCSummProps.TfrmDCSummProperties.cboAttendingExit
+ 0001:0025B650       fDCSummProps.TfrmDCSummProperties.cmdOKClick
+ 0001:0025BCA4       fDCSummProps.TfrmDCSummProperties.cmdCancelClick
+ 0001:0025BCB4       fDCSummProps.TfrmDCSummProperties.cboNewTitleDropDownClose
+ 0001:0025BCB8       fDCSummProps.TfrmDCSummProperties.lstAdmissionsChange
+ 0001:0025C234       fDCSummProps.TfrmDCSummProperties.cboNewTitleChange
+ 0001:0025C2E4       fDCSummProps.TfrmDCSummProperties.cboNewTitleDblClick
+ 0001:0025C2EC       fDCSummProps.TfrmDCSummProperties.FormClose
+ 0001:0025C2F4       fDCSumm..TfrmDCSumm
+ 0001:0025D72C       fDCSumm.TfrmDCSumm.AllowContextChange
+ 0001:0025D9E0       fDCSumm.TfrmDCSumm.LstSummsToPrint
+ 0001:0025DB08       fDCSumm.TfrmDCSumm.ClearPtData
+ 0001:0025DBB0       fDCSumm.TfrmDCSumm.DisplayPage
+ 0001:0025DD58       fDCSumm.TfrmDCSumm.RequestPrint
+ 0001:0025DF18       fDCSumm.TfrmDCSumm.RequestMultiplePrint
+ 0001:0025E0EC       fDCSumm.TfrmDCSumm.SetFontSize
+ 0001:0025E150       fDCSumm.TfrmDCSumm.mnuChartTabClick
+ 0001:0025E160       fDCSumm.TfrmDCSumm.ClearEditControls
+ 0001:0025E25C       fDCSumm.TfrmDCSumm.ShowPCEControls
+ 0001:0025E2A8       fDCSumm.TfrmDCSumm.DisplayPCE
+ 0001:0025E734       fDCSumm.TfrmDCSumm.InsertNewSumm
+ 0001:0025F03C       fDCSumm.TfrmDCSumm.InsertAddendum
+ 0001:0025F668       fDCSumm.TfrmDCSumm.LoadForEdit
+ 0001:0025FB08       fDCSumm.TfrmDCSumm.TitleText
+ 0001:0025FBFC       fDCSumm.TfrmDCSumm.SaveEditedSumm
+ 0001:00260398       fDCSumm.TfrmDCSumm.SaveCurrentSumm
+ 0001:002603A8       fDCSumm.TfrmDCSumm.pnlRightResize
+ 0001:002603C8       fDCSumm.TfrmDCSumm.pnlWriteResize
+ 0001:00260478       fDCSumm.TfrmDCSumm.lstSummsClick
+ 0001:00260780       fDCSumm.TfrmDCSumm.cmdNewSummClick
+ 0001:00260788       fDCSumm.TfrmDCSumm.cmdPCEClick
+ 0001:002607CC       fDCSumm.TfrmDCSumm.cmdOrdersClick
+ 0001:002607D0       fDCSumm.TfrmDCSumm.memNewSummChange
+ 0001:002607D8       fDCSumm.TfrmDCSumm.mnuViewClick
+ 0001:00260EB4       fDCSumm.TfrmDCSumm.StartNewEdit
+ 0001:0026127C       fDCSumm.TfrmDCSumm.mnuActNewClick
+ 0001:0026129C       fDCSumm.TfrmDCSumm.mnuActAddIDEntryClick
+ 0001:002613FC       fDCSumm.TfrmDCSumm.mnuActAddendClick
+ 0001:00261670       fDCSumm.TfrmDCSumm.mnuActDetachFromIDParentClick
+ 0001:002619FC       fDCSumm.TfrmDCSumm.mnuActSignListClick
+ 0001:00261D7C       fDCSumm.TfrmDCSumm.RemovePCEFromChanges
+ 0001:00261F78       fDCSumm.TfrmDCSumm.mnuActDeleteClick
+ 0001:00262454       fDCSumm.TfrmDCSumm.mnuActEditClick
+ 0001:002625AC       fDCSumm.TfrmDCSumm.mnuActSaveClick
+ 0001:002626F8       fDCSumm.TfrmDCSumm.mnuActSignClick
+ 0001:00262ECC       fDCSumm.TfrmDCSumm.SaveSignItem
+ 0001:002633B8       fDCSumm.TfrmDCSumm.popSummMemoPopup
+ 0001:002635F0       fDCSumm.TfrmDCSumm.popSummMemoCutClick
+ 0001:002635FC       fDCSumm.TfrmDCSumm.popSummMemoCopyClick
+ 0001:00263608       fDCSumm.TfrmDCSumm.popSummMemoPasteClick
+ 0001:0026365C       fDCSumm.TfrmDCSumm.popSummMemoReformatClick
+ 0001:0026367C       fDCSumm.TfrmDCSumm.popSummMemoFindClick
+ 0001:00263708       fDCSumm.TfrmDCSumm.dlgFindTextFind
+ 0001:00263728       fDCSumm.TfrmDCSumm.popSummMemoReplaceClick
+ 0001:002637BC       fDCSumm.TfrmDCSumm.dlgReplaceTextReplace
+ 0001:002637DC       fDCSumm.TfrmDCSumm.dlgReplaceTextFind
+ 0001:002637FC       fDCSumm.TfrmDCSumm.popSummMemoSpellClick
+ 0001:00263878       fDCSumm.TfrmDCSumm.popSummMemoGrammarClick
+ 0001:002638F4       fDCSumm.TfrmDCSumm.FormCreate
+ 0001:002639D8       fDCSumm.TfrmDCSumm.mnuViewDetailClick
+ 0001:00263ADC       fDCSumm.TfrmDCSumm.FormClose
+ 0001:00263BD8       fDCSumm.TfrmDCSumm.mnuActIdentifyAddlSignersClick
+ 0001:00263F74       fDCSumm.TfrmDCSumm.popSummMemoAddlSignClick
+ 0001:00263F7C       fDCSumm.TfrmDCSumm.ProcessNotifications
+ 0001:00264398       fDCSumm.TfrmDCSumm.SetViewContext
+ 0001:00264500       fDCSumm.TfrmDCSumm.mnuViewSaveAsDefaultClick
+ 0001:00264728       fDCSumm.TfrmDCSumm.mnuViewReturntoDefaultClick
+ 0001:00264734       fDCSumm.TfrmDCSumm.popSummMemoTemplateClick
+ 0001:0026478C       fDCSumm.TfrmDCSumm.popSummListPopup
+ 0001:00264808       fDCSumm.TfrmDCSumm.popSummListExpandAllClick
+ 0001:00264814       fDCSumm.TfrmDCSumm.popSummListCollapseAllClick
+ 0001:00264868       fDCSumm.TfrmDCSumm.popSummListExpandSelectedClick
+ 0001:002648A0       fDCSumm.TfrmDCSumm.popSummListCollapseSelectedClick
+ 0001:002648D8       fDCSumm.TfrmDCSumm.mnuNewTemplateClick
+ 0001:002648E4       fDCSumm.TfrmDCSumm.mnuEditTemplatesClick
+ 0001:002648F0       fDCSumm.TfrmDCSumm.mnuOptionsClick
+ 0001:00264964       fDCSumm.TfrmDCSumm.mnuEditSharedTemplatesClick
+ 0001:00264970       fDCSumm.TfrmDCSumm.mnuNewSharedTemplateClick
+ 0001:0026497C       fDCSumm.TfrmDCSumm.FormDestroy
+ 0001:002649A4       fDCSumm.TfrmDCSumm.GetDrawers
+ 0001:002649AC       fDCSumm.TfrmDCSumm.SetEditingIndex
+ 0001:002649B4       fDCSumm.TfrmDCSumm.LacksRequiredForCreate
+ 0001:00264A90       fDCSumm.TfrmDCSumm.VerifySummTitle
+ 0001:00264B3C       fDCSumm.TfrmDCSumm.LockSumm
+ 0001:00264BEC       fDCSumm.TfrmDCSumm.DoAutoSave
+ 0001:00264F10       fDCSumm.TfrmDCSumm.timAutoSaveTimer
+ 0001:00264F1C       fDCSumm.TfrmDCSumm.GetTitleText
+ 0001:00265090       fDCSumm.TfrmDCSumm.cmdChangeClick
+ 0001:00265594       fDCSumm.TfrmDCSumm.mnuActChangeClick
+ 0001:002655D0       fDCSumm.AssignBoilerText
+ 0001:00265680       fDCSumm.TfrmDCSumm.mnuActLoadBoilerClick
+ 0001:00265994       fDCSumm.TfrmDCSumm.popSummMemoSaveContinueClick
+ 0001:002659A8       fDCSumm.TfrmDCSumm.mnuEditDialgFieldsClick
+ 0001:002659B0       fDCSumm.TfrmDCSumm.LoadSumms
+ 0001:0026601C       fDCSumm.TfrmDCSumm.UpdateTreeView
+ 0001:00266088       fDCSumm.TfrmDCSumm.tvSummsChange
+ 0001:00266758       fDCSumm.TfrmDCSumm.tvSummsCollapsed
+ 0001:0026679C       fDCSumm.SortByTitle
+ 0001:00266940       fDCSumm.SortByDate
+ 0001:00266AE4       fDCSumm.TfrmDCSumm.tvSummsExpanded
+ 0001:00266B78       fDCSumm.TfrmDCSumm.tvSummsClick
+ 0001:00266B7C       fDCSumm.TfrmDCSumm.tvSummsDragOver
+ 0001:00266C14       fDCSumm.TfrmDCSumm.tvSummsDragDrop
+ 0001:00266CA0       fDCSumm.TfrmDCSumm.tvSummsStartDrag
+ 0001:00266D84       fDCSumm.TfrmDCSumm.lvSummsColumnClick
+ 0001:00266F60       fDCSumm.TfrmDCSumm.lvSummsCompare
+ 0001:0026700C       fDCSumm.TfrmDCSumm.lvSummsSelectItem
+ 0001:002670D8       fDCSumm.TfrmDCSumm.lvSummsResize
+ 0001:0026717C       fDCSumm.TfrmDCSumm.EnableDisableIDNotes
+ 0001:00267204       fDCSumm.TfrmDCSumm.mnuIconLegendClick
+ 0001:00267210       fDCSumm.TfrmDCSumm.mnuActAttachtoIDParentClick
+ 0001:0026735C       fDCSumm.TfrmDCSumm.DoAttachIDChild
+ 0001:0026770C       fDCSumm.SetDateRangeText
+ 0001:00267820       fDCSumm.TfrmDCSumm.SetSummTreeLabel
+ 0001:00267B5C       fDCSumm.TfrmDCSumm.memNewSummKeyUp
+ 0001:00267C08       fDCSumm.TfrmDCSumm.sptHorzCanResize
+ 0001:00267C68       fDCSumm.TfrmDCSumm.popSummMemoPreviewClick
+ 0001:00267C74       fDCSumm.TfrmDCSumm.popSummMemoInsTemplateClick
+ 0001:00267C80       fDCSumm.TfrmDCSumm.NoSummSelected
+ 0001:00267D08       fDCSumm.TfrmDCSumm.ViewInfo
+ 0001:00267D18       fDCSumm.TfrmDCSumm.mnuViewInformationClick
+ 0001:00267EA0       fDCSumm.Finalization
+ 0001:00267EF4       fPrintList..TfrmPrintList
+ 0001:00268124       fPrintList.TfrmPrintList.FormCreate
+ 0001:00268134       fPrintList.TfrmPrintList.cmdCancelClick
+ 0001:0026814C       fPrintList.TfrmPrintList.cmdOKClick
+ 0001:002681EC       fPrintList.TfrmPrintList.SelectParentFromList
+ 0001:002685B8       fODChangeUnreleasedRenew..TfrmODChangeUnreleasedRenew
+ 0001:00268898       fODChangeUnreleasedRenew.ExecuteChangeRenewedOrder
+ 0001:00268B60       fODChangeUnreleasedRenew.TfrmODChangeUnreleasedRenew.FormCreate
+ 0001:00268BD8       fODChangeUnreleasedRenew.TfrmODChangeUnreleasedRenew.btnCancelClick
+ 0001:00268BE0       fODChangeUnreleasedRenew.TfrmODChangeUnreleasedRenew.btnOKClick
+ 0001:00268E7C       fODMedNVA..TfrmODMedNVA
+ 0001:002695B8       fODMedNVA.TfrmODMedNVA.FormCreate
+ 0001:002699E8       fODMedNVA.TfrmODMedNVA.FormDestroy
+ 0001:00269A48       fODMedNVA.TfrmODMedNVA.InitDialog
+ 0001:00269B40       fODMedNVA.TfrmODMedNVA.SetupDialog
+ 0001:00269D04       fODMedNVA.SetError
+ 0001:00269D60       fODMedNVA.TfrmODMedNVA.Validate
+ 0001:0026A02C       fODMedNVA.TfrmODMedNVA.WMTimer
+ 0001:0026A058       fODMedNVA.TfrmODMedNVA.StartKeyTimer
+ 0001:0026A0A0       fODMedNVA.TfrmODMedNVA.StopKeyTimer
+ 0001:0026A0C8       fODMedNVA.TfrmODMedNVA.txtMedKeyDown
+ 0001:0026A1E8       fODMedNVA.TfrmODMedNVA.txtMedKeyUp
+ 0001:0026A20C       fODMedNVA.TfrmODMedNVA.txtMedChange
+ 0001:0026A220       fODMedNVA.TfrmODMedNVA.ScrollToVisible
+ 0001:0026A2A8       fODMedNVA.TfrmODMedNVA.ChangeDelayed
+ 0001:0026A780       fODMedNVA.TfrmODMedNVA.txtMedExit
+ 0001:0026A7AC       fODMedNVA.TfrmODMedNVA.ListViewEnter
+ 0001:0026A834       fODMedNVA.TfrmODMedNVA.ListViewClick
+ 0001:0026A86C       fODMedNVA.TfrmODMedNVA.UMDelayClick
+ 0001:0026A874       fODMedNVA.TfrmODMedNVA.ListViewEditing
+ 0001:0026A884       fODMedNVA.TfrmODMedNVA.ListViewResize
+ 0001:0026A8B8       fODMedNVA.TfrmODMedNVA.LoadNonVAMedCache
+ 0001:0026A990       fODMedNVA.TfrmODMedNVA.lstAllData
+ 0001:0026AA70       fODMedNVA.TfrmODMedNVA.lstAllDataHint
+ 0001:0026AA84       fODMedNVA.TfrmODMedNVA.btnSelectClick
+ 0001:0026AD40       fODMedNVA.TfrmODMedNVA.ResetOnMedChange
+ 0001:0026AE28       fODMedNVA.TfrmODMedNVA.SetOnMedSelect
+ 0001:0026B3B8       fODMedNVA.TfrmODMedNVA.SetOnQuickOrder
+ 0001:0026BAC4       fODMedNVA.TfrmODMedNVA.ShowMedSelect
+ 0001:0026BC60       fODMedNVA.TfrmODMedNVA.ShowMedFields
+ 0001:0026BD7C       fODMedNVA.TfrmODMedNVA.ShowControlsSimple
+ 0001:0026BDEC       fODMedNVA.TfrmODMedNVA.SetDosage
+ 0001:0026BEC4       fODMedNVA.TfrmODMedNVA.SetStatements
+ 0001:0026C094       fODMedNVA.TfrmODMedNVA.SearchStatements
+ 0001:0026C150       fODMedNVA.TfrmODMedNVA.SetStartDate
+ 0001:0026C15C       fODMedNVA.TfrmODMedNVA.SetSchedule
+ 0001:0026C2FC       fODMedNVA.TfrmODMedNVA.tabDoseChange
+ 0001:0026C324       fODMedNVA.TfrmODMedNVA.lblGuidelineClick
+ 0001:0026C3E4       fODMedNVA.TfrmODMedNVA.CheckFormAltDose
+ 0001:0026C494       fODMedNVA.TfrmODMedNVA.cboDosageClick
+ 0001:0026C588       fODMedNVA.TfrmODMedNVA.cboDosageChange
+ 0001:0026C590       fODMedNVA.TfrmODMedNVA.cboDosageExit
+ 0001:0026C630       fODMedNVA.TfrmODMedNVA.cboRouteChange
+ 0001:0026C758       fODMedNVA.TfrmODMedNVA.cboRouteExit
+ 0001:0026C75C       fODMedNVA.TfrmODMedNVA.cboScheduleClick
+ 0001:0026C764       fODMedNVA.TfrmODMedNVA.cboScheduleChange
+ 0001:0026C76C       fODMedNVA.TfrmODMedNVA.cboScheduleExit
+ 0001:0026C770       fODMedNVA.TfrmODMedNVA.OutpatientSig
+ 0001:0026C8F4       fODMedNVA.TfrmODMedNVA.ConstructedDoseFields
+ 0001:0026CC54       fODMedNVA.TfrmODMedNVA.FindDoseFields
+ 0001:0026CDC0       fODMedNVA.SaveDrug
+ 0001:0026CFA4       fODMedNVA.KillDrug
+ 0001:0026D0A8       fODMedNVA.TfrmODMedNVA.FindCommonDrug
+ 0001:0026D6E4       fODMedNVA.TfrmODMedNVA.ControlChange
+ 0001:0026DE48       fODMedNVA.TfrmODMedNVA.grdDosesExit
+ 0001:0026DE64       fODMedNVA.GetSchedule
+ 0001:0026DF84       fODMedNVA.GetScheduleEX
+ 0001:0026E0F4       fODMedNVA.TfrmODMedNVA.ValueOf
+ 0001:0026E85C       fODMedNVA.TfrmODMedNVA.ValueOfResponse
+ 0001:0026EB00       fODMedNVA.TfrmODMedNVA.UpdateStartExpires
+ 0001:0026EDB0       fODMedNVA.TfrmODMedNVA.UpdateRelated
+ 0001:0026EDE4       fODMedNVA.TfrmODMedNVA.timCheckChangesTimer
+ 0001:0026F2E0       fODMedNVA.TfrmODMedNVA.cmdAcceptClick
+ 0001:0026F300       fODMedNVA.TfrmODMedNVA.CheckDecimal
+ 0001:0026F748       fODMedNVA.TfrmODMedNVA.chkPRNClick
+ 0001:0026F8A8       fODMedNVA.TfrmODMedNVA.grdDosesKeyDown
+ 0001:0026F928       fODMedNVA.TfrmODMedNVA.grdDosesEnter
+ 0001:0026F940       fODMedNVA.TfrmODMedNVA.DisableCancelButton
+ 0001:0026F9D0       fODMedNVA.TfrmODMedNVA.DisableDefaultButton
+ 0001:0026FA60       fODMedNVA.TfrmODMedNVA.RestoreCancelButton
+ 0001:0026FA7C       fODMedNVA.TfrmODMedNVA.RestoreDefaultButton
+ 0001:0026FA9C       fODMedNVA.TfrmODMedNVA.pnlMessageEnter
+ 0001:0026FAB4       fODMedNVA.TfrmODMedNVA.pnlMessageExit
+ 0001:0026FAD0       fODMedNVA.TfrmODMedNVA.memMessageKeyDown
+ 0001:0026FAFC       fODMedNVA.TfrmODMedNVA.FormResize
+ 0001:0026FB24       fODMedNVA.TfrmODMedNVA.GetCacheChunkIndex
+ 0001:0026FB34       fODMedNVA.TfrmODMedNVA.lstQuickData
+ 0001:0026FBD4       fODMedNVA.TfrmODMedNVA.LoadOTCStatements
+ 0001:0026FCC4       fODMedNVA.TfrmODMedNVA.FindQuickOrder
+ 0001:0026FE18       fODMedNVA.TfrmODMedNVA.lbStatementsClickCheck
+ 0001:0026FE20       fODMedNVA.TfrmODMedNVA.lstChange
+ 0001:0026FEBC       fODMedNVA.TfrmODMedNVA.FormKeyPress
+ 0001:0026FEDC       fODMedNVA.OIForNVA
+ 0001:0026FF84       fODMedNVA.CheckAuthForNVAMeds
+ 0001:00270028       fODMedNVA.TfrmODMedNVA.isUniqueQuickOrder
+ 0001:00270164       fODMedNVA.TfrmODMedNVA.DispOrderMessage
+ 0001:0027023C       fODMedNVA.Finalization
+ 0001:002702E0       fOMHTML..TfrmOMHTML
+ 0001:002705AC       fOMHTML..TPageState
+ 0001:00270618       fOMHTML.TPageState.Create
+ 0001:00270674       fOMHTML.TPageState.Destroy
+ 0001:002706BC       fOMHTML.GetURLforDialog
+ 0001:00270730       fOMHTML.NameValueToViewList
+ 0001:00270868       fOMHTML.NameValueToOrderSet
+ 0001:00270B7C       fOMHTML.TfrmOMHTML.SetEventDelay
+ 0001:00270BF0       fOMHTML.TfrmOMHTML.GetPageIndex
+ 0001:00270C54       fOMHTML.TfrmOMHTML.MetaElementExists
+ 0001:00270E78       fOMHTML.TfrmOMHTML.AddPageToCache
+ 0001:00270EC4       fOMHTML.TfrmOMHTML.SaveState
+ 0001:00271898       fOMHTML.GetStateFromName
+ 0001:00271970       fOMHTML.TfrmOMHTML.RestoreState
+ 0001:002720AC       fOMHTML.TfrmOMHTML.SetDialog
+ 0001:00272130       fOMHTML.TfrmOMHTML.FormCreate
+ 0001:002721A4       fOMHTML.TfrmOMHTML.FormClose
+ 0001:00272208       fOMHTML.TfrmOMHTML.FormDestroy
+ 0001:00272278       fOMHTML.TfrmOMHTML.webViewDocumentComplete
+ 0001:002723A8       fOMHTML.TfrmOMHTML.webViewBeforeNavigate2
+ 0001:002723C8       fOMHTML.TfrmOMHTML.btnOKClick
+ 0001:002724B0       fOMHTML.TfrmOMHTML.btnCancelClick
+ 0001:002724C8       fOMHTML.TfrmOMHTML.btnBackClick
+ 0001:002725CC       fOMHTML.TfrmOMHTML.btnShowClick
+ 0001:002726F0       fOMSet..TSetItem
+ 0001:00272760       fOMSet..TfrmOMSet
+ 0001:00272994       fOMSet.TfrmOMSet.SetEventDelay
+ 0001:00272A08       fOMSet.TfrmOMSet.InsertList
+ 0001:00272CD0       fOMSet.SkipToNext
+ 0001:00272D08       fOMSet.TfrmOMSet.DoNextItem
+ 0001:002731A0       fOMSet.TfrmOMSet.UMDelayEvent
+ 0001:00273204       fOMSet.TfrmOMSet.UMDestroy
+ 0001:00273328       fOMSet.TfrmOMSet.FormCreate
+ 0001:00273358       fOMSet.TfrmOMSet.FormDestroy
+ 0001:00273398       fOMSet.TfrmOMSet.FormCloseQuery
+ 0001:0027344C       fOMSet.TfrmOMSet.FormClose
+ 0001:00273534       fOMSet.TfrmOMSet.cmdInteruptClick
+ 0001:0027354C       fOMSet.TfrmOMSet.DeaCheckPassed
+ 0001:00273674       fOMSet.TfrmOMSet.IsCreatedByMenu
+ 0001:002736B0       fODVitals..TfrmODVitals
+ 0001:00273A60       fODVitals.TfrmODVitals.FormCreate
+ 0001:00273B3C       fODVitals.TfrmODVitals.InitDialog
+ 0001:00273BBC       fODVitals.TfrmODVitals.SetupDialog
+ 0001:00273CB8       fODVitals.SetError
+ 0001:00273D14       fODVitals.TfrmODVitals.Validate
+ 0001:00273EE0       fODVitals.TfrmODVitals.ControlChange
+ 0001:0027419C       fODVitals.TfrmODVitals.FormClose
+ 0001:002741B8       fIVRoutes..TfrmIVRoutes
+ 0001:002743F4       fIVRoutes.ShowOtherRoutes
+ 0001:002744E0       fIVRoutes.TfrmIVRoutes.btnCancelClick
+ 0001:00274504       fIVRoutes.TfrmIVRoutes.BtnOKClick
+ 0001:0027457C       fIVRoutes.TfrmIVRoutes.FormCreate
+ 0001:00274598       fIVRoutes.TfrmIVRoutes.FormDestroy
+ 0001:002745A8       IdSysBase..TIdSysBase
+ 0001:00274600       IdSysVCL..TIdSysVCL
+ 0001:00274658       IdSysVCL.TIdSysVCL.FreeAndNil
+ 0001:00274660       IdSysVCL.TIdSysVCL.LeadBytes
+ 0001:0027475C       IdSysVCL.Finalization
+ 0001:002747B8       IdSysNativeVCL..TIdSysNativeVCL
+ 0001:00274814       IdSysNativeVCL.TIdSysNativeVCL.AnsiPos
+ 0001:00274820       IdSysWin32..TIdSysWin32
+ 0001:00274878       IdGlobal.IsNumeric
+ 0001:00274888       IdGlobal.SBPos
+ 0001:00274890       IdGlobal.AnsiPos
+ 0001:002748A0       IdGlobal.Finalization
+ 0001:002748F4       fOtherSchedule..TfrmOtherSchedule
+ 0001:00274E24       fOtherSchedule.ShowOtherSchedule
+ 0001:00275050       fOtherSchedule.TfrmOtherSchedule.FormCreate
+ 0001:002751B0       fOtherSchedule.TfrmOtherSchedule.FormDestroy
+ 0001:002751D0       fOtherSchedule.TfrmOtherSchedule.btnCancelClick
+ 0001:002751DC       fOtherSchedule.TfrmOtherSchedule.btn0k1Click
+ 0001:00275354       fOtherSchedule.TfrmOtherSchedule.SetDaySchedule
+ 0001:00275670       fOtherSchedule.TfrmOtherSchedule.SetScheduleSelection
+ 0001:00275788       fOtherSchedule.TfrmOtherSchedule.SetTimeSchedule
+ 0001:002759A8       fOtherSchedule.TfrmOtherSchedule.cbo7Click
+ 0001:002759CC       fOtherSchedule.TfrmOtherSchedule.cbo1Click
+ 0001:002759F0       fOtherSchedule.TfrmOtherSchedule.cbo2Click
+ 0001:00275A14       fOtherSchedule.TfrmOtherSchedule.cbo3Click
+ 0001:00275A38       fOtherSchedule.TfrmOtherSchedule.cbo4Click
+ 0001:00275A5C       fOtherSchedule.TfrmOtherSchedule.cbo5Click
+ 0001:00275A80       fOtherSchedule.TfrmOtherSchedule.cbo6Click
+ 0001:00275AA4       fOtherSchedule.TfrmOtherSchedule.btnAddClick
+ 0001:00275CF4       fOtherSchedule.TfrmOtherSchedule.btnResetClick
+ 0001:00275DF4       fOtherSchedule.TfrmOtherSchedule.btnSchAddClick
+ 0001:00275EE0       fOtherSchedule.TfrmOtherSchedule.btnSchRemoveClick
+ 0001:00275F78       fOtherSchedule.TfrmOtherSchedule.btnRemoveClick
+ 0001:00276158       fOtherSchedule.TfrmOtherSchedule.GetSiteMessage
+ 0001:0027622C       fOtherSchedule.TfrmOtherSchedule.FormClose
+ 0001:00276270       fOtherSchedule.updateCheckbox
+ 0001:0027687C       fOtherSchedule.TfrmOtherSchedule.UpdateOnFreeTextInput
+ 0001:00276B90       fOtherSchedule.TfrmOtherSchedule.lstHourClick
+ 0001:00276BB8       fOtherSchedule.TfrmOtherSchedule.txtScheduleChange
+ 0001:00276BDC       fOtherSchedule.TfrmOtherSchedule.CheckDay
+ 0001:00276F08       fOtherSchedule.TfrmOtherSchedule.EnabledSch
+ 0001:00276F58       fOtherSchedule.TfrmOtherSchedule.EnabledTime
+ 0001:00276FC8       fOtherSchedule.TfrmOtherSchedule.lstMinuteMouseUp
+ 0001:00276FF4       fOtherSchedule.TfrmOtherSchedule.lstMinuteKeyDown
+ 0001:00277028       fOtherSchedule.TfrmOtherSchedule.Button1Click
+ 0001:002770A0       fODMedIV..TfrmODMedIV
+ 0001:002778F0       fODMedIV..TIVComponent
+ 0001:0027796C       fODMedIV.TfrmODMedIV.FormCreate
+ 0001:00277AEC       fODMedIV.TfrmODMedIV.FormDestroy
+ 0001:00277B44       fODMedIV.TfrmODMedIV.FormResize
+ 0001:00277E18       fODMedIV.TfrmODMedIV.InitDialog
+ 0001:002782E0       fODMedIV.TfrmODMedIV.IVTypeHelpText
+ 0001:00278440       fODMedIV.TfrmODMedIV.lblTypeHelpClick
+ 0001:002784B0       fODMedIV.TfrmODMedIV.loadExpectFirstDose
+ 0001:00278D64       fODMedIV.SetError
+ 0001:00278DC0       fODMedIV.TfrmODMedIV.Validate
+ 0001:0027A420       fODMedIV.TfrmODMedIV.ValidateInfusionRate
+ 0001:0027A5B8       fODMedIV.TfrmODMedIV.SetValuesFromResponses
+ 0001:0027B6EC       fODMedIV.TfrmODMedIV.SetupDialog
+ 0001:0027B7DC       fODMedIV.TfrmODMedIV.tabFluidChange
+ 0001:0027B858       fODMedIV.TfrmODMedIV.cboSolutionNeedData
+ 0001:0027B908       fODMedIV.TfrmODMedIV.cboTypeChange
+ 0001:0027BB3C       fODMedIV.TfrmODMedIV.chkDoseNowClick
+ 0001:0027BE58       fODMedIV.TfrmODMedIV.chkPRNClick
+ 0001:0027BE60       fODMedIV.TfrmODMedIV.cboSolutionMouseClick
+ 0001:0027C338       fODMedIV.TfrmODMedIV.cboSolutionExit
+ 0001:0027C3E8       fODMedIV.TfrmODMedIV.cboAdditiveNeedData
+ 0001:0027C498       fODMedIV.TfrmODMedIV.cboDurationChange
+ 0001:0027C518       fODMedIV.TfrmODMedIV.cboDurationEnter
+ 0001:0027C534       fODMedIV.TfrmODMedIV.cboInfusionTimeChange
+ 0001:0027C5B4       fODMedIV.TfrmODMedIV.cboInfusionTimeEnter
+ 0001:0027C5D0       fODMedIV.TfrmODMedIV.cboPriorityChange
+ 0001:0027C5D8       fODMedIV.TfrmODMedIV.cboPriorityExit
+ 0001:0027C688       fODMedIV.TfrmODMedIV.cboRouteChange
+ 0001:0027C6E0       fODMedIV.TfrmODMedIV.cboRouteClick
+ 0001:0027C84C       fODMedIV.TfrmODMedIV.cboRouteExit
+ 0001:0027C850       fODMedIV.TfrmODMedIV.cboAdditiveMouseClick
+ 0001:0027CB48       fODMedIV.TfrmODMedIV.cboAdditiveExit
+ 0001:0027CB78       fODMedIV.TfrmODMedIV.ClearAllFields
+ 0001:0027CC24       fODMedIV.PlaceControl
+ 0001:0027CCCC       fODMedIV.TfrmODMedIV.ClickOnGridCell
+ 0001:0027CF68       fODMedIV.TfrmODMedIV.txtSelectedChange
+ 0001:0027D000       fODMedIV.TfrmODMedIV.txtSelectedExit
+ 0001:0027D08C       fODMedIV.TfrmODMedIV.cboScheduleChange
+ 0001:0027D154       fODMedIV.TfrmODMedIV.cboScheduleClick
+ 0001:0027D2EC       fODMedIV.TfrmODMedIV.cboScheduleExit
+ 0001:0027D424       fODMedIV.TfrmODMedIV.cboSelectedChange
+ 0001:0027D4BC       fODMedIV.TfrmODMedIV.cboSelectedExit
+ 0001:0027D548       fODMedIV.TfrmODMedIV.cmdRemoveClick
+ 0001:0027D618       fODMedIV.IsNumericRate
+ 0001:0027D650       fODMedIV.TfrmODMedIV.ControlChange
+ 0001:0027E538       fODMedIV.TfrmODMedIV.CreateOtherRoute
+ 0001:0027E5B8       fODMedIV.TfrmODMedIV.CreateOtherSchedule
+ 0001:0027E680       fODMedIV.TfrmODMedIV.grdSelectedDrawCell
+ 0001:0027E73C       fODMedIV.TfrmODMedIV.SetFontSize
+ 0001:0027E758       fODMedIV.TfrmODMedIV.DisplayDoseNow
+ 0001:0027E7BC       fODMedIV.TfrmODMedIV.DoSetFontSize
+ 0001:0027E7FC       fODMedIV.TfrmODMedIV.FormKeyDown
+ 0001:0027E870       fODMedIV.TfrmODMedIV.grdSelectedKeyPress
+ 0001:0027E878       fODMedIV.TfrmODMedIV.grdSelectedMouseDown
+ 0001:0027E884       fODMedIV.TfrmODMedIV.txtXDurationChange
+ 0001:0027E894       fODMedIV.TfrmODMedIV.pnlXDurationEnter
+ 0001:0027E8A4       fODMedIV.TfrmODMedIV.SetLimitationControl
+ 0001:0027EC4C       fODMedIV.TfrmODMedIV.SetSchedule
+ 0001:0027F0E4       fODMedIV.TfrmODMedIV.txtXDurationExit
+ 0001:0027F37C       fODMedIV.TfrmODMedIV.UpdateDuration
+ 0001:0027F448       fODMedIV.TfrmODMedIV.UpdateRoute
+ 0001:0027F708       fODMedIV.TfrmODMedIV.txtAllIVRoutesClick
+ 0001:0027F888       fODMedIV.TfrmODMedIV.txtNSSClick
+ 0001:0027F9EC       fODMedIV.TfrmODMedIV.txtRateChange
+ 0001:0027F9FC       fODMeds..TfrmODMeds
+ 0001:00280890       fODMeds.TfrmODMeds.FormCreate
+ 0001:002812BC       fODMeds.TfrmODMeds.FormDestroy
+ 0001:00281334       fODMeds.TfrmODMeds.InitDialog
+ 0001:00281444       fODMeds.TfrmODMeds.SetupDialog
+ 0001:00281E94       fODMeds.SetError
+ 0001:00281F00       fODMeds.ValidateRoute
+ 0001:002820C0       fODMeds.ValidateSchedule
+ 0001:002825C0       fODMeds.TfrmODMeds.Validate
+ 0001:00283040       fODMeds.TfrmODMeds.SetVisibleCommentRows
+ 0001:0028307C       fODMeds.TfrmODMeds.SetControlsInpatient
+ 0001:002832BC       fODMeds.TfrmODMeds.SetControlsOutpatient
+ 0001:00283470       fODMeds.TfrmODMeds.WMTimer
+ 0001:002834A8       fODMeds.TfrmODMeds.StartKeyTimer
+ 0001:0028350C       fODMeds.TfrmODMeds.StopKeyTimer
+ 0001:00283540       fODMeds.TfrmODMeds.FindQuickOrder
+ 0001:002836B8       fODMeds.TfrmODMeds.txtMedKeyDown
+ 0001:00283840       fODMeds.TfrmODMeds.txtMedKeyUp
+ 0001:00283880       fODMeds.TfrmODMeds.txtMedChange
+ 0001:002838A8       fODMeds.TfrmODMeds.ScrollToVisible
+ 0001:00283940       fODMeds.TfrmODMeds.ChangeDelayed
+ 0001:00283E84       fODMeds.TfrmODMeds.txtMedExit
+ 0001:00283EE0       fODMeds.TfrmODMeds.ListViewEnter
+ 0001:00283F88       fODMeds.TfrmODMeds.ListViewClick
+ 0001:00283FD0       fODMeds.TfrmODMeds.UMDelayClick
+ 0001:00283FEC       fODMeds.TfrmODMeds.ListViewEditing
+ 0001:00284008       fODMeds.TfrmODMeds.ListViewKeyUp
+ 0001:00284020       fODMeds.TfrmODMeds.ListViewResize
+ 0001:00284068       fODMeds.TfrmODMeds.Loaded
+ 0001:00284094       fODMeds.TfrmODMeds.LoadMedCache
+ 0001:002841B4       fODMeds.TfrmODMeds.lstAllData
+ 0001:002842B4       fODMeds.TfrmODMeds.lstAllDataHint
+ 0001:002842D8       fODMeds.TfrmODMeds.lstQuickData
+ 0001:00284390       fODMeds.TfrmODMeds.lstQuickDataHint
+ 0001:002843A8       fODMeds.TfrmODMeds.btnSelectClick
+ 0001:00284A44       fODMeds.TfrmODMeds.ResetOnMedChange
+ 0001:00284D04       fODMeds.TfrmODMeds.ResetOnTabChange
+ 0001:002850A8       fODMeds.TfrmODMeds.SetOnMedSelect
+ 0001:00285C44       fODMeds.TfrmODMeds.SetOnQuickOrder
+ 0001:00286B78       fODMeds.TfrmODMeds.ShowMedSelect
+ 0001:00286E20       fODMeds.TfrmODMeds.ShowMedFields
+ 0001:00287050       fODMeds.TfrmODMeds.ShowControlsSimple
+ 0001:0028713C       fODMeds.MoveCombo
+ 0001:0028739C       fODMeds.TfrmODMeds.ShowControlsComplex
+ 0001:002874C8       fODMeds.TfrmODMeds.SetDosage
+ 0001:002875B0       fODMeds.TfrmODMeds.SetPickup
+ 0001:00287654       fODMeds.TfrmODMeds.SetSchedule
+ 0001:00287CBC       fODMeds.TfrmODMeds.tabDoseChange
+ 0001:002882FC       fODMeds.TfrmODMeds.lblAdminSchGetText
+ 0001:0028845C       fODMeds.TfrmODMeds.lblAdminSchSetText
+ 0001:00288578       fODMeds.TfrmODMeds.lblGuidelineClick
+ 0001:00288640       fODMeds.TfrmODMeds.CheckFormAltDose
+ 0001:0028870C       fODMeds.TfrmODMeds.cboDosageClick
+ 0001:002889E0       fODMeds.TfrmODMeds.cboDosageChange
+ 0001:00288B64       fODMeds.TfrmODMeds.cboDosageExit
+ 0001:00288DE0       fODMeds.TfrmODMeds.cboRouteChange
+ 0001:00288F28       fODMeds.TfrmODMeds.cboRouteExit
+ 0001:00288FA4       fODMeds.TfrmODMeds.cboScheduleClick
+ 0001:00289134       fODMeds.TfrmODMeds.cboScheduleChange
+ 0001:00289258       fODMeds.TfrmODMeds.UpdateDurationControls
+ 0001:00289358       fODMeds.TfrmODMeds.popDurationClick
+ 0001:00289444       fODMeds.TfrmODMeds.txtSupplyChange
+ 0001:002894F8       fODMeds.TfrmODMeds.txtQuantityChange
+ 0001:00289698       fODMeds.TfrmODMeds.OutpatientSig
+ 0001:00289D00       fODMeds.TfrmODMeds.InpatientSig
+ 0001:00289FCC       fODMeds.TfrmODMeds.ConstructedDoseFields
+ 0001:0028A38C       fODMeds.TfrmODMeds.FieldsForDrug
+ 0001:0028A4CC       fODMeds.TfrmODMeds.FieldsForDose
+ 0001:0028A778       fODMeds.TfrmODMeds.FindDoseFields
+ 0001:0028A90C       fODMeds.SaveDrug
+ 0001:0028AB04       fODMeds.KillDrug
+ 0001:0028AC2C       fODMeds.TfrmODMeds.FindCommonDrug
+ 0001:0028B368       fODMeds.TfrmODMeds.ControlChange
+ 0001:0028C530       fODMeds.TfrmODMeds.ValFor
+ 0001:0028C82C       fODMeds.FindInCombo
+ 0001:0028C848       fODMeds.TfrmODMeds.DurationToDays
+ 0001:0028CC3C       fODMeds.TfrmODMeds.pnlFieldsResize
+ 0001:0028D014       fODMeds.TfrmODMeds.grdDosesMouseDown
+ 0001:0028D0AC       fODMeds.TfrmODMeds.grdDosesKeyPress
+ 0001:0028D114       fODMeds.TfrmODMeds.grdDosesMouseUp
+ 0001:0028D200       fODMeds.TfrmODMeds.grdDosesDrawCell
+ 0001:0028D2B0       fODMeds.TfrmODMeds.grdDosesExit
+ 0001:0028D2DC       fODMeds.PlaceControl
+ 0001:0028D374       fODMeds.SynchCombo
+ 0001:0028D430       fODMeds.TfrmODMeds.ShowEditor
+ 0001:0028DAE4       fODMeds.TfrmODMeds.UMDelayEvent
+ 0001:0028DC18       fODMeds.TfrmODMeds.cboXDosageEnter
+ 0001:0028DC80       fODMeds.TfrmODMeds.cboXDosageChange
+ 0001:0028DE60       fODMeds.TfrmODMeds.cboXDosageClick
+ 0001:0028E080       fODMeds.TfrmODMeds.cboXDosageExit
+ 0001:0028E320       fODMeds.TfrmODMeds.cboXRouteChange
+ 0001:0028E3C0       fODMeds.TfrmODMeds.cboXRouteClick
+ 0001:0028E4B4       fODMeds.TfrmODMeds.cboXRouteExit
+ 0001:0028E610       fODMeds.TfrmODMeds.pnlXScheduleEnter
+ 0001:0028E648       fODMeds.TfrmODMeds.cboXScheduleChange
+ 0001:0028E8D8       fODMeds.TfrmODMeds.cboXScheduleClick
+ 0001:0028EA78       fODMeds.TfrmODMeds.chkXPRNClick
+ 0001:0028EB40       fODMeds.TfrmODMeds.pnlXScheduleExit
+ 0001:0028EC48       fODMeds.TfrmODMeds.pnlXAdminTimeClick
+ 0001:0028ED74       fODMeds.TfrmODMeds.pnlXDurationEnter
+ 0001:0028EDAC       fODMeds.TfrmODMeds.txtXDurationChange
+ 0001:0028F2C8       fODMeds.TfrmODMeds.pnlXDurationExit
+ 0001:0028F3B4       fODMeds.TfrmODMeds.btnXInsertClick
+ 0001:0028F534       fODMeds.TfrmODMeds.btnXRemoveClick
+ 0001:0028F5F8       fODMeds.GetSingleDoseSchedule
+ 0001:0028F75C       fODMeds.GetSingleDoseScheduleEX
+ 0001:0028FB4C       fODMeds.GetComplexDoseSchedule
+ 0001:0028FD28       fODMeds.GetComplexDoseScheduleEX
+ 0001:0029016C       fODMeds.TfrmODMeds.ValueOf
+ 0001:00291228       fODMeds.TfrmODMeds.ValueOfResponse
+ 0001:00291504       fODMeds.TfrmODMeds.UpdateDefaultSupply
+ 0001:00291A80       fODMeds.TfrmODMeds.UpdateSupplyQuantity
+ 0001:0029200C       fODMeds.TfrmODMeds.updateSig
+ 0001:00292080       fODMeds.TfrmODMeds.UpdateStartExpires
+ 0001:00292EA4       fODMeds.TfrmODMeds.UpdateRefills
+ 0001:00292FE4       fODMeds.TfrmODMeds.UpdateRelated
+ 0001:00293028       fODMeds.TfrmODMeds.timCheckChangesTimer
+ 0001:002938A4       fODMeds.TfrmODMeds.cmdAcceptClick
+ 0001:00293B28       fODMeds.TfrmODMeds.chkPtInstructClick
+ 0001:00293B44       fODMeds.TfrmODMeds.chkDoseNowClick
+ 0001:00293FF0       fODMeds.TfrmODMeds.CheckDecimal
+ 0001:00294220       fODMeds.TfrmODMeds.DropLastSequence
+ 0001:00294478       fODMeds.TfrmODMeds.memCommentClick
+ 0001:0029449C       fODMeds.TfrmODMeds.btnXDurationClick
+ 0001:002944E0       fODMeds.TfrmODMeds.chkPRNClick
+ 0001:00294674       fODMeds.TfrmODMeds.grdDosesKeyDown
+ 0001:002947F0       fODMeds.TfrmODMeds.grdDosesEnter
+ 0001:00294818       fODMeds.TfrmODMeds.DisableCancelButton
+ 0001:002948C4       fODMeds.TfrmODMeds.DisableDefaultButton
+ 0001:00294970       fODMeds.TfrmODMeds.RestoreCancelButton
+ 0001:002949A4       fODMeds.TfrmODMeds.RestoreDefaultButton
+ 0001:002949D8       fODMeds.TfrmODMeds.FormKeyPress
+ 0001:00294A10       fODMeds.TfrmODMeds.FormKeyDown
+ 0001:00294AB0       fODMeds.TfrmODMeds.cboXRouteEnter
+ 0001:00294AD8       fODMeds.TfrmODMeds.pnlMessageEnter
+ 0001:00294B00       fODMeds.TfrmODMeds.pnlMessageExit
+ 0001:00294B2C       fODMeds.TfrmODMeds.memMessageKeyDown
+ 0001:00294B6C       fODMeds.TfrmODMeds.memPIClick
+ 0001:00294BD8       fODMeds.TfrmODMeds.FormResize
+ 0001:00294D10       fODMeds.TfrmODMeds.memPIKeyDown
+ 0001:00294D80       fODMeds.TfrmODMeds.TextDosage
+ 0001:002951C4       fODMeds.TfrmODMeds.CreateOtherScheduel
+ 0001:002952BC       fODMeds.TfrmODMeds.IfIsIMODialog
+ 0001:00295340       fODMeds.TfrmODMeds.lstChange
+ 0001:00295430       fODMeds.TfrmODMeds.DisplayDoseNow
+ 0001:002954B4       fODMeds.TfrmODMeds.DispOrderMessage
+ 0001:002955F4       fODMeds.TfrmODMeds.FormClose
+ 0001:00295638       fODMeds.TfrmODMeds.CreateOtherScheduelComplex
+ 0001:00295730       fODMeds.TfrmODMeds.txtNSSClick
+ 0001:00295850       fODMeds.TfrmODMeds.cboScheduleEnter
+ 0001:002958D8       fODMeds.TfrmODMeds.FormShow
+ 0001:002959B0       fODMeds.TfrmODMeds.UMShowNSSBuilder
+ 0001:002959D8       fODMeds.TfrmODMeds.cboScheduleExit
+ 0001:00295A64       fODMeds.TfrmODMeds.ValidateInpatientSchedule
+ 0001:00295CC0       fODMeds.TfrmODMeds.isUniqueQuickOrder
+ 0001:00295E24       fODMeds.TfrmODMeds.IsSupplyAndOutPatient
+ 0001:00295E60       fODMeds.TfrmODMeds.GetCacheChunkIndex
+ 0001:00295E84       fODMeds.TfrmODMeds.GetSchedListIndex
+ 0001:00295F2C       fODMeds.TfrmODMeds.cboXScheduleExit
+ 0001:00295F50       fODMeds.TfrmODMeds.cboXSequenceChange
+ 0001:00296188       fODMeds.TfrmODMeds.cboXSequenceEnter
+ 0001:002961B0       fODMeds.TfrmODMeds.cboXSequenceExit
+ 0001:0029635C       fODMeds.TfrmODMeds.cboXSequence1Exit
+ 0001:0029637C       fODMeds.TfrmODMeds.cboDosageKeyUp
+ 0001:002963BC       fODMeds.TfrmODMeds.cboXDosageKeyUp
+ 0001:00296460       fODMeds.TfrmODMeds.txtSupplyClick
+ 0001:00296480       fODMeds.TfrmODMeds.txtQuantityClick
+ 0001:002964A0       fODMeds.TfrmODMeds.txtRefillsChange
+ 0001:002964BC       fODMeds.TfrmODMeds.txtRefillsClick
+ 0001:002964DC       fODMeds.TfrmODMeds.WMClose
+ 0001:002965E0       fODMeds.TfrmODMeds.cboXScheduleEnter
+ 0001:00296610       fODMeds.Finalization
+ 0001:0029664C       fLabCollTimes..TfrmLabCollectTimes
+ 0001:00296900       fLabCollTimes.GetFutureLabTime
+ 0001:002969D0       fLabCollTimes.TfrmLabCollectTimes.calLabCollectChange
+ 0001:00296A1C       fLabCollTimes.TfrmLabCollectTimes.cmdOKClick
+ 0001:00296B00       fLabCollTimes.TfrmLabCollectTimes.cmdCancelClick
+ 0001:00296B18       fLabCollTimes.TfrmLabCollectTimes.calMonthClick
+ 0001:00296B54       fLabCollTimes.TfrmLabCollectTimes.FormCreate
+ 0001:00296B5C       fLabCollTimes.TfrmLabCollectTimes.calMonthKeyDown
+ 0001:00296C18       fODLabImmedColl..TfrmODLabImmedColl
+ 0001:00296E9C       fODLabImmedColl.SelectImmediateCollectTime
+ 0001:00296F58       fODLabImmedColl.TfrmODLabImmedColl.cmdCancelClick
+ 0001:00296F80       fODLabImmedColl.TfrmODLabImmedColl.cmdOKClick
+ 0001:00297160       fODLabImmedColl.TfrmODLabImmedColl.FormShow
+ 0001:002971C8       fODLabImmedColl.TfrmODLabImmedColl.calImmedCollectKeyUp
+ 0001:002971E8       fODLabOthCollSamp..TfrmODLabOthCollSamp
+ 0001:00297438       fODLabOthCollSamp.SelectOtherCollSample
+ 0001:00297600       fODLabOthCollSamp.TfrmODLabOthCollSamp.cmdCancelClick
+ 0001:00297628       fODLabOthCollSamp.TfrmODLabOthCollSamp.cmdOKClick
+ 0001:0029774C       fODLabOthCollSamp.TfrmODLabOthCollSamp.cboOtherCollSampDblClick
+ 0001:00297754       fODLab..TfrmODLab
+ 0001:00297FBC       fODLab..TCollSamp
+ 0001:0029803C       fODLab..TLabTest
+ 0001:0029816C       fODLab.TfrmODLab.FormCreate
+ 0001:00298758       fODLab.TfrmODLab.InitDialog
+ 0001:00298878       fODLab.TfrmODLab.SetupDialog
+ 0001:00298D78       fODLab.TLabTest.Create
+ 0001:002992E4       fODLab.TLabTest.Destroy
+ 0001:0029937C       fODLab.TLabTest.IndexOfCollSamp
+ 0001:002993B8       fODLab.TLabTest.LoadAllSamples
+ 0001:002994DC       fODLab.TLabTest.FillCollSampList
+ 0001:00299890       fODLab.TLabTest.SetCollSampDflts
+ 0001:00299928       fODLab.TLabTest.ChangeCollSamp
+ 0001:00299934       fODLab.TLabTest.ChangeSpecimen
+ 0001:0029994C       fODLab.TLabTest.ChangeUrgency
+ 0001:00299964       fODLab.TLabTest.ChangeComment
+ 0001:00299974       fODLab.TLabTest.LabCanCollect
+ 0001:002999A0       fODLab.TLabTest.LoadCollSamp
+ 0001:00299B54       fODLab.TLabTest.LoadSpecimen
+ 0001:00299D68       fODLab.TfrmODLab.LoadCollType
+ 0001:0029A038       fODLab.TLabTest.LoadUrgency
+ 0001:0029A168       fODLab.TLabTest.NameOfCollSamp
+ 0001:0029A1A4       fODLab.TLabTest.NameOfSpecimen
+ 0001:0029A2BC       fODLab.TLabTest.NameOfUrgency
+ 0001:0029A384       fODLab.TLabTest.ObtainCollSamp
+ 0001:0029A38C       fODLab.TLabTest.ObtainSpecimen
+ 0001:0029A3C4       fODLab.TLabTest.ObtainUrgency
+ 0001:0029A3CC       fODLab.TLabTest.ObtainComment
+ 0001:0029A3E0       fODLab.TfrmODLab.ControlChange
+ 0001:0029AC98       fODLab.SetError
+ 0001:0029ACF4       fODLab.TfrmODLab.Validate
+ 0001:0029C2D0       fODLab.TfrmODLab.DisplayChangedOrders
+ 0001:0029C600       fODLab.TfrmODLab.cboAvailTestNeedData
+ 0001:0029C63C       fODLab.TfrmODLab.cboAvailTestExit
+ 0001:0029C770       fODLab.TfrmODLab.cboAvailTestSelect
+ 0001:0029D288       fODLab.TfrmODLab.cboCollSampChange
+ 0001:0029D484       fODLab.TfrmODLab.cboUrgencyChange
+ 0001:0029D504       fODLab.TfrmODLab.cboSpecimenChange
+ 0001:0029D5E8       fODLab.TfrmODLab.cboCollTimeChange
+ 0001:0029D6CC       fODLab.TfrmODLab.cboFrequencyChange
+ 0001:0029D8B4       fODLab.TfrmODLab.cboCollTypeChange
+ 0001:0029DA84       fODLab.TfrmODLab.SetupCollTimes
+ 0001:0029E240       fODLab.TfrmODLab.FormClose
+ 0001:0029E270       fODLab.TfrmODLab.LoadRequiredComment
+ 0001:0029E358       fODLab.TfrmODLab.txtOrderCommentExit
+ 0001:0029E480       fODLab.TfrmODLab.txtAntiCoagulantExit
+ 0001:0029E5B8       fODLab.TfrmODLab.txtUrineVolumeExit
+ 0001:0029E638       fODLab.TfrmODLab.grpPeakTroughClick
+ 0001:0029E7A4       fODLab.TfrmODLab.txtDoseTimeExit
+ 0001:0029E8A4       fODLab.TfrmODLab.txtDrawTimeExit
+ 0001:0029E9A4       fODLab.TfrmODLab.DoseDrawComment
+ 0001:0029EAB4       fODLab.TfrmODLab.txtAddlCommentExit
+ 0001:0029EAD0       fODLab.TfrmODLab.DisableCommentPanels
+ 0001:0029EB48       fODLab.TfrmODLab.cboCollSampKeyPause
+ 0001:0029EBEC       fODLab.TfrmODLab.cboCollSampMouseClick
+ 0001:0029ECC0       fODLab.TfrmODLab.ValidCollTime
+ 0001:0029EEA0       fODLab.TfrmODLab.cboCollTimeExit
+ 0001:0029F174       fODLab.TfrmODLab.cboSpecimenMouseClick
+ 0001:0029F1E4       fODLab.TfrmODLab.GetAllCollSamples
+ 0001:0029F328       fODLab.TfrmODLab.GetAllSpecimens
+ 0001:0029F454       fODLab.TfrmODLab.cboSpecimenKeyPause
+ 0001:0029F4CC       fODLab.TfrmODLab.cmdImmedCollClick
+ 0001:0029F594       fODLab.TfrmODLab.ReadServerVariables
+ 0001:0029F6E0       fODLab.TfrmODLab.DetermineCollectionDefaults
+ 0001:0029F97C       fODLab.TfrmODLab.pnlCollTimeButtonEnter
+ 0001:0029F998       fODLab.TfrmODLab.pnlCollTimeButtonExit
+ 0001:0029F9B4       fODLab.TfrmODLab.ViewinReportWindow1Click
+ 0001:0029F9E8       fODLab.Finalization
+ 0001:0029FA88       fODLabOthSpec..TfrmODLabOthSpec
+ 0001:0029FCE0       fODLabOthSpec.SelectOtherSpecimen
+ 0001:0029FDC8       fODLabOthSpec.TfrmODLabOthSpec.cmdCancelClick
+ 0001:0029FDF0       fODLabOthSpec.TfrmODLabOthSpec.cmdOKClick
+ 0001:0029FF04       fODLabOthSpec.TfrmODLabOthSpec.cboOtherSpecDblClick
+ 0001:0029FF0C       fODLabOthSpec.TfrmODLabOthSpec.cboOtherSpecNeedData
+ 0001:0029FF34       fODBBank..TfrmODBBank
+ 0001:002A08BC       fODBBank..TCollSamp
+ 0001:002A093C       fODBBank..TLabTest
+ 0001:002A0A6C       fODBBank.TfrmODBBank.FormCreate
+ 0001:002A137C       fODBBank.TfrmODBBank.InitDialog
+ 0001:002A13F0       fODBBank.TfrmODBBank.SetupDialog
+ 0001:002A35DC       fODBBank.TfrmODBBank.SetOnQuickOrder
+ 0001:002A666C       fODBBank.TLabTest.Create
+ 0001:002A6C10       fODBBank.TLabTest.Destroy
+ 0001:002A6CA8       fODBBank.TLabTest.IndexOfCollSamp
+ 0001:002A6CE4       fODBBank.TLabTest.LoadAllSamples
+ 0001:002A6E08       fODBBank.TLabTest.FillCollSampList
+ 0001:002A71BC       fODBBank.TLabTest.SetCollSampDflts
+ 0001:002A7254       fODBBank.TLabTest.ChangeSpecimen
+ 0001:002A726C       fODBBank.TLabTest.LabCanCollect
+ 0001:002A7298       fODBBank.TLabTest.ObtainCollSamp
+ 0001:002A72A0       fODBBank.TLabTest.ObtainComment
+ 0001:002A72B4       fODBBank.TfrmODBBank.ExtractModifiers
+ 0001:002A72D8       fODBBank.TfrmODBBank.ExtractReasons
+ 0001:002A72F8       fODBBank.TfrmODBBank.ExtractUrgencies
+ 0001:002A731C       fODBBank.TfrmODBBank.ExtractTNSOrders
+ 0001:002A7340       fODBBank.TfrmODBBank.ExtractSurgeries
+ 0001:002A7364       fODBBank.TfrmODBBank.ExtractSpecimens
+ 0001:002A7388       fODBBank.TfrmODBBank.ExtractTypeScreen
+ 0001:002A73B0       fODBBank.TfrmODBBank.ExtractOther
+ 0001:002A73D0       fODBBank.TfrmODBBank.ExtractSpecimen
+ 0001:002A73F4       fODBBank.TfrmODBBank.ExtractPatientInfo
+ 0001:002A7414       fODBBank.TfrmODBBank.ExtractTests
+ 0001:002A7434       fODBBank.TfrmODBBank.ExtractMSBOS
+ 0001:002A7454       fODBBank.SetError
+ 0001:002A74B0       fODBBank.TfrmODBBank.Validate
+ 0001:002A7574       fODBBank.SetError
+ 0001:002A75D0       fODBBank.TfrmODBBank.ValidateAdd
+ 0001:002A85CC       fODBBank.TfrmODBBank.ValidAdd
+ 0001:002A86E0       fODBBank.TfrmODBBank.ValidCollTime
+ 0001:002A88C0       fODBBank.TfrmODBBank.SetupCollTimes
+ 0001:002A907C       fODBBank.TfrmODBBank.LoadCollType
+ 0001:002A934C       fODBBank.TfrmODBBank.ReadServerVariables
+ 0001:002A9498       fODBBank.TfrmODBBank.cboQuickClick
+ 0001:002A94A0       fODBBank.TfrmODBBank.cboReasonsChange
+ 0001:002A961C       fODBBank.TfrmODBBank.cboReasonsEnter
+ 0001:002A96A0       fODBBank.TfrmODBBank.cboReasonsExit
+ 0001:002A9724       fODBBank.TfrmODBBank.cboAvailTestSelect
+ 0001:002AAD3C       fODBBank.TfrmODBBank.cboAvailCompSelect
+ 0001:002AC7AC       fODBBank.TfrmODBBank.DisableCommentPanels
+ 0001:002AC7BC       fODBBank.TfrmODBBank.DisableComponentControls
+ 0001:002AC804       fODBBank.TfrmODBBank.EnableComponentControls
+ 0001:002AC980       fODBBank.TfrmODBBank.DisableDiagTestControls
+ 0001:002AC9F0       fODBBank.TfrmODBBank.EnableDiagTestControls
+ 0001:002ACAD8       fODBBank.TfrmODBBank.LoadRequiredComment
+ 0001:002ACAF4       fODBBank.TfrmODBBank.cboAvailTestExit
+ 0001:002ACC28       fODBBank.TfrmODBBank.cboAvailCompChange
+ 0001:002ACC38       fODBBank.TfrmODBBank.cboAvailCompExit
+ 0001:002ACD6C       fODBBank.TfrmODBBank.cboAvailTestNeedData
+ 0001:002ACD98       fODBBank.TfrmODBBank.cboAvailCompNeedData
+ 0001:002ACDC4       fODBBank.TfrmODBBank.cmdImmedCollClick
+ 0001:002ACE8C       fODBBank.TfrmODBBank.pgeProductChange
+ 0001:002ACFB8       fODBBank.TfrmODBBank.cboCollTimeChange
+ 0001:002AD2F4       fODBBank.TfrmODBBank.cboCollTypeChange
+ 0001:002AD604       fODBBank.TfrmODBBank.cboModifiersChange
+ 0001:002AD8F8       fODBBank.TfrmODBBank.LoadModifiers
+ 0001:002AD97C       fODBBank.TfrmODBBank.LoadReasons
+ 0001:002ADA00       fODBBank.TfrmODBBank.LoadUrgencies
+ 0001:002ADADC       fODBBank.TfrmODBBank.lvSelectionListClick
+ 0001:002ADE58       fODBBank.TfrmODBBank.memDiagCommentChange
+ 0001:002ADFE0       fODBBank.TfrmODBBank.FormDestroy
+ 0001:002AE038       fODBBank.TfrmODBBank.btnRemoveClick
+ 0001:002AF384       fODBBank.TfrmODBBank.btnUpdateCommentsClick
+ 0001:002AF44C       fODBBank.TfrmODBBank.btnCancelCommentClick
+ 0001:002AF46C       fODBBank.TfrmODBBank.btnRemoveAllClick
+ 0001:002AF618       fODBBank.TfrmODBBank.cmdAcceptClick
+ 0001:002AF804       fODBBank.TfrmODBBank.calWantTimeChange
+ 0001:002AFA70       fODBBank.TfrmODBBank.chkConsentClick
+ 0001:002AFB28       fODBBank.TfrmODBBank.cboUrgencyChange
+ 0001:002AFD58       fODBBank.TfrmODBBank.cboUrgencyExit
+ 0001:002AFDDC       fODBBank.TfrmODBBank.cboSurgeryChange
+ 0001:002B0910       fODBBank.TfrmODBBank.cboSurgeryClick
+ 0001:002B0998       fODBBank.TfrmODBBank.tQuantityChange
+ 0001:002B128C       fODBBank.TfrmODBBank.tQuantityClick
+ 0001:002B12B0       fODBBank.TfrmODBBank.tQuantityEnter
+ 0001:002B12D4       fODBBank.TfrmODBBank.calCollTimeChange
+ 0001:002B16D4       fODBBank.Finalization
+ 0001:002B178C       rODRad.ODForRad
+ 0001:002B17F0       rODRad.SubsetOfRadProcs
+ 0001:002B1858       rODRad.ImagingMessage
+ 0001:002B1940       rODRad.PatientOnIsolationProcedures
+ 0001:002B19E0       rODRad.SubsetOfRadiologists
+ 0001:002B1A28       rODRad.SubsetOfImagingTypes
+ 0001:002B1A70       rODRad.SubsetOfRadSources
+ 0001:002B1AF4       rODRad.LocationType
+ 0001:002B1B38       rODRad.ReasonForStudyCarryOn
+ 0001:002B1BC8       fODRadConShRes..TfrmODRadConShRes
+ 0001:002B1E14       fODRadConShRes.SelectSource
+ 0001:002B2048       fODRadConShRes.TfrmODRadConShRes.cmdCancelClick
+ 0001:002B2068       fODRadConShRes.TfrmODRadConShRes.cmdOKClick
+ 0001:002B225C       fODRadApproval..TfrmODRadApproval
+ 0001:002B2498       fODRadApproval.SelectApprovingRadiologist
+ 0001:002B2594       fODRadApproval.TfrmODRadApproval.cmdCancelClick
+ 0001:002B259C       fODRadApproval.TfrmODRadApproval.cmdOKClick
+ 0001:002B268C       fODRad..TfrmODRad
+ 0001:002B2CEC       fODRad.TfrmODRad.SetupDialog
+ 0001:002B3348       fODRad.TfrmODRad.InitDialog
+ 0001:002B39F8       fODRad.TfrmODRad.ControlChange
+ 0001:002B43D8       fODRad.SetError
+ 0001:002B4434       fODRad.GetOrderingLocation
+ 0001:002B468C       fODRad.TfrmODRad.Validate
+ 0001:002B4FF0       fODRad.TfrmODRad.cboProcedureNeedData
+ 0001:002B501C       fODRad.TfrmODRad.cboAvailModMouseClick
+ 0001:002B51B4       fODRad.TfrmODRad.cmdRemoveClick
+ 0001:002B5340       fODRad.TfrmODRad.cboProcedureSelect
+ 0001:002B56FC       fODRad.TfrmODRad.SetModifierList
+ 0001:002B580C       fODRad.TfrmODRad.cboCategoryChange
+ 0001:002B5A50       fODRad.TfrmODRad.FormCreate
+ 0001:002B5CB8       fODRad.TfrmODRad.cboImTypeChange
+ 0001:002B5CC0       fODRad.TfrmODRad.memHistoryExit
+ 0001:002B5D44       fODRad.TfrmODRad.FormResize
+ 0001:002B5D8C       fODRad.TfrmODRad.cboAvailModKeyDown
+ 0001:002B5DA0       fODRad.TfrmODRad.calPreOpChange
+ 0001:002B5E08       fODRad.TfrmODRad.SetDefaultPregant
+ 0001:002B5E44       fODRad.TfrmODRad.cmdAcceptClick
+ 0001:002B5F40       fODRad.TfrmODRad.cboProcedureExit
+ 0001:002B6110       fODRad.TfrmODRad.cboImTypeExit
+ 0001:002B6118       fODRad.TfrmODRad.FormClose
+ 0001:002B6148       fODRad.TfrmODRad.chkIsolationExit
+ 0001:002B6184       fODRad.TfrmODRad.calPreOpExit
+ 0001:002B61C0       fODRad.TfrmODRad.NoPregnantSelection
+ 0001:002B6204       fODRad.TfrmODRad.cboImTypeDropDownClose
+ 0001:002B620C       fODRad.TfrmODRad.ImageTypeChange
+ 0001:002B6314       fODRad.TfrmODRad.FormFirstOpened
+ 0001:002B6374       fODRad.Finalization
+ 0001:002B63D8       fODText..TfrmODText
+ 0001:002B661C       fODText.TfrmODText.FormCreate
+ 0001:002B66B8       fODText.TfrmODText.InitDialog
+ 0001:002B66D4       fODText.TfrmODText.SetupDialog
+ 0001:002B6784       fODText.SetError
+ 0001:002B67E0       fODText.TfrmODText.Validate
+ 0001:002B6A24       fODText.TfrmODText.cmdAcceptClick
+ 0001:002B6AA4       fODText.TfrmODText.ControlChange
+ 0001:002B6C54       fODMedComplex..TfrmODMedComplex
+ 0001:002B708C       fODMedComplex.ExecuteComplexDose
+ 0001:002B7700       fODMedComplex.TfrmODMedComplex.ValFor
+ 0001:002B794C       fODMedComplex.FindInCombo
+ 0001:002B7A78       fODMedComplex.TfrmODMedComplex.FormCreate
+ 0001:002B7B44       fODMedComplex.TfrmODMedComplex.grdDosesMouseDown
+ 0001:002B7BB0       fODMedComplex.TfrmODMedComplex.grdDosesKeyPress
+ 0001:002B7C00       fODMedComplex.TfrmODMedComplex.grdDosesMouseUp
+ 0001:002B7C88       fODMedComplex.TfrmODMedComplex.grdDosesDrawCell
+ 0001:002B7D28       fODMedComplex.PlaceControl
+ 0001:002B7DAC       fODMedComplex.TfrmODMedComplex.ShowEditor
+ 0001:002B81A4       fODMedComplex.TfrmODMedComplex.UMDelayEvent
+ 0001:002B8278       fODMedComplex.TfrmODMedComplex.pnlInstructEnter
+ 0001:002B82AC       fODMedComplex.TfrmODMedComplex.pnlInstructExit
+ 0001:002B8420       fODMedComplex.TfrmODMedComplex.btnUnitsClick
+ 0001:002B8460       fODMedComplex.TfrmODMedComplex.UnitClick
+ 0001:002B8470       fODMedComplex.TfrmODMedComplex.cboRouteClick
+ 0001:002B8638       fODMedComplex.TfrmODMedComplex.cboRouteExit
+ 0001:002B8658       fODMedComplex.TfrmODMedComplex.cboScheduleExit
+ 0001:002B86CC       fODMedComplex.TfrmODMedComplex.pnlDaysEnter
+ 0001:002B86DC       fODMedComplex.TfrmODMedComplex.pnlDaysExit
+ 0001:002B87BC       fODMedComplex.TfrmODMedComplex.txtDaysChange
+ 0001:002B882C       fODMedComplex.TfrmODMedComplex.cmdInsertClick
+ 0001:002B89BC       fODMedComplex.TfrmODMedComplex.cmdRemoveClick
+ 0001:002B8A38       fODMedComplex.SetError
+ 0001:002B8A94       fODMedComplex.TfrmODMedComplex.Validate
+ 0001:002B8DD4       fODMedComplex.TfrmODMedComplex.cmdOKClick
+ 0001:002B8E64       fODMedComplex.TfrmODMedComplex.cmdCancelClick
+ 0001:002B8E6C       fODMedFA..TfrmODMedFA
+ 0001:002B90B0       fODMedFA.SelectFormularyAlt
+ 0001:002B9368       fODMedFA.TfrmODMedFA.FormCreate
+ 0001:002B9378       fODMedFA.TfrmODMedFA.lstFormAltClick
+ 0001:002B939C       fODMedFA.TfrmODMedFA.cmdYesClick
+ 0001:002B9418       fODMedFA.TfrmODMedFA.cmdNoClick
+ 0001:002B9420       fODMedOut..TfrmODMedOut
+ 0001:002B9900       fODMedOut.TfrmODMedOut.FormCreate
+ 0001:002B9A78       fODMedOut.TfrmODMedOut.InitDialog
+ 0001:002B9BD4       fODMedOut.TfrmODMedOut.SetupDialog
+ 0001:002B9E88       fODMedOut.SetError
+ 0001:002B9EE4       fODMedOut.TfrmODMedOut.Validate
+ 0001:002BA7BC       fODMedOut.TfrmODMedOut.ResetOnMedChange
+ 0001:002BA848       fODMedOut.TfrmODMedOut.SetAltCombo
+ 0001:002BA938       fODMedOut.TfrmODMedOut.SetOnOISelect
+ 0001:002BAB5C       fODMedOut.TfrmODMedOut.cboMedicationNeedData
+ 0001:002BAB98       fODMedOut.TfrmODMedOut.cboMedicationSelect
+ 0001:002BAE74       fODMedOut.TfrmODMedOut.CheckFormAlt
+ 0001:002BAFA4       fODMedOut.TfrmODMedOut.SetMaxRefills
+ 0001:002BB0F8       fODMedOut.TfrmODMedOut.cboDispenseExit
+ 0001:002BB1E8       fODMedOut.TfrmODMedOut.cboDispenseMouseClick
+ 0001:002BB290       fODMedOut.TfrmODMedOut.SetupNouns
+ 0001:002BB398       fODMedOut.TfrmODMedOut.btnUnitsClick
+ 0001:002BB3D8       fODMedOut.TfrmODMedOut.UnitClick
+ 0001:002BB3E8       fODMedOut.TfrmODMedOut.SetComplex
+ 0001:002BB480       fODMedOut.TfrmODMedOut.SetSimple
+ 0001:002BB574       fODMedOut.TfrmODMedOut.SetInstructions
+ 0001:002BB948       fODMedOut.TfrmODMedOut.cmdComplexClick
+ 0001:002BB9C8       fODMedOut.TfrmODMedOut.txtQuantityEnter
+ 0001:002BBA38       fODMedOut.TfrmODMedOut.SetAskSC
+ 0001:002BBAF8       fODMedOut.TfrmODMedOut.cboSCEnter
+ 0001:002BBB44       fODMedOut.TfrmODMedOut.memCommentsEnter
+ 0001:002BBB4C       fODMedOut.TfrmODMedOut.ControlChange
+ 0001:002BC1B4       fODMedIn..TfrmODMedIn
+ 0001:002BC528       fODMedIn.TfrmODMedIn.FormCreate
+ 0001:002BC698       fODMedIn.TfrmODMedIn.InitDialog
+ 0001:002BC7F0       fODMedIn.TfrmODMedIn.SetupDialog
+ 0001:002BC9C8       fODMedIn.SetError
+ 0001:002BCA34       fODMedIn.TfrmODMedIn.Validate
+ 0001:002BD324       fODMedIn.TfrmODMedIn.ResetOnMedChange
+ 0001:002BD384       fODMedIn.TfrmODMedIn.SetAltCombo
+ 0001:002BD4A0       fODMedIn.TfrmODMedIn.SetOnOISelect
+ 0001:002BD678       fODMedIn.TfrmODMedIn.cboMedicationNeedData
+ 0001:002BD6C0       fODMedIn.TfrmODMedIn.cboMedicationSelect
+ 0001:002BD9C4       fODMedIn.TfrmODMedIn.CheckFormAlt
+ 0001:002BDB10       fODMedIn.TfrmODMedIn.cboDispenseExit
+ 0001:002BDBF0       fODMedIn.TfrmODMedIn.cboDispenseMouseClick
+ 0001:002BDCA8       fODMedIn.TfrmODMedIn.ControlChange
+ 0001:002BE1CC       fODMisc..TfrmODMisc
+ 0001:002BE434       fODMisc.TfrmODMisc.FormCreate
+ 0001:002BE4F0       fODMisc.TfrmODMisc.InitDialog
+ 0001:002BE518       fODMisc.TfrmODMisc.SetupDialog
+ 0001:002BE5F8       fODMisc.SetError
+ 0001:002BE654       fODMisc.TfrmODMisc.Validate
+ 0001:002BE818       fODMisc.TfrmODMisc.cboCareNeedData
+ 0001:002BE854       fODMisc.TfrmODMisc.ControlChange
+ 0001:002BEA9C       fODDiet..TfrmODDiet
+ 0001:002BF70C       fODDiet..TTFProduct
+ 0001:002BF778       fODDiet.TfrmODDiet.FormCreate
+ 0001:002BFBA0       fODDiet.TfrmODDiet.FormDestroy
+ 0001:002BFBD0       fODDiet.TfrmODDiet.FormResize
+ 0001:002BFD88       fODDiet.TfrmODDiet.InitDialog
+ 0001:002BFDB4       fODDiet.TfrmODDiet.SetupDialog
+ 0001:002C02C0       fODDiet.SetError
+ 0001:002C032C       fODDiet.MealTimePassed
+ 0001:002C04B4       fODDiet.OPMealTimePassed
+ 0001:002C05D8       fODDiet.TfrmODDiet.Validate
+ 0001:002C1560       fODDiet.TfrmODDiet.nbkDietChanging
+ 0001:002C1850       fODDiet.TfrmODDiet.nbkDietChange
+ 0001:002C24F8       fODDiet.TfrmODDiet.DietCheckForNPO
+ 0001:002C25F4       fODDiet.TfrmODDiet.DietCheckForTF
+ 0001:002C2788       fODDiet.TfrmODDiet.ResetControlsDO
+ 0001:002C2824       fODDiet.TfrmODDiet.SetValuesFromResponsesDO
+ 0001:002C2A7C       fODDiet.TfrmODDiet.cboDietAvailNeedData
+ 0001:002C2AAC       fODDiet.SetError
+ 0001:002C2AF0       fODDiet.TfrmODDiet.cboDietAvailMouseClick
+ 0001:002C3064       fODDiet.TfrmODDiet.cboDietAvailExit
+ 0001:002C3104       fODDiet.TfrmODDiet.cmdRemoveClick
+ 0001:002C31B0       fODDiet.TfrmODDiet.DietChange
+ 0001:002C35EC       fODDiet.TfrmODDiet.ResetControlsTF
+ 0001:002C3634       fODDiet.TfrmODDiet.SetValuesFromResponsesTF
+ 0001:002C38F4       fODDiet.TfrmODDiet.TFClearGrid
+ 0001:002C3964       fODDiet.TfrmODDiet.cboProductMouseClick
+ 0001:002C3BC8       fODDiet.TfrmODDiet.cboProductExit
+ 0001:002C3C68       fODDiet.TfrmODDiet.grdSelectedDrawCell
+ 0001:002C3D44       fODDiet.PlaceControl
+ 0001:002C3DD0       fODDiet.TfrmODDiet.grdSelectedSelectCell
+ 0001:002C3F00       fODDiet.TfrmODDiet.SetNextCell
+ 0001:002C3F2C       fODDiet.TfrmODDiet.TFMoveToNextCell
+ 0001:002C3FE0       fODDiet.TfrmODDiet.TFSetAmountForRow
+ 0001:002C4164       fODDiet.TfrmODDiet.TFStrengthCode
+ 0001:002C4210       fODDiet.TfrmODDiet.cboStrengthEnter
+ 0001:002C423C       fODDiet.TfrmODDiet.cboStrengthKeyDown
+ 0001:002C42D0       fODDiet.TfrmODDiet.cboStrengthChange
+ 0001:002C4378       fODDiet.TfrmODDiet.cboStrengthExit
+ 0001:002C4450       fODDiet.TfrmODDiet.txtQuantityEnter
+ 0001:002C4470       fODDiet.TfrmODDiet.txtQuantityKeyDown
+ 0001:002C470C       fODDiet.TfrmODDiet.txtQuantityChange
+ 0001:002C47B4       fODDiet.TfrmODDiet.txtQuantityExit
+ 0001:002C488C       fODDiet.TfrmODDiet.cmdTFRemoveClick
+ 0001:002C495C       fODDiet.TfrmODDiet.TFChange
+ 0001:002C4D94       fODDiet.TfrmODDiet.ResetControlsEL
+ 0001:002C4EFC       fODDiet.TfrmODDiet.SetValuesFromResponsesEL
+ 0001:002C5420       fODDiet.TfrmODDiet.GetMealTime
+ 0001:002C551C       fODDiet.TfrmODDiet.GetDaysOfWeek
+ 0001:002C568C       fODDiet.TfrmODDiet.IsEarlyTray
+ 0001:002C56EC       fODDiet.ActivateButton
+ 0001:002C5760       fODDiet.SetMealTimes
+ 0001:002C58C8       fODDiet.TfrmODDiet.grpMealClick
+ 0001:002C5A54       fODDiet.TfrmODDiet.SetEnableDOW
+ 0001:002C5AEC       fODDiet.TfrmODDiet.calELStartEnter
+ 0001:002C5B6C       fODDiet.TfrmODDiet.calELStartChange
+ 0001:002C5BE8       fODDiet.TfrmODDiet.calELStartExit
+ 0001:002C5CD8       fODDiet.TfrmODDiet.calELStopChange
+ 0001:002C5DA4       fODDiet.TfrmODDiet.ELChange
+ 0001:002C628C       fODDiet.TfrmODDiet.ResetControlsIP
+ 0001:002C62BC       fODDiet.TfrmODDiet.SetValuesFromResponsesIP
+ 0001:002C6350       fODDiet.TfrmODDiet.IPChange
+ 0001:002C6544       fODDiet.TfrmODDiet.ResetControlsAO
+ 0001:002C6570       fODDiet.TfrmODDiet.SetValuesFromResponsesAO
+ 0001:002C6604       fODDiet.TfrmODDiet.AOChange
+ 0001:002C67BC       fODDiet.TfrmODDiet.cboOPDietAvailMouseClick
+ 0001:002C6AFC       fODDiet.TfrmODDiet.cboOPDietAvailExit
+ 0001:002C6B9C       fODDiet.TfrmODDiet.ResetControlsOP
+ 0001:002C6DEC       fODDiet.TfrmODDiet.SetValuesFromResponsesOP
+ 0001:002C727C       fODDiet.TfrmODDiet.calOPStartEnter
+ 0001:002C72FC       fODDiet.TfrmODDiet.calOPStartChange
+ 0001:002C7384       fODDiet.TfrmODDiet.FMDOW
+ 0001:002C73BC       fODDiet.TfrmODDiet.FMDays
+ 0001:002C7480       fODDiet.TfrmODDiet.calOPStartExit
+ 0001:002C75F0       fODDiet.TfrmODDiet.calOPStopChange
+ 0001:002C7768       fODDiet.TfrmODDiet.OPChange
+ 0001:002C7BDC       fODDiet.TfrmODDiet.grpOPMealClick
+ 0001:002C7BF8       fODDiet.TfrmODDiet.SetEnableOPDOW
+ 0001:002C7E40       fODDiet.TfrmODDiet.GetOPDaysOfWeek
+ 0001:002C7FB0       fODDiet.TfrmODDiet.cmdOPRemoveClick
+ 0001:002C805C       fODDiet.TfrmODDiet.GetOPMealWindow
+ 0001:002C80EC       fODDiet.TfrmODDiet.OPDietCheckForNPO
+ 0001:002C81E8       fODDiet.TfrmODDiet.OPDietCheckForTF
+ 0001:002C837C       fODDiet.TfrmODDiet.cmdAcceptClick
+ 0001:002C8514       fODDiet.TfrmODDiet.FormKeyDown
+ 0001:002C8598       fODDiet.TfrmODDiet.cboOPDietAvailKeyDown
+ 0001:002C85C4       fODDiet.TfrmODDiet.PatientHasRecurringMeals
+ 0001:002C87AC       fODDiet.Finalization
+ 0001:002C8A64       uEventHooks..TCPRSBroker
+ 0001:002C8BE4       uEventHooks..TCPRSState
+ 0001:002C8C50       uEventHooks..TCPRSEventHookManager
+ 0001:002C8CCC       uEventHooks.EnsureEventHookObjects
+ 0001:002C8CE8       uEventHooks.TCPRSBroker.Create
+ 0001:002C8DB0       uEventHooks.TCPRSBroker.CallRPC
+ 0001:002C90A4       uEventHooks.TCPRSBroker.DebugMode
+ 0001:002C90F0       uEventHooks.TCPRSBroker.Get_ClearParameters
+ 0001:002C9130       uEventHooks.TCPRSBroker.Get_ClearResults
+ 0001:002C9170       uEventHooks.TCPRSBroker.Get_Param
+ 0001:002C91C4       uEventHooks.TCPRSBroker.Get_ParamList
+ 0001:002C9248       uEventHooks.TCPRSBroker.Get_ParamType
+ 0001:002C92B8       uEventHooks.TCPRSBroker.Get_Results
+ 0001:002C9304       uEventHooks.TCPRSBroker.Get_RPCVersion
+ 0001:002C9350       uEventHooks.TCPRSBroker.ParamCount
+ 0001:002C9394       uEventHooks.TCPRSBroker.ParamListCount
+ 0001:002C93E4       uEventHooks.TCPRSBroker.Port
+ 0001:002C9428       uEventHooks.TCPRSBroker.Server
+ 0001:002C947C       uEventHooks.TCPRSBroker.Set_ClearParameters
+ 0001:002C94BC       uEventHooks.TCPRSBroker.Set_ClearResults
+ 0001:002C94FC       uEventHooks.TCPRSBroker.Set_Param
+ 0001:002C9548       uEventHooks.TCPRSBroker.Set_ParamList
+ 0001:002C95C4       uEventHooks.TCPRSBroker.Set_ParamType
+ 0001:002C9648       uEventHooks.TCPRSBroker.Set_Results
+ 0001:002C9688       uEventHooks.TCPRSBroker.Set_RPCVersion
+ 0001:002C96C8       uEventHooks.TCPRSBroker.SetContext
+ 0001:002C9718       uEventHooks.TCPRSBroker.Initialize
+ 0001:002C9770       uEventHooks.TCPRSBroker.Destroy
+ 0001:002C97A8       uEventHooks.TCPRSState.Create
+ 0001:002C98A0       uEventHooks.TCPRSState.Handle
+ 0001:002C98EC       uEventHooks.TCPRSState.LocationIEN
+ 0001:002C9930       uEventHooks.TCPRSState.LocationName
+ 0001:002C9994       uEventHooks.TCPRSState.PatientDFN
+ 0001:002C99E4       uEventHooks.TCPRSState.PatientDOB
+ 0001:002C9A68       uEventHooks.TCPRSState.PatientName
+ 0001:002C9AB8       uEventHooks.TCPRSState.PatientSSN
+ 0001:002C9B08       uEventHooks.TCPRSState.UserDUZ
+ 0001:002C9B70       uEventHooks.TCPRSState.UserName
+ 0001:002C9BC0       uEventHooks.TCPRSEventHookManager.Create
+ 0001:002C9C30       uEventHooks.TCPRSEventHookManager.Destroy
+ 0001:002C9C74       uEventHooks.TCPRSEventHookManager.EnterCriticalSection
+ 0001:002C9C80       uEventHooks.TCPRSEventHookManager.LeaveCriticalSection
+ 0001:002C9C8C       uEventHooks.TCPRSEventHookManager.ProcessComObject
+ 0001:002CA034       uEventHooks.FreeEventHookObjects
+ 0001:002CA040       uEventHooks.RegisterCPRSTypeLibrary
+ 0001:002CA2E0       uEventHooks.ProcessPatientChangeEventHook
+ 0001:002CA3A8       uEventHooks.ProcessOrderAcceptEventHook
+ 0001:002CA488       uEventHooks.GetCOMObjectText
+ 0001:002CA55C       uEventHooks.COMObjectOK
+ 0001:002CA5D0       uEventHooks.COMObjectActive
+ 0001:002CA5D8       uEventHooks.Finalization
+ 0001:002CA610       fODBase..TCtrlInit
+ 0001:002CA688       fODBase..TCtrlInits
+ 0001:002CA6E0       fODBase..TResponses
+ 0001:002CA784       fODBase..TfrmODBase
+ 0001:002CAAAC       fODBase.ClearControl
+ 0001:002CAC10       fODBase.ResetControl
+ 0001:002CAD54       fODBase.TCtrlInit.Create
+ 0001:002CADA0       fODBase.TCtrlInit.Destroy
+ 0001:002CADDC       fODBase.TCtrlInits.Create
+ 0001:002CAE38       fODBase.TCtrlInits.Destroy
+ 0001:002CAEC0       fODBase.TCtrlInits.ClearOI
+ 0001:002CAF10       fODBase.TCtrlInits.ExtractInits
+ 0001:002CB184       fODBase.TCtrlInits.LoadDefaults
+ 0001:002CB1B0       fODBase.TCtrlInits.LoadOrderItem
+ 0001:002CB1DC       fODBase.TCtrlInits.FindInitByName
+ 0001:002CB298       fODBase.TCtrlInits.SetControl
+ 0001:002CB4D4       fODBase.TCtrlInits.SetListOnly
+ 0001:002CB5CC       fODBase.TCtrlInits.SetPopupMenu
+ 0001:002CB73C       fODBase.TCtrlInits.DefaultText
+ 0001:002CB77C       fODBase.TCtrlInits.TextOf
+ 0001:002CB7BC       fODBase.SortPromptsBySequence
+ 0001:002CB818       fODBase.TResponses.Create
+ 0001:002CB8AC       fODBase.TResponses.Destroy
+ 0001:002CB940       fODBase.TResponses.Clear
+ 0001:002CB9B8       fODBase.TResponses.Clear
+ 0001:002CBA28       fODBase.TResponses.SetDialog
+ 0001:002CBADC       fODBase.TResponses.SetCopyOrder
+ 0001:002CBB98       fODBase.TResponses.SetEditOrder
+ 0001:002CBC3C       fODBase.TResponses.SetQuickOrder
+ 0001:002CBCB4       fODBase.TResponses.SetQuickOrderByID
+ 0001:002CBD3C       fODBase.TResponses.BuildOCItems
+ 0001:002CC078       fODBase.TResponses.EValueFor
+ 0001:002CC0F8       fODBase.TResponses.IValueFor
+ 0001:002CC178       fODBase.TResponses.PromptExists
+ 0001:002CC1D8       fODBase.TResponses.FindResponseByName
+ 0001:002CC254       fODBase.TResponses.IENForPrompt
+ 0001:002CC2BC       fODBase.TResponses.InstanceCount
+ 0001:002CC31C       fODBase.TResponses.NextInstance
+ 0001:002CC3A8       fODBase.TResponses.FindResponseByIEN
+ 0001:002CC420       fODBase.TResponses.FormatResponse
+ 0001:002CC830       fODBase.TResponses.FindPromptByIEN
+ 0001:002CC898       fODBase.TResponses.AppendChildren
+ 0001:002CCA3C       fODBase.TResponses.GetOrderText
+ 0001:002CCE2C       fODBase.TResponses.Update
+ 0001:002CCEBC       fODBase.TResponses.OrderCRC
+ 0001:002CD038       fODBase.TResponses.Remove
+ 0001:002CD078       fODBase.TResponses.SaveQuickOrder
+ 0001:002CD128       fODBase.TResponses.SaveOrder
+ 0001:002CD8D4       fODBase.AssignBPText
+ 0001:002CDAC8       fODBase.TResponses.SetControl
+ 0001:002CDE84       fODBase.TResponses.SetEventDelay
+ 0001:002CDF78       fODBase.TResponses.SetPromptFormat
+ 0001:002CDFE0       fODBase.TfrmODBase.ClearDialogControls
+ 0001:002CE0B0       fODBase.TfrmODBase.SetDisplayGroup
+ 0001:002CE0DC       fODBase.TfrmODBase.SetFillerID
+ 0001:002CE1CC       fODBase.TfrmODBase.InitDialog
+ 0001:002CE200       fODBase.TfrmODBase.OrderForInpatient
+ 0001:002CE27C       fODBase.TfrmODBase.ShowOrderMessage
+ 0001:002CE2F0       fODBase.TfrmODBase.OrderMessage
+ 0001:002CE360       fODBase.TfrmODBase.PreserveControl
+ 0001:002CE384       fODBase.TfrmODBase.SetDialogIEN
+ 0001:002CE3A0       fODBase.TfrmODBase.SetupDialog
+ 0001:002CE4F8       fODBase.TfrmODBase.GetKeyVariable
+ 0001:002CE828       fODBase.TfrmODBase.SetKeyVariables
+ 0001:002CE848       fODBase.TfrmODBase.Validate
+ 0001:002CEB90       fODBase.TfrmODBase.FormCreate
+ 0001:002CED38       fODBase.TfrmODBase.FormDestroy
+ 0001:002CEDDC       fODBase.TfrmODBase.FormKeyPress
+ 0001:002CEE28       fODBase.TfrmODBase.AcceptOrderChecks
+ 0001:002CEF54       fODBase.TfrmODBase.ValidSave
+ 0001:002CF384       fODBase.TfrmODBase.cmdAcceptClick
+ 0001:002CF830       fODBase.TfrmODBase.cmdQuitClick
+ 0001:002CF854       fODBase.TfrmODBase.FormClose
+ 0001:002CF88C       fODBase.TfrmODBase.FormCloseQuery
+ 0001:002CFA24       fODBase.TfrmODBase.updateSig
+ 0001:002CFA30       fODBase.TfrmODBase.memMessageMouseUp
+ 0001:002CFA50       fODBase.TfrmODBase.SetDefaultCoPay
+ 0001:002CFAB8       fODBase.TfrmODBase.DoSetFontSize
+ 0001:002CFB04       fODBase.TfrmODBase.SetFontSize
+ 0001:002CFB20       fODBase.TResponses.GetIENForPrompt
+ 0001:002CFB88       fODBase.TfrmODBase.pnlMessageExit
+ 0001:002CFBA4       fODBase.TfrmODBase.pnlMessageMouseDown
+ 0001:002CFBD4       fODBase.TfrmODBase.pnlMessageMouseMove
+ 0001:002CFC4C       fODBase.TfrmODBase.LESValidationCheck
+ 0001:002CFF10       fODBase.Finalization
+ 0001:002CFF60       rODBase..TPrompt
+ 0001:002CFFF0       rODBase..TResponse
+ 0001:002D0068       rODBase..TDialogItem
+ 0001:002D0190       rODBase.SetupORDIALOG
+ 0001:002D08A0       rODBase.GetQuickName
+ 0001:002D08E0       rODBase.LoadQuickListForOD
+ 0001:002D0930       rODBase.SaveQuickListForOD
+ 0001:002D0974       rODBase.PutQuickOrder
+ 0001:002D0AE8       rODBase.AskAnotherOrder
+ 0001:002D0B74       rODBase.DisplayGroupByName
+ 0001:002D0BF0       rODBase.DisplayGroupForDialog
+ 0001:002D0C6C       rODBase.IdentifyDialog
+ 0001:002D0D68       rODBase.LoadDialogDefinition
+ 0001:002D10F0       rODBase.LoadOrderPrompting
+ 0001:002D15AC       rODBase.ExtractToResponses
+ 0001:002D18D8       rODBase.LoadResponses
+ 0001:002D195C       rODBase.PutNewOrder
+ 0001:002D231C       rODBase.OIMessage
+ 0001:002D23C4       rODBase.OrderMenuStyle
+ 0001:002D2444       rODBase.SubSetOfOrderItems
+ 0001:002D24A8       rODBase.GetDefaultCopay
+ 0001:002D25CC       rODBase.SetDefaultCoPayToNewOrder
+ 0001:002D2BFC       rODBase.SubsetOfEntries
+ 0001:002D2C74       rODBase.ValidateNumericStr
+ 0001:002D2D4C       rODBase.IsPFSSActive
+ 0001:002D2E00       rODBase.CheckAuthForMeds
+ 0001:002D2EA0       rODBase.DispenseMessage
+ 0001:002D2F90       rODBase.QuantityMessage
+ 0001:002D3080       rODBase.RequiresCopay
+ 0001:002D3124       rODBase.LoadFormularyAlt
+ 0001:002D3184       rODBase.LookupRoute
+ 0001:002D324C       rODBase.MedIsSupply
+ 0001:002D32DC       rODBase.MedTypeIsIV
+ 0001:002D3370       rODBase.ODForMedIn
+ 0001:002D33E0       rODBase.ODForIVFluids
+ 0001:002D3450       rODBase.AmountsForIVFluid
+ 0001:002D34A4       rODBase.ODForMedOut
+ 0001:002D3514       rODBase.OIForMedIn
+ 0001:002D357C       rODBase.OIForMedOut
+ 0001:002D35E4       rODBase.RatedDisabilities
+ 0001:002D363C       rODBase.ValidSchedule
+ 0001:002D36CC       rODBase.ValidQuantity
+ 0001:002D3774       rODBase.ODForVitals
+ 0001:002D37B8       rODBase.Finalization
+ 0001:002D3810       rConsults.IdentifyConsultsClass
+ 0001:002D38AC       rConsults.LoadConsultTitles
+ 0001:002D3A2C       rConsults.ResetConsultTitles
+ 0001:002D3A4C       rConsults.DfltConsultTitle
+ 0001:002D3A64       rConsults.DfltConsultTitleName
+ 0001:002D3A88       rConsults.ListConsultTitlesShort
+ 0001:002D3B34       rConsults.SubSetOfConsultTitles
+ 0001:002D3B9C       rConsults.IdentifyClinProcClass
+ 0001:002D3C38       rConsults.LoadClinProcTitles
+ 0001:002D3DB8       rConsults.ResetClinProcTitles
+ 0001:002D3DD8       rConsults.DfltClinProcTitle
+ 0001:002D3DF0       rConsults.DfltClinProcTitleName
+ 0001:002D3E14       rConsults.ListClinProcTitlesShort
+ 0001:002D3EC0       rConsults.SubSetOfClinProcTitles
+ 0001:002D3F28       rConsults.GetConsultsList
+ 0001:002D4178       rConsults.LoadConsultDetail
+ 0001:002D41C8       rConsults.DisplayResults
+ 0001:002D421C       rConsults.GetConsultRec
+ 0001:002D476C       rConsults.SubSetOfStatus
+ 0001:002D47C4       rConsults.SubSetOfUrgencies
+ 0001:002D481C       rConsults.FindConsult
+ 0001:002D48A0       rConsults.GetAssignableMedResults
+ 0001:002D48F4       rConsults.GetRemovableMedResults
+ 0001:002D4948       rConsults.GetDetailedMedicineResults
+ 0001:002D49DC       rConsults.AttachMedicineResult
+ 0001:002D4AA0       rConsults.RemoveMedicineResult
+ 0001:002D4B48       rConsults.ConsultServiceUser
+ 0001:002D4C98       rConsults.GetActionMenuLevel
+ 0001:002D4E2C       rConsults.ReceiveConsult
+ 0001:002D4EAC       rConsults.ScheduleConsult
+ 0001:002D4F80       rConsults.DenyConsult
+ 0001:002D501C       rConsults.DiscontinueConsult
+ 0001:002D50B8       rConsults.ForwardConsult
+ 0001:002D5158       rConsults.AddComment
+ 0001:002D5214       rConsults.AdminComplete
+ 0001:002D5300       rConsults.SigFindings
+ 0001:002D53D8       rConsults.ODForConsults
+ 0001:002D541C       rConsults.ODForProcedures
+ 0001:002D5460       rConsults.SubSetOfProcedures
+ 0001:002D54BC       rConsults.LoadServiceList
+ 0001:002D5510       rConsults.LoadServiceListWithSynonyms
+ 0001:002D5588       rConsults.LoadServiceListWithSynonyms
+ 0001:002D560C       rConsults.ShowSF513
+ 0001:002D56FC       rConsults.PrintSF513ToDevice
+ 0001:002D57A8       rConsults.GetFormattedSF513
+ 0001:002D5844       rConsults.GetUnresolvedConsultsInfo
+ 0001:002D5928       rConsults.ConsultMessage
+ 0001:002D5998       rConsults.GetProcedureIEN
+ 0001:002D5A14       rConsults.GetProcedureServices
+ 0001:002D5A60       rConsults.ConsultCanBeResubmitted
+ 0001:002D5AA0       rConsults.LoadConsultForEdit
+ 0001:002D604C       rConsults.ResubmitConsult
+ 0001:002D65B4       rConsults.GetCurrentContext
+ 0001:002D674C       rConsults.SaveCurrentContext
+ 0001:002D6880       rConsults.GetDefaultReasonForRequest
+ 0001:002D6930       rConsults.ReasonForRequestEditable
+ 0001:002D69B4       rConsults.GetServicePrerequisites
+ 0001:002D6A58       rConsults.GetNewDialog
+ 0001:002D6AE4       rConsults.GetServiceIEN
+ 0001:002D6B64       rConsults.GetProvDxMode
+ 0001:002D6C38       rConsults.GetConsultOrderIEN
+ 0001:002D6C80       rConsults.GetSavedCPFields
+ 0001:002D6E70       rConsults.Finalization
+ 0001:002D6F5C       uDocTree.CreateListItemsForDocumentTree
+ 0001:002D7938       uDocTree.BuildDocumentTree
+ 0001:002D7C6C       uDocTree.MakeBold
+ 0001:002D7DBC       uDocTree.SetTreeNodeImagesAndFormatting
+ 0001:002D83AC       uDocTree.TraverseTree
+ 0001:002D87A0       uDocTree.ContextMatch
+ 0001:002D8BCC       uDocTree.TextFound
+ 0001:002D8CE8       uDocTree.ResetDocTreeObjectStrings
+ 0001:002D8D5C       uDocTree.KillDocTreeObjects
+ 0001:002D8DD8       uDocTree.KillDocTreeNode
+ 0001:002D8E0C       uDocTree.RemoveParentsWithNoChildren
+ 0001:002D8ED8       uDocTree.AddListViewItem
+ 0001:002D8FC4       uDocTree.MakeNoteTreeObject
+ 0001:002D92C8       uDocTree.MakeDCSummTreeObject
+ 0001:002D9638       uDocTree.MakeConsultsNoteTreeObject
+ 0001:002D9984       fNoteSTStop..TfrmSearchStop
+ 0001:002D9B78       fNoteSTStop.TfrmSearchStop.btnSearchStopClick
+ 0001:002D9B84       fNoteSTStop.TfrmSearchStop.FormShow
+ 0001:002D9B90       fARTAllgy..TfrmARTAllergy
+ 0001:002DA378       fARTAllgy.EnterNKAForPatient
+ 0001:002DA4B0       fARTAllgy.MarkEnteredInError
+ 0001:002DA4BC       fARTAllgy.EnterEditAllergy
+ 0001:002DA900       fARTAllgy.TfrmARTAllergy.FormCreate
+ 0001:002DAAE8       fARTAllgy.TfrmARTAllergy.InitDialog
+ 0001:002DB154       fARTAllgy.TfrmARTAllergy.SetupDialog
+ 0001:002DB4A0       fARTAllgy.SetError
+ 0001:002DB4FC       fARTAllgy.TfrmARTAllergy.Validate
+ 0001:002DBE08       fARTAllgy.TfrmARTAllergy.cboOriginatorNeedData
+ 0001:002DBE30       fARTAllgy.TfrmARTAllergy.cboSymptomsNeedData
+ 0001:002DBE58       fARTAllgy.TfrmARTAllergy.grpObsHistClick
+ 0001:002DBF38       fARTAllgy.TfrmARTAllergy.ControlChange
+ 0001:002DC77C       fARTAllgy.TfrmARTAllergy.lstAllergySelect
+ 0001:002DC89C       fARTAllgy.TfrmARTAllergy.memCommentsExit
+ 0001:002DC914       fARTAllgy.TfrmARTAllergy.btnAgentClick
+ 0001:002DCA0C       fARTAllgy.TfrmARTAllergy.cboSymptomsClick
+ 0001:002DCB20       fARTAllgy.TfrmARTAllergy.FormDestroy
+ 0001:002DCBD4       fARTAllgy.TfrmARTAllergy.ckNoKnownAllergiesClick
+ 0001:002DCC14       fARTAllgy.TfrmARTAllergy.EnableDisableControls
+ 0001:002DCD48       fARTAllgy.TfrmARTAllergy.cmdOKClick
+ 0001:002DCF38       fARTAllgy.TfrmARTAllergy.ValidSave
+ 0001:002DD028       fARTAllgy.TfrmARTAllergy.btnCurrentClick
+ 0001:002DD0C8       fARTAllgy.TfrmARTAllergy.btnRemoveClick
+ 0001:002DD228       fARTAllgy.TfrmARTAllergy.lstAllergyClick
+ 0001:002DD23C       fARTAllgy.TfrmARTAllergy.btnDateTimeClick
+ 0001:002DD4BC       fARTAllgy.TfrmARTAllergy.cboSymptomsMouseClick
+ 0001:002DD888       fARTAllgy.TfrmARTAllergy.cboSymptomsKeyDown
+ 0001:002DD89C       fARTAllgy.TfrmARTAllergy.cmdCancelClick
+ 0001:002DD8AC       fARTAllgy.TfrmARTAllergy.cmdPrevCmtsClick
+ 0001:002DD8E0       fARTAllgy.TfrmARTAllergy.cmdPrevObsClick
+ 0001:002DD918       fARTAllgy.TfrmARTAllergy.lstSelectedSymptomsChange
+ 0001:002DD958       fARTAllgy.TfrmARTAllergy.cboVerifierNeedData
+ 0001:002DD980       fARTAllgy.TfrmARTAllergy.SetupVerifyFields
+ 0001:002DDB64       fARTAllgy.TfrmARTAllergy.SetUpEnteredInErrorFields
+ 0001:002DDD60       fARTAllgy.TfrmARTAllergy.FormClose
+ 0001:002DDD8C       fARTAllgy.TfrmARTAllergy.FormCloseQuery
+ 0001:002DDD94       fARTAllgy.TfrmARTAllergy.btnSevHelpClick
+ 0001:002DDFCC       fARTAllgy.Finalization
+ 0001:002DE01C       fAllgyBox..TfrmAllgyBox
+ 0001:002DE288       fAllgyBox.CreateAllergyBox
+ 0001:002DE730       fAllgyBox.AllergyBox
+ 0001:002DE80C       fAllgyBox.TfrmAllgyBox.cmdAddClick
+ 0001:002DE848       fAllgyBox.TfrmAllgyBox.cmdEditClick
+ 0001:002DE87C       fAllgyBox.TfrmAllgyBox.cmdInErrorClick
+ 0001:002DE8B8       fAllgyBox.TfrmAllgyBox.RefreshText
+ 0001:002DE8E4       fVitals..TfrmVitals
+ 0001:002DEEA4       fVitals.SelectVital
+ 0001:002DEF5C       fVitals.getVitalsStartDate
+ 0001:002DF034       fVitals.SelectVitals
+ 0001:002DF3AC       fVitals.TfrmVitals.VGrid
+ 0001:002DF6B8       fVitals.VitalsGrid
+ 0001:002DF744       fVitals.VitalsMemo
+ 0001:002DF7CC       fVitals.TfrmVitals.lstDatesClick
+ 0001:002DFAB0       fVitals.TfrmVitals.FormCreate
+ 0001:002DFB24       fVitals.TfrmVitals.FormDestroy
+ 0001:002DFB30       fVitals.TfrmVitals.FMToDateTime
+ 0001:002DFD38       fVitals.TfrmVitals.lstVitalsClick
+ 0001:002DFD74       fVitals.OkFloatValue
+ 0001:002DFE98       fVitals.TfrmVitals.WorksheetChart
+ 0001:002E06DC       fVitals.TfrmVitals.GetStartStop
+ 0001:002E07E0       fVitals.TfrmVitals.grdVitalsSelectCell
+ 0001:002E08A8       fVitals.TfrmVitals.chkZoomClick
+ 0001:002E0924       fVitals.TfrmVitals.chk3DClick
+ 0001:002E0944       fVitals.TfrmVitals.chkValuesClick
+ 0001:002E09B4       fVitals.TfrmVitals.FormShow
+ 0001:002E09BC       fVitals.TfrmVitals.pnlEnterVitalsResize
+ 0001:002E0A14       fVitals.TfrmVitals.btnEnterVitalsClick
+ 0001:002E0B9C       fVitals.TfrmVitals.chtChartUndoZoom
+ 0001:002E0BB0       fVitals.TfrmVitals.popValuesClick
+ 0001:002E0BE0       fVitals.TfrmVitals.pop3DClick
+ 0001:002E0C10       fVitals.TfrmVitals.popZoomClick
+ 0001:002E0C40       fVitals.TfrmVitals.popZoomBackClick
+ 0001:002E0C54       fVitals.TfrmVitals.popCopyClick
+ 0001:002E0C60       fVitals.TfrmVitals.popDetailsClick
+ 0001:002E1070       fVitals.TfrmVitals.chtChartClickSeries
+ 0001:002E1184       fVitals.TfrmVitals.chtChartMouseDown
+ 0001:002E11AC       fVitals.TfrmVitals.chtChartClickLegend
+ 0001:002E1288       fVitals.TfrmVitals.popChartPopup
+ 0001:002E1374       fVitals.TfrmVitals.popPrintClick
+ 0001:002E1438       fVitals.TfrmVitals.BeginEndDates
+ 0001:002E1694       fVitals.TfrmVitals.FormKeyUp
+ 0001:002E16AC       fEncVitals..TfrmEncVitals
+ 0001:002E1D1C       fEncVitals.TfrmEncVitals.HasData
+ 0001:002E1DFC       fEncVitals.TfrmEncVitals.InitVitalPanel
+ 0001:002E211C       fEncVitals.TfrmEncVitals.PopulateLastVital
+ 0001:002E2780       fEncVitals.TfrmEncVitals.SetVitPointer
+ 0001:002E2864       fEncVitals.TfrmEncVitals.GetVitHTRate
+ 0001:002E28C4       fEncVitals.TfrmEncVitals.AssignVitals
+ 0001:002E2A54       fEncVitals.TfrmEncVitals.cboTempChange
+ 0001:002E2A70       fEncVitals.TfrmEncVitals.CheckVitalUnit
+ 0001:002E2C08       fEncVitals.TfrmEncVitals.cboHeightChange
+ 0001:002E2C10       fEncVitals.TfrmEncVitals.cboWeightChange
+ 0001:002E2C18       fEncVitals.TfrmEncVitals.txtMeasBPExit
+ 0001:002E2C50       fEncVitals.TfrmEncVitals.cboTempExit
+ 0001:002E2C9C       fEncVitals.TfrmEncVitals.txtMeasRespExit
+ 0001:002E2CD4       fEncVitals.TfrmEncVitals.txtMeasPulseExit
+ 0001:002E2D0C       fEncVitals.TfrmEncVitals.cboHeightExit
+ 0001:002E2D84       fEncVitals.TfrmEncVitals.cboWeightExit
+ 0001:002E2DD0       fEncVitals.TfrmEncVitals.FormCreate
+ 0001:002E2E20       fEncVitals.TfrmEncVitals.FormDestroy
+ 0001:002E2E68       fEncVitals.TfrmEncVitals.lbllastClick
+ 0001:002E2ED0       fEncVitals.TfrmEncVitals.FormShow
+ 0001:002E301C       fEncVitals.TfrmEncVitals.FormActivate
+ 0001:002E303C       fEncVitals.TfrmEncVitals.cboPainChange
+ 0001:002E3044       fEncVitals.TfrmEncVitals.FormResize
+ 0001:002E30A0       fEncVitals.TfrmEncVitals.txtMeasTempExit
+ 0001:002E30EC       fEncVitals.TfrmEncVitals.txtMeasHtExit
+ 0001:002E3164       fEncVitals.TfrmEncVitals.txtMeasWtExit
+ 0001:002E31B0       fEncVitals.TfrmEncVitals.ChangeFocus
+ 0001:002E31FC       fEncVitals.TfrmEncVitals.OK2SaveVitals
+ 0001:002E33EC       fEncVitals.TfrmEncVitals.ClearData
+ 0001:002E344C       fEncVitals.TfrmEncVitals.LoadVitalView
+ 0001:002E3600       fEncVitals.TfrmEncVitals.btnEnterVitalsClick
+ 0001:002E37E8       fEncVitals.TfrmEncVitals.LoadVitalsList
+ 0001:002E391C       fEncVitals.Finalization
+ 0001:002E394C       rPCE.GetVisitCat
+ 0001:002E3A48       rPCE.LexiconToCode
+ 0001:002E3B24       rPCE.ListLexicon
+ 0001:002E3C0C       rPCE.IsActiveICDCode
+ 0001:002E3C68       rPCE.IsActiveCode
+ 0001:002E3D7C       rPCE.DeletePCE
+ 0001:002E3E04       rPCE.LoadEncounterForm
+ 0001:002E4404       rPCE.ListVisitTypeSections
+ 0001:002E4584       rPCE.InsertTab
+ 0001:002E4684       rPCE.ListVisitTypeCodes
+ 0001:002E47E0       rPCE.ListVisitTypeByLoc
+ 0001:002E49CC       rPCE.AutoSelectVisit
+ 0001:002E4A8C       rPCE.ListDiagnosisSections
+ 0001:002E4C00       rPCE.ListDiagnosisCodes
+ 0001:002E4E70       rPCE.AddProbsToDiagnoses
+ 0001:002E540C       rPCE.LoadImmReactionItems
+ 0001:002E548C       rPCE.LoadImmSeriesItems
+ 0001:002E550C       rPCE.ListImmunizSections
+ 0001:002E568C       rPCE.ListImmunizCodes
+ 0001:002E5750       rPCE.ListProcedureSections
+ 0001:002E58D0       rPCE.ListProcedureCodes
+ 0001:002E5A48       rPCE.MixedCaseModifier
+ 0001:002E5AD8       rPCE.ModifierIdx
+ 0001:002E5C20       rPCE.ModifierList
+ 0001:002E5E88       rPCE.ListCPTModifiers
+ 0001:002E636C       rPCE.ModifierName
+ 0001:002E6404       rPCE.ModifierCode
+ 0001:002E649C       rPCE.UpdateModifierList
+ 0001:002E6778       rPCE.UpdateVisitTypeModifierList
+ 0001:002E6A54       rPCE.LoadSkResultsItems
+ 0001:002E6AD4       rPCE.ListSkinSections
+ 0001:002E6C54       rPCE.ListSkinCodes
+ 0001:002E6D18       rPCE.LoadPEDLevelItems
+ 0001:002E6D98       rPCE.ListPatientSections
+ 0001:002E6F18       rPCE.ListPatientCodes
+ 0001:002E6FDC       rPCE.LoadHFLevelItems
+ 0001:002E705C       rPCE.ListHealthSections
+ 0001:002E71DC       rPCE.ListHealthCodes
+ 0001:002E72A0       rPCE.LoadXAMResultsItems
+ 0001:002E7320       rPCE.LoadHistLocations
+ 0001:002E75A0       rPCE.ListExamsSections
+ 0001:002E7720       rPCE.ListExamsCodes
+ 0001:002E77E4       rPCE.EligbleConditions
+ 0001:002E7CA8       rPCE.ListSCDisabilities
+ 0001:002E7D04       rPCE.LoadPCEDataForNote
+ 0001:002E7DD0       rPCE.GetVisitIEN
+ 0001:002E7EE0       rPCE.SavePCEData
+ 0001:002E7F38       rPCE.DataHasCPTCodes
+ 0001:002E8178       rPCE.GetAskPCE
+ 0001:002E8260       rPCE.HasVisit
+ 0001:002E8318       rPCE.CheckActivePerson
+ 0001:002E83F8       rPCE.ForcePCEEntry
+ 0001:002E84BC       rPCE.LoadcboOther
+ 0001:002E8868       rPCE.SetRPCEncLocation
+ 0001:002E888C       rPCE.PCERPCEncLocation
+ 0001:002E88A0       rPCE.GetLocSecondaryVisitCode
+ 0001:002E895C       rPCE.GAFOK
+ 0001:002E8A00       rPCE.MHClinic
+ 0001:002E8AA4       rPCE.RecentGAFScores
+ 0001:002E8BB4       rPCE.SaveGAFScore
+ 0001:002E8D88       rPCE.GAFURL
+ 0001:002E8E1C       rPCE.MHTestsOK
+ 0001:002E8EC0       rPCE.MHTestAuthorized
+ 0001:002E8F84       rPCE.AnytimeEncounters
+ 0001:002E9024       rPCE.AutoCheckout
+ 0001:002E90DC       rPCE.RequireExposures
+ 0001:002E9200       rPCE.PromptForWorkload
+ 0001:002E9348       rPCE.IsCancelOrNoShow
+ 0001:002E93DC       rPCE.IsNonCountClinic
+ 0001:002E9474       rPCE.DefaultProvider
+ 0001:002E94F4       rPCE.IsUserAProvider
+ 0001:002E95A4       rPCE.IsUserAUSRProvider
+ 0001:002E9658       rPCE.Finalization
+ 0001:002E971C       fReminderDialog..TfrmRemDlg
+ 0001:002E9AFC       fReminderDialog.ClinRemText
+ 0001:002E9B74       fReminderDialog.NotifyWhenProcessingReminderChanges
+ 0001:002E9BA8       fReminderDialog.RemoveNotifyWhenProcessingReminderChanges
+ 0001:002E9BC8       fReminderDialog.ReminderDialogActive
+ 0001:002E9BD4       fReminderDialog.CurrentReminderInDialog
+ 0001:002E9BEC       fReminderDialog.ViewRemDlgFromForm
+ 0001:002EA078       fReminderDialog.ViewRemDlg
+ 0001:002EA134       fReminderDialog.ViewReminderDialog
+ 0001:002EA148       fReminderDialog.ViewRemDlgTemplateFromForm
+ 0001:002EA178       fReminderDialog.HideReminderDialog
+ 0001:002EA18C       fReminderDialog.UpdateReminderFinish
+ 0001:002EA1CC       fReminderDialog.KillReminderDialog
+ 0001:002EA214       fReminderDialog.TfrmRemDlg.ProcessReminder
+ 0001:002EA4F4       fReminderDialog.TfrmRemDlg.FormClose
+ 0001:002EA4F8       fReminderDialog.TfrmRemDlg.FormCloseQuery
+ 0001:002EA514       fReminderDialog.TfrmRemDlg.FormCreate
+ 0001:002EA560       fReminderDialog.TfrmRemDlg.FormDestroy
+ 0001:002EA624       fReminderDialog.WipeOutControls
+ 0001:002EA694       fReminderDialog.TfrmRemDlg.ClearControls
+ 0001:002EA6D8       fReminderDialog.IsOnBox
+ 0001:002EA714       fReminderDialog.SetActiveVars
+ 0001:002EA880       fReminderDialog.TfrmRemDlg.BuildControls
+ 0001:002EAB54       fReminderDialog.TfrmRemDlg.GetBox
+ 0001:002EAB6C       fReminderDialog.TfrmRemDlg.BoxUpdateDone
+ 0001:002EABD0       fReminderDialog.TfrmRemDlg.ControlsChanged
+ 0001:002EAC00       fReminderDialog.TfrmRemDlg.UMResyncRem
+ 0001:002EAC08       fReminderDialog.TfrmRemDlg.sbResize
+ 0001:002EAC30       fReminderDialog.TfrmRemDlg.UpdateText
+ 0001:002EB384       fReminderDialog.TfrmRemDlg.btnClearClick
+ 0001:002EB5B0       fReminderDialog.TfrmRemDlg.btnCancelClick
+ 0001:002EB624       fReminderDialog.TfrmRemDlg.KillAll
+ 0001:002EB9E4       fReminderDialog.TfrmRemDlg.GetCurReminderList
+ 0001:002EBC28       fReminderDialog.TfrmRemDlg.NextReminder
+ 0001:002EBCA0       fReminderDialog.TfrmRemDlg.BackReminder
+ 0001:002EBD0C       fReminderDialog.TfrmRemDlg.ProcessReminderFromNodeStr
+ 0001:002EBDF0       fReminderDialog.TfrmRemDlg.btnNextClick
+ 0001:002EBE3C       fReminderDialog.TfrmRemDlg.btnBackClick
+ 0001:002EBE88       fReminderDialog.TfrmRemDlg.UpdateButtons
+ 0001:002EBF58       fReminderDialog.TfrmRemDlg.PositionTrees
+ 0001:002EBFE0       fReminderDialog.Add
+ 0001:002EC220       fReminderDialog.SaveMSTData
+ 0001:002EC320       fReminderDialog.TfrmRemDlg.btnFinishClick
+ 0001:002EE200       fReminderDialog.TfrmRemDlg.ResetProcessing
+ 0001:002EE420       fReminderDialog.TfrmRemDlg.RemindersChanged
+ 0001:002EE428       fReminderDialog.TfrmRemDlg.btnClinMaintClick
+ 0001:002EE51C       fReminderDialog.TfrmRemDlg.ClinMaintDestroyed
+ 0001:002EE548       fReminderDialog.TfrmRemDlg.btnVisitClick
+ 0001:002EE6D4       fReminderDialog.TfrmRemDlg.ProcessTemplate
+ 0001:002EE7E4       fReminderDialog.TfrmRemDlg.SetFontSize
+ 0001:002EE80C       fReminderDialog.TfrmRemDlg.KillDlg
+ 0001:002EE930       fReminderDialog.TfrmRemDlg.FormShow
+ 0001:002EE96C       fReminderDialog.Finalization
+ 0001:002EE9BC       uReminders..TReminderDialog
+ 0001:002EEA3C       uReminders..TReminder
+ 0001:002EEAB4       uReminders..TRemDlgElement
+ 0001:002EEB64       uReminders..TRemData
+ 0001:002EEBCC       uReminders..TRemPrompt
+ 0001:002EEC50       uReminders..TRemPCERoot
+ 0001:002EED78       uReminders..TWHCheckBox
+ 0001:002EF250       uReminders.InitText
+ 0001:002EF334       uReminders.CRLFText
+ 0001:002EF3F0       uReminders.Code2VitalType
+ 0001:002EF460       uReminders..EForcedPromptConflict
+ 0001:002EF4C4       uReminders.IsSyncPrompt
+ 0001:002EF4E0       uReminders.NotifyWhenRemindersChange
+ 0001:002EF580       uReminders.RemoveNotifyRemindersChange
+ 0001:002EF618       uReminders.ProcessingChangeString
+ 0001:002EF728       uReminders.StartupReminders
+ 0001:002EF748       uReminders.GetReminderStatus
+ 0001:002EF7C8       uReminders.RemindersEvaluatingInBackground
+ 0001:002EF7E4       uReminders.BeginReminderUpdate
+ 0001:002EF894       uReminders.EndReminderUpdate
+ 0001:002EF954       uReminders.GetRemFolders
+ 0001:002EF9F8       uReminders.SetRemFolders
+ 0001:002EFAC8       uReminders.ReminderEvaluated
+ 0001:002EFD4C       uReminders.RemindersEvaluated
+ 0001:002EFE28       uReminders.CheckReminders
+ 0001:002EFFE0       uReminders.ResetReminderLoad
+ 0001:002EFFF4       uReminders.LoadReminderData
+ 0001:002F0204       uReminders.GetImageIndex
+ 0001:002F0580       uReminders.GetEducationTopics
+ 0001:002F0800       uReminders.GetWebPageName
+ 0001:002F085C       uReminders.GetWebPageAddress
+ 0001:002F08B8       uReminders.GetWebPages
+ 0001:002F0B90       uReminders.ReminderName
+ 0001:002F0CCC       uReminders.ReminderClinMaintClicked
+ 0001:002F0D64       uReminders.ReminderEduClicked
+ 0001:002F0E04       uReminders.ReminderInqClicked
+ 0001:002F0EA0       uReminders.ReminderWebClicked
+ 0001:002F0F18       uReminders.EvalReminder
+ 0001:002F1148       uReminders.EvalProcessed
+ 0001:002F126C       uReminders.ReminderEvalClicked
+ 0001:002F1288       uReminders.ReminderViewFolderClicked
+ 0001:002F12E4       uReminders.EvaluateCategoryClicked
+ 0001:002F144C       uReminders.ReminderIconLegendClicked
+ 0001:002F1458       uReminders.Add
+ 0001:002F16D8       uReminders.AddEducationTopics
+ 0001:002F189C       uReminders.AddWebPages
+ 0001:002F1988       uReminders.ReminderMenuBuilder
+ 0001:002F1BA0       uReminders.ReminderTreePopup
+ 0001:002F1BD4       uReminders.ReminderTreePopupCover
+ 0001:002F1C08       uReminders.ReminderTreePopupDlg
+ 0001:002F1C3C       uReminders.ReminderMenuItemSelect
+ 0001:002F1C70       uReminders.SetReminderPopupRoutine
+ 0001:002F1C90       uReminders.SetReminderPopupCoverRoutine
+ 0001:002F1CB0       uReminders.SetReminderPopupDlgRoutine
+ 0001:002F1CD0       uReminders.SetReminderMenuSelectRoutine
+ 0001:002F1CF8       uReminders.ReminderMenu
+ 0001:002F1D5C       uReminders.RemContextPopup
+ 0001:002F1FB8       uReminders.Add2Tree
+ 0001:002F20E0       uReminders.BuildReminderTree
+ 0001:002F2B24       uReminders.ReminderNode
+ 0001:002F2BD4       uReminders.LocationChanged
+ 0001:002F2BDC       uReminders.ClearReminderData
+ 0001:002F2DBC       uReminders.RemindersInProcessChanged
+ 0001:002F2E20       uReminders.InitReminderList
+ 0001:002F2E38       uReminders.InitReminderObjects
+ 0001:002F2EEC       uReminders.FreeReminderObjects
+ 0001:002F2FA4       uReminders.GetReminder
+ 0001:002F3104       uReminders.WordWrap
+ 0001:002F3468       uReminders.InteractiveRemindersActive
+ 0001:002F348C       uReminders.GetReminderData
+ 0001:002F34A0       uReminders.GetReminderData
+ 0001:002F34F0       uReminders.SetReminderFormBounds
+ 0001:002F35FC       uReminders.Build
+ 0001:002F36A8       uReminders.Reset
+ 0001:002F37FC       uReminders.UpdateReminderDialogStatus
+ 0001:002F38F4       uReminders.PrepText4NextLine
+ 0001:002F39D8       uReminders.ExpandTIUObjects
+ 0001:002F3D90       uReminders.TReminderDialog.BaseCreate
+ 0001:002F40FC       uReminders.TReminderDialog.Create
+ 0001:002F4178       uReminders.TReminderDialog.Destroy
+ 0001:002F41A8       uReminders.CheckItem
+ 0001:002F41DC       uReminders.ChildrenChecked
+ 0001:002F421C       uReminders.TReminderDialog.Processing
+ 0001:002F4328       uReminders.TReminderDialog.GetDlgSL
+ 0001:002F442C       uReminders.TReminderDialog.BuildControls
+ 0001:002F4590       uReminders.TReminderDialog.AddText
+ 0001:002F46B4       uReminders.TReminderDialog.AddData
+ 0001:002F4724       uReminders.TReminderDialog.ClearMHTest
+ 0001:002F4814       uReminders.TReminderDialog.ComboBoxCheckedText
+ 0001:002F4A10       uReminders.TReminderDialog.BeginTextChanged
+ 0001:002F4A14       uReminders.TReminderDialog.EndTextChanged
+ 0001:002F4A38       uReminders.TReminderDialog.GetIEN
+ 0001:002F4A54       uReminders.TReminderDialog.GetPrintName
+ 0001:002F4A70       uReminders.TReminderDialog.BeginNeedRedraw
+ 0001:002F4A74       uReminders.TReminderDialog.EndNeedRedraw
+ 0001:002F4A98       uReminders.TReminderDialog.FinishProblems
+ 0001:002F4C0C       uReminders.TReminderDialog.ComboBoxResized
+ 0001:002F4C40       uReminders.TReminderDialog.Visible
+ 0001:002F4C50       uReminders.TReminder.Create
+ 0001:002F4CCC       uReminders.TReminder.GetDueDateStr
+ 0001:002F4CE8       uReminders.TReminder.GetIEN
+ 0001:002F4D4C       uReminders.TReminder.GetLastDateStr
+ 0001:002F4D68       uReminders.TReminder.GetPrintName
+ 0001:002F4D84       uReminders.TReminder.GetPriority
+ 0001:002F4DE0       uReminders.TReminder.GetStatus
+ 0001:002F4DFC       uReminders.Code2DataType
+ 0001:002F4E6C       uReminders.Code2PromptType
+ 0001:002F4F08       uReminders.TRemDlgElement.Add2PN
+ 0001:002F5024       uReminders.TRemDlgElement.Box
+ 0001:002F5090       uReminders.TRemDlgElement.BoxCaption
+ 0001:002F50C0       uReminders.TRemDlgElement.ChildrenIndent
+ 0001:002F5118       uReminders.TRemDlgElement.ChildrenRequired
+ 0001:002F51E4       uReminders.TRemDlgElement.ChildrenSharePrompts
+ 0001:002F5250       uReminders.TRemDlgElement.Destroy
+ 0001:002F52A0       uReminders.TRemDlgElement.ElemType
+ 0001:002F532C       uReminders.TRemDlgElement.FindingType
+ 0001:002F535C       uReminders.TRemDlgElement.HideChildren
+ 0001:002F53C8       uReminders.TRemDlgElement.Historical
+ 0001:002F5434       uReminders.TRemDlgElement.Indent
+ 0001:002F548C       uReminders.TRemDlgElement.GetData
+ 0001:002F55EC       uReminders.TRemDlgElement.UpdateData
+ 0001:002F6544       uReminders.UpdateForcedValues
+ 0001:002F667C       uReminders.TRemDlgElement.SetChecked
+ 0001:002F67F8       uReminders.TRemDlgElement.TrueIndent
+ 0001:002F6844       uReminders.TRemDlgElement.cbClicked
+ 0001:002F6964       uReminders.TRemDlgElement.EnableChildren
+ 0001:002F6994       uReminders.TRemDlgElement.Enabled
+ 0001:002F69A8       uReminders.TRemDlgElement.ShowChildren
+ 0001:002F69DC       uReminders.TRemDlgElement.cbEntered
+ 0001:002F6A3C       uReminders.TRemDlgElement.ParentCBEnter
+ 0001:002F6A58       uReminders.TRemDlgElement.ParentCBExit
+ 0001:002F6A74       uReminders.GetPanel
+ 0001:002F6BB4       uReminders.NextLine
+ 0001:002F6C68       uReminders.ProcessLabel
+ 0001:002F6EA0       uReminders.ScreenReaderSupport
+ 0001:002F6F28       uReminders.AddPrompts
+ 0001:002FA46C       uReminders.UpdatePrompts
+ 0001:002FA530       uReminders.TRemDlgElement.BuildControls
+ 0001:002FAB84       uReminders.AddNewTxt
+ 0001:002FAC30       uReminders.TRemDlgElement.GetTemplateFieldValues
+ 0001:002FAEC4       uReminders.TRemDlgElement.AddText
+ 0001:002FB180       uReminders.TRemDlgElement.AddData
+ 0001:002FB3C8       uReminders.TRemDlgElement.Check4ChildrenSharedPrompts
+ 0001:002FB704       uReminders.TRemDlgElement.FinishProblems
+ 0001:002FBFB8       uReminders.TRemDlgElement.IsChecked
+ 0001:002FBFE8       uReminders.TRemDlgElement.IndentChildrenInPN
+ 0001:002FC054       uReminders.TRemDlgElement.IndentPNLevel
+ 0001:002FC084       uReminders.TRemDlgElement.IncludeMHTestInPN
+ 0001:002FC0F0       uReminders.TRemDlgElement.ResultDlgID
+ 0001:002FC10C       uReminders.TRemDlgElement.SubCommentChange
+ 0001:002FC288       uReminders.TRemDlgElement.Create
+ 0001:002FC2C4       uReminders.TRemDlgElement.EntryID
+ 0001:002FC350       uReminders.TRemDlgElement.FieldPanelChange
+ 0001:002FC448       uReminders.TRemDlgElement.GetFieldValues
+ 0001:002FC5AC       uReminders.TRemDlgElement.FieldPanelEntered
+ 0001:002FC5F4       uReminders.TRemDlgElement.FieldPanelExited
+ 0001:002FC63C       uReminders.TRemDlgElement.FieldPanelKeyPress
+ 0001:002FC650       uReminders.TRemDlgElement.FieldPanelOnClick
+ 0001:002FC664       uReminders.TRemDlgElement.FieldPanelLabelOnClick
+ 0001:002FC670       uReminders.TRemData.Add2PN
+ 0001:002FC6DC       uReminders.AddPrompt
+ 0001:002FCA0C       uReminders.Add
+ 0001:002FD0C8       uReminders.TRemData.AddData
+ 0001:002FD390       uReminders.TRemData.DataType
+ 0001:002FD3E8       uReminders.TRemData.Destroy
+ 0001:002FD464       uReminders.TRemData.DisplayWHResults
+ 0001:002FD4D8       uReminders.TRemData.InternalValue
+ 0001:002FD4F4       uReminders.TRemData.Narrative
+ 0001:002FD510       uReminders.TRemPrompt.Add2PN
+ 0001:002FD5D8       uReminders.TRemPrompt.Caption
+ 0001:002FD614       uReminders.TRemPrompt.Create
+ 0001:002FD638       uReminders.TRemPrompt.Forced
+ 0001:002FD6A4       uReminders.TRemPrompt.InternalValue
+ 0001:002FD7D0       uReminders.TRemPrompt.PromptChange
+ 0001:002FE670       uReminders.TRemPrompt.ComboBoxKeyDown
+ 0001:002FE6C0       uReminders.TRemPrompt.PromptOK
+ 0001:002FE77C       uReminders.TRemPrompt.PromptType
+ 0001:002FE7E0       uReminders.TRemPrompt.Required
+ 0001:002FE864       uReminders.TRemPrompt.SameLine
+ 0001:002FE8D0       uReminders.TRemPrompt.NoteText
+ 0001:002FF730       uReminders.TRemPrompt.CanShare
+ 0001:002FF828       uReminders.TRemPrompt.Destroy
+ 0001:002FF858       uReminders.TRemPrompt.RemDataActive
+ 0001:002FF97C       uReminders.TRemPrompt.RemDataChoiceActive
+ 0001:002FFAB8       uReminders.TRemPrompt.GetValue
+ 0001:002FFCB0       uReminders.TRemPrompt.SetValue
+ 0001:0030060C       uReminders.TRemPrompt.SetValueFromParent
+ 0001:0030068C       uReminders.TRemPrompt.InitValue
+ 0001:003008D4       uReminders.TRemPrompt.ForcedCaption
+ 0001:00300AC4       uReminders.TRemPrompt.VitalType
+ 0001:00300B20       uReminders.TRemPrompt.VitalVerify
+ 0001:00300C04       uReminders.TRemPrompt.VitalUnitValue
+ 0001:00300CEC       uReminders.TRemPrompt.VitalValue
+ 0001:00300D44       uReminders.TRemPrompt.DoWHReport
+ 0001:00300E60       uReminders.TRemPrompt.ViewWHText
+ 0001:00300FD0       uReminders.TRemPrompt.DoMHTest
+ 0001:00301784       uReminders.TRemPrompt.GAFHelp
+ 0001:003017E0       uReminders.TRemPrompt.EditKeyPress
+ 0001:00301858       uReminders.TRemPCERoot.Destroy
+ 0001:00301894       uReminders.TRemPCERoot.Done
+ 0001:00301928       uReminders.TRemPCERoot.GetRoot
+ 0001:00301B58       uReminders.TRemPCERoot.GetValue
+ 0001:00301BE8       uReminders.TRemPCERoot.Sync
+ 0001:00302000       uReminders.TRemPCERoot.UnSync
+ 0001:00302034       uReminders.Finalization
+ 0001:00302218       uDlgComponents..TCPRSDialogComponent
+ 0001:003022A4       uDlgComponents..TCPRSDialogStaticLabel
+ 0001:0030241C       uDlgComponents..TCPRSDialogParentCheckBox
+ 0001:003025D8       uDlgComponents..TCPRSDialogFieldEdit
+ 0001:003027A0       uDlgComponents..TCPRSDialogComboBox
+ 0001:00302944       uDlgComponents..TCPRSDialogCheckBox
+ 0001:00302AF4       uDlgComponents..TCPRSDialogButton
+ 0001:00302C7C       uDlgComponents..TCPRSDialogYearEdit
+ 0001:00302E40       uDlgComponents..TCPRSDialogDateCombo
+ 0001:00302FF0       uDlgComponents..TCPRSDialogDateBox
+ 0001:00303190       uDlgComponents..TCPRSNumberField
+ 0001:00303340       uDlgComponents..TCPRSDialogNumber
+ 0001:003034C0       uDlgComponents..TCPRSTemplateFieldLabel
+ 0001:0030365C       uDlgComponents..TCPRSDialogHyperlinkLabel
+ 0001:00303818       uDlgComponents..TCPRSDialogRichEdit
+ 0001:003039C8       uDlgComponents..TDlgFieldPanel
+ 0001:00303B54       uDlgComponents..TVitalEdit
+ 0001:00303D08       uDlgComponents..TVitalComboBox
+ 0001:00303ED8       uDlgComponents..TMentalHealthMemo
+ 0001:0030406C       uDlgComponents.UpdatePending
+ 0001:003040C8       uDlgComponents.UpdateCheckBox
+ 0001:00304114       uDlgComponents.ScreenReaderSystem_CurrentCheckBox
+ 0001:00304124       uDlgComponents.ScreenReaderSystem_CurrentLabel
+ 0001:00304140       uDlgComponents.ScreenReaderSystem_CurrentComponent
+ 0001:00304260       uDlgComponents.ScreenReaderSystem_AddText
+ 0001:00304328       uDlgComponents.ScreenReaderSystem_Continue
+ 0001:00304344       uDlgComponents.ScreenReaderSystem_Stop
+ 0001:00304354       uDlgComponents.ScreenReaderSystem_Clear
+ 0001:003043EC       uDlgComponents.TDlgFieldPanel.Create
+ 0001:00304434       uDlgComponents.TDlgFieldPanel.Destroy
+ 0001:0030447C       uDlgComponents.TDlgFieldPanel.Paint
+ 0001:00304548       uDlgComponents.TDlgFieldPanel.SetTheFocus
+ 0001:0030455C       uDlgComponents.TVitalComboBox.Create
+ 0001:003045D0       uDlgComponents.TVitalComboBox.Destroy
+ 0001:00304600       uDlgComponents.TVitalComboBox.SelectByID
+ 0001:003046A4       uDlgComponents.TCPRSDialogFieldEdit.Create
+ 0001:00304714       uDlgComponents.TCPRSDialogFieldEdit.Destroy
+ 0001:00304744       uDlgComponents.TCPRSDialogComboBox.Create
+ 0001:003047B8       uDlgComponents.TCPRSDialogComboBox.Destroy
+ 0001:003047E8       uDlgComponents.TCPRSDialogCheckBox.Create
+ 0001:0030485C       uDlgComponents.TCPRSDialogCheckBox.Destroy
+ 0001:0030488C       uDlgComponents.TCPRSDialogButton.Create
+ 0001:003048FC       uDlgComponents.TCPRSDialogButton.Destroy
+ 0001:0030492C       uDlgComponents.TCPRSDialogDateCombo.Create
+ 0001:003049BC       uDlgComponents.TCPRSDialogDateCombo.Destroy
+ 0001:003049EC       uDlgComponents.TCPRSDialogDateBox.Create
+ 0001:00304A74       uDlgComponents.TCPRSDialogDateBox.Destroy
+ 0001:00304AA4       uDlgComponents.TCPRSDialogNumber.CreatePanel
+ 0001:00304BD8       uDlgComponents.TCPRSDialogNumber.Destroy
+ 0001:00304C08       uDlgComponents.TCPRSDialogHyperlinkLabel.Clicked
+ 0001:00304C58       uDlgComponents.TCPRSDialogHyperlinkLabel.Create
+ 0001:00304CE0       uDlgComponents.TCPRSDialogHyperlinkLabel.Destroy
+ 0001:00304D10       uDlgComponents.TCPRSDialogHyperlinkLabel.Init
+ 0001:00304DF4       uDlgComponents.TCPRSDialogHyperlinkLabel.KeyPressed
+ 0001:00304E04       uDlgComponents.TCPRSDialogRichEdit.Create
+ 0001:00304E74       uDlgComponents.TCPRSDialogRichEdit.Destroy
+ 0001:00304EA4       uDlgComponents.TCPRSDialogComponent.Component
+ 0001:00304EA8       uDlgComponents.TCPRSDialogComponent.Create
+ 0001:00304F48       uDlgComponents.TCPRSDialogComponent.AccessText
+ 0001:0030500C       uDlgComponents.TCPRSDialogComponent.GetAfterText
+ 0001:00305020       uDlgComponents.TCPRSDialogComponent.GetBeforeText
+ 0001:00305034       uDlgComponents.TCPRSDialogComponent.GetRequiredField
+ 0001:0030503C       uDlgComponents.TCPRSDialogComponent.GetSRBreak
+ 0001:00305044       uDlgComponents.TCPRSDialogComponent.SetAfterText
+ 0001:00305090       uDlgComponents.TCPRSDialogComponent.SetBeforeText
+ 0001:003050DC       uDlgComponents.TCPRSDialogComponent.SetRequiredField
+ 0001:003050E0       uDlgComponents.TCPRSDialogComponent.SetSRBreak
+ 0001:003050E4       uDlgComponents.TVitalEdit.Create
+ 0001:0030516C       uDlgComponents.TVitalEdit.Destroy
+ 0001:003051B8       uDlgComponents.Finalization
+ 0001:00305228       mTemplateFieldButton..TfraTemplateFieldButton
+ 0001:00305460       mTemplateFieldButton.TfraTemplateFieldButton.pnlBtnMouseDown
+ 0001:003055EC       mTemplateFieldButton.TfraTemplateFieldButton.pnlBtnMouseUp
+ 0001:00305610       mTemplateFieldButton.TfraTemplateFieldButton.FrameEnter
+ 0001:00305624       mTemplateFieldButton.TfraTemplateFieldButton.FrameExit
+ 0001:00305638       mTemplateFieldButton.TfraTemplateFieldButton.Create
+ 0001:003056FC       mTemplateFieldButton.TfraTemplateFieldButton.ButtonKeyDown
+ 0001:00305720       mTemplateFieldButton.TfraTemplateFieldButton.ButtonKeyUp
+ 0001:00305740       mTemplateFieldButton.TfraTemplateFieldButton.GetButtonText
+ 0001:00305758       mTemplateFieldButton.TfraTemplateFieldButton.SetButtonText
+ 0001:00305764       mTemplateFieldButton.TfraTemplateFieldButton.pbFocusPaint
+ 0001:003057B8       mTemplateFieldButton.TfraTemplateFieldButton.Destroy
+ 0001:003057F4       mTemplateFieldButton.Finalization
+ 0001:00305824       uVA508CPRSCompatibility..TCPRSParentDialogCheckBox508Manager
+ 0001:003058E4       uVA508CPRSCompatibility..TCPRSBaseDialogComponent508Manager
+ 0001:003059A4       uVA508CPRSCompatibility..TCPRSDialogEdit508Manager
+ 0001:00305A5C       uVA508CPRSCompatibility..TCPRSDialogFieldComboBox508Manager
+ 0001:00305B1C       uVA508CPRSCompatibility..TCPRSDialogDateBox508Manager
+ 0001:00305BD8       uVA508CPRSCompatibility..TCPRSDialogCheckBox508Manager
+ 0001:00305C94       uVA508CPRSCompatibility..TCPRSDialogRichEdit508Manager
+ 0001:00305D50       uVA508CPRSCompatibility..TCPRSDialogLabel508Manager
+ 0001:00305E08       uVA508CPRSCompatibility..TCPRSDialogHyperlink508Manager
+ 0001:00305EC4       uVA508CPRSCompatibility..TCPRSDialogNumberComplexManager
+ 0001:00305F34       uVA508CPRSCompatibility..TCPRSDialogYearEdit508Manager
+ 0001:00305FF0       uVA508CPRSCompatibility..TCPRSNumberField508Manager
+ 0001:003060A8       uVA508CPRSCompatibility..TCPRSDialogDateCombo508Manager
+ 0001:00306164       uVA508CPRSCompatibility..TfraTemplateFieldButton508Manager
+ 0001:00306224       uVA508CPRSCompatibility..TMentalHealthMemo508Manager
+ 0001:003062DC       uVA508CPRSCompatibility.SpeakTextInserted
+ 0001:00306394       uVA508CPRSCompatibility.QuickCopyWith508Msg
+ 0001:00306408       uVA508CPRSCompatibility.QuickAddWith508Msg
+ 0001:0030647C       uVA508CPRSCompatibility.FastAssignWith508Msg
+ 0001:003064E0       uVA508CPRSCompatibility.Register508CompatibilityChanges
+ 0001:00306B9C       uVA508CPRSCompatibility.TCPRSParentDialogCheckBox508Manager.Create
+ 0001:00306BE8       uVA508CPRSCompatibility.TCPRSParentDialogCheckBox508Manager.GetCaption
+ 0001:00306C00       uVA508CPRSCompatibility.ControlTabOverride
+ 0001:00306C60       uVA508CPRSCompatibility.ControlShiftTabOverride
+ 0001:00306CC4       uVA508CPRSCompatibility.ControlShiftTOverride
+ 0001:00306CCC       uVA508CPRSCompatibility.GetTabText
+ 0001:00306D84       uVA508CPRSCompatibility.SpeakPatient
+ 0001:00306DB4       uVA508CPRSCompatibility.SpeakTabAndPatient
+ 0001:00306E9C       uVA508CPRSCompatibility.TCPRSBaseDialogComponent508Manager.GetCaption
+ 0001:00306F20       uVA508CPRSCompatibility.TCPRSDialogEdit508Manager.Create
+ 0001:00306F6C       uVA508CPRSCompatibility.TCPRSDialogFieldComboBox508Manager.Create
+ 0001:00306FB8       uVA508CPRSCompatibility.TCPRSDialogCheckBox508Manager.Create
+ 0001:00307004       uVA508CPRSCompatibility.TCPRSDialogCheckBox508Manager.GetCaption
+ 0001:003070C0       uVA508CPRSCompatibility.TCPRSDialogRichEdit508Manager.Create
+ 0001:0030710C       uVA508CPRSCompatibility.TCPRSDialogLabel508Manager.Create
+ 0001:00307158       uVA508CPRSCompatibility.TCPRSDialogLabel508Manager.GetValue
+ 0001:0030716C       uVA508CPRSCompatibility.TCPRSDialogHyperlink508Manager.Create
+ 0001:003071B8       uVA508CPRSCompatibility.TCPRSDialogHyperlink508Manager.GetInstructions
+ 0001:003071F0       uVA508CPRSCompatibility.TCPRSDialogHyperlink508Manager.GetValue
+ 0001:00307204       uVA508CPRSCompatibility.TCPRSDialogNumberComplexManager.Create
+ 0001:00307240       uVA508CPRSCompatibility.TCPRSDialogNumberComplexManager.Refresh
+ 0001:0030726C       uVA508CPRSCompatibility.TCPRSNumberField508Manager.Create
+ 0001:003072B8       uVA508CPRSCompatibility.TCPRSNumberField508Manager.GetCaption
+ 0001:00307348       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.Create
+ 0001:00307394       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetCaption
+ 0001:0030741C       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetComponentName
+ 0001:0030744C       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetInstructions
+ 0001:00307490       uVA508CPRSCompatibility.TfraTemplateFieldButton508Manager.GetValue
+ 0001:00307500       uVA508CPRSCompatibility.TCPRSDialogDateBox508Manager.Create
+ 0001:0030754C       uVA508CPRSCompatibility.TCPRSDialogYearEdit508Manager.Create
+ 0001:00307598       uVA508CPRSCompatibility.TCPRSDialogYearEdit508Manager.Redirect
+ 0001:003075A0       uVA508CPRSCompatibility.TCPRSDialogDateCombo508Manager.Create
+ 0001:003075EC       uVA508CPRSCompatibility.TMentalHealthMemo508Manager.Create
+ 0001:00307638       uVA508CPRSCompatibility.TMentalHealthMemo508Manager.GetComponentName
+ 0001:00307658       uVA508CPRSCompatibility.TMentalHealthMemo508Manager.GetInstructions
+ 0001:00307678       uVA508CPRSCompatibility.Finalization
+ 0001:003076A8       fDrawers..TfrmDrawers
+ 0001:0030805C       fDrawers.TfrmDrawers.MinDrawerControlHeight
+ 0001:00308074       fDrawers.AllCtrls
+ 0001:00308100       fDrawers.TfrmDrawers.ResizeToVisible
+ 0001:00308274       fDrawers.TfrmDrawers.FormCanResize
+ 0001:003082CC       fDrawers.TfrmDrawers.ButtonHeights
+ 0001:00308350       fDrawers.TfrmDrawers.ShowDrawers
+ 0001:00308438       fDrawers.TfrmDrawers.OpenDrawer
+ 0001:00308588       fDrawers.TfrmDrawers.GetDrawerControls
+ 0001:003085F8       fDrawers.TfrmDrawers.CreateDrawers
+ 0001:0030870C       fDrawers.TfrmDrawers.EnableDrawer
+ 0001:003087A8       fDrawers.TfrmDrawers.EnableDrawers
+ 0001:0030884C       fDrawers.TfrmDrawers.FormResize
+ 0001:0030889C       fDrawers.TfrmDrawers.sbTemplatesClick
+ 0001:00308938       fDrawers.TfrmDrawers.sbEncounterClick
+ 0001:00308940       fDrawers.TfrmDrawers.sbRemindersClick
+ 0001:003089C8       fDrawers.TfrmDrawers.sbOrdersClick
+ 0001:003089D0       fDrawers.TfrmDrawers.ToggleDrawer
+ 0001:003089E8       fDrawers.TfrmDrawers.EndInternalResize
+ 0001:003089F8       fDrawers.TfrmDrawers.StartInternalResize
+ 0001:00308A00       fDrawers.TfrmDrawers.sbResize
+ 0001:00308A34       fDrawers.TfrmDrawers.InitButtons
+ 0001:00308BAC       fDrawers.TfrmDrawers.FontChanged
+ 0001:00308D90       fDrawers.TfrmDrawers.AddTemplateNode
+ 0001:00308DB0       fDrawers.TfrmDrawers.tvTemplatesGetImageIndex
+ 0001:00308DCC       fDrawers.TfrmDrawers.tvTemplatesGetSelectedIndex
+ 0001:00308EA8       fDrawers.TfrmDrawers.tvTemplatesExpanding
+ 0001:00308FEC       fDrawers.TfrmDrawers.CheckAsk
+ 0001:00309074       fDrawers.TfrmDrawers.tvTemplatesClick
+ 0001:00309084       fDrawers.TfrmDrawers.tvTemplatesDblClick
+ 0001:003090D0       fDrawers.TfrmDrawers.tvTemplatesCollapsing
+ 0001:003091E8       fDrawers.TfrmDrawers.tvTemplatesKeyDown
+ 0001:0030921C       fDrawers.TfrmDrawers.tvTemplatesKeyUp
+ 0001:00309228       fDrawers.TfrmDrawers.SetRichEditControl
+ 0001:003092D8       fDrawers.TfrmDrawers.MoveCaret
+ 0001:00309328       fDrawers.TfrmDrawers.NewRECDragDrop
+ 0001:00309370       fDrawers.TfrmDrawers.NewRECDragOver
+ 0001:003093D8       fDrawers.TfrmDrawers.InsertText
+ 0001:00309594       fDrawers.TfrmDrawers.popTemplatesPopup
+ 0001:003097D8       fDrawers.TfrmDrawers.mnuPreviewTemplateClick
+ 0001:00309898       fDrawers.TfrmDrawers.FormDestroy
+ 0001:003098B8       fDrawers.TfrmDrawers.mnuCollapseTreeClick
+ 0001:003098D8       fDrawers.TfrmDrawers.ReloadTemplates
+ 0001:00309944       fDrawers.TfrmDrawers.btnFindClick
+ 0001:00309B04       fDrawers.TfrmDrawers.SetFindNext
+ 0001:00309B60       fDrawers.TfrmDrawers.edtSearchChange
+ 0001:00309BC0       fDrawers.TfrmDrawers.ToggleMenuItem
+ 0001:00309C08       fDrawers.TfrmDrawers.edtSearchEnter
+ 0001:00309C18       fDrawers.TfrmDrawers.edtSearchExit
+ 0001:00309C28       fDrawers.TfrmDrawers.mnuFindTemplatesClick
+ 0001:00309C74       fDrawers.TfrmDrawers.tvTemplatesDragging
+ 0001:00309CA8       fDrawers.TfrmDrawers.mnuEditTemplatesClick
+ 0001:00309CB4       fDrawers.TfrmDrawers.mnuNewTemplateClick
+ 0001:00309CC0       fDrawers.TfrmDrawers.FormCreate
+ 0001:00309CDC       fDrawers.TfrmDrawers.ExternalReloadTemplates
+ 0001:00309D84       fDrawers.TfrmDrawers.fldAccessRemindersInstructionsQuery
+ 0001:00309DFC       fDrawers.TfrmDrawers.fldAccessRemindersStateQuery
+ 0001:00309E54       fDrawers.TfrmDrawers.fldAccessTemplatesInstructionsQuery
+ 0001:00309ECC       fDrawers.TfrmDrawers.fldAccessTemplatesStateQuery
+ 0001:00309F24       fDrawers.TfrmDrawers.DisplayDrawers
+ 0001:00309F40       fDrawers.TfrmDrawers.DisplayDrawers
+ 0001:00309FB4       fDrawers.TfrmDrawers.CanEditTemplates
+ 0001:00309FC8       fDrawers.TfrmDrawers.CanEditShared
+ 0001:00309FD4       fDrawers.TfrmDrawers.pnlTemplateSearchResize
+ 0001:0030A018       fDrawers.TfrmDrawers.cbFindOptionClick
+ 0001:0030A040       fDrawers.TfrmDrawers.mnuInsertTemplateClick
+ 0001:0030A074       fDrawers.TfrmDrawers.SetSplitter
+ 0001:0030A0E4       fDrawers.TfrmDrawers.SplitterCanResize
+ 0001:0030A0F8       fDrawers.TfrmDrawers.SetSplitterActive
+ 0001:0030A140       fDrawers.FindNode
+ 0001:0030A180       fDrawers.TfrmDrawers.UpdatePersonalTemplates
+ 0001:0030A228       fDrawers.TfrmDrawers.RemindersChanged
+ 0001:0030A2F0       fDrawers.TfrmDrawers.tvRemindersMouseUp
+ 0001:0030A340       fDrawers.TfrmDrawers.PositionToReminder
+ 0001:0030A458       fDrawers.TfrmDrawers.tvRemindersCurListChanged
+ 0001:0030A46C       fDrawers.TfrmDrawers.NotifyWhenRemTreeChanges
+ 0001:0030A4A4       fDrawers.TfrmDrawers.RemoveNotifyWhenRemTreeChanges
+ 0001:0030A4C4       fDrawers.TfrmDrawers.GetAlign
+ 0001:0030A4CC       fDrawers.TfrmDrawers.SetAlign
+ 0001:0030A4E0       fDrawers.TfrmDrawers.ResetTemplates
+ 0001:0030A54C       fDrawers.TfrmDrawers.mnuDefaultClick
+ 0001:0030A61C       fDrawers.TfrmDrawers.OpenToNode
+ 0001:0030A724       fDrawers.TfrmDrawers.mnuGotoDefaultClick
+ 0001:0030A78C       fDrawers.TfrmDrawers.mnuViewNotesClick
+ 0001:0030A8B8       fDrawers.TfrmDrawers.mnuCopyTemplateClick
+ 0001:0030AA1C       fDrawers.REOK
+ 0001:0030AA4C       fDrawers.TfrmDrawers.InsertOK
+ 0001:0030AAD8       fDrawers.TfrmDrawers.mnuViewTemplateIconLegendClick
+ 0001:0030AAE4       fDrawers.TfrmDrawers.pnlTemplatesButtonEnter
+ 0001:0030AB44       fDrawers.TfrmDrawers.pnlTemplatesButtonExit
+ 0001:0030AB6C       fDrawers.TfrmDrawers.tvRemindersKeyDown
+ 0001:0030ABA8       fDrawers.TfrmDrawers.tvRemindersNodeCaptioning
+ 0001:0030ACDC       fDrawers.TfrmDrawers.DisableArrowKeyMove
+ 0001:0030AD4C       fDrawers.Finalization
+ 0001:0030AD7C       dShared..TdmodShared
+ 0001:0030AF90       dShared.TdmodShared.ImgIdx
+ 0001:0030B0B8       dShared.AddChildObject
+ 0001:0030B178       dShared.TdmodShared.AddTemplateNode
+ 0001:0030B294       dShared.TdmodShared.ExpandNode
+ 0001:0030B368       dShared.InSyncNode
+ 0001:0030B398       dShared.GetID
+ 0001:0030B524       dShared.GetNode
+ 0001:0030B778       dShared.BuildNodes
+ 0001:0030B8F4       dShared.TdmodShared.Resync
+ 0001:0030BBFC       dShared.TdmodShared.dmodSharedCreate
+ 0001:0030BC40       dShared.TdmodShared.dmodSharedDestroy
+ 0001:0030BC60       dShared.TdmodShared.AddDrawerTree
+ 0001:0030BCA4       dShared.TdmodShared.RemoveDrawerTree
+ 0001:0030BCCC       dShared.TdmodShared.Reload
+ 0001:0030BD0C       dShared.TdmodShared.LoadTIUObjects
+ 0001:0030BE48       dShared.TdmodShared.NeedsCollapsing
+ 0001:0030BE80       dShared.AddErr
+ 0001:0030BEEC       dShared.ErrCount
+ 0001:0030BF10       dShared.TdmodShared.BoilerplateOK
+ 0001:0030C394       dShared.TdmodShared.TemplateOK
+ 0001:0030C588       dShared.TdmodShared.EncounterLocationChanged
+ 0001:0030C5BC       dShared.FindNode
+ 0001:0030C634       dShared.TdmodShared.SelectNode
+ 0001:0030C79C       dShared.TdmodShared.InDialog
+ 0001:0030C7CC       dShared.TdmodShared.ExpandTree
+ 0001:0030C8BC       dShared.TdmodShared.FindRichEditText
+ 0001:0030CB0C       dShared.TdmodShared.ReplaceRichEditText
+ 0001:0030CD38       dShared.Finalization
+ 0001:0030CDC0       Gauges..TGauge
+ 0001:0030D188       Gauges..TBltBitmap
+ 0001:0030D288       Gauges.TBltBitmap.MakeLike
+ 0001:0030D30C       Gauges.SolveForX
+ 0001:0030D344       Gauges.SolveForY
+ 0001:0030D37C       Gauges.TGauge.Create
+ 0001:0030D41C       Gauges.TGauge.GetPercentDone
+ 0001:0030D440       Gauges.TGauge.Paint
+ 0001:0030D5E8       Gauges.TGauge.PaintBackground
+ 0001:0030D63C       Gauges.TGauge.PaintAsText
+ 0001:0030D79C       Gauges.TGauge.PaintAsNothing
+ 0001:0030D7DC       Gauges.TGauge.PaintAsBar
+ 0001:0030D8DC       Gauges.TGauge.PaintAsPie
+ 0001:0030DA44       Gauges.TGauge.PaintAsNeedle
+ 0001:0030DBDC       Gauges.TGauge.SetGaugeKind
+ 0001:0030DBF0       Gauges.TGauge.SetShowText
+ 0001:0030DC04       Gauges.TGauge.SetBorderStyle
+ 0001:0030DC18       Gauges.TGauge.SetForeColor
+ 0001:0030DC2C       Gauges.TGauge.SetBackColor
+ 0001:0030DC40       Gauges.TGauge.SetMinValue
+ 0001:0030DCF0       Gauges.TGauge.SetMaxValue
+ 0001:0030DDA0       Gauges.TGauge.SetProgress
+ 0001:0030DDF0       fTemplateImport..TfrmTemplateImport
+ 0001:0030E000       fTemplateImport.StartImportMessage
+ 0001:0030E104       fTemplateImport.UpdateImportMessage
+ 0001:0030E154       fTemplateImport.StopImportMessage
+ 0001:0030E168       fTemplateImport.TfrmTemplateImport.btnCancelClick
+ 0001:0030E208       uTemplates..TTemplate
+ 0001:0030E2B0       uTemplates..ETemplateError
+ 0001:0030E30C       uTemplates..ETemplateImportError
+ 0001:0030E370       uTemplates..ETemplateXMLImportError
+ 0001:0030E668       uTemplates.DlgText
+ 0001:0030E7A8       uTemplates.SearchMatch
+ 0001:0030E87C       uTemplates.UserTemplateAccessLevel
+ 0001:0030EA10       uTemplates.AddTemplate
+ 0001:0030EB74       uTemplates.LoadTemplateData
+ 0001:0030ECC8       uTemplates.ExpandTemplate
+ 0001:0030EE4C       uTemplates.ReleaseTemplates
+ 0001:0030EF30       uTemplates.RemoveAllNodes
+ 0001:0030EF7C       uTemplates.CanEditType
+ 0001:0030F078       uTemplates.CanEditLinkType
+ 0001:0030F0D0       uTemplates.GetLinkedTemplate
+ 0001:0030F1E0       uTemplates.ConvertFileLink
+ 0001:0030F264       uTemplates.GetLinkName
+ 0001:0030F320       uTemplates.BackupDiffers
+ 0001:0030F378       uTemplates.DisplayErrors
+ 0001:0030F3F0       uTemplates.SaveTemplate
+ 0001:0031010C       uTemplates.SaveAllTemplates
+ 0001:003104E4       uTemplates.ClearBackup
+ 0001:00310530       uTemplates.MarkDeleted
+ 0001:003105D4       uTemplates.BadTemplateName
+ 0001:00310690       uTemplates.WordImportError
+ 0001:0031072C       uTemplates.XMLImportError
+ 0001:003107B8       uTemplates.AddXMLData
+ 0001:00310894       uTemplates.AddXMLBool
+ 0001:00310920       uTemplates.AddXMLList
+ 0001:00310AE8       uTemplates.AddBoiler
+ 0001:00310BC0       uTemplates.AddField
+ 0001:00310CB0       uTemplates.AddFieldHeader
+ 0001:00310E44       uTemplates.WordWrap
+ 0001:00310F74       uTemplates.GetXMLFromWord
+ 0001:00312590       uTemplates.WordImportActive
+ 0001:003125A0       uTemplates.UnlockAllTemplates
+ 0001:003125E8       uTemplates.DisplayGroupToLinkType
+ 0001:0031267C       uTemplates.ExecuteTemplateOrBoilerPlate
+ 0001:003127BC       uTemplates.ExecuteTemplateOrBoilerPlate
+ 0001:0031288C       uTemplates.TTemplate.Create
+ 0001:00312EA4       uTemplates.TTemplate.CreateFromXML
+ 0001:0031333C       uTemplates.TTemplate.Destroy
+ 0001:00313394       uTemplates.TTemplate.AddChild
+ 0001:003133CC       uTemplates.TTemplate.RemoveChild
+ 0001:00313418       uTemplates.TTemplate.GetItems
+ 0001:00313488       uTemplates.TTemplate.GetTemplateType
+ 0001:003134CC       uTemplates.TTemplate.GetChildren
+ 0001:0031354C       uTemplates.TTemplate.GetBoilerplate
+ 0001:0031366C       uTemplates.TTemplate.ItemBoilerplate
+ 0001:00313838       uTemplates.TTemplate.FullBoilerplate
+ 0001:00313960       uTemplates.TTemplate.SetBoilerplate
+ 0001:00313A14       uTemplates.TTemplate.GetText
+ 0001:00313C2C       uTemplates.TTemplate.SetPersonalOwner
+ 0001:00313D00       uTemplates.TTemplate.AddNode
+ 0001:00313D88       uTemplates.TTemplate.RemoveNode
+ 0001:00313DD0       uTemplates.TTemplate.Clone
+ 0001:00313EF4       uTemplates.TTemplate.TrueClone
+ 0001:0031427C       uTemplates.TTemplate.ItemIENs
+ 0001:003142F4       uTemplates.TemplateChildrenCompare
+ 0001:0031431C       uTemplates.TTemplate.SortChildren
+ 0001:00314358       uTemplates.TTemplate.BackupItems
+ 0001:003143D0       uTemplates.TTemplate.SetActive
+ 0001:00314434       uTemplates.TTemplate.SetExclude
+ 0001:00314498       uTemplates.TTemplate.SetDialog
+ 0001:003144FC       uTemplates.TTemplate.SetGap
+ 0001:00314560       uTemplates.TTemplate.SetPrintName
+ 0001:003145D0       uTemplates.TTemplate.SetRealType
+ 0001:00314654       uTemplates.TTemplate.ClearBackup
+ 0001:00314764       uTemplates.TTemplate.Changed
+ 0001:00314A88       uTemplates.TTemplate.SetDescription
+ 0001:00314B08       uTemplates.TTemplate.GetDescription
+ 0001:00314BF0       uTemplates.TTemplate.SetDisplayOnly
+ 0001:00314C54       uTemplates.TTemplate.SetFirstLine
+ 0001:00314CB8       uTemplates.TTemplate.SetHideItems
+ 0001:00314D1C       uTemplates.TTemplate.SetIndentItems
+ 0001:00314D80       uTemplates.TTemplate.SetOneItemOnly
+ 0001:00314DE4       uTemplates.TTemplate.SetHideDlgItems
+ 0001:00314E48       uTemplates.TTemplate.DlgID
+ 0001:00314F1C       uTemplates.TTemplate.DialogProperties
+ 0001:0031515C       uTemplates.TTemplate.GetDialogAborted
+ 0001:00315184       uTemplates.TTemplate.IsDialog
+ 0001:003151B0       uTemplates.TTemplate.CanExportXML
+ 0001:003156B4       uTemplates.TTemplate.UpdateImportedFieldNames
+ 0001:00315970       uTemplates.TTemplate.SetReminderDialog
+ 0001:00315A60       uTemplates.TTemplate.ReminderDialogIEN
+ 0001:00315AB0       uTemplates.TTemplate.CanModify
+ 0001:00315BEC       uTemplates.TTemplate.ValidID
+ 0001:00315C2C       uTemplates.TTemplate.Unlock
+ 0001:00315C64       uTemplates.TTemplate.SetLock
+ 0001:00315CC8       uTemplates.TTemplate.IsLocked
+ 0001:00315D08       uTemplates.TTemplate.SetCOMObject
+ 0001:00315D88       uTemplates.TTemplate.SetCOMParam
+ 0001:00315E00       uTemplates.TTemplate.AssignFileLink
+ 0001:00315F08       uTemplates.TTemplate.SetFileLink
+ 0001:00315F28       uTemplates.TTemplate.COMObjectText
+ 0001:00316034       uTemplates.TTemplate.AutoLock
+ 0001:00316074       uTemplates.TTemplate.LinkType
+ 0001:003160E4       uTemplates.TTemplate.LinkIEN
+ 0001:00316110       uTemplates.TTemplate.LinkName
+ 0001:003161A8       uTemplates.TTemplate.ExecuteReminderDialog
+ 0001:0031630C       uTemplates.ExpandEmbeddedFields
+ 0001:003164B8       uTemplates.MakeXMLParamTIU
+ 0001:00316734       uTemplates.MakeXMLParamTIU
+ 0001:003169A4       uTemplates.GetXMLParamReturnValueTIU
+ 0001:00316C88       uTemplates.TTemplate.ReminderWipe
+ 0001:00316CB4       uTemplates.UpdatePersonalObjects
+ 0001:00316D8C       uTemplates.SetTemplateDialogCanceled
+ 0001:00316DA0       uTemplates.WasTemplateDialogCanceled
+ 0001:00316DB4       uTemplates.SetTemplateBPHasObjects
+ 0001:00316DC8       uTemplates.TemplateBPHasObjects
+ 0001:00316DDC       uTemplates.Finalization
+ 0001:00316E70       fReportsAdhocSubItem1..TfrmReportsAdhocSubItem1
+ 0001:00317304       fReportsAdhocSubItem1.ExecuteForm2
+ 0001:00317384       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnCancelClick
+ 0001:003173AC       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.FormCreate
+ 0001:00317654       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORListBox1EndDrag
+ 0001:00317688       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORListBox1DragDrop
+ 0001:00317700       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORListBox1DragOver
+ 0001:003177B4       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.Timer2Timer
+ 0001:00317834       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.SpeedButton8Click
+ 0001:00317898       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.SpeedButton7Click
+ 0001:003178E0       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnRemoveAllSelClick
+ 0001:00317A34       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnRemoveSelClick
+ 0001:00317C54       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnOKClick
+ 0001:00317E18       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.btnAddSelClick
+ 0001:00318188       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORComboBox2KeyUp
+ 0001:00318238       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.ORComboBox2NeedData
+ 0001:00318268       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.pnl7ButtonEnter
+ 0001:00318284       fReportsAdhocSubItem1.TfrmReportsAdhocSubItem1.pnl7ButtonExit
+ 0001:003182A0       fReportsAdhocComponent1..TfrmReportsAdhocComponent1
+ 0001:00318A78       fReportsAdhocComponent1.ExecuteAdhoc1
+ 0001:00318AF8       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.FormCreate
+ 0001:00318BEC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.FormShow
+ 0001:00318C54       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnCancelMainClick
+ 0001:00318C5C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnOKMainClick
+ 0001:00318F68       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.FormClose
+ 0001:00318FCC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.HideEdits
+ 0001:003190B4       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2Click
+ 0001:00319668       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnRemoveComponentClick
+ 0001:00319890       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnRemoveAllComponentsClick
+ 0001:00319A18       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.Splitter4CanResize
+ 0001:00319A2C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.Splitter1CanResize
+ 0001:00319A40       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnAddComponentClick
+ 0001:0031A718       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.SpeedButton5Click
+ 0001:0031A774       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.SpeedButton6Click
+ 0001:0031A7EC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2DragOver
+ 0001:0031A8A0       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2DragDrop
+ 0001:0031A918       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORListBox2EndDrag
+ 0001:0031A94C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.Timer1Timer
+ 0001:0031A9CC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.btnEditSubitemsClick
+ 0001:0031AB30       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.edtHeaderNameExit
+ 0001:0031ABD4       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.edtOccuranceLimitExit
+ 0001:0031AC78       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.cboTimeLimitExit
+ 0001:0031AD70       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ckbHospitalLocationExit
+ 0001:0031AE20       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ckbProviderNarrativeExit
+ 0001:0031AED0       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.cboICDExit
+ 0001:0031AF74       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.ORComboBox1KeyDown
+ 0001:0031B01C       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.LoadComponents
+ 0001:0031B264       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.rbtnAbbrevClick
+ 0001:0031B2A0       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.rbtnNameClick
+ 0001:0031B2DC       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.rbtnHeaderClick
+ 0001:0031B318       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.pnl5ButtonEnter
+ 0001:0031B334       fReportsAdhocComponent1.TfrmReportsAdhocComponent1.pnl5ButtonExit
+ 0001:0031B350       fReportsAdhocComponent1.Finalization
+ 0001:0031B38C       fReports..TfrmReports
+ 0001:0031BCF8       fReports.TfrmReports.ClearPtData
+ 0001:0031BE28       fReports.TfrmReports.Graph
+ 0001:0031C020       fReports.TfrmReports.GraphPanel
+ 0001:0031C32C       fReports.TfrmReports.AllowContextChange
+ 0001:0031C4AC       fReports.TfrmReports.RequestPrint
+ 0001:0031C838       fReports.TfrmReports.DisplayPage
+ 0001:0031CCFC       fReports.TfrmReports.UpdateRemoteStatus
+ 0001:0031CE74       fReports.TfrmReports.LoadTreeView
+ 0001:0031D440       fReports.TfrmReports.SetFontSize
+ 0001:0031D578       fReports.TfrmReports.LoadListView
+ 0001:0031E30C       fReports.TfrmReports.lstQualifierClick
+ 0001:0031FAB8       fReports.TfrmReports.GotoTop1Click
+ 0001:0031FB5C       fReports.TfrmReports.GotoBottom1Click
+ 0001:0031FCA8       fReports.TfrmReports.FreezeText1Click
+ 0001:0031FE1C       fReports.TfrmReports.UnFreezeText1Click
+ 0001:0031FE68       fReports.TfrmReports.PopupMenu1Popup
+ 0001:0031FF78       fReports.TfrmReports.FormCreate
+ 0001:0032003C       fReports.FindReport
+ 0001:003200F4       fReports.FindReport
+ 0001:003201B8       fReports.TfrmReports.ProcessNotifications
+ 0001:00320B80       fReports.TfrmReports.DisplayHeading
+ 0001:00321090       fReports.TfrmReports.FormShow
+ 0001:003210F0       fReports.TfrmReports.Timer1Timer
+ 0001:00321688       fReports.TfrmReports.TabControl1Change
+ 0001:00321E8C       fReports.TfrmReports.GoRemote
+ 0001:003232E4       fReports.TfrmReports.FormDestroy
+ 0001:003234A8       fReports.TfrmReports.lstHeadersClick
+ 0001:0032351C       fReports.TfrmReports.Splitter1CanResize
+ 0001:00323530       fReports.TfrmReports.WebBrowser1DocumentComplete
+ 0001:00323680       fReports.TfrmReports.sptHorzRightCanResize
+ 0001:00323694       fReports.TfrmReports.lstQualifierDrawItem
+ 0001:00323918       fReports.TfrmReports.tvReportsClick
+ 0001:00326878       fReports.TfrmReports.lvReportsColumnClick
+ 0001:00326D94       fReports.CompareValues
+ 0001:00327084       fReports.TfrmReports.lvReportsCompare
+ 0001:00327134       fReports.TfrmReports.lvReportsSelectItem
+ 0001:00328270       fReports.TfrmReports.tvReportsExpanding
+ 0001:00328284       fReports.TfrmReports.tvReportsCollapsing
+ 0001:00328298       fReports.TfrmReports.Print1Click
+ 0001:003282A4       fReports.TfrmReports.Copy1Click
+ 0001:003284A4       fReports.TfrmReports.Copy2Click
+ 0001:003284B0       fReports.TfrmReports.Print2Click
+ 0001:003284BC       fReports.TfrmReports.lvReportsKeyUp
+ 0001:003284F8       fReports.TfrmReports.SelectAll1Click
+ 0001:00328540       fReports.TfrmReports.SelectAll2Click
+ 0001:0032854C       fReports.TfrmReports.tvReportsKeyDown
+ 0001:00328578       fReports.TfrmReports.ShowTabControl
+ 0001:003285C8       fReports.TfrmReports.Memo1KeyUp
+ 0001:00328674       fReports.TfrmReports.LoadProceduresTreeView
+ 0001:00328778       fReports.TfrmReports.tvProceduresCollapsing
+ 0001:0032878C       fReports.TfrmReports.tvProceduresExpanding
+ 0001:003287A0       fReports.TfrmReports.tvProceduresClick
+ 0001:003289E4       fReports.TfrmReports.tvProceduresChange
+ 0001:00328F2C       fReports.TfrmReports.tvProceduresKeyDown
+ 0001:00328F58       fReports.TfrmReports.chkDualViewsClick
+ 0001:00328F94       fReports.TfrmReports.chkMaxFreqClick
+ 0001:00329034       fReports.TfrmReports.btnChangeViewClick
+ 0001:00329080       fReports.TfrmReports.btnGraphSelectionsClick
+ 0001:003290CC       fReports.TfrmReports.lstDateRangeClick
+ 0001:0032914C       fReports.TfrmReports.sptHorzMoved
+ 0001:00329160       fReports.Finalization
+ 0001:00329208       rReports.ExtractSection
+ 0001:0032932C       rReports.LoadReportLists
+ 0001:0032941C       rReports.LoadTree
+ 0001:003294D0       rReports.ListReports
+ 0001:00329598       rReports.ListLabReports
+ 0001:00329660       rReports.ListReportDateRanges
+ 0001:00329680       rReports.ListHealthSummaryTypes
+ 0001:003296AC       rReports.HealthSummaryCheck
+ 0001:00329710       rReports.ColumnHeaders
+ 0001:003297A4       rReports.SaveColumnSizes
+ 0001:00329818       rReports.ListImagingExams
+ 0001:00329AD8       rReports.ListProcedures
+ 0001:00329D3C       rReports.ListNutrAssessments
+ 0001:00329EA8       rReports.ListSurgeryReports
+ 0001:0032A13C       rReports.LoadReportText
+ 0001:0032A4AC       rReports.RemoteQueryAbortAll
+ 0001:0032A4EC       rReports.RemoteQuery
+ 0001:0032A700       rReports.DirectQuery
+ 0001:0032A914       rReports.ImagingParams
+ 0001:0032A954       rReports.AutoRDV
+ 0001:0032A994       rReports.HDRActive
+ 0001:0032A9D4       rReports.PrintVReports
+ 0001:0032AA88       rReports.PrintReportsToDevice
+ 0001:0032AFC4       rReports.GetFormattedReport
+ 0001:0032B400       rReports.PrintWindowsReport
+ 0001:0032B7F4       rReports.CreatePatientHeader
+ 0001:0032BAB0       rReports.PrintGraph
+ 0001:0032BD18       rReports.SaveDefaultPrinter
+ 0001:0032BD98       rReports.HSFileLookup
+ 0001:0032BE4C       rReports.HSComponentFiles
+ 0001:0032BEE0       rReports.HSSubItems
+ 0001:0032BF80       rReports.HSReportText
+ 0001:0032BFF0       rReports.HSComponents
+ 0001:0032C048       rReports.HSABVComponents
+ 0001:0032C098       rReports.HSDispComponents
+ 0001:0032C0E8       rReports.HSComponentSubs
+ 0001:0032C190       rReports.GetRemoteStatus
+ 0001:0032C224       rReports.GetAdhocLookup
+ 0001:0032C2D0       rReports.SetAdhocLookup
+ 0001:0032C34C       rReports.GetRemoteData
+ 0001:0032C47C       rReports.ModifyHDRData
+ 0001:0032C510       rReports.PrintBitmap
+ 0001:0032C5EC       rReports.Finalization
+ 0001:0032C650       fDeviceSelect..TfrmDeviceSelect
+ 0001:0032C938       fDeviceSelect.SelectDevice
+ 0001:0032CC24       fDeviceSelect.TfrmDeviceSelect.cboDeviceChange
+ 0001:0032CCEC       fDeviceSelect.TfrmDeviceSelect.cmdOKClick
+ 0001:0032CE6C       fDeviceSelect.TfrmDeviceSelect.cmdCancelClick
+ 0001:0032CE84       fDeviceSelect.TfrmDeviceSelect.cboDeviceNeedData
+ 0001:0032CEAC       fDeviceSelect.TfrmDeviceSelect.FormClose
+ 0001:0032CEB4       fDeviceSelect.TfrmDeviceSelect.FormCreate
+ 0001:0032CEC8       fDeviceSelect.Finalization
+ 0001:0032CF2C       uPCE..TPCEProviderList
+ 0001:0032D06C       uPCE..TPCEItem
+ 0001:0032D110       uPCE..TPCEProc
+ 0001:0032D194       uPCE..TPCEDiag
+ 0001:0032D218       uPCE..TPCEExams
+ 0001:0032D29C       uPCE..TPCEHealth
+ 0001:0032D324       uPCE..TPCEImm
+ 0001:0032D3B0       uPCE..TPCEPat
+ 0001:0032D434       uPCE..TPCESkin
+ 0001:0032D4B8       uPCE..TPCEData
+ 0001:0032D6BC       uPCE.InvalidPCEProviderTxt
+ 0001:0032D7A0       uPCE.MissingProviderInfo
+ 0001:0032D8EC       uPCE.IsOK2Sign
+ 0001:0032D9DC       uPCE.FutureEncounter
+ 0001:0032DA34       uPCE.CanEditPCE
+ 0001:0032DA54       uPCE.GetComboBoxMinMax
+ 0001:0032DBD0       uPCE.CodeSetIndex
+ 0001:0032DD30       uPCE.GetPCECodes
+ 0001:0032DE7C       uPCE.GetPCECodeString
+ 0001:0032DFC0       uPCE.PCELoadORComboData
+ 0001:0032E084       uPCE.PCELoadORCombo
+ 0001:0032E094       uPCE.PCELoadORCombo
+ 0001:0032E0A0       uPCE.GetPCEDisplayText
+ 0001:0032E390       uPCE.GetPCEDataText
+ 0001:0032E4D0       uPCE.SetDefaultProvider
+ 0001:0032E760       uPCE.ValidateGAFDate
+ 0001:0032EA10       uPCE.GetVitalsFromDate
+ 0001:0032EA60       uPCE.GetVitalsFromNote
+ 0001:0032EAA8       uPCE.TPCEItem.DelimitedStr2
+ 0001:0032EB78       uPCE.TPCEItem.Assign
+ 0001:0032EBC8       uPCE.TPCEItem.SetComment
+ 0001:0032EC04       uPCE.TPCEItem.Clear
+ 0001:0032EC40       uPCE.TPCEItem.DelimitedStr
+ 0001:0032ECF4       uPCE.TPCEItem.ItemStr
+ 0001:0032ED08       uPCE.TPCEItem.Match
+ 0001:0032ED40       uPCE.TPCEItem.HasCPTStr
+ 0001:0032ED4C       uPCE.TPCEItem.SetFromString
+ 0001:0032EE2C       uPCE.TPCEExams.Assign
+ 0001:0032EE68       uPCE.TPCEExams.Clear
+ 0001:0032EE90       uPCE.TPCEExams.DelimitedStr
+ 0001:0032EF30       uPCE.TPCEExams.HasCPTStr
+ 0001:0032EF5C       uPCE.TPCEExams.ItemStr
+ 0001:0032EFF8       uPCE.TPCEExams.SetFromString
+ 0001:0032F078       uPCE.TPCESkin.Assign
+ 0001:0032F0D4       uPCE.TPCESkin.Clear
+ 0001:0032F110       uPCE.TPCESkin.DelimitedStr
+ 0001:0032F1C8       uPCE.TPCESkin.HasCPTStr
+ 0001:0032F1F4       uPCE.TPCESkin.ItemStr
+ 0001:0032F2C0       uPCE.TPCESkin.SetFromString
+ 0001:0032F3B8       uPCE.TPCEHealth.Assign
+ 0001:0032F3F4       uPCE.TPCEHealth.Clear
+ 0001:0032F41C       uPCE.TPCEHealth.DelimitedStr
+ 0001:0032F4C4       uPCE.TPCEHealth.HasCPTStr
+ 0001:0032F4F0       uPCE.TPCEHealth.ItemStr
+ 0001:0032F58C       uPCE.TPCEHealth.SetFromString
+ 0001:0032F60C       uPCE.TPCEImm.Assign
+ 0001:0032F674       uPCE.TPCEImm.Clear
+ 0001:0032F6B0       uPCE.TPCEImm.DelimitedStr
+ 0001:0032F7AC       uPCE.TPCEImm.HasCPTStr
+ 0001:0032F7D8       uPCE.TPCEImm.ItemStr
+ 0001:0032F8DC       uPCE.TPCEImm.SetFromString
+ 0001:0032F9F8       uPCE.TPCEProc.Assign
+ 0001:0032FA2C       uPCE.TPCEProc.Clear
+ 0001:0032FA54       uPCE.TPCEProc.CopyProc
+ 0001:0032FAB0       uPCE.TPCEProc.DelimitedStr
+ 0001:0032FC5C       uPCE.TPCEProc.Empty
+ 0001:0032FC98       uPCE.TPCEProc.ModText
+ 0001:0032FD44       uPCE.TPCEProc.ItemStr
+ 0001:0032FE00       uPCE.TPCEProc.SetFromString
+ 0001:0032FF2C       uPCE.TPCEPat.Assign
+ 0001:0032FF68       uPCE.TPCEPat.Clear
+ 0001:0032FF90       uPCE.TPCEPat.DelimitedStr
+ 0001:00330030       uPCE.TPCEPat.HasCPTStr
+ 0001:0033005C       uPCE.TPCEPat.ItemStr
+ 0001:003300F8       uPCE.TPCEPat.SetFromString
+ 0001:00330178       uPCE.TPCEDiag.Assign
+ 0001:0033019C       uPCE.TPCEDiag.Clear
+ 0001:003301B0       uPCE.TPCEDiag.DelimitedStr
+ 0001:003302E0       uPCE.TPCEDiag.DelimitedStr2
+ 0001:003303D8       uPCE.TPCEDiag.ItemStr
+ 0001:003304B8       uPCE.TPCEDiag.SetFromString
+ 0001:00330568       uPCE.TPCEData.Create
+ 0001:00330658       uPCE.TPCEData.Destroy
+ 0001:003307B0       uPCE.ClearList
+ 0001:003307E0       uPCE.TPCEData.Clear
+ 0001:003308AC       uPCE.TPCEData.CopyDiagnoses
+ 0001:003308C0       uPCE.TPCEData.CopyProcedures
+ 0001:003308D4       uPCE.TPCEData.CopyImmunizations
+ 0001:003308E8       uPCE.TPCEData.CopySkinTests
+ 0001:003308FC       uPCE.TPCEData.CopyPatientEds
+ 0001:00330910       uPCE.TPCEData.CopyHealthFactors
+ 0001:00330924       uPCE.TPCEData.CopyExams
+ 0001:00330938       uPCE.TPCEData.GetVisitString
+ 0001:003309D8       uPCE.TPCEData.GetCPTRequired
+ 0001:00330A00       uPCE.SCCValue
+ 0001:00330AB4       uPCE.AppendComment
+ 0001:00330BD4       uPCE.TPCEData.PCEForNote
+ 0001:00331900       uPCE.TPCEData.Save
+ 0001:00332918       uPCE.TPCEData.MatchItem
+ 0001:00332978       uPCE.TPCEData.MarkDeletions
+ 0001:00332A18       uPCE.TPCEData.SetDiagnoses
+ 0001:00332B50       uPCE.TPCEData.SetProcedures
+ 0001:00332C8C       uPCE.TPCEData.SetImmunizations
+ 0001:00332DF4       uPCE.TPCEData.SetSkinTests
+ 0001:00332F08       uPCE.TPCEData.SetPatientEds
+ 0001:0033300C       uPCE.TPCEData.SetHealthFactors
+ 0001:00333134       uPCE.TPCEData.SetExams
+ 0001:00333238       uPCE.TPCEData.SetVisitType
+ 0001:003332AC       uPCE.TPCEData.SetSCRelated
+ 0001:003332BC       uPCE.TPCEData.SetAORelated
+ 0001:003332CC       uPCE.TPCEData.SetIRRelated
+ 0001:003332DC       uPCE.TPCEData.SetECRelated
+ 0001:003332EC       uPCE.TPCEData.SetMSTRelated
+ 0001:003332FC       uPCE.TPCEData.SetHNCRelated
+ 0001:0033330C       uPCE.TPCEData.SetCVRelated
+ 0001:0033331C       uPCE.TPCEData.SetSHADRelated
+ 0001:0033332C       uPCE.TPCEData.SetEncUseCurr
+ 0001:003333BC       uPCE.TPCEData.StrDiagnoses
+ 0001:003334D8       uPCE.TPCEData.StrProcedures
+ 0001:00333608       uPCE.TPCEData.StrImmunizations
+ 0001:00333720       uPCE.TPCEData.StrSkinTests
+ 0001:00333838       uPCE.TPCEData.StrPatientEds
+ 0001:00333950       uPCE.TPCEData.StrHealthFactors
+ 0001:00333A68       uPCE.TPCEData.StrExams
+ 0001:00333B80       uPCE.AddTxt
+ 0001:00333C18       uPCE.TPCEData.StrVisitType
+ 0001:00333DC4       uPCE.TPCEData.StrVisitType
+ 0001:00333ECC       uPCE.TPCEData.StandAlone
+ 0001:00333F1C       uPCE.TPCEItem.MatchProvider
+ 0001:00333F3C       uPCE.TPCEData.CopyPCEData
+ 0001:00334084       uPCE.TPCEData.NeededPCEData
+ 0001:00334218       uPCE.Add
+ 0001:00334294       uPCE.TPCEData.OK2SignNote
+ 0001:00334844       uPCE.Add
+ 0001:003348A0       uPCE.TPCEData.AddStrData
+ 0001:0033498C       uPCE.TPCEData.AddVitalData
+ 0001:00334A14       uPCE.TPCEData.PersonClassDate
+ 0001:00334A3C       uPCE.TPCEData.VisitDateTime
+ 0001:00334A70       uPCE.TPCEData.IsSecondaryVisit
+ 0001:00334A98       uPCE.TPCEData.NeedProviderInfo
+ 0001:00334BF0       uPCE.AddList
+ 0001:00334C60       uPCE.TPCEData.GetHasCPTList
+ 0001:00334CA0       uPCE.TPCEData.CopyPCEItems
+ 0001:00334D80       uPCE.TPCEData.Empty
+ 0001:00334E58       uPCE.TPCEProviderList.Add
+ 0001:00334FC8       uPCE.TPCEProviderList.AddProvider
+ 0001:00335098       uPCE.TPCEProviderList.Clear
+ 0001:003350F0       uPCE.TPCEProviderList.Delete
+ 0001:00335198       uPCE.Check
+ 0001:00335224       uPCE.TPCEProviderList.PCEProvider
+ 0001:00335294       uPCE.TPCEProviderList.PCEProviderName
+ 0001:0033532C       uPCE.TPCEProviderList.GetPrimaryIdx
+ 0001:0033534C       uPCE.TPCEProviderList.GetProviderData
+ 0001:0033545C       uPCE.TPCEProviderList.IndexOfProvider
+ 0001:003354B4       uPCE.TPCEProviderList.Merge
+ 0001:003355AC       uPCE.TPCEProviderList.PendingIEN
+ 0001:00335648       uPCE.TPCEProviderList.PendingName
+ 0001:00335678       uPCE.TPCEProviderList.PrimaryIEN
+ 0001:00335714       uPCE.TPCEProviderList.SetPrimary
+ 0001:003357B4       uPCE.TPCEProviderList.SetPrimaryIdx
+ 0001:00335844       uPCE.TPCEProviderList.Assign
+ 0001:003358A0       uPCE.Finalization
+ 0001:00335914       fPCEBase..TfrmPCEBase
+ 0001:00335B40       fPCEBase.TfrmPCEBase.FormCreate
+ 0001:00335B68       fPCEBase.TfrmPCEBase.Loaded
+ 0001:00335BD4       fPCEBase.TfrmPCEBase.DisplayPage
+ 0001:00335C34       fPCEBase.TfrmPCEBase.SetFontSize
+ 0001:00335C54       fPCEBase.TfrmPCEBase.UMResizePage
+ 0001:00335CC4       fPCEBase.TfrmPCEBase.btnCancelClick
+ 0001:00335CFC       fPCEBase.TfrmPCEBase.btnOKClick
+ 0001:00335D28       fPCEBase.TfrmPCEBase.FormClose
+ 0001:00335D4C       fPCEBase.TfrmPCEBase.AllowTabChange
+ 0001:00335D5C       fPCEBase.TfrmPCEBase.CreateLinked
+ 0001:00335DCC       fPCEBase.TfrmPCEBase.ActiveCtrl
+ 0001:00335E0C       fPCEBase.TfrmPCEBase.SectionString
+ 0001:00335F3C       fPCEBase.TfrmPCEBase.DoEnter
+ 0001:00335F64       fPCEBase.Finalization
+ 0001:00335F94       fEncounterFrame..TfrmEncounterFrame
+ 0001:00336284       fEncounterFrame.TfrmEncounterFrame.PageIDToTab
+ 0001:0033643C       fEncounterFrame.TfrmEncounterFrame.PageIDToForm
+ 0001:003364D0       fEncounterFrame.TfrmEncounterFrame.CreateChildForms
+ 0001:003364EC       fEncounterFrame.TfrmEncounterFrame.LoadFormList
+ 0001:0033666C       fEncounterFrame.TfrmEncounterFrame.FormListContains
+ 0001:003366C8       fEncounterFrame.TfrmEncounterFrame.CreateForms
+ 0001:003369C4       fEncounterFrame.TfrmEncounterFrame.SwitchToPage
+ 0001:003369F8       fEncounterFrame.TfrmEncounterFrame.tabPageChange
+ 0001:00336A90       fEncounterFrame.TfrmEncounterFrame.FormResize
+ 0001:00336B30       fEncounterFrame.TfrmEncounterFrame.AddTabs
+ 0001:00336BC8       fEncounterFrame.UpdatePCE
+ 0001:00336E74       fEncounterFrame.TfrmEncounterFrame.SectionClick
+ 0001:00336EC4       fEncounterFrame.InitList
+ 0001:00336F7C       fEncounterFrame.TfrmEncounterFrame.SynchPCEData
+ 0001:0033722C       fEncounterFrame.TfrmEncounterFrame.FormDestroy
+ 0001:0033729C       fEncounterFrame.TfrmEncounterFrame.FormCreate
+ 0001:003372F8       fEncounterFrame.TfrmEncounterFrame.SendData
+ 0001:00337434       fEncounterFrame.TfrmEncounterFrame.FormCloseQuery
+ 0001:00337750       fEncounterFrame.TfrmEncounterFrame.TabControlChange
+ 0001:00337858       fEncounterFrame.TfrmEncounterFrame.TabControlChanging
+ 0001:00337874       fEncounterFrame.TfrmEncounterFrame.UpdateEncounter
+ 0001:00337AA0       fEncounterFrame.TfrmEncounterFrame.SelectTab
+ 0001:00337B20       fEncounterFrame.TfrmEncounterFrame.TabControlEnter
+ 0001:00337B58       fEncounterFrame.TfrmEncounterFrame.FormKeyDown
+ 0001:00337C94       fEncounterFrame.TfrmEncounterFrame.SetFormFonts
+ 0001:00337EAC       fEncounterFrame.TfrmEncounterFrame.FormClose
+ 0001:00337EB4       fEncounterFrame.TfrmEncounterFrame.FormCanResize
+ 0001:00337ED0       fEncounterFrame.TfrmEncounterFrame.FormShow
+ 0001:00337EF8       UBACore.BADxEntered
+ 0001:003380B0       UBACore.rpcOrderRequiresDx
+ 0001:0033827C       UBACore.IsOrderBillable
+ 0001:003383BC       UBACore.SaveBillingData
+ 0001:003383F4       UBACore.AttachDxToOrderList
+ 0001:00338604       UBACore.rpcAddToPersonalDxList
+ 0001:003386A4       UBACore.rpcGetPersonalDxList
+ 0001:003386FC       UBACore.rpcDeleteFromPersonalDxList
+ 0001:00338794       UBACore.rpcSetBillingAwareSwitch
+ 0001:003388D8       UBACore.IsCIDCProvider
+ 0001:00338924       UBACore.rpcGetBAMasterSwStatus
+ 0001:003389B8       UBACore.rpcSaveNurseConsultOrder
+ 0001:003389C0       UBACore.rpcGetSC4Orders
+ 0001:00338A30       UBACore.rpcGetProviderPatientDaysDx
+ 0001:00338B04       UBACore.rpcGetTFHintData
+ 0001:00338B4C       UBACore.rpcNonBillableOrders
+ 0001:00338CA0       UBACore.rpcBuildSCIEList
+ 0001:00338DEC       UBACore.rpcSaveCIDCData
+ 0001:00338E70       UBACore.rpcIsPatientInsured
+ 0001:00338F10       UBACore.OrdersHaveDx
+ 0001:0033904C       UBACore.LoadUnsignedOrderRec
+ 0001:00339274       UBACore.AttachPLTFactorsToDx
+ 0001:003394AC       UBACore.BALoadStsFlagsAsIs
+ 0001:003395CC       UBACore.SetTreatmentFactors
+ 0001:00339980       UBACore.StripTFactors
+ 0001:00339A1C       UBACore.OrderRequiresSCEI
+ 0001:00339AE8       UBACore.SaveUnsignedOrders
+ 0001:00339B34       UBACore.rpcRetrieveSelectedOrderInfo
+ 0001:00339C50       UBACore.BuildSaveUnsignedList
+ 0001:00339C94       UBACore.rpcGetUnsignedOrdersBillingData
+ 0001:00339DA4       UBACore.CompleteUnsignedBillingInfo
+ 0001:00339FE8       UBACore.GetUnsignedOrderFlags
+ 0001:0033A0EC       UBACore.BuildTFHintRec
+ 0001:0033A7D8       UBACore.IsAllOrdersNA
+ 0001:0033A8BC       UBACore.PrepOrderID
+ 0001:0033A95C       UBACore.ClearSelectedOrderDiagnoses
+ 0001:0033AAA0       UBACore.LoadConsultOrderRec
+ 0001:0033AF8C       UBACore.CompleteConsultOrderRec
+ 0001:0033B1D4       UBACore.GetConsultFlags
+ 0001:0033B2C4       UBACore.SetConsultFlags
+ 0001:0033B6A0       UBACore.GetBAStatus
+ 0001:0033B724       UBACore.IsICD9CodeActive
+ 0001:0033B84C       UBACore.BuildConsultDxRec
+ 0001:0033B988       UBACore.ConvertPIMTreatmentFactors
+ 0001:0033BB74       UBACore.DeleteDCOrdersFromCopiedList
+ 0001:0033BC80       UBACore.VerifyOrderIdExists
+ 0001:0033BD4C       UBACore.ProcessProblemTFactors
+ 0001:0033BE44       fDupPts..TfrmDupPts
+ 0001:0033C0B4       fDupPts.TfrmDupPts.btnCancelClick
+ 0001:0033C0BC       fDupPts.TfrmDupPts.FormCreate
+ 0001:0033C11C       fDupPts.TfrmDupPts.btnOKClick
+ 0001:0033C21C       fDupPts.TfrmDupPts.FormKeyDown
+ 0001:0033C250       fDupPts.TfrmDupPts.lboSelPtDblClick
+ 0001:0033C25C       fPtSelDemog..TfrmPtSelDemog
+ 0001:0033C520       fPtSelDemog.TfrmPtSelDemog.ClearIDInfo
+ 0001:0033C5A8       fPtSelDemog.TfrmPtSelDemog.ShowDemog
+ 0001:0033C998       fPtSelDemog.TfrmPtSelDemog.ToggleMemo
+ 0001:0033C9C0       fPtSelDemog.TfrmPtSelDemog.FormCreate
+ 0001:0033C9EC       fPtSelDemog.TfrmPtSelDemog.NewWinProc
+ 0001:0033CCFC       fPtSelDemog.TfrmPtSelDemog.FormDestroy
+ 0001:0033CD18       fPtSelDemog.Finalization
+ 0001:0033CD48       fPtSelOptSave..TfrmPtSelOptSave
+ 0001:0033CFA0       fPtSelOptSave.TfrmPtSelOptSave.FormCreate
+ 0001:0033D0A8       fPtSelOptSave.TfrmPtSelOptSave.btnCancelClick
+ 0001:0033D0B0       fPtSelOptSave.TfrmPtSelOptSave.btnOKClick
+ 0001:0033D14C       fPtSelOptSave.TfrmPtSelOptSave.rGrpClinSaveClick
+ 0001:0033D170       fPtSelOptns..TfrmPtSelOptns
+ 0001:0033D4F4       fPtSelOptns.TfrmPtSelOptns.IsLast5
+ 0001:0033D5B8       fPtSelOptns.TfrmPtSelOptns.IsPatientName
+ 0001:0033D640       fPtSelOptns.TfrmPtSelOptns.IsEnhanced
+ 0001:0033D6A0       fPtSelOptns.TfrmPtSelOptns.IsFullSSN
+ 0001:0033D91C       fPtSelOptns.TfrmPtSelOptns.radHideSrcClick
+ 0001:0033D9D4       fPtSelOptns.TfrmPtSelOptns.radShowSrcClick
+ 0001:0033DAD0       fPtSelOptns.TfrmPtSelOptns.radLongSrcClick
+ 0001:0033DCC0       fPtSelOptns.TfrmPtSelOptns.cboListExit
+ 0001:0033DCF8       fPtSelOptns.TfrmPtSelOptns.cboListKeyPause
+ 0001:0033DD30       fPtSelOptns.TfrmPtSelOptns.cboListMouseClick
+ 0001:0033DD68       fPtSelOptns.TfrmPtSelOptns.cboListNeedData
+ 0001:0033DDC0       fPtSelOptns.TfrmPtSelOptns.HideDateRange
+ 0001:0033DDF8       fPtSelOptns.TfrmPtSelOptns.ShowDateRange
+ 0001:0033DFC8       fPtSelOptns.TfrmPtSelOptns.cboDateRangeExit
+ 0001:0033DFEC       fPtSelOptns.TfrmPtSelOptns.cboDateRangeMouseClick
+ 0001:0033E148       fPtSelOptns.TfrmPtSelOptns.cmdSaveListClick
+ 0001:0033EBD0       fPtSelOptns.TfrmPtSelOptns.FormCreate
+ 0001:0033EBDC       fPtSelOptns.TfrmPtSelOptns.SetDefaultPtList
+ 0001:0033EC9C       fPtSelOptns.TfrmPtSelOptns.UpdateDefault
+ 0001:0033ED7C       fPtSelOptns.Finalization
+ 0001:0033EDB8       fAlertForward..TfrmAlertForward
+ 0001:0033F150       fAlertForward.ForwardAlertTo
+ 0001:0033F24C       fAlertForward.TfrmAlertForward.FormCreate
+ 0001:0033F274       fAlertForward.TfrmAlertForward.cboSrcListNeedData
+ 0001:0033F2A4       fAlertForward.TfrmAlertForward.cmdCancelClick
+ 0001:0033F2AC       fAlertForward.TfrmAlertForward.cmdOKClick
+ 0001:0033F3EC       fAlertForward.TfrmAlertForward.DstListChange
+ 0001:0033F518       fAlertForward.TfrmAlertForward.btnAddAlertClick
+ 0001:0033F524       fAlertForward.TfrmAlertForward.btnRemoveAlertFwrdClick
+ 0001:0033F660       fAlertForward.TfrmAlertForward.btnRemoveAllAlertFwrdClick
+ 0001:0033F73C       fAlertForward.TfrmAlertForward.cboSrcListChange
+ 0001:0033F75C       fAlertForward.TfrmAlertForward.cboSrcListKeyDown
+ 0001:0033F770       fAlertForward.TfrmAlertForward.cboSrcListMouseClick
+ 0001:0033F96C       fAlertForward.Finalization
+ 0001:0033F9A8       fPtSel..TfrmPtSel
+ 0001:00340014       fPtSel.TfrmPtSel.IsOther
+ 0001:0034005C       fPtSel.SelectPatient
+ 0001:00340218       fPtSel.TfrmPtSel.AdjustFormSize
+ 0001:0034040C       fPtSel.TfrmPtSel.SetCaptionTop
+ 0001:00340718       fPtSel.TfrmPtSel.SetPtListTop
+ 0001:00340F68       fPtSel.TfrmPtSel.cboPatientEnter
+ 0001:00340FAC       fPtSel.TfrmPtSel.cboPatientExit
+ 0001:00340FCC       fPtSel.ShowMatchingPatients
+ 0001:003410B8       fPtSel.TfrmPtSel.cboPatientChange
+ 0001:003413E4       fPtSel.TfrmPtSel.cboPatientKeyPause
+ 0001:0034148C       fPtSel.TfrmPtSel.cboPatientMouseClick
+ 0001:00341534       fPtSel.TfrmPtSel.cboPatientDblClick
+ 0001:0034160C       fPtSel.TfrmPtSel.cboPatientNeedData
+ 0001:003418D0       fPtSel.TfrmPtSel.ClearIDInfo
+ 0001:003418E8       fPtSel.TfrmPtSel.ShowIDInfo
+ 0001:00341958       fPtSel.TfrmPtSel.WMReadyAlert
+ 0001:00341978       fPtSel.TfrmPtSel.cmdOKClick
+ 0001:003421E4       fPtSel.TfrmPtSel.cmdCancelClick
+ 0001:00342208       fPtSel.TfrmPtSel.cmdCommentsClick
+ 0001:003423D4       fPtSel.TfrmPtSel.cmdProcessClick
+ 0001:00342A14       fPtSel.TfrmPtSel.cmdSaveListClick
+ 0001:00342A34       fPtSel.TfrmPtSel.cmdProcessInfoClick
+ 0001:00342C5C       fPtSel.TfrmPtSel.cmdProcessAllClick
+ 0001:00342CDC       fPtSel.TfrmPtSel.lstvAlertsDblClick
+ 0001:00342CF8       fPtSel.TfrmPtSel.cmdForwardClick
+ 0001:00342EF8       fPtSel.TfrmPtSel.cmdRemoveClick
+ 0001:00343140       fPtSel.TfrmPtSel.FormDestroy
+ 0001:00343174       fPtSel.TfrmPtSel.FormResize
+ 0001:00343210       fPtSel.TfrmPtSel.pnlPtSelResize
+ 0001:00343264       fPtSel.TfrmPtSel.Loaded
+ 0001:003434A4       fPtSel.TfrmPtSel.RPLDisplay
+ 0001:003434CC       fPtSel.TfrmPtSel.FormClose
+ 0001:003436FC       fPtSel.TfrmPtSel.FormCreate
+ 0001:00343728       fPtSel.TfrmPtSel.cboPatientKeyDown
+ 0001:00343760       fPtSel.TfrmPtSel.AlertList
+ 0001:00343C64       fPtSel.TfrmPtSel.lstvAlertsColumnClick
+ 0001:00343E2C       fPtSel.TfrmPtSel.lstvAlertsCompare
+ 0001:00343F74       fPtSel.TfrmPtSel.DupLastSSN
+ 0001:00344240       fPtSel.TfrmPtSel.ShowFlagInfo
+ 0001:00344378       fPtSel.TfrmPtSel.lstFlagsClick
+ 0001:00344388       fPtSel.TfrmPtSel.lstFlagsKeyDown
+ 0001:003443B4       fPtSel.TfrmPtSel.lstvAlertsSelectItem
+ 0001:00344400       fPtSel.TfrmPtSel.ShowButts
+ 0001:003444C8       fPtSel.TfrmPtSel.lstvAlertsInfoTip
+ 0001:00344530       fPtSel.TfrmPtSel.lstvAlertsKeyDown
+ 0001:00344794       fPtSel.TfrmPtSel.FormShow
+ 0001:003449DC       fPtSel.TfrmPtSel.ReadyAlert
+ 0001:00344A38       fPtSel.TfrmPtSel.ReformatAlertDateTime
+ 0001:00344CF8       fPtSel.TfrmPtSel.AdjustButtonSize
+ 0001:00344E2C       fPtSel.TfrmPtSel.AdjustNotificationButtons
+ 0001:00344F14       fPtSel.TfrmPtSel.onclick1
+ 0001:003450D0       fPtSel.Finalization
+ 0001:00345134       fLabPrint..TfrmLabPrint
+ 0001:0034542C       fLabPrint.PrintLabs
+ 0001:00345688       fLabPrint.TfrmLabPrint.DisplaySelectDevice
+ 0001:00345740       fLabPrint.TfrmLabPrint.cboDeviceChange
+ 0001:0034580C       fLabPrint.TfrmLabPrint.cboDeviceNeedData
+ 0001:00345834       fLabPrint.StringPad
+ 0001:003458DC       fLabPrint.TfrmLabPrint.cmdOKClick
+ 0001:00346C38       fLabPrint.TfrmLabPrint.FindVType
+ 0001:003475D4       fLabPrint.TfrmLabPrint.cmdCancelClick
+ 0001:003475DC       fLabTest..TfrmLabTest
+ 0001:00347874       fLabTest.SelectTest
+ 0001:00347980       fLabTest.TfrmLabTest.FormCreate
+ 0001:00347BC4       fLabTest.TfrmLabTest.cboListNeedData
+ 0001:00347BEC       fLabTest.TfrmLabTest.cboSpecimenNeedData
+ 0001:00347C14       fLabTest.TfrmLabTest.cmdOKClick
+ 0001:00347D00       fLabTest.TfrmLabTest.cboListEnter
+ 0001:00347D10       fLabTest.TfrmLabTest.cboListExit
+ 0001:00347D20       fLabTests..TfrmLabTests
+ 0001:00348030       fLabTests.SelectTests
+ 0001:00348158       fLabTests.TfrmLabTests.FormCreate
+ 0001:0034818C       fLabTests.TfrmLabTests.cboTestsNeedData
+ 0001:003481B4       fLabTests.TfrmLabTests.cmdOKClick
+ 0001:00348228       fLabTests.TfrmLabTests.cmdClearClick
+ 0001:00348244       fLabTests.TfrmLabTests.cmdRemoveClick
+ 0001:003482F8       fLabTests.TfrmLabTests.lstListClick
+ 0001:00348348       fLabTests.TfrmLabTests.cboTestsChange
+ 0001:00348368       fLabTests.TfrmLabTests.cboTestsEnter
+ 0001:00348378       fLabTests.TfrmLabTests.cboTestsExit
+ 0001:00348388       fLabTests.TfrmLabTests.cmdAddClick
+ 0001:003484AC       fLabTests.TfrmLabTests.FormClose
+ 0001:003484B4       fLabTestGroups..TfrmLabTestGroups
+ 0001:00348A50       fLabTestGroups.SelectTestGroups
+ 0001:00348C20       fLabTestGroups.TfrmLabTestGroups.FormCreate
+ 0001:00348F80       fLabTestGroups.TfrmLabTestGroups.cboTestsNeedData
+ 0001:00348FA8       fLabTestGroups.TfrmLabTestGroups.cmdOKClick
+ 0001:00349084       fLabTestGroups.TfrmLabTestGroups.cmdClearClick
+ 0001:003490A0       fLabTestGroups.TfrmLabTestGroups.cmdRemoveClick
+ 0001:00349154       fLabTestGroups.TfrmLabTestGroups.cmdUpClick
+ 0001:00349294       fLabTestGroups.TfrmLabTestGroups.cmdDownClick
+ 0001:003493D4       fLabTestGroups.TfrmLabTestGroups.lstListClick
+ 0001:0034950C       fLabTestGroups.TfrmLabTestGroups.cboUsersNeedData
+ 0001:00349534       fLabTestGroups.TfrmLabTestGroups.cboSpecimenNeedData
+ 0001:0034955C       fLabTestGroups.TfrmLabTestGroups.cboUsersClick
+ 0001:0034958C       fLabTestGroups.TfrmLabTestGroups.AddTests
+ 0001:003496E0       fLabTestGroups.TfrmLabTestGroups.lstTestGroupsChange
+ 0001:00349724       fLabTestGroups.TfrmLabTestGroups.TestGroupEnable
+ 0001:003497D4       fLabTestGroups.TfrmLabTestGroups.cmdReplaceClick
+ 0001:003499B8       fLabTestGroups.TfrmLabTestGroups.cmdAddClick
+ 0001:00349BF8       fLabTestGroups.TfrmLabTestGroups.cmdDeleteClick
+ 0001:00349E1C       fLabTestGroups.TfrmLabTestGroups.cboTestsChange
+ 0001:00349E3C       fLabTestGroups.TfrmLabTestGroups.cboTestsEnter
+ 0001:00349E4C       fLabTestGroups.TfrmLabTestGroups.cboTestsExit
+ 0001:00349E5C       fLabTestGroups.TfrmLabTestGroups.cmdAddTestClick
+ 0001:00349E7C       fLabTestGroups.TfrmLabTestGroups.pnlUpButtonEnter
+ 0001:00349E8C       fLabTestGroups.TfrmLabTestGroups.pnlUpButtonExit
+ 0001:00349E9C       fLabTestGroups.TfrmLabTestGroups.pnlDownButtonEnter
+ 0001:00349EAC       fLabTestGroups.TfrmLabTestGroups.pnlDownButtonExit
+ 0001:00349EBC       fLabTestGroups.TfrmLabTestGroups.pnlUpButtonResize
+ 0001:00349ED4       fLabTestGroups.TfrmLabTestGroups.pnlDownButtonResize
+ 0001:00349EEC       fLabs..TGrdLab508Manager
+ 0001:00349F9C       fLabs..TfrmLabs
+ 0001:0034AD34       fLabs.TfrmLabs.RequestPrint
+ 0001:0034B400       fLabs.TfrmLabs.FormCreate
+ 0001:0034B5C8       fLabs.TfrmLabs.UpdateRemoteStatus
+ 0001:0034B740       fLabs.TfrmLabs.AllowContextChange
+ 0001:0034B8B0       fLabs.TfrmLabs.ClearPtData
+ 0001:0034B968       fLabs.TfrmLabs.DisplayPage
+ 0001:0034BE5C       fLabs.TfrmLabs.SetFontSize
+ 0001:0034BE74       fLabs.TfrmLabs.LoadListView
+ 0001:0034C9D0       fLabs.TfrmLabs.DisplayHeading
+ 0001:0034CF14       fLabs.TfrmLabs.AlignList
+ 0001:0034D080       fLabs.TfrmLabs.LoadTreeView
+ 0001:0034D4E0       fLabs.TfrmLabs.lstHeadersClick
+ 0001:0034D544       fLabs.TfrmLabs.lstQualifierClick
+ 0001:0034FA90       fLabs.TfrmLabs.lblDateEnter
+ 0001:0034FB1C       fLabs.TfrmLabs.lstDatesClick
+ 0001:0035122C       fLabs.TfrmLabs.cmdOtherTestsClick
+ 0001:00351234       fLabs.TfrmLabs.GraphList
+ 0001:003514BC       fLabs.TfrmLabs.HGrid
+ 0001:00351BB0       fLabs.TfrmLabs.VGrid
+ 0001:0035224C       fLabs.TfrmLabs.GridComments
+ 0001:0035238C       fLabs.TfrmLabs.FormDestroy
+ 0001:00352530       fLabs.TfrmLabs.FillGrid
+ 0001:003528B0       fLabs.TfrmLabs.FillComments
+ 0001:00352A68       fLabs.TfrmLabs.GetInterimGrid
+ 0001:0035335C       fLabs.TfrmLabs.cmdNextClick
+ 0001:00353488       fLabs.TfrmLabs.cmdPrevClick
+ 0001:003535B8       fLabs.OkFloatValue
+ 0001:00353708       fLabs.TfrmLabs.WorksheetChart
+ 0001:00353F0C       fLabs.TfrmLabs.GetStartStop
+ 0001:00354010       fLabs.TfrmLabs.cmdRecentClick
+ 0001:003540C0       fLabs.TfrmLabs.cmdOldClick
+ 0001:00354154       fLabs.TfrmLabs.FormResize
+ 0001:003541C8       fLabs.TfrmLabs.pnlRightResize
+ 0001:003541EC       fLabs.TfrmLabs.FMToDateTime
+ 0001:003543F4       fLabs.TfrmLabs.chkValuesClick
+ 0001:00354418       fLabs.TfrmLabs.chk3DClick
+ 0001:00354438       fLabs.TfrmLabs.GraphChart
+ 0001:00354830       fLabs.TfrmLabs.ragHorVClick
+ 0001:00354858       fLabs.TfrmLabs.ragCorGClick
+ 0001:00354A1C       fLabs.TfrmLabs.lstTestGraphClick
+ 0001:00354A88       fLabs.TfrmLabs.Print1Click
+ 0001:00354A98       fLabs.TfrmLabs.Copy1Click
+ 0001:00354C98       fLabs.TfrmLabs.Copy2Click
+ 0001:00354CA4       fLabs.TfrmLabs.Print2Click
+ 0001:00354CB4       fLabs.TfrmLabs.lvReportsColumnClick
+ 0001:003551D0       fLabs.CompareValues
+ 0001:003554C0       fLabs.TfrmLabs.lvReportsCompare
+ 0001:00355570       fLabs.TfrmLabs.lvReportsKeyUp
+ 0001:003555AC       fLabs.TfrmLabs.lvReportsSelectItem
+ 0001:00355EEC       fLabs.TfrmLabs.SelectAll1Click
+ 0001:00355F34       fLabs.TfrmLabs.SelectAll2Click
+ 0001:00355F40       fLabs.TfrmLabs.chkGraphValuesClick
+ 0001:00355F64       fLabs.TfrmLabs.chkGraph3DClick
+ 0001:00355F84       fLabs.TfrmLabs.chkGraphZoomClick
+ 0001:00356150       fLabs.TfrmLabs.chkMaxFreqClick
+ 0001:003561F0       fLabs.TfrmLabs.GotoTop1Click
+ 0001:0035621C       fLabs.TfrmLabs.GotoBottom1Click
+ 0001:003562DC       fLabs.TfrmLabs.FreezeText1Click
+ 0001:00356440       fLabs.TfrmLabs.UnfreezeText1Click
+ 0001:0035647C       fLabs.TfrmLabs.PopupMenu1Popup
+ 0001:0035658C       fLabs.TfrmLabs.ProcessNotifications
+ 0001:00356964       fLabs.TfrmLabs.chkZoomClick
+ 0001:003569D0       fLabs.TfrmLabs.chtChartUndoZoom
+ 0001:003569E4       fLabs.TfrmLabs.popCopyClick
+ 0001:003569F0       fLabs.TfrmLabs.popChartPopup
+ 0001:00356B38       fLabs.TfrmLabs.popValuesClick
+ 0001:00356BA0       fLabs.TfrmLabs.pop3DClick
+ 0001:00356C08       fLabs.TfrmLabs.popZoomClick
+ 0001:00356C70       fLabs.TfrmLabs.popZoomBackClick
+ 0001:00356C84       fLabs.TfrmLabs.chtChartMouseDown
+ 0001:00356CAC       fLabs.TfrmLabs.chtChartClickSeries
+ 0001:00356DDC       fLabs.TfrmLabs.chtChartClickLegend
+ 0001:00356E94       fLabs.TfrmLabs.popDetailsClick
+ 0001:003572F4       fLabs.TfrmLabs.popPrintClick
+ 0001:00357308       fLabs.TfrmLabs.PrintLabGraph
+ 0001:00357468       fLabs.TfrmLabs.BeginEndDates
+ 0001:003576C4       fLabs.TfrmLabs.Timer1Timer
+ 0001:00357A28       fLabs.TfrmLabs.tvReportsClick
+ 0001:0035AD2C       fLabs.TfrmLabs.tvReportsCollapsing
+ 0001:0035AD40       fLabs.TfrmLabs.tvReportsExpanding
+ 0001:0035AD54       fLabs.TfrmLabs.tvReportsKeyDown
+ 0001:0035AD80       fLabs.TfrmLabs.GoRemote
+ 0001:0035C1D8       fLabs.TfrmLabs.GoRemoteOld
+ 0001:0035C9AC       fLabs.TfrmLabs.TabControl1Change
+ 0001:0035CF5C       fLabs.TfrmLabs.WebBrowser1DocumentComplete
+ 0001:0035D014       fLabs.TfrmLabs.ChkBrowser
+ 0001:0035D034       fLabs.TfrmLabs.CommonComponentVisible
+ 0001:0035D28C       fLabs.TfrmLabs.ShowTabControl
+ 0001:0035D2DC       fLabs.TfrmLabs.Splitter1CanResize
+ 0001:0035D2F4       fLabs.TfrmLabs.sptHorzRightCanResize
+ 0001:0035D308       fLabs.TfrmLabs.sptHorzRightMoved
+ 0001:0035D320       fLabs.TfrmLabs.Memo1KeyUp
+ 0001:0035D3CC       fLabs.TGrdLab508Manager.Create
+ 0001:0035D40C       fLabs.TGrdLab508Manager.GetItem
+ 0001:0035D438       fLabs.TGrdLab508Manager.GetTextToSpeak
+ 0001:0035D538       fLabs.TGrdLab508Manager.GetValue
+ 0001:0035D550       fLabs.TGrdLab508Manager.ToBlankIfEmpty
+ 0001:0035D5C0       fLabs.Finalization
+ 0001:0035D668       fPtDemo..TfrmPtDemo
+ 0001:0035D8C8       fPtDemo.PatientInquiry
+ 0001:0035D950       fPtDemo.TfrmPtDemo.FormCreate
+ 0001:0035DAF0       fPtDemo.TfrmPtDemo.cmdNewPtClick
+ 0001:0035DB00       fPtDemo.TfrmPtDemo.cmdCloseClick
+ 0001:0035DB08       fPtDemo.TfrmPtDemo.cmdPrintClick
+ 0001:0035DDD0       fAbout..TfrmAbout
+ 0001:0035E0A4       fAbout.ShowAbout
+ 0001:0035E14C       fAbout.TfrmAbout.FormCreate
+ 0001:0035E41C       fxBroker..TfrmBroker
+ 0001:0035E6CC       fxBroker.ShowBroker
+ 0001:0035E7FC       fxBroker.TfrmBroker.cmdPrevClick
+ 0001:0035E8C4       fxBroker.TfrmBroker.cmdNextClick
+ 0001:0035E990       fxBroker.TfrmBroker.FormClose
+ 0001:0035E9E8       fxBroker.TfrmBroker.FormResize
+ 0001:0035E9F0       fxBroker.TfrmBroker.FormCreate
+ 0001:0035EA08       fxBroker.TfrmBroker.FormKeyUp
+ 0001:0035EA20       fxBroker.TfrmBroker.btnRLTClick
+ 0001:0035EB78       fxLists..TfrmDbgList
+ 0001:0035ED2C       fxLists.DebugListItems
+ 0001:0035EDD4       fxLists.TfrmDbgList.FormKeyUp
+ 0001:0035EDEC       fxServer..TfrmDbgServer
+ 0001:0035F004       fxServer.DebugShowServer
+ 0001:0035F060       fxServer.TfrmDbgServer.FormCreate
+ 0001:0035F074       fxServer.TfrmDbgServer.FormKeyUp
+ 0001:0035F08C       fSplash..TfrmSplash
+ 0001:0035F2A4       fSplash.TfrmSplash.FormCreate
+ 0001:0035F3B8       fLabInfo..TfrmLabInfo
+ 0001:0035F5E0       fLabInfo.ExecuteLabInfo
+ 0001:0035F660       fLabInfo.TfrmLabInfo.btnOKClick
+ 0001:0035F670       fLabInfo.TfrmLabInfo.FormCreate
+ 0001:0035F6A4       fLabInfo.TfrmLabInfo.cboTestsNeedData
+ 0001:0035F6CC       fLabInfo.TfrmLabInfo.cboTestsClick
+ 0001:0035F73C       fBAOptionsDiagnoses..TfrmBAOptionsDiagnoses
+ 0001:0035FC34       fBAOptionsDiagnoses.DialogOptionsDiagnoses
+ 0001:0035FCA4       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormCreate
+ 0001:0035FD50       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.LoadEncounterDx
+ 0001:0035FEC4       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.ListDiagnosesSections
+ 0001:00360018       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.ListDiagnosesCodes
+ 0001:00360240       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.AddProblemsToDxList
+ 0001:0036068C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnOtherClick
+ 0001:00360958       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbSectionsClick
+ 0001:00360A10       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbSectionsEnter
+ 0001:00360A20       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbDiagnosisClick
+ 0001:00360B3C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnCancelClick
+ 0001:00360B44       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnOKClick
+ 0001:00360BC4       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnAddClick
+ 0001:00360E48       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnDeleteClick
+ 0001:00360EF8       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbDiagnosisChange
+ 0001:00360F4C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbPersonalDxClick
+ 0001:00360FA0       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.lbDiagnosisEnter
+ 0001:00360FC8       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormShow
+ 0001:00361040       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.Button1Click
+ 0001:00361058       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.InactiveICDNotification
+ 0001:00361200       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormActivate
+ 0001:00361208       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.IsDXInList
+ 0001:003612CC       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.LoadPersonalDxList
+ 0001:00361484       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnRemoveAllClick
+ 0001:003615AC       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.btnAddAllClick
+ 0001:00361818       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.hdrCntlDxSectionClick
+ 0001:00361848       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.FormResize
+ 0001:003618B8       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.SyncDxDeleteList
+ 0001:0036196C       fBAOptionsDiagnoses.TfrmBAOptionsDiagnoses.SyncDxNewList
+ 0001:00361A70       fBAOptionsDiagnoses.Finalization
+ 0001:00361AC0       uOptions..TSurrogate
+ 0001:00361B2C       uOptions.OKToday
+ 0001:00361BF0       uOptions.GetMultiplier
+ 0001:00361CBC       uOptions.RelativeDate
+ 0001:00362064       uOptions.DateLimits
+ 0001:00362194       uOptions.ShowDisplay
+ 0001:00362298       uOptions.TextExit
+ 0001:0036235C       uOptions.LabelSurrogate
+ 0001:0036264C       uOptions.DisplayPtInfo
+ 0001:00362878       fOptionsReportsDefault..TfrmOptionsReportsDefault
+ 0001:00362C84       fOptionsReportsDefault.DialogOptionsHSDefault
+ 0001:00362D34       fOptionsReportsDefault.TfrmOptionsReportsDefault.btnOKClick
+ 0001:00363138       fOptionsReportsDefault.TfrmOptionsReportsDefault.btnCancelClick
+ 0001:00363140       fOptionsReportsDefault.TfrmOptionsReportsDefault.btnResetClick
+ 0001:00363580       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultMaxExit
+ 0001:0036371C       fOptionsReportsDefault.TfrmOptionsReportsDefault.fillLabelText
+ 0001:003638B8       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultStartKeyPress
+ 0001:003638CC       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultEndKeyPress
+ 0001:003638E0       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultMaxKeyPress
+ 0001:003638F4       fOptionsReportsDefault.TfrmOptionsReportsDefault.FormCreate
+ 0001:00363C10       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStartExit
+ 0001:00363E8C       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStopExit
+ 0001:00364114       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStartKeyPress
+ 0001:00364144       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStopKeyPress
+ 0001:00364174       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStartClick
+ 0001:00364180       fOptionsReportsDefault.TfrmOptionsReportsDefault.odcDfStopClick
+ 0001:0036418C       fOptionsReportsDefault.TfrmOptionsReportsDefault.edtDefaultMaxClick
+ 0001:00364198       fOptionsReportsCustom..TfrmOptionsReportsCustom
+ 0001:003645E4       fOptionsReportsCustom.TfrmOptionsReportsCustom.UMDelayEvent
+ 0001:003646B0       fOptionsReportsCustom.DialogOptionsHSCustom
+ 0001:00364760       fOptionsReportsCustom.TfrmOptionsReportsCustom.FormCreate
+ 0001:00364778       fOptionsReportsCustom.PlaceControl
+ 0001:00364814       fOptionsReportsCustom.Synch
+ 0001:00364828       fOptionsReportsCustom.TfrmOptionsReportsCustom.ShowEditor
+ 0001:00364A14       fOptionsReportsCustom.TfrmOptionsReportsCustom.ValFor
+ 0001:00364A3C       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportKeyPress
+ 0001:00364C2C       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportMouseDown
+ 0001:00364E60       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportDrawCell
+ 0001:00364F00       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtMaxExit
+ 0001:00365240       fOptionsReportsCustom.TfrmOptionsReportsCustom.btnApplyClick
+ 0001:00365514       fOptionsReportsCustom.TfrmOptionsReportsCustom.btnCancelClick
+ 0001:0036552C       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStartExit
+ 0001:003658EC       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStopExit
+ 0001:00365CAC       fOptionsReportsCustom.TfrmOptionsReportsCustom.FormClose
+ 0001:00365CC4       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStartKeyPress
+ 0001:00365CEC       fOptionsReportsCustom.TfrmOptionsReportsCustom.odbStopKeyPress
+ 0001:00365D14       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtMaxKeyPress
+ 0001:00365D3C       fOptionsReportsCustom.TfrmOptionsReportsCustom.btnOKClick
+ 0001:00365D60       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtSearchChange
+ 0001:00365F1C       fOptionsReportsCustom.TfrmOptionsReportsCustom.edtSearchKeyPress
+ 0001:00365F44       fOptionsReportsCustom.TfrmOptionsReportsCustom.FormShow
+ 0001:00366428       fOptionsReportsCustom.TfrmOptionsReportsCustom.grdReportKeyDown
+ 0001:003664A8       fOptionsTitles..TfrmOptionsTitles
+ 0001:00366930       fOptionsTitles.DialogOptionsTitles
+ 0001:003669E0       fOptionsTitles.TfrmOptionsTitles.FormShow
+ 0001:00366B38       fOptionsTitles.TfrmOptionsTitles.btnOKClick
+ 0001:00366B60       fOptionsTitles.TfrmOptionsTitles.cboDocumentClassClick
+ 0001:00366DC4       fOptionsTitles.TfrmOptionsTitles.cboDocumentTitlesNeedData
+ 0001:00366E18       fOptionsTitles.TfrmOptionsTitles.btnSaveChangesClick
+ 0001:00366EFC       fOptionsTitles.TfrmOptionsTitles.btnDefaultClick
+ 0001:0036707C       fOptionsTitles.TfrmOptionsTitles.btnAddClick
+ 0001:0036711C       fOptionsTitles.TfrmOptionsTitles.lstYourTitlesChange
+ 0001:003671C0       fOptionsTitles.TfrmOptionsTitles.btnRemoveClick
+ 0001:0036723C       fOptionsTitles.TfrmOptionsTitles.AddIfUnique
+ 0001:00367324       fOptionsTitles.TfrmOptionsTitles.MemberNotOnList
+ 0001:003673D4       fOptionsTitles.TfrmOptionsTitles.cboDocumentTitlesChange
+ 0001:003673DC       fOptionsTitles.TfrmOptionsTitles.btnUpClick
+ 0001:00367458       fOptionsTitles.TfrmOptionsTitles.btnDownClick
+ 0001:003674D8       fOptionsTitles.TfrmOptionsTitles.GetFirstSelection
+ 0001:00367510       fOptionsTitles.TfrmOptionsTitles.SetItem
+ 0001:0036754C       fOptionsTitles.TfrmOptionsTitles.RemoveSelected
+ 0001:0036765C       fOptionsTitles.TfrmOptionsTitles.CheckEnable
+ 0001:003677E8       fOptionsTitles.TfrmOptionsTitles.lstYourTitlesClick
+ 0001:00367800       fOptionsNotes..TfrmOptionsNotes
+ 0001:00367B40       fOptionsNotes.DialogOptionsNotes
+ 0001:00367BF0       fOptionsNotes.TfrmOptionsNotes.FormShow
+ 0001:00367D88       fOptionsNotes.TfrmOptionsNotes.btnOKClick
+ 0001:00367F28       fOptionsNotes.TfrmOptionsNotes.txtAutoSaveChange
+ 0001:00368044       fOptionsNotes.TfrmOptionsNotes.txtAutoSaveKeyPress
+ 0001:00368070       fOptionsNotes.TfrmOptionsNotes.txtAutoSaveExit
+ 0001:00368180       fOptionsNotes.TfrmOptionsNotes.spnAutoSaveClick
+ 0001:003681E8       fOptionsNotes.TfrmOptionsNotes.cboCosignerNeedData
+ 0001:00368210       fOptionsNotes.TfrmOptionsNotes.cboCosignerExit
+ 0001:0036828C       fOptionsOther..TfrmOptionsOther
+ 0001:003686F0       fOptionsOther.DialogOptionsOther
+ 0001:003687A0       fOptionsOther.TfrmOptionsOther.FormShow
+ 0001:00368A28       fOptionsOther.TfrmOptionsOther.btnOKClick
+ 0001:00368D24       fOptionsOther.TfrmOptionsOther.FormCreate
+ 0001:00368D44       fOptionsOther.TfrmOptionsOther.dtStartExit
+ 0001:00368DD0       fOptionsOther.TfrmOptionsOther.dtStopExit
+ 0001:00368E94       fOptionsOther.TfrmOptionsOther.dtStartChange
+ 0001:00368F20       fOptionsOther.TfrmOptionsOther.txtEncStartChange
+ 0001:0036907C       fOptionsOther.TfrmOptionsOther.txtEncStopChange
+ 0001:003691D8       fOptionsOther.TfrmOptionsOther.txtEncStartExit
+ 0001:0036923C       fOptionsOther.TfrmOptionsOther.txtEncStopExit
+ 0001:003692A0       fOptionsOther.TfrmOptionsOther.btnEncDefaultsClick
+ 0001:00369318       fOptionsCombinations..TfrmOptionsCombinations
+ 0001:003696E4       fOptionsCombinations..TCombination
+ 0001:00369760       fOptionsCombinations.DialogOptionsCombinations
+ 0001:00369810       fOptionsCombinations.TfrmOptionsCombinations.radAddByTypeClick
+ 0001:00369A24       fOptionsCombinations.TfrmOptionsCombinations.lstAddByNeedData
+ 0001:00369AEC       fOptionsCombinations.TfrmOptionsCombinations.FormCreate
+ 0001:00369B10       fOptionsCombinations.TfrmOptionsCombinations.btnAddClick
+ 0001:00369CC4       fOptionsCombinations.TfrmOptionsCombinations.lvwCombinationsColumnClick
+ 0001:00369D18       fOptionsCombinations.TfrmOptionsCombinations.lvwCombinationsCompare
+ 0001:00369E38       fOptionsCombinations.TfrmOptionsCombinations.btnRemoveClick
+ 0001:00369EA4       fOptionsCombinations.TfrmOptionsCombinations.lstAddByChange
+ 0001:00369FCC       fOptionsCombinations.TfrmOptionsCombinations.Duplicate
+ 0001:0036A0B8       fOptionsCombinations.TfrmOptionsCombinations.lstAddByKeyUp
+ 0001:0036A0D4       fOptionsCombinations.TfrmOptionsCombinations.btnOKClick
+ 0001:0036A1B8       fOptionsCombinations.TfrmOptionsCombinations.lstAddByEnter
+ 0001:0036A1C8       fOptionsCombinations.TfrmOptionsCombinations.lstAddByExit
+ 0001:0036A1D8       fOptionsCombinations.TfrmOptionsCombinations.lvwCombinationsChange
+ 0001:0036A204       fOptionsCombinations.TfrmOptionsCombinations.LoadCombinations
+ 0001:0036A364       fOptionsCombinations.TfrmOptionsCombinations.FormShow
+ 0001:0036A378       fOptionsTeams..TfrmOptionsTeams
+ 0001:0036A750       fOptionsTeams.DialogOptionsTeams
+ 0001:0036A7F0       fOptionsTeams.TfrmOptionsTeams.FormCreate
+ 0001:0036A820       fOptionsTeams.TfrmOptionsTeams.FillATeams
+ 0001:0036A94C       fOptionsTeams.TfrmOptionsTeams.FillList
+ 0001:0036AA10       fOptionsTeams.TfrmOptionsTeams.MergeList
+ 0001:0036AAC0       fOptionsTeams.TfrmOptionsTeams.ItemNotAMember
+ 0001:0036AB70       fOptionsTeams.TfrmOptionsTeams.MemberNotOnList
+ 0001:0036AC20       fOptionsTeams.TfrmOptionsTeams.chkPersonalClick
+ 0001:0036AC84       fOptionsTeams.TfrmOptionsTeams.lstTeamsClick
+ 0001:0036AFB8       fOptionsTeams.TfrmOptionsTeams.chkRestrictClick
+ 0001:0036AFC0       fOptionsTeams.TfrmOptionsTeams.cboSubscribeClick
+ 0001:0036AFC8       fOptionsTeams.TfrmOptionsTeams.btnRemoveClick
+ 0001:0036B0FC       fOptionsTeams.TfrmOptionsTeams.mnuPatientIDClick
+ 0001:0036B164       fOptionsTeams.TfrmOptionsTeams.lstPatientsMouseDown
+ 0001:0036B1AC       fOptionsTeams.TfrmOptionsTeams.cboSubscribeKeyDown
+ 0001:0036B1E8       fOptionsTeams.TfrmOptionsTeams.cboSubscribeMouseClick
+ 0001:0036B3A0       fOptionsNewList..TfrmOptionsNewList
+ 0001:0036B638       fOptionsNewList.DialogOptionsNewList
+ 0001:0036B6BC       fOptionsNewList.TfrmOptionsNewList.btnOKClick
+ 0001:0036B8BC       fOptionsNewList.TfrmOptionsNewList.txtNewListKeyPress
+ 0001:0036B8E4       fOptionsNewList.TfrmOptionsNewList.FormCreate
+ 0001:0036B904       fOptionsNewList.TfrmOptionsNewList.txtNewListChange
+ 0001:0036B974       fOptionsLists..TfrmOptionsLists
+ 0001:0036BF20       fOptionsLists.DialogOptionsLists
+ 0001:0036BFD0       fOptionsLists.TfrmOptionsLists.FormCreate
+ 0001:0036C020       fOptionsLists.TfrmOptionsLists.btnNewListClick
+ 0001:0036C0E4       fOptionsLists.TfrmOptionsLists.radAddByTypeClick
+ 0001:0036C338       fOptionsLists.TfrmOptionsLists.AddIfUnique
+ 0001:0036C420       fOptionsLists.TfrmOptionsLists.lstPersonalListsChange
+ 0001:0036C76C       fOptionsLists.TfrmOptionsLists.lstAddByClick
+ 0001:0036CB38       fOptionsLists.TfrmOptionsLists.btnDeleteListClick
+ 0001:0036CD5C       fOptionsLists.TfrmOptionsLists.btnListSaveChangesClick
+ 0001:0036CE50       fOptionsLists.TfrmOptionsLists.btnPersonalPatientRAClick
+ 0001:0036CEB0       fOptionsLists.TfrmOptionsLists.btnListAddAllClick
+ 0001:0036CFD8       fOptionsLists.TfrmOptionsLists.btnPersonalPatientRClick
+ 0001:0036D07C       fOptionsLists.TfrmOptionsLists.lstPersonalPatientsChange
+ 0001:0036D158       fOptionsLists.TfrmOptionsLists.btnListAddClick
+ 0001:0036D280       fOptionsLists.TfrmOptionsLists.lstListPatsChange
+ 0001:0036D36C       fOptionsLists.TfrmOptionsLists.FormShow
+ 0001:0036D3F8       fOptionsLists.TfrmOptionsLists.grpVisibilityClick
+ 0001:0036D410       fOptionsLists.TfrmOptionsLists.lstAddByNeedData
+ 0001:0036D4FC       fOptionsLists.TfrmOptionsLists.btnOKClick
+ 0001:0036D600       fOptionsLists.TfrmOptionsLists.mnuPatientIDClick
+ 0001:0036D6B0       fOptionsLists.TfrmOptionsLists.lstListPatsMouseDown
+ 0001:0036D724       fOptionsLists.TfrmOptionsLists.lstPersonalPatientsMouseDown
+ 0001:0036D798       fOptionsLists.ShowMatchingPatients
+ 0001:0036D860       fOptionsLists.TfrmOptionsLists.lstAddByKeyPress
+ 0001:0036D944       fOptionsPatientSelection..TfrmOptionsPatientSelection
+ 0001:0036E024       fOptionsPatientSelection.DialogOptionsPatientSelection
+ 0001:0036E0E0       fOptionsPatientSelection.TfrmOptionsPatientSelection.FormCreate
+ 0001:0036E190       fOptionsPatientSelection.TfrmOptionsPatientSelection.FormShow
+ 0001:0036E680       fOptionsPatientSelection.TfrmOptionsPatientSelection.spnVisitStartClick
+ 0001:0036E7C0       fOptionsPatientSelection.TfrmOptionsPatientSelection.spnVisitStopClick
+ 0001:0036E8E8       fOptionsPatientSelection.TfrmOptionsPatientSelection.btnOKClick
+ 0001:0036EA98       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStartExit
+ 0001:0036EB30       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStopExit
+ 0001:0036EBC8       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStartKeyUp
+ 0001:0036EC2C       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStopKeyUp
+ 0001:0036EC90       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboProviderExit
+ 0001:0036ECB8       fOptionsPatientSelection.TfrmOptionsPatientSelection.radListSourceClick
+ 0001:0036ED8C       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboMondayNeedData
+ 0001:0036EDB4       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboTuesdayNeedData
+ 0001:0036EDDC       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboWednesdayNeedData
+ 0001:0036EE04       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboThursdayNeedData
+ 0001:0036EE2C       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboFridayNeedData
+ 0001:0036EE54       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboSaturdayNeedData
+ 0001:0036EE7C       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboSundayNeedData
+ 0001:0036EEA4       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboProviderNeedData
+ 0001:0036EECC       fOptionsPatientSelection.TfrmOptionsPatientSelection.NextControl
+ 0001:0036EEE0       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStartKeyPress
+ 0001:0036EEFC       fOptionsPatientSelection.TfrmOptionsPatientSelection.txtVisitStopKeyPress
+ 0001:0036EF20       fOptionsPatientSelection.TfrmOptionsPatientSelection.cboProviderKeyUp
+ 0001:0036EF48       fOptionsSurrogate..TfrmOptionsSurrogate
+ 0001:0036F294       fOptionsSurrogate.DialogOptionsSurrogate
+ 0001:0036F548       fOptionsSurrogate.TfrmOptionsSurrogate.FormShow
+ 0001:0036F580       fOptionsSurrogate.TfrmOptionsSurrogate.btnSurrogateDateRangeClick
+ 0001:0036F6D8       fOptionsSurrogate.TfrmOptionsSurrogate.cboSurrogateNeedData
+ 0001:0036F700       fOptionsSurrogate.TfrmOptionsSurrogate.btnOKClick
+ 0001:0036F8D0       fOptionsSurrogate.TfrmOptionsSurrogate.btnRemoveClick
+ 0001:0036F934       fOptionsSurrogate.TfrmOptionsSurrogate.LabelInfo
+ 0001:0036FB54       fOptionsSurrogate.TfrmOptionsSurrogate.cboSurrogateChange
+ 0001:0036FC2C       fOptionsSurrogate.TfrmOptionsSurrogate.cboSurrogateKeyDown
+ 0001:0036FC54       fOptionsReminders..TfrmOptionsReminders
+ 0001:0036FFD8       fOptionsReminders.DialogOptionsReminders
+ 0001:0037009C       fOptionsReminders.TfrmOptionsReminders.FormCreate
+ 0001:00370214       fOptionsReminders.TfrmOptionsReminders.CheckEnable
+ 0001:0037034C       fOptionsReminders.TfrmOptionsReminders.lstDisplayedChange
+ 0001:00370354       fOptionsReminders.TfrmOptionsReminders.lstNotDisplayedChange
+ 0001:0037035C       fOptionsReminders.TfrmOptionsReminders.btnUpClick
+ 0001:003703C0       fOptionsReminders.TfrmOptionsReminders.btnDownClick
+ 0001:00370428       fOptionsReminders.TfrmOptionsReminders.btnDeleteClick
+ 0001:00370470       fOptionsReminders.TfrmOptionsReminders.btnAddClick
+ 0001:003704D0       fOptionsReminders.TfrmOptionsReminders.GetFirstSelection
+ 0001:00370508       fOptionsReminders.TfrmOptionsReminders.SetItem
+ 0001:00370550       fOptionsReminders.TfrmOptionsReminders.MoveSelected
+ 0001:003705F8       fOptionsReminders.TfrmOptionsReminders.btnOKClick
+ 0001:0037070C       fOptionsReminders.TfrmOptionsReminders.radSortClick
+ 0001:00370860       fOptionsDays..TfrmOptionsDays
+ 0001:00370DD4       fOptionsDays.DialogOptionsDays
+ 0001:00370E84       fOptionsDays.TfrmOptionsDays.FormCreate
+ 0001:00370E94       fOptionsDays.TfrmOptionsDays.FormShow
+ 0001:00370FD8       fOptionsDays.TfrmOptionsDays.spnVisitStartClick
+ 0001:00371130       fOptionsDays.TfrmOptionsDays.spnVisitStopClick
+ 0001:0037129C       fOptionsDays.TfrmOptionsDays.spnLabInpatientClick
+ 0001:00371308       fOptionsDays.TfrmOptionsDays.spnLabOutpatientClick
+ 0001:00371374       fOptionsDays.TfrmOptionsDays.txtLabInpatientKeyPress
+ 0001:003713A0       fOptionsDays.TfrmOptionsDays.btnLabDefaultsClick
+ 0001:00371440       fOptionsDays.TfrmOptionsDays.btnVisitDefaultsClick
+ 0001:00371490       fOptionsDays.TfrmOptionsDays.AdjustVisitLabel
+ 0001:003715E0       fOptionsDays.TfrmOptionsDays.AdjustLabLabel
+ 0001:003716FC       fOptionsDays.TfrmOptionsDays.btnOKClick
+ 0001:00371728       fOptionsDays.TfrmOptionsDays.txtLabInpatientChange
+ 0001:00371844       fOptionsDays.TfrmOptionsDays.txtLabInpatientExit
+ 0001:00371954       fOptionsDays.TfrmOptionsDays.txtLabOutpatientChange
+ 0001:00371A70       fOptionsDays.TfrmOptionsDays.txtLabOutpatientExit
+ 0001:00371B80       fOptionsDays.TfrmOptionsDays.txtVisitStartExit
+ 0001:00371C20       fOptionsDays.TfrmOptionsDays.txtVisitStartKeyUp
+ 0001:00371C84       fOptionsDays.TfrmOptionsDays.txtVisitStopExit
+ 0001:00371D24       fOptionsDays.TfrmOptionsDays.txtVisitStopKeyUp
+ 0001:00371D88       fOptionsDays.TfrmOptionsDays.txtVisitStartKeyPress
+ 0001:00371DA4       fOptionsDays.TfrmOptionsDays.txtVisitStopKeyPress
+ 0001:00371DC0       fOptions..TfrmOptions
+ 0001:003729D8       fOptions..TRule
+ 0001:00372A4C       fOptions.DialogOptions
+ 0001:00373034       fOptions.TfrmOptions.FormCreate
+ 0001:003730A4       fOptions.TfrmOptions.FormDestroy
+ 0001:00373138       fOptions.TfrmOptions.btnCoverDaysClick
+ 0001:0037317C       fOptions.TfrmOptions.btnCoverRemindersClick
+ 0001:003731C0       fOptions.TfrmOptions.btnOtherParametersClick
+ 0001:00373204       fOptions.TfrmOptions.btnPatientSelectionClick
+ 0001:00373248       fOptions.TfrmOptions.btnPersonalListsClick
+ 0001:0037328C       fOptions.TfrmOptions.btnTeamsClick
+ 0001:003732D0       fOptions.TfrmOptions.btnNotificationsRemoveClick
+ 0001:003733C8       fOptions.TfrmOptions.Offset
+ 0001:00373410       fOptions.TfrmOptions.pagOptionsEnter
+ 0001:00373448       fOptions.TfrmOptions.btnApplyClick
+ 0001:00373498       fOptions.TfrmOptions.LoadNotifications
+ 0001:003735A8       fOptions.TfrmOptions.LoadOrderChecks
+ 0001:003735D0       fOptions.TfrmOptions.ApplyNotifications
+ 0001:0037377C       fOptions.TfrmOptions.ApplyOrderChecks
+ 0001:003738DC       fOptions.TfrmOptions.ApplyOtherStuff
+ 0001:00373970       fOptions.TfrmOptions.CheckApply
+ 0001:003739A0       fOptions.TfrmOptions.chkNotificationsFlaggedClick
+ 0001:003739B0       fOptions.TfrmOptions.LoadListView
+ 0001:00373B94       fOptions.TfrmOptions.lvwNotificationsChange
+ 0001:00373D24       fOptions.TfrmOptions.lvwNotificationsColumnClick
+ 0001:00373D78       fOptions.TfrmOptions.lvwNotificationsCompare
+ 0001:00373E98       fOptions.TfrmOptions.lvwNotificationsDblClick
+ 0001:00373FCC       fOptions.TfrmOptions.ChangeOnOff
+ 0001:00373FF0       fOptions.TfrmOptions.btnSurrogateClick
+ 0001:00374094       fOptions.TfrmOptions.btnCombinationsClick
+ 0001:003740D8       fOptions.TfrmOptions.btnNotesNotesClick
+ 0001:0037411C       fOptions.TfrmOptions.btnNotesTitlesClick
+ 0001:00374160       fOptions.TfrmOptions.btnReportsClick
+ 0001:003741A4       fOptions.TfrmOptions.btnReport1Click
+ 0001:003741E8       fOptions.TfrmOptions.lvwNotificationsEnter
+ 0001:0037422C       fOptions.TfrmOptions.lvwNotificationsMouseDown
+ 0001:0037425C       fOptions.TfrmOptions.btnDiagnosesClick
+ 0001:003742B8       fOptions.TfrmOptions.btnGraphSettingsClick
+ 0001:003742F8       fOptions.TfrmOptions.btnGraphViewsClick
+ 0001:00374308       fFrame..TfrmFrame
+ 0001:0037558C       fFrame.TfrmFrame.TimeoutCondition
+ 0001:003755AC       fFrame.TfrmFrame.GetTimedOut
+ 0001:003755C4       fFrame.CloseCPRS
+ 0001:00375618       fFrame.TfrmFrame.TimeOutAction
+ 0001:003756A4       fFrame.TfrmFrame.AppException
+ 0001:0037588C       fFrame.TfrmFrame.AllowContextChangeAll
+ 0001:00375B24       fFrame.TfrmFrame.ClearPatient
+ 0001:003760F0       fFrame.TfrmFrame.DisplayEncounterText
+ 0001:003762EC       fFrame.TfrmFrame.DLLActive
+ 0001:0037631C       fFrame.TfrmFrame.RefreshFixedStatusWidth
+ 0001:00376398       fFrame.TfrmFrame.FormCreate
+ 0001:00377180       fFrame.TfrmFrame.StartCCOWContextor
+ 0001:00377498       fFrame.TfrmFrame.UMInitiate
+ 0001:00377560       fFrame.TfrmFrame.FormDestroy
+ 0001:0037765C       fFrame.TfrmFrame.FormCloseQuery
+ 0001:003776FC       fFrame.TfrmFrame.SetUserTools
+ 0001:00377A08       fFrame.TfrmFrame.mnuToolsClick
+ 0001:00377A94       fFrame.TfrmFrame.UpdateECSParameter
+ 0001:00377C90       fFrame.TfrmFrame.compAccessTabPageCaptionQuery
+ 0001:00377CE8       fFrame.TfrmFrame.ValidECSUser
+ 0001:00377DA8       fFrame.TfrmFrame.FormClose
+ 0001:00377F44       fFrame.TfrmFrame.SetDebugMenu
+ 0001:00377FC0       fFrame.TfrmFrame.UMNewOrder
+ 0001:00378384       fFrame.TfrmFrame.WMSetFocus
+ 0001:003783D8       fFrame.TfrmFrame.UMShowPage
+ 0001:00378448       fFrame.TfrmFrame.SwitchToPage
+ 0001:003786A8       fFrame.TfrmFrame.mnuChartTabClick
+ 0001:00378718       fFrame.TfrmFrame.tabPageChange
+ 0001:003788E8       fFrame.TfrmFrame.PageIDToTab
+ 0001:0037894C       fFrame.TfrmFrame.TabToPageID
+ 0001:003789CC       fFrame.TfrmFrame.SetupPatient
+ 0001:00378FFC       fFrame.UpdatePatientInfoForAlert
+ 0001:003790BC       fFrame.TfrmFrame.mnuFileNextClick
+ 0001:00379C0C       fFrame.TfrmFrame.SetBADxList
+ 0001:00379CE4       fFrame.TfrmFrame.mnuFileOpenClick
+ 0001:0037A3AC       fFrame.TfrmFrame.DetermineNextTab
+ 0001:0037A508       fFrame.TfrmFrame.mnuFileEncounterClick
+ 0001:0037A530       fFrame.TfrmFrame.mnuFileReviewClick
+ 0001:0037A6CC       fFrame.TfrmFrame.mnuFileExitClick
+ 0001:0037A798       fFrame.TfrmFrame.mnuViewPostingsClick
+ 0001:0037A7A8       fFrame.Substitute
+ 0001:0037A888       fFrame.TfrmFrame.ExpandCommand
+ 0001:0037AAD4       fFrame.TakeOutAmps
+ 0001:0037AB8C       fFrame.ExcuteEC
+ 0001:0037ADCC       fFrame.ExcuteECS
+ 0001:0037B100       fFrame.TfrmFrame.ToolClick
+ 0001:0037B490       fFrame.TfrmFrame.mnuHelpBrokerClick
+ 0001:0037B4A8       fFrame.TfrmFrame.mnuHelpListsClick
+ 0001:0037B534       fFrame.TfrmFrame.mnuHelpSymbolsClick
+ 0001:0037B54C       fFrame.TfrmFrame.mnuHelpAboutClick
+ 0001:0037B564       fFrame.TfrmFrame.UMStatusText
+ 0001:0037B5E0       fFrame.TfrmFrame.pnlPatientMouseDown
+ 0001:0037B6C4       fFrame.TfrmFrame.pnlPatientMouseUp
+ 0001:0037B7A8       fFrame.TfrmFrame.pnlPrimaryCareMouseDown
+ 0001:0037B840       fFrame.TfrmFrame.pnlPrimaryCareMouseUp
+ 0001:0037B8D8       fFrame.TfrmFrame.pnlPostingsMouseDown
+ 0001:0037B970       fFrame.TfrmFrame.pnlPostingsMouseUp
+ 0001:0037BA08       fFrame.TfrmFrame.LoadSizesForUser
+ 0001:0037C018       fFrame.TfrmFrame.SaveSizesForUser
+ 0001:0037C648       fFrame.TfrmFrame.FormResize
+ 0001:0037C9E4       fFrame.TfrmFrame.ChangeFont
+ 0001:0037CF60       fFrame.TfrmFrame.FitToolbar
+ 0001:0037D380       fFrame.TfrmFrame.ToggleMenuItemChecked
+ 0001:0037D3C0       fFrame.TfrmFrame.mnuFontSizeClick
+ 0001:0037D4CC       fFrame.TfrmFrame.mnuEditClick
+ 0001:0037D684       fFrame.TfrmFrame.mnuEditUndoClick
+ 0001:0037D6AC       fFrame.TfrmFrame.mnuEditCutClick
+ 0001:0037D6CC       fFrame.TfrmFrame.mnuEditCopyClick
+ 0001:0037D6EC       fFrame.TfrmFrame.mnuEditPasteClick
+ 0001:0037D74C       fFrame.TfrmFrame.mnuFilePrintClick
+ 0001:0037D838       fFrame.TfrmFrame.FormHelp
+ 0001:0037D91C       fFrame.TfrmFrame.WMSysCommand
+ 0001:0037DB54       fFrame.TfrmFrame.RemindersChanged
+ 0001:0037DFFC       fFrame.TfrmFrame.pnlRemindersMouseDown
+ 0001:0037E040       fFrame.TfrmFrame.pnlRemindersMouseUp
+ 0001:0037E088       fFrame.TfrmFrame.SetUpCIRN
+ 0001:0037E3F4       fFrame.TfrmFrame.pnlCIRNClick
+ 0001:0037E418       fFrame.TfrmFrame.lstCIRNLocationsClick
+ 0001:0037F344       fFrame.TfrmFrame.popCIRNCloseClick
+ 0001:0037F384       fFrame.TfrmFrame.popCIRNSelectAllClick
+ 0001:0037F3D4       fFrame.TfrmFrame.popCIRNSelectNoneClick
+ 0001:0037F424       fFrame.TfrmFrame.mnuFilePrintSetupClick
+ 0001:0037F4AC       fFrame.TfrmFrame.lstCIRNLocationsChange
+ 0001:0037F5A0       fFrame.TfrmFrame.LabInfo1Click
+ 0001:0037F5B8       fFrame.StopProcessingNotifs
+ 0001:0037F620       fFrame.TfrmFrame.mnuFileNotifRemoveClick
+ 0001:0037FA70       fFrame.TfrmFrame.mnuToolsOptionsClick
+ 0001:0037FA90       fFrame.TfrmFrame.LoadUserPreferences
+ 0001:0037FAE0       fFrame.TfrmFrame.SaveUserPreferences
+ 0001:0037FAF8       fFrame.TfrmFrame.mnuFileRefreshClick
+ 0001:0037FB4C       fFrame.TfrmFrame.AppActivated
+ 0001:0037FBB4       fFrame.TfrmFrame.AppDeActivated
+ 0001:0037FC20       fFrame.TfrmFrame.CreateTab
+ 0001:0037FF20       fFrame.TfrmFrame.ShowHideChartTabMenus
+ 0001:0037FF78       fFrame.TfrmFrame.TabExists
+ 0001:0037FFD8       fFrame.TfrmFrame.ReportsOnlyDisplay
+ 0001:003801CC       fFrame.TfrmFrame.UpdatePtInfoOnRefresh
+ 0001:003805C0       fFrame.TfrmFrame.FormKeyDown
+ 0001:00380700       fFrame.TfrmFrame.FormActivate
+ 0001:0038072C       fFrame.TfrmFrame.pnlPrimaryCareEnter
+ 0001:0038079C       fFrame.TfrmFrame.pnlPrimaryCareExit
+ 0001:00380880       fFrame.TfrmFrame.pnlPatientClick
+ 0001:003808C4       fFrame.TfrmFrame.pnlVisitClick
+ 0001:00380A04       fFrame.TfrmFrame.pnlVistaWebClick
+ 0001:00380A30       fFrame.TfrmFrame.pnlVistaWebMouseDown
+ 0001:00380A58       fFrame.TfrmFrame.pnlVistaWebMouseUp
+ 0001:00380A80       fFrame.TfrmFrame.pnlPrimaryCareClick
+ 0001:00380AA4       fFrame.TfrmFrame.pnlRemindersClick
+ 0001:00380AD4       fFrame.TfrmFrame.pnlPostingsClick
+ 0001:00380AF8       fFrame.TfrmFrame.HandleCCOWError
+ 0001:00380CC4       fFrame.TfrmFrame.AllowCCOWContextChange
+ 0001:0038156C       fFrame.TfrmFrame.ctxContextorCanceled
+ 0001:003815A4       fFrame.TfrmFrame.ctxContextorPending
+ 0001:00381860       fFrame.TfrmFrame.ctxContextorCommitted
+ 0001:00381B50       fFrame.FindNextBestDFN
+ 0001:00381CEC       fFrame.TfrmFrame.FindBestCCOWDFN
+ 0001:00381F70       fFrame.TfrmFrame.UpdateCCOWContext
+ 0001:00382178       fFrame.TfrmFrame.mnuFileBreakContextClick
+ 0001:00382328       fFrame.TfrmFrame.mnuFileResumeContextGetClick
+ 0001:00382548       fFrame.TfrmFrame.mnuFileResumeContextSetClick
+ 0001:003828BC       fFrame.TfrmFrame.CheckForDifferentPatient
+ 0001:00382A88       fFrame.TfrmFrame.CheckForDifferentUser
+ 0001:00382B10       fFrame.TfrmFrame.CheckHyperlinkResponse
+ 0001:00382D4C       fFrame.TfrmFrame.HideEverything
+ 0001:00382EC4       fFrame.TfrmFrame.ShowEverything
+ 0001:00383050       fFrame.TfrmFrame.pnlFlagMouseDown
+ 0001:00383078       fFrame.TfrmFrame.pnlFlagMouseUp
+ 0001:003830A0       fFrame.TfrmFrame.pnlFlagClick
+ 0001:003830C4       fFrame.TfrmFrame.mnuFilePrintSelectedItemsClick
+ 0001:00383124       fFrame.TfrmFrame.mnuAlertRenewClick
+ 0001:0038319C       fFrame.TfrmFrame.mnuAlertForwardClick
+ 0001:00383268       fFrame.TfrmFrame.mnuGECStatusClick
+ 0001:00383508       fFrame.TfrmFrame.pnlFlagEnter
+ 0001:0038354C       fFrame.TfrmFrame.pnlFlagExit
+ 0001:00383590       fFrame.TfrmFrame.tabPageMouseUp
+ 0001:003835C8       fFrame.TfrmFrame.lstCIRNLocationsExit
+ 0001:0038361C       fFrame.TfrmFrame.AppEventsActivate
+ 0001:00383638       fFrame.TfrmFrame.ScreenActiveFormChange
+ 0001:00383688       fFrame.TfrmFrame.FocusApplicationTopForm
+ 0001:003836F4       fFrame.TfrmFrame.AppEventsShortCut
+ 0001:00383730       fFrame.TfrmFrame.mnuToolsGraphingClick
+ 0001:003839D4       fFrame.TfrmFrame.pnlCIRNMouseDown
+ 0001:003839FC       fFrame.TfrmFrame.pnlCIRNMouseUp
+ 0001:00383A24       fFrame.TfrmFrame.laMHVClick
+ 0001:00383A48       fFrame.TfrmFrame.laVAA2Click
+ 0001:00383A6C       fFrame.TfrmFrame.ViewInfo
+ 0001:00383F24       fFrame.TfrmFrame.mnuViewInformationClick
+ 0001:003840E4       fFrame.TfrmFrame.SetActiveTab
+ 0001:00384128       fFrame.TfrmFrame.NextButtonClick
+ 0001:00384180       fFrame.TfrmFrame.NextButtonMouseDown
+ 0001:003841A4       fFrame.TfrmFrame.SetUpNextButton
+ 0001:00384330       fFrame.Finalization
+ 0001:0038436C       fBALocalDiagnoses..TfrmBALocalDiagnoses
+ 0001:00384890       fBALocalDiagnoses.TfrmBALocalDiagnoses.Enter
+ 0001:003848E8       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormCreate
+ 0001:00384928       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormKeyPress
+ 0001:00384958       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListDiagnosisSections
+ 0001:00384AAC       fBALocalDiagnoses.TfrmBALocalDiagnoses.MainDriver
+ 0001:00384BB0       fBALocalDiagnoses.TfrmBALocalDiagnoses.LoadTempRec
+ 0001:00384DCC       fBALocalDiagnoses.TfrmBALocalDiagnoses.AssocDxToOrders
+ 0001:0038501C       fBALocalDiagnoses.TfrmBALocalDiagnoses.buOKClick
+ 0001:00385078       fBALocalDiagnoses.TfrmBALocalDiagnoses.LoadEncounterForm
+ 0001:003851B0       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddProbsToDiagnosis
+ 0001:00385508       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddPCEToDiagnosis
+ 0001:0038562C       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddPersonalDxToDiagnosisList
+ 0001:00385894       fBALocalDiagnoses.TfrmBALocalDiagnoses.buCancelClick
+ 0001:003858DC       fBALocalDiagnoses.TfrmBALocalDiagnoses.Button4Click
+ 0001:003858E4       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbSectionsClick
+ 0001:003859B0       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListDiagnosisCodes
+ 0001:00385BC8       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnOtherClick
+ 0001:00385EC4       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnPrimaryClick
+ 0001:00385FBC       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnRemoveClick
+ 0001:00386010       fBALocalDiagnoses.TfrmBALocalDiagnoses.btnSelectAllClick
+ 0001:00386128       fBALocalDiagnoses.TfrmBALocalDiagnoses.DiagnosisSelection
+ 0001:00386284       fBALocalDiagnoses.TfrmBALocalDiagnoses.IsDxAlreadySelected
+ 0001:00386378       fBALocalDiagnoses.TfrmBALocalDiagnoses.ProblemListDxFound
+ 0001:00386434       fBALocalDiagnoses.TfrmBALocalDiagnoses.PersonalListDxFound
+ 0001:003864F0       fBALocalDiagnoses.TfrmBALocalDiagnoses.EnsurePrimary
+ 0001:003865E4       fBALocalDiagnoses.TfrmBALocalDiagnoses.cbAddToPLClick
+ 0001:003867F0       fBALocalDiagnoses.TfrmBALocalDiagnoses.ProcessAddToItems
+ 0001:00386804       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddToPersonalDxList
+ 0001:00386A58       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddToProblemList
+ 0001:00386C90       fBALocalDiagnoses.TfrmBALocalDiagnoses.BuildConsultDxList
+ 0001:00386F8C       fBALocalDiagnoses.TfrmBALocalDiagnoses.BuildTempDxList
+ 0001:003872C4       fBALocalDiagnoses.TfrmBALocalDiagnoses.BuildBADxList
+ 0001:00387420       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListConsultDX
+ 0001:003876D0       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListGlobalDx
+ 0001:0038795C       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbDiagnosisClick
+ 0001:00387C6C       fBALocalDiagnoses.TfrmBALocalDiagnoses.DeselectGridItems
+ 0001:00387CD8       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormActivate
+ 0001:00387CE0       fBALocalDiagnoses.TfrmBALocalDiagnoses.FormShow
+ 0001:00387D5C       fBALocalDiagnoses.TfrmBALocalDiagnoses.ListSelectedOrders
+ 0001:00387E68       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddDiagnosistoPersonalDiagnosesList1Click
+ 0001:00387FF8       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddDiagnosistoPersonalDiagnosesList2Click
+ 0001:00388150       fBALocalDiagnoses.TfrmBALocalDiagnoses.cbAddToPDListClick
+ 0001:00388390       fBALocalDiagnoses.TfrmBALocalDiagnoses.AddToWhatList
+ 0001:0038840C       fBALocalDiagnoses.TfrmBALocalDiagnoses.InactiveICDNotification
+ 0001:003885B8       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbSectionsDrawItem
+ 0001:003887D4       fBALocalDiagnoses.TfrmBALocalDiagnoses.LoadTempDXLists
+ 0001:00388BDC       fBALocalDiagnoses.TfrmBALocalDiagnoses.lvDxGridKeyDown
+ 0001:00388BF8       fBALocalDiagnoses.TfrmBALocalDiagnoses.SetAddToCBoxStatus
+ 0001:00388F8C       fBALocalDiagnoses.TfrmBALocalDiagnoses.lvDxGridKeyUp
+ 0001:00388F9C       fBALocalDiagnoses.TfrmBALocalDiagnoses.lvDxGridClick
+ 0001:00388FCC       fBALocalDiagnoses.TfrmBALocalDiagnoses.lbOrdersMouseMove
+ 0001:00389070       fBALocalDiagnoses.TfrmBALocalDiagnoses.SetAddToCheckBoxStatus
+ 0001:00389258       fBALocalDiagnoses.TfrmBALocalDiagnoses.ProcessMultSelections
+ 0001:003893E4       fBALocalDiagnoses.TfrmBALocalDiagnoses.ClearAndDisableCBoxes
+ 0001:00389434       fBALocalDiagnoses.TfrmBALocalDiagnoses.ReSetCheckBoxStatus
+ 0001:003894AC       fBALocalDiagnoses.TfrmBALocalDiagnoses.DeleteSelectedDx
+ 0001:00389568       fBALocalDiagnoses.TfrmBALocalDiagnoses.IsCtrlDown
+ 0001:00389584       fBALocalDiagnoses.Finalization
+ 0001:003895E8       UBAGlobals..TBAPLPt
+ 0001:00389660       UBAGlobals..TBADxRecord
+ 0001:0038971C       UBAGlobals..TBATreatmentFactorsInRec
+ 0001:003897A4       UBAGlobals..TBAUnsignedBillingRec
+ 0001:00389840       UBAGlobals..TBAConsultOrderRec
+ 0001:003898DC       UBAGlobals..TBAFactorsRec
+ 0001:00389980       UBAGlobals..TBAPLFactorsIN
+ 0001:00389A18       UBAGlobals.RemoveOrderFromDxList
+ 0001:00389AEC       UBAGlobals.CopyTFCIToTargetOrder
+ 0001:00389B90       UBAGlobals.BACopyOrder
+ 0001:00389D04       UBAGlobals.CopyTreatmentFactorsDxsToCopiedOrder
+ 0001:00389E20       UBAGlobals.CopyTreatmentFactorsDxsToRenewedOrder
+ 0001:00389F14       UBAGlobals.PutBADxListForOrder
+ 0001:0038A0A0       UBAGlobals.CopyDxRecord
+ 0001:0038A40C       UBAGlobals.AllSelectedDxBlank
+ 0001:0038A68C       UBAGlobals.DiagnosesMatch
+ 0001:0038A7F4       UBAGlobals.CountSelectedOrders
+ 0001:0038A9E4       UBAGlobals.CompareOrderDx
+ 0001:0038AF8C       UBAGlobals.GetBADxListForOrder
+ 0001:0038B148       UBAGlobals.SimpleAddTempDxList
+ 0001:0038B1A8       UBAGlobals.SetBADxListForOrder
+ 0001:0038B348       UBAGlobals.InitializeConsultOrderRec
+ 0001:0038B3A0       UBAGlobals.InitializeNewDxRec
+ 0001:0038B3F8       UBAGlobals.InitializeUnsignedOrderRec
+ 0001:0038B450       UBAGlobals.TBAPLRec.BuildProblemListDxEntry
+ 0001:0038B948       UBAGlobals.TBAPLPt.Create
+ 0001:0038BBB0       UBAGlobals.TBAPLPt.LoadPatientParams
+ 0001:0038BBF0       UBAGlobals.TBAPLPt.rpcInitPt
+ 0001:0038BC44       UBAGlobals.tempDxNodeExists
+ 0001:0038BD60       UBAGlobals.IsUserNurseProvider
+ 0001:0038BDC0       UBAGlobals.GetPatientTFactors
+ 0001:0038BE24       UBAGlobals.Finalization
+ 0001:0038BF18       rOrders..TOrder
+ 0001:0038C020       rOrders..TParentEvent
+ 0001:0038C100       rOrders..TOrderMenu
+ 0001:0038C174       rOrders..TOrderMenuItem
+ 0001:0038C1EC       rOrders..TOrderRenewFields
+ 0001:0038C2B8       rOrders..TOrderView
+ 0001:0038C32C       rOrders.TOrderView.Assign
+ 0001:0038C414       rOrders.TOrder.Assign
+ 0001:0038C5F8       rOrders.TOrder.Clear
+ 0001:0038C720       rOrders.DetailOrder
+ 0001:0038C788       rOrders.ResultOrder
+ 0001:0038C7F8       rOrders.ResultOrderHistory
+ 0001:0038C870       rOrders.LoadDGroupMap
+ 0001:0038C8CC       rOrders.NameOfStatus
+ 0001:0038CBE8       rOrders.GetOrderStatus
+ 0001:0038CC7C       rOrders.ExpiredOrdersStartDT
+ 0001:0038CCFC       rOrders.DispOrdersForEvent
+ 0001:0038CD9C       rOrders.EventInfo
+ 0001:0038CE14       rOrders.EventInfo1
+ 0001:0038CE8C       rOrders.NameOfDGroup
+ 0001:0038CF20       rOrders.SeqOfDGroup
+ 0001:0038CFB0       rOrders.CheckOrderGroup
+ 0001:0038D040       rOrders.CheckQOGroup
+ 0001:0038D0E0       rOrders.TopNameOfDGroup
+ 0001:0038D174       rOrders.ClearOrders
+ 0001:0038D1C0       rOrders.SetOrderFields
+ 0001:0038D62C       rOrders.LoadOrdersAbbr
+ 0001:0038DC5C       rOrders.LoadOrdersAbbr
+ 0001:0038E160       rOrders.LoadOrderSheetsED
+ 0001:0038E2D0       rOrders.LoadOrderViewDefault
+ 0001:0038E498       rOrders.LoadUnsignedOrders
+ 0001:0038E63C       rOrders.RetrieveOrderFields
+ 0001:0038EB20       rOrders.SaveOrderViewDefault
+ 0001:0038EC90       rOrders.InverseByGroup
+ 0001:0038EE88       rOrders.ForwardByGroup
+ 0001:0038F05C       rOrders.InverseChrono
+ 0001:0038F158       rOrders.ForwardChrono
+ 0001:0038F254       rOrders.SortOrders
+ 0001:0038F2B4       rOrders.DGroupAll
+ 0001:0038F354       rOrders.DGroupIEN
+ 0001:0038F3E4       rOrders.ListDGroupAll
+ 0001:0038F438       rOrders.ListSpecialtiesED
+ 0001:0038FADC       rOrders.ListOrderFiltersAll
+ 0001:0038FB30       rOrders.BuildResponses
+ 0001:003901A0       rOrders.ClearOrderRecall
+ 0001:003901DC       rOrders.CommonLocationForOrders
+ 0001:00390260       rOrders.FormIDForDialog
+ 0001:003902E4       rOrders.DlgIENForName
+ 0001:00390378       rOrders.LoadOrderMenu
+ 0001:00390730       rOrders.LoadOrderSet
+ 0001:0039087C       rOrders.LoadWriteOrders
+ 0001:003908D4       rOrders.LoadWriteOrdersED
+ 0001:00390994       rOrders.OrderDisabledMessage
+ 0001:003909DC       rOrders.SendOrders
+ 0001:00390BB0       rOrders.SendReleaseOrders
+ 0001:00390CAC       rOrders.PrintOrdersOnReview
+ 0001:00390D34       rOrders.PrintServiceCopies
+ 0001:00390DAC       rOrders.ExecutePrintOrders
+ 0001:00390E0C       rOrders.DialogForOrder
+ 0001:00390E8C       rOrders.SetOrderFromResults
+ 0001:00391204       rOrders.LockPatient
+ 0001:003912F4       rOrders.UnlockPatient
+ 0001:0039136C       rOrders.LockOrder
+ 0001:00391470       rOrders.UnlockOrder
+ 0001:003914F4       rOrders.ValidateOrderAction
+ 0001:00391598       rOrders.ValidateOrderActionNature
+ 0001:00391648       rOrders.IsLatestAction
+ 0001:003916BC       rOrders.RenewOrder
+ 0001:00391BE0       rOrders.HoldOrder
+ 0001:00391C3C       rOrders.ReleaseOrderHold
+ 0001:00391C9C       rOrders.ListDCReasons
+ 0001:00391D0C       rOrders.GetREQReason
+ 0001:00391D8C       rOrders.DCOrder
+ 0001:00391F0C       rOrders.AlertOrder
+ 0001:00391F5C       rOrders.FlagOrder
+ 0001:00391FC0       rOrders.LoadFlagReason
+ 0001:00392018       rOrders.UnflagOrder
+ 0001:00392074       rOrders.LoadWardComments
+ 0001:003920CC       rOrders.PutWardComments
+ 0001:00392160       rOrders.CompleteOrder
+ 0001:003921BC       rOrders.VerifyOrder
+ 0001:00392218       rOrders.VerifyOrderChartReview
+ 0001:0039227C       rOrders.GetOrderableIen
+ 0001:00392310       rOrders.StoreDigitalSig
+ 0001:003926F0       rOrders.UpdateOrderDGIfNeeded
+ 0001:00392814       rOrders.CanEditSuchRenewedOrder
+ 0001:003928C8       rOrders.IsPSOSupplyDlg
+ 0001:0039296C       rOrders.SaveChangesOnRenewOrder
+ 0001:00392A38       rOrders.DoesOrderStatusMatch
+ 0001:00392AD0       rOrders.OrderIsReleased
+ 0001:00392B64       rOrders.LoadRenewFields
+ 0001:00392DB0       rOrders.GetChildrenOfComplexOrder
+ 0001:00392F50       rOrders.LESValidationForChangedLabOrder
+ 0001:00392FF4       rOrders.ChangeEvent
+ 0001:00393084       rOrders.DeletePtEvent
+ 0001:00393108       rOrders.IsRenewableComplexOrder
+ 0001:003931A8       rOrders.IsComplexOrder
+ 0001:00393248       rOrders.ValidateComplexOrderAct
+ 0001:003932D8       rOrders.GetDlgData
+ 0001:00393350       rOrders.PtEvtEmpty
+ 0001:003933EC       rOrders.TextForOrder
+ 0001:00393444       rOrders.GetConsultOrderNumber
+ 0001:003934C4       rOrders.GetOrderByIFN
+ 0001:00393884       rOrders.GetPackageByOrderID
+ 0001:003938CC       rOrders.AnyOrdersRequireSignature
+ 0001:00393960       rOrders.OrderRequiresSignature
+ 0001:003939F4       rOrders.OrderRequiresDigitalSignature
+ 0001:00393A88       rOrders.GetDrugSchedule
+ 0001:00393AD0       rOrders.SetExternalText
+ 0001:00393BD8       rOrders.GetPKISite
+ 0001:00393C68       rOrders.GetPKIUse
+ 0001:00393CF8       rOrders.DoesOIPIInSigForQO
+ 0001:00393D7C       rOrders.GetDispGroupForLES
+ 0001:00393DC0       rOrders.GetOrderPtEvtID
+ 0001:00393E3C       rOrders.VerbTelPolicyOrder
+ 0001:00393EE0       rOrders.ForIVandUD
+ 0001:00393F84       rOrders.GetEventIFN
+ 0001:00393FCC       rOrders.GetEventName
+ 0001:00394014       rOrders.GetEventLoc1
+ 0001:0039405C       rOrders.GetEventDiv1
+ 0001:003940A4       rOrders.GetCurrentSpec
+ 0001:003940EC       rOrders.GetDefaultEvt
+ 0001:00394138       rOrders.isExistedEvent
+ 0001:003941E8       rOrders.TypeOfExistedEvent
+ 0001:0039428C       rOrders.isMatchedEvent
+ 0001:00394370       rOrders.isDCedOrder
+ 0001:003943FC       rOrders.isOnholdMedOrder
+ 0001:0039449C       rOrders.GetEventPromptID
+ 0001:00394520       rOrders.GetDefaultTSForEvt
+ 0001:00394568       rOrders.GetPromptIDs
+ 0001:003945B0       rOrders.GetEventDefaultDlg
+ 0001:003945FC       rOrders.CanManualRelease
+ 0001:0039468C       rOrders.TheParentPtEvt
+ 0001:00394708       rOrders.IsCompletedPtEvt
+ 0001:00394798       rOrders.IsPassEvt
+ 0001:00394838       rOrders.IsPassEvt1
+ 0001:003948DC       rOrders.SetPtEvtList
+ 0001:003949E4       rOrders.GetTSListForEvt
+ 0001:00394A6C       rOrders.DeleteEmptyEvt
+ 0001:00394C00       rOrders.CompleteEvt
+ 0001:00394E10       rOrders.FillerIDForDialog
+ 0001:00394E58       rOrders.OrderChecksEnabled
+ 0001:00394EEC       rOrders.OrderChecksOnDisplay
+ 0001:00394FC0       rOrders.OrderChecksOnAccept
+ 0001:003950E8       rOrders.OrderChecksForSession
+ 0001:00395154       rOrders.SaveOrderChecksForSession
+ 0001:003951B4       rOrders.DeleteCheckedOrder
+ 0001:00395248       rOrders.DataForOrderCheck
+ 0001:00395290       rOrders.OrderPrintDeviceInfo
+ 0001:00395754       rOrders.SaveEvtForOrder
+ 0001:0039581C       rOrders.EventExist
+ 0001:003958E0       rOrders.UseNewMedDialogs
+ 0001:00395970       rOrders.SaveCoPayStatus
+ 0001:00395A80       rOrders.IsValidIMOLoc
+ 0001:00395B28       rOrders.IsIMOOrder
+ 0001:00395BC8       rOrders.IsInptQO
+ 0001:00395C5C       rOrders.IsIVQO
+ 0001:00395CF0       rOrders.IsClinicLoc
+ 0001:00395D84       rOrders.IsValidSchedule
+ 0001:00395E28       rOrders.IsValidQOSch
+ 0001:00395EA0       rOrders.TParentEvent.Assign
+ 0001:00395FD8       rOrders.TParentEvent.Create
+ 0001:00396048       rOrders.Finalization
+ 0001:0039608C       fOrders..TfrmOrders
+ 0001:00396E3C       fOrders.TfrmOrders.AllowContextChange
+ 0001:00396ED0       fOrders.TfrmOrders.ClearPtData
+ 0001:00396F30       fOrders.TfrmOrders.DisplayPage
+ 0001:00397318       fOrders.TfrmOrders.mnuChartTabClick
+ 0001:00397338       fOrders.RemoveFromOrderList
+ 0001:003973C8       fOrders.TfrmOrders.NotifyOrder
+ 0001:00397988       fOrders.TfrmOrders.FormCreate
+ 0001:00397AF8       fOrders.TfrmOrders.FormDestroy
+ 0001:00397BAC       fOrders.TfrmOrders.UMDestroy
+ 0001:00397BD0       fOrders.TfrmOrders.PositionTopOrder
+ 0001:00397D00       fOrders.TfrmOrders.RedrawOrderList
+ 0001:00397E14       fOrders.TfrmOrders.RefreshOrderList
+ 0001:0039818C       fOrders.TfrmOrders.UseDefaultSort
+ 0001:003981FC       fOrders.TfrmOrders.CanChangeOrderView
+ 0001:003982D4       fOrders.TfrmOrders.SetOrderView
+ 0001:003985B0       fOrders.TfrmOrders.mnuViewActiveClick
+ 0001:00398628       fOrders.TfrmOrders.mnuViewCurrentClick
+ 0001:0039869C       fOrders.TfrmOrders.mnuViewExpiringClick
+ 0001:003986F0       fOrders.TfrmOrders.mnuViewExpiredClick
+ 0001:0039874C       fOrders.TfrmOrders.mnuViewUnsignedClick
+ 0001:003987A0       fOrders.TfrmOrders.mnuViewCustomClick
+ 0001:003989E8       fOrders.TfrmOrders.mnuViewDfltShowClick
+ 0001:00398B80       fOrders.TfrmOrders.mnuViewDfltSaveClick
+ 0001:00398E9C       fOrders.TfrmOrders.mnuViewDetailClick
+ 0001:003992C8       fOrders.TfrmOrders.mnuViewResultClick
+ 0001:003994AC       fOrders.TfrmOrders.mnuViewResultsHistoryClick
+ 0001:00399694       fOrders.TfrmOrders.ClearOrderSheets
+ 0001:00399704       fOrders.TfrmOrders.InitOrderSheets
+ 0001:00399A68       fOrders.TfrmOrders.lstSheetsClick
+ 0001:0039A198       fOrders.TfrmOrders.RetrieveVisibleOrders
+ 0001:0039A230       fOrders.TfrmOrders.RightClickMessageHandler
+ 0001:0039A274       fOrders.TfrmOrders.GetPlainText
+ 0001:0039A388       fOrders.TfrmOrders.MeasureColumnHeight
+ 0001:0039A444       fOrders.TfrmOrders.lstOrdersMeasureItem
+ 0001:0039A5B4       fOrders.TfrmOrders.GetStartStopText
+ 0001:0039A78C       fOrders.TfrmOrders.GetOrderText
+ 0001:0039AAA8       fOrders.TfrmOrders.lstOrdersDrawItem
+ 0001:0039AE8C       fOrders.TfrmOrders.hdrOrdersSectionResize
+ 0001:0039AEF8       fOrders.TfrmOrders.lstOrdersDblClick
+ 0001:0039AF14       fOrders.TfrmOrders.lstWriteClick
+ 0001:0039B700       fOrders.TfrmOrders.SaveSignOrders
+ 0001:0039B8B0       fOrders.TfrmOrders.ValidateSelected
+ 0001:0039C288       fOrders.TfrmOrders.MakeSelectedList
+ 0001:0039C2F4       fOrders.TfrmOrders.NoneSelected
+ 0001:0039C384       fOrders.TfrmOrders.RemoveSelectedFromChanges
+ 0001:0039C3D8       fOrders.TfrmOrders.SynchListToOrders
+ 0001:0039C4AC       fOrders.TfrmOrders.mnuActDCClick
+ 0001:0039C73C       fOrders.TfrmOrders.mnuActRelClick
+ 0001:0039CB00       fOrders.TfrmOrders.mnuActChgEvntClick
+ 0001:0039CDAC       fOrders.TfrmOrders.mnuActHoldClick
+ 0001:0039CF78       fOrders.TfrmOrders.mnuActUnholdClick
+ 0001:0039D114       fOrders.TfrmOrders.mnuActRenewClick
+ 0001:0039D39C       fOrders.TfrmOrders.mnuActAlertClick
+ 0001:0039D4E8       fOrders.TfrmOrders.mnuActFlagClick
+ 0001:0039D728       fOrders.TfrmOrders.mnuActUnflagClick
+ 0001:0039D978       fOrders.TfrmOrders.mnuActCompleteClick
+ 0001:0039DAC4       fOrders.TfrmOrders.mnuActVerifyClick
+ 0001:0039DC10       fOrders.TfrmOrders.mnuActChartRevClick
+ 0001:0039DD5C       fOrders.TfrmOrders.mnuActCommentClick
+ 0001:0039DF90       fOrders.TfrmOrders.mnuActChangeClick
+ 0001:0039E208       fOrders.TfrmOrders.mnuActCopyClick
+ 0001:0039E6CC       fOrders.TfrmOrders.mnuActReleaseClick
+ 0001:0039EA64       fOrders.TfrmOrders.mnuActOnChartClick
+ 0001:0039EE08       fOrders.TfrmOrders.mnuActSignClick
+ 0001:0039F2E4       fOrders.TfrmOrders.mnuOptSaveQuickClick
+ 0001:0039F2FC       fOrders.TfrmOrders.mnuOptEditCommonClick
+ 0001:0039F314       fOrders.TfrmOrders.ProcessNotifications
+ 0001:0039FDC4       fOrders.TfrmOrders.ViewAlertedOrders
+ 0001:003A007C       fOrders.TfrmOrders.pnlRightResize
+ 0001:003A00AC       fOrders.TfrmOrders.RequestPrint
+ 0001:003A03CC       fOrders.TfrmOrders.btnDelayedOrderClick
+ 0001:003A0550       fOrders.TfrmOrders.CompressEventSection
+ 0001:003A05D0       fOrders.TfrmOrders.ExpandEventSection
+ 0001:003A069C       fOrders.TfrmOrders.InitOrderSheetsForEvtDelay
+ 0001:003A06B8       fOrders.TfrmOrders.DfltViewForEvtDelay
+ 0001:003A0788       fOrders.TfrmOrders.EventRealeasedOrder1Click
+ 0001:003A09C4       fOrders.TfrmOrders.ResetOrderPage
+ 0001:003A12D0       fOrders.TfrmOrders.GetEvtIFN
+ 0001:003A1404       fOrders.TfrmOrders.PlaceOrderForDefaultDialog
+ 0001:003A1A6C       fOrders.TfrmOrders.DisplayDefaultDlgList
+ 0001:003A1EF4       fOrders.TfrmOrders.ClickLstSheet
+ 0001:003A1F20       fOrders.TfrmOrders.lblWriteMouseMove
+ 0001:003A1F90       fOrders.TfrmOrders.InitOrderSheets2
+ 0001:003A2184       fOrders.TfrmOrders.SetFontSize
+ 0001:003A21E8       fOrders.TfrmOrders.popOrderPopup
+ 0001:003A21F8       fOrders.TfrmOrders.mnuViewClick
+ 0001:003A2208       fOrders.TfrmOrders.mnuActClick
+ 0001:003A2218       fOrders.TfrmOrders.mnuOptClick
+ 0001:003A2228       fOrders.TfrmOrders.AddToListBox
+ 0001:003A22F8       fOrders.TfrmOrders.ChangesUpdate
+ 0001:003A24AC       fOrders.TfrmOrders.PtEvtCompleted
+ 0001:003A2A28       fOrders.TfrmOrders.GroupChangesUpdate
+ 0001:003A2B38       fOrders.TfrmOrders.UMEventOccur
+ 0001:003A2EB8       fOrders.TfrmOrders.setSectionWidths
+ 0001:003A2EF8       fOrders.TfrmOrders.getTotalSectionsWidth
+ 0001:003A2F58       fOrders.TfrmOrders.FormShow
+ 0001:003A2F68       fOrders.TfrmOrders.hdrOrdersMouseUp
+ 0001:003A304C       fOrders.TfrmOrders.hdrOrdersMouseDown
+ 0001:003A306C       fOrders.TfrmOrders.CheckOrderStatus
+ 0001:003A3220       fOrders.TfrmOrders.ActivateDeactiveRenew
+ 0001:003A32C0       fOrders.TfrmOrders.ViewInfo
+ 0001:003A32E0       fOrders.TfrmOrders.mnuViewInformationClick
+ 0001:003A34B0       fOrders.TfrmOrders.mnuOptimizeFieldsClick
+ 0001:003A3644       fOrders.TfrmOrders.hdrOrdersSectionClick
+ 0001:003A3664       fOrders.TfrmOrders.sptHorzMoved
+ 0001:003A3680       fOrders.Finalization
+ 0001:003A36D8       rMisc..TSizeHolder
+ 0001:003A3730       rMisc.DetailPrimaryCare
+ 0001:003A3778       rMisc.GetToolMenu
+ 0001:003A3900       rMisc.ListSymbolTable
+ 0001:003A3A04       rMisc.MScalar
+ 0001:003A3AA4       rMisc.ServerHasPatch
+ 0001:003A3B30       rMisc.ServerVersion
+ 0001:003A3B80       rMisc.PackageVersion
+ 0001:003A3BC0       rMisc.UserFontSize
+ 0001:003A3C4C       rMisc.LoadSizes
+ 0001:003A3EB4       rMisc.SetShareNode
+ 0001:003A3F6C       rMisc.SetUserBounds
+ 0001:003A419C       rMisc.SetUserBounds2
+ 0001:003A4294       rMisc.SetUserWidths
+ 0001:003A4394       rMisc.SetUserColumns
+ 0001:003A45A4       rMisc.SaveUserBounds
+ 0001:003A4690       rMisc.SaveUserSizes
+ 0001:003A46C4       rMisc.SaveUserFontSize
+ 0001:003A4740       rMisc.SetFormPosition
+ 0001:003A4890       rMisc.StrUserBounds
+ 0001:003A49EC       rMisc.StrUserBounds2
+ 0001:003A4AC8       rMisc.StrUserWidth
+ 0001:003A4B94       rMisc.StrUserColumns
+ 0001:003A4DCC       rMisc.TSizeHolder.AddSizesToStrList
+ 0001:003A4F10       rMisc.TSizeHolder.Create
+ 0001:003A4F64       rMisc.TSizeHolder.Destroy
+ 0001:003A4F9C       rMisc.TSizeHolder.GetSize
+ 0001:003A50EC       rMisc.TSizeHolder.SetSize
+ 0001:003A5178       rMisc.Finalization
+ 0001:003A51E4       fODMedOIFA..TfrmODMedOIFA
+ 0001:003A5460       fODMedOIFA.CheckFormularyOI
+ 0001:003A5690       fODMedOIFA.CheckFormularyDose
+ 0001:003A5808       fODMedOIFA.TfrmODMedOIFA.FormCreate
+ 0001:003A5818       fODMedOIFA.TfrmODMedOIFA.lstFormAltClick
+ 0001:003A583C       fODMedOIFA.TfrmODMedOIFA.cmdYesClick
+ 0001:003A58B8       fODMedOIFA.TfrmODMedOIFA.cmdNoClick
+ 0001:003A58C0       fODMedOIFA.TfrmODMedOIFA.FormShow
+ 0001:003A58C8       fODMedOIFA.TfrmODMedOIFA.FormClose
+ 0001:003A58D0       uOrders.CreateOrderDialog
+ 0001:003A5B54       uOrders.AuthorizedUser
+ 0001:003A5C30       uOrders.AuthorizedToVerify
+ 0001:003A5D0C       uOrders.EncounterPresent
+ 0001:003A5F78       uOrders.EncounterPresentEDO
+ 0001:003A6170       uOrders.LockedForOrdering
+ 0001:003A6230       uOrders.UnlockIfAble
+ 0001:003A627C       uOrders.OrderCanBeLocked
+ 0001:003A6340       uOrders.UnlockOrderIfAble
+ 0001:003A63AC       uOrders.AddSelectedToChanges
+ 0001:003A64BC       uOrders.ResetDialogProperties
+ 0001:003A6704       uOrders.IsInvalidActionWarning
+ 0001:003A689C       uOrders.InitialOrderVariables
+ 0001:003A6AC4       uOrders.RetrieveOrderTextPSI
+ 0001:003A6E14       uOrders.DeselectChild
+ 0001:003A6EF8       uOrders.MakeMessage
+ 0001:003A6F88       uOrders.IsValidActionOnComplexOrder
+ 0001:003A7C94       uOrders.ActivateAction
+ 0001:003A7DDC       uOrders.ActivateOrderDialog
+ 0001:003A9734       uOrders.RetrieveOrderText
+ 0001:003A97D4       uOrders.ActivateOrderHTML
+ 0001:003A99B4       uOrders.ActivateOrderMenu
+ 0001:003A9B44       uOrders.TakeoutDuplicateDlg
+ 0001:003A9C04       uOrders.ActivateOrderSet
+ 0001:003A9DCC       uOrders.ActivateOrderList
+ 0001:003A9F1C       uOrders.ActiveOrdering
+ 0001:003A9F50       uOrders.CloseOrdering
+ 0001:003AA0D0       uOrders.ReadyForNewOrder
+ 0001:003AA3EC       uOrders.ReadyForNewOrder1
+ 0001:003AA594       uOrders.SetConfirmEventDelay
+ 0001:003AA5A0       uOrders.ChangeOrders
+ 0001:003AA92C       uOrders.CopyOrders
+ 0001:003AAC98       uOrders.TransferOrders
+ 0001:003AAFF4       uOrders.DestroyingOrderAction
+ 0001:003AB010       uOrders.DestroyingOrderDialog
+ 0001:003AB02C       uOrders.DestroyingOrderHTML
+ 0001:003AB048       uOrders.DestroyingOrderMenu
+ 0001:003AB064       uOrders.DestroyingOrderSet
+ 0001:003AB090       uOrders.OrderIsLocked
+ 0001:003AB20C       uOrders.PopLastMenu
+ 0001:003AB228       uOrders.QuickOrderSave
+ 0001:003AB420       uOrders.QuickOrderListEdit
+ 0001:003AB524       uOrders.RefNumFor
+ 0001:003AB5AC       uOrders.PrintOrdersOnSignReleaseMult
+ 0001:003AB7E8       uOrders.PrintOrdersOnSignRelease
+ 0001:003ABAB8       uOrders.SetFontSize
+ 0001:003ABAE4       uOrders.NextMove
+ 0001:003ABB04       uOrders.IsIMODialog
+ 0001:003ABBA8       uOrders.AllowActionOnIMO
+ 0001:003ABC54       uOrders.IMOActionValidation
+ 0001:003AC174       uOrders.Finalization
+ 0001:003AC314       rCore.FormatSSN
+ 0001:003AC3F8       rCore.IsSSN
+ 0001:003AC444       rCore.IsFMDate
+ 0001:003AC478       rCore.FMToday
+ 0001:003AC498       rCore.FMNow
+ 0001:003AC51C       rCore.MakeRelativeDateTime
+ 0001:003AC6C0       rCore.StrToFMDateTime
+ 0001:003AC738       rCore.ValidDateTimeStr
+ 0001:003AC7C4       rCore.ListDateRangeClinic
+ 0001:003AC814       rCore.DfltDateRangeClinic
+ 0001:003AC864       rCore.ExternalName
+ 0001:003AC8BC       rCore.PersonHasKey
+ 0001:003AC95C       rCore.GlobalRefForFile
+ 0001:003AC998       rCore.SubsetOfDevices
+ 0001:003AC9EC       rCore.SubSetOfPersons
+ 0001:003ACA44       rCore.GetUserInfo
+ 0001:003ACEB0       rCore.GetUserParam
+ 0001:003ACEEC       rCore.GetUserListParam
+ 0001:003ACF70       rCore.HasSecurityKey
+ 0001:003AD000       rCore.HasMenuOptionAccess
+ 0001:003AD098       rCore.ValidESCode
+ 0001:003AD140       rCore.LoadNotifications
+ 0001:003AD1C8       rCore.UpdateUnsignedOrderAlerts
+ 0001:003AD24C       rCore.UnsignedOrderAlertFollowup
+ 0001:003AD2D4       rCore.UpdateExpiringMedAlerts
+ 0001:003AD354       rCore.UpdateExpiringFlaggedOIAlerts
+ 0001:003AD3E0       rCore.UpdateUnverifiedMedAlerts
+ 0001:003AD464       rCore.UpdateUnverifiedOrderAlerts
+ 0001:003AD4E8       rCore.AutoUnflagAlertedOrders
+ 0001:003AD584       rCore.DeleteAlert
+ 0001:003AD5FC       rCore.DeleteAlertForUser
+ 0001:003AD67C       rCore.ForwardAlert
+ 0001:003AD740       rCore.RenewAlert
+ 0001:003AD7B4       rCore.GetSortMethod
+ 0001:003AD7F4       rCore.SetSortMethod
+ 0001:003AD884       rCore.GetXQAData
+ 0001:003AD8FC       rCore.GetTIUAlertInfo
+ 0001:003AD978       rCore.GetNotificationFollowUpText
+ 0001:003ADA28       rCore.DfltPtList
+ 0001:003ADAD8       rCore.DfltPtListSrc
+ 0001:003ADB5C       rCore.SavePtListDflt
+ 0001:003ADB94       rCore.ListSpecialtyAll
+ 0001:003ADBF8       rCore.ListTeamAll
+ 0001:003ADC54       rCore.ListWardAll
+ 0001:003ADCA0       rCore.ListProviderTop
+ 0001:003ADCA4       rCore.SubSetOfProviders
+ 0001:003ADD1C       rCore.SubSetOfCosigners
+ 0001:003ADDA8       rCore.SubSetOfUsersWithClass
+ 0001:003ADE5C       rCore.SubSetOfActiveAndInactivePersons
+ 0001:003ADEF0       rCore.ListClinicTop
+ 0001:003ADEF4       rCore.SubSetOfClinics
+ 0001:003ADF5C       rCore.GetDfltSort
+ 0001:003AE014       rCore.ResetDfltSort
+ 0001:003AE020       rCore.ListPtByDflt
+ 0001:003AE3E4       rCore.ListPtByProvider
+ 0001:003AE46C       rCore.ListPtByTeam
+ 0001:003AE4EC       rCore.ListPtBySpecialty
+ 0001:003AE574       rCore.ListPtByClinic
+ 0001:003AE7B0       rCore.ListPtByWard
+ 0001:003AE8A0       rCore.ListPtByOther
+ 0001:003AE958       rCore.ListPtByTimson
+ 0001:003AE9F0       rCore.ListPtByLast5
+ 0001:003AEBD4       rCore.ListPtByRPLLast5
+ 0001:003AEDBC       rCore.ListPtByFullSSN
+ 0001:003AF024       rCore.ListPtByRPLFullSSN
+ 0001:003AF290       rCore.ListPtTop
+ 0001:003AF2EC       rCore.SubSetOfPatients
+ 0001:003AF354       rCore.MakeRPLPtList
+ 0001:003AF3CC       rCore.ReadRPLPtList
+ 0001:003AF478       rCore.KillRPLPtList
+ 0001:003AF4EC       rCore.CheckSensitiveRecordAccess
+ 0001:003AF604       rCore.CurrentLocationForPatient
+ 0001:003AF6EC       rCore.DateOfDeath
+ 0001:003AF76C       rCore.GetPtIDInfo
+ 0001:003AFADC       rCore.HasLegacyData
+ 0001:003AFC10       rCore.LogSensitiveRecordAccess
+ 0001:003AFCB0       rCore.MeansTestRequired
+ 0001:003AFDF0       rCore.SelectPatient
+ 0001:003B01D0       rCore.GetDFNFromICN
+ 0001:003B0270       rCore.GetEncounterText
+ 0001:003B0390       rCore.ListApptAll
+ 0001:003B0478       rCore.ListAdmitAll
+ 0001:003B05D0       rCore.SubSetOfLocations
+ 0001:003B0628       rCore.SubSetOfNewLocs
+ 0001:003B0680       rCore.SubSetOfInpatientLocations
+ 0001:003B06D4       rCore.HasRemoteData
+ 0001:003B07AC       rCore.CheckHL7TCPLink
+ 0001:003B0854       rCore.GetVistaWebAddress
+ 0001:003B08E0       rCore.GetDefaultPrinter
+ 0001:003B093C       rCore.Finalization
+ 0001:003B0978       uCore..TUser
+ 0001:003B0A04       uCore..TPatient
+ 0001:003B0AE0       uCore..TEncounter
+ 0001:003B0B64       uCore..TChangeItem
+ 0001:003B0BF0       uCore..TChanges
+ 0001:003B0C48       uCore..TNotifyItem
+ 0001:003B0CBC       uCore..TNotifications
+ 0001:003B0D18       uCore..TRemoteSite
+ 0001:003B0DBC       uCore..TRemoteSiteList
+ 0001:003B0E2C       uCore..TRemoteReport
+ 0001:003B0EA0       uCore..TRemoteReportList
+ 0001:003B0F00       uCore..TNotifyAppsThread
+ 0001:003B0F80       uCore.AllowAccessToSensitivePatient
+ 0001:003B1254       uCore.QueuePending
+ 0001:003B12A8       uCore.ProcessQueue
+ 0001:003B145C       uCore.TNotifyAppsThread.CreateThread
+ 0001:003B14A8       uCore.TNotifyAppsThread.ResumeIfIdle
+ 0001:003B14C4       uCore.TNotifyAppsThread.ResumeAndTerminate
+ 0001:003B14E8       uCore.TNotifyAppsThread.Execute
+ 0001:003B1528       uCore.AppNotificationEnabled
+ 0001:003B163C       uCore.ReleaseAppNotification
+ 0001:003B1714       uCore.NotifyOtherApps
+ 0001:003B1864       uCore.FlushNotifierBuffer
+ 0001:003B18B4       uCore.TerminateOtherAppNotification
+ 0001:003B18BC       uCore.TUser.Create
+ 0001:003B1A98       uCore.TUser.HasKey
+ 0001:003B1AB8       uCore.TPatient.Clear
+ 0001:003B1B84       uCore.TPatient.GetDateDied
+ 0001:003B1BC8       uCore.TPatient.SetDFN
+ 0001:003B1D64       uCore.TEncounter.Create
+ 0001:003B1DCC       uCore.TEncounter.Destroy
+ 0001:003B1E08       uCore.TEncounter.EncounterSwitch
+ 0001:003B1EAC       uCore.TEncounter.Clear
+ 0001:003B1F1C       uCore.TEncounter.GetLocationText
+ 0001:003B1F4C       uCore.TEncounter.GetLocationName
+ 0001:003B1F7C       uCore.TEncounter.GetProviderName
+ 0001:003B1FAC       uCore.TEncounter.GetVisitCategory
+ 0001:003B1FD0       uCore.TEncounter.GetVisitStr
+ 0001:003B2078       uCore.TEncounter.NeedVisit
+ 0001:003B20B4       uCore.TEncounter.SetDateTime
+ 0001:003B20E8       uCore.TEncounter.SetInpatient
+ 0001:003B2114       uCore.TEncounter.SetLocation
+ 0001:003B2150       uCore.TEncounter.SetProvider
+ 0001:003B2188       uCore.TEncounter.SetStandAlone
+ 0001:003B21B4       uCore.TEncounter.SetVisitCategory
+ 0001:003B21E0       uCore.TEncounter.UpdateText
+ 0001:003B238C       uCore.TChangeItem.Create
+ 0001:003B2484       uCore.TChanges.Create
+ 0001:003B2520       uCore.TChanges.Destroy
+ 0001:003B2590       uCore.TChanges.Add
+ 0001:003B281C       uCore.TChanges.CanSign
+ 0001:003B28B8       uCore.TChanges.Clear
+ 0001:003B2A28       uCore.TChanges.Exist
+ 0001:003B2B14       uCore.TChanges.ExistForOrder
+ 0001:003B2BDC       uCore.TChanges.Locate
+ 0001:003B2CD4       uCore.TChanges.Remove
+ 0001:003B2F90       uCore.TChanges.ReplaceSignState
+ 0001:003B3080       uCore.TChanges.ReplaceText
+ 0001:003B3178       uCore.TChanges.RequireReview
+ 0001:003B31F0       uCore.TChanges.AddUnsignedToChanges
+ 0001:003B3464       uCore.TNotifications.Create
+ 0001:003B34C0       uCore.TNotifications.Destroy
+ 0001:003B3504       uCore.TNotifications.Add
+ 0001:003B3564       uCore.TNotifications.Clear
+ 0001:003B35D4       uCore.TNotifications.GetDFN
+ 0001:003B3608       uCore.TNotifications.GetFollowUp
+ 0001:003B3634       uCore.TNotifications.GetAlertData
+ 0001:003B36AC       uCore.TNotifications.GetRecordID
+ 0001:003B36E0       uCore.TNotifications.GetText
+ 0001:003B3760       uCore.TNotifications.Next
+ 0001:003B37AC       uCore.TNotifications.Prior
+ 0001:003B37FC       uCore.TNotifications.Delete
+ 0001:003B3864       uCore.TNotifications.DeleteForCurrentUser
+ 0001:003B38CC       uCore.TRemoteSite.Create
+ 0001:003B3A14       uCore.TRemoteSite.Destroy
+ 0001:003B3A6C       uCore.TRemoteSite.ReportClear
+ 0001:003B3A8C       uCore.TRemoteSite.LabClear
+ 0001:003B3AAC       uCore.TRemoteSite.SetSelected
+ 0001:003B3AC8       uCore.TRemoteReport.Create
+ 0001:003B3B50       uCore.TRemoteReport.Destroy
+ 0001:003B3B84       uCore.TRemoteReportList.Create
+ 0001:003B3BD8       uCore.TRemoteReportList.Destroy
+ 0001:003B3C14       uCore.TRemoteReportList.Add
+ 0001:003B3CB4       uCore.TRemoteSiteList.Create
+ 0001:003B3D08       uCore.TRemoteSiteList.Destroy
+ 0001:003B3D4C       uCore.TRemoteSiteList.Add
+ 0001:003B3DC0       uCore.TRemoteSiteList.Clear
+ 0001:003B3E20       uCore.TRemoteSiteList.ChangePatient
+ 0001:003B3FA4       uCore.TUser.SetCurrentPrinter
+ 0001:003B3FF8       uCore.GotoWebPage
+ 0001:003B401C       uCore.LoadURLMon
+ 0001:003B4090       uCore.ReleaseURLMon
+ 0001:003B40AC       uCore.TChanges.ReplaceODGrpName
+ 0001:003B411C       uCore.TChanges.ChangeOrderGrp
+ 0001:003B4214       uCore.Finalization
+ 0001:003B4278       fPage..TfrmPage
+ 0001:003B4450       fPage.TfrmPage.FormCreate
+ 0001:003B44E0       fPage.TfrmPage.Loaded
+ 0001:003B454C       fPage.TfrmPage.AllowContextChange
+ 0001:003B4564       fPage.TfrmPage.ClearPtData
+ 0001:003B457C       fPage.TfrmPage.DisplayPage
+ 0001:003B45F8       fPage.TfrmPage.NotifyOrder
+ 0001:003B460C       fPage.TfrmPage.RequestPrint
+ 0001:003B4618       fPage.TfrmPage.SetFontSize
+ 0001:003B4674       fPage.TfrmPage.GetInitPage
+ 0001:003B4694       fPage.TfrmPage.GetInitPatient
+ 0001:003B46B4       fPage.TfrmPage.GetPatientViewed
+ 0001:003B46D4       fPage.TfrmPage.FormClose
+ 0001:003B46F0       fPage.TfrmPage.frmPageEnter
+ 0001:003B4758       fPage.TfrmPage.FocusFirstControl
+ 0001:003B47BC       fPage.Finalization
+ 0001:003B47EC       fAResize..TfrmAutoResize
+ 0001:003B49B8       fAResize..TSizeRatio
+ 0001:003B4A10       fAResize.TSizeRatio.Create
+ 0001:003B4A88       fAResize.TfrmAutoResize.Loaded
+ 0001:003B4B58       fAResize.TfrmAutoResize.FormResize
+ 0001:003B4C58       fAResize.TfrmAutoResize.FormDestroy
+ 0001:003B4C94       fAResize.Finalization
+ 0001:003B4CC4       CPRSChart.Finalization
+ 0002:00000000       System.System
+ 0002:00000098       ShareMem.ShareMem
+ 0002:000000D0       Windows.Windows
+ 0002:000000E4       SysUtils.SysUtils
+ 0002:0000016C       VarUtils.VarUtils
+ 0002:0000017C       Variants.Variants
+ 0002:00000228       TypInfo.TypInfo
+ 0002:00000230       Classes.Classes
+ 0002:000002C4       HelpIntfs.HelpIntfs
+ 0002:000002CC       MultiMon.MultiMon
+ 0002:000002DC       IniFiles.IniFiles
+ 0002:000002E4       Registry.Registry
+ 0002:000002EC       Graphics.Graphics
+ 0002:000003E8       UxTheme.UxTheme
+ 0002:00000404       Printers.Printers
+ 0002:0000040C       GraphUtil.GraphUtil
+ 0002:0000048C       ExtCtrls.ExtCtrls
+ 0002:000004D0       Dialogs.Dialogs
+ 0002:00000510       Clipbrd.Clipbrd
+ 0002:00000568       FlatSB.FlatSB
+ 0002:00000578       Themes.Themes
+ 0002:00000580       Menus.Menus
+ 0002:00000608       Controls.Controls
+ 0002:00000698       ActnList.ActnList
+ 0002:000006C4       Forms.Forms
+ 0002:00000710       Buttons.Buttons
+ 0002:00000738       ExtDlgs.ExtDlgs
+ 0002:0000074C       Mapi.Mapi
+ 0002:00000754       ExtActns.ExtActns
+ 0002:0000075C       ComCtrls.ComCtrls
+ 0002:00000764       TeeProcs.TeeProcs
+ 0002:000007A4       TeEngine.TeEngine
+ 0002:000007E4       ComObj.ComObj
+ 0002:0000083C       VAUtils.VAUtils
+ 0002:00000874       CheckLst.CheckLst
+ 0002:00000884       Chart.Chart
+ 0002:000009FC       ORCtrls.ORCtrls
+ 0002:00000A34       ORFn.ORFn
+ 0002:00000AC0       OleServer.OleServer
+ 0002:00000ADC       VA508MSAASupport.VA508MSAASupport
+ 0002:00000AF0       VA508AccessibilityRouter.VA508AccessibilityRouter
+ 0002:00000B14       VA508ScreenReaderDLLLinker.VA508ScreenReaderDLLLinker
+ 0002:00000B1C       WideStrings.WideStrings
+ 0002:00000B2C       FMTBcd.FMTBcd
+ 0002:00000B48       SqlTimSt.SqlTimSt
+ 0002:00000B64       DB.DB
+ 0002:00000BF0       DBPWDlg.DBPWDlg
+ 0002:00000C08       DBLogDlg.DBLogDlg
+ 0002:00000C5C       DBCtrls.DBCtrls
+ 0002:00000CCC       VA508DelphiCompatibility.VA508DelphiCompatibility
+ 0002:00000CDC       VA508AccessibilityManager.VA508AccessibilityManager
+ 0002:00000CF0       uConst.uConst
+ 0002:00000D08       fBase508Form.fBase508Form
+ 0002:00000D58       ORClasses.ORClasses
+ 0002:00000D60       MFunStr.MFunStr
+ 0002:00000D68       Hash.Hash
+ 0002:00000D70       AxCtrls.AxCtrls
+ 0002:00000D94       OleCtrls.OleCtrls
+ 0002:00000DE8       XWBRich20.XWBRich20
+ 0002:00000DF0       Wsockc.Wsockc
+ 0002:00000DF8       SelDiv.SelDiv
+ 0002:00000E00       CCOWRPCBroker.CCOWRPCBroker
+ 0002:00000E08       Rpcconf1.Rpcconf1
+ 0002:00000E10       RpcNet.RpcNet
+ 0002:00000E18       Sgnoncnf.Sgnoncnf
+ 0002:00000E20       Trpcb.Trpcb
+ 0002:00000E28       ORNet.ORNet
+ 0002:00000EAC       fAutoSz.fAutoSz
+ 0002:00000EC0       AppEvnts.AppEvnts
+ 0002:00000EF4       Tabs.Tabs
+ 0002:00000EFC       uInit.uInit
+ 0002:00000F04       rVitals.rVitals
+ 0002:00000F0C       ORDtTm.ORDtTm
+ 0002:00000F24       uVitals.uVitals
+ 0002:00000F2C       Series.Series
+ 0002:00000F48       ArrowCha.ArrowCha
+ 0002:00000FBC       GanttCh.GanttCh
+ 0002:00001030       uFormMonitor.uFormMonitor
+ 0002:00001040       fGraphs.fGraphs
+ 0002:00001054       rTemplates.rTemplates
+ 0002:0000105C       uTemplateFields.uTemplateFields
+ 0002:00001064       rReminders.rReminders
+ 0002:0000106C       rTIU.rTIU
+ 0002:0000109C       fPCEBaseGrid.fPCEBaseGrid
+ 0002:000010B0       ORCtrlsVA508Compatibility.ORCtrlsVA508Compatibility
+ 0002:000010C0       mVisitRelated.mVisitRelated
+ 0002:000010D4       fGAF.fGAF
+ 0002:000010E8       fVisitType.fVisitType
+ 0002:000010FC       fDiagnoses.fDiagnoses
+ 0002:00001110       fProcedure.fProcedure
+ 0002:00001124       fImmunization.fImmunization
+ 0002:00001138       fSkinTest.fSkinTest
+ 0002:0000114C       fPatientEd.fPatientEd
+ 0002:00001160       fHealthFactor.fHealthFactor
+ 0002:00001174       fPCEBaseMain.fPCEBaseMain
+ 0002:00001188       fExam.fExam
+ 0002:0000119C       uConsults.uConsults
+ 0002:000011A4       fClinicWardMeds.fClinicWardMeds
+ 0002:000011AC       rDCSumm.rDCSumm
+ 0002:000011B4       mImgText.mImgText
+ 0002:000011C8       uSpell.uSpell
+ 0002:000011D0       fConsMedRslt.fConsMedRslt
+ 0002:000011D8       fRemCoverSheet.fRemCoverSheet
+ 0002:000011E0       rODMeds.rODMeds
+ 0002:000011E8       DSIntf.DSIntf
+ 0002:000011FC       Provider.Provider
+ 0002:00001204       DBClient.DBClient
+ 0002:0000120C       uODBase.uODBase
+ 0002:00001278       mCoPayDesc.mCoPayDesc
+ 0002:0000128C       fOrdersPrint.fOrdersPrint
+ 0002:00001294       fOrdersSign.fOrdersSign
+ 0002:0000129C       rSurgery.rSurgery
+ 0002:000012A4       fPCEEdit.fPCEEdit
+ 0002:000012AC       XMLUtils.XMLUtils
+ 0002:000012B4       fSurgery.fSurgery
+ 0002:00001314       uSignItems.uSignItems
+ 0002:00001380       uProbs.uProbs
+ 0002:00001388       rODAllergy.rODAllergy
+ 0002:00001390       rCover.rCover
+ 0002:00001398       fCover.fCover
+ 0002:000013D4       fProbEdt.fProbEdt
+ 0002:000013E8       fProbs.fProbs
+ 0002:000013FC       fODConsult.fODConsult
+ 0002:00001404       mEvntDelay.mEvntDelay
+ 0002:00001418       fOrdersAlert.fOrdersAlert
+ 0002:00001420       fMeds.fMeds
+ 0002:0000145C       fPrintLocation.fPrintLocation
+ 0002:00001464       fReview.fReview
+ 0002:0000146C       fEncnt.fEncnt
+ 0002:00001474       fNotes.fNotes
+ 0002:000014D4       fEditConsult.fEditConsult
+ 0002:000014DC       fEditProc.fEditProc
+ 0002:000014E4       fODProc.fODProc
+ 0002:000014EC       fConsultAct.fConsultAct
+ 0002:00001530       fConsultsView.fConsultsView
+ 0002:00001574       fConsultBS.fConsultBS
+ 0002:000015B8       fConsults.fConsults
+ 0002:00001618       fDCSumm.fDCSumm
+ 0002:00001678       fODMedNVA.fODMedNVA
+ 0002:00001680       IdSysVCL.IdSysVCL
+ 0002:00001688       IdGlobal.IdGlobal
+ 0002:000016F0       fODMeds.fODMeds
+ 0002:000016F8       fODLab.fODLab
+ 0002:00001700       fODBBank.fODBBank
+ 0002:00001708       fODRad.fODRad
+ 0002:00001710       fODDiet.fODDiet
+ 0002:00001718       uEventHooks.uEventHooks
+ 0002:00001720       fODBase.fODBase
+ 0002:00001728       rODBase.rODBase
+ 0002:0000176C       rConsults.rConsults
+ 0002:000017BC       fARTAllgy.fARTAllgy
+ 0002:000017C4       fEncVitals.fEncVitals
+ 0002:000017D8       rPCE.rPCE
+ 0002:000018D4       fReminderDialog.fReminderDialog
+ 0002:000018DC       uReminders.uReminders
+ 0002:00001914       uDlgComponents.uDlgComponents
+ 0002:00001928       mTemplateFieldButton.mTemplateFieldButton
+ 0002:0000193C       uVA508CPRSCompatibility.uVA508CPRSCompatibility
+ 0002:0000194C       fDrawers.fDrawers
+ 0002:00001960       dShared.dShared
+ 0002:00001974       uTemplates.uTemplates
+ 0002:0000197C       fReportsAdhocComponent1.fReportsAdhocComponent1
+ 0002:00001984       fReports.fReports
+ 0002:000019C0       rReports.rReports
+ 0002:000019C8       fDeviceSelect.fDeviceSelect
+ 0002:000019D0       uPCE.uPCE
+ 0002:000019D8       fPCEBase.fPCEBase
+ 0002:000019EC       fPtSelDemog.fPtSelDemog
+ 0002:00001A00       fPtSelOptns.fPtSelOptns
+ 0002:00001A3C       fAlertForward.fAlertForward
+ 0002:00001A44       fPtSel.fPtSel
+ 0002:00001A4C       fLabs.fLabs
+ 0002:00001A88       fBAOptionsDiagnoses.fBAOptionsDiagnoses
+ 0002:00001B8C       fFrame.fFrame
+ 0002:00001BC8       fBALocalDiagnoses.fBALocalDiagnoses
+ 0002:00001C84       UBAGlobals.UBAGlobals
+ 0002:00001EB4       rOrders.rOrders
+ 0002:00001ECC       fOrders.fOrders
+ 0002:00001EE0       rMisc.rMisc
+ 0002:00001EE8       uOrders.uOrders
+ 0002:00001F88       rCore.rCore
+ 0002:00001F90       uCore.uCore
+ 0002:00001FD0       fPage.fPage
+ 0002:00001FE4       fAResize.fAResize
+ 0002:00001FF8       CPRSChart.CPRSChart
+ 0003:00000000       System.ExitCode
+ 0003:00000004       System.ErrorAddr
+ 0003:00000008       System.RandSeed
+ 0003:0000000C       System.FileMode
+ 0003:00000010       System.VarClearProc
+ 0003:00000014       System.VarAddRefProc
+ 0003:00000018       System.VarCopyProc
+ 0003:0000001C       System.VarToLStrProc
+ 0003:00000020       System.VarToWStrProc
+ 0003:00000024       System.Default8087CW
+ 0003:00000028       System.DebugHook
+ 0003:0000002C       System.JITEnable
+ 0003:00000030       System.NoErrMsg
+ 0003:00000034       System.SystemThreadFuncProc
+ 0003:00000038       System.SystemThreadEndProc
+ 0003:0000003C       System.LibModuleList
+ 0003:00000040       System.ModuleUnloadList
+ 0003:00000044       System.Copyright
+ 0003:00000048       System.SmallBlockTypes
+ 0003:00000728       System.MemoryManager
+ 0003:00000740       System.reMap
+ 0003:0000075C       System.Ten
+ 0003:00000764       System.errCaption
+ 0003:0000076C       System.runErrMsg
+ 0003:0000078C       System.dig
+ 0003:0000079C       SysInit.TlsIndex
+ 0003:000007A0       SysInit.PtrToNil
+ 0003:000007A4       SysInit.Module
+ 0003:000007BC       ActiveX.GUID_NULL
+ 0003:000007CC       SysUtils.EmptyStr
+ 0003:000007D0       SysUtils.EmptyWideStr
+ 0003:000007D4       SysUtils.Win32Platform
+ 0003:000007D8       SysUtils.Win32MajorVersion
+ 0003:000007DC       SysUtils.Win32MinorVersion
+ 0003:000007E0       SysUtils.Win32BuildNumber
+ 0003:000007E4       SysUtils.Win32CSDVersion
+ 0003:000007E8       SysUtils.TwoDigitYearCenturyWindow
+ 0003:000007EC       SysUtils.MonthDays
+ 0003:0000081C       SysUtils.LeadBytes
+ 0003:0000083C       SysUtils.HexDisplayPrefix
+ 0003:00000840       SysUtils.GetDiskFreeSpaceEx
+ 0003:00000844       SysUtils.ExitProcList
+ 0003:00000848       SysUtils.cSimpleBoolStrs
+ 0003:00000850       SysUtils.AccessMode
+ 0003:0000085C       SysUtils.ShareMode
+ 0003:00000870       SysUtils.FormatErrorStrs
+ 0003:00000878       SysUtils.FCon1E18
+ 0003:00000884       SysUtils.DCon10
+ 0003:00000888       SysUtils.CWNear
+ 0003:0000088C       SysUtils.FMSecsPerDay
+ 0003:00000890       SysUtils.IMSecsPerDay
+ 0003:00000894       SysUtils.Format
+ 0003:00000898       SysUtils.DefShortMonthNames
+ 0003:000008C8       SysUtils.DefLongMonthNames
+ 0003:000008F8       SysUtils.DefShortDayNames
+ 0003:00000914       SysUtils.DefLongDayNames
+ 0003:00000930       SysUtils.ErrorMap
+ 0003:00000968       SysUtils.ExceptMap
+ 0003:00000A18       SysUtils.TerminateProcList
+ 0003:00000A1C       VarUtils.CVarTypeToElementInfo
+ 0003:00000B24       VarUtils.CResult
+ 0003:00000B2C       Variants.NullEqualityRule
+ 0003:00000B30       Variants.NullMagnitudeRule
+ 0003:00000B34       Variants.NullStrictConvert
+ 0003:00000B38       Variants.NullAsStringValue
+ 0003:00000B3C       Variants.PackVarCreation
+ 0003:00000B40       Variants.BooleanToStringRule
+ 0003:00000B44       Variants.OleVariantInt64AsDouble
+ 0003:00000B48       Variants.BaseTypeMap
+ 0003:00000B60       Variants.CInvalidCustomVariantType
+ 0003:00000B64       Variants.CRangeToType
+ 0003:00000B78       Variants.OpTypeMap
+ 0003:00000BF4       Variants.CBooleanToRelationship
+ 0003:00000C00       Variants.CmpTypeMap
+ 0003:00000C7C       Variants.CText
+ 0003:00000CD0       Variants.LNextVarType
+ 0003:00000CD4       Variants.CRelationshipToBoolean
+ 0003:00000CE8       TypInfo.BooleanIdents
+ 0003:00000CF0       TypInfo.DotSep
+ 0003:00000CF4       Classes.AddDataModule
+ 0003:00000CFC       Classes.RemoveDataModule
+ 0003:00000D04       Classes.ApplicationHandleException
+ 0003:00000D0C       Classes.ApplicationShowException
+ 0003:00000D14       Classes.WakeMainThread
+ 0003:00000D1C       Classes.FilerSignature
+ 0003:00000D20       Classes.NilMethod
+ 0003:00000D28       Classes.SyncList
+ 0003:00000D2C       Classes.BlockCode
+ 0003:00000D30       Classes.UtilWindowClass
+ 0003:00000D58       IniFiles.Values
+ 0003:00000D60       Registry.Values
+ 0003:00000D68       Graphics.DefFontData
+ 0003:00000D98       Graphics.DDBsOnly
+ 0003:00000D9C       Graphics.Colors
+ 0003:00000F3C       Graphics.FontCharsets
+ 0003:00000FCC       Graphics.DefPenData
+ 0003:00000FDC       Graphics.LogPenStyles
+ 0003:00000FE8       Graphics.PenStyles
+ 0003:00000FFC       Graphics.DefBrushData
+ 0003:0000100C       Graphics.PenModes
+ 0003:0000102C       Graphics.ClipboardFormats
+ 0003:00001030       Graphics.FileFormats
+ 0003:00001034       Graphics.BitmapCanvasList
+ 0003:00001038       Graphics.DIBPalSizes
+ 0003:0000103C       Graphics.PalSize
+ 0003:00001040       Graphics.Pal16
+ 0003:00001080       ShlObj.CLSID_AutoComplete
+ 0003:00001090       StdCtrls.BorderStyles
+ 0003:00001098       StdCtrls.Ellipsis
+ 0003:000010A8       StdCtrls.Alignments
+ 0003:000010B0       StdCtrls.WordWraps
+ 0003:000010B4       StdCtrls.WordWraps
+ 0003:000010B8       StdCtrls.Passwords
+ 0003:000010C0       StdCtrls.ReadOnlys
+ 0003:000010C8       StdCtrls.CharCases
+ 0003:000010D4       StdCtrls.HideSelections
+ 0003:000010DC       StdCtrls.OEMConverts
+ 0003:000010E4       StdCtrls.Empty
+ 0003:000010E8       StdCtrls.Alignments
+ 0003:00001100       StdCtrls.ScrollBar
+ 0003:00001110       StdCtrls.WordWraps
+ 0003:00001118       StdCtrls.ComboBoxStyles
+ 0003:0000112C       StdCtrls.CharCases
+ 0003:00001138       StdCtrls.Sorts
+ 0003:00001140       StdCtrls.InnerStyles
+ 0003:00001150       StdCtrls.OuterStyles
+ 0003:00001160       StdCtrls.EdgeStyles
+ 0003:00001170       StdCtrls.Ctl3DStyles
+ 0003:00001178       StdCtrls.ButtonStyles
+ 0003:00001180       StdCtrls.Alignments
+ 0003:00001190       StdCtrls.Alignments
+ 0003:000011A0       StdCtrls.Styles
+ 0003:000011B4       StdCtrls.Sorteds
+ 0003:000011BC       StdCtrls.MultiSelects
+ 0003:000011C4       StdCtrls.ExtendSelects
+ 0003:000011CC       StdCtrls.IntegralHeights
+ 0003:000011D4       StdCtrls.MultiColumns
+ 0003:000011DC       StdCtrls.TabStops
+ 0003:000011E4       StdCtrls.CSHREDRAW
+ 0003:000011EC       StdCtrls.Data
+ 0003:000011F4       StdCtrls.Kinds
+ 0003:000011FC       StdCtrls.Alignments
+ 0003:00001214       StdCtrls.Borders
+ 0003:00001220       Printers.FPrinter
+ 0003:00001224       GraphUtil.WebNamedColors
+ 0003:00001674       GraphUtil.ArrowPts
+ 0003:000016D4       GraphUtil.cGradientDirections
+ 0003:000016DC       ExtCtrls.BorderStyles
+ 0003:000016E4       ExtCtrls.Alignments
+ 0003:000016F0       ExtCtrls.VerticalAlignments
+ 0003:000016FC       Dialogs.ForceCurrentDirectory
+ 0003:00001700       Dialogs.CreationControl
+ 0003:00001704       Dialogs.WndProcPtrAtom
+ 0003:00001708       Dialogs.OpenOptions
+ 0003:00001760       Dialogs.OpenOptionsEx
+ 0003:00001764       Dialogs.DialogOptions
+ 0003:00001778       Dialogs.FontOptions
+ 0003:000017B8       Dialogs.Devices
+ 0003:000017C4       Dialogs.PrintRanges
+ 0003:000017D0       Dialogs.FindOptions
+ 0003:00001804       Dialogs.Captions
+ 0003:00001818       Dialogs.IconIDs
+ 0003:0000182C       Dialogs.ButtonNames
+ 0003:00001858       Dialogs.ButtonCaptions
+ 0003:00001884       Dialogs.ModalResults
+ 0003:000018B0       Themes.ThemeServicesClass
+ 0003:000018B4       Themes.Copyright
+ 0003:000018B8       Themes.ThemeDataNames
+ 0003:00001918       Menus.ValidMenuHotkeys
+ 0003:0000191C       Menus.cMenuAutoFlagToItem
+ 0003:00001920       Menus.cItemAutoFlagToMenu
+ 0003:00001924       Menus.cBooleanToItemAutoFlag
+ 0003:00001928       Menus.cItemAutoFlagToBoolean
+ 0003:0000192C       Menus.MenuKeyCaps
+ 0003:00001974       Menus.Checks
+ 0003:0000197C       Menus.Enables
+ 0003:00001984       Menus.Breaks
+ 0003:00001990       Menus.Separators
+ 0003:00001998       Menus.IBreaks
+ 0003:000019A4       Menus.IChecks
+ 0003:000019AC       Menus.IDefaults
+ 0003:000019B4       Menus.IEnables
+ 0003:000019BC       Menus.IRadios
+ 0003:000019C4       Menus.ISeparators
+ 0003:000019CC       Menus.IRTL
+ 0003:000019D4       Menus.IOwnerDraw
+ 0003:000019DC       Menus.Alignments
+ 0003:000019E4       Menus.EdgeStyle
+ 0003:000019EC       Menus.Alignments
+ 0003:000019F4       Menus.CurrentKeyboardLayout
+ 0003:000019F8       Menus.IsAltGRKeyLayout
+ 0003:000019FC       Menus.Flags
+ 0003:00001A08       Menus.Buttons
+ 0003:00001A0C       Controls.AnimateWindowProc
+ 0003:00001A10       Controls.CreationControl
+ 0003:00001A14       Controls.DefaultDockTreeClass
+ 0003:00001A18       Controls.AnchorAlign
+ 0003:00001A20       Controls.Cursors
+ 0003:00001AD0       Controls.CaptureControl
+ 0003:00001AD4       Controls.ShowFlags
+ 0003:00001AD8       Controls.WindowPos
+ 0003:00001ADC       Controls.InnerStyles
+ 0003:00001AEC       Controls.OuterStyles
+ 0003:00001AFC       Controls.EdgeStyles
+ 0003:00001B0C       Controls.Ctl3DStyles
+ 0003:00001B14       Controls.AnimationStyle
+ 0003:00001B20       Controls.OrientArray
+ 0003:00001B28       Controls.MakeLast
+ 0003:00001B30       Controls.TreeStreamEndFlag
+ 0003:00001B34       Controls.SizeCursors
+ 0003:00001B3C       Controls.IMM32DLL
+ 0003:00001B40       Controls.ModeMap
+ 0003:00001B48       ImgList.DrawingStyles
+ 0003:00001B58       ImgList.Images
+ 0003:00001B60       ImgList.Mask
+ 0003:00001B68       Forms.HintWindowClass
+ 0003:00001B6C       Forms.SetLayeredWindowAttributes
+ 0003:00001B70       Forms.FocusMessages
+ 0003:00001B74       Forms.FocusCount
+ 0003:00001B78       Forms.TaskActiveWindow
+ 0003:00001B7C       Forms.TaskFirstWindow
+ 0003:00001B80       Forms.TaskFirstTopMost
+ 0003:00001B84       Forms.DisablingWindows
+ 0003:00001B88       Forms.TaskWindowList
+ 0003:00001B8C       Forms.SysConsts
+ 0003:00001B94       Forms.SysConsts
+ 0003:00001B9C       Forms.Props
+ 0003:00001BC4       Forms.Styles
+ 0003:00001BD0       Forms.BorderStyles
+ 0003:00001BD8       Forms.HWND_STYLE
+ 0003:00001BE0       Forms.ShowCommands
+ 0003:00001BEC       Forms.ShowCommands
+ 0003:00001BF8       Forms.ShowCommands
+ 0003:00001C04       Forms.cUseAlpha
+ 0003:00001C0C       Forms.cUseColorKey
+ 0003:00001C14       Forms.CursorMap
+ 0003:00001C68       Forms.MonitorDefaultFlags
+ 0003:00001C74       Forms.WindowClass
+ 0003:00001C9C       Forms.AppVisible
+ 0003:00001CA0       Forms.ShowFlags
+ 0003:00001CA4       Buttons.BitBtnResNames
+ 0003:00001CD0       Buttons.BitBtnCaptions
+ 0003:00001CFC       Buttons.BitBtnModalResults
+ 0003:00001D28       Buttons.GlyphCache
+ 0003:00001D2C       Buttons.ButtonCount
+ 0003:00001D30       Buttons.DownStyles
+ 0003:00001D38       Buttons.FillStyles
+ 0003:00001D40       Buttons.NewState
+ 0003:00001D44       ToolWin.InnerStyles
+ 0003:00001D50       ToolWin.OuterStyles
+ 0003:00001D5C       ToolWin.Ctl3DStyles
+ 0003:00001D64       ExtDlgs.DefaultEncodingNames
+ 0003:00001D7C       Mapi.MAPIDLL
+ 0003:00001D80       Mapi.MAPIModule
+ 0003:00001D84       ComCtrls.RTFConversionFormat
+ 0003:00001D90       ComCtrls.TextConversionFormat
+ 0003:00001D9C       ComCtrls.ConversionFormatList
+ 0003:00001DA0       ComCtrls.RTL
+ 0003:00001DA8       ComCtrls.RTL
+ 0003:00001DB0       ComCtrls.RTL
+ 0003:00001DB8       ComCtrls.AlignStyles
+ 0003:00001DD8       ComCtrls.TabStyles
+ 0003:00001DE4       ComCtrls.RRStyles
+ 0003:00001DEC       ComCtrls.GripStyles
+ 0003:00001DF4       ComCtrls.RTLReading
+ 0003:00001DFC       ComCtrls.HeaderStyles
+ 0003:00001E04       ComCtrls.cAddMode
+ 0003:00001E0C       ComCtrls.TreeNodeStreamVersion
+ 0003:00001E10       ComCtrls.BorderStyles
+ 0003:00001E18       ComCtrls.LineStyles
+ 0003:00001E20       ComCtrls.RootStyles
+ 0003:00001E28       ComCtrls.ButtonStyles
+ 0003:00001E30       ComCtrls.EditStyles
+ 0003:00001E38       ComCtrls.HideSelections
+ 0003:00001E40       ComCtrls.DragStyles
+ 0003:00001E48       ComCtrls.RTLStyles
+ 0003:00001E50       ComCtrls.ToolTipStyles
+ 0003:00001E58       ComCtrls.AutoExpandStyles
+ 0003:00001E60       ComCtrls.HotTrackStyles
+ 0003:00001E68       ComCtrls.RowSelectStyles
+ 0003:00001E70       ComCtrls.Empty
+ 0003:00001E74       ComCtrls.HideScrollBars
+ 0003:00001E7C       ComCtrls.HideSelections
+ 0003:00001E84       ComCtrls.Painting
+ 0003:00001E88       ComCtrls.Codes
+ 0003:00001E98       ComCtrls.ListItemStreamVersion
+ 0003:00001E9C       ComCtrls.BorderStyles
+ 0003:00001EA4       ComCtrls.EditStyles
+ 0003:00001EAC       ComCtrls.MultiSelections
+ 0003:00001EB4       ComCtrls.HideSelections
+ 0003:00001EBC       ComCtrls.Arrangements
+ 0003:00001EC4       ComCtrls.AutoArrange
+ 0003:00001ECC       ComCtrls.WrapText
+ 0003:00001ED4       ComCtrls.ViewStyles
+ 0003:00001EE4       ComCtrls.ShowColumns
+ 0003:00001EEC       ComCtrls.ColumnClicks
+ 0003:00001EF4       ComCtrls.ViewStyles
+ 0003:00001F04       ComCtrls.Directions
+ 0003:00001F18       ComCtrls.Codes
+ 0003:00001F30       ComCtrls.IAlignment
+ 0003:00001F48       ComCtrls.CenterStyles
+ 0003:00001F50       ComCtrls.TimerStyles
+ 0003:00001F58       ComCtrls.TransparentStyles
+ 0003:00001F60       ComCtrls.CommonAVIId
+ 0003:00001F84       ComCtrls.ButtonStates
+ 0003:00001F94       ComCtrls.ButtonStyles
+ 0003:00001FA0       ComCtrls.DownMessage
+ 0003:00001FA8       ComCtrls.ListStyles
+ 0003:00001FB0       ComCtrls.FlatStyles
+ 0003:00001FB8       ComCtrls.FlatOnXp
+ 0003:00001FC0       ComCtrls.TransparentStyles
+ 0003:00001FC8       ComCtrls.CustomizeStyles
+ 0003:00001FD0       ComCtrls.InitDone
+ 0003:00001FD4       ComCtrls.ColorIndex
+ 0003:00001FEC       ComCtrls.ShowTodayFlags
+ 0003:00001FF4       ComCtrls.ShowTodayCircleFlags
+ 0003:00001FFC       ComCtrls.WeekNumFlags
+ 0003:00002004       ComCtrls.MultiSelFlags
+ 0003:0000200C       ComCtrls.ComboBoxExStyles
+ 0003:00002018       ComCtrls.ComboExStyles
+ 0003:0000202C       TeCanvas.TeeDefaultConePercent
+ 0003:00002030       TeCanvas.DarkerColorQuantity
+ 0003:00002034       TeCanvas.DarkColorQuantity
+ 0003:00002038       TeCanvas.TeeGradientPrecision
+ 0003:0000203C       TeeProcs.ColorPalette
+ 0003:0000207C       TeeProcs.TeeLineSeparator
+ 0003:00002080       TeeProcs.TeeClipWhenPrinting
+ 0003:00002084       TeeProcs.TeeClipWhenMetafiling
+ 0003:00002088       TeeProcs.TeeEraseBack
+ 0003:0000208C       TeeProcs.PrintTeePanel
+ 0003:00002090       TeeProcs.DateTimeStep
+ 0003:00002160       TeeProcs.BrushColors
+ 0003:00002168       TeeProcs.Colors
+ 0003:00002170       TeeProcs.Extensions
+ 0003:00002184       TeEngine.TeeDrawAxisBeforeSeries
+ 0003:00002188       TeEngine.TeeCheckMarkArrowColor
+ 0003:0000218C       TeEngine.TeeAxisClickGap
+ 0003:00002190       TeEngine.TeeDefaultCapacity
+ 0003:00002194       TeEngine.Aligns
+ 0003:000021A4       TeEngine.ArrowColors
+ 0003:000021AC       TeEngine.BrushStyles
+ 0003:000021B0       ComObj.CoCreateInstanceEx
+ 0003:000021B4       ComObj.CoInitializeEx
+ 0003:000021B8       ComObj.CoAddRefServerProcess
+ 0003:000021BC       ComObj.CoReleaseServerProcess
+ 0003:000021C0       ComObj.CoResumeClassObjects
+ 0003:000021C4       ComObj.CoSuspendClassObjects
+ 0003:000021C8       ComObj.CoInitFlags
+ 0003:000021CC       ComObj.ThreadStrs
+ 0003:000021E0       VAUtils.HexChars
+ 0003:000025E0       VAUtils.BinChars
+ 0003:00002620       VAUtils.CheckScreenReaderSupport
+ 0003:00002624       VAUtils.uScreenReaderSupportEnabled
+ 0003:00002628       VAUtils.uEventMessageHandlers
+ 0003:0000262C       VAUtils.uHandlePointers
+ 0003:00002630       VAUtils.uWinProcMonitor
+ 0003:00002634       VAUtils.uMessageHandlerSystemRunning
+ 0003:00002638       Chart.TeeTitleFootDistance
+ 0003:0000263C       Chart.PatternPalette
+ 0003:00002644       MaskUtils.DefaultBlank
+ 0003:00002648       MaskUtils.MaskFieldSeparator
+ 0003:0000264C       MaskUtils.MaskNoSave
+ 0003:00002650       Mask.ArrowKey
+ 0003:00002654       Grids.SPAIndexMask
+ 0003:00002658       Grids.SPASecShift
+ 0003:0000265C       ORCtrls.ALPHA_DISTRIBUTION
+ 0003:000027F0       ORCtrls.CheckBoxImageResNames
+ 0003:00002830       ORCtrls.BlackCheckBoxImageResNames
+ 0003:00002870       ORCtrls.uDropPanelOpenCount
+ 0003:00002874       ORCtrls.ComboBoxImages
+ 0003:0000287C       ORCtrls.BlackComboBoxImages
+ 0003:00002884       ORCtrls.ButtonAlignment
+ 0003:00002890       ORCtrls.ButtonWordWrap
+ 0003:00002898       ORCtrls.ButtonLayout
+ 0003:000028A4       ORFn.BOOLCHAR
+ 0003:000028A8       ORFn.ScrollBarHeight
+ 0003:000028AC       ORFn.MONTH_NAMES_SHORT
+ 0003:000028DC       ORFn.MONTH_NAMES_LONG
+ 0003:00002954       ORFn.SearchChars
+ 0003:00002974       ORFn.ReplaceChars
+ 0003:00002994       ORFn.CRC32_TABLE
+ 0003:00002D94       ORFn.uNormalColorScheme
+ 0003:00002D98       ORFn.uBlackColorScheme
+ 0003:00002D9C       ORFn.uWhiteColorScheme
+ 0003:00002DA0       ORFn.uMaroonColorWhenBlack
+ 0003:00002DA4       ORFn.uCheckColorScheme
+ 0003:00002DA8       ORFn.PURE_BLACK
+ 0003:00002DAC       ORFn.uBorderlessWindowColorWhenBlack
+ 0003:00002DB0       ORFn.IdleCaller
+ 0003:00002DB4       MSAAConstants.PROPID_ACC_NAME
+ 0003:00002DC4       oleacc2.CLASS_CAccPropServices
+ 0003:00002DD4       VA508MSAASupport.VA508ImageListLabelerClasses
+ 0003:00002DDC       VA508MSAASupport.uShutDown
+ 0003:00002DE0       VA508MSAASupport.Events
+ 0003:00002DE4       VA508MSAASupport.AccPropServices
+ 0003:00002DE8       VA508MSAASupport.AccServicesCount
+ 0003:00002DEC       VA508AccessibilityRouter.ActiveScreenReader
+ 0003:00002DF0       VA508AccessibilityRouter.MasterScreenReader
+ 0003:00002DF4       VA508AccessibilityRouter.uNonDialogClassNames
+ 0003:00002DF8       VA508AccessibilityRouter.SaveInitProc
+ 0003:00002DFC       VA508AccessibilityRouter.Need2RegisterData
+ 0003:00002E00       VA508AccessibilityRouter.OK2RegisterData
+ 0003:00002E04       VA508AccessibilityRouter.CheckScreenReaderSystemActive
+ 0003:00002E08       VA508AccessibilityRouter.uScreenReaderSystemActive
+ 0003:00002E0C       VA508AccessibilityRouter.uPostScreenReaderActivationTimer
+ 0003:00002E10       VA508ScreenReaderDLLLinker.SRSpeakText
+ 0003:00002E14       VA508ScreenReaderDLLLinker.SRIsRunning
+ 0003:00002E18       VA508ScreenReaderDLLLinker.SRRegisterCustomBehavior
+ 0003:00002E1C       VA508ScreenReaderDLLLinker.SRComponentData
+ 0003:00002E20       VA508ScreenReaderDLLLinker.SRConfigChangePending
+ 0003:00002E24       VA508ScreenReaderDLLLinker.ValidSRFiles
+ 0003:00002E28       VA508ScreenReaderDLLLinker.ExecuteFind
+ 0003:00002E2C       VA508ScreenReaderDLLLinker.DoInitialize
+ 0003:00002E30       VA508ScreenReaderDLLLinker.InitializeResult
+ 0003:00002E34       VA508ScreenReaderDLLLinker.SRInitialize
+ 0003:00002E38       VA508ScreenReaderDLLLinker.SRShutDown
+ 0003:00002E3C       VA508ScreenReaderDLLLinker.DLLHandle
+ 0003:00002E40       Calendar.DaysInMonth
+ 0003:00002E70       FMTBcd.DValue
+ 0003:00002F68       FMTBcd.FMTBcdVariantType
+ 0003:00002F6C       SqlTimSt.NullSQLTimeStamp
+ 0003:00002F7C       SqlTimSt.IncrementAmount
+ 0003:00002F84       SqlTimSt.SQLTimeStampVariantType
+ 0003:00002F88       SqlTimSt.AdjustAmt
+ 0003:00002F90       SqlTimSt.AdjustAmt
+ 0003:00002F98       SqlTimSt.AdjustAmt
+ 0003:00002FA0       SqlTimSt.AdjustAmt
+ 0003:00002FA8       DB.FieldTypeNames
+ 0003:00003050       DBCtrls.BtnHintId
+ 0003:00003078       VA508AccessibilityManager.ControlsWithDefaultPropertySettings
+ 0003:000030A8       VA508AccessibilityManager.NewComponentData
+ 0003:000030C0       VA508AccessibilityManager.MasterPropertyList
+ 0003:000030C4       VA508AccessibilityManager.GlobalRegistry
+ 0003:000030C8       VA508AccessibilityManager.AltHandleClasses
+ 0003:000030CC       VA508AccessibilityManager.ManagedClasses
+ 0003:000030D0       VA508AccessibilityManager.ComplexClasses
+ 0003:000030D4       VA508AccessibilityManager.MSAAQueryClasses
+ 0003:000030D8       VA508AccessibilityManager.CanCheckEvent
+ 0003:000030DC       uConst.NC_TV_TEXT
+ 0003:00003124       uConst.CC_TV_TEXT
+ 0003:0000313C       uConst.ScrollBarWidth
+ 0003:00003140       fBase508Form.Last508KeyCode
+ 0003:00003144       ORClasses.NotifyLists
+ 0003:00003148       MFunStr.U
+ 0003:0000314C       Hash.CipherPad
+ 0003:0000319C       OleCtrls.DispParams
+ 0003:000031AC       OleCtrls.DispIDArgs
+ 0003:000031B0       OleCtrls.ShiftMap
+ 0003:000031B8       OleCtrls.MouseMap
+ 0003:000031C0       OleCtrls.ButtonMap
+ 0003:000031C8       XWBRich20.RTFConversionFormat
+ 0003:000031D4       XWBRich20.TextConversionFormat
+ 0003:000031E0       XWBRich20.ConversionFormatList
+ 0003:000031E4       XWBRich20.Empty
+ 0003:000031E8       XWBRich20.HideScrollBar
+ 0003:000031F0       XWBRich20.HideSelections
+ 0003:000031F8       XWBRich20.Painting
+ 0003:000031FC       VERGENCECONTEXTORLib_TLB.CLASS_ContextItemCollection
+ 0003:0000320C       VERGENCECONTEXTORLib_TLB.CLASS_ContextItem
+ 0003:0000321C       VERGENCECONTEXTORLib_TLB.CEventDispIDs
+ 0003:00003228       VERGENCECONTEXTORLib_TLB.CControlData
+ 0003:0000327C       CCOWRPCBroker.NoMore
+ 0003:00003280       CCOWRPCBroker.CURRENT_RPC_VERSION
+ 0003:00003284       VCEdit.MAX_CONFIRM_FAIL
+ 0003:00003288       Trpcb.NoMore
+ 0003:0000328C       Trpcb.MIN_RPCTIMELIMIT
+ 0003:00003290       Trpcb.CURRENT_RPC_VERSION
+ 0003:00003294       Trpcb.DEFAULT_PULSE
+ 0003:00003298       Trpcb.MINIMUM_TIMEOUT
+ 0003:0000329C       Trpcb.PULSE_PERCENTAGE
+ 0003:000032A0       ORNet.AppStartedCursorForm
+ 0003:000032A4       ORNet.uBaseContext
+ 0003:000032A8       ORNet.uCurrentContext
+ 0003:000032AC       ORNet.BoolChar
+ 0003:000032B0       rWVEHR.PERIOD
+ 0003:000032C0       AppEvnts.MultiCaster
+ 0003:000032C4       Tabs.cLeftOrient
+ 0003:000032CC       Tabs.cLeftDnOrient
+ 0003:000032D4       Tabs.cLeftDisOrient
+ 0003:000032DC       Tabs.cRightOrient
+ 0003:000032E4       Tabs.cRightDnOrient
+ 0003:000032EC       Tabs.cRightDisOrient
+ 0003:000032F4       uInit.timTimeout
+ 0003:000032F8       uInit.FTimedOut
+ 0003:000032FC       fPtSelMsg.frmPtSelMsg
+ 0003:00003300       rVitals.uVitalList
+ 0003:00003304       ORDtTm.DaysInMonth
+ 0003:00003334       uVitals.VitalPCECodes
+ 0003:0000335C       uVitals.VitalCodes
+ 0003:00003384       uVitals.VitalsDLLHandle
+ 0003:00003388       uVitals.VitalTagCodes
+ 0003:00003394       uVitals.VitalDesc
+ 0003:000033C0       uVitals.VitalFormatedDesc
+ 0003:000033E8       uVitals.uVitalFrames
+ 0003:000033EC       uReports.Months
+ 0003:0000341C       SHDocVw.CEventDispIDs
+ 0003:0000349C       SHDocVw.CControlData
+ 0003:000034F0       WordXP.CServerData
+ 0003:0000352C       WordXP.CServerData
+ 0003:00003568       Series.TwoPi
+ 0003:00003570       Series.HalfPi
+ 0003:00003578       Series.PiDegree
+ 0003:00003580       Series.PieSampleStr
+ 0003:000035A0       uFormMonitor.FormMonitor
+ 0003:000035A4       MSXML_TLB.CLASS_DOMDocument
+ 0003:000035B4       rTemplates.uUserTemplateDefaults
+ 0003:000035B8       rTemplates.uCanEditDlgFldChecked
+ 0003:000035BC       uTemplateFields.ScreenReaderCodes
+ 0003:000035C8       uTemplateFields.ScreenReaderCodeLens
+ 0003:000035D4       uTemplateFields.ScreenReaderCodeIDs
+ 0003:000035DC       uTemplateFields.ScreenReaderCodeLines
+ 0003:000035E4       uTemplateFields.TemplateFieldTypeCodes
+ 0003:000035FC       uTemplateFields.TemplateFieldTypeDesc
+ 0003:0000365C       uTemplateFields.TemplateDateTypeDesc
+ 0003:00003694       uTemplateFields.FldNames
+ 0003:000036C4       uTemplateFields.TemplateFieldDateCodes
+ 0003:000036D4       uTemplateFields.uTmplFlds
+ 0003:000036D8       uTemplateFields.uEntries
+ 0003:000036DC       uTemplateFields.uNewTemplateFieldIDCnt
+ 0003:000036E0       uTemplateFields.uRadioGroupIndex
+ 0003:000036E4       uTemplateFields.uInternalFieldIDCount
+ 0003:000036E8       rReminders.uLastDefLocUser
+ 0003:000036F0       rReminders.uDefLocs
+ 0003:000036F4       rReminders.uRemInsertAtCursor
+ 0003:000036F8       rReminders.uNewCoverSheetListActive
+ 0003:000036FC       rReminders.uCanEditAllCoverSheetLists
+ 0003:00003700       fMHTest.MHDLLHandle
+ 0003:00003704       fMHTest.ShowProc
+ 0003:00003708       fMHTest.SaveProc
+ 0003:0000370C       fMHTest.RemoveTempFile
+ 0003:00003710       fMHTest.CloseProc
+ 0003:00003714       rTIU.uTIUSiteParamsLoaded
+ 0003:00003718       fIconLegend.frmIconLegend
+ 0003:0000371C       fIconLegend.FirstSize
+ 0003:00003720       fTemplateFieldEditor.frmTemplateFields
+ 0003:00003724       fRemCoverSheet.DataCode
+ 0003:00003734       fRemCoverSheet.DataName
+ 0003:00003750       fRemCoverSheet.InternalName
+ 0003:0000376C       fRemCoverSheet.RemClsText
+ 0003:0000377C       DSIntf.DbClientHandle
+ 0003:00003780       Provider.ExtraFieldProps
+ 0003:000037AC       DBClient.FieldPropNames
+ 0003:000037E4       XuDigSigSC_TLB.CLASS_XuDigSigS
+ 0003:000037F4       fPCEEdit.uPCETemp
+ 0003:000037F8       fPCEEdit.uPCETempOld
+ 0003:000037FC       fPCEEdit.uPatient
+ 0003:00003800       fNoteProps.SPACE
+ 0003:00003804       fTemplateView.frmTemplateView
+ 0003:00003808       fTemplateView.LastStayOnTop
+ 0003:0000380C       XMLUtils.XMLCnvChr
+ 0003:00003820       XMLUtils.XMLCnvStr
+ 0003:00003834       fTemplateEditor.tmplEditorSplitterMiddle
+ 0003:00003838       fTemplateEditor.tmplEditorSplitterProperties
+ 0003:0000383C       fTemplateEditor.tmplEditorSplitterMain
+ 0003:00003840       fTemplateEditor.tmplEditorSplitterBoil
+ 0003:00003844       fTemplateEditor.tmplEditorSplitterNotes
+ 0003:00003848       fTemplateEditor.TypeTag
+ 0003:00003850       fTemplateEditor.ForcedIdx
+ 0003:00003880       fTemplateEditor.IdxForced
+ 0003:0000388C       fTemplateEditor.frmTemplateObjects
+ 0003:00003890       fTemplateEditor.frmTemplateFields
+ 0003:00003894       uSignItems.uSigItems
+ 0003:00003898       uSignItems.SigItemDesc
+ 0003:000038D8       uSignItems.SigItemDisplayOrder
+ 0003:000038E0       uSignItems.StsChar
+ 0003:000038E4       uSignItems.uSingletonFlag
+ 0003:000038E8       uProbs.v
+ 0003:000038EC       uProbs.PL_OP_VIEW
+ 0003:000038F0       uProbs.PL_IP_VIEW
+ 0003:000038F4       uProbs.PL_UF_VIEW
+ 0003:000038F8       rODAllergy.NO_YES
+ 0003:00003900       rCover.MED_TYPE
+ 0003:00003908       fvit.UcboVitChanging
+ 0003:0000390C       fProbs.GridColWidths
+ 0003:0000394C       fReminderTree.frmReminderTree
+ 0003:00003950       fReminderTree.RemTreeDlgLeft
+ 0003:00003954       fReminderTree.RemTreeDlgTop
+ 0003:00003958       fReminderTree.RemTreeDlgWidth
+ 0003:0000395C       fReminderTree.RemTreeDlgHeight
+ 0003:00003960       fConsults.ActionType
+ 0003:0000398C       IdSysVCL.wdays
+ 0003:000039A8       IdSysVCL.monthnames
+ 0003:000039D8       IdGlobal.IndyPos
+ 0003:000039DC       fODLab.CmtType
+ 0003:000039F8       fODLab.FMDateResponses
+ 0003:00003A08       fODBBank.CmtType
+ 0003:00003A24       fODBBank.FMDateResponses
+ 0003:00003A34       fODDiet.FMDayLetters
+ 0003:00003A44       CPRSChart_TLB.LIBID_CPRSChart
+ 0003:00003A54       CPRSChart_TLB.IID_ICPRSExtension
+ 0003:00003A64       uEventHooks.uCPRSEventHookManager
+ 0003:00003A68       uEventHooks.uCOMObjectActive
+ 0003:00003A6C       fODBase.frmODBase
+ 0003:00003A70       fODBase.XfInToOutNow
+ 0003:00003A74       fODBase.XferOuttoInOnMeds
+ 0003:00003A78       fODBase.ImmdCopyAct
+ 0003:00003A7C       fODBase.IsUDGroup
+ 0003:00003A80       fODBase.NoFresh
+ 0003:00003A84       fODBase.SaveAsCurrent
+ 0003:00003A88       fODBase.OrderSource
+ 0003:00003A8C       fODBase.EventDefaultOD
+ 0003:00003A90       fODBase.IsTransferAction
+ 0003:00003A94       fARTAllgy.uAddingNew
+ 0003:00003A98       fARTAllgy.uEditing
+ 0003:00003A9C       fARTAllgy.uEnteredInError
+ 0003:00003AA0       fARTAllgy.uUserCanVerify
+ 0003:00003AA4       fEncVitals.UcboVitChanging
+ 0003:00003AA8       rPCE.uVTypeLastDate
+ 0003:00003AB0       rPCE.uModifiers
+ 0003:00003AB4       rPCE.uGAFOKCalled
+ 0003:00003AB8       rPCE.uLastForceLoc
+ 0003:00003ABC       rPCE.uHasCPT
+ 0003:00003AC0       rPCE.uGAFURLChecked
+ 0003:00003AC4       rPCE.uMHOKChecked
+ 0003:00003AC8       rPCE.uVCInitialCat
+ 0003:00003ACC       rPCE.uVCLocation
+ 0003:00003AD0       rPCE.uVCInpatient
+ 0003:00003AD4       rPCE.uAPUser
+ 0003:00003ADC       rPCE.uAPLoc
+ 0003:00003AE0       rPCE.uAnytimeEnc
+ 0003:00003AE4       rPCE.UAutoSelLoc
+ 0003:00003AE8       rPCE.uLastChkOutLoc
+ 0003:00003AEC       rPCE.uLastIsClinicLoc
+ 0003:00003AF0       rPCE.uLastIsClinic
+ 0003:00003AF4       fReminderDialog.frmRemDlg
+ 0003:00003AF8       fReminderDialog.RemDlgSpltr1
+ 0003:00003AFC       fReminderDialog.RemDlgSpltr2
+ 0003:00003B00       fReminderDialog.RemDlgLeft
+ 0003:00003B04       fReminderDialog.RemDlgTop
+ 0003:00003B08       fReminderDialog.RemDlgWidth
+ 0003:00003B0C       fReminderDialog.RemDlgHeight
+ 0003:00003B10       fReminderDialog.PositionList
+ 0003:00003B14       fReminderDialog.ClinRemTextLocation
+ 0003:00003B18       fReminderDialog.ClinRemTextStr
+ 0003:00003B1C       fReminderDialog.uRemDlgStarting
+ 0003:00003B20       uReminders.InitialRemindersLoaded
+ 0003:00003B24       uReminders.RemPriorityText
+ 0003:00003B30       uReminders.ActiveReminders
+ 0003:00003B34       uReminders.OtherReminders
+ 0003:00003B38       uReminders.RemindersInProcess
+ 0003:00003B3C       uReminders.CoverSheetRemindersInBackground
+ 0003:00003B40       uReminders.KillReminderDialogProc
+ 0003:00003B44       uReminders.RemindersStarted
+ 0003:00003B48       uReminders.ProcessedReminders
+ 0003:00003B4C       uReminders.ReminderDialogInfo
+ 0003:00003B50       uReminders.RemDataCodes
+ 0003:00003B80       uReminders.LastReminderLocation
+ 0003:00003B84       uReminders.EvaluatedReminders
+ 0003:00003B88       uReminders.ReminderTreeMenu
+ 0003:00003B8C       uReminders.ReminderTreeMenuDlg
+ 0003:00003B90       uReminders.ReminderCatMenu
+ 0003:00003B94       uReminders.EducationTopics
+ 0003:00003B98       uReminders.WebPages
+ 0003:00003B9C       uReminders.ReminderCallList
+ 0003:00003BA0       uReminders.LastProcessingList
+ 0003:00003BA4       uReminders.InteractiveRemindersActiveChecked
+ 0003:00003BA8       uReminders.InteractiveRemindersActiveStatus
+ 0003:00003BAC       uReminders.PrimaryDiagRoot
+ 0003:00003BB0       uReminders.ElementChecked
+ 0003:00003BB4       uReminders.HistRootCount
+ 0003:00003BB8       uReminders.uRemFolders
+ 0003:00003BBC       uReminders.RemData2PCECat
+ 0003:00003BC8       uReminders.RemPromptCodes
+ 0003:00003C08       uReminders.RemPromptTypes
+ 0003:00003C18       uReminders.FinishPromptPieceNum
+ 0003:00003C58       uReminders.ComboPromptTags
+ 0003:00003C98       uReminders.PromptDescriptions
+ 0003:00003CD8       uReminders.RemFolderCodes
+ 0003:00003CE0       uReminders.MSTDescTxt
+ 0003:00003D08       uReminders.TmpActive
+ 0003:00003D0C       uReminders.TmpOther
+ 0003:00003D10       uReminders.RemMenuFolder
+ 0003:00003D18       uReminders.RemMenuNames
+ 0003:00003D48       uReminders.ScootOver
+ 0003:00003D4C       uDlgComponents.ReminderScreenReaderReadThroughClasses
+ 0003:00003D58       uDlgComponents.SRCheckBox
+ 0003:00003D5C       uDlgComponents.SRLabel
+ 0003:00003D60       uDlgComponents.SRComp
+ 0003:00003D64       uDlgComponents.SRText
+ 0003:00003D68       uDlgComponents.SRContinuePending
+ 0003:00003D6C       dShared.TemplateImageIdx
+ 0003:00003E1C       dShared.DialogImageXRef
+ 0003:00003E5C       dShared.RemDlgIdx
+ 0003:00003E64       dShared.COMObjIdx
+ 0003:00003E6C       fTemplateImport.frmTemplateImport
+ 0003:00003E70       uTemplates.TemplateTypeCodes
+ 0003:00003E88       uTemplates.Templates
+ 0003:00003E8C       uTemplates.RootTemplate
+ 0003:00003E90       uTemplates.MyTemplate
+ 0003:00003E94       uTemplates.TitlesTemplate
+ 0003:00003E98       uTemplates.ConsultsTemplate
+ 0003:00003E9C       uTemplates.ProceduresTemplate
+ 0003:00003EA0       uTemplates.uPersonalObjects
+ 0003:00003EA4       uTemplates.TemplateAccessLevelChecked
+ 0003:00003EA8       uTemplates.LastTemplateLocation
+ 0003:00003EAC       uTemplates.TempSL
+ 0003:00003EB0       uTemplates.Deleted
+ 0003:00003EB4       uTemplates.NodeCount
+ 0003:00003EB8       uTemplates.GettingDialogText
+ 0003:00003EBC       uTemplates.uDlgCount
+ 0003:00003EC0       uTemplates.uUniqueIDNum
+ 0003:00003EC4       uTemplates.uCanEditLinkTypeResults
+ 0003:00003EC8       uTemplates.uTemplateDataLoaded
+ 0003:00003ECC       uTemplates.uDGroupConsults
+ 0003:00003ED0       uTemplates.uDGroupProcedures
+ 0003:00003ED4       uTemplates.uTemplateDialogCanceled
+ 0003:00003ED8       uTemplates.uTemplateBPHasObjects
+ 0003:00003EDC       uTemplates.TemplateActiveCode
+ 0003:00003EE0       uTemplates.TemplateExportTag
+ 0003:00003F20       uTemplates.ExportPieces
+ 0003:00003F60       uTemplates.TemplateFieldExportTag
+ 0003:00003F8C       uTemplates.LinkGlobal
+ 0003:00003F9C       uTemplates.LinkPassCode
+ 0003:00003FAC       uPCE.PCETypeText
+ 0003:00003FB8       uPCE.PCEDataCatText
+ 0003:00003FF4       uPCE.PCESetsOfCodes
+ 0003:00003FF8       uPCE.HistLocations
+ 0003:00003FFC       uPCE.ListMinMax
+ 0003:00004050       fPtSel.itimson
+ 0003:00004054       fPtSel.enhanceskip
+ 0003:00004058       fPtSel.radiogrp1index
+ 0003:0000405C       fFrame.IsRunExecuted
+ 0003:00004060       rOrders.BoolChars
+ 0003:00004064       rCore.uPtListDfltSort
+ 0003:00004068       uCore.Encounter
+ 0003:0000406C       uCore.URLMonHandle
+ 0003:00004070       uCore.uSynchronizer
+ 0003:00004074       uCore.uNotifyAppsThread
+ 0003:00004078       uCore.uNotifyAppsQueue
+ 0003:0000407C       uCore.uNotifyAppsActive
+ 0003:00004080       uCore.AnAtom
+ 0003:00004084       uCore.MSG_TYPE
+ 0004:00000000       System.DispCallByIDProc
+ 0004:00000004       System.ExceptProc
+ 0004:00000008       System.ErrorProc
+ 0004:0000000C       System.ExceptClsProc
+ 0004:00000010       System.ExceptObjProc
+ 0004:00000014       System.RaiseExceptionProc
+ 0004:00000018       System.RTLUnwindProc
+ 0004:0000001C       System.ExceptionClass
+ 0004:00000020       System.SafeCallErrorProc
+ 0004:00000024       System.AssertErrorProc
+ 0004:00000028       System.ExitProcessProc
+ 0004:0000002C       System.AbstractErrorProc
+ 0004:00000030       System.MainInstance
+ 0004:00000034       System.MainThreadID
+ 0004:00000038       System.IsLibrary
+ 0004:0000003C       System.CmdShow
+ 0004:00000040       System.CmdLine
+ 0004:00000044       System.InitProc
+ 0004:00000048       System.ExitProc
+ 0004:0000004C       System.IsConsole
+ 0004:0000004D       System.IsMultiThread
+ 0004:0000004E       System.Test8086
+ 0004:00000050       System.Input
+ 0004:0000021C       System.Output
+ 0004:000003E8       System.ErrOutput
+ 0004:000005B4       System.ReportMemoryLeaksOnShutdown
+ 0004:000005B8       System..6
+ 0004:000005BC       System.DefaultSystemCodePage
+ 0004:000005C0       System.AllocSize2SmallBlockTypeIndX4
+ 0004:00000706       System.MinimumBlockAlignment
+ 0004:00000708       System.MediumBlockPoolsCircularList
+ 0004:00000718       System.MediumBlocksLocked
+ 0004:0000071C       System.LastSequentiallyFedMediumBlock
+ 0004:00000720       System.MediumSequentialFeedBytesLeft
+ 0004:00000724       System.MediumBlockBinGroupBitmap
+ 0004:00000728       System.MediumBlockBinBitmaps
+ 0004:000007A8       System.MediumBlockBins
+ 0004:000027A8       System.LargeBlocksLocked
+ 0004:000027AC       System.LargeBlocksCircularList
+ 0004:000027BC       System.ExpectedMemoryLeaks
+ 0004:000027C0       System.ExpectedMemoryLeaksListLocked
+ 0004:000027C4       System.MMSharingWindow
+ 0004:000027C8       System.InitContext
+ 0004:000027F4       SysInit.ModuleIsLib
+ 0004:000027F5       SysInit.ModuleIsCpp
+ 0004:000027F8       SysInit.HInstance
+ 0004:000027FC       SysInit.tlsBuffer
+ 0004:00002800       ShareMem..1
+ 0004:00002804       ShareMem.SharedMemoryManager
+ 0004:0000281C       Windows..3
+ 0004:00002820       Windows.HtmlHelpModule
+ 0004:00002824       SysUtils.CurrencyString
+ 0004:00002828       SysUtils.CurrencyFormat
+ 0004:00002829       SysUtils.NegCurrFormat
+ 0004:0000282A       SysUtils.ThousandSeparator
+ 0004:0000282B       SysUtils.DecimalSeparator
+ 0004:0000282C       SysUtils.CurrencyDecimals
+ 0004:0000282D       SysUtils.DateSeparator
+ 0004:00002830       SysUtils.ShortDateFormat
+ 0004:00002834       SysUtils.LongDateFormat
+ 0004:00002838       SysUtils.TimeSeparator
+ 0004:0000283C       SysUtils.TimeAMString
+ 0004:00002840       SysUtils.TimePMString
+ 0004:00002844       SysUtils.ShortTimeFormat
+ 0004:00002848       SysUtils.LongTimeFormat
+ 0004:0000284C       SysUtils.ShortMonthNames
+ 0004:0000287C       SysUtils.LongMonthNames
+ 0004:000028AC       SysUtils.ShortDayNames
+ 0004:000028C8       SysUtils.LongDayNames
+ 0004:000028E4       SysUtils.SysLocale
+ 0004:000028F2       SysUtils.ListSeparator
+ 0004:000028F4       SysUtils.EraNames
+ 0004:00002910       SysUtils.EraYearOffsets
+ 0004:0000292C       SysUtils.TrueBoolStrs
+ 0004:00002930       SysUtils.FalseBoolStrs
+ 0004:00002934       SysUtils..35
+ 0004:00002938       SysUtils.OutOfMemory
+ 0004:0000293C       SysUtils.InvalidPointer
+ 0004:00002940       SysUtils.CharHash
+ 0004:00002A40       SysUtils.ValidatedUnitHashBuckets
+ 0004:00002E40       SysUtils.UnitHashBuckets
+ 0004:00003240       SysUtils.FLanguages
+ 0004:00003244       VarUtils.VariantChangeTypeEx
+ 0004:00003248       VarUtils.VarNeg
+ 0004:0000324C       VarUtils.VarNot
+ 0004:00003250       VarUtils.VarAdd
+ 0004:00003254       VarUtils.VarSub
+ 0004:00003258       VarUtils.VarMul
+ 0004:0000325C       VarUtils.VarDiv
+ 0004:00003260       VarUtils.VarIDiv
+ 0004:00003264       VarUtils.VarMod
+ 0004:00003268       VarUtils.VarAnd
+ 0004:0000326C       VarUtils.VarOr
+ 0004:00003270       VarUtils.VarXor
+ 0004:00003274       VarUtils.VarCmp
+ 0004:00003278       VarUtils.VarI4FromStr
+ 0004:0000327C       VarUtils.VarR4FromStr
+ 0004:00003280       VarUtils.VarR8FromStr
+ 0004:00003284       VarUtils.VarDateFromStr
+ 0004:00003288       VarUtils.VarCyFromStr
+ 0004:0000328C       VarUtils.VarBoolFromStr
+ 0004:00003290       VarUtils.VarBstrFromCy
+ 0004:00003294       VarUtils.VarBstrFromDate
+ 0004:00003298       VarUtils.VarBstrFromBool
+ 0004:0000329C       VarUtils..5
+ 0004:000032A0       Variants.EmptyParam
+ 0004:000032B0       Variants.VarDispProc
+ 0004:000032B4       Variants.ClearAnyProc
+ 0004:000032B8       Variants.ChangeAnyProc
+ 0004:000032BC       Variants.RefAnyProc
+ 0004:000032C0       Variants..81
+ 0004:000032C4       Variants.LVarTypes
+ 0004:000032C8       Variants.LVarTypeSync
+ 0004:000032E0       TypInfo..6
+ 0004:000032E4       Classes.GlobalNameSpace
+ 0004:000032E8       Classes.IsUniqueGlobalComponentNameProc
+ 0004:000032EC       Classes.SyncEvent
+ 0004:000032F0       Classes..95
+ 0004:000032F4       Classes.IntConstList
+ 0004:000032F8       Classes.RegGroups
+ 0004:000032FC       Classes.FindGlobalComponentProcs
+ 0004:00003300       Classes.GlobalFixupList
+ 0004:00003304       Classes.ThreadLock
+ 0004:0000331C       Classes.ThreadCount
+ 0004:00003320       Classes.InstBlockList
+ 0004:00003324       Classes.InstFreeList
+ 0004:00003328       HelpIntfs..2
+ 0004:0000332C       HelpIntfs.HelpManager
+ 0004:00003330       MultiMon.GetSystemMetrics
+ 0004:00003334       MultiMon.MonitorFromWindow
+ 0004:00003338       MultiMon.MonitorFromRect
+ 0004:0000333C       MultiMon.MonitorFromPoint
+ 0004:00003340       MultiMon.GetMonitorInfo
+ 0004:00003344       MultiMon.GetMonitorInfoA
+ 0004:00003348       MultiMon.GetMonitorInfoW
+ 0004:0000334C       MultiMon.EnumDisplayMonitors
+ 0004:00003350       MultiMon..1
+ 0004:00003354       MultiMon.User32Dll
+ 0004:00003358       MultiMon.InitApis
+ 0004:00003360       MultiMon.MMAvailable
+ 0004:00003364       CommCtrl.ComCtl32DLL
+ 0004:00003368       CommCtrl._InitCommonControlsEx
+ 0004:0000336C       IniFiles..8
+ 0004:00003370       Registry..5
+ 0004:00003374       Graphics.SystemPalette16
+ 0004:00003378       Graphics..12
+ 0004:0000337C       Graphics.ScreenLogPixels
+ 0004:00003380       Graphics.StockPen
+ 0004:00003384       Graphics.StockBrush
+ 0004:00003388       Graphics.StockFont
+ 0004:0000338C       Graphics.StockIcon
+ 0004:00003390       Graphics.BitmapImageLock
+ 0004:000033A8       Graphics.CounterLock
+ 0004:000033C0       Graphics.FontManager
+ 0004:000033C4       Graphics.PenManager
+ 0004:000033C8       Graphics.BrushManager
+ 0004:000033CC       Graphics.CanvasList
+ 0004:000033D0       Graphics.PatternManager
+ 0004:000033D4       UxTheme.OpenThemeData
+ 0004:000033D8       UxTheme.CloseThemeData
+ 0004:000033DC       UxTheme.DrawThemeBackground
+ 0004:000033E0       UxTheme.DrawThemeText
+ 0004:000033E4       UxTheme.GetThemeBackgroundContentRect
+ 0004:000033E8       UxTheme.GetThemeBackgroundExtent
+ 0004:000033EC       UxTheme.GetThemePartSize
+ 0004:000033F0       UxTheme.GetThemeTextExtent
+ 0004:000033F4       UxTheme.GetThemeTextMetrics
+ 0004:000033F8       UxTheme.GetThemeBackgroundRegion
+ 0004:000033FC       UxTheme.HitTestThemeBackground
+ 0004:00003400       UxTheme.DrawThemeEdge
+ 0004:00003404       UxTheme.DrawThemeIcon
+ 0004:00003408       UxTheme.IsThemePartDefined
+ 0004:0000340C       UxTheme.IsThemeBackgroundPartiallyTransparent
+ 0004:00003410       UxTheme.GetThemeColor
+ 0004:00003414       UxTheme.GetThemeMetric
+ 0004:00003418       UxTheme.GetThemeString
+ 0004:0000341C       UxTheme.GetThemeBool
+ 0004:00003420       UxTheme.GetThemeInt
+ 0004:00003424       UxTheme.GetThemeEnumValue
+ 0004:00003428       UxTheme.GetThemePosition
+ 0004:0000342C       UxTheme.GetThemeFont
+ 0004:00003430       UxTheme.GetThemeRect
+ 0004:00003434       UxTheme.GetThemeMargins
+ 0004:00003438       UxTheme.GetThemeIntList
+ 0004:0000343C       UxTheme.GetThemePropertyOrigin
+ 0004:00003440       UxTheme.SetWindowTheme
+ 0004:00003444       UxTheme.GetThemeFilename
+ 0004:00003448       UxTheme.GetThemeSysColor
+ 0004:0000344C       UxTheme.GetThemeSysColorBrush
+ 0004:00003450       UxTheme.GetThemeSysBool
+ 0004:00003454       UxTheme.GetThemeSysSize
+ 0004:00003458       UxTheme.GetThemeSysFont
+ 0004:0000345C       UxTheme.GetThemeSysString
+ 0004:00003460       UxTheme.GetThemeSysInt
+ 0004:00003464       UxTheme.IsThemeActive
+ 0004:00003468       UxTheme.IsAppThemed
+ 0004:0000346C       UxTheme.GetWindowTheme
+ 0004:00003470       UxTheme.EnableThemeDialogTexture
+ 0004:00003474       UxTheme.IsThemeDialogTextureEnabled
+ 0004:00003478       UxTheme.GetThemeAppProperties
+ 0004:0000347C       UxTheme.SetThemeAppProperties
+ 0004:00003480       UxTheme.GetCurrentThemeName
+ 0004:00003484       UxTheme.GetThemeDocumentationProperty
+ 0004:00003488       UxTheme.DrawThemeParentBackground
+ 0004:0000348C       UxTheme.EnableTheming
+ 0004:00003490       UxTheme..1
+ 0004:00003494       UxTheme.ThemeLibrary
+ 0004:00003498       UxTheme.ReferenceCount
+ 0004:0000349C       UxTheme.Lock
+ 0004:000034A0       Printers..3
+ 0004:000034A4       GraphUtil..2
+ 0004:000034A8       ExtCtrls.TCustomTrayIcon.RM_TaskbarCreated
+ 0004:000034AC       ExtCtrls..83
+ 0004:000034B0       Dialogs..11
+ 0004:000034B4       Dialogs.HelpMsg
+ 0004:000034B8       Dialogs.FindMsg
+ 0004:000034BC       Dialogs.FontDialog
+ 0004:000034C0       Dialogs.ButtonWidths
+ 0004:000034EC       Clipbrd.CF_PICTURE
+ 0004:000034EE       Clipbrd.CF_COMPONENT
+ 0004:000034F0       Clipbrd..2
+ 0004:000034F4       Clipbrd.FClipboard
+ 0004:000034F8       FlatSB.FlatSB_EnableScrollBar
+ 0004:000034FC       FlatSB.FlatSB_ShowScrollBar
+ 0004:00003500       FlatSB.FlatSB_GetScrollRange
+ 0004:00003504       FlatSB.FlatSB_GetScrollInfo
+ 0004:00003508       FlatSB.FlatSB_GetScrollPos
+ 0004:0000350C       FlatSB.FlatSB_SetScrollPos
+ 0004:00003510       FlatSB.FlatSB_SetScrollInfo
+ 0004:00003514       FlatSB.FlatSB_SetScrollRange
+ 0004:00003518       FlatSB..1
+ 0004:0000351C       FlatSB._FlatSB_GetScrollProp
+ 0004:00003520       FlatSB._FlatSB_SetScrollProp
+ 0004:00003524       FlatSB._InitializeFlatSB
+ 0004:00003528       FlatSB._UninitializeFlatSB
+ 0004:0000352C       Themes..2
+ 0004:00003530       Themes.InternalServices
+ 0004:00003534       Menus.PopupList
+ 0004:00003538       Menus.ShortCutItems
+ 0004:0000353C       Menus..01
+ 0004:00003540       Menus.CommandPool
+ 0004:00003544       Controls.Mouse
+ 0004:00003548       Controls.IsVCLControlHook
+ 0004:00003550       Controls.NewStyleControls
+ 0004:00003554       Controls..33
+ 0004:00003558       Controls.WindowAtom
+ 0004:0000355A       Controls.ControlAtom
+ 0004:0000355C       Controls.WindowAtomString
+ 0004:00003560       Controls.ControlAtomString
+ 0004:00003564       Controls.RM_GetObjectInstance
+ 0004:00003568       Controls.DragControl
+ 0004:0000356C       Controls.DragObject
+ 0004:00003570       Controls.DragInternalObject
+ 0004:00003574       Controls.DragCapture
+ 0004:00003578       Controls.DragStartPos
+ 0004:00003580       Controls.DragSaveCursor
+ 0004:00003584       Controls.DragThreshold
+ 0004:00003588       Controls.ActiveDrag
+ 0004:0000358C       Controls.DragImageList
+ 0004:00003590       Controls.DockSiteList
+ 0004:00003594       Controls.QualifyingSites
+ 0004:00003598       Controls.DragSave
+ 0004:0000359C       Controls.CanvasList
+ 0004:000035A0       Controls._WINNLSEnableIME
+ 0004:000035A4       Controls._ImmGetContext
+ 0004:000035A8       Controls._ImmReleaseContext
+ 0004:000035AC       Controls._ImmGetConversionStatus
+ 0004:000035B0       Controls._ImmSetConversionStatus
+ 0004:000035B4       Controls._ImmSetOpenStatus
+ 0004:000035B8       Controls._ImmSetCompositionWindow
+ 0004:000035BC       Controls._ImmSetCompositionFont
+ 0004:000035C0       Controls._ImmGetCompositionString
+ 0004:000035C4       Controls._ImmIsIME
+ 0004:000035C8       Controls._ImmNotifyIME
+ 0004:000035CC       ImgList.CachedComCtrlVer
+ 0004:000035D0       ImgList.ImageListWriteExProc
+ 0004:000035D4       ActnList..9
+ 0004:000035D8       Forms.Application
+ 0004:000035DC       Forms.Screen
+ 0004:000035E0       Forms..41
+ 0004:000035E4       Forms.RM_TaskbarCreated
+ 0004:000035E8       Forms.HintThreadID
+ 0004:000035EC       Forms.HintDoneEvent
+ 0004:000035F0       Forms.HintHook
+ 0004:000035F4       Forms.HintThread
+ 0004:000035F8       Forms.IdleTimerHandle
+ 0004:000035FC       Buttons..5
+ 0004:00003600       Buttons.BitBtnGlyphs
+ 0004:0000362C       ExtDlgs..6
+ 0004:00003630       Mapi..1
+ 0004:00003634       ExtActns..72
+ 0004:00003638       ExtActns.UrlMonHandle
+ 0004:0000363C       ExtActns.UrlMonInitialized
+ 0004:00003640       ComCtrls..76
+ 0004:00003644       ComCtrls.ShellModule
+ 0004:00003648       ComCtrls.FRichEditModule
+ 0004:0000364C       ComCtrls.ComCtlVersion
+ 0004:00003650       ComCtrls.ToolMenuHook
+ 0004:00003654       ComCtrls.MenuToolBar
+ 0004:00003658       ComCtrls.MenuToolBar2
+ 0004:0000365C       ComCtrls.MenuButtonIndex
+ 0004:00003660       ComCtrls.LastMenuItem
+ 0004:00003664       ComCtrls.LastMousePos
+ 0004:0000366C       ComCtrls.StillModal
+ 0004:00003670       ComCtrls.ToolMenuKeyHook
+ 0004:00003674       ComCtrls.CoInitializeExProc
+ 0004:00003678       ComCtrls.CoInitExProcLoaded
+ 0004:0000367C       TeeProcs..9
+ 0004:00003680       TeEngine..71
+ 0004:00003684       ComObj..41
+ 0004:00003688       ComObj.OleUninitializing
+ 0004:0000368C       ComObj.ComClassManagerVar
+ 0004:00003690       ComObj.SaveInitProc
+ 0004:00003694       ComObj.NeedToUninitialize
+ 0004:00003698       VAUtils..3
+ 0004:0000369C       VAUtils.PIDList
+ 0004:000036A8       VAUtils.ModuleHandles
+ 0004:000036B4       CheckLst..2
+ 0004:000036B8       CheckLst.FCheckWidth
+ 0004:000036BC       CheckLst.FCheckHeight
+ 0004:000036C0       Chart.AnimatedZoomFactor
+ 0004:000036C8       Chart.TeeZoomMouseButton
+ 0004:000036C9       Chart.TeeScrollMouseButton
+ 0004:000036CA       Chart.TeeZoomKeyShift
+ 0004:000036CB       Chart.TeeScrollKeyShift
+ 0004:000036CC       Chart.TeeSeriesTypes
+ 0004:000036D0       Chart..31
+ 0004:000036D4       ORCtrls..03
+ 0004:000036D8       ORCtrls.uKeyHookHandle
+ 0004:000036DC       ORCtrls.uItemTip
+ 0004:000036E0       ORCtrls.uItemTipCount
+ 0004:000036E4       ORCtrls.uNewStyle
+ 0004:000036E8       ORCtrls.ORCBImages
+ 0004:00003768       ORCtrls.uOldShowHintsSetting
+ 0004:0000376C       ORFn..1
+ 0004:00003770       ORFn.FBaseFont
+ 0004:00003774       ORFn.AlignList
+ 0004:00003778       ORFn.AnchorList
+ 0004:0000377C       OleServer..3
+ 0004:00003780       VA508MSAASupport..1
+ 0004:00003784       VA508MSAASupport.NamePropIDs
+ 0004:00003794       VA508MSAASupport.uNotifier
+ 0004:00003798       VA508AccessibilityRouter..2
+ 0004:0000379C       VA508ScreenReaderDLLLinker..1
+ 0004:000037A0       WideStrings..4
+ 0004:000037A4       WideStrings.CharNextW
+ 0004:000037A8       FMTBcd..3
+ 0004:000037AC       SqlTimSt..1
+ 0004:000037B0       DB.LoginDialogProc
+ 0004:000037B4       DB.LoginDialogExProc
+ 0004:000037B8       DB.RemoteLoginDialogProc
+ 0004:000037BC       DB.ScreenCursorProc
+ 0004:000037C0       DB.PasswordDialog
+ 0004:000037C4       DB.DBScreen
+ 0004:000037C8       DB.DBApplication
+ 0004:000037CC       DB..66
+ 0004:000037D0       DBPWDlg..2
+ 0004:000037D4       DBLogDlg..2
+ 0004:000037D8       DBCtrls..22
+ 0004:000037DC       VA508DelphiCompatibility..2
+ 0004:000037E0       VA508AccessibilityManager..21
+ 0004:000037E4       VA508AccessibilityManager.TVAGlobalComponentRegistry.FActive
+ 0004:000037E8       VA508AccessibilityManager.TVAGlobalComponentRegistry.FGetMsgHookHandle
+ 0004:000037EC       uConst..4
+ 0004:000037F0       fBase508Form..2
+ 0004:000037F4       fBase508Form.KeyMonitorHook
+ 0004:000037F8       fBase508Form.MouseMonitorHook
+ 0004:000037FC       ORClasses..8
+ 0004:00003800       MFunStr..1
+ 0004:00003804       Hash..2
+ 0004:00003808       AxCtrls..02
+ 0004:0000380C       AxCtrls.xParkingWindow
+ 0004:00003810       AxCtrls.OlePro32DLL
+ 0004:00003814       AxCtrls._OleCreatePropertyFrame
+ 0004:00003818       AxCtrls._OleCreateFontIndirect
+ 0004:0000381C       AxCtrls._OleCreatePictureIndirect
+ 0004:00003820       AxCtrls._OleLoadPicture
+ 0004:00003824       OleCtrls.EmptyParam
+ 0004:00003834       OleCtrls..5
+ 0004:00003838       XWBRich20..6
+ 0004:0000383C       XWBRich20.FRichEditModule
+ 0004:00003840       frmSignonMessage.frmSignonMsg
+ 0004:00003844       fDebugInfo.frmDebugInfo
+ 0004:00003848       Wsockc.HookTimeOut
+ 0004:0000384C       Wsockc.NetCallPending
+ 0004:00003850       Wsockc.NetTimerStart
+ 0004:00003858       Wsockc..2
+ 0004:0000385C       Wsockc.Prefix
+ 0004:00003860       SelDiv.SelDivForm
+ 0004:00003864       SelDiv..2
+ 0004:00003868       SelDiv.DivSel
+ 0004:0000386C       SelDiv.CntDiv
+ 0004:00003870       SelDiv.DivArray
+ 0004:00003874       fRPCBErrMsg.frmErrMsg
+ 0004:00003878       CCOWRPCBroker..2
+ 0004:0000387C       CCOWRPCBroker.CCOWToken
+ 0004:00003880       CCOWRPCBroker.Domain
+ 0004:00003884       CCOWRPCBroker.PassCode1
+ 0004:00003888       CCOWRPCBroker.PassCode2
+ 0004:0000388C       VCEdit.frmVCEdit
+ 0004:00003890       Rpcconf1.rpcConfig
+ 0004:00003894       Rpcconf1.ButtonStatus
+ 0004:00003898       Rpcconf1.rServer
+ 0004:0000389C       Rpcconf1.rPort
+ 0004:000038A0       Rpcconf1.TaskInstance
+ 0004:000038A4       Rpcconf1..2
+ 0004:000038A8       RpcNet.WRec
+ 0004:000048A8       RpcNet..4
+ 0004:000048AC       Loginfrm.frmSignon
+ 0004:000048B0       Loginfrm.intDeviceLock
+ 0004:000048B4       Loginfrm.LoginfrmSignOnBroker
+ 0004:000048B8       Loginfrm.SysMenu
+ 0004:000048BC       Sgnoncnf.frmSignonConfig
+ 0004:000048C0       Sgnoncnf.strPosition
+ 0004:000048C4       Sgnoncnf.strSize
+ 0004:000048C8       Sgnoncnf.InitialValues
+ 0004:000048CC       Sgnoncnf.SignonDefaults
+ 0004:000048D0       Sgnoncnf.IsSharedBroker
+ 0004:000048D4       Sgnoncnf..4
+ 0004:000048D8       Trpcb.DebugData
+ 0004:000048DC       Trpcb.BrokerConnections
+ 0004:000048E0       Trpcb.BrokerAllConnections
+ 0004:000048E4       Trpcb..9
+ 0004:000048E8       ORNet.RPCBrokerV
+ 0004:000048EC       ORNet.RPCLastCall
+ 0004:000048F0       ORNet..1
+ 0004:000048F4       ORNet.uCallList
+ 0004:000048F8       ORNet.uMaxCalls
+ 0004:000048FC       ORNet.uShowRPCs
+ 0004:00004900       fAutoSz..2
+ 0004:00004904       AppEvnts..3
+ 0004:00004908       Tabs..4
+ 0004:0000490C       uInit..1
+ 0004:00004910       rVitals..1
+ 0004:00004914       ORDtTm..01
+ 0004:00004918       ORDtTm.uServerToday
+ 0004:00004920       uVitals..5
+ 0004:00004924       uReports.RowObjects
+ 0004:00004928       fGraphData.frmGraphData
+ 0004:0000492C       fGraphData.GtslData
+ 0004:00004930       fGraphData.GtslItems
+ 0004:00004934       fGraphData.GtslTypes
+ 0004:00004938       fGraphData.GtslAllTypes
+ 0004:0000493C       fGraphData.GtslAllViews
+ 0004:00004940       fGraphData.GtslTestSpec
+ 0004:00004944       fGraphData.GtslDrugClass
+ 0004:00004948       fGraphData.GtslViews
+ 0004:0000494C       fGraphData.GtslCheck
+ 0004:00004950       fGraphData.GtslNonNum
+ 0004:00004954       fGraphData.GtslNonNumDates
+ 0004:00004958       fGraphData.GtslScratchSwap
+ 0004:0000495C       fGraphData.GtslScratchTemp
+ 0004:00004960       fGraphData.GtslScratchLab
+ 0004:00004964       fGraphData.GtslSpec1
+ 0004:00004968       fGraphData.GtslSpec2
+ 0004:0000496C       fGraphData.GtslSpec3
+ 0004:00004970       fGraphData.GtslSpec4
+ 0004:00004974       fGraphData.GtslMultiSpec
+ 0004:00004978       fGraphData.GtslTempCheck
+ 0004:0000497C       fGraphData.GtslTemp
+ 0004:00004980       fGraphData.GtslSelCopyTop
+ 0004:00004984       fGraphData.GtslSelCopyBottom
+ 0004:00004988       fGraphData.GtslZoomHistoryFloat
+ 0004:0000498C       fGraphData.GtslZoomHistoryReport
+ 0004:00004990       fGraphData.GtslSelPrevTopFloat
+ 0004:00004994       fGraphData.GtslSelPrevTopReport
+ 0004:00004998       fGraphData.GtslSelPrevBottomFloat
+ 0004:0000499C       fGraphData.GtslSelPrevBottomReport
+ 0004:000049A0       fGraphData.GtslViewPersonal
+ 0004:000049A4       fGraphData.GtslViewPublic
+ 0004:000049A8       fGraphData.GtslLabGroup
+ 0004:000049AC       fGraphData.FGraphActivity
+ 0004:000049B0       Series..61
+ 0004:000049B4       ArrowCha..2
+ 0004:000049B8       GanttCh..2
+ 0004:000049BC       uFormMonitor..1
+ 0004:000049C0       uFormMonitor.uActiveWindowHandle
+ 0004:000049C4       uFormMonitor.uActiveWindowCount
+ 0004:000049C8       rLabs.uLabPatchInstalled
+ 0004:000049CC       fGraphSettings.frmGraphSettings
+ 0004:000049D0       fGraphs.FHintWin
+ 0004:000049D4       fGraphs.FHintWinActive
+ 0004:000049D5       fGraphs.FHintStop
+ 0004:000049D8       fGraphs..2
+ 0004:000049DC       rTemplates..1
+ 0004:000049E0       rTemplates.uCanEditDlgFlds
+ 0004:000049E4       uTemplateFields..01
+ 0004:000049E8       rReminders..1
+ 0004:000049EC       rReminders.MHDLL
+ 0004:000049F0       fMHTest.frmMHTest
+ 0004:000049F4       fMHTest.FFirstCtrl
+ 0004:000049F8       fMHTest.FYPos
+ 0004:000049FC       fMHTest.UsedMHDll
+ 0004:00004A00       rTIU..1
+ 0004:00004A04       rTIU.uTIUSiteParams
+ 0004:00004A08       rTIU.uNoteTitles
+ 0004:00004A0C       rTIU.uTIUPrefs
+ 0004:00004A10       rTIU.uPatch175Installed
+ 0004:00004A14       fPCEBaseGrid..2
+ 0004:00004A18       ORCtrlsVA508Compatibility..01
+ 0004:00004A1C       mVisitRelated..2
+ 0004:00004A20       fGAF.frmGAF
+ 0004:00004A24       fGAF..2
+ 0004:00004A28       fVisitType.frmVisitType
+ 0004:00004A2C       fVisitType..2
+ 0004:00004A30       fDiagnoses.frmDiagnoses
+ 0004:00004A34       fDiagnoses..2
+ 0004:00004A38       fProcedure.frmProcedures
+ 0004:00004A3C       fProcedure..2
+ 0004:00004A40       fImmunization.frmImmunizations
+ 0004:00004A44       fImmunization..2
+ 0004:00004A48       fSkinTest.frmSkinTests
+ 0004:00004A4C       fSkinTest..2
+ 0004:00004A50       fPatientEd.frmPatientEd
+ 0004:00004A54       fPatientEd..2
+ 0004:00004A58       fHealthFactor.frmHealthFactors
+ 0004:00004A5C       fHealthFactor..2
+ 0004:00004A60       fPCEBaseMain..2
+ 0004:00004A64       fExam.frmExams
+ 0004:00004A68       fExam..2
+ 0004:00004A6C       uConsults.ConsultRec
+ 0004:00004AFC       uConsults..3
+ 0004:00004B00       rODDiet.uOutpatientPatchInstalled
+ 0004:00004B02       rODDiet.uUserHasFHAUTHKey
+ 0004:00004B04       fClinicWardMeds.frmClinicWardMeds
+ 0004:00004B08       fClinicWardMeds.ALocation
+ 0004:00004B0C       fClinicWardMeds.AWardLoc
+ 0004:00004B10       fClinicWardMeds.AClinicLoc
+ 0004:00004B14       fClinicWardMeds.ASelectedLoc
+ 0004:00004B18       fClinicWardMeds.AName
+ 0004:00004B1C       fClinicWardMeds.ASvc
+ 0004:00004B20       fClinicWardMeds.AWardName
+ 0004:00004B24       fClinicWardMeds.AClinicName
+ 0004:00004B28       fClinicWardMeds.AOrderLocList
+ 0004:00004B2C       fClinicWardMeds.AMsgSw
+ 0004:00004B30       fClinicWardMeds..2
+ 0004:00004B34       rDCSumm..1
+ 0004:00004B38       rDCSumm.uDCSummTitles
+ 0004:00004B3C       rDCSumm.uDCSummPrefs
+ 0004:00004B40       fTemplateDialog.frmTemplateDialog
+ 0004:00004B44       mImgText..2
+ 0004:00004B48       fIconLegend.LastX
+ 0004:00004B4C       fIconLegend.LastY
+ 0004:00004B50       uSpell..1
+ 0004:00004B54       uSpell.WindowList
+ 0004:00004B58       uSpell.OldList
+ 0004:00004B5C       uSpell.NewList
+ 0004:00004B60       uSpell.MSWord
+ 0004:00004B70       uSpell.uSpellCheckAvailable
+ 0004:00004B74       fConsMedRslt..2
+ 0004:00004B78       fConsMedRslt.RecipientList
+ 0004:00004B80       fRemCoverSheet..2
+ 0004:00004B84       rODMeds..1
+ 0004:00004B88       rODMeds.uAdminTimeHelpText
+ 0004:00004B8C       rODMeds.uDrugHasMaxData
+ 0004:00004B9C       rODMeds.uInpatientClozapineText
+ 0004:00004BA0       fActivateDeactivate.frmActivateDeactive
+ 0004:00004BA4       fActivateDeactivate.Act
+ 0004:00004BA5       fActivateDeactivate.Deact
+ 0004:00004BA6       fActivateDeactivate.CancelProcess
+ 0004:00004BA8       DSIntf..2
+ 0004:00004BAC       DSIntf.Loading
+ 0004:00004BC4       Provider..41
+ 0004:00004BC8       DBClient..31
+ 0004:00004BCC       uODBase..1
+ 0004:00004BD0       uODBase.uOrderEventType
+ 0004:00004BD4       uODBase.uOrderEventID
+ 0004:00004BD8       uODBase.uOrderEventName
+ 0004:00004BDC       uODBase.uOrderFormID
+ 0004:00004BE0       uODBase.uFillerAppID
+ 0004:00004BE4       uODBase.uKeyVarList
+ 0004:00004BE8       fPreReq.ContinueWithOrder
+ 0004:00004BEC       mCoPayDesc..2
+ 0004:00004BF0       fOrdersPrint.PrintParams
+ 0004:00004C14       fOrdersPrint..2
+ 0004:00004C18       fOrdersSign.arRect
+ 0004:00005898       fOrdersSign.ProvDx
+ 0004:000058AC       fOrdersSign.FOSTFHintWndActive
+ 0004:000058B0       fOrdersSign.FOSTFhintWindow
+ 0004:000058B4       fOrdersSign.tempList
+ 0004:000058B8       fOrdersSign.crypto
+ 0004:000058BC       fOrdersSign.rectIndex
+ 0004:000058C0       fOrdersSign.frmSignOrders
+ 0004:000058C4       fOrdersSign.chkBoxStatus
+ 0004:000058C8       fOrdersSign.srcOrderID
+ 0004:000058CC       fOrdersSign.targetOrderID
+ 0004:000058D0       fOrdersSign.srcDx
+ 0004:000058D4       fOrdersSign.tempOrderList
+ 0004:000058D8       fOrdersSign.copyOrderID
+ 0004:000058DC       fOrdersSign.srcIndex
+ 0004:000058E0       fOrdersSign.CopyBuffer
+ 0004:000058E4       fOrdersSign..2
+ 0004:000058E8       rSurgery..1
+ 0004:000058EC       rSurgery.uSurgeryTitles
+ 0004:000058F0       rSurgery.uShowSurgeryTab
+ 0004:000058F4       fPCEEdit..2
+ 0004:000058F8       fNoteProps.uConsultsList
+ 0004:000058FC       fNoteProps.uShowUnresolvedOnly
+ 0004:00005900       fTemplateAutoGen.PersObjects
+ 0004:00005904       XMLUtils..1
+ 0004:00005908       fSurgery.frmSurgery
+ 0004:0000590C       fSurgery.uSurgeryContext
+ 0004:00005944       fSurgery..2
+ 0004:00005948       fSurgery.uPCEShow
+ 0004:0000594C       fSurgery.uPCEEdit
+ 0004:00005950       fSurgery.ViewContext
+ 0004:00005954       fSurgery.frmDrawers
+ 0004:00005958       fSurgery.uChanging
+ 0004:0000595C       fLkUpLocation.LocType
+ 0004:00005960       fOCSession.uCheckedOrders
+ 0004:00005964       fOCSession.FOldHintHidePause
+ 0004:00005968       uSignItems..2
+ 0004:0000596C       uSignItems.FlagCount
+ 0004:00005970       uSignItems.BaseFlags
+ 0004:00005974       uSignItems.tempCkBx
+ 0004:00005978       uSignItems.thisOrderID
+ 0004:0000597C       uSignItems.thisChangeItem
+ 0004:00005980       uSignItems.AllBtnLeft
+ 0004:00005984       uProbs.ProbRec
+ 0004:00005988       uProbs.PLPt
+ 0004:0000598C       uProbs.PLUser
+ 0004:00005990       uProbs.pProviderID
+ 0004:00005998       uProbs.pProviderName
+ 0004:0000599C       uProbs.PLFilters
+ 0004:000059A0       uProbs.PLProblem
+ 0004:000059A4       uProbs..7
+ 0004:000059A8       fProbCmt.frmProbCmt
+ 0004:000059AC       rODAllergy..1
+ 0004:000059B0       rODAllergy.uARTPatchInstalled
+ 0004:000059B4       rODAllergy.uGMRASiteParams
+ 0004:000059B8       rODAllergy.uARTClinUser
+ 0004:000059C4       rCover..2
+ 0004:000059C8       fvit.frmVit
+ 0004:000059CC       fvit.uVitalLocation
+ 0004:000059D4       fvit.uVitalOld
+ 0004:000059D8       fvit.uVitalNew
+ 0004:000059DC       fCover.frmCover
+ 0004:000059E0       fCover.VAAFlag
+ 0004:000059E4       fCover.MHVFlag
+ 0004:000059E8       fCover.VAA_DFN
+ 0004:000059EC       fCover.PtIsVAA
+ 0004:000059ED       fCover.PtIsMHV
+ 0004:000059F0       fCover..2
+ 0004:000059F4       fCover.uIPAddress
+ 0004:000059F8       fCover.uARTCoverSheetParams
+ 0004:000059FC       fARTFreeTextMsg.tmpList
+ 0004:00005A00       fAllgyFind.uFileCount
+ 0004:00005A04       fProbLex.ProblemList
+ 0004:00005A08       fProbEdt..2
+ 0004:00005A0C       fProbs.frmProblems
+ 0004:00005A10       fProbs.dlgProbs
+ 0004:00005A14       fProbs.gFontHeight
+ 0004:00005A18       fProbs.gFontWidth
+ 0004:00005A1C       fProbs.origWidths
+ 0004:00005A5C       fProbs..2
+ 0004:00005A60       fODConsult.LastNode
+ 0004:00005A64       fODConsult.displayDXCode
+ 0004:00005A68       fODConsult.consultQuickOrder
+ 0004:00005A6C       fODConsult..2
+ 0004:00005A70       fODConsult.SvcList
+ 0004:00005A74       fODConsult.QuickList
+ 0004:00005A78       fODConsult.Defaults
+ 0004:00005A7C       fODConsult.ProvDx
+ 0004:00005A90       fODConsult.GMRCREAF
+ 0004:00005A94       fODConsult.BADxUpdated
+ 0004:00005A98       fODConsult.quickCode
+ 0004:00005A9C       fOrdersTS.frmOrdersTS
+ 0004:00005AA0       fMedCopy.frmMedCopy
+ 0004:00005AA4       mEvntDelay..2
+ 0004:00005AA8       fOrdersCopy.frmCopyOrders
+ 0004:00005AAC       fOrderFlag.AlertRecip
+ 0004:00005AB4       fOrdersAlert..2
+ 0004:00005AB8       fOrdersAlert.AlertRecip
+ 0004:00005AC0       fOrdersAlert.Provider
+ 0004:00005AC4       fOrderVw.uDGroupList
+ 0004:00005AC8       fOrderVw.uFilterList
+ 0004:00005ACC       fMeds.frmMeds
+ 0004:00005AD0       fMeds.OrigOutPtSecWidths
+ 0004:00005AEC       fMeds.OrigInPtSecWidths
+ 0004:00005B00       fMeds.OrigNonVASecWidths
+ 0004:00005B10       fMeds.s
+ 0004:00005B14       fMeds.totalHeight
+ 0004:00005B18       fMeds.oldFont
+ 0004:00005B1C       fMeds..3
+ 0004:00005B20       fPrintLocation.frmPrintLocation
+ 0004:00005B24       fPrintLocation.ASvc
+ 0004:00005B28       fPrintLocation.ClinicLocation
+ 0004:00005B2C       fPrintLocation.WardLocation
+ 0004:00005B30       fPrintLocation.ClinicArr
+ 0004:00005B34       fPrintLocation.WardArr
+ 0004:00005B38       fPrintLocation..2
+ 0004:00005B3C       fReview.frmReview
+ 0004:00005B40       fReview.DxRect
+ 0004:00005B50       fReview.chkBoxStatus
+ 0004:00005B54       fReview.srcOrderID
+ 0004:00005B58       fReview.targetOrderID
+ 0004:00005B5C       fReview.srcDx
+ 0004:00005B60       fReview.tempOrderList
+ 0004:00005B64       fReview.copyOrderID
+ 0004:00005B68       fReview.srcIndex
+ 0004:00005B6C       fReview.CopyBuffer
+ 0004:00005B70       fReview.FRVTFHintWindowActive
+ 0004:00005B74       fReview.FRVTFHintWindow
+ 0004:00005B78       fReview.crypto
+ 0004:00005B7C       fReview.currentlySelectedItem
+ 0004:00005B80       fReview..2
+ 0004:00005B84       fEncnt..2
+ 0004:00005B88       fEncnt.uTIULocation
+ 0004:00005B8C       fEncnt.uTIULocationName
+ 0004:00005B90       fNotes.frmNotes
+ 0004:00005B94       fNotes.SearchTextStopFlag
+ 0004:00005B98       fNotes..2
+ 0004:00005B9C       fNotes.uPCEShow
+ 0004:00005BA0       fNotes.uPCEEdit
+ 0004:00005BA4       fNotes.ViewContext
+ 0004:00005BA8       fNotes.frmDrawers
+ 0004:00005BAC       fNotes.uTIUContext
+ 0004:00005C04       fNotes.ColumnToSort
+ 0004:00005C08       fNotes.ColumnSortForward
+ 0004:00005C09       fNotes.uChanging
+ 0004:00005C0A       fNotes.uIDNotesActive
+ 0004:00005C0C       fEditConsult.frmEditCslt
+ 0004:00005C10       fEditConsult..2
+ 0004:00005C14       fEditConsult.SvcList
+ 0004:00005C18       fEditConsult.OldRec
+ 0004:00005C78       fEditConsult.NewRec
+ 0004:00005CD8       fEditConsult.Defaults
+ 0004:00005CDC       fEditConsult.uMessageVisible
+ 0004:00005CE0       fEditConsult.ProvDx
+ 0004:00005CF4       fEditConsult.BADxUpdated
+ 0004:00005CF8       fEditProc.frmEditProc
+ 0004:00005CFC       fEditProc..2
+ 0004:00005D00       fEditProc.OldRec
+ 0004:00005D60       fEditProc.NewRec
+ 0004:00005DC0       fEditProc.Defaults
+ 0004:00005DC4       fEditProc.uMessageVisible
+ 0004:00005DC8       fEditProc.ProvDx
+ 0004:00005DDC       fODProc..2
+ 0004:00005DE0       fODProc.ProvDx
+ 0004:00005DF4       fODProc.GMRCREAF
+ 0004:00005DF8       fConsultAct.frmConsultAction
+ 0004:00005DFC       fConsultAct.SvcList
+ 0004:00005E00       fConsultAct.uChanging
+ 0004:00005E04       fConsultAct..2
+ 0004:00005E08       fConsultAct.RecipientList
+ 0004:00005E10       fConsultsView.uChanging
+ 0004:00005E14       fConsultsView..2
+ 0004:00005E18       fConsultsView.SvcList
+ 0004:00005E1C       fConsultsView.SvcInfo
+ 0004:00005E20       fConsultBS..2
+ 0004:00005E24       fConsultBS.SvcList
+ 0004:00005E28       fConsultBS.SvcInfo
+ 0004:00005E2C       fConsultBS.uChanging
+ 0004:00005E30       fConsults.frmConsults
+ 0004:00005E34       fConsults..3
+ 0004:00005E38       fConsults.ViewContext
+ 0004:00005E3C       fConsults.CurrNotifIEN
+ 0004:00005E40       fConsults.SvcCtxt
+ 0004:00005E50       fConsults.StsCtxt
+ 0004:00005E60       fConsults.DateRange
+ 0004:00005E70       fConsults.uSelectContext
+ 0004:00005E98       fConsults.uPCEShow
+ 0004:00005E9C       fConsults.uPCEEdit
+ 0004:00005EA0       fConsults.frmDrawers
+ 0004:00005EA4       fConsults.MenuAccessRec
+ 0004:00005EB4       fConsults.MedResult
+ 0004:00005ED4       fConsults.uChanging
+ 0004:00005ED5       fConsults.uIDNotesActive
+ 0004:00005ED8       fDCSummProps.EditLines
+ 0004:00005EDC       fDCSumm.frmDCSumm
+ 0004:00005EE0       fDCSumm..2
+ 0004:00005EE4       fDCSumm.uPCEShow
+ 0004:00005EE8       fDCSumm.uPCEEdit
+ 0004:00005EEC       fDCSumm.ViewContext
+ 0004:00005EF0       fDCSumm.frmDrawers
+ 0004:00005EF4       fDCSumm.uDCSummContext
+ 0004:00005F4C       fDCSumm.ColumnToSort
+ 0004:00005F50       fDCSumm.ColumnSortForward
+ 0004:00005F51       fDCSumm.uChanging
+ 0004:00005F52       fDCSumm.uIDNotesActive
+ 0004:00005F54       fPrintList.frmPrintList
+ 0004:00005F58       fPrintList.HLDPageID
+ 0004:00005F5C       fODMedNVA.crypto
+ 0004:00005F60       fODMedNVA..2
+ 0004:00005F64       fIVRoutes.frmIVRoutes
+ 0004:00005F68       IdSysVCL..2
+ 0004:00005F6C       IdGlobal..21
+ 0004:00005F70       IdGlobal.GIdPorts
+ 0004:00005F74       fOtherSchedule.frmOtherSchedule
+ 0004:00005F78       fODMeds.crypto
+ 0004:00005F7C       fODMeds..2
+ 0004:00005F80       fODLab..5
+ 0004:00005F84       fODLab.uDfltUrgency
+ 0004:00005F88       fODLab.uDfltCollType
+ 0004:00005F8C       fODLab.ALabTest
+ 0004:00005F90       fODLab.UserHasLRLABKey
+ 0004:00005F94       fODLab.LRFZX
+ 0004:00005F98       fODLab.LRFSAMP
+ 0004:00005F9C       fODLab.LRFSPEC
+ 0004:00005FA0       fODLab.LRFDATE
+ 0004:00005FA4       fODLab.LRFURG
+ 0004:00005FA8       fODLab.LRFSCH
+ 0004:00005FAC       fODBBank..5
+ 0004:00005FB0       fODBBank.uSelectedItems
+ 0004:00005FB4       fODBBank.uVBECList
+ 0004:00005FB8       fODBBank.uTestsForResults
+ 0004:00005FBC       fODBBank.uUrgencyList
+ 0004:00005FC0       fODBBank.uTNSOrders
+ 0004:00005FC4       fODBBank.uModifierList
+ 0004:00005FC8       fODBBank.uReasonsList
+ 0004:00005FCC       fODBBank.uRaw
+ 0004:00005FD0       fODBBank.uTestSelected
+ 0004:00005FD1       fODBBank.uComponentSelected
+ 0004:00005FD4       fODBBank.uDfltUrgency
+ 0004:00005FD8       fODBBank.uSelUrgency
+ 0004:00005FDC       fODBBank.uSelSurgery
+ 0004:00005FE0       fODBBank.uSpecimen
+ 0004:00005FE4       fODBBank.uGetTnS
+ 0004:00005FE8       fODBBank.uDfltCollType
+ 0004:00005FEC       fODBBank.uReason
+ 0004:00005FF0       fODBBank.ALabTest
+ 0004:00005FF4       fODBBank.UserHasLRLABKey
+ 0004:00005FF8       fODBBank.LRFZX
+ 0004:00005FFC       fODBBank.LRFSAMP
+ 0004:00006000       fODBBank.LRFSPEC
+ 0004:00006004       fODBBank.LRFDATE
+ 0004:00006008       fODBBank.LRFURG
+ 0004:0000600C       fODBBank.LRFSCH
+ 0004:00006010       fODBBank.LRORDERMODE
+ 0004:00006014       fODRad..2
+ 0004:00006018       fODRad.Radiologist
+ 0004:0000601C       fODRad.Contract
+ 0004:00006020       fODRad.Research
+ 0004:00006024       fODRad.AName
+ 0004:00006028       fODRad.IsPregnant
+ 0004:0000602C       fODRad.ALocation
+ 0004:00006030       fODRad.AType
+ 0004:00006034       fODDiet.uDialogName
+ 0004:00006038       fODDiet.uFHAUTH
+ 0004:0000603C       fODDiet.uRecurringMealList
+ 0004:00006040       fODDiet..2
+ 0004:00006044       fODDiet.uDietParams
+ 0004:00006074       uEventHooks..1
+ 0004:00006078       fODBase.DEASig
+ 0004:0000607C       fODBase.DupORIFN
+ 0004:00006080       fODBase.CIDCOkToSave
+ 0004:00006084       fODBase..5
+ 0004:00006088       rODBase..4
+ 0004:0000608C       rODBase.uLastDispenseIEN
+ 0004:00006090       rODBase.uLastDispenseMsg
+ 0004:00006094       rODBase.uLastQuantityMsg
+ 0004:00006098       rODBase.uMedRoutes
+ 0004:0000609C       rODBase.uPFSSActive
+ 0004:000060A0       rConsults.uConsultsClass
+ 0004:000060A4       rConsults.uConsultTitles
+ 0004:000060A8       rConsults.uClinProcClass
+ 0004:000060AC       rConsults.uClinProcTitles
+ 0004:000060B0       rConsults.uUnresolvedConsults
+ 0004:000060B4       rConsults..1
+ 0004:000060B8       rConsults.uLastOrderedIEN
+ 0004:000060BC       rConsults.uLastOrderMsg
+ 0004:000060C0       fNoteSTStop.frmSearchStop
+ 0004:000060C4       fARTAllgy.AllergyList
+ 0004:000060C8       fARTAllgy.OldRec
+ 0004:00006160       fARTAllgy.NewRec
+ 0004:000061F8       fARTAllgy.Defaults
+ 0004:000061FC       fARTAllgy.Changing
+ 0004:00006200       fARTAllgy.uDeletedSymptoms
+ 0004:00006204       fARTAllgy..2
+ 0004:00006208       fAllgyBox.frmAllgyBox
+ 0004:0000620C       fVitals.frmVitals
+ 0004:00006210       fVitals.tmpGrid
+ 0004:00006214       fVitals.uDate1
+ 0004:0000621C       fVitals.uDate2
+ 0004:00006224       fEncVitals.frmEncVitals
+ 0004:00006228       fEncVitals..2
+ 0004:0000622C       rPCE.uEncLocation
+ 0004:00006230       rPCE..1
+ 0004:00006234       rPCE.uLastLocation
+ 0004:00006238       rPCE.uLastDFN
+ 0004:0000623C       rPCE.uVTypeLastLoc
+ 0004:00006240       rPCE.uDiagnoses
+ 0004:00006244       rPCE.uExams
+ 0004:00006248       rPCE.uHealthFactors
+ 0004:0000624C       rPCE.uImmunizations
+ 0004:00006250       rPCE.uPatientEds
+ 0004:00006254       rPCE.uProcedures
+ 0004:00006258       rPCE.uSkinTests
+ 0004:0000625C       rPCE.uVisitTypes
+ 0004:00006260       rPCE.uVTypeForLoc
+ 0004:00006264       rPCE.uProblems
+ 0004:00006268       rPCE.uGAFOK
+ 0004:00006269       rPCE.uLastForce
+ 0004:0000626C       rPCE.uGAFURL
+ 0004:00006270       rPCE.uMHOK
+ 0004:00006271       rPCE.uVCResult
+ 0004:00006272       rPCE.uAPAsk
+ 0004:00006273       rPCE.UAutoSelVal
+ 0004:00006274       rPCE.uLastChkOut
+ 0004:00006278       fReminderDialog..2
+ 0004:0000627C       uReminders.RemForm
+ 0004:000062AC       uReminders.NotPurposeValue
+ 0004:000062B0       uReminders.WHRemPrint
+ 0004:000062B4       uReminders..9
+ 0004:000062B8       uReminders.PCERootList
+ 0004:000062BC       uDlgComponents..02
+ 0004:000062C0       mTemplateFieldButton..2
+ 0004:000062C4       uVA508CPRSCompatibility..1
+ 0004:000062C8       fDrawers..2
+ 0004:000062CC       dShared.dmodShared
+ 0004:000062D0       dShared..2
+ 0004:000062D4       uTemplates..2
+ 0004:000062D8       uTemplates.TemplateAccessLevelValue
+ 0004:000062DC       uTemplates.uIndentLevel
+ 0004:000062E0       fReportsAdhocSubItem1.frmReportsAdhocSubItem1
+ 0004:000062E4       fReportsAdhocComponent1.frmReportsAdhocComponent1
+ 0004:000062E8       fReportsAdhocComponent1.uComponents
+ 0004:000062EC       fReportsAdhocComponent1.uCurrentComponent
+ 0004:000062F0       fReportsAdhocComponent1.HSCompCtr
+ 0004:000062F4       fReportsAdhocComponent1.uFile
+ 0004:000062F8       fReportsAdhocComponent1.uLimit
+ 0004:000062FC       fReportsAdhocComponent1.uLimitCount
+ 0004:00006300       fReportsAdhocComponent1..2
+ 0004:00006304       fReports.frmReports
+ 0004:00006308       fReports.uHSComponents
+ 0004:0000630C       fReports.uHSAll
+ 0004:00006310       fReports.uLocalReportData
+ 0004:00006314       fReports.uRemoteReportData
+ 0004:00006318       fReports.uReportInstruction
+ 0004:0000631C       fReports.uNewColumn
+ 0004:00006320       fReports.uColumns
+ 0004:00006324       fReports.uTreeStrings
+ 0004:00006328       fReports.uMaxOcc
+ 0004:0000632C       fReports.uHState
+ 0004:00006330       fReports.uQualifier
+ 0004:00006334       fReports.uReportType
+ 0004:00006338       fReports.uSortOrder
+ 0004:0000633C       fReports.uQualifierType
+ 0004:00006340       fReports.uFirstSort
+ 0004:00006344       fReports.uSecondSort
+ 0004:00006348       fReports.uThirdSort
+ 0004:0000634C       fReports.uColChange
+ 0004:00006350       fReports.uUpdateStat
+ 0004:00006351       fReports.ulvSelectOn
+ 0004:00006354       fReports.uListState
+ 0004:00006358       fReports.uECSReport
+ 0004:0000635C       fReports.UpdatingLvReports
+ 0004:0000635D       fReports.UpdatingTvProcedures
+ 0004:00006360       fReports..2
+ 0004:00006364       fReports.uRemoteCount
+ 0004:00006368       fReports.uFrozen
+ 0004:0000636C       fReports.uHTMLDoc
+ 0004:00006370       fReports.uReportRPC
+ 0004:00006374       fReports.uHTMLPatient
+ 0004:00006378       fReports.uRptID
+ 0004:0000637C       fReports.uDirect
+ 0004:00006380       fReports.uEmptyImageList
+ 0004:00006384       fReports.ColumnToSort
+ 0004:00006388       fReports.ColumnSortForward
+ 0004:0000638C       fReports.GraphForm
+ 0004:00006390       fReports.GraphFormActive
+ 0004:00006394       rReports..1
+ 0004:00006398       rReports.uTree
+ 0004:0000639C       rReports.uReportsList
+ 0004:000063A0       rReports.uLabReports
+ 0004:000063A4       rReports.uDateRanges
+ 0004:000063A8       rReports.uHSTypes
+ 0004:000063AC       fDeviceSelect.ADevice
+ 0004:000063B0       fDeviceSelect..2
+ 0004:000063B4       uPCE..31
+ 0004:000063B8       uPCE.UNxtCommSeqNum
+ 0004:000063BC       fPCEBase.frmPCEBase
+ 0004:000063C0       fPCEBase..2
+ 0004:000063C4       fEncounterFrame.frmEncounterFrame
+ 0004:000063C8       fEncounterFrame.uSCCond
+ 0004:000063D8       fEncounterFrame.uVisitType
+ 0004:000063DC       fEncounterFrame.uEncPCEData
+ 0004:000063E0       fEncounterFrame.uProviders
+ 0004:000063E4       UBACore.uAddToPDl
+ 0004:000063E8       UBACore.uDeleteFromPDL
+ 0004:000063EC       UBACore.uDxLst
+ 0004:000063F0       UBACore.BADxList
+ 0004:000063F4       fPtSelDemog.frmPtSelDemog
+ 0004:000063F8       fPtSelDemog..2
+ 0004:000063FC       fPtSelOptSave.frmPtSelOptSave
+ 0004:00006400       fPtSelOptns.frmPtSelOptns
+ 0004:00006404       fPtSelOptns.clinDoSave
+ 0004:00006405       fPtSelOptns.clinSaveToday
+ 0004:00006408       fPtSelOptns.clinDefaults
+ 0004:0000640C       fPtSelOptns..2
+ 0004:00006410       fAlertForward..2
+ 0004:00006414       fAlertForward.XQAID
+ 0004:00006418       fPtSel.FDfltSrc
+ 0004:0000641C       fPtSel.FDfltSrcType
+ 0004:00006420       fPtSel.IsRPL
+ 0004:00006424       fPtSel.RPLJob
+ 0004:00006428       fPtSel.DupDFN
+ 0004:0000642C       fPtSel.RPLProblem
+ 0004:00006430       fPtSel.PtStrs
+ 0004:00006434       fPtSel..2
+ 0004:00006438       fLabs.frmLabs
+ 0004:0000643C       fLabs.uFormat
+ 0004:00006440       fLabs.uPrevReportNode
+ 0004:00006444       fLabs.uDate1
+ 0004:0000644C       fLabs.uDate2
+ 0004:00006454       fLabs.tmpGrid
+ 0004:00006458       fLabs.uLabLocalReportData
+ 0004:0000645C       fLabs.uLabRemoteReportData
+ 0004:00006460       fLabs.uUpdateStat
+ 0004:00006461       fLabs.uScreenSplitMoved
+ 0004:00006464       fLabs.uScreenSplitLoc
+ 0004:00006468       fLabs.uTreeStrings
+ 0004:0000646C       fLabs.uReportInstruction
+ 0004:00006470       fLabs.uColChange
+ 0004:00006474       fLabs.uQualifier
+ 0004:00006478       fLabs.uReportType
+ 0004:0000647C       fLabs.uSortOrder
+ 0004:00006480       fLabs.uMaxOcc
+ 0004:00006484       fLabs.uColumns
+ 0004:00006488       fLabs.uNewColumn
+ 0004:0000648C       fLabs.uLocalReportData
+ 0004:00006490       fLabs.uRemoteReportData
+ 0004:00006494       fLabs.uQualifierType
+ 0004:00006498       fLabs.uHState
+ 0004:0000649C       fLabs.uFirstSort
+ 0004:000064A0       fLabs.uSecondSort
+ 0004:000064A4       fLabs.uThirdSort
+ 0004:000064A8       fLabs.ulvSelectOn
+ 0004:000064AC       fLabs..3
+ 0004:000064B0       fLabs.uFrozen
+ 0004:000064B1       fLabs.uGraphingActivated
+ 0004:000064B4       fLabs.uRemoteCount
+ 0004:000064B8       fLabs.uHTMLDoc
+ 0004:000064BC       fLabs.uReportRPC
+ 0004:000064C0       fLabs.uHTMLPatient
+ 0004:000064C4       fLabs.uEmptyImageList
+ 0004:000064C8       fLabs.uRptID
+ 0004:000064CC       fLabs.uDirect
+ 0004:000064D0       fLabs.ColumnToSort
+ 0004:000064D4       fLabs.ColumnSortForward
+ 0004:000064D8       fSplash.frmSplash
+ 0004:000064DC       fLabInfo.frmLabInfo
+ 0004:000064E0       fBAOptionsDiagnoses.uDeleteFromPDL
+ 0004:000064E4       fBAOptionsDiagnoses.uNewDxList
+ 0004:000064E8       fBAOptionsDiagnoses.Problems
+ 0004:000064EC       fBAOptionsDiagnoses.DxList
+ 0004:000064F0       fBAOptionsDiagnoses.ECFDiagnoses
+ 0004:000064F4       fBAOptionsDiagnoses.tmplst
+ 0004:000064F8       fBAOptionsDiagnoses.newDxLst
+ 0004:000064FC       fBAOptionsDiagnoses.delDxLst
+ 0004:00006500       fBAOptionsDiagnoses.inactiveCodes
+ 0004:00006504       fBAOptionsDiagnoses..2
+ 0004:00006508       fBAOptionsDiagnoses.LastDFN
+ 0004:0000650C       fBAOptionsDiagnoses.LastLocation
+ 0004:00006510       fBAOptionsDiagnoses.FDxSection
+ 0004:00006514       fBAOptionsDiagnoses.BADxCode
+ 0004:00006518       fOptionsSurrogate.Surrogate
+ 0004:0000651C       fOptionsSurrogate.TempSurrogate
+ 0004:00006520       fFrame.frmFrame
+ 0004:00006524       fFrame.uTabList
+ 0004:00006528       fFrame.uRemoteType
+ 0004:0000652C       fFrame.FlaggedPTList
+ 0004:00006530       fFrame.ctxContextor
+ 0004:00006534       fFrame.NextTab
+ 0004:00006538       fFrame.LastTab
+ 0004:0000653C       fFrame.uToolsMaxed
+ 0004:0000653D       fFrame.uToolsWarned
+ 0004:0000653E       fFrame.uUseVistaWeb
+ 0004:00006540       fFrame..2
+ 0004:00006544       fFrame.GraphFloat
+ 0004:00006548       fBALocalDiagnoses.deleteDX
+ 0004:00006549       fBALocalDiagnoses.selectingDX
+ 0004:0000654C       fBALocalDiagnoses.FDxCode
+ 0004:00006550       fBALocalDiagnoses.FDxSection
+ 0004:00006554       fBALocalDiagnoses.FName
+ 0004:00006558       fBALocalDiagnoses.MaxDx
+ 0004:0000655C       fBALocalDiagnoses.GridItems
+ 0004:00006560       fBALocalDiagnoses.UpdatingGrid
+ 0004:00006562       fBALocalDiagnoses.whoCalled
+ 0004:00006564       fBALocalDiagnoses.currentOrderIDList
+ 0004:00006568       fBALocalDiagnoses.ProblemDxHoldList
+ 0004:0000656C       fBALocalDiagnoses.PersonalDxHoldList
+ 0004:00006570       fBALocalDiagnoses.frmBALocalDiagnoses
+ 0004:00006574       fBALocalDiagnoses.lexIENHoldList
+ 0004:00006578       fBALocalDiagnoses..2
+ 0004:0000657C       fBALocalDiagnoses.uProblems
+ 0004:00006580       fBALocalDiagnoses.BADiagnosis
+ 0004:00006584       fBALocalDiagnoses.ECFDiagnosis
+ 0004:00006588       fBALocalDiagnoses.uLastDFN
+ 0004:0000658C       fBALocalDiagnoses.uLastLocation
+ 0004:00006590       fBALocalDiagnoses.ListItem
+ 0004:00006594       fBALocalDiagnoses.uPrimaryDxHold
+ 0004:00006598       fBALocalDiagnoses.PrimaryChanged
+ 0004:0000659C       UBAGlobals.BAPLPt
+ 0004:000065A0       UBAGlobals.BAPLRec
+ 0004:000065A4       UBAGlobals.PLlist
+ 0004:000065A8       UBAGlobals.BADiagnosisList
+ 0004:000065AC       UBAGlobals.BALocation
+ 0004:000065B0       UBAGlobals.BAPCEDiagList
+ 0004:000065B4       UBAGlobals.BAOrderIDList
+ 0004:000065B8       UBAGlobals.tempDxList
+ 0004:000065BC       UBAGlobals.globalDxRec
+ 0004:000065C0       UBAGlobals.UnsignedBillingRec
+ 0004:000065C4       UBAGlobals.ConsultOrderRec
+ 0004:000065C8       UBAGlobals.BAFactorsInRec
+ 0004:000065CC       UBAGlobals.BAFactorsRec
+ 0004:000065D0       UBAGlobals.BAOrderList
+ 0004:000065D4       UBAGlobals.UpdatedBAOrderList
+ 0004:000065D8       UBAGlobals.ChangeItemOrderNum
+ 0004:000065DC       UBAGlobals.OrderIDList
+ 0004:000065E0       UBAGlobals.BAOrderID
+ 0004:000065E4       UBAGlobals.BILLING_AWARE
+ 0004:000065E8       UBAGlobals.BAtmpOrderList
+ 0004:000065EC       UBAGlobals.BAFlagsIN
+ 0004:000065F0       UBAGlobals.BAFlagsOUT
+ 0004:000065F4       UBAGlobals.SourceOrderID
+ 0004:000065F8       UBAGlobals.TargetOrderID
+ 0004:000065FC       UBAGlobals.BACopiedOrderFlags
+ 0004:00006600       UBAGlobals.BANurseConsultOrders
+ 0004:00006604       UBAGlobals.Dx1
+ 0004:00006608       UBAGlobals.Dx2
+ 0004:0000660C       UBAGlobals.Dx3
+ 0004:00006610       UBAGlobals.Dx4
+ 0004:00006614       UBAGlobals.TFactors
+ 0004:00006618       UBAGlobals.SC
+ 0004:0000661C       UBAGlobals.AO
+ 0004:00006620       UBAGlobals.IR
+ 0004:00006624       UBAGlobals.MST
+ 0004:00006628       UBAGlobals.HNC
+ 0004:0000662C       UBAGlobals.CV
+ 0004:00006630       UBAGlobals.SHD
+ 0004:00006634       UBAGlobals.EC
+ 0004:00006638       UBAGlobals.PLFactorsIndexes
+ 0004:0000663C       UBAGlobals.BAHoldPrimaryDx
+ 0004:00006640       UBAGlobals.BAPrimaryDxChanged
+ 0004:00006644       UBAGlobals.NonBillableOrderList
+ 0004:00006648       UBAGlobals.OrderListSCEI
+ 0004:0000664C       UBAGlobals.UnsignedOrders
+ 0004:00006650       UBAGlobals.BAUnSignedOrders
+ 0004:00006654       UBAGlobals.BATFHints
+ 0004:00006658       UBAGlobals.BASelectedList
+ 0004:0000665C       UBAGlobals.BAConsultDxList
+ 0004:00006660       UBAGlobals.BAConsultPLFlags
+ 0004:00006664       UBAGlobals.BAFWarningShown
+ 0004:00006665       UBAGlobals.BAPersonalDX
+ 0004:00006668       UBAGlobals.BADeltedOrders
+ 0004:0000666C       UBAGlobals..31
+ 0004:00006670       rOrders..8
+ 0004:00006674       rOrders.uDGroupMap
+ 0004:00006678       rOrders.uDGroupAll
+ 0004:0000667C       rOrders.uOrderChecksOn
+ 0004:00006680       fOrders.frmOrders
+ 0004:00006684       fOrders.origWidths
+ 0004:000066AC       fOrders..2
+ 0004:000066B0       fOrders.uOrderList
+ 0004:000066B4       fOrders.uEvtDCList
+ 0004:000066B8       fOrders.uEvtRLList
+ 0004:000066BC       rMisc.SizeHolder
+ 0004:000066C0       rMisc..2
+ 0004:000066C4       rMisc.uBounds
+ 0004:000066C8       rMisc.uWidths
+ 0004:000066CC       rMisc.uColumns
+ 0004:000066D0       uOrders.uAutoAc
+ 0004:000066D4       uOrders.InptDisp
+ 0004:000066D8       uOrders.OutptDisp
+ 0004:000066DC       uOrders.MedsDisp
+ 0004:000066E0       uOrders.ClinDisp
+ 0004:000066E4       uOrders.NurDisp
+ 0004:000066E8       uOrders.IVDisp
+ 0004:000066EC       uOrders.CsltDisp
+ 0004:000066F0       uOrders.ProcDisp
+ 0004:000066F4       uOrders.ImgDisp
+ 0004:000066F8       uOrders.DietDisp
+ 0004:000066FC       uOrders.NonVADisp
+ 0004:00006700       uOrders.MedsInDlgIen
+ 0004:00006704       uOrders.MedsOutDlgIen
+ 0004:00006708       uOrders.MedsNVADlgIen
+ 0004:0000670C       uOrders.MedsInDlgFormId
+ 0004:00006710       uOrders.MedsOutDlgFormId
+ 0004:00006714       uOrders.MedsNVADlgFormID
+ 0004:00006718       uOrders.MedsIVDlgIen
+ 0004:0000671C       uOrders.MedsIVDlgFormID
+ 0004:00006720       uOrders.NSSchedule
+ 0004:00006724       uOrders.OriginalMedsOutHeight
+ 0004:00006728       uOrders.OriginalMedsInHeight
+ 0004:0000672C       uOrders.OriginalNonVAMedsHeight
+ 0004:00006730       uOrders.PassDrugTstCall
+ 0004:00006734       uOrders..2
+ 0004:00006738       uOrders.uPatientLocked
+ 0004:00006739       uOrders.uKeepLock
+ 0004:0000673C       uOrders.uOrderAction
+ 0004:00006740       uOrders.uOrderDialog
+ 0004:00006744       uOrders.uOrderHTML
+ 0004:00006748       uOrders.uOrderMenu
+ 0004:0000674C       uOrders.uOrderSet
+ 0004:00006750       uOrders.uLastConfirm
+ 0004:00006754       uOrders.uOrderSetTime
+ 0004:0000675C       uOrders.uNewMedDialog
+ 0004:00006760       rCore..1
+ 0004:00006764       uCore.User
+ 0004:00006768       uCore.Patient
+ 0004:0000676C       uCore.Changes
+ 0004:00006770       uCore.RemoteSites
+ 0004:00006774       uCore.RemoteReports
+ 0004:00006778       uCore.Notifications
+ 0004:0000677C       uCore.HasFlag
+ 0004:00006780       uCore.FlagList
+ 0004:00006784       uCore.TempEncounterLoc
+ 0004:00006788       uCore.TempEncounterLocName
+ 0004:0000678C       uCore.TempEncounterText
+ 0004:00006790       uCore.TempEncounterDateTime
+ 0004:00006798       uCore.TempEncounterVistCat
+ 0004:0000679C       uCore..21
+ 0004:000067A0       uCore.uVistaMsg
+ 0004:000067A4       uCore.uVistaDomMsg
+ 0004:000067A8       uCore.HlinkNav
+ 0004:000067AC       fPage..2
+ 0004:000067B0       fAResize..2
+ 0005:00000000       System.RaiseListPtr
+ 0005:00000004       System.InOutRes
+ 0005:00000008       Classes.GlobalLoaded
+ 0005:0000000C       Classes.GlobalLists
+ 0005:00000010       GraphUtil.CachedRGBToHLSclrRGB
+ 0005:00000014       GraphUtil.CachedRGBToHLSHue
+ 0005:00000016       GraphUtil.CachedRGBToHLSLum
+ 0005:00000018       GraphUtil.CachedRGBToHLSSat
+ 0005:0000001C       GraphUtil.CachedHighlightLum
+ 0005:00000020       GraphUtil.CachedHighlightColor
+ 0005:00000024       GraphUtil.CachedHighlight
+ 0005:00000028       GraphUtil.CachedShadowLum
+ 0005:0000002C       GraphUtil.CachedShadowColor
+ 0005:00000030       GraphUtil.CachedShadow
+ 0005:00000034       GraphUtil.CachedColorValue
+ 0005:00000038       GraphUtil.CachedLumValue
+ 0005:0000003C       GraphUtil.CachedColorAdjustLuma
+ 0005:00000040       SysInit.TlsLast
+
+
+Line numbers for VAClasses(..\VA\VAClasses.pas) segment .text
+
+    99 0001:000C9690   100 0001:000C9696   102 0001:000C96A3   103 0001:000C96AD
+   105 0001:000C96B8   115 0001:000C96BC   116 0001:000C96C2   119 0001:000C96C4
+   120 0001:000C96D6   121 0001:000C96E5   122 0001:000C96F4   131 0001:000C9710
+   132 0001:000C971B   133 0001:000C9723   134 0001:000C972B   135 0001:000C9737
+   138 0001:000C9748   139 0001:000C9751   140 0001:000C975D   141 0001:000C976A
+   144 0001:000C9770   145 0001:000C9777   147 0001:000C978B   149 0001:000C978F
+   148 0001:000C9790   150 0001:000C97B5   153 0001:000C97C2   154 0001:000C97C5
+   160 0001:000C97CC   161 0001:000C97D0   162 0001:000C97D9   164 0001:000C97DD
+   165 0001:000C97E7   167 0001:000C97F1   173 0001:000C97F4   174 0001:000C97F9
+   183 0001:000C97FC   184 0001:000C9801   187 0001:000C9804   188 0001:000C9816
+   189 0001:000C981F   197 0001:000C983C   198 0001:000C9847   199 0001:000C9853
+   208 0001:000C9864   209 0001:000C9869   215 0001:000C986C   216 0001:000C9875
+   217 0001:000C9886   218 0001:000C9891   222 0001:000C9898   223 0001:000C98AD
+   224 0001:000C98B6   225 0001:000C98C2   314 0001:000C98DF
+
+Line numbers for VAUtils(..\VA\VAUtils.pas) segment .text
+
+   207 0001:000CA5E0   208 0001:000CA5F1   209 0001:000CA5F6   210 0001:000CA5FF
+   213 0001:000CA60E   214 0001:000CA60F   215 0001:000CA612   211 0001:000CA61F
+   217 0001:000CA628   218 0001:000CA635   219 0001:000CA652   225 0001:000CA65C
+   226 0001:000CA685   227 0001:000CA68C   228 0001:000CA6CD   229 0001:000CA702
+   242 0001:000CA730   243 0001:000CA74A   244 0001:000CA74F   245 0001:000CA761
+   246 0001:000CA766   247 0001:000CA76B   248 0001:000CA770   250 0001:000CA773
+   251 0001:000CA79B   252 0001:000CA7A0   253 0001:000CA7A5   254 0001:000CA7AA
+   255 0001:000CA7AF   256 0001:000CA7B4   258 0001:000CA7B7   259 0001:000CA7C1
+   260 0001:000CA7C7   261 0001:000CA7D6   262 0001:000CA7F6   263 0001:000CA822
+   264 0001:000CA826   265 0001:000CA82A   266 0001:000CA82E   267 0001:000CA832
+   268 0001:000CA836   269 0001:000CA83A   271 0001:000CA83C   277 0001:000CA864
+   278 0001:000CA884   279 0001:000CA88C   280 0001:000CA89C   281 0001:000CA8AB
+   282 0001:000CA8BA   284 0001:000CA8C7   285 0001:000CA8E4   286 0001:000CA8F7
+   292 0001:000CA95C   293 0001:000CA95F   294 0001:000CA964   295 0001:000CA976
+   296 0001:000CA984   294 0001:000CA994   297 0001:000CA997   298 0001:000CA99E
+   305 0001:000CA9A4   307 0001:000CA9A5   308 0001:000CA9B5   309 0001:000CA9BF
+   311 0001:000CA9C3   312 0001:000CA9C5   320 0001:000CA9C8   322 0001:000CA9D1
+   323 0001:000CA9DB   325 0001:000CA9E2   326 0001:000CA9E9   376 0001:000CA9EC
+   377 0001:000CA9F0   378 0001:000CA9F3   379 0001:000CAA2F   402 0001:000CAA34
+   403 0001:000CAA57   405 0001:000CAA97   409 0001:000CAADC   410 0001:000CAB06
+   418 0001:000CAC12   485 0001:000CAC58   486 0001:000CAC71   487 0001:000CAC8F
+   488 0001:000CAC9B   489 0001:000CACA4   496 0001:000CACD4   497 0001:000CACF8
+   498 0001:000CAD0B   499 0001:000CAD1C   500 0001:000CAD2E   501 0001:000CAD3B
+   505 0001:000CAE6C   506 0001:000CAE6F   507 0001:000CAE7B   517 0001:000CAE80
+   518 0001:000CAE9C   519 0001:000CAEA4   520 0001:000CAEBE   521 0001:000CAEC9
+   522 0001:000CAED6   523 0001:000CAEFB   525 0001:000CAF04   526 0001:000CAF0E
+   625 0001:000CB0F0   630 0001:000CB0F9   631 0001:000CB10A   632 0001:000CB116
+   633 0001:000CB11F   634 0001:000CB130   635 0001:000CB13C   636 0001:000CB145
+   637 0001:000CB158   639 0001:000CB15F   646 0001:000CB160   647 0001:000CB165
+   649 0001:000CB16A   651 0001:000CB16E   652 0001:000CB17F   651 0001:000CB18E
+   654 0001:000CB191   656 0001:000CB198   660 0001:000CB19C   661 0001:000CB1A8
+   662 0001:000CB1B4   663 0001:000CB1BD   664 0001:000CB1C7   665 0001:000CB1CE
+   695 0001:000CB1D0   696 0001:000CB1E7   697 0001:000CB1EC   698 0001:000CB1F6
+   699 0001:000CB205   701 0001:000CB209   702 0001:000CB219   705 0001:000CB22A
+   706 0001:000CB238   707 0001:000CB245   740 0001:000CB26C   741 0001:000CB283
+   742 0001:000CB28C   743 0001:000CB296   744 0001:000CB2A5   746 0001:000CB2A9
+   747 0001:000CB2B7   748 0001:000CB2C4   750 0001:000CB2CF   751 0001:000CB2D6
+   754 0001:000CB2E2   763 0001:000CB308   764 0001:000CB31F   765 0001:000CB328
+   778 0001:000CB332   779 0001:000CB341   781 0001:000CB345   782 0001:000CB351
+   783 0001:000CB356   786 0001:000CB362   787 0001:000CB36F   897 0001:000CB394
+   898 0001:000CB39D   899 0001:000CB3A8   900 0001:000CB3BE   901 0001:000CB3C7
+   904 0001:000CB3CC   905 0001:000CB3CF   906 0001:000CB3E0   907 0001:000CB3E7
+   913 0001:000CB3EC   914 0001:000CB402   915 0001:000CB406   916 0001:000CB41C
+   917 0001:000CB421   918 0001:000CB42C   919 0001:000CB43B   920 0001:000CB449
+   923 0001:000CB490   924 0001:000CB49B   925 0001:000CB4AA   926 0001:000CB4B6
+   930 0001:000CB4C4   931 0001:000CB4C5   932 0001:000CB4CD   996 0001:000CB4D0
+   997 0001:000CB4D3   998 0001:000CB4DE  1001 0001:000CB4E4  1002 0001:000CB4F9
+  1003 0001:000CB508  1004 0001:000CB513  1007 0001:000CB530  1008 0001:000CB53B
+  1009 0001:000CB547  1010 0001:000CB54F  1018 0001:000CB560  1019 0001:000CB56F
+  1020 0001:000CB572  1022 0001:000CB587  1023 0001:000CB598  1024 0001:000CB5A6
+  1026 0001:000CB5AB  1020 0001:000CB5AC  1027 0001:000CB5AF  1031 0001:000CB5B8
+  1032 0001:000CB5C0  1038 0001:000CB5C4  1039 0001:000CB5CB  1040 0001:000CB5D6
+  1041 0001:000CB5DC  1042 0001:000CB5E4  1045 0001:000CB5E8  1046 0001:000CB5EB
+  1047 0001:000CB5F6  1186 0001:000CB63C  1187 0001:000CB640  1188 0001:000CB64B
+  1205 0001:000CB650  1206 0001:000CB66B  1207 0001:000CB67D  1208 0001:000CB682
+  1209 0001:000CB69A  1210 0001:000CB6BD  1211 0001:000CB6CF  1213 0001:000CB700
+  1214 0001:000CB71C  1215 0001:000CB726  1216 0001:000CB72F  1217 0001:000CB738
+  1218 0001:000CB744  1219 0001:000CB750  1236 0001:000CB778  1237 0001:000CB7A4
+  1238 0001:000CB7AB  1239 0001:000CB7BE  1241 0001:000CB7C6  1242 0001:000CB7D0
+  1243 0001:000CB7DE  1244 0001:000CB7F4  1245 0001:000CB80A  1248 0001:000CB855
+  1249 0001:000CB86F  1250 0001:000CB87D  1251 0001:000CB887  1253 0001:000CB89D
+  1256 0001:000CB8AD  1404 0001:000CB928  1406 0001:000CB946
+
+Line numbers for VAUtils(..\VA\VAUtils.pas) segment .itext
+
+  1400 0002:0000083C  1401 0002:00000856  1403 0002:0000085B
+
+Line numbers for ORCtrls(..\CPRS-Lib\ORCtrls.pas) segment .text
+
+  1107 0001:000E548C  1110 0001:000E548D  1111 0001:000E5490  1113 0001:000E5499
+  1114 0001:000E549A  1117 0001:000E54A4  1118 0001:000E54AD  1126 0001:000E54B4
+  1127 0001:000E54BD  1128 0001:000E54C7  1129 0001:000E54D5  1130 0001:000E54E2
+  1131 0001:000E54F0  1132 0001:000E5504  1134 0001:000E552E  1137 0001:000E5550
+  1139 0001:000E5563  1147 0001:000E55B0  1148 0001:000E55B8  1149 0001:000E55C1
+  1150 0001:000E55CA  1151 0001:000E55D1  1152 0001:000E55D4  1153 0001:000E55DB
+  1154 0001:000E55E3  1159 0001:000E55EC  1160 0001:000E55EE  1161 0001:000E55F4
+  1166 0001:000E55F8  1167 0001:000E55FA  1168 0001:000E5600  1175 0001:000E5604
+  1176 0001:000E5615  1177 0001:000E561A  1178 0001:000E5623  1181 0001:000E5632
+  1182 0001:000E5633  1183 0001:000E5636  1179 0001:000E5643  1185 0001:000E564C
+  1186 0001:000E5659  1187 0001:000E5676  1194 0001:000E5680  1195 0001:000E56AB
+  1196 0001:000E56B0  1197 0001:000E56BC  1200 0001:000E56CB  1201 0001:000E56CC
+  1202 0001:000E56CF  1198 0001:000E56DC  1204 0001:000E56E5  1205 0001:000E56F2
+  1206 0001:000E56F7  1207 0001:000E5722  1208 0001:000E5763  1214 0001:000E5790
+  1215 0001:000E57B0  1216 0001:000E57B7  1217 0001:000E57E8  1218 0001:000E581D
+  1225 0001:000E5850  1226 0001:000E5878  1228 0001:000E588A  1230 0001:000E589B
+  1231 0001:000E58BC  1234 0001:000E58DA  1235 0001:000E58E5  1237 0001:000E58F5
+  1238 0001:000E590A  1240 0001:000E5918  1241 0001:000E591A  1243 0001:000E591F
+  1244 0001:000E5933  1248 0001:000E596C  1249 0001:000E5976  1250 0001:000E5978
+  1251 0001:000E5994  1257 0001:000E599C  1258 0001:000E59A3  1259 0001:000E59B4
+  1260 0001:000E59C8  1266 0001:000E59D0  1267 0001:000E59F2  1268 0001:000E59F8
+  1272 0001:000E59FC  1273 0001:000E5A02  1274 0001:000E5A1E  1278 0001:000E5A20
+  1279 0001:000E5A32  1280 0001:000E5A3B  1281 0001:000E5A54  1285 0001:000E5A70
+  1286 0001:000E5A7B  1287 0001:000E5A86  1288 0001:000E5A92  1289 0001:000E5A99
+  1293 0001:000E5AA8  1294 0001:000E5AAB  1295 0001:000E5AB2  1296 0001:000E5AB9
+  1297 0001:000E5AC9  1298 0001:000E5ACD  1306 0001:000E5AD0  1307 0001:000E5AEE
+  1308 0001:000E5AF8  1310 0001:000E5B01  1311 0001:000E5B11  1312 0001:000E5B26
+  1316 0001:000E5B5C  1318 0001:000E5B8E  1322 0001:000E5BB4  1323 0001:000E5BB7
+  1327 0001:000E5BC0  1328 0001:000E5BD5  1329 0001:000E5BDC  1330 0001:000E5BEB
+  1332 0001:000E5BF2  1338 0001:000E5BF4  1339 0001:000E5BFD  1340 0001:000E5C09
+  1341 0001:000E5C13  1343 0001:000E5C18  1344 0001:000E5C24  1348 0001:000E5C2B
+  1349 0001:000E5C46  1350 0001:000E5C53  1351 0001:000E5C6B  1353 0001:000E5C6F
+  1355 0001:000E5C74  1356 0001:000E5C78  1359 0001:000E5C8F  1360 0001:000E5C96
+  1362 0001:000E5C98  1353 0001:000E5C99  1363 0001:000E5C9E  1370 0001:000E5CA8
+  1371 0001:000E5CD8  1372 0001:000E5CE9  1373 0001:000E5CFD  1375 0001:000E5D06
+  1376 0001:000E5D19  1379 0001:000E5D2E  1380 0001:000E5D48  1382 0001:000E5D5B
+  1383 0001:000E5D89  1385 0001:000E5DC4  1387 0001:000E5DCB  1390 0001:000E5E1A
+  1391 0001:000E5E29  1392 0001:000E5E30  1393 0001:000E5E35  1394 0001:000E5E3B
+  1396 0001:000E5E4A  1397 0001:000E5E4D  1399 0001:000E5E50  1400 0001:000E5E54
+  1402 0001:000E5E59  1403 0001:000E5E5B  1405 0001:000E5E6E  1407 0001:000E5E7C
+  1408 0001:000E5E83  1411 0001:000E5E89  1413 0001:000E5E8B  1414 0001:000E5E92
+  1415 0001:000E5EAE  1417 0001:000E5ED4  1418 0001:000E5EDE  1423 0001:000E5F40
+  1424 0001:000E5F53  1425 0001:000E5F59  1426 0001:000E5F5F  1427 0001:000E5F65
+  1428 0001:000E5F77  1429 0001:000E5F9A  1430 0001:000E5FA5  1462 0001:000E628C
+  1463 0001:000E62AD  1465 0001:000E62C3  1466 0001:000E62D9  1467 0001:000E62DF
+  1469 0001:000E62F0  1470 0001:000E62FF  1472 0001:000E631E  1473 0001:000E6328
+  1480 0001:000E6350  1481 0001:000E6354  1483 0001:000E635D  1485 0001:000E6361
+  1486 0001:000E6367  1487 0001:000E636C  1483 0001:000E636F  1488 0001:000E6373
+  1481 0001:000E6376  1489 0001:000E637B  1496 0001:000E6380  1497 0001:000E639F
+  1498 0001:000E63A6  1499 0001:000E63AA  1500 0001:000E63C3  1501 0001:000E63CA
+  1502 0001:000E63D7  1507 0001:000E6400  1508 0001:000E6404  1509 0001:000E640B
+  1510 0001:000E6413  1511 0001:000E6417  1512 0001:000E641B  1513 0001:000E6423
+  1514 0001:000E6426  1517 0001:000E642C  1518 0001:000E6444  1519 0001:000E6453
+  1520 0001:000E6456  1521 0001:000E6462  1522 0001:000E6466  1527 0001:000E6484
+  1528 0001:000E648B  1529 0001:000E6492  1530 0001:000E649C  1531 0001:000E64A0
+  1532 0001:000E64A4  1533 0001:000E64AE  1534 0001:000E64B1  1537 0001:000E64B8
+  1538 0001:000E64C3  1539 0001:000E64CB  1540 0001:000E64D7  1543 0001:000E64E8
+  1544 0001:000E64F1  1545 0001:000E64F8  1546 0001:000E6504  1549 0001:000E6508
+  1550 0001:000E650B  1551 0001:000E6512  1552 0001:000E651A  1555 0001:000E651C
+  1556 0001:000E6522  1557 0001:000E6529  1558 0001:000E6533  1561 0001:000E6538
+  1562 0001:000E653E  1563 0001:000E6545  1564 0001:000E654F  1569 0001:000E6554
+  1570 0001:000E6577  1571 0001:000E657E  1572 0001:000E658B  1573 0001:000E6592
+  1574 0001:000E6596  1575 0001:000E65AF  1576 0001:000E65B6  1582 0001:000E65DC
+  1583 0001:000E65FF  1584 0001:000E660C  1585 0001:000E6613  1586 0001:000E6617
+  1587 0001:000E6630  1588 0001:000E6637  1591 0001:000E665C  1592 0001:000E6663
+  1593 0001:000E666D  1597 0001:000E6674  1598 0001:000E6678  1600 0001:000E6681
+  1601 0001:000E6689  1610 0001:000E668C  1611 0001:000E66AF  1612 0001:000E66B9
+  1613 0001:000E66BF  1614 0001:000E66D5  1615 0001:000E66DC  1616 0001:000E66F2
+  1617 0001:000E6701  1618 0001:000E670F  1619 0001:000E6719  1620 0001:000E672F
+  1621 0001:000E675A  1622 0001:000E6785  1623 0001:000E6791  1625 0001:000E679B
+  1626 0001:000E67AA  1627 0001:000E67B6  1628 0001:000E67FA  1629 0001:000E6806
+  1631 0001:000E6856  1632 0001:000E686F  1633 0001:000E687C  1634 0001:000E688D
+  1636 0001:000E68B2  1640 0001:000E68C1  1641 0001:000E68F3  1645 0001:000E6925
+  1625 0001:000E6926  1646 0001:000E692F  1647 0001:000E693B  1648 0001:000E694A
+  1651 0001:000E6976  1654 0001:000E6986  1660 0001:000E6ACC  1661 0001:000E6ADE
+  1662 0001:000E6AE7  1663 0001:000E6AEC  1664 0001:000E6AF6  1665 0001:000E6B00
+  1666 0001:000E6B07  1667 0001:000E6B11  1668 0001:000E6B18  1669 0001:000E6B1F
+  1670 0001:000E6B26  1671 0001:000E6B2D  1672 0001:000E6B34  1673 0001:000E6B3B
+  1674 0001:000E6B45  1675 0001:000E6B4F  1676 0001:000E6B58  1677 0001:000E6B5F
+  1678 0001:000E6B6F  1679 0001:000E6B76  1680 0001:000E6B7D  1681 0001:000E6B84
+  1682 0001:000E6B8B  1683 0001:000E6B92  1684 0001:000E6B9A  1685 0001:000E6BA1
+  1689 0001:000E6BC8  1690 0001:000E6BD3  1691 0001:000E6BDE  1692 0001:000E6BF1
+  1693 0001:000E6BF8  1694 0001:000E6BFD  1695 0001:000E6C09  1699 0001:000E6C18
+  1700 0001:000E6C1B  1701 0001:000E6C22  1702 0001:000E6C29  1710 0001:000E6C2C
+  1711 0001:000E6C30  1712 0001:000E6C37  1713 0001:000E6C39  1715 0001:000E6C43
+  1716 0001:000E6C47  1718 0001:000E6C4B  1719 0001:000E6C52  1721 0001:000E6C5C
+  1722 0001:000E6C5F  1724 0001:000E6C64  1725 0001:000E6C6B  1726 0001:000E6C7B
+  1730 0001:000E6C80  1731 0001:000E6C83  1732 0001:000E6C8A  1733 0001:000E6CA5
+  1734 0001:000E6CAC  1739 0001:000E6CB0  1740 0001:000E6CB3  1741 0001:000E6CBA
+  1742 0001:000E6CC1  1743 0001:000E6CC8  1749 0001:000E6CCC  1750 0001:000E6CF9
+  1752 0001:000E6D03  1753 0001:000E6D0A  1754 0001:000E6D15  1753 0001:000E6D58
+  1755 0001:000E6D5B  1759 0001:000E6D71  1761 0001:000E6D90  1767 0001:000E6DC4
+  1768 0001:000E6DE5  1769 0001:000E6DE9  1771 0001:000E6DFF  1772 0001:000E6E11
+  1773 0001:000E6E16  1774 0001:000E6E22  1773 0001:000E6E48  1775 0001:000E6E4B
+  1776 0001:000E6E57  1777 0001:000E6E61  1779 0001:000E6E76  1786 0001:000E6EA0
+  1787 0001:000E6EB0  1788 0001:000E6EB7  1789 0001:000E6EBE  1790 0001:000E6ED4
+  1791 0001:000E6EDB  1793 0001:000E6EDF  1795 0001:000E6EE9  1798 0001:000E6EF4
+  1799 0001:000E6EFA  1800 0001:000E6EFD  1802 0001:000E6F09  1803 0001:000E6F10
+  1817 0001:000E6F14  1818 0001:000E6F1A  1819 0001:000E6F23  1821 0001:000E6F2C
+  1822 0001:000E6F2F  1823 0001:000E6F33  1825 0001:000E6F3B  1827 0001:000E6F40
+  1833 0001:000E6F44  1834 0001:000E6F4A  1836 0001:000E6F53  1837 0001:000E6F5A
+  1838 0001:000E6F72  1839 0001:000E6F79  1840 0001:000E6F7D  1841 0001:000E6F83
+  1842 0001:000E6F86  1843 0001:000E6FB1  1845 0001:000E6FBD  1846 0001:000E6FC6
+  1853 0001:000E6FCC  1854 0001:000E6FE6  1855 0001:000E6FEF  1857 0001:000E7002
+  1858 0001:000E7009  1859 0001:000E7021  1860 0001:000E7028  1862 0001:000E702C
+  1863 0001:000E7033  1864 0001:000E7044  1865 0001:000E7056  1866 0001:000E7065
+  1870 0001:000E706E  1871 0001:000E7078  1874 0001:000E707D  1880 0001:000E70A0
+  1881 0001:000E70C0  1882 0001:000E70C9  1884 0001:000E70D8  1885 0001:000E70DF
+  1886 0001:000E70F7  1887 0001:000E70FB  1889 0001:000E7123  1890 0001:000E7128
+  1892 0001:000E712F  1899 0001:000E7154  1900 0001:000E715B  1902 0001:000E7168
+  1904 0001:000E7171  1906 0001:000E7183  1907 0001:000E718C  1908 0001:000E71A1
+  1911 0001:000E71A6  1912 0001:000E71B8  1914 0001:000E71BA  1915 0001:000E71BF
+  1916 0001:000E71C3  1918 0001:000E71D1  1919 0001:000E71D8  1920 0001:000E71E1
+  1922 0001:000E71E8  1923 0001:000E71F2  1925 0001:000E71F8  1926 0001:000E71FF
+  1927 0001:000E7216  1929 0001:000E721F  1931 0001:000E722E  1932 0001:000E7237
+  1938 0001:000E723C  1939 0001:000E7243  1941 0001:000E7250  1943 0001:000E7259
+  1945 0001:000E7262  1946 0001:000E7269  1950 0001:000E7271  1952 0001:000E727E
+  1953 0001:000E728F  1955 0001:000E7298  1958 0001:000E729E  1959 0001:000E72B0
+  1961 0001:000E72B2  1962 0001:000E72B7  1963 0001:000E72BB  1965 0001:000E72C9
+  1966 0001:000E72D0  1967 0001:000E72D9  1968 0001:000E72E0  1969 0001:000E72EA
+  1971 0001:000E72F0  1972 0001:000E72F7  1973 0001:000E730E  1975 0001:000E7317
+  1977 0001:000E7326  1978 0001:000E732F  1984 0001:000E7334  1987 0001:000E733A
+  1988 0001:000E7341  1989 0001:000E7359  1990 0001:000E7360  1992 0001:000E7364
+  1993 0001:000E7376  1994 0001:000E737C  1997 0001:000E7387  1998 0001:000E738E
+  1999 0001:000E7397  2000 0001:000E739E  2001 0001:000E73A8  2008 0001:000E73AC
+  2009 0001:000E73B4  2011 0001:000E73BD  2012 0001:000E73CD  2014 0001:000E73D7
+  2015 0001:000E73DE  2016 0001:000E73F3  2017 0001:000E73FA  2018 0001:000E7405
+  2012 0001:000E7406  2019 0001:000E7409  2022 0001:000E7419  2023 0001:000E7422
+  2024 0001:000E742A  2025 0001:000E7433  2029 0001:000E7438  2030 0001:000E743B
+  2031 0001:000E7442  2032 0001:000E744C  2036 0001:000E7450  2037 0001:000E7453
+  2038 0001:000E745A  2039 0001:000E7472  2040 0001:000E7479  2047 0001:000E747C
+  2049 0001:000E7482  2052 0001:000E74E6  2053 0001:000E7511  2054 0001:000E751A
+  2056 0001:000E7527  2058 0001:000E7532  2059 0001:000E7546  2061 0001:000E7567
+  2069 0001:000E757B  2070 0001:000E7584  2072 0001:000E75B1  2075 0001:000E75DB
+  2076 0001:000E75F0  2077 0001:000E7605  2078 0001:000E7613  2079 0001:000E7621
+  2080 0001:000E7631  2081 0001:000E7641  2083 0001:000E764A  2084 0001:000E764F
+  2094 0001:000E7654  2095 0001:000E765E  2097 0001:000E766B  2098 0001:000E7672
+  2099 0001:000E767D  2101 0001:000E7695  2103 0001:000E76BC  2104 0001:000E76C9
+  2105 0001:000E76E5  2106 0001:000E76F2  2111 0001:000E76F9  2112 0001:000E7717
+  2114 0001:000E7742  2116 0001:000E774F  2118 0001:000E779D  2119 0001:000E77A6
+  2121 0001:000E77D5  2124 0001:000E77E3  2125 0001:000E781E  2126 0001:000E7827
+  2128 0001:000E7850  2132 0001:000E785E  2134 0001:000E7867  2135 0001:000E7875
+  2136 0001:000E787D  2137 0001:000E7888  2138 0001:000E788D  2140 0001:000E78B4
+  2141 0001:000E78C7  2145 0001:000E78DF  2146 0001:000E78E8  2151 0001:000E78F0
+  2152 0001:000E78F6  2153 0001:000E791E  2154 0001:000E7925  2155 0001:000E792E
+  2163 0001:000E7934  2164 0001:000E793E  2166 0001:000E7954  2167 0001:000E795D
+  2169 0001:000E7974  2171 0001:000E799B  2172 0001:000E79A8  2175 0001:000E79BD
+  2176 0001:000E79C0  2178 0001:000E79CC  2179 0001:000E79D5  2186 0001:000E79DC
+  2187 0001:000E79E5  2189 0001:000E79F2  2193 0001:000E7A02  2194 0001:000E7A2B
+  2196 0001:000E7A71  2198 0001:000E7A7E  2200 0001:000E7ACC  2201 0001:000E7AD5
+  2203 0001:000E7B04  2206 0001:000E7B0F  2207 0001:000E7B4A  2208 0001:000E7B53
+  2210 0001:000E7B7C  2214 0001:000E7B85  2215 0001:000E7B8E  2220 0001:000E7B94
+  2221 0001:000E7B9A  2222 0001:000E7BA4  2223 0001:000E7BB5  2224 0001:000E7BBE
+  2228 0001:000E7BC4  2229 0001:000E7BC7  2230 0001:000E7BCE  2231 0001:000E7BDE
+  2236 0001:000E7BE0  2237 0001:000E7BE6  2238 0001:000E7BEF  2239 0001:000E7C08
+  2240 0001:000E7C18  2246 0001:000E7C1C  2247 0001:000E7C1F  2248 0001:000E7C26
+  2249 0001:000E7C37  2255 0001:000E7C3C  2256 0001:000E7C43  2257 0001:000E7C4A
+  2258 0001:000E7C51  2259 0001:000E7C57  2260 0001:000E7C73  2261 0001:000E7C8E
+  2264 0001:000E7C98  2265 0001:000E7C9B  2266 0001:000E7CA2  2267 0001:000E7CAC
+  2271 0001:000E7CB0  2272 0001:000E7CB3  2274 0001:000E7CC5  2275 0001:000E7CD5
+  2276 0001:000E7CEB  2277 0001:000E7CFE  2279 0001:000E7D16  2283 0001:000E7D18
+  2289 0001:000E7D1B  2290 0001:000E7D3B  2291 0001:000E7D4B  2292 0001:000E7D52
+  2298 0001:000E7D54  2299 0001:000E7D58  2301 0001:000E7D61  2302 0001:000E7D6D
+  2303 0001:000E7D7A  2306 0001:000E7D80  2307 0001:000E7D8A  2308 0001:000E7D91
+  2309 0001:000E7D98  2316 0001:000E7D9C  2317 0001:000E7DA1  2319 0001:000E7DAA
+  2320 0001:000E7DBA  2322 0001:000E7DC4  2323 0001:000E7DCB  2324 0001:000E7DE0
+  2325 0001:000E7DE7  2326 0001:000E7DEB  2327 0001:000E7DF6  2320 0001:000E7DF7
+  2328 0001:000E7DFA  2331 0001:000E7E01  2339 0001:000E7E08  2340 0001:000E7E11
+  2341 0001:000E7E3A  2342 0001:000E7E44  2343 0001:000E7E4B  2344 0001:000E7E60
+  2345 0001:000E7E6A  2347 0001:000E7E6E  2349 0001:000E7E77  2350 0001:000E7E88
+  2351 0001:000E7E8E  2352 0001:000E7E94  2357 0001:000E7E9A  2358 0001:000E7EA0
+  2360 0001:000E7EA6  2363 0001:000E7EAA  2364 0001:000E7EB7  2365 0001:000E7ECB
+  2366 0001:000E7ED5  2367 0001:000E7EE5  2368 0001:000E7EEF  2369 0001:000E7EF4
+  2372 0001:000E7EFC  2374 0001:000E7F02  2375 0001:000E7F07  2378 0001:000E7F1A
+  2380 0001:000E7F1D  2381 0001:000E7F26  2388 0001:000E7F2C  2389 0001:000E7F41
+  2390 0001:000E7F4B  2391 0001:000E7F5C  2393 0001:000E7F77  2394 0001:000E7F80
+  2396 0001:000E7F84  2397 0001:000E7F8D  2399 0001:000E7F98  2402 0001:000E7FA6
+  2412 0001:000E7FB0  2413 0001:000E7FC3  2414 0001:000E7FD1  2418 0001:000E7FF2
+  2419 0001:000E800F  2420 0001:000E8015  2422 0001:000E801B  2424 0001:000E8044
+  2425 0001:000E804E  2426 0001:000E8055  2427 0001:000E805F  2430 0001:000E8064
+  2432 0001:000E807A  2433 0001:000E8085  2434 0001:000E80A2  2436 0001:000E80AE
+  2438 0001:000E80DB  2439 0001:000E8107  2440 0001:000E811B  2443 0001:000E8123
+  2444 0001:000E812D  2447 0001:000E8137  2453 0001:000E8140  2454 0001:000E8163
+  2456 0001:000E8175  2457 0001:000E817E  2459 0001:000E818E  2460 0001:000E819F
+  2462 0001:000E81B4  2463 0001:000E81C0  2466 0001:000E81E4  2467 0001:000E81EA
+  2468 0001:000E81F7  2469 0001:000E81FE  2470 0001:000E8207  2474 0001:000E820C
+  2475 0001:000E8215  2476 0001:000E8218  2477 0001:000E821C  2478 0001:000E8221
+  2490 0001:000E8224  2491 0001:000E824D  2492 0001:000E8257  2493 0001:000E8270
+  2496 0001:000E8298  2497 0001:000E82A6  2499 0001:000E82BA  2500 0001:000E82C9
+  2501 0001:000E82D8  2503 0001:000E82DE  2504 0001:000E82E2  2505 0001:000E82EC
+  2506 0001:000E82F3  2507 0001:000E8308  2509 0001:000E8312  2511 0001:000E831F
+  2513 0001:000E8327  2516 0001:000E8333  2517 0001:000E833C  2519 0001:000E8351
+  2523 0001:000E8366  2524 0001:000E836F  2526 0001:000E8381  2530 0001:000E8393
+  2531 0001:000E839C  2533 0001:000E83AE  2539 0001:000E83C0  2540 0001:000E83C9
+  2542 0001:000E83DB  2544 0001:000E83EB  2545 0001:000E83F9  2546 0001:000E83FF
+  2547 0001:000E8403  2548 0001:000E841B  2551 0001:000E842F  2552 0001:000E8438
+  2554 0001:000E844F  2555 0001:000E845B  2557 0001:000E8477  2559 0001:000E8486
+  2560 0001:000E8492  2561 0001:000E849F  2562 0001:000E84AA  2563 0001:000E84B5
+  2557 0001:000E84B6  2564 0001:000E84B9  2566 0001:000E84F9  2568 0001:000E8508
+  2569 0001:000E8514  2570 0001:000E8521  2571 0001:000E852C  2572 0001:000E8537
+  2566 0001:000E8538  2575 0001:000E853D  2578 0001:000E856C  2581 0001:000E8594
+  2582 0001:000E859B  2584 0001:000E85A4  2586 0001:000E85AE  2587 0001:000E85AF
+  2588 0001:000E85C3  2589 0001:000E85CC  2592 0001:000E85E2  2593 0001:000E85FD
+  2603 0001:000E8604  2604 0001:000E860F  2606 0001:000E861C  2608 0001:000E862C
+  2609 0001:000E8642  2610 0001:000E864E  2611 0001:000E865C  2614 0001:000E867E
+  2615 0001:000E8689  2616 0001:000E868F  2617 0001:000E8696  2619 0001:000E869A
+  2620 0001:000E86B4  2621 0001:000E86D0  2622 0001:000E86DE  2624 0001:000E86EA
+  2626 0001:000E86F4  2627 0001:000E870A  2628 0001:000E8721  2630 0001:000E872F
+  2634 0001:000E873A  2635 0001:000E8742  2637 0001:000E8745  2632 0001:000E8746
+  2642 0001:000E876E  2643 0001:000E8795  2644 0001:000E87A3  2645 0001:000E87A9
+  2646 0001:000E87C1  2647 0001:000E87CD  2652 0001:000E87EE  2653 0001:000E87FD
+  2654 0001:000E880C  2655 0001:000E8823  2662 0001:000E883B  2663 0001:000E8844
+  2664 0001:000E8859  2674 0001:000E8860  2676 0001:000E886B  2679 0001:000E8898
+  2681 0001:000E88AF  2682 0001:000E88CC  2684 0001:000E88D5  2685 0001:000E88DE
+  2688 0001:000E88E9  2689 0001:000E88FD  2690 0001:000E88FE  2686 0001:000E88FF
+  2694 0001:000E8916  2695 0001:000E8919  2697 0001:000E8946  2698 0001:000E8964
+  2702 0001:000E896C  2703 0001:000E898E  2704 0001:000E89A3  2705 0001:000E89E0
+  2706 0001:000E89EE  2710 0001:000E8A1C  2711 0001:000E8A3C  2712 0001:000E8A49
+  2713 0001:000E8A90  2714 0001:000E8A9E  2720 0001:000E8ACC  2721 0001:000E8AD5
+  2722 0001:000E8ADC  2723 0001:000E8AF2  2725 0001:000E8B05  2726 0001:000E8B11
+  2727 0001:000E8B14  2728 0001:000E8B16  2722 0001:000E8B17  2729 0001:000E8B1A
+  2736 0001:000E8B28  2737 0001:000E8B49  2738 0001:000E8B4D  2739 0001:000E8B54
+  2740 0001:000E8B73  2742 0001:000E8BA8  2743 0001:000E8BB4  2744 0001:000E8BB7
+  2745 0001:000E8BBB  2746 0001:000E8BBD  2740 0001:000E8BBE  2747 0001:000E8BC1
+  2749 0001:000E8BD0  2750 0001:000E8BDA  2752 0001:000E8BEA  2756 0001:000E8C14
+  2757 0001:000E8C30  2758 0001:000E8C85  2764 0001:000E8CB0  2765 0001:000E8CD4
+  2766 0001:000E8CDB  2767 0001:000E8CF2  2769 0001:000E8D28  2770 0001:000E8D34
+  2771 0001:000E8D37  2772 0001:000E8D39  2766 0001:000E8D3A  2773 0001:000E8D3F
+  2835 0001:000E8D6C  2836 0001:000E8D72  2837 0001:000E8D7B  2839 0001:000E8D90
+  2840 0001:000E8DA2  2847 0001:000E8DA8  2848 0001:000E8DB7  2849 0001:000E8DCB
+  2850 0001:000E8DD9  2852 0001:000E8DF5  2849 0001:000E8E0E  2853 0001:000E8E11
+  2855 0001:000E8E1A  2859 0001:000E8E3B  2861 0001:000E8E5A  2862 0001:000E8E61
+  2863 0001:000E8E7A  2864 0001:000E8E81  2868 0001:000E8EC0  2870 0001:000E8EC8
+  2871 0001:000E8ECE  2873 0001:000E8ED3  2880 0001:000E8ED4  2881 0001:000E8EE0
+  2882 0001:000E8EEE  2883 0001:000E8EFD  2885 0001:000E8F06  2886 0001:000E8F18
+  2887 0001:000E8F24  2889 0001:000E8F3B  2890 0001:000E8F4C  2891 0001:000E8F5D
+  2887 0001:000E8F61  2895 0001:000E8F66  2896 0001:000E8F78  2897 0001:000E8F84
+  2900 0001:000E8F97  2901 0001:000E8FA4  2902 0001:000E8FBA  2897 0001:000E8FBE
+  2904 0001:000E8FC1  2905 0001:000E8FCA  2906 0001:000E8FDD  2907 0001:000E8FE4
+  2911 0001:000E8FF0  2912 0001:000E8FF4  2918 0001:000E8FF8  2919 0001:000E8FFC
+  2921 0001:000E9004  2922 0001:000E9011  2923 0001:000E9027  2924 0001:000E902F
+  2926 0001:000E9033  2930 0001:000E903E  2931 0001:000E9047  2932 0001:000E9057
+  2933 0001:000E9060  2934 0001:000E9069  2937 0001:000E9072  2940 0001:000E90B8
+  2941 0001:000E90D8  2943 0001:000E90E8  2944 0001:000E90F6  2945 0001:000E9105
+  2946 0001:000E910E  2948 0001:000E9117  2949 0001:000E9120  2952 0001:000E9129
+  2956 0001:000E914C  2957 0001:000E9153  2961 0001:000E9154  2962 0001:000E9162
+  2963 0001:000E9169  2964 0001:000E9176  2965 0001:000E917D  2966 0001:000E9182
+  2971 0001:000E9184  2972 0001:000E918A  2973 0001:000E918F  2977 0001:000E9190
+  2978 0001:000E9196  2979 0001:000E91A8  2983 0001:000E91AC  2984 0001:000E91AF
+  2985 0001:000E91C2  2986 0001:000E91C9  2997 0001:000E91CC  2998 0001:000E91EB
+  2999 0001:000E91EF  3000 0001:000E91F4  3001 0001:000E91F9  3002 0001:000E9208
+  3003 0001:000E9216  3004 0001:000E9222  3005 0001:000E922A  3006 0001:000E9237
+  3007 0001:000E9246  3008 0001:000E9255  3009 0001:000E925F  3010 0001:000E9269
+  3012 0001:000E9285  3013 0001:000E92A0  3014 0001:000E92AA  3010 0001:000E92AD
+  3015 0001:000E92B0  3016 0001:000E92C2  3017 0001:000E92CF  3018 0001:000E92D9
+  3020 0001:000E92F0  3021 0001:000E92FD  3023 0001:000E9301  3025 0001:000E9326
+  3026 0001:000E9330  3027 0001:000E9348  3028 0001:000E9352  3030 0001:000E9356
+  3031 0001:000E935F  3034 0001:000E9366  3018 0001:000E9369  3036 0001:000E9379
+  3037 0001:000E9381  3038 0001:000E9389  3039 0001:000E9398  3041 0001:000E93AD
+  3045 0001:000E93D4  3046 0001:000E93D7  3048 0001:000E93DF  3049 0001:000E93E4
+  3052 0001:000E93ED  3053 0001:000E93F4  3054 0001:000E93FD  3057 0001:000E9406
+  3063 0001:000E9408  3064 0001:000E9411  3065 0001:000E9426  3066 0001:000E942A
+  3067 0001:000E9433  3068 0001:000E9440  3069 0001:000E9443  3070 0001:000E944C
+  3071 0001:000E9466  3072 0001:000E9474  3076 0001:000E947C  3077 0001:000E9481
+  3078 0001:000E9488  3079 0001:000E949F  3080 0001:000E94B5  3081 0001:000E94BE
+  3082 0001:000E94CB  3083 0001:000E94DE  3084 0001:000E94E5  3085 0001:000E94FB
+  3086 0001:000E9505  3087 0001:000E9511  3088 0001:000E951E  3092 0001:000E9528
+  3093 0001:000E952B  3094 0001:000E9532  3095 0001:000E953D  3096 0001:000E9545
+  3104 0001:000E9548  3105 0001:000E956D  3110 0001:000E957C  3113 0001:000E95D7
+  3114 0001:000E95F0  3115 0001:000E9611  3116 0001:000E9615  3117 0001:000E9627
+  3118 0001:000E963C  3120 0001:000E964F  3121 0001:000E9662  3122 0001:000E9677
+  3123 0001:000E96BD  3125 0001:000E96FD  3126 0001:000E9712  3127 0001:000E9757
+  3130 0001:000E9794  3136 0001:000E97CC  3137 0001:000E97F4  3139 0001:000E9801
+  3141 0001:000E980A  3142 0001:000E9816  3143 0001:000E981B  3145 0001:000E9845
+  3146 0001:000E984E  3148 0001:000E9864  3149 0001:000E98C9  3150 0001:000E98D5
+  3151 0001:000E98F3  3153 0001:000E9907  3156 0001:000E993C  3157 0001:000E9940
+  3159 0001:000E9949  3160 0001:000E9960  3162 0001:000E9977  3168 0001:000E99E0
+  3169 0001:000E99E4  3170 0001:000E99F7  3171 0001:000E9A17  3172 0001:000E9A2A
+  3173 0001:000E9A34  3184 0001:000E9A38  3185 0001:000E9A44  3187 0001:000E9A5C
+  3186 0001:000E9A9E  3188 0001:000E9AA3  3189 0001:000E9AD3  3191 0001:000E9AFB
+  3193 0001:000E9B00  3194 0001:000E9B2D  3195 0001:000E9B37  3196 0001:000E9B41
+  3197 0001:000E9B4B  3198 0001:000E9B54  3199 0001:000E9B68  3200 0001:000E9B83
+  3201 0001:000E9B9C  3203 0001:000E9BD1  3204 0001:000E9BD8  3206 0001:000E9BE7
+  3207 0001:000E9BF4  3209 0001:000E9BFE  3211 0001:000E9C0D  3212 0001:000E9C36
+  3214 0001:000E9C51  3216 0001:000E9C5D  3217 0001:000E9C6A  3218 0001:000E9C6F
+  3220 0001:000E9CA0  3221 0001:000E9CAC  3222 0001:000E9CC2  3223 0001:000E9CD8
+  3224 0001:000E9CDA  3226 0001:000E9CFE  3227 0001:000E9D00  3228 0001:000E9D02
+  3224 0001:000E9D03  3229 0001:000E9D06  3230 0001:000E9D1E  3231 0001:000E9D54
+  3232 0001:000E9DA0  3233 0001:000E9DB4  3234 0001:000E9DBE  3235 0001:000E9DC9
+  3241 0001:000E9E00  3242 0001:000E9E19  3243 0001:000E9E1E  3244 0001:000E9E31
+  3245 0001:000E9E49  3247 0001:000E9E4D  3246 0001:000E9E4E  3248 0001:000E9E71
+  3256 0001:000E9E9C  3257 0001:000E9EBF  3258 0001:000E9EC9  3259 0001:000E9ED6
+  3261 0001:000E9EDB  3262 0001:000E9EF8  3263 0001:000E9F08  3264 0001:000E9F13
+  3265 0001:000E9F22  3267 0001:000E9F44  3270 0001:000E9F56  3272 0001:000E9F63
+  3273 0001:000E9F68  3274 0001:000E9F7C  3275 0001:000E9F8C  3276 0001:000E9F9C
+  3277 0001:000E9FAE  3282 0001:000E9FBE  3283 0001:000E9FC0  3285 0001:000E9FC6
+  3286 0001:000E9FE5  3287 0001:000E9FF3  3289 0001:000EA008  3290 0001:000EA01B
+  3295 0001:000EA01F  3296 0001:000EA03F  3298 0001:000EA048  3299 0001:000EA050
+  3302 0001:000EA052  3304 0001:000EA056  3305 0001:000EA05F  3307 0001:000EA077
+  3308 0001:000EA07A  3311 0001:000EA083  3312 0001:000EA08B  3316 0001:000EA09D
+  3318 0001:000EA0B9  3319 0001:000EA0D9  3322 0001:000EA0F5  3323 0001:000EA114
+  3324 0001:000EA122  3327 0001:000EA14B  3328 0001:000EA16B  3331 0001:000EA189
+  3332 0001:000EA1A8  3333 0001:000EA1B6  3337 0001:000EA1DF  3338 0001:000EA1F2
+  3344 0001:000EA218  3345 0001:000EA23C  3346 0001:000EA23F  3348 0001:000EA253
+  3350 0001:000EA25C  3351 0001:000EA27B  3354 0001:000EA28C  3356 0001:000EA2B1
+  3358 0001:000EA2EC  3359 0001:000EA2EF  3361 0001:000EA2F1  3354 0001:000EA2F4
+  3362 0001:000EA2F9  3364 0001:000EA2FD  3365 0001:000EA322  3369 0001:000EA32D
+  3377 0001:000EA358  3378 0001:000EA37D  3379 0001:000EA380  3381 0001:000EA394
+  3383 0001:000EA39D  3384 0001:000EA3BC  3386 0001:000EA3C4  3389 0001:000EA3CF
+  3391 0001:000EA3F4  3393 0001:000EA42F  3394 0001:000EA432  3396 0001:000EA434
+  3389 0001:000EA437  3397 0001:000EA43C  3399 0001:000EA47D  3400 0001:000EA488
+  3402 0001:000EA491  3403 0001:000EA49E  3404 0001:000EA4A4  3406 0001:000EA4CF
+  3407 0001:000EA4D8  3409 0001:000EA4EE  3410 0001:000EA55F  3412 0001:000EA56B
+  3414 0001:000EA56F  3415 0001:000EA594  3416 0001:000EA5A1  3417 0001:000EA5AE
+  3421 0001:000EA5B8  3422 0001:000EA5C4  3423 0001:000EA5CA  3424 0001:000EA5D8
+  3425 0001:000EA5F5  3428 0001:000EA634  3429 0001:000EA637  3431 0001:000EA63F
+  3432 0001:000EA645  3434 0001:000EA649  3435 0001:000EA654  3436 0001:000EA65D
+  3437 0001:000EA666  3439 0001:000EA672  3441 0001:000EA67C  3445 0001:000EA680
+  3447 0001:000EA688  3448 0001:000EA68E  3450 0001:000EA696  3456 0001:000EA698
+  3457 0001:000EA69E  3458 0001:000EA6A0  3459 0001:000EA6A4  3460 0001:000EA6AB
+  3461 0001:000EA6C0  3462 0001:000EA6C7  3463 0001:000EA6CB  3465 0001:000EA6D4
+  3466 0001:000EA6D6  3473 0001:000EA6DC  3474 0001:000EA6E8  3475 0001:000EA6EF
+  3476 0001:000EA704  3477 0001:000EA70B  3479 0001:000EA71A  3480 0001:000EA71E
+  3482 0001:000EA724  3483 0001:000EA728  3484 0001:000EA733  3485 0001:000EA747
+  3486 0001:000EA751  3488 0001:000EA761  3494 0001:000EA768  3495 0001:000EA76E
+  3496 0001:000EA775  3497 0001:000EA78A  3498 0001:000EA791  3499 0001:000EA795
+  3501 0001:000EA79C  3502 0001:000EA79E  3510 0001:000EA7A4  3511 0001:000EA7B0
+  3512 0001:000EA7B7  3513 0001:000EA7CC  3514 0001:000EA7D3  3516 0001:000EA7DC
+  3517 0001:000EA7DF  3518 0001:000EA7EA  3519 0001:000EA7FE  3520 0001:000EA808
+  3522 0001:000EA818  3526 0001:000EA820  3527 0001:000EA827  3530 0001:000EA828
+  3531 0001:000EA82E  3532 0001:000EA837  3533 0001:000EA844  3539 0001:000EA848
+  3540 0001:000EA868  3541 0001:000EA86F  3543 0001:000EA878  3544 0001:000EA893
+  3543 0001:000EA8B7  3546 0001:000EA8BA  3552 0001:000EA8E0  3553 0001:000EA901
+  3554 0001:000EA917  3553 0001:000EA941  3555 0001:000EA944  3558 0001:000EA968
+  3559 0001:000EA96B  3560 0001:000EA974  3561 0001:000EA992  3562 0001:000EA998
+  3565 0001:000EA99C  3566 0001:000EA9A2  3567 0001:000EA9AB  3568 0001:000EA9C9
+  3569 0001:000EA9D6  3572 0001:000EA9DC  3573 0001:000EA9DF  3574 0001:000EA9EB
+  3575 0001:000EA9F2  3579 0001:000EA9F4  3580 0001:000EA9FA  3583 0001:000EA9FC
+  3584 0001:000EAA03  3585 0001:000EAA0C  3586 0001:000EAA22  3587 0001:000EAA2B
+  3588 0001:000EAA38  3589 0001:000EAA45  3590 0001:000EAA52  3591 0001:000EAA5C
+  3593 0001:000EAA6B  3594 0001:000EAA79  3596 0001:000EAA84  3597 0001:000EAA91
+  3600 0001:000EAA98  3601 0001:000EAA9E  3602 0001:000EAAAB  3614 0001:000EAAB0
+  3615 0001:000EAAB9  3616 0001:000EAACC  3617 0001:000EAADA  3618 0001:000EAAE0
+  3622 0001:000EAAE4  3623 0001:000EAAEA  3625 0001:000EAAF3  3626 0001:000EAAFA
+  3627 0001:000EAB0A  3629 0001:000EAB1D  3637 0001:000EAB20  3638 0001:000EAB26
+  3639 0001:000EAB51  3646 0001:000EAB54  3647 0001:000EAB66  3648 0001:000EAB6F
+  3649 0001:000EAB78  3650 0001:000EAB81  3651 0001:000EAB8A  3652 0001:000EAB93
+  3653 0001:000EAB9C  3654 0001:000EABA5  3655 0001:000EABAC  3659 0001:000EABC8
+  3660 0001:000EABCE  3661 0001:000EABD7  3663 0001:000EABDD  3664 0001:000EABED
+  3665 0001:000EABF1  3666 0001:000EABF8  3668 0001:000EAC00  3674 0001:000EAC04
+  3675 0001:000EAC0D  3676 0001:000EAC12  3678 0001:000EAC1B  3679 0001:000EAC2C
+  3681 0001:000EAC44  3684 0001:000EAC80  3685 0001:000EAC8C  3687 0001:000EAC8E
+  3678 0001:000EAC8F  3689 0001:000EAC92  3695 0001:000EAC9C  3696 0001:000EAC9F
+  3697 0001:000EACA8  3698 0001:000EACB3  3699 0001:000EACBC  3700 0001:000EACC7
+  3707 0001:000EACCC  3708 0001:000EACD1  3709 0001:000EACD8  3711 0001:000EACE1
+  3712 0001:000EACEC  3714 0001:000EACF0  3715 0001:000EACFA  3716 0001:000EAD03
+  3717 0001:000EAD0C  3718 0001:000EAD19  3719 0001:000EAD24  3720 0001:000EAD2D
+  3721 0001:000EAD39  3724 0001:000EAD46  3732 0001:000EAD4C  3733 0001:000EAD50
+  3734 0001:000EAD5E  3736 0001:000EAD71  3738 0001:000EAD7E  3739 0001:000EAD8E
+  3740 0001:000EAD97  3741 0001:000EADA3  3742 0001:000EADAF  3743 0001:000EADB6
+  3744 0001:000EADBF  3745 0001:000EADCB  3746 0001:000EADDB  3747 0001:000EADEB
+  3748 0001:000EADF4  3749 0001:000EAE00  3750 0001:000EAE0C  3751 0001:000EAE13
+  3752 0001:000EAE1C  3753 0001:000EAE28  3754 0001:000EAE38  3755 0001:000EAE3F
+  3759 0001:000EAE4D  3761 0001:000EAE56  3762 0001:000EAE65  3763 0001:000EAE7D
+  3761 0001:000EAE8C  3764 0001:000EAE91  3765 0001:000EAE98  3767 0001:000EAEA3
+  3771 0001:000EAEC4  3772 0001:000EAEC7  3773 0001:000EAEE7  3782 0001:000EAF60
+  3783 0001:000EAF63  3784 0001:000EAF6A  3785 0001:000EAF78  3788 0001:000EAF7C
+  3789 0001:000EAF84  3790 0001:000EAF8D  3792 0001:000EAF9D  3796 0001:000EAFD7
+  3797 0001:000EAFE4  3800 0001:000EAFEC  3803 0001:000EAFF4  3804 0001:000EAFF8
+  3805 0001:000EAFFF  3807 0001:000EB00F  3809 0001:000EB027  3810 0001:000EB034
+  3811 0001:000EB041  3814 0001:000EB049  3820 0001:000EB04C  3821 0001:000EB063
+  3822 0001:000EB06C  3823 0001:000EB078  3824 0001:000EB084  3825 0001:000EB08F
+  3826 0001:000EB099  3827 0001:000EB0A0  3828 0001:000EB0AA  3829 0001:000EB0C0
+  3830 0001:000EB0C7  3831 0001:000EB0D0  3832 0001:000EB0DD  3833 0001:000EB0F3
+  3834 0001:000EB103  3835 0001:000EB113  3836 0001:000EB123  3837 0001:000EB133
+  3838 0001:000EB13A  3839 0001:000EB14B  3840 0001:000EB15C  3841 0001:000EB172
+  3842 0001:000EB17B  3843 0001:000EB191  3844 0001:000EB1A1  3845 0001:000EB1B1
+  3846 0001:000EB1C1  3847 0001:000EB1C8  3848 0001:000EB1D2  3851 0001:000EB1F0
+  3852 0001:000EB1F6  3853 0001:000EB203  3854 0001:000EB20E  3855 0001:000EB217
+  3859 0001:000EB21C  3860 0001:000EB21F  3861 0001:000EB226  3862 0001:000EB22D
+  3866 0001:000EB230  3867 0001:000EB233  3868 0001:000EB23A  3869 0001:000EB243
+  3873 0001:000EB248  3874 0001:000EB24B  3875 0001:000EB252  3876 0001:000EB259
+  3879 0001:000EB25C  3880 0001:000EB262  3881 0001:000EB26B  3883 0001:000EB274
+  3884 0001:000EB27B  3885 0001:000EB29A  3887 0001:000EB2B2  3891 0001:000EB2B8
+  3892 0001:000EB2C2  3894 0001:000EB2C5  3895 0001:000EB2CB  3904 0001:000EB2CC
+  3905 0001:000EB2D5  3906 0001:000EB2DE  3907 0001:000EB2ED  3909 0001:000EB2F6
+  3910 0001:000EB2F8  3911 0001:000EB2FF  3915 0001:000EB309  3916 0001:000EB30E
+  3917 0001:000EB315  3919 0001:000EB31D  3920 0001:000EB331  3921 0001:000EB34C
+  3922 0001:000EB356  3923 0001:000EB37C  3925 0001:000EB385  3926 0001:000EB38F
+  3930 0001:000EB3C3  3933 0001:000EB3E3  3934 0001:000EB3EA  3939 0001:000EB3F4
+  3940 0001:000EB3FA  3942 0001:000EB3FE  3943 0001:000EB405  3944 0001:000EB416
+  3946 0001:000EB41D  3951 0001:000EB424  3952 0001:000EB42A  3953 0001:000EB440
+  3954 0001:000EB44E  3957 0001:000EB454  3958 0001:000EB457  3960 0001:000EB45B
+  3962 0001:000EB467  3964 0001:000EB470  3965 0001:000EB477  3967 0001:000EB47C
+  3972 0001:000EB484  3973 0001:000EB48A  3975 0001:000EB493  3977 0001:000EB49C
+  3978 0001:000EB4A1  3980 0001:000EB4A8  3983 0001:000EB4B0  3987 0001:000EB4B4
+  3988 0001:000EB4BE  3989 0001:000EB4C5  3992 0001:000EB4C8  3993 0001:000EB4D3
+  3994 0001:000EB4DA  3995 0001:000EB4E6  4001 0001:000EB4F4  4013 0001:000EB4F7
+  4014 0001:000EB4FE  4015 0001:000EB514  4018 0001:000EB518  4019 0001:000EB51B
+  4020 0001:000EB529  4021 0001:000EB53F  4025 0001:000EB544  4026 0001:000EB547
+  4027 0001:000EB550  4029 0001:000EB559  4030 0001:000EB560  4032 0001:000EB57F
+  4033 0001:000EB586  4038 0001:000EB588  4039 0001:000EB59E  4041 0001:000EB5A7
+  4042 0001:000EB5B0  4044 0001:000EB5CB  4045 0001:000EB5E4  4047 0001:000EB5FD
+  4051 0001:000EB620  4052 0001:000EB623  4053 0001:000EB62A  4054 0001:000EB635
+  4059 0001:000EB638  4060 0001:000EB641  4061 0001:000EB648  4062 0001:000EB660
+  4063 0001:000EB665  4070 0001:000EB668  4071 0001:000EB68B  4072 0001:000EB692
+  4073 0001:000EB6DE  4074 0001:000EB70B  4075 0001:000EB719  4076 0001:000EB71C
+  4077 0001:000EB732  4078 0001:000EB742  4079 0001:000EB766  4080 0001:000EB776
+  4081 0001:000EB77F  4082 0001:000EB791  4084 0001:000EB7B0  4085 0001:000EB7B7
+  4086 0001:000EB7C5  4087 0001:000EB7D5  4088 0001:000EB7EF  4089 0001:000EB7FE
+  4090 0001:000EB842  4091 0001:000EB849  4093 0001:000EB84E  4094 0001:000EB855
+  4096 0001:000EB85E  4097 0001:000EB878  4098 0001:000EB886  4099 0001:000EB899
+  4102 0001:000EB8DF  4103 0001:000EB8EE  4105 0001:000EB90A  4106 0001:000EB918
+  4108 0001:000EB934  4109 0001:000EB93B  4110 0001:000EB94A  4111 0001:000EB962
+  4144 0001:000EB9C0  4145 0001:000EB9DB  4147 0001:000EB9F0  4148 0001:000EB9F7
+  4149 0001:000EBA11  4150 0001:000EBA35  4151 0001:000EBA51  4154 0001:000EBA58
+  4155 0001:000EBA67  4156 0001:000EBAA0  4158 0001:000EBAAE  4159 0001:000EBAC6
+  4160 0001:000EBAD5  4161 0001:000EBAED  4165 0001:000EBB20  4166 0001:000EBB21
+  4167 0001:000EBB3B  4174 0001:000EBB40  4176 0001:000EBB66  4177 0001:000EBB8B
+  4178 0001:000EBB92  4179 0001:000EBBB1  4181 0001:000EBBCD  4183 0001:000EBBE8
+  4185 0001:000EBBFD  4187 0001:000EBC0D  4189 0001:000EBC16  4190 0001:000EBC40
+  4191 0001:000EBC61  4192 0001:000EBC69  4194 0001:000EBC6E  4195 0001:000EBC7B
+  4199 0001:000EBC90  4201 0001:000EBCA5  4203 0001:000EBCC9  4204 0001:000EBCE0
+  4205 0001:000EBCE7  4207 0001:000EBCF8  4208 0001:000EBD20  4210 0001:000EBD3C
+  4213 0001:000EBD43  4214 0001:000EBD71  4216 0001:000EBD7B  4217 0001:000EBD82
+  4218 0001:000EBD90  4219 0001:000EBDA1  4220 0001:000EBDBA  4221 0001:000EBDC9
+  4223 0001:000EBDEC  4224 0001:000EBDFA  4225 0001:000EBE08  4226 0001:000EBE19
+  4228 0001:000EBE20  4230 0001:000EBE40  4231 0001:000EBE66  4233 0001:000EBE7F
+  4235 0001:000EBE97  4236 0001:000EBEA8  4239 0001:000EBEB9  4240 0001:000EBEC0
+  4246 0001:000EBF0C  4247 0001:000EBF0F  4248 0001:000EBF12  4250 0001:000EBF29
+  4251 0001:000EBF30  4256 0001:000EBF35  4258 0001:000EBF53  4259 0001:000EBF56
+  4261 0001:000EBF58  4263 0001:000EBF74  4267 0001:000EBF78  4268 0001:000EBF81
+  4270 0001:000EBF88  4271 0001:000EBFB6  4272 0001:000EBFD5  4273 0001:000EBFDC
+  4277 0001:000EBFE4  4278 0001:000EBFE8  4279 0001:000EC002  4284 0001:000EC008
+  4285 0001:000EC021  4286 0001:000EC059  4291 0001:000EC080  4292 0001:000EC08A
+  4302 0001:000EC08C  4303 0001:000EC0AD  4304 0001:000EC0C6  4305 0001:000EC0CE
+  4307 0001:000EC0D6  4308 0001:000EC0EE  4309 0001:000EC0FD  4310 0001:000EC111
+  4311 0001:000EC12C  4313 0001:000EC151  4315 0001:000EC172  4316 0001:000EC17B
+  4317 0001:000EC184  4318 0001:000EC187  4319 0001:000EC1A0  4321 0001:000EC1AF
+  4322 0001:000EC1BA  4324 0001:000EC1D6  4325 0001:000EC1DF  4326 0001:000EC1EC
+  4327 0001:000EC1F7  4328 0001:000EC20C  4331 0001:000EC22B  4332 0001:000EC243
+  4333 0001:000EC250  4334 0001:000EC25A  4335 0001:000EC265  4336 0001:000EC26E
+  4338 0001:000EC2A1  4340 0001:000EC2AF  4346 0001:000EC2D8  4347 0001:000EC2DE
+  4348 0001:000EC2F9  4349 0001:000EC305  4351 0001:000EC30E  4352 0001:000EC325
+  4353 0001:000EC32E  4356 0001:000EC335  4357 0001:000EC343  4358 0001:000EC349
+  4359 0001:000EC352  4361 0001:000EC35B  4362 0001:000EC360  4363 0001:000EC37B
+  4367 0001:000EC380  4368 0001:000EC39B  4369 0001:000EC3A2  4370 0001:000EC3AD
+  4371 0001:000EC3C9  4372 0001:000EC3D0  4373 0001:000EC409  4377 0001:000EC434
+  4378 0001:000EC450  4380 0001:000EC456  4383 0001:000EC462  4384 0001:000EC47C
+  4385 0001:000EC486  4386 0001:000EC495  4389 0001:000EC4B7  4392 0001:000EC4EF
+  4395 0001:000EC518  4396 0001:000EC51F  4397 0001:000EC532  4398 0001:000EC53B
+  4401 0001:000EC544  4402 0001:000EC548  4403 0001:000EC555  4404 0001:000EC55E
+  4407 0001:000EC564  4408 0001:000EC56B  4409 0001:000EC57E  4410 0001:000EC587
+  4416 0001:000EC590  4417 0001:000EC594  4419 0001:000EC5A0  4420 0001:000EC5A8
+  4422 0001:000EC5AC  4423 0001:000EC5BB  4425 0001:000EC5C4  4426 0001:000EC5CB
+  4428 0001:000EC5D6  4429 0001:000EC5DE  4430 0001:000EC5E6  4431 0001:000EC5F4
+  4432 0001:000EC5FB  4433 0001:000EC612  4436 0001:000EC624  4437 0001:000EC638
+  4438 0001:000EC648  4439 0001:000EC654  4440 0001:000EC665  4441 0001:000EC675
+  4442 0001:000EC682  4444 0001:000EC689  4445 0001:000EC69F  4446 0001:000EC6AF
+  4447 0001:000EC6B6  4448 0001:000EC6C3  4449 0001:000EC6CE  4451 0001:000EC6D4
+  4452 0001:000EC6EA  4453 0001:000EC6F3  4454 0001:000EC6FF  4455 0001:000EC70A
+  4456 0001:000EC711  4459 0001:000EC72E  4461 0001:000EC73B  4463 0001:000EC74C
+  4465 0001:000EC753  4471 0001:000EC75C  4472 0001:000EC75F  4474 0001:000EC778
+  4475 0001:000EC77F  4476 0001:000EC798  4478 0001:000EC7A3  4480 0001:000EC7BA
+  4484 0001:000EC7BC  4485 0001:000EC7BF  4487 0001:000EC7C8  4488 0001:000EC7DA
+  4490 0001:000EC7E1  4494 0001:000EC7E4  4495 0001:000EC7E8  4507 0001:000EC7EC
+  4508 0001:000EC7EF  4509 0001:000EC7FD  4510 0001:000EC80B  4514 0001:000EC810
+  4515 0001:000EC81B  4519 0001:000EC81C  4520 0001:000EC827  4523 0001:000EC828
+  4524 0001:000EC848  4525 0001:000EC856  4539 0001:000EC878  4540 0001:000EC883
+  4543 0001:000EC884  4544 0001:000EC887  4545 0001:000EC88E  4546 0001:000EC89C
+  4547 0001:000EC8AA  4548 0001:000EC8B4  4549 0001:000EC8BC  4550 0001:000EC8C6
+  4551 0001:000EC8CE  4552 0001:000EC8D8  4553 0001:000EC8E0  4557 0001:000EC8E4
+  4558 0001:000EC8F1  4562 0001:000EC8F4  4563 0001:000EC8FD  4567 0001:000EC900
+  4568 0001:000EC90D  4571 0001:000EC910  4572 0001:000EC919  4573 0001:000EC928
+  4576 0001:000EC92C  4577 0001:000EC932  4578 0001:000EC935  4580 0001:000EC941
+  4581 0001:000EC948  4585 0001:000EC94C  4586 0001:000EC957  4594 0001:000EC958
+  4595 0001:000EC95E  4596 0001:000EC96B  4599 0001:000EC970  4600 0001:000EC973
+  4601 0001:000EC985  4605 0001:000EC990  4606 0001:000EC99E  4610 0001:000EC9A0
+  4611 0001:000EC9AD  4615 0001:000EC9B0  4616 0001:000EC9BC  4620 0001:000EC9C0
+  4621 0001:000EC9CD  4625 0001:000EC9D0  4626 0001:000EC9DC  4629 0001:000EC9E0
+  4630 0001:000EC9E6  4631 0001:000EC9F3  4645 0001:000EC9F8  4646 0001:000ECA06
+  4655 0001:000ECA08  4656 0001:000ECA14  4660 0001:000ECA18  4661 0001:000ECA25
+  4665 0001:000ECA28  4666 0001:000ECA35  4669 0001:000ECA38  4670 0001:000ECA3E
+  4671 0001:000ECA51  4675 0001:000ECA54  4676 0001:000ECA5F  4679 0001:000ECA60
+  4680 0001:000ECA80  4681 0001:000ECA8E  4684 0001:000ECAB0  4685 0001:000ECAB6
+  4686 0001:000ECAC3  4690 0001:000ECAC8  4691 0001:000ECAD5  4694 0001:000ECAD8
+  4695 0001:000ECADE  4696 0001:000ECAEB  4700 0001:000ECAF0  4701 0001:000ECAFB
+  4705 0001:000ECAFC  4706 0001:000ECB08  4709 0001:000ECB0C  4710 0001:000ECB0F
+  4712 0001:000ECB17  4713 0001:000ECB1D  4714 0001:000ECB28  4716 0001:000ECB2F
+  4719 0001:000ECB34  4720 0001:000ECB3A  4721 0001:000ECB49  4722 0001:000ECB56
+  4723 0001:000ECB63  4727 0001:000ECB68  4728 0001:000ECB73  4732 0001:000ECB74
+  4733 0001:000ECB7F  4737 0001:000ECB80  4738 0001:000ECB8C  4742 0001:000ECB90
+  4743 0001:000ECB9C  4747 0001:000ECBA0  4748 0001:000ECBAB  4752 0001:000ECBAC
+  4753 0001:000ECBB7  4757 0001:000ECBB8  4758 0001:000ECBC3  4766 0001:000ECBC4
+  4767 0001:000ECBC7  4768 0001:000ECBD5  4771 0001:000ECBD8  4772 0001:000ECBDB
+  4773 0001:000ECBE9  4777 0001:000ECBEC  4778 0001:000ECBF7  4782 0001:000ECBF8
+  4783 0001:000ECC03  4787 0001:000ECC04  4788 0001:000ECC0F  4792 0001:000ECC10
+  4793 0001:000ECC1B  4797 0001:000ECC1C  4798 0001:000ECC27  4801 0001:000ECC28
+  4802 0001:000ECC2B  4803 0001:000ECC36  4807 0001:000ECC38  4808 0001:000ECC45
+  4817 0001:000ECC48  4818 0001:000ECC55  4822 0001:000ECC58  4823 0001:000ECC65
+  4826 0001:000ECC68  4827 0001:000ECC87  4829 0001:000ECC9C  4830 0001:000ECCA3
+  4831 0001:000ECCB0  4832 0001:000ECCB5  4833 0001:000ECCC5  4834 0001:000ECCD3
+  4836 0001:000ECCDB  4837 0001:000ECCE5  4838 0001:000ECCEF  4839 0001:000ECD06
+  4840 0001:000ECD25  4841 0001:000ECD35  4842 0001:000ECD4F  4843 0001:000ECD59
+  4844 0001:000ECD69  4845 0001:000ECD7C  4846 0001:000ECD93  4847 0001:000ECD9C
+  4851 0001:000ECDB4  4852 0001:000ECDC5  4853 0001:000ECDDF  4854 0001:000ECDEF
+  4855 0001:000ECDFD  4858 0001:000ECE15  4860 0001:000ECE2D  4862 0001:000ECE35
+  4875 0001:000ECE5C  4876 0001:000ECE68  4880 0001:000ECE6C  4881 0001:000ECE77
+  4887 0001:000ECE78  4888 0001:000ECE82  4890 0001:000ECE8C  4891 0001:000ECE93
+  4892 0001:000ECE97  4894 0001:000ECE9E  4895 0001:000ECEB3  4897 0001:000ECEB9
+  4898 0001:000ECEC6  4900 0001:000ECECF  4901 0001:000ECED6  4904 0001:000ECEDC
+  4905 0001:000ECEE2  4906 0001:000ECEEF  4910 0001:000ECEF4  4911 0001:000ECEFF
+  4915 0001:000ECF00  4917 0001:000ECF08  4918 0001:000ECF10  4919 0001:000ECF1F
+  4921 0001:000ECF2C  4925 0001:000ECF30  4927 0001:000ECF38  4928 0001:000ECF3E
+  4929 0001:000ECF42  4931 0001:000ECF49  4934 0001:000ECF4C  4935 0001:000ECF62
+  4936 0001:000ECF74  4937 0001:000ECF8F  4940 0001:000ECFB4  4941 0001:000ECFB7
+  4943 0001:000ECFBF  4944 0001:000ECFC5  4946 0001:000ECFC9  4947 0001:000ECFD2
+  4950 0001:000ECFE1  4951 0001:000ECFEE  4953 0001:000ECFF5  4957 0001:000ECFF8
+  4958 0001:000ED00F  4961 0001:000ED010  4962 0001:000ED013  4963 0001:000ED02B
+  4967 0001:000ED030  4968 0001:000ED035  4971 0001:000ED038  4972 0001:000ED03E
+  4974 0001:000ED049  4975 0001:000ED052  4976 0001:000ED05B  4977 0001:000ED064
+  4980 0001:000ED06B  4986 0001:000ED070  4987 0001:000ED093  4989 0001:000ED0A6
+  4990 0001:000ED0AD  4991 0001:000ED0B2  4993 0001:000ED0C9  4995 0001:000ED0DA
+  4996 0001:000ED0DD  4997 0001:000ED0E2  4998 0001:000ED0EE  5000 0001:000ED108
+  4991 0001:000ED109  5001 0001:000ED10E  5002 0001:000ED118  5005 0001:000ED130
+  5006 0001:000ED13C  5009 0001:000ED16C  5010 0001:000ED182  5012 0001:000ED191
+  5013 0001:000ED198  5014 0001:000ED1B3  5015 0001:000ED1C3  5017 0001:000ED1CA
+  5020 0001:000ED1EC  5021 0001:000ED1EF  5022 0001:000ED1F6  5023 0001:000ED209
+  5024 0001:000ED217  5033 0001:000ED21C  5034 0001:000ED227  5037 0001:000ED228
+  5038 0001:000ED22E  5039 0001:000ED23B  5043 0001:000ED240  5044 0001:000ED24D
+  5048 0001:000ED250  5049 0001:000ED25C  5053 0001:000ED260  5054 0001:000ED26C
+  5058 0001:000ED270  5059 0001:000ED27C  5065 0001:000ED280  5066 0001:000ED28F
+  5067 0001:000ED2DF  5076 0001:000ED2F8  5077 0001:000ED307  5079 0001:000ED31E
+  5080 0001:000ED327  5081 0001:000ED32C  5077 0001:000ED32D  5082 0001:000ED330
+  5083 0001:000ED33B  5084 0001:000ED349  5091 0001:000ED35C  5092 0001:000ED36A
+  5093 0001:000ED374  5094 0001:000ED37E  5095 0001:000ED38E  5097 0001:000ED3AB
+  5098 0001:000ED3BA  5100 0001:000ED416  5103 0001:000ED425  5104 0001:000ED436
+  5105 0001:000ED440  5095 0001:000ED444  5106 0001:000ED44B  5110 0001:000ED454
+  5111 0001:000ED457  5112 0001:000ED45E  5113 0001:000ED464  5114 0001:000ED476
+  5115 0001:000ED47F  5122 0001:000ED484  5123 0001:000ED493  5124 0001:000ED49F
+  5125 0001:000ED4AB  5127 0001:000ED4CA  5128 0001:000ED4D9  5130 0001:000ED4ED
+  5131 0001:000ED4F8  5133 0001:000ED4FA  5134 0001:000ED51C  5136 0001:000ED550
+  5138 0001:000ED598  5139 0001:000ED5A9  5140 0001:000ED5B5  5125 0001:000ED5B9
+  5141 0001:000ED5C3  5147 0001:000ED5CC  5148 0001:000ED5D0  5149 0001:000ED5D7
+  5150 0001:000ED5DD  5151 0001:000ED5E2  5152 0001:000ED5ED  5158 0001:000ED5F0
+  5159 0001:000ED602  5160 0001:000ED60B  5161 0001:000ED617  5162 0001:000ED621
+  5163 0001:000ED62B  5167 0001:000ED64C  5168 0001:000ED64F  5169 0001:000ED656
+  5170 0001:000ED65D  5174 0001:000ED660  5175 0001:000ED663  5176 0001:000ED66A
+  5177 0001:000ED671  5185 0001:000ED674  5186 0001:000ED67B  5188 0001:000ED681
+  5189 0001:000ED68A  5190 0001:000ED697  5191 0001:000ED6A0  5192 0001:000ED6A4
+  5193 0001:000ED6B1  5194 0001:000ED6BC  5195 0001:000ED6C9  5197 0001:000ED6D1
+  5199 0001:000ED6F7  5205 0001:000ED700  5206 0001:000ED724  5207 0001:000ED72E
+  5208 0001:000ED73C  5209 0001:000ED75A  5210 0001:000ED787  5217 0001:000ED7AC
+  5218 0001:000ED7B3  5220 0001:000ED7B9  5222 0001:000ED7C4  5223 0001:000ED7CF
+  5224 0001:000ED7D9  5226 0001:000ED7EF  5227 0001:000ED7F9  5228 0001:000ED802
+  5229 0001:000ED80B  5230 0001:000ED815  5231 0001:000ED819  5232 0001:000ED826
+  5234 0001:000ED831  5239 0001:000ED838  5240 0001:000ED843  5244 0001:000ED844
+  5245 0001:000ED84A  5247 0001:000ED855  5248 0001:000ED859  5249 0001:000ED868
+  5250 0001:000ED873  5252 0001:000ED87D  5257 0001:000ED884  5258 0001:000ED88A
+  5259 0001:000ED88F  5264 0001:000ED890  5265 0001:000ED896  5266 0001:000ED89B
+  5271 0001:000ED89C  5273 0001:000ED8A4  5274 0001:000ED8AA  5276 0001:000ED8AF
+  5305 0001:000ED8B0  5306 0001:000ED8C2  5307 0001:000ED8CB  5308 0001:000ED8D2
+  5309 0001:000ED8D9  5310 0001:000ED8E0  5317 0001:000ED8FC  5318 0001:000ED902
+  5319 0001:000ED90B  5322 0001:000ED93B  5326 0001:000ED940  5328 0001:000ED948
+  5329 0001:000ED94E  5331 0001:000ED953  5335 0001:000ED954  5337 0001:000ED95C
+  5338 0001:000ED962  5340 0001:000ED967  5344 0001:000ED968  5346 0001:000ED970
+  5347 0001:000ED976  5349 0001:000ED97B  5358 0001:000ED97C  5359 0001:000ED985
+  5360 0001:000ED98C  5361 0001:000ED997  5362 0001:000ED99F  5364 0001:000ED9AF
+  5366 0001:000ED9C3  5367 0001:000ED9D5  5368 0001:000ED9DA  5369 0001:000ED9E2
+  5371 0001:000ED9FE  5388 0001:000EDA08  5389 0001:000EDA0B  5390 0001:000EDA1D
+  5393 0001:000EDA20  5394 0001:000EDA23  5395 0001:000EDA35  5398 0001:000EDA38
+  5399 0001:000EDA3E  5400 0001:000EDA48  5407 0001:000EDA4C  5408 0001:000EDA50
+  5409 0001:000EDA59  5412 0001:000EDA5B  5413 0001:000EDA62  5414 0001:000EDA69
+  5415 0001:000EDA72  5417 0001:000EDA78  5418 0001:000EDA8F  5421 0001:000EDA94
+  5422 0001:000EDA9E  5424 0001:000EDAA7  5425 0001:000EDAB9  5426 0001:000EDAC1
+  5428 0001:000EDACA  5431 0001:000EDAD0  5432 0001:000EDAEC  5434 0001:000EDAF8
+  5435 0001:000EDB02  5436 0001:000EDB0B  5437 0001:000EDB1F  5439 0001:000EDB3D
+  5440 0001:000EDB51  5444 0001:000EDB7C  5445 0001:000EDB83  5448 0001:000EDB84
+  5449 0001:000EDBA0  5450 0001:000EDBA9  5451 0001:000EDBBD  5452 0001:000EDBC1
+  5454 0001:000EDBC8  5455 0001:000EDBDC  5457 0001:000EDBEF  5463 0001:000EDC14
+  5464 0001:000EDC4E  5465 0001:000EDC53  5467 0001:000EDC6E  5469 0001:000EDCCE
+  5470 0001:000EDCD0  5472 0001:000EDCFA  5465 0001:000EDCFB  5473 0001:000EDD02
+  5474 0001:000EDD07  5475 0001:000EDD17  5476 0001:000EDD29  5478 0001:000EDD45
+  5479 0001:000EDD9C  5484 0001:000EDE04  5485 0001:000EDE1F  5486 0001:000EDE29
+  5488 0001:000EDE32  5489 0001:000EDE3C  5490 0001:000EDE4D  5491 0001:000EDE61
+  5493 0001:000EDE81  5494 0001:000EDE8C  5503 0001:000EDEB4  5504 0001:000EDEBC
+  5505 0001:000EDEC0  5509 0001:000EDECA  5512 0001:000EDED8  5514 0001:000EDEDB
+  5515 0001:000EDEE6  5517 0001:000EDEF6  5518 0001:000EDF07  5520 0001:000EDF0D
+  5521 0001:000EDF14  5527 0001:000EDF1D  5528 0001:000EDF2C  5531 0001:000EDF34
+  5532 0001:000EDF46  5533 0001:000EDF4F  5534 0001:000EDF56  5537 0001:000EDF70
+  5538 0001:000EDF74  5539 0001:000EDF88  5540 0001:000EDF92  5541 0001:000EDFA2
+  5545 0001:000EDFA8  5546 0001:000EDFCB  5547 0001:000EDFE2  5555 0001:000EE008
+  5556 0001:000EE037  5557 0001:000EE03B  5559 0001:000EE047  5560 0001:000EE049
+  5561 0001:000EE04E  5563 0001:000EE064  5564 0001:000EE07F  5566 0001:000EE0A1
+  5567 0001:000EE0A4  5569 0001:000EE0A6  5561 0001:000EE0A9  5570 0001:000EE0AC
+  5576 0001:000EE0E0  5577 0001:000EE107  5578 0001:000EE10F  5580 0001:000EE128
+  5582 0001:000EE143  5584 0001:000EE14F  5585 0001:000EE157  5586 0001:000EE174
+  5589 0001:000EE1A4  5578 0001:000EE1A5  5590 0001:000EE1A8  5606 0001:000EE1D4
+  5607 0001:000EE1FD  5608 0001:000EE20B  5609 0001:000EE219  5610 0001:000EE224
+  5611 0001:000EE22F  5612 0001:000EE237  5613 0001:000EE242  5615 0001:000EE24D
+  5616 0001:000EE26C  5617 0001:000EE27F  5618 0001:000EE293  5619 0001:000EE2A7
+  5620 0001:000EE2AB  5621 0001:000EE2B2  5622 0001:000EE2C6  5623 0001:000EE2CC
+  5624 0001:000EE2D7  5626 0001:000EE2EF  5628 0001:000EE305  5631 0001:000EE338
+  5632 0001:000EE33B  5633 0001:000EE34A  5636 0001:000EE34C  5637 0001:000EE34F
+  5638 0001:000EE35E  5644 0001:000EE360  5645 0001:000EE37E  5647 0001:000EE390
+  5648 0001:000EE3AA  5649 0001:000EE3C5  5647 0001:000EE3ED  5651 0001:000EE3F0
+  5655 0001:000EE414  5657 0001:000EE41C  5658 0001:000EE422  5660 0001:000EE427
+  5664 0001:000EE428  5665 0001:000EE42E  5666 0001:000EE443  5670 0001:000EE444
+  5672 0001:000EE44C  5673 0001:000EE452  5675 0001:000EE457  5679 0001:000EE458
+  5680 0001:000EE45E  5681 0001:000EE473  5691 0001:000EE474  5692 0001:000EE498
+  5694 0001:000EE49C  5695 0001:000EE4B2  5696 0001:000EE4C9  5699 0001:000EE505
+  5700 0001:000EE50D  5704 0001:000EE538  5705 0001:000EE53E  5706 0001:000EE543
+  5711 0001:000EE544  5712 0001:000EE55B  5713 0001:000EE564  5714 0001:000EE56B
+  5715 0001:000EE572  5716 0001:000EE579  5717 0001:000EE580  5718 0001:000EE587
+  5719 0001:000EE58E  5720 0001:000EE59F  5721 0001:000EE5A9  5724 0001:000EE5C8
+  5725 0001:000EE5D3  5726 0001:000EE5DB  5727 0001:000EE5E7  5730 0001:000EE5F8
+  5731 0001:000EE5FE  5732 0001:000EE60D  5733 0001:000EE612  5735 0001:000EE616
+  5736 0001:000EE61E  5738 0001:000EE628  5739 0001:000EE631  5743 0001:000EE634
+  5744 0001:000EE63A  5745 0001:000EE63F  5747 0001:000EE64A  5748 0001:000EE651
+  5749 0001:000EE65D  5751 0001:000EE66C  5752 0001:000EE68C  5758 0001:000EE6EC
+  5759 0001:000EE70A  5760 0001:000EE71F  5767 0001:000EE758  5768 0001:000EE77F
+  5770 0001:000EE785  5771 0001:000EE78C  5772 0001:000EE793  5773 0001:000EE79A
+  5774 0001:000EE7A1  5775 0001:000EE7A8  5779 0001:000EE7B4  5780 0001:000EE7B6
+  5782 0001:000EE7C1  5783 0001:000EE7D0  5784 0001:000EE7E3  5785 0001:000EE802
+  5786 0001:000EE828  5787 0001:000EE82D  5788 0001:000EE832  5789 0001:000EE837
+  5790 0001:000EE83C  5791 0001:000EE841  5793 0001:000EE844  5794 0001:000EE845
+  5795 0001:000EE859  5797 0001:000EE863  5800 0001:000EE898  5801 0001:000EE89C
+  5802 0001:000EE8B0  5803 0001:000EE8C5  5806 0001:000EE8C8  5807 0001:000EE8D1
+  5808 0001:000EE8DC  5809 0001:000EE8EF  5813 0001:000EE8F4  5815 0001:000EE8F9
+  5816 0001:000EE8FC  5818 0001:000EE903  5822 0001:000EE904  5824 0001:000EE909
+  5825 0001:000EE90C  5827 0001:000EE913  5831 0001:000EE914  5833 0001:000EE919
+  5834 0001:000EE91C  5836 0001:000EE923  5840 0001:000EE924  5842 0001:000EE929
+  5843 0001:000EE92C  5845 0001:000EE933  5849 0001:000EE934  5851 0001:000EE939
+  5852 0001:000EE93C  5854 0001:000EE943  5858 0001:000EE944  5860 0001:000EE949
+  5861 0001:000EE94C  5863 0001:000EE953  5868 0001:000EE954  5869 0001:000EE966
+  5870 0001:000EE96F  5871 0001:000EE983  5872 0001:000EE98A  5873 0001:000EE991
+  5883 0001:000EE9AC  5884 0001:000EE9AF  5885 0001:000EE9BA  5886 0001:000EE9C1
+  5887 0001:000EE9D3  5890 0001:000EE9D8  5891 0001:000EE9E3  5892 0001:000EE9F7
+  5893 0001:000EEA02  5894 0001:000EEA0E  5898 0001:000EEA1C  5899 0001:000EEA22
+  5900 0001:000EEA2F  5904 0001:000EEA34  5905 0001:000EEA3D  5909 0001:000EEA40
+  5910 0001:000EEA4B  5914 0001:000EEA4C  5915 0001:000EEA57  5919 0001:000EEA58
+  5921 0001:000EEA61  5923 0001:000EEA75  5924 0001:000EEA90  5925 0001:000EEA99
+  5930 0001:000EEAA1  5931 0001:000EEAB5  5932 0001:000EEABE  5933 0001:000EEAD9
+  5936 0001:000EEAE0  5939 0001:000EEAE4  5940 0001:000EEAE7  5941 0001:000EEAEE
+  5942 0001:000EEAFA  5945 0001:000EEAFC  5946 0001:000EEAFF  5947 0001:000EEB06
+  5948 0001:000EEB10  5951 0001:000EEB14  5952 0001:000EEB17  5953 0001:000EEB1E
+  5954 0001:000EEB28  5957 0001:000EEB2C  5958 0001:000EEB2F  5959 0001:000EEB3F
+  5963 0001:000EEB44  5965 0001:000EEB47  5966 0001:000EEB4D  5968 0001:000EEB53
+  5979 0001:000EEB54  5980 0001:000EEB97  5981 0001:000EEB9E  5982 0001:000EEBA4
+  5983 0001:000EEBAB  5985 0001:000EEBB5  5987 0001:000EEBC2  5989 0001:000EEBCB
+  5990 0001:000EEBDC  5991 0001:000EEBEA  5992 0001:000EEC00  5994 0001:000EEC09
+  5995 0001:000EEC10  5997 0001:000EEC1A  5999 0001:000EEC2C  6000 0001:000EEC42
+  6001 0001:000EEC4A  6002 0001:000EEC52  6007 0001:000EEC5A  6008 0001:000EEC70
+  6009 0001:000EEC78  6010 0001:000EEC80  6013 0001:000EEC86  6014 0001:000EEC99
+  6016 0001:000EECA0  6018 0001:000EECAA  6019 0001:000EECAE  6021 0001:000EECC0
+  6023 0001:000EECCC  6024 0001:000EECD8  6026 0001:000EECE1  6030 0001:000EECEA
+  6031 0001:000EED03  6032 0001:000EED0C  6035 0001:000EED15  6036 0001:000EED2B
+  6037 0001:000EED31  6038 0001:000EED37  6046 0001:000EED3D  6048 0001:000EED49
+  6049 0001:000EED55  6051 0001:000EED5B  6055 0001:000EED61  6056 0001:000EED77
+  6057 0001:000EED7D  6060 0001:000EED83  6061 0001:000EED8F  6063 0001:000EED95
+  6068 0001:000EED99  6072 0001:000EEDB3  6073 0001:000EEDC4  6074 0001:000EEDD4
+  6076 0001:000EEDDA  6077 0001:000EEDE4  6079 0001:000EEDF1  6080 0001:000EEDFD
+  6082 0001:000EEE05  6084 0001:000EEE14  6085 0001:000EEE22  6087 0001:000EEE2A
+  6089 0001:000EEE3A  6091 0001:000EEE42  6092 0001:000EEE4E  6094 0001:000EEE68
+  6095 0001:000EEE71  6096 0001:000EEE78  6097 0001:000EEE82  6098 0001:000EEE85
+  6099 0001:000EEE92  6101 0001:000EEEE2  6102 0001:000EEF05  6103 0001:000EEF0C
+  6107 0001:000EEF1C  6109 0001:000EEF34  6110 0001:000EEF36  6111 0001:000EEF56
+  6112 0001:000EEF65  6114 0001:000EEF6A  6117 0001:000EEF6B  6118 0001:000EEFC5
+  6112 0001:000EEFCB  6120 0001:000EEFD0  6121 0001:000EEFD8  6122 0001:000EEFEF
+  6123 0001:000EEFFD  6124 0001:000EF009  6125 0001:000EF026  6126 0001:000EF02C
+  6130 0001:000EF052  6134 0001:000EF06A  6144 0001:000EF0B8  6145 0001:000EF0E9
+  6147 0001:000EF0F6  6148 0001:000EF117  6149 0001:000EF125  6150 0001:000EF139
+  6151 0001:000EF147  6153 0001:000EF153  6154 0001:000EF164  6155 0001:000EF171
+  6156 0001:000EF17E  6157 0001:000EF189  6159 0001:000EF196  6160 0001:000EF1A3
+  6162 0001:000EF1B1  6164 0001:000EF1C6  6168 0001:000EF213  6169 0001:000EF21F
+  6170 0001:000EF22D  6172 0001:000EF239  6173 0001:000EF246  6174 0001:000EF256
+  6175 0001:000EF29E  6177 0001:000EF2AB  6178 0001:000EF2BB  6180 0001:000EF310
+  6183 0001:000EF326  6184 0001:000EF337  6187 0001:000EF344  6189 0001:000EF34D
+  6190 0001:000EF35A  6192 0001:000EF366  6194 0001:000EF37C  6197 0001:000EF386
+  6198 0001:000EF396  6199 0001:000EF3A6  6200 0001:000EF3B1  6203 0001:000EF3BE
+  6204 0001:000EF3CA  6206 0001:000EF3E3  6207 0001:000EF3E8  6208 0001:000EF3F4
+  6211 0001:000EF3FC  6212 0001:000EF41E  6214 0001:000EF427  6217 0001:000EF446
+  6220 0001:000EF46B  6221 0001:000EF471  6224 0001:000EF481  6228 0001:000EF4B4
+  6230 0001:000EF4BC  6231 0001:000EF4C2  6233 0001:000EF4D3  6237 0001:000EF4D4
+  6238 0001:000EF4E5  6241 0001:000EF4E8  6242 0001:000EF4EB  6243 0001:000EF4F2
+  6244 0001:000EF501  6245 0001:000EF508  6253 0001:000EF50C  6254 0001:000EF515
+  6256 0001:000EF51A  6258 0001:000EF531  6259 0001:000EF53F  6261 0001:000EF553
+  6262 0001:000EF558  6264 0001:000EF56A  6266 0001:000EF583  6267 0001:000EF58F
+  6269 0001:000EF593  6271 0001:000EF5AF  6272 0001:000EF5B6  6274 0001:000EF5C4
+  6278 0001:000EF5C7  6262 0001:000EF5C8  6279 0001:000EF5CB  6280 0001:000EF5D8
+  6283 0001:000EF5E4  6284 0001:000EF5EB  6285 0001:000EF5F5  6288 0001:000EF5FC
+  6289 0001:000EF5FF  6291 0001:000EF607  6292 0001:000EF60D  6293 0001:000EF614
+  6295 0001:000EF61E  6298 0001:000EF620  6299 0001:000EF623  6301 0001:000EF62B
+  6302 0001:000EF631  6303 0001:000EF638  6305 0001:000EF642  6309 0001:000EF644
+  6311 0001:000EF64C  6312 0001:000EF652  6314 0001:000EF65A  6325 0001:000EF65C
+  6326 0001:000EF667  6328 0001:000EF695  6329 0001:000EF69F  6330 0001:000EF6A9
+  6331 0001:000EF6B7  6332 0001:000EF6CF  6333 0001:000EF6DD  6335 0001:000EF708
+  6338 0001:000EF72A  6340 0001:000EF73D  6347 0001:000EF783  6348 0001:000EF78D
+  6350 0001:000EF799  6351 0001:000EF79D  6354 0001:000EF7AD  6355 0001:000EF7BB
+  6356 0001:000EF7CA  6359 0001:000EF7DB  6362 0001:000EF7EC  6363 0001:000EF7F2
+  6364 0001:000EF7FB  6367 0001:000EF800  6368 0001:000EF819  6370 0001:000EF82F
+  6371 0001:000EF838  6372 0001:000EF83F  6374 0001:000EF849  6378 0001:000EF86C
+  6379 0001:000EF872  6380 0001:000EF877  6383 0001:000EF878  6384 0001:000EF87B
+  6385 0001:000EF881  6386 0001:000EF891  6387 0001:000EF89A  6388 0001:000EF8A1
+  6395 0001:000EF8A4  6396 0001:000EF8A9  6398 0001:000EF8B9  6400 0001:000EF8CA
+  6402 0001:000EF8E3  6403 0001:000EF8ED  6404 0001:000EF8FF  6406 0001:000EF90C
+  6398 0001:000EF90D  6408 0001:000EF910  6411 0001:000EF914  6412 0001:000EF917
+  6413 0001:000EF91E  6414 0001:000EF925  6418 0001:000EF928  6419 0001:000EF92E
+  6420 0001:000EF936  6423 0001:000EF938  6424 0001:000EF93E  6426 0001:000EF948
+  6427 0001:000EF94C  6428 0001:000EF953  6429 0001:000EF95B  6431 0001:000EF95F
+  6432 0001:000EF966  6435 0001:000EF96D  6444 0001:000EF970  6445 0001:000EF97C
+  6446 0001:000EF982  6453 0001:000EF999  6455 0001:000EF9B0  6457 0001:000EF9C1
+  6458 0001:000EF9C7  6460 0001:000EF9CB  6461 0001:000EF9DF  6462 0001:000EF9E3
+  6463 0001:000EF9F8  6455 0001:000EF9F9  6465 0001:000EF9FC  6467 0001:000EFA04
+  6468 0001:000EFA0B  6469 0001:000EFA18  6470 0001:000EFA21  6474 0001:000EFA24
+  6475 0001:000EFA2D  6476 0001:000EFA38  6477 0001:000EFA45  6478 0001:000EFA4D
+  6482 0001:000EFA54  6483 0001:000EFA5A  6484 0001:000EFA62  6487 0001:000EFA64
+  6493 0001:000EFA6A  6494 0001:000EFA78  6496 0001:000EFA82  6497 0001:000EFA87
+  6507 0001:000EFA8C  6512 0001:000EFA90  6513 0001:000EFA97  6514 0001:000EFAA0
+  6515 0001:000EFAA5  6517 0001:000EFAB6  6518 0001:000EFABB  6520 0001:000EFAC0
+  6521 0001:000EFAE2  6522 0001:000EFAF2  6523 0001:000EFB14  6524 0001:000EFB24
+  6527 0001:000EFB36  6534 0001:000EFB3C  6535 0001:000EFB47  6536 0001:000EFB49
+  6537 0001:000EFB4E  6538 0001:000EFB54  6540 0001:000EFB57  6542 0001:000EFB69
+  6543 0001:000EFB79  6544 0001:000EFB7B  6546 0001:000EFB82  6548 0001:000EFB94
+  6549 0001:000EFBA4  6550 0001:000EFBA6  6553 0001:000EFBAD  6554 0001:000EFBB6
+  6555 0001:000EFBBA  6556 0001:000EFBCD  6563 0001:000EFBD4  6564 0001:000EFBDD
+  6565 0001:000EFBDF  6566 0001:000EFBE1  6569 0001:000EFBE6  6571 0001:000EFBF8
+  6572 0001:000EFC08  6574 0001:000EFC0A  6576 0001:000EFC10  6578 0001:000EFC22
+  6579 0001:000EFC32  6581 0001:000EFC34  6584 0001:000EFC3A  6585 0001:000EFC43
+  6586 0001:000EFC47  6587 0001:000EFC58  6592 0001:000EFC60  6593 0001:000EFC6B
+  6594 0001:000EFC75  6595 0001:000EFC7A  6596 0001:000EFC86  6603 0001:000EFC94
+  6604 0001:000EFC9D  6605 0001:000EFCA5  6607 0001:000EFCB5  6608 0001:000EFCC1
+  6609 0001:000EFCD6  6610 0001:000EFCE7  6611 0001:000EFCF5  6612 0001:000EFD06
+  6613 0001:000EFD11  6614 0001:000EFD1E  6616 0001:000EFD3C  6619 0001:000EFD56
+  6623 0001:000EFD5C  6624 0001:000EFD5D  6626 0001:000EFD71  6628 0001:000EFD7A
+  6633 0001:000EFD7C  6634 0001:000EFD7F  6635 0001:000EFD86  6636 0001:000EFDAD
+  6639 0001:000EFDB0  6640 0001:000EFDC2  6641 0001:000EFDCB  6642 0001:000EFDF2
+  6645 0001:000EFE0C  6646 0001:000EFE17  6647 0001:000EFE24  6649 0001:000EFE33
+  6650 0001:000EFE3C  6651 0001:000EFE45  6652 0001:000EFE50  6653 0001:000EFE5B
+  6655 0001:000EFE6C  6658 0001:000EFE71  6663 0001:000EFE78  6664 0001:000EFE7B
+  6665 0001:000EFE82  6666 0001:000EFE8B  6667 0001:000EFE95  6670 0001:000EFE98
+  6671 0001:000EFE9F  6672 0001:000EFEA9  6674 0001:000EFEB2  6675 0001:000EFEBB
+  6678 0001:000EFEC0  6679 0001:000EFEC6  6680 0001:000EFEC9  6682 0001:000EFED5
+  6683 0001:000EFEDC  6687 0001:000EFEE0  6688 0001:000EFEE3  6689 0001:000EFEF1
+  6690 0001:000EFF0C  6693 0001:000EFF10  6694 0001:000EFF14  6695 0001:000EFF30
+  6696 0001:000EFF4B  6699 0001:000EFF50  6700 0001:000EFF57  6701 0001:000EFF60
+  6702 0001:000EFF76  6703 0001:000EFF7F  6704 0001:000EFF8C  6705 0001:000EFF99
+  6706 0001:000EFFA6  6707 0001:000EFFB4  6709 0001:000EFFBF  6710 0001:000EFFCC
+  6714 0001:000EFFD0  6715 0001:000EFFD4  6720 0001:000EFFD8  6721 0001:000EFFDE
+  6722 0001:000EFFFA  6725 0001:000F0015  6726 0001:000F0031  6728 0001:000F0056
+  6729 0001:000F005F  6730 0001:000F0068  6732 0001:000F0074  6733 0001:000F007D
+  6738 0001:000F0080  6739 0001:000F00A0  6742 0001:000F00A9  6744 0001:000F00B2
+  6745 0001:000F00D0  6746 0001:000F00D8  6747 0001:000F00E4  6748 0001:000F00E9
+  6750 0001:000F00F6  6751 0001:000F0114  6753 0001:000F011A  6760 0001:000F0140
+  6761 0001:000F014E  6763 0001:000F015E  6765 0001:000F0174  6767 0001:000F0196
+  6769 0001:000F01B0  6771 0001:000F01C2  6772 0001:000F01D0  6773 0001:000F01DE
+  6774 0001:000F01F7  6775 0001:000F020F  6774 0001:000F021C  6776 0001:000F021F
+  6778 0001:000F0243  6783 0001:000F0259  6784 0001:000F0264  6789 0001:000F026C
+  6790 0001:000F0273  6791 0001:000F027D  6793 0001:000F0286  6794 0001:000F028F
+  6797 0001:000F0294  6798 0001:000F029A  6799 0001:000F029D  6801 0001:000F02A9
+  6802 0001:000F02B0  6805 0001:000F02B4  6806 0001:000F02BB  6807 0001:000F02C4
+  6808 0001:000F02DA  6809 0001:000F02E3  6810 0001:000F02F0  6811 0001:000F02FD
+  6812 0001:000F030A  6813 0001:000F0318  6815 0001:000F0323  6816 0001:000F0330
+  6821 0001:000F0334  6822 0001:000F0338  6827 0001:000F033C  6828 0001:000F0343
+  6829 0001:000F034D  6831 0001:000F0356  6832 0001:000F035F  6835 0001:000F0364
+  6836 0001:000F036A  6837 0001:000F036D  6839 0001:000F0379  6840 0001:000F0380
+  6843 0001:000F0384  6844 0001:000F038B  6845 0001:000F0394  6846 0001:000F03AA
+  6847 0001:000F03B3  6848 0001:000F03C0  6849 0001:000F03CD  6850 0001:000F03DA
+  6851 0001:000F03E8  6853 0001:000F03F3  6854 0001:000F0400  6858 0001:000F0404
+  6859 0001:000F0408  6864 0001:000F040C  6865 0001:000F0413  6866 0001:000F041D
+  6868 0001:000F0426  6869 0001:000F042F  6872 0001:000F0434  6873 0001:000F043A
+  6874 0001:000F043D  6876 0001:000F0449  6877 0001:000F0450  6880 0001:000F0454
+  6881 0001:000F045B  6882 0001:000F0464  6883 0001:000F047A  6884 0001:000F0483
+  6885 0001:000F0490  6886 0001:000F049D  6887 0001:000F04AA  6888 0001:000F04B8
+  6890 0001:000F04C3  6891 0001:000F04D0  6895 0001:000F04D4  6896 0001:000F04D8
+  6901 0001:000F04DC  6902 0001:000F04E2  6903 0001:000F04E5  6905 0001:000F04F5
+  6906 0001:000F04FC  6911 0001:000F0500  6912 0001:000F0504  6917 0001:000F0508
+  6918 0001:000F050E  6919 0001:000F0517  6922 0001:000F051C  6923 0001:000F0522
+  6924 0001:000F0525  6926 0001:000F0531  6927 0001:000F0538  6930 0001:000F053C
+  6931 0001:000F0543  6932 0001:000F054C  6933 0001:000F0562  6934 0001:000F056B
+  6935 0001:000F0578  6936 0001:000F0585  6937 0001:000F0592  6938 0001:000F05A0
+  6940 0001:000F05AB  6941 0001:000F05B8  6942 0001:000F05C1  6946 0001:000F05C8
+  6947 0001:000F05CC  6952 0001:000F05D0  6953 0001:000F05D7  6954 0001:000F05E1
+  6956 0001:000F05EA  6957 0001:000F05F3  6960 0001:000F05F8  6961 0001:000F05FE
+  6962 0001:000F0601  6964 0001:000F060D  6965 0001:000F0614  6968 0001:000F0618
+  6969 0001:000F061F  6970 0001:000F0628  6971 0001:000F063E  6972 0001:000F0647
+  6973 0001:000F0654  6974 0001:000F0661  6975 0001:000F066E  6976 0001:000F067C
+  6978 0001:000F0687  6979 0001:000F0694  6983 0001:000F0698  6984 0001:000F069C
+  6991 0001:000F06A0  6992 0001:000F06A8  6993 0001:000F06AF  6995 0001:000F06D6
+  6996 0001:000F06DF  6997 0001:000F06ED  6998 0001:000F06FE  7000 0001:000F070B
+  7005 0001:000F0714  7008 0001:000F071C  7009 0001:000F071E  7011 0001:000F073C
+  7014 0001:000F0740  7015 0001:000F0746  7016 0001:000F0749  7018 0001:000F0759
+  7019 0001:000F0760  7029 0001:000F0764  7030 0001:000F076E  7032 0001:000F077B
+  7034 0001:000F07A7  7036 0001:000F07CF  7042 0001:000F07DC  7043 0001:000F07E0
+  7047 0001:000F07E4  7050 0001:000F0811  7052 0001:000F0814  7053 0001:000F0816
+  7057 0001:000F0818  7058 0001:000F081D  7059 0001:000F0828  7060 0001:000F082D
+  7062 0001:000F0839  7063 0001:000F083F  7067 0001:000F0840  7068 0001:000F0846
+  7074 0001:000F0848  7075 0001:000F087C  7076 0001:000F087F  7080 0001:000F0888
+  7081 0001:000F08C3  7085 0001:000F08CC  7086 0001:000F08D1  7087 0001:000F08EC
+  7088 0001:000F0927  7086 0001:000F092D  7089 0001:000F0930  7090 0001:000F0936
+  7092 0001:000F093D  7093 0001:000F0946  7094 0001:000F0953  7099 0001:000F0988
+  7100 0001:000F09AF  7101 0001:000F09B9  7102 0001:000F09DE  7103 0001:000F09E5
+  7108 0001:000F0A0C  7109 0001:000F0A12  7110 0001:000F0A15  7112 0001:000F0A21
+  7113 0001:000F0A28  7117 0001:000F0A2C  7118 0001:000F0A30  7128 0001:000F0A34
+  7130 0001:000F0A52
+
+Line numbers for ORCtrls(..\CPRS-Lib\ORCtrls.pas) segment .itext
+
+  7120 0002:000009FC  7122 0002:00000A05  7123 0002:00000A0C  7124 0002:00000A21
+  7126 0002:00000A32
+
+Line numbers for ORFn(..\CPRS-Lib\ORFn.pas) segment .text
+
+   206 0001:000F0BEC   207 0001:000F0BF2   208 0001:000F0C06   209 0001:000F0C1E
+   210 0001:000F0C3F   211 0001:000F0C5B   212 0001:000F0C6D   219 0001:000F0C7C
+   220 0001:000F0C9A   221 0001:000F0CCC   222 0001:000F0D0E   223 0001:000F0D41
+   224 0001:000F0D73   227 0001:000F0DDE   230 0001:000F0E47   231 0001:000F0E51
+   237 0001:000F0EDC   238 0001:000F0EE5   239 0001:000F0EF4   240 0001:000F0F0A
+   252 0001:000F0F14   253 0001:000F0F1A   254 0001:000F0F1F   256 0001:000F0F2A
+   257 0001:000F0F3F   258 0001:000F0F42   259 0001:000F0F57   261 0001:000F0F60
+   262 0001:000F0F8C   263 0001:000F0F94   264 0001:000F0FA7   265 0001:000F0FD6
+   266 0001:000F0FFE   267 0001:000F1021   268 0001:000F1044   269 0001:000F1067
+   270 0001:000F108A   272 0001:000F10B2   274 0001:000F1108   277 0001:000F111C
+   278 0001:000F1137   275 0001:000F1149   280 0001:000F115E   282 0001:000F118A
+   283 0001:000F119C   284 0001:000F11C4   286 0001:000F11F8   287 0001:000F120A
+   288 0001:000F1228   290 0001:000F1252   291 0001:000F126E   292 0001:000F1296
+   293 0001:000F12CA   294 0001:000F12FC   296 0001:000F1331   297 0001:000F1343
+   298 0001:000F1361   300 0001:000F138B   301 0001:000F139D   302 0001:000F13BB
+   304 0001:000F13E5   305 0001:000F13FB   306 0001:000F1436   309 0001:000F1457
+   310 0001:000F1478   271 0001:000F148A   313 0001:000F149A   318 0001:000F14F8
+   319 0001:000F1507   320 0001:000F1512   322 0001:000F151E   323 0001:000F152A
+   325 0001:000F153B   330 0001:000F1540   331 0001:000F155F   332 0001:000F1563
+   333 0001:000F1580   334 0001:000F15A0   335 0001:000F15C6   336 0001:000F15EF
+   337 0001:000F15F3   340 0001:000F1618   341 0001:000F1621   342 0001:000F162D
+   343 0001:000F1662   351 0001:000F166C   352 0001:000F169D   354 0001:000F16B9
+   355 0001:000F16C7   356 0001:000F16D9   358 0001:000F16F6   359 0001:000F1710
+   360 0001:000F171C   362 0001:000F1727   363 0001:000F1739   364 0001:000F1747
+   352 0001:000F174A   365 0001:000F1753   371 0001:000F1784   372 0001:000F1790
+   373 0001:000F1796   374 0001:000F17A4   378 0001:000F17AC   379 0001:000F17B8
+   380 0001:000F17BE   381 0001:000F17CC   384 0001:000F17D4   385 0001:000F17DD
+   386 0001:000F17F3   387 0001:000F1807   393 0001:000F1810   394 0001:000F181C
+   395 0001:000F184E   401 0001:000F1858   402 0001:000F1861   403 0001:000F1865
+   405 0001:000F18A3   406 0001:000F18A7   407 0001:000F18A9   403 0001:000F18AC
+   408 0001:000F18B1   414 0001:000F18B8   415 0001:000F18C1   416 0001:000F18C5
+   418 0001:000F18FD   419 0001:000F1901   420 0001:000F1903   416 0001:000F1906
+   421 0001:000F190B   425 0001:000F1914   426 0001:000F1933   428 0001:000F1938
+   429 0001:000F196B   426 0001:000F196E   430 0001:000F1974   435 0001:000F199C
+   436 0001:000F19AB   437 0001:000F19B1   438 0001:000F19C4   439 0001:000F19EE
+   437 0001:000F19F1   440 0001:000F19F6   450 0001:000F1A00   451 0001:000F1A1F
+   452 0001:000F1A26   453 0001:000F1A33   455 0001:000F1A43   456 0001:000F1A56
+   457 0001:000F1A6D   458 0001:000F1A76   459 0001:000F1A7F   460 0001:000F1A87
+   461 0001:000F1A8A   467 0001:000F1AB0   468 0001:000F1AD0   469 0001:000F1AD7
+   470 0001:000F1AF3   471 0001:000F1B2F   472 0001:000F1B68   470 0001:000F1B6B
+   472 0001:000F1B70   469 0001:000F1B73   473 0001:000F1B7C   478 0001:000F1BA8
+   479 0001:000F1BD4   480 0001:000F1BDC   481 0001:000F1C08   482 0001:000F1C58
+   483 0001:000F1C95   482 0001:000F1CA8   484 0001:000F1CAF   485 0001:000F1CD1
+   486 0001:000F1CE3   487 0001:000F1CF5   488 0001:000F1D15   480 0001:000F1D18
+   489 0001:000F1D21   490 0001:000F1D82   519 0001:000F1DC4   520 0001:000F1DEA
+   521 0001:000F1E13   522 0001:000F1E53   523 0001:000F1E75   529 0001:000F1EA4
+   530 0001:000F1ECA   531 0001:000F1EF7   532 0001:000F1F3B   533 0001:000F1F62
+   538 0001:000F1F90   539 0001:000F1FBC   540 0001:000F1FC4   541 0001:000F1FCB
+   542 0001:000F2008   543 0001:000F200B   544 0001:000F2032   545 0001:000F206C
+   546 0001:000F206F   547 0001:000F20A0   552 0001:000F20D4   553 0001:000F20FF
+   554 0001:000F2106   555 0001:000F2143   556 0001:000F2146   557 0001:000F216D
+   558 0001:000F21B2   559 0001:000F21B5   560 0001:000F21D8   565 0001:000F220C
+   566 0001:000F2237   567 0001:000F223E   568 0001:000F227B   569 0001:000F227E
+   570 0001:000F22A5   571 0001:000F22EA   572 0001:000F22ED   573 0001:000F2310
+   578 0001:000F2344   579 0001:000F234E   580 0001:000F238E   585 0001:000F2394
+   586 0001:000F23A1   587 0001:000F23AC   588 0001:000F23DA   590 0001:000F2402
+   591 0001:000F2421   592 0001:000F2449   587 0001:000F2469   594 0001:000F2472
+   595 0001:000F247D   600 0001:000F2484   601 0001:000F24A4   602 0001:000F24EB
+   608 0001:000F2514   609 0001:000F253D   611 0001:000F2555   612 0001:000F2563
+   613 0001:000F2580   614 0001:000F2592   615 0001:000F25A0   609 0001:000F25A3
+   616 0001:000F25A8   620 0001:000F25D8   621 0001:000F25E7   622 0001:000F25F9
+   625 0001:000F2600   626 0001:000F260F   627 0001:000F2625   634 0001:000F262C
+   635 0001:000F2679   636 0001:000F267E   637 0001:000F2683   639 0001:000F268F
+   640 0001:000F2695   643 0001:000F26D7   645 0001:000F2717   646 0001:000F271D
+   637 0001:000F2720   650 0001:000F272C   656 0001:000F276C   657 0001:000F2797
+   660 0001:000F27A1   661 0001:000F27B5   662 0001:000F27C0   658 0001:000F27E8
+   664 0001:000F27F4   669 0001:000F2820   670 0001:000F282D   671 0001:000F2859
+   672 0001:000F285E   674 0001:000F2880   675 0001:000F2883   676 0001:000F289C
+   672 0001:000F289F   677 0001:000F28A5   684 0001:000F28AC   685 0001:000F28D5
+   686 0001:000F28DC   687 0001:000F28E9   690 0001:000F28F9   691 0001:000F28FC
+   692 0001:000F2903   688 0001:000F2911   694 0001:000F291F   695 0001:000F2930
+   696 0001:000F2938   697 0001:000F2963   698 0001:000F29A6   705 0001:000F29D0
+   706 0001:000F2A0C   707 0001:000F2A1E   706 0001:000F2A51   708 0001:000F2A56
+   713 0001:000F2A88   714 0001:000F2AB4   715 0001:000F2ACC   714 0001:000F2B2C
+   716 0001:000F2B31   717 0001:000F2B3C   718 0001:000F2B54   717 0001:000F2BAD
+   719 0001:000F2BB2   725 0001:000F2BDC   726 0001:000F2BFB   727 0001:000F2C00
+   728 0001:000F2C07   729 0001:000F2C24   730 0001:000F2C45   732 0001:000F2C4D
+   734 0001:000F2C6C   735 0001:000F2C6F   738 0001:000F2C77   730 0001:000F2C7A
+   740 0001:000F2C82   761 0001:000F2D04   762 0001:000F2D2F   763 0001:000F2D5E
+   764 0001:000F2D74   765 0001:000F2D86   767 0001:000F2D9B   768 0001:000F2DAD
+   770 0001:000F2DC8   771 0001:000F2DDA   773 0001:000F2DF4   774 0001:000F2E06
+   776 0001:000F2E21   777 0001:000F2E33   779 0001:000F2E4E   780 0001:000F2E60
+   782 0001:000F2E7B   786 0001:000F2E8D   787 0001:000F2EA3   789 0001:000F2EAF
+   790 0001:000F2EBD   795 0001:000F2EC9   797 0001:000F2F21   798 0001:000F2F27
+   801 0001:000F3010   802 0001:000F3030   803 0001:000F3034   804 0001:000F3038
+   805 0001:000F303D   806 0001:000F3047   807 0001:000F3051   808 0001:000F3060
+   809 0001:000F306E   810 0001:000F3079   811 0001:000F3085   813 0001:000F309D
+   815 0001:000F30AD   816 0001:000F30BD   817 0001:000F30CD   818 0001:000F30DF
+   819 0001:000F311B   832 0001:000F319C   833 0001:000F31C7   834 0001:000F31F6
+   835 0001:000F320C   836 0001:000F321E   838 0001:000F3233   839 0001:000F3245
+   841 0001:000F3260   842 0001:000F3272   844 0001:000F328C   845 0001:000F329E
+   847 0001:000F32B9   848 0001:000F32CB   850 0001:000F32E6   851 0001:000F32F8
+   853 0001:000F3313   857 0001:000F3325   858 0001:000F333B   860 0001:000F3347
+   861 0001:000F3355   866 0001:000F3361   868 0001:000F33B9   869 0001:000F33BF
+   872 0001:000F34A4   873 0001:000F34B1   874 0001:000F34B5   875 0001:000F34B9
+   876 0001:000F34BE   877 0001:000F34C8   878 0001:000F34D2   879 0001:000F34E1
+   880 0001:000F34EF   881 0001:000F34FA   882 0001:000F3508   883 0001:000F3513
+   884 0001:000F351F   885 0001:000F3527   887 0001:000F353F   889 0001:000F354F
+   890 0001:000F355F   891 0001:000F356F   897 0001:000F3574   898 0001:000F3597
+   899 0001:000F359F   900 0001:000F35C3   902 0001:000F35D3   903 0001:000F3602
+   906 0001:000F360F   907 0001:000F361E   908 0001:000F362C   909 0001:000F3637
+   910 0001:000F3643   912 0001:000F365B   915 0001:000F366B   921 0001:000F36AC
+   922 0001:000F36B9   923 0001:000F36DD   926 0001:000F36EA   927 0001:000F36F9
+   928 0001:000F3707   929 0001:000F3712   930 0001:000F3720   931 0001:000F372B
+   932 0001:000F3737   933 0001:000F373F   935 0001:000F3757   938 0001:000F3767
+   944 0001:000F376C   945 0001:000F3778   946 0001:000F3783   949 0001:000F378C
+   950 0001:000F37AE   952 0001:000F37B3   947 0001:000F37C3   954 0001:000F37D2
+   961 0001:000F37D8   962 0001:000F3801   963 0001:000F3810   964 0001:000F381E
+   966 0001:000F383C   968 0001:000F3875   971 0001:000F3887   974 0001:000F388F
+   975 0001:000F38A5   976 0001:000F38B1   977 0001:000F38D0   969 0001:000F38E0
+   979 0001:000F38ED   981 0001:000F3917   982 0001:000F3932   964 0001:000F3935
+   983 0001:000F393E   984 0001:000F3948   986 0001:000F3962   988 0001:000F3972
+  1036 0001:000F39A4  1037 0001:000F39B4  1038 0001:000F39E1  1049 0001:000F39E8
+  1050 0001:000F3A07  1051 0001:000F3A0A  1052 0001:000F3A17  1055 0001:000F3A40
+  1056 0001:000F3A45  1057 0001:000F3A65  1058 0001:000F3A85  1059 0001:000F3AA5
+  1060 0001:000F3AAB  1061 0001:000F3AB9  1063 0001:000F3AD8  1065 0001:000F3AF1
+  1066 0001:000F3B03  1068 0001:000F3B1D  1071 0001:000F3B40  1072 0001:000F3B44
+  1073 0001:000F3B4C  1076 0001:000F3B54  1077 0001:000F3B58  1078 0001:000F3B65
+  1079 0001:000F3B77  1080 0001:000F3B7F  1084 0001:000F3B88  1085 0001:000F3B8C
+  1086 0001:000F3B99  1092 0001:000F3BA0  1093 0001:000F3BA9  1095 0001:000F3BBE
+  1096 0001:000F3BCB  1099 0001:000F3C18  1101 0001:000F3C21  1102 0001:000F3C37
+  1105 0001:000F3C44  1106 0001:000F3C48  1107 0001:000F3C55  1112 0001:000F3C5C
+  1113 0001:000F3C60  1114 0001:000F3C72  1117 0001:000F3C78  1118 0001:000F3C7F
+  1119 0001:000F3C8E  1122 0001:000F3C94  1123 0001:000F3C9B  1124 0001:000F3CAA
+  1125 0001:000F3CB7  1130 0001:000F3CBC  1131 0001:000F3CC5  1132 0001:000F3CF8
+  1135 0001:000F3CFC  1136 0001:000F3D0B  1138 0001:000F3D37  1141 0001:000F3D44
+  1142 0001:000F3D53  1144 0001:000F3D93  1151 0001:000F3DA0  1152 0001:000F3DAF
+  1153 0001:000F3DBE  1154 0001:000F3DCB  1155 0001:000F3DD6  1156 0001:000F3DED
+  1157 0001:000F3E04  1163 0001:000F3E20  1164 0001:000F3E2F  1165 0001:000F3E4D
+  1164 0001:000F3E87  1166 0001:000F3E8C  1171 0001:000F3E90  1172 0001:000F3E9F
+  1173 0001:000F3EAC  1174 0001:000F3ECA  1173 0001:000F3F08  1175 0001:000F3F0D
+  1178 0001:000F3F14  1179 0001:000F3F23  1180 0001:000F3F48  1183 0001:000F3F4C
+  1184 0001:000F3F5B  1185 0001:000F3F7A  1188 0001:000F3F80  1189 0001:000F3F8F
+  1190 0001:000F3FAE  1198 0001:000F3FB4  1199 0001:000F3FC3  1200 0001:000F3FCC
+  1201 0001:000F3FD8  1202 0001:000F3FE0  1218 0001:000F3FEE  1219 0001:000F3FF7
+  1220 0001:000F4000  1221 0001:000F4006  1222 0001:000F400C  1224 0001:000F401E
+  1225 0001:000F4035  1227 0001:000F404C  1228 0001:000F4068  1230 0001:000F4076
+  1232 0001:000F408C  1233 0001:000F409C  1235 0001:000F40BF  1236 0001:000F40DA
+  1237 0001:000F40E3  1239 0001:000F4106  1240 0001:000F4121  1241 0001:000F4131
+  1243 0001:000F4154  1244 0001:000F416F  1245 0001:000F4178  1247 0001:000F419B
+  1250 0001:000F41B6  1251 0001:000F41DA  1252 0001:000F41E8  1253 0001:000F41FA
+  1254 0001:000F4208  1255 0001:000F421A  1256 0001:000F4228  1257 0001:000F423A
+  1258 0001:000F4248  1259 0001:000F425A  1260 0001:000F4268  1261 0001:000F427A
+  1262 0001:000F4288  1265 0001:000F42B9  1266 0001:000F42CB  1267 0001:000F42DC
+  1268 0001:000F42FB  1270 0001:000F4322  1227 0001:000F4325  1272 0001:000F433B
+  1274 0001:000F434B  1279 0001:000F4358  1281 0001:000F4368  1282 0001:000F438A
+  1283 0001:000F43A8  1284 0001:000F43C7  1285 0001:000F43E2  1286 0001:000F4404
+  1287 0001:000F4422  1288 0001:000F4441  1289 0001:000F445C  1290 0001:000F447B
+  1291 0001:000F4496  1292 0001:000F44B5  1293 0001:000F44D0  1294 0001:000F44E8
+  1295 0001:000F450C  1293 0001:000F4531  1297 0001:000F4536  1305 0001:000F453C
+  1306 0001:000F454C  1307 0001:000F4568  1308 0001:000F4576  1310 0001:000F458C
+  1311 0001:000F45A9  1312 0001:000F45B2  1313 0001:000F45C7  1314 0001:000F45D5
+  1315 0001:000F45E3  1316 0001:000F45EB  1317 0001:000F4603  1318 0001:000F461B
+  1319 0001:000F4629  1323 0001:000F4639  1324 0001:000F464B  1327 0001:000F465B
+  1328 0001:000F467D  1330 0001:000F4692  1331 0001:000F46A4  1332 0001:000F46B2
+  1306 0001:000F46B5  1333 0001:000F46BE  1338 0001:000F46C4  1339 0001:000F46CD
+  1342 0001:000F46DC  1344 0001:000F46E7  1345 0001:000F46FC  1348 0001:000F4705
+  1350 0001:000F4710  1351 0001:000F4725  1354 0001:000F472E  1355 0001:000F4739
+  1357 0001:000F4742  1359 0001:000F474D  1360 0001:000F4760  1362 0001:000F4769
+  1364 0001:000F4773  1365 0001:000F4787  1367 0001:000F478F  1368 0001:000F479A
+  1369 0001:000F47A3  1378 0001:000F47A8  1379 0001:000F47B4  1380 0001:000F47BC
+  1381 0001:000F47C0  1382 0001:000F47D4  1384 0001:000F47E6  1385 0001:000F47F6
+  1380 0001:000F47F9  1385 0001:000F47FF  1392 0001:000F481C  1393 0001:000F483C
+  1394 0001:000F4844  1395 0001:000F4854  1396 0001:000F485B  1398 0001:000F485F
+  1399 0001:000F4882  1400 0001:000F4890  1401 0001:000F4893  1396 0001:000F4896
+  1402 0001:000F489C  1408 0001:000F48DC  1409 0001:000F48FB  1410 0001:000F4903
+  1411 0001:000F490D  1412 0001:000F4917  1414 0001:000F492F  1415 0001:000F493D
+  1416 0001:000F4959  1417 0001:000F4963  1418 0001:000F497B  1419 0001:000F4989
+  1412 0001:000F498C  1420 0001:000F4991  1426 0001:000F49BC  1427 0001:000F49D9
+  1428 0001:000F49E7  1430 0001:000F49FF  1431 0001:000F4A0D  1432 0001:000F4A31
+  1433 0001:000F4A43  1428 0001:000F4A46  1434 0001:000F4A4B  1435 0001:000F4A55
+  1437 0001:000F4A6C  1439 0001:000F4A7C  1445 0001:000F4AA0  1450 0001:000F4AA9
+  1451 0001:000F4ABE  1452 0001:000F4ACF  1453 0001:000F4ADD  1454 0001:000F4AE5
+  1455 0001:000F4AF3  1456 0001:000F4B21  1457 0001:000F4B4F  1458 0001:000F4B75
+  1459 0001:000F4B9B  1460 0001:000F4BA6  1461 0001:000F4BAE  1463 0001:000F4BC6
+  1465 0001:000F4BD6  1468 0001:000F4BEB  1470 0001:000F4C0F  1472 0001:000F4C16
+  1473 0001:000F4C2B  1477 0001:000F4C3C  1484 0001:000F4C40  1487 0001:000F4C49
+  1488 0001:000F4C5E  1489 0001:000F4C6F  1490 0001:000F4C7D  1491 0001:000F4CAB
+  1492 0001:000F4CD9  1493 0001:000F4CFF  1494 0001:000F4D25  1495 0001:000F4D30
+  1496 0001:000F4D38  1497 0001:000F4D43  1498 0001:000F4D58  1501 0001:000F4D6D
+  1503 0001:000F4D91  1505 0001:000F4D98  1506 0001:000F4DAD  1510 0001:000F4DBE
+  1522 0001:000F4DC4  1524 0001:000F4DCD  1525 0001:000F4DDA  1527 0001:000F4DE6
+  1528 0001:000F4DF3  1530 0001:000F4DF9  1532 0001:000F4E03  1533 0001:000F4E0B
+  1535 0001:000F4E19  1536 0001:000F4E23  1537 0001:000F4E2D  1538 0001:000F4E41
+  1539 0001:000F4E52  1540 0001:000F4E63  1542 0001:000F4E81  1545 0001:000F4E91
+  1555 0001:000F4E98  1556 0001:000F4EB7  1558 0001:000F4ECD  1559 0001:000F4ED7
+  1560 0001:000F4EE5  1561 0001:000F4EF0  1562 0001:000F4F15  1563 0001:000F4F2B
+  1565 0001:000F4F52  1570 0001:000F4F78  1571 0001:000F4F7F  1572 0001:000F4F9F
+  1573 0001:000F4FC4  1576 0001:000F4FC8  1577 0001:000F4FD7  1578 0001:000F4FDD
+  1579 0001:000F4FF0  1587 0001:000F4FF8  1588 0001:000F5004  1589 0001:000F500E
+  1590 0001:000F501C  1591 0001:000F502C  1592 0001:000F503A  1593 0001:000F506B
+  1595 0001:000F507E  1598 0001:000F50A0  1600 0001:000F50B3  1608 0001:000F50BC
+  1609 0001:000F50C8  1610 0001:000F50D2  1611 0001:000F50E0  1612 0001:000F50F0
+  1613 0001:000F50FE  1614 0001:000F512F  1616 0001:000F5142  1619 0001:000F5164
+  1621 0001:000F5177  1622 0001:000F5180  1623 0001:000F5187  1630 0001:000F5190
+  1638 0001:000F51B5  1639 0001:000F51BA  1640 0001:000F51BF  1641 0001:000F51D5
+  1656 0001:000F523F  1657 0001:000F5245  1658 0001:000F525A  1659 0001:000F5268
+  1662 0001:000F52B6  1663 0001:000F52BC  1664 0001:000F52CE  1667 0001:000F52DF
+  1668 0001:000F52E8  1669 0001:000F52EF  1680 0001:000F5318  1681 0001:000F533B
+  1682 0001:000F5345  1683 0001:000F5355  1684 0001:000F5363  1685 0001:000F5380
+  1686 0001:000F5385  1688 0001:000F538B  1689 0001:000F539F  1690 0001:000F53D0
+  1692 0001:000F53D8  1693 0001:000F53DE  1694 0001:000F53EE  1698 0001:000F53FA
+  1699 0001:000F5400  1700 0001:000F5411  1702 0001:000F541B  1704 0001:000F5432
+  1705 0001:000F543F  1707 0001:000F5452  1710 0001:000F5478  1711 0001:000F5484
+  1713 0001:000F54AB  1715 0001:000F54B6  1716 0001:000F54C3  1723 0001:000F54CC
+  1726 0001:000F54EE  1728 0001:000F5512  1729 0001:000F5515  1730 0001:000F555F
+  1731 0001:000F5595  1732 0001:000F55A7  1733 0001:000F55B5  1735 0001:000F55BD
+  1736 0001:000F55DE  1737 0001:000F5606  1738 0001:000F5630  1739 0001:000F56A3
+  1740 0001:000F56B0  1741 0001:000F56BB  1742 0001:000F56C5  1744 0001:000F56D0
+  1759 0001:000F571C  1760 0001:000F571D  1762 0001:000F572A  1768 0001:000F5797
+  1770 0001:000F57D0  1773 0001:000F580F  1775 0001:000F5818  1776 0001:000F5832
+  1778 0001:000F583E  1781 0001:000F5848  1783 0001:000F584F  1786 0001:000F5854
+  1787 0001:000F5858  1788 0001:000F5866  1789 0001:000F586E  1792 0001:000F5874
+  1793 0001:000F5878  1794 0001:000F5886  1795 0001:000F588E  1798 0001:000F5894
+  1799 0001:000F589D  1800 0001:000F58A3  1802 0001:000F58AC  1803 0001:000F58C4
+  1804 0001:000F58CD  1805 0001:000F58D6  1808 0001:000F58DD  1810 0001:000F58E6
+  1811 0001:000F58F7  1812 0001:000F5900  1817 0001:000F5908  1819 0001:000F5911
+  1820 0001:000F591B  1823 0001:000F5922  1851 0001:000F592C  1852 0001:000F5948
+  1854 0001:000F5955  1856 0001:000F5967  1858 0001:000F5982  1859 0001:000F598C
+  1860 0001:000F5998  1864 0001:000F59A5  1866 0001:000F59BB  1867 0001:000F59C6
+  1869 0001:000F59DE  1871 0001:000F59F6  1872 0001:000F5A16  1873 0001:000F5A2E
+  1869 0001:000F5A31  1874 0001:000F5A36  1867 0001:000F5A39  1879 0001:000F5A3E
+  1881 0001:000F5A59  1882 0001:000F5A5F  1883 0001:000F5A6B  1887 0001:000F5A79
+  1892 0001:000F5AAC  1893 0001:000F5AB5  1894 0001:000F5ABE  1895 0001:000F5ACA
+  1896 0001:000F5AD5  1898 0001:000F5ADE  1899 0001:000F5AF0  1901 0001:000F5AF9
+  1904 0001:000F5B02  1905 0001:000F5B0D  1906 0001:000F5B15  1907 0001:000F5B20
+  1908 0001:000F5B28  1909 0001:000F5B36  1910 0001:000F5B43  1916 0001:000F5B48
+  1917 0001:000F5B51  1918 0001:000F5B5E  1920 0001:000F5B70  1921 0001:000F5B76
+  1922 0001:000F5B84  1924 0001:000F5B9C  1925 0001:000F5BB1  1922 0001:000F5BB4
+  1927 0001:000F5BC6  1928 0001:000F5BCC  1929 0001:000F5BDA  1932 0001:000F5BEC
+  1934 0001:000F5BF0  1935 0001:000F5BFC  1936 0001:000F5C05  1937 0001:000F5C0C
+  1938 0001:000F5C11  1939 0001:000F5C1B  1942 0001:000F5C20  1945 0001:000F5C2C
+  1947 0001:000F5C32  1948 0001:000F5C46  1952 0001:000F5C58  1953 0001:000F5C65
+  1956 0001:000F5C75  1965 0001:000F5C7C  1966 0001:000F5C8B  1967 0001:000F5C99
+  1968 0001:000F5C9E  1969 0001:000F5CD0  1970 0001:000F5CD4  1971 0001:000F5CF1
+  1972 0001:000F5CF7  1973 0001:000F5D00  1974 0001:000F5D07  1975 0001:000F5D47
+  1982 0001:000F5D50  1985 0001:000F5D5F  1986 0001:000F5D6D  1988 0001:000F5D73
+  1989 0001:000F5D89  1991 0001:000F5D9F  1992 0001:000F5DB0  1993 0001:000F5DCD
+  1994 0001:000F5DE2  1995 0001:000F5DF7  1996 0001:000F5DFE  1998 0001:000F5E1C
+  1999 0001:000F5E33  2000 0001:000F5E48  2001 0001:000F5E5C  1996 0001:000F5E5F
+  2003 0001:000F5E64  2032 0001:000F5E6C  2033 0001:000F5E78  2034 0001:000F5E80
+  2036 0001:000F5E8A  2038 0001:000F5E94  2040 0001:000F5EA6  2041 0001:000F5EAC
+  2042 0001:000F5EBB  2043 0001:000F5ECA  2041 0001:000F5EDD  2046 0001:000F5EE5
+  2048 0001:000F5EF7  2049 0001:000F5EFD  2050 0001:000F5F0E  2051 0001:000F5F1D
+  2049 0001:000F5F30  2054 0001:000F5F36  2055 0001:000F5F3E  2057 0001:000F5F45
+  2165 0001:000F5F4C  2166 0001:000F5F6C  2168 0001:000F5F84  2169 0001:000F5F88
+  2171 0001:000F5F9C  2173 0001:000F5FB2  2174 0001:000F5FB6  2176 0001:000F5FB8
+  2169 0001:000F5FBB  2177 0001:000F5FC0  2178 0001:000F5FC6  2179 0001:000F5FD8
+  2166 0001:000F5FDB  2180 0001:000F5FE0  2183 0001:000F5FEC  2184 0001:000F5FF0
+  2185 0001:000F6017  2186 0001:000F6035  2189 0001:000F603C  2190 0001:000F6040
+  2191 0001:000F6067  2192 0001:000F6085  2195 0001:000F608C  2196 0001:000F6090
+  2197 0001:000F609E  2209 0001:000F60A4  2210 0001:000F60C7  2211 0001:000F60D3
+  2212 0001:000F60DD  2214 0001:000F60E7
+
+Line numbers for ORFn(..\CPRS-Lib\ORFn.pas) segment .itext
+
+  2199 0002:00000A34  2200 0002:00000A3D  2201 0002:00000A4E  2202 0002:00000A5D
+  2203 0002:00000A6C  2204 0002:00000A78  2205 0002:00000A89  2206 0002:00000A9A
+  2208 0002:00000AA6
+
+Line numbers for ORSystem(ORSystem.pas) segment .text
+
+    61 0001:000F6128    62 0001:000F6137    63 0001:000F6147    64 0001:000F615F
+    66 0001:000F6165    67 0001:000F616E    68 0001:000F6179    70 0001:000F6185
+    80 0001:000F618C    81 0001:000F61C2    83 0001:000F61C6    85 0001:000F61D8
+    88 0001:000F6210    90 0001:000F6222    91 0001:000F6236    92 0001:000F6247
+    93 0001:000F626C    94 0001:000F6279    95 0001:000F628A    97 0001:000F629A
+    98 0001:000F62A7   100 0001:000F62E2   101 0001:000F62EF   102 0001:000F6310
+   104 0001:000F631C   106 0001:000F632D   107 0001:000F6343   108 0001:000F6354
+   111 0001:000F6380   112 0001:000F638C   113 0001:000F63A2   115 0001:000F63AE
+   116 0001:000F63B9   118 0001:000F63C4   121 0001:000F63EF   128 0001:000F64F8
+   129 0001:000F6523   130 0001:000F652B   131 0001:000F6540   133 0001:000F654A
+   134 0001:000F6555   135 0001:000F656F   136 0001:000F6585   141 0001:000F65F9
+   146 0001:000F6638   147 0001:000F665D   151 0001:000F66DD   155 0001:000F675D
+   156 0001:000F6766   249 0001:000F6790   250 0001:000F67AF   251 0001:000F67B7
+   252 0001:000F67C6   253 0001:000F67E9   254 0001:000F67FA   261 0001:000F681C
+   262 0001:000F683B   263 0001:000F6843   264 0001:000F6852   265 0001:000F6875
+   266 0001:000F6899   277 0001:000F68BC   278 0001:000F68E1   279 0001:000F68E6
+   281 0001:000F68F9   282 0001:000F690F   283 0001:000F692D   285 0001:000F6945
+   286 0001:000F694B   288 0001:000F694D   279 0001:000F6950   289 0001:000F6955
+   295 0001:000F6988   296 0001:000F69B6   297 0001:000F69BE   299 0001:000F69D5
+   300 0001:000F69EB   301 0001:000F6A0C   303 0001:000F6A24   304 0001:000F6A8E
+   306 0001:000F6A90   297 0001:000F6A93   307 0001:000F6A9C   312 0001:000F6AD8
+   313 0001:000F6AF7   314 0001:000F6B1B   315 0001:000F6B5B   336 0001:000F6B9C
+   337 0001:000F6BA8   338 0001:000F6BB0   339 0001:000F6BBF   340 0001:000F6BCD
+   341 0001:000F6BDA   342 0001:000F6BFA   343 0001:000F6C08   345 0001:000F6C1D
+   347 0001:000F6C2D   352 0001:000F6C50   353 0001:000F6C59   354 0001:000F6C5D
+   355 0001:000F6C6C   356 0001:000F6C7A   357 0001:000F6C87   358 0001:000F6CA7
+   359 0001:000F6CB5   361 0001:000F6CCA   363 0001:000F6CDA   426 0001:000F6D00
+   427 0001:000F6D0F   428 0001:000F6D17   429 0001:000F6D26   430 0001:000F6D34
+   431 0001:000F6D41   432 0001:000F6D61   433 0001:000F6D6F   435 0001:000F6D99
+   437 0001:000F6DA6   439 0001:000F6DBB   441 0001:000F6DCB   491 0001:000F6DD8
+   492 0001:000F6DE1   493 0001:000F6DF0   494 0001:000F6DF7   496 0001:000F6E1B
+   501 0001:000F6E20   503 0001:000F6E39   504 0001:000F6E3D   505 0001:000F6E5A
+   506 0001:000F6E73   508 0001:000F6E9A   509 0001:000F6E9E   511 0001:000F6EC6
+   542 0001:000F6F30   543 0001:000F6F64   544 0001:000F6F68   545 0001:000F6F75
+   547 0001:000F6F7B   548 0001:000F6F8E   549 0001:000F6F92   551 0001:000F6F97
+   552 0001:000F6FAC   553 0001:000F6FD0   556 0001:000F6FF8   557 0001:000F704F
+   559 0001:000F7053   561 0001:000F7256
+
+Line numbers for OR2006Compatibility(OR2006Compatibility.pas) segment .text
+
+    29 0001:000F73CC    30 0001:000F73E1    32 0001:000F73EE    33 0001:000F73F7
+    34 0001:000F7400    36 0001:000F744B
+
+Line numbers for VA508AccessibilityConst(VA508AccessibilityConst.pas) segment .text
+
+    81 0001:00000000
+
+Line numbers for MSAAConstants(MSAAConstants.pas) segment .text
+
+   175 0001:00000000
+
+Line numbers for oleacc2(oleacc2.pas) segment .text
+
+   261 0001:000F7DA4   262 0001:000F7DBA   263 0001:000F7DD6   270 0001:000F7E08
+
+Line numbers for VA508MSAASupport(VA508MSAASupport.pas) segment .text
+
+   111 0001:000F807C   112 0001:000F809B   114 0001:000F80BA   115 0001:000F80C7
+   116 0001:000F80D5   117 0001:000F80DB   119 0001:000F80F5   122 0001:000F8105
+   130 0001:000F8128   131 0001:000F8143   133 0001:000F814C   134 0001:000F8166
+   135 0001:000F8176   136 0001:000F817D   137 0001:000F8182   139 0001:000F819B
+   140 0001:000F81A1   144 0001:000F81C4   145 0001:000F81CA   147 0001:000F81D3
+   148 0001:000F81DD   150 0001:000F81E7   154 0001:000F81E8   155 0001:000F81EF
+   157 0001:000F81F8   158 0001:000F81FF   160 0001:000F8204   166 0001:000F8208
+   167 0001:000F822C   169 0001:000F8235   170 0001:000F8246   172 0001:000F824B
+   174 0001:000F825F   175 0001:000F8278   176 0001:000F827D   177 0001:000F8289
+   172 0001:000F828A   178 0001:000F828D   179 0001:000F8294   180 0001:000F829D
+   187 0001:000F82C4   188 0001:000F82E3   189 0001:000F82F0   190 0001:000F82F8
+   191 0001:000F8306   192 0001:000F8313   193 0001:000F8321   195 0001:000F8327
+   196 0001:000F8346   197 0001:000F8353   199 0001:000F835F   201 0001:000F837E
+   203 0001:000F838E   210 0001:000F83B4   211 0001:000F83D0   212 0001:000F83D9
+   213 0001:000F83DD   214 0001:000F83EA   215 0001:000F83F8   217 0001:000F83FE
+   218 0001:000F840A   219 0001:000F841F   220 0001:000F842B   223 0001:000F8445
+   225 0001:000F8455   231 0001:000F8480   232 0001:000F849F   233 0001:000F84AC
+   234 0001:000F84B4   235 0001:000F84C2   236 0001:000F84CF   237 0001:000F84DD
+   239 0001:000F84E3   240 0001:000F8502   241 0001:000F850F   243 0001:000F851B
+   245 0001:000F8532   247 0001:000F8542   253 0001:000F8568   254 0001:000F8587
+   255 0001:000F8590   256 0001:000F8594   257 0001:000F85A1   258 0001:000F85AF
+   260 0001:000F85B5   261 0001:000F85C1   262 0001:000F85CB   263 0001:000F85D7
+   266 0001:000F85F1   268 0001:000F8601   274 0001:000F8624   275 0001:000F8643
+   276 0001:000F8650   277 0001:000F8658   278 0001:000F8666   279 0001:000F8673
+   280 0001:000F8681   282 0001:000F8687   283 0001:000F86A6   284 0001:000F86B3
+   286 0001:000F86BF   288 0001:000F86D6   290 0001:000F86E6   296 0001:000F870C
+   297 0001:000F872B   298 0001:000F8734   299 0001:000F8738   300 0001:000F8745
+   301 0001:000F8753   303 0001:000F8759   304 0001:000F8765   305 0001:000F876F
+   306 0001:000F877B   309 0001:000F8795   311 0001:000F87A5   320 0001:000F87C8
+   321 0001:000F87D3   322 0001:000F87E2   324 0001:000F87E6   325 0001:000F87F4
+   326 0001:000F8800   329 0001:000F880C   330 0001:000F8818   331 0001:000F881F
+   332 0001:000F8828   338 0001:000F8830   339 0001:000F8836   340 0001:000F883F
+   342 0001:000F8843   343 0001:000F884F   344 0001:000F8852   346 0001:000F885C
+   347 0001:000F8865   353 0001:000F8868   354 0001:000F886E   355 0001:000F8877
+   357 0001:000F887B   358 0001:000F8887   359 0001:000F888A   361 0001:000F8894
+   362 0001:000F889D   365 0001:000F88A0   366 0001:000F88A7   367 0001:000F88BC
+   370 0001:000F88C0   371 0001:000F88C3   377 0001:000F88DE   380 0001:000F8914
+   383 0001:000F8918   384 0001:000F892D   385 0001:000F8932   386 0001:000F8935
+   387 0001:000F8944   388 0001:000F894D   390 0001:000F8956   391 0001:000F895D
+   394 0001:000F8978   395 0001:000F8983   396 0001:000F898A   397 0001:000F8992
+   398 0001:000F8997   399 0001:000F89A3   404 0001:000F89B4   405 0001:000F89B8
+   407 0001:000F89C7   408 0001:000F89DC   410 0001:000F89E0   412 0001:000F8A0A
+   415 0001:000F8A10   417 0001:000F8A14   421 0001:000F8A18   422 0001:000F8A1E
+   429 0001:000F8A20   430 0001:000F8A28   432 0001:000F8A36   434 0001:000F8A4F
+   435 0001:000F8A59   438 0001:000F8A69   439 0001:000F8A6B   442 0001:000F8A6D
+   430 0001:000F8A6E   443 0001:000F8A71   444 0001:000F8A74   450 0001:000F8A7C
+   451 0001:000F8A84   453 0001:000F8A92   455 0001:000F8AAB   456 0001:000F8AB5
+   458 0001:000F8ABC   459 0001:000F8ABE   462 0001:000F8AC0   451 0001:000F8AC1
+   463 0001:000F8AC4   464 0001:000F8AC7   468 0001:000F8ACC   469 0001:000F8ACF
+   483 0001:000F8AD0   484 0001:000F8B10   485 0001:000F8B17   487 0001:000F8B22
+   489 0001:000F8B27   490 0001:000F8B2C   491 0001:000F8B38   493 0001:000F8B41
+   485 0001:000F8B44   494 0001:000F8B47   500 0001:000F8B88   501 0001:000F8B99
+   502 0001:000F8BA0   504 0001:000F8BB4   506 0001:000F8BD3   507 0001:000F8BE3
+   509 0001:000F8BF5   510 0001:000F8C0F   513 0001:000F8C11   502 0001:000F8C12
+   514 0001:000F8C15   523 0001:000F8C1C   524 0001:000F8C3C   525 0001:000F8C45
+   526 0001:000F8C4B   527 0001:000F8C5A   529 0001:000F8C62   530 0001:000F8C6A
+   532 0001:000F8C72   533 0001:000F8C81   534 0001:000F8C93   535 0001:000F8C9E
+   537 0001:000F8CC0   538 0001:000F8CE0   540 0001:000F8CE7   542 0001:000F8CF8
+   544 0001:000F8D31   555 0001:000F8D5C   556 0001:000F8D7C   557 0001:000F8D85
+   558 0001:000F8D9C   559 0001:000F8DA4   560 0001:000F8DAC   561 0001:000F8DC0
+   562 0001:000F8DC9   563 0001:000F8DDB   564 0001:000F8DE4   566 0001:000F8DEA
+   567 0001:000F8DEE   568 0001:000F8E10   569 0001:000F8E17   570 0001:000F8E28
+   572 0001:000F8E5B   574 0001:000F8E6B   575 0001:000F8E83   576 0001:000F8EBD
+   577 0001:000F8EC8   578 0001:000F8ECE   579 0001:000F8EDB   581 0001:000F8F08
+   583 0001:000F8F15   585 0001:000F8F33   587 0001:000F8F4E   588 0001:000F8F89
+   589 0001:000F8F99   591 0001:000F8FAA   592 0001:000F8FB2   593 0001:000F8FB8
+   594 0001:000F8FC5   596 0001:000F9002   583 0001:000F9005   599 0001:000F900E
+   605 0001:000F9078   606 0001:000F907E   608 0001:000F9092   610 0001:000F90B1
+   611 0001:000F90C1   613 0001:000F90DB   606 0001:000F90DC   614 0001:000F90DF
+   620 0001:000F90E4   621 0001:000F90EA   623 0001:000F90FE   625 0001:000F911D
+   626 0001:000F912D   628 0001:000F9143   621 0001:000F9144   629 0001:000F9147
+   632 0001:000F914C   633 0001:000F914F   634 0001:000F915A   635 0001:000F9166
+   636 0001:000F9171   639 0001:000F9174   640 0001:000F9177   641 0001:000F9182
+   642 0001:000F918C   644 0001:000F9190   645 0001:000F91C4   646 0001:000F91CD
+   648 0001:000F91F1   650 0001:000F9205   652 0001:000F920B   654 0001:000F9214
+   655 0001:000F921B   656 0001:000F9222   659 0001:000F9232   663 0001:000F923E
+   664 0001:000F9245   666 0001:000F9261   667 0001:000F9268   668 0001:000F9270
+   670 0001:000F9279   671 0001:000F9299   673 0001:000F92B1   674 0001:000F92BC
+   675 0001:000F92C4   677 0001:000F92CD   679 0001:000F92D4   681 0001:000F92DA
+   682 0001:000F92E0   683 0001:000F92ED   685 0001:000F92F8   690 0001:000F9305
+   691 0001:000F930C   692 0001:000F930E   696 0001:000F9350   697 0001:000F935F
+   698 0001:000F936C   704 0001:000F9370   705 0001:000F9376   706 0001:000F9383
+   707 0001:000F9387   708 0001:000F9391   709 0001:000F939A   714 0001:000F93A0
+   715 0001:000F93A3   716 0001:000F93AA   717 0001:000F93AE   718 0001:000F93B8
+   719 0001:000F93C1   724 0001:000F93C4   725 0001:000F93C7   726 0001:000F93CE
+   727 0001:000F93D2   728 0001:000F93DC   729 0001:000F93E5   735 0001:000F93E8
+   736 0001:000F93ED   738 0001:000F93F1   740 0001:000F93FB   741 0001:000F9408
+   738 0001:000F940B   742 0001:000F940E   744 0001:000F9424   747 0001:000F945C
+   748 0001:000F9463   749 0001:000F947A   753 0001:000F9480   754 0001:000F948F
+   759 0001:000F9490   760 0001:000F9494   761 0001:000F949D   762 0001:000F94A3
+   764 0001:000F94A7   765 0001:000F94AE   767 0001:000F94B5   773 0001:000F94B8
+   774 0001:000F94C0   776 0001:000F94CE   778 0001:000F94E7   779 0001:000F94F1
+   781 0001:000F94F8   782 0001:000F94FA   785 0001:000F94FC   774 0001:000F94FD
+   786 0001:000F9500   787 0001:000F9503   792 0001:000F9524   794 0001:000F9542
+
+Line numbers for VA508MSAASupport(VA508MSAASupport.pas) segment .itext
+
+   789 0002:00000ADC   791 0002:00000AEF
+
+Line numbers for VA508AccessibilityRouter(..\VA\VA508Accessibility\VA508AccessibilityRouter.pas) segment .text
+
+   118 0001:000F98BC   119 0001:000F98C5   120 0001:000F98CB   121 0001:000F98D2
+   123 0001:000F98DB   124 0001:000F98E2   126 0001:000F98EB   129 0001:000F98F5
+   133 0001:000F98F8   135 0001:000F9901   137 0001:000F990A   138 0001:000F991B
+   141 0001:000F9927   143 0001:000F9938   144 0001:000F993D   149 0001:000F9940
+   150 0001:000F995C   152 0001:000F9969   153 0001:000F9973   155 0001:000F9982
+   156 0001:000F9997   157 0001:000F99A2   158 0001:000F99D4   159 0001:000F99F1
+   163 0001:000F9A0B   170 0001:000F9C3C   171 0001:000F9C42   174 0001:000F9C55
+   175 0001:000F9C61   176 0001:000F9C70   177 0001:000F9C77   178 0001:000F9C7D
+   179 0001:000F9C8D   181 0001:000F9C99   183 0001:000F9CA0   184 0001:000F9CB8
+   186 0001:000F9CC1   188 0001:000F9CC8   189 0001:000F9CF7   190 0001:000F9D01
+   192 0001:000F9D0A   194 0001:000F9D13   195 0001:000F9D1E   197 0001:000F9D2A
+   201 0001:000F9D33   202 0001:000F9D3A   206 0001:000F9D3F   207 0001:000F9D46
+   212 0001:000F9D80   213 0001:000F9DA8   215 0001:000F9DB5   216 0001:000F9DDB
+   217 0001:000F9DE4   218 0001:000F9DF5   219 0001:000F9E06   220 0001:000F9E13
+   221 0001:000F9E1C   224 0001:000F9E50   229 0001:000F9E84   230 0001:000F9E87
+   231 0001:000F9E92   234 0001:000F9E98   235 0001:000F9EAA   236 0001:000F9EB9
+   237 0001:000F9EC8   238 0001:000F9ECC   239 0001:000F9ED0   240 0001:000F9EDF
+   250 0001:000F9EFC   251 0001:000F9F1C   252 0001:000F9F24   254 0001:000F9F38
+   255 0001:000F9F4D   256 0001:000F9F58   257 0001:000F9F6A   259 0001:000F9F79
+   261 0001:000F9F9C   262 0001:000F9FC3   263 0001:000F9FDD   264 0001:000F9FF2
+   265 0001:000FA008   266 0001:000FA00E   267 0001:000FA024   270 0001:000FA074
+   271 0001:000FA07F   272 0001:000FA084   273 0001:000FA08C   274 0001:000FA094
+   275 0001:000FA09C   276 0001:000FA0A8   284 0001:000FA0B8   285 0001:000FA0D9
+   286 0001:000FA0E7   287 0001:000FA0EF   288 0001:000FA105   289 0001:000FA117
+   291 0001:000FA190   292 0001:000FA1C4   293 0001:000FA206   296 0001:000FA230
+   297 0001:000FA24F   298 0001:000FA27B   299 0001:000FA282   305 0001:000FA2A4
+   306 0001:000FA2A8   307 0001:000FA2B1   308 0001:000FA2BD   309 0001:000FA2C7
+   310 0001:000FA2CB   313 0001:000FA2D0   314 0001:000FA2F0   315 0001:000FA300
+   316 0001:000FA310   325 0001:000FA334   326 0001:000FA36C   327 0001:000FA37F
+   328 0001:000FA38D   330 0001:000FA395   331 0001:000FA3A3   332 0001:000FA3AB
+   333 0001:000FA3B0   334 0001:000FA3B9   336 0001:000FA3BD   337 0001:000FA3CB
+   338 0001:000FA3D1   340 0001:000FA3D5   341 0001:000FA3DF   343 0001:000FA40E
+   347 0001:000FA41D   351 0001:000FA448   352 0001:000FA475   353 0001:000FA486
+   354 0001:000FA497   360 0001:000FA4C0   361 0001:000FA4D4   362 0001:000FA4DF
+   363 0001:000FA4EC   364 0001:000FA4EF   381 0001:000FA514   382 0001:000FA536
+   383 0001:000FA540   384 0001:000FA54E   385 0001:000FA55D   386 0001:000FA56B
+   388 0001:000FA589   390 0001:000FA5A5   391 0001:000FA5CE   392 0001:000FA5DC
+   393 0001:000FA5F3   394 0001:000FA601   395 0001:000FA60F   396 0001:000FA617
+   397 0001:000FA625   398 0001:000FA630   399 0001:000FA63C   400 0001:000FA640
+   401 0001:000FA65D   402 0001:000FA661   404 0001:000FA682   406 0001:000FA694
+   409 0001:000FA6B1   411 0001:000FA6C1   388 0001:000FA6C4   414 0001:000FA6DA
+   417 0001:000FA6F7   419 0001:000FA709   421 0001:000FA74C   422 0001:000FA76A
+   423 0001:000FA777   424 0001:000FA77E   425 0001:000FA78C   427 0001:000FA799
+   428 0001:000FA7A7   429 0001:000FA7AE   430 0001:000FA7BE   432 0001:000FA7D3
+   433 0001:000FA7E3   434 0001:000FA7F9   435 0001:000FA818   430 0001:000FA819
+   436 0001:000FA81C   438 0001:000FA83E   442 0001:000FA84F   444 0001:000FA863
+   446 0001:000FA872   456 0001:000FA89C   457 0001:000FA8CA   458 0001:000FA8E8
+   459 0001:000FA8FB   460 0001:000FA92C   461 0001:000FA952   463 0001:000FA9CC
+   464 0001:000FAA06   465 0001:000FAA13   466 0001:000FAA24   467 0001:000FAA36
+   468 0001:000FAA45   469 0001:000FAA54   472 0001:000FAAAC   473 0001:000FAAD9
+   474 0001:000FAAEA   477 0001:000FAB14   478 0001:000FAB17   479 0001:000FAB1B
+   481 0001:000FAB1F   482 0001:000FAB26   484 0001:000FAB2A   487 0001:000FAB2C
+   488 0001:000FAB2F   489 0001:000FAB3A   492 0001:000FAB40   493 0001:000FAB65
+   494 0001:000FAB75   495 0001:000FAB83   497 0001:000FABB0   499 0001:000FABBF
+   518 0001:000FABE4   519 0001:000FABF0   521 0001:000FABFD   522 0001:000FAC0B
+   523 0001:000FAC12   526 0001:000FAC23   527 0001:000FAC29   528 0001:000FAC2E
+   529 0001:000FAC33   530 0001:000FAC38   531 0001:000FAC3D   532 0001:000FAC42
+   533 0001:000FAC47   534 0001:000FAC4C   535 0001:000FAC4F   538 0001:000FAC53
+   539 0001:000FAC71   540 0001:000FAC78   542 0001:000FACA0   536 0001:000FACA1
+   544 0001:000FACB2   547 0001:000FACFA   550 0001:000FAD0B   556 0001:000FAD14
+   557 0001:000FAD17   560 0001:000FAD1C   561 0001:000FAD2D   564 0001:000FAD44
+   565 0001:000FAD55   569 0001:000FAD6C   571 0001:000FAD8D   574 0001:000FADB4
+   575 0001:000FADC5   579 0001:000FADDC   580 0001:000FADDF   583 0001:000FADE4
+   584 0001:000FADF5   591 0001:000FAE0C   592 0001:000FAE2E   593 0001:000FAE38
+   594 0001:000FAE41   595 0001:000FAE4B   596 0001:000FAE54   598 0001:000FAE5E
+
+Line numbers for VA508AccessibilityRouter(..\VA\VA508Accessibility\VA508AccessibilityRouter.pas) segment .itext
+
+   586 0002:00000AF0   587 0002:00000AF9   588 0002:00000B05   590 0002:00000B10
+
+Line numbers for VA508ScreenReaderDLLLinker(VA508ScreenReaderDLLLinker.pas) segment .text
+
+   190 0001:000FAE78   191 0001:000FAE7F   192 0001:000FAE86   193 0001:000FAE8D
+   194 0001:000FAE94   195 0001:000FAE9B   196 0001:000FAEA2   197 0001:000FAEA9
+   198 0001:000FAEB0   199 0001:000FAEB7   203 0001:000FAEB8   205 0001:000FAEC1
+   206 0001:000FAED7   207 0001:000FAEDE   208 0001:000FAEE7   210 0001:000FAEEC
+   211 0001:000FAEF3   215 0001:000FAEF4   217 0001:000FAEFD   218 0001:000FAF03
+   219 0001:000FAF0E   220 0001:000FAF15   222 0001:000FAF1A   227 0001:000FAF1C
+   228 0001:000FAF32   229 0001:000FAF41   230 0001:000FAF54   232 0001:000FAF61
+   233 0001:000FAF76   234 0001:000FAF8B   235 0001:000FAFA0   236 0001:000FAFB5
+   237 0001:000FAFCA   238 0001:000FAFDF   239 0001:000FAFF4   241 0001:000FAFFB
+   244 0001:000FB088   247 0001:000FB092   248 0001:000FB0A7   250 0001:000FB0AB
+   251 0001:000FB0AD   253 0001:000FB0BC   254 0001:000FB0C7   256 0001:000FB0CE
+   264 0001:000FB0D4   265 0001:000FB0D7   266 0001:000FB0EC   267 0001:000FB0FA
+   269 0001:000FB107   270 0001:000FB11C   271 0001:000FB12A   273 0001:000FB137
+   274 0001:000FB14C   275 0001:000FB15A   277 0001:000FB167   278 0001:000FB17C
+   279 0001:000FB18A   281 0001:000FB193   282 0001:000FB1A8   283 0001:000FB1B6
+   285 0001:000FB1BF   286 0001:000FB1D4   287 0001:000FB1E2   289 0001:000FB1EB
+   290 0001:000FB200   297 0001:000FB20E   298 0001:000FB213   303 0001:000FB284
+   304 0001:000FB2A1   305 0001:000FB2A8   306 0001:000FB2B6   308 0001:000FB2C3
+   309 0001:000FB2CA   310 0001:000FB2D7   312 0001:000FB2DB   313 0001:000FB2EE
+   315 0001:000FB2F7   316 0001:000FB305   317 0001:000FB30F   318 0001:000FB318
+   320 0001:000FB332   321 0001:000FB33D   326 0001:000FB34C   333 0001:000FB36C
+   334 0001:000FB3B9   335 0001:000FB3C3   336 0001:000FB3CE   337 0001:000FB3D2
+   338 0001:000FB3DF   339 0001:000FB40A   340 0001:000FB418   342 0001:000FB41C
+   344 0001:000FB44A   346 0001:000FB46E   340 0001:000FB47B   349 0001:000FB48C
+   351 0001:000FB49F   353 0001:000FB520   354 0001:000FB538   356 0001:000FB541
+   357 0001:000FB54A   358 0001:000FB55B   359 0001:000FB56F   360 0001:000FB575
+   361 0001:000FB589   362 0001:000FB58F   363 0001:000FB5B5   365 0001:000FB5BC
+   369 0001:000FB5E4   370 0001:000FB5E9   371 0001:000FB5F8   377 0001:000FB5FC
+   378 0001:000FB605   379 0001:000FB607   380 0001:000FB60C   381 0001:000FB61E
+   383 0001:000FB632   384 0001:000FB639   385 0001:000FB64C   386 0001:000FB650
+   388 0001:000FB656   389 0001:000FB661   391 0001:000FB668   381 0001:000FB669
+   392 0001:000FB66C   397 0001:000FB688   398 0001:000FB6A6   399 0001:000FB6AF
+   401 0001:000FB6B9
+
+Line numbers for VA508ScreenReaderDLLLinker(VA508ScreenReaderDLLLinker.pas) segment .itext
+
+   394 0002:00000B14   396 0002:00000B1B
+
+Line numbers for VA508DelphiCompatibility(..\VA\VA508Accessibility\VA508DelphiCompatibility.pas) segment .text
+
+    85 0001:00102AE4    86 0001:00102B01    87 0001:00102B07    88 0001:00102B12
+    89 0001:00102B28    90 0001:00102B48    93 0001:00102B80    94 0001:00102B9D
+    95 0001:00102BA3    96 0001:00102BB0    97 0001:00102BBD    99 0001:00102BF8
+   100 0001:00102C19   101 0001:00102C1B   102 0001:00102C23   103 0001:00102C27
+   104 0001:00102C42   105 0001:00102C52   107 0001:00102C6A   108 0001:00102C7F
+   110 0001:00102C85   112 0001:00102C9C   114 0001:00102CA2   115 0001:00102CB0
+   116 0001:00102CB6   117 0001:00102CC3   120 0001:00102CCD   122 0001:00102CDA
+   124 0001:00102CF6   126 0001:00102D0C   127 0001:00102D23   128 0001:00102D35
+   130 0001:00102D48   131 0001:00102D50   132 0001:00102D56   133 0001:00102D63
+   135 0001:00102D6D   122 0001:00102D6E   137 0001:00102D73   140 0001:00102DA8
+   141 0001:00102DCC   142 0001:00102DDB   143 0001:00102DEC   144 0001:00102DFD
+   145 0001:00102E0E   146 0001:00102E1F   147 0001:00102E30   149 0001:00102E41
+   152 0001:00102E48   153 0001:00102E74   156 0001:00102EA6   173 0001:00102EB5
+   185 0001:00102F0C   186 0001:00102F12   191 0001:00102F14   192 0001:00102F17
+   193 0001:00102F1B   195 0001:00102F29   196 0001:00102F35   199 0001:00102F6C
+   200 0001:00102F6F   201 0001:00102F73   203 0001:00102F81   204 0001:00102F8D
+   207 0001:00102FE0   208 0001:00102FE3   209 0001:00102FEF   210 0001:00102FFD
+   211 0001:0010300B   212 0001:00103019   214 0001:00103020   218 0001:00103064
+   219 0001:00103076   220 0001:0010308F   223 0001:001030B0   224 0001:001030B6
+   225 0001:001030C4   228 0001:001030C8   229 0001:001030CE   230 0001:001030DF
+   233 0001:001030E4   234 0001:001030EA   235 0001:001030F8   240 0001:001030FC
+   241 0001:0010310E   242 0001:00103127   248 0001:00103148   249 0001:0010314B
+   250 0001:0010314D   251 0001:00103156   253 0001:00103164   254 0001:00103170
+   261 0001:001031B0   262 0001:001031B5   263 0001:001031B7   264 0001:001031BE
+   265 0001:001031C2   267 0001:001031CB   268 0001:001031DB   273 0001:001031E0
+   274 0001:001031E1   275 0001:001031E3   277 0001:001031F1   278 0001:001031FF
+   280 0001:00103203   283 0001:00103208   284 0001:00103212   289 0001:00103214
+   290 0001:00103216   291 0001:00103218   292 0001:0010323A   298 0001:00103240
+   299 0001:00103245   300 0001:00103247   301 0001:0010324E   302 0001:00103252
+   304 0001:0010325B   305 0001:0010326B   313 0001:00103270   316 0001:00103282
+   319 0001:0010329B   336 0001:001032BC   337 0001:001032BF   340 0001:001032CB
+   414 0001:001032E0   415 0001:001032E6   431 0001:001032ED   432 0001:001032F9
+   433 0001:00103302   434 0001:0010330E   435 0001:0010331A   474 0001:0010336C
+   475 0001:0010336E   476 0001:00103377   477 0001:00103380   478 0001:00103389
+   479 0001:00103390   480 0001:00103395   481 0001:0010339C   498 0001:001033A0
+   499 0001:001033C8   500 0001:001033CA   501 0001:001033D0   502 0001:001033D9
+   506 0001:001033EB   507 0001:001033F4   509 0001:0010341D   510 0001:00103425
+   511 0001:0010342B   512 0001:00103469   520 0001:00103483   521 0001:0010348C
+   523 0001:001034B4   524 0001:001034BC   525 0001:001034C2   526 0001:001034FF
+   532 0001:00103519   533 0001:00103540   534 0001:00103546   535 0001:00103553
+   538 0001:0010356B   539 0001:00103578   545 0001:00103608   546 0001:0010361A
+   547 0001:00103633   550 0001:00103654   551 0001:00103657   552 0001:00103663
+   556 0001:00103674   557 0001:00103677   558 0001:00103683   564 0001:00103698
+   565 0001:001036AF   566 0001:001036B1   567 0001:001036BA   568 0001:001036C0
+   570 0001:001036C4   571 0001:001036E4   568 0001:001036EA   573 0001:001036EE
+   578 0001:0010371C   579 0001:0010372E   580 0001:00103747   583 0001:00103768
+   584 0001:0010376E   585 0001:00103777   590 0001:0010377C   591 0001:0010378E
+   592 0001:001037A7   595 0001:001037C8   596 0001:001037CE   597 0001:001037D7
+
+Line numbers for VA508DelphiCompatibility(..\VA\VA508Accessibility\VA508DelphiCompatibility.pas) segment .itext
+
+   599 0002:00000CCC   600 0002:00000CD5   602 0002:00000CDA
+
+Line numbers for HRBuffers(HRBuffers.pas) segment .text
+
+   612 0001:00000000
+
+Line numbers for HRParser(HRParser.pas) segment .text
+
+   329 0001:00000000
+
+Line numbers for HRParserPas(HRParserPas.pas) segment .text
+
+   235 0001:00000000
+
+Line numbers for VA508ImageListLabeler(VA508ImageListLabeler.pas) segment .text
+
+   143 0001:00103D5C   144 0001:00103D63   147 0001:00103D64   148 0001:00103D7E
+   149 0001:00103D89   150 0001:00103D8D   151 0001:00103D9C   152 0001:00103DAD
+   153 0001:00103DBE   154 0001:00103DCF   155 0001:00103DD9   156 0001:00103DE6
+   159 0001:00103E08   160 0001:00103E13   161 0001:00103E1B   162 0001:00103E23
+   163 0001:00103E2C   164 0001:00103E35   165 0001:00103E3D   166 0001:00103E45
+   167 0001:00103E4D   168 0001:00103E55   169 0001:00103E61   175 0001:00103E70
+   176 0001:00103E8D   177 0001:00103E93   179 0001:00103E99   180 0001:00103EA0
+   182 0001:00103EAC   186 0001:00103EB8   187 0001:00103EBF   189 0001:00103ECB
+   191 0001:00103ED5   192 0001:00103EE1   194 0001:00103EFB   195 0001:00103F03
+   200 0001:00103F28   201 0001:00103F31   203 0001:00103F3F   204 0001:00103F46
+   205 0001:00103F4D   206 0001:00103F5B   208 0001:00103F70   209 0001:00103F82
+   211 0001:00103F8B   206 0001:00103F8C   212 0001:00103F8F   213 0001:00103F98
+   215 0001:00103FB1   218 0001:00103FC0   221 0001:00103FC8   222 0001:00103FC9
+   223 0001:00103FCF   224 0001:00103FD5   225 0001:00103FDC   226 0001:00103FE6
+   229 0001:00103FE8   230 0001:00103FEB   231 0001:00103FF2   232 0001:00103FF6
+   233 0001:00104002   234 0001:0010400B   243 0001:00104010   244 0001:0010401F
+   245 0001:00104046   246 0001:00104065   247 0001:00104074   248 0001:00104082
+   250 0001:00104097   251 0001:001040A6   253 0001:001040AD   254 0001:001040B7
+   255 0001:001040C5   256 0001:001040C9   259 0001:001040CD   260 0001:001040D9
+   262 0001:001040DD   263 0001:001040E1   265 0001:001040FB   248 0001:001040FC
+   266 0001:001040FF   268 0001:00104110   269 0001:0010411D   270 0001:0010412B
+   266 0001:0010412C   272 0001:0010413C   273 0001:00104147   275 0001:00104158
+   279 0001:00104160   280 0001:00104169   281 0001:00104174   282 0001:0010417E
+   283 0001:00104187   289 0001:0010418C   290 0001:001041AD   291 0001:001041BA
+   293 0001:001041C3   294 0001:001041CB   296 0001:001041D0   298 0001:001041DC
+   299 0001:001041E3   300 0001:001041F1   302 0001:001041FB   303 0001:00104206
+   305 0001:00104214   306 0001:0010421C   308 0001:00104224   309 0001:0010422C
+   310 0001:0010423D   312 0001:00104250   313 0001:00104267   315 0001:0010427C
+   316 0001:0010428D   317 0001:00104291   318 0001:0010429E   313 0001:0010429F
+   319 0001:001042A2   321 0001:001042B7   322 0001:001042C0   323 0001:001042D2
+   319 0001:001042D3   326 0001:001042D6   327 0001:001042E0   329 0001:001042F9
+   332 0001:00104308   335 0001:0010432C   336 0001:00104332   338 0001:00104337
+   340 0001:0010433B   341 0001:00104343   343 0001:0010434C   345 0001:0010434F
+   350 0001:00104354   351 0001:00104357   352 0001:0010435E   355 0001:00104360
+   356 0001:00104375   357 0001:00104384   358 0001:00104393   359 0001:001043A2
+   360 0001:001043A5   361 0001:001043B6   362 0001:001043C2   363 0001:001043CF
+   364 0001:001043DC   365 0001:001043E9   368 0001:00104450   369 0001:0010445B
+   370 0001:00104462   371 0001:0010446A   372 0001:00104472   373 0001:0010447A
+   374 0001:00104486   377 0001:00104494   378 0001:0010449D   379 0001:001044A9
+   383 0001:001044B0   384 0001:001044B8   390 0001:001044BC   391 0001:001044C2
+   393 0001:001044D9   395 0001:001044EF   397 0001:001044FD   396 0001:00104507
+   398 0001:00104514   399 0001:00104522   393 0001:00104525   401 0001:00104528
+   402 0001:0010452B   405 0001:00104530   406 0001:00104536   407 0001:0010453F
+   410 0001:00104544   411 0001:00104551   412 0001:00104563   413 0001:00104574
+   414 0001:00104583   416 0001:00104591   418 0001:001045A6   419 0001:001045B5
+   421 0001:001045C3   423 0001:001045D8   424 0001:001045ED   426 0001:001045F4
+   432 0001:00104608   433 0001:0010460E   435 0001:00104614   436 0001:00104618
+   438 0001:00104623   440 0001:00104639   441 0001:00104645   444 0001:0010464D
+   443 0001:00104657   445 0001:00104664   447 0001:00104672   438 0001:00104675
+   450 0001:00104678   451 0001:0010467B   455 0001:00104680   456 0001:00104683
+   460 0001:00104684   461 0001:00104687   462 0001:0010468E   463 0001:00104695
+   466 0001:00104698   467 0001:0010469B   468 0001:001046A3   469 0001:001046AB
+   470 0001:001046AF   478 0001:001046B4   479 0001:001046B7   480 0001:001046BE
+   481 0001:001046C5   488 0001:001046C8   489 0001:001046CE   492 0001:001046DF
+   493 0001:001046E9   496 0001:001046F7   497 0001:00104700   500 0001:00104704
+   501 0001:00104707   502 0001:00104713   505 0001:00104718   506 0001:0010472A
+   507 0001:00104733   508 0001:0010473A   509 0001:00104741   512 0001:0010475C
+   513 0001:00104767   514 0001:00104773   517 0001:00104784   518 0001:00104788
+   519 0001:0010479C   523 0001:001047A0   524 0001:001047A8   527 0001:001047AC
+   528 0001:001047B2   530 0001:001047BE   531 0001:001047C8   533 0001:001047DA
+   538 0001:001047E0   539 0001:001047E7   540 0001:001047F4   543 0001:001047F9
+   544 0001:001047FC   545 0001:00104809   547 0001:00104812   548 0001:00104829
+   550 0001:0010482E   551 0001:00104835   553 0001:0010483A   554 0001:00104841
+   558 0001:00104853   562 0001:00104858   564 0001:00104866   566 0001:00104869
+   576 0001:0010486C   577 0001:00104881   578 0001:00104890   579 0001:00104893
+   582 0001:001048B0   583 0001:001048BB   584 0001:001048C2   585 0001:001048CE
+   589 0001:001048DC   590 0001:001048E2   591 0001:001048EB   595 0001:001048F0
+   596 0001:001048F3   600 0001:001048F4   601 0001:001048F7   602 0001:001048FE
+   603 0001:00104908   616 0001:0010490C   617 0001:00104912   619 0001:00104923
+   620 0001:00104925   623 0001:00104930   624 0001:00104939   629 0001:0010493C
+   630 0001:0010494A   631 0001:00104951   634 0001:00104954   635 0001:0010495F
+   636 0001:00104968   637 0001:0010496E   638 0001:00104976   639 0001:00104982
+   642 0001:00104990   643 0001:001049B3   644 0001:001049D3   646 0001:00104A0C
+   647 0001:00104A15   656 0001:00104A54   657 0001:00104A5A   658 0001:00104A61
+   659 0001:00104A6B   660 0001:00104A7C   661 0001:00104A89   662 0001:00104A8D
+   664 0001:00104AA1   666 0001:00104AA3   667 0001:00104AAB   668 0001:00104AB6
+   669 0001:00104ABE   672 0001:00104AC3   674 0001:00104AD4   676 0001:00104AD6
+   677 0001:00104ADE   678 0001:00104AE9   679 0001:00104AF1   680 0001:00104AFC
+   681 0001:00104B04   684 0001:00104B07   687 0001:00104B20   688 0001:00104B24
+   689 0001:00104B38   695 0001:00104B3C   696 0001:00104B62   698 0001:00104B6B
+   700 0001:00104B6F   701 0001:00104B73   703 0001:00104B80   705 0001:00104B8D
+   706 0001:00104B91   708 0001:00104B93   701 0001:00104B96   709 0001:00104B9B
+   710 0001:00104BA1   712 0001:00104BE3   713 0001:00104BF0   714 0001:00104BF8
+   716 0001:00104BFC   717 0001:00104C02   718 0001:00104C19   720 0001:00104C23
+   721 0001:00104C26   723 0001:00104C34   725 0001:00104CBA
+
+Line numbers for VA508Classes(VA508Classes.pas) segment .text
+
+   112 0001:00104CF8   113 0001:00104D04   114 0001:00104D09   116 0001:00104D1A
+   117 0001:00104D25   119 0001:00104D3B   120 0001:00104D40   122 0001:00104D42
+   124 0001:00104D59   125 0001:00104D5E   127 0001:00104D60   114 0001:00104D61
+   128 0001:00104D64   139 0001:00104D70   140 0001:00104D7C   142 0001:00104D9C
+   143 0001:00104D9E   145 0001:00104DB3   147 0001:00104DCF   148 0001:00104DD1
+   150 0001:00104DD3   143 0001:00104DD4   151 0001:00104DD7   153 0001:00104DDB
+   157 0001:00104E34   159 0001:00104E8C   160 0001:00104EB7   161 0001:00104EBD
+   162 0001:00104EF6   164 0001:00104F08   167 0001:00104F10   169 0001:00104F75
+   171 0001:00104F87   172 0001:00104F94   173 0001:00104F98   174 0001:00104FA5
+   176 0001:00104FF7   177 0001:00104FFD   180 0001:00105009   181 0001:00105018
+   184 0001:00105091   194 0001:001051B0   195 0001:001051DE   196 0001:001051E8
+   197 0001:001051EE   198 0001:001051F6   199 0001:00105208   201 0001:0010521F
+   202 0001:0010522E   203 0001:0010523C   204 0001:00105240   205 0001:00105244
+   207 0001:00105255   209 0001:0010526D   210 0001:00105271   213 0001:00105286
+   215 0001:0010529E   216 0001:001052A2   218 0001:001052B5   205 0001:001052B6
+   219 0001:001052B9   220 0001:001052C1   221 0001:001052C7   222 0001:001052E5
+   224 0001:001052EB   225 0001:001052F1   226 0001:001052FE   228 0001:0010532D
+   230 0001:00105333   233 0001:001053A5   236 0001:001053B5   561 0001:00105454
+
+Line numbers for VA508AccessibilityManager(..\VA\VA508Accessibility\VA508AccessibilityManager.pas) segment .text
+
+   531 0001:00106404   532 0001:00106416   533 0001:00106427   537 0001:00106428
+   538 0001:00106431   539 0001:00106442   540 0001:00106447   544 0001:00106448
+   545 0001:00106451   546 0001:0010645B   547 0001:00106464   548 0001:0010646E
+   549 0001:00106477   550 0001:00106481   551 0001:0010648A   552 0001:00106494
+   553 0001:0010649D   554 0001:001064A7   555 0001:001064B0   556 0001:001064BA
+   561 0001:001064BC   562 0001:001064C2   565 0001:001064D3   566 0001:001064D9
+   567 0001:001064DF   568 0001:001064E5   569 0001:001064F0   570 0001:001064FB
+   571 0001:00106502   573 0001:0010650C   574 0001:00106515   577 0001:00106518
+   578 0001:0010652A   579 0001:00106533   582 0001:00106550   583 0001:0010655B
+   584 0001:0010656A   585 0001:00106570   586 0001:00106578   587 0001:00106584
+   590 0001:00106594   591 0001:001065B9   593 0001:001065BF   597 0001:0010660D
+   598 0001:0010662A   601 0001:0010666C   602 0001:00106672   603 0001:00106675
+   604 0001:00106686   605 0001:0010668A   609 0001:00106690   610 0001:00106696
+   614 0001:00106698   615 0001:0010669B   618 0001:0010669C   619 0001:001066A2
+   623 0001:001066D7   624 0001:001066E6   625 0001:001066F1   627 0001:00106701
+   630 0001:0010670C   631 0001:00106722   633 0001:00106727   634 0001:0010672C
+   636 0001:00106730   637 0001:00106735   638 0001:0010673D   640 0001:00106747
+   641 0001:0010675A   643 0001:00106777   646 0001:00106798   647 0001:0010679B
+   649 0001:001067A0   650 0001:001067A5   652 0001:001067A9   653 0001:001067B1
+   654 0001:001067B9   657 0001:001067BD   660 0001:001067C0   661 0001:001067C6
+   665 0001:001067F8   666 0001:00106802   668 0001:00106808   669 0001:0010680D
+   670 0001:00106815   673 0001:00106819   676 0001:0010681C   677 0001:00106822
+   679 0001:0010682E   680 0001:00106838   682 0001:0010683E   683 0001:00106843
+   684 0001:0010684B   687 0001:0010684F   690 0001:00106854   691 0001:00106857
+   692 0001:0010685B   694 0001:00106861   695 0001:00106867   698 0001:0010686D
+   699 0001:0010687F   701 0001:00106885   702 0001:00106891   704 0001:00106895
+   709 0001:00106898   710 0001:0010689B   711 0001:001068A2   717 0001:001068A4
+   718 0001:001068AD   720 0001:001068C3   721 0001:001068CC   722 0001:001068D8
+   723 0001:001068E3   724 0001:001068E7   726 0001:001068EC   730 0001:001068F0
+   731 0001:00106905   732 0001:00106914   733 0001:00106917   734 0001:00106928
+   735 0001:00106931   736 0001:00106938   737 0001:0010694F   740 0001:0010696C
+   741 0001:00106977   742 0001:00106982   743 0001:00106987   744 0001:0010698F
+   745 0001:0010699B   750 0001:001069AC   751 0001:001069B3   758 0001:001069B4
+   759 0001:001069D7   760 0001:001069D9   762 0001:001069DD   763 0001:001069E7
+   764 0001:001069F5   766 0001:001069FB   768 0001:00106A01   769 0001:00106A0A
+   770 0001:00106A15   774 0001:00106A22   776 0001:00106A2F   780 0001:00106A58
+   781 0001:00106A5E   782 0001:00106A67   786 0001:00106A6C   787 0001:00106A6F
+   791 0001:00106A70   792 0001:00106A89   793 0001:00106A8D   795 0001:00106AAB
+   796 0001:00106AAD   803 0001:00106AD4   804 0001:00106AED   805 0001:00106AF6
+   806 0001:00106B02   807 0001:00106B06   808 0001:00106B10   809 0001:00106B1B
+   811 0001:00106B1F   812 0001:00106B29   814 0001:00106B33   830 0001:00106B58
+   831 0001:00106B74   832 0001:00106B7D   833 0001:00106B8C   834 0001:00106B94
+   835 0001:00106B9E   837 0001:00106BAD   838 0001:00106BBA   840 0001:00106BC4
+   845 0001:00106BE8   846 0001:00106BFD   847 0001:00106C08   848 0001:00106C15
+   849 0001:00106C1A   850 0001:00106C2B   851 0001:00106C32   854 0001:00106C50
+   855 0001:00106C5B   856 0001:00106C62   857 0001:00106C69   858 0001:00106C6E
+   859 0001:00106C74   860 0001:00106C7C   861 0001:00106C88   873 0001:00106C98
+   874 0001:00106CBD   875 0001:00106CC2   877 0001:00106D07   878 0001:00106D0D
+   880 0001:00106D12   882 0001:00106D2A   884 0001:00106D7D   885 0001:00106D8B
+   887 0001:00106D8D   880 0001:00106D90   888 0001:00106D95   890 0001:00106DBC
+   891 0001:00106DE3   892 0001:00106E02   893 0001:00106E0F   894 0001:00106E11
+   896 0001:00106E14   897 0001:00106E23   899 0001:00106E27   900 0001:00106E3B
+   901 0001:00106E4A   903 0001:00106E56   904 0001:00106E5A   905 0001:00106E5E
+   906 0001:00106E60   928 0001:00106E98   929 0001:00106E9E   930 0001:00106EAD
+   939 0001:00106EB0   940 0001:00106EC6   943 0001:00106EF4   944 0001:00106EFB
+   945 0001:00106EFD   946 0001:00106F04   947 0001:00106F12   949 0001:00106F23
+   950 0001:00106F33   952 0001:00106F35   953 0001:00106F46   954 0001:00106F5A
+   956 0001:00106F6C   957 0001:00106F6E   959 0001:00106F74   960 0001:00106F85
+   961 0001:00106F92   962 0001:00106F95   965 0001:00106FA4   966 0001:00106FA6
+   963 0001:00106FBC   968 0001:00106FCB   969 0001:00106FD6   973 0001:00106FEC
+   974 0001:00106FEF   981 0001:00106FF0   982 0001:00107022   983 0001:0010702A
+   984 0001:0010702E   986 0001:00107038   987 0001:00107048   989 0001:00107056
+   990 0001:00107061   991 0001:00107072   992 0001:0010707D   994 0001:0010707F
+   984 0001:00107082   995 0001:00107085  1038 0001:001070B8  1039 0001:001070E2
+  1040 0001:0010710F  1042 0001:00107117  1043 0001:00107126  1044 0001:00107134
+  1045 0001:00107140  1046 0001:00107153  1047 0001:0010715C  1048 0001:00107167
+  1049 0001:00107175  1050 0001:00107187  1052 0001:0010718F  1053 0001:001071A0
+  1054 0001:001071AF  1055 0001:001071BA  1050 0001:001071BB  1057 0001:001071CB
+  1059 0001:001071DE  1061 0001:001071F5  1065 0001:00107231  1066 0001:00107240
+  1067 0001:00107243  1076 0001:00107280  1077 0001:001072A1  1079 0001:001072A4
+  1080 0001:001072B2  1082 0001:001072B6  1083 0001:001072C9  1084 0001:001072D7
+  1086 0001:001072E5  1089 0001:001072F5  1091 0001:001072F7  1092 0001:001072FF
+  1093 0001:00107321  1095 0001:00107325  1096 0001:00107327  1108 0001:0010735C
+  1109 0001:0010737F  1110 0001:00107383  1113 0001:00107387  1114 0001:00107392
+  1116 0001:001073A3  1125 0001:001073C8  1126 0001:001073D1  1127 0001:001073D8
+  1129 0001:001073E3  1131 0001:001073F7  1132 0001:00107404  1133 0001:00107410
+  1135 0001:00107429  1136 0001:00107439  1138 0001:0010743F  1139 0001:0010744B
+  1140 0001:00107460  1142 0001:0010746B  1143 0001:00107471  1144 0001:0010747D
+  1145 0001:00107483  1146 0001:0010748F  1147 0001:00107495  1149 0001:001074A0
+  1129 0001:001074A3  1150 0001:001074AA  1151 0001:001074B5  1153 0001:001074BD
+  1154 0001:001074C3  1155 0001:001074CA  1165 0001:001074D4  1166 0001:001074E2
+  1167 0001:001074E8  1170 0001:001074FA  1171 0001:0010750C  1172 0001:00107510
+  1174 0001:00107515  1176 0001:0010751B  1178 0001:0010752C  1180 0001:00107544
+  1181 0001:00107550  1182 0001:00107562  1184 0001:00107573  1176 0001:00107574
+  1186 0001:00107577  1188 0001:00107580  1189 0001:0010758D  1190 0001:00107599
+  1192 0001:001075B7  1193 0001:001075BB  1195 0001:001075C8  1196 0001:001075D3
+  1202 0001:001075D8  1204 0001:001075DA  1206 0001:001075DE  1208 0001:001075E3
+  1209 0001:001075E5  1211 0001:001075E8  1204 0001:001075EB  1213 0001:001075EF
+  1216 0001:001075F4  1217 0001:001075FA  1218 0001:00107603  1219 0001:0010761D
+  1228 0001:00107630  1229 0001:00107650  1230 0001:0010765B  1231 0001:00107665
+  1233 0001:0010766C  1234 0001:0010767E  1235 0001:00107686  1238 0001:00107699
+  1239 0001:001076A1  1240 0001:001076AF  1241 0001:001076BD  1244 0001:001076CF
+  1245 0001:001076DA  1246 0001:001076E9  1248 0001:001076F1  1249 0001:00107705
+  1250 0001:00107719  1251 0001:00107728  1252 0001:00107735  1253 0001:00107744
+  1254 0001:00107751  1255 0001:00107760  1256 0001:0010776D  1257 0001:0010777C
+  1258 0001:00107789  1259 0001:00107798  1242 0001:001077A8  1264 0001:001077C5
+  1236 0001:001077D5  1268 0001:001077F2  1270 0001:00107802  1274 0001:00107890
+  1275 0001:00107895  1282 0001:00107898  1290 0001:001078BD  1291 0001:001078C5
+  1292 0001:001078D3  1294 0001:001078F2  1295 0001:00107902  1297 0001:0010790C
+  1298 0001:00107913  1299 0001:0010791B  1300 0001:00107929  1302 0001:00107952
+  1303 0001:00107959  1305 0001:00107981  1306 0001:00107987  1307 0001:001079A2
+  1308 0001:001079A8  1309 0001:001079C3  1312 0001:001079FC  1315 0001:00107A0C
+  1292 0001:00107A0F  1317 0001:00107A25  1319 0001:00107A35  1332 0001:00107AC4
+  1333 0001:00107AED  1334 0001:00107AF5  1336 0001:00107B03  1338 0001:00107B09
+  1340 0001:00107B25  1341 0001:00107B33  1342 0001:00107B44  1344 0001:00107B61
+  1350 0001:00107B71  1351 0001:00107B77  1352 0001:00107B84  1353 0001:00107B8A
+  1356 0001:00107B97  1357 0001:00107BA2  1359 0001:00107BA8  1360 0001:00107BB6
+  1361 0001:00107BBA  1365 0001:00107BD5  1381 0001:00107C1C  1382 0001:00107C25
+  1383 0001:00107C38  1387 0001:00107C3C  1388 0001:00107C45  1389 0001:00107C54
+  1407 0001:00107C58  1408 0001:00107C60  1409 0001:00107C6D  1410 0001:00107C7A
+  1412 0001:00107C8B  1414 0001:00107CA3  1415 0001:00107CB2  1416 0001:00107CD3
+  1418 0001:00107CE3  1410 0001:00107CE4  1419 0001:00107CE7  1421 0001:00107CEC
+  1422 0001:00107CFB  1423 0001:00107D0A  1424 0001:00107D18  1425 0001:00107D45
+  1426 0001:00107D4E  1428 0001:00107D60  1430 0001:00107D6E  1432 0001:00107D75
+  1433 0001:00107D7F  1434 0001:00107D83  1436 0001:00107D8C  1439 0001:00107D98
+  1440 0001:00107D9F  1426 0001:00107DA0  1441 0001:00107DA5  1443 0001:00107DB3
+  1444 0001:00107DC9  1441 0001:00107DCA  1446 0001:00107DDA  1448 0001:00107DEA
+  1462 0001:00107E60  1463 0001:00107E68  1464 0001:00107E71  1465 0001:00107E7A
+  1468 0001:00107E8D  1470 0001:00107E9D  1471 0001:00107EA9  1472 0001:00107EAE
+  1468 0001:00107EAF  1474 0001:00107EB2  1475 0001:00107EBE  1476 0001:00107EC1
+  1477 0001:00107EC4  1478 0001:00107ED0  1484 0001:00107ED8  1485 0001:00107EDD
+  1487 0001:00107EE6  1488 0001:00107EEF  1491 0001:00107F02  1493 0001:00107F12
+  1494 0001:00107F1E  1496 0001:00107F26  1497 0001:00107F2D  1499 0001:00107F2F
+  1491 0001:00107F30  1501 0001:00107F33  1504 0001:00107F41  1505 0001:00107F48
+  1511 0001:00107F4C  1512 0001:00107F51  1514 0001:00107F5A  1515 0001:00107F63
+  1518 0001:00107F76  1520 0001:00107F86  1521 0001:00107F92  1523 0001:00107F9A
+  1524 0001:00107F9E  1525 0001:00107FA5  1527 0001:00107FA7  1518 0001:00107FA8
+  1529 0001:00107FAB  1532 0001:00107FB9  1533 0001:00107FC0  1538 0001:00107FC4
+  1539 0001:00107FCA  1540 0001:00107FCC  1541 0001:00107FD5  1543 0001:00107FE5
+  1544 0001:00107FF3  1545 0001:00108001  1541 0001:00108002  1546 0001:00108005
+  1547 0001:00108007  1553 0001:00108010  1554 0001:00108019  1555 0001:00108022
+  1556 0001:00108033  1557 0001:0010803A  1559 0001:0010803E  1560 0001:0010804A
+  1561 0001:0010804D  1562 0001:00108050  1563 0001:00108053  1565 0001:0010805F
+  1574 0001:00108064  1575 0001:0010806D  1602 0001:00108070  1603 0001:00108073
+  1604 0001:0010809F  1607 0001:001080A4  1608 0001:001080A9  1609 0001:001080AB
+  1610 0001:001080B5  1611 0001:001080BF  1612 0001:001080CC  1613 0001:001080E2
+  1614 0001:001080EB  1615 0001:001080F6  1616 0001:00108105  1617 0001:00108112
+  1618 0001:00108114  1621 0001:0010811C  1622 0001:0010811F  1623 0001:00108127
+  1624 0001:0010812F  1625 0001:00108137  1626 0001:0010813F  1627 0001:00108147
+  1628 0001:0010814F  1629 0001:00108157  1630 0001:0010815F  1631 0001:00108167
+  1632 0001:0010816E  1635 0001:00108170  1636 0001:00108183  1638 0001:0010819E
+  1639 0001:001081C0  1641 0001:001081D6  1642 0001:001081EA  1644 0001:001081F3
+  1645 0001:001081FA  1649 0001:0010820B  1654 0001:0010822C  1655 0001:00108245
+  1657 0001:00108268  1658 0001:00108279  1660 0001:0010828E  1661 0001:0010829D
+  1662 0001:001082A4  1664 0001:001082AB  1666 0001:001082BA  1667 0001:001082DC
+  1669 0001:001082E5  1670 0001:001082EC  1674 0001:001082F3  1676 0001:00108302
+  1677 0001:00108311  1679 0001:00108321  1680 0001:00108329  1681 0001:0010835D
+  1683 0001:00108366  1684 0001:0010836D  1688 0001:00108374  1690 0001:00108397
+  1691 0001:001083B9  1692 0001:001083CF  1693 0001:001083E3  1695 0001:001083F0
+  1696 0001:00108401  1697 0001:00108408  1698 0001:0010840F  1700 0001:00108432
+  1701 0001:00108454  1703 0001:0010845D  1704 0001:0010847D  1706 0001:00108494
+  1707 0001:001084BB  1708 0001:001084CC  1709 0001:001084D5  1715 0001:001084DC
+  1716 0001:001084E5  1719 0001:001084EF  1722 0001:00108524  1723 0001:00108537
+  1725 0001:0010855F  1726 0001:00108581  1728 0001:00108597  1729 0001:001085AB
+  1731 0001:001085B4  1732 0001:001085C5  1736 0001:001085CC  1739 0001:001085EC
+  1740 0001:001085FF  1742 0001:00108617  1743 0001:00108639  1745 0001:00108642
+  1748 0001:00108649  1751 0001:0010866C  1752 0001:0010866F  1754 0001:00108678
+  1755 0001:00108682  1758 0001:001086CD  1760 0001:001086D0  1761 0001:001086F5
+  1766 0001:00108700  1767 0001:00108712  1768 0001:00108724  1769 0001:00108736
+  1770 0001:00108748  1771 0001:0010875A  1772 0001:0010876C  1799 0001:0010879C
+  1800 0001:001087A2  1802 0001:001087AB  1803 0001:001087AD  1805 0001:001087AF
+  1806 0001:001087BD  1811 0001:0010881A  1813 0001:00108821  1815 0001:00108825
+  1817 0001:0010882C  1820 0001:00108834  1821 0001:00108837  1823 0001:0010884C
+  1825 0001:00108855  1826 0001:0010885F  1828 0001:00108873  1830 0001:0010887C
+  1831 0001:00108886  1832 0001:001088A6  1834 0001:001088BD  1836 0001:001088C6
+  1837 0001:001088D0  1839 0001:001088E4  1841 0001:001088ED  1842 0001:001088F7
+  1845 0001:0010891A  1848 0001:00108928  1849 0001:00108931  1850 0001:00108939
+  1851 0001:00108943  1852 0001:0010894D  1853 0001:00108957  1854 0001:00108961
+  1855 0001:0010896B  1857 0001:00108975  1858 0001:00108980  1859 0001:0010898B
+  1861 0001:00108996  1862 0001:001089B2  1865 0001:001089B4  1866 0001:001089CE
+  1868 0001:001089E5  1869 0001:00108A0A  1872 0001:00108A1D  1875 0001:00108A38
+  1876 0001:00108A5D  1877 0001:00108A70  1878 0001:00108A9C  1881 0001:00108AAF
+  1883 0001:00108AC6  1884 0001:00108AEB  1887 0001:00108AFE  1889 0001:00108B15
+  1890 0001:00108B3A  1893 0001:00108B4D  1895 0001:00108B64  1896 0001:00108B89
+  1899 0001:00108B9C  1901 0001:00108BB3  1902 0001:00108BD8  1904 0001:00108BEB
+  1906 0001:00108C14  1907 0001:00108C51  1908 0001:00108C5E  1910 0001:00108C69
+  1911 0001:00108C7F  1914 0001:00108C88  1915 0001:00108C8C  1916 0001:00108C9F
+  1917 0001:00108CA3  1920 0001:00108CAF  1922 0001:00108CBE  1924 0001:00108CCC
+  1925 0001:00108CD0  1926 0001:00108CDB  1928 0001:00108CE6  1929 0001:00108CE8
+  1930 0001:00108CFA  1931 0001:00108D29  1932 0001:00108D3B  1933 0001:00108D4D
+  1935 0001:00108D5A  1936 0001:00108D68  1937 0001:00108D7F  1938 0001:00108D83
+  1940 0001:00108D96  1942 0001:00108D9B  1944 0001:00108DB2  1946 0001:00108DC2
+  1947 0001:00108DCE  1951 0001:00108DD7  1952 0001:00108DDF  1955 0001:00108DE6
+  1956 0001:00108DEE  1969 0001:00108E34  1970 0001:00108E37  1972 0001:00108E40
+  1973 0001:00108E47  1974 0001:00108E55  1976 0001:00108E64  1977 0001:00108E67
+  1978 0001:00108E6F  1981 0001:00108E83  1985 0001:00108E9A  1988 0001:00108EA9
+  1989 0001:00108EC0  1992 0001:00108EC4  1993 0001:00108ED7  1994 0001:00108EE6
+  1995 0001:00108EF7  1996 0001:00108EFB  1997 0001:00108F04  1998 0001:00108F15
+  1999 0001:00108F19  2000 0001:00108F22  2001 0001:00108F31  2002 0001:00108F44
+  2003 0001:00108F4D  2004 0001:00108F5B  2005 0001:00108F68  2006 0001:00108F7B
+  2007 0001:00108F94  2009 0001:00108FA4  2010 0001:00108FAB  2013 0001:00108FC8
+  2014 0001:00108FD3  2015 0001:00108FD7  2016 0001:00108FDE  2017 0001:00108FEE
+  2018 0001:00108FF9  2019 0001:00109001  2020 0001:00109009  2021 0001:00109011
+  2022 0001:00109019  2023 0001:00109021  2024 0001:0010902D  2027 0001:0010903C
+  2028 0001:00109042  2029 0001:0010904B  2037 0001:00109050  2038 0001:0010905B
+  2039 0001:00109060  2040 0001:00109064  2042 0001:00109068  2043 0001:00109075
+  2045 0001:00109079  2046 0001:00109081  2047 0001:00109085  2050 0001:00109089
+  2052 0001:00109091  2053 0001:00109095  2055 0001:0010909E  2057 0001:001090B3
+  2058 0001:001090C2  2060 0001:001090D0  2061 0001:001090D4  2063 0001:001090DC
+  2055 0001:001090DF  2065 0001:001090E2  2067 0001:001090E8  2068 0001:001090F6
+  2070 0001:0010910F  2074 0001:00109119  2100 0001:00109124  2101 0001:00109144
+  2102 0001:00109149  2104 0001:0010915D  2105 0001:00109167  2106 0001:00109174
+  2108 0001:00109178  2109 0001:00109184  2110 0001:0010918A  2112 0001:00109197
+  2114 0001:0010919B  2117 0001:001091A8  2121 0001:001091D0  2122 0001:001091F3
+  2123 0001:001091F5  2124 0001:001091FD  2125 0001:00109207  2126 0001:00109215
+  2127 0001:00109232  2129 0001:0010925D  2131 0001:0010926A  2132 0001:00109289
+  2142 0001:001092C4  2143 0001:001092E0  2144 0001:001092EA  2145 0001:001092F6
+  2146 0001:00109303  2148 0001:00109307  2150 0001:0010930D  2151 0001:0010931C
+  2155 0001:0010932B  2156 0001:00109338  2157 0001:0010933C  2162 0001:00109348
+  2163 0001:00109352  2164 0001:00109358  2166 0001:0010935D  2168 0001:00109362
+  2173 0001:00109388  2174 0001:0010938B  2176 0001:0010939C  2177 0001:001093A8
+  2179 0001:001093AC  2180 0001:001093B2  2182 0001:001093BE  2185 0001:001093C8
+  2200 0001:001093CC  2201 0001:001093D5  2203 0001:001093E2  2204 0001:001093F0
+  2205 0001:001093F4  2207 0001:001093F9  2209 0001:00109409  2210 0001:00109417
+  2212 0001:0010941D  2213 0001:00109423  2215 0001:00109430  2219 0001:00109434
+  2220 0001:0010943A  2222 0001:00109445  2224 0001:00109447  2226 0001:0010944B
+  2227 0001:00109454  2228 0001:00109458  2230 0001:0010945A  2207 0001:0010945B
+  2231 0001:0010945E  2233 0001:00109464  2205 0001:00109467  2235 0001:0010946D
+  2242 0001:00109474  2243 0001:0010947B  2245 0001:00109484  2246 0001:00109491
+  2248 0001:001094A6  2249 0001:001094B5  2251 0001:001094C3  2252 0001:001094CC
+  2253 0001:001094DE  2255 0001:001094E0  2246 0001:001094E3  2257 0001:001094E6
+  2262 0001:001094EC  2263 0001:001094F0  2264 0001:00109502  2265 0001:00109511
+  2266 0001:00109520  2267 0001:0010952B  2268 0001:00109535  2269 0001:0010953F
+  2270 0001:00109555  2272 0001:00109559  2273 0001:00109572  2275 0001:00109582
+  2278 0001:00109588  2279 0001:0010959C  2280 0001:001095BE  2282 0001:001095DA
+  2283 0001:001095E4  2284 0001:001095FE  2286 0001:00109619  2287 0001:0010962D
+  2288 0001:00109647  2292 0001:0010965A  2293 0001:00109674  2294 0001:00109683
+  2297 0001:0010968D  2299 0001:001096B0  2300 0001:001096D6  2301 0001:001096E5
+  2302 0001:001096EC  2311 0001:00109714  2312 0001:00109717  2313 0001:00109735
+  2315 0001:00109738  2316 0001:00109757  2317 0001:00109773  2318 0001:0010977A
+  2319 0001:00109788  2322 0001:00109798  2323 0001:001097A7  2325 0001:001097B9
+  2326 0001:001097C4  2327 0001:001097D4  2328 0001:001097E1  2330 0001:001097EC
+  2320 0001:001097ED  2332 0001:001097FC  2333 0001:0010980B  2335 0001:00109825
+  2337 0001:00109834  2345 0001:00109858  2346 0001:00109877  2347 0001:0010988C
+  2348 0001:00109893  2349 0001:001098A1  2350 0001:001098AE  2351 0001:001098BE
+  2353 0001:001098C2  2354 0001:001098D1  2355 0001:001098DC  2356 0001:001098E9
+  2357 0001:001098F9  2358 0001:001098FD  2359 0001:0010990A  2360 0001:0010991A
+  2361 0001:0010991E  2362 0001:0010992B  2363 0001:00109932  2364 0001:00109936
+  2367 0001:0010994D  2369 0001:0010995C  2375 0001:00109988  2376 0001:0010998B
+  2378 0001:0010999C  2379 0001:001099A8  2381 0001:001099AC  2382 0001:001099B2
+  2384 0001:001099BE  2387 0001:001099C8  2402 0001:001099CC  2403 0001:001099E8
+  2404 0001:00109A06  2405 0001:00109A18  2407 0001:00109A2A  2408 0001:00109A3A
+  2410 0001:00109A3E  2412 0001:00109A47  2413 0001:00109A51  2414 0001:00109A5C
+  2415 0001:00109A65  2417 0001:00109A74  2418 0001:00109A84  2421 0001:00109A9C
+  2426 0001:00109AB4  2427 0001:00109ABC  2428 0001:00109AE0  2429 0001:00109AF0
+  2434 0001:00109AF9  2435 0001:00109B09  2437 0001:00109B0D  2438 0001:00109B1E
+  2439 0001:00109B2F  2440 0001:00109B33  2441 0001:00109B42  2444 0001:00109B49
+  2451 0001:00109B7C  2452 0001:00109B9D  2453 0001:00109BA0  2455 0001:00109BA2
+  2456 0001:00109BAC  2457 0001:00109BBF  2459 0001:00109BC4  2460 0001:00109BCE
+  2461 0001:00109BD2  2464 0001:00109BD6  2465 0001:00109BD8  2466 0001:00109BDC
+  2471 0001:00109C04  2472 0001:00109C08  2473 0001:00109C18  2474 0001:00109C26
+  2476 0001:00109C3C  2477 0001:00109C48  2474 0001:00109C49  2479 0001:00109C5B
+  2481 0001:00109C73  2489 0001:00109C78  2490 0001:00109C94  2491 0001:00109CA6
+  2493 0001:00109CAE  2494 0001:00109CB5  2495 0001:00109CBF  2497 0001:00109CDA
+  2498 0001:00109CE7  2500 0001:00109D04  2501 0001:00109D14  2502 0001:00109D27
+  2504 0001:00109D2B  2505 0001:00109D3D  2507 0001:00109D41  2508 0001:00109D4C
+  2509 0001:00109D5D  2511 0001:00109D61  2512 0001:00109D6B  2514 0001:00109D78
+  2515 0001:00109D89  2517 0001:00109D8D  2524 0001:00109D97  2495 0001:00109D9A
+  2526 0001:00109DA1  2528 0001:00109DCC  2529 0001:00109DDB  2530 0001:00109DE8
+  2531 0001:00109DF5  2532 0001:00109DFB  2533 0001:00109E09  2534 0001:00109E15
+  2535 0001:00109E19  2537 0001:00109E22  2539 0001:00109E39  2541 0001:00109E50
+  2546 0001:00109E58  2547 0001:00109E6C  2548 0001:00109E74  2551 0001:00109E8C
+  2552 0001:00109E8F  2553 0001:00109E96  2557 0001:00109E98  2558 0001:00109E9B
+  2559 0001:00109EA2  2562 0001:00109EA4  2563 0001:00109EB5  2564 0001:00109EBD
+  2567 0001:00109ED8  2568 0001:00109EDB  2569 0001:00109EE2  2573 0001:00109EE4
+  2574 0001:00109EE6  2578 0001:00109EE8  2579 0001:00109EEB  2580 0001:00109EF2
+  2583 0001:00109EF4  2584 0001:00109EF7  2585 0001:00109EFE  2588 0001:00109F00
+  2589 0001:00109F03  2590 0001:00109F0A  2594 0001:00109F0C  2595 0001:00109F13
+  2600 0001:00109F14  2601 0001:00109F1B  2605 0001:00109F1C  2606 0001:00109F23
+  2611 0001:00109F24  2612 0001:00109F2B  2617 0001:00109F2C  2618 0001:00109F33
+  2622 0001:00109F34  2623 0001:00109F3B  2627 0001:00109F3C  2628 0001:00109F43
+  2633 0001:00109F44  2634 0001:00109F4B  2639 0001:00109F4C  2640 0001:00109F53
+  2645 0001:00109F54  2646 0001:00109F56  2647 0001:00109F59  2651 0001:00109F5C
+  2652 0001:00109F63  2658 0001:00109F64  2659 0001:00109F79  2660 0001:00109F7C
+  2661 0001:00109F83  2662 0001:00109F90  2689 0001:00109FB0  2690 0001:00109FC5
+  2691 0001:00109FD0  2692 0001:00109FDD  2693 0001:00109FE2  2699 0001:0010A000
+  2700 0001:0010A026  2702 0001:0010A02F  2704 0001:0010A037  2706 0001:0010A053
+  2707 0001:0010A060  2709 0001:0010A075  2710 0001:0010A07A  2713 0001:0010A0C9
+  2704 0001:0010A0CC  2714 0001:0010A0D1  2716 0001:0010A0DA  2717 0001:0010A0E1
+  2718 0001:0010A0F1  2720 0001:0010A101  2724 0001:0010A106  2725 0001:0010A116
+  2726 0001:0010A126  2729 0001:0010A12B  2741 0001:0010A198  2742 0001:0010A1C3
+  2744 0001:0010A1E4  2745 0001:0010A1FF  2747 0001:0010A209  2748 0001:0010A223
+  2749 0001:0010A227  2751 0001:0010A230  2753 0001:0010A237  2754 0001:0010A26A
+  2755 0001:0010A276  2756 0001:0010A2AA  2759 0001:0010A2BF  2762 0001:0010A2C8
+  2763 0001:0010A2CF  2765 0001:0010A320  2766 0001:0010A33D  2767 0001:0010A343
+  2768 0001:0010A354  2770 0001:0010A35C  2771 0001:0010A360  2773 0001:0010A368
+  2776 0001:0010A370  2777 0001:0010A378  2778 0001:0010A37F  2782 0001:0010A3A4
+  2783 0001:0010A3A9  2784 0001:0010A3AD  2785 0001:0010A3B2  2788 0001:0010A3B4
+  2789 0001:0010A3C6  2790 0001:0010A3CD  2793 0001:0010A3E8  2794 0001:0010A3F8
+  2795 0001:0010A404  2796 0001:0010A40B  2798 0001:0010A422  2799 0001:0010A429
+  2800 0001:0010A435  2803 0001:0010A444  2804 0001:0010A44F  2805 0001:0010A45C
+  2808 0001:0010A46B  2809 0001:0010A478  2811 0001:0010A47D  2812 0001:0010A48A
+  2814 0001:0010A496  2815 0001:0010A4AB  2817 0001:0010A4B8  2818 0001:0010A4C6
+  2819 0001:0010A4D2  2820 0001:0010A4D7  2822 0001:0010A4DD  2825 0001:0010A4E4
+  2826 0001:0010A4EF  2827 0001:0010A4FC  2830 0001:0010A50B  2831 0001:0010A512
+  2832 0001:0010A51F  2833 0001:0010A52B  2834 0001:0010A540  2835 0001:0010A54D
+  2836 0001:0010A55B  2837 0001:0010A567  2838 0001:0010A56C  2840 0001:0010A572
+  2843 0001:0010A578  2844 0001:0010A5A2  2845 0001:0010A5AF  2848 0001:0010A5C0
+  2849 0001:0010A5C7  2851 0001:0010A5DC  2852 0001:0010A5EB  2853 0001:0010A5F0
+  2856 0001:0010A5F6  2859 0001:0010A61C  2860 0001:0010A627  2861 0001:0010A634
+  2864 0001:0010A643  2865 0001:0010A64A  2866 0001:0010A657  2867 0001:0010A663
+  2868 0001:0010A678  2869 0001:0010A685  2870 0001:0010A693  2871 0001:0010A69F
+  2872 0001:0010A6A4  2874 0001:0010A6AA  2877 0001:0010A6B0  2878 0001:0010A6B5
+  2879 0001:0010A6C2  2882 0001:0010A6CC  2883 0001:0010A6D1  2884 0001:0010A6E6
+  2885 0001:0010A6F4  2886 0001:0010A702  2888 0001:0010A70E  2891 0001:0010A718
+  2892 0001:0010A723  2893 0001:0010A730  2896 0001:0010A73F  2897 0001:0010A746
+  2898 0001:0010A753  2899 0001:0010A75F  2900 0001:0010A774  2901 0001:0010A781
+  2902 0001:0010A78F  2903 0001:0010A79B  2904 0001:0010A7A0  2906 0001:0010A7A6
+  2909 0001:0010A7AC  2910 0001:0010A7BA  2911 0001:0010A7C1  2912 0001:0010A7CF
+  2913 0001:0010A7DC  2916 0001:0010A7EB  2918 0001:0010A80F  2919 0001:0010A81C
+  2920 0001:0010A82A  2921 0001:0010A836  2922 0001:0010A83B  2927 0001:0010A850
+  2928 0001:0010A855  2931 0001:0010A85C  2932 0001:0010A867  2934 0001:0010A874
+  2938 0001:0010A883  2939 0001:0010A88A  2940 0001:0010A89F  2941 0001:0010A8AC
+  2942 0001:0010A8BA  2943 0001:0010A8C6  2944 0001:0010A8CB  2946 0001:0010A8D1
+  2949 0001:0010A8D8  2950 0001:0010A8DC  2951 0001:0010A8E9  2954 0001:0010A8F4
+  2956 0001:0010A90A  2959 0001:0010A90E  2960 0001:0010A915  2962 0001:0010A91F
+  2965 0001:0010A921  2968 0001:0010A924  2969 0001:0010A927  2970 0001:0010A934
+  2973 0001:0010A93E  2974 0001:0010A945  2976 0001:0010A94F  2978 0001:0010A951
+  3000 0001:0010A954  3001 0001:0010A958  3002 0001:0010A965  3005 0001:0010A970
+  3007 0001:0010A986  3010 0001:0010A98A  3011 0001:0010A991  3013 0001:0010A99B
+  3016 0001:0010A99D  3019 0001:0010A9A0  3020 0001:0010A9A3  3022 0001:0010A9B0
+  3026 0001:0010A9BA  3027 0001:0010A9C8  3030 0001:0010A9CC  3031 0001:0010A9D3
+  3033 0001:0010A9DD  3036 0001:0010A9DF  3039 0001:0010A9E4  3040 0001:0010A9E8
+  3041 0001:0010A9F5  3044 0001:0010AA00  3046 0001:0010AA16  3049 0001:0010AA1A
+  3050 0001:0010AA21  3052 0001:0010AA2B  3055 0001:0010AA2D  3058 0001:0010AA30
+  3059 0001:0010AA33  3060 0001:0010AA40  3063 0001:0010AA4A  3064 0001:0010AA58
+  3067 0001:0010AA5C  3068 0001:0010AA63  3070 0001:0010AA6D  3073 0001:0010AA6F
+  3076 0001:0010AA74  3077 0001:0010AA77  3078 0001:0010AA84  3081 0001:0010AA8E
+  3082 0001:0010AA9C  3085 0001:0010AAA0  3086 0001:0010AAA6  3089 0001:0010AACC
+  3092 0001:0010AACE  3096 0001:0010AAD0  3097 0001:0010AAD2  3099 0001:0010AAE3
+  3100 0001:0010AAE5  3104 0001:0010AAE8  3105 0001:0010AAF9  3112 0001:0010AAFC
+  3113 0001:0010AAFF  3114 0001:0010AB06  3115 0001:0010AB0D  3118 0001:0010AB10
+  3119 0001:0010AB13  3120 0001:0010AB1A  3121 0001:0010AB21  3124 0001:0010AB24
+  3125 0001:0010AB3B  3126 0001:0010AB44  3127 0001:0010AB5A  3128 0001:0010AB63
+  3129 0001:0010AB70  3130 0001:0010AB7D  3131 0001:0010AB8C  3137 0001:0010ABB0
+  3138 0001:0010ABBC  3139 0001:0010ABC8  3140 0001:0010ABCC  3141 0001:0010ABD6
+  3142 0001:0010ABE4  3144 0001:0010ABEF  3143 0001:0010ABF5  3145 0001:0010ABFD
+  3147 0001:0010AC01  3149 0001:0010AC07  3150 0001:0010AC09  3151 0001:0010AC0F
+  3152 0001:0010AC14  3153 0001:0010AC1C  3154 0001:0010AC20  3157 0001:0010AC33
+  3159 0001:0010AC45  3162 0001:0010AC4C  3163 0001:0010AC57  3164 0001:0010AC61
+  3165 0001:0010AC6C  3166 0001:0010AC78  3169 0001:0010AC88  3170 0001:0010AC8B
+  3171 0001:0010AC92  3172 0001:0010AC99  3173 0001:0010ACA3  3174 0001:0010ACB1
+  3177 0001:0010ACB4  3178 0001:0010ACB7  3179 0001:0010ACBE  3180 0001:0010ACC5
+  3181 0001:0010ACCF  3182 0001:0010ACDD  3186 0001:0010ACE0  3187 0001:0010ACED
+  3190 0001:0010ACF0  3191 0001:0010ACF6  3192 0001:0010AD03  3195 0001:0010AD08
+  3196 0001:0010AD0E  3197 0001:0010AD18  3201 0001:0010AD1C  3202 0001:0010AD29
+  3207 0001:0010AD2C  3208 0001:0010AD2F  3209 0001:0010AD39  3210 0001:0010AD3F
+  3212 0001:0010AD43  3213 0001:0010AD4D  3210 0001:0010AD53  3215 0001:0010AD57
+  3218 0001:0010AD5C  3219 0001:0010AD65  3220 0001:0010AD70  3221 0001:0010AD76
+  3222 0001:0010AD8C  3223 0001:0010AD95  3230 0001:0010AD9C  3231 0001:0010ADA0
+  3232 0001:0010ADBA  3234 0001:0010ADC6  3235 0001:0010ADD3  3236 0001:0010ADE0
+  3238 0001:0010ADEA  3253 0001:0010ADF0  3254 0001:0010ADF8  3256 0001:0010AE04
+  3258 0001:0010AE17  3259 0001:0010AE21  3263 0001:0010AE37  3264 0001:0010AE41
+  3267 0001:0010AE52  3268 0001:0010AE60  3269 0001:0010AE63  3270 0001:0010AE66
+  3271 0001:0010AE6F  3272 0001:0010AE78  3273 0001:0010AE81  3274 0001:0010AE8A
+  3277 0001:0010AE90  3278 0001:0010AE94  3280 0001:0010AEA0  3281 0001:0010AEB3
+  3282 0001:0010AEC6  3283 0001:0010AED9  3285 0001:0010AEEC  3292 0001:0010AEF0
+  3293 0001:0010AEF8  3295 0001:0010AF04  3297 0001:0010AF17  3298 0001:0010AF25
+  3299 0001:0010AF39  3301 0001:0010AF45  3302 0001:0010AF4B  3304 0001:0010AF4F
+  3305 0001:0010AF57  3307 0001:0010AF5F  3308 0001:0010AF61  3309 0001:0010AF74
+  3311 0001:0010AF83  3312 0001:0010AF91  3314 0001:0010AF99  3315 0001:0010AFA1
+  3317 0001:0010AFA9  3318 0001:0010AFAB  3319 0001:0010AFBE  3324 0001:0010AFCF
+  3326 0001:0010AFE2  3328 0001:0010AFE8  3329 0001:0010AFF1  3332 0001:0010AFF8
+  3333 0001:0010AFFF  3334 0001:0010B006  3337 0001:0010B00D  3341 0001:0010B014
+  3342 0001:0010B01F  3345 0001:0010B020  3346 0001:0010B039  3348 0001:0010B053
+  3349 0001:0010B060  3351 0001:0010B067  3354 0001:0010B08C  3355 0001:0010B0A5
+  3357 0001:0010B0B1  3358 0001:0010B0CC  3359 0001:0010B0D9  3360 0001:0010B0E2
+  3362 0001:0010B0EB  3365 0001:0010B110  3366 0001:0010B116  3368 0001:0010B120
+  3369 0001:0010B124  3370 0001:0010B12F  3371 0001:0010B137  3373 0001:0010B13B
+  3374 0001:0010B141  3376 0001:0010B147  3378 0001:0010B151  3381 0001:0010B154
+  3382 0001:0010B15A  3383 0001:0010B163  3385 0001:0010B167  3387 0001:0010B170
+  3388 0001:0010B176  3390 0001:0010B181  3391 0001:0010B18F  3393 0001:0010B196
+  3395 0001:0010B1A6  3399 0001:0010B1AC  3400 0001:0010B1B7  3403 0001:0010B1B8
+  3404 0001:0010B1C0  3405 0001:0010B1D0  3406 0001:0010B1DE  3407 0001:0010B1F0
+  3408 0001:0010B207  3410 0001:0010B22B  3412 0001:0010B243  3418 0001:0010B248
+  3419 0001:0010B251  3420 0001:0010B25C  3421 0001:0010B265  3422 0001:0010B26B
+  3423 0001:0010B287  3424 0001:0010B290  3431 0001:0010B294  3432 0001:0010B298
+  3433 0001:0010B2B2  3435 0001:0010B2BE  3436 0001:0010B2CB  3437 0001:0010B2D8
+  3439 0001:0010B2E2  3442 0001:0010B2E8  3443 0001:0010B2FC  3445 0001:0010B308
+  3446 0001:0010B31C  3447 0001:0010B326  3449 0001:0010B343  3454 0001:0010B364
+  3455 0001:0010B36C  3457 0001:0010B378  3459 0001:0010B391  3460 0001:0010B39B
+  3464 0001:0010B3B1  3466 0001:0010B3C0  3467 0001:0010B3CA  3471 0001:0010B3D9
+  3472 0001:0010B3E3  3476 0001:0010B3F4  3477 0001:0010B402  3478 0001:0010B405
+  3479 0001:0010B408  3480 0001:0010B411  3481 0001:0010B41A  3482 0001:0010B423
+  3483 0001:0010B42C  3488 0001:0010B434  3489 0001:0010B445  3491 0001:0010B451
+  3493 0001:0010B45C  3494 0001:0010B467  3496 0001:0010B46F  3497 0001:0010B472
+  3498 0001:0010B481  3500 0001:0010B48C  3502 0001:0010B497  3503 0001:0010B4A2
+  3505 0001:0010B4AA  3506 0001:0010B4AD  3507 0001:0010B4BC  3510 0001:0010B4C7
+  3516 0001:0010B4D0  3517 0001:0010B4D7  3519 0001:0010B4E3  3520 0001:0010B4F1
+  3521 0001:0010B505  3523 0001:0010B50D  3524 0001:0010B513  3525 0001:0010B521
+  3529 0001:0010B533  3530 0001:0010B546  3533 0001:0010B559  3536 0001:0010B560
+  3537 0001:0010B564  3539 0001:0010B570  3540 0001:0010B583  3541 0001:0010B596
+  3542 0001:0010B5A9  3544 0001:0010B5BC  3551 0001:0010B5C0  3552 0001:0010B5C8
+  3554 0001:0010B5D4  3556 0001:0010B5E3  3557 0001:0010B5F1  3558 0001:0010B605
+  3560 0001:0010B60D  3561 0001:0010B60F  3562 0001:0010B615  3563 0001:0010B623
+  3566 0001:0010B635  3569 0001:0010B639  3570 0001:0010B63B  3572 0001:0010B63F
+  3573 0001:0010B652  3576 0001:0010B665  3578 0001:0010B66C  3579 0001:0010B676
+  3580 0001:0010B67D  3581 0001:0010B693  3582 0001:0010B69A  3583 0001:0010B6A1
+  3584 0001:0010B6A8  3585 0001:0010B6AF  3586 0001:0010B6B6  3587 0001:0010B6CC
+  3588 0001:0010B6D3  3591 0001:0010B6D8  3592 0001:0010B6DE  3593 0001:0010B6E8
+  3595 0001:0010B6F2  3596 0001:0010B6F6  3597 0001:0010B6FE  3598 0001:0010B706
+  3600 0001:0010B70A  3601 0001:0010B716  3603 0001:0010B71C  3605 0001:0010B726
+  3623 0001:0010B78C  3624 0001:0010B7A1  3625 0001:0010B7A4  3626 0001:0010B7AA
+  3627 0001:0010B7AE  3629 0001:0010B7B5  3630 0001:0010B7C4  3633 0001:0010B7E4
+  3634 0001:0010B7EF  3635 0001:0010B7F6  3636 0001:0010B7FB  3637 0001:0010B807
+  3645 0001:0010B818  3646 0001:0010B826  3647 0001:0010B830  3648 0001:0010B83C
+  3650 0001:0010B849  3651 0001:0010B852  3653 0001:0010B85F  3654 0001:0010B86F
+  3655 0001:0010B879  3657 0001:0010B883  3658 0001:0010B892  3660 0001:0010B8A1
+  3666 0001:0010B8AC  3667 0001:0010B8B3  3668 0001:0010B8BB  3669 0001:0010B8C4
+  3670 0001:0010B8CD  3672 0001:0010B8D1  3673 0001:0010B8DA  3674 0001:0010B8E3
+  3676 0001:0010B8E7  3677 0001:0010B8F1  3679 0001:0010B8FB  3680 0001:0010B904
+  3682 0001:0010B910  3690 0001:0010B914  3691 0001:0010B91B  3692 0001:0010B91F
+  3693 0001:0010B929  3695 0001:0010B937  3696 0001:0010B943  3697 0001:0010B94C
+  3699 0001:0010B950  3700 0001:0010B95A  3702 0001:0010B964  3703 0001:0010B96D
+  3704 0001:0010B979  3693 0001:0010B97A  3705 0001:0010B97D  3706 0001:0010B985
+  3710 0001:0010B98C  3711 0001:0010B99E  3712 0001:0010B9A1  3713 0001:0010B9B8
+  3714 0001:0010B9CF  3715 0001:0010B9DE  3716 0001:0010B9ED  3719 0001:0010BA08
+  3720 0001:0010BA13  3721 0001:0010BA1B  3722 0001:0010BA23  3723 0001:0010BA2B
+  3724 0001:0010BA33  3725 0001:0010BA3F  3731 0001:0010BA50  3732 0001:0010BA57
+  3733 0001:0010BA62  3735 0001:0010BA66  3736 0001:0010BA76  3737 0001:0010BA82
+  3739 0001:0010BA8C  3740 0001:0010BA99  3756 0001:0010BAA0  3757 0001:0010BAA8
+  3759 0001:0010BAB6  3760 0001:0010BAC0  3762 0001:0010BAC5  3763 0001:0010BAC7
+  3765 0001:0010BAC9  3757 0001:0010BACA  3766 0001:0010BACD  3767 0001:0010BAD0
+  3774 0001:0010BAD8  3775 0001:0010BAE0  3777 0001:0010BAEE  3778 0001:0010BAF8
+  3780 0001:0010BAFD  3781 0001:0010BAFF  3783 0001:0010BB01  3775 0001:0010BB02
+  3784 0001:0010BB05  3785 0001:0010BB08  3791 0001:0010BB10  3792 0001:0010BB1A
+  3794 0001:0010BB34  3795 0001:0010BB3F  3796 0001:0010BB48  3797 0001:0010BB4C
+  3799 0001:0010BB56  3807 0001:0010BB5C  3808 0001:0010BB68  3810 0001:0010BB83
+  3811 0001:0010BB90  3813 0001:0010BB94  3814 0001:0010BB9E  3815 0001:0010BBA1
+  3818 0001:0010BBAC  3831 0001:0010BC00  3833 0001:0010BC1E
+
+Line numbers for VA508AccessibilityManager(..\VA\VA508Accessibility\VA508AccessibilityManager.pas) segment .itext
+
+  3828 0002:00000CDC  3830 0002:00000CEF
+
+Line numbers for uConst(uConst.pas) segment .itext
+
+   402 0002:00000CF0   403 0002:00000CF9   405 0002:00000D05
+
+Line numbers for fBase508Form(fBase508Form.pas) segment .text
+
+    61 0001:0010C0DC    62 0001:0010C0DF    64 0001:0010C0F1    65 0001:0010C0F3
+    66 0001:0010C103    67 0001:0010C10B    68 0001:0010C113    71 0001:0010C11C
+    73 0001:0010C12E    74 0001:0010C13B    75 0001:0010C148    77 0001:0010C14F
+    85 0001:0010C154    86 0001:0010C15C    87 0001:0010C161    92 0001:0010C164
+    93 0001:0010C16D    94 0001:0010C176    95 0001:0010C18B    96 0001:0010C199
+    97 0001:0010C1AA    99 0001:0010C1BF   101 0001:0010C1DC   105 0001:0010C1E0
+   106 0001:0010C1E6   107 0001:0010C1F2   108 0001:0010C1F7   110 0001:0010C1FC
+   114 0001:0010C204   115 0001:0010C20D   116 0001:0010C218   118 0001:0010C23B
+   120 0001:0010C249   125 0001:0010C250   126 0001:0010C25A   128 0001:0010C25C
+   129 0001:0010C26D   130 0001:0010C285   131 0001:0010C297   133 0001:0010C2A4
+   134 0001:0010C2BC   135 0001:0010C2D1   137 0001:0010C2D5   127 0001:0010C2D6
+   139 0001:0010C2D9   142 0001:0010C2E4   143 0001:0010C2E7   144 0001:0010C2EE
+   145 0001:0010C2F5   150 0001:0010C2F8   151 0001:0010C301   153 0001:0010C323
+   154 0001:0010C325   156 0001:0010C32E   158 0001:0010C338   159 0001:0010C33C
+   163 0001:0010C356   164 0001:0010C368   168 0001:0010C376   172 0001:0010C37C
+   173 0001:0010C382   176 0001:0010C384   177 0001:0010C38A   178 0001:0010C393
+   179 0001:0010C397   180 0001:0010C3A0   186 0001:0010C3A4   187 0001:0010C3AA
+   189 0001:0010C3AF   193 0001:0010C3B0   201 0001:0010C3B4   202 0001:0010C3B5
+   203 0001:0010C3BF   205 0001:0010C3C3   206 0001:0010C3CA   207 0001:0010C3CE
+   208 0001:0010C3D4   209 0001:0010C3DD   217 0001:0010C3E0   218 0001:0010C3EA
+   220 0001:0010C3FC   222 0001:0010C415   223 0001:0010C421   224 0001:0010C42A
+   225 0001:0010C439   227 0001:0010C445   218 0001:0010C446   228 0001:0010C449
+   230 0001:0010C450   231 0001:0010C46A   232 0001:0010C473   233 0001:0010C47B
+   234 0001:0010C484   235 0001:0010C493   236 0001:0010C4A5   237 0001:0010C4B0
+   239 0001:0010C4B9   240 0001:0010C4C4   242 0001:0010C4DA   244 0001:0010C4E5
+   245 0001:0010C4F1   246 0001:0010C4FB   248 0001:0010C504   249 0001:0010C50B
+   258 0001:0010C52C   259 0001:0010C538   260 0001:0010C544   261 0001:0010C54A
+   262 0001:0010C558   266 0001:0010C55C   267 0001:0010C565   268 0001:0010C577
+   269 0001:0010C57F   270 0001:0010C590   280 0001:0010C594   281 0001:0010C5B8
+   283 0001:0010C5C3
+
+Line numbers for fBase508Form(fBase508Form.pas) segment .itext
+
+   272 0002:00000D08   273 0002:00000D11   274 0002:00000D2A   276 0002:00000D43
+   277 0002:00000D4D   279 0002:00000D57
+
+Line numbers for ORClasses(..\CPRS-Lib\ORClasses.pas) segment .text
+
+   171 0001:0010C8EC   172 0001:0010C912   173 0001:0010C91B   174 0001:0010C92C
+   175 0001:0010C956   176 0001:0010C95A   177 0001:0010C998   192 0001:0010C9C8
+   193 0001:0010C9CC   194 0001:0010C9D5   195 0001:0010C9E8   201 0001:0010C9EC
+   202 0001:0010C9F0   204 0001:0010C9F9   205 0001:0010CA00   206 0001:0010CA04
+   209 0001:0010CA0A   210 0001:0010CA23   211 0001:0010CA2F   212 0001:0010CA3D
+   215 0001:0010CA49   220 0001:0010CA4C   221 0001:0010CA5E   222 0001:0010CA67
+   223 0001:0010CA76   224 0001:0010CA85   227 0001:0010CAA0   228 0001:0010CAAB
+   229 0001:0010CAB5   230 0001:0010CABF   231 0001:0010CACB   237 0001:0010CADC
+   238 0001:0010CAE6   240 0001:0010CAF6   241 0001:0010CB02   243 0001:0010CB06
+   242 0001:0010CB07   244 0001:0010CB2D   247 0001:0010CB3A   248 0001:0010CB3D
+   254 0001:0010CB48   255 0001:0010CB51   257 0001:0010CB69   258 0001:0010CB75
+   259 0001:0010CB80   261 0001:0010CB8B   267 0001:0010CB94   268 0001:0010CB9B
+   269 0001:0010CBAA   271 0001:0010CBAE   272 0001:0010CBB8   274 0001:0010CBC2
+   294 0001:0010CBC8   295 0001:0010CBD6   297 0001:0010CBE4   299 0001:0010CBF2
+   300 0001:0010CBFC   304 0001:0010CC09   305 0001:0010CC16   306 0001:0010CC23
+   308 0001:0010CC33   295 0001:0010CC34   309 0001:0010CC37   319 0001:0010CC40
+   320 0001:0010CC46   329 0001:0010CC48   330 0001:0010CC4F   332 0001:0010CC62
+   333 0001:0010CC6C   335 0001:0010CC76   341 0001:0010CC7C   342 0001:0010CC81
+   343 0001:0010CC83   345 0001:0010CC90   347 0001:0010CC94   346 0001:0010CC95
+   348 0001:0010CCB9   351 0001:0010CCC6   352 0001:0010CCC9   358 0001:0010CCD0
+   359 0001:0010CCD4   360 0001:0010CCDD   362 0001:0010CCE1   363 0001:0010CCEB
+   365 0001:0010CCF5   386 0001:0010CCF8   387 0001:0010CD10   388 0001:0010CD13
+   389 0001:0010CD1D   390 0001:0010CD2C   393 0001:0010CD4C   394 0001:0010CD57
+   395 0001:0010CD61   396 0001:0010CD6D   400 0001:0010CD7C   401 0001:0010CD7F
+   405 0001:0010CD80   407 0001:0010CD86   408 0001:0010CD89   410 0001:0010CD9B
+   413 0001:0010CD9C   414 0001:0010CDA2   415 0001:0010CDBA   416 0001:0010CDC3
+   419 0001:0010CDC8   420 0001:0010CDCB   421 0001:0010CDE3   422 0001:0010CDED
+   425 0001:0010CDF0   426 0001:0010CDF6   427 0001:0010CDFC   428 0001:0010CE0B
+   429 0001:0010CE19   432 0001:0010CE20   433 0001:0010CE26   434 0001:0010CE2C
+   435 0001:0010CE3B   436 0001:0010CE45   439 0001:0010CE48   440 0001:0010CE4B
+   441 0001:0010CE52   442 0001:0010CE5F   446 0001:0010CE64   447 0001:0010CE6B
+   448 0001:0010CE72   452 0001:0010CE74   453 0001:0010CE7D   457 0001:0010CE80
+   458 0001:0010CE8B   461 0001:0010CE8C   462 0001:0010CE8F   463 0001:0010CE9B
+   469 0001:0010CEA0   470 0001:0010CEA7   471 0001:0010CEAB   472 0001:0010CEB2
+   473 0001:0010CEBC   474 0001:0010CEC2   475 0001:0010CECC   480 0001:0010CED0
+   481 0001:0010CEDB   482 0001:0010CEE3   483 0001:0010CEEF   489 0001:0010CF00
+   495 0001:0010CF09   497 0001:0010CF12   498 0001:0010CF21   499 0001:0010CF2F
+   500 0001:0010CF4C   502 0001:0010CF61   505 0001:0010CF78   506 0001:0010CF80
+   511 0001:0010CF84   512 0001:0010CFB3   513 0001:0010CFB6   516 0001:0010CFB9
+   514 0001:0010CFBA   517 0001:0010CFF5   518 0001:0010D007   526 0001:0010D03C
+   527 0001:0010D04C   529 0001:0010D04F   530 0001:0010D050   531 0001:0010D05F
+   533 0001:0010D07E   534 0001:0010D080   535 0001:0010D084   536 0001:0010D096
+   539 0001:0010D0A0   540 0001:0010D0A1   541 0001:0010D0B1   545 0001:0010D0B4
+   546 0001:0010D0B8   547 0001:0010D0C6   550 0001:0010D0CC   551 0001:0010D0D2
+   552 0001:0010D0D8   553 0001:0010D0F9   554 0001:0010D103   560 0001:0010D108
+   561 0001:0010D10E   563 0001:0010D11F   565 0001:0010D12C   566 0001:0010D13A
+   568 0001:0010D145   561 0001:0010D146   569 0001:0010D149   573 0001:0010D150
+   574 0001:0010D154   575 0001:0010D162   591 0001:0010D168   592 0001:0010D190
+   593 0001:0010D195   594 0001:0010D199   596 0001:0010D1AF   597 0001:0010D1B2
+   598 0001:0010D1BB   600 0001:0010D1C5   601 0001:0010D1CB   603 0001:0010D1F8
+   604 0001:0010D1FC   606 0001:0010D1FE   594 0001:0010D206   607 0001:0010D20B
+   610 0001:0010D23C   611 0001:0010D23D   612 0001:0010D24D   619 0001:0010D250
+   620 0001:0010D270   623 0001:0010D277   624 0001:0010D27D   626 0001:0010D2A9
+   627 0001:0010D2D5   628 0001:0010D2DB   630 0001:0010D2E6   621 0001:0010D2E7
+   632 0001:0010D2F2   636 0001:0010D31C   637 0001:0010D34B   638 0001:0010D34E
+   641 0001:0010D351   639 0001:0010D352   642 0001:0010D38F   643 0001:0010D3A1
+   653 0001:0010D3D8   655 0001:0010D3F9   656 0001:0010D3FC   657 0001:0010D3FF
+   659 0001:0010D417   660 0001:0010D450   661 0001:0010D487   663 0001:0010D48B
+   664 0001:0010D49A   665 0001:0010D49B   667 0001:0010D49C   668 0001:0010D4A4
+   669 0001:0010D4B8   670 0001:0010D4BB   671 0001:0010D4C4   673 0001:0010D4F8
+   674 0001:0010D518   676 0001:0010D52C   677 0001:0010D537   678 0001:0010D54B
+   680 0001:0010D556   688 0001:0010D564   689 0001:0010D587   690 0001:0010D593
+   691 0001:0010D5A6   692 0001:0010D5B2   696 0001:0010D5D8   697 0001:0010D5DC
+   698 0001:0010D5E7   759 0001:0010D5EC   761 0001:0010D611
+
+Line numbers for ORClasses(..\CPRS-Lib\ORClasses.pas) segment .itext
+
+   756 0002:00000D58   758 0002:00000D5F
+
+Line numbers for Xwbut1(XWBut1.pas) segment .text
+
+   175 0001:0010D628   176 0001:0010D659   177 0001:0010D673   205 0001:0010D6A0
+   206 0001:0010D6D1   207 0001:0010D6D8   208 0001:0010D6E7   209 0001:0010D6F5
+   210 0001:0010D6FF   212 0001:0010D70E   213 0001:0010D71B   216 0001:0010D730
+   218 0001:0010D740   225 0001:0010D76C   226 0001:0010D7A1   227 0001:0010D7B0
+   228 0001:0010D7BE   229 0001:0010D7C8   231 0001:0010D7D9   232 0001:0010D7E7
+   235 0001:0010D7FC   237 0001:0010D80C   243 0001:0010D840   244 0001:0010D86D
+   245 0001:0010D87C   246 0001:0010D88A   247 0001:0010D894   249 0001:0010D8A5
+   250 0001:0010D8B0   253 0001:0010D8C5   255 0001:0010D8D5   261 0001:0010D8FC
+   262 0001:0010D935   263 0001:0010D943   265 0001:0010D948   266 0001:0010D959
+   268 0001:0010D963   301 0001:0010D998   302 0001:0010D9BD   303 0001:0010D9C4
+   304 0001:0010D9D3   305 0001:0010D9E2   306 0001:0010D9F0   307 0001:0010D9FA
+   309 0001:0010DA09   310 0001:0010DA14   313 0001:0010DA2B   314 0001:0010DA33
+   316 0001:0010DA43   318 0001:0010DA94
+
+Line numbers for MFunStr(MFunStr.pas) segment .text
+
+    33 0001:0010DA74    34 0001:0010DAB7    35 0001:0010DABF    36 0001:0010DAD6
+    37 0001:0010DAE9    38 0001:0010DAF6    39 0001:0010DAFA    41 0001:0010DB1A
+    42 0001:0010DB38    35 0001:0010DB39    43 0001:0010DB3C    44 0001:0010DB47
+    54 0001:0010DB74    56 0001:0010DBB2    57 0001:0010DBB7    59 0001:0010DBC2
+    60 0001:0010DBC6    61 0001:0010DBC9    63 0001:0010DBD1    64 0001:0010DBDE
+    65 0001:0010DBF9    67 0001:0010DC10    68 0001:0010DC1B    69 0001:0010DC26
+    71 0001:0010DC2A    72 0001:0010DC49    76 0001:0010DC8D    77 0001:0010DC98
+    81 0001:0010DCA2    83 0001:0010DCE6    84 0001:0010DCEC    85 0001:0010DCF4
+    86 0001:0010DCF5    87 0001:0010DCFD    88 0001:0010DD08
+
+Line numbers for MFunStr(MFunStr.pas) segment .itext
+
+    89 0002:00000D60
+
+Line numbers for Hash(Hash.pas) segment .text
+
+    55 0001:0010E598    56 0001:0010E5BF    57 0001:0010E5C4    59 0001:0010E5D0
+    60 0001:0010E5DC    62 0001:0010E5E0    66 0001:0010E625
+
+Line numbers for Hash(Hash.pas) segment .itext
+
+    81 0002:00000D68
+
+Line numbers for XWBRich20(XWBRich20.pas) segment .text
+
+   324 0001:00114328   325 0001:00114340   326 0001:00114349   327 0001:0011434C
+   328 0001:00114353   331 0001:00114374   332 0001:00114377   333 0001:00114385
+   334 0001:0011438B   361 0001:00114390   362 0001:00114396   363 0001:0011439F
+   364 0001:001143AB   366 0001:001143CA   371 0001:001143D0   372 0001:001143D7
+   373 0001:001143E4   374 0001:001143E6   375 0001:001143F2   376 0001:00114407
+   381 0001:0011440C   382 0001:0011440F   383 0001:00114416   384 0001:0011441B
+   389 0001:00114420   390 0001:00114429   393 0001:00114432   394 0001:0011443A
+   396 0001:0011443E   397 0001:00114447   426 0001:00114450   427 0001:00114453
+   429 0001:0011445A   430 0001:00114461   431 0001:00114468   432 0001:0011446C
+   437 0001:00114470   438 0001:00114479   441 0001:00114482   442 0001:0011448A
+   443 0001:00114492   444 0001:0011449C   446 0001:001144A7   447 0001:001144B0
+   452 0001:001144B8   453 0001:001144BE   454 0001:001144C5   455 0001:001144D5
+   460 0001:001144DC   461 0001:001144FE   464 0001:00114508   465 0001:0011450F
+   467 0001:0011451F   468 0001:00114529   473 0001:0011454C   474 0001:00114551
+   475 0001:00114558   478 0001:0011455F   479 0001:0011456E   480 0001:00114579
+   481 0001:00114584   483 0001:0011458F   488 0001:0011459C   489 0001:001145A5
+   492 0001:001145B0   493 0001:001145B8   494 0001:001145C3   495 0001:001145CE
+   496 0001:001145D9   499 0001:001145E4   500 0001:001145EF   505 0001:001145F4
+   506 0001:001145F7   507 0001:001145FE   508 0001:0011460A   513 0001:00114610
+   514 0001:00114619   517 0001:00114622   518 0001:0011462A   520 0001:00114637
+   521 0001:00114640   536 0001:00114648   537 0001:0011464B   538 0001:00114652
+   539 0001:00114665   540 0001:00114669   541 0001:0011466D   543 0001:00114671
+   545 0001:00114673   550 0001:00114678   551 0001:00114681   554 0001:0011468A
+   555 0001:00114694   556 0001:0011469B   558 0001:001146A2   561 0001:001146A7
+   562 0001:001146B0   565 0001:001146B8   566 0001:001146D4   568 0001:001146E5
+   569 0001:001146F1   570 0001:00114705   571 0001:00114715   572 0001:00114725
+   573 0001:00114735   575 0001:00114747   577 0001:00114758   578 0001:0011476A
+   579 0001:0011477E   580 0001:0011478E   581 0001:0011479E   583 0001:001147B0
+   584 0001:001147B9   587 0001:001147E4   588 0001:00114800   590 0001:00114811
+   591 0001:00114823   592 0001:00114837   593 0001:00114847   594 0001:00114857
+   595 0001:00114867   597 0001:00114879   599 0001:0011488A   600 0001:0011489C
+   601 0001:001148B0   602 0001:001148C0   603 0001:001148D0   605 0001:001148E2
+   606 0001:001148EB   611 0001:00114914   612 0001:00114929   613 0001:00114932
+   614 0001:00114935   617 0001:00114950   618 0001:00114953   619 0001:00114961
+   620 0001:00114967   623 0001:0011496C   624 0001:00114972   625 0001:0011497B
+   626 0001:00114987   627 0001:0011499D   630 0001:001149A0   631 0001:001149A7
+   632 0001:001149AF   634 0001:001149BB   635 0001:001149CB   636 0001:001149D5
+   637 0001:001149DD   638 0001:001149E3   639 0001:001149E9   641 0001:001149FF
+   646 0001:00114A04   647 0001:00114A0A   648 0001:00114A11   649 0001:00114A17
+   654 0001:00114A20   655 0001:00114A2C   658 0001:00114A35   659 0001:00114A3D
+   661 0001:00114A46   662 0001:00114A4F   667 0001:00114A58   668 0001:00114A5E
+   669 0001:00114A65   670 0001:00114A6A   675 0001:00114A74   676 0001:00114A80
+   677 0001:00114A88   678 0001:00114AA2   680 0001:00114AAB   683 0001:00114AB4
+   684 0001:00114ABC   686 0001:00114AC4   687 0001:00114ACD   692 0001:00114AD8
+   693 0001:00114ADE   694 0001:00114AE5   695 0001:00114AF1   700 0001:00114AF8
+   701 0001:00114B04   704 0001:00114B0D   705 0001:00114B15   707 0001:00114B22
+   708 0001:00114B2B   713 0001:00114B34   714 0001:00114B3A   715 0001:00114B41
+   716 0001:00114B4D   721 0001:00114B54   722 0001:00114B60   725 0001:00114B69
+   726 0001:00114B71   728 0001:00114B7E   729 0001:00114B87   734 0001:00114B90
+   735 0001:00114B96   736 0001:00114B9D   737 0001:00114BA9   742 0001:00114BB0
+   743 0001:00114BBC   746 0001:00114BC5   747 0001:00114BCD   749 0001:00114BDA
+   750 0001:00114BE3   755 0001:00114BEC   756 0001:00114BF5   757 0001:00114BFC
+   758 0001:00114C0B   763 0001:00114C14   764 0001:00114C23   767 0001:00114C2C
+   768 0001:00114C3C   769 0001:00114C44   770 0001:00114C53   772 0001:00114C5C
+   798 0001:00114C68   799 0001:00114C70   801 0001:00114C81   802 0001:00114C93
+   803 0001:00114CA3   804 0001:00114CB3   805 0001:00114CC3   806 0001:00114CD3
+   807 0001:00114CD5   806 0001:00114CEC   809 0001:00114CF3   810 0001:00114CFC
+   815 0001:00114D04   816 0001:00114D08   817 0001:00114D13   820 0001:00114D18
+   821 0001:00114D1C   822 0001:00114D27   862 0001:00114E38   863 0001:00114E43
+   864 0001:00114E4B   865 0001:00114E57   870 0001:00114E68   871 0001:00114E71
+   872 0001:00114E89   873 0001:00114E97   874 0001:00114EA5   876 0001:00114EBA
+   878 0001:00114EDA   881 0001:00114EE0   882 0001:00114EE4   883 0001:00114EFD
+   884 0001:00114F30   885 0001:00114F31   891 0001:00114F38   892 0001:00114F48
+   893 0001:00114F4F   894 0001:00114F66   895 0001:00114F77   896 0001:00114F81
+   901 0001:00114F8C   902 0001:00114F99   904 0001:00114F9D   905 0001:00114FB8
+   907 0001:00114FBB   909 0001:00114FDC   910 0001:00114FF4   913 0001:00115011
+   921 0001:00115018   922 0001:0011503E   924 0001:00115046   925 0001:00115061
+   927 0001:0011506C   929 0001:00115088   930 0001:00115090   931 0001:001150A9
+   932 0001:001150AD   933 0001:001150B0   936 0001:001150B5   937 0001:001150BB
+   939 0001:001150D4   940 0001:001150FB   946 0001:00115119   953 0001:0011515C
+   954 0001:00115166   955 0001:0011516E   956 0001:00115189   958 0001:0011518C
+   959 0001:001151A9   960 0001:001151AC   962 0001:001151CD   963 0001:001151E5
+   965 0001:00115200   968 0001:00115208   969 0001:0011520B   970 0001:00115216
+   973 0001:00115218   974 0001:0011521F   975 0001:0011522B   976 0001:00115244
+   977 0001:00115248   978 0001:00115250   980 0001:00115261   985 0001:00115268
+   986 0001:0011526A   988 0001:0011526D   989 0001:00115271   991 0001:0011528E
+   992 0001:001152A9   994 0001:001152BE   997 0001:001152C4   998 0001:001152CE
+   999 0001:001152D8  1000 0001:001152E6  1002 0001:001152FD  1004 0001:0011530F
+  1008 0001:00115314  1009 0001:00115315  1010 0001:00115316  1011 0001:00115318
+  1012 0001:0011531A  1013 0001:0011531C  1014 0001:0011531D  1015 0001:0011531E
+  1016 0001:00115320  1017 0001:00115322  1018 0001:00115324  1019 0001:00115326
+  1020 0001:00115327  1021 0001:00115329  1022 0001:0011532B  1023 0001:0011532D
+  1024 0001:0011532E  1025 0001:0011532F  1026 0001:00115331  1027 0001:00115333
+  1028 0001:00115335  1029 0001:0011533A  1030 0001:0011533C  1031 0001:0011533E
+  1032 0001:0011533F  1033 0001:00115342  1034 0001:00115344  1035 0001:00115345
+  1036 0001:00115346  1042 0001:00115348  1043 0001:0011534E  1044 0001:00115350
+  1045 0001:00115353  1046 0001:00115361  1047 0001:00115368  1048 0001:0011536D
+  1050 0001:00115392  1052 0001:0011539C  1059 0001:001153A8  1060 0001:001153B7
+  1061 0001:001153BC  1062 0001:001153C2  1063 0001:001153CD  1064 0001:001153DB
+  1065 0001:001153E7  1066 0001:001153EB  1067 0001:001153F3  1068 0001:00115401
+  1069 0001:00115409  1070 0001:0011541E  1072 0001:00115423  1073 0001:0011542C
+  1074 0001:00115442  1075 0001:0011544F  1078 0001:0011546B  1081 0001:00115484
+  1083 0001:00115494  1092 0001:001154A0  1093 0001:001154C1  1094 0001:001154C4
+  1095 0001:001154D3  1096 0001:001154E9  1097 0001:001154EF  1100 0001:001154FD
+  1101 0001:00115503  1102 0001:0011550B  1104 0001:00115510  1106 0001:00115519
+  1107 0001:00115529  1108 0001:0011552E  1110 0001:00115549  1112 0001:00115554
+  1113 0001:00115560  1114 0001:00115570  1115 0001:00115575  1116 0001:00115590
+  1117 0001:00115596  1121 0001:001155C4  1123 0001:001155DD  1131 0001:00115604
+  1132 0001:00115623  1133 0001:00115632  1134 0001:00115648  1135 0001:0011564B
+  1136 0001:00115651  1139 0001:0011565F  1140 0001:00115665  1141 0001:0011566D
+  1143 0001:00115672  1144 0001:00115682  1145 0001:00115687  1146 0001:001156A2
+  1147 0001:001156A8  1149 0001:001156D6  1151 0001:001156EF  1157 0001:00115714
+  1158 0001:00115733  1159 0001:00115748  1160 0001:0011575A  1161 0001:00115760
+  1162 0001:00115764  1163 0001:00115766  1161 0001:00115776  1165 0001:0011577A
+  1166 0001:0011577E  1167 0001:00115783  1168 0001:0011579B  1169 0001:001157A9
+  1171 0001:001157C2  1172 0001:001157CD  1173 0001:001157D5  1175 0001:001157DF
+  1176 0001:001157F2  1182 0001:00115820  1183 0001:0011583F  1184 0001:00115854
+  1185 0001:00115866  1186 0001:0011586C  1187 0001:00115870  1188 0001:00115872
+  1186 0001:00115882  1190 0001:00115886  1191 0001:0011588A  1192 0001:0011588F
+  1193 0001:001158A7  1194 0001:001158B5  1196 0001:001158CE  1197 0001:001158D9
+  1198 0001:001158E1  1200 0001:001158EB  1207 0001:00115918  1208 0001:0011592F
+  1209 0001:00115938  1210 0001:0011594E  1211 0001:00115964  1212 0001:00115978
+  1213 0001:0011598C  1214 0001:0011598F  1215 0001:00115998  1216 0001:001159A4
+  1217 0001:001159B0  1218 0001:001159B9  1219 0001:001159C0  1220 0001:001159C7
+  1221 0001:001159CE  1223 0001:001159D7  1224 0001:001159E0  1225 0001:001159EE
+  1226 0001:001159F9  1227 0001:00115A01  1228 0001:00115A0E  1229 0001:00115A1E
+  1232 0001:00115A3C  1233 0001:00115A47  1234 0001:00115A52  1235 0001:00115A5D
+  1236 0001:00115A68  1237 0001:00115A73  1238 0001:00115A7E  1239 0001:00115A8A
+  1242 0001:00115A98  1243 0001:00115A9B  1244 0001:00115AA2  1245 0001:00115AAB
+  1255 0001:00115AB0  1256 0001:00115AB6  1258 0001:00115ABF  1259 0001:00115ACE
+  1262 0001:00115ADE  1265 0001:00115AE7  1269 0001:00115AF5  1271 0001:00115B17
+  1273 0001:00115B1B  1279 0001:00115B3C  1280 0001:00115B45  1282 0001:00115B50
+  1283 0001:00115B58  1284 0001:00115B6E  1285 0001:00115B80  1289 0001:00115B9A
+  1291 0001:00115BBA  1292 0001:00115BDB  1294 0001:00115BEB  1295 0001:00115BF6
+  1296 0001:00115C0C  1297 0001:00115C18  1298 0001:00115C26  1299 0001:00115C3D
+  1300 0001:00115C4B  1302 0001:00115C63  1306 0001:00115C77  1307 0001:00115C83
+  1312 0001:00115C88  1313 0001:00115C91  1314 0001:00115CA2  1315 0001:00115CB7
+  1316 0001:00115CC2  1317 0001:00115CCF  1318 0001:00115CDB  1319 0001:00115CF1
+  1320 0001:00115CFF  1321 0001:00115D16  1323 0001:00115D35  1326 0001:00115D49
+  1327 0001:00115D51  1331 0001:00115D58  1332 0001:00115D5D  1336 0001:00115D60
+  1337 0001:00115D6E  1340 0001:00115D70  1343 0001:00115D79  1344 0001:00115D83
+  1346 0001:00115DB9  1347 0001:00115DC2  1351 0001:00115DC8  1352 0001:00115DD6
+  1355 0001:00115DD8  1356 0001:00115DDE  1357 0001:00115DF3  1362 0001:00115DF8
+  1363 0001:00115E01  1364 0001:00115E18  1365 0001:00115E1E  1366 0001:00115E38
+  1367 0001:00115E50  1372 0001:00115E58  1373 0001:00115E5E  1374 0001:00115E75
+  1375 0001:00115E7C  1380 0001:00115E80  1381 0001:00115E86  1382 0001:00115E9D
+  1383 0001:00115EA0  1388 0001:00115EA4  1389 0001:00115EC6  1390 0001:00115ED3
+  1391 0001:00115EE3  1392 0001:00115EF4  1393 0001:00115F01  1398 0001:00115F28
+  1399 0001:00115F2E  1400 0001:00115F42  1401 0001:00115F5E  1402 0001:00115F66
+  1407 0001:00115F6C  1408 0001:00115F78  1409 0001:00115F7F  1410 0001:00115F88
+  1411 0001:00115F95  1412 0001:00115F9D  1413 0001:00115FAA  1414 0001:00115FB7
+  1418 0001:00115FC0  1420 0001:00115FC8  1421 0001:00115FCE  1423 0001:00115FD3
+  1426 0001:00115FD4  1427 0001:00115FD7  1429 0001:00115FDF  1430 0001:00115FE5
+  1432 0001:00116001  1436 0001:00116004  1438 0001:0011600C  1439 0001:00116012
+  1441 0001:00116017  1451 0001:00116018  1452 0001:00116021  1453 0001:00116038
+  1454 0001:0011603F  1455 0001:00116056  1456 0001:0011606C  1465 0001:00116074
+  1466 0001:0011607E  1470 0001:00116080  1471 0001:00116089  1474 0001:0011608C
+  1475 0001:0011608F  1476 0001:00116096  1477 0001:001160B3  1480 0001:001160B8
+  1481 0001:001160BB  1482 0001:001160C6  1487 0001:001160C8  1488 0001:001160CE
+  1489 0001:001160D1  1490 0001:001160D5  1491 0001:001160EC  1498 0001:001160F0
+  1499 0001:001160FE  1500 0001:0011610D  1502 0001:00116114  1503 0001:0011611E
+  1504 0001:00116125  1505 0001:00116131  1506 0001:00116134  1507 0001:00116145
+  1508 0001:00116156  1510 0001:00116168  1511 0001:0011617B  1514 0001:00116190
+  1515 0001:001161A3  1516 0001:001161B6  1517 0001:001161C9  1519 0001:001161DC
+  1520 0001:001161E8  1521 0001:001161F4  1522 0001:001161F6  1523 0001:00116200
+  1525 0001:00116207  1526 0001:00116215  1527 0001:0011622C  1529 0001:0011623A
+  1530 0001:00116248  1531 0001:0011624B  1532 0001:00116266  1533 0001:00116276
+  1534 0001:0011627F  1536 0001:00116293  1537 0001:001162AA  1540 0001:001162BF
+  1548 0001:001162C8  1549 0001:001162D5  1551 0001:001162EC  1552 0001:00116310
+  1554 0001:00116338  1555 0001:00116341  1557 0001:0011634D  1558 0001:00116354
+  1559 0001:00116362  1561 0001:00116378  1564 0001:00116387  1569 0001:00116390
+  1570 0001:00116399  1571 0001:001163A2  1573 0001:001163AC  1574 0001:001163B3
+  1575 0001:001163B9  1576 0001:001163D4  1579 0001:00116403  1581 0001:0011641C
+  1584 0001:00116433  1590 0001:0011643C  1592 0001:00116456  1593 0001:0011649D
+  1594 0001:001164AD  1597 0001:001164BF  1599 0001:001164E0  1600 0001:001164E5
+  1605 0001:001164FE  1606 0001:00116515  1609 0001:00116521  1611 0001:0011653C
+  1615 0001:0011656A  1618 0001:00116598  1619 0001:0011659A  1620 0001:0011659E
+  1621 0001:001165C0  1624 0001:001165C8  1625 0001:001165CA  1626 0001:001165CE
+  1627 0001:001165F0  1630 0001:001165F8  1631 0001:001165F9  1632 0001:00116613
+  1635 0001:00116618  1636 0001:00116619  1637 0001:00116635
+
+Line numbers for XWBRich20(XWBRich20.pas) segment .itext
+
+  1677 0002:00000DE8
+
+Line numbers for frmSignonMessage(frmSignonMessage.pas) segment .text
+
+    41 0001:00116888    42 0001:001168AA    46 0001:001168AC    47 0001:001168B1
+    49 0001:001168E0
+
+Line numbers for VERGENCECONTEXTORLib_TLB(VERGENCECONTEXTORLib_TLB.pas) segment .text
+
+  1116 0001:00116CE4  1117 0001:00116CEF  1118 0001:00116CFD  1123 0001:00116D00
+  1124 0001:00116D18  1125 0001:00116D49  1127 0001:00116D84  1128 0001:00116D8B
+  1129 0001:00116D9E  1132 0001:00116DA4  1133 0001:00116DAA  1134 0001:00116DB1
+  1135 0001:00116DBE  1138 0001:00116DC4  1139 0001:00116DDD  1140 0001:00116DFD
+  1144 0001:00116E20  1145 0001:00116E3C  1146 0001:00116E5F  1149 0001:00116E84
+  1150 0001:00116E9A  1151 0001:00116EB2  1154 0001:00116ED4  1155 0001:00116EEA
+  1156 0001:00116F02  1164 0001:00116F24  1165 0001:00116F3A  1166 0001:00116F52
+  1170 0001:00116F74  1171 0001:00116F96  1172 0001:00116FB7  1175 0001:00116FE0
+  1176 0001:00116FF9  1177 0001:00117012  1180 0001:00117034  1181 0001:0011704A
+  1182 0001:00117066  1312 0001:00117098  1313 0001:001170AE  1314 0001:001170CA
+  1749 0001:001170FC
+
+Line numbers for fDebugInfo(fDebugInfo.pas) segment .text
+
+    35 0001:00000000
+
+Line numbers for Wsockc(wsockc.pas) segment .text
+
+   234 0001:00117408   235 0001:0011743C   237 0001:0011744A   238 0001:00117454
+   239 0001:00117462   241 0001:00117467   242 0001:001174AF   244 0001:001174B6
+   245 0001:001174D0   246 0001:0011750D   259 0001:001175F8   260 0001:0011761E
+   262 0001:0011762C   264 0001:00117634   265 0001:00117669   268 0001:00117670
+   269 0001:00117687   376 0001:00117734   377 0001:00117772   378 0001:0011778E
+   379 0001:001177A1   380 0001:001177D5   388 0001:00117818   389 0001:00117840
+   390 0001:0011784F   391 0001:00117856   392 0001:0011785D   393 0001:00117866
+   394 0001:00117873   395 0001:00117881   397 0001:001178B8   399 0001:001178BA
+   401 0001:001178C3   403 0001:001178DD   406 0001:00117910   407 0001:00117923
+   410 0001:0011792C   414 0001:00117938   416 0001:00117950   417 0001:0011795B
+   418 0001:0011795E   421 0001:00117AE8   422 0001:00117AF2   423 0001:00117AF9
+   424 0001:00117B02   425 0001:00117B10   428 0001:00117B33   429 0001:00117B3E
+   433 0001:00117B4E   439 0001:00117B54   440 0001:00117B96   441 0001:00117BC3
+   442 0001:00117BD6   454 0001:00117C18   455 0001:00117C52   456 0001:00117C5F
+   457 0001:00117C69   458 0001:00117C74   460 0001:00117C83   463 0001:00117C97
+   465 0001:00117CD1   466 0001:00117CE1   467 0001:00117CF0   468 0001:00117D00
+   470 0001:00117D0F   471 0001:00117D1C   472 0001:00117D47   474 0001:00117D4E
+   479 0001:00117D5A   480 0001:00117D60   482 0001:00117D8B   483 0001:00117D91
+   485 0001:00117DBC   486 0001:00117DC2   488 0001:00117DCF   490 0001:00117DDF
+   491 0001:00117DE3   493 0001:00117DF2   494 0001:00117DFF   495 0001:00117E03
+   498 0001:00117E13   499 0001:00117E19   500 0001:00117E26   501 0001:00117E3A
+   502 0001:00117E4A   503 0001:00117E8A   504 0001:00117E8E   496 0001:00117EAD
+   506 0001:00117EB7   507 0001:00117EBD   508 0001:00117ED5   510 0001:00117EE2
+   512 0001:00117EE8   516 0001:00117F13   458 0001:00117F14   517 0001:00117F1D
+   518 0001:00117F2C   520 0001:00117F39   524 0001:00117F8D   525 0001:00117F98
+   615 0001:001180FC   617 0001:00118133   618 0001:00118141   619 0001:00118151
+   620 0001:0011815E   621 0001:0011816B   622 0001:001181B6   623 0001:001181BE
+   624 0001:001181E2   625 0001:001181ED   626 0001:001181F8   631 0001:00118234
+   632 0001:0011825C   633 0001:00118262   634 0001:0011826F   635 0001:0011827D
+   636 0001:00118287   637 0001:001182C4   647 0001:001182FC   648 0001:00118300
+   649 0001:00118309   651 0001:0011831D   652 0001:0011832C   653 0001:0011832E
+   654 0001:00118337   655 0001:00118352   666 0001:00118364   669 0001:001183A3
+   670 0001:001183B0   671 0001:001183B6   672 0001:001183BD   673 0001:001183C7
+   674 0001:001183CE   675 0001:001183DB   676 0001:001183E7   677 0001:001183FD
+   679 0001:00118403   678 0001:00118419   681 0001:00118423   682 0001:0011842B
+   684 0001:00118432   688 0001:00118438   689 0001:0011843D   698 0001:00118441
+   699 0001:00118452   701 0001:00118464   702 0001:00118474   703 0001:00118481
+   707 0001:0011848E   708 0001:00118495   709 0001:001184A1   710 0001:001184A4
+   713 0001:001184A8   714 0001:001184C6   715 0001:001184CF   722 0001:001184DE
+   723 0001:001184E4   724 0001:001184F2   725 0001:001184F5   726 0001:001184FC
+   729 0001:001184FE   730 0001:0011851A   731 0001:00118536   735 0001:0011853E
+   737 0001:00118550   738 0001:00118554   740 0001:0011855B   744 0001:00118572
+   745 0001:00118576   747 0001:0011858B   750 0001:0011858D   752 0001:00118591
+   753 0001:00118594   755 0001:001185A5   756 0001:001185B4   758 0001:001185B6
+   759 0001:001185BD   760 0001:001185D1   761 0001:001185D9   762 0001:001185E4
+   763 0001:001185F6   764 0001:001185FC   765 0001:0011860E   766 0001:00118612
+   768 0001:00118626   705 0001:00118636   772 0001:00118646   774 0001:0011864C
+   775 0001:00118654   776 0001:00118671   781 0001:0011867E   783 0001:00118686
+   784 0001:00118692   785 0001:0011869A   787 0001:001186AA   789 0001:001186B7
+   796 0001:00118774   797 0001:001187A8   798 0001:001187B0   799 0001:001187CD
+   801 0001:001187D1   802 0001:001187D3   803 0001:001187D7   805 0001:001187E7
+   806 0001:001187F8   808 0001:00118813   811 0001:0011882C   812 0001:0011883B
+   813 0001:00118848   814 0001:00118855   815 0001:00118859   816 0001:00118867
+   833 0001:001188C0   839 0001:001188F7   840 0001:00118905   842 0001:0011890B
+   843 0001:0011890F   844 0001:00118915   845 0001:00118925   846 0001:00118932
+   847 0001:0011893F   849 0001:0011894C   850 0001:00118962   851 0001:00118966
+   855 0001:00118974   856 0001:0011897B   857 0001:0011898F   860 0001:0011899D
+   861 0001:001189B3   862 0001:001189B7   863 0001:001189C5   864 0001:001189D3
+   865 0001:001189D7   866 0001:001189E5   867 0001:001189F2   868 0001:00118A07
+   871 0001:00118A11   873 0001:00118A24   874 0001:00118A30   877 0001:00118A42
+   879 0001:00118A48   885 0001:00118A4C   886 0001:00118A58   890 0001:00118A67
+   891 0001:00118A74   893 0001:00118A89   894 0001:00118A92   897 0001:00118AA3
+   898 0001:00118AB0   899 0001:00118AB5   901 0001:00118AC3   902 0001:00118AD9
+   903 0001:00118ADC   904 0001:00118AEA   953 0001:00118AF4   977 0001:00118B9D
+   978 0001:00118BC3   979 0001:00118BCD   980 0001:00118BD4   982 0001:00118BE3
+   983 0001:00118BE9   985 0001:00118BEF   987 0001:00118C0C   988 0001:00118C0F
+   990 0001:00118C1D   991 0001:00118C25   992 0001:00118C2A   993 0001:00118C2F
+   995 0001:00118C31   996 0001:00118C3C   997 0001:00118C40  1034 0001:00118C51
+  1035 0001:00118C57  1036 0001:00118C65  1039 0001:00118C67  1055 0001:00118E0C
+  1056 0001:00118E42  1062 0001:00118E51  1063 0001:00118E5F  1065 0001:00118E65
+  1066 0001:00118E69  1067 0001:00118E6F  1068 0001:00118E7F  1069 0001:00118E8C
+  1070 0001:00118E99  1072 0001:00118EA6  1073 0001:00118EBF  1074 0001:00118EC3
+  1078 0001:00118ED2  1079 0001:00118ED9  1080 0001:00118EED  1083 0001:00118EFC
+  1084 0001:00118F15  1085 0001:00118F19  1086 0001:00118F28  1087 0001:00118F36
+  1088 0001:00118F3A  1089 0001:00118F49  1090 0001:00118F56  1091 0001:00118F6B
+  1094 0001:00118F75  1096 0001:00118F88  1097 0001:00118F94  1100 0001:00118FA6
+  1102 0001:00118FAC  1108 0001:00118FB0  1109 0001:00118FBC  1113 0001:00118FCB
+  1114 0001:00118FD8  1116 0001:00118FED  1117 0001:00118FF6  1120 0001:00119007
+  1121 0001:00119017  1122 0001:0011901F  1124 0001:0011902E  1125 0001:0011904A
+  1126 0001:0011904D  1129 0001:0011905C  1130 0001:00119063  1131 0001:00119081
+  1132 0001:00119084  1133 0001:00119093  1136 0001:001190A8  1137 0001:001190B6
+  1138 0001:001190BC  1140 0001:001190CB  1141 0001:001190D4  1142 0001:001190DD
+  1144 0001:001190F7  1145 0001:001190FA  1147 0001:00119109  1148 0001:00119110
+  1150 0001:0011912C  1151 0001:0011912F  1152 0001:0011913E  1154 0001:0011914E
+  1155 0001:00119161  1156 0001:00119164  1160 0001:00119173  1161 0001:00119183
+  1162 0001:00119190  1163 0001:001191A6  1164 0001:001191B0  1165 0001:001191CC
+  1166 0001:001191E8  1167 0001:00119208  1168 0001:00119234  1169 0001:00119264
+  1177 0001:00119275  1179 0001:0011927F  1180 0001:00119285  1181 0001:00119293
+  1184 0001:001192CA  1185 0001:001192E8  1186 0001:001192F6  1187 0001:0011930B
+  1188 0001:00119317  1190 0001:00119333  1197 0001:00119347  1198 0001:00119371
+  1199 0001:0011937B  1200 0001:00119382  1202 0001:00119391  1203 0001:00119397
+  1205 0001:0011939D  1207 0001:001193C0  1208 0001:001193C3  1210 0001:001193D2
+  1211 0001:001193DD  1212 0001:001193E2  1213 0001:001193E7  1215 0001:001193EC
+  1216 0001:001193F9  1217 0001:001193FD  1219 0001:0011940F  1220 0001:00119415
+  1222 0001:0011941B  1224 0001:0011943E  1225 0001:00119441  1226 0001:00119450
+  1227 0001:00119463  1228 0001:00119467  1231 0001:00119476  1232 0001:0011947D
+  1233 0001:00119496  1235 0001:0011949E  1238 0001:001194AD  1239 0001:001194B3
+  1241 0001:001194B9  1243 0001:001194DA  1244 0001:001194DD  1246 0001:001194EC
+  1248 0001:001194FD  1250 0001:00119501  1254 0001:00119510  1255 0001:00119516
+  1256 0001:00119524  1259 0001:00119526  1271 0001:0011977C  1272 0001:001197AB
+  1273 0001:001197B5  1274 0001:001197C3  1276 0001:001197C7  1277 0001:001197C9
+  1278 0001:001197CD  1279 0001:001197DD  1281 0001:001197E1  1282 0001:001197E9
+  1283 0001:001197F7  1286 0001:001197FC  1289 0001:0011982F  1290 0001:00119840
+  1292 0001:00119881  1293 0001:001198A2  1295 0001:001198A7  1297 0001:001198B6
+  1298 0001:001198C1  1299 0001:001198C9  1300 0001:001198CF  1302 0001:001198D5
+  1304 0001:001198EE  1305 0001:001198F4  1307 0001:00119902  1310 0001:0011990B
+  1311 0001:00119913  1312 0001:0011991D  1313 0001:00119921  1314 0001:0011992F
+  1315 0001:00119933  1316 0001:00119941  1317 0001:00119945  1343 0001:00119A0C
+  1344 0001:00119A1C  1345 0001:00119A28  1346 0001:00119A2B  1347 0001:00119A3A
+  1349 0001:00119A3F  1350 0001:00119A46  1352 0001:00119A53  1353 0001:00119A56
+  1354 0001:00119A65  1355 0001:00119A68  1356 0001:00119A72  1357 0001:00119A75
+  1358 0001:00119A81  1359 0001:00119A86  1360 0001:00119A95  1361 0001:00119A99
+  1362 0001:00119AA4  1363 0001:00119AAB  1364 0001:00119AB2  1367 0001:00119ACC
+  1368 0001:00119ADE  1370 0001:00119AE7  1371 0001:00119AEE  1379 0001:00119B08
+  1380 0001:00119B36  1381 0001:00119B44  1382 0001:00119B46  1383 0001:00119B4C
+  1389 0001:00119B50  1391 0001:00119B59  1393 0001:00119B62  1394 0001:00119B74
+  1395 0001:00119B8A  1398 0001:00119B8F  1399 0001:00119B93  1400 0001:00119B9A
+  1401 0001:00119BAE  1403 0001:00119BC2  1404 0001:00119E17  1405 0001:00119E29
+  1406 0001:00119E3B  1407 0001:00119E4D  1408 0001:00119E5F  1409 0001:00119E71
+  1410 0001:00119E83  1411 0001:00119E95  1412 0001:00119EA7  1413 0001:00119EB9
+  1414 0001:00119ECB  1415 0001:00119EDD  1416 0001:00119EEF  1417 0001:00119F01
+  1418 0001:00119F13  1419 0001:00119F25  1420 0001:00119F37  1421 0001:00119F49
+  1422 0001:00119F5B  1423 0001:00119F6D  1424 0001:00119F7F  1425 0001:00119F91
+  1426 0001:00119FA3  1427 0001:00119FB5  1428 0001:00119FC7  1429 0001:00119FD9
+  1430 0001:00119FEB  1431 0001:00119FFD  1432 0001:0011A00F  1433 0001:0011A021
+  1434 0001:0011A033  1435 0001:0011A045  1436 0001:0011A057  1437 0001:0011A069
+  1438 0001:0011A07B  1439 0001:0011A08D  1440 0001:0011A09F  1441 0001:0011A0B1
+  1442 0001:0011A0C3  1443 0001:0011A0D5  1444 0001:0011A0E7  1445 0001:0011A0F9
+  1446 0001:0011A10B  1447 0001:0011A11D  1448 0001:0011A12F  1449 0001:0011A141
+  1450 0001:0011A153  1451 0001:0011A165  1452 0001:0011A177  1454 0001:0011A189
+  1455 0001:0011A19B  1456 0001:0011A1AD  1457 0001:0011A1BF  1458 0001:0011A1D1
+  1459 0001:0011A1E3  1460 0001:0011A1F5  1461 0001:0011A207  1463 0001:0011A219
+  1464 0001:0011A228  1465 0001:0011A237  1466 0001:0011A246  1468 0001:0011A255
+  1469 0001:0011A264  1470 0001:0011A273  1471 0001:0011A282  1472 0001:0011A291
+  1474 0001:0011A29B  1475 0001:0011A2C2  1476 0001:0011A2D3  1477 0001:0011A2DE
+  1478 0001:0011A2E1  1479 0001:0011A2EC  1480 0001:0011A2F3  1493 0001:0011AB6C
+  1494 0001:0011ABA7  1495 0001:0011ABB6  1496 0001:0011ABBE  1497 0001:0011ABC6
+  1498 0001:0011ABCE  1499 0001:0011ABD0  1500 0001:0011ABDA  1501 0001:0011ABE5
+  1502 0001:0011ABF8  1503 0001:0011AC0D  1508 0001:0011AC1A  1509 0001:0011AC20
+  1511 0001:0011AC4F  1512 0001:0011AC55  1514 0001:0011AC84  1515 0001:0011AC8E
+  1516 0001:0011AC9B  1517 0001:0011ACCA  1518 0001:0011ACDB  1520 0001:0011ACFA
+  1522 0001:0011AD0A  1523 0001:0011AD2E  1524 0001:0011AD7C  1521 0001:0011AD9B
+  1526 0001:0011ADA5  1527 0001:0011ADB2  1530 0001:0011ADB7  1501 0001:0011ADBA
+  1532 0001:0011ADC1  1533 0001:0011ADE0  1535 0001:0011ADE2  1536 0001:0011ADEA
+  1538 0001:0011ADF2  1539 0001:0011AE09  1542 0001:0011AE3E  1543 0001:0011AE46
+  1545 0001:0011AE54  1549 0001:0011AE60  1552 0001:0011AE6C  1553 0001:0011AE7B
+  1552 0001:0011AEA0  1554 0001:0011AEA3  1556 0001:0011AED8  1559 0001:0011AEE4
+  1562 0001:0011AF17  1563 0001:0011AF22  1564 0001:0011AF44  1565 0001:0011AF4F
+  1566 0001:0011AF5A  1567 0001:0011AF65  1569 0001:0011AF70  1572 0001:0011AF7C
+  1573 0001:0011AF8B  1572 0001:0011AFA7  1576 0001:0011AFAA  1578 0001:0011AFB2
+  1580 0001:0011AFC3
+
+Line numbers for Wsockc(wsockc.pas) segment .itext
+
+  1582 0002:00000DF0
+
+Line numbers for Rpcberr(RpcbErr.pas) segment .text
+
+   186 0001:00000000
+
+Line numbers for SelDiv(SelDiv.pas) segment .text
+
+    73 0001:0011B2E8    74 0001:0011B318    76 0001:0011B31C    78 0001:0011B322
+    79 0001:0011B334    80 0001:0011B33F    83 0001:0011B343    84 0001:0011B356
+    85 0001:0011B35E    88 0001:0011B37E    90 0001:0011B38B    92 0001:0011B398
+    93 0001:0011B3A9    94 0001:0011B3BC    95 0001:0011B3CA    96 0001:0011B3E3
+    97 0001:0011B3EF    98 0001:0011B3FF   100 0001:0011B416   104 0001:0011B428
+   106 0001:0011B431   107 0001:0011B435   108 0001:0011B467   111 0001:0011B487
+   116 0001:0011B4F0   117 0001:0011B510   120 0001:0011B514   122 0001:0011B51F
+   123 0001:0011B532   124 0001:0011B53A   125 0001:0011B55A   128 0001:0011B56A
+   130 0001:0011B573   131 0001:0011B577   133 0001:0011B57C   135 0001:0011B589
+   136 0001:0011B59A   137 0001:0011B5A6   138 0001:0011B5B4   139 0001:0011B5CD
+   140 0001:0011B5D9   141 0001:0011B5E9   143 0001:0011B600   146 0001:0011B612
+   148 0001:0011B61B   149 0001:0011B61F   151 0001:0011B651   153 0001:0011B673
+   154 0001:0011B686   157 0001:0011B704   158 0001:0011B722   161 0001:0011B726
+   162 0001:0011B736   163 0001:0011B73D   164 0001:0011B75A   165 0001:0011B763
+   167 0001:0011B769   168 0001:0011B777   169 0001:0011B780   172 0001:0011B784
+   178 0001:0011B7C0   179 0001:0011B7E9   181 0001:0011B7EB   182 0001:0011B803
+   183 0001:0011B814   184 0001:0011B826   185 0001:0011B82D   186 0001:0011B850
+   188 0001:0011B860   191 0001:0011B8C8   192 0001:0011B8CB   193 0001:0011B8D9
+   196 0001:0011B8EE   197 0001:0011B8F6   200 0001:0011B8F8   201 0001:0011B90F
+   202 0001:0011B920   205 0001:0011B92C   206 0001:0011B959   208 0001:0011B960
+   212 0001:0011B9AC   213 0001:0011B9B1   217 0001:0011B9B4   220 0001:0011B9BE
+   227 0001:0011BA80   228 0001:0011BA9E   229 0001:0011BAA6   230 0001:0011BAB0
+   233 0001:0011BABA   234 0001:0011BAC9   236 0001:0011BB1C   237 0001:0011BB30
+   238 0001:0011BB65   231 0001:0011BB66   240 0001:0011BB72   241 0001:0011BB7F
+   242 0001:0011BBA5
+
+Line numbers for SelDiv(SelDiv.pas) segment .itext
+
+   244 0002:00000DF8
+
+Line numbers for RpcSLogin(RpcSlogin.pas) segment .text
+
+    46 0001:0011BC30    47 0001:0011BC50    50 0001:0011BC5E    51 0001:0011BCA1
+    52 0001:0011BCB2    53 0001:0011BCC0    54 0001:0011BCC7    56 0001:0011BCE6
+    57 0001:0011BD04    61 0001:0011BD0D    62 0001:0011BD11    63 0001:0011BD45
+    64 0001:0011BD76    68 0001:0011BDA6    70 0001:0011BDB0    74 0001:0011BE50
+    75 0001:0011BE6D    76 0001:0011BE6F    79 0001:0011BE7D    80 0001:0011BE9B
+    81 0001:0011BEAC    82 0001:0011BEBC    83 0001:0011BEC3    85 0001:0011BEDF
+    86 0001:0011BEFD    88 0001:0011BF04    89 0001:0011BF38    90 0001:0011BF69
+    93 0001:0011BF99    95 0001:0011BFA3    99 0001:0011C034   100 0001:0011C036
+   109 0001:0011C038   110 0001:0011C054   112 0001:0011C058   114 0001:0011C066
+   115 0001:0011C076   116 0001:0011C07D   117 0001:0011C087   118 0001:0011C08F
+   120 0001:0011C09F   121 0001:0011C0C3   122 0001:0011C0E5   124 0001:0011C0EF
+   125 0001:0011C0FF   127 0001:0011C121   128 0001:0011C125   129 0001:0011C12C
+   131 0001:0011C139   132 0001:0011C145   133 0001:0011C154   134 0001:0011C160
+   135 0001:0011C16F   136 0001:0011C17B   137 0001:0011C18A   140 0001:0011C1A5
+   141 0001:0011C1B9   143 0001:0011C1C5   144 0001:0011C1C9   146 0001:0011C1D3
+   147 0001:0011C1D9   148 0001:0011C1E8   149 0001:0011C1EE   152 0001:0011C203
+   153 0001:0011C207   155 0001:0011C213   156 0001:0011C219   158 0001:0011C223
+   159 0001:0011C229   162 0001:0011C23F   164 0001:0011C24B   167 0001:0011C2B8
+   168 0001:0011C2DB   171 0001:0011C2E9   172 0001:0011C2FA   173 0001:0011C301
+   174 0001:0011C314   176 0001:0011C31A   177 0001:0011C334   178 0001:0011C351
+   179 0001:0011C36E   180 0001:0011C38B   181 0001:0011C3A8   182 0001:0011C3C5
+   183 0001:0011C3E2   184 0001:0011C3FF   185 0001:0011C40F   187 0001:0011C42F
+   190 0001:0011C446   192 0001:0011C44B   293 0001:0011C488
+
+Line numbers for fRPCBErrMsg(fRPCBErrMsg.pas) segment .text
+
+    40 0001:0011C640    41 0001:0011C65D    42 0001:0011C676    43 0001:0011C68F
+    44 0001:0011C69C    45 0001:0011C6A6    48 0001:0011C6C8    49 0001:0011C6CB
+    50 0001:0011C6E4    51 0001:0011C6FD    52 0001:0011C70A    53 0001:0011C714
+    55 0001:0011C744
+
+Line numbers for CCOW_const(CCOW_const.pas) segment .text
+
+    23 0001:00000000
+
+Line numbers for CCOWRPCBroker(CCOWRPCBroker.pas) segment .text
+
+   111 0001:0011C894   112 0001:0011C8BA   113 0001:0011C8C7   114 0001:0011C8D7
+   115 0001:0011C8F3   116 0001:0011C90A   117 0001:0011C91B   118 0001:0011C925
+   119 0001:0011C933   122 0001:0011C943   123 0001:0011C95B   124 0001:0011C961
+   126 0001:0011C97F   127 0001:0011C98D   129 0001:0011C9A2   130 0001:0011C9AF
+   131 0001:0011C9BC   132 0001:0011C9C9   134 0001:0011C9E7   135 0001:0011C9FA
+   136 0001:0011CA04   138 0001:0011CA46   139 0001:0011CA4E   141 0001:0011CA56
+   144 0001:0011CA82   145 0001:0011CA9D   147 0001:0011CAB9   148 0001:0011CAC7
+   149 0001:0011CADE   150 0001:0011CB14   151 0001:0011CB3D   152 0001:0011CB4F
+   153 0001:0011CB62   154 0001:0011CB74   155 0001:0011CB8D   156 0001:0011CB9C
+   157 0001:0011CBA6   158 0001:0011CBB8   159 0001:0011CBD1   160 0001:0011CBD9
+   162 0001:0011CBED   163 0001:0011CBF7   168 0001:0011CC04   169 0001:0011CC14
+   173 0001:0011CC20   174 0001:0011CC28   176 0001:0011CC38   177 0001:0011CC42
+   179 0001:0011CC6A   180 0001:0011CC6C   181 0001:0011CC75   182 0001:0011CC8C
+   183 0001:0011CC97   184 0001:0011CCA1   185 0001:0011CCAB   186 0001:0011CCBB
+   187 0001:0011CCCA   188 0001:0011CCF0   189 0001:0011CCFD   190 0001:0011CD11
+   191 0001:0011CD1D   196 0001:0011CD29   198 0001:0011CD2D   199 0001:0011CD37
+   200 0001:0011CD47   202 0001:0011CD57   203 0001:0011CD6E   208 0001:0011CD79
+   212 0001:0011D08C   213 0001:0011D093   220 0001:0011D094   221 0001:0011D0B6
+   222 0001:0011D0BA   223 0001:0011D0C7   224 0001:0011D0D5   226 0001:0011D0E3
+   227 0001:0011D0ED   228 0001:0011D11B   230 0001:0011D121   231 0001:0011D144
+   233 0001:0011D14A   236 0001:0011D153   238 0001:0011D164   239 0001:0011D16C
+   254 0001:0011D1D8   257 0001:0011D20D   258 0001:0011D21E   259 0001:0011D22F
+   260 0001:0011D240   261 0001:0011D251   262 0001:0011D25D   263 0001:0011D26A
+   264 0001:0011D277   265 0001:0011D281   266 0001:0011D28B   267 0001:0011D298
+   270 0001:0011D2A4   272 0001:0011D2A8   274 0001:0011D2B5   275 0001:0011D2E5
+   276 0001:0011D31C   277 0001:0011D32C   281 0001:0011D336   283 0001:0011D34E
+   284 0001:0011D36F   286 0001:0011D387   287 0001:0011D391   288 0001:0011D3A1
+   293 0001:0011D3B5   294 0001:0011D3C1   296 0001:0011D3CD   297 0001:0011D3D8
+   299 0001:0011D3DE   300 0001:0011D3E8   305 0001:0011D3F8   307 0001:0011D408
+   308 0001:0011D419   310 0001:0011D434   311 0001:0011D43C   312 0001:0011D459
+   313 0001:0011D475   316 0001:0011D483   317 0001:0011D48A   318 0001:0011D49C
+   319 0001:0011D4A4   322 0001:0011D4AD   324 0001:0011D4C8   325 0001:0011D4D7
+   326 0001:0011D4E4   330 0001:0011D4EA   331 0001:0011D4F2   333 0001:0011D4F8
+   334 0001:0011D500   336 0001:0011D50E   339 0001:0011D512   342 0001:0011D525
+   344 0001:0011D538   351 0001:0011D544   353 0001:0011D558   354 0001:0011D55F
+   357 0001:0011D578   358 0001:0011D58A   359 0001:0011D596   360 0001:0011D5A1
+   363 0001:0011D5AC   366 0001:0011D5C5   371 0001:0011D5CD   372 0001:0011D5D9
+   373 0001:0011D5E5   374 0001:0011D5F6   375 0001:0011D5FE   376 0001:0011D626
+   377 0001:0011D63B   378 0001:0011D646   379 0001:0011D653   382 0001:0011D65F
+   383 0001:0011D663   385 0001:0011D678   394 0001:0011D6E4   395 0001:0011D705
+   396 0001:0011D70D   399 0001:0011D71B   400 0001:0011D72D   401 0001:0011D734
+   402 0001:0011D744   403 0001:0011D764   404 0001:0011D777   405 0001:0011D77E
+   406 0001:0011D79B   409 0001:0011D7CA   411 0001:0011D7D7   421 0001:0011D82C
+   422 0001:0011D877   424 0001:0011D87F   426 0001:0011D88D   428 0001:0011D894
+   429 0001:0011D8A1   430 0001:0011D8AE   431 0001:0011D8BB   432 0001:0011D8D8
+   433 0001:0011D8F5   434 0001:0011D907   435 0001:0011D914   436 0001:0011D921
+   437 0001:0011D93E   438 0001:0011D95B   439 0001:0011D96D   440 0001:0011D97A
+   441 0001:0011D987   442 0001:0011D9A4   443 0001:0011D9C1   445 0001:0011D9D3
+   446 0001:0011D9E0   447 0001:0011D9ED   448 0001:0011DA0A   449 0001:0011DA27
+   451 0001:0011DA39   452 0001:0011DA46   453 0001:0011DA53   454 0001:0011DA70
+   455 0001:0011DA8D   457 0001:0011DA9F   460 0001:0011DAB9   462 0001:0011DAC1
+   470 0001:0011DBBC   471 0001:0011DBE6   472 0001:0011DBED   473 0001:0011DBFA
+   474 0001:0011DC02   475 0001:0011DC10   477 0001:0011DC1A   478 0001:0011DC48
+   480 0001:0011DC4E   481 0001:0011DC6F   482 0001:0011DC74   484 0001:0011DC7B
+   485 0001:0011DC8B   486 0001:0011DC9B   487 0001:0011DCAB   488 0001:0011DCDB
+   489 0001:0011DCE1   490 0001:0011DD06   491 0001:0011DD36   492 0001:0011DD3C
+   493 0001:0011DD61   494 0001:0011DD91   495 0001:0011DD97   497 0001:0011DDC9
+   498 0001:0011DDD1   529 0001:0011DECC   530 0001:0011DEF8   531 0001:0011DEFA
+   533 0001:0011DF09   534 0001:0011DF11   536 0001:0011DF13   537 0001:0011DF43
+   538 0001:0011DF49   540 0001:0011DF6B   541 0001:0011DF9B   542 0001:0011DFA1
+   544 0001:0011DFEB   545 0001:0011E01B   546 0001:0011E021   548 0001:0011E06B
+   549 0001:0011E09B   550 0001:0011E0A1   552 0001:0011E0EB   553 0001:0011E121
+   554 0001:0011E127   556 0001:0011E186   557 0001:0011E18C   559 0001:0011E18E
+
+Line numbers for CCOWRPCBroker(CCOWRPCBroker.pas) segment .itext
+
+   561 0002:00000E00
+
+Line numbers for VCEdit(VCEdit.pas) segment .text
+
+   140 0001:0011E6A0   141 0001:0011E6B2   142 0001:0011E6BB   143 0001:0011E6BF
+   146 0001:0011E6DC   147 0001:0011E6E7   148 0001:0011E6F3   152 0001:0011E704
+   153 0001:0011E725   154 0001:0011E730   155 0001:0011E734   156 0001:0011E73D
+   157 0001:0011E741   163 0001:0011E768   164 0001:0011E779   165 0001:0011E77D
+   166 0001:0011E78B   169 0001:0011E7A1   170 0001:0011E7AC   172 0001:0011E7B5
+   173 0001:0011E7C7   174 0001:0011E7D6   177 0001:0011E7E9   178 0001:0011E7F0
+   179 0001:0011E7FD   180 0001:0011E80A   181 0001:0011E80E   183 0001:0011E814
+   185 0001:0011E836   187 0001:0011E838   188 0001:0011E84B   189 0001:0011E85B
+   190 0001:0011E86D   191 0001:0011E876   194 0001:0011E880   199 0001:0011E88C
+   200 0001:0011E8B0   202 0001:0011E8D2   207 0001:0011E930   208 0001:0011E952
+   210 0001:0011E958   212 0001:0011E983   213 0001:0011E98F   214 0001:0011E99C
+   215 0001:0011E9A9   218 0001:0011E9BC   220 0001:0011E9E7   221 0001:0011E9EA
+   223 0001:0011E9F5   224 0001:0011EA02   225 0001:0011EA0F   226 0001:0011EA1B
+   230 0001:0011EA2E   231 0001:0011EA3B   232 0001:0011EA47   236 0001:0011EA5A
+   238 0001:0011EA60   239 0001:0011EA72   240 0001:0011EA86   243 0001:0011EB22
+   244 0001:0011EB2A   246 0001:0011EB4C   247 0001:0011EB56   251 0001:0011EB62
+   252 0001:0011EB73   254 0001:0011EB95   255 0001:0011EB9E   256 0001:0011EBAB
+   257 0001:0011EBB8   261 0001:0011EBC6   264 0001:0011ED2C   265 0001:0011ED42
+   267 0001:0011ED48   269 0001:0011ED4E   271 0001:0011ED51   272 0001:0011ED61
+   273 0001:0011ED68   274 0001:0011ED77   275 0001:0011ED92   277 0001:0011EDA2
+   278 0001:0011EDA8   281 0001:0011EDB8   283 0001:0011EDC0   286 0001:0011EE58
+   287 0001:0011EE5B   289 0001:0011EE6A   290 0001:0011EE75   292 0001:0011EE82
+   295 0001:0011EE84   296 0001:0011EE9E   299 0001:0011EEEB   301 0001:0011EF40
+
+Line numbers for AddServer(AddServer.pas) segment .text
+
+    40 0001:00000000
+
+Line numbers for Rpcconf1(RpcConf1.pas) segment .text
+
+    73 0001:0011F3E4    74 0001:0011F404    75 0001:0011F408    77 0001:0011F41D
+    78 0001:0011F425    80 0001:0011F432    81 0001:0011F436    83 0001:0011F438
+    75 0001:0011F439    84 0001:0011F43C    90 0001:0011F464    91 0001:0011F487
+    92 0001:0011F491    94 0001:0011F49D    95 0001:0011F4AA    96 0001:0011F4BE
+    97 0001:0011F4C8    98 0001:0011F4D7    99 0001:0011F4E1   100 0001:0011F4E9
+   103 0001:0011F4F2   104 0001:0011F4FC   105 0001:0011F506   111 0001:0011F52C
+   113 0001:0011F549   114 0001:0011F559   115 0001:0011F58E   116 0001:0011F59F
+   117 0001:0011F5D4   120 0001:0011F5E1   121 0001:0011F5FC   124 0001:0011F634
+   125 0001:0011F64A   126 0001:0011F653   127 0001:0011F669   129 0001:0011F698
+   130 0001:0011F6AA   133 0001:0011F718   134 0001:0011F71B   135 0001:0011F729
+   136 0001:0011F736   137 0001:0011F741   138 0001:0011F756   147 0001:0011F758
+   148 0001:0011F77E   149 0001:0011F797   153 0001:0011F7A1   154 0001:0011F7B0
+   155 0001:0011F7C2   156 0001:0011F7D5   157 0001:0011F7DD   158 0001:0011F7EF
+   160 0001:0011F801   161 0001:0011F80E   162 0001:0011F825   163 0001:0011F838
+   158 0001:0011F839   165 0001:0011F83C   167 0001:0011F846   169 0001:0011F859
+   170 0001:0011F86F   174 0001:0011F884   177 0001:0011F89B   178 0001:0011F8B5
+   177 0001:0011F8E4   180 0001:0011F8E7   181 0001:0011F8FC   182 0001:0011F936
+   183 0001:0011F976   186 0001:0011F9B0   187 0001:0011F9D0   191 0001:0011F9DF
+   192 0001:0011FA19   195 0001:0011FA53   197 0001:0011FA5C   198 0001:0011FA6A
+   200 0001:0011FA78   202 0001:0011FA7E   203 0001:0011FA86   204 0001:0011FA90
+   206 0001:0011FA9A   209 0001:0011FB20   210 0001:0011FB3A   211 0001:0011FB44
+   212 0001:0011FB77   213 0001:0011FB92   214 0001:0011FB9C   217 0001:0011FBD8
+   218 0001:0011FBF0   219 0001:0011FBFA   220 0001:0011FC15   221 0001:0011FC30
+   222 0001:0011FC3A   225 0001:0011FC64   226 0001:0011FC68   227 0001:0011FC7C
+   228 0001:0011FC83   229 0001:0011FC98   234 0001:0011FC9C   241 0001:0011FCA0
+   242 0001:0011FCBE   243 0001:0011FCCF   245 0001:0011FCE3   246 0001:0011FCF4
+   247 0001:0011FD05   248 0001:0011FD16   249 0001:0011FD2E   250 0001:0011FD42
+   251 0001:0011FD50   252 0001:0011FD6A   253 0001:0011FD7E   255 0001:0011FD9A
+   256 0001:0011FDBD   257 0001:0011FDCD   253 0001:0011FDCE   260 0001:0011FDD3
+   262 0001:0011FDDC   263 0001:0011FDE4
+
+Line numbers for Rpcconf1(RpcConf1.pas) segment .itext
+
+   265 0002:00000E08
+
+Line numbers for RpcNet(rpcnet.pas) segment .text
+
+   152 0001:00120030   153 0001:00120039   154 0001:0012003E   155 0001:0012004E
+   157 0001:0012005B   159 0001:0012006C   160 0001:00120077   163 0001:0012007C
+   165 0001:0012007F   166 0001:00120086   169 0001:00120094   171 0001:00120095
+   173 0001:001200A0   174 0001:001200A3   175 0001:001200A8   177 0001:001200B0
+   187 0001:001200B4   189 0001:001200C4   191 0001:001200CC   192 0001:001200DA
+   194 0001:001200E0   195 0001:001200E4   196 0001:001200EA   198 0001:001200FA
+   201 0001:0012010A   203 0001:0012010F   204 0001:0012011E   205 0001:00120121
+   208 0001:00120126   210 0001:0012012F   211 0001:00120137   212 0001:00120146
+   213 0001:00120149   216 0001:0012014E   218 0001:00120158   219 0001:0012015D
+   220 0001:0012015F   221 0001:00120165   222 0001:00120173   223 0001:00120178
+   226 0001:0012017D   227 0001:0012018D   229 0001:0012019B   230 0001:001201A2
+   231 0001:001201A9   232 0001:001201B3   235 0001:001201D1   237 0001:001201DA
+   236 0001:001201E6   241 0001:0012020A   242 0001:00120219   243 0001:0012021F
+   248 0001:00120232   249 0001:0012023D   250 0001:0012024D   251 0001:0012024F
+   252 0001:00120255   254 0001:00120263   283 0001:001202AC   285 0001:001202AD
+   287 0001:001202B9   289 0001:001202C0   292 0001:001202D4   301 0001:001202D8
+   302 0001:001202F7   305 0001:001202FC   308 0001:0012030A   310 0001:00120313
+   312 0001:00120323   313 0001:0012032A   315 0001:00120333   316 0001:00120343
+   319 0001:00120348   320 0001:00120356   322 0001:0012035A   323 0001:00120372
+   326 0001:00120377   328 0001:00120385   329 0001:0012038B   330 0001:00120396
+   332 0001:0012039B   333 0001:001203AB   334 0001:001203B5   335 0001:001203D8
+   338 0001:001203E2   339 0001:001203EC   341 0001:00120415   344 0001:0012042A
+
+Line numbers for RpcNet(rpcnet.pas) segment .itext
+
+   435 0002:00000E10
+
+Line numbers for Loginfrm(Loginfrm.pas) segment .text
+
+   102 0001:0012087C   103 0001:00120881   106 0001:00120884   107 0001:001208A7
+   108 0001:001208AB   112 0001:001208BD   115 0001:001208CB   116 0001:001208DD
+   119 0001:001208F3   120 0001:001208FD   122 0001:0012090C   123 0001:00120931
+   124 0001:00120959   125 0001:00120981   126 0001:001209A9   127 0001:001209B0
+   128 0001:001209C2   129 0001:001209E6   131 0001:001209EC   132 0001:001209F0
+   133 0001:001209FC   134 0001:00120A04   136 0001:00120A16   137 0001:00120A3E
+   138 0001:00120A62   141 0001:00120A6E   161 0001:00120ABC   162 0001:00120AE0
+   163 0001:00120AEA   165 0001:00120AF8   166 0001:00120B0C   167 0001:00120B5C
+   169 0001:00120B60   170 0001:00120B73   173 0001:00120B7D   175 0001:00120BA4
+   176 0001:00120BC4   180 0001:00120BD1   183 0001:00120BF8   184 0001:00120C0D
+   185 0001:00120C19   186 0001:00120C25   192 0001:00120C32   194 0001:00120C56
+   195 0001:00120C66   196 0001:00120C76   197 0001:00120C96   203 0001:00120CAC
+   206 0001:00120CB8   207 0001:00120CCD   208 0001:00120CD5   210 0001:00120CEE
+   212 0001:00120D19   213 0001:00120D30   215 0001:00120D3E   216 0001:00120D69
+   215 0001:00120D9B   217 0001:00120D9E   218 0001:00120DAA   221 0001:00120DC6
+   225 0001:00120DDA   229 0001:00120DF1   231 0001:00120E01   234 0001:00120EAC
+   235 0001:00120EAF   236 0001:00120EC4   237 0001:00120ECB   242 0001:00120EF8
+   243 0001:00120F14   245 0001:00120F21   246 0001:00120F35   248 0001:00120F49
+   250 0001:00120F71   251 0001:00120F86   253 0001:00120F9C   254 0001:00120FB2
+   256 0001:00120FE1   261 0001:0012109C   262 0001:001210C0   263 0001:001210DB
+   265 0001:001210E3   268 0001:00121130   271 0001:0012113A   272 0001:0012114D
+   273 0001:00121168   274 0001:0012117B   275 0001:00121196   276 0001:001211A9
+   277 0001:001211C1   278 0001:001211D4   279 0001:001211EC   280 0001:001211FF
+   282 0001:00121217   286 0001:0012122D   288 0001:00121237   289 0001:00121246
+   290 0001:00121254   291 0001:0012126B   292 0001:0012127A   293 0001:00121283
+   294 0001:0012128C   295 0001:00121298   296 0001:001212AB   297 0001:001212BF
+   298 0001:001212D3   299 0001:001212E6   300 0001:00121303   301 0001:00121320
+   304 0001:0012132E   305 0001:00121336   307 0001:0012134C   308 0001:00121360
+   311 0001:00121379   312 0001:00121387   313 0001:00121391   314 0001:001213BF
+   316 0001:001213FC   317 0001:00121410   321 0001:00121429   322 0001:0012143F
+   324 0001:0012144E   325 0001:0012145C   326 0001:0012148A   328 0001:001214C7
+   332 0001:001214D6   333 0001:001214E4   335 0001:001214FC   337 0001:0012150F
+   340 0001:00121534   342 0001:00121544   343 0001:0012154E   350 0001:001215F8
+   351 0001:00121614   353 0001:0012161C   354 0001:00121626   355 0001:00121630
+   356 0001:0012163F   357 0001:0012164D   358 0001:00121659   360 0001:0012166E
+   361 0001:00121676   364 0001:00121688   366 0001:00121691   367 0001:001216A8
+   368 0001:001216B6   369 0001:001216C3   370 0001:001216DC   371 0001:001216F3
+   372 0001:001216FF   374 0001:00121717   377 0001:00121727   378 0001:0012172F
+   381 0001:00121788   382 0001:001217A8   383 0001:001217D3   384 0001:00121808
+   387 0001:00121824   388 0001:0012184F   389 0001:0012188C   391 0001:001218A8
+   392 0001:001218BD   395 0001:00121950   396 0001:0012196D   397 0001:00121991
+   402 0001:001219BC   403 0001:001219D8   404 0001:001219E9   405 0001:001219F7
+   406 0001:00121A03   408 0001:00121A2C   410 0001:00121A3C   412 0001:00121A90
+
+Line numbers for fSgnonDlg(fSgnonDlg.pas) segment .text
+
+    36 0001:00000000
+
+Line numbers for Sgnoncnf(SgnonCnf.pas) segment .text
+
+   167 0001:00122028   168 0001:00122033   173 0001:00122034   184 0001:00122038
+   187 0001:0012205C   188 0001:00122069   189 0001:00122075   190 0001:00122081
+   191 0001:0012208A   194 0001:00122096   195 0001:001220BD   196 0001:001220C6
+   199 0001:001220D3   200 0001:001220FA   201 0001:00122103   204 0001:00122110
+   205 0001:00122130   208 0001:00122157   209 0001:00122171   211 0001:00122177
+   212 0001:00122181   213 0001:001221A9   217 0001:001221D8   218 0001:001221F2
+   220 0001:001221F8   221 0001:00122209   225 0001:00122218   226 0001:00122232
+   228 0001:00122238   229 0001:00122242   231 0001:00122256   235 0001:00122334
+   236 0001:0012233B   237 0001:00122342   238 0001:00122348   239 0001:00122354
+   240 0001:0012235A   241 0001:00122366   242 0001:0012236C   243 0001:00122378
+   244 0001:0012237E   245 0001:0012238A   250 0001:001223C0   253 0001:001223C4
+   254 0001:001223E2   255 0001:001223E9   256 0001:001223FA   257 0001:00122405
+   258 0001:00122416   259 0001:00122421   260 0001:00122432   261 0001:0012243D
+   262 0001:0012244E   263 0001:00122459   267 0001:001224C0   268 0001:001224CB
+   273 0001:001224CC   274 0001:001224E8   275 0001:001224F0   276 0001:001224F9
+   277 0001:00122512   278 0001:00122520   279 0001:00122536   280 0001:00122544
+   285 0001:00122573   286 0001:00122585   287 0001:001225BF   289 0001:001225F9
+   290 0001:0012260D   291 0001:0012261B   293 0001:0012262F   294 0001:0012263B
+   295 0001:0012264A   297 0001:0012264F   299 0001:00122659   300 0001:0012265E
+   302 0001:00122665   304 0001:00122675   305 0001:0012267F   307 0001:0012269C
+   318 0001:00122714   319 0001:00122719   320 0001:00122720   322 0001:00122738
+   324 0001:0012274E   325 0001:0012275B   326 0001:00122768   329 0001:00122771
+   330 0001:0012277D   331 0001:00122786   332 0001:00122792   333 0001:001227A6
+   334 0001:001227B7   338 0001:001227C5   339 0001:001227D0   340 0001:001227D6
+   348 0001:001227DC   349 0001:00122800   350 0001:0012280F   351 0001:00122817
+   352 0001:00122825   353 0001:0012283D   354 0001:00122851   355 0001:00122865
+   356 0001:00122875   357 0001:0012288B   360 0001:0012289B   361 0001:001228A8
+   362 0001:001228B5   366 0001:001228C5   367 0001:001228E0   368 0001:00122903
+   369 0001:00122922   370 0001:00122941   371 0001:0012294D   372 0001:00122956
+   373 0001:00122962   374 0001:00122976   375 0001:00122987   377 0001:00122993
+   378 0001:001229C8   379 0001:001229E3   381 0001:001229F9   382 0001:00122A01
+   384 0001:00122A12   387 0001:00122A84   388 0001:00122A87   393 0001:00122AA5
+   394 0001:00122AB9   395 0001:00122ACD   396 0001:00122AE1   397 0001:00122AF5
+   398 0001:00122B09   399 0001:00122B1D   400 0001:00122B2C   402 0001:00122B3B
+   404 0001:00122B4B   406 0001:00122B52   412 0001:00122C54   413 0001:00122C7C
+   414 0001:00122C8D   416 0001:00122CA1   417 0001:00122CA5   419 0001:00122CB4
+   420 0001:00122D0A   422 0001:00122D17   423 0001:00122D1D   425 0001:00122D2C
+   426 0001:00122D7F   428 0001:00122D8C   430 0001:00122D98   431 0001:00122D9F
+   432 0001:00122DA9   434 0001:00122DCE   437 0001:00122DE2   439 0001:00122DEE
+   440 0001:00122DF7   441 0001:00122E07   443 0001:00122E2C   446 0001:00122E40
+   448 0001:00122E4F   449 0001:00122E59   450 0001:00122E6E   452 0001:00122E88
+   455 0001:00122E9C   457 0001:00122EAB   458 0001:00122EB5   459 0001:00122ECA
+   461 0001:00122EE4   464 0001:00122EF8   466 0001:00122F07   467 0001:00122F11
+   468 0001:00122F26   470 0001:00122F40   473 0001:00122F54   475 0001:00122F63
+   476 0001:00122F6D   477 0001:00122F82   479 0001:00122F9C   482 0001:00122FB0
+   483 0001:00122FB7   486 0001:00123094   487 0001:001230A6   488 0001:001230AF
+   489 0001:001230B8   490 0001:001230C9   491 0001:001230D2   493 0001:001230E3
+   496 0001:00123100   498 0001:0012311A   499 0001:0012312F   500 0001:00123152
+   501 0001:00123171   502 0001:00123190   503 0001:001231AB   504 0001:001231BA
+   505 0001:001231C9   506 0001:001231D8   507 0001:001231E7   510 0001:00123208
+   511 0001:0012320B   512 0001:00123210   513 0001:00123215   514 0001:0012321C
+   515 0001:00123224   516 0001:0012322C   517 0001:00123234   518 0001:0012323C
+   519 0001:00123243   520 0001:00123250   521 0001:0012325D   522 0001:0012326C
+   525 0001:00123288   526 0001:0012329A   527 0001:001232A3   528 0001:001232B2
+   531 0001:001232CC   532 0001:001232D7   533 0001:001232DF   534 0001:001232EB
+   537 0001:001232FC   538 0001:00123317   539 0001:00123321   541 0001:0012332F
+   542 0001:00123354   544 0001:00123379   547 0001:001233B0   548 0001:001233CB
+   549 0001:001233D5   551 0001:001233E3   552 0001:00123408   554 0001:0012342D
+   557 0001:00123464   558 0001:0012347F   559 0001:00123489   560 0001:001234AE
+   561 0001:001234DA   564 0001:00123504   565 0001:0012350A   566 0001:00123514
+   567 0001:00123518   569 0001:0012352C   570 0001:0012353B   573 0001:00123544
+   574 0001:0012355D   575 0001:00123563   576 0001:00123579   577 0001:0012358B
+   578 0001:00123592   579 0001:00123598   580 0001:001235A2   581 0001:001235AC
+   582 0001:001235B2   583 0001:001235BC   584 0001:001235C6   585 0001:001235D0
+   586 0001:001235D6   587 0001:001235DC   590 0001:00123600   591 0001:0012361D
+   592 0001:00123620   593 0001:00123653   594 0001:0012366E   598 0001:001236A0
+   599 0001:001236A3   600 0001:001236AB
+
+Line numbers for Sgnoncnf(SgnonCnf.pas) segment .itext
+
+   602 0002:00000E18
+
+Line numbers for Trpcb(trpcb.pas) segment .text
+
+   363 0001:0012400C   364 0001:0012401E   365 0001:00124027   366 0001:00124036
+   371 0001:00124050   372 0001:0012405B   373 0001:00124062   374 0001:0012406A
+   375 0001:0012406F   376 0001:0012407B   389 0001:0012408C   390 0001:001240B3
+   391 0001:001240BB   392 0001:001240D0   393 0001:001240E0   394 0001:001240EE
+   395 0001:00124103   396 0001:00124112   397 0001:00124138   398 0001:00124159
+   394 0001:0012415A   400 0001:0012416C   404 0001:00124173   405 0001:00124183
+   406 0001:00124195   405 0001:001241BD   408 0001:001241C0   416 0001:001241EC
+   417 0001:001241F2   418 0001:00124204   419 0001:00124213   420 0001:0012421F
+   417 0001:00124220   421 0001:00124223   422 0001:0012422B   428 0001:00124230
+   429 0001:00124233   430 0001:00124247   436 0001:0012424C   437 0001:00124252
+   438 0001:0012426D   439 0001:00124274   445 0001:00124278   446 0001:0012427F
+   447 0001:001242A3   448 0001:001242AA   459 0001:001242B0   460 0001:001242DE
+   461 0001:001242EC   465 0001:00124325   466 0001:00124343   467 0001:0012436A
+   468 0001:00124378   469 0001:00124380   470 0001:00124386   471 0001:001243A8
+   474 0001:001243AC   475 0001:001243BE   476 0001:001243E5   480 0001:0012441A
+   481 0001:0012441F   484 0001:00124438   485 0001:00124442   503 0001:00124504
+   504 0001:00124532   505 0001:0012453F   506 0001:00124544   507 0001:00124552
+   508 0001:0012455D   511 0001:0012456C   512 0001:00124581   533 0001:001245AC
+   534 0001:001245BF   535 0001:001245C6   536 0001:001245CA   537 0001:001245DB
+   539 0001:001245E6   540 0001:001245F2   541 0001:001245F8   542 0001:0012460E
+   543 0001:0012461E   544 0001:0012462A   546 0001:00124638   555 0001:00124644
+   556 0001:0012464C   563 0001:00124650   564 0001:00124659   565 0001:00124660
+   566 0001:00124673   567 0001:0012467F   574 0001:00124684   575 0001:0012469B
+   576 0001:001246A4   577 0001:001246B7   579 0001:001246C3   582 0001:001246F4
+   583 0001:001246FF   584 0001:00124707   585 0001:0012470C   586 0001:00124718
+   591 0001:00124728   592 0001:0012473A   593 0001:00124743   594 0001:00124752
+   599 0001:0012476C   600 0001:00124777   601 0001:0012477E   602 0001:00124786
+   603 0001:0012478B   604 0001:00124797   612 0001:001247A8   613 0001:001247B0
+   614 0001:001247B7   615 0001:001247C6   616 0001:001247D8   617 0001:001247F7
+   618 0001:00124812   620 0001:00124831   615 0001:00124832   620 0001:00124835
+   628 0001:0012483C   629 0001:00124842   630 0001:00124849   631 0001:00124854
+   632 0001:00124860   633 0001:00124864   634 0001:0012486C   635 0001:00124871
+   637 0001:00124878   630 0001:00124879   638 0001:0012487C   640 0001:00124884
+   646 0001:0012488C   647 0001:00124896   648 0001:001248A5   653 0001:001248A8
+   654 0001:001248AF   656 0001:001248B9   655 0001:001248C2   657 0001:001248CA
+   659 0001:001248D8   660 0001:001248F2   662 0001:00124900   663 0001:0012490A
+   679 0001:00124910   680 0001:0012493E   684 0001:00124947   686 0001:00124955
+   688 0001:00124980   690 0001:001249AB   691 0001:001249B2   692 0001:001249C6
+   693 0001:001249D8   694 0001:00124A08   695 0001:00124A1C   697 0001:00124A47
+   698 0001:00124A50   699 0001:00124A5B   701 0001:00124A61   702 0001:00124A6A
+   703 0001:00124A80   705 0001:00124A8E   706 0001:00124AA2   707 0001:00124AA9
+   708 0001:00124ABB   709 0001:00124AC2   711 0001:00124AD4   712 0001:00124AD8
+   713 0001:00124AE4   718 0001:00124BD4   719 0001:00124BDF   720 0001:00124BE8
+   721 0001:00124BF3   722 0001:00124BFE   723 0001:00124C06   724 0001:00124C11
+   725 0001:00124C19   726 0001:00124C24   727 0001:00124C2C   728 0001:00124C37
+   729 0001:00124C3F   730 0001:00124C4A   731 0001:00124C52   732 0001:00124C5E
+   745 0001:00124C6C   746 0001:00124C99   747 0001:00124C9D   748 0001:00124CA7
+   749 0001:00124CAC   750 0001:00124CBA   751 0001:00124CCC   758 0001:00124CDE
+   759 0001:00124CE8   760 0001:00124CFB   761 0001:00124D0C   762 0001:00124D1E
+   763 0001:00124D31   764 0001:00124D46   765 0001:00124D5A   766 0001:00124D82
+   767 0001:00124D90   768 0001:00124D9B   770 0001:00124DAA   771 0001:00124DAE
+   775 0001:00124DC0   776 0001:00124DC4   779 0001:00124DEC   781 0001:00124DEE
+   782 0001:00124DFB   784 0001:00124E0C   787 0001:00124E12   790 0001:00124E1C
+   791 0001:00124E28   794 0001:00124E4B   795 0001:00124E56   797 0001:00124E66
+   803 0001:00124EE4   804 0001:00124EE9   811 0001:00124EEC   812 0001:00124EF3
+   813 0001:00124F02   814 0001:00124F10   815 0001:00124F22   816 0001:00124F2C
+   818 0001:00124F47   819 0001:00124F4F   821 0001:00124F5F   828 0001:00124F64
+   829 0001:00124F68   830 0001:00124F6F   831 0001:00124F78   832 0001:00124F7F
+   839 0001:00124F84   840 0001:00124F88   841 0001:00124F8F   842 0001:00124F98
+   843 0001:00124F9F   850 0001:00124FA4   851 0001:00124FC7   852 0001:00124FD4
+   853 0001:00124FE4   854 0001:00125000   855 0001:00125017   856 0001:00125028
+   857 0001:00125032   858 0001:00125040   861 0001:00125050   862 0001:00125068
+   863 0001:0012506E   865 0001:0012508C   866 0001:0012509A   868 0001:001250AF
+   869 0001:001250BC   870 0001:001250C9   871 0001:001250D6   873 0001:001250F4
+   874 0001:00125107   875 0001:00125111   877 0001:00125153   878 0001:0012515B
+   879 0001:0012516B   880 0001:00125173   884 0001:0012517F   885 0001:00125187
+   887 0001:00125197   888 0001:001251A1   890 0001:001251C9   891 0001:001251CB
+   892 0001:001251D4   893 0001:001251EB   894 0001:001251F6   895 0001:00125200
+   896 0001:0012520A   897 0001:0012521A   898 0001:00125229   899 0001:0012524F
+   900 0001:0012525C   901 0001:00125270   902 0001:0012527C   907 0001:00125288
+   909 0001:0012528C   910 0001:00125296   911 0001:001252A6   913 0001:001252B6
+   914 0001:001252CD   919 0001:001252D8   924 0001:001254F8   925 0001:001254FE
+   926 0001:0012550D   927 0001:00125513   932 0001:00125518   933 0001:0012551E
+   934 0001:00125522   936 0001:0012552D   937 0001:00125533   942 0001:00125538
+   943 0001:0012553B   944 0001:00125546   950 0001:00125548   951 0001:00125550
+   952 0001:00125558   954 0001:00125560   955 0001:0012556C   960 0001:00125570
+   962 0001:00125586   963 0001:001255A2   965 0001:001255AB   966 0001:001255B8
+   978 0001:001255C4   979 0001:001255E9   980 0001:001255F6   981 0001:00125600
+   982 0001:00125605   983 0001:0012560A   985 0001:0012560E   986 0001:0012561B
+   988 0001:00125628   989 0001:00125636   991 0001:00125645   992 0001:0012564C
+  1000 0001:00125650  1001 0001:0012565E  1009 0001:001256BD  1011 0001:001256C9
+  1012 0001:001256E6  1013 0001:001256EE  1016 0001:0012571C  1019 0001:0012571E
+  1020 0001:00125730  1021 0001:0012573E  1022 0001:00125747  1023 0001:00125755
+  1024 0001:0012575B  1025 0001:00125763  1029 0001:00125770  1031 0001:00125792
+  1032 0001:0012579C  1037 0001:001257B2  1038 0001:001257BA  1039 0001:001257BF
+  1040 0001:001257C7  1041 0001:001257CC  1043 0001:001257EA  1044 0001:001257ED
+  1045 0001:001257FD  1046 0001:00125813  1048 0001:0012581D  1049 0001:00125830
+  1050 0001:0012583F  1051 0001:00125868  1053 0001:00125875  1054 0001:00125887
+  1056 0001:00125890  1058 0001:0012589C  1059 0001:001258A3  1062 0001:001258AD
+  1065 0001:001258B5  1094 0001:00125920  1095 0001:0012593E  1096 0001:0012594B
+  1097 0001:00125959  1098 0001:0012596A  1099 0001:00125976  1100 0001:0012597F
+  1101 0001:00125990  1102 0001:0012599C  1104 0001:001259B4  1106 0001:001259D1
+  1108 0001:00125A1B  1109 0001:00125A3C  1120 0001:00125A90  1121 0001:00125AAD
+  1122 0001:00125AAF  1124 0001:00125AB8  1127 0001:00125AD0  1128 0001:00125AF3
+  1129 0001:00125B01  1130 0001:00125B0B  1133 0001:00125B12  1134 0001:00125B1B
+  1135 0001:00125B33  1136 0001:00125B41  1137 0001:00125B4B  1140 0001:00125B52
+  1148 0001:00125B78  1155 0001:00125B7E  1170 0001:00125B80  1173 0001:00125BB3
+  1174 0001:00125BC4  1175 0001:00125BD5  1176 0001:00125BE6  1177 0001:00125BF7
+  1178 0001:00125C03  1179 0001:00125C10  1180 0001:00125C1D  1181 0001:00125C27
+  1182 0001:00125C31  1183 0001:00125C3E  1186 0001:00125C4A  1188 0001:00125C4E
+  1190 0001:00125C5B  1191 0001:00125C8B  1192 0001:00125CC2  1193 0001:00125CD2
+  1196 0001:00125CDC  1198 0001:00125CEC  1199 0001:00125CFD  1201 0001:00125D18
+  1202 0001:00125D20  1203 0001:00125D3D  1204 0001:00125D59  1207 0001:00125D67
+  1208 0001:00125D6E  1209 0001:00125D80  1210 0001:00125D88  1224 0001:00125D91
+  1226 0001:00125DAC  1227 0001:00125DBB  1228 0001:00125DC8  1232 0001:00125DCE
+  1233 0001:00125DD6  1235 0001:00125DDC  1236 0001:00125DE4  1238 0001:00125DF2
+  1241 0001:00125DF6  1244 0001:00125E09  1246 0001:00125E1C  1253 0001:00125E28
+  1255 0001:00125E3C  1256 0001:00125E43  1259 0001:00125E5C  1260 0001:00125E68
+  1261 0001:00125E74  1262 0001:00125E7F  1264 0001:00125E8A  1265 0001:00125EA0
+  1268 0001:00125EB9  1273 0001:00125EC1  1274 0001:00125ECD  1275 0001:00125ED9
+  1276 0001:00125EEA  1277 0001:00125EF2  1278 0001:00125F1A  1279 0001:00125F2F
+  1280 0001:00125F3A  1281 0001:00125F47  1284 0001:00125F53  1285 0001:00125F57
+  1287 0001:00125F6C  1294 0001:00125FDC  1295 0001:00125FF8  1298 0001:00125FFF
+  1299 0001:0012600F  1300 0001:0012601D  1301 0001:00126024  1302 0001:00126033
+  1303 0001:00126053  1305 0001:001260A8  1306 0001:001260AA  1309 0001:001260C7
+  1319 0001:00126144  1320 0001:00126146  1345 0001:00126148  1347 0001:0012616A
+  1355 0001:00126179  1356 0001:00126180  1357 0001:00126187  1365 0001:0012618B
+  1370 0001:001261AF  1373 0001:001261B3  1374 0001:001261BE  1375 0001:001261C7
+  1376 0001:001261D0  1378 0001:001261D4  1379 0001:001261E4  1389 0001:00126208
+  1390 0001:0012620F  1393 0001:00126216  1394 0001:00126228  1395 0001:0012622F
+  1397 0001:0012623E  1409 0001:00126254  1410 0001:0012627C  1411 0001:00126289
+  1412 0001:0012629A  1413 0001:001262AB  1414 0001:001262BC  1415 0001:001262CD
+  1416 0001:001262DE  1417 0001:001262E8  1418 0001:001262F9  1419 0001:00126307
+  1420 0001:00126315  1421 0001:0012633B  1424 0001:0012633D  1425 0001:0012634A
+  1427 0001:00126361  1431 0001:0012637A  1432 0001:00126386  1433 0001:00126397
+  1434 0001:0012639F  1435 0001:001263C7  1438 0001:001263E4  1442 0001:0012642C
+  1443 0001:00126432  1452 0001:00126434  1453 0001:0012643A  1459 0001:0012643C
+  1460 0001:0012644E  1461 0001:00126457  1462 0001:00126466  1465 0001:00126480
+  1466 0001:0012648B  1467 0001:00126493  1468 0001:00126498  1469 0001:001264A4
+  1472 0001:001264B4  1473 0001:001264B5  1474 0001:001264C8  1475 0001:001264DA
+  1478 0001:001264DC  1479 0001:001264E2  1480 0001:001264EC  1483 0001:001264F0
+  1484 0001:001264F6  1485 0001:00126500  1488 0001:00126504  1489 0001:0012650A
+  1490 0001:00126514  1493 0001:00126518  1494 0001:0012651E  1495 0001:00126528
+  1498 0001:0012652C  1499 0001:00126532  1500 0001:0012653C  1504 0001:00126540
+  1505 0001:00126543  1509 0001:00126544  1510 0001:00126547  1518 0001:00126548
+  1519 0001:0012654B  1522 0001:0012654C  1523 0001:00126552  1524 0001:0012655C
+  1529 0001:00126560  1530 0001:00126566  1531 0001:00126570  1534 0001:00126574
+  1535 0001:0012657A  1536 0001:00126584  1539 0001:00126588  1540 0001:0012658E
+  1541 0001:00126598  1544 0001:0012659C  1545 0001:001265A2  1546 0001:001265AC
+  1549 0001:001265B0  1550 0001:001265B6  1551 0001:001265C0  1554 0001:001265C4
+  1555 0001:001265CA  1556 0001:001265D4  1559 0001:001265D8  1560 0001:001265DE
+  1561 0001:001265E8  1564 0001:001265EC  1565 0001:001265F2  1566 0001:001265FC
+  1578 0001:00126600  1579 0001:00126606  1581 0001:0012660D  1582 0001:00126614
+  1583 0001:00126625  1585 0001:00126630  1586 0001:0012663D  1588 0001:00126648
+  1589 0001:00126655  1591 0001:00126660  1592 0001:00126664  1593 0001:00126669
+  1594 0001:0012667E  1596 0001:00126684  1597 0001:00126698  1598 0001:0012669F
+  1600 0001:001266A4  1616 0001:001266BB
+
+Line numbers for Trpcb(trpcb.pas) segment .itext
+
+  1618 0002:00000E20
+
+Line numbers for ORNet(..\CPRS-Lib\ORNet.pas) segment .text
+
+    69 0001:0012671C    72 0001:00126725    79 0001:0012673E    80 0001:0012674A
+    81 0001:0012675C    82 0001:00126768    83 0001:00126774    86 0001:00126780
+    92 0001:00126784    93 0001:001267A6    95 0001:001267B9    96 0001:001267C0
+    98 0001:00126801   107 0001:0012682C   108 0001:00126867   109 0001:00126879
+   110 0001:0012689F   113 0001:001268A4   114 0001:001268B0   115 0001:001268DA
+   117 0001:001268EA   118 0001:00126900   119 0001:00126958   120 0001:0012698C
+   121 0001:001269B5   122 0001:001269BA   124 0001:001269D9   127 0001:001269FB
+   128 0001:00126A10   129 0001:00126A2F   131 0001:00126A6C   133 0001:00126A81
+   134 0001:00126A8E   136 0001:00126AB6   137 0001:00126ADA   140 0001:00126AE6
+   141 0001:00126B1A   142 0001:00126B1F   143 0001:00126B30   144 0001:00126B4B
+   145 0001:00126B6E   147 0001:00126B83   148 0001:00126B90   150 0001:00126BB4
+   151 0001:00126BD8   154 0001:00126BE1   155 0001:00126C17   157 0001:00126C2D
+   115 0001:00126C31   159 0001:00126C3A   160 0001:00126C4C   165 0001:00126D24
+   166 0001:00126D42   167 0001:00126D52   170 0001:00126D56   171 0001:00126D65
+   172 0001:00126D69   174 0001:00126D78   175 0001:00126D9C   177 0001:00126DAE
+   179 0001:00126DB8   183 0001:00126DDC   184 0001:00126DFC   191 0001:00126E00
+   192 0001:00126E40   193 0001:00126E78   194 0001:00126EA3   196 0001:00126EB1
+   197 0001:00126EBD   199 0001:00126EC2   201 0001:00126ED2   202 0001:00126EE1
+   203 0001:00126EE9   205 0001:00126EF5   206 0001:00126F04   207 0001:00126F29
+   208 0001:00126F3B   209 0001:00126F5F   210 0001:00126F6C   211 0001:00126F79
+   213 0001:00126F9B   215 0001:00126FC1   216 0001:00126FD0   218 0001:00126FDF
+   219 0001:00126FEE   222 0001:00126FFB   223 0001:00127036   225 0001:00127052
+   227 0001:00127077   228 0001:00127096   229 0001:001270B6   230 0001:001270E4
+   225 0001:001270E5   232 0001:001270E8   211 0001:001270E9   234 0001:001270F2
+   235 0001:00127100   239 0001:00127125   241 0001:00127127   243 0001:00127130
+   244 0001:00127140   246 0001:0012715F   262 0001:00127164   265 0001:00127183
+   266 0001:00127190   267 0001:0012719D   268 0001:001271B0   269 0001:001271BD
+   270 0001:001271CD   271 0001:00127205   275 0001:001273D8   276 0001:001273E2
+   277 0001:001273E7   281 0001:001273E8   282 0001:001273F7   285 0001:001273FC
+   286 0001:00127416   287 0001:00127425   288 0001:00127430   290 0001:0012743C
+   294 0001:00127448   295 0001:0012744C   296 0001:00127451   297 0001:0012745F
+   299 0001:00127463   300 0001:0012746C   301 0001:00127478   303 0001:00127484
+   312 0001:0012748C   313 0001:001274B0   314 0001:001274B2   315 0001:001274B6
+   316 0001:001274BE   317 0001:001274C6   319 0001:001274DA   320 0001:00127502
+   321 0001:0012752D   322 0001:00127555   323 0001:00127590   324 0001:001275CB
+   317 0001:001275CC   325 0001:001275D3   327 0001:001275DF   328 0001:001275EA
+   331 0001:001275F3   332 0001:00127601   333 0001:0012761C   334 0001:00127626
+   335 0001:00127636   339 0001:00127660   340 0001:0012767A   343 0001:00127681
+   354 0001:00127728   355 0001:0012772C   356 0001:00127730   358 0001:00127744
+   359 0001:00127752   360 0001:00127776   362 0001:0012777A   368 0001:00127784
+   369 0001:0012778E   370 0001:00127799   371 0001:001277AC   372 0001:001277B7
+   373 0001:001277BC   374 0001:001277CA   380 0001:001277D0   381 0001:001277E4
+   382 0001:001277EF   383 0001:00127802   384 0001:0012780F   385 0001:00127814
+   386 0001:00127845   387 0001:00127853   393 0001:0012785C   394 0001:0012786A
+   395 0001:00127884   396 0001:0012788F   397 0001:001278A2   398 0001:001278AF
+   399 0001:001278B4   400 0001:001278C6   401 0001:001278D4   452 0001:001278F8
+   453 0001:00127900   457 0001:00127904   458 0001:0012790D   462 0001:00127910
+   463 0001:00127915   466 0001:00127918   467 0001:0012791E   468 0001:00127940
+   480 0001:00127944   481 0001:0012794E   486 0001:0012795A   488 0001:0012796D
+   489 0001:00127973   494 0001:00127977   497 0001:0012797C   502 0001:0012798C
+   522 0001:001279B0   524 0001:001279D1   525 0001:001279DF   522 0001:001279E8
+   527 0001:001279F0   529 0001:001279F7
+
+Line numbers for ORNet(..\CPRS-Lib\ORNet.pas) segment .itext
+
+   514 0002:00000E28   515 0002:00000E42   516 0002:00000E49   517 0002:00000E58
+   518 0002:00000E69   519 0002:00000E73   521 0002:00000E7A
+
+Line numbers for fAutoSz(fAutoSz.pas) segment .text
+
+    47 0001:00127C30    48 0001:00127C48    51 0001:00127C4B    52 0001:00127C5A
+    53 0001:00127C69    54 0001:00127C78    56 0001:00127C87    66 0001:00127CA4
+    67 0001:00127CAD    68 0001:00127CB4    69 0001:00127CC6    70 0001:00127CD3
+    71 0001:00127CDD    72 0001:00127CE8    74 0001:00127D11    75 0001:00127D1C
+    76 0001:00127D2D    77 0001:00127D40    72 0001:00127D41    78 0001:00127D44
+    79 0001:00127D4F    80 0001:00127D59    82 0001:00127D82    83 0001:00127DA2
+    84 0001:00127DAF    80 0001:00127DB0    85 0001:00127DB3    92 0001:00127DBC
+    94 0001:00127DC5    95 0001:00127DD2    96 0001:00127DEA    97 0001:00127E03
+    99 0001:00127E20   101 0001:00127E2D   103 0001:00127E68   104 0001:00127E7F
+   106 0001:00127E99   107 0001:00127EE1    97 0001:00127EE2   108 0001:00127EE9
+   115 0001:00127EF4   117 0001:00127EFA   119 0001:00127F11   120 0001:00127F1A
+   121 0001:00127F1F   117 0001:00127F20   122 0001:00127F23   123 0001:00127F2E
+
+Line numbers for fAutoSz(fAutoSz.pas) segment .itext
+
+   125 0002:00000EAC   126 0002:00000EB5   129 0002:00000EBF
+
+Line numbers for rWVEHR(rWVEHR.pas) segment .text
+
+    27 0001:00127F64    28 0001:00127F8F    29 0001:00127FAC    30 0001:00127FB6
+    31 0001:00127FCC    34 0001:00127FFE    35 0001:00128008    36 0001:0012800A
+    29 0001:0012800E    37 0001:00128013    39 0001:00128096
+
+Line numbers for fTimeout(fTimeout.pas) segment .text
+
+    36 0001:00129680    37 0001:00129686    38 0001:0012969D    39 0001:001296AB
+    40 0001:001296B3    41 0001:001296BE    43 0001:001296DA    45 0001:001296EA
+    48 0001:001296F4    50 0001:0012970B    51 0001:00129717    52 0001:00129723
+    53 0001:0012972A    54 0001:0012973A    55 0001:00129752    60 0001:00129774
+    61 0001:0012977B    62 0001:00129780    65 0001:00129784    67 0001:0012979A
+    69 0001:001297AC    70 0001:001297B3    71 0001:001297C0    72 0001:001297D0
+    74 0001:001297DD    75 0001:001297E3    76 0001:001297FF    78 0001:00129808
+    79 0001:00129815    81 0001:0012981C    83 0001:0012986B
+
+Line numbers for uInit(uInit.pas) segment .text
+
+    61 0001:001298FC    62 0001:0012991A    63 0001:00129937    64 0001:00129950
+    65 0001:00129984    66 0001:001299C1    67 0001:001299F5    68 0001:00129A32
+    69 0001:00129A66    70 0001:00129AA3    71 0001:00129AD7    75 0001:00129B14
+    81 0001:00129BC8    82 0001:00129BCF    83 0001:00129BE1    84 0001:00129BF8
+    88 0001:00129C00    89 0001:00129C0B    90 0001:00129C1F    91 0001:00129C29
+    92 0001:00129C3D    96 0001:00129C44    97 0001:00129C4D    99 0001:00129C56
+   102 0001:00129C6C   103 0001:00129C7B   104 0001:00129C89   105 0001:00129C97
+   106 0001:00129CA0   107 0001:00129CB9   108 0001:00129CD2   109 0001:00129CD8
+   110 0001:00129CE4   113 0001:00129CED   117 0001:00129CF4   121 0001:00129CFD
+   122 0001:00129D08   123 0001:00129D12   126 0001:00129D1E   130 0001:00129D20
+   131 0001:00129D27   135 0001:00129D28   139 0001:00129D31   140 0001:00129D3D
+   142 0001:00129D48   143 0001:00129D56   144 0001:00129D64   147 0001:00129D6D
+   148 0001:00129D77   150 0001:00129D7E   157 0001:00129D80   158 0001:00129D83
+   159 0001:00129D8C   160 0001:00129D96   161 0001:00129D9F   165 0001:00129DA4
+   166 0001:00129DA7   167 0001:00129DB0   168 0001:00129DB7   170 0001:00129DD7
+   171 0001:00129DE1   173 0001:00129DEA   176 0001:00129DF9   177 0001:00129E02
+   182 0001:00129E04   184 0001:00129E22
+
+Line numbers for uInit(uInit.pas) segment .itext
+
+   179 0002:00000EFC   181 0002:00000F03
+
+Line numbers for fPtSelMsg(fPtSelMsg.pas) segment .text
+
+    45 0001:0012A068    46 0001:0012A071    48 0001:0012A076    49 0001:0012A07D
+    51 0001:0012A081    52 0001:0012A094    53 0001:0012A0AA    54 0001:0012A0B1
+    55 0001:0012A0CD    56 0001:0012A0DF    57 0001:0012A0ED    61 0001:0012A0FE
+    62 0001:0012A10C    64 0001:0012A11B    65 0001:0012A122    69 0001:0012A128
+    71 0001:0012A131    72 0001:0012A13B    74 0001:0012A142    77 0001:0012A144
+    78 0001:0012A15D    79 0001:0012A163    80 0001:0012A16D    81 0001:0012A19D
+    82 0001:0012A1A4    86 0001:0012A214    87 0001:0012A219    91 0001:0012A21C
+    92 0001:0012A21F    96 0001:0012A220    97 0001:0012A240    98 0001:0012A258
+    99 0001:0012A278   100 0001:0012A290   101 0001:0012A297   105 0001:0012A298
+   106 0001:0012A29D   107 0001:0012A2A4   110 0001:0012A2A8   111 0001:0012A2B0
+   112 0001:0012A2BD   113 0001:0012A2CC   116 0001:0012A2F0   117 0001:0012A2FA
+   118 0001:0012A308   120 0001:0012A320   123 0001:0012A332   127 0001:0012A338
+   129 0001:0012A341   130 0001:0012A361   131 0001:0012A381   133 0001:0012A388
+   136 0001:0012A38C   137 0001:0012A38F   138 0001:0012A399   139 0001:0012A3A5
+   140 0001:0012A3AC   142 0001:0012A3DC
+
+Line numbers for rVitals(Vitals\rVitals.pas) segment .text
+
+    48 0001:0012A3B0    49 0001:0012A3CF    50 0001:0012A3DA    51 0001:0012A3F3
+    52 0001:0012A408    55 0001:0012A444    56 0001:0012A47F    57 0001:0012A483
+    58 0001:0012A4B3    59 0001:0012A4D9    60 0001:0012A4DD    72 0001:0012A540
+    73 0001:0012A565    74 0001:0012A57E    75 0001:0012A5A4    77 0001:0012A5B6
+    79 0001:0012A65D    84 0001:0012A6E4    85 0001:0012A70A    86 0001:0012A715
+    87 0001:0012A720    88 0001:0012A746    89 0001:0012A75B    94 0001:0012A79C
+    95 0001:0012A7BE    96 0001:0012A7C9    97 0001:0012A7DB    98 0001:0012A801
+    99 0001:0012A816   149 0001:0012A858   151 0001:0012A87D
+
+Line numbers for rVitals(Vitals\rVitals.pas) segment .itext
+
+   146 0002:00000F04   148 0002:00000F0B
+
+Line numbers for ORDtTmCal(..\CPRS-Lib\ORDtTmCal.pas) segment .text
+
+    25 0001:0012AA24    26 0001:0012AA53    27 0001:0012AA62    29 0001:0012AA68
+    30 0001:0012AA82    32 0001:0012AAC3    33 0001:0012AADD    35 0001:0012AAEC
+    38 0001:0012AB35    41 0001:0012AB80    42 0001:0012AB8A    43 0001:0012AB97
+    44 0001:0012AB9D    45 0001:0012ABC1    46 0001:0012ABC7    47 0001:0012ABEB
+    55 0001:0012ABEF
+
+Line numbers for ORDtTm(..\CPRS-Lib\ORDtTm.pas) segment .text
+
+   259 0001:0012BF50   260 0001:0012BF54   261 0001:0012BF58   262 0001:0012BF76
+   265 0001:0012BF7C   266 0001:0012BF95   267 0001:0012BF9E   268 0001:0012BFCB
+   269 0001:0012BFE0   272 0001:0012C020   273 0001:0012C026   274 0001:0012C02F
+   275 0001:0012C046   276 0001:0012C04F   279 0001:0012C058   280 0001:0012C05E
+   281 0001:0012C088   282 0001:0012C09D   293 0001:0012C0A8   294 0001:0012C0C4
+   295 0001:0012C0CD   296 0001:0012C107   297 0001:0012C10F   304 0001:0012C150
+   305 0001:0012C172   306 0001:0012C1A3   307 0001:0012C1C6   308 0001:0012C1DB
+   309 0001:0012C1F6   310 0001:0012C20E   311 0001:0012C23A   312 0001:0012C257
+   317 0001:0012C2C4   318 0001:0012C2E3   319 0001:0012C2E9   321 0001:0012C2F8
+   322 0001:0012C305   323 0001:0012C316   328 0001:0012C36C   329 0001:0012C378
+   331 0001:0012C380   332 0001:0012C393   333 0001:0012C39D   334 0001:0012C3A8
+   337 0001:0012C3AC   338 0001:0012C3CB   339 0001:0012C3FE   340 0001:0012C408
+   344 0001:0012C444   345 0001:0012C453   346 0001:0012C463   350 0001:0012C46C
+   351 0001:0012C47B   352 0001:0012C48B   355 0001:0012C494   356 0001:0012C4A0
+   357 0001:0012C4AE   360 0001:0012C4B4   361 0001:0012C4C0   362 0001:0012C4CE
+   366 0001:0012C4D4   367 0001:0012C4E3   368 0001:0012C4F3   372 0001:0012C4FC
+   373 0001:0012C50B   374 0001:0012C51B   377 0001:0012C524   378 0001:0012C530
+   379 0001:0012C54A   380 0001:0012C55E   381 0001:0012C572   382 0001:0012C582
+   385 0001:0012C588   386 0001:0012C594   388 0001:0012C5A0   389 0001:0012C5B4
+   391 0001:0012C5C8   392 0001:0012C5D2   395 0001:0012C5D8   396 0001:0012C5E5
+   397 0001:0012C632   398 0001:0012C65A   399 0001:0012C665   405 0001:0012C68C
+   406 0001:0012C6AB   417 0001:0012C6C4   419 0001:0012C6D8   420 0001:0012C6EF
+   421 0001:0012C702   426 0001:0012C70C   428 0001:0012C747   429 0001:0012C751
+   432 0001:0012C788   433 0001:0012C7A7   435 0001:0012C7C1   436 0001:0012C7EE
+   437 0001:0012C7F8   440 0001:0012C82C   442 0001:0012C838   443 0001:0012C84B
+   448 0001:0012C860   449 0001:0012C888   451 0001:0012C8C8   452 0001:0012C8D9
+   454 0001:0012C8DE   456 0001:0012C916   458 0001:0012C932   459 0001:0012C97B
+   460 0001:0012C985   462 0001:0012C996   463 0001:0012C9A3   466 0001:0012CA68
+   467 0001:0012CA74   468 0001:0012CA81   471 0001:0012CA88   472 0001:0012CA8F
+   473 0001:0012CA97   474 0001:0012CAA1   479 0001:0012CAA4   480 0001:0012CABF
+   481 0001:0012CACC   482 0001:0012CAD5   483 0001:0012CAE3   484 0001:0012CAEF
+   491 0001:0012CB10   492 0001:0012CB35   493 0001:0012CB4C   496 0001:0012CB5A
+   497 0001:0012CB81   499 0001:0012CB9F   500 0001:0012CBC6   501 0001:0012CBD9
+   503 0001:0012CBE6   504 0001:0012CBF6   505 0001:0012CC06   506 0001:0012CC16
+   507 0001:0012CC26   508 0001:0012CC36   509 0001:0012CC5F   510 0001:0012CC88
+   511 0001:0012CCA2   513 0001:0012CCC3   514 0001:0012CCD3   516 0001:0012CCDD
+   517 0001:0012CCFF   518 0001:0012CD59   519 0001:0012CD65   520 0001:0012CD77
+   524 0001:0012CDA3   526 0001:0012CDB3   529 0001:0012CE0C   530 0001:0012CE15
+   531 0001:0012CE27   534 0001:0012CE30   535 0001:0012CE3C   536 0001:0012CE45
+   538 0001:0012CE4E   539 0001:0012CE55   541 0001:0012CE6E   544 0001:0012CE74
+   545 0001:0012CE7B   546 0001:0012CE9C   549 0001:0012CEA8   550 0001:0012CEB4
+   551 0001:0012CEBD   552 0001:0012CECD   558 0001:0012CED4   559 0001:0012CEE0
+   560 0001:0012CEEB   561 0001:0012CEFF   567 0001:0012CF04   568 0001:0012CF1F
+   569 0001:0012CF2C   570 0001:0012CF44   571 0001:0012CF55   572 0001:0012CF68
+   573 0001:0012CF7B   574 0001:0012CF97   575 0001:0012CFA7   576 0001:0012CFB1
+   577 0001:0012CFC6   578 0001:0012CFD6   579 0001:0012CFE8   585 0001:0012D024
+   586 0001:0012D031   587 0001:0012D03C   589 0001:0012D048   590 0001:0012D054
+   592 0001:0012D05B   593 0001:0012D062   595 0001:0012D0A1   596 0001:0012D0A9
+   602 0001:0012D0B0   603 0001:0012D0BC   605 0001:0012D0CE   606 0001:0012D0DA
+   607 0001:0012D0F2   609 0001:0012D0F8   610 0001:0012D10C   611 0001:0012D117
+   615 0001:0012D123   616 0001:0012D136   617 0001:0012D144   620 0001:0012D14E
+   623 0001:0012D174   624 0001:0012D180   625 0001:0012D188   631 0001:0012D190
+   632 0001:0012D1B2   633 0001:0012D1C9   635 0001:0012D1F7   636 0001:0012D20E
+   638 0001:0012D245   639 0001:0012D256   640 0001:0012D26D   641 0001:0012D27E
+   643 0001:0012D28A   644 0001:0012D29C   645 0001:0012D2A4   647 0001:0012D2C0
+   648 0001:0012D2C8   649 0001:0012D2DD   650 0001:0012D2E8   653 0001:0012D320
+   654 0001:0012D327   655 0001:0012D32F   656 0001:0012D339   659 0001:0012D33C
+   660 0001:0012D34C   661 0001:0012D35A   662 0001:0012D363   663 0001:0012D375
+   665 0001:0012D37D   668 0001:0012D384   669 0001:0012D3A3   670 0001:0012D3AB
+   671 0001:0012D3F0   672 0001:0012D405   675 0001:0012D430   676 0001:0012D458
+   677 0001:0012D460   678 0001:0012D47E   679 0001:0012D4B5   681 0001:0012D4E3
+   682 0001:0012D500   684 0001:0012D538   687 0001:0012D578   688 0001:0012D584
+   689 0001:0012D590   691 0001:0012D59C   692 0001:0012D5A6   693 0001:0012D5C5
+   695 0001:0012D5EC   696 0001:0012D5F4   699 0001:0012D628   700 0001:0012D62F
+   701 0001:0012D644   702 0001:0012D64C   705 0001:0012D654   706 0001:0012D660
+   707 0001:0012D66C   709 0001:0012D678   710 0001:0012D69F   712 0001:0012D6A9
+   718 0001:0012D6E0   719 0001:0012D6E9   720 0001:0012D702   721 0001:0012D70E
+   722 0001:0012D720   723 0001:0012D725   724 0001:0012D72A   725 0001:0012D743
+   728 0001:0012D748   729 0001:0012D762   731 0001:0012D77B   732 0001:0012D7B1
+   733 0001:0012D7DA   735 0001:0012D805   738 0001:0012D860   739 0001:0012D882
+   740 0001:0012D88A   742 0001:0012D8BC   743 0001:0012D8D9   744 0001:0012D8FB
+   745 0001:0012D935   747 0001:0012D96F   752 0001:0012D9EC   753 0001:0012DA0B
+   754 0001:0012DA16   755 0001:0012DA3D   756 0001:0012DA6F   759 0001:0012DA9C
+   760 0001:0012DAA8   762 0001:0012DAB6   763 0001:0012DAC2   765 0001:0012DADE
+   768 0001:0012DAE4   769 0001:0012DAF0   770 0001:0012DAFC   771 0001:0012DB14
+   772 0001:0012DB24   773 0001:0012DB34   774 0001:0012DB44   775 0001:0012DB54
+   776 0001:0012DB68   778 0001:0012DB76   779 0001:0012DB87   782 0001:0012DB8C
+   783 0001:0012DB98   784 0001:0012DBA9   787 0001:0012DBB0   788 0001:0012DBBF
+   789 0001:0012DBC5   791 0001:0012DBD2   792 0001:0012DBDA   795 0001:0012DBE0
+   796 0001:0012DBE9   797 0001:0012DC23   803 0001:0012DC2C   804 0001:0012DC38
+   805 0001:0012DC44   808 0001:0012DC4B   809 0001:0012DC58   811 0001:0012DC6D
+   825 0001:0012DC74   826 0001:0012DC80   828 0001:0012DC8E   829 0001:0012DC9A
+   830 0001:0012DCA0   832 0001:0012DCAC   834 0001:0012DCB6   839 0001:0012DCBC
+   840 0001:0012DCD7   841 0001:0012DCE4   842 0001:0012DCF8   843 0001:0012DD02
+   844 0001:0012DD0C   845 0001:0012DD16   846 0001:0012DD20   847 0001:0012DD36
+   848 0001:0012DD45   851 0001:0012DD68   852 0001:0012DD79   853 0001:0012DD88
+   854 0001:0012DD97   855 0001:0012DDA6   856 0001:0012DDB5   857 0001:0012DDC4
+   858 0001:0012DDD2   861 0001:0012DDE4   862 0001:0012DDED   863 0001:0012DE08
+   869 0001:0012DE20   870 0001:0012DE3F   871 0001:0012DE44   873 0001:0012DE54
+   876 0001:0012DE71   877 0001:0012DE89   879 0001:0012DEA4   874 0001:0012DED7
+   882 0001:0012DEF2   881 0001:0012DF1D   883 0001:0012DF36   884 0001:0012DF3C
+   885 0001:0012DF57   886 0001:0012DF66   888 0001:0012DF72   894 0001:0012DFB0
+   895 0001:0012DFD0   896 0001:0012DFD5   898 0001:0012DFE5   899 0001:0012DFF9
+   900 0001:0012E012   902 0001:0012E019   903 0001:0012E025   905 0001:0012E047
+   906 0001:0012E067   908 0001:0012E06D   909 0001:0012E09F   910 0001:0012E0A7
+   912 0001:0012E0AD   900 0001:0012E0B0   913 0001:0012E0BA   914 0001:0012E0C0
+   916 0001:0012E0C4   922 0001:0012E0F8   923 0001:0012E101   925 0001:0012E111
+   926 0001:0012E11B   927 0001:0012E129   928 0001:0012E13B   929 0001:0012E149
+   930 0001:0012E161   931 0001:0012E16D   932 0001:0012E171   933 0001:0012E176
+   935 0001:0012E186   937 0001:0012E196   938 0001:0012E1AE   939 0001:0012E1BF
+   940 0001:0012E1CF   941 0001:0012E1DF   942 0001:0012E1EF   943 0001:0012E202
+   944 0001:0012E212   946 0001:0012E22E   947 0001:0012E242   948 0001:0012E259
+   949 0001:0012E266   950 0001:0012E277   951 0001:0012E288   952 0001:0012E29F
+   954 0001:0012E2A8   956 0001:0012E2B8   958 0001:0012E2C8   959 0001:0012E2E0
+   960 0001:0012E2F1   961 0001:0012E301   962 0001:0012E311   963 0001:0012E321
+   964 0001:0012E33D   966 0001:0012E350   967 0001:0012E364   968 0001:0012E37B
+   969 0001:0012E388   970 0001:0012E399   971 0001:0012E3AA   972 0001:0012E3BB
+   973 0001:0012E3D2   976 0001:0012E3DD   980 0001:0012E3EE   981 0001:0012E3FD
+   983 0001:0012E40C   985 0001:0012E41C   986 0001:0012E436   987 0001:0012E447
+   988 0001:0012E457   989 0001:0012E46A   990 0001:0012E486   992 0001:0012E4A2
+   993 0001:0012E4B6   994 0001:0012E4CD   995 0001:0012E4D8   996 0001:0012E4E9
+   997 0001:0012E4FA   998 0001:0012E50B   999 0001:0012E511  1001 0001:0012E51D
+  1002 0001:0012E535  1003 0001:0012E546  1004 0001:0012E556  1005 0001:0012E568
+  1006 0001:0012E57A  1008 0001:0012E596  1009 0001:0012E5A6  1010 0001:0012E5B6
+  1011 0001:0012E5C7  1012 0001:0012E5D8  1013 0001:0012E5F0  1014 0001:0012E602
+  1016 0001:0012E612  1018 0001:0012E622  1019 0001:0012E63A  1020 0001:0012E64A
+  1021 0001:0012E65B  1022 0001:0012E66B  1023 0001:0012E687  1025 0001:0012E6A3
+  1026 0001:0012E6B2  1027 0001:0012E6C0  1028 0001:0012E6D1  1029 0001:0012E6E2
+  1030 0001:0012E6F3  1033 0001:0012E6FE  1034 0001:0012E70D  1035 0001:0012E71B
+  1036 0001:0012E726  1037 0001:0012E72E  1038 0001:0012E738  1040 0001:0012E74D
+  1043 0001:0012E776  1046 0001:0012E788  1049 0001:0012E7C4  1050 0001:0012E7D0
+  1052 0001:0012E7DE  1053 0001:0012E7EA  1054 0001:0012E7F6  1056 0001:0012E812
+  1059 0001:0012E818  1060 0001:0012E824  1061 0001:0012E839  1062 0001:0012E83E
+  1063 0001:0012E85A  1064 0001:0012E85F  1066 0001:0012E86D  1067 0001:0012E879
+  1069 0001:0012E885  1070 0001:0012E8A4  1071 0001:0012E8AE  1073 0001:0012E8C5
+  1075 0001:0012E8CD  1078 0001:0012E8D4  1079 0001:0012E8E0  1081 0001:0012E8EE
+  1082 0001:0012E8FA  1084 0001:0012E905  1087 0001:0012E90C  1088 0001:0012E918
+  1089 0001:0012E92A  1090 0001:0012E92E  1092 0001:0012E93C  1093 0001:0012E948
+  1094 0001:0012E959  1096 0001:0012E964  1099 0001:0012E968  1100 0001:0012E974
+  1102 0001:0012E982  1103 0001:0012E98E  1105 0001:0012E994  1106 0001:0012E99E
+  1107 0001:0012E9A9  1109 0001:0012E9B4  1111 0001:0012E9BF  1114 0001:0012E9C4
+  1115 0001:0012E9D0  1116 0001:0012E9E5  1117 0001:0012E9EA  1118 0001:0012E9F6
+  1119 0001:0012E9FB  1121 0001:0012EA09  1122 0001:0012EA15  1123 0001:0012EA21
+  1124 0001:0012EA38  1125 0001:0012EA40  1127 0001:0012EA48  1130 0001:0012EA4C
+  1131 0001:0012EA58  1133 0001:0012EA66  1134 0001:0012EA72  1136 0001:0012EA7D
+  1139 0001:0012EA84  1140 0001:0012EAA3  1142 0001:0012EAB5  1143 0001:0012EAC1
+  1144 0001:0012EADF  1145 0001:0012EAEA  1147 0001:0012EB1A  1148 0001:0012EB24
+  1149 0001:0012EB32  1151 0001:0012EB3E  1152 0001:0012EB51  1156 0001:0012EB65
+  1157 0001:0012EB87  1160 0001:0012EBAC  1163 0001:0012EBBE  1164 0001:0012EBCA
+  1165 0001:0012EBD4  1166 0001:0012EBDC  1168 0001:0012EBE4  1171 0001:0012EC18
+  1172 0001:0012EC24  1173 0001:0012EC3B  1174 0001:0012EC47  1175 0001:0012EC52
+  1176 0001:0012EC5A  1177 0001:0012EC62  1180 0001:0012EC68  1181 0001:0012EC74
+  1182 0001:0012EC8B  1183 0001:0012EC97  1184 0001:0012ECA2  1185 0001:0012ECAC
+  1186 0001:0012ECB4  1187 0001:0012ECBC  1190 0001:0012ECC0  1191 0001:0012ECDF
+  1192 0001:0012ECEF  1193 0001:0012ECF9  1194 0001:0012ED07  1195 0001:0012ED2B
+  1196 0001:0012ED49  1197 0001:0012ED54  1198 0001:0012ED60  1200 0001:0012ED74
+  1201 0001:0012ED8C  1202 0001:0012ED98  1203 0001:0012EDA2  1204 0001:0012EDAA
+  1206 0001:0012EDBF  1208 0001:0012EDD1  1214 0001:0012EDF4  1215 0001:0012EDFD
+  1217 0001:0012EE1D  1218 0001:0012EE38  1219 0001:0012EE44  1220 0001:0012EE4E
+  1222 0001:0012EE72  1223 0001:0012EE9E  1224 0001:0012EEB8  1225 0001:0012EEC6
+  1228 0001:0012EED1  1231 0001:0012EED8  1232 0001:0012EEDF  1233 0001:0012EEE7
+  1234 0001:0012EEF3  1235 0001:0012EEFE  1238 0001:0012EF04  1239 0001:0012EF0B
+  1240 0001:0012EF17  1241 0001:0012EF22  1242 0001:0012EF2A  1250 0001:0012EF30
+  1251 0001:0012EF3C  1252 0001:0012EF4E  1253 0001:0012EF5C  1254 0001:0012EF68
+  1255 0001:0012EF74  1256 0001:0012EF80  1257 0001:0012EF9A  1258 0001:0012EFB3
+  1260 0001:0012EFC4  1262 0001:0012EFED  1263 0001:0012EFFA  1266 0001:0012F007
+  1267 0001:0012F013  1268 0001:0012F020  1269 0001:0012F02C  1270 0001:0012F039
+  1271 0001:0012F050  1272 0001:0012F05A  1273 0001:0012F064  1275 0001:0012F070
+  1276 0001:0012F07B  1277 0001:0012F086  1278 0001:0012F091  1282 0001:0012F0AA
+  1283 0001:0012F0B5  1284 0001:0012F0C0  1287 0001:0012F0D8  1289 0001:0012F0E8
+  1296 0001:0012F0EC  1297 0001:0012F10F  1298 0001:0012F11F  1299 0001:0012F129
+  1300 0001:0012F137  1302 0001:0012F14B  1303 0001:0012F165  1304 0001:0012F172
+  1305 0001:0012F184  1308 0001:0012F18C  1309 0001:0012F199  1310 0001:0012F1B7
+  1311 0001:0012F1C2  1312 0001:0012F1CE  1314 0001:0012F1E3  1315 0001:0012F205
+  1316 0001:0012F211  1317 0001:0012F21B  1318 0001:0012F223  1320 0001:0012F238
+  1322 0001:0012F24A  1325 0001:0012F280  1326 0001:0012F2A6  1328 0001:0012F2D1
+  1329 0001:0012F2FC  1330 0001:0012F302  1331 0001:0012F318  1333 0001:0012F328
+  1336 0001:0012F370  1337 0001:0012F379  1338 0001:0012F388  1340 0001:0012F392
+  1341 0001:0012F3C5  1347 0001:0012F3CC  1348 0001:0012F3E8  1350 0001:0012F3F7
+  1351 0001:0012F401  1355 0001:0012F410  1356 0001:0012F41B  1358 0001:0012F449
+  1359 0001:0012F457  1360 0001:0012F465  1361 0001:0012F473  1362 0001:0012F481
+  1363 0001:0012F492  1364 0001:0012F49D  1365 0001:0012F4A7  1367 0001:0012F4B2
+  1389 0001:0012F4DC  1390 0001:0012F4E4  1391 0001:0012F4F1  1392 0001:0012F503
+  1395 0001:0012F508  1396 0001:0012F514  1397 0001:0012F51F  1400 0001:0012F524
+  1401 0001:0012F530  1402 0001:0012F53B  1403 0001:0012F546  1409 0001:0012F54C
+  1410 0001:0012F56D  1411 0001:0012F575  1412 0001:0012F58C  1414 0001:0012F5CA
+  1415 0001:0012F5D6  1417 0001:0012F5E5  1418 0001:0012F5F2  1419 0001:0012F617
+  1421 0001:0012F626  1422 0001:0012F64B  1424 0001:0012F65D  1425 0001:0012F66D
+  1427 0001:0012F67B  1437 0001:0012F728  1438 0001:0012F734  1440 0001:0012F742
+  1441 0001:0012F74E  1443 0001:0012F759
+
+Line numbers for ORDtTm(..\CPRS-Lib\ORDtTm.pas) segment .itext
+
+  1445 0002:00000F0C  1446 0002:00000F15  1448 0002:00000F23
+
+Line numbers for fVitalsDate(Vitals\fVitalsDate.pas) segment .text
+
+    36 0001:0012F9A0    37 0001:0012F9B0    41 0001:0012F9C0    42 0001:0012F9C5
+    44 0001:0012F9F4
+
+Line numbers for uVitals(Vitals\uVitals.pas) segment .text
+
+   184 0001:0012FC90   185 0001:0012FC92   187 0001:0012FC9B   188 0001:0012FCAF
+   189 0001:0012FCB3   190 0001:0012FCB5   191 0001:0012FCC0   194 0001:0012FCC7
+   197 0001:0012FCDC   198 0001:0012FCE2   200 0001:0012FCEE   202 0001:0012FCFC
+   204 0001:0012FD08   205 0001:0012FD2A   208 0001:0012FD8C   209 0001:0012FD8F
+   210 0001:0012FD9A   211 0001:0012FDAA   212 0001:0012FDBA   213 0001:0012FDCA
+   214 0001:0012FDDA   215 0001:0012FDEA   216 0001:0012FDFA   217 0001:0012FE0A
+   218 0001:0012FE1A   219 0001:0012FE2A   220 0001:0012FE3A   221 0001:0012FE4A
+   222 0001:0012FE5A   225 0001:0012FF3C   226 0001:0012FF5D   227 0001:0012FF76
+   229 0001:0012FF88   231 0001:0012FF9B   232 0001:0012FFE7   235 0001:0012FFF8
+   237 0001:0013000A   239 0001:0013001D   240 0001:0013005F   243 0001:0013006D
+   245 0001:0013007B   253 0001:0013008E   254 0001:001300D0   257 0001:001300DC
+   260 0001:00130184   261 0001:001301C5   262 0001:001301CC   263 0001:001301D9
+   265 0001:001301DF   266 0001:001301F1   268 0001:00130236   274 0001:0013028C
+   275 0001:00130292   276 0001:001302A6   277 0001:001302B7   278 0001:001302CB
+   279 0001:001302DA   292 0001:001302E0   293 0001:00130312   294 0001:00130331
+   295 0001:00130337   296 0001:00130345   298 0001:0013036C   301 0001:001303EF
+   302 0001:001303F7   303 0001:00130409   305 0001:00130411   306 0001:0013042C
+   307 0001:0013044E   308 0001:00130469   309 0001:00130477   310 0001:00130486
+   311 0001:00130494   312 0001:001304A2   313 0001:001304B1   314 0001:001304C0
+   316 0001:001304CE   325 0001:00130544   326 0001:00130571   328 0001:00130574
+   330 0001:00130583   332 0001:00130587   333 0001:00130591   336 0001:00130596
+   340 0001:001305A0   341 0001:001305AB   342 0001:001305AF   345 0001:001305B2
+   347 0001:001305B6   348 0001:001305C0   349 0001:001305C4   352 0001:001305C9
+   354 0001:001305D1   355 0001:001305DB   357 0001:001305E4   359 0001:001305E6
+   360 0001:001305EB   363 0001:001305F1   364 0001:001305F5   366 0001:001305F9
+   367 0001:001305FF   369 0001:00130605   370 0001:0013061E   374 0001:00130622
+   376 0001:00130627   377 0001:00130633   379 0001:00130637   380 0001:0013063D
+   381 0001:00130653   387 0001:00130698   388 0001:0013069A   389 0001:0013069E
+   391 0001:001306A2   392 0001:001306A7   393 0001:001306AA   395 0001:001306B4
+   397 0001:001306B8   398 0001:001306B9   400 0001:001306BE   401 0001:001306C0
+   404 0001:001306C2   393 0001:001306C4   405 0001:001306C9   415 0001:001306D0
+   416 0001:00130706   417 0001:0013070A   418 0001:00130712   419 0001:0013071A
+   422 0001:00130722   424 0001:00130739   425 0001:00130741   426 0001:0013074A
+   422 0001:0013074B   428 0001:0013074E   430 0001:00130758   433 0001:0013075F
+   434 0001:00130774   435 0001:00130789   431 0001:0013078A   440 0001:00130796
+   441 0001:001307AB   442 0001:001307C0   437 0001:001307C1   444 0001:001307E1
+   445 0001:001307E9   446 0001:001307EF   447 0001:00130804   448 0001:0013080A
+   449 0001:00130819   455 0001:0013082D   457 0001:00130844   458 0001:0013084C
+   459 0001:00130859   460 0001:00130871   461 0001:00130876   455 0001:00130877
+   463 0001:0013087A   480 0001:001308B4   481 0001:001308E0   482 0001:001308FE
+   484 0001:0013090A   486 0001:0013091A   487 0001:0013093D   488 0001:00130951
+   489 0001:0013095E   492 0001:001309A7   482 0001:001309AE   493 0001:001309B7
+   499 0001:00130A44   500 0001:00130A78   501 0001:00130A82   503 0001:00130A94
+   504 0001:00130AA2   507 0001:00130AD0   509 0001:00130ADA   511 0001:00130AE4
+   513 0001:00130AF7   514 0001:00130B0D   517 0001:00130B2A   519 0001:00130B39
+   520 0001:00130B46   521 0001:00130B53   522 0001:00130B74   526 0001:00130BAA
+   527 0001:00130BB7   528 0001:00130BC4   529 0001:00130BE5   535 0001:00130C1B
+   537 0001:00130C2A   538 0001:00130C37   539 0001:00130C58   543 0001:00130C8E
+   544 0001:00130C9B   545 0001:00130CBC   551 0001:00130CF2   553 0001:00130D01
+   554 0001:00130D0E   555 0001:00130D2F   559 0001:00130D62   560 0001:00130D6F
+   561 0001:00130D90   567 0001:00130DC1   581 0001:00130EB8   582 0001:00130EDE
+   585 0001:00130EE7   587 0001:00130EED   588 0001:00130EEF   591 0001:00130EF5
+   597 0001:00130F4F   599 0001:00130F57   600 0001:00130F6E   601 0001:00130F7C
+   602 0001:00130F92   603 0001:00130FA4   604 0001:00130FB2   606 0001:00130FD3
+   610 0001:00130FE3   583 0001:00130FE7   612 0001:0013100B   617 0001:00131158
+   618 0001:0013115C   619 0001:0013115E   620 0001:0013118A   688 0001:00131190
+   690 0001:001311B5
+
+Line numbers for uVitals(Vitals\uVitals.pas) segment .itext
+
+   685 0002:00000F24   687 0002:00000F2B
+
+Line numbers for uReports(uReports.pas) segment .text
+
+   106 0001:001313F0   107 0001:00131402   108 0001:00131411   111 0001:0013142C
+   112 0001:00131437   113 0001:0013143F   117 0001:00131450   118 0001:00131494
+   119 0001:001314B2   120 0001:001314BD   121 0001:001314DB   122 0001:001314F9
+   123 0001:00131517   124 0001:00131535   125 0001:00131540   126 0001:0013154A
+   127 0001:00131554   132 0001:00131588   134 0001:001315B3   135 0001:001315C5
+   137 0001:001315C7   138 0001:0013161A   139 0001:00131638   140 0001:00131656
+   141 0001:00131674   142 0001:00131692   143 0001:001316B0   144 0001:001316D9
+   145 0001:001316F7   146 0001:00131720   147 0001:0013173E   148 0001:0013175C
+   149 0001:0013177A   150 0001:00131798   151 0001:001317B6   153 0001:001317D4
+   154 0001:001317D6   157 0001:0013180C   158 0001:0013181E   159 0001:0013182D
+   160 0001:00131832   163 0001:0013184C   165 0001:00131857   166 0001:0013185F
+   167 0001:0013186B   172 0001:0013187C   173 0001:001318B2   174 0001:001318C0
+   175 0001:001318D5   176 0001:001318DF   177 0001:001318E8   182 0001:0013191C
+   183 0001:00131922   184 0001:00131925   185 0001:00131930   184 0001:0013193F
+   186 0001:00131942   187 0001:0013194A   188 0001:0013194F   194 0001:00131954
+   195 0001:0013197C   196 0001:0013198B   197 0001:0013198F   198 0001:001319A3
+   199 0001:001319B1   200 0001:001319B8   203 0001:001319C0   206 0001:001319F5
+   207 0001:00131A2D   208 0001:00131A3B   210 0001:00131A42   216 0001:00131A90
+   217 0001:00131ABB   218 0001:00131ACE   219 0001:00131AE1   220 0001:00131AE3
+   222 0001:00131AF7   223 0001:00131B0A   224 0001:00131B45   225 0001:00131B72
+   226 0001:00131B85   227 0001:00131BC0   228 0001:00131BED   230 0001:00131C07
+   231 0001:00131C26   232 0001:00131C45   233 0001:00131C67   234 0001:00131C8C
+   241 0001:00131CD8   242 0001:00131D06   243 0001:00131D13   244 0001:00131D51
+   245 0001:00131D5B   244 0001:00131DA3   246 0001:00131DA8   247 0001:00131DB2
+   248 0001:00131DD1   250 0001:00131DE3   251 0001:00131E09   253 0001:00131E2F
+   255 0001:00131E41   256 0001:00131E77   258 0001:00131E9D   259 0001:00131EBD
+   264 0001:00131F34   265 0001:00131F58   266 0001:00131F5D   267 0001:00131F6D
+   268 0001:00131F7A   269 0001:00131F85   270 0001:00131F98   275 0001:00131FBC
+   276 0001:00131FE1   277 0001:00131FF3   279 0001:00131FF5   280 0001:00132012
+   281 0001:00132030   282 0001:0013204E   283 0001:0013206C   285 0001:00132073
+   286 0001:00132075   304 0001:001320A0   305 0001:001320AC   311 0001:001320B0
+   312 0001:001320B7   315 0001:001320C7   316 0001:001320D0   317 0001:001320D9
+   318 0001:001320E5   319 0001:001320F2   320 0001:001320FF   321 0001:00132106
+   322 0001:0013210A   324 0001:0013211A   326 0001:00132166
+
+Line numbers for rECS(rECS.pas) segment .text
+
+    40 0001:001321CC    41 0001:001321DE    42 0001:001321E6    43 0001:001321EE
+    44 0001:001321F6    45 0001:001321FE    46 0001:00132206    47 0001:0013220E
+    48 0001:00132212    63 0001:0013222C    64 0001:0013224B    65 0001:00132279
+    66 0001:00132293    71 0001:001322E0    72 0001:001322FC    73 0001:00132318
+    74 0001:00132322    77 0001:0013235C    78 0001:00132383    79 0001:001323AA
+    85 0001:001323EC    86 0001:00132419    87 0001:00132421    88 0001:00132429
+    90 0001:0013243A    91 0001:00132459    93 0001:00132478    95 0001:00132489
+    96 0001:0013249C    97 0001:001324BB    98 0001:001324D7   100 0001:001324E5
+   101 0001:00132504   102 0001:00132523   107 0001:00132570   110 0001:00132590
+   111 0001:00132599   112 0001:001325AF   113 0001:001325C2   114 0001:001325E1
+   115 0001:00132600   116 0001:0013261F   117 0001:00132646   118 0001:00132665
+   119 0001:00132684   120 0001:001326A3   121 0001:001326C2   123 0001:001326C7
+   124 0001:001326D6   129 0001:00132794   130 0001:001327B2   133 0001:001327C7
+   134 0001:001327D0   135 0001:001327E3   136 0001:001327F6   137 0001:00132815
+   138 0001:00132834   139 0001:00132853   140 0001:0013287A   141 0001:00132899
+   142 0001:001328B8   143 0001:001328D7   144 0001:001328F6   146 0001:001328FB
+   148 0001:001329E6
+
+Line numbers for ORDtTmRng(..\CPRS-Lib\ORDtTmRng.pas) segment .text
+
+    53 0001:001345C8    54 0001:001345DA    55 0001:001345E3    56 0001:001345F0
+    57 0001:001345FD    58 0001:0013460A    59 0001:00134617    64 0001:00134694
+    65 0001:001346B2    66 0001:001346C9    69 0001:001346D7    70 0001:001346E8
+    71 0001:001346F9    73 0001:00134708    74 0001:0013471C    76 0001:0013473E
+    77 0001:0013474D    78 0001:00134761    80 0001:00134783    81 0001:001347FE
+    82 0001:0013480E    84 0001:00134818    85 0001:00134834    86 0001:00134850
+    87 0001:00134862    88 0001:00134874    89 0001:00134890    93 0001:001348B9
+    95 0001:001348C9    98 0001:00134914    99 0001:00134917   100 0001:0013491C
+   102 0001:00134920   103 0001:00134924   104 0001:00134941   105 0001:0013495E
+   107 0001:0013497A   110 0001:001349A8   111 0001:001349AB   112 0001:001349B0
+   114 0001:001349B4   115 0001:001349D0   117 0001:001349D9   120 0001:00134A08
+   121 0001:00134A1E   122 0001:00134A2A   123 0001:00134A46   126 0001:00134A6C
+   127 0001:00134A82   128 0001:00134A8E   129 0001:00134AAA   132 0001:00134AD0
+   133 0001:00134AD6   134 0001:00134AE0   135 0001:00134AE8   138 0001:00134AEC
+   139 0001:00134AF2   140 0001:00134AFC   141 0001:00134B04   149 0001:00134B08
+   150 0001:00134B1E   151 0001:00134B2C   153 0001:00134B32   154 0001:00134B4F
+   156 0001:00134B51   157 0001:00134B5F   159 0001:00134B65   160 0001:00134B82
+   162 0001:00134B84   163 0001:00134B8E   167 0001:00134BD4   168 0001:00134BDE
+   178 0001:00134BE0   179 0001:00134BE4   180 0001:00134BFA   181 0001:00134C03
+   182 0001:00134C1F   183 0001:00134C2C   184 0001:00134C42   185 0001:00134C4B
+   186 0001:00134C67   187 0001:00134C76   188 0001:00134C7D   189 0001:00134C86
+   192 0001:00134C8C   193 0001:00134C8F   194 0001:00134C9A   195 0001:00134CA5
+   198 0001:00134CA8   199 0001:00134CAB   200 0001:00134CB2   201 0001:00134CBB
+   203 0001:00134CEB
+
+Line numbers for fHSplit(fHSplit.pas) segment .text
+
+    26 0001:00000000
+
+Line numbers for rGraphs(rGraphs.pas) segment .text
+
+    50 0001:00134E98    51 0001:00134E9E    52 0001:00134EB7    53 0001:00134EC9
+    54 0001:00134ED6    64 0001:00134EF0    65 0001:00134EF6    66 0001:00134F19
+    67 0001:00134F2B    68 0001:00134F38    72 0001:00134F54    73 0001:00134F6E
+    74 0001:00134F78    76 0001:00134FA4    77 0001:00134FAB    80 0001:00134FF4
+    81 0001:00134FFD    82 0001:00135007    83 0001:00135021    84 0001:00135028
+    90 0001:0013504C    91 0001:00135076    92 0001:00135098    93 0001:001350A2
+    94 0001:001350F1    95 0001:001350F8    96 0001:0013510C   102 0001:00135168
+   103 0001:00135187   104 0001:001351A7   105 0001:001351B1   106 0001:001351FD
+   107 0001:00135204   108 0001:00135211   111 0001:00135268   112 0001:00135274
+   113 0001:0013527E   114 0001:00135294   115 0001:0013529B   116 0001:001352AF
+   117 0001:001352BB   120 0001:001352E0   121 0001:001352EC   122 0001:001352F6
+   123 0001:0013530C   124 0001:00135313   125 0001:00135325   126 0001:00135339
+   127 0001:00135345   130 0001:00135368   131 0001:00135374   132 0001:0013537E
+   133 0001:00135394   134 0001:0013539B   135 0001:001353AF   136 0001:001353BB
+   139 0001:001353E0   140 0001:001353EC   141 0001:001353F6   142 0001:0013541C
+   143 0001:00135423   146 0001:00135448   147 0001:0013544E   148 0001:00135458
+   149 0001:0013546E   150 0001:00135475   151 0001:00135487   152 0001:00135494
+   157 0001:001354B4   158 0001:001354D0   159 0001:001354F0   160 0001:001354FA
+   161 0001:0013551D   162 0001:00135524   163 0001:00135536   164 0001:00135543
+   167 0001:00135598   168 0001:001355BA   169 0001:001355C4   170 0001:001355E7
+   171 0001:001355EE   172 0001:00135600   173 0001:0013560D   176 0001:0013564C
+   177 0001:0013566C   178 0001:00135676   179 0001:0013568F   180 0001:00135696
+   181 0001:001356A8   182 0001:001356B5   187 0001:001356F4   188 0001:00135710
+   189 0001:00135730   190 0001:0013573A   191 0001:0013575D   192 0001:00135764
+   193 0001:00135771   196 0001:001357C4   197 0001:001357F1   198 0001:001357FB
+   199 0001:00135828   200 0001:0013582F   201 0001:0013583C   204 0001:00135884
+   205 0001:001358A4   206 0001:001358AE   207 0001:001358C7   208 0001:001358CE
+   209 0001:001358DB   212 0001:0013591C   213 0001:0013591F   214 0001:00135929
+   215 0001:00135941   216 0001:00135948   217 0001:00135955   220 0001:00135970
+   221 0001:0013599A   222 0001:001359A4   223 0001:001359CA   224 0001:001359D1
+   227 0001:00135A10   228 0001:00135A13   229 0001:00135A1D   230 0001:00135A35
+   231 0001:00135A3C   232 0001:00135A49   235 0001:00135A64   236 0001:00135A6A
+   237 0001:00135A74   238 0001:00135A8A   239 0001:00135A91   242 0001:00135AB0
+   243 0001:00135ADD   244 0001:00135AE7   245 0001:00135B1E   246 0001:00135B25
+   247 0001:00135B37   248 0001:00135B49   249 0001:00135B56   252 0001:00135BAC
+   253 0001:00135BD9   254 0001:00135BE3   255 0001:00135C10   256 0001:00135C17
+   259 0001:00135C5C   260 0001:00135C86   261 0001:00135C90   262 0001:00135CB6
+   263 0001:00135CBD   267 0001:00135D00   268 0001:00135D0A   269 0001:00135D19
+   270 0001:00135D20   271 0001:00135D2D   275 0001:00135D4C   276 0001:00135D56
+   277 0001:00135D65   278 0001:00135D6C   279 0001:00135D79   282 0001:00135D94
+   283 0001:00135DB4   284 0001:00135DBE   285 0001:00135DE4   286 0001:00135DEB
+   287 0001:00135DFD   288 0001:00135E0A   291 0001:00135E4C   292 0001:00135E58
+   293 0001:00135E62   294 0001:00135E8D   295 0001:00135E94   296 0001:00135EA6
+   297 0001:00135EB3   300 0001:00135ED4   301 0001:00135EF6   302 0001:00135F00
+   303 0001:00135F45   304 0001:00135F4C   305 0001:00135F59   309 0001:00135F9C
+   320 0001:00135F9D   322 0001:00135FCC
+
+Line numbers for uGraphs(uGraphs.pas) segment .text
+
+   222 0001:001360BC   223 0001:001360E5   226 0001:001360F3   227 0001:00136111
+   228 0001:00136131   229 0001:00136154   230 0001:00136177   231 0001:0013619A
+   232 0001:001361A1   233 0001:001361C4   234 0001:001361D9   235 0001:001361EE
+   236 0001:00136203   237 0001:00136218   238 0001:0013622D   239 0001:00136242
+   240 0001:00136257   241 0001:0013626C   242 0001:00136281   243 0001:00136296
+   244 0001:001362AB   245 0001:001362C0   246 0001:001362D5   247 0001:001362DD
+   248 0001:001362EB   249 0001:001362F9   250 0001:00136307   251 0001:0013631B
+   252 0001:00136339   253 0001:0013634C   254 0001:0013636A   255 0001:0013637D
+   256 0001:00136392   259 0001:001363B8   261 0001:001364D2
+
+Line numbers for fGraphData(fGraphData.pas) segment .text
+
+   133 0001:0013679C   134 0001:0013679F   136 0001:001367A8   137 0001:001367AF
+   138 0001:001367B6   139 0001:001367BD   142 0001:001367C0   143 0001:001367C6
+   146 0001:001367D4   147 0001:001367DE   148 0001:001367E8   149 0001:001367F2
+   150 0001:001367FC   151 0001:00136806   152 0001:00136810   153 0001:00136816
+   154 0001:00136820   155 0001:00136826   157 0001:0013682C   163 0001:00136830
+   164 0001:00136855   165 0001:00136864   166 0001:00136871   168 0001:00136881
+   169 0001:0013688E   170 0001:001368AB   171 0001:001368E5   173 0001:001368F9
+   174 0001:00136921   175 0001:00136936   177 0001:0013694D   178 0001:00136961
+   181 0001:00136969   182 0001:0013696F   185 0001:0013697E   186 0001:0013698D
+   187 0001:0013699C   188 0001:001369BE   189 0001:001369E0   191 0001:001369EA
+   192 0001:001369F2   198 0001:00136A40   199 0001:00136A5A   201 0001:00136A67
+   202 0001:00136A7E   204 0001:00136A92   205 0001:00136AA1   206 0001:00136ABF
+   207 0001:00136AD2   208 0001:00136AE1   202 0001:00136AE2   209 0001:00136AE5
+   210 0001:00136AF5   211 0001:00136B0E   212 0001:00136B30   213 0001:00136B52
+   218 0001:00136BAC   220 0001:00136BC4   222 0001:00136BD3   223 0001:00136BDA
+   224 0001:00136BE1   225 0001:00136BF2   226 0001:00136C0E   227 0001:00136C23
+   228 0001:00136C3C   229 0001:00136C54   238 0001:00136C88   239 0001:00136C8A
+   245 0001:00136C8C   246 0001:00136C9D   247 0001:00136CAE   248 0001:00136CBF
+   249 0001:00136CD0   250 0001:00136CE1   251 0001:00136CF2   252 0001:00136D03
+   253 0001:00136D14   254 0001:00136D25   255 0001:00136D36   256 0001:00136D47
+   257 0001:00136D58   258 0001:00136D69   259 0001:00136D7A   260 0001:00136D8B
+   261 0001:00136D9C   262 0001:00136DAD   263 0001:00136DBE   264 0001:00136DCF
+   265 0001:00136DE0   266 0001:00136DF1   267 0001:00136E02   268 0001:00136E13
+   269 0001:00136E24   270 0001:00136E35   271 0001:00136E46   272 0001:00136E57
+   273 0001:00136E68   274 0001:00136E79   275 0001:00136E8A   276 0001:00136E9B
+   277 0001:00136EAC   281 0001:00136EB0   285 0001:00136EBD   286 0001:00136EC7
+   287 0001:00136ED1   288 0001:00136EDB   289 0001:00136EE5   290 0001:00136EEF
+   291 0001:00136EF9   292 0001:00136F03   293 0001:00136F0D   294 0001:00136F17
+   295 0001:00136F21   296 0001:00136F2B   297 0001:00136F35   298 0001:00136F3F
+   299 0001:00136F49   300 0001:00136F53   301 0001:00136F5D   302 0001:00136F67
+   303 0001:00136F71   304 0001:00136F7B   305 0001:00136F85   306 0001:00136F8F
+   307 0001:00136F99   308 0001:00136FA3   309 0001:00136FAD   310 0001:00136FB7
+   311 0001:00136FC1   312 0001:00136FCB   313 0001:00136FD5   314 0001:00136FDF
+   318 0001:00136FE0   319 0001:00136FEA   320 0001:00136FF4   321 0001:00136FFE
+   322 0001:00137008   323 0001:00137012   324 0001:0013701C   325 0001:00137026
+   326 0001:00137030   327 0001:0013703A   328 0001:00137044   329 0001:0013704E
+   330 0001:00137058   331 0001:00137062   332 0001:0013706C   333 0001:00137076
+   334 0001:00137080   335 0001:0013708A   336 0001:00137094   337 0001:0013709E
+   338 0001:001370A8   339 0001:001370B2   340 0001:001370BC   341 0001:001370C6
+   342 0001:001370D0   343 0001:001370DA   344 0001:001370E4   345 0001:001370EE
+   346 0001:001370F8   347 0001:00137102   354 0001:00137104   355 0001:0013710B
+   356 0001:00137121   357 0001:0013712D   358 0001:0013712F   359 0001:00137134
+   360 0001:0013713A   361 0001:00137156   362 0001:00137162   363 0001:0013717E
+   364 0001:0013718A   365 0001:001371A6   366 0001:001371B2   367 0001:001371BE
+   368 0001:001371C3   369 0001:001371DF   370 0001:001371E1   371 0001:001371FD
+   372 0001:001371FF   373 0001:0013721B   374 0001:0013721D   375 0001:00137239
+   376 0001:0013723B   377 0001:00137257   378 0001:00137259   379 0001:00137275
+   380 0001:00137281   381 0001:00137286   382 0001:001372A2   383 0001:001372A4
+   384 0001:001372C0   385 0001:001372C2   386 0001:001372DE   387 0001:001372E0
+   388 0001:001372FC   389 0001:001372FE   390 0001:0013731A   391 0001:0013731C
+   392 0001:00137338   393 0001:00137344   394 0001:00137349   395 0001:00137365
+   396 0001:00137367   397 0001:00137383   398 0001:00137385   399 0001:001373A1
+   400 0001:001373A3   401 0001:001373BF   402 0001:001373C1   403 0001:001373DD
+   404 0001:001373DF   405 0001:001373FB   406 0001:00137407   407 0001:0013740C
+   408 0001:00137428   409 0001:0013742A   410 0001:00137446   411 0001:00137448
+   412 0001:00137464   413 0001:00137466   414 0001:00137482   415 0001:00137484
+   416 0001:001374A0   417 0001:001374A2   418 0001:001374BE   419 0001:001374CA
+   420 0001:001374CF   421 0001:001374EB   422 0001:001374ED   423 0001:00137509
+   424 0001:0013750B   425 0001:00137527   426 0001:00137529   427 0001:00137545
+   428 0001:00137547   429 0001:00137563   430 0001:00137570   431 0001:0013757D
+   432 0001:00137590   433 0001:001375A3   434 0001:001375B6   437 0001:001378C4
+   438 0001:001378C7   439 0001:001378CE   440 0001:001378D5   443 0001:001378D8
+   444 0001:001378DB   445 0001:001378F1   451 0001:001378F4   452 0001:0013791F
+   453 0001:0013792F   454 0001:0013793C   455 0001:00137956   456 0001:0013795C
+   457 0001:00137984   458 0001:0013798D   459 0001:00137996   460 0001:001379A3
+   461 0001:001379B3   462 0001:001379C0   463 0001:001379F6   464 0001:00137A2D
+   470 0001:00137A7C   471 0001:00137A83   473 0001:00137A9B   474 0001:00137AAD
+   475 0001:00137ABE   476 0001:00137AD3   471 0001:00137AD4   477 0001:00137AD7
+   484 0001:00137ADC   485 0001:00137AE2   487 0001:00137AFB   488 0001:00137B0A
+   490 0001:00137B1F   491 0001:00137B2C   492 0001:00137BC3   493 0001:00137BD8
+   494 0001:00137BED   495 0001:00137C02   496 0001:00137C17   497 0001:00137C2C
+   498 0001:00137C41   499 0001:00137C56   500 0001:00137C6B   501 0001:00137C80
+   502 0001:00137C95   503 0001:00137CAA   504 0001:00137CBF   505 0001:00137CD4
+   506 0001:00137CE9   507 0001:00137CFE   508 0001:00137D13   509 0001:00137D28
+   510 0001:00137D3D   511 0001:00137D52   512 0001:00137D67   513 0001:00137D7C
+   514 0001:00137D91   515 0001:00137DA6   516 0001:00137DBB   517 0001:00137DCD
+   518 0001:00137DDF   519 0001:00137DF1   520 0001:00137E03   521 0001:00137E15
+   522 0001:00137E27   523 0001:00137E39   526 0001:00137E49   485 0001:00137E4A
+   527 0001:00137E51   532 0001:00137E58   533 0001:00137E5B   534 0001:00137E6B
+   537 0001:00137E70   538 0001:00137E73   539 0001:00137E83   542 0001:00137E88
+   543 0001:00137E8B   544 0001:00137E9B   552 0001:00137EA0   553 0001:00137EDD
+   554 0001:00137F04   557 0001:00137F1F   558 0001:00137F35   559 0001:00137F53
+   560 0001:00137F60   561 0001:00137F71   562 0001:00137F79   563 0001:00137F86
+   564 0001:00137F8E   565 0001:00137F98   567 0001:00137FB0   568 0001:00137FBF
+   569 0001:00137FD2   570 0001:00137FE5   571 0001:00137FF8   572 0001:00138016
+   573 0001:00138034   575 0001:00138047   577 0001:0013805A   579 0001:0013807E
+   581 0001:00138084   582 0001:001380B5   586 0001:001380DA   587 0001:001380E9
+   589 0001:00138118   594 0001:00138145   598 0001:00138147   600 0001:00138154
+   602 0001:00138169   604 0001:00138178   605 0001:00138194   607 0001:0013819F
+   565 0001:001381A0   608 0001:001381A7   609 0001:001381B7   610 0001:001381C4
+   611 0001:001381CD   612 0001:001381D7   614 0001:001381DD   621 0001:0013829C
+   622 0001:001382BF   623 0001:001382E6   626 0001:001382FB   627 0001:00138308
+   628 0001:00138312   630 0001:0013832A   631 0001:00138339   632 0001:0013834C
+   633 0001:0013835F   634 0001:00138372   636 0001:00138385   638 0001:00138398
+   640 0001:001383AB   642 0001:001383CD   643 0001:001383E9   644 0001:00138410
+   646 0001:00138444   648 0001:0013844F   628 0001:00138450   650 0001:00138457
+   652 0001:0013845D   665 0001:001384D4   666 0001:001384D7   667 0001:001384E7
+   670 0001:001384EC   671 0001:001384EF   672 0001:001384FF   676 0001:00138504
+   677 0001:0013850D   681 0001:00138510   682 0001:0013852B   685 0001:0013852C
+   686 0001:00138549   687 0001:00138559   690 0001:0013857C   691 0001:00138599
+   692 0001:001385A9   695 0001:001385CC   696 0001:001385E9   697 0001:001385F9
+   723 0001:0013861C   724 0001:00138630   726 0001:0013863B   727 0001:00138652
+   728 0001:00138661   730 0001:0013866A   734 0001:001386A4   735 0001:001386A9
+   737 0001:001386D8
+
+Line numbers for uFormMonitor(uFormMonitor.pas) segment .text
+
+    99 0001:00144598   100 0001:0014459C   101 0001:001445A9   102 0001:001445B7
+   103 0001:001445BD   106 0001:001445C4   107 0001:001445D2   109 0001:001445D6
+   113 0001:001445E5   114 0001:001445EB   116 0001:001445FC   122 0001:0014462C
+   123 0001:00144636   125 0001:0014463A   127 0001:0014463E   128 0001:00144648
+   129 0001:00144652   133 0001:0014465B   134 0001:0014466C   137 0001:00144676
+   142 0001:00144678   143 0001:0014467F   144 0001:00144690   146 0001:00144694
+   147 0001:00144697   151 0001:001446B2   152 0001:001446B5   154 0001:001446CE
+   155 0001:001446DE   161 0001:001446E4   162 0001:001446EA   163 0001:001446ED
+   165 0001:00144700   166 0001:0014470F   168 0001:00144714   169 0001:00144716
+   171 0001:00144718   163 0001:00144719   172 0001:0014471C   177 0001:00144724
+   178 0001:00144725   179 0001:0014472C   180 0001:00144730   182 0001:00144734
+   183 0001:00144743   189 0001:00144748   190 0001:00144752   191 0001:0014475B
+   193 0001:00144762   195 0001:00144766   196 0001:00144774   197 0001:00144777
+   198 0001:0014477F   200 0001:0014478E   201 0001:0014479A   204 0001:0014479F
+   206 0001:001447A3   207 0001:001447AA   210 0001:001447B9   213 0001:001447C0
+   214 0001:001447C3   215 0001:001447CD   216 0001:001447D1   217 0001:001447E5
+   222 0001:001447E8   223 0001:001447EB   224 0001:001447F2   225 0001:001447F8
+   226 0001:001447FF   227 0001:00144806   230 0001:00144808   231 0001:0014480B
+   232 0001:00144812   233 0001:00144818   234 0001:0014481F   237 0001:00144824
+   238 0001:00144827   239 0001:0014482E   240 0001:00144834   241 0001:0014483B
+   242 0001:00144842   245 0001:00144844   246 0001:00144847   247 0001:0014484C
+   248 0001:00144850   249 0001:00144876   252 0001:00144878   253 0001:0014487B
+   254 0001:00144880   255 0001:00144884   256 0001:001448A8   259 0001:001448AC
+   260 0001:001448B3   261 0001:001448C7   262 0001:001448D6   263 0001:001448D9
+   273 0001:001448E0   274 0001:001448EC   275 0001:001448F9   276 0001:00144909
+   277 0001:00144910   278 0001:0014491E   279 0001:00144929   280 0001:00144934
+   281 0001:0014493F   282 0001:0014494A   284 0001:00144955   285 0001:00144967
+   287 0001:0014497F   288 0001:0014498F   290 0001:001449AE   291 0001:001449BF
+   293 0001:001449CB   295 0001:001449F0   296 0001:00144A07   298 0001:00144A1D
+   300 0001:00144A31   302 0001:00144A33   288 0001:00144A36   303 0001:00144A3D
+   285 0001:00144A3E   304 0001:00144A47   305 0001:00144A56   304 0001:00144A6E
+   306 0001:00144A73   307 0001:00144A82   306 0001:00144A9A   309 0001:00144A9F
+   311 0001:00144AA9   313 0001:00144AB7   314 0001:00144ABE   315 0001:00144AC3
+   316 0001:00144AC7   317 0001:00144AD3   318 0001:00144AD7   319 0001:00144B08
+   321 0001:00144B10   324 0001:00144B1F   325 0001:00144B34   327 0001:00144B41
+   328 0001:00144B4C   330 0001:00144B50   332 0001:00144B5F   333 0001:00144B6B
+   340 0001:00144B76   342 0001:00144B7C   343 0001:00144B85   344 0001:00144B8E
+   345 0001:00144B9D   350 0001:00144BB2   352 0001:00144BC8   354 0001:00144BD7
+   357 0001:00144BE0   358 0001:00144BE6   360 0001:00144C06   362 0001:00144C12
+   364 0001:00144C1C   365 0001:00144C33   368 0001:00144C38   369 0001:00144C3C
+   370 0001:00144C46   371 0001:00144C4A   372 0001:00144C63   373 0001:00144C6C
+   374 0001:00144C7A   375 0001:00144C87   376 0001:00144C8B   378 0001:00144C90
+   379 0001:00144C9F   380 0001:00144CAE   381 0001:00144CBD   382 0001:00144CCC
+   383 0001:00144CD0   384 0001:00144CD4   385 0001:00144CED   386 0001:00144D04
+   387 0001:00144D1D   388 0001:00144D34   389 0001:00144D4D   390 0001:00144D64
+   391 0001:00144D7C   394 0001:00144D80   395 0001:00144D83   396 0001:00144D8D
+   397 0001:00144D91   399 0001:00144D98   400 0001:00144D9E   402 0001:00144DA3
+   403 0001:00144DBC   404 0001:00144DD5   406 0001:00144DEE   407 0001:00144DF6
+   408 0001:00144DFE   409 0001:00144E06   410 0001:00144E0E   411 0001:00144E18
+   412 0001:00144E20   415 0001:00144E24   416 0001:00144E2A   419 0001:00144E37
+   420 0001:00144E4C   422 0001:00144E57   425 0001:00144E5C   426 0001:00144E62
+   429 0001:00144E6F   430 0001:00144E84   432 0001:00144E8F   437 0001:00144E94
+   438 0001:00144E9A   439 0001:00144EA2   440 0001:00144EA6   442 0001:00144EAB
+   443 0001:00144EAE   444 0001:00144EB7   447 0001:00144EBC   448 0001:00144EBF
+   449 0001:00144ECC   452 0001:00144ED0   453 0001:00144ED3   454 0001:00144EE0
+   457 0001:00144EE4   458 0001:00144EE7   459 0001:00144EF6   460 0001:00144EF9
+   464 0001:00144F00   465 0001:00144F12   475 0001:00144F14   476 0001:00144F1A
+   477 0001:00144F1C   478 0001:00144F38   480 0001:00144F4E   481 0001:00144F65
+   478 0001:00144F66   482 0001:00144F69   483 0001:00144F6B   486 0001:00144F74
+   487 0001:00144F7C   488 0001:00144F7F   490 0001:00144F8A   491 0001:00144F90
+   492 0001:00144F99   494 0001:00144FA1   495 0001:00144FAA   497 0001:00144FAC
+   504 0001:00144FB4   505 0001:00144FBB   506 0001:00144FC8   507 0001:00144FCC
+   509 0001:00144FD5   510 0001:00144FD7   512 0001:00144FFB   514 0001:00145016
+   515 0001:00145027   517 0001:00145032   519 0001:00145050   520 0001:00145053
+   521 0001:0014505C   524 0001:0014505E   512 0001:00145061   525 0001:00145064
+   526 0001:00145069   527 0001:00145070   528 0001:0014507B   529 0001:00145082
+   530 0001:00145089   531 0001:0014509B   533 0001:001450A4   535 0001:001450AA
+   539 0001:001450B4   540 0001:001450B7   541 0001:001450BD   543 0001:001450C8
+   544 0001:001450CC   545 0001:001450D1   547 0001:001450DB   550 0001:001450E0
+   551 0001:001450E1   554 0001:0014511E   561 0001:00145120   562 0001:00145126
+   564 0001:0014513C   565 0001:0014514C   567 0001:00145162   568 0001:00145164
+   570 0001:00145166   562 0001:00145167   571 0001:0014516A   572 0001:0014516C
+   577 0001:00145174   578 0001:00145178   579 0001:0014517B   581 0001:00145181
+   582 0001:0014518B   583 0001:0014518F   584 0001:00145193   586 0001:00145196
+   587 0001:0014519C   588 0001:001451A6   589 0001:001451AD   590 0001:001451B1
+   591 0001:001451C0   592 0001:001451C7   593 0001:001451CB   600 0001:001451D0
+
+Line numbers for uFormMonitor(uFormMonitor.pas) segment .itext
+
+   595 0002:00001030   596 0002:00001039   598 0002:0000103E
+
+Line numbers for fRptBox(fRptBox.pas) segment .text
+
+    46 0001:001454BC    47 0001:001454F2    48 0001:00145509    51 0001:00145517
+    52 0001:0014551C    53 0001:0014553A    55 0001:00145552    56 0001:0014556D
+    57 0001:00145588    58 0001:00145597    59 0001:001455C7    60 0001:001455CA
+    52 0001:001455CB    63 0001:001455D2    64 0001:001455D9    66 0001:001455EB
+    67 0001:0014560F    68 0001:00145617    64 0001:00145618    69 0001:0014561B
+    70 0001:0014562D    71 0001:00145637    72 0001:0014565F    73 0001:0014566D
+    74 0001:00145691    75 0001:001456B1    76 0001:001456BC    77 0001:001456C6
+    78 0001:001456D1    79 0001:001456D9    80 0001:001456E4    82 0001:001456EC
+    85 0001:001456FC    86 0001:0014571F    89 0001:0014573D    90 0001:00145757
+    92 0001:00145762    93 0001:00145783    90 0001:00145784    96 0001:00145787
+    97 0001:00145798    98 0001:001457CA    99 0001:001457D5   102 0001:001457F7
+   103 0001:00145801   105 0001:0014580B   111 0001:00145864   112 0001:00145889
+   113 0001:00145898   114 0001:001458A6   116 0001:001458BE   118 0001:001458CE
+   121 0001:001458F4   122 0001:00145917   123 0001:00145925   124 0001:0014592E
+   125 0001:00145935   140 0001:0014595C   143 0001:0014598C   144 0001:0014599D
+   145 0001:001459AB   146 0001:001459B9   148 0001:001459C9   149 0001:001459D8
+   150 0001:001459E3   151 0001:001459ED   152 0001:001459FB   153 0001:00145A0D
+   154 0001:00145A12   158 0001:00145A17   160 0001:00145A23   161 0001:00145A2E
+   162 0001:00145A38   163 0001:00145A44   165 0001:00145A5F   161 0001:00145A60
+   166 0001:00145A63   167 0001:00145A66   168 0001:00145A73   169 0001:00145A80
+   170 0001:00145A9A   171 0001:00145AA8   174 0001:00145AB5   175 0001:00145AB8
+   176 0001:00145ADE   179 0001:00145AEB   180 0001:00145AFD   183 0001:00145B1E
+   184 0001:00145B26   188 0001:00145B43   189 0001:00145B51   191 0001:00145B61
+   196 0001:00145BC8   199 0001:00145BCC   200 0001:00145BE2   201 0001:00145C07
+   202 0001:00145C15   206 0001:00145C50   207 0001:00145C55   211 0001:00145C58
+   212 0001:00145C61   213 0001:00145C64   215 0001:00145C93
+
+Line numbers for rLabs(rLabs.pas) segment .text
+
+    72 0001:00145C68    73 0001:00145C71    74 0001:00145C93    75 0001:00145CA5
+    76 0001:00145CB2    79 0001:00145CD0    80 0001:00145CD9    81 0001:00145CFB
+    82 0001:00145D0D    83 0001:00145D1A    86 0001:00145D34    87 0001:00145D3D
+    88 0001:00145D5F    89 0001:00145D71    90 0001:00145D7E    93 0001:00145D9C
+    94 0001:00145DA5    95 0001:00145DC7    96 0001:00145DD9    97 0001:00145DE6
+   100 0001:00145E04   101 0001:00145E0D   102 0001:00145E2F   103 0001:00145E41
+   104 0001:00145E4E   107 0001:00145E6C   108 0001:00145E72   109 0001:00145E8B
+   110 0001:00145E9D   111 0001:00145EAA   114 0001:00145EC4   115 0001:00145EC7
+   116 0001:00145EDD   117 0001:00145EEF   118 0001:00145EFC   121 0001:00145F18
+   122 0001:00145F1E   123 0001:00145F41   124 0001:00145F53   125 0001:00145F60
+   128 0001:00145F7C   129 0001:00145F7F   130 0001:00145F95   133 0001:00145FAC
+   134 0001:00145FAF   135 0001:00145FD3   138 0001:00145FEC   139 0001:00145FEF
+   140 0001:00146005   143 0001:0014601C   144 0001:00146047   145 0001:0014605F
+   146 0001:00146093   147 0001:001460C7   148 0001:001460FC   149 0001:00146131
+   152 0001:00146174   153 0001:00146199   155 0001:001461A9   156 0001:001461E9
+   160 0001:001461FF   161 0001:0014620B   163 0001:00146217   167 0001:001462AC
+   168 0001:001462D9   169 0001:00146338   170 0001:0014634C   173 0001:00146390
+   174 0001:001463B5   176 0001:001463C5   177 0001:001463FE   181 0001:00146414
+   182 0001:00146420   184 0001:0014642C   188 0001:001464C0   189 0001:001464ED
+   190 0001:00146545   191 0001:00146559   194 0001:001465A0   195 0001:001465C5
+   197 0001:001465D5   198 0001:0014660E   202 0001:00146624   203 0001:00146630
+   205 0001:0014663C   209 0001:001466D0   210 0001:001466FD   211 0001:00146755
+   212 0001:00146769   215 0001:001467B0   216 0001:001467BC   217 0001:001467FE
+   218 0001:0014680B   221 0001:0014682C   222 0001:0014683B   223 0001:00146873
+   224 0001:00146880   227 0001:001468A4   228 0001:001468C9   229 0001:00146915
+   230 0001:00146922   233 0001:00146960   234 0001:001469A5   236 0001:001469B5
+   237 0001:00146A16   241 0001:00146A2C   242 0001:00146A38   244 0001:00146A44
+   248 0001:00146AEC   249 0001:00146B3E   251 0001:00146BCE   252 0001:00146BE2
+   256 0001:00146C50   257 0001:00146CA2   259 0001:00146D32   260 0001:00146D46
+   263 0001:00146DB4   264 0001:00146DDC   265 0001:00146DF2   266 0001:00146E26
+   267 0001:00146E5B   270 0001:00146E9C   271 0001:00146EC9   272 0001:00146F18
+   273 0001:00146F25   283 0001:00146F68   284 0001:00146FC9   285 0001:00146FD7
+   287 0001:00146FEB   288 0001:00146FF3   290 0001:00147005   291 0001:00147021
+   293 0001:0014702E   295 0001:0014706C   297 0001:0014706E   288 0001:0014706F
+   298 0001:00147072   300 0001:00147081   302 0001:001470A3   304 0001:001470B2
+   305 0001:001470F8   309 0001:0014714E   311 0001:001471D5   313 0001:0014722F
+   314 0001:00147236   315 0001:0014723D   325 0001:001472F8   326 0001:0014733E
+   327 0001:0014734C   329 0001:00147360   330 0001:00147368   332 0001:0014737A
+   333 0001:00147396   335 0001:001473A3   337 0001:001473E1   339 0001:001473E3
+   330 0001:001473E4   340 0001:001473E7   342 0001:001473F6   344 0001:00147418
+   346 0001:00147423   347 0001:00147450   351 0001:0014745F   353 0001:001474BB
+   355 0001:001474C8   356 0001:001474CF   357 0001:001474D6   360 0001:00147578
+   361 0001:00147598   362 0001:001475B1   363 0001:001475BE   368 0001:001475F8
+   370 0001:00147601   371 0001:00147610   373 0001:00147617   374 0001:0014761E
+   376 0001:00147662
+
+Line numbers for fGraphOthers(fGraphOthers.pas) segment .text
+
+    57 0001:00147968    58 0001:0014796E    59 0001:0014797D    60 0001:00147994
+    63 0001:001479A2    64 0001:001479AA    67 0001:001479C2    68 0001:001479CA
+    70 0001:001479DA    73 0001:001479E0    74 0001:001479E3    75 0001:00147A07
+    79 0001:00147A0C    81 0001:00147A15    82 0001:00147A2C    85 0001:00147A34
+    86 0001:00147A37    87 0001:00147A4C    88 0001:00147A64    89 0001:00147A6D
+    92 0001:00147A70    93 0001:00147A73    94 0001:00147A99   100 0001:00147A9C
+   101 0001:00147AC4   103 0001:00147AE0   104 0001:00147AE4   105 0001:00147B02
+   107 0001:00147B38   108 0001:00147B3C   104 0001:00147B3D   109 0001:00147B40
+   111 0001:00147B46   113 0001:00147B6B   101 0001:00147B6E   114 0001:00147B77
+   116 0001:00147BCE
+
+Line numbers for fGraphProfiles(fGraphProfiles.pas) segment .text
+
+   146 0001:00148408   147 0001:00148423   149 0001:0014842D   150 0001:0014843B
+   152 0001:0014843D   153 0001:00148445   154 0001:0014844F   155 0001:00148453
+   156 0001:00148457   157 0001:00148464   158 0001:0014846B   159 0001:00148473
+   161 0001:0014849F   162 0001:001484A6   173 0001:0014850C   174 0001:00148540
+   175 0001:00148557   178 0001:00148565   179 0001:0014857A   180 0001:00148590
+   182 0001:0014859B   183 0001:001485AB   187 0001:001485BA   188 0001:001485CA
+   190 0001:001485D7   192 0001:001485EB   193 0001:001485FB   194 0001:00148621
+   195 0001:00148654   196 0001:00148677   197 0001:00148687   199 0001:001486A8
+   200 0001:001486B0   201 0001:001486BB   202 0001:001486CB   203 0001:001486D3
+   204 0001:001486DA   206 0001:001486E3   207 0001:001486F9   208 0001:0014871D
+   209 0001:00148741   210 0001:00148765   211 0001:00148772   212 0001:0014877A
+   213 0001:00148786   215 0001:001487A1   216 0001:001487B3   217 0001:001487DE
+   218 0001:001487F1   219 0001:00148800   221 0001:00148820   222 0001:00148833
+   223 0001:00148853   213 0001:00148854   224 0001:0014885B   225 0001:0014889E
+   227 0001:001488B4   228 0001:001488C9   229 0001:001488EE   230 0001:001488FF
+   233 0001:00148911   234 0001:00148924   235 0001:00148930   237 0001:00148947
+   238 0001:00148984   235 0001:00148985   239 0001:00148988   244 0001:001489A9
+   246 0001:001489B9   249 0001:00148AFC   250 0001:00148AFF   251 0001:00148B0A
+   254 0001:00148B0C   255 0001:00148B0F   257 0001:00148B19   260 0001:00148B2B
+   262 0001:00148B3A   265 0001:00148B4A   266 0001:00148B65   267 0001:00148B72
+   268 0001:00148B7F   269 0001:00148B8F   270 0001:00148B9D   274 0001:00148BA0
+   275 0001:00148BB1   280 0001:00148BB4   281 0001:00148BCA   283 0001:00148BD2
+   284 0001:00148BDF   288 0001:00148BEE   290 0001:00148BFA   291 0001:00148C0E
+   292 0001:00148C27   293 0001:00148C45   295 0001:00148C52   296 0001:00148C5F
+   298 0001:00148C6C   300 0001:00148C7E   301 0001:00148C8B   303 0001:00148C96
+   305 0001:00148CA8   306 0001:00148CB5   308 0001:00148CBE   316 0001:00148CF0
+   317 0001:00148D15   318 0001:00148D1C   319 0001:00148D2B   321 0001:00148D35
+   322 0001:00148D3B   326 0001:00148D50   327 0001:00148D52   329 0001:00148D6E
+   331 0001:00148D7B   332 0001:00148D88   333 0001:00148D99   334 0001:00148DA6
+   335 0001:00148DB7   336 0001:00148DD2   338 0001:00148DE3   339 0001:00148DF1
+   340 0001:00148E02   341 0001:00148E0F   343 0001:00148E14   344 0001:00148E27
+   350 0001:00148E72   351 0001:00148E82   352 0001:00148E8F   353 0001:00148EAB
+   354 0001:00148EC9   358 0001:00148ECF   359 0001:00148EDC   360 0001:00148EE6
+   361 0001:00148EF3   363 0001:00148EF7   364 0001:00148F20   365 0001:00148F38
+   366 0001:00148F45   369 0001:00148FCC   370 0001:00148FCF   371 0001:00148FE3
+   374 0001:00148FE8   375 0001:00148FEB   376 0001:00148FFD   379 0001:00149000
+   380 0001:00149004   382 0001:00149010   383 0001:0014901E   384 0001:0014902B
+   388 0001:0014903A   390 0001:0014904D   391 0001:0014905A   393 0001:00149063
+   396 0001:00149068   397 0001:0014907F   398 0001:0014908C   399 0001:0014909A
+   401 0001:001490D0   402 0001:001490E0   406 0001:0014912C   407 0001:00149135
+   408 0001:0014914C   413 0001:00149154   414 0001:0014915A   415 0001:0014916B
+   416 0001:001491A8   417 0001:001491B9   418 0001:001491F5   420 0001:00149201
+   421 0001:0014921D   427 0001:0014923D   428 0001:0014925E   430 0001:00149278
+   435 0001:0014927C   436 0001:00149283   438 0001:00149298   440 0001:001492A8
+   442 0001:001492B0   444 0001:001492C6   445 0001:001492D5   446 0001:001492E5
+   447 0001:001492F2   442 0001:001492F3   448 0001:001492F6   452 0001:00149306
+   453 0001:00149316   455 0001:00149323   456 0001:0014932C   457 0001:00149333
+   461 0001:00149335   463 0001:0014933D   464 0001:0014934A   465 0001:00149353
+   466 0001:0014935A   470 0001:0014935C   471 0001:0014936D   472 0001:00149378
+   473 0001:00149389   475 0001:00149392   476 0001:0014939B   477 0001:001493A2
+   483 0001:001493A8   484 0001:001493C4   485 0001:001493D5   486 0001:0014940B
+   487 0001:00149425   490 0001:00149450   491 0001:00149455   492 0001:00149475
+   493 0001:0014949E   494 0001:001494B6   496 0001:001494F6   497 0001:00149527
+   498 0001:0014955B   499 0001:00149588   500 0001:00149598   505 0001:001495C8
+   506 0001:001495DF   507 0001:001495F1   508 0001:00149614   509 0001:00149634
+   510 0001:0014963E   511 0001:00149647   514 0001:0014966C   515 0001:00149670
+   517 0001:0014967C   518 0001:0014968A   519 0001:00149697   523 0001:001496A6
+   524 0001:001496B9   526 0001:001496C6   529 0001:001496CC   530 0001:001496CF
+   531 0001:001496D8   532 0001:001496DF   535 0001:001496E4   536 0001:001496E7
+   537 0001:001496F5   538 0001:001496FE   539 0001:00149705   547 0001:00149708
+   548 0001:0014972B   549 0001:00149740   550 0001:00149755   551 0001:00149764
+   552 0001:00149773   553 0001:00149784   554 0001:00149794   555 0001:00149798
+   556 0001:0014979C   557 0001:001497A0   559 0001:001497C7   560 0001:001497E0
+   561 0001:001497F3   562 0001:00149806   566 0001:0014983C   568 0001:00149851
+   569 0001:0014985E   570 0001:0014989A   573 0001:001498A3   575 0001:001498B8
+   576 0001:001498C5   577 0001:00149901   580 0001:00149907   582 0001:0014991C
+   583 0001:00149929   584 0001:00149965   586 0001:00149969   587 0001:00149984
+   588 0001:0014998F   590 0001:001499A5   591 0001:001499B2   592 0001:001499C5
+   594 0001:001499E7   595 0001:001499FA   596 0001:00149A1C   597 0001:00149A3B
+   603 0001:00149A56   588 0001:00149A57   605 0001:00149A5E   557 0001:00149A61
+   606 0001:00149A6A   608 0001:00149A7F   609 0001:00149A83   610 0001:00149A87
+   611 0001:00149A91   612 0001:00149A9B   613 0001:00149AC7   615 0001:00149AEE
+   616 0001:00149B07   617 0001:00149B1A   618 0001:00149B2D   621 0001:00149B54
+   623 0001:00149B69   624 0001:00149B76   625 0001:00149BB2   628 0001:00149BB8
+   630 0001:00149BCD   631 0001:00149BDA   632 0001:00149C1C   634 0001:00149C20
+   635 0001:00149C50   636 0001:00149C5B   638 0001:00149C71   639 0001:00149C7E
+   640 0001:00149C91   642 0001:00149CB9   643 0001:00149CCC   644 0001:00149CF4
+   645 0001:00149D13   647 0001:00149D34   636 0001:00149D35   649 0001:00149D3C
+   613 0001:00149D3F   651 0001:00149D48   652 0001:00149D57   653 0001:00149D66
+   654 0001:00149D78   655 0001:00149D87   656 0001:00149D8F   657 0001:00149D97
+   660 0001:00149FBC   661 0001:00149FBF   662 0001:00149FCF   663 0001:00149FDF
+   664 0001:00149FF0   665 0001:00149FFD   666 0001:0014A006   667 0001:0014A00F
+   668 0001:0014A020   669 0001:0014A031   675 0001:0014A034   676 0001:0014A056
+   678 0001:0014A068   679 0001:0014A076   681 0001:0014A07B   682 0001:0014A07D
+   683 0001:0014A085   684 0001:0014A0A8   685 0001:0014A0BB   686 0001:0014A0CE
+   687 0001:0014A0DD   688 0001:0014A0EA   690 0001:0014A102   691 0001:0014A10D
+   695 0001:0014A111   696 0001:0014A11F   698 0001:0014A124   700 0001:0014A12C
+   704 0001:0014A162   705 0001:0014A17A   706 0001:0014A187   709 0001:0014A1B4
+   713 0001:0014A1B9   716 0001:0014A1EF   717 0001:0014A207   718 0001:0014A214
+   723 0001:0014A241   724 0001:0014A24A   725 0001:0014A25A   726 0001:0014A26A
+   727 0001:0014A27B   728 0001:0014A288   729 0001:0014A28D   730 0001:0014A296
+   731 0001:0014A29F   732 0001:0014A2AC   733 0001:0014A2B9   734 0001:0014A2CB
+   735 0001:0014A2DB   743 0001:0014A420   744 0001:0014A442   746 0001:0014A454
+   747 0001:0014A462   749 0001:0014A467   750 0001:0014A46B   751 0001:0014A473
+   752 0001:0014A496   753 0001:0014A4A9   754 0001:0014A4BC   755 0001:0014A4CB
+   756 0001:0014A4D8   758 0001:0014A4F0   759 0001:0014A4FB   763 0001:0014A501
+   765 0001:0014A50F   766 0001:0014A518   767 0001:0014A521   769 0001:0014A527
+   770 0001:0014A534   775 0001:0014A550   776 0001:0014A55D   778 0001:0014A577
+   779 0001:0014A588   780 0001:0014A590   781 0001:0014A598   782 0001:0014A5AE
+   784 0001:0014A5D7   785 0001:0014A5EA   787 0001:0014A611   788 0001:0014A621
+   789 0001:0014A63D   790 0001:0014A64C   791 0001:0014A654   792 0001:0014A65C
+   793 0001:0014A663   794 0001:0014A66C   796 0001:0014A68C   797 0001:0014A69F
+   798 0001:0014A6B2   799 0001:0014A6C1   801 0001:0014A6E1   802 0001:0014A6F4
+   803 0001:0014A714   804 0001:0014A717   805 0001:0014A726   807 0001:0014A736
+   808 0001:0014A74C   810 0001:0014A754   794 0001:0014A757   811 0001:0014A75E
+   813 0001:0014A76E   814 0001:0014A784   816 0001:0014A78C   818 0001:0014A792
+   819 0001:0014A79F   820 0001:0014A7B7   821 0001:0014A7C7   825 0001:0014A7D6
+   826 0001:0014A7E3   827 0001:0014A7FB   828 0001:0014A80B   830 0001:0014A818
+   831 0001:0014A820   832 0001:0014A82D   840 0001:0014AA24   841 0001:0014AA47
+   842 0001:0014AA51   843 0001:0014AA68   844 0001:0014AA70   846 0001:0014AA81
+   847 0001:0014AAA4   849 0001:0014AAB4   850 0001:0014AAC7   851 0001:0014AADA
+   854 0001:0014AAE5   856 0001:0014AAEB   857 0001:0014AAF8   862 0001:0014AB07
+   863 0001:0014AB14   866 0001:0014AB21   867 0001:0014AB32   868 0001:0014AB3A
+   869 0001:0014AB42   870 0001:0014AB64   872 0001:0014AB8A   873 0001:0014ABA3
+   875 0001:0014ABC7   876 0001:0014ABD7   877 0001:0014ABF3   878 0001:0014AC02
+   879 0001:0014AC0A   880 0001:0014AC12   881 0001:0014AC19   882 0001:0014AC22
+   884 0001:0014AC42   885 0001:0014AC55   886 0001:0014AC68   887 0001:0014AC77
+   889 0001:0014AC97   890 0001:0014ACAA   891 0001:0014ACCA   892 0001:0014ACCD
+   893 0001:0014ACDC   895 0001:0014ACEC   896 0001:0014AD02   898 0001:0014AD0A
+   882 0001:0014AD0D   899 0001:0014AD14   901 0001:0014AD24   902 0001:0014AD3A
+   904 0001:0014AD42   906 0001:0014AD48   907 0001:0014AD55   908 0001:0014AD65
+   912 0001:0014AD74   913 0001:0014AD81   914 0001:0014AD91   916 0001:0014AD9E
+   917 0001:0014ADA6   918 0001:0014ADB3   921 0001:0014B010   922 0001:0014B013
+   923 0001:0014B027   924 0001:0014B034   925 0001:0014B03B   928 0001:0014B040
+   929 0001:0014B043   930 0001:0014B055   931 0001:0014B061   933 0001:0014B073
+   934 0001:0014B083   935 0001:0014B08D   940 0001:0014B0C8   941 0001:0014B0E3
+   943 0001:0014B0F4   944 0001:0014B101   945 0001:0014B10E   947 0001:0014B113
+   948 0001:0014B136   950 0001:0014B194   951 0001:0014B1AC   958 0001:0014B1EC
+   959 0001:0014B210   961 0001:0014B21F   962 0001:0014B231   963 0001:0014B24C
+   964 0001:0014B275   965 0001:0014B2B3   966 0001:0014B2C6   967 0001:0014B2D0
+   968 0001:0014B2F2   970 0001:0014B2FA   972 0001:0014B31B   973 0001:0014B32D
+   974 0001:0014B356   975 0001:0014B394   976 0001:0014B3A8   970 0001:0014B3AB
+   979 0001:0014B3B6   981 0001:0014B3CA   983 0001:0014B3D7   990 0001:0014B420
+   991 0001:0014B444   993 0001:0014B453   994 0001:0014B462   995 0001:0014B479
+   996 0001:0014B49C   997 0001:0014B4BA   998 0001:0014B4D9   999 0001:0014B4F7
+  1000 0001:0014B52B  1002 0001:0014B5B2  1003 0001:0014B5E6  1005 0001:0014B668
+  1006 0001:0014B691  1007 0001:0014B6CF  1008 0001:0014B6E2  1009 0001:0014B6EC
+  1010 0001:0014B70E  1012 0001:0014B716  1014 0001:0014B736  1015 0001:0014B747
+  1016 0001:0014B770  1017 0001:0014B7AE  1018 0001:0014B7C2  1012 0001:0014B7C5
+  1021 0001:0014B7D0  1022 0001:0014B7E4  1023 0001:0014B7F6  1025 0001:0014B800
+  1070 0001:0014B8AC  1071 0001:0014B8B1  1074 0001:0014B8E8  1075 0001:0014B8F9
+  1076 0001:0014B90A  1077 0001:0014B917  1079 0001:0014B924  1085 0001:0014B928
+  1086 0001:0014B953  1087 0001:0014B979  1088 0001:0014B98C  1089 0001:0014B99E
+  1091 0001:0014B9ED  1092 0001:0014B9F3  1093 0001:0014BA0E  1095 0001:0014BA74
+  1096 0001:0014BA82  1097 0001:0014BA84  1092 0001:0014BA85  1098 0001:0014BA8A
+  1103 0001:0014BB24  1104 0001:0014BB49  1106 0001:0014BB58  1107 0001:0014BB60
+  1108 0001:0014BB6D  1109 0001:0014BBB2  1110 0001:0014BBBE  1111 0001:0014BBD0
+  1113 0001:0014BBF5  1114 0001:0014BC19  1116 0001:0014BC54  1117 0001:0014BC74
+  1118 0001:0014BCB9  1119 0001:0014BCC3  1113 0001:0014BCC6  1121 0001:0014BCD4
+  1123 0001:0014BCF9  1124 0001:0014BD1D  1126 0001:0014BD58  1127 0001:0014BD78
+  1128 0001:0014BDBD  1129 0001:0014BDC7  1123 0001:0014BDCA  1132 0001:0014BDD3
+  1138 0001:0014BEBC  1139 0001:0014BEE8  1141 0001:0014BEF6  1142 0001:0014BEFE
+  1143 0001:0014BF0B  1144 0001:0014BF1D  1146 0001:0014BF42  1147 0001:0014BF61
+  1150 0001:0014BF91  1151 0001:0014BFBF  1152 0001:0014BFCB  1153 0001:0014BFDD
+  1155 0001:0014BFF2  1156 0001:0014BFFF  1157 0001:0014C023  1159 0001:0014C05E
+  1160 0001:0014C07E  1161 0001:0014C0C3  1162 0001:0014C0CD  1156 0001:0014C0D0
+  1164 0001:0014C0DE  1166 0001:0014C0F3  1167 0001:0014C100  1168 0001:0014C124
+  1170 0001:0014C15F  1171 0001:0014C17F  1172 0001:0014C1C4  1173 0001:0014C1CE
+  1167 0001:0014C1D1  1175 0001:0014C1DF  1176 0001:0014C1F0  1178 0001:0014C215
+  1179 0001:0014C22C  1180 0001:0014C24E  1182 0001:0014C259  1176 0001:0014C25C
+  1182 0001:0014C266  1184 0001:0014C291  1185 0001:0014C2DE  1187 0001:0014C303
+  1188 0001:0014C31A  1189 0001:0014C34A  1190 0001:0014C355  1185 0001:0014C358
+  1192 0001:0014C362  1194 0001:0014C38D  1195 0001:0014C3DA  1197 0001:0014C3FF
+  1198 0001:0014C416  1199 0001:0014C446  1200 0001:0014C451  1195 0001:0014C454
+  1202 0001:0014C45E  1203 0001:0014C46F  1205 0001:0014C490  1206 0001:0014C4A7
+  1207 0001:0014C4D4  1208 0001:0014C4DF  1203 0001:0014C4E2  1209 0001:0014C4E7
+  1211 0001:0014C4F4  1217 0001:0014C638  1218 0001:0014C668  1219 0001:0014C6B3
+  1220 0001:0014C6C6  1221 0001:0014C6D9  1223 0001:0014C6E8  1224 0001:0014C6F3
+  1226 0001:0014C700  1227 0001:0014C716  1228 0001:0014C72B  1230 0001:0014C751
+  1231 0001:0014C75E  1232 0001:0014C76B  1233 0001:0014C781  1234 0001:0014C796
+  1235 0001:0014C7A3  1236 0001:0014C7B0  1237 0001:0014C7C6  1238 0001:0014C7DB
+  1239 0001:0014C7E8  1240 0001:0014C7F5  1241 0001:0014C80B  1246 0001:0014C820
+  1247 0001:0014C82D  1248 0001:0014C83A  1249 0001:0014C850  1251 0001:0014C865
+  1258 0001:0014C9A8  1259 0001:0014C9ED  1261 0001:0014C9F3  1263 0001:0014CA0B
+  1264 0001:0014CA2F  1265 0001:0014CA53  1267 0001:0014CA62  1268 0001:0014CA6D
+  1270 0001:0014CA7A  1272 0001:0014CA94  1273 0001:0014CA9A  1276 0001:0014CA9F
+  1278 0001:0014CABB  1279 0001:0014CAC1  1282 0001:0014CAC6  1284 0001:0014CAD5
+  1285 0001:0014CAF5  1287 0001:0014CB2A  1288 0001:0014CB30  1292 0001:0014CB32
+  1293 0001:0014CB4E  1294 0001:0014CB5C  1260 0001:0014CB5D  1295 0001:0014CB66
+  1302 0001:0014CBA8  1303 0001:0014CBE0  1304 0001:0014CBEB  1305 0001:0014CBF3
+  1307 0001:0014CC19  1308 0001:0014CC2C  1310 0001:0014CC31  1311 0001:0014CC41
+  1313 0001:0014CC47  1314 0001:0014CC58  1315 0001:0014CC6B  1316 0001:0014CC7E
+  1317 0001:0014CCA9  1308 0001:0014CCAA  1318 0001:0014CCB6  1319 0001:0014CCF9
+  1320 0001:0014CD06  1321 0001:0014CD18  1323 0001:0014CD1D  1325 0001:0014CD43
+  1326 0001:0014CD66  1327 0001:0014CD84  1328 0001:0014CD8F  1329 0001:0014CD9C
+  1331 0001:0014CDA1  1332 0001:0014CDB1  1333 0001:0014CDBB  1334 0001:0014CDCE
+  1335 0001:0014CDE1  1336 0001:0014CDF9  1337 0001:0014CE01  1339 0001:0014CE20
+  1340 0001:0014CE52  1341 0001:0014CE74  1342 0001:0014CE92  1344 0001:0014CE9F
+  1345 0001:0014CEC4  1346 0001:0014CEDC  1347 0001:0014CEE7  1349 0001:0014CEE9
+  1337 0001:0014CEEC  1350 0001:0014CEF3  1329 0001:0014CEF4  1351 0001:0014CF00
+  1352 0001:0014CF43  1353 0001:0014CF50  1354 0001:0014CF62  1356 0001:0014CF67
+  1358 0001:0014CF81  1359 0001:0014CF90  1361 0001:0014CFA6  1362 0001:0014CFB3
+  1363 0001:0014CFD5  1364 0001:0014D037  1359 0001:0014D038  1365 0001:0014D03F
+  1367 0001:0014D044  1369 0001:0014D070  1370 0001:0014D084  1371 0001:0014D0D3
+  1372 0001:0014D0E9  1371 0001:0014D120  1375 0001:0014D128  1377 0001:0014D150
+  1378 0001:0014D1A1  1382 0001:0014D1CF  1383 0001:0014D221  1385 0001:0014D270
+  1387 0001:0014D29C  1388 0001:0014D2BA  1387 0001:0014D2E5  1389 0001:0014D2E8
+  1390 0001:0014D30C  1391 0001:0014D31E  1396 0001:0014D45C  1397 0001:0014D485
+  1399 0001:0014D4AA  1400 0001:0014D4EC  1401 0001:0014D502  1400 0001:0014D52B
+  1404 0001:0014D535  1405 0001:0014D556  1407 0001:0014D595  1408 0001:0014D5B6
+  1410 0001:0014D5F4  1411 0001:0014D630  1418 0001:0014D6A4  1419 0001:0014D6D0
+  1420 0001:0014D6D8  1421 0001:0014D6E5  1422 0001:0014D6F2  1424 0001:0014D6F9
+  1425 0001:0014D70C  1426 0001:0014D716  1427 0001:0014D729  1428 0001:0014D73C
+  1429 0001:0014D754  1430 0001:0014D75C  1432 0001:0014D76F  1433 0001:0014D78E
+  1435 0001:0014D7C4  1436 0001:0014D7ED  1437 0001:0014D7EF  1432 0001:0014D7F2
+  1438 0001:0014D7F5  1439 0001:0014D817  1442 0001:0014D829  1444 0001:0014D83C
+  1445 0001:0014D840  1447 0001:0014D864  1448 0001:0014D89B  1450 0001:0014D8A8
+  1451 0001:0014D8D2  1452 0001:0014D8EA  1453 0001:0014D8F5  1454 0001:0014D8F9
+  1456 0001:0014D8FB  1445 0001:0014D8FE  1457 0001:0014D905  1458 0001:0014D90F
+  1460 0001:0014D933  1461 0001:0014D96A  1463 0001:0014D977  1464 0001:0014D9A1
+  1465 0001:0014D9B9  1466 0001:0014D9C4  1468 0001:0014D9C6  1458 0001:0014D9C9
+  1470 0001:0014D9D0  1422 0001:0014D9D3  1471 0001:0014D9E0  1477 0001:0014DAB0
+  1480 0001:0014DAD5  1481 0001:0014DADF  1482 0001:0014DAE7  1483 0001:0014DAF0
+  1484 0001:0014DB08  1485 0001:0014DB16  1487 0001:0014DB25  1488 0001:0014DB41
+  1490 0001:0014DB5C  1491 0001:0014DB6E  1492 0001:0014DB8C  1493 0001:0014DB9F
+  1494 0001:0014DBB1  1488 0001:0014DBB4  1495 0001:0014DBB7  1496 0001:0014DBC0
+  1497 0001:0014DC02  1498 0001:0014DC0F  1500 0001:0014DC23  1501 0001:0014DC63
+  1503 0001:0014DC82  1504 0001:0014DC94  1505 0001:0014DCB6  1507 0001:0014DCC7
+  1508 0001:0014DCF2  1501 0001:0014DCF5  1513 0001:0014DCFA  1514 0001:0014DD0B
+  1516 0001:0014DD14  1517 0001:0014DD3F  1518 0001:0014DD4F  1520 0001:0014DD6B
+  1521 0001:0014DDAB  1522 0001:0014DDCE  1521 0001:0014DE16  1524 0001:0014DE19
+  1525 0001:0014DE42  1526 0001:0014DE52  1528 0001:0014DE7D  1529 0001:0014DEBD
+  1530 0001:0014DEE0  1529 0001:0014DF28  1532 0001:0014DF2B  1533 0001:0014DF4A
+  1534 0001:0014DF5A  1536 0001:0014DF76  1537 0001:0014DFB6  1538 0001:0014DFDD
+  1537 0001:0014E068  1540 0001:0014E06F  1541 0001:0014E087  1543 0001:0014E095
+  1549 0001:0014E3D8  1550 0001:0014E414  1551 0001:0014E418  1552 0001:0014E42E
+  1554 0001:0014E446  1555 0001:0014E45B  1556 0001:0014E46E  1557 0001:0014E481
+  1559 0001:0014E4A6  1560 0001:0014E4AA  1562 0001:0014E4AC  1552 0001:0014E4AD
+  1563 0001:0014E4B2  1568 0001:0014E4EC  1569 0001:0014E4F1  1570 0001:0014E50B
+  1569 0001:0014E51C  1571 0001:0014E51F  1572 0001:0014E534  1573 0001:0014E549
+  1574 0001:0014E55E  1575 0001:0014E573  1576 0001:0014E588  1577 0001:0014E59D
+  1578 0001:0014E5B2  1579 0001:0014E5C7  1580 0001:0014E5DC  1581 0001:0014E5F1
+  1582 0001:0014E606  1583 0001:0014E61B  1584 0001:0014E630  1585 0001:0014E645
+  1586 0001:0014E65A  1587 0001:0014E66F  1588 0001:0014E684  1589 0001:0014E699
+  1590 0001:0014E6AE  1591 0001:0014E6C3  1592 0001:0014E6D8  1593 0001:0014E6ED
+  1594 0001:0014E702  1595 0001:0014E717  1596 0001:0014E72C  1597 0001:0014E741
+  1598 0001:0014E756  1599 0001:0014E76B  1600 0001:0014E780  1601 0001:0014E795
+  1602 0001:0014E7AA  1603 0001:0014E7BF  1604 0001:0014E7D4  1605 0001:0014E7E9
+  1606 0001:0014E7FE  1607 0001:0014E813  1611 0001:0014F1A0  1613 0001:0014F1A6
+  1614 0001:0014F1AB  1615 0001:0014F1B0  1619 0001:0014F1BF  1620 0001:0014F1C4
+  1623 0001:0014F220  1624 0001:0014F24F  1625 0001:0014F25E  1626 0001:0014F266
+  1628 0001:0014F26B  1629 0001:0014F26D  1631 0001:0014F272  1637 0001:0014F2F4
+  1638 0001:0014F302  1641 0001:0014F304  1647 0001:0014F394  1648 0001:0014F3C0
+  1649 0001:0014F3D8  1651 0001:0014F3ED  1652 0001:0014F3FE  1653 0001:0014F40E
+  1654 0001:0014F413  1655 0001:0014F420  1656 0001:0014F427  1657 0001:0014F43F
+  1659 0001:0014F457  1660 0001:0014F46C  1661 0001:0014F47F  1662 0001:0014F492
+  1664 0001:0014F4BB  1665 0001:0014F4BE  1667 0001:0014F4C0  1657 0001:0014F4C1
+  1668 0001:0014F4C6  1669 0001:0014F4CC  1670 0001:0014F4DD  1671 0001:0014F4EA
+  1672 0001:0014F4F3  1674 0001:0014F557
+
+Line numbers for fGraphSettings(fGraphSettings.pas) segment .text
+
+   109 0001:0014FBE8   110 0001:0014FC0F   111 0001:0014FC17   112 0001:0014FC1F
+   114 0001:0014FC25   115 0001:0014FC33   117 0001:0014FC38   118 0001:0014FC4B
+   119 0001:0014FC5A   120 0001:0014FC69   122 0001:0014FC7B   123 0001:0014FC88
+   124 0001:0014FCA6   125 0001:0014FCB9   126 0001:0014FCC6   120 0001:0014FCC7
+   127 0001:0014FCCA   128 0001:0014FCD5   129 0001:0014FCE3   131 0001:0014FCE5
+   132 0001:0014FCF5   133 0001:0014FD05   134 0001:0014FD2D   135 0001:0014FD37
+   129 0001:0014FD38   136 0001:0014FD40   137 0001:0014FD47   138 0001:0014FD5E
+   139 0001:0014FD66   140 0001:0014FD6D   141 0001:0014FD75   148 0001:0014FDF8
+   149 0001:0014FE25   150 0001:0014FE28   151 0001:0014FE30   152 0001:0014FE3F
+   153 0001:0014FE56   156 0001:0014FE64   157 0001:0014FE7C   158 0001:0014FE9A
+   159 0001:0014FEB2   160 0001:0014FEC8   161 0001:0014FEEB   162 0001:0014FEF8
+   163 0001:0014FF16   164 0001:0014FF34   165 0001:0014FF3F   166 0001:0014FF4C
+   167 0001:0014FF57   168 0001:0014FF60   169 0001:0014FFA7   170 0001:0014FFB0
+   171 0001:0014FFF7   172 0001:00150000   173 0001:00150047   174 0001:00150054
+   175 0001:0015005C   176 0001:00150067   177 0001:00150077   179 0001:0015007C
+   180 0001:0015008A   181 0001:0015009D   182 0001:001500A7   186 0001:001500BF
+   187 0001:001500C7   189 0001:001500D7   196 0001:00150128   199 0001:0015014C
+   200 0001:00150160   201 0001:00150174   202 0001:00150188   203 0001:0015018F
+   204 0001:00150197   205 0001:001501A3   207 0001:001501C5   208 0001:001501F2
+   209 0001:001501FF   210 0001:0015020E   211 0001:00150225   212 0001:0015023C
+   213 0001:00150253   214 0001:0015026A   215 0001:00150281   216 0001:00150298
+   217 0001:001502AF   218 0001:001502C3   219 0001:001502D7   220 0001:001502EB
+   221 0001:001502FF   222 0001:00150313   223 0001:00150327   224 0001:00150339
+   205 0001:0015033C   225 0001:00150345   226 0001:00150359   227 0001:00150375
+   229 0001:00150391   236 0001:00150478   237 0001:0015049F   239 0001:001504AB
+   241 0001:001504CD   242 0001:001504D1   243 0001:001504E0   244 0001:001504E4
+   245 0001:00150511   246 0001:0015053E   248 0001:00150554   249 0001:00150561
+   250 0001:00150574   252 0001:00150581   253 0001:00150585   254 0001:00150594
+   256 0001:001505C0   257 0001:001505EA   259 0001:001505EC   246 0001:001505ED
+   260 0001:001505F4   261 0001:001505FA   262 0001:00150627   239 0001:0015062A
+   264 0001:00150633   267 0001:0015069C   268 0001:001506B6   270 0001:001506BE
+   271 0001:001506CB   272 0001:001506DA   273 0001:001506E7   274 0001:001506F4
+   275 0001:00150701   278 0001:00150713   280 0001:00150719   281 0001:00150726
+   282 0001:00150735   284 0001:00150744   285 0001:00150751   286 0001:0015075A
+   287 0001:00150763   291 0001:00150786   292 0001:00150793   293 0001:001507A0
+   294 0001:001507AD   297 0001:001507BA   303 0001:00150820   306 0001:00150840
+   307 0001:00150848   308 0001:0015085B   309 0001:0015086E   310 0001:00150881
+   311 0001:00150894   312 0001:001508A7   313 0001:001508BA   314 0001:001508CD
+   315 0001:001508E0   316 0001:001508F3   317 0001:00150906   318 0001:00150919
+   319 0001:0015092C   320 0001:0015093F   321 0001:0015094E   322 0001:0015095D
+   323 0001:0015096E   324 0001:00150975   325 0001:00150978   326 0001:00150987
+   327 0001:00150996   328 0001:001509A5   329 0001:001509BB   330 0001:001509D1
+   331 0001:001509E5   332 0001:001509F1   333 0001:001509F7   334 0001:00150A08
+   335 0001:00150A15   336 0001:00150A28   338 0001:00150A3A   339 0001:00150A50
+   341 0001:00150A66   343 0001:00150A87   344 0001:00150AB1   345 0001:00150ACF
+   341 0001:00150AD2   347 0001:00150AD7   353 0001:00150BD0   354 0001:00150BFD
+   356 0001:00150C0C   357 0001:00150C13   358 0001:00150C27   360 0001:00150C3E
+   361 0001:00150C4B   362 0001:00150C5E   363 0001:00150C71   364 0001:00150C7B
+   365 0001:00150CAA   358 0001:00150CAD   366 0001:00150CB2   367 0001:00150CBE
+   369 0001:00150CE0   370 0001:00150CF4   371 0001:00150D07   373 0001:00150D19
+   374 0001:00150D26   375 0001:00150D39   376 0001:00150D4C   378 0001:00150D59
+   379 0001:00150D68   380 0001:00150D7B   382 0001:00150D7D   371 0001:00150D7E
+   383 0001:00150D81   367 0001:00150D84   385 0001:00150D8D   391 0001:00150DD8
+   392 0001:00150DF4   393 0001:00150E02   395 0001:00150E14   396 0001:00150E20
+   397 0001:00150E3E   398 0001:00150E51   399 0001:00150E5D   393 0001:00150E5E
+   400 0001:00150E63   407 0001:00150E94   408 0001:00150EC3   409 0001:00150ECB
+   410 0001:00150EDA   412 0001:00150EEC   413 0001:00150EF9   415 0001:00150F19
+   416 0001:00150F39   418 0001:00150F3B   410 0001:00150F3C   419 0001:00150F3F
+   421 0001:00150F47   423 0001:00150F59   424 0001:00150F66   426 0001:00150F91
+   427 0001:00150FB1   429 0001:00150FB3   421 0001:00150FB4   431 0001:00150FB7
+   432 0001:00150FBF   437 0001:00150FF8   438 0001:00151014   439 0001:00151026
+   440 0001:0015103E   441 0001:00151056   442 0001:00151076   441 0001:001510B7
+   443 0001:001510BA   448 0001:001510E4   449 0001:001510EC   450 0001:00151104
+   449 0001:0015111B   451 0001:0015111E   454 0001:00151124   455 0001:0015113A
+   456 0001:00151147   457 0001:00151164   458 0001:0015116B   464 0001:0015118C
+   465 0001:001511B1   466 0001:001511B9   467 0001:001511C1   468 0001:001511DD
+   470 0001:001511EE   471 0001:0015122D   472 0001:0015123A   467 0001:0015123B
+   473 0001:00151240   474 0001:0015124D   475 0001:00151255   477 0001:00151271
+   478 0001:00151279   479 0001:001512B3   480 0001:001512BE   475 0001:001512BF
+   481 0001:001512C4   482 0001:001512ED   483 0001:001512FA   484 0001:00151320
+   485 0001:00151346   486 0001:00151353   487 0001:00151379   488 0001:001513AD
+   489 0001:001513FF   490 0001:0015145D   491 0001:00151468   497 0001:001514F4
+   498 0001:00151516   499 0001:00151520   501 0001:00151530   502 0001:00151544
+   503 0001:00151557   504 0001:0015156A   505 0001:00151597   506 0001:001515C4
+   507 0001:001515F1   508 0001:0015161E   509 0001:00151635   510 0001:0015164C
+   511 0001:00151663   512 0001:00151684   513 0001:001516A5   515 0001:001516C5
+   516 0001:001516EF   517 0001:0015170D   513 0001:00151710   518 0001:00151713
+   519 0001:00151733   518 0001:00151746   520 0001:00151749   522 0001:0015174E
+   523 0001:0015175F   524 0001:00151773   525 0001:00151797   527 0001:001517D2
+   528 0001:001517FC   529 0001:00151818   531 0001:0015183B   532 0001:0015184A
+   533 0001:0015184C   528 0001:0015184D   534 0001:00151852   535 0001:00151854
+   524 0001:00151857   536 0001:0015185E   520 0001:00151861   537 0001:0015186E
+   542 0001:001518A4   543 0001:001518BE   545 0001:001518C4   546 0001:001518F7
+   547 0001:0015190E   548 0001:0015191D   549 0001:0015192D   550 0001:0015193C
+   551 0001:0015194C   552 0001:0015195B   553 0001:00151969   554 0001:00151980
+   555 0001:0015198F   557 0001:0015199D   563 0001:001519F8   564 0001:00151A28
+   566 0001:00151A46   567 0001:00151A72   569 0001:00151A7F   570 0001:00151A93
+   572 0001:00151A95   564 0001:00151A96   573 0001:00151A99   578 0001:00151ACC
+   579 0001:00151AEB   580 0001:00151AF3   581 0001:00151B02   582 0001:00151B0A
+   583 0001:00151B17   584 0001:00151B31   586 0001:00151B49   587 0001:00151B57
+   589 0001:00151B5C   590 0001:00151B66   592 0001:00151B6E   593 0001:00151B7B
+   595 0001:00151B8E   597 0001:00151B96   598 0001:00151BA3   600 0001:00151BB6
+   602 0001:00151BCF   603 0001:00151BF3   607 0001:00151C19   608 0001:00151C3D
+   610 0001:00151C61   614 0001:00151D80   616 0001:00151D96   617 0001:00151DC2
+   622 0001:00151DE4   623 0001:00151E06   624 0001:00151E13   625 0001:00151E1A
+   627 0001:00151E36   628 0001:00151E3B   629 0001:00151E66   630 0001:00151E82
+   632 0001:00151E9A   634 0001:00151EB6   635 0001:00151EBB   636 0001:00151EE6
+   637 0001:00151F02   639 0001:00151F1A   640 0001:00151F25   643 0001:00151FD4
+   644 0001:00151FF5   645 0001:00151FFB   647 0001:0015200B   648 0001:0015202A
+   650 0001:0015203A   652 0001:0015208C   653 0001:001520B2   654 0001:001520CB
+   655 0001:001520EA   657 0001:001520F5   662 0001:00152158   664 0001:0015215D
+   665 0001:0015216B   667 0001:0015216C   669 0001:00152179   670 0001:0015217C
+   672 0001:00152181   676 0001:00152184   678 0001:0015219A   679 0001:001521C6
+   683 0001:001521E8   685 0001:001521FE   686 0001:0015222A   691 0001:0015224C
+   692 0001:0015226E   693 0001:0015227B   694 0001:00152282   696 0001:0015229E
+   697 0001:001522A3   698 0001:001522CE   699 0001:001522EA   701 0001:00152302
+   702 0001:0015231E   704 0001:00152336   705 0001:0015233B   706 0001:00152366
+   707 0001:00152382   709 0001:0015239A   710 0001:001523A5   711 0001:001523BA
+   716 0001:00152474   717 0001:00152496   718 0001:001524A3   719 0001:001524AA
+   721 0001:001524C6   722 0001:001524CB   723 0001:001524F6   724 0001:00152512
+   726 0001:0015252A   727 0001:00152546   729 0001:0015255E   730 0001:00152563
+   731 0001:0015258E   732 0001:001525AA   734 0001:001525C2   735 0001:001525CD
+   736 0001:001525E2   739 0001:0015269C   740 0001:001526BE   741 0001:001526C4
+   743 0001:001526D4   744 0001:001526F3   746 0001:00152703   748 0001:0015275A
+   749 0001:00152780   750 0001:00152799   751 0001:001527B8   753 0001:001527C5
+   755 0001:001527F9   756 0001:0015280D   758 0001:00152818   761 0001:0015288C
+   762 0001:001528AE   763 0001:001528B4   765 0001:001528C4   766 0001:001528E3
+   768 0001:001528F3   770 0001:0015294A   771 0001:00152970   772 0001:00152989
+   773 0001:001529A8   775 0001:001529B5   777 0001:001529E9   778 0001:001529FD
+   780 0001:00152A08   784 0001:00152A7C   785 0001:00152A82   786 0001:00152A97
+   788 0001:00152A9C   789 0001:00152AAC   791 0001:00152AAF   793 0001:00152ABC
+   794 0001:00152ABF   795 0001:00152AC4   797 0001:00152AC7   798 0001:00152ADC
+   802 0001:00152AF8   803 0001:00152AFE   804 0001:00152B13   806 0001:00152B18
+   807 0001:00152B28   809 0001:00152B2B   811 0001:00152B38   812 0001:00152B3B
+   813 0001:00152B40   815 0001:00152B43   816 0001:00152B58   822 0001:00152B74
+   823 0001:00152B85   824 0001:00152B93   829 0001:00152B94   830 0001:00152B99
+   831 0001:00152BB3   830 0001:00152BC4   832 0001:00152BC7   833 0001:00152BDC
+   834 0001:00152BF1   835 0001:00152C06   836 0001:00152C1B   837 0001:00152C30
+   838 0001:00152C45   839 0001:00152C5A   840 0001:00152C6F   841 0001:00152C84
+   842 0001:00152C99   843 0001:00152CAE   844 0001:00152CC3   845 0001:00152CD8
+   846 0001:00152CED   847 0001:00152D02   848 0001:00152D17   849 0001:00152D2C
+   850 0001:00152D41   851 0001:00152D56   852 0001:00152D6B   853 0001:00152D80
+   854 0001:00152D95   855 0001:00152DAA   856 0001:00152DBF   857 0001:00152DD4
+   858 0001:00152DE9   859 0001:00152DFE   860 0001:00152E13   861 0001:00152E28
+   862 0001:00152E3D   863 0001:00152E52   864 0001:00152E67   868 0001:00153764
+   870 0001:0015376A   871 0001:0015376F   872 0001:00153774   876 0001:00153783
+   877 0001:00153788   882 0001:001537E4   883 0001:001537F5   885 0001:00153824
+
+Line numbers for fGraphs(fGraphs.pas) segment .text
+
+   464 0001:00154C4C   465 0001:00154C68   466 0001:00154C73   467 0001:00154C7B
+   469 0001:00154C8A   470 0001:00154C98   471 0001:00154CA6   472 0001:00154CB3
+   473 0001:00154CBA   475 0001:00154CBF   476 0001:00154CC9   477 0001:00154CDC
+   478 0001:00154CEC   480 0001:00154CEE   481 0001:00154CFE   482 0001:00154D0E
+   483 0001:00154D38   484 0001:00154D46   485 0001:00154D54   478 0001:00154D55
+   486 0001:00154D5D   487 0001:00154D6A   488 0001:00154D77   489 0001:00154D8D
+   490 0001:00154DA3   491 0001:00154DB9   492 0001:00154DCF   495 0001:00154DD6
+   496 0001:00154DDD   497 0001:00154DEE   498 0001:00154DFF   501 0001:00154EB0
+   502 0001:00154ED7   503 0001:00154EDE   504 0001:00154EEC   505 0001:00154F00
+   506 0001:00154F07   507 0001:00154F0E   508 0001:00154F15   509 0001:00154F1C
+   510 0001:00154F23   511 0001:00154F31   512 0001:00154F38   513 0001:00154F4B
+   514 0001:00154F5A   515 0001:00154F72   516 0001:00154F79   517 0001:00154F80
+   518 0001:00154F87   519 0001:00154F8E   520 0001:00154FB0   521 0001:00154FC8
+   522 0001:00154FCF   523 0001:00154FD9   524 0001:00154FE0   525 0001:00154FEA
+   526 0001:00154FF4   527 0001:00154FFF   528 0001:00155006   529 0001:00155018
+   530 0001:0015502A   531 0001:00155038   532 0001:0015504C   533 0001:00155053
+   534 0001:0015505A   535 0001:0015506A   536 0001:00155078   537 0001:00155086
+   543 0001:001550B0   544 0001:001550CC   545 0001:001550D4   546 0001:001550E7
+   548 0001:001550E9   549 0001:001550F9   550 0001:00155109   551 0001:00155133
+   552 0001:00155141   546 0001:00155142   553 0001:0015514A   559 0001:0015518C
+   560 0001:001551AF   561 0001:001551B6   562 0001:001551BD   563 0001:001551CC
+   565 0001:001551DD   566 0001:001551F2   568 0001:00155205   569 0001:00155218
+   570 0001:0015522B   573 0001:0015523F   574 0001:0015524A   575 0001:00155261
+   577 0001:00155296   578 0001:001552A6   579 0001:001552A8   574 0001:001552A9
+   580 0001:001552AE   581 0001:001552C0   583 0001:001552C9   585 0001:001552DD
+   586 0001:001552ED   588 0001:001552F6   589 0001:00155301   590 0001:00155318
+   592 0001:0015534D   593 0001:0015535D   594 0001:0015535F   589 0001:00155360
+   595 0001:00155365   596 0001:00155377   599 0001:00155380   600 0001:0015538B
+   601 0001:00155394   603 0001:00155396   604 0001:001553A7   606 0001:001553B2
+   607 0001:001553BB   608 0001:001553CC   610 0001:001553D7   611 0001:001553E0
+   616 0001:00155418   622 0001:0015541C   623 0001:0015543F   624 0001:0015544C
+   625 0001:00155459   626 0001:00155466   627 0001:00155473   628 0001:00155483
+   629 0001:00155493   630 0001:001554A1   631 0001:001554CC   632 0001:001554DA
+   633 0001:001554FC   635 0001:00155505   637 0001:00155519   639 0001:0015555F
+   640 0001:001555A0   642 0001:001555BB   643 0001:001555CD   644 0001:001555EF
+   645 0001:0015561B   640 0001:0015561E   648 0001:00155621   650 0001:00155635
+   651 0001:00155676   652 0001:00155691   651 0001:001556D2   654 0001:001556D5
+   656 0001:001556E9   657 0001:0015572A   658 0001:00155745   657 0001:00155786
+   660 0001:00155789   662 0001:00155798   663 0001:001557B5   668 0001:001559EC
+   669 0001:00155A17   670 0001:00155A2A   671 0001:00155A42   672 0001:00155A50
+   674 0001:00155A64   675 0001:00155AA5   676 0001:00155ABF   677 0001:00155B49
+   675 0001:00155B4A   679 0001:00155B51   683 0001:00155C30   684 0001:00155C40
+   685 0001:00155C51   688 0001:00155C54   689 0001:00155C57   690 0001:00155C65
+   691 0001:00155C6C   692 0001:00155C73   693 0001:00155C7C   695 0001:00155C88
+   696 0001:00155C8F   698 0001:00155C98   699 0001:00155C9F   700 0001:00155CA6
+   705 0001:00155CAF   706 0001:00155CBF   707 0001:00155CC8   709 0001:00155CD1
+   710 0001:00155CD8   711 0001:00155CDF   714 0001:00155CE6   715 0001:00155CED
+   716 0001:00155CF6   717 0001:00155CFF   719 0001:00155D14   721 0001:00155D25
+   722 0001:00155D31   723 0001:00155D3A   724 0001:00155D47   725 0001:00155D54
+   728 0001:00155D58   729 0001:00155D71   730 0001:00155D7E   732 0001:00155D96
+   733 0001:00155DAC   734 0001:00155DBB   735 0001:00155DD6   738 0001:00155E00
+   739 0001:00155E03   741 0001:00155E0F   742 0001:00155E16   743 0001:00155E23
+   744 0001:00155E2A   745 0001:00155E38   750 0001:00155E3C   751 0001:00155E48
+   752 0001:00155E5C   753 0001:00155E73   754 0001:00155E8D   755 0001:00155EA7
+   758 0001:00155EB0   759 0001:00155EE6   761 0001:00155F03   763 0001:00155F0B
+   764 0001:00155F1E   767 0001:00155F34   769 0001:00155F51   771 0001:00155F59
+   772 0001:00155F6F   773 0001:00155F80   776 0001:00155F95   777 0001:00155FB2
+   778 0001:00155FD2   779 0001:00155FEF   780 0001:0015600D   787 0001:00156078
+   788 0001:0015609B   789 0001:001560AA   790 0001:001560B7   792 0001:001560D2
+   793 0001:001560E0   794 0001:001560F3   795 0001:00156106   797 0001:00156119
+   798 0001:00156138   799 0001:00156157   800 0001:00156177   801 0001:00156197
+   803 0001:001561A7   805 0001:001561B6   806 0001:001561C5   809 0001:001561D1
+   810 0001:001561DF   811 0001:001561ED   812 0001:001561FE   816 0001:00156211
+   819 0001:0015622D   821 0001:00156247   790 0001:0015624A   822 0001:00156251
+   823 0001:00156259   828 0001:001562C8   829 0001:001562EA   830 0001:0015630A
+   831 0001:0015632D   832 0001:00156351   833 0001:00156375   836 0001:001563A0
+   837 0001:001563EE   838 0001:00156405   839 0001:00156427   840 0001:0015643F
+   842 0001:00156458   843 0001:00156465   844 0001:00156487   845 0001:001564A6
+   846 0001:001564E0   847 0001:001564FF   848 0001:00156539   855 0001:001565CC
+   856 0001:001565E9   857 0001:001565F8   859 0001:00156608   860 0001:00156618
+   861 0001:00156628   862 0001:00156636   863 0001:00156644   864 0001:00156650
+   866 0001:0015665F   867 0001:00156697   870 0001:001566B7   871 0001:001566D5
+   872 0001:001566DD   873 0001:001566E5   877 0001:00156764   878 0001:00156769
+   891 0001:0015676C   892 0001:001567A5   893 0001:001567B1   894 0001:001567B5
+   895 0001:001567C1   896 0001:001567C7   898 0001:001567CD   899 0001:001567D3
+   900 0001:001567D9   901 0001:001567DF   902 0001:001567E5   903 0001:001567EC
+   904 0001:0015681D   906 0001:0015682E   907 0001:0015683D   908 0001:0015684B
+   909 0001:00156870   910 0001:0015687A   911 0001:00156892   912 0001:0015689E
+   913 0001:001568BC   914 0001:001568D3   915 0001:001568EC   916 0001:00156901
+   917 0001:00156908   918 0001:00156912   920 0001:0015692C   921 0001:0015693C
+   923 0001:00156961   924 0001:00156986   926 0001:0015698F   927 0001:001569B2
+   928 0001:001569D1   931 0001:001569D5   932 0001:001569DB   933 0001:00156A0A
+   935 0001:00156A2C   936 0001:00156A4E   918 0001:00156A4F   937 0001:00156A58
+   938 0001:00156A5E   939 0001:00156A64   940 0001:00156A6C   941 0001:00156A72
+   942 0001:00156A7A   943 0001:00156A80   944 0001:00156A88   945 0001:00156A8E
+   946 0001:00156A96   947 0001:00156A9C   948 0001:00156AA5   949 0001:00156AA9
+   951 0001:00156AAF   953 0001:00156AB8   954 0001:00156ABF   956 0001:00156AD1
+   958 0001:00156AE2   960 0001:00156AF4   962 0001:00156B05   965 0001:00156B9C
+   966 0001:00156B9F   968 0001:00156BB1   969 0001:00156BCC   973 0001:00156BD7
+   974 0001:00156BE5   975 0001:00156BEE   977 0001:00156BFE   979 0001:00156C19
+   980 0001:00156C22   981 0001:00156C47   987 0001:00156C4C   988 0001:00156C6F
+   989 0001:00156C80   990 0001:00156C91   991 0001:00156CA2   992 0001:00156CB3
+   993 0001:00156CC0   995 0001:00156CCD   997 0001:00156CE4   998 0001:00156D04
+   999 0001:00156D11  1000 0001:00156D31  1001 0001:00156D5A   995 0001:00156D5B
+  1002 0001:00156D60  1003 0001:00156D7D  1004 0001:00156D8A  1005 0001:00156D97
+  1007 0001:00156DA0  1008 0001:00156DBA  1010 0001:00156DC1  1012 0001:00156DCA
+  1013 0001:00156DE4  1015 0001:00156DEB  1016 0001:00156DF1  1018 0001:00156DF7
+  1019 0001:00156E12  1020 0001:00156E2D  1021 0001:00156E34  1023 0001:00156E3B
+  1024 0001:00156E4C  1025 0001:00156E5D  1032 0001:00156E94  1033 0001:00156EB7
+  1034 0001:00156ECC  1035 0001:00156EE1  1036 0001:00156EF2  1037 0001:00156F03
+  1038 0001:00156F10  1039 0001:00156F1D  1041 0001:00156F44  1042 0001:00156F54
+  1043 0001:00156F6C  1044 0001:00156F7C  1045 0001:00156F94  1046 0001:00156FA4
+  1047 0001:00156FBC  1048 0001:00156FCC  1049 0001:00156FE4  1050 0001:00156FF4
+  1051 0001:0015700C  1053 0001:0015702B  1054 0001:0015705B  1055 0001:0015706E
+  1056 0001:00157081  1057 0001:00157094  1058 0001:001570A7  1059 0001:001570BA
+  1061 0001:001570CC  1062 0001:00157109  1064 0001:00157121  1065 0001:0015712E
+  1066 0001:00157153  1069 0001:00157181  1051 0001:00157184  1071 0001:00157190
+  1073 0001:001571AF  1075 0001:001571CA  1076 0001:001571EF  1078 0001:001571FD
+  1080 0001:00157213  1073 0001:00157216  1082 0001:00157219  1083 0001:00157236
+  1084 0001:0015723D  1090 0001:001572BC  1091 0001:001572DA  1092 0001:001572E7
+  1093 0001:001572F4  1094 0001:001572F9  1096 0001:00157302  1097 0001:0015731C
+  1099 0001:00157323  1101 0001:0015732C  1102 0001:00157346  1104 0001:0015734D
+  1105 0001:00157353  1107 0001:0015735A  1108 0001:0015735D  1109 0001:00157379
+  1110 0001:00157394  1111 0001:0015739B  1113 0001:001573A2  1115 0001:001573B7
+  1116 0001:001573DA  1117 0001:001573E9  1118 0001:0015740D  1119 0001:0015742A
+  1120 0001:00157447  1122 0001:0015744E  1124 0001:00157463  1125 0001:00157486
+  1126 0001:00157495  1127 0001:001574B9  1128 0001:001574D6  1129 0001:001574F3
+  1131 0001:001574FA  1137 0001:0015753C  1138 0001:0015756B  1139 0001:00157596
+  1140 0001:001575A4  1142 0001:001575B8  1144 0001:001575D8  1145 0001:001575EA
+  1146 0001:00157608  1147 0001:00157622  1148 0001:0015769A  1146 0001:001576CC
+  1149 0001:001576D3  1150 0001:001576E6  1152 0001:00157700  1153 0001:00157724
+  1154 0001:00157744  1155 0001:0015775F  1156 0001:00157790  1150 0001:00157791
+  1157 0001:00157798  1142 0001:0015779B  1158 0001:001577A4  1159 0001:001577B8
+  1166 0001:001577FC  1167 0001:0015783F  1168 0001:00157852  1169 0001:00157867
+  1170 0001:00157887  1171 0001:0015789A  1174 0001:001578AA  1175 0001:001578B4
+  1176 0001:001578BF  1177 0001:001578C9  1178 0001:001578D4  1179 0001:001578E2
+  1180 0001:001578ED  1182 0001:001578F9  1189 0001:0015793C  1190 0001:0015796F
+  1191 0001:00157973  1192 0001:00157983  1193 0001:0015799D  1195 0001:001579D0
+  1196 0001:00157A0C  1197 0001:00157A1B  1198 0001:00157A27  1200 0001:00157A33
+  1201 0001:00157A37  1203 0001:00157A39  1192 0001:00157A3A  1204 0001:00157A41
+  1210 0001:00157A90  1211 0001:00157AC2  1212 0001:00157ACA  1214 0001:00157AE0
+  1215 0001:00157AF1  1217 0001:00157B11  1218 0001:00157B35  1220 0001:00157B37
+  1212 0001:00157B38  1221 0001:00157B3B  1223 0001:00157B43  1225 0001:00157B59
+  1226 0001:00157B6A  1228 0001:00157B95  1229 0001:00157BB9  1231 0001:00157BBB
+  1223 0001:00157BBC  1233 0001:00157BBF  1239 0001:00157BF8  1240 0001:00157C26
+  1241 0001:00157C2E  1243 0001:00157C44  1244 0001:00157C55  1246 0001:00157C75
+  1247 0001:00157C80  1249 0001:00157C82  1241 0001:00157C83  1250 0001:00157C86
+  1252 0001:00157C8E  1254 0001:00157CA4  1255 0001:00157CB5  1257 0001:00157CE0
+  1258 0001:00157CEB  1260 0001:00157CED  1252 0001:00157CEE  1262 0001:00157CF1
+  1268 0001:00157D28  1269 0001:00157D62  1270 0001:00157D6A  1271 0001:00157D80
+  1272 0001:00157D96  1274 0001:00157DAC  1275 0001:00157DC8  1278 0001:00157E08
+  1279 0001:00157E1B  1281 0001:00157E1D  1272 0001:00157E1E  1282 0001:00157E21
+  1287 0001:00157E4C  1288 0001:00157E50  1290 0001:00157E5D  1291 0001:00157E6C
+  1293 0001:00157E79  1294 0001:00157E91  1296 0001:00157E9E  1297 0001:00157EAE
+  1298 0001:00157EC6  1300 0001:00157ECF  1301 0001:00157EDF  1302 0001:00157EE7
+  1303 0001:00157EFF  1304 0001:00157F08  1305 0001:00157F12  1309 0001:00157F26
+  1310 0001:00157F2F  1311 0001:00157F56  1313 0001:00157F5F  1314 0001:00157F66
+  1315 0001:00157F6D  1317 0001:00157F74  1318 0001:00157F7B  1324 0001:00157F80
+  1325 0001:00157F9E  1326 0001:00157FAA  1327 0001:00157FCC  1328 0001:00157FD3
+  1329 0001:00157FE4  1331 0001:00157FFB  1332 0001:0015800C  1333 0001:0015802A
+  1334 0001:0015803D  1335 0001:0015804E  1329 0001:0015804F  1336 0001:00158054
+  1337 0001:0015805F  1338 0001:0015806A  1339 0001:00158075  1340 0001:00158080
+  1341 0001:0015808B  1342 0001:00158096  1343 0001:001580A4  1344 0001:001580AF
+  1345 0001:001580BA  1346 0001:001580C5  1347 0001:001580D0  1348 0001:001580DB
+  1349 0001:001580EC  1350 0001:001580FD  1351 0001:0015811F  1352 0001:0015812A
+  1353 0001:00158131  1354 0001:00158138  1355 0001:00158144  1356 0001:0015814B
+  1357 0001:00158152  1358 0001:00158159  1359 0001:00158160  1360 0001:00158169
+  1362 0001:00158170  1364 0001:00158180  1366 0001:00158197  1367 0001:001581BB
+  1368 0001:001581C9  1369 0001:001581E8  1364 0001:001581E9  1371 0001:001581EE
+  1378 0001:00158224  1379 0001:00158249  1381 0001:00158257  1382 0001:00158263
+  1383 0001:0015826D  1384 0001:00158279  1385 0001:0015828E  1386 0001:0015829D
+  1388 0001:001582B5  1389 0001:001582C3  1390 0001:001582CF  1391 0001:001582E4
+  1393 0001:001582F7  1394 0001:001582FD  1395 0001:00158308  1396 0001:0015831B
+  1397 0001:0015832E  1398 0001:0015834B  1399 0001:00158360  1401 0001:0015836C
+  1402 0001:0015837B  1403 0001:00158386  1386 0001:00158387  1404 0001:00158390
+  1410 0001:001583D0  1411 0001:001583FD  1413 0001:00158409  1414 0001:0015840D
+  1416 0001:0015840F  1417 0001:00158413  1419 0001:0015842B  1420 0001:00158451
+  1422 0001:0015845E  1423 0001:00158462  1425 0001:00158464  1417 0001:00158465
+  1426 0001:00158468  1432 0001:001584A0  1433 0001:001584CA  1434 0001:001584CE
+  1436 0001:001584E4  1437 0001:00158507  1438 0001:0015852A  1440 0001:00158537
+  1441 0001:0015854A  1443 0001:0015854C  1434 0001:0015854D  1444 0001:00158552
+  1449 0001:00158598  1450 0001:001585B4  1451 0001:001585CF  1453 0001:001585D5
+  1454 0001:001585F1  1456 0001:00158604  1457 0001:0015862A  1459 0001:00158650
+  1460 0001:00158664  1462 0001:0015867B  1464 0001:0015868C  1471 0001:001586CC
+  1472 0001:0015870A  1473 0001:00158721  1474 0001:00158725  1476 0001:0015873D
+  1477 0001:00158763  1479 0001:00158770  1480 0001:00158774  1482 0001:00158776
+  1474 0001:00158777  1483 0001:0015877A  1485 0001:00158780  1486 0001:0015878E
+  1487 0001:001587BF  1489 0001:001587DE  1495 0001:0015882C  1496 0001:00158866
+  1497 0001:0015887D  1499 0001:00158893  1500 0001:001588B6  1502 0001:001588C3
+  1503 0001:001588D0  1504 0001:00158900  1506 0001:00158902  1497 0001:00158903
+  1507 0001:00158908  1519 0001:00158958  1520 0001:00158984  1521 0001:0015898B
+  1522 0001:001589A2  1524 0001:001589B1  1525 0001:001589C0  1526 0001:001589CF
+  1527 0001:001589E1  1531 0001:001589F5  1532 0001:00158A04  1533 0001:00158A13
+  1534 0001:00158A25  1536 0001:00158A37  1538 0001:00158A49  1540 0001:00158A52
+  1541 0001:00158A5B  1542 0001:00158A76  1544 0001:00158A7B  1545 0001:00158A82
+  1547 0001:00158A8E  1546 0001:00158A9D  1548 0001:00158AA9  1549 0001:00158ABB
+  1550 0001:00158AC5  1552 0001:00158AF8  1553 0001:00158B23  1555 0001:00158B28
+  1556 0001:00158B38  1557 0001:00158B48  1558 0001:00158B52  1559 0001:00158B59
+  1561 0001:00158B6D  1562 0001:00158B7E  1563 0001:00158B9E  1564 0001:00158BAC
+  1559 0001:00158BAD  1565 0001:00158BB2  1566 0001:00158BC1  1568 0001:00158BD8
+  1569 0001:00158BED  1570 0001:00158BFA  1573 0001:00158C48  1574 0001:00158C52
+  1575 0001:00158C59  1576 0001:00158C77  1578 0001:00158CC1  1580 0001:00158CD6
+  1581 0001:00158CE3  1582 0001:00158CEF  1583 0001:00158D02  1584 0001:00158D0B
+  1585 0001:00158D18  1586 0001:00158D2D  1587 0001:00158D3A  1588 0001:00158D47
+  1590 0001:00158D61  1591 0001:00158D6A  1594 0001:00158E1C  1595 0001:00158E1F
+  1596 0001:00158E2F  1597 0001:00158E3B  1599 0001:00158E44  1600 0001:00158E5F
+  1601 0001:00158E6B  1603 0001:00158E72  1604 0001:00158E80  1607 0001:00158E94
+  1608 0001:00158E97  1609 0001:00158EA7  1610 0001:00158EB3  1612 0001:00158EBC
+  1613 0001:00158ED7  1614 0001:00158EE3  1616 0001:00158EEA  1617 0001:00158EF8
+  1623 0001:00158F10  1624 0001:00158F1A  1626 0001:00158F2C  1627 0001:00158F38
+  1629 0001:00158F4B  1630 0001:00158F54  1631 0001:00158F5F  1632 0001:00158F78
+  1634 0001:00158F91  1624 0001:00158F92  1635 0001:00158F95  1638 0001:00158F9C
+  1639 0001:00158FA0  1641 0001:00158FA6  1642 0001:00158FB9  1643 0001:00158FCE
+  1644 0001:00158FE5  1645 0001:00158FF1  1646 0001:00159008  1647 0001:0015901D
+  1648 0001:00159034  1649 0001:00159048  1650 0001:0015906B  1651 0001:0015907F
+  1653 0001:001590A2  1654 0001:001590AF  1655 0001:001590BC  1665 0001:001590C4
+  1666 0001:001590EA  1667 0001:001590FF  1668 0001:0015910F  1670 0001:0015911D
+  1672 0001:00159123  1673 0001:0015912B  1674 0001:00159143  1675 0001:0015915B
+  1676 0001:00159179  1678 0001:00159197  1679 0001:001591AC  1680 0001:001591B8
+  1681 0001:001591D0  1683 0001:001591E5  1684 0001:001591F5  1685 0001:00159218
+  1681 0001:00159219  1686 0001:0015921C  1687 0001:00159235  1689 0001:0015924A
+  1690 0001:0015925A  1691 0001:0015927D  1687 0001:0015927E  1692 0001:00159281
+  1693 0001:0015929A  1695 0001:001592AF  1696 0001:001592EB  1697 0001:001592FA
+  1698 0001:00159307  1699 0001:0015930E  1701 0001:00159321  1710 0001:00159360
+  1711 0001:0015936B  1712 0001:00159380  1713 0001:0015938F  1714 0001:00159396
+  1715 0001:001593A3  1716 0001:001593AF  1718 0001:001593BB  1719 0001:001593C4
+  1720 0001:001593D9  1721 0001:001593EE  1722 0001:00159409  1724 0001:00159424
+  1725 0001:00159438  1726 0001:00159446  1727 0001:00159464  1729 0001:00159479
+  1730 0001:00159488  1731 0001:001594AE  1727 0001:001594AF  1732 0001:001594B2
+  1733 0001:001594CF  1735 0001:001594E4  1736 0001:001594F3  1737 0001:00159519
+  1733 0001:0015951A  1738 0001:0015951D  1739 0001:0015953A  1741 0001:00159543
+  1742 0001:0015954A  1743 0001:0015955A  1745 0001:00159567  1751 0001:00159570
+  1752 0001:0015957D  1754 0001:00159583  1755 0001:0015958C  1756 0001:0015959D
+  1757 0001:001595AE  1758 0001:001595BB  1759 0001:001595C8  1760 0001:001595DA
+  1761 0001:001595EE  1762 0001:001595FC  1763 0001:00159605  1764 0001:0015960E
+  1766 0001:00159614  1767 0001:00159626  1768 0001:00159632  1769 0001:00159644
+  1770 0001:00159650  1771 0001:00159662  1774 0001:0015966B  1775 0001:0015967D
+  1776 0001:0015968F  1777 0001:001596A3  1778 0001:001596B7  1779 0001:001596DE
+  1786 0001:00159754  1787 0001:00159778  1789 0001:0015978D  1791 0001:001597AA
+  1792 0001:001597C1  1793 0001:001597CC  1795 0001:001597DB  1796 0001:001597ED
+  1797 0001:001597FF  1798 0001:00159810  1799 0001:00159827  1801 0001:00159850
+  1803 0001:0015985F  1804 0001:00159871  1805 0001:00159883  1806 0001:00159894
+  1808 0001:001598BD  1810 0001:001598CC  1811 0001:001598DD  1812 0001:001598E9
+  1813 0001:001598FA  1814 0001:00159907  1815 0001:0015991E  1817 0001:00159949
+  1818 0001:00159956  1820 0001:00159958  1787 0001:00159959  1821 0001:00159960
+  1824 0001:001599D4  1825 0001:001599EB  1827 0001:001599EE  1829 0001:001599FA
+  1830 0001:00159A02  1831 0001:00159A28  1832 0001:00159A3B  1836 0001:00159A4A
+  1837 0001:00159A57  1843 0001:00159A90  1844 0001:00159AB5  1845 0001:00159ABC
+  1847 0001:00159AE5  1846 0001:00159AF3  1848 0001:00159AFE  1849 0001:00159B08
+  1851 0001:00159B14  1852 0001:00159B2A  1856 0001:00159B42  1857 0001:00159B56
+  1859 0001:00159B6A  1860 0001:00159B79  1862 0001:00159B88  1863 0001:00159B95
+  1864 0001:00159BA5  1865 0001:00159BB2  1869 0001:00159BC1  1870 0001:00159BCE
+  1871 0001:00159BDE  1872 0001:00159BEB  1876 0001:00159BF8  1877 0001:00159C0C
+  1879 0001:00159C17  1880 0001:00159C19  1881 0001:00159C1D  1882 0001:00159C22
+  1883 0001:00159C35  1885 0001:00159C3A  1886 0001:00159C43  1887 0001:00159C59
+  1886 0001:00159C6E  1889 0001:00159C71  1890 0001:00159C78  1891 0001:00159C90
+  1892 0001:00159CA8  1893 0001:00159CB1  1894 0001:00159CCF  1895 0001:00159CDC
+  1901 0001:00159D10  1902 0001:00159D56  1904 0001:00159D7D  1905 0001:00159D85
+  1907 0001:00159D9B  1908 0001:00159DAC  1910 0001:00159DEE  1905 0001:00159DEF
+  1911 0001:00159DF2  1912 0001:00159E05  1913 0001:00159E18  1914 0001:00159E32
+  1915 0001:00159E48  1919 0001:00159E5D  1921 0001:00159E7D  1923 0001:00159EC2
+  1932 0001:00159F28  1933 0001:00159F6F  1934 0001:00159F8D  1935 0001:00159F97
+  1937 0001:00159F9F  1938 0001:00159FAF  1939 0001:00159FD0  1940 0001:00159FF1
+  1941 0001:00159FFE  1942 0001:0015A013  1943 0001:0015A023  1944 0001:0015A032
+  1947 0001:0015A03E  1948 0001:0015A04A  1949 0001:0015A053  1950 0001:0015A05C
+  1952 0001:0015A066  1953 0001:0015A078  1954 0001:0015A090  1956 0001:0015A0A2
+  1957 0001:0015A0D6  1960 0001:0015A10E  1961 0001:0015A132  1963 0001:0015A138
+  1964 0001:0015A145  1968 0001:0015A160  1969 0001:0015A16D  1970 0001:0015A17A
+  1971 0001:0015A1B1  1972 0001:0015A1D1  1973 0001:0015A1E7  1974 0001:0015A1FD
+  1975 0001:0015A213  1977 0001:0015A227  1978 0001:0015A230  1935 0001:0015A246
+  1980 0001:0015A24E  1983 0001:0015A278  1984 0001:0015A28B  1986 0001:0015A298
+  1990 0001:0015A310  1991 0001:0015A315  1992 0001:0015A31B  1993 0001:0015A320
+  1994 0001:0015A32A  1995 0001:0015A332  1996 0001:0015A33C  1997 0001:0015A344
+  1998 0001:0015A34E  1999 0001:0015A356  2000 0001:0015A360  2001 0001:0015A368
+  2002 0001:0015A36F  2003 0001:0015A377  2004 0001:0015A37E  2005 0001:0015A386
+  2006 0001:0015A38D  2007 0001:0015A395  2008 0001:0015A39C  2009 0001:0015A3A4
+  2010 0001:0015A3AB  2011 0001:0015A3B3  2012 0001:0015A3BA  2013 0001:0015A3C2
+  2014 0001:0015A3C9  2015 0001:0015A3D1  2016 0001:0015A3D8  2017 0001:0015A3E0
+  2019 0001:0015A3E7  2020 0001:0015A3EC  2024 0001:0015A3F0  2025 0001:0015A3F5
+  2026 0001:0015A3FB  2027 0001:0015A400  2028 0001:0015A407  2029 0001:0015A40F
+  2030 0001:0015A416  2031 0001:0015A41E  2032 0001:0015A425  2033 0001:0015A42D
+  2034 0001:0015A434  2035 0001:0015A43C  2036 0001:0015A443  2037 0001:0015A44B
+  2038 0001:0015A452  2039 0001:0015A45A  2040 0001:0015A461  2041 0001:0015A469
+  2042 0001:0015A470  2043 0001:0015A478  2045 0001:0015A47F  2046 0001:0015A484
+  2054 0001:0015A488  2055 0001:0015A4B5  2056 0001:0015A4BC  2057 0001:0015A4E3
+  2059 0001:0015A4F0  2060 0001:0015A4FA  2061 0001:0015A50D  2062 0001:0015A52E
+  2064 0001:0015A54C  2065 0001:0015A55F  2068 0001:0015A561  2069 0001:0015A574
+  2081 0001:0015A5D4  2082 0001:0015A609  2083 0001:0015A622  2084 0001:0015A626
+  2085 0001:0015A62A  2086 0001:0015A62E  2087 0001:0015A635  2088 0001:0015A65C
+  2089 0001:0015A666  2091 0001:0015A66E  2092 0001:0015A67E  2093 0001:0015A69F
+  2094 0001:0015A6C0  2095 0001:0015A6CC  2096 0001:0015A6FE  2097 0001:0015A703
+  2098 0001:0015A708  2099 0001:0015A70D  2100 0001:0015A712  2102 0001:0015A715
+  2104 0001:0015A718  2105 0001:0015A71C  2108 0001:0015A722  2109 0001:0015A726
+  2089 0001:0015A73C  2111 0001:0015A744  2112 0001:0015A753  2114 0001:0015A765
+  2115 0001:0015A775  2116 0001:0015A783  2117 0001:0015A79E  2118 0001:0015A7AE
+  2121 0001:0015A7BA  2122 0001:0015A7C3  2124 0001:0015A7D6  2125 0001:0015A7E0
+  2126 0001:0015A7FD  2127 0001:0015A80C  2130 0001:0015A83E  2132 0001:0015A86E
+  2133 0001:0015A889  2135 0001:0015A894  2136 0001:0015A8A9  2137 0001:0015A8BF
+  2138 0001:0015A8D3  2140 0001:0015A8DC  2141 0001:0015A8FA  2142 0001:0015A903
+  2143 0001:0015A90C  2144 0001:0015A92A  2145 0001:0015A937  2148 0001:0015A994
+  2149 0001:0015A997  2152 0001:0015A9B2  2153 0001:0015A9C5  2154 0001:0015A9D2
+  2155 0001:0015A9F3  2156 0001:0015AA14  2157 0001:0015AA35  2159 0001:0015AA56
+  2161 0001:0015AA62  2162 0001:0015AA78  2166 0001:0015AA90  2167 0001:0015AAA4
+  2169 0001:0015AAB8  2170 0001:0015AABF  2171 0001:0015AAD7  2172 0001:0015AAEF
+  2180 0001:0015AAFC  2181 0001:0015AB2E  2182 0001:0015AB42  2183 0001:0015AB4C
+  2185 0001:0015AB54  2186 0001:0015AB63  2187 0001:0015AB76  2188 0001:0015AB89
+  2189 0001:0015ABAE  2190 0001:0015ABBB  2191 0001:0015ABCA  2193 0001:0015ABF8
+  2194 0001:0015AC24  2183 0001:0015AC3A  2196 0001:0015AC42  2198 0001:0015AC51
+  2199 0001:0015AC5E  2200 0001:0015AC6E  2201 0001:0015AC7B  2205 0001:0015AC8A
+  2206 0001:0015AC97  2207 0001:0015ACA7  2208 0001:0015ACB4  2210 0001:0015ACC1
+  2218 0001:0015AD08  2219 0001:0015AD3A  2220 0001:0015AD3F  2221 0001:0015AD49
+  2223 0001:0015AD51  2224 0001:0015AD60  2225 0001:0015AD73  2226 0001:0015AD86
+  2227 0001:0015AD9B  2228 0001:0015ADBA  2229 0001:0015ADCD  2221 0001:0015ADE3
+  2231 0001:0015ADEB  2233 0001:0015ADFA  2234 0001:0015AE07  2235 0001:0015AE17
+  2236 0001:0015AE24  2240 0001:0015AE33  2241 0001:0015AE40  2242 0001:0015AE50
+  2243 0001:0015AE5D  2247 0001:0015AE6A  2248 0001:0015AE76  2249 0001:0015AE8C
+  2251 0001:0015AE96  2260 0001:0015AEE4  2261 0001:0015AF19  2262 0001:0015AF26
+  2263 0001:0015AF3F  2264 0001:0015AF49  2266 0001:0015AF51  2267 0001:0015AF60
+  2268 0001:0015AF73  2269 0001:0015AF86  2270 0001:0015AF9B  2271 0001:0015AFA8
+  2273 0001:0015AFB2  2274 0001:0015AFBE  2276 0001:0015AFD6  2277 0001:0015AFFD
+  2278 0001:0015B003  2280 0001:0015B012  2281 0001:0015B01D  2282 0001:0015B03C
+  2284 0001:0015B051  2285 0001:0015B060  2287 0001:0015B08E  2288 0001:0015B0BA
+  2264 0001:0015B0D0  2290 0001:0015B0D8  2292 0001:0015B0E7  2293 0001:0015B0F4
+  2294 0001:0015B101  2295 0001:0015B11C  2296 0001:0015B129  2300 0001:0015B138
+  2301 0001:0015B145  2302 0001:0015B152  2303 0001:0015B16D  2304 0001:0015B17A
+  2308 0001:0015B187  2309 0001:0015B193  2310 0001:0015B1A9  2312 0001:0015B1B3
+  2320 0001:0015B208  2321 0001:0015B227  2322 0001:0015B229  2323 0001:0015B233
+  2325 0001:0015B237  2326 0001:0015B246  2327 0001:0015B259  2329 0001:0015B268
+  2330 0001:0015B26D  2332 0001:0015B26F  2333 0001:0015B27E  2334 0001:0015B27F
+  2336 0001:0015B284  2323 0001:0015B29A  2338 0001:0015B29E  2339 0001:0015B2A2
+  2342 0001:0015B2E8  2345 0001:0015B2EE  2346 0001:0015B2F7  2347 0001:0015B300
+  2348 0001:0015B30C  2349 0001:0015B313  2350 0001:0015B323  2351 0001:0015B333
+  2352 0001:0015B340  2353 0001:0015B350  2354 0001:0015B360  2355 0001:0015B36D
+  2356 0001:0015B37A  2357 0001:0015B387  2358 0001:0015B394  2359 0001:0015B3AA
+  2360 0001:0015B3B3  2361 0001:0015B3BC  2362 0001:0015B3CC  2363 0001:0015B3DC
+  2364 0001:0015B3EC  2365 0001:0015B3FC  2366 0001:0015B40C  2367 0001:0015B41C
+  2368 0001:0015B42C  2369 0001:0015B438  2371 0001:0015B44B  2373 0001:0015B459
+  2376 0001:0015B45C  2379 0001:0015B488  2380 0001:0015B491  2381 0001:0015B49A
+  2382 0001:0015B4B7  2383 0001:0015B4C1  2384 0001:0015B4CF  2385 0001:0015B4E5
+  2386 0001:0015B4EE  2387 0001:0015B4F7  2388 0001:0015B501  2389 0001:0015B50E
+  2390 0001:0015B51B  2391 0001:0015B525  2392 0001:0015B543  2393 0001:0015B550
+  2394 0001:0015B55A  2396 0001:0015B56D  2399 0001:0015B5A0  2402 0001:0015B5A9
+  2403 0001:0015B5B2  2404 0001:0015B5BB  2405 0001:0015B5C4  2406 0001:0015B5CF
+  2407 0001:0015B5DC  2408 0001:0015B5E5  2409 0001:0015B5EE  2410 0001:0015B5F8
+  2411 0001:0015B605  2412 0001:0015B612  2413 0001:0015B61C  2414 0001:0015B63A
+  2415 0001:0015B647  2416 0001:0015B654  2417 0001:0015B661  2418 0001:0015B66E
+  2420 0001:0015B67E  2425 0001:0015B684  2428 0001:0015B6B7  2429 0001:0015B6C0
+  2430 0001:0015B6C9  2431 0001:0015B6D6  2432 0001:0015B6E3  2433 0001:0015B6F0
+  2434 0001:0015B70E  2435 0001:0015B717  2436 0001:0015B72F  2437 0001:0015B73C
+  2438 0001:0015B74B  2439 0001:0015B755  2440 0001:0015B762  2441 0001:0015B772
+  2443 0001:0015B77F  2444 0001:0015B797  2446 0001:0015B7A6  2447 0001:0015B7D8
+  2448 0001:0015B80C  2450 0001:0015B81C  2453 0001:0015B854  2456 0001:0015B877
+  2457 0001:0015B880  2458 0001:0015B88C  2459 0001:0015B899  2460 0001:0015B8AE
+  2461 0001:0015B8B7  2462 0001:0015B8C5  2463 0001:0015B8D2  2464 0001:0015B8DF
+  2465 0001:0015B8E8  2466 0001:0015B8F5  2468 0001:0015B902  2471 0001:0015B940
+  2472 0001:0015B946  2474 0001:0015B956  2475 0001:0015B95F  2477 0001:0015B971
+  2479 0001:0015B984  2481 0001:0015B98D  2486 0001:0015B990  2487 0001:0015B997
+  2488 0001:0015B9A7  2491 0001:0015B9B2  2492 0001:0015B9C2  2493 0001:0015B9CE
+  2494 0001:0015B9DD  2495 0001:0015B9EA  2497 0001:0015B9F4  2506 0001:0015BA20
+  2507 0001:0015BA4A  2508 0001:0015BA67  2509 0001:0015BA74  2510 0001:0015BA78
+  2512 0001:0015BA8E  2513 0001:0015BAA7  2515 0001:0015BABA  2516 0001:0015BABE
+  2518 0001:0015BAC0  2510 0001:0015BAC3  2519 0001:0015BAC6  2520 0001:0015BADF
+  2521 0001:0015BAEC  2522 0001:0015BAF9  2524 0001:0015BAFF  2525 0001:0015BB0B
+  2529 0001:0015BB15  2530 0001:0015BB26  2532 0001:0015BB37  2533 0001:0015BB41
+  2534 0001:0015BB50  2536 0001:0015BB5F  2537 0001:0015BB6C  2538 0001:0015BB79
+  2539 0001:0015BB86  2541 0001:0015BB9F  2542 0001:0015BBB6  2544 0001:0015BBCD
+  2545 0001:0015BBD9  2546 0001:0015BBE5  2547 0001:0015BBF6  2548 0001:0015BC07
+  2549 0001:0015BC0B  2551 0001:0015BC26  2552 0001:0015BC38  2554 0001:0015BC58
+  2555 0001:0015BC5C  2557 0001:0015BC5E  2549 0001:0015BC61  2558 0001:0015BC64
+  2560 0001:0015BC71  2561 0001:0015BC81  2564 0001:0015BC8D  2565 0001:0015BCAE
+  2567 0001:0015BCCF  2568 0001:0015BCDC  2570 0001:0015BCFB  2572 0001:0015BD05
+  2573 0001:0015BD28  2582 0001:0015BD8C  2583 0001:0015BDDC  2585 0001:0015BDE3
+  2586 0001:0015BDF4  2587 0001:0015BE07  2588 0001:0015BE17  2589 0001:0015BE24
+  2590 0001:0015BE35  2593 0001:0015BE42  2594 0001:0015BE4E  2595 0001:0015BE72
+  2596 0001:0015BE9D  2597 0001:0015BEC0  2599 0001:0015BECB  2601 0001:0015BEEA
+  2602 0001:0015BEFC  2604 0001:0015BF20  2605 0001:0015BF3D  2607 0001:0015BF46
+  2608 0001:0015BF71  2609 0001:0015BF77  2610 0001:0015BF8A  2612 0001:0015BFB2
+  2613 0001:0015BFD2  2614 0001:0015BFDF  2615 0001:0015C014  2617 0001:0015C022
+  2618 0001:0015C02E  2621 0001:0015C038  2622 0001:0015C05B  2627 0001:0015C076
+  2599 0001:0015C079  2628 0001:0015C080  2583 0001:0015C083  2629 0001:0015C090
+  2636 0001:0015C108  2637 0001:0015C13B  2638 0001:0015C13F  2639 0001:0015C146
+  2640 0001:0015C159  2641 0001:0015C16E  2643 0001:0015C1A3  2644 0001:0015C1B0
+  2645 0001:0015C1B7  2649 0001:0015C1BF  2650 0001:0015C1CC  2651 0001:0015C1D3
+  2653 0001:0015C1D9  2655 0001:0015C1F3  2656 0001:0015C204  2657 0001:0015C217
+  2659 0001:0015C224  2660 0001:0015C241  2661 0001:0015C247  2662 0001:0015C256
+  2663 0001:0015C25B  2664 0001:0015C295  2665 0001:0015C299  2667 0001:0015C29B
+  2653 0001:0015C29C  2668 0001:0015C2A3  2669 0001:0015C2A9  2670 0001:0015C2E1
+  2678 0001:0015C34C  2679 0001:0015C382  2680 0001:0015C38E  2681 0001:0015C39B
+  2682 0001:0015C3A3  2683 0001:0015C3B1  2684 0001:0015C3B9  2686 0001:0015C3D3
+  2687 0001:0015C3E4  2689 0001:0015C408  2690 0001:0015C41B  2692 0001:0015C43A
+  2693 0001:0015C44D  2694 0001:0015C460  2695 0001:0015C48D  2696 0001:0015C49E
+  2697 0001:0015C4CB  2698 0001:0015C4E9  2699 0001:0015C507  2702 0001:0015C518
+  2684 0001:0015C519  2703 0001:0015C520  2705 0001:0015C526  2706 0001:0015C537
+  2709 0001:0015C544  2710 0001:0015C554  2711 0001:0015C560  2712 0001:0015C56D
+  2715 0001:0015C577  2717 0001:0015C57D  2718 0001:0015C58E  2721 0001:0015C59B
+  2722 0001:0015C5AB  2723 0001:0015C5B7  2724 0001:0015C5C4  2727 0001:0015C5CE
+  2732 0001:0015C660  2733 0001:0015C666  2734 0001:0015C676  2735 0001:0015C689
+  2736 0001:0015C693  2738 0001:0015C6A6  2739 0001:0015C6B3  2740 0001:0015C6D2
+  2741 0001:0015C6F1  2742 0001:0015C710  2743 0001:0015C72F  2746 0001:0015C73D
+  2747 0001:0015C745  2751 0001:0015C770  2752 0001:0015C79C  2753 0001:0015C7A9
+  2755 0001:0015C7B6  2756 0001:0015C7CB  2757 0001:0015C7E1  2758 0001:0015C7F7
+  2759 0001:0015C80D  2761 0001:0015C821  2765 0001:0015C850  2766 0001:0015C862
+  2768 0001:0015C866  2769 0001:0015C86F  2770 0001:0015C87B  2771 0001:0015C885
+  2772 0001:0015C88E  2774 0001:0015C89C  2776 0001:0015C8A2  2777 0001:0015C8AB
+  2778 0001:0015C8B7  2779 0001:0015C8C0  2780 0001:0015C8C9  2781 0001:0015C8D9
+  2783 0001:0015C8F1  2785 0001:0015C8F7  2786 0001:0015C900  2787 0001:0015C909
+  2788 0001:0015C920  2789 0001:0015C926  2790 0001:0015C93B  2791 0001:0015C944
+  2792 0001:0015C94D  2793 0001:0015C959  2795 0001:0015C96F  2799 0001:0015C988
+  2800 0001:0015C9F1  2801 0001:0015C9F7  2802 0001:0015C9FD  2803 0001:0015CA03
+  2804 0001:0015CA09  2805 0001:0015CA0F  2806 0001:0015CA15  2807 0001:0015CA1B
+  2808 0001:0015CA21  2809 0001:0015CA27  2810 0001:0015CA2D  2811 0001:0015CA33
+  2812 0001:0015CA39  2813 0001:0015CA3F  2814 0001:0015CA45  2815 0001:0015CA48
+  2816 0001:0015CA4E  2817 0001:0015CA54  2818 0001:0015CA5A  2820 0001:0015CA60
+  2822 0001:0015CA65  2831 0001:0015CA68  2832 0001:0015CA71  2833 0001:0015CA78
+  2834 0001:0015CAA0  2835 0001:0015CAB0  2836 0001:0015CAC2  2837 0001:0015CACB
+  2838 0001:0015CAD1  2840 0001:0015CADF  2841 0001:0015CAEB  2843 0001:0015CAF6
+  2844 0001:0015CB07  2845 0001:0015CB25  2846 0001:0015CB37  2847 0001:0015CB4E
+  2848 0001:0015CB5A  2850 0001:0015CB5F  2851 0001:0015CB6C  2853 0001:0015CB70
+  2854 0001:0015CB7F  2855 0001:0015CB8E  2851 0001:0015CBA7  2858 0001:0015CBAB
+  2859 0001:0015CBB8  2860 0001:0015CBC4  2861 0001:0015CBCD  2866 0001:0015CBD8
+  2867 0001:0015CBDF  2868 0001:0015CBE6  2869 0001:0015CC0E  2870 0001:0015CC1E
+  2871 0001:0015CC2E  2872 0001:0015CC37  2873 0001:0015CC3D  2875 0001:0015CC4B
+  2876 0001:0015CC57  2878 0001:0015CC62  2879 0001:0015CC73  2880 0001:0015CC91
+  2881 0001:0015CCA3  2882 0001:0015CCBA  2883 0001:0015CCC6  2884 0001:0015CCD1
+  2885 0001:0015CCDA  2893 0001:0015CCE0  2894 0001:0015CD09  2895 0001:0015CD15
+  2897 0001:0015CD1B  2898 0001:0015CD28  2900 0001:0015CD2C  2901 0001:0015CD3C
+  2902 0001:0015CD4E  2898 0001:0015CD67  2905 0001:0015CD6B  2907 0001:0015CD6F
+  2908 0001:0015CD7F  2912 0001:0015CD8D  2913 0001:0015CD9E  2914 0001:0015CDAC
+  2915 0001:0015CDB9  2917 0001:0015CDC1  2918 0001:0015CDD1  2919 0001:0015CDE9
+  2921 0001:0015CE05  2922 0001:0015CE28  2924 0001:0015CE4D  2925 0001:0015CE6C
+  2927 0001:0015CE6E  2919 0001:0015CE6F  2928 0001:0015CE74  2915 0001:0015CE8D
+  2930 0001:0015CE95  2932 0001:0015CE9E  2934 0001:0015CEA4  2935 0001:0015CEB5
+  2939 0001:0015CEC3  2940 0001:0015CED4  2941 0001:0015CEE2  2942 0001:0015CF02
+  2944 0001:0015CF1E  2945 0001:0015CF41  2947 0001:0015CF63  2948 0001:0015CF82
+  2950 0001:0015CF84  2942 0001:0015CF85  2950 0001:0015CF8A  2941 0001:0015CF8D
+  2951 0001:0015CF96  2953 0001:0015CF9F  2954 0001:0015CFAB  2957 0001:0015CFE0
+  2958 0001:0015CFE4  2959 0001:0015CFEB  2960 0001:0015D00F  2961 0001:0015D018
+  2962 0001:0015D01E  2964 0001:0015D02C  2965 0001:0015D038  2967 0001:0015D043
+  2968 0001:0015D049  2970 0001:0015D056  2972 0001:0015D063  2973 0001:0015D069
+  2975 0001:0015D076  2977 0001:0015D083  2978 0001:0015D08A  2987 0001:0015D090
+  2988 0001:0015D0A5  2989 0001:0015D0B8  2991 0001:0015D0BC  2992 0001:0015D0CB
+  2993 0001:0015D0E0  2994 0001:0015D0EF  2989 0001:0015D10E  2996 0001:0015D112
+  3001 0001:0015D138  3002 0001:0015D155  3003 0001:0015D168  3004 0001:0015D17B
+  3005 0001:0015D198  3006 0001:0015D1A4  3007 0001:0015D1B4  3008 0001:0015D1C4
+  3009 0001:0015D1D5  3010 0001:0015D1E6  3012 0001:0015D1FC  3013 0001:0015D20D
+  3014 0001:0015D220  3015 0001:0015D23E  3017 0001:0015D254  3018 0001:0015D268
+  3010 0001:0015D269  3019 0001:0015D26C  3020 0001:0015D277  3021 0001:0015D282
+  3022 0001:0015D28E  3023 0001:0015D298  3029 0001:0015D2E0  3031 0001:0015D30A
+  3033 0001:0015D322  3034 0001:0015D341  3035 0001:0015D363  3036 0001:0015D37F
+  3030 0001:0015D380  3037 0001:0015D383  3041 0001:0015D3B0  3042 0001:0015D3C0
+  3043 0001:0015D3C5  3047 0001:0015D3C8  3048 0001:0015D3D8  3049 0001:0015D3DD
+  3054 0001:0015D3E0  3055 0001:0015D3F8  3057 0001:0015D428  3058 0001:0015D445
+  3060 0001:0015D46B  3061 0001:0015D480  3063 0001:0015D499  3065 0001:0015D4BC
+  3066 0001:0015D4DE  3068 0001:0015D4F7  3061 0001:0015D4F8  3071 0001:0015D500
+  3073 0001:0015D510  3074 0001:0015D525  3076 0001:0015D53E  3079 0001:0015D581
+  3080 0001:0015D5A3  3082 0001:0015D5B8  3074 0001:0015D5B9  3084 0001:0015D5BC
+  3088 0001:0015D610  3089 0001:0015D620  3090 0001:0015D625  3093 0001:0015D628
+  3094 0001:0015D62E  3096 0001:0015D634  3097 0001:0015D641  3098 0001:0015D648
+  3099 0001:0015D65A  3101 0001:0015D663  3102 0001:0015D67D  3104 0001:0015D684
+  3106 0001:0015D68D  3107 0001:0015D6A7  3109 0001:0015D6AE  3111 0001:0015D6B5
+  3112 0001:0015D6CF  3113 0001:0015D6EA  3114 0001:0015D6F1  3117 0001:0015D6F8
+  3120 0001:0015D700  3121 0001:0015D703  3123 0001:0015D709  3124 0001:0015D713
+  3126 0001:0015D71B  3128 0001:0015D722  3129 0001:0015D737  3130 0001:0015D74C
+  3133 0001:0015D750  3134 0001:0015D754  3136 0001:0015D75A  3137 0001:0015D763
+  3138 0001:0015D770  3140 0001:0015D77F  3143 0001:0015D784  3144 0001:0015D788
+  3146 0001:0015D78E  3147 0001:0015D797  3148 0001:0015D7A4  3150 0001:0015D7B3
+  3153 0001:0015D7B8  3154 0001:0015D7BB  3155 0001:0015D7CD  3157 0001:0015D7D9
+  3158 0001:0015D7F8  3162 0001:0015D819  3163 0001:0015D829  3165 0001:0015D839
+  3169 0001:0015D83C  3170 0001:0015D84C  3171 0001:0015D851  3174 0001:0015D854
+  3175 0001:0015D858  3176 0001:0015D877  3177 0001:0015D880  3183 0001:0015D884
+  3184 0001:0015D8FE  3185 0001:0015D929  3186 0001:0015D954  3187 0001:0015D97F
+  3188 0001:0015D9AA  3189 0001:0015D9D5  3190 0001:0015DA00  3203 0001:0015DAA4
+  3204 0001:0015DACA  3206 0001:0015DAF4  3207 0001:0015DAFE  3209 0001:0015DB03
+  3210 0001:0015DB11  3212 0001:0015DB3E  3214 0001:0015DB59  3215 0001:0015DB83
+  3216 0001:0015DB91  3217 0001:0015DB9E  3218 0001:0015DBB9  3219 0001:0015DBD4
+  3220 0001:0015DBF1  3222 0001:0015DC09  3225 0001:0015DCD2  3229 0001:0015DD4E
+  3230 0001:0015DD75  3231 0001:0015DD90  3232 0001:0015DDAB  3233 0001:0015DDD2
+  3235 0001:0015DDF1  3236 0001:0015DE19  3238 0001:0015DE41  3239 0001:0015DE53
+  3240 0001:0015DE68  3241 0001:0015DE70  3243 0001:0015DE85  3244 0001:0015DEB3
+  3241 0001:0015DEB4  3245 0001:0015DEB7  3246 0001:0015DEE6  3247 0001:0015DF12
+  3250 0001:0015DF63  3251 0001:0015DF78  3252 0001:0015DFA8  3253 0001:0015DFD8
+  3254 0001:0015DFEF  3255 0001:0015E01F  3256 0001:0015E04F  3257 0001:0015E081
+  3258 0001:0015E0B1  3259 0001:0015E0E3  3260 0001:0015E116  3261 0001:0015E149
+  3262 0001:0015E17C  3263 0001:0015E1A7  3264 0001:0015E1B1  3265 0001:0015E1C5
+  3267 0001:0015E1D2  3268 0001:0015E1E3  3269 0001:0015E1F6  3270 0001:0015E20F
+  3271 0001:0015E220  3273 0001:0015E24C  3274 0001:0015E278  3275 0001:0015E2A4
+  3276 0001:0015E2B3  3278 0001:0015E2D9  3280 0001:0015E2E1  3281 0001:0015E2F4
+  3282 0001:0015E307  3284 0001:0015E321  3285 0001:0015E332  3286 0001:0015E35C
+  3288 0001:0015E386  3289 0001:0015E3BA  3290 0001:0015E3D3  3291 0001:0015E449
+  3292 0001:0015E49C  3293 0001:0015E4AF  3294 0001:0015E500  3295 0001:0015E51B
+  3296 0001:0015E534  3297 0001:0015E5AA  3298 0001:0015E5FD  3299 0001:0015E60F
+  3301 0001:0015E641  3302 0001:0015E671  3304 0001:0015E67A  3305 0001:0015E680
+  3306 0001:0015E68E  3309 0001:0015E6E2  3282 0001:0015E6E3  3310 0001:0015E6EA
+  3265 0001:0015E70E  3312 0001:0015E71B  3314 0001:0015E737  3315 0001:0015E73D
+  3316 0001:0015E74B  3317 0001:0015E762  3318 0001:0015E776  3320 0001:0015E783
+  3321 0001:0015E794  3322 0001:0015E7A7  3323 0001:0015E7C0  3324 0001:0015E7D1
+  3326 0001:0015E7FD  3327 0001:0015E829  3328 0001:0015E855  3329 0001:0015E864
+  3331 0001:0015E88A  3333 0001:0015E892  3334 0001:0015E8A5  3335 0001:0015E8B8
+  3337 0001:0015E8D2  3338 0001:0015E8E3  3339 0001:0015E90D  3341 0001:0015E937
+  3342 0001:0015E96B  3343 0001:0015E984  3344 0001:0015E9FA  3345 0001:0015EA4D
+  3346 0001:0015EA60  3347 0001:0015EAB1  3348 0001:0015EACC  3349 0001:0015EAE5
+  3350 0001:0015EB5B  3351 0001:0015EBAE  3352 0001:0015EBC0  3354 0001:0015EBF2
+  3355 0001:0015EC22  3357 0001:0015EC2B  3358 0001:0015EC31  3359 0001:0015EC3F
+  3362 0001:0015EC93  3335 0001:0015EC94  3363 0001:0015EC9B  3318 0001:0015ECBF
+  3366 0001:0015ECCC  3367 0001:0015ED34  3368 0001:0015ED81  3370 0001:0015EDDC
+  3371 0001:0015EDE5  3372 0001:0015EDF0  3373 0001:0015EDFE  3376 0001:0015F318
+  3377 0001:0015F31C  3378 0001:0015F322  3379 0001:0015F32E  3381 0001:0015F334
+  3382 0001:0015F346  3384 0001:0015F351  3386 0001:0015F357  3387 0001:0015F369
+  3389 0001:0015F374  3393 0001:0015F378  3395 0001:0015F37E  3396 0001:0015F388
+  3398 0001:0015F390  3399 0001:0015F395  3403 0001:0015F398  3404 0001:0015F39E
+  3405 0001:0015F3A8  3406 0001:0015F3AD  3410 0001:0015F3B0  3411 0001:0015F3C0
+  3412 0001:0015F3C5  3415 0001:0015F3C8  3416 0001:0015F3CE  3417 0001:0015F3DB
+  3418 0001:0015F3EE  3419 0001:0015F3FB  3420 0001:0015F408  3421 0001:0015F415
+  3422 0001:0015F422  3423 0001:0015F42F  3424 0001:0015F43C  3425 0001:0015F44F
+  3426 0001:0015F45C  3427 0001:0015F469  3428 0001:0015F476  3429 0001:0015F483
+  3430 0001:0015F490  3435 0001:0015F494  3438 0001:0015F49F  3439 0001:0015F4B0
+  3440 0001:0015F4BC  3441 0001:0015F4CC  3442 0001:0015F4E1  3443 0001:0015F4F6
+  3444 0001:0015F4FF  3445 0001:0015F514  3447 0001:0015F520  3448 0001:0015F52C
+  3449 0001:0015F53C  3450 0001:0015F54C  3454 0001:0015F55E  3455 0001:0015F56A
+  3456 0001:0015F57A  3457 0001:0015F58A  3459 0001:0015F59A  3461 0001:0015F5AF
+  3462 0001:0015F5C7  3464 0001:0015F5DE  3465 0001:0015F5F3  3467 0001:0015F60B
+  3468 0001:0015F623  3469 0001:0015F63B  3471 0001:0015F64B  3472 0001:0015F661
+  3473 0001:0015F67A  3475 0001:0015F6A0  3476 0001:0015F6B8  3478 0001:0015F6CC
+  3480 0001:0015F6DE  3481 0001:0015F6F6  3483 0001:0015F70A  3485 0001:0015F71C
+  3486 0001:0015F734  3488 0001:0015F74C  3489 0001:0015F762  3491 0001:0015F77B
+  3459 0001:0015F77C  3493 0001:0015F783  3500 0001:0015F7A4  3501 0001:0015F7AD
+  3502 0001:0015F7B9  3503 0001:0015F7C1  3505 0001:0015F7D6  3506 0001:0015F7E5
+  3507 0001:0015F7FB  3503 0001:0015F7FC  3508 0001:0015F7FF  3510 0001:0015F814
+  3511 0001:0015F823  3512 0001:0015F839  3508 0001:0015F83A  3513 0001:0015F83D
+  3514 0001:0015F849  3515 0001:0015F856  3516 0001:0015F862  3517 0001:0015F86F
+  3518 0001:0015F87B  3520 0001:0015F888  3521 0001:0015F892  3522 0001:0015F8A7
+  3523 0001:0015F8BC  3524 0001:0015F8D1  3525 0001:0015F8E6  3526 0001:0015F8FB
+  3527 0001:0015F910  3528 0001:0015F925  3529 0001:0015F93A  3530 0001:0015F94F
+  3531 0001:0015F967  3532 0001:0015F97C  3533 0001:0015F991  3534 0001:0015F9A6
+  3540 0001:0015F9B0  3541 0001:0015F9C3  3543 0001:0015F9CC  3544 0001:0015F9D3
+  3546 0001:0015F9D8  3547 0001:0015F9DF  3548 0001:0015F9EC  3549 0001:0015F9F3
+  3550 0001:0015F9FC  3551 0001:0015FA02  3552 0001:0015FA08  3553 0001:0015FA15
+  3555 0001:0015FA26  3556 0001:0015FA46  3560 0001:0015FA69  3561 0001:0015FA79
+  3563 0001:0015FA91  3564 0001:0015FA99  3565 0001:0015FAB8  3566 0001:0015FABF
+  3573 0001:0015FAC8  3574 0001:0015FAF6  3576 0001:0015FB00  3577 0001:0015FB11
+  3578 0001:0015FB24  3579 0001:0015FB5F  3580 0001:0015FB7F  3581 0001:0015FBAA
+  3582 0001:0015FBE8  3583 0001:0015FC06  3584 0001:0015FC19  3588 0001:0015FC4B
+  3589 0001:0015FC5E  3591 0001:0015FC6D  3592 0001:0015FC9D  3594 0001:0015FCBA
+  3595 0001:0015FCC7  3596 0001:0015FCD3  3598 0001:0015FCFD  3599 0001:0015FD25
+  3601 0001:0015FD64  3602 0001:0015FD6E  3603 0001:0015FD7F  3604 0001:0015FD8C
+  3605 0001:0015FDAA  3606 0001:0015FDC8  3607 0001:0015FDF3  3608 0001:0015FE19
+  3610 0001:0015FE26  3618 0001:0015FF90  3619 0001:0015FFDC  3620 0001:0015FFEC
+  3621 0001:0015FFFA  3622 0001:00160009  3623 0001:00160023  3624 0001:00160041
+  3625 0001:0016004D  3627 0001:0016008C  3628 0001:0016009C  3629 0001:001600B4
+  3630 0001:001600CC  3631 0001:001600E2  3634 0001:001600FA  3635 0001:00160104
+  3637 0001:00160118  3638 0001:00160120  3639 0001:0016012D  3640 0001:0016016B
+  3641 0001:00160191  3642 0001:001601BF  3643 0001:001601CA  3635 0001:001601CD
+  3644 0001:001601D7  3645 0001:001601DE  3647 0001:001601E8  3648 0001:001601F4
+  3651 0001:00160244  3652 0001:00160273  3653 0001:0016027F  3654 0001:0016028E
+  3655 0001:0016029C  3656 0001:001602C5  3657 0001:001602D3  3658 0001:001602E1
+  3659 0001:001602EF  3661 0001:001602FB  3662 0001:00160302  3663 0001:0016030A
+  3664 0001:00160318  3671 0001:00160488  3672 0001:001604BE  3674 0001:001604DD
+  3675 0001:001604EF  3677 0001:00160513  3679 0001:00160540  3680 0001:0016056B
+  3681 0001:0016057E  3682 0001:001605B8  3683 0001:001605EA  3684 0001:00160615
+  3685 0001:00160628  3686 0001:00160662  3687 0001:00160694  3689 0001:001606B4
+  3695 0001:0016074A  3700 0001:00160765  3701 0001:00160790  3703 0001:001607B0
+  3704 0001:001607F8  3706 0001:0016080D  3707 0001:00160820  3712 0001:001608CC
+  3716 0001:001608E8  3672 0001:001608EB  3717 0001:001608F2  3725 0001:001609A0
+  3726 0001:001609C6  3727 0001:001609D6  3728 0001:001609DE  3731 0001:001609ED
+  3732 0001:00160A19  3735 0001:00160A79  3737 0001:00160A83  3738 0001:00160A87
+  3740 0001:00160A9D  3742 0001:00160AAF  3743 0001:00160ACA  3744 0001:00160ADD
+  3746 0001:00160AF0  3747 0001:00160B0B  3750 0001:00160B16  3751 0001:00160B1A
+  3752 0001:00160B2E  3753 0001:00160B3D  3754 0001:00160B47  3756 0001:00160B51
+  3758 0001:00160B73  3759 0001:00160B90  3760 0001:00160BA3  3761 0001:00160BB6
+  3762 0001:00160BD8  3764 0001:00160BEC  3765 0001:00160C12  3767 0001:00160C3D
+  3768 0001:00160C63  3769 0001:00160C91  3770 0001:00160CD7  3771 0001:00160CF9
+  3773 0001:00160D04  3756 0001:00160D07  3775 0001:00160D10  3738 0001:00160D11
+  3776 0001:00160D1A  3778 0001:00160D26  3779 0001:00160D35  3780 0001:00160D44
+  3782 0001:00160D53  3783 0001:00160D5B  3784 0001:00160D65  3785 0001:00160D73
+  3794 0001:00160F28  3795 0001:00160F4B  3796 0001:00160F55  3797 0001:00160F69
+  3798 0001:00160F7D  3800 0001:00160F8C  3801 0001:00160FA4  3805 0001:00160FC0
+  3806 0001:00160FD8  3808 0001:00160FF2  3809 0001:00161005  3811 0001:0016103C
+  3812 0001:00161047  3814 0001:00161051  3815 0001:00161063  3816 0001:00161078
+  3818 0001:00161090  3819 0001:001610AF  3820 0001:001610D1  3821 0001:001610ED
+  3816 0001:001610EE  3822 0001:001610F1  3823 0001:00161100  3812 0001:00161118
+  3828 0001:00161127  3829 0001:0016114C  3830 0001:00161156  3832 0001:0016116E
+  3833 0001:0016118D  3834 0001:001611AF  3835 0001:001611CB  3830 0001:001611CC
+  3836 0001:001611CF  3838 0001:001611EC  3839 0001:001611F5  3841 0001:00161203
+  3842 0001:0016120F  3844 0001:0016121B  3845 0001:00161223  3846 0001:0016122E
+  3847 0001:00161239  3848 0001:00161249  3855 0001:001612C0  3856 0001:001612ED
+  3857 0001:001612F6  3858 0001:001612FE  3860 0001:00161313  3862 0001:0016132D
+  3863 0001:00161349  3864 0001:0016134E  3865 0001:0016136E  3866 0001:00161370
+  3858 0001:00161371  3867 0001:00161374  3869 0001:00161380  3870 0001:00161396
+  3871 0001:001613C3  3872 0001:001613E3  3873 0001:001613F9  3875 0001:0016140E
+  3877 0001:00161428  3878 0001:00161444  3879 0001:00161449  3880 0001:00161469
+  3881 0001:0016146B  3873 0001:0016146C  3883 0001:0016146F  3889 0001:001614A8
+  3890 0001:001614B6  3891 0001:001614BD  3892 0001:001614CA  3893 0001:001614D1
+  3894 0001:001614DC  3895 0001:001614EC  3896 0001:001614F7  3897 0001:00161529
+  3898 0001:00161559  3899 0001:00161566  3900 0001:00161589  3901 0001:001615AC
+  3902 0001:001615D5  3904 0001:001615E1  3905 0001:001615F1  3906 0001:00161601
+  3907 0001:0016160D  3911 0001:0016161D  3912 0001:0016162D  3913 0001:0016163D
+  3914 0001:00161649  3916 0001:00161657  3917 0001:0016165D  3918 0001:00161664
+  3919 0001:0016166C  3920 0001:0016168E  3926 0001:00161738  3927 0001:00161749
+  3928 0001:00161750  3929 0001:00161761  3931 0001:00161773  3932 0001:0016178D
+  3933 0001:00161793  3928 0001:00161794  3934 0001:00161797  3936 0001:001617A1
+  3937 0001:001617AB  3938 0001:001617B6  3939 0001:001617BF  3940 0001:001617C8
+  3941 0001:001617D4  3942 0001:001617E4  3944 0001:001617F5  3945 0001:0016181D
+  3949 0001:00161844  3950 0001:00161858  3952 0001:00161876  3953 0001:0016188B
+  3954 0001:00161895  3956 0001:0016189C  3963 0001:001618A8  3964 0001:001618D3
+  3965 0001:001618E6  3967 0001:001618F5  3968 0001:00161926  3970 0001:00161943
+  3972 0001:00161958  3973 0001:00161963  3975 0001:00161971  3977 0001:0016198A
+  3979 0001:001619B2  3980 0001:001619B4  3981 0001:001619B8  3982 0001:001619CE
+  3984 0001:001619FA  3986 0001:001619FE  3987 0001:00161A14  3989 0001:00161A16
+  3990 0001:00161A2C  3981 0001:00161A2D  3993 0001:00161A35  3995 0001:00161A52
+  3996 0001:00161A66  3997 0001:00161A79  3998 0001:00161AB4  3999 0001:00161AD4
+  4000 0001:00161AFF  4001 0001:00161B3D  4002 0001:00161B5B  4003 0001:00161B6E
+  4005 0001:00161BA0  4008 0001:00161BEE  4009 0001:00161BFB  4010 0001:00161C07
+  4012 0001:00161C31  4013 0001:00161C59  4015 0001:00161C98  4016 0001:00161CA5
+  4017 0001:00161CB6  4018 0001:00161CC3  4019 0001:00161CE1  4020 0001:00161CFF
+  4021 0001:00161D2A  4022 0001:00161D50  4024 0001:00161D5D  4027 0001:00161F28
+  4028 0001:00161F41  4029 0001:00161F58  4030 0001:00161F8C  4032 0001:00161F9F
+  4033 0001:00161FC9  4036 0001:00161FD8  4037 0001:00161FE8  4039 0001:00161FF5
+  4040 0001:0016201F  4043 0001:0016202E  4044 0001:0016203E  4046 0001:0016204B
+  4047 0001:0016205B  4048 0001:00162090  4049 0001:001620A0  4053 0001:001620AF
+  4054 0001:001620BC  4055 0001:001620C9  4056 0001:001620D6  4057 0001:001620E2
+  4061 0001:001620EF  4062 0001:00162124  4063 0001:00162139  4064 0001:0016214E
+  4065 0001:00162163  4068 0001:00162178  4069 0001:00162181  4071 0001:00162190
+  4072 0001:0016219D  4083 0001:0016224C  4084 0001:00162271  4086 0001:00162281
+  4087 0001:0016229F  4088 0001:001622A9  4090 0001:001622CE  4092 0001:001622E5
+  4093 0001:00162309  4097 0001:00162334  4098 0001:00162348  4100 0001:00162360
+  4101 0001:0016237E  4102 0001:001623BC  4103 0001:001623FA  4104 0001:00162418
+  4105 0001:0016242B  4106 0001:00162458  4109 0001:0016245D  4113 0001:0016246C
+  4114 0001:00162481  4115 0001:00162496  4116 0001:001624A5  4117 0001:001624B1
+  4119 0001:001624BC  4120 0001:001624C5  4121 0001:001624CF  4123 0001:001624D3
+  4124 0001:001624E2  4125 0001:001624ED  4126 0001:001624F8  4121 0001:0016250E
+  4128 0001:00162512  4129 0001:0016251E  4130 0001:00162534  4132 0001:0016253C
+  4133 0001:00162543  4134 0001:00162555  4135 0001:0016256A  4144 0001:001625B0
+  4147 0001:001625D7  4148 0001:001625E6  4149 0001:001625EA  4151 0001:00162600
+  4152 0001:0016260D  4153 0001:00162620  4154 0001:0016262F  4155 0001:00162633
+  4157 0001:00162642  4158 0001:00162655  4159 0001:00162673  4162 0001:00162690
+  4163 0001:0016269B  4149 0001:0016269C  4164 0001:001626A3  4166 0001:001626AD
+  4167 0001:001626BC  4168 0001:001626CA  4169 0001:001626F2  4170 0001:001626FD
+  4172 0001:0016272E  4176 0001:0016273E  4177 0001:0016274F  4178 0001:00162757
+  4185 0001:001627C4  4186 0001:001627F1  4187 0001:001627FF  4188 0001:00162824
+  4189 0001:00162849  4190 0001:00162858  4191 0001:00162867  4192 0001:00162883
+  4193 0001:00162898  4194 0001:001628B8  4195 0001:001628F1  4196 0001:00162913
+  4197 0001:0016291C  4198 0001:0016296A  4199 0001:00162971  4205 0001:00162A00
+  4206 0001:00162A1F  4208 0001:00162A2F  4209 0001:00162A3C  4211 0001:00162A5E
+  4212 0001:00162A68  4214 0001:00162A91  4215 0001:00162A99  4219 0001:00162AA6
+  4206 0001:00162AA7  4220 0001:00162AAC  4226 0001:00162B00  4227 0001:00162B41
+  4230 0001:00162B5D  4231 0001:00162B69  4232 0001:00162BA2  4233 0001:00162BAE
+  4234 0001:00162BD4  4237 0001:00162C16  4239 0001:00162C5F  4240 0001:00162CA0
+  4241 0001:00162CAA  4242 0001:00162CC3  4244 0001:00162D12  4245 0001:00162D1E
+  4246 0001:00162D57  4247 0001:00162D90  4249 0001:00162D9C  4255 0001:00162F0C
+  4258 0001:00162F3D  4259 0001:00162F49  4260 0001:00162F53  4261 0001:00162F5F
+  4264 0001:00162FDD  4266 0001:00162FE7  4268 0001:00162FF1  4275 0001:001630B0
+  4276 0001:001630DE  4277 0001:001630EA  4278 0001:0016310A  4279 0001:00163122
+  4281 0001:00163164  4282 0001:00163175  4283 0001:00163188  4286 0001:001631E6
+  4287 0001:00163212  4288 0001:0016323E  4289 0001:0016325C  4290 0001:00163281
+  4291 0001:0016329F  4292 0001:001632C4  4293 0001:001632EA  4295 0001:0016330F
+  4297 0001:0016332C  4298 0001:00163358  4299 0001:0016337E  4300 0001:001633A3
+  4301 0001:001633DA  4302 0001:001633FF  4304 0001:00163436  4306 0001:00163456
+  4278 0001:00163457  4307 0001:00163460  4312 0001:0016350C  4314 0001:00163535
+  4315 0001:00163545  4316 0001:0016356C  4317 0001:001635B7  4318 0001:00163606
+  4319 0001:0016368E  4320 0001:0016369A  4325 0001:00163714  4326 0001:0016373B
+  4327 0001:00163742  4328 0001:0016377E  4330 0001:0016378A  4331 0001:001637A0
+  4333 0001:001637D1  4334 0001:00163805  4335 0001:00163807  4330 0001:00163808
+  4336 0001:0016380B  4342 0001:00163878  4343 0001:001638A5  4344 0001:001638A7
+  4346 0001:001638C2  4347 0001:001638D4  4349 0001:001638F4  4350 0001:0016391E
+  4352 0001:00163920  4344 0001:00163923  4353 0001:00163926  4359 0001:00163960
+  4360 0001:0016398D  4361 0001:00163991  4362 0001:00163993  4365 0001:00163997
+  4366 0001:001639AB  4368 0001:001639C9  4369 0001:001639CD  4370 0001:001639DC
+  4372 0001:001639E0  4363 0001:001639E1  4374 0001:001639E5  4376 0001:001639EB
+  4377 0001:00163A05  4379 0001:00163A1D  4384 0001:00163A54  4385 0001:00163A82
+  4386 0001:00163A91  4387 0001:00163AA8  4388 0001:00163AB0  4389 0001:00163AC6
+  4391 0001:00163AF7  4392 0001:00163B2B  4393 0001:00163B2D  4388 0001:00163B2E
+  4394 0001:00163B31  4397 0001:00163B84  4398 0001:00163B87  4399 0001:00163BA1
+  4400 0001:00163BB5  4401 0001:00163BCF  4404 0001:00163BD4  4405 0001:00163BD7
+  4406 0001:00163BF1  4407 0001:00163C05  4408 0001:00163C1F  4412 0001:00163C24
+  4414 0001:00163C4D  4419 0001:00163C50  4420 0001:00163C71  4421 0001:00163C86
+  4422 0001:00163C9B  4423 0001:00163CA3  4425 0001:00163CD8  4427 0001:00163CDE
+  4428 0001:00163CED  4429 0001:00163D01  4431 0001:00163D15  4435 0001:00163D8C
+  4436 0001:00163DA0  4439 0001:00163DBD  4441 0001:00163DCD  4443 0001:00163DDD
+  4446 0001:00163DEB  4447 0001:00163DF4  4448 0001:00163DFE  4449 0001:00163E17
+  4450 0001:00163E2C  4451 0001:00163E41  4452 0001:00163E4D  4453 0001:00163E59
+  4454 0001:00163E73  4455 0001:00163E8D  4456 0001:00163E96  4463 0001:00163F2C
+  4464 0001:00163F59  4465 0001:00163F73  4466 0001:00163F7E  4467 0001:00163F90
+  4468 0001:00163F92  4470 0001:00163FC6  4472 0001:00163FDA  4473 0001:00164001
+  4474 0001:00164014  4475 0001:00164027  4476 0001:00164056  4477 0001:00164063
+  4478 0001:0016406F  4479 0001:0016407B  4481 0001:001640B2  4482 0001:001640C4
+  4483 0001:001640E6  4487 0001:001640F7  4488 0001:0016410E  4489 0001:0016412D
+  4490 0001:0016414C  4491 0001:0016416B  4492 0001:0016418A  4493 0001:001641A9
+  4494 0001:001641C8  4497 0001:001641DB  4498 0001:00164202  4499 0001:00164215
+  4500 0001:00164228  4501 0001:00164264  4502 0001:00164270  4503 0001:0016427C
+  4505 0001:001642AB  4506 0001:001642BD  4507 0001:001642DF  4511 0001:001642EB
+  4514 0001:00164338  4515 0001:0016433E  4517 0001:00164350  4518 0001:00164374
+  4521 0001:00164387  4522 0001:0016438F  4525 0001:001643A4  4526 0001:001643AA
+  4527 0001:001643C7  4528 0001:001643D4  4529 0001:001643E5  4533 0001:001643F8
+  4534 0001:0016441A  4535 0001:0016442F  4537 0001:00164438  4538 0001:00164441
+  4540 0001:00164459  4545 0001:00164494  4546 0001:0016449D  4548 0001:001644B2
+  4551 0001:001644EB  4555 0001:00164518  4556 0001:00164521  4557 0001:00164530
+  4559 0001:00164541  4560 0001:00164548  4561 0001:00164555  4562 0001:00164567
+  4566 0001:0016456C  4567 0001:0016458E  4568 0001:001645A3  4570 0001:001645AC
+  4571 0001:001645B5  4573 0001:001645CD  4578 0001:00164608  4579 0001:00164611
+  4581 0001:00164626  4584 0001:0016465F  4588 0001:0016468C  4589 0001:00164695
+  4590 0001:001646A4  4592 0001:001646B5  4593 0001:001646BC  4594 0001:001646C9
+  4595 0001:001646DB  4604 0001:001646E0  4605 0001:00164702  4606 0001:0016470A
+  4607 0001:00164712  4608 0001:0016471F  4610 0001:00164727  4611 0001:00164737
+  4612 0001:00164745  4614 0001:00164767  4615 0001:0016478D  4616 0001:001647AA
+  4617 0001:001647D9  4619 0001:001647E1  4620 0001:001647F1  4621 0001:00164837
+  4608 0001:00164850  4623 0001:00164858  4624 0001:0016485C  4625 0001:00164860
+  4626 0001:0016486D  4628 0001:00164879  4630 0001:001648A9  4631 0001:001648AF
+  4632 0001:001648B6  4633 0001:001648C5  4634 0001:001648D1  4635 0001:001648EF
+  4636 0001:001648FB  4637 0001:00164919  4638 0001:00164925  4639 0001:0016492C
+  4644 0001:001649E0  4645 0001:001649F8  4646 0001:00164A09  4647 0001:00164A34
+  4645 0001:00164A48  4648 0001:00164A4B  4653 0001:00164A88  4654 0001:00164AA8
+  4656 0001:00164AB1  4658 0001:00164AD5  4660 0001:00164AF0  4661 0001:00164B11
+  4663 0001:00164B4F  4664 0001:00164B55  4666 0001:00164B57  4658 0001:00164B58
+  4668 0001:00164B5D  4670 0001:00164B66  4672 0001:00164B78  4673 0001:00164B88
+  4675 0001:00164B91  4676 0001:00164B9C  4677 0001:00164BB0  4678 0001:00164BB8
+  4679 0001:00164BC5  4682 0001:00164BD2  4684 0001:00164BDB  4685 0001:00164BF7
+  4686 0001:00164C12  4688 0001:00164C50  4689 0001:00164C56  4690 0001:00164C58
+  4685 0001:00164C59  4691 0001:00164C5E  4693 0001:00164C67  4694 0001:00164C72
+  4695 0001:00164C86  4696 0001:00164C8E  4697 0001:00164C9B  4700 0001:00164CA8
+  4704 0001:00164CD4  4705 0001:00164CF6  4706 0001:00164D0D  4707 0001:00164D14
+  4708 0001:00164D24  4709 0001:00164D2D  4711 0001:00164D31  4712 0001:00164D3B
+  4713 0001:00164D49  4715 0001:00164D54  4716 0001:00164D65  4717 0001:00164D6D
+  4719 0001:00164D7B  4720 0001:00164D89  4722 0001:00164D9C  4724 0001:00164DBD
+  4725 0001:00164DE7  4727 0001:00164E17  4729 0001:00164E38  4730 0001:00164E62
+  4732 0001:00164E8C  4734 0001:00164E9B  4735 0001:00164EA9  4737 0001:00164EBF
+  4739 0001:00164ECE  4740 0001:00164EDC  4742 0001:00164EF0  4743 0001:00164F01
+  4744 0001:00164F0B  4746 0001:00164F27  4747 0001:00164F33  4748 0001:00164F3A
+  4750 0001:00164F49  4751 0001:00164F62  4752 0001:00164F69  4753 0001:00164F72
+  4754 0001:00164F7B  4755 0001:00164F82  4756 0001:00164F90  4764 0001:00164FE4
+  4765 0001:00165022  4767 0001:00165032  4768 0001:0016503E  4769 0001:00165054
+  4771 0001:00165091  4772 0001:001650BC  4774 0001:001650DE  4775 0001:001650E0
+  4776 0001:001650F1  4777 0001:00165121  4778 0001:00165141  4779 0001:00165161
+  4780 0001:00165165  4781 0001:00165176  4782 0001:0016519C  4783 0001:0016519E
+  4785 0001:001651A6  4786 0001:001651AA  4787 0001:001651AC  4790 0001:001651B0
+  4791 0001:001651C4  4793 0001:001651F7  4794 0001:001651FB  4796 0001:001651FF
+  4788 0001:00165200  4798 0001:00165204  4800 0001:0016520E  4801 0001:0016521D
+  4802 0001:00165239  4803 0001:0016525B  4805 0001:00165271  4808 0001:00165299
+  4772 0001:0016529C  4809 0001:001652A5  4814 0001:0016531C  4815 0001:0016533A
+  4816 0001:00165341  4817 0001:0016534A  4818 0001:00165353  4819 0001:0016535A
+  4821 0001:00165377  4822 0001:00165384  4823 0001:00165392  4826 0001:001653A4
+  4827 0001:001653B2  4829 0001:001653B9  4830 0001:001653D4  4829 0001:00165410
+  4831 0001:00165413  4835 0001:00165423  4836 0001:0016542F  4837 0001:0016544F
+  4838 0001:00165471  4836 0001:0016548E  4839 0001:00165491  4841 0001:001654C2
+  4847 0001:0016551C  4848 0001:00165524  4850 0001:00165533  4851 0001:0016553C
+  4853 0001:00165540  4854 0001:0016554F  4855 0001:00165559  4851 0001:0016556E
+  4858 0001:00165572  4865 0001:0016557C  4866 0001:001655A6  4868 0001:001655C8
+  4869 0001:001655E8  4870 0001:00165608  4872 0001:0016561A  4873 0001:00165647
+  4875 0001:00165654  4876 0001:00165671  4879 0001:00165673  4870 0001:00165674
+  4879 0001:00165677  4866 0001:0016567A  4880 0001:00165683  4886 0001:001656BC
+  4887 0001:001656EF  4888 0001:001656FC  4889 0001:00165703  4890 0001:00165714
+  4892 0001:00165721  4894 0001:00165751  4896 0001:0016575E  4897 0001:00165769
+  4899 0001:00165778  4900 0001:00165786  4901 0001:0016579A  4902 0001:001657AB
+  4906 0001:001657C5  4907 0001:001657D3  4908 0001:001657E7  4909 0001:001657F8
+  4911 0001:00165810  4912 0001:0016581A  4913 0001:0016581F  4915 0001:00165824
+  4916 0001:0016582F  4917 0001:00165833  4918 0001:0016584E  4920 0001:001658D4
+  4921 0001:001658E1  4922 0001:001658E7  4923 0001:001658F0  4925 0001:00165903
+  4926 0001:00165913  4927 0001:00165922  4928 0001:0016592B  4929 0001:00165945
+  4930 0001:00165952  4931 0001:0016596C  4932 0001:00165989  4933 0001:001659A6
+  4937 0001:001659B2  4938 0001:001659C2  4939 0001:001659D1  4940 0001:001659DA
+  4941 0001:001659F4  4942 0001:00165A01  4943 0001:00165A1B  4944 0001:00165A38
+  4945 0001:00165A55  4947 0001:00165A5C  4948 0001:00165A67  4949 0001:00165A71
+  4950 0001:00165A7B  4955 0001:00165B14  4956 0001:00165B48  4957 0001:00165B5B
+  4958 0001:00165B84  4959 0001:00165B94  4960 0001:00165BA3  4962 0001:00165BB9
+  4963 0001:00165BCD  4970 0001:00165C00  4971 0001:00165C38  4972 0001:00165C46
+  4973 0001:00165C55  4974 0001:00165C71  4975 0001:00165C90  4973 0001:00165C91
+  4976 0001:00165C96  4978 0001:00165CAE  4979 0001:00165CCD  4980 0001:00165CD8
+  4981 0001:00165D10  4976 0001:00165D11  4982 0001:00165D14  4983 0001:00165D22
+  4990 0001:00165D64  4991 0001:00165DAD  4992 0001:00165DB4  4993 0001:00165DD2
+  4994 0001:00165DE5  4995 0001:00165E05  4997 0001:00165E0A  4998 0001:00165E1A
+  5000 0001:00165E24  5001 0001:00165E37  5002 0001:00165E4A  5003 0001:00165E62
+  5005 0001:00165E8A  5006 0001:00165E98  5008 0001:00165EA5  5009 0001:00165EAF
+  5012 0001:00165EB4  5014 0001:00165EC3  5016 0001:00165EE3  5017 0001:00165EED
+  5022 0001:00165EF2  5024 0001:00165EFF  5025 0001:00165F09  5028 0001:00165F0E
+  5030 0001:00165F2A  5031 0001:00165F34  5033 0001:00165F39  5034 0001:00165F79
+  5035 0001:00165FBA  5037 0001:0016600D  5038 0001:00166017  5040 0001:00166019
+  4995 0001:0016601A  5041 0001:00166026  5047 0001:001660A8  5048 0001:001660DB
+  5049 0001:001660EE  5050 0001:001660FD  5051 0001:00166110  5052 0001:0016611B
+  5053 0001:0016612A  5054 0001:00166139  5055 0001:00166148  5057 0001:00166155
+  5058 0001:00166160  5059 0001:0016618E  5061 0001:0016619D  5063 0001:001661A2
+  5064 0001:001661B2  5065 0001:001661BC  5066 0001:001661DD  5061 0001:001661DE
+  5070 0001:001661EB  5071 0001:001661F3  5073 0001:0016620D  5074 0001:0016621E
+  5075 0001:0016623E  5076 0001:0016625E  5077 0001:00166280  5078 0001:00166293
+  5079 0001:00166299  5080 0001:001662BB  5081 0001:001662DB  5082 0001:0016630F
+  5071 0001:00166310  5084 0001:00166317  5093 0001:001663F0  5094 0001:00166422
+  5095 0001:0016642D  5096 0001:00166442  5097 0001:00166451  5098 0001:00166460
+  5099 0001:0016646F  5100 0001:00166477  5102 0001:0016647C  5103 0001:0016648C
+  5104 0001:0016649C  5105 0001:001664AD  5107 0001:001664C7  5108 0001:001664D2
+  5100 0001:001664D3  5109 0001:001664DB  5111 0001:001664F1  5112 0001:001664FE
+  5118 0001:00166542  5119 0001:00166564  5120 0001:00166582  5109 0001:00166583
+  5121 0001:0016658A  5122 0001:00166596  5123 0001:001665A8  5125 0001:001665BC
+  5126 0001:001665C9  5127 0001:001665DC  5128 0001:001665EF  5129 0001:0016660F
+  5123 0001:00166610  5130 0001:00166613  5131 0001:0016661E  5137 0001:001666A4
+  5138 0001:001666D0  5139 0001:001666DC  5140 0001:001666E8  5141 0001:001666FA
+  5142 0001:0016670C  5143 0001:0016671B  5144 0001:0016674B  5145 0001:0016675A
+  5146 0001:00166793  5148 0001:001667A6  5149 0001:001667EF  5150 0001:0016681A
+  5151 0001:00166836  5150 0001:00166879  5152 0001:0016687E  5154 0001:0016688A
+  5156 0001:00166890  5157 0001:001668AC  5156 0001:001668CB  5158 0001:001668D0
+  5160 0001:001668DC  5161 0001:001668E2  5162 0001:001668FF  5163 0001:0016690C
+  5165 0001:00166919  5166 0001:00166924  5167 0001:00166933  5168 0001:00166942
+  5169 0001:00166951  5170 0001:00166960  5173 0001:0016696F  5174 0001:0016699A
+  5176 0001:0016699F  5177 0001:001669AF  5178 0001:001669B9  5179 0001:001669CC
+  5180 0001:001669DF  5181 0001:001669EE  5182 0001:001669FD  5184 0001:00166A0C
+  5185 0001:00166A1B  5186 0001:00166A2A  5187 0001:00166A39  5189 0001:00166A4A
+  5190 0001:00166A59  5191 0001:00166A66  5174 0001:00166A67  5192 0001:00166A73
+  5195 0001:00166BB8  5196 0001:00166BDB  5200 0001:00166BE4  5202 0001:00166BF2
+  5203 0001:00166C01  5205 0001:00166C04  5207 0001:00166C12  5208 0001:00166C21
+  5210 0001:00166C24  5215 0001:00166C54  5216 0001:00166C78  5217 0001:00166C7D
+  5219 0001:00166C9A  5220 0001:00166CD1  5221 0001:00166CD4  5217 0001:00166CD7
+  5222 0001:00166CDA  5223 0001:00166CEB  5225 0001:00166D0C  5226 0001:00166D43
+  5228 0001:00166D60  5223 0001:00166D63  5230 0001:00166D68  5231 0001:00166D76
+  5232 0001:00166D80  5233 0001:00166D8E  5234 0001:00166D96  5237 0001:00166DAE
+  5238 0001:00166DBC  5241 0001:00166DC6  5242 0001:00166DD4  5243 0001:00166DE1
+  5244 0001:00166DEF  5245 0001:00166DFA  5251 0001:00166E48  5252 0001:00166E72
+  5253 0001:00166E78  5254 0001:00166E98  5255 0001:00166EC8  5257 0001:00166EE7
+  5258 0001:00166EF9  5259 0001:00166F3B  5261 0001:00166F53  5262 0001:00166F5E
+  5264 0001:00166F72  5265 0001:00166F81  5266 0001:00166F95  5268 0001:00166FAD
+  5269 0001:00166FB3  5270 0001:00166FBE  5272 0001:00166FD2  5273 0001:00166FE1
+  5274 0001:00166FF2  5276 0001:0016700A  5277 0001:00167015  5279 0001:00167026
+  5280 0001:00167035  5283 0001:00167046  5284 0001:00167051  5286 0001:00167060
+  5255 0001:00167063  5287 0001:0016706A  5293 0001:001670B0  5294 0001:001670EC
+  5295 0001:001670F8  5296 0001:0016710B  5298 0001:00167124  5299 0001:00167134
+  5300 0001:0016716E  5301 0001:00167184  5303 0001:001671B7  5304 0001:001671C8
+  5305 0001:001671D6  5306 0001:001671D8  5300 0001:001671D9  5307 0001:001671DC
+  5308 0001:001671F2  5309 0001:00167225  5307 0001:00167234  5310 0001:00167237
+  5312 0001:00167256  5314 0001:0016726E  5315 0001:0016727E  5316 0001:001672BB
+  5318 0001:001672DA  5320 0001:001672F2  5321 0001:00167302  5322 0001:0016733F
+  5324 0001:0016735E  5326 0001:00167376  5327 0001:00167386  5328 0001:00167396
+  5330 0001:001673B5  5336 0001:00167458  5337 0001:0016748B  5338 0001:0016749E
+  5339 0001:001674CD  5340 0001:001674D8  5341 0001:001674E2  5342 0001:001674EC
+  5343 0001:001674FA  5344 0001:00167517  5345 0001:00167523  5346 0001:00167529
+  5347 0001:00167535  5348 0001:00167552  5355 0001:00167588  5356 0001:001675B1
+  5357 0001:001675B8  5358 0001:001675C1  5360 0001:001675D6  5361 0001:001675F3
+  5362 0001:0016760B  5364 0001:00167618  5365 0001:0016761D  5366 0001:0016762A
+  5368 0001:0016762C  5358 0001:0016762D  5369 0001:00167630  5377 0001:0016765C
+  5378 0001:001676A0  5379 0001:001676A6  5380 0001:001676CB  5381 0001:001676E4
+  5382 0001:001676EA  5385 0001:00167703  5386 0001:00167720  5388 0001:0016772F
+  5389 0001:00167743  5390 0001:00167754  5391 0001:00167765  5393 0001:00167780
+  5394 0001:001677C0  5396 0001:0016781F  5397 0001:00167839  5391 0001:0016783A
+  5398 0001:00167843  5399 0001:00167850  5401 0001:00167861  5402 0001:00167875
+  5403 0001:00167886  5404 0001:00167897  5405 0001:001678AE  5404 0001:001678C9
+  5406 0001:001678CE  5407 0001:001678DB  5409 0001:001678EC  5416 0001:00167958
+  5417 0001:00167995  5418 0001:001679AD  5420 0001:001679BC  5421 0001:001679D1
+  5423 0001:001679E3  5424 0001:001679FB  5425 0001:00167A15  5427 0001:00167A4C
+  5428 0001:00167A5D  5429 0001:00167A7B  5430 0001:00167A99  5431 0001:00167AB7
+  5432 0001:00167AF9  5433 0001:00167B3B  5434 0001:00167B3D  5424 0001:00167B3E
+  5435 0001:00167B45  5444 0001:00167B9C  5445 0001:00167BCA  5446 0001:00167BD1
+  5447 0001:00167BD4  5448 0001:00167BE9  5449 0001:00167BFE  5450 0001:00167C11
+  5451 0001:00167C24  5452 0001:00167C37  5453 0001:00167C4B  5454 0001:00167C5F
+  5455 0001:00167C73  5456 0001:00167C76  5457 0001:00167C80  5458 0001:00167C93
+  5460 0001:00167CB8  5461 0001:00167CD8  5462 0001:00167CF8  5464 0001:00167D04
+  5466 0001:00167D2D  5467 0001:00167D4C  5468 0001:00167D5B  5470 0001:00167D63
+  5471 0001:00167D79  5472 0001:00167D94  5473 0001:00167DAF  5475 0001:00167DCA
+  5478 0001:00167DD3  5479 0001:00167DDA  5485 0001:00167E94  5486 0001:00167EC3
+  5487 0001:00167ECA  5489 0001:00167EFA  5490 0001:00167F1B  5492 0001:00167F20
+  5493 0001:00167F30  5494 0001:00167F36  5495 0001:00167F3A  5496 0001:00167F47
+  5497 0001:00167F4D  5498 0001:00167F62  5490 0001:00167F63  5500 0001:00167F6B
+  5507 0001:00167FA8  5508 0001:00167FE8  5509 0001:00167FF4  5510 0001:00167FFC
+  5512 0001:00168012  5513 0001:0016801F  5514 0001:00168040  5515 0001:00168058
+  5516 0001:00168070  5517 0001:00168083  5518 0001:00168092  5510 0001:00168093
+  5519 0001:0016809A  5520 0001:001680AE  5521 0001:001680C0  5522 0001:001680D3
+  5523 0001:001680E6  5524 0001:001680F9  5525 0001:00168108  5526 0001:00168117
+  5532 0001:00168158  5533 0001:0016817D  5534 0001:00168183  5535 0001:00168190
+  5536 0001:00168195  5539 0001:001681A3  5540 0001:001681B0  5542 0001:001681C0
+  5544 0001:001681D6  5545 0001:001681E2  5546 0001:001681FA  5547 0001:00168207
+  5548 0001:0016822F  5549 0001:00168240  5550 0001:0016824D  5551 0001:0016826B
+  5552 0001:00168289  5553 0001:00168299  5557 0001:001682AB  5558 0001:001682BB
+  5563 0001:001682D0  5565 0001:001682E6  5566 0001:001682F2  5567 0001:0016830A
+  5568 0001:00168317  5569 0001:0016833F  5570 0001:00168350  5571 0001:0016835D
+  5572 0001:0016837B  5573 0001:00168399  5574 0001:001683A9  5578 0001:001683B8
+  5579 0001:001683C8  5583 0001:001683D8  5590 0001:00168548  5591 0001:0016856A
+  5592 0001:00168572  5593 0001:00168581  5594 0001:00168593  5596 0001:001685B2
+  5597 0001:001685C4  5599 0001:001685EC  5600 0001:001685FF  5601 0001:00168628
+  5602 0001:0016867C  5604 0001:00168689  5605 0001:0016869C  5608 0001:0016869E
+  5594 0001:001686A1  5609 0001:001686A8  5612 0001:00168708  5613 0001:0016870B
+  5614 0001:0016871D  5615 0001:00168732  5616 0001:00168747  5620 0001:0016874C
+  5621 0001:00168758  5625 0001:0016875C  5626 0001:00168766  5629 0001:00168768
+  5630 0001:0016876B  5631 0001:00168772  5632 0001:0016877E  5633 0001:00168785
+  5634 0001:00168792  5635 0001:0016879B  5642 0001:001687A0  5643 0001:001687CC
+  5644 0001:001687D6  5645 0001:001687E0  5646 0001:00168810  5648 0001:00168836
+  5650 0001:00168840  5651 0001:00168850  5652 0001:00168868  5653 0001:00168876
+  5654 0001:00168881  5656 0001:001688A0  5657 0001:001688B2  5659 0001:001688C1
+  5660 0001:001688E5  5662 0001:00168909  5665 0001:00168928  5667 0001:00168948
+  5668 0001:00168968  5670 0001:00168988  5671 0001:001689A5  5674 0001:001689A7
+  5654 0001:001689AA  5677 0001:001689B3  5678 0001:001689C4  5679 0001:001689CE
+  5687 0001:00168A3C  5688 0001:00168A59  5689 0001:00168A60  5691 0001:00168A6C
+  5692 0001:00168A72  5693 0001:00168A78  5697 0001:00168A87  5698 0001:00168A8D
+  5699 0001:00168A93  5701 0001:00168AA0  5702 0001:00168AAD  5703 0001:00168ABF
+  5704 0001:00168AEF  5707 0001:00168AFA  5708 0001:00168B14  5709 0001:00168B1A
+  5711 0001:00168B34  5712 0001:00168B40  5713 0001:00168B4C  5714 0001:00168B59
+  5715 0001:00168B62  5718 0001:00168BD8  5719 0001:00168BDC  5721 0001:00168BE2
+  5722 0001:00168BF5  5724 0001:00168C0E  5729 0001:00168C14  5730 0001:00168C1C
+  5731 0001:00168C25  5734 0001:00168C32  5735 0001:00168C46  5737 0001:00168C51
+  5738 0001:00168C53  5739 0001:00168C5E  5740 0001:00168C62  5741 0001:00168C6E
+  5744 0001:00168C70  5745 0001:00168C81  5744 0001:00168C92  5747 0001:00168C95
+  5750 0001:00168C9C  5751 0001:00168C9F  5752 0001:00168CAC  5753 0001:00168CB9
+  5754 0001:00168CC6  5759 0001:00168CC8  5760 0001:00168CD3  5761 0001:00168CD8
+  5762 0001:00168CDD  5763 0001:00168CE4  5764 0001:00168CEC  5765 0001:00168CF4
+  5766 0001:00168CFC  5768 0001:00168D11  5769 0001:00168D1E  5770 0001:00168D22
+  5771 0001:00168D34  5772 0001:00168D38  5773 0001:00168D4A  5774 0001:00168D4F
+  5775 0001:00168D61  5776 0001:00168D67  5777 0001:00168D79  5778 0001:00168D7F
+  5779 0001:00168D91  5780 0001:00168D97  5782 0001:00168DA9  5784 0001:00168DBB
+  5786 0001:00168DCC  5787 0001:00168DD9  5788 0001:00168DDD  5789 0001:00168DE9
+  5790 0001:00168DED  5791 0001:00168DF9  5792 0001:00168DFE  5793 0001:00168E0A
+  5794 0001:00168E10  5796 0001:00168E1C  5798 0001:00168E28  5800 0001:00168E3D
+  5801 0001:00168E4A  5802 0001:00168E4E  5803 0001:00168E5D  5804 0001:00168E61
+  5805 0001:00168E70  5806 0001:00168E75  5807 0001:00168E84  5808 0001:00168E8A
+  5809 0001:00168E99  5810 0001:00168E9F  5811 0001:00168EAE  5812 0001:00168EB4
+  5814 0001:00168EC3  5816 0001:00168ED0  5819 0001:00168ED8  5820 0001:00168F01
+  5821 0001:00168F4D  5822 0001:00168F99  5823 0001:00168FA3  5826 0001:00169004
+  5827 0001:0016900E  5829 0001:00169027  5830 0001:00169035  5831 0001:00169049
+  5832 0001:0016905A  5833 0001:00169065  5834 0001:00169076  5835 0001:00169087
+  5836 0001:00169098  5838 0001:001690A9  5841 0001:001690B4  5842 0001:001690E9
+  5843 0001:001690F0  5844 0001:001690FD  5845 0001:0016911F  5846 0001:00169141
+  5848 0001:0016914C  5849 0001:0016916B  5853 0001:0016918C  5854 0001:001691AB
+  5856 0001:001691CA  5858 0001:001691D4  5859 0001:001691E1  5860 0001:001691FD
+  5861 0001:00169219  5863 0001:00169224  5864 0001:00169243  5868 0001:00169264
+  5869 0001:00169283  5872 0001:001692A2  5875 0001:001692D0  5876 0001:001692D6
+  5877 0001:001692EA  5878 0001:001692FE  5880 0001:00169302  5881 0001:0016930F
+  5885 0001:0016931F  5886 0001:0016932C  5887 0001:00169339  5889 0001:00169344
+  5892 0001:00169348  5893 0001:0016934B  5894 0001:00169357  5895 0001:00169365
+  5896 0001:00169370  5902 0001:00169378  5903 0001:001693AD  5904 0001:001693C0
+  5905 0001:001693D3  5906 0001:001693E6  5907 0001:001693FE  5908 0001:0016940D
+  5909 0001:0016942B  5910 0001:00169443  5911 0001:00169452  5912 0001:00169470
+  5913 0001:00169488  5915 0001:00169497  5916 0001:001694B4  5918 0001:001694BD
+  5919 0001:001694CE  5922 0001:00169500  5923 0001:00169527  5924 0001:0016953A
+  5925 0001:0016954D  5926 0001:00169557  5927 0001:00169561  5930 0001:00169588
+  5932 0001:0016958F  5933 0001:00169598  5934 0001:001695A8  5935 0001:001695DC
+  5937 0001:00169613  5941 0001:00169618  5942 0001:0016962C  5944 0001:0016965A
+  5945 0001:00169675  5946 0001:00169692  5947 0001:001696AC  5950 0001:001696BF
+  5952 0001:001696C4  5953 0001:001696D5  5954 0001:001696F2  5955 0001:0016970C
+  5956 0001:0016971A  5960 0001:00169727  5961 0001:00169744  5963 0001:00169754
+  5969 0001:00169784  5970 0001:001697BD  5971 0001:001697BF  5974 0001:00169843
+  5975 0001:00169852  5990 0001:0016989C  5991 0001:001698E3  5992 0001:001698F1
+  5993 0001:001698F6  5994 0001:00169910  5995 0001:00169912  5996 0001:00169936
+  5997 0001:00169949  5998 0001:0016995C  5999 0001:00169974  6000 0001:0016998C
+  6001 0001:0016999D  6002 0001:001699A7  6003 0001:001699B8  6004 0001:001699C9
+  6005 0001:001699DA  6006 0001:001699E4  6007 0001:001699F8  6008 0001:00169A05
+  6009 0001:00169A19  6012 0001:00169A26  6013 0001:00169A3D  6014 0001:00169A55
+  6015 0001:00169A77  6016 0001:00169AA8  6017 0001:00169AB8  6018 0001:00169AC8
+  6019 0001:00169AD4  6021 0001:00169ADD  6022 0001:00169AEF  6023 0001:00169B07
+  6025 0001:00169B2A  6026 0001:00169B3C  6027 0001:00169B62  6029 0001:00169B72
+  6030 0001:00169B87  6031 0001:00169B9A  6032 0001:00169BB7  6033 0001:00169BCA
+  6034 0001:00169BE6  6035 0001:00169C12  6036 0001:00169C24  6039 0001:00169C45
+  6040 0001:00169C5D  6041 0001:00169C6C  6043 0001:00169C97  6046 0001:00169CBC
+  6023 0001:00169CBF  6047 0001:00169CCB  6048 0001:00169CE7  6049 0001:00169D06
+  6050 0001:00169D22  6051 0001:00169D44  6052 0001:00169D4F  6053 0001:00169D5E
+  6054 0001:00169D70  6055 0001:00169D7D  6059 0001:00169D81  6061 0001:00169D90
+  6062 0001:00169D9D  6063 0001:00169DB3  6064 0001:00169DC0  6065 0001:00169DDF
+  6067 0001:00169DFE  6076 0001:00169EC4  6077 0001:00169F0B  6078 0001:00169F10
+  6079 0001:00169F21  6082 0001:00169F3C  6083 0001:00169F4B  6084 0001:00169F58
+  6085 0001:00169F65  6086 0001:00169F72  6087 0001:00169F82  6088 0001:00169F92
+  6089 0001:00169FA2  6091 0001:00169FBD  6092 0001:00169FEF  6094 0001:00169FFF
+  6095 0001:0016A018  6096 0001:0016A054  6098 0001:0016A063  6099 0001:0016A06C
+  6101 0001:0016A0A0  6103 0001:0016A0BD  6089 0001:0016A0BE  6105 0001:0016A0C7
+  6116 0001:0016A10C  6117 0001:0016A152  6118 0001:0016A157  6119 0001:0016A169
+  6120 0001:0016A176  6121 0001:0016A188  6124 0001:0016A1A3  6125 0001:0016A1AF
+  6126 0001:0016A1BC  6127 0001:0016A1CB  6129 0001:0016A1E6  6130 0001:0016A217
+  6132 0001:0016A227  6133 0001:0016A23F  6134 0001:0016A261  6135 0001:0016A287
+  6137 0001:0016A2D5  6138 0001:0016A2E8  6139 0001:0016A2F5  6141 0001:0016A2FC
+  6142 0001:0016A30B  6143 0001:0016A329  6144 0001:0016A342  6146 0001:0016A34A
+  6147 0001:0016A35D  6148 0001:0016A37D  6150 0001:0016A389  6151 0001:0016A396
+  6152 0001:0016A3B6  6156 0001:0016A3D6  6127 0001:0016A3D7  6158 0001:0016A3E0
+  6168 0001:0016A484  6169 0001:0016A4D3  6170 0001:0016A4D5  6171 0001:0016A4E7
+  6172 0001:0016A4F4  6173 0001:0016A506  6176 0001:0016A51E  6177 0001:0016A540
+  6178 0001:0016A558  6179 0001:0016A57A  6180 0001:0016A58F  6181 0001:0016A5B1
+  6183 0001:0016A5C6  6184 0001:0016A5D9  6185 0001:0016A606  6186 0001:0016A615
+  6187 0001:0016A620  6188 0001:0016A62B  6189 0001:0016A62F  6191 0001:0016A64A
+  6192 0001:0016A67B  6193 0001:0016A6AC  6195 0001:0016A6CC  6196 0001:0016A6E5
+  6197 0001:0016A705  6199 0001:0016A70D  6200 0001:0016A720  6201 0001:0016A740
+  6202 0001:0016A74F  6203 0001:0016A76C  6205 0001:0016A778  6206 0001:0016A785
+  6207 0001:0016A7A5  6211 0001:0016A7C5  6189 0001:0016A7C6  6213 0001:0016A7CF
+  6224 0001:0016A850  6225 0001:0016A89C  6226 0001:0016A89E  6227 0001:0016A8B0
+  6228 0001:0016A8BD  6229 0001:0016A8CF  6232 0001:0016A8E7  6233 0001:0016A909
+  6234 0001:0016A91E  6235 0001:0016A940  6237 0001:0016A955  6238 0001:0016A978
+  6239 0001:0016A98E  6241 0001:0016A9A9  6242 0001:0016A9DA  6243 0001:0016AA0B
+  6245 0001:0016AA2B  6246 0001:0016AA44  6247 0001:0016AA60  6249 0001:0016AA68
+  6250 0001:0016AA7B  6251 0001:0016AA9B  6253 0001:0016AAA7  6254 0001:0016AAB4
+  6255 0001:0016AAD4  6259 0001:0016AAF4  6239 0001:0016AAF5  6261 0001:0016AAFE
+  6265 0001:0016AB68  6266 0001:0016AB70  6267 0001:0016AB8B  6276 0001:0016AB8C
+  6277 0001:0016ABB8  6278 0001:0016ABBC  6279 0001:0016ABCB  6280 0001:0016ABD5
+  6282 0001:0016ABEF  6283 0001:0016AC00  6284 0001:0016AC20  6285 0001:0016AC40
+  6287 0001:0016AC6E  6288 0001:0016AC72  6290 0001:0016AC74  6280 0001:0016AC75
+  6291 0001:0016AC7C  6293 0001:0016AC82  6294 0001:0016AC8A  6296 0001:0016AC8F
+  6297 0001:0016ACA2  6298 0001:0016ACB5  6299 0001:0016ACC8  6300 0001:0016ACDB
+  6301 0001:0016ACEE  6302 0001:0016ACFC  6303 0001:0016AD19  6304 0001:0016AD29
+  6305 0001:0016AD51  6306 0001:0016AD5D  6307 0001:0016AD7F  6308 0001:0016ADA1
+  6310 0001:0016ADD9  6318 0001:0016AE70  6319 0001:0016AE9D  6320 0001:0016AEA5
+  6321 0001:0016AEAC  6322 0001:0016AEBD  6324 0001:0016AECB  6325 0001:0016AECE
+  6326 0001:0016AEE5  6327 0001:0016AEE7  6321 0001:0016AEE8  6328 0001:0016AEEB
+  6330 0001:0016AEF1  6331 0001:0016AEF9  6333 0001:0016AEFE  6334 0001:0016AF01
+  6335 0001:0016AF1E  6337 0001:0016AF2D  6338 0001:0016AF45  6340 0001:0016AF4A
+  6341 0001:0016AF66  6342 0001:0016AF7C  6344 0001:0016AF82  6345 0001:0016AF92
+  6347 0001:0016AF97  6348 0001:0016AFAA  6350 0001:0016AFBD  6351 0001:0016AFC8
+  6353 0001:0016AFF3  6354 0001:0016B001  6355 0001:0016B00F  6357 0001:0016B015
+  6358 0001:0016B035  6360 0001:0016B03A  6361 0001:0016B06D  6362 0001:0016B0A0
+  6363 0001:0016B0CD  6364 0001:0016B0EC  6365 0001:0016B102  6366 0001:0016B129
+  6367 0001:0016B12F  6369 0001:0016B139  6371 0001:0016B171  6376 0001:0016B218
+  6377 0001:0016B244  6379 0001:0016B255  6380 0001:0016B272  6384 0001:0016B292
+  6385 0001:0016B29F  6387 0001:0016B2AB  6389 0001:0016B2BB  6391 0001:0016B300
+  6396 0001:0016B348  6397 0001:0016B369  6399 0001:0016B38B  6402 0001:0016B3FC
+  6403 0001:0016B403  6405 0001:0016B411  6406 0001:0016B426  6407 0001:0016B445
+  6408 0001:0016B457  6409 0001:0016B468  6411 0001:0016B479  6413 0001:0016B487
+  6414 0001:0016B49C  6415 0001:0016B4BB  6416 0001:0016B4CD  6417 0001:0016B4DB
+  6419 0001:0016B4E9  6421 0001:0016B4F7  6422 0001:0016B508  6423 0001:0016B523
+  6424 0001:0016B535  6425 0001:0016B543  6427 0001:0016B54F  6434 0001:0016B57C
+  6435 0001:0016B5BE  6436 0001:0016B5C6  6437 0001:0016B5C9  6439 0001:0016B5DC
+  6440 0001:0016B5ED  6442 0001:0016B609  6443 0001:0016B60C  6445 0001:0016B611
+  6446 0001:0016B622  6448 0001:0016B63B  6449 0001:0016B63E  6451 0001:0016B643
+  6453 0001:0016B694  6454 0001:0016B6B7  6457 0001:0016B6D8  6459 0001:0016B701
+  6461 0001:0016B714  6462 0001:0016B727  6465 0001:0016B73D  6466 0001:0016B762
+  6468 0001:0016B77C  6469 0001:0016B78D  6471 0001:0016B7B1  6472 0001:0016B7C4
+  6473 0001:0016B7ED  6474 0001:0016B841  6476 0001:0016B84E  6477 0001:0016B899
+  6480 0001:0016B89B  6466 0001:0016B89C  6483 0001:0016B8A5  6485 0001:0016B8B4
+  6486 0001:0016B8C2  6488 0001:0016B8EB  6490 0001:0016B90F  6497 0001:0016B9B8
+  6499 0001:0016B9DE  6500 0001:0016B9E7  6501 0001:0016B9F0  6502 0001:0016BA03
+  6503 0001:0016BA12  6504 0001:0016BA19  6505 0001:0016BA20  6506 0001:0016BA23
+  6507 0001:0016BA30  6509 0001:0016BA36  6510 0001:0016BA51  6512 0001:0016BA5E
+  6513 0001:0016BA73  6515 0001:0016BAC1  6516 0001:0016BADA  6517 0001:0016BADF
+  6518 0001:0016BAF9  6519 0001:0016BAFF  6520 0001:0016BB19  6522 0001:0016BB1F
+  6509 0001:0016BB22  6523 0001:0016BB2B  6525 0001:0016BB34  6526 0001:0016BB3B
+  6527 0001:0016BB4B  6529 0001:0016BB5A  6531 0001:0016BB60  6532 0001:0016BB6D
+  6533 0001:0016BB74  6537 0001:0016BB86  6538 0001:0016BB93  6539 0001:0016BB9A
+  6542 0001:0016BBA8  6546 0001:0016BC00  6547 0001:0016BC09  6548 0001:0016BC26
+  6554 0001:0016BC2C  6557 0001:0016BC51  6558 0001:0016BC99  6559 0001:0016BCAE
+  6560 0001:0016BCC3  6561 0001:0016BD11  6562 0001:0016BD31  6563 0001:0016BD46
+  6564 0001:0016BD78  6565 0001:0016BD80  6567 0001:0016BD85  6568 0001:0016BD95
+  6569 0001:0016BDA5  6571 0001:0016BDAA  6572 0001:0016BDBA  6573 0001:0016BDCA
+  6577 0001:0016BDE5  6579 0001:0016BE02  6581 0001:0016BE19  6569 0001:0016BE1A
+  6582 0001:0016BE22  6584 0001:0016BE3B  6585 0001:0016BE61  6586 0001:0016BE6E
+  6588 0001:0016BE84  6565 0001:0016BE85  6589 0001:0016BE91  6590 0001:0016BEB1
+  6595 0001:0016BF34  6596 0001:0016BF57  6597 0001:0016BF59  6598 0001:0016BF7E
+  6599 0001:0016BFA3  6600 0001:0016BFB2  6601 0001:0016BFC1  6602 0001:0016BFC3
+  6608 0001:0016C040  6609 0001:0016C05D  6611 0001:0016C066  6612 0001:0016C069
+  6613 0001:0016C081  6615 0001:0016C08F  6616 0001:0016C098  6617 0001:0016C0B1
+  6618 0001:0016C0CF  6619 0001:0016C0D4  6612 0001:0016C0D7  6620 0001:0016C0DC
+  6622 0001:0016C0E5  6623 0001:0016C0F2  6624 0001:0016C0F9  6625 0001:0016C100
+  6627 0001:0016C105  6629 0001:0016C125  6630 0001:0016C12E  6631 0001:0016C135
+  6633 0001:0016C150  6634 0001:0016C159  6635 0001:0016C15F  6636 0001:0016C17E
+  6637 0001:0016C188  6638 0001:0016C1AC  6639 0001:0016C1C6  6640 0001:0016C1CA
+  6641 0001:0016C1E4  6642 0001:0016C1FE  6643 0001:0016C211  6645 0001:0016C21A
+  6647 0001:0016C235  6648 0001:0016C23F  6649 0001:0016C249  6650 0001:0016C256
+  6653 0001:0016C25D  6657 0001:0016C280  6658 0001:0016C28A  6659 0001:0016C291
+  6662 0001:0016C294  6663 0001:0016C297  6664 0001:0016C2A9  6666 0001:0016C2B5
+  6667 0001:0016C2BE  6671 0001:0016C2CA  6672 0001:0016C2D3  6674 0001:0016C2DD
+  6677 0001:0016C2E0  6679 0001:0016C2E3  6681 0001:0016C2EC  6682 0001:0016C2F9
+  6686 0001:0016C308  6687 0001:0016C315  6688 0001:0016C32D  6690 0001:0016C336
+  6695 0001:0016C338  6698 0001:0016C33F  6699 0001:0016C349  6700 0001:0016C34D
+  6701 0001:0016C355  6703 0001:0016C359  6704 0001:0016C365  6706 0001:0016C369
+  6707 0001:0016C377  6708 0001:0016C38E  6709 0001:0016C39E  6713 0001:0016C3C0
+  6714 0001:0016C3DA  6715 0001:0016C3FA  6716 0001:0016C414  6719 0001:0016C434
+  6722 0001:0016C438  6723 0001:0016C45B  6724 0001:0016C469  6725 0001:0016C476
+  6726 0001:0016C485  6729 0001:0016C4AC  6730 0001:0016C4AF  6731 0001:0016C4B6
+  6732 0001:0016C4D1  6733 0001:0016C4EC  6734 0001:0016C4F3  6740 0001:0016C4F8
+  6741 0001:0016C51B  6742 0001:0016C539  6743 0001:0016C558  6744 0001:0016C577
+  6745 0001:0016C58A  6746 0001:0016C59D  6751 0001:0016C5D0  6752 0001:0016C5EA
+  6755 0001:0016C632  6756 0001:0016C643  6757 0001:0016C650  6763 0001:0016C6D4
+  6764 0001:0016C6DD  6766 0001:0016C6F2  6767 0001:0016C702  6768 0001:0016C725
+  6764 0001:0016C726  6769 0001:0016C729  6770 0001:0016C742  6772 0001:0016C757
+  6773 0001:0016C767  6774 0001:0016C78A  6770 0001:0016C78B  6775 0001:0016C78E
+  6776 0001:0016C7A7  6786 0001:0016C7B0  6787 0001:0016C7D4  6788 0001:0016C7E2
+  6790 0001:0016C809  6792 0001:0016C824  6793 0001:0016C82C  6795 0001:0016C83B
+  6796 0001:0016C848  6797 0001:0016C863  6798 0001:0016C871  6799 0001:0016C87E
+  6800 0001:0016C88C  6803 0001:0016C8F1  6804 0001:0016C900  6805 0001:0016C915
+  6806 0001:0016C91D  6807 0001:0016C934  6806 0001:0016C95D  6808 0001:0016C960
+  6809 0001:0016C97A  6810 0001:0016C98F  6811 0001:0016C9B7  6812 0001:0016C9E9
+  6813 0001:0016CA2C  6814 0001:0016CA8A  6815 0001:0016CABD  6816 0001:0016CAED
+  6817 0001:0016CB04  6818 0001:0016CB36  6819 0001:0016CB79  6820 0001:0016CBBC
+  6821 0001:0016CC0A  6822 0001:0016CC55  6823 0001:0016CC87  6824 0001:0016CCB5
+  6825 0001:0016CCE7  6827 0001:0016CCFA  6828 0001:0016CD48  6829 0001:0016CD93
+  6831 0001:0016CDC5  6832 0001:0016CDF3  6834 0001:0016CE11  6835 0001:0016CE21
+  6837 0001:0016CE38  6838 0001:0016CE4A  6839 0001:0016CE78  6841 0001:0016CEDC
+  6832 0001:0016CEDF  6842 0001:0016CEE6  6844 0001:0016CF0F  6845 0001:0016CF1A
+  6846 0001:0016CF48  6848 0001:0016CFAC  6849 0001:0016CFDA  6850 0001:0016D043
+  6852 0001:0016D061  6853 0001:0016D071  6855 0001:0016D088  6856 0001:0016D09A
+  6857 0001:0016D0C8  6859 0001:0016D12C  6850 0001:0016D12F  6860 0001:0016D136
+  6863 0001:0016D175  6864 0001:0016D180  6865 0001:0016D1AE  6867 0001:0016D212
+  6869 0001:0016D225  6870 0001:0016D257  6871 0001:0016D265  6872 0001:0016D271
+  6873 0001:0016D277  6874 0001:0016D280  6875 0001:0016D293  6876 0001:0016D2A8
+  6877 0001:0016D2B8  6878 0001:0016D2C4  6879 0001:0016D2CE  6882 0001:0016D2D2
+  6883 0001:0016D2DC  6884 0001:0016D2E8  6885 0001:0016D2E9  6880 0001:0016D2EE
+  6888 0001:0016D345  6890 0001:0016D354  6891 0001:0016D382  6893 0001:0016D3B0
+  6894 0001:0016D3C5  6895 0001:0016D3DA  6896 0001:0016D3ED  6897 0001:0016D3F5
+  6898 0001:0016D3FD  6899 0001:0016D409  6900 0001:0016D40F  6901 0001:0016D41E
+  6902 0001:0016D427  6903 0001:0016D435  6906 0001:0016D72C  6907 0001:0016D72F
+  6908 0001:0016D73F  6909 0001:0016D757  6910 0001:0016D765  6914 0001:0016D774
+  6915 0001:0016D77E  6916 0001:0016D783  6920 0001:0016D784  6922 0001:0016D787
+  6925 0001:0016D78C  6926 0001:0016D78F  6927 0001:0016D79F  6928 0001:0016D7B7
+  6929 0001:0016D7C5  6933 0001:0016D7D8  6934 0001:0016D7E2  6935 0001:0016D7E7
+  6939 0001:0016D7E8  6941 0001:0016D7EB  6945 0001:0016D7F0  6946 0001:0016D7F6
+  6947 0001:0016D7FF  6949 0001:0016D811  6950 0001:0016D81D  6951 0001:0016D826
+  6953 0001:0016D82D  6957 0001:0016D834  6958 0001:0016D83A  6959 0001:0016D843
+  6961 0001:0016D855  6962 0001:0016D861  6963 0001:0016D86A  6965 0001:0016D871
+  6970 0001:0016D878  6971 0001:0016D896  6972 0001:0016D89D  6973 0001:0016D8A6
+  6974 0001:0016D8AF  6975 0001:0016D8B6  6977 0001:0016D8D3  6978 0001:0016D8E0
+  6979 0001:0016D8EE  6982 0001:0016D900  6983 0001:0016D90E  6985 0001:0016D915
+  6986 0001:0016D930  6985 0001:0016D96C  6987 0001:0016D96F  6991 0001:0016D97F
+  6992 0001:0016D98B  6993 0001:0016D9AB  6994 0001:0016D9CD  6992 0001:0016D9EA
+  6995 0001:0016D9ED  6997 0001:0016DA1E  7000 0001:0016DA74  7001 0001:0016DA77
+  7002 0001:0016DA89  7003 0001:0016DA9E  7004 0001:0016DABD  7008 0001:0016DAC0
+  7009 0001:0016DAC3  7010 0001:0016DADB  7011 0001:0016DAE2  7014 0001:0016DAE8
+  7015 0001:0016DAEC  7016 0001:0016DB0B  7018 0001:0016DB1E  7019 0001:0016DB2E
+  7023 0001:0016DB34  7024 0001:0016DB44  7025 0001:0016DB49  7031 0001:0016DB4C
+  7032 0001:0016DB51  7035 0001:0016DB54  7036 0001:0016DB58  7038 0001:0016DB5E
+  7039 0001:0016DB71  7040 0001:0016DB84  7041 0001:0016DB97  7042 0001:0016DBAA
+  7044 0001:0016DBBD  7046 0001:0016DBC3  7047 0001:0016DBD6  7048 0001:0016DBE9
+  7049 0001:0016DBFC  7050 0001:0016DC0F  7052 0001:0016DC22  7055 0001:0016DC28
+  7056 0001:0016DC2B  7057 0001:0016DC3D  7058 0001:0016DC49  7060 0001:0016DC59
+  7061 0001:0016DC6A  7064 0001:0016DC6C  7065 0001:0016DC6F  7066 0001:0016DC81
+  7067 0001:0016DC96  7068 0001:0016DCB5  7069 0001:0016DCC7  7070 0001:0016DCD8
+  7073 0001:0016DCDC  7074 0001:0016DCDF  7075 0001:0016DCEC  7079 0001:0016DCF4
+  7080 0001:0016DD04  7084 0001:0016DD08  7085 0001:0016DD18  7089 0001:0016DD1C
+  7090 0001:0016DD2C  7094 0001:0016DD30  7095 0001:0016DD40  7099 0001:0016DD44
+  7100 0001:0016DD4A  7101 0001:0016DD80  7102 0001:0016DD9F  7103 0001:0016DDBB
+  7104 0001:0016DDD7  7105 0001:0016DDF3  7106 0001:0016DE0F  7108 0001:0016DE29
+  7112 0001:0016DE30  7113 0001:0016DE36  7114 0001:0016DE6C  7115 0001:0016DE8B
+  7116 0001:0016DEA7  7117 0001:0016DEC3  7118 0001:0016DEDF  7119 0001:0016DEFB
+  7121 0001:0016DF15
+
+Line numbers for fGraphs(fGraphs.pas) segment .itext
+
+  7123 0002:00001040  7124 0002:00001049  7125 0002:00001050
+
+Line numbers for uDCSumm(uDCSumm.pas) segment .text
+
+    72 0001:0016E098    73 0001:0016E0C3    74 0001:0016E0CE    75 0001:0016E11A
+    76 0001:0016E13F    78 0001:0016E154    82 0001:0016E26D    88 0001:0016E2F8
+    89 0001:0016E30A    90 0001:0016E313    91 0001:0016E322    95 0001:0016E33C
+    96 0001:0016E347    97 0001:0016E34F    98 0001:0016E35B   100 0001:0016E397
+
+Line numbers for uTIU(uTIU.pas) segment .text
+
+   108 0001:0016E554   109 0001:0016E57B   110 0001:0016E586   113 0001:0016E5F9
+   118 0001:0016E638   119 0001:0016E663   120 0001:0016E66E   121 0001:0016E68B
+   123 0001:0016E732   124 0001:0016E757   126 0001:0016E76C   128 0001:0016E80E
+   134 0001:0016E864   135 0001:0016E876   136 0001:0016E87F   137 0001:0016E88E
+   141 0001:0016E8A8   142 0001:0016E8B3   143 0001:0016E8BB   144 0001:0016E8C7
+   165 0001:0016E8D5
+
+Line numbers for MSXML_TLB(MSXML_TLB.pas) segment .text
+
+  2252 0001:0016E9A0  2253 0001:0016E9B6  2254 0001:0016E9D2  3546 0001:0016EA04
+
+Line numbers for rTemplates(Templates\rTemplates.pas) segment .text
+
+    61 0001:0016EA04    62 0001:0016EA07    63 0001:0016EA27    66 0001:0016EA4C
+    67 0001:0016EA74    68 0001:0016EA82    70 0001:0016EAD1    71 0001:0016EAD3
+    74 0001:0016EB2C    75 0001:0016EB4B    76 0001:0016EB60    78 0001:0016EB74
+    79 0001:0016EB8D    82 0001:0016EBDC    83 0001:0016EBFB    84 0001:0016EC10
+    86 0001:0016EC24    87 0001:0016EC3D    93 0001:0016EC8C    96 0001:0016ECA9
+    97 0001:0016ECB7    98 0001:0016ECD1    99 0001:0016ECE9   100 0001:0016ED10
+   101 0001:0016ED2B   102 0001:0016ED5E   103 0001:0016ED79   104 0001:0016ED8B
+   103 0001:0016EDDA   105 0001:0016EDDD   106 0001:0016EDE2   107 0001:0016EDF6
+   108 0001:0016EE0B   110 0001:0016EE1D   128 0001:0016EE6C   131 0001:0016EEB9
+   132 0001:0016EEC7   133 0001:0016EEF3   134 0001:0016EF0B   135 0001:0016EF2A
+   136 0001:0016EF45   138 0001:0016EF5C   139 0001:0016EF7E   140 0001:0016EF82
+   141 0001:0016EFEB   136 0001:0016EFEC   142 0001:0016EFF5   143 0001:0016EFFA
+   145 0001:0016F011   148 0001:0016F058   149 0001:0016F07B   150 0001:0016F08B
+   156 0001:0016F0D4   159 0001:0016F101   160 0001:0016F10F   161 0001:0016F12B
+   162 0001:0016F143   163 0001:0016F162   164 0001:0016F17D   165 0001:0016F18F
+   164 0001:0016F1D1   166 0001:0016F1D4   168 0001:0016F1D9   174 0001:0016F224
+   175 0001:0016F241   179 0001:0016F251   180 0001:0016F25F   181 0001:0016F276
+   182 0001:0016F28E   183 0001:0016F2A0   182 0001:0016F2DF   184 0001:0016F2E2
+   187 0001:0016F2E7   191 0001:0016F324   192 0001:0016F333   196 0001:0016F354
+   197 0001:0016F363   203 0001:0016F38C   206 0001:0016F3A9   207 0001:0016F3B7
+   208 0001:0016F3D3   209 0001:0016F3EB   210 0001:0016F3FD   209 0001:0016F456
+   211 0001:0016F459   213 0001:0016F45E   216 0001:0016F4C0   217 0001:0016F4E5
+   218 0001:0016F533   221 0001:0016F580   222 0001:0016F589   223 0001:0016F5AB
+   224 0001:0016F5B8   227 0001:0016F5E4   228 0001:0016F606   229 0001:0016F61F
+   230 0001:0016F633   233 0001:0016F674   234 0001:0016F68A   235 0001:0016F68E
+   236 0001:0016F6AF   237 0001:0016F6BC   240 0001:0016F704   241 0001:0016F724
+   242 0001:0016F736   245 0001:0016F758   246 0001:0016F75B   247 0001:0016F776
+   250 0001:0016F7A0   251 0001:0016F7BF   252 0001:0016F7D8   258 0001:0016F824
+   259 0001:0016F828   260 0001:0016F838   261 0001:0016F847   262 0001:0016F855
+   263 0001:0016F86A   264 0001:0016F879   265 0001:0016F881   267 0001:0016F8A3
+   269 0001:0016F8B3   270 0001:0016F8C0   274 0001:0016F8E4   275 0001:0016F909
+   276 0001:0016F933   279 0001:0016F980   280 0001:0016F99C   281 0001:0016F9C8
+   284 0001:0016FA14   285 0001:0016FA1A   286 0001:0016FA30   289 0001:0016FA50
+   290 0001:0016FA59   291 0001:0016FA73   294 0001:0016FA98   295 0001:0016FAA1
+   296 0001:0016FAC3   297 0001:0016FAD0   302 0001:0016FAF8   303 0001:0016FB01
+   304 0001:0016FB23   305 0001:0016FB30   308 0001:0016FB50   309 0001:0016FB56
+   310 0001:0016FB6C   311 0001:0016FB79   314 0001:0016FB98   315 0001:0016FB9E
+   316 0001:0016FBB4   317 0001:0016FBC1   320 0001:0016FBE8   321 0001:0016FBFC
+   323 0001:0016FC05   324 0001:0016FC0C   326 0001:0016FC34   327 0001:0016FC3B
+   330 0001:0016FC88   331 0001:0016FC91   332 0001:0016FCA0   335 0001:0016FCBC
+   336 0001:0016FCD8   337 0001:0016FD04   340 0001:0016FD4C   341 0001:0016FD52
+   342 0001:0016FD68   345 0001:0016FD88   346 0001:0016FD8E   347 0001:0016FDA4
+   353 0001:0016FDC4   356 0001:0016FDFA   357 0001:0016FE08   358 0001:0016FE34
+   359 0001:0016FE4C   360 0001:0016FE5E   359 0001:0016FEA9   361 0001:0016FEAC
+   363 0001:0016FEB1   364 0001:0016FEBE   368 0001:0016FEF4   369 0001:0016FEFE
+   377 0001:0016FF1C   378 0001:0016FF22   379 0001:0016FF3A   380 0001:0016FF4E
+   383 0001:0016FF6C   384 0001:0016FF8B   385 0001:0016FFC1   390 0001:00170018
+   393 0001:00170035   394 0001:00170043   395 0001:0017005C   396 0001:00170074
+   397 0001:00170086   396 0001:001700D2   398 0001:001700D5   400 0001:001700DA
+   401 0001:001700EF   409 0001:00170138   411 0001:0017013A   412 0001:00170148
+   413 0001:00170161   415 0001:00170179   417 0001:00170190   418 0001:001701B3
+   421 0001:001701B7   422 0001:001701BC   423 0001:001701C3   424 0001:001701D9
+   425 0001:001701F5   426 0001:0017022F   427 0001:00170232   428 0001:00170238
+   429 0001:0017023F   430 0001:00170244   431 0001:0017026C   432 0001:00170270
+   434 0001:00170272   437 0001:00170277   438 0001:001702B4   423 0001:001702B5
+   439 0001:001702BE   440 0001:001702C4   441 0001:001702C9   444 0001:001702F5
+   445 0001:001702F9   448 0001:00170354   449 0001:0017035B   450 0001:0017035D
+   451 0001:00170375   452 0001:00170389   453 0001:00170393   454 0001:00170395
+
+Line numbers for rTemplates(Templates\rTemplates.pas) segment .itext
+
+   456 0002:00001054
+
+Line numbers for fFindingTemplates(Templates\fFindingTemplates.pas) segment .text
+
+    53 0001:00170620    54 0001:00170651    55 0001:00170656    56 0001:00170668
+    57 0001:00170679    60 0001:00170687    61 0001:00170697    62 0001:001706A0
+    63 0001:001706AC    64 0001:001706B9    65 0001:001706C6    66 0001:001706CF
+    67 0001:001706D3    68 0001:001706E6    69 0001:001706EE    71 0001:001706FB
+    75 0001:00170700    76 0001:0017070C    78 0001:0017071B    79 0001:00170728
+    83 0001:00170756    85 0001:00170766    89 0001:00170828    90 0001:0017082F
+    91 0001:0017083C   100 0001:00170840   101 0001:00170863   102 0001:00170868
+   103 0001:0017086C   104 0001:00170875   105 0001:00170883   106 0001:0017088F
+   107 0001:001708B0   108 0001:001708C2   109 0001:001708C4   111 0001:001708E4
+   112 0001:001708F4   116 0001:00170910   117 0001:0017091C   119 0001:0017092C
+   120 0001:00170940   121 0001:0017094C   122 0001:00170962   123 0001:0017097F
+   125 0001:00170983   126 0001:00170993   128 0001:001709AA   130 0001:001709C0
+   132 0001:001709E7   133 0001:001709F1   134 0001:001709FB   135 0001:00170A03
+   114 0001:00170A07   140 0001:00170A27   141 0001:00170A2B   143 0001:00170A4A
+   145 0001:00170A50   146 0001:00170A59   147 0001:00170A61   150 0001:00170A71
+   154 0001:00170AA0   156 0001:00170AA9   157 0001:00170AB0   159 0001:00170ABD
+   161 0001:00170AEC
+
+Line numbers for uTemplateFields(Templates\uTemplateFields.pas) segment .text
+
+   304 0001:00170FF8   305 0001:00171013   306 0001:00171019   307 0001:00171025
+   309 0001:00171071   315 0001:001710A8   316 0001:001710D6   317 0001:001710D8
+   318 0001:001710DE   319 0001:001710E7   320 0001:001710F8   321 0001:00171107
+   323 0001:0017110B   324 0001:00171123   327 0001:00171134   328 0001:00171142
+   334 0001:0017116C   335 0001:0017118B   337 0001:00171198   339 0001:001711AC
+   340 0001:001711C8   342 0001:001711CC   343 0001:001711D8   345 0001:001711E8
+   346 0001:001711FB   348 0001:0017120C   349 0001:0017121A   351 0001:00171226
+   337 0001:00171227   352 0001:0017122C   353 0001:0017123A   355 0001:00171241
+   361 0001:00171268   362 0001:00171284   365 0001:00171288   366 0001:00171289
+   368 0001:001712AA   369 0001:001712AD   371 0001:001712E3   372 0001:001712F7
+   363 0001:001712FA   376 0001:00171305   383 0001:0017134C   384 0001:0017136B
+   386 0001:0017137D   387 0001:0017138A   388 0001:00171392   389 0001:0017139F
+   384 0001:001713A0   390 0001:001713A3   402 0001:001713C8   403 0001:001713ED
+   404 0001:001713F7   405 0001:001713FE   408 0001:00171403   410 0001:00171412
+   411 0001:00171416   413 0001:0017143A   415 0001:0017143C   417 0001:00171440
+   418 0001:00171464   419 0001:0017146A   421 0001:00171473   424 0001:0017147D
+   425 0001:00171485   427 0001:00171487   428 0001:00171497   430 0001:0017149C
+   431 0001:001714BD   435 0001:001714CE   436 0001:001714E2   437 0001:001714EF
+   435 0001:00171502   438 0001:00171507   439 0001:0017150C   440 0001:00171529
+   443 0001:00171538   445 0001:00171540   446 0001:0017154A   448 0001:0017156B
+   449 0001:00171579   450 0001:0017157D   451 0001:00171589   452 0001:0017158D
+   454 0001:00171614   455 0001:00171635   457 0001:0017164F   458 0001:0017165E
+   459 0001:0017166C   460 0001:00171676   461 0001:0017167D   463 0001:00171694
+   464 0001:00171699   465 0001:001716A5   466 0001:001716C8   461 0001:001716CB
+   468 0001:001716DB   471 0001:001716EB   485 0001:00171720   486 0001:0017173A
+   488 0001:00171743   489 0001:00171778   490 0001:0017178F   492 0001:001717AA
+   494 0001:001717CC   495 0001:00171801   496 0001:0017180A   497 0001:0017181B
+   498 0001:00171826   500 0001:00171831   501 0001:00171841   503 0001:0017184B
+   504 0001:00171850   506 0001:00171876   507 0001:0017189B   508 0001:001718AE
+   510 0001:001718C1   511 0001:001718E7   512 0001:001718EF   514 0001:001718F3
+   515 0001:001718FE   516 0001:00171904   517 0001:00171914   518 0001:00171924
+   522 0001:00171933   523 0001:00171943   525 0001:00171953   527 0001:0017195D
+   528 0001:00171961   530 0001:00171979   531 0001:00171987   533 0001:0017198B
+   534 0001:00171991   536 0001:0017199E   537 0001:001719A6   538 0001:001719C3
+   539 0001:001719CD   540 0001:001719DB   541 0001:001719F9   543 0001:00171A00
+   544 0001:00171A06   528 0001:00171A07   545 0001:00171A0E   547 0001:00171A20
+   548 0001:00171A3A   552 0001:00171A41   553 0001:00171A4B   554 0001:00171A51
+   555 0001:00171A59   565 0001:00171AC8   566 0001:00171AEE   567 0001:00171AF7
+   568 0001:00171B08   569 0001:00171B12   571 0001:00171B16   572 0001:00171B25
+   574 0001:00171B2D   575 0001:00171B32   577 0001:00171B57   578 0001:00171B78
+   580 0001:00171B87   581 0001:00171BA9   583 0001:00171BAD   584 0001:00171BB2
+   585 0001:00171BBA   586 0001:00171BCB   587 0001:00171BD7   591 0001:00171BEA
+   592 0001:00171BF9   594 0001:00171BFB   596 0001:00171C1C   597 0001:00171C20
+   599 0001:00171C35   600 0001:00171C43   602 0001:00171C47   603 0001:00171C5F
+   604 0001:00171C6B   606 0001:00171C6F   607 0001:00171C75   597 0001:00171C76
+   608 0001:00171C7B   610 0001:00171C87   611 0001:00171CA5   612 0001:00171CCF
+   616 0001:00171CD3   617 0001:00171CE1   620 0001:00171D44   621 0001:00171D62
+   622 0001:00171D74   629 0001:00171DA8   630 0001:00171DCD   631 0001:00171DD2
+   632 0001:00171DDB   633 0001:00171DEC   634 0001:00171DEF   636 0001:00171DFF
+   638 0001:00171E05   640 0001:00171E1E   641 0001:00171E20   646 0001:00171E22
+   648 0001:00171E3B   649 0001:00171E3D   652 0001:00171E3F   634 0001:00171E40
+   653 0001:00171E43   655 0001:00171E47   656 0001:00171E4D   658 0001:00171E59
+   659 0001:00171E63   660 0001:00171E6D   663 0001:00171E80   664 0001:00171E8F
+   674 0001:00171EB8   675 0001:00171ED0   676 0001:00171ED8   677 0001:00171EE7
+   679 0001:00171EF9   680 0001:00171F0A   682 0001:00171F19   683 0001:00171F2B
+   685 0001:00171F3A   687 0001:00171F43   689 0001:00171F53   692 0001:00171F7E
+   693 0001:00171F8B   695 0001:00171F8D   687 0001:00171F8E   697 0001:00171F91
+   698 0001:00171FA6   699 0001:00171FB3   700 0001:00171FBA   701 0001:00171FBE
+   702 0001:00171FCA   711 0001:001720E8   712 0001:0017210A   713 0001:00172112
+   715 0001:0017211F   716 0001:00172124   717 0001:00172132   719 0001:00172142
+   720 0001:00172150   722 0001:00172156   723 0001:00172160   725 0001:00172166
+   727 0001:0017216C   728 0001:0017217B   729 0001:00172188   731 0001:00172192
+   734 0001:001721BA   717 0001:001721BB   736 0001:001721CB   738 0001:001721D1
+   739 0001:001721DC   743 0001:001721EC   750 0001:00172270   751 0001:00172272
+   753 0001:0017227B   755 0001:00172289   756 0001:00172297   758 0001:001722A1
+   759 0001:001722A7   760 0001:001722AF   762 0001:001722B6   753 0001:001722B7
+   764 0001:001722BC   770 0001:001722C0   771 0001:001722C3   772 0001:001722C5
+   774 0001:001722CE   776 0001:001722DE   778 0001:001722F0   779 0001:001722F2
+   781 0001:001722F4   774 0001:001722F5   783 0001:001722F8   793 0001:00172300
+   794 0001:00172335   795 0001:0017233D   796 0001:00172342   797 0001:00172351
+   798 0001:0017235F   799 0001:0017236E   800 0001:0017237C   801 0001:00172386
+   803 0001:001723A2   805 0001:001723B0   806 0001:001723BF   808 0001:001723C7
+   809 0001:001723CF   810 0001:001723F0   812 0001:001723F4   813 0001:001723FA
+   814 0001:00172401   815 0001:00172412   819 0001:00172421   820 0001:00172430
+   822 0001:00172433   824 0001:0017243D   826 0001:00172443   827 0001:0017244D
+   829 0001:00172451   830 0001:00172457   831 0001:0017247C   834 0001:00172486
+   837 0001:001724A2   838 0001:001724AD   839 0001:001724C2   842 0001:001724CD
+   843 0001:001724D5   801 0001:001724D8   845 0001:001724EE   847 0001:001724FE
+   849 0001:00172508   850 0001:00172514   851 0001:00172523   853 0001:00172529
+   854 0001:0017252F   857 0001:0017253E   859 0001:00172568   860 0001:00172574
+   861 0001:0017257E   863 0001:001725A8   865 0001:001725B4   866 0001:001725C0
+   867 0001:001725CA   868 0001:001725D7   870 0001:001725E2   872 0001:001725EE
+   873 0001:001725FD   877 0001:00172619   879 0001:00172629   886 0001:001727CC
+   887 0001:001727F6   888 0001:001727FA   889 0001:00172809   890 0001:00172817
+   891 0001:00172823   893 0001:00172833   894 0001:00172842   897 0001:0017284B
+   898 0001:00172852   899 0001:0017285C   900 0001:00172862   901 0001:0017286F
+   903 0001:00172894   906 0001:001728C1   908 0001:001728D1   915 0001:0017297C
+   916 0001:0017299A   918 0001:001729A3   919 0001:001729C3   920 0001:001729D9
+   921 0001:001729E3   922 0001:001729ED   923 0001:00172A04   925 0001:00172A0E
+   926 0001:00172A21   932 0001:00172A54   933 0001:00172A72   934 0001:00172A76
+   935 0001:00172A7D   937 0001:00172A93   938 0001:00172A96   939 0001:00172A98
+   934 0001:00172A9C   940 0001:00172AA1   946 0001:00172ACC   947 0001:00172AEA
+   948 0001:00172AEE   949 0001:00172AF5   951 0001:00172B0B   952 0001:00172B0E
+   953 0001:00172B10   948 0001:00172B14   954 0001:00172B19   963 0001:00172B44
+   964 0001:00172B6A   966 0001:00172B81   967 0001:00172B8E   968 0001:00172BC2
+   970 0001:00172BD1   971 0001:00172BDE   972 0001:00172BFB   974 0001:00172C00
+   975 0001:00172C1D   978 0001:00172C38   979 0001:00172C51   980 0001:00172C64
+   981 0001:00172C71   964 0001:00172C72   982 0001:00172C7B   991 0001:00172CC8
+   992 0001:00172D00   993 0001:00172D05   995 0001:00172D0D   996 0001:00172D18
+   997 0001:00172D31   999 0001:00172D49  1000 0001:00172D5F  1001 0001:00172D8C
+  1002 0001:00172DB9  1003 0001:00172DEE  1004 0001:00172E1D  1005 0001:00172E4A
+  1006 0001:00172E77  1007 0001:00172EA6  1008 0001:00172EAB  1010 0001:00172EC7
+  1011 0001:00172ED4  1012 0001:00172EE7  1013 0001:00172F05  1014 0001:00172F14
+  1016 0001:00172F2E  1017 0001:00172F3D  1019 0001:00172F4A  1021 0001:00172F59
+  1022 0001:00172F5C  1023 0001:00172F74  1024 0001:00172F7C  1026 0001:00172F87
+  1008 0001:00172F8A  1027 0001:00172F93  1028 0001:00172FC8  1029 0001:00172FFD
+  1030 0001:0017302C  1031 0001:00173061  1032 0001:0017309C  1033 0001:001730D7
+  1034 0001:00173112  1035 0001:0017314D  1036 0001:00173186  1037 0001:0017318A
+  1040 0001:0017318E  1042 0001:00173194  1043 0001:0017319A  1044 0001:001731BA
+  1045 0001:001731C7  1047 0001:001731CB  1048 0001:001731D4  1049 0001:001731E5
+  1050 0001:001731F1  1053 0001:0017329C  1054 0001:001732A2  1055 0001:001732E2
+  1060 0001:001732EF  1062 0001:001732FC  1064 0001:0017330F  1065 0001:00173315
+  1067 0001:00173321  1069 0001:0017332E  1071 0001:00173338  1093 0001:0017333C
+  1094 0001:0017333F  1095 0001:00173348  1096 0001:00173361  1097 0001:00173367
+  1100 0001:0017336C  1101 0001:0017336F  1102 0001:00173378  1103 0001:00173391
+  1104 0001:00173397  1110 0001:0017339C  1111 0001:001733B7  1113 0001:001733CF
+  1114 0001:001733DF  1115 0001:001733E3  1117 0001:0017343A  1119 0001:00173470
+  1120 0001:0017349E  1122 0001:001734B8  1123 0001:001734BF  1124 0001:001734C6
+  1126 0001:001734CB  1129 0001:00173511  1130 0001:00173521  1131 0001:00173549
+  1132 0001:00173556  1133 0001:0017355F  1134 0001:0017356F  1135 0001:0017358F
+  1136 0001:00173599  1138 0001:001735A4  1139 0001:001735B1  1140 0001:001735BE
+  1141 0001:001735C4  1142 0001:001735D7  1143 0001:001735E0  1148 0001:001735E8
+  1149 0001:001735F8  1150 0001:00173620  1151 0001:0017362D  1152 0001:00173636
+  1153 0001:00173640  1154 0001:00173649  1155 0001:00173653  1157 0001:0017365E
+  1159 0001:00173667  1160 0001:00173683  1161 0001:0017369B  1162 0001:001736A1
+  1164 0001:001736B4  1166 0001:001736C4  1167 0001:001736E1  1171 0001:001736EF
+  1172 0001:00173705  1174 0001:00173719  1175 0001:00173722  1180 0001:0017372A
+  1181 0001:0017373A  1182 0001:00173762  1184 0001:0017376F  1185 0001:0017378B
+  1186 0001:001737A3  1187 0001:001737B3  1188 0001:001737D3  1189 0001:001737D9
+  1190 0001:001737EC  1191 0001:001737F5  1196 0001:001737FD  1197 0001:00173801
+  1198 0001:00173807  1199 0001:00173816  1201 0001:00173824  1202 0001:0017383D
+  1204 0001:00173854  1205 0001:00173864  1206 0001:00173868  1207 0001:00173890
+  1208 0001:0017389D  1209 0001:001738B4  1210 0001:001738BD  1213 0001:001738C4
+  1215 0001:001738CD  1216 0001:001738DA  1218 0001:001738E3  1219 0001:0017390D
+  1220 0001:00173919  1221 0001:0017391F  1222 0001:00173935  1223 0001:00173945
+  1224 0001:00173958  1225 0001:00173961  1226 0001:00173966  1227 0001:00173979
+  1228 0001:00173986  1229 0001:0017398F  1202 0001:00173990  1231 0001:001739A6
+  1237 0001:001739B6  1238 0001:001739BF  1240 0001:001739D0  1241 0001:001739D8
+  1243 0001:001739E9  1244 0001:001739F9  1245 0001:00173A21  1246 0001:00173A2E
+  1247 0001:00173A34  1248 0001:00173A45  1249 0001:00173A56  1250 0001:00173A67
+  1251 0001:00173A74  1252 0001:00173A7D  1253 0001:00173A90  1254 0001:00173A99
+  1258 0001:00173AA1  1259 0001:00173AB1  1260 0001:00173AD9  1261 0001:00173AE6
+  1262 0001:00173AEC  1263 0001:00173AFD  1264 0001:00173B0E  1265 0001:00173B17
+  1266 0001:00173B24  1267 0001:00173B2D  1269 0001:00173B34  1270 0001:00173B39
+  1271 0001:00173B4F  1272 0001:00173B62  1273 0001:00173B6B  1279 0001:00173B73
+  1280 0001:00173B83  1281 0001:00173BAB  1282 0001:00173BB8  1283 0001:00173BC1
+  1284 0001:00173BC7  1285 0001:00173BDB  1286 0001:00173BF3  1287 0001:00173C05
+  1288 0001:00173C17  1289 0001:00173C29  1290 0001:00173C2F  1291 0001:00173C39
+  1292 0001:00173C46  1293 0001:00173C60  1294 0001:00173C79  1295 0001:00173C83
+  1296 0001:00173C9C  1297 0001:00173CA5  1302 0001:00173CAD  1303 0001:00173CC3
+  1305 0001:00173CD5  1306 0001:00173CE5  1307 0001:00173CF2  1308 0001:00173CFB
+  1309 0001:00173D08  1311 0001:00173D11  1312 0001:00173D1A  1314 0001:00173D34
+  1318 0001:00173D43  1319 0001:00173D51  1320 0001:00173D80  1321 0001:00173D9C
+  1323 0001:00173DA6  1324 0001:00173DB7  1325 0001:00173DC4  1326 0001:00173DCA
+  1327 0001:00173DD3  1332 0001:00173DDB  1333 0001:00173DEB  1334 0001:00173E13
+  1335 0001:00173E20  1336 0001:00173E26  1337 0001:00173E2C  1338 0001:00173E31
+  1339 0001:00173E36  1340 0001:00173E49  1341 0001:00173E4F  1342 0001:00173E54
+  1344 0001:00173E5B  1345 0001:00173E60  1346 0001:00173E65  1347 0001:00173E78
+  1348 0001:00173E81  1349 0001:00173E8A  1350 0001:00173E9B  1351 0001:00173EAE
+  1352 0001:00173EB7  1355 0001:00173EBA  1357 0001:00173EC0  1358 0001:00173EC5
+  1359 0001:00173EDB  1362 0001:00173EE5  1365 0001:00173FA8  1366 0001:00173FBF
+  1368 0001:00173FD9  1369 0001:00173FE4  1370 0001:00173FE8  1371 0001:00173FEE
+  1374 0001:00174016  1375 0001:00174018  1376 0001:00174020  1379 0001:00174090
+  1380 0001:00174096  1381 0001:001740AD  1382 0001:001740B7  1385 0001:001740BC
+  1386 0001:001740C2  1388 0001:001740D9  1389 0001:001740E3  1391 0001:001740E7
+  1394 0001:001740EC  1395 0001:001740F2  1397 0001:0017410A  1398 0001:0017410D
+  1400 0001:00174112  1401 0001:00174118  1402 0001:0017411F  1403 0001:0017412B
+  1406 0001:00174130  1407 0001:0017413B  1409 0001:0017414A  1411 0001:00174155
+  1412 0001:00174161  1413 0001:00174164  1416 0001:0017416D  1418 0001:00174172
+  1419 0001:00174179  1421 0001:00174182  1422 0001:00174187  1423 0001:0017418E
+  1424 0001:00174194  1427 0001:0017419D  1428 0001:001741A8  1430 0001:001741AC
+  1439 0001:001741C0  1440 0001:001741C6  1441 0001:001741D6  1442 0001:001741D9
+  1445 0001:001741DC  1446 0001:001741E2  1447 0001:001741F9  1448 0001:00174203
+  1451 0001:00174208  1452 0001:0017420E  1453 0001:00174225  1454 0001:0017422F
+  1457 0001:00174234  1458 0001:0017423A  1459 0001:00174251  1460 0001:0017425B
+  1463 0001:00174260  1464 0001:00174266  1465 0001:00174276  1466 0001:00174279
+  1469 0001:0017427C  1470 0001:00174282  1471 0001:00174299  1472 0001:001742A3
+  1482 0001:001742A8  1483 0001:001742CE  1485 0001:001742DD  1486 0001:001742EA
+  1488 0001:001742EF  1489 0001:001742F7  1490 0001:00174307  1492 0001:00174314
+  1493 0001:00174323  1494 0001:00174331  1495 0001:00174340  1496 0001:0017434E
+  1497 0001:0017435C  1499 0001:00174369  1500 0001:00174376  1501 0001:00174391
+  1502 0001:001743C9  1503 0001:001743FA  1504 0001:00174420  1505 0001:0017443B
+  1506 0001:00174456  1507 0001:0017445D  1509 0001:00174469  1510 0001:00174474
+  1511 0001:00174487  1513 0001:001744A1  1514 0001:001744A4  1515 0001:001744A6
+  1510 0001:001744A7  1517 0001:001744AC  1518 0001:001744D3  1519 0001:00174504
+  1520 0001:00174535  1521 0001:0017455B  1522 0001:00174581  1523 0001:001745AD
+  1524 0001:001745DF  1525 0001:00174611  1526 0001:00174643  1527 0001:00174649
+  1529 0001:00174658  1531 0001:00174696  1532 0001:0017469C  1534 0001:001746AB
+  1536 0001:001746CC  1538 0001:001746DC  1539 0001:001746E2  1542 0001:001746F1
+  1543 0001:001746FC  1544 0001:0017470F  1543 0001:00174762  1547 0001:00174767
+  1549 0001:00174777  1550 0001:0017477D  1553 0001:0017478C  1554 0001:00174797
+  1555 0001:001747AA  1554 0001:001747FD  1559 0001:00174802  1560 0001:00174810
+  1561 0001:0017483B  1563 0001:0017484B  1564 0001:00174851  1566 0001:00174872
+  1567 0001:0017487A  1568 0001:0017487E  1569 0001:00174882  1572 0001:00174888
+  1574 0001:001748A8  1577 0001:001748C5  1580 0001:001748D5  1583 0001:00174ADC
+  1584 0001:00174AE2  1585 0001:00174AE8  1586 0001:00174AF3  1587 0001:00174AFE
+  1588 0001:00174B09  1589 0001:00174B14  1590 0001:00174B1F  1591 0001:00174B26
+  1592 0001:00174B31  1593 0001:00174B38  1594 0001:00174B3F  1595 0001:00174B46
+  1596 0001:00174B4C  1597 0001:00174B52  1598 0001:00174B58  1599 0001:00174B5E
+  1600 0001:00174B64  1601 0001:00174B6A  1602 0001:00174B71  1603 0001:00174B7C
+  1610 0001:00174B80  1611 0001:00174BA0  1612 0001:00174BA6  1615 0001:00174BB1
+  1616 0001:00174BB8  1619 0001:00174BC0  1620 0001:00174BC7  1621 0001:00174BD6
+  1622 0001:00174BE4  1623 0001:00174BFA  1625 0001:00174C11  1626 0001:00174C31
+  1627 0001:00174C36  1628 0001:00174C39  1623 0001:00174C3C  1630 0001:00174C4C
+  1634 0001:00174C5C  1635 0001:00174C62  1636 0001:00174C69  1639 0001:00174C94
+  1640 0001:00174C9F  1641 0001:00174CAB  1642 0001:00174CB7  1645 0001:00174CC8
+  1646 0001:00174CCE  1647 0001:00174CDE  1648 0001:00174CE1  1651 0001:00174CE4
+  1652 0001:00174CE7  1653 0001:00174CF6  1656 0001:00174CF8  1657 0001:00174CFE
+  1658 0001:00174D0E  1659 0001:00174D11  1662 0001:00174D14  1663 0001:00174D1A
+  1664 0001:00174D2A  1665 0001:00174D2D  1668 0001:00174D30  1669 0001:00174D36
+  1670 0001:00174D46  1671 0001:00174D49  1674 0001:00174D4C  1675 0001:00174D52
+  1676 0001:00174D62  1677 0001:00174D65  1680 0001:00174D68  1681 0001:00174D6E
+  1682 0001:00174D7E  1683 0001:00174D81  1686 0001:00174D84  1687 0001:00174D8A
+  1688 0001:00174D9A  1689 0001:00174D9D  1692 0001:00174DA0  1693 0001:00174DA6
+  1694 0001:00174DB6  1695 0001:00174DB9  1698 0001:00174DBC  1699 0001:00174DC2
+  1700 0001:00174DD9  1701 0001:00174DE3  1705 0001:00174DE8  1706 0001:00174DF6
+  1708 0001:00174DF9  1709 0001:00174DFD  1712 0001:00174E00  1713 0001:00174E06
+  1714 0001:00174E16  1715 0001:00174E19  1727 0001:00174E1C  1728 0001:00174E1D
+  1729 0001:00174E1F  1730 0001:00174E2C  1731 0001:00174E30  1732 0001:00174E3C
+  1733 0001:00174E40  1734 0001:00174E47  1742 0001:00174E4C  1743 0001:00174E94
+  1744 0001:00174E9F  1745 0001:00174EAA  1746 0001:00174EB9  1747 0001:00174EC8
+  1748 0001:00174ED9  1749 0001:00174EE6  1750 0001:00174EF1  1752 0001:00174EFC
+  1753 0001:00174F11  1752 0001:00174F3C  1754 0001:00174F41  1755 0001:00174F4A
+  1757 0001:00174F52  1758 0001:00174F56  1759 0001:00174F6D  1760 0001:00174F77
+  1761 0001:00174F81  1762 0001:00174F8B  1763 0001:00174F99  1764 0001:00174FA3
+  1767 0001:00174FAD  1768 0001:00174FBB  1769 0001:00174FCA  1771 0001:00174FD2
+  1773 0001:00174FF5  1774 0001:00175017  1777 0001:00175029  1778 0001:0017502E
+  1779 0001:00175052  1781 0001:0017505C  1782 0001:00175063  1783 0001:0017506E
+  1784 0001:00175080  1785 0001:0017508D  1786 0001:0017509E  1788 0001:001750A8
+  1789 0001:001750CA  1791 0001:001750D6  1793 0001:001750DF  1794 0001:001750EC
+  1796 0001:00175115  1798 0001:0017513E  1799 0001:0017514F  1803 0001:00175173
+  1804 0001:00175181  1809 0001:00175186  1810 0001:00175195  1811 0001:001751A3
+  1814 0001:001751A6  1765 0001:001751A9  1816 0001:001751BA  1818 0001:001751C7
+  1821 0001:001751CE  1822 0001:001751DC  1823 0001:001751EB  1825 0001:001751EF
+  1826 0001:00175211  1827 0001:00175225  1829 0001:00175244  1819 0001:00175247
+  1832 0001:00175258  1835 0001:00175318  1836 0001:00175323  1837 0001:0017532A
+  1838 0001:00175332  1839 0001:00175339  1840 0001:00175343  1841 0001:00175349
+  1843 0001:00175350  1844 0001:00175358  1845 0001:00175360  1846 0001:00175368
+  1847 0001:00175374  1850 0001:00175384  1851 0001:00175385  1852 0001:00175392
+  1853 0001:0017539C  1867 0001:001753A0  1868 0001:001753C7  1869 0001:001753CE
+  1871 0001:001753DB  1872 0001:001753EE  1873 0001:001753F6  1874 0001:00175403
+  1875 0001:00175411  1876 0001:00175423  1877 0001:00175442  1878 0001:00175456
+  1880 0001:0017545F  1881 0001:00175473  1884 0001:00175493  1887 0001:001754A6
+  1890 0001:001754D0  1891 0001:00175505  1892 0001:0017550D  1893 0001:00175511
+  1894 0001:00175518  1896 0001:00175536  1897 0001:00175546  1899 0001:0017555A
+  1900 0001:00175560  1901 0001:00175564  1903 0001:0017556A  1904 0001:0017557A
+  1905 0001:00175580  1907 0001:001755B3  1909 0001:001755B8  1911 0001:001755CD
+  1912 0001:001755DC  1913 0001:001755E6  1914 0001:001755F3  1915 0001:00175607
+  1916 0001:00175610  1918 0001:00175623  1920 0001:00175636  1921 0001:00175644
+  1922 0001:00175673  1923 0001:0017568F  1926 0001:0017569F  1930 0001:001756AE
+  1934 0001:001756BD  1935 0001:001756CE  1937 0001:001756DD  1938 0001:001756EE
+  1939 0001:001756F8  1940 0001:00175712  1941 0001:0017571C  1944 0001:0017572C
+  1945 0001:0017573D  1947 0001:0017577C  1948 0001:0017578D  1950 0001:0017579C
+  1952 0001:001757B1  1953 0001:001757BD  1956 0001:001757D0  1958 0001:001757EF
+  1960 0001:001757F5  1961 0001:001757FD  1962 0001:0017580D  1966 0001:0017582E
+  1967 0001:00175836  1968 0001:00175846  1970 0001:0017587C  1956 0001:0017587F
+  1971 0001:00175888  1975 0001:00175892  1977 0001:001758A7  1978 0001:001758AB
+  1980 0001:001758BF  1982 0001:001758C7  1983 0001:001758CD  1985 0001:001758DF
+  1987 0001:001758EF  1988 0001:00175911  1989 0001:00175917  1991 0001:0017592A
+  1995 0001:00175947  1997 0001:00175958  1998 0001:00175962  1999 0001:0017597C
+  2000 0001:00175982  2003 0001:0017598F  2005 0001:001759A0  2006 0001:001759B7
+  2008 0001:001759D0  2009 0001:001759EA  2010 0001:001759EC  2005 0001:001759EF
+  2013 0001:001759F4  2014 0001:001759FA  1894 0001:001759FD  2015 0001:00175A04
+  2016 0001:00175A10  2017 0001:00175A2D  2028 0001:00175AC0  2029 0001:00175AE7
+  2030 0001:00175AEF  2031 0001:00175AFE  2032 0001:00175B0C  2033 0001:00175B1B
+  2034 0001:00175B29  2036 0001:00175B47  2037 0001:00175B55  2039 0001:00175B59
+  2040 0001:00175B5C  2042 0001:00175B6A  2043 0001:00175BAF  2046 0001:00175BB9
+  2034 0001:00175BBC  2047 0001:00175BBF  2049 0001:00175BD7  2052 0001:00175BF4
+  2054 0001:00175C04  2075 0001:00175C38  2076 0001:00175C3B  2077 0001:00175C47
+  2078 0001:00175C4D  2081 0001:00175C50  2082 0001:00175C74  2083 0001:00175C80
+  2085 0001:00175C84  2086 0001:00175C8F  2089 0001:00175C92  2090 0001:00175C95
+  2097 0001:00175CBC  2098 0001:00175CDA  2100 0001:00175CE3  2102 0001:00175CEC
+  2103 0001:00175CFC  2104 0001:00175D05  2106 0001:00175D14  2107 0001:00175D21
+  2108 0001:00175D27  2112 0001:00175D2F  2113 0001:00175D43  2117 0001:00175D4B
+  2118 0001:00175D5B  2119 0001:00175D69  2120 0001:00175D78  2121 0001:00175D88
+  2122 0001:00175D95  2123 0001:00175DA2  2125 0001:00175DAA  2126 0001:00175DBA
+  2127 0001:00175DCB  2129 0001:00175DD6  2130 0001:00175DDF  2131 0001:00175DE7
+  2132 0001:00175DF0  2133 0001:00175DF9  2138 0001:00175E44  2139 0001:00175E48
+  2140 0001:00175E54  2142 0001:00175E60  2143 0001:00175E6B  2144 0001:00175E75
+  2145 0001:00175E7F  2148 0001:00175E87  2149 0001:00175EA3  2150 0001:00175EAF
+  2151 0001:00175EB6  2152 0001:00175EBE  2153 0001:00175EC6  2154 0001:00175ECE
+  2156 0001:00175ED7  2157 0001:00175EE2  2158 0001:00175EF3  2159 0001:00175F01
+  2160 0001:00175F12  2162 0001:00175F2E  2166 0001:00175F3E  2171 0001:00175F44
+  2172 0001:00175F4F  2174 0001:00175F62  2175 0001:00175F67  2176 0001:00175F6F
+  2179 0001:00175F77  2181 0001:00175F7B  2180 0001:00175F7D  2183 0001:00175F94
+  2182 0001:00175F96  2184 0001:00175FAB  2185 0001:00175FAF  2186 0001:00175FB4
+  2191 0001:00175FE4  2192 0001:00175FFE  2194 0001:00176020  2195 0001:0017602F
+  2197 0001:0017604A  2198 0001:00176051  2202 0001:00176065  2203 0001:0017606E
+  2208 0001:00176075  2209 0001:00176086  2210 0001:00176092  2211 0001:001760A2
+  2213 0001:001760C0  2214 0001:001760C8  2215 0001:001760D0  2218 0001:00176110
+  2219 0001:00176113  2220 0001:00176121  2221 0001:0017612D  2222 0001:00176137
+  2223 0001:00176143  2224 0001:0017614F  2226 0001:00176154  2227 0001:00176185
+  2228 0001:0017618E  2230 0001:001761A9  2231 0001:001761B0  2233 0001:001761CF
+  2234 0001:001761E0  2235 0001:001761E9  2236 0001:001761F0  2238 0001:00176201
+  2239 0001:0017620D  2240 0001:00176214  2242 0001:0017621C  2246 0001:0017622B
+  2247 0001:00176246  2248 0001:00176248  2250 0001:00176258  2251 0001:00176262
+  2254 0001:0017626F  2255 0001:00176274  2259 0001:00176280  2261 0001:00176289
+  2262 0001:001762A6  2263 0001:001762AD  2264 0001:001762C1  2267 0001:001762C3
+  2268 0001:001762C4  2269 0001:001762C8  2271 0001:001762CC  2273 0001:001762D2
+  2274 0001:001762EF  2275 0001:001762F6  2278 0001:0017630C  2244 0001:00176313
+  2285 0001:00176322  2286 0001:00176332  2288 0001:0017633A  2289 0001:00176343
+  2290 0001:0017634C  2291 0001:0017635B  2292 0001:0017635F  2294 0001:00176390
+  2295 0001:00176392  2297 0001:00176398  2298 0001:001763C3  2299 0001:001763C9
+  2300 0001:001763D6  2302 0001:001763DD  2303 0001:001763E0  2304 0001:001763EA
+  2305 0001:001763F4  2306 0001:001763FD  2307 0001:00176405  2308 0001:0017640B
+  2310 0001:00176450  2313 0001:00176456  2231 0001:00176459  2314 0001:00176462
+  2315 0001:00176469  2316 0001:0017647B  2318 0001:0017648C  2319 0001:00176495
+  2320 0001:001764A3  2321 0001:001764AC  2322 0001:001764B1  2323 0001:001764B7
+  2326 0001:0017650C  2327 0001:00176512  2328 0001:00176521  2336 0001:00176524
+  2337 0001:0017652A  2339 0001:00176531  2340 0001:00176539  2343 0001:00176540
+  2345 0001:0017654C  2346 0001:00176558  2349 0001:0017658B  2350 0001:00176595
+  2351 0001:00176599  2354 0001:001765A0  2340 0001:001765A1  2356 0001:001765A6
+  2363 0001:001765AC  2364 0001:001765AF  2365 0001:001765B2  2367 0001:001765B6
+  2368 0001:001765BA  2369 0001:001765C1  2372 0001:001765DA  2373 0001:001765EB
+  2381 0001:001765F0  2382 0001:00176623  2383 0001:0017662A  2384 0001:00176638
+  2385 0001:0017663C  2386 0001:00176641  2388 0001:0017665A  2389 0001:00176669
+  2391 0001:0017667D  2392 0001:00176681  2393 0001:00176692  2395 0001:001766A1
+  2396 0001:001766B2  2398 0001:001766C1  2399 0001:001766D2  2401 0001:001766E1
+  2402 0001:001766F2  2404 0001:00176705  2405 0001:00176716  2407 0001:00176744
+  2408 0001:00176755  2410 0001:00176764  2412 0001:00176775  2413 0001:00176779
+  2414 0001:00176785  2415 0001:0017678B  2416 0001:0017679C  2418 0001:001767B1
+  2419 0001:001767DB  2420 0001:001767E7  2416 0001:001767EA  2423 0001:001767F4
+  2424 0001:00176805  2426 0001:00176811  2428 0001:00176822  2429 0001:00176839
+  2431 0001:00176852  2432 0001:0017686D  2433 0001:0017686F  2428 0001:00176872
+  2436 0001:00176877  2437 0001:0017687D  2386 0001:0017687E  2439 0001:00176892
+  2441 0001:001768A1  2448 0001:001768EC  2449 0001:0017690D  2450 0001:0017691A
+  2451 0001:00176929  2452 0001:00176937  2453 0001:00176941  2454 0001:00176953
+  2453 0001:001769AD  2456 0001:001769BD  2458 0001:001769CD  2463 0001:001769F8
+  2464 0001:00176A16  2465 0001:00176A2C  2466 0001:00176A32  2468 0001:00176A38
+  2470 0001:00176A3C  2471 0001:00176A4A  2468 0001:00176A60  2474 0001:00176A64
+  2477 0001:00176A94  2478 0001:00176A9A  2479 0001:00176AA4  2480 0001:00176AAD
+  2487 0001:00176AB0  2488 0001:00176ADD  2489 0001:00176AEC  2490 0001:00176AEE
+  2492 0001:00176AF2  2493 0001:00176B18  2495 0001:00176B1C  2496 0001:00176B2B
+  2497 0001:00176B30  2500 0001:00176B55  2490 0001:00176B57  2502 0001:00176B5B
+  2503 0001:00176B66  2508 0001:00176BB4  2509 0001:00176BBB  2511 0001:00176BCC
+  2514 0001:00176BD1  2515 0001:00176BDF  2516 0001:00176BE3  2512 0001:00176BEE
+  2518 0001:00176BF2  2509 0001:00176BF8  2519 0001:00176BFD  2526 0001:00176C04
+  2527 0001:00176C23  2529 0001:00176C35  2530 0001:00176C42  2531 0001:00176C4A
+  2532 0001:00176C57  2527 0001:00176C58  2533 0001:00176C5B  2552 0001:00176C80
+  2553 0001:00176CA9  2555 0001:00176CB5
+
+Line numbers for uTemplateFields(Templates\uTemplateFields.pas) segment .itext
+
+  2549 0002:0000105C  2551 0002:00001063
+
+Line numbers for rReminders(rReminders.pas) segment .text
+
+    69 0001:00176D4C    70 0001:00176D4F    71 0001:00176D85    74 0001:00176DB4
+    75 0001:00176DBA    76 0001:00176DF0    77 0001:00176E04    83 0001:00176E34
+    86 0001:00176E51    87 0001:00176E5F    88 0001:00176E79    89 0001:00176E91
+    90 0001:00176EB8    91 0001:00176ED3    92 0001:00176EE5    91 0001:00176F3A
+    93 0001:00176F3D    95 0001:00176F42   101 0001:00176F8C   102 0001:00176FAE
+   103 0001:00176FBD   104 0001:00176FCB   105 0001:00176FD6   106 0001:00176FDE
+   107 0001:00176FF4   109 0001:0017700C   111 0001:00177023   113 0001:00177033
+   116 0001:00177058   117 0001:0017705B   118 0001:00177071   121 0001:00177098
+   122 0001:0017709B   123 0001:001770B1   126 0001:001770DC   127 0001:001770FB
+   128 0001:00177108   130 0001:00177123   131 0001:00177131   134 0001:00177174
+   135 0001:0017717A   136 0001:00177183   138 0001:001771B1   139 0001:001771DD
+   140 0001:001771EA   143 0001:00177234   144 0001:00177237   145 0001:0017724D
+   146 0001:0017725A   149 0001:00177284   150 0001:00177287   151 0001:0017729D
+   152 0001:001772AA   155 0001:001772D4   156 0001:001772F6   157 0001:001772FA
+   159 0001:00177329   160 0001:00177356   161 0001:00177363   164 0001:001773D0
+   165 0001:001773FD   166 0001:0017742A   167 0001:00177437   173 0001:00177480
+   174 0001:0017749F   177 0001:001774AF   178 0001:001774BD   179 0001:001774D9
+   180 0001:001774F1   181 0001:00177503   180 0001:00177534   182 0001:00177537
+   183 0001:0017753C   185 0001:00177551   188 0001:00177590   189 0001:001775A4
+   190 0001:001775B3   191 0001:001775F4   194 0001:00177648   195 0001:0017764E
+   196 0001:00177672   199 0001:001776A0   200 0001:001776C0   201 0001:001776D9
+   202 0001:001776E6   210 0001:0017772C   213 0001:00177756   214 0001:00177764
+   215 0001:00177784   216 0001:0017779C   217 0001:001777BA   218 0001:001777D5
+   219 0001:00177804   220 0001:0017782A   221 0001:00177853   222 0001:0017788A
+   223 0001:0017788C   224 0001:00177894   226 0001:0017789F   227 0001:001778B5
+   228 0001:001778C7   229 0001:001778C8   230 0001:00177913   231 0001:00177919
+   232 0001:0017791E   233 0001:00177925   235 0001:0017794A   236 0001:00177962
+   238 0001:00177984   240 0001:00177989   241 0001:001779BB   242 0001:001779C7
+   244 0001:001779D3   246 0001:001779FB   233 0001:001779FE   248 0001:00177A05
+   256 0001:00177AF4   259 0001:00177B1A   260 0001:00177B23   261 0001:00177B3B
+   262 0001:00177B4E   263 0001:00177B75   264 0001:00177B93   265 0001:00177BC6
+   266 0001:00177BF5   267 0001:00177BF7   268 0001:00177BFF   270 0001:00177C09
+   271 0001:00177C1F   272 0001:00177C31   273 0001:00177C32   274 0001:00177C75
+   275 0001:00177C7B   277 0001:00177C80   280 0001:00177D20   281 0001:00177D23
+   283 0001:00177D28   287 0001:00177D40   295 0001:00177D68   296 0001:00177DA5
+   297 0001:00177DF0   299 0001:00177E15   301 0001:00177E3A   303 0001:00177E5D
+   304 0001:00177E65   305 0001:00177E77   306 0001:00177E84   308 0001:00177E90
+   309 0001:00177EA5   310 0001:00177ED2   306 0001:00177ED3   312 0001:00177ED8
+   313 0001:00177EEA   314 0001:00177EFC   315 0001:00177F12   316 0001:00177F25
+   317 0001:00177F38   319 0001:00177F65   321 0001:00177F83   322 0001:00177F8A
+   325 0001:00178034   326 0001:00178081   327 0001:001780E0   330 0001:00178134
+   331 0001:0017814A   332 0001:00178168   335 0001:001781A8   336 0001:001781AE
+   337 0001:001781C4   341 0001:001781E4   343 0001:00178201   344 0001:0017820A
+   345 0001:0017821B   346 0001:00178230   348 0001:00178249   349 0001:0017824E
+   352 0001:00178274   353 0001:00178288   355 0001:00178291   356 0001:001782B7
+   359 0001:001782C1   360 0001:001782C7   363 0001:0017831C   364 0001:00178330
+   366 0001:00178339   367 0001:0017835F   370 0001:00178369   371 0001:0017836F
+   375 0001:001783C8   377 0001:001783D1   378 0001:001783DB   381 0001:001783E5
+   382 0001:001783EA   385 0001:0017840C   386 0001:00178437   387 0001:0017845D
+   388 0001:0017846A   394 0001:001784AC   397 0001:001784E4   398 0001:001784F2
+   399 0001:0017850A   400 0001:00178522   401 0001:00178541   402 0001:0017855C
+   403 0001:0017857E   404 0001:00178599   405 0001:001785AB   404 0001:001785ED
+   406 0001:001785F0   408 0001:001785F5   411 0001:0017863C   412 0001:0017863F
+   413 0001:00178655   414 0001:00178662   418 0001:00178688   419 0001:00178697
+   420 0001:001786A4   424 0001:001786D0   425 0001:0017870C   426 0001:00178743
+   428 0001:00178769   429 0001:00178775   431 0001:0017877A   433 0001:001787A0
+   434 0001:001787AC   436 0001:001787AE   438 0001:001787D4   441 0001:001787FD
+   445 0001:00178894   447 0001:0017889D   448 0001:001788A4   450 0001:001788AE
+   451 0001:001788B5   454 0001:001788B8   455 0001:001788CC   456 0001:001788F2
+   472 0001:00178940   477 0001:0017896E   478 0001:0017897C   479 0001:00178994
+   480 0001:001789AC   481 0001:001789D3   482 0001:001789EE   483 0001:001789F3
+   485 0001:00178A05   486 0001:00178A08   487 0001:00178A59   483 0001:00178A5A
+   488 0001:00178A5D   489 0001:00178A62   491 0001:00178A74   492 0001:00178A77
+   493 0001:00178AC8   489 0001:00178AC9   495 0001:00178ACC   497 0001:00178AD1
+   498 0001:00178AD9   499 0001:00178AE1   501 0001:00178B01   502 0001:00178B18
+   504 0001:00178B29   505 0001:00178B6C   509 0001:00178B8E   511 0001:00178B96
+   512 0001:00178BCE   513 0001:00178BDB   515 0001:00178BEB   517 0001:00178C04
+   499 0001:00178C05   518 0001:00178C0C   520 0001:00178C16   522 0001:00178C27
+   523 0001:00178C36   524 0001:00178C43   525 0001:00178C4B   527 0001:00178C5D
+   528 0001:00178C72   529 0001:00178C97   525 0001:00178C98   531 0001:00178C9B
+   533 0001:00178CAA   537 0001:00178D88   539 0001:00178DAB
+
+Line numbers for rReminders(rReminders.pas) segment .itext
+
+   534 0002:00001064   536 0002:0000106B
+
+Line numbers for fMHTest(fMHTest.pas) segment .text
+
+   153 0001:001790C0   154 0001:001790C4   156 0001:001790D5   157 0001:001790DF
+   158 0001:001790ED   159 0001:001790FB   161 0001:00179114   165 0001:0017912C
+   166 0001:00179138   171 0001:0017913C   172 0001:0017917B   173 0001:00179185
+   174 0001:0017919A   176 0001:001791A4   178 0001:001791CA   179 0001:001791DD
+   181 0001:001791E5   182 0001:001791F8   183 0001:00179228   184 0001:00179249
+   185 0001:0017926A   187 0001:00179276   189 0001:0017928A   191 0001:001792AC
+   193 0001:001792BA   195 0001:001792FE   197 0001:0017930A   198 0001:00179314
+   200 0001:00179319   201 0001:00179332   202 0001:00179340   203 0001:0017934D
+   205 0001:00179361   207 0001:00179371   208 0001:0017937D   210 0001:00179381
+   211 0001:00179388   212 0001:0017938D   216 0001:00179399   217 0001:001793BB
+   218 0001:001793D9   220 0001:001793FB   222 0001:0017940D   228 0001:00179580
+   229 0001:001795C4   230 0001:001795E6   231 0001:001795EF   232 0001:00179602
+   233 0001:00179606   235 0001:0017960F   236 0001:00179620   240 0001:00179625
+   241 0001:00179633   243 0001:0017964B   246 0001:0017964F   247 0001:00179660
+   250 0001:0017966A   253 0001:00179677   254 0001:00179685   264 0001:001796F8
+   266 0001:00179711   267 0001:00179726   272 0001:0017974C   274 0001:00179755
+   275 0001:00179760   279 0001:0017976F   284 0001:001798A0   285 0001:001798C3
+   286 0001:001798E5   287 0001:001798EE   288 0001:00179901   290 0001:0017990A
+   291 0001:0017991B   295 0001:00179920   296 0001:0017992E   298 0001:00179946
+   301 0001:0017994A   302 0001:0017995B   305 0001:00179965   308 0001:00179972
+   309 0001:00179980   313 0001:001799AD   315 0001:001799C6   316 0001:001799DB
+   321 0001:00179A01   323 0001:00179A0A   324 0001:00179A15   328 0001:00179A24
+   333 0001:00179B44   334 0001:00179B5A   335 0001:00179B5C   336 0001:00179B70
+   338 0001:00179B74   339 0001:00179B7E   340 0001:00179B85   342 0001:00179B8E
+   343 0001:00179B90   346 0001:00179B92   348 0001:00179B9B   349 0001:00179BBD
+   350 0001:00179BD0   351 0001:00179BD9   354 0001:00179BDD   355 0001:00179BE8
+   358 0001:00179BEF   361 0001:00179C48   362 0001:00179C4C   363 0001:00179C55
+   364 0001:00179C63   365 0001:00179C7B   367 0001:00179C7F   370 0001:00179C92
+   372 0001:00179C9B   373 0001:00179CA6   376 0001:00179CB5   385 0001:00179CC4
+   386 0001:00179CE5   387 0001:00179CEC   388 0001:00179CF1   390 0001:00179D05
+   391 0001:00179D20   392 0001:00179D2F   393 0001:00179D32   394 0001:00179D3C
+   388 0001:00179D3D   395 0001:00179D40   396 0001:00179D51   397 0001:00179D58
+   412 0001:00179D88   413 0001:00179D97   414 0001:00179DA2   415 0001:00179DA7
+   416 0001:00179DBA   418 0001:00179DC4   419 0001:00179DD2   421 0001:00179DD6
+   422 0001:00179DDD   424 0001:00179DE2   426 0001:00179DE7   427 0001:00179DF6
+   429 0001:00179DFB   430 0001:00179E11   431 0001:00179E30   432 0001:00179E39
+   433 0001:00179E4E   435 0001:00179E62   436 0001:00179E6D   438 0001:00179E72
+   439 0001:00179E75   440 0001:00179E83   442 0001:00179E92   444 0001:00179EAA
+   445 0001:00179EAD   446 0001:00179EBB   447 0001:00179EBF   449 0001:00179ED0
+   450 0001:00179EDB   454 0001:00179EDD   455 0001:00179EE8   460 0001:00179EEA
+   461 0001:00179EF5   416 0001:00179EF7   464 0001:00179EFF   467 0001:00179F5C
+   468 0001:00179F79   470 0001:00179F82   472 0001:00179F87   473 0001:00179F93
+   474 0001:00179FCD   476 0001:00179FD9   478 0001:00179FE6   480 0001:0017A024
+   481 0001:0017A062   482 0001:0017A066   483 0001:0017A075   484 0001:0017A083
+   485 0001:0017A093   486 0001:0017A0BB   487 0001:0017A0C5   488 0001:0017A0D5
+   489 0001:0017A0E3   490 0001:0017A0F0   491 0001:0017A0F5   492 0001:0017A100
+   493 0001:0017A10D   494 0001:0017A11A   495 0001:0017A11E   496 0001:0017A122
+   497 0001:0017A126   500 0001:0017A130   501 0001:0017A13D   503 0001:0017A14E
+   504 0001:0017A152   506 0001:0017A157   507 0001:0017A16A   508 0001:0017A17D
+   509 0001:0017A190   510 0001:0017A1A3   512 0001:0017A1B4   513 0001:0017A1BF
+   514 0001:0017A1C5   517 0001:0017A1CB   519 0001:0017A1D1   520 0001:0017A1D5
+   523 0001:0017A1DA   524 0001:0017A1ED   525 0001:0017A1F9   527 0001:0017A1FD
+   528 0001:0017A201   530 0001:0017A206   531 0001:0017A20A   532 0001:0017A20E
+   533 0001:0017A23D   534 0001:0017A243   535 0001:0017A24E   537 0001:0017A257
+   538 0001:0017A26A   539 0001:0017A271   541 0001:0017A27B   543 0001:0017A28A
+   545 0001:0017A2A8   548 0001:0017A2BC   550 0001:0017A2CB   551 0001:0017A2CF
+   552 0001:0017A2DE   554 0001:0017A2F1   555 0001:0017A2F7   558 0001:0017A30A
+   559 0001:0017A311   560 0001:0017A33A   564 0001:0017A345   566 0001:0017A358
+   568 0001:0017A35E   570 0001:0017A364   571 0001:0017A386   572 0001:0017A390
+   575 0001:0017A3B4   579 0001:0017A3C3   580 0001:0017A3C7   581 0001:0017A3F0
+   585 0001:0017A3F6   498 0001:0017A3F7   588 0001:0017A414   591 0001:0017A437
+   593 0001:0017A447   594 0001:0017A44D   597 0001:0017A46E   599 0001:0017A482
+   601 0001:0017A494   602 0001:0017A4A8   603 0001:0017A4AE   605 0001:0017A4B9
+   597 0001:0017A4BA   607 0001:0017A4BD   610 0001:0017A5B0   611 0001:0017A5B3
+   612 0001:0017A5BA   613 0001:0017A5CC   614 0001:0017A5DE   615 0001:0017A5EF
+   616 0001:0017A600   619 0001:0017A604   620 0001:0017A607   621 0001:0017A613
+   622 0001:0017A61F   623 0001:0017A62C   624 0001:0017A639   630 0001:0017A63C
+   631 0001:0017A65B   633 0001:0017A66B   634 0001:0017A675   635 0001:0017A683
+   636 0001:0017A69D   637 0001:0017A6AE   639 0001:0017A6BE   641 0001:0017A6CE
+   642 0001:0017A6E8   643 0001:0017A6F4   644 0001:0017A704   645 0001:0017A714
+   646 0001:0017A729   647 0001:0017A740   648 0001:0017A750   649 0001:0017A767
+   650 0001:0017A77A   652 0001:0017A78A   655 0001:0017A79B   656 0001:0017A7A1
+   657 0001:0017A7A9   658 0001:0017A7D5   659 0001:0017A7DD   660 0001:0017A7EE
+   661 0001:0017A7F3   662 0001:0017A805   663 0001:0017A819   662 0001:0017A834
+   667 0001:0017A839   668 0001:0017A83C   671 0001:0017A87B   674 0001:0017A88D
+   675 0001:0017A89B   681 0001:0017A8C0   682 0001:0017A8E7   683 0001:0017A8F8
+   685 0001:0017A901   686 0001:0017A906   688 0001:0017A90F   689 0001:0017A916
+   690 0001:0017A920   689 0001:0017A97D   691 0001:0017A980   697 0001:0017A9B8
+   698 0001:0017A9EC   699 0001:0017A9F4   700 0001:0017AA0C   702 0001:0017AA10
+   703 0001:0017AA1A   704 0001:0017AA21   706 0001:0017AA2E   707 0001:0017AA50
+   708 0001:0017AA59   709 0001:0017AA6C   710 0001:0017AA73   713 0001:0017AA7C
+   714 0001:0017AA8D   718 0001:0017AA92   719 0001:0017AAA0   721 0001:0017AAB8
+   724 0001:0017AABC   725 0001:0017AACD   728 0001:0017AAD7   731 0001:0017AAE4
+   733 0001:0017AAEB   734 0001:0017AAF9   745 0001:0017AB8E   749 0001:0017ABA5
+   751 0001:0017ABBE   752 0001:0017ABD3   757 0001:0017ABF9   759 0001:0017AC02
+   760 0001:0017AC0D   765 0001:0017AC1C   773 0001:0017ADE0   774 0001:0017ADEA
+   775 0001:0017ADF0   776 0001:0017ADF9   778 0001:0017ADFD   780 0001:0017AE1B
+   781 0001:0017AE2F   783 0001:0017AE3D   785 0001:0017AE4B   786 0001:0017AE53
+   788 0001:0017AE55   781 0001:0017AE56   789 0001:0017AE59   778 0001:0017AE5D
+   790 0001:0017AE63   793 0001:0017AE70   794 0001:0017AE76   795 0001:0017AE7F
+   796 0001:0017AE85   798 0001:0017AE8F   799 0001:0017AE9C   803 0001:0017AEAC
+   804 0001:0017AEB9   805 0001:0017AEDB   807 0001:0017AEEF   811 0001:0017AEF4
+   812 0001:0017AEFD   813 0001:0017AF0B   815 0001:0017AF11   816 0001:0017AF22
+   819 0001:0017AF29   821 0001:0017AF35   822 0001:0017AF46   824 0001:0017AF4B
+   843 0001:0017AF54   844 0001:0017AF5D   845 0001:0017AF62   847 0001:0017AF76
+   849 0001:0017AF98   850 0001:0017AFAB   852 0001:0017AFAD   845 0001:0017AFAE
+   853 0001:0017AFB1   856 0001:0017AFBC   857 0001:0017AFBF   858 0001:0017AFC7
+   859 0001:0017AFCD   864 0001:0017AFD0   865 0001:0017AFE9   867 0001:0017AFF9
+   868 0001:0017B00E   870 0001:0017B01B   871 0001:0017B033   872 0001:0017B043
+   873 0001:0017B050   874 0001:0017B05D   875 0001:0017B06F   876 0001:0017B085
+   877 0001:0017B09A   878 0001:0017B0A7   879 0001:0017B0BB   880 0001:0017B0CF
+   882 0001:0017B0DC   883 0001:0017B0E7   884 0001:0017B0F0   885 0001:0017B0F9
+   886 0001:0017B128   887 0001:0017B131   888 0001:0017B13F   891 0001:0017B146
+   892 0001:0017B14E   894 0001:0017B170   895 0001:0017B1AC   897 0001:0017B1BF
+   896 0001:0017B1CB   899 0001:0017B1D7   898 0001:0017B1E0   900 0001:0017B1E7
+   901 0001:0017B1F5   902 0001:0017B20A   903 0001:0017B211   904 0001:0017B21A
+   905 0001:0017B22C   906 0001:0017B231   908 0001:0017B246   909 0001:0017B254
+   911 0001:0017B25C   912 0001:0017B270   913 0001:0017B27C   914 0001:0017B285
+   915 0001:0017B28E   916 0001:0017B29C   917 0001:0017B2AE   918 0001:0017B2B8
+   919 0001:0017B2DA   920 0001:0017B2E3   921 0001:0017B2FA   922 0001:0017B31F
+   923 0001:0017B344   924 0001:0017B351   926 0001:0017B35A   927 0001:0017B366
+   928 0001:0017B370   929 0001:0017B37C   932 0001:0017B386   933 0001:0017B395
+   935 0001:0017B39B   936 0001:0017B3B0   937 0001:0017B3C3   938 0001:0017B3D2
+   939 0001:0017B3DC   940 0001:0017B3EA   942 0001:0017B3F4   943 0001:0017B401
+   944 0001:0017B40C   945 0001:0017B41A   946 0001:0017B41E   947 0001:0017B424
+   949 0001:0017B42D   950 0001:0017B434   952 0001:0017B43A   953 0001:0017B443
+   956 0001:0017B44E   958 0001:0017B45B   960 0001:0017B475   961 0001:0017B484
+   963 0001:0017B48C   964 0001:0017B4A0   965 0001:0017B4A6   966 0001:0017B4B4
+   967 0001:0017B4C6   968 0001:0017B4D5   969 0001:0017B4E2   970 0001:0017B4EB
+   971 0001:0017B4F4   972 0001:0017B4FC   973 0001:0017B508   974 0001:0017B51B
+   975 0001:0017B554   976 0001:0017B561   978 0001:0017B56A   979 0001:0017B576
+   980 0001:0017B580   981 0001:0017B589   982 0001:0017B593   983 0001:0017B59A
+   984 0001:0017B5AB   985 0001:0017B5B6   958 0001:0017B5B9   989 0001:0017B5C7
+   990 0001:0017B5D5   992 0001:0017B5DD   993 0001:0017B5F1   994 0001:0017B5FF
+   995 0001:0017B611   996 0001:0017B61D   997 0001:0017B62A   998 0001:0017B62C
+  1000 0001:0017B642  1001 0001:0017B671  1002 0001:0017B67F  1003 0001:0017B69A
+  1004 0001:0017B69E  1005 0001:0017B6A0   998 0001:0017B6A3  1006 0001:0017B6A8
+  1007 0001:0017B6B5  1008 0001:0017B6BF  1009 0001:0017B6D2  1011 0001:0017B6DB
+  1012 0001:0017B6E7  1013 0001:0017B6F1  1015 0001:0017B6FC  1016 0001:0017B70F
+  1017 0001:0017B715  1020 0001:0017B77C  1021 0001:0017B78E  1022 0001:0017B797
+  1023 0001:0017B79B  1024 0001:0017B7A3  1025 0001:0017B7AB  1026 0001:0017B7B3
+  1027 0001:0017B7C6  1028 0001:0017B7CB  1029 0001:0017B7D7  1030 0001:0017B7E5
+  1031 0001:0017B7F2  1034 0001:0017B818  1035 0001:0017B823  1036 0001:0017B82D
+  1037 0001:0017B839  1045 0001:0017B848  1046 0001:0017B862  1049 0001:0017B873
+  1051 0001:0017B881  1052 0001:0017B88A  1053 0001:0017B896  1056 0001:0017B8AB
+  1059 0001:0017B8BA  1061 0001:0017B8CB  1062 0001:0017B8CD  1063 0001:0017B8DA
+  1064 0001:0017B8EE  1066 0001:0017B8FD  1068 0001:0017B910  1071 0001:0017B940
+  1072 0001:0017B946  1074 0001:0017B94F  1075 0001:0017B95F  1076 0001:0017B96D
+  1077 0001:0017B974  1079 0001:0017B988  1082 0001:0017B99E  1086 0001:0017B9A4
+  1087 0001:0017B9AD  1088 0001:0017B9B2  1095 0001:0017B9B4  1096 0001:0017B9D2
+  1097 0001:0017B9DC  1098 0001:0017B9FF  1100 0001:0017BA1D  1101 0001:0017BA2C
+  1102 0001:0017BA4A  1104 0001:0017BA56  1105 0001:0017BA65  1108 0001:0017BA73
+  1109 0001:0017BA84  1110 0001:0017BA9C  1112 0001:0017BADA  1119 0001:0017BB5C
+  1120 0001:0017BB7E  1121 0001:0017BB86  1122 0001:0017BB8E  1123 0001:0017BB93
+  1124 0001:0017BB9A  1125 0001:0017BBA7  1126 0001:0017BBB7  1128 0001:0017BBC8
+  1129 0001:0017BBE0  1131 0001:0017BBFC  1132 0001:0017BC05  1133 0001:0017BC08
+  1134 0001:0017BC0E  1135 0001:0017BC1B  1137 0001:0017BC31  1126 0001:0017BC32
+  1138 0001:0017BC35  1139 0001:0017BC4D  1140 0001:0017BC65  1142 0001:0017BC8B
+  1144 0001:0017BCAD  1145 0001:0017BCB7  1146 0001:0017BCC7  1148 0001:0017BCCC
+  1150 0001:0017BCF2  1151 0001:0017BD02  1152 0001:0017BD15  1153 0001:0017BD25
+  1154 0001:0017BD5A  1156 0001:0017BD69  1157 0001:0017BD73  1160 0001:0017BD78
+  1161 0001:0017BD7E  1164 0001:0017BD8A  1165 0001:0017BD98  1168 0001:0017BDA4
+  1169 0001:0017BDB4  1171 0001:0017BDE9  1173 0001:0017BDF5  1176 0001:0017BDFF
+  1182 0001:0017BF10  1183 0001:0017BF16  1185 0001:0017BF2F  1186 0001:0017BF4B
+  1188 0001:0017BF64  1190 0001:0017BF80  1192 0001:0017BF8F  1193 0001:0017BF9C
+  1196 0001:0017BFB7  1183 0001:0017BFB8  1197 0001:0017BFBF  1199 0001:0017BFF2
+
+Line numbers for fPCELex(Encounter\fPCELex.pas) segment .text
+
+    44 0001:0017C270    45 0001:0017C27A    46 0001:0017C291    47 0001:0017C29F
+    48 0001:0017C2A7    49 0001:0017C2B1    50 0001:0017C2BF    51 0001:0017C2CA
+    53 0001:0017C2E7    55 0001:0017C2F7    58 0001:0017C300    60 0001:0017C303
+    61 0001:0017C30E    64 0001:0017C310    65 0001:0017C313    66 0001:0017C319
+    68 0001:0017C323    69 0001:0017C32F    72 0001:0017C341    73 0001:0017C34D
+    76 0001:0017C35D    79 0001:0017C3D8    80 0001:0017C3DB    81 0001:0017C3ED
+    84 0001:0017C3F4    86 0001:0017C3F7    87 0001:0017C404    88 0001:0017C411
+    91 0001:0017C414    93 0001:0017C42E    94 0001:0017C456    95 0001:0017C460
+    96 0001:0017C495    98 0001:0017C4AC    99 0001:0017C4B9   100 0001:0017C4C7
+   101 0001:0017C4D2   102 0001:0017C4DF   105 0001:0017C4EE   106 0001:0017C4FB
+   107 0001:0017C509   109 0001:0017C516   110 0001:0017C51D   113 0001:0017C570
+   115 0001:0017C573   117 0001:0017C59D   118 0001:0017C5AA   120 0001:0017C5B7
+   123 0001:0017C5BC   125 0001:0017C5D8   126 0001:0017C60D   128 0001:0017C613
+   129 0001:0017C61D   131 0001:0017C68A   132 0001:0017C6DC   134 0001:0017C6E3
+   137 0001:0017C718   139 0001:0017C71B   140 0001:0017C726   141 0001:0017C72D
+   144 0001:0017C730   146 0001:0017C736   147 0001:0017C73F   148 0001:0017C748
+   150 0001:0017C779
+
+Line numbers for rTIU(rTIU.pas) segment .text
+
+   128 0001:0017C74C   129 0001:0017C76C   130 0001:0017C779   131 0001:0017C7A7
+   132 0001:0017C7C0   133 0001:0017C7D1   134 0001:0017C7F0   135 0001:0017C80A
+   136 0001:0017C830   137 0001:0017C853   141 0001:0017C8CC   143 0001:0017C8D5
+   144 0001:0017C8DF   145 0001:0017C8E6   147 0001:0017C8EB   152 0001:0017C8EC
+   153 0001:0017C8FA   154 0001:0017C902   158 0001:0017C904   159 0001:0017C907
+   160 0001:0017C915   161 0001:0017C925   164 0001:0017C928   165 0001:0017C945
+   166 0001:0017C947   167 0001:0017C94B   168 0001:0017C975   171 0001:0017C9C8
+   172 0001:0017C9E5   173 0001:0017C9E7   174 0001:0017C9EB   175 0001:0017CA15
+   178 0001:0017CA5C   179 0001:0017CA79   180 0001:0017CA7B   181 0001:0017CA7F
+   182 0001:0017CAA9   186 0001:0017CAFC   187 0001:0017CAFF   188 0001:0017CB0D
+   190 0001:0017CB1C   192 0001:0017CB2D   193 0001:0017CB39   195 0001:0017CB45
+   199 0001:0017CBA8   200 0001:0017CBC7   201 0001:0017CC0A   202 0001:0017CC1E
+   205 0001:0017CC68   206 0001:0017CC71   207 0001:0017CC8B   213 0001:0017CCAC
+   214 0001:0017CCB8   215 0001:0017CCBC   217 0001:0017CCF6   219 0001:0017CD28
+   220 0001:0017CD35   228 0001:0017CD5C   229 0001:0017CD80   232 0001:0017CD8E
+   233 0001:0017CDB2   234 0001:0017CDD6   235 0001:0017CDF7   236 0001:0017CE1F
+   237 0001:0017CE3F   238 0001:0017CE67   239 0001:0017CE8E   240 0001:0017CEB2
+   241 0001:0017CED4   242 0001:0017CF0F   244 0001:0017CF37   248 0001:0017CFD4
+   250 0001:0017CFDD   251 0001:0017CFE7   252 0001:0017CFEE   254 0001:0017CFF3
+   257 0001:0017CFF4   258 0001:0017D019   259 0001:0017D022   261 0001:0017D08A
+   262 0001:0017D0DF   266 0001:0017D148   267 0001:0017D16D   268 0001:0017D176
+   270 0001:0017D1DE   271 0001:0017D233   283 0001:0017D29C   284 0001:0017D2AA
+   285 0001:0017D2B3   288 0001:0017D2B4   289 0001:0017D2DC   290 0001:0017D2E2
+   291 0001:0017D2EF   293 0001:0017D355   294 0001:0017D3A8   298 0001:0017D414
+   299 0001:0017D41A   300 0001:0017D428   301 0001:0017D438   302 0001:0017D448
+   306 0001:0017D44C   307 0001:0017D45A   308 0001:0017D462   309 0001:0017D46B
+   321 0001:0017D46C   322 0001:0017D47A   323 0001:0017D482   337 0001:0017D484
+   338 0001:0017D4AC   340 0001:0017D4B0   341 0001:0017D4B3   342 0001:0017D4BB
+   344 0001:0017D4BD   345 0001:0017D4E1   346 0001:0017D506   347 0001:0017D524
+   350 0001:0017D580   351 0001:0017D59C   352 0001:0017D5DC   357 0001:0017D62C
+   358 0001:0017D648   359 0001:0017D662   360 0001:0017D672   372 0001:0017D6D0
+   373 0001:0017D6D6   376 0001:0017D6F6   377 0001:0017D720   378 0001:0017D73D
+   379 0001:0017D751   418 0001:0017D794   419 0001:0017D7A4   420 0001:0017D7B0
+   422 0001:0017D7B8   423 0001:0017D832   425 0001:0017D846   451 0001:0017D874
+   452 0001:0017D87A   453 0001:0017D892   454 0001:0017D8A6   457 0001:0017D8C8
+   458 0001:0017D8CE   459 0001:0017D8E6   460 0001:0017D8FA   472 0001:0017D920
+   473 0001:0017D948   474 0001:0017D950   475 0001:0017D96C   477 0001:0017D9A3
+   478 0001:0017D9D9   479 0001:0017D9DB   474 0001:0017D9DC   480 0001:0017D9DF
+   485 0001:0017DA0C   486 0001:0017DA2D   487 0001:0017DA35   488 0001:0017DA51
+   490 0001:0017DA88   491 0001:0017DAB2   492 0001:0017DAB4   487 0001:0017DAB5
+   493 0001:0017DAB8   498 0001:0017DAE4   499 0001:0017DB03   500 0001:0017DB08
+   501 0001:0017DB24   503 0001:0017DB5B   504 0001:0017DB92   505 0001:0017DB94
+   500 0001:0017DB95   506 0001:0017DB98   511 0001:0017DBC4   512 0001:0017DBEC
+   513 0001:0017DBFA   514 0001:0017DC16   516 0001:0017DC4D   517 0001:0017DC89
+   518 0001:0017DC8B   513 0001:0017DC8C   519 0001:0017DC8F   524 0001:0017DCC0
+   525 0001:0017DCE1   526 0001:0017DCE9   527 0001:0017DD05   529 0001:0017DD3C
+   530 0001:0017DD66   531 0001:0017DD68   526 0001:0017DD69   532 0001:0017DD6C
+   534 0001:0017DD98   535 0001:0017DDBC   536 0001:0017DDE1   539 0001:0017DDEF
+   540 0001:0017DDFC   541 0001:0017DE14   542 0001:0017DE22   543 0001:0017DE32
+   544 0001:0017DE4A   545 0001:0017DE5A   546 0001:0017DE72   547 0001:0017DE8A
+   548 0001:0017DE97   549 0001:0017DEAF   550 0001:0017DEBC   551 0001:0017DEC9
+   552 0001:0017DED7   553 0001:0017DEE5   554 0001:0017DEFD   555 0001:0017DF1D
+   556 0001:0017DF3B   559 0001:0017DF4E   560 0001:0017DF9C   563 0001:0017DFBE
+   564 0001:0017DFD9   568 0001:0017DFF1   571 0001:0017E148   572 0001:0017E151
+   573 0001:0017E16B   576 0001:0017E188   577 0001:0017E1A2   587 0001:0017E1CE
+   590 0001:0017E214   591 0001:0017E21D   592 0001:0017E237   597 0001:0017E254
+   598 0001:0017E26F   599 0001:0017E289   600 0001:0017E2AB   602 0001:0017E2B0
+   603 0001:0017E2D0   608 0001:0017E330   609 0001:0017E34F   610 0001:0017E36C
+   611 0001:0017E3A3   614 0001:0017E3E8   615 0001:0017E3EE   616 0001:0017E407
+   619 0001:0017E42C   620 0001:0017E446   621 0001:0017E473   624 0001:0017E4C4
+   625 0001:0017E4CD   626 0001:0017E4E7   649 0001:0017E510   650 0001:0017E538
+   651 0001:0017E55C   652 0001:0017E581   653 0001:0017E59F   656 0001:0017E5F8
+   657 0001:0017E614   658 0001:0017E640   664 0001:0017E68C   675 0001:0017E6B4
+   676 0001:0017E6D8   677 0001:0017E6FD   678 0001:0017E71B   687 0001:0017E770
+   690 0001:0017E79C   691 0001:0017E7A5   692 0001:0017E7BA   693 0001:0017E7CD
+   694 0001:0017E7EF   695 0001:0017E805   696 0001:0017E82F   697 0001:0017E845
+   698 0001:0017E85F   699 0001:0017E875   700 0001:0017E88F   701 0001:0017E8A5
+   702 0001:0017E8BF   703 0001:0017E8D5   706 0001:0017E8E9   707 0001:0017E907
+   708 0001:0017E929   709 0001:0017E94B   710 0001:0017E979   711 0001:0017E98F
+   712 0001:0017E9C5   717 0001:0017E9E6   718 0001:0017E9FC   719 0001:0017EA2A
+   720 0001:0017EA40   721 0001:0017EA5F   722 0001:0017EA64   723 0001:0017EA98
+   725 0001:0017EACB   727 0001:0017EADD   728 0001:0017EAF4   730 0001:0017EAFA
+   731 0001:0017EB01   734 0001:0017EB0F   743 0001:0017EBD0   746 0001:0017EBFA
+   747 0001:0017EC08   748 0001:0017EC28   749 0001:0017EC40   750 0001:0017EC6B
+   751 0001:0017EC86   753 0001:0017EC9F   754 0001:0017ECBD   755 0001:0017ECDF
+   760 0001:0017ED0D   761 0001:0017ED28   762 0001:0017ED4C   763 0001:0017ED51
+   764 0001:0017ED87   766 0001:0017EDBC   768 0001:0017EDCB   769 0001:0017EDDF
+   771 0001:0017EDE5   772 0001:0017EDE9   775 0001:0017EDF4   784 0001:0017EE78
+   788 0001:0017EEA4   789 0001:0017EEB2   790 0001:0017EECA   791 0001:0017EEE2
+   792 0001:0017EF0E   793 0001:0017EF29   795 0001:0017EF42   797 0001:0017EF48
+   800 0001:0017EF63   801 0001:0017EF81   802 0001:0017EFAF   803 0001:0017EFC5
+   804 0001:0017EFE7   805 0001:0017F01D   806 0001:0017F03E   810 0001:0017F06F
+   811 0001:0017F074   812 0001:0017F0AD   815 0001:0017F0E5   818 0001:0017F0ED
+   819 0001:0017F120   823 0001:0017F122   824 0001:0017F138   826 0001:0017F13E
+   827 0001:0017F145   829 0001:0017F153   857 0001:0017F23C   859 0001:0017F26A
+   860 0001:0017F27D   861 0001:0017F294   862 0001:0017F29B   864 0001:0017F2A9
+   866 0001:0017F2C0   868 0001:0017F2C3   871 0001:0017F32D   873 0001:0017F33F
+   874 0001:0017F396   875 0001:0017F39B   876 0001:0017F3B1   878 0001:0017F3E8
+   879 0001:0017F3F5   880 0001:0017F401   881 0001:0017F404   883 0001:0017F412
+   864 0001:0017F413   885 0001:0017F41C   887 0001:0017F434   888 0001:0017F48B
+   889 0001:0017F490   890 0001:0017F4A6   892 0001:0017F4DD   894 0001:0017F4EA
+   897 0001:0017F57C   900 0001:0017F59C   901 0001:0017F5A5   902 0001:0017F5BD
+   903 0001:0017F5D0   904 0001:0017F5FA   905 0001:0017F610   906 0001:0017F626
+   908 0001:0017F64F   914 0001:0017F694   915 0001:0017F6B3   918 0001:0017F6F2
+   923 0001:0017F74C   924 0001:0017F778   925 0001:0017F7B1   926 0001:0017F7F7
+   929 0001:0017F854   930 0001:0017F857   931 0001:0017F87B   932 0001:0017F888
+   935 0001:0017F8AC   936 0001:0017F8AF   937 0001:0017F8C5   938 0001:0017F8D7
+   939 0001:0017F8E4   942 0001:0017F90C   943 0001:0017F90F   944 0001:0017F933
+   947 0001:0017F960   948 0001:0017F97F   949 0001:0017F9BE   952 0001:0017FA18
+   955 0001:0017FA38   956 0001:0017FA41   957 0001:0017FA56   958 0001:0017FA69
+   959 0001:0017FA8F   960 0001:0017FAA5   961 0001:0017FAB9   962 0001:0017FAC9
+   964 0001:0017FAE9   965 0001:0017FAFB   967 0001:0017FB00   972 0001:0017FB5C
+   973 0001:0017FB91   974 0001:0017FBCF   975 0001:0017FBDB   977 0001:0017FBDF
+   978 0001:0017FBE1   984 0001:0017FC30   985 0001:0017FC5E   988 0001:0017FC82
+   989 0001:0017FC86   990 0001:0017FCA4   991 0001:0017FCB0   992 0001:0017FCCE
+   993 0001:0017FCDA   994 0001:0017FCF8   995 0001:0017FD21   996 0001:0017FD46
+   997 0001:0017FD66   998 0001:0017FD8B   999 0001:0017FDAF  1000 0001:0017FDDA
+  1001 0001:0017FE05  1002 0001:0017FE29  1003 0001:0017FE4D  1004 0001:0017FE71
+  1006 0001:0017FE7B  1007 0001:0017FE8B  1012 0001:0017FEF8  1015 0001:0017FF3C
+  1016 0001:0017FF4F  1017 0001:0017FF62  1018 0001:0017FF75  1019 0001:0017FF85
+  1021 0001:0017FFA8  1022 0001:0017FFB9  1023 0001:0017FFD7  1024 0001:00180000
+  1025 0001:00180013  1026 0001:0018003C  1027 0001:00180065  1028 0001:00180078
+  1029 0001:0018008B  1031 0001:0018009E  1032 0001:001800B7  1035 0001:00180118
+  1036 0001:0018012E  1038 0001:00180137  1039 0001:00180158  1041 0001:0018015F
+  1042 0001:0018016C  1048 0001:001801B0  1049 0001:001801B2  1054 0001:001801B4
+  1055 0001:001801D4  1056 0001:001801D6  1057 0001:001801F0  1058 0001:00180212
+  1059 0001:00180216  1061 0001:00180238  1062 0001:0018023A  1064 0001:00180257
+  1073 0001:001802BC  1074 0001:001802E6  1075 0001:001802E8  1076 0001:001802FA
+  1077 0001:00180317  1078 0001:00180339  1079 0001:0018033D  1081 0001:0018035F
+  1082 0001:00180361  1084 0001:00180380  1086 0001:001803A2  1087 0001:001803A4
+  1089 0001:001803B0  1094 0001:001804F4  1095 0001:00180522  1096 0001:0018053F
+  1097 0001:00180561  1100 0001:00180565  1101 0001:00180567  1103 0001:00180584
+  1108 0001:001805E4  1109 0001:0018061D  1110 0001:00180647  1111 0001:00180668
+  1114 0001:0018066C  1115 0001:0018066E  1117 0001:0018068B  1122 0001:001806E0
+  1123 0001:0018070E  1124 0001:0018072B  1125 0001:0018074C  1128 0001:00180750
+  1129 0001:00180752  1131 0001:0018076F  1134 0001:001807C4  1135 0001:001807CD
+  1136 0001:001807EF  1137 0001:001807FC  1140 0001:00180828  1141 0001:0018082E
+  1142 0001:00180847  1143 0001:00180854  1147 0001:0018087C  1148 0001:001808A1
+  1149 0001:001808BE  1150 0001:001808CA  1152 0001:001808CE  1153 0001:001808D0
+  1158 0001:00180918  1160 0001:00180921  1161 0001:00180930  1163 0001:00180937
+  1164 0001:0018093E  1167 0001:00180954  1168 0001:00180970  1169 0001:0018099B
+  1176 0001:001809D8  1177 0001:00180A04  1179 0001:00180A17
+
+Line numbers for rTIU(rTIU.pas) segment .itext
+
+  1172 0002:0000106C  1175 0002:00001084
+
+Line numbers for VA2006Utils(..\VA\VA2006Utils.pas) segment .text
+
+    32 0001:00180B08    33 0001:00180B12    35 0001:00180B26    36 0001:00180B29
+    37 0001:00180B2E    38 0001:00180B38    39 0001:00180B40    41 0001:00180B5F
+    45 0001:00180B68    46 0001:00180B71    47 0001:00180B7C    49 0001:00180B86
+    50 0001:00180B94    52 0001:00180B9B    55 0001:00180BA0    56 0001:00180BB9
+    57 0001:00180BC4    58 0001:00180BC9    59 0001:00180BD0    60 0001:00180BDD
+    64 0001:00180BFC    65 0001:00180C0A    67 0001:00180C39
+
+Line numbers for fPCEBaseGrid(Encounter\fPCEBaseGrid.pas) segment .text
+
+    50 0001:00180E44    51 0001:00180E47    52 0001:00180E4E    53 0001:00180E59
+    54 0001:00180E63    55 0001:00180E6C    62 0001:00180E70    63 0001:00180E98
+    65 0001:00180EA8    66 0001:00180EAF    67 0001:00180EB9    68 0001:00180EC7
+    70 0001:00180ED1    71 0001:00180ED9    72 0001:00180EDB    74 0001:00180EFB
+    75 0001:00180EFF    76 0001:00180F0C    77 0001:00180F30    78 0001:00180F48
+    79 0001:00180F4D    72 0001:00180F4E    80 0001:00180F51    84 0001:00180F67
+    85 0001:00180F78    86 0001:00180F7D    88 0001:00180F9D    89 0001:00180FD4
+    90 0001:00180FDA    91 0001:00180FFA    92 0001:00180FFF    93 0001:00181005
+    86 0001:00181006    95 0001:00181009    96 0001:0018100B    97 0001:0018102B
+    96 0001:00181045    98 0001:00181048   100 0001:00181088   103 0001:0018109A
+   109 0001:001810D8   110 0001:001810DF   115 0001:001810E0   116 0001:001810E7
+   124 0001:001810E8   125 0001:00181112   127 0001:0018112A   128 0001:00181155
+   130 0001:00181179   131 0001:0018118F   133 0001:001811B4   134 0001:001811DD
+   135 0001:001811E1   136 0001:001811E3   131 0001:001811E9   137 0001:001811EC
+   128 0001:001811EF   138 0001:001811F4   139 0001:001811F6   140 0001:00181204
+   142 0001:0018122A   143 0001:00181245   144 0001:0018125E   145 0001:0018127C
+   146 0001:00181280   147 0001:00181282   148 0001:00181286   149 0001:00181288
+   140 0001:0018128E   150 0001:00181293   151 0001:001812B1   150 0001:001812B9
+   152 0001:001812BE   153 0001:001812C6   154 0001:001812E5   153 0001:0018130A
+   155 0001:0018130F   156 0001:00181321   158 0001:0018133C   159 0001:00181343
+   160 0001:00181351   162 0001:00181358   164 0001:00181361   170 0001:001813A0
+   171 0001:001813A6   172 0001:001813A9   174 0001:001813BB   175 0001:001813D5
+   177 0001:001813E6   178 0001:001813E8   179 0001:001813EA   174 0001:001813EB
+   181 0001:001813EE   187 0001:001813F8   188 0001:00181400   189 0001:0018141A
+   188 0001:0018142D   190 0001:00181430   191 0001:0018143A   197 0001:00181440
+   198 0001:00181445   200 0001:00181457   201 0001:00181471   200 0001:00181481
+   203 0001:00181484   204 0001:0018148E   208 0001:00181494   214 0001:00181498
+   215 0001:001814B2   216 0001:001814CC   215 0001:00181513   217 0001:00181516
+   222 0001:00181540   223 0001:00181558   224 0001:00181563   225 0001:0018157D
+   224 0001:001815AE   226 0001:001815B1
+
+Line numbers for fPCEBaseGrid(Encounter\fPCEBaseGrid.pas) segment .itext
+
+   228 0002:0000109C   229 0002:000010A5   231 0002:000010AF
+
+Line numbers for ORCtrlsVA508Compatibility(..\CPRS-Lib\ORCtrlsVA508Compatibility.pas) segment .text
+
+   109 0001:00181BC4   110 0001:00181BCA   111 0001:00181BCC   113 0001:00181BDD
+   115 0001:00181BF5   116 0001:00181C00   118 0001:00181C02   111 0001:00181C03
+   119 0001:00181C06   126 0001:00181C10   127 0001:00181C11   128 0001:00181C13
+   129 0001:00181C1A   130 0001:00181C1E   132 0001:00181C25   133 0001:00181C2C
+   140 0001:00181C30   141 0001:00181C50   143 0001:00181C5F   144 0001:00181C70
+   145 0001:00181C81   146 0001:00181C92   147 0001:00181CA3   148 0001:00181CB4
+   149 0001:00181CC5   152 0001:00181CD6   157 0001:00181CE7   163 0001:00181CEE
+   164 0001:00181D1A   165 0001:00181D4C   166 0001:00181D7E   167 0001:00181DB2
+   168 0001:00181DE4   169 0001:00181E18   170 0001:00181E4A   171 0001:00181E7C
+   172 0001:00181EB0   173 0001:00181EE4   174 0001:00181F18   176 0001:00181F4A
+   177 0001:00181F7C   178 0001:00181FAE   179 0001:00181FE2   180 0001:00182014
+   181 0001:00182046   183 0001:00182078   184 0001:001820AC   185 0001:001820E0
+   186 0001:00182114   187 0001:00182148   188 0001:0018217C   190 0001:001821AE
+   191 0001:001821E0   192 0001:00182212   194 0001:00182244   195 0001:00182276
+   197 0001:001822A8   202 0001:001823A8   203 0001:001823BA   204 0001:001823D3
+   207 0001:001823F4   210 0001:001823FB   211 0001:00182406   213 0001:00182414
+   215 0001:00182422   218 0001:00182440   219 0001:00182446   220 0001:00182457
+   225 0001:0018245C   226 0001:00182463   227 0001:0018246F   228 0001:00182476
+   229 0001:00182478   230 0001:00182490   232 0001:0018249E   233 0001:001824A7
+   260 0001:0018262C   261 0001:0018263E   263 0001:00182657   266 0001:00182678
+   267 0001:00182683   268 0001:00182688   269 0001:0018268E   270 0001:00182696
+   271 0001:0018269C   272 0001:001826A4   273 0001:001826AA   274 0001:001826B2
+   275 0001:001826BE   278 0001:001826CC   279 0001:001826D5   280 0001:001826E6
+   286 0001:001826EC   287 0001:001826F1   289 0001:001826F8   290 0001:00182709
+   291 0001:00182711   292 0001:00182716   293 0001:00182731   295 0001:00182736
+   299 0001:0018273C   300 0001:00182745   301 0001:00182757   304 0001:0018275C
+   305 0001:00182765   306 0001:00182777   311 0001:0018277C   312 0001:00182781
+   313 0001:00182783   314 0001:00182789   315 0001:0018278D   316 0001:0018278F
+   317 0001:0018279A   323 0001:001827A0   324 0001:001827A4   325 0001:001827A6
+   327 0001:001827AF   328 0001:001827B5   329 0001:001827C4   331 0001:001827CC
+   333 0001:001827D7   334 0001:001827DD   335 0001:001827EC   339 0001:001827F4
+   340 0001:001827FA   341 0001:00182809   343 0001:0018280F   344 0001:00182812
+   350 0001:00182818   351 0001:0018281B   352 0001:00182827   359 0001:00182844
+   360 0001:0018284E   361 0001:00182855   362 0001:00182857   363 0001:00182862
+   364 0001:00182866   366 0001:00182878   367 0001:0018287F   374 0001:00182884
+   375 0001:00182889   376 0001:0018288B   377 0001:00182892   379 0001:00182896
+   380 0001:001828A6   381 0001:001828AF   384 0001:001828BF   385 0001:001828C6
+   391 0001:001828E4   392 0001:001828E7   393 0001:001828F3   400 0001:00182918
+   401 0001:00182922   402 0001:00182929   403 0001:0018292B   404 0001:00182936
+   406 0001:0018293A   407 0001:00182947   409 0001:00182955   411 0001:00182961
+   418 0001:001829B4   419 0001:001829B9   420 0001:001829BB   421 0001:001829C2
+   423 0001:001829C6   424 0001:001829D3   426 0001:001829E1   429 0001:001829EF
+   430 0001:001829F6   436 0001:00182A28   437 0001:00182A2B   438 0001:00182A37
+   442 0001:00182A50   443 0001:00182A53   444 0001:00182A5A   449 0001:00182A5C
+   450 0001:00182A5F   451 0001:00182A61   452 0001:00182A6A   454 0001:00182A78
+   455 0001:00182A7F   460 0001:00182A9C   461 0001:00182AA0   462 0001:00182AA6
+   463 0001:00182AB8   464 0001:00182ABA   469 0001:00182AC0   470 0001:00182AD2
+   471 0001:00182AE1   478 0001:00182AFC   481 0001:00182B06   486 0001:00182B0F
+   488 0001:00182B21   489 0001:00182B2A   490 0001:00182B3A   491 0001:00182B43
+   493 0001:00182B53   498 0001:00182B58   499 0001:00182B6A   500 0001:00182B83
+   503 0001:00182BA4   504 0001:00182BA7   505 0001:00182BB3   510 0001:00182BC4
+   511 0001:00182BD6   512 0001:00182BEF   515 0001:00182C10   516 0001:00182C13
+   517 0001:00182C1F   522 0001:00182C34   523 0001:00182C46   524 0001:00182C5F
+   527 0001:00182C80   528 0001:00182C83   529 0001:00182C8F   534 0001:00182CA4
+   535 0001:00182CB6   536 0001:00182CCF   539 0001:00182CF0   540 0001:00182CF3
+   541 0001:00182CFF   572 0001:00182D14   573 0001:00182D26   574 0001:00182D3F
+   577 0001:00182D60   578 0001:00182D66   579 0001:00182D6F
+
+Line numbers for ORCtrlsVA508Compatibility(..\CPRS-Lib\ORCtrlsVA508Compatibility.pas) segment .itext
+
+   615 0002:000010B0   616 0002:000010B9   618 0002:000010BE
+
+Line numbers for UBAConst(BA\UBAConst.pas) segment .text
+
+    60 0001:00000000
+
+Line numbers for mVisitRelated(Encounter\mVisitRelated.pas) segment .text
+
+    77 0001:0018305C    78 0001:0018305F    79 0001:00183074    81 0001:00183078
+    83 0001:0018307F    84 0001:001830F5    85 0001:0018311C    86 0001:00183143
+    87 0001:0018316A    88 0001:00183191    89 0001:001831B8    90 0001:001831DF
+    91 0001:00183206    92 0001:0018322D    93 0001:00183254    94 0001:0018327B
+    95 0001:001832A2    96 0001:001832C6    97 0001:001832E6    98 0001:00183306
+    99 0001:00183326   101 0001:00183344   103 0001:00183356   104 0001:00183361
+   105 0001:0018336C   106 0001:00183377   108 0001:00183382   109 0001:0018338D
+   110 0001:00183398   111 0001:001833A3   115 0001:001833B3   116 0001:001833CE
+   117 0001:001833E9   118 0001:00183404   119 0001:0018341F   121 0001:0018343A
+   122 0001:00183455   123 0001:00183470   125 0001:0018348B   127 0001:001834D3
+   129 0001:001834DC   130 0001:001834EC   133 0001:001834FC   136 0001:00183500
+   137 0001:00183512   138 0001:0018351B   139 0001:00183524   140 0001:00183534
+   141 0001:00183544   144 0001:00183560   145 0001:00183567   146 0001:0018356A
+   147 0001:00183588   148 0001:001835A3   151 0001:001835AC   152 0001:001835B2
+   153 0001:001835CE   154 0001:001835EA   155 0001:00183606   156 0001:00183622
+   157 0001:0018363E   158 0001:0018365A   159 0001:00183676   160 0001:00183692
+   164 0001:00183698   165 0001:001836A4   166 0001:001836B9   167 0001:001836CE
+   168 0001:001836E6   169 0001:001836FE   170 0001:00183716   171 0001:0018372E
+   172 0001:00183746   173 0001:0018375E   176 0001:00183768   177 0001:00183779
+   178 0001:00183785   180 0001:0018378B   181 0001:001837A2   182 0001:001837BA
+   183 0001:001837D2   184 0001:001837EA   185 0001:00183802   186 0001:0018381A
+   187 0001:00183832   189 0001:0018384A   192 0001:00183854   193 0001:0018385A
+   194 0001:00183871   195 0001:00183888   196 0001:0018389F   197 0001:001838B6
+   198 0001:001838CD   199 0001:001838E4   200 0001:001838FB   203 0001:00183912
+   205 0001:0018391B   206 0001:00183921   208 0001:00183931   212 0001:00183934
+   213 0001:00183942   214 0001:00183956   215 0001:0018396D   216 0001:00183984
+   217 0001:0018399B   218 0001:001839B2   219 0001:001839C9   220 0001:001839DD
+   223 0001:001839F4   225 0001:001839FD   226 0001:00183A00   228 0001:00183A10
+   232 0001:00183A18   233 0001:00183A25   234 0001:00183A2E   235 0001:00183A37
+   238 0001:00183A40   239 0001:00183A4C   240 0001:00183A57   242 0001:00183A67
+   243 0001:00183A73   246 0001:00183A81   247 0001:00183A8D   250 0001:00183A9B
+   251 0001:00183AA7   254 0001:00183AB3   255 0001:00183ABC
+
+Line numbers for mVisitRelated(Encounter\mVisitRelated.pas) segment .itext
+
+   258 0002:000010C0   259 0002:000010C9   261 0002:000010D3
+
+Line numbers for fPCEProvider(Encounter\fPCEProvider.pas) segment .text
+
+    55 0001:00183D74    56 0001:00183D95    57 0001:00183DA1    58 0001:00183DAB
+    60 0001:00183DBB    61 0001:00183DD2    64 0001:00183DE0    65 0001:00183DE9
+    67 0001:00183DEB    68 0001:00183E0B    69 0001:00183E2A    65 0001:00183E2B
+    70 0001:00183E30    72 0001:00183E5A    73 0001:00183E64    77 0001:00183E6F
+    78 0001:00183E79    79 0001:00183E83    80 0001:00183E8C    82 0001:00183EBA
+    83 0001:00183EC4    84 0001:00183ECE    87 0001:00183ED7    89 0001:00183EDC
+    92 0001:00183F22    94 0001:00183F25    95 0001:00183F35    97 0001:00183F39
+    98 0001:00183F52   103 0001:00183F97   105 0001:00183FA7   108 0001:00183FB6
+   109 0001:00183FB8   115 0001:00183FEC   116 0001:00184009   117 0001:00184015
+   119 0001:0018402D   121 0001:00184060   127 0001:00184088   128 0001:001840A1
+   130 0001:001840C2   131 0001:001840E9   133 0001:001840EF   134 0001:00184122
+   137 0001:00184130   140 0001:00184174   141 0001:00184177   142 0001:0018417E
+   143 0001:0018418E   146 0001:00184190   147 0001:001841A6   148 0001:001841BC
+   149 0001:001841C9   150 0001:001841D6   151 0001:001841E6   152 0001:001841F6
+   153 0001:00184206   154 0001:00184216   155 0001:00184226   156 0001:00184242
+   157 0001:00184257   163 0001:001842D4   164 0001:001842ED   166 0001:001842F1
+   170 0001:001842FF   172 0001:0018431A   173 0001:00184324   177 0001:00184329
+   178 0001:00184350   180 0001:00184375   182 0001:00184393   183 0001:001843A1
+   185 0001:001843BD   186 0001:001843C7   188 0001:00184482
+
+Line numbers for fGAF(Encounter\fGAF.pas) segment .text
+
+    54 0001:00184764    55 0001:00184769    56 0001:0018478E    58 0001:00184792
+    59 0001:001847C5    66 0001:001847D0    67 0001:001847F3    68 0001:001847FD
+    70 0001:00184841    72 0001:00184865    73 0001:0018487D    75 0001:00184919
+    70 0001:0018491C    77 0001:00184923    78 0001:00184937    80 0001:00184940
+    81 0001:00184955    85 0001:001849C4    87 0001:001849CD    88 0001:001849E4
+    96 0001:001849EC    97 0001:00184A0F    98 0001:00184A1E    99 0001:00184A29
+   100 0001:00184A3D   102 0001:00184A4E   104 0001:00184A79   105 0001:00184A7F
+   106 0001:00184A8C   107 0001:00184A99   108 0001:00184AAB   110 0001:00184ABB
+   111 0001:00184ACA   112 0001:00184AE7   113 0001:00184AF8   115 0001:00184B1F
+   116 0001:00184B2D   121 0001:00184B3E   122 0001:00184B48   124 0001:00184B57
+   125 0001:00184B71   127 0001:00184B7A   128 0001:00184B7C   134 0001:00184C54
+   136 0001:00184C6F   137 0001:00184C94   138 0001:00184CB0   139 0001:00184CB2
+   140 0001:00184CB9   141 0001:00184CD1   142 0001:00184D01   148 0001:00184D34
+   153 0001:00184D38   154 0001:00184D3F   157 0001:00184D40   158 0001:00184D46
+   159 0001:00184D53   162 0001:00184D58   163 0001:00184D64   164 0001:00184D74
+   165 0001:00184D82   166 0001:00184D90   167 0001:00184DA3   169 0001:00184DBB
+   170 0001:00184DBF   171 0001:00184DC6   173 0001:00184DD6   176 0001:00184DE0
+   178 0001:00184DF6   180 0001:00184DFF   181 0001:00184E06   182 0001:00184E0D
+   183 0001:00184E2A   185 0001:00184E33   190 0001:00184E54   191 0001:00184E59
+   194 0001:00184E5C   196 0001:00184E71   197 0001:00184E8C   200 0001:00184EB8
+   201 0001:00184ED1   202 0001:00184EDA   203 0001:00184EEA   204 0001:00184F16
+   205 0001:00184F1F
+
+Line numbers for fGAF(Encounter\fGAF.pas) segment .itext
+
+   207 0002:000010D4   208 0002:000010DD   210 0002:000010E7
+
+Line numbers for fVisitType(Encounter\fVisitType.pas) segment .text
+
+    94 0001:001854A0    97 0001:001854C1    98 0001:001854D2    99 0001:001854D4
+   100 0001:001854F9   102 0001:00185533   103 0001:00185540   104 0001:0018554B
+   105 0001:0018554D   106 0001:0018554F    99 0001:00185552   107 0001:00185557
+   108 0001:00185586   110 0001:001855E9   111 0001:001855FD   112 0001:00185607
+   113 0001:00185615   114 0001:00185628   116 0001:00185643   118 0001:00185655
+   107 0001:00185658   120 0001:00185661   125 0001:00185698   127 0001:001856BB
+   128 0001:001856DE   130 0001:00185705   132 0001:00185776   133 0001:00185780
+   134 0001:0018578E   135 0001:001857A1   137 0001:001857C2   140 0001:001857D4
+   128 0001:001857D7   141 0001:001857E0   142 0001:001857EB   150 0001:00185820
+   165 0001:00185824   166 0001:00185853   167 0001:00185861   169 0001:00185877
+   170 0001:00185888   171 0001:001858AE   172 0001:001858B4   173 0001:001858C1
+   174 0001:001858D4   167 0001:001858D5   175 0001:001858D8   176 0001:001858DF
+   182 0001:0018593C   183 0001:0018595B   184 0001:00185962   185 0001:00185972
+   186 0001:0018597C   187 0001:00185985   188 0001:00185999   190 0001:001859A9
+   191 0001:001859BD   193 0001:001859C9   194 0001:001859DE   197 0001:001859F3
+   198 0001:00185A12   202 0001:00185A25   203 0001:00185A44   205 0001:00185A55
+   206 0001:00185A5C   207 0001:00185A75   208 0001:00185A82   252 0001:00185AC0
+   253 0001:00185AC4   254 0001:00185AD7   255 0001:00185AE4   256 0001:00185AF1
+   257 0001:00185B12   260 0001:00185B18   262 0001:00185B30   263 0001:00185B69
+   264 0001:00185B70   265 0001:00185B88   271 0001:00185BB0   273 0001:00185BCB
+   274 0001:00185BDC   275 0001:00185C04   276 0001:00185C08   277 0001:00185C16
+   278 0001:00185C1D   285 0001:00185C48   287 0001:00185C64   288 0001:00185C75
+   289 0001:00185C86   290 0001:00185CA3   291 0001:00185CA7   292 0001:00185CB5
+   293 0001:00185CBC   294 0001:00185CCD   299 0001:00185CF0   300 0001:00185CF5
+   305 0001:00185CF8   306 0001:00185CFD   310 0001:00185D00   312 0001:00185D1D
+   313 0001:00185D2A   315 0001:00185D42   317 0001:00185D76   322 0001:00185D9C
+   323 0001:00185DA1   328 0001:00185DA4   329 0001:00185DA9   337 0001:00185DAC
+   338 0001:00185DC8   339 0001:00185DD1   343 0001:00185DDD   344 0001:00185DFF
+   345 0001:00185E23   346 0001:00185E34   347 0001:00185E4C   348 0001:00185E6A
+   349 0001:00185E72   351 0001:00185E77   352 0001:00185E8A   353 0001:00185E9F
+   354 0001:00185EA3   356 0001:00185EA8   349 0001:00185EAB   358 0001:00185EAE
+   360 0001:00185EBC   361 0001:00185ED1   362 0001:00185ED9   363 0001:00185EEB
+   364 0001:00185EF8   365 0001:00185F05   366 0001:00185F13   367 0001:00185F21
+   368 0001:00185F2F   369 0001:00185F4F   370 0001:00185F63   371 0001:00185F83
+   372 0001:00185F9D   373 0001:00185FC4   374 0001:00185FD1   381 0001:00186008
+   383 0001:0018602E   384 0001:0018604E   385 0001:00186075   387 0001:0018608B
+   388 0001:00186095   389 0001:001860A3   390 0001:001860B2   392 0001:001860D2
+   394 0001:001860E4   384 0001:001860E7   395 0001:001860EC   397 0001:00186110
+   398 0001:00186147   399 0001:00186185   402 0001:001861F8   406 0001:00186209
+   409 0001:00186215   422 0001:00186274   423 0001:00186296   424 0001:0018629E
+   425 0001:001862A6   426 0001:001862AE   428 0001:001862CE   429 0001:00186314
+   430 0001:0018634A   433 0001:00186355   434 0001:00186362   435 0001:00186368
+   436 0001:00186375   437 0001:00186391   438 0001:001863AD   439 0001:001863BE
+   440 0001:001863CE   442 0001:001863E4   443 0001:001863F4   446 0001:00186403
+   447 0001:00186405   449 0001:00186413   450 0001:00186428   451 0001:00186435
+   452 0001:0018643C   460 0001:001864B8   461 0001:001864E2   462 0001:001864FC
+   463 0001:00186506   464 0001:00186514   465 0001:00186519   466 0001:00186526
+   468 0001:00186533   469 0001:00186536   471 0001:00186549   473 0001:00186564
+   474 0001:0018659D   475 0001:001865BB   477 0001:001865C2   479 0001:001865E9
+   480 0001:001865EB   482 0001:001865F5   483 0001:0018663B   485 0001:00186640
+   486 0001:0018664D   488 0001:00186651   489 0001:00186654   491 0001:0018666D
+   492 0001:00186671   493 0001:00186679   495 0001:0018667D   496 0001:00186683
+   498 0001:00186685   499 0001:00186698   477 0001:0018669B   501 0001:001866B1
+   503 0001:001866C3   510 0001:00186704   511 0001:00186727   512 0001:0018673C
+   513 0001:0018674C   514 0001:00186784   515 0001:001867B8   517 0001:001867BC
+   519 0001:001867C2   524 0001:001867E3   526 0001:001867E9   529 0001:00186800
+   534 0001:0018683C   535 0001:00186841   540 0001:00186844   541 0001:00186854
+   551 0001:00186858
+
+Line numbers for fVisitType(Encounter\fVisitType.pas) segment .itext
+
+   543 0002:000010E8   544 0002:000010F1   548 0002:000010FB
+
+Line numbers for fDiagnoses(Encounter\fDiagnoses.pas) segment .text
+
+    57 0001:00186B50    58 0001:00186B58    60 0001:00186B61    61 0001:00186B63
+    62 0001:00186B79    63 0001:00186B8D    61 0001:00186B90    65 0001:00186B93
+    67 0001:00186BA7    68 0001:00186BB1    69 0001:00186BC3    72 0001:00186BCE
+    79 0001:00186BD4    81 0001:00186BDD    82 0001:00186BE9    84 0001:00186C08
+    85 0001:00186C16    86 0001:00186C20    82 0001:00186C21    87 0001:00186C24
+    88 0001:00186C2F    96 0001:00186C38    98 0001:00186C3D   100 0001:00186C4C
+   101 0001:00186C66   102 0001:00186C77   103 0001:00186CC7   100 0001:00186CC8
+   104 0001:00186CCB   106 0001:00186CD5   109 0001:00186CF8   110 0001:00186CFB
+   111 0001:00186D02   112 0001:00186D12   113 0001:00186D1D   114 0001:00186D28
+   115 0001:00186D38   116 0001:00186D42   117 0001:00186D4E   120 0001:00186D70
+   121 0001:00186D73   122 0001:00186D7A   123 0001:00186D81   126 0001:00186D84
+   127 0001:00186D8A   128 0001:00186D93   129 0001:00186DA7   131 0001:00186DC2
+   132 0001:00186DDA   140 0001:00186E04   141 0001:00186E10   142 0001:00186E18
+   144 0001:00186E28   145 0001:00186E30   146 0001:00186E3E   147 0001:00186E61
+   148 0001:00186E77   149 0001:00186E7C   150 0001:00186E80   151 0001:00186E9D
+   152 0001:00186ED5   150 0001:00186ED9   153 0001:00186EDC   154 0001:00186EFE
+   155 0001:00186F0E   157 0001:00186F16   158 0001:00186F18   160 0001:00186F35
+   161 0001:00186F64   162 0001:00186F65   158 0001:00186F66   163 0001:00186F69
+   164 0001:00186F6D   166 0001:00186F82   167 0001:00186F97   169 0001:00186FA9
+   172 0001:00186FBE   174 0001:00186FDE   177 0001:00186FEE   180 0001:00187014
+   181 0001:00187019   182 0001:00187020   183 0001:0018702D   184 0001:0018704E
+   185 0001:00187059   186 0001:0018706A   187 0001:00187071   191 0001:00187078
+   192 0001:00187099   193 0001:001870A2   195 0001:001870EA   196 0001:001870FD
+   197 0001:0018710C   199 0001:0018710E   200 0001:0018711A   201 0001:00187121
+   204 0001:0018728C   205 0001:0018728F   206 0001:00187296   207 0001:001872A0
+   208 0001:001872A7   212 0001:001872AC   214 0001:001872B1   221 0001:001872B4
+   223 0001:001872D0   224 0001:001872DC   226 0001:001872FC   227 0001:0018730D
+   228 0001:00187318   229 0001:00187323   230 0001:00187333   231 0001:00187344
+   232 0001:0018736B   224 0001:0018736C   233 0001:0018736F   238 0001:001873D0
+   240 0001:00187407   241 0001:00187436   243 0001:0018745D   244 0001:0018748A
+   246 0001:001874B1   247 0001:001874DE   249 0001:00187502   250 0001:0018752F
+   252 0001:00187553   254 0001:00187575   256 0001:001875B9
+
+Line numbers for fDiagnoses(Encounter\fDiagnoses.pas) segment .itext
+
+   258 0002:000010FC   259 0002:00001105   261 0002:0000110F
+
+Line numbers for fProcedure(Encounter\fProcedure.pas) segment .text
+
+    76 0001:00187A80    77 0001:00187A85    79 0001:00187A90    80 0001:00187AAA
+    81 0001:00187ABB    79 0001:00187AE3    82 0001:00187AE6    84 0001:00187AF0
+    89 0001:00187AF4    91 0001:00187AFD    93 0001:00187B0D    94 0001:00187B2A
+    95 0001:00187B3E    93 0001:00187B6C    96 0001:00187B6F    97 0001:00187B79
+    98 0001:00187B87   100 0001:00187B9F   103 0001:00187BB1   106 0001:00187BB8
+   107 0001:00187BCE   108 0001:00187BD5   109 0001:00187BE5   110 0001:00187BF0
+   111 0001:00187C0D   112 0001:00187C18   113 0001:00187C28   114 0001:00187C32
+   115 0001:00187C3E   116 0001:00187C4B   120 0001:00187C8C   122 0001:00187C9F
+   134 0001:00187CAC   135 0001:00187CD4   136 0001:00187CDC   138 0001:00187CEC
+   139 0001:00187CF4   140 0001:00187D02   141 0001:00187D18   142 0001:00187D28
+   143 0001:00187D38   144 0001:00187D48   145 0001:00187D58   146 0001:00187D68
+   148 0001:00187D70   149 0001:00187D72   150 0001:00187D76   151 0001:00187D7A
+   152 0001:00187D88   153 0001:00187D8F   155 0001:00187DAC   157 0001:00187DC0
+   158 0001:00187DD7   160 0001:00187DDB   161 0001:00187DDD   162 0001:00187DE3
+   166 0001:00187DF1   167 0001:00187DF7   168 0001:00187E01   169 0001:00187E07
+   172 0001:00187E1B   153 0001:00187E1C   173 0001:00187E1F   175 0001:00187E25
+   176 0001:00187E37   177 0001:00187E53   181 0001:00187E8A   182 0001:00187E9C
+   184 0001:00187EAC   186 0001:00187EBC   187 0001:00187EC2   189 0001:00187EF0
+   195 0001:00187F20   196 0001:00187F30   200 0001:00187F4E   203 0001:00187F5E
+   210 0001:00187F98   211 0001:00187FB2   212 0001:00187FB9   213 0001:00187FDB
+   214 0001:00187FE2   215 0001:00188000   216 0001:00188008   218 0001:0018800D
+   219 0001:00188020   220 0001:00188035   221 0001:00188039   223 0001:0018803E
+   216 0001:00188041   225 0001:00188044   226 0001:00188052   229 0001:00188088
+   231 0001:0018808E   232 0001:001880AB   233 0001:001880B2   234 0001:001880BE
+   237 0001:001880C4   238 0001:001880C7   239 0001:001880CE   240 0001:001880D5
+   241 0001:001880DF   242 0001:001880E6   245 0001:001880E8   246 0001:001880EB
+   247 0001:001880F2   248 0001:001880F9   249 0001:00188100   252 0001:00188104
+   253 0001:00188107   254 0001:0018810E   255 0001:00188115   256 0001:0018811C
+   271 0001:00188120   272 0001:00188143   273 0001:00188152   274 0001:0018815A
+   275 0001:00188162   277 0001:0018816A   279 0001:00188188   281 0001:0018819D
+   282 0001:001881B2   283 0001:001881CD   284 0001:001881D3   286 0001:001881E3
+   287 0001:001881F0   288 0001:001881F6   289 0001:00188210   292 0001:0018821E
+   277 0001:0018821F   293 0001:00188226   295 0001:00188246   296 0001:0018828C
+   297 0001:001882C2   300 0001:001882CD   301 0001:001882DA   302 0001:001882EF
+   303 0001:001882FC   304 0001:00188318   305 0001:00188329   306 0001:00188339
+   308 0001:0018834F   309 0001:0018835F   312 0001:0018836E   313 0001:00188370
+   315 0001:0018837E   316 0001:00188393   317 0001:001883A0   318 0001:001883A7
+   326 0001:00188464   327 0001:00188487   328 0001:00188491   329 0001:001884AB
+   330 0001:001884B5   331 0001:001884C3   332 0001:001884C8   333 0001:001884D5
+   335 0001:001884F3   337 0001:00188507   338 0001:0018850A   339 0001:0018852A
+   341 0001:00188534   333 0001:00188535   342 0001:0018853A   344 0001:00188555
+   345 0001:0018858E   347 0001:00188595   349 0001:001885B7   350 0001:001885B9
+   352 0001:001885C3   353 0001:00188608   355 0001:0018860D   356 0001:0018861A
+   358 0001:0018861E   359 0001:00188621   361 0001:0018863A   362 0001:0018863E
+   363 0001:00188646   365 0001:0018864A   366 0001:00188650   368 0001:00188652
+   369 0001:00188664   347 0001:00188665   370 0001:0018866E   372 0001:0018867A
+   373 0001:0018869B   376 0001:001886B3   378 0001:001886D6   380 0001:001886E8
+   389 0001:0018872C   390 0001:00188753   391 0001:0018876B   393 0001:00188777
+   394 0001:0018878E   396 0001:00188793   398 0001:001887A3   399 0001:001887AB
+   400 0001:001887B9   401 0001:001887BD   402 0001:001887D0   403 0001:0018880B
+   405 0001:0018882C   407 0001:00188844   408 0001:0018885B   409 0001:00188888
+   411 0001:0018888C   413 0001:00188892   414 0001:001888A9   419 0001:001888AF
+   421 0001:001888B5   422 0001:001888C0   426 0001:001888C4   403 0001:001888C5
+   428 0001:001888D9   430 0001:001888E9   431 0001:001888EF   433 0001:001888FA
+   436 0001:00188938   438 0001:0018893C   439 0001:00188945   440 0001:00188958
+   441 0001:00188966   444 0001:0018896C   445 0001:0018896F   446 0001:00188976
+   447 0001:0018897D   453 0001:00188980   454 0001:001889AA   455 0001:001889BA
+   456 0001:001889C4   457 0001:001889D2   458 0001:001889DC   459 0001:001889E4
+   460 0001:001889F6   463 0001:00188A40   464 0001:00188A58   465 0001:00188A6A
+   467 0001:00188A91   468 0001:00188AAA   470 0001:00188AC2   474 0001:00188B36
+   480 0001:00188B54   481 0001:00188B9B   482 0001:00188BA6   483 0001:00188BB8
+   486 0001:00188BBF   465 0001:00188BC2   489 0001:00188BD8   491 0001:00188BEA
+   494 0001:00188C20   495 0001:00188C24   496 0001:00188C2D   497 0001:00188C40
+   499 0001:00188C51   500 0001:00188C5A   501 0001:00188C6D   502 0001:00188C7B
+   505 0001:00188C80   506 0001:00188C83   507 0001:00188C8A   508 0001:00188C91
+   509 0001:00188C98   512 0001:00188C9C   513 0001:00188CA0   514 0001:00188CA9
+   515 0001:00188CBC   517 0001:00188CCD   518 0001:00188CD6   519 0001:00188CE9
+   520 0001:00188CF7   523 0001:00188CFC   524 0001:00188CFF   525 0001:00188D06
+   526 0001:00188D0D   527 0001:00188D14   531 0001:00188D18   533 0001:00188D35
+   534 0001:00188D42   536 0001:00188D5A   538 0001:00188D8E   541 0001:00188DB4
+   542 0001:00188DB8   543 0001:00188DBA   545 0001:00188DC5   546 0001:00188DD8
+   548 0001:00188DDA   554 0001:00188E54   558 0001:00188E5A   563 0001:00188E5E
+   565 0001:00188E78   566 0001:00188E8C   567 0001:00188E92   569 0001:00188E9E
+   570 0001:00188EA2   571 0001:00188EB2   573 0001:00188EB4   563 0001:00188EB5
+   575 0001:00188EB8   580 0001:00188EC4   581 0001:00188ED0   582 0001:00188EE0
+   583 0001:00188EFA   582 0001:00188F11   584 0001:00188F14
+
+Line numbers for fProcedure(Encounter\fProcedure.pas) segment .itext
+
+   586 0002:00001110   587 0002:00001119   589 0002:00001123
+
+Line numbers for fImmunization(Encounter\fImmunization.pas) segment .text
+
+    45 0001:001891E0    46 0001:001891FD    48 0001:0018921C    49 0001:00189236
+    50 0001:00189247    48 0001:00189275    51 0001:00189278    53 0001:00189282
+    59 0001:001892B0    60 0001:001892CD    62 0001:001892EC    63 0001:00189306
+    64 0001:00189317    62 0001:00189345    65 0001:00189348    67 0001:00189352
+    73 0001:00189380    74 0001:00189385    76 0001:00189390    77 0001:001893AA
+    78 0001:001893BB    76 0001:001893E3    79 0001:001893E6    81 0001:001893F0
+    84 0001:001893F4    85 0001:001893F7    86 0001:001893FE    87 0001:0018940E
+    88 0001:00189419    89 0001:00189424    90 0001:00189434    91 0001:0018943F
+    92 0001:0018944A    95 0001:00189470    96 0001:00189473    97 0001:0018947A
+    98 0001:0018948D    99 0001:001894A0   100 0001:001894B3   101 0001:001894C6
+   111 0001:001894E0   112 0001:00189502   113 0001:0018950A   115 0001:0018951A
+   116 0001:00189522   117 0001:00189530   118 0001:00189546   119 0001:00189556
+   120 0001:00189566   121 0001:00189576   122 0001:00189586   123 0001:00189596
+   125 0001:0018959E   126 0001:001895A2   127 0001:001895A6   128 0001:001895AA
+   129 0001:001895AE   130 0001:001895B2   131 0001:001895BF   132 0001:001895CC
+   134 0001:001895ED   136 0001:00189601   137 0001:00189618   139 0001:0018961E
+   140 0001:00189622   141 0001:00189629   142 0001:00189634   146 0001:00189641
+   147 0001:00189647   148 0001:00189656   149 0001:0018965C   150 0001:0018966B
+   151 0001:00189671   154 0001:0018967C   132 0001:0018967D   155 0001:00189684
+   156 0001:0018968A   158 0001:0018969D   159 0001:001896AD   160 0001:001896B3
+   162 0001:001896C6   163 0001:001896D6   164 0001:001896DC   166 0001:001896F3
+   170 0001:00189705   171 0001:00189715   172 0001:00189725   175 0001:00189745
+   178 0001:00189755
+
+Line numbers for fImmunization(Encounter\fImmunization.pas) segment .itext
+
+   180 0002:00001124   181 0002:0000112D   183 0002:00001137
+
+Line numbers for fSkinTest(Encounter\fSkinTest.pas) segment .text
+
+    49 0001:00189AB0    50 0001:00189ACD    52 0001:00189AEC    53 0001:00189B06
+    54 0001:00189B17    52 0001:00189B45    55 0001:00189B48    57 0001:00189B52
+    70 0001:00189B80    71 0001:00189B9E    73 0001:00189BA9    74 0001:00189BC4
+    75 0001:00189BDE    76 0001:00189BEF    74 0001:00189C08    77 0001:00189C0B
+    79 0001:00189C15    83 0001:00189C3C   104 0001:00189C40   147 0001:00189C44
+   148 0001:00189C47   149 0001:00189C4E   150 0001:00189C5E   151 0001:00189C69
+   152 0001:00189C74   153 0001:00189C84   154 0001:00189C8F   157 0001:00189CB4
+   158 0001:00189CB7   159 0001:00189CCA   162 0001:00189CDD   173 0001:00189CF8
+   174 0001:00189D1D   175 0001:00189D25   177 0001:00189D35   178 0001:00189D3D
+   179 0001:00189D4B   180 0001:00189D61   181 0001:00189D71   182 0001:00189D81
+   183 0001:00189D91   184 0001:00189DA1   185 0001:00189DB1   187 0001:00189DB9
+   188 0001:00189DBD   189 0001:00189DC1   190 0001:00189DC5   191 0001:00189DD2
+   192 0001:00189DD7   194 0001:00189DF4   196 0001:00189E08   197 0001:00189E1F
+   199 0001:00189E25   200 0001:00189E29   201 0001:00189E34   205 0001:00189E3C
+   206 0001:00189E42   207 0001:00189E51   208 0001:00189E57   211 0001:00189E61
+   192 0001:00189E62   212 0001:00189E65   213 0001:00189E6B   215 0001:00189E7E
+   216 0001:00189E8E   218 0001:00189E94   219 0001:00189EA6   220 0001:00189EC2
+   224 0001:00189EF9   225 0001:00189F09   230 0001:00189F1B   231 0001:00189F2B
+   234 0001:00189F48   237 0001:00189F58   241 0001:00189F98   243 0001:00189F9E
+   244 0001:00189FAE   245 0001:00189FB7
+
+Line numbers for fSkinTest(Encounter\fSkinTest.pas) segment .itext
+
+   247 0002:00001138   248 0002:00001141   250 0002:0000114B
+
+Line numbers for fPatientEd(Encounter\fPatientEd.pas) segment .text
+
+    44 0001:0018A210    45 0001:0018A22D    47 0001:0018A24C    48 0001:0018A266
+    49 0001:0018A277    47 0001:0018A2A5    50 0001:0018A2A8    52 0001:0018A2B2
+    55 0001:0018A2E0    56 0001:0018A2E3    57 0001:0018A2EA    58 0001:0018A2FA
+    59 0001:0018A305    60 0001:0018A310    61 0001:0018A320    62 0001:0018A32B
+    66 0001:0018A350    67 0001:0018A363    77 0001:0018A370    78 0001:0018A38F
+    79 0001:0018A397    81 0001:0018A3A7    82 0001:0018A3AF    83 0001:0018A3BD
+    84 0001:0018A3D3    85 0001:0018A3E3    86 0001:0018A3F3    88 0001:0018A3FB
+    89 0001:0018A3FD    90 0001:0018A401    91 0001:0018A40E    93 0001:0018A42B
+    95 0001:0018A43F    96 0001:0018A457    98 0001:0018A45B    99 0001:0018A45D
+   103 0001:0018A46D   104 0001:0018A473   107 0001:0018A485    91 0001:0018A486
+   108 0001:0018A489   109 0001:0018A48F   111 0001:0018A4A2   115 0001:0018A4B4
+   118 0001:0018A4D1   121 0001:0018A4E1
+
+Line numbers for fPatientEd(Encounter\fPatientEd.pas) segment .itext
+
+   123 0002:0000114C   124 0002:00001155   126 0002:0000115F
+
+Line numbers for fHealthFactor(Encounter\fHealthFactor.pas) segment .text
+
+    38 0001:0018A768    39 0001:0018A785    41 0001:0018A7A4    42 0001:0018A7BE
+    43 0001:0018A7CF    41 0001:0018A7FD    44 0001:0018A800    46 0001:0018A80A
+    49 0001:0018A838    50 0001:0018A83B    51 0001:0018A842    52 0001:0018A852
+    53 0001:0018A85D    54 0001:0018A868    55 0001:0018A878    56 0001:0018A883
+    60 0001:0018A8AC    61 0001:0018A8BF    71 0001:0018A8CC    72 0001:0018A8EB
+    73 0001:0018A8F3    75 0001:0018A903    76 0001:0018A90B    77 0001:0018A919
+    78 0001:0018A92F    79 0001:0018A93F    80 0001:0018A94F    82 0001:0018A957
+    83 0001:0018A959    84 0001:0018A95D    85 0001:0018A96A    87 0001:0018A987
+    89 0001:0018A99B    90 0001:0018A9B3    92 0001:0018A9B7    93 0001:0018A9B9
+    97 0001:0018A9C9    98 0001:0018A9CF   101 0001:0018A9E1    85 0001:0018A9E2
+   102 0001:0018A9E5   103 0001:0018A9EB   105 0001:0018A9FE   109 0001:0018AA10
+   112 0001:0018AA2D   115 0001:0018AA3D
+
+Line numbers for fHealthFactor(Encounter\fHealthFactor.pas) segment .itext
+
+   117 0002:00001160   118 0002:00001169   120 0002:00001173
+
+Line numbers for fHFSearch(Encounter\fHFSearch.pas) segment .text
+
+    48 0001:0018AD60    49 0001:0018AD67    50 0001:0018AD7E    51 0001:0018AD8C
+    52 0001:0018AD94    53 0001:0018AD9F    55 0001:0018ADBC    57 0001:0018ADCC
+    65 0001:0018ADD0    67 0001:0018ADF0    69 0001:0018AE00    70 0001:0018AE0A
+    71 0001:0018AE18    72 0001:0018AE39    73 0001:0018AE4B    76 0001:0018AE60
+    77 0001:0018AE7C    79 0001:0018AE8E    81 0001:0018AEA0    80 0001:0018AEA9
+    84 0001:0018AEB6    85 0001:0018AEB8    86 0001:0018AECE    88 0001:0018AED6
+    90 0001:0018AEFA    92 0001:0018AEFE    91 0001:0018AF07    93 0001:0018AF12
+    94 0001:0018AF25    95 0001:0018AF33    96 0001:0018AF37    97 0001:0018AF45
+    98 0001:0018AF55   100 0001:0018AF69   104 0001:0018AF84    86 0001:0018AF8D
+   107 0001:0018AF95   109 0001:0018AFAA   112 0001:0018AFBC   122 0001:0018AFF0
+   124 0001:0018B014   125 0001:0018B023   126 0001:0018B031   127 0001:0018B048
+   129 0001:0018B05B   130 0001:0018B08A   131 0001:0018B0C3   127 0001:0018B0C4
+   132 0001:0018B0C9   134 0001:0018B0E0   136 0001:0018B10F   138 0001:0018B129
+   139 0001:0018B140   140 0001:0018B14C   143 0001:0018B158   132 0001:0018B159
+   144 0001:0018B15E   146 0001:0018B175   148 0001:0018B1A8   149 0001:0018B1C8
+   150 0001:0018B1DE   152 0001:0018B1E2   154 0001:0018B202   150 0001:0018B20B
+   156 0001:0018B20F   157 0001:0018B229   158 0001:0018B255   159 0001:0018B25F
+   161 0001:0018B269   144 0001:0018B26A   164 0001:0018B280   166 0001:0018B290
+   169 0001:0018B2DC   171 0001:0018B2F3   172 0001:0018B301   173 0001:0018B32C
+   174 0001:0018B336   179 0001:0018B358   180 0001:0018B35D   184 0001:0018B360
+   186 0001:0018B376   188 0001:0018B398   189 0001:0018B3A3   191 0001:0018B3B1
+   194 0001:0018B3BF   195 0001:0018B3C9   197 0001:0018B3D3   200 0001:0018B400
+   202 0001:0018B41F   204 0001:0018B42F   205 0001:0018B439   206 0001:0018B447
+   207 0001:0018B44B   209 0001:0018B471   210 0001:0018B482   211 0001:0018B4A3
+   213 0001:0018B4B8   216 0001:0018B4CA   222 0001:0018B4EC   223 0001:0018B505
+   224 0001:0018B512   227 0001:0018B518   226 0001:0018B521   228 0001:0018B52C
+   231 0001:0018B54C   232 0001:0018B55C   233 0001:0018B578   235 0001:0018B5E6
+
+Line numbers for fPCEBaseMain(Encounter\fPCEBaseMain.pas) segment .text
+
+   100 0001:0018BAA8   102 0001:0018BAAB   103 0001:0018BAB2   104 0001:0018BAD0
+   105 0001:0018BAD7   106 0001:0018BADE   109 0001:0018BAE0   111 0001:0018BAE4
+   112 0001:0018BAED   113 0001:0018BB00   114 0001:0018BB0E   118 0001:0018BB14
+   124 0001:0018BB18   125 0001:0018BB37   126 0001:0018BB46   127 0001:0018BB4E
+   128 0001:0018BB5C   129 0001:0018BB64   130 0001:0018BB7A   133 0001:0018BB97
+   134 0001:0018BBC1   135 0001:0018BBE2   130 0001:0018BBE3   137 0001:0018BBE6
+   138 0001:0018BBFC   139 0001:0018BC04   141 0001:0018BC19   142 0001:0018BC21
+   144 0001:0018BC31   145 0001:0018BC3C   156 0001:0018BC60   158 0001:0018BC7F
+   159 0001:0018BC86   160 0001:0018BC96   161 0001:0018BC9B   163 0001:0018BCAA
+   164 0001:0018BCAF   166 0001:0018BCB9   167 0001:0018BCC2   168 0001:0018BCD0
+   170 0001:0018BCDA   171 0001:0018BD28   172 0001:0018BD36   173 0001:0018BD5F
+   174 0001:0018BD6C   175 0001:0018BD7B   177 0001:0018BD85   178 0001:0018BDAF
+   180 0001:0018BDB6   181 0001:0018BDC0   184 0001:0018BDF4   186 0001:0018BDF8
+   187 0001:0018BE01   188 0001:0018BE14   190 0001:0018BE25   191 0001:0018BE2E
+   192 0001:0018BE41   193 0001:0018BE4F   196 0001:0018BE54   198 0001:0018BE6A
+   200 0001:0018BE73   201 0001:0018BE7A   202 0001:0018BE83   204 0001:0018BEB1
+   208 0001:0018BED4   209 0001:0018BEDB   212 0001:0018BEDC   214 0001:0018BEDF
+   215 0001:0018BEEC   216 0001:0018BEF3   224 0001:0018BEF8   226 0001:0018BF18
+   227 0001:0018BF22   228 0001:0018BF30   230 0001:0018BF67   231 0001:0018BF72
+   232 0001:0018BF89   234 0001:0018BF9A   235 0001:0018BFBD   236 0001:0018C012
+   234 0001:0018C028   238 0001:0018C02D   239 0001:0018C034   240 0001:0018C049
+   228 0001:0018C04A   241 0001:0018C053   243 0001:0018C068   245 0001:0018C07A
+   251 0001:0018C0B8   252 0001:0018C0C0   253 0001:0018C0E6   254 0001:0018C10A
+   256 0001:0018C11A   257 0001:0018C122   258 0001:0018C130   259 0001:0018C138
+   260 0001:0018C14D   261 0001:0018C15D   262 0001:0018C16D   263 0001:0018C171
+   265 0001:0018C1A1   267 0001:0018C1BE   270 0001:0018C1CE   278 0001:0018C1D4
+   281 0001:0018C1D8   283 0001:0018C1DC   284 0001:0018C1E5   285 0001:0018C1F8
+   286 0001:0018C206   292 0001:0018C20C   293 0001:0018C214   296 0001:0018C218
+   297 0001:0018C21B   298 0001:0018C222   299 0001:0018C22F   300 0001:0018C24E
+   306 0001:0018C250   307 0001:0018C255   308 0001:0018C25C   309 0001:0018C28C
+   312 0001:0018C290   313 0001:0018C299   314 0001:0018C2A6   315 0001:0018C2B9
+   316 0001:0018C2C9   317 0001:0018C2D6   318 0001:0018C2DD   320 0001:0018C2E7
+   324 0001:0018C2F0   325 0001:0018C2F6   329 0001:0018C2F8   330 0001:0018C301
+   331 0001:0018C307   335 0001:0018C308   336 0001:0018C312   350 0001:0018C314
+   351 0001:0018C333   352 0001:0018C33D   353 0001:0018C34B   354 0001:0018C36B
+   355 0001:0018C376   357 0001:0018C396   358 0001:0018C3AE   360 0001:0018C3BF
+   361 0001:0018C3D7   362 0001:0018C3F4   374 0001:0018C42E   375 0001:0018C440
+   361 0001:0018C441   377 0001:0018C444   355 0001:0018C447   379 0001:0018C45E
+   381 0001:0018C470   387 0001:0018C4B4   389 0001:0018C4BD   390 0001:0018C4C5
+   391 0001:0018C4D3   392 0001:0018C4F0   391 0001:0018C503   394 0001:0018C513
+   396 0001:0018C523   397 0001:0018C52E   401 0001:0018C534   402 0001:0018C53D
+   404 0001:0018C545   405 0001:0018C54A   409 0001:0018C54C   413 0001:0018C54F
+   416 0001:0018C554   417 0001:0018C56D   418 0001:0018C574   419 0001:0018C59A
+   420 0001:0018C5CD   430 0001:0018C5F0   432 0001:0018C616   433 0001:0018C636
+   434 0001:0018C63A   435 0001:0018C645   437 0001:0018C66C   438 0001:0018C6B2
+   439 0001:0018C70B   440 0001:0018C70F   442 0001:0018C72A   443 0001:0018C741
+   445 0001:0018C76E   446 0001:0018C772   447 0001:0018C787   448 0001:0018C78E
+   450 0001:0018C7A3   440 0001:0018C7A4   451 0001:0018C7A9   453 0001:0018C7CC
+   454 0001:0018C7EA   455 0001:0018C7FB   456 0001:0018C824   457 0001:0018C832
+   458 0001:0018C844   459 0001:0018C84E   460 0001:0018C87C   462 0001:0018C880
+   435 0001:0018C883   463 0001:0018C88C   464 0001:0018C892   465 0001:0018C89A
+   466 0001:0018C8A5   469 0001:0018C8E8   471 0001:0018C8EC   472 0001:0018C8F5
+   473 0001:0018C908   475 0001:0018C919   476 0001:0018C922   477 0001:0018C935
+   478 0001:0018C943   481 0001:0018C948   482 0001:0018C95E   483 0001:0018C976
+   486 0001:0018C998   488 0001:0018C99E   489 0001:0018C9BB   490 0001:0018C9C2
+   491 0001:0018C9CE   499 0001:0018C9D4   500 0001:0018C9F4   501 0001:0018CA14
+   502 0001:0018CA1E   503 0001:0018CA2C   504 0001:0018CA2E   505 0001:0018CA35
+   507 0001:0018CA52   509 0001:0018CA66   510 0001:0018CA6F   511 0001:0018CA70
+   513 0001:0018CA75   505 0001:0018CA76   514 0001:0018CA79   515 0001:0018CA80
+   517 0001:0018CA87   518 0001:0018CA9F   520 0001:0018CAB7   521 0001:0018CACF
+   523 0001:0018CAEC   525 0001:0018CB26   526 0001:0018CB29   528 0001:0018CB2B
+   521 0001:0018CB2C   531 0001:0018CB2F   533 0001:0018CB50   535 0001:0018CB62
+   542 0001:0018CBA0   543 0001:0018CBBF   544 0001:0018CBDF   545 0001:0018CBE9
+   546 0001:0018CBF7   547 0001:0018CC0A   548 0001:0018CC0E   550 0001:0018CC60
+   551 0001:0018CC6D   553 0001:0018CC8A   554 0001:0018CCA1   555 0001:0018CCDF
+   551 0001:0018CCE0   557 0001:0018CCF0   559 0001:0018CD02   563 0001:0018CD54
+   565 0001:0018CD6D   567 0001:0018CD98   568 0001:0018CD9B   576 0001:0018CDC0
+   577 0001:0018CDCC   578 0001:0018CDCE   579 0001:0018CDDA   580 0001:0018CDEB
+   583 0001:0018CE0E   584 0001:0018CE1A   589 0001:0018CE5C   590 0001:0018CE75
+   591 0001:0018CE7C   592 0001:0018CE7F   594 0001:0018CE88   595 0001:0018CE8F
+   598 0001:0018CEC4
+
+Line numbers for fPCEBaseMain(Encounter\fPCEBaseMain.pas) segment .itext
+
+   600 0002:00001174   601 0002:0000117D   603 0002:00001187
+
+Line numbers for fExam(Encounter\fExam.pas) segment .text
+
+    37 0001:0018D158    38 0001:0018D175    40 0001:0018D194    41 0001:0018D1AE
+    42 0001:0018D1BF    40 0001:0018D1ED    43 0001:0018D1F0    45 0001:0018D1FA
+    48 0001:0018D228    49 0001:0018D22B    50 0001:0018D232    51 0001:0018D242
+    52 0001:0018D24D    53 0001:0018D258    54 0001:0018D268    55 0001:0018D273
+    59 0001:0018D294    60 0001:0018D2A7    70 0001:0018D2B4    71 0001:0018D2D3
+    72 0001:0018D2DB    74 0001:0018D2EB    75 0001:0018D2F3    76 0001:0018D301
+    77 0001:0018D317    78 0001:0018D327    79 0001:0018D337    81 0001:0018D33F
+    82 0001:0018D341    83 0001:0018D345    84 0001:0018D352    86 0001:0018D36F
+    88 0001:0018D383    89 0001:0018D39B    91 0001:0018D39F    92 0001:0018D3A1
+    96 0001:0018D3B1    97 0001:0018D3B7   100 0001:0018D3C9    84 0001:0018D3CA
+   101 0001:0018D3CD   102 0001:0018D3D3   104 0001:0018D3E6   108 0001:0018D3F8
+   111 0001:0018D415   114 0001:0018D425
+
+Line numbers for fExam(Encounter\fExam.pas) segment .itext
+
+   116 0002:00001188   117 0002:00001191   119 0002:0000119B
+
+Line numbers for fPCEOther(Encounter\fPCEOther.pas) segment .text
+
+    39 0001:0018D6C4    40 0001:0018D6CE    41 0001:0018D6E5    42 0001:0018D6F3
+    43 0001:0018D6FB    44 0001:0018D705    45 0001:0018D710    47 0001:0018D72D
+    49 0001:0018D73D    52 0001:0018D744    53 0001:0018D75D    54 0001:0018D763
+    55 0001:0018D777    56 0001:0018D785    57 0001:0018D793    59 0001:0018D7A1
+    62 0001:0018D7AD    63 0001:0018D7C5    64 0001:0018D7E2    68 0001:0018D878
+    70 0001:0018D88F    72 0001:0018D895    73 0001:0018D89F    75 0001:0018D8CA
+    77 0001:0018D8D1    80 0001:0018D8F4    82 0001:0018D8F7    83 0001:0018D902
+    87 0001:0018D904    89 0001:0018D907    90 0001:0018D912    91 0001:0018D919
+    96 0001:0018D91C    97 0001:0018D921   100 0001:0018D924   102 0001:0018D927
+   103 0001:0018D942   105 0001:0018D972
+
+Line numbers for uConsults(Consults\uConsults.pas) segment .text
+
+   162 0001:0018DB94   163 0001:0018DBA6   164 0001:0018DBAF   165 0001:0018DBBE
+   169 0001:0018DBD8   170 0001:0018DBE3   171 0001:0018DBEB   172 0001:0018DBF7
+   176 0001:0018DC08   177 0001:0018DC1A   178 0001:0018DC23   179 0001:0018DC32
+   183 0001:0018DC4C   184 0001:0018DC57   185 0001:0018DC5F   186 0001:0018DC6B
+   211 0001:0018DC7C   212 0001:0018DCA7   213 0001:0018DCB2   214 0001:0018DCDF
+   215 0001:0018DCFC   216 0001:0018DD57   217 0001:0018DD70   218 0001:0018DD89
+   219 0001:0018DD9F   220 0001:0018DDB5   224 0001:0018DDCB   225 0001:0018DE03
+   227 0001:0018DE17   230 0001:0018DF7D   231 0001:0018DF87   236 0001:0018E07C
+   237 0001:0018E0A3   238 0001:0018E0AE   239 0001:0018E122   240 0001:0018E12C
+   245 0001:0018E160   246 0001:0018E18C   247 0001:0018E197   248 0001:0018E1BC
+   251 0001:0018E1DF   253 0001:0018E26C   254 0001:0018E2B7   256 0001:0018E310
+   257 0001:0018E31A   265 0001:0018E398   266 0001:0018E3C5   267 0001:0018E3D3
+   269 0001:0018E3E9   271 0001:0018E41B   272 0001:0018E43A   274 0001:0018E44B
+   275 0001:0018E46A   276 0001:0018E489   277 0001:0018E495   278 0001:0018E49A
+   279 0001:0018E4CA   280 0001:0018E4DC   281 0001:0018E4F5   285 0001:0018E50A
+   286 0001:0018E520   287 0001:0018E52A   290 0001:0018E53E   267 0001:0018E53F
+   291 0001:0018E548   292 0001:0018E556   300 0001:0018E5A8   301 0001:0018E5DC
+   302 0001:0018E5EB   303 0001:0018E5FA   304 0001:0018E608   307 0001:0018E612
+   309 0001:0018E64C   310 0001:0018E683   312 0001:0018E68D   314 0001:0018E6A3
+   315 0001:0018E6B0   316 0001:0018E6C3   317 0001:0018E6D0   318 0001:0018E6EE
+   319 0001:0018E701   320 0001:0018E714   321 0001:0018E727   323 0001:0018E748
+   324 0001:0018E755   326 0001:0018E768   328 0001:0018E789   329 0001:0018E796
+   331 0001:0018E7A9   333 0001:0018E7D2   334 0001:0018E7F3   335 0001:0018E814
+   336 0001:0018E835   337 0001:0018E856   338 0001:0018E874   339 0001:0018E892
+   340 0001:0018E8B0   341 0001:0018E8CE   342 0001:0018E8DB   343 0001:0018E906
+   346 0001:0018E928   347 0001:0018E949   348 0001:0018E97F   351 0001:0018E99A
+   352 0001:0018E9BB   353 0001:0018E9F1   356 0001:0018EA0A   357 0001:0018EA15
+   312 0001:0018EA16   358 0001:0018EA1D   359 0001:0018EA2E   360 0001:0018EA3B
+   361 0001:0018EA79   362 0001:0018EA84   363 0001:0018EA8C   364 0001:0018EAA2
+   363 0001:0018EB61   367 0001:0018EB75   368 0001:0018EB7D   370 0001:0018EB8D
+   379 0001:0018ED9C   380 0001:0018EDF5   381 0001:0018EE03   383 0001:0018EE19
+   384 0001:0018EE38   386 0001:0018EE49   387 0001:0018EE68   388 0001:0018EE7F
+   389 0001:0018EE8B   390 0001:0018EE90   391 0001:0018EEC0   392 0001:0018EED2
+   393 0001:0018EEEB   397 0001:0018EF00   398 0001:0018EF16   399 0001:0018EF20
+   400 0001:0018EF2A   401 0001:0018EF30   404 0001:0018EF42   381 0001:0018EF43
+   405 0001:0018EF4C   406 0001:0018EF5A   409 0001:0018EFAC   412 0001:0018EFE8
+   414 0001:0018F00E   415 0001:0018F017   416 0001:0018F020   417 0001:0018F046
+   419 0001:0018F06C   420 0001:0018F090   421 0001:0018F0D1   422 0001:0018F112
+   427 0001:0018F153   428 0001:0018F16C   430 0001:0018F18D   431 0001:0018F199
+   436 0001:0018F1AA   437 0001:0018F1C7   438 0001:0018F222   439 0001:0018F230
+   440 0001:0018F23E   441 0001:0018F24C   442 0001:0018F25A   446 0001:0018F268
+   447 0001:0018F28A   449 0001:0018F298   451 0001:0018F2A4   454 0001:0018F2AE
+   456 0001:0018F2B8
+
+Line numbers for uConsults(Consults\uConsults.pas) segment .itext
+
+   458 0002:0000119C
+
+Line numbers for rODDiet(Orders\rODDiet.pas) segment .text
+
+    64 0001:0018F410    65 0001:0018F416    66 0001:0018F42C    67 0001:0018F442
+    70 0001:0018F45C    71 0001:0018F48F    74 0001:0018F4BC    76 0001:0018F4D1
+    77 0001:0018F503    78 0001:0018F535    80 0001:0018F567    82 0001:0018F577
+    83 0001:0018F5AC    85 0001:0018F5E7    87 0001:0018F5FD    88 0001:0018F626
+    89 0001:0018F650    90 0001:0018F67A    91 0001:0018F6AF    92 0001:0018F6E4
+    93 0001:0018F717    94 0001:0018F74A    96 0001:0018F77D    97 0001:0018F791
+    98 0001:0018F7A3   100 0001:0018F7CA   101 0001:0018F7D1   102 0001:0018F7E3
+   104 0001:0018F805   107 0001:0018F880   108 0001:0018F886   109 0001:0018F8A6
+   110 0001:0018F8BA   117 0001:0018F8D4   118 0001:0018F8DA   119 0001:0018F8F2
+   120 0001:0018F906   123 0001:0018F924   124 0001:0018F933   125 0001:0018F93B
+   126 0001:0018F95C   127 0001:0018F98A   133 0001:0018F9AC   134 0001:0018F9B5
+   135 0001:0018F9D7   136 0001:0018F9E4   139 0001:0018FA04   140 0001:0018FA07
+   141 0001:0018FA1F   142 0001:0018FA2C   145 0001:0018FA48   146 0001:0018FA57
+   147 0001:0018FAB5   148 0001:0018FABC   151 0001:0018FAE0   152 0001:0018FAE6
+   153 0001:0018FB02   156 0001:0018FB20   157 0001:0018FB26   158 0001:0018FB4A
+   161 0001:0018FB68   162 0001:0018FB6E   163 0001:0018FB86   164 0001:0018FB9A
+   167 0001:0018FBB8   168 0001:0018FBC1   169 0001:0018FBE4   170 0001:0018FBF8
+   173 0001:0018FC18   174 0001:0018FC34   175 0001:0018FC5D   176 0001:0018FC79
+   179 0001:0018FCB8   181 0001:0018FCCC   185 0001:0018FCD5   186 0001:0018FCF7
+   188 0001:0018FCFE   189 0001:0018FD05   194 0001:0018FD40   196 0001:0018FD49
+   197 0001:0018FD58   199 0001:0018FD5F   200 0001:0018FD66   203 0001:0018FD78
+   204 0001:0018FD9A   205 0001:0018FDC7   206 0001:0018FDDB   207 0001:0018FDE2
+   210 0001:0018FE24   211 0001:0018FE49   212 0001:0018FE76   214 0001:0018FEF6
+
+Line numbers for fODDietLT(Orders\fODDietLT.pas) segment .text
+
+    64 0001:00190160    65 0001:00190183    66 0001:0019018F    67 0001:001901A3
+    68 0001:001901F6    69 0001:00190214    70 0001:00190232    71 0001:00190242
+    93 0001:00190298    94 0001:001902B6    95 0001:001902BD    96 0001:001902C5
+    97 0001:001902CA    99 0001:001902EC   100 0001:00190309   101 0001:00190323
+   102 0001:00190328    96 0001:00190329   103 0001:0019032E   104 0001:00190338
+   106 0001:00190378   108 0001:001903B2   109 0001:001903B5   110 0001:001903BD
+   112 0001:001903C1   113 0001:001903CC   114 0001:001903DF   115 0001:00190406
+   116 0001:00190419   117 0001:0019043D   118 0001:0019045D   119 0001:0019045F
+   120 0001:00190471   122 0001:0019047C   124 0001:00190486   125 0001:001904EE
+   126 0001:001904F0   127 0001:00190558   128 0001:0019055A   129 0001:001905CE
+   130 0001:001905D0   139 0001:001905DD   140 0001:001905E1   141 0001:001905FE
+   142 0001:00190676   143 0001:0019067D   144 0001:001906F1   145 0001:001906F5
+   146 0001:00190769   148 0001:0019076B   152 0001:00190773   153 0001:00190783
+   154 0001:0019079A   155 0001:001907B1   157 0001:001907C6   158 0001:001907DC
+   161 0001:001907E6   162 0001:001907FD   163 0001:0019080B   166 0001:00190813
+   167 0001:00190820   168 0001:00190879   169 0001:001908D2   170 0001:0019092B
+   171 0001:00190967   172 0001:001909A3   173 0001:001909DF   174 0001:001909F7
+   175 0001:00190A09   176 0001:00190A25   177 0001:00190A31   178 0001:00190A3D
+   181 0001:00190A47   182 0001:00190A52   184 0001:00190A62   185 0001:00190A94
+   186 0001:00190AC6   187 0001:00190AF8   188 0001:00190AFA   192 0001:00190B1B
+   194 0001:00190B2B   199 0001:00190C28   200 0001:00190C49   202 0001:00190C53
+   203 0001:00190C66   205 0001:00190C9F   206 0001:00190CB2   207 0001:00190CC5
+   208 0001:00190CD5   213 0001:00190CF2   214 0001:00190D05   216 0001:00190D32
+   217 0001:00190D45   220 0001:00190D58   229 0001:00190DC4   230 0001:00190DF3
+   231 0001:00190E02   232 0001:00190E10   233 0001:00190E24   235 0001:00190E31
+   237 0001:00190E35   238 0001:00190E61   239 0001:00190E68   243 0001:00190E6C
+   245 0001:00190E6E   246 0001:00190E9B   248 0001:00190EBD   250 0001:00190EDB
+   252 0001:00190EEB   258 0001:00190F80   259 0001:00190F87   262 0001:00190F88
+   264 0001:00190F8B   265 0001:00190F94   267 0001:00190FCA   268 0001:00190FDB
+   270 0001:00190FDD   271 0001:00190FE4   272 0001:00190FEB   277 0001:00191038
+   278 0001:0019103D   280 0001:0019106C
+
+Line numbers for fClinicWardMeds(fClinicWardMeds.pas) segment .text
+
+    63 0001:00191264    65 0001:0019127A    66 0001:00191280    67 0001:0019129C
+    68 0001:001912AB    69 0001:001912B2    70 0001:001912B8    71 0001:001912C2
+    75 0001:001912F4    76 0001:00191316    77 0001:0019131C    78 0001:00191329
+    79 0001:0019133A    80 0001:00191344    81 0001:00191353    82 0001:0019135A
+    84 0001:00191365    85 0001:0019137D    87 0001:00191388    88 0001:0019139B
+    89 0001:001913A5   103 0001:001913D8   105 0001:001913DB   107 0001:001913F4
+   108 0001:00191412   109 0001:0019141C   110 0001:0019142C   112 0001:0019144C
+   113 0001:0019146F   118 0001:00191480   119 0001:0019148A   120 0001:00191494
+   125 0001:00191498   126 0001:001914A2   127 0001:001914AC   132 0001:001914B0
+   135 0001:001914DD   136 0001:001914EF   138 0001:00191501   141 0001:00191510
+   142 0001:00191533   143 0001:00191556   147 0001:0019156A   148 0001:0019158D
+   149 0001:0019159F   151 0001:001915AE   152 0001:001915C6   153 0001:001915DE
+   154 0001:0019160A   155 0001:00191636   156 0001:00191665   157 0001:0019166F
+   158 0001:00191675   160 0001:0019168C   161 0001:00191696   163 0001:0019169D
+   168 0001:0019180C   169 0001:00191832   170 0001:0019183C   172 0001:0019184E
+   173 0001:00191891   174 0001:0019189E   170 0001:0019189F   175 0001:001918A2
+   176 0001:001918A8   179 0001:001918E8   183 0001:001918EE   184 0001:00191924
+   187 0001:00191944   188 0001:00191969   189 0001:00191996
+
+Line numbers for fClinicWardMeds(fClinicWardMeds.pas) segment .itext
+
+   192 0002:000011A4
+
+Line numbers for fConsult513Prt(Consults\fConsult513Prt.pas) segment .text
+
+    64 0001:00191D94    65 0001:00191DBE    66 0001:00191DD5    67 0001:00191DE3
+    70 0001:00191DEB    71 0001:00191DFC    72 0001:00191E05    73 0001:00191E24
+    74 0001:00191E40    76 0001:00191E49    78 0001:00191E5C    79 0001:00191E6C
+    81 0001:00191E7C    83 0001:00191E89    84 0001:00191EAD    87 0001:00191EC0
+    89 0001:00191EC9    91 0001:00191EEC    93 0001:00191EF9    96 0001:00191F11
+    98 0001:00191F21   101 0001:00191FDC   102 0001:00191FFE   104 0001:0019200A
+   105 0001:0019205E   107 0001:001920B2   111 0001:00192138   113 0001:00192141
+   114 0001:00192158   117 0001:00192160   119 0001:0019217C   121 0001:0019218C
+   122 0001:001921C4   123 0001:001921FC   125 0001:00192203   130 0001:0019222C
+   131 0001:00192231   136 0001:00192234   137 0001:00192239   145 0001:0019223C
+   147 0001:0019225E   148 0001:0019226B   149 0001:00192273   150 0001:0019227B
+   152 0001:001922A2   153 0001:001922B3   155 0001:001922B8   156 0001:001922E6
+   158 0001:00192321   160 0001:00192334   161 0001:0019234D   162 0001:0019236E
+   167 0001:00192396   168 0001:001923C2   169 0001:001923D7   170 0001:00192400
+   172 0001:0019241F   173 0001:00192465   174 0001:00192499   175 0001:001924A4
+   176 0001:001924AB   181 0001:001925F8   182 0001:001925FD   184 0001:0019262C
+
+Line numbers for rDCSumm(rDCSumm.pas) segment .text
+
+    65 0001:00192600    66 0001:00192620    67 0001:0019262D    68 0001:0019265B
+    69 0001:00192674    70 0001:00192685    71 0001:001926A4    72 0001:001926BE
+    73 0001:001926E4    74 0001:00192707    78 0001:00192780    80 0001:00192789
+    81 0001:00192793    82 0001:0019279A    84 0001:0019279F    89 0001:001927A0
+    90 0001:001927AE    91 0001:001927B6    95 0001:001927B8    96 0001:001927BB
+    97 0001:001927C9    98 0001:001927D9   102 0001:001927DC   103 0001:001927DF
+   104 0001:001927ED   105 0001:001927FC   107 0001:0019280D   108 0001:00192819
+   110 0001:00192825   116 0001:00192888   117 0001:00192894   118 0001:00192898
+   120 0001:001928D2   122 0001:00192904   123 0001:00192911   131 0001:00192938
+   132 0001:0019295D   135 0001:0019296B   136 0001:0019298F   137 0001:001929B3
+   138 0001:001929D4   139 0001:001929FC   140 0001:00192A1E   141 0001:00192A30
+   142 0001:00192A57   143 0001:00192A7B   145 0001:00192A9A   149 0001:00192B00
+   151 0001:00192B09   152 0001:00192B13   153 0001:00192B1A   155 0001:00192B1F
+   159 0001:00192B20   160 0001:00192B2E   161 0001:00192B36   162 0001:00192B3F
+   176 0001:00192B40   177 0001:00192B68   179 0001:00192B6C   180 0001:00192B6F
+   181 0001:00192B77   183 0001:00192B79   184 0001:00192B9D   185 0001:00192BC2
+   186 0001:00192BE0   225 0001:00192C3C   226 0001:00192C4C   227 0001:00192C58
+   229 0001:00192C60   230 0001:00192CDA   232 0001:00192CEE   243 0001:00192D1C
+   244 0001:00192D44   245 0001:00192D4C   246 0001:00192D68   248 0001:00192D9F
+   249 0001:00192DD5   250 0001:00192DD7   245 0001:00192DD8   251 0001:00192DDB
+   256 0001:00192E08   257 0001:00192E29   258 0001:00192E31   259 0001:00192E4D
+   261 0001:00192E84   262 0001:00192EAE   263 0001:00192EB0   258 0001:00192EB1
+   264 0001:00192EB4   269 0001:00192EE0   270 0001:00192EFF   271 0001:00192F04
+   272 0001:00192F20   274 0001:00192F57   275 0001:00192F8E   276 0001:00192F90
+   271 0001:00192F91   277 0001:00192F94   282 0001:00192FC0   283 0001:00192FE8
+   284 0001:00192FF6   285 0001:00193012   287 0001:00193049   288 0001:00193085
+   289 0001:00193087   284 0001:00193088   290 0001:0019308B   293 0001:001930BC
+   294 0001:001930E1   295 0001:00193106   298 0001:00193114   299 0001:00193120
+   300 0001:00193138   301 0001:00193146   302 0001:00193154   303 0001:0019316C
+   304 0001:00193182   305 0001:00193192   306 0001:001931AA   307 0001:001931BA
+   308 0001:001931D2   309 0001:001931E0   310 0001:001931F0   311 0001:00193208
+   312 0001:00193218   313 0001:00193230   314 0001:0019323D   315 0001:00193255
+   318 0001:00193267   319 0001:001932B5   322 0001:001932D7   323 0001:001932F2
+   327 0001:0019330A   332 0001:00193448   333 0001:00193463   335 0001:0019347B
+   336 0001:00193497   334 0001:001934DC   337 0001:001934DF   338 0001:001934EC
+   356 0001:00193538   367 0001:00193560   368 0001:00193584   369 0001:001935A9
+   370 0001:001935C7   379 0001:0019361C   382 0001:00193641   383 0001:0019364F
+   384 0001:00193667   385 0001:0019367F   386 0001:001936A6   387 0001:001936C1
+   388 0001:001936EF   389 0001:0019370A   390 0001:00193729   391 0001:00193744
+   392 0001:00193763   393 0001:0019377E   394 0001:0019379D   395 0001:001937B8
+   397 0001:001937D1   398 0001:001937F3   399 0001:00193803   400 0001:00193821
+   401 0001:00193843   402 0001:00193865   403 0001:00193887   405 0001:00193897
+   406 0001:001938B5   410 0001:001938C9   411 0001:001938D8   413 0001:001938EA
+   414 0001:00193908   415 0001:00193926   420 0001:0019394A   421 0001:00193965
+   422 0001:00193987   423 0001:001939A2   424 0001:001939C6   425 0001:001939CB
+   426 0001:00193A04   428 0001:00193A3C   430 0001:00193A4E   431 0001:00193A65
+   433 0001:00193A6B   434 0001:00193A72   437 0001:00193A80   447 0001:00193B88
+   450 0001:00193BB3   451 0001:00193BC1   452 0001:00193BDF   453 0001:00193BF7
+   454 0001:00193C22   455 0001:00193C3D   457 0001:00193C56   458 0001:00193C66
+   459 0001:00193C84   460 0001:00193CA6   461 0001:00193CC8   463 0001:00193CD8
+   464 0001:00193CF6   468 0001:00193D0A   469 0001:00193D19   475 0001:00193D2B
+   476 0001:00193D46   477 0001:00193D6A   478 0001:00193D6F   479 0001:00193DA8
+   481 0001:00193DE0   483 0001:00193DF2   484 0001:00193E09   486 0001:00193E0F
+   487 0001:00193E16   490 0001:00193E24   500 0001:00193EE8   504 0001:00193F14
+   505 0001:00193F22   506 0001:00193F3A   507 0001:00193F52   508 0001:00193F7E
+   509 0001:00193F99   511 0001:00193FB2   513 0001:00193FB8   516 0001:00193FD2
+   517 0001:00193FF9   518 0001:00194017   519 0001:00194035   520 0001:00194057
+   522 0001:00194067   523 0001:00194085   527 0001:00194099   528 0001:001940A8
+   533 0001:001940BA   534 0001:001940BF   535 0001:001940F8   538 0001:00194130
+   541 0001:00194138   542 0001:0019416B   546 0001:0019416D   547 0001:00194183
+   549 0001:00194189   550 0001:00194190   552 0001:0019419E   555 0001:00194288
+   556 0001:001942A7   557 0001:001942BD   558 0001:001942E4   561 0001:00194328
+   562 0001:0019434D   563 0001:00194370   564 0001:00194386   568 0001:001943C4
+   569 0001:001943EC   570 0001:001943F0   572 0001:00194431   573 0001:0019447A
+   579 0001:001944E4   580 0001:0019450D   581 0001:0019450F   582 0001:00194513
+   584 0001:0019454C   585 0001:0019458F   586 0001:0019459E   587 0001:001945A2
+   588 0001:001945A6   589 0001:001945AA   591 0001:001945AC   605 0001:00194608
+   606 0001:0019462A   609 0001:00194642   610 0001:0019464B   611 0001:00194662
+   612 0001:00194675   613 0001:0019469B   614 0001:001946B1   616 0001:001946C5
+   617 0001:001946E3   619 0001:001946E7   620 0001:00194705   624 0001:00194719
+   625 0001:00194728   628 0001:0019473A   630 0001:0019473F   636 0001:001947C8
+   637 0001:001947F6   640 0001:0019481A   641 0001:0019481E   642 0001:0019483C
+   643 0001:0019485A   644 0001:00194878   645 0001:001948A1   646 0001:001948C6
+   647 0001:001948E6   648 0001:0019490B   649 0001:0019492F   650 0001:0019495A
+   651 0001:00194985   652 0001:001949A9   653 0001:001949CD   654 0001:001949F1
+   656 0001:001949FB   657 0001:00194A0B   662 0001:00194A7C   665 0001:00194AC0
+   666 0001:00194AD3   667 0001:00194AE6   668 0001:00194AF9   669 0001:00194B09
+   671 0001:00194B2C   672 0001:00194B3D   673 0001:00194B5B   674 0001:00194B84
+   675 0001:00194B97   676 0001:00194BC0   677 0001:00194BE9   678 0001:00194BFC
+   679 0001:00194C0F   681 0001:00194C22   682 0001:00194C3B   688 0001:00194CA0
+   689 0001:00194CCC   691 0001:00194CDF
+
+Line numbers for rDCSumm(rDCSumm.pas) segment .itext
+
+   684 0002:000011AC   687 0002:000011B3
+
+Line numbers for fTemplateDialog(Templates\fTemplateDialog.pas) segment .text
+
+    96 0001:00194FF0    97 0001:00195017    98 0001:00195022    99 0001:0019502A
+   100 0001:00195039   101 0001:00195047   102 0001:00195061   104 0001:0019506F
+   105 0001:00195084   106 0001:001950AF   107 0001:001950C6   101 0001:001950C7
+   108 0001:001950CA   109 0001:001950D5   111 0001:001950EB   112 0001:001950EF
+   113 0001:0019511E   115 0001:00195124   116 0001:0019514B   117 0001:0019514F
+   119 0001:00195159   120 0001:0019517C   121 0001:00195199   122 0001:001951B7
+   123 0001:00195203   125 0001:0019524E   109 0001:0019524F   127 0001:00195263
+   129 0001:00195273   146 0001:001952AC   147 0001:001952C3   149 0001:001952D2
+   151 0001:001952D6   152 0001:001952E9   153 0001:001952F2   157 0001:0019531B
+   158 0001:0019532D   159 0001:00195338   160 0001:0019534B   163 0001:00195357
+   170 0001:00195394   171 0001:001953AF   172 0001:001953C1   174 0001:001953D3
+   175 0001:001953E3   177 0001:001953F5   179 0001:001953F8   181 0001:001953FC
+   182 0001:0019540F   185 0001:00195438   186 0001:00195448   188 0001:00195455
+   189 0001:00195467   190 0001:00195479   192 0001:001954B0   193 0001:001954DD
+   194 0001:001954E1   195 0001:001954E5   196 0001:001954EC   197 0001:00195505
+   198 0001:00195513   199 0001:00195522   200 0001:0019552C   201 0001:00195533
+   202 0001:00195540   203 0001:00195548   204 0001:00195556   205 0001:00195565
+   206 0001:00195570   207 0001:0019558D   208 0001:0019559A   209 0001:0019559F
+   211 0001:001955AE   212 0001:001955BD   214 0001:001955C6   215 0001:001955D5
+   217 0001:001955D9   218 0001:001955EF   222 0001:001955FB   223 0001:00195603
+   225 0001:00195605   226 0001:00195610   228 0001:0019565C   229 0001:00195662
+   230 0001:0019567F   231 0001:0019568D   233 0001:00195699   234 0001:0019569D
+   235 0001:001956AE   236 0001:001956B6   238 0001:001956C8   240 0001:001956D6
+   241 0001:001956E8   243 0001:001956FA   245 0001:00195704   246 0001:00195711
+   247 0001:0019571F   249 0001:0019572B   251 0001:00195748   252 0001:00195755
+   254 0001:0019576B   255 0001:00195773   256 0001:00195777   259 0001:0019577D
+   263 0001:00195783   264 0001:0019578B   265 0001:0019578F   267 0001:00195793
+   270 0001:001957AD   273 0001:001957C2   275 0001:001957CC   276 0001:001957DE
+   277 0001:001957ED   275 0001:001957EE   278 0001:001957F1   281 0001:00195801
+   282 0001:00195807   285 0001:00195810   286 0001:00195817   289 0001:00195826
+   292 0001:00195914   295 0001:0019593B   297 0001:00195953   298 0001:0019599C
+   301 0001:001959AB   293 0001:001959B2   303 0001:001959CC   304 0001:001959D3
+   310 0001:00195A30   311 0001:00195A52   312 0001:00195A61   313 0001:00195A6F
+   314 0001:00195A79   315 0001:00195A85   317 0001:00195AA7   319 0001:00195AB7
+   325 0001:00195ADC   326 0001:00195AE4   328 0001:00195AF9   329 0001:00195B15
+   330 0001:00195B2C   326 0001:00195B2D   331 0001:00195B30   335 0001:00195B38
+   336 0001:00195B3F   340 0001:00195B40   341 0001:00195B47   346 0001:00195B48
+   347 0001:00195B6E   348 0001:00195B76   350 0001:00195B7A   351 0001:00195B7D
+   353 0001:00195B81   354 0001:00195B91   355 0001:00195B97   357 0001:00195BAA
+   360 0001:00195BE3   379 0001:00195C0C   380 0001:00195C35   381 0001:00195C3A
+   383 0001:00195C40   385 0001:00195C55   386 0001:00195C6E   388 0001:00195C7B
+   389 0001:00195C8B   391 0001:00195C8D   383 0001:00195C8E   393 0001:00195C91
+   399 0001:00195CC0   400 0001:00195CC8   402 0001:00195CD1   403 0001:00195CE0
+   404 0001:00195CEE   405 0001:00195D00   407 0001:00195D09   408 0001:00195D15
+   411 0001:00195D37   414 0001:00195D47   438 0001:00195D4C   439 0001:00195D52
+   441 0001:00195D63   442 0001:00195D6F   444 0001:00195D83   446 0001:00195D88
+   447 0001:00195DB6   448 0001:00195DCD   449 0001:00195DEA   450 0001:00195E08
+   451 0001:00195E1B   452 0001:00195E2E   454 0001:00195E41   455 0001:00195E43
+   456 0001:00195E45   457 0001:00195E4B   459 0001:00195E64   460 0001:00195E68
+   461 0001:00195E6E   462 0001:00195E7B   463 0001:00195E87   464 0001:00195E94
+   465 0001:00195E9A   468 0001:00195E9E   470 0001:00195EA2   472 0001:00195EEA
+   474 0001:00195EEE   477 0001:00195EFC   479 0001:00195F00   481 0001:00195F04
+   483 0001:00195F0C   484 0001:00195F26   485 0001:00195F31   486 0001:00195F44
+   487 0001:00195F48   488 0001:00195F58   490 0001:00195F5F   492 0001:00195F64
+   493 0001:00195F86   494 0001:00195FB5   495 0001:00195FD1   496 0001:00195FF3
+   498 0001:00195FF7   500 0001:0019601C   501 0001:0019602E   504 0001:00196031
+   496 0001:00196033   506 0001:00196037   508 0001:00196046   509 0001:0019605F
+   510 0001:00196070   512 0001:00196075   514 0001:0019607D   515 0001:001960B6
+   516 0001:001960D1   517 0001:001960E4   518 0001:001960E8   519 0001:001960F3
+   521 0001:001960FB   523 0001:00196132   524 0001:00196141   526 0001:00196145
+   527 0001:00196146   529 0001:0019614B   530 0001:00196152   531 0001:00196161
+   532 0001:00196165   534 0001:0019616C   536 0001:0019616D   537 0001:00196171
+   540 0001:00196194   541 0001:001961AA   542 0001:001961B3   543 0001:001961C0
+   546 0001:001961D5   548 0001:001961E7   549 0001:001961F9   551 0001:001961FD
+   553 0001:0019620E   554 0001:0019622A   555 0001:00196231   557 0001:00196240
+   558 0001:00196249   559 0001:0019624C   560 0001:00196257   561 0001:0019626F
+   563 0001:0019627C   564 0001:00196280   567 0001:00196287   568 0001:00196289
+   570 0001:00196299   571 0001:001962B0   573 0001:001962C5   574 0001:001962D2
+   579 0001:001962DE   580 0001:001962E7   581 0001:001962F0   582 0001:001962F3
+   589 0001:00196314   592 0001:0019631D   594 0001:00196323   595 0001:00196349
+   596 0001:00196350   598 0001:00196361   599 0001:00196374   601 0001:00196381
+   603 0001:00196392   604 0001:001963BA   605 0001:001963C3   606 0001:001963CC
+   607 0001:001963DF   609 0001:001963ED   610 0001:00196404   612 0001:00196454
+   613 0001:00196460   614 0001:00196469   616 0001:0019647A   617 0001:0019648C
+   618 0001:00196499   621 0001:001964AA   622 0001:001964B3   625 0001:0019652C
+   626 0001:0019652F   627 0001:00196543   630 0001:00196548   631 0001:0019654B
+   633 0001:0019655F   636 0001:00196564   637 0001:0019657D   639 0001:001965A5
+   640 0001:001965AC   642 0001:001965B6   649 0001:001965E4   650 0001:001965F0
+   651 0001:00196600   652 0001:0019660A   653 0001:00196618   654 0001:00196623
+   655 0001:00196636   656 0001:00196644   657 0001:0019665E   658 0001:00196670
+   657 0001:0019667F   659 0001:00196682   661 0001:0019668B   662 0001:00196699
+   665 0001:001966B2   667 0001:001966C4   670 0001:001966CC   671 0001:001966CF
+   673 0001:001966D8   674 0001:001966DF   675 0001:001966E6   677 0001:001966ED
+   682 0001:001966F0   684 0001:001966F9   685 0001:00196700   687 0001:00196705
+   690 0001:00196708   691 0001:0019670B   692 0001:00196712   693 0001:00196724
+   694 0001:00196736   695 0001:00196748   696 0001:00196767   697 0001:0019677E
+   698 0001:00196785   699 0001:001967A4   700 0001:001967AB   701 0001:001967B2
+   708 0001:001967B4   710 0001:001967BC   711 0001:001967C3   712 0001:001967CD
+   713 0001:001967DC   716 0001:001967E4   718 0001:001967E7   719 0001:001967F2
+   720 0001:001967FD   721 0001:00196808   722 0001:00196813   725 0001:00196818
+   726 0001:0019682F   728 0001:0019684B   736 0001:00196870   737 0001:00196899
+   738 0001:0019689F   740 0001:001968AC   741 0001:001968B3   742 0001:001968C1
+   744 0001:001968DB   745 0001:001968DD   747 0001:00196912   749 0001:00196916
+   750 0001:0019693B   751 0001:0019693D   753 0001:00196945   754 0001:00196966
+   755 0001:00196983   756 0001:001969A1   757 0001:001969C0   759 0001:001969C6
+   761 0001:001969CE   762 0001:001969DC   764 0001:001969DE   742 0001:001969DF
+   766 0001:001969E8   770 0001:00196A5C   771 0001:00196A63   777 0001:00196A64
+   778 0001:00196A6B   779 0001:00196A7A   780 0001:00196A88   781 0001:00196A96
+   782 0001:00196AA0   783 0001:00196AA8   785 0001:00196AC4   787 0001:00196AD4
+   793 0001:00196AF0   794 0001:00196AF3   795 0001:00196B01   796 0001:00196B05
+   797 0001:00196B12   802 0001:00196B14   803 0001:00196B34   804 0001:00196B39
+   812 0001:00196B3C   813 0001:00196B4D   814 0001:00196B52   815 0001:00196B57
+   821 0001:00196B58   822 0001:00196B5C   825 0001:00196B5F   827 0001:00196B70
+   828 0001:00196B84   829 0001:00196B88   830 0001:00196B8D   832 0001:00196B9F
+   834 0001:00196BD0
+
+Line numbers for fNoteIDParents(fNoteIDParents.pas) segment .text
+
+    39 0001:00196DE4    40 0001:00196E0A    41 0001:00196E21    42 0001:00196E30
+    43 0001:00196E3E    44 0001:00196E46    46 0001:00196E62    47 0001:00196E75
+    50 0001:00196E7D    51 0001:00196E98    53 0001:00196EF4    44 0001:00196EF5
+    54 0001:00196EFC    55 0001:00196F0B    56 0001:00196F13    57 0001:00196F2B
+    58 0001:00196F36    60 0001:00196F54    61 0001:00196F5C    63 0001:00196F6C
+    66 0001:00196FA8    68 0001:00196FAB    69 0001:00196FB6    72 0001:00196FB8
+    74 0001:00196FBB    75 0001:00196FC6    76 0001:00196FCD    83 0001:00196FD0
+    85 0001:00196FF1    86 0001:00196FF9    87 0001:00197021    88 0001:0019702C
+    90 0001:00197032    91 0001:00197041    93 0001:00197043    94 0001:0019705F
+    95 0001:00197066    97 0001:001970EA
+
+Line numbers for mImgText(mImgText.pas) segment .text
+
+    28 0001:00197248    29 0001:0019725A    30 0001:00197263    31 0001:0019726C
+
+Line numbers for mImgText(mImgText.pas) segment .itext
+
+    33 0002:000011B4    34 0002:000011BD    36 0002:000011C7
+
+Line numbers for fIconLegend(fIconLegend.pas) segment .text
+
+   119 0001:00197A14   120 0001:00197A17   121 0001:00197A25   122 0001:00197A2F
+   124 0001:00197A38   125 0001:00197A51   127 0001:00197A74   128 0001:00197A80
+   129 0001:00197A91   130 0001:00197A9B   134 0001:00197AA0   135 0001:00197AA5
+   139 0001:00197AA8   140 0001:00197ACF   141 0001:00197AE1   142 0001:00197AF3
+   143 0001:00197B05   144 0001:00197B17   146 0001:00197B28   151 0001:00197B2C
+   153 0001:00197B2F   156 0001:00197B30   157 0001:00197B33   158 0001:00197B3F
+   159 0001:00197B4B   160 0001:00197B52   163 0001:00197B54   164 0001:00197B57
+   165 0001:00197B64   166 0001:00197B7E   167 0001:00197B88   168 0001:00197B97
+   169 0001:00197BA1   170 0001:00197BA8   171 0001:00197BC9   173 0001:00197BEA
+   174 0001:00197BFA   176 0001:00197C0A   181 0001:00197C0C   182 0001:00197C12
+   183 0001:00197C23   184 0001:00197C3B   185 0001:00197C4A   189 0001:00197C5C
+   190 0001:00197C65   191 0001:00197C7C   192 0001:00197C85   182 0001:00197C86
+   193 0001:00197C89   197 0001:00197C90   198 0001:00197CA1   199 0001:00197CAE
+   200 0001:00197CB4   201 0001:00197CB9   202 0001:00197CDD   203 0001:00197CF3
+   207 0001:00197CF8   209 0001:00197D2E
+
+Line numbers for fRemVisitInfo(fRemVisitInfo.pas) segment .text
+
+    34 0001:00197F30    35 0001:00197F40    38 0001:00197F50    39 0001:00197F53
+    40 0001:00197F5A    41 0001:00197F71    42 0001:00197F85    44 0001:00197FB5
+
+Line numbers for fNoteCPFields(fNoteCPFields.pas) segment .text
+
+    55 0001:00198220    56 0001:0019823C    57 0001:00198253    59 0001:00198261
+    60 0001:00198269    61 0001:00198272    62 0001:0019827D    63 0001:00198291
+    64 0001:001982A4    65 0001:001982B7    66 0001:001982C2    68 0001:001982CE
+    69 0001:001982E5    70 0001:001982F0    73 0001:00198311    75 0001:00198321
+    78 0001:00198340    80 0001:00198343    81 0001:0019834A    82 0001:0019835F
+    83 0001:00198377    88 0001:0019837C    90 0001:00198393    91 0001:0019839D
+    95 0001:001983BF    96 0001:001983C6    98 0001:001983D0   101 0001:00198414
+   102 0001:0019841D   103 0001:00198457   105 0001:00198464   106 0001:00198487
+   107 0001:00198498   108 0001:001984B8   109 0001:001984F5   113 0001:0019850C
+   114 0001:0019851D   116 0001:00198534   117 0001:00198551   118 0001:0019858B
+   121 0001:0019859D   126 0001:001986FC   128 0001:00198712   129 0001:0019871C
+   130 0001:00198722   131 0001:00198735   132 0001:0019873C   133 0001:00198743
+   137 0001:00198830   138 0001:00198839   139 0001:00198857   141 0001:0019888B
+
+Line numbers for MenuBar(MenuBar.pas) segment .text
+
+    46 0001:00198A20    47 0001:00198A32    48 0001:00198A3B    49 0001:00198A44
+    50 0001:00198A4D    51 0001:00198A5B    53 0001:00198A63    56 0001:00198A88
+    57 0001:00198A8B    63 0001:00198A90    64 0001:00198A9B    65 0001:00198AA9
+    66 0001:00198AAD    67 0001:00198ABC    66 0001:00198ACB    68 0001:00198AD0
+    69 0001:00198AD8    70 0001:00198AE0    72 0001:00198B03    73 0001:00198B14
+    74 0001:00198B22    75 0001:00198B2C    76 0001:00198B36    77 0001:00198B40
+    79 0001:00198B6F    80 0001:00198B77    82 0001:00198B81    70 0001:00198B82
+    84 0001:00198B89    85 0001:00198BA1    84 0001:00198BC2    86 0001:00198BC5
+    88 0001:00198BF9
+
+Line numbers for fTemplateFields(Templates\fTemplateFields.pas) segment .text
+
+    62 0001:00198F14    63 0001:00198F1A    65 0001:00198F23    67 0001:00198F29
+    68 0001:00198F34    67 0001:00198F44    69 0001:00198F47    70 0001:00198F4E
+    72 0001:00198F57    74 0001:00198F5E    75 0001:00198F69    76 0001:00198F77
+    79 0001:00198F7C    80 0001:00198F7F    81 0001:00198F86    82 0001:00198F9B
+    83 0001:00198FA2    84 0001:00198FB9    85 0001:00198FCD    86 0001:00198FE8
+    93 0001:00198FEC    94 0001:00198FF3    95 0001:00198FFF    96 0001:00199008
+    97 0001:00199015   106 0001:0019901C   107 0001:0019903C   108 0001:0019906C
+   109 0001:00199076   111 0001:001990A4   112 0001:001990BB   114 0001:001990CB
+   115 0001:001990D0   117 0001:001990DE   118 0001:001990E2   120 0001:001990F5
+   122 0001:00199101   123 0001:0019910B   124 0001:0019910F   126 0001:00199111
+   118 0001:00199117   129 0001:0019911E   130 0001:00199122   131 0001:00199128
+   133 0001:00199172   134 0001:00199180   135 0001:00199195   136 0001:001991B5
+   138 0001:001991C3   141 0001:00199218   142 0001:0019921B   143 0001:00199226
+   144 0001:0019922D   148 0001:00199230   149 0001:00199235   154 0001:00199238
+   155 0001:0019923B   159 0001:0019923C   160 0001:00199242   161 0001:00199247
+   164 0001:00199248   165 0001:0019924B   166 0001:00199260   167 0001:00199285
+   170 0001:00199288   171 0001:001992A1   172 0001:001992B1   173 0001:001992B5
+   174 0001:001992EE   180 0001:00199318   181 0001:00199332   182 0001:0019933B
+   184 0001:0019933F   185 0001:00199373   187 0001:0019937E   189 0001:0019938A
+   190 0001:0019938C   192 0001:0019938E   185 0001:00199391   194 0001:00199394
+   197 0001:001993C0   198 0001:001993C3   199 0001:001993CE   200 0001:001993D5
+   207 0001:001993D8   208 0001:001993F4   210 0001:0019940A   211 0001:00199414
+   212 0001:00199422   213 0001:00199455   214 0001:0019946F   216 0001:00199499
+   219 0001:001994AB   222 0001:00199520   223 0001:00199523   224 0001:00199537
+   225 0001:0019955C   227 0001:0019958C
+
+Line numbers for uSpell(uSpell.pas) segment .text
+
+    49 0001:00199560    50 0001:00199564    51 0001:00199573    63 0001:0019957C
+    64 0001:00199598    65 0001:001995BE    68 0001:00199604    69 0001:00199608
+    70 0001:0019960F    71 0001:0019961C    74 0001:00199624    75 0001:0019962B
+    76 0001:00199633    77 0001:0019963F    86 0001:00199644    87 0001:0019967E
+    88 0001:00199686    89 0001:001996A3    91 0001:001996BD    93 0001:001996DA
+    94 0001:001996F7    95 0001:00199721    97 0001:00199786    98 0001:0019978F
+   100 0001:001997A8   101 0001:001997B4   102 0001:001997C5   105 0001:001997C7
+    89 0001:001997CA   106 0001:001997D3   113 0001:00199814   121 0001:0019982D
+   123 0001:00199836   124 0001:00199858   126 0001:0019985F   128 0001:00199867
+   140 0001:001998BC   141 0001:001998E3   142 0001:001998EF   143 0001:00199900
+   144 0001:00199911   145 0001:00199915   146 0001:00199919   147 0001:00199921
+   148 0001:00199929   149 0001:00199933   150 0001:00199941   151 0001:0019994F
+   152 0001:00199959   153 0001:00199967   154 0001:00199977   156 0001:001999A3
+   157 0001:001999B1   158 0001:001999BC   159 0001:001999CB   160 0001:001999DA
+   162 0001:001999E2   163 0001:00199A13   166 0001:00199A2F   167 0001:00199A39
+   168 0001:00199A47   170 0001:00199A7C   171 0001:00199A92   172 0001:00199AAB
+   173 0001:00199AFC   174 0001:00199B48   175 0001:00199B94   176 0001:00199BE0
+   178 0001:00199BF4   179 0001:00199C23   181 0001:00199C54   183 0001:00199C8F
+   184 0001:00199C93   185 0001:00199CA8   187 0001:00199CBA   189 0001:00199D1B
+   190 0001:00199D2B   191 0001:00199D77   193 0001:00199DC3   195 0001:00199DD6
+   196 0001:00199E20   199 0001:00199E82   200 0001:00199ECC   203 0001:00199F29
+   204 0001:00199F2F   206 0001:00199F8E   208 0001:00199FA3   209 0001:00199FB1
+   210 0001:00199FFF   211 0001:0019A00E   212 0001:0019A06D   214 0001:0019A0CA
+   215 0001:0019A0E0   218 0001:0019A102   219 0001:0019A10C   222 0001:0019A139
+   224 0001:0019A13C   225 0001:0019A14A   229 0001:0019A153   230 0001:0019A161
+   231 0001:0019A16D   233 0001:0019A177   235 0001:0019A198   236 0001:0019A1A0
+   238 0001:0019A1C8   239 0001:0019A1D5   240 0001:0019A1F1   241 0001:0019A204
+   236 0001:0019A207   242 0001:0019A20C   244 0001:0019A220   245 0001:0019A22D
+   247 0001:0019A267   248 0001:0019A272   249 0001:0019A281   250 0001:0019A290
+   252 0001:0019A298   256 0001:0019A2D4   257 0001:0019A2DF   258 0001:0019A2EE
+   259 0001:0019A2FD   261 0001:0019A305   266 0001:0019A366   267 0001:0019A371
+   268 0001:0019A380   269 0001:0019A38F   271 0001:0019A397   272 0001:0019A3AA
+   274 0001:0019A40E   275 0001:0019A427   276 0001:0019A434   279 0001:0019A8B4
+   280 0001:0019A8BB   281 0001:0019A8C1   282 0001:0019A8CB   285 0001:0019A8D0
+   286 0001:0019A8D7   287 0001:0019A8DD   288 0001:0019A8E7
+
+Line numbers for uSpell(uSpell.pas) segment .itext
+
+   291 0002:000011C8
+
+Line numbers for fTemplateFieldEditor(Templates\fTemplateFieldEditor.pas) segment .text
+
+   200 0001:0019B4E4   201 0001:0019B4EA   202 0001:0019B501   203 0001:0019B50F
+   204 0001:0019B51A   206 0001:0019B534   208 0001:0019B544   223 0001:0019B54C
+   224 0001:0019B54F   225 0001:0019B555   226 0001:0019B566   227 0001:0019B574
+   228 0001:0019B582   230 0001:0019B590   232 0001:0019B592   233 0001:0019B596
+   234 0001:0019B59C   237 0001:0019B5A0   238 0001:0019B5A9   240 0001:0019B5AF
+   241 0001:0019B5BC   242 0001:0019B5C5   244 0001:0019B5D1   246 0001:0019B5D8
+   247 0001:0019B5FC   249 0001:0019B60C   250 0001:0019B616   251 0001:0019B624
+   252 0001:0019B629   253 0001:0019B62E   254 0001:0019B63D   256 0001:0019B645
+   257 0001:0019B65F   261 0001:0019B672   262 0001:0019B676   264 0001:0019B67A
+   265 0001:0019B68C   266 0001:0019B69E   267 0001:0019B6B0   268 0001:0019B6C2
+   269 0001:0019B6D4   270 0001:0019B6E6   272 0001:0019B6F8   273 0001:0019B70A
+   274 0001:0019B71C   275 0001:0019B72E   277 0001:0019B736   278 0001:0019B750
+   279 0001:0019B76B   280 0001:0019B785   281 0001:0019B7A3   285 0001:0019B7C5
+   286 0001:0019B7D5   287 0001:0019B7E6   288 0001:0019B7F6   289 0001:0019B809
+   292 0001:0019B81A   293 0001:0019B83B   294 0001:0019B84B   295 0001:0019B84F
+   297 0001:0019B872   299 0001:0019B885   300 0001:0019B893   301 0001:0019B8A1
+   302 0001:0019B8C0   303 0001:0019B8D0   304 0001:0019B8D4   306 0001:0019B8F4
+   308 0001:0019B907   309 0001:0019B928   310 0001:0019B938   311 0001:0019B93C
+   313 0001:0019B95C   315 0001:0019B96F   316 0001:0019B981   318 0001:0019B996
+   319 0001:0019B9A9   320 0001:0019B9BB   321 0001:0019B9CD   322 0001:0019B9DF
+   326 0001:0019B9F3   327 0001:0019BA05   328 0001:0019BA17   329 0001:0019BA27
+   330 0001:0019BA39   333 0001:0019BA4C   334 0001:0019BA5E   335 0001:0019BA70
+   336 0001:0019BA82   337 0001:0019BA94   339 0001:0019BAA6   340 0001:0019BAB8
+   341 0001:0019BACD   343 0001:0019BAD2   345 0001:0019BAD8   346 0001:0019BAEF
+   347 0001:0019BB0A   348 0001:0019BB21   349 0001:0019BB3C   350 0001:0019BB42
+   354 0001:0019BB50   355 0001:0019BB60   356 0001:0019BB70   357 0001:0019BB80
+   360 0001:0019BB90   362 0001:0019BB96   363 0001:0019BBA6   366 0001:0019BBD3
+   367 0001:0019BBE5   368 0001:0019BBF7   369 0001:0019BC09   370 0001:0019BC1B
+   372 0001:0019BC21   373 0001:0019BC38   377 0001:0019BC55   378 0001:0019BC65
+   381 0001:0019BC75   382 0001:0019BC96   383 0001:0019BCA6   384 0001:0019BCB6
+   385 0001:0019BCC6   387 0001:0019BCCA   388 0001:0019BCE1   392 0001:0019BCFE
+   393 0001:0019BD0E   396 0001:0019BD1E   397 0001:0019BD39   398 0001:0019BD49
+   399 0001:0019BD5E   401 0001:0019BD62   402 0001:0019BD85   403 0001:0019BDA0
+   404 0001:0019BDBB   407 0001:0019BDD6   408 0001:0019BDF1   409 0001:0019BE01
+   410 0001:0019BE16   412 0001:0019BE1A   413 0001:0019BE34   416 0001:0019BE63
+   417 0001:0019BE82   418 0001:0019BE92   420 0001:0019BEA7   421 0001:0019BEC2
+   422 0001:0019BED2   423 0001:0019BEE7   424 0001:0019BEEB   426 0001:0019BF05
+   427 0001:0019BF2A   428 0001:0019BF3A   429 0001:0019BF4A   430 0001:0019BF5A
+   432 0001:0019BF5E   433 0001:0019BF6D   435 0001:0019BF7C   438 0001:0019BF8B
+   439 0001:0019BF93   440 0001:0019BFA6   441 0001:0019BFAA   443 0001:0019BFCC
+   445 0001:0019BFEA   448 0001:0019C000   449 0001:0019C009   450 0001:0019C012
+   451 0001:0019C01B   452 0001:0019C025   454 0001:0019C03D   457 0001:0019C04F
+   464 0001:0019C0E0   465 0001:0019C107   467 0001:0019C11D   468 0001:0019C122
+   469 0001:0019C127   470 0001:0019C12B   471 0001:0019C135   472 0001:0019C143
+   473 0001:0019C15A   474 0001:0019C161   476 0001:0019C197   477 0001:0019C19B
+   479 0001:0019C1BE   480 0001:0019C1F4   481 0001:0019C1F9   482 0001:0019C1FC
+   483 0001:0019C231   484 0001:0019C234   477 0001:0019C235   485 0001:0019C23A
+   486 0001:0019C240   487 0001:0019C246   489 0001:0019C24D   491 0001:0019C26B
+   493 0001:0019C27D   495 0001:0019C286   496 0001:0019C298   498 0001:0019C2D3
+   500 0001:0019C2E5   508 0001:0019C318   509 0001:0019C33B   510 0001:0019C34A
+   511 0001:0019C358   512 0001:0019C36A   514 0001:0019C387   515 0001:0019C3BF
+   516 0001:0019C3C3   517 0001:0019C3CD   512 0001:0019C3D0   518 0001:0019C3D3
+   519 0001:0019C3DD   521 0001:0019C3FB   523 0001:0019C40B   530 0001:0019C438
+   531 0001:0019C43E   532 0001:0019C450   533 0001:0019C457   534 0001:0019C464
+   535 0001:0019C474   536 0001:0019C47B   538 0001:0019C482   539 0001:0019C4A6
+   540 0001:0019C4BA   541 0001:0019C4D4   542 0001:0019C4EB   543 0001:0019C502
+   544 0001:0019C51E   545 0001:0019C533   546 0001:0019C540   547 0001:0019C546
+   548 0001:0019C54C   550 0001:0019C558   552 0001:0019C562   544 0001:0019C563
+   553 0001:0019C566   556 0001:0019C56C   557 0001:0019C587   558 0001:0019C59C
+   560 0001:0019C5CA   561 0001:0019C5D3   562 0001:0019C5DA   568 0001:0019C604
+   569 0001:0019C624   571 0001:0019C644   573 0001:0019C666   580 0001:0019C6A1
+   581 0001:0019C6A7   584 0001:0019C6BC   585 0001:0019C6C6   586 0001:0019C6D4
+   588 0001:0019C6FB   593 0001:0019C70D   594 0001:0019C711   596 0001:0019C717
+   597 0001:0019C739   598 0001:0019C753   599 0001:0019C75D   602 0001:0019C765
+   605 0001:0019C974   606 0001:0019C97B   608 0001:0019C997   610 0001:0019C9A9
+   611 0001:0019C9B3   612 0001:0019C9C1   614 0001:0019C9DE   617 0001:0019C9F0
+   619 0001:0019CA0E   620 0001:0019CA16   621 0001:0019CA1E   628 0001:0019CA24
+   629 0001:0019CA3D   630 0001:0019CA4E   632 0001:0019CA7F   633 0001:0019CA90
+   634 0001:0019CAA9   635 0001:0019CABE   637 0001:0019CACA   638 0001:0019CAD8
+   640 0001:0019CB0C   641 0001:0019CB20   642 0001:0019CB24   643 0001:0019CB37
+   645 0001:0019CB39   647 0001:0019CB3D   648 0001:0019CB4B   649 0001:0019CB5D
+   652 0001:0019CB6A   655 0001:0019CB94   656 0001:0019CBAE   658 0001:0019CBD6
+   659 0001:0019CBF0   661 0001:0019CC00   664 0001:0019CC24   665 0001:0019CC3A
+   667 0001:0019CC5C   668 0001:0019CC78   670 0001:0019CC81   673 0001:0019CCA4
+   674 0001:0019CCBA   676 0001:0019CCCC   677 0001:0019CCE8   679 0001:0019CCFC
+   682 0001:0019CD20   683 0001:0019CD23   685 0001:0019CD35   686 0001:0019CD50
+   687 0001:0019CD68   690 0001:0019CD6F   693 0001:0019CD74   694 0001:0019CD8B
+   695 0001:0019CDA2   697 0001:0019CDAF   698 0001:0019CDB6   700 0001:0019CDC5
+   701 0001:0019CDDD   703 0001:0019CDF5   704 0001:0019CDFF   705 0001:0019CE0C
+   706 0001:0019CE40   707 0001:0019CE54   708 0001:0019CE5D   709 0001:0019CE66
+   712 0001:0019CE76   713 0001:0019CE7D   717 0001:0019CF04   718 0001:0019CF09
+   723 0001:0019CF0C   724 0001:0019CF23   725 0001:0019CF2A   726 0001:0019CF35
+   727 0001:0019CF3F   729 0001:0019CF4C   730 0001:0019CF54   731 0001:0019CF62
+   732 0001:0019CF6F   733 0001:0019CF7C   740 0001:0019CFA0   741 0001:0019CFA6
+   743 0001:0019CFAF   744 0001:0019CFC2   745 0001:0019CFC8   747 0001:0019CFCD
+   748 0001:0019CFD3   750 0001:0019CFDC   756 0001:0019D010   757 0001:0019D02D
+   758 0001:0019D045   757 0001:0019D074   759 0001:0019D077   760 0001:0019D085
+   761 0001:0019D08A   769 0001:0019D0B4   770 0001:0019D0D1   771 0001:0019D0EB
+   770 0001:0019D11A   772 0001:0019D11D   773 0001:0019D128   774 0001:0019D12A
+   775 0001:0019D132   777 0001:0019D138   779 0001:0019D168   780 0001:0019D16E
+   782 0001:0019D175   784 0001:0019D177   785 0001:0019D180   786 0001:0019D187
+   789 0001:0019D214   790 0001:0019D22A   792 0001:0019D252   793 0001:0019D274
+   795 0001:0019D27D   798 0001:0019D2A0   799 0001:0019D2A3   800 0001:0019D2BA
+   804 0001:0019D2BC   805 0001:0019D2D2   806 0001:0019D2D7   812 0001:0019D2D8
+   813 0001:0019D2DC   815 0001:0019D2E6   818 0001:0019D2FE   819 0001:0019D30C
+   822 0001:0019D310   823 0001:0019D31B   824 0001:0019D31F   826 0001:0019D32D
+   829 0001:0019D39C   830 0001:0019D3A3   832 0001:0019D3B0   833 0001:0019D3B9
+   834 0001:0019D3C7   836 0001:0019D3DE   839 0001:0019D3F1   843 0001:0019D3F4
+   844 0001:0019D3FA   845 0001:0019D3FF   855 0001:0019D400   856 0001:0019D41C
+   858 0001:0019D42A   859 0001:0019D431   861 0001:0019D439   862 0001:0019D440
+   863 0001:0019D44C   866 0001:0019D456   869 0001:0019D463   871 0001:0019D467
+   878 0001:0019D4A1   879 0001:0019D4A8   880 0001:0019D4AE   882 0001:0019D4BE
+   884 0001:0019D4C6   886 0001:0019D4E8   888 0001:0019D4F7   889 0001:0019D504
+   890 0001:0019D512   891 0001:0019D525   893 0001:0019D54A   894 0001:0019D560
+   899 0001:0019D575   900 0001:0019D5A1   903 0001:0019D5AF   904 0001:0019D5BA
+   905 0001:0019D5C3   906 0001:0019D5CA   907 0001:0019D5D7   910 0001:0019D5DE
+   916 0001:0019D8A0   917 0001:0019D8B7   919 0001:0019D8DB   922 0001:0019D8F9
+   923 0001:0019D916   925 0001:0019D92C   931 0001:0019D95C   932 0001:0019D976
+   934 0001:0019D983   935 0001:0019D992   936 0001:0019D9A0   937 0001:0019D9CB
+   939 0001:0019D9FB   942 0001:0019DA0B   945 0001:0019DA74   946 0001:0019DA78
+   947 0001:0019DA8D   948 0001:0019DAA5   949 0001:0019DABD   950 0001:0019DAD5
+   951 0001:0019DAF6   952 0001:0019DB0E   956 0001:0019DB14   957 0001:0019DB19
+   960 0001:0019DB1C   961 0001:0019DB1F   963 0001:0019DB31   964 0001:0019DB4C
+   966 0001:0019DB67   970 0001:0019DB6C   971 0001:0019DB80   975 0001:0019DB84
+   976 0001:0019DB8F   977 0001:0019DB98   978 0001:0019DBA2   981 0001:0019DBA9
+   984 0001:0019DBAC   985 0001:0019DBAF   986 0001:0019DBB5   987 0001:0019DBC2
+   988 0001:0019DBCF   992 0001:0019DBD4   993 0001:0019DBE1   994 0001:0019DBEA
+   995 0001:0019DBED   996 0001:0019DC13   997 0001:0019DC16  1005 0001:0019DC20
+  1006 0001:0019DC3E  1007 0001:0019DC47  1009 0001:0019DC4F  1010 0001:0019DC5E
+  1011 0001:0019DC6A  1012 0001:0019DC95  1013 0001:0019DC99  1015 0001:0019DCAC
+  1016 0001:0019DCBE  1017 0001:0019DCCD  1018 0001:0019DCF2  1019 0001:0019DD1B
+  1020 0001:0019DD43  1021 0001:0019DD45  1022 0001:0019DD4B  1024 0001:0019DD69
+  1026 0001:0019DD79  1027 0001:0019DD7B  1031 0001:0019DD8A  1032 0001:0019DD8C
+  1033 0001:0019DD90  1034 0001:0019DD94  1035 0001:0019DDA1  1036 0001:0019DDAE
+  1037 0001:0019DDBB  1038 0001:0019DDC8  1039 0001:0019DDD5  1042 0001:0019DDE2
+  1043 0001:0019DDEF  1045 0001:0019DDFC  1047 0001:0019DE07  1048 0001:0019DE19
+  1052 0001:0019DE2D  1053 0001:0019DE3A  1055 0001:0019DE47  1058 0001:0019DE6C
+  1059 0001:0019DE70  1060 0001:0019DE8E  1062 0001:0019DE93  1063 0001:0019DE95
+  1070 0001:0019DE98  1071 0001:0019DE9D  1072 0001:0019DEA1  1073 0001:0019DEAF
+  1080 0001:0019DEB0  1081 0001:0019DEB5  1082 0001:0019DEB9  1083 0001:0019DEBE
+  1090 0001:0019DEC0  1091 0001:0019DEC5  1092 0001:0019DEC9  1093 0001:0019DECE
+  1099 0001:0019DED0  1100 0001:0019DEE4  1101 0001:0019DEEB  1102 0001:0019DEEF
+  1103 0001:0019DF06  1110 0001:0019DF28  1111 0001:0019DF2D  1112 0001:0019DF31
+  1113 0001:0019DF36  1119 0001:0019DF38  1120 0001:0019DF39  1121 0001:0019DF40
+  1122 0001:0019DF55  1123 0001:0019DF5C  1129 0001:0019DF60  1130 0001:0019DF61
+  1131 0001:0019DF68  1132 0001:0019DF7D  1133 0001:0019DF84  1136 0001:0019DF88
+  1137 0001:0019DF8B  1139 0001:0019DF9D  1140 0001:0019DFB8  1142 0001:0019DFD0
+  1145 0001:0019DFD4  1146 0001:0019DFDA  1147 0001:0019DFE3  1149 0001:0019DFEC
+  1151 0001:0019DFFC  1152 0001:0019E00E  1153 0001:0019E018  1155 0001:0019E026
+  1158 0001:0019E038  1160 0001:0019E04A  1164 0001:0019E050  1165 0001:0019E059
+  1166 0001:0019E06E  1167 0001:0019E07B  1173 0001:0019E084  1174 0001:0019E088
+  1175 0001:0019E099  1177 0001:0019E0C2  1178 0001:0019E0DB  1179 0001:0019E0F0
+  1181 0001:0019E0FC  1182 0001:0019E10A  1183 0001:0019E11C  1186 0001:0019E129
+  1192 0001:0019E12C  1193 0001:0019E143  1194 0001:0019E154  1196 0001:0019E17E
+  1197 0001:0019E1A2  1198 0001:0019E1BF  1199 0001:0019E1CD  1200 0001:0019E1DF
+  1201 0001:0019E1EC  1202 0001:0019E1FE  1204 0001:0019E20B  1210 0001:0019E230
+  1211 0001:0019E234  1212 0001:0019E245  1214 0001:0019E26B  1215 0001:0019E284
+  1216 0001:0019E299  1217 0001:0019E2A7  1218 0001:0019E2B9  1219 0001:0019E2C6
+  1220 0001:0019E2D8  1222 0001:0019E2E5  1228 0001:0019E2E8  1229 0001:0019E2EC
+  1230 0001:0019E2FD  1232 0001:0019E323  1233 0001:0019E33C  1234 0001:0019E351
+  1235 0001:0019E35F  1236 0001:0019E371  1237 0001:0019E37E  1238 0001:0019E390
+  1240 0001:0019E39D  1243 0001:0019E3A0  1244 0001:0019E3A3  1245 0001:0019E3B4
+  1247 0001:0019E3D2  1248 0001:0019E3EB  1250 0001:0019E400  1253 0001:0019E404
+  1254 0001:0019E41A  1256 0001:0019E438  1257 0001:0019E454  1259 0001:0019E468
+  1262 0001:0019E48C  1263 0001:0019E48F  1264 0001:0019E4A0  1266 0001:0019E4B2
+  1267 0001:0019E4CB  1269 0001:0019E4E0  1272 0001:0019E4E4  1273 0001:0019E4E7
+  1274 0001:0019E4F8  1276 0001:0019E50A  1277 0001:0019E523  1279 0001:0019E538
+  1282 0001:0019E53C  1283 0001:0019E552  1284 0001:0019E573  1285 0001:0019E595
+  1288 0001:0019E5B8  1289 0001:0019E5CE  1291 0001:0019E5EC  1292 0001:0019E5FB
+  1294 0001:0019E616  1295 0001:0019E623  1298 0001:0019E64C  1301 0001:0019E670
+  1302 0001:0019E673  1304 0001:0019E685  1305 0001:0019E6A0  1306 0001:0019E6B8
+  1308 0001:0019E6BF  1311 0001:0019E6C4  1312 0001:0019E6C7  1313 0001:0019E6D7
+  1314 0001:0019E6E7  1321 0001:0019E6EC  1322 0001:0019E6F6  1323 0001:0019E6FF
+  1328 0001:0019E72E  1329 0001:0019E73A  1331 0001:0019E743  1337 0001:0019E74C
+  1338 0001:0019E768  1340 0001:0019E774  1341 0001:0019E785  1342 0001:0019E7AF
+  1344 0001:0019E7D9  1350 0001:0019E820  1351 0001:0019E824  1352 0001:0019E82D
+  1354 0001:0019E835  1356 0001:0019E848  1357 0001:0019E851  1359 0001:0019E867
+  1361 0001:0019E870  1362 0001:0019E883  1364 0001:0019E890  1365 0001:0019E892
+  1367 0001:0019E89C  1368 0001:0019E8A6  1370 0001:0019E8AA  1372 0001:0019E8B4
+  1373 0001:0019E8BE  1375 0001:0019E8C0  1377 0001:0019E8D2  1380 0001:0019E8DC
+  1384 0001:0019E8E0  1385 0001:0019E8E9  1386 0001:0019E8FB  1390 0001:0019E8FC
+  1391 0001:0019E909  1393 0001:0019E90F  1395 0001:0019E915  1396 0001:0019E93A
+  1398 0001:0019E941  1400 0001:0019E947  1401 0001:0019E96C  1404 0001:0019E971
+  1405 0001:0019E977  1406 0001:0019E99C  1408 0001:0019E9A1  1410 0001:0019E9D6
+
+Line numbers for fConsultAlertTo(Consults\fConsultAlertTo.pas) segment .text
+
+    56 0001:0019ECA8    57 0001:0019ECB2    58 0001:0019ECC9    59 0001:0019ECD7
+    62 0001:0019ECDF    63 0001:0019ECE8    64 0001:0019ECF2    68 0001:0019ED02
+    71 0001:0019ED0D    72 0001:0019ED1E    76 0001:0019ED37    78 0001:0019ED47
+    82 0001:0019ED4C    83 0001:0019ED55    84 0001:0019ED73    88 0001:0019ED7C
+    89 0001:0019ED81    94 0001:0019ED84    95 0001:0019EDA0    97 0001:0019EDB4
+    98 0001:0019EDC7    99 0001:0019EDCE   101 0001:0019EDD0   102 0001:0019EDD7
+   103 0001:0019EDF6   102 0001:0019EE40   104 0001:0019EE43   105 0001:0019EE4A
+   115 0001:0019EECC   116 0001:0019EECF   123 0001:0019EEE0   124 0001:0019EF00
+   128 0001:0019EF04   129 0001:0019EF07   130 0001:0019EF14   133 0001:0019EF18
+   134 0001:0019EF35   135 0001:0019EF43   136 0001:0019EF6D   137 0001:0019EF9F
+   139 0001:0019F000
+
+Line numbers for fConsMedRslt(Consults\fConsMedRslt.pas) segment .text
+
+    70 0001:0019F360    71 0001:0019F385    72 0001:0019F39C    75 0001:0019F3AA
+    76 0001:0019F3B4    77 0001:0019F3C5    78 0001:0019F3D9    79 0001:0019F3E4
+    80 0001:0019F3FC    81 0001:0019F417    83 0001:0019F41F    85 0001:0019F42D
+    86 0001:0019F449    88 0001:0019F45B    90 0001:0019F469    91 0001:0019F485
+    93 0001:0019F495    94 0001:0019F4AC    96 0001:0019F4B9    97 0001:0019F4C3
+    98 0001:0019F4D0   101 0001:0019F4F3   103 0001:0019F503   106 0001:0019F54C
+   107 0001:0019F54F   108 0001:0019F561   109 0001:0019F568   110 0001:0019F56F
+   113 0001:0019F574   114 0001:0019F58F   115 0001:0019F5A1   117 0001:0019F5B2
+   118 0001:0019F5C5   119 0001:0019F5CC   121 0001:0019F5CE   122 0001:0019F5D5
+   124 0001:0019F5DB   125 0001:0019F5F4   126 0001:0019F603   127 0001:0019F614
+   129 0001:0019F627   130 0001:0019F62E   138 0001:0019F6A0   140 0001:0019F6C2
+   141 0001:0019F6D7   149 0001:0019F76D   150 0001:0019F78A   152 0001:0019F797
+   153 0001:0019F7CC   154 0001:0019F7E4   155 0001:0019F7FA   156 0001:0019F80D
+   158 0001:0019F825   161 0001:0019F8CC   162 0001:0019F8CF   163 0001:0019F8D9
+   164 0001:0019F8E5   165 0001:0019F8ED   166 0001:0019F900   167 0001:0019F918
+   171 0001:0019F91C   172 0001:0019F91F   173 0001:0019F930   174 0001:0019F956
+   178 0001:0019F958   180 0001:0019F961   181 0001:0019F97F   184 0001:0019F988
+   185 0001:0019F98B   186 0001:0019F992   187 0001:0019F99F   197 0001:0019F9A4
+   199 0001:0019F9DB   200 0001:0019F9EA   201 0001:0019F9F8   203 0001:0019FA0B
+   204 0001:0019FA28   205 0001:0019FA32   206 0001:0019FA45   207 0001:0019FA72
+   209 0001:0019FA93   212 0001:0019FAEB   213 0001:0019FB19   214 0001:0019FB57
+   217 0001:0019FBB0   219 0001:0019FBC0
+
+Line numbers for fConsMedRslt(Consults\fConsMedRslt.pas) segment .itext
+
+   221 0002:000011D0
+
+Line numbers for fRemCoverPreview(fRemCoverPreview.pas) segment .text
+
+    31 0001:0019FEB8    32 0001:0019FEC2    33 0001:0019FEC9    38 0001:0019FECC
+    39 0001:0019FED7    41 0001:0019FEDF    42 0001:0019FEEF    43 0001:0019FEFE
+    52 0001:0019FF00    53 0001:0019FF28    55 0001:0019FF39    56 0001:0019FF40
+    60 0001:0019FF49    61 0001:0019FF50    64 0001:0019FF57    65 0001:0019FF5B
+    67 0001:0019FF65    69 0001:0019FF6F    70 0001:0019FF7D    74 0001:0019FF8D
+    75 0001:0019FFA0    78 0001:0019FFB3    79 0001:0019FFC0    80 0001:0019FFC5
+    65 0001:0019FFC8    81 0001:0019FFCD    82 0001:0019FFD9    83 0001:0019FFDB
+    85 0001:001A0034
+
+Line numbers for rProbs(rProbs.pas) segment .text
+
+    41 0001:001A0008    42 0001:001A0035    43 0001:001A006C    44 0001:001A0079
+    53 0001:001A00BC    54 0001:001A00BF    55 0001:001A00D5    56 0001:001A00E7
+    57 0001:001A00F4    60 0001:001A0118    61 0001:001A0138    62 0001:001A0151
+    63 0001:001A015E    66 0001:001A01A0    67 0001:001A01D6    68 0001:001A0210
+    69 0001:001A021D    72 0001:001A0260    73 0001:001A028B    74 0001:001A02BB
+    75 0001:001A02C8    79 0001:001A0310    80 0001:001A0346    81 0001:001A038A
+    82 0001:001A0397    85 0001:001A03E0    86 0001:001A03E6    87 0001:001A03FC
+    88 0001:001A0409    91 0001:001A0428    92 0001:001A042E    93 0001:001A0447
+    94 0001:001A0454   117 0001:001A0478   118 0001:001A049A   119 0001:001A04D7
+   120 0001:001A04E4   123 0001:001A0530   124 0001:001A0552   125 0001:001A0575
+   126 0001:001A0582   135 0001:001A05C4   136 0001:001A05F9   137 0001:001A0630
+   138 0001:001A063D   141 0001:001A0690   142 0001:001A06B0   143 0001:001A06C9
+   144 0001:001A06D6   147 0001:001A0714   148 0001:001A0717   149 0001:001A072D
+   150 0001:001A073F   151 0001:001A074C   154 0001:001A0770   155 0001:001A077C
+   156 0001:001A07B4   157 0001:001A07C6   158 0001:001A07D3   161 0001:001A07F8
+   162 0001:001A07FB   163 0001:001A0811   164 0001:001A081E   167 0001:001A083C
+   168 0001:001A085C   169 0001:001A0875   170 0001:001A0882   173 0001:001A08C0
+   174 0001:001A08C6   175 0001:001A08E9   176 0001:001A08F6   179 0001:001A091C
+   180 0001:001A093C   181 0001:001A0955   182 0001:001A0962   185 0001:001A09A8
+   186 0001:001A09C8   187 0001:001A09E1   188 0001:001A09EE   191 0001:001A0A34
+   192 0001:001A0A53   193 0001:001A0A6C   196 0001:001A0AA8   197 0001:001A0AD5
+   198 0001:001A0B0C   199 0001:001A0B22   201 0001:001A0B96
+
+Line numbers for fRemCoverSheet(fRemCoverSheet.pas) segment .text
+
+   259 0001:001A1538   260 0001:001A153F   261 0001:001A1556   262 0001:001A1564
+   263 0001:001A156E   264 0001:001A1579   265 0001:001A1585   267 0001:001A1597
+   269 0001:001A15A7   284 0001:001A15E0   285 0001:001A1606   286 0001:001A1613
+   287 0001:001A161D   288 0001:001A162A   289 0001:001A1634   291 0001:001A163E
+   292 0001:001A1646   294 0001:001A1663   295 0001:001A1678   296 0001:001A168D
+   297 0001:001A16A2   298 0001:001A16B7   299 0001:001A16CC   300 0001:001A16E1
+   301 0001:001A16F6   302 0001:001A170B   304 0001:001A1720   305 0001:001A1733
+   307 0001:001A1750   308 0001:001A1763   309 0001:001A1776   310 0001:001A1796
+   311 0001:001A179E   312 0001:001A17B1   313 0001:001A17C4   314 0001:001A17D3
+   315 0001:001A17D7   317 0001:001A17E8   318 0001:001A17F0   320 0001:001A17F6
+   321 0001:001A17FC   322 0001:001A1809   324 0001:001A1814   325 0001:001A181A
+   326 0001:001A1834   327 0001:001A187A   328 0001:001A188D   305 0001:001A188E
+   330 0001:001A1897   331 0001:001A18A4   332 0001:001A18C1   333 0001:001A18D6
+   334 0001:001A18E9   335 0001:001A1904   336 0001:001A1908   338 0001:001A1943
+   339 0001:001A194E   340 0001:001A1969   341 0001:001A196D   343 0001:001A19A8
+   344 0001:001A19BB   345 0001:001A19D3   346 0001:001A19F0   347 0001:001A1A03
+   348 0001:001A1A13   349 0001:001A1A1E   351 0001:001A1A24   352 0001:001A1A34
+   353 0001:001A1A3D   357 0001:001A1A52   358 0001:001A1A62   360 0001:001A1A6B
+   361 0001:001A1A88   362 0001:001A1AA2   363 0001:001A1ACC   364 0001:001A1AE6
+   365 0001:001A1AF6   366 0001:001A1B03   368 0001:001A1B16   369 0001:001A1B2F
+   370 0001:001A1B42   371 0001:001A1B48   373 0001:001A1B5B   374 0001:001A1B6F
+   375 0001:001A1B7D   377 0001:001A1B9A   378 0001:001A1BB5   379 0001:001A1BD3
+   381 0001:001A1C0B   382 0001:001A1C10   385 0001:001A1C2E   386 0001:001A1C30
+   387 0001:001A1C3A   388 0001:001A1C44   375 0001:001A1C45   390 0001:001A1C5B
+   393 0001:001A1C77   394 0001:001A1C81   395 0001:001A1C89   396 0001:001A1C91
+   400 0001:001A1D50   401 0001:001A1D59   402 0001:001A1D6C   406 0001:001A1D74
+   407 0001:001A1D7D   408 0001:001A1D96   412 0001:001A1D9C   413 0001:001A1DA5
+   414 0001:001A1DBC   418 0001:001A1DC4   419 0001:001A1DCD   420 0001:001A1DE4
+   423 0001:001A1DEC   424 0001:001A1DEF   425 0001:001A1E0E   426 0001:001A1E19
+   427 0001:001A1E24   428 0001:001A1E2F   429 0001:001A1E3A   430 0001:001A1E45
+   431 0001:001A1E50   432 0001:001A1E5B   433 0001:001A1E66   434 0001:001A1E71
+   435 0001:001A1E7C   436 0001:001A1E87   437 0001:001A1E97   440 0001:001A1E9C
+   441 0001:001A1EA2   443 0001:001A1EB8   445 0001:001A1ECA   447 0001:001A1EE6
+   456 0001:001A1EEC   457 0001:001A1F18   458 0001:001A1F5C   460 0001:001A1F64
+   462 0001:001A1F78   463 0001:001A1F7A   465 0001:001A1F7F   466 0001:001A1F87
+   467 0001:001A1F95   468 0001:001A1FA8   470 0001:001A1FB8   472 0001:001A1FD2
+   474 0001:001A1FDD   476 0001:001A1FE7   477 0001:001A1FF6   479 0001:001A2004
+   480 0001:001A2019   481 0001:001A202B   482 0001:001A2033   484 0001:001A2083
+   485 0001:001A208B   489 0001:001A2095   491 0001:001A2099   492 0001:001A20A9
+   494 0001:001A20B5   495 0001:001A20C4   499 0001:001A20D6   500 0001:001A20DB
+   502 0001:001A20E7   503 0001:001A20FE   502 0001:001A2139   505 0001:001A213C
+   506 0001:001A213F   512 0001:001A2188   513 0001:001A21A4   515 0001:001A21C4
+   516 0001:001A21D8   517 0001:001A21E6   518 0001:001A21FA   519 0001:001A220C
+   520 0001:001A221E   521 0001:001A2238   522 0001:001A2252   523 0001:001A226C
+   524 0001:001A2279   527 0001:001A228E   529 0001:001A2291   530 0001:001A22AB
+   531 0001:001A22AF   532 0001:001A22F0   534 0001:001A22F4   536 0001:001A231E
+   539 0001:001A233A   543 0001:001A2370   544 0001:001A2376   545 0001:001A239A
+   549 0001:001A23E0   550 0001:001A23E6   551 0001:001A240A   557 0001:001A244C
+   558 0001:001A246D   559 0001:001A247F   560 0001:001A2491   561 0001:001A24AD
+   562 0001:001A24C3   563 0001:001A24D9   564 0001:001A24EB   565 0001:001A24FA
+   567 0001:001A250D   568 0001:001A251C   570 0001:001A252F   571 0001:001A253E
+   572 0001:001A254F   573 0001:001A255E   575 0001:001A256E   576 0001:001A257D
+   578 0001:001A258A   579 0001:001A2596   580 0001:001A259E   581 0001:001A25A9
+   582 0001:001A25B3   583 0001:001A25BD   584 0001:001A25C7   585 0001:001A25D1
+   586 0001:001A25DC   587 0001:001A25E7   591 0001:001A2640   592 0001:001A2663
+   593 0001:001A266F   594 0001:001A2687   595 0001:001A26AB   596 0001:001A26C9
+   597 0001:001A26E5   605 0001:001A2710   606 0001:001A2730   607 0001:001A2750
+   608 0001:001A2754   609 0001:001A279A   610 0001:001A27B9   612 0001:001A27F0
+   613 0001:001A27F9   614 0001:001A2828   615 0001:001A2844   616 0001:001A2860
+   617 0001:001A287C   618 0001:001A2898   619 0001:001A28B4   621 0001:001A28BB
+   624 0001:001A28C4   625 0001:001A28C8   626 0001:001A28DB   628 0001:001A28DE
+   629 0001:001A28EB   630 0001:001A28F8   633 0001:001A2901   634 0001:001A2908
+   635 0001:001A2914   636 0001:001A2923   637 0001:001A292C   640 0001:001A2930
+   641 0001:001A2934   642 0001:001A2947   644 0001:001A294A   645 0001:001A2957
+   646 0001:001A2964   649 0001:001A296D   650 0001:001A2974   651 0001:001A2980
+   652 0001:001A298F   653 0001:001A2998   656 0001:001A299C   657 0001:001A29A4
+   658 0001:001A29B5   660 0001:001A29B8   661 0001:001A29C5   662 0001:001A29D2
+   665 0001:001A29DB   666 0001:001A29E2   667 0001:001A29EE   668 0001:001A29F7
+   669 0001:001A2A00   672 0001:001A2A08   673 0001:001A2A0C   674 0001:001A2A1F
+   676 0001:001A2A22   677 0001:001A2A2F   678 0001:001A2A3C   681 0001:001A2A45
+   682 0001:001A2A4C   683 0001:001A2A58   684 0001:001A2A67   685 0001:001A2A70
+   691 0001:001A2A74   692 0001:001A2A91   693 0001:001A2AA8   695 0001:001A2ABE
+   696 0001:001A2ACB   697 0001:001A2AD8   700 0001:001A2AE1   701 0001:001A2AE8
+   702 0001:001A2AFB   703 0001:001A2B13   705 0001:001A2B17   706 0001:001A2B46
+   708 0001:001A2B4E   709 0001:001A2B54   710 0001:001A2B73   713 0001:001A2B83
+   714 0001:001A2B9B   716 0001:001A2B9F   717 0001:001A2BCE   719 0001:001A2BD6
+   720 0001:001A2BDC   721 0001:001A2BFB   724 0001:001A2C0B   725 0001:001A2C13
+   726 0001:001A2C21   727 0001:001A2C2D   728 0001:001A2C3C   729 0001:001A2C45
+   732 0001:001A2C88   733 0001:001A2C8B   735 0001:001A2C94   736 0001:001A2C9B
+   738 0001:001A2CAD   739 0001:001A2CBF   741 0001:001A2CCE   743 0001:001A2CDE
+   745 0001:001A2CE6   752 0001:001A2CE8   753 0001:001A2D04   754 0001:001A2D06
+   756 0001:001A2D18   757 0001:001A2D25   759 0001:001A2D29   760 0001:001A2D34
+   762 0001:001A2D45   763 0001:001A2D7B   764 0001:001A2D99   765 0001:001A2DB4
+   766 0001:001A2DCF   767 0001:001A2DEA   768 0001:001A2E0A   770 0001:001A2E21
+   772 0001:001A2E36   773 0001:001A2E43   774 0001:001A2E4F   777 0001:001A2E5B
+   778 0001:001A2E6B   779 0001:001A2E7B   784 0001:001A2E87   785 0001:001A2E94
+   787 0001:001A2E9E   789 0001:001A2EF7   791 0001:001A2F35   793 0001:001A2F3D
+   794 0001:001A2F45   798 0001:001A2F52   799 0001:001A2F5C   800 0001:001A2F6C
+   801 0001:001A2F7C   802 0001:001A2F86   803 0001:001A2F9D   804 0001:001A2FAD
+   805 0001:001A2FC1   806 0001:001A2FCF   808 0001:001A2FF0   812 0001:001A300C
+   820 0001:001A30A0   821 0001:001A30BF   822 0001:001A30D3   823 0001:001A30E1
+   824 0001:001A30F5   826 0001:001A3103   827 0001:001A3122   829 0001:001A3126
+   831 0001:001A313C   832 0001:001A3153   833 0001:001A316E   829 0001:001A3171
+   837 0001:001A3181   839 0001:001A319D   840 0001:001A31A5   851 0001:001A31CC
+   852 0001:001A31F7   853 0001:001A3212   854 0001:001A3245   856 0001:001A3257
+   857 0001:001A328A   859 0001:001A329C   860 0001:001A32B0   861 0001:001A32C2
+   863 0001:001A32D4   864 0001:001A32DE   865 0001:001A32EC   866 0001:001A32FE
+   867 0001:001A3304   869 0001:001A333E   871 0001:001A335D   874 0001:001A336F
+   877 0001:001A3447   878 0001:001A345B   879 0001:001A3485   880 0001:001A34AF
+   882 0001:001A34B9   883 0001:001A34E0   885 0001:001A34E8   886 0001:001A3504
+   888 0001:001A350C   889 0001:001A3518   890 0001:001A3536   891 0001:001A354C
+   893 0001:001A355B   895 0001:001A3572   897 0001:001A3581   899 0001:001A3598
+   901 0001:001A35A7   905 0001:001A35BE   907 0001:001A35D7   908 0001:001A35DC
+   909 0001:001A35E3   911 0001:001A35ED   913 0001:001A3611   914 0001:001A3641
+   915 0001:001A3645   916 0001:001A3647   917 0001:001A364C   918 0001:001A364F
+   911 0001:001A3652   919 0001:001A3657   922 0001:001A3680   923 0001:001A3682
+   924 0001:001A36A5   925 0001:001A36C9   926 0001:001A36E7   927 0001:001A3706
+   928 0001:001A372F   929 0001:001A3758   938 0001:001A3A64   939 0001:001A3A8D
+   941 0001:001A3AA8   942 0001:001A3AB0   943 0001:001A3AE9   945 0001:001A3AF3
+   947 0001:001A3B0F   948 0001:001A3B27   949 0001:001A3B3F   951 0001:001A3B72
+   952 0001:001A3B77   955 0001:001A3B91   956 0001:001A3B93   957 0001:001A3B9C
+   958 0001:001A3BA5   945 0001:001A3BA8   961 0001:001A3BB1   962 0001:001A3BBA
+   964 0001:001A3BC2   965 0001:001A3BCF   973 0001:001A3C20   974 0001:001A3C4F
+   975 0001:001A3C63   977 0001:001A3C6D   978 0001:001A3C7C   979 0001:001A3C8A
+   980 0001:001A3C9B   982 0001:001A3CB1   983 0001:001A3CD3   984 0001:001A3CE2
+   986 0001:001A3CEB   987 0001:001A3CF2   988 0001:001A3D49   989 0001:001A3D76
+   990 0001:001A3D7C   991 0001:001A3DAE   992 0001:001A3DB9   980 0001:001A3DBA
+   993 0001:001A3DC3   995 0001:001A3DE6   996 0001:001A3DEE  1000 0001:001A3DFA
+  1001 0001:001A3E0E  1008 0001:001A3E60  1009 0001:001A3E7C  1010 0001:001A3EC9
+  1012 0001:001A3ECD  1013 0001:001A3EDD  1014 0001:001A3F02  1015 0001:001A3F12
+  1016 0001:001A3F1F  1018 0001:001A3F26  1021 0001:001A3F50  1022 0001:001A3F66
+  1023 0001:001A3F78  1025 0001:001A3F81  1026 0001:001A3F8B  1028 0001:001A3F9A
+  1029 0001:001A3FC9  1030 0001:001A3FD8  1031 0001:001A3FDF  1038 0001:001A4000
+  1039 0001:001A4004  1040 0001:001A400F  1042 0001:001A4016  1043 0001:001A401B
+  1044 0001:001A4024  1045 0001:001A402D  1049 0001:001A4030  1050 0001:001A4035
+  1054 0001:001A4038  1055 0001:001A403B  1056 0001:001A4040  1063 0001:001A4044
+  1064 0001:001A4062  1066 0001:001A406A  1067 0001:001A409A  1070 0001:001A40AE
+  1071 0001:001A40B1  1079 0001:001A40DC  1080 0001:001A4106  1081 0001:001A4126
+  1083 0001:001A412E  1084 0001:001A4147  1086 0001:001A4151  1087 0001:001A415E
+  1088 0001:001A4171  1089 0001:001A41A8  1090 0001:001A41B5  1091 0001:001A41BC
+  1092 0001:001A41D3  1093 0001:001A41F1  1094 0001:001A4207  1096 0001:001A4216
+  1098 0001:001A422C  1100 0001:001A423B  1102 0001:001A4251  1104 0001:001A4260
+  1108 0001:001A4276  1112 0001:001A4584  1113 0001:001A458E  1117 0001:001A459C
+  1118 0001:001A45A6  1122 0001:001A45B4  1123 0001:001A45BE  1128 0001:001A45CC
+  1129 0001:001A45D7  1131 0001:001A45E9  1132 0001:001A45EF  1133 0001:001A45FE
+  1141 0001:001A4600  1142 0001:001A460B  1144 0001:001A461D  1145 0001:001A4623
+  1146 0001:001A4632  1155 0001:001A4634  1156 0001:001A4662  1157 0001:001A4670
+  1159 0001:001A4687  1160 0001:001A468B  1161 0001:001A468F  1165 0001:001A4695
+  1166 0001:001A4699  1167 0001:001A469D  1171 0001:001A46A3  1172 0001:001A46A7
+  1173 0001:001A46AB  1177 0001:001A46B1  1178 0001:001A46B5  1179 0001:001A46B9
+  1182 0001:001A46BD  1183 0001:001A46C1  1185 0001:001A46CB  1187 0001:001A46E5
+  1188 0001:001A46F3  1192 0001:001A4706  1193 0001:001A4724  1197 0001:001A4744
+  1198 0001:001A4757  1202 0001:001A476C  1203 0001:001A477F  1207 0001:001A4792
+  1208 0001:001A479F  1209 0001:001A47A4  1183 0001:001A47A5  1210 0001:001A47AE
+  1211 0001:001A47BA  1212 0001:001A47BC  1221 0001:001A47F4  1222 0001:001A4822
+  1224 0001:001A4833  1225 0001:001A4837  1229 0001:001A483D  1230 0001:001A4841
+  1233 0001:001A4845  1234 0001:001A4849  1236 0001:001A4853  1238 0001:001A485E
+  1239 0001:001A486C  1243 0001:001A487C  1244 0001:001A489A  1247 0001:001A48B8
+  1248 0001:001A48C5  1249 0001:001A48CA  1234 0001:001A48CB  1250 0001:001A48D0
+  1251 0001:001A48DC  1252 0001:001A48DE  1259 0001:001A4918  1260 0001:001A4932
+  1262 0001:001A4945  1264 0001:001A494E  1265 0001:001A4958  1267 0001:001A4967
+  1269 0001:001A497F  1270 0001:001A49A1  1271 0001:001A49AE  1272 0001:001A49C6
+  1273 0001:001A49D2  1274 0001:001A49E9  1275 0001:001A49F8  1276 0001:001A4A01
+  1277 0001:001A4A10  1280 0001:001A4A17  1287 0001:001A4A68  1288 0001:001A4A82
+  1290 0001:001A4A95  1292 0001:001A4A9E  1293 0001:001A4AA8  1295 0001:001A4AB7
+  1297 0001:001A4AE3  1298 0001:001A4B05  1299 0001:001A4B12  1300 0001:001A4B2A
+  1301 0001:001A4B36  1302 0001:001A4B4D  1303 0001:001A4B5C  1304 0001:001A4B65
+  1305 0001:001A4B74  1308 0001:001A4B7B  1316 0001:001A4BCC  1317 0001:001A4BF3
+  1318 0001:001A4C13  1320 0001:001A4C17  1321 0001:001A4C26  1323 0001:001A4C2C
+  1324 0001:001A4C39  1326 0001:001A4C59  1327 0001:001A4C6C  1328 0001:001A4C79
+  1329 0001:001A4C80  1333 0001:001A4C8D  1342 0001:001A4CBC  1343 0001:001A4CDF
+  1345 0001:001A4CF2  1346 0001:001A4D10  1348 0001:001A4D23  1349 0001:001A4D31
+  1351 0001:001A4D36  1352 0001:001A4D4B  1355 0001:001A4D55  1356 0001:001A4D57
+  1358 0001:001A4D78  1359 0001:001A4DA3  1360 0001:001A4DA7  1361 0001:001A4DA9
+  1356 0001:001A4DAC  1362 0001:001A4DB1  1363 0001:001A4DB4  1365 0001:001A4DBC
+  1366 0001:001A4DC3  1369 0001:001A4DE2  1371 0001:001A4DEA  1372 0001:001A4E0A
+  1373 0001:001A4E1A  1375 0001:001A4E22  1376 0001:001A4E5E  1377 0001:001A4E65
+  1378 0001:001A4E6C  1379 0001:001A4E8D  1381 0001:001A4EBE  1382 0001:001A4EDB
+  1383 0001:001A4EDD  1378 0001:001A4EE0  1385 0001:001A4EE5  1386 0001:001A4EEE
+  1389 0001:001A4F22  1395 0001:001A4FD4  1396 0001:001A5001  1397 0001:001A5005
+  1398 0001:001A5023  1400 0001:001A5054  1401 0001:001A5058  1402 0001:001A505A
+  1397 0001:001A505B  1403 0001:001A505E  1408 0001:001A5090  1409 0001:001A50AD
+  1410 0001:001A50BF  1412 0001:001A50DA  1413 0001:001A50DD  1414 0001:001A50EB
+  1415 0001:001A50FB  1418 0001:001A5109  1425 0001:001A5130  1426 0001:001A514E
+  1428 0001:001A5161  1429 0001:001A5181  1431 0001:001A5189  1432 0001:001A51A1
+  1433 0001:001A51B4  1435 0001:001A51BC  1436 0001:001A51C5  1437 0001:001A51CC
+  1438 0001:001A51D3  1440 0001:001A51E8  1441 0001:001A51EE  1442 0001:001A51F1
+  1443 0001:001A520C  1445 0001:001A5229  1446 0001:001A5245  1447 0001:001A5247
+  1442 0001:001A5248  1449 0001:001A524B  1450 0001:001A5254  1453 0001:001A5288
+  1454 0001:001A52AA  1456 0001:001A52B8  1459 0001:001A531C  1460 0001:001A5320
+  1461 0001:001A532F  1462 0001:001A533E  1465 0001:001A5344  1466 0001:001A5347
+  1467 0001:001A5350  1468 0001:001A535D  1472 0001:001A5360  1473 0001:001A5367
+  1483 0001:001A5368  1484 0001:001A538E  1485 0001:001A5392  1488 0001:001A5399
+  1489 0001:001A539D  1491 0001:001A53E8  1492 0001:001A53FB  1494 0001:001A5405
+  1495 0001:001A5409  1496 0001:001A5432  1498 0001:001A543B  1500 0001:001A5452
+  1501 0001:001A5459  1503 0001:001A545B  1496 0001:001A5461  1504 0001:001A5467
+  1506 0001:001A5471  1507 0001:001A54AD  1508 0001:001A54C0  1509 0001:001A54C8
+  1511 0001:001A54D8  1513 0001:001A54F2  1515 0001:001A54FD  1516 0001:001A5515
+  1515 0001:001A5549  1517 0001:001A554E  1518 0001:001A555C  1519 0001:001A5564
+  1520 0001:001A5568  1521 0001:001A5572  1525 0001:001A5576  1526 0001:001A557C
+  1528 0001:001A558E  1486 0001:001A558F  1530 0001:001A55A5  1531 0001:001A55AE
+  1532 0001:001A55B6  1535 0001:001A55F8  1536 0001:001A55FC  1537 0001:001A560B
+  1538 0001:001A561A  1542 0001:001A5620  1543 0001:001A5623  1544 0001:001A562A
+  1554 0001:001A5630  1555 0001:001A5657  1557 0001:001A567D  1558 0001:001A5687
+  1559 0001:001A5695  1560 0001:001A56C2  1561 0001:001A56E0  1562 0001:001A56FE
+  1563 0001:001A571C  1564 0001:001A573A  1565 0001:001A5746  1566 0001:001A574F
+  1567 0001:001A576E  1569 0001:001A578B  1570 0001:001A57BA  1571 0001:001A57CE
+  1572 0001:001A57E2  1573 0001:001A57F6  1574 0001:001A580A  1575 0001:001A581E
+  1577 0001:001A5830  1579 0001:001A5835  1580 0001:001A5846  1581 0001:001A5857
+  1583 0001:001A586E  1585 0001:001A5878  1587 0001:001A5883  1588 0001:001A58A1
+  1590 0001:001A58D4  1591 0001:001A58F3  1592 0001:001A58F5  1587 0001:001A58F6
+  1594 0001:001A58F9  1596 0001:001A591B  1599 0001:001A5981  1600 0001:001A59A0
+  1602 0001:001A59A2  1594 0001:001A59A3  1604 0001:001A59B7  1607 0001:001A59C9
+  1610 0001:001A5A04  1611 0001:001A5A2C  1612 0001:001A5A56  1628 0001:001A5A80
+  1629 0001:001A5AAF  1630 0001:001A5AB8  1631 0001:001A5AC1  1633 0001:001A5AC9
+  1634 0001:001A5AD3  1635 0001:001A5AF7  1638 0001:001A5B0D  1640 0001:001A5B3B
+  1641 0001:001A5B4D  1642 0001:001A5B53  1643 0001:001A5BB5  1644 0001:001A5BCA
+  1647 0001:001A5BD7  1631 0001:001A5BE0  1649 0001:001A5BE8  1651 0001:001A5C20
+  1652 0001:001A5C43  1653 0001:001A5C65  1654 0001:001A5C73  1655 0001:001A5C8A
+  1656 0001:001A5C98  1657 0001:001A5CA4  1658 0001:001A5CB1  1659 0001:001A5CC5
+  1660 0001:001A5CD3  1661 0001:001A5CE0  1662 0001:001A5CEA  1663 0001:001A5CFC
+  1664 0001:001A5D0B  1665 0001:001A5D19  1666 0001:001A5D28  1667 0001:001A5D36
+  1668 0001:001A5D3E  1670 0001:001A5D61  1671 0001:001A5D87  1673 0001:001A5D94
+  1674 0001:001A5D9F  1675 0001:001A5DA7  1677 0001:001A5DB2  1678 0001:001A5DD8
+  1679 0001:001A5DFE  1680 0001:001A5E11  1682 0001:001A5E20  1683 0001:001A5E5B
+  1687 0001:001A5E6A  1689 0001:001A5E72  1690 0001:001A5E95  1691 0001:001A5F07
+  1692 0001:001A5F45  1693 0001:001A5F54  1694 0001:001A5F6E  1697 0001:001A5F7B
+  1699 0001:001A5FB9  1700 0001:001A5FC6  1701 0001:001A5FDA  1704 0001:001A5FE7
+  1668 0001:001A5FE8  1705 0001:001A5FF1  1706 0001:001A5FFC  1707 0001:001A6008
+  1708 0001:001A6015  1710 0001:001A6027  1712 0001:001A602F  1713 0001:001A603A
+  1714 0001:001A6042  1715 0001:001A604C  1716 0001:001A605A  1718 0001:001A6071
+  1719 0001:001A6091  1721 0001:001A60C7  1722 0001:001A60DD  1724 0001:001A60E5
+  1726 0001:001A6105  1727 0001:001A610A  1728 0001:001A615B  1731 0001:001A615F
+  1722 0001:001A6168  1735 0001:001A6172  1736 0001:001A6187  1737 0001:001A619F
+  1716 0001:001A61A0  1739 0001:001A61B6  1742 0001:001A61D5  1745 0001:001A61E5
+  1746 0001:001A61F4  1748 0001:001A620B  1750 0001:001A6221  1751 0001:001A622E
+  1752 0001:001A624B  1753 0001:001A626F  1755 0001:001A6293  1746 0001:001A6294
+  1757 0001:001A62AA  1760 0001:001A62C7  1762 0001:001A62E3  1764 0001:001A62FB
+  1767 0001:001A6318  1769 0001:001A633A  1773 0001:001A63DC  1774 0001:001A63E5
+  1775 0001:001A63FA  1776 0001:001A6409  1780 0001:001A6410  1781 0001:001A641A
+  1782 0001:001A641D  1786 0001:001A6420  1787 0001:001A6423  1788 0001:001A6432
+  1789 0001:001A643B  1797 0001:001A6440  1798 0001:001A647D  1799 0001:001A648A
+  1801 0001:001A64A0  1802 0001:001A64D5  1803 0001:001A64EF  1804 0001:001A64F5
+  1805 0001:001A6541  1799 0001:001A6542  1806 0001:001A654B  1811 0001:001A6584
+  1812 0001:001A6587  1814 0001:001A6592  1817 0001:001A65A7  1819 0001:001A65BC
+  1823 0001:001A65D3  1825 0001:001A65D7  1828 0001:001A65EC  1830 0001:001A6601
+  1834 0001:001A661B  1836 0001:001A661F  1839 0001:001A6634  1841 0001:001A6649
+  1845 0001:001A6663  1847 0001:001A6667  1849 0001:001A667C  1851 0001:001A6691
+  1855 0001:001A66A8  1857 0001:001A66AC  1860 0001:001A66C1  1864 0001:001A66D8
+  1867 0001:001A66ED  1868 0001:001A6702  1872 0001:001A6717  1875 0001:001A717C
+  1876 0001:001A717F  1877 0001:001A718F  1878 0001:001A719D  1883 0001:001A71B2
+  1884 0001:001A71D1  1885 0001:001A71E8  1888 0001:001A72F4  1889 0001:001A72F7
+  1890 0001:001A730D  1891 0001:001A7314  1894 0001:001A7318  1895 0001:001A734E
+  1896 0001:001A735C  1897 0001:001A7375  1898 0001:001A7399  1900 0001:001A73C0
+  1901 0001:001A73D6
+
+Line numbers for fRemCoverSheet(fRemCoverSheet.pas) segment .itext
+
+  1903 0002:000011D8
+
+Line numbers for fNoteST(fNoteST.pas) segment .text
+
+    54 0001:001A771C    55 0001:001A773E    56 0001:001A7755    59 0001:001A7763
+    60 0001:001A7773    61 0001:001A7780    62 0001:001A778B    63 0001:001A7796
+    66 0001:001A77A3    67 0001:001A77AD    68 0001:001A77B5    69 0001:001A77C6
+    70 0001:001A77CE    71 0001:001A77D9    74 0001:001A77F0    75 0001:001A77FC
+    79 0001:001A781A    81 0001:001A782A    85 0001:001A7850    86 0001:001A7857
+    87 0001:001A785C    90 0001:001A7860    91 0001:001A7878    93 0001:001A788C
+    94 0001:001A789F    96 0001:001A78A1    97 0001:001A78A8    98 0001:001A78C4
+    99 0001:001A78CB   103 0001:001A7944   104 0001:001A7949   108 0001:001A794C
+   109 0001:001A7951   112 0001:001A7954   113 0001:001A7957   114 0001:001A795E
+   115 0001:001A7972   117 0001:001A79A2
+
+Line numbers for rOptions(Options\rOptions.pas) segment .text
+
+    84 0001:001A7974    85 0001:001A7977    86 0001:001A798F    87 0001:001A79A1
+    88 0001:001A79AE    91 0001:001A79CC    92 0001:001A79CF    93 0001:001A79E7
+    94 0001:001A79F9    95 0001:001A7A06    98 0001:001A7A24    99 0001:001A7A2A
+   100 0001:001A7A46   103 0001:001A7A64   104 0001:001A7A80   105 0001:001A7AA6
+   124 0001:001A7AE0   125 0001:001A7B10   126 0001:001A7B2D   127 0001:001A7B50
+   128 0001:001A7B6D   132 0001:001A7BC8   133 0001:001A7BCB   134 0001:001A7BE3
+   137 0001:001A7C00   138 0001:001A7C03   139 0001:001A7C19   142 0001:001A7C34
+   143 0001:001A7C37   144 0001:001A7C4D   147 0001:001A7C68   148 0001:001A7C87
+   149 0001:001A7CA0   154 0001:001A7CDC   155 0001:001A7CDF   156 0001:001A7CF7
+   157 0001:001A7D09   158 0001:001A7D16   161 0001:001A7D34   162 0001:001A7D3A
+   163 0001:001A7D56   166 0001:001A7D74   167 0001:001A7D93   168 0001:001A7DAC
+   171 0001:001A7DE8   172 0001:001A7DF1   173 0001:001A7E13   174 0001:001A7E25
+   175 0001:001A7E32   178 0001:001A7E50   179 0001:001A7E56   180 0001:001A7E72
+   183 0001:001A7E90   184 0001:001A7E96   185 0001:001A7EAF   190 0001:001A7ED0
+   191 0001:001A7EEA   192 0001:001A7F06   193 0001:001A7F19   194 0001:001A7F1B
+   197 0001:001A7F64   198 0001:001A7F67   199 0001:001A7F7D   202 0001:001A7F98
+   203 0001:001A7F9B   204 0001:001A7FB3   205 0001:001A7FC5   206 0001:001A7FD2
+   209 0001:001A7FF0   215 0001:001A7FFC   217 0001:001A8027   218 0001:001A8034
+   221 0001:001A805C   222 0001:001A805F   224 0001:001A8075   225 0001:001A8082
+   228 0001:001A80A0   229 0001:001A80BC   230 0001:001A80E3   233 0001:001A8120
+   234 0001:001A8123   235 0001:001A8150   242 0001:001A816C   243 0001:001A818A
+   244 0001:001A81A6   245 0001:001A81C5   246 0001:001A81E4   251 0001:001A822C
+   252 0001:001A824A   253 0001:001A8266   254 0001:001A8287   255 0001:001A82A8
+   260 0001:001A82F0   261 0001:001A8310   262 0001:001A832C   263 0001:001A833F
+   264 0001:001A8352   265 0001:001A8371   266 0001:001A8390   271 0001:001A83E4
+   272 0001:001A8404   273 0001:001A8420   274 0001:001A8433   275 0001:001A8446
+   276 0001:001A8465   277 0001:001A8484   282 0001:001A84D8   283 0001:001A8500
+   284 0001:001A8508   285 0001:001A852A   286 0001:001A854C   287 0001:001A856E
+   288 0001:001A8591   289 0001:001A85AA   327 0001:001A8600   328 0001:001A8606
+   329 0001:001A861E   330 0001:001A8630   331 0001:001A8644   334 0001:001A8660
+   335 0001:001A8663   336 0001:001A8679   341 0001:001A8694   342 0001:001A86AE
+   343 0001:001A86D9   348 0001:001A8718   349 0001:001A8738   350 0001:001A8754
+   351 0001:001A8767   352 0001:001A877A   353 0001:001A8799   354 0001:001A87B8
+   359 0001:001A8808   360 0001:001A8833   361 0001:001A884F   362 0001:001A886E
+   363 0001:001A888D   364 0001:001A88AC   365 0001:001A88CE   366 0001:001A88F0
+   367 0001:001A8912   368 0001:001A8934   373 0001:001A8980   374 0001:001A89A8
+   375 0001:001A89C4   376 0001:001A89E3   377 0001:001A8A02   378 0001:001A8A21
+   379 0001:001A8A43   384 0001:001A8A90   385 0001:001A8ABB   386 0001:001A8AC3
+   387 0001:001A8AE5   388 0001:001A8B07   389 0001:001A8B29   390 0001:001A8B4C
+   391 0001:001A8B6F   392 0001:001A8B92   393 0001:001A8BB5   394 0001:001A8BD8
+   395 0001:001A8BFB   396 0001:001A8C14   401 0001:001A8C64   402 0001:001A8C8F
+   403 0001:001A8C97   404 0001:001A8CB9   405 0001:001A8CDD   406 0001:001A8CFF
+   407 0001:001A8D22   408 0001:001A8D45   409 0001:001A8D68   410 0001:001A8D81
+   415 0001:001A8DD8   416 0001:001A8DDE   417 0001:001A8DF6   418 0001:001A8E08
+   419 0001:001A8E1C   422 0001:001A8E38   423 0001:001A8E3E   424 0001:001A8E56
+   425 0001:001A8E68   426 0001:001A8E7C   429 0001:001A8E98   430 0001:001A8E9E
+   431 0001:001A8EB6   432 0001:001A8EC8   433 0001:001A8EDC   436 0001:001A8EF8
+   437 0001:001A8EFE   438 0001:001A8F16   439 0001:001A8F28   440 0001:001A8F3C
+   443 0001:001A8F58   444 0001:001A8F77   445 0001:001A8F90   448 0001:001A8FCC
+   449 0001:001A8FF6   450 0001:001A901A   451 0001:001A902E   454 0001:001A9074
+   455 0001:001A9077   456 0001:001A90A4   459 0001:001A90C0   460 0001:001A90C6
+   461 0001:001A90DE   462 0001:001A90F0   463 0001:001A9104   466 0001:001A9120
+   467 0001:001A9123   468 0001:001A9139   471 0001:001A9154   472 0001:001A9157
+   473 0001:001A916D   478 0001:001A9188   479 0001:001A918B   480 0001:001A91A3
+   481 0001:001A91B5   482 0001:001A91C2   485 0001:001A91E0   486 0001:001A91E3
+   487 0001:001A91F9   495 0001:001A9214   496 0001:001A923C   497 0001:001A9258
+   499 0001:001A926C   500 0001:001A927F   501 0001:001A9291   502 0001:001A92A4
+   503 0001:001A92B6   504 0001:001A92C2   505 0001:001A92CE   506 0001:001A92F3
+   509 0001:001A933C   510 0001:001A9355   511 0001:001A9371   514 0001:001A93AC
+   515 0001:001A93C5   516 0001:001A93E1   519 0001:001A941C   520 0001:001A9440
+   521 0001:001A945D   524 0001:001A9498   525 0001:001A94C7   526 0001:001A94F1
+   532 0001:001A9530   533 0001:001A9558   534 0001:001A9574   536 0001:001A9584
+   537 0001:001A9591   539 0001:001A9596   540 0001:001A95A9   541 0001:001A95BB
+   542 0001:001A95CE   543 0001:001A95E0   544 0001:001A95EC   545 0001:001A95F8
+   546 0001:001A961D   552 0001:001A967C   553 0001:001A96A7   554 0001:001A96C3
+   555 0001:001A96D6   556 0001:001A96F0   557 0001:001A9702   558 0001:001A9715
+   559 0001:001A972F   560 0001:001A9741   561 0001:001A974A   562 0001:001A975A
+   563 0001:001A9772   564 0001:001A9782   565 0001:001A979A   568 0001:001A97F4
+   569 0001:001A9818   570 0001:001A9835   575 0001:001A9874   576 0001:001A9895
+   577 0001:001A9899   579 0001:001A98B7   580 0001:001A98D3   581 0001:001A98E6
+   582 0001:001A98F9   583 0001:001A9905   584 0001:001A9911   589 0001:001A9974
+   590 0001:001A99A3   591 0001:001A99AB   592 0001:001A99C3   593 0001:001A99CE
+   594 0001:001A99E7   597 0001:001A9A38   598 0001:001A9A54   599 0001:001A9A7A
+   601 0001:001A9AE2
+
+Line numbers for fVisit(fVisit.pas) segment .text
+
+   262 0001:00000000
+
+Line numbers for rMeds(rMeds.pas) segment .text
+
+    45 0001:001A9B50    46 0001:001A9B59    48 0001:001A9B5F    49 0001:001A9B75
+    48 0001:001A9B97    50 0001:001A9B9C    54 0001:001A9BA4    57 0001:001A9BA8
+    58 0001:001A9BCC    59 0001:001A9C04    60 0001:001A9C14    63 0001:001A9C58
+    64 0001:001A9C77    65 0001:001A9CA4    66 0001:001A9CB4    74 0001:001A9CF0
+    75 0001:001A9D0C    76 0001:001A9D11    77 0001:001A9D4E    78 0001:001A9D8B
+    83 0001:001A9E68    86 0001:001A9E93    87 0001:001A9EB4    88 0001:001A9ED5
+    89 0001:001A9EEE    90 0001:001A9F10    91 0001:001A9F3C    92 0001:001A9F5D
+    94 0001:001A9FC7    96 0001:001A9FD0    97 0001:001A9FD7    98 0001:001AA000
+    99 0001:001AA009   100 0001:001AA01F   101 0001:001AA048   102 0001:001AA050
+   103 0001:001AA072   106 0001:001AA0A6   164 0001:001AA114   166 0001:001AA14C
+   167 0001:001AA15A   168 0001:001AA16B   169 0001:001AA17A   170 0001:001AA189
+   171 0001:001AA191   172 0001:001AA199   173 0001:001AA1A1   174 0001:001AA1E9
+   175 0001:001AA1EE   176 0001:001AA214   179 0001:001AA23F   180 0001:001AA256
+   181 0001:001AA26A   182 0001:001AA27F   185 0001:001AA28C   186 0001:001AA2C1
+   187 0001:001AA338   183 0001:001AA34C   189 0001:001AA38E   190 0001:001AA39D
+   191 0001:001AA3AB   192 0001:001AA3AE   193 0001:001AA3B7   195 0001:001AA3C0
+   201 0001:001AA3CD   202 0001:001AA3D6   204 0001:001AA3E3   177 0001:001AA3EE
+   211 0001:001AA408   212 0001:001AA41E   211 0001:001AA436   217 0001:001AA43B
+   218 0001:001AA449   219 0001:001AA457   223 0001:001AA4C0   224 0001:001AA4C9
+   225 0001:001AA4ED   229 0001:001AA50C   230 0001:001AA515   231 0001:001AA531
+   235 0001:001AA550   236 0001:001AA57A   237 0001:001AA5D3   240 0001:001AA614
+   241 0001:001AA638   242 0001:001AA666   245 0001:001AA6B8   246 0001:001AA6D4
+   247 0001:001AA716   249 0001:001AA78E
+
+Line numbers for rODMeds(Orders\rODMeds.pas) segment .text
+
+    75 0001:001AA7B8    76 0001:001AA7D5    77 0001:001AA7DF    78 0001:001AA826
+    81 0001:001AA870    82 0001:001AA88F    83 0001:001AA8D6    86 0001:001AA920
+    87 0001:001AA946    88 0001:001AA95C    89 0001:001AA992    90 0001:001AA9C8
+    95 0001:001AAA08    96 0001:001AAA2B    97 0001:001AAA5D    99 0001:001AAA77
+   101 0001:001AAABA   106 0001:001AAAF4   107 0001:001AAB22   108 0001:001AAB25
+   110 0001:001AAB2F   111 0001:001AAB50   112 0001:001AABA6   114 0001:001AABDB
+   115 0001:001AAC1C   116 0001:001AAC3C   119 0001:001AACA4   120 0001:001AACC3
+   121 0001:001AACE7   124 0001:001AAD24   125 0001:001AAD4A   126 0001:001AAD60
+   127 0001:001AAD96   128 0001:001AADCC   133 0001:001AAE0C   134 0001:001AAE2D
+   135 0001:001AAE58   136 0001:001AAE74   135 0001:001AAE97   137 0001:001AAE9A
+   157 0001:001AAED4   158 0001:001AAEDA   159 0001:001AAEE4   160 0001:001AAF08
+   161 0001:001AAF1C   166 0001:001AAF3C   167 0001:001AAF48   168 0001:001AAF54
+   169 0001:001AAF80   170 0001:001AAF94   176 0001:001AAFB4   177 0001:001AAFE7
+   178 0001:001AB037   179 0001:001AB054   180 0001:001AB075   181 0001:001AB093
+   192 0001:001AB0E8   194 0001:001AB0F1   195 0001:001AB127   196 0001:001AB13B
+   197 0001:001AB150   198 0001:001AB15C   201 0001:001AB18C   202 0001:001AB18F
+   203 0001:001AB19E   204 0001:001AB1B2   207 0001:001AB1D0   208 0001:001AB1D6
+   209 0001:001AB204   210 0001:001AB218   212 0001:001AB23C   214 0001:001AB242
+   215 0001:001AB278   216 0001:001AB28C   219 0001:001AB2AC   220 0001:001AB2CE
+   222 0001:001AB331   225 0001:001AB374   226 0001:001AB396   228 0001:001AB3F2
+   229 0001:001AB401   237 0001:001AB444   238 0001:001AB466   239 0001:001AB4AE
+   240 0001:001AB4BD   243 0001:001AB500   244 0001:001AB522   245 0001:001AB575
+   246 0001:001AB584   249 0001:001AB5C4   250 0001:001AB5E6   251 0001:001AB623
+   255 0001:001AB670   256 0001:001AB673   257 0001:001AB6B3   258 0001:001AB6C0
+   262 0001:001AB6DC   263 0001:001AB6DF   264 0001:001AB71F   265 0001:001AB72C
+   272 0001:001AB748   273 0001:001AB752   274 0001:001AB760   275 0001:001AB76A
+   276 0001:001AB77A   277 0001:001AB7C1   278 0001:001AB7CE   281 0001:001AB7F0
+   282 0001:001AB7F9   283 0001:001AB813   286 0001:001AB830   287 0001:001AB84D
+   288 0001:001AB84F   289 0001:001AB878   290 0001:001AB87A   293 0001:001AB8C8
+   294 0001:001AB8EF   295 0001:001AB916   301 0001:001AB958   302 0001:001AB999
+   303 0001:001AB99D   304 0001:001AB9A5   305 0001:001AB9AC   306 0001:001AB9B3
+   307 0001:001AB9BA   308 0001:001AB9C1   309 0001:001ABA06   311 0001:001ABA26
+   313 0001:001ABA2A   314 0001:001ABA54   316 0001:001ABA94   317 0001:001ABAC7
+   309 0001:001ABAC8   318 0001:001ABACF   320 0001:001ABAD5   321 0001:001ABAE0
+   323 0001:001ABAE5   325 0001:001ABAF9   326 0001:001ABAFD   328 0001:001ABB14
+   329 0001:001ABB1B   331 0001:001ABB28   332 0001:001ABB38   333 0001:001ABB54
+   334 0001:001ABB7E   332 0001:001ABBB3   336 0001:001ABBB6   338 0001:001ABBD0
+   340 0001:001ABBD2   341 0001:001ABBDF   346 0001:001ABC8C   347 0001:001ABCA9
+   349 0001:001ABCB6   350 0001:001ABCC6   351 0001:001ABCE2   352 0001:001ABD0C
+   350 0001:001ABD41   354 0001:001ABD44   355 0001:001ABD52   360 0001:001ABDA4
+   361 0001:001ABDF0   362 0001:001ABDF2   363 0001:001ABDFF   364 0001:001ABE0F
+   366 0001:001ABE1D   367 0001:001ABE49   368 0001:001ABE4B   369 0001:001ABE52
+   371 0001:001ABE57   372 0001:001ABE6C   374 0001:001ABE7A   375 0001:001ABEA6
+   376 0001:001ABEA8   377 0001:001ABEAF   379 0001:001ABEB1   380 0001:001ABEC0
+   382 0001:001ABEC5   383 0001:001ABEF1   384 0001:001ABEF3   387 0001:001ABEFA
+   424 0001:001ABFCC   425 0001:001ABFEF   426 0001:001ABFF6   427 0001:001ABFFF
+   429 0001:001AC00D   431 0001:001AC026   433 0001:001AC035   434 0001:001AC061
+   437 0001:001AC07A   452 0001:001AC130   453 0001:001AC137   456 0001:001AC138
+   457 0001:001AC15F   458 0001:001AC198   462 0001:001AC1EC   463 0001:001AC1F8
+   464 0001:001AC1FA
+
+Line numbers for rODMeds(Orders\rODMeds.pas) segment .itext
+
+   471 0002:000011E0
+
+Line numbers for fActivateDeactivate(fActivateDeactivate.pas) segment .text
+
+    47 0001:001AC47C    50 0001:001AC4A6    51 0001:001AC4B3    52 0001:001AC4D0
+    53 0001:001AC4EF    54 0001:001AC509    55 0001:001AC523    56 0001:001AC53D
+    57 0001:001AC54C    58 0001:001AC55C    60 0001:001AC56B    61 0001:001AC572
+    62 0001:001AC57C    63 0001:001AC583    71 0001:001AC744    73 0001:001AC765
+    74 0001:001AC774    75 0001:001AC781    77 0001:001AC7B8    78 0001:001AC7C8
+    79 0001:001AC7DC    81 0001:001AC7DF    82 0001:001AC7F0    83 0001:001AC809
+    84 0001:001AC822    86 0001:001AC83C    75 0001:001AC83D    87 0001:001AC844
+    96 0001:001AC88C    98 0001:001AC8B9    99 0001:001AC8C8   100 0001:001AC8D5
+   101 0001:001AC8E4   103 0001:001AC912   104 0001:001AC922   105 0001:001AC92A
+   106 0001:001AC93E   108 0001:001AC948   109 0001:001AC969   111 0001:001AC978
+   112 0001:001AC9A4   115 0001:001AC9B2   116 0001:001AC9CB   118 0001:001AC9E6
+   101 0001:001AC9E7   119 0001:001AC9EE   124 0001:001ACA44   125 0001:001ACA63
+   126 0001:001ACA7B   127 0001:001ACA97   126 0001:001ACABC   128 0001:001ACABF
+   131 0001:001ACAFC   132 0001:001ACB1F   133 0001:001ACB38   134 0001:001ACB42
+   135 0001:001ACB57   136 0001:001ACB6C   137 0001:001ACB81   142 0001:001ACBC8
+   143 0001:001ACBCF   144 0001:001ACBD6   145 0001:001ACBDD   146 0001:001ACBE7
+   151 0001:001ACBE8   152 0001:001ACBEF   153 0001:001ACBF6   154 0001:001ACBFD
+   155 0001:001ACC07   160 0001:001ACC08   161 0001:001ACC0F   162 0001:001ACC16
+   163 0001:001ACC1D   164 0001:001ACC27   167 0001:001ACC28   168 0001:001ACC47
+   169 0001:001ACC60   171 0001:001ACCCA
+
+Line numbers for uODBase(Orders\uODBase.pas) segment .text
+
+    44 0001:001ACF6C    45 0001:001ACF70    46 0001:001ACF72    48 0001:001ACF82
+    49 0001:001ACF84    51 0001:001ACF90    55 0001:001ACF98    56 0001:001ACFA2
+    62 0001:001ACFA4    63 0001:001ACFA9    67 0001:001ACFAC    68 0001:001ACFB1
+    72 0001:001ACFB4    73 0001:001ACFB9    77 0001:001ACFBC    78 0001:001ACFC3
+    82 0001:001ACFC4    83 0001:001ACFC9    91 0001:001ACFCC    92 0001:001ACFCF
+    93 0001:001ACFDC    97 0001:001ACFE0    98 0001:001ACFE5   101 0001:001ACFE8
+   102 0001:001ACFEB   103 0001:001ACFF2   104 0001:001AD019   107 0001:001AD01C
+   110 0001:001AD027   111 0001:001AD038   108 0001:001AD039   113 0001:001AD048
+   119 0001:001AD04C   120 0001:001AD067   121 0001:001AD099   122 0001:001AD09E
+   121 0001:001AD0D3   123 0001:001AD0D8   124 0001:001AD0E5   138 0001:001AD110
+   139 0001:001AD144   140 0001:001AD153   141 0001:001AD161   142 0001:001AD166
+   144 0001:001AD18E   145 0001:001AD19C   146 0001:001AD1A9   148 0001:001AD1D2
+   151 0001:001AD1E2   153 0001:001AD1F2   154 0001:001AD1F8   155 0001:001AD200
+   158 0001:001AD207   160 0001:001AD228   161 0001:001AD24B   162 0001:001AD255
+   164 0001:001AD25A   163 0001:001AD25B   165 0001:001AD285   167 0001:001AD28E
+   168 0001:001AD296   169 0001:001AD2A5   168 0001:001AD2CE   172 0001:001AD2D5
+   173 0001:001AD2E3   174 0001:001AD2E5   175 0001:001AD2FF   177 0001:001AD31C
+   178 0001:001AD32B   180 0001:001AD32F   181 0001:001AD33C   183 0001:001AD349
+   186 0001:001AD34F   156 0001:001AD350   190 0001:001AD36D   192 0001:001AD37D
+   219 0001:001AD48C   220 0001:001AD4BF   222 0001:001AD4C7   223 0001:001AD4D2
+   225 0001:001AD4F8   226 0001:001AD507   227 0001:001AD515   228 0001:001AD520
+   230 0001:001AD594   232 0001:001AD5A3   235 0001:001AD631   236 0001:001AD63E
+   237 0001:001AD654   236 0001:001AD68C   240 0001:001AD69C   244 0001:001AD6AC
+   248 0001:001AD6C2   249 0001:001AD6D1   250 0001:001AD6DF   251 0001:001AD6F7
+   252 0001:001AD710   253 0001:001AD722   255 0001:001AD72E   257 0001:001AD73D
+   258 0001:001AD74C   260 0001:001AD756   253 0001:001AD757   261 0001:001AD75C
+   263 0001:001AD769   264 0001:001AD771   265 0001:001AD77F   266 0001:001AD78F
+   267 0001:001AD79D   269 0001:001AD7A9   274 0001:001AD7C6   266 0001:001AD7C7
+   275 0001:001AD7CA   276 0001:001AD7E9   279 0001:001AD817   280 0001:001AD838
+   283 0001:001AD848   294 0001:001ADB84   295 0001:001ADBA7   297 0001:001ADBB1
+
+Line numbers for uODBase(Orders\uODBase.pas) segment .itext
+
+   286 0002:0000120C   287 0002:00001226   288 0002:0000122D   289 0002:00001234
+   290 0002:0000123E   291 0002:0000124F   293 0002:00001260
+
+Line numbers for fPreReq(Consults\fPreReq.pas) segment .text
+
+    46 0001:001ADE84    47 0001:001ADEAE    48 0001:001ADEC5    51 0001:001ADED3
+    52 0001:001ADEE2    54 0001:001ADEF4    55 0001:001ADF18    56 0001:001ADF20
+    52 0001:001ADF21    57 0001:001ADF24    58 0001:001ADF3E    60 0001:001ADF74
+    61 0001:001ADF80    62 0001:001ADF8E    63 0001:001ADFB2    64 0001:001ADFD2
+    65 0001:001ADFDD    66 0001:001ADFE7    67 0001:001ADFF2    68 0001:001ADFFA
+    69 0001:001AE005    71 0001:001AE016    72 0001:001AE01E    73 0001:001AE050
+    74 0001:001AE05B    77 0001:001AE07D    78 0001:001AE087    80 0001:001AE091
+    85 0001:001AE0C0    86 0001:001AE0E2    87 0001:001AE0EF    88 0001:001AE0FD
+    89 0001:001AE108    91 0001:001AE11F    93 0001:001AE12F    98 0001:001AE158
+   102 0001:001AE15C   103 0001:001AE163   104 0001:001AE168   108 0001:001AE16C
+   109 0001:001AE173   110 0001:001AE178   122 0001:001AE17C   123 0001:001AE19F
+   124 0001:001AE1A7   125 0001:001AE1AF   127 0001:001AE1C5   128 0001:001AE1D4
+   129 0001:001AE1EA   130 0001:001AE1F5   131 0001:001AE203   132 0001:001AE215
+   133 0001:001AE21A   137 0001:001AE21F   139 0001:001AE22B   140 0001:001AE236
+   141 0001:001AE240   142 0001:001AE258   144 0001:001AE27F   140 0001:001AE280
+   145 0001:001AE283   146 0001:001AE286   147 0001:001AE293   148 0001:001AE2A0
+   149 0001:001AE2BA   150 0001:001AE2D4   153 0001:001AE2E3   154 0001:001AE2E6
+   155 0001:001AE30C   158 0001:001AE319   159 0001:001AE337   162 0001:001AE365
+   163 0001:001AE36D   166 0001:001AE37D   167 0001:001AE390   168 0001:001AE3A1
+   173 0001:001AE434   174 0001:001AE437   175 0001:001AE44E   176 0001:001AE468
+   181 0001:001AE46C   182 0001:001AE471   185 0001:001AE474   187 0001:001AE477
+   188 0001:001AE47E   189 0001:001AE485   192 0001:001AE488   193 0001:001AE48B
+   194 0001:001AE4A7   195 0001:001AE4D7
+
+Line numbers for UBAMessages(BA\UBAMessages.pas) segment .text
+
+    43 0001:00000000
+
+Line numbers for XuDigSigSC_TLB(XuDigSigSC_TLB.pas) segment .text
+
+   141 0001:001AE504   142 0001:001AE51A   143 0001:001AE536   150 0001:001AE568
+
+Line numbers for mCoPayDesc(mCoPayDesc.pas) segment .text
+
+    67 0001:001AE8C8    68 0001:001AE8E5    69 0001:001AE8EE    70 0001:001AE8F7
+    71 0001:001AE908    72 0001:001AE91D    73 0001:001AE932    74 0001:001AE947
+    75 0001:001AE95C    76 0001:001AE971    77 0001:001AE986    78 0001:001AE99B
+    79 0001:001AE9B0    80 0001:001AE9C5    81 0001:001AE9DA    82 0001:001AE9EF
+    83 0001:001AEA04    84 0001:001AEA19    85 0001:001AEA2E    86 0001:001AEA43
+    87 0001:001AEA58    88 0001:001AEA61    89 0001:001AEA68    92 0001:001AEA88
+    94 0001:001AEA8E    95 0001:001AEA9B    96 0001:001AEAA8    97 0001:001AEAB5
+    98 0001:001AEAC2    99 0001:001AEACF   100 0001:001AEADC   101 0001:001AEAE9
+   103 0001:001AEAF6   104 0001:001AEB03   105 0001:001AEB10   106 0001:001AEB1D
+   107 0001:001AEB2A   108 0001:001AEB37   109 0001:001AEB44   110 0001:001AEB51
+   111 0001:001AEB5E   114 0001:001AEB64   115 0001:001AEB67   116 0001:001AEB83
+   119 0001:001AEB8C   120 0001:001AEB8F   121 0001:001AEBAB   124 0001:001AEBB4
+   125 0001:001AEBBE   126 0001:001AEBCE   127 0001:001AEBDE   128 0001:001AEBEE
+   129 0001:001AEBFE   130 0001:001AEC0E   131 0001:001AEC1E   132 0001:001AEC2E
+   133 0001:001AEC3E
+
+Line numbers for mCoPayDesc(mCoPayDesc.pas) segment .itext
+
+   182 0002:00001278   183 0002:00001281   185 0002:0000128B
+
+Line numbers for rODLab(Orders\rODLab.pas) segment .text
+
+    53 0001:001AEC74    54 0001:001AEC84    57 0001:001AECA0    58 0001:001AECBA
+    59 0001:001AECE2    62 0001:001AED24    63 0001:001AED49    64 0001:001AED73
+    67 0001:001AEDB8    68 0001:001AEDDD    69 0001:001AEDFF    72 0001:001AEE38
+    73 0001:001AEE5D    74 0001:001AEE7F    77 0001:001AEEBC    78 0001:001AEEE1
+    79 0001:001AEF03    82 0001:001AEF40    83 0001:001AEF62    84 0001:001AEF7C
+    87 0001:001AEFB8    88 0001:001AEFD2    89 0001:001AEFFD    92 0001:001AF03C
+    93 0001:001AF062    94 0001:001AF078    95 0001:001AF0AE    96 0001:001AF0E4
+   101 0001:001AF124   102 0001:001AF145   103 0001:001AF170   104 0001:001AF18C
+   103 0001:001AF1AF   105 0001:001AF1B2   109 0001:001AF1EC   110 0001:001AF1EF
+   111 0001:001AF213   112 0001:001AF220   115 0001:001AF23C   116 0001:001AF25E
+   117 0001:001AF279   120 0001:001AF2B4   121 0001:001AF2B7   122 0001:001AF2D2
+   125 0001:001AF2F4   126 0001:001AF2FD   127 0001:001AF31F   128 0001:001AF32C
+   131 0001:001AF350   132 0001:001AF353   133 0001:001AF36E   141 0001:001AF390
+   142 0001:001AF3AF   143 0001:001AF3DD   146 0001:001AF420   147 0001:001AF43C
+   148 0001:001AF479   151 0001:001AF4C0   152 0001:001AF4DF   153 0001:001AF50D
+   156 0001:001AF55C   157 0001:001AF55F   158 0001:001AF577   159 0001:001AF584
+   162 0001:001AF5A8   163 0001:001AF5C5   164 0001:001AF5DD   165 0001:001AF613
+   168 0001:001AF65C   169 0001:001AF665   170 0001:001AF685   171 0001:001AF69B
+   174 0001:001AF6C0   175 0001:001AF6C3   176 0001:001AF6D9   177 0001:001AF6E6
+   180 0001:001AF708   181 0001:001AF711   182 0001:001AF72B   185 0001:001AF750
+   186 0001:001AF756   187 0001:001AF772   193 0001:001AF794   194 0001:001AF7B8
+   197 0001:001AF7E2   198 0001:001AF7F6   199 0001:001AF837   201 0001:001AF84D
+   202 0001:001AF884   203 0001:001AF903   199 0001:001AF904   205 0001:001AF90D
+   210 0001:001AF9CC   211 0001:001AFA09   212 0001:001AFA18   213 0001:001AFA26
+   214 0001:001AFA70   215 0001:001AFA85   217 0001:001AFA9C   219 0001:001AFAAC
+   224 0001:001AFB04   225 0001:001AFB13   226 0001:001AFB22   227 0001:001AFB30
+   228 0001:001AFB50   229 0001:001AFB65   231 0001:001AFB7C   233 0001:001AFB8C
+   239 0001:001AFBB8   240 0001:001AFBDD   241 0001:001AFBE5   242 0001:001AFBF4
+   241 0001:001AFC2C   243 0001:001AFC31   245 0001:001AFC40   248 0001:001AFC52
+   249 0001:001AFC5F   250 0001:001AFC69   251 0001:001AFC8B   252 0001:001AFCAD
+   253 0001:001AFCE1   254 0001:001AFCF3   253 0001:001AFD55   255 0001:001AFD5A
+   256 0001:001AFD64   257 0001:001AFD76   258 0001:001AFD89   259 0001:001AFD94
+   262 0001:001AFDA1   269 0001:001AFF14   270 0001:001AFF39   271 0001:001AFF40
+   272 0001:001AFF5C   274 0001:001AFF64   275 0001:001AFF73   278 0001:001AFF81
+   279 0001:001AFF8D   280 0001:001AFF96   281 0001:001AFFB7   282 0001:001AFFD8
+   283 0001:001B0001   285 0001:001B0013   286 0001:001B001C   287 0001:001B0024
+   288 0001:001B004D   289 0001:001B0074   290 0001:001B009D   291 0001:001B00AC
+   293 0001:001B00C1   294 0001:001B00FF   295 0001:001B0132   291 0001:001B0133
+   296 0001:001B0138   297 0001:001B0152   298 0001:001B015A   299 0001:001B0183
+   300 0001:001B0196   301 0001:001B01A9   300 0001:001B020C   302 0001:001B0211
+   283 0001:001B0214   303 0001:001B021D   304 0001:001B0226   305 0001:001B0238
+   306 0001:001B024B   307 0001:001B0255   310 0001:001B026E   313 0001:001B027E
+   316 0001:001B0418   317 0001:001B041E   318 0001:001B0442   320 0001:001B0492
+
+Line numbers for fOrdersPrint(Orders\fOrdersPrint.pas) segment .text
+
+    77 0001:001B0864    78 0001:001B088E    79 0001:001B08A5    80 0001:001B08C6
+    81 0001:001B08D4    82 0001:001B08E2    85 0001:001B08EA    86 0001:001B08F7
+    87 0001:001B0901    88 0001:001B090A    90 0001:001B090E    91 0001:001B0921
+    93 0001:001B0934    94 0001:001B0946    95 0001:001B0953    96 0001:001B0967
+    97 0001:001B0977   100 0001:001B0993   101 0001:001B09A1   103 0001:001B09B1
+   106 0001:001B0A40   109 0001:001B0A7C   110 0001:001B0A9F   111 0001:001B0AC2
+   112 0001:001B0AE5   113 0001:001B0B08   117 0001:001B0BE4   119 0001:001B0BFF
+   133 0001:001B0C60   134 0001:001B0C7F   136 0001:001B0CB2   137 0001:001B0CC3
+   138 0001:001B0CCC   139 0001:001B0CD6   141 0001:001B0CDC   142 0001:001B0CEB
+   143 0001:001B0CF8   144 0001:001B0D04   145 0001:001B0D1D   146 0001:001B0D2A
+   150 0001:001B0D38   151 0001:001B0D41   153 0001:001B0D4A   156 0001:001B0D59
+   157 0001:001B0D62   158 0001:001B0D6B   159 0001:001B0D75   160 0001:001B0D8A
+   163 0001:001B0D96   164 0001:001B0D9F   165 0001:001B0DA8   166 0001:001B0DB2
+   167 0001:001B0DB8   170 0001:001B0DC9   171 0001:001B0DD2   173 0001:001B0DDB
+   176 0001:001B0DE7   177 0001:001B0DF0   178 0001:001B0DF9   179 0001:001B0E03
+   182 0001:001B0E0D   187 0001:001B0E34   188 0001:001B0E4A   189 0001:001B0E63
+   191 0001:001B0E6F   192 0001:001B0E79   194 0001:001B0E88   199 0001:001B0EAC
+   200 0001:001B0EC2   201 0001:001B0EDB   203 0001:001B0EE7   204 0001:001B0EF1
+   206 0001:001B0F00   211 0001:001B0F24   212 0001:001B0F3A   213 0001:001B0F53
+   215 0001:001B0F5F   216 0001:001B0F69   218 0001:001B0F78   223 0001:001B0F9C
+   224 0001:001B0FB2   225 0001:001B0FCB   227 0001:001B0FD7   228 0001:001B0FE1
+   230 0001:001B0FF0   236 0001:001B1014   237 0001:001B1034   238 0001:001B1069
+   239 0001:001B109E   240 0001:001B10D3   241 0001:001B1108   245 0001:001B11E3
+   247 0001:001B11F5   248 0001:001B11FC   252 0001:001B120F   253 0001:001B1216
+   255 0001:001B121D   259 0001:001B1310   260 0001:001B1330   263 0001:001B134E
+   265 0001:001B135D   266 0001:001B1382   268 0001:001B1394   270 0001:001B13A5
+   272 0001:001B13B4   273 0001:001B13D9   275 0001:001B13EB   277 0001:001B13FC
+   279 0001:001B140B   280 0001:001B1430   282 0001:001B1442   284 0001:001B1453
+   286 0001:001B1462   287 0001:001B1487   289 0001:001B1499   291 0001:001B14AA
+   297 0001:001B1585   298 0001:001B159E   299 0001:001B15A5   302 0001:001B162C
+   303 0001:001B162F   304 0001:001B165B   307 0001:001B1660   308 0001:001B1663
+   309 0001:001B168F   312 0001:001B1694   313 0001:001B1697   314 0001:001B16C3
+   317 0001:001B16C8   318 0001:001B16CB   319 0001:001B16F7   323 0001:001B16FC
+   324 0001:001B1709   328 0001:001B170C   329 0001:001B170F   331 0001:001B1715
+   332 0001:001B171A   334 0001:001B171F
+
+Line numbers for fOrdersPrint(Orders\fOrdersPrint.pas) segment .itext
+
+   336 0002:0000128C
+
+Line numbers for fOrdersSign(Orders\fOrdersSign.pas) segment .text
+
+   130 0001:001B1C24   131 0001:001B1C2A   132 0001:001B1C2C   134 0001:001B1C37
+   136 0001:001B1C39   137 0001:001B1C47   138 0001:001B1C67   139 0001:001B1C7D
+   137 0001:001B1C7F   144 0001:001B1C9D   148 0001:001B1CA7   150 0001:001B1CA9
+   156 0001:001B1CB0   157 0001:001B1CD0   159 0001:001B1CDA   161 0001:001B1CEF
+   171 0001:001B1D10   172 0001:001B1D40   173 0001:001B1D48   174 0001:001B1D56
+   175 0001:001B1D5D   176 0001:001B1D6B   178 0001:001B1D79   179 0001:001B1D87
+   181 0001:001B1D9B   182 0001:001B1DBB   184 0001:001B1DC8   185 0001:001B1DE8
+   187 0001:001B1DEA   179 0001:001B1DEB   192 0001:001B1E0C   196 0001:001B1E16
+   222 0001:001B1E4C   223 0001:001B1E5B   224 0001:001B1E63   225 0001:001B1E6E
+   226 0001:001B1E7F   228 0001:001B1E9B   229 0001:001B1EA6   230 0001:001B1EA8
+   225 0001:001B1EA9   231 0001:001B1EAC   236 0001:001B1EB4   237 0001:001B1EBA
+   238 0001:001B1EBC   239 0001:001B1EC7   241 0001:001B1ED8   242 0001:001B1EED
+   239 0001:001B1EEE   243 0001:001B1EF1   248 0001:001B1EF8   249 0001:001B1F14
+   251 0001:001B1F18   253 0001:001B1F29   254 0001:001B1F61   251 0001:001B1F62
+   255 0001:001B1F65   257 0001:001B1F9C   258 0001:001B1FBF   259 0001:001B1FC3
+   260 0001:001B1FC7   261 0001:001B1FCC   262 0001:001B1FD1   263 0001:001B1FD5
+   264 0001:001B1FE2   266 0001:001B1FEC   267 0001:001B1FFD   269 0001:001B2007
+   270 0001:001B2020   271 0001:001B202E   272 0001:001B2038   273 0001:001B2042
+   275 0001:001B205C   276 0001:001B2069   277 0001:001B2086   278 0001:001B2099
+   279 0001:001B20A3   280 0001:001B20B0   282 0001:001B20C4   283 0001:001B20DE
+   284 0001:001B20F2   273 0001:001B20F5   286 0001:001B20FE   287 0001:001B2118
+   292 0001:001B212F   293 0001:001B2139   297 0001:001B214B   298 0001:001B215C
+   299 0001:001B2170   300 0001:001B2185   301 0001:001B219A   305 0001:001B21AF
+   307 0001:001B21D8   308 0001:001B21E6   309 0001:001B2206   310 0001:001B2216
+   311 0001:001B224E   315 0001:001B226D   320 0001:001B2276   322 0001:001B2281
+   323 0001:001B2293   326 0001:001B22A5   329 0001:001B22AF   332 0001:001B22C1
+   333 0001:001B22CE   335 0001:001B22E0   336 0001:001B22E4   337 0001:001B22F3
+   338 0001:001B2302   339 0001:001B2311   340 0001:001B2320   341 0001:001B2324
+   342 0001:001B2332   344 0001:001B235D   345 0001:001B235F   347 0001:001B23A3
+   348 0001:001B23AD   349 0001:001B23C3   350 0001:001B23CE   351 0001:001B23E9
+   353 0001:001B23F8   354 0001:001B2434   356 0001:001B2436   357 0001:001B2449
+   358 0001:001B245C   359 0001:001B246F   360 0001:001B2477   361 0001:001B2485
+   362 0001:001B2495   363 0001:001B24A7   364 0001:001B24CC   365 0001:001B24F1
+   366 0001:001B2516   367 0001:001B253B   369 0001:001B2565   370 0001:001B258F
+   371 0001:001B25B9   375 0001:001B25E8   376 0001:001B2670   379 0001:001B268D
+   381 0001:001B268F   382 0001:001B26CE   385 0001:001B26D5   391 0001:001B26DE
+   392 0001:001B26E6   393 0001:001B2708   394 0001:001B272D   396 0001:001B275A
+   397 0001:001B2768   398 0001:001B27AD   404 0001:001B27CC   406 0001:001B280F
+   412 0001:001B285F   413 0001:001B2884   414 0001:001B28B2   416 0001:001B28CD
+   417 0001:001B28DB   421 0001:001B2920   342 0001:001B2923   422 0001:001B292C
+   423 0001:001B2936   426 0001:001B2946   428 0001:001B295A   430 0001:001B2986
+   431 0001:001B2994   432 0001:001B29A3   433 0001:001B29B0   434 0001:001B29BF
+   435 0001:001B29D2   436 0001:001B29E1   438 0001:001B29FB   439 0001:001B2A20
+   440 0001:001B2A3A   441 0001:001B2A58   442 0001:001B2A6D   443 0001:001B2A7E
+   445 0001:001B2A9A   446 0001:001B2AAF   448 0001:001B2AB1   449 0001:001B2AF0
+   436 0001:001B2AF3   450 0001:001B2AFC   451 0001:001B2B54   452 0001:001B2B7E
+   451 0001:001B2B9F   453 0001:001B2BA4   454 0001:001B2BB0   455 0001:001B2BC9
+   457 0001:001B2BD4   458 0001:001B2BDD   461 0001:001B2BE7   462 0001:001B2BF1
+   465 0001:001B2C04   467 0001:001B2C30   469 0001:001B2C72   470 0001:001B2CBD
+   471 0001:001B2CF9   475 0001:001B2D69   478 0001:001B2DC8   479 0001:001B2E06
+   480 0001:001B2E56   465 0001:001B2E59   481 0001:001B2E62   482 0001:001B2E69
+   484 0001:001B2E7D   486 0001:001B2EBA   487 0001:001B2EC4   489 0001:001B2EC6
+   490 0001:001B2EFA   491 0001:001B2F09   482 0001:001B2F0A   493 0001:001B2F13
+   494 0001:001B2F22   495 0001:001B2F30   496 0001:001B2F45   497 0001:001B2F5C
+   499 0001:001B2F78   501 0001:001B2F88   502 0001:001B2FA0   503 0001:001B2FC2
+   505 0001:001B2FE4   506 0001:001B2FEC   507 0001:001B2FF4   508 0001:001B2FFC
+   512 0001:001B3019   513 0001:001B3023   515 0001:001B305C   516 0001:001B3066
+   519 0001:001B3504   521 0001:001B3507   522 0001:001B3511   523 0001:001B3518
+   524 0001:001B3528   525 0001:001B3536   526 0001:001B3546   527 0001:001B3554
+   531 0001:001B3565   533 0001:001B3573   534 0001:001B3583   535 0001:001B359A
+   536 0001:001B35A7   537 0001:001B35BE   538 0001:001B35D2   539 0001:001B35E2
+   540 0001:001B35EF   544 0001:001B35F8   545 0001:001B3608   549 0001:001B3618
+   554 0001:001B361C   555 0001:001B361F   557 0001:001B3621   559 0001:001B3631
+   561 0001:001B3647   562 0001:001B3659   564 0001:001B365B   557 0001:001B365C
+   565 0001:001B365F   576 0001:001B3668   579 0001:001B3684   581 0001:001B36B0
+   582 0001:001B36C1   585 0001:001B36C6   587 0001:001B36E8   588 0001:001B36F9
+   589 0001:001B3707   590 0001:001B3712   594 0001:001B3717   596 0001:001B3721
+   598 0001:001B372F   600 0001:001B3738   601 0001:001B3749   606 0001:001B374B
+   608 0001:001B3759   609 0001:001B376A   612 0001:001B376C   613 0001:001B3778
+   615 0001:001B37A8   616 0001:001B37AF   617 0001:001B37B6   622 0001:001B3A18
+   623 0001:001B3A1D   628 0001:001B3A20   629 0001:001B3A31   630 0001:001B3A42
+   631 0001:001B3A4C   643 0001:001B3A50   645 0001:001B3A8A   646 0001:001B3A92
+   649 0001:001B3A9E   651 0001:001B3AAC   653 0001:001B3AB2   655 0001:001B3AC6
+   656 0001:001B3AD4   657 0001:001B3AEE   658 0001:001B3AFF   659 0001:001B3B10
+   660 0001:001B3B31   662 0001:001B3B35   663 0001:001B3B46   665 0001:001B3B57
+   666 0001:001B3B68   667 0001:001B3B71   671 0001:001B3B91   673 0001:001B3B9B
+   674 0001:001B3BCD   678 0001:001B3BE4   679 0001:001B3C14   681 0001:001B3C22
+   683 0001:001B3C30   685 0001:001B3C4F   687 0001:001B3C5F   688 0001:001B3C6E
+   689 0001:001B3C79   691 0001:001B3C8F   692 0001:001B3CAD   693 0001:001B3CE6
+   695 0001:001B3CF6   696 0001:001B3D09   702 0001:001B3D33   704 0001:001B3D43
+   705 0001:001B3D56   716 0001:001B3D85   717 0001:001B3D8D   718 0001:001B3D99
+   720 0001:001B3D9F   722 0001:001B3DB3   723 0001:001B3DC1   724 0001:001B3DDB
+   725 0001:001B3DED   726 0001:001B3DFF   727 0001:001B3E20   732 0001:001B3E50
+   739 0001:001B3E94   741 0001:001B3EBB   742 0001:001B3EC2   744 0001:001B3ED8
+   745 0001:001B3EE5   746 0001:001B3EF3   747 0001:001B3F14   748 0001:001B3F2B
+   752 0001:001B3F39   755 0001:001B3F44   762 0001:001B3F74   763 0001:001B3F96
+   764 0001:001B3FB7   766 0001:001B3FDD   768 0001:001B3FF4   769 0001:001B4009
+   771 0001:001B402A   763 0001:001B402B   772 0001:001B402E   774 0001:001B4054
+   775 0001:001B405E   777 0001:001B4067   779 0001:001B4094   780 0001:001B40BF
+   782 0001:001B40F7   784 0001:001B4122   786 0001:001B412E   787 0001:001B4146
+   791 0001:001B4160   792 0001:001B4178   794 0001:001B4190   800 0001:001B4198
+   801 0001:001B419C   803 0001:001B419E   804 0001:001B41A4   805 0001:001B41B9
+   807 0001:001B41C6   808 0001:001B41C8   809 0001:001B41CA   804 0001:001B41CB
+   810 0001:001B41CE   821 0001:001B41D8   823 0001:001B41FF   824 0001:001B421F
+   826 0001:001B4227   828 0001:001B4233   830 0001:001B423F   833 0001:001B424D
+   835 0001:001B4270   837 0001:001B4280   838 0001:001B428E   839 0001:001B429C
+   841 0001:001B42BC   843 0001:001B42CF   844 0001:001B42D9   848 0001:001B42ED
+   849 0001:001B431C   850 0001:001B434B   851 0001:001B437A   854 0001:001B43A9
+   858 0001:001B4419   839 0001:001B441D   862 0001:001B4442   868 0001:001B444E
+   871 0001:001B4482   872 0001:001B4488   877 0001:001B44A7   878 0001:001B44B7
+   879 0001:001B44C1   881 0001:001B44CD   884 0001:001B4528   887 0001:001B4540
+   888 0001:001B4560   891 0001:001B456A   892 0001:001B4577   893 0001:001B4581
+   894 0001:001B458B   895 0001:001B4597   897 0001:001B45AA   900 0001:001B45B8
+   901 0001:001B45C2   903 0001:001B45D6   904 0001:001B45E0   906 0001:001B45F0
+   908 0001:001B45F6   909 0001:001B4606   910 0001:001B4616   911 0001:001B4626
+   912 0001:001B4636   913 0001:001B4646   914 0001:001B4656   915 0001:001B4666
+   916 0001:001B4676   917 0001:001B4683   918 0001:001B4690   919 0001:001B469D
+   920 0001:001B46AA   921 0001:001B46B7   922 0001:001B46C4   923 0001:001B46D1
+   927 0001:001B46DE   928 0001:001B46EB   931 0001:001B46F2   933 0001:001B4707
+   934 0001:001B4716   935 0001:001B4723   937 0001:001B4730   939 0001:001B4754
+   940 0001:001B4761   941 0001:001B476E   944 0001:001B477F   946 0001:001B47B9
+   947 0001:001B47C6   951 0001:001B47D3   962 0001:001B491C   965 0001:001B494D
+   966 0001:001B4951   967 0001:001B4955   968 0001:001B496B   969 0001:001B4981
+   971 0001:001B4997   973 0001:001B49A5   975 0001:001B49CA   977 0001:001B49E5
+   978 0001:001B4A09   980 0001:001B4A18   982 0001:001B4A40   985 0001:001B4A80
+   986 0001:001B4A8C   987 0001:001B4A96   988 0001:001B4AA0   991 0001:001B4AAC
+   993 0001:001B4AB6   994 0001:001B4ACA   995 0001:001B4AD4   998 0001:001B4AE3
+  1006 0001:001B4AF0   973 0001:001B4AF1  1008 0001:001B4B15  1009 0001:001B4B17
+  1012 0001:001B4B5B  1014 0001:001B4B64  1016 0001:001B4B69  1017 0001:001B4B77
+  1020 0001:001B4B7C  1021 0001:001B4B82  1023 0001:001B4B86  1024 0001:001B4B93
+  1027 0001:001B4B97  1028 0001:001B4BA4  1030 0001:001B4BA8  1031 0001:001B4BBD
+  1036 0001:001B4BD7  1037 0001:001B4BDD  1040 0001:001B4BF7  1041 0001:001B4C01
+  1042 0001:001B4C0B  1045 0001:001B4C23  1047 0001:001B4C43  1048 0001:001B4C4F
+  1051 0001:001B4C59  1052 0001:001B4C6A  1056 0001:001B4D9C  1057 0001:001B4DA1
+  1067 0001:001B4DA4  1068 0001:001B4DC2  1069 0001:001B4DD0  1071 0001:001B4DDE
+  1073 0001:001B4DEB  1075 0001:001B4DF2  1077 0001:001B4DF6  1078 0001:001B4E04
+  1081 0001:001B4E11  1082 0001:001B4E36  1084 0001:001B4E53  1085 0001:001B4E62
+  1086 0001:001B4E67  1088 0001:001B4E7D  1090 0001:001B4E83  1091 0001:001B4E8B
+  1094 0001:001B4E98  1097 0001:001B4EBD  1098 0001:001B4ECE  1099 0001:001B4ED8
+  1100 0001:001B4EE8  1101 0001:001B4EFA  1104 0001:001B4F0C  1107 0001:001B4F1A
+  1108 0001:001B4F28  1109 0001:001B4F32  1113 0001:001B4F3C  1114 0001:001B4F4F
+  1115 0001:001B4F6C  1116 0001:001B4F6E  1081 0001:001B4F6F  1121 0001:001B4F93
+  1122 0001:001B4FA1  1125 0001:001B4FAB  1134 0001:001B50AC  1135 0001:001B50B5
+  1137 0001:001B50C3  1138 0001:001B50CC  1140 0001:001B50DD  1141 0001:001B50EB
+  1143 0001:001B5108  1145 0001:001B5125  1147 0001:001B514A  1151 0001:001B5160
+  1154 0001:001B5172  1156 0001:001B5180  1157 0001:001B518E  1158 0001:001B5198
+  1162 0001:001B519D  1165 0001:001B51AB  1166 0001:001B51B9  1167 0001:001B51CA
+  1168 0001:001B51DB  1169 0001:001B51EC  1172 0001:001B51FD  1174 0001:001B520B
+  1175 0001:001B521B  1178 0001:001B5228  1141 0001:001B5229  1182 0001:001B524D
+  1183 0001:001B525B  1186 0001:001B5265  1188 0001:001B5270  1197 0001:001B5330
+  1198 0001:001B533F  1200 0001:001B5356  1202 0001:001B5364  1203 0001:001B5372
+  1206 0001:001B537B  1208 0001:001B5394  1209 0001:001B53A1  1213 0001:001B53B0
+  1217 0001:001B53BD  1218 0001:001B53E1  1220 0001:001B5405  1221 0001:001B540B
+  1222 0001:001B5411  1223 0001:001B5422  1228 0001:001B544E  1229 0001:001B545C
+  1233 0001:001B5466  1243 0001:001B54AC  1244 0001:001B54B3  1247 0001:001B54C2
+  1250 0001:001B54D0  1251 0001:001B54E4  1253 0001:001B54F3  1255 0001:001B5500
+  1257 0001:001B5520  1259 0001:001B5536  1262 0001:001B554C  1264 0001:001B5550
+  1265 0001:001B555D  1266 0001:001B556A  1269 0001:001B556F  1271 0001:001B5573
+  1272 0001:001B557B  1274 0001:001B5586  1276 0001:001B5592  1277 0001:001B559F
+  1281 0001:001B55AE  1282 0001:001B55BB  1287 0001:001B55CA  1288 0001:001B55D7
+  1289 0001:001B55E4  1292 0001:001B55E6  1255 0001:001B55E7  1294 0001:001B55F0
+  1296 0001:001B55FE  1301 0001:001B5604  1302 0001:001B5615  1303 0001:001B5622
+  1305 0001:001B562B  1306 0001:001B5635  1309 0001:001B563C  1310 0001:001B56B7
+  1311 0001:001B56E2  1312 0001:001B570D  1313 0001:001B5738  1314 0001:001B5763
+  1315 0001:001B578E  1316 0001:001B57B9  1317 0001:001B57E1  1319 0001:001B5805
+  1321 0001:001B580A  1322 0001:001B5825  1321 0001:001B5835  1323 0001:001B5838
+  1324 0001:001B5847  1328 0001:001B5855  1337 0001:001B5860  1338 0001:001B5871
+  1339 0001:001B587F  1341 0001:001B5888  1342 0001:001B5892  1348 0001:001B58B4
+  1352 0001:001B58BE  1353 0001:001B58CC  1354 0001:001B58E3  1355 0001:001B58F2
+  1356 0001:001B5903  1357 0001:001B5906  1358 0001:001B5909  1359 0001:001B592F
+  1360 0001:001B5932  1361 0001:001B5935  1362 0001:001B5938  1364 0001:001B593B
+  1366 0001:001B5953  1367 0001:001B5968  1372 0001:001B598A  1375 0001:001B5994
+  1378 0001:001B599C  1379 0001:001B59A2  1380 0001:001B59B0  1382 0001:001B59B9
+  1383 0001:001B59C3  1384 0001:001B59CA  1390 0001:001B59F1  1393 0001:001B59FB
+  1398 0001:001B5A04  1399 0001:001B5A12  1402 0001:001B5A14  1403 0001:001B5A17
+  1404 0001:001B5A2C  1407 0001:001B5A30  1408 0001:001B5A33  1409 0001:001B5A4F
+  1412 0001:001B5A58  1413 0001:001B5A5B  1414 0001:001B5A77  1419 0001:001B5A80
+  1425 0001:001B5A98  1426 0001:001B5AB2  1427 0001:001B5AD3  1429 0001:001B5AF3
+  1430 0001:001B5B1E  1431 0001:001B5B34  1433 0001:001B5B6C  1434 0001:001B5BA2
+  1426 0001:001B5BA3  1435 0001:001B5BAA  1436 0001:001B5BC1  1438 0001:001B5BE1
+  1442 0001:001B5C38  1443 0001:001B5C3B  1444 0001:001B5C41  1445 0001:001B5C46
+  1448 0001:001B5C4C  1449 0001:001B5C4F  1450 0001:001B5C58  1451 0001:001B5C5F
+
+Line numbers for fOrdersSign(Orders\fOrdersSign.pas) segment .itext
+
+  1453 0002:00001294
+
+Line numbers for rSurgery(rSurgery.pas) segment .text
+
+    62 0001:001B5D28    65 0001:001B5D42    67 0001:001B5D4B    68 0001:001B5D7C
+    70 0001:001B5D83    72 0001:001B5D8A    80 0001:001B5DD8    81 0001:001B5E0C
+    83 0001:001B5E11    84 0001:001B5E24    85 0001:001B5E2B    88 0001:001B5E2F
+    89 0001:001B5E54    90 0001:001B5E7F    91 0001:001B5E98    92 0001:001B5EA6
+    93 0001:001B5EC2    94 0001:001B5EDC    95 0001:001B5EE9    96 0001:001B5F0B
+    97 0001:001B5F2B   124 0001:001B5FCC   125 0001:001B5FEC   126 0001:001B6010
+   127 0001:001B601F   129 0001:001B6030   130 0001:001B603C   132 0001:001B6048
+   138 0001:001B60CC   140 0001:001B60F1   142 0001:001B611B   143 0001:001B6128
+   146 0001:001B6178   147 0001:001B6195   148 0001:001B6197   149 0001:001B61A0
+   150 0001:001B61A4   151 0001:001B61CE   161 0001:001B6220   162 0001:001B6245
+   163 0001:001B6270   164 0001:001B629B   167 0001:001B62E0   169 0001:001B62F6
+   170 0001:001B630F   171 0001:001B6321   175 0001:001B6337   176 0001:001B633E
+   179 0001:001B634A   184 0001:001B63A8   185 0001:001B63AE   188 0001:001B63CE
+   190 0001:001B63E4   191 0001:001B63FD   192 0001:001B640F   193 0001:001B642C
+   197 0001:001B6442   198 0001:001B6449   201 0001:001B6455   206 0001:001B64A8
+   207 0001:001B64AE   208 0001:001B64C6   209 0001:001B64DA   213 0001:001B64FC
+   214 0001:001B6502   215 0001:001B651A   216 0001:001B652E   236 0001:001B6554
+   237 0001:001B6590   240 0001:001B65B4   241 0001:001B65B8   242 0001:001B65D6
+   243 0001:001B65E2   244 0001:001B6600   245 0001:001B660C   246 0001:001B662A
+   247 0001:001B6648   248 0001:001B6668   250 0001:001B668E   251 0001:001B669E
+   256 0001:001B6708   259 0001:001B6743   260 0001:001B6756   261 0001:001B6769
+   262 0001:001B677C   263 0001:001B678F   264 0001:001B67AD   266 0001:001B67D6
+   267 0001:001B67EF   281 0001:001B6850   282 0001:001B6856   283 0001:001B686E
+   284 0001:001B6882   306 0001:001B68A0   307 0001:001B68BC   308 0001:001B68E8
+   313 0001:001B693C   315 0001:001B6968
+
+Line numbers for rSurgery(rSurgery.pas) segment .itext
+
+   310 0002:0000129C   312 0002:000012A3
+
+Line numbers for uSurgery(uSurgery.pas) segment .text
+
+    40 0001:001B69F8    41 0001:001B6A0A    42 0001:001B6A13    43 0001:001B6A22
+    47 0001:001B6A3C    48 0001:001B6A47    49 0001:001B6A4F    50 0001:001B6A5B
+    58 0001:001B6A6C    59 0001:001B6A95    60 0001:001B6AA0    62 0001:001B6B48
+    63 0001:001B6B52    68 0001:001B6BBC    69 0001:001B6BE8    70 0001:001B6BF3
+    72 0001:001B6CB1    73 0001:001B6CBB   114 0001:001B6D56
+
+Line numbers for uCaseTree(uCaseTree.pas) segment .text
+
+    76 0001:001B6DD8    77 0001:001B6E0C    78 0001:001B6E1B    79 0001:001B6E2A
+    81 0001:001B6E38    84 0001:001B6E42    86 0001:001B6E7C    87 0001:001B6EA1
+    89 0001:001B6EAB    91 0001:001B6EC1    92 0001:001B6ECE    94 0001:001B6EEB
+    95 0001:001B6F04    96 0001:001B6F18    97 0001:001B6F31    98 0001:001B6F45
+    99 0001:001B6F71   101 0001:001B6F85   102 0001:001B6F98   104 0001:001B6FC9
+   105 0001:001B6FDC   107 0001:001B6FE2   108 0001:001B6FEF   111 0001:001B6FFE
+   112 0001:001B701A   113 0001:001B7032   114 0001:001B7053   115 0001:001B7089
+   118 0001:001B70AB   119 0001:001B70BE   120 0001:001B70D1   121 0001:001B70E9
+   122 0001:001B710A   123 0001:001B7140   126 0001:001B7162   127 0001:001B7188
+   128 0001:001B719B   129 0001:001B71B3   130 0001:001B71D4   131 0001:001B720A
+   134 0001:001B722C   136 0001:001B7248   137 0001:001B7270   139 0001:001B727F
+   140 0001:001B728C   141 0001:001B72B3   142 0001:001B72E4   146 0001:001B72FD
+   147 0001:001B7308    89 0001:001B7309   148 0001:001B7310   149 0001:001B7321
+   150 0001:001B732E   151 0001:001B7371   152 0001:001B737C   153 0001:001B739B
+   154 0001:001B73B1   153 0001:001B747D   158 0001:001B7491   159 0001:001B7499
+   161 0001:001B74A9   171 0001:001B767C   172 0001:001B76C5   174 0001:001B76DB
+   175 0001:001B76E0   176 0001:001B76FF   178 0001:001B7710   179 0001:001B772F
+   180 0001:001B775D   181 0001:001B777E   182 0001:001B77A3   184 0001:001B77BC
+   185 0001:001B77D9   186 0001:001B780C   187 0001:001B781E   188 0001:001B7837
+   192 0001:001B784C   193 0001:001B7868   194 0001:001B7880   195 0001:001B789D
+   196 0001:001B78A8   199 0001:001B78C3   172 0001:001B78C4   200 0001:001B78CD
+   220 0001:001B7924   221 0001:001B795C   223 0001:001B7961   224 0001:001B7970
+   225 0001:001B7979   226 0001:001B799C   227 0001:001B79AD   229 0001:001B79B3
+   231 0001:001B79B9   232 0001:001B79BF   234 0001:001B79D0   237 0001:001B79E1
+   239 0001:001B79F2   241 0001:001B7A05   242 0001:001B7A11   243 0001:001B7A1D
+   245 0001:001B7A27   246 0001:001B7A2D   247 0001:001B7A48   248 0001:001B7A59
+   249 0001:001B7A6A   250 0001:001B7A7B   252 0001:001B7A89   255 0001:001B7A97
+   256 0001:001B7AA5   257 0001:001B7AAB   260 0001:001B7AB9   261 0001:001B7ABF
+   263 0001:001B7ACD   266 0001:001B7ADB   267 0001:001B7AE5   268 0001:001B7AF1
+   271 0001:001B7AFD   272 0001:001B7B07   273 0001:001B7B0E   274 0001:001B7B25
+   276 0001:001B7B29   277 0001:001B7B32   280 0001:001B7B37   283 0001:001B7C40
+   284 0001:001B7C43   286 0001:001B7C46   287 0001:001B7C4F   290 0001:001B7C5D
+   291 0001:001B7C64   292 0001:001B7C72   293 0001:001B7C76   294 0001:001B7C84
+   295 0001:001B7C87   305 0001:001B7C93   310 0001:001B7CCA   313 0001:001B7CDB
+   316 0001:001B7CE0   317 0001:001B7CE1   319 0001:001B7CE3   320 0001:001B7CEA
+   321 0001:001B7CF2   322 0001:001B7CFA   323 0001:001B7D02   324 0001:001B7D0A
+   325 0001:001B7D12   326 0001:001B7D1A   327 0001:001B7D22   328 0001:001B7D2A
+   329 0001:001B7D32   330 0001:001B7D3A   331 0001:001B7D42   332 0001:001B7D4A
+   333 0001:001B7D52   334 0001:001B7D5A   335 0001:001B7D62   336 0001:001B7D6A
+   338 0001:001B7D72   343 0001:001B7D74   345 0001:001B7D79   347 0001:001B7D8E
+   349 0001:001B7DA1   350 0001:001B7DB6   351 0001:001B7DD1   353 0001:001B7DE5
+   344 0001:001B7DE6   354 0001:001B7DE9   357 0001:001B7DF0   358 0001:001B7DF3
+   360 0001:001B7DFA   361 0001:001B7DFF   362 0001:001B7E0D   364 0001:001B7E16
+   365 0001:001B7E20   370 0001:001B7E24   372 0001:001B7E39   373 0001:001B7E4C
+   375 0001:001B7E64   376 0001:001B7E7A   377 0001:001B7E8C   371 0001:001B7E8D
+   378 0001:001B7E92   384 0001:001B7EAC   385 0001:001B7ED6   386 0001:001B7EE8
+   388 0001:001B7EEA   391 0001:001B7F07   392 0001:001B7F24   393 0001:001B7F42
+   394 0001:001B7F60   395 0001:001B7F7E   396 0001:001B7FA4   397 0001:001B7FC2
+   398 0001:001B7FE0   399 0001:001B8000   407 0001:001B801B   408 0001:001B8039
+   409 0001:001B8057   410 0001:001B8075   411 0001:001B80AF   412 0001:001B80CD
+   413 0001:001B80EB   414 0001:001B8109   415 0001:001B8127   416 0001:001B8145
+   417 0001:001B8175   418 0001:001B8195   419 0001:001B81B3   420 0001:001B81D1
+   421 0001:001B81EF   424 0001:001B8205   425 0001:001B8207   428 0001:001B8282
+
+Line numbers for fSurgeryView(fSurgeryView.pas) segment .text
+
+    60 0001:001B856C    61 0001:001B85AF    62 0001:001B85C6    65 0001:001B85D4
+    66 0001:001B85E1    67 0001:001B85EC    68 0001:001B85F7    69 0001:001B8604
+    70 0001:001B8620    71 0001:001B863C    72 0001:001B8646    73 0001:001B865C
+    74 0001:001B866D    75 0001:001B867E    76 0001:001B86A8    77 0001:001B86AF
+    79 0001:001B86CC    80 0001:001B86DC    81 0001:001B8700    82 0001:001B8710
+    83 0001:001B8721    87 0001:001B873D    88 0001:001B8749    89 0001:001B875A
+    90 0001:001B876B    91 0001:001B8780    92 0001:001B8791    93 0001:001B87A6
+    94 0001:001B87B2    95 0001:001B87C3    96 0001:001B87D0   101 0001:001B87E3
+   103 0001:001B87F3   108 0001:001B884C   109 0001:001B886D   110 0001:001B8881
+   112 0001:001B889D   114 0001:001B88A5   115 0001:001B88B9   117 0001:001B88D5
+   119 0001:001B88DD   121 0001:001B88E9   122 0001:001B8905   123 0001:001B8917
+   124 0001:001B8933   128 0001:001B8947   129 0001:001B895A   132 0001:001B895F
+   133 0001:001B8975   134 0001:001B8993   135 0001:001B89BA   137 0001:001B89D8
+   138 0001:001B89E3   139 0001:001B89EA   140 0001:001B89F1   144 0001:001B8A88
+   145 0001:001B8A8F   146 0001:001B8A94   149 0001:001B8A98   150 0001:001B8A9B
+   151 0001:001B8AA9   152 0001:001B8AB6   154 0001:001B8AE6
+
+Line numbers for fPCEEdit(Encounter\fPCEEdit.pas) segment .text
+
+    50 0001:001B8CBC    51 0001:001B8CDD    52 0001:001B8CE1    54 0001:001B8CF1
+    55 0001:001B8CF7    58 0001:001B8D03    59 0001:001B8D16    63 0001:001B8D22
+    64 0001:001B8D28    66 0001:001B8D34    67 0001:001B8D5D    70 0001:001B8D69
+    71 0001:001B8D80    72 0001:001B8D8E    74 0001:001B8D9E    75 0001:001B8DAB
+    79 0001:001B8DBA    81 0001:001B8E00    83 0001:001B8E0D    84 0001:001B8E1E
+    85 0001:001B8E2F    87 0001:001B8E91    89 0001:001B8EAC    92 0001:001B8EBC
+    94 0001:001B8EC6    96 0001:001B8ED6    97 0001:001B8EE0    99 0001:001B8EEC
+   101 0001:001B8EFC   102 0001:001B8F0F   104 0001:001B8F14   105 0001:001B8F1D
+   106 0001:001B8F2E   107 0001:001B8F3A   109 0001:001B8F48   110 0001:001B8F56
+   112 0001:001B8F65   113 0001:001B8F72   114 0001:001B8F93   116 0001:001B8F95
+   117 0001:001B8FAA   118 0001:001B8FB6   119 0001:001B8FBF   120 0001:001B8FD0
+   123 0001:001B8FE2   125 0001:001B8FE8   126 0001:001B8FF2   128 0001:001B8FF6
+   132 0001:001B9250   134 0001:001B9267   135 0001:001B9273   137 0001:001B927F
+   138 0001:001B9294   143 0001:001B9298   144 0001:001B92BD   145 0001:001B92C9
+   147 0001:001B92D3
+
+Line numbers for fPCEEdit(Encounter\fPCEEdit.pas) segment .itext
+
+   140 0002:000012A4   142 0002:000012AB
+
+Line numbers for fNotesBP(fNotesBP.pas) segment .text
+
+    37 0001:001B9520    38 0001:001B9529    39 0001:001B9540    40 0001:001B954E
+    43 0001:001B9556    44 0001:001B955F    45 0001:001B956A    48 0001:001B9589
+    50 0001:001B9599    55 0001:001B95A4    56 0001:001B95B6    61 0001:001B95DC
+    62 0001:001B95E1    66 0001:001B95E4    68 0001:001B95EA    69 0001:001B95F0
+    70 0001:001B95F5    71 0001:001B9602    73 0001:001B9609    75 0001:001B963C
+
+Line numbers for fNoteProps(fNoteProps.pas) segment .text
+
+   213 0001:001B9CCC   214 0001:001B9CFE   215 0001:001B9D15   216 0001:001B9D22
+   217 0001:001B9D33   218 0001:001B9D41   222 0001:001B9D49   223 0001:001B9D6D
+   224 0001:001B9D76   225 0001:001B9D7F   226 0001:001B9D8F   227 0001:001B9DA8
+   229 0001:001B9DB4   230 0001:001B9DBB   232 0001:001B9DC4   234 0001:001B9DE7
+   235 0001:001B9DF4   236 0001:001B9E04   238 0001:001B9E14   239 0001:001B9E21
+   240 0001:001B9E34   241 0001:001B9E48   242 0001:001B9E60   243 0001:001B9E7B
+   244 0001:001B9E8F   248 0001:001B9EA8   249 0001:001B9EBC   250 0001:001B9ECD
+   254 0001:001B9EFE   255 0001:001B9F0B   256 0001:001B9F1E   257 0001:001B9F2E
+   258 0001:001B9F3F   259 0001:001B9F63   262 0001:001B9F85   263 0001:001B9F92
+   265 0001:001B9F98   267 0001:001B9F9D   268 0001:001B9FAD   269 0001:001B9FBE
+   270 0001:001B9FE2   272 0001:001B9FF6   273 0001:001BA01C   275 0001:001BA032
+   276 0001:001BA045   283 0001:001BA058   284 0001:001BA065   285 0001:001BA0A1
+   286 0001:001BA0B2   288 0001:001BA0D6   289 0001:001BA0E8   290 0001:001BA0F2
+   291 0001:001BA10C   292 0001:001BA124   293 0001:001BA13B   294 0001:001BA145
+   296 0001:001BA159   297 0001:001BA165   298 0001:001BA17A   299 0001:001BA18A
+   300 0001:001BA195   301 0001:001BA1AA   302 0001:001BA1BA   304 0001:001BA1C4
+   305 0001:001BA1CC   307 0001:001BA1E7   308 0001:001BA1F1   309 0001:001BA1FB
+   312 0001:001BA207   313 0001:001BA211   314 0001:001BA21B   318 0001:001BA227
+   320 0001:001BA256   321 0001:001BA268   325 0001:001BA27A   327 0001:001BA286
+   328 0001:001BA299   329 0001:001BA2A9   331 0001:001BA2BC   332 0001:001BA2DE
+   333 0001:001BA2E8   334 0001:001BA2F3   335 0001:001BA2FD   338 0001:001BA306
+   339 0001:001BA314   341 0001:001BA31C   342 0001:001BA32C   344 0001:001BA336
+   346 0001:001BA342   347 0001:001BA355   349 0001:001BA36A   350 0001:001BA36E
+   351 0001:001BA380   352 0001:001BA394   353 0001:001BA3D2   355 0001:001BA3E1
+   356 0001:001BA3EE   359 0001:001BA42C   360 0001:001BA438   363 0001:001BA445
+   364 0001:001BA453   366 0001:001BA45B   368 0001:001BA467   369 0001:001BA473
+   370 0001:001BA488   372 0001:001BA48E   373 0001:001BA49B   375 0001:001BA4B5
+   377 0001:001BA4D7   386 0001:001BA4EA   388 0001:001BA4F9   389 0001:001BA50A
+   390 0001:001BA517   392 0001:001BA53F   394 0001:001BA54E   395 0001:001BA55F
+   396 0001:001BA56C   398 0001:001BA594   400 0001:001BA5B8   401 0001:001BA5DF
+   405 0001:001BA613   406 0001:001BA618   407 0001:001BA620   414 0001:001BA635
+   415 0001:001BA648   417 0001:001BA658   424 0001:001BA868   436 0001:001BA86C
+   442 0001:001BA870   443 0001:001BA876   445 0001:001BA87F   448 0001:001BA8BB
+   449 0001:001BA8D0   450 0001:001BA909   452 0001:001BA945   453 0001:001BA95A
+   455 0001:001BA962   457 0001:001BA972   459 0001:001BA984   460 0001:001BA99C
+   462 0001:001BA9AD   463 0001:001BA9D0   464 0001:001BA9E1   468 0001:001BAA10
+   469 0001:001BAA24   470 0001:001BAA2F   473 0001:001BAA3D   483 0001:001BAA40
+   484 0001:001BAA5F   485 0001:001BAA74   486 0001:001BAA7F   487 0001:001BAA8C
+   489 0001:001BAA94   490 0001:001BAAA2   491 0001:001BAAC1   492 0001:001BAAD1
+   493 0001:001BAAE9   495 0001:001BAAF6   496 0001:001BAB0B   497 0001:001BAB3E
+   495 0001:001BAB63   498 0001:001BAB68   502 0001:001BAB7A   503 0001:001BAB8A
+   505 0001:001BABA1   506 0001:001BABBB   507 0001:001BABCC   509 0001:001BABE9
+   513 0001:001BACC4   514 0001:001BACCA   515 0001:001BACD7   516 0001:001BACE2
+   518 0001:001BACE6   519 0001:001BAD05   521 0001:001BAD29   527 0001:001BAD2C
+   528 0001:001BAD35   530 0001:001BAD4D   531 0001:001BAD56   533 0001:001BAD76
+   535 0001:001BAD96   536 0001:001BADB5   538 0001:001BADD3   542 0001:001BADDC
+   543 0001:001BADE4   557 0001:001BADE8   558 0001:001BADEE   559 0001:001BADF4
+   560 0001:001BAE2A   562 0001:001BAE3B   563 0001:001BAE53   566 0001:001BAE5D
+   570 0001:001BAE6D   571 0001:001BAE71   572 0001:001BAE83   577 0001:001BAEB0
+   580 0001:001BAECA   581 0001:001BAEE2   582 0001:001BAEE9   583 0001:001BAEF6
+   584 0001:001BAF0F   587 0001:001BAF28   588 0001:001BAF31   589 0001:001BAF42
+   592 0001:001BB0BC   593 0001:001BB0BF   594 0001:001BB0E9   598 0001:001BB0EC
+   599 0001:001BB0F3   605 0001:001BB0F4   606 0001:001BB0FD   607 0001:001BB11B
+   611 0001:001BB124   612 0001:001BB138   615 0001:001BB13C   616 0001:001BB13F
+   617 0001:001BB148   618 0001:001BB15F   621 0001:001BB164   622 0001:001BB167
+   623 0001:001BB18B   628 0001:001BB190   629 0001:001BB1AB   631 0001:001BB1D2
+   632 0001:001BB1DC   633 0001:001BB1F0   634 0001:001BB1FB   636 0001:001BB1FD
+   637 0001:001BB214   638 0001:001BB252   645 0001:001BB27C   646 0001:001BB29E
+   647 0001:001BB2AC   667 0001:001BB2B8   668 0001:001BB2C1   669 0001:001BB2C9
+   670 0001:001BB2DE   671 0001:001BB2EB   673 0001:001BB2F5   675 0001:001BB302
+   676 0001:001BB330   681 0001:001BB387   682 0001:001BB3BA   686 0001:001BB407
+   688 0001:001BB411   690 0001:001BB41A   691 0001:001BB435   695 0001:001BB452
+   696 0001:001BB470   697 0001:001BB482   698 0001:001BB4A0   699 0001:001BB4AF
+   701 0001:001BB4BB   702 0001:001BB4D6   703 0001:001BB4E3   704 0001:001BB514
+   708 0001:001BB521   709 0001:001BB543   710 0001:001BB55F   711 0001:001BB598
+   713 0001:001BB5A8   715 0001:001BB5C6   716 0001:001BB618   718 0001:001BB636
+   719 0001:001BB657   721 0001:001BB673   723 0001:001BB680   725 0001:001BB68D
+   726 0001:001BB6B1   727 0001:001BB6C2   728 0001:001BB6E3   729 0001:001BB721
+   733 0001:001BB738   734 0001:001BB749   736 0001:001BB760   737 0001:001BB77E
+   738 0001:001BB7B9   742 0001:001BB7CB   744 0001:001BB7ED   747 0001:001BB7F7
+   748 0001:001BB819   749 0001:001BB823   753 0001:001BBD70   755 0001:001BBD7A
+   767 0001:001BBD7C   771 0001:001BBD80   772 0001:001BBD8C   773 0001:001BBDB0
+   776 0001:001BBDB8   777 0001:001BBDBE   778 0001:001BBDCB   779 0001:001BBDD8
+   780 0001:001BBDE5   781 0001:001BBDF2   785 0001:001BBDF8   786 0001:001BBDFD
+   792 0001:001BBE00   793 0001:001BBE03   794 0001:001BBE11   795 0001:001BBE17
+   796 0001:001BBE20   798 0001:001BBE2C   799 0001:001BBE36   800 0001:001BBE58
+   802 0001:001BBE69   807 0001:001BBE98   808 0001:001BBE9C   809 0001:001BBECB
+   810 0001:001BBEEE   811 0001:001BBF11   812 0001:001BBF28   813 0001:001BBF4B
+   816 0001:001BBF50   817 0001:001BBF53   818 0001:001BBF64   819 0001:001BBF76
+   822 0001:001BBF78   823 0001:001BBF7B   824 0001:001BBF9B   826 0001:001BBFAB
+   827 0001:001BBFC6   828 0001:001BBFCF   829 0001:001BBFE1   830 0001:001BC003
+   831 0001:001BC019   833 0001:001BC02B   834 0001:001BC03B   836 0001:001BC04C
+   837 0001:001BC05D   840 0001:001BC06E   844 0001:001BC0F4   845 0001:001BC10A
+   850 0001:001BC10C   851 0001:001BC11E   852 0001:001BC127   853 0001:001BC136
+   856 0001:001BC150   857 0001:001BC15B   858 0001:001BC163   859 0001:001BC16F
+   862 0001:001BC180   863 0001:001BC1A2   864 0001:001BC1C2   867 0001:001BC1E8
+   868 0001:001BC203   869 0001:001BC22D   872 0001:001BC258   873 0001:001BC27A
+   874 0001:001BC2A0   875 0001:001BC2B5   878 0001:001BC2F8   879 0001:001BC316
+   880 0001:001BC318   881 0001:001BC33F   882 0001:001BC341   888 0001:001BC36C
+   889 0001:001BC393   890 0001:001BC39E   893 0001:001BC3B8   894 0001:001BC3C8
+   895 0001:001BC3D4   896 0001:001BC402   897 0001:001BC430   898 0001:001BC45E
+   899 0001:001BC46C   901 0001:001BC47B   902 0001:001BC488   890 0001:001BC489
+   903 0001:001BC492   907 0001:001BC51C   908 0001:001BC527   913 0001:001BC528
+   914 0001:001BC548   915 0001:001BC568   916 0001:001BC577   917 0001:001BC585
+   918 0001:001BC59A   921 0001:001BC64F   923 0001:001BC65F   926 0001:001BC6CC
+   927 0001:001BC6CF   928 0001:001BC6F5   930 0001:001BC725
+
+Line numbers for fTemplateObjects(Templates\fTemplateObjects.pas) segment .text
+
+    39 0001:001BC978    40 0001:001BC97B    42 0001:001BC982    43 0001:001BC9A3
+    44 0001:001BC9BD    45 0001:001BC9D7    46 0001:001BC9E2    47 0001:001BC9F0
+    51 0001:001BC9F4    52 0001:001BC9F9    58 0001:001BC9FC    59 0001:001BCA18
+    61 0001:001BCA3E    62 0001:001BCA51    63 0001:001BCAAD    64 0001:001BCACC
+    66 0001:001BCADA    70 0001:001BCB10    71 0001:001BCB15    75 0001:001BCB18
+    76 0001:001BCB1D    81 0001:001BCB20    82 0001:001BCB23    86 0001:001BCB24
+    87 0001:001BCB2A    88 0001:001BCB2F    92 0001:001BCB30    93 0001:001BCB4B
+    99 0001:001BCB4C   100 0001:001BCB6A   101 0001:001BCB78   102 0001:001BCB86
+   104 0001:001BCB92   105 0001:001BCB96   106 0001:001BCB9B   108 0001:001BCBAF
+   109 0001:001BCBB3   110 0001:001BCBCF   111 0001:001BCC0C   109 0001:001BCC3B
+   113 0001:001BCC3E   115 0001:001BCC44   116 0001:001BCC65   118 0001:001BCCBC
+
+Line numbers for fTemplateView(Templates\fTemplateView.pas) segment .text
+
+    52 0001:001BCF88    53 0001:001BCFA9    54 0001:001BCFAE    56 0001:001BCFC4
+    57 0001:001BCFCB    58 0001:001BCFDE    59 0001:001BCFF7    60 0001:001BD00C
+    61 0001:001BD021    62 0001:001BD043    63 0001:001BD05E    66 0001:001BD067
+    67 0001:001BD07E    68 0001:001BD08D    69 0001:001BD094    70 0001:001BD0A0
+    72 0001:001BD0D2    76 0001:001BD114    77 0001:001BD119    81 0001:001BD11C
+    82 0001:001BD11F    83 0001:001BD129    84 0001:001BD12C    87 0001:001BD130
+    89 0001:001BD133    90 0001:001BD13A    91 0001:001BD141    94 0001:001BD144
+    95 0001:001BD147    96 0001:001BD159    98 0001:001BD164    99 0001:001BD16D
+   100 0001:001BD183   101 0001:001BD196   105 0001:001BD198   106 0001:001BD19F
+   109 0001:001BD1A0   110 0001:001BD1A3   111 0001:001BD1C1   112 0001:001BD1E2
+   116 0001:001BD1E4   117 0001:001BD1EF   121 0001:001BD1F0   122 0001:001BD1FB
+   125 0001:001BD1FC   126 0001:001BD212   127 0001:001BD237   132 0001:001BD270
+   133 0001:001BD273   134 0001:001BD28D   135 0001:001BD2A7   137 0001:001BD2D7
+
+Line numbers for fTemplateAutoGen(Templates\fTemplateAutoGen.pas) segment .text
+
+    50 0001:001BD540    51 0001:001BD56A    52 0001:001BD571    53 0001:001BD578
+    54 0001:001BD57E    55 0001:001BD595    56 0001:001BD5A3    59 0001:001BD5AB
+    60 0001:001BD5B6    62 0001:001BD5C6    64 0001:001BD5DD    66 0001:001BD60B
+    67 0001:001BD63C    71 0001:001BD672    73 0001:001BD675    75 0001:001BD68C
+    76 0001:001BD6A7    82 0001:001BD700    84 0001:001BD710    91 0001:001BD770
+    92 0001:001BD78D    93 0001:001BD799    94 0001:001BD7A3    95 0001:001BD7AB
+    97 0001:001BD7AF    98 0001:001BD7BC    99 0001:001BD7C9   101 0001:001BD7D2
+   102 0001:001BD7DF   104 0001:001BD7E6   107 0001:001BD7F9   109 0001:001BD800
+   110 0001:001BD80D   111 0001:001BD81A   113 0001:001BD827   114 0001:001BD82B
+   115 0001:001BD838   117 0001:001BD84A   118 0001:001BD84E   119 0001:001BD86B
+   120 0001:001BD8A6   118 0001:001BD8D2   122 0001:001BD8D7   123 0001:001BD8DD
+   124 0001:001BD8FB   126 0001:001BD902   128 0001:001BD910   132 0001:001BD93C
+   133 0001:001BD945   134 0001:001BD95C   137 0001:001BD964   138 0001:001BD967
+   139 0001:001BD976   140 0001:001BD980   143 0001:001BD984   144 0001:001BD987
+   145 0001:001BD996   146 0001:001BD9A0   151 0001:001BD9A4   152 0001:001BD9B1
+   154 0001:001BD9E0
+
+Line numbers for XMLUtils(..\CPRS-Lib\XMLUtils.pas) segment .text
+
+    27 0001:001BDA40    28 0001:001BDA64    29 0001:001BDA6E    31 0001:001BDA7C
+    32 0001:001BDA89    34 0001:001BDA91    35 0001:001BDA9D    37 0001:001BDAA1
+    38 0001:001BDACC    40 0001:001BDADB    41 0001:001BDADF    42 0001:001BDAED
+    29 0001:001BDAF3    43 0001:001BDAF8    51 0001:001BDB24    52 0001:001BDB5E
+    53 0001:001BDB65    54 0001:001BDB7C    56 0001:001BDB82    57 0001:001BDB97
+    59 0001:001BDBA1    60 0001:001BDBB9    62 0001:001BDBF0    63 0001:001BDBFA
+    65 0001:001BDBFC    57 0001:001BDBFD    67 0001:001BDC00    75 0001:001BDC50
+    76 0001:001BDC8C    77 0001:001BDC93    78 0001:001BDCAA    79 0001:001BDCB8
+    81 0001:001BDCC2    82 0001:001BDCD7    84 0001:001BDCE1    85 0001:001BDCF9
+    87 0001:001BDD2A    88 0001:001BDD4B    90 0001:001BDD4D    82 0001:001BDD4E
+    93 0001:001BDD5E    94 0001:001BDD66    96 0001:001BDD76   104 0001:001BDDCC
+   105 0001:001BDDF7   106 0001:001BDDFE   107 0001:001BDE15   108 0001:001BDE23
+   110 0001:001BDE2D   111 0001:001BDE42   113 0001:001BDE50   114 0001:001BDE68
+   116 0001:001BDE9B   117 0001:001BDEA0   118 0001:001BDEAC   120 0001:001BDEE4
+   111 0001:001BDEE5   123 0001:001BDEF9   124 0001:001BDF01   126 0001:001BDF11
+
+Line numbers for XMLUtils(..\CPRS-Lib\XMLUtils.pas) segment .itext
+
+   128 0002:000012AC
+
+Line numbers for rEventHooks(rEventHooks.pas) segment .text
+
+    16 0001:001BDFD4    17 0001:001BDFEA    18 0001:001BE008    21 0001:001BE044
+    22 0001:001BE04D    23 0001:001BE067    27 0001:001BE084    28 0001:001BE093
+    29 0001:001BE0A0    32 0001:001BE0BC    33 0001:001BE0C5    34 0001:001BE0DF
+    36 0001:001BE12A
+
+Line numbers for fTemplateEditor(Templates\fTemplateEditor.pas) segment .text
+
+   505 0001:001BFA7C   506 0001:001BFAAB   508 0001:001BFAB9   509 0001:001BFAC1
+   510 0001:001BFAC9   511 0001:001BFACB   513 0001:001BFAD7   514 0001:001BFAE8
+   516 0001:001BFAEC   517 0001:001BFAFC   520 0001:001BFB0A   522 0001:001BFB0E
+   523 0001:001BFB24   526 0001:001BFB45   527 0001:001BFB5C   530 0001:001BFB6A
+   531 0001:001BFB75   532 0001:001BFB90   533 0001:001BFBAB   534 0001:001BFBC6
+   535 0001:001BFBE9   536 0001:001BFC05   537 0001:001BFC0A   538 0001:001BFC2D
+   539 0001:001BFC31   541 0001:001BFC4D   542 0001:001BFC57   544 0001:001BFC5B
+   546 0001:001BFC6A   547 0001:001BFC7D   548 0001:001BFC8E   549 0001:001BFC92
+   551 0001:001BFCA4   554 0001:001BFCC3   555 0001:001BFCCB   556 0001:001BFCDB
+   558 0001:001BFCE1   559 0001:001BFCEC   561 0001:001BFCF2   562 0001:001BFD06
+   565 0001:001BFD17   568 0001:001BFD2F   570 0001:001BFD3F   581 0001:001BFD7C
+   582 0001:001BFD9D   584 0001:001BFDBA   585 0001:001BFDD1   587 0001:001BFDD5
+   588 0001:001BFDEC   590 0001:001BFDF0   591 0001:001BFDF2   593 0001:001BFDFA
+   594 0001:001BFE07   595 0001:001BFE09   596 0001:001BFE12   597 0001:001BFE1B
+   599 0001:001BFE2C   600 0001:001BFE35   601 0001:001BFE3B   603 0001:001BFE55
+   604 0001:001BFE59   606 0001:001BFE5D   607 0001:001BFE70   609 0001:001BFE7E
+   610 0001:001BFE86   614 0001:001BFE8E   615 0001:001BFEA3   617 0001:001BFEA9
+   619 0001:001BFEB2   620 0001:001BFEC8   624 0001:001BFEF1   625 0001:001BFF13
+   626 0001:001BFF1B   628 0001:001BFF30   629 0001:001BFF3D   630 0001:001BFF4A
+   632 0001:001BFF5C   633 0001:001BFF6E   634 0001:001BFF80   635 0001:001BFF8D
+   637 0001:001BFF95   638 0001:001BFF9E   641 0001:001BFFA9   642 0001:001BFFB2
+   644 0001:001BFFBB   646 0001:001BFFC8   647 0001:001BFFCE   648 0001:001BFFD7
+   651 0001:001BFFE0   652 0001:001BFFEE   658 0001:001BFFF9   661 0001:001C0048
+   662 0001:001C004B   664 0001:001C0056   665 0001:001C005B   666 0001:001C006D
+   667 0001:001C007C   669 0001:001C0081   672 0001:001C0084   673 0001:001C009B
+   675 0001:001C00A2   676 0001:001C00BC   677 0001:001C00DE   678 0001:001C00F8
+   679 0001:001C0112   680 0001:001C0129   682 0001:001C014A   683 0001:001C015A
+   684 0001:001C0167   686 0001:001C0170   687 0001:001C0186   690 0001:001C01A4
+   692 0001:001C01AB   693 0001:001C01C1   695 0001:001C01DD   696 0001:001C01E4
+   698 0001:001C01EB   699 0001:001C01F7   700 0001:001C0203   701 0001:001C020F
+   702 0001:001C021B   703 0001:001C0227   704 0001:001C0233   705 0001:001C023F
+   706 0001:001C024B   707 0001:001C0257   708 0001:001C0263   709 0001:001C0271
+   711 0001:001C0288   712 0001:001C0298   713 0001:001C02A5   714 0001:001C02B2
+   717 0001:001C02B9   719 0001:001C02C0   721 0001:001C02DA   723 0001:001C02DF
+   724 0001:001C02FF   726 0001:001C0313   727 0001:001C0328   728 0001:001C032F
+   730 0001:001C0336   732 0001:001C033D   733 0001:001C034A   734 0001:001C0357
+   735 0001:001C0374   737 0001:001C037B   738 0001:001C038B   740 0001:001C039B
+   741 0001:001C03AD   742 0001:001C03B4   745 0001:001C03F8   746 0001:001C03FB
+   747 0001:001C040D   748 0001:001C0416   749 0001:001C0426   750 0001:001C0438
+   751 0001:001C044A   752 0001:001C045C   753 0001:001C046E   754 0001:001C0483
+   755 0001:001C048A   759 0001:001C048C   761 0001:001C048F   764 0001:001C0494
+   765 0001:001C0497   766 0001:001C04AB   772 0001:001C04B0   773 0001:001C04B5
+   774 0001:001C04C7   775 0001:001C04E5   777 0001:001C04ED   778 0001:001C04F3
+   780 0001:001C04FA   784 0001:001C0500   785 0001:001C050D   787 0001:001C053B
+   788 0001:001C0549   789 0001:001C054C   793 0001:001C0554   794 0001:001C0561
+   796 0001:001C058F   797 0001:001C059D   798 0001:001C05A0   802 0001:001C05A8
+   803 0001:001C05AB   804 0001:001C05C2   808 0001:001C05C4   809 0001:001C05C7
+   810 0001:001C05DE   816 0001:001C05E0   817 0001:001C05E8   818 0001:001C05EA
+   820 0001:001C05EE   821 0001:001C05F1   822 0001:001C05FC   824 0001:001C0600
+   826 0001:001C060C   827 0001:001C061C   830 0001:001C0620   831 0001:001C062A
+   833 0001:001C064C   837 0001:001C065E   845 0001:001C0668   846 0001:001C0676
+   847 0001:001C0680   848 0001:001C0685   850 0001:001C0689   851 0001:001C068C
+   852 0001:001C0691   854 0001:001C0695   856 0001:001C06A0   857 0001:001C06AB
+   858 0001:001C06CB   861 0001:001C06D2   862 0001:001C06DD   863 0001:001C06F3
+   866 0001:001C06FC   868 0001:001C0700   869 0001:001C0710   870 0001:001C071B
+   872 0001:001C0724   875 0001:001C074C   876 0001:001C0756   877 0001:001C0779
+   879 0001:001C077E   880 0001:001C0780   881 0001:001C078D   882 0001:001C079A
+   886 0001:001C07A9   887 0001:001C07B6   888 0001:001C07C3   890 0001:001C07D3
+   891 0001:001C07EE   892 0001:001C0800   893 0001:001C080D   894 0001:001C081A
+   895 0001:001C0827   896 0001:001C0845   897 0001:001C0852   898 0001:001C085F
+   899 0001:001C086C   900 0001:001C0879   901 0001:001C0886   902 0001:001C0893
+   903 0001:001C08A0   904 0001:001C08AD   905 0001:001C08BA   906 0001:001C08C7
+   907 0001:001C08D5   908 0001:001C08E2   909 0001:001C08F2   910 0001:001C0902
+   911 0001:001C090F   912 0001:001C091C   913 0001:001C0931   914 0001:001C093E
+   915 0001:001C094B   916 0001:001C0958   917 0001:001C0965   918 0001:001C096C
+   919 0001:001C0973   925 0001:001C0978   926 0001:001C097C   927 0001:001C0985
+   928 0001:001C098E   929 0001:001C099A   930 0001:001C09A2   931 0001:001C09AE
+   932 0001:001C09B6   933 0001:001C09C0   934 0001:001C09C9   935 0001:001C09D7
+   937 0001:001C09E3   938 0001:001C09EA   940 0001:001C09F8   941 0001:001C0A04
+   942 0001:001C0A0B   946 0001:001C0A10   947 0001:001C0A15   950 0001:001C0A18
+   951 0001:001C0A1E   952 0001:001C0A2B   953 0001:001C0A38   955 0001:001C0A3C
+   956 0001:001C0A49   957 0001:001C0A56   958 0001:001C0A67   962 0001:001C0A81
+   963 0001:001C0A8E   965 0001:001C0A9B   975 0001:001C0AA0   976 0001:001C0AC5
+   977 0001:001C0AD2   978 0001:001C0ADC   979 0001:001C0AEA   981 0001:001C0AF2
+   982 0001:001C0AFE   984 0001:001C0B00   985 0001:001C0B04   986 0001:001C0B08
+   987 0001:001C0B0C   988 0001:001C0B17   989 0001:001C0B23   990 0001:001C0B36
+   993 0001:001C0B4B   994 0001:001C0B5B   995 0001:001C0B6A   996 0001:001C0B7A
+   997 0001:001C0B89   998 0001:001C0B98   999 0001:001C0BA7  1001 0001:001C0BAF
+  1002 0001:001C0BBD  1004 0001:001C0BC2  1005 0001:001C0BD2  1007 0001:001C0BDE
+  1008 0001:001C0BF3  1009 0001:001C0C0B  1011 0001:001C0C20  1015 0001:001C0C3F
+  1016 0001:001C0C4F  1017 0001:001C0C5F  1019 0001:001C0C7A  1020 0001:001C0C95
+  1021 0001:001C0CC0  1024 0001:001C0CE2  1025 0001:001C0CF3  1026 0001:001C0D14
+  1028 0001:001C0D49  1029 0001:001C0D63  1030 0001:001C0D6E  1034 0001:001C0D80
+  1035 0001:001C0D9D  1037 0001:001C0DAD  1038 0001:001C0DCE  1040 0001:001C0DDA
+  1041 0001:001C0DDE  1045 0001:001C0DE7  1047 0001:001C0DF5  1048 0001:001C0DFE
+  1050 0001:001C0E04  1051 0001:001C0E0D  1053 0001:001C0E13  1056 0001:001C0E19
+  1057 0001:001C0E1F  1059 0001:001C0E25  1061 0001:001C0E2B  1062 0001:001C0E31
+  1064 0001:001C0E35  1065 0001:001C0E5B  1066 0001:001C0E6F  1067 0001:001C0E7B
+  1068 0001:001C0E94  1069 0001:001C0EAD  1070 0001:001C0EC6  1071 0001:001C0EDF
+  1073 0001:001C0EEB  1074 0001:001C0EFA  1075 0001:001C0F13  1076 0001:001C0F19
+  1078 0001:001C0F32  1079 0001:001C0F5E  1080 0001:001C0F70  1083 0001:001C0F8D
+  1084 0001:001C0F9D  1085 0001:001C0FAD  1087 0001:001C0FBE  1089 0001:001C0FCA
+  1090 0001:001C0FDA  1091 0001:001C0FF1  1095 0001:001C1007  1096 0001:001C1017
+  1097 0001:001C1028  1099 0001:001C1038  1100 0001:001C104D  1101 0001:001C1059
+  1104 0001:001C1070  1105 0001:001C1083  1107 0001:001C1093  1110 0001:001C10CA
+  1113 0001:001C10E1  1114 0001:001C10F4  1116 0001:001C1104  1118 0001:001C1128
+  1119 0001:001C113D  1123 0001:001C1154  1124 0001:001C1167  1125 0001:001C1177
+  1126 0001:001C118A  1128 0001:001C119A  1131 0001:001C11CB  1132 0001:001C11E0
+  1133 0001:001C11F5  1135 0001:001C120B  1139 0001:001C1225  1140 0001:001C1238
+  1145 0001:001C124A  1146 0001:001C125D  1147 0001:001C126D  1148 0001:001C1280
+  1149 0001:001C1290  1150 0001:001C12A3  1152 0001:001C12B3  1153 0001:001C12B9
+  1156 0001:001C12D7  1157 0001:001C12EA  1158 0001:001C12FA  1159 0001:001C130A
+  1160 0001:001C131B  1162 0001:001C132B  1168 0001:001C1337  1169 0001:001C133B
+  1170 0001:001C133F  1171 0001:001C1343  1173 0001:001C1356  1175 0001:001C135C
+  1176 0001:001C136C  1178 0001:001C137D  1180 0001:001C1383  1182 0001:001C1397
+  1184 0001:001C13A1  1185 0001:001C13B4  1186 0001:001C13C7  1187 0001:001C13DA
+  1188 0001:001C13ED  1189 0001:001C1400  1190 0001:001C1413  1191 0001:001C1426
+  1192 0001:001C1439  1193 0001:001C144C  1194 0001:001C145D  1195 0001:001C1467
+  1196 0001:001C1472  1197 0001:001C1482  1199 0001:001C1492  1204 0001:001C14EC
+  1206 0001:001C1504  1208 0001:001C1527  1210 0001:001C153C  1216 0001:001C1688
+  1217 0001:001C168B  1219 0001:001C16AA  1221 0001:001C16BB  1222 0001:001C16CD
+  1224 0001:001C16D4  1225 0001:001C16D9  1226 0001:001C16E6  1227 0001:001C16F6
+  1235 0001:001C16F8  1236 0001:001C1716  1238 0001:001C1743  1240 0001:001C175F
+  1241 0001:001C1776  1242 0001:001C1784  1244 0001:001C1793  1245 0001:001C17AB
+  1246 0001:001C17B4  1247 0001:001C17CB  1246 0001:001C17E1  1248 0001:001C17E4
+  1250 0001:001C17EA  1251 0001:001C17F8  1256 0001:001C1806  1264 0001:001C182C
+  1265 0001:001C1836  1267 0001:001C1863  1269 0001:001C187F  1270 0001:001C1893
+  1271 0001:001C18A1  1273 0001:001C18B8  1274 0001:001C18CF  1275 0001:001C18D8
+  1277 0001:001C18EA  1278 0001:001C18F4  1279 0001:001C1900  1275 0001:001C1901
+  1280 0001:001C1904  1282 0001:001C1912  1283 0001:001C191C  1287 0001:001C1928
+  1288 0001:001C1932  1290 0001:001C193C  1291 0001:001C1954  1292 0001:001C195B
+  1293 0001:001C196E  1297 0001:001C197C  1305 0001:001C1984  1306 0001:001C198B
+  1308 0001:001C19B8  1310 0001:001C19D4  1311 0001:001C19E8  1312 0001:001C19F6
+  1314 0001:001C1A0D  1315 0001:001C1A24  1316 0001:001C1A2D  1318 0001:001C1A44
+  1319 0001:001C1A51  1320 0001:001C1A68  1321 0001:001C1A7F  1316 0001:001C1A82
+  1322 0001:001C1A85  1323 0001:001C1A93  1327 0001:001C1AA1  1334 0001:001C1AA8
+  1335 0001:001C1AC0  1337 0001:001C1AED  1339 0001:001C1B09  1340 0001:001C1B1F
+  1341 0001:001C1B2D  1343 0001:001C1B3C  1344 0001:001C1B5D  1345 0001:001C1B66
+  1346 0001:001C1B7A  1348 0001:001C1B7E  1349 0001:001C1B8C  1354 0001:001C1B9A
+  1360 0001:001C1BC0  1361 0001:001C1BC8  1362 0001:001C1BCC  1363 0001:001C1BD9
+  1364 0001:001C1BE6  1366 0001:001C1BF0  1367 0001:001C1BF4  1369 0001:001C1BF8
+  1370 0001:001C1BFA  1369 0001:001C1C1C  1372 0001:001C1C21  1374 0001:001C1C27
+  1376 0001:001C1C31  1377 0001:001C1C38  1378 0001:001C1C59  1380 0001:001C1C63
+  1381 0001:001C1C84  1383 0001:001C1C8C  1386 0001:001C1C98  1387 0001:001C1C9E
+  1388 0001:001C1CBC  1389 0001:001C1CCE  1393 0001:001C1CD4  1394 0001:001C1CDB
+  1395 0001:001C1CE5  1396 0001:001C1CF3  1398 0001:001C1D13  1400 0001:001C1D25
+  1401 0001:001C1D36  1407 0001:001C1D3C  1408 0001:001C1D40  1409 0001:001C1D53
+  1411 0001:001C1D57  1412 0001:001C1D7F  1409 0001:001C1D88  1414 0001:001C1D8C
+  1415 0001:001C1DA4  1416 0001:001C1DAB  1419 0001:001C1DB0  1420 0001:001C1DB4
+  1422 0001:001C1DEC  1423 0001:001C1E04  1424 0001:001C1E0B  1432 0001:001C1E10
+  1433 0001:001C1E3C  1434 0001:001C1E49  1435 0001:001C1E53  1436 0001:001C1E61
+  1437 0001:001C1E72  1438 0001:001C1E83  1439 0001:001C1E87  1440 0001:001C1E8B
+  1442 0001:001C1E91  1444 0001:001C1EA2  1445 0001:001C1EB1  1446 0001:001C1EBF
+  1448 0001:001C1EDA  1449 0001:001C1EDE  1450 0001:001C1EF4  1451 0001:001C1F05
+  1454 0001:001C1F23  1455 0001:001C1F39  1456 0001:001C1F3D  1458 0001:001C1F54
+  1460 0001:001C1F79  1461 0001:001C1F7D  1463 0001:001C1F7F  1456 0001:001C1F82
+  1464 0001:001C1F85  1465 0001:001C1F9A  1467 0001:001C1FC3  1472 0001:001C1FD3
+  1473 0001:001C1FE3  1474 0001:001C1FF3  1476 0001:001C1FFB  1477 0001:001C2007
+  1478 0001:001C2025  1479 0001:001C2029  1480 0001:001C2034  1481 0001:001C2046
+  1482 0001:001C2058  1485 0001:001C208B  1487 0001:001C20A0  1490 0001:001C20D0
+  1491 0001:001C20D3  1492 0001:001C20E0  1493 0001:001C20F0  1495 0001:001C20F9
+  1496 0001:001C2103  1498 0001:001C210A  1500 0001:001C2113  1501 0001:001C211D
+  1505 0001:001C2124  1507 0001:001C212E  1508 0001:001C213A  1509 0001:001C2146
+  1512 0001:001C214F  1513 0001:001C2164  1514 0001:001C2172  1515 0001:001C2177
+  1516 0001:001C217C  1517 0001:001C2181  1518 0001:001C218D  1528 0001:001C2190
+  1529 0001:001C21B1  1532 0001:001C21E6  1533 0001:001C21F1  1534 0001:001C21F7
+  1535 0001:001C21FF  1536 0001:001C2205  1537 0001:001C2216  1538 0001:001C221D
+  1540 0001:001C2227  1541 0001:001C2230  1543 0001:001C2243  1544 0001:001C2254
+  1545 0001:001C2258  1547 0001:001C2260  1549 0001:001C2266  1550 0001:001C226A
+  1551 0001:001C226E  1553 0001:001C227C  1554 0001:001C228A  1555 0001:001C2290
+  1556 0001:001C229B  1560 0001:001C22A1  1561 0001:001C22A5  1563 0001:001C22AB
+  1564 0001:001C22BC  1566 0001:001C22D6  1567 0001:001C22D7  1570 0001:001C22E0
+  1573 0001:001C22E4  1545 0001:001C22E6  1576 0001:001C22EE  1578 0001:001C22F8
+  1579 0001:001C2303  1581 0001:001C230D  1582 0001:001C2316  1583 0001:001C232A
+  1588 0001:001C2363  1590 0001:001C2375  1591 0001:001C2383  1592 0001:001C2389
+  1594 0001:001C23AA  1595 0001:001C23B8  1596 0001:001C23C1  1598 0001:001C23CD
+  1599 0001:001C23DB  1600 0001:001C23EC  1602 0001:001C23F0  1603 0001:001C2402
+  1604 0001:001C241A  1614 0001:001C2429  1615 0001:001C2438  1618 0001:001C2445
+  1628 0001:001C24B0  1629 0001:001C24D1  1632 0001:001C2506  1633 0001:001C2511
+  1634 0001:001C2517  1635 0001:001C251F  1636 0001:001C2525  1637 0001:001C2536
+  1638 0001:001C2544  1639 0001:001C254B  1641 0001:001C2555  1642 0001:001C255E
+  1644 0001:001C2571  1645 0001:001C2582  1646 0001:001C2586  1648 0001:001C258F
+  1650 0001:001C2595  1651 0001:001C2599  1652 0001:001C259D  1654 0001:001C25AB
+  1655 0001:001C25B9  1656 0001:001C25BF  1657 0001:001C25CA  1661 0001:001C25D0
+  1662 0001:001C25D4  1664 0001:001C25DA  1665 0001:001C25EB  1667 0001:001C2605
+  1668 0001:001C2606  1671 0001:001C260F  1674 0001:001C2614  1646 0001:001C2617
+  1677 0001:001C2620  1679 0001:001C262A  1680 0001:001C2635  1682 0001:001C263F
+  1683 0001:001C2648  1684 0001:001C265C  1689 0001:001C2695  1691 0001:001C26A7
+  1692 0001:001C26B5  1693 0001:001C26BB  1695 0001:001C26DC  1696 0001:001C26EA
+  1697 0001:001C26F3  1699 0001:001C2703  1700 0001:001C2711  1701 0001:001C2722
+  1703 0001:001C2726  1704 0001:001C2736  1706 0001:001C2748  1707 0001:001C275B
+  1708 0001:001C2773  1718 0001:001C2782  1719 0001:001C2791  1722 0001:001C279E
+  1731 0001:001C2808  1732 0001:001C2829  1735 0001:001C285E  1736 0001:001C286B
+  1737 0001:001C2871  1738 0001:001C287A  1739 0001:001C2880  1740 0001:001C288E
+  1742 0001:001C2897  1744 0001:001C28B2  1745 0001:001C28B6  1750 0001:001C28E3
+  1751 0001:001C28E9  1753 0001:001C28EF  1754 0001:001C28F5  1757 0001:001C2907
+  1759 0001:001C2939  1761 0001:001C294C  1762 0001:001C2959  1763 0001:001C295F
+  1765 0001:001C2971  1766 0001:001C297E  1767 0001:001C2989  1768 0001:001C2991
+  1769 0001:001C29A3  1773 0001:001C29BB  1783 0001:001C2B40  1784 0001:001C2B47
+  1786 0001:001C2B55  1787 0001:001C2B5D  1788 0001:001C2B64  1789 0001:001C2B68
+  1791 0001:001C2B78  1792 0001:001C2B7A  1794 0001:001C2B82  1795 0001:001C2B88
+  1796 0001:001C2B9E  1797 0001:001C2BA0  1798 0001:001C2BAB  1801 0001:001C2BB1
+  1802 0001:001C2BCB  1804 0001:001C2BCD  1805 0001:001C2BE5  1806 0001:001C2BED
+  1807 0001:001C2C07  1810 0001:001C2C0E  1811 0001:001C2C12  1813 0001:001C2C2D
+  1814 0001:001C2C46  1815 0001:001C2C5D  1816 0001:001C2C7F  1817 0001:001C2C97
+  1818 0001:001C2CB9  1819 0001:001C2CE4  1821 0001:001C2CF4  1822 0001:001C2CFB
+  1824 0001:001C2D0A  1825 0001:001C2D17  1827 0001:001C2D1B  1828 0001:001C2D24
+  1829 0001:001C2D2D  1832 0001:001C2D53  1834 0001:001C2D61  1838 0001:001C2D7D
+  1839 0001:001C2D7F  1838 0001:001C2D9C  1841 0001:001C2DA1  1842 0001:001C2DB8
+  1844 0001:001C2DC7  1845 0001:001C2DDE  1847 0001:001C2DED  1850 0001:001C2DFC
+  1851 0001:001C2E09  1856 0001:001C2E10  1857 0001:001C2E17  1858 0001:001C2E29
+  1859 0001:001C2E2E  1861 0001:001C2E36  1862 0001:001C2E3E  1870 0001:001C2E44
+  1871 0001:001C2E55  1872 0001:001C2E5D  1873 0001:001C2E60  1875 0001:001C2E82
+  1876 0001:001C2E85  1877 0001:001C2E98  1880 0001:001C2EBA  1882 0001:001C2EC4
+  1883 0001:001C2EE0  1884 0001:001C2EE4  1886 0001:001C2EEC  1887 0001:001C2EF9
+  1891 0001:001C2F0A  1900 0001:001C2F14  1901 0001:001C2F32  1903 0001:001C2F59
+  1904 0001:001C2F5F  1906 0001:001C2F68  1907 0001:001C2F6E  1911 0001:001C2F75
+  1912 0001:001C2F82  1914 0001:001C2FA6  1916 0001:001C2FC7  1917 0001:001C2FCA
+  1919 0001:001C2FED  1924 0001:001C3023  1925 0001:001C3034  1926 0001:001C3047
+  1928 0001:001C3058  1929 0001:001C3065  1930 0001:001C3068  1932 0001:001C307F
+  1935 0001:001C30B2  1937 0001:001C30CA  1938 0001:001C30E2  1939 0001:001C30F3
+  1941 0001:001C3105  1942 0001:001C3115  1943 0001:001C311A  1946 0001:001C3121
+  1949 0001:001C3128  1952 0001:001C312F  1953 0001:001C3134  1954 0001:001C313A
+  1955 0001:001C315E  1956 0001:001C3170  1958 0001:001C3183  1959 0001:001C318F
+  1961 0001:001C319D  1962 0001:001C31B3  1963 0001:001C31C6  1964 0001:001C31DE
+  1970 0001:001C31EB  1981 0001:001C3258  1982 0001:001C3284  1983 0001:001C3293
+  1984 0001:001C32A1  1985 0001:001C32B0  1986 0001:001C32BE  1988 0001:001C32CD
+  1989 0001:001C32D2  1991 0001:001C32DA  1993 0001:001C32F6  1994 0001:001C3303
+  1996 0001:001C3315  1997 0001:001C3324  1998 0001:001C337F  1999 0001:001C338C
+  2001 0001:001C3399  1991 0001:001C339C  2003 0001:001C33A5  1986 0001:001C33A9
+  2008 0001:001C33B2  2010 0001:001C33BD  2012 0001:001C33D9  2013 0001:001C33E7
+  2014 0001:001C33F4  2015 0001:001C3402  2017 0001:001C340C  2018 0001:001C3419
+  2019 0001:001C3437  2021 0001:001C344A  2022 0001:001C345C  2024 0001:001C348B
+  2025 0001:001C349D  2028 0001:001C34CA  2010 0001:001C34CD  2030 0001:001C34E3
+  2033 0001:001C3500  2035 0001:001C3510  2036 0001:001C3518  2037 0001:001C3530
+  2039 0001:001C354E  2040 0001:001C356B  2041 0001:001C3576  2044 0001:001C35C0
+  2045 0001:001C35C4  2047 0001:001C35D7  2048 0001:001C35E6  2049 0001:001C3600
+  2050 0001:001C3611  2051 0001:001C3624  2052 0001:001C3640  2054 0001:001C3657
+  2057 0001:001C365C  2058 0001:001C3660  2060 0001:001C3673  2061 0001:001C3682
+  2062 0001:001C369C  2063 0001:001C36AD  2064 0001:001C36C0  2065 0001:001C36DC
+  2067 0001:001C36F3  2074 0001:001C36F8  2075 0001:001C36FB  2076 0001:001C370D
+  2077 0001:001C3718  2079 0001:001C371C  2080 0001:001C3737  2082 0001:001C3740
+  2083 0001:001C374C  2084 0001:001C3759  2085 0001:001C3766  2086 0001:001C3773
+  2088 0001:001C3781  2089 0001:001C378D  2090 0001:001C379A  2091 0001:001C37A7
+  2092 0001:001C37B4  2093 0001:001C37E6  2094 0001:001C3800  2095 0001:001C3832
+  2103 0001:001C385C  2104 0001:001C386A  2106 0001:001C387A  2107 0001:001C3881
+  2108 0001:001C3884  2109 0001:001C3892  2111 0001:001C3896  2112 0001:001C38A1
+  2114 0001:001C38A5  2116 0001:001C38B1  2117 0001:001C38C5  2120 0001:001C38C9
+  2122 0001:001C38F3  2124 0001:001C38F5  2126 0001:001C38F9  2128 0001:001C3915
+  2131 0001:001C3929  2132 0001:001C392E  2134 0001:001C3932  2129 0001:001C393B
+  2136 0001:001C394A  2137 0001:001C394E  2126 0001:001C3952  2141 0001:001C3957
+  2142 0001:001C3959  2151 0001:001C3964  2152 0001:001C396F  2153 0001:001C3971
+  2155 0001:001C398C  2156 0001:001C398F  2158 0001:001C39B5  2159 0001:001C39C0
+  2160 0001:001C39C5  2162 0001:001C39CC  2163 0001:001C39D7  2165 0001:001C39DB
+  2166 0001:001C39E6  2167 0001:001C39F0  2171 0001:001C39FA  2172 0001:001C39FC
+  2174 0001:001C3A04  2175 0001:001C3A11  2176 0001:001C3A13  2177 0001:001C3A2B
+  2178 0001:001C3A34  2179 0001:001C3A3B  2180 0001:001C3A46  2181 0001:001C3A51
+  2183 0001:001C3A57  2184 0001:001C3A68  2185 0001:001C3A6C  2187 0001:001C3A7F
+  2188 0001:001C3A8D  2192 0001:001C3A98  2201 0001:001C3AA4  2202 0001:001C3AC2
+  2204 0001:001C3AEF  2205 0001:001C3AFD  2206 0001:001C3B11  2208 0001:001C3B2C
+  2210 0001:001C3B48  2211 0001:001C3B5E  2212 0001:001C3B62  2213 0001:001C3B70
+  2215 0001:001C3B87  2216 0001:001C3B8B  2217 0001:001C3BA1  2218 0001:001C3BA5
+  2219 0001:001C3BAF  2220 0001:001C3BDC  2222 0001:001C3BE2  2224 0001:001C3BFA
+  2226 0001:001C3BFE  2227 0001:001C3C0C  2229 0001:001C3C1A  2231 0001:001C3C20
+  2232 0001:001C3C30  2233 0001:001C3C44  2237 0001:001C3C54  2241 0001:001C3C61
+  2244 0001:001C3CA4  2249 0001:001C3CA8  2250 0001:001C3CB5  2252 0001:001C3CC2
+  2253 0001:001C3CD4  2254 0001:001C3CDD  2255 0001:001C3CED  2256 0001:001C3CFF
+  2257 0001:001C3D11  2258 0001:001C3D23  2259 0001:001C3D35  2260 0001:001C3D4A
+  2261 0001:001C3D51  2262 0001:001C3D69  2263 0001:001C3D72  2264 0001:001C3D79
+  2267 0001:001C3D7C  2268 0001:001C3D7F  2269 0001:001C3D93  2270 0001:001C3D9A
+  2279 0001:001C3D9C  2280 0001:001C3DB8  2281 0001:001C3DBF  2282 0001:001C3DC8
+  2283 0001:001C3DCF  2284 0001:001C3DD8  2285 0001:001C3DF3  2287 0001:001C3DFB
+  2288 0001:001C3E08  2289 0001:001C3E0F  2293 0001:001C3E3D  2294 0001:001C3E4A
+  2295 0001:001C3E51  2297 0001:001C3E7D  2298 0001:001C3E8A  2299 0001:001C3EB2
+  2301 0001:001C3EDA  2303 0001:001C3EFA  2304 0001:001C3F1A  2310 0001:001C3F69
+  2311 0001:001C3F76  2313 0001:001C3F83  2314 0001:001C3F90  2315 0001:001C3FA4
+  2316 0001:001C3FBC  2317 0001:001C3FD4  2320 0001:001C406C  2321 0001:001C4070
+  2323 0001:001C4081  2324 0001:001C4095  2328 0001:001C40A3  2329 0001:001C40BB
+  2331 0001:001C40C6  2337 0001:001C40CC  2338 0001:001C40E5  2339 0001:001C40EE
+  2341 0001:001C40F6  2342 0001:001C4105  2343 0001:001C4112  2345 0001:001C411F
+  2346 0001:001C412D  2351 0001:001C414F  2352 0001:001C415E  2353 0001:001C416B
+  2355 0001:001C4174  2356 0001:001C4182  2359 0001:001C41A2  2360 0001:001C41AD
+  2363 0001:001C41D8  2364 0001:001C41F1  2365 0001:001C4201  2367 0001:001C4213
+  2368 0001:001C4223  2369 0001:001C424A  2372 0001:001C42B0  2373 0001:001C42B4
+  2374 0001:001C42BD  2377 0001:001C42C6  2378 0001:001C42DB  2380 0001:001C42E3
+  2382 0001:001C42E9  2396 0001:001C42EC  2397 0001:001C430D  2399 0001:001C4313
+  2400 0001:001C431F  2401 0001:001C432B  2402 0001:001C4335  2403 0001:001C4349
+  2404 0001:001C435D  2408 0001:001C4368  2409 0001:001C4374  2410 0001:001C4380
+  2411 0001:001C438A  2412 0001:001C439E  2413 0001:001C43B2  2415 0001:001C43BB
+  2417 0001:001C43D0  2418 0001:001C43E0  2422 0001:001C43E4  2423 0001:001C43F4
+  2424 0001:001C43FE  2425 0001:001C440C  2428 0001:001C4443  2430 0001:001C4455
+  2432 0001:001C445B  2433 0001:001C4466  2434 0001:001C4474  2436 0001:001C4482
+  2437 0001:001C448E  2440 0001:001C449B  2441 0001:001C44A6  2444 0001:001C44D0
+  2445 0001:001C44E8  2447 0001:001C44EE  2448 0001:001C450E  2452 0001:001C451F
+  2453 0001:001C453F  2455 0001:001C454E  2459 0001:001C4578  2461 0001:001C4580
+  2463 0001:001C4588  2464 0001:001C4590  2465 0001:001C45A6  2470 0001:001C45B7
+  2472 0001:001C45BF  2473 0001:001C45C7  2474 0001:001C45DD  2477 0001:001C45ED
+  2481 0001:001C4614  2482 0001:001C4621  2486 0001:001C4624  2487 0001:001C4631
+  2491 0001:001C4634  2492 0001:001C4641  2496 0001:001C4644  2497 0001:001C4651
+  2500 0001:001C4654  2501 0001:001C4657  2503 0001:001C4662  2505 0001:001C466B
+  2506 0001:001C4672  2509 0001:001C467E  2511 0001:001C4690  2514 0001:001C4694
+  2515 0001:001C4697  2517 0001:001C46A0  2518 0001:001C46A7  2519 0001:001C46AE
+  2521 0001:001C46B7  2522 0001:001C46C5  2524 0001:001C46D0  2525 0001:001C46D9
+  2526 0001:001C46E0  2528 0001:001C46E7  2535 0001:001C46EC  2536 0001:001C4709
+  2538 0001:001C4716  2539 0001:001C4722  2540 0001:001C4735  2541 0001:001C4739
+  2543 0001:001C4746  2544 0001:001C474B  2546 0001:001C475F  2547 0001:001C4763
+  2548 0001:001C4780  2549 0001:001C47BD  2547 0001:001C47EE  2552 0001:001C47F3
+  2553 0001:001C47F9  2554 0001:001C481C  2555 0001:001C4829  2556 0001:001C4839
+  2558 0001:001C484E  2559 0001:001C4858  2562 0001:001C4884  2563 0001:001C489F
+  2564 0001:001C48A6  2566 0001:001C48BF  2568 0001:001C48E2  2569 0001:001C48F3
+  2570 0001:001C4909  2574 0001:001C4941  2575 0001:001C4948  2576 0001:001C494C
+  2580 0001:001C495F  2586 0001:001C4A0C  2587 0001:001C4A11  2588 0001:001C4A21
+  2589 0001:001C4A2E  2591 0001:001C4A3B  2592 0001:001C4A62  2593 0001:001C4A66
+  2594 0001:001C4A7C  2595 0001:001C4ABB  2596 0001:001C4ACA  2597 0001:001C4AD9
+  2598 0001:001C4AF7  2600 0001:001C4B15  2601 0001:001C4B33  2602 0001:001C4B5A
+  2603 0001:001C4B7B  2604 0001:001C4B9F  2614 0001:001C4BA4  2615 0001:001C4BB1
+  2616 0001:001C4BBE  2618 0001:001C4BC3  2620 0001:001C4BDC  2621 0001:001C4BEA
+  2623 0001:001C4BF7  2616 0001:001C4C00  2625 0001:001C4C05  2627 0001:001C4C24
+  2628 0001:001C4C44  2629 0001:001C4C53  2630 0001:001C4C61  2631 0001:001C4C6E
+  2632 0001:001C4C7B  2634 0001:001C4C89  2635 0001:001C4C8E  2637 0001:001C4CAA
+  2638 0001:001C4CB7  2639 0001:001C4CC4  2641 0001:001C4CD2  2642 0001:001C4CE3
+  2643 0001:001C4CF0  2644 0001:001C4CFE  2645 0001:001C4D06  2639 0001:001C4D07
+  2646 0001:001C4D0A  2647 0001:001C4D24  2648 0001:001C4D35  2651 0001:001C4D5B
+  2652 0001:001C4D65  2654 0001:001C4D75  2658 0001:001C4ED0  2659 0001:001C4ED7
+  2664 0001:001C4ED8  2665 0001:001C4EDD  2672 0001:001C4EE0  2673 0001:001C4EE6
+  2675 0001:001C4EF8  2676 0001:001C4F0B  2677 0001:001C4F11  2679 0001:001C4F16
+  2681 0001:001C4F1C  2682 0001:001C4F1F  2684 0001:001C4F2A  2685 0001:001C4F33
+  2687 0001:001C4F38  2691 0001:001C4F4A  2695 0001:001C4F80  2696 0001:001C4F8B
+  2700 0001:001C4F8C  2701 0001:001C4FA4  2702 0001:001C4FB3  2703 0001:001C4FBF
+  2704 0001:001C4FC8  2705 0001:001C4FCF  2710 0001:001C4FD0  2711 0001:001C4FDC
+  2717 0001:001C4FE0  2718 0001:001C4FFC  2719 0001:001C502A  2721 0001:001C5044
+  2722 0001:001C5059  2724 0001:001C5073  2726 0001:001C5077  2727 0001:001C50B5
+  2729 0001:001C50C3  2742 0001:001C51E8  2743 0001:001C51F1  2745 0001:001C51FF
+  2746 0001:001C520D  2747 0001:001C520F  2748 0001:001C5239  2750 0001:001C5259
+  2751 0001:001C5272  2755 0001:001C5276  2756 0001:001C528B  2758 0001:001C52A0
+  2760 0001:001C52C3  2763 0001:001C52C5  2765 0001:001C52D3  2766 0001:001C52E8
+  2768 0001:001C52EC  2769 0001:001C5301  2770 0001:001C5303  2771 0001:001C530F
+  2775 0001:001C531C  2777 0001:001C533E  2778 0001:001C5357  2780 0001:001C535E
+  2781 0001:001C5364  2783 0001:001C536D  2784 0001:001C537F  2785 0001:001C538C
+  2786 0001:001C539E  2787 0001:001C53A6  2791 0001:001C53AA  2793 0001:001C53B2
+  2795 0001:001C53BA  2796 0001:001C53CA  2798 0001:001C53D4  2800 0001:001C53F9
+  2804 0001:001C53FD  2805 0001:001C5412  2807 0001:001C5417  2809 0001:001C543C
+  2814 0001:001C543E  2816 0001:001C5442  2817 0001:001C5450  2818 0001:001C5453
+  2819 0001:001C5461  2820 0001:001C5464  2821 0001:001C5472  2824 0001:001C5485
+  2829 0001:001C5490  2830 0001:001C5498  2831 0001:001C54A0  2832 0001:001C54A8
+  2833 0001:001C54B5  2837 0001:001C54B8  2838 0001:001C54BB  2839 0001:001C54C8
+  2843 0001:001C54CC  2844 0001:001C54D7  2847 0001:001C54D8  2848 0001:001C54DB
+  2849 0001:001C550A  2850 0001:001C553C  2854 0001:001C5540  2855 0001:001C554B
+  2859 0001:001C554C  2860 0001:001C5557  2863 0001:001C5558  2864 0001:001C556E
+  2865 0001:001C5589  2869 0001:001C55AC  2870 0001:001C55B7  2874 0001:001C55B8
+  2875 0001:001C55C3  2878 0001:001C55C4  2879 0001:001C55C7  2880 0001:001C55F0
+  2882 0001:001C55FF  2883 0001:001C5628  2884 0001:001C5635  2887 0001:001C5638
+  2888 0001:001C563C  2889 0001:001C5646  2891 0001:001C5656  2892 0001:001C565E
+  2895 0001:001C5664  2896 0001:001C566B  2898 0001:001C567B  2899 0001:001C568D
+  2900 0001:001C569F  2901 0001:001C56BE  2902 0001:001C56C8  2903 0001:001C56D6
+  2905 0001:001C5701  2908 0001:001C5713  2909 0001:001C571E  2916 0001:001C5724
+  2917 0001:001C572D  2918 0001:001C574E  2919 0001:001C5754  2920 0001:001C577A
+  2922 0001:001C5780  2923 0001:001C578D  2924 0001:001C5797  2925 0001:001C57A5
+  2926 0001:001C57AE  2927 0001:001C57B7  2928 0001:001C57BC  2930 0001:001C57DF
+  2933 0001:001C57F4  2937 0001:001C57FC  2938 0001:001C5810  2942 0001:001C5814
+  2944 0001:001C5831  2946 0001:001C5837  2948 0001:001C583F  2949 0001:001C585A
+  2953 0001:001C5869  2954 0001:001C5884  2958 0001:001C5891  2959 0001:001C589C
+  2961 0001:001C58AC  2962 0001:001C58B7  2964 0001:001C58C7  2965 0001:001C58D2
+  2967 0001:001C58E0  2968 0001:001C58EB  2970 0001:001C58F9  2971 0001:001C5904
+  2973 0001:001C5914  2974 0001:001C591F  2976 0001:001C592D  2977 0001:001C5938
+  2979 0001:001C5945  2980 0001:001C5950  2982 0001:001C595B  2983 0001:001C5966
+  2985 0001:001C5983  2986 0001:001C598E  2988 0001:001C599B  2989 0001:001C59A6
+  2991 0001:001C59BA  2997 0001:001C59E0  2998 0001:001C59E5  3000 0001:001C59F5
+  3001 0001:001C5A05  3002 0001:001C5A12  3003 0001:001C5A1F  3004 0001:001C5A46
+  3005 0001:001C5A4A  3006 0001:001C5A60  3007 0001:001C5A9F  3008 0001:001C5AAE
+  3009 0001:001C5ABD  3010 0001:001C5ADB  3012 0001:001C5AF9  3013 0001:001C5B17
+  3014 0001:001C5B3E  3015 0001:001C5B5F  3016 0001:001C5B83  3020 0001:001C5B9D
+  3021 0001:001C5BAA  3022 0001:001C5BB7  3023 0001:001C5BC4  3024 0001:001C5BD1
+  3025 0001:001C5BDE  3026 0001:001C5BEB  3027 0001:001C5BF8  3028 0001:001C5C05
+  3029 0001:001C5C12  3030 0001:001C5C1F  3031 0001:001C5C2C  3033 0001:001C5C39
+  3036 0001:001C5C40  3037 0001:001C5C43  3038 0001:001C5C72  3039 0001:001C5CA4
+  3042 0001:001C5CA8  3043 0001:001C5CAB  3044 0001:001C5CBA  3045 0001:001C5CD4
+  3048 0001:001C5CD8  3049 0001:001C5CDB  3050 0001:001C5CEA  3051 0001:001C5D04
+  3057 0001:001C5D08  3058 0001:001C5D0D  3059 0001:001C5D14  3060 0001:001C5D1A
+  3062 0001:001C5D31  3063 0001:001C5D39  3065 0001:001C5D63  3066 0001:001C5D8B
+  3068 0001:001C5DAB  3069 0001:001C5DCB  3075 0001:001C5E1A  3076 0001:001C5E27
+  3078 0001:001C5E34  3079 0001:001C5E41  3083 0001:001C5E57  3084 0001:001C5E64
+  3085 0001:001C5E71  3086 0001:001C5E7E  3088 0001:001C5E8B  3089 0001:001C5EA3
+  3090 0001:001C5EBB  3091 0001:001C5ECD  3092 0001:001C5EDF  3093 0001:001C5EFE
+  3094 0001:001C5F1D  3098 0001:001C5F24  3099 0001:001C5F30  3100 0001:001C5F3B
+  3104 0001:001C5F3C  3105 0001:001C5F48  3106 0001:001C5F53  3110 0001:001C5F54
+  3111 0001:001C5F60  3112 0001:001C5F6B  3116 0001:001C5F6C  3117 0001:001C5F78
+  3118 0001:001C5F83  3121 0001:001C5F84  3122 0001:001C5F87  3123 0001:001C5FAA
+  3125 0001:001C5FB5  3126 0001:001C5FC2  3129 0001:001C5FC8  3130 0001:001C5FCB
+  3131 0001:001C5FEE  3133 0001:001C5FF9  3134 0001:001C6006  3138 0001:001C600C
+  3139 0001:001C6020  3142 0001:001C6024  3143 0001:001C6027  3144 0001:001C603E
+  3145 0001:001C6055  3149 0001:001C6058  3150 0001:001C6063  3156 0001:001C6064
+  3157 0001:001C6069  3158 0001:001C606F  3160 0001:001C608E  3161 0001:001C609D
+  3162 0001:001C60B5  3164 0001:001C60C2  3168 0001:001C60C8  3169 0001:001C60CB
+  3170 0001:001C60D9  3173 0001:001C60E0  3174 0001:001C60F6  3175 0001:001C60FA
+  3179 0001:001C6138  3180 0001:001C613A  3189 0001:001C6184  3190 0001:001C61A2
+  3191 0001:001C61AB  3193 0001:001C61CD  3194 0001:001C61D8  3196 0001:001C61DC
+  3197 0001:001C61EB  3198 0001:001C61F7  3200 0001:001C6200  3201 0001:001C620E
+  3202 0001:001C6215  3203 0001:001C621F  3204 0001:001C622A  3205 0001:001C6237
+  3206 0001:001C623B  3207 0001:001C624A  3209 0001:001C6251  3215 0001:001C6278
+  3216 0001:001C6290  3217 0001:001C629C  3218 0001:001C62A1  3219 0001:001C62B4
+  3221 0001:001C62C0  3222 0001:001C62C9  3223 0001:001C62DA  3224 0001:001C62EB
+  3225 0001:001C62F8  3227 0001:001C6301  3234 0001:001C6328  3235 0001:001C6340
+  3237 0001:001C636D  3239 0001:001C6385  3240 0001:001C639B  3241 0001:001C63A9
+  3243 0001:001C63B8  3244 0001:001C63D6  3245 0001:001C63DF  3247 0001:001C63E3
+  3248 0001:001C63F1  3252 0001:001C63FF  3255 0001:001C640C  3259 0001:001C6430
+  3260 0001:001C6444  3264 0001:001C6448  3265 0001:001C6453  3269 0001:001C6454
+  3270 0001:001C645F  3273 0001:001C6460  3274 0001:001C6476  3275 0001:001C6491
+  3279 0001:001C64B4  3280 0001:001C64BF  3284 0001:001C64C0  3285 0001:001C64CB
+  3289 0001:001C64CC  3290 0001:001C64D7  3296 0001:001C64D8  3297 0001:001C64DC
+  3298 0001:001C64EC  3299 0001:001C6513  3300 0001:001C6517  3301 0001:001C652D
+  3302 0001:001C654B  3303 0001:001C6569  3304 0001:001C6587  3305 0001:001C65AE
+  3306 0001:001C65CF  3307 0001:001C65F3  3310 0001:001C65F8  3311 0001:001C65FB
+  3312 0001:001C6616  3313 0001:001C6631  3315 0001:001C6643  3316 0001:001C6654
+  3317 0001:001C666B  3319 0001:001C6682  3320 0001:001C668B  3324 0001:001C6690
+  3325 0001:001C6697  3329 0001:001C6698  3330 0001:001C66A2  3334 0001:001C66A4
+  3335 0001:001C66AE  3339 0001:001C66B0  3340 0001:001C66BA  3344 0001:001C66BC
+  3345 0001:001C66C6  3351 0001:001C66C8  3352 0001:001C66D2  3354 0001:001C66FF
+  3356 0001:001C671B  3357 0001:001C672F  3358 0001:001C673D  3360 0001:001C6754
+  3361 0001:001C6780  3362 0001:001C6795  3363 0001:001C67AA  3364 0001:001C67BF
+  3365 0001:001C67D4  3366 0001:001C67E9  3367 0001:001C67FE  3369 0001:001C6811
+  3373 0001:001C681A  3377 0001:001C6820  3378 0001:001C682A  3381 0001:001C682C
+  3382 0001:001C6830  3383 0001:001C6842  3384 0001:001C685A  3386 0001:001C6891
+  3390 0001:001C6894  3391 0001:001C689D  3392 0001:001C68A7  3393 0001:001C68B0
+  3394 0001:001C68BA  3395 0001:001C68CC  3396 0001:001C68D6  3399 0001:001C68D8
+  3400 0001:001C68DB  3402 0001:001C68E4  3403 0001:001C68F7  3404 0001:001C6904
+  3405 0001:001C6914  3407 0001:001C6929  3408 0001:001C6933  3412 0001:001C6938
+  3413 0001:001C6941  3414 0001:001C694B  3415 0001:001C6954  3416 0001:001C695E
+  3425 0001:001C6960  3426 0001:001C6983  3427 0001:001C6987  3429 0001:001C69BF
+  3430 0001:001C69F1  3432 0001:001C6A07  3433 0001:001C6A16  3434 0001:001C6A24
+  3435 0001:001C6A33  3436 0001:001C6A41  3437 0001:001C6A4E  3439 0001:001C6A74
+  3440 0001:001C6A80  3441 0001:001C6A88  3442 0001:001C6A98  3443 0001:001C6AAA
+  3442 0001:001C6AD5  3444 0001:001C6AD8  3446 0001:001C6AE3  3447 0001:001C6AF0
+  3448 0001:001C6AFE  3449 0001:001C6B0B  3450 0001:001C6B19  3451 0001:001C6B2C
+  3452 0001:001C6B5B  3454 0001:001C6BA1  3457 0001:001C6BC0  3458 0001:001C6BEE
+  3460 0001:001C6BF7  3461 0001:001C6BFD  3465 0001:001C6C44  3468 0001:001C6C61
+  3472 0001:001C6C71  3491 0001:001C6DDC  3492 0001:001C6DDF  3493 0001:001C6DEC
+  3494 0001:001C6DF9  3496 0001:001C6DFC  3497 0001:001C6E1F  3498 0001:001C6E2C
+  3499 0001:001C6E30  3500 0001:001C6E39  3501 0001:001C6E46  3502 0001:001C6E53
+  3503 0001:001C6E67  3505 0001:001C6E93  3506 0001:001C6EAF  3508 0001:001C6EDA
+  3510 0001:001C6EEB  3511 0001:001C6EF0  3512 0001:001C6EFE  3513 0001:001C6F0C
+  3515 0001:001C6F28  3516 0001:001C6F56  3518 0001:001C6F6A  3519 0001:001C6F78
+  3521 0001:001C6F7E  3522 0001:001C6F8C  3524 0001:001C6FB9  3525 0001:001C6FBB
+  3529 0001:001C6FC6  3530 0001:001C6FC8  3532 0001:001C6FDA  3533 0001:001C6FED
+  3534 0001:001C6FF3  3536 0001:001C7024  3537 0001:001C7061  3538 0001:001C707B
+  3539 0001:001C7081  3540 0001:001C7088  3541 0001:001C7096  3542 0001:001C70BF
+  3545 0001:001C70CB  3546 0001:001C70D0  3547 0001:001C70F0  3549 0001:001C7100
+  3550 0001:001C7120  3552 0001:001C7130  3553 0001:001C713F  3554 0001:001C714E
+  3555 0001:001C715C  3556 0001:001C7192  3557 0001:001C7198  3558 0001:001C719C
+  3559 0001:001C71A8  3560 0001:001C71B4  3561 0001:001C71BA  3562 0001:001C71C4
+  3563 0001:001C71D0  3564 0001:001C71D7  3565 0001:001C71DF  3567 0001:001C71EF
+  3569 0001:001C7206  3570 0001:001C7227  3572 0001:001C7245  3573 0001:001C7266
+  3574 0001:001C7275  3575 0001:001C727B  3576 0001:001C727F  3577 0001:001C728E
+  3578 0001:001C729C  3579 0001:001C72B0  3582 0001:001C72BE  3567 0001:001C72BF
+  3585 0001:001C72C8  3586 0001:001C72CE  3587 0001:001C72D5  3589 0001:001C72EA
+  3592 0001:001C72F6  3593 0001:001C730D  3595 0001:001C7317  3597 0001:001C7322
+  3598 0001:001C732C  3599 0001:001C733A  3600 0001:001C7345  3602 0001:001C7361
+  3604 0001:001C7373  3605 0001:001C737F  3606 0001:001C7391  3607 0001:001C739D
+  3608 0001:001C73B0  3609 0001:001C73B7  3611 0001:001C73BD  3612 0001:001C73C9
+  3615 0001:001C73D1  3617 0001:001C73D8  3618 0001:001C73DC  3621 0001:001C7416
+  3622 0001:001C742C  3623 0001:001C746B  3624 0001:001C74E5  3627 0001:001C74F2
+  3621 0001:001C74F3  3628 0001:001C74FC  3630 0001:001C7500  3631 0001:001C750D
+  3632 0001:001C7520  3635 0001:001C7527  3637 0001:001C752B  3638 0001:001C7566
+  3640 0001:001C7572  3636 0001:001C7573  3642 0001:001C757F  3644 0001:001C758F
+  3645 0001:001C7598  3646 0001:001C75A2  3647 0001:001C75AD  3649 0001:001C75B7
+  3650 0001:001C75CD  3651 0001:001C765A  3649 0001:001C765B  3652 0001:001C7662
+  3653 0001:001C766D  3655 0001:001C767C  3656 0001:001C76A2  3657 0001:001C76C5
+  3658 0001:001C76D7  3659 0001:001C76E9  3660 0001:001C76F8  3664 0001:001C7727
+  3665 0001:001C772F  3670 0001:001C773F  3671 0001:001C7749  3672 0001:001C7757
+  3673 0001:001C7762  3675 0001:001C777E  3679 0001:001C7790  3680 0001:001C7796
+  3683 0001:001C77B4  3687 0001:001C77D1  3690 0001:001C77EE  3692 0001:001C77F4
+  3693 0001:001C77FC  3694 0001:001C7802  3698 0001:001C781B  3705 0001:001C7DBC
+  3706 0001:001C7DE7  3707 0001:001C7DFB  3708 0001:001C7E37  3709 0001:001C7E3E
+  3710 0001:001C7E45  3711 0001:001C7E4C  3712 0001:001C7E53  3713 0001:001C7E5A
+  3715 0001:001C7E61  3717 0001:001C7E64  3718 0001:001C7E68  3719 0001:001C7E8F
+  3720 0001:001C7E95  3721 0001:001C7EC7  3731 0001:001C7EF0  3732 0001:001C7EFC
+  3734 0001:001C7F32  3735 0001:001C7F45  3737 0001:001C7F4D  3739 0001:001C7F6D
+  3740 0001:001C7F85  3742 0001:001C7FA6  3743 0001:001C7FB0  3744 0001:001C7FBE
+  3746 0001:001C7FDE  3748 0001:001C7FF0  3752 0001:001C8003  3753 0001:001C801B
+  3754 0001:001C802C  3756 0001:001C8043  3757 0001:001C8050  3759 0001:001C8066
+  3761 0001:001C806C  3762 0001:001C8075  3765 0001:001C807B  3766 0001:001C8084
+  3767 0001:001C808F  3768 0001:001C809A  3770 0001:001C80A3  3771 0001:001C80AA
+  3772 0001:001C80B5  3774 0001:001C80BE  3775 0001:001C80C5  3777 0001:001C80CF
+  3779 0001:001C80E6  3780 0001:001C80F3  3781 0001:001C810A  3782 0001:001C8121
+  3777 0001:001C8124  3783 0001:001C8127  3784 0001:001C8138  3785 0001:001C8149
+  3786 0001:001C8159  3792 0001:001C816C  3798 0001:001C81B8  3799 0001:001C81D0
+  3802 0001:001C820A  3804 0001:001C8222  3805 0001:001C8236  3806 0001:001C8244
+  3808 0001:001C8253  3809 0001:001C8262  3811 0001:001C826D  3812 0001:001C8298
+  3816 0001:001C82A1  3820 0001:001C82C4  3821 0001:001C82CD  3824 0001:001C82D0
+  3825 0001:001C82D3  3826 0001:001C82DC  3827 0001:001C82E5  3831 0001:001C82E8
+  3832 0001:001C82F8  3886 0001:001C82FC  3887 0001:001C8303  3888 0001:001C8305
+  3889 0001:001C832B  3890 0001:001C833E  3892 0001:001C8344  3893 0001:001C834D
+  3895 0001:001C8357  3897 0001:001C8366  3898 0001:001C8369  3899 0001:001C837B
+  3901 0001:001C837F  3904 0001:001C8392  3907 0001:001C8396  3908 0001:001C8398
+  3911 0001:001C839C  3912 0001:001C83A2  3913 0001:001C83B1  3914 0001:001C83C5
+  3917 0001:001C83C8  3918 0001:001C83E5  3919 0001:001C83F4  3920 0001:001C841D
+  3924 0001:001C8480  3925 0001:001C848A  3928 0001:001C848C  3929 0001:001C8492
+  3931 0001:001C84A1  3935 0001:001C84B9  3936 0001:001C84C2  3937 0001:001C84D1
+  3939 0001:001C84E6  3940 0001:001C84ED  3947 0001:001C8594  3948 0001:001C85B3
+  3949 0001:001C85BF  3950 0001:001C85D8  3951 0001:001C85F1  3952 0001:001C8615
+  3953 0001:001C8639  3954 0001:001C865D  3955 0001:001C8681  3956 0001:001C8695
+  3957 0001:001C86A3  3958 0001:001C86B7  3959 0001:001C86C5  3960 0001:001C86CA
+  3961 0001:001C86DE  3962 0001:001C86F2  3963 0001:001C86FA  3964 0001:001C8713
+  3965 0001:001C8738  3966 0001:001C875D  3967 0001:001C8776  3968 0001:001C879B
+  3970 0001:001C87CD  3973 0001:001C87F6  3975 0001:001C8812  3976 0001:001C881D
+  3979 0001:001C8844  3980 0001:001C885C  3981 0001:001C8861  3982 0001:001C886B
+  3983 0001:001C8881  3984 0001:001C888B  3985 0001:001C88BA  3986 0001:001C88DE
+  3987 0001:001C8902  3989 0001:001C890F  3990 0001:001C891A  3991 0001:001C893E
+  3992 0001:001C8949  3993 0001:001C896D  3994 0001:001C8978  3996 0001:001C899C
+  4003 0001:001C8A04  4004 0001:001C8A0E  4005 0001:001C8A17  4010 0001:001C8A46
+  4011 0001:001C8A52  4013 0001:001C8A5B  4017 0001:001C8A64  4018 0001:001C8A7C
+  4022 0001:001C8A80  4023 0001:001C8A98  4029 0001:001C8A9C  4030 0001:001C8ABF
+  4031 0001:001C8ACC  4032 0001:001C8AF3  4033 0001:001C8B19  4039 0001:001C8B68
+  4040 0001:001C8B83  4043 0001:001C8BC3  4044 0001:001C8BD1  4046 0001:001C8BE0
+  4047 0001:001C8BEF  4049 0001:001C8BFA  4050 0001:001C8C19  4053 0001:001C8C22
+  4059 0001:001C8C48  4060 0001:001C8C5F  4063 0001:001C8C97  4064 0001:001C8CA5
+  4066 0001:001C8CB4  4067 0001:001C8CCC  4070 0001:001C8CD5  4076 0001:001C8CF8
+  4077 0001:001C8CFB  4078 0001:001C8CFD  4080 0001:001C8D01  4082 0001:001C8D10
+  4084 0001:001C8D19  4086 0001:001C8D23  4087 0001:001C8D2F  4089 0001:001C8D33
+  4091 0001:001C8D41  4092 0001:001C8D4F  4093 0001:001C8D53  4094 0001:001C8D57
+  4098 0001:001C8D5B  4101 0001:001C8D66  4102 0001:001C8D68  4105 0001:001C8D70
+  4114 0001:001C8D78  4115 0001:001C8D9B  4116 0001:001C8DAA  4117 0001:001C8DB8
+  4118 0001:001C8DD2  4122 0001:001C8DE6  4123 0001:001C8DF8  4125 0001:001C8E0A
+  4126 0001:001C8E17  4127 0001:001C8E50  4128 0001:001C8E5D  4123 0001:001C8E5E
+  4131 0001:001C8E61  4133 0001:001C8E7F  4135 0001:001C8E8F  4142 0001:001C8EC4
+  4143 0001:001C8EE7  4146 0001:001C8F26  4147 0001:001C8F34  4149 0001:001C8F4B
+  4150 0001:001C8F4D  4152 0001:001C8F6E  4153 0001:001C8F99  4156 0001:001C8FA1
+  4157 0001:001C8FE8  4158 0001:001C9000  4162 0001:001C9007  4163 0001:001C903F
+  4164 0001:001C904F  4168 0001:001C9086  4169 0001:001C908F  4170 0001:001C9093
+  4173 0001:001C909C  4177 0001:001C9134  4178 0001:001C9141  4180 0001:001C914A
+  4181 0001:001C9150  4182 0001:001C9177  4183 0001:001C917D  4184 0001:001C91A2
+  4186 0001:001C91A9  4187 0001:001C91AF  4188 0001:001C91D4  4190 0001:001C91D9
+  4195 0001:001C91E0  4196 0001:001C91E9  4197 0001:001C91EC  4201 0001:001C91F0
+  4204 0001:001C91FA  4205 0001:001C9221  4206 0001:001C9225  4207 0001:001C922A
+  4209 0001:001C926A
+
+Line numbers for fTIUView(fTIUView.pas) segment .text
+
+    89 0001:001C96A4    90 0001:001C96F6    91 0001:001C970D    94 0001:001C971B
+    95 0001:001C9728    96 0001:001C9733    97 0001:001C973E    98 0001:001C974B
+    99 0001:001C9767   100 0001:001C9783   101 0001:001C978D   102 0001:001C9797
+   103 0001:001C97AD   104 0001:001C97BE   105 0001:001C97CF   106 0001:001C97F9
+   107 0001:001C9804   108 0001:001C980D   109 0001:001C9813   111 0001:001C981F
+   113 0001:001C982B   114 0001:001C9837   115 0001:001C9840   117 0001:001C9850
+   118 0001:001C986F   119 0001:001C9887   123 0001:001C989E   124 0001:001C98AF
+   125 0001:001C98C3   127 0001:001C98D9   128 0001:001C98E0   130 0001:001C9903
+   131 0001:001C9913   132 0001:001C993D   133 0001:001C994E   135 0001:001C9954
+   136 0001:001C997F   138 0001:001C99AA   140 0001:001C99BF   141 0001:001C99E1
+   142 0001:001C9A03   143 0001:001C9A14   144 0001:001C9A25   146 0001:001C9A30
+   150 0001:001C9A4C   151 0001:001C9A58   152 0001:001C9A69   153 0001:001C9A7E
+   154 0001:001C9A8F   155 0001:001C9AA4   156 0001:001C9AB5   157 0001:001C9ACA
+   158 0001:001C9AD6   159 0001:001C9AE3   160 0001:001C9AF4   161 0001:001C9B01
+   162 0001:001C9B12   163 0001:001C9B1F   164 0001:001C9B30   165 0001:001C9B41
+   166 0001:001C9B4E   171 0001:001C9B61   173 0001:001C9B71   178 0001:001C9BE8
+   179 0001:001C9C08   181 0001:001C9C24   182 0001:001C9C38   184 0001:001C9C54
+   186 0001:001C9C5C   187 0001:001C9C70   189 0001:001C9C8C   191 0001:001C9C94
+   193 0001:001C9CA0   194 0001:001C9CBC   195 0001:001C9CCE   196 0001:001C9CEA
+   200 0001:001C9CFE   201 0001:001C9D11   204 0001:001C9D16   205 0001:001C9D2D
+   207 0001:001C9D51   208 0001:001C9D64   211 0001:001C9D69   212 0001:001C9D85
+   213 0001:001C9D9E   214 0001:001C9DB4   216 0001:001C9DCA   217 0001:001C9DE6
+   218 0001:001C9E0A   219 0001:001C9E1F   220 0001:001C9E31   221 0001:001C9E43
+   222 0001:001C9E55   223 0001:001C9E67   225 0001:001C9E8B   226 0001:001C9E96
+   228 0001:001C9EA1   229 0001:001C9EAA   231 0001:001C9EB1   232 0001:001C9ED3
+   233 0001:001C9EE7   234 0001:001C9F05   235 0001:001C9F2C   237 0001:001C9F4A
+   238 0001:001C9F55   239 0001:001C9F5C   240 0001:001C9F63   244 0001:001CA0B0
+   245 0001:001CA0B7   246 0001:001CA0BC   251 0001:001CA0C0   252 0001:001CA0E2
+   253 0001:001CA114   254 0001:001CA121   255 0001:001CA12E   256 0001:001CA13B
+   257 0001:001CA148   259 0001:001CA14C   260 0001:001CA159   264 0001:001CA168
+   265 0001:001CA179   266 0001:001CA18A   268 0001:001CA1AA   269 0001:001CA1DB
+   271 0001:001CA1ED   272 0001:001CA1FD   273 0001:001CA219   275 0001:001CA281
+   276 0001:001CA28F   277 0001:001CA29C   278 0001:001CA2A9   279 0001:001CA2B3
+   281 0001:001CA2D3   282 0001:001CA2E0   283 0001:001CA2ED   287 0001:001CA2FC
+   288 0001:001CA309   289 0001:001CA320   290 0001:001CA32D   291 0001:001CA33A
+   292 0001:001CA347   294 0001:001CA354   299 0001:001CA3EC   300 0001:001CA3F5
+   301 0001:001CA40C   304 0001:001CA414   305 0001:001CA417   306 0001:001CA425
+   307 0001:001CA433   308 0001:001CA443   309 0001:001CA453   310 0001:001CA460
+   311 0001:001CA470   312 0001:001CA480   314 0001:001CA4B0
+
+Line numbers for fNoteDR(fNoteDR.pas) segment .text
+
+    38 0001:001CA6B4    39 0001:001CA6BE    41 0001:001CA6C9    42 0001:001CA6D0
+    44 0001:001CA6D5    45 0001:001CA6E1    46 0001:001CA6F8    47 0001:001CA706
+    48 0001:001CA70E    49 0001:001CA719    51 0001:001CA725    52 0001:001CA746
+    55 0001:001CA774    57 0001:001CA784    62 0001:001CA7B4    63 0001:001CA7BB
+    66 0001:001CA7BC    68 0001:001CA7BF    70 0001:001CA7E3    71 0001:001CA7F4
+    73 0001:001CA7F6    74 0001:001CA7FD    75 0001:001CA804    80 0001:001CA85C
+    81 0001:001CA861    83 0001:001CA890
+
+Line numbers for fAddlSigners(fAddlSigners.pas) segment .text
+
+    99 0001:001CACC8   100 0001:001CACF4   101 0001:001CAD0B   104 0001:001CAD19
+   105 0001:001CAD25   106 0001:001CAD31   107 0001:001CAD3A   108 0001:001CAD4F
+   109 0001:001CAD60   110 0001:001CAD84   112 0001:001CAD90   113 0001:001CADA0
+   115 0001:001CADBA   116 0001:001CADC7   117 0001:001CADD2   118 0001:001CADDD
+   119 0001:001CADEA   120 0001:001CAE06   121 0001:001CAE22   123 0001:001CAE41
+   124 0001:001CAEA4   126 0001:001CAED2   127 0001:001CAEF5   131 0001:001CAF07
+   132 0001:001CAF2B   134 0001:001CAF51   121 0001:001CAF52   136 0001:001CAF5B
+   138 0001:001CAF67   139 0001:001CAF7A   140 0001:001CAF8D   141 0001:001CAFA0
+   142 0001:001CAFB0   144 0001:001CAFC0   145 0001:001CAFCC   146 0001:001CAFDC
+   147 0001:001CAFE6   150 0001:001CAFF1   151 0001:001CB005   152 0001:001CB018
+   153 0001:001CB030   157 0001:001CB04C   159 0001:001CB05C   163 0001:001CB0D0
+   164 0001:001CB0D9   165 0001:001CB0EC   169 0001:001CB0F4   170 0001:001CB0F9
+   175 0001:001CB0FC   176 0001:001CB118   177 0001:001CB11F   179 0001:001CB14B
+   180 0001:001CB15E   182 0001:001CB163   183 0001:001CB172   184 0001:001CB179
+   185 0001:001CB190   187 0001:001CB1AB   188 0001:001CB1F5   185 0001:001CB1F6
+   189 0001:001CB1FB   190 0001:001CB202   195 0001:001CB274   196 0001:001CB297
+   197 0001:001CB2A9   199 0001:001CB2D3   200 0001:001CB2E6   202 0001:001CB2EB
+   203 0001:001CB305   205 0001:001CB351   206 0001:001CB364   207 0001:001CB366
+   202 0001:001CB369   208 0001:001CB36C   209 0001:001CB39E   210 0001:001CB3BC
+   212 0001:001CB3DC   215 0001:001CB4D8   217 0001:001CB4DB   218 0001:001CB4E9
+   219 0001:001CB4F2   224 0001:001CB4F4   225 0001:001CB512   227 0001:001CB51B
+   228 0001:001CB52C   229 0001:001CB544   231 0001:001CB555   232 0001:001CB57A
+   233 0001:001CB5BE   234 0001:001CB5D5   235 0001:001CB5E3   228 0001:001CB5E4
+   237 0001:001CB5ED   242 0001:001CB628   243 0001:001CB633   248 0001:001CB634
+   249 0001:001CB656   251 0001:001CB65F   252 0001:001CB681   253 0001:001CB69D
+   254 0001:001CB6AC   255 0001:001CB6D2   257 0001:001CB6D7   258 0001:001CB6E9
+   260 0001:001CB734   261 0001:001CB74E   262 0001:001CB780   260 0001:001CB7CE
+   264 0001:001CB7D7   267 0001:001CB924   268 0001:001CB927   269 0001:001CB939
+   270 0001:001CB94B   273 0001:001CB950   274 0001:001CB953   275 0001:001CB95E
+   276 0001:001CB969   279 0001:001CB96C   281 0001:001CB985   282 0001:001CB996
+   284 0001:001CB9C4   285 0001:001CB9D1   286 0001:001CB9DE   288 0001:001CB9E0
+   289 0001:001CB9FE   290 0001:001CBA1E   294 0001:001CBA48   295 0001:001CBA4B
+   296 0001:001CBA58   299 0001:001CBA5C   300 0001:001CBA75   301 0001:001CBA77
+   303 0001:001CBA86   304 0001:001CBA88   306 0001:001CBA8D   308 0001:001CBA9C
+   309 0001:001CBAAF   311 0001:001CBAB4   313 0001:001CBAC9   315 0001:001CBAFF
+   316 0001:001CBB2B   319 0001:001CBB2D   321 0001:001CBB4F   322 0001:001CBB7D
+   325 0001:001CBB7F   326 0001:001CBB81   330 0001:001CBC3C   331 0001:001CBC48
+   332 0001:001CBC5B   333 0001:001CBC76   336 0001:001CBC91   340 0001:001CBCD0
+   343 0001:001CBCD8   344 0001:001CBCEC   345 0001:001CBD0C   348 0001:001CBD30
+   350 0001:001CBD33   351 0001:001CBD4D   354 0001:001CBD50   355 0001:001CBD6B
+   356 0001:001CBD90   358 0001:001CBDA6   360 0001:001CBEBA
+
+Line numbers for fNotePrt(fNotePrt.pas) segment .text
+
+    62 0001:001CC1D0    63 0001:001CC1F3    64 0001:001CC20A    65 0001:001CC218
+    69 0001:001CC220    81 0001:001CC22B    82 0001:001CC23E    86 0001:001CC253
+    87 0001:001CC263    90 0001:001CC276    91 0001:001CC286    92 0001:001CC2C6
+    93 0001:001CC2CF    95 0001:001CC2EE    97 0001:001CC30A    99 0001:001CC313
+   101 0001:001CC326   102 0001:001CC336   104 0001:001CC346   106 0001:001CC353
+   107 0001:001CC377   110 0001:001CC38A   113 0001:001CC393   114 0001:001CC3B6
+   122 0001:001CC3C3   125 0001:001CC3DB   127 0001:001CC3EB   130 0001:001CC4B8
+   131 0001:001CC4DA   133 0001:001CC4E6   134 0001:001CC53A   136 0001:001CC58E
+   140 0001:001CC614   142 0001:001CC61D   143 0001:001CC634   146 0001:001CC63C
+   148 0001:001CC658   150 0001:001CC668   151 0001:001CC6A0   152 0001:001CC6D8
+   154 0001:001CC6DF   159 0001:001CC708   160 0001:001CC70D   165 0001:001CC710
+   166 0001:001CC715   174 0001:001CC718   176 0001:001CC73A   177 0001:001CC742
+   179 0001:001CC74A   181 0001:001CC771   182 0001:001CC782   185 0001:001CC787
+   186 0001:001CC799   187 0001:001CC79D   190 0001:001CC79F   192 0001:001CC7DE
+   194 0001:001CC7F1   195 0001:001CC7FE   196 0001:001CC81C   197 0001:001CC83D
+   202 0001:001CC85E   203 0001:001CC88A   205 0001:001CC89E   206 0001:001CC8AE
+   209 0001:001CC8BD   210 0001:001CC8CF   212 0001:001CC903   213 0001:001CC931
+   214 0001:001CC938   219 0001:001CCA68   220 0001:001CCA6D   222 0001:001CCA9C
+
+Line numbers for fNoteCslt(fNoteCslt.pas) segment .text
+
+    88 0001:00000000
+
+Line numbers for fSignItem(fSignItem.pas) segment .text
+
+    37 0001:001CCC98    38 0001:001CCCA2    39 0001:001CCCB9    40 0001:001CCCC7
+    43 0001:001CCCCF    44 0001:001CCCDC    45 0001:001CCCE6    46 0001:001CCCF6
+    47 0001:001CCD01    50 0001:001CCD1F    52 0001:001CCD2F    55 0001:001CCD38
+    56 0001:001CCD52    58 0001:001CCD6C    59 0001:001CCD7D    60 0001:001CCD8B
+    61 0001:001CCD96    63 0001:001CCD98    64 0001:001CCDBF    65 0001:001CCDC6
+    68 0001:001CCE70    69 0001:001CCE73    70 0001:001CCE7E    71 0001:001CCE85
+    73 0001:001CCEB5
+
+Line numbers for fNoteBD(fNoteBD.pas) segment .text
+
+    59 0001:001CD158    60 0001:001CD194    61 0001:001CD1AB    64 0001:001CD1B9
+    65 0001:001CD1C6    66 0001:001CD1D1    67 0001:001CD1DC    68 0001:001CD1E9
+    69 0001:001CD205    70 0001:001CD221    71 0001:001CD22B    72 0001:001CD23C
+    73 0001:001CD24D    74 0001:001CD277    75 0001:001CD284    76 0001:001CD2A4
+    79 0001:001CD2AF    80 0001:001CD2BB    81 0001:001CD2CC    82 0001:001CD2E1
+    83 0001:001CD2F2    84 0001:001CD307    88 0001:001CD321    90 0001:001CD331
+    95 0001:001CD374    96 0001:001CD394    97 0001:001CD3A8    99 0001:001CD3C4
+   101 0001:001CD3CC   102 0001:001CD3E0   104 0001:001CD3FC   106 0001:001CD404
+   108 0001:001CD410   109 0001:001CD417   110 0001:001CD433   111 0001:001CD445
+   112 0001:001CD461   113 0001:001CD473   117 0001:001CD48B   118 0001:001CD49E
+   120 0001:001CD4A0   121 0001:001CD4A7   125 0001:001CD52C   126 0001:001CD531
+   131 0001:001CD534   132 0001:001CD540   137 0001:001CD544   138 0001:001CD550
+   140 0001:001CD57F
+
+Line numbers for fNoteBA(fNoteBA.pas) segment .text
+
+    54 0001:001CD7D0    55 0001:001CD80C    56 0001:001CD823    59 0001:001CD831
+    60 0001:001CD83E    61 0001:001CD849    62 0001:001CD854    63 0001:001CD861
+    64 0001:001CD87D    65 0001:001CD899    66 0001:001CD8A3    67 0001:001CD8AF
+    68 0001:001CD8B8    70 0001:001CD8C8    71 0001:001CD8E7    75 0001:001CD8F6
+    76 0001:001CD907    78 0001:001CD91B    79 0001:001CD928    80 0001:001CD94C
+    83 0001:001CD957    84 0001:001CD963    85 0001:001CD978    86 0001:001CD989
+    90 0001:001CD9A3    92 0001:001CD9B3    96 0001:001CD9E8    97 0001:001CD9F1
+    98 0001:001CDA08   102 0001:001CDA10   103 0001:001CDA15   106 0001:001CDA18
+   107 0001:001CDA2F   109 0001:001CDA44   110 0001:001CDA57   112 0001:001CDA59
+   113 0001:001CDA60   114 0001:001CDA77   115 0001:001CDA9E   116 0001:001CDAB4
+   117 0001:001CDABB   119 0001:001CDB5E
+
+Line numbers for fSurgery(fSurgery.pas) segment .text
+
+   355 0001:001CEE24   356 0001:001CEE2B   357 0001:001CEE36   358 0001:001CEE42
+   359 0001:001CEE4C   361 0001:001CEE60   363 0001:001CEE80   364 0001:001CEE8C
+   367 0001:001CEE92   369 0001:001CEEA0   370 0001:001CEEA7   371 0001:001CEEB5
+   375 0001:001CEEC6   376 0001:001CEECF   378 0001:001CEEEF   379 0001:001CEEFE
+   381 0001:001CEF0C   382 0001:001CEF18   385 0001:001CEF1E   386 0001:001CEF33
+   389 0001:001CEF3C   390 0001:001CEF46   392 0001:001CEF5A   394 0001:001CEF7A
+   395 0001:001CEF86   398 0001:001CEF8C   400 0001:001CEF9A   401 0001:001CEFA1
+   402 0001:001CEFAF   406 0001:001CEFBD   410 0001:001CF0C0   411 0001:001CF0C3
+   412 0001:001CF0CA   413 0001:001CF0D1   414 0001:001CF0D8   415 0001:001CF0E9
+   416 0001:001CF0F4   417 0001:001CF105   418 0001:001CF116   419 0001:001CF124
+   420 0001:001CF12B   421 0001:001CF139   422 0001:001CF143   423 0001:001CF14D
+   424 0001:001CF157   428 0001:001CF15C   429 0001:001CF17C   430 0001:001CF183
+   431 0001:001CF195   432 0001:001CF1A9   433 0001:001CF1B6   434 0001:001CF1CA
+   436 0001:001CF1D9   437 0001:001CF1F5   438 0001:001CF20C   439 0001:001CF21E
+   440 0001:001CF233   441 0001:001CF248   442 0001:001CF261   445 0001:001CF271
+   447 0001:001CF285   449 0001:001CF292   450 0001:001CF2A0   452 0001:001CF2AB
+   454 0001:001CF2BA   456 0001:001CF2C1   461 0001:001CF2EC   462 0001:001CF2F5
+   463 0001:001CF2FC   464 0001:001CF306   465 0001:001CF310   466 0001:001CF324
+   467 0001:001CF32F   468 0001:001CF33A   469 0001:001CF361   470 0001:001CF36A
+   471 0001:001CF377   472 0001:001CF385   473 0001:001CF392   474 0001:001CF39E
+   475 0001:001CF3B0   476 0001:001CF3C2   480 0001:001CF3CC   482 0001:001CF3CF
+   483 0001:001CF3DA   484 0001:001CF3E8   489 0001:001CF3EC   491 0001:001CF403
+   492 0001:001CF413   493 0001:001CF453   494 0001:001CF479   499 0001:001CF49C
+   501 0001:001CF4D4   503 0001:001CF4DD   504 0001:001CF4E7   506 0001:001CF4F1
+   507 0001:001CF505   508 0001:001CF50F   509 0001:001CF51C   512 0001:001CF527
+   513 0001:001CF52A   514 0001:001CF538   515 0001:001CF546   516 0001:001CF554
+   517 0001:001CF566   518 0001:001CF578   519 0001:001CF581   520 0001:001CF58F
+   521 0001:001CF59D   522 0001:001CF5A7   524 0001:001CF5B0   527 0001:001CF5DC
+   528 0001:001CF5DF   529 0001:001CF5EA   530 0001:001CF5F5   532 0001:001CF600
+   536 0001:001CF604   537 0001:001CF609   542 0001:001CF60C   545 0001:001CF637
+   546 0001:001CF63E   547 0001:001CF64C   549 0001:001CF65E   550 0001:001CF684
+   551 0001:001CF6A9   547 0001:001CF6AA   552 0001:001CF6AD   553 0001:001CF6C4
+   554 0001:001CF6D2   556 0001:001CF6D9   561 0001:001CF710   562 0001:001CF72B
+   564 0001:001CF731   566 0001:001CF743   567 0001:001CF74D   569 0001:001CF757
+   571 0001:001CF7A7   572 0001:001CF7C9   575 0001:001CF7EF   581 0001:001CF8C8
+   582 0001:001CF8D4   586 0001:001CF8D8   587 0001:001CF8DE   588 0001:001CF8E7
+   589 0001:001CF8F8   590 0001:001CF90C   591 0001:001CF91C   592 0001:001CF92C
+   593 0001:001CF93C   594 0001:001CF94B   596 0001:001CF95B   605 0001:001CF960
+   608 0001:001CF993   610 0001:001CF99C   611 0001:001CF9A6   613 0001:001CF9B0
+   614 0001:001CF9CC   615 0001:001CF9D9   616 0001:001CF9E0   617 0001:001CF9E8
+   618 0001:001CF9F2   621 0001:001CFA0D   622 0001:001CFA43   624 0001:001CFA4F
+   626 0001:001CFA59   627 0001:001CFA8A   628 0001:001CFAB2   630 0001:001CFAC6
+   631 0001:001CFAD8   633 0001:001CFAE9   634 0001:001CFB04   637 0001:001CFB10
+   639 0001:001CFB21   643 0001:001CFB3B   644 0001:001CFB4C   645 0001:001CFB5D
+   646 0001:001CFB6E   647 0001:001CFB86   648 0001:001CFB9E   649 0001:001CFBC2
+   651 0001:001CFBDF   652 0001:001CFBF0   653 0001:001CFBFB   654 0001:001CFC0C
+   655 0001:001CFC19   659 0001:001CFC20   660 0001:001CFC3E   661 0001:001CFC5A
+   662 0001:001CFC61   665 0001:001CFCE0   667 0001:001CFCE7   668 0001:001CFD04
+   670 0001:001CFD0A   671 0001:001CFD47   672 0001:001CFD50   673 0001:001CFD5B
+   675 0001:001CFD62   679 0001:001CFD6C   680 0001:001CFD89   686 0001:001CFD8C
+   688 0001:001CFD90   690 0001:001CFD96   691 0001:001CFD9A   692 0001:001CFD9F
+   693 0001:001CFDA7   694 0001:001CFDAF   695 0001:001CFDBD   696 0001:001CFDC5
+   697 0001:001CFDD3   698 0001:001CFDDB   699 0001:001CFDE3   700 0001:001CFDE8
+   701 0001:001CFDF0   702 0001:001CFDF8   703 0001:001CFDFD   704 0001:001CFE05
+   705 0001:001CFE09   707 0001:001CFE0E   710 0001:001CFE16   711 0001:001CFE23
+   712 0001:001CFE31   714 0001:001CFE3E   716 0001:001CFE48   717 0001:001CFE52
+   718 0001:001CFE59   721 0001:001CFE5C   722 0001:001CFE62   723 0001:001CFE6F
+   724 0001:001CFE7C   725 0001:001CFE80   726 0001:001CFE97   727 0001:001CFEA5
+   738 0001:001CFEA8   739 0001:001CFED7   740 0001:001CFEE8   742 0001:001CFEFE
+   743 0001:001CFF08   745 0001:001CFF19   749 0001:001CFF32   750 0001:001CFF4B
+   751 0001:001CFF65   752 0001:001CFF74   753 0001:001CFF82   754 0001:001CFF90
+   756 0001:001CFFB9   758 0001:001CFFC9   759 0001:001CFFD3   760 0001:001D000B
+   761 0001:001D0020   763 0001:001D003B   765 0001:001D0044   766 0001:001D004D
+   768 0001:001D0056   769 0001:001D005D   773 0001:001D0066   774 0001:001D006D
+   776 0001:001D0074   780 0001:001D0088   781 0001:001D0092   782 0001:001D00AD
+   783 0001:001D00BD   784 0001:001D00CC   786 0001:001D00D6   789 0001:001D00E0
+   790 0001:001D012D   791 0001:001D013F   792 0001:001D0158   793 0001:001D0172
+   794 0001:001D0181   795 0001:001D018F   796 0001:001D01A2   798 0001:001D01CB
+   800 0001:001D01DB   801 0001:001D01FC   802 0001:001D0211   804 0001:001D022C
+   807 0001:001D0235   809 0001:001D023F   815 0001:001D02E8   816 0001:001D0315
+   817 0001:001D032F   820 0001:001D0416   826 0001:001D046C   827 0001:001D046F
+   828 0001:001D0471   830 0001:001D0477   831 0001:001D0480   832 0001:001D0492
+   833 0001:001D04A3   835 0001:001D04AA   838 0001:001D04D6   839 0001:001D04E0
+   842 0001:001D0509   851 0001:001D0514   852 0001:001D052A   854 0001:001D0533
+   855 0001:001D0540   857 0001:001D0565   858 0001:001D0571   862 0001:001D05C0
+   863 0001:001D05C3   865 0001:001D05C7   866 0001:001D05D4   867 0001:001D05E1
+   870 0001:001D05FD   871 0001:001D060A   872 0001:001D0617   874 0001:001D0631
+   890 0001:001D0634   891 0001:001D066E   892 0001:001D0684   894 0001:001D069B
+   895 0001:001D06AC   897 0001:001D06B1   898 0001:001D06B5   899 0001:001D06BA
+   900 0001:001D06C8   901 0001:001D06D0   902 0001:001D06E4   904 0001:001D06ED
+   905 0001:001D06F3   906 0001:001D06FB   907 0001:001D070E   908 0001:001D0717
+   909 0001:001D072A   910 0001:001D073D   911 0001:001D074A   912 0001:001D0764
+   913 0001:001D0777   914 0001:001D077B   916 0001:001D0780   920 0001:001D0785
+   921 0001:001D07B8   922 0001:001D07D0   923 0001:001D07F0   924 0001:001D07F2
+   927 0001:001D07FA   928 0001:001D0806   929 0001:001D0820   930 0001:001D0835
+   932 0001:001D0848   933 0001:001D0859   934 0001:001D0864   935 0001:001D0878
+   939 0001:001D0882   941 0001:001D088B   946 0001:001D0935   947 0001:001D094D
+   948 0001:001D0954   960 0001:001D0968   962 0001:001D0999   963 0001:001D09A5
+   964 0001:001D09B1   965 0001:001D09E0   966 0001:001D09EC   968 0001:001D09F8
+   969 0001:001D0A04   970 0001:001D0A0E   971 0001:001D0A1E   972 0001:001D0A32
+   973 0001:001D0A39   974 0001:001D0A79   975 0001:001D0A8C   976 0001:001D0A96
+   977 0001:001D0AA5   978 0001:001D0AAB   979 0001:001D0ABA   980 0001:001D0ACB
+   981 0001:001D0AD5   982 0001:001D0AE0   983 0001:001D0AEB   984 0001:001D0AFE
+   988 0001:001D0B2C   989 0001:001D0B3B   992 0001:001D0B3D   994 0001:001D0B56
+   996 0001:001D0B5C   997 0001:001D0B7B   998 0001:001D0BB0   999 0001:001D0BC1
+  1001 0001:001D0BC9  1002 0001:001D0BCF  1004 0001:001D0BEA  1016 0001:001D0D78
+  1017 0001:001D0DA8  1018 0001:001D0DAF  1020 0001:001D0DB5  1021 0001:001D0DBB
+  1022 0001:001D0DD0  1023 0001:001D0E11  1024 0001:001D0E4C  1025 0001:001D0E55
+  1026 0001:001D0E68  1027 0001:001D0E7B  1028 0001:001D0E89  1029 0001:001D0E9C
+  1031 0001:001D0EBE  1032 0001:001D0EDC  1033 0001:001D0EFC  1040 0001:001D0F1A
+  1041 0001:001D0F25  1042 0001:001D0F42  1043 0001:001D0F46  1045 0001:001D0F50
+  1046 0001:001D0F67  1047 0001:001D0F7D  1048 0001:001D0F8B  1049 0001:001D0FB3
+  1050 0001:001D0FCA  1051 0001:001D0FDE  1052 0001:001D0FE9  1053 0001:001D0FFD
+  1055 0001:001D1007  1057 0001:001D100D  1063 0001:001D10B9  1064 0001:001D10CE
+  1065 0001:001D10D5  1066 0001:001D10E6  1068 0001:001D1114  1069 0001:001D1120
+  1070 0001:001D112C  1071 0001:001D1158  1073 0001:001D1162  1074 0001:001D116E
+  1075 0001:001D117A  1076 0001:001D1187  1077 0001:001D1198  1078 0001:001D119F
+  1079 0001:001D11DE  1080 0001:001D11EE  1081 0001:001D11F7  1082 0001:001D1205
+  1083 0001:001D120E  1084 0001:001D1217  1085 0001:001D122A  1089 0001:001D123A
+  1090 0001:001D1249  1093 0001:001D124D  1094 0001:001D125A  1101 0001:001D136C
+  1102 0001:001D138F  1103 0001:001D1396  1104 0001:001D13AD  1105 0001:001D13FE
+  1106 0001:001D1416  1107 0001:001D142D  1108 0001:001D1434  1110 0001:001D1441
+  1111 0001:001D144B  1112 0001:001D148F  1113 0001:001D14D3  1114 0001:001D14FD
+  1117 0001:001D150D  1118 0001:001D1514  1120 0001:001D1525  1121 0001:001D1540
+  1123 0001:001D1544  1125 0001:001D1572  1128 0001:001D1580  1129 0001:001D1587
+  1130 0001:001D15AA  1131 0001:001D15B6  1132 0001:001D15E2  1133 0001:001D15EC
+  1134 0001:001D1616  1136 0001:001D1624  1137 0001:001D1630  1138 0001:001D163A
+  1139 0001:001D1647  1140 0001:001D1658  1142 0001:001D165F  1143 0001:001D16A6
+  1144 0001:001D16C3  1145 0001:001D16D3  1146 0001:001D16E4  1147 0001:001D16F2
+  1148 0001:001D16FB  1149 0001:001D1704  1150 0001:001D1717  1151 0001:001D1725
+  1158 0001:001D17F8  1159 0001:001D182B  1160 0001:001D1831  1162 0001:001D1864
+  1163 0001:001D187E  1164 0001:001D189A  1165 0001:001D18A1  1166 0001:001D18D0
+  1167 0001:001D18D7  1168 0001:001D18F2  1173 0001:001D1941  1174 0001:001D194B
+  1175 0001:001D1956  1176 0001:001D195C  1179 0001:001D196B  1180 0001:001D1975
+  1183 0001:001D197A  1184 0001:001D1992  1185 0001:001D19B3  1186 0001:001D19C6
+  1187 0001:001D19D6  1188 0001:001D19E4  1190 0001:001D1A1B  1193 0001:001D1A33
+  1195 0001:001D1A39  1197 0001:001D1A55  1198 0001:001D1A60  1200 0001:001D1A6B
+  1201 0001:001D1A76  1202 0001:001D1A7C  1205 0001:001D1A88  1206 0001:001D1A94
+  1208 0001:001D1ABF  1213 0001:001D1D60  1214 0001:001D1D69  1215 0001:001D1D6E
+  1223 0001:001D1D70  1224 0001:001D1D77  1233 0001:001D1D78  1235 0001:001D1D9F
+  1236 0001:001D1DAC  1238 0001:001D1DB5  1239 0001:001D1DB7  1240 0001:001D1DC4
+  1242 0001:001D1DDD  1243 0001:001D1DEC  1245 0001:001D1DF2  1246 0001:001D1E02
+  1249 0001:001D1E08  1253 0001:001D1E13  1254 0001:001D1E1F  1256 0001:001D1E21
+  1257 0001:001D1E2E  1258 0001:001D1E42  1259 0001:001D1E49  1264 0001:001D1E84
+  1266 0001:001D1E8A  1267 0001:001D1EA9  1268 0001:001D1EB2  1277 0001:001D1EB8
+  1278 0001:001D1ECB  1279 0001:001D1F0F  1280 0001:001D1F26  1281 0001:001D1F33
+  1283 0001:001D1F64  1285 0001:001D1F86  1286 0001:001D1FB6  1287 0001:001D1FC5
+  1288 0001:001D1FD3  1289 0001:001D1FEB  1290 0001:001D1FFC  1293 0001:001D2030
+  1295 0001:001D2040  1296 0001:001D206C  1299 0001:001D207F  1300 0001:001D20B4
+  1302 0001:001D20C7  1307 0001:001D20D0  1308 0001:001D20DB  1311 0001:001D20EE
+  1312 0001:001D20F2  1313 0001:001D2116  1317 0001:001D2137  1319 0001:001D2147
+  1328 0001:001D2264  1330 0001:001D2287  1331 0001:001D2290  1332 0001:001D22BB
+  1333 0001:001D22DB  1334 0001:001D22DD  1336 0001:001D22E5  1337 0001:001D2310
+  1338 0001:001D234E  1339 0001:001D2378  1340 0001:001D23A2  1341 0001:001D23C9
+  1342 0001:001D23DA  1343 0001:001D2401  1344 0001:001D2438  1345 0001:001D2446
+  1346 0001:001D2459  1347 0001:001D247C  1348 0001:001D2489  1350 0001:001D2497
+  1351 0001:001D24D1  1352 0001:001D2502  1353 0001:001D2531  1354 0001:001D254A
+  1355 0001:001D256B  1356 0001:001D2593  1357 0001:001D25B3  1358 0001:001D25C6
+  1359 0001:001D25DF  1360 0001:001D2620  1361 0001:001D2634  1366 0001:001D27B4
+  1367 0001:001D27BB  1371 0001:001D27BC  1373 0001:001D27BF  1374 0001:001D27DD
+  1375 0001:001D27F7  1376 0001:001D280F  1381 0001:001D2814  1382 0001:001D2831
+  1383 0001:001D2845  1385 0001:001D2865  1387 0001:001D286F  1388 0001:001D287F
+  1389 0001:001D288D  1391 0001:001D28CC  1393 0001:001D28E4  1394 0001:001D28EE
+  1396 0001:001D28F5  1397 0001:001D28FB  1399 0001:001D2926  1404 0001:001D2B38
+  1405 0001:001D2B42  1414 0001:001D2B44  1415 0001:001D2B69  1416 0001:001D2B6B
+  1418 0001:001D2B78  1420 0001:001D2B88  1421 0001:001D2BC6  1424 0001:001D2BD8
+  1425 0001:001D2C16  1429 0001:001D2C25  1430 0001:001D2C63  1433 0001:001D2C70
+  1436 0001:001D2C88  1437 0001:001D2C92  1440 0001:001D2CA3  1446 0001:001D2E30
+  1448 0001:001D2E33  1451 0001:001D2E43  1453 0001:001D2E53  1454 0001:001D2E69
+  1456 0001:001D2E75  1458 0001:001D2E85  1459 0001:001D2E98  1461 0001:001D2E9A
+  1462 0001:001D2EA5  1470 0001:001D2F14  1472 0001:001D2F40  1473 0001:001D2F60
+  1474 0001:001D2F79  1476 0001:001D2F8D  1477 0001:001D2FB9  1479 0001:001D2FCF
+  1480 0001:001D2FE0  1482 0001:001D2FE2  1483 0001:001D2FFC  1485 0001:001D3002
+  1486 0001:001D3011  1488 0001:001D3013  1490 0001:001D302C  1491 0001:001D303D
+  1493 0001:001D303F  1494 0001:001D3046  1505 0001:001D318C  1507 0001:001D31BB
+  1508 0001:001D31D4  1509 0001:001D31EE  1511 0001:001D3202  1512 0001:001D3215
+  1514 0001:001D321A  1516 0001:001D324C  1518 0001:001D3260  1519 0001:001D326D
+  1522 0001:001D327C  1523 0001:001D3289  1525 0001:001D3296  1526 0001:001D32AE
+  1528 0001:001D32B4  1529 0001:001D32C3  1531 0001:001D32C5  1532 0001:001D331E
+  1535 0001:001D3504  1536 0001:001D3533  1538 0001:001D3543  1539 0001:001D3554
+  1540 0001:001D3573  1541 0001:001D3592  1542 0001:001D35B1  1543 0001:001D35D0
+  1544 0001:001D35EF  1545 0001:001D360E  1546 0001:001D362D  1547 0001:001D364C
+  1548 0001:001D366B  1557 0001:001D3700  1559 0001:001D3740  1560 0001:001D3759
+  1561 0001:001D3773  1562 0001:001D378E  1563 0001:001D37A1  1565 0001:001D37B4
+  1568 0001:001D380D  1569 0001:001D3815  1570 0001:001D382A  1572 0001:001D3830
+  1573 0001:001D383F  1576 0001:001D3844  1577 0001:001D3858  1578 0001:001D3869
+  1579 0001:001D3882  1580 0001:001D388F  1582 0001:001D38C6  1583 0001:001D38D0
+  1585 0001:001D38DA  1586 0001:001D38E4  1588 0001:001D38EB  1589 0001:001D38EF
+  1590 0001:001D38F9  1591 0001:001D3908  1592 0001:001D3936  1593 0001:001D3958
+  1595 0001:001D396C  1597 0001:001D3972  1598 0001:001D397A  1599 0001:001D3981
+  1600 0001:001D3988  1601 0001:001D3995  1602 0001:001D39A2  1603 0001:001D39A7
+  1604 0001:001D39B0  1605 0001:001D39CB  1608 0001:001D39D6  1609 0001:001D39E7
+  1616 0001:001D3BEC  1618 0001:001D3C18  1619 0001:001D3C32  1620 0001:001D3C4B
+  1622 0001:001D3C5B  1623 0001:001D3C87  1624 0001:001D3CA1  1626 0001:001D3CA7
+  1627 0001:001D3CB6  1629 0001:001D3CB8  1630 0001:001D3CBF  1637 0001:001D3D30
+  1639 0001:001D3D4B  1641 0001:001D3D58  1642 0001:001D3D84  1643 0001:001D3D92
+  1644 0001:001D3D9C  1647 0001:001D3DB4  1648 0001:001D3DBB  1651 0001:001D3DE4
+  1652 0001:001D3DF7  1667 0001:001D3E74  1677 0001:001D3EB2  1678 0001:001D3ECB
+  1679 0001:001D3ED9  1681 0001:001D3EF1  1682 0001:001D3EFB  1684 0001:001D3F14
+  1686 0001:001D3F17  1687 0001:001D3F30  1689 0001:001D3F43  1691 0001:001D3F57
+  1692 0001:001D3F6A  1694 0001:001D3F6F  1696 0001:001D3FA1  1698 0001:001D3FB5
+  1699 0001:001D3FC2  1702 0001:001D3FD1  1703 0001:001D3FDE  1706 0001:001D3FEB
+  1707 0001:001D3FEF  1708 0001:001D4007  1710 0001:001D4011  1711 0001:001D402B
+  1712 0001:001D403F  1714 0001:001D404A  1715 0001:001D405A  1716 0001:001D4063
+  1718 0001:001D406C  1721 0001:001D4076  1722 0001:001D40BB  1724 0001:001D40CF
+  1725 0001:001D40E7  1726 0001:001D40FD  1727 0001:001D412D  1728 0001:001D415A
+  1730 0001:001D4160  1731 0001:001D417B  1733 0001:001D4186  1737 0001:001D4197
+  1738 0001:001D41A6  1739 0001:001D41BE  1741 0001:001D41C5  1743 0001:001D41CF
+  1744 0001:001D41E4  1746 0001:001D4212  1747 0001:001D421E  1748 0001:001D422A
+  1749 0001:001D4256  1750 0001:001D4262  1751 0001:001D426F  1754 0001:001D4286
+  1756 0001:001D428C  1757 0001:001D42B0  1759 0001:001D42CD  1773 0001:001D4544
+  1774 0001:001D4589  1775 0001:001D4590  1776 0001:001D459C  1777 0001:001D45A6
+  1778 0001:001D45C6  1780 0001:001D4602  1781 0001:001D4605  1782 0001:001D4607
+  1778 0001:001D4608  1783 0001:001D460B  1785 0001:001D461C  1786 0001:001D4626
+  1787 0001:001D4630  1789 0001:001D4639  1790 0001:001D4640  1792 0001:001D4645
+  1795 0001:001D4659  1797 0001:001D466D  1799 0001:001D4679  1800 0001:001D4686
+  1803 0001:001D4695  1804 0001:001D46A2  1806 0001:001D46AF  1807 0001:001D46BD
+  1809 0001:001D46C3  1810 0001:001D46D2  1812 0001:001D46D6  1814 0001:001D46E2
+  1815 0001:001D46F5  1817 0001:001D46F9  1819 0001:001D4720  1820 0001:001D4724
+  1821 0001:001D4726  1823 0001:001D472E  1824 0001:001D4747  1826 0001:001D474F
+  1827 0001:001D4751  1828 0001:001D475E  1829 0001:001D4772  1831 0001:001D4781
+  1832 0001:001D4791  1833 0001:001D479A  1836 0001:001D47A5  1837 0001:001D47AF
+  1840 0001:001D47B5  1841 0001:001D47C3  1846 0001:001D47D8  1848 0001:001D47FB
+  1849 0001:001D4802  1851 0001:001D4834  1854 0001:001D4A30  1856 0001:001D4A36
+  1857 0001:001D4A52  1858 0001:001D4A67  1859 0001:001D4A6F  1861 0001:001D4A7D
+  1862 0001:001D4A97  1863 0001:001D4AAC  1865 0001:001D4ADE  1866 0001:001D4B09
+  1869 0001:001D4B26  1870 0001:001D4B33  1871 0001:001D4B40  1872 0001:001D4B4D
+  1874 0001:001D4B5A  1876 0001:001D4B6A  1877 0001:001D4B77  1878 0001:001D4B84
+  1879 0001:001D4B91  1880 0001:001D4BAC  1881 0001:001D4BDF  1884 0001:001D4C15
+  1885 0001:001D4C22  1886 0001:001D4C2F  1887 0001:001D4C3C  1888 0001:001D4C49
+  1889 0001:001D4C56  1891 0001:001D4C63  1896 0001:001D4C68  1897 0001:001D4C73
+  1902 0001:001D4C74  1903 0001:001D4C7F  1906 0001:001D4C80  1908 0001:001D4C96
+  1910 0001:001D4CB1  1915 0001:001D4CD4  1916 0001:001D4CE9  1917 0001:001D4CF0
+  1922 0001:001D4CF4  1923 0001:001D4CFB  1924 0001:001D4D05  1927 0001:001D4D08
+  1929 0001:001D4D0F  1930 0001:001D4D2C  1932 0001:001D4D32  1933 0001:001D4D6F
+  1934 0001:001D4D78  1935 0001:001D4D81  1936 0001:001D4D8C  1938 0001:001D4D93
+  1943 0001:001D4D9C  1944 0001:001D4DB9  1949 0001:001D4DBC  1950 0001:001D4DD9
+  1953 0001:001D4DDC  1955 0001:001D4DE3  1956 0001:001D4DED  1957 0001:001D4DFD
+  1958 0001:001D4E0B  1960 0001:001D4E26  1961 0001:001D4E30  1962 0001:001D4E3A
+  1964 0001:001D4E52  1967 0001:001D4E58  1969 0001:001D4E5F  1970 0001:001D4E69
+  1971 0001:001D4E79  1972 0001:001D4E87  1974 0001:001D4EA2  1975 0001:001D4EAC
+  1976 0001:001D4EB6  1978 0001:001D4ECE  1983 0001:001D4ED4  1985 0001:001D4EED
+  1987 0001:001D4EF3  1988 0001:001D4F02  1992 0001:001D4F22  1993 0001:001D4F34
+  1995 0001:001D4F44  1996 0001:001D4F56  1997 0001:001D4F60  1998 0001:001D4F6D
+  1999 0001:001D4F7A  2000 0001:001D4F8A  2001 0001:001D4FBA  2002 0001:001D4FC8
+  2003 0001:001D4FCF  2004 0001:001D4FDF  2007 0001:001D4FEF  2010 0001:001D5001
+  2011 0001:001D501B  2019 0001:001D507C  2020 0001:001D50AC  2021 0001:001D50B7
+  2023 0001:001D50D0  2024 0001:001D50D7  2027 0001:001D50F2  2028 0001:001D5109
+  2030 0001:001D5118  2031 0001:001D5126  2033 0001:001D512C  2034 0001:001D5139
+  2039 0001:001D5144  2050 0001:001D5178  2052 0001:001D51B9  2053 0001:001D51D2
+  2054 0001:001D51EB  2056 0001:001D5201  2057 0001:001D520B  2058 0001:001D5215
+  2059 0001:001D521C  2061 0001:001D5243  2062 0001:001D5255  2063 0001:001D526F
+  2064 0001:001D5273  2066 0001:001D527B  2069 0001:001D52B4  2071 0001:001D52B9
+  2073 0001:001D52BB  2074 0001:001D52CA  2077 0001:001D52D5  2078 0001:001D52E4
+  2081 0001:001D52E9  2082 0001:001D52FC  2083 0001:001D533E  2086 0001:001D536A
+  2087 0001:001D5378  2088 0001:001D5398  2089 0001:001D53AD  2090 0001:001D53CB
+  2092 0001:001D53D1  2093 0001:001D53E3  2094 0001:001D53F6  2097 0001:001D540C
+  2099 0001:001D5415  2100 0001:001D5427  2105 0001:001D54EC  2106 0001:001D54F3
+  2115 0001:001D54F4  2116 0001:001D551C  2118 0001:001D5525  2119 0001:001D552F
+  2121 0001:001D5539  2122 0001:001D5551  2123 0001:001D556D  2124 0001:001D5577
+  2125 0001:001D5584  2128 0001:001D558F  2129 0001:001D5599  2131 0001:001D55BA
+  2132 0001:001D55CB  2134 0001:001D55D0  2135 0001:001D55DF  2136 0001:001D55ED
+  2137 0001:001D55F8  2138 0001:001D55FF  2139 0001:001D5610  2140 0001:001D561E
+  2141 0001:001D5629  2142 0001:001D563A  2143 0001:001D5661  2144 0001:001D5683
+  2145 0001:001D5696  2156 0001:001D56D5  2157 0001:001D56E6  2158 0001:001D56ED
+  2159 0001:001D5703  2162 0001:001D570A  2163 0001:001D5753  2165 0001:001D57A9
+  2167 0001:001D57B9  2170 0001:001D5910  2172 0001:001D5926  2174 0001:001D593E
+  2175 0001:001D5949  2176 0001:001D5960  2177 0001:001D5970  2179 0001:001D598C
+  2184 0001:001D5A04  2185 0001:001D5A0F  2188 0001:001D5A10  2190 0001:001D5A26
+  2191 0001:001D5A45  2194 0001:001D5A68  2196 0001:001D5A6B  2197 0001:001D5A8C
+  2198 0001:001D5AA1  2199 0001:001D5AB6  2200 0001:001D5ACB  2201 0001:001D5AE0
+  2206 0001:001D5AE4  2207 0001:001D5AEF  2210 0001:001D5AF0  2212 0001:001D5AF4
+  2213 0001:001D5B01  2214 0001:001D5B0F  2215 0001:001D5B1A  2216 0001:001D5B30
+  2219 0001:001D5B34  2221 0001:001D5B37  2222 0001:001D5B46  2223 0001:001D5B67
+  2226 0001:001D5B6C  2228 0001:001D5B6F  2229 0001:001D5B7E  2230 0001:001D5B9F
+  2235 0001:001D5BA4  2236 0001:001D5BAF  2241 0001:001D5BB0  2242 0001:001D5BBB
+  2247 0001:001D5BBC  2248 0001:001D5BC7  2253 0001:001D5BC8  2254 0001:001D5BD3
+  2257 0001:001D5BD4  2259 0001:001D5BD7  2260 0001:001D5BEE  2261 0001:001D5C05
+  2262 0001:001D5C1C  2263 0001:001D5C33  2264 0001:001D5C45  2268 0001:001D5C48
+  2269 0001:001D5C50  2270 0001:001D5C54  2271 0001:001D5C59  2272 0001:001D5C63
+  2273 0001:001D5C6F  2302 0001:001D5C70  2303 0001:001D5C75  2307 0001:001D5C78
+  2308 0001:001D5C7B  2309 0001:001D5C8A  2310 0001:001D5C9E  2311 0001:001D5CAC
+  2314 0001:001D5CB0  2315 0001:001D5CB6  2316 0001:001D5CBC  2318 0001:001D5CC9
+  2319 0001:001D5CD6  2321 0001:001D5CDA  2328 0001:001D5CF3  2333 0001:001D5D0A
+  2334 0001:001D5D16  2338 0001:001D5D2A  2339 0001:001D5D37  2344 0001:001D5D44
+  2345 0001:001D5D50  2347 0001:001D5D64  2348 0001:001D5D7B  2349 0001:001D5D93
+  2350 0001:001D5DA8  2355 0001:001D5DAC  2356 0001:001D5DB5  2365 0001:001D5DB8
+  2366 0001:001D5DDC  2369 0001:001D5DE9  2371 0001:001D5DF5  2373 0001:001D5DFB
+  2374 0001:001D5E0A  2375 0001:001D5E23  2376 0001:001D5E3C  2377 0001:001D5E4C
+  2378 0001:001D5E5A  2380 0001:001D5E6E  2381 0001:001D5E80  2382 0001:001D5E8E
+  2383 0001:001D5E98  2384 0001:001D5EA8  2385 0001:001D5EB5  2387 0001:001D5EC2
+  2388 0001:001D5ED3  2389 0001:001D5EDC  2391 0001:001D5EE0  2392 0001:001D5EF9
+  2401 0001:001D5F1A  2402 0001:001D5F4A  2406 0001:001D5F5D  2407 0001:001D5F7E
+  2409 0001:001D5F87  2410 0001:001D5F95  2411 0001:001D5F9C  2415 0001:001D5FBB
+  2416 0001:001D5FC8  2417 0001:001D5FE9  2418 0001:001D5FF6  2420 0001:001D6003
+  2421 0001:001D600C  2422 0001:001D6027  2423 0001:001D6030  2425 0001:001D603E
+  2426 0001:001D6048  2427 0001:001D6054  2428 0001:001D605B  2429 0001:001D6066
+  2430 0001:001D6074  2431 0001:001D6082  2432 0001:001D609C  2434 0001:001D60AC
+  2438 0001:001D6144  2441 0001:001D614A  2442 0001:001D615E  2443 0001:001D6168
+  2444 0001:001D617C  2446 0001:001D6186  2447 0001:001D61A0  2451 0001:001D61A4
+  2454 0001:001D61A7  2455 0001:001D61BB  2456 0001:001D61C5  2457 0001:001D61D9
+  2459 0001:001D61E3  2465 0001:001D61E8  2466 0001:001D6206  2467 0001:001D6215
+  2468 0001:001D6223  2469 0001:001D6231  2470 0001:001D6238  2471 0001:001D624B
+  2472 0001:001D625F  2473 0001:001D626D  2474 0001:001D6281  2475 0001:001D6295
+  2476 0001:001D62A8  2477 0001:001D62B9  2478 0001:001D62CA  2479 0001:001D62DA
+  2480 0001:001D6301  2481 0001:001D630B  2483 0001:001D6314  2484 0001:001D6330
+  2485 0001:001D634F  2487 0001:001D6369  2488 0001:001D6371  2489 0001:001D637F
+  2491 0001:001D6388  2492 0001:001D638F  2493 0001:001D63A3  2494 0001:001D63AF
+  2495 0001:001D63D1  2497 0001:001D63DC  2499 0001:001D63E5  2500 0001:001D63F2
+  2502 0001:001D63F6  2503 0001:001D63FF  2504 0001:001D6408  2500 0001:001D6411
+  2509 0001:001D6417  2510 0001:001D6440  2513 0001:001D6454  2514 0001:001D6465
+  2515 0001:001D6478  2516 0001:001D648C  2517 0001:001D6493  2518 0001:001D64B8
+  2519 0001:001D64DA  2520 0001:001D64F7  2523 0001:001D6523  2524 0001:001D6536
+  2526 0001:001D6546  2535 0001:001D6580  2537 0001:001D65BE  2539 0001:001D65C4
+  2540 0001:001D65DF  2541 0001:001D660A  2543 0001:001D6617  2544 0001:001D6621
+  2546 0001:001D6694  2549 0001:001D66D4  2550 0001:001D670E  2551 0001:001D6726
+  2552 0001:001D6735  2554 0001:001D6744  2556 0001:001D6769  2559 0001:001D6776
+  2560 0001:001D6780  2566 0001:001D6830  2568 0001:001D6852  2569 0001:001D6869
+  2571 0001:001D687B  2572 0001:001D6888  2573 0001:001D6895  2574 0001:001D68A2
+  2575 0001:001D68AF  2579 0001:001D68C1  2580 0001:001D68CB  2581 0001:001D68DB
+  2582 0001:001D68E8  2584 0001:001D68F5  2585 0001:001D6929  2586 0001:001D694A
+  2587 0001:001D6964  2588 0001:001D6971  2589 0001:001D697E  2590 0001:001D698B
+  2591 0001:001D6998  2592 0001:001D69A6  2594 0001:001D69AD  2595 0001:001D69B7
+  2596 0001:001D69C3  2597 0001:001D69CA  2598 0001:001D69D5  2599 0001:001D69E3
+  2600 0001:001D69F1  2601 0001:001D6A24  2602 0001:001D6A6D  2603 0001:001D6A7A
+  2606 0001:001D6B18  2608 0001:001D6B1E  2609 0001:001D6B2B  2610 0001:001D6B38
+  2611 0001:001D6B45  2612 0001:001D6B52  2613 0001:001D6B5F  2614 0001:001D6B6C
+  2615 0001:001D6B79  2616 0001:001D6B86  2617 0001:001D6B93  2618 0001:001D6BA0
+  2619 0001:001D6BAD  2620 0001:001D6BBA  2621 0001:001D6BC7  2622 0001:001D6BD4
+  2623 0001:001D6BE1  2624 0001:001D6BEE  2625 0001:001D6BFB  2626 0001:001D6C08
+  2627 0001:001D6C15  2628 0001:001D6C22  2629 0001:001D6C4B  2630 0001:001D6C74
+  2631 0001:001D6C85  2632 0001:001D6C99  2636 0001:001D6C9C  2638 0001:001D6CA9
+  2640 0001:001D6CAF  2642 0001:001D6CB5  2643 0001:001D6CDA  2645 0001:001D6CE1
+  2647 0001:001D6CE7  2648 0001:001D6D0C  2651 0001:001D6D11  2652 0001:001D6D17
+  2653 0001:001D6D3C  2655 0001:001D6D41  2659 0001:001D6D48  2661 0001:001D6D51
+  2662 0001:001D6D5D  2663 0001:001D6D80  2664 0001:001D6DA1  2668 0001:001D6DA8
+  2669 0001:001D6DB2  2673 0001:001D6DB4  2674 0001:001D6DBE  2679 0001:001D6DC0
+  2680 0001:001D6DCC  2683 0001:001D6DD0  2685 0001:001D6DEF  2686 0001:001D6E09
+  2687 0001:001D6E23  2688 0001:001D6E3D  2689 0001:001D6E7C  2690 0001:001D6EBB
+  2691 0001:001D6ED5  2692 0001:001D6EEF  2693 0001:001D6F09  2694 0001:001D6F23
+  2702 0001:001D6F58  2703 0001:001D6F7B  2705 0001:001D6F85
+
+Line numbers for fSurgery(fSurgery.pas) segment .itext
+
+  2696 0002:000012B4  2697 0002:000012CE  2698 0002:000012D8  2699 0002:000012E9
+  2701 0002:000012FA
+
+Line numbers for fLkUpLocation(fLkUpLocation.pas) segment .text
+
+    40 0001:001D71F8    41 0001:001D7217    42 0001:001D721D    43 0001:001D7234
+    44 0001:001D7242    45 0001:001D724A    46 0001:001D725B    47 0001:001D7266
+    48 0001:001D726A    49 0001:001D7271    51 0001:001D727D    52 0001:001D728D
+    55 0001:001D72B5    57 0001:001D72C5    62 0001:001D72EC    63 0001:001D72F3
+    64 0001:001D7300    68 0001:001D7304    70 0001:001D730D    71 0001:001D731E
+    72 0001:001D7337    73 0001:001D7350    76 0001:001D7367    81 0001:001D7370
+    82 0001:001D7377    83 0001:001D737C    88 0001:001D7380    89 0001:001D7385
+    91 0001:001D73B4
+
+Line numbers for fOCSession(Orders\fOCSession.pas) segment .text
+
+    67 0001:001D7704    68 0001:001D7719    69 0001:001D7723    70 0001:001D7732
+    71 0001:001D7741    74 0001:001D775C    75 0001:001D7767    76 0001:001D7777
+    77 0001:001D777F    78 0001:001D778B    85 0001:001D779C    86 0001:001D77BE
+    87 0001:001D77CD    88 0001:001D77DB    90 0001:001D77E9    91 0001:001D77F5
+    92 0001:001D7810    88 0001:001D7811    93 0001:001D7814    94 0001:001D7820
+    96 0001:001D782C    97 0001:001D7838    99 0001:001D7857   100 0001:001D786B
+   103 0001:001D7875    94 0001:001D7876   104 0001:001D787D   106 0001:001D7892
+   108 0001:001D78A2   121 0001:001D78D8   122 0001:001D78FC   123 0001:001D7900
+   124 0001:001D790F   125 0001:001D791D   126 0001:001D7927   127 0001:001D7932
+   128 0001:001D7939   130 0001:001D7949   131 0001:001D7960   132 0001:001D796E
+   133 0001:001D7976   134 0001:001D7987   135 0001:001D798F   137 0001:001D79A7
+   138 0001:001D79C8   140 0001:001D79D5   141 0001:001D79E6   142 0001:001D79F2
+   144 0001:001D79FD   135 0001:001D7A00   145 0001:001D7A05   147 0001:001D7A21
+   148 0001:001D7A30   149 0001:001D7A3B   150 0001:001D7A46   151 0001:001D7A5D
+   153 0001:001D7A8A   154 0001:001D7AB7   155 0001:001D7AEF   150 0001:001D7AF0
+   158 0001:001D7AF9   159 0001:001D7B10   145 0001:001D7B13   160 0001:001D7B1C
+   161 0001:001D7B28   162 0001:001D7B34   163 0001:001D7B3C   164 0001:001D7B43
+   165 0001:001D7B57   166 0001:001D7B62   167 0001:001D7B74   168 0001:001D7B78
+   169 0001:001D7B80   170 0001:001D7B8A   173 0001:001D7BA8   174 0001:001D7BDA
+   178 0001:001D7BF7   180 0001:001D7C07   186 0001:001D7C6C   187 0001:001D7C8E
+   188 0001:001D7C98   190 0001:001D7CB0   191 0001:001D7CC0   192 0001:001D7CD5
+   191 0001:001D7D12   193 0001:001D7D15   188 0001:001D7D18   194 0001:001D7D1D
+   195 0001:001D7D35   196 0001:001D7D4D   198 0001:001D7D65   206 0001:001D7D9C
+   209 0001:001D7DBD   211 0001:001D7DC3   212 0001:001D7DD4   213 0001:001D7DE4
+   214 0001:001D7DF1   215 0001:001D7DF5   216 0001:001D7E2E   218 0001:001D7E31
+   220 0001:001D7E4C   221 0001:001D7E59   222 0001:001D7E5D   223 0001:001D7E81
+   224 0001:001D7EB1   225 0001:001D7EB4   218 0001:001D7EB7   227 0001:001D7EBC
+   228 0001:001D7EC7   229 0001:001D7EDB   237 0001:001D7F08   240 0001:001D7F39
+   242 0001:001D7F3F   243 0001:001D7F4D   244 0001:001D7F5C   245 0001:001D7F68
+   246 0001:001D7FA1   247 0001:001D7FA5   248 0001:001D7FA8   250 0001:001D7FC7
+   251 0001:001D7FEB   253 0001:001D7FF1   255 0001:001D8024   256 0001:001D803E
+   258 0001:001D8055   260 0001:001D8068   261 0001:001D8098   262 0001:001D809B
+   248 0001:001D809E   265 0001:001D80A7   272 0001:001D80EC   274 0001:001D810B
+   276 0001:001D813F   277 0001:001D814F   278 0001:001D815D   280 0001:001D816D
+   281 0001:001D8180   280 0001:001D81BE   282 0001:001D81C3   283 0001:001D81D6
+   282 0001:001D8214   284 0001:001D8219   285 0001:001D8221   286 0001:001D822E
+   288 0001:001D8242   274 0001:001D8245   289 0001:001D824F   290 0001:001D8261
+   293 0001:001D8294   295 0001:001D82AE   298 0001:001D82FC   299 0001:001D830D
+   301 0001:001D830F   302 0001:001D8319   303 0001:001D8335   304 0001:001D833C
+   305 0001:001D8343   311 0001:001D8400   312 0001:001D8405   315 0001:001D8408
+   317 0001:001D840B   318 0001:001D8412   319 0001:001D8419   325 0001:001D841C
+   326 0001:001D8421   330 0001:001D8424   333 0001:001D8427   334 0001:001D8434
+   339 0001:001D8438   340 0001:001D843F   341 0001:001D8444   351 0001:001D8448
+   352 0001:001D8458   354 0001:001D8487
+
+Line numbers for uSignItems(uSignItems.pas) segment .text
+
+   142 0001:001D8664   143 0001:001D8667   149 0001:001D8668   150 0001:001D8672
+   152 0001:001D8680   153 0001:001D868C   155 0001:001D86A5   156 0001:001D86A7
+   158 0001:001D86A9   150 0001:001D86AA   159 0001:001D86AD   160 0001:001D86AF
+   168 0001:001D86B8   169 0001:001D86C8   171 0001:001D86CA   172 0001:001D86E9
+   173 0001:001D8708   174 0001:001D8713   175 0001:001D871C   176 0001:001D8724
+   177 0001:001D8730   169 0001:001D8731   178 0001:001D8736   183 0001:001D8740
+   184 0001:001D8758   185 0001:001D8774   187 0001:001D8797   188 0001:001D87C5
+   190 0001:001D87D6   185 0001:001D87D7   191 0001:001D87DF   192 0001:001D87FB
+   194 0001:001D881C   195 0001:001D884A   196 0001:001D885B   192 0001:001D885C
+   197 0001:001D885F   200 0001:001D88A4   201 0001:001D88A7   203 0001:001D88B0
+   204 0001:001D88B7   205 0001:001D88C5   207 0001:001D88E5   210 0001:001D88F4
+   211 0001:001D88F9   215 0001:001D88FC   216 0001:001D8907   220 0001:001D8908
+   221 0001:001D890D   234 0001:001D8910   235 0001:001D8930   237 0001:001D8935
+   238 0001:001D8948   239 0001:001D894C   240 0001:001D8959   241 0001:001D8977
+   244 0001:001D8988   247 0001:001D89B0   248 0001:001D89B3   249 0001:001D89BB
+   250 0001:001D89C3   253 0001:001D89C8   254 0001:001D89DA   255 0001:001D89E3
+   256 0001:001D89F9   257 0001:001D8A02   258 0001:001D8A11   259 0001:001D8A20
+   261 0001:001D8A34   264 0001:001D8A80   265 0001:001D8A8B   266 0001:001D8A93
+   267 0001:001D8A9B   268 0001:001D8AA7   285 0001:001D8AB8   286 0001:001D8ABD
+   287 0001:001D8ACF   286 0001:001D8AE4   288 0001:001D8AE7   291 0001:001D8AF8
+   292 0001:001D8B04   293 0001:001D8B0C   295 0001:001D8B10   296 0001:001D8B1D
+   300 0001:001D8B24   301 0001:001D8B2A   302 0001:001D8B2C   303 0001:001D8B2F
+   306 0001:001D8B34   307 0001:001D8B37   309 0001:001D8B3B   310 0001:001D8B42
+   314 0001:001D8B47   315 0001:001D8B48   316 0001:001D8B53   318 0001:001D8B5F
+   357 0001:001D8B64   358 0001:001D8B6B   359 0001:001D8B7F   360 0001:001D8B88
+   361 0001:001D8B94   362 0001:001D8BA0   363 0001:001D8BA9   364 0001:001D8BB0
+   365 0001:001D8BC6   366 0001:001D8BDC   367 0001:001D8BF2   368 0001:001D8BFB
+   369 0001:001D8C0B   371 0001:001D8C14   372 0001:001D8C3B   373 0001:001D8C3F
+   374 0001:001D8C4A   375 0001:001D8C51   377 0001:001D8C5F   378 0001:001D8C6D
+   379 0001:001D8C6F   381 0001:001D8C7D   383 0001:001D8C9F   384 0001:001D8CB0
+   385 0001:001D8CD6   386 0001:001D8CE0   387 0001:001D8CEE   388 0001:001D8CF8
+   392 0001:001D8D4C   393 0001:001D8D50   394 0001:001D8D6B   395 0001:001D8D6C
+   398 0001:001D8DBE   381 0001:001D8DC1   400 0001:001D8DCD   402 0001:001D8DD5
+   403 0001:001D8DDA   405 0001:001D8E03   407 0001:001D8E1B   409 0001:001D8E25
+   410 0001:001D8E4F   412 0001:001D8E73   413 0001:001D8E86   415 0001:001D8E9C
+   417 0001:001D8EA4   418 0001:001D8EBB   419 0001:001D8EC0   421 0001:001D8ECE
+   422 0001:001D8EDE   423 0001:001D8EFA   425 0001:001D8F04   427 0001:001D8F17
+   429 0001:001D8F20   431 0001:001D8F2C   433 0001:001D8F3F   434 0001:001D8F4E
+   436 0001:001D8F52   437 0001:001D8F61   439 0001:001D8F65   441 0001:001D8F67
+   442 0001:001D8F80   445 0001:001D8F82   427 0001:001D8F88   448 0001:001D8F8E
+   449 0001:001D8F8F   451 0001:001D8F99   455 0001:001D8FAF   457 0001:001D8FBD
+   458 0001:001D8FE2   462 0001:001D8FFE   464 0001:001D900E   465 0001:001D903A
+   468 0001:001D9056   470 0001:001D9066   471 0001:001D9092   472 0001:001D9098
+   475 0001:001D90AE   477 0001:001D90BE   479 0001:001D90EE   480 0001:001D90F4
+   483 0001:001D910A   489 0001:001D9117   403 0001:001D911A   492 0001:001D9126
+   493 0001:001D912E   495 0001:001D9135   496 0001:001D913C   495 0001:001D9140
+   498 0001:001D9145   500 0001:001D9167   502 0001:001D9178   504 0001:001D91D0
+   507 0001:001D91F4   508 0001:001D9223   510 0001:001D9230   511 0001:001D9237
+   513 0001:001D924F   514 0001:001D9252   515 0001:001D9258   516 0001:001D9266
+   510 0001:001D926A   519 0001:001D9270   521 0001:001D927E   498 0001:001D9281
+   524 0001:001D928D   526 0001:001D9297   527 0001:001D92A0   531 0001:001D92AA
+   533 0001:001D92B7   534 0001:001D92BB   536 0001:001D92BF   537 0001:001D92C8
+   538 0001:001D92D1   539 0001:001D92DC   540 0001:001D92F1   542 0001:001D92F6
+   544 0001:001D92FF   545 0001:001D9311   546 0001:001D9316   547 0001:001D9319
+   542 0001:001D931C   549 0001:001D9321   550 0001:001D9325   551 0001:001D933E
+   552 0001:001D9341   554 0001:001D9351   556 0001:001D9355   557 0001:001D9368
+   558 0001:001D9370   554 0001:001D9373   560 0001:001D9379   562 0001:001D9386
+   563 0001:001D938D   564 0001:001D939E   565 0001:001D93A8   566 0001:001D93B2
+   567 0001:001D93BC   568 0001:001D93C8   569 0001:001D93DB   570 0001:001D9402
+   571 0001:001D940A   572 0001:001D941D   573 0001:001D9424   574 0001:001D942D
+   575 0001:001D943D   576 0001:001D944E   577 0001:001D9457   580 0001:001D9464
+   582 0001:001D946D   583 0001:001D9473   584 0001:001D947F   585 0001:001D9490
+   586 0001:001D949A   587 0001:001D94A4   588 0001:001D94AE   589 0001:001D94BC
+   590 0001:001D94CF   591 0001:001D94ED   592 0001:001D9500   593 0001:001D950A
+   594 0001:001D9513   595 0001:001D952A   597 0001:001D9536   598 0001:001D9547
+   599 0001:001D9550   600 0001:001D955D   580 0001:001D9561   602 0001:001D956B
+   603 0001:001D9588   604 0001:001D959F   606 0001:001D95B1   607 0001:001D95BF
+   608 0001:001D95C7   609 0001:001D95DB   610 0001:001D95E6   611 0001:001D95FE
+   612 0001:001D9607   613 0001:001D961D   615 0001:001D9628   617 0001:001D964A
+   618 0001:001D965B   619 0001:001D966E   621 0001:001D969A   623 0001:001D96C0
+   625 0001:001D96C8   627 0001:001D96DB   629 0001:001D96E9   630 0001:001D96F5
+   631 0001:001D9700   633 0001:001D9704   634 0001:001D970B   636 0001:001D970F
+   637 0001:001D9712   638 0001:001D9714   633 0001:001D9716   640 0001:001D971B
+   642 0001:001D9725   643 0001:001D9732   644 0001:001D9745   645 0001:001D975C
+   646 0001:001D9785   647 0001:001D978F   650 0001:001D97A7   651 0001:001D97BB
+   652 0001:001D97C3   654 0001:001D97CA   656 0001:001D97E3   658 0001:001D97EC
+   659 0001:001D9819   662 0001:001D983E   664 0001:001D984A   665 0001:001D984E
+   666 0001:001D985A   668 0001:001D9871   669 0001:001D987F   670 0001:001D988B
+   671 0001:001D9897   676 0001:001D98A1   627 0001:001D98AA   682 0001:001D98B4
+   615 0001:001D98B7   685 0001:001D98D0   690 0001:001D98F9   695 0001:001D9923
+   696 0001:001D9945   699 0001:001D994F   710 0001:001D9A5C   711 0001:001D9A83
+   712 0001:001D9A8D   713 0001:001D9A93   715 0001:001D9AA4   716 0001:001D9AAD
+   717 0001:001D9AAF   716 0001:001D9ABB   718 0001:001D9AC0   719 0001:001D9AC2
+   721 0001:001D9ADC   722 0001:001D9AE9   724 0001:001D9B08   725 0001:001D9B09
+   726 0001:001D9B14   727 0001:001D9B1F   729 0001:001D9B2B   719 0001:001D9B2E
+   732 0001:001D9B38   734 0001:001D9B43   735 0001:001D9B4D   736 0001:001D9B5C
+   738 0001:001D9B76   739 0001:001D9B83   741 0001:001D9B9D   742 0001:001D9BAF
+   744 0001:001D9BC1   736 0001:001D9BC4   748 0001:001D9BCE   749 0001:001D9BD1
+   750 0001:001D9BDE   752 0001:001D9BE9   753 0001:001D9BF3   754 0001:001D9C07
+   756 0001:001D9C11   757 0001:001D9C19   758 0001:001D9C3A   759 0001:001D9C49
+   760 0001:001D9C61   761 0001:001D9C79   763 0001:001D9C8F   764 0001:001D9CA3
+   765 0001:001D9CAD   769 0001:001D9CBA   774 0001:001D9CEC   775 0001:001D9CEE
+   776 0001:001D9CF0   777 0001:001D9CFC   782 0001:001D9D09   783 0001:001D9D2A
+   785 0001:001D9D36   790 0001:001D9D3C   791 0001:001D9D3D   792 0001:001D9D3F
+   793 0001:001D9D4B   794 0001:001D9D58   805 0001:001D9D5C   806 0001:001D9D92
+   807 0001:001D9DA7   809 0001:001D9DE6   810 0001:001D9DEA   811 0001:001D9DF0
+   812 0001:001D9DF3   814 0001:001D9DFF   816 0001:001D9E0A   819 0001:001D9E1B
+   821 0001:001D9E22   822 0001:001D9E25   823 0001:001D9E39   827 0001:001D9E3E
+   828 0001:001D9E4F   829 0001:001D9E62   832 0001:001D9EA2   834 0001:001D9EA8
+   835 0001:001D9EC5   836 0001:001D9ED9   839 0001:001D9EED   840 0001:001D9F02
+   844 0001:001D9F08   845 0001:001D9F19   847 0001:001D9F2C   849 0001:001D9F39
+   851 0001:001D9F4E   852 0001:001D9F58   854 0001:001D9F65   845 0001:001D9F68
+   857 0001:001D9F6B   859 0001:001D9F71   861 0001:001D9F75   863 0001:001D9F82
+   864 0001:001D9F98   866 0001:001D9FB0   859 0001:001D9FB3   868 0001:001D9FB9
+   872 0001:001D9FE4   873 0001:001D9FED   874 0001:001D9FF8   876 0001:001DA002
+   877 0001:001DA00A   878 0001:001DA01F   879 0001:001DA027   881 0001:001DA02C
+   889 0001:001DA030   890 0001:001DA057   891 0001:001DA061   893 0001:001DA06F
+   895 0001:001DA088   896 0001:001DA095   897 0001:001DA0A5   898 0001:001DA0AD
+   900 0001:001DA0B9   891 0001:001DA0BA   901 0001:001DA0BD   902 0001:001DA0DB
+   903 0001:001DA0DF   904 0001:001DA10E   911 0001:001DA138   913 0001:001DA15C
+   915 0001:001DA166   916 0001:001DA170   919 0001:001DA17E   920 0001:001DA192
+   925 0001:001DA19E   926 0001:001DA1A2   928 0001:001DA1BB   929 0001:001DA1CB
+   930 0001:001DA1EB   932 0001:001DA219   934 0001:001DA24C   935 0001:001DA250
+   938 0001:001DA252   939 0001:001DA25C   941 0001:001DA2BA   926 0001:001DA2BB
+   942 0001:001DA2C2   950 0001:001DA304   951 0001:001DA327   953 0001:001DA336
+   954 0001:001DA344   956 0001:001DA35D   957 0001:001DA36D   958 0001:001DA38D
+   960 0001:001DA3B7   961 0001:001DA400   963 0001:001DA417   954 0001:001DA418
+   965 0001:001DA41F   968 0001:001DA434   970 0001:001DA444   973 0001:001DA448
+   974 0001:001DA47A   976 0001:001DA489   971 0001:001DA48A   978 0001:001DA499
+   979 0001:001DA4A4   999 0001:001DA4F0  1000 0001:001DA511  1001 0001:001DA520
+  1002 0001:001DA528  1003 0001:001DA532  1005 0001:001DA549  1006 0001:001DA572
+  1007 0001:001DA57E  1003 0001:001DA581  1008 0001:001DA584  1018 0001:001DA5AC
+  1019 0001:001DA5D0  1021 0001:001DA5DC  1023 0001:001DA5DE  1024 0001:001DA5FA
+  1025 0001:001DA617  1026 0001:001DA622  1028 0001:001DA62F  1030 0001:001DA633
+  1031 0001:001DA63F  1032 0001:001DA64F  1033 0001:001DA66C  1034 0001:001DA687
+  1036 0001:001DA69B  1021 0001:001DA69C  1037 0001:001DA6A5  1043 0001:001DA6E4
+  1044 0001:001DA6EE  1046 0001:001DA6FC  1047 0001:001DA708  1049 0001:001DA721
+  1050 0001:001DA723  1052 0001:001DA725  1044 0001:001DA726  1053 0001:001DA729
+  1054 0001:001DA72B  1061 0001:001DA734  1062 0001:001DA754  1063 0001:001DA762
+  1064 0001:001DA765  1065 0001:001DA76C  1067 0001:001DA782  1068 0001:001DA7AE
+  1070 0001:001DA7B3  1071 0001:001DA7D7  1072 0001:001DA7EB  1074 0001:001DA7F6
+  1065 0001:001DA7F7  1079 0001:001DA815  1082 0001:001DA81F  1093 0001:001DA854
+  1095 0001:001DA877
+
+Line numbers for uSignItems(uSignItems.pas) segment .itext
+
+  1086 0002:00001314  1087 0002:0000132E  1088 0002:00001338  1089 0002:0000134F
+  1090 0002:00001360  1092 0002:00001367
+
+Line numbers for Vawrgrid(..\CPRS-Lib\Vawrgrid.pas) segment .text
+
+   167 0001:00000000
+
+Line numbers for uProbs(uProbs.pas) segment .text
+
+   272 0001:001DABD0   273 0001:001DABD6   274 0001:001DABED   277 0001:001DABFC
+   278 0001:001DAC21   279 0001:001DAC3F   280 0001:001DAC5D   284 0001:001DAC84
+   286 0001:001DACC2   287 0001:001DACE0   288 0001:001DACFE   289 0001:001DAD1C
+   290 0001:001DAD3A   291 0001:001DAD58   292 0001:001DAD76   293 0001:001DAD94
+   294 0001:001DAD9C   297 0001:001DADDC   298 0001:001DADE7   299 0001:001DADF3
+   302 0001:001DAE04   303 0001:001DAE1F   304 0001:001DAE35   305 0001:001DAE4F
+   307 0001:001DAE5B   309 0001:001DAE92   312 0001:001DAED4   313 0001:001DAEDA
+   314 0001:001DAEF5   317 0001:001DAF0C   318 0001:001DAF22   319 0001:001DAF3F
+   325 0001:001DAF70   326 0001:001DAFA9   327 0001:001DAFBF   328 0001:001DAFFD
+   329 0001:001DB028   330 0001:001DB048   331 0001:001DB070   332 0001:001DB098
+   333 0001:001DB0C0   334 0001:001DB0E8   335 0001:001DB105   336 0001:001DB12A
+   338 0001:001DB14F   339 0001:001DB172   326 0001:001DB173   340 0001:001DB17A
+   343 0001:001DB1CC   344 0001:001DB1F9   345 0001:001DB221   349 0001:001DB258
+   350 0001:001DB272   351 0001:001DB2C9   358 0001:001DB310   359 0001:001DB348
+   360 0001:001DB34C   361 0001:001DB354   362 0001:001DB358   363 0001:001DB35C
+   364 0001:001DB360   365 0001:001DB364   366 0001:001DB371   367 0001:001DB37E
+   368 0001:001DB386   369 0001:001DB393   370 0001:001DB3A2   371 0001:001DB3B1
+   373 0001:001DB3C0   374 0001:001DB3DF   375 0001:001DB3F9   377 0001:001DB3FF
+   378 0001:001DB41D   380 0001:001DB42C   381 0001:001DB44E   383 0001:001DB470
+   384 0001:001DB492   385 0001:001DB4B4   386 0001:001DB4CE   387 0001:001DB4E8
+   388 0001:001DB502   389 0001:001DB51C   390 0001:001DB536   391 0001:001DB54F
+   392 0001:001DB569   393 0001:001DB574   394 0001:001DB5AC   396 0001:001DB5B2
+   399 0001:001DB5B7   400 0001:001DB5C7   401 0001:001DB5C8   403 0001:001DB5D9
+   405 0001:001DB5DF   407 0001:001DB5E5   410 0001:001DB5EA   411 0001:001DB5FA
+   412 0001:001DB5FB   414 0001:001DB60C   416 0001:001DB612   419 0001:001DB6A8
+   420 0001:001DB6B3   421 0001:001DB6BB   422 0001:001DB6C3   423 0001:001DB6CF
+   427 0001:001DB6E0   428 0001:001DB6F2   429 0001:001DB701   430 0001:001DB710
+   431 0001:001DB71F   434 0001:001DB73C   435 0001:001DB747   436 0001:001DB74F
+   437 0001:001DB757   438 0001:001DB75F   439 0001:001DB76B   445 0001:001DB77C
+   446 0001:001DB7B4   447 0001:001DB7C3   448 0001:001DB7D2   449 0001:001DB7E1
+   450 0001:001DB7F4   449 0001:001DB83F   451 0001:001DB844   452 0001:001DB853
+   453 0001:001DB866   452 0001:001DB8B1   454 0001:001DB8B6   457 0001:001DB8BD
+   458 0001:001DB8D1   459 0001:001DB8E5   460 0001:001DB8F9   461 0001:001DB90D
+   462 0001:001DB921   463 0001:001DB935   464 0001:001DB949   465 0001:001DB95D
+   466 0001:001DB971   467 0001:001DB985   468 0001:001DB999   469 0001:001DB9AD
+   470 0001:001DB9C1   471 0001:001DB9D5   472 0001:001DB9E9   473 0001:001DB9FD
+   474 0001:001DBA11   475 0001:001DBA25   476 0001:001DBA39   477 0001:001DBA4D
+   478 0001:001DBA61   479 0001:001DBA75   480 0001:001DBA89   481 0001:001DBA9D
+   482 0001:001DBAA4   485 0001:001DBDEC   486 0001:001DBDF7   487 0001:001DBDFF
+   488 0001:001DBE07   489 0001:001DBE0F   490 0001:001DBE17   491 0001:001DBE1F
+   492 0001:001DBE27   493 0001:001DBE2F   494 0001:001DBE37   495 0001:001DBE3F
+   496 0001:001DBE47   497 0001:001DBE4F   498 0001:001DBE57   499 0001:001DBE5F
+   500 0001:001DBE67   501 0001:001DBE6F   502 0001:001DBE77   503 0001:001DBE7F
+   504 0001:001DBE87   505 0001:001DBE8F   506 0001:001DBE97   507 0001:001DBE9F
+   508 0001:001DBEA7   509 0001:001DBEAF   510 0001:001DBEB7   511 0001:001DBEBF
+   512 0001:001DBEC7   513 0001:001DBED4   514 0001:001DBEDF   515 0001:001DBEEB
+   520 0001:001DBEFC   521 0001:001DBF01   523 0001:001DBF08   524 0001:001DBF12
+   523 0001:001DBF21   526 0001:001DBF24   529 0001:001DBF28   530 0001:001DBF2B
+   531 0001:001DBF3A   532 0001:001DBF49   533 0001:001DBF58   534 0001:001DBF67
+   535 0001:001DBF76   536 0001:001DBF85   537 0001:001DBF94   538 0001:001DBFA3
+   539 0001:001DBFB2   540 0001:001DBFC1   541 0001:001DBFD0   542 0001:001DBFDF
+   543 0001:001DBFEE   544 0001:001DBFFD   545 0001:001DC00C   546 0001:001DC01B
+   547 0001:001DC02A   548 0001:001DC039   549 0001:001DC048   550 0001:001DC057
+   551 0001:001DC066   552 0001:001DC075   553 0001:001DC084   554 0001:001DC093
+   555 0001:001DC0A5   565 0001:001DC0A8   566 0001:001DC0D9   567 0001:001DC0DB
+   568 0001:001DC0E8   569 0001:001DC0FC   570 0001:001DC13F   571 0001:001DC14D
+   572 0001:001DC1A8   574 0001:001DC1E8   575 0001:001DC224   577 0001:001DC227
+   578 0001:001DC228   579 0001:001DC26D   580 0001:001DC2A2   582 0001:001DC2CC
+   583 0001:001DC2D9   584 0001:001DC2E4   585 0001:001DC2EF   586 0001:001DC30D
+   588 0001:001DC32B   589 0001:001DC343   590 0001:001DC361   592 0001:001DC37F
+   593 0001:001DC38F   601 0001:001DC3D0   602 0001:001DC3F2   603 0001:001DC3F9
+   604 0001:001DC3FD   606 0001:001DC414   608 0001:001DC45F   610 0001:001DC465
+   612 0001:001DC469   613 0001:001DC48E   615 0001:001DC4B0   616 0001:001DC4B4
+   620 0001:001DC4D4   621 0001:001DC4D8   626 0001:001DC4E2   627 0001:001DC507
+   628 0001:001DC518   629 0001:001DC525   630 0001:001DC54D   633 0001:001DC550
+   604 0001:001DC551   634 0001:001DC55A   638 0001:001DC5B4   639 0001:001DC5BD
+   644 0001:001DC5C0   645 0001:001DC5E8   646 0001:001DC647   647 0001:001DC654
+   648 0001:001DC682   664 0001:001DC6E8   665 0001:001DC6EE   666 0001:001DC6FB
+   669 0001:001DC700   670 0001:001DC720   671 0001:001DC72D   678 0001:001DC750
+   680 0001:001DC77D   682 0001:001DC783   683 0001:001DC78B   687 0001:001DC798
+   688 0001:001DC7A4   690 0001:001DC7B3   691 0001:001DC7C0   695 0001:001DC7CA
+   696 0001:001DC7FA   699 0001:001DC818   738 0001:001DC86C   739 0001:001DC872
+   740 0001:001DC87F   743 0001:001DC884   744 0001:001DC8A4   745 0001:001DC8B1
+   754 0001:001DC8D4   755 0001:001DC8D7   756 0001:001DC8EA   759 0001:001DC8F8
+   760 0001:001DC8FE   761 0001:001DC90B   764 0001:001DC910   765 0001:001DC938
+   767 0001:001DC96F   768 0001:001DC97F   770 0001:001DC994   772 0001:001DC9CB
+   773 0001:001DC9DB   775 0001:001DC9ED   777 0001:001DCA15   778 0001:001DCA25
+   780 0001:001DCA35   783 0001:001DCAD0   784 0001:001DCAD3   786 0001:001DCAD8
+   787 0001:001DCAE8   791 0001:001DCAFA   792 0001:001DCB0A   794 0001:001DCB1A
+   797 0001:001DCB4C   798 0001:001DCB4F   799 0001:001DCB62   802 0001:001DCB70
+   803 0001:001DCB73   805 0001:001DCB78   806 0001:001DCB88   810 0001:001DCB9A
+   811 0001:001DCBAA   813 0001:001DCBBA   816 0001:001DCBEC   817 0001:001DCBEF
+   818 0001:001DCC02   821 0001:001DCC10   822 0001:001DCC13   824 0001:001DCC18
+   825 0001:001DCC28   829 0001:001DCC3A   830 0001:001DCC4A   832 0001:001DCC5A
+   835 0001:001DCC8C   836 0001:001DCC8F   837 0001:001DCCA2   840 0001:001DCCB0
+   841 0001:001DCCB3   843 0001:001DCCB8   844 0001:001DCCC8   848 0001:001DCCDA
+   849 0001:001DCCEA   851 0001:001DCCFA   854 0001:001DCD2C   855 0001:001DCD2F
+   856 0001:001DCD42   859 0001:001DCD50   860 0001:001DCD53   862 0001:001DCD58
+   863 0001:001DCD68   867 0001:001DCD7A   868 0001:001DCD8A   870 0001:001DCD9A
+   873 0001:001DCDCC   874 0001:001DCDCF   875 0001:001DCDE2   878 0001:001DCDF0
+   879 0001:001DCDF3   881 0001:001DCDF8   882 0001:001DCE08   886 0001:001DCE1A
+   887 0001:001DCE2A   889 0001:001DCE3A   892 0001:001DCE6C   893 0001:001DCE6F
+   894 0001:001DCE82   897 0001:001DCE90   898 0001:001DCE93   900 0001:001DCE98
+   901 0001:001DCEA8   905 0001:001DCEBA   906 0001:001DCECA   908 0001:001DCEDA
+   911 0001:001DCF0C   912 0001:001DCF12   913 0001:001DCF1F   916 0001:001DCF24
+   917 0001:001DCF49   919 0001:001DCF7D   920 0001:001DCF8D   924 0001:001DCF9F
+   925 0001:001DCFAF   927 0001:001DCFBF   930 0001:001DD024   931 0001:001DD02A
+   932 0001:001DD037   935 0001:001DD03C   936 0001:001DD061   938 0001:001DD095
+   939 0001:001DD0A5   943 0001:001DD0B7   944 0001:001DD0C7   946 0001:001DD0D7
+   962 0001:001DD138   963 0001:001DD13E   964 0001:001DD14B   967 0001:001DD150
+   968 0001:001DD170   969 0001:001DD17D   985 0001:001DD1A0   986 0001:001DD1A6
+   987 0001:001DD1B3   990 0001:001DD1B8   991 0001:001DD1D8   992 0001:001DD1E5
+  1021 0001:001DD208  1022 0001:001DD22A  1023 0001:001DD232  1025 0001:001DD249
+  1026 0001:001DD256  1027 0001:001DD267  1030 0001:001DD27B  1031 0001:001DD28A
+  1033 0001:001DD2A1  1035 0001:001DD2BE  1036 0001:001DD2EB  1023 0001:001DD2EC
+  1037 0001:001DD2F5  1039 0001:001DD32B  1041 0001:001DD342  1042 0001:001DD34F
+  1043 0001:001DD367  1044 0001:001DD395  1045 0001:001DD3C2  1039 0001:001DD3C3
+  1046 0001:001DD3CC  1047 0001:001DD3CF  1057 0001:001DD478  1058 0001:001DD496
+  1059 0001:001DD49E  1061 0001:001DD4B5  1062 0001:001DD4C2  1065 0001:001DD4ED
+  1066 0001:001DD502  1068 0001:001DD539  1059 0001:001DD53A  1069 0001:001DD543
+  1070 0001:001DD568  1071 0001:001DD56B  1094 0001:001DD64C  1095 0001:001DD676
+  1096 0001:001DD68C  1097 0001:001DD696  1098 0001:001DD69C  1099 0001:001DD6D7
+  1100 0001:001DD6E3  1101 0001:001DD6F2  1103 0001:001DD700  1104 0001:001DD712
+  1109 0001:001DD778  1110 0001:001DD79C  1111 0001:001DD7A1  1112 0001:001DD7B1
+  1113 0001:001DD7BE  1114 0001:001DD7C9  1115 0001:001DD7DC  1124 0001:001DD800
+  1125 0001:001DD825  1127 0001:001DD829  1133 0001:001DD841  1134 0001:001DD867
+  1136 0001:001DD86D  1138 0001:001DD889  1140 0001:001DD895  1141 0001:001DD8A2
+  1144 0001:001DD8A6  1126 0001:001DD8A7  1145 0001:001DD8AA  1152 0001:001DD8F4
+  1153 0001:001DD919  1155 0001:001DD91D  1160 0001:001DD935  1161 0001:001DD95B
+  1163 0001:001DD976  1164 0001:001DD983  1166 0001:001DD989  1167 0001:001DD99E
+  1168 0001:001DD9A9  1154 0001:001DD9AA  1170 0001:001DD9AD  1175 0001:001DDA04
+  1176 0001:001DDA29  1177 0001:001DDA6A  1182 0001:001DDA94  1183 0001:001DDAB6
+  1184 0001:001DDAE1  1185 0001:001DDB0C  1186 0001:001DDB19  1187 0001:001DDB25
+  1197 0001:001DDB98  1198 0001:001DDBB0  1199 0001:001DDBC1  1200 0001:001DDBD3
+  1202 0001:001DDBF4  1205 0001:001DDC05  1209 0001:001DDC16  1211 0001:001DDC37
+  1214 0001:001DDC48  1219 0001:001DDC59  1220 0001:001DDC6D  1221 0001:001DDC7A
+  1226 0001:001DDCB0  1227 0001:001DDCD3  1229 0001:001DDCF2  1231 0001:001DDD24
+  1232 0001:001DDD31  1235 0001:001DDD45  1237 0001:001DDD6D  1239 0001:001DDD8E
+  1243 0001:001DDD95  1245 0001:001DDDC1  1249 0001:001DDDC8  1251 0001:001DDDF4
+  1255 0001:001DDDFB  1257 0001:001DDE2D  1258 0001:001DDE44  1257 0001:001DDE67
+  1261 0001:001DDE6A  1263 0001:001DDE8B  1264 0001:001DDEA2  1263 0001:001DDEC5
+  1269 0001:001DDEC8  1273 0001:001DDF00  1274 0001:001DDF02  1283 0001:001DDF04
+  1284 0001:001DDF11  1285 0001:001DDF1A  1286 0001:001DDF23  1287 0001:001DDF31
+  1288 0001:001DDF3E  1289 0001:001DDF49  1290 0001:001DDF50  1291 0001:001DDF57
+  1292 0001:001DDF5F  1341 0001:001DDFA0  1342 0001:001DDFC7  1343 0001:001DDFCF
+  1344 0001:001DDFE6  1345 0001:001DDFF4  1347 0001:001DE003  1343 0001:001DE023
+  1348 0001:001DE026  1349 0001:001DE030
+
+Line numbers for uProbs(uProbs.pas) segment .itext
+
+  1351 0002:00001380
+
+Line numbers for fReportsPrint(fReportsPrint.pas) segment .text
+
+    74 0001:001DE3B0    75 0001:001DE3DA    76 0001:001DE3F1    77 0001:001DE3FF
+    80 0001:001DE407    81 0001:001DE417    82 0001:001DE427    83 0001:001DE446
+    84 0001:001DE462    86 0001:001DE46B    88 0001:001DE47E    89 0001:001DE48E
+    91 0001:001DE49E    93 0001:001DE4AB    94 0001:001DE4CF    97 0001:001DE4E2
+    99 0001:001DE4EB   101 0001:001DE50E   103 0001:001DE51B   106 0001:001DE533
+   108 0001:001DE543   117 0001:001DE600   118 0001:001DE624   119 0001:001DE633
+   121 0001:001DE63B   122 0001:001DE643   124 0001:001DE64A   126 0001:001DE66A
+   128 0001:001DE6DA   129 0001:001DE70F   130 0001:001DE74A   132 0001:001DE771
+   133 0001:001DE796   134 0001:001DE7B4   135 0001:001DE7CE   137 0001:001DE7DB
+   140 0001:001DE7E1   142 0001:001DE7EC   124 0001:001DE7EF   143 0001:001DE7F8
+   145 0001:001DE808   146 0001:001DE81F   150 0001:001DE838   151 0001:001DE864
+   153 0001:001DE891   154 0001:001DE899   155 0001:001DE89D   156 0001:001DE8BB
+   157 0001:001DE8CB   159 0001:001DE8E5   160 0001:001DE919   161 0001:001DE92F
+   163 0001:001DE93A   165 0001:001DE953   166 0001:001DE96F   167 0001:001DE9B9
+   169 0001:001DE9F1   172 0001:001DEAB9   173 0001:001DEAD5   175 0001:001DEAF1
+   176 0001:001DEB52   177 0001:001DEB79   178 0001:001DEB84   173 0001:001DEB87
+   181 0001:001DEB90   163 0001:001DEB91   183 0001:001DEB98   184 0001:001DEBAF
+   185 0001:001DEBB2   187 0001:001DEBB8   189 0001:001DEBBD   191 0001:001DEBD6
+   193 0001:001DEBEF   194 0001:001DEC0B   195 0001:001DEC61   197 0001:001DEC9F
+   200 0001:001DED67   201 0001:001DED6B   203 0001:001DED87   204 0001:001DEDAF
+   205 0001:001DEDB2   208 0001:001DEDCA   209 0001:001DEE0B   210 0001:001DEE0E
+   212 0001:001DEE14   214 0001:001DEE19   216 0001:001DEE32   205 0001:001DEE35
+   219 0001:001DEE3A   191 0001:001DEE3B   220 0001:001DEE42   223 0001:001DEE48
+   225 0001:001DEE61   150 0001:001DEE64   226 0001:001DEE6D   227 0001:001DEE75
+   232 0001:001DEF9C   233 0001:001DEFCA   234 0001:001DEFCF   235 0001:001DEFD3
+   236 0001:001DEFE3   237 0001:001DEFF9   238 0001:001DEFFF   239 0001:001DF015
+   242 0001:001DF044   243 0001:001DF060   245 0001:001DF06C   247 0001:001DF0AE
+   250 0001:001DF0FC   252 0001:001DF118   254 0001:001DF128   255 0001:001DF160
+   256 0001:001DF198   258 0001:001DF19F   271 0001:001DF1C8   273 0001:001DF1ED
+   274 0001:001DF1FA   275 0001:001DF202   276 0001:001DF20A   277 0001:001DF212
+   278 0001:001DF221   279 0001:001DF22B   282 0001:001DF244   283 0001:001DF26B
+   285 0001:001DF282   286 0001:001DF28F   288 0001:001DF29A   289 0001:001DF2BA
+   291 0001:001DF2DA   293 0001:001DF301   294 0001:001DF312   296 0001:001DF317
+   298 0001:001DF356   300 0001:001DF369   302 0001:001DF380   305 0001:001DF3D7
+   306 0001:001DF3FE   308 0001:001DF42A   309 0001:001DF447   310 0001:001DF457
+   311 0001:001DF483   313 0001:001DF4BE   314 0001:001DF4D5   315 0001:001DF4EC
+   316 0001:001DF50B   305 0001:001DF50C   320 0001:001DF51A   321 0001:001DF541
+   323 0001:001DF56D   324 0001:001DF58A   325 0001:001DF59A   326 0001:001DF5D2
+   328 0001:001DF621   329 0001:001DF638   330 0001:001DF64F   331 0001:001DF66E
+   320 0001:001DF66F   335 0001:001DF67D   337 0001:001DF6BA   338 0001:001DF6C8
+   339 0001:001DF6D0   340 0001:001DF6F8   341 0001:001DF706   342 0001:001DF70D
+   343 0001:001DF73A   344 0001:001DF751   348 0001:001DF779   350 0001:001DF7C8
+   351 0001:001DF7DF   352 0001:001DF7F6   357 0001:001DF81E   359 0001:001DF855
+   360 0001:001DF863   361 0001:001DF86B   362 0001:001DF893   363 0001:001DF8A1
+   364 0001:001DF8A8   365 0001:001DF8D5   366 0001:001DF8EC   370 0001:001DF914
+   372 0001:001DF963   373 0001:001DF97A   374 0001:001DF991   379 0001:001DF9B9
+   380 0001:001DF9E0   382 0001:001DFA0C   383 0001:001DFA29   384 0001:001DFA39
+   385 0001:001DFA71   387 0001:001DFAAC   388 0001:001DFAC3   389 0001:001DFADA
+   390 0001:001DFAF9   379 0001:001DFAFA   394 0001:001DFB08   395 0001:001DFB2F
+   397 0001:001DFB5B   398 0001:001DFB78   399 0001:001DFB88   400 0001:001DFBC0
+   402 0001:001DFBFB   403 0001:001DFC12   404 0001:001DFC29   405 0001:001DFC48
+   394 0001:001DFC49   411 0001:001DFC57   413 0001:001DFC7F   414 0001:001DFC8D
+   416 0001:001DFC92   417 0001:001DFCA9   419 0001:001DFCE4   420 0001:001DFCFB
+   421 0001:001DFD12   427 0001:001DFD3A   429 0001:001DFD51   432 0001:001DFDA8
+   433 0001:001DFDCF   435 0001:001DFDFB   436 0001:001DFE18   437 0001:001DFE28
+   438 0001:001DFE60   440 0001:001DFEC7   441 0001:001DFEF6   442 0001:001DFF15
+   432 0001:001DFF16   446 0001:001DFF24   447 0001:001DFF4B   449 0001:001DFF77
+   450 0001:001DFF94   451 0001:001DFFA4   452 0001:001DFFDC   454 0001:001E0043
+   455 0001:001E0072   456 0001:001E0091   446 0001:001E0092   460 0001:001E00A0
+   462 0001:001E00DD   463 0001:001E00E4   464 0001:001E00EC   465 0001:001E0100
+   466 0001:001E0138   467 0001:001E0167   471 0001:001E018F   472 0001:001E01C7
+   474 0001:001E0213   475 0001:001E0242   480 0001:001E026A   482 0001:001E02A7
+   483 0001:001E02AE   484 0001:001E02B6   485 0001:001E02C4   486 0001:001E02FC
+   487 0001:001E032B   491 0001:001E0353   492 0001:001E038B   494 0001:001E03D7
+   495 0001:001E0406   500 0001:001E042E   501 0001:001E0455   503 0001:001E0481
+   504 0001:001E049E   505 0001:001E04AE   506 0001:001E04E6   508 0001:001E0538
+   509 0001:001E0567   510 0001:001E0586   500 0001:001E0587   514 0001:001E0595
+   515 0001:001E05BC   517 0001:001E05E8   518 0001:001E0605   519 0001:001E0615
+   520 0001:001E064D   522 0001:001E06B4   523 0001:001E06E3   524 0001:001E0702
+   514 0001:001E0703   530 0001:001E0711   531 0001:001E0749   532 0001:001E0760
+   534 0001:001E0788   535 0001:001E079C   536 0001:001E07EC   540 0001:001E07FD
+   542 0001:001E0849   543 0001:001E0878   547 0001:001E0897   548 0001:001E08EF
+   549 0001:001E0923   550 0001:001E092B   551 0001:001E0936   552 0001:001E093D
+   557 0001:001E0C74   558 0001:001E0C79   562 0001:001E0C7C   564 0001:001E0C85
+   565 0001:001E0C9C   567 0001:001E0CD0
+
+Line numbers for fProbCmt(fProbCmt.pas) segment .text
+
+    40 0001:001E0EB4    41 0001:001E0EBA    42 0001:001E0ED3    43 0001:001E0EE1
+    46 0001:001E0EEB    47 0001:001E0EF8    50 0001:001E0F18    52 0001:001E0F2A
+    55 0001:001E0F30    56 0001:001E0F57    57 0001:001E0F70    60 0001:001E0F7E
+    61 0001:001E0FA4    62 0001:001E0FB1    65 0001:001E0FD1    67 0001:001E0FE3
+    71 0001:001E100C    72 0001:001E100F    73 0001:001E101F    76 0001:001E1038
+    77 0001:001E1052    79 0001:001E106A    81 0001:001E1089    82 0001:001E109C
+    83 0001:001E10A7    87 0001:001E10B1    88 0001:001E10F8    93 0001:001E1104
+    94 0001:001E110F    96 0001:001E1117    98 0001:001E11FE
+
+Line numbers for rODAllergy(Orders\rODAllergy.pas) segment .text
+
+    86 0001:001E1260    87 0001:001E1266    88 0001:001E127E    89 0001:001E128E
+    92 0001:001E12B0    93 0001:001E12CF    94 0001:001E12E8    95 0001:001E12F8
+    98 0001:001E133C    99 0001:001E1348   100 0001:001E136E   101 0001:001E137E
+   104 0001:001E13A4   105 0001:001E13B0   106 0001:001E13CD   113 0001:001E13E8
+   114 0001:001E141D   115 0001:001E142C   116 0001:001E143A   117 0001:001E145F
+   121 0001:001E14A8   122 0001:001E14AF   123 0001:001E14B8   124 0001:001E14DC
+   125 0001:001E1500   126 0001:001E1524   127 0001:001E1536   128 0001:001E1549
+   129 0001:001E155B   130 0001:001E156B   131 0001:001E159C   132 0001:001E15C3
+   133 0001:001E15E5   134 0001:001E15F4   135 0001:001E1604   136 0001:001E1613
+   137 0001:001E1623   138 0001:001E1632   146 0001:001E1642   147 0001:001E1652
+   148 0001:001E167E   149 0001:001E16A9   150 0001:001E16D4   151 0001:001E16E3
+   152 0001:001E1704   153 0001:001E1713   156 0001:001E1723   157 0001:001E1764
+   161 0001:001E1775   162 0001:001E177F   164 0001:001E17A0   166 0001:001E17B0
+   171 0001:001E1950   175 0001:001E1993   176 0001:001E19A1   177 0001:001E19BC
+   178 0001:001E19D4   179 0001:001E1A09   180 0001:001E1A24   181 0001:001E1A4E
+   182 0001:001E1A69   184 0001:001E1A83   185 0001:001E1A89   186 0001:001E1AA5
+   187 0001:001E1AAE   188 0001:001E1AC4   189 0001:001E1ACD   190 0001:001E1AE3
+   191 0001:001E1AEC   192 0001:001E1B02   193 0001:001E1B18   194 0001:001E1B45
+   195 0001:001E1B57   196 0001:001E1B85   198 0001:001E1B98   199 0001:001E1BC4
+   200 0001:001E1BE3   199 0001:001E1C53   208 0001:001E1C58   210 0001:001E1C62
+   211 0001:001E1C7E   212 0001:001E1CA5   213 0001:001E1CD0   215 0001:001E1CE0
+   216 0001:001E1D09   217 0001:001E1D21   216 0001:001E1D73   221 0001:001E1D78
+   223 0001:001E1D88   224 0001:001E1DB1   225 0001:001E1DC9   224 0001:001E1E1B
+   227 0001:001E1E20   229 0001:001E1E33   230 0001:001E1E5F   231 0001:001E1E7A
+   230 0001:001E1ECF   233 0001:001E1ED4   234 0001:001E1EF1   235 0001:001E1F04
+   236 0001:001E1F13   237 0001:001E1F3E   238 0001:001E1F5B   239 0001:001E1F6E
+   241 0001:001E1F7E   242 0001:001E1FA7   243 0001:001E1FBF   242 0001:001E2011
+   246 0001:001E2016   247 0001:001E201B   252 0001:001E2032   253 0001:001E2070
+   257 0001:001E20C1   260 0001:001E22E8   263 0001:001E22F4   264 0001:001E2302
+   265 0001:001E231D   266 0001:001E2335   267 0001:001E2356   268 0001:001E2371
+   269 0001:001E239B   270 0001:001E23B6   271 0001:001E23D0   272 0001:001E23E5
+   273 0001:001E23EA   275 0001:001E2401   280 0001:001E244C   283 0001:001E2482
+   284 0001:001E2490   285 0001:001E24AC   286 0001:001E24C4   287 0001:001E24F1
+   288 0001:001E250C   289 0001:001E2536   290 0001:001E2551   291 0001:001E2573
+   293 0001:001E259D   294 0001:001E25A4   295 0001:001E25BC   294 0001:001E25F9
+   296 0001:001E25FE   298 0001:001E2631   299 0001:001E2636   301 0001:001E264D
+   306 0001:001E26BC   308 0001:001E26C0   310 0001:001E26C9   311 0001:001E26D8
+   313 0001:001E26DF   314 0001:001E26E7   319 0001:001E2704   321 0001:001E271E
+   323 0001:001E272B   324 0001:001E2747   325 0001:001E276F   326 0001:001E2797
+   327 0001:001E27BF   329 0001:001E27C6   330 0001:001E27CE   333 0001:001E2838
+   334 0001:001E283C   335 0001:001E2844   338 0001:001E284C   339 0001:001E2850
+   340 0001:001E285B   343 0001:001E2864   344 0001:001E2868   345 0001:001E2873
+   361 0001:001E287C   364 0001:001E289E   366 0001:001E28AB   367 0001:001E28C7
+   368 0001:001E28EF   369 0001:001E2929   371 0001:001E2930   372 0001:001E2938
+   374 0001:001E2946   377 0001:001E29DC   378 0001:001E29F6   380 0001:001E2A66
+
+Line numbers for rODAllergy(Orders\rODAllergy.pas) segment .itext
+
+   382 0002:00001388
+
+Line numbers for fOMAction(Orders\fOMAction.pas) segment .text
+
+    41 0001:001E2CD4    42 0001:001E2CDB    43 0001:001E2CEA    44 0001:001E2D02
+    45 0001:001E2D1D    46 0001:001E2D26    50 0001:001E2D2C    51 0001:001E2D33
+    53 0001:001E2D62
+
+Line numbers for rCover(rCover.pas) segment .text
+
+    52 0001:001E2D90    53 0001:001E2D99    54 0001:001E2DA1    55 0001:001E2DAB
+    56 0001:001E2DB6    59 0001:001E2DBC    60 0001:001E2DCE    61 0001:001E2DDD
+    62 0001:001E2DEC    63 0001:001E2DFB    66 0001:001E2E18    67 0001:001E2E23
+    68 0001:001E2E2B    69 0001:001E2E33    70 0001:001E2E3B    71 0001:001E2E47
+    74 0001:001E2E58    75 0001:001E2E5E    76 0001:001E2E68    79 0001:001E2E6C
+    80 0001:001E2E72    81 0001:001E2E7C    84 0001:001E2E80    85 0001:001E2E86
+    86 0001:001E2E90    89 0001:001E2E94    90 0001:001E2EC1    91 0001:001E2EF3
+    92 0001:001E2F00    95 0001:001E2F2C    96 0001:001E2F32    97 0001:001E2F69
+    98 0001:001E2F76   101 0001:001E2F94   102 0001:001E2F9A   103 0001:001E2FD1
+   104 0001:001E2FDE   107 0001:001E2FFC   108 0001:001E301C   109 0001:001E304D
+   110 0001:001E3078   111 0001:001E308A   112 0001:001E3097   115 0001:001E3100
+   120 0001:001E311E   121 0001:001E3128   124 0001:001E314C   125 0001:001E3152
+   126 0001:001E316A   127 0001:001E317E   136 0001:001E31C4   137 0001:001E31E9
+   138 0001:001E31F6   140 0001:001E3203   141 0001:001E3228   144 0001:001E3237
+   145 0001:001E3244   147 0001:001E3257   149 0001:001E325B   150 0001:001E32CA
+   151 0001:001E32CE   153 0001:001E32FC   154 0001:001E3300   155 0001:001E330C
+   156 0001:001E3342   158 0001:001E334E   160 0001:001E337C   161 0001:001E3380
+   162 0001:001E338C   163 0001:001E33C2   166 0001:001E33CE   167 0001:001E33FE
+   168 0001:001E3412   170 0001:001E3425   171 0001:001E3431   172 0001:001E34AC
+   174 0001:001E34B8   145 0001:001E34B9   175 0001:001E34C2   176 0001:001E34C9
+   177 0001:001E34D0   178 0001:001E34E7   179 0001:001E34F1   188 0001:001E35CC
+   189 0001:001E3637   190 0001:001E364A   191 0001:001E3652   193 0001:001E3665
+   194 0001:001E366E   197 0001:001E36A4   198 0001:001E36C4   200 0001:001E36E1
+   201 0001:001E36F6   203 0001:001E36FB   204 0001:001E370A   205 0001:001E3718
+   206 0001:001E3720   208 0001:001E3730   209 0001:001E373B   212 0001:001E3761
+   213 0001:001E3778   214 0001:001E3787   216 0001:001E379E   217 0001:001E37B3
+   218 0001:001E37C0   220 0001:001E37E9   221 0001:001E37F6   222 0001:001E3809
+   223 0001:001E384B   224 0001:001E385E   225 0001:001E386B   218 0001:001E386C
+   226 0001:001E3873   227 0001:001E3881   229 0001:001E3887   230 0001:001E3896
+   232 0001:001E38AD   234 0001:001E38C2   236 0001:001E38D2   238 0001:001E38E4
+   239 0001:001E38F1   240 0001:001E3904   241 0001:001E3911   236 0001:001E3912
+   243 0001:001E3915   245 0001:001E392D   247 0001:001E393D   256 0001:001E3A60
+   257 0001:001E3A87   258 0001:001E3AB2   259 0001:001E3AC4   260 0001:001E3AD8
+   262 0001:001E3AEE   263 0001:001E3AFA   264 0001:001E3B0D   265 0001:001E3B4F
+   266 0001:001E3B62   267 0001:001E3B6E   260 0001:001E3B6F   268 0001:001E3B78
+   272 0001:001E3BD0   273 0001:001E3BD6   274 0001:001E3BF6   275 0001:001E3C08
+   276 0001:001E3C1C   279 0001:001E3C34   280 0001:001E3C3A   283 0001:001E3C5A
+   284 0001:001E3C6C   285 0001:001E3C89   287 0001:001E3C9D   353 0001:001E3CCC
+   354 0001:001E3CEB   355 0001:001E3CEF   356 0001:001E3D0B   358 0001:001E3D2F
+   359 0001:001E3D33   360 0001:001E3D35   355 0001:001E3D36   361 0001:001E3D39
+   367 0001:001E3D64   368 0001:001E3D86   369 0001:001E3D91   370 0001:001E3DAB
+   371 0001:001E3DC4   372 0001:001E3DEB   374 0001:001E3DFD   375 0001:001E3E26
+   376 0001:001E3E4F   377 0001:001E3E6A   379 0001:001E3E93   381 0001:001E3EAD
+   382 0001:001E3EBD   383 0001:001E3ED0   384 0001:001E3F12   385 0001:001E3F25
+   386 0001:001E3F35   379 0001:001E3F36   387 0001:001E3F3F   388 0001:001E3F4E
+   389 0001:001E3F73   390 0001:001E3F81   392 0001:001E4030   393 0001:001E4055
+   396 0001:001E40A0   397 0001:001E40AF   398 0001:001E40BD   399 0001:001E40E7
+   400 0001:001E4103   401 0001:001E411F   403 0001:001E412D   404 0001:001E4135
+   405 0001:001E414F   407 0001:001E415A   408 0001:001E4168   409 0001:001E4177
+   410 0001:001E4194   411 0001:001E41B1   413 0001:001E41DB   416 0001:001E41EB
+   419 0001:001E4328   420 0001:001E432B   421 0001:001E432F   423 0001:001E433D
+   424 0001:001E4349   427 0001:001E4380   428 0001:001E4386   429 0001:001E43A6
+   430 0001:001E43BA   434 0001:001E43D4   435 0001:001E43F6   437 0001:001E4464
+   440 0001:001E44A0   441 0001:001E44C2   442 0001:001E44FF
+
+Line numbers for rCover(rCover.pas) segment .itext
+
+   444 0002:00001390
+
+Line numbers for uOrPtf(uOrPtf.pas) segment .text
+
+    31 0001:001E4580    32 0001:001E458C    33 0001:001E4593    34 0001:001E4596
+    35 0001:001E45AC    37 0001:001E45C2    38 0001:001E45D6    40 0001:001E45D9
+    43 0001:001E45F8    44 0001:001E461D    45 0001:001E4636    46 0001:001E465D
+    47 0001:001E4671    66 0001:001E46C8    67 0001:001E46D4    68 0001:001E46F6
+    69 0001:001E470C    70 0001:001E4720    73 0001:001E4740    74 0001:001E4759
+    75 0001:001E4775    77 0001:001E47DA
+
+Line numbers for fPatientFlagMulti(fPatientFlagMulti.pas) segment .text
+
+    87 0001:001E4B78    88 0001:001E4B7F    89 0001:001E4B90    90 0001:001E4B9E
+    91 0001:001E4BA6    94 0001:001E4BB0    95 0001:001E4BB9    97 0001:001E4BE8
+    98 0001:001E4BFB    99 0001:001E4C03   102 0001:001E4C1B   104 0001:001E4C2B
+   107 0001:001E4C30   108 0001:001E4C34   110 0001:001E4C46   111 0001:001E4C4C
+   112 0001:001E4C61   114 0001:001E4C6E   118 0001:001E4C74   119 0001:001E4C77
+   120 0001:001E4C7D   121 0001:001E4C82   125 0001:001E4C88   127 0001:001E4C8B
+   128 0001:001E4C92   129 0001:001E4CA4   131 0001:001E4CAB   132 0001:001E4CB2
+   137 0001:001E4CB4   138 0001:001E4CBC   143 0001:001E4CC0   144 0001:001E4CC5
+   149 0001:001E4CC8   150 0001:001E4CEC   151 0001:001E4CF5   152 0001:001E4D07
+   153 0001:001E4D1F   154 0001:001E4D4C   155 0001:001E4D84   156 0001:001E4DA5
+   157 0001:001E4DDE   158 0001:001E4DF9   159 0001:001E4E0A   161 0001:001E4E10
+   162 0001:001E4E1B   164 0001:001E4E26   169 0001:001E4E9C   170 0001:001E4EAE
+   171 0001:001E4EB7   172 0001:001E4EC6   175 0001:001E4EE0   176 0001:001E4EEB
+   177 0001:001E4EF3   178 0001:001E4EFF   181 0001:001E4F10   182 0001:001E4F32
+   183 0001:001E4F52   188 0001:001E4F78   189 0001:001E4F9A   190 0001:001E4FCB
+   191 0001:001E4FE0   197 0001:001E5028   198 0001:001E504F   199 0001:001E505A
+   202 0001:001E5074   203 0001:001E5084   204 0001:001E5090   205 0001:001E50BE
+   206 0001:001E50EC   207 0001:001E511A   199 0001:001E511B   208 0001:001E5124
+   212 0001:001E5184   213 0001:001E518F   216 0001:001E5190   217 0001:001E51AA
+   219 0001:001E51BB   220 0001:001E51F6   222 0001:001E5229   226 0001:001E526C
+   227 0001:001E526F   228 0001:001E527B   229 0001:001E5280   236 0001:001E5284
+   237 0001:001E5288   238 0001:001E52A4   239 0001:001E52C0   240 0001:001E52D7
+   241 0001:001E52EE   242 0001:001E5308   243 0001:001E5322   244 0001:001E532F
+   247 0001:001E5334   248 0001:001E5337   249 0001:001E534F   251 0001:001E5368
+   252 0001:001E5382   257 0001:001E5384   258 0001:001E53A3   259 0001:001E53B1
+   260 0001:001E53DA   261 0001:001E53E5   262 0001:001E53F2   263 0001:001E5402
+   264 0001:001E540B   267 0001:001E5438   268 0001:001E543C   270 0001:001E544E
+   271 0001:001E5454   272 0001:001E5469   274 0001:001E5476   280 0001:001E547C
+   281 0001:001E5481   282 0001:001E5483   283 0001:001E548C   284 0001:001E5496
+   285 0001:001E54A4   286 0001:001E54B0   287 0001:001E54BE   288 0001:001E54CB
+   289 0001:001E54D4   292 0001:001E54D8   293 0001:001E54DD   294 0001:001E54DF
+   295 0001:001E54E9   296 0001:001E54FC   297 0001:001E5504   298 0001:001E551B
+   300 0001:001E5521   301 0001:001E5525   302 0001:001E5539   304 0001:001E5541
+   306 0001:001E5547   314 0001:001E5550   315 0001:001E5576   316 0001:001E5588
+   317 0001:001E55B7   319 0001:001E55D1   320 0001:001E55E9   315 0001:001E55EA
+   321 0001:001E55ED   323 0001:001E5652
+
+Line numbers for fvit(fvit.pas) segment .text
+
+   174 0001:001E5C1C   176 0001:001E5C22   179 0001:001E5C33   181 0001:001E5C38
+   183 0001:001E5C3B   186 0001:001E5C50   187 0001:001E5C60   192 0001:001E5C69
+   195 0001:001E5C6C   196 0001:001E5C8A   197 0001:001E5CA2   198 0001:001E5CBA
+   199 0001:001E5CD2   200 0001:001E5CEA   201 0001:001E5D02   202 0001:001E5D1A
+   203 0001:001E5D32   204 0001:001E5D4A   205 0001:001E5D62   206 0001:001E5D7A
+   207 0001:001E5D92   208 0001:001E5DAA   209 0001:001E5DC2   210 0001:001E5DDA
+   211 0001:001E5DF2   212 0001:001E5E0A   215 0001:001E5E22   216 0001:001E5E29
+   217 0001:001E5E37   218 0001:001E5E45   219 0001:001E5E68   220 0001:001E5E8B
+   222 0001:001E5EBB   225 0001:001E5ECA   227 0001:001E5EF4   228 0001:001E5F07
+   229 0001:001E5F0F   236 0001:001E5F54   237 0001:001E5F76   240 0001:001E5F8A
+   242 0001:001E5FA3   244 0001:001E5FD4   245 0001:001E6004   248 0001:001E6050
+   250 0001:001E6081   251 0001:001E60B1   254 0001:001E60FD   256 0001:001E612E
+   257 0001:001E615E   260 0001:001E61AA   262 0001:001E61DB   263 0001:001E620B
+   266 0001:001E6257   268 0001:001E628C   269 0001:001E62C2   272 0001:001E6320
+   274 0001:001E6361   275 0001:001E639D   278 0001:001E63FB   280 0001:001E643C
+   281 0001:001E6478   285 0001:001E64D6   239 0001:001E64D7   287 0001:001E64E0
+   292 0001:001E6574   293 0001:001E658D   294 0001:001E65A5   295 0001:001E65B2
+   304 0001:001E65D4   305 0001:001E65F5   309 0001:001E66E5   312 0001:001E6744
+   314 0001:001E6747   315 0001:001E6756   316 0001:001E6763   325 0001:001E6768
+   326 0001:001E678B   328 0001:001E6798   329 0001:001E679F   330 0001:001E67AD
+   332 0001:001E67C0   333 0001:001E67C4   336 0001:001E67E1   339 0001:001E67E8
+   341 0001:001E67F7   342 0001:001E681B   344 0001:001E682A   345 0001:001E682E
+   346 0001:001E6843   349 0001:001E686E   337 0001:001E686F   351 0001:001E6898
+   334 0001:001E68B0   353 0001:001E68C6   355 0001:001E68CC   359 0001:001E68EE
+   361 0001:001E68FD   367 0001:001E6934   368 0001:001E693F   373 0001:001E6940
+   374 0001:001E694B   377 0001:001E694C   379 0001:001E694F   380 0001:001E6965
+   381 0001:001E6973   384 0001:001E6988   386 0001:001E698C   388 0001:001E699A
+   389 0001:001E69B0   391 0001:001E69BE   394 0001:001E69D4   396 0001:001E69D7
+   397 0001:001E69ED   398 0001:001E69FB   401 0001:001E6A10   403 0001:001E6A13
+   404 0001:001E6A29   405 0001:001E6A37   408 0001:001E6A4C   410 0001:001E6A63
+   412 0001:001E6A71   413 0001:001E6A8F   415 0001:001E6A9D   418 0001:001E6AC0
+   420 0001:001E6AC4   422 0001:001E6AD2   423 0001:001E6AE8   425 0001:001E6AF6
+   429 0001:001E6B0C   432 0001:001E6B0F   433 0001:001E6B20   434 0001:001E6B31
+   435 0001:001E6B38   442 0001:001E6B3C   444 0001:001E6B41   445 0001:001E6B4B
+   446 0001:001E6B55   453 0001:001E6B58   454 0001:001E6B5D   459 0001:001E6B60
+   462 0001:001E6B76   465 0001:001E6B7D   466 0001:001E6B8A   468 0001:001E6B99
+   469 0001:001E6BA5   471 0001:001E6BA7   472 0001:001E6BAE   475 0001:001E6BE0
+   478 0001:001E6BEF   479 0001:001E6BFD   481 0001:001E6C18   482 0001:001E6C28
+   484 0001:001E6C40   488 0001:001E6C48   490 0001:001E6C5B   491 0001:001E6C7F
+   494 0001:001E6CBC   496 0001:001E6CBF   497 0001:001E6CC6   500 0001:001E6CD4
+   506 0001:001E6CD8   507 0001:001E6CE3   510 0001:001E6CE4   511 0001:001E6CE8
+   515 0001:001E6CFB   518 0001:001E6D14   519 0001:001E6D22   520 0001:001E6D3B
+   521 0001:001E6D43   522 0001:001E6D5C   523 0001:001E6D64   525 0001:001E6D7D
+   528 0001:001E6D8E   531 0001:001E6D94   532 0001:001E6D98   534 0001:001E6DA6
+   535 0001:001E6DBC   537 0001:001E6DCA   540 0001:001E6DE0   541 0001:001E6DF7
+   543 0001:001E6E05   544 0001:001E6E23   546 0001:001E6E31   549 0001:001E6E54
+   550 0001:001E6E58   552 0001:001E6E66   553 0001:001E6E7C   555 0001:001E6E8A
+   557 0001:001E6ECE
+
+Line numbers for fCover(fCover.pas) segment .text
+
+   148 0001:001E74C8   149 0001:001E74CB   150 0001:001E74D8   151 0001:001E750A
+   152 0001:001E7515   153 0001:001E751C   154 0001:001E752A   155 0001:001E7538
+   156 0001:001E7546   157 0001:001E7554   158 0001:001E7562   159 0001:001E7570
+   160 0001:001E757E   161 0001:001E758C   162 0001:001E7599   163 0001:001E75A6
+   164 0001:001E75B3   165 0001:001E75C0   166 0001:001E75CD   167 0001:001E75DA
+   168 0001:001E75E7   169 0001:001E75F4   173 0001:001E75F8   174 0001:001E763F
+   175 0001:001E7646   177 0001:001E765B   178 0001:001E7694   179 0001:001E76B5
+   183 0001:001E76E1   184 0001:001E7715   185 0001:001E772D   187 0001:001E7752
+   188 0001:001E7759   222 0001:001E779C   223 0001:001E77A2   224 0001:001E77AC
+   225 0001:001E77B2   226 0001:001E77C3   227 0001:001E77CD   229 0001:001E77F8
+   230 0001:001E781C   231 0001:001E7824   232 0001:001E782B   233 0001:001E783F
+   234 0001:001E784B   235 0001:001E7860   237 0001:001E7870   238 0001:001E7875
+   240 0001:001E787E   242 0001:001E7888   243 0001:001E7895   247 0001:001E78A5
+   248 0001:001E78AD   251 0001:001E78BB   253 0001:001E78E0   254 0001:001E78EF
+   255 0001:001E78F7   257 0001:001E7913   258 0001:001E7921   259 0001:001E7934
+   260 0001:001E7947   261 0001:001E795A   262 0001:001E796D   263 0001:001E7980
+   264 0001:001E7993   265 0001:001E79A6   266 0001:001E79D3   267 0001:001E79E6
+   268 0001:001E79F9   269 0001:001E7A0C   270 0001:001E7A1F   271 0001:001E7A32
+   272 0001:001E7A45   273 0001:001E7A58   274 0001:001E7A5A   275 0001:001E7A5E
+   276 0001:001E7A60   277 0001:001E7A71   278 0001:001E7A84   279 0001:001E7A9E
+   281 0001:001E7ABE   282 0001:001E7AD7   283 0001:001E7AF0   284 0001:001E7B19
+   286 0001:001E7B53   287 0001:001E7B7C   288 0001:001E7B9C   290 0001:001E7BAF
+   291 0001:001E7BDD   293 0001:001E7C1A   294 0001:001E7C32   296 0001:001E7C5D
+   297 0001:001E7C6A   298 0001:001E7C7A   299 0001:001E7C81   302 0001:001E7C9E
+   303 0001:001E7CB6   305 0001:001E7CC9   306 0001:001E7CED   307 0001:001E7D05
+   308 0001:001E7D1E   310 0001:001E7D2B   311 0001:001E7D35   314 0001:001E7D42
+   315 0001:001E7D4A   316 0001:001E7D6F   319 0001:001E7D7D   320 0001:001E7D8C
+   321 0001:001E7D9A   322 0001:001E7DC5   324 0001:001E7DDA   326 0001:001E7DEA
+   329 0001:001E7DFD   333 0001:001E7E17   334 0001:001E7E36   336 0001:001E7E73
+   337 0001:001E7E8B   339 0001:001E7E91   340 0001:001E7EA9   342 0001:001E7EBB
+   343 0001:001E7EC8   345 0001:001E7ED1   346 0001:001E7ED9   349 0001:001E7EE6
+   351 0001:001E7EEC   352 0001:001E7F04   354 0001:001E7F16   355 0001:001E7F23
+   255 0001:001E7F26   356 0001:001E7F2F   357 0001:001E7F37   358 0001:001E7F54
+   359 0001:001E7F71   361 0001:001E7F79   363 0001:001E7F89   364 0001:001E7FA1
+   366 0001:001E7FAA   367 0001:001E7FB8   368 0001:001E7FBE   372 0001:001E7FE6
+   374 0001:001E7FEC   375 0001:001E800B   379 0001:001E8031   384 0001:001E80D4
+   385 0001:001E80DE   387 0001:001E80E5   389 0001:001E80F4   391 0001:001E810C
+   392 0001:001E811D   395 0001:001E813B   386 0001:001E813C   396 0001:001E8141
+   403 0001:001E8148   407 0001:001E816E   408 0001:001E81A9   410 0001:001E81FC
+   412 0001:001E8219   413 0001:001E8226   414 0001:001E8263   415 0001:001E8276
+   416 0001:001E8283   420 0001:001E82D3   422 0001:001E82F0   423 0001:001E82F9
+   425 0001:001E8351   428 0001:001E83A1   429 0001:001E83C6   430 0001:001E83F7
+   432 0001:001E8424   433 0001:001E8475   436 0001:001E84CB   437 0001:001E8546
+   439 0001:001E859C   440 0001:001E85B9   442 0001:001E8608   443 0001:001E86D4
+   445 0001:001E8736   448 0001:001E8769   450 0001:001E87A6   451 0001:001E87B1
+   455 0001:001E87C1   456 0001:001E8838   460 0001:001E8895   461 0001:001E889E
+   463 0001:001E88A5   465 0001:001E88B2   468 0001:001E8B70   469 0001:001E8B73
+   470 0001:001E8B7A   471 0001:001E8B87   472 0001:001E8BB9   473 0001:001E8BC4
+   484 0001:001E8BC8   486 0001:001E8BE6   487 0001:001E8BE9   488 0001:001E8BF0
+   489 0001:001E8BF7   490 0001:001E8BFE   491 0001:001E8C05   492 0001:001E8C0C
+   494 0001:001E8C13   496 0001:001E8C25   498 0001:001E8C40   499 0001:001E8C78
+   500 0001:001E8C7C   501 0001:001E8C81   502 0001:001E8C86   503 0001:001E8C8B
+   504 0001:001E8C90   505 0001:001E8C95   508 0001:001E8C98   493 0001:001E8C99
+   509 0001:001E8C9E   510 0001:001E8CAD   511 0001:001E8CBC   512 0001:001E8CCB
+   513 0001:001E8CDA   514 0001:001E8CE9   515 0001:001E8CF8   516 0001:001E8D07
+   518 0001:001E8D14   519 0001:001E8D23   520 0001:001E8D31   521 0001:001E8D3E
+   522 0001:001E8D73   523 0001:001E8DA7   524 0001:001E8DDD   525 0001:001E8E13
+   526 0001:001E8E49   527 0001:001E8E7F   530 0001:001E8EB5   531 0001:001E8EC3
+   533 0001:001E8EC9   534 0001:001E8ED6   536 0001:001E8EE1   539 0001:001E8F12
+   541 0001:001E8F1A   542 0001:001E8F22   545 0001:001E8F3A   550 0001:001E8F4A
+   551 0001:001E8F7F   552 0001:001E8FB3   553 0001:001E8FE9   554 0001:001E901F
+   555 0001:001E9055   556 0001:001E908B   557 0001:001E90C1   560 0001:001E90F7
+   561 0001:001E9105   563 0001:001E910B   564 0001:001E9118   567 0001:001E9123
+   568 0001:001E912B   569 0001:001E9133   570 0001:001E913B   571 0001:001E9143
+   572 0001:001E914B   573 0001:001E9153   574 0001:001E915B   579 0001:001E91A8
+   580 0001:001E91A9   584 0001:001E91AE   586 0001:001E91C0   588 0001:001E91DB
+   589 0001:001E91F6   590 0001:001E9202   593 0001:001E9223   583 0001:001E9224
+   596 0001:001E9229   604 0001:001E922C   605 0001:001E9252   607 0001:001E9254
+   609 0001:001E9263   611 0001:001E928A   612 0001:001E92A0   614 0001:001E92A2
+   606 0001:001E92A3   615 0001:001E92A8   617 0001:001E92B0   621 0001:001E92BA
+   623 0001:001E92D5   625 0001:001E9308   626 0001:001E9319   627 0001:001E934F
+   629 0001:001E935E   631 0001:001E9391   632 0001:001E93A2   633 0001:001E93B6
+   635 0001:001E93C5   637 0001:001E93F8   638 0001:001E9409   639 0001:001E941D
+   641 0001:001E942C   621 0001:001E942D   643 0001:001E9436   644 0001:001E943F
+   646 0001:001E9454   647 0001:001E946E   649 0001:001E9489   656 0001:001E9538
+   658 0001:001E9556   659 0001:001E955C   661 0001:001E955F   663 0001:001E9571
+   665 0001:001E958C   666 0001:001E95A0   669 0001:001E95A2   660 0001:001E95A3
+   670 0001:001E95A8   671 0001:001E95B1   673 0001:001E95D8   674 0001:001E963A
+   676 0001:001E963E   677 0001:001E969C   680 0001:001E96A2   683 0001:001E96D8
+   684 0001:001E96DC   685 0001:001E96E3   686 0001:001E96ED   687 0001:001E9701
+   688 0001:001E971B   689 0001:001E9739   690 0001:001E9757   691 0001:001E9775
+   692 0001:001E9793   693 0001:001E97B1   694 0001:001E97CF   695 0001:001E97ED
+   700 0001:001E97F0   701 0001:001E97FB   705 0001:001E97FC   707 0001:001E97FF
+   708 0001:001E9804   709 0001:001E980A   713 0001:001E9810   715 0001:001E9813
+   716 0001:001E9818   717 0001:001E981E   721 0001:001E9824   723 0001:001E9827
+   724 0001:001E982C   725 0001:001E9832   729 0001:001E9838   731 0001:001E983B
+   732 0001:001E9840   733 0001:001E9846   737 0001:001E984C   739 0001:001E984F
+   740 0001:001E9854   741 0001:001E985A   745 0001:001E9860   747 0001:001E9863
+   748 0001:001E9868   749 0001:001E986E   753 0001:001E9874   755 0001:001E9877
+   756 0001:001E987C   757 0001:001E9882   765 0001:001E9888   767 0001:001E98A3
+   768 0001:001E98B9   769 0001:001E98EB   770 0001:001E991D   773 0001:001E9970
+   774 0001:001E997D   782 0001:001E99C8   784 0001:001E99CB   785 0001:001E99D6
+   786 0001:001E99E1   791 0001:001E99E4   793 0001:001E99E7   794 0001:001E99EC
+   795 0001:001E99F7   801 0001:001E99FC   803 0001:001E99FF   804 0001:001E9A21
+   809 0001:001E9A24   811 0001:001E9A27   812 0001:001E9A45   813 0001:001E9A50
+   820 0001:001E9A54   821 0001:001E9A76   822 0001:001E9A84   823 0001:001E9A8E
+   824 0001:001E9AA1   825 0001:001E9AB4   826 0001:001E9AC7   827 0001:001E9ADA
+   828 0001:001E9AED   829 0001:001E9B00   830 0001:001E9B13   831 0001:001E9B40
+   832 0001:001E9B53   833 0001:001E9B66   834 0001:001E9B79   835 0001:001E9B8C
+   836 0001:001E9B9F   837 0001:001E9BB2   838 0001:001E9BC5   839 0001:001E9BC7
+   840 0001:001E9BCB   841 0001:001E9BCD   842 0001:001E9BDE   843 0001:001E9BF1
+   844 0001:001E9C0B   846 0001:001E9C2B   847 0001:001E9C57   849 0001:001E9C92
+   850 0001:001E9CBE   851 0001:001E9CDF   854 0001:001E9D1C   855 0001:001E9D43
+   856 0001:001E9D6E   857 0001:001E9D87   858 0001:001E9D9E   860 0001:001E9DF5
+   863 0001:001E9EB0   864 0001:001E9EB3   865 0001:001E9EC2   867 0001:001E9ED7
+   870 0001:001E9EDC   871 0001:001E9EDF   872 0001:001E9EF3   873 0001:001E9F07
+   874 0001:001E9F20   877 0001:001E9F24   878 0001:001E9F3E   879 0001:001E9F50
+   880 0001:001E9F6B   881 0001:001E9F7C   885 0001:001E9FA0   887 0001:001E9FA3
+   888 0001:001E9FA9   889 0001:001E9FB0   898 0001:001E9FB4   900 0001:001E9FDA
+   901 0001:001E9FE1   903 0001:001E9FE8   904 0001:001E9FF9   905 0001:001EA00A
+   906 0001:001EA01F   907 0001:001EA03F   908 0001:001EA05F   910 0001:001EA07D
+   914 0001:001EA084   915 0001:001EA0B6   922 0001:001EA0EF   923 0001:001EA101
+   928 0001:001EA118   930 0001:001EA13A   934 0001:001EA141   935 0001:001EA173
+   937 0001:001EA1AA   938 0001:001EA1C8   945 0001:001EA1DC   946 0001:001EA1EE
+   953 0001:001EA205   954 0001:001EA212   956 0001:001EA22A   958 0001:001EA23D
+   959 0001:001EA255   960 0001:001EA26E   961 0001:001EA292   963 0001:001EA2A1
+   964 0001:001EA2BD   965 0001:001EA2D6   966 0001:001EA2F9   968 0001:001EA308
+   971 0001:001EA31A   973 0001:001EA330   974 0001:001EA348   975 0001:001EA360
+   976 0001:001EA37D   977 0001:001EA38C   978 0001:001EA39B   981 0001:001EA3AD
+   983 0001:001EA3C7   984 0001:001EA3DF   985 0001:001EA3FA   986 0001:001EA417
+   987 0001:001EA430   988 0001:001EA43F   990 0001:001EA44E   994 0001:001EA45B
+  1000 0001:001EA50C  1002 0001:001EA538
+
+Line numbers for fCover(fCover.pas) segment .itext
+
+   996 0002:00001398   997 0002:000013B2   999 0002:000013BC
+
+Line numbers for fPtCWAD(fPtCWAD.pas) segment .text
+
+    45 0001:001EA7D4    46 0001:001EA7D8    47 0001:001EA7EF    48 0001:001EA7FD
+    49 0001:001EA805    51 0001:001EA81D    53 0001:001EA82D    59 0001:001EA830
+    61 0001:001EA848    62 0001:001EA852    63 0001:001EA862    64 0001:001EA86C
+    65 0001:001EA87C    66 0001:001EA896    65 0001:001EA8C5    67 0001:001EA8CA
+    68 0001:001EA8D1    71 0001:001EA950    73 0001:001EA964    74 0001:001EA96A
+    80 0001:001EA97F    82 0001:001EA9AD    85 0001:001EA9D0    87 0001:001EA9F2
+    88 0001:001EA9F8    90 0001:001EAA1B    91 0001:001EAA5B    93 0001:001EAA9A
+    97 0001:001EAB14    99 0001:001EAB17   101 0001:001EAB1D   102 0001:001EAB22
+   104 0001:001EAB27   109 0001:001EAB2C   110 0001:001EAB31   112 0001:001EAB60
+
+Line numbers for fARTFreeTextMsg(fARTFreeTextMsg.pas) segment .text
+
+    46 0001:001EAD68    47 0001:001EAD72    48 0001:001EAD89    49 0001:001EAD9A
+    52 0001:001EADA8    53 0001:001EADB4    54 0001:001EADC0    55 0001:001EADD3
+    56 0001:001EADDB    57 0001:001EADEC    58 0001:001EADF7    59 0001:001EAE03
+    62 0001:001EAE1C    63 0001:001EAE26    65 0001:001EAE36    68 0001:001EAFC0
+    70 0001:001EAFC3    71 0001:001EAFD9    72 0001:001EAFE0    73 0001:001EAFE7
+    75 0001:001EB017
+
+Line numbers for fAllgyFind(fAllgyFind.pas) segment .text
+
+    93 0001:001EB344    94 0001:001EB34E    95 0001:001EB365    96 0001:001EB373
+    97 0001:001EB37B    98 0001:001EB38B    99 0001:001EB396   101 0001:001EB3B3
+   103 0001:001EB3C3   106 0001:001EB3C8   108 0001:001EB3CB   109 0001:001EB3D6
+   110 0001:001EB3E3   113 0001:001EB3E8   115 0001:001EB3EB   116 0001:001EB3F8
+   117 0001:001EB405   118 0001:001EB412   125 0001:001EB414   127 0001:001EB437
+   129 0001:001EB45C   130 0001:001EB46F   132 0001:001EB474   133 0001:001EB47E
+   134 0001:001EB485   135 0001:001EB494   136 0001:001EB4A2   137 0001:001EB4B7
+   138 0001:001EB4E0   139 0001:001EB4E7   140 0001:001EB4FE   139 0001:001EB537
+   141 0001:001EB53A   143 0001:001EB54A   144 0001:001EB557   145 0001:001EB565
+   146 0001:001EB570   147 0001:001EB57D   148 0001:001EB58A   149 0001:001EB59A
+   153 0001:001EB5A8   154 0001:001EB5E5   155 0001:001EB5F2   156 0001:001EB630
+   157 0001:001EB641   158 0001:001EB654   159 0001:001EB65D   160 0001:001EB666
+   162 0001:001EB671   163 0001:001EB6B1   164 0001:001EB6BA   165 0001:001EB6C6
+   166 0001:001EB6CF   170 0001:001EB6D8   171 0001:001EB6F9   173 0001:001EB705
+   175 0001:001EB70D   176 0001:001EB716   177 0001:001EB71E   179 0001:001EB729
+   180 0001:001EB769   181 0001:001EB775   183 0001:001EB77E   184 0001:001EB787
+   185 0001:001EB790   190 0001:001EB799   191 0001:001EB7A5   173 0001:001EB7C6
+   194 0001:001EB7CE   195 0001:001EB7DB   196 0001:001EB7E9   197 0001:001EB7F6
+   198 0001:001EB803   201 0001:001EB820   202 0001:001EB828   204 0001:001EB837
+   211 0001:001EBA3C   213 0001:001EBA5D   215 0001:001EBA72   216 0001:001EBA84
+   218 0001:001EBA91   221 0001:001EBAD6   222 0001:001EBAE3   224 0001:001EBAE8
+   229 0001:001EBB4A   230 0001:001EBB57   233 0001:001EBBAE   234 0001:001EBBBD
+   235 0001:001EBBCB   236 0001:001EBBCF   237 0001:001EBBDA   239 0001:001EBBE0
+   240 0001:001EBBF0   241 0001:001EBC01   243 0001:001EBC0B   244 0001:001EBC35
+   245 0001:001EBC57   246 0001:001EBC6C   247 0001:001EBC8E   249 0001:001EBCA3
+   251 0001:001EBCD4   253 0001:001EBCE4   257 0001:001EBCF1   258 0001:001EBD01
+   259 0001:001EBD12   262 0001:001EBD17   265 0001:001EBD24   268 0001:001EBD54
+   269 0001:001EBD61   274 0001:001EBD66   275 0001:001EBD84   276 0001:001EBD9D
+   277 0001:001EBDB6   279 0001:001EBDE9   280 0001:001EBE22   281 0001:001EBE3A
+   283 0001:001EBE42   286 0001:001EC34C   288 0001:001EC34F   289 0001:001EC35A
+   290 0001:001EC361   293 0001:001EC364   295 0001:001EC368   297 0001:001EC36E
+   298 0001:001EC388   299 0001:001EC3A2   300 0001:001EC3BC   301 0001:001EC3D6
+   302 0001:001EC3F0   304 0001:001EC407   312 0001:001EC40C   313 0001:001EC439
+   314 0001:001EC44D   316 0001:001EC463   317 0001:001EC467   318 0001:001EC486
+   320 0001:001EC497   321 0001:001EC4B6   322 0001:001EC4D5   323 0001:001EC505
+   325 0001:001EC50B   327 0001:001EC517   328 0001:001EC522   330 0001:001EC528
+   331 0001:001EC565   328 0001:001EC573   335 0001:001EC57B   337 0001:001EC585
+   341 0001:001EC58B   342 0001:001EC5A8   343 0001:001EC5BF   346 0001:001EC5D6
+   314 0001:001EC5D7   347 0001:001EC5E0   348 0001:001EC5F4   353 0001:001EC638
+   354 0001:001EC63F   356 0001:001EC66E
+
+Line numbers for fProbflt(fProbFlt.pas) segment .text
+
+    76 0001:001ECAA8    77 0001:001ECAB4    78 0001:001ECACB    81 0001:001ECAD9
+    82 0001:001ECAE6    83 0001:001ECAF1    84 0001:001ECAFC    85 0001:001ECB09
+    86 0001:001ECB25    87 0001:001ECB41    88 0001:001ECB50    89 0001:001ECB5B
+    90 0001:001ECB6A    91 0001:001ECB7A    94 0001:001ECB98    96 0001:001ECBA8
+    99 0001:001ECBB0   100 0001:001ECBB3   101 0001:001ECBD6   102 0001:001ECBEB
+   105 0001:001ECBF0   106 0001:001ECC0A   107 0001:001ECC2F   108 0001:001ECC3E
+   109 0001:001ECC63   111 0001:001ECC75   112 0001:001ECC83   113 0001:001ECC8C
+   114 0001:001ECC9A   116 0001:001ECCB0   117 0001:001ECCBD   121 0001:001ECCCC
+   122 0001:001ECCF4   124 0001:001ECD1C   125 0001:001ECD41   130 0001:001ECD84
+   131 0001:001ECDA2   132 0001:001ECDB4   133 0001:001ECDC2   134 0001:001ECDEC
+   135 0001:001ECE22   136 0001:001ECE32   137 0001:001ECE39   142 0001:001ECE70
+   143 0001:001ECE74   145 0001:001ECE8C   146 0001:001ECEB1   148 0001:001ECEC4
+   149 0001:001ECED4   150 0001:001ECEF4   152 0001:001ECF18   153 0001:001ECF1F
+   156 0001:001ECF24   157 0001:001ECF27   158 0001:001ECF35   159 0001:001ECF3C
+   164 0001:001ECF40   165 0001:001ECF45   166 0001:001ECF5C   167 0001:001ECF71
+   168 0001:001ECF96   169 0001:001ECFA6   170 0001:001ECFB6   176 0001:001ECFBC
+   177 0001:001ECFDD   178 0001:001ECFEC   179 0001:001ECFFA   180 0001:001ED005
+   181 0001:001ED013   182 0001:001ED020   183 0001:001ED02D   184 0001:001ED03D
+   185 0001:001ED04D   187 0001:001ED069   188 0001:001ED070   189 0001:001ED085
+   190 0001:001ED09E   191 0001:001ED0A9   192 0001:001ED0B6   194 0001:001ED0D8
+   195 0001:001ED0FB   196 0001:001ED104   192 0001:001ED107   199 0001:001ED10F
+   200 0001:001ED116   201 0001:001ED12B   202 0001:001ED144   203 0001:001ED14F
+   204 0001:001ED15C   206 0001:001ED17A   207 0001:001ED19D   208 0001:001ED1A6
+   204 0001:001ED1A9   210 0001:001ED1AE   212 0001:001ED1B5   214 0001:001ED1C9
+   216 0001:001ED1D9   220 0001:001ED204   221 0001:001ED209   225 0001:001ED20C
+   226 0001:001ED211   230 0001:001ED214   231 0001:001ED221   235 0001:001ED224
+   236 0001:001ED231   240 0001:001ED234   241 0001:001ED23B   242 0001:001ED240
+   251 0001:001ED244   252 0001:001ED266   253 0001:001ED275   254 0001:001ED283
+   255 0001:001ED28A   257 0001:001ED2A4   258 0001:001ED2AC   261 0001:001ED2BB
+   262 0001:001ED2D4   263 0001:001ED2DE   265 0001:001ED2FD   267 0001:001ED30D
+   269 0001:001ED33C   270 0001:001ED35D   271 0001:001ED36C   272 0001:001ED37A
+   273 0001:001ED389   275 0001:001ED3CB   276 0001:001ED3D3   277 0001:001ED3E0
+   278 0001:001ED3F4   279 0001:001ED401   283 0001:001ED415   284 0001:001ED41D
+   285 0001:001ED440   286 0001:001ED472   288 0001:001ED484   289 0001:001ED49C
+   290 0001:001ED4C3   292 0001:001ED4EA   296 0001:001ED50F   297 0001:001ED52A
+   298 0001:001ED545   299 0001:001ED54F   301 0001:001ED564   303 0001:001ED574
+   340 0001:001ED5D0   345 0001:001ED5D4   346 0001:001ED5D9   349 0001:001ED5DC
+   350 0001:001ED5DF   351 0001:001ED5EE   352 0001:001ED5FE   353 0001:001ED60E
+   354 0001:001ED61E   355 0001:001ED62E   356 0001:001ED63C   357 0001:001ED643
+   360 0001:001ED6BC   361 0001:001ED6BF   362 0001:001ED6CE   363 0001:001ED6DE
+   364 0001:001ED6EE   365 0001:001ED6FE   366 0001:001ED70E   367 0001:001ED71C
+   368 0001:001ED723   371 0001:001ED7A0   372 0001:001ED7A3   373 0001:001ED7AE
+   374 0001:001ED7BC   375 0001:001ED7CB   376 0001:001ED7DA   377 0001:001ED7EA
+   378 0001:001ED7FA   379 0001:001ED80A   380 0001:001ED81A   381 0001:001ED82A
+   382 0001:001ED837   383 0001:001ED847   384 0001:001ED854   388 0001:001ED89C
+   389 0001:001ED8A5   390 0001:001ED8BC   391 0001:001ED8D4   395 0001:001ED8EC
+   396 0001:001ED8F5   397 0001:001ED90A   398 0001:001ED923   399 0001:001ED93E
+   401 0001:001ED945   406 0001:001ED94C   407 0001:001ED970   408 0001:001ED97E
+   410 0001:001ED999   411 0001:001ED9A6   412 0001:001ED9C9   413 0001:001EDA05
+   414 0001:001EDA29   420 0001:001EDA88   421 0001:001EDAAE   422 0001:001EDAC5
+   423 0001:001EDAFE   424 0001:001EDB37   426 0001:001EDB3F   427 0001:001EDB46
+   428 0001:001EDB65   429 0001:001EDB9C   427 0001:001EDBDD   430 0001:001EDBE2
+   431 0001:001EDBED   446 0001:001EDC3C   448 0001:001EDC6B
+
+Line numbers for fProbLex(fProbLex.pas) segment .text
+
+    53 0001:001EDEE4    54 0001:001EDEE7    56 0001:001EDEF1    57 0001:001EDEF8
+    65 0001:001EDEFC    66 0001:001EDF1E    68 0001:001EDF60    70 0001:001EDF8A
+    72 0001:001EDFD7    74 0001:001EE010    76 0001:001EE04A    78 0001:001EE0A5
+    82 0001:001EE0E9    83 0001:001EE106    84 0001:001EE119    85 0001:001EE128
+    86 0001:001EE140    87 0001:001EE153    89 0001:001EE160    91 0001:001EE179
+    92 0001:001EE19E    93 0001:001EE1A5    96 0001:001EE338    97 0001:001EE33B
+    98 0001:001EE345    99 0001:001EE34C   102 0001:001EE350   103 0001:001EE353
+   104 0001:001EE35D   105 0001:001EE36E   107 0001:001EE375   108 0001:001EE39F
+   111 0001:001EE3A4   112 0001:001EE3AA   114 0001:001EE3AF   115 0001:001EE3B6
+   119 0001:001EE3BC   120 0001:001EE3C9   122 0001:001EE3D9   133 0001:001EE3DC
+   134 0001:001EE406   135 0001:001EE41A   136 0001:001EE424   138 0001:001EE43D
+   139 0001:001EE44C   140 0001:001EE45F   141 0001:001EE472   142 0001:001EE485
+   143 0001:001EE4B8   146 0001:001EE4DB   147 0001:001EE4EA   148 0001:001EE4EE
+   150 0001:001EE50F   151 0001:001EE51A   152 0001:001EE53A   153 0001:001EE553
+   136 0001:001EE554   154 0001:001EE55D   156 0001:001EE566   157 0001:001EE593
+   158 0001:001EE5C1   162 0001:001EE5D9   163 0001:001EE5F3   165 0001:001EE60A
+   166 0001:001EE61E   168 0001:001EE690   169 0001:001EE6B1   171 0001:001EE6C8
+   172 0001:001EE6DB   174 0001:001EE6E0   175 0001:001EE6EF   176 0001:001EE6FD
+   178 0001:001EE714   179 0001:001EE727   181 0001:001EE735   182 0001:001EE751
+   184 0001:001EE76B   186 0001:001EE775   188 0001:001EE78E   190 0001:001EE79E
+   191 0001:001EE7B6   192 0001:001EE7C4   193 0001:001EE7DE   194 0001:001EE7F5
+   195 0001:001EE7FF   196 0001:001EE805   198 0001:001EE81A   199 0001:001EE82C
+   201 0001:001EE85F   205 0001:001EE874   208 0001:001EE8BD   210 0001:001EE8CD
+   214 0001:001EE9F8   215 0001:001EE9FD   219 0001:001EEA00   220 0001:001EEA0E
+   222 0001:001EEA3D
+
+Line numbers for fProbEdt(fProbEdt.pas) segment .text
+
+   144 0001:001EEFE0   145 0001:001EEFE9   148 0001:001EEFEC   149 0001:001EF004
+   151 0001:001EF00F   152 0001:001EF039   156 0001:001EF042   159 0001:001EF063
+   160 0001:001EF06A   164 0001:001EF06C   165 0001:001EF096   166 0001:001EF09D
+   169 0001:001EF0A4   174 0001:001EF104   175 0001:001EF11E   176 0001:001EF126
+   178 0001:001EF145   179 0001:001EF16F   181 0001:001EF176   186 0001:001EF1A0
+   187 0001:001EF1BB   188 0001:001EF1D1   189 0001:001EF1FF   191 0001:001EF21E
+   192 0001:001EF258   194 0001:001EF25F   201 0001:001EF2AC   202 0001:001EF2CF
+   203 0001:001EF2DD   206 0001:001EF325   207 0001:001EF348   209 0001:001EF359
+   210 0001:001EF36C   211 0001:001EF381   207 0001:001EF382   212 0001:001EF385
+   213 0001:001EF393   214 0001:001EF39A   215 0001:001EF3AB   214 0001:001EF3C1
+   219 0001:001EF3C6   220 0001:001EF3D4   222 0001:001EF3DB   223 0001:001EF3EF
+   224 0001:001EF403   225 0001:001EF417   226 0001:001EF42B   227 0001:001EF43A
+   228 0001:001EF448   229 0001:001EF453   230 0001:001EF468   231 0001:001EF46C
+   234 0001:001EF481   235 0001:001EF4A5   238 0001:001EF4B5   239 0001:001EF4C2
+   240 0001:001EF4CF   241 0001:001EF4DC   242 0001:001EF4E9   243 0001:001EF4F6
+   244 0001:001EF503   245 0001:001EF510   246 0001:001EF51D   247 0001:001EF52A
+   248 0001:001EF537   249 0001:001EF544   250 0001:001EF551   251 0001:001EF55E
+   252 0001:001EF56B   253 0001:001EF578   255 0001:001EF591   256 0001:001EF5AD
+   257 0001:001EF5C9   259 0001:001EF622   263 0001:001EF646   265 0001:001EF64F
+   266 0001:001EF673   269 0001:001EF69F   270 0001:001EF6AF   272 0001:001EF6BB
+   273 0001:001EF6DF   274 0001:001EF6E6   276 0001:001EF6F0   277 0001:001EF707
+   278 0001:001EF71C   279 0001:001EF762   281 0001:001EF7B0   282 0001:001EF7CD
+   284 0001:001EF7EB   285 0001:001EF7FB   287 0001:001EF808   288 0001:001EF826
+   289 0001:001EF835   290 0001:001EF853   292 0001:001EF865   293 0001:001EF875
+   294 0001:001EF88A   295 0001:001EF89F   296 0001:001EF8BC   297 0001:001EF8D9
+   298 0001:001EF8F6   299 0001:001EF903   302 0001:001EF927   304 0001:001EF950
+   305 0001:001EF97E   309 0001:001EF99C   310 0001:001EF9B2   312 0001:001EF9E3
+   313 0001:001EF9F9   314 0001:001EFA0F   315 0001:001EFA25   316 0001:001EFA3B
+   317 0001:001EFA51   318 0001:001EFA67   319 0001:001EFA98   320 0001:001EFAC9
+   321 0001:001EFAFA   322 0001:001EFB2B   323 0001:001EFB5C   325 0001:001EFB8D
+   326 0001:001EFBA5   327 0001:001EFBD9   329 0001:001EFBF8   331 0001:001EFC25
+   333 0001:001EFC32   334 0001:001EFC3F   335 0001:001EFC4C   336 0001:001EFC5C
+   340 0001:001EFC6E   341 0001:001EFC7B   342 0001:001EFC88   343 0001:001EFC98
+   344 0001:001EFCB5   349 0001:001EFCD2   351 0001:001EFD18   352 0001:001EFD25
+   353 0001:001EFD32   354 0001:001EFD42   355 0001:001EFD5A   357 0001:001EFD77
+   359 0001:001EFDB9   360 0001:001EFDC6   361 0001:001EFDD3   362 0001:001EFDE3
+   363 0001:001EFDFB   367 0001:001EFE15   369 0001:001EFE22   370 0001:001EFE2F
+   371 0001:001EFE3C   372 0001:001EFE4C   376 0001:001EFE5B   377 0001:001EFE68
+   378 0001:001EFE75   379 0001:001EFE85   383 0001:001EFE92   385 0001:001EFEB4
+   386 0001:001EFEE1   388 0001:001EFEEE   389 0001:001EFEFB   390 0001:001EFF08
+   391 0001:001EFF15   395 0001:001EFF32   396 0001:001EFF3F   397 0001:001EFF4C
+   398 0001:001EFF59   402 0001:001EFF69   404 0001:001EFF72   405 0001:001EFF8C
+   407 0001:001EFF9E   409 0001:001EFFB0   421 0001:001EFFE3   423 0001:001F0009
+   425 0001:001F0019   430 0001:001F01A8   432 0001:001F01C2   433 0001:001F01DA
+   431 0001:001F0238   434 0001:001F023B   440 0001:001F0270   441 0001:001F0281
+   442 0001:001F0290   444 0001:001F029E   447 0001:001F02A8   448 0001:001F02B7
+   449 0001:001F02C6   450 0001:001F02D3   451 0001:001F02E0   452 0001:001F02EF
+   453 0001:001F02FE   454 0001:001F030D   455 0001:001F031C   457 0001:001F033E
+   459 0001:001F034E   461 0001:001F035E   475 0001:001F0364   476 0001:001F038C
+   477 0001:001F039B   479 0001:001F03B8   480 0001:001F03CB   482 0001:001F03D0
+   483 0001:001F03E7   485 0001:001F03FC   486 0001:001F040F   488 0001:001F0414
+   489 0001:001F0423   490 0001:001F0432   491 0001:001F0440   493 0001:001F0450
+   494 0001:001F0462   496 0001:001F0470   497 0001:001F047C   498 0001:001F048C
+   499 0001:001F049A   500 0001:001F049D   501 0001:001F04A9   502 0001:001F04B9
+   503 0001:001F04C7   504 0001:001F04CA   505 0001:001F04D6   506 0001:001F04EE
+   507 0001:001F0506   508 0001:001F051E   509 0001:001F0532   511 0001:001F056B
+   512 0001:001F0583   513 0001:001F059A   514 0001:001F05C0   515 0001:001F05E6
+   516 0001:001F060C   517 0001:001F0632   518 0001:001F0658   519 0001:001F067E
+   521 0001:001F068C   522 0001:001F069E   525 0001:001F06AD   526 0001:001F06DB
+   528 0001:001F06E9   529 0001:001F06F6   532 0001:001F0705   533 0001:001F0733
+   535 0001:001F0741   536 0001:001F074E   539 0001:001F075D   540 0001:001F078B
+   541 0001:001F079D   542 0001:001F07AB   545 0001:001F07F6   546 0001:001F07FE
+   547 0001:001F0818   550 0001:001F0852   554 0001:001F08AA   555 0001:001F08B2
+   556 0001:001F08BD   557 0001:001F08DD   558 0001:001F08FF   560 0001:001F092D
+   562 0001:001F0937   563 0001:001F0945   564 0001:001F0950   565 0001:001F0968
+   567 0001:001F0988   568 0001:001F0990   569 0001:001F09A3   572 0001:001F09AA
+   575 0001:001F09BE   577 0001:001F09DB   578 0001:001F09F1   581 0001:001F0A14
+   572 0001:001F0A15   582 0001:001F0A1A   585 0001:001F0A23   588 0001:001F0A43
+   590 0001:001F0A53   595 0001:001F0C78   596 0001:001F0C98   597 0001:001F0CB2
+   599 0001:001F0CD9   600 0001:001F0CFA   603 0001:001F0D1B   604 0001:001F0D67
+   606 0001:001F0DB3   596 0001:001F0DB4   607 0001:001F0DBB   612 0001:001F0DF4
+   614 0001:001F0E12   615 0001:001F0E17   617 0001:001F0E27   618 0001:001F0E29
+   622 0001:001F0E46   623 0001:001F0E98   625 0001:001F0ECF   618 0001:001F0ED0
+   626 0001:001F0ED9   629 0001:001F0F14   630 0001:001F0F18   631 0001:001F0F3E
+   632 0001:001F0F63   633 0001:001F0F6A   636 0001:001F0F80   637 0001:001F0F83
+   638 0001:001F0F88   640 0001:001F0FA4   641 0001:001F0FBE   644 0001:001F0FC0
+   645 0001:001F0FDC   647 0001:001F0FEB   648 0001:001F1018   652 0001:001F1027
+   653 0001:001F1034   655 0001:001F1041   656 0001:001F1048   659 0001:001F106C
+   660 0001:001F106F   661 0001:001F1089   664 0001:001F108C   665 0001:001F108F
+   666 0001:001F10A9   669 0001:001F10AC   670 0001:001F10AF   671 0001:001F10B4
+   673 0001:001F10D0   674 0001:001F10EA   685 0001:001F10EC   686 0001:001F1106
+   688 0001:001F1109   694 0001:001F110B   696 0001:001F110C   697 0001:001F1142
+   698 0001:001F1151   699 0001:001F116A   701 0001:001F11DA   703 0001:001F121C
+   704 0001:001F1274   705 0001:001F12BB   706 0001:001F12FB   707 0001:001F1347
+   708 0001:001F1386   709 0001:001F13F4   710 0001:001F145B   711 0001:001F14E5
+   712 0001:001F156F   713 0001:001F15F9   714 0001:001F1652   715 0001:001F16A3
+   716 0001:001F16F4   717 0001:001F1746   718 0001:001F17A4   719 0001:001F1802
+   720 0001:001F1860   721 0001:001F18BE   722 0001:001F191C   723 0001:001F196D
+   732 0001:001F1B18   733 0001:001F1B3C   737 0001:001F1B71   738 0001:001F1C54
+   739 0001:001F1C76   740 0001:001F1C7A   742 0001:001F1C8E   743 0001:001F1CA7
+   745 0001:001F1CB6   746 0001:001F1CC0   749 0001:001F1CC5   751 0001:001F1CD9
+   752 0001:001F1CF2   754 0001:001F1D01   755 0001:001F1D0B   758 0001:001F1D10
+   760 0001:001F1D24   761 0001:001F1D3D   763 0001:001F1D4C   764 0001:001F1D56
+   766 0001:001F1D5B   768 0001:001F1D83   769 0001:001F1D96   772 0001:001F1D9B
+   774 0001:001F1DBA   776 0001:001F1DE8   777 0001:001F1E1B   779 0001:001F1E2A
+   780 0001:001F1E4C   783 0001:001F1E4E   772 0001:001F1E4F   784 0001:001F1E58
+   785 0001:001F1E5C   789 0001:001F1F44   790 0001:001F1F4B   793 0001:001F1F4C
+   794 0001:001F1F57   795 0001:001F1F63   796 0001:001F1F6C   797 0001:001F1F77
+   798 0001:001F1F8A   800 0001:001F1FA3   801 0001:001F1FC8   802 0001:001F1FD4
+   809 0001:001F1FE4   810 0001:001F2001   811 0001:001F201A   813 0001:001F2024
+   814 0001:001F2033   815 0001:001F2041   816 0001:001F205C   818 0001:001F2068
+   819 0001:001F2081   820 0001:001F2083   819 0001:001F2097   821 0001:001F209C
+   822 0001:001F20AF   821 0001:001F20D1   825 0001:001F20E3   828 0001:001F20F3
+   834 0001:001F2124   835 0001:001F213E   836 0001:001F2157   837 0001:001F2166
+   838 0001:001F2174   839 0001:001F2186   841 0001:001F21B3   843 0001:001F21C3
+   846 0001:001F21FC   847 0001:001F2201   848 0001:001F2208   850 0001:001F2219
+   852 0001:001F2221   853 0001:001F223B   860 0001:001F2240   861 0001:001F2255
+   862 0001:001F2267   863 0001:001F2272   864 0001:001F2279   865 0001:001F2280
+   866 0001:001F2287   869 0001:001F22A4   870 0001:001F22AB   874 0001:001F22B4
+   875 0001:001F22C8   877 0001:001F22DF   878 0001:001F22F1   879 0001:001F22F8
+   880 0001:001F22FD   882 0001:001F2302   885 0001:001F2308   886 0001:001F230B
+   888 0001:001F2312   889 0001:001F231B   890 0001:001F2324   891 0001:001F2332
+   892 0001:001F233B   893 0001:001F2342   897 0001:001F2348   898 0001:001F234F
+   899 0001:001F2354   903 0001:001F2358   904 0001:001F235D   912 0001:001F2360
+   913 0001:001F2365   915 0001:001F2376   916 0001:001F238E   917 0001:001F23A4
+   913 0001:001F23A5   918 0001:001F23A8   919 0001:001F23B2   924 0001:001F23B8
+   930 0001:001F23BC   931 0001:001F23BE   935 0001:001F23C0   936 0001:001F23C4
+   937 0001:001F23CD   938 0001:001F23F2   946 0001:001F23F8   947 0001:001F2419
+   949 0001:001F2426   950 0001:001F243D   951 0001:001F244B   953 0001:001F2463
+   958 0001:001F2473   959 0001:001F2495   960 0001:001F24A3   966 0001:001F24CD
+   967 0001:001F24DB   968 0001:001F24EB   977 0001:001F2543   978 0001:001F2593
+   979 0001:001F25E3   982 0001:001F2618   985 0001:001F2622   986 0001:001F263B
+   988 0001:001F2691   990 0001:001F26C2   994 0001:001F2808   995 0001:001F2811
+   996 0001:001F2828  1000 0001:001F2830  1001 0001:001F2839  1002 0001:001F2850
+  1006 0001:001F2858  1007 0001:001F2861  1008 0001:001F287A
+
+Line numbers for fProbEdt(fProbEdt.pas) segment .itext
+
+  1010 0002:000013D4  1011 0002:000013DD  1013 0002:000013E7
+
+Line numbers for fProbs(fProbs.pas) segment .text
+
+   225 0001:001F3394   226 0001:001F33A0   231 0001:001F33AE   232 0001:001F33BB
+   234 0001:001F33DA   235 0001:001F33E7   238 0001:001F33ED   240 0001:001F33FE
+   241 0001:001F3408   242 0001:001F3414   246 0001:001F3423   247 0001:001F3430
+   252 0001:001F343E   255 0001:001F3490   256 0001:001F34AC   257 0001:001F34B4
+   258 0001:001F34BC   259 0001:001F34CC   260 0001:001F34EE   261 0001:001F34F8
+   264 0001:001F351C   265 0001:001F3523   266 0001:001F352B   267 0001:001F3540
+   268 0001:001F3554   269 0001:001F3568   270 0001:001F357C   272 0001:001F3588
+   273 0001:001F3592   275 0001:001F359C   276 0001:001F35AA   279 0001:001F35B3
+   280 0001:001F35BB   281 0001:001F35C9   282 0001:001F35D7   284 0001:001F35DF
+   287 0001:001F35E4   289 0001:001F35F0   290 0001:001F35FF   296 0001:001F3604
+   297 0001:001F3610   298 0001:001F361F   299 0001:001F362D   301 0001:001F3645
+   303 0001:001F3655   314 0001:001F365C   315 0001:001F3680   317 0001:001F368A
+   318 0001:001F369D   320 0001:001F36A2   321 0001:001F36AB   323 0001:001F36B5
+   326 0001:001F374F   328 0001:001F3765   329 0001:001F3778   331 0001:001F377D
+   332 0001:001F378A   333 0001:001F3794   334 0001:001F37A3   335 0001:001F37BB
+   336 0001:001F37D7   337 0001:001F37E5   339 0001:001F37F8   340 0001:001F3806
+   341 0001:001F3814   342 0001:001F3822   343 0001:001F3832   345 0001:001F3843
+   346 0001:001F3853   347 0001:001F3863   348 0001:001F3873   349 0001:001F3883
+   350 0001:001F3894   351 0001:001F389F   352 0001:001F38AF   353 0001:001F38BF
+   354 0001:001F38CF   355 0001:001F38DF   356 0001:001F38EF   357 0001:001F38FF
+   358 0001:001F390D   359 0001:001F3942   360 0001:001F3952   361 0001:001F3960
+   362 0001:001F397A   363 0001:001F39B8   367 0001:001F39C8   368 0001:001F39D8
+   369 0001:001F39E8   370 0001:001F39F8   371 0001:001F3A08   372 0001:001F3A16
+   373 0001:001F3A26   374 0001:001F3A36   375 0001:001F3A46   376 0001:001F3A56
+   377 0001:001F3A66   378 0001:001F3A74   379 0001:001F3A84   384 0001:001F3AA6
+   385 0001:001F3AD2   389 0001:001F3AE7   390 0001:001F3AEF   394 0001:001F3B10
+   399 0001:001F3B20   402 0001:001F3B36   403 0001:001F3B49   405 0001:001F3B4E
+   406 0001:001F3B9A   410 0001:001F3BB2   411 0001:001F3BBF   412 0001:001F3BD7
+   413 0001:001F3BF3   416 0001:001F3BF8   418 0001:001F3C11   419 0001:001F3C25
+   420 0001:001F3C49   422 0001:001F3C5C   425 0001:001F3CCF   427 0001:001F3CD2
+   428 0001:001F3CEC   430 0001:001F3CF4   432 0001:001F3D0A   433 0001:001F3D19
+   434 0001:001F3D28   436 0001:001F3D30   440 0001:001F3D3D   441 0001:001F3D4E
+   444 0001:001F3D64   445 0001:001F3D77   447 0001:001F3D7C   448 0001:001F3DD4
+   452 0001:001F3DEC   453 0001:001F3DF9   454 0001:001F3E11   455 0001:001F3E33
+   458 0001:001F3E38   460 0001:001F3E51   461 0001:001F3E65   462 0001:001F3E93
+   464 0001:001F3F27   465 0001:001F3F55   468 0001:001F3FDC   470 0001:001F3FED
+   472 0001:001F3FF0   473 0001:001F400A   474 0001:001F4012   475 0001:001F4022
+   479 0001:001F4037   481 0001:001F4043   482 0001:001F4052   484 0001:001F406A
+   485 0001:001F40B3   490 0001:001F4158   493 0001:001F416E   494 0001:001F4181
+   496 0001:001F4186   497 0001:001F419B   500 0001:001F41B3   501 0001:001F41C0
+   502 0001:001F41D8   503 0001:001F41FA   508 0001:001F4209   509 0001:001F421A
+   512 0001:001F4230   513 0001:001F4243   515 0001:001F4248   516 0001:001F425D
+   519 0001:001F4275   520 0001:001F4282   521 0001:001F429A   522 0001:001F42BC
+   527 0001:001F42CB   528 0001:001F42DC   531 0001:001F42F2   532 0001:001F4305
+   534 0001:001F430A   535 0001:001F431F   538 0001:001F4337   539 0001:001F4344
+   540 0001:001F435C   541 0001:001F437E   546 0001:001F438B   548 0001:001F43A1
+   549 0001:001F43B4   551 0001:001F43B9   552 0001:001F43CE   555 0001:001F43E6
+   556 0001:001F43F3   557 0001:001F440B   558 0001:001F442D   559 0001:001F443C
+   560 0001:001F4473   561 0001:001F4497   563 0001:001F44A3   564 0001:001F44CA
+   565 0001:001F44D2   567 0001:001F44D7   568 0001:001F44E9   569 0001:001F44F7
+   570 0001:001F4505   572 0001:001F451B   573 0001:001F452E   575 0001:001F4538
+   577 0001:001F4541   578 0001:001F4555   580 0001:001F455F   581 0001:001F4567
+   583 0001:001F45B3   584 0001:001F45D7   585 0001:001F45DF   586 0001:001F45F9
+   587 0001:001F4629   590 0001:001F464F   591 0001:001F4657   597 0001:001F4667
+   598 0001:001F4676   599 0001:001F4684   600 0001:001F4698   601 0001:001F46A7
+   602 0001:001F46C0   604 0001:001F46D5   609 0001:001F46E5   610 0001:001F46F4
+   611 0001:001F4702   612 0001:001F4716   613 0001:001F4725   614 0001:001F473E
+   616 0001:001F4753   621 0001:001F4763   622 0001:001F4772   623 0001:001F4780
+   624 0001:001F4794   625 0001:001F47A3   626 0001:001F47BC   628 0001:001F47D1
+   633 0001:001F47E1   634 0001:001F47F0   635 0001:001F47FE   636 0001:001F4812
+   637 0001:001F4821   638 0001:001F483A   640 0001:001F484F   645 0001:001F485F
+   646 0001:001F4873   647 0001:001F48B2   648 0001:001F48D3   649 0001:001F48DD
+   650 0001:001F48ED   651 0001:001F48FD   653 0001:001F4940   654 0001:001F494F
+   655 0001:001F495D   656 0001:001F4988   658 0001:001F49AE   661 0001:001F49BE
+   663 0001:001F49FC   665 0001:001F4A18   666 0001:001F4A2B   667 0001:001F4A6B
+   669 0001:001F4A97   670 0001:001F4A9F   671 0001:001F4ABF   670 0001:001F4AFB
+   673 0001:001F4B00   674 0001:001F4B0E   675 0001:001F4B3F   676 0001:001F4B4D
+   680 0001:001F4B5F   681 0001:001F4B6D   682 0001:001F4B80   683 0001:001F4B8E
+   685 0001:001F4B9E   663 0001:001F4BA1   686 0001:001F4BAA   687 0001:001F4BB2
+   689 0001:001F4BDD   692 0001:001F4BE8   695 0001:001F5290   696 0001:001F529C
+   697 0001:001F52B2   698 0001:001F52CA   699 0001:001F52D2   700 0001:001F52E0
+   705 0001:001F52F0   711 0001:001F52FC   716 0001:001F5300   717 0001:001F5321
+   718 0001:001F533B   719 0001:001F5359   720 0001:001F5390   723 0001:001F53F1
+   724 0001:001F5403   727 0001:001F546C   728 0001:001F5478   729 0001:001F5489
+   732 0001:001F5490   733 0001:001F549C   734 0001:001F54B2   735 0001:001F54CA
+   736 0001:001F54D2   737 0001:001F54E0   740 0001:001F54F0   741 0001:001F54FF
+   742 0001:001F5512   747 0001:001F5518   748 0001:001F5524   749 0001:001F5531
+   750 0001:001F5548   751 0001:001F5556   753 0001:001F556E   755 0001:001F557E
+   758 0001:001F5584   759 0001:001F5590   760 0001:001F559E   761 0001:001F55A6
+   762 0001:001F55B6   763 0001:001F55C6   764 0001:001F55D6   765 0001:001F55E4
+   766 0001:001F55FF   767 0001:001F5615   768 0001:001F562D   769 0001:001F5643
+   770 0001:001F5658   771 0001:001F566E   772 0001:001F5683   773 0001:001F5699
+   776 0001:001F56AE   777 0001:001F56C2   779 0001:001F56D5   780 0001:001F56E5
+   787 0001:001F5794   792 0001:001F57B6   794 0001:001F57C4   795 0001:001F57DD
+   798 0001:001F5819   799 0001:001F5830   800 0001:001F5857   801 0001:001F5879
+   802 0001:001F58AA   804 0001:001F591A   800 0001:001F5933   806 0001:001F593C
+   809 0001:001F5964   811 0001:001F598C   812 0001:001F59A5   813 0001:001F59BC
+   814 0001:001F59E3   815 0001:001F5A05   818 0001:001F5A5D   820 0001:001F5AC7
+   821 0001:001F5ADF   822 0001:001F5B12   823 0001:001F5B28   814 0001:001F5B2B
+   828 0001:001F5B39   829 0001:001F5B52   830 0001:001F5B69   831 0001:001F5B90
+   832 0001:001F5BB2   835 0001:001F5C0A   837 0001:001F5C74   838 0001:001F5C8C
+   839 0001:001F5CC5   840 0001:001F5CDB   831 0001:001F5CDE   842 0001:001F5CE7
+   847 0001:001F5D44   848 0001:001F5D65   849 0001:001F5DAF   851 0001:001F5DC8
+   853 0001:001F5DCD   854 0001:001F5E0B   856 0001:001F5E1E   858 0001:001F5E23
+   859 0001:001F5E41   860 0001:001F5E56   861 0001:001F5E6B   862 0001:001F5E80
+   864 0001:001F5E93   865 0001:001F5EF0   866 0001:001F5F12   870 0001:001F6000
+   871 0001:001F600C   872 0001:001F6016   873 0001:001F6027   880 0001:001F602C
+   881 0001:001F6056   882 0001:001F6060   884 0001:001F6070   885 0001:001F60A9
+   887 0001:001F60BA   883 0001:001F60F0   889 0001:001F60FA   890 0001:001F60FF
+   891 0001:001F6104   892 0001:001F6109   894 0001:001F611B   896 0001:001F612C
+   898 0001:001F6139   899 0001:001F615A   900 0001:001F618D   904 0001:001F61AF
+   905 0001:001F61CD   909 0001:001F61ED   913 0001:001F61F5   914 0001:001F6213
+   915 0001:001F6231   891 0001:001F6234   916 0001:001F623E   917 0001:001F625C
+   919 0001:001F6287   922 0001:001F62C8   923 0001:001F62EA   924 0001:001F62F4
+   925 0001:001F6318   926 0001:001F6327   927 0001:001F634B   929 0001:001F6358
+   930 0001:001F6360   931 0001:001F6368   933 0001:001F6370   936 0001:001F63C0
+   937 0001:001F63CC   938 0001:001F63D7   939 0001:001F63E5   940 0001:001F63FA
+   941 0001:001F640F   942 0001:001F6424   943 0001:001F6431   944 0001:001F644D
+   949 0001:001F6454   950 0001:001F6478   952 0001:001F6492   953 0001:001F64A9
+   954 0001:001F64C1   955 0001:001F64DD   957 0001:001F64EB   958 0001:001F6512
+   959 0001:001F652E   960 0001:001F655E   958 0001:001F65A5   961 0001:001F65AA
+   962 0001:001F65D1   963 0001:001F65ED   964 0001:001F661D   962 0001:001F6664
+   966 0001:001F6669   967 0001:001F668E   968 0001:001F669B   969 0001:001F66AE
+   970 0001:001F66B9   973 0001:001F6760   974 0001:001F676C   975 0001:001F6783
+   976 0001:001F679A   981 0001:001F67A0   982 0001:001F67AA   983 0001:001F67CE
+   985 0001:001F67DD   986 0001:001F67ED   987 0001:001F67FA   982 0001:001F67FD
+   988 0001:001F6802   989 0001:001F6813   990 0001:001F6821   991 0001:001F682F
+  1005 0001:001F6834  1006 0001:001F683E  1007 0001:001F6843  1008 0001:001F684F
+  1010 0001:001F6857  1011 0001:001F6865  1012 0001:001F6868  1008 0001:001F686B
+  1014 0001:001F6873  1016 0001:001F6878  1017 0001:001F68A4  1018 0001:001F68B3
+  1019 0001:001F68BD  1020 0001:001F68D1  1021 0001:001F68DF  1022 0001:001F68E7
+  1023 0001:001F68EC  1025 0001:001F68F6  1026 0001:001F6909  1027 0001:001F6911
+  1031 0001:001F6920  1032 0001:001F6926  1033 0001:001F6930  1035 0001:001F6955
+  1036 0001:001F695B  1038 0001:001F696A  1039 0001:001F6977  1040 0001:001F698C
+  1041 0001:001F699B  1042 0001:001F69AE  1043 0001:001F69C1  1044 0001:001F69CE
+  1046 0001:001F69D8  1048 0001:001F6A01  1049 0001:001F6A14  1050 0001:001F6A27
+  1051 0001:001F6A2F  1052 0001:001F6A37  1053 0001:001F6A3F  1055 0001:001F6A49
+  1057 0001:001F6A65  1058 0001:001F6A75  1059 0001:001F6A88  1060 0001:001F6A90
+  1061 0001:001F6A98  1062 0001:001F6AA6  1064 0001:001F6AF9  1065 0001:001F6B06
+  1067 0001:001F6B2D  1069 0001:001F6B5C  1071 0001:001F6B6B  1072 0001:001F6B78
+  1073 0001:001F6BB6  1074 0001:001F6BBE  1075 0001:001F6BFA  1077 0001:001F6C1C
+  1078 0001:001F6C3F  1079 0001:001F6C73  1082 0001:001F6C8E  1083 0001:001F6CB4
+  1085 0001:001F6CCE  1086 0001:001F6CE6  1085 0001:001F6D14  1087 0001:001F6D19
+  1089 0001:001F6D57  1090 0001:001F6D8E  1091 0001:001F6DCB  1092 0001:001F6E21
+  1093 0001:001F6E77  1095 0001:001F6ECD  1096 0001:001F6EF9  1097 0001:001F6F25
+  1098 0001:001F6F6A  1099 0001:001F6F96  1100 0001:001F6FDB  1101 0001:001F7020
+  1102 0001:001F704C  1103 0001:001F7078  1104 0001:001F70A4  1105 0001:001F70B8
+  1055 0001:001F70BB  1106 0001:001F70C4  1107 0001:001F70CC  1108 0001:001F70D2
+  1110 0001:001F70DC  1111 0001:001F70E4  1112 0001:001F70EC  1113 0001:001F70F4
+  1114 0001:001F7108  1116 0001:001F7127  1117 0001:001F714B  1118 0001:001F718D
+  1116 0001:001F71A4  1119 0001:001F71A9  1122 0001:001F71B6  1123 0001:001F71CA
+  1124 0001:001F71F6  1126 0001:001F7200  1127 0001:001F7208  1128 0001:001F7213
+  1132 0001:001F7262  1133 0001:001F72B8  1136 0001:001F72CF  1138 0001:001F72DF
+  1141 0001:001F7558  1142 0001:001F7564  1143 0001:001F7575  1144 0001:001F757D
+  1145 0001:001F75A1  1147 0001:001F75AD  1148 0001:001F75C5  1149 0001:001F75D5
+  1150 0001:001F75E5  1152 0001:001F75E7  1153 0001:001F75FF  1154 0001:001F7612
+  1155 0001:001F7620  1160 0001:001F7648  1161 0001:001F7667  1162 0001:001F7674
+  1163 0001:001F7689  1164 0001:001F7691  1165 0001:001F76A9  1168 0001:001F76B9
+  1169 0001:001F76D1  1175 0001:001F76F4  1176 0001:001F76FD  1177 0001:001F770F
+  1178 0001:001F771E  1179 0001:001F772C  1180 0001:001F7740  1181 0001:001F774A
+  1182 0001:001F776B  1183 0001:001F7773  1184 0001:001F778B  1185 0001:001F7793
+  1186 0001:001F77AC  1187 0001:001F77C0  1188 0001:001F77C8  1189 0001:001F77D9
+  1191 0001:001F77E4  1193 0001:001F77F5  1194 0001:001F7805  1195 0001:001F7815
+  1196 0001:001F7825  1197 0001:001F7835  1198 0001:001F7845  1199 0001:001F7860
+  1200 0001:001F787C  1201 0001:001F788C  1203 0001:001F789C  1205 0001:001F78A9
+  1206 0001:001F78B9  1209 0001:001F78D6  1210 0001:001F78DE  1212 0001:001F78ED
+  1221 0001:001F7928  1222 0001:001F7964  1223 0001:001F7968  1224 0001:001F7981
+  1226 0001:001F79A6  1228 0001:001F79DC  1231 0001:001F7A02  1233 0001:001F7A50
+  1235 0001:001F7A8E  1236 0001:001F7AB2  1238 0001:001F7ABD  1239 0001:001F7ACC
+  1240 0001:001F7ADA  1241 0001:001F7AF8  1240 0001:001F7B5E  1242 0001:001F7B63
+  1244 0001:001F7BAF  1246 0001:001F7BBF  1248 0001:001F7BC9  1249 0001:001F7BEE
+  1250 0001:001F7BF4  1252 0001:001F7C21  1254 0001:001F7C45  1256 0001:001F7C72
+  1257 0001:001F7C7D  1258 0001:001F7C8B  1259 0001:001F7C98  1261 0001:001F7C9A
+  1252 0001:001F7C9D  1262 0001:001F7CA2  1264 0001:001F7CAF  1266 0001:001F7CC2
+  1268 0001:001F7CDA  1271 0001:001F7CF6  1278 0001:001F7DB4  1279 0001:001F7DD2
+  1280 0001:001F7DDF  1284 0001:001F7E1F  1286 0001:001F7E29  1287 0001:001F7E39
+  1289 0001:001F7E48  1291 0001:001F7E5F  1292 0001:001F7E94  1293 0001:001F7EA4
+  1294 0001:001F7EB4  1296 0001:001F7EC6  1298 0001:001F7EDA  1299 0001:001F7F03
+  1300 0001:001F7F0D  1301 0001:001F7F1D  1304 0001:001F7F2D  1307 0001:001F7F48
+  1308 0001:001F7F58  1309 0001:001F7F68  1312 0001:001F7F6D  1314 0001:001F7F7B
+  1315 0001:001F7F9D  1316 0001:001F7FB0  1317 0001:001F7FD2  1318 0001:001F7FE2
+  1319 0001:001F7FF0  1320 0001:001F800A  1321 0001:001F8026  1322 0001:001F8042
+  1323 0001:001F8055  1324 0001:001F8061  1325 0001:001F806D  1326 0001:001F807F
+  1327 0001:001F8089  1330 0001:001F80A4  1333 0001:001F80B7  1339 0001:001F8274
+  1340 0001:001F8297  1341 0001:001F82C8  1343 0001:001F82E0  1344 0001:001F82EA
+  1345 0001:001F82FA  1346 0001:001F830A  1347 0001:001F8337  1348 0001:001F8346
+  1349 0001:001F8355  1351 0001:001F8362  1352 0001:001F8384  1353 0001:001F8395
+  1354 0001:001F83B7  1355 0001:001F83C7  1356 0001:001F83D5  1357 0001:001F83EF
+  1358 0001:001F840B  1359 0001:001F8427  1360 0001:001F843A  1361 0001:001F8446
+  1362 0001:001F8454  1363 0001:001F84F0  1364 0001:001F84F7  1365 0001:001F8501
+  1369 0001:001F851C  1370 0001:001F8549  1371 0001:001F8558  1372 0001:001F8567
+  1374 0001:001F8574  1378 0001:001F8595  1387 0001:001F8700  1388 0001:001F8734
+  1389 0001:001F8743  1390 0001:001F8751  1392 0001:001F8764  1393 0001:001F8788
+  1394 0001:001F879F  1395 0001:001F87B1  1396 0001:001F87FF  1397 0001:001F8807
+  1399 0001:001F8817  1401 0001:001F8828  1402 0001:001F8839  1403 0001:001F884A
+  1406 0001:001F8865  1408 0001:001F887F  1409 0001:001F8892  1411 0001:001F889C
+  1412 0001:001F88AD  1413 0001:001F88BE  1417 0001:001F88D5  1418 0001:001F88E0
+  1419 0001:001F88F8  1420 0001:001F8914  1423 0001:001F8963  1425 0001:001F8969
+  1426 0001:001F897F  1429 0001:001F899A  1430 0001:001F89AE  1433 0001:001F89C4
+  1435 0001:001F89CA  1436 0001:001F89DD  1437 0001:001F8A06  1441 0001:001F8A27
+  1443 0001:001F8A3C  1445 0001:001F8A5A  1446 0001:001F8A71  1449 0001:001F8A95
+  1441 0001:001F8A98  1450 0001:001F8A9E  1451 0001:001F8AA6  1452 0001:001F8AB2
+  1454 0001:001F8AC6  1468 0001:001F8C50  1469 0001:001F8C76  1470 0001:001F8C85
+  1471 0001:001F8CB6  1472 0001:001F8CDA  1473 0001:001F8CEC  1474 0001:001F8CFA
+  1476 0001:001F8D10  1478 0001:001F8D28  1479 0001:001F8D35  1482 0001:001F8D41
+  1486 0001:001F8D4B  1487 0001:001F8D5B  1488 0001:001F8D77  1491 0001:001F8DA7
+  1492 0001:001F8DB6  1496 0001:001F8DCB  1498 0001:001F8DE0  1500 0001:001F8DFE
+  1501 0001:001F8E15  1504 0001:001F8E39  1496 0001:001F8E3C  1505 0001:001F8E42
+  1506 0001:001F8E4A  1508 0001:001F8E5D  1511 0001:001F8FB8  1512 0001:001F8FBF
+  1513 0001:001F8FCF  1514 0001:001F8FDF  1515 0001:001F8FEF  1516 0001:001F8FFF
+  1517 0001:001F900F  1518 0001:001F901F  1519 0001:001F902F  1520 0001:001F903F
+  1521 0001:001F904F  1522 0001:001F905F  1523 0001:001F906F  1524 0001:001F907F
+  1525 0001:001F908F  1526 0001:001F909F  1532 0001:001F90A4  1533 0001:001F90C5
+  1535 0001:001F90DD  1536 0001:001F90ED  1537 0001:001F90FD  1538 0001:001F910D
+  1539 0001:001F911D  1540 0001:001F912D  1541 0001:001F913D  1542 0001:001F914D
+  1543 0001:001F915D  1544 0001:001F916D  1545 0001:001F917D  1546 0001:001F9182
+  1547 0001:001F9187  1549 0001:001F91AC  1550 0001:001F9207  1551 0001:001F920A
+  1552 0001:001F9265  1553 0001:001F9268  1547 0001:001F926B  1554 0001:001F9274
+  1556 0001:001F92A8  1558 0001:001F92DC  1559 0001:001F92F1  1563 0001:001F930B
+  1564 0001:001F931B  1565 0001:001F932B  1566 0001:001F9343  1567 0001:001F935B
+  1568 0001:001F936B  1569 0001:001F937B  1570 0001:001F9393  1571 0001:001F93AB
+  1572 0001:001F93BB  1573 0001:001F93CB  1576 0001:001F944F  1579 0001:001F94D3
+  1580 0001:001F9538  1584 0001:001F959D  1586 0001:001F95B7  1587 0001:001F95C7
+  1588 0001:001F95D7  1589 0001:001F95E7  1590 0001:001F95F7  1591 0001:001F9607
+  1592 0001:001F9617  1593 0001:001F9627  1594 0001:001F9637  1595 0001:001F9647
+  1597 0001:001F9657  1600 0001:001F96A4  1603 0001:001F96B0  1604 0001:001F96BE
+  1605 0001:001F96CC  1606 0001:001F96DA  1609 0001:001F96E8  1610 0001:001F96F0
+  1613 0001:001F96F4  1615 0001:001F9700  1616 0001:001F9720  1617 0001:001F972C
+  1618 0001:001F9738  1619 0001:001F9744  1622 0001:001F974E  1623 0001:001F9759
+  1624 0001:001F9764  1628 0001:001F9768  1629 0001:001F976C  1630 0001:001F9770
+  1632 0001:001F9790  1633 0001:001F979F  1635 0001:001F97AB  1637 0001:001F97CB
+  1638 0001:001F97DB  1639 0001:001F97EE  1641 0001:001F97F2  1644 0001:001F9880
+  1645 0001:001F988C  1646 0001:001F9894  1647 0001:001F98A2  1648 0001:001F98B0
+  1650 0001:001F98BE  1653 0001:001F98C4  1655 0001:001F98E6  1657 0001:001F98F0
+  1658 0001:001F9903  1660 0001:001F9908  1664 0001:001F9920  1665 0001:001F9938
+  1667 0001:001F9963  1669 0001:001F998F  1672 0001:001F9A60  1674 0001:001F9A6C
+  1676 0001:001F9A76  1677 0001:001F9A89  1679 0001:001F9A8B  1681 0001:001F9A95
+  1682 0001:001F9AA3  1684 0001:001F9AAC  1686 0001:001F9AB6  1687 0001:001F9AC4
+  1689 0001:001F9ACD  1690 0001:001F9AD5  1691 0001:001F9ADD  1697 0001:001F9B44
+  1699 0001:001F9B69  1701 0001:001F9B73  1702 0001:001F9B86  1704 0001:001F9B8B
+  1705 0001:001F9BA8  1706 0001:001F9BDE  1707 0001:001F9C03  1709 0001:001F9C0F
+  1711 0001:001F9C2B  1712 0001:001F9C3E  1713 0001:001F9C72  1715 0001:001F9C8C
+  1716 0001:001F9C94  1717 0001:001F9CB4  1716 0001:001F9CEA  1719 0001:001F9CEF
+  1720 0001:001F9CFD  1721 0001:001F9D28  1725 0001:001F9D38  1726 0001:001F9D46
+  1727 0001:001F9D59  1729 0001:001F9D67  1709 0001:001F9D6A  1731 0001:001F9D73
+  1732 0001:001F9D7B  1735 0001:001F9E3C  1736 0001:001F9E58  1737 0001:001F9E60
+  1739 0001:001F9E6A  1740 0001:001F9E7D  1742 0001:001F9E7F  1743 0001:001F9E89
+  1744 0001:001F9EA3  1749 0001:001F9F3C  1750 0001:001F9F48  1751 0001:001F9F4D
+  1752 0001:001F9F56  1753 0001:001F9F61  1755 0001:001F9F6D  1757 0001:001F9F7B
+  1758 0001:001F9FA9  1759 0001:001F9FD7  1761 0001:001F9FEF  1762 0001:001F9FF8
+  1764 0001:001FA00D  1765 0001:001FA016  1766 0001:001FA027  1767 0001:001FA032
+  1772 0001:001FA038  1773 0001:001FA059  1774 0001:001FA06C  1775 0001:001FA07D
+  1776 0001:001FA08B  1777 0001:001FA0AD  1778 0001:001FA0D4  1779 0001:001FA0F0
+  1780 0001:001FA11D  1782 0001:001FA158  1783 0001:001FA183  1776 0001:001FA186
+  1784 0001:001FA18F  1785 0001:001FA1A0  1786 0001:001FA1B3  1794 0001:001FA1E8
+  1796 0001:001FA20E  1797 0001:001FA216  1799 0001:001FA239  1800 0001:001FA247
+  1801 0001:001FA282  1802 0001:001FA2A7  1803 0001:001FA2C8  1804 0001:001FA2E6
+  1805 0001:001FA2F6  1807 0001:001FA303  1808 0001:001FA30B  1814 0001:001FA338
+  1816 0001:001FA36A  1818 0001:001FA38D  1819 0001:001FA3AC  1820 0001:001FA3D0
+  1819 0001:001FA41D  1822 0001:001FA422  1827 0001:001FA450  1828 0001:001FA481
+  1829 0001:001FA489  1830 0001:001FA495  1831 0001:001FA4B7  1832 0001:001FA4CE
+  1833 0001:001FA4F1  1830 0001:001FA539  1834 0001:001FA542  1837 0001:001FA58C
+  1838 0001:001FA5AF  1839 0001:001FA5B5  1841 0001:001FA5BF  1842 0001:001FA5EE
+  1846 0001:001FA610  1848 0001:001FA61F  1856 0001:001FA630  1880 0001:001FA634
+  1882 0001:001FA640  1884 0001:001FA66A  1887 0001:001FA6A9  1889 0001:001FA6C8
+  1890 0001:001FA6D9  1893 0001:001FA6E0  1895 0001:001FA6EC  1897 0001:001FA71A
+  1899 0001:001FA734  1900 0001:001FA743  1902 0001:001FA767  1905 0001:001FA78B
+  1909 0001:001FA7CA  1910 0001:001FA7D9  1912 0001:001FA7FA  1915 0001:001FA819
+  1916 0001:001FA82A  1919 0001:001FA830  1921 0001:001FA83C  1923 0001:001FA86A
+  1925 0001:001FA894  1927 0001:001FA8AB  1929 0001:001FA8D5  1931 0001:001FA8F8
+  1932 0001:001FA909  1935 0001:001FA910  1936 0001:001FA91D  1938 0001:001FA92F
+  1940 0001:001FA959  1942 0001:001FA983  1944 0001:001FA9A2  1945 0001:001FA9B3
+  1948 0001:001FA9B8  1950 0001:001FA9C4  1951 0001:001FA9EC  1954 0001:001FA9F0
+  1956 0001:001FA9FC  1957 0001:001FAA24  1958 0001:001FAA44  1962 0001:001FAA48
+  1964 0001:001FAA57  1965 0001:001FAA66  1968 0001:001FAA6C  1969 0001:001FAA73
+  1970 0001:001FAA81  1971 0001:001FAA8F  1972 0001:001FAA9F  1973 0001:001FAAAF
+  1976 0001:001FAAB4  1978 0001:001FAAC0  1979 0001:001FAACF  1982 0001:001FAAD4
+  1984 0001:001FAAF6  1985 0001:001FAB18  1986 0001:001FAB3A  1987 0001:001FAB5C
+  1988 0001:001FABA3  1989 0001:001FABEA  1990 0001:001FAC0C  1991 0001:001FAC2E
+  1992 0001:001FAC50  1993 0001:001FAC72  1998 0001:001FACA4  1999 0001:001FACB0
+  2000 0001:001FACC2  2001 0001:001FACCC  2002 0001:001FACDD  2004 0001:001FACE9
+  2005 0001:001FAD1D  2006 0001:001FAD4A  2007 0001:001FAD67  2008 0001:001FAD84
+  2009 0001:001FADB8  2010 0001:001FADEE  2011 0001:001FAE24  2013 0001:001FAE58
+  2014 0001:001FAE81  2015 0001:001FAE92  2019 0001:001FAE9C  2022 0001:001FAEAB
+  2023 0001:001FAEB6  2030 0001:001FAEBC  2032 0001:001FAECB  2033 0001:001FAED6
+  2035 0001:001FAEEE  2036 0001:001FAEF3  2037 0001:001FAF17  2036 0001:001FAF27
+  2038 0001:001FAF2C  2040 0001:001FAF34  2041 0001:001FAF58  2040 0001:001FAF81
+  2042 0001:001FAF86  2045 0001:001FAF97  2050 0001:001FAFA0  2051 0001:001FAFA9
+  2052 0001:001FAFAE  2053 0001:001FAFD2  2052 0001:001FAFF2  2054 0001:001FAFF7
+  2058 0001:001FB000  2060 0001:001FB00F  2061 0001:001FB017  2066 0001:001FB020
+  2067 0001:001FB029  2068 0001:001FB02E  2067 0001:001FB055  2069 0001:001FB05B
+  2072 0001:001FB060  2074 0001:001FB06C  2075 0001:001FB077
+
+Line numbers for fProbs(fProbs.pas) segment .itext
+
+  2077 0002:000013E8  2078 0002:000013F1  2080 0002:000013FB
+
+Line numbers for fODConsult(Consults\fODConsult.pas) segment .text
+
+   164 0001:001FB820   165 0001:001FB82C   166 0001:001FB840   167 0001:001FB84A
+   168 0001:001FB855   170 0001:001FB85F   171 0001:001FB86F   175 0001:001FB881
+   176 0001:001FB891   178 0001:001FB8A1   179 0001:001FB8B2   180 0001:001FB8C3
+   181 0001:001FB8D4   182 0001:001FB8DE   183 0001:001FB8E5   184 0001:001FB8F2
+   185 0001:001FB8FC   186 0001:001FB90D   187 0001:001FB91A   188 0001:001FB924
+   189 0001:001FB937   190 0001:001FB941   191 0001:001FB951   192 0001:001FB965
+   193 0001:001FB975   194 0001:001FB986   196 0001:001FB991   197 0001:001FB9A0
+   198 0001:001FB9AA   201 0001:001FB9B1   204 0001:001FBA24   205 0001:001FBA2D
+   206 0001:001FBA35   207 0001:001FBA3F   208 0001:001FBA4C   209 0001:001FBA56
+   211 0001:001FBA62   212 0001:001FBA77   214 0001:001FBA87   215 0001:001FBA9A
+   216 0001:001FBAAE   217 0001:001FBAC7   218 0001:001FBADA   219 0001:001FBAF0
+   223 0001:001FBB08   224 0001:001FBB1B   225 0001:001FBB2F   226 0001:001FBB48
+   227 0001:001FBB5B   228 0001:001FBB71   231 0001:001FBB87   232 0001:001FBB91
+   233 0001:001FBBA2   234 0001:001FBBB3   235 0001:001FBBC3   236 0001:001FBBD9
+   237 0001:001FBBFF   238 0001:001FBC0F   239 0001:001FBC1F   240 0001:001FBC27
+   241 0001:001FBC38   242 0001:001FBC42   243 0001:001FBC49   258 0001:001FBD24
+   259 0001:001FBD50   260 0001:001FBD5E   261 0001:001FBD66   262 0001:001FBD75
+   263 0001:001FBD83   265 0001:001FBDA3   266 0001:001FBDAD   267 0001:001FBDC2
+   268 0001:001FBDC8   271 0001:001FBDD8   272 0001:001FBDEB   273 0001:001FBDF5
+   274 0001:001FBDFD   276 0001:001FBE07   278 0001:001FBE16   279 0001:001FBE27
+   280 0001:001FBE31   281 0001:001FBE39   283 0001:001FBE43   284 0001:001FBE80
+   285 0001:001FBE91   286 0001:001FBEA6   287 0001:001FBEBA   288 0001:001FBECC
+   290 0001:001FBEE1   291 0001:001FBEF4   292 0001:001FBF0C   293 0001:001FBF24
+   294 0001:001FBF3C   295 0001:001FBF4C   296 0001:001FBF62   297 0001:001FBF72
+   298 0001:001FBF82   300 0001:001FBF9B   301 0001:001FBFA3   303 0001:001FBFAD
+   304 0001:001FBFB5   305 0001:001FBFC6   306 0001:001FBFCD   307 0001:001FBFE5
+   309 0001:001FBFEE   310 0001:001FBFF8   311 0001:001FC000   313 0001:001FC00A
+   314 0001:001FC011   315 0001:001FC01C   317 0001:001FC025   318 0001:001FC02F
+   319 0001:001FC037   321 0001:001FC041   322 0001:001FC04B   326 0001:001FC05B
+   327 0001:001FC07E   328 0001:001FC093   329 0001:001FC0A0   330 0001:001FC0AF
+   331 0001:001FC0CA   333 0001:001FC0D6   334 0001:001FC0F4   333 0001:001FC143
+   335 0001:001FC148   336 0001:001FC166   337 0001:001FC170   338 0001:001FC18E
+   339 0001:001FC198   341 0001:001FC1AF   343 0001:001FC1C9   344 0001:001FC1E2
+   345 0001:001FC1F5   347 0001:001FC208   348 0001:001FC212   349 0001:001FC22E
+   352 0001:001FC2A4   348 0001:001FC2CC   353 0001:001FC2D5   354 0001:001FC2E5
+   355 0001:001FC2EF   357 0001:001FC305   359 0001:001FC34D   362 0001:001FC3A2
+   365 0001:001FC3B5   366 0001:001FC3C6   368 0001:001FC3E2   370 0001:001FC3EE
+   371 0001:001FC3F6   373 0001:001FC3FD   375 0001:001FC434   376 0001:001FC445
+   379 0001:001FC463   381 0001:001FC473   386 0001:001FC738   387 0001:001FC741
+   388 0001:001FC77F   389 0001:001FC793   391 0001:001FC7A4   392 0001:001FC7C8
+   393 0001:001FC7D3   394 0001:001FC7FC   395 0001:001FC820   396 0001:001FC856
+   397 0001:001FC86E   400 0001:001FC87F   401 0001:001FC8D4   403 0001:001FC95D
+   405 0001:001FC969   407 0001:001FC997   408 0001:001FC9A8   410 0001:001FC9B6
+   412 0001:001FC9C2   416 0001:001FCC1C   418 0001:001FCC2B   419 0001:001FCC46
+   422 0001:001FCC4C   424 0001:001FCC58   426 0001:001FCC64   427 0001:001FCC7A
+   428 0001:001FCC90   429 0001:001FCCA4   430 0001:001FCCBD   432 0001:001FCCD0
+   433 0001:001FCCDB   436 0001:001FCD30   438 0001:001FCD3C   440 0001:001FCD48
+   441 0001:001FCD5E   442 0001:001FCD74   443 0001:001FCD88   444 0001:001FCDA1
+   446 0001:001FCDB4   447 0001:001FCDBF   454 0001:001FCE14   457 0001:001FCE3D
+   458 0001:001FCE5E   460 0001:001FCE76   461 0001:001FCE97   462 0001:001FCEA5
+   463 0001:001FCEC6   464 0001:001FCED1   458 0001:001FCED4   466 0001:001FCED9
+   472 0001:001FCF24   474 0001:001FCF4F   475 0001:001FCF5F   477 0001:001FCFA5
+   478 0001:001FCFAF   480 0001:001FCFBB   482 0001:001FCFD1   484 0001:001FD019
+   488 0001:001FD06E   489 0001:001FD08D   490 0001:001FD09A   491 0001:001FD0AB
+   492 0001:001FD0B5   496 0001:001FD0BA   501 0001:001FD0C5   502 0001:001FD0CF
+   503 0001:001FD0DF   505 0001:001FD120   506 0001:001FD13C   507 0001:001FD14D
+   508 0001:001FD15E   509 0001:001FD16B   510 0001:001FD175   511 0001:001FD185
+   512 0001:001FD18F   513 0001:001FD1AE   514 0001:001FD1BB   516 0001:001FD1C0
+   517 0001:001FD1D0   518 0001:001FD1E1   519 0001:001FD22B   520 0001:001FD235
+   521 0001:001FD23D   522 0001:001FD24B   523 0001:001FD255   525 0001:001FD286
+   526 0001:001FD290   527 0001:001FD297   528 0001:001FD2D1   529 0001:001FD2F4
+   531 0001:001FD31E   533 0001:001FD355   534 0001:001FD370   536 0001:001FD372
+   529 0001:001FD375   537 0001:001FD37A   539 0001:001FD390   541 0001:001FD3DE
+   544 0001:001FD43F   547 0001:001FD452   548 0001:001FD463   549 0001:001FD484
+   550 0001:001FD494   551 0001:001FD4AA   552 0001:001FD4BA   553 0001:001FD4CA
+   556 0001:001FD4D4   558 0001:001FD4ED   559 0001:001FD510   561 0001:001FD53A
+   563 0001:001FD571   564 0001:001FD58C   566 0001:001FD58E   559 0001:001FD591
+   567 0001:001FD596   569 0001:001FD5AC   571 0001:001FD5FA   574 0001:001FD65B
+   577 0001:001FD66E   578 0001:001FD67F   579 0001:001FD689   581 0001:001FD695
+   582 0001:001FD69D   584 0001:001FD6A2   585 0001:001FD6BA   586 0001:001FD718
+   587 0001:001FD72B   588 0001:001FD743   589 0001:001FD75B   590 0001:001FD773
+   591 0001:001FD77A   592 0001:001FD792   594 0001:001FD7A4   595 0001:001FD7AE
+   596 0001:001FD7B6   598 0001:001FD7BB   599 0001:001FD815   600 0001:001FD858
+   601 0001:001FD865   602 0001:001FD876   606 0001:001FD885   608 0001:001FD8A1
+   610 0001:001FD8AD   611 0001:001FD8B5   613 0001:001FD8BA   614 0001:001FD8FD
+   617 0001:001FD907   618 0001:001FD90F   619 0001:001FD94F   620 0001:001FD96E
+   622 0001:001FD991   623 0001:001FD99C   629 0001:001FDB50   631 0001:001FDB74
+   632 0001:001FDBA0   634 0001:001FDBAC   636 0001:001FDC0B   637 0001:001FDC26
+   639 0001:001FDC2C   640 0001:001FDC5F   643 0001:001FDCA8   644 0001:001FDCB3
+   646 0001:001FDD03   648 0001:001FDD1F   649 0001:001FDD63   650 0001:001FDDEC
+   651 0001:001FDE61   652 0001:001FDEF0   654 0001:001FDF65   655 0001:001FDFB0
+   656 0001:001FDFCC   657 0001:001FE017   659 0001:001FE033   660 0001:001FE05B
+   663 0001:001FE1F0   665 0001:001FE1FC   666 0001:001FE20C   669 0001:001FE210
+   671 0001:001FE236   672 0001:001FE246   674 0001:001FE252   676 0001:001FE268
+   677 0001:001FE287   680 0001:001FE2D0   685 0001:001FE2F8   686 0001:001FE314
+   687 0001:001FE324   689 0001:001FE33B   690 0001:001FE347   693 0001:001FE379
+   698 0001:001FE3C8   699 0001:001FE3EA   700 0001:001FE3F5   701 0001:001FE407
+   703 0001:001FE41F   705 0001:001FE433   706 0001:001FE445   707 0001:001FE456
+   709 0001:001FE466   710 0001:001FE47A   712 0001:001FE486   715 0001:001FE4A4
+   719 0001:001FE4AE   720 0001:001FE4B7   722 0001:001FE4C4   724 0001:001FE4CD
+   728 0001:001FE4EC   733 0001:001FE520   735 0001:001FE542   736 0001:001FE551
+   738 0001:001FE55F   739 0001:001FE57B   741 0001:001FE588   742 0001:001FE5A4
+   744 0001:001FE5BC   746 0001:001FE5CC   751 0001:001FE5F8   752 0001:001FE61D
+   754 0001:001FE629   755 0001:001FE62E   757 0001:001FE638   758 0001:001FE649
+   760 0001:001FE655   762 0001:001FE685   763 0001:001FE6A1   764 0001:001FE6B2
+   765 0001:001FE6BF   767 0001:001FE6C4   769 0001:001FE701   770 0001:001FE71D
+   771 0001:001FE72E   772 0001:001FE73B   773 0001:001FE75A   774 0001:001FE767
+   776 0001:001FE76C   777 0001:001FE787   779 0001:001FE7B2   780 0001:001FE7BC
+   781 0001:001FE7EA   782 0001:001FE7F1   783 0001:001FE814   793 0001:001FE83A
+   794 0001:001FE85B   795 0001:001FE865   796 0001:001FE875   797 0001:001FE885
+   798 0001:001FE895   799 0001:001FE89F   801 0001:001FE8B8   802 0001:001FE8C2
+   804 0001:001FE8CE   805 0001:001FE8D6   807 0001:001FE8DB   808 0001:001FE8F3
+   809 0001:001FE951   810 0001:001FE964   811 0001:001FE97C   812 0001:001FE994
+   813 0001:001FE9AC   814 0001:001FE9B3   815 0001:001FE9CB   817 0001:001FE9DD
+   818 0001:001FE9E7   819 0001:001FE9EF   823 0001:001FE9F4   824 0001:001FEA01
+   825 0001:001FEA12   829 0001:001FEA21   831 0001:001FEA45   832 0001:001FEA4F
+   834 0001:001FEA5B   835 0001:001FEA63   837 0001:001FEA68   838 0001:001FEAAB
+   839 0001:001FEAB5   845 0001:001FEAC1   846 0001:001FEACB   848 0001:001FEAD7
+   849 0001:001FEADF   851 0001:001FEAE4   852 0001:001FEB27   853 0001:001FEB31
+   856 0001:001FEB3B   857 0001:001FEB4B   858 0001:001FEB53   859 0001:001FEB93
+   860 0001:001FEBB2   862 0001:001FEBD5   863 0001:001FEBE0   866 0001:001FED64
+   867 0001:001FED70   868 0001:001FED7A   869 0001:001FED84   870 0001:001FED8E
+   871 0001:001FED99   876 0001:001FEDA0   878 0001:001FEDC4   879 0001:001FEDCE
+   880 0001:001FEDEB   883 0001:001FEDFE   884 0001:001FEE11   885 0001:001FEE24
+   886 0001:001FEE3C   887 0001:001FEE4D   889 0001:001FEE7B   891 0001:001FEECA
+   892 0001:001FEEE5   893 0001:001FEF27   895 0001:001FEF29   887 0001:001FEF2C
+   899 0001:001FEF37   900 0001:001FEF47   901 0001:001FEF5A   902 0001:001FEF72
+   904 0001:001FEF83   905 0001:001FEF8D   908 0001:001FF068   909 0001:001FF082
+   911 0001:001FF0A0   912 0001:001FF0B0   913 0001:001FF0C6   914 0001:001FF0D6
+   918 0001:001FF0EB   919 0001:001FF0FB   920 0001:001FF111   921 0001:001FF121
+   924 0001:001FF134   926 0001:001FF152   927 0001:001FF15C   929 0001:001FF16E
+   930 0001:001FF17E   931 0001:001FF18E   932 0001:001FF1A4   933 0001:001FF1B4
+   935 0001:001FF1C9   937 0001:001FF1D1   938 0001:001FF1EE   942 0001:001FF250
+   944 0001:001FF25F   945 0001:001FF269   946 0001:001FF279   947 0001:001FF283
+   948 0001:001FF289   955 0001:001FF290   957 0001:001FF2B3   958 0001:001FF2BD
+   959 0001:001FF2D4   960 0001:001FF2DA   961 0001:001FF2E7   962 0001:001FF2F9
+   964 0001:001FF301   965 0001:001FF30A   966 0001:001FF32F   968 0001:001FF33F
+   974 0001:001FF370   977 0001:001FF398   979 0001:001FF3A9   980 0001:001FF3BA
+   981 0001:001FF3C4   982 0001:001FF3E4   983 0001:001FF404   984 0001:001FF417
+   985 0001:001FF443   986 0001:001FF456   987 0001:001FF46E   989 0001:001FF4A2
+   990 0001:001FF4A9   999 0001:001FF500  1000 0001:001FF520  1001 0001:001FF52A
+  1003 0001:001FF53C  1004 0001:001FF54C  1005 0001:001FF55C  1006 0001:001FF56C
+  1007 0001:001FF57F  1008 0001:001FF595  1009 0001:001FF5A8  1010 0001:001FF5C4
+  1014 0001:001FF607  1015 0001:001FF621  1017 0001:001FF632  1018 0001:001FF645
+  1021 0001:001FF66B  1022 0001:001FF67E  1024 0001:001FF68F  1025 0001:001FF69F
+  1026 0001:001FF6AF  1027 0001:001FF6BF  1028 0001:001FF6D2  1031 0001:001FF6ED
+  1033 0001:001FF701  1034 0001:001FF711  1035 0001:001FF721  1036 0001:001FF731
+  1037 0001:001FF744  1040 0001:001FF75F  1042 0001:001FF769  1043 0001:001FF779
+  1047 0001:001FF793  1048 0001:001FF7A3  1050 0001:001FF7BB  1051 0001:001FF7CB
+  1052 0001:001FF7DB  1053 0001:001FF7EE  1056 0001:001FF804  1060 0001:001FF958
+  1062 0001:001FF964  1063 0001:001FF96E  1064 0001:001FF978  1065 0001:001FF988
+  1066 0001:001FF993  1069 0001:001FF998  1071 0001:001FF9B7  1073 0001:001FF9C8
+  1074 0001:001FF9E6  1076 0001:001FF9F6  1077 0001:001FFA01  1084 0001:001FFA30
+  1085 0001:001FFA33  1086 0001:001FFA49  1087 0001:001FFA62  1088 0001:001FFA75
+  1089 0001:001FFA8B  1092 0001:001FFAAC  1093 0001:001FFAAF  1094 0001:001FFAC5
+  1095 0001:001FFADE  1096 0001:001FFAF1  1097 0001:001FFB07  1099 0001:001FFB38
+  1100 0001:001FFB5B  1101 0001:001FFBC3  1102 0001:001FFBFA  1103 0001:001FFC08
+  1104 0001:001FFC4F  1105 0001:001FFC62  1106 0001:001FFC6B  1107 0001:001FFC76
+  1109 0001:001FFC7F  1110 0001:001FFC88  1112 0001:001FFC91  1114 0001:001FFC98
+  1121 0001:001FFD10  1122 0001:001FFD31  1123 0001:001FFD35  1124 0001:001FFD3F
+  1125 0001:001FFD4E  1126 0001:001FFD5C  1127 0001:001FFD68  1129 0001:001FFD86
+  1130 0001:001FFDC6  1132 0001:001FFDD2  1134 0001:001FFE06  1135 0001:001FFE17
+  1136 0001:001FFE1B  1138 0001:001FFE27  1142 0001:001FFE38  1144 0001:001FFE48
+  1147 0001:001FFEC0  1149 0001:001FFEE3  1150 0001:001FFF1B  1151 0001:001FFF9C
+  1152 0001:001FFFCD  1155 0001:001FFFDE  1156 0001:00200001  1157 0001:00200015
+  1160 0001:00200064  1162 0001:00200070  1163 0001:00200090  1164 0001:002000AC
+  1165 0001:002000B7  1167 0001:002000C3  1168 0001:002000E7  1169 0001:00200101
+  1173 0001:0020013B  1174 0001:0020014B  1175 0001:0020015B  1177 0001:0020016B
+  1178 0001:0020017B  1181 0001:00200180  1183 0001:0020018C  1184 0001:0020019A
+  1187 0001:002001A0  1189 0001:002001AC  1190 0001:002001BA  1193 0001:002001C0
+  1195 0001:002001DF  1196 0001:002001FD  1199 0001:00200220  1201 0001:0020022C
+  1202 0001:00200241  1203 0001:0020024F  1212 0001:00200254  1213 0001:0020028B
+  1214 0001:0020028F  1215 0001:00200297  1216 0001:002002A6  1217 0001:002002B4
+  1218 0001:002002D2  1219 0001:002002DD  1220 0001:002002E8  1221 0001:002002F5
+  1222 0001:00200300  1223 0001:0020030F  1224 0001:00200364  1225 0001:00200372
+  1226 0001:00200393  1228 0001:0020039F  1229 0001:002003A9  1230 0001:002003B1
+  1233 0001:002003B8  1235 0001:002003D2  1237 0001:002003E2  1240 0001:00200454
+  1242 0001:00200460  1243 0001:00200475  1246 0001:0020047C  1248 0001:00200488
+  1249 0001:0020049D  1253 0001:002004A4  1255 0001:002004B3  1258 0001:002004CB
+  1259 0001:002004D3  1260 0001:002004DD  1264 0001:002004FA  1265 0001:00200502
+  1268 0001:0020050F  1270 0001:00200519  1274 0001:00200520  1276 0001:0020052F
+  1277 0001:00200539  1280 0001:00200540  1281 0001:0020054C  1282 0001:00200563
+  1283 0001:00200588  1286 0001:0020058C  1287 0001:00200598  1288 0001:002005A3
+  1289 0001:002005AE  1293 0001:002005B4  1295 0001:002005C3  1297 0001:002005CF
+  1298 0001:002005D5  1299 0001:002005FD  1300 0001:00200603  1301 0001:00200629
+  1303 0001:00200633  1304 0001:0020063C  1305 0001:00200662  1307 0001:0020066A
+  1313 0001:00200670  1316 0001:00200692  1317 0001:002006A7  1318 0001:002006BD
+  1319 0001:002006D2  1320 0001:002006E8  1322 0001:002006F7  1323 0001:0020070A
+  1326 0001:0020071C  1327 0001:0020072D  1329 0001:00200742  1330 0001:00200755
+  1331 0001:0020075F  1334 0001:00200769  1335 0001:0020077D  1336 0001:00200786
+  1339 0001:002007CA  1340 0001:002007D4  1341 0001:002007E7  1346 0001:002007F7
+  1350 0001:0020098C  1354 0001:0020099B  1355 0001:002009C6  1356 0001:002009D2
+  1357 0001:002009DA  1360 0001:002009E8  1362 0001:002009F7  1363 0001:00200A03
+  1364 0001:00200A09  1368 0001:00200A10  1372 0001:00200A1F  1373 0001:00200A29
+  1374 0001:00200A3B  1376 0001:00200A47  1377 0001:00200A4F  1381 0001:00200A58
+  1383 0001:00200A67  1384 0001:00200A71  1391 0001:00200A78  1393 0001:00200A9C
+  1394 0001:00200AAB  1395 0001:00200AB3  1396 0001:00200AC0  1397 0001:00200ACD
+  1398 0001:00200AD9  1399 0001:00200AF9  1400 0001:00200B03  1402 0001:00200B10
+  1403 0001:00200B41  1404 0001:00200B63  1406 0001:00200B7A  1407 0001:00200B86
+  1411 0001:00200BD9  1412 0001:00200BEB  1415 0001:00200C09  1417 0001:00200C1A
+  1418 0001:00200C3C  1419 0001:00200C5E  1423 0001:00200C92  1424 0001:00200C99
+  1427 0001:00200D5C  1428 0001:00200D68  1429 0001:00200D73  1430 0001:00200D89
+  1436 0001:00200D90  1437 0001:00200DBD  1438 0001:00200DCC  1439 0001:00200DD4
+  1440 0001:00200DDC  1441 0001:00200DEC  1442 0001:00200DF7  1443 0001:00200E02
+  1444 0001:00200E38  1451 0001:00200E84  1453 0001:00200EB0  1454 0001:00200EBF
+  1455 0001:00200EC7  1456 0001:00200ED6  1457 0001:00200EDE  1459 0001:00200EEE
+  1460 0001:00200EF9  1461 0001:00200F04  1462 0001:00200F24  1463 0001:00200F44
+  1464 0001:00200F72  1466 0001:00200F79  1467 0001:00200F85  1468 0001:00200FD5
+  1469 0001:00200FFB  1470 0001:00201067  1471 0001:0020108D  1472 0001:002010F9
+  1473 0001:0020111F  1475 0001:00201197  1478 0001:00201230  1479 0001:0020123F
+  1480 0001:0020124D  1481 0001:00201261  1484 0001:00201268  1485 0001:00201274
+  1486 0001:0020127F  1487 0001:00201287  1492 0001:0020128C  1493 0001:00201293
+  1494 0001:002012BC  1495 0001:002012E5
+
+Line numbers for fODConsult(Consults\fODConsult.pas) segment .itext
+
+  1497 0002:000013FC
+
+Line numbers for fODValidateAction(Orders\fODValidateAction.pas) segment .text
+
+    55 0001:0020166C    56 0001:002016A2    57 0001:002016B9    58 0001:002016C5
+    60 0001:002016D4    61 0001:002016E1    62 0001:002016F4    64 0001:00201707
+    66 0001:00201716    67 0001:00201723    68 0001:00201736    70 0001:00201749
+    72 0001:0020175B    73 0001:002017CA    70 0001:002017CB    74 0001:002017CE
+    76 0001:002017E0    77 0001:00201804    74 0001:00201805    78 0001:00201808
+    80 0001:00201814    81 0001:00201824    82 0001:00201834    84 0001:0020184E
+    85 0001:00201853    86 0001:0020185E    87 0001:0020186C    97 0001:00201A10
+    99 0001:00201A4B   101 0001:00201A54   102 0001:00201A60   103 0001:00201A6E
+   104 0001:00201A88   105 0001:00201A9A   106 0001:00201AAC   107 0001:00201AB1
+   109 0001:00201AB3   110 0001:00201ACC   111 0001:00201ADD   112 0001:00201AED
+   107 0001:00201AEE   113 0001:00201AF3   115 0001:00201B07   116 0001:00201B3E
+   117 0001:00201B65   119 0001:00201B67   120 0001:00201B7D   121 0001:00201B9F
+   122 0001:00201BB0   123 0001:00201BB4   124 0001:00201BBF   125 0001:00201BC4
+   126 0001:00201BCF   127 0001:00201BFF   128 0001:00201C10   129 0001:00201C14
+   117 0001:00201C15   132 0001:00201C1E   140 0001:00201C58   142 0001:00201C84
+   143 0001:00201C91   144 0001:00201C96   146 0001:00201CB6   147 0001:00201CEA
+   149 0001:00201D0E   150 0001:00201D1C   151 0001:00201D38   152 0001:00201D47
+   155 0001:00201D7F   156 0001:00201D8D   157 0001:00201DAC   158 0001:00201DBB
+   160 0001:00201DF1   161 0001:00201DFC   162 0001:00201E09   164 0001:00201E13
+   165 0001:00201E18   169 0001:00201E50   170 0001:00201E55   173 0001:00201E58
+   174 0001:00201E5B   175 0001:00201E66   176 0001:00201E78   180 0001:00201E7C
+   182 0001:00201E7F   183 0001:00201E8B   184 0001:00201E92   185 0001:00201E9E
+   186 0001:00201EAC   191 0001:00201EB0   192 0001:00201ED0   194 0001:00201ED9
+   195 0001:00201EE6   196 0001:00201EF1   197 0001:00201EFC   198 0001:00201F12
+   197 0001:00201F82   199 0001:00201F87   200 0001:00201F92   202 0001:00201F9F
+   210 0001:00201FD4   212 0001:00201FF7   213 0001:00202004   214 0001:00202009
+   216 0001:00202029   217 0001:00202050   218 0001:0020205E   219 0001:0020207A
+   220 0001:00202089   222 0001:002020C1   223 0001:002020CE   225 0001:002020D8
+   226 0001:002020DD   235 0001:0020210C   237 0001:0020213A   239 0001:00202140
+   240 0001:0020214C   241 0001:0020215A   242 0001:00202174   243 0001:00202185
+   244 0001:00202197   245 0001:002021A9   247 0001:002021B9   248 0001:002021E0
+   249 0001:00202210   250 0001:00202221   253 0001:00202225   256 0001:00202254
+   257 0001:00202257   258 0001:00202263   259 0001:0020227D   261 0001:002022AD
+
+Line numbers for fODAuto(Orders\fODAuto.pas) segment .text
+
+    31 0001:00202434    33 0001:00202439    43 0001:0020243C    44 0001:00202461
+    45 0001:0020246B    46 0001:00202473    47 0001:00202483    48 0001:0020249C
+    49 0001:002024A9    50 0001:002024B9    52 0001:002024CD    53 0001:002024F6
+    54 0001:00202502    55 0001:00202532    56 0001:00202562    58 0001:00202564
+    59 0001:00202568    61 0001:0020257F    63 0001:0020258C    64 0001:00202592
+    67 0001:002025B5    68 0001:002025C4    69 0001:002025D2    70 0001:002025F6
+    71 0001:002025FE    73 0001:00202634    77 0001:00202644    82 0001:002026D0
+    83 0001:00202700    84 0001:0020270B    85 0001:00202712    86 0001:0020271C
+    87 0001:00202734    88 0001:00202742    89 0001:00202750    90 0001:00202757
+    92 0001:002027DE
+
+Line numbers for fOMVerify(Orders\fOMVerify.pas) segment .text
+
+    44 0001:002029F8    45 0001:00202A20    46 0001:00202A24    48 0001:00202A3E
+    50 0001:00202A44    52 0001:00202A56    54 0001:00202A8F    55 0001:00202A9C
+    56 0001:00202AA0    58 0001:00202AA2    50 0001:00202AA3    59 0001:00202AA6
+    46 0001:00202AA9    60 0001:00202AAE    62 0001:00202ADC    63 0001:00202AEC
+    64 0001:00202AFA    65 0001:00202B06    66 0001:00202B12    67 0001:00202B1E
+    68 0001:00202B2A    69 0001:00202B36    70 0001:00202B4D    71 0001:00202B5B
+    72 0001:00202B63    74 0001:00202B67    75 0001:00202B76    77 0001:00202B8A
+    78 0001:00202B94    79 0001:00202B98    84 0001:00202BB9    85 0001:00202BFB
+    86 0001:00202C03    87 0001:00202C10    88 0001:00202C30    89 0001:00202C3B
+    92 0001:00202C56    94 0001:00202C66   100 0001:00202CC4   101 0001:00202CCE
+   106 0001:00202CD0   107 0001:00202CDA   108 0001:00202CDF   113 0001:00202CE0
+   114 0001:00202CE8   115 0001:00202CED   120 0001:00202CF0   121 0001:00202CFA
+   122 0001:00202CFF   128 0001:00202D00   129 0001:00202D05   133 0001:00202D08
+   135 0001:00202D15   137 0001:00202D1B   139 0001:00202D21   140 0001:00202D46
+   142 0001:00202D4D   144 0001:00202D53   145 0001:00202D78   148 0001:00202D7D
+   149 0001:00202D83   150 0001:00202DA8   152 0001:00202DAD   154 0001:00202DE2
+
+Line numbers for fOrdersTS(Orders\fOrdersTS.pas) segment .text
+
+    77 0001:00203168    78 0001:00203192    79 0001:002031AB    80 0001:002031E2
+    81 0001:0020321E    83 0001:00203228    84 0001:00203237    85 0001:00203246
+    86 0001:00203258    87 0001:00203266    88 0001:00203270    89 0001:0020328E
+    91 0001:002032A8    92 0001:002032B5    93 0001:002032C2    96 0001:0020330B
+    97 0001:00203318    99 0001:0020335E   101 0001:00203390   102 0001:002033A8
+   103 0001:002033AC   104 0001:002033C1   106 0001:002033C8   107 0001:002033CE
+   110 0001:002033E5   111 0001:002033F7   112 0001:0020340C   114 0001:00203421
+   115 0001:00203436   116 0001:00203443   118 0001:00203451   119 0001:00203456
+   120 0001:0020345E   121 0001:00203463   122 0001:0020346B   123 0001:0020347C
+   125 0001:0020348B   127 0001:002034B8   128 0001:002034F1   129 0001:00203513
+   130 0001:00203535   131 0001:00203544   133 0001:00203571   134 0001:0020358F
+   135 0001:00203594   137 0001:0020359D   138 0001:002035CF   139 0001:002035D4
+   140 0001:002035EB   142 0001:002035F8   143 0001:00203600   144 0001:0020360A
+   145 0001:0020361B   146 0001:0020362D   147 0001:00203656   148 0001:00203676
+   149 0001:0020369F   150 0001:002036CC   153 0001:002036E8   154 0001:002036F2
+   155 0001:002036FE   156 0001:0020370D   158 0001:00203725   161 0001:00203844
+   163 0001:00203847   164 0001:00203854   165 0001:00203861   166 0001:00203868
+   167 0001:0020386F   168 0001:00203876   169 0001:0020387D   170 0001:00203888
+   173 0001:0020388C   175 0001:0020388F   177 0001:0020389B   178 0001:002038AC
+   180 0001:002038AE   182 0001:002038D8   183 0001:002038E9   185 0001:002038EB
+   187 0001:0020390C   188 0001:00203917   190 0001:00203926   191 0001:0020392D
+   192 0001:00203934   195 0001:00203936   196 0001:0020393D   197 0001:00203944
+   198 0001:0020394B   203 0001:002039C8   204 0001:002039CF   205 0001:002039D4
+   208 0001:002039D8   210 0001:002039DB   211 0001:002039E8   212 0001:002039F3
+   213 0001:00203A00   216 0001:00203A04   218 0001:00203A07   219 0001:00203A14
+   222 0001:00203A2A   223 0001:00203A31   224 0001:00203A38   228 0001:00203A41
+   229 0001:00203A57   230 0001:00203A5E   231 0001:00203A6E   233 0001:00203A7E
+   236 0001:00203AE4   238 0001:00203AE7   239 0001:00203AF2   240 0001:00203AF9
+   241 0001:00203B0F   244 0001:00203B14   245 0001:00203B17   246 0001:00203B1E
+   248 0001:00203B2A   249 0001:00203B3B   251 0001:00203B3D   253 0001:00203B67
+   254 0001:00203B78   256 0001:00203B7A   257 0001:00203B81   258 0001:00203B88
+   259 0001:00203B8F   262 0001:00203C0C   264 0001:00203C2A   265 0001:00203C59
+   266 0001:00203C62   270 0001:00203C90   272 0001:00203C93   273 0001:00203C98
+   274 0001:00203C9B   277 0001:00203CA0   279 0001:00203CA3   280 0001:00203CAE
+   282 0001:00203CBD   283 0001:00203CC4   286 0001:00203CCB   290 0001:00203CD0
+   291 0001:00203CD9   292 0001:00203CE7   293 0001:00203CED   294 0001:00203CF6
+   296 0001:00203D2A
+
+Line numbers for fMedCopy(fMedCopy.pas) segment .text
+
+    74 0001:002040B4    75 0001:002040D9    76 0001:002040E5    78 0001:00204106
+    80 0001:00204142    81 0001:00204159    83 0001:0020415B    76 0001:0020415C
+    84 0001:0020415F    89 0001:00204188    90 0001:002041C9    91 0001:002041D4
+    92 0001:002041E2    93 0001:002041F0    94 0001:00204207    95 0001:00204215
+    96 0001:00204223    98 0001:0020425C    99 0001:0020428B   101 0001:00204290
+   102 0001:00204294   103 0001:00204297   104 0001:0020429C   105 0001:002042A4
+   107 0001:002042A9   108 0001:002042AD   109 0001:002042C6   110 0001:002042D4
+   112 0001:002042E6   113 0001:002042FB   115 0001:0020430D   116 0001:00204317
+   117 0001:00204321   118 0001:00204346   119 0001:00204356   121 0001:00204368
+   122 0001:00204375   123 0001:00204382   126 0001:002043D0   127 0001:002043DD
+   129 0001:00204423   131 0001:00204455   132 0001:0020445F   133 0001:00204470
+   134 0001:00204480   135 0001:0020448F   136 0001:002044BA   137 0001:002044E5
+   139 0001:002044EA   140 0001:002044FC   142 0001:00204506   143 0001:00204513
+   145 0001:00204538   146 0001:00204554   147 0001:0020455E   148 0001:00204566
+   149 0001:0020457F   151 0001:00204588   153 0001:002045B5   154 0001:002045EE
+   155 0001:00204610   156 0001:00204632   158 0001:0020465F   159 0001:0020467D
+   161 0001:00204686   162 0001:002046B8   163 0001:002046BD   164 0001:002046D4
+   166 0001:002046E1   167 0001:002046E9   168 0001:002046EF   170 0001:00204705
+   171 0001:0020470B   173 0001:00204714   174 0001:00204722   177 0001:00204732
+   179 0001:00204745   180 0001:0020475B   182 0001:00204769   183 0001:00204780
+   184 0001:0020478E   185 0001:00204792   187 0001:0020479C   189 0001:002047C4
+   190 0001:002047CA   191 0001:002047E9   192 0001:00204800   193 0001:00204814
+   195 0001:00204838   196 0001:00204840   197 0001:00204844   201 0001:00204853
+   202 0001:0020485B   203 0001:00204868   206 0001:0020486C   208 0001:00204884
+   209 0001:00204892   210 0001:002048A0   212 0001:002048AE   215 0001:002048BF
+   216 0001:002048CF   218 0001:002048E1   221 0001:00204A90   223 0001:00204A93
+   224 0001:00204A9A   225 0001:00204AA1   226 0001:00204AA9   227 0001:00204AB9
+   228 0001:00204AC6   229 0001:00204AD3   230 0001:00204ADA   235 0001:00204ADC
+   237 0001:00204AFB   238 0001:00204B04   240 0001:00204B2E   241 0001:00204B3F
+   243 0001:00204B44   245 0001:00204B75   246 0001:00204B7D   247 0001:00204B84
+   248 0001:00204B8C   250 0001:00204B9C   252 0001:00204BCD   253 0001:00204BD4
+   254 0001:00204BDC   256 0001:00204BEE   257 0001:00204BF5   258 0001:00204BFC
+   263 0001:00204C90   264 0001:00204C94   265 0001:00204CA0   267 0001:00204CAC
+   268 0001:00204CC0   269 0001:00204CD7   271 0001:00204CE0   272 0001:00204CED
+   273 0001:00204CF6   275 0001:00204D02   277 0001:00204D05   278 0001:00204D12
+   279 0001:00204D1B   284 0001:00204D20   285 0001:00204D25   292 0001:00204D28
+   294 0001:00204D40   295 0001:00204D7C   296 0001:00204D87   298 0001:00204DA0
+   299 0001:00204DAE   302 0001:00204DC0   304 0001:00204DCD   305 0001:00204DD4
+   308 0001:00204EE0   310 0001:00204EE3   311 0001:00204EF0   312 0001:00204EF7
+   315 0001:00204EFC   317 0001:00204EFF   318 0001:00204F0A   319 0001:00204F20
+   323 0001:00204F24   324 0001:00204F31   327 0001:00204F34   328 0001:00204F52
+   329 0001:00204F81   330 0001:00204F8A   333 0001:00204FB8   334 0001:00204FBB
+   335 0001:00204FC6   337 0001:00204FD5   338 0001:00204FDC   341 0001:00204FE3
+   345 0001:00204FE8   346 0001:00204FF1   347 0001:00204FFF   348 0001:00205005
+   349 0001:0020500E   351 0001:00205042
+
+Line numbers for mEvntDelay(mEvntDelay.pas) segment .text
+
+    64 0001:0020528C    65 0001:0020529E    66 0001:002052A7    67 0001:002052B0
+    68 0001:002052B7    69 0001:002052BE    70 0001:002052C5    71 0001:002052CC
+    72 0001:002052D4    73 0001:002052DC    84 0001:002052F8    86 0001:0020531B
+    87 0001:0020532B    88 0001:00205338    89 0001:0020533C    91 0001:00205340
+    92 0001:0020534D    94 0001:00205368    95 0001:0020537C    97 0001:00205393
+    98 0001:002053A4   100 0001:002053B1   101 0001:002053BB   102 0001:002053E0
+   103 0001:002053EC   105 0001:002053F0   107 0001:00205403   109 0001:0020541E
+   111 0001:00205463   112 0001:00205478   114 0001:0020547A   107 0001:0020547B
+   116 0001:00205480   118 0001:00205494   119 0001:0020549B   120 0001:002054B0
+   121 0001:002054CA   122 0001:002054E4   123 0001:002054F4   124 0001:00205512
+   125 0001:0020551A   128 0001:00205521   130 0001:00205540   132 0001:0020555B
+   134 0001:002055A0   135 0001:002055B5   137 0001:002055B7   130 0001:002055B8
+   139 0001:002055BD   141 0001:002055D1   142 0001:002055E6   143 0001:00205600
+   144 0001:0020561C   145 0001:0020562C   146 0001:0020564A   148 0001:00205652
+   152 0001:002056FC   153 0001:00205703   154 0001:0020570B   155 0001:00205713
+   156 0001:0020571A   157 0001:00205721   158 0001:00205728   163 0001:0020572C
+   164 0001:00205748   165 0001:0020575E   166 0001:00205765   167 0001:0020579B
+   169 0001:002057C1   172 0001:00205812   173 0001:00205819   174 0001:00205830
+   177 0001:0020583E   183 0001:002058E0   184 0001:00205903   185 0001:0020592A
+   187 0001:0020593D   188 0001:00205956   189 0001:0020596A   191 0001:00205989
+   192 0001:002059A4   193 0001:002059C0   195 0001:002059D3   196 0001:002059E3
+   197 0001:002059F0   198 0001:00205A1A   199 0001:00205A36   200 0001:00205A66
+   202 0001:00205A68   189 0001:00205A69   204 0001:00205A72   211 0001:00205AC0
+   213 0001:00205AE3   215 0001:00205AF5   216 0001:00205B2B   217 0001:00205B61
+   220 0001:00205B74   221 0001:00205B7C   222 0001:00205B84   224 0001:00205B8B
+   226 0001:00205B9A   227 0001:00205BA7   228 0001:00205BB7   229 0001:00205BC7
+   231 0001:00205BEA   232 0001:00205BF7   233 0001:00205C09   235 0001:00205C41
+   236 0001:00205C49   238 0001:00205C66   239 0001:00205C6F   240 0001:00205C76
+   242 0001:00205C98   244 0001:00205CD4   245 0001:00205CEB   247 0001:00205CF7
+   240 0001:00205CF8   248 0001:00205CFD   250 0001:00205D04   253 0001:00205D40
+   256 0001:00205D96   257 0001:00205D9D   258 0001:00205DB4   261 0001:00205DC7
+   262 0001:00205DE0   263 0001:00205DFB   264 0001:00205E14   265 0001:00205E2F
+   266 0001:00205E48   269 0001:00205E63   270 0001:00205E74   273 0001:002060B0
+   274 0001:002060C7   275 0001:002060F1   279 0001:00206114   280 0001:0020612E
+   282 0001:00206157   283 0001:0020618C   284 0001:002061A9   285 0001:002061C7
+   287 0001:002061E6   288 0001:002061FA   289 0001:00206224   291 0001:0020623D
+   298 0001:00206264   299 0001:0020627D   301 0001:00206295   302 0001:002062A0
+   304 0001:002062A7   306 0001:002062AD   307 0001:002062BB   308 0001:002062CB
+   309 0001:002062F2   310 0001:00206300   312 0001:00206315
+
+Line numbers for mEvntDelay(mEvntDelay.pas) segment .itext
+
+   314 0002:00001404   315 0002:0000140D   317 0002:00001417
+
+Line numbers for fOrdersCopy(Orders\fOrdersCopy.pas) segment .text
+
+    65 0001:00206714    66 0001:00206739    67 0001:00206745    69 0001:00206766
+    71 0001:002067A2    72 0001:002067B9    74 0001:002067BB    67 0001:002067BC
+    75 0001:002067BF    80 0001:002067E8    81 0001:00206829    82 0001:00206834
+    83 0001:00206842    84 0001:00206850    85 0001:00206867    86 0001:00206875
+    87 0001:00206883    93 0001:002068BC    94 0001:002068EB    95 0001:002068F0
+    97 0001:0020691B    98 0001:0020694B   100 0001:0020698A   101 0001:002069C7
+   103 0001:002069C9    95 0001:002069CC   104 0001:002069D5   106 0001:00206A10
+   107 0001:00206A49   108 0001:00206A4D   109 0001:00206A51   110 0001:00206A56
+   111 0001:00206A5E   112 0001:00206A63   113 0001:00206A6B   114 0001:00206A70
+   115 0001:00206A7F   117 0001:00206A83   118 0001:00206A9C   119 0001:00206AAA
+   120 0001:00206AB4   121 0001:00206ABE   122 0001:00206AE3   123 0001:00206AF3
+   125 0001:00206B05   127 0001:00206B12   128 0001:00206B1F   131 0001:00206B68
+   132 0001:00206B75   134 0001:00206BBB   136 0001:00206BED   137 0001:00206BF7
+   138 0001:00206C04   140 0001:00206C29   141 0001:00206C40   142 0001:00206C4E
+   144 0001:00206C52   146 0001:00206C7F   147 0001:00206CB8   148 0001:00206CDB
+   149 0001:00206CFD   151 0001:00206D2A   152 0001:00206D4A   154 0001:00206D51
+   155 0001:00206D83   156 0001:00206D88   157 0001:00206D9F   159 0001:00206DAC
+   160 0001:00206DB4   161 0001:00206DD8   163 0001:00206DE7   164 0001:00206DED
+   165 0001:00206DF2   166 0001:00206DFD   167 0001:00206E00   168 0001:00206E04
+   170 0001:00206E0E   171 0001:00206E11   173 0001:00206E27   174 0001:00206E2A
+   176 0001:00206E33   177 0001:00206E41   180 0001:00206E4E   182 0001:00206E61
+   183 0001:00206E74   185 0001:00206E83   186 0001:00206E9A   187 0001:00206EA8
+   188 0001:00206EAC   190 0001:00206EB6   192 0001:00206EDE   193 0001:00206EE1
+   194 0001:00206F00   195 0001:00206F14   196 0001:00206F2A   198 0001:00206F53
+   199 0001:00206F5B   200 0001:00206F5F   204 0001:00206F6E   205 0001:00206F76
+   206 0001:00206F83   208 0001:00206F87   209 0001:00206F8F   210 0001:00206F9A
+   212 0001:00206FAC   213 0001:00206FB2   214 0001:00206FB5   215 0001:00206FB9
+   217 0001:00206FC0   219 0001:00206FD8   220 0001:00206FE6   221 0001:00206FF4
+   223 0001:00207002   226 0001:00207013   227 0001:00207023   229 0001:00207035
+   232 0001:0020716C   234 0001:0020716F   235 0001:0020717F   236 0001:00207186
+   238 0001:00207193   240 0001:002071A0   241 0001:002071A7   244 0001:002071AC
+   246 0001:002071AF   248 0001:002071D9   249 0001:002071EA   251 0001:002071EC
+   253 0001:002071FE   254 0001:00207206   255 0001:0020721D   257 0001:0020722B
+   258 0001:00207232   259 0001:00207239   264 0001:00207284   265 0001:00207288
+   266 0001:00207294   268 0001:002072A0   269 0001:002072B4   270 0001:002072CB
+   272 0001:002072D4   273 0001:002072E1   274 0001:002072EA   276 0001:002072F6
+   278 0001:002072F9   279 0001:00207306   280 0001:0020730F   285 0001:00207314
+   286 0001:00207319   289 0001:0020731C   291 0001:00207334   292 0001:00207346
+   293 0001:00207356   294 0001:00207366   295 0001:00207373   296 0001:002073AF
+   297 0001:002073BA   298 0001:002073C1   301 0001:002073E8   303 0001:002073EB
+   304 0001:002073FD   305 0001:0020740D   306 0001:0020741D   307 0001:0020742A
+   308 0001:00207431   312 0001:00207434   314 0001:00207437   315 0001:00207444
+   316 0001:00207449   317 0001:0020745F   321 0001:00207464   322 0001:00207471
+   326 0001:00207474   328 0001:00207492   329 0001:002074C1   330 0001:002074CA
+   333 0001:002074F8   334 0001:002074FB   335 0001:00207506   337 0001:00207515
+   338 0001:0020751C   341 0001:00207523   345 0001:00207528   346 0001:00207531
+   347 0001:0020753F   348 0001:00207545   349 0001:0020754E   351 0001:00207582
+
+Line numbers for fODChild(Orders\fODChild.pas) segment .text
+
+    39 0001:002077C0    40 0001:002077ED    41 0001:002077FE    42 0001:0020780C
+    43 0001:0020781A    44 0001:00207822    45 0001:00207832    47 0001:00207843
+    48 0001:00207855    47 0001:0020787A    50 0001:0020787D    52 0001:00207883
+    53 0001:00207893    56 0001:002078A6    57 0001:002078B1    60 0001:002078E2
+    63 0001:002078F8    65 0001:00207908    69 0001:00207944    70 0001:0020794B
+    78 0001:0020794C    80 0001:00207978    82 0001:0020797E    83 0001:00207988
+    84 0001:0020798C    85 0001:0020799A    86 0001:002079B4    87 0001:002079C5
+    88 0001:002079D7    89 0001:002079E9    91 0001:002079F9    92 0001:00207A1D
+    93 0001:00207A4D    94 0001:00207A5E    97 0001:00207A62   105 0001:00207A90
+   107 0001:00207AB3   108 0001:00207AB5   109 0001:00207AC2   111 0001:00207ADC
+   112 0001:00207AE9   113 0001:00207AEE   114 0001:00207AF2   115 0001:00207AF7
+   116 0001:00207AFC   117 0001:00207B20   118 0001:00207B37   119 0001:00207B45
+   120 0001:00207B52   122 0001:00207B5C   123 0001:00207B61   127 0001:00207B90
+   128 0001:00207B97   129 0001:00207B9C   133 0001:00207BA0   134 0001:00207BA7
+   135 0001:00207BAC   137 0001:00207BDB
+
+Line numbers for fODActive(Orders\fODActive.pas) segment .text
+
+    61 0001:00207E7C    62 0001:00207EB7    63 0001:00207ECD    64 0001:00207ED4
+    65 0001:00207EE8    66 0001:00207EF0    67 0001:00207EF7    68 0001:00207F17
+    69 0001:00207F30    70 0001:00207F67    71 0001:00207F6E    72 0001:00207F82
+    74 0001:00207F8B    75 0001:00207F95    87 0001:00207FEC    88 0001:00207FF7
+    89 0001:00208005    90 0001:00208015    91 0001:00208019    92 0001:00208021
+    93 0001:0020802D    94 0001:0020803C    95 0001:0020804A    96 0001:0020804E
+    97 0001:00208072    96 0001:0020809C    98 0001:0020809F    99 0001:002080CE
+   100 0001:002080F3   101 0001:0020810E   102 0001:00208127   104 0001:00208142
+   105 0001:0020815B   106 0001:0020816B   108 0001:00208198   109 0001:002081A0
+   112 0001:002081BD   114 0001:002081D5   115 0001:002081DD   119 0001:00208254
+   120 0001:00208259   123 0001:0020825C   124 0001:0020825F   125 0001:0020826A
+   126 0001:0020827C   127 0001:0020828E   128 0001:00208299   135 0001:0020829C
+   136 0001:002082C4   137 0001:002082DD   139 0001:002082F9   140 0001:00208305
+   141 0001:00208310   143 0001:00208322   144 0001:00208340   146 0001:002083A7
+   147 0001:002083B7   150 0001:002083B9   152 0001:002083D8   154 0001:002083E8
+   137 0001:002083E9   155 0001:002083F2   156 0001:00208411   157 0001:00208425
+   159 0001:00208442   160 0001:0020844E   161 0001:00208467   157 0001:00208468
+   162 0001:0020846D   165 0001:002084A4   166 0001:002084A7   167 0001:002084B2
+   168 0001:002084BD   169 0001:002084CB   170 0001:002084DC   178 0001:002084E0
+   180 0001:00208503   181 0001:00208508   183 0001:00208522   184 0001:00208532
+   186 0001:0020853A   188 0001:0020854A   189 0001:00208555   192 0001:00208566
+   193 0001:00208576   194 0001:002085B1   195 0001:002085D1   196 0001:002085E1
+   197 0001:0020861C   198 0001:00208649   199 0001:00208658   202 0001:00208663
+   203 0001:00208668   213 0001:002086E4   215 0001:00208719   217 0001:00208722
+   218 0001:0020872E   219 0001:0020873C   220 0001:00208756   221 0001:00208768
+   222 0001:0020877A   223 0001:0020877F   225 0001:00208781   226 0001:0020879A
+   227 0001:002087AB   228 0001:002087BB   223 0001:002087BC   229 0001:002087C1
+   231 0001:002087D5   232 0001:002087E5   234 0001:002087EF   235 0001:00208805
+   236 0001:00208827   237 0001:00208838   239 0001:0020883C   240 0001:00208847
+   242 0001:00208871   243 0001:00208881   245 0001:0020888A   246 0001:0020889A
+   247 0001:002088D5   248 0001:002088F5   249 0001:00208905   250 0001:00208940
+   252 0001:0020896D   253 0001:0020897D   254 0001:00208987   256 0001:002089C7
+   257 0001:00208A05   258 0001:00208A16   259 0001:00208A1A   232 0001:00208A1B
+   262 0001:00208A24   269 0001:00208AA0   270 0001:00208AA9   271 0001:00208AB8
+   273 0001:00208AC0   274 0001:00208ACB   275 0001:00208AD4   276 0001:00208AE4
+   271 0001:00208AE5   277 0001:00208AE8   278 0001:00208AFD   279 0001:00208B05
+   283 0001:00208B0C   285 0001:00208B0F   286 0001:00208B1B   287 0001:00208B22
+   288 0001:00208B2E   289 0001:00208B3C   295 0001:00208B40   296 0001:00208B48
+   298 0001:00208B4E   299 0001:00208B5A   300 0001:00208B65   301 0001:00208B6F
+   303 0001:00208B89   304 0001:00208B99   306 0001:00208BB5   307 0001:00208BC5
+   301 0001:00208BC8   308 0001:00208BCE   309 0001:00208BD9   311 0001:00208BE5
+   317 0001:00208BEC   318 0001:00208C0E   319 0001:00208C13   320 0001:00208C18
+   321 0001:00208C1D   322 0001:00208C3A   323 0001:00208C57   325 0001:00208CAB
+
+Line numbers for fEffectDate(fEffectDate.pas) segment .text
+
+    34 0001:00208EB8    35 0001:00208EC1    36 0001:00208EC5    37 0001:00208EDC
+    38 0001:00208EEA    39 0001:00208EF2    40 0001:00208F13    41 0001:00208F1E
+    43 0001:00208F2A    44 0001:00208F3B    47 0001:00208F4C    49 0001:00208F5C
+    54 0001:00208F6C    55 0001:00208F73    60 0001:00208F74    61 0001:00208F7B
+    62 0001:00208F80    67 0001:00208F84    68 0001:00208F89    70 0001:00208FB8
+
+Line numbers for fODGen(Orders\fODGen.pas) segment .text
+
+    85 0001:00209220    86 0001:00209241    87 0001:00209248    88 0001:0020924F
+    89 0001:00209256    90 0001:0020925F    91 0001:00209266    93 0001:00209270
+    94 0001:00209298    95 0001:002092D4    97 0001:002092DB    98 0001:002092E7
+    99 0001:002092EF   100 0001:00209302   101 0001:00209323   102 0001:00209344
+   103 0001:00209357   104 0001:00209378   105 0001:00209399   106 0001:002093AB
+   107 0001:002093BD   113 0001:00209424   114 0001:00209434   115 0001:00209457
+   117 0001:00209474   120 0001:00209481   121 0001:0020948D   122 0001:002094F0
+   123 0001:002094F7   124 0001:002094FE   125 0001:00209505   126 0001:0020950C
+   127 0001:00209513   128 0001:0020951A   129 0001:00209521   130 0001:00209528
+   132 0001:0020952D   134 0001:00209534   115 0001:00209535   135 0001:0020953C
+   136 0001:00209547   137 0001:00209552   138 0001:00209559   139 0001:00209567
+   145 0001:00209570   146 0001:00209598   147 0001:002095A1   148 0001:002095AB
+   149 0001:002095B9   150 0001:002095C3   151 0001:002095D1   152 0001:002095DF
+   153 0001:002095E6   154 0001:002095ED   163 0001:0020963C   164 0001:00209667
+   165 0001:00209672   167 0001:0020968C   169 0001:00209693   170 0001:002096BE
+   172 0001:002096EE   174 0001:00209711   175 0001:0020971F   176 0001:00209725
+   177 0001:0020972D   178 0001:00209741   180 0001:00209745   181 0001:00209750
+   183 0001:0020976E   185 0001:00209772   186 0001:00209780   187 0001:0020978D
+   188 0001:00209793   189 0001:0020979A   190 0001:002097B6   191 0001:002097C1
+   192 0001:002097DF   195 0001:002097EF   196 0001:00209805   198 0001:0020980B
+   199 0001:0020981D   201 0001:00209821   202 0001:0020982C   205 0001:00209837
+   170 0001:0020983A   206 0001:00209843   208 0001:0020984A   209 0001:00209853
+   210 0001:0020985C   211 0001:00209881   215 0001:002098C4   216 0001:002098C7
+   217 0001:002098CA   222 0001:002098CC   223 0001:002098D6   225 0001:002098DE
+   226 0001:002098FE   229 0001:00209918   230 0001:00209938   232 0001:00209949
+   233 0001:00209952   235 0001:00209962   237 0001:00209973   238 0001:0020997C
+   240 0001:00209989   241 0001:00209990   225 0001:00209991   242 0001:00209998
+   243 0001:002099AF   254 0001:002099B8   255 0001:002099BF   256 0001:002099F0
+   257 0001:00209A03   259 0001:00209A14   260 0001:00209A48   261 0001:00209A53
+   263 0001:00209A76   266 0001:00209A83   267 0001:00209AB6   269 0001:00209ABC
+   270 0001:00209AD4   271 0001:00209AE2   273 0001:00209AFC   275 0001:00209B0E
+   276 0001:00209B19   278 0001:00209B50   280 0001:00209B5A   281 0001:00209B72
+   283 0001:00209B86   284 0001:00209BAD   288 0001:00209BE4   261 0001:00209BE7
+   289 0001:00209BEE   291 0001:00209BF7   292 0001:00209C0A   293 0001:00209C24
+   294 0001:00209C37   295 0001:00209C51   297 0001:00209C78   304 0001:00209D58
+   305 0001:00209D76   306 0001:00209D81   307 0001:00209D8C   308 0001:00209D96
+   309 0001:00209D9E   310 0001:00209DC3   309 0001:00209DEE   311 0001:00209DF3
+   312 0001:00209E02   314 0001:00209E25   315 0001:00209E32   317 0001:00209E3B
+   319 0001:00209E67   321 0001:00209E87   324 0001:00209EB3   325 0001:00209EC1
+   326 0001:00209ECC   327 0001:00209ED3   328 0001:00209EDA   329 0001:00209EEE
+   330 0001:00209F4A   331 0001:00209F57   332 0001:00209F64   333 0001:00209F71
+   334 0001:00209F7E   335 0001:00209F8B   336 0001:00209F98   337 0001:00209FA5
+   338 0001:00209FB2   340 0001:00209FBD   341 0001:00209FCA   342 0001:00209FE0
+   312 0001:00209FE3   343 0001:00209FEC   348 0001:0020A020   351 0001:0020A02A
+   352 0001:0020A03D   353 0001:0020A04A   354 0001:0020A076   355 0001:0020A090
+   356 0001:0020A0BA   357 0001:0020A0C5   358 0001:0020A0D5   359 0001:0020A0E0
+   360 0001:0020A0FA   361 0001:0020A10D   362 0001:0020A118   364 0001:0020A130
+   367 0001:0020A150   370 0001:0020A173   371 0001:0020A186   372 0001:0020A193
+   375 0001:0020A1D1   376 0001:0020A1FB   377 0001:0020A209   378 0001:0020A21C
+   379 0001:0020A22A   380 0001:0020A247   381 0001:0020A25A   382 0001:0020A266
+   384 0001:0020A27E   389 0001:0020A2A4   392 0001:0020A2AE   393 0001:0020A2C1
+   394 0001:0020A2CE   395 0001:0020A2FC   396 0001:0020A309   397 0001:0020A314
+   398 0001:0020A331   399 0001:0020A33C   400 0001:0020A356   401 0001:0020A369
+   402 0001:0020A374   404 0001:0020A38C   411 0001:0020A3A0   414 0001:0020A3C7
+   415 0001:0020A3DB   416 0001:0020A3EB   417 0001:0020A3F5   418 0001:0020A3FF
+   419 0001:0020A40C   420 0001:0020A446   422 0001:0020A454   423 0001:0020A467
+   424 0001:0020A483   425 0001:0020A4C1   426 0001:0020A4D2   427 0001:0020A4E2
+   429 0001:0020A4F0   430 0001:0020A503   431 0001:0020A520   432 0001:0020A536
+   433 0001:0020A543   435 0001:0020A564   440 0001:0020A5B4   443 0001:0020A5BF
+   444 0001:0020A5D2   445 0001:0020A5DF   446 0001:0020A5E9   447 0001:0020A5F3
+   448 0001:0020A600   449 0001:0020A62E   450 0001:0020A641   451 0001:0020A654
+   453 0001:0020A662   454 0001:0020A675   455 0001:0020A692   456 0001:0020A6A5
+   457 0001:0020A6B1   459 0001:0020A6C9   468 0001:0020A6FC   471 0001:0020A727
+   472 0001:0020A735   473 0001:0020A74C   474 0001:0020A777   475 0001:0020A795
+   476 0001:0020A7B6   477 0001:0020A7E6   478 0001:0020A803   479 0001:0020A816
+   480 0001:0020A823   481 0001:0020A82D   482 0001:0020A837   483 0001:0020A844
+   485 0001:0020A84E   487 0001:0020A881   489 0001:0020A8AF   490 0001:0020A8BE
+   491 0001:0020A8ED   492 0001:0020A8FB   494 0001:0020A90B   496 0001:0020A91E
+   497 0001:0020A925   498 0001:0020A93D   500 0001:0020A96E   501 0001:0020A974
+   502 0001:0020A976   497 0001:0020A979   503 0001:0020A97E   504 0001:0020A984
+   506 0001:0020A991   508 0001:0020A996   509 0001:0020A9A4   512 0001:0020A9AF
+   513 0001:0020A9C2   514 0001:0020A9D4   516 0001:0020A9E6   517 0001:0020A9F9
+   518 0001:0020AA27   519 0001:0020AA35   520 0001:0020AA43   521 0001:0020AA60
+   522 0001:0020AA73   524 0001:0020AACD   525 0001:0020AADF   526 0001:0020AAE4
+   527 0001:0020AB12   529 0001:0020AB1C   530 0001:0020AB28   532 0001:0020AB40
+   538 0001:0020ABE8   540 0001:0020AC08   541 0001:0020AC20   542 0001:0020AC33
+   543 0001:0020AC46   544 0001:0020AC64   545 0001:0020AC82   550 0001:0020ACB0
+   553 0001:0020ACBA   554 0001:0020ACCD   555 0001:0020ACDA   558 0001:0020AD18
+   559 0001:0020AD23   560 0001:0020AD33   561 0001:0020AD3E   562 0001:0020AD58
+   563 0001:0020AD62   564 0001:0020AD75   565 0001:0020AD80   567 0001:0020AD9D
+   570 0001:0020ADA4   571 0001:0020ADAA   572 0001:0020ADB5   573 0001:0020ADC0
+   576 0001:0020ADC4   579 0001:0020ADCE   580 0001:0020ADE1   581 0001:0020ADEE
+   582 0001:0020ADF9   583 0001:0020AE03   584 0001:0020AE2A   585 0001:0020AE34
+   587 0001:0020AE3E   593 0001:0020AE44   594 0001:0020AE60   595 0001:0020AE69
+   596 0001:0020AE73   597 0001:0020AE81   598 0001:0020AEA0   599 0001:0020AEB0
+   600 0001:0020AED7   596 0001:0020AED8   601 0001:0020AEDD   604 0001:0020AF08
+   605 0001:0020AF0B   606 0001:0020AF12   607 0001:0020AF1E   608 0001:0020AF25
+   613 0001:0020AF28   615 0001:0020AF4A   616 0001:0020AF57   618 0001:0020AF84
+   619 0001:0020AFE0   621 0001:0020B022   622 0001:0020B058   623 0001:0020B078
+   624 0001:0020B0AE   625 0001:0020B0EF   626 0001:0020B125   627 0001:0020B163
+   628 0001:0020B18C   630 0001:0020B1C8   616 0001:0020B1CB   631 0001:0020B1D2
+   632 0001:0020B1EE   634 0001:0020B2C2
+
+Line numbers for fOMNavA(Orders\fOMNavA.pas) segment .text
+
+   118 0001:0020B6DC   119 0001:0020B6E1   121 0001:0020B6E7   123 0001:0020B706
+   124 0001:0020B713   125 0001:0020B720   121 0001:0020B721   125 0001:0020B724
+   121 0001:0020B725   126 0001:0020B72A   127 0001:0020B736   128 0001:0020B742
+   130 0001:0020B74F   137 0001:0020B758   138 0001:0020B762   139 0001:0020B764
+   142 0001:0020B768   143 0001:0020B777   144 0001:0020B781   140 0001:0020B782
+   146 0001:0020B791   148 0001:0020B795   149 0001:0020B7A3   150 0001:0020B7A9
+   151 0001:0020B7B8   152 0001:0020B7C2   153 0001:0020B7CF   155 0001:0020B7D1
+   163 0001:0020B7DC   164 0001:0020B7E5   165 0001:0020B7EC   166 0001:0020B7FB
+   167 0001:0020B803   168 0001:0020B811   169 0001:0020B81F   170 0001:0020B82D
+   171 0001:0020B853   173 0001:0020B86E   174 0001:0020B87C   176 0001:0020B882
+   177 0001:0020B899   179 0001:0020B8A7   180 0001:0020B8B7   183 0001:0020B8C5
+   171 0001:0020B8C8   184 0001:0020B8CB   185 0001:0020B8E0   186 0001:0020B8FD
+   192 0001:0020B904   193 0001:0020B912   194 0001:0020B920   195 0001:0020B938
+   196 0001:0020B93D   197 0001:0020B943   198 0001:0020B949   199 0001:0020B94E
+   200 0001:0020B95B   201 0001:0020B961   202 0001:0020B968   203 0001:0020B96F
+   204 0001:0020B97A   205 0001:0020B983   212 0001:0020B98C   213 0001:0020B990
+   214 0001:0020B9A3   215 0001:0020B9B5   216 0001:0020B9CE   217 0001:0020B9FC
+   218 0001:0020BA0A   223 0001:0020BA30   224 0001:0020BA34   225 0001:0020BA45
+   226 0001:0020BA48   227 0001:0020BA57   228 0001:0020BA5E   229 0001:0020BA65
+   230 0001:0020BA6F   235 0001:0020BA74   236 0001:0020BA78   237 0001:0020BA89
+   238 0001:0020BA8C   239 0001:0020BA9B   240 0001:0020BAA2   241 0001:0020BAA9
+   242 0001:0020BAB4   247 0001:0020BAB8   248 0001:0020BABD   249 0001:0020BACA
+   250 0001:0020BADD   251 0001:0020BAEC   252 0001:0020BAFF   253 0001:0020BB17
+   254 0001:0020BB2F   255 0001:0020BB38   256 0001:0020BB3F   258 0001:0020BB4B
+   259 0001:0020BB5A   260 0001:0020BB69   261 0001:0020BB70   263 0001:0020BB77
+   268 0001:0020BB7C   269 0001:0020BB80   270 0001:0020BB8A   271 0001:0020BB94
+   272 0001:0020BB9F   273 0001:0020BBB1   274 0001:0020BBC3   275 0001:0020BBD5
+   276 0001:0020BBE9   277 0001:0020BBFB   278 0001:0020BC03   280 0001:0020BC0A
+   283 0001:0020BC24   284 0001:0020BC27   285 0001:0020BC2E   287 0001:0020BC3E
+   291 0001:0020BC40   292 0001:0020BC43   293 0001:0020BC4C   294 0001:0020BC56
+   298 0001:0020BC58   299 0001:0020BC71   300 0001:0020BC89   307 0001:0020BCAC
+   309 0001:0020BCB5   310 0001:0020BCBC   312 0001:0020BCD6   313 0001:0020BCE6
+   315 0001:0020BCF4   316 0001:0020BCFE   317 0001:0020BD03   313 0001:0020BD04
+   318 0001:0020BD07   319 0001:0020BD0F   320 0001:0020BD17   321 0001:0020BD1E
+   310 0001:0020BD21   322 0001:0020BD27   324 0001:0020BD32   326 0001:0020BD3D
+   327 0001:0020BD48   328 0001:0020BD53   329 0001:0020BD58   331 0001:0020BD85
+   332 0001:0020BDA0   337 0001:0020BDA8   342 0001:0020BDAC   345 0001:0020BDB8
+   346 0001:0020BDCB   347 0001:0020BDE3   348 0001:0020BDFC   349 0001:0020BE05
+   350 0001:0020BE0C   343 0001:0020BE1D   352 0001:0020BE29   353 0001:0020BE30
+   354 0001:0020BE38   355 0001:0020BE3E   358 0001:0020BE44   359 0001:0020BE77
+   360 0001:0020BE8B   372 0001:0020BEB8   375 0001:0020BEEB   377 0001:0020BF04
+   378 0001:0020BF18   379 0001:0020BF2B   381 0001:0020BF2F   382 0001:0020BF3E
+   383 0001:0020BF4B   385 0001:0020BF51   386 0001:0020BF65   388 0001:0020BF7D
+   389 0001:0020BF83   391 0001:0020BF9B   392 0001:0020BFA9   395 0001:0020BFCC
+   396 0001:0020BFE5   397 0001:0020BFEF   398 0001:0020BFFA   399 0001:0020C000
+   400 0001:0020C009   401 0001:0020C00F   402 0001:0020C016   403 0001:0020C01C
+   404 0001:0020C01F   405 0001:0020C025   406 0001:0020C03A   408 0001:0020C063
+   409 0001:0020C090   410 0001:0020C09A   411 0001:0020C0B4   413 0001:0020C0BE
+   414 0001:0020C0CB   415 0001:0020C0F0   416 0001:0020C0FE   417 0001:0020C10B
+   418 0001:0020C118   419 0001:0020C13D   420 0001:0020C14A   423 0001:0020C157
+   428 0001:0020C1A4   429 0001:0020C1A7   430 0001:0020C1AB   431 0001:0020C1B6
+   432 0001:0020C1BD   433 0001:0020C1CA   441 0001:0020C1CC   442 0001:0020C1EA
+   443 0001:0020C1F4   444 0001:0020C204   445 0001:0020C217   446 0001:0020C226
+   447 0001:0020C234   449 0001:0020C248   450 0001:0020C25A   452 0001:0020C25E
+   453 0001:0020C295   455 0001:0020C2A0   447 0001:0020C2A1   456 0001:0020C2A4
+   458 0001:0020C2D7   459 0001:0020C2E5   461 0001:0020C2F5   465 0001:0020C334
+   467 0001:0020C33E   469 0001:0020C357   471 0001:0020C361   474 0001:0020C39D
+   475 0001:0020C3A4   476 0001:0020C3AC   477 0001:0020C3BE   478 0001:0020C3C9
+   482 0001:0020C3D1   483 0001:0020C3EA   484 0001:0020C3F3   485 0001:0020C407
+   487 0001:0020C411   488 0001:0020C415   489 0001:0020C41B   490 0001:0020C426
+   491 0001:0020C42F   492 0001:0020C437   494 0001:0020C43C   496 0001:0020C446
+   499 0001:0020C473   500 0001:0020C47A   501 0001:0020C482   502 0001:0020C494
+   503 0001:0020C49F   507 0001:0020C4A7   509 0001:0020C4AD   510 0001:0020C4B6
+   512 0001:0020C4BB   514 0001:0020C4C1   515 0001:0020C4CA   517 0001:0020C4CF
+   521 0001:0020C4D8   522 0001:0020C4DB   524 0001:0020C4E1   526 0001:0020C4F8
+   532 0001:0020C4FC   534 0001:0020C506   536 0001:0020C50C   537 0001:0020C519
+   539 0001:0020C51E   541 0001:0020C528   544 0001:0020C555   545 0001:0020C55C
+   546 0001:0020C564   547 0001:0020C576   548 0001:0020C581   552 0001:0020C589
+   554 0001:0020C58F   555 0001:0020C5A4   557 0001:0020C5D2   558 0001:0020C5D9
+   560 0001:0020C5EC   561 0001:0020C604   564 0001:0020C612   570 0001:0020C620
+   571 0001:0020C629   572 0001:0020C642   573 0001:0020C658   575 0001:0020C686
+   576 0001:0020C68F   577 0001:0020C698   578 0001:0020C6A6   580 0001:0020C6B4
+   584 0001:0020C6BC   585 0001:0020C6C6   586 0001:0020C6CE   588 0001:0020C6D7
+   589 0001:0020C6E4   592 0001:0020C6E9   595 0001:0020C6F0   597 0001:0020C703
+   599 0001:0020C70C   600 0001:0020C713   601 0001:0020C720   603 0001:0020C729
+   605 0001:0020C736   606 0001:0020C73D   607 0001:0020C745   609 0001:0020C74F
+   612 0001:0020C77C   613 0001:0020C783   614 0001:0020C78B   615 0001:0020C79D
+   616 0001:0020C7A8   619 0001:0020C7B0   622 0001:0020C7BC   623 0001:0020C7BF
+   624 0001:0020C7C6   625 0001:0020C7D0   626 0001:0020C7DA   631 0001:0020C7DC
+   632 0001:0020C7F3   633 0001:0020C7F5   634 0001:0020C7FF   636 0001:0020C80F
+   637 0001:0020C811   639 0001:0020C820   645 0001:0020C85C   647 0001:0020C863
+   648 0001:0020C88B   649 0001:0020C8A6   650 0001:0020C8AC   652 0001:0020C8BB
+   657 0001:0020C8D8   658 0001:0020C8FA   659 0001:0020C902   661 0001:0020C945
+   662 0001:0020C984   665 0001:0020C9A8   667 0001:0020C9BA   670 0001:0020C9CD
+   671 0001:0020C9D0   672 0001:0020C9F8   674 0001:0020CA00   675 0001:0020CA19
+   677 0001:0020CA25   678 0001:0020CA2E   679 0001:0020CA35   680 0001:0020CA3C
+   681 0001:0020CA47   682 0001:0020CA4D   686 0001:0020CA7A   687 0001:0020CA9B
+   690 0001:0020CAAB   691 0001:0020CAB4   692 0001:0020CAD5   694 0001:0020CAE0
+   696 0001:0020CB08   702 0001:0020CBA0   703 0001:0020CBAC   704 0001:0020CBB0
+   705 0001:0020CBDD   706 0001:0020CC07   707 0001:0020CC0E   713 0001:0020CC18
+   714 0001:0020CC24   716 0001:0020CC2D   717 0001:0020CC48   720 0001:0020CC7C
+   724 0001:0020CC84   725 0001:0020CC87   726 0001:0020CC8E   729 0001:0020CC94
+   730 0001:0020CC98   731 0001:0020CCBE   732 0001:0020CCC9   735 0001:0020CCCC
+   736 0001:0020CCCF   737 0001:0020CCD6   738 0001:0020CCEA   740 0001:0020CD1A
+
+Line numbers for fODReleaseEvent(Orders\fODReleaseEvent.pas) segment .text
+
+    70 0001:0020CFB8    71 0001:0020CFC7    72 0001:0020CFCF    73 0001:0020CFE0
+    75 0001:0020CFFC    76 0001:0020D007    77 0001:0020D009    72 0001:0020D00A
+    78 0001:0020D00D    80 0001:0020D014    81 0001:0020D038    82 0001:0020D04F
+    83 0001:0020D05D    84 0001:0020D092    85 0001:0020D0A8    87 0001:0020D0C0
+    88 0001:0020D0CD    89 0001:0020D0D5    90 0001:0020D0E2    94 0001:0020D133
+    95 0001:0020D140    98 0001:0020D18E   100 0001:0020D1C8   102 0001:0020D1EA
+   104 0001:0020D1F8   105 0001:0020D204   106 0001:0020D21D   107 0001:0020D22E
+   102 0001:0020D22F   108 0001:0020D232   109 0001:0020D23D   111 0001:0020D24D
+   112 0001:0020D25C   114 0001:0020D27A   115 0001:0020D28E   116 0001:0020D2AF
+   112 0001:0020D2B0   117 0001:0020D2B3   118 0001:0020D2BD   119 0001:0020D2C5
+   120 0001:0020D2CD   122 0001:0020D2F3   124 0001:0020D328   125 0001:0020D360
+   126 0001:0020D38F   130 0001:0020D3EC   133 0001:0020D438   120 0001:0020D439
+   135 0001:0020D440   136 0001:0020D44F   137 0001:0020D45D   138 0001:0020D472
+   139 0001:0020D483   141 0001:0020D49F   143 0001:0020D4AF   145 0001:0020D4BD
+   147 0001:0020D4D7   149 0001:0020D4E4   150 0001:0020D4EF   151 0001:0020D500
+   153 0001:0020D50A   145 0001:0020D50B   154 0001:0020D50E   155 0001:0020D515
+   156 0001:0020D51D   157 0001:0020D541   159 0001:0020D54D   160 0001:0020D559
+   162 0001:0020D565   163 0001:0020D56F   165 0001:0020D573   168 0001:0020D590
+   179 0001:0020D597   183 0001:0020D850   184 0001:0020D855   187 0001:0020D858
+   189 0001:0020D85B   190 0001:0020D862   191 0001:0020D86C   192 0001:0020D873
+   193 0001:0020D883   194 0001:0020D88E   195 0001:0020D89C   196 0001:0020D8AC
+   197 0001:0020D8BA   203 0001:0020D8BC   204 0001:0020D8C2   205 0001:0020D8C4
+   207 0001:0020D8DF   209 0001:0020D8F0   210 0001:0020D8F2   212 0001:0020D8F4
+   205 0001:0020D8F5   213 0001:0020D8F8   215 0001:0020D8FC   216 0001:0020D90A
+   218 0001:0020D90C   219 0001:0020D913   220 0001:0020D91A   225 0001:0020D950
+   226 0001:0020D961   227 0001:0020D972   234 0001:0020D974   236 0001:0020D99C
+   237 0001:0020D9A6   239 0001:0020D9BF   240 0001:0020D9E0   241 0001:0020D9ED
+   242 0001:0020DA0D   243 0001:0020DA1B   245 0001:0020DA26   252 0001:0020DA54
+   254 0001:0020DA81   255 0001:0020DA89   256 0001:0020DA95   258 0001:0020DA9B
+   259 0001:0020DAA9   260 0001:0020DAC3   261 0001:0020DAD4   262 0001:0020DAE6
+   264 0001:0020DAF5   265 0001:0020DB15   268 0001:0020DB45   274 0001:0020DB74
+   276 0001:0020DB95   277 0001:0020DBB5   279 0001:0020DBB9   281 0001:0020DBC5
+   282 0001:0020DBD1   283 0001:0020DC05   284 0001:0020DC0B   288 0001:0020DC2A
+   289 0001:0020DC3A   290 0001:0020DC44   292 0001:0020DC50   294 0001:0020DCA9
+
+Line numbers for fOCAccept(Orders\fOCAccept.pas) segment .text
+
+    31 0001:0020DE5C    32 0001:0020DE7E    33 0001:0020DE82    35 0001:0020DE92
+    36 0001:0020DEA9    37 0001:0020DEB7    38 0001:0020DEBF    40 0001:0020DED1
+    41 0001:0020DF08    42 0001:0020DF1E    38 0001:0020DF1F    43 0001:0020DF22
+    44 0001:0020DF35    45 0001:0020DF48    47 0001:0020DF67    50 0001:0020DF77
+    52 0001:0020DFD2
+
+Line numbers for fRenewOutMed(fRenewOutMed.pas) segment .text
+
+    43 0001:0020E220    44 0001:0020E247    45 0001:0020E24B    46 0001:0020E262
+    47 0001:0020E270    48 0001:0020E278    49 0001:0020E293    50 0001:0020E2AE
+    51 0001:0020E2BE    52 0001:0020E2C9    54 0001:0020E2D5    55 0001:0020E2D9
+    56 0001:0020E2F6    59 0001:0020E31E    61 0001:0020E32E    64 0001:0020E368
+    66 0001:0020E369    67 0001:0020E370    69 0001:0020E37C    70 0001:0020E388
+    71 0001:0020E394    73 0001:0020E3A0    78 0001:0020E3E0    80 0001:0020E3F6
+    81 0001:0020E40F    83 0001:0020E418    84 0001:0020E429    86 0001:0020E42B
+    87 0001:0020E432    88 0001:0020E439    93 0001:0020E49C    94 0001:0020E4A1
+    96 0001:0020E4D0
+
+Line numbers for fDateRange(fDateRange.pas) segment .text
+
+    43 0001:0020E700    44 0001:0020E729    45 0001:0020E72D    46 0001:0020E744
+    47 0001:0020E752    50 0001:0020E75A    51 0001:0020E776    52 0001:0020E784
+    53 0001:0020E79B    54 0001:0020E7B2    55 0001:0020E7C9    56 0001:0020E7D9
+    57 0001:0020E7E9    58 0001:0020E7F4    60 0001:0020E800    61 0001:0020E81B
+    62 0001:0020E836    66 0001:0020E847    68 0001:0020E857    73 0001:0020E888
+    74 0001:0020E88F    83 0001:0020E890    85 0001:0020E8B3    86 0001:0020E8BB
+    87 0001:0020E8C9    88 0001:0020E8F3    90 0001:0020E8F9    91 0001:0020E903
+    92 0001:0020E92D    93 0001:0020E96C    95 0001:0020E979    97 0001:0020E989
+    98 0001:0020E998   108 0001:0020E99A   109 0001:0020E9A1   110 0001:0020E9A8
+   115 0001:0020EA94   116 0001:0020EA99   118 0001:0020EAC8
+
+Line numbers for fOrdersRenew(Orders\fOrdersRenew.pas) segment .text
+
+    61 0001:0020ED78    62 0001:0020ED7B    63 0001:0020ED93    64 0001:0020EDA1
+    65 0001:0020EDAF    66 0001:0020EDBD    68 0001:0020EDC4    91 0001:0020EE28
+    92 0001:0020EE33    93 0001:0020EE34    94 0001:0020EE6B    95 0001:0020EE6F
+    96 0001:0020EE73    98 0001:0020EE7B   100 0001:0020EE8A   101 0001:0020EE99
+   102 0001:0020EEA8   104 0001:0020EEBF   105 0001:0020EECD   106 0001:0020EEDB
+   108 0001:0020EEE3   109 0001:0020EEEC   111 0001:0020EEFE   112 0001:0020EF09
+   114 0001:0020EF14   116 0001:0020EF24   118 0001:0020EF2F   120 0001:0020EF3F
+   121 0001:0020EF5E   123 0001:0020EF68   126 0001:0020EF84   127 0001:0020EF9E
+   109 0001:0020EF9F   129 0001:0020EFA8   130 0001:0020EFB6   132 0001:0020EFC2
+   134 0001:0020EFCE   135 0001:0020EFE1   137 0001:0020F005   138 0001:0020F016
+   140 0001:0020F034   141 0001:0020F03C   132 0001:0020F03F   143 0001:0020F045
+   144 0001:0020F051   146 0001:0020F06B   147 0001:0020F078   148 0001:0020F086
+   149 0001:0020F090   150 0001:0020F0A9   151 0001:0020F0AF   153 0001:0020F0B7
+   154 0001:0020F0BD   156 0001:0020F0F3   157 0001:0020F0FC   160 0001:0020F121
+   161 0001:0020F13A   144 0001:0020F13D   163 0001:0020F146   164 0001:0020F155
+   166 0001:0020F15F   168 0001:0020F16A   170 0001:0020F17A   171 0001:0020F186
+   173 0001:0020F199   174 0001:0020F1A1   175 0001:0020F1AE   178 0001:0020F1B9
+   179 0001:0020F1C6   181 0001:0020F1CB   182 0001:0020F1D6   183 0001:0020F1E5
+   184 0001:0020F1F2   186 0001:0020F1FF   188 0001:0020F214   189 0001:0020F21E
+   190 0001:0020F229   191 0001:0020F230   194 0001:0020F24F   196 0001:0020F251
+   198 0001:0020F263   199 0001:0020F274   202 0001:0020F279   204 0001:0020F285
+   205 0001:0020F28E   206 0001:0020F2BE   207 0001:0020F2C0   210 0001:0020F2CF
+   213 0001:0020F2D5   215 0001:0020F2E1   216 0001:0020F2E5   218 0001:0020F306
+   220 0001:0020F31C   221 0001:0020F32C   226 0001:0020F34B   227 0001:0020F34F
+   229 0001:0020F36D   231 0001:0020F380   232 0001:0020F390   234 0001:0020F3AD
+   171 0001:0020F3B0   236 0001:0020F3BA   241 0001:0020F3C0   242 0001:0020F3C9
+   243 0001:0020F3DC   242 0001:0020F3F1   246 0001:0020F403   248 0001:0020F411
+   250 0001:0020F426   251 0001:0020F432   252 0001:0020F438   253 0001:0020F43F
+   254 0001:0020F447   248 0001:0020F44A   255 0001:0020F44F   257 0001:0020F45F
+   260 0001:0020F5E8   262 0001:0020F5EB   263 0001:0020F5F6   264 0001:0020F5FD
+   265 0001:0020F604   266 0001:0020F60B   272 0001:0020F610   273 0001:0020F619
+   274 0001:0020F620   275 0001:0020F632   277 0001:0020F64A   278 0001:0020F677
+   280 0001:0020F687   275 0001:0020F688   281 0001:0020F68B   290 0001:0020F694
+   292 0001:0020F6B0   293 0001:0020F6BD   295 0001:0020F6C5   296 0001:0020F6CB
+   298 0001:0020F6ED   299 0001:0020F703   300 0001:0020F713   301 0001:0020F723
+   302 0001:0020F731   304 0001:0020F745   312 0001:0020F79C   314 0001:0020F7C6
+   315 0001:0020F7D9   317 0001:0020F7E1   318 0001:0020F7E7   319 0001:0020F7F0
+   320 0001:0020F814   321 0001:0020F81C   322 0001:0020F834   323 0001:0020F84F
+   325 0001:0020F86A   330 0001:0020F8BC   332 0001:0020F8C0   334 0001:0020F8C6
+   335 0001:0020F8D8   336 0001:0020F8F5   337 0001:0020F908   338 0001:0020F91A
+   339 0001:0020F92C   341 0001:0020F93C   342 0001:0020F94D   343 0001:0020F95C
+   345 0001:0020F969   353 0001:0020F9C4   355 0001:0020F9E6   357 0001:0020F9EC
+   358 0001:0020F9FE   359 0001:0020FA17   360 0001:0020FA1D   362 0001:0020FA37
+   364 0001:0020FA52   365 0001:0020FA68   366 0001:0020FA73   367 0001:0020FA82
+   368 0001:0020FA98   369 0001:0020FAA3   370 0001:0020FABB   371 0001:0020FABF
+   373 0001:0020FB2D   374 0001:0020FB3B   375 0001:0020FB51   376 0001:0020FB5C
+   377 0001:0020FB69   378 0001:0020FB6D   380 0001:0020FBEB   381 0001:0020FC13
+   382 0001:0020FC20   383 0001:0020FC24   385 0001:0020FC9D   386 0001:0020FCB3
+   388 0001:0020FCC0   392 0001:0020FCE4   393 0001:0020FCF2   398 0001:0020FDF4
+   399 0001:0020FDFB   400 0001:0020FE00   405 0001:0020FE04   406 0001:0020FE09
+   412 0001:0020FE0C   413 0001:0020FE2E   414 0001:0020FE33   415 0001:0020FE38
+   416 0001:0020FE3D   417 0001:0020FE5A   418 0001:0020FE77   425 0001:0020FEA0
+   426 0001:0020FEBC   427 0001:0020FECA   428 0001:0020FED4   429 0001:0020FEE7
+   430 0001:0020FEF1   431 0001:0020FEFF   432 0001:0020FF08   438 0001:0020FF34
+   439 0001:0020FF39   444 0001:0020FF3C   445 0001:0020FF4A   448 0001:0020FF79
+
+Line numbers for fRename(fRename.pas) segment .text
+
+    31 0001:00210158    32 0001:00210177    33 0001:0021017B    34 0001:00210192
+    35 0001:002101A0    38 0001:002101A8    39 0001:002101B8    40 0001:002101C8
+    41 0001:002101D6    42 0001:002101E1    44 0001:002101ED    45 0001:00210208
+    49 0001:00210219    51 0001:00210229    56 0001:00210250    57 0001:00210257
+    62 0001:00210258    63 0001:0021025F    64 0001:00210264    69 0001:00210268
+    70 0001:0021026D    72 0001:0021029C
+
+Line numbers for fOrderSaveQuick(Orders\fOrderSaveQuick.pas) segment .text
+
+    70 0001:00210604    71 0001:00210621    72 0001:00210625    73 0001:0021063C
+    74 0001:0021064A    77 0001:00210652    78 0001:0021065B    79 0001:00210663
+    80 0001:0021066D    81 0001:00210692    82 0001:002106B3    83 0001:002106D5
+    84 0001:002106EB    85 0001:002106FB    86 0001:0021070E    88 0001:00210717
+    89 0001:00210725    91 0001:00210731    92 0001:00210742    93 0001:0021074D
+    95 0001:00210759    97 0001:0021075D   101 0001:0021077F   103 0001:0021078F
+   113 0001:00210818   114 0001:0021083A   115 0001:0021083E   116 0001:00210848
+   117 0001:0021084C   119 0001:0021085B   120 0001:0021086C   122 0001:00210871
+   123 0001:00210888   124 0001:00210896   127 0001:0021089E   129 0001:002108BA
+   130 0001:002108C4   132 0001:002108C8   133 0001:002108D4   135 0001:002108E5
+   136 0001:002108EF   138 0001:002108FE   139 0001:00210908   141 0001:00210917
+   142 0001:0021093C   143 0001:0021095D   144 0001:0021097F   145 0001:0021098A
+   146 0001:002109A5   147 0001:002109B6   149 0001:002109BF   150 0001:002109CC
+   152 0001:002109E2   153 0001:002109F1   154 0001:00210A01   155 0001:00210A26
+   156 0001:00210A39   158 0001:00210A45   159 0001:00210A56   160 0001:00210A61
+   162 0001:00210A71   164 0001:00210A75   166 0001:00210A93   167 0001:00210A9A
+   168 0001:00210ABD   167 0001:00210AD5   169 0001:00210AD8   172 0001:00210B2D
+   173 0001:00210B3A   175 0001:00210B57   177 0001:00210B6D   180 0001:00210B8A
+   182 0001:00210B9A   187 0001:00210D2C   189 0001:00210D4A   190 0001:00210D65
+   191 0001:00210D6C   192 0001:00210D8B   191 0001:00210DA2   193 0001:00210DA5
+   194 0001:00210DE7   199 0001:00210E28   201 0001:00210E2B   203 0001:00210E31
+   204 0001:00210E3E   205 0001:00210E4B   206 0001:00210E65   208 0001:00210E71
+   213 0001:00210E78   215 0001:00210E7B   217 0001:00210E81   218 0001:00210EA0
+   219 0001:00210EAD   220 0001:00210EC7   222 0001:00210ED3   228 0001:00210ED8
+   230 0001:00210EF2   232 0001:00210EF8   233 0001:00210F0A   234 0001:00210F38
+   236 0001:00210F4D   237 0001:00210F5E   238 0001:00210F71   240 0001:00210F86
+   244 0001:00210FE9   247 0001:002110DC   249 0001:002110F2   251 0001:002110F8
+   252 0001:00211106   254 0001:00211117   255 0001:00211128   257 0001:0021112A
+   258 0001:00211166   260 0001:0021117E   265 0001:0021124C   266 0001:00211253
+   271 0001:00211254   273 0001:00211271   275 0001:00211284   277 0001:00211298
+   278 0001:002112A9   280 0001:002112AE   281 0001:002112C6   283 0001:0021130D
+   284 0001:00211320   285 0001:00211330   286 0001:00211332   280 0001:00211333
+   288 0001:00211336   289 0001:0021133D   290 0001:00211344   295 0001:00211484
+   296 0001:00211489   301 0001:0021148C   302 0001:00211495   307 0001:00211498
+   308 0001:002114A1   310 0001:002114D0
+
+Line numbers for fOrderComment(Orders\fOrderComment.pas) segment .text
+
+    38 0001:002116EC    39 0001:00211708    40 0001:0021170C    41 0001:00211723
+    42 0001:00211731    45 0001:00211739    46 0001:00211751    47 0001:00211768
+    48 0001:00211773    50 0001:0021177F    51 0001:00211799    52 0001:002117B8
+    56 0001:002117C9    58 0001:002117D9    63 0001:00211820    64 0001:00211827
+    69 0001:00211828    70 0001:0021182F    71 0001:00211834    76 0001:00211838
+    77 0001:0021183D    81 0001:00211840    83 0001:0021184D    85 0001:00211853
+    87 0001:00211859    88 0001:0021187E    90 0001:00211885    92 0001:0021188B
+    93 0001:002118B0    96 0001:002118B5    97 0001:002118BB    98 0001:002118E0
+   100 0001:002118E5   102 0001:0021191A
+
+Line numbers for fOrdersVerify(Orders\fOrdersVerify.pas) segment .text
+
+    47 0001:00211BA4    48 0001:00211BB2    49 0001:00211BB6    50 0001:00211BC3
+    51 0001:00211BDA    52 0001:00211BE8    53 0001:00211BF0    55 0001:00211BF4
+    56 0001:00211C07    58 0001:00211C14    59 0001:00211C22    58 0001:00211C44
+    60 0001:00211C47    61 0001:00211C52    63 0001:00211C5E    65 0001:00211C6C
+    66 0001:00211C70    67 0001:00211C8A    68 0001:00211CA2    63 0001:00211CA3
+    69 0001:00211CA6    72 0001:00211CB7    73 0001:00211CBF    75 0001:00211CEB
+    80 0001:00211D4C    81 0001:00211D53    89 0001:00211D54    91 0001:00211D6F
+    93 0001:00211D93    94 0001:00211DA4    96 0001:00211DA6    98 0001:00211DC0
+    99 0001:00211DD1   100 0001:00211DDF   101 0001:00211DEA   103 0001:00211DEC
+   104 0001:00211E13   105 0001:00211E1A   106 0001:00211E21   111 0001:00211F38
+   112 0001:00211F3D   121 0001:00211F40   123 0001:00211F63   125 0001:00211F7B
+   126 0001:00211F87   127 0001:00211F95   128 0001:00211FB5   129 0001:00211FCF
+   131 0001:00211FE0   139 0001:00212010   141 0001:0021203C   143 0001:00212042
+   144 0001:0021204C   145 0001:00212050   146 0001:0021205E   147 0001:00212078
+   148 0001:00212089   149 0001:0021209B   150 0001:002120AD   152 0001:002120BD
+   153 0001:002120DE   154 0001:0021210E   155 0001:0021211F   158 0001:00212123
+   163 0001:00212154   164 0001:00212162   166 0001:00212191
+
+Line numbers for fOrdersComplete(Orders\fOrdersComplete.pas) segment .text
+
+    37 0001:002123BC    38 0001:002123C7    39 0001:002123CB    40 0001:002123D8
+    41 0001:002123EF    42 0001:002123FD    43 0001:00212405    44 0001:00212413
+    43 0001:00212435    45 0001:00212438    46 0001:00212443    49 0001:0021244F
+    50 0001:00212479    53 0001:0021248A    54 0001:00212492    56 0001:002124BE
+    61 0001:002124C8    62 0001:002124CF    70 0001:002124D0    72 0001:002124EB
+    74 0001:0021250F    75 0001:00212520    77 0001:00212522    79 0001:0021253C
+    80 0001:0021254D    81 0001:0021255B    82 0001:00212566    84 0001:00212568
+    85 0001:0021258F    86 0001:00212596    87 0001:0021259D    92 0001:002126B8
+    93 0001:002126BD    95 0001:002126EC
+
+Line numbers for fOrdersEvntRelease(Orders\fOrdersEvntRelease.pas) segment .text
+
+    78 0001:00212ADC    79 0001:00212AE3    80 0001:00212AFA    81 0001:00212B02
+    84 0001:00212B10    85 0001:00212B1E    86 0001:00212B29    88 0001:00212B39
+    89 0001:00212B47    90 0001:00212B56    91 0001:00212B64    92 0001:00212B6E
+    93 0001:00212B75    94 0001:00212B88    95 0001:00212B9D    98 0001:00212BC4
+    99 0001:00212BCA   100 0001:00212BD1   101 0001:00212BDB   104 0001:00212BE4
+   107 0001:00212BF7   108 0001:00212C05   109 0001:00212C0D   111 0001:00212C1F
+   118 0001:00212C24   119 0001:00212C44   120 0001:00212C69   121 0001:00212C79
+   123 0001:00212C8B   124 0001:00212C98   125 0001:00212CA3   126 0001:00212CAA
+   127 0001:00212CB2   128 0001:00212CBD   129 0001:00212CC5   130 0001:00212CCD
+   131 0001:00212CDB   132 0001:00212CE2   133 0001:00212CF4   134 0001:00212CFE
+   135 0001:00212D0E   136 0001:00212D2A   137 0001:00212D37   140 0001:00212D80
+   141 0001:00212D8D   143 0001:00212DD3   145 0001:00212E05   146 0001:00212E23
+   147 0001:00212E37   148 0001:00212E4E   149 0001:00212E66   153 0001:00212FBC
+   154 0001:00212FC1   158 0001:00212FC4   159 0001:00212FCF   163 0001:00212FD0
+   165 0001:00212FFD   167 0001:00213045   174 0001:00213070   175 0001:00213096
+   176 0001:002130AF   178 0001:002130B9   179 0001:002130F3   180 0001:00213104
+   181 0001:00213115   182 0001:00213123   183 0001:00213148   185 0001:0021314C
+   186 0001:00213172   188 0001:00213193   189 0001:0021319E   192 0001:00213206
+   197 0001:00213268   198 0001:0021328B   200 0001:0021329A   201 0001:002132A8
+   202 0001:002132AF   206 0001:002132B4   208 0001:0021330F   209 0001:00213316
+   211 0001:0021331B   213 0001:00213328   214 0001:00213362   215 0001:00213373
+   216 0001:00213384   217 0001:00213392   218 0001:002133B7   220 0001:002133BB
+   221 0001:002133E1   223 0001:00213402   224 0001:0021340D   226 0001:00213475
+   227 0001:0021347C   230 0001:00213485   231 0001:0021348C   234 0001:00213493
+   240 0001:0021353C   241 0001:00213566   243 0001:0021357A   244 0001:002135AA
+   245 0001:002135BB   246 0001:002135CC   247 0001:002135DA   248 0001:002135FF
+   250 0001:00213603   251 0001:00213629   253 0001:0021364A   254 0001:00213655
+   256 0001:002136BD   258 0001:002136CE   262 0001:0021373C   263 0001:0021374B
+   264 0001:00213752   267 0001:00213754   268 0001:00213758   269 0001:00213773
+   270 0001:00213796   275 0001:0021379C   276 0001:002137C2   277 0001:002137CE
+   278 0001:002137E2   280 0001:002137F5   281 0001:00213803   278 0001:00213804
+   281 0001:00213807   277 0001:00213808   282 0001:0021380D   283 0001:00213825
+   284 0001:00213828   285 0001:0021383A   286 0001:0021384A   287 0001:0021385B
+   289 0001:0021385F   290 0001:00213872   291 0001:0021388C   294 0001:002138A1
+   296 0001:002138C1   297 0001:0021393E   298 0001:00213999   294 0001:0021399A
+   300 0001:002139A3   303 0001:00213A10   305 0001:00213A2F   307 0001:00213A6D
+   308 0001:00213A7D   309 0001:00213A88   311 0001:00213A95   312 0001:00213B11
+   313 0001:00213B24   314 0001:00213B40   315 0001:00213B5C   319 0001:00213BA0
+   321 0001:00213BA3   322 0001:00213BA9   323 0001:00213BB0   326 0001:00213BB4
+   328 0001:00213BCA   329 0001:00213BE6   330 0001:00213BF3   334 0001:00213C14
+   336 0001:00213C17   337 0001:00213C1D   338 0001:00213C24   343 0001:00213C28
+   344 0001:00213C33   348 0001:00213C34   350 0001:00213C4A   351 0001:00213C5E
+   352 0001:00213C82   353 0001:00213C8B   357 0001:00213CAC   359 0001:00213CAF
+   360 0001:00213CB4   361 0001:00213CB7   363 0001:00213CE7
+
+Line numbers for fOrdersOnChart(Orders\fOrdersOnChart.pas) segment .text
+
+    54 0001:00213F40    55 0001:00213F4F    56 0001:00213F57    57 0001:00213F68
+    59 0001:00213F84    60 0001:00213F8F    61 0001:00213F91    56 0001:00213F92
+    62 0001:00213F95    64 0001:00213F9C    65 0001:00213FC0    66 0001:00213FC4
+    67 0001:00213FC9    68 0001:00213FD6    69 0001:00213FED    70 0001:00213FFB
+    71 0001:00214003    72 0001:00214011    71 0001:00214033    73 0001:00214036
+    74 0001:00214041    76 0001:00214051    77 0001:00214055    78 0001:00214064
+    79 0001:00214072    80 0001:0021408C    79 0001:002140C6    81 0001:002140C9
+    82 0001:002140D3    84 0001:002140E9    86 0001:002140FD    87 0001:00214117
+    89 0001:0021413C    90 0001:00214180    92 0001:002141B0    93 0001:002141B9
+    95 0001:002141C3    97 0001:002141E9    99 0001:0021421E   100 0001:00214256
+   101 0001:00214285   105 0001:002142E2   108 0001:00214330    95 0001:00214331
+   109 0001:00214338   111 0001:0021433F   112 0001:0021434E   113 0001:0021435C
+   114 0001:00214371   115 0001:00214382   117 0001:0021439E   119 0001:002143AE
+   123 0001:002143CA   127 0001:002143E7   128 0001:002143EF   130 0001:0021441B
+   135 0001:002145D8   136 0001:002145DF   141 0001:002145E0   142 0001:002145E7
+   143 0001:002145EC   148 0001:002145F0   149 0001:002145F5   156 0001:002145F8
+   158 0001:0021461B   160 0001:00214633   161 0001:0021463F   162 0001:0021464D
+   163 0001:0021466D   164 0001:00214687   166 0001:00214698   174 0001:002146C8
+   176 0001:002146F4   178 0001:002146FA   179 0001:00214704   180 0001:00214708
+   181 0001:00214716   182 0001:00214730   183 0001:00214741   184 0001:00214753
+   185 0001:00214765   187 0001:00214775   188 0001:00214796   189 0001:002147C6
+   190 0001:002147D7   193 0001:002147DB   198 0001:0021480C   199 0001:0021481A
+   201 0001:00214849
+
+Line numbers for fOrdersRelease(Orders\fOrdersRelease.pas) segment .text
+
+    68 0001:00214AFC    69 0001:00214B0B    70 0001:00214B13    71 0001:00214B24
+    73 0001:00214B40    74 0001:00214B4B    75 0001:00214B4D    70 0001:00214B4E
+    76 0001:00214B51    81 0001:00214B58    82 0001:00214B5E    83 0001:00214B60
+    85 0001:00214B71    86 0001:00214B86    83 0001:00214B87    87 0001:00214B8A
+    90 0001:00214B94    91 0001:00214BB7    92 0001:00214BBB    93 0001:00214BC0
+    94 0001:00214BCD    95 0001:00214BE4    96 0001:00214BF2    97 0001:00214BFA
+    98 0001:00214C06    99 0001:00214C14    98 0001:00214C36   100 0001:00214C39
+   101 0001:00214C54   102 0001:00214C5F   104 0001:00214C6F   105 0001:00214C73
+   106 0001:00214C82   108 0001:00214C90   110 0001:00214C9E   111 0001:00214CAA
+   112 0001:00214D03   108 0001:00214D04   113 0001:00214D07   114 0001:00214D11
+   116 0001:00214D2E   118 0001:00214D42   119 0001:00214D5C   121 0001:00214D81
+   122 0001:00214DC5   124 0001:00214DF5   125 0001:00214DFE   130 0001:00214E08
+   132 0001:00214E2E   134 0001:00214E63   135 0001:00214E9B   136 0001:00214ECA
+   140 0001:00214F27   143 0001:00214F73   144 0001:00214FA4   145 0001:00214FE1
+   130 0001:00214FE2   146 0001:00214FE9   148 0001:00214FF0   149 0001:00214FFF
+   150 0001:0021500D   151 0001:00215022   152 0001:00215033   154 0001:0021504F
+   156 0001:0021505F   160 0001:00215083   166 0001:00215093   168 0001:0021509C
+   170 0001:002150AC   171 0001:002150B8   178 0001:002150D1   179 0001:002150D9
+   181 0001:00215105   184 0001:002152D0   186 0001:002152D3   187 0001:002152DA
+   188 0001:002152E5   190 0001:00215304   191 0001:0021530B   194 0001:0021531D
+   195 0001:00215324   197 0001:00215334   198 0001:0021533B   205 0001:00215340
+   208 0001:00215363   209 0001:0021537E   210 0001:00215399   211 0001:002153A0
+   212 0001:002153A7   214 0001:002153B3   215 0001:002153BA   217 0001:002153C1
+   219 0001:002153D1   220 0001:002153DB   221 0001:002153E3   223 0001:00215406
+   224 0001:00215413   225 0001:00215436   227 0001:00215446   228 0001:00215455
+   229 0001:0021547C   231 0001:0021547E   221 0001:00215481   232 0001:00215486
+   233 0001:0021548D   235 0001:0021549D   237 0001:002154A9   238 0001:002154C7
+   240 0001:002154D0   241 0001:002154D7   242 0001:002154DE   247 0001:00215604
+   248 0001:00215609   256 0001:0021560C   258 0001:00215638   260 0001:0021563E
+   261 0001:00215648   262 0001:0021564C   263 0001:0021565A   264 0001:00215674
+   265 0001:00215685   266 0001:00215697   267 0001:002156A9   269 0001:002156B9
+   270 0001:002156DA   271 0001:0021570A   272 0001:0021571B   275 0001:0021571F
+   282 0001:00215750   284 0001:00215773   286 0001:0021578B   287 0001:00215797
+   288 0001:002157A5   289 0001:002157C5   290 0001:002157DF   292 0001:002157F0
+   297 0001:00215820   298 0001:0021582E   300 0001:0021585D
+
+Line numbers for fOrderUnflag(Orders\fOrderUnflag.pas) segment .text
+
+    33 0001:00215A70    34 0001:00215A8C    35 0001:00215A90    36 0001:00215AA7
+    37 0001:00215AB5    40 0001:00215ABD    41 0001:00215AD5    42 0001:00215AEC
+    43 0001:00215AF7    45 0001:00215B03    46 0001:00215B1E    50 0001:00215B2F
+    52 0001:00215B3F    57 0001:00215B68    58 0001:00215B6F    63 0001:00215B70
+    64 0001:00215B77    65 0001:00215B7C    70 0001:00215B80    71 0001:00215B85
+    74 0001:00215BB4
+
+Line numbers for fOrderFlag(Orders\fOrderFlag.pas) segment .text
+
+    41 0001:00215E14    42 0001:00215E30    43 0001:00215E34    44 0001:00215E4B
+    45 0001:00215E59    49 0001:00215E61    50 0001:00215E79    51 0001:00215E84
+    53 0001:00215E90    54 0001:00215EB7    58 0001:00215EC8    59 0001:00215ED0
+    61 0001:00215EEC    66 0001:00215F14    68 0001:00215F1D    69 0001:00215F27
+    70 0001:00215F36    71 0001:00215F44    72 0001:00215F51    74 0001:00215F75
+    76 0001:00215F85    78 0001:00215F95    84 0001:00215FBC    86 0001:00215FD2
+    89 0001:00215FE6    90 0001:00215FF7    92 0001:00215FF9    93 0001:00216007
+    94 0001:0021600E    95 0001:00216015   100 0001:00216084   101 0001:00216089
+   104 0001:0021608C   105 0001:002160A0   106 0001:002160A6   108 0001:002160C0
+   109 0001:002160D4   110 0001:002160DE   114 0001:002160E9   116 0001:002160FC
+   120 0001:00216120   121 0001:00216129   122 0001:00216140   124 0001:00216174
+
+Line numbers for fOrdersAlert(Orders\fOrdersAlert.pas) segment .text
+
+    45 0001:002163C8    46 0001:002163D3    47 0001:002163D7    48 0001:002163E4
+    50 0001:002163F0    51 0001:002163FD    52 0001:0021640F    53 0001:00216426
+    54 0001:00216434    56 0001:0021643C    57 0001:0021644A    56 0001:0021646C
+    58 0001:0021646F    59 0001:0021647A    61 0001:00216486    62 0001:002164B3
+    65 0001:002164C4    66 0001:002164CC    68 0001:002164F8    71 0001:00216504
+    73 0001:00216507    74 0001:0021650E    75 0001:0021651F    76 0001:00216536
+    79 0001:00216538    81 0001:0021653B    82 0001:00216549    83 0001:00216550
+    84 0001:00216557    89 0001:0021655C    90 0001:00216561    94 0001:00216564
+    95 0001:0021656D    96 0001:00216584    99 0001:0021658C   100 0001:002165A0
+   101 0001:002165A6   103 0001:002165C0   104 0001:002165D4   105 0001:002165DE
+   109 0001:002165E9   111 0001:002165FC
+
+Line numbers for fOrdersAlert(Orders\fOrdersAlert.pas) segment .itext
+
+   113 0002:00001418
+
+Line numbers for fOrdersUnhold(Orders\fOrdersUnhold.pas) segment .text
+
+    35 0001:00216878    36 0001:00216896    37 0001:0021689A    38 0001:002168A4
+    39 0001:002168BB    40 0001:002168C9    41 0001:002168D1    42 0001:002168DC
+    41 0001:002168FD    43 0001:00216900    44 0001:0021690B    46 0001:00216917
+    48 0001:00216922    49 0001:00216936    50 0001:00216944    46 0001:00216945
+    51 0001:00216948    53 0001:0021694E    55 0001:0021697B    57 0001:0021698B
+    62 0001:002169B4    63 0001:002169BB    68 0001:002169BC    69 0001:002169C3
+    70 0001:002169C8    75 0001:002169CC    76 0001:002169D1    78 0001:00216A00
+
+Line numbers for fOrdersHold(Orders\fOrdersHold.pas) segment .text
+
+    35 0001:00216BEC    36 0001:00216C0A    37 0001:00216C0E    38 0001:00216C18
+    39 0001:00216C2F    40 0001:00216C3D    41 0001:00216C45    42 0001:00216C50
+    41 0001:00216C71    43 0001:00216C74    44 0001:00216C7F    46 0001:00216C8B
+    48 0001:00216C96    49 0001:00216CAA    50 0001:00216CB8    51 0001:00216CD1
+    52 0001:00216CF7    46 0001:00216CF8    53 0001:00216CFB    55 0001:00216D01
+    57 0001:00216D2E    59 0001:00216D3E    64 0001:00216D74    65 0001:00216D7B
+    70 0001:00216D7C    71 0001:00216D83    72 0001:00216D88    77 0001:00216D8C
+    78 0001:00216D91    80 0001:00216DC0
+
+Line numbers for fODChangeEvtDisp(Orders\fODChangeEvtDisp.pas) segment .text
+
+    41 0001:00217004    42 0001:00217029    43 0001:0021703F    44 0001:0021704D
+    45 0001:0021705B    47 0001:00217069    48 0001:00217076    49 0001:0021708D
+    45 0001:0021708E    50 0001:00217091    51 0001:0021709B    52 0001:002170A2
+    59 0001:002170C8    61 0001:002170F2    62 0001:002170FA    63 0001:00217106
+    65 0001:0021710C    66 0001:0021711A    67 0001:00217134    68 0001:00217145
+    69 0001:00217157    71 0001:00217166    72 0001:00217176    75 0001:002171A6
+    83 0001:002171CC    85 0001:002171F0    86 0001:002171FA    88 0001:00217210
+    89 0001:00217221    90 0001:0021722E    92 0001:00217263    93 0001:00217271
+    95 0001:0021727C   100 0001:002172A4   101 0001:002172AB   102 0001:002172B0
+   107 0001:002172B4   108 0001:002172BB   109 0001:002172C0   111 0001:002172EF
+
+Line numbers for fOrdersCV(Orders\fOrdersCV.pas) segment .text
+
+    75 0001:00217560    76 0001:002175A1    77 0001:002175AC    78 0001:002175BA
+    79 0001:002175C8    80 0001:002175DF    81 0001:002175ED    82 0001:002175FB
+    88 0001:00217634    89 0001:00217663    90 0001:00217668    92 0001:00217693
+    93 0001:002176C3    95 0001:00217702    96 0001:0021773F    98 0001:00217741
+    90 0001:00217744   100 0001:0021774D   101 0001:00217788   102 0001:002177C4
+   103 0001:002177C8   104 0001:002177CC   105 0001:002177D0   106 0001:002177D5
+   107 0001:002177DD   108 0001:002177E2   109 0001:002177EA   110 0001:002177EF
+   111 0001:002177FE   113 0001:00217802   114 0001:0021780F   115 0001:00217825
+   116 0001:0021782C   117 0001:0021785F   118 0001:00217872   120 0001:00217887
+   121 0001:00217894   122 0001:0021789B   123 0001:002178A2   124 0001:002178AF
+   126 0001:002178F5   127 0001:00217939   128 0001:00217955   129 0001:0021795D
+   130 0001:00217969   131 0001:00217974   133 0001:00217984   134 0001:00217994
+   135 0001:0021799F   137 0001:002179C2   138 0001:002179C9   139 0001:002179D3
+   141 0001:002179E0   143 0001:00217A01   144 0001:00217A10   146 0001:00217A23
+   147 0001:00217A30   148 0001:00217A3B   144 0001:00217A3E   149 0001:00217A41
+   150 0001:00217A5E   151 0001:00217A87   152 0001:00217AAF   154 0001:00217AE2
+   155 0001:00217B08   157 0001:00217B0F   158 0001:00217B33   159 0001:00217B5D
+   161 0001:00217B6C   162 0001:00217B72   163 0001:00217B77   164 0001:00217B82
+   165 0001:00217B8C   166 0001:00217B90   169 0001:00217B95   170 0001:00217BA4
+   171 0001:00217BC8   172 0001:00217BCD   174 0001:00217BE3   175 0001:00217BE7
+   177 0001:00217BF0   178 0001:00217BFE   181 0001:00217C0B   183 0001:00217C1E
+   184 0001:00217C32   186 0001:00217C41   187 0001:00217C58   188 0001:00217C66
+   189 0001:00217C6A   191 0001:00217C6F   193 0001:00217C9D   194 0001:00217CBC
+   195 0001:00217CD0   196 0001:00217CE6   198 0001:00217D0F   199 0001:00217D13
+   202 0001:00217D20   203 0001:00217D2B   204 0001:00217D4E   205 0001:00217D58
+   206 0001:00217D75   209 0001:00217D88   210 0001:00217D9D   211 0001:00217DAC
+   213 0001:00217DBF   214 0001:00217DCC   215 0001:00217DD7   211 0001:00217DDA
+   216 0001:00217DDD   217 0001:00217DE7   218 0001:00217DF3   219 0001:00217DFA
+   220 0001:00217E06   221 0001:00217E1D   223 0001:00217E2B   225 0001:00217E31
+   226 0001:00217E35   234 0001:00217FD0   236 0001:00217FEE   237 0001:00217FFF
+   239 0001:0021800C   241 0001:00218021   242 0001:00218034   244 0001:00218041
+   246 0001:00218061   248 0001:002180AB   249 0001:002180C1   250 0001:002180D7
+   251 0001:002180F2   252 0001:002180FF   253 0001:00218120   254 0001:0021812D
+   255 0001:0021813D   257 0001:0021813F   244 0001:00218140   258 0001:00218149
+   259 0001:00218158   261 0001:00218165   264 0001:0021820C   266 0001:0021820F
+   267 0001:00218217   268 0001:0021821F   269 0001:0021822A   270 0001:00218235
+   271 0001:0021823C   273 0001:00218244   284 0001:00218248   286 0001:0021826B
+   287 0001:00218286   288 0001:0021828F   290 0001:002182B1   291 0001:002182BE
+   293 0001:002182CD   295 0001:0021830D   296 0001:0021831A   300 0001:0021832C
+   301 0001:00218339   303 0001:00218349   305 0001:0021835C   306 0001:0021838C
+   307 0001:002183BC   310 0001:002183EE   311 0001:002183F6   312 0001:002183FE
+   314 0001:00218406   315 0001:00218414   317 0001:00218443   319 0001:00218495
+   322 0001:002184A3   324 0001:002184BA   326 0001:002184DA   328 0001:00218514
+   329 0001:0021852D   331 0001:0021852F   324 0001:00218532   332 0001:00218535
+   335 0001:00218547   336 0001:00218554   340 0001:00218564   348 0001:00218634
+   350 0001:00218637   352 0001:00218646   353 0001:00218657   355 0001:00218659
+   356 0001:00218660   357 0001:00218667   361 0001:002186B4   362 0001:002186B9
+   364 0001:002186BC   366 0001:002186BF   367 0001:002186CD   368 0001:002186D6
+   372 0001:002186D8   374 0001:002186DB   375 0001:002186E0   376 0001:002186E3
+   383 0001:002186E8   384 0001:00218714   386 0001:0021872A   387 0001:0021874C
+   389 0001:00218750   390 0001:00218767   394 0001:0021879F   395 0001:002187AA
+   396 0001:002187B0   397 0001:002187D0   399 0001:00218808   384 0001:00218809
+   400 0001:00218812   402 0001:0021881F   404 0001:00218835   405 0001:0021884E
+   408 0001:0021886E   413 0001:002188A0   414 0001:002188C7   415 0001:002188CE
+   416 0001:002188DA   418 0001:002188FB   420 0001:00218937   421 0001:0021894E
+   423 0001:00218950   416 0001:00218951   424 0001:00218954   431 0001:00218980
+   432 0001:0021899E   433 0001:002189AC   434 0001:002189B3   436 0001:002189C9
+   438 0001:002189F6   439 0001:00218A26   441 0001:00218A54   434 0001:00218A55
+   442 0001:00218A5E   444 0001:00218ABD
+
+Line numbers for fOrdersDC(Orders\fOrdersDC.pas) segment .text
+
+    57 0001:00218D44    58 0001:00218D6A    59 0001:00218D6E    60 0001:00218D74
+    61 0001:00218D78    62 0001:00218D7C    63 0001:00218D80    64 0001:00218D8F
+    65 0001:00218D99    66 0001:00218DB0    67 0001:00218DBE    68 0001:00218DC6
+    69 0001:00218DCA    71 0001:00218DDA    72 0001:00218DE6    73 0001:00218DFD
+    74 0001:00218E0E    75 0001:00218E1E    77 0001:00218E34    69 0001:00218E37
+    78 0001:00218E3A    80 0001:00218E40    81 0001:00218E50    84 0001:00218E62
+    85 0001:00218E72    87 0001:00218E82    88 0001:00218E8D    90 0001:00218E9D
+    91 0001:00218EC9    92 0001:00218ED2    93 0001:00218ED7    95 0001:00218EEB
+    96 0001:00218EF7    97 0001:00218F02    98 0001:00218F25   101 0001:00218F3C
+   103 0001:00218F52   104 0001:00218F67   106 0001:00218F77   107 0001:00218F88
+   108 0001:00218F8E   110 0001:00218F92   101 0001:00218F95   112 0001:00218F9A
+   113 0001:00218FB2   115 0001:00218FC7   116 0001:00218FFE   119 0001:00219010
+   120 0001:00219024   121 0001:00219039   122 0001:0021904B   124 0001:0021905B
+   127 0001:00219065   128 0001:00219075   130 0001:0021907F   132 0001:00219087
+   133 0001:002190A4    93 0001:002190A7   134 0001:002190AE   135 0001:002190C6
+   136 0001:00219108   137 0001:0021910C   139 0001:00219116   141 0001:00219131
+   143 0001:00219158   144 0001:00219179   145 0001:0021919A   146 0001:002191A5
+   148 0001:002191E2   149 0001:002191E6   152 0001:002191F5   139 0001:002191F8
+   153 0001:002191FF   155 0001:00219205   156 0001:00219211   157 0001:00219228
+   158 0001:00219236   161 0001:0021923C   163 0001:00219242   165 0001:00219277
+   167 0001:00219287   172 0001:00219318   174 0001:0021931C   175 0001:00219323
+   176 0001:00219335   177 0001:00219347   184 0001:00219358   190 0001:0021935C
+   192 0001:00219360   194 0001:00219381   195 0001:00219392   197 0001:00219395
+   198 0001:0021939C   199 0001:002193AD   200 0001:002193B4   203 0001:00219410
+   205 0001:00219413   206 0001:00219420   207 0001:00219427   214 0001:0021942C
+   216 0001:00219456   217 0001:0021945E   218 0001:0021946A   220 0001:00219470
+   221 0001:0021947E   222 0001:00219498   223 0001:002194A9   224 0001:002194BB
+   226 0001:002194CA   227 0001:002194DA   230 0001:0021950A   236 0001:00219530
+   238 0001:00219550   240 0001:00219566   241 0001:00219577   243 0001:00219589
+   249 0001:002195B0   250 0001:002195D2   251 0001:002195D7   252 0001:002195DC
+   253 0001:002195E1   254 0001:002195F0   255 0001:00219607   260 0001:0021962C
+   261 0001:0021963D   264 0001:00219640   265 0001:00219643   266 0001:0021965B
+   268 0001:002196A6
+
+Line numbers for fOrderVw(Orders\fOrderVw.pas) segment .text
+
+    76 0001:00219A24    77 0001:00219A40    78 0001:00219A57    79 0001:00219A65
+    82 0001:00219A6D    83 0001:00219A7B    84 0001:00219A89    85 0001:00219A98
+    86 0001:00219AA7    87 0001:00219ABE    88 0001:00219AD5    89 0001:00219ADD
+    90 0001:00219AE8    92 0001:00219AFA    93 0001:00219AFF    94 0001:00219B0D
+    95 0001:00219B1B    96 0001:00219B2A    97 0001:00219B39    98 0001:00219B50
+    99 0001:00219B67   100 0001:00219B71   101 0001:00219B78   102 0001:00219B96
+   103 0001:00219B9C   104 0001:00219BA3   106 0001:00219BAF   109 0001:00219BC2
+   111 0001:00219BD2   114 0001:00219BF4   116 0001:00219BFA   117 0001:00219C01
+   118 0001:00219C12   119 0001:00219C23   120 0001:00219C31   121 0001:00219C3B
+   123 0001:00219C49   124 0001:00219C53   126 0001:00219C6E   127 0001:00219C78
+   128 0001:00219C7F   129 0001:00219C89   131 0001:00219C98   138 0001:00219CA8
+   139 0001:00219CC3   140 0001:00219CD5   142 0001:00219D37   143 0001:00219D3F
+   144 0001:00219D5A   145 0001:00219D6A   146 0001:00219D7D   147 0001:00219DA9
+   152 0001:00219E28   153 0001:00219E2E   155 0001:00219E5F   156 0001:00219E6F
+   157 0001:00219E7F   158 0001:00219E96   159 0001:00219E98   153 0001:00219E99
+   161 0001:00219E9C   163 0001:00219ECD   164 0001:00219EDD   165 0001:00219EED
+   166 0001:00219EFF   167 0001:00219F16   168 0001:00219F18   161 0001:00219F19
+   170 0001:00219F1C   172 0001:00219F40   173 0001:00219F57   174 0001:00219F6E
+   175 0001:00219F7E   177 0001:00219F87   178 0001:00219F8E   179 0001:00219FA3
+   180 0001:00219FB8   188 0001:00219FC4   189 0001:00219FF1   191 0001:0021A009
+   192 0001:0021A02B   194 0001:0021A03C   195 0001:0021A05E   196 0001:0021A06B
+   197 0001:0021A08D   198 0001:0021A0C0   199 0001:0021A0DE   201 0001:0021A0F1
+   189 0001:0021A0F2   202 0001:0021A0F9   210 0001:0021A13C   211 0001:0021A169
+   213 0001:0021A181   214 0001:0021A1A3   216 0001:0021A1B4   217 0001:0021A1D6
+   218 0001:0021A1E3   219 0001:0021A205   220 0001:0021A238   221 0001:0021A256
+   223 0001:0021A269   211 0001:0021A26A   224 0001:0021A271   229 0001:0021A2B4
+   231 0001:0021A2B8   232 0001:0021A2C5   234 0001:0021A2C9   235 0001:0021A2D2
+   236 0001:0021A2E0   238 0001:0021A2E7   241 0001:0021A2EC   243 0001:0021A2EF
+   244 0001:0021A30A   245 0001:0021A325   246 0001:0021A340   247 0001:0021A35B
+   249 0001:0021A36D   250 0001:0021A37D   251 0001:0021A38D   254 0001:0021A3B6
+   255 0001:0021A3C5   256 0001:0021A3D4   257 0001:0021A3E4   259 0001:0021A3F4
+   260 0001:0021A3FB   265 0001:0021A410   266 0001:0021A415   269 0001:0021A418
+   271 0001:0021A41B   273 0001:0021A44B   274 0001:0021A45C   276 0001:0021A45E
+   278 0001:0021A470   279 0001:0021A482   282 0001:0021A496   283 0001:0021A4A4
+   285 0001:0021A4B2   286 0001:0021A4B9   287 0001:0021A4CD   288 0001:0021A4E1
+   289 0001:0021A4E8   294 0001:0021A560   295 0001:0021A565   300 0001:0021A568
+   302 0001:0021A581   303 0001:0021A58E   305 0001:0021A596   306 0001:0021A59F
+   307 0001:0021A5AD   308 0001:0021A5BA   310 0001:0021A5C3   311 0001:0021A5D3
+   313 0001:0021A5DC   315 0001:0021A5E5   316 0001:0021A5F5   317 0001:0021A5FE
+   319 0001:0021A60B   321 0001:0021A630   323 0001:0021A668   325 0001:0021A66F
+   328 0001:0021A698   330 0001:0021A69B   331 0001:0021A6A8   332 0001:0021A6B5
+   334 0001:0021A6E5
+
+Line numbers for fOrdersRefill(Orders\fOrdersRefill.pas) segment .text
+
+    45 0001:0021A974    46 0001:0021A993    47 0001:0021A997    48 0001:0021A9A4
+    49 0001:0021A9BB    50 0001:0021A9C9    51 0001:0021A9D1    52 0001:0021A9F4
+    53 0001:0021AA17    54 0001:0021AA25    53 0001:0021AA47    55 0001:0021AA4A
+    56 0001:0021AA55    58 0001:0021AA65    59 0001:0021AA6F    61 0001:0021AA7D
+    62 0001:0021AA89    63 0001:0021AA94    64 0001:0021AAA5    65 0001:0021AAB5
+    66 0001:0021AADC    59 0001:0021AADD    67 0001:0021AAE0    68 0001:0021AAE4
+    71 0001:0021AAF8    72 0001:0021AB1C    74 0001:0021AB2C    77 0001:0021AB80
+    79 0001:0021AB96    80 0001:0021AB9D    81 0001:0021ABB3    82 0001:0021ABC5
+    84 0001:0021ABD7    85 0001:0021ABE9    88 0001:0021ABFB    89 0001:0021AC0B
+    91 0001:0021AC1B    97 0001:0021AC60    99 0001:0021AC63   101 0001:0021AC99
+   102 0001:0021ACAA   104 0001:0021ACAC   105 0001:0021ACB3   106 0001:0021ACD7
+   107 0001:0021ACFB   108 0001:0021AD0B   109 0001:0021AD12   114 0001:0021AD8C
+   115 0001:0021AD91   120 0001:0021AD94   121 0001:0021AD99   125 0001:0021AD9C
+   126 0001:0021ADA1   128 0001:0021ADD0
+
+Line numbers for fMeds(fMeds.pas) segment .text
+
+   282 0001:0021BA2C   283 0001:0021BA33   284 0001:0021BA3B   285 0001:0021BA43
+   286 0001:0021BA54   287 0001:0021BA65   288 0001:0021BA76   289 0001:0021BA84
+   290 0001:0021BA92   291 0001:0021BAA0   292 0001:0021BAAE   293 0001:0021BABC
+   294 0001:0021BACA   295 0001:0021BAD8   297 0001:0021BADF   304 0001:0021BAE4
+   305 0001:0021BAEB   307 0001:0021BAF3   309 0001:0021BB08   311 0001:0021BB21
+   312 0001:0021BB31   313 0001:0021BB41   314 0001:0021BB51   315 0001:0021BB61
+   320 0001:0021BB71   321 0001:0021BB8A   323 0001:0021BB9A   325 0001:0021BBAB
+   326 0001:0021BBBB   327 0001:0021BBCB   329 0001:0021BBDB   330 0001:0021BBF2
+   331 0001:0021BC02   333 0001:0021BC19   334 0001:0021BC30   336 0001:0021BC40
+   337 0001:0021BC57   339 0001:0021BC67   340 0001:0021BC82   341 0001:0021BC9D
+   342 0001:0021BCB8   347 0001:0021BCD8   348 0001:0021BCE8   350 0001:0021BCF8
+   351 0001:0021BD0F   352 0001:0021BD26   354 0001:0021BD36   355 0001:0021BD4D
+   357 0001:0021BD5D   358 0001:0021BD74   360 0001:0021BD84   361 0001:0021BD9F
+   362 0001:0021BDBA   363 0001:0021BDD5   365 0001:0021BDF0   367 0001:0021BDF8
+   370 0001:0021BDFC   372 0001:0021BE08   373 0001:0021BE17   402 0001:0021BE1C
+   403 0001:0021BE3E   404 0001:0021BE45   405 0001:0021BE66   404 0001:0021BEA6
+   406 0001:0021BEAB   407 0001:0021BEB1   408 0001:0021BED2   407 0001:0021BF27
+   409 0001:0021BF2C   411 0001:0021BF58   412 0001:0021BF84   413 0001:0021BF89
+   416 0001:0021BF93   417 0001:0021BFB0   418 0001:0021BFCD   419 0001:0021BFE9
+   421 0001:0021C01A   423 0001:0021C061   426 0001:0021C06B   427 0001:0021C07A
+   428 0001:0021C08B   429 0001:0021C09C   430 0001:0021C0B1   431 0001:0021C0BE
+   433 0001:0021C0CC   434 0001:0021C0FC   438 0001:0021C127   440 0001:0021C135
+   441 0001:0021C165   445 0001:0021C18D   447 0001:0021C19B   448 0001:0021C1CB
+   452 0001:0021C1F1   456 0001:0021C238   458 0001:0021C242   459 0001:0021C252
+   461 0001:0021C258   463 0001:0021C2BA   466 0001:0021C330   468 0001:0021C33A
+   471 0001:0021C35F   473 0001:0021C37A   474 0001:0021C39D   475 0001:0021C3B4
+   471 0001:0021C3B7   477 0001:0021C3C2   480 0001:0021C3EB   481 0001:0021C40E
+   482 0001:0021C42A   483 0001:0021C438   484 0001:0021C446   485 0001:0021C454
+   486 0001:0021C462   487 0001:0021C46E   488 0001:0021C486   487 0001:0021C4E2
+   489 0001:0021C4E7   490 0001:0021C4EE   491 0001:0021C504   490 0001:0021C543
+   492 0001:0021C548   494 0001:0021C56F   500 0001:0021C5F1   501 0001:0021C600
+   502 0001:0021C616   503 0001:0021C63D   505 0001:0021C64F   507 0001:0021C662
+   509 0001:0021C67E   513 0001:0021C6B0   515 0001:0021C6C7   516 0001:0021C741
+   519 0001:0021C743   507 0001:0021C746   520 0001:0021C74F   503 0001:0021C752
+   522 0001:0021C75C   523 0001:0021C764   528 0001:0021C76E   529 0001:0021C77C
+   532 0001:0021C784   535 0001:0021C838   536 0001:0021C844   537 0001:0021C84F
+   538 0001:0021C85A   539 0001:0021C867   540 0001:0021C86F   550 0001:0021C874
+   551 0001:0021C894   552 0001:0021C89F   553 0001:0021C8AD   554 0001:0021C8BB
+   555 0001:0021C8C9   556 0001:0021C8D6   557 0001:0021C8EB   558 0001:0021C900
+   559 0001:0021C915   560 0001:0021C92A   561 0001:0021C93D   562 0001:0021C950
+   563 0001:0021C963   564 0001:0021C976   565 0001:0021C989   566 0001:0021C99C
+   567 0001:0021C9AF   568 0001:0021C9C4   569 0001:0021C9D9   570 0001:0021C9EE
+   571 0001:0021C9F8   572 0001:0021CA05   579 0001:0021CA1A   580 0001:0021CA1E
+   582 0001:0021CA2B   583 0001:0021CA3A   585 0001:0021CA55   587 0001:0021CA6D
+   588 0001:0021CA7B   590 0001:0021CA91   591 0001:0021CA95   593 0001:0021CA97
+   585 0001:0021CA9A   595 0001:0021CA9F   597 0001:0021CAA5   598 0001:0021CAC2
+   603 0001:0021CAE3   605 0001:0021CB02   606 0001:0021CB25   608 0001:0021CB33
+   610 0001:0021CB52   611 0001:0021CB75   613 0001:0021CB83   615 0001:0021CBA2
+   616 0001:0021CBC5   619 0001:0021CBD3   620 0001:0021CBEA   621 0001:0021CC01
+   622 0001:0021CC18   625 0001:0021CCD0   627 0001:0021CCDC   628 0001:0021CCF3
+   629 0001:0021CD0A   630 0001:0021CD21   631 0001:0021CD29   632 0001:0021CD37
+   633 0001:0021CD45   634 0001:0021CD53   635 0001:0021CD61   636 0001:0021CD6F
+   637 0001:0021CD7D   638 0001:0021CD8B   639 0001:0021CD99   640 0001:0021CDA7
+   641 0001:0021CDB5   642 0001:0021CDC3   652 0001:0021CDC8   654 0001:0021CDFD
+   655 0001:0021CE0C   656 0001:0021CE1A   657 0001:0021CE1F   658 0001:0021CE2F
+   659 0001:0021CE3F   660 0001:0021CE5C   661 0001:0021CE79   662 0001:0021CE86
+   663 0001:0021CE90   665 0001:0021CECD   666 0001:0021CEEE   668 0001:0021CEF4
+   670 0001:0021CF04   671 0001:0021CF25   673 0001:0021CF2B   674 0001:0021CF35
+   675 0001:0021CF4F   676 0001:0021CF59   678 0001:0021CF69   680 0001:0021CF74
+   682 0001:0021CF8C   684 0001:0021CFB6   685 0001:0021CFBC   687 0001:0021CFBE
+   680 0001:0021CFC1   688 0001:0021CFC6   689 0001:0021CFCC   691 0001:0021CFD7
+   692 0001:0021CFF0   693 0001:0021D017   694 0001:0021D01E   663 0001:0021D021
+   695 0001:0021D02A   696 0001:0021D034   697 0001:0021D03C   699 0001:0021D054
+   701 0001:0021D064   708 0001:0021D174   710 0001:0021D19A   711 0001:0021D1AA
+   712 0001:0021D1B4   713 0001:0021D1D1   714 0001:0021D1EE   715 0001:0021D1FB
+   716 0001:0021D205   718 0001:0021D23A   719 0001:0021D25B   720 0001:0021D261
+   721 0001:0021D273   716 0001:0021D276   722 0001:0021D27B   723 0001:0021D285
+   724 0001:0021D28D   725 0001:0021D298   733 0001:0021D3BC   734 0001:0021D3E8
+   735 0001:0021D3F9   736 0001:0021D40A   737 0001:0021D41B   738 0001:0021D425
+   740 0001:0021D431   741 0001:0021D455   743 0001:0021D467   744 0001:0021D473
+   746 0001:0021D479   747 0001:0021D489   748 0001:0021D49D   749 0001:0021D4AD
+   751 0001:0021D4C2   753 0001:0021D4C8   754 0001:0021D4D8   755 0001:0021D4E8
+   756 0001:0021D4FC   758 0001:0021D50E   760 0001:0021D514   761 0001:0021D524
+   762 0001:0021D534   763 0001:0021D544   766 0001:0021D558   767 0001:0021D566
+   768 0001:0021D574   769 0001:0021D582   771 0001:0021D5A8   772 0001:0021D5B6
+   773 0001:0021D5E5   774 0001:0021D617   769 0001:0021D61A   776 0001:0021D61F
+   778 0001:0021D645   779 0001:0021D653   780 0001:0021D682   781 0001:0021D6B4
+   776 0001:0021D6B7   783 0001:0021D6BC   785 0001:0021D6E2   786 0001:0021D6F0
+   787 0001:0021D71F   788 0001:0021D751   783 0001:0021D754   790 0001:0021D759
+   791 0001:0021D760   797 0001:0021D7C0   798 0001:0021D7E9   799 0001:0021D813
+   800 0001:0021D826   801 0001:0021D82E   803 0001:0021D84F   804 0001:0021D872
+   805 0001:0021D893   806 0001:0021D8B4   807 0001:0021D8D2   808 0001:0021D8F0
+   809 0001:0021D90E   810 0001:0021D92C   812 0001:0021D937   818 0001:0021DA0C
+   819 0001:0021DA32   820 0001:0021DA5C   822 0001:0021DA6A   823 0001:0021DA8E
+   824 0001:0021DABD   826 0001:0021DAC7   828 0001:0021DAD0   829 0001:0021DB06
+   832 0001:0021DB1F   833 0001:0021DB55   836 0001:0021DB6C   839 0001:0021DBB4
+   840 0001:0021DBC3   841 0001:0021DBCB   842 0001:0021DBD3   843 0001:0021DBF5
+   844 0001:0021DC20   845 0001:0021DC30   846 0001:0021DC44   847 0001:0021DC5C
+   850 0001:0021DC6C   851 0001:0021DC75   852 0001:0021DC85   854 0001:0021DC9D
+   857 0001:0021DCAB   865 0001:0021DD04   866 0001:0021DD2D   867 0001:0021DD35
+   868 0001:0021DD4B   869 0001:0021DD59   871 0001:0021DD77   872 0001:0021DD8D
+   873 0001:0021DD99   874 0001:0021DDD4   869 0001:0021DDD7   875 0001:0021DDDC
+   876 0001:0021DDF4   879 0001:0021DE4C   880 0001:0021DE58   881 0001:0021DE69
+   882 0001:0021DE77   883 0001:0021DE85   886 0001:0021DE93   888 0001:0021DE98
+   891 0001:0021DEA0   892 0001:0021DEAC   893 0001:0021DEBD   894 0001:0021DECB
+   895 0001:0021DED9   897 0001:0021DEE7   899 0001:0021DEEC   902 0001:0021DEF4
+   903 0001:0021DF00   904 0001:0021DF11   905 0001:0021DF1F   906 0001:0021DF2D
+   908 0001:0021DF3B   910 0001:0021DF40   921 0001:0021DF48   923 0001:0021DF74
+   924 0001:0021DF7C   925 0001:0021DF8A   926 0001:0021DF98   928 0001:0021DFC0
+   929 0001:0021DFCE   931 0001:0021DFD8   932 0001:0021DFE6   933 0001:0021DFFF
+   934 0001:0021E01E   935 0001:0021E048   936 0001:0021E07C   937 0001:0021E08E
+   938 0001:0021E094   939 0001:0021E0B2   941 0001:0021E0CF   942 0001:0021E0E8
+   943 0001:0021E0EE   945 0001:0021E10C   946 0001:0021E11C   949 0001:0021E129
+   950 0001:0021E131   962 0001:0021E168   964 0001:0021E1A6   965 0001:0021E1B4
+   966 0001:0021E1C2   967 0001:0021E1D5   969 0001:0021E1FD   970 0001:0021E20B
+   972 0001:0021E215   973 0001:0021E23F   975 0001:0021E260   977 0001:0021E277
+   979 0001:0021E27D   980 0001:0021E293   982 0001:0021E2A9   984 0001:0021E2C6
+   985 0001:0021E2E1   986 0001:0021E2FE   987 0001:0021E334   989 0001:0021E355
+   990 0001:0021E35A   992 0001:0021E37C   993 0001:0021E392   995 0001:0021E3B3
+   996 0001:0021E3C1   997 0001:0021E3CA  1002 0001:0021E3E7  1004 0001:0021E42B
+  1005 0001:0021E434  1006 0001:0021E43A  1010 0001:0021E47D  1011 0001:0021E49B
+  1012 0001:0021E4B2   990 0001:0021E4B5  1015 0001:0021E4BE  1018 0001:0021E4FC
+  1020 0001:0021E508  1021 0001:0021E51C  1024 0001:0021E520  1026 0001:0021E52C
+  1027 0001:0021E537  1032 0001:0021E53C  1036 0001:0021E548  1037 0001:0021E572
+  1036 0001:0021E582  1038 0001:0021E587  1039 0001:0021E5B1  1038 0001:0021E5C1
+  1040 0001:0021E5C6  1044 0001:0021E5CC  1045 0001:0021E5DB  1047 0001:0021E5E6
+  1048 0001:0021E60A  1050 0001:0021E61B  1055 0001:0021E620  1059 0001:0021E62C
+  1060 0001:0021E656  1059 0001:0021E666  1061 0001:0021E66B  1062 0001:0021E695
+  1061 0001:0021E6A5  1063 0001:0021E6AA  1067 0001:0021E6B0  1068 0001:0021E6BF
+  1070 0001:0021E6CA  1071 0001:0021E6EE  1073 0001:0021E6FF  1076 0001:0021E704
+  1078 0001:0021E713  1079 0001:0021E720  1081 0001:0021E72C  1082 0001:0021E740
+  1084 0001:0021E754  1085 0001:0021E761  1086 0001:0021E772  1087 0001:0021E77A
+  1090 0001:0021E780  1092 0001:0021E78F  1093 0001:0021E79C  1095 0001:0021E7A8
+  1096 0001:0021E7BC  1099 0001:0021E7D0  1100 0001:0021E7DD  1101 0001:0021E7EE
+  1102 0001:0021E7F6  1107 0001:0021E7FC  1110 0001:0021E808  1112 0001:0021E81D
+  1113 0001:0021E830  1115 0001:0021E842  1117 0001:0021E857  1118 0001:0021E86A
+  1122 0001:0021E87C  1123 0001:0021E88F  1125 0001:0021E89F  1134 0001:0021E904
+  1136 0001:0021E910  1137 0001:0021E914  1138 0001:0021E924  1139 0001:0021E92E
+  1140 0001:0021E93D  1141 0001:0021E94B  1142 0001:0021E955  1144 0001:0021E97C
+  1145 0001:0021E996  1146 0001:0021E9A1  1147 0001:0021E9B1  1149 0001:0021E9C0
+  1150 0001:0021E9D7  1151 0001:0021E9DF  1153 0001:0021E9ED  1154 0001:0021E9F3
+  1157 0001:0021EA0F  1158 0001:0021EA19  1159 0001:0021EA21  1161 0001:0021EA2E
+  1169 0001:0021EAEC  1171 0001:0021EAF8  1172 0001:0021EB08  1173 0001:0021EB12
+  1174 0001:0021EB21  1175 0001:0021EB34  1176 0001:0021EB42  1177 0001:0021EB4C
+  1179 0001:0021EB67  1180 0001:0021EB81  1181 0001:0021EB91  1183 0001:0021EB9D
+  1184 0001:0021EBB4  1185 0001:0021EBBC  1186 0001:0021EBC4  1190 0001:0021EBDF
+  1191 0001:0021EBFA  1192 0001:0021EC04  1193 0001:0021EC0C  1195 0001:0021EC19
+  1204 0001:0021ECD4  1206 0001:0021ECE0  1207 0001:0021ECF0  1208 0001:0021ECFA
+  1209 0001:0021ED09  1210 0001:0021ED17  1211 0001:0021ED21  1212 0001:0021ED3A
+  1214 0001:0021ED61  1215 0001:0021ED7B  1216 0001:0021ED8B  1218 0001:0021EDB2
+  1219 0001:0021EDC3  1220 0001:0021EDD7  1221 0001:0021EE0B  1222 0001:0021EE1E
+  1223 0001:0021EE40  1224 0001:0021EE4B  1226 0001:0021EE58  1228 0001:0021EE64
+  1229 0001:0021EE7B  1230 0001:0021EE83  1231 0001:0021EE8B  1235 0001:0021EEA6
+  1236 0001:0021EEC1  1237 0001:0021EECB  1238 0001:0021EED3  1240 0001:0021EEE0
+  1251 0001:0021EFB0  1253 0001:0021EFD8  1254 0001:0021EFE5  1255 0001:0021EFF5
+  1256 0001:0021EFFF  1257 0001:0021F003  1258 0001:0021F008  1259 0001:0021F010
+  1260 0001:0021F015  1261 0001:0021F024  1262 0001:0021F033  1263 0001:0021F041
+  1264 0001:0021F04B  1265 0001:0021F064  1266 0001:0021F07E  1267 0001:0021F08E
+  1268 0001:0021F0C2  1269 0001:0021F0E2  1270 0001:0021F0ED  1271 0001:0021F104
+  1272 0001:0021F112  1274 0001:0021F12A  1275 0001:0021F132  1277 0001:0021F142
+  1295 0001:0021F23C  1297 0001:0021F292  1298 0001:0021F29A  1299 0001:0021F2A2
+  1300 0001:0021F2AF  1301 0001:0021F2B7  1303 0001:0021F2D4  1304 0001:0021F2E0
+  1306 0001:0021F2ED  1307 0001:0021F2F9  1308 0001:0021F303  1309 0001:0021F30A
+  1310 0001:0021F30F  1311 0001:0021F317  1312 0001:0021F31C  1313 0001:0021F324
+  1314 0001:0021F329  1315 0001:0021F33B  1316 0001:0021F33F  1317 0001:0021F353
+  1318 0001:0021F357  1319 0001:0021F367  1320 0001:0021F371  1321 0001:0021F384
+  1322 0001:0021F38E  1323 0001:0021F392  1325 0001:0021F3AB  1326 0001:0021F3C2
+  1328 0001:0021F3D6  1329 0001:0021F3DA  1331 0001:0021F3F0  1332 0001:0021F3FD
+  1333 0001:0021F405  1334 0001:0021F412  1336 0001:0021F420  1337 0001:0021F437
+  1339 0001:0021F43F  1341 0001:0021F44D  1343 0001:0021F460  1344 0001:0021F464
+  1346 0001:0021F46C  1349 0001:0021F476  1350 0001:0021F483  1351 0001:0021F492
+  1352 0001:0021F4A1  1353 0001:0021F4AF  1356 0001:0021F4C1  1357 0001:0021F4F5
+  1359 0001:0021F519  1360 0001:0021F51D  1362 0001:0021F53A  1363 0001:0021F54E
+  1364 0001:0021F556  1365 0001:0021F55C  1366 0001:0021F567  1368 0001:0021F581
+  1369 0001:0021F588  1370 0001:0021F58D  1371 0001:0021F595  1372 0001:0021F59A
+  1373 0001:0021F5AC  1374 0001:0021F5B0  1375 0001:0021F5B4  1376 0001:0021F5C9
+  1377 0001:0021F5D3  1378 0001:0021F5DB  1379 0001:0021F5E5  1380 0001:0021F5F9
+  1382 0001:0021F603  1384 0001:0021F612  1385 0001:0021F616  1388 0001:0021F620
+  1389 0001:0021F624  1391 0001:0021F62C  1393 0001:0021F632  1394 0001:0021F64B
+  1395 0001:0021F64F  1396 0001:0021F659  1399 0001:0021F663  1400 0001:0021F67C
+  1402 0001:0021F680  1403 0001:0021F68A  1404 0001:0021F692  1405 0001:0021F6C2
+  1406 0001:0021F6DA  1407 0001:0021F6EE  1409 0001:0021F718  1411 0001:0021F724
+  1412 0001:0021F72C  1413 0001:0021F73B  1414 0001:0021F74C  1415 0001:0021F758
+  1416 0001:0021F771  1417 0001:0021F788  1422 0001:0021F797  1423 0001:0021F7B1
+  1424 0001:0021F7BF  1425 0001:0021F7C9  1426 0001:0021F7D1  1427 0001:0021F7DB
+  1428 0001:0021F7E3  1429 0001:0021F7ED  1430 0001:0021F7F5  1432 0001:0021F816
+  1433 0001:0021F831  1434 0001:0021F83B  1435 0001:0021F843  1436 0001:0021F84B
+  1438 0001:0021F85B  1446 0001:0021F96C  1448 0001:0021F9A8  1449 0001:0021F9AC
+  1450 0001:0021F9B1  1451 0001:0021F9B6  1452 0001:0021F9BE  1453 0001:0021F9CC
+  1454 0001:0021F9E3  1455 0001:0021F9F2  1456 0001:0021FA00  1457 0001:0021FA10
+  1458 0001:0021FA1E  1459 0001:0021FA35  1460 0001:0021FA44  1462 0001:0021FA52
+  1463 0001:0021FA5A  1464 0001:0021FABD  1465 0001:0021FAE2  1466 0001:0021FB09
+  1467 0001:0021FB2E  1468 0001:0021FB53  1470 0001:0021FB64  1477 0001:0021FBD0
+  1479 0001:0021FBDC  1480 0001:0021FBEC  1481 0001:0021FBF6  1482 0001:0021FC05
+  1483 0001:0021FC18  1484 0001:0021FC26  1485 0001:0021FC30  1487 0001:0021FC4B
+  1488 0001:0021FC65  1489 0001:0021FC75  1491 0001:0021FC81  1492 0001:0021FC98
+  1493 0001:0021FCA0  1497 0001:0021FCBB  1498 0001:0021FCD6  1499 0001:0021FCE0
+  1500 0001:0021FCE8  1502 0001:0021FCF5  1508 0001:0021FDB0  1509 0001:0021FDBC
+  1510 0001:0021FDC1  1511 0001:0021FDE4  1512 0001:0021FE07  1513 0001:0021FE28
+  1514 0001:0021FE3D  1524 0001:0021FE60  1525 0001:0021FE8B  1526 0001:0021FE9A
+  1527 0001:0021FEA8  1529 0001:0021FEDD  1531 0001:0021FF43  1532 0001:0021FF50
+  1534 0001:0021FF65  1535 0001:0021FFAD  1536 0001:0021FFCA  1537 0001:0021FFEA
+  1538 0001:0022000B  1539 0001:00220019  1541 0001:00220042  1542 0001:0022007E
+  1543 0001:0022008B  1545 0001:00220090  1546 0001:00220098  1547 0001:002200B6
+  1548 0001:002200C3  1550 0001:002200E0  1552 0001:002200F5  1553 0001:00220104
+  1554 0001:00220112  1555 0001:00220120  1558 0001:00220134  1560 0001:00220151
+  1561 0001:0022017D  1562 0001:002201A0  1564 0001:002201AD  1565 0001:002201D8
+  1527 0001:002201DB  1566 0001:002201E4  1576 0001:002202C0  1577 0001:002202FD
+  1578 0001:0022030B  1579 0001:0022031A  1580 0001:00220322  1581 0001:00220344
+  1583 0001:00220357  1584 0001:0022039F  1585 0001:002203BC  1586 0001:002203DC
+  1587 0001:002203FD  1588 0001:00220408  1590 0001:00220417  1592 0001:00220426
+  1593 0001:00220443  1595 0001:00220472  1596 0001:0022047F  1600 0001:00220481
+  1601 0001:00220498  1602 0001:0022049E  1603 0001:002204BD  1605 0001:002204CE
+  1606 0001:002204D9  1608 0001:002204E7  1580 0001:002204EA  1609 0001:002204F3
+  1610 0001:002204FB  1613 0001:002205B0  1614 0001:002205BF  1615 0001:002205CA
+  1618 0001:002205D0  1621 0001:002205DC  1624 0001:002205E0  1627 0001:002205EC
+  1632 0001:002205F0  1635 0001:002205FC  1636 0001:00220626  1635 0001:00220636
+  1637 0001:0022063B  1638 0001:00220665  1637 0001:00220675  1639 0001:0022067A
+  1642 0001:00220680  1644 0001:0022068C  1645 0001:00220697  1648 0001:0022069C
+  1650 0001:002206A8  1651 0001:002206BC  1655 0001:002206C0  1656 0001:002206CF
+  1658 0001:002206DA  1659 0001:002206FE  1661 0001:0022070F  1664 0001:00220714
+  1666 0001:00220723  1667 0001:00220730  1669 0001:0022073C  1670 0001:00220750
+  1672 0001:00220764  1673 0001:00220771  1674 0001:00220782  1675 0001:0022078A
+  1694 0001:00220790  1696 0001:0022079C  1699 0001:002207A9  1701 0001:002207B6
+  1702 0001:002207C9  1703 0001:002207DE  1704 0001:00220800  1706 0001:00220827
+  1707 0001:0022083A  1711 0001:0022084B  1716 0001:00220854  1717 0001:0022086C
+  1718 0001:00220877  1719 0001:00220882  1722 0001:002208A4  1724 0001:002208B0
+  1726 0001:002208BC  1727 0001:002208EB  1729 0001:002208F6  1732 0001:002208FC
+  1734 0001:00220908  1736 0001:00220914  1737 0001:00220943  1739 0001:0022094E
+  1742 0001:00220954  1744 0001:00220960  1746 0001:0022096C  1747 0001:0022099B
+  1749 0001:002209A6  1752 0001:002209AC  1754 0001:002209B8  1755 0001:002209C5
+  1758 0001:002209CC  1760 0001:002209DB  1761 0001:002209E8  1764 0001:002209F0
+  1766 0001:002209FC  1767 0001:00220A0F  1770 0001:00220A14  1772 0001:00220A20
+  1773 0001:00220A33  1782 0001:00220A38  1787 0001:00220A5E  1788 0001:00220A62
+  1790 0001:00220A6F  1791 0001:00220A7E  1793 0001:00220A99  1795 0001:00220AB1
+  1796 0001:00220ABF  1798 0001:00220AD5  1799 0001:00220AD9  1801 0001:00220ADB
+  1793 0001:00220ADE  1803 0001:00220AE3  1805 0001:00220AED  1806 0001:00220B0A
+  1807 0001:00220B2B  1808 0001:00220B3A  1809 0001:00220B49  1810 0001:00220B8B
+  1814 0001:00220BB3  1850 0001:00220C58  1851 0001:00220C64  1853 0001:00220C69
+  1854 0001:00220C86  1855 0001:00220CAA  1854 0001:00220CCA  1857 0001:00220CCF
+  1858 0001:00220CEC  1859 0001:00220D10  1858 0001:00220D30  1861 0001:00220D35
+  1862 0001:00220D52  1863 0001:00220D76  1862 0001:00220D96  1864 0001:00220D9B
+  1871 0001:00220DE4  1872 0001:00220DF0  1873 0001:00220E0D  1874 0001:00220E31
+  1873 0001:00220E58  1876 0001:00220E5D  1877 0001:00220E7A  1878 0001:00220E9E
+  1877 0001:00220EC5  1880 0001:00220ECA  1881 0001:00220EE7  1882 0001:00220F0B
+  1881 0001:00220F32  1883 0001:00220F37  1886 0001:00220F7C  1887 0001:00220FA3
+  1888 0001:00220FCD  1891 0001:00221004  1893 0001:00221013  1894 0001:0022101E
+  1897 0001:00221024  1899 0001:00221033  1900 0001:0022103E  1903 0001:00221044
+  1905 0001:00221053  1906 0001:0022105E  1913 0001:00221064  1915 0001:00221073
+  1916 0001:00221081  1918 0001:00221099  1919 0001:0022109E  1920 0001:002210C2
+  1919 0001:002210D2  1921 0001:002210D7  1923 0001:002210DF  1924 0001:00221103
+  1923 0001:0022112C  1925 0001:00221131  1929 0001:00221142  1931 0001:00221161
+  1932 0001:00221184  1935 0001:00221192  1936 0001:002211AD  1937 0001:002211C8
+  1944 0001:002211D0  1946 0001:002211DF  1947 0001:002211ED  1949 0001:00221205
+  1950 0001:0022120A  1951 0001:0022122E  1950 0001:0022123E  1952 0001:00221243
+  1954 0001:0022124B  1955 0001:0022126F  1954 0001:00221298  1956 0001:0022129D
+  1960 0001:002212AE  1962 0001:002212CD  1963 0001:002212F0  1966 0001:002212FE
+  1967 0001:00221319  1968 0001:00221334  1975 0001:0022133C  1977 0001:0022134B
+  1978 0001:00221359  1980 0001:00221371  1981 0001:00221376  1982 0001:0022139A
+  1981 0001:002213AA  1983 0001:002213AF  1985 0001:002213B7  1986 0001:002213DB
+  1985 0001:00221404  1987 0001:00221409  1991 0001:0022141A  1993 0001:00221439
+  1994 0001:0022145C  1997 0001:0022146A  1998 0001:00221485  1999 0001:002214A0
+  2004 0001:002214A8  2005 0001:002214B1  2006 0001:002214CF  2007 0001:002214E4
+  2005 0001:002214FD  2008 0001:00221502  2009 0001:00221510  2019 0001:00221514
+  2020 0001:00221533  2021 0001:00221537  2022 0001:00221546  2023 0001:00221553
+  2024 0001:00221561  2026 0001:0022158B  2027 0001:00221599  2028 0001:002215B7
+  2029 0001:002215C2  2024 0001:002215C5  2030 0001:002215CA  2032 0001:002215D0
+  2033 0001:002215DB  2035 0001:002215E3  2037 0001:002215E9  2038 0001:002215FE
+  2040 0001:00221612  2048 0001:002216C8  2049 0001:002216F7  2050 0001:00221706
+  2051 0001:00221714  2053 0001:00221749  2054 0001:00221791  2055 0001:002217CE
+  2056 0001:002217EF  2057 0001:002217FA  2051 0001:002217FD  2058 0001:00221806
+  2059 0001:0022181E  2062 0001:00221850  2064 0001:0022185C  2065 0001:0022186B
+  2068 0001:00221870  2070 0001:00221892  2071 0001:002218B4  2072 0001:002218D6
+  2073 0001:002218F8  2074 0001:0022193F  2075 0001:00221986  2076 0001:002219A8
+  2077 0001:002219CA  2078 0001:002219EC  2079 0001:00221A0E  2084 0001:00221A40
+  2085 0001:00221A4C  2086 0001:00221A5E  2087 0001:00221A68  2088 0001:00221A79
+  2089 0001:00221A81  2091 0001:00221A8A  2093 0001:00221A96  2094 0001:00221AAE
+  2095 0001:00221AC9  2096 0001:00221AE4  2098 0001:00221AFF  2099 0001:00221B28
+  2101 0001:00221B39  2103 0001:00221B45  2104 0001:00221B5D  2105 0001:00221B78
+  2106 0001:00221B93  2107 0001:00221BAE  2109 0001:00221BC9  2110 0001:00221BF2
+  2111 0001:00221C03  2113 0001:00221C0F  2114 0001:00221C27  2115 0001:00221C42
+  2116 0001:00221C5D  2117 0001:00221C78  2118 0001:00221C93  2120 0001:00221CAE
+  2121 0001:00221CD7  2122 0001:00221CE8  2126 0001:00221CEC  2129 0001:00221CFB
+  2130 0001:00221D06  2134 0001:00221D0C  2137 0001:00221D1B  2138 0001:00221D26
+  2142 0001:00221D2C  2145 0001:00221D3B  2146 0001:00221D46  2149 0001:00221D4C
+  2151 0001:00221D58  2152 0001:00221D65  2153 0001:00221D75  2154 0001:00221D89
+  2155 0001:00221D99  2156 0001:00221DA9  2157 0001:00221DB1  2161 0001:00221DB8
+  2163 0001:00221DC4  2164 0001:00221DD1  2165 0001:00221DE1  2166 0001:00221DF1
+  2167 0001:00221E05  2168 0001:00221E15  2169 0001:00221E1D  2173 0001:00221E24
+  2175 0001:00221E30  2176 0001:00221E3D  2177 0001:00221E4D  2178 0001:00221E5D
+  2179 0001:00221E6D  2180 0001:00221E81  2181 0001:00221E89
+
+Line numbers for fMeds(fMeds.pas) segment .itext
+
+  2183 0002:00001420  2184 0002:0000143A  2186 0002:00001444
+
+Line numbers for fPrintLocation(fPrintLocation.pas) segment .text
+
+    88 0001:00222260    90 0001:00222265    92 0001:0022227A    93 0001:00222298
+    90 0001:00222299    94 0001:0022229C   100 0001:002222A0   101 0001:002222BE
+   102 0001:002222D8   103 0001:002222F2   105 0001:0022231C   106 0001:0022232D
+   108 0001:00222332   110 0001:00222344   112 0001:00222361   114 0001:00222379
+   115 0001:0022238A   117 0001:0022238F   118 0001:002223D5   119 0001:00222419
+   110 0001:0022241A   121 0001:00222423   122 0001:0022242A   123 0001:0022242E
+   124 0001:00222441   125 0001:00222451   130 0001:00222520   132 0001:00222525
+   134 0001:0022253A   135 0001:00222558   132 0001:00222559   136 0001:0022255C
+   139 0001:00222560   140 0001:00222577   141 0001:002225A1   145 0001:002225C4
+   146 0001:002225CF   153 0001:002225D0   155 0001:002225F6   157 0001:00222603
+   158 0001:0022261D   159 0001:00222637   161 0001:00222661   162 0001:00222672
+   163 0001:00222678   165 0001:0022267D   167 0001:0022269A   169 0001:002226B2
+   170 0001:002226C3   171 0001:002226C9   173 0001:002226CE   174 0001:00222714
+   175 0001:00222758   165 0001:00222759   176 0001:00222762   178 0001:00222769
+   179 0001:0022276F   182 0001:0022283C   183 0001:00222842   184 0001:0022284B
+   185 0001:00222854   207 0001:00222858   209 0001:00222885   211 0001:002228CD
+   216 0001:002228F8   217 0001:00222920   223 0001:00222924   225 0001:0022292D
+   226 0001:00222946   227 0001:00222952   229 0001:00222969   230 0001:00222979
+   234 0001:00222987   244 0001:00222990   246 0001:002229BB   249 0001:002229C4
+   250 0001:002229DE   251 0001:00222A0D   253 0001:00222A1C   254 0001:00222A5F
+   255 0001:00222A6E   256 0001:00222A7D   257 0001:00222A9C   258 0001:00222ABA
+   259 0001:00222ACC   260 0001:00222ADE   261 0001:00222AF9   262 0001:00222B11
+   263 0001:00222B2F   267 0001:00222B52   268 0001:00222B9A   269 0001:00222BC3
+   270 0001:00222C06   271 0001:00222C2B   272 0001:00222C50   273 0001:00222C82
+   274 0001:00222CB4   275 0001:00222CC0   276 0001:00222CD9   278 0001:00222CE9
+   280 0001:00222CFB   281 0001:00222D03   283 0001:00222D1B   285 0001:00222D38
+   287 0001:00222D4A   288 0001:00222D52   290 0001:00222D6D   291 0001:00222D8D
+   293 0001:00222D9C   294 0001:00222DAA   295 0001:00222DB3   296 0001:00222DC4
+   297 0001:00222DEB   298 0001:00222E12   299 0001:00222E2B   300 0001:00222E44
+   301 0001:00222E62   302 0001:00222E7B   303 0001:00222E89   304 0001:00222E9B
+   305 0001:00222E9E   306 0001:00222EA7   307 0001:00222EA9   308 0001:00222EBF
+   309 0001:00222EC9   311 0001:00222ED1   313 0001:00222EDE   314 0001:00222EFD
+   315 0001:00222F10   317 0001:00222F37   320 0001:00222F3E   322 0001:00222F4B
+   323 0001:00222F5F   325 0001:00222F77   335 0001:0022313C   336 0001:00223181
+   337 0001:00223197   338 0001:002231A0   339 0001:002231A9   340 0001:002231BA
+   341 0001:002231CB   342 0001:002231E3   343 0001:002231FD   344 0001:0022320C
+   345 0001:0022321B   346 0001:0022322A   347 0001:0022323B   348 0001:00223242
+   349 0001:0022325A   351 0001:00223271   352 0001:00223291   353 0001:002232C4
+   354 0001:002232DC   355 0001:002232F4   349 0001:002232F5   356 0001:002232FE
+   357 0001:00223319   358 0001:00223334   360 0001:00223345   361 0001:00223360
+   363 0001:0022337B   364 0001:00223385   365 0001:0022339E   366 0001:002233B7
+   367 0001:002233D8   368 0001:002233F5   369 0001:00223412   374 0001:00223426
+   375 0001:00223447   377 0001:00223453   379 0001:00223463   381 0001:00223477
+   388 0001:0022349E   390 0001:002234AA   391 0001:002234B1   398 0001:00223504
+   399 0001:00223532   400 0001:00223541   402 0001:00223553   403 0001:0022358E
+   400 0001:0022358F   404 0001:00223592   406 0001:002235A4   407 0001:002235DF
+   404 0001:002235E0   408 0001:002235E3   409 0001:002235F2   410 0001:002235FC
+   416 0001:00223634   418 0001:00223650   419 0001:00223664   420 0001:00223671
+   421 0001:002236A5   432 0001:002236F8   435 0001:00223703   436 0001:00223724
+   438 0001:0022375C   439 0001:00223765   440 0001:0022376C   441 0001:00223773
+   443 0001:0022377D   448 0001:00223784   449 0001:002237A9   450 0001:002237B4
+   451 0001:002237CC   450 0001:002237F7   452 0001:002237FA   453 0001:00223811
+   455 0001:00223838   458 0001:0022385B   461 0001:00223861   463 0001:00223869
+   464 0001:0022387D   465 0001:00223891   469 0001:002238A1   476 0001:002238C8
+   478 0001:00223902   479 0001:00223918   480 0001:00223921   481 0001:0022392A
+   482 0001:00223943   483 0001:00223952   484 0001:00223961   485 0001:00223970
+   486 0001:0022397F   487 0001:00223986   488 0001:002239A1   489 0001:002239BC
+   490 0001:002239C8   491 0001:002239D2   492 0001:002239EF   493 0001:00223A0C
+   495 0001:00223A20   496 0001:00223A2F   497 0001:00223A41   498 0001:00223A53
+   501 0001:00223A61   503 0001:00223A75   507 0001:00223A98   509 0001:00223AA4
+   510 0001:00223AAB   514 0001:00223B08   515 0001:00223B2E   516 0001:00223B35
+   517 0001:00223B4C   518 0001:00223B52   519 0001:00223B61   520 0001:00223B82
+   521 0001:00223BA6   523 0001:00223BC8
+
+Line numbers for fPrintLocation(fPrintLocation.pas) segment .itext
+
+   525 0002:0000145C
+
+Line numbers for fReview(fReview.pas) segment .text
+
+   168 0001:002241B0   169 0001:002241D0   171 0001:002241DA   173 0001:002241EF
+   210 0001:00224210   211 0001:00224240   212 0001:00224248   213 0001:00224256
+   214 0001:0022425D   216 0001:0022426B   218 0001:00224275   220 0001:00224289
+   221 0001:002242A9   223 0001:002242B6   224 0001:002242D6   226 0001:002242D8
+   218 0001:002242D9   228 0001:002242DF   237 0001:00224318   238 0001:0022431B
+   239 0001:0022431D   241 0001:00224328   242 0001:0022432A   243 0001:0022434C
+   244 0001:00224362   242 0001:00224364   246 0001:00224367   248 0001:00224369
+   254 0001:00224370   255 0001:0022437C   256 0001:00224380   257 0001:00224391
+   258 0001:002243AA   259 0001:002243B8   260 0001:002243CF   261 0001:002243DE
+   263 0001:002243E8   265 0001:002243F9   266 0001:00224405   267 0001:0022440F
+   268 0001:0022442F   267 0001:0022443B   269 0001:0022443E   270 0001:0022444E
+   275 0001:00224457   277 0001:0022447E   278 0001:0022448A   279 0001:00224494
+   280 0001:002244A1   283 0001:002244B0   285 0001:002244C3   286 0001:002244DB
+   288 0001:002244E5   290 0001:002244EF   292 0001:00224501   293 0001:0022450E
+   299 0001:0022452A   300 0001:00224539   302 0001:0022454B   307 0001:00224558
+   308 0001:0022456E   309 0001:00224575   310 0001:0022457C   311 0001:00224586
+   312 0001:002245C0   313 0001:002245D0   314 0001:002245DE   315 0001:002245EE
+   317 0001:002245FC   319 0001:0022460A   320 0001:0022461A   321 0001:00224631
+   322 0001:0022463E   323 0001:00224655   324 0001:00224669   325 0001:00224679
+   326 0001:00224686   329 0001:0022468F   333 0001:002246EC   334 0001:0022470C
+   335 0001:00224722   339 0001:00224744   340 0001:0022474B   343 0001:00224763
+   345 0001:0022476D   348 0001:0022477A   349 0001:00224780   351 0001:0022478F
+   355 0001:002247A1   356 0001:002247B0   357 0001:002247C1   358 0001:002247D2
+   362 0001:002247E1   365 0001:002247E7   366 0001:002247F6   369 0001:00224805
+   373 0001:0022482C   374 0001:00224832   375 0001:0022483E   376 0001:0022484E
+   377 0001:0022485E   379 0001:0022486E   384 0001:00224874   385 0001:00224877
+   386 0001:00224879   388 0001:00224896   391 0001:002248AC   395 0001:002248C8
+   396 0001:002248E6   398 0001:002248E8   386 0001:002248E9   399 0001:002248EC
+   409 0001:002248F4   410 0001:0022491A   411 0001:0022492B   412 0001:00224935
+   413 0001:0022493D   414 0001:0022494B   416 0001:00224955   418 0001:0022495F
+   420 0001:00224973   422 0001:00224996   423 0001:002249C5   425 0001:002249E2
+   426 0001:002249F6   427 0001:00224A21   423 0001:00224A24   428 0001:00224A29
+   429 0001:00224A35   420 0001:00224A38   433 0001:00224A41   435 0001:00224A51
+   436 0001:00224A5D   438 0001:00224A7A   439 0001:00224A8E   440 0001:00224A9A
+   441 0001:00224AA3   436 0001:00224AA6   442 0001:00224AAB   443 0001:00224AB1
+   445 0001:00224ABD   448 0001:00224AC7   450 0001:00224ACB   452 0001:00224ADF
+   453 0001:00224AF0   454 0001:00224AF4   456 0001:00224B17   457 0001:00224B1B
+   459 0001:00224B7F   460 0001:00224BA9   461 0001:00224BDC   464 0001:00224C01
+   466 0001:00224C0B   467 0001:00224C1A   470 0001:00224C2B   472 0001:00224C4C
+   473 0001:00224C60   475 0001:00224CA5   477 0001:00224CAB   478 0001:00224CB5
+   479 0001:00224CB9   481 0001:00224CBD   482 0001:00224CC8   484 0001:00224CDD
+   485 0001:00224D04   486 0001:00224D08   470 0001:00224D0B   487 0001:00224D14
+   488 0001:00224D26   489 0001:00224D3B   454 0001:00224D3E   491 0001:00224D47
+   493 0001:00224D51   494 0001:00224D63   495 0001:00224D6F   497 0001:00224D8C
+   498 0001:00224DA0   500 0001:00224DD6   501 0001:00224DE1   503 0001:00224DF4
+   495 0001:00224DF7   507 0001:00224DFC   508 0001:00224E14   509 0001:00224E20
+   510 0001:00224E2C   511 0001:00224E38   512 0001:00224E5E   516 0001:00224E68
+   518 0001:00224E72   520 0001:00224E86   522 0001:00224E93   525 0001:00224EAD
+   526 0001:00224EBA   527 0001:00224EC7   528 0001:00224ED4   531 0001:00224EEE
+   532 0001:00224EFB   535 0001:00224F11   536 0001:00224F1E   539 0001:00224F2B
+   540 0001:00224F3F   541 0001:00224F48   543 0001:00224F58   544 0001:00224F68
+   546 0001:00224F71   547 0001:00224F8D   548 0001:00224F9F   550 0001:00224FAF
+   551 0001:00224FDD   552 0001:00224FED   556 0001:0022500A   557 0001:0022502E
+   559 0001:00225040   563 0001:00225050   565 0001:0022505A   566 0001:0022506C
+   570 0001:0022508A   572 0001:002250A4   574 0001:002250B1   576 0001:002250CD
+   578 0001:002250D6   579 0001:002250DD   584 0001:002250F2   586 0001:002250FF
+   588 0001:0022511B   590 0001:00225124   591 0001:0022512B   594 0001:00225140
+   599 0001:00225350   600 0001:00225357   604 0001:00225358   605 0001:0022535F
+   611 0001:00225360   612 0001:00225364   613 0001:00225366   615 0001:0022538E
+   616 0001:00225390   617 0001:00225392   613 0001:00225393   618 0001:00225396
+   625 0001:002253A0   626 0001:002253A9   627 0001:002253AD   628 0001:002253C1
+   631 0001:002253C5   632 0001:002253D4   633 0001:002253E2   635 0001:002253F7
+   636 0001:0022540A   637 0001:00225415   633 0001:00225416   638 0001:00225419
+   640 0001:00225431   644 0001:00225441   645 0001:00225445   656 0001:00225450
+   657 0001:00225475   659 0001:0022549A   660 0001:002254B5   661 0001:002254C6
+   663 0001:002254DE   664 0001:002254F5   666 0001:00225516   657 0001:00225517
+   667 0001:0022551A   669 0001:00225540   670 0001:00225549   672 0001:00225552
+   673 0001:0022556B   675 0001:00225579   677 0001:0022557D   680 0001:0022559A
+   681 0001:002255C5   682 0001:002255D5   686 0001:002255F2   688 0001:0022560A
+   704 0001:00225610   705 0001:00225621   706 0001:0022562E   707 0001:0022563A
+   708 0001:00225646   710 0001:0022564C   712 0001:0022568F   713 0001:00225696
+   714 0001:0022569E   716 0001:002256AA   718 0001:002256B8   720 0001:002256BC
+   722 0001:002256C5   723 0001:002256D6   724 0001:002256DB   726 0001:002256F5
+   728 0001:00225703   730 0001:00225716   732 0001:00225741   733 0001:00225761
+   735 0001:0022577E   741 0001:0022579C   743 0001:002257A6   744 0001:002257DA
+   748 0001:002257F2   749 0001:002257FC   751 0001:00225829   754 0001:00225837
+   755 0001:00225851   756 0001:00225868   758 0001:0022587D   759 0001:00225894
+   760 0001:0022589D   761 0001:002258C3   763 0001:002258DD   764 0001:002258E6
+   765 0001:002258EC   766 0001:002258F9   769 0001:00225901   771 0001:00225929
+   774 0001:00225943   775 0001:0022595F   777 0001:0022596E   780 0001:0022598F
+   781 0001:0022599D   783 0001:002259AD   784 0001:002259BC   785 0001:002259C7
+   786 0001:002259DD   787 0001:002259FB   788 0001:00225A0F   790 0001:00225A3F
+   793 0001:00225A4F   794 0001:00225A69   795 0001:00225A7D   801 0001:00225AA0
+   803 0001:00225AAC   804 0001:00225AC6   805 0001:00225ADA   808 0001:00225AFB
+   769 0001:00225AFE   816 0001:00225B0C   818 0001:00225B15   819 0001:00225B26
+   821 0001:00225B2B   823 0001:00225B39   825 0001:00225B4C   827 0001:00225B77
+   828 0001:00225B97   830 0001:00225BB4   832 0001:00225BCE   833 0001:00225BE8
+   834 0001:00225BFB   835 0001:00225C0B   836 0001:00225C15   841 0001:00225C44
+   844 0001:00225C9C   845 0001:00225C9F   846 0001:00225CAF   848 0001:00225CC1
+   849 0001:00225CCE   850 0001:00225CDB   851 0001:00225CE8   852 0001:00225D07
+   853 0001:00225D19   856 0001:00225D2B   857 0001:00225D38   858 0001:00225D45
+   859 0001:00225D52   860 0001:00225D62   861 0001:00225D72   863 0001:00225D82
+   866 0001:00225D84   867 0001:00225DA0   868 0001:00225DAC   871 0001:00225DBE
+   873 0001:00225DF4   876 0001:00225E1F   907 0001:00225E74   908 0001:00225E8F
+   909 0001:00225E93   911 0001:00225EA8   912 0001:00225EE0   913 0001:00225F18
+   914 0001:00225F1E   909 0001:00225F1F   915 0001:00225F22   921 0001:00225F68
+   922 0001:00225F84   924 0001:00225F88   926 0001:00225FA1   927 0001:00225FC4
+   928 0001:00225FD2   931 0001:0022601A   932 0001:0022601E   934 0001:00226020
+   924 0001:00226021   935 0001:00226028   938 0001:00226070   939 0001:00226096
+   940 0001:0022609D   941 0001:002260A5   942 0001:002260A9   943 0001:002260AE
+   944 0001:002260B6   945 0001:002260BD   947 0001:002260C7   948 0001:002260D1
+   950 0001:002260DD   952 0001:002260F0   954 0001:00226101   956 0001:00226132
+   957 0001:00226143   958 0001:00226154   959 0001:00226162   961 0001:00226167
+   964 0001:00226193   967 0001:002261A7   968 0001:002261B6   969 0001:002261C5
+   970 0001:002261D4   971 0001:002261E3   972 0001:002261E7   973 0001:002261EB
+   974 0001:002261F2   975 0001:00226200   976 0001:00226204   979 0001:00226222
+   980 0001:00226226   981 0001:0022622A   982 0001:0022622E   984 0001:0022623E
+   985 0001:0022625D   986 0001:00226287   987 0001:0022628D   988 0001:00226291
+   989 0001:002262C1   990 0001:002262DC   991 0001:002262F7   992 0001:00226312
+   993 0001:00226316   995 0001:00226325   996 0001:00226329   997 0001:0022632D
+  1000 0001:00226331  1002 0001:0022633B  1003 0001:00226345  1004 0001:0022634D
+  1006 0001:00226378  1007 0001:00226392  1009 0001:002263A9  1010 0001:002263D2
+  1012 0001:002263E2  1013 0001:002263F7  1014 0001:00226427  1017 0001:00226429
+  1004 0001:0022642C  1018 0001:00226438  1019 0001:0022643F  1022 0001:00226475
+  1023 0001:00226485  1025 0001:0022649A  1026 0001:002264B8  1027 0001:002264C8
+  1031 0001:002264D2  1033 0001:002264FD  1034 0001:0022650E  1036 0001:0022653E
+  1037 0001:002265B0  1038 0001:002265BE  1039 0001:002265F4  1041 0001:00226636
+  1042 0001:0022665A  1044 0001:0022669C  1031 0001:0022669F  1049 0001:002266B0
+  1050 0001:002266B4  1052 0001:002266EB  1053 0001:002266EF  1054 0001:00226706
+  1056 0001:0022671D  1057 0001:0022673C  1059 0001:00226750  1060 0001:00226754
+  1061 0001:00226758  1064 0001:0022678F  1065 0001:00226793  1066 0001:002267A1
+  1067 0001:002267C1  1068 0001:002267D1  1069 0001:00226809  1071 0001:00226828
+  1073 0001:0022682E  1077 0001:00226837  1080 0001:00226866  1081 0001:00226870
+  1082 0001:0022687E  1083 0001:0022689C  1085 0001:002268C8  1086 0001:002268FC
+  1088 0001:00226900  1089 0001:00226913  1090 0001:00226926  1091 0001:00226939
+  1092 0001:00226943  1093 0001:00226951  1094 0001:00226961  1095 0001:00226973
+  1096 0001:00226998  1097 0001:002269BD  1098 0001:002269E2  1099 0001:00226A07
+  1101 0001:00226A31  1102 0001:00226A5B  1103 0001:00226A85  1107 0001:00226AB4
+  1108 0001:00226B34  1111 0001:00226B53  1113 0001:00226B59  1114 0001:00226B96
+  1117 0001:00226B9F  1121 0001:00226BA9  1122 0001:00226BB1  1123 0001:00226BD0
+  1124 0001:00226BDA  1129 0001:00226C31  1131 0001:00226C49  1136 0001:00226C91
+  1140 0001:00226D05  1141 0001:00226D0F  1142 0001:00226D4F  1143 0001:00226D53
+  1145 0001:00226D59  1147 0001:00226D68  1148 0001:00226D6C  1151 0001:00226D72
+  1152 0001:00226D76  1155 0001:00226D7C  1156 0001:00226D80  1160 0001:00226D84
+  1164 0001:00226DA6  1165 0001:00226E32  1166 0001:00226EA9  1167 0001:00226F49
+  1170 0001:00226FBB  1050 0001:00226FBE  1173 0001:00226FCA  1174 0001:00226FD4
+  1175 0001:00226FE4  1178 0001:00226FF0  1180 0001:0022700A  1182 0001:00227015
+  1184 0001:00227023  1185 0001:00227049  1188 0001:0022704F  1189 0001:00227060
+  1193 0001:0022706A  1196 0001:00227070  1199 0001:00227074  1201 0001:0022707E
+  1203 0001:002270A4  1205 0001:002270AD  1206 0001:002270BE  1215 0001:002270C8
+  1217 0001:002270F8  1218 0001:00227106  1219 0001:00227110  1222 0001:00227120
+  1224 0001:00227184  1230 0001:00227221  1232 0001:00227238  1233 0001:00227247
+  1234 0001:00227257  1235 0001:00227266  1236 0001:0022727F  1240 0001:00227293
+  1241 0001:002272A3  1242 0001:002272B0  1243 0001:002272C0  1244 0001:002272D6
+  1246 0001:002272E4  1247 0001:002272FD  1253 0001:00227301  1254 0001:00227310
+  1256 0001:0022733B  1257 0001:00227369  1258 0001:00227382  1260 0001:00227388
+  1261 0001:00227393  1263 0001:00227395  1264 0001:002273A4  1265 0001:002273BA
+  1266 0001:002273C0  1267 0001:002273C6  1268 0001:002273EF  1254 0001:002273F2
+  1269 0001:002273FE  1270 0001:0022740A  1274 0001:0022745A  1275 0001:00227487
+  1276 0001:00227495  1279 0001:0022749C  1281 0001:002274A8  1282 0001:002274C3
+  1281 0001:002274E5  1283 0001:002274ED  1284 0001:002274F9  1286 0001:00227512
+  1289 0001:00227520  1291 0001:0022755E  1297 0001:002275FB  1299 0001:00227612
+  1300 0001:00227621  1301 0001:00227631  1302 0001:00227640  1303 0001:00227659
+  1307 0001:0022766D  1308 0001:0022767D  1309 0001:0022768A  1310 0001:0022769A
+  1311 0001:002276B0  1313 0001:002276BE  1314 0001:002276EB  1317 0001:002276F9
+  1318 0001:00227702  1322 0001:0022770C  1323 0001:00227712  1324 0001:0022771C
+  1326 0001:00227727  1328 0001:00227746  1330 0001:00227788  1331 0001:002277CC
+  1333 0001:002277DC  1334 0001:00227818  1338 0001:0022788B  1342 0001:002278EF
+  1343 0001:0022792D  1344 0001:0022797D  1326 0001:00227980  1345 0001:0022798C
+  1347 0001:002279AB  1349 0001:002279BF  1351 0001:002279FC  1352 0001:00227A06
+  1354 0001:00227A08  1355 0001:00227A3C  1356 0001:00227A4B  1347 0001:00227A4C
+  1358 0001:00227A55  1359 0001:00227A64  1360 0001:00227A72  1361 0001:00227A87
+  1362 0001:00227A9E  1364 0001:00227ABA  1366 0001:00227ACA  1367 0001:00227AE2
+  1368 0001:00227B0A  1370 0001:00227B24  1371 0001:00227B2B  1373 0001:00227B3A
+  1374 0001:00227B58  1375 0001:00227B94  1376 0001:00227BA3  1377 0001:00227BB2
+  1378 0001:00227BC1  1382 0001:00227BEC  1383 0001:00227BF4  1384 0001:00227BFC
+  1385 0001:00227C04  1387 0001:00227C14  1392 0001:00227C1E  1394 0001:00227C49
+  1395 0001:00227C5A  1396 0001:00227C64  1397 0001:00227C8B  1398 0001:00227C99
+  1399 0001:00227CB3  1400 0001:00227CCC  1401 0001:00227CDA  1402 0001:00227CF4
+  1403 0001:00227D0A  1404 0001:00227D18  1405 0001:00227D2F  1406 0001:00227D45
+  1408 0001:00227D4F  1409 0001:00227D5D  1410 0001:00227D74  1413 0001:00227D88
+  1392 0001:00227D8B  1414 0001:00227D97  1417 0001:00227DAB  1419 0001:00227DC8
+  1420 0001:00227DDA  1421 0001:00227DEB  1423 0001:00227DF1  1424 0001:00227DFF
+  1425 0001:00227E05  1427 0001:00227E16  1417 0001:00227E19  1428 0001:00227E1F
+  1429 0001:00227E24  1430 0001:00227E34  1431 0001:00227E3C  1437 0001:0022867C
+  1438 0001:00228681  1440 0001:00228687  1441 0001:00228696  1443 0001:0022869B
+  1444 0001:002286AD  1447 0001:002286BC  1453 0001:002286C0  1454 0001:002286C5
+  1461 0001:002286C8  1463 0001:002286F0  1464 0001:002286F7  1466 0001:00228710
+  1467 0001:0022871D  1468 0001:0022872B  1469 0001:0022874C  1470 0001:0022876F
+  1474 0001:0022877D  1477 0001:00228788  1481 0001:002287B8  1482 0001:002287C9
+  1483 0001:002287DA  1497 0001:002287DC  1499 0001:00228803  1500 0001:00228823
+  1502 0001:0022882B  1504 0001:00228837  1507 0001:00228843  1509 0001:00228851
+  1512 0001:00228865  1513 0001:0022886E  1514 0001:0022888A  1516 0001:002288AD
+  1518 0001:002288BD  1519 0001:002288CB  1520 0001:002288D9  1522 0001:002288F9
+  1524 0001:0022890C  1525 0001:00228916  1529 0001:0022892A  1530 0001:00228959
+  1531 0001:00228988  1532 0001:002289B7  1535 0001:002289E6  1539 0001:00228A56
+  1520 0001:00228A5A  1543 0001:00228A7F  1548 0001:00228A8B  1552 0001:00228ABF
+  1553 0001:00228AC5  1558 0001:00228AE4  1559 0001:00228AF4  1560 0001:00228AFE
+  1562 0001:00228B0A  1575 0001:00228B68  1577 0001:00228B90  1578 0001:00228B9E
+  1584 0001:00228BAC  1585 0001:00228BBB  1586 0001:00228BC9  1587 0001:00228BD5
+  1589 0001:00228BE1  1590 0001:00228BE5  1592 0001:00228BE9  1594 0001:00228BF7
+  1596 0001:00228C1E  1599 0001:00228C3B  1600 0001:00228C53  1602 0001:00228C57
+  1603 0001:00228C6B  1606 0001:00228C70  1608 0001:00228C93  1609 0001:00228CBA
+  1610 0001:00228CC5  1611 0001:00228CE0  1615 0001:00228D14  1616 0001:00228D20
+  1617 0001:00228D2A  1619 0001:00228D34  1620 0001:00228D40  1622 0001:00228D4A
+  1623 0001:00228D5E  1624 0001:00228D68  1627 0001:00228D77  1631 0001:00228D84
+  1594 0001:00228D85  1636 0001:00228DAA  1640 0001:00228DB4  1642 0001:00228DBD
+  1644 0001:00228DC2  1645 0001:00228DD0  1648 0001:00228DDA  1649 0001:00228DE0
+  1651 0001:00228DE4  1652 0001:00228DF1  1655 0001:00228DF5  1656 0001:00228E02
+  1658 0001:00228E06  1660 0001:00228E1B  1666 0001:00228E30  1667 0001:00228E36
+  1669 0001:00228E50  1670 0001:00228E5A  1673 0001:00228E64  1674 0001:00228E7E
+  1675 0001:00228E8D  1680 0001:00228E99  1682 0001:00228EB3  1683 0001:00228EBF
+  1686 0001:00228EC9  1687 0001:00228ED8  1690 0001:00228EF6  1692 0001:00228F0C
+  1703 0001:00229018  1704 0001:00229023  1707 0001:00229032  1709 0001:00229040
+  1710 0001:00229054  1712 0001:00229063  1714 0001:00229070  1715 0001:0022907E
+  1717 0001:0022909E  1719 0001:002290B4  1722 0001:002290CB  1724 0001:002290D1
+  1725 0001:002290DE  1726 0001:002290EB  1727 0001:002290F8  1728 0001:00229105
+  1731 0001:00229112  1733 0001:00229118  1734 0001:00229120  1736 0001:0022912E
+  1738 0001:0022913A  1739 0001:00229147  1743 0001:00229156  1744 0001:00229163
+  1749 0001:00229172  1750 0001:0022917F  1751 0001:0022918C  1754 0001:0022918E
+  1715 0001:0022918F  1759 0001:002291B3  1764 0001:002291BD  1765 0001:002291CB
+  1769 0001:002291D4  1770 0001:002291D9  1781 0001:002291DC  1782 0001:002291ED
+  1784 0001:00229204  1786 0001:00229212  1789 0001:0022921C  1791 0001:00229237
+  1792 0001:00229244  1796 0001:00229253  1802 0001:00229260  1804 0001:00229266
+  1805 0001:00229281  1808 0001:00229292  1810 0001:002292A5  1812 0001:002292A9
+  1813 0001:002292B8  1814 0001:002292C5  1815 0001:002292D2  1817 0001:002292D4
+  1804 0001:002292D5  1819 0001:002292D8  1820 0001:002292FC  1822 0001:00229321
+  1823 0001:00229327  1824 0001:0022932D  1825 0001:0022933E  1828 0001:0022934F
+  1838 0001:00229358  1839 0001:00229376  1840 0001:00229384  1842 0001:00229392
+  1844 0001:0022939F  1846 0001:002293A6  1848 0001:002293AA  1849 0001:002293B8
+  1853 0001:002293C5  1854 0001:002293E9  1856 0001:00229406  1857 0001:00229415
+  1858 0001:0022941A  1861 0001:00229430  1863 0001:00229436  1864 0001:00229444
+  1867 0001:00229451  1870 0001:00229476  1871 0001:00229487  1872 0001:00229491
+  1873 0001:002294A1  1874 0001:002294B3  1877 0001:002294C5  1879 0001:002294D3
+  1881 0001:002294E1  1882 0001:002294EB  1886 0001:002294F5  1887 0001:00229508
+  1888 0001:00229525  1889 0001:00229527  1853 0001:00229528  1895 0001:0022954C
+  1898 0001:00229556  1908 0001:00229624  1909 0001:0022962D  1911 0001:0022963B
+  1912 0001:00229644  1914 0001:00229655  1915 0001:00229663  1917 0001:0022967F
+  1919 0001:0022969C  1922 0001:002296AF  1925 0001:002296B7  1927 0001:002296D1
+  1929 0001:002296F6  1933 0001:0022970C  1936 0001:0022971E  1938 0001:0022972C
+  1939 0001:0022973A  1940 0001:00229744  1944 0001:00229749  1947 0001:00229757
+  1948 0001:00229765  1949 0001:00229776  1950 0001:00229787  1951 0001:00229798
+  1954 0001:002297A9  1956 0001:002297B7  1957 0001:002297C7  1963 0001:002297D4
+  1915 0001:002297D5  1968 0001:002297F9  1974 0001:00229803  1976 0001:0022980E
+  1982 0001:00229874  1983 0001:0022987B  1984 0001:0022988A  1986 0001:00229892
+  1987 0001:002298A0  1989 0001:002298C0  1990 0001:002298D6  1991 0001:002298F9
+  1987 0001:002298FA  1996 0001:00229918  2000 0001:00229922  2001 0001:0022992A
+  2009 0001:00229930  2010 0001:00229936  2012 0001:0022993B  2014 0001:00229956
+  2015 0001:00229969  2016 0001:0022996D  2017 0001:00229970  2012 0001:00229971
+  2018 0001:00229974  2019 0001:00229977  2024 0001:0022997C  2025 0001:00229993
+  2026 0001:0022999F  2028 0001:002299A4  2029 0001:002299B0  2031 0001:002299B5
+  2032 0001:002299BE  2033 0001:002299C1  2034 0001:002299D3  2036 0001:002299DB
+  2037 0001:002299E8  2038 0001:002299F2  2040 0001:002299FC  2041 0001:00229A06
+  2043 0001:00229A1B  2046 0001:00229A22  2047 0001:00229A29  2049 0001:00229A38
+  2051 0001:00229A3F  2052 0001:00229A4E  2053 0001:00229A5B  2054 0001:00229A68
+  2056 0001:00229A7A  2058 0001:00229AA1  2059 0001:00229AAE  2060 0001:00229ABB
+  2063 0001:00229ACF  2065 0001:00229B0C  2066 0001:00229B19  2070 0001:00229B28
+  2073 0001:00229B37  2078 0001:00229B68  2079 0001:00229B79  2080 0001:00229B86
+  2082 0001:00229B9E  2083 0001:00229C70  2084 0001:00229C9B  2085 0001:00229CC6
+  2086 0001:00229CF1  2087 0001:00229D1C  2088 0001:00229D47  2089 0001:00229D72
+  2090 0001:00229D9D  2092 0001:00229DC5  2094 0001:00229DCA  2095 0001:00229DE5
+  2094 0001:00229DF5  2096 0001:00229DF8  2097 0001:00229E0A  2100 0001:00229E1A
+  2102 0001:00229E23  2103 0001:00229E2D  2108 0001:00229E34  2111 0001:00229E3C
+  2113 0001:00229E43  2115 0001:00229E49  2117 0001:00229E5C  2118 0001:00229E79
+  2122 0001:00229E8C  2131 0001:00229E94  2132 0001:00229EA2  2134 0001:00229EAB
+  2135 0001:00229EB5  2138 0001:00229EBC  2139 0001:00229ED3  2140 0001:00229EE2
+  2141 0001:00229EF4  2142 0001:00229EF8  2143 0001:00229EFC  2144 0001:00229F24
+  2145 0001:00229F28  2146 0001:00229F2C  2147 0001:00229F30  2149 0001:00229F34
+  2151 0001:00229F49  2152 0001:00229F5F  2153 0001:00229F66  2158 0001:00229F70
+  2159 0001:00229F73  2161 0001:00229F7C  2162 0001:00229F86  2164 0001:00229F8D
+  2169 0001:00229F94  2170 0001:00229FA2  2173 0001:00229FA4  2174 0001:00229FA7
+  2176 0001:00229FB0  2177 0001:00229FBA  2178 0001:00229FC1  2180 0001:00229FCD
+  2183 0001:00229FD4  2184 0001:00229FD7  2185 0001:00229FEC  2188 0001:00229FF0
+  2190 0001:00229FF3  2192 0001:00229FFC  2193 0001:0022A006  2195 0001:0022A00D
+  2198 0001:0022A013  2199 0001:0022A020  2200 0001:0022A02D  2201 0001:0022A03A
+  2202 0001:0022A047  2203 0001:0022A054  2204 0001:0022A061  2205 0001:0022A06E
+  2211 0001:0022A07B  2213 0001:0022A084  2215 0001:0022A094  2216 0001:0022A0A0
+  2219 0001:0022A0AC  2224 0001:0022A0B0  2226 0001:0022A0C8  2227 0001:0022A0E2
+  2228 0001:0022A103  2230 0001:0022A123  2231 0001:0022A14E  2232 0001:0022A164
+  2234 0001:0022A19C  2235 0001:0022A1D2  2227 0001:0022A1D3  2236 0001:0022A1DA
+  2237 0001:0022A1F1  2238 0001:0022A211  2242 0001:0022A268  2243 0001:0022A26B
+  2244 0001:0022A271  2245 0001:0022A276  2248 0001:0022A27C  2249 0001:0022A27F
+  2250 0001:0022A288  2251 0001:0022A28F
+
+Line numbers for fReview(fReview.pas) segment .itext
+
+  2253 0002:00001464
+
+Line numbers for fEncnt(fEncnt.pas) segment .text
+
+   118 0001:0022A818   119 0001:0022A827   123 0001:0022A828   124 0001:0022A837
+   133 0001:0022A838   134 0001:0022A851   135 0001:0022A856   136 0001:0022A883
+   137 0001:0022A89A   138 0001:0022A8A8   139 0001:0022A8AA   142 0001:0022A8B2
+   143 0001:0022A8C7   144 0001:0022A8DC   146 0001:0022A8E8   147 0001:0022A8F8
+   148 0001:0022A908   149 0001:0022A918   150 0001:0022A925   155 0001:0022A938
+   156 0001:0022A958   158 0001:0022A975   159 0001:0022A980   161 0001:0022A990
+   164 0001:0022A992   167 0001:0022AA22   168 0001:0022AA2D   170 0001:0022AA35
+   171 0001:0022AA5C   172 0001:0022AA71   173 0001:0022AA8C   174 0001:0022AAA2
+   179 0001:0022AAC5   181 0001:0022AAD5   188 0001:0022AB28   190 0001:0022AB4F
+   191 0001:0022AB63   192 0001:0022AB6E   193 0001:0022AB86   194 0001:0022AB9A
+   195 0001:0022ABA7   196 0001:0022ABB3   197 0001:0022ABBE   198 0001:0022ABCB
+   199 0001:0022ABD1   201 0001:0022ABEE   202 0001:0022ABFB   203 0001:0022AC01
+   205 0001:0022AC1E   206 0001:0022AC2B   207 0001:0022AC5B   208 0001:0022AC75
+   209 0001:0022AC8F   210 0001:0022ACA1   211 0001:0022ACBB   212 0001:0022ACC2
+   214 0001:0022ACDB   215 0001:0022ACF8   216 0001:0022AD13   218 0001:0022AD4F
+   219 0001:0022AD5B   220 0001:0022AD62   221 0001:0022AD73   222 0001:0022AD7C
+   224 0001:0022AD90   225 0001:0022ADA1   227 0001:0022ADAA   231 0001:0022ADBF
+   232 0001:0022ADDE   233 0001:0022ADF5   235 0001:0022ADFC   236 0001:0022AE1D
+   237 0001:0022AE4A   238 0001:0022AE55   242 0001:0022B094   244 0001:0022B0A1
+   245 0001:0022B0AA   247 0001:0022B0C2   249 0001:0022B0D8   252 0001:0022B0E0
+   254 0001:0022B0E3   255 0001:0022B103   257 0001:0022B12B   258 0001:0022B15E
+   259 0001:0022B169   261 0001:0022B176   263 0001:0022B19E   264 0001:0022B1B9
+   265 0001:0022B1C4   267 0001:0022B1D1   269 0001:0022B1E9   271 0001:0022B202
+   273 0001:0022B211   275 0001:0022B21A   276 0001:0022B22B   277 0001:0022B23E
+   281 0001:0022B249   282 0001:0022B25A   284 0001:0022B27B   285 0001:0022B282
+   286 0001:0022B2BB   287 0001:0022B2C2   288 0001:0022B2CD   290 0001:0022B2DC
+   292 0001:0022B2E0   293 0001:0022B2F0   294 0001:0022B2FB   298 0001:0022B30A
+   302 0001:0022B317   303 0001:0022B320   304 0001:0022B32D   308 0001:0022B340
+   310 0001:0022B347   311 0001:0022B35B   312 0001:0022B36E   313 0001:0022B37C
+   317 0001:0022B384   319 0001:0022B38D   320 0001:0022B3A4   323 0001:0022B3AC
+   324 0001:0022B3C9   325 0001:0022B3E0   326 0001:0022B3F7   328 0001:0022B40A
+   329 0001:0022B422   330 0001:0022B438   333 0001:0022B46E   335 0001:0022B49B
+   336 0001:0022B4DD   337 0001:0022B4ED   339 0001:0022B520   342 0001:0022B598
+   344 0001:0022B5B3   346 0001:0022B5B9   347 0001:0022B5C6   348 0001:0022B5E7
+   349 0001:0022B5F9   350 0001:0022B600   352 0001:0022B606   353 0001:0022B623
+   356 0001:0022B66F   359 0001:0022B6D0   363 0001:0022B6EB   364 0001:0022B6F8
+   366 0001:0022B6FE   367 0001:0022B70B   368 0001:0022B72C   369 0001:0022B73E
+   370 0001:0022B745   372 0001:0022B77C   375 0001:0022B7B8   377 0001:0022B7D3
+   379 0001:0022B7F6   380 0001:0022B803   381 0001:0022B824   382 0001:0022B836
+   383 0001:0022B83D   385 0001:0022B843   386 0001:0022B860   389 0001:0022B8AC
+   396 0001:0022B90C   398 0001:0022B92B   399 0001:0022B933   400 0001:0022B949
+   401 0001:0022B977   402 0001:0022B9B7   404 0001:0022B9BD   405 0001:0022B9CC
+   409 0001:0022B9D1   410 0001:0022B9F5   411 0001:0022BA24   412 0001:0022BA30
+   414 0001:0022BA48   415 0001:0022BA71   416 0001:0022BA78   417 0001:0022BA7F
+   422 0001:0022BBE8   423 0001:0022BBED   427 0001:0022BBF0   428 0001:0022BBF5
+   456 0001:0022BBF8   457 0001:0022BC01   458 0001:0022BC07   459 0001:0022BC0F
+   460 0001:0022BC16   461 0001:0022BC20   462 0001:0022BC2F   467 0001:0022BC38
+   470 0001:0022BC3C   471 0001:0022BC3F   472 0001:0022BC51   474 0001:0022BC5A
+   475 0001:0022BC78   476 0001:0022BC88   480 0001:0022BC8C   484 0001:0022BCC2
+   486 0001:0022BCC5   487 0001:0022BCC7   492 0001:0022BCC8   493 0001:0022BCE8
+   496 0001:0022BCEC   498 0001:0022BD0F   500 0001:0022BD15   501 0001:0022BD53
+   502 0001:0022BD8F   503 0001:0022BDB3   504 0001:0022BDBA   505 0001:0022BDC1
+   507 0001:0022BDD2   511 0001:0022BE04   513 0001:0022BE26   515 0001:0022BE2C
+   516 0001:0022BE64   517 0001:0022BEA0   518 0001:0022BED7   519 0001:0022BEDE
+   520 0001:0022BF0B   522 0001:0022BF11   523 0001:0022BF2E   526 0001:0022BF7A
+   529 0001:0022C010   531 0001:0022C013   533 0001:0022C01F   534 0001:0022C031
+   538 0001:0022C04B   539 0001:0022C05F   542 0001:0022C073   543 0001:0022C08D
+   545 0001:0022C0A5   546 0001:0022C0BD   548 0001:0022C0D1   551 0001:0022C0D4
+   553 0001:0022C0D8   555 0001:0022C0E4   556 0001:0022C0F6   560 0001:0022C110
+   561 0001:0022C124   564 0001:0022C138   565 0001:0022C152   566 0001:0022C16A
+   568 0001:0022C182   569 0001:0022C18F   570 0001:0022C1A2   571 0001:0022C1B0
+
+Line numbers for fEncnt(fEncnt.pas) segment .itext
+
+   573 0002:0000146C
+
+Line numbers for fNotes(fNotes.pas) segment .text
+
+   422 0001:0022D770   423 0001:0022D77C   424 0001:0022D78A   425 0001:0022D798
+   426 0001:0022D7A6   428 0001:0022D7BA   430 0001:0022D7D9   431 0001:0022D7E6
+   434 0001:0022D7EC   436 0001:0022D7FD   437 0001:0022D807   438 0001:0022D815
+   442 0001:0022D826   443 0001:0022D830   445 0001:0022D84F   446 0001:0022D85C
+   449 0001:0022D862   451 0001:0022D873   452 0001:0022D87D   453 0001:0022D88B
+   457 0001:0022D89A   458 0001:0022D8A6   460 0001:0022D8C5   461 0001:0022D8D7
+   463 0001:0022D8E9   464 0001:0022D8F9   467 0001:0022D8FF   468 0001:0022D91A
+   471 0001:0022D925   472 0001:0022D933   474 0001:0022D947   476 0001:0022D966
+   477 0001:0022D976   480 0001:0022D97C   482 0001:0022D98D   483 0001:0022D997
+   484 0001:0022D9A5   488 0001:0022D9B3   495 0001:0022DAFC   497 0001:0022DB1C
+   498 0001:0022DB29   499 0001:0022DB45   500 0001:0022DB61   502 0001:0022DB6D
+   503 0001:0022DB78   504 0001:0022DB82   505 0001:0022DB8A   507 0001:0022DBBC
+   508 0001:0022DBCE   509 0001:0022DBEC   510 0001:0022DBF2   511 0001:0022DC29
+   515 0001:0022DC58   516 0001:0022DC5F   517 0001:0022DC67   518 0001:0022DC6F
+   519 0001:0022DC76   520 0001:0022DC8A   521 0001:0022DC98   522 0001:0022DCAC
+   523 0001:0022DCC0   524 0001:0022DCD4   525 0001:0022DCDB   526 0001:0022DCEC
+   527 0001:0022DCFD   528 0001:0022DD0E   529 0001:0022DD18   530 0001:0022DD22
+   531 0001:0022DD2C   535 0001:0022DD30   536 0001:0022DD51   537 0001:0022DD59
+   538 0001:0022DD6E   539 0001:0022DD82   540 0001:0022DD96   541 0001:0022DDAA
+   542 0001:0022DDBE   544 0001:0022DDCE   545 0001:0022DDD6   546 0001:0022DDF4
+   547 0001:0022DE10   548 0001:0022DE25   549 0001:0022DE3F   550 0001:0022DE59
+   551 0001:0022DE75   554 0001:0022DE88   556 0001:0022DEA0   558 0001:0022DEB1
+   559 0001:0022DEC2   561 0001:0022DECE   563 0001:0022DEE1   565 0001:0022DEE9
+   570 0001:0022DF10   571 0001:0022DF30   573 0001:0022DF3C   576 0001:0022DF52
+   577 0001:0022DF5D   579 0001:0022DF67   581 0001:0022DFBB   582 0001:0022DFDE
+   585 0001:0022E005   592 0001:0022E0D4   593 0001:0022E0FA   594 0001:0022E106
+   595 0001:0022E127   597 0001:0022E13A   598 0001:0022E172   599 0001:0022E19F
+   600 0001:0022E1BE   601 0001:0022E1CF   594 0001:0022E1D2   602 0001:0022E1DB
+   606 0001:0022E2AC   607 0001:0022E2B8   608 0001:0022E2C3   609 0001:0022E2D3
+   610 0001:0022E2E6   611 0001:0022E2F1   615 0001:0022E2F8   617 0001:0022E304
+   618 0001:0022E313   624 0001:0022E318   626 0001:0022E321   628 0001:0022E32C
+   629 0001:0022E333   630 0001:0022E33B   631 0001:0022E346   632 0001:0022E351
+   633 0001:0022E362   634 0001:0022E36D   635 0001:0022E37E   636 0001:0022E389
+   637 0001:0022E394   638 0001:0022E39C   639 0001:0022E3A7   640 0001:0022E3AF
+   641 0001:0022E3BA   642 0001:0022E3C5   643 0001:0022E3CC   645 0001:0022E3D4
+   646 0001:0022E3DF   647 0001:0022E3EA   650 0001:0022E3F7   652 0001:0022E407
+   653 0001:0022E40E   654 0001:0022E42B   656 0001:0022E43B   658 0001:0022E445
+   659 0001:0022E450   660 0001:0022E45A   663 0001:0022E460   664 0001:0022E46C
+   665 0001:0022E47D   666 0001:0022E48E   667 0001:0022E494   668 0001:0022E4BA
+   669 0001:0022E4CB   679 0001:0022E4D0   680 0001:0022E4FE   681 0001:0022E50F
+   685 0001:0022E535   686 0001:0022E54E   687 0001:0022E568   688 0001:0022E577
+   689 0001:0022E585   690 0001:0022E593   692 0001:0022E5BC   694 0001:0022E5CC
+   695 0001:0022E5D6   696 0001:0022E60E   697 0001:0022E623   698 0001:0022E63E
+   700 0001:0022E651   702 0001:0022E65A   703 0001:0022E663   705 0001:0022E66D
+   706 0001:0022E675   710 0001:0022E67F   711 0001:0022E687   713 0001:0022E68F
+   717 0001:0022E6A7   718 0001:0022E6B1   719 0001:0022E6C9   720 0001:0022E6DA
+   721 0001:0022E6EA   723 0001:0022E6F4   726 0001:0022E6FE   727 0001:0022E74B
+   728 0001:0022E75E   729 0001:0022E777   730 0001:0022E791   731 0001:0022E7A0
+   732 0001:0022E7AE   733 0001:0022E7C2   735 0001:0022E7EB   737 0001:0022E7FB
+   738 0001:0022E81C   739 0001:0022E831   740 0001:0022E84C   742 0001:0022E85F
+   745 0001:0022E868   747 0001:0022E872   748 0001:0022E88C   754 0001:0022E934
+   755 0001:0022E960   756 0001:0022E96C   759 0001:0022EA5B   765 0001:0022EAB0
+   766 0001:0022EAB9   767 0001:0022EABD   769 0001:0022EAC8   770 0001:0022EAD5
+   771 0001:0022EAEC   772 0001:0022EB02   773 0001:0022EB1E   774 0001:0022EB3A
+   775 0001:0022EB65   777 0001:0022EB6D   780 0001:0022EBA7   781 0001:0022EBC3
+   784 0001:0022EBF8   793 0001:0022EC04   794 0001:0022EC20   796 0001:0022EC2C
+   797 0001:0022EC39   799 0001:0022EC64   800 0001:0022EC72   804 0001:0022ECC4
+   805 0001:0022ECD0   807 0001:0022ECD6   808 0001:0022ECE6   809 0001:0022ECF6
+   812 0001:0022ED21   813 0001:0022ED31   814 0001:0022ED41   816 0001:0022ED6A
+   822 0001:0022ED70   825 0001:0022ED8F   826 0001:0022ED93   827 0001:0022EDAE
+   829 0001:0022EDD8   830 0001:0022EDE9   831 0001:0022EDED   833 0001:0022EDEF
+   834 0001:0022EDFB   835 0001:0022EE11   836 0001:0022EE24   843 0001:0022EEB0
+   844 0001:0022EECD   845 0001:0022EED1   846 0001:0022EED6   848 0001:0022EEEC
+   849 0001:0022EEFD   850 0001:0022EF01   852 0001:0022EF06   854 0001:0022EF30
+   856 0001:0022EF44   857 0001:0022EF5A   858 0001:0022EF7A   861 0001:0022EF88
+   863 0001:0022EF8E   864 0001:0022EF9C   866 0001:0022EFA2   868 0001:0022EFA6
+   870 0001:0022EFAC   871 0001:0022EFBA   873 0001:0022EFC7   876 0001:0022EFD6
+   881 0001:0022F088   888 0001:0022F0A7   889 0001:0022F0B8   890 0001:0022F0BE
+   891 0001:0022F0D9   892 0001:0022F0E7   893 0001:0022F0F4   896 0001:0022F118
+   897 0001:0022F124   898 0001:0022F128   899 0001:0022F134   901 0001:0022F155
+   902 0001:0022F159   904 0001:0022F15B   905 0001:0022F187   917 0001:0022F1A4
+   918 0001:0022F1DE   920 0001:0022F1F2   921 0001:0022F1FE   922 0001:0022F202
+   923 0001:0022F207   924 0001:0022F215   925 0001:0022F21D   926 0001:0022F231
+   928 0001:0022F23C   929 0001:0022F245   930 0001:0022F24C   931 0001:0022F257
+   932 0001:0022F26D   934 0001:0022F285   935 0001:0022F28D   937 0001:0022F298
+   939 0001:0022F2A7   940 0001:0022F2AF   942 0001:0022F2BA   943 0001:0022F2C6
+   944 0001:0022F2DD   945 0001:0022F2F3   946 0001:0022F303   947 0001:0022F320
+   948 0001:0022F337   949 0001:0022F33D   951 0001:0022F348   955 0001:0022F350
+   956 0001:0022F355   957 0001:0022F377   958 0001:0022F39F   960 0001:0022F3A3
+   961 0001:0022F3DA   964 0001:0022F3E4   965 0001:0022F3F0   966 0001:0022F40A
+   967 0001:0022F41F   969 0001:0022F432   970 0001:0022F443   971 0001:0022F44E
+   972 0001:0022F462   976 0001:0022F46C   978 0001:0022F477   982 0001:0022F52D
+   983 0001:0022F539   984 0001:0022F599   987 0001:0022F5A7   988 0001:0022F5BF
+   989 0001:0022F5C6   990 0001:0022F5DA   992 0001:0022F5E4   993 0001:0022F61F
+   994 0001:0022F62C   995 0001:0022F639   996 0001:0022F66A   997 0001:0022F677
+  1001 0001:0022F689  1003 0001:0022F6C6  1004 0001:0022F6D3  1005 0001:0022F6DD
+  1006 0001:0022F70E  1007 0001:0022F71B  1009 0001:0022F728  1010 0001:0022F735
+  1011 0001:0022F740  1012 0001:0022F751  1013 0001:0022F765  1014 0001:0022F76C
+  1015 0001:0022F7B8  1016 0001:0022F7CB  1017 0001:0022F7D5  1018 0001:0022F7E4
+  1019 0001:0022F7EA  1020 0001:0022F7F9  1021 0001:0022F80A  1022 0001:0022F814
+  1023 0001:0022F81F  1024 0001:0022F82A  1025 0001:0022F83D  1029 0001:0022F872
+  1030 0001:0022F8AA  1031 0001:0022F8B9  1034 0001:0022F8BD  1036 0001:0022F8C3
+  1037 0001:0022F8CB  1040 0001:0022F8E2  1042 0001:0022F8EC  1043 0001:0022F911
+  1044 0001:0022F94C  1045 0001:0022F95F  1046 0001:0022F96A  1048 0001:0022F972
+  1049 0001:0022F978  1051 0001:0022F993  1052 0001:0022F9A0  1064 0001:0022FAF4
+  1065 0001:0022FB23  1066 0001:0022FB2B  1068 0001:0022FB36  1069 0001:0022FB3F
+  1070 0001:0022FB46  1071 0001:0022FB61  1072 0001:0022FBAB  1073 0001:0022FBEF
+  1074 0001:0022FBFB  1075 0001:0022FC11  1076 0001:0022FC27  1077 0001:0022FC3D
+  1079 0001:0022FC5F  1080 0001:0022FC83  1081 0001:0022FCA9  1083 0001:0022FCCD
+  1089 0001:0022FCE1  1090 0001:0022FCED  1091 0001:0022FD0C  1093 0001:0022FD10
+  1094 0001:0022FD16  1095 0001:0022FD21  1096 0001:0022FD4D  1098 0001:0022FD57
+  1099 0001:0022FD71  1100 0001:0022FD8A  1101 0001:0022FD9B  1102 0001:0022FDC5
+  1103 0001:0022FDDF  1104 0001:0022FDF9  1105 0001:0022FE04  1106 0001:0022FE18
+  1108 0001:0022FE22  1110 0001:0022FE2D  1115 0001:0022FEE5  1116 0001:0022FEFD
+  1117 0001:0022FF04  1118 0001:0022FF18  1120 0001:0022FF55  1121 0001:0022FF62
+  1122 0001:0022FF6C  1123 0001:0022FF9D  1125 0001:0022FFA8  1126 0001:0022FFB5
+  1127 0001:0022FFC2  1128 0001:0022FFD3  1129 0001:0022FFE7  1130 0001:0022FFEE
+  1131 0001:0023002E  1132 0001:00230041  1133 0001:0023004B  1134 0001:0023005A
+  1135 0001:00230065  1136 0001:00230070  1137 0001:0023008F  1141 0001:002300A2
+  1142 0001:002300DA  1143 0001:002300E9  1146 0001:002300ED  1147 0001:002300FB
+  1154 0001:00230218  1155 0001:0023023A  1156 0001:00230242  1157 0001:00230262
+  1158 0001:0023027D  1159 0001:002302D5  1160 0001:002302F2  1161 0001:0023030F
+  1162 0001:00230319  1164 0001:00230329  1165 0001:00230336  1166 0001:00230382
+  1167 0001:002303CE  1168 0001:002303FB  1171 0001:0023040D  1172 0001:00230414
+  1174 0001:00230428  1175 0001:00230447  1177 0001:0023044D  1179 0001:0023048A
+  1182 0001:00230499  1183 0001:002304A1  1184 0001:002304CA  1185 0001:002304D4
+  1186 0001:00230505  1187 0001:00230510  1188 0001:0023053D  1190 0001:0023054C
+  1191 0001:00230559  1192 0001:00230567  1193 0001:00230578  1194 0001:0023058C
+  1196 0001:00230593  1197 0001:002305E0  1198 0001:00230600  1199 0001:00230613
+  1200 0001:0023062A  1201 0001:00230639  1202 0001:00230644  1203 0001:0023064F
+  1204 0001:0023066E  1205 0001:0023067F  1212 0001:00230750  1213 0001:00230782
+  1214 0001:00230788  1216 0001:002307BB  1217 0001:002307D5  1218 0001:002307F1
+  1219 0001:002307F8  1220 0001:00230835  1221 0001:0023083C  1222 0001:00230857
+  1227 0001:002308A6  1228 0001:002308B0  1229 0001:002308BB  1230 0001:002308C1
+  1233 0001:002308D0  1234 0001:002308DA  1237 0001:002308DF  1239 0001:002308F7
+  1240 0001:00230918  1241 0001:0023092B  1242 0001:0023093B  1243 0001:00230949
+  1245 0001:00230980  1248 0001:00230998  1250 0001:0023099E  1252 0001:002309BA
+  1253 0001:002309C5  1255 0001:002309D0  1256 0001:002309DB  1257 0001:002309E1
+  1258 0001:002309EB  1261 0001:002309F7  1262 0001:00230A03  1264 0001:00230A2E
+  1268 0001:00230CC8  1269 0001:00230CD4  1270 0001:00230CE0  1271 0001:00230CEB
+  1276 0001:00230CF0  1277 0001:00230CFC  1278 0001:00230D07  1279 0001:00230D14
+  1280 0001:00230D1F  1281 0001:00230D36  1282 0001:00230D43  1283 0001:00230D50
+  1284 0001:00230D7A  1285 0001:00230D86  1286 0001:00230D99  1287 0001:00230DAD
+  1288 0001:00230DC0  1289 0001:00230DCF  1290 0001:00230DE4  1291 0001:00230DF9
+  1295 0001:00230E04  1297 0001:00230E10  1298 0001:00230E1E  1299 0001:00230E2F
+  1304 0001:00230E34  1306 0001:00230E53  1309 0001:00230E66  1310 0001:00230E72
+  1312 0001:00230EBE  1313 0001:00230EE8  1314 0001:00230F18  1315 0001:00230F20
+  1323 0001:00230F44  1325 0001:00230F69  1326 0001:00230F87  1328 0001:00230FA1
+  1329 0001:00230FB1  1330 0001:00230FC1  1331 0001:00230FD1  1332 0001:00230FE9
+  1334 0001:00230FFB  1335 0001:0023100B  1336 0001:0023101B  1337 0001:00231020
+  1340 0001:0023102D  1341 0001:00231037  1342 0001:00231047  1343 0001:00231057
+  1344 0001:00231067  1345 0001:0023106C  1349 0001:002311E4  1350 0001:00231206
+  1351 0001:00231224  1352 0001:00231237  1353 0001:00231247  1354 0001:00231257
+  1355 0001:00231267  1356 0001:00231277  1357 0001:00231285  1359 0001:0023128C
+  1360 0001:00231296  1361 0001:002312A2  1362 0001:002312AA  1363 0001:002312B8
+  1364 0001:002312C9  1365 0001:002312DA  1366 0001:00231310  1367 0001:0023135F
+  1368 0001:0023136C  1372 0001:00231458  1374 0001:00231464  1375 0001:0023146F
+  1385 0001:00231474  1386 0001:00231477  1388 0001:0023148A  1389 0001:00231492
+  1390 0001:002314A9  1392 0001:002314CD  1393 0001:002314E3  1395 0001:002314EC
+  1396 0001:002314FC  1399 0001:00231508  1403 0001:0023151B  1404 0001:00231527
+  1406 0001:0023152E  1407 0001:00231547  1408 0001:00231552  1410 0001:00231564
+  1412 0001:0023158C  1413 0001:0023159C  1416 0001:002315B8  1417 0001:002315C7
+  1418 0001:002315D5  1419 0001:002315E2  1420 0001:002315E9  1422 0001:00231604
+  1427 0001:00231614  1428 0001:0023161B  1429 0001:00231627  1430 0001:00231637
+  1435 0001:00231660  1437 0001:0023166C  1438 0001:00231694  1439 0001:0023169F
+  1448 0001:002316A4  1449 0001:002316B7  1450 0001:002316FB  1451 0001:00231714
+  1452 0001:00231725  1453 0001:00231732  1455 0001:00231764  1457 0001:00231787
+  1458 0001:002317B7  1459 0001:002317C6  1460 0001:002317D4  1461 0001:002317ED
+  1462 0001:002317FE  1465 0001:00231832  1466 0001:0023185E  1468 0001:00231870
+  1471 0001:00231883  1472 0001:002318B8  1473 0001:002318CB  1475 0001:002318D8
+  1480 0001:002318E1  1481 0001:002318EF  1484 0001:00231902  1486 0001:00231908
+  1487 0001:00231920  1491 0001:00231941  1493 0001:00231951  1501 0001:00231A6C
+  1503 0001:00231A91  1504 0001:00231AAF  1505 0001:00231ABB  1506 0001:00231AC5
+  1507 0001:00231ACD  1508 0001:00231AE2  1509 0001:00231AEF  1510 0001:00231B04
+  1511 0001:00231B11  1512 0001:00231B1F  1516 0001:00231B72  1517 0001:00231B9A
+  1518 0001:00231BCA  1519 0001:00231BCE  1521 0001:00231BD8  1522 0001:00231C09
+  1523 0001:00231C4D  1524 0001:00231C7F  1525 0001:00231CBE  1526 0001:00231CEB
+  1527 0001:00231D02  1528 0001:00231D29  1529 0001:00231D66  1530 0001:00231D77
+  1531 0001:00231D9A  1532 0001:00231DC3  1533 0001:00231DD3  1535 0001:00231DE4
+  1536 0001:00231E24  1537 0001:00231E58  1538 0001:00231E8A  1539 0001:00231EA9
+  1540 0001:00231ECD  1541 0001:00231EF8  1542 0001:00231F21  1543 0001:00231F37
+  1544 0001:00231F56  1545 0001:00231FB0  1547 0001:00231FBB  1550 0001:00231FD8
+  1552 0001:00231FF3  1553 0001:00232004  1557 0001:0023200F  1558 0001:0023202E
+  1562 0001:00232044  1563 0001:00232054  1564 0001:002320F2  1567 0001:00232100
+  1568 0001:00232119  1571 0001:00232448  1573 0001:00232454  1574 0001:0023245E
+  1578 0001:00232464  1580 0001:00232470  1581 0001:0023249D  1582 0001:002324C6
+  1583 0001:002324EC  1584 0001:002324F4  1589 0001:002324F8  1590 0001:0023251A
+  1591 0001:0023252E  1593 0001:0023254E  1595 0001:00232558  1596 0001:00232568
+  1597 0001:00232576  1599 0001:002325B6  1601 0001:002325CE  1602 0001:002325D8
+  1604 0001:002325DF  1605 0001:002325E5  1607 0001:00232610  1610 0001:00232820
+  1612 0001:0023282C  1613 0001:00232839  1624 0001:00232840  1627 0001:0023288D
+  1629 0001:00232899  1630 0001:002328A4  1632 0001:002328AE  1633 0001:002328CF
+  1634 0001:002328DF  1635 0001:002328E9  1636 0001:00232908  1637 0001:00232920
+  1638 0001:00232927  1640 0001:0023295C  1641 0001:00232970  1642 0001:002329A8
+  1643 0001:002329C5  1644 0001:002329D3  1647 0001:002329E0  1648 0001:002329F4
+  1649 0001:00232A07  1650 0001:00232A24  1653 0001:00232A31  1654 0001:00232A45
+  1655 0001:00232A58  1656 0001:00232A75  1660 0001:00232A82  1661 0001:00232A89
+  1662 0001:00232AA5  1665 0001:00232AAF  1666 0001:00232ABB  1667 0001:00232ADC
+  1668 0001:00232B08  1669 0001:00232B18  1675 0001:00232B25  1676 0001:00232B39
+  1677 0001:00232B4C  1678 0001:00232B6F  1681 0001:00232B7C  1682 0001:00232B98
+  1684 0001:00232BA2  1685 0001:00232BB6  1686 0001:00232BDD  1687 0001:00232C00
+  1688 0001:00232C15  1689 0001:00232C21  1693 0001:00232C2E  1694 0001:00232C4A
+  1696 0001:00232C54  1697 0001:00232C68  1699 0001:00232CCE  1700 0001:00232CDE
+  1701 0001:00232CEE  1702 0001:00232D03  1703 0001:00232D18  1704 0001:00232D24
+  1705 0001:00232D47  1709 0001:00232D54  1711 0001:00232D66  1714 0001:00232D86
+  1718 0001:00232D93  1719 0001:00232DA6  1720 0001:00232DB9  1721 0001:00232DD4
+  1722 0001:00232DEF  1723 0001:00232E02  1724 0001:00232E1D  1725 0001:00232E2B
+  1727 0001:00232E39  1728 0001:00232E4C  1729 0001:00232E5A  1730 0001:00232E6D
+  1731 0001:00232E7B  1732 0001:00232E8E  1733 0001:00232EA1  1734 0001:00232EAF
+  1738 0001:00232EB7  1740 0001:00232EE2  1741 0001:00232EEE  1742 0001:00232F3F
+  1743 0001:00232F48  1745 0001:00232F7F  1747 0001:00232F8B  1748 0001:00232FB8
+  1749 0001:00232FE0  1750 0001:00232FE7  1759 0001:002331C8  1760 0001:002331ED
+  1761 0001:002331F7  1762 0001:002331FB  1763 0001:0023320B  1765 0001:0023321B
+  1766 0001:00233225  1768 0001:0023323C  1769 0001:00233280  1772 0001:00233292
+  1773 0001:002332D6  1776 0001:002332E8  1777 0001:0023332C  1781 0001:0023333B
+  1782 0001:0023337F  1785 0001:0023338C  1787 0001:002333A0  1788 0001:002333A4
+  1792 0001:002333B0  1793 0001:002333BB  1794 0001:002333CF  1797 0001:002333D9
+  1798 0001:002333FF  1804 0001:002335F0  1806 0001:002335FC  1809 0001:0023360D
+  1811 0001:0023361D  1812 0001:00233636  1814 0001:00233642  1816 0001:00233652
+  1817 0001:00233665  1818 0001:0023366F  1820 0001:00233671  1821 0001:0023367D
+  1829 0001:002336F0  1831 0001:0023370F  1832 0001:00233720  1834 0001:00233735
+  1836 0001:00233772  1838 0001:00233782  1839 0001:0023379B  1841 0001:002337A7
+  1843 0001:002337B7  1844 0001:002337CA  1846 0001:002337CC  1847 0001:002337D9
+  1854 0001:00233868  1856 0001:002338A1  1857 0001:002338C4  1858 0001:002338E0
+  1860 0001:002338F5  1861 0001:0023392C  1863 0001:00233948  1864 0001:00233959
+  1866 0001:0023395B  1867 0001:00233978  1869 0001:0023397E  1870 0001:0023398D
+  1872 0001:0023398F  1874 0001:002339B5  1875 0001:002339C6  1877 0001:002339C8
+  1878 0001:002339D0  1885 0001:00233B10  1886 0001:00233B34  1887 0001:00233B50
+  1888 0001:00233B6C  1890 0001:00233B78  1891 0001:00233B83  1892 0001:00233B8D
+  1893 0001:00233B95  1895 0001:00233BC7  1897 0001:00233BE6  1898 0001:00233C0D
+  1899 0001:00233C34  1900 0001:00233C43  1902 0001:00233C48  1906 0001:00233CB9
+  1907 0001:00233CD4  1908 0001:00233CF4  1910 0001:00233D03  1911 0001:00233D0B
+  1912 0001:00233D3D  1916 0001:00233D66  1917 0001:00233D8D  1918 0001:00233DB4
+  1920 0001:00233DC3  1930 0001:00233ED4  1932 0001:00233F06  1933 0001:00233F22
+  1934 0001:00233F42  1936 0001:00233F59  1937 0001:00233F6C  1939 0001:00233F71
+  1941 0001:00233FA6  1943 0001:00233FBD  1944 0001:00233FCA  1947 0001:00233FD9
+  1948 0001:00233FE6  1950 0001:00233FF3  1951 0001:0023400E  1953 0001:00234014
+  1954 0001:00234023  1956 0001:00234025  1957 0001:0023403D  1958 0001:0023409F
+  1961 0001:00234274  1962 0001:002342A0  1964 0001:002342B0  1965 0001:002342C1
+  1966 0001:002342E5  1967 0001:00234309  1968 0001:0023432D  1969 0001:00234351
+  1970 0001:00234375  1971 0001:00234399  1972 0001:002343BD  1973 0001:002343E1
+  1974 0001:00234405  1983 0001:0023449C  1985 0001:002344DC  1986 0001:002344F8
+  1987 0001:00234515  1988 0001:0023452F  1989 0001:00234545  1991 0001:00234558
+  1994 0001:002345BB  1996 0001:002345DB  1997 0001:002345F2  1998 0001:00234603
+  1999 0001:0023461F  2000 0001:00234630  2002 0001:00234676  2003 0001:00234681
+  2005 0001:0023468B  2006 0001:00234696  2014 0001:002346A0  2015 0001:002346A4
+  2016 0001:002346AF  2017 0001:002346CF  2018 0001:002346DA  2019 0001:002346EB
+  2020 0001:00234720  2021 0001:00234743  2022 0001:00234757  2024 0001:00234766
+  2026 0001:0023476C  2027 0001:00234774  2029 0001:0023477C  2033 0001:00234784
+  2034 0001:00234794  2035 0001:002347A4  2036 0001:002347A9  2037 0001:002347B3
+  2038 0001:002347CB  2041 0001:002347D7  2042 0001:002347E8  2049 0001:002349D4
+  2051 0001:00234A0D  2052 0001:00234A2D  2053 0001:00234A49  2055 0001:00234A5A
+  2056 0001:00234A91  2057 0001:00234AAE  2059 0001:00234AB4  2060 0001:00234AC3
+  2062 0001:00234AC5  2063 0001:00234ACD  2070 0001:00234B3C  2072 0001:00234B5F
+  2074 0001:00234B6F  2075 0001:00234BA1  2076 0001:00234BB1  2077 0001:00234BBC
+  2080 0001:00234BDA  2081 0001:00234BE2  2084 0001:00234C16  2085 0001:00234C29
+  2100 0001:00234CA4  2110 0001:00234CE4  2111 0001:00234D00  2112 0001:00234D10
+  2114 0001:00234D2C  2115 0001:00234D37  2117 0001:00234D53  2119 0001:00234D5F
+  2120 0001:00234D7E  2122 0001:00234D91  2124 0001:00234DA8  2125 0001:00234DBB
+  2127 0001:00234DC0  2129 0001:00234DF5  2131 0001:00234E0C  2132 0001:00234E19
+  2135 0001:00234E28  2136 0001:00234E35  2138 0001:00234E42  2140 0001:00234E62
+  2141 0001:00234E66  2142 0001:00234E81  2144 0001:00234E8B  2145 0001:00234EA8
+  2146 0001:00234EBC  2148 0001:00234EC7  2149 0001:00234ED7  2150 0001:00234EE0
+  2152 0001:00234EEB  2154 0001:00234F02  2157 0001:00234F4A  2159 0001:00234F54
+  2160 0001:00234FA4  2162 0001:00234FC5  2163 0001:00234FE0  2164 0001:00234FFA
+  2165 0001:0023502D  2166 0001:00235063  2168 0001:00235069  2169 0001:00235084
+  2171 0001:00235091  2174 0001:002350A2  2177 0001:002350E3  2178 0001:002350F2
+  2179 0001:0023510D  2181 0001:00235127  2183 0001:0023512F  2185 0001:00235139
+  2186 0001:00235151  2188 0001:0023518E  2189 0001:0023519B  2190 0001:002351A5
+  2191 0001:002351DC  2192 0001:002351E7  2193 0001:002351FD  2196 0001:00235218
+  2198 0001:00235224  2199 0001:00235250  2200 0001:0023525C  2202 0001:00235273
+  2204 0001:00235299  2218 0001:00235568  2219 0001:002355AD  2220 0001:002355B4
+  2221 0001:002355C1  2222 0001:002355CB  2223 0001:002355F1  2225 0001:0023563E
+  2226 0001:00235644  2227 0001:00235646  2223 0001:00235649  2228 0001:0023564E
+  2230 0001:00235662  2231 0001:0023566D  2232 0001:00235677  2234 0001:00235683
+  2235 0001:0023568D  2237 0001:00235692  2240 0001:002356A9  2242 0001:002356CA
+  2244 0001:002356D6  2245 0001:002356E3  2248 0001:002356F2  2249 0001:002356FF
+  2251 0001:0023570C  2252 0001:0023571A  2254 0001:00235720  2255 0001:0023572F
+  2257 0001:00235735  2259 0001:00235741  2260 0001:00235754  2262 0001:0023575A
+  2264 0001:00235781  2265 0001:00235787  2266 0001:0023578B  2268 0001:00235795
+  2269 0001:002357B1  2271 0001:002357BB  2272 0001:002357C0  2273 0001:002357CE
+  2274 0001:002357E2  2276 0001:002357F3  2277 0001:00235803  2278 0001:0023580C
+  2281 0001:00235819  2282 0001:00235823  2285 0001:00235829  2286 0001:00235837
+  2291 0001:0023584C  2293 0001:0023585C  2295 0001:00235888  2296 0001:00235890
+  2298 0001:002358CD  2301 0001:00235AB8  2303 0001:00235AC4  2304 0001:00235AE4
+  2305 0001:00235B00  2306 0001:00235B0B  2308 0001:00235B1B  2309 0001:00235B3F
+  2310 0001:00235B59  2312 0001:00235B91  2313 0001:00235BC2  2316 0001:00235BE5
+  2317 0001:00235BF5  2318 0001:00235C05  2319 0001:00235C15  2321 0001:00235C25
+  2323 0001:00235C38  2324 0001:00235C48  2325 0001:00235C58  2326 0001:00235C68
+  2327 0001:00235C89  2328 0001:00235CBF  2329 0001:00235CF5  2332 0001:00235D1B
+  2333 0001:00235D2B  2334 0001:00235D3B  2335 0001:00235D4B  2336 0001:00235D5B
+  2337 0001:00235D6B  2338 0001:00235D7B  2340 0001:00235D8B  2343 0001:00235DA4
+  2345 0001:00235DB0  2346 0001:00235DBE  2349 0001:00235DC4  2351 0001:00235DD0
+  2352 0001:00235DDE  2355 0001:00235DE4  2357 0001:00235E03  2358 0001:00235E21
+  2360 0001:00235E2E  2363 0001:00235E50  2365 0001:00235E5C  2366 0001:00235E71
+  2367 0001:00235E7F  2370 0001:00235E84  2372 0001:00235E90  2373 0001:00235E9A
+  2374 0001:00235EA7  2380 0001:00235EAC  2382 0001:00235EB8  2383 0001:00235ED8
+  2385 0001:00235EE4  2386 0001:00235F25  2387 0001:00235F2F  2398 0001:00235F3D
+  2400 0001:00235F45  2403 0001:00235F50  2404 0001:00235F5C  2405 0001:00235F7D
+  2408 0001:00235F84  2410 0001:00235F90  2411 0001:00235FB0  2413 0001:00235FBC
+  2414 0001:00235FFD  2415 0001:00236007  2416 0001:00236011  2417 0001:0023601F
+  2419 0001:00236027  2422 0001:00236030  2424 0001:0023603C  2425 0001:0023605D
+  2428 0001:00236064  2430 0001:00236070  2431 0001:00236091  2434 0001:00236098
+  2436 0001:002360A4  2437 0001:002360AE  2438 0001:002360BE  2439 0001:002360CC
+  2441 0001:002360E7  2442 0001:002360F1  2443 0001:002360FB  2445 0001:00236113
+  2448 0001:00236118  2450 0001:00236124  2451 0001:0023612E  2452 0001:0023613E
+  2453 0001:0023614C  2455 0001:00236167  2456 0001:00236171  2457 0001:0023617B
+  2459 0001:00236193  2466 0001:00236198  2468 0001:002361C0  2469 0001:002361F2
+  2470 0001:002361FE  2471 0001:00236209  2472 0001:00236218  2473 0001:00236226
+  2474 0001:00236231  2476 0001:00236286  2478 0001:00236296  2481 0001:00236300
+  2483 0001:0023630C  2484 0001:0023632F  2485 0001:0023634C  2487 0001:0023635B
+  2488 0001:00236365  2489 0001:00236375  2490 0001:00236399  2491 0001:002363A7
+  2492 0001:002363AE  2493 0001:002363C1  2496 0001:002363D4  2497 0001:002363DF
+  2498 0001:002363FC  2506 0001:0023642C  2507 0001:0023645D  2508 0001:0023646B
+  2510 0001:0023648F  2511 0001:00236499  2514 0001:002364B8  2515 0001:002364D5
+  2517 0001:002364E4  2518 0001:002364F2  2520 0001:002364F8  2521 0001:00236505
+  2526 0001:00236510  2537 0001:00236540  2539 0001:00236583  2540 0001:0023659F
+  2541 0001:002365BB  2543 0001:002365D7  2544 0001:002365E2  2545 0001:002365EC
+  2546 0001:002365F4  2548 0001:00236626  2549 0001:0023663C  2550 0001:00236659
+  2551 0001:0023665F  2553 0001:0023666B  2556 0001:002366A4  2558 0001:002366AB
+  2560 0001:002366AD  2561 0001:002366C2  2564 0001:002366D3  2565 0001:002366E2
+  2568 0001:002366E7  2569 0001:00236707  2570 0001:0023671D  2571 0001:00236765
+  2574 0001:00236798  2575 0001:002367A9  2576 0001:002367CD  2577 0001:002367E5
+  2578 0001:00236806  2580 0001:0023680C  2581 0001:0023681E  2582 0001:00236834
+  2585 0001:0023684D  2587 0001:00236858  2588 0001:0023686D  2589 0001:00236887
+  2592 0001:00236948  2594 0001:00236954  2595 0001:0023695F  2603 0001:00236964
+  2604 0001:00236984  2606 0001:00236990  2607 0001:0023699B  2609 0001:002369A5
+  2610 0001:002369C5  2611 0001:002369E5  2612 0001:002369F0  2613 0001:00236A00
+  2616 0001:00236A0E  2617 0001:00236A1D  2619 0001:00236A3E  2620 0001:00236A4F
+  2622 0001:00236A54  2623 0001:00236A5B  2624 0001:00236A6F  2625 0001:00236A80
+  2626 0001:00236A8E  2627 0001:00236AA2  2628 0001:00236AB8  2629 0001:00236AC5
+  2630 0001:00236AFC  2631 0001:00236B09  2632 0001:00236B13  2633 0001:00236B1E
+  2634 0001:00236B42  2635 0001:00236B4D  2636 0001:00236B63  2637 0001:00236B74
+  2638 0001:00236B88  2639 0001:00236B8F  2640 0001:00236BAA  2643 0001:00236BB6
+  2644 0001:00236C09  2645 0001:00236C5C  2650 0001:00236DCC  2651 0001:00236DFF
+  2653 0001:00236E0B  2654 0001:00236E16  2656 0001:00236E20  2657 0001:00236E36
+  2658 0001:00236E41  2659 0001:00236E51  2660 0001:00236E5F  2662 0001:00236E6F
+  2663 0001:00236E82  2664 0001:00236E95  2665 0001:00236EB0  2666 0001:00236ECB
+  2667 0001:00236EDE  2668 0001:00236EF9  2669 0001:00236F07  2670 0001:00236F15
+  2671 0001:00236F28  2672 0001:00236F3B  2673 0001:00236F49  2674 0001:00236F57
+  2675 0001:00236F6A  2676 0001:00236F7D  2677 0001:00236F8B  2678 0001:00236F92
+  2682 0001:00236F9F  2683 0001:00236FA6  2685 0001:00236FB1  2696 0001:00236FDC
+  2698 0001:00236FE8  2699 0001:00236FF4  2701 0001:0023700C  2702 0001:0023701D
+  2704 0001:0023701F  2706 0001:00237037  2707 0001:00237044  2710 0001:00237060
+  2713 0001:0023720C  2715 0001:00237218  2716 0001:00237229  2719 0001:00237230
+  2721 0001:0023724F  2722 0001:00237272  2725 0001:00237294  2727 0001:002372A0
+  2728 0001:002372C7  2729 0001:002372E1  2730 0001:002372FB  2731 0001:00237315
+  2732 0001:0023732F  2735 0001:00237334  2737 0001:00237340  2738 0001:0023734E
+  2741 0001:00237354  2743 0001:00237360  2744 0001:00237370  2745 0001:00237384
+  2746 0001:00237395  2747 0001:002373A3  2748 0001:002373C1  2751 0001:002373C8
+  2753 0001:002373D4  2754 0001:002373E6  2755 0001:0023740D  2758 0001:00237414
+  2760 0001:00237420  2761 0001:00237432  2762 0001:00237459  2765 0001:00237460
+  2767 0001:0023746C  2768 0001:0023747A  2771 0001:00237480  2773 0001:0023748C
+  2774 0001:0023749A  2777 0001:002374A0  2779 0001:002374AC  2780 0001:002374BA
+  2783 0001:002374C0  2785 0001:002374CC  2786 0001:002374DA  2789 0001:002374E0
+  2791 0001:002374EC  2792 0001:00237506  2793 0001:00237520  2794 0001:0023753A
+  2795 0001:00237554  2796 0001:00237569  2799 0001:00237570  2800 0001:0023757C
+  2801 0001:00237588  2802 0001:00237594  2803 0001:0023759C  2804 0001:002375A6
+  2805 0001:002375B2  2808 0001:002375B8  2809 0001:002375C1  2810 0001:002375CD
+  2812 0001:002375D3  2813 0001:002375F1  2816 0001:002375F8  2817 0001:00237604
+  2818 0001:00237612  2819 0001:00237620  2821 0001:0023762E  2824 0001:00237634
+  2825 0001:0023763D  2826 0001:00237645  2829 0001:0023764C  2832 0001:00237653
+  2833 0001:0023765D  2834 0001:0023766B  2835 0001:0023767C  2836 0001:0023768E
+  2837 0001:002376A0  2838 0001:002376AE  2839 0001:002376BF  2841 0001:002376D0
+  2844 0001:002376D4  2846 0001:002376E0  2847 0001:002376E5  2861 0001:002376EC
+  2862 0001:0023770D  2863 0001:0023771C  2864 0001:0023772A  2865 0001:00237738
+  2866 0001:0023773F  2867 0001:00237752  2868 0001:00237765  2869 0001:00237779
+  2870 0001:0023778C  2871 0001:0023779A  2872 0001:002377AE  2873 0001:002377C2
+  2874 0001:002377D6  2875 0001:002377E7  2876 0001:002377F8  2877 0001:00237808
+  2878 0001:00237818  2880 0001:00237823  2882 0001:00237844  2883 0001:00237866
+  2885 0001:00237872  2886 0001:00237898  2888 0001:002378B2  2889 0001:002378BA
+  2891 0001:002378C8  2893 0001:002378E9  2894 0001:0023790B  2896 0001:00237917
+  2897 0001:0023793D  2899 0001:00237957  2900 0001:0023795F  2902 0001:0023796D
+  2903 0001:002379AC  2906 0001:002379DC  2908 0001:002379EC  2909 0001:002379F1
+  2910 0001:00237A00  2911 0001:00237A12  2912 0001:00237A28  2913 0001:00237A43
+  2914 0001:00237A47  2915 0001:00237AA2  2916 0001:00237AD9  2917 0001:00237B08
+  2918 0001:00237B2E  2919 0001:00237B43  2921 0001:00237B54  2922 0001:00237B60
+  2923 0001:00237B6C  2924 0001:00237B78  2925 0001:00237B85  2926 0001:00237BBA
+  2928 0001:00237BCE  2929 0001:00237C0E  2930 0001:00237C23  2931 0001:00237C2F
+  2934 0001:00237C47  2935 0001:00237C82  2936 0001:00237C86  2931 0001:00237C89
+  2937 0001:00237C8E  2938 0001:00237C94  2939 0001:00237CA7  2940 0001:00237CB8
+  2941 0001:00237CCB  2943 0001:00237CD9  2945 0001:00237CDC  2912 0001:00237CDF
+  2946 0001:00237CE9  2950 0001:00237CF1  2952 0001:00237D0B  2954 0001:00237D17
+  2955 0001:00237D1E  2956 0001:00237D32  2957 0001:00237D49  2958 0001:00237D55
+  2959 0001:00237D79  2961 0001:00237D89  2963 0001:00237DA1  2964 0001:00237DB2
+  2966 0001:00237DBC  2967 0001:00237DC6  2968 0001:00237DD1  2964 0001:00237DDC
+  2973 0001:00237DE7  2974 0001:00237E0A  2975 0001:00237E1A  2976 0001:00237E4A
+  2977 0001:00237E50  2978 0001:00237E80  2979 0001:00237E86  2980 0001:00237EA9
+  2982 0001:00237EAF  2983 0001:00237EBB  2985 0001:00237ECF  2989 0001:00237EDA
+  2990 0001:00237EEB  2992 0001:00237EF7  2993 0001:00237F01  2994 0001:00237F0D
+  2995 0001:00237F26  2997 0001:00237F32  2998 0001:00237F5E  3002 0001:00237F7A
+  3003 0001:00237FA4  3007 0001:00237FD6  3008 0001:00237FEA  3009 0001:00237FF1
+  3010 0001:0023800E  3013 0001:0023803C  3014 0001:0023804F  3015 0001:00238062
+  3017 0001:00238072  3020 0001:00238144  3023 0001:00238153  3024 0001:0023815A
+  3025 0001:00238168  3026 0001:00238180  3027 0001:0023819D  3028 0001:002381AB
+  3030 0001:002381B2  3037 0001:002381C4  3038 0001:002381F0  3041 0001:002381FD
+  3042 0001:00238209  3044 0001:00238215  3045 0001:00238226  3046 0001:00238236
+  3048 0001:00238243  3049 0001:00238265  3050 0001:0023827F  3051 0001:0023829A
+  3053 0001:002382C1  3054 0001:002382D1  3055 0001:002382EB  3058 0001:002382FE
+  3060 0001:00238325  3061 0001:00238335  3063 0001:0023834F  3064 0001:00238362
+  3065 0001:00238375  3066 0001:00238392  3067 0001:002383AF  3068 0001:002383C2
+  3070 0001:002383D6  3071 0001:002383E6  3072 0001:002383FA  3073 0001:00238423
+  3075 0001:0023842F  3076 0001:0023844D  3078 0001:0023846D  3079 0001:00238484
+  3080 0001:00238493  3081 0001:002384A2  3083 0001:002384AF  3085 0001:002384FB
+  3088 0001:00238517  3089 0001:00238525  3090 0001:00238542  3091 0001:00238555
+  3092 0001:00238577  3093 0001:0023858F  3095 0001:002385B4  3096 0001:002385BB
+  3097 0001:002385EE  3099 0001:002385FA  3100 0001:00238618  3099 0001:00238634
+  3101 0001:00238639  3102 0001:00238647  3103 0001:00238657  3104 0001:00238660
+  3106 0001:00238680  3107 0001:0023869E  3108 0001:002386B1  3109 0001:002386B9
+  3110 0001:002386D3  3112 0001:002386ED  3113 0001:002386F4  3114 0001:00238700
+  3116 0001:00238712  3117 0001:0023872C  3121 0001:00238745  3122 0001:0023874F
+  3123 0001:00238763  3124 0001:00238774  3126 0001:0023877E  3127 0001:0023878E
+  3130 0001:0023879E  3131 0001:002387A3  3132 0001:002387AD  3133 0001:002387C5
+  3137 0001:002387D4  3139 0001:002387F5  3140 0001:00238806  3141 0001:00238816
+  3142 0001:0023883A  3143 0001:00238845  3145 0001:00238862  3146 0001:0023887F
+  3147 0001:00238892  3149 0001:002388A5  3152 0001:00238978  3155 0001:00238987
+  3156 0001:0023899C  3157 0001:002389AB  3158 0001:002389C0  3160 0001:002389CF
+  3165 0001:002389D4  3168 0001:002389EC  3171 0001:00238A42  3174 0001:00238A7B
+  3175 0001:00238AB2  3178 0001:00238AE6  3179 0001:00238AEC  3182 0001:00238B22
+  3185 0001:00238B58  3188 0001:00238B98  3191 0001:00238BB0  3194 0001:00238C06
+  3197 0001:00238C3F  3198 0001:00238C76  3201 0001:00238CAA  3202 0001:00238CB0
+  3205 0001:00238CE6  3208 0001:00238D1C  3210 0001:00238D5C  3213 0001:00238D6B
+  3214 0001:00238D74  3216 0001:00238D8B  3217 0001:00238D97  3219 0001:00238DAA
+  3221 0001:00238DBB  3222 0001:00238DD0  3223 0001:00238DDF  3224 0001:00238DF4
+  3226 0001:00238E03  3229 0001:00238E14  3238 0001:00238E20  3243 0001:00238E24
+  3244 0001:00238E33  3245 0001:00238E39  3246 0001:00238E46  3247 0001:00238E5D
+  3248 0001:00238E6E  3249 0001:00238E7F  3250 0001:00238E95  3253 0001:00238EAB
+  3254 0001:00238EB9  3255 0001:00238ECC  3256 0001:00238EDC  3257 0001:00238EE2
+  3264 0001:00238EE8  3265 0001:00238EF7  3267 0001:00238F00  3268 0001:00238F05
+  3270 0001:00238F07  3271 0001:00238F19  3273 0001:00238F25  3274 0001:00238F30
+  3276 0001:00238F36  3277 0001:00238F4E  3278 0001:00238F65  3279 0001:00238F80
+  3288 0001:00238F88  3289 0001:00238FAB  3291 0001:00238FB7  3292 0001:00238FCA
+  3293 0001:00238FCF  3295 0001:00238FD1  3299 0001:0023900D  3300 0001:00239012
+  3307 0001:00239014  3309 0001:00239033  3310 0001:00239042  3312 0001:00239047
+  3319 0001:002390CC  3320 0001:002390DB  3321 0001:002390FB  3322 0001:00239106
+  3324 0001:00239114  3325 0001:0023911B  3326 0001:0023913F  3325 0001:00239161
+  3327 0001:00239166  3328 0001:00239199  3329 0001:002391C1  3330 0001:002391C9
+  3331 0001:002391F6  3332 0001:0023920A  3333 0001:0023921E  3334 0001:00239232
+  3335 0001:00239246  3337 0001:0023925A  3339 0001:0023926C  3340 0001:0023927A
+  3342 0001:0023928D  3347 0001:002392D0  3348 0001:002392F6  3349 0001:002392FF
+  3351 0001:00239317  3352 0001:00239320  3354 0001:00239354  3355 0001:00239362
+  3359 0001:0023938C  3360 0001:002393AF  3361 0001:002393BE  3363 0001:002393CA
+  3364 0001:002393D4  3365 0001:002393F8  3366 0001:00239403  3368 0001:00239420
+  3371 0001:00239474  3373 0001:00239480  3375 0001:0023948C  3377 0001:00239498
+  3378 0001:002394C4  3382 0001:002394E0  3383 0001:0023950A  3386 0001:0023953C
+  3389 0001:00239540  3390 0001:00239547  3391 0001:00239551  3392 0001:00239565
+  3393 0001:00239579  3394 0001:0023958D  3395 0001:002395A1  3396 0001:002395B5
+  3397 0001:002395C9  3398 0001:002395D2  3400 0001:002395E5  3401 0001:002395F5
+  3404 0001:002395F8  3405 0001:00239604  3407 0001:00239618  3408 0001:00239624
+  3410 0001:00239637  3411 0001:00239647  3413 0001:0023964D  3414 0001:00239667
+  3415 0001:0023967C  3419 0001:0023968E  3420 0001:002396A8  3421 0001:002396B8
+  3423 0001:002396D3  3424 0001:002396E2  3428 0001:0023970A  3429 0001:0023971A
+  3430 0001:0023972A  3431 0001:0023973A  3433 0001:00239755  3434 0001:00239764
+  3436 0001:0023978C  3437 0001:002397B2  3438 0001:002397D0  3439 0001:002397EA
+  3442 0001:002397F0  3444 0001:002397FC  3445 0001:00239805  3453 0001:0023980C
+  3455 0001:0023983A  3456 0001:00239847  3457 0001:00239863  3458 0001:0023987F
+  3460 0001:0023988B  3461 0001:00239896  3462 0001:002398A0  3463 0001:002398A8
+  3465 0001:002398DA  3466 0001:002398EC  3467 0001:002398FD  3468 0001:0023990E
+  3469 0001:00239914  3470 0001:0023994B  3471 0001:00239966  3480 0001:00239994
+  3481 0001:002399BF  3482 0001:002399D3  3483 0001:002399DB  3484 0001:002399EF
+  3485 0001:00239A0C  3486 0001:00239A20  3487 0001:00239A2B  3489 0001:00239A31
+  3490 0001:00239A40  3494 0001:00239A45  3495 0001:00239A4D  3499 0001:00239AB3
+  3501 0001:00239AC3  3503 0001:00239AD5  3505 0001:00239AED  3507 0001:00239B09
+  3508 0001:00239B11  3509 0001:00239B43  3512 0001:00239B73  3516 0001:00239B87
+  3517 0001:00239BAE  3518 0001:00239BD5  3519 0001:00239BE4  3524 0001:00239BE9
+  3526 0001:00239C05  3527 0001:00239C0D  3528 0001:00239C3F  3531 0001:00239C68
+  3533 0001:00239C77  3542 0001:00239D94  3544 0001:00239DD2  3546 0001:00239DD8
+  3547 0001:00239DF3  3548 0001:00239E1E  3550 0001:00239E2B  3551 0001:00239E36
+  3553 0001:00239EA8  3556 0001:00239F07  3557 0001:00239F41  3558 0001:00239F73
+  3560 0001:00239F85  3561 0001:00239F92  3562 0001:00239FC4  3563 0001:00239FD7
+  3566 0001:00239FF4  3567 0001:0023A001  3568 0001:0023A033  3569 0001:0023A046
+  3571 0001:0023A060  3572 0001:0023A0A5  3574 0001:0023A0D2  3577 0001:0023A0DF
+  3578 0001:0023A0EA  3582 0001:0023A1F4  3584 0001:0023A203  3585 0001:0023A22E
+  3586 0001:0023A23A  3587 0001:0023A242  3599 0001:0023A250  3600 0001:0023A27D
+  3601 0001:0023A287  3602 0001:0023A297  3603 0001:0023A2A1  3604 0001:0023A2BE
+  3606 0001:0023A2C4  3607 0001:0023A2D4  3609 0001:0023A31C  3611 0001:0023A321
+  3613 0001:0023A349  3614 0001:0023A35E  3615 0001:0023A36C  3616 0001:0023A38B
+  3617 0001:0023A3B6  3618 0001:0023A3D5  3620 0001:0023A3F6  3622 0001:0023A41D
+  3623 0001:0023A42C  3624 0001:0023A43A  3626 0001:0023A452  3629 0001:0023A462
+  3631 0001:0023A46D  3635 0001:0023A5A4  3637 0001:0023A5B3  3638 0001:0023A5C2
+  3639 0001:0023A5EE  3640 0001:0023A618  3643 0001:0023A620  3644 0001:0023A62C
+  3645 0001:0023A639  3648 0001:0023A640  3649 0001:0023A64C  3650 0001:0023A659
+  3676 0001:0023A660  3677 0001:0023A66C  3679 0001:0023A67E  3683 0001:0023A6D8
+  3685 0001:0023A6F7  3688 0001:0023A6FC  3690 0001:0023A708  3692 0001:0023A71E
+  3693 0001:0023A738  3695 0001:0023A759  3699 0001:0023A7B3  3701 0001:0023A7D4
+  3704 0001:0023A7D8  3706 0001:0023A7E4  3708 0001:0023A7F6  3710 0001:0023A820
+  3712 0001:0023A837  3713 0001:0023A84C  3715 0001:0023A86F  3718 0001:0023A874
+  3719 0001:0023A882  3720 0001:0023A894  3722 0001:0023A8AA  3724 0001:0023A8D4
+  3725 0001:0023A8F3  3726 0001:0023A908  3727 0001:0023A91E  3728 0001:0023A931
+  3729 0001:0023A947  3731 0001:0023A958  3734 0001:0023A960  3736 0001:0023A96C
+  3737 0001:0023A994  3738 0001:0023A9BA  3739 0001:0023A9E0  3740 0001:0023AA06
+  3743 0001:0023AA0C  3745 0001:0023AA18  3746 0001:0023AA40  3747 0001:0023AA60
+  3748 0001:0023AA86  3749 0001:0023AAA4  3750 0001:0023AACA  3751 0001:0023AAE8
+  3752 0001:0023AB0E  3753 0001:0023AB2C  3756 0001:0023AB30  3757 0001:0023AB3D
+  3758 0001:0023AB4F  3759 0001:0023AB5A  3762 0001:0023AB60  3763 0001:0023AB6E
+  3764 0001:0023AB80  3766 0001:0023ABB4  3768 0001:0023ABC7  3769 0001:0023ABD2
+  3772 0001:0023ABD8  3773 0001:0023ABE5  3774 0001:0023ABF7  3775 0001:0023AC02
+  3778 0001:0023AC08  3780 0001:0023AC17  3781 0001:0023AC23  3782 0001:0023AC29
+  3786 0001:0023AC30  3788 0001:0023AC40  3790 0001:0023AC50  3791 0001:0023AC56
+  3792 0001:0023AC7E  3793 0001:0023AC84  3794 0001:0023AC9C  3796 0001:0023ACB1
+  3797 0001:0023ACD7  3799 0001:0023ACE1  3800 0001:0023ACEA  3801 0001:0023AD10
+  3803 0001:0023AD18  3806 0001:0023AD20  3809 0001:0023AD2D  3810 0001:0023AD36
+  3811 0001:0023AD4E  3812 0001:0023AD61  3815 0001:0023AD68  3818 0001:0023AD74
+  3820 0001:0023AD92  3821 0001:0023ADA3  3824 0001:0023ADA8  3827 0001:0023ADB5
+  3828 0001:0023ADBE  3829 0001:0023ADD8  3830 0001:0023ADED  3833 0001:0023ADF4
+  3835 0001:0023AE00  3836 0001:0023AE0F  3839 0001:0023AE14  3841 0001:0023AE36
+  3842 0001:0023AE58  3843 0001:0023AE7A  3844 0001:0023AE9C  3845 0001:0023AEE3
+  3846 0001:0023AF2A  3847 0001:0023AF4C  3848 0001:0023AF6E  3849 0001:0023AF90
+  3850 0001:0023AFB2  3856 0001:0023AFE4  3857 0001:0023AFED  3859 0001:0023B00D
+  3860 0001:0023B01D  3862 0001:0023B029  3863 0001:0023B033  3864 0001:0023B042
+  3866 0001:0023B04F  3867 0001:0023B056  3868 0001:0023B060  3869 0001:0023B076
+  3870 0001:0023B07F  3871 0001:0023B08E  3872 0001:0023B09D  3874 0001:0023B0AC
+  3875 0001:0023B0BD  3883 0001:0023B0C4  3884 0001:0023B0F0  3886 0001:0023B103
+
+Line numbers for fNotes(fNotes.pas) segment .itext
+
+  3877 0002:00001474  3878 0002:0000148E  3879 0002:00001498  3880 0002:000014A9
+  3882 0002:000014BA
+
+Line numbers for fReminderTree(fReminderTree.pas) segment .text
+
+   121 0001:0023B654   122 0001:0023B65E   123 0001:0023B663   124 0001:0023B66C
+   125 0001:0023B685   126 0001:0023B68F   131 0001:0023B690   132 0001:0023B693
+   135 0001:0023B694   136 0001:0023B6AB   137 0001:0023B6B6   138 0001:0023B6D0
+   139 0001:0023B6DC   140 0001:0023B6F9   142 0001:0023B70F   143 0001:0023B723
+   144 0001:0023B72D   145 0001:0023B734   146 0001:0023B73F   148 0001:0023B74A
+   149 0001:0023B767   150 0001:0023B775   152 0001:0023B7A0   153 0001:0023B7B4
+   154 0001:0023B7C7   160 0001:0023B7FC   161 0001:0023B803   163 0001:0023B813
+   164 0001:0023B81D   165 0001:0023B82B   167 0001:0023B82F   169 0001:0023B841
+   170 0001:0023B864   173 0001:0023B878   177 0001:0023B88E   178 0001:0023B8A3
+   180 0001:0023B8B5   183 0001:0023B8F8   186 0001:0023B90A   195 0001:0023B910
+   196 0001:0023B919   197 0001:0023B921   199 0001:0023B92A   200 0001:0023B93A
+   201 0001:0023B942   203 0001:0023B947   204 0001:0023B954   205 0001:0023B962
+   206 0001:0023B96C   207 0001:0023B97F   208 0001:0023B98D   209 0001:0023B99B
+   210 0001:0023B9A9   211 0001:0023B9BA   212 0001:0023B9C4   213 0001:0023B9CE
+   214 0001:0023B9D8   216 0001:0023B9F0   217 0001:0023B9FA   218 0001:0023BA0B
+   220 0001:0023BA24   221 0001:0023BA2D   223 0001:0023BA4F   225 0001:0023BA7C
+   228 0001:0023BAA4   230 0001:0023BAB9   242 0001:0023BB14   243 0001:0023BB18
+   244 0001:0023BB1A   247 0001:0023BB25   248 0001:0023BB2E   245 0001:0023BB37
+   250 0001:0023BB3F   252 0001:0023BB44   253 0001:0023BB71   255 0001:0023BB81
+   257 0001:0023BB85   258 0001:0023BB8E   259 0001:0023BB98   260 0001:0023BBA2
+   264 0001:0023BBBC   265 0001:0023BBD2   266 0001:0023BBD9   267 0001:0023BBDD
+   269 0001:0023BBDF   270 0001:0023BBE2   272 0001:0023BBEA   273 0001:0023BBF9
+   274 0001:0023BC07   277 0001:0023BC21   278 0001:0023BC2D   279 0001:0023BC31
+   280 0001:0023BC3B   275 0001:0023BC44   282 0001:0023BC54   284 0001:0023BC5E
+   285 0001:0023BC60   288 0001:0023BC68   290 0001:0023BC77   291 0001:0023BC82
+   293 0001:0023BCEF   294 0001:0023BCFD   296 0001:0023BCFE   286 0001:0023BD07
+   299 0001:0023BD1B   301 0001:0023BD3E   305 0001:0023BD4E   308 0001:0023BD90
+   309 0001:0023BD97   311 0001:0023BDDD   312 0001:0023BDE1   314 0001:0023BE0B
+   316 0001:0023BE35   319 0001:0023BE3C   320 0001:0023BE43   321 0001:0023BE4F
+   322 0001:0023BE59   323 0001:0023BE67   324 0001:0023BE71   326 0001:0023BE89
+   328 0001:0023BE9B   332 0001:0023BEA0   333 0001:0023BEA7   334 0001:0023BEB3
+   335 0001:0023BEBD   336 0001:0023BECB   337 0001:0023BED5   339 0001:0023BEED
+   341 0001:0023BEFF   347 0001:0023BF04   348 0001:0023BF0D   349 0001:0023BF2B
+   350 0001:0023BF43   352 0001:0023BF4D   353 0001:0023BF4F   354 0001:0023BF60
+   355 0001:0023BF8C   356 0001:0023BF98   357 0001:0023BFAC   358 0001:0023BFBA
+   359 0001:0023BFE0   360 0001:0023BFF8   361 0001:0023BFFF   363 0001:0023C01C
+   365 0001:0023C038   366 0001:0023C05F   374 0001:0023C064   375 0001:0023C098
+   376 0001:0023C0A1   378 0001:0023C0A7   380 0001:0023C0BF   381 0001:0023C0D2
+   385 0001:0023C0ED   386 0001:0023C100   389 0001:0023C119   390 0001:0023C12C
+   391 0001:0023C155   392 0001:0023C169   393 0001:0023C16D   394 0001:0023C1A2
+   395 0001:0023C1AB   396 0001:0023C1D4   397 0001:0023C209   398 0001:0023C212
+   399 0001:0023C23B   400 0001:0023C270   403 0001:0023C2A4   404 0001:0023C2A7
+   405 0001:0023C2B0   406 0001:0023C2BE   410 0001:0023C2C0   411 0001:0023C2CE
+   414 0001:0023C2D0   415 0001:0023C2D1   416 0001:0023C2DA   417 0001:0023C2F2
+   418 0001:0023C2FC   421 0001:0023C300   422 0001:0023C301   423 0001:0023C30A
+   424 0001:0023C322   425 0001:0023C32C   434 0001:0023C330   435 0001:0023C33E
+   436 0001:0023C341   438 0001:0023C343   440 0001:0023C35D   441 0001:0023C35F
+   443 0001:0023C361   436 0001:0023C362   444 0001:0023C367   446 0001:0023C36F
+   447 0001:0023C380   448 0001:0023C38B   450 0001:0023C3A2   452 0001:0023C3AB
+   453 0001:0023C3B5   454 0001:0023C3C9   455 0001:0023C3D7   456 0001:0023C3ED
+   458 0001:0023C3F1   459 0001:0023C3FA   460 0001:0023C404   461 0001:0023C40F
+   462 0001:0023C418   456 0001:0023C421   465 0001:0023C432   466 0001:0023C446
+   468 0001:0023C458   469 0001:0023C462   471 0001:0023C473   480 0001:0023C47C
+   481 0001:0023C49D   483 0001:0023C4AD   484 0001:0023C4BC   485 0001:0023C4CA
+   486 0001:0023C4D4   488 0001:0023C4D8   489 0001:0023C4F1   486 0001:0023C4FA
+   491 0001:0023C4FE   492 0001:0023C509   493 0001:0023C50C   495 0001:0023C528
+   496 0001:0023C531   498 0001:0023C540   499 0001:0023C558   500 0001:0023C562
+   501 0001:0023C568   503 0001:0023C575   504 0001:0023C580   505 0001:0023C582
+   506 0001:0023C58B   507 0001:0023C596   493 0001:0023C599   509 0001:0023C5AB
+   512 0001:0023C5BB   517 0001:0023C5E0   518 0001:0023C60B   519 0001:0023C63C
+   521 0001:0023C668   522 0001:0023C68E   523 0001:0023C6B0   524 0001:0023C6C4
+   525 0001:0023C6FF   526 0001:0023C73A   528 0001:0023C763   532 0001:0023C798
+   533 0001:0023C79F   539 0001:0023C7A0   540 0001:0023C7BC   541 0001:0023C7CC
+   543 0001:0023C7D0   544 0001:0023C7F2   546 0001:0023C817   549 0001:0023C837
+   551 0001:0023C83E   552 0001:0023C847   556 0001:0023C87C   557 0001:0023C87F
+   558 0001:0023C886   561 0001:0023C88C   562 0001:0023C896   563 0001:0023C8A2
+   564 0001:0023C8AC   565 0001:0023C8BA   566 0001:0023C8C4   568 0001:0023C8DB
+   570 0001:0023C8ED   592 0001:0023C8F4   593 0001:0023C90E   594 0001:0023C91B
+   596 0001:0023C91F   597 0001:0023C932   598 0001:0023C957   600 0001:0023C97C
+   608 0001:0023C9B0   609 0001:0023C9CC   610 0001:0023C9D9   611 0001:0023C9DD
+   613 0001:0023C9F2   614 0001:0023C9FA   615 0001:0023C9FE   617 0001:0023CA26
+   618 0001:0023CA28   619 0001:0023CA35   620 0001:0023CA51   621 0001:0023CA66
+   622 0001:0023CA89   623 0001:0023CAC2   624 0001:0023CAC6   626 0001:0023CB0D
+   627 0001:0023CB0F   628 0001:0023CB1C   629 0001:0023CB25   633 0001:0023CB74
+   634 0001:0023CB79   638 0001:0023CB7C   639 0001:0023CB81   642 0001:0023CB84
+   643 0001:0023CB9A   644 0001:0023CBA1   646 0001:0023CBBE   647 0001:0023CBC9
+   648 0001:0023CBD5   649 0001:0023CBE1   650 0001:0023CBE9   651 0001:0023CBF1
+   654 0001:0023CC14   655 0001:0023CC17   656 0001:0023CC23   657 0001:0023CC28
+   658 0001:0023CC2F   662 0001:0023CC34   663 0001:0023CC39   667 0001:0023CC3C
+   668 0001:0023CC43   672 0001:0023CC44   673 0001:0023CC50   678 0001:0023CC54
+   679 0001:0023CC58   680 0001:0023CC72   681 0001:0023CC8C   682 0001:0023CCA6
+   683 0001:0023CCAD   684 0001:0023CCB6   685 0001:0023CCD3   686 0001:0023CCE5
+   687 0001:0023CCF7   689 0001:0023CD09   691 0001:0023CD2F   694 0001:0023CD55
+   695 0001:0023CD6C   696 0001:0023CD75   699 0001:0023CD78   700 0001:0023CD81
+   701 0001:0023CD9B   702 0001:0023CDB5   703 0001:0023CDCF   704 0001:0023CDE9
+   710 0001:0023CDF0   711 0001:0023CE0B   712 0001:0023CE23   713 0001:0023CE3B
+   714 0001:0023CE65   715 0001:0023CE73   716 0001:0023CE81   717 0001:0023CE8F
+   719 0001:0023CE9B   723 0001:0023CF24   724 0001:0023CF29   729 0001:0023CF2C
+   730 0001:0023CF3E   731 0001:0023CF4E   734 0001:0023CF6C   735 0001:0023CF93
+   736 0001:0023CFA3   737 0001:0023CFA8   738 0001:0023CFC6   741 0001:0023D018
+   742 0001:0023D01F   743 0001:0023D026   744 0001:0023D02E   745 0001:0023D055
+   751 0001:0023D068   752 0001:0023D06A   753 0001:0023D06F   756 0001:0023D070
+   757 0001:0023D097   758 0001:0023D0A7   759 0001:0023D0AC   760 0001:0023D0CA
+   763 0001:0023D124   764 0001:0023D144   765 0001:0023D154   768 0001:0023D178
+   769 0001:0023D198   770 0001:0023D1A8   771 0001:0023D1B6   772 0001:0023D1BD
+   773 0001:0023D1C2   774 0001:0023D1D0   779 0001:0023D214   780 0001:0023D238
+   781 0001:0023D241   783 0001:0023D29C   786 0001:0023D2F3
+
+Line numbers for fEditConsult(Consults\fEditConsult.pas) segment .text
+
+   122 0001:0023D8F0   123 0001:0023D911   124 0001:0023D915   125 0001:0023D91D
+   126 0001:0023D92E   127 0001:0023D93F   128 0001:0023D950   129 0001:0023D96D
+   130 0001:0023D977   133 0001:0023D987   134 0001:0023D998   135 0001:0023D9A9
+   136 0001:0023D9BA   138 0001:0023D9CB   139 0001:0023D9D5   140 0001:0023D9EE
+   141 0001:0023D9FF   142 0001:0023DA10   145 0001:0023DA1E   146 0001:0023DA28
+   147 0001:0023DA34   148 0001:0023DA3E   149 0001:0023DA4B   152 0001:0023DA67
+   153 0001:0023DA71   154 0001:0023DA7B   155 0001:0023DA85   156 0001:0023DA8F
+   157 0001:0023DA99   158 0001:0023DAA3   159 0001:0023DAAD   160 0001:0023DAB7
+   161 0001:0023DAC1   162 0001:0023DACB   164 0001:0023DADD   169 0001:0023DB30
+   170 0001:0023DB54   171 0001:0023DB5E   172 0001:0023DB6E   173 0001:0023DB7B
+   174 0001:0023DB8F   175 0001:0023DB98   176 0001:0023DBAA   177 0001:0023DBBF
+   181 0001:0023DBD4   182 0001:0023DBE1   184 0001:0023DBF6   186 0001:0023DC09
+   187 0001:0023DC13   188 0001:0023DC28   190 0001:0023DC34   191 0001:0023DC48
+   192 0001:0023DC78   190 0001:0023DC99   193 0001:0023DC9C   195 0001:0023DCB4
+   196 0001:0023DCC8   197 0001:0023DCE6   196 0001:0023DD23   198 0001:0023DD26
+   199 0001:0023DD3A   200 0001:0023DD4A   202 0001:0023DD53   203 0001:0023DD66
+   205 0001:0023DD6D   206 0001:0023DD80   207 0001:0023DD91   208 0001:0023DDAE
+   209 0001:0023DDCB   210 0001:0023DDDF   211 0001:0023DDF5   213 0001:0023DE11
+   214 0001:0023DE22   215 0001:0023DE2A   216 0001:0023DE34   217 0001:0023DE3B
+   222 0001:0023DF08   223 0001:0023DF0F   224 0001:0023DF40   225 0001:0023DF53
+   227 0001:0023DF64   229 0001:0023DF8A   230 0001:0023DFAB   231 0001:0023DFCC
+   232 0001:0023DFFF   233 0001:0023E020   235 0001:0023E026   236 0001:0023E06B
+   238 0001:0023E0D4   240 0001:0023E0E0   242 0001:0023E115   243 0001:0023E126
+   245 0001:0023E134   247 0001:0023E140   248 0001:0023E152   249 0001:0023E15E
+   253 0001:0023E438   255 0001:0023E441   256 0001:0023E458   259 0001:0023E460
+   261 0001:0023E463   262 0001:0023E474   263 0001:0023E485   264 0001:0023E496
+   265 0001:0023E4AC   266 0001:0023E4BC   267 0001:0023E4D8   268 0001:0023E4F4
+   269 0001:0023E4FD   272 0001:0023E550   274 0001:0023E553   275 0001:0023E564
+   276 0001:0023E575   277 0001:0023E586   278 0001:0023E59C   279 0001:0023E5AC
+   280 0001:0023E5C8   281 0001:0023E5E4   282 0001:0023E5ED   286 0001:0023E640
+   287 0001:0023E662   290 0001:0023E66F   291 0001:0023E68A   293 0001:0023E6A6
+   294 0001:0023E6B2   298 0001:0023E6CB   299 0001:0023E6D2   302 0001:0023E6DC
+   303 0001:0023E70D   304 0001:0023E734   306 0001:0023E74D   308 0001:0023E757
+   309 0001:0023E77A   311 0001:0023E7B6   312 0001:0023E7EF   316 0001:0023E808
+   317 0001:0023E80F   320 0001:0023E819   321 0001:0023E84E   323 0001:0023E881
+   324 0001:0023E89E   328 0001:0023E8BD   329 0001:0023E8C7   332 0001:0023E8D1
+   333 0001:0023E8D7   335 0001:0023E8EC   337 0001:0023E903   338 0001:0023E916
+   342 0001:0023E935   343 0001:0023E949   348 0001:0023E955   350 0001:0023E96B
+   351 0001:0023E97F   355 0001:0023E98B   356 0001:0023E99F   360 0001:0023E9A9
+   361 0001:0023E9AF   363 0001:0023E9D9   364 0001:0023E9F9   366 0001:0023EA18
+   368 0001:0023EA22   369 0001:0023EA34   371 0001:0023EA46   373 0001:0023EA50
+   374 0001:0023EA59   378 0001:0023EA73   379 0001:0023EA7D   380 0001:0023EA84
+   381 0001:0023EA8D   383 0001:0023EA9E   386 0001:0023EAA8   387 0001:0023EABD
+   388 0001:0023EAD2   390 0001:0023EADE   392 0001:0023EAEF   393 0001:0023EAF5
+   394 0001:0023EB00   396 0001:0023EB13   398 0001:0023EB1D   404 0001:0023EBB0
+   405 0001:0023EBB6   406 0001:0023EBBF   407 0001:0023EBD7   408 0001:0023EBE5
+   417 0001:0023EC24   420 0001:0023EC3C   422 0001:0023EC46   424 0001:0023EC4F
+   425 0001:0023EC6D   426 0001:0023EC7A   431 0001:0023EC86   433 0001:0023EC91
+   434 0001:0023ECB4   436 0001:0023ECBB   441 0001:0023ECFC   443 0001:0023ED16
+   444 0001:0023ED25   446 0001:0023ED33   447 0001:0023ED4C   449 0001:0023ED59
+   450 0001:0023ED72   452 0001:0023ED88   454 0001:0023ED98   459 0001:0023EDC4
+   460 0001:0023EDCB   461 0001:0023EDD0   470 0001:0023EDD4   471 0001:0023EDEF
+   472 0001:0023EDF1   473 0001:0023EDFB   475 0001:0023EE0B   476 0001:0023EE2A
+   478 0001:0023EE2C   479 0001:0023EE7B   480 0001:0023EE84   484 0001:0023EF38
+   485 0001:0023EF3E   486 0001:0023EF58   488 0001:0023EF63   489 0001:0023EF70
+   490 0001:0023EF7B   492 0001:0023EF88   493 0001:0023EF95   497 0001:0023EF98
+   498 0001:0023EFA9   502 0001:0023EFCC   503 0001:0023EFDD   509 0001:0023EFF8
+   512 0001:0023F014   514 0001:0023F025   515 0001:0023F036   516 0001:0023F040
+   517 0001:0023F060   518 0001:0023F080   519 0001:0023F092   520 0001:0023F0AD
+   521 0001:0023F0BC   522 0001:0023F0D3   524 0001:0023F104   526 0001:0023F115
+   527 0001:0023F11C   534 0001:0023F174   535 0001:0023F195   536 0001:0023F1A2
+   537 0001:0023F1AF   538 0001:0023F1BC   539 0001:0023F1CC   540 0001:0023F1DF
+   541 0001:0023F1EC   542 0001:0023F1FC   543 0001:0023F215   547 0001:0023F255
+   548 0001:0023F26F   549 0001:0023F280   551 0001:0023F292   552 0001:0023F2A2
+   554 0001:0023F2B3   555 0001:0023F2C0   556 0001:0023F2CD   557 0001:0023F2DA
+   558 0001:0023F2EA   559 0001:0023F2FD   562 0001:0023F30F   564 0001:0023F324
+   565 0001:0023F331   566 0001:0023F33E   567 0001:0023F34B   568 0001:0023F35B
+   569 0001:0023F36E   572 0001:0023F37D   573 0001:0023F38A   574 0001:0023F397
+   575 0001:0023F3A4   576 0001:0023F3B4   577 0001:0023F3C7   578 0001:0023F3D4
+   581 0001:0023F3E9   584 0001:0023F4EC   586 0001:0023F4EF   587 0001:0023F4F9
+   588 0001:0023F503   589 0001:0023F50A   590 0001:0023F517   591 0001:0023F520
+   594 0001:0023F524   596 0001:0023F52A   597 0001:0023F546   598 0001:0023F55B
+   599 0001:0023F563   601 0001:0023F56D   602 0001:0023F587   603 0001:0023F59C
+   607 0001:0023F5D0   608 0001:0023F5DD   609 0001:0023F5EA   611 0001:0023F5F7
+   612 0001:0023F604   617 0001:0023F608   618 0001:0023F613   623 0001:0023F614
+   624 0001:0023F61F   627 0001:0023F620   629 0001:0023F636   630 0001:0023F651
+   635 0001:0023F674   637 0001:0023F695   638 0001:0023F6A0   642 0001:0023F6A4
+   643 0001:0023F6B1   645 0001:0023F6BA   646 0001:0023F6C0   647 0001:0023F6E7
+   648 0001:0023F6ED   649 0001:0023F712   651 0001:0023F719   652 0001:0023F71F
+   653 0001:0023F744   655 0001:0023F749   659 0001:0023F750   662 0001:0023F75A
+   663 0001:0023F781   664 0001:0023F785   665 0001:0023F78A   669 0001:0023F79C
+   670 0001:0023F7A5   671 0001:0023F7A8
+
+Line numbers for fEditConsult(Consults\fEditConsult.pas) segment .itext
+
+   673 0002:000014D4
+
+Line numbers for fEditProc(Consults\fEditProc.pas) segment .text
+
+   121 0001:0023FE78   122 0001:0023FE99   123 0001:0023FE9D   124 0001:0023FEA5
+   125 0001:0023FEB6   126 0001:0023FEC7   127 0001:0023FED8   128 0001:0023FEF5
+   129 0001:0023FEFF   132 0001:0023FF0F   133 0001:0023FF20   134 0001:0023FF31
+   135 0001:0023FF42   137 0001:0023FF53   138 0001:0023FF5D   139 0001:0023FF76
+   140 0001:0023FF87   141 0001:0023FF95   144 0001:0023FF9F   145 0001:0023FFAB
+   146 0001:0023FFB5   147 0001:0023FFC2   150 0001:0023FFDE   151 0001:0023FFE8
+   152 0001:0023FFF2   153 0001:0023FFFC   154 0001:00240006   155 0001:00240010
+   156 0001:0024001A   157 0001:00240024   158 0001:0024002E   159 0001:00240038
+   161 0001:0024004A   166 0001:0024009C   167 0001:002400BA   168 0001:002400C1
+   169 0001:002400D2   170 0001:002400E2   171 0001:002400ED   172 0001:002400FE
+   173 0001:00240111   175 0001:0024011F   177 0001:00240173   179 0001:00240180
+   180 0001:00240189   181 0001:0024019A   182 0001:002401B0   184 0001:002401C9
+   185 0001:002401D7   186 0001:002401EA   187 0001:002401F3   188 0001:00240205
+   189 0001:00240217   193 0001:00240229   194 0001:00240236   196 0001:00240248
+   198 0001:00240258   199 0001:00240269   200 0001:0024028A   199 0001:002402C9
+   201 0001:002402CC   202 0001:002402DD   203 0001:002402ED   205 0001:002402F6
+   206 0001:00240309   208 0001:00240310   209 0001:00240320   210 0001:0024033A
+   211 0001:00240354   212 0001:00240362   213 0001:00240369   214 0001:00240370
+   215 0001:00240377   220 0001:00240430   221 0001:00240437   222 0001:00240468
+   223 0001:0024047B   225 0001:0024048C   226 0001:002404B0   227 0001:002404D1
+   228 0001:002404F2   229 0001:00240513   230 0001:00240534   231 0001:00240567
+   233 0001:0024059C   234 0001:002405AD   236 0001:002405BB   238 0001:002405C7
+   239 0001:002405D9   240 0001:002405E5   244 0001:00240848   246 0001:00240851
+   247 0001:00240868   251 0001:00240870   253 0001:00240879   254 0001:00240890
+   257 0001:00240898   259 0001:0024089B   260 0001:002408AC   261 0001:002408C2
+   262 0001:002408D2   263 0001:002408EE   264 0001:0024090A   265 0001:00240913
+   268 0001:00240968   270 0001:0024096B   271 0001:0024097C   272 0001:00240992
+   273 0001:002409A2   274 0001:002409BE   275 0001:002409DA   276 0001:002409E3
+   279 0001:00240A38   280 0001:00240A5B   283 0001:00240A68   284 0001:00240A8B
+   286 0001:00240AC5   287 0001:00240AFC   291 0001:00240B15   292 0001:00240B1F
+   295 0001:00240B29   296 0001:00240B44   298 0001:00240B60   299 0001:00240B6C
+   303 0001:00240B85   304 0001:00240B8C   307 0001:00240B96   308 0001:00240BC7
+   309 0001:00240BEE   311 0001:00240C07   313 0001:00240C11   314 0001:00240C34
+   316 0001:00240C70   317 0001:00240CA9   321 0001:00240CC2   322 0001:00240CC9
+   326 0001:00240CD3   327 0001:00240D0E   329 0001:00240D41   330 0001:00240D5E
+   334 0001:00240D7D   335 0001:00240D87   338 0001:00240D91   339 0001:00240D97
+   341 0001:00240DAC   343 0001:00240DC3   344 0001:00240DD6   348 0001:00240DF5
+   349 0001:00240E09   354 0001:00240E15   356 0001:00240E2B   357 0001:00240E3F
+   361 0001:00240E4B   362 0001:00240E5F   366 0001:00240E69   367 0001:00240E6F
+   369 0001:00240E99   370 0001:00240EB9   372 0001:00240ED8   374 0001:00240EE2
+   375 0001:00240EF4   377 0001:00240F06   379 0001:00240F10   380 0001:00240F19
+   384 0001:00240F33   385 0001:00240F3D   386 0001:00240F44   387 0001:00240F4D
+   389 0001:00240F5E   392 0001:00240F68   393 0001:00240F7D   394 0001:00240F92
+   396 0001:00240F9E   398 0001:00240FAF   399 0001:00240FB5   400 0001:00240FC0
+   402 0001:00240FD3   404 0001:00240FDD   410 0001:00241070   411 0001:00241076
+   412 0001:0024107F   413 0001:00241097   414 0001:002410A5   423 0001:002410E4
+   424 0001:002410FF   425 0001:00241101   426 0001:0024110B   428 0001:0024111B
+   429 0001:0024113A   431 0001:0024113C   432 0001:0024118B   433 0001:00241194
+   436 0001:00241248   438 0001:00241269   440 0001:0024126F   441 0001:0024127D
+   442 0001:002412C0   444 0001:002412C6   445 0001:002412CD   446 0001:002412EE
+   448 0001:002412FD   449 0001:00241306   450 0001:00241312   455 0001:0024132B
+   456 0001:0024133E   457 0001:0024134C   458 0001:00241353   462 0001:00241355
+   463 0001:00241372   464 0001:0024137B   469 0001:00241408   471 0001:00241422
+   472 0001:00241431   474 0001:0024143F   475 0001:00241458   477 0001:00241465
+   478 0001:0024147E   480 0001:00241494   482 0001:002414A4   485 0001:002414D0
+   486 0001:002414E6   488 0001:002414F1   489 0001:00241514   491 0001:0024151B
+   496 0001:00241548   497 0001:0024154F   498 0001:00241554   501 0001:00241558
+   502 0001:0024155E   503 0001:00241578   505 0001:00241583   506 0001:00241590
+   507 0001:0024159B   509 0001:002415A8   510 0001:002415B5   514 0001:002415B8
+   515 0001:002415C9   519 0001:002415EC   520 0001:002415FD   528 0001:00241618
+   530 0001:00241634   531 0001:00241645   532 0001:0024164F   533 0001:0024166F
+   534 0001:0024168F   535 0001:002416A1   536 0001:002416BC   537 0001:002416CB
+   538 0001:002416E2   539 0001:00241713   540 0001:0024171A   547 0001:00241774
+   548 0001:0024178D   549 0001:0024179A   550 0001:002417A7   551 0001:002417B4
+   552 0001:002417C4   553 0001:002417D7   554 0001:002417E4   555 0001:002417F4
+   557 0001:0024180D   561 0001:0024184A   562 0001:00241864   563 0001:00241875
+   565 0001:00241887   566 0001:00241897   568 0001:002418A8   569 0001:002418B5
+   570 0001:002418C2   571 0001:002418CF   572 0001:002418DF   573 0001:002418F2
+   576 0001:00241904   578 0001:00241919   579 0001:00241926   580 0001:00241933
+   581 0001:00241940   582 0001:00241950   583 0001:00241963   586 0001:00241972
+   587 0001:0024197F   588 0001:0024198C   589 0001:00241999   590 0001:002419A9
+   591 0001:002419BC   592 0001:002419C9   595 0001:002419DE   598 0001:00241AC4
+   600 0001:00241AC7   601 0001:00241AD1   602 0001:00241ADB   603 0001:00241AE2
+   604 0001:00241AEF   605 0001:00241AF8   608 0001:00241AFC   610 0001:00241B02
+   611 0001:00241B1E   612 0001:00241B33   613 0001:00241B3B   615 0001:00241B45
+   616 0001:00241B5F   617 0001:00241B74   621 0001:00241BA8   622 0001:00241BB5
+   623 0001:00241BC2   625 0001:00241BCF   626 0001:00241BDC   631 0001:00241BE0
+   632 0001:00241BEB   637 0001:00241BEC   638 0001:00241BF7   641 0001:00241BF8
+   643 0001:00241C0E   644 0001:00241C29   648 0001:00241C4C   650 0001:00241C6D
+   651 0001:00241C78   656 0001:00241C7C   657 0001:00241C89   659 0001:00241C92
+   660 0001:00241C98   661 0001:00241CBF   662 0001:00241CC5   664 0001:00241CEA
+   665 0001:00241CF0   666 0001:00241D15   668 0001:00241D1A   672 0001:00241D24
+   675 0001:00241D2E   676 0001:00241D55   677 0001:00241D59   678 0001:00241D5E
+   682 0001:00241D70   683 0001:00241D79   684 0001:00241D7C
+
+Line numbers for fEditProc(Consults\fEditProc.pas) segment .itext
+
+   686 0002:000014DC
+
+Line numbers for fCsltNote(Consults\fCsltNote.pas) segment .text
+
+    41 0001:00242008    42 0001:00242032    43 0001:00242049    46 0001:00242057
+    47 0001:00242064    48 0001:0024206F    49 0001:0024207A    50 0001:00242087
+    51 0001:002420A3    52 0001:002420BF    53 0001:002420C9    54 0001:002420DA
+    57 0001:002420EC    59 0001:002420F6    60 0001:00242109    61 0001:0024212B
+    62 0001:00242141    65 0001:002421FC    61 0001:00242262    66 0001:0024226B
+    67 0001:0024227B    70 0001:002422A1    72 0001:002422B2    73 0001:002422C5
+    74 0001:002422E7    75 0001:002422FD    79 0001:0024243D    74 0001:002424C1
+    80 0001:002424CA    81 0001:002424FD    82 0001:00242515    84 0001:00242525
+    89 0001:0024253C    90 0001:0024254F    91 0001:00242577    92 0001:0024258D
+    95 0001:002426B0    91 0001:00242734    96 0001:0024273D    97 0001:00242770
+    98 0001:00242788   100 0001:00242795   118 0001:002427A7   121 0001:002427CA
+   123 0001:002427DA   126 0001:0024294C   127 0001:0024294F   128 0001:0024295F
+   129 0001:00242966   132 0001:00242974   133 0001:0024298D   135 0001:00242993
+   137 0001:002429A4   138 0001:002429B7   139 0001:002429BE   140 0001:002429CE
+   142 0001:002429D0   143 0001:002429D7   144 0001:00242A0F   146 0001:00242A16
+   148 0001:00242AC6
+
+Line numbers for fODProc(Consults\fODProc.pas) segment .text
+
+   112 0001:00243060   113 0001:00243066   114 0001:0024307A   115 0001:00243081
+   116 0001:0024308A   117 0001:00243098   118 0001:0024309F   119 0001:002430B0
+   120 0001:002430BC   121 0001:002430C6   122 0001:002430D6   123 0001:002430E0
+   124 0001:002430F2   125 0001:002430FC   126 0001:00243103   127 0001:00243110
+   128 0001:0024311D   129 0001:0024312A   130 0001:00243137   131 0001:00243141
+   134 0001:002431D0   135 0001:002431D4   136 0001:002431DB   137 0001:002431E2
+   138 0001:002431ED   140 0001:002431F3   141 0001:00243205   142 0001:00243210
+   144 0001:0024321B   145 0001:0024322B   146 0001:0024323C   147 0001:00243252
+   148 0001:00243262   149 0001:00243274   153 0001:00243288   154 0001:00243298
+   155 0001:002432A9   156 0001:002432BF   157 0001:002432CF   158 0001:002432E1
+   161 0001:002432F3   162 0001:00243301   163 0001:0024330F   164 0001:0024331D
+   165 0001:0024332A   168 0001:0024333D   169 0001:0024334A   170 0001:00243351
+   172 0001:0024335C   173 0001:00243363   175 0001:00243366   176 0001:0024336D
+   177 0001:00243374   182 0001:0024342C   183 0001:00243452   184 0001:0024345E
+   185 0001:00243465   187 0001:0024347E   188 0001:00243492   189 0001:002434A5
+   190 0001:002434C6   191 0001:002434CD   192 0001:002434E1   193 0001:002434F2
+   194 0001:00243504   196 0001:00243516   197 0001:00243526   198 0001:0024353A
+   199 0001:0024354E   200 0001:00243562   201 0001:0024356F   203 0001:00243582
+   204 0001:00243596   205 0001:0024359C   206 0001:002435C2   207 0001:002435D6
+   208 0001:002435E5   209 0001:002435F9   210 0001:00243607   212 0001:00243615
+   213 0001:00243622   217 0001:00243637   218 0001:00243644   220 0001:00243657
+   222 0001:0024366E   223 0001:00243675   225 0001:0024367A   226 0001:00243681
+   227 0001:0024368E   228 0001:00243695   229 0001:002436A9   231 0001:002436B2
+   232 0001:002436B9   233 0001:002436C0   235 0001:002436C2   236 0001:002436C9
+   237 0001:002436D2   239 0001:002436DB   240 0001:002436E2   241 0001:002436E9
+   243 0001:002436EB   244 0001:002436F2   245 0001:0024370F   247 0001:00243718
+   252 0001:002437C8   253 0001:002437CF   254 0001:00243800   255 0001:00243813
+   257 0001:00243824   258 0001:00243847   259 0001:00243851   260 0001:00243872
+   261 0001:00243893   262 0001:002438C6   263 0001:002438E0   264 0001:002438EC
+   265 0001:0024390D   267 0001:00243942   268 0001:00243953   270 0001:00243961
+   272 0001:0024396D   276 0001:00243B6C   278 0001:00243B75   279 0001:00243B8C
+   283 0001:00243B94   285 0001:00243B9D   286 0001:00243BB4   289 0001:00243BBC
+   291 0001:00243BC0   293 0001:00243BC6   294 0001:00243BD8   295 0001:00243BEA
+   296 0001:00243BFB   297 0001:00243C11   299 0001:00243C21   300 0001:00243C2A
+   303 0001:00243C80   305 0001:00243C84   307 0001:00243C8A   308 0001:00243C9C
+   309 0001:00243CAE   310 0001:00243CBF   311 0001:00243CD5   313 0001:00243CE5
+   314 0001:00243CEE   320 0001:00243D44   322 0001:00243D67   323 0001:00243D8D
+   325 0001:00243D93   327 0001:00243DB0   328 0001:00243DC9   330 0001:00243DCD
+   331 0001:00243DFE   334 0001:00243E47   335 0001:00243E51   337 0001:00243E85
+   341 0001:00243E9E   342 0001:00243EF7   343 0001:00243F10   344 0001:00243F49
+   345 0001:00243FB4   346 0001:0024401D   347 0001:002440A0   348 0001:00244109
+   349 0001:0024414A   350 0001:00244163   351 0001:002441A4   353 0001:002441BD
+   354 0001:002441DF   357 0001:00244390   359 0001:002443B4   361 0001:002443BA
+   362 0001:002443C8   363 0001:0024440B   364 0001:00244412   365 0001:00244421
+   366 0001:00244428   368 0001:0024444E   369 0001:00244478   370 0001:00244490
+   372 0001:002444A8   374 0001:002444AE   375 0001:002444B5   376 0001:002444D6
+   377 0001:002444E4   378 0001:002444F3   380 0001:00244501   381 0001:0024450A
+   385 0001:00244548   386 0001:0024454C   388 0001:0024455F   389 0001:0024456D
+   390 0001:00244577   394 0001:0024457C   396 0001:0024458C   397 0001:002445A0
+   398 0001:002445A7   400 0001:002445AD   401 0001:002445CE   402 0001:002445DC
+   403 0001:002445E8   404 0001:002445F6   406 0001:002445FF   408 0001:0024460A
+   409 0001:00244611   411 0001:00244616   412 0001:0024462A   413 0001:00244682
+   414 0001:00244692   415 0001:002446A6   416 0001:002446BA   417 0001:002446CE
+   418 0001:002446D5   419 0001:002446E9   421 0001:002446F8   422 0001:002446FF
+   423 0001:00244706   425 0001:0024470B   426 0001:00244717   427 0001:00244724
+   428 0001:00244738   429 0001:00244745   430 0001:00244758   432 0001:00244766
+   433 0001:00244773   437 0001:00244788   438 0001:00244795   440 0001:002447A8
+   444 0001:002447B4   446 0001:002447D5   448 0001:002447E3   449 0001:002447F0
+   453 0001:00244805   454 0001:00244812   456 0001:00244825   458 0001:00244830
+   459 0001:00244837   461 0001:0024483C   462 0001:00244895   465 0001:0024489E
+   466 0001:002448A5   467 0001:002448C8   468 0001:002448D1   473 0001:00244A34
+   475 0001:00244A4E   476 0001:00244A5D   477 0001:00244A6B   478 0001:00244A84
+   479 0001:00244A91   480 0001:00244AAA   482 0001:00244AC0   484 0001:00244AD0
+   487 0001:00244AFC   488 0001:00244B16   490 0001:00244B33   491 0001:00244B40
+   492 0001:00244B53   493 0001:00244B60   497 0001:00244B72   498 0001:00244B7F
+   499 0001:00244B92   500 0001:00244B9F   503 0001:00244BAF   505 0001:00244BCC
+   506 0001:00244BD9   507 0001:00244BE6   508 0001:00244BF9   509 0001:00244C06
+   510 0001:00244C13   512 0001:00244C25   514 0001:00244C2C   515 0001:00244C48
+   521 0001:00244CAC   523 0001:00244CC8   524 0001:00244CD9   525 0001:00244CE3
+   526 0001:00244D03   527 0001:00244D23   528 0001:00244D35   529 0001:00244D50
+   530 0001:00244D5F   531 0001:00244D76   532 0001:00244DA7   533 0001:00244DAE
+   540 0001:00244E08   541 0001:00244E21   542 0001:00244E2E   543 0001:00244E3B
+   544 0001:00244E48   545 0001:00244E58   546 0001:00244E6B   547 0001:00244E78
+   548 0001:00244E88   550 0001:00244EA1   554 0001:00244EDE   555 0001:00244EF8
+   556 0001:00244F09   558 0001:00244F1B   559 0001:00244F2B   561 0001:00244F3C
+   562 0001:00244F49   563 0001:00244F56   564 0001:00244F63   565 0001:00244F73
+   566 0001:00244F86   569 0001:00244F98   571 0001:00244FAD   572 0001:00244FBA
+   573 0001:00244FC7   574 0001:00244FD4   575 0001:00244FE4   576 0001:00244FF7
+   579 0001:00245006   580 0001:00245013   581 0001:00245020   582 0001:0024502D
+   583 0001:0024503D   584 0001:00245050   585 0001:0024505D   588 0001:00245072
+   594 0001:00245158   595 0001:0024515F   598 0001:00245160   600 0001:00245163
+   601 0001:0024516D   602 0001:00245177   603 0001:00245184   604 0001:0024518D
+   607 0001:00245190   609 0001:002451A6   610 0001:002451B7   611 0001:002451D2
+   612 0001:002451DB   615 0001:00245208   617 0001:0024520E   618 0001:0024522A
+   619 0001:0024523F   620 0001:00245247   622 0001:00245251   623 0001:0024526B
+   624 0001:00245280   628 0001:002452B4   629 0001:002452C1   630 0001:002452CE
+   632 0001:002452DB   633 0001:002452E8   638 0001:002452EC   639 0001:002452F7
+   644 0001:002452F8   645 0001:00245303   648 0001:00245304   650 0001:0024531A
+   651 0001:00245335   656 0001:00245358   657 0001:0024536D   658 0001:00245374
+   665 0001:00245378   666 0001:0024537B   667 0001:00245391   668 0001:002453AA
+   669 0001:002453BD   670 0001:002453D3   673 0001:002453F4   674 0001:002453F7
+   675 0001:0024540D   676 0001:00245426   677 0001:00245439   678 0001:0024544F
+   680 0001:00245480   681 0001:002454A4   682 0001:002454FE   683 0001:00245552
+   684 0001:00245560   685 0001:002455A4   686 0001:002455B8   687 0001:002455C1
+   688 0001:002455C9   690 0001:002455D2   691 0001:002455DB   693 0001:002455E4
+   695 0001:002455EB   702 0001:00245638   703 0001:00245656   704 0001:0024565A
+   705 0001:00245661   706 0001:00245670   707 0001:0024567E   708 0001:00245684
+   710 0001:002456A1   711 0001:002456DB   713 0001:002456E7   715 0001:00245719
+   716 0001:00245727   717 0001:0024572B   720 0001:00245734   724 0001:00245745
+   726 0001:00245755   735 0001:002457A8   736 0001:002457CF   737 0001:002457D1
+   738 0001:002457D9   739 0001:002457E8   740 0001:002457F6   741 0001:00245837
+   742 0001:00245842   743 0001:0024584D   744 0001:0024585A   745 0001:00245865
+   746 0001:00245872   748 0001:00245900   749 0001:0024590B   750 0001:00245929
+   752 0001:00245932   753 0001:0024593C   754 0001:00245943   757 0001:0024594A
+   759 0001:00245964   761 0001:00245974   765 0001:002459D0   767 0001:002459DD
+   769 0001:002459E6   770 0001:002459EC   771 0001:00245A13   772 0001:00245A19
+   773 0001:00245A3E   775 0001:00245A45   776 0001:00245A4B   777 0001:00245A70
+   779 0001:00245A75   784 0001:00245A7C   787 0001:00245A98   788 0001:00245AAB
+   789 0001:00245ABC   790 0001:00245ACF   792 0001:00245AD9   793 0001:00245AE9
+   796 0001:00245AF8   797 0001:00245B09   799 0001:00245B1E   800 0001:00245B31
+   801 0001:00245B3B   804 0001:00245B45   805 0001:00245B56   807 0001:00245B99
+   810 0001:00245D30   811 0001:00245D36   812 0001:00245D3F   813 0001:00245D48
+   816 0001:00245D4C   817 0001:00245D4F   818 0001:00245D67   819 0001:00245D7F
+   823 0001:00245D84   827 0001:00245D8E   828 0001:00245DB5   829 0001:00245DB9
+   830 0001:00245DBE   835 0001:00245DD0   836 0001:00245DD9   837 0001:00245DDC
+   840 0001:00245DE0   841 0001:00245DE3   842 0001:00245DEA   844 0001:00245E04
+   848 0001:00245E08   849 0001:00245E0D   850 0001:00245E21
+
+Line numbers for fODProc(Consults\fODProc.pas) segment .itext
+
+   852 0002:000014E4
+
+Line numbers for fConsultAct(Consults\fConsultAct.pas) segment .text
+
+   111 0001:002462C8   112 0001:002462EF   113 0001:002462F3   114 0001:0024630C
+   115 0001:0024631A   119 0001:00246324   120 0001:00246357   121 0001:0024637C
+   122 0001:00246388   123 0001:00246393   124 0001:0024639E   125 0001:002463C7
+   126 0001:002463D5   127 0001:002463FF   128 0001:00246412   129 0001:0024641C
+   131 0001:00246423   132 0001:0024646A   133 0001:00246499   134 0001:002464A5
+   135 0001:002464B1   136 0001:002464BD   137 0001:002464C9   138 0001:002464D5
+   141 0001:002464DF   142 0001:002464EC   145 0001:00246508   147 0001:0024651A
+   155 0001:0024654C   156 0001:00246575   157 0001:00246582   158 0001:002465A2
+   159 0001:002465AF   160 0001:002465BD   162 0001:002465C7   163 0001:002465E1
+   165 0001:002465F3   166 0001:0024664F   167 0001:00246660   170 0001:0024666F
+   171 0001:0024668C   173 0001:002466A0   174 0001:002466B3   175 0001:002466B5
+   177 0001:002466BA   179 0001:002466F1   180 0001:00246704   181 0001:00246706
+   185 0001:0024670B   186 0001:0024671C   187 0001:00246735   189 0001:002467AA
+   186 0001:002467CE   190 0001:002467D7   192 0001:002467E1   193 0001:002467F9
+   194 0001:002467FF   196 0001:00246815   197 0001:00246841   198 0001:00246855
+   199 0001:0024686B   200 0001:00246881   194 0001:00246882   202 0001:00246887
+   204 0001:00246894   205 0001:002468B5   206 0001:002468C6   207 0001:002468D3
+   209 0001:002468D9   210 0001:002468F6   211 0001:00246901   212 0001:00246913
+   214 0001:0024691D   215 0001:00246933   214 0001:0024694F   216 0001:00246954
+   219 0001:0024695D   222 0001:0024696E   223 0001:0024697E   224 0001:0024699A
+   225 0001:002469B0   226 0001:002469C0   227 0001:002469D8   228 0001:002469E5
+   229 0001:002469F2   230 0001:002469F4   233 0001:00246B30   234 0001:00246B33
+   236 0001:00246B40   237 0001:00246B4D   238 0001:00246B6D   239 0001:00246B7A
+   240 0001:00246B87   243 0001:00246B8E   244 0001:00246B9B   245 0001:00246BA8
+   246 0001:00246BB5   247 0001:00246BC3   248 0001:00246BD0   251 0001:00246BD4
+   252 0001:00246BEA   254 0001:00246BF7   255 0001:00246C04   256 0001:00246C24
+   257 0001:00246C31   258 0001:00246C3E   261 0001:00246C45   262 0001:00246C52
+   263 0001:00246C5F   264 0001:00246C6F   265 0001:00246C8B   266 0001:00246CA1
+   267 0001:00246CB1   268 0001:00246CC9   269 0001:00246CD6   270 0001:00246CE4
+   271 0001:00246CF1   274 0001:00246D30   275 0001:00246D46   276 0001:00246D4D
+   278 0001:00246D5A   279 0001:00246D67   285 0001:00246D74   286 0001:00246D84
+   287 0001:00246DA0   288 0001:00246DB6   289 0001:00246DC6   291 0001:00246DDE
+   292 0001:00246DEB   295 0001:00246DF9   296 0001:00246E06   299 0001:00246E44
+   300 0001:00246E47   301 0001:00246E4E   303 0001:00246E5B   304 0001:00246E68
+   305 0001:00246E75   308 0001:00246E7C   309 0001:00246E89   310 0001:00246E96
+   311 0001:00246EA3   312 0001:00246EB1   313 0001:00246EBE   318 0001:00246EC0
+   319 0001:00246EDD   320 0001:00246EEA   322 0001:00246EF0   323 0001:00246F3A
+   325 0001:00246F43   326 0001:00246F4F   329 0001:00246F72   331 0001:00246FA7
+   334 0001:00247000   335 0001:00247003   337 0001:00247010   338 0001:0024701D
+   339 0001:0024702A   340 0001:00247037   341 0001:00247044   342 0001:00247064
+   343 0001:0024707A   344 0001:0024708A   345 0001:002470A2   346 0001:002470AF
+   349 0001:002470B4   350 0001:002470CA   352 0001:002470D7   353 0001:002470E4
+   354 0001:00247104   355 0001:00247114   356 0001:00247130   357 0001:00247146
+   358 0001:00247156   359 0001:0024716E   360 0001:0024717B   361 0001:00247188
+   362 0001:00247195   363 0001:002471A3   364 0001:002471B0   370 0001:002471E8
+   372 0001:002471F1   373 0001:0024720F   377 0001:00247218   379 0001:00247221
+   380 0001:0024723F   384 0001:00247248   385 0001:0024724F   386 0001:00247254
+   391 0001:00247258   392 0001:0024727A   393 0001:00247289   394 0001:00247297
+   398 0001:002472C7   399 0001:002472DA   402 0001:002472E4   405 0001:00247309
+   406 0001:0024731C   409 0001:00247326   415 0001:0024735B   416 0001:0024736E
+   419 0001:00247378   421 0001:00247388   424 0001:002473DB   425 0001:002473EE
+   427 0001:002473F8   429 0001:0024742A   430 0001:0024743D   432 0001:00247447
+   434 0001:0024745F   435 0001:00247472   437 0001:0024747C   440 0001:00247506
+   441 0001:00247519   445 0001:00247523   447 0001:0024753E   448 0001:00247561
+   450 0001:00247576   451 0001:00247589   452 0001:0024759A   454 0001:002475A4
+   456 0001:002475B8   457 0001:002475CB   458 0001:002475DC   462 0001:002475E6
+   464 0001:002475F5   465 0001:00247612   466 0001:0024762F   467 0001:00247646
+   468 0001:00247659   469 0001:00247691   470 0001:002476A4   471 0001:002476BC
+   474 0001:002476DA   475 0001:002476E7   479 0001:002476FC   480 0001:00247707
+   483 0001:00247714   485 0001:00247759   487 0001:00247795   489 0001:002477E5
+   491 0001:00247821   493 0001:0024785D   495 0001:002478BC   497 0001:002478FD
+   499 0001:00247945   501 0001:0024799A   503 0001:002479AA   505 0001:002479D6
+   506 0001:00247A27   509 0001:00247A33   512 0001:00247A3F   514 0001:00247A56
+   516 0001:00247A66   517 0001:00247A6E   520 0001:00247D64   521 0001:00247D67
+   522 0001:00247D91   526 0001:00247D94   527 0001:00247DAD   528 0001:00247DBF
+   532 0001:00247DED   533 0001:00247E20   534 0001:00247E2D   540 0001:00247E58
+   545 0001:00247E5C   546 0001:00247E7F   548 0001:00247E8C   549 0001:00247E93
+   551 0001:00247EAF   553 0001:00247EF7   555 0001:00247F0D   557 0001:00247F0F
+   549 0001:00247F10   558 0001:00247F15   559 0001:00247F1C   562 0001:00247F4C
+   563 0001:00247F5D   601 0001:00247F9C   602 0001:00247FB2   605 0001:00247FC6
+   606 0001:00247FCF   608 0001:00247FDE   612 0001:00247FED   614 0001:00247FF6
+   616 0001:00248005   620 0001:00248014   621 0001:0024801D   623 0001:0024802C
+   626 0001:00248039   627 0001:00248047   634 0001:00248184   637 0001:002481A7
+
+Line numbers for fConsultAct(Consults\fConsultAct.pas) segment .itext
+
+   630 0002:000014EC   631 0002:00001506   633 0002:00001517
+
+Line numbers for fConsultsView(Consults\fConsultsView.pas) segment .text
+
+    72 0001:00248568    73 0001:002485B2    74 0001:002485C9    77 0001:002485D7
+    78 0001:002485E4    79 0001:002485EF    80 0001:002485FA    81 0001:00248607
+    82 0001:00248623    83 0001:0024863F    84 0001:00248649    86 0001:0024865C
+    87 0001:0024866A    88 0001:00248678    89 0001:0024868A    91 0001:002486CE
+    88 0001:002486F2    92 0001:002486F7    93 0001:0024870E    94 0001:00248717
+    96 0001:0024872D    97 0001:0024876D    98 0001:00248783    99 0001:00248799
+    94 0001:0024879A   100 0001:0024879F   101 0001:002487AA   103 0001:002487B8
+   104 0001:002487C9   106 0001:002487D4   107 0001:002487EE   108 0001:002487F9
+   110 0001:00248808   113 0001:0024880F   114 0001:0024882B   115 0001:0024883B
+   111 0001:0024883C   118 0001:00248852   119 0001:0024885D   120 0001:00248868
+   121 0001:0024886E   122 0001:0024887F   123 0001:00248885   124 0001:00248896
+   125 0001:002488C0   126 0001:002488D1   130 0001:002488DC   131 0001:002488EB
+   132 0001:002488FF   133 0001:00248913   134 0001:00248923   135 0001:00248937
+   136 0001:0024894B   137 0001:0024895B   138 0001:0024896F   139 0001:00248983
+   140 0001:00248997   145 0001:002489AD   147 0001:002489BD   153 0001:00248A2C
+   154 0001:00248A4F   155 0001:00248A63   157 0001:00248A7F   159 0001:00248A87
+   160 0001:00248A9B   162 0001:00248AB7   164 0001:00248ABF   166 0001:00248ACB
+   167 0001:00248AE1   168 0001:00248AFD   172 0001:00248B1B   173 0001:00248B2E
+   176 0001:00248B33   178 0001:00248B42   179 0001:00248B65   180 0001:00248B88
+   183 0001:00248BAF   185 0001:00248BBA   187 0001:00248BD0   189 0001:00248C07
+   190 0001:00248C3B   192 0001:00248C80   193 0001:00248CB3   194 0001:00248CDE
+   187 0001:00248CDF   195 0001:00248CE8   196 0001:00248D11   199 0001:00248D3C
+   201 0001:00248D47   202 0001:00248D6E   204 0001:00248D92   206 0001:00248D9D
+   207 0001:00248DA4   208 0001:00248DAB   212 0001:00248E6C   213 0001:00248E71
+   217 0001:00248E74   218 0001:00248E8B   219 0001:00248E94   220 0001:00248EAC
+   222 0001:00248EDF   227 0001:00248F04   228 0001:00248F27   229 0001:00248F2E
+   231 0001:00248F4C   233 0001:00248F97   235 0001:00248FAD   237 0001:00248FAF
+   229 0001:00248FB0   238 0001:00248FB3   239 0001:00248FBA   240 0001:00248FD5
+   245 0001:0024900C   246 0001:0024900F   248 0001:00249015   249 0001:0024902B
+   248 0001:00249037   250 0001:0024903A   252 0001:00249047   258 0001:0024904C
+   260 0001:0024906F
+
+Line numbers for fConsultsView(Consults\fConsultsView.pas) segment .itext
+
+   254 0002:00001530   255 0002:0000154A   257 0002:0000155B
+
+Line numbers for fConsultBSt(Consults\fConsultBSt.pas) segment .text
+
+    52 0001:00249310    53 0001:00249352    54 0001:00249369    57 0001:00249377
+    58 0001:00249384    59 0001:0024938F    60 0001:0024939A    61 0001:002493A7
+    62 0001:002493C3    63 0001:002493DF    64 0001:002493E9    65 0001:002493FC
+    66 0001:00249416    67 0001:00249421    69 0001:00249433    72 0001:0024943A
+    73 0001:00249457    74 0001:00249468    70 0001:00249469    77 0001:0024947F
+    80 0001:0024948A    81 0001:00249496    82 0001:002494A7    83 0001:002494B8
+    84 0001:002494C5    88 0001:002494D8    90 0001:002494E8    94 0001:0024952C
+    95 0001:00249531   100 0001:00249534   101 0001:00249557   103 0001:00249569
+   104 0001:0024957C   106 0001:00249581   107 0001:00249588   109 0001:002495BF
+   110 0001:002495F3   112 0001:00249638   113 0001:0024966B   114 0001:00249696
+   107 0001:00249697   115 0001:002496A0   116 0001:002496C9   117 0001:002496F2
+   118 0001:00249708   119 0001:0024970F   121 0001:002497CA
+
+Line numbers for fConsultBD(Consults\fConsultBD.pas) segment .text
+
+    56 0001:00249A78    57 0001:00249ABA    58 0001:00249AD1    61 0001:00249ADF
+    62 0001:00249AEC    63 0001:00249AF7    64 0001:00249B02    65 0001:00249B0F
+    66 0001:00249B2B    67 0001:00249B47    68 0001:00249B51    69 0001:00249B64
+    70 0001:00249B6F    71 0001:00249B7A    72 0001:00249B80    73 0001:00249B91
+    74 0001:00249B97    75 0001:00249BA8    76 0001:00249BD2    79 0001:00249BDD
+    80 0001:00249BE9    81 0001:00249BFA    82 0001:00249C0B    83 0001:00249C18
+    87 0001:00249C2B    89 0001:00249C3B    94 0001:00249C90    95 0001:00249CB5
+    96 0001:00249CCF    97 0001:00249CE9    99 0001:00249D13   100 0001:00249D1A
+   101 0001:00249D36   102 0001:00249D52   103 0001:00249D68   106 0001:00249D71
+   109 0001:00249D84   113 0001:00249E0C   114 0001:00249E11   119 0001:00249E14
+   120 0001:00249E20   125 0001:00249E24   126 0001:00249E30   128 0001:00249E5F
+
+Line numbers for fConsultBS(Consults\fConsultBS.pas) segment .text
+
+    62 0001:0024A100    63 0001:0024A14E    64 0001:0024A165    67 0001:0024A173
+    68 0001:0024A180    69 0001:0024A18B    70 0001:0024A196    71 0001:0024A1A3
+    72 0001:0024A1BF    73 0001:0024A1DB    75 0001:0024A1E5    76 0001:0024A1F3
+    77 0001:0024A201    78 0001:0024A213    80 0001:0024A257    77 0001:0024A27B
+    81 0001:0024A280    82 0001:0024A297    83 0001:0024A2A0    85 0001:0024A2B6
+    86 0001:0024A2F6    87 0001:0024A30C    88 0001:0024A322    83 0001:0024A323
+    89 0001:0024A328    90 0001:0024A335    91 0001:0024A34B    92 0001:0024A356
+    94 0001:0024A364    95 0001:0024A375    97 0001:0024A380   100 0001:0024A38B
+   101 0001:0024A39A   102 0001:0024A3AE   103 0001:0024A3C2   104 0001:0024A3D2
+   105 0001:0024A3E2   109 0001:0024A3F8   111 0001:0024A408   115 0001:0024A458
+   116 0001:0024A45D   119 0001:0024A460   120 0001:0024A478   122 0001:0024A498
+   123 0001:0024A4AB   125 0001:0024A4B0   126 0001:0024A4B7   127 0001:0024A4DA
+   128 0001:0024A4FD   129 0001:0024A513   130 0001:0024A538   131 0001:0024A53F
+   135 0001:0024A5B4   136 0001:0024A5CB   137 0001:0024A5D4   138 0001:0024A5EC
+   140 0001:0024A61F   145 0001:0024A644   146 0001:0024A667   147 0001:0024A66E
+   149 0001:0024A68C   151 0001:0024A6D7   153 0001:0024A6ED   155 0001:0024A6EF
+   147 0001:0024A6F0   156 0001:0024A6F3   157 0001:0024A6FA   158 0001:0024A715
+   164 0001:0024A74C   166 0001:0024A76F
+
+Line numbers for fConsultBS(Consults\fConsultBS.pas) segment .itext
+
+   160 0002:00001574   161 0002:0000158E   163 0002:0000159F
+
+Line numbers for fConsults(Consults\fConsults.pas) segment .text
+
+   551 0001:0024C2A8   552 0001:0024C2AF   553 0001:0024C2BA   554 0001:0024C2C6
+   555 0001:0024C2D0   557 0001:0024C2E4   559 0001:0024C304   560 0001:0024C310
+   563 0001:0024C316   565 0001:0024C324   566 0001:0024C32B   567 0001:0024C339
+   571 0001:0024C34A   572 0001:0024C353   574 0001:0024C373   575 0001:0024C382
+   577 0001:0024C390   578 0001:0024C39C   581 0001:0024C3A2   582 0001:0024C3B7
+   585 0001:0024C3C0   586 0001:0024C3CA   588 0001:0024C3DE   590 0001:0024C3FE
+   591 0001:0024C40A   594 0001:0024C410   596 0001:0024C41E   597 0001:0024C425
+   598 0001:0024C433   602 0001:0024C441   606 0001:0024C540   607 0001:0024C543
+   608 0001:0024C54A   609 0001:0024C551   610 0001:0024C55F   611 0001:0024C56D
+   612 0001:0024C57B   613 0001:0024C582   614 0001:0024C593   615 0001:0024C59E
+   616 0001:0024C5AF   617 0001:0024C5C0   618 0001:0024C5D1   619 0001:0024C5E2
+   620 0001:0024C5F3   621 0001:0024C5FA   622 0001:0024C608   623 0001:0024C616
+   624 0001:0024C620   625 0001:0024C62A   626 0001:0024C635   631 0001:0024C638
+   632 0001:0024C670   634 0001:0024C679   635 0001:0024C683   637 0001:0024C68D
+   638 0001:0024C6A1   639 0001:0024C6A8   640 0001:0024C6B2   641 0001:0024C6BF
+   642 0001:0024C6CC   643 0001:0024C6D9   644 0001:0024C6E4   647 0001:0024C6F1
+   648 0001:0024C6FF   649 0001:0024C70D   650 0001:0024C71B   651 0001:0024C729
+   652 0001:0024C733   653 0001:0024C741   654 0001:0024C744   656 0001:0024C74D
+   660 0001:0024C778   661 0001:0024C798   662 0001:0024C79F   663 0001:0024C7B1
+   664 0001:0024C7C5   665 0001:0024C7D2   666 0001:0024C7E6   667 0001:0024C7FA
+   668 0001:0024C801   670 0001:0024C810   671 0001:0024C82C   672 0001:0024C843
+   673 0001:0024C855   674 0001:0024C86A   675 0001:0024C87F   676 0001:0024C898
+   678 0001:0024C8A8   679 0001:0024C8B5   680 0001:0024C8BC   681 0001:0024C8C3
+   682 0001:0024C8E8   684 0001:0024C8FC   686 0001:0024C909   687 0001:0024C917
+   689 0001:0024C922   691 0001:0024C931   694 0001:0024C938   698 0001:0024C960
+   699 0001:0024C966   700 0001:0024C96F   701 0001:0024C97F   702 0001:0024C98F
+   703 0001:0024C99F   704 0001:0024C9AE   706 0001:0024C9BE   712 0001:0024C9C4
+   713 0001:0024C9D0   718 0001:0024C9D4   720 0001:0024C9D8   722 0001:0024C9DE
+   723 0001:0024C9E2   724 0001:0024C9E7   725 0001:0024C9EF   726 0001:0024C9F7
+   727 0001:0024CA05   728 0001:0024CA0D   729 0001:0024CA1B   730 0001:0024CA23
+   731 0001:0024CA2B   732 0001:0024CA30   734 0001:0024CA38   735 0001:0024CA40
+   736 0001:0024CA45   737 0001:0024CA4D   738 0001:0024CA51   739 0001:0024CA56
+   742 0001:0024CA5E   743 0001:0024CA6B   744 0001:0024CA79   746 0001:0024CA86
+   748 0001:0024CA90   749 0001:0024CA9A   750 0001:0024CAA6   751 0001:0024CAAF
+   752 0001:0024CAB6   766 0001:0024CABC   767 0001:0024CAF7   768 0001:0024CAFB
+   769 0001:0024CB00   770 0001:0024CB0E   771 0001:0024CB16   772 0001:0024CB26
+   773 0001:0024CB36   774 0001:0024CB4A   776 0001:0024CB53   778 0001:0024CB59
+   779 0001:0024CB60   780 0001:0024CB68   781 0001:0024CB7B   785 0001:0024CB8A
+   786 0001:0024CB90   787 0001:0024CB98   788 0001:0024CBAB   790 0001:0024CBB8
+   792 0001:0024CBCD   793 0001:0024CBD2   795 0001:0024CBDA   796 0001:0024CBE3
+   797 0001:0024CBF6   798 0001:0024CC09   799 0001:0024CC16   800 0001:0024CC30
+   801 0001:0024CC43   802 0001:0024CC49   804 0001:0024CC4E   805 0001:0024CC53
+   806 0001:0024CCAA   807 0001:0024CCBB   811 0001:0024CCC8   812 0001:0024CCE0
+   814 0001:0024CD06   816 0001:0024CD08   817 0001:0024CD35   820 0001:0024CD3D
+   821 0001:0024CD49   822 0001:0024CD63   823 0001:0024CD78   825 0001:0024CD8B
+   826 0001:0024CD9C   827 0001:0024CDA7   828 0001:0024CDBB   830 0001:0024CDC5
+   832 0001:0024CDE7   833 0001:0024CDEE   834 0001:0024CE02   835 0001:0024CE15
+   836 0001:0024CE23   837 0001:0024CE37   838 0001:0024CE4B   840 0001:0024CE52
+   842 0001:0024CE5B   847 0001:0024CF39   848 0001:0024CF51   849 0001:0024CF58
+   850 0001:0024CF6C   852 0001:0024CF76   853 0001:0024CFAF   854 0001:0024CFBB
+   855 0001:0024CFC7   856 0001:0024CFFC   857 0001:0024D008   861 0001:0024D019
+   863 0001:0024D04A   864 0001:0024D056   865 0001:0024D05F   866 0001:0024D094
+   867 0001:0024D0A0   869 0001:0024D0AC   870 0001:0024D0B8   871 0001:0024D0C2
+   872 0001:0024D0D2   873 0001:0024D0E6   875 0001:0024D0ED   876 0001:0024D139
+   877 0001:0024D14C   878 0001:0024D156   879 0001:0024D165   880 0001:0024D16B
+   881 0001:0024D17A   882 0001:0024D18B   883 0001:0024D195   884 0001:0024D1A0
+   885 0001:0024D1AB   886 0001:0024D1BE   891 0001:0024D1EC   893 0001:0024D207
+   894 0001:0024D20D   895 0001:0024D21C   898 0001:0024D21E   900 0001:0024D222
+   901 0001:0024D22A   902 0001:0024D23A   904 0001:0024D24A   906 0001:0024D25F
+   908 0001:0024D265   909 0001:0024D28A   910 0001:0024D2C5   911 0001:0024D2D8
+   913 0001:0024D2E0   914 0001:0024D2E6   916 0001:0024D301   929 0001:0024D48C
+   930 0001:0024D4BC   931 0001:0024D4C9   932 0001:0024D4D0   933 0001:0024D4DD
+   934 0001:0024D4EA   936 0001:0024D4F0   937 0001:0024D4F6   938 0001:0024D50B
+   939 0001:0024D54C   940 0001:0024D555   941 0001:0024D568   942 0001:0024D57B
+   943 0001:0024D58E   945 0001:0024D5B0   946 0001:0024D5CE   947 0001:0024D5EE
+   949 0001:0024D60C   954 0001:0024D61A   955 0001:0024D625   957 0001:0024D648
+   959 0001:0024D64C   960 0001:0024D65B   961 0001:0024D66B   963 0001:0024D675
+   964 0001:0024D68C   965 0001:0024D6A2   966 0001:0024D6B0   967 0001:0024D6D8
+   968 0001:0024D6EF   969 0001:0024D703   970 0001:0024D70E   971 0001:0024D722
+   973 0001:0024D72C   975 0001:0024D732   979 0001:0024D7E0   981 0001:0024D7F5
+   982 0001:0024D7FC   983 0001:0024D80D   985 0001:0024D83B   986 0001:0024D847
+   987 0001:0024D850   988 0001:0024D87C   989 0001:0024D886   990 0001:0024D892
+   991 0001:0024D89E   992 0001:0024D8AB   993 0001:0024D8BC   995 0001:0024D8C3
+   996 0001:0024D902   997 0001:0024D912   998 0001:0024D91B   999 0001:0024D929
+  1000 0001:0024D932  1001 0001:0024D93B  1002 0001:0024D94E  1006 0001:0024D95E
+  1008 0001:0024D975  1009 0001:0024D984  1010 0001:0024D988  1011 0001:0024D995
+  1014 0001:0024D9A2  1015 0001:0024D9AF  1016 0001:0024D9B6  1030 0001:0024DAD0
+  1031 0001:0024DAF3  1032 0001:0024DAFB  1033 0001:0024DB1B  1034 0001:0024DB1F
+  1035 0001:0024DB24  1036 0001:0024DB32  1037 0001:0024DB4D  1038 0001:0024DBA5
+  1039 0001:0024DBC2  1040 0001:0024DBDF  1041 0001:0024DBE9  1043 0001:0024DBF9
+  1044 0001:0024DC06  1045 0001:0024DC52  1046 0001:0024DC9E  1047 0001:0024DCCB
+  1049 0001:0024DCDD  1050 0001:0024DCE4  1051 0001:0024DCF8  1052 0001:0024DD16
+  1054 0001:0024DD1A  1056 0001:0024DD4B  1059 0001:0024DD59  1060 0001:0024DD60
+  1061 0001:0024DD89  1062 0001:0024DD92  1063 0001:0024DDC1  1064 0001:0024DDCB
+  1065 0001:0024DDF8  1067 0001:0024DE06  1068 0001:0024DE12  1069 0001:0024DE1C
+  1070 0001:0024DE2C  1071 0001:0024DE40  1073 0001:0024DE47  1074 0001:0024DE94
+  1075 0001:0024DEB4  1076 0001:0024DEC7  1077 0001:0024DEDE  1078 0001:0024DEED
+  1081 0001:0024DF1C  1082 0001:0024DF31  1083 0001:0024DF3D  1084 0001:0024DF52
+  1086 0001:0024DF6A  1087 0001:0024DF7F  1088 0001:0024DF8B  1095 0001:0024DFA0
+  1097 0001:0024DFC6  1098 0001:0024DFCC  1099 0001:0024DFDB  1101 0001:0024DFEC
+  1102 0001:0024E006  1103 0001:0024E011  1104 0001:0024E01C  1105 0001:0024E02F
+  1107 0001:0024E04D  1109 0001:0024E053  1110 0001:0024E07F  1111 0001:0024E0B4
+  1112 0001:0024E0C7  1114 0001:0024E0CF  1115 0001:0024E0D5  1117 0001:0024E0F0
+  1128 0001:0024E1E0  1130 0001:0024E1F6  1132 0001:0024E22B  1134 0001:0024E24D
+  1135 0001:0024E25B  1137 0001:0024E26C  1138 0001:0024E27A  1139 0001:0024E283
+  1144 0001:0024E288  1145 0001:0024E2C4  1147 0001:0024E2C7  1149 0001:0024E2E8
+  1150 0001:0024E31B  1151 0001:0024E321  1152 0001:0024E325  1155 0001:0024E354
+  1157 0001:0024E360  1158 0001:0024E36F  1159 0001:0024E380  1160 0001:0024E394
+  1161 0001:0024E3BB  1163 0001:0024E3C7  1164 0001:0024E3D1  1166 0001:0024E3E0
+  1169 0001:0024E413  1170 0001:0024E42D  1171 0001:0024E449  1172 0001:0024E450
+  1173 0001:0024E47F  1174 0001:0024E486  1175 0001:0024E4A1  1180 0001:0024E4F0
+  1181 0001:0024E4FA  1182 0001:0024E505  1183 0001:0024E50B  1186 0001:0024E51A
+  1187 0001:0024E524  1190 0001:0024E529  1191 0001:0024E541  1192 0001:0024E562
+  1193 0001:0024E575  1194 0001:0024E585  1195 0001:0024E593  1197 0001:0024E5CA
+  1200 0001:0024E5E2  1202 0001:0024E5E8  1204 0001:0024E604  1205 0001:0024E60F
+  1207 0001:0024E61A  1208 0001:0024E625  1209 0001:0024E62B  1212 0001:0024E637
+  1213 0001:0024E643  1215 0001:0024E66E  1219 0001:0024E94C  1220 0001:0024E955
+  1221 0001:0024E95A  1227 0001:0024E95C  1229 0001:0024E95F  1230 0001:0024E968
+  1231 0001:0024E985  1232 0001:0024E98E  1233 0001:0024E9A9  1237 0001:0024E9AC
+  1239 0001:0024E9AF  1240 0001:0024E9BA  1241 0001:0024E9C8  1242 0001:0024E9D6
+  1243 0001:0024E9E4  1244 0001:0024E9F2  1255 0001:0024E9F4  1257 0001:0024EA13
+  1258 0001:0024EA23  1259 0001:0024EA31  1260 0001:0024EA38  1263 0001:0024EA51
+  1264 0001:0024EA83  1265 0001:0024EA93  1266 0001:0024EAA0  1268 0001:0024EAA5
+  1269 0001:0024EAB2  1270 0001:0024EABF  1271 0001:0024EACA  1272 0001:0024EADA
+  1273 0001:0024EAE4  1274 0001:0024EAF1  1275 0001:0024EAFE  1276 0001:0024EB0E
+  1278 0001:0024EB19  1280 0001:0024EB2D  1281 0001:0024EB43  1282 0001:0024EB53
+  1286 0001:0024EB79  1287 0001:0024EBA3  1288 0001:0024EBC4  1289 0001:0024EBE2
+  1290 0001:0024EBED  1291 0001:0024EBFD  1292 0001:0024EC04  1293 0001:0024EC15
+  1294 0001:0024EC20  1295 0001:0024EC31  1297 0001:0024EC57  1299 0001:0024EC5D
+  1301 0001:0024EC6E  1302 0001:0024EC92  1304 0001:0024ECA7  1305 0001:0024ECB2
+  1307 0001:0024ECC3  1308 0001:0024ECE7  1311 0001:0024ECFC  1313 0001:0024ED02
+  1314 0001:0024ED09  1315 0001:0024ED1F  1316 0001:0024ED5F  1317 0001:0024ED68
+  1318 0001:0024ED87  1319 0001:0024ED92  1324 0001:0024EDC3  1325 0001:0024EDE4
+  1326 0001:0024EDEE  1327 0001:0024EE03  1329 0001:0024EE0C  1330 0001:0024EE1D
+  1331 0001:0024EE24  1334 0001:0024EE2F  1335 0001:0024EE36  1336 0001:0024EE3D
+  1337 0001:0024EE44  1338 0001:0024EE52  1339 0001:0024EE62  1340 0001:0024EE70
+  1341 0001:0024EE7E  1347 0001:0024F00C  1349 0001:0024F045  1350 0001:0024F049
+  1351 0001:0024F04E  1352 0001:0024F056  1353 0001:0024F05B  1354 0001:0024F060
+  1356 0001:0024F070  1357 0001:0024F07D  1358 0001:0024F0DF  1359 0001:0024F100
+  1360 0001:0024F126  1361 0001:0024F14A  1362 0001:0024F16E  1364 0001:0024F17F
+  1370 0001:0024F1F8  1372 0001:0024F22E  1373 0001:0024F232  1374 0001:0024F237
+  1375 0001:0024F23F  1376 0001:0024F244  1378 0001:0024F249  1380 0001:0024F259
+  1381 0001:0024F266  1382 0001:0024F296  1383 0001:0024F2BC  1384 0001:0024F2E0
+  1385 0001:0024F304  1387 0001:0024F315  1393 0001:0024F390  1394 0001:0024F397
+  1399 0001:0024F398  1400 0001:0024F3A4  1401 0001:0024F3A9  1406 0001:0024F3AC
+  1407 0001:0024F3B3  1413 0001:0024F3B4  1415 0001:0024F3BD  1416 0001:0024F3DB
+  1422 0001:0024F3E4  1423 0001:0024F3EB  1433 0001:0024F3EC  1436 0001:0024F40A
+  1438 0001:0024F413  1439 0001:0024F41D  1441 0001:0024F427  1442 0001:0024F429
+  1444 0001:0024F43E  1445 0001:0024F446  1446 0001:0024F477  1447 0001:0024F496
+  1448 0001:0024F4B5  1450 0001:0024F4D4  1451 0001:0024F4EE  1453 0001:0024F504
+  1456 0001:0024F508  1458 0001:0024F50E  1460 0001:0024F530  1461 0001:0024F53A
+  1462 0001:0024F53C  1466 0001:0024F54E  1467 0001:0024F558  1468 0001:0024F55A
+  1471 0001:0024F56A  1472 0001:0024F586  1474 0001:0024F58A  1475 0001:0024F594
+  1476 0001:0024F5A1  1477 0001:0024F5C2  1478 0001:0024F5C9  1480 0001:0024F5D0
+  1481 0001:0024F5D9  1492 0001:0024F674  1494 0001:0024F6A1  1495 0001:0024F6BA
+  1497 0001:0024F6C3  1498 0001:0024F6D6  1500 0001:0024F6E2  1501 0001:0024F6F5
+  1503 0001:0024F6FA  1504 0001:0024F706  1508 0001:0024F712  1509 0001:0024F71B
+  1511 0001:0024F72F  1512 0001:0024F759  1514 0001:0024F763  1515 0001:0024F79A
+  1516 0001:0024F7AD  1517 0001:0024F7C7  1519 0001:0024F7CD  1520 0001:0024F7DC
+  1522 0001:0024F7E1  1524 0001:0024F7EF  1527 0001:0024F7FE  1529 0001:0024F80E
+  1530 0001:0024F824  1532 0001:0024F830  1534 0001:0024F840  1535 0001:0024F853
+  1537 0001:0024F858  1538 0001:0024F85F  1539 0001:0024F861  1541 0001:0024F872
+  1544 0001:0024F881  1546 0001:0024F891  1547 0001:0024F8A7  1549 0001:0024F8B3
+  1551 0001:0024F8C3  1552 0001:0024F8D6  1554 0001:0024F8D8  1555 0001:0024F8DF
+  1556 0001:0024F8E1  1558 0001:0024F8EF  1559 0001:0024F8F3  1569 0001:0024FA68
+  1572 0001:0024FA6C  1573 0001:0024FA79  1578 0001:0024FA89  1580 0001:0024FA99
+  1581 0001:0024FAAF  1583 0001:0024FABB  1585 0001:0024FACB  1586 0001:0024FADE
+  1588 0001:0024FAE1  1589 0001:0024FAEE  1595 0001:0024FB60  1597 0001:0024FB86
+  1606 0001:0024FB9F  1609 0001:0024FBBF  1611 0001:0024FBD5  1612 0001:0024FBE6
+  1614 0001:0024FBE8  1617 0001:0024FBF8  1618 0001:0024FC12  1620 0001:0024FC18
+  1621 0001:0024FC27  1623 0001:0024FC29  1626 0001:0024FC42  1627 0001:0024FC53
+  1629 0001:0024FC55  1630 0001:0024FC5C  1631 0001:0024FC63  1638 0001:0024FD94
+  1639 0001:0024FDB5  1640 0001:0024FDCE  1641 0001:0024FDE7  1643 0001:0024FDF0
+  1644 0001:0024FDFA  1645 0001:0024FE04  1646 0001:0024FE30  1647 0001:0024FE39
+  1649 0001:0024FE65  1651 0001:0024FE81  1652 0001:0024FEAA  1653 0001:0024FED3
+  1654 0001:0024FEE2  1656 0001:0024FEE7  1660 0001:0024FF52  1661 0001:0024FF6A
+  1662 0001:0024FF87  1664 0001:0024FF96  1665 0001:0024FFAC  1666 0001:0024FFD3
+  1670 0001:0024FFF6  1671 0001:0025001F  1672 0001:00250048  1674 0001:00250057
+  1685 0001:00250160  1687 0001:00250190  1688 0001:002501A9  1689 0001:002501C3
+  1691 0001:002501DE  1692 0001:002501ED  1694 0001:002501F2  1696 0001:00250206
+  1697 0001:00250219  1699 0001:0025021E  1701 0001:00250250  1703 0001:00250264
+  1704 0001:00250271  1707 0001:00250280  1708 0001:0025028D  1710 0001:0025029A
+  1711 0001:002502B2  1713 0001:002502B8  1714 0001:002502C7  1716 0001:002502C9
+  1717 0001:002502DD  1718 0001:00250336  1728 0001:00250550  1730 0001:00250591
+  1731 0001:002505AA  1732 0001:002505C4  1733 0001:002505DF  1734 0001:002505F2
+  1736 0001:00250605  1739 0001:0025065E  1740 0001:0025067A  1741 0001:0025068E
+  1742 0001:0025069F  1743 0001:002506B8  1744 0001:002506C5  1746 0001:002506FC
+  1747 0001:00250706  1749 0001:00250710  1750 0001:0025071A  1758 0001:00250721
+  1759 0001:00250725  1760 0001:0025072F  1762 0001:0025074E  1763 0001:00250758
+  1764 0001:00250764  1765 0001:00250792  1766 0001:002507B4  1767 0001:002507C8
+  1769 0001:002507D5  1771 0001:002507DF  1772 0001:002507E7  1774 0001:002507EE
+  1775 0001:002507FB  1776 0001:00250812  1777 0001:0025081F  1783 0001:0025083A
+  1784 0001:00250847  1785 0001:00250852  1786 0001:0025085F  1787 0001:0025086A
+  1788 0001:00250877  1789 0001:0025087C  1790 0001:00250885  1791 0001:00250891
+  1792 0001:0025089E  1793 0001:002508AB  1794 0001:002508B2  1795 0001:002508BF
+  1796 0001:002508CC  1797 0001:00250902  1801 0001:0025090B  1808 0001:0025091A
+  1809 0001:0025092B  1816 0001:00250B14  1818 0001:00250B39  1821 0001:00250B4F
+  1824 0001:00250B5F  1825 0001:00250B79  1827 0001:00250B7F  1828 0001:00250B8E
+  1830 0001:00250B90  1831 0001:00250B97  1840 0001:00250BF8  1842 0001:00250C1A
+  1844 0001:00250C27  1845 0001:00250C53  1846 0001:00250C61  1847 0001:00250C7A
+  1848 0001:00250C84  1851 0001:00250CA8  1852 0001:00250CB5  1853 0001:00250CC0
+  1854 0001:00250CCD  1855 0001:00250CDA  1856 0001:00250CEB  1858 0001:00250CF1
+  1859 0001:00250CF8  1860 0001:00250D1E  1861 0001:00250D35  1862 0001:00250D47
+  1863 0001:00250D6F  1864 0001:00250D79  1865 0001:00250D86  1866 0001:00250D8D
+  1867 0001:00250D96  1871 0001:00250DA1  1872 0001:00250DA8  1873 0001:00250DCF
+  1874 0001:00250DD8  1876 0001:00250DFF  1879 0001:00250E0C  1880 0001:00250E1F
+  1881 0001:00250E2F  1882 0001:00250E56  1897 0001:00250ED8  1907 0001:00250F17
+  1908 0001:00250F30  1909 0001:00250F49  1910 0001:00250F57  1912 0001:00250F6F
+  1913 0001:00250F79  1915 0001:00250F92  1917 0001:00250F95  1918 0001:00250FAE
+  1920 0001:00250FC1  1922 0001:00250FDC  1923 0001:00250FEB  1925 0001:00250FF0
+  1927 0001:00251004  1928 0001:00251017  1930 0001:0025101C  1932 0001:0025104E
+  1934 0001:00251062  1935 0001:0025106F  1938 0001:0025107E  1939 0001:0025108B
+  1941 0001:00251098  1943 0001:002510B4  1944 0001:002510B8  1945 0001:002510D0
+  1947 0001:002510DA  1948 0001:002510F4  1949 0001:00251108  1951 0001:00251113
+  1952 0001:00251123  1953 0001:0025112C  1955 0001:00251135  1957 0001:00251149
+  1960 0001:0025118D  1962 0001:00251197  1963 0001:002511DC  1965 0001:002511F0
+  1966 0001:00251208  1967 0001:0025121E  1968 0001:0025124E  1969 0001:00251281
+  1971 0001:0025128B  1972 0001:00251298  1973 0001:002512A3  1974 0001:002512B0
+  1975 0001:002512BD  1976 0001:002512CE  1978 0001:002512D4  1979 0001:002512DB
+  1980 0001:00251301  1981 0001:00251318  1982 0001:0025132A  1983 0001:00251358
+  1984 0001:00251362  1985 0001:0025136F  1986 0001:00251376  1991 0001:00251384
+  1992 0001:0025138B  1997 0001:002513B4  2000 0001:002513C5  2003 0001:00251403
+  2004 0001:00251412  2005 0001:0025142A  2007 0001:0025144A  2009 0001:00251453
+  2011 0001:0025145D  2012 0001:00251472  2014 0001:002514A0  2015 0001:002514AC
+  2016 0001:002514B5  2018 0001:002514E7  2019 0001:002514F1  2020 0001:00251503
+  2023 0001:0025151A  2025 0001:00251520  2026 0001:00251544  2028 0001:00251561
+  2045 0001:00251878  2046 0001:002518C9  2047 0001:002518D0  2048 0001:002518DB
+  2049 0001:002518E3  2050 0001:002518ED  2052 0001:00251900  2053 0001:00251920
+  2055 0001:0025195C  2056 0001:0025195F  2057 0001:00251961  2053 0001:00251962
+  2058 0001:00251967  2060 0001:00251978  2061 0001:00251982  2062 0001:0025198C
+  2064 0001:00251995  2065 0001:0025199C  2067 0001:002519A1  2070 0001:002519B4
+  2072 0001:002519C8  2074 0001:002519D3  2075 0001:002519E0  2078 0001:002519EF
+  2079 0001:002519FC  2081 0001:00251A09  2082 0001:00251A16  2084 0001:00251A1C
+  2085 0001:00251A2B  2087 0001:00251A2F  2089 0001:00251A42  2090 0001:00251A51
+  2092 0001:00251A55  2094 0001:00251A60  2095 0001:00251A73  2097 0001:00251A77
+  2099 0001:00251A9D  2100 0001:00251AA1  2101 0001:00251AA3  2103 0001:00251AAB
+  2104 0001:00251AC4  2106 0001:00251ACC  2107 0001:00251ACE  2108 0001:00251ADA
+  2109 0001:00251AEE  2111 0001:00251AFD  2112 0001:00251B0D  2113 0001:00251B16
+  2116 0001:00251B21  2117 0001:00251B2B  2119 0001:00251B31  2120 0001:00251B3E
+  2125 0001:00251B53  2126 0001:00251B61  2127 0001:00251B6B  2128 0001:00251B97
+  2129 0001:00251BA8  2131 0001:00251BAE  2132 0001:00251BDA  2133 0001:00251BE1
+  2134 0001:00251C07  2135 0001:00251C1E  2136 0001:00251C30  2137 0001:00251C58
+  2138 0001:00251C62  2139 0001:00251C6F  2140 0001:00251C76  2141 0001:00251C7F
+  2145 0001:00251C8D  2146 0001:00251C94  2147 0001:00251CC0  2148 0001:00251CE7
+  2149 0001:00251CF0  2151 0001:00251D21  2152 0001:00251D2C  2155 0001:00251F60
+  2157 0001:00251F63  2158 0001:00251F70  2159 0001:00251F7C  2160 0001:00251F89
+  2161 0001:00251F99  2162 0001:00251FA0  2170 0001:00251FA4  2172 0001:00251FC9
+  2173 0001:00251FE2  2174 0001:00251FFB  2176 0001:00252004  2177 0001:0025200E
+  2179 0001:00252018  2180 0001:0025205C  2181 0001:00252078  2182 0001:00252081
+  2183 0001:00252088  2184 0001:00252095  2185 0001:002520A2  2186 0001:002520AF
+  2187 0001:002520E5  2188 0001:002520EB  2190 0001:00252101  2192 0001:00252147
+  2194 0001:00252173  2195 0001:00252184  2197 0001:0025218A  2198 0001:00252191
+  2199 0001:002521B7  2200 0001:002521CE  2201 0001:002521E0  2202 0001:00252208
+  2203 0001:00252212  2204 0001:0025221F  2205 0001:00252226  2206 0001:0025222F
+  2217 0001:0025223A  2218 0001:00252241  2219 0001:00252268  2222 0001:00252271
+  2224 0001:00252291  2225 0001:0025229E  2226 0001:002522AB  2227 0001:002522B8
+  2230 0001:0025230C  2233 0001:0025232A  2235 0001:0025235B  2236 0001:0025236D
+  2237 0001:0025237D  2240 0001:00252389  2242 0001:00252396  2243 0001:002523A8
+  2244 0001:002523D3  2245 0001:002523E4  2249 0001:002523F6  2251 0001:00252403
+  2252 0001:00252415  2253 0001:00252436  2254 0001:00252447  2258 0001:00252459
+  2260 0001:00252466  2261 0001:00252478  2263 0001:002524DA  2264 0001:002524EB
+  2265 0001:002524FC  2269 0001:0025250E  2271 0001:0025251B  2272 0001:0025252D
+  2273 0001:00252558  2274 0001:00252569  2275 0001:0025257A  2276 0001:0025258B
+  2277 0001:0025259C  2278 0001:002525AD  2282 0001:002525BA  2283 0001:002525D6
+  2284 0001:002525ED  2290 0001:002526C8  2292 0001:002526D6  2293 0001:002526E4
+  2295 0001:002526F6  2296 0001:00252703  2300 0001:00252708  2301 0001:00252720
+  2310 0001:00252729  2311 0001:0025274F  2313 0001:0025276A  2316 0001:0025278A
+  2326 0001:002527B4  2327 0001:002527E1  2332 0001:00252806  2335 0001:0025282F
+  2339 0001:00252854  2344 0001:0025287E  2347 0001:0025289E  2352 0001:002528CA
+  2353 0001:002528D7  2354 0001:002528E4  2355 0001:002528F1  2356 0001:002528FE
+  2357 0001:0025290B  2375 0001:002529F2  2377 0001:00252A07  2382 0001:00252A10
+  2383 0001:00252A2E  2393 0001:00252A7E  2402 0001:00252AE6  2409 0001:00252B4A
+  2413 0001:00252B92  2418 0001:00252BD6  2420 0001:00252C02  2426 0001:00252C61
+  2432 0001:00252CC0  2443 0001:00252D74  2454 0001:00252E28  2460 0001:00252E87
+  2464 0001:00252ED4  2468 0001:00252F21  2470 0001:00252F65  2473 0001:00252FA9
+  2475 0001:00252FD2  2476 0001:00252FDF  2477 0001:00252FEC  2480 0001:00252FF9
+  2482 0001:0025300E  2484 0001:00253023  2486 0001:00253038  2488 0001:0025304D
+  2490 0001:00253062  2492 0001:00253077  2494 0001:0025308C  2495 0001:002530A1
+  2505 0001:002530C4  2506 0001:002530F2  2507 0001:00253125  2508 0001:00253136
+  2512 0001:00253158  2513 0001:00253171  2514 0001:0025318B  2515 0001:0025319A
+  2516 0001:002531A8  2517 0001:002531B6  2519 0001:002531DF  2521 0001:002531EF
+  2522 0001:00253209  2523 0001:00253241  2524 0001:00253256  2526 0001:00253271
+  2528 0001:0025327A  2529 0001:00253283  2531 0001:0025328C  2532 0001:00253293
+  2536 0001:0025329F  2537 0001:002532A6  2539 0001:002532B0  2540 0001:002532BC
+  2541 0001:002532CF  2542 0001:002532DF  2543 0001:002532EF  2545 0001:00253313
+  2551 0001:00253328  2553 0001:00253338  2554 0001:00253344  2555 0001:00253350
+  2556 0001:00253360  2557 0001:00253370  2558 0001:0025338D  2559 0001:0025339D
+  2562 0001:002533BE  2563 0001:002533DB  2565 0001:002533E5  2568 0001:002533EF
+  2569 0001:0025343C  2570 0001:0025345C  2571 0001:00253475  2572 0001:0025348F
+  2573 0001:0025349E  2574 0001:002534AC  2575 0001:002534CA  2577 0001:002534F3
+  2579 0001:00253503  2580 0001:00253524  2581 0001:00253539  2583 0001:00253554
+  2586 0001:0025355D  2588 0001:00253567  2589 0001:0025357A  2590 0001:00253598
+  2591 0001:002535B3  2594 0001:00253658  2595 0001:0025365E  2596 0001:0025366B
+  2597 0001:00253678  2598 0001:0025367C  2599 0001:00253693  2600 0001:002536A1
+  2603 0001:002536A4  2604 0001:002536DB  2605 0001:002536E4  2606 0001:002536F4
+  2607 0001:00253713  2608 0001:00253732  2609 0001:00253751  2610 0001:00253770
+  2611 0001:0025378F  2612 0001:002537AE  2613 0001:002537CD  2614 0001:002537EC
+  2615 0001:0025380B  2621 0001:002538A0  2623 0001:002538C3  2624 0001:002538DC
+  2625 0001:002538E2  2627 0001:002538F4  2628 0001:00253901  2629 0001:0025390E
+  2630 0001:0025391B  2631 0001:00253926  2632 0001:00253933  2633 0001:00253940
+  2634 0001:0025394D  2638 0001:00253957  2639 0001:00253961  2641 0001:0025396A
+  2642 0001:00253977  2644 0001:00253984  2645 0001:002539C0  2646 0001:002539E1
+  2647 0001:002539EE  2648 0001:002539FB  2649 0001:00253A00  2650 0001:00253A0B
+  2651 0001:00253A18  2653 0001:00253A6D  2654 0001:00253A99  2655 0001:00253B2F
+  2656 0001:00253B3F  2657 0001:00253B88  2661 0001:00253B9A  2662 0001:00253BB4
+  2663 0001:00253BC1  2664 0001:00253BCE  2665 0001:00253C10  2666 0001:00253C65
+  2668 0001:00253C72  2670 0001:00253C82  2672 0001:00253CEB  2673 0001:00253D01
+  2675 0001:00253D08  2676 0001:00253D13  2677 0001:00253D21  2678 0001:00253D2F
+  2679 0001:00253D36  2680 0001:00253D3D  2683 0001:00253E6C  2685 0001:00253E72
+  2686 0001:00253E8E  2687 0001:00253EA3  2688 0001:00253EAB  2690 0001:00253EB9
+  2691 0001:00253ED3  2692 0001:00253EE8  2694 0001:00253F1A  2695 0001:00253F45
+  2699 0001:00253F62  2700 0001:00253F6F  2701 0001:00253F7C  2702 0001:00253F89
+  2704 0001:00253F96  2706 0001:00253FA6  2707 0001:00253FB3  2708 0001:00253FC0
+  2709 0001:00253FCD  2710 0001:00253FE8  2711 0001:0025401B  2714 0001:00254051
+  2715 0001:0025405E  2716 0001:0025406B  2717 0001:00254078  2718 0001:00254085
+  2719 0001:00254092  2721 0001:0025409F  2726 0001:002540A4  2727 0001:002540AF
+  2732 0001:002540B0  2733 0001:002540BB  2736 0001:002540BC  2738 0001:002540D2
+  2740 0001:002540ED  2745 0001:00254110  2746 0001:00254125  2747 0001:0025412C
+  2750 0001:00254130  2752 0001:00254137  2753 0001:00254154  2755 0001:0025415A
+  2756 0001:00254197  2757 0001:002541A0  2758 0001:002541AB  2760 0001:002541B2
+  2764 0001:002541BC  2765 0001:002541D9  2770 0001:002541DC  2771 0001:002541F9
+  2776 0001:002541FC  2777 0001:00254219  2780 0001:0025421C  2782 0001:00254223
+  2783 0001:00254240  2785 0001:00254246  2786 0001:00254283  2787 0001:0025428C
+  2788 0001:00254295  2789 0001:002542A0  2791 0001:002542A7  2794 0001:002542B0
+  2796 0001:002542B7  2797 0001:002542C1  2798 0001:002542D1  2799 0001:002542DF
+  2801 0001:002542FA  2802 0001:00254304  2803 0001:0025430E  2805 0001:00254326
+  2808 0001:0025432C  2810 0001:00254333  2811 0001:0025433D  2812 0001:0025434D
+  2813 0001:0025435B  2815 0001:00254376  2816 0001:00254380  2817 0001:0025438A
+  2819 0001:002543A2  2824 0001:002543A8  2825 0001:002543C5  2826 0001:002543CC
+  2829 0001:002543ED  2830 0001:002543F7  2832 0001:00254401  2833 0001:00254407
+  2835 0001:00254445  2836 0001:00254467  2838 0001:00254491  2845 0001:00254560
+  2846 0001:00254582  2847 0001:0025458B  2848 0001:002545A6  2850 0001:002545B8
+  2851 0001:002545EF  2852 0001:00254619  2853 0001:00254638  2854 0001:00254649
+  2847 0001:0025464A  2855 0001:00254651  2860 0001:00254728  2862 0001:0025472D
+  2863 0001:00254742  2865 0001:0025474B  2866 0001:00254754  2868 0001:0025475A
+  2869 0001:0025476B  2870 0001:00254789  2871 0001:00254799  2872 0001:002547A0
+  2873 0001:002547B3  2874 0001:002547C1  2879 0001:002547C8  2881 0001:002547E5
+  2882 0001:002547FE  2884 0001:00254807  2885 0001:00254811  2887 0001:0025481B
+  2888 0001:0025482C  2889 0001:00254832  2892 0001:00254877  2893 0001:00254899
+  2895 0001:002548C3  2896 0001:002548CA  2901 0001:0025499C  2903 0001:002549B3
+  2904 0001:002549C3  2907 0001:00254A03  2912 0001:00254A28  2913 0001:00254A4A
+  2914 0001:00254A57  2915 0001:00254A64  2916 0001:00254A8E  2917 0001:00254A9A
+  2918 0001:00254AA3  2920 0001:00254AAA  2922 0001:00254AB6  2923 0001:00254AD7
+  2925 0001:00254AE9  2930 0001:00254B18  2932 0001:00254B1C  2933 0001:00254B31
+  2935 0001:00254B3A  2936 0001:00254B43  2938 0001:00254B49  2939 0001:00254B53
+  2954 0001:00254B58  2955 0001:00254B6F  2956 0001:00254B76  2957 0001:00254B7D
+  2958 0001:00254B87  2959 0001:00254B91  2960 0001:00254B9C  2961 0001:00254BB0
+  2963 0001:00254BBB  2964 0001:00254BDA  2965 0001:00254C04  2966 0001:00254C10
+  2967 0001:00254C20  2968 0001:00254C30  2969 0001:00254C3F  2970 0001:00254C51
+  2971 0001:00254C63  2973 0001:00254C69  2974 0001:00254C71  2975 0001:00254C75
+  2977 0001:00254C8D  2978 0001:00254C9F  2983 0001:00254CC8  2985 0001:00254CCD
+  2986 0001:00254CE2  2988 0001:00254CEB  2989 0001:00254CF4  2991 0001:00254CFA
+  2993 0001:00254D10  2994 0001:00254D23  2995 0001:00254D31  3003 0001:00254D38
+  3004 0001:00254D68  3005 0001:00254D73  3007 0001:00254D8C  3008 0001:00254D93
+  3011 0001:00254DAE  3012 0001:00254DC5  3014 0001:00254DD4  3015 0001:00254DE2
+  3017 0001:00254DE8  3018 0001:00254DF5  3023 0001:00254E00  3034 0001:00254E34
+  3036 0001:00254E65  3037 0001:00254E7E  3038 0001:00254E97  3039 0001:00254EB0
+  3041 0001:00254EC6  3042 0001:00254ED0  3043 0001:00254EDA  3044 0001:00254EF0
+  3046 0001:00254F17  3047 0001:00254F2A  3048 0001:00254F44  3049 0001:00254F48
+  3051 0001:00254F52  3054 0001:00254F8B  3056 0001:00254F92  3058 0001:00254F94
+  3059 0001:00254FA7  3062 0001:00254FB5  3063 0001:00254FC4  3066 0001:00254FC9
+  3068 0001:00254FCF  3069 0001:00254FE7  3070 0001:00254FF6  3071 0001:00255030
+  3075 0001:00255059  3076 0001:0025506A  3077 0001:0025508A  3078 0001:0025509F
+  3079 0001:002550BD  3081 0001:002550C3  3082 0001:002550D5  3083 0001:002550E8
+  3086 0001:002550FE  3088 0001:00255107  3089 0001:00255119  3091 0001:00255139
+  3096 0001:0025520C  3097 0001:00255213  3106 0001:00255214  3107 0001:0025523C
+  3109 0001:00255245  3110 0001:0025524F  3112 0001:00255259  3113 0001:00255260
+  3114 0001:00255265  3115 0001:0025526C  3116 0001:00255284  3117 0001:0025529C
+  3118 0001:002552A6  3119 0001:002552B3  3120 0001:002552C0  3121 0001:002552CD
+  3122 0001:002552D8  3123 0001:002552E5  3125 0001:002552F3  3127 0001:00255348
+  3128 0001:00255384  3130 0001:002553B3  3131 0001:002553BF  3132 0001:00255413
+  3133 0001:0025541F  3134 0001:0025544A  3135 0001:00255471  3137 0001:0025549C
+  3138 0001:002554B2  3139 0001:002554BC  3140 0001:002554C2  3141 0001:002554D5
+  3142 0001:002554DC  3143 0001:002554ED  3144 0001:002554FE  3145 0001:00255519
+  3147 0001:0025551D  3148 0001:00255540  3151 0001:0025554E  3152 0001:00255555
+  3153 0001:00255562  3154 0001:00255585  3155 0001:0025558F  3156 0001:0025559C
+  3157 0001:002555D6  3158 0001:002555E7  3159 0001:002555EE  3160 0001:00255604
+  3163 0001:00255633  3164 0001:0025568C  3166 0001:002556DD  3168 0001:002556E9
+  3170 0001:0025573A  3172 0001:00255746  3174 0001:0025574B  3175 0001:00255756
+  3177 0001:00255766  3179 0001:0025577A  3180 0001:00255784  3181 0001:0025578B
+  3182 0001:0025579C  3183 0001:002557AA  3184 0001:002557B5  3185 0001:002557C6
+  3186 0001:002557D9  3187 0001:002557E6  3188 0001:0025580E  3189 0001:0025581A
+  3190 0001:00255823  3191 0001:0025582E  3192 0001:0025584D  3193 0001:00255857
+  3194 0001:00255869  3195 0001:002558A9  3196 0001:002558BA  3200 0001:002558C3
+  3201 0001:002558CA  3202 0001:002558F8  3204 0001:002558FF  3206 0001:00255917
+  3207 0001:00255944  3209 0001:0025594D  3210 0001:00255978  3211 0001:00255981
+  3212 0001:0025598A  3213 0001:00255993  3214 0001:0025599C  3216 0001:002559A5
+  3219 0001:002559AC  3220 0001:00255A07  3221 0001:00255A62  3222 0001:00255A69
+  3229 0001:00255B4C  3231 0001:00255B6B  3232 0001:00255B84  3233 0001:00255B9D
+  3234 0001:00255BB0  3236 0001:00255BD2  3237 0001:00255BF4  3239 0001:00255BF9
+  3240 0001:00255C04  3242 0001:00255C20  3243 0001:00255C3A  3245 0001:00255C3E
+  3246 0001:00255C45  3247 0001:00255C71  3253 0001:00255C7A  3256 0001:00255CE0
+  3257 0001:00255CE3  3259 0001:00255CF0  3260 0001:00255CFD  3261 0001:00255D0A
+  3264 0001:00255D17  3271 0001:00255D1C  3272 0001:00255D25  3274 0001:00255D2A
+  3279 0001:00255D2C  3280 0001:00255D33  3285 0001:00255D34  3286 0001:00255D39
+  3289 0001:00255D3C  3291 0001:00255D3F  3293 0001:00255D57  3294 0001:00255D62
+  3295 0001:00255D72  3296 0001:00255D82  3298 0001:00255D99  3301 0001:00255DF0
+  3303 0001:00255DF3  3304 0001:00255E03  3305 0001:00255E13  3306 0001:00255E20
+  3309 0001:00255E3C  3311 0001:00255E52  3312 0001:00255E71  3317 0001:00255E94
+  3318 0001:00255E9F  3323 0001:00255EA0  3324 0001:00255EAB  3327 0001:00255EAC
+  3329 0001:00255EAF  3330 0001:00255EB8  3331 0001:00255EC1  3332 0001:00255ED8
+  3333 0001:00255EE1  3335 0001:00255EF6  3336 0001:00255EFF  3337 0001:00255F06
+  3340 0001:00255F08  3342 0001:00255F0B  3343 0001:00255F14  3346 0001:00255F31
+  3347 0001:00255F4F  3348 0001:00255F59  3351 0001:00255F5C  3353 0001:00255F5F
+  3354 0001:00255F76  3355 0001:00255F8D  3356 0001:00255FA4  3357 0001:00255FBB
+  3358 0001:00255FCD  3363 0001:00255FD0  3364 0001:00255FDB  3369 0001:00255FDC
+  3370 0001:00255FE7  3375 0001:00255FE8  3377 0001:00256003  3379 0001:00256009
+  3381 0001:0025601B  3382 0001:00256025  3384 0001:0025602F  3386 0001:0025607F
+  3387 0001:002560A1  3390 0001:002560C7  3395 0001:00256198  3396 0001:0025619F
+  3432 0001:002561A0  3433 0001:002561A3  3434 0001:002561AE  3435 0001:002561B9
+  3436 0001:002561C4  3438 0001:002561CF  3442 0001:002561D4  3443 0001:002561D9
+  3447 0001:002561DC  3448 0001:002561E4  3449 0001:002561E8  3450 0001:002561ED
+  3451 0001:002561F7  3452 0001:00256203  3456 0001:00256204  3459 0001:0025621E
+  3460 0001:00256220  3461 0001:00256238  3463 0001:0025624E  3464 0001:0025625F
+  3465 0001:00256261  3466 0001:0025626C  3475 0001:0025626E  3476 0001:00256277
+  3477 0001:00256288  3478 0001:00256297  3485 0001:00256324  3486 0001:00256340
+  3487 0001:00256342  3488 0001:00256344  3490 0001:00256367  3491 0001:00256378
+  3492 0001:0025637A  3494 0001:0025637F  3496 0001:002563A9  3498 0001:002563BD
+  3499 0001:002563D0  3501 0001:002563EF  3504 0001:002563FA  3506 0001:002563FE
+  3507 0001:0025640C  3509 0001:00256412  3511 0001:00256414  3513 0001:00256418
+  3514 0001:00256423  3516 0001:0025642E  3519 0001:0025643D  3520 0001:0025644C
+  3525 0001:00256500  3532 0001:00256519  3533 0001:00256527  3534 0001:0025652B
+  3535 0001:00256543  3536 0001:0025654E  3537 0001:00256559  3543 0001:00256580
+  3544 0001:0025659A  3545 0001:0025659C  3547 0001:002565C7  3548 0001:002565C9
+  3550 0001:002565CB  3551 0001:002565D6  3553 0001:002565F5  3554 0001:0025661D
+  3562 0001:0025664C  3563 0001:00256671  3564 0001:0025668A  3565 0001:002566A3
+  3566 0001:002566A5  3568 0001:002566B2  3570 0001:002566C6  3571 0001:00256704
+  3574 0001:00256716  3575 0001:00256754  3578 0001:00256766  3579 0001:002567A4
+  3583 0001:002567B3  3584 0001:002567F1  3587 0001:002567FE  3590 0001:00256816
+  3591 0001:00256820  3594 0001:0025682A  3595 0001:00256856  3596 0001:0025685F
+  3600 0001:0025688B  3606 0001:00256A9C  3607 0001:00256A9F  3608 0001:00256AA1
+  3610 0001:00256AA7  3611 0001:00256AAF  3612 0001:00256AC1  3613 0001:00256AD2
+  3615 0001:00256ADB  3619 0001:00256AF1  3621 0001:00256B05  3623 0001:00256B0C
+  3626 0001:00256B38  3627 0001:00256B45  3630 0001:00256B6E  3633 0001:00256B78
+  3634 0001:00256BC1  3635 0001:00256BC3  3638 0001:00256BD0  3640 0001:00256BE0
+  3641 0001:00256BE2  3643 0001:00256BEE  3645 0001:00256C15  3646 0001:00256C17
+  3648 0001:00256C2F  3650 0001:00256C41  3652 0001:00256C56  3653 0001:00256C58
+  3657 0001:00256C70  3664 0001:00256D64  3665 0001:00256D97  3666 0001:00256D99
+  3667 0001:00256DA3  3668 0001:00256DA7  3669 0001:00256DB4  3670 0001:00256DBD
+  3671 0001:00256DD1  3672 0001:00256DDF  3673 0001:00256DFB  3679 0001:00256E2C
+  3680 0001:00256E4F  3681 0001:00256E55  3684 0001:00256E72  3685 0001:00256E7D
+  3704 0001:00256EA8  3705 0001:00256EBE  3707 0001:00256EC7  3708 0001:00256ED4
+  3710 0001:00256EF9  3711 0001:00256F05  3715 0001:00256F54  3716 0001:00256F57
+  3718 0001:00256F5B  3719 0001:00256F68  3720 0001:00256F75  3723 0001:00256F91
+  3724 0001:00256F9E  3725 0001:00256FAB  3727 0001:00256FC5  3733 0001:00256FC8
+  3734 0001:00256FD2  3739 0001:00256FD4  3740 0001:00256FF1  3741 0001:00257005
+  3743 0001:00257025  3745 0001:0025702F  3746 0001:0025703F  3747 0001:0025704D
+  3749 0001:0025708C  3751 0001:002570A4  3752 0001:002570AE  3754 0001:002570B5
+  3755 0001:002570BB  3757 0001:002570E6  3760 0001:002572F8  3761 0001:002572FB
+  3762 0001:00257304  3763 0001:0025730B  3765 0001:0025732D  3772 0001:00257330
+  3774 0001:00257354  3775 0001:0025735B  3776 0001:00257376  3777 0001:0025737F
+  3778 0001:00257388  3781 0001:002573A9  3782 0001:002573C9  3783 0001:002573CD
+  3785 0001:002573F5  3786 0001:002573FC  3788 0001:00257409  3789 0001:00257434
+  3790 0001:00257472  3791 0001:0025749C  3792 0001:002574C6  3793 0001:002574ED
+  3794 0001:002574FE  3795 0001:00257525  3796 0001:0025755C  3797 0001:0025756A
+  3798 0001:0025757D  3799 0001:002575A0  3800 0001:002575AD  3802 0001:002575BB
+  3803 0001:002575F5  3804 0001:00257626  3805 0001:00257655  3806 0001:0025766E
+  3807 0001:0025768F  3808 0001:002576B7  3809 0001:002576D7  3810 0001:002576EA
+  3811 0001:00257703  3812 0001:00257744  3816 0001:0025774F  3819 0001:00257766
+  3820 0001:00257777  3825 0001:00257782  3826 0001:002577A1  3830 0001:002577B5
+  3831 0001:002577C9  3835 0001:002579E0  3837 0001:002579E3  3838 0001:00257A01
+  3839 0001:00257A1B  3840 0001:00257A33  3844 0001:00257A38  3847 0001:00257A3E
+  3848 0001:00257A40  3849 0001:00257A49  3850 0001:00257A52  3851 0001:00257A5C
+  3852 0001:00257A66  3853 0001:00257A6F  3854 0001:00257A78  3856 0001:00257A81
+  3859 0001:00257A84  3860 0001:00257A87  3861 0001:00257A90  3863 0001:00257A94
+  3864 0001:00257AAB  3867 0001:00257AB0  3869 0001:00257AB6  3870 0001:00257AD5
+  3871 0001:00257ADE  3880 0001:00257AE4  3881 0001:00257AF7  3882 0001:00257B3B
+  3883 0001:00257B54  3884 0001:00257B61  3886 0001:00257B94  3888 0001:00257BB6
+  3889 0001:00257BE6  3890 0001:00257BF5  3891 0001:00257C03  3892 0001:00257C1B
+  3893 0001:00257C2C  3896 0001:00257C60  3897 0001:00257C8C  3899 0001:00257C9C
+  3902 0001:00257CAF  3903 0001:00257CE4  3905 0001:00257CF9  3910 0001:00257D02
+  3911 0001:00257D0D  3914 0001:00257D20  3915 0001:00257D24  3916 0001:00257D48
+  3920 0001:00257D69  3922 0001:00257D79  3927 0001:00257E98  3928 0001:00257E9F
+  3929 0001:00257EA9  3941 0001:00257EAC  3943 0001:00257EDA  3945 0001:00257EE0
+  3946 0001:00257EF1  3947 0001:00257F06  3948 0001:00257F0F  3949 0001:00257F20
+  3950 0001:00257F2D  3951 0001:00257F3A  3952 0001:00257F47  3954 0001:00257F56
+  3955 0001:00257F8F  3957 0001:00257F9E  3959 0001:00257FAD  3960 0001:00257FE6
+  3962 0001:00257FF3  3963 0001:00258000  3965 0001:0025801C  3967 0001:00258029
+  3968 0001:00258038  3969 0001:0025806A  3970 0001:00258079  3971 0001:002580A3
+  3972 0001:002580AA  3974 0001:002580B6  3975 0001:002580EC  3978 0001:002580F7
+  3981 0001:00258108  3982 0001:00258115  3983 0001:00258122  3984 0001:0025812F
+  3985 0001:00258147  3986 0001:00258152  3987 0001:0025815D  3992 0001:002582A8
+  3993 0001:002582B2  3998 0001:002582C4  3999 0001:002582CE  4004 0001:002582E0
+  4005 0001:002582E5  4010 0001:002582E8  4013 0001:00258312  4014 0001:00258319
+  4015 0001:00258327  4017 0001:00258339  4019 0001:00258367  4020 0001:0025838B
+  4015 0001:0025838C  4021 0001:00258391  4022 0001:002583AC  4023 0001:002583C8
+  4024 0001:002583D6  4026 0001:002583DD  4031 0001:00258414  4032 0001:00258435
+  4035 0001:00258442  4036 0001:0025844E  4038 0001:00258454  4039 0001:00258463
+  4041 0001:00258470  4042 0001:0025848E  4043 0001:002584A3  4044 0001:002584BD
+  4046 0001:002584E0  4047 0001:002584ED  4048 0001:00258502  4051 0001:00258514
+  4053 0001:00258537  4054 0001:00258544  4056 0001:00258559  4057 0001:00258572
+  4058 0001:0025858B  4060 0001:0025859C  4061 0001:002585A9  4062 0001:002585B4
+  4063 0001:002585C1  4064 0001:002585CC  4065 0001:002585D9  4066 0001:002585DE
+  4067 0001:002585E7  4068 0001:002585F3  4069 0001:00258600  4070 0001:0025860D
+  4071 0001:0025861A  4072 0001:00258627  4073 0001:00258634  4074 0001:00258641
+  4075 0001:00258662  4077 0001:00258667  4078 0001:00258679  4080 0001:002586AD
+  4081 0001:002586BB  4082 0001:002586DC  4083 0001:002586E5  4086 0001:002586FF
+  4089 0001:0025873C  4092 0001:0025873F  4093 0001:00258753  4094 0001:0025875D
+  4095 0001:00258771  4097 0001:0025877B  4102 0001:00258780  4105 0001:0025879F
+  4108 0001:002587EF  4111 0001:00258821  4112 0001:00258851  4115 0001:00258880
+  4116 0001:00258886  4119 0001:002588B5  4122 0001:002588E4  4125 0001:00258924
+  4128 0001:00258943  4131 0001:00258993  4134 0001:002589C5  4135 0001:002589F5
+  4138 0001:00258A24  4139 0001:00258A2A  4142 0001:00258A59  4145 0001:00258A88
+  4147 0001:00258AC8  4150 0001:00258ACC  4151 0001:00258AD3  4153 0001:00258AE4
+  4154 0001:00258AED  4156 0001:00258AFF  4158 0001:00258B0F  4159 0001:00258B23
+  4160 0001:00258B2D  4161 0001:00258B41  4163 0001:00258B4B  4168 0001:00258B5C
+  4169 0001:00258B63  4170 0001:00258B69  4171 0001:00258B72  4172 0001:00258B85
+  4173 0001:00258B91  4174 0001:00258B9C  4175 0001:00258BB1  4178 0001:00258BC4
+  4179 0001:00258BCE  4180 0001:00258BDE  4181 0001:00258BE8  4182 0001:00258BEE
+  4189 0001:00258BF4  4190 0001:00258C03  4192 0001:00258C0C  4193 0001:00258C11
+  4195 0001:00258C13  4196 0001:00258C22  4198 0001:00258C2B  4199 0001:00258C35
+  4201 0001:00258C3B  4202 0001:00258C4E  4203 0001:00258C5F  4204 0001:00258C75
+  4213 0001:00258C80  4214 0001:00258C9C  4218 0001:00258CD2  4219 0001:00258CD7
+  4221 0001:00258CD9  4223 0001:00258CE2  4224 0001:00258CEC  4226 0001:00258CF2
+  4228 0001:00258D0E  4229 0001:00258D1D  4231 0001:00258D22  4234 0001:00258D64
+  4236 0001:00258D6A  4237 0001:00258D86  4238 0001:00258D98  4241 0001:00258D9C
+  4243 0001:00258DB5  4244 0001:00258DD1  4246 0001:00258DE0  4247 0001:00258DE9
+  4248 0001:00258DF0  4250 0001:00258E00  4251 0001:00258E0D  4252 0001:00258E2E
+  4253 0001:00258E3C  4256 0001:00258E60  4258 0001:00258E66  4259 0001:00258E82
+  4261 0001:00258E91  4262 0001:00258E9C  4264 0001:00258EB9  4267 0001:00258EBC
+  4269 0001:00258EC2  4270 0001:00258EDE  4272 0001:00258EED  4273 0001:00258EF8
+  4275 0001:00258F15  4278 0001:00258F18  4279 0001:00258F21  4280 0001:00258F24
+  4281 0001:00258F32  4282 0001:00258F40  4283 0001:00258F4E  4284 0001:00258F5C
+  4285 0001:00258F6A  4286 0001:00258F78  4287 0001:00258F7D  4289 0001:00258F8D
+  4290 0001:00258F9A  4294 0001:00258FA0  4296 0001:00258FB6  4297 0001:00258FC5
+  4299 0001:00258FD8  4300 0001:00258FE5  4301 0001:00259006  4303 0001:00259014
+  4311 0001:00259038  4312 0001:00259056  4313 0001:00259065  4315 0001:00259073
+  4316 0001:00259081  4317 0001:00259088  4318 0001:0025909B  4319 0001:002590AF
+  4320 0001:002590C2  4321 0001:002590D0  4322 0001:002590E4  4323 0001:002590F8
+  4324 0001:0025910C  4325 0001:0025911A  4326 0001:0025912E  4327 0001:00259142
+  4328 0001:00259153  4329 0001:00259164  4330 0001:00259175  4331 0001:00259185
+  4332 0001:002591AC  4334 0001:002591B5  4335 0001:002591E6  4336 0001:00259206
+  4337 0001:00259220  4339 0001:00259238  4341 0001:00259241  4342 0001:00259248
+  4343 0001:00259253  4344 0001:00259260  4345 0001:00259274  4347 0001:00259285
+  4348 0001:00259290  4349 0001:00259297  4352 0001:002592CF  4353 0001:002592E2
+  4355 0001:002592F2  4358 0001:00259318  4361 0001:00259321  4362 0001:00259328
+  4363 0001:00259333  4364 0001:00259347  4365 0001:0025935E  4366 0001:00259369
+  4368 0001:00259370  4371 0001:00259380  4375 0001:00259383  4376 0001:0025938D
+  4377 0001:00259397  4378 0001:002593A1  4380 0001:002593AB  4383 0001:002593B0
+  4387 0001:002593B3  4388 0001:002593BD  4389 0001:002593C7  4390 0001:002593D1
+  4392 0001:002593DB  4395 0001:002593E0  4397 0001:002593F7  4399 0001:002593FD
+  4400 0001:0025940C  4402 0001:0025941B  4403 0001:00259428  4404 0001:00259449
+  4405 0001:00259457  4406 0001:00259462  4407 0001:00259473  4410 0001:00259485
+  4412 0001:00259497  4417 0001:002594BC  4419 0001:002594D9  4420 0001:002594E6
+  4422 0001:002594EC  4423 0001:002594FB  4425 0001:0025950E  4426 0001:0025951B
+  4427 0001:00259528  4428 0001:0025953C  4432 0001:00259552  4433 0001:00259566
+  4435 0001:0025957A  4436 0001:00259593  4437 0001:002595AC  4438 0001:002595B9
+  4439 0001:002595C6  4440 0001:002595D3  4442 0001:002595E6  4443 0001:002595F3
+  4444 0001:002595FE  4445 0001:0025960B  4446 0001:00259616  4447 0001:00259623
+  4448 0001:00259628  4449 0001:00259631  4450 0001:0025963D  4451 0001:0025964A
+  4452 0001:00259657  4453 0001:00259664  4454 0001:00259671  4455 0001:0025967C
+  4456 0001:0025968D  4457 0001:0025969B  4458 0001:002596A8  4459 0001:002596B5
+  4460 0001:002596D6  4462 0001:002596DB  4463 0001:002596ED  4465 0001:0025970E
+  4466 0001:0025971C  4467 0001:0025973D  4469 0001:00259746  4472 0001:00259760
+  4477 0001:00259798  4479 0001:0025979E  4480 0001:002597C4  4481 0001:002597D1
+  4482 0001:002597DE  4487 0001:002597E4  4488 0001:002597ED  4496 0001:002597F0
+  4497 0001:00259810  4498 0001:00259829  4499 0001:00259842  4501 0001:0025984B
+  4502 0001:00259855  4503 0001:0025985F  4504 0001:0025988B  4505 0001:00259894
+  4507 0001:002598C0  4508 0001:002598CF  4509 0001:002598DC  4510 0001:002598EA
+  4511 0001:002598F0  4512 0001:0025991C  4513 0001:00259932  4522 0001:00259964
+  4523 0001:0025998E  4524 0001:0025999E  4525 0001:002599A6  4526 0001:002599B7
+  4527 0001:002599D4  4528 0001:002599E5  4529 0001:002599F0  4531 0001:002599F6
+  4532 0001:00259A05  4536 0001:00259A0A  4537 0001:00259A12  4541 0001:00259A76
+  4543 0001:00259A83  4545 0001:00259A92  4547 0001:00259AA7  4549 0001:00259ABD
+  4550 0001:00259AD3  4551 0001:00259AFA  4554 0001:00259B24  4558 0001:00259B38
+  4559 0001:00259B61  4560 0001:00259B8A  4561 0001:00259B99  4566 0001:00259B9E
+  4568 0001:00259BB4  4569 0001:00259BCA  4570 0001:00259BF1  4573 0001:00259C14
+  4575 0001:00259C23  4579 0001:00259D34  4581 0001:00259D3A  4582 0001:00259D5F
+  4588 0001:00259D64  4589 0001:00259D81  4590 0001:00259D85  4591 0001:00259D8D
+  4592 0001:00259D9C  4593 0001:00259DAA  4594 0001:00259DB9  4595 0001:00259DCB
+  4597 0001:00259E0F  4598 0001:00259E13  4599 0001:00259E15  4594 0001:00259E16
+  4601 0001:00259E26  4603 0001:00259E36  4607 0001:00259E64  4609 0001:00259E71
+  4611 0001:00259E77  4613 0001:00259E7D  4614 0001:00259EA2  4616 0001:00259EA9
+  4618 0001:00259EAF  4619 0001:00259ED4  4622 0001:00259ED9  4623 0001:00259EDF
+  4624 0001:00259F04  4626 0001:00259F09  4630 0001:00259F10  4632 0001:00259F19
+  4633 0001:00259F25  4634 0001:00259F48  4635 0001:00259F69  4639 0001:00259F70
+  4640 0001:00259F7A  4645 0001:00259F7C  4646 0001:00259F86  4653 0001:00259F88
+  4655 0001:00259FA6  4656 0001:00259FBF  4657 0001:00259FD8  4659 0001:00259FE1
+  4660 0001:00259FEB  4661 0001:00259FF5  4662 0001:00259FFC  4664 0001:0025A023
+  4665 0001:0025A032  4666 0001:0025A04D  4667 0001:0025A053  4668 0001:0025A07F
+  4671 0001:0025A0B0  4673 0001:0025A0B3  4674 0001:0025A0BA  4675 0001:0025A0C3
+  4676 0001:0025A0DE  4679 0001:0025A0E0  4680 0001:0025A0E3  4681 0001:0025A0EF
+  4682 0001:0025A0F8  4683 0001:0025A113  4688 0001:0025A118  4689 0001:0025A13E
+  4694 0001:0025A140  4696 0001:0025A158  4697 0001:0025A17D  4700 0001:0025A19A
+  4701 0001:0025A1B9  4704 0001:0025A1C3  4705 0001:0025A1C9  4707 0001:0025A1DA
+  4708 0001:0025A1F2  4709 0001:0025A21D  4710 0001:0025A238  4705 0001:0025A239
+  4713 0001:0025A23C  4718 0001:0025A278  4719 0001:0025A284  4722 0001:0025A288
+  4724 0001:0025A2A7  4725 0001:0025A2C1  4726 0001:0025A2DB  4727 0001:0025A2F5
+  4728 0001:0025A334  4729 0001:0025A373  4730 0001:0025A38D  4731 0001:0025A3A7
+  4732 0001:0025A3C1  4733 0001:0025A3DB  4741 0001:0025A410  4742 0001:0025A433
+  4744 0001:0025A43D
+
+Line numbers for fConsults(Consults\fConsults.pas) segment .itext
+
+  4735 0002:000015B8  4736 0002:000015D2  4737 0002:000015DC  4738 0002:000015ED
+  4740 0002:000015FE
+
+Line numbers for fDCSummProps(fDCSummProps.pas) segment .text
+
+   124 0001:0025AA2C   125 0001:0025AA58   126 0001:0025AA6F   127 0001:0025AA80
+   128 0001:0025AA8E   132 0001:0025AA96   133 0001:0025AAA3   134 0001:0025AAB0
+   135 0001:0025AAC0   137 0001:0025AACF   138 0001:0025AAE0   141 0001:0025AAFE
+   143 0001:0025AB04   144 0001:0025AB14   147 0001:0025AB2A   148 0001:0025AB65
+   149 0001:0025AB7E   150 0001:0025AB95   151 0001:0025ABAB   152 0001:0025ABBC
+   153 0001:0025ABE0   154 0001:0025ABF9   155 0001:0025AC0C   157 0001:0025AC18
+   158 0001:0025AC2D   160 0001:0025AC3E   161 0001:0025AC52   162 0001:0025AC66
+   163 0001:0025AC72   164 0001:0025AC7E   165 0001:0025AC99   166 0001:0025ACAC
+   167 0001:0025ACB7   168 0001:0025ACC8   170 0001:0025ACEC   172 0001:0025ACF8
+   173 0001:0025AD0B   174 0001:0025AD1E   175 0001:0025AD2E   177 0001:0025AD41
+   178 0001:0025AD51   180 0001:0025AD5B   182 0001:0025AD67   183 0001:0025AD79
+   185 0001:0025AD8E   186 0001:0025ADAA   187 0001:0025ADBC   188 0001:0025ADD0
+   189 0001:0025AE0E   190 0001:0025AE22   191 0001:0025AE60   193 0001:0025AE80
+   194 0001:0025AE94   197 0001:0025AED2   198 0001:0025AEE4   200 0001:0025AEF2
+   201 0001:0025AF06   203 0001:0025AF16   204 0001:0025AF28   205 0001:0025AF4F
+   206 0001:0025AF67   207 0001:0025AF73   208 0001:0025AF84   210 0001:0025AFBE
+   211 0001:0025AFCA   213 0001:0025AFD7   214 0001:0025AFE4   215 0001:0025AFEF
+   216 0001:0025B00A   220 0001:0025B01C   227 0001:0025B031   228 0001:0025B03B
+   230 0001:0025B04B   236 0001:0025B0E4   238 0001:0025B0E9   250 0001:0025B0EC
+   256 0001:0025B0F0   266 0001:0025B0F3   267 0001:0025B100   268 0001:0025B115
+   274 0001:0025B118   275 0001:0025B137   277 0001:0025B13D   278 0001:0025B154
+   280 0001:0025B168   282 0001:0025B183   283 0001:0025B194   284 0001:0025B1DB
+   285 0001:0025B209   286 0001:0025B215   287 0001:0025B224   288 0001:0025B233
+   290 0001:0025B240   291 0001:0025B251   280 0001:0025B252   294 0001:0025B25D
+   296 0001:0025B26D   302 0001:0025B334   303 0001:0025B33D   304 0001:0025B35B
+   308 0001:0025B364   309 0001:0025B36C   312 0001:0025B370   313 0001:0025B374
+   314 0001:0025B37A   315 0001:0025B3AC   317 0001:0025B3BD   318 0001:0025B3D5
+   319 0001:0025B3DF   321 0001:0025B3E2   322 0001:0025B3E9   325 0001:0025B3FE
+   326 0001:0025B40B   328 0001:0025B418   329 0001:0025B429   332 0001:0025B42C
+   333 0001:0025B42F   334 0001:0025B459   340 0001:0025B45C   341 0001:0025B465
+   342 0001:0025B483   347 0001:0025B48C   355 0001:0025B49B   356 0001:0025B4AC
+   358 0001:0025B4C5   360 0001:0025B4F4   364 0001:0025B500   365 0001:0025B514
+   368 0001:0025B518   369 0001:0025B51B   370 0001:0025B522   371 0001:0025B539
+   374 0001:0025B53C   375 0001:0025B53F   376 0001:0025B563   380 0001:0025B568
+   381 0001:0025B583   382 0001:0025B5A3   384 0001:0025B5B2   385 0001:0025B5C6
+   389 0001:0025B5D3   390 0001:0025B5EA   392 0001:0025B628   399 0001:0025B650
+   400 0001:0025B671   401 0001:0025B67F   402 0001:0025B68B   403 0001:0025B692
+   404 0001:0025B69A   405 0001:0025B6AF   406 0001:0025B6BE   407 0001:0025B6DE
+   408 0001:0025B6F6   409 0001:0025B718   410 0001:0025B734   411 0001:0025B76D
+   419 0001:0025B797   420 0001:0025B7B0   422 0001:0025B80B   425 0001:0025B829
+   426 0001:0025B839   428 0001:0025B83F   429 0001:0025B84D   430 0001:0025B85F
+   432 0001:0025B885   433 0001:0025B8A0   434 0001:0025B8E6   436 0001:0025B90F
+   437 0001:0025B917   438 0001:0025B928   443 0001:0025B93E   444 0001:0025B959
+   445 0001:0025B97A   446 0001:0025B99D   447 0001:0025B9BD   449 0001:0025B9CC
+   453 0001:0025B9F2   455 0001:0025BA14   456 0001:0025BA1E   460 0001:0025BCA4
+   461 0001:0025BCAE   462 0001:0025BCB3   474 0001:0025BCB4   481 0001:0025BCB8
+   482 0001:0025BD21   483 0001:0025BD37   484 0001:0025BD5A   487 0001:0025BD86
+   489 0001:0025BDA2   490 0001:0025BDB4   491 0001:0025BDDD   492 0001:0025BDEC
+   494 0001:0025BDF2   495 0001:0025BE01   496 0001:0025BE12   498 0001:0025BE17
+   499 0001:0025BE28   500 0001:0025BE35   501 0001:0025BE46   502 0001:0025BE57
+   503 0001:0025BE71   504 0001:0025BE7F   505 0001:0025BEA0   506 0001:0025BEB6
+   507 0001:0025BEC6   508 0001:0025BED4   509 0001:0025BEF5   513 0001:0025BF11
+   514 0001:0025BF63   516 0001:0025BF8C   517 0001:0025BF94   518 0001:0025BFA5
+   522 0001:0025BFBB   524 0001:0025BFE7   525 0001:0025C039   527 0001:0025C05E
+   528 0001:0025C066   529 0001:0025C077   534 0001:0025C08A   539 0001:0025C092
+   547 0001:0025C234   549 0001:0025C251   550 0001:0025C25E   552 0001:0025C262
+   553 0001:0025C273   557 0001:0025C285   558 0001:0025C28D   560 0001:0025C29B
+   561 0001:0025C2A9   562 0001:0025C2AD   563 0001:0025C2BE   567 0001:0025C2E4
+   568 0001:0025C2EB   573 0001:0025C2EC   574 0001:0025C2F1   576 0001:0025C320
+
+Line numbers for fDCSumm(fDCSumm.pas) segment .text
+
+   394 0001:0025D72C   395 0001:0025D733   396 0001:0025D73E   397 0001:0025D74A
+   398 0001:0025D754   400 0001:0025D768   402 0001:0025D788   403 0001:0025D794
+   406 0001:0025D79A   408 0001:0025D7A8   409 0001:0025D7AF   410 0001:0025D7BD
+   414 0001:0025D7CE   415 0001:0025D7D7   417 0001:0025D7F7   418 0001:0025D806
+   420 0001:0025D814   421 0001:0025D820   424 0001:0025D826   425 0001:0025D83B
+   428 0001:0025D844   429 0001:0025D84E   431 0001:0025D862   433 0001:0025D882
+   434 0001:0025D88E   437 0001:0025D894   439 0001:0025D8A2   440 0001:0025D8A9
+   441 0001:0025D8B7   445 0001:0025D8C5   452 0001:0025D9E0   454 0001:0025D9FE
+   455 0001:0025DA17   456 0001:0025DA30   458 0001:0025DA39   459 0001:0025DA43
+   460 0001:0025DA4D   461 0001:0025DA54   463 0001:0025DA7B   464 0001:0025DA8A
+   465 0001:0025DAA5   466 0001:0025DAAB   467 0001:0025DAD7   471 0001:0025DB08
+   472 0001:0025DB0B   473 0001:0025DB12   474 0001:0025DB19   475 0001:0025DB20
+   476 0001:0025DB31   477 0001:0025DB3C   478 0001:0025DB4D   479 0001:0025DB5E
+   480 0001:0025DB65   481 0001:0025DB73   482 0001:0025DB81   483 0001:0025DB8F
+   484 0001:0025DB99   485 0001:0025DBA3   486 0001:0025DBAD   490 0001:0025DBB0
+   491 0001:0025DBD0   492 0001:0025DBD7   493 0001:0025DBE9   494 0001:0025DBFD
+   495 0001:0025DC0A   496 0001:0025DC1E   497 0001:0025DC32   499 0001:0025DC41
+   500 0001:0025DC48   501 0001:0025DC64   502 0001:0025DC7B   503 0001:0025DC8D
+   504 0001:0025DCA2   505 0001:0025DCB7   506 0001:0025DCD0   509 0001:0025DCE0
+   511 0001:0025DCF4   513 0001:0025DD01   514 0001:0025DD0F   516 0001:0025DD1A
+   518 0001:0025DD29   520 0001:0025DD30   525 0001:0025DD58   526 0001:0025DD73
+   528 0001:0025DD79   531 0001:0025DD8B   532 0001:0025DD95   534 0001:0025DD9F
+   536 0001:0025DDEF   537 0001:0025DE11   540 0001:0025DE37   547 0001:0025DF18
+   548 0001:0025DF3A   549 0001:0025DF43   550 0001:0025DF5E   552 0001:0025DF70
+   553 0001:0025DFA7   554 0001:0025DFD3   555 0001:0025DFF2   556 0001:0025E003
+   549 0001:0025E004   557 0001:0025E00B   561 0001:0025E0EC   562 0001:0025E0F2
+   563 0001:0025E0FB   564 0001:0025E10B   565 0001:0025E11B   566 0001:0025E12B
+   567 0001:0025E13A   569 0001:0025E14A   575 0001:0025E150   576 0001:0025E15C
+   582 0001:0025E160   584 0001:0025E164   586 0001:0025E16A   587 0001:0025E16F
+   588 0001:0025E174   589 0001:0025E178   590 0001:0025E180   591 0001:0025E188
+   592 0001:0025E190   593 0001:0025E198   594 0001:0025E1A6   595 0001:0025E1AE
+   596 0001:0025E1BC   597 0001:0025E1C4   598 0001:0025E1D2   599 0001:0025E1DA
+   600 0001:0025E1E8   601 0001:0025E1F0   602 0001:0025E1F8   603 0001:0025E200
+   604 0001:0025E205   605 0001:0025E20D   606 0001:0025E212   608 0001:0025E21A
+   611 0001:0025E222   612 0001:0025E230   614 0001:0025E23D   616 0001:0025E247
+   617 0001:0025E251   618 0001:0025E258   621 0001:0025E25C   622 0001:0025E262
+   623 0001:0025E26F   624 0001:0025E27C   625 0001:0025E280   626 0001:0025E297
+   627 0001:0025E2A5   636 0001:0025E2A8   637 0001:0025E2D6   638 0001:0025E2E7
+   642 0001:0025E309   643 0001:0025E322   644 0001:0025E33C   645 0001:0025E34B
+   646 0001:0025E359   647 0001:0025E367   649 0001:0025E390   651 0001:0025E3A0
+   652 0001:0025E3BA   653 0001:0025E3F2   654 0001:0025E407   656 0001:0025E422
+   657 0001:0025E43D   658 0001:0025E44D   662 0001:0025E46F   664 0001:0025E47F
+   665 0001:0025E48B   666 0001:0025E49B   668 0001:0025E4B8   669 0001:0025E4D5
+   671 0001:0025E4DF   674 0001:0025E4E9   675 0001:0025E536   676 0001:0025E556
+   677 0001:0025E56F   678 0001:0025E589   679 0001:0025E598   680 0001:0025E5A6
+   681 0001:0025E5C4   683 0001:0025E5ED   685 0001:0025E5FD   686 0001:0025E61E
+   687 0001:0025E633   689 0001:0025E64E   692 0001:0025E657   694 0001:0025E661
+   695 0001:0025E674   696 0001:0025E692   710 0001:0025E734   711 0001:0025E76F
+   712 0001:0025E773   713 0001:0025E778   714 0001:0025E786   715 0001:0025E78E
+   716 0001:0025E798   717 0001:0025E7AC   719 0001:0025E7B5   720 0001:0025E7BA
+   721 0001:0025E7C1   722 0001:0025E7C8   723 0001:0025E7DB   725 0001:0025E7EF
+   726 0001:0025E7F3   728 0001:0025E7FB   729 0001:0025E804   730 0001:0025E817
+   731 0001:0025E82A   732 0001:0025E830   734 0001:0025E838   737 0001:0025E840
+   738 0001:0025E858   739 0001:0025E87B   740 0001:0025E87D   742 0001:0025E885
+   744 0001:0025E88F   745 0001:0025E8A3   746 0001:0025E8C7   748 0001:0025E8DC
+   749 0001:0025E8F4   751 0001:0025E907   752 0001:0025E92F   754 0001:0025E932
+   755 0001:0025E98C   758 0001:0025E996   759 0001:0025E9A1   763 0001:0025E9B1
+   764 0001:0025E9BC   765 0001:0025E9C6   770 0001:0025E9D0   771 0001:0025E9DC
+   772 0001:0025E9F6   773 0001:0025EA0B   775 0001:0025EA1E   776 0001:0025EA2F
+   777 0001:0025EA3A   778 0001:0025EA4E   782 0001:0025EA58   784 0001:0025EA61
+   790 0001:0025EB6F   791 0001:0025EB87   792 0001:0025EB8E   793 0001:0025EBA2
+   795 0001:0025EBAC   796 0001:0025EBE5   797 0001:0025EBF1   798 0001:0025EBFD
+   799 0001:0025EC2C   800 0001:0025EC38   804 0001:0025EC49   806 0001:0025EC7A
+   807 0001:0025EC86   808 0001:0025EC8F   809 0001:0025ECBE   810 0001:0025ECCA
+   812 0001:0025ECD6   813 0001:0025ECE0   814 0001:0025ECF0   815 0001:0025ED04
+   816 0001:0025ED0B   817 0001:0025ED4B   818 0001:0025ED5E   819 0001:0025ED68
+   820 0001:0025ED6E   821 0001:0025ED7D   822 0001:0025ED8E   823 0001:0025ED98
+   824 0001:0025EDA3   825 0001:0025EDAE   826 0001:0025EDC1   829 0001:0025EDD4
+   830 0001:0025EDE3   834 0001:0025EDE5   836 0001:0025EDFE   838 0001:0025EE04
+   839 0001:0025EE23   840 0001:0025EE58   841 0001:0025EE6B   843 0001:0025EE73
+   844 0001:0025EE79   846 0001:0025EE94   859 0001:0025F03C   860 0001:0025F06D
+   861 0001:0025F074   862 0001:0025F07B   864 0001:0025F081   865 0001:0025F088
+   866 0001:0025F09C   867 0001:0025F0DD   868 0001:0025F118   869 0001:0025F121
+   870 0001:0025F134   871 0001:0025F147   874 0001:0025F155   875 0001:0025F160
+   876 0001:0025F17C   877 0001:0025F180   879 0001:0025F18A   881 0001:0025F190
+   882 0001:0025F1A1   883 0001:0025F1B4   884 0001:0025F1BF   885 0001:0025F1E4
+   886 0001:0025F1F5   887 0001:0025F228   889 0001:0025F240   890 0001:0025F254
+   891 0001:0025F25F   892 0001:0025F273   894 0001:0025F27D   896 0001:0025F283
+   902 0001:0025F396   903 0001:0025F3AB   904 0001:0025F3B2   905 0001:0025F3C3
+   907 0001:0025F3F1   908 0001:0025F3FD   909 0001:0025F406   910 0001:0025F432
+   911 0001:0025F43C   912 0001:0025F448   913 0001:0025F454   914 0001:0025F461
+   915 0001:0025F472   916 0001:0025F479   917 0001:0025F4B8   918 0001:0025F4C8
+   919 0001:0025F4D1   920 0001:0025F4DA   921 0001:0025F4E3   922 0001:0025F4F6
+   925 0001:0025F506   926 0001:0025F515   929 0001:0025F519   930 0001:0025F526
+   937 0001:0025F668   938 0001:0025F68D   939 0001:0025F69C   940 0001:0025F6B8
+   941 0001:0025F6CF   942 0001:0025F720   943 0001:0025F73F   944 0001:0025F75B
+   945 0001:0025F762   947 0001:0025F76F   948 0001:0025F779   949 0001:0025F7BD
+   950 0001:0025F801   951 0001:0025F82B   954 0001:0025F83B   955 0001:0025F842
+   956 0001:0025F853   957 0001:0025F86E   959 0001:0025F872   961 0001:0025F8A0
+   964 0001:0025F8AE   965 0001:0025F8B5   966 0001:0025F8D8   967 0001:0025F8E1
+   968 0001:0025F90D   969 0001:0025F917   970 0001:0025F941   972 0001:0025F94F
+   973 0001:0025F95B   974 0001:0025F965   975 0001:0025F972   976 0001:0025F983
+   978 0001:0025F98A   979 0001:0025F9D1   980 0001:0025F9EE   981 0001:0025F9FE
+   982 0001:0025FA07   983 0001:0025FA10   984 0001:0025FA23   985 0001:0025FA31
+   989 0001:0025FB08   990 0001:0025FB2F   991 0001:0025FB35   993 0001:0025FBB3
+  1000 0001:0025FBFC  1001 0001:0025FC2F  1002 0001:0025FC35  1004 0001:0025FC68
+  1005 0001:0025FC82  1006 0001:0025FC9E  1007 0001:0025FCA5  1008 0001:0025FCD4
+  1009 0001:0025FCDB  1010 0001:0025FCF6  1015 0001:0025FD45  1016 0001:0025FD4F
+  1017 0001:0025FD5A  1018 0001:0025FD60  1021 0001:0025FD6F  1022 0001:0025FD79
+  1025 0001:0025FD7E  1027 0001:0025FD87  1029 0001:0025FD9F  1030 0001:0025FDB0
+  1031 0001:0025FDC1  1033 0001:0025FDC6  1034 0001:0025FDD6  1035 0001:0025FDEB
+  1036 0001:0025FE10  1038 0001:0025FE1A  1040 0001:0025FE3F  1042 0001:0025FE4B
+  1043 0001:0025FE63  1046 0001:0025FE6F  1049 0001:0025FE79  1050 0001:0025FE89
+  1051 0001:0025FE97  1053 0001:0025FECE  1055 0001:0025FEE6  1057 0001:0025FEF1
+  1059 0001:0025FF02  1060 0001:0025FF20  1063 0001:0025FF2B  1065 0001:0025FF47
+  1066 0001:0025FF52  1068 0001:0025FF5D  1069 0001:0025FF68  1070 0001:0025FF6E
+  1073 0001:0025FF7A  1074 0001:0025FF86  1076 0001:0025FFB1  1081 0001:00260398
+  1082 0001:002603A1  1083 0001:002603A6  1089 0001:002603A8  1091 0001:002603AB
+  1092 0001:002603B6  1093 0001:002603C4  1098 0001:002603C8  1100 0001:002603DF
+  1101 0001:002603EF  1102 0001:0026042F  1103 0001:00260455  1111 0001:00260478
+  1113 0001:0026049B  1114 0001:002604B2  1116 0001:002604C4  1117 0001:002604D1
+  1118 0001:002604DE  1119 0001:002604EB  1120 0001:002604F8  1123 0001:0026050A
+  1124 0001:00260514  1125 0001:00260524  1126 0001:00260531  1127 0001:0026053E
+  1128 0001:00260572  1129 0001:0026058E  1131 0001:002605AF  1132 0001:002605C9
+  1133 0001:002605D9  1134 0001:002605E6  1135 0001:002605F3  1136 0001:00260600
+  1137 0001:0026060D  1138 0001:0026061B  1140 0001:00260622  1141 0001:00260629
+  1142 0001:00260634  1143 0001:00260642  1144 0001:00260650  1145 0001:00260683
+  1146 0001:002606CC  1147 0001:002606D9  1153 0001:00260780  1154 0001:00260787
+  1157 0001:00260788  1159 0001:0026078B  1160 0001:00260798  1161 0001:002607A4
+  1162 0001:002607B1  1163 0001:002607C1  1164 0001:002607C8  1170 0001:002607CC
+  1178 0001:002607D0  1179 0001:002607D7  1189 0001:002607D8  1191 0001:00260818
+  1193 0001:00260821  1194 0001:0026082B  1196 0001:00260835  1197 0001:00260851
+  1198 0001:0026085B  1199 0001:00260868  1200 0001:00260885  1201 0001:0026089A
+  1202 0001:002608A1  1204 0001:002608D2  1205 0001:002608E4  1206 0001:00260919
+  1207 0001:00260934  1208 0001:0026093F  1211 0001:0026094B  1212 0001:0026095D
+  1213 0001:0026096D  1214 0001:00260988  1217 0001:00260994  1218 0001:002609A6
+  1219 0001:002609B6  1220 0001:002609D1  1223 0001:002609DD  1224 0001:002609EF
+  1225 0001:002609FF  1226 0001:00260A1A  1229 0001:00260A26  1230 0001:00260A3C
+  1232 0001:00260A46  1233 0001:00260A58  1234 0001:00260A76  1235 0001:00260A91
+  1236 0001:00260AA3  1237 0001:00260AAD  1241 0001:00260AB9  1242 0001:00260ACF
+  1244 0001:00260AD9  1245 0001:00260AEB  1247 0001:00260B3C  1248 0001:00260B4A
+  1249 0001:00260B58  1250 0001:00260B6A  1251 0001:00260B7C  1252 0001:00260B86
+  1253 0001:00260BA7  1257 0001:00260BB3  1259 0001:00260BC4  1262 0001:00260BDE
+  1266 0001:00260BEB  1267 0001:00260BFC  1268 0001:00260C0D  1269 0001:00260C25
+  1270 0001:00260C3D  1271 0001:00260C4E  1272 0001:00260C66  1273 0001:00260C71
+  1275 0001:00260C7E  1276 0001:00260C8F  1277 0001:00260C9C  1278 0001:00260CAD
+  1279 0001:00260CBA  1280 0001:00260CCB  1281 0001:00260CDC  1282 0001:00260CE9
+  1286 0001:00260CF0  1287 0001:00260D14  1288 0001:00260D3B  1289 0001:00260D5D
+  1290 0001:00260D64  1299 0001:00260EB4  1300 0001:00260ED9  1301 0001:00260EDB
+  1303 0001:00260EE8  1305 0001:00260EFF  1306 0001:00260F3D  1309 0001:00260F4F
+  1310 0001:00260F8D  1313 0001:00260F9F  1314 0001:00260FDD  1318 0001:00260FEC
+  1319 0001:0026102A  1323 0001:00261037  1326 0001:0026104F  1327 0001:00261059
+  1330 0001:0026106A  1336 0001:0026127C  1338 0001:0026127F  1353 0001:0026128F
+  1354 0001:0026129A  1362 0001:0026129C  1364 0001:002612B4  1365 0001:002612C1
+  1367 0001:002612D5  1369 0001:00261306  1371 0001:00261316  1372 0001:0026132C
+  1374 0001:00261338  1376 0001:00261348  1377 0001:0026135B  1379 0001:0026135D
+  1380 0001:00261368  1387 0001:002613FC  1389 0001:00261428  1390 0001:00261437
+  1391 0001:00261450  1393 0001:00261464  1394 0001:00261490  1396 0001:002614A6
+  1397 0001:002614B7  1399 0001:002614B9  1400 0001:002614D3  1402 0001:002614D9
+  1403 0001:002614E8  1405 0001:002614EA  1408 0001:00261503  1409 0001:00261514
+  1411 0001:00261516  1412 0001:00261522  1413 0001:00261529  1420 0001:00261670
+  1421 0001:00261692  1422 0001:002616AB  1423 0001:002616C4  1425 0001:002616CD
+  1426 0001:002616D7  1427 0001:002616E1  1428 0001:002616E8  1430 0001:0026170F
+  1432 0001:0026172B  1433 0001:00261754  1434 0001:0026177D  1435 0001:0026178C
+  1437 0001:00261791  1441 0001:002617FC  1442 0001:00261814  1443 0001:00261831
+  1445 0001:00261840  1446 0001:00261847  1447 0001:0026186E  1451 0001:00261891
+  1452 0001:002618BA  1453 0001:002618E3  1455 0001:002618F2  1466 0001:002619FC
+  1468 0001:00261A2B  1469 0001:00261A3A  1470 0001:00261A54  1472 0001:00261A68
+  1473 0001:00261A7B  1475 0001:00261A80  1477 0001:00261AB2  1479 0001:00261AC6
+  1480 0001:00261AD3  1483 0001:00261AE2  1484 0001:00261AEF  1486 0001:00261AFC
+  1487 0001:00261B14  1489 0001:00261B1A  1490 0001:00261B29  1492 0001:00261B2B
+  1493 0001:00261B3F  1494 0001:00261B98  1497 0001:00261D7C  1498 0001:00261DAB
+  1500 0001:00261DBB  1501 0001:00261DCC  1502 0001:00261DEB  1503 0001:00261E0A
+  1504 0001:00261E29  1505 0001:00261E48  1506 0001:00261E67  1507 0001:00261E86
+  1508 0001:00261EA5  1509 0001:00261EC4  1510 0001:00261EE3  1520 0001:00261F78
+  1522 0001:00261FB7  1523 0001:00261FC6  1524 0001:00261FE0  1525 0001:00261FFB
+  1526 0001:0026200E  1528 0001:00262021  1531 0001:0026207A  1533 0001:00262096
+  1534 0001:002620AA  1535 0001:002620BB  1536 0001:002620D4  1537 0001:002620E1
+  1539 0001:00262118  1540 0001:00262122  1542 0001:0026212C  1543 0001:00262136
+  1551 0001:0026213D  1552 0001:00262141  1553 0001:0026214B  1554 0001:0026215A
+  1555 0001:00262188  1556 0001:002621AA  1558 0001:002621BE  1560 0001:002621C8
+  1561 0001:002621D0  1563 0001:002621D7  1567 0001:002621DE  1568 0001:002621EB
+  1569 0001:002621F8  1570 0001:002621FD  1571 0001:00262206  1572 0001:00262212
+  1573 0001:0026221F  1574 0001:0026222C  1575 0001:00262241  1578 0001:0026225A
+  1579 0001:0026226B  1586 0001:00262454  1588 0001:00262480  1589 0001:0026248F
+  1590 0001:002624A9  1591 0001:002624C2  1593 0001:002624D2  1594 0001:002624FE
+  1595 0001:00262518  1597 0001:0026251E  1598 0001:0026252D  1600 0001:0026252F
+  1601 0001:00262538  1608 0001:002625AC  1610 0001:002625C7  1612 0001:002625D4
+  1613 0001:00262600  1614 0001:0026260E  1615 0001:00262618  1618 0001:00262630
+  1619 0001:00262637  1622 0001:00262660  1623 0001:00262673  1638 0001:002626F8
+  1640 0001:00262737  1649 0001:00262746  1650 0001:0026275F  1651 0001:0026276D
+  1653 0001:00262785  1654 0001:0026278F  1656 0001:002627A8  1658 0001:002627AB
+  1659 0001:002627C4  1661 0001:002627D7  1663 0001:002627EB  1664 0001:002627FE
+  1666 0001:00262803  1668 0001:00262835  1670 0001:00262849  1671 0001:00262856
+  1674 0001:00262865  1675 0001:00262872  1677 0001:0026287F  1679 0001:0026289B
+  1680 0001:0026289F  1681 0001:002628B7  1683 0001:002628C1  1684 0001:002628DB
+  1685 0001:002628EF  1687 0001:002628FA  1688 0001:0026290A  1689 0001:00262913
+  1691 0001:0026291C  1693 0001:00262930  1696 0001:00262974  1698 0001:0026297E
+  1699 0001:002629C3  1701 0001:002629D7  1702 0001:002629EF  1703 0001:00262A05
+  1704 0001:00262A35  1705 0001:00262A62  1706 0001:00262A68  1707 0001:00262A73
+  1710 0001:00262A84  1713 0001:00262ABC  1714 0001:00262ACB  1716 0001:00262AE3
+  1718 0001:00262AEA  1720 0001:00262AF4  1721 0001:00262B09  1723 0001:00262B37
+  1724 0001:00262B43  1725 0001:00262B4C  1726 0001:00262B7E  1727 0001:00262B8A
+  1728 0001:00262B9C  1731 0001:00262BB3  1733 0001:00262BB9  1734 0001:00262BDD
+  1736 0001:00262BFA  1750 0001:00262ECC  1751 0001:00262F11  1752 0001:00262F18
+  1753 0001:00262F24  1754 0001:00262F2E  1755 0001:00262F4E  1757 0001:00262F8A
+  1758 0001:00262F8D  1759 0001:00262F8F  1755 0001:00262F90  1760 0001:00262F93
+  1762 0001:00262FA4  1763 0001:00262FAE  1764 0001:00262FB8  1766 0001:00262FC1
+  1767 0001:00262FC8  1769 0001:00262FCD  1772 0001:00262FE1  1774 0001:00262FF5
+  1776 0001:00263001  1777 0001:0026300E  1780 0001:0026301D  1781 0001:0026302A
+  1783 0001:00263037  1784 0001:00263045  1786 0001:0026304B  1787 0001:0026305A
+  1789 0001:0026305E  1791 0001:0026306A  1792 0001:0026307D  1794 0001:00263081
+  1796 0001:002630A8  1797 0001:002630AC  1798 0001:002630AE  1800 0001:002630B6
+  1801 0001:002630CF  1803 0001:002630D7  1804 0001:002630D9  1805 0001:002630E6
+  1806 0001:002630FA  1808 0001:00263109  1809 0001:00263119  1810 0001:00263122
+  1813 0001:0026312D  1814 0001:00263137  1816 0001:0026313D  1817 0001:0026314B
+  1822 0001:00263160  1824 0001:00263183  1825 0001:0026318A  1827 0001:002631BC
+  1830 0001:002633B8  1832 0001:002633BE  1833 0001:002633DA  1834 0001:002633EF
+  1835 0001:002633F7  1837 0001:00263405  1838 0001:0026341F  1839 0001:00263434
+  1841 0001:00263466  1842 0001:00263491  1845 0001:002634AE  1846 0001:002634BB
+  1847 0001:002634C8  1848 0001:002634D5  1850 0001:002634E2  1852 0001:002634F2
+  1853 0001:002634FF  1854 0001:0026350C  1855 0001:00263519  1856 0001:00263534
+  1857 0001:00263567  1860 0001:0026359D  1861 0001:002635AA  1862 0001:002635B7
+  1863 0001:002635C4  1864 0001:002635D1  1865 0001:002635DE  1867 0001:002635EB
+  1872 0001:002635F0  1873 0001:002635FB  1878 0001:002635FC  1879 0001:00263607
+  1882 0001:00263608  1884 0001:0026361E  1886 0001:00263639  1891 0001:0026365C
+  1892 0001:00263671  1893 0001:00263678  1896 0001:0026367C  1898 0001:00263683
+  1899 0001:002636A0  1901 0001:002636A6  1902 0001:002636E3  1903 0001:002636EC
+  1904 0001:002636F7  1906 0001:002636FE  1910 0001:00263708  1911 0001:00263725
+  1914 0001:00263728  1916 0001:0026372F  1917 0001:0026374C  1919 0001:00263752
+  1920 0001:0026378F  1921 0001:00263798  1922 0001:002637A1  1923 0001:002637AC
+  1925 0001:002637B3  1930 0001:002637BC  1931 0001:002637D9  1936 0001:002637DC
+  1937 0001:002637F9  1940 0001:002637FC  1942 0001:00263803  1943 0001:0026380D
+  1944 0001:0026381D  1945 0001:0026382B  1947 0001:00263846  1948 0001:00263850
+  1949 0001:0026385A  1951 0001:00263872  1954 0001:00263878  1956 0001:0026387F
+  1957 0001:00263889  1958 0001:00263899  1959 0001:002638A7  1961 0001:002638C2
+  1962 0001:002638CC  1963 0001:002638D6  1965 0001:002638EE  1968 0001:002638F4
+  1969 0001:002638F7  1970 0001:002638FE  1971 0001:00263908  1972 0001:00263914
+  1973 0001:0026391E  1974 0001:00263932  1975 0001:0026393D  1976 0001:00263948
+  1977 0001:00263972  1978 0001:0026397E  1979 0001:0026398E  1980 0001:0026399E
+  1981 0001:002639AD  1982 0001:002639BF  1983 0001:002639D1  1986 0001:002639D8
+  1988 0001:002639DB  1989 0001:002639FB  1990 0001:00263A0D  1992 0001:00263A19
+  1993 0001:00263A23  1994 0001:00263A33  1995 0001:00263A51  1996 0001:00263A5F
+  1997 0001:00263A66  1998 0001:00263A76  2001 0001:00263A86  2002 0001:00263A8F
+  2003 0001:00263AA9  2011 0001:00263ADC  2012 0001:00263B0C  2013 0001:00263B17
+  2015 0001:00263B30  2016 0001:00263B37  2019 0001:00263B52  2020 0001:00263B69
+  2022 0001:00263B78  2023 0001:00263B86  2025 0001:00263B8C  2026 0001:00263B99
+  2031 0001:00263BA4  2042 0001:00263BD8  2044 0001:00263C16  2045 0001:00263C25
+  2047 0001:00263C3B  2048 0001:00263C45  2049 0001:00263C4F  2050 0001:00263C56
+  2052 0001:00263C7D  2053 0001:00263C8F  2054 0001:00263CA9  2055 0001:00263CAD
+  2057 0001:00263CB5  2060 0001:00263CEE  2062 0001:00263CF3  2064 0001:00263CF5
+  2065 0001:00263D04  2068 0001:00263D0F  2069 0001:00263D1E  2080 0001:00263D23
+  2081 0001:00263D36  2082 0001:00263D8B  2083 0001:00263D9A  2084 0001:00263DDC
+  2087 0001:00263E08  2088 0001:00263E16  2089 0001:00263E36  2090 0001:00263E4B
+  2091 0001:00263E69  2093 0001:00263E6F  2094 0001:00263E81  2095 0001:00263E94
+  2098 0001:00263EAA  2100 0001:00263EB3  2105 0001:00263F74  2106 0001:00263F7B
+  2114 0001:00263F7C  2115 0001:00263F9F  2117 0001:00263FA8  2118 0001:00263FB2
+  2120 0001:00263FBC  2121 0001:00263FD9  2122 0001:00263FF6  2123 0001:00264000
+  2124 0001:0026400D  2125 0001:00264018  2127 0001:00264027  2129 0001:00264048
+  2130 0001:00264059  2132 0001:0026405E  2133 0001:00264065  2134 0001:00264076
+  2135 0001:00264084  2136 0001:0026408F  2137 0001:002640A0  2138 0001:002640B3
+  2139 0001:002640BF  2140 0001:002640E1  2141 0001:002640ED  2142 0001:002640F6
+  2143 0001:00264100  2144 0001:00264119  2145 0001:00264125  2146 0001:00264137
+  2147 0001:00264144  2148 0001:00264155  2149 0001:0026415C  2150 0001:00264172
+  2153 0001:0026417E  2154 0001:002641D1  2155 0001:00264224  2160 0001:00264398
+  2161 0001:002643B3  2163 0001:002643BC  2164 0001:002643C6  2166 0001:002643D0
+  2167 0001:002643DA  2168 0001:002643E7  2169 0001:002643F2  2171 0001:002643FF
+  2172 0001:0026440D  2173 0001:0026441B  2174 0001:0026442D  2175 0001:0026443F
+  2176 0001:0026444D  2177 0001:0026445F  2178 0001:00264468  2179 0001:00264472
+  2180 0001:00264480  2181 0001:0026448E  2182 0001:00264498  2183 0001:002644A2
+  2184 0001:002644B0  2185 0001:002644BE  2186 0001:002644C8  2187 0001:002644CB
+  2191 0001:002644D6  2192 0001:002644DD  2194 0001:002644E6  2205 0001:00264500
+  2207 0001:00264503  2208 0001:0026450C  2210 0001:00264524  2211 0001:00264531
+  2213 0001:00264533  2215 0001:0026454B  2216 0001:00264556  2219 0001:0026456D
+  2224 0001:00264728  2225 0001:00264733  2228 0001:00264734  2230 0001:0026474A
+  2231 0001:00264769  2234 0001:0026478C  2236 0001:0026478F  2237 0001:002647B0
+  2238 0001:002647C5  2239 0001:002647DA  2240 0001:002647EF  2241 0001:00264804
+  2246 0001:00264808  2247 0001:00264813  2250 0001:00264814  2252 0001:00264818
+  2253 0001:00264825  2254 0001:00264836  2255 0001:00264844  2256 0001:0026484F
+  2257 0001:00264865  2260 0001:00264868  2262 0001:0026486B  2263 0001:0026487A
+  2264 0001:0026489B  2267 0001:002648A0  2269 0001:002648A3  2270 0001:002648B2
+  2271 0001:002648D3  2276 0001:002648D8  2277 0001:002648E3  2282 0001:002648E4
+  2283 0001:002648EF  2286 0001:002648F0  2288 0001:002648F3  2289 0001:0026490A
+  2290 0001:00264921  2291 0001:00264938  2292 0001:0026494F  2293 0001:00264961
+  2298 0001:00264964  2299 0001:0026496F  2304 0001:00264970  2305 0001:0026497B
+  2308 0001:0026497C  2309 0001:0026497F  2310 0001:0026498A  2311 0001:00264995
+  2313 0001:002649A0  2317 0001:002649A4  2318 0001:002649A9  2322 0001:002649AC
+  2323 0001:002649B2  2340 0001:002649B4  2341 0001:002649BA  2342 0001:002649BC
+  2344 0001:002649C2  2345 0001:002649CA  2346 0001:002649DC  2347 0001:002649ED
+  2348 0001:002649FC  2350 0001:00264A0B  2351 0001:00264A18  2353 0001:00264A20
+  2356 0001:00264A4E  2357 0001:00264A58  2360 0001:00264A83  2369 0001:00264A90
+  2370 0001:00264AA6  2372 0001:00264AAF  2373 0001:00264ABC  2375 0001:00264AE1
+  2376 0001:00264AED  2382 0001:00264B3C  2383 0001:00264B52  2384 0001:00264B54
+  2385 0001:00264B7A  2386 0001:00264B88  2388 0001:00264B8E  2389 0001:00264B90
+  2391 0001:00264B9F  2396 0001:00264BEC  2397 0001:00264C09  2398 0001:00264C1D
+  2400 0001:00264C3D  2402 0001:00264C47  2403 0001:00264C57  2404 0001:00264C65
+  2406 0001:00264CA4  2408 0001:00264CBC  2409 0001:00264CC6  2411 0001:00264CCD
+  2412 0001:00264CD3  2414 0001:00264CFE  2419 0001:00264F10  2420 0001:00264F1A
+  2424 0001:00264F1C  2425 0001:00264F49  2426 0001:00264F52  2429 0001:00265039
+  2437 0001:00265090  2439 0001:002650B2  2440 0001:002650CA  2441 0001:002650D3
+  2443 0001:002650D7  2444 0001:002650DF  2447 0001:002650F2  2448 0001:002650F4
+  2450 0001:002650FC  2451 0001:00265127  2452 0001:00265165  2453 0001:0026518F
+  2454 0001:002651B9  2455 0001:002651E0  2456 0001:002651F1  2457 0001:0026522A
+  2458 0001:00265238  2459 0001:00265261  2460 0001:0026526F  2461 0001:00265282
+  2462 0001:002652A5  2463 0001:002652B2  2465 0001:002652C0  2466 0001:002652FA
+  2467 0001:0026532B  2468 0001:0026535A  2469 0001:00265373  2470 0001:00265394
+  2471 0001:002653BC  2472 0001:002653DC  2473 0001:002653EF  2474 0001:00265408
+  2475 0001:00265449  2476 0001:0026545D  2479 0001:00265594  2481 0001:0026559A
+  2482 0001:002655A5  2483 0001:002655C4  2484 0001:002655CD  2493 0001:002655D0
+  2494 0001:002655E3  2495 0001:00265627  2496 0001:00265640  2497 0001:0026564D
+  2499 0001:00265680  2501 0001:002656A2  2502 0001:002656B2  2503 0001:002656E2
+  2504 0001:002656F1  2505 0001:002656FF  2506 0001:00265717  2507 0001:00265728
+  2510 0001:0026575C  2511 0001:00265788  2513 0001:00265798  2516 0001:002657AB
+  2517 0001:002657E0  2519 0001:002657F5  2524 0001:002657FE  2525 0001:00265809
+  2528 0001:0026581C  2529 0001:00265820  2530 0001:00265844  2534 0001:00265865
+  2536 0001:00265875  2541 0001:00265994  2542 0001:0026599B  2543 0001:002659A5
+  2548 0001:002659A8  2549 0001:002659AD  2557 0001:002659B0  2558 0001:002659D0
+  2559 0001:002659DF  2560 0001:002659ED  2561 0001:002659FB  2562 0001:00265A02
+  2563 0001:00265A15  2564 0001:00265A28  2565 0001:00265A3C  2566 0001:00265A4F
+  2567 0001:00265A5D  2568 0001:00265A71  2569 0001:00265A85  2570 0001:00265A99
+  2571 0001:00265AAA  2572 0001:00265ABB  2573 0001:00265ACB  2574 0001:00265AED
+  2575 0001:00265B14  2577 0001:00265B1D  2579 0001:00265B37  2580 0001:00265B57
+  2582 0001:00265B63  2583 0001:00265B84  2585 0001:00265B9E  2586 0001:00265BA6
+  2588 0001:00265BB4  2590 0001:00265BCE  2591 0001:00265BEE  2593 0001:00265BFA
+  2594 0001:00265C1B  2596 0001:00265C35  2597 0001:00265C3D  2599 0001:00265C4B
+  2600 0001:00265C79  2601 0001:00265CA1  2603 0001:00265CBB  2605 0001:00265CC4
+  2606 0001:00265CCB  2607 0001:00265CDF  2608 0001:00265CF6  2609 0001:00265D02
+  2610 0001:00265D24  2612 0001:00265D33  2614 0001:00265D4B  2615 0001:00265D58
+  2617 0001:00265D60  2618 0001:00265D69  2619 0001:00265D72  2615 0001:00265D7B
+  2624 0001:00265D84  2625 0001:00265DA6  2626 0001:00265DB3  2627 0001:00265DDC
+  2628 0001:00265DE0  2629 0001:00265E09  2630 0001:00265E0D  2631 0001:00265E2F
+  2633 0001:00265E33  2634 0001:00265E3E  2636 0001:00265E50  2640 0001:00265E59
+  2641 0001:00265E6A  2643 0001:00265E73  2644 0001:00265E7C  2645 0001:00265E88
+  2646 0001:00265EA1  2648 0001:00265EAD  2649 0001:00265ED3  2653 0001:00265EEC
+  2654 0001:00265F10  2658 0001:00265F3C  2659 0001:00265F50  2660 0001:00265F57
+  2661 0001:00265F74  2664 0001:00265FA0  2665 0001:00265FB3  2666 0001:00265FC6
+  2668 0001:00265FD6  2671 0001:0026601C  2674 0001:00266025  2675 0001:0026602C
+  2676 0001:00266037  2677 0001:0026604B  2678 0001:00266064  2679 0001:0026606F
+  2681 0001:00266076  2688 0001:00266088  2689 0001:002660AE  2692 0001:002660BB
+  2693 0001:002660C7  2695 0001:002660CD  2696 0001:002660DB  2697 0001:002660EA
+  2699 0001:002660F7  2700 0001:00266115  2701 0001:00266133  2702 0001:0026614D
+  2704 0001:00266170  2705 0001:0026617D  2706 0001:00266192  2709 0001:002661A4
+  2711 0001:002661C7  2712 0001:002661D4  2714 0001:002661E9  2715 0001:002661F9
+  2716 0001:00266209  2717 0001:00266222  2718 0001:0026623B  2719 0001:0026624D
+  2721 0001:00266260  2722 0001:0026626D  2723 0001:0026627E  2724 0001:0026629D
+  2726 0001:002662A3  2727 0001:002662BF  2729 0001:002662D9  2730 0001:002662EE
+  2731 0001:002662FD  2732 0001:0026630C  2734 0001:00266319  2736 0001:00266360
+  2737 0001:00266378  2740 0001:00266390  2741 0001:0026639D  2742 0001:002663B9
+  2743 0001:002663CB  2744 0001:002663EC  2745 0001:00266403  2747 0001:00266427
+  2748 0001:0026642E  2749 0001:00266458  2751 0001:0026645E  2752 0001:00266478
+  2751 0001:00266491  2753 0001:00266494  2754 0001:002664A0  2755 0001:002664B0
+  2756 0001:002664B9  2758 0001:002664D6  2759 0001:002664F1  2760 0001:00266504
+  2761 0001:0026650B  2762 0001:00266522  2764 0001:00266539  2765 0001:00266540
+  2766 0001:00266546  2768 0001:00266555  2769 0001:0026656B  2773 0001:00266581
+  2774 0001:0026658A  2775 0001:0026659B  2776 0001:002665A9  2778 0001:002665B2
+  2779 0001:002665BF  2788 0001:002665D1  2790 0001:002665F2  2791 0001:00266600
+  2792 0001:0026660D  2793 0001:0026662E  2794 0001:00266637  2796 0001:00266651
+  2797 0001:0026666B  2798 0001:0026667B  2800 0001:0026668B  2803 0001:00266758
+  2806 0001:0026675B  2807 0001:0026676F  2808 0001:00266779  2809 0001:0026678D
+  2811 0001:00266797  2816 0001:0026679C  2819 0001:002667BB  2822 0001:0026680B
+  2825 0001:0026683D  2826 0001:0026686D  2829 0001:0026689C  2830 0001:002668A2
+  2833 0001:002668D1  2836 0001:00266900  2839 0001:00266940  2842 0001:0026695F
+  2845 0001:002669AF  2848 0001:002669E1  2849 0001:00266A11  2852 0001:00266A40
+  2853 0001:00266A46  2856 0001:00266A75  2859 0001:00266AA4  2861 0001:00266AE4
+  2864 0001:00266AE8  2865 0001:00266AEF  2867 0001:00266B00  2868 0001:00266B09
+  2870 0001:00266B1B  2872 0001:00266B2B  2873 0001:00266B3F  2874 0001:00266B49
+  2875 0001:00266B5D  2877 0001:00266B67  2889 0001:00266B78  2894 0001:00266B7C
+  2895 0001:00266B83  2896 0001:00266B89  2897 0001:00266B92  2898 0001:00266BA5
+  2899 0001:00266BB1  2900 0001:00266BBC  2901 0001:00266BD1  2904 0001:00266BE4
+  2905 0001:00266BEE  2906 0001:00266BFE  2907 0001:00266C08  2908 0001:00266C0E
+  2915 0001:00266C14  2916 0001:00266C23  2918 0001:00266C2C  2919 0001:00266C31
+  2921 0001:00266C33  2922 0001:00266C42  2924 0001:00266C4B  2925 0001:00266C55
+  2927 0001:00266C5B  2928 0001:00266C6E  2929 0001:00266C7F  2930 0001:00266C95
+  2939 0001:00266CA0  2940 0001:00266CBC  2944 0001:00266CF2  2945 0001:00266CF7
+  2947 0001:00266CF9  2949 0001:00266D02  2950 0001:00266D0C  2952 0001:00266D12
+  2954 0001:00266D2E  2955 0001:00266D3D  2957 0001:00266D42  2962 0001:00266D84
+  2963 0001:00266D94  2964 0001:00266DB3  2965 0001:00266DBB  2967 0001:00266DCB
+  2968 0001:00266DD2  2969 0001:00266DED  2968 0001:00266E09  2970 0001:00266E0C
+  2971 0001:00266E3D  2972 0001:00266E63  2973 0001:00266E69  2974 0001:00266E92
+  2975 0001:00266EA4  2976 0001:00266EB6  2977 0001:00266EC8  2978 0001:00266EDA
+  2980 0001:00266EEC  2982 0001:00266EFC  2983 0001:00266F09  2985 0001:00266F1C
+  2990 0001:00266F60  2991 0001:00266F80  2992 0001:00266F89  2994 0001:00266F9E
+  2995 0001:00266FA5  2997 0001:00266FD4  2998 0001:00266FDF  3002 0001:0026700C
+  3003 0001:00267025  3006 0001:00267034  3007 0001:0026703E  3008 0001:0026705C
+  3009 0001:00267065  3011 0001:0026707F  3014 0001:002670D8  3016 0001:002670D9
+  3018 0001:002670DF  3020 0001:002670E8  3021 0001:0026710E  3025 0001:00267127
+  3026 0001:0026714B  3029 0001:00267177  3032 0001:0026717C  3033 0001:00267185
+  3034 0001:00267188  3035 0001:00267196  3036 0001:002671A4  3037 0001:002671B2
+  3038 0001:002671C0  3039 0001:002671CE  3040 0001:002671DC  3041 0001:002671E1
+  3043 0001:002671F1  3044 0001:002671FE  3049 0001:00267204  3050 0001:0026720D
+  3058 0001:00267210  3060 0001:0026722F  3061 0001:0026723C  3062 0001:00267255
+  3063 0001:0026726E  3065 0001:00267277  3066 0001:00267281  3067 0001:0026728B
+  3068 0001:00267292  3070 0001:002672B9  3071 0001:002672C8  3072 0001:002672D5
+  3073 0001:002672E3  3074 0001:002672E9  3075 0001:00267315  3076 0001:0026732B
+  3085 0001:0026735C  3086 0001:00267386  3087 0001:00267396  3088 0001:0026739E
+  3089 0001:002673AF  3090 0001:002673CC  3091 0001:002673DD  3092 0001:002673E8
+  3094 0001:002673EE  3095 0001:002673FD  3099 0001:00267402  3100 0001:0026740A
+  3104 0001:0026746E  3106 0001:0026747B  3108 0001:0026748A  3110 0001:0026749F
+  3112 0001:002674B5  3113 0001:002674BC  3114 0001:002674E3  3117 0001:0026750D
+  3121 0001:00267521  3122 0001:0026754A  3123 0001:00267573  3124 0001:00267582
+  3129 0001:00267584  3131 0001:0026759A  3132 0001:002675A1  3133 0001:002675C8
+  3136 0001:002675EB  3138 0001:002675FA  3147 0001:0026770C  3149 0001:0026774A
+  3151 0001:00267750  3152 0001:0026776B  3153 0001:00267796  3155 0001:002677A3
+  3156 0001:002677AD  3158 0001:00267820  3161 0001:00267872  3162 0001:002678AC
+  3163 0001:002678DE  3165 0001:002678F0  3166 0001:002678FD  3167 0001:0026792F
+  3168 0001:00267942  3171 0001:0026795D  3172 0001:0026796A  3173 0001:0026799C
+  3174 0001:002679AF  3176 0001:002679C7  3177 0001:00267A04  3179 0001:00267A29
+  3182 0001:00267A36  3183 0001:00267A40  3187 0001:00267B5C  3189 0001:00267B69
+  3191 0001:00267B6F  3193 0001:00267B75  3194 0001:00267B9A  3196 0001:00267BA1
+  3198 0001:00267BA7  3199 0001:00267BCC  3202 0001:00267BD1  3203 0001:00267BD7
+  3204 0001:00267BFC  3206 0001:00267C01  3210 0001:00267C08  3212 0001:00267C11
+  3213 0001:00267C1D  3214 0001:00267C40  3215 0001:00267C61  3219 0001:00267C68
+  3220 0001:00267C72  3224 0001:00267C74  3225 0001:00267C7E  3231 0001:00267C80
+  3232 0001:00267C83  3234 0001:00267C9C  3235 0001:00267CAF  3238 0001:00267CB3
+  3239 0001:00267CB5  3244 0001:00267D08  3245 0001:00267D14  3248 0001:00267D18
+  3250 0001:00267D37  3251 0001:00267D51  3252 0001:00267D6B  3253 0001:00267D85
+  3254 0001:00267DC4  3255 0001:00267E03  3256 0001:00267E1D  3257 0001:00267E37
+  3258 0001:00267E51  3259 0001:00267E6B  3267 0001:00267EA0  3268 0001:00267EC3
+  3270 0001:00267ECD
+
+Line numbers for fDCSumm(fDCSumm.pas) segment .itext
+
+  3261 0002:00001618  3262 0002:00001632  3263 0002:0000163C  3264 0002:0000164D
+  3266 0002:0000165E
+
+Line numbers for fPrintList(fPrintList.pas) segment .text
+
+    38 0001:00268124    40 0001:00268127    41 0001:00268132    44 0001:00268134
+    46 0001:00268137    47 0001:00268142    48 0001:00268149    51 0001:0026814C
+    53 0001:00268166    54 0001:00268178    55 0001:00268188    56 0001:00268198
+    58 0001:002681A6    59 0001:002681C2    60 0001:002681C9    69 0001:002681EC
+    70 0001:00268217    71 0001:0026821F    72 0001:00268236    73 0001:00268240
+    74 0001:0026824F    75 0001:0026825D    76 0001:00268265    78 0001:0026827A
+    79 0001:0026828A    82 0001:00268292    83 0001:002682AA    88 0001:002682B5
+    76 0001:002682B6    90 0001:002682B9    92 0001:002682C9    95 0001:002682E4
+    96 0001:002682F3    97 0001:002682FB    99 0001:0026830D   100 0001:0026831A
+   101 0001:0026835D    97 0001:0026835E   102 0001:00268361   106 0001:00268379
+   107 0001:00268388   108 0001:00268390   110 0001:002683A2   111 0001:002683AF
+   112 0001:002683F2   108 0001:002683F3   113 0001:002683F6   117 0001:0026840E
+   118 0001:0026841D   119 0001:00268425   121 0001:00268437   122 0001:00268444
+   123 0001:00268487   119 0001:00268488   124 0001:0026848B   128 0001:0026849E
+   129 0001:002684B6   130 0001:002684C1   132 0001:002684DF   133 0001:002684E7
+   135 0001:002684F7   137 0001:002685E6
+
+Line numbers for fODChangeUnreleasedRenew(Orders\fODChangeUnreleasedRenew.pas) segment .text
+
+    54 0001:00268898    55 0001:002688C7    56 0001:002688C9    57 0001:002688DF
+    58 0001:0026890E    59 0001:0026893B    60 0001:00268952    61 0001:00268960
+    62 0001:00268969    63 0001:00268971    65 0001:00268975    66 0001:00268985
+    67 0001:00268990    68 0001:002689A0    69 0001:002689B3    71 0001:002689CD
+    73 0001:002689D2    74 0001:002689E2    75 0001:002689F2    76 0001:00268A05
+    78 0001:00268A1D    79 0001:00268A28    81 0001:00268A38    83 0001:00268A3C
+    84 0001:00268A59    85 0001:00268A6D    87 0001:00268A8B    89 0001:00268A8E
+    90 0001:00268AA9    94 0001:00268AD2    96 0001:00268AE2    99 0001:00268B60
+   101 0001:00268B61   102 0001:00268B68   104 0001:00268B74   105 0001:00268B80
+   106 0001:00268B8C   108 0001:00268B98   113 0001:00268BD8   114 0001:00268BDD
+   120 0001:00268BE0   122 0001:00268BFE   124 0001:00268C0A   125 0001:00268C23
+   127 0001:00268C30   128 0001:00268C41   131 0001:00268C46   133 0001:00268C56
+   134 0001:00268C5E   135 0001:00268C6C   136 0001:00268C96   138 0001:00268C9C
+   139 0001:00268CA6   140 0001:00268CD0   141 0001:00268D0F   143 0001:00268D1C
+   145 0001:00268D2C   146 0001:00268D3B   149 0001:00268D3D   150 0001:00268D44
+   151 0001:00268D4B   153 0001:00268EAA
+
+Line numbers for fODMedNVA(Orders\fODMedNVA.pas) segment .text
+
+   312 0001:002695B8   313 0001:002695D5   314 0001:002695E9   316 0001:002695F0
+   317 0001:002695F9   319 0001:00269600   321 0001:0026960F   322 0001:00269617
+   324 0001:00269627   325 0001:0026962F   327 0001:0026963F   328 0001:0026964E
+   329 0001:00269655   334 0001:0026965A   335 0001:0026966D   336 0001:00269679
+   337 0001:0026968B   338 0001:0026969D   339 0001:002696AF   341 0001:002696B9
+   342 0001:002696C9   343 0001:002696DE   344 0001:002696E8   345 0001:002696FB
+   346 0001:00269702   347 0001:0026972B   350 0001:00269735   351 0001:00269741
+   352 0001:0026974E   353 0001:0026975F   354 0001:00269773   355 0001:00269785
+   356 0001:00269797   357 0001:002697A8   359 0001:002697AE   360 0001:002697C2
+   361 0001:002697D7   364 0001:002697E5   365 0001:002697FB   366 0001:00269802
+   367 0001:00269812   371 0001:0026981E   372 0001:00269830   373 0001:00269854
+   374 0001:0026986E   375 0001:00269882   376 0001:00269897   377 0001:0026989E
+   379 0001:002698A5   380 0001:002698B9   381 0001:002698C0   382 0001:002698C7
+   385 0001:002699E8   387 0001:002699EE   388 0001:002699F9   390 0001:00269A04
+   391 0001:00269A0F   392 0001:00269A1A   394 0001:00269A25   395 0001:00269A2E
+   396 0001:00269A42   400 0001:00269A48   401 0001:00269A5E   402 0001:00269A65
+   403 0001:00269A86   404 0001:00269A8D   405 0001:00269A94   406 0001:00269AA1
+   407 0001:00269AAC   408 0001:00269AB9   409 0001:00269AC6   410 0001:00269AD3
+   411 0001:00269ADA   412 0001:00269AE1   413 0001:00269AEF   414 0001:00269AFA
+   415 0001:00269B08   417 0001:00269B1C   423 0001:00269B40   424 0001:00269B62
+   426 0001:00269B6D   427 0001:00269B80   428 0001:00269B9D   430 0001:00269BAD
+   431 0001:00269BE7   433 0001:00269BF5   434 0001:00269BFA   436 0001:00269C03
+   438 0001:00269C0A   440 0001:00269C19   441 0001:00269C20   442 0001:00269C4C
+   443 0001:00269C53   444 0001:00269C5A   445 0001:00269C61   446 0001:00269C78
+   447 0001:00269C85   448 0001:00269C8E   464 0001:00269C95   465 0001:00269C9E
+   473 0001:00269D04   474 0001:00269D0B   475 0001:00269D3C   476 0001:00269D4F
+   528 0001:00269D60   529 0001:00269D8A   531 0001:00269D94   532 0001:00269D9C
+   534 0001:00269DB6   535 0001:00269DBF   536 0001:00269DD9   537 0001:00269DFA
+   538 0001:00269E10   548 0001:00269E18   551 0001:00269E2E   553 0001:00269E44
+   554 0001:00269E65   555 0001:00269E7F   538 0001:00269E9A   559 0001:00269EA2
+   560 0001:00269ECF   567 0001:0026A02C   568 0001:0026A032   569 0001:0026A03B
+   571 0001:0026A044   572 0001:0026A04B   574 0001:0026A052   580 0001:0026A058
+   581 0001:0026A05B   582 0001:0026A062   583 0001:0026A07B   585 0001:0026A086
+   586 0001:0026A09D   590 0001:0026A0A0   591 0001:0026A0A3   593 0001:0026A0AC
+   594 0001:0026A0BE   596 0001:0026A0C5   603 0001:0026A0C8   604 0001:0026A0E1
+   606 0001:0026A0F9   607 0001:0026A10E   608 0001:0026A115   609 0001:0026A12E
+   610 0001:0026A139   611 0001:0026A140   613 0001:0026A147   615 0001:0026A14D
+   616 0001:0026A154   617 0001:0026A162   618 0001:0026A172   619 0001:0026A199
+   620 0001:0026A1A7   621 0001:0026A1BC   624 0001:0026A1C3   628 0001:0026A1E8
+   629 0001:0026A1EB   630 0001:0026A208   634 0001:0026A20C   635 0001:0026A215
+   636 0001:0026A21C   642 0001:0026A220   643 0001:0026A22A   644 0001:0026A238
+   645 0001:0026A248   646 0001:0026A256   647 0001:0026A272   648 0001:0026A27E
+   649 0001:0026A294   650 0001:0026A2A0   657 0001:0026A2A8   658 0001:0026A2CC
+   659 0001:0026A2D6   660 0001:0026A2DA   661 0001:0026A2E4   663 0001:0026A324
+   664 0001:0026A32C   665 0001:0026A361   666 0001:0026A36F   667 0001:0026A383
+   668 0001:0026A3C9   670 0001:0026A3CF   671 0001:0026A3EF   673 0001:0026A401
+   675 0001:0026A40B   676 0001:0026A419   677 0001:0026A439   678 0001:0026A452
+   679 0001:0026A46B   681 0001:0026A47D   684 0001:0026A49D   686 0001:0026A4A7
+   688 0001:0026A4B1   689 0001:0026A4D1   690 0001:0026A4EA   691 0001:0026A503
+   692 0001:0026A513   694 0001:0026A525   695 0001:0026A56B   699 0001:0026A571
+   700 0001:0026A581   701 0001:0026A591   702 0001:0026A5A3   704 0001:0026A5B4
+   705 0001:0026A5C0   706 0001:0026A5C4   707 0001:0026A5CE   709 0001:0026A5D8
+   710 0001:0026A60D   712 0001:0026A61E   713 0001:0026A63C   716 0001:0026A65C
+   717 0001:0026A66D   719 0001:0026A6A2   720 0001:0026A6AC   721 0001:0026A6BE
+   722 0001:0026A6CF   723 0001:0026A6E1   724 0001:0026A6F2   726 0001:0026A6F8
+   727 0001:0026A70C   729 0001:0026A720   730 0001:0026A72A   733 0001:0026A780
+   734 0001:0026A783   735 0001:0026A78A   736 0001:0026A7A7   741 0001:0026A7AC
+   743 0001:0026A7B2   744 0001:0026A7B8   746 0001:0026A7C7   747 0001:0026A7E2
+   748 0001:0026A80D   750 0001:0026A81D   753 0001:0026A834   755 0001:0026A837
+   756 0001:0026A844   758 0001:0026A851   759 0001:0026A867   763 0001:0026A86C
+   764 0001:0026A873   768 0001:0026A874   769 0001:0026A877   770 0001:0026A87D
+   773 0001:0026A884   774 0001:0026A887   775 0001:0026A8B6   786 0001:0026A8B8
+   787 0001:0026A8C3   788 0001:0026A8CC   789 0001:0026A8D5   791 0001:0026A8E0
+   794 0001:0026A8FE   793 0001:0026A907   795 0001:0026A912   796 0001:0026A921
+   797 0001:0026A931   798 0001:0026A938   799 0001:0026A940   800 0001:0026A955
+   801 0001:0026A969   803 0001:0026A980   789 0001:0026A981   804 0001:0026A988
+   811 0001:0026A990   812 0001:0026A9AE   813 0001:0026A9C7   814 0001:0026A9D9
+   815 0001:0026A9E8   816 0001:0026AA01   817 0001:0026AA1E   818 0001:0026AA44
+   822 0001:0026AA70   823 0001:0026AA73   824 0001:0026AA7D   834 0001:0026AA84
+   836 0001:0026AAA1   837 0001:0026AAA9   838 0001:0026AAB7   839 0001:0026AAC2
+   841 0001:0026AAD2   842 0001:0026AAD9   843 0001:0026AAE0   845 0001:0026AB01
+   846 0001:0026AB09   847 0001:0026AB10   848 0001:0026AB17   849 0001:0026AB30
+   850 0001:0026AB5E   851 0001:0026AB68   854 0001:0026AB78   855 0001:0026AB85
+   856 0001:0026AB91   858 0001:0026AB96   861 0001:0026ABA2   862 0001:0026ABAF
+   863 0001:0026ABBD   865 0001:0026ABC2   866 0001:0026ABC9   867 0001:0026ABD0
+   869 0001:0026ABDC   871 0001:0026ABFD   872 0001:0026AC0B   873 0001:0026AC24
+   874 0001:0026AC2D   875 0001:0026AC35   876 0001:0026AC46   878 0001:0026AC56
+   879 0001:0026AC63   880 0001:0026AC6F   889 0001:0026AC74   891 0001:0026AC7F
+   892 0001:0026AC82   893 0001:0026AC90   894 0001:0026ACA8   896 0001:0026ACB6
+   897 0001:0026ACBD   901 0001:0026ACC6   902 0001:0026ACCD   904 0001:0026ACCF
+   905 0001:0026ACD8   906 0001:0026ACDF   908 0001:0026ACEA   909 0001:0026ACF1
+   910 0001:0026ACF8   913 0001:0026AD40   914 0001:0026AD56   915 0001:0026AD67
+   916 0001:0026AD77   917 0001:0026AD85   918 0001:0026AD92   919 0001:0026ADA3
+   920 0001:0026ADB0   921 0001:0026ADC1   922 0001:0026ADCE   923 0001:0026ADEF
+   924 0001:0026ADFA   925 0001:0026AE05   933 0001:0026AE28   935 0001:0026AE4B
+   936 0001:0026AE58   937 0001:0026AE5C   938 0001:0026AE60   939 0001:0026AE6D
+   942 0001:0026AE76   944 0001:0026AEA1   945 0001:0026AEB4   947 0001:0026AEBD
+   949 0001:0026AEDB   950 0001:0026AEE9   951 0001:0026AF05   953 0001:0026AF15
+   955 0001:0026AF20   956 0001:0026AF33   957 0001:0026AF46   958 0001:0026AF59
+   959 0001:0026AF7A   960 0001:0026AF83   961 0001:0026AF93   963 0001:0026AF99
+   964 0001:0026AFA7   966 0001:0026AFB5   969 0001:0026AFDD   970 0001:0026AFFB
+   971 0001:0026B019   972 0001:0026B037   973 0001:0026B04B   975 0001:0026B05A
+   976 0001:0026B078   979 0001:0026B087   980 0001:0026B097   984 0001:0026B0A4
+   985 0001:0026B0AE   986 0001:0026B0D4   987 0001:0026B0F2   988 0001:0026B110
+   989 0001:0026B12E   991 0001:0026B142   992 0001:0026B180   993 0001:0026B184
+   989 0001:0026B185   994 0001:0026B188   995 0001:0026B1A6   996 0001:0026B1E3
+   997 0001:0026B1FF   999 0001:0026B212  1001 0001:0026B21B  1003 0001:0026B222
+  1006 0001:0026B228  1008 0001:0026B231  1012 0001:0026B238  1016 0001:0026B251
+  1023 0001:0026B3B8  1025 0001:0026B3DB  1027 0001:0026B3E1  1029 0001:0026B404
+  1030 0001:0026B419  1032 0001:0026B423  1033 0001:0026B440  1034 0001:0026B449
+  1036 0001:0026B49F  1037 0001:0026B4B5  1038 0001:0026B4BE  1039 0001:0026B514
+  1040 0001:0026B52B  1041 0001:0026B548  1043 0001:0026B565  1044 0001:0026B573
+  1046 0001:0026B581  1047 0001:0026B58F  1048 0001:0026B5AE  1049 0001:0026B5B7
+  1050 0001:0026B5F5  1051 0001:0026B626  1052 0001:0026B657  1053 0001:0026B688
+  1054 0001:0026B690  1030 0001:0026B6A6  1058 0001:0026B6B5  1060 0001:0026B6BE
+  1061 0001:0026B6E1  1062 0001:0026B6EE  1065 0001:0026B6FE  1066 0001:0026B71D
+  1067 0001:0026B731  1068 0001:0026B745  1069 0001:0026B764  1071 0001:0026B781
+  1072 0001:0026B78F  1074 0001:0026B79D  1075 0001:0026B7BC  1076 0001:0026B7D4
+  1077 0001:0026B7E8  1078 0001:0026B7FC  1079 0001:0026B81B  1080 0001:0026B83A
+  1082 0001:0026B843  1084 0001:0026B855  1087 0001:0026B872  1088 0001:0026B889
+  1089 0001:0026B89A  1091 0001:0026B915  1096 0001:0026B932  1098 0001:0026B93B
+  1099 0001:0026B950  1101 0001:0026B96A  1105 0001:0026BAC4  1106 0001:0026BAE1
+  1107 0001:0026BB11  1108 0001:0026BB18  1109 0001:0026BB25  1110 0001:0026BB32
+  1111 0001:0026BB3F  1112 0001:0026BB4C  1113 0001:0026BB5C  1114 0001:0026BB70
+  1115 0001:0026BB82  1116 0001:0026BB8D  1117 0001:0026BB9A  1118 0001:0026BBA7
+  1119 0001:0026BBB4  1120 0001:0026BBCC  1121 0001:0026BBD9  1122 0001:0026BBEC
+  1123 0001:0026BBFC  1124 0001:0026BC09  1125 0001:0026BC14  1126 0001:0026BC22
+  1127 0001:0026BC2D  1130 0001:0026BC60  1131 0001:0026BC63  1132 0001:0026BC70
+  1133 0001:0026BC7D  1134 0001:0026BC8A  1135 0001:0026BC97  1136 0001:0026BCA7
+  1137 0001:0026BCBB  1138 0001:0026BCCD  1139 0001:0026BCDA  1140 0001:0026BCE7
+  1141 0001:0026BCF4  1142 0001:0026BD0D  1143 0001:0026BD1A  1144 0001:0026BD2E
+  1145 0001:0026BD41  1146 0001:0026BD51  1147 0001:0026BD5E  1148 0001:0026BD65
+  1151 0001:0026BD7C  1152 0001:0026BD7F  1153 0001:0026BD8F  1154 0001:0026BD9C
+  1155 0001:0026BDA9  1156 0001:0026BDB6  1157 0001:0026BDC3  1158 0001:0026BDD0
+  1159 0001:0026BDDD  1160 0001:0026BDEA  1165 0001:0026BDEC  1166 0001:0026BE0E
+  1167 0001:0026BE15  1169 0001:0026BE1E  1170 0001:0026BE29  1171 0001:0026BE41
+  1173 0001:0026BE74  1174 0001:0026BE77  1175 0001:0026BE79  1170 0001:0026BE7A
+  1176 0001:0026BE7D  1178 0001:0026BE9B  1186 0001:0026BEC4  1187 0001:0026BEF3
+  1188 0001:0026BEFE  1189 0001:0026BF0C  1190 0001:0026BF1B  1191 0001:0026BF23
+  1192 0001:0026BF2E  1193 0001:0026BF42  1195 0001:0026BF5F  1191 0001:0026BF6D
+  1196 0001:0026BF70  1199 0001:0026BF7D  1200 0001:0026BF9B  1201 0001:0026BFB9
+  1202 0001:0026BFD7  1204 0001:0026BFF5  1206 0001:0026C010  1207 0001:0026C028
+  1208 0001:0026C03A  1209 0001:0026C04C  1204 0001:0026C04D  1211 0001:0026C050
+  1217 0001:0026C094  1219 0001:0026C0C4  1220 0001:0026C0C8  1222 0001:0026C0DA
+  1223 0001:0026C0E7  1225 0001:0026C10C  1226 0001:0026C110  1228 0001:0026C112
+  1220 0001:0026C113  1229 0001:0026C116  1233 0001:0026C150  1234 0001:0026C15B
+  1239 0001:0026C15C  1241 0001:0026C177  1242 0001:0026C185  1244 0001:0026C199
+  1245 0001:0026C1C3  1246 0001:0026C1D1  1248 0001:0026C1E0  1250 0001:0026C1EA
+  1251 0001:0026C1FA  1254 0001:0026C20C  1255 0001:0026C21C  1256 0001:0026C230
+  1259 0001:0026C243  1262 0001:0026C255  1263 0001:0026C265  1264 0001:0026C272
+  1266 0001:0026C281  1268 0001:0026C28B  1272 0001:0026C29A  1273 0001:0026C2AD
+  1274 0001:0026C2BA  1278 0001:0026C2C7  1283 0001:0026C2FC  1285 0001:0026C2FF
+  1288 0001:0026C30F  1289 0001:0026C316  1295 0001:0026C321  1300 0001:0026C324
+  1302 0001:0026C340  1303 0001:0026C34F  1304 0001:0026C35D  1305 0001:0026C376
+  1307 0001:0026C392  1309 0001:0026C3A2  1317 0001:0026C3E4  1318 0001:0026C403
+  1319 0001:0026C410  1320 0001:0026C41C  1321 0001:0026C42A  1322 0001:0026C43F
+  1324 0001:0026C44D  1325 0001:0026C454  1326 0001:0026C460  1327 0001:0026C468
+  1329 0001:0026C46F  1334 0001:0026C494  1336 0001:0026C4B0  1337 0001:0026C4B9
+  1338 0001:0026C4D9  1340 0001:0026C4ED  1341 0001:0026C4F2  1354 0001:0026C500
+  1355 0001:0026C506  1356 0001:0026C549  1357 0001:0026C553  1362 0001:0026C588
+  1363 0001:0026C58F  1366 0001:0026C590  1368 0001:0026C593  1370 0001:0026C5A1
+  1371 0001:0026C5A6  1372 0001:0026C5B3  1374 0001:0026C5B5  1376 0001:0026C5C3
+  1378 0001:0026C5CF  1379 0001:0026C5DA  1382 0001:0026C5E9  1384 0001:0026C5FF
+  1386 0001:0026C60B  1387 0001:0026C616  1389 0001:0026C623  1391 0001:0026C62C
+  1396 0001:0026C630  1398 0001:0026C64E  1399 0001:0026C654  1401 0001:0026C65E
+  1402 0001:0026C697  1403 0001:0026C6B0  1405 0001:0026C6C7  1406 0001:0026C6EA
+  1407 0001:0026C6F9  1412 0001:0026C758  1419 0001:0026C75C  1420 0001:0026C763
+  1425 0001:0026C764  1426 0001:0026C76B  1430 0001:0026C76C  1437 0001:0026C770
+  1438 0001:0026C78D  1441 0001:0026C7A1  1442 0001:0026C7BA  1443 0001:0026C7CF
+  1444 0001:0026C7E2  1445 0001:0026C7EC  1446 0001:0026C7FF  1447 0001:0026C83D
+  1448 0001:0026C860  1449 0001:0026C873  1450 0001:0026C896  1453 0001:0026C8C0
+  1460 0001:0026C8F4  1461 0001:0026C920  1462 0001:0026C927  1463 0001:0026C946
+  1465 0001:0026C9BA  1466 0001:0026C9C0  1467 0001:0026C9C2  1462 0001:0026C9C5
+  1468 0001:0026C9CE  1469 0001:0026CA04  1470 0001:0026CA28  1471 0001:0026CA4C
+  1472 0001:0026CA5B  1473 0001:0026CA93  1474 0001:0026CA9B  1475 0001:0026CAAA
+  1476 0001:0026CABD  1477 0001:0026CAC9  1478 0001:0026CAF8  1479 0001:0026CB05
+  1482 0001:0026CB8D  1484 0001:0026CBD8  1485 0001:0026CBF0  1491 0001:0026CC54
+  1492 0001:0026CC80  1493 0001:0026CC88  1494 0001:0026CCA1  1496 0001:0026CCC3
+  1498 0001:0026CD44  1499 0001:0026CD6B  1501 0001:0026CD6D  1494 0001:0026CD70
+  1502 0001:0026CD79  1517 0001:0026CDC0  1518 0001:0026CDF4  1519 0001:0026CDFB
+  1520 0001:0026CE1A  1519 0001:0026CE94  1521 0001:0026CE99  1523 0001:0026CEDD
+  1524 0001:0026CF13  1525 0001:0026CF21  1527 0001:0026CF5D  1532 0001:0026CFA4
+  1533 0001:0026CFC6  1534 0001:0026CFCD  1535 0001:0026CFEC  1534 0001:0026D066
+  1536 0001:0026D06B  1537 0001:0026D07F  1539 0001:0026D0A8  1540 0001:0026D0D5
+  1541 0001:0026D0DD  1543 0001:0026D0ED  1544 0001:0026D0EF  1546 0001:0026D10B
+  1547 0001:0026D12C  1548 0001:0026D134  1549 0001:0026D147  1550 0001:0026D195
+  1551 0001:0026D199  1544 0001:0026D19C  1553 0001:0026D1A5  1557 0001:0026D1BA
+  1558 0001:0026D1C9  1559 0001:0026D1D7  1560 0001:0026D1E9  1561 0001:0026D23C
+  1562 0001:0026D240  1564 0001:0026D262  1565 0001:0026D289  1566 0001:0026D28B
+  1567 0001:0026D2D0  1568 0001:0026D2FD  1569 0001:0026D341  1571 0001:0026D35D
+  1572 0001:0026D384  1573 0001:0026D396  1575 0001:0026D39C  1578 0001:0026D3BE
+  1579 0001:0026D3E9  1580 0001:0026D404  1581 0001:0026D410  1582 0001:0026D44E
+  1583 0001:0026D465  1585 0001:0026D467  1587 0001:0026D46D  1588 0001:0026D482
+  1587 0001:0026D498  1589 0001:0026D49B  1591 0001:0026D4B9  1592 0001:0026D4CC
+  1594 0001:0026D512  1596 0001:0026D516  1597 0001:0026D520  1599 0001:0026D522
+  1569 0001:0026D525  1600 0001:0026D52E  1562 0001:0026D531  1601 0001:0026D53A
+  1603 0001:0026D54A  1605 0001:0026D57B  1606 0001:0026D58D  1608 0001:0026D5A9
+  1610 0001:0026D5F5  1611 0001:0026D61C  1613 0001:0026D661  1606 0001:0026D664
+  1617 0001:0026D67A  1620 0001:0026D68A  1626 0001:0026D6E4  1628 0001:0026D707
+  1629 0001:0026D711  1630 0001:0026D71E  1631 0001:0026D72E  1632 0001:0026D736
+  1633 0001:0026D73E  1634 0001:0026D746  1635 0001:0026D74D  1636 0001:0026D758
+  1637 0001:0026D79F  1638 0001:0026D7D0  1639 0001:0026D7DE  1642 0001:0026D7F2
+  1645 0001:0026D82D  1646 0001:0026D83B  1647 0001:0026D84E  1648 0001:0026D86A
+  1649 0001:0026D883  1650 0001:0026D88D  1651 0001:0026D8A7  1653 0001:0026D8B0
+  1655 0001:0026D8D2  1656 0001:0026D8F0  1657 0001:0026D8FB  1661 0001:0026D91E
+  1662 0001:0026D94E  1663 0001:0026D97C  1664 0001:0026D9AA  1666 0001:0026D9BD
+  1667 0001:0026D9DF  1669 0001:0026D9FC  1671 0001:0026DA0C  1672 0001:0026DA1F
+  1674 0001:0026DA4C  1675 0001:0026DA5F  1676 0001:0026DA82  1677 0001:0026DAAB
+  1678 0001:0026DADD  1679 0001:0026DAF8  1682 0001:0026DB28  1683 0001:0026DB2F
+  1684 0001:0026DB5D  1686 0001:0026DB8E  1687 0001:0026DBB2  1689 0001:0026DBFB
+  1690 0001:0026DC0E  1693 0001:0026DC2C  1695 0001:0026DC35  1698 0001:0026DC7A
+  1700 0001:0026DCA2  1701 0001:0026DCBE  1735 0001:0026DE48  1737 0001:0026DE4B
+  1738 0001:0026DE54  1739 0001:0026DE5B  1740 0001:0026DE62  1759 0001:0026DE64
+  1760 0001:0026DE80  1761 0001:0026DE9E  1762 0001:0026DEC2  1763 0001:0026DF10
+  1764 0001:0026DF33  1767 0001:0026DF84  1768 0001:0026DFA0  1769 0001:0026DFA7
+  1770 0001:0026DFB3  1771 0001:0026DFE4  1772 0001:0026E01D  1773 0001:0026E06D
+  1774 0001:0026E090  1776 0001:0026E0F4  1777 0001:0026E123  1778 0001:0026E12A
+  1780 0001:0026E132  1781 0001:0026E1F4  1782 0001:0026E1FD  1783 0001:0026E240
+  1784 0001:0026E259  1785 0001:0026E262  1786 0001:0026E2AB  1787 0001:0026E2C4
+  1788 0001:0026E2CD  1789 0001:0026E307  1790 0001:0026E310  1791 0001:0026E35D
+  1792 0001:0026E366  1793 0001:0026E3A0  1794 0001:0026E3A9  1795 0001:0026E3E3
+  1796 0001:0026E3EC  1797 0001:0026E439  1798 0001:0026E442  1800 0001:0026E4E6
+  1801 0001:0026E4EF  1802 0001:0026E529  1803 0001:0026E532  1804 0001:0026E568
+  1805 0001:0026E576  1806 0001:0026E57F  1807 0001:0026E5B9  1808 0001:0026E5C2
+  1810 0001:0026E5FC  1813 0001:0026E615  1815 0001:0026E62E  1816 0001:0026E637
+  1817 0001:0026E671  1819 0001:0026E67A  1820 0001:0026E6AB  1821 0001:0026E6DF
+  1822 0001:0026E6E4  1823 0001:0026E701  1826 0001:0026E712  1828 0001:0026E727
+  1830 0001:0026E74A  1831 0001:0026E753  1832 0001:0026E76A  1834 0001:0026E77E
+  1835 0001:0026E7B0  1836 0001:0026E7BA  1831 0001:0026E7BB  1840 0001:0026E7C0
+  1845 0001:0026E85C  1846 0001:0026E879  1847 0001:0026E8EC  1849 0001:0026E907
+  1850 0001:0026E91D  1853 0001:0026E960  1854 0001:0026E976  1856 0001:0026E98E
+  1857 0001:0026E9A9  1858 0001:0026E9C1  1859 0001:0026E9D9  1860 0001:0026E9F1
+  1861 0001:0026EA09  1862 0001:0026EA21  1864 0001:0026EA37  1871 0001:0026EB00
+  1872 0001:0026EB24  1873 0001:0026EB37  1880 0001:0026EB41  1882 0001:0026EB52
+  1883 0001:0026EB61  1884 0001:0026EB75  1886 0001:0026EB85  1887 0001:0026EB9B
+  1888 0001:0026EBAF  1890 0001:0026EBCD  1892 0001:0026EBE0  1893 0001:0026EBED
+  1894 0001:0026EC15  1895 0001:0026EC1E  1896 0001:0026EC4B  1897 0001:0026EC78
+  1899 0001:0026EC96  1900 0001:0026ECA4  1902 0001:0026ECC2  1903 0001:0026ECCF
+  1906 0001:0026EDB0  1907 0001:0026EDB6  1908 0001:0026EDC3  1909 0001:0026EDC7
+  1910 0001:0026EDD7  1911 0001:0026EDE0  1923 0001:0026EDE4  1925 0001:0026EE07
+  1926 0001:0026EE14  1927 0001:0026EE1D  1928 0001:0026EE27  1930 0001:0026EE2E
+  1931 0001:0026EE36  1932 0001:0026EE3E  1934 0001:0026EE46  1935 0001:0026EE5A
+  1937 0001:0026EE62  1939 0001:0026EE74  1940 0001:0026EE8C  1942 0001:0026EE9E
+  1943 0001:0026EEB6  1944 0001:0026EEC8  1946 0001:0026EED8  1947 0001:0026EEEF
+  1950 0001:0026EF11  1951 0001:0026EF2E  1952 0001:0026EF40  1953 0001:0026EF58
+  1954 0001:0026EF6A  1955 0001:0026EF82  1956 0001:0026EF94  1957 0001:0026EFAC
+  1958 0001:0026EFBE  1959 0001:0026EFD6  1935 0001:0026EFEA  1962 0001:0026EFF2
+  1964 0001:0026EFF9  1963 0001:0026EFFA  1965 0001:0026F016  1966 0001:0026F03F
+  1968 0001:0026F04E  1969 0001:0026F055  1971 0001:0026F092  1972 0001:0026F0BA
+  1966 0001:0026F0BB  1973 0001:0026F0C0  1974 0001:0026F0CB  1975 0001:0026F0EC
+  1976 0001:0026F10D  1978 0001:0026F11A  1979 0001:0026F125  1981 0001:0026F136
+  1982 0001:0026F15A  1983 0001:0026F166  1985 0001:0026F16D  1986 0001:0026F187
+  1988 0001:0026F1B2  1990 0001:0026F1BB  1993 0001:0026F1C6  1994 0001:0026F1D4
+  1995 0001:0026F1E2  1996 0001:0026F1F0  1997 0001:0026F1F6  1998 0001:0026F1FC
+  1999 0001:0026F211  2000 0001:0026F23E  2001 0001:0026F248  2002 0001:0026F25A
+  2005 0001:0026F2E0  2006 0001:0026F2E6  2007 0001:0026F2F4  2008 0001:0026F2FD
+  2015 0001:0026F300  2016 0001:0026F32B  2017 0001:0026F333  2018 0001:0026F340
+  2019 0001:0026F355  2021 0001:0026F366  2023 0001:0026F379  2024 0001:0026F389
+  2027 0001:0026F39B  2028 0001:0026F3B0  2030 0001:0026F3D0  2032 0001:0026F3F8
+  2034 0001:0026F409  2035 0001:0026F414  2036 0001:0026F416  2039 0001:0026F420
+  2041 0001:0026F42E  2042 0001:0026F43A  2043 0001:0026F449  2044 0001:0026F456
+  2045 0001:0026F474  2046 0001:0026F481  2047 0001:0026F490  2048 0001:0026F49D
+  2049 0001:0026F4BB  2050 0001:0026F4C8  2051 0001:0026F4D7  2052 0001:0026F4E4
+  2053 0001:0026F4F3  2054 0001:0026F500  2055 0001:0026F50F  2056 0001:0026F51C
+  2057 0001:0026F52B  2058 0001:0026F538  2059 0001:0026F547  2060 0001:0026F554
+  2061 0001:0026F563  2062 0001:0026F570  2063 0001:0026F57F  2064 0001:0026F58C
+  2065 0001:0026F59C  2068 0001:0026F5CF  2071 0001:0026F5DF  2077 0001:0026F748
+  2086 0001:0026F766  2088 0001:0026F778  2089 0001:0026F785  2090 0001:0026F7A0
+  2091 0001:0026F7A7  2095 0001:0026F7CE  2097 0001:0026F7FD  2098 0001:0026F826
+  2100 0001:0026F830  2103 0001:0026F841  2104 0001:0026F84A  2108 0001:0026F8A8
+  2110 0001:0026F8B4  2113 0001:0026F8C3  2114 0001:0026F8E8  2118 0001:0026F8EF
+  2120 0001:0026F8F5  2121 0001:0026F902  2123 0001:0026F909  2125 0001:0026F90F
+  2126 0001:0026F91C  2130 0001:0026F921  2133 0001:0026F928  2135 0001:0026F92B
+  2136 0001:0026F934  2137 0001:0026F93D  2142 0001:0026F940  2143 0001:0026F949
+  2144 0001:0026F963  2145 0001:0026F967  2146 0001:0026F96F  2148 0001:0026F978
+  2149 0001:0026F97C  2150 0001:0026F98D  2151 0001:0026F9A5  2152 0001:0026F9BB
+  2153 0001:0026F9BF  2154 0001:0026F9C1  2149 0001:0026F9C2  2156 0001:0026F9C5
+  2161 0001:0026F9D0  2162 0001:0026F9D9  2163 0001:0026F9F3  2164 0001:0026F9F7
+  2165 0001:0026F9FF  2167 0001:0026FA08  2168 0001:0026FA0C  2169 0001:0026FA1D
+  2170 0001:0026FA35  2171 0001:0026FA4B  2172 0001:0026FA4F  2173 0001:0026FA51
+  2168 0001:0026FA52  2175 0001:0026FA55  2179 0001:0026FA60  2180 0001:0026FA6A
+  2181 0001:0026FA71  2183 0001:0026FA79  2186 0001:0026FA7C  2187 0001:0026FA7F
+  2188 0001:0026FA89  2189 0001:0026FA90  2191 0001:0026FA98  2194 0001:0026FA9C
+  2196 0001:0026FA9F  2197 0001:0026FAA8  2198 0001:0026FAB1  2201 0001:0026FAB4
+  2202 0001:0026FAB7  2203 0001:0026FABE  2204 0001:0026FAC5  2205 0001:0026FACC
+  2209 0001:0026FAD0  2211 0001:0026FAD6  2213 0001:0026FAE2  2214 0001:0026FAF0
+  2216 0001:0026FAF5  2219 0001:0026FAFC  2220 0001:0026FAFF  2221 0001:0026FB06
+  2222 0001:0026FB20  2225 0001:0026FB24  2226 0001:0026FB26  2227 0001:0026FB30
+  2232 0001:0026FB34  2233 0001:0026FB51  2234 0001:0026FB68  2235 0001:0026FB85
+  2236 0001:0026FBAB  2242 0001:0026FBD4  2243 0001:0026FBF6  2244 0001:0026FC04
+  2245 0001:0026FC0B  2246 0001:0026FC25  2249 0001:0026FC30  2251 0001:0026FC42
+  2252 0001:0026FC4E  2253 0001:0026FC6D  2249 0001:0026FC6E  2254 0001:0026FC73
+  2256 0001:0026FC7D  2261 0001:0026FCC4  2262 0001:0026FCEF  2263 0001:0026FCF6
+  2264 0001:0026FD00  2266 0001:0026FD22  2267 0001:0026FD4A  2268 0001:0026FDDF
+  2264 0001:0026FDE2  2269 0001:0026FDEB  2274 0001:0026FE18  2275 0001:0026FE1F
+  2279 0001:0026FE20  2281 0001:0026FE27  2285 0001:0026FE8E  2286 0001:0026FEA6
+  2287 0001:0026FEB3  2290 0001:0026FEBC  2291 0001:0026FEBD  2292 0001:0026FED0
+  2294 0001:0026FED5  2295 0001:0026FEDA  2302 0001:0026FEDC  2303 0001:0026FEE6
+  2304 0001:0026FEF4  2305 0001:0026FEFE  2306 0001:0026FF0E  2307 0001:0026FF55
+  2308 0001:0026FF62  2311 0001:0026FF84  2312 0001:0026FFA3  2313 0001:0026FFE4
+  2318 0001:00270028  2319 0001:00270058  2320 0001:0027005D  2321 0001:0027005F
+  2322 0001:00270069  2323 0001:0027008B  2324 0001:0027011A  2322 0001:00270120
+  2325 0001:00270129  2326 0001:00270130  2329 0001:00270164  2330 0001:0027016A
+  2332 0001:00270179  2333 0001:00270186  2334 0001:00270193  2335 0001:002701B7
+  2336 0001:002701C8  2337 0001:002701E2  2339 0001:002701EB  2340 0001:00270205
+  2344 0001:0027020F  2345 0001:0027021C  2346 0001:00270229  2349 0001:00270232
+  2352 0001:00270239
+
+Line numbers for fODMedNVA(Orders\fODMedNVA.pas) segment .itext
+
+  2354 0002:00001678
+
+Line numbers for fOMHTML(Orders\fOMHTML.pas) segment .text
+
+    84 0001:00270618    85 0001:00270630    86 0001:00270642    87 0001:00270654
+    90 0001:00270674    91 0001:00270685    92 0001:00270690    93 0001:0027069B
+    94 0001:002706A9   112 0001:002706BC   113 0001:002706C8   114 0001:002706E5
+   115 0001:002706FA   122 0001:00270730   123 0001:00270758   124 0001:00270766
+   125 0001:0027077E   126 0001:00270796   128 0001:002707AE   129 0001:002707BA
+   130 0001:00270802   126 0001:00270805   131 0001:0027080A   132 0001:0027080F
+   133 0001:00270824   141 0001:00270868   142 0001:0027088E   143 0001:0027089C
+   144 0001:002708B4   145 0001:002708CC   146 0001:002708DB   148 0001:002708F7
+   149 0001:002708FF   150 0001:00270970   151 0001:0027097C   153 0001:002709BE
+   155 0001:00270A37   156 0001:00270A4F   155 0001:00270AB4   158 0001:00270AB9
+   146 0001:00270ABC   159 0001:00270AC5   160 0001:00270ACA   161 0001:00270AD2
+   162 0001:00270AE7   167 0001:00270B7C   168 0001:00270BAF   169 0001:00270BC5
+   174 0001:00270BF0   175 0001:00270BFC   176 0001:00270C03   177 0001:00270C1F
+   179 0001:00270C3D   180 0001:00270C43   181 0001:00270C45   176 0001:00270C48
+   182 0001:00270C4D   189 0001:00270C54   190 0001:00270C80   191 0001:00270C84
+   192 0001:00270CA1   194 0001:00270CCA   195 0001:00270D22   196 0001:00270D48
+   197 0001:00270D58   198 0001:00270DBA   199 0001:00270DBE   200 0001:00270DC4
+   192 0001:00270DC7   201 0001:00270DD0   206 0001:00270E78   207 0001:00270E81
+   208 0001:00270E90   209 0001:00270EA4   210 0001:00270EBE   223 0001:00270EC4
+   224 0001:00270EE5   225 0001:00270EF5   226 0001:00270F15   227 0001:00270F2F
+   228 0001:00270F3A   229 0001:00270F45   231 0001:00270F5F   232 0001:00270F7C
+   234 0001:00270FA5   235 0001:00270FFD   236 0001:00271005   237 0001:0027100D
+   239 0001:00271037   240 0001:00271047   242 0001:00271071   244 0001:00271091
+   245 0001:002710CD   247 0001:00271111   249 0001:00271159   251 0001:00271189
+   253 0001:002711A9   254 0001:00271211   256 0001:0027125B   258 0001:002712C3
+   260 0001:00271347   261 0001:002713AA   264 0001:002713B5   266 0001:002713E1
+   267 0001:002713F1   269 0001:00271419   271 0001:00271449   272 0001:00271459
+   273 0001:00271481   274 0001:002714AF   276 0001:002714C8   277 0001:002714E5
+   279 0001:002714FF   281 0001:0027151C   283 0001:00271548   284 0001:00271558
+   285 0001:002715BB   287 0001:002715C6   288 0001:002715F1   289 0001:0027161C
+   232 0001:0027161F   290 0001:00271628   307 0001:00271898   308 0001:002718BE
+   309 0001:002718C6   311 0001:002718E4   313 0001:00271918   314 0001:0027193F
+   316 0001:00271941   309 0001:00271944   317 0001:00271949   319 0001:00271970
+   320 0001:00271991   321 0001:002719AB   322 0001:002719BE   323 0001:002719DB
+   325 0001:00271A04   326 0001:00271A5C   328 0001:00271A86   329 0001:00271A96
+   330 0001:00271ABC   331 0001:00271B11   332 0001:00271B37   333 0001:00271BB0
+   334 0001:00271C34   336 0001:00271C98   338 0001:00271CC4   339 0001:00271CD4
+   341 0001:00271CFC   343 0001:00271D2C   344 0001:00271D3C   345 0001:00271D64
+   346 0001:00271D92   348 0001:00271DDC   350 0001:00271E08   351 0001:00271E18
+   353 0001:00271E7C   323 0001:00271E7F   354 0001:00271E88   357 0001:002720AC
+   358 0001:002720CE   359 0001:002720DA   360 0001:00272107   365 0001:00272130
+   366 0001:0027213C   368 0001:00272146   369 0001:0027215B   370 0001:00272170
+   371 0001:00272185   372 0001:00272192   373 0001:0027219F   376 0001:002721A4
+   378 0001:002721B3   379 0001:002721BB   380 0001:002721DF   381 0001:00272204
+   386 0001:00272208   387 0001:00272214   388 0001:00272248   389 0001:0027224D
+   390 0001:0027225B   391 0001:00272269   392 0001:00272274   400 0001:00272278
+   402 0001:0027229E   403 0001:002722BE   404 0001:002722E9   405 0001:002722F9
+   406 0001:00272310   407 0001:00272330   408 0001:0027234A   409 0001:00272368
+   423 0001:002723A8   425 0001:002723B7   427 0001:002723BF   435 0001:002723C8
+   437 0001:002723E8   439 0001:002723F0   441 0001:0027240C   442 0001:00272420
+   444 0001:0027243B   445 0001:0027245D   442 0001:00272460   446 0001:00272465
+   439 0001:00272468   447 0001:0027246D   450 0001:00272484   451 0001:0027248C
+   454 0001:002724B0   456 0001:002724BC   457 0001:002724C4   462 0001:002724C8
+   464 0001:002724EB   466 0001:00272500   467 0001:0027251F   468 0001:00272541
+   469 0001:00272560   470 0001:00272583   472 0001:0027259F   479 0001:002725CC
+   481 0001:002725EF   482 0001:002725F7   484 0001:00272606   486 0001:00272622
+   487 0001:00272636   489 0001:00272651   490 0001:0027266D   487 0001:00272670
+   491 0001:00272675   484 0001:00272678   492 0001:0027267D   493 0001:00272688
+   494 0001:002726A2   495 0001:002726AA   497 0001:0027271E
+
+Line numbers for fOMSet(Orders\fOMSet.pas) segment .text
+
+    62 0001:00272994    63 0001:002729C7    64 0001:002729DB    75 0001:00272A08
+    76 0001:00272A36    77 0001:00272A4B    79 0001:00272A62    80 0001:00272A70
+    81 0001:00272A9D    82 0001:00272ACD    83 0001:00272AF8    85 0001:00272B23
+    87 0001:00272B30    88 0001:00272B36    90 0001:00272B3C    91 0001:00272B53
+    96 0001:00272BA1    97 0001:00272BAB    98 0001:00272BB3   100 0001:00272BB5
+   101 0001:00272BF0   102 0001:00272BF3    77 0001:00272BF4   103 0001:00272BFD
+   104 0001:00272C05   105 0001:00272C0D   113 0001:00272CD0   114 0001:00272CD4
+   115 0001:00272CF8   116 0001:00272D03   118 0001:00272D08   119 0001:00272D28
+   121 0001:00272D32   122 0001:00272D42   124 0001:00272D4C   127 0001:00272D79
+   128 0001:00272D83   129 0001:00272D8E   130 0001:00272DA3   131 0001:00272DB0
+   134 0001:00272DBB   136 0001:00272DC4   138 0001:00272DE0   139 0001:00272DE8
+   141 0001:00272DED   142 0001:00272E04   143 0001:00272E1D   144 0001:00272E60
+   146 0001:00272E8A   147 0001:00272EC4   148 0001:00272EE7   150 0001:00272EF3
+   152 0001:00272F27   154 0001:00272F37   155 0001:00272F71   156 0001:00272F94
+   159 0001:00272FA0   160 0001:00272FCE   163 0001:00272FDC   164 0001:00273016
+   166 0001:00273039   169 0001:00273045   170 0001:0027305D   172 0001:0027308E
+   173 0001:002730C8   174 0001:002730E8   178 0001:002730F1   179 0001:0027311C
+   183 0001:00273123   184 0001:0027312D   187 0001:002731A0   190 0001:002731A6
+   191 0001:002731B9   192 0001:002731EF   193 0001:002731F8   194 0001:002731FF
+   201 0001:00273204   202 0001:0027320A   203 0001:0027320D   204 0001:0027321C
+   205 0001:00273231   206 0001:0027323D   208 0001:00273251   209 0001:0027325B
+   210 0001:002732A2   212 0001:002732B6   219 0001:002732D0   222 0001:002732E2
+   223 0001:002732E3   217 0001:002732F3   226 0001:0027330B   227 0001:00273320
+   231 0001:00273328   232 0001:00273330   233 0001:00273337   234 0001:0027333E
+   235 0001:00273347   236 0001:0027334E   237 0001:00273355   242 0001:00273358
+   243 0001:0027335B   244 0001:0027338C   245 0001:00273391   249 0001:00273398
+   250 0001:0027339F   251 0001:002733A8   252 0001:002733AD   253 0001:002733D3
+   254 0001:002733EC   261 0001:0027344C   263 0001:00273456   264 0001:0027345D
+   265 0001:0027346F   267 0001:00273488   268 0001:002734AA   270 0001:002734CF
+   271 0001:002734E4   272 0001:002734FC   273 0001:00273515   268 0001:00273516
+   275 0001:00273519   276 0001:00273520   277 0001:00273528   278 0001:0027352E
+   282 0001:00273534   283 0001:0027353D   285 0001:00273545   286 0001:0027354A
+   293 0001:0027354C   294 0001:0027357E   295 0001:00273582   297 0001:00273596
+   298 0001:002735AA   299 0001:002735B9   300 0001:002735C6   301 0001:002735D6
+   302 0001:002735DC   303 0001:002735E2   305 0001:002735F0   306 0001:00273602
+   308 0001:00273626   309 0001:0027362A   310 0001:0027362C   305 0001:0027362D
+   311 0001:00273630   314 0001:00273674   315 0001:00273679   316 0001:0027367B
+   317 0001:00273691   318 0001:00273693   320 0001:002736DE
+
+Line numbers for fODVitals(Orders\fODVitals.pas) segment .text
+
+    67 0001:00273A60    68 0001:00273A66    69 0001:00273A7A    70 0001:00273A83
+    71 0001:00273A8F    72 0001:00273A99    74 0001:00273AA9    75 0001:00273AB3
+    76 0001:00273AC5    77 0001:00273ACF    78 0001:00273AD6    81 0001:00273B3C
+    82 0001:00273B40    83 0001:00273B47    84 0001:00273B54    86 0001:00273B5A
+    87 0001:00273B6C    89 0001:00273B7E    90 0001:00273B8B    93 0001:00273BBC
+    94 0001:00273BC2    95 0001:00273BCB    97 0001:00273BE2    98 0001:00273BE9
+    99 0001:00273BFD   100 0001:00273C11   101 0001:00273C25   102 0001:00273C39
+   103 0001:00273C4D   104 0001:00273C54   106 0001:00273C5D   113 0001:00273CB8
+   114 0001:00273CBF   115 0001:00273CF0   116 0001:00273D03   118 0001:00273D14
+   119 0001:00273D36   120 0001:00273D40   121 0001:00273D65   122 0001:00273D73
+   123 0001:00273D8F   124 0001:00273D9D   125 0001:00273DB9   126 0001:00273E00
+   128 0001:00273E0C   131 0001:00273EE0   133 0001:00273F01   134 0001:00273F0E
+   135 0001:00273F19   136 0001:00273F70   137 0001:00273FC7   138 0001:0027401E
+   139 0001:00274075   140 0001:002740CC   141 0001:002740E8   146 0001:0027419C
+   147 0001:002741A1   148 0001:002741B5   150 0001:002741E4
+
+Line numbers for fIVRoutes(Orders\fIVRoutes.pas) segment .text
+
+    38 0001:002743F4    39 0001:0027440B    40 0001:0027440D    41 0001:00274426
+    42 0001:00274430    44 0001:0027443A    46 0001:0027444A    47 0001:0027445C
+    49 0001:00274461    50 0001:00274486    52 0001:0027449B    53 0001:002744A2
+    55 0001:002744A4    56 0001:002744AE    60 0001:002744E0    61 0001:002744E3
+    62 0001:002744F6    63 0001:00274500    66 0001:00274504    67 0001:00274507
+    69 0001:0027451A    70 0001:0027452B    72 0001:0027452D    73 0001:00274537
+    78 0001:0027457C    79 0001:00274584    80 0001:00274595    84 0001:00274598
+    85 0001:0027459D    86 0001:002745A4    88 0001:002745D3
+
+Line numbers for fOtherSchedule(Orders\fOtherSchedule.pas) segment .text
+
+   103 0001:00274E24   104 0001:00274E42   105 0001:00274E46   106 0001:00274E54
+   107 0001:00274E5B   108 0001:00274E74   109 0001:00274E7E   110 0001:00274E88
+   112 0001:00274E9C   113 0001:00274EB9   115 0001:00274ED1   116 0001:00274F06
+   117 0001:00274F3B   121 0001:00274F5B   123 0001:00274F6F   124 0001:00274F81
+   126 0001:00274FA1   129 0001:00274FB4   131 0001:00274FC7   138 0001:00275050
+   139 0001:00275067   140 0001:0027506E   141 0001:00275075   142 0001:0027507C
+   143 0001:002750A0   144 0001:002750A5   143 0001:002750B2   145 0001:002750B7
+   146 0001:002750C9   147 0001:002750D4   148 0001:002750DF   149 0001:002750E9
+   150 0001:002750F8   151 0001:00275105   152 0001:00275119   153 0001:0027512A
+   155 0001:00275140   158 0001:002751B0   159 0001:002751B3   161 0001:002751BA
+   162 0001:002751C5   165 0001:002751CC   169 0001:002751D0   170 0001:002751DA
+   173 0001:002751DC   174 0001:002751F2   177 0001:00275270   178 0001:0027527E
+   180 0001:00275280   182 0001:0027529F   183 0001:002752AD   190 0001:002752AF
+   191 0001:002752B9   197 0001:00275354   198 0001:00275375   200 0001:00275382
+   201 0001:00275390   202 0001:002753A0   204 0001:002753C6   206 0001:002753E4
+   207 0001:002753F2   211 0001:00275401   212 0001:00275409   213 0001:00275411
+   214 0001:00275419   216 0001:00275428   218 0001:0027543E   219 0001:0027545F
+   220 0001:00275487   216 0001:00275488   222 0001:0027548D   223 0001:002754B3
+   225 0001:002754B8   227 0001:002754CC   228 0001:002754E3   230 0001:002754FF
+   223 0001:00275500   231 0001:00275505   233 0001:00275515   234 0001:00275527
+   235 0001:00275547   236 0001:00275556   238 0001:00275566   240 0001:00275576
+   241 0001:00275588   242 0001:002755A5   243 0001:002755B4   245 0001:002755C4
+   246 0001:002755D2   247 0001:002755E3   254 0001:00275670   255 0001:00275687
+   256 0001:0027568F   258 0001:00275694   260 0001:002756A8   261 0001:002756BF
+   263 0001:002756DB   256 0001:002756DC   264 0001:002756E1   266 0001:002756F1
+   267 0001:002756FA   269 0001:0027571A   271 0001:0027572A   273 0001:0027573B
+   274 0001:0027574C   280 0001:00275788   281 0001:002757A8   282 0001:002757B0
+   283 0001:002757B8   284 0001:002757C0   285 0001:002757D9   286 0001:002757FC
+   288 0001:00275812   289 0001:00275833   290 0001:0027585B   286 0001:0027585C
+   291 0001:00275861   293 0001:00275866   295 0001:0027587A   296 0001:00275891
+   298 0001:002758AD   291 0001:002758AE   299 0001:002758B3   301 0001:002758C3
+   302 0001:002758D3   304 0001:002758F0   306 0001:00275900   307 0001:0027590E
+   308 0001:0027592C   309 0001:0027593D   312 0001:002759A8   313 0001:002759AB
+   314 0001:002759B2   315 0001:002759BB   316 0001:002759C2   317 0001:002759C9
+   320 0001:002759CC   321 0001:002759CF   322 0001:002759D6   323 0001:002759DF
+   324 0001:002759E6   325 0001:002759ED   328 0001:002759F0   329 0001:002759F3
+   330 0001:002759FA   331 0001:00275A03   332 0001:00275A0A   333 0001:00275A11
+   336 0001:00275A14   337 0001:00275A17   338 0001:00275A1E   339 0001:00275A27
+   340 0001:00275A2E   341 0001:00275A35   344 0001:00275A38   345 0001:00275A3B
+   346 0001:00275A42   347 0001:00275A4B   348 0001:00275A52   349 0001:00275A59
+   352 0001:00275A5C   353 0001:00275A5F   354 0001:00275A66   355 0001:00275A6F
+   356 0001:00275A76   357 0001:00275A7D   360 0001:00275A80   361 0001:00275A83
+   362 0001:00275A8A   363 0001:00275A93   364 0001:00275A9A   365 0001:00275AA1
+   370 0001:00275AA4   371 0001:00275AC5   372 0001:00275AD2   373 0001:00275AE8
+   374 0001:00275B08   375 0001:00275B34   376 0001:00275B54   377 0001:00275B6F
+   379 0001:00275B81   380 0001:00275BA1   382 0001:00275BB7   383 0001:00275BCA
+   384 0001:00275BF5   386 0001:00275C07   388 0001:00275C31   389 0001:00275C51
+   390 0001:00275C6D   391 0001:00275C7B   392 0001:00275C82   393 0001:00275C9A
+   398 0001:00275CF4   399 0001:00275CF8   400 0001:00275D08   401 0001:00275D18
+   402 0001:00275D28   403 0001:00275D38   404 0001:00275D48   405 0001:00275D58
+   406 0001:00275D68   407 0001:00275D79   408 0001:00275D8A   409 0001:00275D98
+   410 0001:00275D9D   409 0001:00275DAA   411 0001:00275DAF   412 0001:00275DBA
+   413 0001:00275DC5   414 0001:00275DD2   415 0001:00275DDD   416 0001:00275DE6
+   417 0001:00275DEF   420 0001:00275DF4   422 0001:00275E0A   423 0001:00275E19
+   425 0001:00275E22   426 0001:00275E33   428 0001:00275E35   429 0001:00275E51
+   430 0001:00275E58   431 0001:00275E65   432 0001:00275E6E   435 0001:00275EE0
+   437 0001:00275EF6   438 0001:00275F0E   439 0001:00275F2C   440 0001:00275F37
+   441 0001:00275F3E   442 0001:00275F4B   443 0001:00275F54   449 0001:00275F78
+   450 0001:00275F95   451 0001:00275F9C   453 0001:00275FAE   454 0001:00275FCE
+   455 0001:00275FFA   456 0001:00276009   458 0001:00276024   460 0001:00276036
+   461 0001:00276056   463 0001:0027606C   464 0001:0027607F   465 0001:002760AA
+   466 0001:002760C6   467 0001:002760CB   468 0001:002760D8   469 0001:002760E6
+   470 0001:002760ED   471 0001:002760F4   472 0001:0027610C   478 0001:00276158
+   479 0001:0027617A   480 0001:00276182   481 0001:0027619A   482 0001:002761B6
+   481 0001:002761D9   483 0001:002761DC   484 0001:002761E7   488 0001:0027622C
+   489 0001:00276236   491 0001:00276244   492 0001:00276249   494 0001:0027625E
+   497 0001:00276269   510 0001:00276270   511 0001:00276292   514 0001:002762A5
+   515 0001:002762BC   516 0001:002762DE   518 0001:002762FD   520 0001:00276355
+   521 0001:0027636B   522 0001:00276379   524 0001:002763A4   526 0001:002763FC
+   527 0001:00276412   528 0001:00276420   530 0001:0027644B   532 0001:002764A3
+   533 0001:002764B9   534 0001:002764C7   536 0001:002764F2   538 0001:0027654A
+   539 0001:00276560   540 0001:0027656E   542 0001:00276599   544 0001:002765F1
+   545 0001:00276607   546 0001:00276615   548 0001:00276640   550 0001:00276698
+   551 0001:002766AE   552 0001:002766BC   554 0001:002766E7   556 0001:0027673F
+   557 0001:00276755   558 0001:00276763   560 0001:0027678B   561 0001:00276794
+   511 0001:00276795   562 0001:0027679E   564 0001:0027687C   566 0001:0027689F
+   567 0001:002768A7   568 0001:002768AF   570 0001:002768D6   571 0001:002768E3
+   572 0001:002768F5   574 0001:002768FA   575 0001:0027690B   576 0001:00276919
+   578 0001:0027693B   579 0001:0027696A   582 0001:0027699B   583 0001:002769CA
+   584 0001:002769CC   585 0001:002769F0   587 0001:00276A0C   588 0001:00276A1A
+   589 0001:00276A1F   588 0001:00276A2F   590 0001:00276A34   591 0001:00276A47
+   593 0001:00276A5B   594 0001:00276A67   595 0001:00276A7A   596 0001:00276A8D
+   597 0001:00276AA0   598 0001:00276AB3   599 0001:00276AC6   600 0001:00276AD9
+   601 0001:00276AEC   604 0001:00276AF5   605 0001:00276B16   608 0001:00276B90
+   610 0001:00276B93   611 0001:00276BB4   614 0001:00276BB8   616 0001:00276BBB
+   617 0001:00276BC2   618 0001:00276BCB   619 0001:00276BD2   620 0001:00276BD9
+   625 0001:00276BDC   626 0001:00276C0C   627 0001:00276C1A   629 0001:00276C1F
+   630 0001:00276C26   632 0001:00276C2B   633 0001:00276C5F   634 0001:00276C70
+   635 0001:00276CA4   636 0001:00276CB5   637 0001:00276CE9   638 0001:00276CFA
+   639 0001:00276D2E   640 0001:00276D3F   641 0001:00276D73   642 0001:00276D84
+   643 0001:00276DB8   644 0001:00276DC6   645 0001:00276DFA   647 0001:00276E08
+   648 0001:00276E0F   651 0001:00276F08   652 0001:00276F0E   653 0001:00276F1B
+   654 0001:00276F28   655 0001:00276F35   658 0001:00276F42   659 0001:00276F54
+   662 0001:00276F58   663 0001:00276F5E   664 0001:00276F6B   665 0001:00276F78
+   666 0001:00276F85   667 0001:00276F92   668 0001:00276F9F   670 0001:00276FA3
+   671 0001:00276FB4   673 0001:00276FC5   677 0001:00276FC8   679 0001:00276FCE
+   680 0001:00276FD5   682 0001:00276FE7   683 0001:00276FEE   687 0001:00276FF4
+   689 0001:00276FFA   691 0001:00277000   692 0001:00277007   694 0001:00277019
+   696 0001:00277020   699 0001:00277028   701 0001:0027702B   702 0001:0027703B
+   703 0001:0027704B   704 0001:0027705B   705 0001:0027706B   706 0001:0027707B
+   707 0001:0027708B   708 0001:0027709B   710 0001:002770CB
+
+Line numbers for fODMedIV(Orders\fODMedIV.pas) segment .text
+
+   190 0001:0027796C   191 0001:00277985   193 0001:00277999   194 0001:002779A2
+   195 0001:002779A9   196 0001:002779B1   198 0001:002779C1   199 0001:002779D0
+   200 0001:002779D7   202 0001:002779D9   203 0001:002779E7   204 0001:002779F3
+   205 0001:002779FD   206 0001:00277A0D   207 0001:00277A17   208 0001:00277A29
+   209 0001:00277A33   214 0001:00277AEC   215 0001:00277AF6   216 0001:00277B1E
+   217 0001:00277B28   218 0001:00277B3C   223 0001:00277B44   224 0001:00277B5E
+   225 0001:00277B65   227 0001:00277B6B   228 0001:00277B94   229 0001:00277BBD
+   231 0001:00277BF0   232 0001:00277C0F   233 0001:00277C1C   234 0001:00277C29
+   235 0001:00277C36   236 0001:00277C44   237 0001:00277C58   238 0001:00277C6C
+   239 0001:00277C80   240 0001:00277CA1   241 0001:00277CC2   242 0001:00277CFE
+   243 0001:00277D3A   244 0001:00277D54   245 0001:00277D6E   247 0001:00277D85
+   248 0001:00277DA0   250 0001:00277DB7   259 0001:00277E18   260 0001:00277E35
+   264 0001:00277E3C   265 0001:00277E59   266 0001:00277E76   268 0001:00277E8D
+   269 0001:00277E9D   270 0001:00277EAB   266 0001:00277EAC   271 0001:00277EB1
+   273 0001:00277EC1   275 0001:00277EC7   276 0001:00277ED9   277 0001:00277EE4
+   278 0001:00277EF6   279 0001:00277F0C   280 0001:00277F22   281 0001:00277F33
+   283 0001:00277F40   285 0001:00277F6F   287 0001:00277F8B   289 0001:00277FBA
+   290 0001:00277FC7   291 0001:00277FD4   293 0001:00277FE9   294 0001:00277FFF
+   296 0001:00278015   297 0001:00278022   298 0001:0027802B   300 0001:00278040
+   301 0001:00278056   302 0001:0027806C   303 0001:00278082   305 0001:00278098
+   306 0001:002780A9   307 0001:002780B6   308 0001:002780D7   309 0001:002780E4
+   310 0001:0027810E   311 0001:0027811B   313 0001:00278128   314 0001:00278138
+   315 0001:00278141   316 0001:0027814E   317 0001:0027815B   318 0001:00278162
+   320 0001:0027816B   321 0001:00278178   322 0001:00278185   323 0001:00278192
+   325 0001:00278199   326 0001:002781A6   327 0001:002781AD   328 0001:002781B5
+   329 0001:002781BD   330 0001:002781C8   331 0001:002781D3   332 0001:002781E0
+   335 0001:002782E0   336 0001:002782E3   341 0001:002782EF   346 0001:00278440
+   348 0001:00278456   349 0001:00278460   350 0001:0027846F   361 0001:002784B0
+   362 0001:002784D2   363 0001:002784DF   364 0001:00278503   366 0001:00278508
+   368 0001:0027851B   369 0001:00278528   371 0001:00278535   373 0001:0027853A
+   374 0001:0027853E   375 0001:00278567   376 0001:00278574   379 0001:002785CB
+   380 0001:002785D8   381 0001:002785E5   382 0001:002785F2   383 0001:002785FF
+   384 0001:0027860C   385 0001:00278619   386 0001:00278672   387 0001:00278691
+   388 0001:002786CD   389 0001:00278734   390 0001:00278770   391 0001:0027877B
+   394 0001:00278780   396 0001:00278793   397 0001:002787A0   398 0001:002787CF
+   399 0001:002787FE   400 0001:00278847   402 0001:00278857   403 0001:00278862
+   405 0001:00278874   406 0001:00278881   408 0001:00278886   409 0001:00278893
+   410 0001:00278898   411 0001:0027889A   413 0001:002788B6   414 0001:002788C6
+   415 0001:002788CA   416 0001:002788DC   417 0001:002788E9   418 0001:002788F3
+   411 0001:002788F6   419 0001:002788FB   420 0001:00278909   421 0001:00278911
+   423 0001:0027892D   424 0001:00278975   426 0001:00278989   429 0001:002789C2
+   430 0001:002789C6   431 0001:002789CF   432 0001:002789D5   433 0001:002789E3
+   435 0001:002789F1   437 0001:002789FB   438 0001:00278A30   439 0001:00278A60
+   441 0001:00278A73   442 0001:00278A80   443 0001:00278AAE   444 0001:00278AB7
+   445 0001:00278AEA   446 0001:00278B1D   449 0001:00278B41   451 0001:00278B4F
+   452 0001:00278B89   453 0001:00278B96   454 0001:00278BD0   455 0001:00278BDD
+   464 0001:00278D64   465 0001:00278D6B   466 0001:00278D9C   467 0001:00278DAF
+   469 0001:00278DC0   470 0001:00278DE5   471 0001:00278DEF   473 0001:00278DF8
+   474 0001:00278DFC   475 0001:00278E0D   474 0001:00278E34   476 0001:00278E37
+   477 0001:00278E8C   478 0001:00278E98   480 0001:00278EAD   481 0001:00278F1A
+   482 0001:00278F44   483 0001:00278F7D   484 0001:00278FA7   486 0001:00278FD1
+   487 0001:00278FF4   489 0001:00278FFE   490 0001:00279011   492 0001:00279017
+   493 0001:0027903E   495 0001:00279043   497 0001:00279065   498 0001:00279095
+   499 0001:0027909A   495 0001:0027909D   502 0001:002790A0   478 0001:002790A1
+   504 0001:002790A8   505 0001:002790D9   506 0001:0027912D   507 0001:00279153
+   508 0001:00279187   509 0001:002791BC   510 0001:002791C8   511 0001:002791EE
+   512 0001:0027922F   513 0001:0027923B   514 0001:0027927C   516 0001:00279288
+   518 0001:00279299   519 0001:002792A5   521 0001:002792AA   523 0001:002792F4
+   525 0001:0027932F   526 0001:0027934E   528 0001:0027935F   529 0001:00279372
+   530 0001:00279385   532 0001:002793CC   534 0001:002793DD   535 0001:002793F0
+   536 0001:00279403   537 0001:0027942C   539 0001:00279457   540 0001:00279490
+   541 0001:0027949C   543 0001:002794AD   545 0001:002794CA   546 0001:002794D6
+   548 0001:002794DB   550 0001:002794FE   552 0001:00279514   553 0001:00279520
+   555 0001:00279525   548 0001:00279526   557 0001:00279529   558 0001:0027957E
+   560 0001:002795B9   562 0001:002795F1   564 0001:0027963B   565 0001:00279672
+   566 0001:002796A9   568 0001:002796C7   569 0001:002796CF   570 0001:002796F0
+   571 0001:00279700   572 0001:00279734   573 0001:00279769   574 0001:0027979F
+   576 0001:002797D3   577 0001:00279807   579 0001:0027983B   581 0001:00279855
+   582 0001:00279868   584 0001:0027986D   585 0001:00279895   587 0001:002798D2
+   588 0001:002798D6   589 0001:002798DB   590 0001:00279903   591 0001:0027994D
+   592 0001:00279953   593 0001:00279980   594 0001:002799D0   596 0001:00279A2C
+   598 0001:00279A51   600 0001:00279A5F   601 0001:00279A98   602 0001:00279AA4
+   604 0001:00279AC7   605 0001:00279AEA   606 0001:00279AF8   607 0001:00279B07
+   609 0001:00279B13   611 0001:00279B22   617 0001:0027A420   618 0001:0027A449
+   619 0001:0027A44B   621 0001:0027A45C   622 0001:0027A469   624 0001:0027A46B
+   625 0001:0027A497   626 0001:0027A4C2   627 0001:0027A4D4   637 0001:0027A5B8
+   638 0001:0027A5DB   639 0001:0027A5E2   640 0001:0027A5E9   642 0001:0027A5F2
+   643 0001:0027A5FF   644 0001:0027A611   646 0001:0027A61B   647 0001:0027A62D
+   649 0001:0027A635   650 0001:0027A649   651 0001:0027A657   652 0001:0027A664
+   654 0001:0027A66D   656 0001:0027A67B   657 0001:0027A68C   658 0001:0027A699
+   659 0001:0027A6A0   663 0001:0027A6A5   665 0001:0027A6B8   666 0001:0027A6C9
+   667 0001:0027A6D6   668 0001:0027A6DD   671 0001:0027A6E2   672 0001:0027A6ED
+   673 0001:0027A6F1   674 0001:0027A711   675 0001:0027A72F   676 0001:0027A765
+   678 0001:0027A76E   679 0001:0027A798   680 0001:0027A7AD   681 0001:0027A7C5
+   682 0001:0027A7CB   683 0001:0027A7F1   686 0001:0027A80C   687 0001:0027A81E
+   688 0001:0027A846   644 0001:0027A859   690 0001:0027A863   691 0001:0027A875
+   693 0001:0027A87F   694 0001:0027A891   696 0001:0027A899   697 0001:0027A8AD
+   698 0001:0027A8BB   699 0001:0027A8C8   701 0001:0027A8D1   703 0001:0027A8DF
+   704 0001:0027A8F0   705 0001:0027A8FD   706 0001:0027A904   710 0001:0027A909
+   712 0001:0027A91C   713 0001:0027A92D   714 0001:0027A93A   715 0001:0027A941
+   718 0001:0027A946   719 0001:0027A951   720 0001:0027A955   721 0001:0027A975
+   722 0001:0027A993   723 0001:0027A9C9   725 0001:0027A9D2   726 0001:0027A9FC
+   727 0001:0027AA11   728 0001:0027AA29   729 0001:0027AA2F   730 0001:0027AA55
+   733 0001:0027AA70   734 0001:0027AA82   735 0001:0027AAAA   736 0001:0027AABC
+   737 0001:0027AAE4   691 0001:0027AAF7   739 0001:0027AB01   740 0001:0027AB16
+   741 0001:0027AB32   742 0001:0027AB39   743 0001:0027AB4D   745 0001:0027AB55
+   746 0001:0027AB60   748 0001:0027AB6A   749 0001:0027AB81   751 0001:0027AB9A
+   752 0001:0027ABA5   754 0001:0027ABAF   755 0001:0027ABBE   756 0001:0027ABC6
+   757 0001:0027ABCD   759 0001:0027ABE0   761 0001:0027AC0D   762 0001:0027AC10
+   764 0001:0027AC12   757 0001:0027AC13   765 0001:0027AC18   767 0001:0027AC1E
+   768 0001:0027AC40   769 0001:0027AC57   771 0001:0027AC6B   781 0001:0027AC73
+   782 0001:0027ACA8   784 0001:0027ACCF   785 0001:0027ACDF   786 0001:0027ACEC
+   788 0001:0027ACF9   789 0001:0027AD28   790 0001:0027AD35   791 0001:0027AD42
+   792 0001:0027AD4F   793 0001:0027AD57   794 0001:0027AD5F   795 0001:0027AD73
+   796 0001:0027AD82   797 0001:0027AD8F   798 0001:0027ADB0   802 0001:0027ADBD
+   805 0001:0027ADC7   807 0001:0027ADD9   808 0001:0027ADEF   809 0001:0027AE0E
+   811 0001:0027AE28   812 0001:0027AE3F   814 0001:0027AE4E   816 0001:0027AE5C
+   817 0001:0027AE7D   818 0001:0027AE90   823 0001:0027AEB1   824 0001:0027AEC6
+   825 0001:0027AED3   826 0001:0027AED5   828 0001:0027AF0B   829 0001:0027AF72
+   831 0001:0027AF74   833 0001:0027AFAE   834 0001:0027AFBE   836 0001:0027AFCE
+   838 0001:0027B037   840 0001:0027B071   841 0001:0027B081   843 0001:0027B094
+   845 0001:0027B0FD   847 0001:0027B154   848 0001:0027B164   853 0001:0027B179
+   854 0001:0027B186   855 0001:0027B194   856 0001:0027B1A1   857 0001:0027B1BD
+   858 0001:0027B1CA   859 0001:0027B1D7   860 0001:0027B1E8   861 0001:0027B1F5
+   862 0001:0027B202   863 0001:0027B212   864 0001:0027B21F   865 0001:0027B22C
+   866 0001:0027B23D   867 0001:0027B24A   868 0001:0027B257   869 0001:0027B26C
+   870 0001:0027B2CD   872 0001:0027B331   873 0001:0027B346   875 0001:0027B35B
+   876 0001:0027B36D   878 0001:0027B373   879 0001:0027B385   880 0001:0027B389
+   883 0001:0027B393   884 0001:0027B39A   885 0001:0027B3EE   886 0001:0027B3F5
+   887 0001:0027B3FE   890 0001:0027B6EC   891 0001:0027B6F5   892 0001:0027B700
+   893 0001:0027B706   894 0001:0027B713   895 0001:0027B71A   896 0001:0027B733
+   897 0001:0027B769   898 0001:0027B779   901 0001:0027B786   903 0001:0027B78D
+   908 0001:0027B7DC   910 0001:0027B7DF   912 0001:0027B7F3   913 0001:0027B800
+   916 0001:0027B80F   917 0001:0027B81C   920 0001:0027B829   921 0001:0027B835
+   922 0001:0027B83E   923 0001:0027B84A   924 0001:0027B853   932 0001:0027B858
+   934 0001:0027B877   935 0001:0027B87C   936 0001:0027B896   937 0001:0027B8B2
+   940 0001:0027B908   943 0001:0027B90F   945 0001:0027B924   946 0001:0027B932
+   947 0001:0027B93F   948 0001:0027B94C   949 0001:0027B959   950 0001:0027B966
+   951 0001:0027B973   952 0001:0027B983   953 0001:0027B990   954 0001:0027B9A0
+   955 0001:0027B9AD   956 0001:0027B9BD   957 0001:0027B9CA   962 0001:0027B9E5
+   963 0001:0027B9F2   964 0001:0027BA00   965 0001:0027BA0D   966 0001:0027BA1A
+   967 0001:0027BA2A   968 0001:0027BA37   969 0001:0027BA4D   970 0001:0027BA5A
+   971 0001:0027BA6A   972 0001:0027BA7B   973 0001:0027BA88   974 0001:0027BA95
+   975 0001:0027BAA2   976 0001:0027BAAB   978 0001:0027BACC   979 0001:0027BAD9
+   980 0001:0027BAE2   995 0001:0027BB3C   997 0001:0027BB56   999 0001:0027BB6C
+  1001 0001:0027BB79  1002 0001:0027BB87  1005 0001:0027BB97  1007 0001:0027BBD6
+  1008 0001:0027BBE6  1013 0001:0027BBE8  1015 0001:0027BC00  1016 0001:0027BC10
+  1020 0001:0027BC12  1021 0001:0027BC1B  1026 0001:0027BE58  1027 0001:0027BE5F
+  1034 0001:0027BE60  1036 0001:0027BE85  1039 0001:0027BEB3  1041 0001:0027BEC6
+  1043 0001:0027BED9  1044 0001:0027BEED  1046 0001:0027BF01  1047 0001:0027BF13
+  1039 0001:0027BF14  1048 0001:0027BF17  1049 0001:0027BF24  1050 0001:0027BF2E
+  1051 0001:0027BF5C  1052 0001:0027BF63  1053 0001:0027BF71  1055 0001:0027BF76
+  1056 0001:0027BF96  1057 0001:0027BFA3  1059 0001:0027BFAC  1061 0001:0027BFC2
+  1062 0001:0027BFD3  1063 0001:0027BFE0  1067 0001:0027BFE5  1069 0001:0027C000
+  1070 0001:0027C011  1071 0001:0027C01E  1074 0001:0027C023  1075 0001:0027C053
+  1076 0001:0027C068  1077 0001:0027C077  1078 0001:0027C088  1079 0001:0027C0C6
+  1080 0001:0027C0CD  1081 0001:0027C0F0  1082 0001:0027C111  1083 0001:0027C13E
+  1084 0001:0027C14C  1086 0001:0027C152  1087 0001:0027C174  1088 0001:0027C188
+  1089 0001:0027C19F  1090 0001:0027C1C4  1091 0001:0027C1DE  1092 0001:0027C1EC
+  1093 0001:0027C22F  1095 0001:0027C238  1096 0001:0027C24B  1099 0001:0027C254
+  1100 0001:0027C260  1101 0001:0027C267  1102 0001:0027C26E  1104 0001:0027C278
+  1107 0001:0027C338  1109 0001:0027C353  1110 0001:0027C35C  1112 0001:0027C3B4
+  1113 0001:0027C3BD  1121 0001:0027C3E8  1123 0001:0027C407  1124 0001:0027C40C
+  1125 0001:0027C426  1126 0001:0027C442  1129 0001:0027C498  1131 0001:0027C49F
+  1133 0001:0027C4BC  1134 0001:0027C4C9  1136 0001:0027C4DD  1137 0001:0027C50B
+  1138 0001:0027C514  1141 0001:0027C518  1143 0001:0027C51B  1144 0001:0027C52F
+  1148 0001:0027C534  1150 0001:0027C53B  1152 0001:0027C558  1153 0001:0027C565
+  1155 0001:0027C579  1156 0001:0027C5A7  1157 0001:0027C5B0  1160 0001:0027C5B4
+  1162 0001:0027C5B7  1163 0001:0027C5CB  1168 0001:0027C5D0  1169 0001:0027C5D5
+  1172 0001:0027C5D8  1174 0001:0027C5EE  1176 0001:0027C602  1177 0001:0027C613
+  1179 0001:0027C621  1182 0001:0027C688  1184 0001:0027C68F  1185 0001:0027C6C3
+  1186 0001:0027C6CC  1192 0001:0027C6E0  1194 0001:0027C6FC  1195 0001:0027C714
+  1197 0001:0027C71D  1199 0001:0027C730  1200 0001:0027C73A  1202 0001:0027C74D
+  1203 0001:0027C776  1205 0001:0027C77B  1207 0001:0027C791  1211 0001:0027C7A9
+  1212 0001:0027C7BD  1214 0001:0027C7E6  1218 0001:0027C7F5  1219 0001:0027C803
+  1222 0001:0027C811  1232 0001:0027C84C  1238 0001:0027C850  1240 0001:0027C872
+  1241 0001:0027C892  1242 0001:0027C89F  1244 0001:0027C8A8  1246 0001:0027C8BE
+  1247 0001:0027C8CF  1248 0001:0027C8DC  1252 0001:0027C8E1  1254 0001:0027C8FC
+  1255 0001:0027C90D  1256 0001:0027C91A  1259 0001:0027C91F  1260 0001:0027C94F
+  1261 0001:0027C964  1262 0001:0027C973  1263 0001:0027C984  1264 0001:0027C9C2
+  1265 0001:0027C9C9  1266 0001:0027C9D1  1267 0001:0027C9F2  1268 0001:0027C9FD
+  1269 0001:0027CA0B  1271 0001:0027CA11  1272 0001:0027CA33  1273 0001:0027CA47
+  1274 0001:0027CA5E  1275 0001:0027CA78  1276 0001:0027CA86  1278 0001:0027CA92
+  1279 0001:0027CA9E  1280 0001:0027CAA5  1281 0001:0027CAAC  1283 0001:0027CAB6
+  1286 0001:0027CB48  1288 0001:0027CB4B  1289 0001:0027CB6D  1290 0001:0027CB76
+  1295 0001:0027CB78  1296 0001:0027CB7B  1297 0001:0027CB8C  1298 0001:0027CB99
+  1299 0001:0027CBA6  1300 0001:0027CBB3  1301 0001:0027CBC0  1302 0001:0027CBD1
+  1303 0001:0027CBDE  1304 0001:0027CBEB  1305 0001:0027CBF2  1306 0001:0027CBFF
+  1307 0001:0027CC1F  1316 0001:0027CC24  1319 0001:0027CC2F  1320 0001:0027CC58
+  1322 0001:0027CC90  1323 0001:0027CC97  1324 0001:0027CC9E  1325 0001:0027CCA8
+  1326 0001:0027CCB9  1328 0001:0027CCC2  1330 0001:0027CCCC  1331 0001:0027CCEC
+  1332 0001:0027CD06  1334 0001:0027CD24  1336 0001:0027CD67  1337 0001:0027CD80
+  1338 0001:0027CDCA  1339 0001:0027CDEE  1342 0001:0027CDF7  1344 0001:0027CE3A
+  1345 0001:0027CE53  1346 0001:0027CE9D  1347 0001:0027CEC1  1350 0001:0027CECA
+  1352 0001:0027CEE4  1353 0001:0027CF08  1354 0001:0027CF2C  1356 0001:0027CF35
+  1359 0001:0027CF68  1361 0001:0027CF89  1363 0001:0027CF8F  1364 0001:0027CF96
+  1366 0001:0027CFD0  1367 0001:0027CFDA  1370 0001:0027D000  1372 0001:0027D018
+  1374 0001:0027D01E  1375 0001:0027D05B  1376 0001:0027D062  1378 0001:0027D069
+  1381 0001:0027D08C  1383 0001:0027D0AA  1385 0001:0027D0B9  1386 0001:0027D0C6
+  1388 0001:0027D0D7  1389 0001:0027D11F  1390 0001:0027D129  1396 0001:0027D154
+  1398 0001:0027D174  1400 0001:0027D19F  1401 0001:0027D1A9  1403 0001:0027D1CD
+  1404 0001:0027D20C  1405 0001:0027D213  1406 0001:0027D22F  1408 0001:0027D265
+  1409 0001:0027D268  1410 0001:0027D26A  1405 0001:0027D26B  1412 0001:0027D270
+  1417 0001:0027D280  1418 0001:0027D28B  1420 0001:0027D296  1423 0001:0027D2EC
+  1425 0001:0027D302  1429 0001:0027D324  1430 0001:0027D335  1431 0001:0027D342
+  1433 0001:0027D350  1436 0001:0027D424  1438 0001:0027D445  1440 0001:0027D44B
+  1441 0001:0027D452  1443 0001:0027D48C  1444 0001:0027D496  1447 0001:0027D4BC
+  1449 0001:0027D4D4  1451 0001:0027D4DA  1452 0001:0027D517  1453 0001:0027D51E
+  1455 0001:0027D525  1460 0001:0027D548  1462 0001:0027D554  1464 0001:0027D55A
+  1465 0001:0027D568  1466 0001:0027D56C  1467 0001:0027D576  1468 0001:0027D599
+  1469 0001:0027D5C6  1470 0001:0027D5D9  1472 0001:0027D5E7  1473 0001:0027D5EE
+  1476 0001:0027D5FC  1478 0001:0027D603  1479 0001:0027D60D  1493 0001:0027D618
+  1494 0001:0027D61C  1495 0001:0027D61E  1496 0001:0027D64A  1498 0001:0027D650
+  1500 0001:0027D675  1501 0001:0027D682  1503 0001:0027D689  1504 0001:0027D6A0
+  1506 0001:0027D6A4  1507 0001:0027D6AF  1510 0001:0027D6BA  1511 0001:0027D6C5
+  1512 0001:0027D6D3  1513 0001:0027D6DB  1515 0001:0027D6FC  1516 0001:0027D70A
+  1519 0001:0027D712  1521 0001:0027D71C  1522 0001:0027D748  1523 0001:0027D7B2
+  1525 0001:0027D7B5  1527 0001:0027D7BF  1528 0001:0027D7EB  1529 0001:0027D855
+  1530 0001:0027D8BF  1533 0001:0027D8C2  1513 0001:0027D8C3  1534 0001:0027D8CC
+  1535 0001:0027D8DA  1536 0001:0027D8E2  1537 0001:0027D8EA  1539 0001:0027D912
+  1540 0001:0027D92B  1542 0001:0027D94D  1543 0001:0027D997  1545 0001:0027D9F2
+  1547 0001:0027DA14  1548 0001:0027DA6F  1550 0001:0027DACF  1552 0001:0027DAE2
+  1553 0001:0027DB3D  1556 0001:0027DB9A  1557 0001:0027DBA2  1560 0001:0027DBAA
+  1561 0001:0027DBDC  1562 0001:0027DBE9  1563 0001:0027DC1A  1564 0001:0027DC70
+  1565 0001:0027DCA0  1566 0001:0027DCBF  1567 0001:0027DD10  1568 0001:0027DD32
+  1574 0001:0027DD4F  1575 0001:0027DD5C  1577 0001:0027DD63  1578 0001:0027DD8A
+  1579 0001:0027DDA9  1580 0001:0027DDBA  1581 0001:0027DDD1  1583 0001:0027DDEE
+  1585 0001:0027DDFE  1587 0001:0027DE0D  1588 0001:0027DE37  1589 0001:0027DE70
+  1592 0001:0027DE82  1594 0001:0027DEA0  1596 0001:0027DF22  1597 0001:0027DF33
+  1599 0001:0027DFA0  1601 0001:0027DFCC  1602 0001:0027DFF1  1604 0001:0027E024
+  1605 0001:0027E082  1606 0001:0027E0AF  1607 0001:0027E0EE  1608 0001:0027E108
+  1609 0001:0027E129  1610 0001:0027E142  1613 0001:0027E164  1618 0001:0027E538
+  1619 0001:0027E551  1620 0001:0027E559  1621 0001:0027E560  1623 0001:0027E56C
+  1624 0001:0027E57A  1628 0001:0027E589  1630 0001:0027E593  1635 0001:0027E5B8
+  1636 0001:0027E5D5  1637 0001:0027E5DD  1639 0001:0027E5E9  1640 0001:0027E5F7
+  1644 0001:0027E606  1645 0001:0027E616  1646 0001:0027E637  1648 0001:0027E658
+  1652 0001:0027E680  1654 0001:0027E6AA  1655 0001:0027E6B2  1656 0001:0027E6B8
+  1658 0001:0027E6C7  1659 0001:0027E6D8  1660 0001:0027E6E6  1662 0001:0027E715
+  1665 0001:0027E73C  1666 0001:0027E742  1667 0001:0027E74B  1668 0001:0027E754
+  1671 0001:0027E758  1672 0001:0027E75F  1673 0001:0027E76A  1675 0001:0027E76E
+  1676 0001:0027E798  1678 0001:0027E7A5  1679 0001:0027E7B7  1682 0001:0027E7BC
+  1683 0001:0027E7BF  1684 0001:0027E7DD  1685 0001:0027E7FA  1689 0001:0027E7FC
+  1690 0001:0027E80A  1691 0001:0027E81B  1694 0001:0027E827  1695 0001:0027E856
+  1696 0001:0027E85B  1698 0001:0027E868  1703 0001:0027E870  1704 0001:0027E875
+  1708 0001:0027E878  1710 0001:0027E87B  1711 0001:0027E880  1716 0001:0027E884
+  1717 0001:0027E88D  1718 0001:0027E892  1724 0001:0027E894  1725 0001:0027E8A2
+  1730 0001:0027E8A4  1731 0001:0027E8D2  1732 0001:0027E8DA  1733 0001:0027E8E2
+  1734 0001:0027E8EA  1736 0001:0027E8FB  1737 0001:0027E90E  1739 0001:0027E91B
+  1741 0001:0027E94E  1742 0001:0027E961  1744 0001:0027E974  1746 0001:0027E996
+  1747 0001:0027E9A9  1748 0001:0027E9C0  1750 0001:0027E9E9  1752 0001:0027EA03
+  1753 0001:0027EA41  1754 0001:0027EA58  1755 0001:0027EA81  1756 0001:0027EA9F
+  1757 0001:0027EABD  1759 0001:0027EAD9  1761 0001:0027EB01  1762 0001:0027EB0F
+  1763 0001:0027EB34  1764 0001:0027EB41  1765 0001:0027EB4F  1768 0001:0027EB8D
+  1774 0001:0027EC4C  1775 0001:0027EC71  1776 0001:0027EC7F  1778 0001:0027EC8F
+  1779 0001:0027ECA5  1781 0001:0027ECAB  1782 0001:0027ECB9  1785 0001:0027ECBE
+  1787 0001:0027ECD2  1788 0001:0027ECE4  1789 0001:0027ECFB  1792 0001:0027ED05
+  1793 0001:0027ED46  1794 0001:0027ED5A  1795 0001:0027ED7B  1796 0001:0027EDAB
+  1799 0001:0027EDB0  1801 0001:0027EDC5  1802 0001:0027EDF1  1803 0001:0027EE08
+  1806 0001:0027EE12  1807 0001:0027EE53  1808 0001:0027EE67  1809 0001:0027EE88
+  1810 0001:0027EEB8  1811 0001:0027EEC8  1816 0001:0027EECD  1817 0001:0027EEF7
+  1820 0001:0027EF07  1821 0001:0027EF50  1822 0001:0027EF5E  1823 0001:0027EF7B
+  1829 0001:0027EF80  1830 0001:0027EFB4  1831 0001:0027EFC1  1836 0001:0027EFE2
+  1838 0001:0027EFF6  1839 0001:0027F020  1840 0001:0027F037  1842 0001:0027F03D
+  1843 0001:0027F04B  1845 0001:0027F062  1846 0001:0027F079  1851 0001:0027F089
+  1857 0001:0027F0E4  1859 0001:0027F112  1861 0001:0027F151  1862 0001:0027F15F
+  1864 0001:0027F18B  1866 0001:0027F198  1868 0001:0027F1A7  1869 0001:0027F1B5
+  1870 0001:0027F1C5  1871 0001:0027F1D6  1874 0001:0027F1DB  1875 0001:0027F1E9
+  1877 0001:0027F235  1878 0001:0027F243  1879 0001:0027F253  1880 0001:0027F264
+  1883 0001:0027F27D  1885 0001:0027F292  1886 0001:0027F29D  1889 0001:0027F37C
+  1890 0001:0027F39C  1892 0001:0027F3AB  1893 0001:0027F3BC  1894 0001:0027F3C9
+  1895 0001:0027F3D6  1896 0001:0027F3E3  1900 0001:0027F3F2  1901 0001:0027F3FF
+  1902 0001:0027F40C  1904 0001:0027F419  1912 0001:0027F448  1913 0001:0027F46A
+  1914 0001:0027F486  1915 0001:0027F495  1917 0001:0027F4AE  1918 0001:0027F4E6
+  1919 0001:0027F507  1920 0001:0027F51A  1915 0001:0027F51B  1921 0001:0027F520
+  1922 0001:0027F53B  1923 0001:0027F54A  1925 0001:0027F561  1926 0001:0027F572
+  1927 0001:0027F58C  1923 0001:0027F58D  1928 0001:0027F592  1930 0001:0027F5A2
+  1931 0001:0027F5BE  1932 0001:0027F5C0  1933 0001:0027F5D6  1935 0001:0027F5DB
+  1936 0001:0027F5F7  1938 0001:0027F62F  1939 0001:0027F63C  1940 0001:0027F63E
+  1935 0001:0027F63F  1941 0001:0027F644  1943 0001:0027F64B  1945 0001:0027F653
+  1947 0001:0027F65F  1948 0001:0027F699  1950 0001:0027F6A1  1951 0001:0027F6B7
+  1957 0001:0027F708  1959 0001:0027F726  1964 0001:0027F73E  1965 0001:0027F78A
+  1966 0001:0027F798  1967 0001:0027F7A1  1969 0001:0027F7AE  1974 0001:0027F888
+  1976 0001:0027F8A6  1982 0001:0027F8BE  1983 0001:0027F90A  1985 0001:0027F918
+  1986 0001:0027F921  1988 0001:0027F92E  1993 0001:0027F9EC  1994 0001:0027F9F5
+  1995 0001:0027F9FA  1997 0001:0027FA29
+
+Line numbers for fODMeds(Orders\fODMeds.pas) segment .text
+
+   451 0001:00280890   452 0001:002808B2   453 0001:002808C6   454 0001:002808D0
+   455 0001:002808DB   456 0001:002808E8   457 0001:002808F8   458 0001:00280902
+   459 0001:0028090C   460 0001:00280914   462 0001:00280931   463 0001:00280940
+   464 0001:00280948   466 0001:0028094D   467 0001:00280966   468 0001:0028097F
+   469 0001:00280998   470 0001:002809B8   471 0001:002809C2   472 0001:002809CC
+   473 0001:002809D6   474 0001:002809E0   475 0001:00280A01   476 0001:00280A0B
+   477 0001:00280A1F   478 0001:00280A29   479 0001:00280A51   480 0001:00280A66
+   481 0001:00280A7B   482 0001:00280A90   483 0001:00280A9A   484 0001:00280ABE
+   485 0001:00280AE2   486 0001:00280B06   487 0001:00280B19   488 0001:00280B31
+   491 0001:00280B3B   492 0001:00280B58   493 0001:00280B5F   494 0001:00280B7D
+   495 0001:00280B99   496 0001:00280BC8   497 0001:00280BDA   498 0001:00280BE5
+   499 0001:00280BF6   500 0001:00280C25   501 0001:00280C37   503 0001:00280C43
+   507 0001:00280C53   509 0001:00280C5F   510 0001:00280C6E   511 0001:00280C80
+   512 0001:00280C92   513 0001:00280CA4   514 0001:00280CB6   516 0001:00280CD7
+   517 0001:00280CE9   520 0001:00280CFD   521 0001:00280D0C   522 0001:00280D1E
+   523 0001:00280D32   524 0001:00280D46   525 0001:00280D5A   526 0001:00280D6E
+   527 0001:00280D82   531 0001:00280D96   534 0001:00280DA5   535 0001:00280DBB
+   536 0001:00280DD6   537 0001:00280E00   538 0001:00280E0D   540 0001:00280E31
+   541 0001:00280E3B   543 0001:00280E48   544 0001:00280E66   545 0001:00280E79
+   546 0001:00280E90   547 0001:00280EA5   548 0001:00280EBA   549 0001:00280ECD
+   551 0001:00280ED3   552 0001:00280EEA   553 0001:00280F05   556 0001:00280F19
+   557 0001:00280F32   558 0001:00280F39   559 0001:00280F4C   562 0001:00280F5E
+   563 0001:00280F77   564 0001:00280FA0   565 0001:00280FC9   566 0001:00280FD3
+   567 0001:00280FDD   568 0001:00280FE7   569 0001:00280FF1   570 0001:00280FFB
+   571 0001:00281005   572 0001:0028100F   574 0001:00281018   575 0001:00281028
+   576 0001:00281038   577 0001:00281048   579 0001:00281052   582 0001:002812BC
+   584 0001:002812C8   585 0001:002812D6   587 0001:002812E4   588 0001:002812F2
+   589 0001:00281300   590 0001:0028130E   591 0001:00281322   592 0001:0028132D
+   596 0001:00281334   597 0001:00281350   598 0001:00281358   599 0001:0028137C
+   600 0001:00281386   601 0001:0028138E   602 0001:0028139E   603 0001:002813AC
+   604 0001:002813BC   605 0001:002813CC   606 0001:002813DD   607 0001:002813E7
+   608 0001:002813F1   609 0001:00281402   610 0001:0028140F   611 0001:00281419
+   612 0001:00281423   621 0001:00281444   622 0001:00281470   623 0001:0028147E
+   624 0001:0028148A   625 0001:002814A0   626 0001:002814BE   628 0001:002814E0
+   629 0001:0028151E   633 0001:0028152F   635 0001:00281541   636 0001:0028154B
+   640 0001:00281557   641 0001:00281561   643 0001:0028156B   644 0001:00281596
+   645 0001:002815B9   647 0001:002815CD   648 0001:002815D7   649 0001:00281609
+   651 0001:0028164C   658 0001:002816A0   659 0001:002816A8   660 0001:002816B0
+   661 0001:002816B8   662 0001:002816D3   663 0001:002816E3   665 0001:00281702
+   667 0001:00281710   669 0001:0028172F   671 0001:00281752   672 0001:00281771
+   674 0001:0028178E   683 0001:00281799   667 0001:0028179C   687 0001:002817A1
+   689 0001:002817C0   690 0001:002817D3   691 0001:002817FE   692 0001:00281813
+   694 0001:0028181D   695 0001:00281838   696 0001:0028184C   698 0001:0028185D
+   699 0001:00281884   700 0001:00281897   702 0001:002818BE   704 0001:002818CF
+   706 0001:002818E0   707 0001:00281907   708 0001:0028191A   711 0001:00281941
+   712 0001:0028195C   713 0001:00281970   715 0001:00281985   716 0001:002819DD
+   719 0001:002819F2   720 0001:00281A19   721 0001:00281A2C   724 0001:00281A53
+   726 0001:00281A68   728 0001:00281A7D   729 0001:00281AD5   732 0001:00281AEA
+   733 0001:00281B11   734 0001:00281B24   739 0001:00281B4B   740 0001:00281B71
+   741 0001:00281B7B   743 0001:00281BBA   744 0001:00281BDC   745 0001:00281BE6
+   746 0001:00281BF0   748 0001:00281C0D   751 0001:00281C52   753 0001:00281C7C
+   754 0001:00281CBA   755 0001:00281CC5   756 0001:00281CD5   757 0001:00281CE0
+   758 0001:00281CE6   759 0001:00281CF8   760 0001:00281D08   761 0001:00281D1B
+   762 0001:00281D26   764 0001:00281D37   765 0001:00281D42   766 0001:00281D4E
+   767 0001:00281D5E   775 0001:00281E94   776 0001:00281E9D   777 0001:00281EDB
+   778 0001:00281EEF   788 0001:00281F00   791 0001:00281F26   793 0001:00281F52
+   794 0001:00281F7B   796 0001:00281F8A   798 0001:00281FAD   799 0001:00281FBB
+   802 0001:00281FCA   803 0001:00281FF3   805 0001:00282004   807 0001:00282025
+   816 0001:002820C0   817 0001:002820EE   818 0001:00282105   819 0001:0028211C
+   820 0001:00282127   821 0001:00282172   822 0001:002821C8   823 0001:002821D7
+   825 0001:002821F8   826 0001:00282223   828 0001:0028222D   829 0001:0028224D
+   830 0001:00282281   831 0001:002822C2   832 0001:002822EE   833 0001:0028231F
+   834 0001:0028233F   836 0001:00282366   838 0001:0028237B   840 0001:002825C0
+   841 0001:002825E3   842 0001:002825EE   843 0001:002825F9   844 0001:00282614
+   845 0001:00282636   846 0001:00282664   847 0001:0028267C   849 0001:00282686
+   851 0001:002826A4   853 0001:002826CA   854 0001:002826D6   855 0001:002826E8
+   857 0001:002826F9   859 0001:00282736   860 0001:00282742   863 0001:00282753
+   864 0001:0028279D   865 0001:002827BE   847 0001:002827D7   867 0001:002827E1
+   869 0001:002827F3   871 0001:00282823   872 0001:0028282F   876 0001:00282834
+   878 0001:00282849   880 0001:0028286A   881 0001:0028287E   883 0001:0028289D
+   884 0001:002828A9   886 0001:002828AE   888 0001:00282904   889 0001:00282910
+   891 0001:00282915   878 0001:00282918   893 0001:00282921   895 0001:00282931
+   896 0001:0028295F   897 0001:0028297B   899 0001:002829B3   900 0001:002829BF
+   901 0001:002829C4   897 0001:002829C7   902 0001:002829CC   903 0001:002829D9
+   905 0001:002829FA   906 0001:00282A12   908 0001:00282A18   909 0001:00282A2C
+   910 0001:00282A44   906 0001:00282A5D   912 0001:00282A63   913 0001:00282A86
+   915 0001:00282A94   916 0001:00282AA9   917 0001:00282AE7   919 0001:00282AF3
+   920 0001:00282B21   927 0001:00282B2D   929 0001:00282B39   930 0001:00282B72
+   931 0001:00282B97   933 0001:00282BA3   934 0001:00282BAF   936 0001:00282BB4
+   937 0001:00282BF1   941 0001:00282C2C   942 0001:00282C8C   943 0001:00282C9E
+   945 0001:00282CA3   948 0001:00283040   949 0001:0028304C   950 0001:00283076
+   953 0001:0028307C   954 0001:00283098   955 0001:002830A5   956 0001:002830BA
+   957 0001:002830ED   958 0001:00283113   959 0001:00283123   960 0001:00283133
+   961 0001:00283143   962 0001:00283153   963 0001:00283163   964 0001:00283173
+   965 0001:00283183   966 0001:00283193   967 0001:002831A3   968 0001:002831B3
+   969 0001:002831C3   970 0001:002831D3   971 0001:002831E3   972 0001:002831F3
+   973 0001:00283203   974 0001:00283213   975 0001:00283231   976 0001:0028327C
+   979 0001:002832BC   980 0001:002832C3   981 0001:002832D0   982 0001:002832E5
+   983 0001:002832FF   984 0001:00283319   985 0001:00283329   986 0001:00283339
+   987 0001:00283349   988 0001:00283359   990 0001:00283369   991 0001:00283379
+   992 0001:00283389   993 0001:00283399   994 0001:002833A9   995 0001:002833B9
+   996 0001:002833C9   997 0001:002833D9   998 0001:002833E9   999 0001:002833F9
+  1000 0001:00283409  1001 0001:00283419  1003 0001:0028344E  1010 0001:00283470
+  1011 0001:0028347C  1012 0001:00283487  1014 0001:00283493  1015 0001:0028349B
+  1017 0001:002834A3  1023 0001:002834A8  1024 0001:002834B1  1025 0001:002834B9
+  1026 0001:002834D6  1028 0001:002834E6  1029 0001:00283506  1033 0001:0028350C
+  1034 0001:00283513  1036 0001:0028351F  1037 0001:00283532  1039 0001:0028353C
+  1044 0001:00283540  1045 0001:00283569  1046 0001:00283570  1047 0001:0028357A
+  1049 0001:0028359C  1050 0001:002835C4  1051 0001:00283682  1047 0001:00283685
+  1052 0001:0028368E  1059 0001:002836B8  1060 0001:002836DB  1062 0001:002836ED
+  1064 0001:00283700  1065 0001:00283708  1068 0001:0028370D  1070 0001:00283728
+  1071 0001:00283743  1073 0001:0028374D  1074 0001:0028375B  1075 0001:00283765
+  1077 0001:00283772  1079 0001:0028377F  1080 0001:00283789  1081 0001:0028379A
+  1082 0001:002837AE  1083 0001:002837E4  1084 0001:002837F5  1085 0001:0028380F
+  1088 0001:00283819  1092 0001:00283840  1093 0001:0028384F  1094 0001:00283861
+  1095 0001:00283878  1099 0001:00283880  1100 0001:0028388C  1101 0001:00283898
+  1102 0001:002838A2  1108 0001:002838A8  1109 0001:002838B5  1110 0001:002838C4
+  1111 0001:002838D6  1112 0001:002838E5  1113 0001:00283906  1114 0001:00283912
+  1115 0001:0028392F  1116 0001:0028393B  1123 0001:00283940  1124 0001:0028397A
+  1125 0001:00283984  1126 0001:00283988  1127 0001:00283992  1129 0001:002839DF
+  1130 0001:002839E7  1131 0001:00283A1C  1132 0001:00283A2A  1133 0001:00283A3E
+  1134 0001:00283A84  1136 0001:00283A8A  1137 0001:00283AB1  1139 0001:00283AC3
+  1141 0001:00283ACD  1142 0001:00283ADB  1143 0001:00283B02  1144 0001:00283B20
+  1145 0001:00283B39  1147 0001:00283B4B  1150 0001:00283B6B  1152 0001:00283B75
+  1154 0001:00283B7F  1155 0001:00283BA6  1156 0001:00283BC4  1157 0001:00283BDD
+  1158 0001:00283BED  1160 0001:00283BFF  1161 0001:00283C51  1165 0001:00283C57
+  1166 0001:00283C67  1167 0001:00283C77  1168 0001:00283C89  1170 0001:00283C9A
+  1171 0001:00283CA6  1172 0001:00283CAA  1180 0001:00283CB4  1182 0001:00283CBE
+  1183 0001:00283CF3  1185 0001:00283D04  1186 0001:00283D2F  1189 0001:00283D5C
+  1190 0001:00283D6D  1192 0001:00283DAF  1193 0001:00283DB9  1194 0001:00283DCB
+  1195 0001:00283DDC  1196 0001:00283DEE  1197 0001:00283DFF  1199 0001:00283E05
+  1200 0001:00283E19  1202 0001:00283E2D  1203 0001:00283E37  1206 0001:00283E84
+  1207 0001:00283E90  1208 0001:00283E98  1209 0001:00283EAA  1210 0001:00283EDA
+  1215 0001:00283EE0  1217 0001:00283EEC  1218 0001:00283EF8  1220 0001:00283F09
+  1221 0001:00283F27  1222 0001:00283F5B  1225 0001:00283F6D  1228 0001:00283F88
+  1230 0001:00283F94  1231 0001:00283FA4  1233 0001:00283FB4  1234 0001:00283FCB
+  1237 0001:00283FD0  1238 0001:00283FDC  1239 0001:00283FE7  1243 0001:00283FEC
+  1244 0001:00283FFB  1245 0001:00284001  1249 0001:00284008  1268 0001:00284017
+  1271 0001:00284020  1272 0001:0028402C  1273 0001:00284061  1278 0001:00284068
+  1279 0001:0028406F  1280 0001:00284077  1281 0001:00284080  1282 0001:00284090
+  1291 0001:00284094  1292 0001:002840A3  1293 0001:002840B1  1294 0001:002840BF
+  1296 0001:002840D4  1299 0001:00284100  1298 0001:00284110  1300 0001:00284121
+  1301 0001:00284130  1302 0001:00284144  1303 0001:0028414B  1304 0001:00284155
+  1305 0001:0028416E  1306 0001:00284186  1308 0001:002841A1  1294 0001:002841A4
+  1309 0001:002841AD  1316 0001:002841B4  1317 0001:002841DD  1318 0001:002841F9
+  1319 0001:0028420E  1320 0001:00284222  1321 0001:0028423D  1322 0001:0028425B
+  1323 0001:00284282  1327 0001:002842B4  1328 0001:002842C3  1329 0001:002842D1
+  1336 0001:002842D8  1340 0001:00284301  1341 0001:0028431C  1342 0001:0028433A
+  1346 0001:00284361  1350 0001:00284390  1352 0001:0028439F  1362 0001:002843A8
+  1364 0001:002843D9  1365 0001:002843E1  1366 0001:002843F2  1367 0001:002843FF
+  1369 0001:00284412  1370 0001:0028441C  1371 0001:00284424  1373 0001:00284452
+  1374 0001:0028445A  1375 0001:00284464  1376 0001:0028446E  1377 0001:0028448D
+  1378 0001:002844BF  1379 0001:002844ED  1380 0001:0028451B  1381 0001:0028452F
+  1384 0001:0028454C  1385 0001:0028455C  1386 0001:00284568  1388 0001:0028456D
+  1391 0001:0028458B  1392 0001:0028459B  1393 0001:002845AC  1394 0001:002845BA
+  1395 0001:002845CB  1397 0001:002845D0  1400 0001:002845DF  1401 0001:002845EF
+  1402 0001:00284600  1416 0001:00284605  1418 0001:0028460F  1419 0001:00284617
+  1420 0001:0028461F  1421 0001:00284653  1422 0001:00284664  1423 0001:0028466C
+  1424 0001:0028468D  1425 0001:002846D2  1427 0001:002846E8  1429 0001:00284716
+  1430 0001:0028472A  1431 0001:00284748  1432 0001:0028476D  1433 0001:00284792
+  1434 0001:002847A1  1435 0001:002847A9  1436 0001:002847BD  1439 0001:002847DA
+  1440 0001:002847EA  1441 0001:002847F6  1443 0001:002847FB  1446 0001:00284819
+  1447 0001:00284829  1448 0001:0028483A  1449 0001:00284848  1450 0001:00284859
+  1452 0001:0028485E  1454 0001:00284875  1455 0001:00284886  1456 0001:0028489A
+  1458 0001:002848A4  1460 0001:002848B5  1461 0001:002848C4  1462 0001:002848D5
+  1463 0001:002848F6  1465 0001:00284907  1466 0001:0028490F  1471 0001:00284919
+  1472 0001:00284929  1474 0001:00284930  1475 0001:00284940  1477 0001:00284942
+  1478 0001:0028494C  1479 0001:00284956  1481 0001:00284963  1482 0001:0028496B
+  1483 0001:00284975  1488 0001:00284A44  1489 0001:00284A60  1491 0001:00284A6E
+  1492 0001:00284AAA  1493 0001:00284ABE  1494 0001:00284ACE  1495 0001:00284AE2
+  1496 0001:00284AF2  1497 0001:00284B19  1498 0001:00284B2A  1499 0001:00284B3A
+  1500 0001:00284B4D  1501 0001:00284B61  1502 0001:00284B71  1503 0001:00284B81
+  1504 0001:00284B94  1505 0001:00284BA4  1506 0001:00284BB7  1507 0001:00284BCA
+  1508 0001:00284BDA  1509 0001:00284BED  1510 0001:00284BFD  1511 0001:00284C0D
+  1512 0001:00284C1D  1513 0001:00284C2D  1514 0001:00284C3D  1515 0001:00284C4A
+  1516 0001:00284C57  1517 0001:00284C64  1518 0001:00284C71  1519 0001:00284C83
+  1520 0001:00284C94  1521 0001:00284C9F  1522 0001:00284CA9  1523 0001:00284CB6
+  1528 0001:00284D04  1529 0001:00284D0D  1530 0001:00284D49  1531 0001:00284D5E
+  1532 0001:00284D73  1533 0001:00284D88  1534 0001:00284D9D  1535 0001:00284DB2
+  1536 0001:00284DC7  1537 0001:00284DDC  1538 0001:00284DF1  1539 0001:00284E09
+  1540 0001:00284E1E  1541 0001:00284E33  1542 0001:00284E48  1543 0001:00284E59
+  1544 0001:00284E69  1545 0001:00284E7A  1546 0001:00284E8A  1547 0001:00284E9B
+  1548 0001:00284EAB  1549 0001:00284ECA  1550 0001:00284EDA  1551 0001:00284EE8
+  1552 0001:00284EF8  1553 0001:00284F06  1554 0001:00284F16  1555 0001:00284F29
+  1556 0001:00284F43  1557 0001:00284F56  1558 0001:00284F63  1559 0001:00284F70
+  1560 0001:00284F7D  1561 0001:00284F8A  1562 0001:00284F97  1563 0001:00284FA4
+  1572 0001:002850A8  1574 0001:002850C9  1575 0001:002850D9  1576 0001:002850E7
+  1577 0001:002850F5  1578 0001:00285103  1579 0001:00285107  1580 0001:0028510B
+  1581 0001:00285118  1584 0001:00285124  1586 0001:00285155  1587 0001:0028516B
+  1589 0001:00285177  1591 0001:0028519B  1592 0001:002851AC  1593 0001:002851CD
+  1595 0001:002851E0  1597 0001:002851ED  1598 0001:00285203  1599 0001:00285219
+  1600 0001:00285240  1601 0001:0028524B  1603 0001:0028525B  1604 0001:00285276
+  1605 0001:00285293  1619 0001:0028529E  1621 0001:002852D5  1622 0001:0028531A
+  1624 0001:00285344  1625 0001:00285365  1626 0001:00285386  1627 0001:002853A7
+  1628 0001:002853BE  1630 0001:002853D0  1631 0001:002853F4  1634 0001:00285406
+  1635 0001:00285419  1638 0001:00285429  1640 0001:00285439  1642 0001:00285445
+  1644 0001:00285492  1646 0001:0028549C  1647 0001:002854C2  1648 0001:002854E9
+  1649 0001:00285510  1650 0001:00285536  1651 0001:00285550  1652 0001:00285577
+  1653 0001:00285590  1654 0001:002855B9  1655 0001:002855D3  1656 0001:002855FA
+  1659 0001:0028561B  1660 0001:00285656  1664 0001:0028566B  1665 0001:00285675
+  1666 0001:0028569B  1667 0001:002856BB  1668 0001:002856EB  1669 0001:0028570B
+  1670 0001:00285745  1671 0001:0028575B  1673 0001:0028577A  1674 0001:002857C0
+  1675 0001:002857C4  1671 0001:002857C7  1677 0001:002857CC  1678 0001:002857F8
+  1679 0001:00285857  1680 0001:00285878  1683 0001:0028589F  1684 0001:002858B7
+  1685 0001:002858CB  1686 0001:002858E8  1687 0001:002858F8  1688 0001:0028590B
+  1689 0001:0028591B  1690 0001:0028592B  1692 0001:00285937  1693 0001:0028596C
+  1695 0001:00285976  1696 0001:00285980  1699 0001:00285998  1700 0001:002859A8
+  1701 0001:002859BB  1702 0001:002859CB  1703 0001:002859DB  1705 0001:002859E7
+  1706 0001:00285A1C  1710 0001:00285A26  1711 0001:00285A45  1713 0001:00285A60
+  1720 0001:00285C44  1722 0001:00285C66  1724 0001:00285C72  1726 0001:00285C97
+  1727 0001:00285CC1  1728 0001:00285CD9  1730 0001:00285CE3  1731 0001:00285D02
+  1732 0001:00285D0E  1733 0001:00285D59  1734 0001:00285D6D  1735 0001:00285D87
+  1736 0001:00285DA1  1737 0001:00285DAD  1738 0001:00285E03  1739 0001:00285E1D
+  1740 0001:00285E3A  1741 0001:00285E59  1743 0001:00285E86  1744 0001:00285E97
+  1746 0001:00285EA8  1747 0001:00285EE6  1748 0001:00285EF7  1749 0001:00285F19
+  1750 0001:00285F25  1751 0001:00285F63  1752 0001:00285F7D  1753 0001:00285FAD
+  1754 0001:00285FE1  1756 0001:00285FF1  1757 0001:0028604A  1758 0001:0028605B
+  1759 0001:002860BD  1760 0001:002860D5  1761 0001:00286116  1763 0001:00286142
+  1764 0001:0028617A  1765 0001:002861B2  1766 0001:002861EA  1767 0001:002861F2
+  1768 0001:0028620C  1728 0001:00286225  1772 0001:00286234  1774 0001:00286240
+  1775 0001:0028626C  1776 0001:0028627D  1779 0001:00286290  1780 0001:002862B7
+  1781 0001:002862CF  1782 0001:002862F6  1784 0001:00286329  1785 0001:0028633A
+  1787 0001:0028634B  1788 0001:0028638F  1789 0001:002863C1  1790 0001:002863CB
+  1791 0001:002863F2  1793 0001:00286433  1794 0001:00286487  1796 0001:002864B7
+  1798 0001:002864BD  1799 0001:002864D9  1801 0001:002864E4  1802 0001:00286501
+  1803 0001:00286534  1805 0001:00286544  1806 0001:0028655C  1807 0001:00286574
+  1809 0001:00286580  1810 0001:00286598  1813 0001:002865A8  1814 0001:002865C0
+  1815 0001:002865F9  1818 0001:0028662A  1820 0001:00286669  1821 0001:00286697
+  1823 0001:002866C6  1824 0001:002866DE  1825 0001:002866F6  1826 0001:00286727
+  1827 0001:00286742  1828 0001:00286756  1830 0001:0028676E  1832 0001:00286783
+  1833 0001:002867A6  1836 0001:002867B1  1837 0001:002867C5  1839 0001:00286882
+  1840 0001:002868A5  1842 0001:002868B0  1844 0001:002868E1  1847 0001:002868F9
+  1849 0001:00286905  1850 0001:0028691B  1852 0001:00286943  1855 0001:00286B78
+  1856 0001:00286B97  1857 0001:00286BD9  1858 0001:00286BE1  1859 0001:00286BF1
+  1860 0001:00286C01  1861 0001:00286C11  1862 0001:00286C21  1863 0001:00286C4A
+  1865 0001:00286C6A  1867 0001:00286C7D  1869 0001:00286C8D  1870 0001:00286CA7
+  1871 0001:00286CBB  1872 0001:00286CC9  1873 0001:00286CD9  1874 0001:00286CE9
+  1875 0001:00286CF9  1876 0001:00286D13  1877 0001:00286D2D  1878 0001:00286D4B
+  1879 0001:00286D5B  1880 0001:00286D75  1881 0001:00286D8B  1882 0001:00286D9E
+  1883 0001:00286DAE  1884 0001:00286DBC  1885 0001:00286DCD  1887 0001:00286DDA
+  1890 0001:00286E20  1891 0001:00286E27  1892 0001:00286E37  1893 0001:00286E47
+  1894 0001:00286E57  1895 0001:00286E67  1896 0001:00286E90  1897 0001:00286EA3
+  1898 0001:00286EB3  1899 0001:00286EC3  1900 0001:00286EDD  1901 0001:00286EF1
+  1902 0001:00286F01  1903 0001:00286F11  1904 0001:00286F21  1905 0001:00286F3B
+  1906 0001:00286F55  1907 0001:00286F74  1908 0001:00286F84  1909 0001:00286F9E
+  1910 0001:00286FB4  1911 0001:00286FC7  1912 0001:00286FD7  1913 0001:00287004
+  1914 0001:00287017  1919 0001:00287050  1935 0001:00287057  1936 0001:0028706A
+  1937 0001:0028707A  1938 0001:0028708A  1939 0001:0028709A  1940 0001:002870AA
+  1941 0001:002870BA  1942 0001:002870CA  1943 0001:002870DA  1944 0001:002870EA
+  1945 0001:00287108  1946 0001:00287118  1947 0001:00287128  1948 0001:00287139
+  1956 0001:0028713C  1957 0001:00287168  1959 0001:0028717D  1960 0001:0028718B
+  1961 0001:002871A2  1962 0001:002871B4  1964 0001:002871DD  1967 0001:002871FA
+  1968 0001:00287205  1969 0001:00287210  1970 0001:0028721B  1971 0001:00287220
+  1973 0001:00287242  1974 0001:00287256  1976 0001:00287278  1977 0001:0028729D
+  1979 0001:002872CD  1980 0001:002872D0  1971 0001:002872D3  1981 0001:002872DC
+  1983 0001:002872E8  1984 0001:00287306  1986 0001:0028733A  1987 0001:00287345
+  1988 0001:00287350  1989 0001:00287352  1983 0001:00287355  1992 0001:0028735A
+  1996 0001:0028739C  1997 0001:002873A3  1998 0001:002873B9  1999 0001:002873D4
+  2000 0001:002873EF  2001 0001:0028740A  2002 0001:0028741A  2003 0001:0028742A
+  2004 0001:0028743A  2005 0001:0028744A  2006 0001:0028745A  2007 0001:0028746A
+  2008 0001:0028747A  2009 0001:0028748A  2010 0001:0028749A  2011 0001:002874A7
+  2012 0001:002874B2  2028 0001:002874C3  2033 0001:002874C8  2034 0001:002874EB
+  2035 0001:002874F2  2037 0001:002874FE  2038 0001:00287509  2039 0001:00287527
+  2041 0001:0028755B  2042 0001:00287561  2043 0001:00287563  2038 0001:00287566
+  2044 0001:0028756B  2048 0001:0028757E  2050 0001:00287589  2053 0001:002875B0
+  2054 0001:002875BC  2055 0001:002875CF  2056 0001:002875E2  2057 0001:002875F5
+  2058 0001:00287610  2059 0001:00287625  2060 0001:0028763A  2063 0001:0028764D
+  2068 0001:00287654  2070 0001:00287679  2072 0001:0028768E  2073 0001:002876C8
+  2074 0001:002876D9  2076 0001:002876FF  2077 0001:0028772B  2080 0001:0028773C
+  2081 0001:0028774D  2082 0001:00287775  2083 0001:00287786  2090 0001:0028779B
+  2092 0001:002877AB  2094 0001:002877C0  2095 0001:002877D3  2096 0001:002877E4
+  2098 0001:002877F9  2099 0001:0028784B  2100 0001:00287862  2101 0001:00287886
+  2102 0001:002878AA  2104 0001:002878AF  2106 0001:002878C4  2107 0001:002878F0
+  2108 0001:00287901  2110 0001:00287916  2111 0001:00287968  2112 0001:0028797F
+  2113 0001:002879A3  2114 0001:002879C7  2115 0001:002879DA  2119 0001:002879DF
+  2120 0001:00287A0B  2121 0001:00287A1E  2122 0001:00287A53  2123 0001:00287A6A
+  2124 0001:00287A8E  2127 0001:00287A93  2128 0001:00287ADF  2129 0001:00287AF0
+  2130 0001:00287B01  2132 0001:00287B06  2134 0001:00287B1B  2135 0001:00287B47
+  2136 0001:00287B5A  2137 0001:00287B6B  2140 0001:00287B85  2142 0001:00287B9A
+  2143 0001:00287BC6  2144 0001:00287BD9  2145 0001:00287BEA  2146 0001:00287BFB
+  2147 0001:00287C12  2148 0001:00287C23  2149 0001:00287C34  2151 0001:00287C36
+  2152 0001:00287C4D  2153 0001:00287C5E  2154 0001:00287C6F  2162 0001:00287CBC
+  2164 0001:00287CE1  2170 0001:00287CE6  2173 0001:00287D6C  2174 0001:00287D79
+  2176 0001:00287D9F  2177 0001:00287DC5  2178 0001:00287DDB  2181 0001:00287DE2
+  2183 0001:00287E00  2184 0001:00287E0E  2186 0001:00287E1C  2187 0001:00287E2E
+  2188 0001:00287E36  2189 0001:00287E44  2190 0001:00287E6D  2191 0001:00287E8B
+  2192 0001:00287E9B  2193 0001:00287EA9  2199 0001:00287EB9  2200 0001:00287ECB
+  2204 0001:00287ED5  2205 0001:00287EE0  2207 0001:00287EEC  2208 0001:00287EFD
+  2210 0001:00287F22  2211 0001:00287F2A  2212 0001:00287F32  2213 0001:00287F8D
+  2214 0001:00287F9D  2215 0001:00287FBE  2216 0001:00287FE5  2217 0001:00288022
+  2218 0001:0028803E  2219 0001:0028805F  2220 0001:0028809C  2221 0001:002880B8
+  2222 0001:002880D9  2223 0001:00288116  2225 0001:00288132  2227 0001:0028813E
+  2228 0001:0028814E  2230 0001:00288161  2231 0001:0028818E  2234 0001:00288199
+  2235 0001:002881A2  2236 0001:002881E4  2243 0001:002882FC  2244 0001:00288322
+  2245 0001:0028832A  2246 0001:00288345  2247 0001:0028834D  2249 0001:00288364
+  2250 0001:00288388  2249 0001:002883B0  2252 0001:002883B7  2254 0001:002883CE
+  2256 0001:002883DF  2257 0001:002883F2  2258 0001:00288427  2263 0001:0028845C
+  2264 0001:00288489  2265 0001:002884A4  2267 0001:0028852C  2268 0001:0028853D
+  2273 0001:00288578  2275 0001:00288597  2276 0001:002885A6  2277 0001:002885B4
+  2278 0001:002885D0  2280 0001:002885EC  2283 0001:002885FC  2291 0001:00288640
+  2292 0001:0028865F  2293 0001:00288671  2294 0001:00288680  2295 0001:00288691
+  2296 0001:002886A9  2298 0001:002886BA  2299 0001:002886C2  2300 0001:002886D1
+  2301 0001:002886E2  2303 0001:002886EA  2309 0001:0028870C  2311 0001:00288730
+  2313 0001:0028873C  2315 0001:0028874B  2316 0001:00288759  2319 0001:00288769
+  2320 0001:00288773  2321 0001:00288794  2323 0001:0028879A  2325 0001:002887A6
+  2327 0001:002887BC  2329 0001:002887C9  2330 0001:002887D1  2332 0001:00288808
+  2333 0001:0028884D  2336 0001:00288879  2337 0001:0028889E  2339 0001:002888B1
+  2340 0001:002888CE  2341 0001:002888FB  2342 0001:0028890B  2343 0001:00288917
+  2344 0001:0028895F  2345 0001:0028896A  2351 0001:002889E0  2353 0001:00288A03
+  2354 0001:00288A24  2356 0001:00288A2E  2357 0001:00288A51  2358 0001:00288AA3
+  2359 0001:00288AB4  2361 0001:00288AD3  2362 0001:00288ADD  2367 0001:00288B64
+  2369 0001:00288B89  2370 0001:00288B9A  2371 0001:00288BCE  2379 0001:00288BDF
+  2382 0001:00288CA3  2383 0001:00288CB4  2384 0001:00288CD8  2386 0001:00288CE2
+  2388 0001:00288CF6  2389 0001:00288D04  2390 0001:00288D14  2392 0001:00288D19
+  2394 0001:00288D2D  2396 0001:00288D3C  2397 0001:00288D4A  2400 0001:00288D5C
+  2402 0001:00288D84  2404 0001:00288D93  2405 0001:00288DA1  2409 0001:00288DB1
+  2414 0001:00288DE0  2416 0001:00288E06  2417 0001:00288E12  2419 0001:00288E1D
+  2420 0001:00288E5A  2421 0001:00288E76  2423 0001:00288E90  2424 0001:00288EB9
+  2425 0001:00288ECC  2428 0001:00288F28  2429 0001:00288F4A  2430 0001:00288F6C
+  2433 0001:00288F7D  2441 0001:00288FA4  2443 0001:00288FCC  2445 0001:00289000
+  2446 0001:0028900B  2448 0001:0028903D  2449 0001:0028906E  2450 0001:00289085
+  2451 0001:002890B2  2456 0001:002890C5  2457 0001:002890D2  2459 0001:002890DF
+  2460 0001:002890E9  2467 0001:00289134  2469 0001:00289159  2471 0001:00289189
+  2472 0001:00289194  2474 0001:002891C2  2475 0001:002891D9  2476 0001:002891F3
+  2479 0001:00289204  2480 0001:0028920E  2481 0001:00289218  2486 0001:00289258
+  2487 0001:00289264  2489 0001:0028926A  2490 0001:0028927D  2491 0001:0028928D
+  2492 0001:0028929D  2496 0001:002892B2  2497 0001:002892C2  2498 0001:00289300
+  2499 0001:00289321  2500 0001:00289331  2501 0001:00289341  2503 0001:00289351
+  2508 0001:00289358  2512 0001:00289376  2514 0001:0028937F  2516 0001:0028938D
+  2517 0001:002893C1  2520 0001:002893CD  2521 0001:002893D5  2522 0001:002893E5
+  2525 0001:002893EF  2526 0001:00289400  2527 0001:0028940B  2528 0001:00289416
+  2533 0001:00289444  2535 0001:00289463  2536 0001:0028946F  2537 0001:0028947B
+  2540 0001:00289491  2541 0001:002894C1  2542 0001:002894CB  2545 0001:002894F8
+  2547 0001:00289520  2548 0001:00289530  2550 0001:00289540  2552 0001:002895C2
+  2553 0001:002895CC  2554 0001:002895F5  2556 0001:002895FF  2558 0001:00289601
+  2560 0001:00289617  2561 0001:00289647  2562 0001:00289651  2570 0001:00289698
+  2571 0001:002896BC  2574 0001:002896DA  2575 0001:002896F4  2576 0001:0028970A
+  2577 0001:0028971E  2578 0001:00289729  2579 0001:0028973D  2580 0001:0028979B
+  2581 0001:002897CC  2586 0001:002897E0  2588 0001:00289801  2589 0001:00289815
+  2591 0001:00289838  2592 0001:00289866  2593 0001:002898A4  2594 0001:002898D0
+  2597 0001:002898DD  2601 0001:00289910  2603 0001:00289938  2604 0001:00289973
+  2606 0001:0028997F  2607 0001:00289993  2611 0001:002899A0  2612 0001:002899BA
+  2613 0001:002899D0  2614 0001:002899E4  2616 0001:002899EF  2617 0001:00289A03
+  2618 0001:00289A61  2619 0001:00289A92  2621 0001:00289AA6  2623 0001:00289AC7
+  2624 0001:00289ADB  2626 0001:00289AFE  2627 0001:00289B2C  2628 0001:00289B76
+  2629 0001:00289BA2  2632 0001:00289BAF  2633 0001:00289BC3  2634 0001:00289BF0
+  2635 0001:00289C26  2636 0001:00289C2C  2637 0001:00289C6B  2638 0001:00289C76
+  2601 0001:00289C79  2641 0001:00289C82  2647 0001:00289D00  2648 0001:00289D31
+  2651 0001:00289D4F  2652 0001:00289D63  2653 0001:00289D6E  2654 0001:00289D82
+  2655 0001:00289D9C  2656 0001:00289DB0  2660 0001:00289DD5  2662 0001:00289DFD
+  2663 0001:00289E38  2664 0001:00289E44  2665 0001:00289E5A  2666 0001:00289E6E
+  2667 0001:00289E79  2668 0001:00289E8D  2669 0001:00289EA7  2670 0001:00289EBB
+  2671 0001:00289ECF  2672 0001:00289EFC  2673 0001:00289F24  2674 0001:00289F2A
+  2675 0001:00289F63  2676 0001:00289F6E  2660 0001:00289F71  2679 0001:00289F7A
+  2687 0001:00289FCC  2688 0001:00289FF7  2689 0001:00289FFE  2690 0001:0028A020
+  2692 0001:0028A0C1  2693 0001:0028A0C7  2694 0001:0028A0C9  2689 0001:0028A0CC
+  2695 0001:0028A0D5  2696 0001:0028A10E  2697 0001:0028A135  2698 0001:0028A15C
+  2699 0001:0028A16E  2700 0001:0028A1A9  2701 0001:0028A1B1  2702 0001:0028A1C0
+  2703 0001:0028A1D3  2704 0001:0028A1DF  2705 0001:0028A21A  2706 0001:0028A227
+  2709 0001:0028A2B8  2711 0001:0028A309  2712 0001:0028A327  2717 0001:0028A38C
+  2718 0001:0028A3B2  2719 0001:0028A3BA  2720 0001:0028A3C1  2722 0001:0028A3E3
+  2723 0001:0028A47E  2720 0001:0028A481  2724 0001:0028A48A  2725 0001:0028A4A4
+  2731 0001:0028A4CC  2732 0001:0028A50A  2736 0001:0028A54A  2738 0001:0028A571
+  2739 0001:0028A579  2740 0001:0028A5B9  2741 0001:0028A5EC  2742 0001:0028A60A
+  2744 0001:0028A62C  2746 0001:0028A6D9  2747 0001:0028A700  2749 0001:0028A702
+  2742 0001:0028A705  2750 0001:0028A70E  2752 0001:0028A73A  2758 0001:0028A778
+  2759 0001:0028A7A4  2760 0001:0028A7AC  2761 0001:0028A7C9  2763 0001:0028A7EB
+  2765 0001:0028A898  2766 0001:0028A8BF  2768 0001:0028A8C1  2761 0001:0028A8C4
+  2769 0001:0028A8CD  2784 0001:0028A90C  2785 0001:0028A93E  2786 0001:0028A945
+  2787 0001:0028A964  2786 0001:0028A9FF  2788 0001:0028AA08  2790 0001:0028AA4C
+  2791 0001:0028AA82  2792 0001:0028AA90  2794 0001:0028AACC  2799 0001:0028AB04
+  2800 0001:0028AB24  2801 0001:0028AB2B  2802 0001:0028AB4A  2801 0001:0028ABE5
+  2803 0001:0028ABEE  2804 0001:0028AC02  2806 0001:0028AC2C  2807 0001:0028AC58
+  2808 0001:0028AC60  2810 0001:0028AC70  2811 0001:0028AC74  2813 0001:0028AC90
+  2814 0001:0028ACB7  2815 0001:0028ACC1  2816 0001:0028ACD4  2817 0001:0028AD48
+  2818 0001:0028AD4E  2811 0001:0028AD51  2819 0001:0028AD5A  2823 0001:0028AD71
+  2824 0001:0028AD80  2825 0001:0028AD8E  2826 0001:0028ADA4  2827 0001:0028AE2B
+  2828 0001:0028AE2F  2830 0001:0028AE51  2831 0001:0028AE7E  2832 0001:0028AE82
+  2833 0001:0028AEC7  2834 0001:0028AEF4  2835 0001:0028AF38  2837 0001:0028AF54
+  2838 0001:0028AF7B  2839 0001:0028AF8D  2841 0001:0028AF93  2844 0001:0028AFB7
+  2845 0001:0028AFE2  2846 0001:0028AFFD  2847 0001:0028B009  2848 0001:0028B047
+  2849 0001:0028B05E  2851 0001:0028B062  2853 0001:0028B06C  2854 0001:0028B0A3
+  2853 0001:0028B0BA  2855 0001:0028B0BF  2857 0001:0028B0F9  2858 0001:0028B10C
+  2860 0001:0028B1A2  2862 0001:0028B1A8  2863 0001:0028B1B2  2865 0001:0028B1B4
+  2835 0001:0028B1B7  2866 0001:0028B1C0  2828 0001:0028B1C3  2867 0001:0028B1CC
+  2869 0001:0028B1DC  2871 0001:0028B20D  2872 0001:0028B21F  2874 0001:0028B23B
+  2876 0001:0028B287  2877 0001:0028B2AE  2879 0001:0028B2F3  2872 0001:0028B2F6
+  2883 0001:0028B30C  2886 0001:0028B31C  2893 0001:0028B368  2895 0001:0028B38B
+  2896 0001:0028B398  2897 0001:0028B3A8  2898 0001:0028B3BB  2899 0001:0028B3C3
+  2900 0001:0028B3CB  2901 0001:0028B3D3  2902 0001:0028B3DD  2903 0001:0028B3EB
+  2904 0001:0028B444  2905 0001:0028B484  2906 0001:0028B493  2909 0001:0028B4B1
+  2912 0001:0028B505  2913 0001:0028B516  2914 0001:0028B529  2915 0001:0028B551
+  2916 0001:0028B570  2917 0001:0028B57B  2918 0001:0028B59F  2920 0001:0028B5AF
+  2922 0001:0028B5DA  2923 0001:0028B602  2924 0001:0028B60F  2928 0001:0028B63C
+  2929 0001:0028B670  2930 0001:0028B6A2  2931 0001:0028B6D4  2933 0001:0028B6E8
+  2934 0001:0028B714  2936 0001:0028B734  2938 0001:0028B751  2939 0001:0028B765
+  2941 0001:0028B7A2  2942 0001:0028B7B6  2943 0001:0028B7E7  2944 0001:0028B824
+  2945 0001:0028B860  2946 0001:0028B87E  2947 0001:0028B8B2  2952 0001:0028B8C2
+  2953 0001:0028B8CD  2954 0001:0028B8E1  2955 0001:0028B8F8  2956 0001:0028B918
+  2957 0001:0028B92C  2958 0001:0028B94E  2964 0001:0028B973  2966 0001:0028B99B
+  2967 0001:0028B9E7  2968 0001:0028BA20  2969 0001:0028BA26  2970 0001:0028BA90
+  2971 0001:0028BA9B  2964 0001:0028BA9E  2972 0001:0028BAA7  2973 0001:0028BACB
+  2975 0001:0028BADB  2976 0001:0028BAF1  2977 0001:0028BB1F  2979 0001:0028BB3F
+  2981 0001:0028BB5C  2982 0001:0028BB72  2984 0001:0028BBAF  2986 0001:0028BBD3
+  2987 0001:0028BBD8  2988 0001:0028BBFC  2987 0001:0028BC42  2989 0001:0028BC47
+  2991 0001:0028BC6F  2992 0001:0028BCB0  2993 0001:0028BCE2  2994 0001:0028BD12
+  2995 0001:0028BD26  2996 0001:0028BD57  2997 0001:0028BD94  2998 0001:0028BDCE
+  2999 0001:0028BDEA  3000 0001:0028BE1C  3002 0001:0028BE28  3003 0001:0028BE38
+  3005 0001:0028BE4B  3007 0001:0028BE55  3008 0001:0028BE98  3010 0001:0028BEA8
+  3011 0001:0028BEBC  3012 0001:0028BED0  3013 0001:0028BEE7  3014 0001:0028BF05
+  3015 0001:0028BF19  3016 0001:0028BF4F  3018 0001:0028BF6D  3019 0001:0028BF81
+  3020 0001:0028BFB0  3021 0001:0028BFDF  3022 0001:0028C00E  3023 0001:0028C016
+  3024 0001:0028C026  3025 0001:0028C044  2989 0001:0028C047  3028 0001:0028C050
+  3029 0001:0028C058  3030 0001:0028C090  3031 0001:0028C0CB  3033 0001:0028C0DB
+  3034 0001:0028C12F  3035 0001:0028C13A  3038 0001:0028C160  3039 0001:0028C194
+  3040 0001:0028C1C8  3041 0001:0028C1FC  3042 0001:0028C22E  3043 0001:0028C260
+  3044 0001:0028C295  3045 0001:0028C29D  3047 0001:0028C2C9  3048 0001:0028C2F1
+  3060 0001:0028C530  3061 0001:0028C55B  3062 0001:0028C563  3063 0001:0028C585
+  3064 0001:0028C591  3065 0001:0028C614  3066 0001:0028C640  3067 0001:0028C66C
+  3068 0001:0028C698  3069 0001:0028C6C4  3070 0001:0028C6F0  3071 0001:0028C71C
+  3072 0001:0028C748  3073 0001:0028C774  3074 0001:0028C79D  3075 0001:0028C7C6
+  3076 0001:0028C7EF  3078 0001:0028C803  3081 0001:0028C82C  3082 0001:0028C838
+  3083 0001:0028C843  3126 0001:0028C848  3127 0001:0028C869  3129 0001:0028C86E
+  3130 0001:0028C872  3131 0001:0028C89A  3132 0001:0028C908  3130 0001:0028C90F
+  3133 0001:0028C914  3135 0001:0028C91E  3136 0001:0028C923  3137 0001:0028C928
+  3138 0001:0028C950  3140 0001:0028C98B  3141 0001:0028C99F  3142 0001:0028C9A4
+  3143 0001:0028C9D7  3144 0001:0028CA0A  3145 0001:0028CA3D  3146 0001:0028CA6D
+  3148 0001:0028CA9A  3150 0001:0028CABD  3151 0001:0028CAC9  3153 0001:0028CACF
+  3154 0001:0028CADD  3155 0001:0028CAE3  3157 0001:0028CAE8  3159 0001:0028CB0B
+  3160 0001:0028CB2E  3161 0001:0028CB3C  3137 0001:0028CB3F  3162 0001:0028CB48
+  3164 0001:0028CB54  3165 0001:0028CB61  3166 0001:0028CB89  3167 0001:0028CB94
+  3180 0001:0028CC3C  3182 0001:0028CC48  3184 0001:0028CC54  3185 0001:0028CC66
+  3186 0001:0028CC70  3188 0001:0028CC95  3189 0001:0028CCB4  3190 0001:0028CCD3
+  3191 0001:0028CCF2  3192 0001:0028CD11  3193 0001:0028CD2D  3194 0001:0028CD42
+  3198 0001:0028CD66  3199 0001:0028CD85  3200 0001:0028CDA4  3201 0001:0028CDC3
+  3202 0001:0028CDE2  3203 0001:0028CE01  3204 0001:0028CE16  3207 0001:0028CE35
+  3209 0001:0028CE4D  3210 0001:0028CE60  3211 0001:0028CE71  3212 0001:0028CE75
+  3214 0001:0028CE80  3215 0001:0028CE85  3216 0001:0028CEBC  3217 0001:0028CECA
+  3218 0001:0028CED8  3219 0001:0028CEE6  3220 0001:0028CEF4  3221 0001:0028CF02
+  3224 0001:0028CF0E  3226 0001:0028CF20  3227 0001:0028CF3B  3228 0001:0028CF4F
+  3230 0001:0028CF79  3234 0001:0028CF81  3240 0001:0028D014  3242 0001:0028D023
+  3243 0001:0028D03F  3244 0001:0028D04B  3246 0001:0028D063  3247 0001:0028D076
+  3249 0001:0028D087  3250 0001:0028D099  3251 0001:0028D0A3  3254 0001:0028D0AC
+  3256 0001:0028D0BB  3257 0001:0028D0F2  3258 0001:0028D104  3259 0001:0028D10E
+  3263 0001:0028D114  3265 0001:0028D123  3266 0001:0028D143  3267 0001:0028D171
+  3268 0001:0028D19B  3269 0001:0028D1C5  3272 0001:0028D1ED  3273 0001:0028D1FA
+  3277 0001:0028D200  3279 0001:0028D232  3281 0001:0028D285  3284 0001:0028D2B0
+  3286 0001:0028D2BC  3287 0001:0028D2C6  3288 0001:0028D2CE  3289 0001:0028D2D6
+  3298 0001:0028D2DC  3301 0001:0028D2E6  3302 0001:0028D307  3304 0001:0028D348
+  3305 0001:0028D354  3306 0001:0028D35C  3307 0001:0028D364  3309 0001:0028D36F
+  3314 0001:0028D374  3315 0001:0028D397  3316 0001:0028D3A2  3317 0001:0028D3C0
+  3316 0001:0028D3EF  3318 0001:0028D3F4  3319 0001:0028D40B  3321 0001:0028D430
+  3323 0001:0028D45C  3326 0001:0028D46C  3327 0001:0028D472  3328 0001:0028D476
+  3330 0001:0028D480  3334 0001:0028D4B0  3337 0001:0028D4DB  3340 0001:0028D50A
+  3342 0001:0028D510  3345 0001:0028D550  3358 0001:0028D585  3359 0001:0028D5C5
+  3360 0001:0028D5D5  3361 0001:0028D5E2  3365 0001:0028D60C  3366 0001:0028D64C
+  3367 0001:0028D65C  3368 0001:0028D669  3372 0001:0028D693  3373 0001:0028D6AF
+  3374 0001:0028D6DC  3375 0001:0028D6E6  3376 0001:0028D71E  3377 0001:0028D731
+  3379 0001:0028D742  3380 0001:0028D753  3382 0001:0028D765  3383 0001:0028D79C
+  3386 0001:0028D7AF  3388 0001:0028D7CC  3389 0001:0028D7DD  3391 0001:0028D7F0
+  3403 0001:0028D801  3404 0001:0028D80B  3405 0001:0028D81A  3406 0001:0028D82A
+  3407 0001:0028D837  3411 0001:0028D861  3412 0001:0028D875  3413 0001:0028D87F
+  3414 0001:0028D8A3  3415 0001:0028D8C1  3417 0001:0028D8FC  3418 0001:0028D90F
+  3420 0001:0028D922  3421 0001:0028D933  3422 0001:0028D93D  3423 0001:0028D947
+  3424 0001:0028D956  3425 0001:0028D966  3426 0001:0028D977  3427 0001:0028D983
+  3428 0001:0028D994  3431 0001:0028D9BE  3432 0001:0028D9FE  3433 0001:0028DA0D
+  3434 0001:0028DA19  3435 0001:0028DA29  3436 0001:0028DA36  3439 0001:0028DA59
+  3442 0001:0028DA77  3446 0001:0028DAE4  3447 0001:0028DB04  3448 0001:0028DB36
+  3449 0001:0028DB5A  3450 0001:0028DB7B  3452 0001:0028DB9C  3453 0001:0028DBBB
+  3455 0001:0028DBD3  3457 0001:0028DBF2  3460 0001:0028DC18  3463 0001:0028DC24
+  3464 0001:0028DC65  3465 0001:0028DC70  3466 0001:0028DC7B  3472 0001:0028DC80
+  3474 0001:0028DCA4  3476 0001:0028DCCA  3477 0001:0028DCEB  3479 0001:0028DCF5
+  3480 0001:0028DD18  3481 0001:0028DD6A  3482 0001:0028DD7B  3484 0001:0028DD9A
+  3485 0001:0028DDCE  3487 0001:0028DDD8  3493 0001:0028DE60  3495 0001:0028DE85
+  3497 0001:0028DE91  3499 0001:0028DEA0  3500 0001:0028DEAE  3504 0001:0028DEBE
+  3505 0001:0028DF20  3506 0001:0028DF43  3507 0001:0028DF4D  3508 0001:0028DF77
+  3510 0001:0028DF7D  3512 0001:0028DF89  3513 0001:0028DF9F  3515 0001:0028DFA9
+  3517 0001:0028DFB6  3518 0001:0028DFBE  3519 0001:0028DFDB  3520 0001:0028E008
+  3521 0001:0028E018  3527 0001:0028E080  3529 0001:0028E0A6  3531 0001:0028E0BC
+  3532 0001:0028E0C7  3535 0001:0028E0D8  3536 0001:0028E0E6  3537 0001:0028E0F0
+  3538 0001:0028E0F8  3548 0001:0028E100  3551 0001:0028E1C4  3552 0001:0028E1D5
+  3553 0001:0028E1F9  3554 0001:0028E230  3556 0001:0028E23A  3558 0001:0028E25B
+  3559 0001:0028E275  3560 0001:0028E293  3562 0001:0028E2A6  3563 0001:0028E2B8
+  3565 0001:0028E2CB  3568 0001:0028E2DE  3569 0001:0028E2F0  3572 0001:0028E320
+  3576 0001:0028E33F  3578 0001:0028E35D  3579 0001:0028E391  3581 0001:0028E39C
+  3586 0001:0028E3C0  3588 0001:0028E3E6  3589 0001:0028E448  3590 0001:0028E46B
+  3591 0001:0028E476  3594 0001:0028E4B4  3599 0001:0028E4D6  3601 0001:0028E4F8
+  3602 0001:0028E509  3604 0001:0028E50E  3605 0001:0028E519  3606 0001:0028E529
+  3607 0001:0028E537  3608 0001:0028E53F  3609 0001:0028E547  3611 0001:0028E568
+  3612 0001:0028E582  3613 0001:0028E5A0  3615 0001:0028E5B3  3616 0001:0028E5C5
+  3618 0001:0028E5D8  3619 0001:0028E5E9  3622 0001:0028E610  3624 0001:0028E61C
+  3625 0001:0028E62D  3626 0001:0028E638  3627 0001:0028E643  3633 0001:0028E648
+  3637 0001:0028E66C  3639 0001:0028E67C  3641 0001:0028E6B0  3642 0001:0028E6C3
+  3643 0001:0028E6CE  3645 0001:0028E700  3646 0001:0028E731  3647 0001:0028E748
+  3648 0001:0028E775  3651 0001:0028E786  3653 0001:0028E7B0  3654 0001:0028E7C7
+  3655 0001:0028E807  3656 0001:0028E812  3657 0001:0028E835  3659 0001:0028E846
+  3660 0001:0028E870  3662 0001:0028E87A  3667 0001:0028E8D8  3670 0001:0028E8FD
+  3671 0001:0028E929  3673 0001:0028E935  3674 0001:0028E967  3675 0001:0028E9B5
+  3680 0001:0028E9CE  3682 0001:0028E9F1  3683 0001:0028EA0F  3684 0001:0028EA19
+  3689 0001:0028EA78  3691 0001:0028EA97  3692 0001:0028EABB  3693 0001:0028EAC8
+  3694 0001:0028EAEE  3695 0001:0028EB05  3698 0001:0028EB40  3700 0001:0028EB4C
+  3702 0001:0028EB5C  3703 0001:0028EB67  3704 0001:0028EB77  3705 0001:0028EB85
+  3706 0001:0028EB8F  3707 0001:0028EB97  3708 0001:0028EB9F  3710 0001:0028EBC0
+  3711 0001:0028EBDA  3712 0001:0028EBF8  3714 0001:0028EC0B  3715 0001:0028EC1D
+  3717 0001:0028EC30  3720 0001:0028EC41  3725 0001:0028EC48  3727 0001:0028EC66
+  3729 0001:0028EC72  3730 0001:0028ECA2  3731 0001:0028ECC7  3732 0001:0028ECD6
+  3735 0001:0028ED74  3737 0001:0028ED80  3738 0001:0028ED91  3739 0001:0028ED9C
+  3740 0001:0028EDA7  3746 0001:0028EDAC  3748 0001:0028EDD0  3749 0001:0028EDE0
+  3751 0001:0028EE1F  3752 0001:0028EE3E  3754 0001:0028EE4D  3756 0001:0028EE57
+  3757 0001:0028EE65  3759 0001:0028EE71  3760 0001:0028EE87  3762 0001:0028EEBD
+  3763 0001:0028EEC2  3764 0001:0028EED5  3765 0001:0028EEE5  3766 0001:0028EEF5
+  3767 0001:0028EF05  3768 0001:0028EF16  3776 0001:0028EF26  3779 0001:0028EF93
+  3780 0001:0028EFC0  3783 0001:0028EFDD  3785 0001:0028F045  3788 0001:0028F05B
+  3789 0001:0028F07C  3790 0001:0028F091  3791 0001:0028F0B2  3792 0001:0028F0C2
+  3795 0001:0028F0D5  3797 0001:0028F0FA  3800 0001:0028F12E  3801 0001:0028F139
+  3802 0001:0028F143  3805 0001:0028F2C8  3807 0001:0028F2D4  3808 0001:0028F2E4
+  3809 0001:0028F2F2  3810 0001:0028F2FC  3811 0001:0028F304  3812 0001:0028F30C
+  3814 0001:0028F32D  3815 0001:0028F347  3816 0001:0028F365  3818 0001:0028F378
+  3819 0001:0028F38A  3821 0001:0028F39D  3822 0001:0028F3AE  3829 0001:0028F3B4
+  3831 0001:0028F3D6  3832 0001:0028F3E7  3834 0001:0028F3F3  3835 0001:0028F403
+  3836 0001:0028F423  3837 0001:0028F443  3839 0001:0028F455  3840 0001:0028F495
+  3841 0001:0028F4AB  3842 0001:0028F4C5  3843 0001:0028F4DF  3844 0001:0028F4EC
+  3846 0001:0028F504  3847 0001:0028F50E  3852 0001:0028F534  3854 0001:0028F540
+  3855 0001:0028F551  3858 0001:0028F575  3859 0001:0028F5B6  3860 0001:0028F5C8
+  3862 0001:0028F5DE  3863 0001:0028F5E8  3864 0001:0028F5F3  3882 0001:0028F5F8
+  3883 0001:0028F61D  3884 0001:0028F647  3885 0001:0028F66F  3886 0001:0028F6DE
+  3887 0001:0028F716  3890 0001:0028F75C  3891 0001:0028F791  3892 0001:0028F799
+  3894 0001:0028F7A8  3910 0001:0028F7E1  3912 0001:0028F806  3913 0001:0028F83E
+  3914 0001:0028F880  3915 0001:0028F8B6  3917 0001:0028F8C6  3918 0001:0028F903
+  3919 0001:0028F913  3920 0001:0028F982  3921 0001:0028F9BA  3923 0001:0028FA29
+  3924 0001:0028FA61  3925 0001:0028FA82  3927 0001:0028FA94  3930 0001:0028FAA4
+  3933 0001:0028FB4C  3934 0001:0028FB77  3936 0001:0028FB86  3937 0001:0028FBC3
+  3938 0001:0028FBF5  3939 0001:0028FC2E  3940 0001:0028FC9D  3942 0001:0028FCD5
+  3945 0001:0028FD28  3946 0001:0028FD48  3960 0001:0028FD57  3961 0001:0028FD94
+  3962 0001:0028FDD9  3963 0001:0028FE0B  3965 0001:0028FE30  3966 0001:0028FE68
+  3967 0001:0028FEAA  3968 0001:0028FEE0  3970 0001:0028FEF0  3971 0001:0028FF29
+  3972 0001:0028FF98  3973 0001:0028FFD0  3975 0001:0029003F  3976 0001:00290077
+  3977 0001:002900AA  3980 0001:002900BA  3982 0001:0029016C  3983 0001:00290197
+  3984 0001:0029019F  3986 0001:002901A9  3987 0001:0029023F  3988 0001:0029024B
+  3989 0001:00290294  3990 0001:002902AF  3991 0001:002902BB  3992 0001:0029030C
+  3993 0001:00290327  3994 0001:00290333  3995 0001:00290375  3996 0001:00290381
+  3997 0001:002903D6  3998 0001:002903E2  3999 0001:0029042A  4000 0001:00290436
+  4001 0001:0029047E  4002 0001:0029048A  4003 0001:002904EB  4004 0001:002904F7
+  4006 0001:002905C9  4007 0001:002905D5  4008 0001:0029061D  4009 0001:00290629
+  4010 0001:0029066D  4011 0001:0029067D  4012 0001:00290689  4013 0001:002906D1
+  4014 0001:002906DD  4016 0001:00290725  4019 0001:00290745  4021 0001:00290765
+  4022 0001:00290771  4023 0001:002907B9  4025 0001:002907C5  4026 0001:00290804
+  4027 0001:0029084A  4028 0001:00290852  4029 0001:00290873  4034 0001:00290885
+  4035 0001:002908A7  4036 0001:002908CA  4037 0001:002908DA  4038 0001:00290926
+  4039 0001:00290932  4040 0001:002909C5  4042 0001:00290A08  4043 0001:00290A56
+  4044 0001:00290A6E  4046 0001:00290AB1  4047 0001:00290AF8  4048 0001:00290B10
+  4049 0001:00290B55  4050 0001:00290B65  4051 0001:00290B7D  4052 0001:00290BCC
+  4054 0001:00290C17  4055 0001:00290C5D  4057 0001:00290C9B  4058 0001:00290CE6
+  4060 0001:00290D31  4063 0001:00290D51  4065 0001:00290D71  4066 0001:00290DB9
+  4067 0001:00290DE8  4070 0001:00290E15  4072 0001:00290E1F  4073 0001:00290E8A
+  4076 0001:00290EB1  4077 0001:00290ED9  4079 0001:00290F4E  4081 0001:00290F75
+  4082 0001:00290F8B  4083 0001:00290FB2  4084 0001:00290FD9  4085 0001:00291000
+  4086 0001:0029100D  4087 0001:00291034  4088 0001:0029104A  4090 0001:00291060
+  4091 0001:002910A3  4092 0001:002910E0  4093 0001:00291104  4094 0001:00291117
+  4097 0001:00291124  4102 0001:00291228  4103 0001:00291251  4104 0001:002912C7
+  4106 0001:002912E6  4107 0001:00291300  4110 0001:00291343  4111 0001:0029135D
+  4113 0001:00291375  4114 0001:00291394  4115 0001:002913B3  4116 0001:002913CF
+  4117 0001:002913EB  4118 0001:00291407  4119 0001:00291423  4121 0001:0029143D
+  4129 0001:00291504  4130 0001:0029152F  4131 0001:00291533  4136 0001:002915FD
+  4137 0001:00291601  4138 0001:00291614  4139 0001:00291627  4141 0001:00291633
+  4142 0001:00291646  4143 0001:0029167D  4144 0001:0029169B  4146 0001:002916BC
+  4151 0001:002916EB  4152 0001:0029170F  4155 0001:00291724  4156 0001:0029173B
+  4157 0001:00291760  4158 0001:002917A1  4160 0001:002917C6  4162 0001:002917CC
+  4164 0001:002917E2  4166 0001:00291816  4167 0001:00291829  4168 0001:0029183A
+  4170 0001:0029184A  4171 0001:00291852  4172 0001:00291865  4173 0001:0029189C
+  4175 0001:002918BA  4176 0001:002918DE  4179 0001:002918F3  4180 0001:0029191B
+  4181 0001:00291940  4182 0001:00291992  4185 0001:002919B7  4200 0001:00291A80
+  4201 0001:00291AB8  4202 0001:00291AC0  4205 0001:00291AEF  4206 0001:00291AFA
+  4208 0001:00291B00  4209 0001:00291B0C  4210 0001:00291B16  4211 0001:00291B32
+  4212 0001:00291B3A  4216 0001:00291B46  4218 0001:00291B63  4224 0001:00291BC4
+  4226 0001:00291BE6  4228 0001:00291BEB  4229 0001:00291C42  4230 0001:00291C6A
+  4231 0001:00291C94  4233 0001:00291CC0  4234 0001:00291CD8  4236 0001:00291CEE
+  4237 0001:00291D01  4239 0001:00291D1C  4241 0001:00291D45  4242 0001:00291D4F
+  4244 0001:00291D54  4245 0001:00291D71  4246 0001:00291D7F  4247 0001:00291DA3
+  4249 0001:00291DC3  4250 0001:00291DE6  4251 0001:00291DF9  4252 0001:00291E0E
+  4255 0001:00291E38  4256 0001:00291E57  4259 0001:00291E86  4260 0001:00291EA4
+  4261 0001:00291EAC  4263 0001:00291ED5  4264 0001:00291EDF  4266 0001:00291EE4
+  4267 0001:00291F01  4268 0001:00291F0F  4269 0001:00291F33  4271 0001:00291F53
+  4272 0001:00291F76  4273 0001:00291F86  4274 0001:00291F97  4277 0001:00291FBC
+  4278 0001:00291FCC  4281 0001:0029200C  4282 0001:00292014  4283 0001:0029201C
+  4284 0001:0029204C  4285 0001:0029207B  4293 0001:00292080  4294 0001:002920A5
+  4295 0001:002920B5  4296 0001:002920D6  4297 0001:002920E1  4298 0001:002920E5
+  4299 0001:002920F5  4301 0001:00292106  4302 0001:00292116  4303 0001:0029212C
+  4305 0001:0029213D  4306 0001:00292167  4307 0001:0029216F  4309 0001:00292185
+  4310 0001:00292189  4311 0001:00292191  4313 0001:002921A6  4314 0001:002921B1
+  4315 0001:002921B9  4317 0001:002921DB  4318 0001:002921EF  4319 0001:00292203
+  4320 0001:00292228  4322 0001:0029222E  4323 0001:00292240  4324 0001:00292269
+  4328 0001:0029228E  4332 0001:00292298  4333 0001:0029229F  4335 0001:002922C3
+  4337 0001:002922FD  4338 0001:00292303  4340 0001:00292305  4333 0001:00292308
+  4342 0001:0029230D  4345 0001:00292317  4347 0001:00292355  4348 0001:00292382
+  4349 0001:002923AF  4350 0001:002923CC  4353 0001:002923FD  4354 0001:0029244A
+  4357 0001:0029248B  4359 0001:00292491  4360 0001:0029249C  4368 0001:002924CC
+  4371 0001:0029252A  4372 0001:00292554  4374 0001:00292584  4377 0001:002925AD
+  4378 0001:002925D7  4379 0001:002925F9  4381 0001:002925FD  4315 0001:00292600
+  4383 0001:00292609  4385 0001:0029261F  4386 0001:00292659  4387 0001:00292664
+  4389 0001:0029267D  4390 0001:00292689  4391 0001:00292693  4392 0001:00292701
+  4396 0001:0029270A  4397 0001:00292711  4399 0001:00292735  4401 0001:0029277B
+  4402 0001:00292781  4404 0001:00292783  4397 0001:00292786  4405 0001:0029278B
+  4407 0001:00292795  4408 0001:002927C8  4410 0001:002927F5  4411 0001:002927FF
+  4412 0001:00292838  4416 0001:00292854  4419 0001:0029287B  4420 0001:002928BA
+  4421 0001:00292905  4423 0001:00292912  4436 0001:0029291D  4438 0001:00292951
+  4439 0001:00292986  4440 0001:0029298E  4444 0001:002929CC  4445 0001:002929D7
+  4447 0001:002929F2  4449 0001:00292A03  4450 0001:00292A1F  4452 0001:00292A38
+  4454 0001:00292A5B  4456 0001:00292A6E  4457 0001:00292A7B  4458 0001:00292AAC
+  4459 0001:00292AB8  4460 0001:00292AEB  4461 0001:00292B1E  4464 0001:00292B42
+  4466 0001:00292B90  4468 0001:00292B9F  4469 0001:00292BAF  4472 0001:00292BD8
+  4473 0001:00292BE9  4475 0001:00292C12  4476 0001:00292C22  4477 0001:00292C6C
+  4478 0001:00292C7C  4479 0001:00292CC6  4480 0001:00292CD6  4481 0001:00292CE1
+  4484 0001:00292EA4  4485 0001:00292ECA  4486 0001:00292ED6  4488 0001:00292F01
+  4489 0001:00292F39  4491 0001:00292F68  4492 0001:00292F91  4493 0001:00292FAF
+  4495 0001:00292FB9  4498 0001:00292FE4  4499 0001:00292FF0  4500 0001:00293000
+  4501 0001:00293006  4502 0001:00293018  4503 0001:00293023  4516 0001:00293028
+  4518 0001:0029304B  4519 0001:0029305B  4520 0001:00293066  4521 0001:00293072
+  4523 0001:0029307C  4524 0001:00293084  4525 0001:0029308C  4526 0001:00293094
+  4527 0001:00293098  4528 0001:002930B0  4530 0001:002930BA  4531 0001:002930CE
+  4532 0001:002930E6  4533 0001:0029312C  4534 0001:00293130  4535 0001:00293148
+  4536 0001:0029315C  4537 0001:0029317D  4538 0001:00293195  4539 0001:002931A9
+  4541 0001:002931C6  4542 0001:002931DD  4545 0001:002931FF  4546 0001:0029321C
+  4547 0001:00293230  4548 0001:00293248  4549 0001:0029325C  4550 0001:00293274
+  4551 0001:00293288  4552 0001:002932A0  4553 0001:002932B4  4554 0001:002932CC
+  4528 0001:002932E5  4557 0001:002932EF  4559 0001:002932F8  4558 0001:002932FB
+  4560 0001:00293318  4561 0001:00293350  4563 0001:00293366  4564 0001:0029336F
+  4566 0001:002933AD  4567 0001:002933DC  4561 0001:002933DF  4568 0001:002933E4
+  4569 0001:002933EF  4570 0001:0029341D  4572 0001:00293446  4574 0001:00293456
+  4575 0001:00293461  4577 0001:00293472  4578 0001:0029349C  4579 0001:002934AB
+  4581 0001:002934BB  4600 0001:002934EB  4602 0001:0029351B  4604 0001:0029352B
+  4605 0001:00293536  4606 0001:00293576  4608 0001:00293598  4609 0001:0029359E
+  4610 0001:002935AA  4613 0001:002935BF  4615 0001:002935DD  4616 0001:0029360A
+  4619 0001:00293618  4620 0001:00293628  4621 0001:00293638  4622 0001:00293648
+  4623 0001:00293658  4624 0001:00293668  4625 0001:0029367D  4626 0001:00293689
+  4627 0001:002936C7  4628 0001:002936F6  4629 0001:0029372B  4630 0001:00293753
+  4631 0001:00293776  4632 0001:002937B7  4633 0001:002937C3  4634 0001:002937DA
+  4635 0001:002937E4  4640 0001:002938A4  4641 0001:002938CC  4643 0001:002938F8
+  4644 0001:00293903  4647 0001:00293908  4649 0001:0029391D  4651 0001:0029393C
+  4654 0001:0029398C  4655 0001:0029399D  4658 0001:0029399F  4649 0001:002939A2
+  4660 0001:002939A7  4661 0001:002939BF  4662 0001:002939D5  4672 0001:002939E9
+  4673 0001:002939F3  4674 0001:00293A04  4680 0001:00293A0F  4683 0001:00293B28
+  4685 0001:00293B34  4686 0001:00293B3F  4700 0001:00293B44  4702 0001:00293B64
+  4704 0001:00293B92  4705 0001:00293BA3  4706 0001:00293BB4  4709 0001:00293BD1
+  4711 0001:00293C1D  4712 0001:00293C30  4716 0001:00293C35  4718 0001:00293C6A
+  4719 0001:00293C7D  4723 0001:00293C82  4724 0001:00293CA6  4726 0001:00293CCC
+  4730 0001:00293CE4  4731 0001:00293CF7  4734 0001:00293CF9  4735 0001:00293D04
+  4743 0001:00293FF0  4744 0001:00294024  4745 0001:0029402C  4746 0001:00294039
+  4747 0001:0029404E  4748 0001:0029408F  4749 0001:002940A5  4751 0001:002940B6
+  4753 0001:002940C9  4754 0001:002940D9  4757 0001:002940EB  4759 0001:00294127
+  4761 0001:00294161  4763 0001:00294172  4764 0001:00294180  4767 0001:0029418C
+  4769 0001:002941B2  4777 0001:00294220  4778 0001:0029424E  4780 0001:00294270
+  4782 0001:0029429A  4784 0001:002942EC  4786 0001:0029432E  4787 0001:00294349
+  4789 0001:0029434F  4791 0001:00294382  4792 0001:0029439B  4797 0001:002943AE
+  4800 0001:002943C7  4802 0001:002943C9  4778 0001:002943CC  4803 0001:002943D5
+  4808 0001:00294478  4810 0001:00294484  4811 0001:0029448B  4812 0001:00294496
+  4817 0001:0029449C  4819 0001:002944A9  4820 0001:002944C7  4821 0001:002944DB
+  4827 0001:002944E0  4830 0001:00294503  4832 0001:00294518  4833 0001:00294528
+  4834 0001:00294549  4835 0001:00294553  4839 0001:00294581  4841 0001:002945C0
+  4842 0001:002945EC  4845 0001:002945F7  4846 0001:00294606  4848 0001:00294611
+  4849 0001:0029461C  4853 0001:00294674  4855 0001:00294683  4859 0001:002946C1
+  4861 0001:002946E7  4862 0001:002946FA  4867 0001:00294707  4869 0001:0029472D
+  4870 0001:00294740  4875 0001:0029474D  4876 0001:00294775  4880 0001:0029477F
+  4881 0001:0029478A  4885 0001:00294794  4886 0001:0029479F  4890 0001:002947A9
+  4892 0001:002947AF  4893 0001:002947C0  4895 0001:002947CA  4897 0001:002947D0
+  4898 0001:002947E1  4902 0001:002947E9  4905 0001:002947F0  4907 0001:002947FC
+  4908 0001:00294807  4909 0001:00294812  4914 0001:00294818  4915 0001:00294824
+  4916 0001:00294842  4917 0001:00294846  4918 0001:00294852  4920 0001:0029485E
+  4921 0001:00294862  4922 0001:0029487A  4923 0001:00294894  4924 0001:002948AD
+  4925 0001:002948B1  4926 0001:002948B3  4921 0001:002948B6  4928 0001:002948BB
+  4933 0001:002948C4  4934 0001:002948D0  4935 0001:002948EE  4936 0001:002948F2
+  4937 0001:002948FE  4939 0001:0029490A  4940 0001:0029490E  4941 0001:00294926
+  4942 0001:00294940  4943 0001:00294959  4944 0001:0029495D  4945 0001:0029495F
+  4940 0001:00294962  4947 0001:00294967  4950 0001:00294970  4951 0001:00294977
+  4952 0001:00294983  4953 0001:00294993  4955 0001:0029499E  4958 0001:002949A4
+  4959 0001:002949AB  4960 0001:002949B7  4961 0001:002949C7  4963 0001:002949D2
+  4966 0001:002949D8  4973 0001:002949E7  4974 0001:00294A03  4975 0001:00294A09
+  4979 0001:00294A10  4980 0001:00294A1F  4981 0001:00294A31  4984 0001:00294A54
+  4985 0001:00294A8E  4986 0001:00294A96  4988 0001:00294AA7  4991 0001:00294AB0
+  4993 0001:00294ABC  4994 0001:00294AC7  4995 0001:00294AD2  4998 0001:00294AD8
+  5000 0001:00294AE4  5001 0001:00294AEF  5002 0001:00294AFA  5005 0001:00294B00
+  5006 0001:00294B0C  5007 0001:00294B17  5008 0001:00294B1F  5009 0001:00294B27
+  5013 0001:00294B2C  5015 0001:00294B3B  5017 0001:00294B4D  5018 0001:00294B5E
+  5020 0001:00294B66  5023 0001:00294B6C  5025 0001:00294B78  5026 0001:00294B86
+  5027 0001:00294B97  5033 0001:00294BD8  5034 0001:00294BFA  5035 0001:00294C05
+  5036 0001:00294C2E  5037 0001:00294C55  5038 0001:00294C60  5039 0001:00294C6B
+  5040 0001:00294C7A  5041 0001:00294CA3  5042 0001:00294CAE  5043 0001:00294CCF
+  5047 0001:00294D10  5049 0001:00294D1F  5050 0001:00294D2D  5051 0001:00294D3E
+  5058 0001:00294D80  5059 0001:00294DB9  5060 0001:00294DC1  5061 0001:00294DC9
+  5062 0001:00294DD7  5064 0001:00294DE5  5065 0001:00294E05  5066 0001:00294E3A
+  5067 0001:00294E49  5068 0001:00294E56  5069 0001:00294E74  5070 0001:00294E81
+  5071 0001:00294E90  5072 0001:00294E9D  5073 0001:00294EBB  5074 0001:00294EC8
+  5075 0001:00294ED7  5076 0001:00294EE4  5077 0001:00294EEA  5078 0001:00294EF7
+  5079 0001:00294EFD  5080 0001:00294F0A  5081 0001:00294F10  5082 0001:00294F1D
+  5083 0001:00294F23  5084 0001:00294F30  5085 0001:00294F36  5086 0001:00294F43
+  5087 0001:00294F49  5088 0001:00294F56  5089 0001:00294F5C  5090 0001:00294F69
+  5091 0001:00294F6F  5092 0001:00294F7C  5093 0001:00294F82  5094 0001:00294F8F
+  5095 0001:00294F95  5096 0001:00294FA2  5098 0001:00294FBF  5099 0001:00294FDC
+  5101 0001:00294FEC  5102 0001:00294FFA  5103 0001:00295002  5106 0001:00295028
+  5108 0001:00295035  5113 0001:002951C4  5114 0001:002951E2  5115 0001:002951EA
+  5117 0001:002951F6  5118 0001:00295207  5122 0001:00295219  5123 0001:0029522C
+  5124 0001:0029524F  5125 0001:00295272  5127 0001:00295294  5133 0001:002952BC
+  5134 0001:002952C5  5135 0001:002952C9  5136 0001:002952CD  5137 0001:002952D6
+  5138 0001:002952EC  5139 0001:00295308  5140 0001:00295334  5141 0001:00295338
+  5145 0001:00295340  5147 0001:0029534F  5151 0001:002953CC  5152 0001:002953FA
+  5153 0001:00295418  5154 0001:00295428  5158 0001:00295430  5159 0001:0029543C
+  5160 0001:0029544C  5162 0001:00295452  5163 0001:00295489  5165 0001:00295499
+  5166 0001:002954AF  5169 0001:002954B4  5170 0001:002954C0  5172 0001:002954D0
+  5173 0001:002954E0  5174 0001:002954F0  5175 0001:00295517  5176 0001:0029552B
+  5177 0001:00295549  5179 0001:00295559  5180 0001:00295582  5184 0001:0029558E
+  5185 0001:0029559E  5186 0001:002955AE  5188 0001:002955BA  5189 0001:002955E3
+  5192 0001:002955ED  5196 0001:002955F4  5197 0001:00295603  5198 0001:0029560F
+  5199 0001:00295619  5200 0001:00295623  5201 0001:00295631  5206 0001:00295638
+  5207 0001:00295656  5208 0001:0029565E  5210 0001:0029566A  5211 0001:0029567B
+  5215 0001:0029568D  5216 0001:002956A0  5217 0001:002956C3  5218 0001:002956E6
+  5220 0001:00295708  5223 0001:00295730  5225 0001:0029573C  5230 0001:00295754
+  5232 0001:00295766  5233 0001:00295779  5235 0001:00295784  5237 0001:00295795
+  5238 0001:002957A8  5241 0001:002957B3  5244 0001:00295850  5246 0001:0029586F
+  5247 0001:0029589B  5248 0001:002958A6  5251 0001:002958D8  5252 0001:002958F7
+  5254 0001:00295901  5255 0001:00295939  5258 0001:00295950  5259 0001:0029597F
+  5262 0001:002959B0  5263 0001:002959BC  5264 0001:002959C6  5265 0001:002959D1
+  5268 0001:002959D8  5270 0001:002959FA  5271 0001:00295A1C  5272 0001:00295A2D
+  5273 0001:00295A3E  5278 0001:00295A64  5284 0001:00295A96  5285 0001:00295AC4
+  5287 0001:00295AF0  5289 0001:00295AFC  5290 0001:00295B18  5291 0001:00295B1E
+  5293 0001:00295B29  5295 0001:00295B81  5296 0001:00295B8B  5300 0001:00295BA3
+  5301 0001:00295BAD  5302 0001:00295BBD  5303 0001:00295BC8  5305 0001:00295BFB
+  5326 0001:00295CC0  5327 0001:00295CEE  5328 0001:00295CF3  5329 0001:00295CF7
+  5330 0001:00295D01  5331 0001:00295D23  5332 0001:00295DDB  5330 0001:00295DE1
+  5333 0001:00295DEA  5334 0001:00295DF2  5337 0001:00295E24  5339 0001:00295E2D
+  5340 0001:00295E31  5341 0001:00295E52  5342 0001:00295E56  5346 0001:00295E60
+  5347 0001:00295E6C  5348 0001:00295E7A  5352 0001:00295E84  5353 0001:00295EAF
+  5354 0001:00295EB6  5356 0001:00295ED4  5358 0001:00295EEF  5359 0001:00295EF5
+  5361 0001:00295EF7  5354 0001:00295EFA  5362 0001:00295EFF  5366 0001:00295F2C
+  5370 0001:00295F38  5371 0001:00295F49  5376 0001:00295F50  5378 0001:00295F70
+  5379 0001:00295F81  5382 0001:00295FD9  5383 0001:00295FEA  5385 0001:00295FF2
+  5386 0001:00296003  5387 0001:0029602A  5389 0001:00296058  5390 0001:00296083
+  5391 0001:0029608E  5394 0001:00296188  5396 0001:00296194  5397 0001:0029619F
+  5398 0001:002961AA  5401 0001:002961B0  5403 0001:002961D2  5404 0001:00296211
+  5408 0001:00296225  5409 0001:00296248  5411 0001:00296266  5412 0001:00296276
+  5413 0001:00296284  5414 0001:0029628C  5415 0001:00296294  5417 0001:002962B5
+  5418 0001:002962CF  5419 0001:002962ED  5421 0001:00296300  5422 0001:00296312
+  5424 0001:00296325  5427 0001:00296336  5430 0001:0029635C  5432 0001:00296368
+  5433 0001:00296376  5437 0001:0029637C  5440 0001:0029638B  5441 0001:0029639C
+  5443 0001:002963A9  5444 0001:002963B3  5448 0001:002963BC  5451 0001:002963DF
+  5452 0001:002963F0  5455 0001:002963FD  5456 0001:00296431  5458 0001:0029643B
+  5461 0001:00296460  5463 0001:0029646C  5464 0001:0029647A  5467 0001:00296480
+  5469 0001:0029648C  5470 0001:0029649A  5473 0001:002964A0  5475 0001:002964AC
+  5476 0001:002964B7  5479 0001:002964BC  5481 0001:002964C8  5482 0001:002964D6
+  5485 0001:002964DC  5486 0001:002964FF  5488 0001:00296509  5490 0001:0029651B
+  5491 0001:0029654E  5492 0001:0029655F  5494 0001:00296575  5496 0001:00296586
+  5497 0001:00296597  5500 0001:002965AD  5501 0001:002965B8  5504 0001:002965E0
+  5507 0001:002965ED  5508 0001:0029660B
+
+Line numbers for fODMeds(Orders\fODMeds.pas) segment .itext
+
+  5511 0002:000016F0
+
+Line numbers for fLabCollTimes(fLabCollTimes.pas) segment .text
+
+    42 0001:00296900    43 0001:00296909    44 0001:00296920    47 0001:0029692E
+    48 0001:00296954    49 0001:00296983    50 0001:00296990    51 0001:0029699B
+    54 0001:002969B8    56 0001:002969C8    59 0001:002969D0    60 0001:002969D4
+    62 0001:002969DA    63 0001:002969E4    64 0001:00296A0D    66 0001:00296A19
+    69 0001:00296A1C    70 0001:00296A3F    72 0001:00296A58    73 0001:00296A64
+    74 0001:00296AAB    77 0001:00296AB4    78 0001:00296ABF    81 0001:00296B00
+    82 0001:00296B03    83 0001:00296B0E    84 0001:00296B15    87 0001:00296B18
+    88 0001:00296B1B    89 0001:00296B44    90 0001:00296B52    94 0001:00296B54
+    95 0001:00296B59    99 0001:00296B5C   100 0001:00296B63   101 0001:00296B80
+   102 0001:00296BA3   103 0001:00296BC6   104 0001:00296BE9   106 0001:00296C0A
+   108 0001:00296C46
+
+Line numbers for fODLabImmedColl(Orders\fODLabImmedColl.pas) segment .text
+
+    47 0001:00296E9C    48 0001:00296EBE    49 0001:00296ED5    50 0001:00296EE3
+    53 0001:00296EEB    54 0001:00296EFB    55 0001:00296F06    58 0001:00296F23
+    60 0001:00296F33    63 0001:00296F58    64 0001:00296F5B    65 0001:00296F6B
+    66 0001:00296F72    71 0001:00296F80    72 0001:00296F9B    74 0001:00296FB2
+    75 0001:00296FC5    77 0001:00296FCA    79 0001:00296FE5    80 0001:00296FFF
+    81 0001:00297021    84 0001:0029703F    85 0001:0029706E    89 0001:00297070
+    90 0001:00297080    91 0001:00297087    95 0001:00297160    96 0001:00297163
+    97 0001:00297179    98 0001:0029718C   100 0001:0029719F   101 0001:002971B6
+   102 0001:002971C3   106 0001:002971C8   107 0001:002971CB   109 0001:002971D1
+   110 0001:002971D6   112 0001:002971E1   114 0001:00297213
+
+Line numbers for fODLabOthCollSamp(Orders\fODLabOthCollSamp.pas) segment .text
+
+    40 0001:00297438    41 0001:0029745D    42 0001:00297474    45 0001:00297482
+    46 0001:0029748F    47 0001:0029749A    48 0001:002974A5    49 0001:002974B2
+    50 0001:002974CE    51 0001:002974EA    53 0001:00297507    54 0001:0029752A
+    55 0001:00297557    56 0001:0029756E    51 0001:00297571    57 0001:00297574
+    58 0001:0029757F    61 0001:0029759D    63 0001:002975AD    66 0001:00297600
+    67 0001:00297603    68 0001:00297613    69 0001:0029761A    72 0001:00297628
+    73 0001:0029763F    75 0001:00297654    76 0001:00297667    78 0001:00297669
+    79 0001:00297682    81 0001:002976AF    82 0001:002976BF    83 0001:002976C6
+    87 0001:0029774C    88 0001:00297753    90 0001:00297782
+
+Line numbers for fODLab(Orders\fODLab.pas) segment .text
+
+   210 0001:0029816C   211 0001:00298191   212 0001:002981A5   213 0001:002981AC
+   214 0001:002981B5   215 0001:002981C4   216 0001:002981D2   217 0001:002981DC
+   218 0001:002981E6   219 0001:002981F0   220 0001:002981FA   221 0001:00298204
+   222 0001:0029820E   223 0001:00298219   224 0001:00298224   225 0001:0029822F
+   226 0001:00298239   227 0001:00298245   228 0001:0029824D   229 0001:00298255
+   230 0001:0029826B   231 0001:00298272   232 0001:0029827C   233 0001:00298287
+   234 0001:00298294   235 0001:002982A6   236 0001:002982C3   237 0001:002982D3
+   238 0001:002982DD   240 0001:002982EB   241 0001:00298310   242 0001:0029833B
+   243 0001:00298345   245 0001:00298358   247 0001:00298373   248 0001:0029838C
+   249 0001:0029839A   250 0001:002983A4   252 0001:002983AA   253 0001:002983BC
+   254 0001:002983D9   255 0001:002983E2   256 0001:002983F5   257 0001:00298400
+   259 0001:00298412   260 0001:00298422   261 0001:00298445   262 0001:0029844F
+   263 0001:00298461   264 0001:00298481   265 0001:0029848E   266 0001:002984A0
+   268 0001:002984A6   269 0001:002984CA   271 0001:002984EE   272 0001:002984FB
+   274 0001:00298508   275 0001:00298512   277 0001:0029851B   278 0001:0029852C
+   280 0001:00298536   281 0001:0029854F   282 0001:00298572   283 0001:0029857B
+   284 0001:00298588   286 0001:00298595   287 0001:002985A2   288 0001:002985AF
+   289 0001:002985BC   290 0001:002985C9   291 0001:002985D6   292 0001:002985E3
+   294 0001:002985F7   296 0001:00298607   299 0001:00298758   300 0001:00298771
+   301 0001:00298778   302 0001:0029877F   304 0001:00298788   305 0001:00298794
+   307 0001:0029879B   309 0001:002987A1   310 0001:002987B1   312 0001:002987E7
+   313 0001:002987F4   314 0001:002987FB   315 0001:0029880C   316 0001:00298819
+   317 0001:00298827   318 0001:0029882E   319 0001:00298835   325 0001:00298878
+   326 0001:002988A0   327 0001:002988A9   328 0001:002988B0   330 0001:002988B9
+   331 0001:002988CA   333 0001:002988E5   335 0001:002988FD   336 0001:0029891D
+   338 0001:00298926   340 0001:00298940   341 0001:00298955   342 0001:0029895E
+   343 0001:0029896B   344 0001:00298972   345 0001:00298987   346 0001:0029899C
+   347 0001:002989B0   349 0001:002989C3   350 0001:002989CE   352 0001:002989DA
+   353 0001:002989E4   354 0001:00298A0F   357 0001:00298A19   358 0001:00298A22
+   359 0001:00298A2F   360 0001:00298A43   362 0001:00298A5E   363 0001:00298A69
+   365 0001:00298A79   366 0001:00298A82   367 0001:00298AAA   368 0001:00298AD5
+   372 0001:00298AE1   373 0001:00298AFB   374 0001:00298B18   375 0001:00298B4D
+   376 0001:00298B62   378 0001:00298B77   379 0001:00298B87   380 0001:00298B9A
+   381 0001:00298BC2   383 0001:00298BCF   384 0001:00298BEC   385 0001:00298BF1
+   386 0001:00298C05   388 0001:00298C09   389 0001:00298C19   390 0001:00298C1A
+   386 0001:00298C2E   392 0001:00298C32   393 0001:00298C38   395 0001:00298C43
+   396 0001:00298C5C   398 0001:00298C7F   399 0001:00298C88   400 0001:00298C8F
+   402 0001:00298C98   412 0001:00298D78   413 0001:00298DAF   414 0001:00298DBE
+   415 0001:00298DCC   418 0001:00298DD6   419 0001:00298DDF   420 0001:00298DEC
+   421 0001:00298E1D   422 0001:00298E4E   423 0001:00298E6C   424 0001:00298E99
+   425 0001:00298EA9   426 0001:00298EC9   427 0001:00298EE9   428 0001:00298F06
+   429 0001:00298F10   430 0001:00298F24   431 0001:00298F33   432 0001:00298F5C
+   433 0001:00298F6E   435 0001:00298F94   436 0001:00298F9B   437 0001:00298FB9
+   438 0001:00298FEC   442 0001:00298FF4   443 0001:00299007   444 0001:00299017
+   446 0001:00299029   448 0001:00299035   449 0001:00299047   450 0001:0029905B
+   451 0001:0029906A   452 0001:00299072   453 0001:00299084   454 0001:00299091
+   455 0001:002990A8   458 0001:002990DA   459 0001:002990E9   460 0001:002990F7
+   461 0001:0029910E   463 0001:0029912F   466 0001:0029913F   467 0001:0029915C
+   470 0001:00299178   472 0001:00299188   473 0001:00299190   478 0001:002992E4
+   479 0001:002992F5   480 0001:002992FC   481 0001:0029930F   483 0001:0029931C
+   484 0001:00299324   485 0001:0029932B   480 0001:0029932C   486 0001:0029932F
+   487 0001:00299337   488 0001:0029933F   489 0001:00299347   490 0001:0029934F
+   491 0001:00299357   492 0001:00299365   497 0001:0029937C   498 0001:00299383
+   499 0001:0029938A   500 0001:002993A1   502 0001:002993A6   503 0001:002993A9
+   504 0001:002993AB   499 0001:002993AC   505 0001:002993AF   511 0001:002993B8
+   512 0001:002993DA   513 0001:002993E9   514 0001:002993F8   515 0001:00299406
+   516 0001:0029940E   517 0001:0029941B   518 0001:0029942B   519 0001:0029943D
+   518 0001:00299477   521 0001:00299487   522 0001:0029948F   524 0001:0029949F
+   533 0001:002994DC   534 0001:00299509   535 0001:0029950C   536 0001:00299527
+   537 0001:00299533   538 0001:0029954F   539 0001:00299576   540 0001:00299577
+   541 0001:00299586   543 0001:0029959E   546 0001:002995AD   547 0001:002995F0
+   548 0001:0029961D   549 0001:0029964A   550 0001:00299679   551 0001:002996A6
+   552 0001:002996D3   553 0001:00299702   554 0001:00299731   555 0001:00299740
+   556 0001:0029976D   557 0001:0029977F   558 0001:00299793   559 0001:002997A1
+   560 0001:002997A9   562 0001:002997B5   564 0001:002997C6   565 0001:002997DA
+   566 0001:00299817   567 0001:00299818   568 0001:0029983B   573 0001:00299890
+   574 0001:00299894   575 0001:00299899   576 0001:002998A1   577 0001:002998AC
+   578 0001:002998B2   579 0001:002998C6   580 0001:002998D3   581 0001:002998E2
+   583 0001:002998F8   584 0001:002998FE   586 0001:0029990F   590 0001:00299928
+   591 0001:0029992B   592 0001:00299930   595 0001:00299934   596 0001:0029993A
+   597 0001:00299946   600 0001:0029994C   601 0001:00299952   602 0001:0029995E
+   605 0001:00299964   606 0001:00299967   607 0001:0029996F   612 0001:00299974
+   613 0001:00299979   614 0001:0029997B   615 0001:00299987   616 0001:0029999A
+   623 0001:002999A0   624 0001:002999C4   625 0001:002999CC   627 0001:002999F6
+   628 0001:00299A19   629 0001:00299A46   630 0001:00299A57   631 0001:00299A6C
+   625 0001:00299A6D   632 0001:00299A76   639 0001:00299A93   640 0001:00299AA6
+   642 0001:00299ACF   649 0001:00299B54   650 0001:00299B76   651 0001:00299B7D
+   653 0001:00299B8C   654 0001:00299BA0   655 0001:00299BAE   656 0001:00299BBE
+   657 0001:00299BD2   658 0001:00299BDF   659 0001:00299BF1   660 0001:00299BF8
+   662 0001:00299C09   666 0001:00299C27   667 0001:00299C33   669 0001:00299C47
+   670 0001:00299C78   672 0001:00299C81   673 0001:00299C95   675 0001:00299CA2
+   676 0001:00299CC2   679 0001:00299CCF   680 0001:00299CEE   685 0001:00299D68
+   686 0001:00299D85   688 0001:00299D93   689 0001:00299D9D   691 0001:00299DAB
+   692 0001:00299DB9   693 0001:00299DCB   694 0001:00299DD9   696 0001:00299DEB
+   698 0001:00299DF4   700 0001:00299E16   701 0001:00299E24   703 0001:00299E3A
+   706 0001:00299E4F   708 0001:00299E65   710 0001:00299E6E   712 0001:00299E92
+   713 0001:00299EA0   715 0001:00299EB6   718 0001:00299ECB   720 0001:00299EE1
+   722 0001:00299EEA   724 0001:00299F0C   725 0001:00299F1A   727 0001:00299F2D
+   730 0001:00299F3F   732 0001:00299F52   734 0001:00299F5D   735 0001:00299F6B
+   737 0001:00299F7D   740 0001:00299F8B   742 0001:00299F9B   743 0001:00299FBE
+   748 0001:0029A038   751 0001:0029A06B   752 0001:0029A073   753 0001:0029A088
+   756 0001:0029A0C0   752 0001:0029A0E2   757 0001:0029A0E5   758 0001:0029A0FC
+   760 0001:0029A10C   761 0001:0029A11C   763 0001:0029A12A   768 0001:0029A168
+   769 0001:0029A16F   770 0001:0029A176   771 0001:0029A182   772 0001:0029A19D
+   777 0001:0029A1A4   778 0001:0029A1CB   779 0001:0029A1D3   780 0001:0029A1EF
+   781 0001:0029A206   782 0001:0029A22A   784 0001:0029A26A   785 0001:0029A28A
+   786 0001:0029A28C   782 0001:0029A28D   787 0001:0029A292   792 0001:0029A2BC
+   793 0001:0029A2E3   794 0001:0029A2EB   796 0001:0029A304   797 0001:0029A334
+   798 0001:0029A354   799 0001:0029A356   794 0001:0029A357   800 0001:0029A35A
+   804 0001:0029A384   805 0001:0029A38A   810 0001:0029A38C   811 0001:0029A391
+   812 0001:0029A393   813 0001:0029A39F   814 0001:0029A3B6   815 0001:0029A3BE
+   819 0001:0029A3C4   820 0001:0029A3CA   824 0001:0029A3CC   825 0001:0029A3DD
+   833 0001:0029A3E0   835 0001:0029A407   836 0001:0029A41D   837 0001:0029A434
+   838 0001:0029A438   839 0001:0029A443   842 0001:0029A44E   843 0001:0029A480
+   844 0001:0029A4BC   845 0001:0029A4D5   846 0001:0029A511   847 0001:0029A52A
+   848 0001:0029A564   849 0001:0029A5B2   851 0001:0029A5E3   852 0001:0029A62A
+   855 0001:0029A642   857 0001:0029A67C   858 0001:0029A682   860 0001:0029A6BD
+   861 0001:0029A754   863 0001:0029A7DB   865 0001:0029A805   866 0001:0029A855
+   871 0001:0029A88B   872 0001:0029A891   874 0001:0029A8A8   875 0001:0029A8F8
+   879 0001:0029A92B   880 0001:0029A944   883 0001:0029A94F   884 0001:0029A98C
+   885 0001:0029A9DA   887 0001:0029AA28   888 0001:0029AA4B   889 0001:0029AA6D
+   894 0001:0029AC98   895 0001:0029AC9F   896 0001:0029ACD0   897 0001:0029ACE3
+   931 0001:0029ACF4   932 0001:0029AD1A   934 0001:0029AD24   936 0001:0029AD4B
+   937 0001:0029AD54   939 0001:0029AD93   940 0001:0029AD9F   943 0001:0029ADAD
+   944 0001:0029ADD4   945 0001:0029ADE5   947 0001:0029AE1F   948 0001:0029AE5B
+   950 0001:0029AE9F   951 0001:0029AEC3   952 0001:0029AED4   953 0001:0029AF04
+   954 0001:0029AF15   956 0001:0029AF24   957 0001:0029AF67   958 0001:0029AF7C
+   959 0001:0029AF86   961 0001:0029AF95   962 0001:0029AFA8   963 0001:0029AFB1
+   964 0001:0029AFCF   967 0001:0029B00E   969 0001:0029B018   970 0001:0029B04E
+   972 0001:0029B081   974 0001:0029B089   975 0001:0029B0C3   981 0001:0029B0F6
+   983 0001:0029B137   984 0001:0029B159   985 0001:0029B173   986 0001:0029B19B
+   989 0001:0029B1BE   991 0001:0029B1C4   995 0001:0029B1E8   997 0001:0029B228
+  1002 0001:0029B26E  1008 0001:0029B2C9  1009 0001:0029B2CF  1010 0001:0029B2DA
+  1011 0001:0029B2E8  1013 0001:0029B304  1014 0001:0029B30D  1015 0001:0029B31A
+  1018 0001:0029B337  1019 0001:0029B33D  1020 0001:0029B348  1021 0001:0029B356
+  1023 0001:0029B372  1024 0001:0029B394  1025 0001:0029B3A1  1028 0001:0029B3BE
+  1029 0001:0029B3E5  1031 0001:0029B40C  1033 0001:0029B419  1035 0001:0029B42C
+  1038 0001:0029B442  1040 0001:0029B494  1045 0001:0029B4A5  1046 0001:0029B4CC
+  1049 0001:0029B4DA  1051 0001:0029B52E  1059 0001:0029B540  1061 0001:0029B555
+  1062 0001:0029B557  1064 0001:0029B5CA  1065 0001:0029B5D4  1067 0001:0029B5E3
+  1069 0001:0029B5F6  1071 0001:0029B5FA  1072 0001:0029B604  1074 0001:0029B61C
+  1076 0001:0029B63A  1077 0001:0029B674  1079 0001:0029B696  1080 0001:0029B6E2
+  1081 0001:0029B6F8  1082 0001:0029B713  1084 0001:0029B74D  1086 0001:0029B83F
+  1087 0001:0029B84A  1088 0001:0029B854  1089 0001:0029B879  1090 0001:0029B88A
+  1091 0001:0029B890  1092 0001:0029B8A1  1094 0001:0029B8BA  1095 0001:0029B8D0
+  1096 0001:0029B8DD  1098 0001:0029B8EC  1099 0001:0029B8F9  1101 0001:0029B906
+  1102 0001:0029B922  1103 0001:0029B927  1104 0001:0029B937  1106 0001:0029B944
+  1113 0001:0029B9C4  1114 0001:0029B9E5  1119 0001:0029BA07  1120 0001:0029BA33
+  1121 0001:0029BA7F  1123 0001:0029BA90  1124 0001:0029BAA5  1126 0001:0029BAD7
+  1131 0001:0029BB1C  1134 0001:0029BB2D  1135 0001:0029BB4D  1136 0001:0029BB75
+  1143 0001:0029C2D0  1144 0001:0029C2FD  1145 0001:0029C30C  1146 0001:0029C31A
+  1147 0001:0029C33A  1148 0001:0029C35A  1149 0001:0029C393  1150 0001:0029C3B4
+  1152 0001:0029C3C9  1153 0001:0029C3D8  1154 0001:0029C3E6  1157 0001:0029C3FF
+  1158 0001:0029C42C  1159 0001:0029C450  1160 0001:0029C452  1161 0001:0029C461
+  1163 0001:0029C476  1164 0001:0029C4B8  1165 0001:0029C4E3  1166 0001:0029C4E5
+  1161 0001:0029C4E6  1167 0001:0029C4EB  1169 0001:0029C506  1171 0001:0029C522
+  1175 0001:0029C53F  1177 0001:0029C54F  1181 0001:0029C600  1182 0001:0029C609
+  1183 0001:0029C625  1186 0001:0029C63C  1188 0001:0029C65D  1189 0001:0029C6C6
+  1190 0001:0029C6F1  1191 0001:0029C6FE  1192 0001:0029C70C  1193 0001:0029C71F
+  1200 0001:0029C770  1201 0001:0029C796  1203 0001:0029C79C  1204 0001:0029C801
+  1205 0001:0029C819  1206 0001:0029C831  1207 0001:0029C838  1208 0001:0029C83D
+  1209 0001:0029C848  1210 0001:0029C878  1212 0001:0029C87E  1213 0001:0029C89C
+  1214 0001:0029C8CE  1215 0001:0029C8E2  1216 0001:0029C95F  1218 0001:0029C97D
+  1222 0001:0029C9B9  1223 0001:0029C9CC  1224 0001:0029C9DC  1225 0001:0029C9E5
+  1226 0001:0029C9F5  1227 0001:0029CA2D  1229 0001:0029CA3D  1230 0001:0029CA47
+  1231 0001:0029CA4E  1232 0001:0029CA62  1233 0001:0029CA76  1234 0001:0029CA8A
+  1235 0001:0029CA9D  1237 0001:0029CAB0  1238 0001:0029CABB  1240 0001:0029CAC7
+  1241 0001:0029CAD1  1242 0001:0029CB02  1245 0001:0029CB0E  1246 0001:0029CB17
+  1247 0001:0029CB28  1248 0001:0029CB61  1249 0001:0029CB6A  1250 0001:0029CB77
+  1251 0001:0029CBAF  1252 0001:0029CBC3  1253 0001:0029CBD7  1255 0001:0029CBF6
+  1256 0001:0029CC03  1258 0001:0029CC17  1259 0001:0029CC2A  1261 0001:0029CC42
+  1262 0001:0029CC4C  1264 0001:0029CC5B  1265 0001:0029CC64  1266 0001:0029CC92
+  1267 0001:0029CCC0  1270 0001:0029CCCB  1271 0001:0029CCD4  1272 0001:0029CCE5
+  1273 0001:0029CD1E  1274 0001:0029CD32  1275 0001:0029CD37  1276 0001:0029CD4B
+  1278 0001:0029CD4F  1279 0001:0029CD5F  1280 0001:0029CD60  1276 0001:0029CD74
+  1282 0001:0029CD78  1283 0001:0029CD7E  1285 0001:0029CD89  1286 0001:0029CDA2
+  1288 0001:0029CDC5  1290 0001:0029CDCE  1292 0001:0029CDDC  1293 0001:0029CDE9
+  1298 0001:0029CDFB  1300 0001:0029CE1F  1301 0001:0029CE27  1302 0001:0029CE3D
+  1301 0001:0029CE6C  1303 0001:0029CE71  1304 0001:0029CE8A  1306 0001:0029CE94
+  1307 0001:0029CEA1  1309 0001:0029CEAE  1311 0001:0029CEBC  1312 0001:0029CEC9
+  1315 0001:0029CED8  1316 0001:0029CEE5  1318 0001:0029CEF2  1320 0001:0029CF00
+  1321 0001:0029CF0D  1324 0001:0029CF1C  1325 0001:0029CF29  1327 0001:0029CF36
+  1328 0001:0029CF44  1330 0001:0029CF62  1331 0001:0029CF69  1332 0001:0029CF71
+  1333 0001:0029CF89  1332 0001:0029CFBA  1334 0001:0029CFBF  1335 0001:0029CFD3
+  1336 0001:0029CFFA  1337 0001:0029D010  1336 0001:0029D03F  1338 0001:0029D044
+  1339 0001:0029D05D  1341 0001:0029D067  1342 0001:0029D06E  1343 0001:0029D075
+  1344 0001:0029D083  1350 0001:0029D288  1351 0001:0029D2B0  1354 0001:0029D2D2
+  1355 0001:0029D2E6  1356 0001:0029D2F3  1357 0001:0029D300  1358 0001:0029D329
+  1360 0001:0029D334  1361 0001:0029D341  1364 0001:0029D350  1365 0001:0029D35D
+  1367 0001:0029D36A  1368 0001:0029D375  1370 0001:0029D390  1371 0001:0029D397
+  1373 0001:0029D3BF  1374 0001:0029D3C7  1375 0001:0029D3E1  1374 0001:0029D40D
+  1376 0001:0029D410  1377 0001:0029D429  1380 0001:0029D433  1381 0001:0029D43C
+  1384 0001:0029D484  1385 0001:0029D49F  1386 0001:0029D4A8  1388 0001:0029D4CE
+  1389 0001:0029D4D7  1392 0001:0029D504  1393 0001:0029D521  1394 0001:0029D52A
+  1395 0001:0029D549  1396 0001:0029D565  1397 0001:0029D572  1399 0001:0029D598
+  1400 0001:0029D5A1  1408 0001:0029D5E8  1409 0001:0029D609  1410 0001:0029D616
+  1412 0001:0029D642  1413 0001:0029D64C  1416 0001:0029D66A  1417 0001:0029D673
+  1425 0001:0029D6CC  1426 0001:0029D6E9  1427 0001:0029D710  1428 0001:0029D716
+  1430 0001:0029D761  1431 0001:0029D76E  1432 0001:0029D7A7  1434 0001:0029D7BE
+  1435 0001:0029D7CE  1436 0001:0029D7DB  1440 0001:0029D7EA  1441 0001:0029D7F7
+  1442 0001:0029D804  1443 0001:0029D811  1445 0001:0029D81E  1446 0001:0029D827
+  1449 0001:0029D8B4  1450 0001:0029D8D5  1451 0001:0029D91A  1453 0001:0029D959
+  1454 0001:0029D96C  1455 0001:0029D97A  1457 0001:0029D97C  1458 0001:0029D99F
+  1459 0001:0029D9CB  1460 0001:0029D9D4  1466 0001:0029DA84  1467 0001:0029DAB0
+  1468 0001:0029DAB8  1469 0001:0029DACB  1470 0001:0029DADE  1472 0001:0029DAF1
+  1473 0001:0029DAFE  1474 0001:0029DB0B  1475 0001:0029DB18  1476 0001:0029DB25
+  1477 0001:0029DB32  1478 0001:0029DB3F  1480 0001:0029DB4C  1481 0001:0029DB6A
+  1483 0001:0029DB88  1484 0001:0029DBBE  1487 0001:0029DBE0  1489 0001:0029DBEA
+  1490 0001:0029DC05  1492 0001:0029DC23  1493 0001:0029DC59  1496 0001:0029DC78
+  1497 0001:0029DC81  1499 0001:0029DC97  1501 0001:0029DCAC  1503 0001:0029DCBF
+  1504 0001:0029DCCC  1505 0001:0029DCD9  1506 0001:0029DCE6  1507 0001:0029DCF3
+  1508 0001:0029DD00  1509 0001:0029DD0D  1511 0001:0029DD1A  1512 0001:0029DD38
+  1514 0001:0029DD56  1515 0001:0029DD8C  1518 0001:0029DDAE  1520 0001:0029DDB8
+  1521 0001:0029DDD3  1523 0001:0029DDF1  1524 0001:0029DE27  1527 0001:0029DE46
+  1528 0001:0029DE4F  1530 0001:0029DE65  1532 0001:0029DE7A  1534 0001:0029DE8D
+  1535 0001:0029DE9A  1536 0001:0029DEA7  1537 0001:0029DEB4  1538 0001:0029DEC1
+  1539 0001:0029DECE  1540 0001:0029DEDB  1541 0001:0029DEF1  1542 0001:0029DF05
+  1543 0001:0029DF2E  1544 0001:0029DF37  1545 0001:0029DF4D  1546 0001:0029DF62
+  1547 0001:0029DF8C  1548 0001:0029DF95  1550 0001:0029DFAB  1552 0001:0029DFBD
+  1554 0001:0029DFD0  1555 0001:0029DFDD  1556 0001:0029DFEA  1557 0001:0029DFF7
+  1558 0001:0029E004  1559 0001:0029E011  1560 0001:0029E01E  1561 0001:0029E027
+  1562 0001:0029E02F  1563 0001:0029E038  1564 0001:0029E049  1565 0001:0029E04F
+  1566 0001:0029E05D  1567 0001:0029E066  1569 0001:0029E074  1571 0001:0029E080
+  1572 0001:0029E091  1576 0001:0029E0B4  1577 0001:0029E0CB  1580 0001:0029E0F8
+  1583 0001:0029E240  1584 0001:0029E243  1585 0001:0029E24A  1586 0001:0029E259
+  1587 0001:0029E26D  1590 0001:0029E270  1591 0001:0029E276  1592 0001:0029E27D
+  1593 0001:0029E288  1594 0001:0029E295  1595 0001:0029E2C1  1596 0001:0029E2CF
+  1597 0001:0029E2DD  1598 0001:0029E2EB  1600 0001:0029E2F9  1601 0001:0029E304
+  1602 0001:0029E312  1603 0001:0029E31D  1605 0001:0029E32B  1606 0001:0029E339
+  1608 0001:0029E347  1610 0001:0029E352  1613 0001:0029E358  1615 0001:0029E373
+  1616 0001:0029E390  1619 0001:0029E3B4  1620 0001:0029E3C1  1621 0001:0029E3E3
+  1624 0001:0029E410  1625 0001:0029E41D  1626 0001:0029E426  1629 0001:0029E480
+  1631 0001:0029E49B  1632 0001:0029E4B8  1635 0001:0029E4DC  1636 0001:0029E4E9
+  1637 0001:0029E50B  1640 0001:0029E538  1641 0001:0029E545  1642 0001:0029E54E
+  1645 0001:0029E5B8  1647 0001:0029E5CE  1650 0001:0029E5E3  1651 0001:0029E5F0
+  1653 0001:0029E60B  1654 0001:0029E614  1657 0001:0029E638  1659 0001:0029E654
+  1660 0001:0029E671  1661 0001:0029E677  1663 0001:0029E684  1664 0001:0029E691
+  1665 0001:0029E6B3  1666 0001:0029E6F9  1669 0001:0029E716  1670 0001:0029E723
+  1671 0001:0029E72C  1674 0001:0029E7A4  1676 0001:0029E7BF  1677 0001:0029E7D4
+  1678 0001:0029E7DA  1679 0001:0029E7FA  1681 0001:0029E82C  1682 0001:0029E838
+  1683 0001:0029E83F  1684 0001:0029E848  1687 0001:0029E8A4  1689 0001:0029E8BF
+  1690 0001:0029E8D4  1691 0001:0029E8DA  1692 0001:0029E8FA  1694 0001:0029E92C
+  1695 0001:0029E938  1696 0001:0029E93F  1697 0001:0029E948  1700 0001:0029E9A4
+  1701 0001:0029E9BE  1704 0001:0029E9C7  1705 0001:0029E9D4  1706 0001:0029E9F6
+  1709 0001:0029EA3C  1713 0001:0029EAB4  1714 0001:0029EAC9  1715 0001:0029EACE
+  1718 0001:0029EAD0  1719 0001:0029EAD3  1720 0001:0029EADE  1721 0001:0029EAEB
+  1722 0001:0029EAF8  1723 0001:0029EB05  1724 0001:0029EB12  1725 0001:0029EB1F
+  1726 0001:0029EB2C  1727 0001:0029EB39  1729 0001:0029EB46  1732 0001:0029EB48
+  1734 0001:0029EB4C  1735 0001:0029EB59  1736 0001:0029EB5F  1737 0001:0029EB88
+  1739 0001:0029EB9D  1740 0001:0029EBA7  1741 0001:0029EBB1  1742 0001:0029EBBF
+  1745 0001:0029EBCF  1746 0001:0029EBDF  1747 0001:0029EBE8  1750 0001:0029EBEC
+  1752 0001:0029EBF0  1753 0001:0029EBFD  1755 0001:0029EC03  1756 0001:0029EC1F
+  1757 0001:0029EC2C  1759 0001:0029EC3D  1760 0001:0029EC47  1761 0001:0029EC51
+  1762 0001:0029EC5B  1765 0001:0029EC6B  1767 0001:0029EC7B  1768 0001:0029EC84
+  1775 0001:0029ECC0  1776 0001:0029ECED  1777 0001:0029ECF4  1778 0001:0029ED0A
+  1779 0001:0029ED22  1784 0001:0029EDDC  1786 0001:0029EDE8  1787 0001:0029EE10
+  1788 0001:0029EE2B  1798 0001:0029EEA0  1800 0001:0029EEC2  1801 0001:0029EEE7
+  1802 0001:0029EEEE  1803 0001:0029EEFB  1804 0001:0029EF36  1806 0001:0029EF48
+  1807 0001:0029EF62  1808 0001:0029EF6C  1810 0001:0029EF79  1811 0001:0029EF8E
+  1813 0001:0029EF92  1814 0001:0029EFA0  1815 0001:0029EFAD  1816 0001:0029EFBA
+  1820 0001:0029EFCC  1821 0001:0029EFF8  1822 0001:0029F002  1827 0001:0029F01C
+  1828 0001:0029F043  1829 0001:0029F05F  1830 0001:0029F06A  1831 0001:0029F077
+  1832 0001:0029F084  1834 0001:0029F091  1835 0001:0029F09F  1836 0001:0029F0A6
+  1839 0001:0029F0AF  1842 0001:0029F174  1844 0001:0029F178  1845 0001:0029F181
+  1847 0001:0029F187  1848 0001:0029F1A3  1849 0001:0029F1B0  1851 0001:0029F1C1
+  1852 0001:0029F1CB  1855 0001:0029F1D5  1856 0001:0029F1DE  1861 0001:0029F1E4
+  1864 0001:0029F202  1865 0001:0029F228  1866 0001:0029F24B  1867 0001:0029F25E
+  1868 0001:0029F27E  1869 0001:0029F297  1871 0001:0029F2A9  1872 0001:0029F2B9
+  1873 0001:0029F2D6  1874 0001:0029F2E4  1876 0001:0029F2F1  1881 0001:0029F328
+  1883 0001:0029F346  1886 0001:0029F353  1887 0001:0029F35C  1888 0001:0029F375
+  1889 0001:0029F388  1890 0001:0029F3A8  1891 0001:0029F3C1  1893 0001:0029F3D3
+  1894 0001:0029F3E3  1895 0001:0029F3F3  1896 0001:0029F410  1898 0001:0029F41E
+  1901 0001:0029F454  1903 0001:0029F458  1904 0001:0029F461  1905 0001:0029F467
+  1906 0001:0029F483  1907 0001:0029F490  1909 0001:0029F4A5  1910 0001:0029F4AF
+  1912 0001:0029F4BD  1913 0001:0029F4C6  1918 0001:0029F4CC  1920 0001:0029F4E4
+  1921 0001:0029F507  1923 0001:0029F516  1924 0001:0029F524  1928 0001:0029F540
+  1929 0001:0029F54E  1931 0001:0029F55C  1934 0001:0029F594  1935 0001:0029F5B0
+  1936 0001:0029F5CC  1937 0001:0029F5E8  1938 0001:0029F604  1939 0001:0029F620
+  1940 0001:0029F63C  1941 0001:0029F658  1947 0001:0029F6E0  1948 0001:0029F6FA
+  1949 0001:0029F707  1950 0001:0029F715  1951 0001:0029F720  1952 0001:0029F72D
+  1953 0001:0029F73A  1956 0001:0029F747  1957 0001:0029F75A  1958 0001:0029F76D
+  1960 0001:0029F775  1962 0001:0029F788  1964 0001:0029F796  1965 0001:0029F7A6
+  1969 0001:0029F7B7  1970 0001:0029F7C7  1971 0001:0029F7D3  1972 0001:0029F7E9
+  1974 0001:0029F7F1  1975 0001:0029F80F  1976 0001:0029F81E  1982 0001:0029F82E
+  1983 0001:0029F83C  1984 0001:0029F846  1986 0001:0029F84A  1987 0001:0029F856
+  1989 0001:0029F866  1992 0001:0029F880  1993 0001:0029F88F  1995 0001:0029F89D
+  1996 0001:0029F8AD  2000 0001:0029F8BB  2001 0001:0029F8C8  2005 0001:0029F8DC
+  2007 0001:0029F8E9  2009 0001:0029F97C  2011 0001:0029F97F  2012 0001:0029F993
+  2015 0001:0029F998  2017 0001:0029F99B  2018 0001:0029F9AF  2023 0001:0029F9B4
+  2024 0001:0029F9CC
+
+Line numbers for fODLab(Orders\fODLab.pas) segment .itext
+
+  2026 0002:000016F8
+
+Line numbers for fODLabOthSpec(Orders\fODLabOthSpec.pas) segment .text
+
+    41 0001:0029FCE0    42 0001:0029FCEC    43 0001:0029FD03    46 0001:0029FD11
+    47 0001:0029FD1E    48 0001:0029FD29    49 0001:0029FD34    50 0001:0029FD41
+    51 0001:0029FD5D    52 0001:0029FD79    56 0001:0029FD82    58 0001:0029FD89
+    59 0001:0029FD94    62 0001:0029FDB1    64 0001:0029FDC1    67 0001:0029FDC8
+    68 0001:0029FDCB    69 0001:0029FDDB    70 0001:0029FDE2    73 0001:0029FDF0
+    74 0001:0029FE07    76 0001:0029FE1C    77 0001:0029FE2F    79 0001:0029FE31
+    80 0001:0029FE4A    82 0001:0029FE77    83 0001:0029FE87    84 0001:0029FE8E
+    88 0001:0029FF04    89 0001:0029FF0B    93 0001:0029FF0C    95 0001:0029FF15
+    96 0001:0029FF2C    98 0001:0029FF60
+
+Line numbers for fODBBank(Orders\fODBBank.pas) segment .text
+
+   273 0001:002A0A6C   274 0001:002A0A8F   275 0001:002A0A96   276 0001:002A0A9D
+   277 0001:002A0AAC   278 0001:002A0ABB   279 0001:002A0ACC   280 0001:002A0ADD
+   281 0001:002A0AEE   282 0001:002A0AFF   283 0001:002A0B10   284 0001:002A0B21
+   285 0001:002A0B32   286 0001:002A0B43   287 0001:002A0B4A   288 0001:002A0B51
+   289 0001:002A0B5B   290 0001:002A0B68   291 0001:002A0B75   292 0001:002A0B82
+   293 0001:002A0B8C   294 0001:002A0B96   295 0001:002A0B9D   296 0001:002A0BAD
+   297 0001:002A0BBE   298 0001:002A0BD4   299 0001:002A0BDF   300 0001:002A0BED
+   301 0001:002A0BF7   302 0001:002A0C01   303 0001:002A0C0B   304 0001:002A0C15
+   305 0001:002A0C1F   306 0001:002A0C29   307 0001:002A0C30   308 0001:002A0C3B
+   309 0001:002A0C46   310 0001:002A0C51   311 0001:002A0C5B   312 0001:002A0C67
+   313 0001:002A0C6F   314 0001:002A0C77   315 0001:002A0C8D   316 0001:002A0C94
+   317 0001:002A0C9E   318 0001:002A0CB0   319 0001:002A0CCD   320 0001:002A0CDD
+   321 0001:002A0CE7   323 0001:002A0CF5   324 0001:002A0D1A   325 0001:002A0D45
+   326 0001:002A0D4F   328 0001:002A0D62   330 0001:002A0D7D   331 0001:002A0D96
+   332 0001:002A0DA4   333 0001:002A0DAE   334 0001:002A0DBB   336 0001:002A0DC1
+   337 0001:002A0DD1   338 0001:002A0DEE   339 0001:002A0DF7   340 0001:002A0E0A
+   341 0001:002A0E15   343 0001:002A0E27   344 0001:002A0E37   345 0001:002A0E5A
+   346 0001:002A0E64   347 0001:002A0E74   349 0001:002A0E81   350 0001:002A0E8C
+   351 0001:002A0E94   352 0001:002A0E9C   353 0001:002A0EAF   352 0001:002A0ED1
+   354 0001:002A0ED6   355 0001:002A0EE0   356 0001:002A0EEE   357 0001:002A0EF9
+   358 0001:002A0F17   359 0001:002A0F1F   360 0001:002A0F2F   361 0001:002A0F3D
+   362 0001:002A0F45   363 0001:002A0F55   364 0001:002A0F68   363 0001:002A0F8A
+   365 0001:002A0F8F   366 0001:002A0F97   367 0001:002A0FAA   368 0001:002A0FBD
+   369 0001:002A0FCA   370 0001:002A0FDD   371 0001:002A0FF0   372 0001:002A0FFD
+   373 0001:002A100A   374 0001:002A101A   375 0001:002A102A   376 0001:002A1041
+   377 0001:002A105B   378 0001:002A1075   379 0001:002A107C   380 0001:002A1083
+   381 0001:002A1090   382 0001:002A1097   383 0001:002A10A4   384 0001:002A10B6
+   385 0001:002A10C7   387 0001:002A10CD   390 0001:002A10E4   391 0001:002A10EB
+   394 0001:002A10FB   395 0001:002A1112   397 0001:002A1127   398 0001:002A1134
+   401 0001:002A114E   402 0001:002A1156   404 0001:002A1166   407 0001:002A137C
+   408 0001:002A137F   409 0001:002A1386   410 0001:002A138D   412 0001:002A1396
+   413 0001:002A13A2   415 0001:002A13A9   416 0001:002A13B0   417 0001:002A13C1
+   418 0001:002A13D2   419 0001:002A13E0   420 0001:002A13E7   421 0001:002A13EE
+   432 0001:002A13F0   433 0001:002A141E   434 0001:002A142C   435 0001:002A143B
+   436 0001:002A144A   437 0001:002A1458   438 0001:002A1464   439 0001:002A146C
+   440 0001:002A1474   441 0001:002A147C   442 0001:002A1489   443 0001:002A1491
+   445 0001:002A14B1   446 0001:002A14C3   448 0001:002A14CD   449 0001:002A14E0
+   451 0001:002A14EA   452 0001:002A14F8   454 0001:002A1507   455 0001:002A1521
+   459 0001:002A1569   460 0001:002A1583   462 0001:002A15C9   463 0001:002A15DC
+   465 0001:002A15E6   466 0001:002A1600   467 0001:002A161A   468 0001:002A1634
+   470 0001:002A164E   471 0001:002A1668   472 0001:002A1682   473 0001:002A16B5
+   474 0001:002A16CF   475 0001:002A16E9   476 0001:002A1700   478 0001:002A1722
+   479 0001:002A1732   481 0001:002A1749   482 0001:002A174E   483 0001:002A1766
+   485 0001:002A176C   486 0001:002A177F   487 0001:002A1780   483 0001:002A1798
+   490 0001:002A179E   492 0001:002A17B1   493 0001:002A17BB   494 0001:002A17C3
+   495 0001:002A17CB   496 0001:002A17D5   497 0001:002A17DD   498 0001:002A17EA
+   499 0001:002A17FB   500 0001:002A1814   501 0001:002A181C   503 0001:002A1828
+   504 0001:002A1839   505 0001:002A188A   506 0001:002A1897   507 0001:002A18A4
+   508 0001:002A18B1   509 0001:002A1905   511 0001:002A1958   512 0001:002A1968
+   513 0001:002A1978   514 0001:002A1988   515 0001:002A1998   516 0001:002A199F
+   519 0001:002A19B2   520 0001:002A1A2D   521 0001:002A1A3A   527 0001:002A1AEB
+   528 0001:002A1B99   529 0001:002A1C36   530 0001:002A1CD3   531 0001:002A1CE4
+   532 0001:002A1D66   533 0001:002A1D80   534 0001:002A1D95   535 0001:002A1DA3
+   536 0001:002A1DB6   537 0001:002A1DE9   539 0001:002A1E26   540 0001:002A1E32
+   542 0001:002A1E90   543 0001:002A1F2C   545 0001:002A1FB7   547 0001:002A2004
+   548 0001:002A205A   553 0001:002A2094   554 0001:002A20A0   556 0001:002A20B8
+   557 0001:002A210E   561 0001:002A2145   562 0001:002A2161   565 0001:002A216E
+   567 0001:002A21D8   568 0001:002A223C   571 0001:002A225D   572 0001:002A2285
+   573 0001:002A228F   580 0001:002A22A1   582 0001:002A22C5   583 0001:002A22CD
+   584 0001:002A22E2   583 0001:002A2311   585 0001:002A2314   586 0001:002A2333
+   590 0001:002A233E   592 0001:002A2351   593 0001:002A235B   594 0001:002A2363
+   595 0001:002A236B   596 0001:002A2378   597 0001:002A2382   598 0001:002A239C
+   599 0001:002A23B6   600 0001:002A23BD   601 0001:002A23C5   602 0001:002A23CA
+   603 0001:002A23CF   604 0001:002A23E0   606 0001:002A23FB   608 0001:002A243F
+   609 0001:002A2453   611 0001:002A2471   613 0001:002A24DC   614 0001:002A24E1
+   616 0001:002A24E3   617 0001:002A24EA   609 0001:002A24ED   618 0001:002A24F6
+   620 0001:002A24FC   621 0001:002A2536   624 0001:002A253D   604 0001:002A2540
+   625 0001:002A2547   627 0001:002A2551   628 0001:002A2562   629 0001:002A256A
+   630 0001:002A2582   631 0001:002A2593   632 0001:002A25BE   633 0001:002A25C8
+   635 0001:002A25E2   636 0001:002A25E9   637 0001:002A25FB   639 0001:002A2618
+   640 0001:002A26C9   641 0001:002A26CC   637 0001:002A26CF   642 0001:002A26D6
+   644 0001:002A26E5   645 0001:002A26F9   646 0001:002A274A   647 0001:002A276F
+   649 0001:002A27CF   650 0001:002A280A   654 0001:002A2836   655 0001:002A2843
+   657 0001:002A2850   659 0001:002A28A4   660 0001:002A291F   661 0001:002A292C
+   662 0001:002A2954   665 0001:002A295E   666 0001:002A2965   446 0001:002A2978
+   668 0001:002A2982   669 0001:002A298A   671 0001:002A2992   672 0001:002A2999
+   674 0001:002A29B1   675 0001:002A29D2   676 0001:002A29E1   678 0001:002A2A09
+   682 0001:002A2A7E   683 0001:002A2AEA   684 0001:002A2B6F   685 0001:002A2BF4
+   686 0001:002A2C7B   687 0001:002A2CFC   688 0001:002A2D91   691 0001:002A2E25
+   692 0001:002A2E38   693 0001:002A2E97   696 0001:002A2EA2   697 0001:002A2EA5
+   672 0001:002A2EA6   698 0001:002A2EAD   700 0001:002A2ECF   702 0001:002A2F0C
+   704 0001:002A2F1E   705 0001:002A2F38   704 0001:002A2F69   708 0001:002A2F6E
+   709 0001:002A2F7A   710 0001:002A2F82   715 0001:002A2FFF   716 0001:002A300B
+   718 0001:002A3011   719 0001:002A3024   720 0001:002A302F   721 0001:002A303A
+   727 0001:002A303C   698 0001:002A303D   872 0001:002A3051   873 0001:002A3059
+   875 0001:002A3069   876 0001:002A307C   877 0001:002A308F   879 0001:002A30A7
+   880 0001:002A30B7   881 0001:002A30C7   882 0001:002A30D7   884 0001:002A30E7
+   898 0001:002A35DC   900 0001:002A35FE   901 0001:002A360D   902 0001:002A361C
+   903 0001:002A362A   904 0001:002A3632   905 0001:002A363A   906 0001:002A3642
+   907 0001:002A364A   908 0001:002A3657   909 0001:002A365F   910 0001:002A3667
+   911 0001:002A366F   912 0001:002A367F   913 0001:002A3698   914 0001:002A36A0
+   915 0001:002A36B0   916 0001:002A36C9   918 0001:002A36D2   919 0001:002A36D9
+   920 0001:002A36DD   921 0001:002A36FF   922 0001:002A3736   924 0001:002A373F
+   925 0001:002A3749   926 0001:002A375B   928 0001:002A3765   929 0001:002A3778
+   930 0001:002A3786   932 0001:002A3795   933 0001:002A37AC   937 0001:002A37EE
+   938 0001:002A3805   940 0001:002A3845   941 0001:002A385C   943 0001:002A3883
+   944 0001:002A3887   945 0001:002A3889   940 0001:002A388C   946 0001:002A388F
+   948 0001:002A3895   949 0001:002A3899   950 0001:002A38AC   954 0001:002A38B1
+   956 0001:002A38C1   957 0001:002A38C7   958 0001:002A38D5   960 0001:002A38DF
+   961 0001:002A38F6   962 0001:002A390D   963 0001:002A3924   965 0001:002A393B
+   966 0001:002A3952   969 0001:002A3981   970 0001:002A3998   971 0001:002A39AC
+   973 0001:002A39CD   974 0001:002A39DA   975 0001:002A39EE   977 0001:002A39F7
+   978 0001:002A3A0E   980 0001:002A3A1B   981 0001:002A3A2F   983 0001:002A3A4E
+   984 0001:002A3A5B   986 0001:002A3A6F   987 0001:002A3A76   988 0001:002A3A8C
+   990 0001:002A3A92   991 0001:002A3AA5   992 0001:002A3AA8   988 0001:002A3ABE
+   995 0001:002A3AC4   997 0001:002A3AFE   999 0001:002A3B4A  1000 0001:002A3B78
+  1004 0001:002A3B9C  1008 0001:002A3BA7  1010 0001:002A3BBA  1011 0001:002A3BC1
+  1012 0001:002A3BC8  1013 0001:002A3BD2  1014 0001:002A3BE9  1015 0001:002A3C00
+  1018 0001:002A3C17  1019 0001:002A3C1F  1020 0001:002A3C24  1021 0001:002A3C29
+  1022 0001:002A3C39  1024 0001:002A3C54  1026 0001:002A3C98  1027 0001:002A3CAC
+  1029 0001:002A3CCD  1031 0001:002A3D38  1032 0001:002A3D3D  1034 0001:002A3D3F
+  1035 0001:002A3D46  1027 0001:002A3D49  1036 0001:002A3D55  1038 0001:002A3D5B
+  1039 0001:002A3D95  1042 0001:002A3D9C  1022 0001:002A3D9F  1043 0001:002A3DA6
+  1045 0001:002A3DB0  1046 0001:002A3DBE  1047 0001:002A3DC6  1048 0001:002A3DDE
+  1049 0001:002A3DEC  1050 0001:002A3E11  1051 0001:002A3E1B  1053 0001:002A3E35
+  1054 0001:002A3E3C  1055 0001:002A3E4E  1057 0001:002A3E6B  1058 0001:002A3F19
+  1059 0001:002A3F1C  1055 0001:002A3F1F  1060 0001:002A3F26  1061 0001:002A3F33
+  1062 0001:002A3F40  1063 0001:002A3F48  1064 0001:002A3F50  1065 0001:002A3F58
+  1066 0001:002A3F68  1067 0001:002A3F81  1068 0001:002A3FFF  1069 0001:002A407D
+  1070 0001:002A40FB  1071 0001:002A4179  1073 0001:002A41DA  1074 0001:002A41E2
+  1075 0001:002A41F2  1077 0001:002A420D  1080 0001:002A42A5  1081 0001:002A42DD
+  1085 0001:002A430C  1086 0001:002A4318  1094 0001:002A43BD  1096 0001:002A43C9
+  1098 0001:002A43CF  1099 0001:002A43FF  1103 0001:002A4409  1075 0001:002A440C
+  1105 0001:002A4413  1107 0001:002A4420  1109 0001:002A442A  1110 0001:002A4432
+  1111 0001:002A4442  1113 0001:002A445D  1115 0001:002A449D  1116 0001:002A44E2
+  1118 0001:002A44E4  1111 0001:002A44E7  1119 0001:002A44EE  1120 0001:002A44F5
+  1122 0001:002A4501  1123 0001:002A4515  1124 0001:002A4560  1125 0001:002A4582
+  1127 0001:002A45DF  1128 0001:002A4614  1132 0001:002A463D  1133 0001:002A464A
+  1135 0001:002A4657  1137 0001:002A46A5  1138 0001:002A46AC  1139 0001:002A4724
+  1140 0001:002A4731  1142 0001:002A474E  1143 0001:002A476D  1144 0001:002A477D
+  1146 0001:002A47A9  1150 0001:002A4837  1151 0001:002A48BC  1152 0001:002A495A
+  1153 0001:002A49DF  1154 0001:002A4A7F  1156 0001:002A4B10  1157 0001:002A4B13
+  1140 0001:002A4B16  1158 0001:002A4B1D  1159 0001:002A4B3F  1160 0001:002A4B4C
+  1161 0001:002A4B54  1217 0001:002A4B5B  1218 0001:002A4B6B  1219 0001:002A4B7B
+  1221 0001:002A4B94  1222 0001:002A4BA1  1223 0001:002A4BAE  1224 0001:002A4BBB
+  1229 0001:002A4BCD  1231 0001:002A4BE0  1232 0001:002A4BE7  1233 0001:002A4BEE
+  1234 0001:002A4BF8  1235 0001:002A4C05  1237 0001:002A4C1C  1238 0001:002A4C23
+  1239 0001:002A4C39  1241 0001:002A4C3F  1242 0001:002A4C52  1243 0001:002A4C55
+  1239 0001:002A4C6B  1245 0001:002A4C71  1252 0001:002A4C83  1254 0001:002A4CAA
+  1255 0001:002A4CB2  1256 0001:002A4CCF  1255 0001:002A4D04  1257 0001:002A4D07
+  1258 0001:002A4D20  1261 0001:002A4D2A  1262 0001:002A4DCE  1264 0001:002A4E3B
+  1265 0001:002A4EA2  1267 0001:002A4EC4  1270 0001:002A4F68  1271 0001:002A4F78
+  1272 0001:002A4FCE  1274 0001:002A4FD7  1275 0001:002A5068  1276 0001:002A50F9
+  1277 0001:002A5106  1278 0001:002A5182  1279 0001:002A519B  1280 0001:002A51AD
+  1281 0001:002A51BB  1282 0001:002A51CB  1283 0001:002A51FA  1285 0001:002A5234
+  1286 0001:002A5240  1288 0001:002A52A1  1289 0001:002A5340  1291 0001:002A53CF
+  1293 0001:002A541F  1294 0001:002A5477  1299 0001:002A54B1  1300 0001:002A54BD
+  1302 0001:002A54D8  1303 0001:002A5530  1307 0001:002A5567  1308 0001:002A5580
+  1311 0001:002A558B  1312 0001:002A5609  1314 0001:002A5676  1315 0001:002A56DD
+  1317 0001:002A56FF  1318 0001:002A5706  1320 0001:002A5712  1321 0001:002A5726
+  1322 0001:002A5771  1323 0001:002A577E  1324 0001:002A578B  1325 0001:002A5798
+  1327 0001:002A57E6  1328 0001:002A57ED  1329 0001:002A5889  1330 0001:002A5896
+  1332 0001:002A58B3  1333 0001:002A58D2  1334 0001:002A58E2  1336 0001:002A590E
+  1338 0001:002A5993  1339 0001:002A5996  1330 0001:002A5999  1340 0001:002A59A0
+  1341 0001:002A59C2  1342 0001:002A59D2  1343 0001:002A59E2  1345 0001:002A59F7
+  1346 0001:002A5A04  1347 0001:002A5A11  1348 0001:002A5A1E  1352 0001:002A5A2B
+   926 0001:002A5A3E  1356 0001:002A5A48  1358 0001:002A5A6C  1360 0001:002A5AA7
+  1361 0001:002A5AAE  1362 0001:002A5ACF  1363 0001:002A5ADC  1364 0001:002A5AE9
+  1365 0001:002A5AF6  1366 0001:002A5B03  1367 0001:002A5B13  1369 0001:002A5B25
+  1370 0001:002A5B42  1369 0001:002A5B73  1373 0001:002A5B7B  1374 0001:002A5B87
+  1375 0001:002A5B8F  1380 0001:002A5C0C  1381 0001:002A5C18  1383 0001:002A5C1E
+  1384 0001:002A5C2F  1385 0001:002A5C38  1386 0001:002A5C41  1392 0001:002A5C43
+  1356 0001:002A5C46  1393 0001:002A5C4D  1395 0001:002A5C56  1396 0001:002A5C66
+  1397 0001:002A5C73  1398 0001:002A5C83  1399 0001:002A5C90  1401 0001:002A5CA0
+  1403 0001:002A5CAD  1410 0001:002A5CBF  1412 0001:002A5CE6  1413 0001:002A5CEE
+  1414 0001:002A5D0B  1413 0001:002A5D40  1415 0001:002A5D43  1416 0001:002A5D5C
+  1421 0001:002A5D66  1422 0001:002A5D74  1424 0001:002A5D92  1425 0001:002A5D99
+  1426 0001:002A5DA1  1427 0001:002A5DBD  1426 0001:002A5DF1  1428 0001:002A5DF4
+  1429 0001:002A5E09  1430 0001:002A5E36  1431 0001:002A5E53  1430 0001:002A5E88
+  1432 0001:002A5E8B  1433 0001:002A5EA4  1435 0001:002A5EAE  1437 0001:002A5EBB
+  1438 0001:002A5EC2  1441 0001:002A5ED6  1442 0001:002A5EDE  1444 0001:002A5EEE
+  1452 0001:002A666C  1453 0001:002A66A3  1454 0001:002A66B2  1455 0001:002A66C0
+  1458 0001:002A66CA  1459 0001:002A66D3  1460 0001:002A66E0  1461 0001:002A6711
+  1462 0001:002A6742  1463 0001:002A6773  1464 0001:002A6791  1465 0001:002A6798
+  1466 0001:002A67C5  1467 0001:002A67D5  1468 0001:002A67F5  1469 0001:002A6815
+  1470 0001:002A6832  1471 0001:002A683C  1472 0001:002A6850  1473 0001:002A685F
+  1474 0001:002A6888  1475 0001:002A689A  1477 0001:002A68C0  1478 0001:002A68C7
+  1479 0001:002A68E5  1480 0001:002A6918  1484 0001:002A6920  1485 0001:002A6933
+  1486 0001:002A6943  1488 0001:002A6955  1490 0001:002A6961  1491 0001:002A6973
+  1492 0001:002A6987  1493 0001:002A6996  1494 0001:002A699E  1495 0001:002A69B0
+  1496 0001:002A69BD  1497 0001:002A69D4  1500 0001:002A6A06  1501 0001:002A6A15
+  1502 0001:002A6A23  1503 0001:002A6A3A  1505 0001:002A6A5B  1508 0001:002A6A6B
+  1509 0001:002A6A88  1512 0001:002A6AA4  1514 0001:002A6AB4  1515 0001:002A6ABC
+  1520 0001:002A6C10  1521 0001:002A6C21  1522 0001:002A6C28  1523 0001:002A6C3B
+  1525 0001:002A6C48  1526 0001:002A6C50  1527 0001:002A6C57  1522 0001:002A6C58
+  1528 0001:002A6C5B  1529 0001:002A6C63  1530 0001:002A6C6B  1531 0001:002A6C73
+  1532 0001:002A6C7B  1533 0001:002A6C83  1534 0001:002A6C91  1539 0001:002A6CA8
+  1540 0001:002A6CAF  1541 0001:002A6CB6  1542 0001:002A6CCD  1544 0001:002A6CD2
+  1545 0001:002A6CD5  1546 0001:002A6CD7  1541 0001:002A6CD8  1547 0001:002A6CDB
+  1553 0001:002A6CE4  1554 0001:002A6D06  1555 0001:002A6D15  1556 0001:002A6D24
+  1557 0001:002A6D32  1558 0001:002A6D3A  1559 0001:002A6D47  1560 0001:002A6D57
+  1561 0001:002A6D69  1560 0001:002A6DA3  1563 0001:002A6DB3  1564 0001:002A6DBB
+  1566 0001:002A6DCB  1575 0001:002A6E08  1576 0001:002A6E35  1577 0001:002A6E38
+  1578 0001:002A6E53  1579 0001:002A6E5F  1580 0001:002A6E7B  1581 0001:002A6EA2
+  1582 0001:002A6EA3  1583 0001:002A6EB2  1585 0001:002A6ECA  1588 0001:002A6ED9
+  1589 0001:002A6F1C  1590 0001:002A6F49  1591 0001:002A6F76  1592 0001:002A6FA5
+  1593 0001:002A6FD2  1594 0001:002A6FFF  1595 0001:002A702E  1596 0001:002A705D
+  1597 0001:002A706C  1598 0001:002A7099  1599 0001:002A70AB  1600 0001:002A70BF
+  1601 0001:002A70CD  1602 0001:002A70D5  1604 0001:002A70E1  1606 0001:002A70F2
+  1607 0001:002A7106  1608 0001:002A7143  1609 0001:002A7144  1610 0001:002A7167
+  1615 0001:002A71BC  1616 0001:002A71C0  1617 0001:002A71C5  1618 0001:002A71CD
+  1619 0001:002A71D8  1620 0001:002A71DE  1621 0001:002A71F2  1622 0001:002A71FF
+  1623 0001:002A720E  1625 0001:002A7224  1626 0001:002A722A  1628 0001:002A723B
+  1637 0001:002A7254  1638 0001:002A725A  1639 0001:002A7266  1649 0001:002A726C
+  1650 0001:002A7271  1651 0001:002A7273  1652 0001:002A727F  1653 0001:002A7292
+  1779 0001:002A7298  1780 0001:002A729E  1799 0001:002A72A0  1800 0001:002A72B1
+  1804 0001:002A72B4  1805 0001:002A72C2  1809 0001:002A72D8  1810 0001:002A72E6
+  1814 0001:002A72F8  1815 0001:002A7306  1819 0001:002A731C  1820 0001:002A732A
+  1824 0001:002A7340  1825 0001:002A734E  1829 0001:002A7364  1830 0001:002A7372
+  1834 0001:002A7388  1835 0001:002A7396  1839 0001:002A73B0  1840 0001:002A73BE
+  1844 0001:002A73D0  1845 0001:002A73DE  1849 0001:002A73F4  1850 0001:002A7402
+  1854 0001:002A7414  1855 0001:002A7422  1859 0001:002A7434  1860 0001:002A7442
+  1915 0001:002A7454  1916 0001:002A745B  1917 0001:002A748C  1918 0001:002A749F
+  1924 0001:002A74B0  1925 0001:002A74BA  1926 0001:002A74C4  1928 0001:002A74D1
+  1929 0001:002A74DD  1931 0001:002A74DF  1933 0001:002A74E8  1934 0001:002A74F4
+  1936 0001:002A74F6  1937 0001:002A7500  1942 0001:002A7574  1943 0001:002A757B
+  1944 0001:002A75AC  1945 0001:002A75BF  1990 0001:002A75D0  1992 0001:002A75F6
+  1993 0001:002A75FE  1994 0001:002A760D  1995 0001:002A761B  1996 0001:002A762B
+  1997 0001:002A7644  1998 0001:002A764C  2000 0001:002A7659  2001 0001:002A7666
+  2003 0001:002A7670  2005 0001:002A7689  2006 0001:002A7698  2007 0001:002A76B6
+  2009 0001:002A76DC  2010 0001:002A76E9  2011 0001:002A7710  2012 0001:002A7739
+  2014 0001:002A7767  2015 0001:002A77AF  2017 0001:002A77ED  2018 0001:002A7811
+  2019 0001:002A7840  2020 0001:002A7870  2021 0001:002A789F  2023 0001:002A78AE
+  2024 0001:002A78F1  2025 0001:002A7906  2026 0001:002A7910  2028 0001:002A791F
+  2029 0001:002A7932  2030 0001:002A793B  2031 0001:002A7953  2034 0001:002A7992
+  2036 0001:002A79A0  2037 0001:002A79D6  2039 0001:002A7A21  2041 0001:002A7A29
+  2042 0001:002A7A63  2048 0001:002A7AAE  2050 0001:002A7AF8  2051 0001:002A7B1A
+  2052 0001:002A7B34  2053 0001:002A7B5C  2056 0001:002A7B7F  2058 0001:002A7B85
+  2062 0001:002A7BC7  2064 0001:002A7C07  2069 0001:002A7C6F  2075 0001:002A7CE8
+  2079 0001:002A7D3A  2082 0001:002A7D88  2083 0001:002A7DD6  2085 0001:002A7E26
+  2086 0001:002A7E6A  2088 0001:002A7E8D  2089 0001:002A7EBC  2091 0001:002A7ECD
+  2093 0001:002A7EE7  2095 0001:002A7F11  2096 0001:002A7F7B  2097 0001:002A7FF1
+  2098 0001:002A8028  2100 0001:002A805F  2003 0001:002A8060  2102 0001:002A8076
+  2104 0001:002A8086  2114 0001:002A85CC  2115 0001:002A85E2  2116 0001:002A85E4
+  2117 0001:002A85EC  2119 0001:002A85FC  2120 0001:002A861B  2123 0001:002A861D
+  2130 0001:002A86E0  2131 0001:002A870D  2132 0001:002A8714  2133 0001:002A872A
+  2134 0001:002A8742  2139 0001:002A87FC  2141 0001:002A8808  2142 0001:002A8830
+  2143 0001:002A884B  2191 0001:002A88C0  2192 0001:002A88EC  2193 0001:002A88F4
+  2194 0001:002A8907  2195 0001:002A891A  2197 0001:002A892D  2198 0001:002A893A
+  2199 0001:002A8947  2200 0001:002A8954  2201 0001:002A8961  2202 0001:002A896E
+  2203 0001:002A897B  2205 0001:002A8988  2206 0001:002A89A6  2208 0001:002A89C4
+  2209 0001:002A89FA  2212 0001:002A8A1C  2214 0001:002A8A26  2215 0001:002A8A41
+  2217 0001:002A8A5F  2218 0001:002A8A95  2221 0001:002A8AB4  2222 0001:002A8ABD
+  2224 0001:002A8AD3  2226 0001:002A8AE8  2228 0001:002A8AFB  2229 0001:002A8B08
+  2230 0001:002A8B15  2231 0001:002A8B22  2232 0001:002A8B2F  2233 0001:002A8B3C
+  2234 0001:002A8B49  2236 0001:002A8B56  2237 0001:002A8B74  2239 0001:002A8B92
+  2240 0001:002A8BC8  2243 0001:002A8BEA  2245 0001:002A8BF4  2246 0001:002A8C0F
+  2248 0001:002A8C2D  2249 0001:002A8C63  2252 0001:002A8C82  2253 0001:002A8C8B
+  2255 0001:002A8CA1  2257 0001:002A8CB6  2259 0001:002A8CC9  2260 0001:002A8CD6
+  2261 0001:002A8CE3  2262 0001:002A8CF0  2263 0001:002A8CFD  2264 0001:002A8D0A
+  2265 0001:002A8D17  2266 0001:002A8D2D  2267 0001:002A8D41  2268 0001:002A8D6A
+  2269 0001:002A8D73  2270 0001:002A8D89  2271 0001:002A8D9E  2272 0001:002A8DC8
+  2273 0001:002A8DD1  2275 0001:002A8DE7  2277 0001:002A8DF9  2279 0001:002A8E0C
+  2280 0001:002A8E19  2281 0001:002A8E26  2282 0001:002A8E33  2283 0001:002A8E40
+  2284 0001:002A8E4D  2285 0001:002A8E5A  2286 0001:002A8E63  2287 0001:002A8E6B
+  2288 0001:002A8E74  2289 0001:002A8E85  2290 0001:002A8E8B  2291 0001:002A8E99
+  2292 0001:002A8EA2  2294 0001:002A8EB0  2296 0001:002A8EBC  2297 0001:002A8ECD
+  2301 0001:002A8EF0  2302 0001:002A8F07  2305 0001:002A8F34  2310 0001:002A907C
+  2311 0001:002A9099  2313 0001:002A90A7  2314 0001:002A90B1  2316 0001:002A90BF
+  2317 0001:002A90CD  2318 0001:002A90DF  2319 0001:002A90ED  2321 0001:002A90FF
+  2323 0001:002A9108  2325 0001:002A912A  2326 0001:002A9138  2328 0001:002A914E
+  2331 0001:002A9163  2333 0001:002A9179  2335 0001:002A9182  2337 0001:002A91A6
+  2338 0001:002A91B4  2340 0001:002A91CA  2343 0001:002A91DF  2345 0001:002A91F5
+  2347 0001:002A91FE  2349 0001:002A9220  2350 0001:002A922E  2352 0001:002A9241
+  2355 0001:002A9253  2357 0001:002A9266  2359 0001:002A9271  2360 0001:002A927F
+  2362 0001:002A9291  2365 0001:002A929F  2367 0001:002A92AF  2368 0001:002A92D2
+  2371 0001:002A934C  2372 0001:002A9368  2373 0001:002A9384  2374 0001:002A93A0
+  2375 0001:002A93BC  2376 0001:002A93D8  2377 0001:002A93F4  2378 0001:002A9410
+  2383 0001:002A9498  2384 0001:002A949D  2387 0001:002A94A0  2389 0001:002A94BF
+  2391 0001:002A94E4  2392 0001:002A94F2  2393 0001:002A951F  2395 0001:002A9521
+  2396 0001:002A957E  2397 0001:002A959A  2400 0001:002A961C  2402 0001:002A9636
+  2403 0001:002A965A  2404 0001:002A9675  2407 0001:002A96A0  2409 0001:002A96BA
+  2410 0001:002A96DE  2411 0001:002A96F9  2423 0001:002A9724  2424 0001:002A974A
+  2425 0001:002A9784  2426 0001:002A9793  2427 0001:002A97A1  2428 0001:002A97A8
+  2429 0001:002A97B0  2430 0001:002A97BD  2431 0001:002A97CA  2432 0001:002A97D2
+  2433 0001:002A97DC  2434 0001:002A97EC  2435 0001:002A97F4  2436 0001:002A9805
+  2437 0001:002A980D  2438 0001:002A9815  2439 0001:002A981F  2440 0001:002A9865
+  2441 0001:002A9875  2443 0001:002A987E  2444 0001:002A9891  2445 0001:002A98A2
+  2446 0001:002A98AE  2447 0001:002A98C7  2448 0001:002A98D0  2449 0001:002A98E6
+  2450 0001:002A98F2  2451 0001:002A9900  2453 0001:002A9915  2455 0001:002A992A
+  2456 0001:002A993D  2458 0001:002A9970  2460 0001:002A997C  2461 0001:002A9A10
+  2462 0001:002A9A31  2463 0001:002A9A52  2464 0001:002A9A6A  2466 0001:002A9AC9
+  2467 0001:002A9AD4  2468 0001:002A9AF6  2469 0001:002A9B01  2470 0001:002A9B0B
+  2463 0001:002A9B0C  2471 0001:002A9B13  2472 0001:002A9B1D  2473 0001:002A9B27
+  2474 0001:002A9B38  2475 0001:002A9B51  2476 0001:002A9B59  2477 0001:002A9B61
+  2479 0001:002A9BB7  2480 0001:002A9BCB  2479 0001:002A9BF9  2483 0001:002A9BFC
+  2484 0001:002A9C08  2485 0001:002A9C10  2490 0001:002A9C8C  2491 0001:002A9C98
+  2493 0001:002A9C9D  2494 0001:002A9CAE  2498 0001:002A9CB8  2500 0001:002A9CCB
+  2507 0001:002A9CDD  2509 0001:002A9D01  2510 0001:002A9D09  2511 0001:002A9D1E
+  2510 0001:002A9D4D  2512 0001:002A9D50  2513 0001:002A9D6F  2517 0001:002A9D7A
+  2519 0001:002A9D84  2521 0001:002A9D91  2522 0001:002A9E20  2524 0001:002A9E64
+  2525 0001:002A9EC6  2527 0001:002A9EE6  2530 0001:002A9F74  2531 0001:002A9F87
+  2533 0001:002A9FE6  2534 0001:002AA061  2535 0001:002AA0DC  2537 0001:002AA119
+  2538 0001:002AA122  2540 0001:002AA15D  2541 0001:002AA1F7  2543 0001:002AA280
+  2545 0001:002AA2B7  2546 0001:002AA30B  2551 0001:002AA344  2552 0001:002AA350
+  2554 0001:002AA368  2555 0001:002AA3BE  2559 0001:002AA3F5  2560 0001:002AA411
+  2563 0001:002AA41E  2565 0001:002AA4BB  2566 0001:002AA526  2567 0001:002AA52D
+  2569 0001:002AA536  2570 0001:002AA543  2571 0001:002AA58C  2572 0001:002AA596
+  2573 0001:002AA5A0  2574 0001:002AA5AA  2575 0001:002AA5F4  2577 0001:002AA640
+  2578 0001:002AA650  2579 0001:002AA660  2580 0001:002AA670  2581 0001:002AA680
+  2582 0001:002AA687  2585 0001:002AA69A  2586 0001:002AA73C  2587 0001:002AA749
+  2588 0001:002AA750  2590 0001:002AA768  2591 0001:002AA789  2592 0001:002AA798
+  2594 0001:002AA7C0  2596 0001:002AA82C  2597 0001:002AA82F  2588 0001:002AA830
+  2598 0001:002AA837  2600 0001:002AA86C  2602 0001:002AA87C  2603 0001:002AA88F
+  2604 0001:002AA8A2  2606 0001:002AA8BA  2607 0001:002AA8CA  2608 0001:002AA8DA
+  2609 0001:002AA8EA  2611 0001:002AA8FA  2623 0001:002AAD3C  2624 0001:002AAD62
+  2625 0001:002AAD9C  2626 0001:002AADAB  2627 0001:002AADBA  2628 0001:002AADC2
+  2629 0001:002AADD0  2630 0001:002AADD8  2631 0001:002AADE0  2633 0001:002AADEC
+  2634 0001:002AADF6  2635 0001:002AAE06  2636 0001:002AAE17  2638 0001:002AAE21
+  2639 0001:002AAE2B  2641 0001:002AAE37  2642 0001:002AAEC5  2643 0001:002AAEE6
+  2644 0001:002AAF07  2645 0001:002AAF1F  2647 0001:002AAF7E  2648 0001:002AAF89
+  2649 0001:002AAFAB  2650 0001:002AAFB6  2651 0001:002AAFC0  2644 0001:002AAFC1
+  2652 0001:002AAFC8  2653 0001:002AB008  2654 0001:002AB018  2655 0001:002AB022
+  2658 0001:002AB029  2659 0001:002AB031  2660 0001:002AB036  2661 0001:002AB03B
+  2662 0001:002AB04C  2664 0001:002AB062  2666 0001:002AB0A5  2667 0001:002AB0B9
+  2669 0001:002AB0D7  2671 0001:002AB141  2672 0001:002AB146  2674 0001:002AB148
+  2675 0001:002AB14F  2667 0001:002AB152  2676 0001:002AB157  2678 0001:002AB15D
+  2679 0001:002AB196  2682 0001:002AB19D  2662 0001:002AB19E  2683 0001:002AB1A5
+  2685 0001:002AB1AF  2686 0001:002AB1C0  2687 0001:002AB1C8  2688 0001:002AB1E0
+  2689 0001:002AB1F1  2690 0001:002AB21C  2691 0001:002AB226  2693 0001:002AB240
+  2694 0001:002AB247  2695 0001:002AB259  2697 0001:002AB271  2698 0001:002AB303
+  2699 0001:002AB306  2695 0001:002AB307  2700 0001:002AB30E  2701 0001:002AB316
+  2702 0001:002AB323  2703 0001:002AB330  2704 0001:002AB338  2705 0001:002AB340
+  2706 0001:002AB348  2707 0001:002AB350  2708 0001:002AB361  2709 0001:002AB37A
+  2710 0001:002AB382  2711 0001:002AB393  2712 0001:002AB3AC  2713 0001:002AB417
+  2714 0001:002AB482  2715 0001:002AB4ED  2716 0001:002AB558  2718 0001:002AB5BC
+  2719 0001:002AB5C4  2720 0001:002AB5D5  2722 0001:002AB5EB  2725 0001:002AB684
+  2726 0001:002AB6BB  2730 0001:002AB745  2731 0001:002AB751  2739 0001:002AB7FC
+  2741 0001:002AB808  2743 0001:002AB80E  2744 0001:002AB841  2748 0001:002AB84B
+  2720 0001:002AB84C  2750 0001:002AB853  2752 0001:002AB864  2753 0001:002AB86E
+  2755 0001:002AB890  2757 0001:002AB8CD  2758 0001:002AB8D4  2759 0001:002AB93C
+  2760 0001:002AB94C  2761 0001:002AB95C  2762 0001:002AB96C  2763 0001:002AB97C
+  2764 0001:002AB98F  2766 0001:002AB991  2753 0001:002AB992  2768 0001:002AB999
+  2769 0001:002AB9A1  2770 0001:002AB9B2  2772 0001:002AB9C8  2774 0001:002ABA07
+  2775 0001:002ABA4B  2777 0001:002ABA4D  2770 0001:002ABA4E  2778 0001:002ABA55
+  2779 0001:002ABA5C  2781 0001:002ABA68  2782 0001:002ABA78  2783 0001:002ABAC8
+  2784 0001:002ABAEA  2786 0001:002ABB4A  2787 0001:002ABB82  2791 0001:002ABBAB
+  2792 0001:002ABBB5  2794 0001:002ABBBF  2796 0001:002ABC10  2797 0001:002ABC8B
+  2798 0001:002ABC98  2799 0001:002ABC9F  2801 0001:002ABCB7  2802 0001:002ABCD8
+  2803 0001:002ABCE7  2805 0001:002ABD0F  2809 0001:002ABD84  2810 0001:002ABDF0
+  2811 0001:002ABE75  2812 0001:002ABEFA  2813 0001:002ABF81  2814 0001:002AC002
+  2815 0001:002AC097  2818 0001:002AC12B  2819 0001:002AC13E  2822 0001:002AC19D
+  2823 0001:002AC1A0  2799 0001:002AC1A1  2824 0001:002AC1A8  2826 0001:002AC1DD
+  2827 0001:002AC1E5  2829 0001:002AC1F5  2830 0001:002AC1FD  2831 0001:002AC204
+  2833 0001:002AC20D  2834 0001:002AC220  2835 0001:002AC230  2836 0001:002AC243
+  2837 0001:002AC253  2883 0001:002AC266  2884 0001:002AC279  2885 0001:002AC28C
+  2887 0001:002AC2A4  2888 0001:002AC2B4  2889 0001:002AC2C4  2890 0001:002AC2D4
+  2892 0001:002AC2E4  2893 0001:002AC30B  2897 0001:002AC7AC  2898 0001:002AC7B9
+  2901 0001:002AC7BC  2902 0001:002AC7BF  2903 0001:002AC7CC  2904 0001:002AC7D9
+  2905 0001:002AC7E6  2906 0001:002AC7F3  2907 0001:002AC801  2910 0001:002AC804
+  2911 0001:002AC81C  2912 0001:002AC829  2913 0001:002AC836  2914 0001:002AC843
+  2915 0001:002AC850  2916 0001:002AC859  2917 0001:002AC86A  2918 0001:002AC873
+  2919 0001:002AC887  2920 0001:002AC8A2  2922 0001:002AC8BF  2923 0001:002AC8CC
+  2924 0001:002AC8D9  2928 0001:002AC8EB  2929 0001:002AC8F8  2930 0001:002AC905
+  2932 0001:002AC915  2933 0001:002AC922  2936 0001:002AC980  2937 0001:002AC983
+  2938 0001:002AC990  2939 0001:002AC99D  2940 0001:002AC9AA  2941 0001:002AC9B7
+  2942 0001:002AC9C4  2943 0001:002AC9D1  2944 0001:002AC9DF  2945 0001:002AC9EC
+  2948 0001:002AC9F0  2949 0001:002ACA06  2950 0001:002ACA13  2951 0001:002ACA20
+  2952 0001:002ACA2D  2953 0001:002ACA3A  2954 0001:002ACA47  2955 0001:002ACA54
+  2956 0001:002ACA5D  2957 0001:002ACA6E  2958 0001:002ACA77  2959 0001:002ACA8B
+  2960 0001:002ACAA6  2963 0001:002ACAD8  2964 0001:002ACADB  2965 0001:002ACAE2
+  2966 0001:002ACAEF  3035 0001:002ACAF4  3037 0001:002ACB15  3038 0001:002ACB7E
+  3039 0001:002ACBA9  3040 0001:002ACBB6  3041 0001:002ACBC4  3042 0001:002ACBD7
+  3047 0001:002ACC28  3048 0001:002ACC2F  3049 0001:002ACC36  3052 0001:002ACC38
+  3054 0001:002ACC59  3055 0001:002ACCC2  3056 0001:002ACCED  3057 0001:002ACCFA
+  3058 0001:002ACD08  3059 0001:002ACD1B  3063 0001:002ACD6C  3064 0001:002ACD75
+  3065 0001:002ACD92  3069 0001:002ACD98  3070 0001:002ACDA1  3071 0001:002ACDBE
+  3076 0001:002ACDC4  3078 0001:002ACDDC  3079 0001:002ACDFF  3081 0001:002ACE0E
+  3082 0001:002ACE1C  3086 0001:002ACE38  3087 0001:002ACE46  3089 0001:002ACE54
+  3092 0001:002ACE8C  3094 0001:002ACE8F  3096 0001:002ACEAD  3097 0001:002ACEBA
+  3098 0001:002ACEC7  3099 0001:002ACED4  3102 0001:002ACEE5  3104 0001:002ACEFA
+  3105 0001:002ACF07  3106 0001:002ACF14  3110 0001:002ACF26  3111 0001:002ACF33
+  3112 0001:002ACF40  3116 0001:002ACF4F  3118 0001:002ACF64  3119 0001:002ACF71
+  3120 0001:002ACF7E  3124 0001:002ACF8D  3125 0001:002ACF9A  3126 0001:002ACFA7
+  3130 0001:002ACFB4  3138 0001:002ACFB8  3139 0001:002ACFD9  3140 0001:002ACFE6
+  3142 0001:002ACFEC  3144 0001:002AD012  3145 0001:002AD01C  3148 0001:002AD03A
+  3149 0001:002AD048  3151 0001:002AD05A  3152 0001:002AD060  3154 0001:002AD08F
+  3155 0001:002AD102  3157 0001:002AD17D  3159 0001:002AD1A7  3160 0001:002AD1F7
+  3163 0001:002AD228  3166 0001:002AD2F4  3167 0001:002AD314  3168 0001:002AD359
+  3170 0001:002AD398  3171 0001:002AD3AB  3172 0001:002AD3B9  3174 0001:002AD3BE
+  3176 0001:002AD3EF  3177 0001:002AD3FD  3178 0001:002AD40D  3180 0001:002AD41D
+  3181 0001:002AD440  3182 0001:002AD4CB  3183 0001:002AD4ED  3184 0001:002AD4F6
+  3191 0001:002AD604  3193 0001:002AD627  3194 0001:002AD634  3196 0001:002AD658
+  3198 0001:002AD678  3199 0001:002AD687  3200 0001:002AD69A  3201 0001:002AD6AD
+  3203 0001:002AD707  3204 0001:002AD71D  3205 0001:002AD728  3206 0001:002AD736
+  3208 0001:002AD765  3209 0001:002AD794  3213 0001:002AD7B7  3214 0001:002AD7C4
+  3216 0001:002AD7D1  3217 0001:002AD813  3218 0001:002AD84A  3220 0001:002AD84C
+  3196 0001:002AD84D  3222 0001:002AD856  3224 0001:002AD87A  3226 0001:002AD896
+  3231 0001:002AD8F8  3234 0001:002AD917  3235 0001:002AD91F  3236 0001:002AD933
+  3235 0001:002AD954  3238 0001:002AD957  3243 0001:002AD97C  3246 0001:002AD99B
+  3247 0001:002AD9A3  3248 0001:002AD9B7  3247 0001:002AD9D8  3250 0001:002AD9DB
+  3255 0001:002ADA00  3258 0001:002ADA1D  3259 0001:002ADA25  3260 0001:002ADA39
+  3263 0001:002ADA7D  3259 0001:002ADA9E  3265 0001:002ADAA1  3272 0001:002ADADC
+  3274 0001:002ADAFE  3275 0001:002ADB11  3276 0001:002ADB1F  3277 0001:002ADB26
+  3278 0001:002ADB33  3279 0001:002ADB41  3280 0001:002ADB52  3281 0001:002ADB54
+  3283 0001:002ADB7E  3284 0001:002ADB8B  3288 0001:002ADBB4  3289 0001:002ADBC6
+  3290 0001:002ADBD9  3291 0001:002ADBEB  3292 0001:002ADBFE  3293 0001:002ADC07
+  3295 0001:002ADC34  3296 0001:002ADC3D  3297 0001:002ADC4E  3299 0001:002ADC60
+  3300 0001:002ADC70  3301 0001:002ADCAE  3302 0001:002ADCE4  3304 0001:002ADD12
+  3305 0001:002ADD19  3306 0001:002ADD20  3307 0001:002ADD33  3308 0001:002ADD3A
+  3309 0001:002ADD47  3310 0001:002ADD57  3311 0001:002ADD75  3312 0001:002ADD7C
+  3316 0001:002ADD99  3317 0001:002ADDA0  3318 0001:002ADDA7  3321 0001:002ADDB7
+  3322 0001:002ADDBE  3325 0001:002ADE58  3327 0001:002ADE76  3329 0001:002ADE9D
+  3330 0001:002ADEAB  3331 0001:002ADED8  3333 0001:002ADEDD  3335 0001:002ADEF1
+  3337 0001:002ADEFA  3338 0001:002ADF08  3339 0001:002ADF41  3340 0001:002ADF5D
+  3344 0001:002ADFE0  3345 0001:002ADFE5  3346 0001:002ADFEF  3347 0001:002ADFF9
+  3348 0001:002AE003  3349 0001:002AE00D  3350 0001:002AE017  3351 0001:002AE021
+  3352 0001:002AE02B  3353 0001:002AE035  3361 0001:002AE038  3363 0001:002AE05E
+  3364 0001:002AE06D  3365 0001:002AE07B  3366 0001:002AE082  3367 0001:002AE08A
+  3368 0001:002AE092  3369 0001:002AE09A  3370 0001:002AE09E  3371 0001:002AE0A2
+  3372 0001:002AE0B2  3373 0001:002AE0CB  3374 0001:002AE0D3  3375 0001:002AE123
+  3376 0001:002AE179  3378 0001:002AE18D  3379 0001:002AE19B  3381 0001:002AE1A5
+  3382 0001:002AE1B3  3383 0001:002AE1C0  3384 0001:002AE1CE  3385 0001:002AE1D5
+  3386 0001:002AE1E2  3387 0001:002AE1EF  3388 0001:002AE1FC  3389 0001:002AE209
+  3390 0001:002AE219  3392 0001:002AE222  3394 0001:002AE23F  3396 0001:002AE264
+  3397 0001:002AE268  3398 0001:002AE27F  3410 0001:002AE2E6  3411 0001:002AE2F3
+  3412 0001:002AE30B  3413 0001:002AE30D  3397 0001:002AE310  3415 0001:002AE31A
+  3392 0001:002AE31B  3417 0001:002AE324  3419 0001:002AE33A  3421 0001:002AE384
+  3422 0001:002AE38E  3423 0001:002AE39E  3424 0001:002AE3AB  3426 0001:002AE3BB
+  3427 0001:002AE3C8  3428 0001:002AE3D8  3430 0001:002AE3DA  3417 0001:002AE3DB
+  3432 0001:002AE3E4  3434 0001:002AE3FF  3435 0001:002AE40D  3437 0001:002AE417
+  3438 0001:002AE422  3440 0001:002AE436  3441 0001:002AE444  3442 0001:002AE451
+  3443 0001:002AE45F  3444 0001:002AE46D  3445 0001:002AE47B  3446 0001:002AE489
+  3447 0001:002AE497  3449 0001:002AE4A4  3451 0001:002AE4BD  3452 0001:002AE4DB
+  3453 0001:002AE4EA  3455 0001:002AE512  3456 0001:002AE57B  3460 0001:002AE584
+  3461 0001:002AE5ED  3462 0001:002AE66F  3463 0001:002AE6D8  3464 0001:002AE75C
+  3465 0001:002AE76A  3466 0001:002AE778  3468 0001:002AE785  3469 0001:002AE788
+  3449 0001:002AE789  3470 0001:002AE792  3472 0001:002AE798  3473 0001:002AE7A6
+  3474 0001:002AE7B4  3476 0001:002AE7C1  3477 0001:002AE843  3479 0001:002AE87D
+  3480 0001:002AE886  3482 0001:002AE8CF  3483 0001:002AE968  3485 0001:002AE9F1
+  3487 0001:002AEA29  3488 0001:002AEA7B  3493 0001:002AEAB2  3494 0001:002AEABB
+  3496 0001:002AEAD3  3497 0001:002AEB25  3501 0001:002AEB59  3502 0001:002AEB72
+  3505 0001:002AEB7D  3507 0001:002AEBBA  3508 0001:002AEC19  3510 0001:002AEC37
+  3511 0001:002AECB7  3512 0001:002AED26  3513 0001:002AED95  3514 0001:002AEE04
+  3515 0001:002AEE35  3516 0001:002AEE57  3517 0001:002AEE5E  3518 0001:002AEE70
+  3520 0001:002AEE8E  3521 0001:002AEF20  3522 0001:002AEF23  3518 0001:002AEF26
+  3523 0001:002AEF2F  3525 0001:002AEF3C  3526 0001:002AEF43  3527 0001:002AEF50
+  3528 0001:002AEF5D  3529 0001:002AEF6A  3530 0001:002AEF77  3531 0001:002AEF84
+  3534 0001:002AEFA1  3536 0001:002AEFB1  3539 0001:002AF384  3541 0001:002AF39E
+  3542 0001:002AF3AB  3543 0001:002AF3B6  3544 0001:002AF3EF  3545 0001:002AF40B
+  3548 0001:002AF44C  3550 0001:002AF44F  3551 0001:002AF45C  3552 0001:002AF467
+  3555 0001:002AF46C  3557 0001:002AF46F  3559 0001:002AF483  3560 0001:002AF491
+  3562 0001:002AF493  3563 0001:002AF4A1  3564 0001:002AF4AB  3565 0001:002AF4B5
+  3566 0001:002AF4BF  3567 0001:002AF4C6  3568 0001:002AF4D3  3569 0001:002AF4E0
+  3570 0001:002AF4ED  3571 0001:002AF4FA  3572 0001:002AF504  3573 0001:002AF512
+  3574 0001:002AF520  3575 0001:002AF52E  3576 0001:002AF53C  3577 0001:002AF54A
+  3578 0001:002AF558  3579 0001:002AF566  3580 0001:002AF574  3581 0001:002AF582
+  3582 0001:002AF58F  3583 0001:002AF59C  3584 0001:002AF5A9  3585 0001:002AF5B6
+  3586 0001:002AF5C1  3587 0001:002AF5CC  3588 0001:002AF5D7  3589 0001:002AF5E4
+  3598 0001:002AF618  3599 0001:002AF63D  3600 0001:002AF64D  3602 0001:002AF656
+  3603 0001:002AF66B  3605 0001:002AF670  3606 0001:002AF674  3608 0001:002AF682
+  3609 0001:002AF696  3611 0001:002AF6C7  3612 0001:002AF6CB  3613 0001:002AF6CD
+  3608 0001:002AF6CE  3615 0001:002AF6D1  3617 0001:002AF6D7  3618 0001:002AF6E0
+  3620 0001:002AF6EE  3621 0001:002AF6F9  3624 0001:002AF804  3626 0001:002AF825
+  3628 0001:002AF837  3630 0001:002AF84A  3632 0001:002AF85D  3633 0001:002AF86B
+  3634 0001:002AF872  3635 0001:002AF87F  3636 0001:002AF886  3641 0001:002AF88B
+  3643 0001:002AF8ED  3644 0001:002AF8FB  3645 0001:002AF902  3646 0001:002AF90F
+  3647 0001:002AF916  3651 0001:002AF91B  3652 0001:002AF985  3654 0001:002AF9A1
+  3657 0001:002AFA70  3659 0001:002AFA86  3661 0001:002AFA94  3662 0001:002AFAC5
+  3664 0001:002AFAE1  3667 0001:002AFB28  3669 0001:002AFB48  3671 0001:002AFB70
+  3672 0001:002AFBB4  3673 0001:002AFBCF  3675 0001:002AFBEC  3676 0001:002AFBF9
+  3677 0001:002AFC06  3681 0001:002AFC1B  3682 0001:002AFC28  3683 0001:002AFC35
+  3684 0001:002AFC45  3685 0001:002AFC53  3689 0001:002AFC8E  3690 0001:002AFCA9
+  3691 0001:002AFCC5  3694 0001:002AFD58  3696 0001:002AFD72  3697 0001:002AFD95
+  3698 0001:002AFDB0  3706 0001:002AFDDC  3708 0001:002AFDFE  3709 0001:002AFE0D
+  3710 0001:002AFE11  3711 0001:002AFE1F  3713 0001:002AFE7A  3714 0001:002AFE82
+  3715 0001:002AFE92  3717 0001:002AFEA9  3720 0001:002AFF21  3721 0001:002AFF4C
+  3725 0001:002AFF75  3726 0001:002AFF81  3734 0001:002B0023  3736 0001:002B002F
+  3738 0001:002B0034  3739 0001:002B005E  3740 0001:002B006E  3741 0001:002B0081
+  3742 0001:002B008C  3745 0001:002B008E  3746 0001:002B0092  3748 0001:002B0094
+  3715 0001:002B0095  3750 0001:002B009E  3752 0001:002B00F8  3753 0001:002B0100
+  3754 0001:002B0110  3756 0001:002B012E  3757 0001:002B0178  3759 0001:002B018F
+  3763 0001:002B0267  3764 0001:002B029E  3768 0001:002B0336  3769 0001:002B0342
+  3777 0001:002B0447  3779 0001:002B0453  3781 0001:002B045C  3782 0001:002B0492
+  3783 0001:002B04A2  3784 0001:002B04B5  3785 0001:002B04C0  3786 0001:002B04D0
+  3787 0001:002B04E1  3788 0001:002B04F1  3789 0001:002B0511  3790 0001:002B051B
+  3795 0001:002B051D  3757 0001:002B051E  3796 0001:002B0527  3754 0001:002B052A
+  3798 0001:002B0533  3799 0001:002B0541  3800 0001:002B056B  3801 0001:002B05B0
+  3802 0001:002B05B7  3804 0001:002B05E5  3805 0001:002B0641  3806 0001:002B0663
+  3808 0001:002B06A8  3810 0001:002B06D7  3812 0001:002B06E7  3815 0001:002B0910
+  3817 0001:002B092C  3818 0001:002B096B  3826 0001:002B0998  3828 0001:002B09BA
+  3829 0001:002B09C7  3830 0001:002B09D6  3832 0001:002B09FE  3834 0001:002B0A23
+  3835 0001:002B0A31  3836 0001:002B0A3E  3838 0001:002B0A43  3840 0001:002B0A5E
+  3841 0001:002B0A6C  3842 0001:002B0A99  3845 0001:002B0A9E  3846 0001:002B0AAC
+  3848 0001:002B0B07  3849 0001:002B0B0F  3850 0001:002B0B1F  3852 0001:002B0B36
+  3855 0001:002B0BAE  3856 0001:002B0BD8  3860 0001:002B0BFE  3861 0001:002B0C0A
+  3869 0001:002B0C95  3871 0001:002B0CA1  3873 0001:002B0CA6  3874 0001:002B0CD0
+  3875 0001:002B0CE0  3876 0001:002B0CF3  3877 0001:002B0CFE  3882 0001:002B0D00
+  3850 0001:002B0D01  3884 0001:002B0D0A  3885 0001:002B0D2E  3887 0001:002B0D4E
+  3889 0001:002B0DAE  3890 0001:002B0DBD  3891 0001:002B0DD0  3892 0001:002B0DE6
+  3893 0001:002B0DF1  3894 0001:002B0E13  3895 0001:002B0E3A  3896 0001:002B0E7D
+  3897 0001:002B0E8C  3899 0001:002B0EC7  3900 0001:002B0EFC  3904 0001:002B0F25
+  3905 0001:002B0F32  3908 0001:002B0F3F  3909 0001:002B0F8D  3911 0001:002B0F8F
+  3885 0001:002B0F90  3912 0001:002B0F99  3914 0001:002B0FC3  3917 0001:002B0FF2
+  3919 0001:002B1002  3922 0001:002B128C  3924 0001:002B128F  3925 0001:002B12A2
+  3926 0001:002B12AD  3929 0001:002B12B0  3931 0001:002B12B3  3932 0001:002B12C6
+  3933 0001:002B12D1  3936 0001:002B12D4  3938 0001:002B12F5  3940 0001:002B1307
+  3942 0001:002B1335  3943 0001:002B133B  3945 0001:002B136A  3946 0001:002B13DD
+  3948 0001:002B1458  3950 0001:002B1482  3951 0001:002B14D2  3956 0001:002B1508
+  3957 0001:002B150E  3959 0001:002B1525  3960 0001:002B1575  3964 0001:002B15A8
+  3965 0001:002B15C1  3968 0001:002B15CC  3970 0001:002B15EE
+
+Line numbers for fODBBank(Orders\fODBBank.pas) segment .itext
+
+  3972 0002:00001700
+
+Line numbers for rODRad(Orders\rODRad.pas) segment .text
+
+    26 0001:002B178C    27 0001:002B1798    28 0001:002B17C3    29 0001:002B17D0
+    34 0001:002B17F0    35 0001:002B17FC    36 0001:002B1827    37 0001:002B1834
+    43 0001:002B1858    44 0001:002B187A    45 0001:002B1890    46 0001:002B18AC
+    45 0001:002B18DC    47 0001:002B18DF    48 0001:002B18EA    51 0001:002B1940
+    52 0001:002B195F    53 0001:002B199B    56 0001:002B19E0    57 0001:002B19E3
+    58 0001:002B19FB    59 0001:002B1A08    62 0001:002B1A28    63 0001:002B1A2B
+    64 0001:002B1A43    65 0001:002B1A50    68 0001:002B1A70    69 0001:002B1A90
+    70 0001:002B1AA9    71 0001:002B1AB6    74 0001:002B1AF4    75 0001:002B1AFD
+    76 0001:002B1B17    79 0001:002B1B38    80 0001:002B1B52    81 0001:002B1B7E
+    83 0001:002B1BF6
+
+Line numbers for fODRadConShRes(Orders\fODRadConShRes.pas) segment .text
+
+    42 0001:002B1E14    43 0001:002B1E3C    44 0001:002B1E53    47 0001:002B1E61
+    48 0001:002B1E6E    49 0001:002B1E79    50 0001:002B1E84    51 0001:002B1E91
+    52 0001:002B1EAD    53 0001:002B1EC9    54 0001:002B1ED3    56 0001:002B1EEA
+    57 0001:002B1F10    59 0001:002B1F1F    60 0001:002B1F2F    61 0001:002B1F38
+    62 0001:002B1F54    63 0001:002B1F5B    68 0001:002B1F68    70 0001:002B1F7C
+    72 0001:002B1F81    73 0001:002B1F91    74 0001:002B1F9F    75 0001:002B1FAF
+    76 0001:002B1FBA    78 0001:002B1FDB    81 0001:002B1FF8    83 0001:002B2008
+    86 0001:002B2048    87 0001:002B204B    88 0001:002B2052    89 0001:002B205D
+    90 0001:002B2064    93 0001:002B2068    94 0001:002B2084    96 0001:002B2099
+    98 0001:002B20AA    99 0001:002B20BD   100 0001:002B20C4   101 0001:002B20CF
+   103 0001:002B20D4   104 0001:002B20DB   108 0001:002B2105   110 0001:002B2158
+   111 0001:002B216B   112 0001:002B2172   113 0001:002B217D   115 0001:002B217F
+   116 0001:002B2186   118 0001:002B21A2   119 0001:002B21A9   121 0001:002B228A
+
+Line numbers for fODRadApproval(Orders\fODRadApproval.pas) segment .text
+
+    39 0001:002B2498    40 0001:002B24A4    41 0001:002B24BB    44 0001:002B24C9
+    45 0001:002B24D6    46 0001:002B24E1    47 0001:002B24EC    48 0001:002B24F9
+    49 0001:002B2515    50 0001:002B2531    51 0001:002B253B    52 0001:002B2554
+    53 0001:002B255F    56 0001:002B257C    58 0001:002B258C    62 0001:002B2594
+    63 0001:002B2599    66 0001:002B259C    67 0001:002B25B3    69 0001:002B25C8
+    70 0001:002B25DB    71 0001:002B25E2    73 0001:002B25E4    74 0001:002B25EB
+    75 0001:002B2616    76 0001:002B261D    78 0001:002B26BA
+
+Line numbers for fODRad(Orders\fODRad.pas) segment .text
+
+   130 0001:002B2CEC   131 0001:002B2D16   132 0001:002B2D20   134 0001:002B2D3A
+   135 0001:002B2D4C   136 0001:002B2D53   137 0001:002B2D5A   138 0001:002B2D61
+   140 0001:002B2D6A   141 0001:002B2D80   142 0001:002B2D9E   141 0001:002B2DE2
+   143 0001:002B2DE7   145 0001:002B2DED   146 0001:002B2DF7   149 0001:002B2E04
+   150 0001:002B2E0E   151 0001:002B2E31   152 0001:002B2E56   153 0001:002B2E60
+   154 0001:002B2E74   155 0001:002B2E7B   156 0001:002B2E82   157 0001:002B2E96
+   158 0001:002B2EAA   159 0001:002B2EBE   160 0001:002B2ED2   161 0001:002B2EE6
+   162 0001:002B2EFA   163 0001:002B2F0E   164 0001:002B2F22   165 0001:002B2F36
+   166 0001:002B2F49   168 0001:002B2F4D   169 0001:002B2F59   171 0001:002B2F69
+   173 0001:002B2F83   174 0001:002B2F96   175 0001:002B2FC4   177 0001:002B3026
+   178 0001:002B3039   181 0001:002B304D   182 0001:002B3067   185 0001:002B3071
+   187 0001:002B30A8   188 0001:002B30BB   191 0001:002B30CF   192 0001:002B30DC
+   196 0001:002B30E6   197 0001:002B30F9   198 0001:002B3101   200 0001:002B3111
+   201 0001:002B311E   202 0001:002B312F   204 0001:002B3141   205 0001:002B3152
+   207 0001:002B3164   208 0001:002B3175   211 0001:002B3185   212 0001:002B318C
+   213 0001:002B3193   214 0001:002B31B6   215 0001:002B31BF   217 0001:002B31C6
+   223 0001:002B3348   224 0001:002B3369   226 0001:002B3375   227 0001:002B337D
+   230 0001:002B3396   231 0001:002B33A3   232 0001:002B33B0   233 0001:002B33BA
+   234 0001:002B33C4   235 0001:002B33CE   236 0001:002B33D5   237 0001:002B33DF
+   238 0001:002B33E6   239 0001:002B33F3   240 0001:002B340C   241 0001:002B3431
+   243 0001:002B343D   244 0001:002B3453   245 0001:002B3479   246 0001:002B348F
+   247 0001:002B34AC   246 0001:002B34DC   248 0001:002B34DF   251 0001:002B3504
+   252 0001:002B351A   253 0001:002B3530   254 0001:002B3546   255 0001:002B355B
+   256 0001:002B3569   257 0001:002B3575   258 0001:002B358B   259 0001:002B35A0
+   260 0001:002B35AE   261 0001:002B35BA   262 0001:002B35D0   263 0001:002B35E6
+   265 0001:002B35FE   266 0001:002B360F   267 0001:002B361F   268 0001:002B362F
+   270 0001:002B364A   272 0001:002B366E   274 0001:002B3689   275 0001:002B3698
+   276 0001:002B36A6   277 0001:002B36BD   278 0001:002B36CC   280 0001:002B36F0
+   282 0001:002B3700   283 0001:002B3711   284 0001:002B3721   285 0001:002B3731
+   289 0001:002B374C   290 0001:002B375C   291 0001:002B376C   292 0001:002B377C
+   295 0001:002B3797   297 0001:002B37B7   298 0001:002B37CE   300 0001:002B37E0
+   301 0001:002B37F1   302 0001:002B3801   303 0001:002B3811   305 0001:002B3827
+   306 0001:002B3849   308 0001:002B385F   309 0001:002B3870   310 0001:002B387B
+   311 0001:002B3885   312 0001:002B3895   314 0001:002B389C   319 0001:002B39F8
+   321 0001:002B3A1B   322 0001:002B3A28   323 0001:002B3A33   324 0001:002B3A39
+   325 0001:002B3A8C   327 0001:002B3AA5   328 0001:002B3ACB   329 0001:002B3AFE
+   330 0001:002B3B17   331 0001:002B3B84   332 0001:002B3BFD   333 0001:002B3C88
+   334 0001:002B3D13   335 0001:002B3D48   336 0001:002B3D6C   337 0001:002B3D9F
+   338 0001:002B3DD2   339 0001:002B3E07   340 0001:002B3E26   341 0001:002B3E82
+   342 0001:002B3ED0   343 0001:002B3F0F   344 0001:002B3F34   343 0001:002B3FB2
+   345 0001:002B3FBB   346 0001:002B400E   347 0001:002B4061   348 0001:002B4082
+   349 0001:002B40BF   350 0001:002B4109   351 0001:002B412B   359 0001:002B43D8
+   360 0001:002B43DF   361 0001:002B4410   362 0001:002B4423   365 0001:002B4434
+   366 0001:002B444E   367 0001:002B4455   368 0001:002B445F   369 0001:002B4475
+   371 0001:002B4482   372 0001:002B4491   373 0001:002B44CE   376 0001:002B4514
+   377 0001:002B4546   379 0001:002B468C   380 0001:002B46B2   381 0001:002B46BD
+   383 0001:002B46C6   386 0001:002B4716   387 0001:002B475C   389 0001:002B47A9
+   390 0001:002B47BB   392 0001:002B47D2   397 0001:002B481C   398 0001:002B4844
+   401 0001:002B4855   402 0001:002B4857   404 0001:002B4885   405 0001:002B48B1
+   406 0001:002B48E2   407 0001:002B48E7   402 0001:002B48E8   408 0001:002B48EB
+   411 0001:002B48FC   413 0001:002B4927   414 0001:002B4929   416 0001:002B4957
+   417 0001:002B4983   418 0001:002B49B4   419 0001:002B49B9   414 0001:002B49BA
+   420 0001:002B49BD   423 0001:002B49CE   425 0001:002B49D7   426 0001:002B49E1
+   427 0001:002B49FA   428 0001:002B49FC   429 0001:002B4A31   430 0001:002B4A7C
+   431 0001:002B4AC3   433 0001:002B4B1C   434 0001:002B4B20   436 0001:002B4B2E
+   438 0001:002B4B87   439 0001:002B4B8B   442 0001:002B4B97   444 0001:002B4BD0
+   445 0001:002B4BD9   447 0001:002B4C01   449 0001:002B4C0A   450 0001:002B4C1D
+   451 0001:002B4C2B   452 0001:002B4C3E   453 0001:002B4C4C   454 0001:002B4C6B
+   457 0001:002B4C77   462 0001:002B4FF0   464 0001:002B4FF9   465 0001:002B5016
+   472 0001:002B501C   473 0001:002B5046   475 0001:002B5071   476 0001:002B5075
+   477 0001:002B5092   479 0001:002B5098   480 0001:002B50A8   481 0001:002B50C4
+   480 0001:002B50EA   482 0001:002B50EF   484 0001:002B50F5   485 0001:002B5104
+   488 0001:002B5121   489 0001:002B5143   490 0001:002B5153   491 0001:002B515D
+   494 0001:002B51B4   495 0001:002B51D4   496 0001:002B51DA   499 0001:002B51FE
+   500 0001:002B523B   501 0001:002B524C   502 0001:002B525A   503 0001:002B5266
+   504 0001:002B527E   505 0001:002B5297   507 0001:002B52DC   508 0001:002B52E6
+   513 0001:002B5340   515 0001:002B5365   517 0001:002B536B   519 0001:002B5396
+   520 0001:002B53AE   521 0001:002B53B7   523 0001:002B53BE   524 0001:002B53C5
+   525 0001:002B53C9   526 0001:002B53D4   527 0001:002B53DF   529 0001:002B53EA
+   530 0001:002B53F1   531 0001:002B5417   533 0001:002B541D   536 0001:002B5443
+   539 0001:002B545B   541 0001:002B546B   542 0001:002B5472   543 0001:002B5486
+   544 0001:002B548D   545 0001:002B54A1   546 0001:002B54B5   547 0001:002B54C9
+   548 0001:002B54DD   549 0001:002B54F1   550 0001:002B5505   551 0001:002B5519
+   552 0001:002B552D   553 0001:002B5541   554 0001:002B5555   555 0001:002B5568
+   557 0001:002B556C   558 0001:002B5578   560 0001:002B5588   562 0001:002B55A2
+   564 0001:002B55A9   565 0001:002B55C6   566 0001:002B55CF   572 0001:002B56FC
+   573 0001:002B571A   574 0001:002B571F   575 0001:002B5733   577 0001:002B5737
+   578 0001:002B5764   579 0001:002B5773   580 0001:002B5789   581 0001:002B578A
+   575 0001:002B579E   583 0001:002B57A2   588 0001:002B580C   590 0001:002B582E
+   591 0001:002B5847   592 0001:002B5860   593 0001:002B5868   594 0001:002B5872
+   595 0001:002B587C   597 0001:002B5882   599 0001:002B58B2   600 0001:002B58E6
+   601 0001:002B58F5   602 0001:002B590A   603 0001:002B5934   604 0001:002B5943
+   605 0001:002B5970   608 0001:002B597D   609 0001:002B5986   612 0001:002B5A50
+   613 0001:002B5A6B   614 0001:002B5A72   615 0001:002B5A79   616 0001:002B5A8D
+   617 0001:002B5A94   618 0001:002B5A9D   619 0001:002B5AB5   620 0001:002B5AD6
+   621 0001:002B5AE2   622 0001:002B5AEC   623 0001:002B5AF7   624 0001:002B5B00
+   625 0001:002B5B07   626 0001:002B5B17   627 0001:002B5B21   628 0001:002B5B37
+   629 0001:002B5B41   630 0001:002B5B64   631 0001:002B5B71   632 0001:002B5B7E
+   633 0001:002B5B8B   634 0001:002B5B98   635 0001:002B5BA5   636 0001:002B5BB2
+   637 0001:002B5BBF   638 0001:002B5BCC   639 0001:002B5BD9   641 0001:002B5BE6
+   642 0001:002B5BF3   643 0001:002B5C00   644 0001:002B5C0F   645 0001:002B5C16
+   646 0001:002B5C28   654 0001:002B5CB8   655 0001:002B5CBF   660 0001:002B5CC0
+   662 0001:002B5CC7   663 0001:002B5CD6   664 0001:002B5CE4   665 0001:002B5CF8
+   666 0001:002B5D05   667 0001:002B5D19   669 0001:002B5D2F   671 0001:002B5D3F
+   674 0001:002B5D44   675 0001:002B5D47   676 0001:002B5D4E   677 0001:002B5D66
+   678 0001:002B5D87   682 0001:002B5D8C   684 0001:002B5D8F   685 0001:002B5D9C
+   688 0001:002B5DA0   690 0001:002B5DB6   691 0001:002B5DDE   692 0001:002B5DE7
+   696 0001:002B5E08   697 0001:002B5E31   698 0001:002B5E41   706 0001:002B5E44
+   707 0001:002B5E4B   709 0001:002B5E58   710 0001:002B5E5A   711 0001:002B5E70
+   712 0001:002B5E86   713 0001:002B5E9A   715 0001:002B5E9E   716 0001:002B5EB3
+   719 0001:002B5EB5   720 0001:002B5EBE   726 0001:002B5F40   728 0001:002B5F64
+   729 0001:002B5F73   730 0001:002B5F8A   731 0001:002B5FA5   730 0001:002B5FC9
+   732 0001:002B5FCC   733 0001:002B5FD7   735 0001:002B5FE9   736 0001:002B600E
+   737 0001:002B603F   733 0001:002B6040   738 0001:002B6043   739 0001:002B604F
+   740 0001:002B6066   739 0001:002B60CF   741 0001:002B60D2   747 0001:002B6110
+   748 0001:002B6115   751 0001:002B6118   752 0001:002B611B   753 0001:002B6122
+   754 0001:002B6136   755 0001:002B6146   758 0001:002B6148   761 0001:002B614C
+   762 0001:002B6155   763 0001:002B6160   764 0001:002B6173   765 0001:002B6181
+   768 0001:002B6184   771 0001:002B6188   772 0001:002B6191   773 0001:002B619C
+   774 0001:002B61AF   775 0001:002B61BD   778 0001:002B61C0   779 0001:002B61C3
+   780 0001:002B61FF   785 0001:002B6204   786 0001:002B6209   789 0001:002B620C
+   790 0001:002B6225   791 0001:002B6232   792 0001:002B6239   793 0001:002B6242
+   794 0001:002B6249   795 0001:002B6268   796 0001:002B62AB   797 0001:002B62B5
+   798 0001:002B62D9   799 0001:002B62E0   800 0001:002B62EA   803 0001:002B6314
+   804 0001:002B6318   806 0001:002B6321   807 0001:002B6328   808 0001:002B632E
+   810 0001:002B6361   813 0001:002B636E
+
+Line numbers for fODRad(Orders\fODRad.pas) segment .itext
+
+   815 0002:00001708
+
+Line numbers for fODText(Orders\fODText.pas) segment .text
+
+    45 0001:002B661C    46 0001:002B661F    47 0001:002B6626    48 0001:002B6632
+    49 0001:002B663C    52 0001:002B664C    53 0001:002B6656    54 0001:002B665D
+    57 0001:002B66B8    58 0001:002B66BB    59 0001:002B66C2    60 0001:002B66CF
+    63 0001:002B66D4    64 0001:002B66DA    65 0001:002B66E3    67 0001:002B66F6
+    68 0001:002B670A    69 0001:002B671E    71 0001:002B6735    72 0001:002B6745
+    83 0001:002B6784    84 0001:002B678B    85 0001:002B67BC    86 0001:002B67CF
+    88 0001:002B67E0    89 0001:002B6810    90 0001:002B681A    91 0001:002B681E
+    93 0001:002B6863    94 0001:002B6867    95 0001:002B6869    91 0001:002B686A
+    96 0001:002B686D    97 0001:002B687F    98 0001:002B68A5    99 0001:002B68BD
+   100 0001:002B68C5   101 0001:002B68EB   102 0001:002B6903   103 0001:002B690B
+   104 0001:002B6926   105 0001:002B6941   112 0001:002B6968   115 0001:002B6A24
+   116 0001:002B6A3D   117 0001:002B6A44   118 0001:002B6A50   119 0001:002B6A7B
+   122 0001:002B6AA4   124 0001:002B6AC6   125 0001:002B6AD3   126 0001:002B6B0C
+   127 0001:002B6B63   128 0001:002B6BBA   129 0001:002B6BD6   131 0001:002B6C82
+
+Line numbers for fODMedComplex(Orders\fODMedComplex.pas) segment .text
+
+    94 0001:002B708C    95 0001:002B70B0    96 0001:002B70C7    97 0001:002B70D5
+   100 0001:002B70DD   101 0001:002B7105   102 0001:002B713E   103 0001:002B7153
+   104 0001:002B7171   105 0001:002B7186   108 0001:002B719B   109 0001:002B71BA
+   110 0001:002B71BF   111 0001:002B71CF   113 0001:002B71D7   116 0001:002B7260
+   117 0001:002B7271   118 0001:002B7285   119 0001:002B72B1   120 0001:002B72F0
+   121 0001:002B731B   122 0001:002B732D   123 0001:002B7357   124 0001:002B739A
+   125 0001:002B73AA   111 0001:002B73AB   129 0001:002B73B3   130 0001:002B73C3
+   132 0001:002B73D6   133 0001:002B73E4   134 0001:002B73F2   135 0001:002B7400
+   136 0001:002B740E   137 0001:002B741C   139 0001:002B7432   141 0001:002B745F
+   142 0001:002B749B   143 0001:002B74C4   144 0001:002B7500   145 0001:002B753C
+   146 0001:002B7578   148 0001:002B75B4   137 0001:002B75B5   151 0001:002B75C9
+   153 0001:002B75D9   161 0001:002B7700   162 0001:002B772E   163 0001:002B7735
+   164 0001:002B7750   165 0001:002B7756   166 0001:002B77A9   167 0001:002B77D0
+   168 0001:002B77F7   169 0001:002B781E   170 0001:002B7845   171 0001:002B786C
+   172 0001:002B7893   173 0001:002B78B7   174 0001:002B78DB   175 0001:002B78FF
+   177 0001:002B7921   182 0001:002B794C   185 0001:002B7973   186 0001:002B7975
+   189 0001:002B797E   190 0001:002B79BA   187 0001:002B79BB   192 0001:002B79D3
+   194 0001:002B79D9   195 0001:002B79E4   196 0001:002B79F0   197 0001:002B79FD
+   200 0001:002B7A2F   201 0001:002B7A39   204 0001:002B7A4E   209 0001:002B7A78
+   211 0001:002B7A7C   213 0001:002B7A82   214 0001:002B7A90   215 0001:002B7AA1
+   216 0001:002B7AB4   217 0001:002B7AC7   218 0001:002B7ADA   220 0001:002B7AED
+   221 0001:002B7AF7   229 0001:002B7B44   231 0001:002B7B4D   232 0001:002B7B66
+   233 0001:002B7B72   235 0001:002B7B89   236 0001:002B7B99   238 0001:002B7BA7
+   241 0001:002B7BB0   243 0001:002B7BB6   244 0001:002B7BD6   245 0001:002B7BFC
+   249 0001:002B7C00   251 0001:002B7C07   252 0001:002B7C18   253 0001:002B7C38
+   254 0001:002B7C58   256 0001:002B7C76   257 0001:002B7C80   262 0001:002B7C88
+   264 0001:002B7CB5   266 0001:002B7CFD   273 0001:002B7D28   276 0001:002B7D33
+   277 0001:002B7D54   279 0001:002B7D8C   280 0001:002B7D93   281 0001:002B7D9A
+   283 0001:002B7DA4   285 0001:002B7DAC   287 0001:002B7DDB   289 0001:002B7DE5
+   292 0001:002B7E1E   294 0001:002B7E2E   297 0001:002B7E4E   299 0001:002B7E71
+   300 0001:002B7EB0   301 0001:002B7EE0   304 0001:002B7F10   305 0001:002B7F35
+   306 0001:002B7F44   308 0001:002B7F59   309 0001:002B7F69   311 0001:002B7F83
+   312 0001:002B7F93   313 0001:002B7FA0   314 0001:002B7FA4   315 0001:002B7FC2
+   319 0001:002B7FEC   320 0001:002B8011   321 0001:002B804D   322 0001:002B805C
+   323 0001:002B8063   324 0001:002B8070   328 0001:002B8096   329 0001:002B80A5
+   330 0001:002B80AC   331 0001:002B80B9   332 0001:002B80BD   333 0001:002B80DB
+   337 0001:002B8102   338 0001:002B8111   339 0001:002B8118   340 0001:002B8129
+   341 0001:002B812D   342 0001:002B8148   345 0001:002B816D   349 0001:002B81A4
+   350 0001:002B81C1   351 0001:002B81D2   352 0001:002B81ED   353 0001:002B8208
+   355 0001:002B8223   356 0001:002B823C   359 0001:002B824F   364 0001:002B8278
+   367 0001:002B827C   369 0001:002B829B   370 0001:002B82A9   375 0001:002B82AC
+   377 0001:002B82CA   379 0001:002B82D3   381 0001:002B82F8   382 0001:002B8308
+   383 0001:002B8318   384 0001:002B8328   385 0001:002B8338   388 0001:002B833D
+   390 0001:002B83B3   391 0001:002B83C0   392 0001:002B83C5   397 0001:002B8420
+   399 0001:002B8427   400 0001:002B8448   401 0001:002B845A   405 0001:002B8460
+   406 0001:002B846E   415 0001:002B8470   417 0001:002B8491   418 0001:002B84A1
+   419 0001:002B84CD   420 0001:002B84DB   421 0001:002B84F8   422 0001:002B8524
+   420 0001:002B85C0   423 0001:002B85C9   426 0001:002B8638   428 0001:002B863B
+   429 0001:002B8644   430 0001:002B8651   431 0001:002B8656   436 0001:002B8658
+   438 0001:002B866F   439 0001:002B8696   440 0001:002B86A3   441 0001:002B86A8
+   448 0001:002B86CC   449 0001:002B86DA   454 0001:002B86DC   456 0001:002B86F4
+   457 0001:002B8702   458 0001:002B871F   459 0001:002B8745   460 0001:002B8762
+   461 0001:002B876F   462 0001:002B8774   465 0001:002B87BC   467 0001:002B87D2
+   468 0001:002B87FC   476 0001:002B882C   478 0001:002B884A   479 0001:002B885B
+   481 0001:002B8864   482 0001:002B8873   483 0001:002B8896   484 0001:002B88B3
+   485 0001:002B88D0   487 0001:002B88DE   488 0001:002B890A   489 0001:002B891C
+   490 0001:002B8932   491 0001:002B8948   492 0001:002B895E   493 0001:002B896A
+   495 0001:002B897F   500 0001:002B89BC   502 0001:002B89C1   503 0001:002B89CF
+   506 0001:002B89E8   507 0001:002B8A11   508 0001:002B8A1F   510 0001:002B8A31
+   518 0001:002B8A38   519 0001:002B8A3F   520 0001:002B8A70   521 0001:002B8A83
+   523 0001:002B8A94   524 0001:002B8AB9   525 0001:002B8AC1   527 0001:002B8AE4
+   529 0001:002B8B10   530 0001:002B8B50   531 0001:002B8B89   532 0001:002B8BC2
+   534 0001:002B8C0A   535 0001:002B8C2A   536 0001:002B8C39   537 0001:002B8C64
+   540 0001:002B8CA9   525 0001:002B8CAA   541 0001:002B8CB3   546 0001:002B8DD4
+   548 0001:002B8DEB   549 0001:002B8DF9   550 0001:002B8E03   551 0001:002B8E25
+   552 0001:002B8E2F   557 0001:002B8E64   558 0001:002B8E69   562 0001:002B8E98
+
+Line numbers for fODMedFA(Orders\fODMedFA.pas) segment .text
+
+    47 0001:002B90B0    48 0001:002B90D6    49 0001:002B90DA    50 0001:002B90DE
+    51 0001:002B90E6    52 0001:002B90EE    53 0001:002B90FD    54 0001:002B910B
+    55 0001:002B9119    57 0001:002B9129    58 0001:002B9140    59 0001:002B914E
+    62 0001:002B9156    63 0001:002B916E    64 0001:002B9179    66 0001:002B9193
+    67 0001:002B91B8    68 0001:002B91DD    69 0001:002B9201    73 0001:002B9232
+    76 0001:002B9242    78 0001:002B9260    80 0001:002B9270    83 0001:002B9368
+    85 0001:002B936B    86 0001:002B9376    89 0001:002B9378    91 0001:002B937B
+    92 0001:002B9399    95 0001:002B939C    97 0001:002B93B3    98 0001:002B93EF
+    99 0001:002B93F6   104 0001:002B9418   105 0001:002B941D   107 0001:002B944C
+
+Line numbers for fODMedOut(Orders\fODMedOut.pas) segment .text
+
+   117 0001:002B9900   118 0001:002B9916   119 0001:002B991D   120 0001:002B9924
+   121 0001:002B992C   123 0001:002B993C   124 0001:002B994B   125 0001:002B9952
+   127 0001:002B9954   128 0001:002B9960   129 0001:002B996A   130 0001:002B997A
+   131 0001:002B9984   132 0001:002B9996   133 0001:002B99A0   134 0001:002B99B6
+   135 0001:002B99C3   138 0001:002B9A78   139 0001:002B9A7C   140 0001:002B9A83
+   141 0001:002B9A8B   142 0001:002B9A96   143 0001:002B9AA1   144 0001:002B9AAD
+   146 0001:002B9AB3   147 0001:002B9AC5   149 0001:002B9AD0   150 0001:002B9AE2
+   152 0001:002B9AF4   154 0001:002B9B06   155 0001:002B9B0D   156 0001:002B9B17
+   157 0001:002B9B24   158 0001:002B9B31   159 0001:002B9B3E   160 0001:002B9B4B
+   161 0001:002B9B52   162 0001:002B9B59   167 0001:002B9BD4   168 0001:002B9BF9
+   169 0001:002B9C05   170 0001:002B9C24   172 0001:002B9C3D   173 0001:002B9C44
+   174 0001:002B9C58   175 0001:002B9C5F   176 0001:002B9C66   178 0001:002B9C6D
+   179 0001:002B9C81   180 0001:002B9C88   181 0001:002B9C9C   182 0001:002B9CB0
+   183 0001:002B9CD5   184 0001:002B9CE9   185 0001:002B9CFD   187 0001:002B9D11
+   189 0001:002B9D2F   190 0001:002B9D3A   191 0001:002B9D44   192 0001:002B9D51
+   193 0001:002B9D5E   194 0001:002B9D7A   197 0001:002B9D88   198 0001:002B9D99
+   199 0001:002B9DA6   200 0001:002B9DAD   202 0001:002B9DB6   203 0001:002B9DCB
+   211 0001:002B9E88   212 0001:002B9E8F   213 0001:002B9EC0   214 0001:002B9ED3
+   216 0001:002B9EE4   217 0001:002B9F0A   218 0001:002B9F14   220 0001:002B9F44
+   222 0001:002B9F54   223 0001:002B9F84   224 0001:002B9FAF   225 0001:002B9FE7
+   226 0001:002B9FF3   228 0001:002BA026   229 0001:002BA042   230 0001:002BA051
+   231 0001:002BA05F   233 0001:002BA07C   235 0001:002BA0AC   236 0001:002BA0DF
+   237 0001:002BA10B   238 0001:002BA12F   240 0001:002BA159   241 0001:002BA16F
+   243 0001:002BA178   244 0001:002BA19F   245 0001:002BA1DA   246 0001:002BA22C
+   247 0001:002BA259   248 0001:002BA2A1   249 0001:002BA2CE   251 0001:002BA31A
+   253 0001:002BA32A   255 0001:002BA356   259 0001:002BA37E   264 0001:002BA7BC
+   265 0001:002BA7BF   266 0001:002BA7CA   267 0001:002BA7D5   268 0001:002BA7E2
+   269 0001:002BA7ED   270 0001:002BA7F8   271 0001:002BA803   272 0001:002BA813
+   273 0001:002BA822   274 0001:002BA82D   275 0001:002BA838   278 0001:002BA848
+   279 0001:002BA863   281 0001:002BA869   282 0001:002BA875   283 0001:002BA8A0
+   284 0001:002BA8DF   285 0001:002BA8EC   287 0001:002BA8F9   290 0001:002BA938
+   291 0001:002BA95A   293 0001:002BA960   294 0001:002BA97C   295 0001:002BA995
+   296 0001:002BA9A7   297 0001:002BA9C8   298 0001:002BA9E5   299 0001:002BAA09
+   300 0001:002BAA1B   301 0001:002BAA22   302 0001:002BAA34   303 0001:002BAA55
+   304 0001:002BAA87   306 0001:002BAAA0   311 0001:002BAB5C   313 0001:002BAB65
+   314 0001:002BAB81   318 0001:002BAB98   320 0001:002BABBD   322 0001:002BABC3
+   323 0001:002BAC06   324 0001:002BAC0D   325 0001:002BAC1C   326 0001:002BAC23
+   328 0001:002BAC49   329 0001:002BAC73   331 0001:002BAC8B   333 0001:002BACA7
+   335 0001:002BACB7   336 0001:002BACCB   337 0001:002BACDF   338 0001:002BACE6
+   339 0001:002BACFA   340 0001:002BAD0E   341 0001:002BAD33   342 0001:002BAD47
+   343 0001:002BAD5B   345 0001:002BAD6F   346 0001:002BAD76   347 0001:002BAD7F
+   349 0001:002BAD94   350 0001:002BADAB   358 0001:002BAE74   359 0001:002BAE92
+   361 0001:002BAEDF   362 0001:002BAEFB   364 0001:002BAF01   366 0001:002BAF1F
+   367 0001:002BAF2D   368 0001:002BAF3E   370 0001:002BAF47   373 0001:002BAF58
+   374 0001:002BAF5F   377 0001:002BAFA4   378 0001:002BAFC3   380 0001:002BB01B
+   381 0001:002BB05F   383 0001:002BB088   384 0001:002BB0A0   387 0001:002BB0B2
+   392 0001:002BB0F8   394 0001:002BB113   395 0001:002BB11A   397 0001:002BB120
+   398 0001:002BB144   400 0001:002BB159   401 0001:002BB178   403 0001:002BB19D
+   405 0001:002BB1AA   408 0001:002BB1E8   410 0001:002BB1FF   411 0001:002BB206
+   413 0001:002BB20C   414 0001:002BB230   415 0001:002BB25E   417 0001:002BB26B
+   424 0001:002BB290   425 0001:002BB294   426 0001:002BB2B0   430 0001:002BB2C6
+   431 0001:002BB2E0   432 0001:002BB2EC   433 0001:002BB2F2   434 0001:002BB2FF
+   435 0001:002BB318   436 0001:002BB32F   437 0001:002BB34D   440 0001:002BB35D
+   442 0001:002BB36A   444 0001:002BB384   449 0001:002BB398   451 0001:002BB39F
+   452 0001:002BB3C0   453 0001:002BB3D2   457 0001:002BB3D8   458 0001:002BB3E6
+   461 0001:002BB3E8   462 0001:002BB3EB   463 0001:002BB3F8   464 0001:002BB405
+   465 0001:002BB412   466 0001:002BB41F   467 0001:002BB42C   468 0001:002BB439
+   469 0001:002BB446   470 0001:002BB453   471 0001:002BB463   474 0001:002BB480
+   475 0001:002BB496   476 0001:002BB4A3   477 0001:002BB4B0   478 0001:002BB4BD
+   479 0001:002BB4CA   480 0001:002BB4D7   481 0001:002BB50E   482 0001:002BB51B
+   483 0001:002BB528   484 0001:002BB538   490 0001:002BB574   491 0001:002BB597
+   493 0001:002BB5B7   495 0001:002BB5C5   496 0001:002BB5E4   497 0001:002BB60B
+   498 0001:002BB623   499 0001:002BB650   500 0001:002BB668   503 0001:002BB674
+   504 0001:002BB688   505 0001:002BB69F   506 0001:002BB6C3   507 0001:002BB6DA
+   508 0001:002BB707   509 0001:002BB71E   512 0001:002BB72A   513 0001:002BB738
+   514 0001:002BB74C   516 0001:002BB754   517 0001:002BB76A   518 0001:002BB798
+   519 0001:002BB7C6   520 0001:002BB7F4   521 0001:002BB820   522 0001:002BB853
+   523 0001:002BB867   514 0001:002BB87B   525 0001:002BB883   528 0001:002BB88A
+   529 0001:002BB8A6   532 0001:002BB948   534 0001:002BB94B   536 0001:002BB960
+   537 0001:002BB971   539 0001:002BB973   540 0001:002BB98F   545 0001:002BB9C8
+   547 0001:002BB9DF   548 0001:002BBA13   556 0001:002BBA38   557 0001:002BBA3B
+   559 0001:002BBA57   560 0001:002BBA6A   561 0001:002BBA77   562 0001:002BBA87
+   565 0001:002BBAB6   566 0001:002BBAC9   567 0001:002BBAD6   568 0001:002BBAE6
+   570 0001:002BBAF4   573 0001:002BBAF8   575 0001:002BBB0E   576 0001:002BBB20
+   583 0001:002BBB44   584 0001:002BBB4B   589 0001:002BBB4C   591 0001:002BBB6E
+   592 0001:002BBB78   593 0001:002BBB85   594 0001:002BBB9E   595 0001:002BBBB9
+   596 0001:002BBC17   597 0001:002BBC30   598 0001:002BBC4B   599 0001:002BBCA9
+   600 0001:002BBCC2   602 0001:002BBCD2   603 0001:002BBD09   604 0001:002BBD46
+   605 0001:002BBD56   606 0001:002BBDB4   607 0001:002BBDE5   609 0001:002BBE1C
+   610 0001:002BBE53   611 0001:002BBE90   612 0001:002BBEE4   613 0001:002BBF38
+   614 0001:002BBF6C   615 0001:002BBFCB   616 0001:002BBFED   618 0001:002BC1E2
+
+Line numbers for fODMedIn(Orders\fODMedIn.pas) segment .text
+
+    85 0001:002BC528    86 0001:002BC547    87 0001:002BC552    88 0001:002BC55C
+    89 0001:002BC564    91 0001:002BC581    92 0001:002BC590    93 0001:002BC598
+    95 0001:002BC59A    96 0001:002BC5A7    97 0001:002BC5B1    98 0001:002BC5C4
+    99 0001:002BC5CE   100 0001:002BC5E3   101 0001:002BC5EE   104 0001:002BC698
+   105 0001:002BC6A1   106 0001:002BC6A9   107 0001:002BC6B4   108 0001:002BC6C1
+   109 0001:002BC6CE   110 0001:002BC6E0   112 0001:002BC6EC   113 0001:002BC702
+   115 0001:002BC710   116 0001:002BC726   118 0001:002BC73C   119 0001:002BC746
+   120 0001:002BC756   121 0001:002BC766   122 0001:002BC776   123 0001:002BC787
+   124 0001:002BC78E   127 0001:002BC7F0   128 0001:002BC7FF   129 0001:002BC80D
+   131 0001:002BC82D   132 0001:002BC837   133 0001:002BC84F   134 0001:002BC857
+   135 0001:002BC85F   137 0001:002BC867   138 0001:002BC87F   139 0001:002BC897
+   140 0001:002BC8AF   141 0001:002BC8C7   142 0001:002BC8DF   144 0001:002BC8F7
+   145 0001:002BC90C   146 0001:002BC91C   147 0001:002BC926   149 0001:002BC931
+   150 0001:002BC94B   159 0001:002BC9C8   160 0001:002BC9D1   161 0001:002BCA0F
+   162 0001:002BCA23   164 0001:002BCA34   165 0001:002BCA57   166 0001:002BCA62
+   167 0001:002BCAA2   168 0001:002BCAE2   169 0001:002BCB10   170 0001:002BCB50
+   172 0001:002BCB96   173 0001:002BCBB5   174 0001:002BCBC4   175 0001:002BCBD2
+   177 0001:002BCBF2   178 0001:002BCC32   180 0001:002BCC70   181 0001:002BCC88
+   183 0001:002BCC92   184 0001:002BCCBA   185 0001:002BCD02   186 0001:002BCD68
+   187 0001:002BCDA8   188 0001:002BCDF8   189 0001:002BCE26   191 0001:002BCE74
+   193 0001:002BCE86   194 0001:002BCEE3   195 0001:002BCEEF   196 0001:002BCF12
+   197 0001:002BCF1E   202 0001:002BD324   203 0001:002BD32B   204 0001:002BD339
+   205 0001:002BD347   206 0001:002BD355   207 0001:002BD363   208 0001:002BD371
+   209 0001:002BD37F   212 0001:002BD384   213 0001:002BD39F   215 0001:002BD3AB
+   216 0001:002BD3BD   218 0001:002BD3D5   219 0001:002BD3F1   221 0001:002BD3FF
+   222 0001:002BD443   223 0001:002BD453   225 0001:002BD463   228 0001:002BD4A0
+   229 0001:002BD4C1   231 0001:002BD4CD   232 0001:002BD4EE   233 0001:002BD50B
+   234 0001:002BD521   235 0001:002BD548   236 0001:002BD55E   237 0001:002BD574
+   240 0001:002BD59B   241 0001:002BD5D2   243 0001:002BD5ED   248 0001:002BD678
+   250 0001:002BD687   251 0001:002BD6A7   255 0001:002BD6C0   257 0001:002BD6E3
+   259 0001:002BD6EF   260 0001:002BD739   261 0001:002BD743   262 0001:002BD759
+   263 0001:002BD761   265 0001:002BD788   266 0001:002BD7B6   268 0001:002BD7D4
+   270 0001:002BD7F2   272 0001:002BD80B   273 0001:002BD823   274 0001:002BD83B
+   275 0001:002BD853   276 0001:002BD86B   277 0001:002BD883   278 0001:002BD89B
+   280 0001:002BD8B3   281 0001:002BD8BD   282 0001:002BD8C8   284 0001:002BD8E4
+   285 0001:002BD900   293 0001:002BD9C4   294 0001:002BD9EA   296 0001:002BDA46
+   297 0001:002BDA63   299 0001:002BDA69   301 0001:002BDA8A   302 0001:002BDA9B
+   303 0001:002BDAAF   305 0001:002BDABA   308 0001:002BDACE   313 0001:002BDB10
+   315 0001:002BDB32   317 0001:002BDB3E   318 0001:002BDB67   320 0001:002BDB7D
+   321 0001:002BDB8D   323 0001:002BDBB6   325 0001:002BDBC7   328 0001:002BDBF0
+   330 0001:002BDC0F   332 0001:002BDC1B   333 0001:002BDC44   334 0001:002BDC75
+   336 0001:002BDC86   341 0001:002BDCA8   343 0001:002BDCCC   344 0001:002BDCDC
+   345 0001:002BDCFE   346 0001:002BDD64   347 0001:002BDD80   348 0001:002BDDA2
+   349 0001:002BDE06   350 0001:002BDE76   351 0001:002BDE8D   352 0001:002BDF05
+   353 0001:002BDF47   354 0001:002BDFC9   355 0001:002BE033   356 0001:002BE071
+   357 0001:002BE099   359 0001:002BE1FA
+
+Line numbers for fODMisc(Orders\fODMisc.pas) segment .text
+
+    49 0001:002BE434    50 0001:002BE437    51 0001:002BE43E    52 0001:002BE44A
+    53 0001:002BE454    54 0001:002BE464    56 0001:002BE46E    57 0001:002BE478
+    58 0001:002BE47F    61 0001:002BE4F0    62 0001:002BE4F3    63 0001:002BE4FA
+    64 0001:002BE507    65 0001:002BE514    68 0001:002BE518    69 0001:002BE51E
+    70 0001:002BE527    72 0001:002BE53A    73 0001:002BE541    74 0001:002BE555
+    75 0001:002BE569    76 0001:002BE57D    77 0001:002BE591    78 0001:002BE598
+    79 0001:002BE5A1    81 0001:002BE5B1    88 0001:002BE5F8    89 0001:002BE5FF
+    90 0001:002BE630    91 0001:002BE643    93 0001:002BE654    94 0001:002BE677
+    95 0001:002BE69C    96 0001:002BE6AA    97 0001:002BE6C6    99 0001:002BE6CC
+   100 0001:002BE6D6   101 0001:002BE6F2   102 0001:002BE731   104 0001:002BE73D
+   108 0001:002BE818   110 0001:002BE821   111 0001:002BE83D   114 0001:002BE854
+   116 0001:002BE876   117 0001:002BE883   118 0001:002BE88E   119 0001:002BE8E5
+   120 0001:002BE93C   121 0001:002BE993   122 0001:002BE9EA   123 0001:002BEA06
+   125 0001:002BEACA
+
+Line numbers for fODDiet(Orders\fODDiet.pas) segment .text
+
+   318 0001:002BF778   319 0001:002BF79A   320 0001:002BF7A5   321 0001:002BF7B3
+   322 0001:002BF7BD   323 0001:002BF7CE   325 0001:002BF7DA   326 0001:002BF7EA
+   328 0001:002BF7FC   330 0001:002BF805   331 0001:002BF815   335 0001:002BF827
+   336 0001:002BF838   337 0001:002BF842   340 0001:002BF847   341 0001:002BF854
+   342 0001:002BF861   343 0001:002BF86D   344 0001:002BF889   345 0001:002BF896
+   346 0001:002BF8A8   348 0001:002BF8C9   349 0001:002BF8DC   353 0001:002BF8EB
+   354 0001:002BF8F8   355 0001:002BF90E   357 0001:002BF91A   358 0001:002BF936
+   359 0001:002BF952   360 0001:002BF96E   361 0001:002BF978   364 0001:002BF98E
+   366 0001:002BF99A   367 0001:002BF9B6   368 0001:002BF9D2   369 0001:002BF9EE
+   370 0001:002BF9F8   373 0001:002BFA0C   376 0001:002BFBA0   377 0001:002BFBAC
+   378 0001:002BFBB4   379 0001:002BFBBE   380 0001:002BFBC9   383 0001:002BFBD0
+   384 0001:002BFBDD   385 0001:002BFBE8   387 0001:002BFBF4   388 0001:002BFC21
+   389 0001:002BFC43   390 0001:002BFC65   391 0001:002BFCAD   392 0001:002BFCD0
+   393 0001:002BFD04   395 0001:002BFD47   398 0001:002BFD88   399 0001:002BFD8F
+   402 0001:002BFD97   403 0001:002BFDAE   406 0001:002BFDB4   407 0001:002BFDD7
+   408 0001:002BFDE7   409 0001:002BFDF5   410 0001:002BFE20   412 0001:002BFE80
+   414 0001:002BFE8C   415 0001:002BFE9D   416 0001:002BFEA5   418 0001:002BFEAA
+   419 0001:002BFEBA   420 0001:002BFECA   421 0001:002BFEE1   422 0001:002BFEEC
+   425 0001:002BFF03   427 0001:002BFF0F   428 0001:002BFF20   429 0001:002BFF28
+   431 0001:002BFF2D   432 0001:002BFF44   433 0001:002BFF4F   436 0001:002BFF66
+   438 0001:002BFF85   439 0001:002BFF8D   441 0001:002BFF92   442 0001:002BFFA9
+   443 0001:002BFFB4   446 0001:002BFFCB   448 0001:002BFFEA   449 0001:002BFFF2
+   451 0001:002BFFF7   452 0001:002C000E   453 0001:002C0019   456 0001:002C0030
+   457 0001:002C0047   458 0001:002C0052   461 0001:002C0069   463 0001:002C0088
+   464 0001:002C0090   466 0001:002C0095   467 0001:002C00AC   468 0001:002C00B7
+   471 0001:002C00CE   473 0001:002C00DA   474 0001:002C00EB   475 0001:002C00F3
+   477 0001:002C00F8   478 0001:002C0102   479 0001:002C0112   480 0001:002C0122
+   481 0001:002C0139   482 0001:002C0144   486 0001:002C015B   488 0001:002C0167
+   489 0001:002C0178   490 0001:002C0180   492 0001:002C0182   493 0001:002C0192
+   494 0001:002C01A2   495 0001:002C01B9   496 0001:002C01C4   497 0001:002C01D2
+   500 0001:002C01E3   501 0001:002C01FD   509 0001:002C02C0   510 0001:002C02C9
+   511 0001:002C0307   512 0001:002C031B   518 0001:002C032C   519 0001:002C034E
+   520 0001:002C0352   521 0001:002C0379   522 0001:002C0387   523 0001:002C039C
+   524 0001:002C03F2   525 0001:002C0413   526 0001:002C0434   527 0001:002C045A
+   534 0001:002C04B4   535 0001:002C04D0   536 0001:002C04D4   537 0001:002C04FB
+   538 0001:002C0509   539 0001:002C0518   540 0001:002C0538   541 0001:002C0559
+   542 0001:002C0583   543 0001:002C0595   545 0001:002C05D8   547 0001:002C05FC
+   549 0001:002C061A   550 0001:002C063C   551 0001:002C065A   553 0001:002C0666
+   554 0001:002C0671   555 0001:002C069A   556 0001:002C06EB   559 0001:002C06F7
+   561 0001:002C0715   562 0001:002C071A   563 0001:002C075B   564 0001:002C0773
+   565 0001:002C0778   567 0001:002C07B6   568 0001:002C0818   569 0001:002C0886
+   570 0001:002C08BB   571 0001:002C08FB   565 0001:002C08FE   572 0001:002C0907
+   573 0001:002C091C   574 0001:002C0928   576 0001:002C0946   578 0001:002C0964
+   579 0001:002C0982   580 0001:002C09A0   581 0001:002C09CC   582 0001:002C0A09
+   584 0001:002C0A19   585 0001:002C0A3C   586 0001:002C0A5A   587 0001:002C0A86
+   588 0001:002C0ABB   590 0001:002C0AF8   591 0001:002C0B2D   593 0001:002C0B44
+   595 0001:002C0B5E   597 0001:002C0B7F   599 0001:002C0B99   600 0001:002C0BC8
+   601 0001:002C0BD4   603 0001:002C0BF2   605 0001:002C0C10   606 0001:002C0C2E
+   607 0001:002C0C50   608 0001:002C0C67   610 0001:002C0C7C   611 0001:002C0C9A
+   613 0001:002C0CA6   614 0001:002C0CB1   615 0001:002C0CDA   616 0001:002C0D31
+   618 0001:002C0D3D   619 0001:002C0D6E   621 0001:002C0DAB   622 0001:002C0DDC
+   624 0001:002C0E19   625 0001:002C0E42   628 0001:002C0E4E   633 0001:002C1560
+   635 0001:002C158F   637 0001:002C15E9   638 0001:002C15EF   640 0001:002C15F4
+   641 0001:002C15FE   643 0001:002C1636   645 0001:002C1654   647 0001:002C1695
+   650 0001:002C16A0   651 0001:002C16B0   652 0001:002C16C4   657 0001:002C16D7
+   659 0001:002C170E   660 0001:002C1719   663 0001:002C1729   664 0001:002C1739
+   665 0001:002C174D   669 0001:002C175B   670 0001:002C1765   764 0001:002C1850
+   767 0001:002C1881   769 0001:002C188D   770 0001:002C1898   772 0001:002C189D
+   773 0001:002C18A7   774 0001:002C18BD   775 0001:002C18C7   777 0001:002C18E5
+   778 0001:002C18EF   779 0001:002C18F7   780 0001:002C191F   782 0001:002C1925
+   785 0001:002C1955   786 0001:002C195F   787 0001:002C196A   790 0001:002C196F
+   791 0001:002C197A   792 0001:002C198D   793 0001:002C19A1   794 0001:002C19BA
+   795 0001:002C19C8   796 0001:002C19D8   797 0001:002C19E8   798 0001:002C19F8
+   800 0001:002C1A00   802 0001:002C1A1E   804 0001:002C1A2A   806 0001:002C1A3D
+   807 0001:002C1A47   808 0001:002C1A5E   809 0001:002C1A6F   812 0001:002C1A74
+   814 0001:002C1A8D   815 0001:002C1AA8   816 0001:002C1AB8   817 0001:002C1AD3
+   818 0001:002C1ADD   819 0001:002C1B02   820 0001:002C1B1C   821 0001:002C1B26
+   822 0001:002C1B39   823 0001:002C1B4D   825 0001:002C1B6B   826 0001:002C1B7E
+   828 0001:002C1B90   829 0001:002C1BA3   831 0001:002C1BB6   833 0001:002C1BC4
+   834 0001:002C1BD4   836 0001:002C1BDC   838 0001:002C1BFA   840 0001:002C1C06
+   842 0001:002C1C19   843 0001:002C1C23   844 0001:002C1C3A   845 0001:002C1C4B
+   848 0001:002C1C50   850 0001:002C1C6B   852 0001:002C1C8B   853 0001:002C1C9E
+   854 0001:002C1CAA   855 0001:002C1CBC   856 0001:002C1CC6   858 0001:002C1CCB
+   859 0001:002C1CE6   860 0001:002C1D01   861 0001:002C1D19   862 0001:002C1D31
+   863 0001:002C1D49   864 0001:002C1D61   865 0001:002C1D79   866 0001:002C1D91
+   867 0001:002C1D9B   868 0001:002C1DA5   869 0001:002C1DB8   870 0001:002C1DCC
+   872 0001:002C1DD4   874 0001:002C1DF2   875 0001:002C1DFC   876 0001:002C1E06
+   877 0001:002C1E19   878 0001:002C1E2D   879 0001:002C1E57   880 0001:002C1E70
+   881 0001:002C1E88   883 0001:002C1E90   885 0001:002C1EAE   887 0001:002C1EBA
+   889 0001:002C1ECD   890 0001:002C1ED7   891 0001:002C1EEE   892 0001:002C1EFF
+   895 0001:002C1F04   897 0001:002C1F1D   898 0001:002C1F38   899 0001:002C1F48
+   900 0001:002C1F63   901 0001:002C1F6D   902 0001:002C1F77   903 0001:002C1F8A
+   904 0001:002C1F9E   906 0001:002C1FA6   908 0001:002C1FC4   909 0001:002C1FCC
+   910 0001:002C2002   912 0001:002C200F   913 0001:002C2019   914 0001:002C203B
+   915 0001:002C204A   916 0001:002C205E   917 0001:002C2072   919 0001:002C2087
+   920 0001:002C2091   921 0001:002C2099   923 0001:002C20B2   924 0001:002C20C2
+   925 0001:002C20D2   926 0001:002C20E5   927 0001:002C20F5   928 0001:002C2105
+   929 0001:002C2115   930 0001:002C2125   931 0001:002C213B   932 0001:002C2146
+   934 0001:002C2155   936 0001:002C216A   937 0001:002C2174   938 0001:002C217C
+   939 0001:002C2195   940 0001:002C21A3   941 0001:002C21BC   943 0001:002C21D2
+   944 0001:002C21E2   945 0001:002C21F2   946 0001:002C2205   947 0001:002C2214
+   948 0001:002C221F   951 0001:002C2229   952 0001:002C2233   953 0001:002C223A
+   955 0001:002C2246   956 0001:002C2250   958 0001:002C225F   963 0001:002C24F8
+   964 0001:002C2513   966 0001:002C254D   967 0001:002C255D   968 0001:002C256D
+   969 0001:002C257D   972 0001:002C258F   973 0001:002C259F   974 0001:002C25AF
+   976 0001:002C25BF   981 0001:002C25F4   982 0001:002C261A   984 0001:002C2626
+   987 0001:002C2697   988 0001:002C26A4   990 0001:002C26CA   991 0001:002C26DA
+   993 0001:002C26EC   996 0001:002C26FC   999 0001:002C2788  1000 0001:002C278F
+  1001 0001:002C27A0  1002 0001:002C27B3  1003 0001:002C27C3  1004 0001:002C27D3
+  1005 0001:002C27E3  1006 0001:002C27F3  1007 0001:002C2803  1008 0001:002C2813
+  1015 0001:002C2824  1016 0001:002C2846  1017 0001:002C2850  1018 0001:002C2858
+  1020 0001:002C2864  1021 0001:002C2876  1023 0001:002C2880  1024 0001:002C2893
+  1026 0001:002C289D  1027 0001:002C28B2  1029 0001:002C28D4  1030 0001:002C28F6
+  1031 0001:002C2907  1032 0001:002C2911  1034 0001:002C2916  1036 0001:002C292C
+  1021 0001:002C293F  1038 0001:002C2949  1039 0001:002C2961  1040 0001:002C2979
+  1041 0001:002C2991  1043 0001:002C29A9  1044 0001:002C29B1  1045 0001:002C29B9
+  1046 0001:002C29C3  1047 0001:002C29CE  1051 0001:002C2A7C  1053 0001:002C2A8B
+  1054 0001:002C2AA6  1063 0001:002C2AAC  1064 0001:002C2AB5  1065 0001:002C2ADB
+  1066 0001:002C2AE9  1068 0001:002C2AF0  1070 0001:002C2B15  1072 0001:002C2B42
+  1073 0001:002C2B76  1074 0001:002C2B7E  1075 0001:002C2B8F  1077 0001:002C2B94
+  1079 0001:002C2BC4  1080 0001:002C2BCC  1082 0001:002C2BE1  1083 0001:002C2C10
+  1084 0001:002C2C3B  1085 0001:002C2C6A  1087 0001:002C2C95  1088 0001:002C2CB3
+  1089 0001:002C2CB7  1090 0001:002C2D08  1091 0001:002C2D1A  1092 0001:002C2D30
+  1094 0001:002C2D52  1095 0001:002C2D74  1096 0001:002C2D85  1098 0001:002C2D8A
+  1099 0001:002C2DAB  1100 0001:002C2DF3  1098 0001:002C2E36  1101 0001:002C2E3F
+  1103 0001:002C2E6D  1104 0001:002C2E83  1105 0001:002C2E8B  1106 0001:002C2E93
+  1107 0001:002C2EC3  1110 0001:002C2ECE  1111 0001:002C2EDF  1114 0001:002C3064
+  1116 0001:002C3084  1117 0001:002C30CD  1118 0001:002C30D8  1121 0001:002C3104
+  1123 0001:002C3110  1124 0001:002C3144  1125 0001:002C314F  1127 0001:002C316C
+  1128 0001:002C317C  1129 0001:002C318C  1130 0001:002C319C  1132 0001:002C31AC
+  1137 0001:002C31B0  1139 0001:002C31D4  1140 0001:002C31E4  1141 0001:002C31FA
+  1142 0001:002C323C  1143 0001:002C327E  1144 0001:002C32A7  1143 0001:002C3315
+  1145 0001:002C331A  1146 0001:002C335C  1147 0001:002C33B2  1148 0001:002C33CD
+  1149 0001:002C33F1  1151 0001:002C3413  1153 0001:002C344E  1155 0001:002C348E
+  1156 0001:002C34A4  1157 0001:002C34C6  1162 0001:002C35EC  1163 0001:002C35F3
+  1164 0001:002C35FB  1165 0001:002C360E  1166 0001:002C361E  1167 0001:002C362E
+  1174 0001:002C3634  1175 0001:002C363D  1176 0001:002C3647  1177 0001:002C364F
+  1179 0001:002C365B  1180 0001:002C366D  1182 0001:002C3677  1183 0001:002C368A
+  1185 0001:002C3694  1186 0001:002C36A3  1187 0001:002C36B6  1188 0001:002C36C7
+  1190 0001:002C36D3  1191 0001:002C36FD  1192 0001:002C3715  1193 0001:002C3730
+  1194 0001:002C3743  1195 0001:002C3767  1196 0001:002C377A  1197 0001:002C379E
+  1200 0001:002C37B0  1180 0001:002C37C3  1202 0001:002C37CD  1203 0001:002C37E2
+  1204 0001:002C380C  1206 0001:002C3818  1207 0001:002C3830  1209 0001:002C3848
+  1211 0001:002C3860  1212 0001:002C386A  1213 0001:002C3875  1218 0001:002C38F4
+  1219 0001:002C38FD  1221 0001:002C3922  1222 0001:002C3934  1223 0001:002C3944
+  1219 0001:002C3947  1224 0001:002C394C  1225 0001:002C395F  1230 0001:002C3964
+  1233 0001:002C3989  1235 0001:002C39B6  1236 0001:002C39EA  1237 0001:002C39F2
+  1238 0001:002C3A03  1240 0001:002C3A08  1241 0001:002C3A2B  1242 0001:002C3A3A
+  1243 0001:002C3A4E  1244 0001:002C3A96  1245 0001:002C3AA7  1247 0001:002C3AB3
+  1248 0001:002C3ADD  1249 0001:002C3AF5  1250 0001:002C3B10  1251 0001:002C3B2C
+  1252 0001:002C3B3E  1254 0001:002C3B4B  1255 0001:002C3B64  1256 0001:002C3B6F
+  1259 0001:002C3BC8  1261 0001:002C3BE8  1262 0001:002C3C31  1263 0001:002C3C3C
+  1267 0001:002C3C68  1269 0001:002C3C97  1270 0001:002C3CA5  1271 0001:002C3CAB
+  1273 0001:002C3CBC  1274 0001:002C3CD3  1275 0001:002C3CE7  1277 0001:002C3D1B
+  1285 0001:002C3D44  1288 0001:002C3D4E  1289 0001:002C3D6F  1291 0001:002C3DB0
+  1292 0001:002C3DB8  1293 0001:002C3DC0  1295 0001:002C3DCB  1297 0001:002C3DD0
+  1299 0001:002C3DF6  1300 0001:002C3E06  1301 0001:002C3E13  1303 0001:002C3E19
+  1304 0001:002C3E5B  1305 0001:002C3E70  1307 0001:002C3E80  1309 0001:002C3E86
+  1310 0001:002C3EAF  1311 0001:002C3EC4  1313 0001:002C3ED4  1316 0001:002C3F00
+  1317 0001:002C3F0F  1318 0001:002C3F1B  1319 0001:002C3F27  1324 0001:002C3F2C
+  1325 0001:002C3F35  1326 0001:002C3F55  1328 0001:002C3F78  1329 0001:002C3F84
+  1330 0001:002C3F90  1331 0001:002C3FB5  1333 0001:002C3FDA  1339 0001:002C3FE0
+  1340 0001:002C400B  1342 0001:002C4017  1343 0001:002C4028  1344 0001:002C403D
+  1345 0001:002C4042  1346 0001:002C4064  1347 0001:002C408A  1349 0001:002C40A7
+  1350 0001:002C40D4  1352 0001:002C4110  1354 0001:002C4128  1357 0001:002C4164
+  1358 0001:002C4170  1359 0001:002C4175  1360 0001:002C418D  1361 0001:002C41A5
+  1362 0001:002C41BD  1363 0001:002C41D3  1366 0001:002C4210  1368 0001:002C421C
+  1369 0001:002C4238  1372 0001:002C423C  1374 0001:002C424B  1375 0001:002C4257
+  1376 0001:002C426B  1377 0001:002C4280  1379 0001:002C4296  1381 0001:002C42A8
+  1382 0001:002C42B0  1384 0001:002C42CA  1387 0001:002C42D0  1389 0001:002C42EF
+  1391 0001:002C42FB  1392 0001:002C4304  1394 0001:002C434A  1395 0001:002C4355
+  1398 0001:002C4378  1400 0001:002C4397  1402 0001:002C43A3  1403 0001:002C43E9
+  1404 0001:002C4407  1405 0001:002C4411  1407 0001:002C4419  1408 0001:002C4424
+  1409 0001:002C442C  1412 0001:002C4450  1414 0001:002C445C  1415 0001:002C446A
+  1418 0001:002C4470  1420 0001:002C4496  1421 0001:002C44AE  1422 0001:002C44E7
+  1423 0001:002C4510  1424 0001:002C4541  1425 0001:002C4582  1426 0001:002C45EC
+  1427 0001:002C464F  1428 0001:002C4682  1429 0001:002C4697  1431 0001:002C46B2
+  1433 0001:002C46BE  1434 0001:002C46C6  1436 0001:002C46E0  1439 0001:002C470C
+  1441 0001:002C472B  1443 0001:002C4737  1444 0001:002C4740  1446 0001:002C4786
+  1447 0001:002C4791  1450 0001:002C47B4  1452 0001:002C47D3  1454 0001:002C47DF
+  1455 0001:002C4825  1456 0001:002C4843  1457 0001:002C484D  1459 0001:002C4855
+  1460 0001:002C4860  1461 0001:002C4868  1466 0001:002C488C  1468 0001:002C4898
+  1470 0001:002C48A4  1471 0001:002C48B4  1472 0001:002C48E3  1473 0001:002C4924
+  1474 0001:002C493B  1476 0001:002C494D  1477 0001:002C4958  1484 0001:002C495C
+  1486 0001:002C4980  1487 0001:002C4990  1488 0001:002C49A6  1490 0001:002C49CF
+  1491 0001:002C49DF  1492 0001:002C49E9  1493 0001:002C49F2  1494 0001:002C4A22
+  1495 0001:002C4A45  1496 0001:002C4A9F  1497 0001:002C4AD6  1498 0001:002C4B1D
+  1488 0001:002C4B20  1499 0001:002C4B29  1500 0001:002C4B46  1501 0001:002C4B7C
+  1502 0001:002C4B97  1503 0001:002C4BBB  1504 0001:002C4BDD  1506 0001:002C4BED
+  1507 0001:002C4C2C  1509 0001:002C4C7A  1510 0001:002C4C9C  1515 0001:002C4D94
+  1516 0001:002C4D9B  1517 0001:002C4DAE  1518 0001:002C4DBE  1519 0001:002C4DCE
+  1520 0001:002C4DDE  1521 0001:002C4DEE  1522 0001:002C4DFE  1523 0001:002C4E0E
+  1524 0001:002C4E1E  1525 0001:002C4E2E  1526 0001:002C4E3E  1527 0001:002C4E4E
+  1528 0001:002C4E5E  1529 0001:002C4E71  1530 0001:002C4E84  1531 0001:002C4E97
+  1532 0001:002C4EAA  1533 0001:002C4EBD  1534 0001:002C4ED0  1535 0001:002C4EE3
+  1536 0001:002C4EF6  1541 0001:002C4EFC  1542 0001:002C4F1D  1543 0001:002C4F27
+  1544 0001:002C4F2F  1546 0001:002C4F3B  1547 0001:002C4F50  1549 0001:002C4F56
+  1550 0001:002C4F78  1551 0001:002C4F9D  1553 0001:002C4FC2  1554 0001:002C4FDF
+  1555 0001:002C4FF4  1557 0001:002C4FFE  1558 0001:002C5032  1559 0001:002C5066
+  1560 0001:002C509A  1561 0001:002C50CE  1562 0001:002C5102  1564 0001:002C5136
+  1565 0001:002C5142  1568 0001:002C515C  1569 0001:002C5174  1571 0001:002C518C
+  1572 0001:002C5197  1573 0001:002C51AC  1575 0001:002C51B6  1576 0001:002C51DC
+  1577 0001:002C5202  1578 0001:002C5228  1579 0001:002C524E  1580 0001:002C5274
+  1581 0001:002C529A  1583 0001:002C52C0  1584 0001:002C52D5  1586 0001:002C52FF
+  1587 0001:002C5309  1588 0001:002C5314  1591 0001:002C5420  1592 0001:002C542C
+  1593 0001:002C5434  1594 0001:002C545A  1595 0001:002C5480  1596 0001:002C54A6
+  1597 0001:002C54CC  1598 0001:002C54F2  1599 0001:002C5518  1602 0001:002C551C
+  1603 0001:002C5528  1604 0001:002C5530  1605 0001:002C5555  1606 0001:002C557A
+  1607 0001:002C559F  1608 0001:002C55C4  1609 0001:002C55E9  1610 0001:002C560E
+  1611 0001:002C5633  1614 0001:002C568C  1615 0001:002C5695  1616 0001:002C5699
+  1617 0001:002C56B2  1618 0001:002C56CB  1619 0001:002C56E4  1629 0001:002C56EC
+  1630 0001:002C56FB  1631 0001:002C5706  1632 0001:002C5725  1633 0001:002C5730
+  1634 0001:002C574F  1635 0001:002C575C  1639 0001:002C5760  1640 0001:002C577E
+  1641 0001:002C5782  1642 0001:002C57AE  1643 0001:002C57DA  1644 0001:002C5806
+  1645 0001:002C5832  1646 0001:002C585E  1647 0001:002C588A  1648 0001:002C58A1
+  1651 0001:002C58C8  1653 0001:002C58E7  1654 0001:002C58F1  1656 0001:002C590C
+  1657 0001:002C5918  1660 0001:002C5927  1661 0001:002C5933  1664 0001:002C5942
+  1665 0001:002C594E  1669 0001:002C595D  1670 0001:002C5966  1673 0001:002C596E
+  1675 0001:002C597A  1677 0001:002C5980  1678 0001:002C598A  1680 0001:002C599A
+  1682 0001:002C59AE  1683 0001:002C59B8  1684 0001:002C59C6  1687 0001:002C59DB
+  1689 0001:002C59F4  1690 0001:002C59FE  1691 0001:002C5A0F  1695 0001:002C5A54
+  1696 0001:002C5A60  1697 0001:002C5A71  1698 0001:002C5A82  1699 0001:002C5A93
+  1700 0001:002C5AA4  1701 0001:002C5AB5  1702 0001:002C5AC6  1703 0001:002C5AD7
+  1704 0001:002C5AE8  1707 0001:002C5AEC  1709 0001:002C5B0B  1710 0001:002C5B49
+  1713 0001:002C5B6C  1715 0001:002C5B8B  1716 0001:002C5B97  1718 0001:002C5BBB
+  1719 0001:002C5BC6  1722 0001:002C5BE8  1724 0001:002C5C0D  1725 0001:002C5C28
+  1726 0001:002C5C9B  1727 0001:002C5CA7  1728 0001:002C5CB1  1731 0001:002C5CD8
+  1733 0001:002C5CF7  1734 0001:002C5D62  1735 0001:002C5D6E  1736 0001:002C5D78
+  1737 0001:002C5D83  1742 0001:002C5DA4  1744 0001:002C5DC8  1745 0001:002C5DD8
+  1746 0001:002C5DEE  1747 0001:002C5E09  1748 0001:002C5E2D  1749 0001:002C5E51
+  1751 0001:002C5E73  1752 0001:002C5E7E  1754 0001:002C5E9B  1755 0001:002C5EBB
+  1756 0001:002C5EC7  1757 0001:002C5EEC  1759 0001:002C5F0F  1761 0001:002C5F1B
+  1762 0001:002C5F5A  1764 0001:002C5F7D  1765 0001:002C5FED  1766 0001:002C605D
+  1767 0001:002C6068  1768 0001:002C60A5  1769 0001:002C60BA  1770 0001:002C60DE
+  1771 0001:002C6100  1772 0001:002C6122  1777 0001:002C628C  1778 0001:002C6293
+  1779 0001:002C62A7  1780 0001:002C62B7  1783 0001:002C62BC  1784 0001:002C62C3
+  1785 0001:002C62CD  1786 0001:002C62D5  1787 0001:002C62F3  1788 0001:002C6311
+  1789 0001:002C631B  1790 0001:002C6326  1793 0001:002C6350  1795 0001:002C6373
+  1796 0001:002C6383  1797 0001:002C6399  1798 0001:002C63C0  1799 0001:002C63E2
+  1800 0001:002C6430  1801 0001:002C644D  1802 0001:002C6483  1803 0001:002C64A5
+  1808 0001:002C6544  1809 0001:002C654B  1810 0001:002C655B  1811 0001:002C656B
+  1814 0001:002C6570  1815 0001:002C6577  1816 0001:002C6581  1817 0001:002C6589
+  1819 0001:002C65A7  1820 0001:002C65C5  1821 0001:002C65CF  1822 0001:002C65DA
+  1825 0001:002C6604  1827 0001:002C6627  1828 0001:002C6637  1829 0001:002C6654
+  1830 0001:002C668A  1832 0001:002C669A  1833 0001:002C66D9  1835 0001:002C6727
+  1836 0001:002C6749  1851 0001:002C67BC  1853 0001:002C67E0  1855 0001:002C67F8
+  1856 0001:002C680B  1857 0001:002C6815  1859 0001:002C681A  1861 0001:002C6847
+  1862 0001:002C687B  1863 0001:002C6883  1864 0001:002C6894  1866 0001:002C6899
+  1868 0001:002C68C9  1869 0001:002C68D1  1870 0001:002C68E7  1872 0001:002C6909
+  1873 0001:002C692B  1874 0001:002C693C  1876 0001:002C6941  1877 0001:002C6954
+  1879 0001:002C696A  1881 0001:002C6972  1882 0001:002C697A  1883 0001:002C69AA
+  1885 0001:002C69B5  1886 0001:002C69C0  1887 0001:002C69D1  1890 0001:002C6AFC
+  1892 0001:002C6B1C  1893 0001:002C6B65  1894 0001:002C6B70  1897 0001:002C6B9C
+  1898 0001:002C6BA3  1899 0001:002C6BB4  1900 0001:002C6BC5  1901 0001:002C6BD8
+  1902 0001:002C6BE8  1903 0001:002C6BFB  1904 0001:002C6C0E  1905 0001:002C6C21
+  1906 0001:002C6C34  1907 0001:002C6C47  1908 0001:002C6C5A  1909 0001:002C6C6D
+  1910 0001:002C6C7D  1911 0001:002C6C8D  1912 0001:002C6C9D  1914 0001:002C6CAE
+  1915 0001:002C6CBE  1916 0001:002C6CCE  1917 0001:002C6CDE  1918 0001:002C6CEE
+  1919 0001:002C6CFE  1920 0001:002C6D0E  1922 0001:002C6D21  1924 0001:002C6D32
+  1925 0001:002C6D45  1926 0001:002C6D58  1927 0001:002C6D68  1928 0001:002C6D78
+  1929 0001:002C6D88  1930 0001:002C6D98  1932 0001:002C6DA8  1938 0001:002C6DEC
+  1939 0001:002C6E0E  1940 0001:002C6E18  1941 0001:002C6E20  1943 0001:002C6E2C
+  1944 0001:002C6E41  1946 0001:002C6E4B  1947 0001:002C6E60  1949 0001:002C6E82
+  1950 0001:002C6EA4  1951 0001:002C6EB5  1952 0001:002C6EBF  1954 0001:002C6EC4
+  1955 0001:002C6EDC  1957 0001:002C6EF2  1958 0001:002C6F0A  1959 0001:002C6F1F
+  1961 0001:002C6F25  1962 0001:002C6F47  1963 0001:002C6F6C  1965 0001:002C6F91
+  1966 0001:002C6FA9  1967 0001:002C6FC1  1968 0001:002C6FCC  1969 0001:002C6FE1
+  1971 0001:002C6FEB  1972 0001:002C7011  1973 0001:002C7037  1974 0001:002C705D
+  1975 0001:002C7083  1976 0001:002C70A9  1977 0001:002C70CF  1979 0001:002C70F5
+  1981 0001:002C710D  1982 0001:002C7115  1983 0001:002C711D  1984 0001:002C7127
+  1985 0001:002C7132  1988 0001:002C727C  1990 0001:002C729B  1991 0001:002C72D9
+  1994 0001:002C72FC  1996 0001:002C731B  1997 0001:002C7327  1998 0001:002C7333
+  2000 0001:002C7357  2001 0001:002C7362  2007 0001:002C7384  2008 0001:002C738D
+  2009 0001:002C739C  2010 0001:002C73AD  2011 0001:002C73B3  2018 0001:002C73BC
+  2019 0001:002C73DE  2020 0001:002C73ED  2021 0001:002C73FC  2023 0001:002C7408
+  2024 0001:002C7430  2025 0001:002C743D  2026 0001:002C7449  2027 0001:002C7454
+  2032 0001:002C7480  2034 0001:002C74A8  2036 0001:002C74C2  2037 0001:002C74D1
+  2039 0001:002C74D6  2040 0001:002C7549  2043 0001:002C7576  2044 0001:002C75AB
+  2046 0001:002C75BC  2051 0001:002C75F0  2053 0001:002C7612  2054 0001:002C7622
+  2056 0001:002C763C  2057 0001:002C764B  2059 0001:002C7650  2060 0001:002C76BB
+  2063 0001:002C76E8  2064 0001:002C771D  2066 0001:002C772E  2067 0001:002C7739
+  2073 0001:002C7768  2075 0001:002C778C  2076 0001:002C779C  2078 0001:002C77B2
+  2079 0001:002C77CF  2080 0001:002C7839  2081 0001:002C7854  2082 0001:002C7878
+  2083 0001:002C789C  2085 0001:002C78BE  2086 0001:002C7900  2087 0001:002C7942
+  2089 0001:002C7953  2090 0001:002C795E  2091 0001:002C7988  2093 0001:002C79A8
+  2094 0001:002C79EA  2100 0001:002C7A40  2101 0001:002C7A56  2102 0001:002C7A78
+  2105 0001:002C7BDC  2107 0001:002C7BE8  2108 0001:002C7BF3  2113 0001:002C7BF8
+  2114 0001:002C7C1D  2116 0001:002C7C29  2118 0001:002C7C47  2119 0001:002C7C67
+  2120 0001:002C7C82  2116 0001:002C7C85  2123 0001:002C7C8A  2124 0001:002C7C9B
+  2125 0001:002C7CC6  2126 0001:002C7CF1  2127 0001:002C7D1C  2128 0001:002C7D47
+  2129 0001:002C7D72  2130 0001:002C7D9D  2131 0001:002C7DC8  2134 0001:002C7E40
+  2135 0001:002C7E4C  2136 0001:002C7E54  2137 0001:002C7E79  2138 0001:002C7E9E
+  2139 0001:002C7EC3  2140 0001:002C7EE8  2141 0001:002C7F0D  2142 0001:002C7F32
+  2143 0001:002C7F57  2146 0001:002C7FB0  2148 0001:002C7FBC  2149 0001:002C7FF0
+  2150 0001:002C7FFB  2152 0001:002C8018  2153 0001:002C8028  2155 0001:002C8038
+  2156 0001:002C8048  2158 0001:002C8058  2161 0001:002C805C  2162 0001:002C8068
+  2163 0001:002C8083  2164 0001:002C809C  2165 0001:002C80B5  2167 0001:002C80CE
+  2169 0001:002C80DB  2172 0001:002C80EC  2174 0001:002C8107  2176 0001:002C8141
+  2177 0001:002C8151  2178 0001:002C8161  2179 0001:002C8171  2182 0001:002C8183
+  2183 0001:002C8193  2184 0001:002C81A3  2186 0001:002C81B3  2192 0001:002C81E8
+  2193 0001:002C820E  2195 0001:002C821A  2198 0001:002C828B  2199 0001:002C8298
+  2201 0001:002C82BE  2202 0001:002C82CE  2204 0001:002C82E0  2207 0001:002C82F0
+  2216 0001:002C837C  2218 0001:002C83A4  2219 0001:002C83A8  2233 0001:002C83C2
+  2235 0001:002C83D4  2236 0001:002C83E3  2237 0001:002C83F4  2238 0001:002C8414
+  2241 0001:002C841C  2244 0001:002C8439  2247 0001:002C8453  2249 0001:002C8465
+  2250 0001:002C8474  2251 0001:002C8485  2252 0001:002C84A5  2255 0001:002C84AD
+  2257 0001:002C84CA  2258 0001:002C84D5  2259 0001:002C84ED  2263 0001:002C8514
+  2264 0001:002C8523  2265 0001:002C8535  2266 0001:002C853E  2267 0001:002C8544
+  2268 0001:002C856E  2269 0001:002C8588  2273 0001:002C8590  2277 0001:002C8598
+  2279 0001:002C85A7  2280 0001:002C85BB  2288 0001:002C85C4  2289 0001:002C85F2
+  2290 0001:002C85FC  2291 0001:002C8609  2293 0001:002C8617  2294 0001:002C864D
+  2297 0001:002C8653  2298 0001:002C8657
+
+Line numbers for fODDiet(Orders\fODDiet.pas) segment .itext
+
+  2300 0002:00001710
+
+Line numbers for CPRSChart_TLB(CPRSChart_TLB.pas) segment .text
+
+   201 0001:00000000
+
+Line numbers for uEventHooks(uEventHooks.pas) segment .text
+
+   114 0001:002C8CCC   115 0001:002C8CD5   116 0001:002C8CE6   124 0001:002C8CE8
+   125 0001:002C8D0D   126 0001:002C8D1E   127 0001:002C8D2F   128 0001:002C8D4E
+   129 0001:002C8D5F   130 0001:002C8D64   141 0001:002C8DB0   142 0001:002C8DDF
+   143 0001:002C8DE4   144 0001:002C8DEE   145 0001:002C8DFC   146 0001:002C8E03
+   147 0001:002C8E07   148 0001:002C8E11   149 0001:002C8E15   150 0001:002C8E1A
+   151 0001:002C8E1E   154 0001:002C8E55   156 0001:002C8E65   157 0001:002C8E7B
+   158 0001:002C8E8C   159 0001:002C8E9D   160 0001:002C8EB2   161 0001:002C8EC3
+   162 0001:002C8ED1   163 0001:002C8EFD   164 0001:002C8F16   165 0001:002C8F26
+   166 0001:002C8F36   167 0001:002C8F4B   168 0001:002C8F50   169 0001:002C8F65
+   171 0001:002C8F98   172 0001:002C8FB1   173 0001:002C8FC1   174 0001:002C8FD1
+   175 0001:002C8FE6   176 0001:002C8FFB   181 0001:002C900B   182 0001:002C901D
+   186 0001:002C9032   188 0001:002C9044   191 0001:002C90A4   192 0001:002C90BB
+   193 0001:002C90D2   196 0001:002C90F0   197 0001:002C9108   198 0001:002C9115
+   201 0001:002C9130   202 0001:002C9148   203 0001:002C9155   206 0001:002C9170
+   207 0001:002C9193   208 0001:002C91A9   212 0001:002C91C4   213 0001:002C91EB
+   214 0001:002C921C   217 0001:002C9248   218 0001:002C9263   219 0001:002C927E
+   220 0001:002C9284   221 0001:002C928C   222 0001:002C9294   224 0001:002C929A
+   227 0001:002C92B8   228 0001:002C92DB   229 0001:002C92E6   232 0001:002C9304
+   233 0001:002C9327   234 0001:002C9332   237 0001:002C9350   238 0001:002C9368
+   239 0001:002C9378   242 0001:002C9394   243 0001:002C93AC   244 0001:002C93C7
+   247 0001:002C93E4   248 0001:002C93FB   249 0001:002C940D   252 0001:002C9428
+   253 0001:002C944A   254 0001:002C9460   257 0001:002C947C   258 0001:002C9494
+   259 0001:002C949F   262 0001:002C94BC   263 0001:002C94D4   264 0001:002C94DF
+   267 0001:002C94FC   268 0001:002C9514   269 0001:002C952A   273 0001:002C9548
+   274 0001:002C9564   275 0001:002C9597   279 0001:002C95C4   280 0001:002C95DF
+   281 0001:002C95EE   282 0001:002C95FE   283 0001:002C960E   284 0001:002C961E
+   286 0001:002C962C   289 0001:002C9648   290 0001:002C9660   291 0001:002C966B
+   294 0001:002C9688   295 0001:002C96A0   296 0001:002C96AB   299 0001:002C96C8
+   300 0001:002C96E0   301 0001:002C96EB   302 0001:002C96FD   305 0001:002C9718
+   306 0001:002C971B   307 0001:002C9723   308 0001:002C9739   309 0001:002C974A
+   310 0001:002C975B   311 0001:002C9763   312 0001:002C976E   315 0001:002C9770
+   316 0001:002C977B   317 0001:002C9783   318 0001:002C978B   319 0001:002C9797
+   327 0001:002C97A8   328 0001:002C97D1   329 0001:002C97F0   330 0001:002C9801
+   331 0001:002C983C   334 0001:002C98A0   335 0001:002C98C3   336 0001:002C98CE
+   339 0001:002C98EC   340 0001:002C9903   341 0001:002C9912   344 0001:002C9930
+   345 0001:002C9954   346 0001:002C996E   349 0001:002C9994   350 0001:002C99B6
+   351 0001:002C99C9   354 0001:002C99E4   355 0001:002C9A08   356 0001:002C9A2D
+   359 0001:002C9A68   360 0001:002C9A8A   361 0001:002C9A9D   364 0001:002C9AB8
+   365 0001:002C9ADA   366 0001:002C9AED   369 0001:002C9B08   370 0001:002C9B2C
+   371 0001:002C9B4C   374 0001:002C9B70   375 0001:002C9B92   376 0001:002C9BA5
+   381 0001:002C9BC0   382 0001:002C9BD2   383 0001:002C9BDB   384 0001:002C9BF8
+   385 0001:002C9C15   388 0001:002C9C30   389 0001:002C9C3B   390 0001:002C9C43
+   391 0001:002C9C4B   392 0001:002C9C52   393 0001:002C9C57   394 0001:002C9C63
+   398 0001:002C9C74   399 0001:002C9C7D   403 0001:002C9C80   404 0001:002C9C89
+   415 0001:002C9C8C   416 0001:002C9CB7   417 0001:002C9CBB   418 0001:002C9CCD
+   419 0001:002C9CE9   420 0001:002C9CFB   421 0001:002C9D0D   423 0001:002C9D17
+   424 0001:002C9D25   425 0001:002C9D30   426 0001:002C9D3E   427 0001:002C9D49
+   429 0001:002C9D53   430 0001:002C9D61   431 0001:002C9D78   433 0001:002C9D82
+   434 0001:002C9D94   435 0001:002C9DA0   436 0001:002C9DAE   437 0001:002C9DB9
+   438 0001:002C9DC0   441 0001:002C9E2C   442 0001:002C9E38   446 0001:002C9E47
+   448 0001:002C9E70   452 0001:002C9E94   455 0001:002C9EC2   457 0001:002C9EE9
+   459 0001:002C9EEF   460 0001:002C9EF8   461 0001:002C9F0A   462 0001:002C9F1C
+   463 0001:002C9F2A   466 0001:002C9F36   470 0001:002CA034   471 0001:002CA03E
+   491 0001:002CA040   492 0001:002CA077   493 0001:002CA07B   494 0001:002CA090
+   497 0001:002CA094   498 0001:002CA096   499 0001:002CA0AB   502 0001:002CA0AF
+   503 0001:002CA0BD   504 0001:002CA0E4   506 0001:002CA0EE   507 0001:002CA11B
+   509 0001:002CA125   511 0001:002CA12D   512 0001:002CA139   514 0001:002CA141
+   515 0001:002CA150   517 0001:002CA158   518 0001:002CA16A   519 0001:002CA178
+   520 0001:002CA17B   522 0001:002CA19D   529 0001:002CA1B2   530 0001:002CA1CE
+   536 0001:002CA20E   537 0001:002CA213   538 0001:002CA21E   545 0001:002CA2E0
+   546 0001:002CA2F7   547 0001:002CA2FF   549 0001:002CA314   550 0001:002CA319
+   551 0001:002CA321   552 0001:002CA329   554 0001:002CA35A   561 0001:002CA3A8
+   562 0001:002CA3CF   563 0001:002CA3D1   564 0001:002CA3DB   566 0001:002CA3F0
+   567 0001:002CA3F5   568 0001:002CA3FD   570 0001:002CA405   572 0001:002CA431
+   580 0001:002CA488   581 0001:002CA4A8   583 0001:002CA4AC   584 0001:002CA4B6
+   586 0001:002CA4CB   587 0001:002CA4D0   588 0001:002CA4DD   589 0001:002CA4EA
+   591 0001:002CA506   592 0001:002CA511   596 0001:002CA51C   599 0001:002CA55C
+   600 0001:002CA572   601 0001:002CA586   603 0001:002CA5A9   604 0001:002CA5AB
+   608 0001:002CA5D0   609 0001:002CA5D7   614 0001:002CA5D8   616 0001:002CA5F6
+
+Line numbers for uEventHooks(uEventHooks.pas) segment .itext
+
+   611 0002:00001718   613 0002:0000171F
+
+Line numbers for fODMessage(Orders\fODMessage.pas) segment .text
+
+    61 0001:00000000
+
+Line numbers for fODBase(Orders\fODBase.pas) segment .text
+
+   260 0001:002CAAAC   261 0001:002CAAB3   262 0001:002CAAD2   263 0001:002CAAF3
+   264 0001:002CAB14   265 0001:002CAB35   266 0001:002CAB57   267 0001:002CAB79
+   268 0001:002CAB98   269 0001:002CABB7   271 0001:002CABC9   272 0001:002CABD7
+   274 0001:002CABE3   276 0001:002CABF5   277 0001:002CAC00   279 0001:002CAC0A
+   283 0001:002CAC10   284 0001:002CAC17   285 0001:002CAC36   286 0001:002CAC57
+   287 0001:002CAC78   288 0001:002CAC99   289 0001:002CACBB   290 0001:002CACDA
+   291 0001:002CACFC   293 0001:002CAD0E   294 0001:002CAD18   296 0001:002CAD25
+   298 0001:002CAD37   299 0001:002CAD41   301 0001:002CAD4F   306 0001:002CAD54
+   307 0001:002CAD6C   308 0001:002CAD7E   311 0001:002CADA0   312 0001:002CADB1
+   313 0001:002CADBC   314 0001:002CADCA   320 0001:002CADDC   321 0001:002CADF4
+   322 0001:002CAE06   323 0001:002CAE18   329 0001:002CAE38   331 0001:002CAE49
+   332 0001:002CAE80   333 0001:002CAE8B   334 0001:002CAE93   335 0001:002CAE9E
+   336 0001:002CAEAC   342 0001:002CAEC0   343 0001:002CAEC9   344 0001:002CAF00
+   345 0001:002CAF0B   352 0001:002CAF10   353 0001:002CAF3C   356 0001:002CAF46
+   358 0001:002CAF69   361 0001:002CAF78   362 0001:002CAFC8   363 0001:002CAFDA
+   366 0001:002CAFE2   367 0001:002CB033   368 0001:002CB084   370 0001:002CB0A3
+   371 0001:002CB0D2   373 0001:002CB10C   364 0001:002CB10F   375 0001:002CB13F
+   354 0001:002CB14A   379 0001:002CB15B   384 0001:002CB184   385 0001:002CB190
+   386 0001:002CB19B   387 0001:002CB1AC   391 0001:002CB1B0   392 0001:002CB1BC
+   393 0001:002CB1C4   394 0001:002CB1D5   400 0001:002CB1DC   401 0001:002CB1E8
+   402 0001:002CB1ED   403 0001:002CB1F6   405 0001:002CB224   406 0001:002CB232
+   407 0001:002CB234   403 0001:002CB237   408 0001:002CB23C   409 0001:002CB24B
+   411 0001:002CB279   412 0001:002CB287   413 0001:002CB289   409 0001:002CB28C
+   414 0001:002CB291   420 0001:002CB298   421 0001:002CB2BB   422 0001:002CB2C3
+   423 0001:002CB2D1   424 0001:002CB2DB   425 0001:002CB300   426 0001:002CB325
+   427 0001:002CB34A   428 0001:002CB36F   429 0001:002CB39A   430 0001:002CB3BF
+   431 0001:002CB3EB   432 0001:002CB416   434 0001:002CB428   435 0001:002CB43C
+   437 0001:002CB44C   439 0001:002CB45E   440 0001:002CB472   441 0001:002CB4A4
+   444 0001:002CB4B2   450 0001:002CB4D4   451 0001:002CB4E3   452 0001:002CB4F1
+   453 0001:002CB4FB   454 0001:002CB526   455 0001:002CB54F   456 0001:002CB577
+   457 0001:002CB59F   458 0001:002CB5C5   466 0001:002CB5CC   467 0001:002CB5F2
+   469 0001:002CB600   471 0001:002CB614   472 0001:002CB625   474 0001:002CB62B
+   475 0001:002CB639   477 0001:002CB641   469 0001:002CB644   478 0001:002CB64A
+   479 0001:002CB64F   481 0001:002CB66E   482 0001:002CB685   483 0001:002CB6A1
+   484 0001:002CB6B6   485 0001:002CB6C4   486 0001:002CB6FB   479 0001:002CB6FE
+   487 0001:002CB707   488 0001:002CB710   493 0001:002CB73C   494 0001:002CB74B
+   495 0001:002CB753   496 0001:002CB761   497 0001:002CB775   502 0001:002CB77C
+   503 0001:002CB78B   504 0001:002CB793   505 0001:002CB7A1   506 0001:002CB7B5
+   514 0001:002CB7BC   515 0001:002CB7C8   516 0001:002CB7CE   517 0001:002CB7D4
+   518 0001:002CB7EF   519 0001:002CB80A   520 0001:002CB80F   523 0001:002CB818
+   524 0001:002CB830   525 0001:002CB842   526 0001:002CB854   527 0001:002CB866
+   528 0001:002CB86D   529 0001:002CB87F   530 0001:002CB88A   536 0001:002CB8AC
+   537 0001:002CB8BD   538 0001:002CB8C5   539 0001:002CB8D0   540 0001:002CB8DB
+   541 0001:002CB912   542 0001:002CB91D   543 0001:002CB92B   549 0001:002CB940
+   550 0001:002CB949   551 0001:002CB954   552 0001:002CB95F   555 0001:002CB967
+   556 0001:002CB99E   557 0001:002CB9A9   558 0001:002CB9B4   564 0001:002CB9B8
+   565 0001:002CB9C7   566 0001:002CB9D0   568 0001:002CB9E5   569 0001:002CB9F3
+   571 0001:002CBA03   572 0001:002CBA0B   574 0001:002CBA19   566 0001:002CBA1C
+   575 0001:002CBA21   581 0001:002CBA28   582 0001:002CBA4A   583 0001:002CBA81
+   584 0001:002CBA8C   585 0001:002CBA9A   586 0001:002CBAAB   587 0001:002CBABB
+   593 0001:002CBADC   594 0001:002CBAFB   596 0001:002CBB01   597 0001:002CBB0F
+   599 0001:002CBB11   600 0001:002CBB19   601 0001:002CBB2A   602 0001:002CBB6B
+   603 0001:002CBB74   609 0001:002CBB98   610 0001:002CBBB7   611 0001:002CBBBF
+   612 0001:002CBBD0   613 0001:002CBC11   614 0001:002CBC1A   620 0001:002CBC3C
+   621 0001:002CBC5B   622 0001:002CBC63   623 0001:002CBC7F   624 0001:002CBC88
+   625 0001:002CBC91   631 0001:002CBCB4   632 0001:002CBCD3   633 0001:002CBCDB
+   634 0001:002CBCEC   635 0001:002CBD0F   636 0001:002CBD18   643 0001:002CBD3C
+   644 0001:002CBD71   645 0001:002CBD8A   647 0001:002CBDA3   648 0001:002CBDD4
+   650 0001:002CBDFC   651 0001:002CBE0A   652 0001:002CBE13   653 0001:002CBE1B
+   654 0001:002CBE4E   655 0001:002CBE7B   657 0001:002CBEAC   659 0001:002CBEBB
+   660 0001:002CBEF1   662 0001:002CBF10   663 0001:002CBF29   647 0001:002CBF2C
+   664 0001:002CBF35   665 0001:002CBF56   670 0001:002CC078   671 0001:002CC087
+   672 0001:002CC08F   673 0001:002CC0BC   675 0001:002CC0D7   676 0001:002CC0E5
+   677 0001:002CC0E7   672 0001:002CC0EA   678 0001:002CC0EF   683 0001:002CC0F8
+   684 0001:002CC107   685 0001:002CC10F   686 0001:002CC13C   688 0001:002CC157
+   689 0001:002CC165   690 0001:002CC167   685 0001:002CC16A   691 0001:002CC16F
+   696 0001:002CC178   697 0001:002CC184   698 0001:002CC188   699 0001:002CC1B5
+   698 0001:002CC1CC   700 0001:002CC1D1   705 0001:002CC1D8   706 0001:002CC1E7
+   707 0001:002CC1EC   708 0001:002CC219   710 0001:002CC234   711 0001:002CC242
+   712 0001:002CC244   707 0001:002CC247   713 0001:002CC24C   718 0001:002CC254
+   719 0001:002CC260   720 0001:002CC265   721 0001:002CC292   723 0001:002CC2A2
+   724 0001:002CC2AB   725 0001:002CC2AD   720 0001:002CC2B0   726 0001:002CC2B5
+   731 0001:002CC2BC   732 0001:002CC2C8   733 0001:002CC2CD   734 0001:002CC2FA
+   733 0001:002CC310   735 0001:002CC315   740 0001:002CC31C   741 0001:002CC32B
+   742 0001:002CC330   743 0001:002CC35D   744 0001:002CC38F   742 0001:002CC39B
+   745 0001:002CC3A0   750 0001:002CC3A8   751 0001:002CC3B7   752 0001:002CC3BC
+   753 0001:002CC3E9   755 0001:002CC3FF   756 0001:002CC40D   757 0001:002CC40F
+   752 0001:002CC412   758 0001:002CC417   766 0001:002CC420   767 0001:002CC452
+   768 0001:002CC45A   771 0001:002CC460   772 0001:002CC476   774 0001:002CC48A
+   775 0001:002CC4C8   777 0001:002CC4DE   779 0001:002CC4F2   780 0001:002CC530
+   782 0001:002CC546   784 0001:002CC55E   785 0001:002CC59D   786 0001:002CC5EE
+   787 0001:002CC5FF   788 0001:002CC609   790 0001:002CC61D   792 0001:002CC635
+   793 0001:002CC673   794 0001:002CC684   796 0001:002CC6B6   797 0001:002CC6BC
+   798 0001:002CC6FD   799 0001:002CC708   800 0001:002CC753   801 0001:002CC770
+   802 0001:002CC7BB   804 0001:002CC7D8   809 0001:002CC830   810 0001:002CC83C
+   811 0001:002CC841   812 0001:002CC86E   814 0001:002CC879   815 0001:002CC887
+   816 0001:002CC889   811 0001:002CC88C   817 0001:002CC891   826 0001:002CC898
+   829 0001:002CC8CB   830 0001:002CC8DB   831 0001:002CC8FF   832 0001:002CC914
+   833 0001:002CC924   834 0001:002CC931   835 0001:002CC93F   837 0001:002CC949
+   838 0001:002CC95D   840 0001:002CC967   842 0001:002CC984   844 0001:002CC98A
+   845 0001:002CC9DC   827 0001:002CC9EA   850 0001:002CC9FA   860 0001:002CCA3C
+   861 0001:002CCA61   862 0001:002CCA69   864 0001:002CCA8C   865 0001:002CCA9A
+   866 0001:002CCAB0   867 0001:002CCAB5   868 0001:002CCABD   869 0001:002CCAD0
+   871 0001:002CCADA   872 0001:002CCADD   873 0001:002CCAF1   875 0001:002CCB0E
+   877 0001:002CCB18   878 0001:002CCB4D   881 0001:002CCB6E   882 0001:002CCBAC
+   883 0001:002CCBBF   884 0001:002CCBE9   887 0001:002CCBF4   869 0001:002CCC08
+   889 0001:002CCC12   891 0001:002CCC1C   893 0001:002CCC3D   895 0001:002CCC62
+   896 0001:002CCC8D   898 0001:002CCC93   899 0001:002CCC97   901 0001:002CCCB7
+   902 0001:002CCCCB   903 0001:002CCCE8   905 0001:002CCD03   906 0001:002CCD19
+   908 0001:002CCD39   909 0001:002CCD4D   910 0001:002CCD6A   913 0001:002CCD85
+   914 0001:002CCDBA   916 0001:002CCDC8   862 0001:002CCDCB   917 0001:002CCDD4
+   924 0001:002CCE2C   925 0001:002CCE3B   926 0001:002CCE4C   928 0001:002CCE52
+   929 0001:002CCE61   930 0001:002CCE6F   931 0001:002CCE80   932 0001:002CCE89
+   934 0001:002CCE97   935 0001:002CCEA5   936 0001:002CCEB3   945 0001:002CCEBC
+   946 0001:002CCEE4   947 0001:002CCEF3   948 0001:002CCF01   950 0001:002CCF32
+   951 0001:002CCF62   952 0001:002CCFA9   948 0001:002CCFAC   953 0001:002CCFB5
+   955 0001:002CCFDB   957 0001:002CCFEB   962 0001:002CD038   963 0001:002CD047
+   964 0001:002CD058   966 0001:002CD05E   967 0001:002CD06C   969 0001:002CD074
+   972 0001:002CD078   973 0001:002CD09E   974 0001:002CD0AD   976 0001:002CD0D7
+   977 0001:002CD0FE   986 0001:002CD128   988 0001:002CD162   989 0001:002CD167
+   990 0001:002CD16B   992 0001:002CD174   993 0001:002CD17D   995 0001:002CD196
+   998 0001:002CD1A9   999 0001:002CD1B2  1000 0001:002CD1C7  1001 0001:002CD1D5
+  1002 0001:002CD1E3  1003 0001:002CD1F1  1004 0001:002CD1FA  1005 0001:002CD200
+  1006 0001:002CD209  1007 0001:002CD212  1008 0001:002CD221  1009 0001:002CD230
+  1010 0001:002CD239  1011 0001:002CD247  1012 0001:002CD24D  1013 0001:002CD253
+  1030 0001:002CD25D  1036 0001:002CD2F9  1037 0001:002CD2FD  1039 0001:002CD307
+  1040 0001:002CD30F  1042 0001:002CD319  1043 0001:002CD332  1045 0001:002CD35A
+  1046 0001:002CD368  1047 0001:002CD36A  1042 0001:002CD36D  1050 0001:002CD372
+  1051 0001:002CD37B  1053 0001:002CD37F  1054 0001:002CD388  1056 0001:002CD3B2
+  1057 0001:002CD3CF  1059 0001:002CD3DA  1060 0001:002CD3EB  1062 0001:002CD3F8
+  1063 0001:002CD408  1069 0001:002CD45D  1070 0001:002CD46E  1072 0001:002CD47B
+  1075 0001:002CD498  1076 0001:002CD4B8  1077 0001:002CD4D3  1078 0001:002CD4F4
+  1080 0001:002CD555  1081 0001:002CD56C  1083 0001:002CD589  1085 0001:002CD5A6
+  1086 0001:002CD5C3  1087 0001:002CD5DB  1088 0001:002CD5FC  1090 0001:002CD65D
+  1092 0001:002CD66A  1094 0001:002CD694  1096 0001:002CD6FD  1097 0001:002CD787
+  1099 0001:002CD79F  1092 0001:002CD7A2  1103 0001:002CD7AB  1105 0001:002CD7B5
+  1107 0001:002CD7C8  1109 0001:002CD7D1  1110 0001:002CD7DB  1113 0001:002CD7ED
+  1128 0001:002CD8D4  1129 0001:002CD8F8  1130 0001:002CD900  1131 0001:002CD911
+  1132 0001:002CD93A  1133 0001:002CD945  1134 0001:002CD952  1135 0001:002CD988
+  1136 0001:002CD9BE  1138 0001:002CD9C6  1139 0001:002CD9D6  1140 0001:002CD9FA
+  1149 0001:002CDA03  1150 0001:002CDA1A  1152 0001:002CDA29  1155 0001:002CDA46
+  1156 0001:002CDA53  1157 0001:002CDA5E  1159 0001:002CDAC8  1160 0001:002CDAF7
+  1161 0001:002CDB08  1162 0001:002CDB12  1163 0001:002CDB37  1164 0001:002CDB5C
+  1165 0001:002CDB81  1166 0001:002CDBA6  1167 0001:002CDBCB  1170 0001:002CDC21
+  1171 0001:002CDC4E  1172 0001:002CDC7B  1174 0001:002CDC8D  1175 0001:002CDCAE
+  1172 0001:002CDCF5  1177 0001:002CDCFF  1179 0001:002CDD11  1180 0001:002CDD33
+  1177 0001:002CDD68  1182 0001:002CDD72  1184 0001:002CDD84  1185 0001:002CDDA2
+  1184 0001:002CDDD7  1186 0001:002CDDDC  1188 0001:002CDDEC  1190 0001:002CDDFE
+  1191 0001:002CDE18  1192 0001:002CDE26  1194 0001:002CDE4C  1197 0001:002CDE84
+  1198 0001:002CDEBC  1200 0001:002CDED3  1201 0001:002CDEDC  1202 0001:002CDEEA
+  1203 0001:002CDEF3  1204 0001:002CDEFC  1205 0001:002CDF0B  1206 0001:002CDF29
+  1208 0001:002CDF32  1213 0001:002CDF78  1214 0001:002CDF87  1215 0001:002CDFB4
+  1214 0001:002CDFD5  1216 0001:002CDFDA  1223 0001:002CDFE0  1224 0001:002CDFE9
+  1225 0001:002CDFF3  1228 0001:002CE00F  1229 0001:002CE05D  1230 0001:002CE08C
+  1225 0001:002CE08F  1231 0001:002CE098  1232 0001:002CE0A2  1233 0001:002CE0AC
+  1236 0001:002CE0B0  1237 0001:002CE0BC  1238 0001:002CE0C8  1239 0001:002CE0D7
+  1244 0001:002CE0DC  1245 0001:002CE0FB  1246 0001:002CE10B  1248 0001:002CE126
+  1249 0001:002CE130  1250 0001:002CE141  1251 0001:002CE148  1253 0001:002CE174
+  1258 0001:002CE1CC  1259 0001:002CE1D3  1260 0001:002CE1DB  1261 0001:002CE1E9
+  1262 0001:002CE1F3  1263 0001:002CE1FD  1268 0001:002CE200  1269 0001:002CE209
+  1271 0001:002CE211  1272 0001:002CE226  1273 0001:002CE23B  1274 0001:002CE241
+  1277 0001:002CE247  1278 0001:002CE261  1280 0001:002CE267  1282 0001:002CE274
+  1285 0001:002CE27C  1286 0001:002CE288  1288 0001:002CE28E  1289 0001:002CE29E
+  1290 0001:002CE2AC  1294 0001:002CE2BE  1295 0001:002CE2CE  1296 0001:002CE2DC
+  1298 0001:002CE2EC  1302 0001:002CE2F0  1303 0001:002CE2FC  1305 0001:002CE31A
+  1306 0001:002CE32D  1308 0001:002CE34A  1309 0001:002CE35C  1312 0001:002CE360
+  1313 0001:002CE36C  1314 0001:002CE37D  1317 0001:002CE384  1318 0001:002CE390
+  1319 0001:002CE39C  1322 0001:002CE3A0  1323 0001:002CE3C6  1324 0001:002CE3D2
+  1325 0001:002CE3DC  1327 0001:002CE3EE  1328 0001:002CE401  1329 0001:002CE414
+  1331 0001:002CE425  1332 0001:002CE481  1333 0001:002CE49F  1341 0001:002CE4F8
+  1342 0001:002CE523  1343 0001:002CE55B  1344 0001:002CE593  1345 0001:002CE5CB
+  1346 0001:002CE603  1347 0001:002CE63B  1348 0001:002CE673  1349 0001:002CE6AB
+  1350 0001:002CE6E0  1351 0001:002CE715  1352 0001:002CE74A  1353 0001:002CE752
+  1356 0001:002CE828  1357 0001:002CE834  1358 0001:002CE844  1371 0001:002CE848
+  1372 0001:002CE86C  1373 0001:002CE874  1376 0001:002CE88E  1377 0001:002CE8BD
+  1378 0001:002CE8C9  1379 0001:002CE8D7  1380 0001:002CE8E3  1381 0001:002CE900
+  1383 0001:002CE90D  1386 0001:002CE933  1388 0001:002CE94D  1389 0001:002CE97B
+  1390 0001:002CE988  1391 0001:002CE9A8  1392 0001:002CE9E6  1397 0001:002CEB90
+  1399 0001:002CEBAF  1400 0001:002CEBB7  1401 0001:002CEBC1  1402 0001:002CEBCB
+  1403 0001:002CEBD5  1404 0001:002CEBDF  1405 0001:002CEBE9  1406 0001:002CEBF3
+  1407 0001:002CEBFD  1408 0001:002CEC07  1409 0001:002CEC1C  1410 0001:002CEC31
+  1411 0001:002CEC46  1412 0001:002CEC50  1417 0001:002CEC5A  1418 0001:002CEC66
+  1419 0001:002CEC6E  1421 0001:002CEC7D  1423 0001:002CECA4  1424 0001:002CECC1
+  1425 0001:002CECCF  1426 0001:002CECDD  1427 0001:002CECEB  1428 0001:002CED03
+  1429 0001:002CED14  1432 0001:002CED38  1433 0001:002CED45  1434 0001:002CED4C
+  1435 0001:002CED5A  1436 0001:002CED68  1438 0001:002CED76  1439 0001:002CED8B
+  1440 0001:002CEDA9  1441 0001:002CEDCB  1442 0001:002CEDD6  1446 0001:002CEDDC
+  1448 0001:002CEDEB  1450 0001:002CEE0B  1451 0001:002CEE11  1453 0001:002CEE22
+  1462 0001:002CEE28  1463 0001:002CEE44  1464 0001:002CEE48  1465 0001:002CEE59
+  1466 0001:002CEE66  1467 0001:002CEE75  1468 0001:002CEE83  1469 0001:002CEE8D
+  1470 0001:002CEEAB  1471 0001:002CEED2  1472 0001:002CEEDC  1473 0001:002CEEE3
+  1475 0001:002CEF04  1477 0001:002CEF14  1490 0001:002CEF54  1491 0001:002CEF79
+  1492 0001:002CEF7D  1493 0001:002CEF8B  1494 0001:002CEF8F  1496 0001:002CEFAC
+  1497 0001:002CEFCB  1498 0001:002CEFCF  1500 0001:002CEFD4  1502 0001:002CEFE0
+  1503 0001:002CEFF2  1506 0001:002CEFFF  1507 0001:002CF007  1509 0001:002CF00F
+  1510 0001:002CF013  1512 0001:002CF018  1514 0001:002CF024  1515 0001:002CF028
+  1518 0001:002CF02D  1519 0001:002CF03D  1521 0001:002CF04C  1523 0001:002CF070
+  1525 0001:002CF080  1526 0001:002CF097  1527 0001:002CF0CA  1529 0001:002CF0D8
+  1530 0001:002CF10F  1532 0001:002CF132  1533 0001:002CF156  1535 0001:002CF163
+  1537 0001:002CF17C  1539 0001:002CF189  1540 0001:002CF1B5  1541 0001:002CF1BE
+  1542 0001:002CF1C3  1543 0001:002CF1D1  1544 0001:002CF1DE  1546 0001:002CF220
+  1548 0001:002CF230  1549 0001:002CF24D  1551 0001:002CF271  1553 0001:002CF282
+  1554 0001:002CF28A  1573 0001:002CF384  1574 0001:002CF3BD  1575 0001:002CF3C7
+  1576 0001:002CF3CE  1577 0001:002CF3D2  1578 0001:002CF3DF  1580 0001:002CF3E9
+  1582 0001:002CF425  1583 0001:002CF442  1588 0001:002CF449  1590 0001:002CF465
+  1592 0001:002CF471  1593 0001:002CF498  1595 0001:002CF4A2  1598 0001:002CF4DB
+  1601 0001:002CF4DD  1603 0001:002CF4E9  1604 0001:002CF4F1  1605 0001:002CF50A
+  1607 0001:002CF510  1611 0001:002CF540  1613 0001:002CF54A  1619 0001:002CF54F
+  1621 0001:002CF55F  1622 0001:002CF569  1623 0001:002CF570  1624 0001:002CF57C
+  1626 0001:002CF5B5  1629 0001:002CF5C5  1630 0001:002CF5C9  1631 0001:002CF5D5
+  1633 0001:002CF617  1635 0001:002CF63F  1636 0001:002CF647  1637 0001:002CF65F
+  1638 0001:002CF667  1640 0001:002CF66B  1642 0001:002CF674  1644 0001:002CF67D
+  1645 0001:002CF684  1647 0001:002CF690  1649 0001:002CF696  1650 0001:002CF69E
+  1653 0001:002CF6A6  1654 0001:002CF6B5  1658 0001:002CF6B7  1660 0001:002CF6C0
+  1661 0001:002CF6C7  1663 0001:002CF6D3  1665 0001:002CF6D9  1666 0001:002CF6E1
+  1669 0001:002CF6E9  1671 0001:002CF6F8  1675 0001:002CF6FA  1676 0001:002CF703
+  1677 0001:002CF70A  1680 0001:002CF830  1682 0001:002CF83C  1683 0001:002CF846
+  1684 0001:002CF84E  1687 0001:002CF854  1692 0001:002CF863  1693 0001:002CF86D
+  1694 0001:002CF875  1695 0001:002CF87F  1706 0001:002CF885  1709 0001:002CF88C
+  1712 0001:002CF8B5  1713 0001:002CF8C6  1714 0001:002CF8D6  1715 0001:002CF8EB
+  1716 0001:002CF8FB  1721 0001:002CF90F  1722 0001:002CF926  1724 0001:002CF95A
+  1725 0001:002CF991  1726 0001:002CF9A0  1728 0001:002CF9B0  1741 0001:002CFA24
+  1743 0001:002CFA2B  1747 0001:002CFA30  1749 0001:002CFA3F  1750 0001:002CFA49
+  1753 0001:002CFA50  1754 0001:002CFA77  1755 0001:002CFA92  1758 0001:002CFAB8
+  1759 0001:002CFAC4  1760 0001:002CFAD0  1764 0001:002CFADA  1765 0001:002CFAE8
+  1767 0001:002CFAFF  1770 0001:002CFB04  1771 0001:002CFB10  1772 0001:002CFB1B
+  1777 0001:002CFB20  1778 0001:002CFB2C  1779 0001:002CFB31  1780 0001:002CFB5E
+  1782 0001:002CFB6E  1783 0001:002CFB77  1784 0001:002CFB79  1779 0001:002CFB7C
+  1785 0001:002CFB81  1788 0001:002CFB88  1790 0001:002CFB94  1791 0001:002CFB9E
+  1795 0001:002CFBA4  1797 0001:002CFBB3  1798 0001:002CFBBF  1799 0001:002CFBCB
+  1803 0001:002CFBD4  1805 0001:002CFBE4  1806 0001:002CFBEA  1807 0001:002CFC45
+  1815 0001:002CFC4C  1816 0001:002CFC84  1817 0001:002CFC88  1819 0001:002CFCB2
+  1820 0001:002CFCC1  1821 0001:002CFCD6  1822 0001:002CFCDA  1823 0001:002CFCF2
+  1825 0001:002CFD18  1826 0001:002CFD1C  1827 0001:002CFD1E  1822 0001:002CFD21
+  1828 0001:002CFD26  1830 0001:002CFD30  1831 0001:002CFD38  1836 0001:002CFDCE
+  1837 0001:002CFDDD  1838 0001:002CFDE8  1840 0001:002CFDF8  1842 0001:002CFE10
+  1843 0001:002CFE41  1844 0001:002CFE67  1840 0001:002CFE6A  1845 0001:002CFE6F
+  1847 0001:002CFE8C  1848 0001:002CFE98  1853 0001:002CFE9C
+
+Line numbers for fODBase(Orders\fODBase.pas) segment .itext
+
+  1856 0002:00001720
+
+Line numbers for rODBase(Orders\rODBase.pas) segment .text
+
+   153 0001:002D0190   154 0001:002D01BD   155 0001:002D01BF   156 0001:002D01C1
+   157 0001:002D01C9   158 0001:002D01D1   159 0001:002D01D8   161 0001:002D01ED
+   163 0001:002D0206   164 0001:002D021B   166 0001:002D021D   167 0001:002D0236
+   168 0001:002D024B   169 0001:002D026C   170 0001:002D0279   172 0001:002D027D
+   173 0001:002D0296   175 0001:002D02AB   177 0001:002D02D2   178 0001:002D02E7
+   180 0001:002D02FA   181 0001:002D033A   183 0001:002D0356   184 0001:002D0382
+   186 0001:002D03AB   188 0001:002D03CB   190 0001:002D03E7   191 0001:002D0415
+   195 0001:002D043E   196 0001:002D046A   199 0001:002D0493   201 0001:002D04CB
+   202 0001:002D04F9   204 0001:002D051F   206 0001:002D053B   207 0001:002D0564
+   211 0001:002D0588   159 0001:002D0589   213 0001:002D0592   215 0001:002D05AC
+   217 0001:002D05B9   218 0001:002D05E7   220 0001:002D05FA   221 0001:002D0609
+   222 0001:002D0617   223 0001:002D0622   224 0001:002D062F   225 0001:002D0649
+   226 0001:002D065A   228 0001:002D066C   229 0001:002D0699   230 0001:002D06B7
+   226 0001:002D06B8   232 0001:002D06C8   235 0001:002D06D8   237 0001:002D06E9
+   213 0001:002D06EC   238 0001:002D06F5   248 0001:002D08A0   249 0001:002D08A9
+   250 0001:002D08C3   253 0001:002D08E0   254 0001:002D08E6   255 0001:002D08FE
+   256 0001:002D0912   259 0001:002D0930   260 0001:002D0933   262 0001:002D0957
+   272 0001:002D0974   275 0001:002D099B   276 0001:002D09A4   277 0001:002D09BB
+   278 0001:002D09CE   279 0001:002D09E7   280 0001:002D09FD   281 0001:002D0A1A
+   282 0001:002D0A30   283 0001:002D0A5A   284 0001:002D0A76   285 0001:002D0A7B
+   286 0001:002D0A8C   288 0001:002D0AAA   293 0001:002D0AE8   294 0001:002D0B04
+   295 0001:002D0B30   298 0001:002D0B74   299 0001:002D0B90   300 0001:002D0BB6
+   303 0001:002D0BF0   304 0001:002D0C0C   305 0001:002D0C32   310 0001:002D0C6C
+   311 0001:002D0C8C   314 0001:002D0CA6   315 0001:002D0CC3   316 0001:002D0CE1
+   317 0001:002D0D01   319 0001:002D0D1F   327 0001:002D0D68   328 0001:002D0D8E
+   329 0001:002D0DA4   331 0001:002D0DC5   334 0001:002D0DD3   335 0001:002D0E08
+   336 0001:002D0E3F   337 0001:002D0E7F   338 0001:002D0EB7   339 0001:002D0EBF
+   340 0001:002D0EF4   341 0001:002D0F29   342 0001:002D0F5E   343 0001:002D0F93
+   344 0001:002D0FD0   345 0001:002D100D   346 0001:002D1042   348 0001:002D107F
+   349 0001:002D1089   329 0001:002D108A   350 0001:002D1093   357 0001:002D10F0
+   358 0001:002D1114   359 0001:002D112C   360 0001:002D112E   362 0001:002D114F
+   364 0001:002D117B   367 0001:002D1189   368 0001:002D11FF   369 0001:002D1234
+   370 0001:002D1271   371 0001:002D12AE   372 0001:002D12E3   373 0001:002D131D
+   374 0001:002D1352   375 0001:002D1387   376 0001:002D13BC   377 0001:002D13F1
+   378 0001:002D1426   379 0001:002D1461   381 0001:002D146B   383 0001:002D1475
+   384 0001:002D14AF   385 0001:002D1538   360 0001:002D1539   386 0001:002D1542
+   395 0001:002D15AC   396 0001:002D15D3   397 0001:002D15D5   398 0001:002D15DB
+   399 0001:002D15EA   400 0001:002D15FF   403 0001:002D1612   405 0001:002D1634
+   408 0001:002D1642   409 0001:002D1685   410 0001:002D16B2   411 0001:002D16DD
+   414 0001:002D16E3   415 0001:002D1724   416 0001:002D1765   418 0001:002D1783
+   419 0001:002D17AD   420 0001:002D17DB   422 0001:002D17E8   412 0001:002D17E9
+   424 0001:002D1817   425 0001:002D1833   426 0001:002D1840   427 0001:002D185C
+   401 0001:002D1866   432 0001:002D1883   434 0001:002D1893   439 0001:002D18D8
+   440 0001:002D18E5   441 0001:002D190D   442 0001:002D190F   443 0001:002D1931
+   444 0001:002D193A   450 0001:002D195C   453 0001:002D19B0   454 0001:002D19B9
+   455 0001:002D19CB   456 0001:002D19DE   457 0001:002D1A00   458 0001:002D1A16
+   459 0001:002D1A4A   462 0001:002D1A60   463 0001:002D1A91   464 0001:002D1AA7
+   465 0001:002D1AC4   466 0001:002D1ADA   467 0001:002D1B04   468 0001:002D1B1A
+   469 0001:002D1B44   470 0001:002D1B5A   471 0001:002D1B7C   472 0001:002D1B88
+   474 0001:002D1BA6   475 0001:002D1BC2   476 0001:002D1BD2   477 0001:002D1BF4
+   478 0001:002D1C04   479 0001:002D1C26   480 0001:002D1C60   483 0001:002D1C77
+   485 0001:002D1D0A   486 0001:002D1D5A   480 0001:002D1D5B   487 0001:002D1D64
+   488 0001:002D1D7C   489 0001:002D1D9E   490 0001:002D1DAD   491 0001:002D1DE9
+   492 0001:002D1E25   493 0001:002D1E3B   494 0001:002D1E58   496 0001:002D1E5E
+   497 0001:002D1E74   500 0001:002D1EB4   501 0001:002D1ECA   503 0001:002D1EE4
+   504 0001:002D1EFA   505 0001:002D1F17   506 0001:002D1F2D   508 0001:002D1F5D
+   509 0001:002D1F62   510 0001:002D1F77   511 0001:002D1F89   512 0001:002D1F98
+   516 0001:002D1FA5   517 0001:002D2018   514 0001:002D2027   519 0001:002D208E
+   520 0001:002D20C1   521 0001:002D20C9   523 0001:002D2109   526 0001:002D211A
+   527 0001:002D2180   524 0001:002D218F   530 0001:002D21F6   532 0001:002D220A
+   553 0001:002D231C   554 0001:002D233A   555 0001:002D2350   556 0001:002D238C
+   559 0001:002D23C4   560 0001:002D23DE   561 0001:002D2406   573 0001:002D2444
+   574 0001:002D2450   575 0001:002D247B   576 0001:002D2488   579 0001:002D24A8
+   582 0001:002D24D0   583 0001:002D24D9   584 0001:002D24ED   585 0001:002D2500
+   586 0001:002D2522   587 0001:002D2538   589 0001:002D255A   590 0001:002D255F
+   591 0001:002D2570   593 0001:002D2583   594 0001:002D258A   601 0001:002D25CC
+   603 0001:002D2606   604 0001:002D2609   605 0001:002D260D   606 0001:002D2611
+   607 0001:002D2615   608 0001:002D2619   609 0001:002D261D   610 0001:002D2621
+   611 0001:002D2636   614 0001:002D2640   616 0001:002D2672   617 0001:002D26A4
+   619 0001:002D26A9   621 0001:002D26AC   623 0001:002D26DE   624 0001:002D2710
+   626 0001:002D2716   628 0001:002D271A   630 0001:002D274C   631 0001:002D277E
+   633 0001:002D2784   635 0001:002D2788   637 0001:002D27BA   638 0001:002D27EC
+   640 0001:002D27F2   642 0001:002D27F6   644 0001:002D2828   645 0001:002D285A
+   647 0001:002D2860   649 0001:002D2864   651 0001:002D2896   652 0001:002D28C8
+   654 0001:002D28CE   656 0001:002D28D2   658 0001:002D2904   659 0001:002D2942
+   661 0001:002D2948   663 0001:002D294C   612 0001:002D294D   665 0001:002D2973
+   667 0001:002D2AC8   670 0001:002D2AE0   671 0001:002D2AEE   672 0001:002D2B06
+   673 0001:002D2B1E   674 0001:002D2B42   676 0001:002D2B47   683 0001:002D2BFC
+   684 0001:002D2C0B   685 0001:002D2C46   686 0001:002D2C53   689 0001:002D2C74
+   690 0001:002D2C99   691 0001:002D2CC7   692 0001:002D2CFA   695 0001:002D2D4C
+   697 0001:002D2D66   699 0001:002D2D6F   700 0001:002D2DA0   702 0001:002D2DA7
+   703 0001:002D2DAE   732 0001:002D2E00   733 0001:002D2E1F   734 0001:002D2E60
+   739 0001:002D2EA0   740 0001:002D2EBE   742 0001:002D2ED5   743 0001:002D2EEF
+   744 0001:002D2EF5   745 0001:002D2F15   746 0001:002D2F35   748 0001:002D2F42
+   753 0001:002D2F90   754 0001:002D2FAE   756 0001:002D2FC5   757 0001:002D2FDF
+   758 0001:002D2FE5   759 0001:002D3005   760 0001:002D3025   762 0001:002D3032
+   765 0001:002D3080   766 0001:002D309C   767 0001:002D30DC   770 0001:002D3124
+   771 0001:002D312A   772 0001:002D314E   773 0001:002D3162   778 0001:002D3184
+   779 0001:002D31A8   780 0001:002D31C2   781 0001:002D31DF   782 0001:002D31FC
+   785 0001:002D324C   786 0001:002D3268   787 0001:002D3294   790 0001:002D32DC
+   791 0001:002D32F8   792 0001:002D3324   796 0001:002D3370   797 0001:002D3373
+   798 0001:002D33B3   799 0001:002D33C0   803 0001:002D33E0   804 0001:002D33E3
+   805 0001:002D3423   806 0001:002D3430   809 0001:002D3450   810 0001:002D345C
+   811 0001:002D3482   815 0001:002D34A4   816 0001:002D34A7   817 0001:002D34E7
+   818 0001:002D34F4   822 0001:002D3514   823 0001:002D351A   824 0001:002D3550
+   825 0001:002D355D   829 0001:002D357C   830 0001:002D3582   831 0001:002D35B8
+   832 0001:002D35C5   836 0001:002D35E4   837 0001:002D35EA   838 0001:002D360A
+   839 0001:002D361E   854 0001:002D363C   855 0001:002D365B   856 0001:002D368C
+   860 0001:002D36CC   861 0001:002D36EB   862 0001:002D3724   866 0001:002D3774
+   867 0001:002D3777   868 0001:002D378F   869 0001:002D379C   876 0001:002D37B8
+   878 0001:002D37E4
+
+Line numbers for rODBase(Orders\rODBase.pas) segment .itext
+
+   871 0002:00001728   872 0002:00001742   873 0002:00001749   875 0002:00001753
+
+Line numbers for rConsults(Consults\rConsults.pas) segment .text
+
+   120 0001:002D3810   121 0001:002D382A   122 0001:002D3833   123 0001:002D385E
+   124 0001:002D3864   130 0001:002D38AC   131 0001:002D38CC   132 0001:002D38D9
+   133 0001:002D3908   134 0001:002D3921   135 0001:002D3932   136 0001:002D3951
+   137 0001:002D396B   138 0001:002D3991   139 0001:002D39B4   143 0001:002D3A2C
+   145 0001:002D3A35   146 0001:002D3A3F   147 0001:002D3A46   149 0001:002D3A4B
+   154 0001:002D3A4C   155 0001:002D3A5A   156 0001:002D3A62   160 0001:002D3A64
+   161 0001:002D3A67   162 0001:002D3A75   163 0001:002D3A85   167 0001:002D3A88
+   168 0001:002D3A8B   169 0001:002D3A99   170 0001:002D3AA8   172 0001:002D3AB9
+   173 0001:002D3AC5   175 0001:002D3AD1   181 0001:002D3B34   185 0001:002D3B3D
+   187 0001:002D3B5F   188 0001:002D3B6C   193 0001:002D3B9C   194 0001:002D3BB6
+   195 0001:002D3BBF   196 0001:002D3BEA   197 0001:002D3BF0   203 0001:002D3C38
+   204 0001:002D3C58   205 0001:002D3C65   206 0001:002D3C94   207 0001:002D3CAD
+   208 0001:002D3CBE   209 0001:002D3CDD   210 0001:002D3CF7   211 0001:002D3D1D
+   212 0001:002D3D40   216 0001:002D3DB8   218 0001:002D3DC1   219 0001:002D3DCB
+   220 0001:002D3DD2   222 0001:002D3DD7   227 0001:002D3DD8   228 0001:002D3DE6
+   229 0001:002D3DEE   233 0001:002D3DF0   234 0001:002D3DF3   235 0001:002D3E01
+   236 0001:002D3E11   240 0001:002D3E14   241 0001:002D3E17   242 0001:002D3E25
+   243 0001:002D3E34   245 0001:002D3E45   246 0001:002D3E51   248 0001:002D3E5D
+   254 0001:002D3EC0   258 0001:002D3EC9   260 0001:002D3EEB   261 0001:002D3EF8
+   271 0001:002D3F28   272 0001:002D3F6C   273 0001:002D3F97   274 0001:002D3FC2
+   277 0001:002D400D   279 0001:002D404D   280 0001:002D4066   282 0001:002D407E
+   284 0001:002D409A   285 0001:002D40BC   286 0001:002D40D3   282 0001:002D40D4
+   287 0001:002D40D7   291 0001:002D40EE   292 0001:002D40F6   295 0001:002D4103
+   299 0001:002D4178   300 0001:002D417E   301 0001:002D4196   302 0001:002D41AA
+   306 0001:002D41C8   307 0001:002D41CE   308 0001:002D41E6   309 0001:002D41FA
+   323 0001:002D421C   324 0001:002D4244   325 0001:002D4252   326 0001:002D4273
+   327 0001:002D4275   328 0001:002D4284   329 0001:002D4292   330 0001:002D42A7
+   331 0001:002D42B4   334 0001:002D42DA   335 0001:002D42F9   336 0001:002D4319
+   337 0001:002D4339   338 0001:002D4359   339 0001:002D4379   340 0001:002D4399
+   341 0001:002D43B9   342 0001:002D43D8   343 0001:002D43F6   344 0001:002D4416
+   345 0001:002D4436   346 0001:002D445B   347 0001:002D447B   348 0001:002D449B
+   349 0001:002D44D3   350 0001:002D4504   351 0001:002D4522   352 0001:002D4540
+   353 0001:002D4560   354 0001:002D457E   355 0001:002D459C   357 0001:002D45BC
+   358 0001:002D45C6   359 0001:002D45D5   360 0001:002D45E4   362 0001:002D45F4
+   363 0001:002D4603   364 0001:002D461A   365 0001:002D468A   367 0001:002D46AA
+   363 0001:002D46C9   371 0001:002D46D4   373 0001:002D46ED   375 0001:002D46FD
+   381 0001:002D476C   382 0001:002D476F   383 0001:002D4787   384 0001:002D4799
+   385 0001:002D47A6   389 0001:002D47C4   390 0001:002D47C7   391 0001:002D47DD
+   392 0001:002D47EF   393 0001:002D47FC   398 0001:002D481C   399 0001:002D483B
+   400 0001:002D4855   401 0001:002D485F   405 0001:002D48A0   406 0001:002D48A3
+   407 0001:002D48B9   408 0001:002D48C6   411 0001:002D48F4   412 0001:002D48F7
+   413 0001:002D490D   414 0001:002D491A   417 0001:002D4948   418 0001:002D4968
+   419 0001:002D4981   420 0001:002D498E   423 0001:002D49DC   424 0001:002D4A09
+   425 0001:002D4A51   428 0001:002D4AA0   429 0001:002D4AC2   430 0001:002D4B00
+   436 0001:002D4B48   437 0001:002D4B6F   438 0001:002D4B73   439 0001:002D4BC7
+   440 0001:002D4BE3   439 0001:002D4C24   441 0001:002D4C27   446 0001:002D4C98
+   447 0001:002D4CBB   448 0001:002D4CD5   449 0001:002D4CF7   450 0001:002D4D1D
+   451 0001:002D4D43   452 0001:002D4D9A   453 0001:002D4DBC   454 0001:002D4DC4
+   459 0001:002D4E2C   460 0001:002D4E3B   461 0001:002D4E76   462 0001:002D4E8A
+   466 0001:002D4EAC   467 0001:002D4ED1   468 0001:002D4F20   469 0001:002D4F34
+   473 0001:002D4F80   474 0001:002D4F8F   475 0001:002D4FD6   476 0001:002D4FEA
+   480 0001:002D501C   481 0001:002D502B   482 0001:002D5072   483 0001:002D5086
+   487 0001:002D50B8   488 0001:002D50C7   489 0001:002D5120   490 0001:002D5134
+   494 0001:002D5158   495 0001:002D517D   496 0001:002D51C2   497 0001:002D51D6
+   501 0001:002D5214   502 0001:002D5241   503 0001:002D529D   504 0001:002D52B1
+   508 0001:002D5300   509 0001:002D532D   510 0001:002D537F   511 0001:002D5393
+   516 0001:002D53D8   517 0001:002D53DB   518 0001:002D53F2   519 0001:002D53FF
+   523 0001:002D541C   524 0001:002D541F   525 0001:002D5436   526 0001:002D5443
+   529 0001:002D5460   531 0001:002D5469   532 0001:002D548B   534 0001:002D5498
+   538 0001:002D54BC   539 0001:002D54BF   540 0001:002D54D5   541 0001:002D54E7
+   542 0001:002D54F4   548 0001:002D5510   549 0001:002D5513   550 0001:002D5543
+   551 0001:002D5555   552 0001:002D5562   559 0001:002D5588   560 0001:002D558B
+   561 0001:002D55C6   562 0001:002D55D8   563 0001:002D55E5   582 0001:002D560C
+   583 0001:002D5626   584 0001:002D563C   586 0001:002D5652   587 0001:002D5669
+   588 0001:002D5678   589 0001:002D568B   591 0001:002D56A2   592 0001:002D56AF
+   597 0001:002D56FC   598 0001:002D5726   600 0001:002D575F   603 0001:002D57A8
+   604 0001:002D57CA   605 0001:002D57ED   606 0001:002D57FA   616 0001:002D5844
+   617 0001:002D585C   620 0001:002D5880   621 0001:002D58A8   623 0001:002D58D0
+   626 0001:002D5928   627 0001:002D5931   629 0001:002D5948   630 0001:002D5962
+   631 0001:002D5968   633 0001:002D5974   636 0001:002D5998   637 0001:002D59BA
+   638 0001:002D59D4   641 0001:002D5A14   642 0001:002D5A17   643 0001:002D5A2D
+   644 0001:002D5A3A   647 0001:002D5A60   648 0001:002D5A69   649 0001:002D5A83
+   655 0001:002D5AA0   656 0001:002D5AD2   657 0001:002D5AE1   658 0001:002D5AEF
+   661 0001:002D5B08   662 0001:002D5B0C   663 0001:002D5B0F   664 0001:002D5B3F
+   665 0001:002D5B6D   666 0001:002D5BA3   667 0001:002D5BDD   668 0001:002D5C17
+   669 0001:002D5C53   670 0001:002D5C8D   671 0001:002D5CC7   672 0001:002D5D01
+   673 0001:002D5D42   674 0001:002D5D7C   675 0001:002D5DB6   676 0001:002D5DF0
+   677 0001:002D5E2A   678 0001:002D5E6C   679 0001:002D5E7D   680 0001:002D5E8C
+   681 0001:002D5E99   682 0001:002D5EAA   683 0001:002D5EB9   684 0001:002D5ECA
+   685 0001:002D5ED9   687 0001:002D5EE8   689 0001:002D5F05   691 0001:002D5F15
+   696 0001:002D604C   699 0001:002D608F   700 0001:002D6098   701 0001:002D60A9
+   702 0001:002D60BC   703 0001:002D60E3   704 0001:002D60F9   706 0001:002D610D
+   707 0001:002D6114   708 0001:002D613E   709 0001:002D6144   710 0001:002D6164
+   711 0001:002D616B   712 0001:002D6195   713 0001:002D61A5   714 0001:002D61CB
+   715 0001:002D61DB   716 0001:002D6217   717 0001:002D6223   718 0001:002D6235
+   719 0001:002D623B   720 0001:002D6261   721 0001:002D6271   722 0001:002D6297
+   723 0001:002D62A7   724 0001:002D62DA   726 0001:002D62E6   727 0001:002D62F8
+   728 0001:002D630B   727 0001:002D6356   730 0001:002D635B   732 0001:002D6367
+   733 0001:002D6379   734 0001:002D638C   733 0001:002D63D7   737 0001:002D63DC
+   738 0001:002D63E1   741 0001:002D63EE   747 0001:002D65B4   748 0001:002D65F0
+   751 0001:002D6614   752 0001:002D6618   753 0001:002D6636   754 0001:002D6654
+   755 0001:002D6672   756 0001:002D6690   757 0001:002D66AE   759 0001:002D66D4
+   760 0001:002D66E4   765 0001:002D674C   768 0001:002D6784   769 0001:002D6797
+   770 0001:002D67AA   771 0001:002D67BD   772 0001:002D67D0   773 0001:002D67E3
+   775 0001:002D680C   776 0001:002D6825   779 0001:002D6880   780 0001:002D68A2
+   781 0001:002D68D6   782 0001:002D68E3   785 0001:002D6930   786 0001:002D6952
+   787 0001:002D696C   790 0001:002D69B4   791 0001:002D69D4   792 0001:002D6A01
+   793 0001:002D6A0E   797 0001:002D6A58   798 0001:002D6A7A   799 0001:002D6AA8
+   802 0001:002D6AE4   803 0001:002D6B06   804 0001:002D6B20   809 0001:002D6B64
+   810 0001:002D6B91   811 0001:002D6BAE   812 0001:002D6BCC   813 0001:002D6BEA
+   816 0001:002D6C38   817 0001:002D6C41   818 0001:002D6C5B   824 0001:002D6C80
+   825 0001:002D6CD7   828 0001:002D6CFA   829 0001:002D6D25   830 0001:002D6D50
+   831 0001:002D6D76   832 0001:002D6D9B   833 0001:002D6DC4   835 0001:002D6DF2
+   836 0001:002D6E05   845 0001:002D6E70   846 0001:002D6E9C   848 0001:002D6EAF
+
+Line numbers for rConsults(Consults\rConsults.pas) segment .itext
+
+   838 0002:0000176C   839 0002:00001786   840 0002:0000178D   841 0002:00001797
+   842 0002:0000179E   844 0002:000017A5
+
+Line numbers for uDocTree(uDocTree.pas) segment .text
+
+    82 0001:002D6F5C    83 0001:002D6F90    84 0001:002D6F9F    85 0001:002D6FAE
+    86 0001:002D6FBC    89 0001:002D6FC6    91 0001:002D6FD2    92 0001:002D6FF7
+    94 0001:002D7001    96 0001:002D7017    97 0001:002D7024    98 0001:002D7037
+    99 0001:002D704A   101 0001:002D706B   102 0001:002D7078   104 0001:002D708B
+   105 0001:002D709E   107 0001:002D70BF   108 0001:002D70CC   110 0001:002D70DF
+   116 0001:002D70F2   118 0001:002D7123   119 0001:002D7149   120 0001:002D7182
+   122 0001:002D7188   123 0001:002D7195   127 0001:002D71B8   128 0001:002D71D0
+   129 0001:002D720F   130 0001:002D7282   131 0001:002D72BD   134 0001:002D72CD
+   135 0001:002D72E5   138 0001:002D7306   139 0001:002D7342   140 0001:002D7383
+   143 0001:002D7393   144 0001:002D73B1   147 0001:002D73D8   148 0001:002D741A
+   149 0001:002D745B   152 0001:002D746B   153 0001:002D7497   154 0001:002D74AA
+   155 0001:002D74C8   158 0001:002D74EF   159 0001:002D7531   160 0001:002D756A
+   173 0001:002D7575   174 0001:002D7580    94 0001:002D7581   175 0001:002D7588
+   176 0001:002D7599   177 0001:002D75AB   179 0001:002D75B9   180 0001:002D75EB
+   182 0001:002D761D   183 0001:002D7674   184 0001:002D767F   185 0001:002D7687
+   186 0001:002D7695   187 0001:002D76A1   188 0001:002D76B7   187 0001:002D7783
+   191 0001:002D7797   192 0001:002D779F   194 0001:002D77AF   204 0001:002D7938
+   205 0001:002D7982   207 0001:002D7998   208 0001:002D799D   209 0001:002D79C2
+   211 0001:002D79D3   212 0001:002D79F8   213 0001:002D7A32   214 0001:002D7A45
+   215 0001:002D7A64   216 0001:002D7A83   219 0001:002D7AA2   220 0001:002D7AC7
+   221 0001:002D7AFA   222 0001:002D7B0C   223 0001:002D7B25   227 0001:002D7B3E
+   228 0001:002D7B4E   229 0001:002D7B6C   230 0001:002D7B8A   232 0001:002D7BA8
+   234 0001:002D7BAA   235 0001:002D7BC2   236 0001:002D7BDF   237 0001:002D7BED
+   240 0001:002D7C0C   205 0001:002D7C0D   241 0001:002D7C16   251 0001:002D7C6C
+   252 0001:002D7C83   253 0001:002D7C90   256 0001:002D7CB0   257 0001:002D7CB9
+   259 0001:002D7CC8   260 0001:002D7CDA   261 0001:002D7CE8   263 0001:002D7CFC
+   264 0001:002D7D1B   265 0001:002D7D2E   266 0001:002D7D43   267 0001:002D7D6C
+   271 0001:002D7D84   273 0001:002D7DBC   274 0001:002D7E01   276 0001:002D7E09
+   277 0001:002D7E18   278 0001:002D7E21   279 0001:002D7E44   280 0001:002D7E56
+   281 0001:002D7E5C   282 0001:002D7E6E   283 0001:002D7E7F   284 0001:002D7E91
+   285 0001:002D7EA0   286 0001:002D7EB2   287 0001:002D7EC3   288 0001:002D7ED5
+   290 0001:002D7EE8   291 0001:002D7EF2   292 0001:002D7EFC   295 0001:002D7F07
+   296 0001:002D7F3F   297 0001:002D7F76   298 0001:002D7FAA   299 0001:002D7FDE
+   301 0001:002D8010   303 0001:002D8019   305 0001:002D8039   307 0001:002D804B
+   308 0001:002D8078   311 0001:002D80C9   313 0001:002D810A   314 0001:002D811C
+   319 0001:002D8173   320 0001:002D8185   321 0001:002D8194   323 0001:002D81A3
+   324 0001:002D81AE   325 0001:002D81BB   328 0001:002D81C8   329 0001:002D81D6
+   330 0001:002D81E1   333 0001:002D81EE   334 0001:002D81F5   335 0001:002D8204
+   336 0001:002D8208   337 0001:002D8217   338 0001:002D821A   340 0001:002D8227
+   344 0001:002D8256   353 0001:002D8268   354 0001:002D8274   359 0001:002D827A
+   362 0001:002D8293   368 0001:002D83AC   369 0001:002D83FD   370 0001:002D8405
+   371 0001:002D8407   372 0001:002D842E   374 0001:002D8434   377 0001:002D8452
+   378 0001:002D8478   381 0001:002D8508   383 0001:002D850F   384 0001:002D8523
+   386 0001:002D8579   387 0001:002D85C7   389 0001:002D85CE   390 0001:002D864A
+   392 0001:002D8651   393 0001:002D8680   394 0001:002D8684   395 0001:002D86CC
+   399 0001:002D86D0   401 0001:002D86D2   402 0001:002D86E0   403 0001:002D8706
+   404 0001:002D8721   410 0001:002D87A0   411 0001:002D87FB   412 0001:002D87FD
+   413 0001:002D8808   415 0001:002D8813   416 0001:002D883A   418 0001:002D884F
+   420 0001:002D885B   423 0001:002D8880   424 0001:002D88E2   429 0001:002D893B
+   435 0001:002D89C7   443 0001:002D8A2F   444 0001:002D8A6B   445 0001:002D8A81
+   447 0001:002D8AC8   448 0001:002D8ACC   449 0001:002D8AD0   451 0001:002D8AD2
+   456 0001:002D8BCC   457 0001:002D8C0A   458 0001:002D8C0C   459 0001:002D8C17
+   460 0001:002D8C1D   461 0001:002D8C2F   462 0001:002D8C3C   463 0001:002D8C49
+   465 0001:002D8C61   467 0001:002D8C9A   470 0001:002D8CE8   471 0001:002D8CE9
+   473 0001:002D8CEB   474 0001:002D8CF2   475 0001:002D8CFA   476 0001:002D8D02
+   477 0001:002D8D0A   478 0001:002D8D12   479 0001:002D8D1A   480 0001:002D8D22
+   481 0001:002D8D2A   482 0001:002D8D32   483 0001:002D8D3A   484 0001:002D8D42
+   485 0001:002D8D4A   486 0001:002D8D52   488 0001:002D8D5A   493 0001:002D8D5C
+   495 0001:002D8D61   497 0001:002D8D76   499 0001:002D8D89   500 0001:002D8D9E
+   501 0001:002D8DB9   503 0001:002D8DCD   494 0001:002D8DCE   504 0001:002D8DD1
+   507 0001:002D8DD8   508 0001:002D8DDB   510 0001:002D8DE2   511 0001:002D8DE7
+   512 0001:002D8DF5   514 0001:002D8DFE   515 0001:002D8E08   520 0001:002D8E0C
+   522 0001:002D8E3F   523 0001:002D8E52   525 0001:002D8E65   526 0001:002D8E7B
+   527 0001:002D8E8F   528 0001:002D8E95   529 0001:002D8EA7   521 0001:002D8EA8
+   530 0001:002D8EAD   535 0001:002D8ED8   536 0001:002D8EF2   537 0001:002D8EFD
+   541 0001:002D8EFF   542 0001:002D8F0B   543 0001:002D8F18   544 0001:002D8F22
+   545 0001:002D8F31   546 0001:002D8F3D   548 0001:002D8F40   549 0001:002D8F4A
+   550 0001:002D8F54   551 0001:002D8F7C   552 0001:002D8F86   553 0001:002D8F90
+   556 0001:002D8F99   561 0001:002D8FC4   562 0001:002D8FEF   563 0001:002D9001
+   565 0001:002D9003   566 0001:002D9020   567 0001:002D905A   568 0001:002D9078
+   569 0001:002D9096   570 0001:002D90AC   571 0001:002D90CC   572 0001:002D90EA
+   573 0001:002D9108   574 0001:002D9126   575 0001:002D914B   576 0001:002D9161
+   577 0001:002D917F   578 0001:002D91E3   579 0001:002D9201   580 0001:002D921F
+   581 0001:002D923D   583 0001:002D9263   584 0001:002D9265   589 0001:002D92C8
+   590 0001:002D92F3   591 0001:002D9305   592 0001:002D9351   594 0001:002D9353
+   595 0001:002D9370   596 0001:002D93AA   597 0001:002D93C8   598 0001:002D93E6
+   599 0001:002D93FC   600 0001:002D941A   601 0001:002D943A   602 0001:002D9458
+   603 0001:002D947D   604 0001:002D9493   605 0001:002D94B1   606 0001:002D9515
+   607 0001:002D9533   608 0001:002D9551   609 0001:002D956F   610 0001:002D958D
+   612 0001:002D95B3   613 0001:002D95B5   618 0001:002D9638   619 0001:002D9663
+   620 0001:002D9675   622 0001:002D9677   623 0001:002D9694   624 0001:002D96CE
+   625 0001:002D96EC   626 0001:002D970A   627 0001:002D9720   628 0001:002D973E
+   629 0001:002D975C   630 0001:002D97C0   631 0001:002D97DE   632 0001:002D9800
+   633 0001:002D9830   634 0001:002D9850   635 0001:002D986E   636 0001:002D988C
+   637 0001:002D98B1   638 0001:002D98C7   639 0001:002D98E5   641 0001:002D990B
+   642 0001:002D990D   645 0001:002D99B2
+
+Line numbers for fNoteSTStop(fNoteSTStop.pas) segment .text
+
+    31 0001:002D9B78    32 0001:002D9B80    36 0001:002D9B84    37 0001:002D9B8E
+    39 0001:002D9BBD
+
+Line numbers for fARTAllgy(fARTAllgy.pas) segment .text
+
+   171 0001:002DA378   172 0001:002DA390   173 0001:002DA398   174 0001:002DA3BA
+   176 0001:002DA3E0   177 0001:002DA3F3   178 0001:002DA416   182 0001:002DA4B0
+   183 0001:002DA4B9   189 0001:002DA4BC   190 0001:002DA4E0   191 0001:002DA4E6
+   192 0001:002DA4F9   193 0001:002DA4FF   194 0001:002DA503   195 0001:002DA51A
+   196 0001:002DA52A   198 0001:002DA538   199 0001:002DA540   200 0001:002DA54A
+   201 0001:002DA551   203 0001:002DA55A   204 0001:002DA567   205 0001:002DA572
+   206 0001:002DA580   207 0001:002DA58A   208 0001:002DA5B4   209 0001:002DA5BE
+   211 0001:002DA5CB   213 0001:002DA5D4   214 0001:002DA5E1   215 0001:002DA5EC
+   216 0001:002DA5FA   217 0001:002DA604   218 0001:002DA62E   219 0001:002DA638
+   221 0001:002DA645   223 0001:002DA652   224 0001:002DA65F   225 0001:002DA66C
+   226 0001:002DA684   228 0001:002DA6AC   229 0001:002DA6BF   230 0001:002DA6C7
+   232 0001:002DA6D1   234 0001:002DA6D7   235 0001:002DA6E8   236 0001:002DA6FE
+   240 0001:002DA72A   241 0001:002DA72E   242 0001:002DA736   244 0001:002DA740
+   245 0001:002DA75A   246 0001:002DA761   248 0001:002DA772   249 0001:002DA779
+   251 0001:002DA782   252 0001:002DA786   253 0001:002DA78E   255 0001:002DA795
+   256 0001:002DA7A0   258 0001:002DA7BA   259 0001:002DA7C1   260 0001:002DA7C8
+   261 0001:002DA7CF   262 0001:002DA7D6   264 0001:002DA7E6   267 0001:002DA900
+   269 0001:002DA909   270 0001:002DA910   271 0001:002DA917   272 0001:002DA928
+   273 0001:002DA939   274 0001:002DA94A   277 0001:002DA958   278 0001:002DA967
+   279 0001:002DA976   280 0001:002DA985   281 0001:002DA994   282 0001:002DA9A3
+   283 0001:002DA9B5   285 0001:002DA9C4   286 0001:002DA9D5   287 0001:002DA9DF
+   288 0001:002DA9E6   289 0001:002DA9F6   290 0001:002DAA00   291 0001:002DAA1C
+   292 0001:002DAA27   293 0001:002DAA34   294 0001:002DAA49   295 0001:002DAA61
+   296 0001:002DAA72   297 0001:002DAA7C   298 0001:002DAA83   300 0001:002DAA8C
+   303 0001:002DAA93   309 0001:002DAAE8   310 0001:002DAB0A   319 0001:002DAB11
+   320 0001:002DAB18   321 0001:002DAB28   322 0001:002DAB36   323 0001:002DAB52
+   324 0001:002DAB6E   325 0001:002DAB8A   326 0001:002DAB9F   327 0001:002DABAD
+   328 0001:002DABBA   329 0001:002DABC8   330 0001:002DABD5   331 0001:002DABE2
+   332 0001:002DABEF   333 0001:002DABFC   334 0001:002DAC09   335 0001:002DAC17
+   336 0001:002DAC25   337 0001:002DAC5B   338 0001:002DAC91   339 0001:002DACB4
+   340 0001:002DACD7   341 0001:002DACFA   342 0001:002DAD0F   343 0001:002DAD25
+   344 0001:002DAD4C   345 0001:002DAD7B   347 0001:002DAD85   349 0001:002DAD97
+   350 0001:002DADF0   353 0001:002DADFF   354 0001:002DAE0C   359 0001:002DAE1B
+   360 0001:002DAE28   362 0001:002DAE35   364 0001:002DAE5C   365 0001:002DAE68
+   366 0001:002DAE74   367 0001:002DAE89   369 0001:002DAEAB   372 0001:002DAEBD
+   374 0001:002DAEC3   375 0001:002DAED1   376 0001:002DAEE4   380 0001:002DAF07
+   381 0001:002DAF0E   382 0001:002DAF15   384 0001:002DAF17   386 0001:002DAF2E
+   387 0001:002DAF35   388 0001:002DAF3C   389 0001:002DAF49   392 0001:002DB154
+   393 0001:002DB17C   394 0001:002DB189   396 0001:002DB18F   397 0001:002DB1A2
+   399 0001:002DB1A7   401 0001:002DB1B4   402 0001:002DB1BB   403 0001:002DB1D0
+   404 0001:002DB1DD   405 0001:002DB1ED   406 0001:002DB214   407 0001:002DB224
+   408 0001:002DB22D   409 0001:002DB24E   410 0001:002DB26F   411 0001:002DB284
+   412 0001:002DB295   413 0001:002DB2A3   415 0001:002DB2B4   416 0001:002DB2CF
+   417 0001:002DB2EA   418 0001:002DB303   419 0001:002DB32F   420 0001:002DB33E
+   422 0001:002DB350   423 0001:002DB35E   424 0001:002DB375   425 0001:002DB392
+   426 0001:002DB3B6   427 0001:002DB3D3   428 0001:002DB3DC   429 0001:002DB3E5
+   430 0001:002DB3EC   432 0001:002DB3F7   434 0001:002DB400   435 0001:002DB407
+   436 0001:002DB410   437 0001:002DB419   439 0001:002DB420   446 0001:002DB4A0
+   447 0001:002DB4A7   448 0001:002DB4D8   449 0001:002DB4EB   451 0001:002DB4FC
+   452 0001:002DB520   453 0001:002DB528   454 0001:002DB53B   456 0001:002DB551
+   457 0001:002DB573   458 0001:002DB5D9   459 0001:002DB5E5   460 0001:002DB5F4
+   461 0001:002DB600   463 0001:002DB613   464 0001:002DB633   465 0001:002DB665
+   466 0001:002DB671   467 0001:002DB694   469 0001:002DB6A0   470 0001:002DB6D3
+   471 0001:002DB6D9   472 0001:002DB717   474 0001:002DB725   476 0001:002DB79A
+   479 0001:002DB7D5   481 0001:002DB7F3   482 0001:002DB818   484 0001:002DB827
+   485 0001:002DB843   489 0001:002DB857   490 0001:002DB863   493 0001:002DB874
+   494 0001:002DB883   496 0001:002DB89D   497 0001:002DB8C2   500 0001:002DB8E5
+   501 0001:002DB8F1   504 0001:002DB902   506 0001:002DB920   507 0001:002DB945
+   509 0001:002DB954   510 0001:002DB970   514 0001:002DB984   515 0001:002DB990
+   520 0001:002DB9A3   521 0001:002DB9AF   524 0001:002DB9C0   528 0001:002DBE08
+   530 0001:002DBE11   531 0001:002DBE28   535 0001:002DBE30   537 0001:002DBE39
+   538 0001:002DBE50   541 0001:002DBE58   543 0001:002DBE5B   544 0001:002DBE62
+   545 0001:002DBE70   547 0001:002DBE88   548 0001:002DBE95   549 0001:002DBEA2
+   550 0001:002DBEAF   551 0001:002DBEBC   552 0001:002DBEC9   555 0001:002DBEE2
+   556 0001:002DBEEF   557 0001:002DBEFC   558 0001:002DBF09   559 0001:002DBF16
+   562 0001:002DBF23   563 0001:002DBF2A   564 0001:002DBF33   571 0001:002DBF38
+   573 0001:002DBF5B   574 0001:002DBF68   577 0001:002DBF71   578 0001:002DBF8A
+   580 0001:002DBF9C   582 0001:002DBFB7   583 0001:002DBFCA   585 0001:002DBFE1
+   587 0001:002DBFED   589 0001:002DBFFC   590 0001:002DC00F   592 0001:002DC01C
+   593 0001:002DC02E   594 0001:002DC047   598 0001:002DC072   599 0001:002DC08C
+   601 0001:002DC0E9   602 0001:002DC130   603 0001:002DC141   604 0001:002DC15F
+   605 0001:002DC183   607 0001:002DC1B6   609 0001:002DC1EF   610 0001:002DC235
+   611 0001:002DC23B   612 0001:002DC25E   613 0001:002DC2D3   614 0001:002DC2D9
+   615 0001:002DC30C   616 0001:002DC38D   617 0001:002DC393   619 0001:002DC3A8
+   620 0001:002DC3BB   622 0001:002DC3D8   623 0001:002DC3E2   624 0001:002DC3FB
+   623 0001:002DC421   625 0001:002DC424   626 0001:002DC42D   627 0001:002DC449
+   626 0001:002DC472   628 0001:002DC475   630 0001:002DC484   631 0001:002DC497
+   632 0001:002DC49D   634 0001:002DC4B2   635 0001:002DC4C5   638 0001:002DC4E2
+   639 0001:002DC4EC   640 0001:002DC4FE   641 0001:002DC523   642 0001:002DC52D
+   643 0001:002DC53F   644 0001:002DC564   645 0001:002DC56A   647 0001:002DC575
+   648 0001:002DC579   650 0001:002DC58A   654 0001:002DC599   655 0001:002DC59F
+   656 0001:002DC5E4   658 0001:002DC603   659 0001:002DC60D   660 0001:002DC613
+   661 0001:002DC61E   664 0001:002DC62F   667 0001:002DC77C   669 0001:002DC79A
+   671 0001:002DC7A0   673 0001:002DC7B4   675 0001:002DC7E7   676 0001:002DC81B
+   679 0001:002DC84D   681 0001:002DC854   683 0001:002DC85B   684 0001:002DC864
+   689 0001:002DC89C   691 0001:002DC8A3   692 0001:002DC8B2   693 0001:002DC8C0
+   694 0001:002DC8CE   695 0001:002DC8DB   696 0001:002DC8E9   698 0001:002DC8FF
+   700 0001:002DC90F   705 0001:002DC914   707 0001:002DC92E   708 0001:002DC943
+   709 0001:002DC965   710 0001:002DC977   712 0001:002DC97D   713 0001:002DC98B
+   714 0001:002DC99E   718 0001:002DC9C1   719 0001:002DC9C8   721 0001:002DC9CA
+   722 0001:002DC9D7   725 0001:002DCA0C   727 0001:002DCA2F   728 0001:002DCA42
+   729 0001:002DCA49   730 0001:002DCA73   732 0001:002DCA79   733 0001:002DCAAB
+   735 0001:002DCACE   736 0001:002DCAD5   737 0001:002DCADE   740 0001:002DCB20
+   741 0001:002DCB32   742 0001:002DCB3A   743 0001:002DCB42   744 0001:002DCB4A
+   745 0001:002DCB52   746 0001:002DCB5A   747 0001:002DCB65   748 0001:002DCB6D
+   749 0001:002DCB75   750 0001:002DCB7D   751 0001:002DCB85   752 0001:002DCB8D
+   753 0001:002DCB95   754 0001:002DCBA0   755 0001:002DCBA8   756 0001:002DCBB2
+   757 0001:002DCBBC   758 0001:002DCBC6   759 0001:002DCBCF   762 0001:002DCBD4
+   764 0001:002DCBD8   765 0001:002DCBDF   766 0001:002DCBF5   767 0001:002DCC01
+   768 0001:002DCC08   769 0001:002DCC11   772 0001:002DCC14   776 0001:002DCC1A
+   777 0001:002DCC27   778 0001:002DCC39   780 0001:002DCC4E   781 0001:002DCC5B
+   782 0001:002DCC68   783 0001:002DCC75   784 0001:002DCC82   785 0001:002DCC8F
+   786 0001:002DCC9C   787 0001:002DCCA9   788 0001:002DCCB6   789 0001:002DCCC3
+   790 0001:002DCCD0   791 0001:002DCCDD   792 0001:002DCCEA   793 0001:002DCCF7
+   794 0001:002DCD04   795 0001:002DCD11   796 0001:002DCD1E   797 0001:002DCD2B
+   798 0001:002DCD38   799 0001:002DCD45   807 0001:002DCD48   808 0001:002DCD63
+   810 0001:002DCD72   811 0001:002DCD7B   813 0001:002DCD93   814 0001:002DCD9A
+   815 0001:002DCDA1   817 0001:002DCDA6   818 0001:002DCDB3   819 0001:002DCDDC
+   820 0001:002DCDE0   823 0001:002DCE14   824 0001:002DCE32   826 0001:002DCE3E
+   828 0001:002DCE45   833 0001:002DCF38   834 0001:002DCF4E   835 0001:002DCF50
+   836 0001:002DCF58   838 0001:002DCF68   839 0001:002DCF87   841 0001:002DCF89
+   846 0001:002DD028   848 0001:002DD03B   849 0001:002DD068   855 0001:002DD0C8
+   857 0001:002DD0E4   858 0001:002DD0EB   860 0001:002DD0F1   861 0001:002DD116
+   862 0001:002DD123   864 0001:002DD12C   866 0001:002DD157   867 0001:002DD169
+   868 0001:002DD17D   871 0001:002DD18A   872 0001:002DD1A2   873 0001:002DD1B0
+   875 0001:002DD1D9   876 0001:002DD1E0   877 0001:002DD1ED   882 0001:002DD228
+   883 0001:002DD239   889 0001:002DD23C   891 0001:002DD25F   892 0001:002DD266
+   894 0001:002DD26C   895 0001:002DD291   896 0001:002DD2CB   897 0001:002DD2DA
+   899 0001:002DD2ED   900 0001:002DD304   901 0001:002DD317   902 0001:002DD334
+   905 0001:002DD34A   906 0001:002DD365   908 0001:002DD3D3   911 0001:002DD3EE
+   912 0001:002DD3F5   913 0001:002DD402   921 0001:002DD4BC   923 0001:002DD4DE
+   924 0001:002DD52E   926 0001:002DD586   928 0001:002DD59A   929 0001:002DD5AD
+   931 0001:002DD5B2   932 0001:002DD5B9   934 0001:002DD5CB   935 0001:002DD5D1
+   936 0001:002DD605   938 0001:002DD688   939 0001:002DD724   941 0001:002DD72A
+   942 0001:002DD739   951 0001:002DD768   952 0001:002DD76F   953 0001:002DD778
+   957 0001:002DD888   959 0001:002DD88B   960 0001:002DD898   965 0001:002DD89C
+   966 0001:002DD8A3   967 0001:002DD8A8   974 0001:002DD8AC   975 0001:002DD8BD
+   982 0001:002DD8E0   983 0001:002DD8F1   986 0001:002DD918   988 0001:002DD91C
+   990 0001:002DD922   991 0001:002DD93B   994 0001:002DD953   998 0001:002DD958
+  1000 0001:002DD961  1001 0001:002DD978  1006 0001:002DD980  1007 0001:002DD9BB
+  1008 0001:002DD9C8  1009 0001:002DD9DB  1011 0001:002DD9E4  1012 0001:002DD9EB
+  1014 0001:002DD9F0  1017 0001:002DD9F7  1018 0001:002DDA09  1019 0001:002DDA24
+  1021 0001:002DDA2D  1022 0001:002DDA42  1023 0001:002DDA5A  1024 0001:002DDA6D
+  1028 0001:002DDA86  1029 0001:002DDA94  1030 0001:002DDAA5  1031 0001:002DDAB8
+  1033 0001:002DDAC9  1034 0001:002DDADB  1035 0001:002DDAED  1036 0001:002DDAFF
+  1037 0001:002DDB11  1039 0001:002DDB23  1040 0001:002DDB2A  1041 0001:002DDB37
+  1050 0001:002DDB64  1051 0001:002DDB7C  1052 0001:002DDB8E  1053 0001:002DDBA3
+  1054 0001:002DDBB0  1055 0001:002DDBB7  1056 0001:002DDBCC  1058 0001:002DDBD9
+  1059 0001:002DDC0E  1061 0001:002DDC17  1062 0001:002DDC24  1063 0001:002DDC34
+  1064 0001:002DDC41  1065 0001:002DDC51  1069 0001:002DDC60  1070 0001:002DDC6D
+  1071 0001:002DDC7D  1072 0001:002DDC8A  1073 0001:002DDC9A  1076 0001:002DDCA7
+  1077 0001:002DDCAE  1078 0001:002DDCBB  1085 0001:002DDD60  1086 0001:002DDD67
+  1087 0001:002DDD6E  1088 0001:002DDD75  1089 0001:002DDD86  1090 0001:002DDD89
+  1096 0001:002DDD8C  1097 0001:002DDD93  1113 0001:002DDD94  1114 0001:002DDDA7
+
+Line numbers for fARTAllgy(fARTAllgy.pas) segment .itext
+
+  1116 0002:000017BC
+
+Line numbers for fAllgyBox(fAllgyBox.pas) segment .text
+
+    51 0001:002DE288    52 0001:002DE2C1    53 0001:002DE2D8    56 0001:002DE2E6
+    57 0001:002DE2EB    58 0001:002DE309    60 0001:002DE321    61 0001:002DE33C
+    62 0001:002DE357    63 0001:002DE366    64 0001:002DE396    65 0001:002DE399
+    57 0001:002DE39A    66 0001:002DE3A1    67 0001:002DE3A8    69 0001:002DE3BA
+    70 0001:002DE3DE    71 0001:002DE3E6    67 0001:002DE3E7    72 0001:002DE3EA
+    73 0001:002DE3F4    74 0001:002DE41C    75 0001:002DE42A    76 0001:002DE44E
+    77 0001:002DE46E    78 0001:002DE479    79 0001:002DE483    80 0001:002DE48E
+    81 0001:002DE496    82 0001:002DE4A1    85 0001:002DE4A9    86 0001:002DE4CC
+    89 0001:002DE4EA    90 0001:002DE539    91 0001:002DE563    92 0001:002DE576
+    93 0001:002DE594    95 0001:002DE5B2    96 0001:002DE5CC    97 0001:002DE5D7
+    96 0001:002DE5F9    98 0001:002DE5FC    99 0001:002DE60D   100 0001:002DE63F
+   101 0001:002DE64A   102 0001:002DE65D   103 0001:002DE66F   104 0001:002DE67F
+   105 0001:002DE697   108 0001:002DE6BE   109 0001:002DE6C8   111 0001:002DE6D2
+   114 0001:002DE730   115 0001:002DE75A   116 0001:002DE76B   119 0001:002DE779
+   120 0001:002DE787   121 0001:002DE7B0   124 0001:002DE7CA   126 0001:002DE7DC
+   131 0001:002DE80C   133 0001:002DE80F   134 0001:002DE818   135 0001:002DE823
+   136 0001:002DE827   139 0001:002DE830   140 0001:002DE83C   142 0001:002DE843
+   147 0001:002DE848   149 0001:002DE84B   150 0001:002DE854   151 0001:002DE863
+   152 0001:002DE86E   153 0001:002DE877   158 0001:002DE87C   160 0001:002DE87F
+   161 0001:002DE888   162 0001:002DE893   164 0001:002DE897   165 0001:002DE8A3
+   167 0001:002DE8AC   168 0001:002DE8B5   171 0001:002DE8B8   172 0001:002DE8BB
+   173 0001:002DE8C9   174 0001:002DE8DF   176 0001:002DE90F
+
+Line numbers for fVitals(fVitals.pas) segment .text
+
+   141 0001:002DEEA4   142 0001:002DEEAB   143 0001:002DEEC2   144 0001:002DEED0
+   147 0001:002DEED8   148 0001:002DEF05   150 0001:002DEF18   151 0001:002DEF1D
+   152 0001:002DEF2D   156 0001:002DEF45   158 0001:002DEF55   161 0001:002DEF5C
+   162 0001:002DEF7B   163 0001:002DEF82   164 0001:002DEF8F   166 0001:002DEFBD
+   167 0001:002DEFF4   174 0001:002DF034   181 0001:002DF05E   182 0001:002DF06B
+   183 0001:002DF078   184 0001:002DF098   185 0001:002DF0A2   187 0001:002DF0B8
+   189 0001:002DF0C6   190 0001:002DF0E0   191 0001:002DF0E8   199 0001:002DF1D3
+   202 0001:002DF202   203 0001:002DF22F   204 0001:002DF233   206 0001:002DF23D
+   207 0001:002DF24A   211 0001:002DF253   269 0001:002DF3AC   270 0001:002DF3D1
+   271 0001:002DF3FC   272 0001:002DF427   273 0001:002DF44F   274 0001:002DF45A
+   276 0001:002DF463   277 0001:002DF483   278 0001:002DF4A4   279 0001:002DF4B1
+   280 0001:002DF4BB   281 0001:002DF4C8   282 0001:002DF4E1   283 0001:002DF4F2
+   282 0001:002DF502   283 0001:002DF505   281 0001:002DF508   284 0001:002DF50D
+   286 0001:002DF513   287 0001:002DF527   288 0001:002DF53D   287 0001:002DF54F
+   290 0001:002DF554   292 0001:002DF566   293 0001:002DF5B6   290 0001:002DF5B7
+   294 0001:002DF5BC   296 0001:002DF5D2   297 0001:002DF5FC   298 0001:002DF627
+   299 0001:002DF659   294 0001:002DF65A   301 0001:002DF663   304 0001:002DF6B8
+   305 0001:002DF6C7   306 0001:002DF710   307 0001:002DF71D   310 0001:002DF744
+   311 0001:002DF750   312 0001:002DF79B   313 0001:002DF7A8   320 0001:002DF7CC
+   321 0001:002DF7EE   323 0001:002DF81F   325 0001:002DF825   327 0001:002DF830
+   331 0001:002DF87D   334 0001:002DF88E   335 0001:002DF8B0   337 0001:002DF8C9
+   338 0001:002DF8D7   339 0001:002DF8E8   340 0001:002DF8EE   342 0001:002DF8FF
+   345 0001:002DF917   347 0001:002DF928   348 0001:002DF95C   349 0001:002DF96C
+   350 0001:002DF979   351 0001:002DF989   352 0001:002DF992   353 0001:002DF9A5
+   354 0001:002DF9B5   355 0001:002DF9C4   357 0001:002DF9D5   358 0001:002DF9FC
+   360 0001:002DFA1C   361 0001:002DFA2B   364 0001:002DFA3D   367 0001:002DFAB0
+   368 0001:002DFAB3   369 0001:002DFAC4   370 0001:002DFAF9   371 0001:002DFB09
+   372 0001:002DFB22   376 0001:002DFB24   377 0001:002DFB2E   382 0001:002DFB30
+   384 0001:002DFB59   385 0001:002DFB69   386 0001:002DFB90   387 0001:002DFBDB
+   388 0001:002DFC2A   389 0001:002DFCB2   390 0001:002DFCBE   393 0001:002DFD38
+   394 0001:002DFD3C   396 0001:002DFD42   397 0001:002DFD5A   399 0001:002DFD6E
+   407 0001:002DFD74   408 0001:002DFD98   409 0001:002DFD9A   410 0001:002DFDA9
+   411 0001:002DFDB8   414 0001:002DFDE2   415 0001:002DFDF5   416 0001:002DFE08
+   418 0001:002DFE18   419 0001:002DFE27   420 0001:002DFE34   424 0001:002DFE47
+   425 0001:002DFE56   428 0001:002DFE60   435 0001:002DFE98   438 0001:002DFECC
+   439 0001:002DFED4   440 0001:002DFEE7   441 0001:002DFF06   442 0001:002DFF3C
+   443 0001:002DFF72   444 0001:002DFFA8   445 0001:002DFFAE   448 0001:002DFFC0
+   449 0001:002DFFCD   450 0001:002DFFF7   452 0001:002E0001   453 0001:002E0015
+   455 0001:002E004E   456 0001:002E0059   457 0001:002E005B   452 0001:002E005E
+   458 0001:002E0066   459 0001:002E0074   460 0001:002E008E   461 0001:002E00A9
+   462 0001:002E00C0   463 0001:002E00E7   464 0001:002E00F2   465 0001:002E00FF
+   467 0001:002E0112   468 0001:002E011F   469 0001:002E013D   471 0001:002E017A
+   472 0001:002E0187   473 0001:002E01A5   474 0001:002E01C3   475 0001:002E01E9
+   476 0001:002E01FC   477 0001:002E020F   478 0001:002E0222   480 0001:002E0242
+   481 0001:002E024D   482 0001:002E0259   483 0001:002E0265   484 0001:002E02D5
+   485 0001:002E02F6   486 0001:002E0317   487 0001:002E031D   489 0001:002E0329
+   490 0001:002E0335   491 0001:002E0356   494 0001:002E0363   468 0001:002E0366
+   495 0001:002E0372   496 0001:002E0382   500 0001:002E0397   501 0001:002E03B5
+   503 0001:002E03F2   504 0001:002E03FF   505 0001:002E040C   506 0001:002E0432
+   508 0001:002E0442   509 0001:002E044D   510 0001:002E0459   511 0001:002E04C9
+   512 0001:002E04EA   514 0001:002E04F0   500 0001:002E04F3   515 0001:002E04FF
+   517 0001:002E0533   518 0001:002E0568   520 0001:002E059D   522 0001:002E05BB
+   523 0001:002E05D3   524 0001:002E05DF   525 0001:002E05EA   526 0001:002E05FD
+   527 0001:002E0614   531 0001:002E062D   533 0001:002E0640   535 0001:002E0656
+   540 0001:002E06DC   541 0001:002E0709   542 0001:002E0732   543 0001:002E075C
+   544 0001:002E0787   545 0001:002E07B4   549 0001:002E07E0   550 0001:002E07F7
+   551 0001:002E0809   553 0001:002E081A   554 0001:002E0841   556 0001:002E0861
+   557 0001:002E0870   560 0001:002E0882   563 0001:002E08A8   564 0001:002E08AC
+   565 0001:002E08C6   566 0001:002E08DD   568 0001:002E08EF   569 0001:002E08FE
+   571 0001:002E091E   574 0001:002E0924   575 0001:002E0927   576 0001:002E0942
+   579 0001:002E0944   580 0001:002E0948   581 0001:002E0966   582 0001:002E098A
+   583 0001:002E09AE   587 0001:002E09B4   588 0001:002E09BB   594 0001:002E09BC
+   595 0001:002E09BF   596 0001:002E09D3   597 0001:002E09E7   598 0001:002E09FB
+   599 0001:002E0A0F   602 0001:002E0A14   603 0001:002E0A1A   604 0001:002E0A30
+   608 0001:002E0A44   610 0001:002E0A54   611 0001:002E0A61   613 0001:002E0A6D
+   615 0001:002E0A8D   616 0001:002E0AA0   619 0001:002E0AA3   622 0001:002E0AB5
+   623 0001:002E0AC5   624 0001:002E0AD3   625 0001:002E0AEB   627 0001:002E0AFA
+   629 0001:002E0B10   631 0001:002E0B24   635 0001:002E0B9C   636 0001:002E0BAF
+   639 0001:002E0BB0   640 0001:002E0BB4   641 0001:002E0BD3   642 0001:002E0BDC
+   645 0001:002E0BE0   646 0001:002E0BE4   647 0001:002E0C03   648 0001:002E0C0C
+   651 0001:002E0C10   652 0001:002E0C14   653 0001:002E0C33   654 0001:002E0C3C
+   657 0001:002E0C40   658 0001:002E0C43   659 0001:002E0C52   663 0001:002E0C54
+   664 0001:002E0C5F   671 0001:002E0C60   673 0001:002E0C82   674 0001:002E0C92
+   676 0001:002E0CA2   677 0001:002E0CD2   678 0001:002E0D02   679 0001:002E0D11
+   680 0001:002E0D20   681 0001:002E0D3C   682 0001:002E0D51   683 0001:002E0D98
+   687 0001:002E0E19   688 0001:002E0E2E   689 0001:002E0E49   690 0001:002E0E58
+   691 0001:002E0E66   692 0001:002E0E91   693 0001:002E0EA6   695 0001:002E0EB2
+   696 0001:002E0EDA   698 0001:002E0F36   701 0001:002E0F46   702 0001:002E0F54
+   703 0001:002E0F5B   708 0001:002E1070   709 0001:002E1093   710 0001:002E10A3
+   711 0001:002E10BB   712 0001:002E10FD   713 0001:002E1107   714 0001:002E1116
+   718 0001:002E1184   719 0001:002E118A   720 0001:002E119A   721 0001:002E11A5
+   725 0001:002E11AC   726 0001:002E11B5   727 0001:002E11CA   729 0001:002E11E1
+   730 0001:002E1209   731 0001:002E1214   732 0001:002E1222   735 0001:002E1288
+   736 0001:002E128B   737 0001:002E12A6   738 0001:002E12C1   739 0001:002E12DC
+   740 0001:002E130B   742 0001:002E131A   743 0001:002E1331   747 0001:002E1340
+   748 0001:002E1350   750 0001:002E135D   755 0001:002E1374   756 0001:002E138F
+   759 0001:002E13E5   760 0001:002E1402   767 0001:002E1438   768 0001:002E1466
+   769 0001:002E1488   770 0001:002E14B4   771 0001:002E14D2   772 0001:002E14DE
+   773 0001:002E14F2   774 0001:002E151E   776 0001:002E153F   777 0001:002E155D
+   778 0001:002E1569   782 0001:002E1588   783 0001:002E15A6   784 0001:002E15B2
+   786 0001:002E15C9   787 0001:002E15D7   788 0001:002E15E8   790 0001:002E15F4
+   791 0001:002E15FF   792 0001:002E160C   794 0001:002E161A   795 0001:002E1625
+   799 0001:002E1694   800 0001:002E1697   802 0001:002E169D   803 0001:002E16A2
+   805 0001:002E16A7   807 0001:002E16D9
+
+Line numbers for fEncVitals(Encounter\fEncVitals.pas) segment .text
+
+   121 0001:002E1D1C   122 0001:002E1D3A   123 0001:002E1D3C   126 0001:002E1DC8
+   127 0001:002E1DCA   130 0001:002E1DFC   131 0001:002E1E1B   132 0001:002E1E33
+   133 0001:002E1E4B   134 0001:002E1E63   135 0001:002E1E7B   136 0001:002E1E93
+   137 0001:002E1EAB   138 0001:002E1EC3   139 0001:002E1EDB   140 0001:002E1EF3
+   141 0001:002E1F0B   142 0001:002E1F23   143 0001:002E1F3B   144 0001:002E1F53
+   145 0001:002E1F6B   146 0001:002E1F83   147 0001:002E1F9B   152 0001:002E1FB3
+   154 0001:002E1FBA   155 0001:002E1FC8   156 0001:002E1FD6   157 0001:002E1FF9
+   158 0001:002E201C   160 0001:002E204C   163 0001:002E205B   164 0001:002E2072
+   165 0001:002E20A3   166 0001:002E20BA   167 0001:002E20C2   173 0001:002E211C
+   174 0001:002E213F   176 0001:002E2157   177 0001:002E2160   179 0001:002E2176
+   181 0001:002E21A8   182 0001:002E21E8   185 0001:002E2234   187 0001:002E2262
+   188 0001:002E2292   191 0001:002E22DE   193 0001:002E230C   194 0001:002E233C
+   197 0001:002E2388   199 0001:002E23B6   200 0001:002E23E6   203 0001:002E2432
+   205 0001:002E246A   206 0001:002E24BC   209 0001:002E251A   211 0001:002E2558
+   212 0001:002E25AA   216 0001:002E2608   218 0001:002E2646   219 0001:002E2682
+   222 0001:002E26E0   177 0001:002E26E1   223 0001:002E26EA   227 0001:002E2780
+   228 0001:002E2784   231 0001:002E2798   234 0001:002E27C7   235 0001:002E27D6
+   236 0001:002E27EF   237 0001:002E27FE   238 0001:002E2817   239 0001:002E2826
+   241 0001:002E283F   244 0001:002E2860   248 0001:002E2864   249 0001:002E287D
+   250 0001:002E2895   251 0001:002E28A2   257 0001:002E28C4   258 0001:002E28E5
+   259 0001:002E28F4   260 0001:002E2902   261 0001:002E290A   265 0001:002E29F4
+   268 0001:002E2A54   270 0001:002E2A57   271 0001:002E2A66   272 0001:002E2A6D
+   281 0001:002E2A70   282 0001:002E2A8F   284 0001:002E2A9C   285 0001:002E2AA3
+   286 0001:002E2AB1   288 0001:002E2AC6   289 0001:002E2ACA   292 0001:002E2ADA
+   295 0001:002E2ADE   297 0001:002E2AED   298 0001:002E2B11   300 0001:002E2B20
+   301 0001:002E2B24   302 0001:002E2B2E   305 0001:002E2B4C   293 0001:002E2B4D
+   307 0001:002E2B76   290 0001:002E2B8E   309 0001:002E2BA4   311 0001:002E2BAA
+   315 0001:002E2BC1   317 0001:002E2BD0   323 0001:002E2C08   324 0001:002E2C0D
+   329 0001:002E2C10   330 0001:002E2C15   333 0001:002E2C18   335 0001:002E2C1B
+   336 0001:002E2C31   337 0001:002E2C3E   340 0001:002E2C50   342 0001:002E2C54
+   344 0001:002E2C65   345 0001:002E2C7B   347 0001:002E2C88   350 0001:002E2C9C
+   352 0001:002E2C9F   353 0001:002E2CB5   354 0001:002E2CC2   357 0001:002E2CD4
+   359 0001:002E2CD7   360 0001:002E2CED   361 0001:002E2CFA   364 0001:002E2D0C
+   366 0001:002E2D23   368 0001:002E2D34   369 0001:002E2D52   371 0001:002E2D5F
+   374 0001:002E2D84   376 0001:002E2D88   378 0001:002E2D99   379 0001:002E2DAF
+   381 0001:002E2DBC   385 0001:002E2DD0   387 0001:002E2DD3   388 0001:002E2DDA
+   390 0001:002E2DEA   391 0001:002E2DFC   393 0001:002E2E0E   399 0001:002E2E20
+   401 0001:002E2E26   402 0001:002E2E31   405 0001:002E2E3C   407 0001:002E2E46
+   408 0001:002E2E53   411 0001:002E2E5C   412 0001:002E2E65   418 0001:002E2E68
+   421 0001:002E2E77   422 0001:002E2E85   424 0001:002E2E9E   425 0001:002E2EAE
+   427 0001:002E2EC6   433 0001:002E2ED0   437 0001:002E2EED   438 0001:002E2EFA
+   439 0001:002E2F1A   440 0001:002E2F24   441 0001:002E2F3A   442 0001:002E2F44
+   444 0001:002E2F73   447 0001:002E2F7A   448 0001:002E2F83   453 0001:002E301C
+   455 0001:002E302E   456 0001:002E3035   460 0001:002E303A   467 0001:002E303C
+   468 0001:002E3041   471 0001:002E3044   472 0001:002E3047   474 0001:002E304E
+   475 0001:002E3062   476 0001:002E3076   477 0001:002E308A   478 0001:002E309E
+   481 0001:002E30A0   483 0001:002E30A4   485 0001:002E30B5   486 0001:002E30CB
+   488 0001:002E30D8   491 0001:002E30EC   493 0001:002E3103   495 0001:002E3114
+   496 0001:002E3132   498 0001:002E313F   501 0001:002E3164   503 0001:002E3168
+   505 0001:002E3179   506 0001:002E318F   508 0001:002E319C   511 0001:002E31B0
+   512 0001:002E31B7   513 0001:002E31C1   514 0001:002E31CF   516 0001:002E31E6
+   518 0001:002E31F8   521 0001:002E31FC   522 0001:002E3215   523 0001:002E3217
+   525 0001:002E3245   527 0001:002E3290   528 0001:002E3294   531 0001:002E32AE
+   532 0001:002E32C7   533 0001:002E32CB   536 0001:002E32D2   539 0001:002E33EC
+   540 0001:002E33EF   541 0001:002E33FC   542 0001:002E3409   543 0001:002E3416
+   544 0001:002E3423   545 0001:002E3430   546 0001:002E343D   547 0001:002E344A
+   556 0001:002E344C   557 0001:002E3477   558 0001:002E3486   559 0001:002E3494
+   560 0001:002E34A4   561 0001:002E34B8   562 0001:002E34CC   563 0001:002E34E6
+   565 0001:002E34FD   566 0001:002E3514   567 0001:002E352D   568 0001:002E3537
+   563 0001:002E353A   569 0001:002E353D   571 0001:002E3553   572 0001:002E356A
+   573 0001:002E3584   574 0001:002E359B   575 0001:002E35A4   576 0001:002E35B1
+   569 0001:002E35B4   577 0001:002E35B7   578 0001:002E35C7   579 0001:002E35CF
+   580 0001:002E35D6   586 0001:002E3600   588 0001:002E361E   589 0001:002E362C
+   590 0001:002E3639   591 0001:002E3653   593 0001:002E365B   605 0001:002E3700
+   606 0001:002E372D   607 0001:002E3731   608 0001:002E3738   615 0001:002E37E8
+   616 0001:002E3802   617 0001:002E3810   618 0001:002E381D   619 0001:002E3837
+   622 0001:002E383B   623 0001:002E3857   624 0001:002E385B   627 0001:002E3866
+   628 0001:002E3893   630 0001:002E3897
+
+Line numbers for fEncVitals(Encounter\fEncVitals.pas) segment .itext
+
+   633 0002:000017C4   634 0002:000017CD   636 0002:000017D7
+
+Line numbers for rPCE(Encounter\rPCE.pas) segment .text
+
+   209 0001:002E394C   210 0001:002E396F   213 0001:002E3990   214 0001:002E3998
+   215 0001:002E39A0   216 0001:002E39A8   217 0001:002E39E7   218 0001:002E39ED
+   220 0001:002E39F9   222 0001:002E3A01   223 0001:002E3A09   230 0001:002E3A48
+   231 0001:002E3A6B   232 0001:002E3A78   233 0001:002E3A87   235 0001:002E3A94
+   236 0001:002E3ACF   241 0001:002E3B24   242 0001:002E3B47   243 0001:002E3B54
+   244 0001:002E3B63   246 0001:002E3B70   247 0001:002E3BA7   248 0001:002E3BBC
+   251 0001:002E3C0C   252 0001:002E3C2B   253 0001:002E3C41   263 0001:002E3C68
+   264 0001:002E3C92   265 0001:002E3C9F   266 0001:002E3CAE   268 0001:002E3CBB
+   269 0001:002E3D07   274 0001:002E3D7C   275 0001:002E3D98   276 0001:002E3DC9
+   285 0001:002E3E04   286 0001:002E3E39   287 0001:002E3E43   290 0001:002E3E61
+   293 0001:002E3E70   295 0001:002E3E7A   298 0001:002E3E8E   299 0001:002E3E9C
+   301 0001:002E3EA6   303 0001:002E3EB0   306 0001:002E3EBC   307 0001:002E3EEB
+   308 0001:002E3F05   310 0001:002E3F0A   311 0001:002E3F21   310 0001:002E3F3F
+   314 0001:002E3F51   317 0001:002E3F61   318 0001:002E3F92   319 0001:002E3FC3
+   320 0001:002E3FE3   321 0001:002E4003   322 0001:002E4023   323 0001:002E4043
+   325 0001:002E4063   326 0001:002E407D   327 0001:002E4097   328 0001:002E40B1
+   329 0001:002E40CB   330 0001:002E40E5   331 0001:002E40FF   332 0001:002E4119
+   334 0001:002E4133   335 0001:002E4172   336 0001:002E41B1   337 0001:002E41F0
+   338 0001:002E422F   339 0001:002E426E   340 0001:002E42AD   341 0001:002E42EC
+   343 0001:002E432B   351 0001:002E4404   352 0001:002E4426   353 0001:002E4438
+   355 0001:002E447B   356 0001:002E449E   357 0001:002E44C8   358 0001:002E4521
+   353 0001:002E4524   359 0001:002E452D   369 0001:002E4584   370 0001:002E45AD
+   371 0001:002E45BE   372 0001:002E462F   373 0001:002E464A   375 0001:002E4684
+   376 0001:002E46A9   377 0001:002E46B1   380 0001:002E46BD   382 0001:002E4768
+   383 0001:002E4773   378 0001:002E4776   385 0001:002E47AA   392 0001:002E47E0
+   393 0001:002E480C   394 0001:002E4821   396 0001:002E483E   397 0001:002E4848
+   398 0001:002E4852   399 0001:002E485A   400 0001:002E4887   402 0001:002E48AD
+   403 0001:002E48C5   404 0001:002E48D6   405 0001:002E48EB   406 0001:002E493E
+   400 0001:002E4941   407 0001:002E494A   408 0001:002E4952   410 0001:002E4964
+   411 0001:002E4971   414 0001:002E49CC   415 0001:002E49E8   417 0001:002E49F2
+   418 0001:002E4A23   420 0001:002E4A2B   421 0001:002E4A33   429 0001:002E4A8C
+   432 0001:002E4AAE   433 0001:002E4AB3   435 0001:002E4AF6   436 0001:002E4B19
+   437 0001:002E4B43   438 0001:002E4B9C   433 0001:002E4B9F   439 0001:002E4BA8
+   449 0001:002E4C00   450 0001:002E4C24   451 0001:002E4C34   452 0001:002E4C3C
+   455 0001:002E4C48   456 0001:002E4C6B   457 0001:002E4C7E   458 0001:002E4CD9
+   459 0001:002E4CDF   461 0001:002E4D04   464 0001:002E4D18   466 0001:002E4D4A
+   467 0001:002E4D5E   469 0001:002E4D6B   472 0001:002E4DC8   474 0001:002E4DD3
+   453 0001:002E4DD6   476 0001:002E4E0A   482 0001:002E4E70   484 0001:002E4E8F
+   485 0001:002E4EAD   486 0001:002E4EC2   487 0001:002E4EF8   490 0001:002E4F0A
+   491 0001:002E4F19   495 0001:002E4F36   497 0001:002E4F6C   498 0001:002E4F9E
+   500 0001:002E5018   501 0001:002E5041   503 0001:002E50B1   504 0001:002E50F7
+   507 0001:002E5185   509 0001:002E5218   491 0001:002E521B   512 0001:002E5224
+   516 0001:002E5232   518 0001:002E5241   520 0001:002E526F   521 0001:002E528B
+   520 0001:002E52B3   524 0001:002E52B8   525 0001:002E52C4   526 0001:002E52D3
+   527 0001:002E52ED   529 0001:002E5309   530 0001:002E532E   527 0001:002E5331
+   534 0001:002E5336   537 0001:002E540C   538 0001:002E5415   539 0001:002E5447
+   543 0001:002E548C   544 0001:002E5495   545 0001:002E54C7   552 0001:002E550C
+   553 0001:002E552E   554 0001:002E5540   556 0001:002E5583   557 0001:002E55A6
+   558 0001:002E55D0   559 0001:002E5629   554 0001:002E562C   560 0001:002E5635
+   566 0001:002E568C   567 0001:002E56B2   568 0001:002E56BA   571 0001:002E56C3
+   572 0001:002E56F3   569 0001:002E56F6   574 0001:002E5726   583 0001:002E5750
+   584 0001:002E5772   585 0001:002E5784   587 0001:002E57C7   588 0001:002E57EA
+   589 0001:002E5814   590 0001:002E586D   585 0001:002E5870   591 0001:002E5879
+   599 0001:002E58D0   600 0001:002E58F4   601 0001:002E58FC   606 0001:002E5908
+   607 0001:002E59DC   602 0001:002E59DF   609 0001:002E5A13   612 0001:002E5A48
+   613 0001:002E5A66   614 0001:002E5A71   615 0001:002E5AAF   620 0001:002E5AD8
+   621 0001:002E5AFF   622 0001:002E5B15   624 0001:002E5B1F   625 0001:002E5B29
+   626 0001:002E5B49   627 0001:002E5B5F   629 0001:002E5B7D   630 0001:002E5B86
+   632 0001:002E5BD2   645 0001:002E5C20   646 0001:002E5C5D   647 0001:002E5C7B
+   648 0001:002E5CA1   650 0001:002E5CAB   651 0001:002E5CD8   652 0001:002E5D19
+   654 0001:002E5D3F   655 0001:002E5D6A   656 0001:002E5D80   657 0001:002E5D86
+   658 0001:002E5DB9   659 0001:002E5DDC   652 0001:002E5DDF   660 0001:002E5DE8
+   662 0001:002E5DF8   663 0001:002E5E08   673 0001:002E5E88   674 0001:002E5EC4
+   675 0001:002E5EDE   676 0001:002E5F18   677 0001:002E5F25   678 0001:002E5F5F
+   680 0001:002E5F6C   681 0001:002E5F7B   683 0001:002E5F89   684 0001:002E5F99
+   686 0001:002E5F9F   687 0001:002E5FB4   688 0001:002E5FC4   689 0001:002E5FCA
+   690 0001:002E5FE0   692 0001:002E5FF0   693 0001:002E5FF6   694 0001:002E6002
+   696 0001:002E6014   697 0001:002E601F   700 0001:002E6031   701 0001:002E6039
+   702 0001:002E603E   703 0001:002E606B   705 0001:002E6080   706 0001:002E60AF
+   708 0001:002E60C6   710 0001:002E60F5   711 0001:002E60FD   713 0001:002E60FF
+   706 0001:002E6102   714 0001:002E6107   716 0001:002E610D   717 0001:002E6118
+   719 0001:002E611B   703 0001:002E611E   720 0001:002E6127   721 0001:002E6134
+   724 0001:002E6179   727 0001:002E6189   728 0001:002E6191   729 0001:002E61B1
+   731 0001:002E61BB   733 0001:002E61C1   734 0001:002E61D1   736 0001:002E61DB
+   737 0001:002E61FD   739 0001:002E6203   740 0001:002E622E   742 0001:002E624D
+   743 0001:002E6258   746 0001:002E625B   748 0001:002E626B   749 0001:002E6275
+   750 0001:002E627D   752 0001:002E629B   754 0001:002E62AC   755 0001:002E62D2
+   756 0001:002E62D8   757 0001:002E62F9   752 0001:002E62FC   758 0001:002E6301
+   761 0001:002E636C   762 0001:002E6394   763 0001:002E63AE   764 0001:002E63D8
+   767 0001:002E6404   768 0001:002E642C   769 0001:002E6446   770 0001:002E6470
+   778 0001:002E649C   779 0001:002E64C8   780 0001:002E64F8   783 0001:002E651E
+   784 0001:002E653F   785 0001:002E6547   786 0001:002E6583   788 0001:002E658A
+   789 0001:002E659B   791 0001:002E65A5   792 0001:002E65AC   794 0001:002E65B0
+   795 0001:002E65C8   797 0001:002E65CE   799 0001:002E6602   800 0001:002E663F
+   803 0001:002E6645   805 0001:002E664B   806 0001:002E665B   808 0001:002E665E
+   809 0001:002E6668   810 0001:002E6676   811 0001:002E668B   812 0001:002E669F
+   813 0001:002E66AD   814 0001:002E66CE   816 0001:002E66D4   817 0001:002E66E4
+   818 0001:002E66F9   819 0001:002E670D   822 0001:002E671D   830 0001:002E6778
+   831 0001:002E67A4   832 0001:002E67D4   835 0001:002E67FA   836 0001:002E681B
+   837 0001:002E6823   838 0001:002E685F   840 0001:002E6866   841 0001:002E6877
+   843 0001:002E6881   844 0001:002E6888   846 0001:002E688C   847 0001:002E68A4
+   849 0001:002E68AA   851 0001:002E68DE   852 0001:002E691B   855 0001:002E6921
+   857 0001:002E6927   858 0001:002E6937   860 0001:002E693A   861 0001:002E6944
+   862 0001:002E6952   863 0001:002E6967   864 0001:002E697B   865 0001:002E6989
+   866 0001:002E69AA   868 0001:002E69B0   869 0001:002E69C0   870 0001:002E69D5
+   871 0001:002E69E9   874 0001:002E69F9   879 0001:002E6A54   880 0001:002E6A5D
+   881 0001:002E6A8F   888 0001:002E6AD4   889 0001:002E6AF6   890 0001:002E6B08
+   892 0001:002E6B4B   893 0001:002E6B6E   894 0001:002E6B98   895 0001:002E6BF1
+   890 0001:002E6BF4   896 0001:002E6BFD   903 0001:002E6C54   904 0001:002E6C7A
+   905 0001:002E6C82   908 0001:002E6C8B   909 0001:002E6CBB   906 0001:002E6CBE
+   911 0001:002E6CEE   916 0001:002E6D18   917 0001:002E6D21   918 0001:002E6D53
+   925 0001:002E6D98   926 0001:002E6DBA   927 0001:002E6DCC   929 0001:002E6E0F
+   930 0001:002E6E32   931 0001:002E6E5C   932 0001:002E6EB5   927 0001:002E6EB8
+   933 0001:002E6EC1   940 0001:002E6F18   941 0001:002E6F3E   942 0001:002E6F46
+   945 0001:002E6F4F   946 0001:002E6F7F   943 0001:002E6F82   948 0001:002E6FB2
+   954 0001:002E6FDC   955 0001:002E6FE5   956 0001:002E7017   963 0001:002E705C
+   964 0001:002E707E   965 0001:002E7090   967 0001:002E70D3   968 0001:002E70F6
+   969 0001:002E7120   970 0001:002E7179   965 0001:002E717C   971 0001:002E7185
+   978 0001:002E71DC   979 0001:002E7202   980 0001:002E720A   983 0001:002E7213
+   984 0001:002E7243   981 0001:002E7246   986 0001:002E7276   992 0001:002E72A0
+   993 0001:002E72A9   994 0001:002E72DB  1001 0001:002E7320  1002 0001:002E7342
+  1003 0001:002E7354  1005 0001:002E7370  1006 0001:002E7389  1007 0001:002E7399
+  1008 0001:002E73B6  1010 0001:002E7443  1011 0001:002E7463  1013 0001:002E7469
+  1014 0001:002E74AF  1016 0001:002E74BF  1017 0001:002E74CD  1003 0001:002E74D0
+  1018 0001:002E74D9  1025 0001:002E75A0  1026 0001:002E75C2  1027 0001:002E75D4
+  1029 0001:002E7617  1030 0001:002E763A  1031 0001:002E7664  1032 0001:002E76BD
+  1027 0001:002E76C0  1033 0001:002E76C9  1040 0001:002E7720  1041 0001:002E7746
+  1042 0001:002E774E  1045 0001:002E7757  1046 0001:002E7787  1043 0001:002E778A
+  1048 0001:002E77BA  1059 0001:002E77E4  1060 0001:002E7805  1063 0001:002E7850
+  1064 0001:002E788B  1065 0001:002E78C7  1066 0001:002E7903  1067 0001:002E793F
+  1068 0001:002E797B  1069 0001:002E79B7  1070 0001:002E79F3  1071 0001:002E7A2F
+  1072 0001:002E7A6B  1073 0001:002E7AA7  1074 0001:002E7AE9  1075 0001:002E7B31
+  1076 0001:002E7B79  1077 0001:002E7BC1  1078 0001:002E7C09  1080 0001:002E7C51
+  1084 0001:002E7CA8  1085 0001:002E7CB1  1086 0001:002E7CD1  1087 0001:002E7CE6
+  1090 0001:002E7D04  1091 0001:002E7D29  1092 0001:002E7D2F  1094 0001:002E7D68
+  1095 0001:002E7D81  1096 0001:002E7D96  1099 0001:002E7DD0  1100 0001:002E7DF0
+  1101 0001:002E7DF6  1103 0001:002E7E3E  1104 0001:002E7E57  1105 0001:002E7E6D
+  1107 0001:002E7E86  1108 0001:002E7E93  1111 0001:002E7EE0  1112 0001:002E7EEF
+  1113 0001:002E7F1F  1122 0001:002E7F38  1123 0001:002E7F5C  1124 0001:002E7F65
+  1125 0001:002E7F76  1126 0001:002E7F7A  1129 0001:002E7F81  1130 0001:002E7F9F
+  1132 0001:002E7FAE  1133 0001:002E7FB2  1136 0001:002E7FB7  1137 0001:002E7FC6
+  1139 0001:002E7FD3  1127 0001:002E7FD6  1141 0001:002E7FE3  1145 0001:002E7FF3
+  1146 0001:002E8001  1147 0001:002E8018  1148 0001:002E8030  1150 0001:002E8047
+  1151 0001:002E805F  1150 0001:002E808F  1153 0001:002E8094  1154 0001:002E8099
+  1156 0001:002E80BB  1158 0001:002E80F5  1159 0001:002E80F9  1161 0001:002E80FB
+  1154 0001:002E80FE  1162 0001:002E8103  1165 0001:002E811B  1168 0001:002E8178
+  1169 0001:002E8194  1171 0001:002E81BB  1172 0001:002E81D4  1173 0001:002E81DC
+  1175 0001:002E821C  1176 0001:002E8224  1179 0001:002E8260  1180 0001:002E827F
+  1181 0001:002E82D9  1187 0001:002E8318  1188 0001:002E8340  1189 0001:002E8378
+  1190 0001:002E838F  1191 0001:002E83A0  1192 0001:002E83A4  1195 0001:002E83F8
+  1196 0001:002E8414  1198 0001:002E841F  1199 0001:002E8464  1201 0001:002E846C
+  1202 0001:002E8474  1211 0001:002E84BC  1212 0001:002E84EB  1213 0001:002E84FA
+  1214 0001:002E8508  1215 0001:002E850D  1216 0001:002E8537  1217 0001:002E854D
+  1218 0001:002E8563  1219 0001:002E8579  1220 0001:002E8596  1221 0001:002E85AC
+  1223 0001:002E85B9  1225 0001:002E85C3  1227 0001:002E85C9  1228 0001:002E85D5
+  1230 0001:002E8601  1233 0001:002E861C  1234 0001:002E8636  1235 0001:002E865C
+  1237 0001:002E8682  1238 0001:002E86AD  1239 0001:002E86C1  1241 0001:002E86C7
+  1242 0001:002E86D2  1244 0001:002E86D8  1247 0001:002E86DF  1248 0001:002E870D
+  1250 0001:002E871A  1245 0001:002E871D  1254 0001:002E872A  1235 0001:002E872D
+  1256 0001:002E8736  1258 0001:002E874E  1260 0001:002E875E  1272 0001:002E8868
+  1273 0001:002E8871  1274 0001:002E8879  1275 0001:002E8884  1288 0001:002E888C
+  1289 0001:002E8890  1290 0001:002E8898  1300 0001:002E88A0  1301 0001:002E88BC
+  1303 0001:002E88C7  1304 0001:002E88CF  1306 0001:002E8900  1307 0001:002E8909
+  1309 0001:002E890F  1310 0001:002E8913  1313 0001:002E895C  1314 0001:002E8975
+  1316 0001:002E897E  1317 0001:002E89A6  1319 0001:002E89AD  1320 0001:002E89B5
+  1323 0001:002E8A00  1324 0001:002E8A1C  1325 0001:002E8A25  1327 0001:002E8A55
+  1328 0001:002E8A59  1331 0001:002E8AA4  1332 0001:002E8AC2  1336 0001:002E8ACF
+  1337 0001:002E8ADD  1338 0001:002E8AF5  1339 0001:002E8B0D  1341 0001:002E8B24
+  1342 0001:002E8B3E  1344 0001:002E8B5C  1347 0001:002E8B61  1350 0001:002E8BB4
+  1351 0001:002E8BD4  1352 0001:002E8BD8  1356 0001:002E8BE5  1357 0001:002E8BF3
+  1358 0001:002E8C0B  1359 0001:002E8C23  1361 0001:002E8C3A  1362 0001:002E8C54
+  1363 0001:002E8C72  1364 0001:002E8C97  1366 0001:002E8CB8  1368 0001:002E8CBD
+  1370 0001:002E8CF9  1372 0001:002E8CFD  1375 0001:002E8D88  1376 0001:002E8DA4
+  1378 0001:002E8DAD  1379 0001:002E8DCE  1381 0001:002E8DD5  1382 0001:002E8DE3
+  1385 0001:002E8E1C  1386 0001:002E8E35  1388 0001:002E8E3E  1389 0001:002E8E66
+  1391 0001:002E8E6D  1392 0001:002E8E75  1395 0001:002E8EC0  1396 0001:002E8EE4
+  1397 0001:002E8F26  1400 0001:002E8F84  1401 0001:002E8F9D  1402 0001:002E8FA6
+  1403 0001:002E8FD2  1404 0001:002E8FDA  1407 0001:002E9024  1408 0001:002E9040
+  1410 0001:002E904A  1411 0001:002E9052  1413 0001:002E9083  1414 0001:002E908B
+  1420 0001:002E90DC  1421 0001:002E9104  1422 0001:002E910A  1423 0001:002E9158
+  1424 0001:002E9199  1431 0001:002E9200  1432 0001:002E9229  1433 0001:002E922D
+  1434 0001:002E9243  1435 0001:002E9249  1437 0001:002E9273  1438 0001:002E9290
+  1439 0001:002E92B2  1440 0001:002E92B8  1442 0001:002E92BE  1443 0001:002E92E2
+  1446 0001:002E9348  1447 0001:002E9364  1448 0001:002E9392  1451 0001:002E93DC
+  1452 0001:002E93F8  1453 0001:002E9426  1457 0001:002E9474  1458 0001:002E9483
+  1459 0001:002E94C8  1462 0001:002E94F4  1463 0001:002E950D  1464 0001:002E954F
+  1467 0001:002E95A4  1468 0001:002E95BD  1469 0001:002E95FF  1494 0001:002E9658
+  1495 0001:002E967F  1496 0001:002E9689  1497 0001:002E9693  1498 0001:002E969D
+  1499 0001:002E96A7  1500 0001:002E96B1  1501 0001:002E96BB  1502 0001:002E96C5
+  1503 0001:002E96CF  1504 0001:002E96D9  1505 0001:002E96E5  1507 0001:002E96F1
+
+Line numbers for rPCE(Encounter\rPCE.pas) segment .itext
+
+  1478 0002:000017D8  1479 0002:000017F6  1480 0002:000017FD  1481 0002:00001804
+  1482 0002:00001812  1483 0002:00001823  1484 0002:00001834  1485 0002:00001845
+  1486 0002:00001856  1487 0002:00001867  1488 0002:00001878  1489 0002:00001889
+  1490 0002:0000189A  1491 0002:000018AB  1493 0002:000018BC
+
+Line numbers for fReminderDialog(fReminderDialog.pas) segment .text
+
+   134 0001:002E9AFC   135 0001:002E9B12   137 0001:002E9B24   138 0001:002E9B2F
+   140 0001:002E9B44   141 0001:002E9B51   145 0001:002E9B74   146 0001:002E9B77
+   147 0001:002E9B80   148 0001:002E9B91   149 0001:002E9BA1   152 0001:002E9BA8
+   153 0001:002E9BAB   154 0001:002E9BB4   155 0001:002E9BC4   159 0001:002E9BC8
+   160 0001:002E9BD2   164 0001:002E9BD4   165 0001:002E9BD6   166 0001:002E9BDF
+   167 0001:002E9BEA   178 0001:002E9BEC   179 0001:002E9C0D   180 0001:002E9C1A
+   181 0001:002E9C21   182 0001:002E9C2F   183 0001:002E9C37   185 0001:002E9C40
+   186 0001:002E9C46   188 0001:002E9C55   189 0001:002E9C63   191 0001:002E9C70
+   192 0001:002E9C72   194 0001:002E9C78   196 0001:002E9C83   197 0001:002E9C8D
+   200 0001:002E9C9C   201 0001:002E9CA5   203 0001:002E9CB3   204 0001:002E9CBC
+   206 0001:002E9CCA   207 0001:002E9CD7   211 0001:002E9CD9   213 0001:002E9CDF
+   214 0001:002E9CF0   217 0001:002E9CFA   220 0001:002E9D09   222 0001:002E9D20
+   223 0001:002E9D31   225 0001:002E9D3B   226 0001:002E9D54   227 0001:002E9D5E
+   229 0001:002E9D60   231 0001:002E9D6D   233 0001:002E9D75   234 0001:002E9D8C
+   235 0001:002E9DA3   236 0001:002E9DBA   237 0001:002E9DD1   238 0001:002E9DE8
+   239 0001:002E9DFF   240 0001:002E9E16   242 0001:002E9E2D   243 0001:002E9E32
+   244 0001:002E9E38   245 0001:002E9E47   246 0001:002E9E4B   249 0001:002E9E81
+   251 0001:002E9E90   257 0001:002EA078   258 0001:002EA083   260 0001:002EA087
+   261 0001:002EA094   262 0001:002EA0A5   265 0001:002EA0BA   267 0001:002EA0CD
+   271 0001:002EA134   272 0001:002EA138   274 0001:002EA140   275 0001:002EA145
+   287 0001:002EA148   288 0001:002EA14B   289 0001:002EA15C   291 0001:002EA16D
+   292 0001:002EA174   296 0001:002EA178   297 0001:002EA181   298 0001:002EA18B
+   301 0001:002EA18C   302 0001:002EA18D   304 0001:002EA1A0   305 0001:002EA1C0
+   307 0001:002EA1CA   311 0001:002EA1CC   313 0001:002EA1E5   315 0001:002EA1EE
+   316 0001:002EA1FA   318 0001:002EA206   319 0001:002EA212   330 0001:002EA214
+   331 0001:002EA250   332 0001:002EA25A   333 0001:002EA265   335 0001:002EA277
+   337 0001:002EA27F   338 0001:002EA283   339 0001:002EA287   340 0001:002EA296
+   341 0001:002EA2A4   342 0001:002EA2B8   344 0001:002EA2CE   345 0001:002EA2FC
+   346 0001:002EA302   347 0001:002EA30F   349 0001:002EA339   352 0001:002EA35E
+   354 0001:002EA36E   356 0001:002EA374   357 0001:002EA37E   358 0001:002EA38A
+   359 0001:002EA398   360 0001:002EA3A0   362 0001:002EA3AA   363 0001:002EA3B5
+   364 0001:002EA3BD   365 0001:002EA3C5   369 0001:002EA4F4   370 0001:002EA4F7
+   374 0001:002EA4F8   375 0001:002EA4FE   376 0001:002EA507   377 0001:002EA510
+   380 0001:002EA514   383 0001:002EA51C   393 0001:002EA52F   394 0001:002EA53A
+   395 0001:002EA54D   396 0001:002EA558   399 0001:002EA560   400 0001:002EA563
+   401 0001:002EA56C   402 0001:002EA579   404 0001:002EA586   405 0001:002EA592
+   406 0001:002EA59E   407 0001:002EA5A6   408 0001:002EA5AE   409 0001:002EA5BC
+   411 0001:002EA5CA   412 0001:002EA5DD   413 0001:002EA5E8   414 0001:002EA5F1
+   415 0001:002EA5FA   416 0001:002EA601   417 0001:002EA60B   418 0001:002EA617
+   419 0001:002EA620   427 0001:002EA624   428 0001:002EA62B   430 0001:002EA63A
+   432 0001:002EA64E   433 0001:002EA666   434 0001:002EA679   436 0001:002EA687
+   428 0001:002EA688   437 0001:002EA68D   439 0001:002EA694   440 0001:002EA69B
+   442 0001:002EA69F   443 0001:002EA6AF   446 0001:002EA6C2   447 0001:002EA6D3
+   460 0001:002EA6D8   461 0001:002EA6DF   462 0001:002EA6E1   464 0001:002EA6F2
+   467 0001:002EA6F7   468 0001:002EA700   465 0001:002EA703   471 0001:002EA70B
+   477 0001:002EA714   478 0001:002EA720   479 0001:002EA728   480 0001:002EA730
+   483 0001:002EA734   484 0001:002EA74E   486 0001:002EA752   481 0001:002EA756
+   488 0001:002EA768   489 0001:002EA770   491 0001:002EA795   492 0001:002EA7A6
+   493 0001:002EA7B1   495 0001:002EA7BE   496 0001:002EA7C8   498 0001:002EA7E1
+   500 0001:002EA7FC   501 0001:002EA80F   502 0001:002EA830   503 0001:002EA836
+   505 0001:002EA849   506 0001:002EA863   507 0001:002EA871   510 0001:002EA873
+   496 0001:002EA874   513 0001:002EA87B   515 0001:002EA880   516 0001:002EA8A4
+   518 0001:002EA8B4   519 0001:002EA8C1   522 0001:002EA8D7   523 0001:002EA8E3
+   524 0001:002EA8FA   525 0001:002EA906   527 0001:002EA915   528 0001:002EA922
+   529 0001:002EA956   530 0001:002EA967   531 0001:002EA977   532 0001:002EA987
+   533 0001:002EA9A9   534 0001:002EA9C0   535 0001:002EA9C8   537 0001:002EA9D2
+   538 0001:002EA9DF   540 0001:002EA9E3   541 0001:002EA9ED   542 0001:002EAA02
+   545 0001:002EAA10   547 0001:002EAA26   549 0001:002EAA3B   550 0001:002EAA48
+   552 0001:002EAA65   554 0001:002EAA92   555 0001:002EAAA7   558 0001:002EAAA9
+   545 0001:002EAAAA   561 0001:002EAAB1   563 0001:002EAABB   564 0001:002EAAD1
+   566 0001:002EAADE   570 0001:002EAB54   571 0001:002EAB5C   573 0001:002EAB63
+   574 0001:002EAB69   577 0001:002EAB6C   578 0001:002EAB6F   579 0001:002EAB81
+   580 0001:002EAB96   581 0001:002EABA5   582 0001:002EABAE   583 0001:002EABB7
+   584 0001:002EABC2   585 0001:002EABCE   588 0001:002EABD0   589 0001:002EABD3
+   595 0001:002EABE7   596 0001:002EABFD   600 0001:002EAC00   601 0001:002EAC05
+   604 0001:002EAC08   606 0001:002EAC0E   607 0001:002EAC24   608 0001:002EAC2D
+   622 0001:002EAC30   623 0001:002EAC5E   624 0001:002EAC71   625 0001:002EAC7F
+   626 0001:002EAC9F   627 0001:002EACB0   628 0001:002EACC4   629 0001:002EACEC
+   631 0001:002EACEE   632 0001:002EACFA   634 0001:002EAD05   635 0001:002EAD15
+   636 0001:002EAD2B   637 0001:002EAD41   638 0001:002EAD54   640 0001:002EAD63
+   641 0001:002EAD77   642 0001:002EAD8D   643 0001:002EADB2   644 0001:002EADC5
+   645 0001:002EADD8   647 0001:002EAE00   648 0001:002EAE03   649 0001:002EAE04
+   650 0001:002EAE24   652 0001:002EAE50   653 0001:002EAE71   654 0001:002EAE84
+   655 0001:002EAEB0   656 0001:002EAED8   657 0001:002EAEEB   659 0001:002EAF01
+   661 0001:002EAF2D   664 0001:002EAF48   665 0001:002EAF57   666 0001:002EAF65
+   667 0001:002EAF76   668 0001:002EAF7A   670 0001:002EAFD9   671 0001:002EAFE5
+   673 0001:002EAFFE   674 0001:002EB00C   675 0001:002EB016   676 0001:002EB031
+   677 0001:002EB03C   678 0001:002EB04F   679 0001:002EB05D   680 0001:002EB07D
+   681 0001:002EB0A5   682 0001:002EB0AB   683 0001:002EB0CC   686 0001:002EB0D3
+   687 0001:002EB0E0   688 0001:002EB0E7   689 0001:002EB0E9   690 0001:002EB0F4
+   692 0001:002EB103   693 0001:002EB109   694 0001:002EB10C   696 0001:002EB112
+   697 0001:002EB127   699 0001:002EB13D   700 0001:002EB158   701 0001:002EB16E
+   705 0001:002EB177   706 0001:002EB18A   709 0001:002EB1A0   710 0001:002EB1BB
+   711 0001:002EB1BD   712 0001:002EB1BE   713 0001:002EB1E4   714 0001:002EB1E8
+   715 0001:002EB218   716 0001:002EB23D   717 0001:002EB253   718 0001:002EB257
+   684 0001:002EB28A   720 0001:002EB29A   722 0001:002EB2C6   725 0001:002EB2EE
+   727 0001:002EB2FE   735 0001:002EB384   736 0001:002EB3A3   738 0001:002EB3B3
+   739 0001:002EB3C1   740 0001:002EB3D1   741 0001:002EB3F2   743 0001:002EB3FA
+   744 0001:002EB40C   747 0001:002EB446   748 0001:002EB448   750 0001:002EB450
+   751 0001:002EB46C   752 0001:002EB498   753 0001:002EB4A6   754 0001:002EB4C7
+   755 0001:002EB4E6   756 0001:002EB4F5   760 0001:002EB510   763 0001:002EB528
+   766 0001:002EB5B0   767 0001:002EB5B7   768 0001:002EB5C5   769 0001:002EB5D5
+   771 0001:002EB5E1   772 0001:002EB5EB   773 0001:002EB5F5   776 0001:002EB609
+   778 0001:002EB621   786 0001:002EB624   789 0001:002EB64B   790 0001:002EB653
+   791 0001:002EB657   793 0001:002EB66F   794 0001:002EB673   798 0001:002EB69E
+   799 0001:002EB6A6   800 0001:002EB6AB   803 0001:002EB6C5   805 0001:002EB6D9
+   806 0001:002EB6F6   808 0001:002EB723   810 0001:002EB73A   811 0001:002EB76D
+   813 0001:002EB770   800 0001:002EB771   814 0001:002EB778   816 0001:002EB77E
+   817 0001:002EB784   819 0001:002EB796   820 0001:002EB7A6   822 0001:002EB7CA
+   825 0001:002EB7E4   827 0001:002EB7E8   829 0001:002EB7EE   831 0001:002EB804
+   834 0001:002EB832   836 0001:002EB838   837 0001:002EB83F   839 0001:002EB843
+   841 0001:002EB859   829 0001:002EB85A   847 0001:002EB85D   849 0001:002EB868
+   857 0001:002EB9E4   858 0001:002EBA06   859 0001:002EBA0D   860 0001:002EBA1F
+   861 0001:002EBA35   863 0001:002EBA8F   864 0001:002EBAAA   866 0001:002EBAB2
+   867 0001:002EBABD   869 0001:002EBAE6   870 0001:002EBAF8   871 0001:002EBB29
+   872 0001:002EBB2F   874 0001:002EBB37   875 0001:002EBB75   876 0001:002EBB79
+   878 0001:002EBB8C   879 0001:002EBBAE   881 0001:002EBBBC   864 0001:002EBBC5
+   883 0001:002EBBCD   889 0001:002EBC28   890 0001:002EBC33   891 0001:002EBC3A
+   892 0001:002EBC44   893 0001:002EBC52   894 0001:002EBC53   895 0001:002EBC65
+   897 0001:002EBC84   899 0001:002EBC9B   905 0001:002EBCA0   906 0001:002EBCAB
+   907 0001:002EBCB2   908 0001:002EBCBC   909 0001:002EBCCA   910 0001:002EBCCB
+   911 0001:002EBCCF   913 0001:002EBCEE   915 0001:002EBD05   923 0001:002EBD0C
+   924 0001:002EBD32   926 0001:002EBD38   927 0001:002EBD3F   929 0001:002EBD41
+   930 0001:002EBD4C   931 0001:002EBD5B   932 0001:002EBD6D   933 0001:002EBD81
+   934 0001:002EBD90   935 0001:002EBDA0   936 0001:002EBDAD   939 0001:002EBDF0
+   940 0001:002EBE06   941 0001:002EBE1A   944 0001:002EBE3C   945 0001:002EBE52
+   946 0001:002EBE66   949 0001:002EBE88   950 0001:002EBEA0   952 0001:002EBEB6
+   953 0001:002EBEE6   954 0001:002EBF16   956 0001:002EBF2E   959 0001:002EBF58
+   960 0001:002EBF79   962 0001:002EBF8B   963 0001:002EBF95   964 0001:002EBFAD
+   966 0001:002EBFBD  1014 0001:002EBFE0  1015 0001:002EBFFD  1017 0001:002EC00A
+  1018 0001:002EC031  1020 0001:002EC037  1021 0001:002EC045  1022 0001:002EC059
+  1023 0001:002EC06A  1026 0001:002EC07E  1027 0001:002EC08A  1028 0001:002EC098
+  1029 0001:002EC0CD  1030 0001:002EC0DD  1031 0001:002EC0F7  1032 0001:002EC12E
+  1033 0001:002EC143  1034 0001:002EC158  1035 0001:002EC16D  1036 0001:002EC182
+  1037 0001:002EC197  1038 0001:002EC1AC  1040 0001:002EC1BF  1041 0001:002EC1C7
+  1043 0001:002EC1E1  1045 0001:002EC1EE  1051 0001:002EC220  1052 0001:002EC245
+  1054 0001:002EC24F  1055 0001:002EC262  1056 0001:002EC275  1057 0001:002EC288
+  1058 0001:002EC29B  1060 0001:002EC2A1  1061 0001:002EC2AC  1062 0001:002EC2B4
+  1066 0001:002EC2C7  1067 0001:002EC2CF  1069 0001:002EC2E0  1071 0001:002EC2FA
+  1073 0001:002EC320  1074 0001:002EC35B  1075 0001:002EC362  1076 0001:002EC36F
+  1077 0001:002EC377  1078 0001:002EC37F  1079 0001:002EC387  1080 0001:002EC395
+  1081 0001:002EC3A8  1082 0001:002EC3BA  1083 0001:002EC3C9  1084 0001:002EC3E6
+  1085 0001:002EC3F4  1086 0001:002EC403  1087 0001:002EC411  1090 0001:002EC416
+  1092 0001:002EC43A  1094 0001:002EC449  1095 0001:002EC45B  1096 0001:002EC46B
+  1100 0001:002EC486  1101 0001:002EC49B  1103 0001:002EC4B0  1104 0001:002EC4CE
+  1108 0001:002EC502  1109 0001:002EC509  1110 0001:002EC513  1111 0001:002EC527
+  1113 0001:002EC53C  1114 0001:002EC548  1115 0001:002EC557  1116 0001:002EC58F
+  1117 0001:002EC598  1119 0001:002EC5A5  1121 0001:002EC5A8  1123 0001:002EC5CC
+  1124 0001:002EC5DB  1126 0001:002EC5E4  1128 0001:002EC5EB  1129 0001:002EC5F2
+  1131 0001:002EC5FE  1132 0001:002EC61F  1133 0001:002EC62E  1137 0001:002EC63A
+  1138 0001:002EC64C  1139 0001:002EC65A  1140 0001:002EC672  1141 0001:002EC687
+  1142 0001:002EC689  1143 0001:002EC6B6  1145 0001:002EC6E7  1146 0001:002EC717
+  1148 0001:002EC718  1150 0001:002EC730  1151 0001:002EC743  1154 0001:002EC747
+  1155 0001:002EC760  1156 0001:002EC76F  1157 0001:002EC77B  1158 0001:002EC79C
+  1159 0001:002EC7AE  1162 0001:002EC7B0  1163 0001:002EC7BF  1166 0001:002EC7D8
+  1167 0001:002EC7F7  1166 0001:002EC814  1169 0001:002EC81C  1171 0001:002EC82F
+  1173 0001:002EC842  1174 0001:002EC84A  1176 0001:002EC850  1177 0001:002EC869
+  1179 0001:002EC874  1180 0001:002EC884  1181 0001:002EC898  1182 0001:002EC8A7
+  1183 0001:002EC8BE  1187 0001:002EC8CB  1188 0001:002EC8CF  1189 0001:002EC8DE
+  1190 0001:002EC8F0  1191 0001:002EC8FF  1194 0001:002EC908  1195 0001:002EC931
+  1198 0001:002EC93A  1199 0001:002EC95E  1203 0001:002EC965  1205 0001:002EC96E
+  1206 0001:002EC98A  1207 0001:002EC9AC  1210 0001:002EC9E0  1213 0001:002EC9F3
+  1215 0001:002ECA00  1226 0001:002ECA0B  1228 0001:002ECA1E  1230 0001:002ECA3D
+  1231 0001:002ECA4E  1232 0001:002ECA6C  1233 0001:002ECA97  1228 0001:002ECA9A
+  1235 0001:002ECAA2  1236 0001:002ECAB4  1237 0001:002ECAC2  1238 0001:002ECAD4
+  1239 0001:002ECAE2  1240 0001:002ECAE9  1241 0001:002ECAFB  1242 0001:002ECB09
+  1243 0001:002ECB1B  1244 0001:002ECB29  1245 0001:002ECB38  1246 0001:002ECB46
+  1247 0001:002ECB55  1248 0001:002ECB63  1249 0001:002ECB6B  1250 0001:002ECB78
+  1251 0001:002ECB85  1252 0001:002ECB8D  1253 0001:002ECB8F  1255 0001:002ECB91
+  1256 0001:002ECB99  1257 0001:002ECBA8  1259 0001:002ECBC4  1260 0001:002ECBD0
+  1262 0001:002ECBE0  1263 0001:002ECBE4  1265 0001:002ECC0F  1266 0001:002ECC1A
+  1267 0001:002ECC24  1268 0001:002ECC2C  1270 0001:002ECC4B  1272 0001:002ECC53
+  1273 0001:002ECC7A  1274 0001:002ECCA1  1275 0001:002ECCC0  1277 0001:002ECCDE
+  1279 0001:002ECCE2  1280 0001:002ECCE9  1282 0001:002ECCF0  1283 0001:002ECCFB
+  1284 0001:002ECD06  1285 0001:002ECD14  1286 0001:002ECD20  1287 0001:002ECD24
+  1288 0001:002ECD2A  1289 0001:002ECD3F  1290 0001:002ECD4A  1291 0001:002ECD58
+  1292 0001:002ECD68  1293 0001:002ECD73  1296 0001:002ECD76  1299 0001:002ECD95
+  1301 0001:002ECD9F  1304 0001:002ECDD9  1305 0001:002ECDF1  1308 0001:002ECE18
+  1310 0001:002ECE27  1312 0001:002ECE47  1313 0001:002ECE54  1317 0001:002ECE78
+  1319 0001:002ECEC8  1320 0001:002ECED9  1321 0001:002ECEEA  1322 0001:002ECEFB
+  1323 0001:002ECF0C  1324 0001:002ECF1D  1325 0001:002ECF2E  1329 0001:002ECF3F
+  1331 0001:002ECF4C  1332 0001:002ECF73  1334 0001:002ECF80  1336 0001:002ECF90
+  1337 0001:002ECF96  1339 0001:002ECF9E  1341 0001:002ECFB6  1342 0001:002ECFDC
+  1343 0001:002ECFF6  1346 0001:002ED003  1347 0001:002ED06E  1348 0001:002ED078
+  1349 0001:002ED086  1351 0001:002ED08B  1332 0001:002ED094  1354 0001:002ED0A6
+  1355 0001:002ED0CD  1358 0001:002ED0F4  1359 0001:002ED102  1360 0001:002ED123
+  1365 0001:002ED136  1366 0001:002ED14F  1367 0001:002ED15D  1368 0001:002ED17E
+  1369 0001:002ED1AA  1370 0001:002ED1CE  1373 0001:002ED1DC  1268 0001:002ED1DF
+  1374 0001:002ED1EB  1376 0001:002ED1EF  1378 0001:002ED1F3  1379 0001:002ED1FA
+  1380 0001:002ED201  1386 0001:002ED205  1385 0001:002ED219  1387 0001:002ED22A
+  1388 0001:002ED237  1391 0001:002ED24C  1253 0001:002ED24D  1394 0001:002ED263
+  1397 0001:002ED273  1398 0001:002ED28E  1397 0001:002ED2AD  1401 0001:002ED2C2
+  1404 0001:002ED2D2  1406 0001:002ED2F2  1407 0001:002ED339  1408 0001:002ED369
+  1409 0001:002ED390  1411 0001:002ED3D3  1412 0001:002ED415  1413 0001:002ED423
+  1414 0001:002ED432  1418 0001:002ED44B  1421 0001:002ED45E  1423 0001:002ED471
+  1424 0001:002ED47F  1426 0001:002ED4A1  1427 0001:002ED4AF  1430 0001:002ED511
+  1432 0001:002ED521  1434 0001:002ED52B  1436 0001:002ED541  1437 0001:002ED589
+  1438 0001:002ED59F  1439 0001:002ED5B8  1441 0001:002ED600  1442 0001:002ED63A
+  1443 0001:002ED642  1447 0001:002ED664  1450 0001:002ED6A7  1451 0001:002ED6C6
+  1452 0001:002ED6E0  1453 0001:002ED6F0  1456 0001:002ED774  1460 0001:002ED7F9
+  1424 0001:002ED7FC  1464 0001:002ED815  1465 0001:002ED820  1468 0001:002ED85A
+  1470 0001:002ED86D  1471 0001:002ED875  1473 0001:002ED897  1474 0001:002ED8A8
+  1476 0001:002ED8D6  1477 0001:002ED918  1478 0001:002ED948  1479 0001:002ED98A
+  1480 0001:002ED9C8  1481 0001:002ED9E3  1483 0001:002ED9F1  1485 0001:002EDA1F
+  1486 0001:002EDA61  1487 0001:002EDA8D  1488 0001:002EDAB9  1489 0001:002EDAE9
+  1490 0001:002EDB15  1491 0001:002EDB30  1493 0001:002EDB3E  1471 0001:002EDB41
+  1495 0001:002EDB4D  1497 0001:002EDB65  1500 0001:002EDB78  1501 0001:002EDB86
+  1502 0001:002EDB91  1503 0001:002EDB98  1506 0001:002EDBA6  1508 0001:002EDBB9
+  1509 0001:002EDBBD  1510 0001:002EDBC2  1511 0001:002EDBCA  1512 0001:002EDBCF
+  1513 0001:002EDBD4  1515 0001:002EDBDB  1516 0001:002EDBDD  1518 0001:002EDBE9
+  1519 0001:002EDC01  1522 0001:002EDC05  1523 0001:002EDC0C  1526 0001:002EDC1A
+  1527 0001:002EDC1E  1529 0001:002EDC2B  1531 0001:002EDC3D  1532 0001:002EDCBB
+  1533 0001:002EDD01  1534 0001:002EDD4C  1535 0001:002EDD95  1540 0001:002EDDDE
+  1542 0001:002EDDFC  1543 0001:002EDE28  1544 0001:002EDE39  1540 0001:002EDE3C
+  1545 0001:002EDE44  1550 0001:002EDE6D  1554 0001:002EDE8D  1557 0001:002EDEAA
+  1558 0001:002EDEB9  1561 0001:002EDF02  1562 0001:002EDF15  1564 0001:002EDF1E
+  1565 0001:002EDF2B  1568 0001:002EDF3E  1575 0001:002EE200  1576 0001:002EE22C
+  1577 0001:002EE23C  1582 0001:002EE250  1583 0001:002EE267  1584 0001:002EE275
+  1585 0001:002EE281  1587 0001:002EE29A  1588 0001:002EE2A5  1580 0001:002EE2C6
+  1592 0001:002EE2DA  1593 0001:002EE2E4  1595 0001:002EE2EE  1597 0001:002EE2F8
+  1598 0001:002EE307  1600 0001:002EE318  1602 0001:002EE32E  1604 0001:002EE34E
+  1606 0001:002EE36A  1600 0001:002EE36B  1610 0001:002EE370  1613 0001:002EE37B
+  1615 0001:002EE381  1616 0001:002EE393  1615 0001:002EE3B4  1618 0001:002EE3B7
+  1620 0001:002EE3BD  1621 0001:002EE3C5  1624 0001:002EE3CD  1629 0001:002EE420
+  1630 0001:002EE425  1633 0001:002EE428  1634 0001:002EE443  1636 0001:002EE450
+  1638 0001:002EE49E  1639 0001:002EE4B6  1640 0001:002EE4CC  1642 0001:002EE4D3
+  1645 0001:002EE51C  1646 0001:002EE51F  1647 0001:002EE529  1648 0001:002EE535
+  1649 0001:002EE53D  1650 0001:002EE544  1657 0001:002EE548  1658 0001:002EE551
+  1659 0001:002EE563  1661 0001:002EE56E  1662 0001:002EE580  1663 0001:002EE591
+  1664 0001:002EE59F  1665 0001:002EE5B3  1667 0001:002EE5F7  1668 0001:002EE60B
+  1669 0001:002EE616  1671 0001:002EE626  1672 0001:002EE638  1673 0001:002EE646
+  1674 0001:002EE658  1676 0001:002EE69C  1677 0001:002EE6A3  1680 0001:002EE6B9
+  1682 0001:002EE6C9  1685 0001:002EE6D4  1686 0001:002EE6F1  1687 0001:002EE6F8
+  1688 0001:002EE705  1689 0001:002EE712  1690 0001:002EE71F  1691 0001:002EE72C
+  1693 0001:002EE775  1694 0001:002EE77E  1695 0001:002EE78F  1696 0001:002EE796
+  1697 0001:002EE79F  1698 0001:002EE7A6  1699 0001:002EE7AD  1702 0001:002EE7E4
+  1703 0001:002EE7E7  1704 0001:002EE7F1  1705 0001:002EE7FB  1706 0001:002EE800
+  1707 0001:002EE807  1718 0001:002EE80C  1719 0001:002EE836  1720 0001:002EE83B
+  1722 0001:002EE843  1724 0001:002EE84D  1726 0001:002EE85E  1727 0001:002EE860
+  1728 0001:002EE86D  1729 0001:002EE87A  1727 0001:002EE889  1732 0001:002EE890
+  1734 0001:002EE8A1  1736 0001:002EE8A4  1737 0001:002EE8B4  1738 0001:002EE8DE
+  1736 0001:002EE8EE  1741 0001:002EE8F3  1742 0001:002EE8FA  1744 0001:002EE901
+  1747 0001:002EE930  1749 0001:002EE933  1750 0001:002EE940  1751 0001:002EE94D
+  1752 0001:002EE95A  1753 0001:002EE967  1758 0001:002EE96C  1759 0001:002EE98C
+  1761 0001:002EE998
+
+Line numbers for fReminderDialog(fReminderDialog.pas) segment .itext
+
+  1755 0002:000018D4  1757 0002:000018DB
+
+Line numbers for uReminders(uReminders.pas) segment .text
+
+   644 0001:002EF250   645 0001:002EF26D   646 0001:002EF276   648 0001:002EF29A
+   649 0001:002EF2BE   651 0001:002EF2EB   653 0001:002EF2FB   659 0001:002EF334
+   660 0001:002EF34F   662 0001:002EF358   663 0001:002EF366   664 0001:002EF36A
+   665 0001:002EF3A7   666 0001:002EF3AB   672 0001:002EF3F0   673 0001:002EF411
+   674 0001:002EF415   676 0001:002EF41D   678 0001:002EF429   679 0001:002EF42C
+   681 0001:002EF42E   674 0001:002EF432   682 0001:002EF437   705 0001:002EF4C4
+   706 0001:002EF4D7   708 0001:002EF4DA   709 0001:002EF4DF   712 0001:002EF4E0
+   713 0001:002EF4F7   714 0001:002EF512   715 0001:002EF52D   716 0001:002EF548
+   717 0001:002EF550   720 0001:002EF580   721 0001:002EF597   722 0001:002EF5B2
+   723 0001:002EF5CD   724 0001:002EF5E8   731 0001:002EF618   732 0001:002EF637
+   733 0001:002EF644   735 0001:002EF656   736 0001:002EF665   737 0001:002EF673
+   738 0001:002EF680   739 0001:002EF68B   741 0001:002EF69D   742 0001:002EF6B0
+   743 0001:002EF6D7   739 0001:002EF6D8   745 0001:002EF6E8   748 0001:002EF6F8
+   752 0001:002EF728   754 0001:002EF731   755 0001:002EF738   756 0001:002EF73F
+   758 0001:002EF746   762 0001:002EF748   763 0001:002EF764   764 0001:002EF781
+   765 0001:002EF79E   770 0001:002EF7A0   774 0001:002EF7C8   775 0001:002EF7CF
+   776 0001:002EF7D3   777 0001:002EF7E2   784 0001:002EF7E4   785 0001:002EF7F9
+   786 0001:002EF80E   787 0001:002EF823   788 0001:002EF834   789 0001:002EF844
+   790 0001:002EF855   791 0001:002EF865   797 0001:002EF894   798 0001:002EF8AA
+   799 0001:002EF8AC   800 0001:002EF8B0   801 0001:002EF8C5   802 0001:002EF8D1
+   803 0001:002EF8D5   804 0001:002EF8EA   805 0001:002EF8F6   806 0001:002EF90D
+   807 0001:002EF924   814 0001:002EF954   815 0001:002EF96B   817 0001:002EF974
+   818 0001:002EF97C   819 0001:002EF988   820 0001:002EF98F   821 0001:002EF9A9
+   819 0001:002EF9BB   823 0001:002EF9C0   824 0001:002EF9C7   831 0001:002EF9F8
+   832 0001:002EFA14   834 0001:002EFA20   835 0001:002EFA25   836 0001:002EFA33
+   837 0001:002EFA3C   838 0001:002EFA44   839 0001:002EFA4B   840 0001:002EFA5A
+   838 0001:002EFA72   841 0001:002EFA77   843 0001:002EFA8C   846 0001:002EFA9B
+   853 0001:002EFAC8   854 0001:002EFAF4   855 0001:002EFAF7   857 0001:002EFB01
+   858 0001:002EFB14   860 0001:002EFB26   861 0001:002EFB3B   862 0001:002EFB49
+   863 0001:002EFB5E   865 0001:002EFB62   866 0001:002EFB6F   870 0001:002EFB75
+   871 0001:002EFB97   872 0001:002EFBA6   873 0001:002EFBAC   875 0001:002EFBCE
+   876 0001:002EFBE3   878 0001:002EFBE7   880 0001:002EFBFA   882 0001:002EFC36
+   883 0001:002EFC3A   888 0001:002EFC49   889 0001:002EFC4F   890 0001:002EFC6D
+   892 0001:002EFC7C   893 0001:002EFC91   894 0001:002EFC95   896 0001:002EFCAE
+   900 0001:002EFCCF   902 0001:002EFCD3   909 0001:002EFD4C   910 0001:002EFD6A
+   911 0001:002EFD6E   912 0001:002EFD83   913 0001:002EFD91   915 0001:002EFDA3
+   916 0001:002EFDBA   917 0001:002EFDC2   913 0001:002EFDC3   919 0001:002EFDD3
+   921 0001:002EFDF4   961 0001:002EFE28   962 0001:002EFE49   963 0001:002EFE58
+   964 0001:002EFE8E   962 0001:002EFE98   965 0001:002EFE9D   967 0001:002EFEAC
+   968 0001:002EFEBB   971 0001:002EFECB   972 0001:002EFEEA   974 0001:002EFEF3
+   975 0001:002EFF05   976 0001:002EFF09   977 0001:002EFF12   978 0001:002EFF16
+   969 0001:002EFF21   980 0001:002EFF2C   982 0001:002EFF38   983 0001:002EFF40
+   984 0001:002EFF55   985 0001:002EFF67   984 0001:002EFF8D   988 0001:002EFF9D
+   991 0001:002EFFAD   995 0001:002EFFE0   996 0001:002EFFEA   997 0001:002EFFF1
+  1005 0001:002EFFF4  1006 0001:002F0014  1008 0001:002F0037  1009 0001:002F0046
+  1010 0001:002F004B  1011 0001:002F0059  1012 0001:002F005E  1013 0001:002F006D
+  1014 0001:002F007B  1016 0001:002F0095  1018 0001:002F00B1  1019 0001:002F00C8
+  1020 0001:002F00DE  1022 0001:002F00E4  1023 0001:002F00EF  1024 0001:002F00F5
+  1027 0001:002F0104  1028 0001:002F011F  1016 0001:002F0120  1031 0001:002F0123
+  1033 0001:002F0135  1034 0001:002F0155  1035 0001:002F016C  1036 0001:002F0186
+  1031 0001:002F0187  1038 0001:002F0197  1040 0001:002F01A7  1041 0001:002F01AC
+  1043 0001:002F01C3  1046 0001:002F01D2  1055 0001:002F0204  1056 0001:002F022A
+  1058 0001:002F0232  1059 0001:002F0235  1060 0001:002F024D  1062 0001:002F0285
+  1063 0001:002F0290  1065 0001:002F029A  1069 0001:002F02A1  1071 0001:002F02B4
+  1072 0001:002F02E8  1075 0001:002F02FE  1076 0001:002F033E  1078 0001:002F0345
+  1081 0001:002F034A  1083 0001:002F036C  1084 0001:002F0395  1085 0001:002F03AC
+  1087 0001:002F03B3  1090 0001:002F03B5  1091 0001:002F03BE  1092 0001:002F03C7
+  1094 0001:002F03CC  1095 0001:002F03D5  1098 0001:002F03E4  1136 0001:002F0580
+  1137 0001:002F05AE  1138 0001:002F05B7  1139 0001:002F05C8  1140 0001:002F05DD
+  1142 0001:002F05E5  1143 0001:002F05FB  1144 0001:002F061D  1145 0001:002F062C
+  1147 0001:002F0635  1148 0001:002F0644  1150 0001:002F064D  1151 0001:002F065F
+  1152 0001:002F066A  1154 0001:002F0684  1156 0001:002F06A9  1157 0001:002F06C1
+  1158 0001:002F06F1  1159 0001:002F070A  1161 0001:002F072A  1162 0001:002F0748
+  1154 0001:002F074B  1164 0001:002F0752  1166 0001:002F0761  1167 0001:002F076F
+  1168 0001:002F077D  1169 0001:002F0781  1171 0001:002F0793  1172 0001:002F079A
+  1175 0001:002F0800  1176 0001:002F0819  1177 0001:002F0838  1180 0001:002F085C
+  1181 0001:002F0875  1182 0001:002F0894  1190 0001:002F08B8  1191 0001:002F08E4
+  1192 0001:002F08F4  1193 0001:002F08FD  1194 0001:002F090E  1195 0001:002F0923
+  1197 0001:002F092B  1198 0001:002F0933  1199 0001:002F093E  1201 0001:002F0958
+  1203 0001:002F097E  1204 0001:002F0996  1206 0001:002F09D9  1207 0001:002F0A1C
+  1209 0001:002F0A35  1210 0001:002F0A48  1211 0001:002F0A59  1212 0001:002F0A7F
+  1216 0001:002F0A92  1217 0001:002F0AA1  1218 0001:002F0AA5  1219 0001:002F0AB4
+  1221 0001:002F0AD6  1201 0001:002F0AD9  1223 0001:002F0AE2  1225 0001:002F0AF1
+  1226 0001:002F0AFF  1227 0001:002F0B0D  1228 0001:002F0B11  1230 0001:002F0B23
+  1231 0001:002F0B2A  1238 0001:002F0B90  1239 0001:002F0BAD  1240 0001:002F0BB7
+  1241 0001:002F0BBE  1242 0001:002F0BD3  1243 0001:002F0BD7  1244 0001:002F0BF6
+  1246 0001:002F0BFB  1247 0001:002F0C10  1248 0001:002F0C14  1250 0001:002F0C33
+  1252 0001:002F0C38  1253 0001:002F0C4D  1254 0001:002F0C51  1256 0001:002F0C70
+  1258 0001:002F0C75  1259 0001:002F0C8A  1260 0001:002F0C8E  1262 0001:002F0CA1
+  1268 0001:002F0CCC  1269 0001:002F0CE4  1270 0001:002F0CF4  1271 0001:002F0CF8
+  1272 0001:002F0D30  1278 0001:002F0D64  1279 0001:002F0D7C  1280 0001:002F0D8E
+  1281 0001:002F0D92  1282 0001:002F0DC2  1288 0001:002F0E04  1289 0001:002F0E1C
+  1290 0001:002F0E2C  1291 0001:002F0E30  1292 0001:002F0E5D  1298 0001:002F0EA0
+  1299 0001:002F0EB8  1300 0001:002F0ECB  1301 0001:002F0ECF  1302 0001:002F0EEC
+  1309 0001:002F0F18  1310 0001:002F0F34  1312 0001:002F0F3C  1313 0001:002F0F51
+  1314 0001:002F0F5B  1315 0001:002F0F79  1316 0001:002F0F83  1317 0001:002F0F96
+  1318 0001:002F0FB4  1319 0001:002F0FD2  1320 0001:002F0FF0  1321 0001:002F100E
+  1322 0001:002F101B  1323 0001:002F1038  1325 0001:002F1055  1331 0001:002F1148
+  1332 0001:002F1166  1334 0001:002F1175  1335 0001:002F117A  1338 0001:002F118D
+  1339 0001:002F11AA  1341 0001:002F11C3  1342 0001:002F11F7  1343 0001:002F11FB
+  1344 0001:002F1207  1345 0001:002F120B  1336 0001:002F1214  1347 0001:002F1223
+  1349 0001:002F1235  1352 0001:002F1244  1355 0001:002F126C  1356 0001:002F126F
+  1357 0001:002F1284  1364 0001:002F1288  1365 0001:002F128D  1366 0001:002F1294
+  1367 0001:002F12A8  1368 0001:002F12B8  1370 0001:002F12C8  1371 0001:002F12D6
+  1372 0001:002F12DD  1380 0001:002F12E4  1381 0001:002F12FF  1383 0001:002F1314
+  1384 0001:002F1319  1385 0001:002F1327  1386 0001:002F1331  1388 0001:002F1339
+  1389 0001:002F134C  1391 0001:002F1371  1392 0001:002F1387  1393 0001:002F1398
+  1395 0001:002F13BB  1396 0001:002F13D0  1397 0001:002F13D4  1398 0001:002F13E0
+  1400 0001:002F13E4  1386 0001:002F13ED  1402 0001:002F13F5  1404 0001:002F1407
+  1407 0001:002F1416  1411 0001:002F144C  1412 0001:002F1455  1428 0001:002F1458
+  1429 0001:002F147F  1430 0001:002F1481  1431 0001:002F1483  1433 0001:002F148E
+  1435 0001:002F14A1  1436 0001:002F14B4  1437 0001:002F14BD  1438 0001:002F14C6
+  1440 0001:002F14D2  1439 0001:002F14E3  1441 0001:002F14EE  1443 0001:002F14F0
+  1445 0001:002F14F6  1446 0001:002F14FA  1447 0001:002F150E  1448 0001:002F1514
+  1450 0001:002F1528  1451 0001:002F1532  1452 0001:002F1535  1453 0001:002F1546
+  1455 0001:002F154E  1456 0001:002F1592  1457 0001:002F15A1  1458 0001:002F15B0
+  1459 0001:002F15BF  1460 0001:002F15CE  1463 0001:002F15DD  1464 0001:002F15E7
+  1465 0001:002F160E  1466 0001:002F1612  1467 0001:002F1619  1468 0001:002F1620
+  1469 0001:002F1627  1470 0001:002F162E  1472 0001:002F1631  1473 0001:002F1652
+  1474 0001:002F1653  1476 0001:002F165E  1478 0001:002F166A  1480 0001:002F1672
+  1481 0001:002F167B  1483 0001:002F1692  1485 0001:002F16A0  1486 0001:002F16A4
+  1487 0001:002F16AE  1496 0001:002F16D8  1497 0001:002F1704  1500 0001:002F170E
+  1501 0001:002F171D  1502 0001:002F172C  1503 0001:002F173F  1507 0001:002F1753
+  1508 0001:002F176E  1509 0001:002F1774  1512 0001:002F17AA  1513 0001:002F17D4
+  1514 0001:002F1807  1515 0001:002F1819  1518 0001:002F1828  1519 0001:002F1837
+  1521 0001:002F1841  1527 0001:002F189C  1528 0001:002F18C8  1531 0001:002F18CE
+  1532 0001:002F18DD  1533 0001:002F18F0  1534 0001:002F1911  1535 0001:002F1915
+  1536 0001:002F1934  1537 0001:002F1943  1539 0001:002F1949  1542 0001:002F1988
+  1543 0001:002F19BF  1544 0001:002F19F4  1545 0001:002F19F9  1547 0001:002F19FE
+  1549 0001:002F1A06  1550 0001:002F1A15  1551 0001:002F1A3A  1552 0001:002F1A40
+  1554 0001:002F1A5B  1555 0001:002F1A71  1556 0001:002F1A80  1557 0001:002F1A95
+  1558 0001:002F1A9B  1560 0001:002F1AB6  1562 0001:002F1ACC  1564 0001:002F1AD1
+  1565 0001:002F1AE0  1569 0001:002F1AEF  1571 0001:002F1AF5  1572 0001:002F1B04
+  1573 0001:002F1B0B  1572 0001:002F1B1C  1576 0001:002F1B21  1577 0001:002F1B30
+  1580 0001:002F1B44  1579 0001:002F1B55  1581 0001:002F1B61  1584 0001:002F1BA0
+  1585 0001:002F1BA3  1586 0001:002F1BD0  1589 0001:002F1BD4  1590 0001:002F1BD7
+  1591 0001:002F1C04  1594 0001:002F1C08  1595 0001:002F1C0B  1596 0001:002F1C38
+  1599 0001:002F1C3C  1600 0001:002F1C3F  1601 0001:002F1C6C  1607 0001:002F1C70
+  1608 0001:002F1C73  1609 0001:002F1C7A  1610 0001:002F1C80  1611 0001:002F1C8D
+  1617 0001:002F1C90  1618 0001:002F1C93  1619 0001:002F1C9A  1620 0001:002F1CA0
+  1621 0001:002F1CAD  1627 0001:002F1CB0  1628 0001:002F1CB3  1629 0001:002F1CBA
+  1630 0001:002F1CC0  1631 0001:002F1CCD  1637 0001:002F1CD0  1638 0001:002F1CD3
+  1639 0001:002F1CDA  1640 0001:002F1CE0  1641 0001:002F1CF3  1645 0001:002F1CF8
+  1647 0001:002F1D01  1649 0001:002F1D0A  1650 0001:002F1D1D  1652 0001:002F1D27
+  1656 0001:002F1D2D  1658 0001:002F1D36  1659 0001:002F1D49  1661 0001:002F1D53
+  1663 0001:002F1D58  1674 0001:002F1D5C  1675 0001:002F1D88  1676 0001:002F1D8A
+  1677 0001:002F1D8C  1679 0001:002F1D9C  1681 0001:002F1DC0  1682 0001:002F1DE5
+  1684 0001:002F1E0A  1685 0001:002F1E14  1688 0001:002F1E2B  1690 0001:002F1E7B
+  1692 0001:002F1E84  1693 0001:002F1E97  1694 0001:002F1EAB  1695 0001:002F1EB7
+  1696 0001:002F1EBC  1697 0001:002F1EC3  1698 0001:002F1ED5  1701 0001:002F1EE6
+  1702 0001:002F1EF7  1703 0001:002F1F04  1704 0001:002F1F0E  1707 0001:002F1F10
+  1708 0001:002F1F14  1709 0001:002F1F1D  1710 0001:002F1F2D  1711 0001:002F1F36
+  1713 0001:002F1F3C  1740 0001:002F1FB8  1741 0001:002F1FDB  1743 0001:002F1FF5
+  1745 0001:002F2004  1747 0001:002F200D  1748 0001:002F2037  1752 0001:002F203E
+  1753 0001:002F2042  1754 0001:002F205B  1756 0001:002F205F  1757 0001:002F2081
+  1760 0001:002F2090  1763 0001:002F2094  1764 0001:002F2096  1766 0001:002F20E0
+  1767 0001:002F2104  1768 0001:002F210E  1769 0001:002F211C  1770 0001:002F212A
+  1771 0001:002F2134  1772 0001:002F2141  1773 0001:002F2148  1774 0001:002F214D
+  1775 0001:002F2162  1776 0001:002F2177  1777 0001:002F217E  1779 0001:002F2193
+  1781 0001:002F219F  1782 0001:002F21BC  1785 0001:002F21DB  1787 0001:002F21E8
+  1789 0001:002F21F4  1790 0001:002F2211  1793 0001:002F2230  1795 0001:002F223D
+  1796 0001:002F2250  1798 0001:002F2258  1799 0001:002F2266  1801 0001:002F226A
+  1802 0001:002F2273  1803 0001:002F229A  1804 0001:002F22A3  1805 0001:002F22CA
+  1806 0001:002F22D3  1807 0001:002F22FA  1808 0001:002F2303  1809 0001:002F232A
+  1810 0001:002F2333  1812 0001:002F235A  1814 0001:002F2378  1815 0001:002F2398
+  1817 0001:002F23AB  1818 0001:002F23EA  1819 0001:002F240B  1820 0001:002F241B
+  1821 0001:002F242B  1812 0001:002F242E  1823 0001:002F2437  1825 0001:002F2456
+  1827 0001:002F2474  1828 0001:002F2484  1829 0001:002F24A6  1832 0001:002F24CE
+  1833 0001:002F24E1  1834 0001:002F24F1  1835 0001:002F2507  1836 0001:002F250B
+  1839 0001:002F2518  1840 0001:002F252D  1841 0001:002F2531  1844 0001:002F2566
+  1845 0001:002F258C  1846 0001:002F25B2  1847 0001:002F25D5  1848 0001:002F25F9
+  1825 0001:002F25FC  1856 0001:002F2605  1858 0001:002F2617  1860 0001:002F2635
+  1861 0001:002F2644  1862 0001:002F265D  1863 0001:002F265F  1865 0001:002F2661
+  1866 0001:002F2676  1868 0001:002F2686  1870 0001:002F26F5  1871 0001:002F271D
+  1872 0001:002F2745  1873 0001:002F2752  1875 0001:002F2762  1877 0001:002F2766
+  1878 0001:002F2776  1880 0001:002F2778  1881 0001:002F2788  1858 0001:002F278B
+  1884 0001:002F2794  1886 0001:002F27B6  1887 0001:002F27C9  1889 0001:002F27CE
+  1890 0001:002F27DE  1891 0001:002F27E4  1893 0001:002F27EE  1894 0001:002F27FE
+  1895 0001:002F280B  1887 0001:002F280C  1896 0001:002F2811  1897 0001:002F2835
+  1898 0001:002F2848  1899 0001:002F2866  1900 0001:002F2877  1884 0001:002F287A
+  1903 0001:002F2890  1906 0001:002F28A6  1907 0001:002F28B5  1910 0001:002F28B9
+  1911 0001:002F28CF  1912 0001:002F28D3  1913 0001:002F28E9  1914 0001:002F28ED
+  1916 0001:002F28F4  1918 0001:002F28FE  1919 0001:002F2911  1921 0001:002F2917
+  1922 0001:002F292F  1923 0001:002F2933  1926 0001:002F293C  1927 0001:002F294B
+  1930 0001:002F2965  1931 0001:002F2983  1932 0001:002F298F  1934 0001:002F29AD
+  1940 0001:002F2B24  1941 0001:002F2B3E  1942 0001:002F2B40  1944 0001:002F2B44
+  1945 0001:002F2B66  1946 0001:002F2B8B  1948 0001:002F2B9A  1952 0001:002F2BD4
+  1953 0001:002F2BDB  1959 0001:002F2BDC  1960 0001:002F2BF7  1961 0001:002F2C01
+  1962 0001:002F2C0D  1964 0001:002F2C49  1965 0001:002F2C5E  1966 0001:002F2C73
+  1967 0001:002F2C88  1968 0001:002F2C96  1969 0001:002F2CA0  1970 0001:002F2CA9
+  1971 0001:002F2CB1  1972 0001:002F2CBB  1973 0001:002F2CC5  1974 0001:002F2CCF
+  1975 0001:002F2CD9  1976 0001:002F2CE3  1977 0001:002F2CED  1978 0001:002F2CF7
+  1979 0001:002F2CFE  1981 0001:002F2D12  1982 0001:002F2D29  1983 0001:002F2D40
+  1984 0001:002F2D59  1985 0001:002F2D60  1986 0001:002F2D6A  1988 0001:002F2D79
+  1993 0001:002F2DBC  1994 0001:002F2DD2  1995 0001:002F2DDA  1996 0001:002F2DEA
+  1997 0001:002F2DEF  1998 0001:002F2DFC  2005 0001:002F2E20  2006 0001:002F2E23
+  2007 0001:002F2E28  2008 0001:002F2E36  2010 0001:002F2E38  2011 0001:002F2E51
+  2012 0001:002F2E5B  2013 0001:002F2E65  2014 0001:002F2E6F  2015 0001:002F2E79
+  2016 0001:002F2E83  2018 0001:002F2E8D  2019 0001:002F2E94  2020 0001:002F2E99
+  2022 0001:002F2EB4  2024 0001:002F2EC4  2025 0001:002F2ECB  2029 0001:002F2EEC
+  2030 0001:002F2EF8  2031 0001:002F2F04  2032 0001:002F2F10  2033 0001:002F2F1C
+  2034 0001:002F2F28  2035 0001:002F2F34  2036 0001:002F2F40  2037 0001:002F2F4C
+  2038 0001:002F2F58  2039 0001:002F2F64  2040 0001:002F2F70  2041 0001:002F2F7C
+  2042 0001:002F2F88  2043 0001:002F2F94  2044 0001:002F2FA0  2051 0001:002F2FA4
+  2052 0001:002F2FC9  2053 0001:002F2FCB  2054 0001:002F2FDE  2056 0001:002F3007
+  2057 0001:002F301D  2058 0001:002F302D  2060 0001:002F3033  2061 0001:002F3048
+  2062 0001:002F3056  2064 0001:002F3084  2067 0001:002F30A3  2069 0001:002F30B2
+  2081 0001:002F3104  2082 0001:002F3139  2083 0001:002F3141  2084 0001:002F3149
+  2085 0001:002F3151  2086 0001:002F315C  2087 0001:002F3160  2088 0001:002F3167
+  2089 0001:002F316B  2090 0001:002F3173  2091 0001:002F318B  2093 0001:002F31A0
+  2095 0001:002F31AC  2096 0001:002F31BF  2098 0001:002F31C5  2100 0001:002F31CB
+  2101 0001:002F31DE  2102 0001:002F31E2  2104 0001:002F31E8  2106 0001:002F31F4
+  2107 0001:002F31FF  2108 0001:002F3203  2110 0001:002F3207  2111 0001:002F321A
+  2112 0001:002F3225  2114 0001:002F3237  2115 0001:002F3246  2117 0001:002F324A
+  2118 0001:002F3255  2122 0001:002F325F  2123 0001:002F3273  2125 0001:002F3284
+  2127 0001:002F3298  2128 0001:002F32A2  2132 0001:002F32AA  2133 0001:002F32B9
+  2135 0001:002F32C5  2136 0001:002F32CB  2137 0001:002F32DA  2139 0001:002F32DF
+  2140 0001:002F330C  2144 0001:002F331E  2145 0001:002F334D  2146 0001:002F335D
+  2148 0001:002F336D  2150 0001:002F3373  2151 0001:002F3379  2152 0001:002F3391
+  2157 0001:002F3397  2158 0001:002F33B0  2130 0001:002F33B8  2161 0001:002F33C2
+  2163 0001:002F33DB  2164 0001:002F33E1  2165 0001:002F33F9  2167 0001:002F33FD
+  2168 0001:002F3407  2091 0001:002F340A  2169 0001:002F3413  2173 0001:002F3468
+  2175 0001:002F3471  2176 0001:002F347B  2178 0001:002F3482  2179 0001:002F3489
+  2183 0001:002F348C  2184 0001:002F3490  2185 0001:002F349A  2191 0001:002F34A0
+  2192 0001:002F34AE  2193 0001:002F34B0  2194 0001:002F34C4  2193 0001:002F34E5
+  2195 0001:002F34E8  2202 0001:002F34F0  2203 0001:002F3507  2204 0001:002F3516
+  2205 0001:002F351D  2206 0001:002F3524  2207 0001:002F3528  2209 0001:002F352D
+  2210 0001:002F3530  2211 0001:002F3534  2213 0001:002F3539  2214 0001:002F353C
+  2216 0001:002F3546  2217 0001:002F3555  2220 0001:002F3563  2221 0001:002F3566
+  2225 0001:002F3584  2226 0001:002F358A  2228 0001:002F3591  2229 0001:002F359B
+  2230 0001:002F35A1  2231 0001:002F35A5  2233 0001:002F35A9  2234 0001:002F35B2
+  2235 0001:002F35B7  2238 0001:002F35D7  2239 0001:002F35F0  2251 0001:002F35FC
+  2252 0001:002F3621  2254 0001:002F3633  2255 0001:002F3651  2256 0001:002F3669
+  2257 0001:002F3677  2252 0001:002F3678  2258 0001:002F367B  2265 0001:002F36A8
+  2266 0001:002F36D4  2268 0001:002F36F3  2269 0001:002F3717  2271 0001:002F371A
+  2272 0001:002F372D  2274 0001:002F3731  2275 0001:002F3755  2277 0001:002F377F
+  2278 0001:002F378B  2279 0001:002F379C  2280 0001:002F37A8  2283 0001:002F37AF
+  2284 0001:002F37B7  2266 0001:002F37BA  2285 0001:002F37C3  2287 0001:002F37FC
+  2288 0001:002F3802  2289 0001:002F3806  2290 0001:002F380B  2291 0001:002F3819
+  2292 0001:002F3828  2293 0001:002F3836  2294 0001:002F3847  2295 0001:002F3858
+  2296 0001:002F3869  2297 0001:002F3871  2298 0001:002F3887  2299 0001:002F389D
+  2301 0001:002F38C0  2304 0001:002F38DD  2306 0001:002F38EE  2312 0001:002F38F4
+  2313 0001:002F390F  2315 0001:002F3914  2316 0001:002F3927  2318 0001:002F394C
+  2319 0001:002F396D  2320 0001:002F3979  2322 0001:002F3985  2331 0001:002F39D8
+  2332 0001:002F3A09  2333 0001:002F3A18  2334 0001:002F3A26  2335 0001:002F3A2B
+  2337 0001:002F3A53  2340 0001:002F3A61  2341 0001:002F3A6E  2343 0001:002F3A97
+  2346 0001:002F3AA7  2348 0001:002F3AB7  2349 0001:002F3ABF  2352 0001:002F3AC6
+  2354 0001:002F3AE7  2355 0001:002F3B0A  2356 0001:002F3B14  2358 0001:002F3B19
+  2357 0001:002F3B1A  2359 0001:002F3B44  2361 0001:002F3B4D  2362 0001:002F3B55
+  2363 0001:002F3B64  2362 0001:002F3B8D  2366 0001:002F3B94  2367 0001:002F3BA2
+  2368 0001:002F3BA4  2369 0001:002F3BBE  2371 0001:002F3BDB  2372 0001:002F3BEA
+  2374 0001:002F3BEE  2375 0001:002F3BFB  2377 0001:002F3C08  2380 0001:002F3C0E
+  2350 0001:002F3C0F  2384 0001:002F3C2C  2386 0001:002F3C3C  2402 0001:002F3D90
+  2403 0001:002F3DC2  2404 0001:002F3DCD  2406 0001:002F3DFC  2408 0001:002F3E06
+  2410 0001:002F3E0D  2411 0001:002F3E25  2413 0001:002F3E2F  2414 0001:002F3E38
+  2415 0001:002F3E4A  2416 0001:002F3E67  2419 0001:002F3E76  2420 0001:002F3E7C
+  2421 0001:002F3E95  2422 0001:002F3EB3  2423 0001:002F3ED1  2424 0001:002F3EE1
+  2425 0001:002F3EEC  2427 0001:002F3F24  2429 0001:002F3F2C  2430 0001:002F3F34
+  2433 0001:002F3F37  2434 0001:002F3F5E  2436 0001:002F3F62  2437 0001:002F3F6A
+  2439 0001:002F3FA0  2440 0001:002F3FA4  2441 0001:002F3FAE  2443 0001:002F3FB6
+  2445 0001:002F3FCB  2446 0001:002F3FD6  2448 0001:002F3FE6  2447 0001:002F3FE7
+  2449 0001:002F3FF5  2451 0001:002F3FF9  2452 0001:002F400D  2453 0001:002F401D
+  2455 0001:002F4021  2456 0001:002F4033  2457 0001:002F4039  2458 0001:002F404B
+  2462 0001:002F4058  2463 0001:002F4063  2464 0001:002F406C  2467 0001:002F4073
+  2468 0001:002F407D  2471 0001:002F40FC  2472 0001:002F412B  2473 0001:002F4136
+  2474 0001:002F413F  2477 0001:002F4178  2478 0001:002F4183  2479 0001:002F418D
+  2480 0001:002F4199  2491 0001:002F41A8  2492 0001:002F41AE  2494 0001:002F41B9
+  2495 0001:002F41C5  2496 0001:002F41C9  2499 0001:002F41D3  2500 0001:002F41D7
+  2506 0001:002F41DC  2507 0001:002F41E4  2508 0001:002F41E6  2510 0001:002F41ED
+  2512 0001:002F41F8  2513 0001:002F420C  2514 0001:002F4210  2510 0001:002F4211
+  2516 0001:002F4214  2518 0001:002F421C  2519 0001:002F423B  2520 0001:002F423D
+  2522 0001:002F424B  2524 0001:002F4265  2525 0001:002F4275  2527 0001:002F427B
+  2528 0001:002F4286  2530 0001:002F428A  2532 0001:002F4291  2534 0001:002F42A4
+  2535 0001:002F42B2  2536 0001:002F42D7  2537 0001:002F42D9  2538 0001:002F42DD
+  2532 0001:002F42E0  2541 0001:002F42E5  2543 0001:002F42E9  2522 0001:002F42EC
+  2545 0001:002F42F3  2551 0001:002F4328  2552 0001:002F4343  2553 0001:002F434C
+  2554 0001:002F435D  2555 0001:002F4375  2556 0001:002F4379  2557 0001:002F43A1
+  2558 0001:002F43AF  2560 0001:002F43BA  2561 0001:002F43E3  2563 0001:002F43EF
+  2571 0001:002F442C  2572 0001:002F4455  2573 0001:002F445A  2575 0001:002F4460
+  2576 0001:002F4465  2578 0001:002F447C  2579 0001:002F4487  2581 0001:002F448D
+  2582 0001:002F44A0  2583 0001:002F44A6  2585 0001:002F44A9  2576 0001:002F44AC
+  2587 0001:002F44AF  2589 0001:002F44BB  2591 0001:002F44CC  2592 0001:002F44D6
+  2593 0001:002F450F  2594 0001:002F451B  2597 0001:002F4527  2598 0001:002F452E
+  2606 0001:002F4590  2607 0001:002F45B6  2609 0001:002F45C0  2610 0001:002F45CB
+  2612 0001:002F45E2  2613 0001:002F45ED  2614 0001:002F45F3  2615 0001:002F45FB
+  2610 0001:002F45FE  2616 0001:002F4601  2618 0001:002F462F  2619 0001:002F4639
+  2620 0001:002F4641  2623 0001:002F4669  2631 0001:002F46B4  2632 0001:002F46C5
+  2633 0001:002F46CA  2635 0001:002F46D1  2637 0001:002F46E7  2638 0001:002F46F4
+  2639 0001:002F46FA  2640 0001:002F4710  2635 0001:002F4713  2642 0001:002F4716
+  2648 0001:002F4724  2649 0001:002F4750  2651 0001:002F4766  2652 0001:002F4779
+  2654 0001:002F477E  2655 0001:002F479E  2656 0001:002F47A8  2657 0001:002F47BC
+  2658 0001:002F47CA  2652 0001:002F47DD  2661 0001:002F47E2  2671 0001:002F4814
+  2672 0001:002F483B  2673 0001:002F4841  2675 0001:002F4852  2677 0001:002F485C
+  2678 0001:002F4863  2679 0001:002F4872  2680 0001:002F487D  2681 0001:002F488D
+  2682 0001:002F48A6  2683 0001:002F48B6  2684 0001:002F48C0  2685 0001:002F48C5
+  2687 0001:002F48E0  2689 0001:002F48F1  2690 0001:002F48F4  2692 0001:002F48F9
+  2693 0001:002F4905  2695 0001:002F490B  2696 0001:002F4917  2697 0001:002F491F
+  2699 0001:002F4927  2700 0001:002F493B  2701 0001:002F494B  2702 0001:002F495B
+  2703 0001:002F498F  2704 0001:002F499D  2706 0001:002F49A7  2685 0001:002F49A8
+  2708 0001:002F49B1  2712 0001:002F4A10  2713 0001:002F4A13  2716 0001:002F4A14
+  2717 0001:002F4A15  2719 0001:002F4A1B  2720 0001:002F4A1E  2721 0001:002F4A2B
+  2723 0001:002F4A33  2726 0001:002F4A38  2727 0001:002F4A3E  2728 0001:002F4A4E
+  2731 0001:002F4A54  2732 0001:002F4A5A  2733 0001:002F4A6A  2737 0001:002F4A70
+  2738 0001:002F4A73  2741 0001:002F4A74  2742 0001:002F4A75  2744 0001:002F4A7B
+  2745 0001:002F4A7E  2746 0001:002F4A8B  2748 0001:002F4A93  2757 0001:002F4A98
+  2758 0001:002F4ABD  2760 0001:002F4ADA  2761 0001:002F4AE9  2762 0001:002F4AF7
+  2763 0001:002F4B06  2764 0001:002F4B14  2766 0001:002F4B29  2767 0001:002F4B38
+  2769 0001:002F4B3E  2770 0001:002F4B48  2772 0001:002F4B52  2764 0001:002F4B53
+  2773 0001:002F4B56  2774 0001:002F4B5D  2775 0001:002F4B6B  2777 0001:002F4B83
+  2779 0001:002F4B92  2781 0001:002F4BBA  2784 0001:002F4BD7  2787 0001:002F4BE7
+  2790 0001:002F4C0C  2793 0001:002F4C0F  2794 0001:002F4C20  2795 0001:002F4C2D
+  2796 0001:002F4C3E  2799 0001:002F4C40  2800 0001:002F4C43  2801 0001:002F4C4D
+  2806 0001:002F4C50  2807 0001:002F4C7F  2808 0001:002F4C8A  2809 0001:002F4C93
+  2812 0001:002F4CCC  2813 0001:002F4CD2  2814 0001:002F4CE2  2817 0001:002F4CE8
+  2818 0001:002F4D01  2819 0001:002F4D27  2822 0001:002F4D4C  2823 0001:002F4D52
+  2824 0001:002F4D62  2827 0001:002F4D68  2828 0001:002F4D6E  2829 0001:002F4D7E
+  2832 0001:002F4D84  2833 0001:002F4D9A  2834 0001:002F4DBC  2837 0001:002F4DE0
+  2838 0001:002F4DE6  2839 0001:002F4DF6  2847 0001:002F4DFC  2848 0001:002F4E1D
+  2849 0001:002F4E21  2851 0001:002F4E28  2853 0001:002F4E34  2854 0001:002F4E37
+  2856 0001:002F4E39  2849 0001:002F4E3D  2857 0001:002F4E42  2863 0001:002F4E6C
+  2864 0001:002F4E8D  2865 0001:002F4E93  2867 0001:002F4E99  2868 0001:002F4EA8
+  2871 0001:002F4EAE  2872 0001:002F4EB2  2874 0001:002F4EB9  2876 0001:002F4EC5
+  2877 0001:002F4EC8  2879 0001:002F4ECA  2872 0001:002F4ECE  2881 0001:002F4ED3
+  2887 0001:002F4F08  2888 0001:002F4F24  2890 0001:002F4F2E  2892 0001:002F4F52
+  2895 0001:002F4F6B  2898 0001:002F4F8B  2899 0001:002F4F9A  2900 0001:002F4FA8
+  2901 0001:002F4FB6  2902 0001:002F4FC4  2904 0001:002F4FDB  2910 0001:002F4FEB
+  2911 0001:002F4FEF  2914 0001:002F5024  2915 0001:002F503A  2916 0001:002F505F
+  2919 0001:002F5090  2920 0001:002F5096  2921 0001:002F50A1  2923 0001:002F50B4
+  2924 0001:002F50BB  2927 0001:002F50C0  2928 0001:002F50D6  2929 0001:002F50F5
+  2934 0001:002F5118  2935 0001:002F512E  2936 0001:002F5141  2937 0001:002F5154
+  2938 0001:002F5167  2939 0001:002F517A  2940 0001:002F518D  2941 0001:002F518F
+  2944 0001:002F51E4  2945 0001:002F51FA  2946 0001:002F521F  2949 0001:002F5250
+  2950 0001:002F525B  2951 0001:002F5265  2952 0001:002F526F  2953 0001:002F5279
+  2954 0001:002F5283  2955 0001:002F528F  2961 0001:002F52A0  2962 0001:002F52B6
+  2963 0001:002F52C9  2964 0001:002F52DC  2965 0001:002F52EF  2966 0001:002F52F1
+  2969 0001:002F532C  2970 0001:002F5332  2971 0001:002F533D  2973 0001:002F5350
+  2974 0001:002F5357  2977 0001:002F535C  2978 0001:002F5372  2979 0001:002F5397
+  2982 0001:002F53C8  2983 0001:002F53DE  2984 0001:002F5403  2987 0001:002F5434
+  2988 0001:002F544A  2989 0001:002F5469  2997 0001:002F548C  2998 0001:002F54AD
+  2999 0001:002F54B7  3001 0001:002F54EA  3002 0001:002F550C  3003 0001:002F5518
+  3005 0001:002F552F  3006 0001:002F553C  3007 0001:002F554F  3008 0001:002F5562
+  3009 0001:002F556F  3003 0001:002F5572  3010 0001:002F5577  3012 0001:002F5588
+  3013 0001:002F558F  3031 0001:002F55EC  3032 0001:002F560F  3033 0001:002F5619
+  3034 0001:002F5624  3036 0001:002F5650  3037 0001:002F5654  3038 0001:002F5659
+  3040 0001:002F565C  3041 0001:002F5683  3042 0001:002F56E3  3044 0001:002F5714
+  3046 0001:002F571A  3047 0001:002F5723  3048 0001:002F5735  3049 0001:002F576A
+  3052 0001:002F5778  3054 0001:002F57D8  3055 0001:002F5803  3059 0001:002F5871
+  3060 0001:002F5877  3061 0001:002F5886  3062 0001:002F58AA  3064 0001:002F58E7
+  3065 0001:002F58F9  3069 0001:002F594E  3070 0001:002F5954  3071 0001:002F5993
+  3072 0001:002F59B4  3074 0001:002F59CA  3075 0001:002F59D0  3078 0001:002F59DA
+  3080 0001:002F5A4C  3082 0001:002F5A8E  3084 0001:002F5A97  3085 0001:002F5AA9
+  3086 0001:002F5AB8  3088 0001:002F5AC9  3090 0001:002F5B29  3094 0001:002F5B31
+  3096 0001:002F5B3E  3097 0001:002F5B50  3098 0001:002F5B56  3099 0001:002F5B65
+  3100 0001:002F5B8B  3102 0001:002F5B94  3103 0001:002F5B9A  3104 0001:002F5BB0
+  3105 0001:002F5BB8  3107 0001:002F5C4F  3108 0001:002F5C58  3109 0001:002F5C5F
+  3112 0001:002F5C67  3113 0001:002F5C75  3114 0001:002F5CB5  3115 0001:002F5CC8
+  3116 0001:002F5CF4  3117 0001:002F5D14  3118 0001:002F5D4C  3119 0001:002F5D5F
+  3120 0001:002F5D70  3122 0001:002F5DB2  3123 0001:002F5DBB  3124 0001:002F5DCD
+  3125 0001:002F5DDC  3126 0001:002F5E2F  3129 0001:002F5E42  3130 0001:002F5E4B
+  3131 0001:002F5E67  3076 0001:002F5E6A  3134 0001:002F5EA3  3136 0001:002F5EBF
+  3137 0001:002F5ECD  3138 0001:002F5EDA  3139 0001:002F5EEA  3140 0001:002F5EF7
+  3141 0001:002F5EFC  3142 0001:002F5F1F  3143 0001:002F5F36  3144 0001:002F5F46
+  3143 0001:002F5F58  3145 0001:002F5F5D  3147 0001:002F5F7A  3149 0001:002F5F84
+  3150 0001:002F5F9B  3149 0001:002F5FDD  3153 0001:002F5FE4  3154 0001:002F6005
+  3156 0001:002F600F  3158 0001:002F603B  3159 0001:002F6041  3160 0001:002F6050
+  3161 0001:002F6077  3163 0001:002F607D  3164 0001:002F6080  3165 0001:002F6096
+  3168 0001:002F609A  3170 0001:002F612E  3171 0001:002F6134  3172 0001:002F6138
+  3176 0001:002F613F  3178 0001:002F6149  3179 0001:002F614F  3180 0001:002F615E
+  3181 0001:002F6185  3183 0001:002F618B  3184 0001:002F618E  3185 0001:002F61A4
+  3188 0001:002F61A8  3190 0001:002F623C  3191 0001:002F6242  3193 0001:002F6276
+  3194 0001:002F627A  3197 0001:002F62AF  3203 0001:002F62B3  3205 0001:002F62BB
+  3207 0001:002F62BE  3208 0001:002F62E5  3210 0001:002F62ED  3211 0001:002F6324
+  3213 0001:002F633E  3214 0001:002F6344  3215 0001:002F6353  3218 0001:002F6377
+  3219 0001:002F637D  3220 0001:002F639E  3222 0001:002F63A6  3224 0001:002F63AC
+  3225 0001:002F63B0  3227 0001:002F63B6  3228 0001:002F63BC  3229 0001:002F63C0
+  3230 0001:002F63C6  3233 0001:002F63CC  3235 0001:002F63D4  3237 0001:002F63D7
+  3238 0001:002F63FE  3240 0001:002F6402  3241 0001:002F640A  3243 0001:002F6452
+  3244 0001:002F6456  3246 0001:002F6460  3259 0001:002F6544  3260 0001:002F6550
+  3262 0001:002F6560  3264 0001:002F656E  3266 0001:002F6582  3267 0001:002F6596
+  3269 0001:002F65A5  3270 0001:002F65B3  3274 0001:002F65EA  3275 0001:002F65F1
+  3276 0001:002F6602  3279 0001:002F6609  3282 0001:002F6613  3264 0001:002F6616
+  3284 0001:002F661D  3285 0001:002F662F  3286 0001:002F6645  3285 0001:002F6660
+  3288 0001:002F6663  3290 0001:002F667C  3291 0001:002F6687  3293 0001:002F6690
+  3294 0001:002F6693  3296 0001:002F6697  3297 0001:002F669E  3299 0001:002F66AA
+  3300 0001:002F66B2  3302 0001:002F66C2  3304 0001:002F66DB  3305 0001:002F66E9
+  3306 0001:002F66F3  3307 0001:002F66FA  3302 0001:002F66FD  3310 0001:002F6702
+  3313 0001:002F6710  3315 0001:002F6725  3317 0001:002F673C  3318 0001:002F674A
+  3320 0001:002F676B  3322 0001:002F6781  3323 0001:002F678E  3324 0001:002F6795
+  3325 0001:002F679D  3327 0001:002F67A4  3329 0001:002F67B6  3330 0001:002F67C4
+  3331 0001:002F67D6  3327 0001:002F67D7  3333 0001:002F67DC  3320 0001:002F67DF
+  3335 0001:002F67E4  3315 0001:002F67E7  3338 0001:002F67F0  3345 0001:002F67F8
+  3346 0001:002F67FD  3347 0001:002F6806  3348 0001:002F680B  3349 0001:002F680E
+  3351 0001:002F6812  3353 0001:002F681D  3354 0001:002F681F  3358 0001:002F6824
+  3359 0001:002F682D  3349 0001:002F6830  3362 0001:002F6834  3363 0001:002F683B
+  3366 0001:002F6844  3367 0001:002F6864  3368 0001:002F686F  3369 0001:002F687D
+  3370 0001:002F6888  3371 0001:002F6896  3373 0001:002F689C  3374 0001:002F68BC
+  3377 0001:002F68D1  3380 0001:002F68F4  3382 0001:002F690A  3383 0001:002F691F
+  3384 0001:002F6934  3385 0001:002F6942  3391 0001:002F6964  3392 0001:002F6967
+  3393 0001:002F696E  3395 0001:002F6975  3396 0001:002F6977  3398 0001:002F697B
+  3399 0001:002F6986  3401 0001:002F698A  3404 0001:002F6990  3405 0001:002F6992
+  3409 0001:002F6994  3410 0001:002F699B  3412 0001:002F69A3  3413 0001:002F69A5
+  3416 0001:002F69A8  3417 0001:002F69AB  3419 0001:002F69B8  3420 0001:002F69C9
+  3422 0001:002F69CD  3425 0001:002F69D8  3426 0001:002F69DA  3432 0001:002F69DC
+  3438 0001:002F69E0  3440 0001:002F69F4  3441 0001:002F69FD  3443 0001:002F6A00
+  3445 0001:002F6A0B  3446 0001:002F6A14  3448 0001:002F6A2A  3450 0001:002F6A38
+  3453 0001:002F6A3C  3454 0001:002F6A3F  3455 0001:002F6A53  3458 0001:002F6A58
+  3459 0001:002F6A5B  3460 0001:002F6A6F  3499 0001:002F6A74  3503 0001:002F6A9D
+  3504 0001:002F6ACA  3506 0001:002F6AD4  3509 0001:002F6AEC  3511 0001:002F6AF0
+  3512 0001:002F6B13  3513 0001:002F6B19  3515 0001:002F6B4B  3518 0001:002F6B54
+  3523 0001:002F6B64  3524 0001:002F6B7A  3533 0001:002F6BB4  3534 0001:002F6BBE
+  3535 0001:002F6BC0  3537 0001:002F6BD1  3538 0001:002F6BDE  3539 0001:002F6BE5
+  3540 0001:002F6BE7  3535 0001:002F6BE8  3541 0001:002F6BEB  3543 0001:002F6BFC
+  3544 0001:002F6C09  3545 0001:002F6C0E  3546 0001:002F6C26  3541 0001:002F6C27
+  3547 0001:002F6C2A  3548 0001:002F6C2F  3549 0001:002F6C41  3550 0001:002F6C55
+  3551 0001:002F6C60  3554 0001:002F6C68  3555 0001:002F6C8C  3556 0001:002F6CAF
+  3559 0001:002F6CBC  3560 0001:002F6CD4  3561 0001:002F6CE1  3563 0001:002F6CEA
+  3564 0001:002F6D02  3565 0001:002F6D0F  3568 0001:002F6D23  3569 0001:002F6D2E
+  3572 0001:002F6D3C  3573 0001:002F6D48  3574 0001:002F6D64  3576 0001:002F6D6C
+  3578 0001:002F6D83  3579 0001:002F6DA4  3580 0001:002F6DBD  3582 0001:002F6DDB
+  3584 0001:002F6DEE  3585 0001:002F6E04  3587 0001:002F6E0D  3588 0001:002F6E18
+  3590 0001:002F6E23  3591 0001:002F6E32  3593 0001:002F6E3F  3596 0001:002F6EA0
+  3597 0001:002F6EB6  3599 0001:002F6EBF  3600 0001:002F6ECF  3602 0001:002F6EEF
+  3604 0001:002F6EF4  3619 0001:002F6F28  3620 0001:002F6F55  3621 0001:002F6F67
+  3622 0001:002F6F75  3624 0001:002F6F7E  3626 0001:002F6F84  3627 0001:002F6F95
+  3629 0001:002F6FA6  3630 0001:002F6FB5  3632 0001:002F6FD5  3636 0001:002F6FE0
+  3637 0001:002F6FF7  3639 0001:002F7000  3641 0001:002F7020  3642 0001:002F7037
+  3643 0001:002F7070  3645 0001:002F707C  3646 0001:002F7083  3648 0001:002F7097
+  3650 0001:002F70AD  3652 0001:002F70B9  3653 0001:002F70C0  3655 0001:002F70C2
+  3646 0001:002F70C3  3657 0001:002F70C6  3658 0001:002F70CE  3659 0001:002F70D6
+  3660 0001:002F70DE  3661 0001:002F70E6  3662 0001:002F70ED  3664 0001:002F70FA
+  3665 0001:002F710B  3666 0001:002F7113  3667 0001:002F711B  3668 0001:002F7123
+  3669 0001:002F712B  3670 0001:002F7133  3671 0001:002F7144  3674 0001:002F718E
+  3675 0001:002F71A6  3676 0001:002F71B4  3677 0001:002F71D0  3679 0001:002F71D9
+  3680 0001:002F71E9  3681 0001:002F7207  3685 0001:002F7215  3686 0001:002F722D
+  3687 0001:002F723B  3688 0001:002F724C  3690 0001:002F7255  3691 0001:002F7264
+  3695 0001:002F7275  3696 0001:002F7282  3698 0001:002F7291  3699 0001:002F72C7
+  3700 0001:002F72F7  3702 0001:002F7304  3703 0001:002F7320  3704 0001:002F7339
+  3705 0001:002F7343  3712 0001:002F734F  3713 0001:002F7367  3714 0001:002F7375
+  3715 0001:002F7391  3716 0001:002F739E  3717 0001:002F73AE  3719 0001:002F73B7
+  3720 0001:002F73C7  3721 0001:002F73DA  3722 0001:002F7400  3724 0001:002F7417
+  3726 0001:002F7420  3727 0001:002F7437  3729 0001:002F744E  3731 0001:002F745B
+  3732 0001:002F7463  3734 0001:002F7473  3735 0001:002F747A  3737 0001:002F7490
+  3738 0001:002F74B0  3740 0001:002F74BA  3742 0001:002F74F0  3743 0001:002F74F4
+  3745 0001:002F7515  3747 0001:002F754C  3748 0001:002F7563  3749 0001:002F7567
+  3751 0001:002F7569  3743 0001:002F756C  3752 0001:002F7571  3753 0001:002F7577
+  3756 0001:002F7581  3757 0001:002F7591  3759 0001:002F7597  3760 0001:002F75AE
+  3763 0001:002F75B1  3735 0001:002F75B2  3765 0001:002F75B9  3767 0001:002F75BF
+  3768 0001:002F75D8  3773 0001:002F75F2  3774 0001:002F75FE  3775 0001:002F761A
+  3777 0001:002F7629  3778 0001:002F7645  3779 0001:002F764E  3781 0001:002F7688
+  3782 0001:002F7697  3783 0001:002F76A4  3784 0001:002F76C0  3785 0001:002F76C7
+  3786 0001:002F76DC  3791 0001:002F76EE  3793 0001:002F76FE  3795 0001:002F771C
+  3796 0001:002F7729  3797 0001:002F7741  3798 0001:002F774F  3799 0001:002F775F
+  3800 0001:002F7772  3801 0001:002F778E  3802 0001:002F779E  3803 0001:002F77DA
+  3804 0001:002F7816  3805 0001:002F784F  3806 0001:002F785A  3807 0001:002F7867
+  3808 0001:002F787E  3809 0001:002F788B  3810 0001:002F78A3  3811 0001:002F78B1
+  3812 0001:002F78D8  3813 0001:002F78ED  3814 0001:002F7905  3815 0001:002F7917
+  3816 0001:002F7930  3817 0001:002F7946  3825 0001:002F7955  3826 0001:002F7978
+  3827 0001:002F7985  3828 0001:002F7992  3829 0001:002F79A2  3830 0001:002F79C0
+  3831 0001:002F79DA  3832 0001:002F79ED  3833 0001:002F7A03  3834 0001:002F7A21
+  3835 0001:002F7A3B  3836 0001:002F7A4E  3837 0001:002F7A64  3838 0001:002F7A74
+  3839 0001:002F7A81  3840 0001:002F7A96  3841 0001:002F7AD2  3842 0001:002F7B0E
+  3843 0001:002F7B21  3844 0001:002F7B2E  3845 0001:002F7B4A  3846 0001:002F7B6E
+  3847 0001:002F7B7C  3848 0001:002F7B92  3849 0001:002F7BE0  3850 0001:002F7C2E
+  3852 0001:002F7C49  3853 0001:002F7C4B  3854 0001:002F7C62  3856 0001:002F7C6F
+  3857 0001:002F7C88  3858 0001:002F7C9B  3859 0001:002F7CBD  3860 0001:002F7CE7
+  3861 0001:002F7CF9  3862 0001:002F7D0F  3863 0001:002F7D5D  3864 0001:002F7DAB
+  3866 0001:002F7DC6  3867 0001:002F7DC8  3868 0001:002F7DEB  3870 0001:002F7DF8
+  3871 0001:002F7E11  3872 0001:002F7E33  3873 0001:002F7E5D  3874 0001:002F7E70
+  3875 0001:002F7E7D  3876 0001:002F7E90  3877 0001:002F7EA3  3878 0001:002F7EB6
+  3879 0001:002F7EC1  3880 0001:002F7ED2  3881 0001:002F7EE3  3882 0001:002F7F06
+  3885 0001:002F7F18  3888 0001:002F7F24  3893 0001:002F7F30  3894 0001:002F7F3D
+  3895 0001:002F7F55  3896 0001:002F7F63  3897 0001:002F7F8A  3898 0001:002F7F9C
+  3899 0001:002F7FB1  3900 0001:002F7FC9  3901 0001:002F7FE2  3902 0001:002F7FF8
+  3909 0001:002F8007  3910 0001:002F801B  3911 0001:002F8039  3912 0001:002F8053
+  3913 0001:002F8071  3914 0001:002F808B  3915 0001:002F8098  3916 0001:002F80AD
+  3917 0001:002F80BD  3918 0001:002F80F9  3919 0001:002F8135  3921 0001:002F814A
+  3922 0001:002F814C  3923 0001:002F816F  3925 0001:002F817C  3926 0001:002F818F
+  3927 0001:002F819C  3928 0001:002F81B8  3929 0001:002F81DE  3930 0001:002F81EA
+  3931 0001:002F8200  3932 0001:002F824E  3933 0001:002F829C  3935 0001:002F82B7
+  3936 0001:002F82B9  3937 0001:002F82D0  3939 0001:002F82DD  3940 0001:002F82F6
+  3941 0001:002F8309  3942 0001:002F832B  3943 0001:002F8357  3944 0001:002F8369
+  3945 0001:002F837F  3946 0001:002F83CD  3947 0001:002F841B  3949 0001:002F8436
+  3950 0001:002F8438  3951 0001:002F845B  3953 0001:002F8468  3954 0001:002F8481
+  3955 0001:002F84A3  3956 0001:002F84CF  3957 0001:002F84E2  3958 0001:002F8505
+  3959 0001:002F8512  3960 0001:002F8530  3961 0001:002F854A  3962 0001:002F8573
+  3963 0001:002F8593  3964 0001:002F85AC  3965 0001:002F85CE  3966 0001:002F85E4
+  3967 0001:002F8632  3968 0001:002F8680  3969 0001:002F868D  3970 0001:002F86A0
+  3971 0001:002F86B3  3972 0001:002F86C6  3973 0001:002F86D9  3974 0001:002F86E4
+  3975 0001:002F86F5  3976 0001:002F8706  3977 0001:002F8717  3978 0001:002F8735
+  3980 0001:002F8767  3981 0001:002F8785  3982 0001:002F879F  3983 0001:002F87B2
+  3984 0001:002F87CD  3985 0001:002F87E3  3986 0001:002F8831  3987 0001:002F887F
+  3989 0001:002F889A  3990 0001:002F889C  3991 0001:002F88BF  3993 0001:002F88CC
+  3994 0001:002F88E0  3995 0001:002F88F9  3996 0001:002F8922  3997 0001:002F8943
+  3998 0001:002F8965  3999 0001:002F8978  4000 0001:002F8981  4001 0001:002F89C1
+  4003 0001:002F89E9  4004 0001:002F8A0F  4007 0001:002F8A22  4008 0001:002F8A48
+  4013 0001:002F8A5A  4014 0001:002F8A72  4015 0001:002F8A80  4016 0001:002F8A8D
+  4017 0001:002F8A9B  4018 0001:002F8AAD  4021 0001:002F8AFE  4023 0001:002F8B14
+  4025 0001:002F8B1E  4026 0001:002F8B3A  4027 0001:002F8B47  4028 0001:002F8B4E
+  4034 0001:002F8B62  4035 0001:002F8B7A  4036 0001:002F8B88  4037 0001:002F8BBA
+  4038 0001:002F8BDC  4039 0001:002F8BF2  4040 0001:002F8BFF  4041 0001:002F8C1B
+  4042 0001:002F8C37  4043 0001:002F8C4E  4044 0001:002F8C5E  4045 0001:002F8C7A
+  4046 0001:002F8C87  4051 0001:002F8C9B  4053 0001:002F8CA8  4054 0001:002F8CC0
+  4055 0001:002F8CCE  4056 0001:002F8D00  4057 0001:002F8D22  4058 0001:002F8D2F
+  4059 0001:002F8D4B  4060 0001:002F8D5A  4061 0001:002F8D67  4064 0001:002F8D7B
+  4066 0001:002F8D88  4067 0001:002F8D99  4069 0001:002F8DA6  4070 0001:002F8DBE
+  4071 0001:002F8DCC  4072 0001:002F8DD9  4073 0001:002F8DE9  4074 0001:002F8E05
+  4075 0001:002F8E10  4076 0001:002F8E1D  4077 0001:002F8E3F  4078 0001:002F8E5B
+  4079 0001:002F8E68  4080 0001:002F8E9F  4081 0001:002F8ED9  4083 0001:002F8EE7
+  4084 0001:002F8EF3  4086 0001:002F8EFA  4090 0001:002F8F0C  4091 0001:002F8F24
+  4092 0001:002F8F32  4093 0001:002F8F50  4094 0001:002F8F6C  4095 0001:002F8F88
+  4096 0001:002F8FA4  4097 0001:002F8FB1  4099 0001:002F8FC6  4100 0001:002F8FCD
+  4101 0001:002F8FEB  4102 0001:002F8FFF  4103 0001:002F9021  4104 0001:002F903E
+  4105 0001:002F9060  4106 0001:002F9078  4109 0001:002F9090  4110 0001:002F90AC
+  4115 0001:002F90CA  4116 0001:002F90E6  4121 0001:002F9104  4122 0001:002F9120
+  4126 0001:002F913C  4127 0001:002F9164  4128 0001:002F917C  4129 0001:002F9192
+  4131 0001:002F91E5  4132 0001:002F91F8  4133 0001:002F920B  4135 0001:002F9220
+  4137 0001:002F922E  4138 0001:002F923A  4141 0001:002F9241  4142 0001:002F9263
+  4143 0001:002F927A  4146 0001:002F9286  4148 0001:002F9293  4149 0001:002F92AB
+  4150 0001:002F92B9  4151 0001:002F92C6  4152 0001:002F92D6  4153 0001:002F92DC
+  4154 0001:002F92EB  4155 0001:002F92FA  4157 0001:002F9311  4158 0001:002F931F
+  4159 0001:002F9332  4161 0001:002F9351  4163 0001:002F937D  4164 0001:002F93D4
+  4165 0001:002F942E  4166 0001:002F9476  4167 0001:002F9492  4168 0001:002F94AA
+  4169 0001:002F94E8  4161 0001:002F94EB  4171 0001:002F94F4  4159 0001:002F94F5
+  4172 0001:002F94FE  4173 0001:002F9512  4174 0001:002F9526  4175 0001:002F9533
+  4176 0001:002F9555  4177 0001:002F956F  4178 0001:002F958E  4179 0001:002F95B0
+  4180 0001:002F95CC  4181 0001:002F95D9  4182 0001:002F95E6  4184 0001:002F95F4
+  4185 0001:002F9600  4187 0001:002F9607  4188 0001:002F960E  4190 0001:002F962A
+  4191 0001:002F963C  4195 0001:002F9653  4196 0001:002F966A  4197 0001:002F9671
+  4198 0001:002F967D  4199 0001:002F9697  4200 0001:002F96A9  4204 0001:002F96C0
+  4206 0001:002F96E3  4207 0001:002F96FB  4208 0001:002F9709  4209 0001:002F9725
+  4210 0001:002F9747  4212 0001:002F9778  4213 0001:002F97AA  4215 0001:002F97D4
+  4216 0001:002F9809  4217 0001:002F9845  4220 0001:002F9851  4222 0001:002F986B
+  4223 0001:002F9883  4224 0001:002F9891  4225 0001:002F98B3  4226 0001:002F98CB
+  4227 0001:002F98D9  4228 0001:002F98EA  4229 0001:002F98F7  4230 0001:002F9906
+  4231 0001:002F9945  4232 0001:002F997B  4233 0001:002F9997  4234 0001:002F99B3
+  4236 0001:002F99DC  4237 0001:002F99F4  4238 0001:002F9A02  4239 0001:002F9A12
+  4240 0001:002F9A2E  4241 0001:002F9A6A  4242 0001:002F9A7E  4244 0001:002F9A8D
+  4247 0001:002F9A96  4251 0001:002F9A9E  4254 0001:002F9AC5  4255 0001:002F9AD6
+  4256 0001:002F9AF1  4257 0001:002F9B27  4258 0001:002F9B52  4260 0001:002F9B5B
+  4261 0001:002F9B6D  4264 0001:002F9B81  4267 0001:002F9B88  4268 0001:002F9B96
+  4270 0001:002F9BA2  4274 0001:002F9BD7  4278 0001:002F9BE5  4279 0001:002F9C06
+  4282 0001:002F9C23  4283 0001:002F9C2C  4285 0001:002F9C40  4287 0001:002F9C52
+  4289 0001:002F9C5F  4290 0001:002F9C73  4291 0001:002F9C85  4295 0001:002F9CB5
+  4297 0001:002F9CBE  4298 0001:002F9CCF  4299 0001:002F9CDF  4300 0001:002F9CF1
+  4301 0001:002F9D03  4302 0001:002F9D15  4304 0001:002F9D26  4306 0001:002F9D33
+  4308 0001:002F9D3C  4309 0001:002F9D50  4311 0001:002F9D7A  4313 0001:002F9D7F
+  4314 0001:002F9D9A  4315 0001:002F9DA9  4316 0001:002F9DBC  4317 0001:002F9DCD
+  4318 0001:002F9DDD  4319 0001:002F9DEE  4321 0001:002F9DFB  4322 0001:002F9E0C
+  4324 0001:002F9E19  4325 0001:002F9E2A  4326 0001:002F9E4D  4327 0001:002F9E73
+  4328 0001:002F9E83  4331 0001:002F9EA0  4332 0001:002F9EBA  4333 0001:002F9ED4
+  4334 0001:002F9EE4  4335 0001:002F9EF9  4338 0001:002F9F19  4340 0001:002F9F26
+  4341 0001:002F9F3D  4342 0001:002F9F5D  4343 0001:002F9F7D  4344 0001:002F9F93
+  4345 0001:002F9FA8  4349 0001:002F9FCB  4350 0001:002F9FDC  4355 0001:002F9FF1
+  4356 0001:002F9FFA  4358 0001:002FA00B  4359 0001:002FA01A  3639 0001:002FA01D
+  4360 0001:002FA026  4362 0001:002FA040  4364 0001:002FA053  4367 0001:002FA46C
+  4368 0001:002FA472  4370 0001:002FA476  4372 0001:002FA47F  4373 0001:002FA48C
+  4374 0001:002FA4A8  4376 0001:002FA4C4  4377 0001:002FA4C8  4380 0001:002FA4D0
+  4382 0001:002FA4F7  4385 0001:002FA519  4386 0001:002FA52A  4388 0001:002FA530
+  4389 0001:002FA58E  4390 0001:002FA590  4391 0001:002FA595  4392 0001:002FA59A
+  4393 0001:002FA59F  4394 0001:002FA5AA  4396 0001:002FA5B4  4397 0001:002FA5BF
+  4396 0001:002FA5D2  4399 0001:002FA5D5  4401 0001:002FA5E5  4403 0001:002FA5F2
+  4404 0001:002FA5F8  4405 0001:002FA63A  4406 0001:002FA645  4407 0001:002FA652
+  4412 0001:002FA665  4413 0001:002FA66B  4414 0001:002FA67D  4415 0001:002FA688
+  4416 0001:002FA693  4417 0001:002FA6A0  4418 0001:002FA6A9  4419 0001:002FA6B3
+  4420 0001:002FA6BD  4421 0001:002FA6CF  4422 0001:002FA6E0  4423 0001:002FA6E9
+  4424 0001:002FA708  4425 0001:002FA710  4427 0001:002FA71D  4428 0001:002FA727
+  4431 0001:002FA734  4432 0001:002FA73D  4433 0001:002FA747  4434 0001:002FA78E
+  4435 0001:002FA79C  4436 0001:002FA7A9  4437 0001:002FA7B4  4438 0001:002FA7BD
+  4439 0001:002FA7D3  4440 0001:002FA7E9  4441 0001:002FA7F2  4443 0001:002FA808
+  4444 0001:002FA812  4445 0001:002FA828  4446 0001:002FA83E  4447 0001:002FA850
+  4449 0001:002FA898  4446 0001:002FA8B6  4452 0001:002FA8B9  4453 0001:002FA8D2
+  4455 0001:002FA8DC  4458 0001:002FA8E7  4460 0001:002FA8F7  4461 0001:002FA8FC
+  4463 0001:002FA90C  4464 0001:002FA91E  4465 0001:002FA929  4466 0001:002FA94A
+  4467 0001:002FA957  4468 0001:002FA96B  4469 0001:002FA977  4474 0001:002FA993
+  4475 0001:002FA9A5  4476 0001:002FA9B1  4477 0001:002FA9C1  4478 0001:002FA9CB
+  4479 0001:002FA9D1  4480 0001:002FA9E8  4482 0001:002FA9F1  4486 0001:002FA9FA
+  4487 0001:002FAA00  4488 0001:002FAA08  4491 0001:002FAA0E  4493 0001:002FAA1F
+  4494 0001:002FAA3F  4495 0001:002FAA43  4496 0001:002FAA45  4491 0001:002FAA46
+  4498 0001:002FAA49  4499 0001:002FAA52  4501 0001:002FAA65  4503 0001:002FAA71
+  4504 0001:002FAA7F  4507 0001:002FAA8C  4510 0001:002FAA94  4512 0001:002FAA9E
+  4514 0001:002FAAA4  4517 0001:002FAAE4  4519 0001:002FAAE9  4520 0001:002FAB00
+  4522 0001:002FAB03  4523 0001:002FAB0C  4524 0001:002FAB11  4544 0001:002FAB84
+  4545 0001:002FAB9E  4547 0001:002FABA7  4548 0001:002FABDC  4549 0001:002FABF3
+  4551 0001:002FAC0E  4553 0001:002FAC30  4554 0001:002FAC5A  4555 0001:002FAC64
+  4557 0001:002FAC6E  4558 0001:002FAC7E  4560 0001:002FAC88  4561 0001:002FAC8A
+  4563 0001:002FACB0  4564 0001:002FACD4  4565 0001:002FACE7  4567 0001:002FACFA
+  4568 0001:002FAD20  4570 0001:002FAD24  4571 0001:002FAD2F  4572 0001:002FAD35
+  4573 0001:002FAD45  4574 0001:002FAD51  4575 0001:002FAD5F  4579 0001:002FAD6F
+  4580 0001:002FAD7F  4581 0001:002FAD8F  4584 0001:002FAD91  4586 0001:002FADA3
+  4587 0001:002FADC0  4588 0001:002FADC4  4589 0001:002FADCE  4591 0001:002FAE03
+  4594 0001:002FAE23  4598 0001:002FAE3F  4599 0001:002FAE49  4601 0001:002FAE50
+  4602 0001:002FAE5A  4611 0001:002FAEC4  4612 0001:002FAEEB  4613 0001:002FAF00
+  4614 0001:002FAF0A  4615 0001:002FAF18  4617 0001:002FAF28  4618 0001:002FAF33
+  4619 0001:002FAF3C  4622 0001:002FAF4C  4623 0001:002FAF5A  4626 0001:002FAF66
+  4627 0001:002FAF6F  4633 0001:002FAF8E  4634 0001:002FAF9C  4635 0001:002FAFA6
+  4638 0001:002FAFC2  4640 0001:002FAFCE  4641 0001:002FAFD6  4644 0001:002FAFE3
+  4645 0001:002FAFF5  4646 0001:002FAFF9  4648 0001:002FB003  4650 0001:002FB00E
+  4651 0001:002FB01D  4652 0001:002FB023  4653 0001:002FB03F  4648 0001:002FB040
+  4655 0001:002FB043  4657 0001:002FB057  4659 0001:002FB065  4660 0001:002FB077
+  4663 0001:002FB08C  4664 0001:002FB0B5  4666 0001:002FB0D1  4657 0001:002FB0D2
+  4669 0001:002FB0D5  4671 0001:002FB0F3  4673 0001:002FB104  4674 0001:002FB119
+  4671 0001:002FB11A  4677 0001:002FB12A  4678 0001:002FB13F  4680 0001:002FB14E
+  4690 0001:002FB180  4691 0001:002FB1AD  4693 0001:002FB1B2  4694 0001:002FB1B6
+  4695 0001:002FB1BB  4696 0001:002FB1C8  4698 0001:002FB1D0  4700 0001:002FB1DA
+  4701 0001:002FB1E5  4703 0001:002FB1FC  4704 0001:002FB20A  4706 0001:002FB21F
+  4707 0001:002FB229  4708 0001:002FB233  4710 0001:002FB259  4711 0001:002FB298
+  4712 0001:002FB2DA  4714 0001:002FB2F2  4715 0001:002FB30B  4718 0001:002FB30D
+  4708 0001:002FB310  4719 0001:002FB31B  4720 0001:002FB334  4704 0001:002FB335
+  4723 0001:002FB33E  4725 0001:002FB355  4726 0001:002FB366  4725 0001:002FB385
+  4728 0001:002FB38A  4738 0001:002FB3C8  4739 0001:002FB3D4  4741 0001:002FB3E1
+  4742 0001:002FB3E8  4744 0001:002FB405  4745 0001:002FB419  4744 0001:002FB42C
+  4746 0001:002FB431  4747 0001:002FB440  4748 0001:002FB44E  4749 0001:002FB45D
+  4750 0001:002FB46B  4752 0001:002FB47F  4754 0001:002FB48E  4756 0001:002FB495
+  4758 0001:002FB4A3  4759 0001:002FB4B7  4760 0001:002FB4C1  4756 0001:002FB4C2
+  4762 0001:002FB4C7  4750 0001:002FB4C8  4763 0001:002FB4CD  4765 0001:002FB4DC
+  4767 0001:002FB4ED  4769 0001:002FB4FF  4770 0001:002FB503  4771 0001:002FB510
+  4773 0001:002FB526  4776 0001:002FB554  4778 0001:002FB55E  4779 0001:002FB562
+  4780 0001:002FB56B  4781 0001:002FB57D  4782 0001:002FB584  4783 0001:002FB58B
+  4784 0001:002FB594  4785 0001:002FB5A6  4786 0001:002FB5BD  4787 0001:002FB5D4
+  4788 0001:002FB5F2  4790 0001:002FB5FE  4791 0001:002FB615  4792 0001:002FB621
+  4793 0001:002FB635  4795 0001:002FB64A  4796 0001:002FB64E  4798 0001:002FB653
+  4799 0001:002FB662  4801 0001:002FB66E  4771 0001:002FB66F  4803 0001:002FB678
+  4765 0001:002FB679  4806 0001:002FB68F  4809 0001:002FB6AC  4811 0001:002FB6BC
+  4813 0001:002FB6D0  4814 0001:002FB6DF  4816 0001:002FB6EC  4817 0001:002FB6F1
+  4819 0001:002FB6F6  4811 0001:002FB6F7  4822 0001:002FB6FC  4833 0001:002FB704
+  4835 0001:002FB72A  4837 0001:002FB73E  4839 0001:002FB758  4840 0001:002FB765
+  4841 0001:002FB76F  4842 0001:002FB778  4848 0001:002FB809  4849 0001:002FB82D
+  4850 0001:002FB837  4851 0001:002FB842  4852 0001:002FB84F  4854 0001:002FB873
+  4857 0001:002FB8AB  4859 0001:002FB8D9  4862 0001:002FB90B  4863 0001:002FB92F
+  4866 0001:002FB95D  4869 0001:002FB9A0  4870 0001:002FB9CF  4872 0001:002FB9E2
+  4874 0001:002FB9FD  4875 0001:002FBA03  4876 0001:002FBA47  4877 0001:002FBA58
+  4879 0001:002FBA92  4882 0001:002FBAA8  4884 0001:002FBAD2  4885 0001:002FBAD8
+  4886 0001:002FBB1C  4887 0001:002FBB2D  4889 0001:002FBB67  4891 0001:002FBB7D
+  4893 0001:002FBB99  4894 0001:002FBBDD  4896 0001:002FBBF3  4898 0001:002FBC0D
+  4899 0001:002FBC23  4902 0001:002FBC39  4837 0001:002FBC3C  4904 0001:002FBC45
+  4906 0001:002FBC64  4907 0001:002FBC6D  4909 0001:002FBC7C  4910 0001:002FBC7E
+  4912 0001:002FBC94  4914 0001:002FBC9F  4915 0001:002FBCA5  4916 0001:002FBCA6
+  4910 0001:002FBCA9  4917 0001:002FBCAE  4918 0001:002FBCB8  4920 0001:002FBCC7
+  4921 0001:002FBCD1  4923 0001:002FBCE0  4924 0001:002FBCED  4926 0001:002FBCFC
+  4927 0001:002FBD04  4929 0001:002FBD0A  4930 0001:002FBD14  4931 0001:002FBD1A
+  4932 0001:002FBD25  4933 0001:002FBD49  4934 0001:002FBD5D  4937 0001:002FBD73
+  4938 0001:002FBD89  4937 0001:002FBD9F  4940 0001:002FBDA4  4946 0001:002FBFB8
+  4947 0001:002FBFBA  4948 0001:002FBFBC  4951 0001:002FBFC0  4952 0001:002FBFD7
+  4949 0001:002FBFDA  4954 0001:002FBFE2  4957 0001:002FBFE8  4959 0001:002FBFFE
+  4962 0001:002FC023  4965 0001:002FC054  4966 0001:002FC058  4968 0001:002FC05F
+  4969 0001:002FC066  4970 0001:002FC072  4973 0001:002FC077  4974 0001:002FC07C
+  4977 0001:002FC084  4978 0001:002FC09A  4979 0001:002FC0BF  4982 0001:002FC0F0
+  4983 0001:002FC0F6  4984 0001:002FC106  4992 0001:002FC10C  4993 0001:002FC12B
+  4995 0001:002FC149  4996 0001:002FC14B  4998 0001:002FC14F  4999 0001:002FC15E
+  5000 0001:002FC180  5002 0001:002FC182  5003 0001:002FC186  5004 0001:002FC198
+  5006 0001:002FC1A0  5007 0001:002FC1A8  5009 0001:002FC1BB  5011 0001:002FC1C8
+  5013 0001:002FC1F2  5014 0001:002FC1F8  5015 0001:002FC205  5018 0001:002FC21A
+  5007 0001:002FC21D  5019 0001:002FC220  5020 0001:002FC226  5021 0001:002FC23D
+  5024 0001:002FC248  5027 0001:002FC288  5028 0001:002FC29A  5029 0001:002FC2A9
+  5032 0001:002FC2C4  5033 0001:002FC2DF  5034 0001:002FC30F  5042 0001:002FC350
+  5043 0001:002FC374  5044 0001:002FC37F  5045 0001:002FC38D  5046 0001:002FC390
+  5047 0001:002FC3A6  5048 0001:002FC3C8  5049 0001:002FC3CC  5051 0001:002FC3DC
+  5053 0001:002FC3F9  5055 0001:002FC40F  5062 0001:002FC448  5063 0001:002FC470
+  5064 0001:002FC47F  5065 0001:002FC48D  5067 0001:002FC4A2  5068 0001:002FC4C2
+  5070 0001:002FC4C8  5071 0001:002FC4F8  5072 0001:002FC503  5074 0001:002FC50B
+  5065 0001:002FC50C  5076 0001:002FC51C  5078 0001:002FC52C  5079 0001:002FC54A
+  5080 0001:002FC55B  5079 0001:002FC571  5081 0001:002FC574  5085 0001:002FC5AC
+  5088 0001:002FC5B1  5089 0001:002FC5BC  5090 0001:002FC5C6  5092 0001:002FC5DA
+  5093 0001:002FC5E3  5096 0001:002FC5EE  5099 0001:002FC5F4  5102 0001:002FC5F9
+  5103 0001:002FC604  5104 0001:002FC60E  5106 0001:002FC622  5107 0001:002FC62B
+  5110 0001:002FC636  5114 0001:002FC63C  5115 0001:002FC63F  5117 0001:002FC644
+  5118 0001:002FC649  5120 0001:002FC64C  5126 0001:002FC650  5127 0001:002FC662
+  5132 0001:002FC664  5133 0001:002FC66C  5138 0001:002FC670  5139 0001:002FC686
+  5140 0001:002FC6AB  5159 0001:002FC6DC  5160 0001:002FC709  5161 0001:002FC70C
+  5162 0001:002FC715  5163 0001:002FC727  5165 0001:002FC730  5167 0001:002FC741
+  5168 0001:002FC75E  5169 0001:002FC76E  5170 0001:002FC781  5177 0001:002FC7F2
+  5179 0001:002FC7FF  5181 0001:002FC808  5182 0001:002FC812  5184 0001:002FC81C
+  5185 0001:002FC825  5186 0001:002FC82F  5188 0001:002FC83C  5189 0001:002FC86D
+  5190 0001:002FC876  5191 0001:002FC89E  5195 0001:002FC8CF  5198 0001:002FC8D4
+  5200 0001:002FC8DD  5201 0001:002FC8EB  5203 0001:002FC90F  5206 0001:002FC914
+  5208 0001:002FC925  5209 0001:002FC932  5212 0001:002FC959  5213 0001:002FC963
+  5215 0001:002FC967  5216 0001:002FC96C  5218 0001:002FC997  5221 0001:002FC9B1
+  5233 0001:002FCA0C  5234 0001:002FCA3A  5235 0001:002FCA42  5236 0001:002FCA5F
+  5237 0001:002FCA6F  5238 0001:002FCA82  5239 0001:002FCA88  5240 0001:002FCA9B
+  5241 0001:002FCAAE  5243 0001:002FCAC1  5244 0001:002FCAC8  5246 0001:002FCAF3
+  5248 0001:002FCB01  5250 0001:002FCB1D  5251 0001:002FCB33  5253 0001:002FCB3E
+  5254 0001:002FCB6E  5256 0001:002FCB70  5248 0001:002FCB73  5259 0001:002FCB78
+  5262 0001:002FCB85  5263 0001:002FCB89  5265 0001:002FCB92  5266 0001:002FCBAB
+  5267 0001:002FCBBC  5268 0001:002FCBE0  5271 0001:002FCBE4  5273 0001:002FCBFA
+  5274 0001:002FCBFF  5277 0001:002FCC4F  5279 0001:002FCC5C  5280 0001:002FCC62
+  5283 0001:002FCC6F  5284 0001:002FCC95  5285 0001:002FCCA4  5286 0001:002FCCAF
+  5291 0001:002FCD11  5293 0001:002FCD1A  5294 0001:002FCD2D  5295 0001:002FCD40
+  5296 0001:002FCD53  5298 0001:002FCD66  5300 0001:002FCD77  5302 0001:002FCD81
+  5304 0001:002FCD94  5305 0001:002FCDAA  5306 0001:002FCDB0  5307 0001:002FCDC1
+  5302 0001:002FCDC4  5309 0001:002FCDC7  5311 0001:002FCDE0  5313 0001:002FCDF6
+  5314 0001:002FCE0F  5315 0001:002FCE2A  5316 0001:002FCE3B  5311 0001:002FCE3E
+  5320 0001:002FCE41  5321 0001:002FCE4B  5325 0001:002FCE81  5326 0001:002FCE86
+  5328 0001:002FCE9C  5330 0001:002FCEA5  5332 0001:002FCEBB  5333 0001:002FCED1
+  5335 0001:002FCEDC  5336 0001:002FCEF5  5337 0001:002FCEFF  5339 0001:002FCF01
+  5330 0001:002FCF04  5342 0001:002FCF07  5344 0001:002FCF11  5346 0001:002FCF56
+  5347 0001:002FCF71  5348 0001:002FCF7E  5349 0001:002FCF92  5351 0001:002FCF98
+  5353 0001:002FCFB6  5354 0001:002FCFC4  5356 0001:002FCFCA  5358 0001:002FCFDC
+  5359 0001:002FCFDE  5363 0001:002FCFE5  5364 0001:002FCFEA  5366 0001:002FCFEF
+  5367 0001:002FD003  5369 0001:002FD00F  5370 0001:002FD033  5371 0001:002FD035
+  5366 0001:002FD038  5375 0001:002FD03B  5377 0001:002FD0C8  5378 0001:002FD108
+  5379 0001:002FD10D  5381 0001:002FD127  5383 0001:002FD134  5385 0001:002FD14E
+  5386 0001:002FD17F  5388 0001:002FD1AA  5383 0001:002FD1AB  5391 0001:002FD1B5
+  5392 0001:002FD1C4  5394 0001:002FD1DB  5395 0001:002FD1E9  5396 0001:002FD1EE
+  5398 0001:002FD208  5400 0001:002FD229  5401 0001:002FD267  5402 0001:002FD2A8
+  5404 0001:002FD2C0  5405 0001:002FD2F2  5406 0001:002FD31D  5408 0001:002FD320
+  5398 0001:002FD321  5409 0001:002FD32A  5396 0001:002FD32B  5413 0001:002FD336
+  5414 0001:002FD349  5422 0001:002FD390  5423 0001:002FD3A6  5424 0001:002FD3C3
+  5430 0001:002FD3E8  5431 0001:002FD3F5  5432 0001:002FD3FC  5433 0001:002FD403
+  5435 0001:002FD40A  5437 0001:002FD41B  5438 0001:002FD429  5439 0001:002FD43A
+  5435 0001:002FD43B  5441 0001:002FD43E  5442 0001:002FD448  5443 0001:002FD454
+  5446 0001:002FD464  5447 0001:002FD47B  5448 0001:002FD47D  5449 0001:002FD483
+  5450 0001:002FD4A6  5458 0001:002FD4D8  5459 0001:002FD4DE  5460 0001:002FD4EE
+  5463 0001:002FD4F4  5464 0001:002FD4FA  5465 0001:002FD50A  5470 0001:002FD510
+  5471 0001:002FD529  5472 0001:002FD52B  5474 0001:002FD541  5475 0001:002FD564
+  5476 0001:002FD58A  5477 0001:002FD58C  5480 0001:002FD5D8  5481 0001:002FD5DE
+  5482 0001:002FD5EE  5484 0001:002FD5F4  5485 0001:002FD5FB  5486 0001:002FD60D
+  5488 0001:002FD611  5491 0001:002FD614  5492 0001:002FD620  5493 0001:002FD624
+  5496 0001:002FD638  5497 0001:002FD64E  5498 0001:002FD673  5505 0001:002FD6A4
+  5506 0001:002FD6C2  5507 0001:002FD6D2  5508 0001:002FD6E5  5510 0001:002FD6F9
+  5512 0001:002FD71D  5513 0001:002FD721  5515 0001:002FD732  5517 0001:002FD737
+  5518 0001:002FD751  5519 0001:002FD771  5522 0001:002FD783  5535 0001:002FD7D0
+  5536 0001:002FD7F6  5537 0001:002FD804  5538 0001:002FD812  5539 0001:002FD819
+  5540 0001:002FD827  5541 0001:002FD832  5542 0001:002FD83D  5543 0001:002FD847
+  5544 0001:002FD84B  5546 0001:002FD895  5550 0001:002FD8B0  5553 0001:002FD8C9
+  5554 0001:002FD8D6  5551 0001:002FD8DA  5556 0001:002FD8F7  5557 0001:002FD909
+  5558 0001:002FD91C  5563 0001:002FD92E  5564 0001:002FD959  5569 0001:002FD965
+  5570 0001:002FD975  5571 0001:002FD98A  5574 0001:002FD99B  5575 0001:002FD9A6
+  5576 0001:002FD9D0  5577 0001:002FD9E5  5578 0001:002FD9F7  5584 0001:002FDA06
+  5586 0001:002FDA1C  5587 0001:002FDA2C  5589 0001:002FDA3E  5590 0001:002FDA6A
+  5591 0001:002FDA96  5593 0001:002FDAC2  5595 0001:002FDADA  5597 0001:002FDB0C
+  5599 0001:002FDB43  5593 0001:002FDB44  5603 0001:002FDB4C  5604 0001:002FDB5A
+  5612 0001:002FDB70  5614 0001:002FDB86  5615 0001:002FDB96  5617 0001:002FDBA8
+  5619 0001:002FDBC1  5621 0001:002FDBDC  5622 0001:002FDC06  5623 0001:002FDC17
+  5625 0001:002FDC20  5626 0001:002FDC30  5629 0001:002FDC3D  5631 0001:002FDC56
+  5633 0001:002FDC71  5635 0001:002FDC9B  5637 0001:002FDCB8  5639 0001:002FDCD6
+  5645 0001:002FDD09  5646 0001:002FDD1A  5648 0001:002FDD37  5650 0001:002FDD4E
+  5652 0001:002FDD54  5655 0001:002FDD7A  5656 0001:002FDDB6  5648 0001:002FDDB7
+  5657 0001:002FDDBA  5658 0001:002FDDDC  5660 0001:002FDDF1  5661 0001:002FDE01
+  5662 0001:002FDE23  5663 0001:002FDE30  5666 0001:002FDE3E  5668 0001:002FDE5B
+  5670 0001:002FDE72  5672 0001:002FDE78  5675 0001:002FDE9E  5676 0001:002FDEDA
+  5668 0001:002FDEDB  5678 0001:002FDEDE  5680 0001:002FDEFB  5682 0001:002FDF12
+  5684 0001:002FDF18  5687 0001:002FDF3E  5688 0001:002FDF7A  5680 0001:002FDF7B
+  5690 0001:002FDF7E  5694 0001:002FDF94  5696 0001:002FDFD3  5700 0001:002FE049
+  5701 0001:002FE07D  5702 0001:002FE08D  5704 0001:002FE099  5705 0001:002FE0A9
+  5708 0001:002FE0C3  5711 0001:002FE133  5712 0001:002FE141  5719 0001:002FE156
+  5721 0001:002FE182  5723 0001:002FE18B  5724 0001:002FE1A8  5726 0001:002FE1AF
+  5727 0001:002FE1B2  5728 0001:002FE1D9  5729 0001:002FE1EE  5732 0001:002FE1FF
+  5734 0001:002FE204  5737 0001:002FE20C  5738 0001:002FE22D  5739 0001:002FE259
+  5740 0001:002FE267  5741 0001:002FE293  5745 0001:002FE2A4  5747 0001:002FE2A9
+  5748 0001:002FE2BF  5751 0001:002FE2C5  5752 0001:002FE2D3  5754 0001:002FE2E9
+  5756 0001:002FE2F6  5757 0001:002FE2FC  5758 0001:002FE30A  5759 0001:002FE318
+  5761 0001:002FE330  5762 0001:002FE336  5766 0001:002FE34F  5768 0001:002FE355
+  5769 0001:002FE363  5772 0001:002FE381  5775 0001:002FE39D  5777 0001:002FE3B6
+  5778 0001:002FE3D1  5779 0001:002FE3EC  5783 0001:002FE670  5784 0001:002FE679
+  5786 0001:002FE6A6  5787 0001:002FE6BA  5795 0001:002FE6C0  5796 0001:002FE6C7
+  5797 0001:002FE6CE  5798 0001:002FE6D6  5800 0001:002FE6DD  5802 0001:002FE6F1
+  5804 0001:002FE6F5  5805 0001:002FE6F9  5808 0001:002FE702  5809 0001:002FE716
+  5810 0001:002FE720  5811 0001:002FE72A  5814 0001:002FE73C  5815 0001:002FE73E
+  5817 0001:002FE748  5819 0001:002FE753  5821 0001:002FE76A  5822 0001:002FE76C
+  5824 0001:002FE76E  5817 0001:002FE76F  5828 0001:002FE772  5831 0001:002FE77C
+  5832 0001:002FE792  5833 0001:002FE798  5835 0001:002FE79E  5836 0001:002FE7BB
+  5843 0001:002FE7E0  5844 0001:002FE7F6  5845 0001:002FE7FD  5846 0001:002FE801
+  5848 0001:002FE805  5849 0001:002FE809  5851 0001:002FE80D  5852 0001:002FE832
+  5855 0001:002FE864  5856 0001:002FE87A  5857 0001:002FE89F  5867 0001:002FE8D0
+  5868 0001:002FE8F6  5869 0001:002FE8FE  5871 0001:002FE90E  5872 0001:002FE918
+  5873 0001:002FE923  5874 0001:002FE976  5876 0001:002FE986  5877 0001:002FE99A
+  5884 0001:002FE9AA  5889 0001:002FE9BA  5890 0001:002FE9C8  5892 0001:002FE9FA
+  5893 0001:002FEA02  5894 0001:002FEA30  5897 0001:002FEA3D  5899 0001:002FEA62
+  5900 0001:002FEA6F  5903 0001:002FEA7E  5905 0001:002FEAA3  5906 0001:002FEAB0
+  5909 0001:002FEABF  5910 0001:002FEACC  5911 0001:002FEAE2  5916 0001:002FEB2E
+  5918 0001:002FEB3B  5923 0001:002FEB4A  5924 0001:002FEB5D  5927 0001:002FEB6F
+  5929 0001:002FEB7D  5930 0001:002FEB90  5934 0001:002FEBA0  5939 0001:002FEBBA
+  5940 0001:002FEBDC  5941 0001:002FEBFE  5942 0001:002FEC20  5947 0001:002FEC3D
+  5949 0001:002FEC4D  5952 0001:002FEC5E  5954 0001:002FEC71  5956 0001:002FEC8D
+  5958 0001:002FEC95  5959 0001:002FECAF  5960 0001:002FECC1  5964 0001:002FECDC
+  5965 0001:002FED09  5966 0001:002FED36  5968 0001:002FED63  5954 0001:002FED64
+  5972 0001:002FED72  5974 0001:002FED82  5976 0001:002FEDAD  5978 0001:002FEDD2
+  5979 0001:002FEDDF  5981 0001:002FEDF2  5983 0001:002FEE17  5984 0001:002FEE24
+  5986 0001:002FEE37  5988 0001:002FEE5C  5989 0001:002FEE69  5991 0001:002FEE7C
+  5993 0001:002FEEA5  5994 0001:002FEEAD  5999 0001:002FEEC5  6000 0001:002FEEDB
+  6002 0001:002FEEF5  6004 0001:002FEF01  6006 0001:002FEF0E  6007 0001:002FEF1B
+  6009 0001:002FEF2B  6011 0001:002FEF38  6012 0001:002FEF45  6014 0001:002FEF55
+  6016 0001:002FEF66  6017 0001:002FEF73  6022 0001:002FEF88  6024 0001:002FEFA5
+  6025 0001:002FEFB5  6027 0001:002FEFE3  6029 0001:002FF000  6030 0001:002FF010
+  6032 0001:002FF03E  6034 0001:002FF05B  6035 0001:002FF06B  6038 0001:002FF099
+  6000 0001:002FF09A  6043 0001:002FF0A8  6049 0001:002FF0B5  6050 0001:002FF0C0
+  6051 0001:002FF0E4  6053 0001:002FF0F1  6058 0001:002FF10B  6060 0001:002FF114
+  6062 0001:002FF12C  6063 0001:002FF136  6065 0001:002FF14D  6067 0001:002FF170
+  6068 0001:002FF178  6069 0001:002FF188  6072 0001:002FF1BC  6063 0001:002FF1BD
+  6074 0001:002FF1C7  6075 0001:002FF1D6  6077 0001:002FF1ED  6078 0001:002FF1FB
+  6079 0001:002FF200  6081 0001:002FF21D  6083 0001:002FF241  6084 0001:002FF294
+  6085 0001:002FF2EA  6087 0001:002FF30A  6089 0001:002FF334  6090 0001:002FF33C
+  6091 0001:002FF34C  6093 0001:002FF38C  6095 0001:002FF38F  6081 0001:002FF390
+  6096 0001:002FF399  6079 0001:002FF39A  6101 0001:002FF3A8  6103 0001:002FF3AD
+  6104 0001:002FF3B8  6105 0001:002FF3C4  6108 0001:002FF405  6109 0001:002FF40A
+  6111 0001:002FF41A  6113 0001:002FF428  6115 0001:002FF44F  6119 0001:002FF45C
+  6120 0001:002FF461  6132 0001:002FF46F  6133 0001:002FF48E  6135 0001:002FF4EC
+  6141 0001:002FF730  6142 0001:002FF74E  6143 0001:002FF780  6146 0001:002FF784
+  6147 0001:002FF78E  6148 0001:002FF79B  6150 0001:002FF79F  6152 0001:002FF7BA
+  6155 0001:002FF7F9  6158 0001:002FF7FB  6161 0001:002FF828  6162 0001:002FF833
+  6163 0001:002FF83D  6164 0001:002FF849  6171 0001:002FF858  6172 0001:002FF87F
+  6173 0001:002FF883  6174 0001:002FF88E  6176 0001:002FF8A4  6177 0001:002FF8D8
+  6178 0001:002FF90F  6180 0001:002FF927  6181 0001:002FF92B  6184 0001:002FF92D
+  6174 0001:002FF92E  6185 0001:002FF939  6186 0001:002FF93D  6192 0001:002FF97C
+  6193 0001:002FF9A6  6194 0001:002FF9AA  6195 0001:002FF9B1  6198 0001:002FF9BA
+  6200 0001:002FF9D8  6201 0001:002FFA14  6202 0001:002FFA53  6204 0001:002FFA6B
+  6206 0001:002FFA6F  6198 0001:002FFA70  6208 0001:002FFA79  6219 0001:002FFAB8
+  6220 0001:002FFADC  6221 0001:002FFB00  6222 0001:002FFB0A  6223 0001:002FFB17
+  6225 0001:002FFB1F  6226 0001:002FFB21  6228 0001:002FFB36  6230 0001:002FFB50
+  6231 0001:002FFB5E  6232 0001:002FFB6E  6234 0001:002FFB7D  6235 0001:002FFB96
+  6237 0001:002FFBA7  6239 0001:002FFBBB  6240 0001:002FFBC0  6242 0001:002FFBD8
+  6244 0001:002FFBEE  6247 0001:002FFC24  6249 0001:002FFC37  6250 0001:002FFC39
+  6253 0001:002FFC3B  6255 0001:002FFC3E  6240 0001:002FFC41  6258 0001:002FFC46
+  6259 0001:002FFC4A  6228 0001:002FFC4D  6261 0001:002FFC56  6264 0001:002FFC6D
+  6265 0001:002FFC78  6279 0001:002FFCB0  6280 0001:002FFCDE  6281 0001:002FFCEA
+  6282 0001:002FFD03  6283 0001:002FFD0E  6285 0001:002FFD18  6286 0001:002FFD1E
+  6289 0001:002FFD30  6290 0001:002FFD3E  6292 0001:002FFD5A  6293 0001:002FFD67
+  6298 0001:002FFD9D  6300 0001:002FFDAC  6302 0001:002FFDB6  6303 0001:002FFDC5
+  6306 0001:002FFDC9  6308 0001:002FFDEE  6309 0001:002FFDFC  6310 0001:002FFE0A
+  6313 0001:002FFE40  6314 0001:002FFE51  6316 0001:002FFE60  6319 0001:002FFE86
+  6321 0001:002FFEC4  6322 0001:002FFED9  6323 0001:002FFEDD  6324 0001:002FFEED
+  6326 0001:002FFEF5  6327 0001:002FFEF9  6328 0001:002FFF1A  6330 0001:002FFF3A
+  6331 0001:002FFF4D  6333 0001:002FFF5C  6335 0001:002FFF76  6337 0001:002FFF7C
+  6338 0001:002FFF84  6342 0001:002FFF8D  6344 0001:002FFF9C  6345 0001:002FFFA3
+  6350 0001:002FFFAC  6352 0001:002FFFC1  6353 0001:002FFFC6  6355 0001:002FFFDB
+  6357 0001:002FFFF5  6359 0001:002FFFFB  6362 0001:00300030  6363 0001:0030003F
+  6364 0001:00300043  6369 0001:00300045  6372 0001:00300065  6373 0001:0030006C
+  6374 0001:00300070  6377 0001:00300072  6379 0001:00300075  6353 0001:00300076
+  6382 0001:0030007D  6383 0001:00300083  6328 0001:00300086  6385 0001:0030008F
+  6387 0001:003000B8  6389 0001:003000D8  6390 0001:003000EB  6391 0001:00300105
+  6392 0001:00300110  6394 0001:00300117  6396 0001:00300128  6398 0001:0030014C
+  6399 0001:0030015E  6394 0001:0030015F  6401 0001:00300162  6387 0001:00300165
+  6404 0001:0030016E  6405 0001:00300174  6406 0001:0030018E  6408 0001:003001BB
+  6410 0001:0030020F  6413 0001:0030023A  6420 0001:0030026F  6421 0001:0030027D
+  6424 0001:003002D3  6426 0001:003002EF  6431 0001:003002FE  6435 0001:0030034B
+  6436 0001:00300356  6438 0001:00300369  6440 0001:0030038B  6441 0001:0030039B
+  6444 0001:003003AC  6449 0001:003003BB  6452 0001:00300408  6456 0001:00300455
+  6459 0001:00300480  6461 0001:0030048A  6462 0001:003004A1  6464 0001:003004C8
+  6466 0001:003004D9  6468 0001:003004E8  6469 0001:00300503  6471 0001:0030050C
+  6472 0001:00300517  6473 0001:0030051D  6475 0001:0030053E  6482 0001:0030054E
+  6486 0001:0030060C  6487 0001:0030062E  6488 0001:00300635  6489 0001:00300643
+  6491 0001:0030065B  6493 0001:0030066A  6504 0001:0030068C  6505 0001:003006AE
+  6506 0001:003006B9  6507 0001:003006C4  6509 0001:003006E2  6510 0001:003006F1
+  6511 0001:003006FF  6512 0001:00300712  6513 0001:00300725  6514 0001:00300729
+  6515 0001:0030073C  6516 0001:00300740  6518 0001:0030076D  6521 0001:0030077D
+  6523 0001:003007BB  6524 0001:003007BF  6526 0001:003007DF  6527 0001:003007F2
+  6528 0001:003007F9  6529 0001:00300808  6531 0001:00300814  6533 0001:00300826
+  6535 0001:00300834  6536 0001:0030084D  6538 0001:00300853  6531 0001:00300854
+  6540 0001:00300857  6541 0001:0030085D  6524 0001:00300860  6543 0001:00300869
+  6544 0001:00300870  6545 0001:0030087E  6547 0001:00300896  6549 0001:003008A5
+  6555 0001:003008D4  6556 0001:003008F7  6557 0001:00300900  6559 0001:00300909
+  6560 0001:00300913  6562 0001:00300919  6564 0001:00300924  6565 0001:0030092F
+  6567 0001:00300940  6568 0001:0030094C  6572 0001:0030095A  6573 0001:00300960
+  6575 0001:00300981  6576 0001:00300987  6578 0001:003009A3  6579 0001:003009A9
+  6581 0001:003009B7  6582 0001:003009C9  6584 0001:003009DA  6585 0001:00300A0C
+  6586 0001:00300A2A  6589 0001:00300AC4  6590 0001:00300ADC  6591 0001:00300ADE
+  6592 0001:00300AE5  6593 0001:00300AF9  6601 0001:00300B20  6602 0001:00300B39
+  6605 0001:00300B4A  6608 0001:00300B52  6610 0001:00300B63  6611 0001:00300B65
+  6615 0001:00300B6D  6616 0001:00300B6F  6618 0001:00300B71  6619 0001:00300B7B
+  6621 0001:00300B87  6622 0001:00300B8D  6623 0001:00300BAC  6624 0001:00300BBE
+  6626 0001:00300BC8  6632 0001:00300C04  6633 0001:00300C1E  6634 0001:00300C27
+  6636 0001:00300C33  6637 0001:00300C4D  6639 0001:00300C52  6640 0001:00300C61
+  6641 0001:00300C6F  6642 0001:00300C7D  6644 0001:00300C89  6648 0001:00300C9D
+  6649 0001:00300CA4  6652 0001:00300CEC  6653 0001:00300D05  6654 0001:00300D1F
+  6660 0001:00300D44  6661 0001:00300D65  6663 0001:00300D76  6664 0001:00300D96
+  6665 0001:00300DB6  6661 0001:00300DB7  6666 0001:00300DBA  6667 0001:00300DD3
+  6668 0001:00300DEC  6674 0001:00300E60  6675 0001:00300E7E  6677 0001:00300E8F
+  6679 0001:00300EBE  6680 0001:00300EDE  6682 0001:00300EFE  6675 0001:00300EFF
+  6683 0001:00300F02  6684 0001:00300F1B  6685 0001:00300F42  6694 0001:00300FD0
+  6695 0001:00300FF6  6696 0001:00300FF8  6697 0001:00301006  6698 0001:00301018
+  6699 0001:0030102D  6700 0001:00301054  6702 0001:00301072  6703 0001:00301080
+  6704 0001:0030108E  6705 0001:0030109D  6707 0001:003010AD  6708 0001:003010AF
+  6709 0001:003010DD  6710 0001:003010E1  6711 0001:003010EC  6712 0001:00301110
+  6713 0001:00301121  6715 0001:00301147  6717 0001:0030116D  6718 0001:003011B7
+  6719 0001:003011C1  6720 0001:003011D4  6722 0001:003011EC  6723 0001:003011FA
+  6724 0001:00301208  6725 0001:0030123F  6726 0001:00301259  6727 0001:00301268
+  6728 0001:00301273  6730 0001:0030127E  6731 0001:00301297  6733 0001:0030129F
+  6735 0001:003012B5  6736 0001:003012C9  6737 0001:003012E3  6733 0001:003012E4
+  6742 0001:003012EE  6744 0001:00301310  6745 0001:0030135A  6746 0001:00301364
+  6747 0001:0030136F  6749 0001:0030137E  6751 0001:003013A0  6752 0001:003013A8
+  6753 0001:003013B3  6755 0001:003013BB  6756 0001:003013C6  6758 0001:003013D5
+  6760 0001:003013E6  6761 0001:00301403  6762 0001:00301409  6764 0001:00301427
+  6766 0001:00301445  6767 0001:0030145F  6769 0001:0030146F  6771 0001:00301477
+  6773 0001:003014C0  6775 0001:003014D3  6776 0001:003014DC  6777 0001:003014FC
+  6779 0001:0030150E  6780 0001:00301512  6781 0001:00301532  6782 0001:0030154C
+  6777 0001:0030154D  6784 0001:00301552  6786 0001:0030155F  6789 0001:00301577
+  6790 0001:00301580  6792 0001:00301599  6793 0001:003015A2  6794 0001:003015BD
+  6797 0001:003015D4  6800 0001:00301626  6802 0001:00301643  6805 0001:00301784
+  6807 0001:00301799  6808 0001:003017B4  6816 0001:003017E0  6817 0001:003017FA
+  6819 0001:00301830  6820 0001:00301833  6825 0001:00301858  6826 0001:00301863
+  6827 0001:0030186D  6828 0001:00301877  6829 0001:00301883  6835 0001:00301894
+  6836 0001:0030189C  6839 0001:003018B1  6840 0001:003018C2  6839 0001:003018D9
+  6842 0001:003018DC  6843 0001:003018E6  6845 0001:003018EF  6848 0001:003018FB
+  6849 0001:003018FF  6850 0001:0030190B  6851 0001:00301913  6852 0001:0030191A
+  6854 0001:00301921  6863 0001:00301928  6864 0001:00301959  6865 0001:00301964
+  6868 0001:0030198C  6870 0001:00301992  6871 0001:00301998  6874 0001:003019A7
+  6875 0001:003019B4  6881 0001:00301A30  6882 0001:00301A33  6883 0001:00301A3C
+  6885 0001:00301A4F  6886 0001:00301A5D  6887 0001:00301A6C  6889 0001:00301A70
+  6890 0001:00301A7F  6891 0001:00301A8D  6892 0001:00301A9F  6893 0001:00301AAD
+  6895 0001:00301ACE  6896 0001:00301AD6  6899 0001:00301AE0  6900 0001:00301AEE
+  6901 0001:00301AF8  6908 0001:00301B58  6909 0001:00301B79  6910 0001:00301B88
+  6911 0001:00301B95  6912 0001:00301B99  6915 0001:00301B9D  6916 0001:00301BB7
+  6918 0001:00301BB9  6928 0001:00301BE8  6931 0001:00301C0E  6932 0001:00301C22
+  6933 0001:00301C2D  6934 0001:00301C38  6936 0001:00301C48  6938 0001:00301C55
+  6939 0001:00301C5E  6940 0001:00301C70  6942 0001:00301C86  6944 0001:00301CA5
+  6945 0001:00301CB5  6946 0001:00301CEB  6948 0001:00301D24  6942 0001:00301D27
+  6949 0001:00301D30  6955 0001:00301D46  6957 0001:00301D54  6959 0001:00301D6F
+  6960 0001:00301D7F  6962 0001:00301DB5  6963 0001:00301DD1  6964 0001:00301DDF
+  6965 0001:00301DE6  6967 0001:00301DEB  6957 0001:00301DEE  6970 0001:00301DF7
+  6971 0001:00301E04  6972 0001:00301E1D  6971 0001:00301E31  6973 0001:00301E36
+  6974 0001:00301E45  6975 0001:00301E56  6977 0001:00301E5C  6978 0001:00301E6A
+  6980 0001:00301E7C  6981 0001:00301E90  6983 0001:00301EAD  6984 0001:00301EBD
+  6987 0001:00301ED2  6989 0001:00301EE8  6990 0001:00301EF8  6991 0001:00301F14
+  6992 0001:00301F29  6987 0001:00301F2C  6994 0001:00301F2F  6981 0001:00301F32
+  6995 0001:00301F3B  6997 0001:00301F54  6998 0001:00301F64  6999 0001:00301F6A
+  7000 0001:00301F6D  6995 0001:00301F70  7001 0001:00301F75  7007 0001:00302000
+  7008 0001:00302006  7010 0001:00302017  7011 0001:00302021  7012 0001:00302025
+  7014 0001:0030202F  7020 0001:00302034  7022 0001:00302056
+
+Line numbers for uReminders(uReminders.pas) segment .itext
+
+  7016 0002:000018DC  7017 0002:000018F6  7019 0002:000018FB
+
+Line numbers for uDlgComponents(uDlgComponents.pas) segment .text
+
+   243 0001:0030406C   245 0001:00304075   247 0001:0030407E   248 0001:0030408E
+   249 0001:00304098   251 0001:003040A1   252 0001:003040AD   255 0001:003040B4
+   256 0001:003040BE   258 0001:003040C5   262 0001:003040C8   264 0001:003040D1
+   265 0001:003040E6   266 0001:003040F0   267 0001:003040F9   268 0001:00304105
+   269 0001:0030410C   271 0001:00304113   274 0001:00304114   275 0001:00304117
+   276 0001:0030411C   277 0001:00304122   280 0001:00304124   281 0001:00304127
+   282 0001:00304130   283 0001:00304135   284 0001:0030413B   287 0001:00304140
+   288 0001:0030415D   289 0001:00304162   290 0001:00304167   292 0001:00304173
+   293 0001:0030417C   294 0001:0030418B   296 0001:0030419A   297 0001:003041BA
+   298 0001:003041BF   299 0001:003041CC   300 0001:003041D5   302 0001:003041E6
+   303 0001:003041F6   304 0001:00304200   306 0001:00304209   307 0001:00304215
+   309 0001:0030421C   312 0001:00304260   313 0001:00304284   314 0001:003042A3
+   315 0001:003042BD   317 0001:003042C3   318 0001:003042CC   319 0001:003042DB
+   321 0001:003042E8   325 0001:00304328   326 0001:00304331   328 0001:00304339
+   329 0001:00304340   333 0001:00304344   334 0001:00304349   335 0001:0030434E
+   336 0001:00304353   339 0001:00304354   340 0001:00304369   341 0001:00304370
+   342 0001:00304397   343 0001:003043A3   344 0001:003043AA   345 0001:003043B4
+   346 0001:003043BE   347 0001:003043C5   370 0001:003043EC   371 0001:003043FE
+   372 0001:00304407   373 0001:00304419   376 0001:00304434   377 0001:0030443F
+   378 0001:00304449   379 0001:00304457   380 0001:00304462   381 0001:0030446E
+   457 0001:0030447C   458 0001:00304486   459 0001:0030448E   461 0001:003044A2
+   462 0001:003044AE   463 0001:003044C3   464 0001:003044D4   465 0001:003044E2
+   466 0001:003044F3   467 0001:003044FE   468 0001:0030450B   470 0001:00304529
+   473 0001:00304543   476 0001:00304548   477 0001:0030454B   478 0001:0030454F
+   479 0001:00304559   484 0001:0030455C   485 0001:0030456E   486 0001:00304577
+   487 0001:003045A0   490 0001:003045D0   491 0001:003045DB   492 0001:003045E6
+   493 0001:003045F2   499 0001:00304600   500 0001:0030462A   501 0001:00304642
+   503 0001:00304662   504 0001:0030466F   505 0001:00304671   500 0001:00304672
+   506 0001:00304675   511 0001:003046A4   512 0001:003046B6   513 0001:003046BF
+   514 0001:003046E8   517 0001:00304714   518 0001:0030471F   519 0001:0030472A
+   520 0001:00304736   525 0001:00304744   526 0001:00304756   527 0001:0030475F
+   528 0001:00304788   531 0001:003047B8   532 0001:003047C3   533 0001:003047CE
+   534 0001:003047DA   539 0001:003047E8   540 0001:003047FA   541 0001:00304803
+   542 0001:0030482C   545 0001:0030485C   546 0001:00304867   547 0001:00304872
+   548 0001:0030487E   553 0001:0030488C   554 0001:0030489E   555 0001:003048A7
+   556 0001:003048D0   559 0001:003048FC   560 0001:00304907   561 0001:00304912
+   562 0001:0030491E   567 0001:0030492C   568 0001:0030493E   569 0001:00304947
+   570 0001:00304952   571 0001:0030497E   574 0001:003049BC   575 0001:003049C7
+   576 0001:003049D2   577 0001:003049DE   586 0001:003049EC   587 0001:003049FE
+   598 0001:00304A07   599 0001:00304A33   602 0001:00304A74   603 0001:00304A7F
+   604 0001:00304A8A   605 0001:00304A96   610 0001:00304AA4   611 0001:00304ABB
+   612 0001:00304AC4   613 0001:00304ADA   614 0001:00304AE3   615 0001:00304AF0
+   616 0001:00304AFD   617 0001:00304B0A   618 0001:00304B17   619 0001:00304B2D
+   620 0001:00304B36   621 0001:00304B47   622 0001:00304B54   623 0001:00304B63
+   624 0001:00304B8F   627 0001:00304BD8   628 0001:00304BE3   629 0001:00304BEE
+   630 0001:00304BFA   635 0001:00304C08   636 0001:00304C1E   637 0001:00304C34
+   643 0001:00304C58   644 0001:00304C6A   645 0001:00304C73   646 0001:00304C9F
+   647 0001:00304CAF   650 0001:00304CE0   651 0001:00304CEB   652 0001:00304CF6
+   653 0001:00304D02   656 0001:00304D10   657 0001:00304D31   658 0001:00304D3F
+   659 0001:00304D4F   660 0001:00304D65   661 0001:00304D73   662 0001:00304D87
+   663 0001:00304DA0   664 0001:00304DAC   665 0001:00304DB5   666 0001:00304DC0
+   667 0001:00304DCB   672 0001:00304DF4   673 0001:00304DFC   674 0001:00304E03
+   679 0001:00304E04   680 0001:00304E16   681 0001:00304E1F   682 0001:00304E48
+   685 0001:00304E74   686 0001:00304E7F   687 0001:00304E8A   688 0001:00304E96
+   694 0001:00304EA4   695 0001:00304EA7   699 0001:00304EA8   700 0001:00304EDE
+   701 0001:00304EE7   702 0001:00304EEA   703 0001:00304EEE   704 0001:00304EF9
+   705 0001:00304F04   706 0001:00304F08   709 0001:00304F48   710 0001:00304F4E
+   711 0001:00304F54   712 0001:00304F60   714 0001:00304F66   715 0001:00304F6C
+   717 0001:00304F8A   720 0001:00304F93   721 0001:00304FB7   723 0001:00304FBD
+   724 0001:00304FC2   725 0001:00304FCE   727 0001:00304FE4   730 0001:0030500C
+   731 0001:00305012   732 0001:0030501C   735 0001:00305020   736 0001:00305026
+   737 0001:00305030   741 0001:00305034   742 0001:00305038   746 0001:0030503C
+   747 0001:00305040   750 0001:00305044   751 0001:00305064   752 0001:0030506F
+   755 0001:00305090   756 0001:003050B0   757 0001:003050BB   761 0001:003050DC
+   762 0001:003050DF   766 0001:003050E0   767 0001:003050E3   772 0001:003050E4
+   773 0001:003050F6   774 0001:003050FF   775 0001:0030512B   778 0001:0030516C
+   779 0001:00305177   780 0001:00305182   781 0001:0030518E   786 0001:003051B8
+   788 0001:003051D6
+
+Line numbers for uDlgComponents(uDlgComponents.pas) segment .itext
+
+   783 0002:00001914   785 0002:00001927
+
+Line numbers for mTemplateFieldButton(Templates\mTemplateFieldButton.pas) segment .text
+
+    52 0001:00305460    53 0001:00305482    55 0001:0030548F    56 0001:00305496
+    57 0001:003054A3    59 0001:003054B6    60 0001:003054C0    61 0001:003054CF
+    63 0001:003054E5    65 0001:00305502    66 0001:00305505    68 0001:00305507
+    61 0001:00305508    69 0001:0030550D    70 0001:00305510    71 0001:00305520
+    72 0001:00305525    73 0001:00305540    75 0001:00305549    76 0001:0030555A
+    77 0001:0030556B    78 0001:00305578    80 0001:00305585    81 0001:0030558F
+    83 0001:0030559D    85 0001:003055A7    89 0001:003055EC    90 0001:003055EF
+    92 0001:003055F8    93 0001:003055FF    95 0001:0030560C   101 0001:00305610
+   102 0001:00305613   103 0001:00305621   106 0001:00305624   107 0001:00305627
+   108 0001:00305635   111 0001:00305638   112 0001:0030564A   113 0001:00305653
+   114 0001:0030565C   115 0001:0030566E   116 0001:0030567E   117 0001:0030568E
+   118 0001:0030569D   119 0001:003056C6   123 0001:003056FC   124 0001:003056FF
+   125 0001:00305705   126 0001:00305718   130 0001:00305720   131 0001:00305723
+   132 0001:00305736   135 0001:00305740   136 0001:00305746   137 0001:00305753
+   141 0001:00305758   142 0001:00305763   147 0001:00305764   148 0001:0030576B
+   150 0001:0030577A   151 0001:0030579E   153 0001:003057B1   156 0001:003057B8
+   157 0001:003057C3   158 0001:003057CE   159 0001:003057D9   160 0001:003057E5
+
+Line numbers for mTemplateFieldButton(Templates\mTemplateFieldButton.pas) segment .itext
+
+   162 0002:00001928   163 0002:00001931   165 0002:0000193B
+
+Line numbers for uVA508CPRSCompatibility(uVA508CPRSCompatibility.pas) segment .text
+
+   129 0001:003062DC   130 0001:00306300   131 0001:00306306   133 0001:00306317
+   134 0001:00306336   137 0001:00306394   138 0001:003063B7   139 0001:003063C0
+   140 0001:003063DC   141 0001:003063E4   144 0001:00306408   145 0001:0030642B
+   146 0001:00306434   147 0001:00306450   148 0001:00306458   151 0001:0030647C
+   152 0001:0030649F   153 0001:003064A8   154 0001:003064B3   155 0001:003064BB
+   165 0001:003064E0   166 0001:0030652E   168 0001:00306535   169 0001:00306546
+   170 0001:00306557   171 0001:00306568   172 0001:00306579   174 0001:0030658A
+   176 0001:0030659B   177 0001:003065AC   178 0001:003065BD   179 0001:003065CE
+   180 0001:003065DF   181 0001:003065F0   182 0001:00306601   183 0001:00306612
+   184 0001:00306623   185 0001:00306634   186 0001:00306645   187 0001:00306656
+   189 0001:00306667   191 0001:00306678   194 0001:00306696   197 0001:003066B4
+   201 0001:003066D2   203 0001:003066D9   204 0001:00306705   205 0001:00306737
+   206 0001:00306769   207 0001:0030679B   208 0001:003067CD   209 0001:003067FF
+   210 0001:00306831   211 0001:00306863   214 0001:00306895   219 0001:00306B9C
+   220 0001:00306BAE   221 0001:00306BC7   224 0001:00306BE8   225 0001:00306BEE
+   226 0001:00306BFB   233 0001:00306C00   234 0001:00306C01   235 0001:00306C25
+   238 0001:00306C41   239 0001:00306C4E   241 0001:00306C5B   244 0001:00306C60
+   245 0001:00306C61   246 0001:00306C85   249 0001:00306CA1   250 0001:00306CB1
+   252 0001:00306CC1   256 0001:00306CC4   257 0001:00306CC9   262 0001:00306CCC
+   263 0001:00306CD0   264 0001:00306CD7   266 0001:00306CF1   267 0001:00306D05
+   269 0001:00306D19   270 0001:00306D34   271 0001:00306D42   274 0001:00306D4E
+   278 0001:00306D84   279 0001:00306D9B   280 0001:00306DB0   285 0001:00306DB4
+   286 0001:00306DC7   287 0001:00306DCF   288 0001:00306DD5   289 0001:00306DE2
+   290 0001:00306DE8   291 0001:00306DF5   292 0001:00306E0C   294 0001:00306E21
+   295 0001:00306E2E   296 0001:00306E34   297 0001:00306E41   303 0001:00306E9C
+   304 0001:00306EB5   306 0001:00306EC5   309 0001:00306EE7   310 0001:00306EEE
+   344 0001:00306F20   345 0001:00306F32   346 0001:00306F4B   351 0001:00306F6C
+   352 0001:00306F7E   353 0001:00306F97   358 0001:00306FB8   359 0001:00306FCA
+   360 0001:00306FE3   364 0001:00307004   365 0001:0030701F   367 0001:0030702F
+   370 0001:00307051   371 0001:00307058   372 0001:00307078   377 0001:003070C0
+   378 0001:003070D2   379 0001:003070EB   384 0001:0030710C   385 0001:0030711E
+   386 0001:00307137   390 0001:00307158   391 0001:0030715E   392 0001:00307167
+   397 0001:0030716C   398 0001:0030717E   399 0001:00307197   403 0001:003071B8
+   404 0001:003071BB   405 0001:003071C7   409 0001:003071F0   410 0001:003071F6
+   411 0001:003071FF   416 0001:00307204   417 0001:00307216   418 0001:00307225
+   422 0001:00307240   425 0001:00307249   426 0001:00307252   427 0001:0030725C
+   429 0001:00307268   434 0001:0030726C   435 0001:0030727E   436 0001:00307297
+   439 0001:003072B8   440 0001:003072D2   442 0001:003072E9   445 0001:0030730C
+   446 0001:00307313   468 0001:00307348   469 0001:0030735A   470 0001:00307373
+   474 0001:00307394   475 0001:003073AD   477 0001:003073C1   480 0001:003073E3
+   481 0001:003073EA   485 0001:0030741C   486 0001:0030741F   487 0001:0030742B
+   491 0001:0030744C   492 0001:0030744F   493 0001:0030745B   497 0001:00307490
+   498 0001:003074A9   499 0001:003074B2   500 0001:003074C2   501 0001:003074CE
+   506 0001:00307500   507 0001:00307512   508 0001:0030752B   513 0001:0030754C
+   514 0001:0030755E   515 0001:00307577   520 0001:00307598   521 0001:0030759B
+   522 0001:0030759E   527 0001:003075A0   528 0001:003075B2   529 0001:003075CB
+   534 0001:003075EC   535 0001:003075FE   536 0001:00307617   540 0001:00307638
+   541 0001:0030763B   542 0001:00307647   546 0001:00307658   547 0001:0030765B
+   548 0001:00307667
+
+Line numbers for uVA508CPRSCompatibility(uVA508CPRSCompatibility.pas) segment .itext
+
+   550 0002:0000193C   551 0002:00001945   554 0002:0000194A
+
+Line numbers for fDrawers(fDrawers.pas) segment .text
+
+   232 0001:0030805C   233 0001:00308072   246 0001:00308074   247 0001:0030808A
+   248 0001:00308098   249 0001:003080A6   251 0001:003080A8   252 0001:003080B8
+   253 0001:003080C6   254 0001:003080D1   249 0001:003080D2   256 0001:003080E4
+   258 0001:003080FA   260 0001:00308100   261 0001:0030810B   263 0001:00308128
+   264 0001:00308135   265 0001:00308137   266 0001:00308140   268 0001:00308142
+   269 0001:00308153   271 0001:00308163   272 0001:0030816A   273 0001:00308173
+   274 0001:0030817D   276 0001:0030818A   278 0001:003081A8   279 0001:003081C7
+   280 0001:003081D8   281 0001:003081EB   283 0001:003081FC   284 0001:00308207
+   287 0001:00308213   289 0001:0030821D   266 0001:0030821E   290 0001:00308227
+   291 0001:00308230   292 0001:00308238   293 0001:00308246   295 0001:0030825D
+   298 0001:0030826D   308 0001:00308274   309 0001:0030827E   311 0001:00308287
+   312 0001:0030828B   314 0001:0030828D   315 0001:0030829D   317 0001:003082A6
+   318 0001:003082AA   320 0001:003082AC   312 0001:003082AD   321 0001:003082B2
+   322 0001:003082B8   324 0001:003082C4   328 0001:003082CC   330 0001:003082D5
+   331 0001:003082DD   332 0001:003082E9   333 0001:003082F8   334 0001:00308304
+   335 0001:00308313   336 0001:0030831F   337 0001:0030832E   338 0001:0030833A
+   340 0001:00308349   341 0001:0030834F   350 0001:00308350   351 0001:0030835B
+   353 0001:0030837A   354 0001:00308384   355 0001:0030838A   356 0001:00308393
+   358 0001:00308395   359 0001:003083A7   360 0001:003083C3   361 0001:003083CE
+   362 0001:003083D9   356 0001:003083DA   363 0001:003083DF   364 0001:003083E9
+   365 0001:003083EF   366 0001:003083F6   368 0001:003083FC   369 0001:00308407
+   373 0001:00308414   374 0001:0030841F   377 0001:0030842A   384 0001:00308438
+   385 0001:00308444   387 0001:00308453   388 0001:0030845B   389 0001:00308469
+   391 0001:00308477   392 0001:00308488   393 0001:00308492   394 0001:003084A3
+   395 0001:003084AC   396 0001:003084B3   397 0001:003084BD   399 0001:003084C7
+   401 0001:003084CB   402 0001:003084D4   406 0001:003084E0   407 0001:003084F1
+   409 0001:00308509   410 0001:00308513   411 0001:0030851D   412 0001:0030852E
+   413 0001:00308537   414 0001:0030853E   415 0001:00308548   418 0001:00308553
+   421 0001:0030856A   423 0001:0030857A   425 0001:00308582   429 0001:00308588
+   430 0001:0030858F   433 0001:003085A1   434 0001:003085A9   439 0001:003085B3
+   440 0001:003085BB   445 0001:003085C5   446 0001:003085CD   451 0001:003085D7
+   452 0001:003085DF   457 0001:003085E9   458 0001:003085ED   461 0001:003085F1
+   465 0001:003085F8   466 0001:00308613   467 0001:0030861E   468 0001:00308626
+   469 0001:00308634   470 0001:00308640   471 0001:0030864D   472 0001:00308658
+   473 0001:00308662   474 0001:0030866D   475 0001:00308677   476 0001:00308692
+   477 0001:003086A5   478 0001:003086AD   479 0001:003086B9   480 0001:003086C5
+   482 0001:003086DA   484 0001:003086EA   491 0001:0030870C   492 0001:0030871B
+   493 0001:00308724   494 0001:00308732   495 0001:00308743   496 0001:00308752
+   497 0001:0030876C   499 0001:00308783   501 0001:00308794   502 0001:0030879C
+   503 0001:003087A0   509 0001:003087A8   510 0001:003087B5   512 0001:003087D6
+   513 0001:003087E3   514 0001:003087EC   515 0001:003087FA   516 0001:003087FC
+   515 0001:00308817   518 0001:00308829   520 0001:0030883A   522 0001:00308842
+   525 0001:0030884C   526 0001:0030884F   528 0001:00308861   529 0001:0030886A
+   530 0001:00308877   531 0001:00308886   532 0001:00308893   534 0001:0030889A
+   537 0001:0030889C   538 0001:003088B2   540 0001:003088BB   541 0001:003088C2
+   542 0001:003088E2   544 0001:003088F7   545 0001:00308900   546 0001:00308909
+   547 0001:00308917   551 0001:00308938   552 0001:0030893F   555 0001:00308940
+   556 0001:00308943   557 0001:0030894D   560 0001:00308958   561 0001:0030895D
+   563 0001:00308966   564 0001:00308971   565 0001:0030897E   566 0001:00308992
+   567 0001:0030899B   570 0001:003089A4   572 0001:003089AD   573 0001:003089B6
+   574 0001:003089C4   578 0001:003089C8   579 0001:003089CF   583 0001:003089D0
+   584 0001:003089D8   586 0001:003089E0   587 0001:003089E5   591 0001:003089E8
+   592 0001:003089F7   596 0001:003089F8   597 0001:003089FE   604 0001:00308A00
+   605 0001:00308A06   606 0001:00308A15   607 0001:00308A25   608 0001:00308A29
+   609 0001:00308A2B   610 0001:00308A31   621 0001:00308A34   622 0001:00308A59
+   623 0001:00308A61   624 0001:00308A6F   625 0001:00308A7A   626 0001:00308A7C
+   628 0001:00308A7E   629 0001:00308A8E   631 0001:00308AD9   632 0001:00308AE4
+   633 0001:00308AED   634 0001:00308B0C   635 0001:00308B10   636 0001:00308B12
+   626 0001:00308B13   637 0001:00308B1C   639 0001:00308B20   641 0001:00308B22
+   642 0001:00308B32   643 0001:00308B3E   639 0001:00308B3F   645 0001:00308B44
+   647 0001:00308B6A   649 0001:00308B7A   650 0001:00308B82   656 0001:00308BAC
+   657 0001:00308BCA   658 0001:00308BD4   659 0001:00308BE2   661 0001:00308BEF
+   662 0001:00308BF6   663 0001:00308BFD   664 0001:00308C1E   665 0001:00308C32
+   666 0001:00308C49   667 0001:00308C66   668 0001:00308C95   669 0001:00308CC4
+   670 0001:00308CE5   671 0001:00308CEF   672 0001:00308D05   673 0001:00308D12
+   674 0001:00308D1F   675 0001:00308D33   676 0001:00308D47   678 0001:00308D50
+   682 0001:00308D90   683 0001:00308DAE   688 0001:00308DB0   689 0001:00308DB3
+   690 0001:00308DCA   694 0001:00308DCC   698 0001:00308DE9   700 0001:00308E36
+   701 0001:00308E4D   705 0001:00308EA8   706 0001:00308EC9   708 0001:00308ECD
+   709 0001:00308EE1   711 0001:00308EEA   713 0001:00308EF3   714 0001:00308EFA
+   715 0001:00308F01   716 0001:00308F04   719 0001:00308F0A   721 0001:00308F0F
+   722 0001:00308F16   723 0001:00308F35   729 0001:00308F41   731 0001:00308F8E
+   734 0001:00308FEC   735 0001:00308FF3   737 0001:00308FFF   738 0001:00309009
+   739 0001:00309013   740 0001:00309021   741 0001:0030902D   743 0001:0030903F
+   745 0001:0030905C   748 0001:0030906E   752 0001:00309074   753 0001:0030907B
+   754 0001:00309080   757 0001:00309084   758 0001:00309087   761 0001:00309099
+   762 0001:003090A0   764 0001:003090C7   766 0001:003090CE   770 0001:003090D0
+   771 0001:003090ED   773 0001:003090F1   774 0001:00309105   776 0001:0030910E
+   778 0001:00309117   779 0001:0030911E   780 0001:00309125   781 0001:0030912B
+   784 0001:00309131   785 0001:00309139   790 0001:00309140   792 0001:0030918D
+   796 0001:003091E8   797 0001:003091F1   798 0001:003091F8   801 0001:00309207
+   802 0001:0030920E   805 0001:00309213   809 0001:0030921C   810 0001:0030921F
+   811 0001:00309224   814 0001:00309228   815 0001:00309229   817 0001:00309237
+   819 0001:0030923B   820 0001:00309253   822 0001:0030926B   823 0001:00309273
+   825 0001:00309277   826 0001:0030928F   827 0001:003092AD   828 0001:003092C3
+   831 0001:003092D3   838 0001:003092D8   839 0001:003092E4   840 0001:003092F2
+   841 0001:003092FD   842 0001:00309320   847 0001:00309328   848 0001:0030932E
+   850 0001:00309336   851 0001:00309343   854 0001:0030934C   855 0001:00309356
+   856 0001:0030936A   861 0001:00309370   862 0001:0030937A   863 0001:0030937D
+   865 0001:00309385   867 0001:0030939C   868 0001:0030939F   872 0001:003093AE
+   873 0001:003093B8   874 0001:003093D2   882 0001:003093D8   883 0001:003093F4
+   884 0001:003093FC   886 0001:00309431   887 0001:0030943F   888 0001:00309446
+   889 0001:0030944F   892 0001:0030945E   893 0001:00309467   895 0001:00309479
+   896 0001:00309483   898 0001:0030948D   899 0001:003094AA   901 0001:003094B4
+   902 0001:003094DD   903 0001:003094EB   904 0001:003094F9   905 0001:00309513
+   906 0001:0030952F   907 0001:0030954E   912 0001:00309555   920 0001:00309594
+   921 0001:003095B1   922 0001:003095B5   923 0001:003095B7   925 0001:003095C4
+   926 0001:003095D1   927 0001:003095DE   928 0001:003095E4   930 0001:003095EA
+   932 0001:003095ED   933 0001:003095FD   936 0001:0030961B   937 0001:00309639
+   938 0001:0030964B   939 0001:00309673   940 0001:00309682   944 0001:003096C0
+   945 0001:003096CD   946 0001:003096DA   948 0001:003096E7   949 0001:003096F4
+   950 0001:00309701   951 0001:00309725   952 0001:0030973A   954 0001:0030976A
+   955 0001:00309788   956 0001:003097A6   963 0001:003097D8   964 0001:003097EF
+   966 0001:003097FE   968 0001:00309821   969 0001:0030982F   970 0001:00309836
+   971 0001:00309840   972 0001:0030984B   975 0001:00309858   978 0001:00309898
+   979 0001:0030989B   980 0001:003098A9   981 0001:003098B6   984 0001:003098B8
+   985 0001:003098BB   986 0001:003098C8   987 0001:003098D3   990 0001:003098D8
+   991 0001:003098DB   992 0001:003098E4   993 0001:003098E9   996 0001:00309910
+   997 0001:00309921   999 0001:00309928  1000 0001:00309939  1001 0001:00309942
+  1008 0001:00309944  1009 0001:00309965  1011 0001:00309980  1012 0001:0030999E
+  1013 0001:003099A2  1015 0001:003099AD  1016 0001:003099C3  1017 0001:003099CD
+  1018 0001:003099D7  1019 0001:003099E5  1022 0001:00309A4A  1023 0001:00309A54
+  1026 0001:00309A66  1028 0001:00309A6C  1029 0001:00309A78  1030 0001:00309A82
+  1031 0001:00309A8C  1032 0001:00309A9A  1034 0001:00309AB8  1038 0001:00309ACA
+  1039 0001:00309ADB  1043 0001:00309B04  1045 0001:00309B0C  1046 0001:00309B14
+  1047 0001:00309B2A  1049 0001:00309B3A  1052 0001:00309B60  1053 0001:00309B76
+  1054 0001:00309B96  1055 0001:00309B9F  1061 0001:00309BC0  1062 0001:00309BC6
+  1063 0001:00309BD3  1064 0001:00309BDF  1065 0001:00309BE8  1066 0001:00309C02
+  1070 0001:00309C08  1071 0001:00309C15  1075 0001:00309C18  1076 0001:00309C25
+  1082 0001:00309C28  1083 0001:00309C2C  1084 0001:00309C3E  1085 0001:00309C48
+  1086 0001:00309C55  1087 0001:00309C62  1088 0001:00309C70  1093 0001:00309C74
+  1094 0001:00309C7B  1096 0001:00309C8A  1097 0001:00309C90  1101 0001:00309C95
+  1102 0001:00309C9D  1104 0001:00309CA0  1108 0001:00309CA8  1109 0001:00309CB3
+  1113 0001:00309CB4  1114 0001:00309CBF  1117 0001:00309CC0  1118 0001:00309CC3
+  1119 0001:00309CD1  1120 0001:00309CD8  1123 0001:00309CDC  1124 0001:00309CF3
+  1125 0001:00309D0B  1126 0001:00309D3A  1127 0001:00309D4B  1128 0001:00309D52
+  1129 0001:00309D5A  1130 0001:00309D61  1134 0001:00309D84  1136 0001:00309D87
+  1137 0001:00309D90  1139 0001:00309D9E  1140 0001:00309DAA  1141 0001:00309DB6
+  1145 0001:00309DFC  1147 0001:00309DFF  1148 0001:00309E08  1150 0001:00309E16
+  1151 0001:00309E22  1155 0001:00309E54  1157 0001:00309E57  1158 0001:00309E60
+  1160 0001:00309E6E  1161 0001:00309E7A  1162 0001:00309E86  1166 0001:00309ECC
+  1167 0001:00309ECF  1168 0001:00309ED8  1170 0001:00309EE6  1171 0001:00309EF2
+  1175 0001:00309F24  1176 0001:00309F38  1179 0001:00309F40  1180 0001:00309F4D
+  1182 0001:00309F53  1184 0001:00309F57  1185 0001:00309F62  1189 0001:00309F6F
+  1191 0001:00309F7D  1193 0001:00309F86  1194 0001:00309F93  1196 0001:00309F9E
+  1199 0001:00309FA7  1203 0001:00309FB4  1204 0001:00309FC6  1208 0001:00309FC8
+  1209 0001:00309FD2  1212 0001:00309FD4  1213 0001:00309FD7  1214 0001:00309FFA
+  1216 0001:0030A005  1217 0001:0030A012  1220 0001:0030A018  1221 0001:0030A01B
+  1222 0001:0030A024  1223 0001:0030A03E  1226 0001:0030A040  1227 0001:0030A043
+  1229 0001:0030A06A  1230 0001:0030A071  1233 0001:0030A074  1234 0001:0030A075
+  1236 0001:0030A07F  1237 0001:0030A083  1238 0001:0030A09B  1239 0001:0030A0A3
+  1241 0001:0030A0A7  1242 0001:0030A0BF  1243 0001:0030A0D5  1246 0001:0030A0E1
+  1249 0001:0030A0E4  1250 0001:0030A0E7  1251 0001:0030A0F3  1254 0001:0030A0F8
+  1255 0001:0030A0FB  1256 0001:0030A101  1258 0001:0030A105  1259 0001:0030A114
+  1263 0001:0030A123  1264 0001:0030A130  1266 0001:0030A13D  1274 0001:0030A140
+  1275 0001:0030A144  1276 0001:0030A15D  1278 0001:0030A161  1279 0001:0030A16E
+  1276 0001:0030A177  1281 0001:0030A17B  1283 0001:0030A180  1284 0001:0030A188
+  1285 0001:0030A192  1287 0001:0030A1A1  1289 0001:0030A1A5  1291 0001:0030A1C3
+  1292 0001:0030A1D5  1293 0001:0030A1DF  1295 0001:0030A1E9  1296 0001:0030A1F0
+  1297 0001:0030A1F4  1303 0001:0030A1FF  1305 0001:0030A209  1306 0001:0030A210
+  1308 0001:0030A219  1311 0001:0030A223  1314 0001:0030A228  1315 0001:0030A22F
+  1316 0001:0030A238  1317 0001:0030A246  1319 0001:0030A25E  1320 0001:0030A26C
+  1324 0001:0030A292  1325 0001:0030A2A3  1327 0001:0030A2B3  1329 0001:0030A2DC
+  1331 0001:0030A2ED  1335 0001:0030A2F0  1336 0001:0030A2F9  1338 0001:0030A321
+  1339 0001:0030A338  1345 0001:0030A340  1346 0001:0030A35C  1348 0001:0030A364
+  1350 0001:0030A379  1351 0001:0030A37B  1352 0001:0030A381  1355 0001:0030A3A5
+  1356 0001:0030A3ED  1357 0001:0030A3FC  1359 0001:0030A40C  1363 0001:0030A416
+  1364 0001:0030A423  1369 0001:0030A458  1370 0001:0030A462  1371 0001:0030A46B
+  1374 0001:0030A46C  1375 0001:0030A472  1376 0001:0030A47B  1377 0001:0030A48D
+  1378 0001:0030A49E  1381 0001:0030A4A4  1382 0001:0030A4A7  1383 0001:0030A4B1
+  1384 0001:0030A4BE  1388 0001:0030A4C4  1389 0001:0030A4C8  1392 0001:0030A4CC
+  1393 0001:0030A4CF  1394 0001:0030A4D6  1395 0001:0030A4DD  1398 0001:0030A4E0
+  1399 0001:0030A4F8  1400 0001:0030A524  1406 0001:0030A54C  1407 0001:0030A567
+  1408 0001:0030A588  1409 0001:0030A5A6  1410 0001:0030A5B3  1412 0001:0030A5E4
+  1413 0001:0030A5F1  1419 0001:0030A61C  1420 0001:0030A63E  1421 0001:0030A644
+  1422 0001:0030A654  1424 0001:0030A664  1425 0001:0030A671  1426 0001:0030A67E
+  1427 0001:0030A68C  1428 0001:0030A696  1429 0001:0030A6A0  1431 0001:0030A6D4
+  1432 0001:0030A6E1  1434 0001:0030A6F6  1436 0001:0030A703  1439 0001:0030A724
+  1440 0001:0030A73C  1441 0001:0030A764  1448 0001:0030A78C  1449 0001:0030A7A7
+  1451 0001:0030A7BA  1452 0001:0030A7C8  1453 0001:0030A7D8  1456 0001:0030A7F6
+  1457 0001:0030A805  1458 0001:0030A813  1459 0001:0030A828  1461 0001:0030A852
+  1465 0001:0030A862  1472 0001:0030A8B8  1473 0001:0030A8D0  1474 0001:0030A8D8
+  1478 0001:0030A923  1479 0001:0030A931  1480 0001:0030A93B  1481 0001:0030A958
+  1483 0001:0030A95E  1484 0001:0030A972  1487 0001:0030A981  1488 0001:0030A987
+  1489 0001:0030A991  1494 0001:0030AA1C  1495 0001:0030AA1F  1498 0001:0030AA4A
+  1500 0001:0030AA4C  1501 0001:0030AA5A  1502 0001:0030AA63  1503 0001:0030AA79
+  1505 0001:0030AA7D  1508 0001:0030AAB4  1509 0001:0030AAC6  1511 0001:0030AACF
+  1515 0001:0030AAD8  1516 0001:0030AAE1  1519 0001:0030AAE4  1520 0001:0030AAE7
+  1521 0001:0030AAF6  1523 0001:0030AB2B  1525 0001:0030AB36  1526 0001:0030AB3F
+  1529 0001:0030AB44  1530 0001:0030AB4A  1531 0001:0030AB57  1532 0001:0030AB5E
+  1533 0001:0030AB67  1537 0001:0030AB6C  1538 0001:0030AB75  1541 0001:0030AB84
+  1542 0001:0030AB9B  1545 0001:0030ABA0  1551 0001:0030ABA8  1552 0001:0030ABC3
+  1553 0001:0030ABDB  1554 0001:0030ABF3  1555 0001:0030AC1D  1556 0001:0030AC2B
+  1557 0001:0030AC39  1558 0001:0030AC47  1560 0001:0030AC53  1565 0001:0030ACDC
+  1566 0001:0030ACDF  1568 0001:0030ACF0  1569 0001:0030ACFF  1574 0001:0030AD3B
+  1575 0001:0030AD3F  1578 0001:0030AD49
+
+Line numbers for fDrawers(fDrawers.pas) segment .itext
+
+  1580 0002:0000194C  1581 0002:00001955  1583 0002:0000195F
+
+Line numbers for dShared(dShared.pas) segment .text
+
+   112 0001:0030AF90   113 0001:0030AF95   114 0001:0030AF98   116 0001:0030AFA2
+   118 0001:0030AFA5   119 0001:0030AFB4   121 0001:0030AFD5   122 0001:0030AFE4
+   125 0001:0030AFFE   126 0001:0030B007   128 0001:0030B015   130 0001:0030B030
+   131 0001:0030B03C   132 0001:0030B040   136 0001:0030B042   138 0001:0030B088
+   140 0001:0030B098   142 0001:0030B0A2   144 0001:0030B0A6   145 0001:0030B0A9
+   147 0001:0030B0AB   140 0001:0030B0AE   152 0001:0030B0B1   163 0001:0030B0B8
+   164 0001:0030B0D5   165 0001:0030B0F6   166 0001:0030B120   167 0001:0030B134
+   168 0001:0030B141   169 0001:0030B148   171 0001:0030B178   172 0001:0030B18C
+   174 0001:0030B1A5   175 0001:0030B1A9   176 0001:0030B1AE   178 0001:0030B1B4
+   179 0001:0030B1BE   180 0001:0030B1C2   184 0001:0030B1CE   185 0001:0030B1DE
+   186 0001:0030B1E2   188 0001:0030B1EB   191 0001:0030B1F1   192 0001:0030B1F9
+   195 0001:0030B1FF   196 0001:0030B206   197 0001:0030B20A   199 0001:0030B20E
+   201 0001:0030B218   203 0001:0030B21E   207 0001:0030B257   208 0001:0030B26D
+   211 0001:0030B272   221 0001:0030B294   222 0001:0030B2A6   223 0001:0030B2B0
+   224 0001:0030B2B4   226 0001:0030B2CB   227 0001:0030B2D2   228 0001:0030B2D7
+   229 0001:0030B2DD   230 0001:0030B2E4   231 0001:0030B2F6   232 0001:0030B31C
+   230 0001:0030B31D   233 0001:0030B320   234 0001:0030B33C   236 0001:0030B340
+   258 0001:0030B368   259 0001:0030B36D   260 0001:0030B36F   263 0001:0030B373
+   264 0001:0030B37B   266 0001:0030B37F   261 0001:0030B388   268 0001:0030B390
+   275 0001:0030B398   276 0001:0030B3B6   277 0001:0030B3BC   278 0001:0030B3C3
+   280 0001:0030B3D5   281 0001:0030B3D8   283 0001:0030B3ED   285 0001:0030B3FE
+   286 0001:0030B404   287 0001:0030B40A   289 0001:0030B413   292 0001:0030B43A
+   293 0001:0030B445   294 0001:0030B458   295 0001:0030B47B   297 0001:0030B487
+   298 0001:0030B48D   299 0001:0030B4A4   300 0001:0030B4C9   308 0001:0030B524
+   309 0001:0030B54C   310 0001:0030B551   312 0001:0030B55B   313 0001:0030B57B
+   314 0001:0030B588   316 0001:0030B590   317 0001:0030B5A0   318 0001:0030B5A7
+   319 0001:0030B5B5   323 0001:0030B5C4   324 0001:0030B5E0   326 0001:0030B5E5
+   320 0001:0030B5EE   328 0001:0030B607   330 0001:0030B611   331 0001:0030B624
+   335 0001:0030B633   337 0001:0030B649   338 0001:0030B664   339 0001:0030B698
+   341 0001:0030B6A8   332 0001:0030B6B1   343 0001:0030B6CE   345 0001:0030B6DD
+   346 0001:0030B6EB   347 0001:0030B6FB   351 0001:0030B713   355 0001:0030B722
+   362 0001:0030B778   363 0001:0030B796   365 0001:0030B7A9   367 0001:0030B7B2
+   368 0001:0030B7B9   372 0001:0030B7BD   373 0001:0030B7D4   374 0001:0030B7F6
+   375 0001:0030B804   377 0001:0030B80D   379 0001:0030B813   380 0001:0030B82E
+   379 0001:0030B84C   383 0001:0030B851   387 0001:0030B889   388 0001:0030B8A1
+   391 0001:0030B8A9   393 0001:0030B8F4   394 0001:0030B928   396 0001:0030B932
+   397 0001:0030B937   398 0001:0030B940   399 0001:0030B94B   400 0001:0030B959
+   401 0001:0030B967   402 0001:0030B972   403 0001:0030B978   404 0001:0030B983
+   405 0001:0030B987   406 0001:0030B98C   407 0001:0030B99B   409 0001:0030B9A9
+   410 0001:0030B9B8   411 0001:0030B9C6   412 0001:0030B9D0   413 0001:0030B9DC
+   414 0001:0030B9E2   416 0001:0030B9F9   417 0001:0030BA03   418 0001:0030BA0E
+   419 0001:0030BA12   421 0001:0030BA29   424 0001:0030BA35   425 0001:0030BA44
+   427 0001:0030BA4B   428 0001:0030BA56   429 0001:0030BA6D   430 0001:0030BA73
+   431 0001:0030BA7D   422 0001:0030BA86   435 0001:0030BA96   436 0001:0030BA9E
+   437 0001:0030BAA2   440 0001:0030BAAE   441 0001:0030BABA   443 0001:0030BAD1
+   444 0001:0030BAEB   445 0001:0030BAEF   446 0001:0030BAF8   441 0001:0030BAFB
+   448 0001:0030BAFE   450 0001:0030BB0A   451 0001:0030BB16   452 0001:0030BB1A
+   455 0001:0030BB24   457 0001:0030BB2E   458 0001:0030BB3A   460 0001:0030BB3E
+   461 0001:0030BB48   466 0001:0030BB5C   470 0001:0030BB79   474 0001:0030BB96
+   477 0001:0030BBAC   481 0001:0030BBFC   482 0001:0030BBFF   483 0001:0030BC11
+   484 0001:0030BC20   485 0001:0030BC2F   486 0001:0030BC3E   489 0001:0030BC40
+   490 0001:0030BC43   491 0001:0030BC50   492 0001:0030BC5D   495 0001:0030BC60
+   496 0001:0030BC67   497 0001:0030BC7E   498 0001:0030BC8B   499 0001:0030BCA0
+   505 0001:0030BCA4   506 0001:0030BCA7   508 0001:0030BCB1   509 0001:0030BCB6
+   510 0001:0030BCBA   512 0001:0030BCC7   518 0001:0030BCCC   519 0001:0030BCD1
+   521 0001:0030BCDA   522 0001:0030BCDF   523 0001:0030BCF0   522 0001:0030BD03
+   525 0001:0030BD06   531 0001:0030BD0C   532 0001:0030BD2A   534 0001:0030BD41
+   535 0001:0030BD45   536 0001:0030BD57   537 0001:0030BD62   538 0001:0030BD67
+   539 0001:0030BD84   538 0001:0030BDF7   540 0001:0030BDFC   541 0001:0030BE0A
+   543 0001:0030BE11   549 0001:0030BE48   550 0001:0030BE4A   551 0001:0030BE4C
+   553 0001:0030BE50   556 0001:0030BE5F   557 0001:0030BE68   554 0001:0030BE71
+   560 0001:0030BE79   570 0001:0030BE80   571 0001:0030BE9D   572 0001:0030BEA8
+   573 0001:0030BEBC   574 0001:0030BECC   577 0001:0030BEEC   578 0001:0030BEEF
+   579 0001:0030BEFA   581 0001:0030BF09   582 0001:0030BF0B   584 0001:0030BF10
+   585 0001:0030BF3D   586 0001:0030BF43   587 0001:0030BF4B   588 0001:0030BF55
+   589 0001:0030BF5F   591 0001:0030BF63   592 0001:0030BF73   594 0001:0030BF7D
+   595 0001:0030BF8D   596 0001:0030BF9C   598 0001:0030BFA0   599 0001:0030BFAC
+   601 0001:0030BFB1   602 0001:0030BFC5   603 0001:0030BFD4   605 0001:0030BFDA
+   606 0001:0030BFE6   608 0001:0030BFEB   609 0001:0030BFF8   611 0001:0030BFFC
+   612 0001:0030C034   614 0001:0030C039   615 0001:0030C041   616 0001:0030C045
+   618 0001:0030C062   620 0001:0030C067   622 0001:0030C097   623 0001:0030C09B
+   625 0001:0030C0C0   626 0001:0030C0DB   628 0001:0030C100   630 0001:0030C102
+   618 0001:0030C103   631 0001:0030C10C   632 0001:0030C112   616 0001:0030C113
+   633 0001:0030C11C   635 0001:0030C122   636 0001:0030C146   639 0001:0030C14A
+   640 0001:0030C154   641 0001:0030C161   643 0001:0030C165   644 0001:0030C176
+   645 0001:0030C187   647 0001:0030C18D   648 0001:0030C199   649 0001:0030C1A8
+   652 0001:0030C1B7   653 0001:0030C1C9   654 0001:0030C1D6   661 0001:0030C394
+   662 0001:0030C3C7   663 0001:0030C3CC   664 0001:0030C3DA   665 0001:0030C3FD
+   667 0001:0030C407   668 0001:0030C416   671 0001:0030C41F   672 0001:0030C426
+   673 0001:0030C430   674 0001:0030C436   675 0001:0030C443   677 0001:0030C468
+   680 0001:0030C495   681 0001:0030C49B   683 0001:0030C4AB   684 0001:0030C4B1
+   685 0001:0030C4CA   691 0001:0030C588   692 0001:0030C58D   694 0001:0030C597
+   695 0001:0030C5A2   694 0001:0030C5B5   697 0001:0030C5B8   706 0001:0030C5BC
+   707 0001:0030C5D3   708 0001:0030C5D5   710 0001:0030C5D9   712 0001:0030C5FC
+   713 0001:0030C5FE   715 0001:0030C600   708 0001:0030C609   717 0001:0030C60D
+   719 0001:0030C634   720 0001:0030C660   722 0001:0030C66A   723 0001:0030C66F
+   724 0001:0030C684   723 0001:0030C690   725 0001:0030C693   726 0001:0030C69B
+   728 0001:0030C6AB   729 0001:0030C6BB   731 0001:0030C6C5   732 0001:0030C6D0
+   734 0001:0030C6D4   735 0001:0030C6DA   736 0001:0030C6EA   737 0001:0030C6F8
+   739 0001:0030C705   740 0001:0030C70C   741 0001:0030C716   745 0001:0030C720
+   746 0001:0030C735   747 0001:0030C73E   748 0001:0030C742   750 0001:0030C745
+   754 0001:0030C74F   756 0001:0030C757   758 0001:0030C766   761 0001:0030C79C
+   762 0001:0030C7A0   765 0001:0030C7A4   766 0001:0030C7B0   768 0001:0030C7B4
+   763 0001:0030C7BD   770 0001:0030C7C5   780 0001:0030C7CC   781 0001:0030C7F8
+   782 0001:0030C806   783 0001:0030C814   785 0001:0030C819   786 0001:0030C829
+   788 0001:0030C82F   789 0001:0030C830   790 0001:0030C846   792 0001:0030C84A
+   793 0001:0030C85F   796 0001:0030C868   798 0001:0030C87B   800 0001:0030C891
+   810 0001:0030C8BC   811 0001:0030C8E8   816 0001:0030C8F2   817 0001:0030C900
+   819 0001:0030C91A   821 0001:0030C91C   822 0001:0030C93D   823 0001:0030C947
+   824 0001:0030C951   825 0001:0030C973   827 0001:0030C97D   828 0001:0030C987
+   829 0001:0030C99F   830 0001:0030C9B8   831 0001:0030C9D3   832 0001:0030C9DD
+   833 0001:0030C9FA   834 0001:0030CA24   835 0001:0030CA39   836 0001:0030CA46
+   840 0001:0030CA70   841 0001:0030CA87   842 0001:0030CA93   846 0001:0030CA9F
+   856 0001:0030CB0C   857 0001:0030CB36   858 0001:0030CB3B   860 0001:0030CB41
+   862 0001:0030CB4F   863 0001:0030CB86   864 0001:0030CB9A   867 0001:0030CBA7
+   869 0001:0030CBB7   872 0001:0030CBC1   874 0001:0030CBCF   875 0001:0030CC06
+   876 0001:0030CC1A   877 0001:0030CC27   879 0001:0030CC2A   880 0001:0030CC35
+   881 0001:0030CC47   884 0001:0030CC7D   885 0001:0030CC88
+
+Line numbers for dShared(dShared.pas) segment .itext
+
+   887 0002:00001960   888 0002:00001969   890 0002:00001973
+
+Line numbers for fTemplateImport(Templates\fTemplateImport.pas) segment .text
+
+    37 0001:0030E000    38 0001:0030E026    40 0001:0030E033    41 0001:0030E04C
+    44 0001:0030E056    45 0001:0030E080    46 0001:0030E0AB    47 0001:0030E0BD
+    48 0001:0030E0C7    51 0001:0030E0D3    54 0001:0030E104    55 0001:0030E108
+    57 0001:0030E111    58 0001:0030E126    60 0001:0030E12A    61 0001:0030E13C
+    65 0001:0030E14A    66 0001:0030E14C    70 0001:0030E154    71 0001:0030E15D
+    72 0001:0030E167    76 0001:0030E168    77 0001:0030E16B    78 0001:0030E17B
+    79 0001:0030E188    80 0001:0030E194    82 0001:0030E1DE
+
+Line numbers for uTemplates(Templates\uTemplates.pas) segment .text
+
+   412 0001:0030E668   413 0001:0030E693   414 0001:0030E69E   416 0001:0030E6AB
+   417 0001:0030E6B3   418 0001:0030E6C0   419 0001:0030E6D2   420 0001:0030E6E4
+   421 0001:0030E6F0   423 0001:0030E706   424 0001:0030E72C   426 0001:0030E754
+   435 0001:0030E7A8   436 0001:0030E7B7   437 0001:0030E7C5   439 0001:0030E7CF
+   440 0001:0030E7D3   442 0001:0030E7DD   443 0001:0030E7FF   446 0001:0030E805
+   447 0001:0030E822   448 0001:0030E844   453 0001:0030E870   454 0001:0030E874
+   460 0001:0030E87C   461 0001:0030E898   463 0001:0030E8B3   466 0001:0030E8C0
+   467 0001:0030E8C7   468 0001:0030E8CE   470 0001:0030E8DB   471 0001:0030E8DF
+   472 0001:0030E8E4   474 0001:0030E90A   476 0001:0030E951   477 0001:0030E987
+   478 0001:0030E996   479 0001:0030E99D   480 0001:0030E9A5   482 0001:0030E9A7
+   472 0001:0030E9AA   486 0001:0030E9B5   487 0001:0030E9C5   488 0001:0030E9D4
+   489 0001:0030E9DB   492 0001:0030E9E3   500 0001:0030EA10   501 0001:0030EA38
+   502 0001:0030EA4B   503 0001:0030EA60   505 0001:0030EA69   506 0001:0030EA79
+   508 0001:0030EA83   509 0001:0030EA95   510 0001:0030EAA5   512 0001:0030EAAE
+   513 0001:0030EAB7   514 0001:0030EAC1   515 0001:0030EACA   516 0001:0030EAD4
+   517 0001:0030EADD   518 0001:0030EAE7   519 0001:0030EAF0   520 0001:0030EAFA
+   521 0001:0030EB03   525 0001:0030EB0D   526 0001:0030EB1D   527 0001:0030EB29
+   528 0001:0030EB34   529 0001:0030EB3A   536 0001:0030EB74   537 0001:0030EB8E
+   539 0001:0030EB9B   540 0001:0030EBA5   541 0001:0030EBB3   542 0001:0030EBBC
+   543 0001:0030EBCD   544 0001:0030EBDC   545 0001:0030EBEA   546 0001:0030EBEF
+   547 0001:0030EC04   548 0001:0030EC1C   547 0001:0030EC37   549 0001:0030EC3C
+   551 0001:0030EC50   554 0001:0030EC6D   557 0001:0030EC7C   564 0001:0030ECC8
+   565 0001:0030ECE8   567 0001:0030ECF5   569 0001:0030ED05   570 0001:0030ED0F
+   571 0001:0030ED1D   572 0001:0030ED2C   573 0001:0030ED3A   574 0001:0030ED45
+   575 0001:0030ED5A   576 0001:0030ED72   575 0001:0030ED8E   578 0001:0030EDA0
+   581 0001:0030EDBD   584 0001:0030EDCC   585 0001:0030EDD3   587 0001:0030EDDC
+   588 0001:0030EDF5   591 0001:0030EDFC   597 0001:0030EE4C   598 0001:0030EE52
+   600 0001:0030EE5B   601 0001:0030EE75   600 0001:0030EE8A   602 0001:0030EE8F
+   603 0001:0030EE99   604 0001:0030EEA0   606 0001:0030EEA7   607 0001:0030EEAC
+   609 0001:0030EEB5   610 0001:0030EEBF   613 0001:0030EEC6   615 0001:0030EECF
+   616 0001:0030EEDB   617 0001:0030EEE5   620 0001:0030EEEC   622 0001:0030EEF5
+   623 0001:0030EEFF   625 0001:0030EF06   626 0001:0030EF0D   627 0001:0030EF14
+   628 0001:0030EF1B   629 0001:0030EF22   630 0001:0030EF29   636 0001:0030EF30
+   637 0001:0030EF36   639 0001:0030EF3F   640 0001:0030EF59   639 0001:0030EF71
+   642 0001:0030EF76   647 0001:0030EF7C   648 0001:0030EF98   649 0001:0030EF9E
+   651 0001:0030EFA7   652 0001:0030EFCA   655 0001:0030EFF1   656 0001:0030F00C
+   657 0001:0030F02A   658 0001:0030F030   660 0001:0030F04E   662 0001:0030F078
+   663 0001:0030F07F   664 0001:0030F090   665 0001:0030F0A1   666 0001:0030F0B2
+   667 0001:0030F0C3   669 0001:0030F0C7   676 0001:0030F0D0   677 0001:0030F0FA
+   678 0001:0030F0FF   680 0001:0030F109   681 0001:0030F112   682 0001:0030F123
+   683 0001:0030F13A   685 0001:0030F154   687 0001:0030F171   688 0001:0030F181
+   690 0001:0030F183   683 0001:0030F186   691 0001:0030F18B   693 0001:0030F191
+   694 0001:0030F19C   695 0001:0030F1A2   698 0001:0030F1AF   701 0001:0030F1E0
+   702 0001:0030F205   703 0001:0030F21F   705 0001:0030F229   706 0001:0030F240
+   712 0001:0030F264   713 0001:0030F289   714 0001:0030F29B   715 0001:0030F2AC
+   716 0001:0030F2C6   717 0001:0030F2DD   718 0001:0030F2F7   720 0001:0030F2FF
+   726 0001:0030F320   727 0001:0030F326   728 0001:0030F32A   730 0001:0030F333
+   732 0001:0030F34D   734 0001:0030F363   735 0001:0030F367   737 0001:0030F369
+   730 0001:0030F36C   739 0001:0030F371   742 0001:0030F378   743 0001:0030F39F
+   744 0001:0030F3A5   746 0001:0030F3BE   747 0001:0030F3CA   757 0001:0030F3F0
+   764 0001:0030F41C   766 0001:0030F428   767 0001:0030F430   770 0001:0030F435
+   771 0001:0030F43E   772 0001:0030F44F   773 0001:0030F459   775 0001:0030F467
+   777 0001:0030F485   779 0001:0030F48E   781 0001:0030F4C0   782 0001:0030F4D8
+   784 0001:0030F4E6   785 0001:0030F500   784 0001:0030F54C   788 0001:0030F553
+   791 0001:0030F562   792 0001:0030F583   794 0001:0030F5A3   796 0001:0030F5C0
+   797 0001:0030F5C9   799 0001:0030F5DA   802 0001:0030F605   803 0001:0030F622
+   805 0001:0030F661   806 0001:0030F67E   808 0001:0030F6BB   809 0001:0030F6D8
+   811 0001:0030F70D   812 0001:0030F72A   814 0001:0030F75F   815 0001:0030F77C
+   817 0001:0030F7B1   818 0001:0030F7CE   820 0001:0030F809   821 0001:0030F826
+   823 0001:0030F867   824 0001:0030F884   826 0001:0030F8C5   827 0001:0030F8E2
+   829 0001:0030F923   830 0001:0030F940   832 0001:0030F981   834 0001:0030F9A6
+   835 0001:0030F9BD   837 0001:0030F9CE   840 0001:0030FA02   841 0001:0030FA1F
+   843 0001:0030FA60   845 0001:0030FA80   846 0001:0030FA8C   848 0001:0030FA9D
+   851 0001:0030FAD7   853 0001:0030FAFC   854 0001:0030FB08   856 0001:0030FB19
+   859 0001:0030FB42   861 0001:0030FB67   862 0001:0030FB73   864 0001:0030FB84
+   867 0001:0030FBAD   869 0001:0030FBD2   870 0001:0030FBE1   872 0001:0030FBEB
+   873 0001:0030FBFC   876 0001:0030FC1F   878 0001:0030FC57   879 0001:0030FC66
+   880 0001:0030FC74   881 0001:0030FC90   883 0001:0030FC9C   884 0001:0030FCB4
+   883 0001:0030FD0E   887 0001:0030FD15   888 0001:0030FD22   890 0001:0030FD3D
+   896 0001:0030FD4D   898 0001:0030FD5F   899 0001:0030FD70   901 0001:0030FD98
+   902 0001:0030FDC0   903 0001:0030FDC6   905 0001:0030FDD6   909 0001:0030FDE5
+   911 0001:0030FE0F   912 0001:0030FE15   913 0001:0030FE25   914 0001:0030FE33
+   915 0001:0030FE43   917 0001:0030FE4C   918 0001:0030FE67   917 0001:0030FEA6
+   921 0001:0030FEAB   922 0001:0030FEB5   924 0001:0030FEC4   925 0001:0030FECF
+   929 0001:0030FED6   938 0001:0031010C   939 0001:00310138   940 0001:00310147
+   941 0001:00310155   943 0001:00310162   944 0001:0031016B   945 0001:0031017C
+   946 0001:00310196   945 0001:003101B1   947 0001:003101B6   948 0001:003101BA
+   949 0001:003101C6   950 0001:003101D5   952 0001:003101F3   953 0001:00310203
+   954 0001:0031020C   956 0001:00310238   957 0001:00310242   958 0001:0031025D
+   957 0001:0031027D   959 0001:00310282   960 0001:00310293   961 0001:00310297
+   963 0001:003102BD   965 0001:003102F4   967 0001:003102FA   968 0001:00310307
+   970 0001:0031030B   972 0001:0031037A   974 0001:0031037E   961 0001:00310381
+   975 0001:0031038A   976 0001:00310390   978 0001:003103A9   979 0001:003103B1
+   950 0001:003103B4   980 0001:003103BD   982 0001:003103D4   983 0001:003103DE
+   985 0001:003103E8   986 0001:003103F4   989 0001:0031040B   990 0001:00310419
+   992 0001:00310429   998 0001:003104E4   999 0001:003104EA  1001 0001:003104F3
+  1002 0001:0031050D  1001 0001:00310524  1004 0001:00310529  1010 0001:00310530
+  1011 0001:00310539  1013 0001:00310545  1014 0001:0031054E  1015 0001:0031055F
+  1016 0001:00310572  1017 0001:00310578  1019 0001:00310588  1020 0001:00310592
+  1021 0001:0031059A  1022 0001:003105B3  1021 0001:003105C9  1023 0001:003105CE
+  1026 0001:003105D4  1027 0001:003105F3  1028 0001:003105F7  1029 0001:00310631
+  1031 0001:00310637  1032 0001:0031064E  1033 0001:00310652  1036 0001:00310690
+  1037 0001:003106B4  1038 0001:003106D8  1041 0001:0031072C  1042 0001:00310733
+  1043 0001:0031074F  1052 0001:003107B8  1053 0001:003107DE  1054 0001:003107F1
+  1056 0001:00310846  1059 0001:00310894  1060 0001:003108BA  1061 0001:003108F6
+  1068 0001:00310920  1069 0001:0031094F  1071 0001:00310959  1072 0001:00310968
+  1073 0001:00310976  1074 0001:00310981  1075 0001:003109B2  1076 0001:003109CA
+  1075 0001:00310A0E  1077 0001:00310A13  1079 0001:00310A51  1081 0001:00310A61
+  1082 0001:00310A67  1084 0001:00310A74  1110 0001:00310AE8  1111 0001:00310B0F
+  1112 0001:00310B17  1114 0001:00310B3F  1115 0001:00310B4C  1116 0001:00310B5E
+  1117 0001:00310B74  1112 0001:00310B77  1118 0001:00310B7C  1119 0001:00310B8D
+  1125 0001:00310BC0  1126 0001:00310BEE  1127 0001:00310BF4  1129 0001:00310BFF
+  1130 0001:00310C08  1132 0001:00310C5A  1138 0001:00310CB0  1139 0001:00310CCD
+  1140 0001:00310CDA  1141 0001:00310CE0  1142 0001:00310CED  1143 0001:00310CFA
+  1145 0001:00310D00  1146 0001:00310D28  1147 0001:00310D31  1149 0001:00310D62
+  1150 0001:00310D68  1151 0001:00310D75  1152 0001:00310D83  1153 0001:00310D89
+  1154 0001:00310DB0  1161 0001:00310E44  1162 0001:00310E64  1163 0001:00310E73
+  1164 0001:00310E81  1165 0001:00310E8E  1166 0001:00310E96  1168 0001:00310EAE
+  1169 0001:00310EB6  1170 0001:00310EC6  1171 0001:00310EFA  1166 0001:00310EFD
+  1173 0001:00310F0F  1175 0001:00310F1F  1177 0001:00310F74  1178 0001:00310F9B
+  1179 0001:00310F9F  1178 0001:00310FB2  1180 0001:00310FB8  1181 0001:00310FC3
+  1182 0001:00310FC7  1183 0001:00310FD5  1184 0001:00310FE4  1185 0001:00310FF4
+  1186 0001:00311002  1187 0001:00311013  1188 0001:00311021  1189 0001:00311033
+  1190 0001:0031103D  1191 0001:0031104B  1192 0001:0031105C  1193 0001:0031106A
+  1194 0001:00311078  1195 0001:00311080  1199 0001:0031108E  1201 0001:003110E0
+  1203 0001:0031110F  1204 0001:00311115  1206 0001:00311121  1207 0001:0031112E
+  1209 0001:00311136  1211 0001:00311143  1212 0001:0031114E  1214 0001:00311154
+  1215 0001:00311162  1216 0001:00311168  1218 0001:0031118D  1220 0001:003111A3
+  1222 0001:003111AF  1223 0001:003111DB  1224 0001:003111E7  1226 0001:003111F6
+  1229 0001:00311203  1230 0001:0031120E  1231 0001:00311255  1232 0001:0031127A
+  1234 0001:0031129F  1235 0001:003112A7  1236 0001:003112B6  1237 0001:003112C4
+  1238 0001:003112D3  1239 0001:003112E1  1240 0001:003112F0  1241 0001:003112FE
+  1243 0001:00311303  1245 0001:00311318  1247 0001:00311324  1248 0001:00311328
+  1249 0001:00311330  1251 0001:00311335  1252 0001:00311345  1253 0001:0031134B
+  1254 0001:0031139A  1255 0001:003113B8  1258 0001:003113D6  1259 0001:003113DC
+  1261 0001:003113ED  1264 0001:003113FD  1267 0001:0031140D  1268 0001:00311425
+  1270 0001:00311436  1271 0001:0031146E  1272 0001:00311472  1273 0001:0031147A
+  1276 0001:003114E4  1277 0001:00311554  1278 0001:00311562  1279 0001:00311568
+  1280 0001:0031156E  1282 0001:00311572  1283 0001:0031157E  1284 0001:00311582
+  1285 0001:003115FC  1288 0001:00311610  1289 0001:00311631  1292 0001:00311657
+  1295 0001:00311660  1296 0001:00311664  1297 0001:0031166E  1301 0001:00311680
+  1302 0001:00311684  1303 0001:0031168E  1307 0001:003116A0  1308 0001:00311710
+  1309 0001:00311716  1311 0001:0031171C  1312 0001:00311748  1313 0001:0031174E
+  1315 0001:00311757  1316 0001:0031175D  1317 0001:00311764  1321 0001:0031176D
+  1322 0001:00311773  1323 0001:0031177A  1324 0001:00311783  1326 0001:0031178A
+  1327 0001:003117A9  1330 0001:003117C8  1331 0001:003117CE  1332 0001:003117F8
+  1333 0001:003117FE  1334 0001:0031180C  1335 0001:00311817  1336 0001:0031181F
+  1341 0001:00311830  1342 0001:0031183B  1343 0001:003118B4  1344 0001:003118D3
+  1345 0001:00311901  1346 0001:0031193F  1347 0001:0031197D  1348 0001:003119AB
+  1353 0001:003119BB  1354 0001:00311A48  1356 0001:00311A52  1357 0001:00311A5D
+  1358 0001:00311ACD  1359 0001:00311AD3  1361 0001:00311AF2  1362 0001:00311B20
+  1364 0001:00311B35  1365 0001:00311B45  1366 0001:00311C00  1367 0001:00311C3C
+  1362 0001:00311C3F  1368 0001:00311C48  1369 0001:00311C76  1373 0001:00311C81
+  1375 0001:00311C91  1377 0001:00311C9B  1378 0001:00311CA6  1379 0001:00311CB4
+  1381 0001:00311CBA  1382 0001:00311CD1  1383 0001:00311CE0  1386 0001:00311CEE
+  1387 0001:00311CFC  1389 0001:00311D2D  1391 0001:00311D35  1243 0001:00311D38
+  1392 0001:00311D41  1394 0001:00311D4B  1395 0001:00311D5B  1398 0001:00311D94
+  1399 0001:00311DAC  1401 0001:00311DBD  1403 0001:00311DF5  1405 0001:00311DFF
+  1407 0001:00311E11  1410 0001:00311E6B  1412 0001:00311E7D  1413 0001:00311E8A
+  1415 0001:00311E9A  1416 0001:00311EA7  1418 0001:00311EC3  1419 0001:00311ECB
+  1420 0001:00311EEA  1422 0001:00311EF6  1423 0001:00311F4D  1425 0001:00311F58
+  1416 0001:00311F5B  1426 0001:00311F64  1429 0001:00311F71  1430 0001:00311F7E
+  1433 0001:00311F94  1436 0001:00311FB1  1439 0001:00311FCE  1443 0001:00311FF9
+  1444 0001:00311FFC  1447 0001:00312019  1448 0001:00312028  1449 0001:00312036
+  1452 0001:00312053  1455 0001:00312077  1456 0001:0031207F  1459 0001:0031209C
+  1462 0001:003120C1  1464 0001:003120CE  1465 0001:003120D4  1466 0001:003120E5
+  1469 0001:00312590  1470 0001:00312594  1472 0001:00312598  1478 0001:003125A0
+  1479 0001:003125A6  1481 0001:003125AF  1482 0001:003125C9  1481 0001:003125DE
+  1484 0001:003125E3  1487 0001:003125E8  1488 0001:003125F1  1489 0001:003125F5
+  1491 0001:003125FB  1492 0001:00312604  1493 0001:00312613  1494 0001:0031261C
+  1495 0001:0031262B  1496 0001:00312636  1498 0001:0031263C  1499 0001:00312647
+  1501 0001:0031264B  1512 0001:0031267C  1513 0001:003126AD  1514 0001:003126B4
+  1515 0001:003126BB  1516 0001:003126D4  1518 0001:003126DE  1520 0001:003126EA
+  1521 0001:003126F5  1525 0001:00312702  1526 0001:0031270E  1529 0001:0031272D
+  1530 0001:00312738  1532 0001:00312740  1534 0001:00312746  1535 0001:00312753
+  1541 0001:00312760  1542 0001:0031276B  1543 0001:00312778  1544 0001:00312780
+  1546 0001:0031278B  1556 0001:003127BC  1557 0001:003127E7  1558 0001:003127F6
+  1559 0001:00312804  1560 0001:00312811  1561 0001:0031282B  1563 0001:0031284E
+  1565 0001:0031285E  1574 0001:0031288C  1575 0001:003128CC  1576 0001:003128D6
+  1577 0001:003128E4  1578 0001:003128F6  1579 0001:00312917  1580 0001:00312953
+  1581 0001:0031295A  1583 0001:0031295E  1585 0001:0031297A  1586 0001:00312983
+  1588 0001:00312985  1581 0001:00312988  1589 0001:0031298E  1590 0001:00312997
+  1591 0001:00312A02  1592 0001:00312A44  1593 0001:00312A6B  1594 0001:00312A9A
+  1595 0001:00312AC9  1596 0001:00312AF8  1597 0001:00312B27  1598 0001:00312B56
+  1599 0001:00312B85  1600 0001:00312BB4  1601 0001:00312BE3  1602 0001:00312C12
+  1603 0001:00312C3D  1604 0001:00312C79  1605 0001:00312C9A  1606 0001:00312CC6
+  1607 0001:00312CEF  1608 0001:00312D18  1609 0001:00312D2E  1610 0001:00312D57
+  1611 0001:00312D85  1612 0001:00312DB3  1613 0001:00312DBC  1614 0001:00312DC5
+  1615 0001:00312DCE  1617 0001:00312DD5  1619 0001:00312DEC  1621 0001:00312DFE
+  1632 0001:00312EA4  1633 0001:00312EDF  1634 0001:00312EEC  1635 0001:00312F10
+  1636 0001:00312F23  1637 0001:00312F3A  1638 0001:00312F48  1640 0001:00312F52
+  1641 0001:00312F6A  1643 0001:00312F81  1644 0001:00312F9C  1645 0001:00312FBE
+  1647 0001:00312FC2  1648 0001:00312FE9  1649 0001:00313025  1645 0001:00313028
+  1650 0001:0031302E  1641 0001:00313031  1653 0001:0031303C  1654 0001:00313041
+  1655 0001:00313051  1656 0001:0031305B  1657 0001:00313069  1659 0001:00313073
+  1661 0001:0031308A  1662 0001:003130A5  1663 0001:003130C7  1665 0001:003130CB
+  1667 0001:003130FA  1668 0001:0031310E  1669 0001:00313129  1672 0001:00313144
+  1673 0001:0031314C  1674 0001:00313163  1676 0001:0031316D  1677 0001:00313185
+  1679 0001:00313198  1680 0001:003131B3  1681 0001:003131E6  1682 0001:00313201
+  1677 0001:00313204  1687 0001:00313209  1663 0001:0031320C  1688 0001:00313216
+  1659 0001:00313219  1691 0001:0031322F  1694 0001:0031324E  1696 0001:0031325E
+  1697 0001:00313266  1698 0001:00313279  1701 0001:0031333C  1702 0001:0031334D
+  1703 0001:00313355  1704 0001:00313360  1705 0001:00313374  1706 0001:00313382
+  1709 0001:00313394  1710 0001:003133A0  1711 0001:003133A8  1712 0001:003133BA
+  1713 0001:003133C8  1719 0001:003133CC  1720 0001:003133D8  1721 0001:003133E0
+  1722 0001:003133F1  1723 0001:00313403  1724 0001:00313411  1727 0001:00313418
+  1728 0001:00313421  1730 0001:0031342A  1731 0001:0031343C  1732 0001:00313443
+  1733 0001:00313451  1735 0001:00313466  1738 0001:00313475  1739 0001:0031347E
+  1742 0001:00313488  1743 0001:00313491  1744 0001:0031349A  1746 0001:003134AC
+  1747 0001:003134B9  1748 0001:003134BF  1751 0001:003134C3  1757 0001:003134CC
+  1758 0001:003134D5  1760 0001:003134E7  1761 0001:003134EB  1763 0001:00313504
+  1764 0001:00313518  1766 0001:00313522  1767 0001:0031352A  1768 0001:00313530
+  1761 0001:00313533  1771 0001:0031353A  1772 0001:00313543  1793 0001:0031354C
+  1794 0001:0031356B  1795 0001:00313573  1796 0001:00313593  1798 0001:003135A3
+  1800 0001:003135AC  1801 0001:003135B6  1802 0001:003135C4  1803 0001:003135CF
+  1804 0001:003135F2  1806 0001:00313606  1809 0001:00313615  1811 0001:00313623
+  1820 0001:0031366C  1821 0001:00313694  1822 0001:0031369C  1823 0001:003136BC
+  1825 0001:003136C9  1826 0001:003136D1  1827 0001:003136D9  1829 0001:003136E2
+  1830 0001:003136F6  1829 0001:00313706  1832 0001:0031370B  1833 0001:00313714
+  1834 0001:0031371A  1835 0001:00313728  1837 0001:00313745  1838 0001:00313756
+  1840 0001:0031376D  1841 0001:00313773  1842 0001:00313781  1845 0001:003137CE
+  1835 0001:003137D1  1847 0001:003137E7  1848 0001:003137F0  1851 0001:003137FE
+  1857 0001:00313838  1858 0001:00313860  1859 0001:0031386B  1860 0001:0031388B
+  1861 0001:00313896  1862 0001:003138E9  1863 0001:003138F9  1864 0001:00313924
+  1868 0001:00313960  1869 0001:00313982  1871 0001:0031399E  1873 0001:003139A7
+  1875 0001:003139C5  1876 0001:003139D6  1879 0001:003139DD  1881 0001:003139EB
+  1882 0001:003139F2  1890 0001:00313A14  1891 0001:00313A39  1892 0001:00313A41
+  1893 0001:00313A61  1894 0001:00313A70  1895 0001:00313A7E  1896 0001:00313A88
+  1897 0001:00313A96  1898 0001:00313A9E  1900 0001:00313AAA  1901 0001:00313AB1
+  1902 0001:00313AB7  1903 0001:00313ABD  1905 0001:00313AC4  1906 0001:00313AD2
+  1907 0001:00313AE8  1909 0001:00313B18  1910 0001:00313B24  1912 0001:00313B34
+  1913 0001:00313B3C  1914 0001:00313B48  1915 0001:00313B78  1917 0001:00313B90
+  1920 0001:00313BAC  1922 0001:00313BBC  1929 0001:00313C2C  1930 0001:00313C35
+  1932 0001:00313C48  1933 0001:00313C53  1935 0001:00313C59  1937 0001:00313C62
+  1939 0001:00313C77  1940 0001:00313C89  1943 0001:00313C90  1947 0001:00313CA1
+  1948 0001:00313CA5  1950 0001:00313CB7  1951 0001:00313CBF  1952 0001:00313CD8
+  1951 0001:00313CF2  1954 0001:00313CF7  1957 0001:00313D00  1958 0001:00313D20
+  1960 0001:00313D42  1961 0001:00313D48  1963 0001:00313D66  1969 0001:00313D88
+  1970 0001:00313D94  1972 0001:00313DA4  1973 0001:00313DB5  1975 0001:00313DC9
+  1985 0001:00313DD0  1986 0001:00313DDA  1987 0001:00313DE0  1989 0001:00313E07
+  1990 0001:00313E12  1991 0001:00313E1C  1992 0001:00313E2A  1993 0001:00313E3A
+  1994 0001:00313E42  1995 0001:00313E51  1996 0001:00313E58  1997 0001:00313E60
+  1998 0001:00313E7B  1997 0001:00313E9D  1999 0001:00313EA2  2000 0001:00313EAA
+  2002 0001:00313ECA  2005 0001:00313EDC  2012 0001:00313EF4  2013 0001:00313F15
+  2014 0001:00313F76  2015 0001:00313F7F  2017 0001:00313F8E  2018 0001:00313F9B
+  2019 0001:00313FB1  2020 0001:00313FC0  2021 0001:00313FCF  2022 0001:00313FDE
+  2024 0001:00313FEB  2033 0001:00314120  2034 0001:0031414B  2035 0001:0031416F
+  2036 0001:00314188  2037 0001:003141A1  2038 0001:003141B3  2039 0001:003141BD
+  2040 0001:003141CB  2041 0001:003141E1  2043 0001:00314204  2045 0001:00314216
+  2051 0001:0031427C  2052 0001:00314288  2053 0001:00314290  2054 0001:00314298
+  2055 0001:003142B1  2054 0001:003142DC  2056 0001:003142E1  2059 0001:003142F4
+  2060 0001:00314300  2061 0001:00314314  2064 0001:0031431C  2065 0001:00314323
+  2066 0001:0031432B  2067 0001:00314343  2068 0001:00314353  2071 0001:00314358
+  2072 0001:00314374  2074 0001:0031437D  2076 0001:0031438F  2077 0001:003143A8
+  2080 0001:003143AF  2083 0001:003143D0  2084 0001:003143DC  2086 0001:003143F3
+  2088 0001:003143FC  2090 0001:00314411  2091 0001:0031441D  2094 0001:00314424
+  2096 0001:0031442D  2099 0001:00314434  2100 0001:00314440  2102 0001:00314457
+  2104 0001:00314460  2106 0001:00314475  2107 0001:00314481  2110 0001:00314488
+  2112 0001:00314491  2115 0001:00314498  2116 0001:003144A4  2118 0001:003144BB
+  2120 0001:003144C4  2122 0001:003144D9  2123 0001:003144E5  2126 0001:003144EC
+  2128 0001:003144F5  2131 0001:003144FC  2132 0001:00314508  2134 0001:0031451F
+  2136 0001:00314528  2138 0001:0031453D  2139 0001:00314549  2142 0001:00314550
+  2144 0001:00314559  2147 0001:00314560  2148 0001:0031456C  2150 0001:00314588
+  2152 0001:00314591  2154 0001:003145A6  2155 0001:003145B4  2158 0001:003145BB
+  2160 0001:003145C9  2163 0001:003145D0  2164 0001:003145DC  2166 0001:003145F3
+  2168 0001:003145FC  2170 0001:00314611  2171 0001:0031461D  2174 0001:00314624
+  2175 0001:0031462D  2176 0001:00314645  2178 0001:0031464F  2181 0001:00314654
+  2182 0001:00314673  2184 0001:0031467C  2185 0001:00314683  2186 0001:0031468A
+  2187 0001:00314691  2188 0001:00314698  2189 0001:0031469F  2190 0001:003146A6
+  2191 0001:003146AD  2192 0001:003146B4  2193 0001:003146BB  2194 0001:003146C2
+  2195 0001:003146C9  2196 0001:003146D0  2197 0001:003146D7  2198 0001:003146DE
+  2199 0001:003146E5  2200 0001:003146EC  2201 0001:003146F3  2202 0001:003146FA
+  2203 0001:00314701  2204 0001:00314708  2206 0001:0031470E  2208 0001:00314717
+  2209 0001:00314730  2212 0001:00314739  2215 0001:00314740  2218 0001:00314764
+  2219 0001:00314780  2220 0001:0031478D  2222 0001:00314796  2223 0001:003147B9
+  2224 0001:003147D8  2225 0001:003147F7  2226 0001:00314816  2227 0001:00314835
+  2228 0001:00314854  2229 0001:00314873  2230 0001:00314892  2231 0001:003148B1
+  2232 0001:003148D0  2233 0001:003148EF  2234 0001:0031490E  2235 0001:0031492D
+  2236 0001:00314956  2237 0001:0031497D  2238 0001:0031499F  2239 0001:003149C6
+  2240 0001:003149ED  2241 0001:00314A11  2242 0001:00314A35  2244 0001:00314A61
+  2247 0001:00314A88  2248 0001:00314A94  2250 0001:00314AB0  2252 0001:00314AB9
+  2254 0001:00314AD7  2255 0001:00314AE8  2258 0001:00314AEF  2260 0001:00314AFD
+  2261 0001:00314B04  2264 0001:00314B08  2265 0001:00314B27  2267 0001:00314B30
+  2268 0001:00314B3A  2269 0001:00314B48  2270 0001:00314B53  2272 0001:00314B83
+  2274 0001:00314B92  2276 0001:00314B99  2277 0001:00314BA7  2280 0001:00314BF0
+  2281 0001:00314BFC  2283 0001:00314C13  2285 0001:00314C1C  2287 0001:00314C31
+  2288 0001:00314C3D  2291 0001:00314C44  2293 0001:00314C4D  2296 0001:00314C54
+  2297 0001:00314C60  2299 0001:00314C77  2301 0001:00314C80  2303 0001:00314C95
+  2304 0001:00314CA1  2307 0001:00314CA8  2309 0001:00314CB1  2312 0001:00314CB8
+  2313 0001:00314CC4  2315 0001:00314CDB  2317 0001:00314CE4  2319 0001:00314CF9
+  2320 0001:00314D05  2323 0001:00314D0C  2325 0001:00314D15  2328 0001:00314D1C
+  2329 0001:00314D28  2331 0001:00314D3F  2333 0001:00314D48  2335 0001:00314D5D
+  2336 0001:00314D69  2339 0001:00314D70  2341 0001:00314D79  2344 0001:00314D80
+  2345 0001:00314D8C  2347 0001:00314DA3  2349 0001:00314DAC  2351 0001:00314DC1
+  2352 0001:00314DCD  2355 0001:00314DD4  2357 0001:00314DDD  2360 0001:00314DE4
+  2361 0001:00314DF0  2363 0001:00314E07  2365 0001:00314E10  2367 0001:00314E25
+  2368 0001:00314E31  2371 0001:00314E38  2373 0001:00314E41  2376 0001:00314E48
+  2377 0001:00314E67  2378 0001:00314E7C  2380 0001:00314E8D  2382 0001:00314E9E
+  2383 0001:00314EAC  2384 0001:00314EB2  2386 0001:00314EC0  2388 0001:00314EE1
+  2396 0001:00314F1C  2397 0001:00314F54  2398 0001:00314F61  2399 0001:00314F66
+  2401 0001:00314F6C  2403 0001:00314F8F  2404 0001:00314F98  2405 0001:00314FA3
+  2406 0001:00314FAC  2409 0001:00314FB7  2411 0001:00314FBB  2413 0001:00314FDE
+  2419 0001:003150CA  2420 0001:003150D0  2421 0001:003150EE  2422 0001:0031510E
+  2425 0001:0031515C  2426 0001:00315165  2427 0001:00315171  2428 0001:0031517B
+  2431 0001:00315184  2432 0001:0031518D  2433 0001:003151A8  2440 0001:003151B0
+  2441 0001:003151DC  2444 0001:003151EB  2445 0001:0031521E  2446 0001:00315222
+  2448 0001:00315227  2449 0001:0031522B  2450 0001:00315238  2451 0001:00315283
+  2452 0001:003152A7  2453 0001:003152B2  2455 0001:003152C1  2456 0001:003152D9
+  2457 0001:003152EC  2458 0001:00315315  2459 0001:00315329  2460 0001:0031533D
+  2461 0001:00315351  2462 0001:00315365  2463 0001:00315379  2464 0001:0031538D
+  2465 0001:003153A1  2466 0001:003153B5  2467 0001:003153C9  2468 0001:003153E8
+  2469 0001:00315407  2470 0001:0031540F  2472 0001:0031541F  2473 0001:0031544A
+  2475 0001:00315463  2476 0001:00315486  2477 0001:0031548C  2473 0001:0031548F
+  2478 0001:00315494  2480 0001:003154BF  2481 0001:003154E9  2493 0001:003156B4
+  2494 0001:003156D8  2495 0001:003156E3  2496 0001:003156E7  2497 0001:003156EB
+  2499 0001:00315707  2501 0001:0031573B  2502 0001:00315776  2503 0001:003157B1
+  2505 0001:003157CE  2506 0001:003157DF  2508 0001:003157E5  2510 0001:003157EB
+  2511 0001:003157F6  2513 0001:003157FA  2515 0001:00315800  2516 0001:00315848
+  2519 0001:00315858  2521 0001:0031585D  2523 0001:00315867  2524 0001:0031586D
+  2497 0001:00315870  2525 0001:00315879  2528 0001:0031587F  2529 0001:00315892
+  2530 0001:00315898  2531 0001:003158AB  2532 0001:003158B1  2533 0001:003158B9
+  2534 0001:003158D2  2533 0001:003158EB  2536 0001:003158F0  2539 0001:00315970
+  2540 0001:0031598F  2542 0001:003159B6  2544 0001:003159BF  2546 0001:003159D4
+  2547 0001:003159E8  2550 0001:003159EF  2551 0001:003159FF  2552 0001:00315A1A
+  2553 0001:00315A32  2555 0001:00315A3C  2558 0001:00315A60  2559 0001:00315A6C
+  2560 0001:00315A85  2561 0001:00315A96  2562 0001:00315A9E  2570 0001:00315AB0
+  2571 0001:00315ACD  2573 0001:00315AFD  2574 0001:00315B11  2575 0001:00315B1D
+  2577 0001:00315B29  2578 0001:00315B3A  2580 0001:00315B53  2584 0001:00315B81
+  2585 0001:00315B85  2588 0001:00315BEC  2589 0001:00315BF5  2590 0001:00315C19
+  2593 0001:00315C2C  2594 0001:00315C33  2596 0001:00315C4B  2597 0001:00315C56
+  2599 0001:00315C60  2602 0001:00315C64  2603 0001:00315C70  2605 0001:00315C87
+  2607 0001:00315C90  2609 0001:00315CA5  2610 0001:00315CB1  2613 0001:00315CB8
+  2615 0001:00315CC1  2618 0001:00315CC8  2619 0001:00315CD1  2620 0001:00315CFE
+  2623 0001:00315D08  2624 0001:00315D14  2626 0001:00315D2E  2628 0001:00315D37
+  2630 0001:00315D4C  2631 0001:00315D5B  2634 0001:00315D62  2635 0001:00315D6E
+  2637 0001:00315D84  2640 0001:00315D88  2641 0001:00315D94  2643 0001:00315DB3
+  2645 0001:00315DBC  2647 0001:00315DD1  2648 0001:00315DE5  2651 0001:00315DEC
+  2653 0001:00315DFC  2660 0001:00315E00  2661 0001:00315E0F  2662 0001:00315E15
+  2664 0001:00315E3C  2666 0001:00315E45  2668 0001:00315E5A  2669 0001:00315E6E
+  2672 0001:00315E75  2673 0001:00315E85  2674 0001:00315E92  2675 0001:00315E9E
+  2676 0001:00315EA8  2677 0001:00315EAE  2679 0001:00315EBC  2681 0001:00315EC2
+  2682 0001:00315ECA  2683 0001:00315EE3  2682 0001:00315EFD  2685 0001:00315F02
+  2688 0001:00315F08  2689 0001:00315F14  2690 0001:00315F21  2697 0001:00315F28
+  2698 0001:00315F59  2699 0001:00315F61  2701 0001:00315F71  2702 0001:00315F79
+  2703 0001:00315F96  2704 0001:00315FC8  2705 0001:00315FD3  2707 0001:00315FF5
+  2710 0001:00316034  2711 0001:0031603D  2712 0001:00316049  2713 0001:00316067
+  2714 0001:0031606B  2720 0001:00316074  2721 0001:0031607D  2722 0001:00316081
+  2723 0001:00316095  2724 0001:0031609B  2725 0001:003160A1  2728 0001:003160A7
+  2730 0001:003160AB  2732 0001:003160C9  2733 0001:003160CF  2735 0001:003160D1
+  2728 0001:003160D4  2738 0001:003160DA  2741 0001:003160E4  2742 0001:003160F0
+  2743 0001:00316109  2746 0001:00316110  2747 0001:00316132  2748 0001:0031613E
+  2749 0001:00316170  2750 0001:00316181  2757 0001:003161A8  2758 0001:003161CA
+  2759 0001:003161E0  2760 0001:003161E8  2761 0001:003161EE  2763 0001:003161FD
+  2764 0001:00316203  2766 0001:00316212  2767 0001:00316221  2768 0001:00316227
+  2769 0001:00316238  2779 0001:0031630C  2780 0001:0031632F  2782 0001:0031633E
+  2784 0001:00316343  2785 0001:0031635E  2787 0001:00316368  2788 0001:00316370
+  2790 0001:00316388  2791 0001:0031639B  2795 0001:003163AE  2796 0001:003163BE
+  2798 0001:003163C4  2799 0001:003163DB  2800 0001:003163EB  2802 0001:003163F1
+  2803 0001:00316406  2804 0001:00316418  2805 0001:00316427  2808 0001:00316434
+  2811 0001:0031643E  2793 0001:00316446  2813 0001:00316450  2816 0001:00316455
+  2817 0001:00316460  2818 0001:00316472  2823 0001:003164B8  2824 0001:00316522
+  2825 0001:00316531  2826 0001:0031653F  2827 0001:0031654C  2828 0001:00316577
+  2829 0001:003165BC  2830 0001:00316608  2832 0001:00316622  2833 0001:0031662D
+  2835 0001:0031663D  2840 0001:00316734  2841 0001:0031679E  2842 0001:003167AD
+  2843 0001:003167BB  2844 0001:003167C8  2845 0001:003167F3  2846 0001:00316832
+  2847 0001:00316878  2849 0001:00316892  2850 0001:0031689D  2852 0001:003168AD
+  2863 0001:003169A4  2866 0001:003169E1  2867 0001:003169E9  2868 0001:003169F7
+  2870 0001:00316A13  2871 0001:00316A41  2873 0001:00316A50  2874 0001:00316A5E
+  2876 0001:00316A68  2877 0001:00316A7B  2878 0001:00316A81  2879 0001:00316AA5
+  2880 0001:00316ABF  2881 0001:00316ACF  2882 0001:00316ADD  2885 0001:00316B15
+  2886 0001:00316B23  2887 0001:00316B29  2888 0001:00316B4D  2891 0001:00316B62
+  2892 0001:00316B6A  2896 0001:00316B87  2898 0001:00316B97  2901 0001:00316C88
+  2902 0001:00316C94  2903 0001:00316CAD  2909 0001:00316CB4  2910 0001:00316CD1
+  2912 0001:00316CDE  2913 0001:00316CEF  2914 0001:00316CF4  2915 0001:00316D16
+  2914 0001:00316D51  2916 0001:00316D56  2918 0001:00316D62  2923 0001:00316D8C
+  2924 0001:00316D93  2925 0001:00316D9B  2928 0001:00316DA0  2929 0001:00316DA4
+  2930 0001:00316DAC  2933 0001:00316DB4  2934 0001:00316DBB  2935 0001:00316DC3
+  2938 0001:00316DC8  2939 0001:00316DCC  2940 0001:00316DD4  2945 0001:00316DDC
+  2946 0001:00316DFA
+
+Line numbers for uTemplates(Templates\uTemplates.pas) segment .itext
+
+  2942 0002:00001974  2944 0002:0000197B
+
+Line numbers for fReportsAdhocSubItem1(fReportsAdhocSubItem1.pas) segment .text
+
+    71 0001:00317304    72 0001:00317308    73 0001:0031730C    74 0001:00317325
+    75 0001:00317333    76 0001:0031733D    77 0001:0031734A    78 0001:00317358
+    80 0001:00317369    82 0001:0031737B    85 0001:00317384    86 0001:00317387
+    87 0001:00317392    88 0001:003173A0    89 0001:003173A7    94 0001:003173AC
+    95 0001:003173CF    96 0001:003173DA    97 0001:003173E1    98 0001:003173F8
+    99 0001:0031740D   100 0001:00317424   101 0001:00317439   102 0001:00317449
+   103 0001:00317456   104 0001:00317466   105 0001:00317470   107 0001:0031748F
+   108 0001:0031749F   110 0001:003174D5   112 0001:0031751B   113 0001:00317536
+   114 0001:00317578   112 0001:003175B4   115 0001:003175BD   118 0001:00317654
+   119 0001:0031765A   120 0001:0031766A   121 0001:00317673   122 0001:00317680
+   128 0001:00317688   129 0001:00317693   131 0001:003176A2   132 0001:003176BE
+   133 0001:003176CF   134 0001:003176E9   136 0001:003176F5   140 0001:00317700
+   141 0001:00317713   142 0001:0031773E   143 0001:00317743   144 0001:00317752
+   146 0001:00317763   147 0001:0031776A   149 0001:00317779   151 0001:00317785
+   152 0001:0031778C   154 0001:0031779B   155 0001:003177A8   158 0001:003177B4
+   159 0001:003177B9   160 0001:003177BF   161 0001:003177C8   162 0001:003177E6
+   164 0001:003177F5   165 0001:00317822   166 0001:0031782F   171 0001:00317834
+   172 0001:00317838   173 0001:0031783E   176 0001:00317868   177 0001:00317874
+   178 0001:00317887   180 0001:00317893   185 0001:00317898   186 0001:0031789C
+   187 0001:003178A2   189 0001:003178B0   190 0001:003178BC   191 0001:003178CF
+   193 0001:003178DB   198 0001:003178E0   199 0001:003178E5   201 0001:003178F8
+   202 0001:0031790B   204 0001:00317910   207 0001:00317928   209 0001:0031792E
+   210 0001:00317942   209 0001:00317951   211 0001:00317956   212 0001:0031796A
+   211 0001:00317979   214 0001:0031797E   215 0001:00317989   216 0001:00317996
+   218 0001:003179A3   224 0001:00317A34   225 0001:00317A52   226 0001:00317A54
+   228 0001:00317A6A   229 0001:00317A7D   232 0001:00317A82   233 0001:00317A9F
+   234 0001:00317AB3   232 0001:00317AB9   235 0001:00317ABC   237 0001:00317AC0
+   238 0001:00317AD3   240 0001:00317AD8   242 0001:00317AE1   243 0001:00317AF5
+   244 0001:00317B56   242 0001:00317B65   245 0001:00317B6A   246 0001:00317B82
+   247 0001:00317B89   249 0001:00317B98   250 0001:00317BA8   253 0001:00317BB8
+   259 0001:00317C54   260 0001:00317C78   261 0001:00317C87   262 0001:00317C8F
+   263 0001:00317CAC   262 0001:00317CD0   264 0001:00317CD3   265 0001:00317CE7
+   266 0001:00317D29   264 0001:00317D38   267 0001:00317D3D   268 0001:00317D4F
+   269 0001:00317D62   270 0001:00317DB1   267 0001:00317DB2   271 0001:00317DB5
+   272 0001:00317DBF   273 0001:00317DD0   274 0001:00317DD8   275 0001:00317DE0
+   281 0001:00317E18   282 0001:00317E3B   286 0001:00317E56   287 0001:00317E6E
+   289 0001:00317E73   291 0001:00317E82   292 0001:00317E95   294 0001:00317E9A
+   296 0001:00317EB1   297 0001:00317EBF   299 0001:00317EFD   300 0001:00317F08
+   302 0001:00317F1F   303 0001:00317F41   305 0001:00317F48   300 0001:00317F4B
+   307 0001:00317F52   308 0001:00317F88   310 0001:00317F8F   314 0001:00317F98
+   315 0001:00317FCA   317 0001:00317FD1   318 0001:00317FEF   321 0001:00318024
+   323 0001:00318038   324 0001:00318045   326 0001:00318052   327 0001:00318060
+   331 0001:00318188   332 0001:003181A6   333 0001:003181AC   334 0001:003181B2
+   336 0001:003181DE   337 0001:003181FF   338 0001:00318208   340 0001:0031820D
+   344 0001:00318238   345 0001:00318241   346 0001:0031825F   349 0001:00318268
+   351 0001:0031826B   352 0001:0031827F   355 0001:00318284   357 0001:00318287
+   358 0001:0031829B   360 0001:003182CB
+
+Line numbers for fReportsAdhocComponent1(fReportsAdhocComponent1.pas) segment .text
+
+   130 0001:00318A78   131 0001:00318A7C   132 0001:00318A80   133 0001:00318A99
+   134 0001:00318AA7   135 0001:00318AB1   136 0001:00318ABE   137 0001:00318ACC
+   139 0001:00318ADD   141 0001:00318AEF   145 0001:00318AF8   146 0001:00318AFB
+   147 0001:00318B02   148 0001:00318B09   149 0001:00318B13   150 0001:00318B1A
+   151 0001:00318B24   152 0001:00318B35   153 0001:00318B4D   154 0001:00318B62
+   155 0001:00318B79   156 0001:00318B8E   157 0001:00318BA5   158 0001:00318BBA
+   159 0001:00318BD2   160 0001:00318BE7   163 0001:00318BEC   165 0001:00318BEF
+   166 0001:00318C09   167 0001:00318C23   168 0001:00318C3D   169 0001:00318C50
+   173 0001:00318C54   174 0001:00318C59   179 0001:00318C5C   180 0001:00318C80
+   181 0001:00318C8A   183 0001:00318C93   185 0001:00318CA7   193 0001:00318CC2
+   194 0001:00318D73   195 0001:00318D91   197 0001:00318DD4   204 0001:00318E9D
+   194 0001:00318EA0   205 0001:00318EA9   185 0001:00318EAA   208 0001:00318EB3
+   210 0001:00318EC3   211 0001:00318ED7   214 0001:00318EE1   217 0001:00318EF9
+   222 0001:00318F68   223 0001:00318F6C   224 0001:00318F71   225 0001:00318F83
+   226 0001:00318F87   227 0001:00318F99   228 0001:00318FA0   229 0001:00318FB2
+   230 0001:00318FB7   231 0001:00318FBE   232 0001:00318FC8   235 0001:00318FCC
+   236 0001:00318FCF   237 0001:00318FDC   238 0001:00318FE9   239 0001:00318FF6
+   240 0001:00319003   241 0001:00319010   242 0001:0031901D   243 0001:0031902A
+   244 0001:00319037   245 0001:00319044   246 0001:00319051   247 0001:0031905E
+   248 0001:0031906B   249 0001:00319078   250 0001:00319085   251 0001:00319095
+   252 0001:003190A5   253 0001:003190B2   260 0001:003190B4   261 0001:003190D7
+   262 0001:003190DE   263 0001:003190E4   264 0001:00319107   265 0001:00319115
+   266 0001:00319132   268 0001:0031913D   269 0001:00319169   271 0001:00319181
+   272 0001:0031918E   273 0001:0031919B   276 0001:003191A8   277 0001:003191AF
+   279 0001:003191B5   281 0001:003191F9   282 0001:0031921F   283 0001:0031922C
+   285 0001:00319239   287 0001:0031927D   289 0001:003192A3   290 0001:003192B0
+   292 0001:003192BD   294 0001:00319301   296 0001:00319327   297 0001:00319334
+   299 0001:00319341   301 0001:00319385   302 0001:00319392   303 0001:0031939F
+   304 0001:003193C6   306 0001:003193D8   308 0001:003193E8   310 0001:0031942C
+   311 0001:00319439   312 0001:00319446   313 0001:00319453   315 0001:00319479
+   317 0001:003194BD   318 0001:003194CA   319 0001:003194D7   320 0001:003194FE
+   322 0001:00319510   324 0001:00319520   326 0001:0031953F   327 0001:0031954D
+   328 0001:00319566   329 0001:003195A4   327 0001:003195DE   330 0001:003195E3
+   332 0001:003195F7   333 0001:00319604   334 0001:00319611   336 0001:0031961E
+   342 0001:00319668   343 0001:00319685   344 0001:0031968C   345 0001:00319699
+   346 0001:003196A6   347 0001:003196B3   348 0001:003196B8   349 0001:003196C6
+   351 0001:003196D9   352 0001:003196EC   355 0001:003196F1   356 0001:0031970B
+   357 0001:0031971C   355 0001:00319724   358 0001:00319727   360 0001:0031972D
+   361 0001:00319740   363 0001:00319745   365 0001:0031974E   366 0001:00319760
+   367 0001:0031979E   365 0001:003197AB   368 0001:003197B0   369 0001:003197CA
+   371 0001:003197DA   372 0001:003197E7   375 0001:003197F4   381 0001:00319890
+   382 0001:00319895   383 0001:0031989C   384 0001:003198A9   385 0001:003198B6
+   386 0001:003198C3   387 0001:003198D1   389 0001:003198E4   390 0001:003198F7
+   392 0001:003198FC   395 0001:00319914   397 0001:0031991A   398 0001:0031992C
+   397 0001:00319939   399 0001:0031993E   400 0001:00319952   399 0001:00319961
+   402 0001:00319966   403 0001:00319973   405 0001:00319980   409 0001:00319A18
+   410 0001:00319A1B   411 0001:00319A20   412 0001:00319A26   416 0001:00319A2C
+   417 0001:00319A2F   418 0001:00319A34   419 0001:00319A3A   427 0001:00319A40
+   428 0001:00319A63   430 0001:00319A72   431 0001:00319A85   433 0001:00319A8A
+   434 0001:00319A98   435 0001:00319A9F   436 0001:00319AB2   437 0001:00319AB8
+   438 0001:00319AC3   439 0001:00319ACA   441 0001:00319AD0   442 0001:00319B08
+   443 0001:00319B40   444 0001:00319B78   445 0001:00319BBB   446 0001:00319BF3
+   447 0001:00319C2B   448 0001:00319C63   449 0001:00319C9B   451 0001:00319CA5
+   454 0001:00319CAB   455 0001:00319CE0   456 0001:00319CF9   457 0001:00319D06
+   459 0001:00319D13   460 0001:00319D22   461 0001:00319D31   462 0001:00319D52
+   464 0001:00319D62   465 0001:00319D8F   466 0001:00319DC5   467 0001:00319DF2
+   469 0001:00319E0E   470 0001:00319E1B   471 0001:00319E28   472 0001:00319E35
+   473 0001:00319E56   475 0001:00319E66   476 0001:00319E74   477 0001:00319E89
+   478 0001:00319EA4   479 0001:00319EFB   477 0001:00319EFE   482 0001:00319F06
+   484 0001:00319F13   485 0001:00319F21   486 0001:00319F3E   487 0001:00319F8F
+   485 0001:00319FD8   488 0001:00319FDF   490 0001:00319FF2   495 0001:0031A007
+   499 0001:0031A01A   501 0001:0031A020   503 0001:0031A06C   504 0001:0031A0B0
+   505 0001:0031A0BD   507 0001:0031A0CA   509 0001:0031A116   510 0001:0031A15A
+   511 0001:0031A167   513 0001:0031A174   515 0001:0031A1C0   516 0001:0031A204
+   517 0001:0031A211   519 0001:0031A21E   521 0001:0031A26A   522 0001:0031A277
+   523 0001:0031A284   524 0001:0031A2C9   526 0001:0031A2D9   528 0001:0031A329
+   529 0001:0031A336   530 0001:0031A343   531 0001:0031A350   532 0001:0031A395
+   533 0001:0031A3A5   534 0001:0031A3EA   535 0001:0031A3FA   536 0001:0031A43F
+   537 0001:0031A44F   538 0001:0031A494   539 0001:0031A4A4   540 0001:0031A4E9
+   542 0001:0031A4F9   544 0001:0031A545   545 0001:0031A552   546 0001:0031A55F
+   547 0001:0031A5A4   550 0001:0031A5B4   551 0001:0031A5BC   552 0001:0031A5C4
+   557 0001:0031A718   558 0001:0031A71E   559 0001:0031A72D   560 0001:0031A733
+   562 0001:0031A741   563 0001:0031A74D   564 0001:0031A760   566 0001:0031A76C
+   571 0001:0031A774   572 0001:0031A77A   573 0001:0031A789   574 0001:0031A78F
+   577 0001:0031A7B9   578 0001:0031A7C5   579 0001:0031A7D8   581 0001:0031A7E4
+   585 0001:0031A7EC   586 0001:0031A7FF   588 0001:0031A82A   589 0001:0031A82F
+   590 0001:0031A83E   592 0001:0031A84F   593 0001:0031A856   595 0001:0031A865
+   597 0001:0031A871   598 0001:0031A878   600 0001:0031A887   601 0001:0031A894
+   607 0001:0031A8A0   608 0001:0031A8AB   610 0001:0031A8BA   611 0001:0031A8D6
+   612 0001:0031A8E7   613 0001:0031A901   615 0001:0031A90D   618 0001:0031A918
+   619 0001:0031A91E   620 0001:0031A92E   621 0001:0031A937   622 0001:0031A944
+   625 0001:0031A94C   626 0001:0031A951   627 0001:0031A957   628 0001:0031A960
+   629 0001:0031A97E   631 0001:0031A98D   632 0001:0031A9BA   633 0001:0031A9C7
+   638 0001:0031A9CC   639 0001:0031A9EB   641 0001:0031A9F8   642 0001:0031AA08
+   643 0001:0031AA18   644 0001:0031AA29   645 0001:0031AA41   646 0001:0031AA7F
+   644 0001:0031AABC   647 0001:0031AABF   649 0001:0031AAD6   650 0001:0031AAE6
+   651 0001:0031AAF6   654 0001:0031AB06   659 0001:0031AB30   660 0001:0031AB48
+   661 0001:0031AB62   662 0001:0031AB7E   663 0001:0031ABAB   660 0001:0031ABAC
+   664 0001:0031ABAF   670 0001:0031ABD4   671 0001:0031ABEC   672 0001:0031AC06
+   673 0001:0031AC22   674 0001:0031AC4F   671 0001:0031AC50   675 0001:0031AC53
+   680 0001:0031AC78   681 0001:0031AC92   682 0001:0031ACAF   683 0001:0031ACBF
+   684 0001:0031ACD9   685 0001:0031ACF5   686 0001:0031AD22   683 0001:0031AD23
+   687 0001:0031AD26   693 0001:0031AD70   694 0001:0031AD75   695 0001:0031AD8F
+   696 0001:0031ADAB   697 0001:0031ADBD   699 0001:0031ADDE   694 0001:0031ADFE
+   700 0001:0031AE01   706 0001:0031AE20   707 0001:0031AE25   708 0001:0031AE3F
+   709 0001:0031AE5B   710 0001:0031AE6D   712 0001:0031AE8E   707 0001:0031AEAE
+   713 0001:0031AEB1   718 0001:0031AED0   719 0001:0031AEE8   720 0001:0031AF02
+   721 0001:0031AF1E   719 0001:0031AF4C   722 0001:0031AF4F   726 0001:0031AF74
+   731 0001:0031AF8F   732 0001:0031AF95   733 0001:0031AF9B   735 0001:0031AFC7
+   736 0001:0031AFE8   738 0001:0031AFF1   745 0001:0031B01C   746 0001:0031B03F
+   747 0001:0031B04D   749 0001:0031B05B   750 0001:0031B062   752 0001:0031B078
+   753 0001:0031B084   754 0001:0031B0CD   755 0001:0031B0D9   750 0001:0031B0DA
+   757 0001:0031B0E4   759 0001:0031B0F2   760 0001:0031B0F9   762 0001:0031B10F
+   763 0001:0031B11B   764 0001:0031B164   765 0001:0031B170   760 0001:0031B171
+   767 0001:0031B17B   769 0001:0031B189   770 0001:0031B190   772 0001:0031B1A2
+   773 0001:0031B1AE   774 0001:0031B1F7   775 0001:0031B203   770 0001:0031B204
+   777 0001:0031B209   778 0001:0031B213   779 0001:0031B21A   782 0001:0031B264
+   784 0001:0031B267   785 0001:0031B272   786 0001:0031B27D   787 0001:0031B290
+   788 0001:0031B29E   791 0001:0031B2A0   793 0001:0031B2A3   794 0001:0031B2AC
+   795 0001:0031B2B7   796 0001:0031B2CA   797 0001:0031B2D8   800 0001:0031B2DC
+   802 0001:0031B2DF   803 0001:0031B2EA   804 0001:0031B2F5   805 0001:0031B308
+   806 0001:0031B316   809 0001:0031B318   811 0001:0031B31B   812 0001:0031B32F
+   815 0001:0031B334   817 0001:0031B337   818 0001:0031B34B
+
+Line numbers for fReportsAdhocComponent1(fReportsAdhocComponent1.pas) segment .itext
+
+   820 0002:0000197C
+
+Line numbers for fReports(fReports.pas) segment .text
+
+   211 0001:0031BCF8   212 0001:0031BCFB   213 0001:0031BD02   214 0001:0031BD0F
+   215 0001:0031BD1D   216 0001:0031BD2E   217 0001:0031BD3B   218 0001:0031BD4C
+   219 0001:0031BD57   220 0001:0031BD68   221 0001:0031BD72   222 0001:0031BD7C
+   223 0001:0031BD8C   224 0001:0031BD99   225 0001:0031BDA6   226 0001:0031BDB1
+   229 0001:0031BDC3   230 0001:0031BDCD   231 0001:0031BDD7   232 0001:0031BDE6
+   233 0001:0031BDF5   234 0001:0031BE01   238 0001:0031BE08   241 0001:0031BE28
+   242 0001:0031BE31   244 0001:0031BE3E   245 0001:0031BE51   248 0001:0031BE5F
+   249 0001:0031BE70   250 0001:0031BE7A   251 0001:0031BE8A   252 0001:0031BE96
+   253 0001:0031BEA8   254 0001:0031BEBD   255 0001:0031BECF   256 0001:0031BEE1
+   257 0001:0031BEEF   258 0001:0031BEF9   259 0001:0031BF03   260 0001:0031BF0D
+   261 0001:0031BF1C   262 0001:0031BF2B   263 0001:0031BF37   264 0001:0031BF40
+   265 0001:0031BF62   268 0001:0031BF79   270 0001:0031BF8A   271 0001:0031BF91
+   272 0001:0031BF9B   275 0001:0031BFA4   278 0001:0031BFB3   283 0001:0031BFC4
+   285 0001:0031BFD4   286 0001:0031BFD7   287 0001:0031BFE1   288 0001:0031BFED
+   289 0001:0031BFF6   292 0001:0031C000   299 0001:0031C020   300 0001:0031C043
+   302 0001:0031C04B   303 0001:0031C066   304 0001:0031C07A   305 0001:0031C089
+   307 0001:0031C09B   308 0001:0031C0AB   309 0001:0031C0B8   310 0001:0031C0C5
+   311 0001:0031C0D2   313 0001:0031C0E2   314 0001:0031C0E9   315 0001:0031C102
+   316 0001:0031C115   317 0001:0031C128   318 0001:0031C12C   320 0001:0031C197
+   321 0001:0031C1BC   323 0001:0031C1E5   324 0001:0031C1E9   325 0001:0031C1EB
+   320 0001:0031C1EE   326 0001:0031C1F1   327 0001:0031C210   328 0001:0031C22C
+   329 0001:0031C236   332 0001:0031C256   334 0001:0031C25F   335 0001:0031C26C
+   339 0001:0031C27B   340 0001:0031C288   341 0001:0031C295   342 0001:0031C2A2
+   344 0001:0031C2C2   349 0001:0031C32C   350 0001:0031C335   351 0001:0031C340
+   352 0001:0031C350   354 0001:0031C374   355 0001:0031C380   357 0001:0031C387
+   359 0001:0031C399   360 0001:0031C3AE   361 0001:0031C3BD   363 0001:0031C3DC
+   364 0001:0031C3EA   365 0001:0031C400   366 0001:0031C418   359 0001:0031C419
+   367 0001:0031C41C   368 0001:0031C429   371 0001:0031C42B   374 0001:0031C4AC
+   375 0001:0031C4C6   377 0001:0031C4D7   378 0001:0031C4E8   380 0001:0031C4ED
+   382 0001:0031C529   384 0001:0031C53D   385 0001:0031C54E   387 0001:0031C553
+   389 0001:0031C564   390 0001:0031C575   393 0001:0031C57A   396 0001:0031C594
+   398 0001:0031C5C0   399 0001:0031C5D1   403 0001:0031C5D6   404 0001:0031C5EB
+   407 0001:0031C5ED   409 0001:0031C5F6   411 0001:0031C608   414 0001:0031C61B
+   417 0001:0031C641   418 0001:0031C665   423 0001:0031C838   424 0001:0031C850
+   425 0001:0031C857   426 0001:0031C86B   427 0001:0031C878   428 0001:0031C88C
+   429 0001:0031C893   430 0001:0031C89A   431 0001:0031C8A4   432 0001:0031C8B4
+   433 0001:0031C8BD   445 0001:0031C918   446 0001:0031C921   447 0001:0031C92E
+   449 0001:0031C939   450 0001:0031C946   451 0001:0031C953   452 0001:0031C95D
+   453 0001:0031C967   455 0001:0031C96E   457 0001:0031C98A   458 0001:0031C994
+   459 0001:0031C9A2   460 0001:0031C9B3   461 0001:0031C9C0   462 0001:0031C9D1
+   463 0001:0031C9DC   464 0001:0031C9ED   465 0001:0031C9FE   466 0001:0031CA0B
+   467 0001:0031CA18   468 0001:0031CA25   469 0001:0031CA32   470 0001:0031CA43
+   471 0001:0031CA50   472 0001:0031CA5E   473 0001:0031CA68   474 0001:0031CA72
+   475 0001:0031CA87   474 0001:0031CA9E   476 0001:0031CAA1   477 0001:0031CABE
+   478 0001:0031CAC5   479 0001:0031CACB   481 0001:0031CADA   482 0001:0031CAF4
+   485 0001:0031CAFD   486 0001:0031CB12   488 0001:0031CB21   489 0001:0031CB2B
+   490 0001:0031CB39   491 0001:0031CB4A   492 0001:0031CB57   493 0001:0031CB68
+   494 0001:0031CB73   495 0001:0031CB84   496 0001:0031CB91   497 0001:0031CB9E
+   498 0001:0031CBA4   500 0001:0031CBB3   501 0001:0031CBCD   504 0001:0031CBD8
+   506 0001:0031CBDF   513 0001:0031CCFC   514 0001:0031CD34   515 0001:0031CD41
+   516 0001:0031CD48   518 0001:0031CD6D   519 0001:0031CD89   520 0001:0031CDA0
+   522 0001:0031CDC0   523 0001:0031CE0B   525 0001:0031CE23   516 0001:0031CE24
+   526 0001:0031CE2B   527 0001:0031CE32   535 0001:0031CE74   536 0001:0031CE96
+   537 0001:0031CEA7   538 0001:0031CEB5   539 0001:0031CEBF   540 0001:0031CECF
+   541 0001:0031CEE0   542 0001:0031CEED   543 0001:0031CEFE   544 0001:0031CF09
+   545 0001:0031CF1A   546 0001:0031CF24   547 0001:0031CF31   548 0001:0031CF3E
+   549 0001:0031CF48   550 0001:0031CF4C   551 0001:0031CF50   552 0001:0031CF54
+   553 0001:0031CF59   554 0001:0031CF5E   555 0001:0031CF63   556 0001:0031CF65
+   558 0001:0031CF83   559 0001:0031CF93   561 0001:0031CFC0   563 0001:0031CFC6
+   564 0001:0031CFC9   567 0001:0031CFD2   569 0001:0031CFD8   570 0001:0031CFDB
+   574 0001:0031CFE4   575 0001:0031CFE7   577 0001:0031CFEB   579 0001:0031CFF0
+   581 0001:0031D021   582 0001:0031D027   584 0001:0031D076   586 0001:0031D07C
+   587 0001:0031D0C6   588 0001:0031D0CA   591 0001:0031D0D2   593 0001:0031D0D8
+   594 0001:0031D122   595 0001:0031D126   599 0001:0031D12E   600 0001:0031D177
+   601 0001:0031D17A   605 0001:0031D183   607 0001:0031D189   608 0001:0031D1BD
+   612 0001:0031D1C5   613 0001:0031D1CB   615 0001:0031D202   616 0001:0031D208
+   618 0001:0031D23F   620 0001:0031D274   556 0001:0031D277   621 0001:0031D280
+   622 0001:0031D2A5   624 0001:0031D2E2   625 0001:0031D2F1   626 0001:0031D306
+   625 0001:0031D36D   627 0001:0031D372   621 0001:0031D375   628 0001:0031D37E
+   629 0001:0031D393   630 0001:0031D3AD   632 0001:0031D3B6   639 0001:0031D440
+   640 0001:0031D451   641 0001:0031D485   642 0001:0031D494   643 0001:0031D49D
+   644 0001:0031D4AD   645 0001:0031D4DF   646 0001:0031D4EA   647 0001:0031D4FC
+   648 0001:0031D532   650 0001:0031D543   651 0001:0031D550   652 0001:0031D55C
+   654 0001:0031D56D   663 0001:0031D578   664 0001:0031D59F   665 0001:0031D5A7
+   666 0001:0031D5AC   667 0001:0031D5B1   670 0001:0031D5C7   672 0001:0031D5F6
+   674 0001:0031D602   675 0001:0031D60F   677 0001:0031D62B   679 0001:0031D65F
+   680 0001:0031D670   681 0001:0031D691   682 0001:0031D6AF   684 0001:0031D6C6
+   685 0001:0031D6F2   682 0001:0031D6F3   686 0001:0031D6F6   675 0001:0031D6F9
+   687 0001:0031D702   689 0001:0031D70E   690 0001:0031D71D   691 0001:0031D731
+   694 0001:0031D750   700 0001:0031D769   702 0001:0031D798   703 0001:0031D7A7
+   704 0001:0031D7AC   705 0001:0031D7B1   706 0001:0031D7B8   707 0001:0031D7C0
+   709 0001:0031D7CC   711 0001:0031D7E8   712 0001:0031D7F6   713 0001:0031D816
+   715 0001:0031D81E   717 0001:0031D82D   718 0001:0031D834   720 0001:0031D839
+   722 0001:0031D842   724 0001:0031D852   726 0001:0031D85C   727 0001:0031D86D
+   728 0001:0031D88E   729 0001:0031D8AC   733 0001:0031D8ED   734 0001:0031D8FA
+   735 0001:0031D938   736 0001:0031D945   737 0001:0031D958   738 0001:0031D978
+   742 0001:0031D98B   743 0001:0031D9AC   740 0001:0031D9C4   745 0001:0031D9D5
+   749 0001:0031D9E5   752 0001:0031D9F3   753 0001:0031DA63   755 0001:0031DA6B
+   756 0001:0031DA70   757 0001:0031DA73   760 0001:0031DA7B   762 0001:0031DA84
+   763 0001:0031DA8C   764 0001:0031DA9F   765 0001:0031DABA   766 0001:0031DADB
+   770 0001:0031DAEE   771 0001:0031DB0F   768 0001:0031DB27   773 0001:0031DB38
+   777 0001:0031DB48   779 0001:0031DB53   781 0001:0031DB58   783 0001:0031DB68
+   785 0001:0031DB72   786 0001:0031DB83   787 0001:0031DBA9   788 0001:0031DBCD
+   792 0001:0031DC1D   793 0001:0031DC2A   794 0001:0031DC68   795 0001:0031DC75
+   797 0001:0031DC83   798 0001:0031DCF3   800 0001:0031DCFB   801 0001:0031DCFE
+   802 0001:0031DD01   803 0001:0031DD09   804 0001:0031DD0E   806 0001:0031DD3A
+   807 0001:0031DD7A   808 0001:0031DD9B   803 0001:0031DD9C   809 0001:0031DDA5
+   810 0001:0031DDB0   811 0001:0031DDB6   813 0001:0031DDBE   814 0001:0031DDCB
+   811 0001:0031DDCE   816 0001:0031DDD6   709 0001:0031DDD9   817 0001:0031DDE2
+   819 0001:0031DDF2   821 0001:0031DDFC   822 0001:0031DE0D   823 0001:0031DE33
+   824 0001:0031DE57   828 0001:0031DEA7   829 0001:0031DEB4   830 0001:0031DEF2
+   831 0001:0031DEFF   833 0001:0031DF0D   834 0001:0031DF7D   837 0001:0031DF85
+   839 0001:0031DF8D   841 0001:0031DFAB   842 0001:0031DFBC   843 0001:0031DFCA
+   844 0001:0031DFE4   845 0001:0031E030   847 0001:0031E04E   843 0001:0031E06B
+   850 0001:0031E079   852 0001:0031E097   853 0001:0031E0A8   854 0001:0031E0B6
+   855 0001:0031E0D0   856 0001:0031E119   858 0001:0031E137   854 0001:0031E154
+   861 0001:0031E15F   862 0001:0031E173   866 0001:0031E181   867 0001:0031E187
+   868 0001:0031E19C   869 0001:0031E1AA   876 0001:0031E30C   878 0001:0031E32E
+   880 0001:0031E337   881 0001:0031E344   883 0001:0031E351   884 0001:0031E376
+   886 0001:0031E388   887 0001:0031E390   889 0001:0031E3A3   890 0001:0031E3BA
+   891 0001:0031E3D1   892 0001:0031E3E8   893 0001:0031E416   894 0001:0031E420
+   895 0001:0031E42A   896 0001:0031E43B   897 0001:0031E448   898 0001:0031E452
+   900 0001:0031E463   901 0001:0031E476   902 0001:0031E483   903 0001:0031E493
+   904 0001:0031E49E   905 0001:0031E4AB   909 0001:0031E4BA   910 0001:0031E4CC
+   911 0001:0031E4D9   912 0001:0031E4E6   913 0001:0031E4F3   914 0001:0031E4FE
+   916 0001:0031E50E   917 0001:0031E518   918 0001:0031E522   919 0001:0031E537
+   918 0001:0031E54E   920 0001:0031E551   921 0001:0031E558   922 0001:0031E567
+   924 0001:0031E58C   925 0001:0031E5C7   927 0001:0031E5F5   928 0001:0031E5FB
+   930 0001:0031E606   931 0001:0031E617   933 0001:0031E61C   935 0001:0031E649
+   936 0001:0031E6B3   939 0001:0031E71E   940 0001:0031E76A   941 0001:0031E77B
+   943 0001:0031E780   945 0001:0031E7D1   946 0001:0031E821   950 0001:0031E860
+   951 0001:0031E871   952 0001:0031E882   954 0001:0031E8C3   956 0001:0031E914
+   957 0001:0031E964   961 0001:0031E9A0   962 0001:0031E9B1   963 0001:0031E9C2
+   967 0001:0031E9C7   968 0001:0031EA70   971 0001:0031EAC8   972 0001:0031EB14
+   973 0001:0031EB25   975 0001:0031EB2A   976 0001:0031EB66   977 0001:0031EB76
+   978 0001:0031EB85   979 0001:0031EB9C   981 0001:0031EBB7   982 0001:0031EBD6
+   984 0001:0031EBE6   987 0001:0031EBFC   988 0001:0031EC0D   989 0001:0031EC18
+   990 0001:0031EC29   991 0001:0031EC3A   992 0001:0031EC46   993 0001:0031EC64
+   994 0001:0031ECD5   995 0001:0031ED05   997 0001:0031ED40   998 0001:0031ED4F
+   999 0001:0031EDB4  1003 0001:0031EDC6  1004 0001:0031EDE4  1005 0001:0031EDEB
+  1006 0001:0031EDF8  1007 0001:0031EE5D  1009 0001:0031EE6A  1010 0001:0031EE79
+  1014 0001:0031EE95  1015 0001:0031EEA5  1021 0001:0031EEBE  1022 0001:0031EECF
+  1023 0001:0031EEDA  1024 0001:0031EEEB  1025 0001:0031EEF7  1026 0001:0031EF08
+  1028 0001:0031EF26  1029 0001:0031EF34  1031 0001:0031EFA5  1032 0001:0031EFD5
+  1034 0001:0031F010  1035 0001:0031F01F  1036 0001:0031F084  1040 0001:0031F096
+  1041 0001:0031F0B4  1042 0001:0031F0BB  1043 0001:0031F0C8  1045 0001:0031F0DB
+  1046 0001:0031F140  1048 0001:0031F14D  1049 0001:0031F15C  1052 0001:0031F178
+  1058 0001:0031F18D  1059 0001:0031F19B  1060 0001:0031F20C  1062 0001:0031F23C
+  1063 0001:0031F250  1064 0001:0031F262  1065 0001:0031F276  1066 0001:0031F288
+  1067 0001:0031F29A  1069 0001:0031F2AE  1070 0001:0031F2C6  1072 0001:0031F2DA
+  1074 0001:0031F2EC  1075 0001:0031F31E  1077 0001:0031F333  1078 0001:0031F35F
+  1079 0001:0031F3C4  1080 0001:0031F3F0  1081 0001:0031F3FE  1084 0001:0031F40E
+  1085 0001:0031F41C  1086 0001:0031F423  1087 0001:0031F43B  1088 0001:0031F44E
+  1090 0001:0031F469  1091 0001:0031F47A  1093 0001:0031F4AB  1094 0001:0031F4D1
+  1096 0001:0031F4E1  1101 0001:0031FAB8  1103 0001:0031FABD  1105 0001:0031FAC3
+  1106 0001:0031FACD  1107 0001:0031FAD9  1108 0001:0031FAE5  1109 0001:0031FB01
+  1111 0001:0031FB3D  1113 0001:0031FB58  1119 0001:0031FB5C  1121 0001:0031FB7A
+  1122 0001:0031FB7C  1124 0001:0031FB88  1125 0001:0031FBA6  1124 0001:0031FBD5
+  1126 0001:0031FBDA  1127 0001:0031FBE5  1128 0001:0031FBF2  1130 0001:0031FBFF
+  1131 0001:0031FC1E  1133 0001:0031FC62  1134 0001:0031FC83  1140 0001:0031FCA8
+  1142 0001:0031FCC2  1143 0001:0031FCD8  1144 0001:0031FCE5  1145 0001:0031FCF2
+  1146 0001:0031FD11  1147 0001:0031FD27  1149 0001:0031FD3D  1150 0001:0031FD42
+  1151 0001:0031FD77  1152 0001:0031FD93  1154 0001:0031FDCE  1155 0001:0031FDE9
+  1157 0001:0031FDF0  1160 0001:0031FE1C  1162 0001:0031FE1F  1163 0001:0031FE28
+  1164 0001:0031FE2F  1165 0001:0031FE3C  1166 0001:0031FE49  1167 0001:0031FE56
+  1169 0001:0031FE63  1172 0001:0031FE68  1174 0001:0031FE6C  1176 0001:0031FE89
+  1177 0001:0031FE93  1179 0001:0031FEA3  1180 0001:0031FEB5  1182 0001:0031FEC4
+  1183 0001:0031FED1  1184 0001:0031FEDD  1185 0001:0031FEEA  1186 0001:0031FEFC
+  1188 0001:0031FF0B  1189 0001:0031FF18  1191 0001:0031FF56  1193 0001:0031FF66
+  1194 0001:0031FF73  1197 0001:0031FF78  1198 0001:0031FF7B  1199 0001:0031FF82
+  1200 0001:0031FF8C  1201 0001:0031FF93  1202 0001:0031FFA4  1203 0001:0031FFB5
+  1204 0001:0031FFC6  1205 0001:0031FFD7  1206 0001:0031FFE8  1207 0001:0031FFF9
+  1208 0001:0032000C  1209 0001:00320018  1210 0001:0032002C  1211 0001:00320033
+  1212 0001:0032003A  1225 0001:0032003C  1226 0001:0032005E  1227 0001:00320060
+  1229 0001:0032006C  1230 0001:00320081  1232 0001:003200BF  1233 0001:003200C1
+  1234 0001:003200C3  1229 0001:003200C4  1237 0001:003200C7  1238 0001:003200CC
+  1244 0001:003200F4  1245 0001:0032011E  1246 0001:00320120  1248 0001:0032012C
+  1249 0001:00320141  1251 0001:0032017C  1252 0001:0032017E  1253 0001:00320180
+  1248 0001:00320181  1256 0001:00320184  1257 0001:00320189  1259 0001:003201B8
+  1260 0001:003201DC  1261 0001:003201E1  1264 0001:00320231  1265 0001:00320248
+  1266 0001:00320268  1268 0001:003202C9  1269 0001:003202CE  1270 0001:003202FD
+  1274 0001:00320322  1275 0001:00320339  1276 0001:00320359  1278 0001:003203BA
+  1279 0001:003203BF  1280 0001:003203EE  1284 0001:00320413  1285 0001:0032042A
+  1286 0001:0032044A  1288 0001:003204BE  1289 0001:003204C3  1290 0001:003204F2
+  1294 0001:00320517  1295 0001:0032052E  1296 0001:0032054E  1298 0001:003205AF
+  1299 0001:003205B6  1300 0001:003205E5  1308 0001:0032060A  1310 0001:00320628
+  1311 0001:0032063E  1314 0001:00320651  1316 0001:00320664  1317 0001:00320670
+  1319 0001:00320675  1323 0001:00320697  1324 0001:003206BC  1325 0001:003206DC
+  1326 0001:003206FE  1327 0001:0032072B  1332 0001:00320732  1333 0001:00320761
+  1337 0001:00320786  1338 0001:0032079D  1339 0001:003207BD  1340 0001:003207DF
+  1341 0001:003207E6  1342 0001:00320811  1344 0001:00320833  1346 0001:00320861
+  1348 0001:00320877  1349 0001:00320882  1350 0001:0032088E  1352 0001:003208AC
+  1353 0001:003208C5  1355 0001:003208E3  1356 0001:00320902  1358 0001:00320904
+  1350 0001:00320905  1359 0001:00320908  1361 0001:00320914  1367 0001:00320B80
+  1368 0001:00320BAE  1370 0001:00320BB4  1371 0001:00320BBC  1372 0001:00320BCB
+  1373 0001:00320BE5  1374 0001:00320BF9  1376 0001:00320C2E  1377 0001:00320C44
+  1378 0001:00320C4C  1379 0001:00320C54  1381 0001:00320C69  1383 0001:00320C7E
+  1385 0001:00320CA7  1386 0001:00320CCA  1388 0001:00320CE8  1389 0001:00320D07
+  1390 0001:00320D16  1392 0001:00320D25  1394 0001:00320D3F  1395 0001:00320D6C
+  1397 0001:00320D81  1398 0001:00320DA2  1399 0001:00320DC3  1400 0001:00320DD6
+  1401 0001:00320E08  1402 0001:00320E1B  1404 0001:00320E3D  1405 0001:00320E66
+  1406 0001:00320E89  1408 0001:00320EA0  1410 0001:00320EAD  1412 0001:00320EC5
+  1414 0001:00320EDD  1417 0001:00320EF3  1418 0001:00320F26  1420 0001:00320F30
+  1421 0001:00320F3E  1426 0001:00321090  1428 0001:003210A1  1435 0001:003210E8
+  1438 0001:003210ED  1445 0001:003210F0  1447 0001:00321114  1449 0001:0032111E
+  1450 0001:00321130  1452 0001:00321143  1454 0001:00321166  1455 0001:0032117A
+  1456 0001:0032118E  1457 0001:003211A2  1458 0001:003211CE  1460 0001:003211F4
+  1461 0001:00321210  1462 0001:0032123F  1464 0001:0032124E  1466 0001:00321265
+  1467 0001:0032128F  1469 0001:003212B5  1470 0001:003212C6  1471 0001:003212DD
+  1473 0001:0032130C  1474 0001:00321316  1475 0001:0032132D  1476 0001:00321332
+  1478 0001:00321344  1480 0001:00321362  1481 0001:00321369  1483 0001:00321382
+  1485 0001:003213B3  1486 0001:003213BA  1488 0001:003213D3  1489 0001:003213DD
+  1495 0001:003213F0  1496 0001:003213F6  1498 0001:003213FF  1499 0001:00321410
+  1500 0001:00321426  1501 0001:0032143F  1502 0001:00321446  1505 0001:0032145F
+  1508 0001:0032148A  1510 0001:0032149D  1449 0001:0032149E  1511 0001:003214A7
+  1513 0001:003214BA  1514 0001:003214BC  1516 0001:003214CA  1518 0001:003214E9
+  1519 0001:003214EE  1521 0001:003214F0  1514 0001:003214F1  1522 0001:003214F6
+  1524 0001:003214FA  1525 0001:0032150A  1527 0001:00321511  1528 0001:00321513
+  1529 0001:00321521  1531 0001:00321530  1532 0001:00321535  1533 0001:00321537
+  1528 0001:00321538  1534 0001:0032153D  1536 0001:00321541  1537 0001:00321551
+  1538 0001:00321558  1542 0001:0032156F  1549 0001:00321688  1551 0001:003216AB
+  1552 0001:003216E7  1553 0001:003216F8  1554 0001:00321708  1555 0001:00321712
+  1556 0001:0032173D  1558 0001:00321772  1559 0001:00321783  1561 0001:00321792
+  1562 0001:003217B2  1563 0001:003217D2  1565 0001:003217E5  1567 0001:0032182D
+  1568 0001:0032183B  1569 0001:0032183F  1570 0001:0032186F  1571 0001:00321875
+  1574 0001:003218B1  1575 0001:003218F4  1576 0001:00321939  1577 0001:0032193D
+  1569 0001:00321940  1580 0001:0032194B  1581 0001:0032196E  1582 0001:00321986
+  1584 0001:00321999  1586 0001:003219BB  1588 0001:003219F2  1589 0001:00321A14
+  1590 0001:00321A4B  1591 0001:00321A68  1594 0001:00321A84  1596 0001:00321A96
+  1598 0001:00321ACB  1599 0001:00321AD9  1600 0001:00321ADD  1601 0001:00321AFA
+  1602 0001:00321B00  1605 0001:00321B26  1606 0001:00321B56  1607 0001:00321B88
+  1608 0001:00321B8C  1600 0001:00321B8F  1611 0001:00321B9A  1612 0001:00321BB4
+  1614 0001:00321BC7  1615 0001:00321BD7  1616 0001:00321BEF  1619 0001:00321C04
+  1620 0001:00321C1B  1622 0001:00321C36  1623 0001:00321C47  1625 0001:00321C79
+  1626 0001:00321CA0  1628 0001:00321CB0  1630 0001:00321CC1  1638 0001:00321E8C
+  1639 0001:00321EE9  1640 0001:00321EF1  1641 0001:00321EF9  1642 0001:00321F01
+  1643 0001:00321F09  1644 0001:00321F11  1645 0001:00321F19  1647 0001:00321F2C
+  1649 0001:00321F43  1650 0001:00321F54  1652 0001:00321F59  1653 0001:00321F6A
+  1654 0001:00321FAE  1655 0001:00321FBB  1656 0001:00321FEE  1658 0001:00321FFB
+  1660 0001:0032200C  1661 0001:0032202B  1662 0001:00322070  1664 0001:00322078
+  1666 0001:0032208D  1667 0001:003220C3  1668 0001:00322107  1669 0001:0032211B
+  1670 0001:0032213A  1671 0001:0032215F  1673 0001:0032216B  1674 0001:00322177
+  1675 0001:00322183  1677 0001:0032218F  1678 0001:003221A2  1680 0001:003221B5
+  1681 0001:003221E5  1682 0001:00322215  1684 0001:00322231  1686 0001:0032226E
+  1687 0001:0032227E  1689 0001:00322295  1691 0001:003222A8  1692 0001:003222B6
+  1694 0001:003222FB  1695 0001:00322311  1696 0001:0032232A  1697 0001:0032233B
+  1698 0001:00322351  1699 0001:00322367  1700 0001:0032239A  1701 0001:003223B0
+  1702 0001:003223DC  1703 0001:003223F3  1704 0001:0032242E  1705 0001:00322442
+  1707 0001:00322447  1709 0001:0032248C  1710 0001:003224A2  1711 0001:003224BB
+  1712 0001:003224CC  1713 0001:003224E2  1714 0001:003224F8  1715 0001:0032252B
+  1716 0001:00322541  1717 0001:0032256D  1718 0001:00322584  1719 0001:003225BF
+  1720 0001:003225D3  1722 0001:003225D8  1724 0001:0032261D  1725 0001:00322633
+  1726 0001:0032264C  1727 0001:0032265D  1728 0001:00322673  1729 0001:00322689
+  1730 0001:003226BC  1731 0001:003226D2  1732 0001:003226FE  1733 0001:00322715
+  1734 0001:00322750  1735 0001:00322764  1737 0001:00322769  1741 0001:00322826
+  1742 0001:0032282E  1743 0001:00322842  1745 0001:00322857  1746 0001:00322873
+  1748 0001:00322880  1749 0001:0032289C  1751 0001:0032289E  1743 0001:0032289F
+  1752 0001:003228A4  1753 0001:003228B7  1755 0001:003228C4  1756 0001:003228E5
+  1757 0001:003228F7  1758 0001:0032290E  1759 0001:00322928  1760 0001:0032293F
+  1761 0001:0032297A  1765 0001:00322994  1767 0001:003229A9  1768 0001:003229DA
+  1769 0001:003229F0  1770 0001:00322A09  1771 0001:00322A40  1773 0001:00322A82
+  1774 0001:00322A98  1775 0001:00322AB1  1776 0001:00322AC7  1777 0001:00322AFA
+  1778 0001:00322B10  1779 0001:00322B3C  1780 0001:00322B53  1781 0001:00322B8E
+  1785 0001:00322BA7  1786 0001:00322BBB  1787 0001:00322BCC  1788 0001:00322BE2
+  1789 0001:00322BFB  1790 0001:00322C12  1791 0001:00322C49  1793 0001:00322C5D
+  1797 0001:00322C69  1798 0001:00322CA0  1800 0001:00322CBD  1801 0001:00322CD3
+  1802 0001:00322CEC  1803 0001:00322D02  1804 0001:00322D35  1805 0001:00322D4B
+  1806 0001:00322D77  1807 0001:00322D8E  1808 0001:00322DC3  1812 0001:00322DDC
+  1813 0001:00322E05  1814 0001:00322E1B  1815 0001:00322E34  1816 0001:00322E44
+  1821 0001:00322E75  1682 0001:00322E76  1822 0001:00322E7F  1828 0001:003232E4
+  1830 0001:00323302  1832 0001:0032331E  1833 0001:00323326  1834 0001:00323341
+  1833 0001:00323374  1835 0001:00323377  1836 0001:003233A9  1837 0001:003233DE
+  1839 0001:003233E8  1840 0001:003233ED  1841 0001:003233F9  1842 0001:00323403
+  1843 0001:0032340D  1844 0001:00323417  1845 0001:00323421  1846 0001:0032342B
+  1847 0001:00323435  1848 0001:0032343F  1849 0001:00323449  1850 0001:0032345C
+  1855 0001:003234A8  1857 0001:003234AD  1859 0001:003234B6  1860 0001:003234C3
+  1862 0001:003234D0  1863 0001:003234EC  1864 0001:003234F9  1865 0001:00323515
+  1869 0001:0032351C  1871 0001:0032351F  1872 0001:00323524  1873 0001:0032352A
+  1880 0001:00323530  1882 0001:00323554  1883 0001:00323561  1884 0001:00323576
+  1885 0001:00323593  1886 0001:003235B6  1887 0001:003235D5  1888 0001:003235F7
+  1889 0001:0032360C  1891 0001:0032361D  1895 0001:00323680  1897 0001:00323683
+  1898 0001:00323688  1899 0001:0032368E  1908 0001:00323694  1910 0001:003236CE
+  1911 0001:003236DD  1912 0001:003236EB  1914 0001:003236FE  1915 0001:0032371B
+  1916 0001:00323725  1918 0001:00323732  1919 0001:00323745  1921 0001:00323767
+  1924 0001:003237BF  1925 0001:003237ED  1929 0001:0032382D  1930 0001:00323851
+  1934 0001:00323890  1936 0001:003238A0  1946 0001:00323918  1948 0001:0032393D
+  1949 0001:00323952  1950 0001:00323968  1951 0001:0032396F  1952 0001:00323979
+  1953 0001:00323992  1954 0001:003239AB  1955 0001:003239C4  1956 0001:003239DD
+  1957 0001:003239F5  1958 0001:00323A0E  1959 0001:00323A27  1960 0001:00323A40
+  1961 0001:00323A59  1962 0001:00323A72  1963 0001:00323A8D  1964 0001:00323AA6
+  1965 0001:00323ABF  1966 0001:00323AD8  1967 0001:00323AF1  1968 0001:00323B04
+  1969 0001:00323B17  1970 0001:00323B2A  1971 0001:00323B3D  1972 0001:00323B45
+  1974 0001:00323B67  1975 0001:00323B6F  1976 0001:00323B8B  1975 0001:00323BC4
+  1977 0001:00323BC9  1978 0001:00323C01  1979 0001:00323C42  1981 0001:00323C4C
+  1983 0001:00323C7E  1984 0001:00323C8B  1985 0001:00323CEE  1986 0001:00323CFB
+  1987 0001:00323D08  1989 0001:00323D10  1990 0001:00323D23  1991 0001:00323D30
+  1992 0001:00323D3D  1993 0001:00323D4A  1994 0001:00323D57  1995 0001:00323D64
+  1996 0001:00323D71  1997 0001:00323DD4  1998 0001:00323DE8  1999 0001:00323DF8
+  2000 0001:00323E08  2001 0001:00323E15  2002 0001:00323E22  2003 0001:00323E2F
+  2004 0001:00323E3C  2005 0001:00323E49  2006 0001:00323E56  2007 0001:00323E63
+  2008 0001:00323E70  2009 0001:00323E8E  2010 0001:00323E9F  2012 0001:00323EB2
+  2013 0001:00323EBF  2014 0001:00323ECC  2016 0001:00323EE9  2017 0001:00323EF0
+  2018 0001:00323EFA  2019 0001:00323F0A  2020 0001:00323F1B  2021 0001:00323F2C
+  2022 0001:00323F39  2023 0001:00323F40  2024 0001:00323F51  2025 0001:00323F58
+  2026 0001:00323F65  2027 0001:00323F76  2028 0001:00323F81  2029 0001:00323F92
+  2030 0001:00323FA3  2031 0001:00323FAD  2032 0001:00323FB6  2034 0001:00323FC7
+  2035 0001:00323FD4  2036 0001:00323FE1  2037 0001:00323FF4  2038 0001:00324001
+  2039 0001:00324011  2040 0001:0032401C  2041 0001:00324029  2044 0001:0032403B
+  2046 0001:00324050  2048 0001:00324059  2049 0001:00324067  2050 0001:00324074
+  2051 0001:00324092  2053 0001:003240AB  2054 0001:003240BE  2055 0001:003240F9
+  2056 0001:00324139  2058 0001:00324176  2059 0001:00324182  2062 0001:00324196
+  2064 0001:003241E4  2065 0001:0032422F  2068 0001:00324273  2069 0001:00324282
+  2070 0001:003242C8  2071 0001:003242D4  2051 0001:003242D5  2072 0001:003242DE
+  2074 0001:003242EC  2075 0001:003242F9  2076 0001:00324306  2077 0001:00324318
+  2078 0001:00324325  2079 0001:00324332  2080 0001:0032433F  2081 0001:0032434C
+  2085 0001:00324359  2086 0001:00324366  2087 0001:00324373  2088 0001:00324385
+  2089 0001:00324392  2090 0001:0032439F  2091 0001:003243AC  2092 0001:003243B9
+  2094 0001:003243C4  2095 0001:003243CE  2096 0001:003243DA  2097 0001:003243E4
+  2098 0001:003243F1  2099 0001:003243FE  2100 0001:0032440B  2101 0001:00324419
+  2102 0001:00324431  2101 0001:00324448  2103 0001:0032444D  2105 0001:00324456
+  2106 0001:00324463  2108 0001:00324470  2109 0001:00324480  2111 0001:00324498
+  2112 0001:003244A2  2113 0001:003244AB  2115 0001:003244B2  2116 0001:003244C1
+  2118 0001:003244D0  2120 0001:003244DF  2121 0001:003244EC  2125 0001:003244FE
+  2126 0001:0032450D  2129 0001:0032456E  2130 0001:0032457F  2132 0001:003245AE
+  2135 0001:003245BD  2136 0001:003245CE  2138 0001:003245DE  2139 0001:003245E8
+  2141 0001:003245FB  2142 0001:00324612  2143 0001:00324629  2139 0001:0032462C
+  2144 0001:00324631  2145 0001:0032463B  2146 0001:00324666  2147 0001:0032466B
+  2148 0001:00324678  2151 0001:0032468C  2152 0001:0032469A  2153 0001:003246AA
+  2155 0001:003246C5  2156 0001:003246D6  2158 0001:00324707  2159 0001:0032472D
+  2162 0001:0032473D  2166 0001:00324756  2167 0001:00324763  2168 0001:00324770
+  2169 0001:003247A3  2170 0001:003247C9  2171 0001:003247D8  2172 0001:003247EC
+  2174 0001:00324818  2175 0001:00324832  2177 0001:00324842  2178 0001:00324850
+  2179 0001:00324864  2184 0001:00324870  2185 0001:0032487D  2190 0001:0032488F
+  2191 0001:0032489F  2193 0001:003248D6  2194 0001:00324929  2195 0001:0032493A
+  2196 0001:00324945  2197 0001:00324956  2200 0001:00324961  2202 0001:003249A4
+  2203 0001:003249B4  2204 0001:003249C1  2208 0001:003249D3  2209 0001:003249E0
+  2210 0001:003249ED  2211 0001:003249F7  2212 0001:003249FF  2213 0001:00324A30
+  2215 0001:00324A39  2216 0001:00324A47  2217 0001:00324A54  2218 0001:00324A66
+  2219 0001:00324A71  2220 0001:00324A76  2221 0001:00324A7B  2223 0001:00324A94
+  2224 0001:00324AA5  2225 0001:00324AF7  2227 0001:00324B08  2228 0001:00324B22
+  2227 0001:00324B5F  2230 0001:00324B64  2231 0001:00324BA1  2233 0001:00324BB5
+  2235 0001:00324BC7  2236 0001:00324BED  2237 0001:00324BF3  2238 0001:00324C10
+  2221 0001:00324C11  2239 0001:00324C1A  2240 0001:00324C2F  2241 0001:00324C4D
+  2242 0001:00324C5A  2243 0001:00324C77  2244 0001:00324C84  2245 0001:00324C91
+  2246 0001:00324C9E  2247 0001:00324CD0  2248 0001:00324CDE  2250 0001:00324CF4
+  2251 0001:00324D13  2252 0001:00324D21  2253 0001:00324D30  2254 0001:00324D3D
+  2255 0001:00324D51  2256 0001:00324D68  2258 0001:00324D87  2259 0001:00324DA6
+  2264 0001:00324DBB  2265 0001:00324DCB  2266 0001:00324DD8  2267 0001:00324DE5
+  2268 0001:00324DEF  2270 0001:00324DFB  2271 0001:00324E0C  2272 0001:00324E1C
+  2274 0001:00324E35  2275 0001:00324E49  2276 0001:00324E9B  2277 0001:00324EA8
+  2278 0001:00324EC2  2277 0001:00324EFF  2279 0001:00324F04  2272 0001:00324F05
+  2280 0001:00324F0E  2281 0001:00324F40  2283 0001:00324F51  2284 0001:00324F70
+  2285 0001:00324F7E  2286 0001:00324F8D  2287 0001:00324F9A  2288 0001:00324FAE
+  2289 0001:00324FC5  2291 0001:00324FE4  2292 0001:00325003  2297 0001:00325018
+  2298 0001:00325033  2300 0001:00325045  2301 0001:0032506B  2302 0001:00325078
+  2303 0001:00325085  2304 0001:003250B8  2305 0001:003250C7  2306 0001:003250D8
+  2307 0001:003250E3  2308 0001:003250F4  2309 0001:00325100  2310 0001:00325111
+  2312 0001:0032514A  2314 0001:0032515D  2315 0001:0032516D  2316 0001:0032518C
+  2318 0001:00325196  2319 0001:003251A5  2321 0001:003251CC  2322 0001:0032522F
+  2326 0001:0032523D  2327 0001:00325263  2328 0001:00325272  2330 0001:00325299
+  2331 0001:003252FC  2333 0001:00325305  2334 0001:00325315  2335 0001:00325322
+  2339 0001:00325334  2340 0001:00325343  2341 0001:00325369  2343 0001:00325399
+  2344 0001:003253B3  2350 0001:003253C5  2351 0001:003253E3  2352 0001:003253F6
+  2353 0001:003253FD  2354 0001:0032540A  2355 0001:00325417  2356 0001:0032543D
+  2357 0001:00325469  2358 0001:00325483  2359 0001:00325490  2362 0001:003254A1
+  2363 0001:003254AF  2365 0001:003254BF  2366 0001:003254D3  2368 0001:003254E6
+  2369 0001:003254F6  2371 0001:00325529  2372 0001:0032557C  2375 0001:00325587
+  2377 0001:003255CA  2378 0001:003255DA  2379 0001:003255E7  2383 0001:003255F6
+  2385 0001:00325603  2386 0001:00325612  2390 0001:0032562B  2391 0001:0032563B
+  2395 0001:0032564F  2399 0001:0032565B  2400 0001:00325676  2402 0001:00325688
+  2403 0001:003256AE  2404 0001:003256BB  2405 0001:003256C8  2406 0001:003256FB
+  2407 0001:0032570A  2408 0001:0032571E  2409 0001:0032572A  2410 0001:0032573B
+  2411 0001:0032574C  2412 0001:00325757  2413 0001:00325768  2415 0001:003257A1
+  2417 0001:003257B4  2418 0001:003257C4  2419 0001:003257E3  2421 0001:003257ED
+  2422 0001:003257FC  2424 0001:00325823  2425 0001:00325886  2429 0001:00325894
+  2430 0001:003258BA  2431 0001:003258C9  2433 0001:003258F0  2434 0001:00325953
+  2436 0001:0032595C  2437 0001:0032596C  2438 0001:00325979  2442 0001:0032598B
+  2443 0001:003259B1  2445 0001:003259F4  2446 0001:00325A0E  2452 0001:00325A20
+  2453 0001:00325A3E  2454 0001:00325A45  2455 0001:00325A52  2456 0001:00325A5F
+  2457 0001:00325A85  2458 0001:00325AB1  2459 0001:00325ACB  2460 0001:00325AD8
+  2463 0001:00325AE9  2464 0001:00325AF7  2466 0001:00325B07  2467 0001:00325B1B
+  2470 0001:00325B2E  2471 0001:00325B3E  2473 0001:00325B71  2474 0001:00325BC4
+  2477 0001:00325BCF  2479 0001:00325C12  2480 0001:00325C22  2481 0001:00325C2F
+  2485 0001:00325C3E  2488 0001:00325C4B  2492 0001:00325C57  2493 0001:00325C64
+  2494 0001:00325C71  2495 0001:00325C7B  2497 0001:00325C87  2498 0001:00325C98
+  2499 0001:00325CA8  2501 0001:00325CC1  2502 0001:00325CD5  2503 0001:00325D27
+  2504 0001:00325D34  2505 0001:00325D4E  2504 0001:00325D8B  2506 0001:00325D90
+  2499 0001:00325D91  2507 0001:00325D9A  2508 0001:00325DCC  2510 0001:00325DDD
+  2511 0001:00325DEB  2512 0001:00325DFA  2513 0001:00325E07  2514 0001:00325E1B
+  2516 0001:00325E36  2517 0001:00325E55  2519 0001:00325E65  2523 0001:00325E99
+  2524 0001:00325EA6  2525 0001:00325EB3  2526 0001:00325EBD  2528 0001:00325EC9
+  2529 0001:00325EDA  2530 0001:00325EEA  2532 0001:00325F03  2533 0001:00325F17
+  2534 0001:00325F69  2535 0001:00325F76  2536 0001:00325F90  2535 0001:00325FCD
+  2537 0001:00325FD2  2530 0001:00325FD3  2538 0001:00325FDC  2539 0001:0032600E
+  2541 0001:0032601F  2542 0001:0032602D  2543 0001:0032603C  2544 0001:00326049
+  2545 0001:0032605D  2546 0001:00326074  2547 0001:00326093  2551 0001:003260C7
+  2552 0001:003260CE  2553 0001:003260DB  2554 0001:003260E8  2555 0001:0032611B
+  2556 0001:00326141  2557 0001:00326150  2559 0001:00326164  2560 0001:00326190
+  2561 0001:003261A9  2562 0001:003261B6  2565 0001:003261C7  2566 0001:003261D5
+  2568 0001:003261E5  2569 0001:003261F9  2571 0001:00326200  2574 0001:00326222
+  2575 0001:00326231  2576 0001:00326240  2578 0001:0032624F  2580 0001:00326258
+  2581 0001:00326272  2582 0001:00326282  2583 0001:00326292  2585 0001:003262AD
+  2586 0001:003262BD  2588 0001:003262CD  2590 0001:003262D6  2591 0001:003262E3
+  2592 0001:003262F0  2596 0001:003262FD  2599 0001:00326306  2600 0001:00326322
+  2601 0001:00326342  2602 0001:0032634C  2605 0001:00326356  2606 0001:00326367
+  2607 0001:00326378  2608 0001:00326386  2616 0001:00326878  2618 0001:003268A1
+  2619 0001:003268C3  2620 0001:003268E6  2621 0001:003268F0  2622 0001:003268FC
+  2623 0001:00326932  2624 0001:0032693A  2625 0001:00326942  2626 0001:00326979
+  2627 0001:003269B2  2629 0001:003269BA  2630 0001:003269C6  2632 0001:003269CE
+  2633 0001:003269D9  2634 0001:003269E1  2635 0001:003269EC  2637 0001:003269FC
+  2638 0001:00326A03  2639 0001:00326A0B  2640 0001:00326A15  2641 0001:00326A1B
+  2642 0001:00326A23  2643 0001:00326A33  2644 0001:00326A3C  2646 0001:00326A4B
+  2647 0001:00326A58  2648 0001:00326A7E  2649 0001:00326A86  2650 0001:00326AAF
+  2651 0001:00326AC4  2652 0001:00326AEA  2653 0001:00326B1D  2655 0001:00326B32
+  2656 0001:00326B54  2657 0001:00326B5C  2658 0001:00326B85  2659 0001:00326B9A
+  2660 0001:00326BC0  2662 0001:00326BF3  2664 0001:00326C0C  2665 0001:00326C2F
+  2666 0001:00326C37  2667 0001:00326C60  2668 0001:00326C75  2669 0001:00326C9B
+  2671 0001:00326CCE  2672 0001:00326CE1  2673 0001:00326CF0  2684 0001:00326D94
+  2686 0001:00326DB2  2687 0001:00326DBB  2690 0001:00326DD9  2691 0001:00326DE0
+  2694 0001:00326DF7  2695 0001:00326E1B  2697 0001:00326E30  2698 0001:00326E3D
+  2699 0001:00326E61  2701 0001:00326E76  2702 0001:00326E83  2707 0001:00326E95
+  2708 0001:00326EB9  2710 0001:00326ECE  2711 0001:00326EDB  2712 0001:00326EFF
+  2714 0001:00326F14  2715 0001:00326F21  2716 0001:00326F2C  2717 0001:00326F37
+  2718 0001:00326F45  2720 0001:00326F4F  2721 0001:00326F5D  2723 0001:00326F65
+  2728 0001:00326F6C  2729 0001:00326F8F  2731 0001:00326FA4  2732 0001:00326FB1
+  2733 0001:00326FD4  2735 0001:00326FE9  2736 0001:00326FF6  2737 0001:00327002
+  2738 0001:0032700E  2739 0001:0032701A  2741 0001:00327021  2742 0001:0032702D
+  2744 0001:00327032  2747 0001:00327036  2750 0001:00327038  2751 0001:00327084
+  2752 0001:00327092  2753 0001:0032709C  2754 0001:003270AB  2756 0001:003270B0
+  2758 0001:003270C6  2759 0001:003270D0  2761 0001:003270DF  2762 0001:003270E4
+  2764 0001:00327107  2765 0001:00327111  2768 0001:00327120  2769 0001:0032712B
+  2780 0001:00327134  2782 0001:0032715D  2783 0001:00327167  2784 0001:00327176
+  2785 0001:00327180  2786 0001:00327184  2788 0001:0032718D  2789 0001:0032719D
+  2796 0001:003271FF  2804 0001:00327227  2806 0001:0032723C  2807 0001:0032724D
+  2809 0001:0032725A  2810 0001:00327261  2811 0001:00327281  2812 0001:003272BA
+  2814 0001:003272F6  2816 0001:00327316  2817 0001:00327335  2818 0001:0032735A
+  2819 0001:0032736C  2820 0001:00327391  2823 0001:003273A3  2824 0001:003273B3
+  2825 0001:003273CD  2810 0001:003273CE  2826 0001:003273D7  2830 0001:003273E0
+  2831 0001:003273E9  2833 0001:003273F6  2834 0001:0032740B  2835 0001:00327421
+  2836 0001:00327444  2837 0001:00327467  2839 0001:00327491  2840 0001:003274BA
+  2841 0001:003274CF  2840 0001:003274F3  2842 0001:003274F8  2843 0001:00327508
+  2845 0001:0032753A  2846 0001:0032754A  2847 0001:00327570  2848 0001:00327583
+  2853 0001:00327595  2854 0001:003275A6  2855 0001:003275B7  2856 0001:003275CC
+  2857 0001:003275E2  2858 0001:003275F7  2860 0001:00327621  2861 0001:0032763C
+  2862 0001:00327655  2861 0001:00327679  2867 0001:00327683  2869 0001:00327696
+  2870 0001:003276A7  2872 0001:003276AE  2873 0001:003276B6  2875 0001:003276D7
+  2876 0001:003276DE  2877 0001:003276FB  2879 0001:0032774B  2880 0001:00327768
+  2881 0001:00327789  2882 0001:003277D4  2883 0001:0032780D  2886 0001:00327854
+  2887 0001:00327858  2888 0001:0032787E  2889 0001:0032789B  2890 0001:003278B3
+  2889 0001:003278E8  2891 0001:003278ED  2880 0001:003278F0  2892 0001:003278F9
+  2894 0001:003278FF  2895 0001:00327926  2897 0001:0032793C  2876 0001:0032793D
+  2899 0001:00327946  2900 0001:0032794E  2901 0001:00327952  2902 0001:0032796E
+  2903 0001:003279C4  2904 0001:00327A02  2907 0001:00327A47  2908 0001:00327A4B
+  2909 0001:00327A70  2910 0001:00327A8C  2911 0001:00327AA4  2910 0001:00327AE5
+  2912 0001:00327AEA  2901 0001:00327AEB  2913 0001:00327AF4  2915 0001:00327AFA
+  2916 0001:00327B27  2918 0001:00327B3D  2920 0001:00327B52  2922 0001:00327B66
+  2923 0001:00327BC0  2924 0001:00327BFF  2926 0001:00327C11  2928 0001:00327C25
+  2929 0001:00327C5E  2930 0001:00327C9D  2932 0001:00327CAC  2934 0001:00327CBC
+  2935 0001:00327CD4  2938 0001:00327CEF  2939 0001:00327D04  2941 0001:00327D18
+  2942 0001:00327D5B  2943 0001:00327DB5  2944 0001:00327DC8  2949 0001:00327DDA
+  2950 0001:00327DEB  2951 0001:00327DFC  2952 0001:00327E11  2953 0001:00327E27
+  2954 0001:00327E3C  2956 0001:00327E6C  2957 0001:00327E9B  2958 0001:00327EB4
+  2957 0001:00327EDE  2963 0001:00327EE8  2964 0001:00327EF9  2965 0001:00327F0A
+  2966 0001:00327F1F  2967 0001:00327F35  2968 0001:00327F4A  2970 0001:00327F7A
+  2971 0001:00327FA9  2972 0001:00327FBE  2971 0001:00327FE8  2973 0001:00327FED
+  2977 0001:00328010  2978 0001:00328028  2980 0001:0032803B  2981 0001:00328043
+  2985 0001:00328270  2987 0001:00328273  2988 0001:00328280  2992 0001:00328284
+  2994 0001:00328287  2995 0001:00328294  3001 0001:00328298  3002 0001:003282A0
+  3010 0001:003282A4  3012 0001:003282C9  3013 0001:003282CE  3014 0001:003282D6
+  3015 0001:003282FE  3017 0001:00328327  3018 0001:00328341  3019 0001:00328349
+  3021 0001:00328369  3022 0001:00328392  3023 0001:003283BB  3019 0001:003283BC
+  3024 0001:003283BF  3025 0001:003283E8  3026 0001:00328403  3027 0001:00328413
+  3028 0001:0032842D  3029 0001:00328438  3014 0001:0032843B  3030 0001:00328444
+  3031 0001:0032844E  3032 0001:0032845B  3037 0001:003284A4  3038 0001:003284AF
+  3043 0001:003284B0  3044 0001:003284B8  3048 0001:003284BC  3050 0001:003284C9
+  3051 0001:003284D4  3052 0001:003284DD  3053 0001:003284E8  3054 0001:003284F1
+  3059 0001:003284F8  3061 0001:003284FD  3062 0001:00328518  3061 0001:00328538
+  3063 0001:0032853B  3068 0001:00328540  3069 0001:0032854B  3074 0001:0032854C
+  3076 0001:00328552  3079 0001:00328566  3080 0001:0032856B  3083 0001:00328570
+  3086 0001:00328578  3087 0001:0032857B  3089 0001:0032858E  3090 0001:0032859B
+  3091 0001:003285A8  3093 0001:003285C5  3097 0001:003285C8  3099 0001:003285D5
+  3101 0001:003285DB  3103 0001:003285E1  3104 0001:00328606  3106 0001:0032860D
+  3108 0001:00328613  3109 0001:00328638  3112 0001:0032863D  3113 0001:00328643
+  3114 0001:00328668  3116 0001:0032866D  3122 0001:00328674  3123 0001:0032869B
+  3124 0001:003286A5  3125 0001:003286AF  3126 0001:003286B7  3128 0001:003286BC
+  3129 0001:003286D8  3132 0001:003286E1  3134 0001:003286F6  3137 0001:00328717
+  3138 0001:00328732  3140 0001:00328751  3144 0001:00328778  3146 0001:0032877B
+  3147 0001:00328788  3151 0001:0032878C  3153 0001:0032878F  3154 0001:0032879C
+  3160 0001:003287A0  3162 0001:003287A6  3163 0001:003287AF  3164 0001:003287B7
+  3165 0001:003287BD  3166 0001:003287CA  3168 0001:003287D3  3169 0001:003287E4
+  3170 0001:00328800  3171 0001:00328812  3173 0001:00328827  3174 0001:00328839
+  3177 0001:0032884B  3178 0001:0032885A  3179 0001:0032886C  3181 0001:0032887E
+  3182 0001:0032888F  3183 0001:0032889F  3185 0001:003288B5  3193 0001:003289E4
+  3195 0001:00328A0D  3196 0001:00328A22  3197 0001:00328A29  3198 0001:00328A32
+  3199 0001:00328A3F  3200 0001:00328A4C  3201 0001:00328A70  3203 0001:00328A92
+  3204 0001:00328AAF  3206 0001:00328AC1  3208 0001:00328AD3  3209 0001:00328AE5
+  3210 0001:00328AF7  3211 0001:00328B00  3213 0001:00328B10  3215 0001:00328B17
+  3216 0001:00328B24  3218 0001:00328B37  3219 0001:00328B47  3220 0001:00328B4E
+  3221 0001:00328B57  3222 0001:00328B78  3223 0001:00328BAC  3224 0001:00328BCF
+  3225 0001:00328BD9  3226 0001:00328BEA  3228 0001:00328C14  3229 0001:00328C3D
+  3230 0001:00328C56  3229 0001:00328C7D  3231 0001:00328C80  3232 0001:00328C90
+  3233 0001:00328CB1  3235 0001:00328CF4  3236 0001:00328D04  3237 0001:00328D3B
+  3238 0001:00328D4E  3241 0001:00328D5D  3243 0001:00328D6F  3244 0001:00328D80
+  3245 0001:00328D90  3247 0001:00328DA6  3251 0001:00328F2C  3253 0001:00328F32
+  3256 0001:00328F46  3257 0001:00328F4B  3261 0001:00328F50  3264 0001:00328F58
+  3266 0001:00328F5B  3267 0001:00328F6D  3268 0001:00328F90  3271 0001:00328F94
+  3273 0001:00328FAA  3275 0001:00328FBC  3276 0001:00328FDE  3280 0001:00328FF3
+  3282 0001:0032900A  3283 0001:00329013  3286 0001:00329034  3288 0001:00329037
+  3290 0001:00329049  3291 0001:00329059  3293 0001:0032907C  3296 0001:00329080
+  3298 0001:00329083  3300 0001:00329095  3301 0001:003290A5  3303 0001:003290C8
+  3306 0001:003290CC  3308 0001:003290CF  3310 0001:003290D8  3311 0001:003290F8
+  3312 0001:00329104  3313 0001:00329127  3317 0001:00329147  3322 0001:0032914C
+  3323 0001:0032915C
+
+Line numbers for fReports(fReports.pas) segment .itext
+
+  3325 0002:00001984  3326 0002:0000199E  3328 0002:000019A8
+
+Line numbers for rReports(rReports.pas) segment .text
+
+   108 0001:00329208   111 0001:0032923B   112 0001:0032923E   113 0001:0032926F
+   121 0001:00329272   122 0001:00329278   124 0001:003292A2   125 0001:003292BF
+   114 0001:003292C0   128 0001:003292F2   131 0001:0032932C   132 0001:0032932F
+   133 0001:00329347   134 0001:00329358   135 0001:00329369   136 0001:0032937A
+   137 0001:0032938B   138 0001:0032939C   139 0001:003293AD   149 0001:0032941C
+   150 0001:0032943B   151 0001:00329454   152 0001:00329465   153 0001:00329476
+   158 0001:003294D0   159 0001:003294ED   160 0001:003294F6   163 0001:00329502
+   164 0001:0032950C   166 0001:00329516   167 0001:0032955D   172 0001:00329598
+   175 0001:003295B5   176 0001:003295BE   179 0001:003295CA   180 0001:003295D4
+   182 0001:003295DE   183 0001:00329625   186 0001:00329660   187 0001:00329663
+   188 0001:00329671   189 0001:0032967D   192 0001:00329680   193 0001:00329683
+   194 0001:00329691   195 0001:0032969B   196 0001:003296A7   200 0001:003296AC
+   201 0001:003296CC   203 0001:003296DB   205 0001:003296E2   208 0001:00329710
+   209 0001:00329732   210 0001:0032974B   211 0001:0032975F   214 0001:003297A4
+   215 0001:003297C3   216 0001:003297DC   222 0001:00329818   223 0001:0032983C
+   226 0001:0032985C   227 0001:00329879   229 0001:00329899   230 0001:003298B0
+   231 0001:003298E6   237 0001:003299F2   238 0001:00329A09   227 0001:00329A0A
+   239 0001:00329A11   241 0001:00329A26   247 0001:00329AD8   248 0001:00329AFB
+   251 0001:00329B1B   253 0001:00329B3C   254 0001:00329B53   256 0001:00329B7C
+   258 0001:00329BEB   259 0001:00329C71   260 0001:00329C88   251 0001:00329C89
+   261 0001:00329C92   263 0001:00329CA7   269 0001:00329D3C   270 0001:00329D5C
+   273 0001:00329D7C   275 0001:00329D9C   276 0001:00329DB3   277 0001:00329E11
+   278 0001:00329E28   273 0001:00329E29   279 0001:00329E30   281 0001:00329E45
+   289 0001:00329EA8   290 0001:00329ECC   293 0001:00329EEC   295 0001:00329F0C
+   296 0001:00329F23   297 0001:00329F6B   299 0001:0032A00D   300 0001:0032A053
+   301 0001:0032A06A   293 0001:0032A06B   302 0001:0032A072   304 0001:0032A087
+   310 0001:0032A13C   311 0001:0032A18F   312 0001:0032A197   313 0001:0032A19F
+   314 0001:0032A1A7   315 0001:0032A1AF   316 0001:0032A1B7   318 0001:0032A1CB
+   319 0001:0032A1E9   320 0001:0032A207   322 0001:0032A213   323 0001:0032A21F
+   324 0001:0032A22B   326 0001:0032A237   327 0001:0032A249   329 0001:0032A25C
+   331 0001:0032A26C   332 0001:0032A27E   333 0001:0032A291   334 0001:0032A2A3
+   336 0001:0032A2C2   337 0001:0032A2EF   338 0001:0032A31C   339 0001:0032A334
+   341 0001:0032A348   342 0001:0032A3BF   346 0001:0032A3D6   347 0001:0032A3E3
+   349 0001:0032A3F0   352 0001:0032A4AC   353 0001:0032A4AF   354 0001:0032A4C7
+   360 0001:0032A4EC   361 0001:0032A54F   362 0001:0032A56C   363 0001:0032A57C
+   364 0001:0032A5BA   366 0001:0032A663   367 0001:0032A677   373 0001:0032A700
+   374 0001:0032A763   375 0001:0032A780   376 0001:0032A790   377 0001:0032A7CE
+   379 0001:0032A877   380 0001:0032A88B   393 0001:0032A914   394 0001:0032A91A
+   395 0001:0032A936   398 0001:0032A954   399 0001:0032A95A   400 0001:0032A976
+   403 0001:0032A994   404 0001:0032A99A   405 0001:0032A9B6   408 0001:0032A9D4
+   409 0001:0032A9FE   410 0001:0032AA3F   421 0001:0032AA88   422 0001:0032AAD5
+   423 0001:0032AADD   424 0001:0032AAE5   425 0001:0032AAED   426 0001:0032AAF5
+   427 0001:0032AAFD   428 0001:0032AB0B   430 0001:0032AB1B   431 0001:0032AB39
+   432 0001:0032AB57   433 0001:0032AB69   435 0001:0032AB7C   437 0001:0032AB8C
+   438 0001:0032AB9E   439 0001:0032ABB1   440 0001:0032ABC3   442 0001:0032ABE2
+   443 0001:0032AC0F   444 0001:0032AC3C   446 0001:0032AC50   447 0001:0032AC58
+   449 0001:0032AC6A   450 0001:0032AC86   452 0001:0032AC93   454 0001:0032ACD1
+   456 0001:0032ACD3   447 0001:0032ACD4   457 0001:0032ACD7   459 0001:0032ACE6
+   461 0001:0032AD08   462 0001:0032AD20   464 0001:0032AD2F   465 0001:0032AD75
+   469 0001:0032ADCB   471 0001:0032AE93   473 0001:0032AEED   474 0001:0032AEF4
+   475 0001:0032AEFB   486 0001:0032AFC4   487 0001:0032B011   488 0001:0032B019
+   489 0001:0032B021   490 0001:0032B029   491 0001:0032B031   492 0001:0032B039
+   493 0001:0032B047   495 0001:0032B057   496 0001:0032B075   497 0001:0032B093
+   498 0001:0032B0A5   500 0001:0032B0B8   502 0001:0032B0C8   503 0001:0032B0DA
+   504 0001:0032B0ED   505 0001:0032B0FF   507 0001:0032B11E   508 0001:0032B14B
+   509 0001:0032B178   511 0001:0032B18C   512 0001:0032B194   514 0001:0032B1A6
+   515 0001:0032B1C2   517 0001:0032B1CF   519 0001:0032B20D   521 0001:0032B20F
+   512 0001:0032B210   522 0001:0032B213   524 0001:0032B222   526 0001:0032B244
+   527 0001:0032B25C   529 0001:0032B267   530 0001:0032B294   534 0001:0032B2A6
+   536 0001:0032B33D   538 0001:0032B34A   539 0001:0032B351   540 0001:0032B358
+   556 0001:0032B400   557 0001:0032B43C   558 0001:0032B44B   559 0001:0032B453
+   561 0001:0032B475   562 0001:0032B493   564 0001:0032B4A0   574 0001:0032B4AD
+   573 0001:0032B4C6   576 0001:0032B520   575 0001:0032B52D   578 0001:0032B56F
+   583 0001:0032B581   584 0001:0032B598   585 0001:0032B5AF   586 0001:0032B5BF
+   587 0001:0032B5F6   588 0001:0032B60D   589 0001:0032B613   590 0001:0032B61D
+   592 0001:0032B63C   594 0001:0032B65A   595 0001:0032B664   596 0001:0032B66A
+   598 0001:0032B679   600 0001:0032B691   601 0001:0032B6B7   602 0001:0032B6BA
+   598 0001:0032B6BD   607 0001:0032B6C4   608 0001:0032B6ED   610 0001:0032B6F0
+   590 0001:0032B6F3   611 0001:0032B6FC   622 0001:0032B708   623 0001:0032B716
+   624 0001:0032B748   626 0001:0032B776   627 0001:0032B77E   633 0001:0032B7F4
+   636 0001:0032B822   637 0001:0032B82E   638 0001:0032B867   639 0001:0032B873
+   640 0001:0032B899   643 0001:0032B8DB   645 0001:0032B924   646 0001:0032B965
+   647 0001:0032B96F   648 0001:0032B988   649 0001:0032B9D7   650 0001:0032B9E3
+   652 0001:0032B9EF   664 0001:0032BAB0   665 0001:0032BAE0   666 0001:0032BAE5
+   667 0001:0032BAF4   668 0001:0032BAFF   669 0001:0032BB0E   670 0001:0032BB1C
+   671 0001:0032BB24   672 0001:0032BB42   674 0001:0032BB4A   675 0001:0032BB5F
+   676 0001:0032BB74   677 0001:0032BB82   678 0001:0032BBAF   679 0001:0032BBC6
+   680 0001:0032BBC9   681 0001:0032BBD1   682 0001:0032BBDF   684 0001:0032BBF6
+   685 0001:0032BC19   686 0001:0032BC1C   682 0001:0032BC1F   687 0001:0032BC22
+   689 0001:0032BC2B   691 0001:0032BC89   695 0001:0032BCA6   696 0001:0032BCB0
+   697 0001:0032BCB8   699 0001:0032BCC8   702 0001:0032BD18   703 0001:0032BD37
+   704 0001:0032BD50   708 0001:0032BD98   709 0001:0032BDBD   710 0001:0032BDE7
+   711 0001:0032BDF9   712 0001:0032BE06   715 0001:0032BE4C   716 0001:0032BE6E
+   717 0001:0032BE87   718 0001:0032BE9B   721 0001:0032BEE0   722 0001:0032BF02
+   723 0001:0032BF1B   724 0001:0032BF2D   725 0001:0032BF41   728 0001:0032BF80
+   729 0001:0032BF89   730 0001:0032BFB5   731 0001:0032BFC9   734 0001:0032BFF0
+   735 0001:0032BFF6   736 0001:0032C00E   737 0001:0032C022   740 0001:0032C048
+   741 0001:0032C04E   742 0001:0032C066   743 0001:0032C07A   746 0001:0032C098
+   747 0001:0032C09E   748 0001:0032C0B6   749 0001:0032C0CA   752 0001:0032C0E8
+   753 0001:0032C10A   754 0001:0032C123   755 0001:0032C135   756 0001:0032C149
+   759 0001:0032C190   760 0001:0032C1B2   761 0001:0032C1CB   762 0001:0032C1E1
+   765 0001:0032C224   766 0001:0032C23E   767 0001:0032C256   768 0001:0032C26C
+   770 0001:0032C28F   771 0001:0032C291   775 0001:0032C2D0   776 0001:0032C2EC
+   777 0001:0032C30F   780 0001:0032C34C   781 0001:0032C374   782 0001:0032C38D
+   783 0001:0032C3A2   784 0001:0032C3BB   785 0001:0032C3EF   786 0001:0032C408
+   787 0001:0032C41C   790 0001:0032C47C   791 0001:0032C4A6   792 0001:0032C4CC
+   800 0001:0032C510   801 0001:0032C527   802 0001:0032C539   803 0001:0032C544
+   804 0001:0032C54F   805 0001:0032C55D   806 0001:0032C579   817 0001:0032C5CB
+   818 0001:0032C5D3   820 0001:0032C5E3   826 0001:0032C5EC   827 0001:0032C60F
+   828 0001:0032C619   829 0001:0032C623   830 0001:0032C62D   832 0001:0032C637
+
+Line numbers for rReports(rReports.pas) segment .itext
+
+   822 0002:000019C0   825 0002:000019C7
+
+Line numbers for fDeviceSelect(fDeviceSelect.pas) segment .text
+
+    55 0001:0032C938    56 0001:0032C95F    57 0001:0032C976    60 0001:0032C984
+    61 0001:0032C98D    63 0001:0032C996    65 0001:0032C9B5    66 0001:0032C9C5
+    69 0001:0032C9D5    71 0001:0032C9E2    72 0001:0032C9F5    73 0001:0032CA1A
+    75 0001:0032CA24    77 0001:0032CA32    79 0001:0032CA41    80 0001:0032CA65
+    83 0001:0032CA78    85 0001:0032CA8A    87 0001:0032CA8E    88 0001:0032CAB2
+    93 0001:0032CAC5    95 0001:0032CAD5    99 0001:0032CAE8   100 0001:0032CAF5
+   102 0001:0032CB05   103 0001:0032CB10   107 0001:0032CB2B   109 0001:0032CB3B
+   112 0001:0032CC24   114 0001:0032CC40   116 0001:0032CC50   117 0001:0032CC88
+   119 0001:0032CCC0   122 0001:0032CCEC   124 0001:0032CD0E   126 0001:0032CD35
+   127 0001:0032CD46   129 0001:0032CD48   130 0001:0032CD72   131 0001:0032CDB8
+   132 0001:0032CDBF   135 0001:0032CE6C   137 0001:0032CE6F   138 0001:0032CE79
+   139 0001:0032CE80   143 0001:0032CE84   145 0001:0032CE8D   146 0001:0032CEA4
+   152 0001:0032CEAC   153 0001:0032CEB1   156 0001:0032CEB4   158 0001:0032CEB7
+   159 0001:0032CEBE   160 0001:0032CEC5
+
+Line numbers for fDeviceSelect(fDeviceSelect.pas) segment .itext
+
+   162 0002:000019C8
+
+Line numbers for uPCE(Encounter\uPCE.pas) segment .text
+
+   456 0001:0032D6BC   457 0001:0032D6D2   458 0001:0032D6D9   459 0001:0032D6F9
+   461 0001:0032D707   462 0001:0032D71C   463 0001:0032D728   466 0001:0032D7A0
+   467 0001:0032D7BF   468 0001:0032D7E9   469 0001:0032D7F2   470 0001:0032D7FE
+   471 0001:0032D802   473 0001:0032D835   482 0001:0032D8EC   483 0001:0032D90A
+   484 0001:0032D90E   485 0001:0032D912   488 0001:0032D949   489 0001:0032D94F
+   490 0001:0032D952   494 0001:0032D95E   495 0001:0032D96D   496 0001:0032D97B
+   497 0001:0032D987   499 0001:0032D99F   502 0001:0032D9AF   505 0001:0032D9DC
+   506 0001:0032D9E2   507 0001:0032DA20   510 0001:0032DA34   511 0001:0032DA37
+   512 0001:0032DA43   514 0001:0032DA47   515 0001:0032DA50   525 0001:0032DA54
+   526 0001:0032DA78   527 0001:0032DA81   528 0001:0032DA88   529 0001:0032DA92
+   530 0001:0032DAA0   531 0001:0032DAB8   532 0001:0032DAC6   534 0001:0032DAE3
+   535 0001:0032DAF1   536 0001:0032DB14   537 0001:0032DB17   538 0001:0032DB22
+   539 0001:0032DB27   540 0001:0032DB2E   541 0001:0032DB33   532 0001:0032DB36
+   543 0001:0032DB46   546 0001:0032DB68   548 0001:0032DB7B   550 0001:0032DB91
+   551 0001:0032DBA0   552 0001:0032DBAB   581 0001:0032DBD0   582 0001:0032DBEF
+   583 0001:0032DC09   584 0001:0032DC19   586 0001:0032DC23   587 0001:0032DC32
+   588 0001:0032DC40   589 0001:0032DC64   590 0001:0032DC6E   591 0001:0032DC78
+   592 0001:0032DC82   593 0001:0032DC8C   594 0001:0032DC96   596 0001:0032DCA0
+   598 0001:0032DCAA   600 0001:0032DCB0   601 0001:0032DCC0   604 0001:0032DCDB
+   607 0001:0032DCED   613 0001:0032DD30   614 0001:0032DD4E   616 0001:0032DD53
+   618 0001:0032DD5C   619 0001:0032DD6D   620 0001:0032DD77   621 0001:0032DD88
+   623 0001:0032DD99   627 0001:0032DDAA   628 0001:0032DDB3   629 0001:0032DDC4
+   630 0001:0032DDCD   632 0001:0032DDD1   636 0001:0032DDD4   637 0001:0032DDED
+   633 0001:0032DDEE   641 0001:0032DE30   647 0001:0032DE7C   648 0001:0032DEAB
+   649 0001:0032DEB2   651 0001:0032DEBB   652 0001:0032DEC4   653 0001:0032DED5
+   654 0001:0032DEDE   656 0001:0032DEE6   660 0001:0032DEE9   662 0001:0032DF18
+   663 0001:0032DF37   665 0001:0032DF39   657 0001:0032DF3A   669 0001:0032DF80
+   675 0001:0032DFC0   676 0001:0032DFCE   678 0001:0032DFE0   679 0001:0032DFE7
+   680 0001:0032DFF5   681 0001:0032DFFE   683 0001:0032E011   684 0001:0032E01E
+   686 0001:0032E027   688 0001:0032E03B   689 0001:0032E048   690 0001:0032E054
+   694 0001:0032E062   695 0001:0032E06E   700 0001:0032E07A   706 0001:0032E084
+   707 0001:0032E085   708 0001:0032E091   712 0001:0032E094   713 0001:0032E09E
+   721 0001:0032E0A0   722 0001:0032E0D3   723 0001:0032E0DB   725 0001:0032E0E4
+   727 0001:0032E0ED   728 0001:0032E0FE   729 0001:0032E108   730 0001:0032E119
+   732 0001:0032E12A   733 0001:0032E140   734 0001:0032E14A   738 0001:0032E172
+   739 0001:0032E17B   740 0001:0032E18C   741 0001:0032E1A6   742 0001:0032E1B6
+   744 0001:0032E1C0   745 0001:0032E1CF   746 0001:0032E1DD   747 0001:0032E201
+   748 0001:0032E20B   749 0001:0032E215   750 0001:0032E21F   751 0001:0032E229
+   752 0001:0032E233   754 0001:0032E23D   756 0001:0032E247   758 0001:0032E24D
+   759 0001:0032E25D   762 0001:0032E278   765 0001:0032E28A   767 0001:0032E294
+   771 0001:0032E299   773 0001:0032E2C9   774 0001:0032E2EC   776 0001:0032E2EE
+   768 0001:0032E2F1   780 0001:0032E339   784 0001:0032E390   785 0001:0032E3CE
+   786 0001:0032E3D5   787 0001:0032E3E2   789 0001:0032E401   790 0001:0032E40B
+   793 0001:0032E41F   794 0001:0032E429   796 0001:0032E457   798 0001:0032E461
+   806 0001:0032E4D0   807 0001:0032E4F3   808 0001:0032E506   809 0001:0032E534
+   810 0001:0032E542   812 0001:0032E54E   813 0001:0032E55A   816 0001:0032E56B
+   818 0001:0032E594   819 0001:0032E5A7   823 0001:0032E5BC   824 0001:0032E5CA
+   826 0001:0032E5D2   827 0001:0032E5DE   829 0001:0032E5E8   830 0001:0032E60E
+   831 0001:0032E616   832 0001:0032E638   833 0001:0032E65D   835 0001:0032E670
+   837 0001:0032E68A   839 0001:0032E6D6   841 0001:0032E6FA   844 0001:0032E705
+   851 0001:0032E760   852 0001:0032E782   853 0001:0032E789   855 0001:0032E7BF
+   856 0001:0032E7CC   860 0001:0032E7DE   861 0001:0032E7EB   863 0001:0032E7F4
+   865 0001:0032E802   866 0001:0032E81B   869 0001:0032E82B   871 0001:0032E857
+   874 0001:0032E8A2   876 0001:0032E8AD   882 0001:0032EA10   883 0001:0032EA19
+   884 0001:0032EA24   886 0001:0032EA33   887 0001:0032EA40   888 0001:0032EA59
+   891 0001:0032EA60   892 0001:0032EA69   893 0001:0032EA74   895 0001:0032EA8D
+   896 0001:0032EAA1   907 0001:0032EAA8   908 0001:0032EAC3   910 0001:0032EAC9
+   914 0001:0032EAF6   917 0001:0032EB1F   918 0001:0032EB25   921 0001:0032EB78
+   922 0001:0032EB7E   923 0001:0032EB85   924 0001:0032EB8C   925 0001:0032EB97
+   926 0001:0032EBA2   927 0001:0032EBAD   928 0001:0032EBB9   929 0001:0032EBC3
+   932 0001:0032EBC8   933 0001:0032EBCE   935 0001:0032EBDA   934 0001:0032EBEC
+   936 0001:0032EC00   946 0001:0032EC04   947 0001:0032EC07   948 0001:0032EC0B
+   949 0001:0032EC0F   950 0001:0032EC17   951 0001:0032EC1F   952 0001:0032EC27
+   953 0001:0032EC35   954 0001:0032EC3E   965 0001:0032EC40   966 0001:0032EC60
+   967 0001:0032EC6C   968 0001:0032ECBE   972 0001:0032ECF4   973 0001:0032ECFA
+   974 0001:0032ED04   978 0001:0032ED08   979 0001:0032ED0F   980 0001:0032ED11
+   981 0001:0032ED38   982 0001:0032ED3A   985 0001:0032ED40   986 0001:0032ED43
+   987 0001:0032ED4A   996 0001:0032ED4C   997 0001:0032ED6A   998 0001:0032ED87
+   999 0001:0032EDA4  1000 0001:0032EDC1  1001 0001:0032EDE5  1002 0001:0032EE01
+  1008 0001:0032EE2C  1009 0001:0032EE32  1010 0001:0032EE3B  1011 0001:0032EE46
+  1012 0001:0032EE59  1016 0001:0032EE68  1017 0001:0032EE6B  1019 0001:0032EE72
+  1020 0001:0032EE7F  1029 0001:0032EE90  1030 0001:0032EEA9  1032 0001:0032EEB2
+  1034 0001:0032EEF6  1044 0001:0032EF30  1045 0001:0032EF36  1046 0001:0032EF45
+  1050 0001:0032EF5C  1051 0001:0032EF75  1052 0001:0032EF84  1054 0001:0032EF95
+  1055 0001:0032EF9C  1056 0001:0032EFBC  1060 0001:0032EFF8  1061 0001:0032F011
+  1063 0001:0032F01A  1064 0001:0032F037  1065 0001:0032F04A  1074 0001:0032F078
+  1075 0001:0032F07E  1077 0001:0032F087  1078 0001:0032F092  1079 0001:0032F098
+  1080 0001:0032F0A4  1081 0001:0032F0B0  1082 0001:0032F0C3  1086 0001:0032F0D4
+  1087 0001:0032F0D7  1089 0001:0032F0DE  1090 0001:0032F0EB  1091 0001:0032F0F0
+  1092 0001:0032F0F8  1093 0001:0032F100  1102 0001:0032F110  1103 0001:0032F12B
+  1105 0001:0032F134  1108 0001:0032F186  1118 0001:0032F1C8  1119 0001:0032F1CE
+  1120 0001:0032F1DD  1124 0001:0032F1F4  1125 0001:0032F210  1126 0001:0032F21F
+  1128 0001:0032F230  1129 0001:0032F237  1130 0001:0032F243  1131 0001:0032F24A
+  1132 0001:0032F25E  1133 0001:0032F27E  1139 0001:0032F2C0  1140 0001:0032F2DD
+  1142 0001:0032F2E6  1143 0001:0032F303  1144 0001:0032F315  1145 0001:0032F327
+  1146 0001:0032F339  1148 0001:0032F34C  1149 0001:0032F352  1150 0001:0032F35D
+  1151 0001:0032F363  1152 0001:0032F36F  1153 0001:0032F375  1155 0001:0032F381
+  1161 0001:0032F3B8  1162 0001:0032F3BE  1163 0001:0032F3C7  1164 0001:0032F3D2
+  1165 0001:0032F3E5  1169 0001:0032F3F4  1170 0001:0032F3F7  1172 0001:0032F3FE
+  1173 0001:0032F40B  1182 0001:0032F41C  1183 0001:0032F435  1185 0001:0032F43E
+  1187 0001:0032F48A  1197 0001:0032F4C4  1198 0001:0032F4CA  1199 0001:0032F4D9
+  1203 0001:0032F4F0  1204 0001:0032F509  1205 0001:0032F518  1207 0001:0032F529
+  1208 0001:0032F530  1209 0001:0032F550  1213 0001:0032F58C  1214 0001:0032F5A5
+  1216 0001:0032F5AE  1217 0001:0032F5CB  1218 0001:0032F5DE  1227 0001:0032F60C
+  1228 0001:0032F612  1230 0001:0032F61B  1231 0001:0032F626  1232 0001:0032F631
+  1233 0001:0032F638  1234 0001:0032F63F  1235 0001:0032F652  1236 0001:0032F665
+  1240 0001:0032F674  1241 0001:0032F677  1243 0001:0032F67E  1244 0001:0032F68B
+  1245 0001:0032F698  1246 0001:0032F69C  1247 0001:0032F6A0  1256 0001:0032F6B0
+  1257 0001:0032F6C9  1259 0001:0032F6D2  1260 0001:0032F6FA  1261 0001:0032F71A
+  1262 0001:0032F732  1266 0001:0032F75A  1281 0001:0032F7AC  1282 0001:0032F7B2
+  1283 0001:0032F7C1  1287 0001:0032F7D8  1288 0001:0032F7F3  1289 0001:0032F802
+  1291 0001:0032F813  1292 0001:0032F81A  1293 0001:0032F826  1294 0001:0032F835
+  1295 0001:0032F84F  1296 0001:0032F85B  1297 0001:0032F861  1298 0001:0032F86D
+  1299 0001:0032F88D  1305 0001:0032F8DC  1306 0001:0032F8F9  1308 0001:0032F902
+  1309 0001:0032F91F  1310 0001:0032F93C  1311 0001:0032F94E  1312 0001:0032F967
+  1313 0001:0032F979  1314 0001:0032F992  1315 0001:0032F9A5  1316 0001:0032F9B8
+  1323 0001:0032F9F8  1324 0001:0032F9FF  1325 0001:0032FA08  1326 0001:0032FA10
+  1327 0001:0032FA1B  1328 0001:0032FA27  1332 0001:0032FA2C  1333 0001:0032FA2F
+  1334 0001:0032FA36  1335 0001:0032FA3B  1337 0001:0032FA43  1338 0001:0032FA51
+  1341 0001:0032FA54  1342 0001:0032FA5A  1343 0001:0032FA61  1345 0001:0032FA68
+  1346 0001:0032FA74  1347 0001:0032FA7F  1348 0001:0032FA8A  1349 0001:0032FA95
+  1350 0001:0032FA9F  1351 0001:0032FAAA  1364 0001:0032FAB0  1365 0001:0032FAD5
+  1366 0001:0032FADA  1367 0001:0032FADF  1369 0001:0032FAE7  1370 0001:0032FAF7
+  1372 0001:0032FAFD  1373 0001:0032FB00  1374 0001:0032FB2B  1376 0001:0032FB2C
+  1378 0001:0032FB32  1379 0001:0032FB3B  1380 0001:0032FB63  1382 0001:0032FBCB
+  1383 0001:0032FBF3  1394 0001:0032FC5C  1395 0001:0032FC5F  1397 0001:0032FC95
+  1409 0001:0032FC98  1410 0001:0032FCB4  1411 0001:0032FCBB  1413 0001:0032FCC1
+  1415 0001:0032FCC6  1416 0001:0032FCD6  1418 0001:0032FCDC  1419 0001:0032FCF2
+  1421 0001:0032FD08  1422 0001:0032FD09  1424 0001:0032FD0F  1428 0001:0032FD44
+  1429 0001:0032FD62  1430 0001:0032FD6A  1432 0001:0032FD85  1433 0001:0032FD8C
+  1434 0001:0032FDB9  1441 0001:0032FE00  1442 0001:0032FE20  1443 0001:0032FE29
+  1445 0001:0032FE4B  1446 0001:0032FE6F  1447 0001:0032FE77  1448 0001:0032FE89
+  1449 0001:0032FEA6  1450 0001:0032FEAA  1451 0001:0032FEB5  1450 0001:0032FEF2
+  1452 0001:0032FEF5  1458 0001:0032FF2C  1459 0001:0032FF32  1460 0001:0032FF3B
+  1461 0001:0032FF46  1462 0001:0032FF59  1466 0001:0032FF68  1467 0001:0032FF6B
+  1469 0001:0032FF72  1470 0001:0032FF7F  1479 0001:0032FF90  1480 0001:0032FFA9
+  1482 0001:0032FFB2  1484 0001:0032FFF6  1494 0001:00330030  1495 0001:00330036
+  1496 0001:00330045  1500 0001:0033005C  1501 0001:00330075  1502 0001:00330084
+  1504 0001:00330095  1505 0001:0033009C  1506 0001:003300BC  1510 0001:003300F8
+  1511 0001:00330111  1513 0001:0033011A  1514 0001:00330137  1515 0001:0033014A
+  1520 0001:00330178  1521 0001:0033017E  1522 0001:00330187  1523 0001:00330190
+  1524 0001:00330197  1533 0001:0033019C  1534 0001:0033019F  1535 0001:003301A6
+  1537 0001:003301AA  1538 0001:003301AE  1549 0001:003301B0  1550 0001:003301CE
+  1551 0001:003301D7  1552 0001:003301DD  1554 0001:003301ED  1555 0001:003301F5
+  1557 0001:0033025B  1558 0001:00330278  1559 0001:003302A0  1562 0001:003302E0
+  1563 0001:003302FC  1565 0001:00330302  1566 0001:00330317  1567 0001:0033031B
+  1569 0001:00330348  1573 0001:00330351  1574 0001:0033037A  1576 0001:0033037E
+  1577 0001:00330384  1589 0001:003303D8  1590 0001:003303F1  1591 0001:003303F7
+  1593 0001:00330405  1595 0001:00330411  1596 0001:00330417  1598 0001:00330427
+  1600 0001:00330435  1601 0001:00330455  1616 0001:003304B8  1617 0001:003304D3
+  1618 0001:003304DC  1619 0001:003304E7  1621 0001:0033050C  1622 0001:00330531
+  1627 0001:00330568  1628 0001:0033057A  1629 0001:00330589  1630 0001:00330598
+  1631 0001:003305A7  1632 0001:003305B6  1633 0001:003305C5  1634 0001:003305D4
+  1635 0001:003305E3  1636 0001:003305F2  1637 0001:00330601  1638 0001:00330608
+  1639 0001:0033060F  1640 0001:00330616  1641 0001:0033061D  1642 0001:00330624
+  1643 0001:0033062B  1644 0001:00330632  1645 0001:00330639  1646 0001:0033063D
+  1651 0001:00330658  1652 0001:00330667  1653 0001:00330687  1654 0001:003306A7
+  1655 0001:003306C7  1656 0001:003306E7  1657 0001:00330707  1658 0001:00330727
+  1659 0001:00330747  1660 0001:0033074F  1661 0001:00330757  1662 0001:0033075F
+  1663 0001:00330767  1664 0001:0033076F  1665 0001:00330777  1666 0001:0033077F
+  1667 0001:00330787  1668 0001:0033078F  1669 0001:0033079D  1677 0001:003307B0
+  1678 0001:003307B5  1679 0001:003307C0  1678 0001:003307CF  1680 0001:003307D2
+  1681 0001:003307D9  1683 0001:003307E0  1684 0001:003307E3  1685 0001:003307EB
+  1686 0001:003307F3  1687 0001:003307F8  1688 0001:003307FC  1689 0001:00330800
+  1690 0001:00330804  1691 0001:00330808  1692 0001:0033080C  1693 0001:00330814
+  1694 0001:0033081C  1695 0001:00330823  1696 0001:0033082A  1697 0001:00330831
+  1698 0001:00330838  1699 0001:0033083F  1700 0001:00330846  1701 0001:0033084D
+  1703 0001:00330854  1704 0001:0033085C  1705 0001:00330864  1706 0001:0033086C
+  1707 0001:00330874  1708 0001:0033087C  1709 0001:00330884  1711 0001:0033088C
+  1712 0001:00330894  1713 0001:0033089C  1714 0001:003308A0  1715 0001:003308A5
+  1716 0001:003308AA  1720 0001:003308AC  1721 0001:003308BD  1725 0001:003308C0
+  1726 0001:003308D1  1730 0001:003308D4  1731 0001:003308E5  1735 0001:003308E8
+  1736 0001:003308F9  1740 0001:003308FC  1741 0001:0033090D  1745 0001:00330910
+  1746 0001:00330921  1750 0001:00330924  1751 0001:00330935  1754 0001:00330938
+  1755 0001:00330955  1756 0001:003309A1  1759 0001:003309D8  1760 0001:003309DB
+  1761 0001:003309F4  1791 0001:00330A00  1792 0001:00330A23  1793 0001:00330A26
+  1794 0001:00330A4D  1795 0001:00330A71  1798 0001:00330AB4  1800 0001:00330ADB
+  1804 0001:00330B32  1803 0001:00330B4F  1806 0001:00330B61  1808 0001:00330B94
+  1809 0001:00330B9E  1811 0001:00330BD4  1814 0001:00330BFF  1815 0001:00330C04
+  1818 0001:00330C18  1819 0001:00330C22  1820 0001:00330C28  1822 0001:00330C2C
+  1824 0001:00330C45  1825 0001:00330C65  1826 0001:00330C8A  1829 0001:00330C8E
+  1830 0001:00330C90  1832 0001:00330C94  1833 0001:00330CA7  1834 0001:00330CAD
+  1838 0001:00330CB6  1840 0001:00330CBE  1844 0001:00330D0B  1845 0001:00330D17
+  1847 0001:00330D26  1848 0001:00330D28  1850 0001:00330D2C  1852 0001:00330D34
+  1853 0001:00330D3D  1854 0001:00330D42  1856 0001:00330D47  1861 0001:00330D4C
+  1862 0001:00330D5F  1863 0001:00330D65  1865 0001:00330D70  1866 0001:00330D74
+  1867 0001:00330D94  1869 0001:00330DB9  1871 0001:00330DCA  1872 0001:00330DCF
+  1874 0001:00330E1E  1875 0001:00330E22  1879 0001:00330E30  1880 0001:00330E34
+  1881 0001:00330E3C  1884 0001:00330E3E  1885 0001:00330E42  1887 0001:00330E53
+  1890 0001:00330E5B  1891 0001:00330E62  1892 0001:00330E71  1893 0001:00330E80
+  1894 0001:00330E8E  1895 0001:00330E9B  1896 0001:00330E9E  1898 0001:00330EBA
+  1899 0001:00330EC8  1902 0001:00330EF1  1905 0001:00330F17  1906 0001:00330F4A
+  1908 0001:00330F50  1909 0001:00330F54  1910 0001:00330F60  1914 0001:00330F94
+  1915 0001:00330FC6  1918 0001:00331002  1920 0001:00331013  1924 0001:0033101B
+  1926 0001:00331046  1928 0001:0033104C  1929 0001:00331058  1932 0001:0033107F
+  1934 0001:003310A4  1935 0001:003310F5  1937 0001:00331120  1938 0001:00331126
+  1940 0001:0033112C  1942 0001:0033113C  1944 0001:0033117C  1945 0001:003311B2
+  1946 0001:003311E8  1947 0001:0033121E  1948 0001:00331254  1950 0001:0033128A
+  1951 0001:003312C0  1952 0001:003312F6  1955 0001:00331332  1958 0001:0033133D
+  1962 0001:00331379  1963 0001:00331397  1964 0001:003313A5  1965 0001:003313AF
+  1967 0001:003313B9  1970 0001:003313FD  1972 0001:0033141B  1973 0001:0033141F
+  1974 0001:00331436  1973 0001:0033147B  1975 0001:0033147E  1977 0001:0033149A
+  1978 0001:003314A8  1979 0001:003314B2  1980 0001:003314B6  1983 0001:003314C0
+  1986 0001:003314FC  1987 0001:0033151A  1988 0001:00331528  1989 0001:00331532
+  1991 0001:0033153C  1994 0001:00331578  1995 0001:00331596  1996 0001:003315A4
+  1997 0001:003315AE  1999 0001:003315B8  2002 0001:003315F4  2003 0001:00331612
+  2004 0001:00331620  2005 0001:0033162A  2007 0001:00331634  2010 0001:00331670
+  2011 0001:0033168E  2012 0001:0033169C  2013 0001:003316A6  2015 0001:003316B0
+  2018 0001:003316EC  2019 0001:0033170A  2020 0001:00331718  2021 0001:00331722
+  2024 0001:0033172C  1896 0001:0033172F  2026 0001:00331745  2027 0001:0033174D
+  2029 0001:0033175D  2049 0001:00331900  2050 0001:00331922  2051 0001:00331931
+  2052 0001:0033193B  2055 0001:00331949  2057 0001:00331955  2058 0001:00331963
+  2059 0001:00331972  2060 0001:0033197B  2061 0001:0033199F  2065 0001:003319C3
+  2066 0001:003319CD  2067 0001:003319DC  2069 0001:003319E1  2070 0001:00331A3F
+  2073 0001:00331A91  2074 0001:00331ACA  2075 0001:00331AF2  2076 0001:00331AFB
+  2077 0001:00331B30  2078 0001:00331B63  2079 0001:00331B74  2080 0001:00331B98
+  2081 0001:00331BA7  2082 0001:00331BCB  2084 0001:00331BD9  2086 0001:00331BE6
+  2087 0001:00331C24  2088 0001:00331C62  2089 0001:00331CA0  2090 0001:00331CDE
+  2091 0001:00331D1C  2092 0001:00331D5A  2093 0001:00331D98  2095 0001:00331DD6
+  2096 0001:00331DFE  2098 0001:00331E07  2099 0001:00331E12  2100 0001:00331E1B
+  2101 0001:00331E21  2103 0001:00331E35  2104 0001:00331E51  2106 0001:00331E5A
+  2107 0001:00331E60  2108 0001:00331E66  2110 0001:00331E71  2095 0001:00331E72
+  2111 0001:00331E79  2112 0001:00331E9D  2114 0001:00331EA6  2115 0001:00331EC2
+  2116 0001:00331EDE  2111 0001:00331EDF  2117 0001:00331EE2  2118 0001:00331F06
+  2120 0001:00331F0F  2121 0001:00331F2B  2122 0001:00331F47  2117 0001:00331F48
+  2123 0001:00331F4B  2124 0001:00331F6F  2126 0001:00331F78  2127 0001:00331F94
+  2128 0001:00331FB0  2123 0001:00331FB1  2129 0001:00331FB4  2130 0001:00331FD8
+  2132 0001:00331FE1  2133 0001:00331FFD  2134 0001:00332019  2129 0001:0033201A
+  2135 0001:0033201D  2136 0001:00332041  2138 0001:0033204A  2139 0001:00332066
+  2140 0001:00332082  2135 0001:00332083  2141 0001:00332086  2142 0001:003320AA
+  2144 0001:003320B3  2145 0001:003320CF  2146 0001:003320EB  2141 0001:003320EC
+  2148 0001:003320EF  2150 0001:003320F8  2151 0001:00332108  2153 0001:00332111
+  2154 0001:0033212D  2158 0001:00332149  2161 0001:0033215A  2163 0001:00332172
+  2164 0001:00332176  2166 0001:0033217C  2167 0001:0033218A  2169 0001:00332193
+  2161 0001:00332194  2170 0001:00332199  2172 0001:003321B1  2173 0001:003321B5
+  2175 0001:003321BB  2176 0001:003321C9  2178 0001:003321D2  2170 0001:003321D3
+  2179 0001:003321D8  2181 0001:003321F0  2182 0001:003321F4  2184 0001:003321FA
+  2185 0001:00332208  2187 0001:00332211  2179 0001:00332212  2188 0001:00332217
+  2190 0001:0033222F  2191 0001:00332233  2193 0001:00332239  2194 0001:00332247
+  2196 0001:00332250  2188 0001:00332251  2197 0001:00332256  2199 0001:0033226E
+  2200 0001:00332272  2202 0001:00332278  2203 0001:00332286  2205 0001:0033228F
+  2197 0001:00332290  2206 0001:00332295  2208 0001:003322AD  2209 0001:003322B1
+  2211 0001:003322B7  2212 0001:003322C5  2214 0001:003322CE  2206 0001:003322CF
+  2215 0001:003322D4  2217 0001:003322EC  2218 0001:003322F0  2220 0001:003322F6
+  2221 0001:00332304  2223 0001:0033230D  2215 0001:0033230E  2225 0001:00332313
+  2227 0001:00332326  2228 0001:00332342  2229 0001:0033234F  2225 0001:00332350
+  2231 0001:00332355  2236 0001:00332378  2237 0001:0033238B  2238 0001:00332396
+  2239 0001:003323F3  2240 0001:003323FE  2241 0001:0033245B  2242 0001:00332466
+  2243 0001:003324C3  2244 0001:003324CE  2245 0001:0033252B  2246 0001:00332536
+  2247 0001:003325A2  2248 0001:003325AD  2249 0001:00332619  2250 0001:00332624
+  2251 0001:00332690  2252 0001:0033269B  2256 0001:00332714  2258 0001:00332724
+  2264 0001:00332918  2265 0001:00332924  2266 0001:0033292C  2268 0001:00332960
+  2269 0001:00332964  2270 0001:00332966  2266 0001:00332967  2271 0001:0033296A
+  2279 0001:00332978  2280 0001:00332986  2282 0001:0033299E  2283 0001:003329AC
+  2284 0001:003329B1  2286 0001:003329C4  2287 0001:003329D1  2288 0001:003329F0
+  2284 0001:003329F1  2289 0001:003329F4  2291 0001:003329FB  2292 0001:003329FF
+  2294 0001:00332A03  2280 0001:00332A07  2295 0001:00332A0D  2303 0001:00332A18
+  2304 0001:00332A24  2305 0001:00332A35  2306 0001:00332A3B  2308 0001:00332A57
+  2309 0001:00332A65  2310 0001:00332A73  2312 0001:00332A78  2313 0001:00332A84
+  2317 0001:00332AA3  2318 0001:00332AAA  2319 0001:00332AB4  2320 0001:00332ABB
+  2324 0001:00332AC1  2325 0001:00332ACF  2326 0001:00332AD7  2327 0001:00332ADB
+  2329 0001:00332AE5  2330 0001:00332AF2  2331 0001:00332AF6  2306 0001:00332AFA
+  2332 0001:00332B01  2334 0001:00332B08  2336 0001:00332B1C  2337 0001:00332B2A
+  2339 0001:00332B36  2340 0001:00332B3A  2342 0001:00332B3E  2334 0001:00332B42
+  2344 0001:00332B45  2352 0001:00332B50  2353 0001:00332B5C  2354 0001:00332B6D
+  2356 0001:00332B89  2357 0001:00332B97  2358 0001:00332BA5  2360 0001:00332BAE
+  2369 0001:00332BBA  2374 0001:00332BF0  2375 0001:00332C00  2376 0001:00332C0A
+  2377 0001:00332C12  2378 0001:00332C1A  2379 0001:00332C26  2380 0001:00332C2C
+  2381 0001:00332C38  2382 0001:00332C42  2383 0001:00332C4D  2387 0001:00332C53
+  2388 0001:00332C61  2389 0001:00332C69  2390 0001:00332C6D  2392 0001:00332C77
+  2354 0001:00332C7B  2393 0001:00332C82  2403 0001:00332C8C  2404 0001:00332C98
+  2405 0001:00332CA9  2407 0001:00332CC5  2408 0001:00332CD3  2409 0001:00332CE1
+  2411 0001:00332CEA  2414 0001:00332CF6  2415 0001:00332D09  2416 0001:00332D1C
+  2417 0001:00332D2F  2419 0001:00332D42  2425 0001:00332D7B  2426 0001:00332D86
+  2427 0001:00332D91  2428 0001:00332D98  2429 0001:00332D9F  2430 0001:00332DA9
+  2434 0001:00332DAF  2435 0001:00332DBD  2436 0001:00332DC5  2437 0001:00332DC9
+  2439 0001:00332DD3  2405 0001:00332DD7  2440 0001:00332DDE  2448 0001:00332DF4
+  2449 0001:00332E00  2450 0001:00332E11  2452 0001:00332E2D  2453 0001:00332E3B
+  2454 0001:00332E49  2456 0001:00332E4E  2457 0001:00332E5A  2458 0001:00332E6D
+  2460 0001:00332E80  2465 0001:00332EA2  2466 0001:00332EAD  2467 0001:00332EB3
+  2468 0001:00332EBD  2472 0001:00332EC3  2473 0001:00332ED1  2474 0001:00332ED9
+  2475 0001:00332EDD  2477 0001:00332EE7  2450 0001:00332EEB  2478 0001:00332EF2
+  2484 0001:00332F08  2485 0001:00332F14  2486 0001:00332F25  2488 0001:00332F41
+  2489 0001:00332F4F  2490 0001:00332F5D  2492 0001:00332F62  2494 0001:00332F6E
+  2495 0001:00332F81  2496 0001:00332F94  2499 0001:00332FAE  2500 0001:00332FB9
+  2501 0001:00332FC3  2505 0001:00332FC9  2506 0001:00332FD7  2507 0001:00332FDF
+  2508 0001:00332FE3  2510 0001:00332FED  2486 0001:00332FF1  2511 0001:00332FF8
+  2519 0001:0033300C  2520 0001:00333018  2521 0001:00333029  2523 0001:00333045
+  2524 0001:00333053  2525 0001:00333061  2527 0001:00333066  2529 0001:00333072
+  2530 0001:00333085  2531 0001:00333098  2534 0001:003330B2  2535 0001:003330BD
+  2536 0001:003330C7  2538 0001:003330CB  2539 0001:003330D8  2542 0001:003330E5
+  2543 0001:003330F3  2544 0001:003330FB  2545 0001:003330FF  2546 0001:0033310A
+  2548 0001:00333114  2521 0001:00333118  2549 0001:0033311F  2557 0001:00333134
+  2558 0001:00333140  2559 0001:00333151  2561 0001:0033316D  2562 0001:0033317B
+  2563 0001:00333189  2565 0001:0033318E  2566 0001:0033319A  2567 0001:003331AD
+  2568 0001:003331C0  2571 0001:003331DA  2572 0001:003331E5  2573 0001:003331EF
+  2577 0001:003331F5  2578 0001:00333203  2579 0001:0033320B  2580 0001:0033320F
+  2582 0001:00333219  2559 0001:0033321D  2583 0001:00333224  2589 0001:00333238
+  2590 0001:0033323F  2593 0001:0033325D  2595 0001:00333266  2596 0001:00333274
+  2597 0001:0033327D  2598 0001:00333281  2599 0001:00333285  2601 0001:0033328F
+  2602 0001:00333298  2603 0001:003332A2  2605 0001:003332A6  2609 0001:003332AC
+  2611 0001:003332B1  2612 0001:003332B4  2614 0001:003332B8  2618 0001:003332BC
+  2620 0001:003332C1  2621 0001:003332C4  2623 0001:003332C8  2627 0001:003332CC
+  2629 0001:003332D1  2630 0001:003332D4  2632 0001:003332D8  2636 0001:003332DC
+  2638 0001:003332E1  2639 0001:003332E4  2641 0001:003332E8  2645 0001:003332EC
+  2647 0001:003332F1  2648 0001:003332F4  2650 0001:003332F8  2655 0001:003332FC
+  2657 0001:00333301  2658 0001:00333304  2660 0001:00333308  2664 0001:0033330C
+  2666 0001:00333311  2667 0001:00333314  2669 0001:00333318  2673 0001:0033331C
+  2675 0001:00333321  2676 0001:00333324  2678 0001:00333328  2681 0001:0033332C
+  2682 0001:0033332F  2683 0001:00333334  2685 0001:00333338  2686 0001:0033334B
+  2688 0001:00333358  2689 0001:00333367  2690 0001:00333375  2691 0001:00333379
+  2695 0001:00333389  2696 0001:00333391  2697 0001:00333396  2698 0001:0033339A
+  2699 0001:0033339E  2700 0001:003333A9  2701 0001:003333AD  2704 0001:003333B1
+  2705 0001:003333B9  2711 0001:003333BC  2712 0001:003333E0  2713 0001:003333E8
+  2714 0001:00333408  2715 0001:0033340E  2713 0001:00333445  2716 0001:00333448
+  2717 0001:0033349F  2723 0001:003334D8  2724 0001:003334FF  2725 0001:00333507
+  2726 0001:00333527  2727 0001:0033352D  2728 0001:0033356F  2725 0001:00333570
+  2729 0001:00333573  2730 0001:003335CA  2736 0001:00333608  2737 0001:0033362C
+  2738 0001:00333634  2739 0001:00333654  2740 0001:0033365A  2738 0001:0033368E
+  2741 0001:00333691  2742 0001:003336E8  2749 0001:00333720  2750 0001:00333744
+  2751 0001:0033374C  2752 0001:0033376C  2753 0001:00333772  2751 0001:003337A6
+  2754 0001:003337A9  2755 0001:00333800  2760 0001:00333838  2761 0001:0033385C
+  2762 0001:00333864  2763 0001:00333884  2764 0001:0033388A  2762 0001:003338BE
+  2765 0001:003338C1  2766 0001:00333918  2771 0001:00333950  2772 0001:00333974
+  2773 0001:0033397C  2774 0001:0033399C  2775 0001:003339A2  2773 0001:003339D6
+  2776 0001:003339D9  2777 0001:00333A30  2782 0001:00333A68  2783 0001:00333A8C
+  2784 0001:00333A94  2785 0001:00333AB4  2786 0001:00333ABA  2784 0001:00333AEE
+  2787 0001:00333AF1  2788 0001:00333B48  2795 0001:00333B80  2796 0001:00333B9D
+  2797 0001:00333BA8  2798 0001:00333BBE  2799 0001:00333BDE  2801 0001:00333C18
+  2802 0001:00333C22  2803 0001:00333C2A  2804 0001:00333C39  2805 0001:00333C48
+  2806 0001:00333C5A  2807 0001:00333C6C  2809 0001:00333C7E  2810 0001:00333C90
+  2811 0001:00333CA2  2813 0001:00333CCC  2817 0001:00333DC4  2818 0001:00333DE4
+  2819 0001:00333DEB  2821 0001:00333DEE  2822 0001:00333E04  2824 0001:00333E44
+  2826 0001:00333E8F  2832 0001:00333ECC  2833 0001:00333ECF  2835 0001:00333EF0
+  2836 0001:00333F01  2837 0001:00333F0A  2838 0001:00333F0E  2840 0001:00333F12
+  2841 0001:00333F16  2856 0001:00333F1C  2857 0001:00333F22  2858 0001:00333F24
+  2859 0001:00333F36  2876 0001:00333F3C  2877 0001:00333F42  2878 0001:00333F49
+  2879 0001:00333F55  2880 0001:00333F61  2881 0001:00333F67  2882 0001:00333F6E
+  2883 0001:00333F75  2884 0001:00333F7C  2885 0001:00333F83  2886 0001:00333F8A
+  2887 0001:00333F91  2888 0001:00333F97  2889 0001:00333F9D  2890 0001:00333FA3
+  2891 0001:00333FA9  2892 0001:00333FAF  2893 0001:00333FB5  2894 0001:00333FBB
+  2895 0001:00333FC1  2896 0001:00333FCC  2898 0001:00333FD7  2899 0001:00333FEA
+  2900 0001:00333FFD  2901 0001:00334010  2902 0001:00334023  2903 0001:00334036
+  2904 0001:00334049  2906 0001:0033405C  2907 0001:00334062  2908 0001:00334068
+  2909 0001:00334073  2910 0001:0033407E  2918 0001:00334084  2919 0001:0033408E
+  2920 0001:00334098  2922 0001:003340A8  2924 0001:003340D1  2925 0001:003340DD
+  2926 0001:003340E1  2928 0001:003340F9  2929 0001:00334108  2930 0001:00334116
+  2931 0001:00334121  2932 0001:0033412D  2934 0001:0033413E  2937 0001:0033414E
+  2939 0001:00334167  2940 0001:00334169  2941 0001:00334171  2942 0001:00334180
+  2943 0001:00334184  2945 0001:0033418D  2946 0001:003341A0  2947 0001:003341B3
+  2949 0001:003341C4  2951 0001:003341D5  2952 0001:003341E6  2953 0001:00334200
+  2954 0001:00334204  2960 0001:00334208  2974 0001:00334218  2975 0001:00334238
+  2976 0001:00334249  2977 0001:00334267  2979 0001:00334294  2980 0001:003342BB
+  2982 0001:003342C7  2983 0001:003342CB  2985 0001:003342D0  2987 0001:003342DF
+  2988 0001:003342E3  2990 0001:003342E8  2992 0001:003342F7  2993 0001:003342FB
+  2995 0001:00334300  2996 0001:0033430D  2997 0001:00334317  3000 0001:00334320
+  3001 0001:00334324  3002 0001:00334332  3003 0001:00334336  3004 0001:0033433A
+  3006 0001:00334356  3007 0001:0033435A  3008 0001:0033435E  3009 0001:00334369
+  3010 0001:00334377  3012 0001:00334381  3013 0001:0033438D  3014 0001:00334391
+  3017 0001:003343AB  3019 0001:003343BE  3020 0001:003343CC  3021 0001:003343D2
+  3022 0001:003343E3  3024 0001:00334427  3027 0001:00334461  3029 0001:00334465
+  3030 0001:00334486  3031 0001:003344AD  3032 0001:003344B6  3033 0001:003344BC
+  3034 0001:003344C2  3035 0001:003344C8  3037 0001:003344CC  3039 0001:003344D3
+  3041 0001:003344DB  3042 0001:003344ED  3043 0001:003344F7  3045 0001:00334501
+  3046 0001:0033450E  3047 0001:0033451C  3048 0001:0033452A  3049 0001:00334538
+  3051 0001:0033454D  3052 0001:00334551  3056 0001:0033456D  3057 0001:00334573
+  3059 0001:00334579  3060 0001:0033457D  3062 0001:00334597  3066 0001:0033459D
+  3067 0001:003345A1  3069 0001:003345AE  3070 0001:003345BD  3072 0001:003345C2
+  3073 0001:003345C6  3074 0001:003345D7  3076 0001:003345DE  3077 0001:003345E5
+  3079 0001:003345EB  3081 0001:003345F9  3082 0001:00334603  3083 0001:00334609
+  3084 0001:0033460C  3086 0001:00334613  3087 0001:00334624  3090 0001:00334628
+  3092 0001:0033463F  3093 0001:00334645  3096 0001:00334655  3101 0001:00334844
+  3102 0001:00334861  3103 0001:0033487F  3105 0001:003348A0  3106 0001:003348C4
+  3107 0001:003348D8  3108 0001:003348EC  3109 0001:00334900  3110 0001:00334914
+  3111 0001:00334928  3112 0001:0033493C  3113 0001:00334950  3114 0001:00334964
+  3120 0001:0033498C  3121 0001:003349B1  3122 0001:003349C3  3121 0001:003349E7
+  3123 0001:003349EA  3126 0001:00334A14  3127 0001:00334A17  3128 0001:00334A1D
+  3130 0001:00334A28  3131 0001:00334A35  3134 0001:00334A3C  3135 0001:00334A42
+  3136 0001:00334A4D  3138 0001:00334A5C  3139 0001:00334A69  3142 0001:00334A70
+  3143 0001:00334A72  3144 0001:00334A92  3151 0001:00334A98  3152 0001:00334AB6
+  3154 0001:00334AC6  3155 0001:00334AD1  3157 0001:00334AD7  3159 0001:00334AE5
+  3161 0001:00334AF5  3162 0001:00334AF9  3164 0001:00334AFB  3157 0001:00334AFC
+  3166 0001:00334AFF  3168 0001:00334B05  3170 0001:00334B13  3172 0001:00334B23
+  3173 0001:00334B27  3175 0001:00334B29  3168 0001:00334B2A  3177 0001:00334B2D
+  3179 0001:00334B33  3181 0001:00334B45  3183 0001:00334B58  3184 0001:00334B5C
+  3186 0001:00334B5E  3179 0001:00334B5F  3188 0001:00334B62  3190 0001:00334B68
+  3191 0001:00334B77  3192 0001:00334B85  3193 0001:00334B8F  3194 0001:00334B9B
+  3196 0001:00334BAC  3201 0001:00334BBC  3202 0001:00334BC0  3211 0001:00334BF0
+  3212 0001:00334C08  3214 0001:00334C13  3215 0001:00334C24  3216 0001:00334C2A
+  3217 0001:00334C38  3212 0001:00334C39  3218 0001:00334C3C  3220 0001:00334C60
+  3221 0001:00334C6A  3222 0001:00334C74  3223 0001:00334C7E  3224 0001:00334C88
+  3225 0001:00334C92  3226 0001:00334C9C  3234 0001:00334CA0  3235 0001:00334CC2
+  3236 0001:00334CD4  3238 0001:00334CDA  3239 0001:00334CEC  3242 0001:00334CF0
+  3244 0001:00334CFE  3246 0001:00334D0E  3247 0001:00334D1A  3248 0001:00334D2C
+  3249 0001:00334D32  3251 0001:00334D4B  3253 0001:00334D55  3242 0001:00334D56
+  3254 0001:00334D59  3257 0001:00334D80  3258 0001:00334D83  3259 0001:00334D90
+  3260 0001:00334D9B  3261 0001:00334DA6  3262 0001:00334DB1  3263 0001:00334DBC
+  3265 0001:00334DC7  3266 0001:00334DD2  3267 0001:00334DDD  3268 0001:00334DE8
+  3269 0001:00334DF6  3270 0001:00334E04  3271 0001:00334E12  3272 0001:00334E20
+  3273 0001:00334E2E  3274 0001:00334E3C  3275 0001:00334E4A  3276 0001:00334E56
+  3285 0001:00334E58  3286 0001:00334E7E  3287 0001:00334EA6  3288 0001:00334EB5
+  3291 0001:00334EC1  3292 0001:00334ECC  3293 0001:00334EDA  3294 0001:00334EE0
+  3296 0001:00334EEF  3297 0001:00334EFC  3299 0001:00334F1D  3300 0001:00334F24
+  3301 0001:00334F32  3303 0001:00334F4A  3305 0001:00334F59  3306 0001:00334F70
+  3309 0001:00334F7C  3315 0001:00334FC8  3316 0001:00334FFA  3317 0001:00335026
+  3318 0001:00335039  3319 0001:00335045  3325 0001:00335098  3326 0001:0033509C
+  3327 0001:003350B4  3328 0001:003350BC  3329 0001:003350C4  3330 0001:003350D2
+  3331 0001:003350DA  3332 0001:003350E1  3333 0001:003350E5  3334 0001:003350ED
+  3340 0001:003350F0  3341 0001:0033510E  3342 0001:0033514C  3343 0001:00335155
+  3344 0001:0033515B  3345 0001:00335163  3350 0001:00335198  3351 0001:003351B1
+  3352 0001:003351DD  3354 0001:003351ED  3355 0001:003351F9  3357 0001:00335224
+  3358 0001:0033522D  3359 0001:00335247  3360 0001:0033526D  3361 0001:00335287
+  3367 0001:00335294  3368 0001:003352B3  3369 0001:003352C0  3371 0001:003352D0
+  3372 0001:003352DC  3374 0001:003352FF  3375 0001:00335309  3379 0001:0033532C
+  3380 0001:0033533C  3386 0001:0033534C  3387 0001:00335372  3388 0001:0033537F
+  3389 0001:003353A3  3390 0001:003353C1  3391 0001:003353E7  3392 0001:0033540D
+  3395 0001:0033545C  3396 0001:0033547C  3397 0001:0033548E  3404 0001:003354B4
+  3405 0001:003354D5  3407 0001:003354E7  3408 0001:003354F4  3409 0001:00335512
+  3411 0001:00335516  3412 0001:0033552A  3414 0001:00335537  3405 0001:00335538
+  3415 0001:0033553B  3416 0001:0033554D  3415 0001:00335566  3417 0001:00335569
+  3420 0001:003355AC  3421 0001:003355CB  3422 0001:003355CF  3424 0001:003355F6
+  3425 0001:0033561B  3428 0001:00335648  3429 0001:0033564E  3430 0001:00335652
+  3432 0001:00335665  3433 0001:00335675  3439 0001:00335678  3440 0001:00335698
+  3441 0001:003356A1  3442 0001:003356A5  3444 0001:003356B5  3445 0001:003356E6
+  3463 0001:00335714  3464 0001:00335735  3465 0001:00335741  3466 0001:00335747
+  3468 0001:00335756  3469 0001:0033575E  3470 0001:00335771  3471 0001:0033577D
+  3478 0001:003357B4  3479 0001:003357BD  3480 0001:003357C7  3481 0001:003357CA
+  3483 0001:003357CC  3484 0001:003357DF  3486 0001:003357E3  3487 0001:003357E7
+  3489 0001:003357EB  3491 0001:003357F6  3492 0001:003357FA  3493 0001:0033580D
+  3494 0001:00335818  3495 0001:0033582A  3496 0001:00335832  3521 0001:00335844
+  3522 0001:0033584A  3523 0001:00335853  3526 0001:00335864  3527 0001:00335870
+  3528 0001:0033587B  3529 0001:00335886  3530 0001:00335892  3532 0001:0033589D
+  3537 0001:003358A0  3538 0001:003358C5  3540 0001:003358D1
+
+Line numbers for uPCE(Encounter\uPCE.pas) segment .itext
+
+  3534 0002:000019D0  3536 0002:000019D7
+
+Line numbers for fPCEBase(Encounter\fPCEBase.pas) segment .text
+
+    83 0001:00335B40    84 0001:00335B4C    85 0001:00335B57    86 0001:00335B62
+   118 0001:00335B68   119 0001:00335B70   120 0001:00335B78   121 0001:00335B82
+   122 0001:00335B8C   123 0001:00335B9A   124 0001:00335BA4   125 0001:00335BAC
+   126 0001:00335BC9   160 0001:00335BD4   161 0001:00335BDB   164 0001:00335BE3
+   165 0001:00335BEC   166 0001:00335BF5   167 0001:00335C0B   168 0001:00335C23
+   169 0001:00335C30   192 0001:00335C34   193 0001:00335C40   194 0001:00335C4E
+   255 0001:00335C54   256 0001:00335C60   257 0001:00335C78   256 0001:00335CAE
+   258 0001:00335CB3   259 0001:00335CBE   269 0001:00335CC4   271 0001:00335CD0
+   272 0001:00335CDE   273 0001:00335CEC   274 0001:00335CF8   284 0001:00335CFC
+   285 0001:00335D08   286 0001:00335D16   287 0001:00335D22   298 0001:00335D28
+   300 0001:00335D37   301 0001:00335D3D   302 0001:00335D47   313 0001:00335D4C
+   314 0001:00335D58   317 0001:00335D5C   318 0001:00335D77   319 0001:00335D8D
+   320 0001:00335D98   321 0001:00335DA2   322 0001:00335DAA   325 0001:00335DCC
+   326 0001:00335DD5   327 0001:00335DE8   328 0001:00335DFA   329 0001:00335E03
+   335 0001:00335E0C   336 0001:00335E2E   337 0001:00335E36   338 0001:00335E46
+   339 0001:00335E4B   341 0001:00335E64   342 0001:00335E6C   343 0001:00335E7C
+   344 0001:00335E9F   345 0001:00335EAF   339 0001:00335EB2   346 0001:00335EB7
+   348 0001:00335EBE   349 0001:00335EC4   351 0001:00335ECA   352 0001:00335ECE
+   353 0001:00335EE6   354 0001:00335EFF   346 0001:00335F02   355 0001:00335F08
+   358 0001:00335F3C   359 0001:00335F43   360 0001:00335F4B   361 0001:00335F60
+
+Line numbers for fPCEBase(Encounter\fPCEBase.pas) segment .itext
+
+   369 0002:000019D8   370 0002:000019E1   373 0002:000019EB
+
+Line numbers for fEncounterFrame(Encounter\fEncounterFrame.pas) segment .text
+
+   141 0001:00336284   142 0001:0033628A   143 0001:00336291   144 0001:003362D2
+   145 0001:003362DC   146 0001:003362E6   147 0001:003362F5   148 0001:00336304
+   149 0001:00336313   150 0001:00336322   151 0001:00336331   152 0001:00336340
+   153 0001:0033634F   154 0001:0033635E   155 0001:0033636D   158 0001:00336379
+   170 0001:0033643C   171 0001:00336478   172 0001:00336480   173 0001:00336488
+   174 0001:00336490   175 0001:00336498   176 0001:003364A0   177 0001:003364A8
+   178 0001:003364B0   179 0001:003364B8   180 0001:003364C0   182 0001:003364C8
+   184 0001:003364CF   195 0001:003364D0   198 0001:003364D3   199 0001:003364DC
+   200 0001:003364E3   201 0001:003364EA   213 0001:003364EC   215 0001:003364F2
+   216 0001:003364FD   217 0001:0033650D   218 0001:0033651D   219 0001:0033652D
+   220 0001:0033653D   221 0001:0033654D   222 0001:0033655D   223 0001:0033656D
+   224 0001:0033657D   225 0001:0033658D   226 0001:00336598   227 0001:003365A8
+   239 0001:0033666C   240 0001:0033668D   241 0001:0033668F   242 0001:003366A0
+   243 0001:003366A2   255 0001:003366C8   258 0001:003366E1   259 0001:003366F1
+   260 0001:0033670B   261 0001:0033671B   262 0001:00336735   263 0001:00336745
+   264 0001:0033675F   265 0001:0033676F   266 0001:00336789   267 0001:00336799
+   268 0001:003367B3   269 0001:003367C3   270 0001:003367DD   271 0001:003367ED
+   272 0001:00336807   273 0001:00336817   274 0001:00336831   275 0001:00336841
+   276 0001:0033685B   277 0001:0033686B   279 0001:00336885   281 0001:0033688A
+   282 0001:003368A7   283 0001:003368D6   279 0001:003368D7   284 0001:003368DC
+   296 0001:003369C4   297 0001:003369CA   298 0001:003369D6   299 0001:003369E0
+   300 0001:003369E5   302 0001:003369EB   303 0001:003369F5   318 0001:003369F8
+   320 0001:00336A18   322 0001:00336A1D   323 0001:00336A26   325 0001:00336A42
+   326 0001:00336A50   328 0001:00336A62   320 0001:00336A63   329 0001:00336A68
+   343 0001:00336A90   344 0001:00336AA7   345 0001:00336AAC   346 0001:00336AC9
+   344 0001:00336AFC   347 0001:00336B01   348 0001:00336B0B   361 0001:00336B30
+   362 0001:00336B4E   363 0001:00336B5E   364 0001:00336B78   363 0001:00336BA1
+   365 0001:00336BA4   382 0001:00336BC8   383 0001:00336BED   384 0001:00336C06
+   385 0001:00336C14   387 0001:00336C1F   388 0001:00336C21   390 0001:00336C57
+   391 0001:00336C60   394 0001:00336CC1   395 0001:00336CD0   396 0001:00336CDC
+   397 0001:00336CF2   399 0001:00336D20   401 0001:00336D41   402 0001:00336D54
+   403 0001:00336D5E   407 0001:00336D68   408 0001:00336D70   409 0001:00336D7A
+   410 0001:00336D8F   412 0001:00336DA4   413 0001:00336DB1   417 0001:00336DCD
+   420 0001:00336DDF   430 0001:00336E74   431 0001:00336E7A   432 0001:00336E8F
+   434 0001:00336E9F   438 0001:00336EAD   453 0001:00336EC4   456 0001:00336ECB
+   457 0001:00336ECD   459 0001:00336ED5   460 0001:00336EE9   461 0001:00336EF5
+   464 0001:00336F01   466 0001:00336F11   468 0001:00336F15   469 0001:00336F21
+   472 0001:00336F30   474 0001:00336F41   476 0001:00336F7C   477 0001:00336F87
+   480 0001:00336F98   481 0001:00336FAC   482 0001:00336FC4   483 0001:00336FD8
+   487 0001:00336FEF   488 0001:00337000   489 0001:00337018   490 0001:00337029
+   491 0001:00337045   492 0001:00337056   493 0001:00337072   494 0001:00337083
+   495 0001:0033709F   496 0001:003370B0   497 0001:003370CC   498 0001:003370DD
+   499 0001:003370F9   500 0001:0033710A   501 0001:00337126   502 0001:00337137
+   503 0001:00337153   504 0001:00337164   505 0001:00337175   510 0001:00337181
+   524 0001:0033722C   526 0001:00337230   527 0001:0033723F   528 0001:00337257
+   526 0001:00337266   530 0001:0033726B   531 0001:00337276   532 0001:00337282
+   533 0001:0033728C   534 0001:00337297   545 0001:0033729C   546 0001:0033729F
+   547 0001:003372B0   550 0001:003372C1   551 0001:003372D3   552 0001:003372DA
+   553 0001:003372E1   554 0001:003372E8   555 0001:003372F3   573 0001:003372F8
+   578 0001:00337314   581 0001:00337324   583 0001:00337334   585 0001:00337344
+   586 0001:00337359   588 0001:00337368   595 0001:00337374   597 0001:00337384
+   598 0001:0033739A   599 0001:003373A0   604 0001:003373B4   607 0001:003373C1
+   608 0001:003373CA   610 0001:003373D6   612 0001:003373DD   613 0001:003373E4
+   633 0001:00337434   634 0001:00337440   635 0001:00337446   636 0001:00337452
+   637 0001:00337474   639 0001:00337484   640 0001:00337492   643 0001:00337498
+   644 0001:003374A7   645 0001:003374B5   646 0001:003374C2   647 0001:003374CD
+   649 0001:003374E5   652 0001:003374F5   654 0001:0033750F   655 0001:00337522
+   656 0001:00337528   659 0001:0033752D   661 0001:00337543   662 0001:00337554
+   664 0001:00337565   666 0001:00337582   667 0001:00337593   669 0001:0033759B
+   670 0001:003375BF   671 0001:003375D6   675 0001:003375FC   677 0001:0033760C
+   682 0001:00337750   684 0001:00337771   686 0001:0033778B   687 0001:003377BA
+   689 0001:003377C8   691 0001:003377CD   692 0001:003377D6   693 0001:003377E7
+   695 0001:0033780C   696 0001:0033781A   697 0001:0033782C   699 0001:0033782E
+   689 0001:0033782F   700 0001:00337834   704 0001:00337858   705 0001:00337859
+   706 0001:00337863   707 0001:0033786F   710 0001:00337874   713 0001:0033787A
+   715 0001:0033788A   716 0001:00337897   717 0001:003378AF   720 0001:003378BD
+   721 0001:003378CD   722 0001:003378EA   723 0001:003378FA   724 0001:00337917
+   725 0001:00337927   726 0001:00337944   727 0001:00337954   728 0001:00337971
+   729 0001:00337981   730 0001:0033799E   731 0001:003379AE   732 0001:003379CB
+   733 0001:003379DB   735 0001:003379F8   740 0001:00337AA0   741 0001:00337AC2
+   742 0001:00337AC6   743 0001:00337AE4   744 0001:00337AFE   748 0001:00337B20
+   750 0001:00337B29   751 0001:00337B30   753 0001:00337B3F   759 0001:00337B58
+   760 0001:00337B68   761 0001:00337B79   763 0001:00337B7F   764 0001:00337B84
+   766 0001:00337B9E   768 0001:00337BA8   770 0001:00337BB2   771 0001:00337BB6
+   772 0001:00337BC6   773 0001:00337BD9   775 0001:00337BE3   777 0001:00337BE9
+   778 0001:00337BF7   780 0001:00337C18   783 0001:00337C34   784 0001:00337C63
+   785 0001:00337C73   787 0001:00337C83   790 0001:00337C88   795 0001:00337C94
+   796 0001:00337C98   797 0001:00337C9F   798 0001:00337CAF   799 0001:00337CC0
+   800 0001:00337CD0   801 0001:00337CE1   802 0001:00337CF1   803 0001:00337D02
+   804 0001:00337D12   805 0001:00337D23   806 0001:00337D33   807 0001:00337D44
+   808 0001:00337D54   809 0001:00337D65   810 0001:00337D75   811 0001:00337D86
+   812 0001:00337D96   813 0001:00337DA7   814 0001:00337DB7   815 0001:00337DC8
+   816 0001:00337DD8   817 0001:00337DE9   822 0001:00337EAC   823 0001:00337EB1
+   827 0001:00337EB4   829 0001:00337EB7   831 0001:00337EBF   832 0001:00337EC5
+   834 0001:00337ECB   837 0001:00337ED0   839 0001:00337ED4   840 0001:00337EE7
+   841 0001:00337EF5   843 0001:00337F26
+
+Line numbers for UBACore(BA\UBACore.pas) segment .text
+
+    88 0001:00337EF8    90 0001:00337F15    91 0001:00337F24    92 0001:00337F2C
+    93 0001:00337F40    94 0001:00337F4C    95 0001:00337F5B   101 0001:00337F63
+   103 0001:00337F7D   104 0001:00337F8E   105 0001:00337FB1   107 0001:00337FC2
+   109 0001:00337FCE   110 0001:00337FEC   112 0001:00337FF7   101 0001:00337FF8
+   114 0001:00337FFB   115 0001:0033800B   118 0001:00338013   119 0001:0033801F
+   122 0001:00338033   124 0001:00338043   125 0001:00338045   129 0001:00338047
+   131 0001:00338057   132 0001:00338059   136 0001:00338067   140 0001:00338069
+   147 0001:003380B0   148 0001:003380D8   149 0001:003380DC   150 0001:003380EB
+   151 0001:003380FA   152 0001:00338102   154 0001:0033810A   156 0001:0033811A
+   157 0001:00338130   156 0001:00338142   158 0001:00338145   160 0001:00338157
+   163 0001:00338171   164 0001:0033817C   158 0001:0033817D   167 0001:00338182
+   170 0001:0033818D   174 0001:003381A9   176 0001:003381BF   177 0001:003381DF
+   179 0001:003381EE   180 0001:0033820E   182 0001:00338212   174 0001:00338213
+   183 0001:00338216   194 0001:0033827C   195 0001:003382A4   196 0001:003382A8
+   197 0001:003382B3   199 0001:003382D5   200 0001:003382D9   202 0001:003382DE
+   203 0001:003382EC   205 0001:00338302   206 0001:00338331   208 0001:0033833E
+   209 0001:00338342   211 0001:0033834C   203 0001:0033834D   216 0001:0033836B
+   219 0001:00338375   225 0001:003383BC   226 0001:003383BF   227 0001:003383CB
+   229 0001:003383D0   230 0001:003383D7   232 0001:003383DC   233 0001:003383F2
+   271 0001:003383F4   272 0001:00338418   273 0001:00338427   274 0001:0033842F
+   275 0001:00338437   276 0001:0033843C   278 0001:0033844B   279 0001:00338453
+   281 0001:00338469   282 0001:00338476   284 0001:003384A6   285 0001:003384B1
+   286 0001:003384C1   287 0001:003384EF   288 0001:003384F8   289 0001:00338526
+   290 0001:0033852F   291 0001:0033855D   292 0001:00338566   294 0001:00338594
+   295 0001:0033859F   296 0001:003385A7   279 0001:003385A8   297 0001:003385AF
+   298 0001:003385B2   302 0001:00338604   303 0001:00338620   304 0001:00338659
+   309 0001:003386A4   310 0001:003386AB   311 0001:003386B9   312 0001:003386C0
+   313 0001:003386DB   314 0001:003386DD   317 0001:003386FC   318 0001:00338718
+   319 0001:0033874E   320 0001:00338754   325 0001:00338794   327 0001:003387BB
+   329 0001:003387C3   331 0001:003387E3   333 0001:0033880E   337 0001:0033883A
+   338 0001:00338846   341 0001:0033884E   346 0001:003388D8   347 0001:003388DC
+   348 0001:003388DE   349 0001:003388E7   350 0001:00338907   351 0001:00338909
+   355 0001:00338924   356 0001:0033893E   357 0001:0033896A   362 0001:003389B8
+   363 0001:003389BD   421 0001:003389C0   427 0001:003389C2   428 0001:003389DA
+   429 0001:00338A01   430 0001:00338A18   431 0001:00338A1D   436 0001:00338A30
+   437 0001:00338A5B   438 0001:00338A69   439 0001:00338A7A   440 0001:00338A81
+   441 0001:00338A8B   442 0001:00338AB0   443 0001:00338ABD   444 0001:00338AC4
+   448 0001:00338B04   449 0001:00338B07   450 0001:00338B29   451 0001:00338B30
+   459 0001:00338B4C   460 0001:00338B74   461 0001:00338B82   462 0001:00338B89
+   464 0001:00338B95   465 0001:00338BB0   467 0001:00338BC2   468 0001:00338BCE
+   469 0001:00338BE9   470 0001:00338C1F   465 0001:00338C20   471 0001:00338C25
+   472 0001:00338C2D   480 0001:00338CA0   481 0001:00338CC2   482 0001:00338CD1
+   483 0001:00338CE0   484 0001:00338CF6   485 0001:00338CFE   486 0001:00338D06
+   488 0001:00338D14   489 0001:00338D20   490 0001:00338D2B   486 0001:00338D2C
+   492 0001:00338D2F   494 0001:00338D4B   496 0001:00338D5D   497 0001:00338D79
+   498 0001:00338D95   494 0001:00338D96   499 0001:00338D99   504 0001:00338DEC
+   505 0001:00338DF2   506 0001:00338E01   508 0001:00338E09   510 0001:00338E14
+   511 0001:00338E1E   512 0001:00338E2A   514 0001:00338E46   515 0001:00338E53
+   518 0001:00338E70   519 0001:00338E95   521 0001:00338EC2   530 0001:00338F10
+   531 0001:00338F35   532 0001:00338F39   533 0001:00338F3E   534 0001:00338F4D
+   536 0001:00338F55   537 0001:00338F63   539 0001:00338F75   540 0001:00338F82
+   541 0001:00338FA5   543 0001:00338FB1   544 0001:00338FB5   548 0001:00338FB7
+   549 0001:00338FC2   551 0001:00338FCB   552 0001:00338FCF   556 0001:00338FD1
+   537 0001:00338FD2   561 0001:00338FF0   565 0001:00338FFA   566 0001:00339000
+   567 0001:00339008   575 0001:0033904C   576 0001:00339077   579 0001:00339082
+   580 0001:003390A7   581 0001:003390C7   582 0001:00339107   583 0001:00339147
+   584 0001:00339187   586 0001:003391C7   587 0001:003391E2   588 0001:003391FD
+   589 0001:00339218   591 0001:00339233   597 0001:00339274   598 0001:003392A0
+   599 0001:003392A8   600 0001:003392B6   601 0001:003392D4   602 0001:003392F2
+   603 0001:00339310   604 0001:0033932E   606 0001:0033934C   607 0001:00339362
+   610 0001:0033937A   611 0001:00339398   616 0001:003393B6   618 0001:003393C7
+   620 0001:003393F6   621 0001:00339407   623 0001:0033942E   626 0001:00339446
+   627 0001:00339450   634 0001:003394AC   635 0001:003394D0   636 0001:003394E3
+   637 0001:003394FB   638 0001:00339513   639 0001:0033952B   640 0001:00339543
+   641 0001:0033955B   642 0001:00339573   643 0001:0033958B   644 0001:003395A3
+   656 0001:003395CC   657 0001:003395F5   658 0001:00339609   659 0001:00339615
+   660 0001:00339623   661 0001:0033962A   663 0001:00339632   665 0001:00339648
+   666 0001:0033965C   668 0001:0033967B   670 0001:00339686   671 0001:00339699
+   672 0001:003396AF   674 0001:003396BE   675 0001:003396D1   676 0001:003396E7
+   678 0001:003396F6   679 0001:00339709   680 0001:0033971F   682 0001:0033972E
+   683 0001:00339741   684 0001:00339757   686 0001:00339766   687 0001:00339779
+   688 0001:0033978F   690 0001:0033979E   691 0001:003397B1   692 0001:003397C7
+   694 0001:003397D6   695 0001:003397E9   696 0001:003397FF   698 0001:0033980E
+   699 0001:00339821   700 0001:00339837   702 0001:00339846   703 0001:00339859
+   704 0001:0033986F   707 0001:0033987E   708 0001:003398C3   709 0001:003398EA
+   663 0001:003398EB   710 0001:003398F4   715 0001:00339980   716 0001:003399A5
+   717 0001:003399AC   718 0001:003399BF   719 0001:003399D2   720 0001:003399E9
+   749 0001:00339A1C   750 0001:00339A43   752 0001:00339A47   753 0001:00339A55
+   755 0001:00339A6B   757 0001:00339A89   758 0001:00339A8D   760 0001:00339A8F
+   753 0001:00339A90   765 0001:00339AAE   768 0001:00339AB8   771 0001:00339AE8
+   776 0001:00339B05   778 0001:00339B14   786 0001:00339B34   787 0001:00339B59
+   788 0001:00339B68   789 0001:00339B76   790 0001:00339B84   792 0001:00339B8F
+   794 0001:00339BA2   795 0001:00339BCC   796 0001:00339BD8   792 0001:00339BD9
+   797 0001:00339BDE   798 0001:00339BE9   799 0001:00339C02   802 0001:00339C05
+   808 0001:00339C50   810 0001:00339C55   811 0001:00339C63   812 0001:00339C71
+   813 0001:00339C7C   814 0001:00339C87   815 0001:00339C8E   822 0001:00339C94
+   823 0001:00339CB6   824 0001:00339CC5   825 0001:00339CD4   826 0001:00339CE2
+   827 0001:00339CF0   829 0001:00339CF3   830 0001:00339CFF   832 0001:00339D11
+   833 0001:00339D3C   830 0001:00339D3D   834 0001:00339D40   835 0001:00339D5C
+   836 0001:00339D5F   843 0001:00339DA4   844 0001:00339DCF   845 0001:00339DDE
+   847 0001:00339DEC   849 0001:00339E02   851 0001:00339E07   852 0001:00339E15
+   855 0001:00339E1C   857 0001:00339E23   858 0001:00339E31   860 0001:00339E4C
+   861 0001:00339E64   863 0001:00339E76   864 0001:00339E80   865 0001:00339E8F
+   866 0001:00339E9F   867 0001:00339EAF   868 0001:00339EBF   869 0001:00339ECF
+   870 0001:00339EDF   871 0001:00339EEF   872 0001:00339EFD   876 0001:00339F2A
+   877 0001:00339F39   879 0001:00339F47   880 0001:00339F54   881 0001:00339F7B
+   884 0001:00339F83   858 0001:00339F86   889 0001:00339FA8   892 0001:00339FB2
+   897 0001:00339FE8   898 0001:0033A01B   899 0001:0033A023   900 0001:0033A031
+   902 0001:0033A043   904 0001:0033A070   905 0001:0033A090   907 0001:0033A092
+   900 0001:0033A093   912 0001:0033A0B1   916 0001:0033A0BB   925 0001:0033A0EC
+   926 0001:0033A10C   927 0001:0033A11A   928 0001:0033A125   929 0001:0033A12C
+   931 0001:0033A142   932 0001:0033A150   934 0001:0033A16A   935 0001:0033A177
+   937 0001:0033A19D   938 0001:0033A1BF   940 0001:0033A1E9   943 0001:0033A227
+   945 0001:0033A24D   946 0001:0033A26F   948 0001:0033A299   951 0001:0033A2D7
+   953 0001:0033A2FD   954 0001:0033A31F   956 0001:0033A349   959 0001:0033A387
+   961 0001:0033A3AD   962 0001:0033A3CF   964 0001:0033A3F9   967 0001:0033A437
+   969 0001:0033A45D   970 0001:0033A47F   972 0001:0033A4A9   975 0001:0033A4E7
+   977 0001:0033A50D   978 0001:0033A52F   980 0001:0033A559   983 0001:0033A597
+   985 0001:0033A5BD   986 0001:0033A5DF   988 0001:0033A609   991 0001:0033A647
+   993 0001:0033A66D   994 0001:0033A68F   996 0001:0033A6BC   998 0001:0033A6FB
+   932 0001:0033A6FE  1003 0001:0033A720  1006 0001:0033A72A  1013 0001:0033A7D8
+  1014 0001:0033A7F6  1015 0001:0033A804  1016 0001:0033A80F  1019 0001:0033A813
+  1021 0001:0033A82B  1023 0001:0033A841  1025 0001:0033A85D  1026 0001:0033A861
+  1028 0001:0033A863  1021 0001:0033A866  1029 0001:0033A869  1034 0001:0033A8BC
+  1035 0001:0033A8E3  1036 0001:0033A8EB  1037 0001:0033A8FC  1039 0001:0033A911
+  1041 0001:0033A91C  1042 0001:0033A926  1048 0001:0033A95C  1049 0001:0033A97A
+  1050 0001:0033A988  1052 0001:0033A99E  1054 0001:0033A9BB  1055 0001:0033A9CA
+  1056 0001:0033A9E2  1057 0001:0033A9F3  1058 0001:0033A9FE  1059 0001:0033AA09
+  1060 0001:0033AA14  1061 0001:0033AA1F  1062 0001:0033AA37  1064 0001:0033AA49
+  1050 0001:0033AA4A  1069 0001:0033AA6C  1072 0001:0033AA76  1079 0001:0033AAA0
+  1080 0001:0033AAD3  1081 0001:0033AADB  1082 0001:0033AAE3  1083 0001:0033AAEB
+  1084 0001:0033AAF3  1085 0001:0033AAFB  1087 0001:0033AB0A  1088 0001:0033AB18
+  1090 0001:0033AB32  1092 0001:0033AB43  1094 0001:0033AB4B  1096 0001:0033AB60
+  1097 0001:0033AB73  1098 0001:0033AB91  1099 0001:0033ABB8  1100 0001:0033ABCB
+  1104 0001:0033AC0E  1105 0001:0033AC21  1109 0001:0033AC64  1111 0001:0033AC6D
+  1113 0001:0033AC7E  1114 0001:0033AC91  1118 0001:0033ACD4  1119 0001:0033ACE7
+  1123 0001:0033AD2A  1125 0001:0033AD33  1127 0001:0033AD44  1128 0001:0033AD57
+  1132 0001:0033AD9A  1133 0001:0033ADAD  1137 0001:0033ADF0  1139 0001:0033ADF9
+  1141 0001:0033AE0A  1142 0001:0033AE1D  1146 0001:0033AE5D  1147 0001:0033AE70
+  1150 0001:0033AEAE  1088 0001:0033AEAF  1155 0001:0033AED1  1161 0001:0033AEDB
+  1162 0001:0033AEEB  1163 0001:0033AEFB  1164 0001:0033AF0B  1165 0001:0033AF1B
+  1166 0001:0033AF2B  1168 0001:0033AF3B  1186 0001:0033AF8C  1187 0001:0033AFB2
+  1188 0001:0033AFC0  1189 0001:0033AFCE  1190 0001:0033AFD5  1191 0001:0033AFDC
+  1193 0001:0033AFE6  1194 0001:0033AFFA  1197 0001:0033B006  1199 0001:0033B010
+  1200 0001:0033B01C  1201 0001:0033B02B  1202 0001:0033B032  1204 0001:0033B046
+  1206 0001:0033B05A  1207 0001:0033B074  1208 0001:0033B080  1209 0001:0033B088
+  1210 0001:0033B097  1211 0001:0033B0A5  1212 0001:0033B0BB  1213 0001:0033B0D1
+  1214 0001:0033B0E7  1215 0001:0033B0FD  1216 0001:0033B113  1218 0001:0033B121
+  1220 0001:0033B137  1221 0001:0033B146  1223 0001:0033B153  1224 0001:0033B15D
+  1225 0001:0033B173  1229 0001:0033B17A  1230 0001:0033B195  1234 0001:0033B19C
+  1239 0001:0033B1D4  1240 0001:0033B20F  1241 0001:0033B217  1243 0001:0033B229
+  1245 0001:0033B256  1246 0001:0033B284  1248 0001:0033B286  1241 0001:0033B287
+  1250 0001:0033B28A  1258 0001:0033B2C4  1259 0001:0033B2FA  1260 0001:0033B305
+  1261 0001:0033B310  1262 0001:0033B318  1263 0001:0033B323  1265 0001:0033B32A
+  1266 0001:0033B342  1267 0001:0033B35A  1268 0001:0033B372  1269 0001:0033B38A
+  1270 0001:0033B3A2  1271 0001:0033B3BA  1272 0001:0033B3D2  1274 0001:0033B3EA
+  1275 0001:0033B3FD  1276 0001:0033B413  1278 0001:0033B422  1279 0001:0033B435
+  1280 0001:0033B44B  1282 0001:0033B45A  1283 0001:0033B46D  1284 0001:0033B483
+  1286 0001:0033B492  1287 0001:0033B4A5  1288 0001:0033B4BB  1290 0001:0033B4CA
+  1291 0001:0033B4DD  1292 0001:0033B4F3  1294 0001:0033B502  1295 0001:0033B515
+  1296 0001:0033B52B  1298 0001:0033B53A  1299 0001:0033B54D  1300 0001:0033B563
+  1302 0001:0033B572  1303 0001:0033B585  1304 0001:0033B59B  1306 0001:0033B5AA
+  1307 0001:0033B5BD  1308 0001:0033B5D3  1310 0001:0033B5E2  1313 0001:0033B627
+  1314 0001:0033B631  1317 0001:0033B6A0  1321 0001:0033B6BD  1323 0001:0033B6CB
+  1324 0001:0033B6E1  1325 0001:0033B6ED  1326 0001:0033B6FA  1327 0001:0033B6FF
+  1332 0001:0033B724  1333 0001:0033B75A  1334 0001:0033B767  1335 0001:0033B782
+  1336 0001:0033B7A0  1337 0001:0033B7EB  1342 0001:0033B84C  1343 0001:0033B869
+  1344 0001:0033B87A  1346 0001:0033B892  1347 0001:0033B8A3  1349 0001:0033B8D0
+  1350 0001:0033B8E1  1352 0001:0033B90E  1353 0001:0033B91F  1354 0001:0033B94A
+  1355 0001:0033B954  1362 0001:0033B988  1363 0001:0033B9B2  1364 0001:0033B9B9
+  1365 0001:0033B9D3  1367 0001:0033B9E2  1369 0001:0033B9EF  1370 0001:0033B9FF
+  1372 0001:0033BA0E  1374 0001:0033BA1B  1375 0001:0033BA2B  1377 0001:0033BA3A
+  1379 0001:0033BA47  1380 0001:0033BA57  1382 0001:0033BA66  1384 0001:0033BA73
+  1385 0001:0033BA83  1387 0001:0033BA92  1389 0001:0033BA9F  1390 0001:0033BAAF
+  1392 0001:0033BABE  1394 0001:0033BACB  1395 0001:0033BADB  1397 0001:0033BAEA
+  1399 0001:0033BAF7  1400 0001:0033BB18  1408 0001:0033BB74  1409 0001:0033BB9C
+  1410 0001:0033BBAA  1411 0001:0033BBB1  1412 0001:0033BBBF  1413 0001:0033BBCB
+  1415 0001:0033BBDD  1416 0001:0033BBFC  1419 0001:0033BC28  1420 0001:0033BC43
+  1413 0001:0033BC44  1421 0001:0033BC49  1460 0001:0033BC80  1461 0001:0033BC9E
+  1462 0001:0033BCAD  1464 0001:0033BCB5  1466 0001:0033BCC1  1468 0001:0033BCD3
+  1469 0001:0033BCFD  1470 0001:0033BD01  1471 0001:0033BD19  1466 0001:0033BD1A
+  1473 0001:0033BD1D  1474 0001:0033BD20  1481 0001:0033BD4C  1482 0001:0033BD75
+  1483 0001:0033BD8F  1484 0001:0033BDA2  1485 0001:0033BDA7  1488 0001:0033BDA9
+  1489 0001:0033BDB9  1490 0001:0033BDC9  1493 0001:0033BDCC  1494 0001:0033BDDD
+  1495 0001:0033BDFB  1496 0001:0033BE00  1486 0001:0033BE0B  1499 0001:0033BE0F
+  1501 0001:0033BE72
+
+Line numbers for fDupPts(fDupPts.pas) segment .text
+
+    43 0001:0033C0B4    45 0001:0033C0B9    50 0001:0033C0BC    51 0001:0033C0C0
+    52 0001:0033C0CF    53 0001:0033C0DD    54 0001:0033C0EB    55 0001:0033C0FF
+    56 0001:0033C106    59 0001:0033C11C    61 0001:0033C13C    63 0001:0033C16B
+    64 0001:0033C17C    67 0001:0033C17E    68 0001:0033C199    70 0001:0033C1A0
+    74 0001:0033C21C    75 0001:0033C225    76 0001:0033C233    77 0001:0033C239
+    78 0001:0033C248    82 0001:0033C250    83 0001:0033C25B    85 0001:0033C28A
+
+Line numbers for fPtSens(fPtSens.pas) segment .text
+
+    62 0001:00000000
+
+Line numbers for fPtSelDemog(fPtSelDemog.pas) segment .text
+
+    56 0001:0033C520    57 0001:0033C526    58 0001:0033C531    59 0001:0033C537
+    61 0001:0033C548    62 0001:0033C567    63 0001:0033C591    59 0001:0033C592
+    64 0001:0033C595    65 0001:0033C5A3    73 0001:0033C5A8    74 0001:0033C5E4
+    75 0001:0033C5F8    76 0001:0033C606    77 0001:0033C614    80 0001:0033C61F
+    81 0001:0033C633    82 0001:0033C672    83 0001:0033C6B1    84 0001:0033C6B7
+    85 0001:0033C6DB    86 0001:0033C6E1    87 0001:0033C705    88 0001:0033C70B
+    89 0001:0033C72F    90 0001:0033C735    91 0001:0033C774    92 0001:0033C77A
+    94 0001:0033C7B9    95 0001:0033C7C7    96 0001:0033C7D5    97 0001:0033C7E3
+    98 0001:0033C7F1    99 0001:0033C7FF   100 0001:0033C80D   101 0001:0033C81B
+   103 0001:0033C829   104 0001:0033C84F   106 0001:0033C85C   107 0001:0033C877
+   106 0001:0033C899   108 0001:0033C89C   109 0001:0033C8B0   111 0001:0033C8BD
+   112 0001:0033C8C8   113 0001:0033C8DC   115 0001:0033C8E9   116 0001:0033C8F4
+   117 0001:0033C8FF   120 0001:0033C998   121 0001:0033C99B   123 0001:0033C9A7
+   127 0001:0033C9AE   128 0001:0033C9B3   130 0001:0033C9BE   134 0001:0033C9C0
+   135 0001:0033C9D8   136 0001:0033C9E8   145 0001:0033C9EC   146 0001:0033CA05
+   147 0001:0033CA1D   149 0001:0033CA26   150 0001:0033CA40   151 0001:0033CA5B
+   152 0001:0033CA75   153 0001:0033CA90   154 0001:0033CAA4   156 0001:0033CAAB
+   158 0001:0033CABB   159 0001:0033CAD5   160 0001:0033CAF0   161 0001:0033CB0A
+   162 0001:0033CB25   163 0001:0033CB39   165 0001:0033CB40   167 0001:0033CB50
+   169 0001:0033CB6B   170 0001:0033CB92   171 0001:0033CBA8   172 0001:0033CBBC
+   173 0001:0033CBC9   174 0001:0033CBDF   175 0001:0033CBF3   176 0001:0033CC00
+   177 0001:0033CC16   178 0001:0033CC23   179 0001:0033CC39   180 0001:0033CC46
+   181 0001:0033CC5A   182 0001:0033CC67   183 0001:0033CC7D   184 0001:0033CC91
+   185 0001:0033CC9E   186 0001:0033CCB7   187 0001:0033CCC4   189 0001:0033CCD8
+   193 0001:0033CCFC   194 0001:0033CD14
+
+Line numbers for fPtSelDemog(fPtSelDemog.pas) segment .itext
+
+   196 0002:000019EC   197 0002:000019F5   199 0002:000019FF
+
+Line numbers for fPtSelOptSave(fPtSelOptSave.pas) segment .text
+
+    37 0001:0033CFA0    38 0001:0033CFB6    39 0001:0033CFBD    40 0001:0033CFC9
+    41 0001:0033CFD1    42 0001:0033CFD9    44 0001:0033D00A    46 0001:0033D018
+    47 0001:0033D025    51 0001:0033D0A8    52 0001:0033D0AD    57 0001:0033D0B0
+    59 0001:0033D0C3    60 0001:0033D0D4    62 0001:0033D0D5    63 0001:0033D0E4
+    64 0001:0033D0ED    65 0001:0033D0FC    66 0001:0033D105    67 0001:0033D10E
+    69 0001:0033D113    74 0001:0033D14C    75 0001:0033D14F    77 0001:0033D15F
+    78 0001:0033D16C    80 0001:0033D19C
+
+Line numbers for fPtSelOptns(fPtSelOptns.pas) segment .text
+
+   103 0001:0033D4F4   104 0001:0033D512   105 0001:0033D514   106 0001:0033D540
+   108 0001:0033D550   109 0001:0033D562   111 0001:0033D578   112 0001:0033D593
+   113 0001:0033D595   119 0001:0033D5B8   120 0001:0033D5D7   122 0001:0033D5D9
+   124 0001:0033D617   125 0001:0033D619   130 0001:0033D640   137 0001:0033D652
+   138 0001:0033D654   139 0001:0033D684   144 0001:0033D6A0   145 0001:0033D6CA
+   146 0001:0033D6CC   147 0001:0033D6FC   149 0001:0033D722   152 0001:0033D746
+   153 0001:0033D765   157 0001:0033D797   158 0001:0033D7B1   159 0001:0033D809
+   163 0001:0033D82D   164 0001:0033D847   165 0001:0033D89F   166 0001:0033D8BA
+   169 0001:0033D8E3   170 0001:0033D8E5   174 0001:0033D91C   175 0001:0033D936
+   176 0001:0033D946   177 0001:0033D951   178 0001:0033D95C   179 0001:0033D963
+   180 0001:0033D970   181 0001:0033D988   182 0001:0033D994   183 0001:0033D9A4
+   187 0001:0033D9D4   188 0001:0033D9EE   189 0001:0033D9FE   190 0001:0033DA07
+   191 0001:0033DA12   192 0001:0033DA19   193 0001:0033DA25   195 0001:0033DA2B
+   196 0001:0033DA32   197 0001:0033DA3B   198 0001:0033DA44   199 0001:0033DA59
+   200 0001:0033DA66   201 0001:0033DA73   203 0001:0033DA7E   205 0001:0033DA87
+   206 0001:0033DA9F   210 0001:0033DAD0   212 0001:0033DAEA   214 0001:0033DAF8
+   215 0001:0033DB01   217 0001:0033DB13   218 0001:0033DB23   219 0001:0033DB2E
+   220 0001:0033DB3E   223 0001:0033DB4E   224 0001:0033DB5E   225 0001:0033DB69
+   226 0001:0033DB79   229 0001:0033DB89   230 0001:0033DB99   231 0001:0033DBA4
+   232 0001:0033DBB4   241 0001:0033DBC4   242 0001:0033DBD4   243 0001:0033DBDD
+   244 0001:0033DBE8   245 0001:0033DBF4   247 0001:0033DBFA   248 0001:0033DC03
+   249 0001:0033DC0C   250 0001:0033DC13   252 0001:0033DC25   253 0001:0033DC35
+   254 0001:0033DC3C   257 0001:0033DC49   258 0001:0033DC50   261 0001:0033DC5B
+   262 0001:0033DC64   264 0001:0033DC6D   266 0001:0033DC85   269 0001:0033DCC0
+   270 0001:0033DCC4   271 0001:0033DCF4   274 0001:0033DCF8   275 0001:0033DCFC
+   276 0001:0033DD2C   279 0001:0033DD30   280 0001:0033DD34   281 0001:0033DD64
+   314 0001:0033DD68   315 0001:0033DD71   316 0001:0033DD88   317 0001:0033DDA1
+   319 0001:0033DDB8   322 0001:0033DDC0   323 0001:0033DDC3   324 0001:0033DDCE
+   325 0001:0033DDD9   326 0001:0033DDF5   332 0001:0033DDF8   333 0001:0033DE14
+   335 0001:0033DE29   336 0001:0033DE34   338 0001:0033DE3D   339 0001:0033DE45
+   340 0001:0033DE58   341 0001:0033DE6B   343 0001:0033DE7E   344 0001:0033DE82
+   345 0001:0033DE86   346 0001:0033DEA4   347 0001:0033DEA8   348 0001:0033DEC6
+   349 0001:0033DECA   350 0001:0033DED3   353 0001:0033DF18   354 0001:0033DF32
+   355 0001:0033DF3D   356 0001:0033DF48   359 0001:0033DFC8   360 0001:0033DFCB
+   361 0001:0033DFE7   364 0001:0033DFEC   365 0001:0033E00E   367 0001:0033E03F
+   368 0001:0033E050   370 0001:0033E097   372 0001:0033E0A5   373 0001:0033E0B6
+   374 0001:0033E0E8   379 0001:0033E148   380 0001:0033E169   381 0001:0033E171
+   382 0001:0033E1AA   383 0001:0033E1C0   384 0001:0033E1D9   385 0001:0033E1EF
+   387 0001:0033E23E   388 0001:0033E257   389 0001:0033E26D   391 0001:0033E2BC
+   392 0001:0033E2D5   393 0001:0033E2EB   395 0001:0033E33A   396 0001:0033E37D
+   399 0001:0033E393   400 0001:0033E3CE   401 0001:0033E3EA   402 0001:0033E3F9
+   403 0001:0033E405   405 0001:0033E412   406 0001:0033E41F   409 0001:0033E549
+   412 0001:0033E6A3   413 0001:0033E6BC   414 0001:0033E6CF   416 0001:0033E727
+   418 0001:0033E734   420 0001:0033E73A   422 0001:0033E743   424 0001:0033E792
+   425 0001:0033E79A   430 0001:0033E7A3   431 0001:0033E7AB   434 0001:0033E7B2
+   438 0001:0033EBD0   439 0001:0033EBDA   442 0001:0033EBDC   443 0001:0033EC03
+   445 0001:0033EC13   446 0001:0033EC31   450 0001:0033EC43   451 0001:0033EC50
+   453 0001:0033EC60   456 0001:0033EC9C   457 0001:0033ECB6   458 0001:0033ECC0
+   459 0001:0033ECD5   460 0001:0033ECF9   461 0001:0033ED1D   462 0001:0033ED30
+   463 0001:0033ED3A   464 0001:0033ED49
+
+Line numbers for fPtSelOptns(fPtSelOptns.pas) segment .itext
+
+   466 0002:00001A00   467 0002:00001A1A   469 0002:00001A24
+
+Line numbers for fAlertForward(fAlertForward.pas) segment .text
+
+    58 0001:0033F150    59 0001:0033F178    60 0001:0033F18F    61 0001:0033F19D
+    64 0001:0033F1A5    65 0001:0033F1D0    66 0001:0033F1F0    69 0001:0033F208
+    70 0001:0033F210    72 0001:0033F21A    75 0001:0033F24C    77 0001:0033F24F
+    78 0001:0033F258    79 0001:0033F265    80 0001:0033F272    84 0001:0033F274
+    85 0001:0033F27D    86 0001:0033F29B    90 0001:0033F2A4    91 0001:0033F2A9
+    97 0001:0033F2AC    99 0001:0033F2CA   101 0001:0033F2ED   102 0001:0033F316
+   103 0001:0033F34E   104 0001:0033F372    99 0001:0033F375   105 0001:0033F37C
+   106 0001:0033F383   111 0001:0033F3EC   113 0001:0033F406   114 0001:0033F417
+   116 0001:0033F445   117 0001:0033F452   118 0001:0033F45F   120 0001:0033F464
+   121 0001:0033F475   122 0001:0033F479   123 0001:0033F48A   124 0001:0033F4A8
+   125 0001:0033F4C8   126 0001:0033F4DE   127 0001:0033F4EC   132 0001:0033F518
+   133 0001:0033F523   138 0001:0033F524   139 0001:0033F542   141 0001:0033F54B
+   142 0001:0033F55C   143 0001:0033F574   145 0001:0033F585   146 0001:0033F59A
+   148 0001:0033F5FD   149 0001:0033F60B   142 0001:0033F60C   151 0001:0033F615
+   154 0001:0033F660   156 0001:0033F67C   157 0001:0033F68D   158 0001:0033F697
+   159 0001:0033F6A5   160 0001:0033F6B0   161 0001:0033F6B9   163 0001:0033F6F3
+   165 0001:0033F705   168 0001:0033F73C   170 0001:0033F73F   171 0001:0033F759
+   175 0001:0033F75C   176 0001:0033F75F   178 0001:0033F765   180 0001:0033F76C
+   183 0001:0033F770   184 0001:0033F791   185 0001:0033F7A3   187 0001:0033F7CD
+   188 0001:0033F7E0   190 0001:0033F7E5   191 0001:0033F817   192 0001:0033F820
+   194 0001:0033F885   195 0001:0033F8A3   196 0001:0033F8C3
+
+Line numbers for fAlertForward(fAlertForward.pas) segment .itext
+
+   198 0002:00001A3C
+
+Line numbers for fPtSel(fPtSel.pas) segment .text
+
+   147 0001:00340014   148 0001:00340020   149 0001:00340024   150 0001:00340055
+   156 0001:0034005C   157 0001:00340085   158 0001:0034009C   159 0001:003400A3
+   162 0001:003400B1   163 0001:003400BF   164 0001:003400D4   165 0001:003400F6
+   166 0001:00340118   167 0001:00340129   168 0001:00340133   169 0001:00340145
+   171 0001:0034014E   172 0001:00340156   174 0001:00340160   175 0001:0034016C
+   176 0001:00340179   177 0001:00340181   178 0001:00340189   179 0001:0034019A
+   180 0001:003401A2   181 0001:003401AC   182 0001:003401B7   185 0001:003401D2
+   187 0001:003401E2   195 0001:00340218   196 0001:0034023B   199 0001:00340243
+   203 0001:00340249   204 0001:00340259   205 0001:00340269   206 0001:00340279
+   211 0001:0034028B   212 0001:0034029B   213 0001:003402AB   221 0001:003402BB
+   222 0001:003402C3   223 0001:003402CE   224 0001:003402D6   226 0001:003402E1
+   227 0001:003402F1   229 0001:00340303   230 0001:0034033D   231 0001:00340343
+   232 0001:00340354   233 0001:0034035E   234 0001:0034036F   235 0001:00340380
+   236 0001:00340391   237 0001:003403A2   238 0001:003403B3   239 0001:003403C4
+   240 0001:003403D5   241 0001:003403DD   247 0001:0034040C   248 0001:0034042E
+   249 0001:00340436   250 0001:00340449   252 0001:0034045A   253 0001:00340496
+   254 0001:003404C6   255 0001:003404D5   256 0001:003404E4   257 0001:003404F3
+   258 0001:00340502   262 0001:0034050F   264 0001:0034053C   265 0001:00340549
+   266 0001:00340551   267 0001:00340559   268 0001:00340563   269 0001:0034058E
+   270 0001:003405A1   271 0001:003405B4   276 0001:003405C4   278 0001:003405D7
+   287 0001:00340718   289 0001:00340739   290 0001:0034074E   292 0001:00340757
+   293 0001:00340768   294 0001:0034076F   299 0001:00340774   300 0001:00340787
+   301 0001:0034079A   303 0001:003407BB   304 0001:003407CE   306 0001:003407E1
+   308 0001:00340812   309 0001:00340825   312 0001:0034085D   313 0001:00340870
+   315 0001:00340883   316 0001:003408BE   318 0001:003408E2   319 0001:0034090A
+   320 0001:00340933   321 0001:0034095C   323 0001:003409D6   324 0001:003409F2
+   325 0001:00340A06   326 0001:00340A19   327 0001:00340A21   328 0001:00340A2F
+   329 0001:00340A3F   331 0001:00340A50   332 0001:00340A75   334 0001:00340A82
+   335 0001:00340A93   336 0001:00340A9A   341 0001:00340A9F   342 0001:00340ADF
+   343 0001:00340AF8   344 0001:00340B17   345 0001:00340B30   346 0001:00340B49
+   347 0001:00340B7A   348 0001:00340B93   351 0001:00340BA7   352 0001:00340BBA
+   353 0001:00340C06   354 0001:00340C16   355 0001:00340C29   357 0001:00340C41
+   358 0001:00340C54   360 0001:00340C67   361 0001:00340C8F   362 0001:00340C9F
+   363 0001:00340CB2   368 0001:00340F68   369 0001:00340F74   370 0001:00340F84
+   372 0001:00340F96   373 0001:00340F9E   375 0001:00340FA6   378 0001:00340FAC
+   379 0001:00340FB8   380 0001:00340FC8   385 0001:00340FCC   386 0001:00340FD0
+   388 0001:00340FDF   389 0001:00340FEA   391 0001:00340FF6   393 0001:00341001
+   394 0001:0034100B   395 0001:00341016   397 0001:00341021   398 0001:00341034
+   400 0001:00341047   402 0001:00341051   408 0001:003410B8   409 0001:003410DC
+   410 0001:003410E8   412 0001:00341163   416 0001:00341178   417 0001:0034118A
+   420 0001:003411C2   421 0001:003411EE   424 0001:00341200   425 0001:00341210
+   426 0001:00341221   428 0001:0034122F   431 0001:0034123B   433 0001:00341259
+   434 0001:0034126A   436 0001:00341288   437 0001:003412A4   439 0001:003412B0
+   441 0001:003412CE   442 0001:003412DF   444 0001:003412FD   445 0001:00341319
+   447 0001:00341325   450 0001:0034138C   451 0001:003413A8   461 0001:003413AF
+   464 0001:003413E4   465 0001:00341408   467 0001:00341447   468 0001:0034144F
+   471 0001:00341459   473 0001:00341461   476 0001:0034148C   477 0001:003414B0
+   479 0001:003414EF   480 0001:003414F7   483 0001:00341501   485 0001:00341509
+   488 0001:00341534   492 0001:00341558   495 0001:0034156A   496 0001:0034157A
+   497 0001:0034158B   502 0001:00341599   503 0001:003415E3   511 0001:0034160C
+   512 0001:00341637   513 0001:00341642   514 0001:00341653   516 0001:0034166F
+   517 0001:003416BC   518 0001:003416C2   520 0001:003416EE   521 0001:003416FF
+   522 0001:00341720   523 0001:0034172F   525 0001:0034173D   526 0001:0034174E
+   529 0001:0034176B   530 0001:0034177E   532 0001:0034179A   534 0001:003417A8
+   536 0001:003417F3   537 0001:00341826   539 0001:00341834   530 0001:00341837
+   541 0001:00341840   544 0001:0034185E   546 0001:0034186E   549 0001:003418D0
+   550 0001:003418D7   551 0001:003418E3   554 0001:003418E8   555 0001:00341904
+   556 0001:0034192F   559 0001:00341958   560 0001:00341964   561 0001:0034196C
+   562 0001:00341974   574 0001:00341978   578 0001:0034199C   581 0001:003419AE
+   582 0001:003419BE   583 0001:003419CF   587 0001:003419DD   589 0001:00341A1C
+   590 0001:00341A2D   592 0001:00341A32   593 0001:00341A4E   595 0001:00341A7F
+   596 0001:00341AB4   599 0001:00341ADB   600 0001:00341AEA   603 0001:00341AFF
+   604 0001:00341B0D   605 0001:00341B20   606 0001:00341B2C   613 0001:00341B93
+   614 0001:00341BA2   615 0001:00341BAE   616 0001:00341BBA   619 0001:00341C4C
+   620 0001:00341C6C   622 0001:00341CD2   624 0001:00341D49   626 0001:00341D55
+   627 0001:00341DA7   629 0001:00341E01   632 0001:00341EF5   634 0001:00341F01
+   635 0001:00341F53   637 0001:00341FAA   639 0001:00341FB7   640 0001:00341FC5
+   641 0001:00341FDB   642 0001:00341FF4   644 0001:00342002   646 0001:00342028
+   648 0001:00342044   649 0001:0034204E   650 0001:00342064   651 0001:0034206E
+   652 0001:00342076   655 0001:003421E4   657 0001:003421F0   658 0001:003421FA
+   659 0001:00342202   664 0001:00342208   665 0001:0034222C   667 0001:0034223C
+   668 0001:0034224B   669 0001:00342259   670 0001:00342282   671 0001:0034228F
+   672 0001:003422AB   673 0001:003422D6   674 0001:00342301   675 0001:00342329
+   676 0001:00342364   678 0001:00342382   680 0001:00342392   687 0001:003423D4
+   688 0001:003423F8   689 0001:00342408   690 0001:0034240C   692 0001:00342418
+   695 0001:0034242B   696 0001:00342430   697 0001:0034246D   696 0001:003424A0
+   699 0001:003424A5   701 0001:003424AB   702 0001:003424BB   705 0001:003424CC
+   719 0001:00342511   720 0001:00342532   722 0001:00342591   725 0001:003425B1
+   726 0001:003425CF   728 0001:003425DC   731 0001:003425FE   732 0001:00342611
+   733 0001:00342644   734 0001:0034265A   736 0001:00342663   737 0001:00342688
+   740 0001:003426C9   743 0001:003426F2   744 0001:003426FD   746 0001:0034271A
+   747 0001:0034272D   748 0001:00342760   749 0001:003427A1   752 0001:003427A7
+   755 0001:003427B1   705 0001:0034281A   756 0001:00342823   757 0001:00342829
+   760 0001:00342833   762 0001:00342843   763 0001:00342854   765 0001:0034285C
+   766 0001:00342869   768 0001:00342874   769 0001:00342890   771 0001:003428A9
+   772 0001:003428C5   775 0001:00342A14   776 0001:00342A20   777 0001:00342A2F
+   783 0001:00342A34   784 0001:00342A40   785 0001:00342A50   786 0001:00342A6C
+   792 0001:00342A88   793 0001:00342AAC   792 0001:00342AD2   794 0001:00342AD7
+   795 0001:00342AFB   796 0001:00342B21   794 0001:00342B47   797 0001:00342B4C
+   798 0001:00342B57   800 0001:00342B61   805 0001:00342C5C   806 0001:00342C68
+   807 0001:00342C74   808 0001:00342C98   807 0001:00342CBE   809 0001:00342CC3
+   810 0001:00342CCE   811 0001:00342CD8   814 0001:00342CDC   815 0001:00342CE8
+   816 0001:00342CF3   822 0001:00342CF8   823 0001:00342D21   824 0001:00342D31
+   825 0001:00342D3F   827 0001:00342D4B   828 0001:00342D64   829 0001:00342D86
+   830 0001:00342DA9   831 0001:00342DB7   833 0001:00342E37   835 0001:00342E4C
+   836 0001:00342E71   828 0001:00342E74   839 0001:00342E8A   841 0001:00342EB1
+   846 0001:00342EF8   847 0001:00342F24   848 0001:00342F34   850 0001:00342F40
+   851 0001:00342F53   852 0001:00342F75   854 0001:00342F98   855 0001:00342FC8
+   856 0001:00342FF3   857 0001:00343059   851 0001:0034305C   859 0001:00343065
+   860 0001:00343076   861 0001:0034307E   862 0001:0034308B   863 0001:00343096
+   864 0001:003430B8   865 0001:003430D7   868 0001:00343140   869 0001:0034314C
+   870 0001:00343154   871 0001:0034316E   874 0001:00343174   876 0001:00343180
+   877 0001:0034318A   878 0001:0034319B   879 0001:003431AC   880 0001:003431BD
+   881 0001:003431CE   882 0001:003431DF   883 0001:003431F0   884 0001:00343201
+   885 0001:00343209   888 0001:00343210   889 0001:0034321C   891 0001:00343243
+   892 0001:0034325E   895 0001:00343264   896 0001:0034326D   899 0001:00343275
+   900 0001:0034328C   902 0001:003432A3   905 0001:003432BA   906 0001:003432CF
+   907 0001:003432E0   909 0001:00343307   910 0001:00343330   911 0001:0034334D
+   914 0001:00343359   916 0001:00343365   917 0001:00343376   918 0001:00343392
+   922 0001:0034339A   925 0001:003433B1   926 0001:003433C6   927 0001:003433D7
+   928 0001:003433E8   929 0001:00343403   930 0001:0034341D   931 0001:00343437
+   933 0001:00343440   934 0001:0034345C   936 0001:00343468   938 0001:00343475
+   939 0001:0034348D   940 0001:0034349E   943 0001:003434A4   946 0001:003434AB
+   947 0001:003434BB   949 0001:003434C9   954 0001:003434CC   955 0001:003434F7
+   956 0001:003434FF   957 0001:0034350B   958 0001:00343538   959 0001:00343570
+   960 0001:003435A8   961 0001:003435E0   962 0001:00343618   963 0001:00343650
+   965 0001:0034367B   967 0001:0034369A   968 0001:003436AB   970 0001:003436B5
+   973 0001:003436FC   975 0001:00343708   976 0001:00343719   977 0001:00343723
+   981 0001:00343728   982 0001:00343737   983 0001:00343746   984 0001:0034374E
+   986 0001:0034375A  1063 0001:00343760  1065 0001:00343781  1066 0001:00343789
+  1067 0001:0034379D  1068 0001:003437AC  1069 0001:003437B1  1070 0001:003437BF
+  1071 0001:003437C7  1075 0001:003437E3  1077 0001:00343817  1078 0001:0034382E
+  1079 0001:0034385A  1080 0001:0034388A  1079 0001:003438BA  1084 0001:003438C4
+  1085 0001:003438F8  1086 0001:00343919  1088 0001:00343959  1071 0001:0034395C
+  1090 0001:00343972  1092 0001:00343982  1094 0001:0034398E  1095 0001:003439AD
+  1096 0001:003439B7  1097 0001:003439D1  1098 0001:003439EE  1099 0001:00343A0B
+  1100 0001:00343A28  1101 0001:00343A45  1102 0001:00343A62  1104 0001:00343A84
+  1105 0001:00343AB6  1106 0001:00343AEB  1107 0001:00343B20  1108 0001:00343B55
+  1109 0001:00343B8A  1110 0001:00343BBF  1120 0001:00343BF4  1123 0001:00343C64
+  1125 0001:00343C73  1126 0001:00343C86  1128 0001:00343C9A  1129 0001:00343CA6
+  1131 0001:00343CBA  1133 0001:00343CCC  1135 0001:00343CDD  1136 0001:00343CE9
+  1138 0001:00343CF3  1142 0001:00343D01  1143 0001:00343D35  1144 0001:00343D4A
+  1145 0001:00343D5F  1146 0001:00343D74  1147 0001:00343D89  1148 0001:00343D9E
+  1149 0001:00343DB3  1151 0001:00343DC6  1154 0001:00343E2C  1155 0001:00343E55
+  1156 0001:00343E6B  1158 0001:00343E77  1159 0001:00343E9E  1163 0001:00343EE2
+  1164 0001:00343F06  1166 0001:00343F48  1172 0001:00343F74  1173 0001:00343F99
+  1176 0001:00343F9D  1177 0001:00343FB6  1179 0001:00343FE0  1180 0001:00343FE4
+  1181 0001:00343FF5  1183 0001:0034400F  1185 0001:00344034  1186 0001:00344072
+  1189 0001:00344163  1183 0001:00344166  1193 0001:0034416F  1194 0001:0034417C
+  1195 0001:00344193  1198 0001:003441A1  1200 0001:003441B9  1203 0001:003441C9
+  1206 0001:00344240  1207 0001:00344261  1212 0001:0034428B  1214 0001:003442BC
+  1215 0001:003442EB  1217 0001:0034430C  1223 0001:00344314  1226 0001:00344378
+  1229 0001:00344384  1233 0001:00344388  1234 0001:00344397  1235 0001:003443A0
+  1236 0001:003443AB  1240 0001:003443B4  1241 0001:003443C3  1243 0001:003443CC
+  1244 0001:003443D6  1247 0001:003443EF  1248 0001:003443F7  1251 0001:00344400
+  1252 0001:00344420  1253 0001:00344431  1254 0001:00344442  1255 0001:00344453
+  1256 0001:003444A5  1260 0001:003444C8  1261 0001:003444EB  1262 0001:00344509
+  1270 0001:00344530  1271 0001:00344540  1272 0001:00344550  1274 0001:0034456A
+  1275 0001:0034461F  1276 0001:0034462F  1277 0001:00344661  1278 0001:00344696
+  1279 0001:003446CB  1280 0001:00344700  1281 0001:00344732  1282 0001:00344760
+  1285 0001:0034478C  1295 0001:00344794  1296 0001:003447B2  1297 0001:003447BA
+  1298 0001:003447CD  1299 0001:003447F0  1300 0001:00344805  1302 0001:00344811
+  1304 0001:0034481B  1305 0001:0034488C  1306 0001:003448B4  1307 0001:003448DF
+  1308 0001:0034490A  1309 0001:00344932  1310 0001:0034495A  1311 0001:00344982
+  1314 0001:003449A8  1318 0001:003449DC  1319 0001:003449E3  1320 0001:00344A04
+  1321 0001:00344A0E  1322 0001:00344A2A  1323 0001:00344A34  1329 0001:00344A38
+  1331 0001:00344A5A  1333 0001:00344A82  1334 0001:00344A8A  1335 0001:00344A92
+  1336 0001:00344A9A  1337 0001:00344AC1  1338 0001:00344B48  1339 0001:00344B6F
+  1331 0001:00344B72  1341 0001:00344B7B  1345 0001:00344B89  1347 0001:00344BB1
+  1348 0001:00344BB9  1349 0001:00344BC1  1350 0001:00344BC9  1351 0001:00344BF0
+  1352 0001:00344C03  1354 0001:00344CA0  1345 0001:00344CA3  1355 0001:00344CAC
+  1361 0001:00344CF8  1362 0001:00344D19  1363 0001:00344D1F  1365 0001:00344D48
+  1366 0001:00344D7B  1368 0001:00344DAC  1369 0001:00344DD5  1370 0001:00344E03
+  1376 0001:00344E2C  1377 0001:00344E33  1379 0001:00344E43  1380 0001:00344E6C
+  1381 0001:00344E95  1382 0001:00344EBE  1383 0001:00344EE7  1385 0001:00344F10
+  1391 0001:00344F14  1392 0001:00344F37  1394 0001:00344F4D  1395 0001:00344F57
+  1396 0001:00344F67  1398 0001:00344F99  1399 0001:00344FA0  1400 0001:00344FB0
+  1401 0001:00344FC1  1405 0001:00344FD4  1406 0001:00344FE6  1407 0001:00344FEE
+  1413 0001:00345038  1414 0001:00345050  1417 0001:00345057
+
+Line numbers for fPtSel(fPtSel.pas) segment .itext
+
+  1421 0002:00001A44
+
+Line numbers for fLabPrint(fLabPrint.pas) segment .text
+
+    72 0001:0034542C    73 0001:00345459    74 0001:00345470    75 0001:0034547E
+    78 0001:00345486    79 0001:00345496    80 0001:003454A6    81 0001:003454AF
+    82 0001:003454CE    83 0001:003454EA    85 0001:003454F3    87 0001:00345506
+    88 0001:00345516    90 0001:00345526    92 0001:00345533    93 0001:00345557
+    96 0001:0034556A    98 0001:00345573   100 0001:00345596   102 0001:003455A3
+   105 0001:003455BB   107 0001:003455CB   110 0001:00345688   111 0001:003456A4
+   113 0001:003456B0   115 0001:003456F2   118 0001:00345740   120 0001:0034575C
+   122 0001:0034576C   123 0001:003457A4   124 0001:003457DC   126 0001:003457E3
+   130 0001:0034580C   132 0001:00345815   133 0001:0034582C   138 0001:00345834
+   139 0001:00345862   140 0001:00345867   141 0001:0034586B   142 0001:0034587B
+   143 0001:00345891   144 0001:00345897   145 0001:003458AD   161 0001:003458DC
+   163 0001:003458FF   164 0001:0034590C   165 0001:00345914   166 0001:0034591C
+   167 0001:00345924   168 0001:00345933   169 0001:0034593D   172 0001:00345956
+   173 0001:0034597D   175 0001:00345994   176 0001:003459A1   178 0001:003459AC
+   179 0001:003459CC   181 0001:003459EC   183 0001:00345A13   184 0001:00345A24
+   186 0001:00345A29   187 0001:00345A50   189 0001:00345A70   190 0001:00345A85
+   191 0001:00345A8E   192 0001:00345A94   194 0001:00345AA5   197 0001:00345ABD
+   198 0001:00345AD3   199 0001:00345AE0   201 0001:00345B25   203 0001:00345B38
+   205 0001:00345B4F   208 0001:00345BA6   209 0001:00345BCD   211 0001:00345BF9
+   212 0001:00345C16   213 0001:00345C26   214 0001:00345C5E   216 0001:00345C93
+   217 0001:00345CAA   218 0001:00345CC1   219 0001:00345CE0   208 0001:00345CE1
+   223 0001:00345CEF   224 0001:00345D16   226 0001:00345D42   227 0001:00345D5F
+   228 0001:00345D6F   229 0001:00345DA7   231 0001:00345DF0   232 0001:00345E07
+   233 0001:00345E1E   234 0001:00345E3D   223 0001:00345E3E   238 0001:00345E4C
+   240 0001:00345E89   241 0001:00345E97   242 0001:00345E9F   243 0001:00345EC7
+   244 0001:00345ED5   245 0001:00345EDC   246 0001:00345F09   247 0001:00345F20
+   251 0001:00345F48   253 0001:00345F91   254 0001:00345FA8   255 0001:00345FBF
+   260 0001:00345FE7   262 0001:00346024   263 0001:00346032   264 0001:0034603A
+   265 0001:00346062   266 0001:00346070   267 0001:00346077   268 0001:003460A4
+   269 0001:003460BB   273 0001:003460E3   275 0001:0034612C   276 0001:00346143
+   277 0001:0034615A   282 0001:00346182   283 0001:003461A9   285 0001:003461D5
+   286 0001:003461F2   287 0001:00346202   288 0001:0034623A   290 0001:0034626F
+   291 0001:00346286   292 0001:0034629D   293 0001:003462BC   282 0001:003462BD
+   297 0001:003462CB   298 0001:003462F2   300 0001:0034631E   301 0001:0034633B
+   302 0001:0034634B   303 0001:00346383   305 0001:003463B8   306 0001:003463CF
+   307 0001:003463E6   308 0001:00346405   297 0001:00346406   314 0001:00346414
+   316 0001:00346461   317 0001:00346488   323 0001:003464B0   325 0001:003464C7
+   328 0001:003464DF   330 0001:0034651C   331 0001:00346523   332 0001:0034652B
+   333 0001:0034653F   334 0001:00346577   335 0001:003465A6   339 0001:003465CE
+   340 0001:00346606   342 0001:0034664C   343 0001:0034667B   348 0001:003466A3
+   350 0001:003466E0   351 0001:003466E7   352 0001:003466EF   353 0001:003466FD
+   354 0001:00346735   355 0001:00346764   359 0001:0034678C   360 0001:003467C4
+   362 0001:0034680A   363 0001:00346839   370 0001:00346861   371 0001:00346899
+   373 0001:003468E3   374 0001:00346912   377 0001:00346931   378 0001:00346989
+   379 0001:003469BD   380 0001:003469C5   381 0001:003469D0   382 0001:003469D7
+   390 0001:00346C38   391 0001:00346C5C   392 0001:00346C6B   394 0001:00346C73
+   395 0001:00346C7B   397 0001:00346C82   399 0001:00346CA2   401 0001:00346D12
+   402 0001:00346D47   403 0001:00346D82   405 0001:00346DA9   406 0001:00346DCE
+   407 0001:00346DEC   408 0001:00346E06   410 0001:00346E13   413 0001:00346E19
+   415 0001:00346E24   397 0001:00346E27   416 0001:00346E30   418 0001:00346E40
+   419 0001:00346E57   423 0001:00346E70   424 0001:00346E9C   426 0001:00346EC9
+   427 0001:00346ED1   428 0001:00346ED5   429 0001:00346EF3   430 0001:00346F03
+   432 0001:00346F1D   433 0001:00346F51   434 0001:00346F67   436 0001:00346F72
+   438 0001:00346F8B   439 0001:00346FA7   440 0001:00346FF1   442 0001:00347029
+   445 0001:003470F1   446 0001:0034710D   448 0001:00347129   449 0001:0034718A
+   450 0001:003471B1   451 0001:003471BC   446 0001:003471BF   454 0001:003471C8
+   436 0001:003471C9   456 0001:003471D0   457 0001:003471E7   458 0001:003471EA
+   460 0001:003471F0   462 0001:003471F5   464 0001:0034720E   466 0001:00347227
+   467 0001:00347243   468 0001:00347299   470 0001:003472D7   473 0001:0034739F
+   474 0001:003473A3   476 0001:003473BF   477 0001:003473E7   478 0001:003473EA
+   481 0001:00347402   482 0001:00347443   483 0001:00347446   485 0001:0034744C
+   487 0001:00347451   489 0001:0034746A   478 0001:0034746D   492 0001:00347472
+   464 0001:00347473   493 0001:0034747A   496 0001:00347480   498 0001:00347499
+   423 0001:0034749C   499 0001:003474A5   500 0001:003474AD   505 0001:003475D4
+   506 0001:003475D9   508 0001:00347608
+
+Line numbers for fLabTest(fLabTest.pas) segment .text
+
+    45 0001:00347874    46 0001:0034787D    47 0001:00347894    50 0001:003478A2
+    51 0001:003478AF    52 0001:003478BA    53 0001:003478C5    54 0001:003478D2
+    55 0001:003478EE    56 0001:0034790A    57 0001:00347924    58 0001:00347950
+    61 0001:00347968    63 0001:00347978    68 0001:00347980    69 0001:0034799E
+    70 0001:003479AE    71 0001:003479BB    72 0001:003479CB    73 0001:003479DB
+    74 0001:003479E8    75 0001:003479FA    76 0001:00347A10    77 0001:00347A34
+    78 0001:00347A58    79 0001:00347A7C    80 0001:00347AA0    81 0001:00347AB6
+    82 0001:00347ACC    83 0001:00347AD9    84 0001:00347AE9    88 0001:00347BC4
+    89 0001:00347BCD    90 0001:00347BE4    94 0001:00347BEC    95 0001:00347BF5
+    96 0001:00347C0C    99 0001:00347C14   100 0001:00347C2D   101 0001:00347C3B
+   104 0001:00347C4B   105 0001:00347C7D   106 0001:00347CAF   108 0001:00347CB6
+   112 0001:00347D00   113 0001:00347D0D   117 0001:00347D10   118 0001:00347D1D
+   120 0001:00347D4C
+
+Line numbers for fLabTests(fLabTests.pas) segment .text
+
+    51 0001:00348030    52 0001:00348039    53 0001:00348050    56 0001:0034805E
+    57 0001:0034806B    58 0001:00348076    59 0001:00348081    60 0001:0034808E
+    61 0001:003480AA    62 0001:003480C6    63 0001:003480CE    64 0001:003480F5
+    65 0001:0034811F    66 0001:0034812A    69 0001:00348142    71 0001:00348152
+    74 0001:00348158    75 0001:0034815B    76 0001:0034816B    77 0001:00348178
+    78 0001:00348188    82 0001:0034818C    83 0001:00348195    84 0001:003481AC
+    87 0001:003481B4    88 0001:003481B7    89 0001:003481CB    92 0001:003481DB
+    93 0001:003481FF    95 0001:00348206    98 0001:00348228    99 0001:0034822B
+   100 0001:00348239   101 0001:00348242   106 0001:00348244   107 0001:00348248
+   109 0001:00348260   110 0001:00348285   112 0001:00348298   113 0001:003482A8
+   114 0001:003482C8   116 0001:003482EC   117 0001:003482F5   120 0001:003482F8
+   121 0001:003482FB   123 0001:0034830F   124 0001:0034831C   128 0001:0034832B
+   129 0001:00348338   131 0001:00348345   134 0001:00348348   135 0001:0034834B
+   136 0001:00348365   140 0001:00348368   141 0001:00348375   145 0001:00348378
+   146 0001:00348385   151 0001:00348388   152 0001:003483A5   153 0001:003483B8
+   154 0001:003483D3   153 0001:0034841C   155 0001:00348421   156 0001:00348468
+   157 0001:00348479   158 0001:00348482   163 0001:003484AC   164 0001:003484B1
+   166 0001:003484E0
+
+Line numbers for fLabTestGroups(fLabTestGroups.pas) segment .text
+
+    86 0001:00348A50    87 0001:00348A59    88 0001:00348A70    91 0001:00348A7E
+    92 0001:00348A8B    93 0001:00348A96    94 0001:00348AA1    95 0001:00348AAE
+    96 0001:00348ACA    97 0001:00348AE6    98 0001:00348AEF    99 0001:00348AF8
+   100 0001:00348B15   101 0001:00348B36   103 0001:00348B3F   104 0001:00348B48
+   105 0001:00348B51   106 0001:00348B6E   107 0001:00348B8B   109 0001:00348B94
+   110 0001:00348BBB   111 0001:00348BE5   112 0001:00348BF0   115 0001:00348C08
+   117 0001:00348C18   123 0001:00348C20   124 0001:00348C43   125 0001:00348C53
+   126 0001:00348C60   127 0001:00348C70   128 0001:00348C80   129 0001:00348C8D
+   130 0001:00348C9F   131 0001:00348CB5   132 0001:00348CD9   133 0001:00348CFD
+   134 0001:00348D21   135 0001:00348D45   136 0001:00348D5B   137 0001:00348D71
+   138 0001:00348D7E   139 0001:00348D8E   140 0001:00348D9E   141 0001:00348DB3
+   142 0001:00348DCF   144 0001:00348E16   145 0001:00348E23   146 0001:00348E25
+   141 0001:00348E26   147 0001:00348E2B   148 0001:00348E42   149 0001:00348E52
+   150 0001:00348E5F   151 0001:00348E6C   152 0001:00348E79   153 0001:00348E86
+   154 0001:00348E94   158 0001:00348F80   159 0001:00348F89   160 0001:00348FA0
+   163 0001:00348FA8   164 0001:00348FBF   165 0001:00348FD3   168 0001:00348FE3
+   169 0001:00349007   170 0001:00349039   172 0001:00349040   175 0001:00349084
+   176 0001:00349087   177 0001:00349095   178 0001:0034909E   183 0001:003490A0
+   184 0001:003490A4   186 0001:003490BC   187 0001:003490E1   189 0001:003490F4
+   190 0001:00349104   191 0001:00349124   193 0001:00349148   194 0001:00349151
+   200 0001:00349154   201 0001:0034916E   202 0001:00349181   203 0001:00349192
+   204 0001:003491B6   205 0001:003491FF   206 0001:00349222   207 0001:00349232
+   208 0001:0034923B   209 0001:00349244   211 0001:00349253   217 0001:00349294
+   218 0001:003492AE   219 0001:003492C1   220 0001:003492D2   221 0001:003492F6
+   222 0001:0034933F   223 0001:00349362   224 0001:00349372   225 0001:0034937B
+   226 0001:00349384   228 0001:00349393   231 0001:003493D4   232 0001:003493D8
+   233 0001:003493F9   234 0001:0034941A   235 0001:0034944E   236 0001:00349482
+   238 0001:00349496   239 0001:003494A3   240 0001:003494B0   241 0001:003494BD
+   242 0001:003494CA   243 0001:003494D7   247 0001:003494E6   248 0001:003494F3
+   250 0001:00349500   251 0001:00349507   255 0001:0034950C   256 0001:00349515
+   257 0001:0034952C   261 0001:00349534   262 0001:0034953D   263 0001:00349554
+   266 0001:0034955C   267 0001:0034955F   268 0001:00349583   269 0001:0034958A
+   275 0001:0034958C   276 0001:003495B4   277 0001:003495CA   279 0001:003495E6
+   280 0001:003495EA   281 0001:00349607   283 0001:0034963C   284 0001:00349640
+   285 0001:00349643   280 0001:00349644   286 0001:00349647   288 0001:0034964D
+   289 0001:00349673   291 0001:0034968A   277 0001:0034968D   292 0001:00349696
+   293 0001:003496AA   294 0001:003496B5   297 0001:003496E0   298 0001:003496E3
+   300 0001:003496FC   302 0001:00349722   305 0001:00349724   306 0001:00349727
+   307 0001:00349761   308 0001:003497A0   309 0001:003497CF   315 0001:003497D4
+   316 0001:003497F0   317 0001:003497FD   318 0001:00349831   319 0001:00349850
+   320 0001:0034986A   319 0001:00349898   321 0001:0034989B   323 0001:003498B1
+   324 0001:003498CE   325 0001:003498D7   327 0001:003498E6   328 0001:003498EF
+   329 0001:003498FD   335 0001:003499B8   336 0001:003499D5   337 0001:003499E2
+   338 0001:00349A01   337 0001:00349A32   339 0001:00349A35   341 0001:00349A4F
+   342 0001:00349A5F   343 0001:00349A68   344 0001:00349A77   345 0001:00349A8C
+   346 0001:00349AAC   348 0001:00349AF4   349 0001:00349B02   350 0001:00349B04
+   345 0001:00349B07   352 0001:00349B0A   353 0001:00349B21   354 0001:00349B2F
+   360 0001:00349BF8   361 0001:00349C15   362 0001:00349C22   363 0001:00349C5B
+   365 0001:00349C75   366 0001:00349C85   367 0001:00349C8E   368 0001:00349C9D
+   369 0001:00349CAA   370 0001:00349CB8   371 0001:00349CCD   372 0001:00349CE9
+   374 0001:00349D30   375 0001:00349D3D   376 0001:00349D3F   371 0001:00349D40
+   378 0001:00349D45   379 0001:00349D5C   380 0001:00349D6A   383 0001:00349E1C
+   384 0001:00349E1F   385 0001:00349E39   389 0001:00349E3C   390 0001:00349E49
+   394 0001:00349E4C   395 0001:00349E59   398 0001:00349E5C   399 0001:00349E5F
+   400 0001:00349E78   404 0001:00349E7C   405 0001:00349E89   409 0001:00349E8C
+   410 0001:00349E99   414 0001:00349E9C   415 0001:00349EA9   419 0001:00349EAC
+   420 0001:00349EB9   424 0001:00349EBC   425 0001:00349ED0   429 0001:00349ED4
+   430 0001:00349EE8   432 0001:00349F17
+
+Line numbers for fLabs(fLabs.pas) segment .text
+
+   310 0001:0034AD34   311 0001:0034AD55   312 0001:0034AD57   313 0001:0034AD6A
+   314 0001:0034AD89   315 0001:0034ADA0   316 0001:0034ADBF   318 0001:0034ADD0
+   319 0001:0034ADE1   321 0001:0034ADE6   323 0001:0034AE22   325 0001:0034AE36
+   326 0001:0034AE47   328 0001:0034AE4C   330 0001:0034AE5D   331 0001:0034AE6E
+   348 0001:0034AE73   350 0001:0034AE7C   352 0001:0034AE8E   355 0001:0034AEA4
+   358 0001:0034AECD   360 0001:0034AEDA   361 0001:0034AEEF   363 0001:0034AF59
+   366 0001:0034AF6F   369 0001:0034AFB1   372 0001:0034AFF3   375 0001:0034B035
+   378 0001:0034B04B   381 0001:0034B067   384 0001:0034B0A9   387 0001:0034B0EB
+   390 0001:0034B12D   393 0001:0034B16C   398 0001:0034B1AB   399 0001:0034B1DE
+   405 0001:0034B400   406 0001:0034B404   407 0001:0034B40B   408 0001:0034B415
+   409 0001:0034B41C   410 0001:0034B423   411 0001:0034B431   412 0001:0034B43D
+   413 0001:0034B44D   414 0001:0034B454   415 0001:0034B45B   416 0001:0034B46C
+   417 0001:0034B47D   418 0001:0034B48E   419 0001:0034B49F   420 0001:0034B4B0
+   421 0001:0034B4C3   422 0001:0034B4CF   423 0001:0034B4E0   424 0001:0034B4F1
+   425 0001:0034B507   426 0001:0034B518   427 0001:0034B54D   428 0001:0034B55A
+   429 0001:0034B567   430 0001:0034B577   431 0001:0034B590   432 0001:0034B5A4
+   433 0001:0034B5B7   434 0001:0034B5C4   441 0001:0034B5C8   442 0001:0034B600
+   443 0001:0034B60D   444 0001:0034B614   446 0001:0034B639   447 0001:0034B655
+   448 0001:0034B66C   450 0001:0034B68C   451 0001:0034B6D7   453 0001:0034B6EF
+   444 0001:0034B6F0   454 0001:0034B6F7   455 0001:0034B6FE   460 0001:0034B740
+   461 0001:0034B74B   462 0001:0034B756   463 0001:0034B766   465 0001:0034B78A
+   466 0001:0034B796   468 0001:0034B79D   470 0001:0034B7AF   471 0001:0034B7C7
+   472 0001:0034B7D6   474 0001:0034B7F7   475 0001:0034B805   476 0001:0034B81B
+   477 0001:0034B82F   470 0001:0034B830   478 0001:0034B835   479 0001:0034B842
+   482 0001:0034B844   485 0001:0034B8B0   486 0001:0034B8B3   487 0001:0034B8BA
+   488 0001:0034B8C7   489 0001:0034B8D8   490 0001:0034B8E2   491 0001:0034B8EC
+   492 0001:0034B8FC   493 0001:0034B909   494 0001:0034B913   495 0001:0034B924
+   496 0001:0034B92E   497 0001:0034B938   499 0001:0034B93E   500 0001:0034B94A
+   501 0001:0034B956   503 0001:0034B963   508 0001:0034B968   509 0001:0034B980
+   510 0001:0034B987   511 0001:0034B99B   512 0001:0034B9A8   513 0001:0034B9BC
+   514 0001:0034B9CC   526 0001:0034BA27   528 0001:0034BA32   529 0001:0034BA3F
+   530 0001:0034BA4C   531 0001:0034BA56   532 0001:0034BA60   534 0001:0034BA67
+   536 0001:0034BA7B   537 0001:0034BA85   538 0001:0034BABA   539 0001:0034BAD4
+   541 0001:0034BADD   543 0001:0034BAF9   544 0001:0034BB03   547 0001:0034BB11
+   548 0001:0034BB22   549 0001:0034BB33   550 0001:0034BB44   551 0001:0034BB51
+   552 0001:0034BB5E   553 0001:0034BB6B   554 0001:0034BB78   555 0001:0034BB89
+   556 0001:0034BB96   557 0001:0034BBA4   558 0001:0034BBAE   559 0001:0034BBB8
+   560 0001:0034BBCD   559 0001:0034BBE4   562 0001:0034BBE7   563 0001:0034BBEE
+   564 0001:0034BBF4   566 0001:0034BC03   567 0001:0034BC1D   570 0001:0034BC26
+   571 0001:0034BC3B   573 0001:0034BC4A   574 0001:0034BC7F   575 0001:0034BC99
+   576 0001:0034BCA2   577 0001:0034BCB3   580 0001:0034BCC1   581 0001:0034BCD2
+   582 0001:0034BCE3   583 0001:0034BCF0   584 0001:0034BCFD   585 0001:0034BD03
+   587 0001:0034BD12   588 0001:0034BD2C   591 0001:0034BD37   593 0001:0034BD3E
+   596 0001:0034BE5C   597 0001:0034BE5F   598 0001:0034BE66   599 0001:0034BE6F
+   608 0001:0034BE74   609 0001:0034BE9B   610 0001:0034BEA3   611 0001:0034BEA8
+   612 0001:0034BEAD   615 0001:0034BEC3   617 0001:0034BEF2   619 0001:0034BEFE
+   620 0001:0034BF0B   622 0001:0034BF27   624 0001:0034BF5B   625 0001:0034BF6C
+   626 0001:0034BF8D   627 0001:0034BFAB   629 0001:0034BFC2   630 0001:0034BFEE
+   627 0001:0034BFEF   631 0001:0034BFF2   620 0001:0034BFF5   632 0001:0034BFFE
+   634 0001:0034C00A   635 0001:0034C019   636 0001:0034C02D   639 0001:0034C04C
+   645 0001:0034C065   647 0001:0034C094   648 0001:0034C0A3   649 0001:0034C0A8
+   650 0001:0034C0AD   651 0001:0034C0B4   652 0001:0034C0BC   654 0001:0034C0C8
+   656 0001:0034C0E4   657 0001:0034C0F2   658 0001:0034C112   660 0001:0034C11A
+   662 0001:0034C129   663 0001:0034C130   665 0001:0034C135   667 0001:0034C13E
+   669 0001:0034C14E   671 0001:0034C158   672 0001:0034C169   673 0001:0034C18A
+   674 0001:0034C1A8   678 0001:0034C1E9   679 0001:0034C1F6   680 0001:0034C234
+   681 0001:0034C241   682 0001:0034C254   683 0001:0034C274   687 0001:0034C287
+   688 0001:0034C2A8   685 0001:0034C2C0   690 0001:0034C2D1   694 0001:0034C2E1
+   697 0001:0034C2EF   698 0001:0034C35F   700 0001:0034C367   701 0001:0034C36C
+   702 0001:0034C36F   705 0001:0034C377   707 0001:0034C380   708 0001:0034C388
+   709 0001:0034C39B   710 0001:0034C3B6   711 0001:0034C3D7   715 0001:0034C3EA
+   716 0001:0034C40B   713 0001:0034C423   718 0001:0034C434   722 0001:0034C444
+   724 0001:0034C44F   726 0001:0034C454   728 0001:0034C464   730 0001:0034C46E
+   731 0001:0034C47F   732 0001:0034C4A5   733 0001:0034C4C9   737 0001:0034C519
+   738 0001:0034C526   739 0001:0034C564   740 0001:0034C571   742 0001:0034C57F
+   743 0001:0034C5EF   745 0001:0034C5F7   746 0001:0034C5FA   747 0001:0034C5FD
+   748 0001:0034C605   749 0001:0034C60A   751 0001:0034C636   752 0001:0034C676
+   753 0001:0034C697   748 0001:0034C698   754 0001:0034C6A1   755 0001:0034C6AC
+   756 0001:0034C6B2   758 0001:0034C6BA   759 0001:0034C6C7   756 0001:0034C6CA
+   761 0001:0034C6D2   654 0001:0034C6D5   762 0001:0034C6DE   764 0001:0034C6EE
+   766 0001:0034C6F8   767 0001:0034C709   768 0001:0034C72F   769 0001:0034C753
+   773 0001:0034C7A3   774 0001:0034C7B0   775 0001:0034C7EE   776 0001:0034C7FB
+   778 0001:0034C809   779 0001:0034C879   782 0001:0034C881   786 0001:0034C889
+   787 0001:0034C88F   788 0001:0034C8A4   789 0001:0034C8B2   795 0001:0034C9D0
+   796 0001:0034C9FE   798 0001:0034CA04   799 0001:0034CA0C   800 0001:0034CA1B
+   801 0001:0034CA35   802 0001:0034CA49   804 0001:0034CA7E   805 0001:0034CA94
+   806 0001:0034CA9C   807 0001:0034CAA4   809 0001:0034CACE   811 0001:0034CAE3
+   813 0001:0034CB0C   814 0001:0034CB2F   816 0001:0034CB4D   817 0001:0034CB6C
+   818 0001:0034CB7B   820 0001:0034CB8A   822 0001:0034CBA4   824 0001:0034CBD1
+   825 0001:0034CBF2   826 0001:0034CC13   827 0001:0034CC26   828 0001:0034CC58
+   829 0001:0034CC6B   831 0001:0034CC8D   832 0001:0034CCB6   833 0001:0034CCD9
+   835 0001:0034CD0A   837 0001:0034CD17   839 0001:0034CD2F   841 0001:0034CD47
+   843 0001:0034CD5F   846 0001:0034CD6A   847 0001:0034CD9D   849 0001:0034CDA7
+   850 0001:0034CDB5   853 0001:0034CF14   854 0001:0034CF17   855 0001:0034CF24
+   856 0001:0034CF54   857 0001:0034CF6B   858 0001:0034CF82   859 0001:0034CFB2
+   860 0001:0034CFC9   861 0001:0034CFE0   862 0001:0034CFF7   863 0001:0034D023
+   864 0001:0034D03A   865 0001:0034D051   866 0001:0034D05F   867 0001:0034D06D
+   868 0001:0034D07B   876 0001:0034D080   877 0001:0034D0A3   878 0001:0034D0B4
+   879 0001:0034D0C2   883 0001:0034D0CC   884 0001:0034D0DD   885 0001:0034D0EE
+   887 0001:0034D0F8   888 0001:0034D105   889 0001:0034D10F   890 0001:0034D113
+   891 0001:0034D117   892 0001:0034D11B   893 0001:0034D120   894 0001:0034D125
+   895 0001:0034D12A   896 0001:0034D12C   898 0001:0034D14A   899 0001:0034D15A
+   901 0001:0034D187   903 0001:0034D18D   904 0001:0034D190   907 0001:0034D199
+   909 0001:0034D19F   910 0001:0034D1A2   914 0001:0034D1AB   915 0001:0034D1AE
+   917 0001:0034D1B2   919 0001:0034D1B7   921 0001:0034D1E8   922 0001:0034D1EE
+   924 0001:0034D23D   926 0001:0034D243   927 0001:0034D28D   928 0001:0034D291
+   931 0001:0034D299   933 0001:0034D29F   934 0001:0034D2E9   935 0001:0034D2ED
+   939 0001:0034D2F5   940 0001:0034D33E   941 0001:0034D341   945 0001:0034D34A
+   947 0001:0034D350   948 0001:0034D384   952 0001:0034D38C   953 0001:0034D392
+   955 0001:0034D3C9   956 0001:0034D3CF   958 0001:0034D406   960 0001:0034D43B
+   896 0001:0034D43E   961 0001:0034D447   962 0001:0034D45C   963 0001:0034D476
+   965 0001:0034D47F  1226 0001:0034D4E0  1228 0001:0034D4E5  1229 0001:0034D4FB
+  1230 0001:0034D517  1231 0001:0034D524  1232 0001:0034D540  1243 0001:0034D544
+  1245 0001:0034D56B  1247 0001:0034D574  1248 0001:0034D584  1250 0001:0034D594
+  1252 0001:0034D5CC  1254 0001:0034D5D5  1255 0001:0034D5E4  1256 0001:0034D5F8
+  1258 0001:0034D608  1260 0001:0034D656  1263 0001:0034D662  1265 0001:0034D678
+  1267 0001:0034D68E  1270 0001:0034D6A2  1271 0001:0034D6C5  1273 0001:0034D6E1
+  1274 0001:0034D6F2  1275 0001:0034D6FB  1276 0001:0034D701  1278 0001:0034D712
+  1281 0001:0034D72A  1282 0001:0034D73C  1283 0001:0034D749  1284 0001:0034D76E
+  1286 0001:0034D783  1287 0001:0034D78B  1289 0001:0034D79E  1290 0001:0034D7B5
+  1291 0001:0034D7CC  1292 0001:0034D7E3  1295 0001:0034D814  1309 0001:0034D81E
+  1310 0001:0034D82E  1311 0001:0034D83E  1312 0001:0034D84C  1314 0001:0034D85F
+  1315 0001:0034D869  1316 0001:0034D873  1317 0001:0034D888  1316 0001:0034D89F
+  1318 0001:0034D8A2  1319 0001:0034D8A9  1320 0001:0034D8B8  1322 0001:0034D8E7
+  1323 0001:0034D93B  1325 0001:0034D978  1326 0001:0034D981  1328 0001:0034D98C
+  1329 0001:0034D9A0  1331 0001:0034D9A5  1333 0001:0034D9D2  1334 0001:0034DA3C
+  1337 0001:0034DAA7  1338 0001:0034DAF3  1339 0001:0034DB07  1341 0001:0034DB0C
+  1343 0001:0034DB60  1344 0001:0034DBB4  1348 0001:0034DBF6  1349 0001:0034DC0A
+  1350 0001:0034DC1B  1352 0001:0034DC5C  1354 0001:0034DCB0  1355 0001:0034DD04
+  1359 0001:0034DD43  1360 0001:0034DD57  1361 0001:0034DD68  1365 0001:0034DD6D
+  1366 0001:0034DE19  1369 0001:0034DE74  1370 0001:0034DEC0  1371 0001:0034DED4
+  1373 0001:0034DED9  1374 0001:0034DEE9  1375 0001:0034DEF8  1381 0001:0034DF12
+  1384 0001:0034DF28  1385 0001:0034DF3C  1386 0001:0034DF50  1387 0001:0034DF64
+  1388 0001:0034DF70  1389 0001:0034DF92  1390 0001:0034E01D  1391 0001:0034E04D
+  1393 0001:0034E088  1394 0001:0034E09B  1395 0001:0034E11B  1399 0001:0034E12E
+  1400 0001:0034E14C  1401 0001:0034E154  1402 0001:0034E1D4  1404 0001:0034E1E1
+  1405 0001:0034E1F0  1409 0001:0034E20F  1410 0001:0034E222  1416 0001:0034E23E
+  1417 0001:0034E252  1418 0001:0034E266  1419 0001:0034E272  1420 0001:0034E286
+  1422 0001:0034E2A8  1423 0001:0034E2B6  1425 0001:0034E341  1426 0001:0034E371
+  1428 0001:0034E3AC  1429 0001:0034E3BF  1430 0001:0034E43F  1436 0001:0034E452
+  1438 0001:0034E465  1439 0001:0034E4E5  1441 0001:0034E4F2  1442 0001:0034E501
+  1445 0001:0034E520  1451 0001:0034E538  1454 0001:0034E546  1456 0001:0034E5B6
+  1457 0001:0034E5C7  1458 0001:0034E5D8  1459 0001:0034E5E2  1460 0001:0034E5EC
+  1461 0001:0034E5F6  1462 0001:0034E639  1463 0001:0034E650  1464 0001:0034E679
+  1466 0001:0034E687  1467 0001:0034E69E  1469 0001:0034E6C8  1470 0001:0034E6E3
+  1473 0001:0034E6FE  1474 0001:0034E70F  1475 0001:0034E719  1476 0001:0034E723
+  1477 0001:0034E72D  1478 0001:0034E75D  1479 0001:0034E774  1480 0001:0034E79A
+  1481 0001:0034E7A7  1482 0001:0034E7B6  1483 0001:0034E7C7  1484 0001:0034E7DA
+  1485 0001:0034E7F5  1486 0001:0034E80B  1489 0001:0034E823  1490 0001:0034E834
+  1491 0001:0034E83E  1492 0001:0034E848  1493 0001:0034E856  1494 0001:0034E860
+  1495 0001:0034E896  1496 0001:0034E8A4  1498 0001:0034E8B9  1499 0001:0034E8D2
+  1502 0001:0034E8F2  1505 0001:0034E8FA  1506 0001:0034E910  1508 0001:0034E923
+  1509 0001:0034E936  1510 0001:0034E947  1511 0001:0034E951  1512 0001:0034E95B
+  1513 0001:0034E96B  1514 0001:0034E975  1516 0001:0034E9E0  1517 0001:0034E9F2
+  1519 0001:0034EA02  1520 0001:0034EA10  1521 0001:0034EA1E  1522 0001:0034EA2C
+  1525 0001:0034EA3C  1527 0001:0034EA49  1528 0001:0034EA5F  1529 0001:0034EA72
+  1530 0001:0034EA7D  1531 0001:0034EA8E  1532 0001:0034EA98  1533 0001:0034EAA2
+  1534 0001:0034EAB1  1535 0001:0034EABF  1536 0001:0034EAC9  1539 0001:0034EB54
+  1541 0001:0034EB63  1542 0001:0034EB73  1543 0001:0034EB98  1544 0001:0034EBAD
+  1545 0001:0034EBF4  1544 0001:0034EC1F  1546 0001:0034EC22  1547 0001:0034EC3B
+  1548 0001:0034EC54  1549 0001:0034EC67  1553 0001:0034EC7C  1554 0001:0034ECA6
+  1555 0001:0034ECB9  1556 0001:0034ECC9  1557 0001:0034ED08  1561 0001:0034ED73
+  1566 0001:0034EE11  1569 0001:0034EE2E  1574 0001:0034EE3E  1575 0001:0034EE4F
+  1576 0001:0034EE59  1577 0001:0034EE63  1578 0001:0034EE6D  1579 0001:0034EE9D
+  1580 0001:0034EEB4  1581 0001:0034EEDA  1582 0001:0034EEE7  1583 0001:0034EEF6
+  1584 0001:0034EF07  1585 0001:0034EF1A  1586 0001:0034EF35  1587 0001:0034EF4B
+  1590 0001:0034EF63  1591 0001:0034EF74  1592 0001:0034EF7E  1593 0001:0034EF88
+  1594 0001:0034EF92  1595 0001:0034EFD5  1596 0001:0034EFEC  1598 0001:0034F030
+  1599 0001:0034F03D  1600 0001:0034F04C  1601 0001:0034F05D  1602 0001:0034F070
+  1603 0001:0034F08B  1604 0001:0034F0A1  1607 0001:0034F0B9  1608 0001:0034F0CA
+  1609 0001:0034F0DB  1610 0001:0034F0E5  1611 0001:0034F0EF  1612 0001:0034F0F9
+  1614 0001:0034F13C  1615 0001:0034F153  1617 0001:0034F1C6  1618 0001:0034F1D3
+  1619 0001:0034F1E2  1620 0001:0034F1F3  1621 0001:0034F206  1622 0001:0034F221
+  1623 0001:0034F237  1632 0001:0034F24A  1633 0001:0034F258  1634 0001:0034F25F
+  1635 0001:0034F27A  1644 0001:0034F290  1647 0001:0034FA90  1649 0001:0034FAA9
+  1650 0001:0034FAD9  1660 0001:0034FB1C  1662 0001:0034FB3F  1663 0001:0034FB46
+  1664 0001:0034FB5F  1665 0001:0034FB6F  1666 0001:0034FB79  1669 0001:0034FB83
+  1670 0001:0034FB8B  1672 0001:0034FBC3  1674 0001:0034FBCC  1675 0001:0034FBDB
+  1676 0001:0034FBEF  1678 0001:0034FBFF  1680 0001:0034FC4D  1683 0001:0034FC59
+  1685 0001:0034FC6F  1687 0001:0034FC85  1690 0001:0034FC99  1691 0001:0034FCBC
+  1693 0001:0034FCD8  1694 0001:0034FCE9  1695 0001:0034FCF2  1696 0001:0034FCF8
+  1698 0001:0034FD09  1701 0001:0034FD21  1702 0001:0034FD33  1703 0001:0034FD40
+  1705 0001:0034FD4A  1706 0001:0034FD5F  1708 0001:0034FD72  1709 0001:0034FD83
+  1710 0001:0034FD94  1711 0001:0034FD9E  1712 0001:0034FDA8  1713 0001:0034FDB2
+  1714 0001:0034FDEF  1715 0001:0034FE06  1716 0001:0034FE2F  1718 0001:0034FE3D
+  1719 0001:0034FE54  1721 0001:0034FE7E  1722 0001:0034FE99  1724 0001:0034FEB4
+  1726 0001:0034FEC7  1727 0001:0034FED8  1728 0001:0034FEE2  1729 0001:0034FEEC
+  1730 0001:0034FEF6  1731 0001:0034FF26  1732 0001:0034FF3D  1733 0001:0034FF63
+  1734 0001:0034FF70  1735 0001:0034FF7F  1736 0001:0034FF90  1737 0001:0034FFA3
+  1738 0001:0034FFBE  1739 0001:0034FFD4  1741 0001:0034FFEC  1743 0001:0034FFFF
+  1744 0001:00350010  1745 0001:0035001A  1746 0001:00350024  1747 0001:00350032
+  1748 0001:0035003C  1749 0001:00350072  1750 0001:00350080  1752 0001:00350095
+  1753 0001:003500AE  1756 0001:003500CE  1758 0001:003500D6  1760 0001:003500E9
+  1761 0001:003500FF  1763 0001:00350112  1764 0001:00350125  1765 0001:00350136
+  1766 0001:00350140  1767 0001:0035014A  1768 0001:0035015A  1769 0001:00350164
+  1771 0001:003501C3  1772 0001:003501D5  1774 0001:003501E5  1775 0001:003501F3
+  1776 0001:00350201  1777 0001:0035020F  1779 0001:0035021F  1781 0001:00350232
+  1783 0001:0035023F  1784 0001:00350255  1785 0001:00350268  1786 0001:00350273
+  1787 0001:00350284  1788 0001:0035028E  1789 0001:00350298  1790 0001:003502A7
+  1791 0001:003502B5  1792 0001:003502BF  1795 0001:00350332  1797 0001:00350341
+  1798 0001:00350351  1799 0001:00350376  1800 0001:0035038B  1801 0001:003503D2
+  1800 0001:003503FD  1802 0001:00350400  1803 0001:00350419  1804 0001:00350432
+  1805 0001:00350445  1809 0001:0035045A  1810 0001:00350484  1811 0001:00350497
+  1812 0001:003504A7  1813 0001:003504E6  1817 0001:00350551  1822 0001:003505EF
+  1825 0001:0035060C  1829 0001:0035061C  1831 0001:0035062F  1832 0001:00350640
+  1833 0001:0035064A  1834 0001:00350654  1835 0001:0035065E  1836 0001:0035068E
+  1837 0001:003506A5  1838 0001:003506CB  1839 0001:003506D8  1840 0001:003506E7
+  1841 0001:003506F8  1842 0001:0035070B  1843 0001:00350726  1844 0001:0035073C
+  1846 0001:00350754  1848 0001:00350767  1849 0001:00350778  1850 0001:00350782
+  1851 0001:0035078C  1852 0001:00350796  1853 0001:003507D9  1854 0001:003507F0
+  1856 0001:00350834  1857 0001:00350841  1858 0001:00350850  1859 0001:00350861
+  1860 0001:00350874  1861 0001:0035088F  1862 0001:003508A5  1865 0001:003508BD
+  1866 0001:003508CE  1867 0001:003508DF  1868 0001:003508E9  1869 0001:003508F3
+  1871 0001:003508FD  1872 0001:00350940  1873 0001:00350957  1875 0001:003509CA
+  1876 0001:003509D7  1877 0001:003509E6  1878 0001:003509F7  1879 0001:00350A0A
+  1880 0001:00350A25  1881 0001:00350A3B  1883 0001:00350A4E  1884 0001:00350A5F
+  1886 0001:00350A90  1887 0001:00350AB6  1888 0001:00350AC4  1889 0001:00350AE3
+  1890 0001:00350AF6  1891 0001:00350B09  1892 0001:00350B9A  1894 0001:00350BF7
+  1895 0001:00350C54  1896 0001:00350C5B  1901 0001:0035122C  1902 0001:00351233
+  1909 0001:00351234  1910 0001:00351259  1911 0001:0035126A  1913 0001:00351291
+  1914 0001:003512BD  1915 0001:003512E9  1916 0001:003512ED  1918 0001:0035134C
+  1919 0001:0035136C  1921 0001:0035137D  1922 0001:00351381  1923 0001:003513D1
+  1924 0001:003513FE  1926 0001:00351414  1916 0001:00351415  1927 0001:0035141E
+  1928 0001:00351455  1911 0001:00351458  1929 0001:00351461  1935 0001:003514BC
+  1936 0001:003514E2  1937 0001:003514E7  1938 0001:00351513  1939 0001:0035153F
+  1940 0001:00351568  1941 0001:00351573  1943 0001:00351593  1944 0001:0035159A
+  1945 0001:003515C6  1946 0001:003515F2  1947 0001:0035161B  1949 0001:00351626
+  1951 0001:0035162C  1952 0001:0035164D  1953 0001:0035166C  1954 0001:0035168B
+  1955 0001:003516AC  1956 0001:003516B8  1957 0001:003516C4  1958 0001:003516DA
+  1959 0001:003516ED  1958 0001:003516FF  1959 0001:00351702  1957 0001:00351705
+  1960 0001:0035170A  1961 0001:0035171A  1962 0001:0035172D  1964 0001:0035173C
+  1965 0001:0035176F  1962 0001:00351770  1966 0001:00351775  1968 0001:0035177B
+  1969 0001:0035178E  1970 0001:003517A3  1969 0001:003517B7  1972 0001:003517BC
+  1976 0001:003517D2  1978 0001:003517DF  1979 0001:00351802  1980 0001:00351815
+  1981 0001:00351848  1982 0001:00351857  1984 0001:0035188A  1988 0001:003518DD
+  1991 0001:0035192E  1992 0001:003519D0  1972 0001:003519D1  1993 0001:003519DA
+  1995 0001:003519F0  1996 0001:00351A2A  1997 0001:00351A65  1998 0001:00351AF2
+  1993 0001:00351AF3  2000 0001:00351AFC  2006 0001:00351BB0  2007 0001:00351BD5
+  2008 0001:00351BDA  2009 0001:00351C06  2010 0001:00351C32  2011 0001:00351C5B
+  2012 0001:00351C66  2014 0001:00351C86  2015 0001:00351C8D  2016 0001:00351CB9
+  2017 0001:00351CE5  2018 0001:00351D0E  2020 0001:00351D19  2022 0001:00351D1F
+  2023 0001:00351D3E  2024 0001:00351D5F  2025 0001:00351D7E  2026 0001:00351D9F
+  2027 0001:00351DAB  2028 0001:00351DB7  2029 0001:00351DCD  2030 0001:00351DE0
+  2029 0001:00351DF2  2030 0001:00351DF5  2028 0001:00351DF8  2031 0001:00351DFD
+  2032 0001:00351E0D  2033 0001:00351E20  2035 0001:00351E2F  2036 0001:00351E62
+  2033 0001:00351E63  2037 0001:00351E68  2039 0001:00351E6E  2040 0001:00351E81
+  2041 0001:00351E96  2040 0001:00351EAA  2043 0001:00351EAF  2046 0001:00351EC5
+  2048 0001:00351ED2  2049 0001:00351EF5  2050 0001:00351F08  2051 0001:00351F3B
+  2052 0001:00351F4A  2054 0001:00351F7D  2058 0001:00351FD0  2061 0001:00352021
+  2062 0001:00352076  2043 0001:00352077  2063 0001:00352080  2065 0001:00352096
+  2066 0001:003520D0  2067 0001:0035210B  2068 0001:00352198  2063 0001:00352199
+  2070 0001:003521A2  2075 0001:0035224C  2076 0001:0035226C  2077 0001:0035229B
+  2078 0001:003522A9  2079 0001:003522B3  2080 0001:003522BD  2081 0001:003522CF
+  2080 0001:003522F4  2082 0001:003522F7  2083 0001:00352317  2084 0001:0035232D
+  2085 0001:0035233D  2091 0001:0035238C  2093 0001:003523AA  2095 0001:003523C6
+  2096 0001:003523CE  2097 0001:003523E9  2096 0001:0035241C  2098 0001:0035241F
+  2099 0001:00352451  2100 0001:00352486  2102 0001:00352490  2103 0001:00352495
+  2104 0001:0035249F  2105 0001:003524A9  2106 0001:003524B3  2107 0001:003524BD
+  2108 0001:003524C7  2109 0001:003524D1  2110 0001:003524DB  2111 0001:003524E5
+  2116 0001:00352530  2117 0001:0035255A  2120 0001:00352585  2121 0001:003525A4
+  2122 0001:003525B0  2123 0001:003525C6  2124 0001:003525DC  2125 0001:003525F5
+  2126 0001:0035260E  2127 0001:00352627  2128 0001:00352670  2129 0001:00352679
+  2130 0001:00352685  2131 0001:0035269B  2132 0001:003526A9  2131 0001:003526B8
+  2132 0001:003526BB  2130 0001:003526BE  2133 0001:003526C3  2134 0001:003526D3
+  2135 0001:003526E6  2136 0001:003526F9  2137 0001:0035270C  2138 0001:0035271F
+  2140 0001:00352732  2141 0001:00352761  2142 0001:00352793  2143 0001:003527C5
+  2144 0001:003527F7  2145 0001:00352829  2138 0001:0035282A  2147 0001:00352833
+  2153 0001:003528B0  2154 0001:003528DA  2155 0001:003528E8  2156 0001:00352907
+  2157 0001:00352926  2158 0001:00352945  2159 0001:0035297B  2160 0001:003529A4
+  2161 0001:003529B6  2160 0001:003529D7  2162 0001:003529DA  2163 0001:003529E7
+  2170 0001:00352A68  2171 0001:00352A8D  2172 0001:00352A9C  2173 0001:00352AB1
+  2174 0001:00352AB5  2175 0001:00352AB9  2176 0001:00352AC7  2177 0001:00352AEC
+  2179 0001:00352AFC  2180 0001:00352B2A  2183 0001:00352B5C  2185 0001:00352B69
+  2186 0001:00352B89  2187 0001:00352B9C  2188 0001:00352BCB  2189 0001:00352BDA
+  2191 0001:00352C09  2192 0001:00352C31  2196 0001:00352C6B  2197 0001:00352C8F
+  2200 0001:00352CC7  2203 0001:00352CEA  2204 0001:00352D0A  2208 0001:00352D10
+  2209 0001:00352D2D  2211 0001:00352D4A  2212 0001:00352D59  2213 0001:00352D5D
+  2214 0001:00352D6C  2218 0001:00352D72  2219 0001:00352D7F  2221 0001:00352D8C
+  2222 0001:00352D9B  2223 0001:00352DAA  2224 0001:00352DB9  2225 0001:00352DC8
+  2226 0001:00352DD7  2227 0001:00352DE6  2228 0001:00352DF5  2229 0001:00352E04
+  2230 0001:00352E22  2233 0001:00352E31  2234 0001:00352E3E  2235 0001:00352E5C
+  2236 0001:00352E6E  2237 0001:00352E7D  2239 0001:00352E8F  2241 0001:00352E9F
+  2243 0001:00352EAF  2245 0001:00352EE2  2246 0001:00352EF2  2247 0001:00352F02
+  2249 0001:00352F0B  2250 0001:00352F2D  2253 0001:00352F3D  2254 0001:00352F4E
+  2255 0001:00352F6C  2256 0001:00352F8A  2257 0001:00352FA2  2258 0001:00352FB5
+  2259 0001:00352FC5  2260 0001:00352FD2  2261 0001:00352FDF  2262 0001:00352FEC
+  2263 0001:00353003  2264 0001:0035301A  2265 0001:0035302A  2266 0001:00353037
+  2267 0001:00353044  2268 0001:0035305E  2269 0001:0035307B  2270 0001:00353088
+  2272 0001:00353096  2274 0001:003530C9  2275 0001:003530D3  2276 0001:003530E1
+  2277 0001:003530F1  2278 0001:003530FE  2279 0001:0035310B  2280 0001:00353118
+  2281 0001:00353135  2282 0001:00353166  2283 0001:00353173  2284 0001:00353180
+  2289 0001:00353190  2290 0001:0035319D  2291 0001:003531AA  2294 0001:003531C4
+  2296 0001:003531D4  2301 0001:0035335C  2303 0001:00353377  2304 0001:0035338A
+  2305 0001:00353394  2306 0001:003533DF  2307 0001:003533E6  2308 0001:003533EA
+  2309 0001:00353409  2310 0001:00353428  2312 0001:00353436  2317 0001:00353488
+  2319 0001:003534A3  2320 0001:003534B6  2321 0001:003534C0  2322 0001:0035350D
+  2323 0001:00353514  2324 0001:00353518  2325 0001:00353537  2326 0001:00353556
+  2328 0001:00353564  2336 0001:003535B8  2337 0001:003535DC  2338 0001:003535E0
+  2339 0001:003535EF  2340 0001:00353600  2343 0001:00353644  2344 0001:00353657
+  2345 0001:0035366A  2347 0001:0035367A  2348 0001:00353689  2349 0001:00353696
+  2353 0001:003536AB  2354 0001:003536BA  2357 0001:003536C6  2364 0001:00353708
+  2365 0001:0035373D  2367 0001:0035375B  2368 0001:00353773  2369 0001:0035377F
+  2370 0001:0035378A  2371 0001:0035379D  2372 0001:003537B4  2376 0001:003537CD
+  2378 0001:003537E0  2379 0001:003537ED  2380 0001:003537F2  2381 0001:00353805
+  2382 0001:00353818  2383 0001:0035382B  2384 0001:0035383E  2385 0001:00353851
+  2386 0001:0035387C  2387 0001:003538A7  2388 0001:003538D8  2389 0001:00353902
+  2391 0001:0035390C  2392 0001:0035391B  2394 0001:00353954  2395 0001:0035395E
+  2396 0001:00353960  2391 0001:00353961  2397 0001:00353966  2398 0001:00353977
+  2400 0001:00353983  2401 0001:003539B8  2403 0001:003539ED  2405 0001:003539F9
+  2406 0001:00353A2E  2408 0001:00353A63  2409 0001:00353A76  2410 0001:00353A90
+  2411 0001:00353AAB  2412 0001:00353AC2  2413 0001:00353AE9  2414 0001:00353B0D
+  2415 0001:00353B31  2416 0001:00353B3C  2417 0001:00353B54  2418 0001:00353B91
+  2420 0001:00353C05  2421 0001:00353C2B  2423 0001:00353C3B  2424 0001:00353C47
+  2425 0001:00353CB8  2426 0001:00353CD9  2428 0001:00353CDC  2416 0001:00353CDD
+  2430 0001:00353CE6  2432 0001:00353CF0  2433 0001:00353D14  2434 0001:00353D24
+  2435 0001:00353D31  2436 0001:00353D66  2438 0001:00353D9C  2439 0001:00353DE3
+  2442 0001:00353DF2  2443 0001:00353DFF  2445 0001:00353E11  2446 0001:00353E20
+  2448 0001:00353E32  2453 0001:00353F0C  2454 0001:00353F39  2455 0001:00353F62
+  2456 0001:00353F8C  2457 0001:00353FB7  2458 0001:00353FE4  2463 0001:00354010
+  2465 0001:00354014  2466 0001:00354027  2467 0001:00354031  2468 0001:0035403B
+  2469 0001:0035405B  2470 0001:00354062  2471 0001:00354083  2476 0001:003540C0
+  2478 0001:003540C4  2479 0001:003540D7  2480 0001:003540E1  2481 0001:003540EB
+  2482 0001:003540FF  2483 0001:00354120  2484 0001:00354127  2489 0001:00354154
+  2491 0001:00354157  2492 0001:0035415E  2493 0001:00354172  2494 0001:00354186
+  2495 0001:0035419A  2496 0001:003541B1  2582 0001:003541C5  2585 0001:003541C8
+  2587 0001:003541CB  2588 0001:003541D6  2589 0001:003541EA  2594 0001:003541EC
+  2596 0001:00354215  2597 0001:00354225  2598 0001:0035424C  2599 0001:00354297
+  2600 0001:003542E6  2601 0001:0035436E  2602 0001:0035437A  2605 0001:003543F4
+  2607 0001:003543F7  2608 0001:00354415  2611 0001:00354418  2613 0001:0035441B
+  2614 0001:00354436  2622 0001:00354438  2623 0001:0035446B  2624 0001:00354495
+  2625 0001:003544B4  2626 0001:003544D3  2627 0001:003544F2  2628 0001:00354511
+  2630 0001:0035451B  2631 0001:0035453D  2632 0001:0035455D  2633 0001:00354577
+  2634 0001:003545A1  2636 0001:003545A7  2637 0001:003545DC  2639 0001:00354611
+  2641 0001:00354617  2642 0001:0035464C  2646 0001:00354681  2647 0001:00354698
+  2648 0001:003546E1  2649 0001:003546FF  2650 0001:0035471D  2652 0001:00354732
+  2653 0001:00354752  2654 0001:0035475E  2655 0001:0035478C  2656 0001:003547AD
+  2650 0001:003547B0  2658 0001:003547B9  2663 0001:00354830  2664 0001:00354856
+  2667 0001:00354858  2669 0001:0035485C  2671 0001:0035486F  2672 0001:0035487C
+  2673 0001:00354889  2674 0001:00354896  2675 0001:003548A3  2676 0001:003548B0
+  2677 0001:003548D2  2678 0001:003548DF  2679 0001:003548EC  2680 0001:003548F9
+  2681 0001:00354906  2685 0001:00354916  2686 0001:00354923  2687 0001:00354930
+  2688 0001:0035493D  2689 0001:00354946  2690 0001:0035494F  2691 0001:0035495C
+  2692 0001:00354969  2693 0001:00354976  2694 0001:00354991  2695 0001:003549B1
+  2696 0001:003549BE  2697 0001:003549CB  2698 0001:003549D8  2700 0001:003549EC
+  2701 0001:003549FE  2702 0001:00354A0E  2705 0001:00354A17  2708 0001:00354A1C
+  2710 0001:00354A33  2711 0001:00354A66  2714 0001:00354A88  2716 0001:00354A8B
+  2717 0001:00354A95  2725 0001:00354A98  2727 0001:00354ABD  2728 0001:00354AC2
+  2729 0001:00354ACA  2730 0001:00354AF2  2732 0001:00354B1B  2733 0001:00354B35
+  2734 0001:00354B3D  2736 0001:00354B5D  2737 0001:00354B86  2738 0001:00354BAF
+  2734 0001:00354BB0  2739 0001:00354BB3  2740 0001:00354BDC  2741 0001:00354BF7
+  2742 0001:00354C07  2743 0001:00354C21  2744 0001:00354C2C  2729 0001:00354C2F
+  2745 0001:00354C38  2746 0001:00354C42  2747 0001:00354C4F  2752 0001:00354C98
+  2753 0001:00354CA3  2756 0001:00354CA4  2758 0001:00354CA7  2759 0001:00354CB1
+  2767 0001:00354CB4  2769 0001:00354CDD  2770 0001:00354CFF  2771 0001:00354D22
+  2772 0001:00354D2C  2773 0001:00354D38  2774 0001:00354D6E  2775 0001:00354D76
+  2776 0001:00354D7E  2777 0001:00354DB5  2778 0001:00354DEE  2780 0001:00354DF6
+  2781 0001:00354E02  2783 0001:00354E0A  2784 0001:00354E15  2785 0001:00354E1D
+  2786 0001:00354E28  2788 0001:00354E38  2789 0001:00354E3F  2790 0001:00354E47
+  2791 0001:00354E51  2792 0001:00354E57  2793 0001:00354E5F  2794 0001:00354E6F
+  2795 0001:00354E78  2797 0001:00354E87  2798 0001:00354E94  2799 0001:00354EBA
+  2800 0001:00354EC2  2801 0001:00354EEB  2802 0001:00354F00  2803 0001:00354F26
+  2804 0001:00354F59  2806 0001:00354F6E  2807 0001:00354F90  2808 0001:00354F98
+  2809 0001:00354FC1  2810 0001:00354FD6  2811 0001:00354FFC  2813 0001:0035502F
+  2815 0001:00355048  2816 0001:0035506B  2817 0001:00355073  2818 0001:0035509C
+  2819 0001:003550B1  2820 0001:003550D7  2822 0001:0035510A  2823 0001:0035511D
+  2824 0001:0035512C  2835 0001:003551D0  2837 0001:003551EE  2838 0001:003551F7
+  2841 0001:00355215  2842 0001:0035521C  2845 0001:00355233  2846 0001:00355257
+  2848 0001:0035526C  2849 0001:00355279  2850 0001:0035529D  2852 0001:003552B2
+  2853 0001:003552BF  2858 0001:003552D1  2859 0001:003552F5  2861 0001:0035530A
+  2862 0001:00355317  2863 0001:0035533B  2865 0001:00355350  2866 0001:0035535D
+  2867 0001:00355368  2868 0001:00355373  2869 0001:00355381  2871 0001:0035538B
+  2872 0001:00355399  2874 0001:003553A1  2879 0001:003553A8  2880 0001:003553CB
+  2882 0001:003553E0  2883 0001:003553ED  2884 0001:00355410  2886 0001:00355425
+  2887 0001:00355432  2888 0001:0035543E  2889 0001:0035544A  2890 0001:00355456
+  2892 0001:0035545D  2893 0001:00355469  2895 0001:0035546E  2898 0001:00355472
+  2901 0001:00355474  2902 0001:003554C0  2903 0001:003554CE  2904 0001:003554D8
+  2905 0001:003554E7  2907 0001:003554EC  2909 0001:00355502  2910 0001:0035550C
+  2912 0001:0035551B  2913 0001:00355520  2915 0001:00355543  2916 0001:0035554D
+  2919 0001:0035555C  2920 0001:00355567  2924 0001:00355570  2926 0001:0035557D
+  2927 0001:00355588  2928 0001:00355591  2929 0001:0035559C  2930 0001:003555A5
+  2941 0001:003555AC  2943 0001:003555D6  2944 0001:003555E0  2945 0001:003555EE
+  2946 0001:003555F8  2947 0001:003555FC  2949 0001:00355605  2950 0001:00355615
+  2969 0001:00355624  2971 0001:00355637  2972 0001:00355648  2974 0001:0035564F
+  2975 0001:00355656  2977 0001:00355677  2978 0001:0035567E  2979 0001:003556A0
+  2981 0001:003556F2  2982 0001:00355710  2983 0001:00355731  2984 0001:0035577C
+  2985 0001:003557B5  2988 0001:003557FC  2989 0001:00355800  2990 0001:00355826
+  2991 0001:00355842  2992 0001:00355859  2991 0001:0035588D  2993 0001:00355892
+  2982 0001:00355895  2994 0001:0035589E  2996 0001:003558A4  2997 0001:003558CB
+  2999 0001:003558E1  2978 0001:003558E4  3001 0001:003558ED  3002 0001:003558F4
+  3003 0001:003558F8  3004 0001:00355919  3005 0001:00355964  3006 0001:0035599D
+  3009 0001:003559E4  3010 0001:003559E8  3011 0001:00355A0E  3012 0001:00355A2A
+  3013 0001:00355A41  3012 0001:00355A75  3014 0001:00355A7A  3003 0001:00355A7D
+  3015 0001:00355A86  3017 0001:00355A8C  3018 0001:00355AB3  3020 0001:00355AC9
+  3022 0001:00355ADE  3024 0001:00355AF2  3025 0001:00355B40  3026 0001:00355B79
+  3028 0001:00355B8B  3030 0001:00355B9B  3031 0001:00355BCE  3032 0001:00355C07
+  3034 0001:00355C16  3036 0001:00355C26  3037 0001:00355C3E  3040 0001:00355C59
+  3041 0001:00355C6E  3043 0001:00355C82  3044 0001:00355CBF  3045 0001:00355D19
+  3046 0001:00355D2C  3058 0001:00355D39  3059 0001:00355D51  3061 0001:00355D64
+  3062 0001:00355D6B  3067 0001:00355EEC  3069 0001:00355EF1  3070 0001:00355F0C
+  3069 0001:00355F2C  3071 0001:00355F2F  3076 0001:00355F34  3077 0001:00355F3F
+  3080 0001:00355F40  3082 0001:00355F43  3083 0001:00355F61  3086 0001:00355F64
+  3088 0001:00355F67  3089 0001:00355F82  3092 0001:00355F84  3094 0001:00355F9D
+  3095 0001:00355FB7  3096 0001:00355FCE  3097 0001:00355FDE  3098 0001:00355FF0
+  3100 0001:00356024  3101 0001:0035603F  3102 0001:00356060  3105 0001:00356150
+  3107 0001:00356166  3109 0001:00356178  3110 0001:0035619A  3114 0001:003561AF
+  3116 0001:003561C6  3117 0001:003561CF  3120 0001:003561F0  3122 0001:003561F1
+  3124 0001:003561F7  3125 0001:00356201  3126 0001:0035620D  3128 0001:00356219
+  3133 0001:0035621C  3135 0001:00356237  3136 0001:00356239  3138 0001:00356242
+  3139 0001:00356260  3138 0001:0035628F  3140 0001:00356294  3141 0001:0035629F
+  3142 0001:003562AC  3144 0001:003562B9  3150 0001:003562DC  3152 0001:003562F6
+  3153 0001:0035630C  3154 0001:00356319  3155 0001:00356338  3156 0001:0035634E
+  3158 0001:00356364  3159 0001:00356369  3160 0001:0035639E  3161 0001:003563BA
+  3163 0001:003563F5  3164 0001:00356410  3166 0001:00356417  3169 0001:00356440
+  3171 0001:00356443  3172 0001:0035644C  3173 0001:00356453  3174 0001:00356460
+  3175 0001:0035646D  3177 0001:0035647A  3180 0001:0035647C  3182 0001:00356480
+  3184 0001:0035649D  3185 0001:003564A7  3187 0001:003564B7  3188 0001:003564C9
+  3190 0001:003564D8  3191 0001:003564E5  3192 0001:003564F1  3193 0001:003564FE
+  3194 0001:00356510  3196 0001:0035651F  3197 0001:0035652C  3199 0001:0035656A
+  3201 0001:0035657A  3207 0001:00356587  3213 0001:0035658C  3232 0001:003565A7
+  3233 0001:003565C9  3236 0001:003565DB  3240 0001:00356673  3241 0001:00356689
+  3242 0001:00356696  3244 0001:0035669F  3245 0001:003566B0  3246 0001:003566BD
+  3247 0001:003566CA  3248 0001:003566D7  3249 0001:003566E4  3250 0001:003566F1
+  3251 0001:003566FE  3252 0001:0035670B  3253 0001:00356718  3256 0001:00356725
+  3257 0001:00356732  3258 0001:0035673D  3259 0001:0035674A  3260 0001:00356758
+  3261 0001:00356762  3262 0001:0035676C  3263 0001:0035677C  3264 0001:00356789
+  3265 0001:00356792  3266 0001:003567A5  3267 0001:003567B5  3268 0001:003567C3
+  3272 0001:003567E2  3273 0001:00356817  3274 0001:00356831  3277 0001:0035683A
+  3278 0001:0035686A  3279 0001:00356878  3280 0001:00356886  3281 0001:00356894
+  3282 0001:003568A2  3283 0001:003568B0  3285 0001:003568BC  3288 0001:00356964
+  3290 0001:00356968  3291 0001:00356982  3292 0001:00356999  3294 0001:003569AB
+  3295 0001:003569BA  3297 0001:003569CC  3302 0001:003569D0  3303 0001:003569E3
+  3308 0001:003569E4  3309 0001:003569EF  3312 0001:003569F0  3314 0001:003569F3
+  3316 0001:003569FF  3317 0001:00356A1A  3318 0001:00356A35  3322 0001:00356A52
+  3323 0001:00356A6D  3324 0001:00356A88  3326 0001:00356AA3  3327 0001:00356AD2
+  3329 0001:00356AE1  3330 0001:00356AF8  3334 0001:00356B07  3335 0001:00356B17
+  3337 0001:00356B24  3340 0001:00356B38  3342 0001:00356B3C  3344 0001:00356B48
+  3345 0001:00356B67  3349 0001:00356B73  3350 0001:00356B92  3352 0001:00356B9B
+  3355 0001:00356BA0  3357 0001:00356BA4  3359 0001:00356BB0  3360 0001:00356BCF
+  3364 0001:00356BDB  3365 0001:00356BFA  3367 0001:00356C03  3370 0001:00356C08
+  3372 0001:00356C0C  3374 0001:00356C18  3375 0001:00356C37  3379 0001:00356C43
+  3380 0001:00356C62  3382 0001:00356C6B  3385 0001:00356C70  3387 0001:00356C73
+  3388 0001:00356C82  3392 0001:00356C84  3394 0001:00356C8A  3395 0001:00356C9A
+  3396 0001:00356CA5  3401 0001:00356CAC  3403 0001:00356CCF  3404 0001:00356CDB
+  3405 0001:00356CE7  3406 0001:00356CF7  3407 0001:00356D0F  3408 0001:00356D51
+  3409 0001:00356D5B  3410 0001:00356D6A  3414 0001:00356DDC  3416 0001:00356DF5
+  3417 0001:00356E30  3418 0001:00356E3B  3419 0001:00356E49  3426 0001:00356E94
+  3428 0001:00356EB5  3429 0001:00356EC5  3431 0001:00356ED5  3432 0001:00356EE4
+  3433 0001:00356EF2  3434 0001:00356F22  3435 0001:00356F52  3436 0001:00356F61
+  3437 0001:00356F70  3438 0001:00356F8C  3439 0001:00356FA1  3440 0001:00356FE8
+  3441 0001:0035700B  3443 0001:0035706E  3448 0001:0035707E  3449 0001:00357093
+  3450 0001:003570AE  3451 0001:003570BD  3452 0001:003570CB  3453 0001:003570DC
+  3455 0001:0035710C  3456 0001:00357138  3457 0001:00357160  3459 0001:003571CF
+  3462 0001:003571DF  3463 0001:003571ED  3464 0001:003571F4  3469 0001:003572F4
+  3470 0001:00357305  3475 0001:00357308  3477 0001:00357326  3478 0001:00357347
+  3479 0001:003573AA  3480 0001:003573DE  3481 0001:003573FB  3488 0001:00357468
+  3489 0001:00357496  3490 0001:003574B8  3491 0001:003574E4  3492 0001:00357502
+  3493 0001:0035750E  3494 0001:00357522  3495 0001:0035754E  3497 0001:0035756F
+  3498 0001:0035758D  3499 0001:00357599  3503 0001:003575B8  3504 0001:003575D6
+  3505 0001:003575E2  3507 0001:003575F9  3508 0001:00357607  3509 0001:00357618
+  3511 0001:00357624  3512 0001:0035762F  3513 0001:0035763C  3515 0001:0035764A
+  3516 0001:00357655  3522 0001:003576C4  3524 0001:003576E9  3526 0001:003576F6
+  3527 0001:00357708  3528 0001:0035771C  3530 0001:00357740  3531 0001:00357755
+  3532 0001:0035776A  3534 0001:00357790  3536 0001:003577B8  3538 0001:003577E5
+  3539 0001:003577F7  3543 0001:00357813  3544 0001:00357819  3546 0001:00357822
+  3547 0001:00357832  3548 0001:00357849  3549 0001:00357863  3550 0001:0035786A
+  3553 0001:00357883  3556 0001:003578AF  3557 0001:003578C2  3526 0001:003578C3
+  3558 0001:003578CA  3560 0001:003578DD  3561 0001:003578DF  3562 0001:003578ED
+  3563 0001:0035790D  3561 0001:00357913  3564 0001:00357916  3566 0001:0035791A
+  3567 0001:0035792A  3569 0001:00357931  3570 0001:00357933  3571 0001:00357941
+  3572 0001:00357951  3570 0001:00357957  3573 0001:0035795A  3575 0001:0035795E
+  3576 0001:0035796E  3577 0001:00357975  3581 0001:0035798C  3591 0001:00357A28
+  3593 0001:00357A4D  3594 0001:00357A62  3595 0001:00357A78  3596 0001:00357A7F
+  3597 0001:00357A89  3598 0001:00357AA2  3599 0001:00357ABB  3600 0001:00357AD4
+  3601 0001:00357AED  3602 0001:00357B05  3603 0001:00357B1E  3604 0001:00357B37
+  3605 0001:00357B50  3606 0001:00357B69  3607 0001:00357B82  3608 0001:00357B9D
+  3609 0001:00357BB6  3610 0001:00357BCF  3611 0001:00357BE8  3612 0001:00357C01
+  3613 0001:00357C14  3614 0001:00357C27  3615 0001:00357C3A  3616 0001:00357C4D
+  3617 0001:00357C55  3618 0001:00357C66  3620 0001:00357C88  3621 0001:00357C90
+  3622 0001:00357CB0  3621 0001:00357CEC  3623 0001:00357CEF  3624 0001:00357D27
+  3625 0001:00357D68  3627 0001:00357D72  3629 0001:00357DA4  3630 0001:00357DB1
+  3631 0001:00357E14  3632 0001:00357E21  3633 0001:00357E2E  3635 0001:00357E36
+  3636 0001:00357E40  3637 0001:00357E4A  3638 0001:00357E5D  3639 0001:00357E6A
+  3640 0001:00357E77  3641 0001:00357E84  3642 0001:00357E91  3643 0001:00357E9E
+  3644 0001:00357EAB  3645 0001:00357F0E  3646 0001:00357F22  3647 0001:00357F32
+  3648 0001:00357F42  3649 0001:00357F4F  3650 0001:00357F5C  3651 0001:00357F69
+  3652 0001:00357F76  3653 0001:00357F83  3654 0001:00357F90  3655 0001:00357FAE
+  3656 0001:00357FBF  3658 0001:00357FD2  3659 0001:00357FDF  3660 0001:00357FEC
+  3662 0001:00358009  3663 0001:00358010  3665 0001:0035801A  3666 0001:0035802B
+  3667 0001:0035803C  3668 0001:00358049  3669 0001:0035805A  3670 0001:0035806B
+  3671 0001:0035807C  3672 0001:00358089  3673 0001:00358092  3675 0001:003580A3
+  3676 0001:003580B0  3681 0001:003580BD  3682 0001:003580CA  3685 0001:003580DC
+  3687 0001:003580F1  3689 0001:003580FA  3690 0001:00358106  3691 0001:00358114
+  3692 0001:00358121  3693 0001:0035813F  3695 0001:0035815C  3696 0001:0035816F
+  3697 0001:003581AB  3698 0001:003581EB  3700 0001:00358229  3701 0001:00358235
+  3704 0001:00358249  3706 0001:00358298  3707 0001:003582E4  3710 0001:00358329
+  3711 0001:00358338  3712 0001:00358380  3713 0001:0035838C  3693 0001:0035838F
+  3714 0001:00358396  3715 0001:003583A4  3717 0001:003583B4  3718 0001:003583C1
+  3721 0001:003583CE  3722 0001:003583DB  3723 0001:003583E8  3724 0001:003583F5
+  3725 0001:00358400  3729 0001:00358412  3730 0001:0035841F  3733 0001:0035842C
+  3734 0001:00358439  3735 0001:00358446  3736 0001:00358453  3737 0001:0035845E
+  3739 0001:0035846E  3740 0001:00358478  3741 0001:00358484  3742 0001:0035848E
+  3743 0001:0035849B  3744 0001:003584A8  3745 0001:003584B5  3746 0001:003584C3
+  3747 0001:003584DD  3746 0001:003584F7  3748 0001:003584FA  3750 0001:00358503
+  3751 0001:00358510  3753 0001:0035851D  3754 0001:0035852D  3756 0001:00358540
+  3757 0001:0035854D  3758 0001:0035855A  3759 0001:00358579  3760 0001:00358587
+  3761 0001:0035858E  3762 0001:0035859B  3763 0001:003585A8  3764 0001:003585B5
+  3765 0001:003585C9  3766 0001:003585F1  3767 0001:003585FE  3768 0001:0035860B
+  3772 0001:00358619  3773 0001:00358628  3776 0001:0035864E  3777 0001:0035865F
+  3779 0001:00358672  3780 0001:00358691  3781 0001:003586B3  3782 0001:003586C0
+  3783 0001:003586CD  3784 0001:003586DA  3785 0001:003586E7  3786 0001:003586F4
+  3787 0001:00358701  3788 0001:0035870E  3789 0001:0035871B  3790 0001:00358728
+  3791 0001:00358746  3792 0001:00358764  3793 0001:00358771  3807 0001:0035877F
+  3808 0001:0035878C  3810 0001:00358797  3811 0001:003587A0  3812 0001:003587A9
+  3814 0001:003587BE  3816 0001:003587D1  3818 0001:003587E4  3819 0001:003587F2
+  3821 0001:003587FF  3822 0001:0035880C  3824 0001:00358824  3825 0001:00358843
+  3826 0001:00358860  3827 0001:0035886D  3828 0001:0035887B  3829 0001:00358882
+  3830 0001:0035888B  3831 0001:0035889B  3833 0001:003588A4  3834 0001:003588B2
+  3835 0001:003588BF  3837 0001:003588D4  3839 0001:003588EA  3841 0001:003588FD
+  3843 0001:00358910  3844 0001:0035891E  3846 0001:0035892B  3847 0001:00358938
+  3849 0001:00358950  3850 0001:0035896F  3851 0001:00358998  3852 0001:003589A5
+  3853 0001:003589B2  3854 0001:003589BF  3855 0001:003589CC  3856 0001:003589D9
+  3857 0001:003589E6  3858 0001:003589F3  3859 0001:00358A00  3860 0001:00358A0D
+  3861 0001:00358A1D  3862 0001:00358A2A  3863 0001:00358A33  3866 0001:00358A43
+  3868 0001:00358A4C  3869 0001:00358A5A  3870 0001:00358A67  3871 0001:00358A77
+  3872 0001:00358A84  3874 0001:00358A97  3877 0001:00358AAD  3880 0001:00358AC0
+  3882 0001:00358ACD  3883 0001:00358ADB  3884 0001:00358AE2  3885 0001:00358AEB
+  3886 0001:00358AF8  3887 0001:00358B17  3888 0001:00358B24  3889 0001:00358B34
+  3890 0001:00358B3B  3891 0001:00358B53  3892 0001:00358B6E  3893 0001:00358B7E
+  3898 0001:00358B91  3900 0001:00358BA4  3901 0001:00358BB1  3903 0001:00358BBE
+  3904 0001:00358BCB  3906 0001:00358C4F  3907 0001:00358C6E  3908 0001:00358C7B
+  3909 0001:00358C88  3910 0001:00358C95  3911 0001:00358CA2  3912 0001:00358CAF
+  3913 0001:00358CCD  3926 0001:00358CDB  3927 0001:00358CE8  3929 0001:00358CF3
+  3930 0001:00358D03  3931 0001:00358D10  3932 0001:00358D19  3933 0001:00358D29
+  3934 0001:00358D36  3935 0001:00358D46  3936 0001:00358D4F  3937 0001:00358D58
+  3938 0001:00358D61  3940 0001:00358D6A  3941 0001:00358D78  3942 0001:00358D85
+  3945 0001:00358D9A  3949 0001:00358DB0  3952 0001:00358E1D  3953 0001:00358E2B
+  3954 0001:00358E32  3955 0001:00358E3F  3956 0001:00358E4C  3957 0001:00358E59
+  3958 0001:00358E66  3959 0001:00358E7A  3960 0001:00358E87  3961 0001:00358E94
+  3962 0001:00358EA1  3963 0001:00358EAE  3964 0001:00358EBB  3965 0001:00358EE3
+  3966 0001:00358EF0  3967 0001:00358EF9  3968 0001:00358EFE  3970 0001:00358F12
+  3971 0001:00358F26  3972 0001:00358F3A  3973 0001:00358F4E  3974 0001:00358F62
+  3984 0001:00358F88  3985 0001:00358FA7  3986 0001:00358FB1  3988 0001:00358FE6
+  3989 0001:00358FFA  3990 0001:0035905D  3991 0001:0035906B  3992 0001:0035907B
+  3993 0001:0035908B  3994 0001:00359092  3995 0001:003590AA  3996 0001:003590BD
+  3997 0001:003590CD  3998 0001:003590DE  4000 0001:00359112  4004 0001:0035913D
+  4005 0001:0035915C  4006 0001:0035916A  4010 0001:00359178  4011 0001:00359197
+  4012 0001:003591A5  4013 0001:003591AF  4015 0001:003591E4  4016 0001:003591F8
+  4017 0001:00359245  4019 0001:00359253  4020 0001:00359267  4022 0001:0035928B
+  4023 0001:0035929B  4024 0001:003592A2  4025 0001:003592BA  4026 0001:003592CD
+  4027 0001:003592DE  4029 0001:0035930F  4033 0001:00359337  4034 0001:00359356
+  4036 0001:0035935F  4037 0001:00359377  4040 0001:0035938A  4052 0001:0035939F
+  4053 0001:003593AC  4054 0001:003593B9  4055 0001:003593D8  4056 0001:003593E5
+  4057 0001:00359418  4058 0001:00359454  4059 0001:00359463  4060 0001:00359477
+  4061 0001:003594A3  4062 0001:003594D3  4063 0001:003594E3  4064 0001:003594F1
+  4065 0001:00359505  4066 0001:0035950C  4072 0001:00359521  4073 0001:00359531
+  4075 0001:00359564  4076 0001:003595B5  4077 0001:003595C6  4078 0001:003595D7
+  4081 0001:003595E2  4083 0001:00359625  4084 0001:00359635  4085 0001:00359642
+  4086 0001:0035964F  4090 0001:00359664  4091 0001:00359686  4092 0001:00359693
+  4093 0001:003596A0  4094 0001:003596D3  4095 0001:003596E2  4096 0001:00359701
+  4097 0001:0035970E  4098 0001:0035971B  4099 0001:0035972C  4100 0001:0035973D
+  4101 0001:00359749  4102 0001:0035975A  4104 0001:00359793  4106 0001:003597A6
+  4107 0001:003597B6  4108 0001:003597D5  4110 0001:003597DF  4111 0001:003597EE
+  4113 0001:00359815  4114 0001:00359878  4118 0001:00359886  4119 0001:003598C2
+  4120 0001:003598D1  4122 0001:003598F8  4123 0001:0035995B  4125 0001:00359964
+  4126 0001:00359974  4127 0001:00359981  4131 0001:00359993  4132 0001:003599A2
+  4133 0001:003599DE  4135 0001:00359A0E  4136 0001:00359A3E  4142 0001:00359A50
+  4143 0001:00359A6E  4144 0001:00359A81  4145 0001:00359A88  4146 0001:00359AC4
+  4147 0001:00359AF0  4148 0001:00359B20  4149 0001:00359B2D  4152 0001:00359B3E
+  4153 0001:00359B4C  4155 0001:00359B5C  4156 0001:00359B70  4158 0001:00359B83
+  4159 0001:00359B93  4161 0001:00359BC6  4162 0001:00359C19  4165 0001:00359C24
+  4167 0001:00359C67  4168 0001:00359C77  4169 0001:00359C84  4173 0001:00359C93
+  4175 0001:00359CA0  4176 0001:00359CAF  4180 0001:00359CC8  4181 0001:00359CD8
+  4185 0001:00359CEC  4186 0001:00359CF3  4190 0001:00359D08  4192 0001:00359D11
+  4193 0001:00359D30  4196 0001:00359D40  4197 0001:00359D51  4198 0001:00359D5E
+  4199 0001:00359D6B  4200 0001:00359D9E  4201 0001:00359DAD  4202 0001:00359DCC
+  4203 0001:00359DD9  4204 0001:00359DE6  4205 0001:00359DF3  4206 0001:00359E00
+  4207 0001:00359E14  4208 0001:00359E20  4209 0001:00359E31  4210 0001:00359E42
+  4211 0001:00359E53  4213 0001:00359E8C  4215 0001:00359E9F  4216 0001:00359EAF
+  4217 0001:00359ECE  4219 0001:00359ED8  4220 0001:00359EE7  4222 0001:00359F0E
+  4223 0001:00359F71  4227 0001:00359F7F  4228 0001:00359FBB  4229 0001:00359FCA
+  4231 0001:00359FF1  4232 0001:0035A054  4234 0001:0035A05D  4235 0001:0035A06D
+  4236 0001:0035A08C  4237 0001:0035A099  4241 0001:0035A0AB  4242 0001:0035A0E7
+  4244 0001:0035A12A  4245 0001:0035A15A  4251 0001:0035A16C  4252 0001:0035A18A
+  4253 0001:0035A191  4254 0001:0035A1CD  4255 0001:0035A1F9  4256 0001:0035A229
+  4257 0001:0035A236  4260 0001:0035A247  4261 0001:0035A255  4263 0001:0035A265
+  4264 0001:0035A279  4267 0001:0035A28C  4268 0001:0035A29C  4270 0001:0035A2CF
+  4271 0001:0035A322  4274 0001:0035A32D  4276 0001:0035A370  4277 0001:0035A380
+  4278 0001:0035A38D  4282 0001:0035A39C  4285 0001:0035A3A9  4286 0001:0035A3B0
+  4290 0001:0035A3C5  4291 0001:0035A3CC  4292 0001:0035A3D9  4293 0001:0035A3E6
+  4294 0001:0035A419  4295 0001:0035A455  4296 0001:0035A464  4298 0001:0035A478
+  4299 0001:0035A4A4  4300 0001:0035A4D3  4301 0001:0035A4E0  4304 0001:0035A4F1
+  4305 0001:0035A4FF  4307 0001:0035A50F  4308 0001:0035A523  4309 0001:0035A52A
+  4311 0001:0035A53A  4314 0001:0035A55C  4316 0001:0035A56D  4317 0001:0035A580
+  4318 0001:0035A58F  4320 0001:0035A5A1  4324 0001:0035A5AF  4325 0001:0035A5C2
+  4328 0001:0035A5D5  4329 0001:0035A5F1  4330 0001:0035A604  4331 0001:0035A617
+  4332 0001:0035A693  4334 0001:0035A6EF  4337 0001:0035A753  4340 0001:0035A75C
+  4341 0001:0035A776  4343 0001:0035A786  4344 0001:0035A793  4345 0001:0035A7A0
+  4346 0001:0035A7AB  4371 0001:0035A7BB  4372 0001:0035A7CC  4373 0001:0035A7DD
+  4374 0001:0035A7EB  4378 0001:0035AD2C  4380 0001:0035AD2F  4381 0001:0035AD3C
+  4385 0001:0035AD40  4387 0001:0035AD43  4388 0001:0035AD50  4392 0001:0035AD54
+  4394 0001:0035AD5A  4397 0001:0035AD6E  4398 0001:0035AD73  4401 0001:0035AD78
+  4409 0001:0035AD80  4410 0001:0035ADDD  4411 0001:0035ADE5  4412 0001:0035ADED
+  4413 0001:0035ADF5  4414 0001:0035ADFD  4415 0001:0035AE05  4416 0001:0035AE0D
+  4418 0001:0035AE20  4420 0001:0035AE37  4421 0001:0035AE48  4423 0001:0035AE4D
+  4424 0001:0035AE5E  4425 0001:0035AEA2  4426 0001:0035AEAF  4427 0001:0035AEE2
+  4429 0001:0035AEEF  4431 0001:0035AF00  4432 0001:0035AF1F  4433 0001:0035AF64
+  4435 0001:0035AF6C  4437 0001:0035AF81  4438 0001:0035AFB7  4439 0001:0035AFFB
+  4440 0001:0035B00F  4441 0001:0035B02E  4442 0001:0035B053  4444 0001:0035B05F
+  4445 0001:0035B06B  4446 0001:0035B077  4448 0001:0035B083  4449 0001:0035B096
+  4451 0001:0035B0A9  4452 0001:0035B0D9  4453 0001:0035B109  4455 0001:0035B125
+  4457 0001:0035B162  4458 0001:0035B172  4460 0001:0035B189  4462 0001:0035B19C
+  4463 0001:0035B1AA  4465 0001:0035B1EF  4466 0001:0035B205  4467 0001:0035B21E
+  4468 0001:0035B22F  4469 0001:0035B245  4470 0001:0035B25B  4471 0001:0035B28E
+  4472 0001:0035B2A4  4473 0001:0035B2D0  4474 0001:0035B2E7  4475 0001:0035B322
+  4476 0001:0035B336  4478 0001:0035B33B  4480 0001:0035B380  4481 0001:0035B396
+  4482 0001:0035B3AF  4483 0001:0035B3C0  4484 0001:0035B3D6  4485 0001:0035B3EC
+  4486 0001:0035B41F  4487 0001:0035B435  4488 0001:0035B461  4489 0001:0035B478
+  4490 0001:0035B4B3  4491 0001:0035B4C7  4493 0001:0035B4CC  4495 0001:0035B511
+  4496 0001:0035B527  4497 0001:0035B540  4498 0001:0035B551  4499 0001:0035B567
+  4500 0001:0035B57D  4501 0001:0035B5B0  4502 0001:0035B5C6  4503 0001:0035B5F2
+  4504 0001:0035B609  4505 0001:0035B644  4506 0001:0035B658  4508 0001:0035B65D
+  4512 0001:0035B71A  4513 0001:0035B722  4514 0001:0035B736  4516 0001:0035B74B
+  4517 0001:0035B767  4519 0001:0035B774  4520 0001:0035B790  4522 0001:0035B792
+  4514 0001:0035B793  4523 0001:0035B798  4524 0001:0035B7AB  4526 0001:0035B7B8
+  4527 0001:0035B7D9  4528 0001:0035B7EB  4529 0001:0035B802  4530 0001:0035B81C
+  4531 0001:0035B833  4532 0001:0035B86E  4536 0001:0035B888  4538 0001:0035B89D
+  4539 0001:0035B8CE  4540 0001:0035B8E4  4541 0001:0035B8FD  4542 0001:0035B934
+  4544 0001:0035B976  4545 0001:0035B98C  4546 0001:0035B9A5  4547 0001:0035B9BB
+  4548 0001:0035B9EE  4549 0001:0035BA04  4550 0001:0035BA30  4551 0001:0035BA47
+  4552 0001:0035BA82  4556 0001:0035BA9B  4557 0001:0035BAAF  4558 0001:0035BAC0
+  4559 0001:0035BAD6  4560 0001:0035BAEF  4561 0001:0035BB06  4562 0001:0035BB3D
+  4564 0001:0035BB51  4568 0001:0035BB5D  4569 0001:0035BB94  4571 0001:0035BBB1
+  4572 0001:0035BBC7  4573 0001:0035BBE0  4574 0001:0035BBF6  4575 0001:0035BC29
+  4576 0001:0035BC3F  4577 0001:0035BC6B  4578 0001:0035BC82  4579 0001:0035BCB7
+  4583 0001:0035BCD0  4584 0001:0035BCF9  4585 0001:0035BD0F  4586 0001:0035BD28
+  4587 0001:0035BD38  4592 0001:0035BD69  4453 0001:0035BD6A  4593 0001:0035BD73
+  4600 0001:0035C1D8  4605 0001:0035C223  4606 0001:0035C22B  4607 0001:0035C235
+  4608 0001:0035C247  4610 0001:0035C25A  4611 0001:0035C268  4613 0001:0035C290
+  4614 0001:0035C2A6  4615 0001:0035C2BF  4616 0001:0035C2D6  4618 0001:0035C2DB
+  4620 0001:0035C303  4621 0001:0035C319  4622 0001:0035C332  4623 0001:0035C349
+  4625 0001:0035C34E  4629 0001:0035C428  4630 0001:0035C430  4632 0001:0035C445
+  4633 0001:0035C459  4634 0001:0035C475  4636 0001:0035C482  4637 0001:0035C49E
+  4639 0001:0035C4A0  4630 0001:0035C4A1  4640 0001:0035C4A6  4641 0001:0035C4B9
+  4643 0001:0035C4C3  4644 0001:0035C4E2  4645 0001:0035C4F3  4646 0001:0035C509
+  4647 0001:0035C522  4651 0001:0035C53E  4653 0001:0035C55E  4658 0001:0035C5D0
+  4662 0001:0035C62D  4666 0001:0035C681  4670 0001:0035C6D2  4675 0001:0035C73F
+  4677 0001:0035C752  4678 0001:0035C768  4682 0001:0035C786  4683 0001:0035C7A9
+  4684 0001:0035C7BF  4685 0001:0035C7D8  4686 0001:0035C7E8  4690 0001:0035C813
+  4607 0001:0035C814  4691 0001:0035C81D  4698 0001:0035C9AC  4700 0001:0035C9CF
+  4701 0001:0035C9E0  4702 0001:0035C9F0  4704 0001:0035C9F6  4705 0001:0035CA07
+  4707 0001:0035CA16  4708 0001:0035CA36  4710 0001:0035CA49  4712 0001:0035CA91
+  4713 0001:0035CA9F  4714 0001:0035CAA3  4715 0001:0035CAD3  4716 0001:0035CAD9
+  4719 0001:0035CB15  4720 0001:0035CB58  4721 0001:0035CB9D  4722 0001:0035CBA1
+  4714 0001:0035CBA4  4725 0001:0035CBAF  4726 0001:0035CBD2  4727 0001:0035CBEA
+  4729 0001:0035CBFD  4730 0001:0035CC1F  4731 0001:0035CC56  4732 0001:0035CC78
+  4733 0001:0035CCAF  4734 0001:0035CCCC  4737 0001:0035CCE7  4739 0001:0035CCF9
+  4741 0001:0035CD2E  4742 0001:0035CD3C  4743 0001:0035CD40  4744 0001:0035CD5D
+  4745 0001:0035CD63  4748 0001:0035CD89  4749 0001:0035CDB9  4750 0001:0035CDEB
+  4751 0001:0035CDEF  4743 0001:0035CDF2  4754 0001:0035CDFD  4755 0001:0035CE0D
+  4756 0001:0035CE25  4758 0001:0035CE38  4759 0001:0035CE48  4761 0001:0035CE59
+  4768 0001:0035CF5C  4770 0001:0035CF7F  4771 0001:0035CF88  4774 0001:0035CF99
+  4775 0001:0035CFB8  4779 0001:0035CFDA  4782 0001:0035D014  4794 0001:0035D017
+  4795 0001:0035D024  4797 0001:0035D02F  4800 0001:0035D034  4801 0001:0035D058
+  4802 0001:0035D065  4803 0001:0035D072  4804 0001:0035D07F  4805 0001:0035D08C
+  4806 0001:0035D099  4807 0001:0035D0A6  4808 0001:0035D0B3  4809 0001:0035D0C0
+  4810 0001:0035D0CF  4811 0001:0035D0DE  4812 0001:0035D0ED  4813 0001:0035D0FC
+  4814 0001:0035D109  4815 0001:0035D118  4816 0001:0035D127  4817 0001:0035D136
+  4818 0001:0035D145  4819 0001:0035D154  4820 0001:0035D163  4821 0001:0035D172
+  4822 0001:0035D181  4824 0001:0035D19A  4825 0001:0035D1AA  4829 0001:0035D1BC
+  4830 0001:0035D1CC  4832 0001:0035D1DC  4833 0001:0035D1F8  4834 0001:0035D214
+  4836 0001:0035D21F  4837 0001:0035D22C  4839 0001:0035D239  4842 0001:0035D28C
+  4843 0001:0035D28F  4845 0001:0035D2A2  4846 0001:0035D2AF  4847 0001:0035D2BC
+  4849 0001:0035D2D9  4853 0001:0035D2DC  4855 0001:0035D2DF  4856 0001:0035D2E7
+  4857 0001:0035D2ED  4861 0001:0035D2F4  4863 0001:0035D2F7  4864 0001:0035D2FC
+  4865 0001:0035D302  4870 0001:0035D308  4871 0001:0035D30F  4872 0001:0035D31D
+  4876 0001:0035D320  4878 0001:0035D32D  4880 0001:0035D333  4882 0001:0035D339
+  4883 0001:0035D35E  4885 0001:0035D365  4887 0001:0035D36B  4888 0001:0035D390
+  4891 0001:0035D395  4892 0001:0035D39B  4893 0001:0035D3C0  4895 0001:0035D3C5
+  4900 0001:0035D3CC  4901 0001:0035D3DE  4902 0001:0035D3EE  4907 0001:0035D40C
+  4908 0001:0035D411  4909 0001:0035D413  4910 0001:0035D431  4917 0001:0035D438
+  4918 0001:0035D465  4919 0001:0035D46D  4920 0001:0035D479  4921 0001:0035D490
+  4922 0001:0035D4A2  4923 0001:0035D4EA  4921 0001:0035D4EB  4924 0001:0035D4EE
+  4925 0001:0035D4F9  4930 0001:0035D538  4931 0001:0035D53F  4932 0001:0035D541
+  4933 0001:0035D54C  4936 0001:0035D550  4937 0001:0035D570  4938 0001:0035D57A
+  4939 0001:0035D580  4940 0001:0035D58C
+
+Line numbers for fLabs(fLabs.pas) segment .itext
+
+  4942 0002:00001A4C  4943 0002:00001A66  4945 0002:00001A70
+
+Line numbers for fPtDemo(fPtDemo.pas) segment .text
+
+    42 0001:0035D8C8    43 0001:0035D8CF    44 0001:0035D8F0    45 0001:0035D907
+    48 0001:0035D915    49 0001:0035D920    52 0001:0035D939    54 0001:0035D949
+    60 0001:0035D950    61 0001:0035D96E    62 0001:0035D975    63 0001:0035D986
+    64 0001:0035D996    65 0001:0035D99D    66 0001:0035D9A2    68 0001:0035D9C3
+    69 0001:0035D9EE    70 0001:0035D9F4    66 0001:0035D9F7    72 0001:0035D9FC
+    75 0001:0035DA15    77 0001:0035DA4D    78 0001:0035DA5B    79 0001:0035DA7F
+    80 0001:0035DA9D    81 0001:0035DAA6    82 0001:0035DAAF    83 0001:0035DAB9
+    84 0001:0035DAC1    85 0001:0035DACB    89 0001:0035DAF0    90 0001:0035DAF7
+    91 0001:0035DAFC    95 0001:0035DB00    96 0001:0035DB05   108 0001:0035DB08
+   109 0001:0035DB2C   110 0001:0035DB34   111 0001:0035DB3C   113 0001:0035DB52
+   114 0001:0035DB61   115 0001:0035DB77   116 0001:0035DB82   117 0001:0035DB90
+   118 0001:0035DBA2   119 0001:0035DBA7   122 0001:0035DBAC   124 0001:0035DBB3
+   126 0001:0035DBBF   127 0001:0035DBCA   129 0001:0035DBD5   130 0001:0035DBED
+   132 0001:0035DC14   127 0001:0035DC15   133 0001:0035DC18   134 0001:0035DC1B
+   135 0001:0035DC28   136 0001:0035DC35   137 0001:0035DC4F   138 0001:0035DC69
+   141 0001:0035DC78   142 0001:0035DC7B   143 0001:0035DCA1   144 0001:0035DCAE
+   147 0001:0035DCB3   148 0001:0035DCD1   151 0001:0035DCFF   152 0001:0035DD07
+   155 0001:0035DD17   156 0001:0035DD2A   157 0001:0035DD3B   159 0001:0035DDFE
+
+Line numbers for fAbout(fAbout.pas) segment .text
+
+    44 0001:0035E0A4    45 0001:0035E0A8    46 0001:0035E0BF    47 0001:0035E0CD
+    48 0001:0035E0D5    49 0001:0035E0E8    50 0001:0035E0FB    51 0001:0035E10E
+    52 0001:0035E121    54 0001:0035E139    56 0001:0035E149    59 0001:0035E14C
+    61 0001:0035E173    63 0001:0035E183    64 0001:0035E1BB    65 0001:0035E1E3
+    66 0001:0035E20B    67 0001:0035E233    68 0001:0035E25B    69 0001:0035E283
+    70 0001:0035E2AB    71 0001:0035E2EC    73 0001:0035E44A
+
+Line numbers for fxBroker(fxBroker.pas) segment .text
+
+    46 0001:0035E6CC    47 0001:0035E6E4    48 0001:0035E6FB    49 0001:0035E709
+    52 0001:0035E711    53 0001:0035E722    54 0001:0035E72D    55 0001:0035E743
+    56 0001:0035E756    57 0001:0035E791    60 0001:0035E7A9    62 0001:0035E7B9
+    65 0001:0035E7FC    66 0001:0035E815    67 0001:0035E82B    68 0001:0035E83E
+    69 0001:0035E84E    70 0001:0035E880    73 0001:0035E8C4    74 0001:0035E8DD
+    75 0001:0035E8F7    76 0001:0035E90A    77 0001:0035E91A    78 0001:0035E94C
+    81 0001:0035E990    82 0001:0035E9A6    83 0001:0035E9C6    87 0001:0035E9E8
+    88 0001:0035E9ED    91 0001:0035E9F0    92 0001:0035E9F3    93 0001:0035EA05
+    97 0001:0035EA08    98 0001:0035EA0B   100 0001:0035EA11   101 0001:0035EA16
+   103 0001:0035EA1B   113 0001:0035EA20   115 0001:0035EA46   118 0001:0035EA60
+   119 0001:0035EA69   120 0001:0035EA79   121 0001:0035EA82   122 0001:0035EA95
+   125 0001:0035EA9F   127 0001:0035EAC8   129 0001:0035EBA6
+
+Line numbers for fxLists(fxLists.pas) segment .text
+
+    32 0001:0035ED2C    33 0001:0035ED33    34 0001:0035ED4A    35 0001:0035ED58
+    38 0001:0035ED60    39 0001:0035ED71    41 0001:0035ED8E    42 0001:0035EDA8
+    45 0001:0035EDC0    47 0001:0035EDD0    51 0001:0035EDD4    52 0001:0035EDD7
+    54 0001:0035EDDD    55 0001:0035EDE2    57 0001:0035EDE7    59 0001:0035EE19
+
+Line numbers for fxServer(fxServer.pas) segment .text
+
+    36 0001:0035F004    37 0001:0035F008    38 0001:0035F01F    39 0001:0035F02D
+    40 0001:0035F035    42 0001:0035F04D    44 0001:0035F05D    48 0001:0035F060
+    49 0001:0035F071    53 0001:0035F074    54 0001:0035F077    56 0001:0035F07D
+    57 0001:0035F082    59 0001:0035F087    61 0001:0035F0B9
+
+Line numbers for fSplash(fSplash.pas) segment .text
+
+    35 0001:0035F2A4    36 0001:0035F2C1    38 0001:0035F2FE    39 0001:0035F33E
+    40 0001:0035F34C    42 0001:0035F3E6
+
+Line numbers for fLabInfo(fLabInfo.pas) segment .text
+
+    38 0001:0035F5E0    39 0001:0035F5E4    40 0001:0035F5E8    41 0001:0035F601
+    42 0001:0035F60F    43 0001:0035F619    44 0001:0035F626    45 0001:0035F634
+    47 0001:0035F645    49 0001:0035F657    53 0001:0035F660    54 0001:0035F667
+    55 0001:0035F66C    59 0001:0035F670    60 0001:0035F673    61 0001:0035F683
+    62 0001:0035F690    63 0001:0035F6A0    67 0001:0035F6A4    68 0001:0035F6AD
+    69 0001:0035F6C4    72 0001:0035F6CC    74 0001:0035F6E3    75 0001:0035F719
+    77 0001:0035F769
+
+Line numbers for fBAOptionsDiagnoses(BA\fBAOptionsDiagnoses.pas) segment .text
+
+   102 0001:0035FC34   103 0001:0035FC3E   104 0001:0035FC54   107 0001:0035FC5B
+   108 0001:0035FC63   111 0001:0035FC6E   112 0001:0035FC77   113 0001:0035FC80
+   115 0001:0035FC89   116 0001:0035FC90   119 0001:0035FC9A   122 0001:0035FCA4
+   123 0001:0035FCA7   124 0001:0035FCAE   125 0001:0035FCB5   127 0001:0035FCC9
+   128 0001:0035FCD0   129 0001:0035FCDD   130 0001:0035FCFE   131 0001:0035FD1F
+   134 0001:0035FD40   135 0001:0035FD4E   144 0001:0035FD50   145 0001:0035FD74
+   146 0001:0035FD95   147 0001:0035FDA4   149 0001:0035FDBB   150 0001:0035FDCA
+   151 0001:0035FDD4   152 0001:0035FE03   153 0001:0035FE1D   154 0001:0035FE24
+   156 0001:0035FE38   157 0001:0035FE52   154 0001:0035FE53   158 0001:0035FE56
+   164 0001:0035FEC4   165 0001:0035FEE5   167 0001:0035FF21   168 0001:0035FF43
+   169 0001:0035FF60   170 0001:0035FFB7   165 0001:0035FFB8   171 0001:0035FFBF
+   177 0001:00360018   178 0001:00360047   179 0001:00360058   180 0001:00360060
+   182 0001:00360074   183 0001:00360083   185 0001:003600C7   180 0001:003600C8
+   186 0001:003600CB   187 0001:003600CC   189 0001:003600E2   193 0001:0036010B
+   194 0001:00360167   196 0001:00360198   197 0001:003601B2   199 0001:003601B8
+   201 0001:003601CE   187 0001:003601CF   202 0001:003601D6   209 0001:00360240
+   211 0001:00360261   212 0001:00360278   213 0001:0036028D   214 0001:003602C3
+   216 0001:003602D5   217 0001:003602E4   219 0001:003602FE   223 0001:0036035A
+   224 0001:0036038B   226 0001:00360403   227 0001:0036042B   229 0001:00360499
+   230 0001:003604E4   233 0001:00360570   235 0001:00360601   217 0001:00360602
+   237 0001:00360609   244 0001:0036068C   246 0001:003606AD   247 0001:003606B5
+   248 0001:003606C1   249 0001:003606CA   251 0001:003606D4   252 0001:003606E5
+   253 0001:003606EF   254 0001:00360713   256 0001:00360726   257 0001:00360766
+   258 0001:0036078B   260 0001:003607C0   261 0001:003607D6   262 0001:003607E7
+   264 0001:00360821   267 0001:00360843   269 0001:00360871   270 0001:00360879
+   271 0001:00360881   272 0001:0036089C   276 0001:00360958   278 0001:00360972
+   280 0001:0036098C   282 0001:0036099D   283 0001:003609BC   284 0001:003609DE
+   286 0001:003609E0   278 0001:003609E1   287 0001:003609E4   292 0001:00360A10
+   293 0001:00360A1F   300 0001:00360A20   302 0001:00360A41   303 0001:00360A4F
+   304 0001:00360A56   306 0001:00360A7A   308 0001:00360A8C   309 0001:00360AB5
+   311 0001:00360ABF   313 0001:00360ACA   314 0001:00360ADE   315 0001:00360AE5
+   317 0001:00360B04   304 0001:00360B07   318 0001:00360B10   323 0001:00360B3C
+   324 0001:00360B41   327 0001:00360B44   329 0001:00360B47   332 0001:00360B55
+   333 0001:00360B6C   336 0001:00360B76   338 0001:00360B84   339 0001:00360B91
+   341 0001:00360B9A   342 0001:00360BB1   344 0001:00360BBB   345 0001:00360BC2
+   352 0001:00360BC4   354 0001:00360BE7   356 0001:00360C06   358 0001:00360C1B
+   359 0001:00360C43   361 0001:00360C55   363 0001:00360C77   364 0001:00360C84
+   367 0001:00360D03   370 0001:00360D4C   354 0001:00360D4D   371 0001:00360D56
+   372 0001:00360D63   373 0001:00360D71   374 0001:00360D8C   379 0001:00360E48
+   381 0001:00360E4E   382 0001:00360E55   384 0001:00360E5C   386 0001:00360E62
+   387 0001:00360E71   388 0001:00360E7D   391 0001:00360E8B   393 0001:00360E98
+   394 0001:00360E99   396 0001:00360EA7   389 0001:00360EA8   398 0001:00360EB0
+   401 0001:00360EBC   402 0001:00360EC9   403 0001:00360ED7   404 0001:00360EF2
+   407 0001:00360EF8   409 0001:00360EFB   410 0001:00360F0D   413 0001:00360F1C
+   414 0001:00360F2E   416 0001:00360F3D   418 0001:00360F4A   422 0001:00360F4C
+   424 0001:00360F51   426 0001:00360F69   428 0001:00360F7A   429 0001:00360F87
+   432 0001:00360F89   433 0001:00360F96   424 0001:00360F97   434 0001:00360F9A
+   437 0001:00360FA0   439 0001:00360FA3   440 0001:00360FB5   441 0001:00360FC4
+   444 0001:00360FC8   446 0001:00360FDF   447 0001:00360FF1   448 0001:00361010
+   449 0001:0036101E   452 0001:00361040   454 0001:00361043   455 0001:0036104D
+   456 0001:00361054   459 0001:00361058   460 0001:0036106D   462 0001:00361076
+   466 0001:00361089   467 0001:003610D5   470 0001:003610DD   476 0001:00361200
+   477 0001:00361205   483 0001:00361208   484 0001:00361235   485 0001:00361239
+   486 0001:00361254   488 0001:0036128C   489 0001:00361290   490 0001:00361292
+   485 0001:00361293   491 0001:00361296   499 0001:003612CC   500 0001:003612EF
+   501 0001:003612FD   502 0001:00361304   503 0001:00361318   505 0001:00361327
+   507 0001:0036133D   509 0001:0036137A   510 0001:003613DA   513 0001:003613F2
+   514 0001:00361416   505 0001:00361417   516 0001:00361420   522 0001:00361484
+   525 0001:003614A1   527 0001:003614BC   528 0001:003614E7   529 0001:003614F4
+   525 0001:003614F5   533 0001:003614F8   535 0001:00361501   536 0001:00361510
+   537 0001:0036151C   539 0001:00361520   540 0001:0036152E   537 0001:0036152F
+   542 0001:00361533   545 0001:0036153F   546 0001:0036154F   547 0001:00361560
+   548 0001:0036157E   555 0001:003615AC   557 0001:003615CF   559 0001:003615EE
+   560 0001:00361616   562 0001:00361628   564 0001:0036164A   565 0001:00361657
+   568 0001:003616D6   570 0001:0036171F   557 0001:00361720   571 0001:00361729
+   572 0001:00361736   573 0001:00361744   575 0001:0036175F   579 0001:00361818
+   581 0001:0036181B   582 0001:00361828   583 0001:00361835   584 0001:00361843
+   587 0001:00361848   588 0001:0036184B   589 0001:00361852   590 0001:00361873
+   591 0001:00361894   592 0001:003618B5   598 0001:003618B8   600 0001:003618D5
+   602 0001:003618F0   604 0001:00361904   605 0001:0036192F   607 0001:0036193C
+   600 0001:0036193D   608 0001:00361940   613 0001:0036196C   615 0001:00361991
+   617 0001:003619B6   619 0001:003619CB   621 0001:003619DF   623 0001:00361A29
+   624 0001:00361A35   626 0001:00361A37   619 0001:00361A38   628 0001:00361A3B
+   615 0001:00361A3E   629 0001:00361A47
+
+Line numbers for fBAOptionsDiagnoses(BA\fBAOptionsDiagnoses.pas) segment .itext
+
+   632 0002:00001A88   633 0002:00001AA6   634 0002:00001AAF   636 0002:00001AB6
+   637 0002:00001AC7   638 0002:00001AD8   639 0002:00001AE9   640 0002:00001AFA
+   641 0002:00001B0B   642 0002:00001B1C   644 0002:00001B2D   645 0002:00001B37
+   646 0002:00001B41   647 0002:00001B4B   648 0002:00001B55   649 0002:00001B5F
+   650 0002:00001B69   652 0002:00001B73
+
+Line numbers for uOptions(Options\uOptions.pas) segment .text
+
+    44 0001:00361B2C    45 0001:00361B4A    46 0001:00361B4C    47 0001:00361B5F
+    48 0001:00361B72    49 0001:00361B85    50 0001:00361B96    56 0001:00361BF0
+    57 0001:00361BFA    59 0001:00361C16    60 0001:00361C1C    62 0001:00361C1E
+    63 0001:00361C38    64 0001:00361C4A    65 0001:00361C52    66 0001:00361C5A
+    67 0001:00361C62    68 0001:00361C6A    70 0001:00361C6E    71 0001:00361C73
+    73 0001:00361C93    74 0001:00361C99    79 0001:00361CBC    80 0001:00361CE7
+    81 0001:00361CEC    82 0001:00361D02    83 0001:00361D0D    85 0001:00361D21
+    86 0001:00361D30    87 0001:00361D3C    88 0001:00361D40    90 0001:00361D45
+    92 0001:00361D51    93 0001:00361D53    95 0001:00361D58    96 0001:00361D6B
+    97 0001:00361D79    99 0001:00361D89   100 0001:00361D9D   102 0001:00361DBF
+   103 0001:00361DE4   105 0001:00361E12   106 0001:00361E3D   107 0001:00361E45
+   108 0001:00361E49   109 0001:00361E50   110 0001:00361E5F   112 0001:00361E61
+   113 0001:00361E6D   117 0001:00361E76   118 0001:00361E89   119 0001:00361E97
+   121 0001:00361EA7   122 0001:00361ECC   124 0001:00361EFA   125 0001:00361F25
+   126 0001:00361F31   127 0001:00361F39   131 0001:00361F43   132 0001:00361F56
+   133 0001:00361F64   135 0001:00361F74   136 0001:00361F99   138 0001:00361FC7
+   139 0001:00361FF2   140 0001:00361FFA   143 0001:00361FFC   144 0001:00362004
+   146 0001:00362008   150 0001:00362064   151 0001:00362081   153 0001:00362085
+   154 0001:0036208A   155 0001:003620B5   157 0001:003620BD   159 0001:003620C7
+   160 0001:003620CC   161 0001:003620F7   163 0001:003620FD   167 0001:00362194
+   170 0001:003621B0   171 0001:003621B7   172 0001:003621DD   173 0001:003621E1
+   175 0001:00362209   176 0001:00362215   178 0001:0036222D   184 0001:00362298
+   187 0001:003622A2   189 0001:003622A7   190 0001:003622B5   192 0001:003622BE
+   193 0001:003622C3   194 0001:003622D6   198 0001:003622E2   199 0001:003622EB
+   200 0001:003622F4   202 0001:00362300   204 0001:00362306   205 0001:0036230D
+   207 0001:00362323   209 0001:00362326   216 0001:0036235C   217 0001:00362387
+   218 0001:003623AC   220 0001:003623C4   221 0001:003623D7   222 0001:003623EA
+   223 0001:00362406   224 0001:00362419   225 0001:0036242C   226 0001:00362448
+   227 0001:0036245B   228 0001:00362465   229 0001:00362483   232 0001:003624D7
+   233 0001:003624E6   235 0001:0036251F   236 0001:0036252E   239 0001:00362567
+   242 0001:00362573   243 0001:0036257F   249 0001:0036264C   250 0001:0036268A
+   251 0001:0036269D   252 0001:003626A8   253 0001:003626B7   256 0001:003626C5
+   257 0001:003626E0   258 0001:003626FB   259 0001:00362716   260 0001:00362720
+   261 0001:0036272B   262 0001:00362736   263 0001:00362741   264 0001:0036274B
+   265 0001:00362776   267 0001:003627A1   269 0001:003627BD   271 0001:003627CD
+   273 0001:003628A6
+
+Line numbers for fOptionsReportsDefault(Options\fOptionsReportsDefault.pas) segment .text
+
+    63 0001:00362C84    64 0001:00362C92    65 0001:00362CA9    66 0001:00362CAD
+    69 0001:00362CBB    70 0001:00362CC3    73 0001:00362CCF    74 0001:00362CD9
+    75 0001:00362CE3    77 0001:00362CED    78 0001:00362CF5    79 0001:00362D00
+    82 0001:00362D1B    84 0001:00362D2B    89 0001:00362D34    90 0001:00362D55
+    92 0001:00362DA0    93 0001:00362DA7    96 0001:00362DAC    98 0001:00362DE8
+    99 0001:00362DFB   102 0001:00362E00   103 0001:00362E0E   104 0001:00362E1C
+   105 0001:00362E2A   106 0001:00362E4A   113 0001:00362EB4   114 0001:00362EBC
+   115 0001:00362EC1   116 0001:00362ECD   118 0001:00362EDA   119 0001:00362EE9
+   120 0001:00362EFD   122 0001:00362F12   126 0001:00362F1B   127 0001:00362F2C
+   128 0001:00362F3D   130 0001:00362F59   135 0001:00363138   136 0001:0036313D
+   143 0001:00363140   144 0001:00363160   145 0001:00363172   146 0001:0036317B
+   148 0001:0036318A   149 0001:0036319D   153 0001:003631A2   154 0001:003631E1
+   155 0001:00363220   162 0001:0036326F   163 0001:00363274   164 0001:00363282
+   165 0001:00363290   166 0001:003632A9   167 0001:003632F3   168 0001:003632FB
+   169 0001:00363300   170 0001:0036331C   171 0001:00363338   172 0001:00363341
+   173 0001:0036334A   174 0001:00363353   175 0001:0036335A   176 0001:00363366
+   178 0001:00363373   179 0001:00363382   180 0001:00363396   183 0001:003633AB
+   189 0001:00363580   190 0001:0036359C   193 0001:003635AF   194 0001:003635BD
+   196 0001:003635CF   197 0001:003635E2   199 0001:003635F2   201 0001:00363605
+   202 0001:00363610   203 0001:00363612   205 0001:00363618   206 0001:0036362B
+   208 0001:00363647   209 0001:0036364D   211 0001:00363667   212 0001:0036367A
+   215 0001:00363696   218 0001:0036369D   223 0001:0036371C   224 0001:0036373D
+   225 0001:00363779   226 0001:003637B5   228 0001:003637E5   233 0001:003638B8
+   235 0001:003638BD   238 0001:003638CB   243 0001:003638CC   245 0001:003638D1
+   248 0001:003638DF   253 0001:003638E0   255 0001:003638E5   258 0001:003638F3
+   263 0001:003638F4   264 0001:0036391D   265 0001:00363926   266 0001:0036393D
+   267 0001:00363982   268 0001:0036399E   269 0001:003639E3   270 0001:003639FF
+   272 0001:00363A09   273 0001:00363A21   275 0001:00363A28   276 0001:00363A38
+   277 0001:00363A48   279 0001:00363A59   280 0001:00363A69   281 0001:00363A76
+   282 0001:00363A83   283 0001:00363A93   284 0001:00363AA0   285 0001:00363AAD
+   286 0001:00363AC1   287 0001:00363ACF   288 0001:00363ADC   289 0001:00363AE9
+   290 0001:00363AFD   291 0001:00363B0B   293 0001:00363B18   302 0001:00363C10
+   303 0001:00363C31   305 0001:00363C45   306 0001:00363C58   307 0001:00363C69
+   308 0001:00363C77   309 0001:00363C82   312 0001:00363C87   313 0001:00363C8F
+   314 0001:00363C9D   316 0001:00363CAD   317 0001:00363CBA   318 0001:00363CCD
+   319 0001:00363CDE   320 0001:00363CEC   321 0001:00363CF7   323 0001:00363CFC
+   324 0001:00363D0A   325 0001:00363D18   326 0001:00363D2A   327 0001:00363D3C
+   329 0001:00363D56   330 0001:00363D69   331 0001:00363D85   332 0001:00363D93
+   333 0001:00363D9E   335 0001:00363DA0   336 0001:00363DDF   337 0001:00363DE6
+   345 0001:00363E8C   346 0001:00363EAD   348 0001:00363EC1   349 0001:00363ED4
+   350 0001:00363EE5   351 0001:00363EF3   352 0001:00363EFE   355 0001:00363F03
+   356 0001:00363F0B   357 0001:00363F19   359 0001:00363F29   360 0001:00363F36
+   361 0001:00363F49   362 0001:00363F56   363 0001:00363F67   364 0001:00363F75
+   365 0001:00363F80   367 0001:00363F85   368 0001:00363F93   369 0001:00363FA1
+   370 0001:00363FB3   371 0001:00363FC5   373 0001:00363FDF   374 0001:00363FF2
+   375 0001:0036400E   376 0001:0036401C   377 0001:00364027   379 0001:00364029
+   380 0001:00364068   381 0001:0036406F   386 0001:00364114   387 0001:00364115
+   389 0001:0036411A   390 0001:00364128   392 0001:0036412A   394 0001:0036412F
+   395 0001:00364132   397 0001:00364141   401 0001:00364144   402 0001:00364145
+   404 0001:0036414A   405 0001:00364158   407 0001:0036415A   409 0001:0036415F
+   410 0001:00364162   412 0001:00364171   416 0001:00364174   417 0001:0036417F
+   421 0001:00364180   422 0001:0036418B   426 0001:0036418C   427 0001:00364197
+   429 0001:003641C6
+
+Line numbers for fOptionsReportsCustom(Options\fOptionsReportsCustom.pas) segment .text
+
+    77 0001:003645E4    78 0001:00364601    81 0001:0036460F    82 0001:0036461C
+    86 0001:00364637    87 0001:00364644    91 0001:0036465F    92 0001:0036466C
+    95 0001:00364685   100 0001:003646B0   101 0001:003646BE   102 0001:003646D5
+   103 0001:003646D9   106 0001:003646E7   107 0001:003646EF   110 0001:003646FB
+   111 0001:00364705   112 0001:0036470F   114 0001:00364719   115 0001:00364721
+   116 0001:0036472C   119 0001:00364747   121 0001:00364757   124 0001:00364760
+   125 0001:00364763   126 0001:00364775   133 0001:00364778   136 0001:00364783
+   137 0001:003647A4   139 0001:003647E0   140 0001:003647E9   141 0001:003647F2
+   142 0001:003647F9   143 0001:00364800   145 0001:0036480A   147 0001:00364814
+   148 0001:00364817   149 0001:0036481E   150 0001:00364825   151 0001:00364828
+   153 0001:00364851   154 0001:0036485B   155 0001:0036487A   157 0001:0036488F
+   159 0001:00364899   160 0001:003648A9   161 0001:003648CE   165 0001:003648F7
+   167 0001:00364901   168 0001:00364911   169 0001:00364936   173 0001:0036495F
+   175 0001:00364989   176 0001:00364999   177 0001:003649BE   178 0001:003649CB
+   182 0001:003649EB   185 0001:00364A14   186 0001:00364A20   187 0001:00364A33
+   191 0001:00364A3C   193 0001:00364A60   194 0001:00364A6F   195 0001:00364A9A
+   196 0001:00364AA9   197 0001:00364AD4   198 0001:00364B0A   199 0001:00364B66
+   200 0001:00364B86   202 0001:00364B8B   203 0001:00364B98   204 0001:00364BA5
+   205 0001:00364BB2   207 0001:00364BCD   208 0001:00364BF3   209 0001:00364BFB
+   215 0001:00364C2C   217 0001:00364C4E   219 0001:00364C5B   220 0001:00364C60
+   222 0001:00364C65   223 0001:00364C7E   225 0001:00364C8A   226 0001:00364C97
+   227 0001:00364CA4   228 0001:00364CB1   230 0001:00364CB6   232 0001:00364CBC
+   233 0001:00364CC9   234 0001:00364CD6   235 0001:00364CFB   237 0001:00364D0A
+   239 0001:00364D10   240 0001:00364D1D   241 0001:00364D2A   242 0001:00364D4F
+   244 0001:00364D5E   246 0001:00364D7F   247 0001:00364D8C   248 0001:00364D99
+   250 0001:00364D9E   252 0001:00364DC5   253 0001:00364DD2   254 0001:00364DDF
+   255 0001:00364E02   259 0001:00364E13   260 0001:00364E20   262 0001:00364E2E
+   263 0001:00364E36   267 0001:00364E60   269 0001:00364E8D   272 0001:00364ED5
+   278 0001:00364F00   279 0001:00364F23   281 0001:00364F36   282 0001:00364F44
+   284 0001:00364F56   285 0001:00364F69   286 0001:00364F85   287 0001:00364F93
+   289 0001:00364F9E   291 0001:00364FB1   292 0001:00364FBC   293 0001:00364FBE
+   295 0001:00364FC4   296 0001:00364FD7   297 0001:00364FF3   298 0001:00365001
+   300 0001:0036500C   302 0001:00365016   304 0001:00365030   305 0001:00365043
+   306 0001:0036505F   307 0001:0036506D   308 0001:00365078   310 0001:0036507D
+   311 0001:003650A4   313 0001:003650F5   314 0001:00365102   315 0001:0036510F
+   317 0001:00365111   318 0001:0036514B   319 0001:00365158   323 0001:00365165
+   329 0001:00365240   330 0001:00365262   332 0001:0036527B   334 0001:003652C9
+   335 0001:00365302   336 0001:00365328   337 0001:0036534C   338 0001:0036535A
+   339 0001:0036537E   340 0001:0036538C   341 0001:003653A2   342 0001:003653B1
+   343 0001:003653BE   347 0001:003653DE   349 0001:003653E9   330 0001:003653EA
+   350 0001:003653F1   351 0001:003653FE   352 0001:0036540B   353 0001:00365418
+   354 0001:00365425   355 0001:00365431   356 0001:0036543D   358 0001:0036544A
+   359 0001:00365459   360 0001:0036546D   362 0001:00365482   364 0001:0036548F
+   365 0001:0036549E   366 0001:003654B2   368 0001:003654C7   371 0001:00365514
+   372 0001:00365517   373 0001:00365522   374 0001:00365529   383 0001:0036552C
+   384 0001:0036554E   386 0001:00365562   387 0001:00365575   388 0001:00365582
+   389 0001:00365593   390 0001:003655A1   391 0001:003655AC   393 0001:003655B1
+   395 0001:003655D3   396 0001:003655DB   397 0001:003655E9   399 0001:003655F9
+   400 0001:00365606   401 0001:00365619   402 0001:00365626   403 0001:00365637
+   404 0001:00365645   405 0001:00365650   407 0001:00365655   408 0001:00365663
+   411 0001:00365697   412 0001:003656A9   413 0001:003656BB   415 0001:003656D5
+   416 0001:003656E8   417 0001:0036570F   418 0001:0036571D   419 0001:00365728
+   421 0001:0036572D   422 0001:0036577B   423 0001:00365788   424 0001:00365795
+   426 0001:003657E6   427 0001:00365820   435 0001:003658EC   436 0001:0036590E
+   438 0001:00365922   439 0001:00365935   440 0001:00365942   441 0001:00365953
+   442 0001:00365961   443 0001:0036596C   446 0001:00365971   449 0001:00365993
+   450 0001:0036599B   451 0001:003659A9   453 0001:003659B9   454 0001:003659C6
+   455 0001:003659D9   456 0001:003659E6   457 0001:003659F7   458 0001:00365A05
+   459 0001:00365A10   462 0001:00365A15   465 0001:00365A49   466 0001:00365A57
+   467 0001:00365A69   468 0001:00365A7B   470 0001:00365A95   471 0001:00365AA8
+   472 0001:00365ACF   473 0001:00365ADD   474 0001:00365AE8   476 0001:00365AED
+   477 0001:00365B3B   478 0001:00365B48   479 0001:00365B55   481 0001:00365BA6
+   482 0001:00365BE0   487 0001:00365CAC   488 0001:00365CAF   489 0001:00365CB6
+   490 0001:00365CC1   494 0001:00365CC4   495 0001:00365CC7   497 0001:00365CCC
+   498 0001:00365CD9   501 0001:00365CE9   505 0001:00365CEC   506 0001:00365CEF
+   508 0001:00365CF4   509 0001:00365D01   512 0001:00365D11   516 0001:00365D14
+   517 0001:00365D17   519 0001:00365D1C   520 0001:00365D29   523 0001:00365D39
+   526 0001:00365D3C   527 0001:00365D3F   528 0001:00365D4E   529 0001:00365D57
+   530 0001:00365D5E   538 0001:00365D60   539 0001:00365D8A   541 0001:00365DAA
+   542 0001:00365DC3   544 0001:00365DD3   545 0001:00365DD8   546 0001:00365DDF
+   547 0001:00365DE4   548 0001:00365DEB   549 0001:00365DF9   550 0001:00365E09
+   552 0001:00365E0E   554 0001:00365E2A   555 0001:00365E5B   556 0001:00365E77
+   558 0001:00365E86   559 0001:00365E8B   560 0001:00365E8E   561 0001:00365E93
+   562 0001:00365E96   563 0001:00365EA4   564 0001:00365EB1   566 0001:00365EB3
+   552 0001:00365EB4   568 0001:00365EBD   570 0001:00365ED5   573 0001:00365EDD
+   577 0001:00365F1C   578 0001:00365F1F   580 0001:00365F24   581 0001:00365F34
+   584 0001:00365F41   591 0001:00365F44   592 0001:00365F66   593 0001:00365F6F
+   594 0001:00365F77   595 0001:00365F89   596 0001:00365FA1   597 0001:00365FB3
+   598 0001:00365FC6   599 0001:00365FD2   600 0001:00365FDD   601 0001:00365FEB
+   602 0001:00365FFF   603 0001:00366016   604 0001:0036602D   606 0001:00366044
+   608 0001:00366061   609 0001:003660D4   610 0001:0036610B   611 0001:00366142
+   612 0001:00366154   613 0001:00366166   614 0001:003661B7   615 0001:00366208
+   616 0001:00366255   606 0001:00366256   617 0001:0036625F   618 0001:00366272
+   619 0001:00366280   620 0001:00366290   622 0001:003662A1   623 0001:003662B5
+   624 0001:003662C3   625 0001:003662D0   626 0001:003662E4   627 0001:003662F2
+   628 0001:003662FF   629 0001:00366313   630 0001:00366321   631 0001:0036632E
+   632 0001:0036633B   633 0001:00366348   634 0001:00366355   636 0001:00366365
+   640 0001:00366428   641 0001:00366431   643 0001:00366437   645 0001:0036643D
+   646 0001:0036644B   648 0001:00366452   650 0001:00366458   651 0001:00366465
+   653 0001:00366475   654 0001:00366483   657 0001:00366488   658 0001:0036648E
+   659 0001:0036649C   661 0001:003664A1   663 0001:003664D5
+
+Line numbers for fOptionsTitles(Options\fOptionsTitles.pas) segment .text
+
+    73 0001:00366930    74 0001:0036693E    75 0001:00366955    76 0001:00366959
+    79 0001:00366967    80 0001:0036696F    83 0001:0036697B    84 0001:00366985
+    85 0001:0036698F    87 0001:00366999    88 0001:003669A1    89 0001:003669AC
+    92 0001:003669C7    94 0001:003669D7    99 0001:003669E0   100 0001:003669FF
+   101 0001:00366A0C   103 0001:00366A15   104 0001:00366A2E   105 0001:00366A63
+   106 0001:00366A79   108 0001:00366AAB   109 0001:00366AB4   110 0001:00366AC4
+   111 0001:00366AC6   105 0001:00366AC7   113 0001:00366ACC   114 0001:00366AD7
+   117 0001:00366B38   118 0001:00366B3B   119 0001:00366B4A   120 0001:00366B53
+   121 0001:00366B58   122 0001:00366B5D   128 0001:00366B60   129 0001:00366B7C
+   131 0001:00366B8B   134 0001:00366BE8   136 0001:00366BF1   137 0001:00366BFE
+   138 0001:00366C0B   139 0001:00366C19   141 0001:00366C1F   142 0001:00366C36
+   143 0001:00366C44   144 0001:00366C58   145 0001:00366C6A   146 0001:00366C7C
+   147 0001:00366C89   149 0001:00366C96   150 0001:00366CBA   154 0001:00366CCC
+   155 0001:00366CDC   158 0001:00366CE7   159 0001:00366CF0   160 0001:00366CFD
+   161 0001:00366D0E   162 0001:00366D15   163 0001:00366D1C   167 0001:00366DC4
+   168 0001:00366DCE   170 0001:00366DD4   171 0001:00366DF1   173 0001:00366E0F
+   178 0001:00366E18   179 0001:00366E31   180 0001:00366E6A   182 0001:00366E6E
+   183 0001:00366E8B   184 0001:00366E98   185 0001:00366EA4   186 0001:00366EB3
+   187 0001:00366EC3   189 0001:00366ED1   192 0001:00366EFC   193 0001:00366F15
+   194 0001:00366F1B   196 0001:00366F2C   198 0001:00366F49   199 0001:00366F6D
+   200 0001:00366F7D   204 0001:00366F8F   205 0001:00366F9F   206 0001:00366FAA
+   208 0001:00366FBA   212 0001:00366FC9   213 0001:00366FD9   214 0001:00366FE4
+   216 0001:00366FF1   217 0001:00366FFE   220 0001:0036707C   221 0001:00367093
+   222 0001:003670C0   223 0001:003670D8   224 0001:003670E5   225 0001:003670F2
+   226 0001:003670F9   229 0001:0036711C   230 0001:00367120   232 0001:00367126
+   234 0001:00367137   235 0001:0036715B   237 0001:00367169   238 0001:00367175
+   241 0001:00367181   244 0001:0036718A   249 0001:003671C0   250 0001:003671C4
+   251 0001:003671D3   252 0001:003671DA   253 0001:003671E9   254 0001:003671F0
+   256 0001:00367204   257 0001:00367211   260 0001:00367220   261 0001:00367229
+   262 0001:00367236   269 0001:0036723C   270 0001:0036726C   271 0001:0036727F
+   273 0001:00367283   274 0001:0036729A   276 0001:003672CC   277 0001:003672D0
+   278 0001:003672D2   272 0001:003672D3   279 0001:003672D6   280 0001:003672DC
+   281 0001:003672EC   286 0001:00367324   287 0001:00367351   289 0001:00367355
+   290 0001:00367367   292 0001:00367394   293 0001:00367398   294 0001:0036739A
+   288 0001:0036739B   295 0001:0036739E   299 0001:003673D4   300 0001:003673D9
+   305 0001:003673DC   306 0001:003673E4   308 0001:003673ED   311 0001:003673F1
+   313 0001:003673FE   314 0001:00367401   315 0001:00367411   317 0001:0036741C
+   309 0001:0036741D   320 0001:0036742D   321 0001:0036743D   322 0001:00367445
+   323 0001:00367450   328 0001:00367458   329 0001:00367460   331 0001:00367469
+   332 0001:00367478   334 0001:0036747D   336 0001:0036748A   337 0001:0036748D
+   338 0001:0036749D   340 0001:003674A8   332 0001:003674A9   343 0001:003674AE
+   344 0001:003674BE   345 0001:003674C6   346 0001:003674D1   349 0001:003674D8
+   350 0001:003674DD   351 0001:003674F3   350 0001:00367501   352 0001:00367504
+   353 0001:00367507   358 0001:00367510   361 0001:00367516   362 0001:00367520
+   363 0001:0036752D   364 0001:00367532   365 0001:00367536   366 0001:0036753C
+   369 0001:00367547   374 0001:0036754C   375 0001:00367566   377 0001:00367582
+   379 0001:00367593   381 0001:003675CE   382 0001:003675DE   383 0001:003675E9
+   385 0001:003675F6   387 0001:00367608   375 0001:00367609   388 0001:00367612
+   394 0001:0036765C   395 0001:00367678   397 0001:0036767E   399 0001:00367692
+   401 0001:003676A0   403 0001:003676CC   405 0001:00367705   409 0001:00367714
+   410 0001:00367721   411 0001:0036772E   416 0001:0036773D   417 0001:0036774A
+   418 0001:00367757   421 0001:00367764   422 0001:0036776A   424 0001:00367774
+   425 0001:00367789   428 0001:003677AF   429 0001:003677BC   432 0001:003677E8
+   433 0001:003677EB   434 0001:003677F4   435 0001:003677FB   437 0001:0036782B
+
+Line numbers for fOptionsNotes(Options\fOptionsNotes.pas) segment .text
+
+    55 0001:00367B40    56 0001:00367B4E    57 0001:00367B65    58 0001:00367B69
+    61 0001:00367B77    62 0001:00367B7F    65 0001:00367B8B    66 0001:00367B95
+    67 0001:00367B9F    69 0001:00367BA9    70 0001:00367BB1    71 0001:00367BBC
+    74 0001:00367BD7    76 0001:00367BE7    85 0001:00367BF0    86 0001:00367C0F
+    87 0001:00367C17    88 0001:00367C37    89 0001:00367C56    90 0001:00367C6A
+    91 0001:00367C73    92 0001:00367C80    94 0001:00367C89    95 0001:00367C91
+    96 0001:00367CB6    97 0001:00367CC9    98 0001:00367CDF    99 0001:00367CED
+   100 0001:00367CFE   101 0001:00367D0A   102 0001:00367D1F   103 0001:00367D3E
+   110 0001:00367D88   111 0001:00367DA1   112 0001:00367DA9   113 0001:00367DB6
+   114 0001:00367DC3   115 0001:00367DDC   116 0001:00367DF9   117 0001:00367E06
+   118 0001:00367E18   119 0001:00367E24   120 0001:00367E31   121 0001:00367E43
+   122 0001:00367E4F   123 0001:00367E5C   124 0001:00367E64   125 0001:00367E6A
+   126 0001:00367E92   127 0001:00367EA1   128 0001:00367EA7   129 0001:00367EC1
+   130 0001:00367ECF   131 0001:00367ED4   132 0001:00367ED9   137 0001:00367F28
+   138 0001:00367F45   139 0001:00367F52   141 0001:00367F58   143 0001:00367F70
+   144 0001:00367F75   145 0001:00367FA0   146 0001:00367FB8   149 0001:00367FCC
+   150 0001:00367FD7   155 0001:00368044   157 0001:00368049   158 0001:00368057
+   160 0001:00368058   162 0001:00368065   163 0001:00368068   165 0001:0036806D
+   168 0001:00368070   169 0001:0036808E   171 0001:00368094   173 0001:003680A4
+   174 0001:003680B0   176 0001:003680BD   178 0001:0036810B   179 0001:00368131
+   182 0001:0036813C   186 0001:00368180   187 0001:00368196   188 0001:003681A4
+   189 0001:003681C5   193 0001:003681E8   194 0001:003681F1   195 0001:00368208
+   198 0001:00368210   199 0001:00368226   200 0001:0036822C   202 0001:00368246
+   203 0001:0036824F   205 0001:00368265   207 0001:003682BA
+
+Line numbers for fOptionsOther(Options\fOptionsOther.pas) segment .text
+
+    79 0001:003686F0    80 0001:003686FE    81 0001:00368715    82 0001:00368719
+    85 0001:00368727    86 0001:0036872F    89 0001:0036873B    90 0001:00368745
+    91 0001:0036874F    93 0001:00368759    94 0001:00368761    95 0001:0036876C
+    98 0001:00368787   100 0001:00368797   108 0001:003687A0   109 0001:003687BE
+   110 0001:003687D4   111 0001:003687F6   112 0001:00368817   113 0001:0036881F
+   114 0001:00368832   115 0001:00368851   116 0001:0036885F   117 0001:00368873
+   118 0001:00368887   119 0001:00368890   120 0001:0036889E   121 0001:003688AF
+   122 0001:003688C1   123 0001:003688E8   124 0001:003688FA   125 0001:00368921
+   126 0001:00368934   127 0001:0036893D   128 0001:00368945   129 0001:0036894E
+   130 0001:00368956   131 0001:00368969   132 0001:00368977   133 0001:00368983
+   134 0001:0036899F   135 0001:003689AD   136 0001:003689B9   137 0001:003689D5
+   143 0001:00368A28   144 0001:00368A49   145 0001:00368A51   146 0001:00368A75
+   147 0001:00368AA2   148 0001:00368AAF   149 0001:00368AC1   150 0001:00368ACD
+   151 0001:00368ADA   152 0001:00368AEC   153 0001:00368AF8   154 0001:00368B05
+   155 0001:00368B12   156 0001:00368B1A   158 0001:00368B50   160 0001:00368B73
+   161 0001:00368B81   162 0001:00368B98   163 0001:00368BA6   165 0001:00368BAB
+   166 0001:00368BDF   168 0001:00368BE7   169 0001:00368C0F   170 0001:00368C16
+   171 0001:00368C3F   172 0001:00368C49   173 0001:00368C55   177 0001:00368D24
+   178 0001:00368D32   179 0001:00368D40   182 0001:00368D44   183 0001:00368D4A
+   185 0001:00368D67   186 0001:00368D75   187 0001:00368D8C   190 0001:00368D9A
+   193 0001:00368DD0   194 0001:00368DD6   195 0001:00368E04   197 0001:00368E27
+   198 0001:00368E35   199 0001:00368E4C   202 0001:00368E5A   205 0001:00368E94
+   206 0001:00368E9A   208 0001:00368EB7   209 0001:00368EC5   210 0001:00368EDC
+   213 0001:00368EEA   216 0001:00368F20   217 0001:00368F3B   219 0001:00368F41
+   221 0001:00368F55   222 0001:00368F6E   223 0001:00368F7A   224 0001:00368F90
+   225 0001:00368F9C   227 0001:00368FBA   228 0001:00368FD1   229 0001:00368FD6
+   232 0001:00369004   235 0001:0036907C   236 0001:00369097   238 0001:0036909D
+   240 0001:003690B1   241 0001:003690CA   242 0001:003690D6   243 0001:003690EC
+   244 0001:003690F8   246 0001:00369116   247 0001:0036912D   248 0001:00369132
+   251 0001:00369160   254 0001:003691D8   255 0001:003691EC   256 0001:003691F2
+   257 0001:00369202   258 0001:0036920E   261 0001:0036923C   262 0001:00369250
+   263 0001:00369256   264 0001:00369266   265 0001:00369272   268 0001:003692A0
+   269 0001:003692B8   270 0001:003692D4   271 0001:003692F0   273 0001:00369345
+
+Line numbers for fOptionsCombinations(Options\fOptionsCombinations.pas) segment .text
+
+    77 0001:00369760    78 0001:0036976E    79 0001:00369785    80 0001:00369789
+    83 0001:00369797    84 0001:0036979F    87 0001:003697AB    88 0001:003697B5
+    89 0001:003697BF    91 0001:003697C9    92 0001:003697D1    93 0001:003697DC
+    96 0001:003697F7    98 0001:00369807   101 0001:00369810   102 0001:00369827
+   104 0001:0036982D   106 0001:0036985D   107 0001:00369866   108 0001:0036986F
+   109 0001:00369880   110 0001:00369891   113 0001:003698A6   114 0001:003698AF
+   115 0001:003698B8   116 0001:003698C1   119 0001:003698D6   120 0001:003698DF
+   121 0001:003698E8   122 0001:003698F1   125 0001:00369903   126 0001:0036990C
+   127 0001:00369915   128 0001:00369926   131 0001:00369938   132 0001:00369941
+   133 0001:0036994A   134 0001:0036995B   137 0001:0036996B   138 0001:00369987
+   139 0001:00369991   140 0001:0036999A   142 0001:003699A7   146 0001:00369A24
+   147 0001:00369A2B   149 0001:00369A31   151 0001:00369A61   154 0001:00369A6F
+   155 0001:00369A7B   158 0001:00369A90   159 0001:00369A9C   162 0001:00369AB1
+   165 0001:00369ABF   169 0001:00369ACB   172 0001:00369AEC   173 0001:00369AEF
+   174 0001:00369AFC   175 0001:00369B05   176 0001:00369B0C   183 0001:00369B10
+   184 0001:00369B2E   185 0001:00369B48   186 0001:00369B6D   187 0001:00369B8D
+   188 0001:00369BB9   189 0001:00369BE9   190 0001:00369BFA   193 0001:00369C0D
+   194 0001:00369C17   196 0001:00369C22   199 0001:00369C30   200 0001:00369C3B
+   201 0001:00369C46   203 0001:00369C51   204 0001:00369C60   205 0001:00369C6D
+   206 0001:00369C74   210 0001:00369CC4   211 0001:00369CCD   212 0001:00369CDC
+   214 0001:00369CED   215 0001:00369CF4   216 0001:00369D01   217 0001:00369D13
+   221 0001:00369D18   222 0001:00369D3A   223 0001:00369D4F   225 0001:00369D58
+   226 0001:00369D61   228 0001:00369D79   233 0001:00369DB4   234 0001:00369DBD
+   236 0001:00369DD2   239 0001:00369E0B   244 0001:00369E38   245 0001:00369E3D
+   246 0001:00369E43   247 0001:00369E56   248 0001:00369E71   246 0001:00369E84
+   249 0001:00369E89   250 0001:00369E96   251 0001:00369E9D   256 0001:00369EA4
+   257 0001:00369EBF   258 0001:00369ECD   261 0001:00369EDF   262 0001:00369EF9
+   263 0001:00369F1E   264 0001:00369F3E   265 0001:00369F6E   267 0001:00369F8B
+   268 0001:00369F98   275 0001:00369FCC   276 0001:0036A000   277 0001:0036A004
+   278 0001:0036A00D   279 0001:0036A025   281 0001:0036A04F   282 0001:0036A06E
+   284 0001:0036A07B   286 0001:0036A07F   278 0001:0036A080   287 0001:0036A083
+   291 0001:0036A0B8   292 0001:0036A0BB   293 0001:0036A0CF   300 0001:0036A0D4
+   301 0001:0036A0F2   303 0001:0036A0FF   304 0001:0036A10E   305 0001:0036A117
+   307 0001:0036A12F   308 0001:0036A14E   309 0001:0036A171   305 0001:0036A172
+   310 0001:0036A175   311 0001:0036A17D   313 0001:0036A185   317 0001:0036A1B8
+   318 0001:0036A1C5   322 0001:0036A1C8   323 0001:0036A1D5   327 0001:0036A1D8
+   328 0001:0036A1DE   329 0001:0036A1FC   337 0001:0036A204   338 0001:0036A22B
+   340 0001:0036A242   341 0001:0036A262   342 0001:0036A282   343 0001:0036A2A2
+   346 0001:0036A2B8   347 0001:0036A2C2   349 0001:0036A2CD   352 0001:0036A2DB
+   353 0001:0036A2E6   354 0001:0036A2F1   356 0001:0036A2FC   357 0001:0036A30B
+   338 0001:0036A30C   358 0001:0036A315   361 0001:0036A364   362 0001:0036A367
+   363 0001:0036A375   365 0001:0036A3A5
+
+Line numbers for fOptionsTeams(Options\fOptionsTeams.pas) segment .text
+
+    68 0001:0036A750    69 0001:0036A75A    70 0001:0036A771    71 0001:0036A778
+    74 0001:0036A786    75 0001:0036A78E    78 0001:0036A79A    79 0001:0036A7A4
+    80 0001:0036A7AE    82 0001:0036A7B8    83 0001:0036A7C0    86 0001:0036A7D8
+    88 0001:0036A7E8    91 0001:0036A7F0    92 0001:0036A7F3    93 0001:0036A803
+    94 0001:0036A814    95 0001:0036A81B   101 0001:0036A820   102 0001:0036A83D
+   103 0001:0036A84E   104 0001:0036A85D   105 0001:0036A865   106 0001:0036A878
+   107 0001:0036A8B5   105 0001:0036A8D7   108 0001:0036A8DC   109 0001:0036A8F9
+   110 0001:0036A91A   111 0001:0036A922   116 0001:0036A94C   117 0001:0036A977
+   118 0001:0036A989   119 0001:0036A9C4   117 0001:0036A9E4   120 0001:0036A9E7
+   125 0001:0036AA10   126 0001:0036AA37   127 0001:0036AA4B   128 0001:0036AA81
+   126 0001:0036AA90   129 0001:0036AA95   134 0001:0036AAC0   135 0001:0036AAED
+   136 0001:0036AAF1   137 0001:0036AB03   139 0001:0036AB30   140 0001:0036AB34
+   141 0001:0036AB36   136 0001:0036AB37   142 0001:0036AB3A   147 0001:0036AB70
+   148 0001:0036AB9D   150 0001:0036ABA1   151 0001:0036ABB3   153 0001:0036ABE0
+   154 0001:0036ABE4   155 0001:0036ABE6   149 0001:0036ABE7   156 0001:0036ABEA
+   159 0001:0036AC20   160 0001:0036AC23   161 0001:0036AC33   162 0001:0036AC45
+   164 0001:0036AC57   165 0001:0036AC67   166 0001:0036AC78   167 0001:0036AC81
+   173 0001:0036AC84   174 0001:0036ACA7   175 0001:0036ACB7   176 0001:0036ACC7
+   177 0001:0036ACE4   178 0001:0036ACF3   179 0001:0036ACF8   181 0001:0036ACFE
+   182 0001:0036AD1E   184 0001:0036AD30   185 0001:0036AD33   186 0001:0036AD65
+   188 0001:0036AD7D   189 0001:0036AD88   190 0001:0036AD98   191 0001:0036ADA3
+   195 0001:0036ADB5   196 0001:0036ADC0   198 0001:0036ADCB   199 0001:0036ADF1
+   202 0001:0036AE03   203 0001:0036AE13   204 0001:0036AE1E   206 0001:0036AE2E
+   181 0001:0036AE31   207 0001:0036AE3A   210 0001:0036AED2   212 0001:0036AEE0
+   213 0001:0036AEF4   214 0001:0036AF09   215 0001:0036AF1D   218 0001:0036AF32
+   219 0001:0036AF3A   223 0001:0036AFB8   224 0001:0036AFBF   228 0001:0036AFC0
+   229 0001:0036AFC7   232 0001:0036AFC8   233 0001:0036AFE4   234 0001:0036AFEA
+   238 0001:0036B048   239 0001:0036B054   240 0001:0036B06C   241 0001:0036B075
+   243 0001:0036B07C   246 0001:0036B0FC   247 0001:0036B117   248 0001:0036B138
+   252 0001:0036B164   253 0001:0036B16D   256 0001:0036B1A6   260 0001:0036B1AC
+   261 0001:0036B1B2   262 0001:0036B1BB   264 0001:0036B1C9   265 0001:0036B1D0
+   268 0001:0036B1DB   270 0001:0036B1E2   273 0001:0036B1E8   274 0001:0036B204
+   275 0001:0036B20D   278 0001:0036B219   279 0001:0036B21F   281 0001:0036B22E
+   285 0001:0036B28C   286 0001:0036B298   287 0001:0036B2C4   288 0001:0036B2D8
+   289 0001:0036B2E2   290 0001:0036B2EB   291 0001:0036B302   295 0001:0036B31F
+   296 0001:0036B329   299 0001:0036B332   301 0001:0036B3CE
+
+Line numbers for fOptionsNewList(Options\fOptionsNewList.pas) segment .text
+
+    45 0001:0036B638    46 0001:0036B63F    47 0001:0036B656    48 0001:0036B65D
+    51 0001:0036B66B    52 0001:0036B675    53 0001:0036B67D    54 0001:0036B688
+    57 0001:0036B6A5    59 0001:0036B6B5    64 0001:0036B6BC    65 0001:0036B6DE
+    66 0001:0036B6E2    68 0001:0036B6E8    69 0001:0036B733    70 0001:0036B746
+    71 0001:0036B76E    74 0001:0036B781    75 0001:0036B7B0    76 0001:0036B7CC
+    78 0001:0036B800    80 0001:0036B804    83 0001:0036B813    84 0001:0036B81C
+    87 0001:0036B826    92 0001:0036B8BC    94 0001:0036B8D9    95 0001:0036B8DC
+    97 0001:0036B8E1   100 0001:0036B8E4   102 0001:0036B8E7   103 0001:0036B8F4
+   104 0001:0036B901   107 0001:0036B904   108 0001:0036B920   109 0001:0036B951
+   111 0001:0036B9A1
+
+Line numbers for fOptionsLists(Options\fOptionsLists.pas) segment .text
+
+    88 0001:0036BF20    89 0001:0036BF2E    90 0001:0036BF45    91 0001:0036BF49
+    94 0001:0036BF57    95 0001:0036BF5F    98 0001:0036BF6B    99 0001:0036BF75
+   100 0001:0036BF7F   102 0001:0036BF89   103 0001:0036BF91   104 0001:0036BF9C
+   107 0001:0036BFB7   109 0001:0036BFC7   112 0001:0036BFD0   113 0001:0036BFD3
+   114 0001:0036BFE3   115 0001:0036BFF3   116 0001:0036C000   117 0001:0036C00D
+   118 0001:0036C016   119 0001:0036C01E   125 0001:0036C020   126 0001:0036C03A
+   127 0001:0036C042   128 0001:0036C052   129 0001:0036C071   131 0001:0036C075
+   133 0001:0036C07B   134 0001:0036C08A   136 0001:0036C096   137 0001:0036C09F
+   138 0001:0036C0AF   140 0001:0036C0B8   143 0001:0036C0E4   144 0001:0036C0FB
+   146 0001:0036C101   148 0001:0036C135   149 0001:0036C13E   150 0001:0036C147
+   151 0001:0036C150   154 0001:0036C165   155 0001:0036C16E   156 0001:0036C177
+   157 0001:0036C188   160 0001:0036C19D   161 0001:0036C1A6   162 0001:0036C1AF
+   163 0001:0036C1B8   166 0001:0036C1CD   167 0001:0036C1D6   168 0001:0036C1DF
+   169 0001:0036C1E8   172 0001:0036C1FA   173 0001:0036C203   174 0001:0036C20C
+   175 0001:0036C21D   178 0001:0036C22F   179 0001:0036C238   180 0001:0036C241
+   181 0001:0036C252   184 0001:0036C262   185 0001:0036C27E   186 0001:0036C288
+   188 0001:0036C291   189 0001:0036C2A1   190 0001:0036C2AA   197 0001:0036C338
+   198 0001:0036C368   199 0001:0036C37B   201 0001:0036C37F   202 0001:0036C396
+   204 0001:0036C3C8   205 0001:0036C3CC   206 0001:0036C3CE   200 0001:0036C3CF
+   207 0001:0036C3D2   208 0001:0036C3D8   209 0001:0036C3E8   214 0001:0036C420
+   215 0001:0036C443   217 0001:0036C45B   220 0001:0036C4B7   222 0001:0036C4C0
+   223 0001:0036C4E5   224 0001:0036C4F5   225 0001:0036C512   227 0001:0036C518
+   229 0001:0036C535   230 0001:0036C542   231 0001:0036C54F   232 0001:0036C55C
+   233 0001:0036C569   234 0001:0036C576   235 0001:0036C583   237 0001:0036C588
+   238 0001:0036C5D2   239 0001:0036C5DF   240 0001:0036C5E6   241 0001:0036C621
+   242 0001:0036C62B   243 0001:0036C638   244 0001:0036C63F   246 0001:0036C64C
+   247 0001:0036C65F   249 0001:0036C68D   250 0001:0036C69A   251 0001:0036C6A7
+   253 0001:0036C6A9   254 0001:0036C6C7   255 0001:0036C6E7   256 0001:0036C6F4
+   265 0001:0036C76C   266 0001:0036C7B3   267 0001:0036C7C6   268 0001:0036C7F6
+   271 0001:0036C82A   272 0001:0036C835   273 0001:0036C853   274 0001:0036C86F
+   278 0001:0036C8A1   282 0001:0036C8C2   283 0001:0036C8CD   284 0001:0036C8D6
+   285 0001:0036C8F0   286 0001:0036C90A   287 0001:0036C919   288 0001:0036C962
+   289 0001:0036C979   288 0001:0036C99A   290 0001:0036C99D   294 0001:0036C9A7
+   298 0001:0036C9C7   302 0001:0036C9E5   305 0001:0036CA01   306 0001:0036CA14
+   308 0001:0036CA42   309 0001:0036CA4F   310 0001:0036CA5C   312 0001:0036CA5E
+   313 0001:0036CA94   314 0001:0036CAC8   320 0001:0036CB38   321 0001:0036CB55
+   322 0001:0036CB5B   324 0001:0036CB95   326 0001:0036CBAF   327 0001:0036CBBC
+   329 0001:0036CBC2   330 0001:0036CBCF   332 0001:0036CBD5   333 0001:0036CC02
+   334 0001:0036CC11   335 0001:0036CC1A   337 0001:0036CC27   339 0001:0036CC37
+   340 0001:0036CC3D   341 0001:0036CC4B   342 0001:0036CC5D   344 0001:0036CC78
+   345 0001:0036CC85   346 0001:0036CC92   350 0001:0036CC9B   355 0001:0036CD5C
+   356 0001:0036CD75   357 0001:0036CDAD   358 0001:0036CDCB   359 0001:0036CDD8
+   360 0001:0036CDE8   361 0001:0036CDFC   362 0001:0036CE05   363 0001:0036CE18
+   364 0001:0036CE26   367 0001:0036CE50   368 0001:0036CE53   369 0001:0036CE63
+   370 0001:0036CE81   371 0001:0036CEA1   372 0001:0036CEAE   377 0001:0036CEB0
+   378 0001:0036CECD   380 0001:0036CED3   381 0001:0036CEE2   382 0001:0036CF0C
+   384 0001:0036CF18   386 0001:0036CF21   387 0001:0036CF3D   386 0001:0036CF63
+   388 0001:0036CF66   389 0001:0036CF73   390 0001:0036CF7C   391 0001:0036CF8A
+   392 0001:0036CF97   394 0001:0036CFA0   395 0001:0036CFAD   400 0001:0036CFD8
+   401 0001:0036CFDD   402 0001:0036CFF0   403 0001:0036CFF6   404 0001:0036D00A
+   405 0001:0036D017   403 0001:0036D026   406 0001:0036D02B   407 0001:0036D049
+   408 0001:0036D069   409 0001:0036D076   412 0001:0036D07C   413 0001:0036D095
+   414 0001:0036D0A6   416 0001:0036D0D4   417 0001:0036D0E1   418 0001:0036D0EE
+   420 0001:0036D0F0   421 0001:0036D10E   422 0001:0036D12E   427 0001:0036D158
+   428 0001:0036D174   429 0001:0036D187   431 0001:0036D18D   432 0001:0036D19C
+   433 0001:0036D1C6   435 0001:0036D1D2   436 0001:0036D1DB   437 0001:0036D1F0
+   439 0001:0036D1FE   440 0001:0036D220   441 0001:0036D22F   436 0001:0036D230
+   442 0001:0036D235   443 0001:0036D23E   444 0001:0036D247   445 0001:0036D254
+   448 0001:0036D280   449 0001:0036D299   450 0001:0036D2AA   452 0001:0036D2D8
+   453 0001:0036D30C   454 0001:0036D342   457 0001:0036D36C   458 0001:0036D370
+   459 0001:0036D376   460 0001:0036D385   463 0001:0036D396   464 0001:0036D3A2
+   466 0001:0036D3AB   471 0001:0036D3F8   472 0001:0036D40E   476 0001:0036D410
+   477 0001:0036D417   479 0001:0036D41D   481 0001:0036D451   482 0001:0036D45D
+   485 0001:0036D472   488 0001:0036D480   489 0001:0036D48C   492 0001:0036D4A1
+   493 0001:0036D4AD   496 0001:0036D4C2   499 0001:0036D4D0   503 0001:0036D4DC
+   506 0001:0036D4FC   507 0001:0036D517   509 0001:0036D526   512 0001:0036D582
+   514 0001:0036D58B   517 0001:0036D600   518 0001:0036D620   519 0001:0036D62F
+   520 0001:0036D652   522 0001:0036D673   526 0001:0036D6B0   527 0001:0036D6BA
+   532 0001:0036D713   533 0001:0036D71A   537 0001:0036D724   538 0001:0036D72E
+   543 0001:0036D787   544 0001:0036D78E   550 0001:0036D798   551 0001:0036D79C
+   553 0001:0036D7A8   555 0001:0036D7B3   557 0001:0036D7BD   559 0001:0036D7C6
+   560 0001:0036D7D6   562 0001:0036D7E6   564 0001:0036D7EF   565 0001:0036D7F8
+   569 0001:0036D860   570 0001:0036D882   572 0001:0036D898   574 0001:0036D8A1
+   575 0001:0036D8C9   577 0001:0036D8DC   578 0001:0036D8EA   580 0001:0036D8F3
+   582 0001:0036D906   583 0001:0036D914   587 0001:0036D91B   589 0001:0036D970
+
+Line numbers for fOptionsPatientSelection(Options\fOptionsPatientSelection.pas) segment .text
+
+   112 0001:0036E024   113 0001:0036E032   114 0001:0036E049   115 0001:0036E04D
+   118 0001:0036E05B   119 0001:0036E065   120 0001:0036E06D   123 0001:0036E079
+   124 0001:0036E083   125 0001:0036E08D   127 0001:0036E097   128 0001:0036E09F
+   129 0001:0036E0AA   132 0001:0036E0C5   134 0001:0036E0D5   137 0001:0036E0E0
+   138 0001:0036E0E3   139 0001:0036E0EA   140 0001:0036E0F1   141 0001:0036E0FE
+   142 0001:0036E10B   143 0001:0036E118   144 0001:0036E125   145 0001:0036E132
+   146 0001:0036E13F   147 0001:0036E14C   148 0001:0036E159   149 0001:0036E16A
+   150 0001:0036E17B   151 0001:0036E18C   159 0001:0036E190   160 0001:0036E1B2
+   161 0001:0036E1BD   162 0001:0036E1C0   163 0001:0036E1C3   164 0001:0036E1D0
+   165 0001:0036E1DD   166 0001:0036E1E6   167 0001:0036E1EF   168 0001:0036E1FA
+   170 0001:0036E205   171 0001:0036E223   172 0001:0036E234   173 0001:0036E248
+   174 0001:0036E271   175 0001:0036E282   176 0001:0036E296   177 0001:0036E2BF
+   178 0001:0036E2D0   179 0001:0036E2E4   180 0001:0036E30D   181 0001:0036E31E
+   182 0001:0036E332   183 0001:0036E35B   184 0001:0036E36C   185 0001:0036E380
+   186 0001:0036E3A9   187 0001:0036E3BA   188 0001:0036E3CE   189 0001:0036E3F7
+   190 0001:0036E408   191 0001:0036E41C   193 0001:0036E445   194 0001:0036E44B
+   195 0001:0036E49E   196 0001:0036E4A9   197 0001:0036E4B7   198 0001:0036E4C5
+   199 0001:0036E4D3   200 0001:0036E4E1   202 0001:0036E4ED   204 0001:0036E4F6
+   205 0001:0036E544   208 0001:0036E559   209 0001:0036E568   211 0001:0036E57A
+   215 0001:0036E58C   216 0001:0036E59B   218 0001:0036E5AD   220 0001:0036E5BF
+   221 0001:0036E5D1   223 0001:0036E5E3   226 0001:0036E5F3   227 0001:0036E605
+   228 0001:0036E616   229 0001:0036E627   230 0001:0036E638   232 0001:0036E649
+   233 0001:0036E657   239 0001:0036E680   240 0001:0036E688   242 0001:0036E68E
+   244 0001:0036E69B   245 0001:0036E6B4   246 0001:0036E6C2   248 0001:0036E6CB
+   249 0001:0036E6D8   250 0001:0036E6DD   251 0001:0036E6F0   252 0001:0036E6FB
+   253 0001:0036E702   257 0001:0036E704   258 0001:0036E710   259 0001:0036E719
+   262 0001:0036E71F   263 0001:0036E729   264 0001:0036E736   265 0001:0036E73D
+   266 0001:0036E74A   267 0001:0036E756   268 0001:0036E75F   269 0001:0036E765
+   271 0001:0036E770   272 0001:0036E777   278 0001:0036E7C0   279 0001:0036E7C8
+   281 0001:0036E7CE   283 0001:0036E7D7   284 0001:0036E7F0   285 0001:0036E7FE
+   287 0001:0036E807   288 0001:0036E814   289 0001:0036E819   290 0001:0036E82C
+   291 0001:0036E837   292 0001:0036E83E   296 0001:0036E840   297 0001:0036E84C
+   300 0001:0036E852   301 0001:0036E85C   302 0001:0036E869   303 0001:0036E870
+   304 0001:0036E87D   305 0001:0036E889   306 0001:0036E88F   308 0001:0036E89A
+   309 0001:0036E8A1   316 0001:0036E8E8   317 0001:0036E8F1   318 0001:0036E8FA
+   319 0001:0036E903   320 0001:0036E910   321 0001:0036E91E   322 0001:0036E92D
+   323 0001:0036E93C   324 0001:0036E94B   325 0001:0036E95A   326 0001:0036E965
+   327 0001:0036E989   328 0001:0036E9B9   329 0001:0036E9C0   330 0001:0036E9C7
+   331 0001:0036E9CE   332 0001:0036E9D5   333 0001:0036E9DC   335 0001:0036E9E3
+   337 0001:0036E9E8   338 0001:0036E9FE   339 0001:0036EA14   340 0001:0036EA2A
+   341 0001:0036EA40   342 0001:0036EA42   343 0001:0036EA4F   344 0001:0036EA5C
+   345 0001:0036EA6B   346 0001:0036EA76   347 0001:0036EA8B   348 0001:0036EA90
+   351 0001:0036EA98   352 0001:0036EAAF   353 0001:0036EAB5   355 0001:0036EAC5
+   356 0001:0036EAD1   357 0001:0036EAE1   359 0001:0036EAEC   360 0001:0036EB02
+   363 0001:0036EB30   364 0001:0036EB47   365 0001:0036EB4D   367 0001:0036EB5D
+   368 0001:0036EB69   369 0001:0036EB79   371 0001:0036EB84   372 0001:0036EB9A
+   376 0001:0036EBC8   377 0001:0036EBDE   378 0001:0036EBFF   379 0001:0036EC06
+   383 0001:0036EC2C   384 0001:0036EC42   385 0001:0036EC63   386 0001:0036EC6A
+   389 0001:0036EC90   390 0001:0036EC93   391 0001:0036ECA2   392 0001:0036ECAD
+   393 0001:0036ECB6   396 0001:0036ECB8   397 0001:0036ECBB   399 0001:0036ECCA
+   400 0001:0036ECDC   401 0001:0036ECEC   402 0001:0036ECF9   406 0001:0036ED08
+   407 0001:0036ED1A   408 0001:0036ED2A   409 0001:0036ED37   411 0001:0036ED44
+   413 0001:0036ED53   414 0001:0036ED60   415 0001:0036ED6D   418 0001:0036ED7C
+   419 0001:0036ED89   423 0001:0036ED8C   424 0001:0036ED95   425 0001:0036EDAC
+   429 0001:0036EDB4   430 0001:0036EDBD   431 0001:0036EDD4   435 0001:0036EDDC
+   436 0001:0036EDE5   437 0001:0036EDFC   441 0001:0036EE04   442 0001:0036EE0D
+   443 0001:0036EE24   447 0001:0036EE2C   448 0001:0036EE35   449 0001:0036EE4C
+   453 0001:0036EE54   454 0001:0036EE5D   455 0001:0036EE74   459 0001:0036EE7C
+   460 0001:0036EE85   461 0001:0036EE9C   465 0001:0036EEA4   466 0001:0036EEAD
+   467 0001:0036EEC4   471 0001:0036EECC   472 0001:0036EEDF   477 0001:0036EEE0
+   479 0001:0036EEE5   480 0001:0036EEEC   482 0001:0036EEFA   487 0001:0036EEFC
+   489 0001:0036EF01   490 0001:0036EF08   491 0001:0036EF0F   493 0001:0036EF1D
+   497 0001:0036EF20   498 0001:0036EF26   499 0001:0036EF39   500 0001:0036EF40
+   502 0001:0036EF73
+
+Line numbers for fOptionsSurrogate(Options\fOptionsSurrogate.pas) segment .text
+
+    58 0001:0036F294    59 0001:0036F2BF    60 0001:0036F2D6    61 0001:0036F2E7
+    62 0001:0036F2F8    65 0001:0036F306    66 0001:0036F30E    69 0001:0036F31A
+    70 0001:0036F324    71 0001:0036F32E    73 0001:0036F338    76 0001:0036F340
+    77 0001:0036F36A    78 0001:0036F38C    79 0001:0036F3AF    83 0001:0036F3D2
+    84 0001:0036F3E9    85 0001:0036F3FF    86 0001:0036F416    88 0001:0036F42D
+    89 0001:0036F438    90 0001:0036F43F    91 0001:0036F468    92 0001:0036F483
+    93 0001:0036F4B0    96 0001:0036F4EA    97 0001:0036F4F2    98 0001:0036F4FC
+   100 0001:0036F50E   103 0001:0036F548   104 0001:0036F54B   105 0001:0036F55E
+   106 0001:0036F574   107 0001:0036F57B   113 0001:0036F580   114 0001:0036F58E
+   115 0001:0036F590   118 0001:0036F59B   119 0001:0036F5AA   120 0001:0036F5B9
+   122 0001:0036F5C8   124 0001:0036F5E3   125 0001:0036F5F0   126 0001:0036F5FD
+   130 0001:0036F60C   131 0001:0036F61A   132 0001:0036F628   133 0001:0036F62F
+   135 0001:0036F65C   136 0001:0036F661   137 0001:0036F674   140 0001:0036F680
+   144 0001:0036F684   116 0001:0036F686   146 0001:0036F68E   150 0001:0036F6D8
+   151 0001:0036F6E1   152 0001:0036F6F8   158 0001:0036F700   160 0001:0036F71D
+   161 0001:0036F721   162 0001:0036F729   163 0001:0036F754   164 0001:0036F783
+   165 0001:0036F7B2   166 0001:0036F7C0   168 0001:0036F7C6   169 0001:0036F7CB
+   170 0001:0036F7DC   171 0001:0036F805   172 0001:0036F80E   178 0001:0036F818
+   179 0001:0036F82F   180 0001:0036F845   181 0001:0036F85C   183 0001:0036F873
+   185 0001:0036F87D   188 0001:0036F8D0   189 0001:0036F8D3   190 0001:0036F8E1
+   193 0001:0036F8EE   194 0001:0036F901   195 0001:0036F90E   196 0001:0036F91B
+   198 0001:0036F928   199 0001:0036F92F   202 0001:0036F934   205 0001:0036F955
+   206 0001:0036F979   207 0001:0036F99D   208 0001:0036F9B5   211 0001:0036F9C7
+   212 0001:0036F9D7   213 0001:0036F9E1   215 0001:0036F9EB   216 0001:0036F9FC
+   218 0001:0036FA31   219 0001:0036FA41   220 0001:0036FA52   222 0001:0036FA87
+   224 0001:0036FA97   227 0001:0036FB54   228 0001:0036FB6D   229 0001:0036FB73
+   231 0001:0036FB8D   232 0001:0036FBA0   233 0001:0036FBAD   234 0001:0036FBB7
+   238 0001:0036FBC2   239 0001:0036FBD5   241 0001:0036FBFC   242 0001:0036FC03
+   246 0001:0036FC2C   247 0001:0036FC32   248 0001:0036FC40   249 0001:0036FC4C
+   251 0001:0036FC7F
+
+Line numbers for fOptionsReminders(Options\fOptionsReminders.pas) segment .text
+
+    58 0001:0036FFD8    59 0001:0036FFE6    60 0001:0036FFEF    63 0001:0036FFFB
+    64 0001:00370012    65 0001:00370016    68 0001:00370024    69 0001:0037002C
+    72 0001:00370038    73 0001:00370042    74 0001:0037004C    76 0001:00370056
+    77 0001:0037005E    78 0001:00370069    81 0001:00370084    84 0001:00370094
+    90 0001:0037009C    91 0001:003700BD    92 0001:003700CC    93 0001:003700DB
+    94 0001:003700E9    95 0001:003700F1    96 0001:00370103    97 0001:00370131
+    99 0001:0037014B    95 0001:00370171   100 0001:00370174   101 0001:00370183
+   102 0001:00370195   101 0001:003701BB   104 0001:003701CB   105 0001:003701D3
+   107 0001:003701E3   108 0001:003701EB   112 0001:00370214   113 0001:00370218
+   115 0001:0037021E   117 0001:00370232   119 0001:00370244   122 0001:0037027F
+   125 0001:003702C7   129 0001:003702D6   130 0001:003702E3   131 0001:003702F0
+   136 0001:003702FF   137 0001:0037030C   138 0001:00370319   141 0001:00370326
+   143 0001:0037032C   145 0001:00370346   149 0001:0037034C   150 0001:00370351
+   154 0001:00370354   155 0001:00370359   160 0001:0037035C   161 0001:00370364
+   163 0001:0037036D   166 0001:00370371   168 0001:0037037E   169 0001:00370381
+   170 0001:00370391   172 0001:0037039C   164 0001:0037039D   175 0001:003703AD
+   176 0001:003703B8   181 0001:003703C0   182 0001:003703C8   184 0001:003703D1
+   185 0001:003703E0   187 0001:003703E5   189 0001:003703F2   190 0001:003703F5
+   191 0001:00370405   193 0001:00370410   185 0001:00370411   196 0001:00370416
+   197 0001:00370421   202 0001:00370428   203 0001:0037042C   204 0001:0037043B
+   205 0001:00370455   206 0001:00370464   207 0001:0037046B   212 0001:00370470
+   213 0001:00370474   214 0001:00370483   215 0001:0037049D   216 0001:003704AC
+   217 0001:003704C4   218 0001:003704CB   221 0001:003704D0   222 0001:003704D5
+   223 0001:003704EB   222 0001:003704F9   224 0001:003704FC   225 0001:003704FF
+   230 0001:00370508   233 0001:00370511   234 0001:0037051B   235 0001:00370528
+   236 0001:0037052D   237 0001:00370531   238 0001:00370537   240 0001:00370542
+   241 0001:00370549   246 0001:00370550   247 0001:00370571   249 0001:00370585
+   251 0001:00370592   252 0001:003705C0   254 0001:003705CE   247 0001:003705CF
+   255 0001:003705D4   262 0001:003705F8   263 0001:00370616   264 0001:00370625
+   265 0001:00370633   266 0001:0037063C   268 0001:00370653   269 0001:0037069B
+   270 0001:003706A6   266 0001:003706A7   271 0001:003706AA   273 0001:003706BF
+   275 0001:003706CF   281 0001:0037070C   282 0001:0037072E   283 0001:0037073D
+   284 0001:0037074B   285 0001:00370768   284 0001:0037078C   286 0001:0037078F
+   287 0001:003707A3   288 0001:003707B4   290 0001:003707C3   291 0001:003707D6
+   292 0001:003707E8   291 0001:0037080E   294 0001:0037081E   296 0001:0037082E
+   297 0001:00370836   299 0001:0037088D
+
+Line numbers for fOptionsDays(Options\fOptionsDays.pas) segment .text
+
+    83 0001:00370DD4    84 0001:00370DE2    85 0001:00370DF9    86 0001:00370DFD
+    89 0001:00370E0B    90 0001:00370E13    93 0001:00370E1F    94 0001:00370E29
+    95 0001:00370E33    97 0001:00370E3D    98 0001:00370E45    99 0001:00370E50
+   102 0001:00370E6B   104 0001:00370E7B   108 0001:00370E84   109 0001:00370E8B
+   110 0001:00370E92   119 0001:00370E94   120 0001:00370EB3   121 0001:00370EBE
+   122 0001:00370EC9   123 0001:00370ED4   125 0001:00370EDF   126 0001:00370EFA
+   127 0001:00370F06   128 0001:00370F21   129 0001:00370F2D   130 0001:00370F3A
+   132 0001:00370F47   133 0001:00370F53   134 0001:00370F5F   135 0001:00370F6B
+   137 0001:00370F77   138 0001:00370F82   139 0001:00370F8D   140 0001:00370F98
+   142 0001:00370FA3   143 0001:00370FB1   149 0001:00370FD8   150 0001:00370FE0
+   152 0001:00370FE6   154 0001:00370FF3   155 0001:0037100C   156 0001:0037101A
+   158 0001:00371023   159 0001:00371030   160 0001:00371035   161 0001:00371048
+   162 0001:00371053   163 0001:0037105A   167 0001:0037105F   168 0001:0037106B
+   169 0001:00371074   172 0001:0037107A   173 0001:00371084   174 0001:00371091
+   175 0001:00371098   176 0001:003710A5   177 0001:003710B1   178 0001:003710BA
+   179 0001:003710C0   181 0001:003710CB   182 0001:003710D6   183 0001:003710DD
+   184 0001:003710E4   190 0001:00371130   191 0001:00371138   193 0001:0037113E
+   195 0001:0037114B   196 0001:00371164   197 0001:00371172   199 0001:0037117B
+   200 0001:00371188   201 0001:0037118D   202 0001:003711A0   203 0001:003711AB
+   204 0001:003711B2   208 0001:003711B7   209 0001:003711C3   211 0001:003711CC
+   212 0001:003711D9   213 0001:003711E4   214 0001:003711EB   218 0001:003711ED
+   219 0001:003711F7   220 0001:00371204   221 0001:0037120B   222 0001:00371218
+   223 0001:00371224   224 0001:0037122D   225 0001:00371233   227 0001:0037123E
+   228 0001:00371249   229 0001:00371250   230 0001:00371257   234 0001:0037129C
+   236 0001:003712B2   237 0001:003712D3   238 0001:003712DE   239 0001:003712E5
+   243 0001:00371308   245 0001:0037131E   246 0001:0037133F   247 0001:0037134A
+   248 0001:00371351   253 0001:00371374   255 0001:00371379   256 0001:00371387
+   258 0001:00371388   260 0001:00371395   261 0001:00371398   263 0001:0037139D
+   266 0001:003713A0   267 0001:003713B8   268 0001:003713D7   269 0001:003713E2
+   270 0001:00371401   271 0001:0037140C   272 0001:00371419   275 0001:00371440
+   276 0001:00371443   277 0001:00371456   278 0001:00371461   279 0001:00371474
+   280 0001:0037147F   281 0001:0037148C   286 0001:00371490   287 0001:003714AA
+   288 0001:003714B8   289 0001:003714C6   290 0001:003714E2   291 0001:003714FE
+   293 0001:0037152E   296 0001:003715E0   297 0001:003715FA   300 0001:00371646
+   304 0001:003716FC   305 0001:00371726   310 0001:00371728   311 0001:00371745
+   312 0001:00371752   314 0001:00371758   316 0001:00371770   317 0001:00371775
+   318 0001:003717A0   319 0001:003717B8   322 0001:003717CC   323 0001:003717D7
+   326 0001:00371844   327 0001:00371862   329 0001:00371868   331 0001:00371878
+   332 0001:00371884   334 0001:00371891   336 0001:003718DF   337 0001:00371905
+   340 0001:00371910   345 0001:00371954   346 0001:00371971   347 0001:0037197E
+   349 0001:00371984   351 0001:0037199C   352 0001:003719A1   353 0001:003719CC
+   354 0001:003719E4   357 0001:003719F8   358 0001:00371A03   361 0001:00371A70
+   362 0001:00371A8E   364 0001:00371A94   366 0001:00371AA4   367 0001:00371AB0
+   369 0001:00371ABD   371 0001:00371B0B   372 0001:00371B31   375 0001:00371B3C
+   378 0001:00371B80   379 0001:00371B97   380 0001:00371B9D   382 0001:00371BAD
+   383 0001:00371BB9   384 0001:00371BC9   386 0001:00371BD4   387 0001:00371BEA
+   388 0001:00371BF1   392 0001:00371C20   393 0001:00371C36   394 0001:00371C57
+   395 0001:00371C5E   398 0001:00371C84   399 0001:00371C9B   400 0001:00371CA1
+   402 0001:00371CB1   403 0001:00371CBD   404 0001:00371CCD   406 0001:00371CD8
+   407 0001:00371CEE   408 0001:00371CF5   412 0001:00371D24   413 0001:00371D3A
+   414 0001:00371D5B   415 0001:00371D62   420 0001:00371D88   422 0001:00371D8D
+   423 0001:00371D94   425 0001:00371DA2   430 0001:00371DA4   432 0001:00371DA9
+   433 0001:00371DB0   435 0001:00371DBE   437 0001:00371DED
+
+Line numbers for fOptions(Options\fOptions.pas) segment .text
+
+   188 0001:00372A4C   189 0001:00372A54   190 0001:00372A6B   193 0001:00372A79
+   195 0001:00372A82   196 0001:00372A92   197 0001:00372AA2   198 0001:00372AB2
+   199 0001:00372AC2   201 0001:00372AD2   204 0001:00372AE7   207 0001:00372AFC
+   210 0001:00372B11   214 0001:00372B26   215 0001:00372B36   216 0001:00372B46
+   217 0001:00372B56   218 0001:00372B66   219 0001:00372B76   221 0001:00372B89
+   223 0001:00372B9C   224 0001:00372BAF   225 0001:00372BC2   227 0001:00372BD3
+   228 0001:00372BE3   229 0001:00372BF3   230 0001:00372C03   231 0001:00372C13
+   232 0001:00372C23   234 0001:00372C30   235 0001:00372C40   236 0001:00372C50
+   239 0001:00372C63   241 0001:00372C70   243 0001:00372C83   245 0001:00372C96
+   246 0001:00372CA9   251 0001:00372CBC   252 0001:00372CC0   253 0001:00372CC8
+   254 0001:00372CEB   255 0001:00372D0B   256 0001:00372D2B   257 0001:00372D36
+   260 0001:00372D51   262 0001:00372D61   266 0001:00373034   267 0001:00373037
+   268 0001:0037303E   269 0001:00373045   270 0001:0037304C   271 0001:00373053
+   272 0001:0037305A   274 0001:00373061   275 0001:0037308A   276 0001:00373097
+   277 0001:003730A2   283 0001:003730A4   284 0001:003730A9   285 0001:003730C4
+   284 0001:003730EA   286 0001:003730ED   287 0001:00373108   286 0001:0037312E
+   288 0001:00373131   294 0001:00373138   295 0001:0037313E   296 0001:00373144
+   297 0001:0037315B   298 0001:00373177   304 0001:0037317C   305 0001:00373182
+   306 0001:00373188   307 0001:0037319F   308 0001:003731BB   314 0001:003731C0
+   315 0001:003731C6   316 0001:003731CC   317 0001:003731E3   318 0001:003731FF
+   324 0001:00373204   325 0001:0037320A   326 0001:00373210   327 0001:00373227
+   328 0001:00373243   334 0001:00373248   335 0001:0037324E   336 0001:00373254
+   337 0001:0037326B   338 0001:00373287   344 0001:0037328C   345 0001:00373292
+   346 0001:00373298   347 0001:003732AF   348 0001:003732CB   353 0001:003732D0
+   358 0001:003732E8   360 0001:003732ED   364 0001:003733C8   366 0001:003733D9
+   367 0001:003733E2   368 0001:003733EB   369 0001:003733F0   370 0001:003733F9
+   371 0001:003733FE   372 0001:00373407   376 0001:00373410   378 0001:00373419
+   379 0001:00373420   381 0001:0037342F   385 0001:00373448   386 0001:0037344E
+   387 0001:00373457   388 0001:0037345E   389 0001:00373467   390 0001:0037346E
+   391 0001:00373477   392 0001:0037347E   393 0001:00373485   394 0001:0037348D
+   395 0001:00373494   401 0001:00373498   402 0001:003734B3   403 0001:003734C7
+   404 0001:003734E1   405 0001:003734E9   406 0001:003734FC   407 0001:0037350F
+   408 0001:0037352D   409 0001:00373548   410 0001:00373550   411 0001:00373563
+   412 0001:00373571   416 0001:003735A8   417 0001:003735AB   418 0001:003735BF
+   419 0001:003735CC   428 0001:003735D0   429 0001:003735F0   430 0001:003735FF
+   432 0001:0037361F   433 0001:00373642   435 0001:00373678   436 0001:003736A3
+   439 0001:003736B3   440 0001:003736D9   443 0001:00373707   430 0001:00373708
+   444 0001:00373711   445 0001:00373719   446 0001:00373721   447 0001:00373728
+   456 0001:0037377C   457 0001:0037379B   458 0001:003737AA   460 0001:003737CA
+   461 0001:003737ED   462 0001:00373818   464 0001:00373828   465 0001:0037384E
+   467 0001:0037387C   458 0001:0037387D   468 0001:00373886   469 0001:0037388E
+   470 0001:00373896   471 0001:0037389D   477 0001:003738DC   478 0001:003738F2
+   479 0001:003738FA   480 0001:0037390C   482 0001:0037391B   483 0001:00373928
+   484 0001:00373930   485 0001:00373937   490 0001:00373970   491 0001:0037399C
+   496 0001:003739A0   497 0001:003739A7   498 0001:003739AC   507 0001:003739B0
+   508 0001:003739DE   509 0001:003739E8   510 0001:003739F6   513 0001:00373A00
+   515 0001:00373A17   516 0001:00373A37   517 0001:00373A57   518 0001:00373A77
+   519 0001:00373A97   522 0001:00373AA7   523 0001:00373AB1   524 0001:00373ABC
+   525 0001:00373AD4   527 0001:00373ADF   530 0001:00373AED   531 0001:00373AF8
+   532 0001:00373B03   534 0001:00373B0E   535 0001:00373B1D   511 0001:00373B1E
+   537 0001:00373B27   538 0001:00373B31   539 0001:00373B3B   544 0001:00373B94
+   545 0001:00373BB7   546 0001:00373BD8   547 0001:00373BE5   548 0001:00373C00
+   549 0001:00373C2A   550 0001:00373C33   552 0001:00373C38   554 0001:00373C43
+   555 0001:00373C5F   556 0001:00373C78   560 0001:00373C89   561 0001:00373CA5
+   562 0001:00373CBE   564 0001:00373CCD   569 0001:00373D24   570 0001:00373D2D
+   571 0001:00373D3C   573 0001:00373D4D   574 0001:00373D54   575 0001:00373D61
+   576 0001:00373D73   581 0001:00373D78   582 0001:00373D9A   583 0001:00373DAF
+   585 0001:00373DB8   586 0001:00373DC1   588 0001:00373DD9   593 0001:00373E14
+   594 0001:00373E1D   596 0001:00373E32   599 0001:00373E6B   605 0001:00373E98
+   606 0001:00373EB9   608 0001:00373EC9   609 0001:00373ED6   610 0001:00373EE5
+   611 0001:00373F0B   612 0001:00373F1A   613 0001:00373F23   614 0001:00373F36
+   616 0001:00373F4F   617 0001:00373F5A   619 0001:00373F6B   621 0001:00373F7A
+   626 0001:00373FCC   627 0001:00373FDB   628 0001:00373FEA   629 0001:00373FEF
+   636 0001:00373FF0   637 0001:0037400C   638 0001:00374020   639 0001:00374035
+   640 0001:0037404E   641 0001:0037405C   642 0001:0037406F   648 0001:00374094
+   649 0001:0037409A   650 0001:003740A0   651 0001:003740B7   652 0001:003740D3
+   658 0001:003740D8   659 0001:003740DE   660 0001:003740E4   661 0001:003740FB
+   662 0001:00374117   668 0001:0037411C   669 0001:00374122   670 0001:00374128
+   671 0001:0037413F   672 0001:0037415B   677 0001:00374160   678 0001:00374166
+   679 0001:0037416C   680 0001:00374183   681 0001:0037419F   686 0001:003741A4
+   687 0001:003741AA   688 0001:003741B0   689 0001:003741C7   690 0001:003741E3
+   693 0001:003741E8   694 0001:003741EB   695 0001:003741FA   696 0001:00374214
+   698 0001:0037422A   702 0001:0037422C   703 0001:00374235   704 0001:00374253
+   710 0001:0037425C   711 0001:00374262   713 0001:00374278   714 0001:0037427E
+   715 0001:00374295   717 0001:003742B1   724 0001:003742B8   725 0001:003742BE
+   726 0001:003742C2   727 0001:003742D9   728 0001:003742F1   734 0001:003742F8
+   735 0001:003742F9   736 0001:003742FD   738 0001:00374304   740 0001:00374334
+
+Line numbers for fDefaultEvent(fDefaultEvent.pas) segment .text
+
+   131 0001:00000000
+
+Line numbers for fFrame(fFrame.pas) segment .text
+
+   459 0001:0037558C   460 0001:00375595   461 0001:003755A3   464 0001:003755AC
+   465 0001:003755B5   466 0001:003755BD   473 0001:003755C4   474 0001:003755CA
+   475 0001:003755D3   476 0001:003755D8   477 0001:003755E6   478 0001:003755ED
+   480 0001:00375607   482 0001:00375611   484 0001:00375618   485 0001:00375624
+   486 0001:00375628   487 0001:00375636   488 0001:0037564C   489 0001:00375662
+   491 0001:00375670   492 0001:00375675   494 0001:0037567A   496 0001:00375690
+   498 0001:0037569C   506 0001:003756A4   507 0001:003756CD   508 0001:003756D9
+   510 0001:003756EF   513 0001:00375731   515 0001:0037573A   516 0001:00375746
+   518 0001:0037576E   520 0001:0037577C   522 0001:0037578E   523 0001:0037579D
+   524 0001:003757AA   526 0001:003757B4   528 0001:003757C6   529 0001:003757D5
+   530 0001:003757E2   532 0001:003757EC   533 0001:003757FB   534 0001:00375807
+   539 0001:0037588C   540 0001:00375898   542 0001:003758A7   543 0001:003758AB
+   545 0001:003758B0   546 0001:003758BA   547 0001:003758BE   549 0001:003758DC
+   550 0001:003758E9   552 0001:003758ED   553 0001:00375908   554 0001:00375923
+   555 0001:0037593E   556 0001:00375959   557 0001:00375974   558 0001:0037598F
+   559 0001:003759AA   560 0001:003759B0   561 0001:003759CF   562 0001:003759EA
+   563 0001:00375A05   564 0001:00375A1D   565 0001:00375A2E   566 0001:00375A48
+   568 0001:00375A63   570 0001:00375A73   571 0001:00375A80   574 0001:00375A86
+   577 0001:00375A8C   578 0001:00375AB2   581 0001:00375ABF   582 0001:00375AC9
+   586 0001:00375B24   588 0001:00375B45   589 0001:00375B55   590 0001:00375B65
+   591 0001:00375B75   592 0001:00375B85   593 0001:00375B95   595 0001:00375BA1
+   596 0001:00375BB4   597 0001:00375BC7   599 0001:00375C12   600 0001:00375C25
+   601 0001:00375C35   602 0001:00375C80   603 0001:00375C8F   604 0001:00375C9E
+   605 0001:00375CAD   606 0001:00375CBC   607 0001:00375CCB   608 0001:00375CDA
+   609 0001:00375CE9   610 0001:00375D02   611 0001:00375D11   612 0001:00375D1D
+   613 0001:00375D2C   614 0001:00375D4A   615 0001:00375D5B   616 0001:00375D60
+   617 0001:00375D6A   618 0001:00375D76   619 0001:00375D87   620 0001:00375D91
+   621 0001:00375D96   622 0001:00375DAC   623 0001:00375DB4   624 0001:00375DB9
+   627 0001:00375DCE   628 0001:00375DD8   629 0001:00375DE7   630 0001:00375DF6
+   631 0001:00375E02   633 0001:00375E31   637 0001:00375E3F   638 0001:00375E50
+   640 0001:00375E5A   644 0001:003760F0   645 0001:00376111   648 0001:00376121
+   649 0001:00376153   650 0001:00376175   651 0001:00376188   652 0001:003761BA
+   653 0001:003761EC   655 0001:003761FF   656 0001:0037624A   657 0001:00376252
+   660 0001:003762EC   661 0001:003762F5   662 0001:00376312   667 0001:0037631C
+   668 0001:00376326   669 0001:00376332   670 0001:00376390   676 0001:00376398
+   677 0001:003763BF   678 0001:003763C9   679 0001:003763D3   680 0001:003763E7
+   681 0001:0037640A   682 0001:00376424   683 0001:00376440   684 0001:0037644E
+   686 0001:00376468   687 0001:0037646F   688 0001:00376479   689 0001:00376489
+   690 0001:00376499   694 0001:003764B0   695 0001:003764B7   696 0001:003764C1
+   697 0001:003764D1   698 0001:003764E1   700 0001:003764F1   701 0001:003764F9
+   702 0001:00376503   704 0001:00376508   707 0001:0037651D   708 0001:0037652A
+   711 0001:00376541   714 0001:0037654E   715 0001:00376553   717 0001:0037655C
+   718 0001:00376578   720 0001:00376589   723 0001:0037659E   726 0001:003765AD
+   728 0001:003765BB   729 0001:003765C5   730 0001:003765E0   731 0001:003765E8
+   734 0001:003765ED   736 0001:003765F6   737 0001:00376612   740 0001:00376643
+   741 0001:00376654   742 0001:00376668   743 0001:0037667C   744 0001:0037668F
+   745 0001:003766A9   746 0001:003766CC   747 0001:003766E6   750 0001:00376700
+   751 0001:0037670D   754 0001:00376721   755 0001:0037672E   756 0001:00376748
+   757 0001:0037675A   759 0001:00376769   760 0001:0037677A   761 0001:00376782
+   763 0001:00376787   764 0001:003767B9   766 0001:003767C6   767 0001:003767D7
+   768 0001:003767DF   770 0001:003767E4   772 0001:003767F7   774 0001:00376822
+   776 0001:0037683E   777 0001:00376846   782 0001:0037684B   788 0001:0037685A
+   789 0001:003768A2   790 0001:003768AA   793 0001:003768AF   795 0001:003768F7
+   797 0001:00376906   798 0001:0037694E   799 0001:00376956   804 0001:0037695B
+   810 0001:00376975   811 0001:00376986   812 0001:0037698E   816 0001:00376993
+   817 0001:003769A7   818 0001:003769BB   819 0001:003769CF   820 0001:003769E3
+   821 0001:003769F7   822 0001:00376A0B   823 0001:00376A1C   824 0001:00376A2D
+   825 0001:00376A35   827 0001:00376A49   828 0001:00376A9E   829 0001:00376AA6
+   830 0001:00376AAF   832 0001:00376ABD   834 0001:00376ACA   835 0001:00376ADC
+   836 0001:00376AEE   837 0001:00376B00   838 0001:00376B12   839 0001:00376B24
+   840 0001:00376B3F   841 0001:00376B51   842 0001:00376B63   843 0001:00376B75
+   844 0001:00376B87   848 0001:00376B98   849 0001:00376BAD   851 0001:00376BC6
+   853 0001:00376BD9   854 0001:00376BE1   855 0001:00376BEE   856 0001:00376BF8
+   857 0001:00376C02   858 0001:00376C0F   859 0001:00376C24   860 0001:00376C2E
+   861 0001:00376C3B   862 0001:00376C52   863 0001:00376C57   864 0001:00376C61
+   865 0001:00376C6E   866 0001:00376C76   867 0001:00376C81   868 0001:00376C8E
+   869 0001:00376C96   870 0001:00376C9B   878 0001:00376CB2   879 0001:00376CB9
+   882 0001:00377180   883 0001:0037719F   884 0001:003771AD   887 0001:003771C1
+   888 0001:003771D9   889 0001:003771F1   891 0001:00377209   892 0001:00377213
+   893 0001:0037721D   894 0001:00377227   895 0001:0037723F   897 0001:00377264
+   899 0001:00377267   900 0001:0037726E   901 0001:00377278   902 0001:00377286
+   905 0001:0037729A   906 0001:003772B2   907 0001:003772CA   909 0001:003772E2
+   910 0001:003772EC   911 0001:003772F6   912 0001:00377300   913 0001:00377318
+   914 0001:0037731F   916 0001:0037733B   917 0001:0037734B   918 0001:0037735B
+   922 0001:0037736D   923 0001:00377377   924 0001:00377387   925 0001:00377397
+   928 0001:003773B6   929 0001:003773BD   930 0001:003773C7   931 0001:003773D1
+   932 0001:003773E1   933 0001:003773F1   937 0001:0037740B   940 0001:00377498
+   941 0001:003774B7   942 0001:003774D9   943 0001:003774E1   944 0001:003774FD
+   945 0001:00377508   947 0001:00377512   948 0001:00377533   952 0001:00377560
+   953 0001:0037756C   954 0001:0037758E   955 0001:003775B0   956 0001:003775BE
+   957 0001:003775D8   958 0001:003775E2   959 0001:003775EC   960 0001:003775F8
+   961 0001:00377604   962 0001:00377610   963 0001:0037761C   964 0001:00377628
+   965 0001:00377634   966 0001:00377640   967 0001:0037764C   968 0001:00377656
+   974 0001:0037765C   975 0001:0037767F   976 0001:0037768B   978 0001:00377698
+   980 0001:003776A4   981 0001:003776C3   983 0001:003776C5   984 0001:003776DA
+   993 0001:003776FC   994 0001:0037772C   996 0001:00377739   997 0001:00377747
+   998 0001:00377759   999 0001:00377766  1000 0001:00377776  1001 0001:0037778C
+  1002 0001:0037779D  1004 0001:003777A2  1006 0001:003777AF  1007 0001:003777C1
+  1008 0001:003777CE  1009 0001:003777DE  1010 0001:003777F4  1013 0001:00377805
+  1014 0001:00377813  1016 0001:00377818  1019 0001:00377897  1020 0001:003778A6
+  1021 0001:003778B5  1023 0001:003778B7  1014 0001:003778BA  1024 0001:003778C4
+  1026 0001:003778CA  1027 0001:003778D1  1029 0001:003778D8  1031 0001:00377909
+  1032 0001:0037791B  1033 0001:00377928  1034 0001:00377939  1035 0001:0037794F
+  1036 0001:00377963  1029 0001:00377966  1037 0001:00377970  1043 0001:00377A08
+  1044 0001:00377A14  1046 0001:00377A26  1047 0001:00377A39  1049 0001:00377A40
+  1054 0001:00377A94  1055 0001:00377AB7  1056 0001:00377ABF  1057 0001:00377AC7
+  1058 0001:00377ACF  1059 0001:00377AD7  1061 0001:00377AE1  1062 0001:00377AF4
+  1063 0001:00377B0A  1064 0001:00377B1F  1066 0001:00377B38  1067 0001:00377B40
+  1077 0001:00377BC8  1081 0001:00377C90  1082 0001:00377CB3  1083 0001:00377CC6
+  1088 0001:00377CE8  1089 0001:00377CF4  1092 0001:00377CF8  1093 0001:00377D06
+  1094 0001:00377D14  1095 0001:00377D22  1096 0001:00377D36  1097 0001:00377D3C
+  1098 0001:00377D40  1100 0001:00377D69  1102 0001:00377D6C  1103 0001:00377D7A
+  1107 0001:00377D83  1110 0001:00377DA8  1111 0001:00377DB7  1112 0001:00377DC1
+  1113 0001:00377DC8  1115 0001:00377DDE  1116 0001:00377DE3  1117 0001:00377DFB
+  1119 0001:00377E00  1121 0001:00377E09  1122 0001:00377E17  1123 0001:00377E21
+  1127 0001:00377E2B  1129 0001:00377E30  1131 0001:00377E48  1133 0001:00377E59
+  1135 0001:00377E6D  1137 0001:00377E7D  1138 0001:00377E8D  1139 0001:00377E99
+  1140 0001:00377EA5  1141 0001:00377EB1  1142 0001:00377EBD  1143 0001:00377EC9
+  1144 0001:00377ED5  1145 0001:00377EE1  1146 0001:00377EF7  1147 0001:00377F03
+  1148 0001:00377F0F  1163 0001:00377F1B  1164 0001:00377F33  1169 0001:00377F44
+  1170 0001:00377F4D  1171 0001:00377F61  1172 0001:00377F72  1173 0001:00377F83
+  1174 0001:00377F94  1175 0001:00377FA5  1183 0001:00377FC0  1186 0001:00377FE4
+  1187 0001:00377FFF  1188 0001:0037801A  1189 0001:00378035  1190 0001:00378050
+  1191 0001:0037806B  1192 0001:00378086  1193 0001:003780A1  1194 0001:003780C6
+  1195 0001:003780E1  1196 0001:003780FC  1197 0001:0037811F  1198 0001:00378153
+  1199 0001:00378168  1200 0001:0037817B  1201 0001:003781C6  1202 0001:003781CE
+  1203 0001:00378210  1204 0001:0037821F  1205 0001:0037822E  1206 0001:0037823D
+  1207 0001:0037824C  1208 0001:0037825B  1210 0001:00378268  1212 0001:003782B0
+  1217 0001:00378384  1218 0001:00378390  1220 0001:003783C6  1221 0001:003783D4
+  1225 0001:003783D8  1226 0001:003783E5  1227 0001:003783FB  1228 0001:00378418
+  1229 0001:00378423  1230 0001:00378430  1231 0001:00378442  1235 0001:00378448
+  1236 0001:00378454  1238 0001:00378462  1239 0001:0037848A  1241 0001:0037848F
+  1243 0001:0037849B  1244 0001:003784B8  1246 0001:003784C6  1254 0001:003784CC
+  1255 0001:003784E3  1257 0001:003784EB  1258 0001:003784FB  1259 0001:0037850B
+  1260 0001:00378519  1261 0001:00378529  1262 0001:00378539  1263 0001:00378549
+  1264 0001:00378555  1266 0001:0037855F  1267 0001:00378587  1268 0001:00378595
+  1269 0001:003785BD  1270 0001:003785CB  1271 0001:003785F3  1272 0001:00378601
+  1273 0001:00378629  1274 0001:00378637  1275 0001:00378641  1276 0001:00378669
+  1277 0001:00378677  1279 0001:0037867F  1280 0001:0037868B  1282 0001:003786A2
+  1286 0001:003786A8  1287 0001:003786B4  1288 0001:003786E6  1289 0001:00378703
+  1290 0001:00378714  1296 0001:00378718  1297 0001:00378725  1298 0001:00378745
+  1300 0001:00378783  1301 0001:00378794  1303 0001:003787A5  1304 0001:003787ED
+  1305 0001:003787FC  1306 0001:00378811  1307 0001:00378826  1308 0001:0037883B
+  1309 0001:0037884D  1310 0001:0037885F  1311 0001:00378871  1312 0001:00378883
+  1313 0001:00378895  1314 0001:003788A7  1318 0001:003788B9  1319 0001:003788C9
+  1320 0001:003788DE  1321 0001:003788E3  1327 0001:003788E8  1328 0001:00378907
+  1329 0001:00378922  1346 0001:00378928  1350 0001:0037894C  1351 0001:0037896C
+  1352 0001:00378981  1354 0001:003789A0  1368 0001:003789A7  1375 0001:003789CC
+  1378 0001:003789F0  1379 0001:003789F8  1380 0001:00378A02  1381 0001:00378A0E
+  1382 0001:00378A26  1385 0001:00378A3E  1388 0001:00378A98  1389 0001:00378AFC
+  1390 0001:00378B26  1391 0001:00378B3B  1392 0001:00378B4E  1393 0001:00378B66
+  1394 0001:00378BB1  1395 0001:00378C13  1396 0001:00378C55  1397 0001:00378CB2
+  1398 0001:00378CFD  1399 0001:00378D05  1400 0001:00378D0D  1401 0001:00378D26
+  1403 0001:00378D80  1404 0001:00378D88  1405 0001:00378DA9  1407 0001:00378DD7
+  1408 0001:00378DF1  1410 0001:00378DFB  1411 0001:00378E0B  1412 0001:00378E28
+  1413 0001:00378E38  1414 0001:00378E57  1417 0001:00378E60  1418 0001:00378E70
+  1419 0001:00378E86  1421 0001:00378E96  1422 0001:00378EAE  1423 0001:00378EBA
+  1424 0001:00378EBF  1426 0001:00378EE4  1437 0001:00378FFC  1438 0001:00378FFF
+  1440 0001:0037900C  1441 0001:0037901A  1442 0001:00379030  1443 0001:00379049
+  1445 0001:00379057  1446 0001:0037907D  1447 0001:0037908E  1448 0001:003790A6
+  1449 0001:003790BA  1451 0001:003790BC  1452 0001:003790DF  1453 0001:003790E9
+  1454 0001:003790F7  1455 0001:0037910A  1456 0001:00379116  1458 0001:00379127
+  1461 0001:00379136  1464 0001:00379147  1467 0001:0037917B  1468 0001:00379183
+  1469 0001:00379192  1470 0001:0037919E  1471 0001:003791AA  1473 0001:003791B4
+  1474 0001:003791C0  1475 0001:003791C8  1477 0001:003791DB  1479 0001:00379203
+  1480 0001:0037921C  1483 0001:00379228  1486 0001:00379235  1487 0001:00379244
+  1488 0001:00379250  1493 0001:00379255  1494 0001:00379278  1497 0001:00379284
+  1502 0001:00379290  1505 0001:0037929C  1507 0001:003792A7  1509 0001:003792B3
+  1510 0001:003792BD  1511 0001:003792CB  1512 0001:003792D6  1513 0001:003792E6
+  1514 0001:003792F6  1515 0001:00379304  1516 0001:00379315  1519 0001:0037931A
+  1521 0001:00379320  1522 0001:0037932F  1523 0001:0037933B  1527 0001:00379340
+  1534 0001:0037934C  1535 0001:0037935A  1536 0001:0037936B  1540 0001:00379370
+  1541 0001:003793A2  1542 0001:003793AF  1543 0001:003793BF  1544 0001:003793D3
+  1545 0001:003793E4  1553 0001:0037940D  1554 0001:00379594  1555 0001:003795A9
+  1556 0001:003795BE  1557 0001:003795D3  1558 0001:003795E8  1559 0001:003795FD
+  1560 0001:00379612  1561 0001:00379627  1562 0001:0037963C  1563 0001:00379651
+  1564 0001:00379666  1565 0001:0037967B  1566 0001:00379690  1567 0001:003796A5
+  1569 0001:003796BA  1570 0001:003796FE  1571 0001:00379713  1572 0001:00379757
+  1573 0001:0037976C  1574 0001:003797B4  1575 0001:003797C9  1576 0001:003797DE
+  1577 0001:003797F3  1578 0001:00379808  1579 0001:0037981D  1580 0001:00379832
+  1581 0001:00379847  1582 0001:0037985C  1583 0001:00379871  1584 0001:00379886
+  1585 0001:0037989B  1586 0001:003798B0  1587 0001:003798C5  1588 0001:003798DA
+  1589 0001:003798EF  1590 0001:00379904  1591 0001:00379919  1592 0001:0037992E
+  1595 0001:00379943  1596 0001:003799B7  1598 0001:003799C8  1599 0001:003799DA
+  1600 0001:003799EC  1601 0001:003799FE  1602 0001:00379A10  1603 0001:00379A21
+  1605 0001:00379A33  1607 0001:00379A46  1609 0001:00379A57  1610 0001:00379A6B
+  1612 0001:00379A7E  1613 0001:00379A8F  1618 0001:00379C0C  1619 0001:00379C15
+  1621 0001:00379C1F  1622 0001:00379C33  1623 0001:00379C41  1628 0001:00379C52
+  1629 0001:00379C6E  1628 0001:00379C87  1631 0001:00379C8D  1632 0001:00379C99
+  1635 0001:00379CA5  1637 0001:00379CAF  1638 0001:00379CC3  1639 0001:00379CD1
+  1642 0001:00379CDD  1652 0001:00379CE4  1653 0001:00379D06  1654 0001:00379D0A
+  1655 0001:00379D26  1656 0001:00379D36  1673 0001:00379D3E  1676 0001:00379D51
+  1677 0001:00379D71  1679 0001:00379D7E  1681 0001:00379D8A  1682 0001:00379D96
+  1684 0001:00379DA3  1686 0001:00379DBB  1687 0001:00379DC7  1690 0001:00379DCC
+  1694 0001:00379DE5  1695 0001:00379DF1  1697 0001:00379DFB  1699 0001:00379E0E
+  1700 0001:00379E18  1701 0001:00379E20  1702 0001:00379E2E  1704 0001:00379E3A
+  1705 0001:00379E42  1709 0001:00379E4B  1710 0001:00379E4F  1712 0001:00379E60
+  1714 0001:00379E84  1715 0001:00379E8C  1717 0001:00379E9C  1718 0001:00379EAE
+  1719 0001:00379EC6  1724 0001:00379EF0  1725 0001:00379F02  1726 0001:00379F1A
+  1728 0001:00379F42  1729 0001:00379F79  1730 0001:00379F90  1731 0001:00379FA0
+  1733 0001:00379FA8  1734 0001:00379FB0  1735 0001:00379FC3  1738 0001:00379FD0
+  1739 0001:00379FD8  1740 0001:00379FE2  1741 0001:00379FF2  1746 0001:0037A008
+  1747 0001:0037A012  1748 0001:0037A020  1749 0001:0037A02B  1750 0001:0037A03B
+  1751 0001:0037A04B  1752 0001:0037A05F  1757 0001:0037A065  1758 0001:0037A071
+  1759 0001:0037A088  1760 0001:0037A098  1761 0001:0037A0A0  1762 0001:0037A0A8
+  1763 0001:0037A0BB  1766 0001:0037A0BF  1768 0001:0037A0C9  1770 0001:0037A101
+  1772 0001:0037A11A  1773 0001:0037A124  1774 0001:0037A145  1778 0001:0037A15B
+  1779 0001:0037A168  1783 0001:0037A175  1784 0001:0037A198  1785 0001:0037A1A2
+  1786 0001:0037A1C3  1790 0001:0037A1D6  1791 0001:0037A1E0  1792 0001:0037A201
+  1799 0001:0037A214  1800 0001:0037A21E  1801 0001:0037A23F  1805 0001:0037A25D
+  1806 0001:0037A27D  1807 0001:0037A287  1810 0001:0037A299  1813 0001:0037A2AD
+  1815 0001:0037A2C3  1818 0001:0037A3AC  1819 0001:0037A3B3  1821 0001:0037A3D8
+  1822 0001:0037A3EA  1824 0001:0037A3F6  1827 0001:0037A415  1828 0001:0037A424
+  1829 0001:0037A43C  1830 0001:0037A449  1831 0001:0037A453  1832 0001:0037A46F
+  1833 0001:0037A487  1834 0001:0037A490  1836 0001:0037A49A  1837 0001:0037A4D5
+  1839 0001:0037A503  1843 0001:0037A508  1844 0001:0037A514  1845 0001:0037A523
+  1846 0001:0037A52B  1853 0001:0037A530  1854 0001:0037A54F  1855 0001:0037A559
+  1856 0001:0037A569  1857 0001:0037A56D  1858 0001:0037A575  1859 0001:0037A57D
+  1861 0001:0037A58E  1863 0001:0037A5BB  1864 0001:0037A5BF  1865 0001:0037A5D8
+  1867 0001:0037A606  1868 0001:0037A616  1870 0001:0037A633  1873 0001:0037A644
+  1874 0001:0037A655  1875 0001:0037A65F  1876 0001:0037A669  1882 0001:0037A6CC
+  1883 0001:0037A6DB  1884 0001:0037A6E9  1886 0001:0037A6F3  1887 0001:0037A6FD
+  1888 0001:0037A719  1887 0001:0037A732  1890 0001:0037A738  1891 0001:0037A744
+  1897 0001:0037A773  1899 0001:0037A77A  1902 0001:0037A77D  1906 0001:0037A787
+  1907 0001:0037A78F  1912 0001:0037A798  1913 0001:0037A7A4  1923 0001:0037A7A8
+  1924 0001:0037A7CA  1925 0001:0037A7DC  1926 0001:0037A7FD  1927 0001:0037A862
+  1929 0001:0037A888  1930 0001:0037A8BC  1932 0001:0037A934  1933 0001:0037A96A
+  1934 0001:0037A99F  1935 0001:0037A9C6  1936 0001:0037A9FB  1937 0001:0037AA06
+  1952 0001:0037AAD4  1953 0001:0037AAFE  1955 0001:0037AB0F  1956 0001:0037AB1A
+  1958 0001:0037AB1C  1959 0001:0037AB2F  1960 0001:0037AB42  1961 0001:0037AB50
+  1964 0001:0037AB8C  1965 0001:0037ABBB  1968 0001:0037ABFB  1970 0001:0037AC17
+  1972 0001:0037AC30  1973 0001:0037AC44  1975 0001:0037AC5F  1976 0001:0037AC6D
+  1979 0001:0037AC73  1980 0001:0037ACB0  1983 0001:0037ACB6  1984 0001:0037ACBC
+  1986 0001:0037ACC0  1993 0001:0037ADCC  1994 0001:0037AE08  1997 0001:0037AE17
+  1998 0001:0037AE1E  1999 0001:0037AE25  2001 0001:0037AE2B  2002 0001:0037AE3C
+  2003 0001:0037AE4B  2004 0001:0037AE63  2005 0001:0037AE8B  2008 0001:0037AE94
+  2010 0001:0037AEB0  2012 0001:0037AEC9  2013 0001:0037AEDD  2015 0001:0037AEF8
+  2016 0001:0037AF06  2019 0001:0037AF0F  2020 0001:0037AF2A  2023 0001:0037AF39
+  2024 0001:0037AF40  2025 0001:0037AF47  2027 0001:0037AF4D  2028 0001:0037AF5E
+  2029 0001:0037AF6D  2030 0001:0037AF85  2031 0001:0037AFAD  2032 0001:0037AFB3
+  2035 0001:0037AFB9  2036 0001:0037AFBF  2038 0001:0037AFC3  2040 0001:0037B100
+  2041 0001:0037B137  2042 0001:0037B13F  2043 0001:0037B147  2044 0001:0037B14B
+  2045 0001:0037B153  2046 0001:0037B161  2047 0001:0037B179  2049 0001:0037B1DD
+  2050 0001:0037B1E1  2052 0001:0037B1FA  2053 0001:0037B208  2056 0001:0037B20D
+  2057 0001:0037B21E  2058 0001:0037B22C  2060 0001:0037B241  2061 0001:0037B26C
+  2062 0001:0037B28D  2065 0001:0037B2C5  2066 0001:0037B2D8  2068 0001:0037B319
+  2070 0001:0037B31F  2071 0001:0037B333  2072 0001:0037B343  2073 0001:0037B360
+  2075 0001:0037B370  2077 0001:0037B392  2078 0001:0037B3A3  2081 0001:0037B3B2
+  2083 0001:0037B3DE  2089 0001:0037B490  2090 0001:0037B49C  2091 0001:0037B4A1
+  2095 0001:0037B4A8  2096 0001:0037B4B4  2097 0001:0037B4CD  2098 0001:0037B4DE
+  2099 0001:0037B4EF  2103 0001:0037B534  2104 0001:0037B540  2105 0001:0037B545
+  2109 0001:0037B54C  2110 0001:0037B558  2111 0001:0037B55D  2117 0001:0037B564
+  2118 0001:0037B583  2119 0001:0037B5B1  2120 0001:0037B5BF  2127 0001:0037B5E0
+  2128 0001:0037B5F0  2129 0001:0037B606  2130 0001:0037B616  2131 0001:0037B64D
+  2132 0001:0037B684  2133 0001:0037B6BB  2138 0001:0037B6C4  2139 0001:0037B6D4
+  2140 0001:0037B6EA  2141 0001:0037B6FA  2142 0001:0037B731  2143 0001:0037B768
+  2144 0001:0037B79F  2148 0001:0037B7A8  2149 0001:0037B7B8  2150 0001:0037B7C8
+  2151 0001:0037B7FF  2152 0001:0037B836  2156 0001:0037B840  2157 0001:0037B850
+  2158 0001:0037B860  2159 0001:0037B897  2160 0001:0037B8CE  2165 0001:0037B8D8
+  2166 0001:0037B8E8  2167 0001:0037B8F8  2168 0001:0037B92F  2169 0001:0037B966
+  2174 0001:0037B970  2175 0001:0037B980  2176 0001:0037B990  2177 0001:0037B9C7
+  2178 0001:0037B9FE  2187 0001:0037BA08  2188 0001:0037BA28  2189 0001:0037BA37
+  2190 0001:0037BA41  2192 0001:0037BA52  2193 0001:0037BA63  2194 0001:0037BA74
+  2195 0001:0037BA85  2196 0001:0037BA96  2197 0001:0037BAB1  2198 0001:0037BAC2
+  2199 0001:0037BAD3  2200 0001:0037BAE4  2201 0001:0037BAF5  2202 0001:0037BB06
+  2204 0001:0037BB28  2205 0001:0037BB43  2206 0001:0037BB65  2207 0001:0037BB87
+  2208 0001:0037BBA5  2209 0001:0037BBBD  2210 0001:0037BBDC  2211 0001:0037BBF1
+  2212 0001:0037BC06  2216 0001:0037BC1B  2217 0001:0037BC48  2218 0001:0037BC6A
+  2219 0001:0037BC7E  2220 0001:0037BC93  2222 0001:0037BCA8  2225 0001:0037BCB9
+  2226 0001:0037BCC5  2227 0001:0037BCD3  2228 0001:0037BCEB  2229 0001:0037BCF1
+  2230 0001:0037BD22  2231 0001:0037BD28  2232 0001:0037BD59  2233 0001:0037BD5F
+  2234 0001:0037BD90  2235 0001:0037BD96  2237 0001:0037BDC7  2238 0001:0037BDDF
+  2239 0001:0037BDE5  2240 0001:0037BE16  2241 0001:0037BE1C  2242 0001:0037BE4D
+  2243 0001:0037BE53  2246 0001:0037BE91  2248 0001:0037BEA5  2249 0001:0037BEEA
+  2255 0001:0037C018  2256 0001:0037C038  2257 0001:0037C042  2258 0001:0037C051
+  2261 0001:0037C05F  2262 0001:0037C077  2264 0001:0037C097  2265 0001:0037C0B7
+  2266 0001:0037C0D7  2267 0001:0037C0F7  2268 0001:0037C117  2269 0001:0037C141
+  2270 0001:0037C161  2271 0001:0037C181  2272 0001:0037C1A1  2273 0001:0037C1C1
+  2274 0001:0037C1E1  2276 0001:0037C21A  2277 0001:0037C241  2278 0001:0037C27A
+  2279 0001:0037C2B3  2282 0001:0037C2E0  2283 0001:0037C30B  2288 0001:0037C361
+  2293 0001:0037C3BC  2300 0001:0037C408  2303 0001:0037C45C  2306 0001:0037C47C
+  2308 0001:0037C49C  2309 0001:0037C4A8  2312 0001:0037C4D0  2314 0001:0037C4DF
+  2316 0001:0037C4F4  2318 0001:0037C504  2323 0001:0037C648  2324 0001:0037C655
+  2325 0001:0037C675  2326 0001:0037C682  2327 0001:0037C6B8  2328 0001:0037C6EE
+  2329 0001:0037C724  2330 0001:0037C75A  2331 0001:0037C790  2332 0001:0037C7C6
+  2333 0001:0037C7FC  2334 0001:0037C83C  2335 0001:0037C872  2336 0001:0037C8A8
+  2338 0001:0037C8B4  2339 0001:0037C8E1  2340 0001:0037C913  2342 0001:0037C93B
+  2343 0001:0037C950  2344 0001:0037C971  2346 0001:0037C995  2348 0001:0037C9A3
+  2349 0001:0037C9BA  2351 0001:0037C9D4  2352 0001:0037C9DF  2362 0001:0037C9E4
+  2365 0001:0037C9F0  2366 0001:0037C9FF  2367 0001:0037CA0D  2368 0001:0037CA15
+  2369 0001:0037CA23  2370 0001:0037CA31  2371 0001:0037CA3F  2372 0001:0037CA59
+  2373 0001:0037CA73  2374 0001:0037CA8D  2375 0001:0037CAA7  2376 0001:0037CAC1
+  2377 0001:0037CADB  2378 0001:0037CAF5  2379 0001:0037CB0F  2380 0001:0037CB29
+  2381 0001:0037CB43  2382 0001:0037CB5D  2383 0001:0037CB77  2384 0001:0037CB91
+  2385 0001:0037CBAB  2386 0001:0037CBC5  2388 0001:0037CBDF  2389 0001:0037CBF0
+  2390 0001:0037CC05  2391 0001:0037CC1D  2392 0001:0037CC25  2393 0001:0037CC39
+  2394 0001:0037CC51  2395 0001:0037CC95  2398 0001:0037CCDF  2400 0001:0037CCF3
+  2401 0001:0037CD15  2403 0001:0037CD21  2404 0001:0037CD41  2409 0001:0037CD5D
+  2410 0001:0037CD65  2412 0001:0037CD7D  2415 0001:0037CD9A  2418 0001:0037CDAA
+  2419 0001:0037CDEC  2420 0001:0037CDFE  2421 0001:0037CE10  2422 0001:0037CE22
+  2423 0001:0037CE34  2427 0001:0037CE44  2428 0001:0037CE56  2429 0001:0037CE68
+  2430 0001:0037CE7A  2431 0001:0037CE8C  2432 0001:0037CE9E  2433 0001:0037CEB0
+  2434 0001:0037CEC2  2435 0001:0037CEDE  2436 0001:0037CEF0  2437 0001:0037CF02
+  2438 0001:0037CF0F  2439 0001:0037CF17  2440 0001:0037CF2D  2441 0001:0037CF46
+  2442 0001:0037CF59  2467 0001:0037CF60  2470 0001:0037CF6A  2473 0001:0037CF93
+  2474 0001:0037CFC2  2477 0001:0037CFE2  2478 0001:0037D00B  2482 0001:0037D025
+  2486 0001:0037D07E  2487 0001:0037D098  2488 0001:0037D0B2  2489 0001:0037D0D8
+  2490 0001:0037D0FB  2491 0001:0037D11E  2492 0001:0037D144  2493 0001:0037D165
+  2494 0001:0037D190  2495 0001:0037D19C  2496 0001:0037D1D1  2497 0001:0037D1DD
+  2499 0001:0037D213  2501 0001:0037D25D  2502 0001:0037D288  2503 0001:0037D29B
+  2504 0001:0037D2AE  2505 0001:0037D2F6  2506 0001:0037D309  2507 0001:0037D31C
+  2517 0001:0037D364  2518 0001:0037D374  2523 0001:0037D380  2524 0001:0037D38C
+  2526 0001:0037D39D  2527 0001:0037D3A6  2529 0001:0037D3B2  2531 0001:0037D3BC
+  2534 0001:0037D3C0  2535 0001:0037D3CC  2536 0001:0037D3D6  2538 0001:0037D3E6
+  2539 0001:0037D3F0  2542 0001:0037D400  2544 0001:0037D411  2545 0001:0037D41C
+  2546 0001:0037D429  2549 0001:0037D437  2554 0001:0037D4CC  2555 0001:0037D4D8
+  2556 0001:0037D4E3  2557 0001:0037D50F  2559 0001:0037D51F  2560 0001:0037D54B
+  2561 0001:0037D577  2562 0001:0037D5A3  2563 0001:0037D5A7  2564 0001:0037D5D1
+  2565 0001:0037D5F5  2566 0001:0037D60F  2569 0001:0037D63D  2570 0001:0037D64D
+  2571 0001:0037D65D  2572 0001:0037D66D  2574 0001:0037D67D  2577 0001:0037D684
+  2578 0001:0037D690  2579 0001:0037D6A7  2582 0001:0037D6AC  2583 0001:0037D6B8
+  2584 0001:0037D6C6  2587 0001:0037D6CC  2588 0001:0037D6D8  2589 0001:0037D6E6
+  2592 0001:0037D6EC  2593 0001:0037D70B  2595 0001:0037D729  2598 0001:0037D74C
+  2599 0001:0037D758  2600 0001:0037D7A4  2601 0001:0037D7B5  2602 0001:0037D7C6
+  2603 0001:0037D7D7  2604 0001:0037D7E8  2605 0001:0037D7F9  2606 0001:0037D80A
+  2607 0001:0037D81B  2609 0001:0037D834  2615 0001:0037D838  2617 0001:0037D848
+  2619 0001:0037D859  2621 0001:0037D86C  2622 0001:0037D88B  2623 0001:0037D8A0
+  2624 0001:0037D8C2  2626 0001:0037D8DA  2629 0001:0037D8E9  2630 0001:0037D8F6
+  2632 0001:0037D90C  2633 0001:0037D910  2636 0001:0037D91C  2637 0001:0037D928
+  2639 0001:0037D954  2642 0001:0037D980  2643 0001:0037D9A6  2646 0001:0037D9B3
+  2648 0001:0037D9C3  2651 0001:0037D9EF  2652 0001:0037DA15  2655 0001:0037DA22
+  2657 0001:0037DA2F  2660 0001:0037DA5B  2661 0001:0037DA81  2664 0001:0037DA8B
+  2666 0001:0037DA98  2668 0001:0037DAA3  2671 0001:0037DAAF  2672 0001:0037DABE
+  2673 0001:0037DACD  2675 0001:0037DADE  2679 0001:0037DAEA  2682 0001:0037DAF6
+  2683 0001:0037DB05  2684 0001:0037DB14  2686 0001:0037DB23  2691 0001:0037DB54
+  2692 0001:0037DB73  2693 0001:0037DB81  2694 0001:0037DB99  2697 0001:0037DBB0
+  2698 0001:0037DBBD  2702 0001:0037DBD5  2703 0001:0037DBE2  2707 0001:0037DBFA
+  2708 0001:0037DC07  2712 0001:0037DC1C  2713 0001:0037DC29  2717 0001:0037DC3E
+  2718 0001:0037DC4B  2719 0001:0037DC63  2720 0001:0037DC80  2723 0001:0037DC90
+  2725 0001:0037DC9D  2727 0001:0037DCAF  2728 0001:0037DCCB  2729 0001:0037DCE7
+  2730 0001:0037DCF7  2732 0001:0037DD0A  2733 0001:0037DD1A  2734 0001:0037DD2A
+  2735 0001:0037DD3A  2736 0001:0037DD4C  2737 0001:0037DD7D  2738 0001:0037DDA4
+  2742 0001:0037DDC3  2743 0001:0037DDD3  2744 0001:0037DDE3  2745 0001:0037DE05
+  2747 0001:0037DE15  2748 0001:0037DE33  2752 0001:0037DFFC  2753 0001:0037E00B
+  2754 0001:0037E015  2755 0001:0037E01A  2756 0001:0037E029  2757 0001:0037E039
+  2761 0001:0037E040  2762 0001:0037E04F  2763 0001:0037E05F  2764 0001:0037E06E
+  2765 0001:0037E07F  2774 0001:0037E088  2775 0001:0037E0AA  2778 0001:0037E0B1
+  2779 0001:0037E0C7  2780 0001:0037E0DA  2781 0001:0037E0EA  2783 0001:0037E10C
+  2784 0001:0037E11C  2785 0001:0037E12C  2786 0001:0037E149  2787 0001:0037E166
+  2788 0001:0037E179  2789 0001:0037E191  2790 0001:0037E19E  2791 0001:0037E1B6
+  2793 0001:0037E1D4  2794 0001:0037E1E9  2796 0001:0037E23D  2791 0001:0037E240
+  2800 0001:0037E247  2801 0001:0037E25D  2802 0001:0037E26D  2803 0001:0037E27D
+  2805 0001:0037E29B  2806 0001:0037E2A3  2808 0001:0037E2C7  2809 0001:0037E2DD
+  2810 0001:0037E2F2  2813 0001:0037E2FD  2816 0001:0037E3F4  2817 0001:0037E400
+  2818 0001:0037E411  2825 0001:0037E418  2826 0001:0037E43D  2827 0001:0037E444
+  2828 0001:0037E449  2829 0001:0037E45D  2831 0001:0037E466  2832 0001:0037E477
+  2833 0001:0037E48A  2835 0001:0037E48F  2836 0001:0037E4A5  2837 0001:0037E4E2
+  2839 0001:0037E4E9  2841 0001:0037E50D  2842 0001:0037E525  2843 0001:0037E53D
+  2844 0001:0037E555  2846 0001:0037E56D  2847 0001:0037E577  2848 0001:0037E58E
+  2849 0001:0037E5A5  2850 0001:0037E5C3  2851 0001:0037E5E1  2852 0001:0037E5EB
+  2853 0001:0037E62A  2855 0001:0037E643  2856 0001:0037E650  2857 0001:0037E66A
+  2859 0001:0037E680  2860 0001:0037E694  2861 0001:0037E6AD  2862 0001:0037E6C4
+  2863 0001:0037E6DB  2856 0001:0037E6DE  2867 0001:0037E6E8  2868 0001:0037E6F5
+  2870 0001:0037E70F  2873 0001:0037E71F  2874 0001:0037E72D  2875 0001:0037E750
+  2876 0001:0037E76A  2877 0001:0037E79B  2879 0001:0037E7BD  2881 0001:0037E7DF
+  2882 0001:0037E7F3  2883 0001:0037E80A  2884 0001:0037E821  2888 0001:0037E838
+  2889 0001:0037E847  2890 0001:0037E85B  2891 0001:0037E8A6  2892 0001:0037E8B8
+  2896 0001:0037E8BD  2897 0001:0037E8D1  2898 0001:0037E8E8  2899 0001:0037E8FF
+  2902 0001:0037E916  2903 0001:0037E925  2904 0001:0037E939  2905 0001:0037E950
+  2906 0001:0037E967  2908 0001:0037E97E  2911 0001:0037E9A6  2912 0001:0037E9BA
+  2913 0001:0037E9D1  2914 0001:0037E9E8  2918 0001:0037E9FF  2919 0001:0037EA13
+  2920 0001:0037EA5E  2921 0001:0037EA70  2924 0001:0037EA75  2925 0001:0037EA84
+  2926 0001:0037EA98  2927 0001:0037EAE3  2931 0001:0037EAF5  2868 0001:0037EAF8
+  2935 0001:0037EB06  2937 0001:0037EB10  2938 0001:0037EB19  2940 0001:0037EB43
+  2941 0001:0037EB5C  2943 0001:0037EB69  2946 0001:0037EB79  2947 0001:0037EB87
+  2948 0001:0037EBAA  2949 0001:0037EBC3  2950 0001:0037EBF3  2952 0001:0037EC15
+  2954 0001:0037EC37  2955 0001:0037EC4A  2956 0001:0037EC61  2957 0001:0037EC78
+  2961 0001:0037EC8F  2962 0001:0037EC9E  2963 0001:0037ECB1  2964 0001:0037ECFB
+  2968 0001:0037ED12  2969 0001:0037ED25  2970 0001:0037ED3C  2971 0001:0037ED53
+  2974 0001:0037ED6A  2975 0001:0037ED79  2976 0001:0037ED8C  2977 0001:0037EDA3
+  2978 0001:0037EDBA  2980 0001:0037EDD1  2983 0001:0037EDFF  2984 0001:0037EE12
+  2985 0001:0037EE29  2986 0001:0037EE40  2990 0001:0037EE57  2991 0001:0037EE6A
+  2994 0001:0037EEC5  2995 0001:0037EED4  2996 0001:0037EEE7  2997 0001:0037EF3D
+  3001 0001:0037EF4F  3002 0001:0037EF79  3004 0001:0037EFA3  3005 0001:0037EFB7
+  3008 0001:0037EFE9  3009 0001:0037F013  3011 0001:0037F03D  3012 0001:0037F051
+  3021 0001:0037F083  3022 0001:0037F090  3023 0001:0037F0AA  3026 0001:0037F0BB
+  3027 0001:0037F0EF  3029 0001:0037F123  3022 0001:0037F126  3031 0001:0037F12F
+  3032 0001:0037F154  3034 0001:0037F179  3035 0001:0037F180  3038 0001:0037F344
+  3039 0001:0037F350  3040 0001:0037F360  3041 0001:0037F36E  3042 0001:0037F37E
+  3046 0001:0037F384  3047 0001:0037F391  3048 0001:0037F3A4  3049 0001:0037F3B6
+  3050 0001:0037F3CE  3054 0001:0037F3D4  3055 0001:0037F3E1  3056 0001:0037F3F4
+  3057 0001:0037F406  3058 0001:0037F41E  3063 0001:0037F424  3064 0001:0037F446
+  3065 0001:0037F460  3066 0001:0037F482  3069 0001:0037F4AC  3070 0001:0037F4CF
+  3071 0001:0037F4E8  3072 0001:0037F517  3073 0001:0037F554  3074 0001:0037F56B
+  3077 0001:0037F5A0  3078 0001:0037F5AC  3079 0001:0037F5B1  3094 0001:0037F5B8
+  3095 0001:0037F5BB  3096 0001:0037F5C7  3097 0001:0037F5D4  3098 0001:0037F5F7
+  3099 0001:0037F60A  3100 0001:0037F61D  3102 0001:0037F620  3103 0001:0037F642
+  3104 0001:0037F653  3105 0001:0037F68F  3106 0001:0037F69E  3107 0001:0037F6AD
+  3108 0001:0037F6BC  3109 0001:0037F6CB  3110 0001:0037F6DA  3111 0001:0037F6E9
+  3112 0001:0037F6F8  3116 0001:0037F705  3117 0001:0037F72E  3119 0001:0037F744
+  3120 0001:0037F750  3121 0001:0037F75C  3123 0001:0037F769  3125 0001:0037F781
+  3126 0001:0037F78D  3129 0001:0037F79A  3132 0001:0037F7A3  3134 0001:0037F7AA
+  3140 0001:0037FA70  3141 0001:0037FA7C  3142 0001:0037FA81  3143 0001:0037FA89
+  3146 0001:0037FA90  3147 0001:0037FAAC  3148 0001:0037FAB4  3149 0001:0037FABE
+  3152 0001:0037FAE0  3153 0001:0037FAE7  3154 0001:0037FAEF  3155 0001:0037FAF4
+  3158 0001:0037FAF8  3159 0001:0037FB04  3161 0001:0037FB0E  3162 0001:0037FB1C
+  3164 0001:0037FB34  3166 0001:0037FB46  3169 0001:0037FB4C  3170 0001:0037FB59
+  3171 0001:0037FB66  3172 0001:0037FB78  3173 0001:0037FB88  3174 0001:0037FBA8
+  3175 0001:0037FBAD  3179 0001:0037FBB4  3180 0001:0037FBC0  3182 0001:0037FBCA
+  3183 0001:0037FBD6  3186 0001:0037FBE0  3188 0001:0037FBEA  3189 0001:0037FBF6
+  3191 0001:0037FBFE  3193 0001:0037FC08  3194 0001:0037FC14  3196 0001:0037FC1C
+  3200 0001:0037FC20  3202 0001:0037FC4E  3204 0001:0037FC91  3205 0001:0037FCA8
+  3208 0001:0037FCC2  3209 0001:0037FCD9  3210 0001:0037FCEE  3213 0001:0037FCFF
+  3214 0001:0037FD16  3220 0001:0037FD30  3221 0001:0037FD47  3224 0001:0037FD61
+  3225 0001:0037FD78  3228 0001:0037FD92  3229 0001:0037FDA9  3232 0001:0037FDC3
+  3233 0001:0037FDDA  3236 0001:0037FDF4  3237 0001:0037FE0B  3240 0001:0037FE22
+  3241 0001:0037FE39  3244 0001:0037FE50  3245 0001:0037FE67  3250 0001:0037FE7C
+  3252 0001:0037FE82  3253 0001:0037FE9C  3254 0001:0037FEB4  3258 0001:0037FEC9
+  3259 0001:0037FEE1  3261 0001:0037FEF7  3266 0001:0037FF20  3267 0001:0037FF2C
+  3268 0001:0037FF44  3267 0001:0037FF6F  3269 0001:0037FF74  3272 0001:0037FF78
+  3273 0001:0037FF97  3274 0001:0037FFB4  3277 0001:0037FFD8  3280 0001:0037FFDF
+  3281 0001:0037FFF8  3284 0001:00380011  3285 0001:00380021  3286 0001:00380031
+  3287 0001:00380041  3288 0001:00380051  3289 0001:00380061  3290 0001:00380071
+  3291 0001:00380081  3292 0001:00380091  3295 0001:003800A1  3296 0001:003800B9
+  3297 0001:003800D0  3300 0001:003800E7  3301 0001:003800F5  3302 0001:00380103
+  3303 0001:00380111  3304 0001:0038011F  3305 0001:0038012D  3306 0001:0038013B
+  3307 0001:00380149  3308 0001:00380153  3309 0001:00380161  3312 0001:0038016F
+  3313 0001:00380182  3315 0001:0038019A  3320 0001:003801CC  3321 0001:003801EC
+  3322 0001:003801FF  3323 0001:0038020B  3324 0001:0038021A  3325 0001:00380223
+  3326 0001:0038022D  3327 0001:00380237  3328 0001:00380243  3331 0001:0038024B
+  3332 0001:0038026D  3336 0001:0038028E  3338 0001:0038029A  3339 0001:003802AC
+  3340 0001:003802C8  3341 0001:003802E4  3342 0001:003802FC  3344 0001:00380315
+  3346 0001:00380338  3348 0001:0038038D  3349 0001:00380395  3351 0001:0038039A
+  3353 0001:003803BD  3354 0001:003803C7  3358 0001:003803CC  3361 0001:003803E7
+  3363 0001:00380400  3364 0001:0038040E  3365 0001:0038041C  3367 0001:0038042B
+  3369 0001:0038044C  3370 0001:0038045A  3371 0001:0038046C  3372 0001:00380488
+  3373 0001:003804A4  3374 0001:003804BC  3375 0001:003804D0  3376 0001:003804F3
+  3381 0001:0038054A  3382 0001:00380560  3383 0001:00380579  3385 0001:00380587
+  3388 0001:00380591  3389 0001:00380599  3394 0001:003805C0  3395 0001:003805CF
+  3396 0001:003805E1  3398 0001:003805EB  3399 0001:003805FD  3400 0001:00380603
+  3403 0001:00380610  3405 0001:0038061D  3407 0001:00380627  3408 0001:00380631
+  3409 0001:0038065F  3410 0001:00380670  3411 0001:00380676  3413 0001:0038067B
+  3414 0001:0038067E  3415 0001:00380696  3416 0001:003806AE  3417 0001:003806B4
+  3418 0001:003806CA  3419 0001:003806DE  3420 0001:003806EF  3424 0001:003806F7
+  3427 0001:00380700  3428 0001:0038070C  3429 0001:00380718  3430 0001:00380726
+  3433 0001:0038072C  3434 0001:00380738  3435 0001:00380749  3437 0001:00380781
+  3439 0001:0038078D  3440 0001:00380797  3445 0001:0038079C  3446 0001:003807A9
+  3447 0001:003807BA  3450 0001:003807C4  3452 0001:003807DA  3453 0001:003807E8
+  3454 0001:003807F6  3455 0001:003807FC  3456 0001:00380814  3457 0001:00380827
+  3458 0001:0038083F  3461 0001:00380850  3464 0001:00380880  3465 0001:0038088C
+  3466 0001:0038089C  3467 0001:003808AD  3468 0001:003808BD  3471 0001:003808C4
+  3472 0001:003808D1  3473 0001:003808E1  3474 0001:003808F1  3475 0001:00380928
+  3477 0001:0038095F  3479 0001:00380970  3480 0001:00380980  3481 0001:003809B7
+  3482 0001:003809EE  3483 0001:003809FE  3486 0001:00380A04  3488 0001:00380A10
+  3489 0001:00380A17  3490 0001:00380A22  3491 0001:00380A29  3495 0001:00380A30
+  3497 0001:00380A3F  3498 0001:00380A4F  3502 0001:00380A58  3504 0001:00380A67
+  3505 0001:00380A77  3508 0001:00380A80  3510 0001:00380A8C  3511 0001:00380A9D
+  3514 0001:00380AA4  3515 0001:00380AB0  3516 0001:00380ABF  3518 0001:00380AD0
+  3521 0001:00380AD4  3522 0001:00380AE0  3523 0001:00380AF1  3528 0001:00380AF8
+  3532 0001:00380B1A  3533 0001:00380B2D  3534 0001:00380B37  3535 0001:00380B5B
+  3536 0001:00380B73  3537 0001:00380B83  3538 0001:00380B93  3539 0001:00380BA3
+  3540 0001:00380BB3  3541 0001:00380BBD  3550 0001:00380CC4  3551 0001:00380CF9
+  3552 0001:00380CFD  3553 0001:00380D02  3555 0001:00380D10  3557 0001:00380D20
+  3558 0001:00380D2A  3559 0001:00380D4E  3560 0001:00380D66  3561 0001:00380D74
+  3563 0001:00380D99  3565 0001:00380DAF  3567 0001:00380DBB  3568 0001:00380DBF
+  3571 0001:00380DCC  3572 0001:00380DD9  3573 0001:00380DEC  3579 0001:00380DF9
+  3580 0001:00380E06  3581 0001:00380E19  3582 0001:00380E87  3584 0001:00380E99
+  3585 0001:00380EA6  3586 0001:00380EAC  3588 0001:00380EE5  3589 0001:00380F12
+  3590 0001:00380F37  3592 0001:00380F49  3594 0001:00380F56  3595 0001:00380F63
+  3596 0001:00380F69  3598 0001:00380F7E  3599 0001:00380F91  3600 0001:00380FB6
+  3604 0001:00380FC8  3605 0001:00380FD2  3606 0001:00380FE0  3608 0001:0038100E
+  3610 0001:00381024  3612 0001:00381030  3613 0001:0038103D  3614 0001:00381041
+  3620 0001:0038104E  3621 0001:00381052  3624 0001:0038105F  3625 0001:00381067
+  3629 0001:0038106D  3630 0001:0038107D  3631 0001:0038108D  3632 0001:0038109F
+  3633 0001:003810B7  3634 0001:003810DF  3636 0001:003810E8  3639 0001:003810EE
+  3640 0001:003810FC  3641 0001:0038110C  3642 0001:0038111C  3643 0001:00381144
+  3645 0001:0038114D  3650 0001:00381157  3651 0001:00381165  3652 0001:00381175
+  3653 0001:00381185  3654 0001:00381197  3655 0001:003811AF  3656 0001:003811D7
+  3658 0001:003811E4  3659 0001:003811F2  3660 0001:00381208  3661 0001:00381221
+  3663 0001:0038122F  3664 0001:00381255  3665 0001:0038125F  3666 0001:00381284
+  3667 0001:00381295  3670 0001:003812B4  3672 0001:003812B7  3674 0001:003812DB
+  3677 0001:0038156C  3679 0001:00381578  3680 0001:003815A0  3690 0001:003815A4
+  3697 0001:003815CF  3699 0001:003815DB  3702 0001:003815E5  3703 0001:003815EF
+  3704 0001:003815FD  3706 0001:0038160B  3709 0001:00381634  3711 0001:0038164A
+  3713 0001:00381656  3714 0001:00381663  3718 0001:00381668  3723 0001:00381670
+  3724 0001:0038167A  3725 0001:0038169E  3726 0001:003816B6  3728 0001:003816C1
+  3729 0001:003816CF  3730 0001:003816DD  3731 0001:003816EE  3732 0001:003816FA
+  3733 0001:00381717  3736 0001:00381731  3737 0001:00381755  3739 0001:0038176D
+  3740 0001:00381777  3747 0001:00381860  3749 0001:00381887  3750 0001:00381891
+  3752 0001:0038189F  3754 0001:00381906  3755 0001:00381913  3757 0001:00381922
+  3758 0001:0038192A  3762 0001:00381937  3764 0001:0038196D  3766 0001:00381983
+  3768 0001:0038198F  3769 0001:0038199C  3771 0001:003819A1  3773 0001:003819AB
+  3774 0001:003819B5  3777 0001:003819BC  3779 0001:003819D4  3780 0001:003819ED
+  3775 0001:003819F0  3784 0001:00381A0B  3785 0001:00381A18  3786 0001:00381A2F
+  3787 0001:00381A41  3788 0001:00381A59  3790 0001:00381A81  3801 0001:00381B50
+  3802 0001:00381B6E  3803 0001:00381B84  3804 0001:00381B8D  3806 0001:00381BE1
+  3807 0001:00381C3D  3808 0001:00381C6E  3810 0001:00381CEC  3811 0001:00381D12
+  3813 0001:00381D1C  3814 0001:00381D24  3816 0001:00381D29  3821 0001:00381D36
+  3822 0001:00381D40  3823 0001:00381D4E  3825 0001:00381D76  3827 0001:00381D8C
+  3829 0001:00381D98  3830 0001:00381DA5  3833 0001:00381DAA  3834 0001:00381DB0
+  3836 0001:00381DE2  3837 0001:00381E12  3839 0001:00381E18  3840 0001:00381E45
+  3843 0001:00381E5D  3844 0001:00381E64  3847 0001:00381E6F  3848 0001:00381E77
+  3849 0001:00381E7F  3854 0001:00381F70  3855 0001:00381F8C  3856 0001:00381F9C
+  3858 0001:00381FA6  3859 0001:00381FB1  3862 0001:00381FD3  3863 0001:00381FEB
+  3865 0001:00381FFA  3867 0001:00382010  3868 0001:0038201D  3871 0001:00382022
+  3872 0001:0038202A  3873 0001:00382036  3875 0001:00382043  3876 0001:00382051
+  3877 0001:00382067  3878 0001:00382080  3880 0001:0038208E  3881 0001:003820B4
+  3882 0001:003820CA  3883 0001:003820D6  3884 0001:003820DE  3885 0001:003820FF
+  3888 0001:00382112  3889 0001:0038211F  3892 0001:00382178  3893 0001:00382187
+  3894 0001:00382191  3895 0001:003821A3  3896 0001:003821BB  3897 0001:003821E3
+  3898 0001:003821F1  3900 0001:00382216  3902 0001:0038222C  3903 0001:00382238
+  3904 0001:0038224A  3905 0001:00382262  3906 0001:0038228A  3907 0001:0038229A
+  3908 0001:003822AA  3913 0001:00382328  3914 0001:0038234A  3915 0001:00382352
+  3916 0001:00382365  3917 0001:00382377  3918 0001:0038238F  3919 0001:003823B7
+  3920 0001:003823C1  3921 0001:003823CF  3923 0001:003823F4  3925 0001:0038240A
+  3926 0001:0038241A  3927 0001:00382422  3929 0001:00382432  3930 0001:00382444
+  3931 0001:0038245C  3932 0001:00382484  3933 0001:00382494  3934 0001:003824A4
+  3936 0001:003824B4  3942 0001:00382548  3943 0001:0038256A  3944 0001:00382572
+  3945 0001:00382585  3946 0001:00382597  3947 0001:003825AF  3948 0001:003825D7
+  3949 0001:003825E1  3950 0001:003825EF  3952 0001:00382614  3954 0001:0038262A
+  3955 0001:0038263A  3957 0001:00382657  3958 0001:00382667  3959 0001:00382677
+  3960 0001:00382687  3961 0001:00382699  3962 0001:003826B1  3966 0001:003826DE
+  3967 0001:003826EE  3968 0001:003826FE  3969 0001:00382710  3970 0001:00382728
+  3971 0001:00382750  3972 0001:0038275E  3974 0001:00382797  3977 0001:003827AD
+  3978 0001:003827B7  3979 0001:003827DC  3980 0001:003827ED  3987 0001:003828BC
+  3988 0001:003828EF  3990 0001:003828F9  3991 0001:003828FF  3993 0001:00382904
+  3995 0001:0038290F  3997 0001:0038291A  3998 0001:0038294A  3999 0001:00382972
+  4000 0001:003829F0  4006 0001:00382A88  4007 0001:00382AB3  4009 0001:00382ABD
+  4010 0001:00382AC3  4012 0001:00382AC5  4013 0001:00382AD0  4014 0001:00382AE4
+  4023 0001:00382B10  4024 0001:00382B44  4025 0001:00382B4F  4027 0001:00382B7F
+  4029 0001:00382B89  4030 0001:00382BAB  4032 0001:00382BBE  4033 0001:00382BD5
+  4034 0001:00382BEF  4035 0001:00382C23  4037 0001:00382C53  4040 0001:00382C5B
+  4043 0001:00382D4C  4044 0001:00382D6E  4045 0001:00382D78  4046 0001:00382D89
+  4047 0001:00382D99  4048 0001:00382DA7  4049 0001:00382DB7  4050 0001:00382DC7
+  4051 0001:00382DD7  4052 0001:00382DE7  4053 0001:00382DF7  4054 0001:00382E07
+  4055 0001:00382E17  4056 0001:00382E27  4057 0001:00382E37  4058 0001:00382E47
+  4059 0001:00382E57  4060 0001:00382E67  4061 0001:00382E77  4062 0001:00382E87
+  4063 0001:00382EA3  4066 0001:00382EC4  4067 0001:00382ECB  4068 0001:00382ED5
+  4069 0001:00382EE5  4070 0001:00382EF5  4071 0001:00382F03  4072 0001:00382F13
+  4073 0001:00382F23  4074 0001:00382F33  4075 0001:00382F43  4076 0001:00382F53
+  4077 0001:00382F63  4078 0001:00382F73  4079 0001:00382F83  4081 0001:00382F8F
+  4083 0001:00382FA4  4084 0001:00382FB4  4087 0001:00382FC6  4088 0001:00382FD6
+  4091 0001:00382FE6  4092 0001:00382FF6  4093 0001:00383006  4094 0001:00383016
+  4095 0001:00383032  4100 0001:00383050  4101 0001:0038305F  4102 0001:0038306F
+  4106 0001:00383078  4107 0001:00383087  4108 0001:00383097  4111 0001:003830A0
+  4113 0001:003830AC  4114 0001:003830BD  4117 0001:003830C4  4118 0001:003830D0
+  4119 0001:003830F5  4120 0001:00383103  4121 0001:00383111  4123 0001:0038311D
+  4127 0001:00383124  4128 0001:00383146  4129 0001:00383168  4130 0001:00383170
+  4135 0001:0038319C  4136 0001:003831BC  4137 0001:003831DE  4138 0001:00383200
+  4139 0001:00383208  4140 0001:00383228  4148 0001:00383268  4149 0001:0038329F
+  4150 0001:003832C3  4152 0001:003832E9  4153 0001:003832FC  4155 0001:00383324
+  4156 0001:0038332C  4157 0001:0038333F  4158 0001:0038334F  4160 0001:00383361
+  4161 0001:00383378  4162 0001:003833A7  4158 0001:003833AA  4164 0001:003833B1
+  4165 0001:003833C4  4167 0001:003833E6  4168 0001:003833FC  4169 0001:0038340F
+  4170 0001:00383422  4173 0001:00383451  4175 0001:0038345E  4178 0001:00383508
+  4179 0001:00383514  4180 0001:00383524  4181 0001:00383534  4182 0001:00383547
+  4185 0001:0038354C  4186 0001:00383558  4187 0001:0038356B  4188 0001:0038357B
+  4189 0001:0038358B  4193 0001:00383590  4194 0001:0038359F  4195 0001:003835C1
+  4198 0001:003835C8  4201 0001:003835D4  4202 0001:003835E3  4203 0001:003835F2
+  4205 0001:00383605  4206 0001:00383616  4209 0001:0038361C  4210 0001:00383628
+  4211 0001:00383632  4214 0001:00383638  4215 0001:00383645  4216 0001:00383652
+  4218 0001:00383664  4219 0001:00383670  4220 0001:00383678  4221 0001:00383682
+  4226 0001:00383688  4227 0001:00383691  4229 0001:003836A6  4230 0001:003836B8
+  4231 0001:003836D9  4232 0001:003836E4  4227 0001:003836E7  4233 0001:003836ED
+  4237 0001:003836F4  4238 0001:00383703  4240 0001:0038371C  4241 0001:00383724
+  4243 0001:0038372A  4246 0001:00383730  4247 0001:0038374F  4248 0001:0038375F
+  4250 0001:0038376C  4251 0001:00383780  4254 0001:0038378E  4256 0001:0038379F
+  4257 0001:003837AD  4259 0001:003837B7  4260 0001:003837C1  4261 0001:003837F0
+  4262 0001:00383800  4263 0001:0038380C  4265 0001:0038381B  4266 0001:00383825
+  4269 0001:0038383C  4271 0001:0038384D  4272 0001:00383857  4273 0001:00383861
+  4276 0001:0038386A  4281 0001:0038387C  4282 0001:003838AB  4284 0001:003838BC
+  4285 0001:003838CA  4287 0001:003838CF  4288 0001:00383900  4289 0001:0038390C
+  4292 0001:00383931  4293 0001:0038393B  4298 0001:00383947  4299 0001:00383951
+  4300 0001:0038395B  4301 0001:00383965  4302 0001:0038396C  4314 0001:00383977
+  4315 0001:00383985  4318 0001:003839D4  4319 0001:003839E3  4320 0001:003839F3
+  4323 0001:003839FC  4324 0001:00383A0B  4325 0001:00383A1B  4328 0001:00383A24
+  4331 0001:00383A30  4332 0001:00383A41  4338 0001:00383A48  4349 0001:00383A54
+  4350 0001:00383A65  4359 0001:00383A6C  4360 0001:00383A91  4362 0001:00383ADA
+  4363 0001:00383AE4  4364 0001:00383AEC  4365 0001:00383AF8  4366 0001:00383B06
+  4367 0001:00383B0D  4370 0001:00383B2D  4371 0001:00383B3E  4374 0001:00383B4E
+  4377 0001:00383B6E  4378 0001:00383B92  4381 0001:00383BC1  4384 0001:00383BE5
+  4386 0001:00383C56  4387 0001:00383C60  4388 0001:00383C6C  4392 0001:00383C7E
+  4395 0001:00383C8A  4397 0001:00383C97  4398 0001:00383CA7  4399 0001:00383CB7
+  4400 0001:00383CC7  4401 0001:00383CD5  4402 0001:00383CE7  4403 0001:00383D15
+  4405 0001:00383D1A  4406 0001:00383D2B  4408 0001:00383D3A  4409 0001:00383D4A
+  4410 0001:00383D5A  4411 0001:00383D68  4412 0001:00383D79  4416 0001:00383D93
+  4417 0001:00383DA3  4418 0001:00383DB3  4419 0001:00383DC1  4423 0001:00383DDB
+  4426 0001:00383DE2  4429 0001:00383DE7  4432 0001:00383F24  4433 0001:00383F46
+  4434 0001:00383F66  4435 0001:00383F86  4436 0001:00383FA6  4437 0001:00383FEB
+  4438 0001:00384030  4439 0001:00384050  4440 0001:00384070  4441 0001:00384090
+  4442 0001:003840B0  4445 0001:003840E4  4446 0001:003840F0  4447 0001:00384110
+  4448 0001:00384121  4451 0001:00384128  4452 0001:00384134  4453 0001:00384140
+  4454 0001:0038414A  4455 0001:00384157  4456 0001:00384167  4457 0001:00384172
+  4458 0001:0038417C  4462 0001:00384180  4463 0001:0038418F  4464 0001:0038419C
+  4467 0001:003841A4  4468 0001:003841AB  4470 0001:003841B7  4471 0001:003841C5
+  4473 0001:003841D0  4474 0001:003841E8  4475 0001:003841FC  4476 0001:00384213
+  4477 0001:0038422F  4478 0001:0038424B  4479 0001:0038425E  4480 0001:00384275
+  4481 0001:0038428F  4482 0001:003842A6  4483 0001:003842C0  4484 0001:003842EA
+  4485 0001:003842FA  4486 0001:0038430C  4487 0001:0038431A  4495 0001:00384330
+
+Line numbers for fFrame(fFrame.pas) segment .itext
+
+  4489 0002:00001B8C  4490 0002:00001BA6  4492 0002:00001BB0
+
+Line numbers for fBALocalDiagnoses(BA\fBALocalDiagnoses.pas) segment .text
+
+   156 0001:00384890   157 0001:00384897   158 0001:0038489E   159 0001:003848A5
+   160 0001:003848AB   161 0001:003848C4   162 0001:003848CE   163 0001:003848DB
+   165 0001:003848E5   167 0001:003848E8   168 0001:003848EB   169 0001:003848F5
+   170 0001:003848FD   171 0001:00384904   172 0001:0038490B   173 0001:00384912
+   174 0001:0038491C   175 0001:00384923   178 0001:00384928   180 0001:0038492C
+   182 0001:0038493A   183 0001:0038493F   186 0001:00384953   193 0001:00384958
+   194 0001:00384979   196 0001:003849B5   197 0001:003849D7   198 0001:003849F4
+   199 0001:00384A4B   194 0001:00384A4C   200 0001:00384A53   203 0001:00384AAC
+   204 0001:00384AC2   205 0001:00384AD3   206 0001:00384AE4   207 0001:00384AF5
+   208 0001:00384B1A   210 0001:00384B21   211 0001:00384B2B   213 0001:00384B3C
+   215 0001:00384B49   216 0001:00384B50   217 0001:00384B64   218 0001:00384B6B
+   219 0001:00384B72   222 0001:00384BB0   223 0001:00384BD9   224 0001:00384BED
+   225 0001:00384BFB   227 0001:00384C02   228 0001:00384C0F   229 0001:00384C25
+   231 0001:00384C43   233 0001:00384C55   234 0001:00384C6B   236 0001:00384C89
+   238 0001:00384C9B   239 0001:00384CB1   241 0001:00384CCF   243 0001:00384CE1
+   244 0001:00384CF7   246 0001:00384D15   249 0001:00384D27   250 0001:00384D31
+   251 0001:00384D43   252 0001:00384D4D   253 0001:00384D5F   254 0001:00384D69
+   255 0001:00384D7B   256 0001:00384D85   257 0001:00384D97   266 0001:00384DCC
+   268 0001:00384DED   269 0001:00384DF7   270 0001:00384E03   273 0001:00384E12
+   275 0001:00384E20   277 0001:00384E46   279 0001:00384E62   280 0001:00384E87
+   281 0001:00384E93   282 0001:00384EA0   283 0001:00384EB6   287 0001:00384EC7
+   290 0001:00384ED2   291 0001:00384EDC   293 0001:00384EEB   275 0001:00384EEC
+   296 0001:00384EF8   298 0001:00384F06   299 0001:00384F0D   301 0001:00384F33
+   303 0001:00384F4F   304 0001:00384F74   305 0001:00384F80   306 0001:00384F8D
+   307 0001:00384FA3   311 0001:00384FB4   312 0001:00384FBF   316 0001:00384FCD
+   317 0001:00384FD7   319 0001:00384FE6   299 0001:00384FE7   321 0001:00384FEE
+   324 0001:0038501C   328 0001:0038501F   330 0001:00385029   331 0001:00385030
+   332 0001:00385037   336 0001:00385040   337 0001:0038504F   339 0001:00385057
+   340 0001:0038505E   341 0001:0038506C   343 0001:00385076   351 0001:00385078
+   352 0001:00385099   353 0001:003850A8   355 0001:003850BF   356 0001:003850CE
+   357 0001:003850D8   358 0001:00385107   359 0001:00385121   362 0001:00385128
+   364 0001:0038512F   366 0001:00385139   369 0001:00385140   370 0001:00385154
+   369 0001:0038516F   372 0001:00385172   380 0001:003851B0   382 0001:003851D4
+   383 0001:003851EB   384 0001:00385200   386 0001:00385236   388 0001:00385248
+   389 0001:00385257   395 0001:00385271   397 0001:0038528B   400 0001:003852C0
+   401 0001:00385333   403 0001:00385341   404 0001:00385369   405 0001:0038537B
+   406 0001:003853BC   409 0001:00385405   411 0001:0038547E   389 0001:0038547F
+   413 0001:00385486   418 0001:00385508   419 0001:00385525   421 0001:0038553F
+   422 0001:00385561   424 0001:00385581   425 0001:003855EE   419 0001:003855EF
+   426 0001:003855F6   433 0001:0038562C   435 0001:0038564C   436 0001:0038565A
+   437 0001:00385669   438 0001:00385670   439 0001:00385678   440 0001:0038568C
+   441 0001:003856A2   440 0001:00385708   443 0001:0038570B   444 0001:00385715
+   445 0001:0038571F   446 0001:00385726   447 0001:0038573D   446 0001:003857A4
+   450 0001:003857A7   452 0001:003857B2   453 0001:003857C1   454 0001:003857D7
+   453 0001:003857F4   457 0001:003857F9   458 0001:00385808   462 0001:00385894
+   463 0001:00385897   464 0001:003858A5   465 0001:003858B4   466 0001:003858BE
+   467 0001:003858C5   471 0001:003858DC   472 0001:003858E1   476 0001:003858E4
+   477 0001:003858FE   479 0001:00385918   481 0001:00385929   482 0001:00385937
+   483 0001:0038593E   484 0001:0038595D   485 0001:0038597F   487 0001:00385981
+   477 0001:00385982   488 0001:00385985   494 0001:003859B0   495 0001:003859DE
+   497 0001:003859EF   499 0001:00385A03   500 0001:00385A12   502 0001:00385A56
+   497 0001:00385A57   504 0001:00385A5A   506 0001:00385A5B   508 0001:00385A71
+   512 0001:00385A9A   513 0001:00385B25   514 0001:00385B39   516 0001:00385B4F
+   506 0001:00385B50   517 0001:00385B57   525 0001:00385BC8   526 0001:00385BF0
+   527 0001:00385BFE   528 0001:00385C05   529 0001:00385C0D   531 0001:00385C15
+   532 0001:00385C26   533 0001:00385C30   534 0001:00385C4D   535 0001:00385C6B
+   536 0001:00385C7E   537 0001:00385C8D   538 0001:00385CA6   539 0001:00385CB3
+   540 0001:00385CC7   541 0001:00385CF0   543 0001:00385D17   544 0001:00385D2E
+   545 0001:00385D3F   548 0001:00385D63   550 0001:00385D71   551 0001:00385D85
+   553 0001:00385D91   556 0001:00385DBB   557 0001:00385DC3   559 0001:00385DCD
+   565 0001:00385EC4   567 0001:00385ECA   568 0001:00385ECE   569 0001:00385EE7
+   571 0001:00385F08   573 0001:00385F2C   575 0001:00385F32   576 0001:00385F54
+   580 0001:00385F5A   581 0001:00385F7C   569 0001:00385F7D   583 0001:00385F83
+   584 0001:00385F90   587 0001:00385FBC   589 0001:00385FBF   590 0001:00385FC6
+   591 0001:00385FD0   592 0001:00385FD7   593 0001:00385FDE   594 0001:00385FE5
+   596 0001:00385FEC   597 0001:0038600B   602 0001:00386010   604 0001:0038602C
+   606 0001:00386050   607 0001:0038605F   608 0001:0038608D   609 0001:0038609C
+   610 0001:003860CA   604 0001:003860CD   612 0001:003860D0   613 0001:003860E0
+   614 0001:003860EE   615 0001:003860FC   618 0001:00386128   620 0001:00386148
+   622 0001:00386165   624 0001:0038617A   625 0001:00386190   626 0001:003861A2
+   630 0001:003861B4   631 0001:003861BB   632 0001:003861D1   633 0001:003861E3
+   638 0001:003861F5   639 0001:003861FC   641 0001:0038620A   647 0001:00386284
+   648 0001:003862B4   649 0001:003862B8   651 0001:003862C1   653 0001:003862D6
+   654 0001:003862FC   656 0001:00386331   657 0001:00386335   659 0001:00386337
+   651 0001:00386338   661 0001:0038633B   667 0001:00386378   668 0001:003863A2
+   669 0001:003863A6   671 0001:003863BA   672 0001:003863C9   673 0001:003863E7
+   675 0001:003863F4   676 0001:003863F8   678 0001:003863FA   669 0001:003863FB
+   679 0001:003863FE   685 0001:00386434   686 0001:0038645E   687 0001:00386462
+   689 0001:00386476   690 0001:00386485   691 0001:003864A3   693 0001:003864B0
+   694 0001:003864B4   696 0001:003864B6   687 0001:003864B7   697 0001:003864BA
+   704 0001:003864F0   705 0001:0038650F   707 0001:00386513   709 0001:00386531
+   711 0001:00386563   712 0001:00386567   714 0001:00386569   707 0001:0038656A
+   716 0001:0038656D   718 0001:00386573   719 0001:0038658B   721 0001:003865B0
+   725 0001:003865E4   727 0001:003865FE   729 0001:00386614   731 0001:00386633
+   733 0001:00386658   734 0001:003866A0   735 0001:003866B0   736 0001:003866CF
+   738 0001:003866DD   729 0001:003866DE   742 0001:003866EA   743 0001:00386700
+   745 0001:0038671F   747 0001:00386740   748 0001:00386788   749 0001:003867A7
+   751 0001:003867B5   743 0001:003867B6   753 0001:003867BD   754 0001:003867C4
+   757 0001:003867F0   758 0001:003867F3   759 0001:003867FA   760 0001:00386801
+   768 0001:00386804   769 0001:00386826   770 0001:00386835   771 0001:00386844
+   772 0001:0038684C   773 0001:00386854   775 0001:0038685A   777 0001:00386879
+   779 0001:003868A3   780 0001:003868C7   781 0001:003868E5   783 0001:003868F0
+   775 0001:003868F3   787 0001:003868F8   789 0001:00386914   790 0001:00386922
+   792 0001:00386934   794 0001:0038694C   795 0001:0038697B   797 0001:003869C2
+   798 0001:003869CD   792 0001:003869CE   801 0001:003869D7   802 0001:003869E2
+   787 0001:003869E5   803 0001:003869EE   804 0001:003869FA   805 0001:00386A0F
+   817 0001:00386A58   818 0001:00386A8C   819 0001:00386AB7   820 0001:00386ACC
+   821 0001:00386AD4   822 0001:00386AE2   824 0001:00386AE9   826 0001:00386AF4
+   828 0001:00386B0D   830 0001:00386B3D   832 0001:00386B63   833 0001:00386BA1
+   835 0001:00386BC3   836 0001:00386BD4   837 0001:00386C12   840 0001:00386C19
+   826 0001:00386C1A   842 0001:00386C21   848 0001:00386C90   849 0001:00386CB3
+   851 0001:00386CBF   852 0001:00386CD8   854 0001:00386CDE   856 0001:00386CF8
+   857 0001:00386D59   858 0001:00386DB4   859 0001:00386E31   860 0001:00386EAC
+   861 0001:00386F16   854 0001:00386F17   862 0001:00386F20   865 0001:00386F31
+   866 0001:00386F3D   875 0001:00386F8C   876 0001:00386FAF   877 0001:00386FBE
+   879 0001:00386FCC   880 0001:00386FD6   881 0001:00386FE0   882 0001:00386FEA
+   883 0001:00386FF4   884 0001:00386FFE   885 0001:00387006   886 0001:0038700E
+   887 0001:00387016   889 0001:0038701E   890 0001:0038703C   892 0001:00387047
+   897 0001:0038705C   898 0001:003870C8   892 0001:003870C9   899 0001:003870CC
+   900 0001:003870D8   903 0001:003870E3   904 0001:00387103   905 0001:00387121
+   906 0001:00387131   907 0001:0038713E   909 0001:00387154   910 0001:00387174
+   911 0001:003871B2   913 0001:003871B6   915 0001:003871C6   916 0001:003871CC
+   919 0001:003871D3   920 0001:003871E2   921 0001:003871EA   922 0001:003871FE
+   923 0001:0038720D   924 0001:0038721C   925 0001:0038722B   929 0001:00387238
+   907 0001:00387239   933 0001:00387242   935 0001:0038725A   936 0001:00387264
+   937 0001:0038726E   938 0001:00387278   940 0001:00387282   943 0001:003872C4
+   944 0001:003872DB   946 0001:003872E5   947 0001:003872F9   948 0001:00387304
+   951 0001:00387312   952 0001:0038731C   954 0001:00387349   955 0001:00387353
+   957 0001:00387380   958 0001:0038738A   960 0001:003873B7   961 0001:003873C1
+   962 0001:003873EE   968 0001:00387420   969 0001:00387444   970 0001:00387458
+   971 0001:00387460   972 0001:00387468   973 0001:00387470   974 0001:00387478
+   976 0001:0038748E   977 0001:0038749F   978 0001:003874B2   979 0001:003874C5
+   980 0001:003874D8   982 0001:003874E9   974 0001:003874EA   984 0001:003874ED
+   985 0001:00387506   986 0001:00387516   988 0001:0038752A   989 0001:00387539
+   991 0001:0038755C   993 0001:0038756B   994 0001:00387584   995 0001:00387596
+   998 0001:003875B9  1000 0001:003875C8  1001 0001:003875E1  1002 0001:003875F3
+  1005 0001:00387616  1007 0001:00387625  1008 0001:0038763E  1009 0001:00387650
+  1011 0001:00387673  1016 0001:003876D0  1018 0001:003876F5  1020 0001:00387703
+  1022 0001:0038771E  1024 0001:00387730  1026 0001:00387749  1027 0001:00387768
+  1029 0001:0038776A  1022 0001:0038776B  1030 0001:0038776E  1031 0001:00387787
+  1032 0001:003877A4  1034 0001:003877B8  1035 0001:003877C7  1036 0001:003877DC
+  1038 0001:003877F3  1040 0001:0038780F  1041 0001:00387828  1042 0001:0038783A
+  1045 0001:00387851  1047 0001:0038786D  1048 0001:00387886  1049 0001:00387898
+  1052 0001:003878AF  1054 0001:003878CB  1055 0001:003878E4  1056 0001:003878F6
+  1058 0001:0038790D  1064 0001:0038795C  1066 0001:0038797F  1068 0001:0038799C
+  1070 0001:003879B1  1071 0001:003879E4  1072 0001:00387A22  1074 0001:00387A57
+  1076 0001:00387A65  1077 0001:00387A6F  1081 0001:00387A7E  1082 0001:00387A85
+  1083 0001:00387AAE  1087 0001:00387AEE  1089 0001:00387B2C  1066 0001:00387B2D
+  1090 0001:00387B36  1096 0001:00387C6C  1097 0001:00387C71  1098 0001:00387C86
+  1101 0001:00387C96  1102 0001:00387CB1  1101 0001:00387CD1  1104 0001:00387CD4
+  1109 0001:00387CD8  1110 0001:00387CDD  1113 0001:00387CE0  1114 0001:00387CF7
+  1116 0001:00387D06  1117 0001:00387D18  1118 0001:00387D37  1122 0001:00387D5C
+  1123 0001:00387D79  1124 0001:00387D8D  1125 0001:00387D9B  1127 0001:00387DB1
+  1129 0001:00387DF7  1125 0001:00387DF8  1134 0001:00387E16  1138 0001:00387E20
+  1145 0001:00387E68  1147 0001:00387E8A  1148 0001:00387E98  1150 0001:00387EA7
+  1151 0001:00387EB2  1153 0001:00387EC0  1154 0001:00387ECE  1155 0001:00387EEB
+  1156 0001:00387EFF  1154 0001:00387F36  1161 0001:00387F54  1165 0001:00387F5E
+  1166 0001:00387F6A  1168 0001:00387F83  1169 0001:00387F91  1170 0001:00387F99
+  1173 0001:00387FA1  1179 0001:00387FF8  1181 0001:0038801A  1182 0001:00388029
+  1184 0001:0038803A  1186 0001:00388058  1187 0001:0038807C  1188 0001:003880C0
+  1184 0001:003880C1  1189 0001:003880C4  1191 0001:003880DD  1192 0001:003880EB
+  1193 0001:003880F3  1195 0001:003880FB  1200 0001:00388150  1203 0001:0038816C
+  1205 0001:00388182  1207 0001:003881A1  1209 0001:003881C2  1210 0001:0038820A
+  1211 0001:0038821A  1214 0001:0038822D  1216 0001:0038824E  1217 0001:00388296
+  1218 0001:003882A6  1220 0001:003882B4  1205 0001:003882B5  1224 0001:003882C1
+  1225 0001:003882D7  1227 0001:003882F2  1228 0001:00388313  1229 0001:0038835B
+  1225 0001:0038835C  1231 0001:0038835F  1232 0001:00388366  1235 0001:00388390
+  1236 0001:0038839E  1238 0001:003883A5  1239 0001:003883AA  1241 0001:003883B8
+  1242 0001:003883BC  1244 0001:003883CA  1245 0001:003883D0  1247 0001:003883DC
+  1250 0001:0038840C  1251 0001:00388424  1253 0001:0038842D  1257 0001:00388440
+  1258 0001:0038848D  1261 0001:00388495  1265 0001:003885B8  1267 0001:003885EE
+  1268 0001:00388603  1269 0001:00388632  1271 0001:00388659  1272 0001:00388686
+  1274 0001:003886AA  1275 0001:003886D7  1277 0001:003886F9  1280 0001:0038873D
+  1289 0001:003887D4  1290 0001:003887F7  1291 0001:00388804  1292 0001:00388808
+  1293 0001:0038880C  1294 0001:0038881F  1295 0001:00388832  1297 0001:0038884A
+  1298 0001:00388859  1300 0001:00388879  1302 0001:003888AA  1303 0001:003888AE
+  1307 0001:003888B4  1309 0001:003888E5  1310 0001:003888E9  1314 0001:003888EF
+  1315 0001:003888F3  1319 0001:003888F7  1321 0001:00388901  1322 0001:00388944
+  1324 0001:00388974  1325 0001:003889A1  1326 0001:003889CA  1327 0001:00388A08
+  1328 0001:00388A2E  1331 0001:00388A40  1334 0001:00388AAB  1335 0001:00388AB1
+  1336 0001:00388B1A  1295 0001:00388B1B  1337 0001:00388B22  1341 0001:00388BDC
+  1343 0001:00388BE2  1344 0001:00388BEA  1345 0001:00388BF1  1352 0001:00388BF8
+  1353 0001:00388C16  1359 0001:00388C1D  1361 0001:00388C3D  1363 0001:00388C5E
+  1364 0001:00388C81  1365 0001:00388CA0  1366 0001:00388CCD  1368 0001:00388CDB
+  1359 0001:00388CDC  1370 0001:00388CE5  1372 0001:00388D05  1373 0001:00388D2A
+  1375 0001:00388D50  1376 0001:00388D57  1377 0001:00388D76  1378 0001:00388D86
+  1379 0001:00388D96  1380 0001:00388DC3  1382 0001:00388DD6  1384 0001:00388DFC
+  1385 0001:00388E03  1386 0001:00388E22  1387 0001:00388E32  1388 0001:00388E42
+  1389 0001:00388E6F  1391 0001:00388E82  1393 0001:00388EA8  1394 0001:00388EAF
+  1395 0001:00388ECE  1396 0001:00388EDE  1397 0001:00388EEE  1398 0001:00388F1B
+  1400 0001:00388F29  1370 0001:00388F2A  1402 0001:00388F33  1407 0001:00388F8C
+  1409 0001:00388F8F  1410 0001:00388F96  1413 0001:00388F9C  1415 0001:00388F9F
+  1417 0001:00388FA8  1418 0001:00388FB9  1420 0001:00388FC2  1421 0001:00388FC9
+  1426 0001:00388FCC  1429 0001:00388FE1  1431 0001:00388FE7  1432 0001:0038900B
+  1433 0001:0038901F  1435 0001:0038903F  1438 0001:0038904A  1444 0001:00389070
+  1445 0001:00389099  1447 0001:003890C1  1449 0001:003890E0  1451 0001:00389101
+  1452 0001:0038912E  1454 0001:0038915B  1447 0001:0038915C  1457 0001:0038915F
+  1459 0001:00389171  1460 0001:00389178  1462 0001:0038917D  1464 0001:00389190
+  1466 0001:0038919E  1467 0001:003891AB  1471 0001:003891BD  1472 0001:003891CA
+  1475 0001:003891DA  1477 0001:003891E8  1478 0001:003891F5  1482 0001:00389207
+  1483 0001:00389214  1486 0001:00389224  1493 0001:00389258  1494 0001:00389279
+  1495 0001:0038927D  1496 0001:00389281  1498 0001:003892A1  1500 0001:003892C2
+  1501 0001:003892E5  1502 0001:00389303  1503 0001:00389309  1504 0001:00389316
+  1505 0001:0038931C  1507 0001:00389329  1496 0001:0038932A  1508 0001:00389333
+  1510 0001:00389339  1511 0001:00389346  1515 0001:00389358  1516 0001:00389365
+  1518 0001:00389375  1520 0001:0038937B  1521 0001:00389388  1525 0001:0038939A
+  1526 0001:003893A7  1528 0001:003893B7  1531 0001:003893E4  1532 0001:003893E7
+  1533 0001:003893F7  1534 0001:00389407  1535 0001:00389415  1536 0001:00389422
+  1537 0001:0038942F  1540 0001:00389434  1541 0001:00389454  1542 0001:00389462
+  1543 0001:0038946F  1544 0001:0038947D  1545 0001:0038948A  1550 0001:003894AC
+  1551 0001:003894BA  1552 0001:003894CD  1553 0001:003894DB  1554 0001:003894F6
+  1555 0001:00389519  1553 0001:00389534  1557 0001:00389546  1560 0001:00389562
+  1565 0001:00389568  1566 0001:0038956E  1567 0001:00389574  1568 0001:0038957C
+
+Line numbers for fBALocalDiagnoses(BA\fBALocalDiagnoses.pas) segment .itext
+
+  1573 0002:00001BC8  1574 0002:00001BE6  1575 0002:00001BF7  1576 0002:00001C08
+  1577 0002:00001C19  1578 0002:00001C2A  1579 0002:00001C3B  1580 0002:00001C45
+  1581 0002:00001C4F  1582 0002:00001C59  1583 0002:00001C63  1585 0002:00001C6D
+
+Line numbers for UBAGlobals(BA\UBAGlobals.pas) segment .text
+
+   237 0001:00389A18   238 0001:00389A37   239 0001:00389A46   240 0001:00389A5E
+   241 0001:00389A6A   244 0001:00389A95   245 0001:00389A9F   246 0001:00389AA9
+   247 0001:00389AB3   248 0001:00389AC0   239 0001:00389AC3   249 0001:00389AC8
+   273 0001:00389AEC   274 0001:00389B16   275 0001:00389B2E   276 0001:00389B48
+   274 0001:00389B63   277 0001:00389B68   288 0001:00389B90   289 0001:00389BB9
+   290 0001:00389BC8   291 0001:00389BD7   292 0001:00389BDF   294 0001:00389BE7
+   295 0001:00389BF7   296 0001:00389C05   298 0001:00389C10   300 0001:00389C1C
+   302 0001:00389C38   303 0001:00389C46   304 0001:00389C81   300 0001:00389C84
+   308 0001:00389C8B   310 0001:00389CC8   320 0001:00389D04   322 0001:00389D33
+   323 0001:00389D42   324 0001:00389D51   325 0001:00389D59   326 0001:00389D61
+   327 0001:00389D70   328 0001:00389D78   329 0001:00389D96   331 0001:00389DA1
+   332 0001:00389DA9   334 0001:00389DB5   335 0001:00389DD1   337 0001:00389DD9
+   347 0001:00389E20   349 0001:00389E39   350 0001:00389E48   351 0001:00389E50
+   352 0001:00389E5F   353 0001:00389E67   354 0001:00389E76   355 0001:00389E7E
+   357 0001:00389E9E   358 0001:00389EA6   360 0001:00389EB4   361 0001:00389ED0
+   363 0001:00389ED8   370 0001:00389F14   371 0001:00389F39   373 0001:00389F49
+   375 0001:00389F56   376 0001:00389F64   378 0001:00389F80   380 0001:00389F90
+   381 0001:00389F96   383 0001:00389FA6   384 0001:00389FB9   385 0001:00389FCC
+   386 0001:00389FDF   387 0001:00389FF2   389 0001:0038A005   376 0001:0038A008
+   394 0001:0038A02C   395 0001:0038A03A   399 0001:0038A044   413 0001:0038A0A0
+   414 0001:0038A0D4   415 0001:0038A0E3   416 0001:0038A0F2   417 0001:0038A101
+   418 0001:0038A110   419 0001:0038A11E   421 0001:0038A12C   422 0001:0038A138
+   424 0001:0038A143   426 0001:0038A153   427 0001:0038A15B   428 0001:0038A166
+   429 0001:0038A171   431 0001:0038A181   433 0001:0038A1DC   435 0001:0038A237
+   437 0001:0038A292   439 0001:0038A2ED   440 0001:0038A30A   441 0001:0038A327
+   442 0001:0038A344   446 0001:0038A363   450 0001:0038A36E   451 0001:0038A37C
+   452 0001:0038A38D   453 0001:0038A39E   454 0001:0038A3AF   455 0001:0038A3C0
+   458 0001:0038A3CB   477 0001:0038A40C   478 0001:0038A42C   480 0001:0038A430
+   482 0001:0038A447   483 0001:0038A455   484 0001:0038A47E   486 0001:0038A498
+   487 0001:0038A4BF   488 0001:0038A4CB   489 0001:0038A4CF   483 0001:0038A4D3
+   493 0001:0038A4F7   494 0001:0038A505   499 0001:0038A514   500 0001:0038A522
+   501 0001:0038A54B   503 0001:0038A565   504 0001:0038A58C   505 0001:0038A598
+   506 0001:0038A59C   500 0001:0038A5A0   510 0001:0038A5C1   511 0001:0038A5CF
+   516 0001:0038A5D9   547 0001:0038A68C   548 0001:0038A6B1   551 0001:0038A6B5
+   553 0001:0038A6CF   554 0001:0038A6D3   557 0001:0038A6D8   558 0001:0038A6E5
+   560 0001:0038A6F2   561 0001:0038A700   562 0001:0038A71B   563 0001:0038A74C
+   565 0001:0038A752   561 0001:0038A75A   569 0001:0038A77B   570 0001:0038A789
+   573 0001:0038A793   579 0001:0038A7F4   580 0001:0038A801   583 0001:0038A807
+   585 0001:0038A81E   586 0001:0038A82C   587 0001:0038A854   588 0001:0038A86D
+   586 0001:0038A874   592 0001:0038A897   593 0001:0038A8A5   598 0001:0038A8B4
+   599 0001:0038A8C2   600 0001:0038A8EA   601 0001:0038A903   599 0001:0038A90A
+   605 0001:0038A92A   606 0001:0038A938   612 0001:0038A942   614 0001:0038A94A
+   625 0001:0038A9E4   626 0001:0038AA07   627 0001:0038AA0B   628 0001:0038AA13
+   629 0001:0038AA18   630 0001:0038AA27   631 0001:0038AA36   632 0001:0038AA3E
+   633 0001:0038AA4D   635 0001:0038AA55   637 0001:0038AA6C   638 0001:0038AA7A
+   639 0001:0038AAA2   641 0001:0038AABB   642 0001:0038AAE1   643 0001:0038AAE3
+   638 0001:0038AAE6   647 0001:0038AB09   648 0001:0038AB17   653 0001:0038AB26
+   654 0001:0038AB34   655 0001:0038AB5C   657 0001:0038AB75   658 0001:0038AB9B
+   659 0001:0038AB9D   654 0001:0038ABA0   663 0001:0038ABC0   664 0001:0038ABCE
+   670 0001:0038ABD8   671 0001:0038ABE7   672 0001:0038ABEF   675 0001:0038ABFA
+   676 0001:0038AC08   677 0001:0038AC16   678 0001:0038AC24   680 0001:0038AC32
+   682 0001:0038AC49   683 0001:0038AC57   684 0001:0038AC83   686 0001:0038ACA0
+   688 0001:0038ACC6   692 0001:0038ACD3   693 0001:0038ACE2   694 0001:0038ACEA
+   696 0001:0038ACF5   697 0001:0038AD03   698 0001:0038AD11   699 0001:0038AD1F
+   701 0001:0038AD2D   702 0001:0038AD3C   704 0001:0038AD40   683 0001:0038AD43
+   708 0001:0038AD6A   709 0001:0038AD78   714 0001:0038AD87   715 0001:0038AD95
+   716 0001:0038ADC1   718 0001:0038ADDE   720 0001:0038AE04   724 0001:0038AE11
+   725 0001:0038AE20   726 0001:0038AE28   728 0001:0038AE33   729 0001:0038AE41
+   730 0001:0038AE4F   731 0001:0038AE5D   733 0001:0038AE6B   734 0001:0038AE7A
+   736 0001:0038AE7E   715 0001:0038AE81   740 0001:0038AEA5   741 0001:0038AEB3
+   747 0001:0038AEBD   748 0001:0038AEC3   750 0001:0038AECB   751 0001:0038AED1
+   752 0001:0038AED9   758 0001:0038AF8C   759 0001:0038AFBC   762 0001:0038AFCC
+   763 0001:0038AFD9   765 0001:0038AFF5   767 0001:0038B005   768 0001:0038B00F
+   772 0001:0038B023   773 0001:0038B036   774 0001:0038B065   775 0001:0038B094
+   776 0001:0038B0C3   779 0001:0038B0F2   763 0001:0038B0F5   781 0001:0038B0FE
+   798 0001:0038B148   799 0001:0038B167   800 0001:0038B179   801 0001:0038B186
+   833 0001:0038B1A8   834 0001:0038B1CD   836 0001:0038B1DD   838 0001:0038B1EC
+   839 0001:0038B1F9   840 0001:0038B207   842 0001:0038B223   844 0001:0038B233
+   845 0001:0038B239   849 0001:0038B249   850 0001:0038B25A   851 0001:0038B26B
+   852 0001:0038B27C   853 0001:0038B28D   854 0001:0038B29E   856 0001:0038B2A9
+   858 0001:0038B2AB   840 0001:0038B2AE   862 0001:0038B2D2   863 0001:0038B2E0
+   867 0001:0038B2EA   934 0001:0038B348   937 0001:0038B34F   938 0001:0038B35C
+   939 0001:0038B369   940 0001:0038B376   941 0001:0038B383   942 0001:0038B390
+   944 0001:0038B39D   948 0001:0038B3A0   951 0001:0038B3A7   952 0001:0038B3B4
+   953 0001:0038B3C1   954 0001:0038B3CE   955 0001:0038B3DB   956 0001:0038B3E8
+   958 0001:0038B3F5   961 0001:0038B3F8   964 0001:0038B3FF   965 0001:0038B40C
+   966 0001:0038B419   967 0001:0038B426   968 0001:0038B433   969 0001:0038B440
+   971 0001:0038B44D  1012 0001:0038B450  1014 0001:0038B47B  1015 0001:0038B48C
+  1016 0001:0038B49B  1017 0001:0038B4A3  1018 0001:0038B4AD  1019 0001:0038B4BC
+  1020 0001:0038B4D1  1021 0001:0038B4E0  1022 0001:0038B510  1025 0001:0038B51D
+  1026 0001:0038B55F  1027 0001:0038B56E  1028 0001:0038B5A8  1029 0001:0038B5E3
+  1030 0001:0038B5F2  1031 0001:0038B601  1032 0001:0038B63B  1033 0001:0038B64A
+  1034 0001:0038B679  1035 0001:0038B6A8  1036 0001:0038B6D7  1037 0001:0038B722
+  1038 0001:0038B75D  1039 0001:0038B76C  1041 0001:0038B774  1060 0001:0038B948
+  1061 0001:0038B97F  1062 0001:0038B99B  1063 0001:0038B9D6  1064 0001:0038BA02
+  1065 0001:0038BA23  1066 0001:0038BA4C  1067 0001:0038BA75  1068 0001:0038BA9E
+  1069 0001:0038BAC7  1070 0001:0038BAE5  1071 0001:0038BB0B  1072 0001:0038BB31
+  1073 0001:0038BB55  1061 0001:0038BB58  1074 0001:0038BB61  1082 0001:0038BBB0
+  1083 0001:0038BBBC  1084 0001:0038BBD6  1085 0001:0038BBEA  1088 0001:0038BBF0
+  1089 0001:0038BBFC  1090 0001:0038BC15  1091 0001:0038BC25  1098 0001:0038BC44
+  1099 0001:0038BC66  1100 0001:0038BC6A  1101 0001:0038BC77  1102 0001:0038BC85
+  1104 0001:0038BC9D  1106 0001:0038BCAD  1107 0001:0038BCB3  1109 0001:0038BCC3
+  1110 0001:0038BCC7  1112 0001:0038BCC9  1102 0001:0038BCCC  1116 0001:0038BCEC
+  1117 0001:0038BCFA  1120 0001:0038BD04  1123 0001:0038BD60  1124 0001:0038BD64
+  1125 0001:0038BD68  1127 0001:0038BD71  1128 0001:0038BD91  1129 0001:0038BD9E
+  1131 0001:0038BDA2  1134 0001:0038BDC0  1135 0001:0038BDCC  1136 0001:0038BDD4
+  1137 0001:0038BE05
+
+Line numbers for UBAGlobals(BA\UBAGlobals.pas) segment .itext
+
+  1140 0002:00001C84  1141 0002:00001CA2  1142 0002:00001CA9  1143 0002:00001CB0
+  1144 0002:00001CB7  1145 0002:00001CC1  1146 0002:00001CD2  1147 0002:00001CE3
+  1148 0002:00001CF4  1149 0002:00001D05  1150 0002:00001D16  1151 0002:00001D27
+  1152 0002:00001D38  1153 0002:00001D49  1154 0002:00001D5A  1155 0002:00001D6B
+  1156 0002:00001D7C  1157 0002:00001D8D  1158 0002:00001D9E  1159 0002:00001DAF
+  1160 0002:00001DC0  1161 0002:00001DD1  1162 0002:00001DE2  1163 0002:00001DF3
+  1164 0002:00001E04  1165 0002:00001E0E  1166 0002:00001E18  1167 0002:00001E22
+  1168 0002:00001E2C  1169 0002:00001E36  1170 0002:00001E40  1171 0002:00001E4A
+  1172 0002:00001E54  1173 0002:00001E5E  1174 0002:00001E68  1175 0002:00001E72
+  1176 0002:00001E7C  1177 0002:00001E86  1178 0002:00001E90  1180 0002:00001E9A
+
+Line numbers for rOrders(Orders\rOrders.pas) segment .text
+
+   354 0001:0038C32C   355 0001:0038C338   356 0001:0038C344   357 0001:0038C350
+   358 0001:0038C35C   359 0001:0038C368   360 0001:0038C374   361 0001:0038C386
+   362 0001:0038C398   363 0001:0038C3AA   364 0001:0038C3B6   365 0001:0038C3C7
+   366 0001:0038C3D3   367 0001:0038C3E4   368 0001:0038C3F0   369 0001:0038C3FC
+   370 0001:0038C40E   375 0001:0038C414   376 0001:0038C420   377 0001:0038C431
+   378 0001:0038C43D   379 0001:0038C44F   380 0001:0038C460   381 0001:0038C471
+   382 0001:0038C47D   383 0001:0038C489   384 0001:0038C49A   385 0001:0038C4AB
+   386 0001:0038C4BC   387 0001:0038C4CE   388 0001:0038C4DF   389 0001:0038C4F0
+   390 0001:0038C501   391 0001:0038C512   392 0001:0038C523   393 0001:0038C534
+   394 0001:0038C540   395 0001:0038C551   396 0001:0038C55D   397 0001:0038C569
+   398 0001:0038C57A   399 0001:0038C58B   400 0001:0038C59C   401 0001:0038C5AD
+   402 0001:0038C5BE   403 0001:0038C5CF   404 0001:0038C5E0   405 0001:0038C5F2
+   408 0001:0038C5F8   409 0001:0038C5FF   410 0001:0038C60A   411 0001:0038C612
+   412 0001:0038C61D   413 0001:0038C628   414 0001:0038C633   415 0001:0038C63B
+   416 0001:0038C643   417 0001:0038C64E   418 0001:0038C659   419 0001:0038C664
+   420 0001:0038C675   421 0001:0038C680   422 0001:0038C68B   423 0001:0038C696
+   424 0001:0038C6A1   425 0001:0038C6AC   426 0001:0038C6B7   427 0001:0038C6BF
+   428 0001:0038C6CA   429 0001:0038C6D1   430 0001:0038C6D8   431 0001:0038C6E3
+   432 0001:0038C6EE   433 0001:0038C6F9   434 0001:0038C704   435 0001:0038C70F
+   436 0001:0038C71A   441 0001:0038C720   442 0001:0038C729   443 0001:0038C756
+   444 0001:0038C766   447 0001:0038C788   448 0001:0038C791   449 0001:0038C7C8
+   450 0001:0038C7D8   453 0001:0038C7F8   454 0001:0038C801   455 0001:0038C838
+   456 0001:0038C848   459 0001:0038C870   460 0001:0038C876   462 0001:0038C87F
+   463 0001:0038C890   465 0001:0038C8AD   468 0001:0038C8CC   469 0001:0038C8D8
+   470 0001:0038C96D   471 0001:0038C97F   472 0001:0038C991   473 0001:0038C9A3
+   474 0001:0038C9B5   475 0001:0038C9C7   476 0001:0038C9D9   477 0001:0038C9EB
+   478 0001:0038C9FD   479 0001:0038CA0F   480 0001:0038CA21   481 0001:0038CA30
+   482 0001:0038CA3F   483 0001:0038CA4E   484 0001:0038CA5D   485 0001:0038CA6C
+   486 0001:0038CA7B   487 0001:0038CA85   488 0001:0038CA94   490 0001:0038CAA1
+   493 0001:0038CBE8   494 0001:0038CC0C   495 0001:0038CC36   499 0001:0038CC7C
+   500 0001:0038CC95   501 0001:0038CCBD   506 0001:0038CCFC   507 0001:0038CD20
+   508 0001:0038CD24   509 0001:0038CD4E   510 0001:0038CD54   511 0001:0038CD58
+   514 0001:0038CD9C   515 0001:0038CDBE   516 0001:0038CDDB   519 0001:0038CE14
+   520 0001:0038CE36   521 0001:0038CE53   524 0001:0038CE8C   525 0001:0038CEAE
+   526 0001:0038CEBC   527 0001:0038CED7   528 0001:0038CEF7   540 0001:0038CF20
+   541 0001:0038CF3B   542 0001:0038CF49   543 0001:0038CF64   544 0001:0038CF84
+   547 0001:0038CFB0   551 0001:0038CFD4   552 0001:0038CFFC   557 0001:0038D040
+   558 0001:0038D064   559 0001:0038D08C   560 0001:0038D090   561 0001:0038D096
+   562 0001:0038D09A   565 0001:0038D0E0   566 0001:0038D102   567 0001:0038D110
+   568 0001:0038D12B   569 0001:0038D14B   574 0001:0038D174   575 0001:0038D17D
+   576 0001:0038D1B1   577 0001:0038D1B9   582 0001:0038D1C0   585 0001:0038D1EC
+   586 0001:0038D1F4   587 0001:0038D24E   588 0001:0038D271   589 0001:0038D293
+   590 0001:0038D2B4   591 0001:0038D2D5   592 0001:0038D2F8   593 0001:0038D31B
+   594 0001:0038D33C   595 0001:0038D35D   596 0001:0038D37E   597 0001:0038D3A6
+   598 0001:0038D3C7   599 0001:0038D3E8   600 0001:0038D409   601 0001:0038D42A
+   602 0001:0038D453   603 0001:0038D45A   604 0001:0038D48E   605 0001:0038D4D5
+   606 0001:0038D509   607 0001:0038D517   608 0001:0038D525   609 0001:0038D536
+   611 0001:0038D552   612 0001:0038D575   614 0001:0038D580   615 0001:0038D5AE
+   617 0001:0038D5B8   663 0001:0038D62C   664 0001:0038D660   665 0001:0038D668
+   666 0001:0038D676   667 0001:0038D6AA   668 0001:0038D6C9   669 0001:0038D73F
+   671 0001:0038D7C5   672 0001:0038D858   689 0001:0038D887   690 0001:0038D8CD
+   691 0001:0038D912   693 0001:0038D937   694 0001:0038D9C2   695 0001:0038D9F6
+   698 0001:0038DA05   699 0001:0038DA4A   700 0001:0038DA91   701 0001:0038DAD7
+   702 0001:0038DB1C   703 0001:0038DB61   705 0001:0038DB72   706 0001:0038DB7D
+   691 0001:0038DB80   707 0001:0038DB89   715 0001:0038DC5C   716 0001:0038DC90
+   717 0001:0038DC94   718 0001:0038DCA2   719 0001:0038DCD6   720 0001:0038DD42
+   722 0001:0038DD6E   725 0001:0038DD7D   726 0001:0038DD8D   727 0001:0038DD95
+   728 0001:0038DDA1   729 0001:0038DDAB   730 0001:0038DDBB   732 0001:0038DDC2
+   733 0001:0038DDCD   735 0001:0038DDD2   736 0001:0038DE18   737 0001:0038DE5D
+   739 0001:0038DE82   741 0001:0038DF0A   742 0001:0038DF0E   744 0001:0038DF13
+   747 0001:0038DF22   748 0001:0038DF67   749 0001:0038DFAE   750 0001:0038DFF4
+   751 0001:0038E039   752 0001:0038E07E   754 0001:0038E08F   755 0001:0038E095
+   757 0001:0038E0A2   758 0001:0038E0AD   737 0001:0038E0B0   759 0001:0038E0B9
+   771 0001:0038E160   772 0001:0038E17D   773 0001:0038E19D   774 0001:0038E1B6
+   775 0001:0038E1C3   777 0001:0038E1DC   778 0001:0038E1F0   779 0001:0038E212
+   778 0001:0038E252   780 0001:0038E257   782 0001:0038E26C   787 0001:0038E2D0
+   788 0001:0038E2F1   791 0001:0038E30D   792 0001:0038E314   793 0001:0038E337
+   794 0001:0038E35A   795 0001:0038E383   796 0001:0038E3AC   797 0001:0038E3CE
+   798 0001:0038E3F0   799 0001:0038E3FB   800 0001:0038E403   801 0001:0038E424
+   802 0001:0038E42B   803 0001:0038E433   805 0001:0038E43E   810 0001:0038E498
+   813 0001:0038E4BD   814 0001:0038E4CB   815 0001:0038E4E1   816 0001:0038E4F9
+   817 0001:0038E520   818 0001:0038E53B   819 0001:0038E561   820 0001:0038E5CF
+   821 0001:0038E5D4   823 0001:0038E5E9   831 0001:0038E63C   832 0001:0038E660
+   833 0001:0038E66F   834 0001:0038E67D   835 0001:0038E6B1   837 0001:0038E6F5
+   839 0001:0038E705   842 0001:0038E711   843 0001:0038E714   845 0001:0038E71F
+   846 0001:0038E733   848 0001:0038E738   849 0001:0038E746   850 0001:0038E75D
+   851 0001:0038E771   852 0001:0038E786   853 0001:0038E7BF   856 0001:0038E7CC
+   857 0001:0038E843   854 0001:0038E857   859 0001:0038E8C1   860 0001:0038E90C
+   861 0001:0038E914   863 0001:0038E95E   866 0001:0038E977   867 0001:0038E9F3
+   864 0001:0038EA07   870 0001:0038EA7D   840 0001:0038EA8F   872 0001:0038EAA9
+   877 0001:0038EB20   880 0001:0038EB3E   884 0001:0038EBA9   885 0001:0038EBCE
+   886 0001:0038EBF3   888 0001:0038EC0C   897 0001:0038EC90   898 0001:0038ECB8
+   899 0001:0038ECBE   900 0001:0038ECC4   902 0001:0038ED15   903 0001:0038ED1C
+   904 0001:0038ED25   906 0001:0038ED76   907 0001:0038ED7D   908 0001:0038ED86
+   910 0001:0038ED92   911 0001:0038EDAD   912 0001:0038EDC8   913 0001:0038EDCD
+   915 0001:0038EDD3   916 0001:0038EDF6   917 0001:0038EE19   918 0001:0038EE28
+   921 0001:0038EE39   922 0001:0038EE4A   923 0001:0038EE51   929 0001:0038EE88
+   930 0001:0038EEB0   931 0001:0038EEB6   932 0001:0038EEBC   933 0001:0038EEFC
+   934 0001:0038EF03   935 0001:0038EF0C   936 0001:0038EF4C   937 0001:0038EF53
+   938 0001:0038EF5C   940 0001:0038EF68   941 0001:0038EF83   942 0001:0038EF9E
+   943 0001:0038EFA3   945 0001:0038EFA9   946 0001:0038EFCC   947 0001:0038EFEF
+   948 0001:0038EFFE   951 0001:0038F00F   952 0001:0038F020   953 0001:0038F027
+   959 0001:0038F05C   960 0001:0038F07E   961 0001:0038F084   962 0001:0038F08A
+   963 0001:0038F0A5   964 0001:0038F0C0   965 0001:0038F0C5   967 0001:0038F0CB
+   968 0001:0038F0EE   969 0001:0038F111   970 0001:0038F120   972 0001:0038F12F
+   978 0001:0038F158   979 0001:0038F17A   980 0001:0038F180   981 0001:0038F186
+   982 0001:0038F1A1   983 0001:0038F1BC   984 0001:0038F1C1   986 0001:0038F1C7
+   987 0001:0038F1EA   988 0001:0038F20D   989 0001:0038F21C   991 0001:0038F22B
+   994 0001:0038F254   995 0001:0038F263   997 0001:0038F269  1000 0001:0038F28D
+  1002 0001:0038F2AF  1007 0001:0038F2B4  1008 0001:0038F2CD  1010 0001:0038F2D6
+  1011 0001:0038F2F5  1013 0001:0038F307  1014 0001:0038F30F  1017 0001:0038F354
+  1018 0001:0038F378  1019 0001:0038F3A2  1022 0001:0038F3E4  1023 0001:0038F3ED
+  1024 0001:0038F405  1025 0001:0038F41A  1042 0001:0038F438  1043 0001:0038F45D
+  1044 0001:0038F467  1046 0001:0038F476  1047 0001:0038F47B  1048 0001:0038F4B1
+  1049 0001:0038F4C0  1051 0001:0038F4D9  1053 0001:0038F519  1055 0001:0038F51F
+  1056 0001:0038F568  1058 0001:0038F590  1060 0001:0038F59A  1062 0001:0038F616
+  1064 0001:0038F63E  1066 0001:0038F644  1068 0001:0038F682  1072 0001:0038F6A7
+  1073 0001:0038F6E2  1075 0001:0038F705  1051 0001:0038F708  1076 0001:0038F711
+  1078 0001:0038F71D  1079 0001:0038F728  1080 0001:0038F735  1082 0001:0038F742
+  1084 0001:0038F74C  1085 0001:0038F75B  1086 0001:0038F76A  1088 0001:0038F781
+  1090 0001:0038F797  1091 0001:0038F7AB  1093 0001:0038F7C0  1094 0001:0038F7C6
+  1096 0001:0038F7E3  1098 0001:0038F7FE  1100 0001:0038F814  1101 0001:0038F828
+  1103 0001:0038F83D  1104 0001:0038F848  1105 0001:0038F855  1106 0001:0038F862
+  1107 0001:0038F86D  1108 0001:0038F875  1110 0001:0038F882  1112 0001:0038F888
+  1114 0001:0038F8A3  1115 0001:0038F8B9  1116 0001:0038F8CD  1120 0001:0038F8E4
+  1122 0001:0038F8FD  1123 0001:0038F913  1124 0001:0038F927  1126 0001:0038F93C
+  1136 0001:0038FADC  1137 0001:0038FAE5  1138 0001:0038FAFD  1139 0001:0038FB12
+  1154 0001:0038FB30  1155 0001:0038FB75  1156 0001:0038FB7A  1157 0001:0038FB7F
+  1158 0001:0038FB87  1159 0001:0038FB94  1160 0001:0038FB99  1161 0001:0038FB9D
+  1162 0001:0038FBAA  1163 0001:0038FBB5  1165 0001:0038FBCA  1166 0001:0038FBDC
+  1167 0001:0038FBE7  1169 0001:0038FBF7  1170 0001:0038FC08  1172 0001:0038FC0C
+  1173 0001:0038FC2C  1176 0001:0038FC55  1177 0001:0038FC5B  1179 0001:0038FCAA
+  1181 0001:0038FD05  1192 0001:0038FDF4  1196 0001:0038FE52  1199 0001:0038FE69
+  1200 0001:0038FE92  1201 0001:0038FEB9  1202 0001:0038FEE2  1203 0001:0038FF0E
+  1204 0001:0038FF37  1205 0001:0038FF60  1206 0001:0038FF89  1207 0001:0038FF9D
+  1209 0001:0038FFB7  1211 0001:0038FFC7  1213 0001:0038FFED  1215 0001:0039006D
+  1216 0001:00390073  1218 0001:00390075  1211 0001:00390078  1220 0001:00390081
+  1221 0001:00390087  1222 0001:0039009C  1226 0001:003900D4  1229 0001:003901A0
+  1230 0001:003901A6  1231 0001:003901BE  1234 0001:003901DC  1235 0001:003901F8
+  1236 0001:00390222  1239 0001:00390260  1240 0001:0039027C  1241 0001:003902A6
+  1244 0001:003902E4  1245 0001:00390308  1246 0001:00390332  1252 0001:00390378
+  1253 0001:0039039D  1254 0001:003903B6  1258 0001:003903D0  1259 0001:00390408
+  1260 0001:00390445  1261 0001:0039047F  1263 0001:003904A4  1266 0001:003904B3
+  1267 0001:003904EF  1268 0001:0039052B  1269 0001:00390569  1270 0001:003905A4
+  1271 0001:003905DF  1272 0001:00390620  1273 0001:00390659  1274 0001:00390692
+  1276 0001:003906CD  1277 0001:003906DB  1261 0001:003906DE  1279 0001:003906E7
+  1284 0001:00390730  1285 0001:00390756  1286 0001:0039076F  1287 0001:00390777
+  1288 0001:0039077F  1290 0001:00390795  1291 0001:003907AC  1292 0001:003907CA
+  1293 0001:00390800  1295 0001:00390814  1296 0001:00390829  1299 0001:0039087C
+  1300 0001:00390885  1301 0001:003908A5  1302 0001:003908BA  1305 0001:003908D4
+  1306 0001:003908F6  1307 0001:00390923  1309 0001:00390939  1310 0001:00390941
+  1312 0001:00390956  1315 0001:00390994  1316 0001:003909A0  1317 0001:003909BD
+  1322 0001:003909DC  1324 0001:00390A08  1326 0001:00390A71  1327 0001:00390A97
+  1328 0001:00390AD1  1326 0001:00390B17  1329 0001:00390B20  1330 0001:00390B28
+  1331 0001:00390B3D  1338 0001:00390BB0  1339 0001:00390BD2  1340 0001:00390BF7
+  1341 0001:00390C04  1342 0001:00390C16  1343 0001:00390C46  1344 0001:00390C4E
+  1345 0001:00390C63  1362 0001:00390CAC  1363 0001:00390CBB  1364 0001:00390CD8
+  1365 0001:00390CE5  1366 0001:00390D15  1371 0001:00390D34  1372 0001:00390D40
+  1373 0001:00390D5D  1374 0001:00390D6A  1375 0001:00390D90  1378 0001:00390DAC
+  1379 0001:00390DB8  1380 0001:00390DEF  1385 0001:00390E0C  1386 0001:00390E28
+  1387 0001:00390E52  1397 0001:00390E8C  1400 0001:00390EB3  1401 0001:00390ECA
+  1402 0001:00390EDE  1403 0001:00390EF3  1406 0001:00390F00  1407 0001:00390F77
+  1404 0001:00390F8B  1409 0001:00390FF5  1410 0001:00391040  1411 0001:00391048
+  1413 0001:0039108C  1416 0001:003910A2  1417 0001:0039110C  1414 0001:00391120
+  1420 0001:0039118A  1398 0001:0039119C  1422 0001:003911B6  1425 0001:00391204
+  1426 0001:00391226  1427 0001:00391255  1428 0001:003912A3  1431 0001:003912F4
+  1432 0001:0039130D  1433 0001:00391331  1436 0001:0039136C  1437 0001:00391399
+  1438 0001:003913C1  1439 0001:0039140F  1442 0001:00391470  1443 0001:00391494
+  1444 0001:003914B1  1447 0001:003914F4  1448 0001:00391517  1449 0001:0039155D
+  1452 0001:00391598  1453 0001:003915BB  1454 0001:0039160B  1457 0001:00391648
+  1458 0001:00391654  1459 0001:0039166D  1460 0001:00391683  1461 0001:0039169A
+  1473 0001:003916BC  1475 0001:003916EA  1478 0001:003916F9  1481 0001:00391709
+  1484 0001:00391717  1485 0001:0039172C  1490 0001:0039178E  1491 0001:0039179C
+  1492 0001:003917B2  1493 0001:003917CA  1494 0001:003917EC  1495 0001:00391807
+  1496 0001:00391831  1497 0001:0039184C  1498 0001:00391885  1499 0001:003918A0
+  1500 0001:003918D6  1501 0001:003918F1  1502 0001:00391909  1501 0001:0039194F
+  1503 0001:00391954  1504 0001:0039198D  1507 0001:003919A9  1509 0001:00391A21
+  1510 0001:00391A6B  1504 0001:00391A6E  1511 0001:00391A77  1512 0001:00391A92
+  1513 0001:00391AC1  1514 0001:00391ADC  1515 0001:00391B12  1516 0001:00391B17
+  1519 0001:00391B1F  1520 0001:00391B2F  1525 0001:00391B41  1527 0001:00391B51
+  1530 0001:00391BE0  1531 0001:00391BE9  1532 0001:00391C19  1533 0001:00391C21
+  1536 0001:00391C3C  1537 0001:00391C45  1538 0001:00391C75  1539 0001:00391C7D
+  1542 0001:00391C9C  1543 0001:00391CA8  1544 0001:00391CC0  1547 0001:00391CDA
+  1550 0001:00391D0C  1551 0001:00391D25  1552 0001:00391D4E  1557 0001:00391D8C
+  1558 0001:00391DB8  1559 0001:00391DC6  1560 0001:00391DE1  1561 0001:00391DEE
+  1562 0001:00391E4D  1563 0001:00391E58  1564 0001:00391E91  1565 0001:00391E99
+  1566 0001:00391EA7  1569 0001:00391F0C  1570 0001:00391F15  1572 0001:00391F3E
+  1575 0001:00391F5C  1576 0001:00391F68  1577 0001:00391F9B  1578 0001:00391FA3
+  1581 0001:00391FC0  1582 0001:00391FCC  1583 0001:00391FE5  1584 0001:00391FFA
+  1587 0001:00392018  1588 0001:00392024  1589 0001:0039204D  1590 0001:00392055
+  1593 0001:00392074  1594 0001:00392080  1595 0001:00392099  1596 0001:003920AE
+  1599 0001:003920CC  1600 0001:003920EF  1601 0001:00392124  1604 0001:00392160
+  1605 0001:0039216C  1606 0001:00392195  1607 0001:0039219D  1610 0001:003921BC
+  1611 0001:003921C8  1612 0001:003921F1  1613 0001:003921F9  1616 0001:00392218
+  1617 0001:00392224  1618 0001:00392255  1619 0001:0039225D  1622 0001:0039227C
+  1623 0001:003922A0  1624 0001:003922CA  1630 0001:00392310  1631 0001:00392362
+  1632 0001:00392371  1633 0001:00392378  1634 0001:00392395  1636 0001:0039239D
+  1637 0001:003923BC  1634 0001:003923C3  1639 0001:003923CB  1640 0001:003923D9
+  1642 0001:00392433  1646 0001:0039246C  1647 0001:003924D5  1650 0001:003924EF
+  1652 0001:003924FF  1658 0001:003926F0  1659 0001:0039271A  1660 0001:0039272D
+  1661 0001:00392739  1662 0001:00392748  1663 0001:00392776  1664 0001:00392785
+  1665 0001:003927A2  1668 0001:00392814  1669 0001:0039283B  1670 0001:00392876
+  1673 0001:003928C8  1674 0001:003928E7  1675 0001:00392922  1678 0001:0039296C
+  1679 0001:003929A7  1680 0001:003929E5  1681 0001:003929EF  1684 0001:00392A38
+  1685 0001:00392A54  1686 0001:00392A94  1691 0001:00392AD0  1692 0001:00392AEC
+  1693 0001:00392B1A  1698 0001:00392B64  1699 0001:00392B88  1702 0001:00392BA1
+  1703 0001:00392BDB  1704 0001:00392C13  1705 0001:00392C4B  1706 0001:00392C85
+  1707 0001:00392CBD  1708 0001:00392CC8  1709 0001:00392D27  1711 0001:00392D64
+  1716 0001:00392DB0  1717 0001:00392DEC  1718 0001:00392E12  1719 0001:00392E2C
+  1723 0001:00392E52  1724 0001:00392EC7  1725 0001:00392EEC  1719 0001:00392EEF
+  1727 0001:00392EF8  1730 0001:00392F50  1731 0001:00392F72  1732 0001:00392F8B
+  1733 0001:00392FA1  1734 0001:00392FB8  1737 0001:00392FF4  1738 0001:0039301B
+  1739 0001:00393045  1742 0001:00393084  1743 0001:003930A8  1744 0001:003930C5
+  1749 0001:00393108  1750 0001:0039312C  1751 0001:00393130  1752 0001:0039315A
+  1753 0001:00393160  1754 0001:00393164  1759 0001:003931A8  1760 0001:003931CC
+  1761 0001:003931D0  1762 0001:003931FA  1763 0001:00393200  1764 0001:00393204
+  1767 0001:00393248  1768 0001:0039326F  1769 0001:00393297  1772 0001:003932D8
+  1773 0001:003932FA  1774 0001:00393317  1777 0001:00393350  1778 0001:00393374
+  1779 0001:00393378  1780 0001:003933A3  1781 0001:003933A7  1785 0001:003933EC
+  1786 0001:003933F8  1787 0001:00393411  1788 0001:00393426  1791 0001:00393444
+  1792 0001:00393466  1793 0001:00393483  1799 0001:003934C4  1800 0001:003934E6
+  1801 0001:003934F5  1804 0001:00393513  1805 0001:0039352A  1806 0001:0039353E
+  1807 0001:00393553  1810 0001:00393560  1811 0001:003935D7  1808 0001:003935EB
+  1813 0001:00393655  1814 0001:003936A0  1815 0001:003936A8  1817 0001:003936EC
+  1820 0001:00393702  1821 0001:0039376C  1818 0001:00393780  1824 0001:003937EA
+  1802 0001:003937FC  1826 0001:00393816  1827 0001:0039381C  1830 0001:00393884
+  1831 0001:00393890  1832 0001:003938AD  1835 0001:003938CC  1836 0001:003938E8
+  1837 0001:00393916  1840 0001:00393960  1841 0001:0039397C  1842 0001:003939AA
+  1845 0001:003939F4  1846 0001:00393A10  1847 0001:00393A3E  1850 0001:00393A88
+  1851 0001:00393A94  1852 0001:00393AB1  1872 0001:00393AD0  1873 0001:00393AFE
+  1874 0001:00393B2E  1877 0001:00393B38  1878 0001:00393B4F  1879 0001:00393B63
+  1875 0001:00393B6E  1881 0001:00393B84  1882 0001:00393B8F  1897 0001:00393BD8
+  1898 0001:00393BF1  1899 0001:00393C1E  1902 0001:00393C68  1903 0001:00393C81
+  1904 0001:00393CAE  1907 0001:00393CF8  1908 0001:00393D14  1909 0001:00393D3E
+  1912 0001:00393D7C  1913 0001:00393D85  1914 0001:00393DA1  1917 0001:00393DC0
+  1918 0001:00393DE2  1919 0001:00393DFF  1922 0001:00393E3C  1923 0001:00393E60
+  1924 0001:00393E8E  1927 0001:00393EE0  1928 0001:00393F04  1929 0001:00393F32
+  1932 0001:00393F84  1933 0001:00393F90  1934 0001:00393FAD  1937 0001:00393FCC
+  1938 0001:00393FD8  1939 0001:00393FF5  1947 0001:00394014  1948 0001:00394020
+  1949 0001:0039403D  1957 0001:0039405C  1958 0001:00394068  1959 0001:00394085
+  1962 0001:003940A4  1963 0001:003940B0  1964 0001:003940CD  1967 0001:003940EC
+  1968 0001:003940F8  1969 0001:00394115  1977 0001:00394138  1978 0001:0039415B
+  1979 0001:0039415F  1980 0001:00394194  1981 0001:003941A4  1982 0001:003941A8
+  1985 0001:003941E8  1986 0001:0039420F  1987 0001:00394246  1992 0001:0039428C
+  1993 0001:003942B5  1994 0001:003942B9  1995 0001:003942E3  1997 0001:00394304
+  1998 0001:00394322  2000 0001:00394326  2005 0001:00394370  2006 0001:0039438C
+  2007 0001:00394390  2008 0001:003943AD  2009 0001:003943BB  2010 0001:003943BF
+  2015 0001:003943FC  2016 0001:00394420  2017 0001:00394424  2018 0001:00394441
+  2019 0001:0039444F  2020 0001:00394453  2031 0001:0039449C  2032 0001:003944B5
+  2033 0001:003944D1  2034 0001:003944DE  2037 0001:00394520  2038 0001:0039452C
+  2039 0001:00394549  2042 0001:00394568  2043 0001:00394571  2044 0001:0039458D
+  2047 0001:003945B0  2048 0001:003945BC  2049 0001:003945D9  2054 0001:003945FC
+  2055 0001:00394615  2056 0001:00394619  2057 0001:00394642  2058 0001:00394648
+  2059 0001:0039464C  2062 0001:0039468C  2063 0001:003946AE  2064 0001:003946CB
+  2069 0001:00394708  2070 0001:00394724  2071 0001:00394728  2072 0001:00394752
+  2073 0001:00394758  2074 0001:0039475C  2079 0001:00394798  2080 0001:003947B7
+  2081 0001:003947BB  2082 0001:003947F2  2083 0001:003947F8  2084 0001:003947FC
+  2089 0001:00394838  2090 0001:00394857  2091 0001:0039485B  2092 0001:00394892
+  2093 0001:00394898  2094 0001:0039489C  2102 0001:003948DC  2103 0001:00394907
+  2104 0001:00394920  2106 0001:00394936  2107 0001:0039495C  2109 0001:00394964
+  2110 0001:00394976  2111 0001:0039498A  2114 0001:0039499F  2117 0001:003949E4
+  2118 0001:003949F0  2119 0001:00394A09  2121 0001:00394A1F  2122 0001:00394A38
+  2124 0001:00394A4D  2135 0001:00394A6C  2136 0001:00394A9A  2137 0001:00394A9E
+  2139 0001:00394AAD  2140 0001:00394AB1  2142 0001:00394AB6  2144 0001:00394AC6
+  2145 0001:00394AEB  2146 0001:00394B01  2148 0001:00394B07  2150 0001:00394B39
+  2151 0001:00394B41  2154 0001:00394B45  2156 0001:00394B4B  2157 0001:00394B53
+  2161 0001:00394B57  2169 0001:00394C00  2170 0001:00394C3C  2171 0001:00394C40
+  2173 0001:00394C4F  2174 0001:00394C53  2176 0001:00394C58  2178 0001:00394C68
+  2179 0001:00394C85  2181 0001:00394C92  2182 0001:00394C9D  2184 0001:00394CA3
+  2186 0001:00394CD1  2187 0001:00394CEE  2191 0001:00394CF4  2192 0001:00394D11
+  2195 0001:00394D15  2200 0001:00394E10  2201 0001:00394E1C  2202 0001:00394E39
+  2205 0001:00394E58  2206 0001:00394E71  2207 0001:00394EA8  2208 0001:00394EB3
+  2211 0001:00394EEC  2212 0001:00394F0B  2213 0001:00394F38  2214 0001:00394F85
+  2218 0001:00394FC0  2220 0001:00394FE5  2221 0001:00394FF1  2222 0001:0039504F
+  2223 0001:00395097  2224 0001:003950AC  2237 0001:003950E8  2238 0001:003950F4
+  2239 0001:00395121  2240 0001:00395136  2243 0001:00395154  2244 0001:00395160
+  2246 0001:00395197  2249 0001:003951B4  2250 0001:003951D0  2251 0001:003951FE
+  2254 0001:00395248  2255 0001:00395254  2256 0001:00395271  2300 0001:00395290
+  2301 0001:003952BC  2303 0001:003952C2  2304 0001:003952FD  2308 0001:00395336
+  2309 0001:00395364  2311 0001:00395391  2312 0001:003953A8  2315 0001:003953B7
+  2316 0001:003953DC  2317 0001:003953F5  2318 0001:0039545C  2319 0001:00395482
+  2320 0001:0039549B  2321 0001:00395502  2322 0001:00395528  2323 0001:00395541
+  2324 0001:003955A8  2325 0001:003955D4  2326 0001:003955F3  2327 0001:00395672
+  2332 0001:003956AD  2334 0001:003956B3  2335 0001:003956C7  2336 0001:003956CF
+  2338 0001:003956E4  2343 0001:00395754  2344 0001:0039578A  2345 0001:003957C9
+  2350 0001:0039581C  2351 0001:00395846  2352 0001:0039587B  2353 0001:00395881
+  2355 0001:00395888  2356 0001:00395893  2359 0001:003958E0  2360 0001:003958F9
+  2361 0001:00395926  2376 0001:00395970  2377 0001:00395992  2379 0001:003959A2
+  2380 0001:003959B0  2381 0001:003959C8  2382 0001:003959E0  2383 0001:003959F8
+  2382 0001:00395A3B  2384 0001:00395A40  2386 0001:00395A45  2393 0001:00395A80
+  2394 0001:00395AA7  2395 0001:00395AD1  2396 0001:00395AE1  2399 0001:00395B28
+  2400 0001:00395B4C  2401 0001:00395B7A  2404 0001:00395BC8  2405 0001:00395BE4
+  2406 0001:00395C12  2409 0001:00395C5C  2410 0001:00395C78  2411 0001:00395CA6
+  2414 0001:00395CF0  2415 0001:00395D0C  2416 0001:00395D3A  2419 0001:00395D84
+  2420 0001:00395DA8  2421 0001:00395DD6  2424 0001:00395E28  2425 0001:00395E4A
+  2426 0001:00395E67  2438 0001:00395EA0  2440 0001:00395ECB  2441 0001:00395ED6
+  2442 0001:00395EE4  2443 0001:00395F1A  2445 0001:00395F3D  2446 0001:00395F5E
+  2447 0001:00395F84  2448 0001:00395FA5  2451 0001:00395FD8  2452 0001:00395FF0
+  2453 0001:00395FF8  2454 0001:00396003  2455 0001:0039600A  2456 0001:0039601A
+  2463 0001:00396048  2465 0001:00396074
+
+Line numbers for rOrders(Orders\rOrders.pas) segment .itext
+
+  2458 0002:00001EB4  2459 0002:00001EBD  2460 0002:00001EC4  2462 0002:00001ECB
+
+Line numbers for fOrders(Orders\fOrders.pas) segment .text
+
+   379 0001:00396E3C   380 0001:00396E48   381 0001:00396E56   382 0001:00396E75
+   384 0001:00396E7E   385 0001:00396E8B   387 0001:00396E91   389 0001:00396E99
+   392 0001:00396ED0   393 0001:00396ED7   394 0001:00396EDF   395 0001:00396EF0
+   396 0001:00396EF8   397 0001:00396F02   398 0001:00396F0B   399 0001:00396F15
+   400 0001:00396F1E   401 0001:00396F28   402 0001:00396F2D   407 0001:00396F30
+   408 0001:00396F39   409 0001:00396F41   410 0001:00396F56   411 0001:00396F6A
+   412 0001:00396F7E   413 0001:00396F92   416 0001:00396FA2   418 0001:00396FDD
+   419 0001:0039700B   420 0001:00397039   421 0001:00397067   422 0001:00397095
+   423 0001:003970C3   424 0001:003970DF   425 0001:0039710D   426 0001:00397129
+   427 0001:00397145   428 0001:00397155   431 0001:00397165   432 0001:00397171
+   433 0001:00397189   432 0001:003971AA   434 0001:003971AF   435 0001:003971BE
+   436 0001:003971D6   435 0001:00397208   438 0001:0039720D   439 0001:00397225
+   440 0001:0039723D   441 0001:00397255   442 0001:0039726D   444 0001:0039727A
+   445 0001:0039728A   448 0001:0039729A   449 0001:003972A4   451 0001:003972B0
+   452 0001:003972E3   454 0001:003972EB   455 0001:003972FC   456 0001:00397309
+   458 0001:00397311   461 0001:00397318   463 0001:00397324   464 0001:00397333
+   479 0001:00397338   480 0001:00397357   482 0001:00397368   483 0001:00397382
+   484 0001:0039739B   480 0001:0039739E   485 0001:003973A4   487 0001:003973C8
+   497 0001:003973FA   498 0001:0039740A   499 0001:00397451   501 0001:0039745E
+   502 0001:0039746D   503 0001:00397478   504 0001:00397485   505 0001:0039748F
+   507 0001:0039749B   508 0001:003974A5   511 0001:003974BB   512 0001:003974C2
+   513 0001:003974EC   512 0001:00397516   514 0001:0039751B   515 0001:00397521
+   516 0001:0039753D   517 0001:00397543   518 0001:0039756F   519 0001:00397578
+   520 0001:0039757D   521 0001:00397581   523 0001:00397591   525 0001:003975AE
+   526 0001:003975C3   528 0001:003975D6   529 0001:003975EA   532 0001:003975EE
+   523 0001:003975F1   534 0001:003975F6   535 0001:0039760C   536 0001:0039763C
+   537 0001:00397646   539 0001:00397653   541 0001:0039765F   542 0001:00397666
+   543 0001:00397684   542 0001:003976AE   544 0001:003976B3   546 0001:003976BD
+   551 0001:003976DB   553 0001:003976EA   554 0001:003976F6   556 0001:003976FB
+   558 0001:00397707   559 0001:0039770E   560 0001:0039772C   559 0001:0039776B
+   561 0001:00397770   563 0001:0039778C   565 0001:003977A5   566 0001:003977AF
+   570 0001:003977BC   571 0001:003977CB   572 0001:003977E1   573 0001:00397802
+   575 0001:0039780E   577 0001:00397829   579 0001:00397845   581 0001:00397873
+   582 0001:0039788B   583 0001:003978A1   584 0001:003978B2   586 0001:003978B4
+   577 0001:003978B7   587 0001:003978BC   575 0001:003978BF   588 0001:003978C9
+   589 0001:003978E3   590 0001:00397907   592 0001:00397916   593 0001:00397920
+   594 0001:00397928   595 0001:00397930   598 0001:0039793A   599 0001:00397944
+   602 0001:0039794C   607 0001:00397988   608 0001:00397995   609 0001:003979A0
+   610 0001:003979AA   611 0001:003979B8   612 0001:003979C5   613 0001:003979D6
+   614 0001:003979E7   615 0001:003979F8   616 0001:00397A03   617 0001:00397A0D
+   618 0001:00397A17   619 0001:00397A21   620 0001:00397A2B   621 0001:00397A35
+   622 0001:00397A3F   623 0001:00397A49   624 0001:00397A53   625 0001:00397A5E
+   626 0001:00397A69   627 0001:00397A73   628 0001:00397A88   629 0001:00397A93
+   630 0001:00397A9D   632 0001:00397AAA   633 0001:00397AD9   634 0001:00397AF0
+   637 0001:00397AF8   639 0001:00397B04   640 0001:00397B1B   641 0001:00397B25
+   642 0001:00397B2F   643 0001:00397B39   644 0001:00397B41   645 0001:00397B4F
+   646 0001:00397B59   647 0001:00397B63   648 0001:00397B6D   649 0001:00397B84
+   650 0001:00397B8E   651 0001:00397B99   652 0001:00397BA6   656 0001:00397BAC
+   657 0001:00397BB8   659 0001:00397BCC   672 0001:00397BD0   673 0001:00397BDC
+   675 0001:00397BE8   676 0001:00397C1C   677 0001:00397C3A   679 0001:00397C49
+   680 0001:00397C54   682 0001:00397C6B   683 0001:00397C7F   684 0001:00397C8A
+   680 0001:00397C8D   685 0001:00397C93   688 0001:00397CA0   689 0001:00397CAB
+   691 0001:00397CC9   692 0001:00397CDD   693 0001:00397CE8   689 0001:00397CEB
+   694 0001:00397CF0   698 0001:00397CFB   705 0001:00397D00   706 0001:00397D1D
+   708 0001:00397D29   709 0001:00397D36   710 0001:00397D41   711 0001:00397D4C
+   712 0001:00397D57   714 0001:00397D6F   715 0001:00397D7F   717 0001:00397D91
+   718 0001:00397DA8   719 0001:00397DCE   712 0001:00397DD1   720 0001:00397DD6
+   721 0001:00397DE1   723 0001:00397DEE   728 0001:00397E14   729 0001:00397E39
+   731 0001:00397E45   732 0001:00397E4E   733 0001:00397E58   734 0001:00397E6B
+   735 0001:00397E7C   737 0001:00397E82   738 0001:00397E8C   739 0001:00397E98
+   742 0001:00397EB0   743 0001:00397EBA   744 0001:00397EC4   745 0001:00397ECE
+   748 0001:00397EEB   749 0001:00397FA3   750 0001:00397FAD   751 0001:00397FB5
+   753 0001:00397FC1   755 0001:00397FD6   756 0001:00397FE4   758 0001:00397FF0
+   759 0001:00398006   761 0001:00398014   763 0001:00398024   765 0001:0039802F
+   766 0001:0039803D   767 0001:00398055   766 0001:00398071   769 0001:00398076
+   771 0001:00398081   772 0001:0039808F   773 0001:003980A7   772 0001:003980C3
+   775 0001:003980C8   777 0001:003980D6   778 0001:003980E9   779 0001:003980FD
+   780 0001:00398111   781 0001:0039813E   783 0001:00398145   786 0001:0039818C
+   787 0001:00398195   788 0001:003981A1   790 0001:003981B9   791 0001:003981C0
+   794 0001:003981C9   795 0001:003981D0   798 0001:003981D9   799 0001:003981E0
+   802 0001:003981E9   803 0001:003981F0   806 0001:003981F7   810 0001:003981FC
+   811 0001:00398205   812 0001:00398209   814 0001:00398227   815 0001:00398238
+   817 0001:0039823C   824 0001:003982D4   825 0001:00398300   826 0001:00398310
+   827 0001:00398323   828 0001:00398341   829 0001:0039834D   830 0001:00398362
+   832 0001:0039836E   833 0001:00398379   834 0001:00398384   836 0001:0039838E
+   837 0001:00398395   838 0001:0039839C   840 0001:003983A6   841 0001:00398401
+   842 0001:0039841D   844 0001:00398429   846 0001:00398433   847 0001:00398449
+   849 0001:0039846F   850 0001:00398498   851 0001:003984AA   854 0001:003984B8
+   855 0001:003984C0   857 0001:003984C6   858 0001:003984D2   860 0001:003984DE
+   861 0001:003984E7   862 0001:003984F0   863 0001:003984FB   864 0001:00398503
+   865 0001:00398511   866 0001:0039853E   867 0001:00398545   868 0001:0039854D
+   870 0001:00398558   871 0001:00398564   874 0001:003985B0   876 0001:003985BC
+   877 0001:003985D7   880 0001:00398628   882 0001:00398634   883 0001:0039864F
+   886 0001:0039869C   888 0001:003986A8   889 0001:003986C3   892 0001:003986F0
+   894 0001:003986FC   895 0001:00398717   898 0001:0039874C   900 0001:00398758
+   901 0001:00398773   906 0001:003987A0   908 0001:003987C3   909 0001:003987D3
+   910 0001:003987E2   911 0001:003987F0   924 0001:00398801   925 0001:00398809
+   927 0001:00398816   928 0001:00398827   930 0001:00398840   931 0001:0039884A
+   932 0001:0039885A   935 0001:0039886C   936 0001:0039887C   940 0001:0039888C
+   942 0001:003988BF   943 0001:003988D2   944 0001:003988E3   945 0001:00398905
+   946 0001:00398918   948 0001:00398924   950 0001:0039892D   953 0001:00398952
+   957 0001:00398984   959 0001:00398994   962 0001:003989E8   964 0001:00398A08
+   965 0001:00398A18   966 0001:00398A24   967 0001:00398A51   968 0001:00398A66
+   969 0001:00398A79   970 0001:00398AA8   971 0001:00398AC2   972 0001:00398B01
+   973 0001:00398B16   975 0001:00398B28   976 0001:00398B34   977 0001:00398B40
+   978 0001:00398B4B   983 0001:00398B80   985 0001:00398BA1   987 0001:00398BAD
+   988 0001:00398BD3   989 0001:00398C0E   990 0001:00398C49   991 0001:00398C52
+   992 0001:00398C6E   993 0001:00398C88   994 0001:00398C91   995 0001:00398CAD
+   997 0001:00398CC7   998 0001:00398CF7   999 0001:00398D05  1007 0001:00398E9C
+  1009 0001:00398ECB  1010 0001:00398EE0  1011 0001:00398EEF  1012 0001:00398EF4
+  1013 0001:00398F02  1015 0001:00398F43  1016 0001:00398F4D  1017 0001:00398F69
+  1018 0001:00398F7C  1019 0001:00398F8A  1022 0001:00398F9D  1023 0001:00398FAD
+  1028 0001:0039902D  1029 0001:00399037  1030 0001:00399051  1031 0001:0039905B
+  1034 0001:0039906B  1036 0001:00399076  1038 0001:0039908E  1040 0001:003990B8
+  1041 0001:003990BE  1043 0001:003990C0  1036 0001:003990C3  1044 0001:003990C8
+  1045 0001:003990CE  1047 0001:003990D9  1049 0001:003990F6  1050 0001:003990FD
+  1051 0001:00399124  1052 0001:00399131  1013 0001:00399134  1054 0001:0039914A
+  1056 0001:0039915A  1062 0001:003992C8  1064 0001:003992ED  1065 0001:00399302
+  1067 0001:00399343  1068 0001:0039934D  1069 0001:00399369  1070 0001:0039939F
+  1071 0001:003993C3  1072 0001:003993D0  1073 0001:003993D7  1065 0001:003993DA
+  1074 0001:003993E3  1080 0001:003994AC  1082 0001:003994D1  1083 0001:003994E6
+  1085 0001:00399527  1086 0001:00399531  1087 0001:0039954D  1088 0001:00399583
+  1089 0001:003995A7  1090 0001:003995B4  1091 0001:003995BB  1083 0001:003995BE
+  1092 0001:003995C7  1100 0001:00399694  1101 0001:0039969D  1102 0001:003996E3
+  1103 0001:003996F4  1104 0001:003996FF  1112 0001:00399704  1113 0001:00399726
+  1114 0001:0039972E  1116 0001:00399741  1117 0001:0039976E  1118 0001:0039977D
+  1119 0001:00399787  1120 0001:00399792  1121 0001:003997A2  1122 0001:003997A9
+  1123 0001:003997B0  1124 0001:003997BB  1125 0001:003997C3  1126 0001:003997CA
+  1127 0001:003997D2  1128 0001:003997DD  1129 0001:003997E5  1130 0001:003997F5
+  1131 0001:0039980D  1132 0001:00399819  1134 0001:00399825  1136 0001:00399851
+  1137 0001:00399860  1138 0001:0039986B  1139 0001:0039989C  1140 0001:003998AF
+  1141 0001:003998D0  1142 0001:003998F1  1143 0001:003998F9  1144 0001:00399904
+  1145 0001:00399918  1146 0001:00399924  1147 0001:00399930  1149 0001:0039993A
+  1150 0001:0039995B  1151 0001:0039996D  1152 0001:0039997F  1153 0001:0039998A
+  1154 0001:00399992  1155 0001:003999A5  1134 0001:003999A8  1156 0001:003999B1
+  1157 0001:003999C4  1158 0001:003999E6  1166 0001:00399A68  1168 0001:00399A8C
+  1169 0001:00399A99  1170 0001:00399AA3  1171 0001:00399ABC  1173 0001:00399AC8
+  1174 0001:00399AE5  1175 0001:00399B2B  1176 0001:00399B34  1179 0001:00399B3E
+  1181 0001:00399B79  1182 0001:00399B8D  1184 0001:00399BA1  1186 0001:00399BDA
+  1188 0001:00399C00  1189 0001:00399C0B  1190 0001:00399C15  1191 0001:00399C1D
+  1192 0001:00399C30  1193 0001:00399C3B  1197 0001:00399C40  1199 0001:00399C7F
+  1200 0001:00399C8B  1202 0001:00399C9E  1203 0001:00399CA8  1204 0001:00399CBB
+  1205 0001:00399CE5  1206 0001:00399D07  1207 0001:00399D1A  1208 0001:00399D40
+  1209 0001:00399D56  1210 0001:00399D69  1211 0001:00399DB2  1212 0001:00399DC2
+  1213 0001:00399DD2  1215 0001:00399DFE  1217 0001:00399E12  1219 0001:00399E4B
+  1221 0001:00399E97  1223 0001:00399EC3  1224 0001:00399F07  1225 0001:00399F11
+  1226 0001:00399F3C  1227 0001:00399F62  1228 0001:00399F77  1229 0001:00399F8A
+  1230 0001:00399F95  1234 0001:00399F9A  1235 0001:00399FAA  1239 0001:00399FB9
+  1240 0001:00399FC3  1241 0001:00399FD3  1242 0001:00399FE3  1243 0001:00399FF6
+  1244 0001:0039A018  1245 0001:0039A02B  1249 0001:0039A039  1250 0001:0039A049
+  1251 0001:0039A059  1252 0001:0039A06C  1253 0001:0039A08E  1254 0001:0039A0A1
+  1256 0001:0039A0AD  1257 0001:0039A0B7  1266 0001:0039A198  1267 0001:0039A1A4
+  1268 0001:0039A1B3  1270 0001:0039A1C7  1271 0001:0039A1D4  1272 0001:0039A1E4
+  1273 0001:0039A1F8  1268 0001:0039A1FB  1274 0001:0039A200  1275 0001:0039A223
+  1276 0001:0039A22B  1280 0001:0039A230  1281 0001:0039A23F  1282 0001:0039A24A
+  1283 0001:0039A26E  1290 0001:0039A274  1291 0001:0039A297  1292 0001:0039A29F
+  1293 0001:0039A2C4  1295 0001:0039A2CB  1296 0001:0039A2D2  1297 0001:0039A2DD
+  1298 0001:0039A2F3  1299 0001:0039A2F9  1300 0001:0039A332  1296 0001:0039A335
+  1301 0001:0039A33B  1307 0001:0039A388  1308 0001:0039A3AB  1309 0001:0039A3C1
+  1310 0001:0039A3C6  1311 0001:0039A3CB  1312 0001:0039A3D0  1313 0001:0039A3F0
+  1314 0001:0039A41A  1321 0001:0039A444  1322 0001:0039A453  1323 0001:0039A45B
+  1325 0001:0039A47E  1326 0001:0039A48E  1328 0001:0039A494  1329 0001:0039A4A8
+  1330 0001:0039A4BF  1333 0001:0039A4F1  1334 0001:0039A516  1336 0001:0039A535
+  1338 0001:0039A552  1339 0001:0039A56F  1340 0001:0039A57F  1342 0001:0039A58C
+  1343 0001:0039A594  1348 0001:0039A5B4  1349 0001:0039A5ED  1350 0001:0039A5FD
+  1351 0001:0039A646  1352 0001:0039A67D  1353 0001:0039A68D  1354 0001:0039A6D4
+  1355 0001:0039A710  1361 0001:0039A78C  1362 0001:0039A7B8  1364 0001:0039A7C2
+  1367 0001:0039A7FD  1368 0001:0039A80B  1372 0001:0039A84D  1373 0001:0039A85B
+  1377 0001:0039A89D  1378 0001:0039A8AB  1380 0001:0039A8B8  1382 0001:0039A8C9
+  1383 0001:0039A8D8  1384 0001:0039A8E6  1385 0001:0039A8F6  1386 0001:0039A904
+  1387 0001:0039A91C  1386 0001:0039A947  1389 0001:0039A959  1393 0001:0039A969
+  1396 0001:0039A97E  1399 0001:0039A99B  1400 0001:0039A9A9  1402 0001:0039AA03
+  1403 0001:0039AA13  1404 0001:0039AA23  1405 0001:0039AA33  1406 0001:0039AA43
+  1413 0001:0039AA51  1424 0001:0039AAA8  1426 0001:0039AAD7  1428 0001:0039AAE3
+  1429 0001:0039AAED  1431 0001:0039AAF3  1432 0001:0039AB09  1434 0001:0039AB1F
+  1435 0001:0039AB30  1436 0001:0039AB4D  1437 0001:0039AB62  1438 0001:0039AB77
+  1440 0001:0039AB7E  1442 0001:0039AB83  1443 0001:0039ABA0  1444 0001:0039ABB5
+  1445 0001:0039ABC9  1440 0001:0039ABCC  1447 0001:0039ABD2  1449 0001:0039ABE9
+  1450 0001:0039ABFD  1451 0001:0039AC22  1453 0001:0039AC29  1454 0001:0039AC30
+  1456 0001:0039AC49  1457 0001:0039AC51  1459 0001:0039AC5C  1460 0001:0039AC63
+  1461 0001:0039AC86  1462 0001:0039AC9C  1463 0001:0039ACB0  1465 0001:0039ACB8
+  1467 0001:0039ACC1  1468 0001:0039ACDE  1471 0001:0039ACEF  1473 0001:0039ACF9
+  1474 0001:0039AD10  1475 0001:0039AD42  1477 0001:0039AD51  1478 0001:0039AD5D
+  1480 0001:0039AD75  1483 0001:0039AD92  1484 0001:0039ADA4  1485 0001:0039ADE7
+  1486 0001:0039AE28  1487 0001:0039AE3C  1488 0001:0039AE40  1454 0001:0039AE43
+  1491 0001:0039AE4D  1494 0001:0039AE8C  1496 0001:0039AE9B  1497 0001:0039AEBD
+  1498 0001:0039AEC5  1499 0001:0039AED6  1500 0001:0039AEE4  1501 0001:0039AEF2
+  1504 0001:0039AEF8  1506 0001:0039AF04  1507 0001:0039AF0F  1516 0001:0039AF14
+  1517 0001:0039AF39  1518 0001:0039AF49  1520 0001:0039AF53  1521 0001:0039AF5D
+  1525 0001:0039AF67  1526 0001:0039AF75  1527 0001:0039AF89  1529 0001:0039AFBE
+  1530 0001:0039AFC8  1532 0001:0039AFCD  1534 0001:0039AFE2  1535 0001:0039AFFD
+  1536 0001:0039B007  1540 0001:0039B00C  1542 0001:0039B059  1543 0001:0039B06A
+  1544 0001:0039B074  1547 0001:0039B079  1548 0001:0039B094  1549 0001:0039B09E
+  1550 0001:0039B0B2  1551 0001:0039B0CD  1552 0001:0039B0E7  1554 0001:0039B0F6
+  1555 0001:0039B10A  1556 0001:0039B114  1558 0001:0039B119  1559 0001:0039B129
+  1560 0001:0039B133  1562 0001:0039B138  1563 0001:0039B17B  1564 0001:0039B1FE
+  1566 0001:0039B255  1568 0001:0039B2BD  1570 0001:0039B32F  1572 0001:0039B3A1
+  1574 0001:0039B410  1576 0001:0039B42A  1578 0001:0039B430  1579 0001:0039B444
+  1581 0001:0039B44E  1583 0001:0039B4BB  1584 0001:0039B4C3  1585 0001:0039B4D6
+  1587 0001:0039B4E1  1588 0001:0039B4EB  1591 0001:0039B52A  1597 0001:0039B700
+  1599 0001:0039B723  1600 0001:0039B733  1602 0001:0039B753  1603 0001:0039B77A
+  1604 0001:0039B79F  1605 0001:0039B7A7  1606 0001:0039B7BC  1608 0001:0039B807
+  1609 0001:0039B813  1610 0001:0039B84E  1609 0001:0039B87A  1612 0001:0039B87F
+  1623 0001:0039B8B0  1624 0001:0039B8DC  1625 0001:0039B8EB  1626 0001:0039B8FA
+  1627 0001:0039B909  1628 0001:0039B917  1630 0001:0039B958  1631 0001:0039B96C
+  1633 0001:0039B9AB  1634 0001:0039B9B9  1636 0001:0039B9C6  1638 0001:0039BA10
+  1639 0001:0039BA1D  1641 0001:0039BA32  1643 0001:0039BA5C  1645 0001:0039BA6B
+  1646 0001:0039BA7A  1647 0001:0039BA8A  1648 0001:0039BA99  1650 0001:0039BAA7
+  1651 0001:0039BAB4  1655 0001:0039BAB9  1657 0001:0039BAF5  1658 0001:0039BB1D
+  1659 0001:0039BB2A  1661 0001:0039BB2F  1663 0001:0039BB77  1665 0001:0039BB8A
+  1666 0001:0039BB92  1668 0001:0039BBBF  1669 0001:0039BBE5  1670 0001:0039BBF2
+  1672 0001:0039BBF7  1674 0001:0039BC3D  1675 0001:0039BC63  1676 0001:0039BC70
+  1678 0001:0039BC75  1680 0001:0039BCB0  1681 0001:0039BCD6  1682 0001:0039BCE3
+  1684 0001:0039BCE8  1685 0001:0039BCF0  1686 0001:0039BD13  1687 0001:0039BD2F
+  1689 0001:0039BD5B  1691 0001:0039BD73  1692 0001:0039BD80  1696 0001:0039BD8D
+  1698 0001:0039BDAB  1700 0001:0039BDC8  1701 0001:0039BDD5  1704 0001:0039BDFD
+  1707 0001:0039BE0B  1709 0001:0039BE54  1710 0001:0039BE72  1711 0001:0039BE98
+  1714 0001:0039BEA5  1716 0001:0039BED3  1628 0001:0039BED6  1718 0001:0039BEDF
+  1720 0001:0039BF01  1721 0001:0039BF17  1722 0001:0039BF7A  1723 0001:0039BF9B
+  1726 0001:0039BFB6  1727 0001:0039BFBE  1728 0001:0039BFC6  1730 0001:0039BFD6
+  1736 0001:0039C288  1737 0001:0039C294  1738 0001:0039C2BE  1737 0001:0039C2EB
+  1739 0001:0039C2F0  1744 0001:0039C2F4  1746 0001:0039C300  1747 0001:0039C304
+  1748 0001:0039C32E  1750 0001:0039C33D  1751 0001:0039C341  1752 0001:0039C343
+  1747 0001:0039C346  1753 0001:0039C34B  1754 0001:0039C360  1760 0001:0039C384
+  1761 0001:0039C390  1762 0001:0039C3A6  1761 0001:0039C3CE  1763 0001:0039C3D3
+  1769 0001:0039C3D8  1770 0001:0039C3F5  1772 0001:0039C41F  1773 0001:0039C455
+  1774 0001:0039C471  1770 0001:0039C474  1775 0001:0039C479  1776 0001:0039C48A
+  1783 0001:0039C4AC  1785 0001:0039C4D1  1786 0001:0039C4E6  1787 0001:0039C4F3
+  1788 0001:0039C502  1789 0001:0039C50F  1790 0001:0039C51C  1792 0001:0039C555
+  1793 0001:0039C564  1795 0001:0039C572  1796 0001:0039C589  1797 0001:0039C591
+  1799 0001:0039C59C  1800 0001:0039C5B3  1802 0001:0039C5C2  1803 0001:0039C5E0
+  1804 0001:0039C60D  1805 0001:0039C61C  1806 0001:0039C62B  1808 0001:0039C647
+  1809 0001:0039C64F  1811 0001:0039C65C  1818 0001:0039C73C  1820 0001:0039C75B
+  1821 0001:0039C770  1822 0001:0039C77D  1824 0001:0039C786  1825 0001:0039C794
+  1827 0001:0039C799  1829 0001:0039C7A6  1830 0001:0039C7B8  1831 0001:0039C7CD
+  1833 0001:0039C7D9  1835 0001:0039C7E6  1836 0001:0039C7F9  1838 0001:0039C7FE
+  1839 0001:0039C80B  1840 0001:0039C81A  1841 0001:0039C828  1842 0001:0039C83F
+  1843 0001:0039C84A  1844 0001:0039C853  1846 0001:0039C85D  1847 0001:0039C869
+  1848 0001:0039C870  1849 0001:0039C87F  1850 0001:0039C88E  1851 0001:0039C89D
+  1852 0001:0039C8A7  1854 0001:0039C8D2  1855 0001:0039C8DA  1857 0001:0039C8E7
+  1865 0001:0039CB00  1867 0001:0039CB28  1868 0001:0039CB35  1869 0001:0039CB4A
+  1870 0001:0039CB57  1873 0001:0039CB64  1874 0001:0039CB68  1875 0001:0039CB6D
+  1876 0001:0039CB75  1877 0001:0039CB84  1878 0001:0039CB92  1879 0001:0039CBA8
+  1880 0001:0039CBBF  1881 0001:0039CBCA  1882 0001:0039CBE0  1884 0001:0039CBEA
+  1885 0001:0039CBF4  1887 0001:0039CC03  1888 0001:0039CC21  1889 0001:0039CC4E
+  1890 0001:0039CC5D  1891 0001:0039CC6C  1893 0001:0039CC88  1894 0001:0039CC90
+  1895 0001:0039CC95  1896 0001:0039CC9B  1898 0001:0039CCB3  1904 0001:0039CDAC
+  1906 0001:0039CDB8  1907 0001:0039CDCD  1908 0001:0039CDDA  1909 0001:0039CDE7
+  1910 0001:0039CDF4  1912 0001:0039CE2D  1913 0001:0039CE3C  1914 0001:0039CE4A
+  1915 0001:0039CE5D  1916 0001:0039CE74  1917 0001:0039CE7F  1919 0001:0039CE8B
+  1920 0001:0039CE93  1923 0001:0039CEA8  1924 0001:0039CEB0  1926 0001:0039CEBD
+  1932 0001:0039CF78  1934 0001:0039CF84  1935 0001:0039CF99  1936 0001:0039CFA6
+  1937 0001:0039CFB3  1938 0001:0039CFC0  1939 0001:0039CFCF  1940 0001:0039CFDD
+  1941 0001:0039CFF0  1942 0001:0039D007  1943 0001:0039D012  1945 0001:0039D01E
+  1946 0001:0039D026  1949 0001:0039D03B  1950 0001:0039D043  1952 0001:0039D050
+  1959 0001:0039D114  1961 0001:0039D120  1962 0001:0039D135  1963 0001:0039D142
+  1964 0001:0039D14F  1965 0001:0039D15C  1966 0001:0039D16B  1967 0001:0039D179
+  1968 0001:0039D18F  1969 0001:0039D1A6  1970 0001:0039D1B1  1972 0001:0039D1D8
+  1973 0001:0039D1E9  1974 0001:0039D1FD  1975 0001:0039D231  1976 0001:0039D244
+  1977 0001:0039D266  1978 0001:0039D271  1980 0001:0039D27E  1982 0001:0039D28A
+  1983 0001:0039D292  1985 0001:0039D29A  1987 0001:0039D2B6  1988 0001:0039D2BE
+  1990 0001:0039D2CB  1996 0001:0039D39C  1998 0001:0039D3A8  1999 0001:0039D3B9
+  2000 0001:0039D3C2  2001 0001:0039D3D1  2002 0001:0039D3DF  2003 0001:0039D3F6
+  2004 0001:0039D401  2006 0001:0039D416  2008 0001:0039D426  2015 0001:0039D4E8
+  2017 0001:0039D50A  2018 0001:0039D51F  2019 0001:0039D52C  2021 0001:0039D565
+  2023 0001:0039D5A6  2024 0001:0039D5BA  2025 0001:0039D5CD  2026 0001:0039D5EA
+  2027 0001:0039D616  2028 0001:0039D61E  2029 0001:0039D62B  2021 0001:0039D62E
+  2030 0001:0039D637  2031 0001:0039D648  2038 0001:0039D728  2040 0001:0039D750
+  2041 0001:0039D765  2042 0001:0039D772  2044 0001:0039D7B3  2045 0001:0039D7C7
+  2046 0001:0039D7DA  2047 0001:0039D7F7  2048 0001:0039D823  2049 0001:0039D82B
+  2050 0001:0039D838  2042 0001:0039D83B  2051 0001:0039D844  2052 0001:0039D855
+  2053 0001:0039D896  2059 0001:0039D978  2061 0001:0039D984  2062 0001:0039D995
+  2063 0001:0039D99E  2064 0001:0039D9AD  2065 0001:0039D9BB  2066 0001:0039D9D2
+  2067 0001:0039D9DD  2069 0001:0039D9FE  2071 0001:0039DA0E  2077 0001:0039DAC4
+  2079 0001:0039DAD0  2080 0001:0039DAE1  2081 0001:0039DAEA  2082 0001:0039DAF9
+  2083 0001:0039DB07  2084 0001:0039DB1E  2085 0001:0039DB29  2087 0001:0039DB4C
+  2089 0001:0039DB5C  2094 0001:0039DC10  2096 0001:0039DC1C  2097 0001:0039DC2D
+  2098 0001:0039DC36  2099 0001:0039DC45  2100 0001:0039DC53  2101 0001:0039DC6A
+  2102 0001:0039DC75  2104 0001:0039DC98  2106 0001:0039DCA8  2114 0001:0039DD5C
+  2116 0001:0039DD7E  2117 0001:0039DD93  2118 0001:0039DDA0  2120 0001:0039DDD9
+  2122 0001:0039DE1A  2123 0001:0039DE2E  2124 0001:0039DE41  2125 0001:0039DE5E
+  2126 0001:0039DE8A  2127 0001:0039DE92  2128 0001:0039DE9F  2120 0001:0039DEA2
+  2129 0001:0039DEAB  2137 0001:0039DF90  2140 0001:0039DFAF  2141 0001:0039DFBC
+  2142 0001:0039DFCB  2143 0001:0039DFD9  2144 0001:0039DFF4  2145 0001:0039E00A
+  2146 0001:0039E021  2148 0001:0039E056  2149 0001:0039E060  2150 0001:0039E08A
+  2152 0001:0039E099  2153 0001:0039E0B5  2154 0001:0039E0D7  2149 0001:0039E0DA
+  2155 0001:0039E0DF  2156 0001:0039E0EB  2159 0001:0039E10C  2161 0001:0039E11C
+  2162 0001:0039E12C  2163 0001:0039E134  2176 0001:0039E208  2178 0001:0039E23B
+  2179 0001:0039E248  2180 0001:0039E24D  2181 0001:0039E255  2182 0001:0039E259
+  2183 0001:0039E25D  2184 0001:0039E26C  2185 0001:0039E27A  2186 0001:0039E295
+  2187 0001:0039E299  2188 0001:0039E2AF  2189 0001:0039E2C6  2190 0001:0039E2FB
+  2191 0001:0039E305  2192 0001:0039E32F  2193 0001:0039E33E  2191 0001:0039E35D
+  2195 0001:0039E362  2197 0001:0039E366  2198 0001:0039E376  2200 0001:0039E390
+  2202 0001:0039E396  2203 0001:0039E3A5  2204 0001:0039E3AA  2205 0001:0039E3AF
+  2206 0001:0039E3B3  2207 0001:0039E3C5  2208 0001:0039E3CF  2209 0001:0039E3D7
+  2210 0001:0039E3E7  2212 0001:0039E3F1  2213 0001:0039E405  2215 0001:0039E423
+  2216 0001:0039E427  2218 0001:0039E42F  2219 0001:0039E43A  2220 0001:0039E440
+  2222 0001:0039E46B  2224 0001:0039E490  2226 0001:0039E4AC  2230 0001:0039E4D1
+  2231 0001:0039E4F0  2233 0001:0039E4F4  2234 0001:0039E51D  2236 0001:0039E54A
+  2238 0001:0039E556  2239 0001:0039E55E  2240 0001:0039E569  2241 0001:0039E571
+  2242 0001:0039E584  2245 0001:0039E58F  2246 0001:0039E599  2247 0001:0039E5A1
+  2248 0001:0039E5A7  2251 0001:0039E5C4  2252 0001:0039E5CC  2255 0001:0039E5DC
+  2263 0001:0039E6CC  2265 0001:0039E6F4  2266 0001:0039E709  2267 0001:0039E716
+  2269 0001:0039E723  2270 0001:0039E735  2271 0001:0039E74A  2273 0001:0039E756
+  2275 0001:0039E763  2276 0001:0039E776  2278 0001:0039E77B  2279 0001:0039E788
+  2280 0001:0039E797  2281 0001:0039E7A5  2282 0001:0039E7BC  2283 0001:0039E7C7
+  2284 0001:0039E7CF  2285 0001:0039E7D8  2286 0001:0039E7E4  2288 0001:0039E7EF
+  2290 0001:0039E7FE  2291 0001:0039E81C  2292 0001:0039E849  2293 0001:0039E858
+  2294 0001:0039E867  2295 0001:0039E876  2297 0001:0039E8AA  2298 0001:0039E8B2
+  2300 0001:0039E8BF  2308 0001:0039EA64  2310 0001:0039EA8C  2311 0001:0039EAA1
+  2312 0001:0039EAAE  2314 0001:0039EABB  2315 0001:0039EACD  2316 0001:0039EAE2
+  2318 0001:0039EAEE  2320 0001:0039EAFB  2321 0001:0039EB0E  2323 0001:0039EB13
+  2324 0001:0039EB20  2325 0001:0039EB2F  2326 0001:0039EB3D  2327 0001:0039EB54
+  2328 0001:0039EB5F  2329 0001:0039EB67  2330 0001:0039EB70  2331 0001:0039EB7C
+  2332 0001:0039EB87  2334 0001:0039EB96  2335 0001:0039EBB4  2336 0001:0039EBE1
+  2337 0001:0039EBF0  2338 0001:0039EBFF  2339 0001:0039EC0E  2341 0001:0039EC42
+  2342 0001:0039EC4A  2344 0001:0039EC57  2352 0001:0039EE08  2354 0001:0039EE30
+  2355 0001:0039EE45  2356 0001:0039EE52  2358 0001:0039EE6C  2359 0001:0039EE7A
+  2361 0001:0039EE7F  2363 0001:0039EE8E  2365 0001:0039EE9B  2366 0001:0039EEAD
+  2367 0001:0039EEC2  2369 0001:0039EECE  2371 0001:0039EEDB  2372 0001:0039EEEE
+  2375 0001:0039EEF3  2377 0001:0039EF00  2380 0001:0039EF39  2381 0001:0039EF48
+  2382 0001:0039EF56  2383 0001:0039EF6D  2385 0001:0039EF78  2387 0001:0039EF82
+  2388 0001:0039EF8A  2392 0001:0039EF9B  2393 0001:0039EFA3  2394 0001:0039EFAC
+  2395 0001:0039EFB8  2396 0001:0039EFC3  2398 0001:0039EFD2  2399 0001:0039EFF0
+  2400 0001:0039F01D  2402 0001:0039F029  2403 0001:0039F038  2404 0001:0039F047
+  2406 0001:0039F056  2408 0001:0039F05F  2409 0001:0039F07D  2410 0001:0039F092
+  2413 0001:0039F0B2  2414 0001:0039F0BA  2416 0001:0039F0C7  2419 0001:0039F2E4
+  2421 0001:0039F2F0  2422 0001:0039F2F5  2425 0001:0039F2FC  2427 0001:0039F308
+  2428 0001:0039F30D  2434 0001:0039F314  2436 0001:0039F335  2437 0001:0039F354
+  2440 0001:0039F408  2441 0001:0039F422  2445 0001:0039F45B  2446 0001:0039F475
+  2449 0001:0039F4A7  2451 0001:0039F4D2  2452 0001:0039F4F0  2456 0001:0039F501
+  2457 0001:0039F51F  2461 0001:0039F530  2462 0001:0039F54B  2464 0001:0039F574
+  2465 0001:0039F59A  2467 0001:0039F5D4  2468 0001:0039F5F8  2474 0001:0039F609
+  2475 0001:0039F624  2477 0001:0039F64D  2478 0001:0039F673  2480 0001:0039F6AD
+  2481 0001:0039F6D1  2486 0001:0039F6E2  2489 0001:0039F701  2490 0001:0039F71F
+  2493 0001:0039F730  2496 0001:0039F74F  2500 0001:0039F771  2504 0001:0039F793
+  2505 0001:0039F7B1  2507 0001:0039F7BF  2508 0001:0039F7CF  2509 0001:0039F7E0
+  2510 0001:0039F7ED  2512 0001:0039F816  2516 0001:0039F82A  2517 0001:0039F845
+  2521 0001:0039F856  2522 0001:0039F871  2524 0001:0039F87F  2525 0001:0039F88F
+  2526 0001:0039F8A0  2527 0001:0039F8AD  2529 0001:0039F8D6  2533 0001:0039F8EA
+  2534 0001:0039F905  2536 0001:0039F92E  2537 0001:0039F954  2539 0001:0039F98E
+  2540 0001:0039F9B2  2546 0001:0039F9C3  2547 0001:0039F9DE  2551 0001:0039F9EF
+  2552 0001:0039FA09  2556 0001:0039FA22  2557 0001:0039FA3C  2561 0001:0039FA52
+  2562 0001:0039FA6C  2563 0001:0039FA8A  2565 0001:0039FAAF  2567 0001:0039FABA
+  2574 0001:0039FDC4  2575 0001:0039FE0E  2576 0001:0039FE1D  2577 0001:0039FE2B
+  2578 0001:0039FE33  2580 0001:0039FE54  2581 0001:0039FE5C  2582 0001:0039FE74
+  2583 0001:0039FEA2  2581 0001:0039FED3  2586 0001:0039FEE5  2588 0001:0039FEF5
+  2589 0001:0039FF09  2591 0001:0039FF15  2593 0001:0039FF32  2594 0001:0039FF54
+  2596 0001:0039FF85  2597 0001:0039FF93  2598 0001:0039FFA0  2599 0001:0039FFA2
+  2593 0001:0039FFA5  2601 0001:0039FFAC  2602 0001:0039FFCA  2601 0001:003A000D
+  2603 0001:003A0012  2605 0001:003A002D  2608 0001:003A007C  2610 0001:003A0088
+  2611 0001:003A00A5  2625 0001:003A00AC  2626 0001:003A00D1  2627 0001:003A00D9
+  2629 0001:003A00EE  2630 0001:003A00FD  2631 0001:003A0101  2632 0001:003A010F
+  2633 0001:003A0139  2632 0001:003A017A  2634 0001:003A017F  2635 0001:003A0198
+  2638 0001:003A01AD  2642 0001:003A01CA  2643 0001:003A01D7  2644 0001:003A01ED
+  2646 0001:003A01FA  2647 0001:003A020C  2649 0001:003A0221  2650 0001:003A022D
+  2652 0001:003A023A  2653 0001:003A0252  2654 0001:003A0263  2656 0001:003A026D
+  2658 0001:003A028D  2660 0001:003A029D  2669 0001:003A03CC  2671 0001:003A03F4
+  2672 0001:003A0401  2673 0001:003A0405  2674 0001:003A0414  2675 0001:003A0419
+  2676 0001:003A041E  2677 0001:003A0426  2678 0001:003A0433  2680 0001:003A043D
+  2681 0001:003A0441  2682 0001:003A044B  2684 0001:003A045A  2686 0001:003A0474
+  2687 0001:003A048A  2688 0001:003A0494  2690 0001:003A04A6  2691 0001:003A04B0
+  2692 0001:003A04BA  2695 0001:003A04F9  2698 0001:003A0550  2699 0001:003A0557
+  2700 0001:003A0574  2701 0001:003A0591  2702 0001:003A05AE  2703 0001:003A05CB
+  2706 0001:003A05D0  2707 0001:003A05D7  2708 0001:003A05F7  2709 0001:003A0617
+  2710 0001:003A0623  2712 0001:003A0649  2713 0001:003A0669  2714 0001:003A0689
+  2738 0001:003A069C  2739 0001:003A06A3  2740 0001:003A06AB  2741 0001:003A06B3
+  2744 0001:003A06B8  2746 0001:003A06D5  2747 0001:003A06E1  2748 0001:003A06F4
+  2749 0001:003A0712  2750 0001:003A0720  2751 0001:003A0753  2756 0001:003A0788
+  2758 0001:003A07A7  2759 0001:003A07B7  2760 0001:003A07C6  2761 0001:003A07D0
+  2762 0001:003A07DB  2763 0001:003A07EB  2764 0001:003A07F2  2765 0001:003A07F9
+  2766 0001:003A0804  2767 0001:003A080C  2768 0001:003A0813  2769 0001:003A081B
+  2770 0001:003A0826  2771 0001:003A082E  2772 0001:003A083E  2773 0001:003A0846
+  2775 0001:003A0853  2776 0001:003A0863  2777 0001:003A0873  2778 0001:003A087D
+  2779 0001:003A0891  2780 0001:003A08A4  2781 0001:003A08B5  2782 0001:003A08C8
+  2783 0001:003A08D1  2784 0001:003A08EC  2785 0001:003A0900  2787 0001:003A0909
+  2790 0001:003A092E  2793 0001:003A0953  2794 0001:003A095F  2795 0001:003A0969
+  2805 0001:003A09C4  2806 0001:003A0A0A  2807 0001:003A0A0F  2808 0001:003A0A17
+  2809 0001:003A0A1F  2810 0001:003A0A29  2811 0001:003A0A38  2813 0001:003A0A44
+  2814 0001:003A0A59  2816 0001:003A0A65  2817 0001:003A0A6C  2820 0001:003A0A73
+  2821 0001:003A0A79  2822 0001:003A0A8C  2824 0001:003A0AA2  2825 0001:003A0AA9
+  2827 0001:003A0AC6  2828 0001:003A0AD4  2830 0001:003A0AEC  2831 0001:003A0AF2
+  2832 0001:003A0AFA  2834 0001:003A0AFC  2835 0001:003A0B04  2825 0001:003A0B07
+  2836 0001:003A0B0C  2838 0001:003A0B12  2839 0001:003A0B1C  2840 0001:003A0B2A
+  2843 0001:003A0B3A  2844 0001:003A0B44  2846 0001:003A0B5B  2847 0001:003A0B6F
+  2848 0001:003A0B73  2849 0001:003A0BAE  2851 0001:003A0BB8  2853 0001:003A0BD7
+  2855 0001:003A0C1E  2856 0001:003A0C35  2857 0001:003A0C49  2860 0001:003A0C4D
+  2862 0001:003A0C6C  2864 0001:003A0CB3  2865 0001:003A0CC7  2868 0001:003A0CCB
+  2870 0001:003A0CF3  2871 0001:003A0D04  2872 0001:003A0D0D  2873 0001:003A0D16
+  2875 0001:003A0D1D  2876 0001:003A0D28  2877 0001:003A0D31  2878 0001:003A0D45
+  2879 0001:003A0D54  2880 0001:003A0D5C  2881 0001:003A0D79  2882 0001:003A0D8B
+  2883 0001:003A0D9D  2884 0001:003A0DAC  2886 0001:003A0DF3  2887 0001:003A0E3F
+  2888 0001:003A0E62  2889 0001:003A0E6E  2890 0001:003A0E9E  2891 0001:003A0EC6
+  2892 0001:003A0ECE  2893 0001:003A0ED8  2894 0001:003A0EE4  2897 0001:003A0EFD
+  2899 0001:003A0F20  2901 0001:003A0F50  2902 0001:003A0F63  2904 0001:003A0F6D
+  2906 0001:003A0F84  2911 0001:003A0F94  2912 0001:003A0FA5  2913 0001:003A0FAE
+  2914 0001:003A0FB7  2916 0001:003A0FBE  2917 0001:003A0FCD  2918 0001:003A0FDA
+  2919 0001:003A0FE4  2920 0001:003A0FEF  2921 0001:003A0FF8  2922 0001:003A100C
+  2923 0001:003A101B  2924 0001:003A1023  2925 0001:003A1040  2927 0001:003A104C
+  2928 0001:003A105E  2930 0001:003A1070  2931 0001:003A10CB  2932 0001:003A10F4
+  2933 0001:003A1100  2934 0001:003A1130  2935 0001:003A1158  2936 0001:003A1160
+  2937 0001:003A116A  2938 0001:003A1182  2943 0001:003A1198  2944 0001:003A11AB
+  2945 0001:003A11D3  2947 0001:003A11DF  2950 0001:003A12D0  2951 0001:003A12FC
+  2953 0001:003A1314  2954 0001:003A131C  2956 0001:003A1321  2958 0001:003A132D
+  2959 0001:003A1375  2961 0001:003A139D  2963 0001:003A13CE  2972 0001:003A1404
+  2974 0001:003A1464  2976 0001:003A1468  2978 0001:003A1474  2979 0001:003A1489
+  2981 0001:003A1495  2982 0001:003A149C  2986 0001:003A14A3  2987 0001:003A14A9
+  2989 0001:003A14C5  2990 0001:003A14D6  2991 0001:003A14E4  2992 0001:003A14F8
+  2994 0001:003A1504  2995 0001:003A151F  2997 0001:003A1524  2998 0001:003A152A
+  3000 0001:003A1540  3003 0001:003A1554  3004 0001:003A1569  3006 0001:003A1575
+  3007 0001:003A1589  3009 0001:003A158E  3010 0001:003A15B5  3011 0001:003A161C
+  3013 0001:003A1657  3015 0001:003A1694  3017 0001:003A16D5  3019 0001:003A1713
+  3021 0001:003A1751  3023 0001:003A176B  3025 0001:003A177F  3026 0001:003A1793
+  3027 0001:003A17A7  3029 0001:003A17C0  3030 0001:003A17F2  3032 0001:003A1807
+  3034 0001:003A181C  3035 0001:003A1837  3036 0001:003A184D  3037 0001:003A1860
+  3038 0001:003A186B  3039 0001:003A187E  3040 0001:003A18A6  3041 0001:003A18EE
+  3042 0001:003A1936  3043 0001:003A1947  3047 0001:003A195A  3048 0001:003A1960
+  3056 0001:003A1A6C  3057 0001:003A1AA5  3058 0001:003A1AA9  3059 0001:003A1AAE
+  3060 0001:003A1AB3  3062 0001:003A1AC2  3063 0001:003A1AC6  3065 0001:003A1AE2
+  3067 0001:003A1AEC  3068 0001:003A1B77  3070 0001:003A1B81  3071 0001:003A1B87
+  3073 0001:003A1B91  3074 0001:003A1B9F  3076 0001:003A1BBC  3078 0001:003A1C12
+  3079 0001:003A1C20  3081 0001:003A1C22  3074 0001:003A1C25  3083 0001:003A1C2A
+  3084 0001:003A1C39  3086 0001:003A1C73  3088 0001:003A1C90  3089 0001:003A1CB2
+  3091 0001:003A1CC2  3093 0001:003A1CD2  3095 0001:003A1D02  3096 0001:003A1D15
+  3098 0001:003A1D1F  3099 0001:003A1D42  3101 0001:003A1D59  3104 0001:003A1D64
+  3106 0001:003A1D84  3108 0001:003A1DB4  3109 0001:003A1DCA  3111 0001:003A1DD7
+  3113 0001:003A1DE7  3115 0001:003A1E17  3116 0001:003A1E2A  3118 0001:003A1E34
+  3119 0001:003A1E57  3126 0001:003A1E6E  3127 0001:003A1E7B  3128 0001:003A1E86
+  3131 0001:003A1E92  3063 0001:003A1E95  3132 0001:003A1E9E  3135 0001:003A1EF4
+  3136 0001:003A1EFB  3137 0001:003A1F05  3138 0001:003A1F10  3139 0001:003A1F1A
+  3143 0001:003A1F20  3145 0001:003A1F43  3146 0001:003A1F6A  3151 0001:003A1F90
+  3152 0001:003A1FB8  3153 0001:003A1FC0  3154 0001:003A1FDA  3155 0001:003A2019
+  3157 0001:003A203A  3159 0001:003A2067  3161 0001:003A20DD  3162 0001:003A20EB
+  3163 0001:003A210A  3165 0001:003A210C  3157 0001:003A210F  3167 0001:003A2118
+  3168 0001:003A212C  3169 0001:003A213F  3170 0001:003A214A  3173 0001:003A2184
+  3174 0001:003A2190  3175 0001:003A219B  3176 0001:003A21A3  3177 0001:003A21AE
+  3178 0001:003A21BF  3179 0001:003A21D0  3180 0001:003A21E1  3183 0001:003A21E8
+  3187 0001:003A21F4  3190 0001:003A21F8  3194 0001:003A2204  3197 0001:003A2208
+  3201 0001:003A2214  3204 0001:003A2218  3208 0001:003A2224  3215 0001:003A2228
+  3216 0001:003A2248  3218 0001:003A225E  3219 0001:003A226C  3221 0001:003A227E
+  3222 0001:003A229E  3223 0001:003A22CA  3216 0001:003A22CD  3224 0001:003A22D2
+  3230 0001:003A22F8  3231 0001:003A232F  3232 0001:003A233A  3233 0001:003A2357
+  3235 0001:003A2364  3236 0001:003A236F  3237 0001:003A238A  3239 0001:003A2417
+  3240 0001:003A243E  3241 0001:003A2452  3242 0001:003A2463  3236 0001:003A2466
+  3243 0001:003A2470  3246 0001:003A24AC  3247 0001:003A24DD  3248 0001:003A24E1
+  3250 0001:003A24F1  3251 0001:003A24F7  3253 0001:003A2529  3254 0001:003A2559
+  3255 0001:003A2574  3256 0001:003A257C  3257 0001:003A258F  3258 0001:003A259A
+  3259 0001:003A25A6  3261 0001:003A25AA  3274 0001:003A2A28  3275 0001:003A2A4A
+  3276 0001:003A2A5B  3278 0001:003A2A7C  3279 0001:003A2A91  3280 0001:003A2AF7
+  3281 0001:003A2B0B  3276 0001:003A2B0E  3282 0001:003A2B17  3285 0001:003A2B38
+  3286 0001:003A2B5A  3287 0001:003A2B93  3288 0001:003A2BB9  3289 0001:003A2BC1
+  3290 0001:003A2BD4  3291 0001:003A2BDF  3292 0001:003A2BEB  3297 0001:003A2EB8
+  3299 0001:003A2EC1  3300 0001:003A2EC6  3299 0001:003A2EED  3302 0001:003A2EF3
+  3307 0001:003A2EF8  3309 0001:003A2F01  3310 0001:003A2F06  3311 0001:003A2F2A
+  3310 0001:003A2F4A  3313 0001:003A2F4F  3316 0001:003A2F58  3320 0001:003A2F64
+  3326 0001:003A2F68  3329 0001:003A2F77  3330 0001:003A2F82  3332 0001:003A2F9A
+  3333 0001:003A2F9F  3334 0001:003A2FC3  3333 0001:003A2FD3  3335 0001:003A2FD8
+  3337 0001:003A2FE0  3338 0001:003A3004  3337 0001:003A302D  3339 0001:003A3032
+  3343 0001:003A3043  3346 0001:003A304C  3348 0001:003A305B  3349 0001:003A3063
+  3387 0001:003A306C  3388 0001:003A308B  3389 0001:003A308F  3390 0001:003A309E
+  3392 0001:003A30D7  3393 0001:003A30EB  3394 0001:003A311F  3390 0001:003A3122
+  3395 0001:003A3127  3397 0001:003A3139  3398 0001:003A314E  3399 0001:003A3162
+  3401 0001:003A3166  3402 0001:003A316E  3409 0001:003A3220  3410 0001:003A3229
+  3411 0001:003A3238  3413 0001:003A3271  3414 0001:003A3285  3415 0001:003A329C
+  3411 0001:003A329F  3416 0001:003A32A4  3417 0001:003A32B9  3420 0001:003A32C0
+  3422 0001:003A32CC  3423 0001:003A32DB  3426 0001:003A32E0  3428 0001:003A3302
+  3429 0001:003A3324  3430 0001:003A3346  3431 0001:003A3368  3432 0001:003A33AF
+  3433 0001:003A33F6  3434 0001:003A3418  3435 0001:003A343A  3436 0001:003A345C
+  3437 0001:003A347E  3442 0001:003A34B0  3443 0001:003A34BC  3444 0001:003A34CE
+  3445 0001:003A34D8  3446 0001:003A34E9  3448 0001:003A34F5  3449 0001:003A3510
+  3450 0001:003A3541  3451 0001:003A355E  3452 0001:003A357B  3453 0001:003A3596
+  3454 0001:003A35B1  3455 0001:003A35CC  3456 0001:003A35E7  3458 0001:003A3602
+  3459 0001:003A362B  3460 0001:003A363C  3464 0001:003A3644  3467 0001:003A3653
+  3468 0001:003A365E  3471 0001:003A3664  3473 0001:003A3670  3474 0001:003A367B
+
+Line numbers for fOrders(Orders\fOrders.pas) segment .itext
+
+  3476 0002:00001ECC  3477 0002:00001ED5  3479 0002:00001EDF
+
+Line numbers for rMisc(rMisc.pas) segment .text
+
+    65 0001:003A3730    66 0001:003A3736    67 0001:003A374C    68 0001:003A3759
+    75 0001:003A3778    76 0001:003A37A0    78 0001:003A37AA    79 0001:003A37B1
+    80 0001:003A37B9    76 0001:003A37BC    81 0001:003A37BF    82 0001:003A37D7
+    83 0001:003A37F3    84 0001:003A3810    86 0001:003A3826    87 0001:003A3850
+    88 0001:003A386E    89 0001:003A389B    84 0001:003A389F    90 0001:003A38A8
+    96 0001:003A3900    97 0001:003A3925    98 0001:003A392D    99 0001:003A3945
+   100 0001:003A3947   102 0001:003A3956   103 0001:003A3972   104 0001:003A3973
+   105 0001:003A3995   106 0001:003A39A0   100 0001:003A39A1   108 0001:003A39AC
+   111 0001:003A3A04   114 0001:003A3A0B   115 0001:003A3A19   116 0001:003A3A37
+   117 0001:003A3A55   118 0001:003A3A6D   119 0001:003A3A72   121 0001:003A3A88
+   124 0001:003A3AA4   125 0001:003A3AC0   126 0001:003A3AEC   129 0001:003A3B30
+   130 0001:003A3B3C   131 0001:003A3B62   134 0001:003A3B80   135 0001:003A3B89
+   136 0001:003A3BA3   139 0001:003A3BC0   140 0001:003A3BDA   141 0001:003A3C05
+   142 0001:003A3C0F   147 0001:003A3C4C   148 0001:003A3C6C   149 0001:003A3C7D
+   150 0001:003A3C8E   151 0001:003A3C9F   154 0001:003A3CB7   156 0001:003A3CD8
+   157 0001:003A3CFE   159 0001:003A3DBD   154 0001:003A3DBE   160 0001:003A3DC7
+   161 0001:003A3DE3   162 0001:003A3DFF   164 0001:003A3E1B   167 0001:003A3EB4
+   169 0001:003A3ED9   170 0001:003A3F25   175 0001:003A3F6C   176 0001:003A3F8A
+   177 0001:003A3F98   178 0001:003A3FA5   179 0001:003A3FDB   180 0001:003A3FF6
+   181 0001:003A4016   184 0001:003A4024   185 0001:003A4054   186 0001:003A4084
+   188 0001:003A408C   189 0001:003A40C7   193 0001:003A4104   194 0001:003A412D
+   199 0001:003A4156   204 0001:003A419C   205 0001:003A41CA   206 0001:003A41D8
+   207 0001:003A41E8   208 0001:003A4207   209 0001:003A4226   210 0001:003A4248
+   211 0001:003A426A   217 0001:003A4294   218 0001:003A42AC   219 0001:003A42BA
+   220 0001:003A42C7   221 0001:003A42FD   222 0001:003A4318   223 0001:003A4320
+   225 0001:003A434A   226 0001:003A4360   233 0001:003A4394   234 0001:003A43B1
+   235 0001:003A43B5   236 0001:003A43C3   237 0001:003A43D0   238 0001:003A4406
+   239 0001:003A4449   240 0001:003A444D   241 0001:003A4468   245 0001:003A4499
+   246 0001:003A44FB   247 0001:003A4515   248 0001:003A4523   249 0001:003A4530
+   241 0001:003A4531   250 0001:003A453A   251 0001:003A4549   256 0001:003A45A4
+   257 0001:003A45BF   258 0001:003A45D9   260 0001:003A45E8   264 0001:003A463C
+   265 0001:003A464C   268 0001:003A4690   269 0001:003A4693   270 0001:003A46A9
+   273 0001:003A46C4   274 0001:003A46E0   275 0001:003A4703   281 0001:003A4740
+   283 0001:003A4762   284 0001:003A4772   285 0001:003A477C   286 0001:003A478B
+   289 0001:003A4799   293 0001:003A4831   294 0001:003A483B   295 0001:003A4843
+   297 0001:003A484D   302 0001:003A4890   303 0001:003A48AE   304 0001:003A48B9
+   305 0001:003A48EB   307 0001:003A494B   308 0001:003A4965   309 0001:003A4983
+   312 0001:003A49EC   313 0001:003A4A18   315 0001:003A4A77   320 0001:003A4AC8
+   321 0001:003A4AE3   322 0001:003A4AEE   323 0001:003A4B20   324 0001:003A4B47
+   331 0001:003A4B94   332 0001:003A4BBA   333 0001:003A4BBE   334 0001:003A4BC9
+   335 0001:003A4BFB   336 0001:003A4C4C   337 0001:003A4C50   338 0001:003A4C69
+   341 0001:003A4C94   342 0001:003A4C9E   344 0001:003A4CCB   345 0001:003A4CF9
+   338 0001:003A4CFA   346 0001:003A4CFF   347 0001:003A4D0E   348 0001:003A4D4D
+   356 0001:003A4DCC   357 0001:003A4DF1   358 0001:003A4E08   359 0001:003A4E37
+   361 0001:003A4E76   362 0001:003A4EB8   357 0001:003A4EB9   363 0001:003A4EC2
+   366 0001:003A4F10   367 0001:003A4F22   368 0001:003A4F2B   369 0001:003A4F3A
+   370 0001:003A4F49   374 0001:003A4F64   375 0001:003A4F6F   376 0001:003A4F77
+   377 0001:003A4F7F   378 0001:003A4F8B   387 0001:003A4F9C   388 0001:003A4FCD
+   389 0001:003A4FD5   390 0001:003A4FE2   392 0001:003A4FE7   393 0001:003A5004
+   395 0001:003A500A   396 0001:003A5015   400 0001:003A5022   401 0001:003A502F
+   402 0001:003A5057   403 0001:003A5065   405 0001:003A5088   406 0001:003A5093
+   414 0001:003A50EC   415 0001:003A511A   416 0001:003A5125   418 0001:003A512A
+   419 0001:003A5135   422 0001:003A5142   423 0001:003A514F   429 0001:003A5178
+   430 0001:003A51A4   431 0001:003A51B7   433 0001:003A51CA
+
+Line numbers for rMisc(rMisc.pas) segment .itext
+
+   425 0002:00001EE0   428 0002:00001EE7
+
+Line numbers for fODMedOIFA(Orders\fODMedOIFA.pas) segment .text
+
+    48 0001:003A5460    49 0001:003A5485    50 0001:003A5494    51 0001:003A54A2
+    52 0001:003A54AE    54 0001:003A54BE    55 0001:003A54D5    56 0001:003A54E3
+    59 0001:003A54EB    60 0001:003A5503    61 0001:003A550E    63 0001:003A5524
+    64 0001:003A5549    68 0001:003A557A    71 0001:003A558A    73 0001:003A55AC
+    75 0001:003A55BC    82 0001:003A5690    83 0001:003A56B5    84 0001:003A56C4
+    85 0001:003A56D2    86 0001:003A56E3    88 0001:003A56F3    89 0001:003A570A
+    90 0001:003A5718    93 0001:003A5720    94 0001:003A5738    95 0001:003A5743
+    97 0001:003A5759    98 0001:003A577E   102 0001:003A57AE   106 0001:003A57CB
+   108 0001:003A57DB   111 0001:003A5808   113 0001:003A580B   114 0001:003A5816
+   117 0001:003A5818   119 0001:003A581B   120 0001:003A5839   123 0001:003A583C
+   125 0001:003A5853   126 0001:003A588F   127 0001:003A5896   132 0001:003A58B8
+   133 0001:003A58BD   138 0001:003A58C0   139 0001:003A58C5   145 0001:003A58C8
+   146 0001:003A58CD   148 0001:003A58FC
+
+Line numbers for uOrders(Orders\uOrders.pas) segment .text
+
+   179 0001:003A58D0   180 0001:003A5905   182 0001:003A5907   184 0001:003A5926
+   185 0001:003A592B   188 0001:003A5935   189 0001:003A593C   191 0001:003A5943
+   193 0001:003A594A   195 0001:003A5953   197 0001:003A5972   198 0001:003A598B
+   200 0001:003A5990   201 0001:003A5A71   202 0001:003A5A78   203 0001:003A5A7F
+   204 0001:003A5A86   205 0001:003A5A8D   206 0001:003A5A94   209 0001:003A5A9B
+   210 0001:003A5AA1   211 0001:003A5AA9   213 0001:003A5AB0   214 0001:003A5AB7
+   215 0001:003A5ABE   216 0001:003A5AC5   217 0001:003A5ACC   218 0001:003A5AD3
+   219 0001:003A5ADA   220 0001:003A5AE1   222 0001:003A5AE8   225 0001:003A5AED
+   226 0001:003A5AF9   227 0001:003A5B02   228 0001:003A5B10   229 0001:003A5B17
+   230 0001:003A5B1E   231 0001:003A5B25   235 0001:003A5B54   236 0001:003A5B56
+   237 0001:003A5B66   239 0001:003A5B74   240 0001:003A5B85   242 0001:003A5B87
+   246 0001:003A5C30   247 0001:003A5C32   248 0001:003A5C42   250 0001:003A5C50
+   251 0001:003A5C61   253 0001:003A5C63   257 0001:003A5D0C   258 0001:003A5D14
+   259 0001:003A5D16   260 0001:003A5D3E   261 0001:003A5D4F   265 0001:003A5D8D
+   266 0001:003A5DC1   267 0001:003A5DD2   268 0001:003A5DE1   270 0001:003A5DED
+   272 0001:003A5E03   273 0001:003A5E13   274 0001:003A5E26   276 0001:003A5E28
+   278 0001:003A5E50   279 0001:003A5E60   280 0001:003A5E71   282 0001:003A5E73
+   285 0001:003A5F78   286 0001:003A5F80   287 0001:003A5F82   288 0001:003A5FAA
+   289 0001:003A5FBB   292 0001:003A5FF1   293 0001:003A6000   295 0001:003A600C
+   297 0001:003A601A   298 0001:003A602D   300 0001:003A602F   302 0001:003A6057
+   303 0001:003A6068   305 0001:003A606A   310 0001:003A6170   311 0001:003A6184
+   313 0001:003A6191   314 0001:003A6199   316 0001:003A619F   317 0001:003A61A1
+   318 0001:003A61A8   321 0001:003A61D1   322 0001:003A61D3   325 0001:003A61E2
+   329 0001:003A6230   331 0001:003A6249   332 0001:003A624E   333 0001:003A6255
+   335 0001:003A6279   340 0001:003A627C   341 0001:003A62A1   342 0001:003A62AC
+   344 0001:003A62B2   345 0001:003A62B4   348 0001:003A62DD   349 0001:003A62DF
+   351 0001:003A62EE   354 0001:003A6340   355 0001:003A635D   356 0001:003A6365
+   357 0001:003A6389   364 0001:003A63AC   365 0001:003A63CA   366 0001:003A63F6
+   367 0001:003A63FF   368 0001:003A6404   370 0001:003A641B   371 0001:003A6428
+   372 0001:003A6452   374 0001:003A6488   375 0001:003A6490   368 0001:003A6493
+   376 0001:003A6496   379 0001:003A64BC   380 0001:003A64F3   382 0001:003A6504
+   384 0001:003A650E   385 0001:003A6516   386 0001:003A651E   387 0001:003A6526
+   388 0001:003A652B   391 0001:003A6530   397 0001:003A655F   399 0001:003A6573
+   401 0001:003A6587   402 0001:003A658F   403 0001:003A6597   404 0001:003A659F
+   409 0001:003A65A9   411 0001:003A65CA   412 0001:003A65D2   413 0001:003A65DA
+   417 0001:003A65E4   418 0001:003A65EC   419 0001:003A65F4   421 0001:003A65FC
+   422 0001:003A6612   425 0001:003A661B   427 0001:003A6627   428 0001:003A662F
+   429 0001:003A6637   430 0001:003A663F   433 0001:003A6644   435 0001:003A664E
+   436 0001:003A6656   437 0001:003A665E   438 0001:003A6666   441 0001:003A666B
+   443 0001:003A6676   444 0001:003A668C   446 0001:003A6693   447 0001:003A66D3
+   448 0001:003A66D8   453 0001:003A6704   454 0001:003A6724   455 0001:003A6726
+   456 0001:003A6735   457 0001:003A673F   459 0001:003A674B   460 0001:003A6759
+   461 0001:003A677A   462 0001:003A6786   463 0001:003A6792   464 0001:003A679E
+   465 0001:003A67A8   466 0001:003A67B6   467 0001:003A67BD   468 0001:003A67C5
+   470 0001:003A67C7   474 0001:003A689C   475 0001:003A68AB   476 0001:003A68BA
+   477 0001:003A68C9   478 0001:003A68D8   479 0001:003A68E7   480 0001:003A68F6
+   481 0001:003A6905   482 0001:003A6914   483 0001:003A6923   484 0001:003A6932
+   485 0001:003A6941   486 0001:003A6950   487 0001:003A695F   488 0001:003A696E
+   489 0001:003A697D   490 0001:003A698C   491 0001:003A699B   492 0001:003A69AA
+   493 0001:003A69B9   536 0001:003A6AC4   537 0001:003A6B02   539 0001:003A6B1E
+   541 0001:003A6B37   542 0001:003A6B56   544 0001:003A6B8A   545 0001:003A6BA8
+   546 0001:003A6BB9   547 0001:003A6BC8   548 0001:003A6C13   550 0001:003A6C2D
+   551 0001:003A6C44   539 0001:003A6C45   553 0001:003A6C51   556 0001:003A6C94
+   558 0001:003A6CB3   559 0001:003A6CD1   561 0001:003A6CEC   562 0001:003A6CFD
+   563 0001:003A6D0C   564 0001:003A6D47   566 0001:003A6D5E   554 0001:003A6D5F
+   568 0001:003A6D66   537 0001:003A6D69   569 0001:003A6D72   574 0001:003A6E14
+   575 0001:003A6E36   577 0001:003A6E52   578 0001:003A6E60   579 0001:003A6E8D
+   582 0001:003A6EC1   583 0001:003A6EC6   575 0001:003A6EC9   584 0001:003A6ECE
+   587 0001:003A6EF8   588 0001:003A6F31   589 0001:003A6F41   591 0001:003A6F50
+   592 0001:003A6F5D   594 0001:003A6F88   595 0001:003A6FCB   596 0001:003A6FCD
+   597 0001:003A6FE0   598 0001:003A6FF3   599 0001:003A6FFB   600 0001:003A700A
+   601 0001:003A7017   602 0001:003A7024   603 0001:003A7031   604 0001:003A703E
+   605 0001:003A704B   607 0001:003A704F   608 0001:003A7070   609 0001:003A707B
+   611 0001:003A7090   612 0001:003A70AD   614 0001:003A70BD   615 0001:003A70C4
+   617 0001:003A70C9   618 0001:003A70D7   621 0001:003A70E5   622 0001:003A70F5
+   624 0001:003A7101   625 0001:003A7110   626 0001:003A711D   627 0001:003A712C
+   628 0001:003A713B   629 0001:003A7152   631 0001:003A7162   633 0001:003A7184
+   635 0001:003A7193   636 0001:003A719D   637 0001:003A71AE   638 0001:003A71CD
+   639 0001:003A71DD   640 0001:003A71F9   643 0001:003A7229   644 0001:003A7233
+   645 0001:003A7235   646 0001:003A723C   647 0001:003A7244   648 0001:003A724C
+   649 0001:003A7254   650 0001:003A725C   653 0001:003A7261   655 0001:003A7270
+   657 0001:003A729A   658 0001:003A72A4   661 0001:003A72AB   663 0001:003A72BA
+   665 0001:003A72E4   666 0001:003A72EE   669 0001:003A72F5   671 0001:003A7304
+   672 0001:003A731C   674 0001:003A7348   675 0001:003A7352   678 0001:003A7359
+   680 0001:003A7368   681 0001:003A7380   683 0001:003A73AC   684 0001:003A73B6
+   687 0001:003A73BD   689 0001:003A73CC   690 0001:003A73E4   692 0001:003A7410
+   693 0001:003A741A   696 0001:003A7421   698 0001:003A7434   700 0001:003A743F
+   702 0001:003A7469   703 0001:003A7473   708 0001:003A747A   709 0001:003A7484
+   710 0001:003A7495   711 0001:003A74C0   712 0001:003A74D0   713 0001:003A74EC
+   714 0001:003A74F7   719 0001:003A7537   720 0001:003A7549   721 0001:003A755C
+   722 0001:003A7580   724 0001:003A7593   728 0001:003A759D   729 0001:003A75A4
+   730 0001:003A75AC   731 0001:003A75B4   733 0001:003A75BC   734 0001:003A75C4
+   745 0001:003A7C94   746 0001:003A7CBB   747 0001:003A7CBD   748 0001:003A7CDF
+   750 0001:003A7CE7   751 0001:003A7CFF   752 0001:003A7D08   755 0001:003A7D10
+   756 0001:003A7D12   758 0001:003A7D17   759 0001:003A7D1F   763 0001:003A7D25
+   764 0001:003A7D31   765 0001:003A7D3F   767 0001:003A7D48   768 0001:003A7D57
+   769 0001:003A7D65   770 0001:003A7D8E   771 0001:003A7D90   776 0001:003A7DAD
+   778 0001:003A7DAF   798 0001:003A7DDC   799 0001:003A7E3D   800 0001:003A7E44
+   801 0001:003A7E4B   802 0001:003A7E52   803 0001:003A7E59   804 0001:003A7E60
+   805 0001:003A7E67   806 0001:003A7E6E   807 0001:003A7E70   810 0001:003A7E77
+   812 0001:003A7E8A   814 0001:003A7EA2   816 0001:003A7EA9   817 0001:003A7EE4
+   818 0001:003A7EFC   819 0001:003A7F4D   820 0001:003A7F5E   821 0001:003A7F6B
+   822 0001:003A7F7B   823 0001:003A7FEA   824 0001:003A8010   826 0001:003A8012
+   828 0001:003A802A   830 0001:003A8031   831 0001:003A806C   832 0001:003A807C
+   833 0001:003A80EB   834 0001:003A8111   836 0001:003A8113   838 0001:003A812B
+   839 0001:003A8132   840 0001:003A81A3   842 0001:003A81B1   843 0001:003A8222
+   845 0001:003A8293   846 0001:003A82CE   847 0001:003A82DE   848 0001:003A834D
+   850 0001:003A8373   852 0001:003A8393   853 0001:003A83B1   855 0001:003A83B6
+   856 0001:003A83D0   857 0001:003A83E8   858 0001:003A83FA   859 0001:003A8401
+   860 0001:003A8437   862 0001:003A845B   863 0001:003A846A   864 0001:003A8478
+   865 0001:003A849F   866 0001:003A84B9   868 0001:003A8515   869 0001:003A856F
+   872 0001:003A8592   873 0001:003A85B0   875 0001:003A85B7   877 0001:003A85D6
+   878 0001:003A85DE   890 0001:003A85F2   895 0001:003A8625   897 0001:003A862E
+   900 0001:003A8635   901 0001:003A8673   903 0001:003A8699   904 0001:003A86A0
+   907 0001:003A86B1   908 0001:003A86BC   910 0001:003A86CB   911 0001:003A86E9
+   912 0001:003A86F7   913 0001:003A86FE   916 0001:003A8703   918 0001:003A8712
+   920 0001:003A874E   922 0001:003A87A0   923 0001:003A87AE   926 0001:003A87B5
+   945 0001:003A87C3   948 0001:003A87DA   950 0001:003A8800   951 0001:003A881A
+   952 0001:003A8828   953 0001:003A8843   955 0001:003A8849   958 0001:003A8884
+   961 0001:003A8896   967 0001:003A88A9   968 0001:003A88BE   969 0001:003A88E7
+   970 0001:003A88F4   971 0001:003A8908   973 0001:003A8910   974 0001:003A8930
+   976 0001:003A8936   978 0001:003A8970   979 0001:003A8978   983 0001:003A8982
+   984 0001:003A8989   985 0001:003A8990   987 0001:003A8998   988 0001:003A89BC
+   993 0001:003A89CE   994 0001:003A89DC   996 0001:003A89EE   998 0001:003A8A40
+   999 0001:003A8A50  1001 0001:003A8A5E  1004 0001:003A8A6A  1006 0001:003A8A89
+  1008 0001:003A8AA4  1009 0001:003A8AAD  1011 0001:003A8ABB  1013 0001:003A8AC7
+  1014 0001:003A8ADD  1015 0001:003A8AFA  1016 0001:003A8B07  1017 0001:003A8B17
+  1019 0001:003A8B25  1020 0001:003A8B42  1021 0001:003A8B5C  1024 0001:003A8B72
+  1025 0001:003A8B87  1026 0001:003A8BC1  1027 0001:003A8BD1  1028 0001:003A8C05
+  1029 0001:003A8C0D  1030 0001:003A8C39  1031 0001:003A8C44  1033 0001:003A8C58
+  1035 0001:003A8C8D  1036 0001:003A8CCB  1037 0001:003A8CE4  1038 0001:003A8CEC
+  1039 0001:003A8CF6  1045 0001:003A8CFB  1046 0001:003A8D0C  1047 0001:003A8D18
+  1051 0001:003A8D2D  1052 0001:003A8D36  1054 0001:003A8D44  1055 0001:003A8D4E
+  1058 0001:003A8D53  1060 0001:003A8D67  1061 0001:003A8D6D  1062 0001:003A8D80
+  1063 0001:003A8D86  1066 0001:003A8D9F  1068 0001:003A8DB3  1069 0001:003A8DF3
+  1072 0001:003A8E00  1074 0001:003A8E1D  1075 0001:003A8E3D  1077 0001:003A8E46
+  1078 0001:003A8E5C  1080 0001:003A8E65  1083 0001:003A8E6C  1086 0001:003A8E73
+  1088 0001:003A8E7D  1090 0001:003A8E99  1091 0001:003A8EA5  1092 0001:003A8EB1
+  1093 0001:003A8EBE  1097 0001:003A8ED5  1098 0001:003A8F27  1099 0001:003A8F31
+  1100 0001:003A8F3D  1102 0001:003A8F4D  1103 0001:003A8F5A  1104 0001:003A8F6C
+  1108 0001:003A8F7D  1109 0001:003A8F87  1115 0001:003A8F93  1117 0001:003A8FAA
+  1118 0001:003A8FB2  1119 0001:003A8FBA  1120 0001:003A8FC2  1121 0001:003A8FCA
+  1122 0001:003A8FD2  1123 0001:003A8FF2  1124 0001:003A900A  1125 0001:003A901B
+  1126 0001:003A903B  1127 0001:003A9053  1128 0001:003A9064  1129 0001:003A9084
+  1130 0001:003A909C  1131 0001:003A90AD  1132 0001:003A90CD  1133 0001:003A90E3
+  1134 0001:003A90FC  1136 0001:003A9104  1137 0001:003A9138  1138 0001:003A9150
+  1139 0001:003A916B  1140 0001:003A9183  1141 0001:003A919E  1142 0001:003A91B1
+  1143 0001:003A91CA  1144 0001:003A91E5  1145 0001:003A91FD  1146 0001:003A9218
+  1134 0001:003A9230  1148 0001:003A9238  1150 0001:003A9270  1151 0001:003A9282
+  1158 0001:003A9294  1159 0001:003A929D  1165 0001:003A92AB  1166 0001:003A92B5
+  1171 0001:003A92BC  1172 0001:003A92C5  1174 0001:003A92CC  1175 0001:003A92E5
+  1177 0001:003A92ED  1184 0001:003A9734  1191 0001:003A9756  1192 0001:003A9764
+  1193 0001:003A9772  1194 0001:003A977D  1195 0001:003A9786  1196 0001:003A9793
+  1197 0001:003A97A6  1198 0001:003A97B1  1206 0001:003A97D4  1207 0001:003A9811
+  1208 0001:003A9815  1209 0001:003A9820  1210 0001:003A982A  1211 0001:003A9850
+  1213 0001:003A985D  1216 0001:003A9871  1217 0001:003A98BC  1218 0001:003A98C6
+  1219 0001:003A98D2  1222 0001:003A98DF  1223 0001:003A98EB  1224 0001:003A98F9
+  1225 0001:003A9907  1226 0001:003A9914  1227 0001:003A9922  1228 0001:003A9934
+  1229 0001:003A993E  1230 0001:003A9949  1231 0001:003A9961  1238 0001:003A99B4
+  1239 0001:003A99F1  1240 0001:003A99F3  1241 0001:003A99FE  1242 0001:003A9A08
+  1243 0001:003A9A2E  1245 0001:003A9A3B  1248 0001:003A9A4F  1249 0001:003A9A9A
+  1250 0001:003A9AA4  1251 0001:003A9AB0  1254 0001:003A9ABD  1255 0001:003A9AD0
+  1256 0001:003A9AF4  1257 0001:003A9AF6  1269 0001:003A9B44  1270 0001:003A9B71
+  1271 0001:003A9B75  1273 0001:003A9B89  1275 0001:003A9BB8  1276 0001:003A9BC4
+  1277 0001:003A9BC8  1279 0001:003A9BCA  1271 0001:003A9BCB  1280 0001:003A9BCE
+  1282 0001:003A9C04  1283 0001:003A9C4F  1284 0001:003A9C53  1285 0001:003A9C64
+  1286 0001:003A9C8A  1287 0001:003A9C99  1288 0001:003A9CA7  1289 0001:003A9CC5
+  1290 0001:003A9CDF  1292 0001:003A9D09  1294 0001:003A9D16  1293 0001:003A9D21
+  1296 0001:003A9D30  1298 0001:003A9D59  1300 0001:003A9D69  1306 0001:003A9DCC
+  1307 0001:003A9E04  1308 0001:003A9E06  1310 0001:003A9E0F  1311 0001:003A9E22
+  1312 0001:003A9E2F  1313 0001:003A9E3D  1315 0001:003A9E3F  1317 0001:003A9E43
+  1318 0001:003A9E60  1319 0001:003A9EA8  1320 0001:003A9EB2  1322 0001:003A9EBC
+  1323 0001:003A9ED8  1324 0001:003A9EE4  1325 0001:003A9EEE  1329 0001:003A9F1C
+  1331 0001:003A9F49  1332 0001:003A9F4C  1333 0001:003A9F4E  1336 0001:003A9F50
+  1337 0001:003A9F51  1339 0001:003A9F53  1341 0001:003A9F5C  1342 0001:003A9F66
+  1343 0001:003A9F72  1346 0001:003A9F7F  1348 0001:003A9F88  1349 0001:003A9F92
+  1350 0001:003A9F9E  1352 0001:003A9FAB  1354 0001:003A9FB4  1355 0001:003A9FBE
+  1356 0001:003A9FCA  1359 0001:003A9FE7  1361 0001:003A9FF0  1362 0001:003A9FFA
+  1363 0001:003AA006  1365 0001:003AA023  1367 0001:003AA02C  1368 0001:003AA036
+  1369 0001:003AA042  1371 0001:003AA04B  1372 0001:003AA04D  1377 0001:003AA0D0
+  1378 0001:003AA115  1380 0001:003AA117  1381 0001:003AA124  1384 0001:003AA141
+  1387 0001:003AA14E  1389 0001:003AA15B  1390 0001:003AA162  1391 0001:003AA16F
+  1393 0001:003AA176  1395 0001:003AA192  1397 0001:003AA1A2  1398 0001:003AA1C9
+  1400 0001:003AA1EA  1401 0001:003AA1F7  1402 0001:003AA231  1403 0001:003AA23E
+  1405 0001:003AA24B  1406 0001:003AA26F  1407 0001:003AA27B  1410 0001:003AA2A8
+  1411 0001:003AA2B2  1412 0001:003AA2B4  1417 0001:003AA3EC  1418 0001:003AA428
+  1420 0001:003AA42A  1421 0001:003AA437  1424 0001:003AA454  1427 0001:003AA461
+  1429 0001:003AA46E  1430 0001:003AA475  1431 0001:003AA482  1433 0001:003AA489
+  1435 0001:003AA4A7  1436 0001:003AA4CC  1438 0001:003AA4E5  1439 0001:003AA4F2
+  1440 0001:003AA52C  1441 0001:003AA539  1445 0001:003AA546  1446 0001:003AA550
+  1447 0001:003AA552  1451 0001:003AA594  1452 0001:003AA59E  1461 0001:003AA5A0
+  1462 0001:003AA5DC  1464 0001:003AA5E5  1465 0001:003AA5EF  1468 0001:003AA5FB
+  1469 0001:003AA604  1470 0001:003AA614  1473 0001:003AA62A  1474 0001:003AA62F
+  1475 0001:003AA63E  1476 0001:003AA655  1477 0001:003AA661  1478 0001:003AA668
+  1480 0001:003AA687  1481 0001:003AA694  1483 0001:003AA69A  1484 0001:003AA6A8
+  1485 0001:003AA6B8  1487 0001:003AA6BE  1488 0001:003AA6CC  1490 0001:003AA6DA
+  1491 0001:003AA6F3  1492 0001:003AA711  1493 0001:003AA720  1494 0001:003AA742
+  1495 0001:003AA758  1496 0001:003AA778  1497 0001:003AA784  1498 0001:003AA789
+  1500 0001:003AA791  1501 0001:003AA7A7  1502 0001:003AA80E  1503 0001:003AA819
+  1504 0001:003AA84C  1505 0001:003AA856  1506 0001:003AA85F  1507 0001:003AA86B
+  1509 0001:003AA875  1510 0001:003AA88E  1512 0001:003AA8A2  1470 0001:003AA8A3
+  1513 0001:003AA8AC  1514 0001:003AA8B1  1536 0001:003AA92C  1537 0001:003AA972
+  1538 0001:003AA976  1539 0001:003AA986  1541 0001:003AA99C  1543 0001:003AA9B6
+  1544 0001:003AA9BC  1545 0001:003AA9C0  1546 0001:003AA9CF  1547 0001:003AA9D4
+  1548 0001:003AA9DC  1551 0001:003AA9E1  1552 0001:003AAA02  1554 0001:003AAA0A
+  1556 0001:003AAA28  1557 0001:003AAA3F  1561 0001:003AAA69  1562 0001:003AAA8D
+  1563 0001:003AAAA4  1564 0001:003AAAB8  1565 0001:003AAAEC  1567 0001:003AAAF4
+  1569 0001:003AAB03  1570 0001:003AAB3D  1572 0001:003AAB41  1573 0001:003AAB4D
+  1575 0001:003AAB57  1576 0001:003AAB71  1578 0001:003AAB77  1579 0001:003AAB89
+  1581 0001:003AAB9B  1583 0001:003AABA5  1584 0001:003AABBE  1586 0001:003AABD2
+  1539 0001:003AABD3  1588 0001:003AABDC  1589 0001:003AABE1  1598 0001:003AAC98
+  1601 0001:003AACDD  1602 0001:003AACE1  1603 0001:003AACF1  1604 0001:003AACFB
+  1606 0001:003AAD0D  1608 0001:003AAD27  1611 0001:003AAD2D  1612 0001:003AAD31
+  1613 0001:003AAD40  1614 0001:003AAD45  1615 0001:003AAD4D  1617 0001:003AAD52
+  1619 0001:003AAD5E  1621 0001:003AAD7C  1622 0001:003AAD93  1625 0001:003AADBD
+  1626 0001:003AADCC  1627 0001:003AAE0A  1630 0001:003AAE13  1632 0001:003AAE31
+  1633 0001:003AAE48  1636 0001:003AAE72  1637 0001:003AAE81  1638 0001:003AAEBB
+  1640 0001:003AAEBF  1641 0001:003AAECB  1642 0001:003AAED5  1643 0001:003AAEEF
+  1645 0001:003AAEF5  1646 0001:003AAF0E  1648 0001:003AAF22  1604 0001:003AAF23
+  1649 0001:003AAF2C  1651 0001:003AAF31  1655 0001:003AAFF4  1656 0001:003AAFFB
+  1658 0001:003AB004  1659 0001:003AB009  1661 0001:003AB00E  1665 0001:003AB010
+  1666 0001:003AB017  1668 0001:003AB020  1669 0001:003AB025  1671 0001:003AB02A
+  1675 0001:003AB02C  1676 0001:003AB033  1678 0001:003AB03C  1679 0001:003AB041
+  1681 0001:003AB046  1685 0001:003AB048  1686 0001:003AB04F  1688 0001:003AB058
+  1689 0001:003AB05D  1691 0001:003AB062  1695 0001:003AB064  1696 0001:003AB06B
+  1697 0001:003AB079  1699 0001:003AB082  1700 0001:003AB087  1702 0001:003AB08C
+  1707 0001:003AB090  1708 0001:003AB0AE  1709 0001:003AB0B0  1711 0001:003AB0C2
+  1714 0001:003AB11A  1715 0001:003AB124  1717 0001:003AB134  1718 0001:003AB136
+  1720 0001:003AB16C  1725 0001:003AB20C  1726 0001:003AB225  1731 0001:003AB228
+  1733 0001:003AB231  1734 0001:003AB242  1738 0001:003AB243  1740 0001:003AB251
+  1741 0001:003AB262  1743 0001:003AB263  1745 0001:003AB274  1746 0001:003AB287
+  1748 0001:003AB288  1750 0001:003AB298  1755 0001:003AB420  1757 0001:003AB429
+  1758 0001:003AB43A  1762 0001:003AB43B  1764 0001:003AB449  1765 0001:003AB45A
+  1767 0001:003AB45B  1769 0001:003AB46B  1773 0001:003AB524  1774 0001:003AB538
+  1775 0001:003AB544  1776 0001:003AB558  1777 0001:003AB565  1778 0001:003AB579
+  1779 0001:003AB586  1780 0001:003AB59A  1781 0001:003AB5A7  1782 0001:003AB5AA
+  1790 0001:003AB5AC  1791 0001:003AB5E9  1792 0001:003AB5F8  1794 0001:003AB612
+  1796 0001:003AB62A  1797 0001:003AB638  1798 0001:003AB64A  1797 0001:003AB690
+  1799 0001:003AB693  1794 0001:003AB696  1800 0001:003AB69B  1802 0001:003AB6BA
+  1804 0001:003AB6D4  1806 0001:003AB6E0  1807 0001:003AB6E8  1809 0001:003AB6F7
+  1811 0001:003AB70F  1812 0001:003AB71D  1813 0001:003AB72F  1812 0001:003AB775
+  1814 0001:003AB778  1809 0001:003AB77B  1815 0001:003AB780  1817 0001:003AB79F
+  1818 0001:003AB7A7  1832 0001:003AB7E8  1833 0001:003AB816  1835 0001:003AB81A
+  1836 0001:003AB833  1838 0001:003AB848  1839 0001:003AB878  1844 0001:003AB887
+  1845 0001:003AB88B  1846 0001:003AB894  1848 0001:003AB8AF  1850 0001:003AB8B3
+  1851 0001:003AB8C5  1853 0001:003AB8CB  1854 0001:003AB8CE  1857 0001:003AB8DD
+  1858 0001:003AB8ED  1860 0001:003AB8F1  1861 0001:003AB908  1862 0001:003AB90E
+  1864 0001:003AB91C  1866 0001:003AB927  1885 0001:003AB93A  1889 0001:003ABAB8
+  1890 0001:003ABAC1  1891 0001:003ABAD0  1892 0001:003ABAD9  1893 0001:003ABAE3
+  1897 0001:003ABAE4  1898 0001:003ABAE8  1899 0001:003ABAEA  1900 0001:003ABAF0
+  1902 0001:003ABAF8  1903 0001:003ABAFE  1904 0001:003ABB01  1915 0001:003ABB04
+  1916 0001:003ABB0B  1917 0001:003ABB0F  1918 0001:003ABB11  1919 0001:003ABB1B
+  1920 0001:003ABB43  1921 0001:003ABB60  1922 0001:003ABB97  1923 0001:003ABB9B
+  1928 0001:003ABBA8  1929 0001:003ABBAF  1930 0001:003ABBB1  1932 0001:003ABBBE
+  1933 0001:003ABBC8  1934 0001:003ABBF9  1938 0001:003ABBFD  1939 0001:003ABC07
+  1940 0001:003ABC38  1941 0001:003ABC3C  1942 0001:003ABC48  1944 0001:003ABC4A
+  1949 0001:003ABC54  1951 0001:003ABC88  1952 0001:003ABC8A  1954 0001:003ABCA3
+  1955 0001:003ABCCC  1957 0001:003ABCD5  1959 0001:003ABCE6  1960 0001:003ABD04
+  1961 0001:003ABD22  1962 0001:003ABD3C  1963 0001:003ABD80  1964 0001:003ABDA7
+  1968 0001:003ABDAE  1970 0001:003ABDBF  1971 0001:003ABDDD  1972 0001:003ABDFB
+  1974 0001:003ABE37  1975 0001:003ABE5E  1981 0001:003ABE60  1983 0001:003ABE86
+  1984 0001:003ABEA3  1986 0001:003ABEAC  1988 0001:003ABEB9  1989 0001:003ABEC6
+  1990 0001:003ABEFE  1991 0001:003ABF19  1995 0001:003ABF1D  1997 0001:003ABF2A
+  1999 0001:003ABF44  2000 0001:003ABF6B  2006 0001:003ABF6D
+
+Line numbers for uOrders(Orders\uOrders.pas) segment .itext
+
+  2008 0002:00001EE8  2009 0002:00001F02  2010 0002:00001F09  2011 0002:00001F10
+  2012 0002:00001F1A  2013 0002:00001F28  2014 0002:00001F2F  2015 0002:00001F36
+  2016 0002:00001F3D  2017 0002:00001F44  2018 0002:00001F4B  2019 0002:00001F52
+  2020 0002:00001F59  2021 0002:00001F60  2022 0002:00001F67  2024 0002:00001F6E
+
+Line numbers for rCore(rCore.pas) segment .text
+
+   232 0001:003AC314   234 0001:003AC332   237 0001:003AC33C   238 0001:003AC34E
+   239 0001:003AC3B7   240 0001:003AC3C1   245 0001:003AC3F8   246 0001:003AC3FB
+   247 0001:003AC3FD   248 0001:003AC428   249 0001:003AC440   250 0001:003AC442
+   255 0001:003AC444   256 0001:003AC447   257 0001:003AC449   258 0001:003AC459
+   259 0001:003AC471   260 0001:003AC473   266 0001:003AC478   267 0001:003AC47B
+   268 0001:003AC490   274 0001:003AC498   275 0001:003AC4B1   276 0001:003AC4D0
+   277 0001:003AC4DC   285 0001:003AC51C   286 0001:003AC53F   287 0001:003AC546
+   288 0001:003AC559   289 0001:003AC568   290 0001:003AC5A4   291 0001:003AC5C3
+   292 0001:003AC5D5   293 0001:003AC5EE   294 0001:003AC606   295 0001:003AC632
+   296 0001:003AC64B   302 0001:003AC6C0   303 0001:003AC6DC   304 0001:003AC6F6
+   305 0001:003AC702   309 0001:003AC738   310 0001:003AC757   311 0001:003AC787
+   315 0001:003AC7C4   316 0001:003AC7CA   317 0001:003AC7E2   318 0001:003AC7F6
+   322 0001:003AC814   323 0001:003AC81A   324 0001:003AC836   330 0001:003AC864
+   331 0001:003AC86D   332 0001:003AC89B   335 0001:003AC8BC   336 0001:003AC8D8
+   337 0001:003AC911   340 0001:003AC95C   341 0001:003AC965   342 0001:003AC97F
+   353 0001:003AC998   354 0001:003AC9A1   355 0001:003AC9C3   356 0001:003AC9D0
+   361 0001:003AC9EC   362 0001:003AC9F5   364 0001:003ACA17   365 0001:003ACA24
+   376 0001:003ACA44   377 0001:003ACA65   380 0001:003ACA81   381 0001:003ACAA5
+   382 0001:003ACAC3   383 0001:003ACAE3   384 0001:003ACB09   385 0001:003ACB2F
+   386 0001:003ACB4F   387 0001:003ACB75   388 0001:003ACB98   389 0001:003ACBBB
+   390 0001:003ACBE1   391 0001:003ACC07   392 0001:003ACC2A   393 0001:003ACC48
+   394 0001:003ACC68   395 0001:003ACC8B   396 0001:003ACCAE   397 0001:003ACCD4
+   398 0001:003ACCFA   399 0001:003ACD20   400 0001:003ACD3E   401 0001:003ACD5C
+   402 0001:003ACD82   403 0001:003ACDA8   404 0001:003ACDC6   405 0001:003ACDEC
+   406 0001:003ACE12   407 0001:003ACE16   408 0001:003ACE22   410 0001:003ACE26
+   411 0001:003ACE2C   413 0001:003ACE3B   414 0001:003ACE48   417 0001:003ACE4C
+   422 0001:003ACE50   425 0001:003ACEB0   426 0001:003ACEB9   427 0001:003ACED3
+   432 0001:003ACEEC   433 0001:003ACEF8   434 0001:003ACF07   435 0001:003ACF15
+   436 0001:003ACF2E   438 0001:003ACF45   440 0001:003ACF55   446 0001:003ACF70
+   447 0001:003ACF8D   448 0001:003ACF8F   449 0001:003ACFA9   450 0001:003ACFBA
+   453 0001:003AD000   454 0001:003AD01C   455 0001:003AD048   459 0001:003AD098
+   460 0001:003AD0B7   461 0001:003AD0F0   468 0001:003AD140   469 0001:003AD149
+   470 0001:003AD158   472 0001:003AD166   473 0001:003AD181   475 0001:003AD198
+   477 0001:003AD1A8   480 0001:003AD1C8   481 0001:003AD1E7   482 0001:003AD200
+   485 0001:003AD24C   486 0001:003AD26E   487 0001:003AD288   490 0001:003AD2D4
+   491 0001:003AD2F3   492 0001:003AD30C   495 0001:003AD354   496 0001:003AD376
+   497 0001:003AD399   500 0001:003AD3E0   501 0001:003AD3FF   502 0001:003AD418
+   505 0001:003AD464   506 0001:003AD483   507 0001:003AD49C   510 0001:003AD4E8
+   511 0001:003AD512   512 0001:003AD538   516 0001:003AD584   517 0001:003AD5A3
+   518 0001:003AD5BC   522 0001:003AD5FC   523 0001:003AD61B   524 0001:003AD63F
+   528 0001:003AD67C   529 0001:003AD6B9   530 0001:003AD6F3   534 0001:003AD740
+   535 0001:003AD75F   536 0001:003AD778   540 0001:003AD7B4   541 0001:003AD7BA
+   542 0001:003AD7D6   546 0001:003AD7F4   547 0001:003AD81E   548 0001:003AD844
+   552 0001:003AD884   553 0001:003AD8A6   554 0001:003AD8C0   558 0001:003AD8FC
+   559 0001:003AD91E   560 0001:003AD938   564 0001:003AD978   565 0001:003AD9A5
+   566 0001:003AD9D2   567 0001:003AD9DF   574 0001:003ADA28   575 0001:003ADA44
+   576 0001:003ADA5D   577 0001:003ADA90   580 0001:003ADAD8   581 0001:003ADAF2
+   582 0001:003ADB1D   585 0001:003ADB5C   586 0001:003ADB62   587 0001:003ADB78
+   591 0001:003ADB94   592 0001:003ADB9A   593 0001:003ADBB2   594 0001:003ADBC4
+   595 0001:003ADBD8   599 0001:003ADBF8   600 0001:003ADBFE   601 0001:003ADC16
+   602 0001:003ADC28   603 0001:003ADC3C   607 0001:003ADC54   608 0001:003ADC5A
+   610 0001:003ADC72   611 0001:003ADC86   616 0001:003ADCA0   621 0001:003ADCA4
+   622 0001:003ADCAD   624 0001:003ADCDD   625 0001:003ADCEA   631 0001:003ADD1C
+   632 0001:003ADD2F   635 0001:003ADD35   638 0001:003ADD77   639 0001:003ADD84
+   653 0001:003ADDA8   654 0001:003ADDCD   655 0001:003ADE00   656 0001:003ADE12
+   657 0001:003ADE1F   662 0001:003ADE5C   663 0001:003ADE65   664 0001:003ADEB2
+   665 0001:003ADEC4   666 0001:003ADED1   672 0001:003ADEF0   677 0001:003ADEF4
+   678 0001:003ADEFD   679 0001:003ADF1F   680 0001:003ADF31   681 0001:003ADF3E
+   685 0001:003ADF5C   686 0001:003ADF78   687 0001:003ADFA1   688 0001:003ADFB9
+   689 0001:003ADFC6   693 0001:003AE014   694 0001:003AE01E   702 0001:003AE020
+   703 0001:003AE04E   704 0001:003AE056   705 0001:003AE065   706 0001:003AE073
+   707 0001:003AE08E   708 0001:003AE0AA   710 0001:003AE0BD   711 0001:003AE0CC
+   713 0001:003AE0DD   714 0001:003AE0EC   716 0001:003AE102   717 0001:003AE10F
+   718 0001:003AE122   719 0001:003AE135   720 0001:003AE15C   721 0001:003AE16F
+   722 0001:003AE187   723 0001:003AE194   714 0001:003AE195   727 0001:003AE1A1
+   728 0001:003AE1A3   729 0001:003AE1B7   730 0001:003AE1CB   731 0001:003AE1DA
+   732 0001:003AE215   733 0001:003AE249   734 0001:003AE269   735 0001:003AE27A
+   736 0001:003AE2AB   737 0001:003AE2BC   740 0001:003AE2CB   741 0001:003AE2D3
+   743 0001:003AE2EB   745 0001:003AE2FB   749 0001:003AE3E4   750 0001:003AE3ED
+   751 0001:003AE406   752 0001:003AE41F   753 0001:003AE431   754 0001:003AE445
+   758 0001:003AE46C   759 0001:003AE472   760 0001:003AE48A   761 0001:003AE4A3
+   762 0001:003AE4B5   763 0001:003AE4C9   767 0001:003AE4EC   768 0001:003AE4F2
+   769 0001:003AE50A   770 0001:003AE523   771 0001:003AE535   772 0001:003AE549
+   779 0001:003AE574   780 0001:003AE5B4   781 0001:003AE5BC   784 0001:003AE5E9
+   785 0001:003AE5F8   787 0001:003AE613   788 0001:003AE62C   790 0001:003AE64C
+   791 0001:003AE663   792 0001:003AE676   793 0001:003AE689   794 0001:003AE6B0
+   795 0001:003AE6C3   796 0001:003AE6DB   797 0001:003AE6F2   788 0001:003AE6F3
+   798 0001:003AE6FA   799 0001:003AE70C   801 0001:003AE721   807 0001:003AE7B0
+   808 0001:003AE7CF   809 0001:003AE7D7   810 0001:003AE7ED   811 0001:003AE7FC
+   813 0001:003AE817   814 0001:003AE830   815 0001:003AE842   816 0001:003AE856
+   823 0001:003AE8A0   825 0001:003AE8C5   827 0001:003AE8E8   828 0001:003AE8FA
+   829 0001:003AE90E   836 0001:003AE958   838 0001:003AE972   840 0001:003AE988
+   841 0001:003AE99A   842 0001:003AE9AE   852 0001:003AE9F0   854 0001:003AEA15
+   855 0001:003AEA38   856 0001:003AEA51   858 0001:003AEA71   859 0001:003AEA88
+   860 0001:003AEA9B   861 0001:003AEAAE   862 0001:003AEAD5   863 0001:003AEAF7
+   864 0001:003AEB22   865 0001:003AEB39   856 0001:003AEB3A   866 0001:003AEB41
+   867 0001:003AEB53   868 0001:003AEB68   874 0001:003AEBD4   876 0001:003AEBF9
+   877 0001:003AEC1C   878 0001:003AEC35   880 0001:003AEC55   881 0001:003AEC6C
+   882 0001:003AEC7F   883 0001:003AEC92   884 0001:003AECB9   885 0001:003AECDB
+   886 0001:003AED06   887 0001:003AED1D   878 0001:003AED1E   888 0001:003AED25
+   889 0001:003AED37   890 0001:003AED4C   897 0001:003AEDBC   898 0001:003AEDE1
+   899 0001:003AEDEB   900 0001:003AEDFA   902 0001:003AEDFE   903 0001:003AEE36
+   900 0001:003AEE45   905 0001:003AEE49   906 0001:003AEE6D   907 0001:003AEE86
+   909 0001:003AEEA6   910 0001:003AEEBD   911 0001:003AEED0   912 0001:003AEEE3
+   913 0001:003AEF0A   914 0001:003AEF2C   915 0001:003AEF57   916 0001:003AEF6E
+   907 0001:003AEF6F   917 0001:003AEF76   918 0001:003AEF88   919 0001:003AEF9D
+   926 0001:003AF024   927 0001:003AF049   928 0001:003AF053   929 0001:003AF062
+   931 0001:003AF066   932 0001:003AF09E   929 0001:003AF0AD   934 0001:003AF0B1
+   935 0001:003AF0D5   936 0001:003AF0EE   938 0001:003AF10E   939 0001:003AF125
+   940 0001:003AF138   941 0001:003AF14B   942 0001:003AF172   943 0001:003AF194
+   944 0001:003AF1BF   945 0001:003AF1D6   936 0001:003AF1D7   946 0001:003AF1DE
+   947 0001:003AF1F0   948 0001:003AF205   952 0001:003AF290   953 0001:003AF296
+   954 0001:003AF2AE   955 0001:003AF2C0   956 0001:003AF2D4   961 0001:003AF2EC
+   962 0001:003AF2F5   963 0001:003AF317   964 0001:003AF329   965 0001:003AF336
+   969 0001:003AF354   970 0001:003AF376   971 0001:003AF390   976 0001:003AF3CC
+   977 0001:003AF3F1   978 0001:003AF41B   979 0001:003AF42D   980 0001:003AF43A
+   983 0001:003AF478   984 0001:003AF497   985 0001:003AF4B0  1000 0001:003AF4EC
+  1001 0001:003AF511  1002 0001:003AF527  1003 0001:003AF52D  1006 0001:003AF534
+  1008 0001:003AF54A  1009 0001:003AF56E  1010 0001:003AF582  1013 0001:003AF5B7
+  1047 0001:003AF604  1048 0001:003AF62A  1049 0001:003AF644  1050 0001:003AF663
+  1051 0001:003AF680  1052 0001:003AF69E  1056 0001:003AF6EC  1057 0001:003AF708
+  1058 0001:003AF72E  1066 0001:003AF76C  1067 0001:003AF790  1070 0001:003AF7AA
+  1071 0001:003AF7D2  1072 0001:003AF7F0  1073 0001:003AF80E  1074 0001:003AF816
+  1075 0001:003AF84B  1077 0001:003AF872  1078 0001:003AF890  1079 0001:003AF8B3
+  1080 0001:003AF8CB  1081 0001:003AF8DA  1082 0001:003AF8E9  1084 0001:003AF8F6
+  1085 0001:003AF92F  1086 0001:003AF958  1087 0001:003AF97D  1088 0001:003AF985
+  1089 0001:003AF9A3  1091 0001:003AF9C1  1092 0001:003AF9DF  1094 0001:003AF9FD
+  1099 0001:003AFADC  1100 0001:003AFAFF  1101 0001:003AFB03  1102 0001:003AFB0A
+  1103 0001:003AFB20  1105 0001:003AFB36  1106 0001:003AFB5E  1108 0001:003AFBB2
+  1111 0001:003AFC10  1112 0001:003AFC2C  1113 0001:003AFC58  1118 0001:003AFCB0
+  1119 0001:003AFCD3  1120 0001:003AFCD7  1121 0001:003AFCDE  1122 0001:003AFCF4
+  1124 0001:003AFD0A  1125 0001:003AFD32  1127 0001:003AFD86  1143 0001:003AFDF0
+  1144 0001:003AFE14  1147 0001:003AFE2E  1148 0001:003AFE4B  1149 0001:003AFE69
+  1150 0001:003AFE92  1151 0001:003AFEB1  1153 0001:003AFED1  1154 0001:003AFF1C
+  1155 0001:003AFF3C  1156 0001:003AFF5A  1157 0001:003AFF78  1158 0001:003AFF98
+  1159 0001:003AFFB6  1160 0001:003AFFDC  1161 0001:003AFFFB  1162 0001:003B0021
+  1164 0001:003B0041  1165 0001:003B005F  1167 0001:003B007D  1170 0001:003B0097
+  1171 0001:003B00B5  1172 0001:003B00D3  1174 0001:003B00E9  1175 0001:003B0107
+  1176 0001:003B0121  1179 0001:003B013F  1208 0001:003B01D0  1209 0001:003B01F7
+  1210 0001:003B0224  1218 0001:003B0270  1219 0001:003B029E  1222 0001:003B02CC
+  1223 0001:003B02E9  1224 0001:003B0307  1225 0001:003B0325  1228 0001:003B0343
+  1236 0001:003B0390  1237 0001:003B0399  1240 0001:003B03E9  1241 0001:003B03FB
+  1242 0001:003B040D  1243 0001:003B042A  1262 0001:003B043E  1269 0001:003B0478
+  1270 0001:003B049F  1273 0001:003B04B5  1275 0001:003B04D5  1276 0001:003B04EC
+  1277 0001:003B04FF  1278 0001:003B0526  1279 0001:003B0539  1280 0001:003B0550
+  1273 0001:003B0551  1281 0001:003B0554  1283 0001:003B0569  1288 0001:003B05D0
+  1289 0001:003B05D9  1290 0001:003B05FB  1291 0001:003B0608  1297 0001:003B0628
+  1298 0001:003B0631  1299 0001:003B0653  1300 0001:003B0660  1305 0001:003B0680
+  1306 0001:003B0689  1307 0001:003B06AB  1308 0001:003B06B8  1313 0001:003B06D4
+  1314 0001:003B06F6  1315 0001:003B070C  1316 0001:003B0720  1326 0001:003B075D
+  1329 0001:003B07AC  1330 0001:003B07C6  1331 0001:003B07DE  1332 0001:003B0805
+  1335 0001:003B0854  1336 0001:003B0876  1337 0001:003B088F  1338 0001:003B08A5
+  1341 0001:003B08E0  1342 0001:003B08EC  1343 0001:003B0910
+
+Line numbers for rCore(rCore.pas) segment .itext
+
+  1345 0002:00001F88
+
+Line numbers for uCore(uCore.pas) segment .text
+
+   441 0001:003B0F80   442 0001:003B0FAB   443 0001:003B0FAF   445 0001:003B0FBA
+   446 0001:003B0FF4   450 0001:003B1003   451 0001:003B100B   453 0001:003B1013
+   454 0001:003B1021   456 0001:003B103D   457 0001:003B106C   460 0001:003B1075
+   461 0001:003B10A7   462 0001:003B10E5   463 0001:003B10EF   465 0001:003B10F5
+   466 0001:003B1122   467 0001:003B1137   470 0001:003B113B   473 0001:003B1254
+   474 0001:003B1258   475 0001:003B1262   476 0001:003B1270   478 0001:003B128D
+   480 0001:003B129F   490 0001:003B12A8   491 0001:003B12C8   492 0001:003B12D5
+   493 0001:003B12DF   494 0001:003B12ED   495 0001:003B12FD   497 0001:003B1303
+   498 0001:003B1312   501 0001:003B132B   503 0001:003B133D   505 0001:003B1347
+   506 0001:003B135D   507 0001:003B136F   508 0001:003B137F   510 0001:003B1389
+   512 0001:003B1391   513 0001:003B1397   515 0001:003B13A0   518 0001:003B13A7
+   519 0001:003B13BB   521 0001:003B13C5   526 0001:003B13D3   527 0001:003B13D8
+   531 0001:003B1415   532 0001:003B1421   536 0001:003B1432   539 0001:003B145C
+   540 0001:003B1474   541 0001:003B1480   542 0001:003B1487   545 0001:003B14A8
+   546 0001:003B14AF   547 0001:003B14B8   548 0001:003B14C0   551 0001:003B14C4
+   552 0001:003B14CB   553 0001:003B14D3   554 0001:003B14DC   555 0001:003B14E4
+   558 0001:003B14E8   561 0001:003B14F1   562 0001:003B14FA   563 0001:003B1503
+   564 0001:003B150C   559 0001:003B1514   566 0001:003B151D   567 0001:003B1524
+   570 0001:003B1528   571 0001:003B152C   572 0001:003B1530   573 0001:003B153D
+   574 0001:003B154E   575 0001:003B155B   577 0001:003B156A   578 0001:003B1582
+   579 0001:003B159A   580 0001:003B15AC   581 0001:003B15B5   582 0001:003B15C6
+   583 0001:003B15CF   584 0001:003B15E0   585 0001:003B15E9   586 0001:003B15FA
+   587 0001:003B15FE   593 0001:003B163C   594 0001:003B1640   595 0001:003B1647
+   597 0001:003B1654   598 0001:003B165E   599 0001:003B1665   601 0001:003B1670
+   602 0001:003B1686   606 0001:003B169E   607 0001:003B16AE   609 0001:003B16B8
+   610 0001:003B16C4   614 0001:003B16CD   616 0001:003B16D7   620 0001:003B16EB
+   619 0001:003B16F2   622 0001:003B16FB   623 0001:003B1705   624 0001:003B170F
+   631 0001:003B1714   632 0001:003B1736   635 0001:003B1743   637 0001:003B1780
+   638 0001:003B17B5   639 0001:003B17BF   640 0001:003B17CD   641 0001:003B17DA
+   643 0001:003B17F4   645 0001:003B1806   647 0001:003B1810   650 0001:003B1864
+   651 0001:003B1867   653 0001:003B1870   654 0001:003B187A   655 0001:003B1888
+   657 0001:003B189F   660 0001:003B18B1   664 0001:003B18B4   665 0001:003B18B9
+   673 0001:003B18BC   674 0001:003B18F5   675 0001:003B18FD   676 0001:003B190C
+   677 0001:003B191A   678 0001:003B1923   679 0001:003B192C   680 0001:003B1935
+   681 0001:003B193E   682 0001:003B1947   683 0001:003B1950   684 0001:003B1959
+   685 0001:003B1962   686 0001:003B196B   687 0001:003B1979   688 0001:003B1982
+   689 0001:003B198B   690 0001:003B1994   691 0001:003B199D   692 0001:003B19A6
+   693 0001:003B19AF   695 0001:003B19B8   696 0001:003B19C1   697 0001:003B19CA
+   698 0001:003B19D8   699 0001:003B19E6   700 0001:003B19EF   701 0001:003B19F8
+   702 0001:003B1A01   703 0001:003B1A0A   704 0001:003B1A2B   705 0001:003B1A34
+   706 0001:003B1A42   707 0001:003B1A4B   711 0001:003B1A98   712 0001:003B1AA4
+   713 0001:003B1AAF   719 0001:003B1AB8   720 0001:003B1ABF   721 0001:003B1ACA
+   722 0001:003B1AD5   723 0001:003B1AE0   724 0001:003B1AEB   725 0001:003B1AF3
+   726 0001:003B1AFA   727 0001:003B1B05   728 0001:003B1B0C   729 0001:003B1B13
+   730 0001:003B1B1B   731 0001:003B1B26   732 0001:003B1B2E   733 0001:003B1B39
+   734 0001:003B1B40   735 0001:003B1B48   736 0001:003B1B53   737 0001:003B1B5E
+   739 0001:003B1B69   740 0001:003B1B74   742 0001:003B1B7F   745 0001:003B1B84
+   746 0001:003B1B8D   748 0001:003B1B96   749 0001:003B1BA8   751 0001:003B1BAF
+   752 0001:003B1BBE   758 0001:003B1BC8   759 0001:003B1BF0   760 0001:003B1C0E
+   761 0001:003B1C16   762 0001:003B1C21   763 0001:003B1C2F   764 0001:003B1C3D
+   765 0001:003B1C4B   766 0001:003B1C59   767 0001:003B1C68   768 0001:003B1C71
+   769 0001:003B1C7A   770 0001:003B1C88   771 0001:003B1C91   772 0001:003B1CB5
+   773 0001:003B1CC3   774 0001:003B1CCC   775 0001:003B1CD5   776 0001:003B1CE4
+   777 0001:003B1CED   778 0001:003B1CF6   779 0001:003B1D04   780 0001:003B1D12
+   782 0001:003B1D20   783 0001:003B1D2E   785 0001:003B1D3C   790 0001:003B1D64
+   791 0001:003B1D7C   792 0001:003B1D86   793 0001:003B1DAB   796 0001:003B1DCC
+   797 0001:003B1DDD   798 0001:003B1DE8   799 0001:003B1DF6   802 0001:003B1E08
+   803 0001:003B1E35   804 0001:003B1E42   805 0001:003B1E52   806 0001:003B1E62
+   807 0001:003B1E6F   808 0001:003B1E7F   812 0001:003B1EAC   813 0001:003B1EB3
+   814 0001:003B1EBA   815 0001:003B1EC5   816 0001:003B1ECC   817 0001:003B1ED7
+   818 0001:003B1EE2   819 0001:003B1EF3   820 0001:003B1EFE   821 0001:003B1F05
+   822 0001:003B1F0C   823 0001:003B1F16   827 0001:003B1F1C   828 0001:003B1F28
+   829 0001:003B1F39   830 0001:003B1F47   834 0001:003B1F4C   835 0001:003B1F58
+   836 0001:003B1F69   837 0001:003B1F77   841 0001:003B1F7C   842 0001:003B1F88
+   843 0001:003B1F99   844 0001:003B1FA7   847 0001:003B1FAC   848 0001:003B1FB5
+   849 0001:003B1FBE   850 0001:003B1FC8   853 0001:003B1FD0   854 0001:003B1FEE
+   856 0001:003B2043   860 0001:003B2078   862 0001:003B2081   863 0001:003B20A6
+   867 0001:003B20B4   868 0001:003B20BB   870 0001:003B20CA   871 0001:003B20D9
+   873 0001:003B20E0   877 0001:003B20E8   878 0001:003B20F4   880 0001:003B20FF
+   881 0001:003B2108   883 0001:003B210F   887 0001:003B2114   888 0001:003B2120
+   890 0001:003B212B   891 0001:003B2134   892 0001:003B213B   894 0001:003B2149
+   898 0001:003B2150   899 0001:003B2157   901 0001:003B216A   902 0001:003B2179
+   904 0001:003B2180   908 0001:003B2188   909 0001:003B2194   911 0001:003B219F
+   912 0001:003B21A8   914 0001:003B21AF   918 0001:003B21B4   919 0001:003B21C0
+   921 0001:003B21CB   922 0001:003B21D4   924 0001:003B21DB   930 0001:003B21E0
+   932 0001:003B220A   935 0001:003B2229   936 0001:003B2237   937 0001:003B2254
+   938 0001:003B2264   939 0001:003B2272   941 0001:003B228F   942 0001:003B2298
+   943 0001:003B22B8   946 0001:003B22EE   947 0001:003B22F9   948 0001:003B2316
+   949 0001:003B2326   951 0001:003B2331   952 0001:003B2338   958 0001:003B238C
+   959 0001:003B23C5   960 0001:003B23CE   961 0001:003B23DC   962 0001:003B23EA
+   963 0001:003B23F8   964 0001:003B2401   965 0001:003B240F   966 0001:003B241E
+   967 0001:003B242C   968 0001:003B2435   969 0001:003B243E   974 0001:003B2484
+   975 0001:003B249C   976 0001:003B24AE   977 0001:003B24C0   978 0001:003B24D2
+   979 0001:003B24E4   980 0001:003B24F6   981 0001:003B24FE   984 0001:003B2520
+   985 0001:003B2531   986 0001:003B2539   987 0001:003B2544   988 0001:003B254F
+   989 0001:003B255A   990 0001:003B2565   991 0001:003B2570   992 0001:003B257E
+  1001 0001:003B2590  1002 0001:003B25BD  1003 0001:003B25C2  1004 0001:003B260B
+  1005 0001:003B2616  1006 0001:003B2621  1007 0001:003B262C  1008 0001:003B2637
+  1009 0001:003B2642  1011 0001:003B264B  1012 0001:003B264F  1013 0001:003B266B
+  1015 0001:003B2689  1017 0001:003B268D  1018 0001:003B269B  1019 0001:003B26A7
+  1012 0001:003B26AA  1020 0001:003B26AF  1022 0001:003B26B9  1023 0001:003B26F1
+  1025 0001:003B273E  1028 0001:003B2751  1031 0001:003B2764  1034 0001:003B2774
+  1037 0001:003B2784  1038 0001:003B2792  1041 0001:003B27B7  1042 0001:003B27C5
+  1045 0001:003B27E8  1047 0001:003B27EE  1053 0001:003B281C  1054 0001:003B2825
+  1055 0001:003B2829  1056 0001:003B2848  1058 0001:003B285F  1059 0001:003B2863
+  1060 0001:003B2865  1055 0001:003B2868  1061 0001:003B286D  1062 0001:003B288C
+  1064 0001:003B28A3  1065 0001:003B28A7  1066 0001:003B28A9  1061 0001:003B28AC
+  1068 0001:003B28B1  1075 0001:003B28B8  1076 0001:003B28D4  1078 0001:003B28F3
+  1079 0001:003B2910  1080 0001:003B291B  1081 0001:003B2926  1083 0001:003B292C
+  1084 0001:003B2937  1086 0001:003B293F  1087 0001:003B294F  1076 0001:003B2952
+  1088 0001:003B2957  1089 0001:003B298E  1090 0001:003B29C5  1091 0001:003B29D0
+  1092 0001:003B29DB  1093 0001:003B29E6  1094 0001:003B29F1  1095 0001:003B29FC
+  1096 0001:003B2A04  1102 0001:003B2A28  1103 0001:003B2A37  1104 0001:003B2A3B
+  1105 0001:003B2A40  1106 0001:003B2A89  1107 0001:003B2A94  1108 0001:003B2A9F
+  1109 0001:003B2AAA  1110 0001:003B2AB5  1111 0001:003B2AC0  1113 0001:003B2AC9
+  1114 0001:003B2ACF  1116 0001:003B2AFD  1117 0001:003B2B01  1118 0001:003B2B03
+  1113 0001:003B2B06  1119 0001:003B2B0B  1125 0001:003B2B14  1126 0001:003B2B36
+  1127 0001:003B2B3A  1128 0001:003B2B4C  1129 0001:003B2B62  1131 0001:003B2BA2
+  1132 0001:003B2BA6  1133 0001:003B2BA8  1128 0001:003B2BAB  1134 0001:003B2BB0
+  1140 0001:003B2BDC  1141 0001:003B2BEB  1142 0001:003B2BF0  1143 0001:003B2BF5
+  1144 0001:003B2C3E  1145 0001:003B2C49  1146 0001:003B2C54  1147 0001:003B2C5F
+  1148 0001:003B2C6A  1149 0001:003B2C75  1151 0001:003B2C7E  1152 0001:003B2C84
+  1154 0001:003B2CB2  1155 0001:003B2CC0  1156 0001:003B2CC2  1151 0001:003B2CC5
+  1157 0001:003B2CCA  1166 0001:003B2CD4  1167 0001:003B2CF7  1168 0001:003B2CFC
+  1169 0001:003B2D45  1170 0001:003B2D50  1171 0001:003B2D5B  1172 0001:003B2D66
+  1173 0001:003B2D71  1174 0001:003B2D7C  1176 0001:003B2D85  1177 0001:003B2D9A
+  1179 0001:003B2DB2  1180 0001:003B2DD7  1183 0001:003B2DE7  1184 0001:003B2DF2
+  1185 0001:003B2DF8  1176 0001:003B2DFB  1186 0001:003B2E01  1188 0001:003B2E0B
+  1190 0001:003B2E23  1191 0001:003B2E27  1192 0001:003B2E44  1193 0001:003B2ECF
+  1191 0001:003B2ED6  1194 0001:003B2EDF  1195 0001:003B2EE5  1196 0001:003B2EF3
+  1188 0001:003B2EF6  1198 0001:003B2F00  1199 0001:003B2F0E  1200 0001:003B2F26
+  1201 0001:003B2F3E  1202 0001:003B2F56  1203 0001:003B2F6E  1230 0001:003B2F90
+  1231 0001:003B2F9F  1232 0001:003B2FA4  1233 0001:003B2FED  1234 0001:003B2FF8
+  1235 0001:003B3003  1236 0001:003B300E  1237 0001:003B3019  1238 0001:003B3024
+  1240 0001:003B302D  1241 0001:003B3033  1243 0001:003B3061  1244 0001:003B3072
+  1240 0001:003B3075  1245 0001:003B307A  1251 0001:003B3080  1252 0001:003B308F
+  1253 0001:003B3094  1254 0001:003B30DD  1255 0001:003B30E8  1256 0001:003B30F3
+  1257 0001:003B30FE  1258 0001:003B3109  1259 0001:003B3114  1261 0001:003B311D
+  1262 0001:003B3123  1264 0001:003B3151  1265 0001:003B3167  1261 0001:003B316A
+  1266 0001:003B316F  1272 0001:003B3178  1273 0001:003B3181  1274 0001:003B3185
+  1275 0001:003B318D  1276 0001:003B319D  1277 0001:003B31C2  1279 0001:003B31D9
+  1280 0001:003B31DD  1281 0001:003B31DF  1276 0001:003B31E2  1282 0001:003B31E7
+  1292 0001:003B31F0  1293 0001:003B321F  1295 0001:003B322E  1296 0001:003B323D
+  1297 0001:003B324C  1298 0001:003B325A  1299 0001:003B3264  1301 0001:003B327D
+  1302 0001:003B328E  1303 0001:003B329C  1299 0001:003B329F  1304 0001:003B32A4
+  1305 0001:003B32AF  1306 0001:003B32D5  1307 0001:003B32DE  1308 0001:003B32E3
+  1310 0001:003B32FF  1311 0001:003B3320  1312 0001:003B3357  1313 0001:003B3386
+  1314 0001:003B33BC  1308 0001:003B33BF  1316 0001:003B33D5  1317 0001:003B33DC
+  1318 0001:003B33E4  1320 0001:003B33F4  1325 0001:003B3464  1326 0001:003B347C
+  1327 0001:003B348E  1328 0001:003B3498  1329 0001:003B349F  1332 0001:003B34C0
+  1333 0001:003B34D1  1334 0001:003B34D9  1335 0001:003B34E4  1336 0001:003B34F2
+  1341 0001:003B3504  1342 0001:003B3513  1343 0001:003B3522  1344 0001:003B3530
+  1345 0001:003B3539  1346 0001:003B3547  1347 0001:003B3555  1348 0001:003B355C
+  1353 0001:003B3564  1354 0001:003B356D  1355 0001:003B35AA  1356 0001:003B35B5
+  1357 0001:003B35BC  1358 0001:003B35C6  1359 0001:003B35CE  1362 0001:003B35D4
+  1363 0001:003B35E0  1364 0001:003B3604  1367 0001:003B3608  1368 0001:003B3611
+  1369 0001:003B362D  1372 0001:003B3634  1373 0001:003B3653  1374 0001:003B365C
+  1375 0001:003B3682  1376 0001:003B368A  1379 0001:003B36AC  1380 0001:003B36B8
+  1381 0001:003B36DC  1384 0001:003B36E0  1385 0001:003B36FF  1386 0001:003B3708
+  1387 0001:003B3736  1388 0001:003B373E  1391 0001:003B3760  1392 0001:003B3767
+  1393 0001:003B376D  1395 0001:003B3798  1396 0001:003B379F  1398 0001:003B37A7
+  1401 0001:003B37AC  1402 0001:003B37B3  1403 0001:003B37B9  1404 0001:003B37C2
+  1405 0001:003B37CC  1406 0001:003B37E3  1407 0001:003B37F6  1410 0001:003B37FC
+  1411 0001:003B3818  1412 0001:003B3842  1415 0001:003B3864  1416 0001:003B3880
+  1417 0001:003B38AA  1422 0001:003B38CC  1423 0001:003B3909  1424 0001:003B392A
+  1425 0001:003B3956  1426 0001:003B3978  1427 0001:003B397F  1428 0001:003B398A
+  1429 0001:003B399C  1430 0001:003B39A7  1431 0001:003B39B9  1432 0001:003B39C4
+  1433 0001:003B39CF  1436 0001:003B3A14  1437 0001:003B3A25  1438 0001:003B3A2D
+  1439 0001:003B3A35  1440 0001:003B3A40  1441 0001:003B3A4B  1442 0001:003B3A59
+  1445 0001:003B3A6C  1446 0001:003B3A73  1447 0001:003B3A7E  1448 0001:003B3A89
+  1451 0001:003B3A8C  1452 0001:003B3A93  1453 0001:003B3A9E  1454 0001:003B3AA9
+  1457 0001:003B3AAC  1458 0001:003B3AB8  1459 0001:003B3AC1  1462 0001:003B3AC8
+  1463 0001:003B3AF9  1464 0001:003B3B07  1465 0001:003B3B12  1468 0001:003B3B50
+  1469 0001:003B3B61  1470 0001:003B3B6F  1473 0001:003B3B84  1474 0001:003B3B9C
+  1475 0001:003B3BAE  1476 0001:003B3BB6  1479 0001:003B3BD8  1481 0001:003B3BE9
+  1482 0001:003B3BF4  1483 0001:003B3C02  1488 0001:003B3C14  1489 0001:003B3C41
+  1490 0001:003B3C53  1491 0001:003B3C61  1492 0001:003B3C6F  1493 0001:003B3C7D
+  1494 0001:003B3C8C  1508 0001:003B3CB4  1509 0001:003B3CCC  1510 0001:003B3CDE
+  1511 0001:003B3CE6  1514 0001:003B3D08  1515 0001:003B3D19  1516 0001:003B3D21
+  1517 0001:003B3D2C  1518 0001:003B3D3A  1523 0001:003B3D4C  1524 0001:003B3D6E
+  1525 0001:003B3D80  1526 0001:003B3D8E  1527 0001:003B3D9D  1532 0001:003B3DC0
+  1533 0001:003B3DC9  1534 0001:003B3E06  1535 0001:003B3E11  1536 0001:003B3E19
+  1542 0001:003B3E20  1543 0001:003B3E4C  1544 0001:003B3E54  1545 0001:003B3E63
+  1546 0001:003B3E71  1547 0001:003B3E82  1549 0001:003B3E8F  1550 0001:003B3E9E
+  1551 0001:003B3EB6  1552 0001:003B3EE6  1550 0001:003B3F02  1553 0001:003B3F07
+  1556 0001:003B3F14  1557 0001:003B3F42  1559 0001:003B3F5E  1561 0001:003B3F6E
+  1564 0001:003B3FA4  1565 0001:003B3FC6  1566 0001:003B3FD4  1569 0001:003B3FF8
+  1570 0001:003B3FFF  1571 0001:003B4008  1572 0001:003B4019  1580 0001:003B401C
+  1581 0001:003B402B  1582 0001:003B4034  1585 0001:003B403C  1586 0001:003B4051
+  1588 0001:003B405A  1589 0001:003B4065  1592 0001:003B406C  1596 0001:003B4090
+  1598 0001:003B4099  1599 0001:003B40A4  1601 0001:003B40AB  1607 0001:003B40AC
+  1608 0001:003B40BB  1609 0001:003B40C4  1610 0001:003B40CA  1611 0001:003B40F8
+  1609 0001:003B4111  1612 0001:003B4116  1617 0001:003B411C  1618 0001:003B413F
+  1620 0001:003B415E  1621 0001:003B41D5  1622 0001:003B41E6  1618 0001:003B41E9
+  1623 0001:003B41F2  1630 0001:003B4214  1631 0001:003B4232  1633 0001:003B4237
+
+Line numbers for uCore(uCore.pas) segment .itext
+
+  1625 0002:00001F90  1626 0002:00001FAA  1627 0002:00001FB1  1629 0002:00001FB6
+
+Line numbers for fPage(fPage.pas) segment .text
+
+    54 0001:003B4450    55 0001:003B445C    56 0001:003B4486    57 0001:003B4491
+    58 0001:003B449C    59 0001:003B44BA    60 0001:003B44D0    64 0001:003B44E0
+    65 0001:003B44E8    66 0001:003B44F0    67 0001:003B44FA    68 0001:003B4504
+    69 0001:003B4512    70 0001:003B451C    71 0001:003B4524    72 0001:003B4541
+    75 0001:003B454C    76 0001:003B4558    77 0001:003B455C    81 0001:003B4564
+    82 0001:003B456B    83 0001:003B4576    87 0001:003B457C    88 0001:003B4583
+    89 0001:003B458B    90 0001:003B4597    94 0001:003B45A8    95 0001:003B45B1
+    96 0001:003B45BA    97 0001:003B45D0    98 0001:003B45E8    99 0001:003B45F5
+   102 0001:003B45F8   103 0001:003B4607   106 0001:003B460C   107 0001:003B4613
+   110 0001:003B4618   111 0001:003B4625   112 0001:003B462D   113 0001:003B4636
+   114 0001:003B464B   116 0001:003B4660   117 0001:003B466C   121 0001:003B4674
+   122 0001:003B467D   123 0001:003B468B   127 0001:003B4694   128 0001:003B469D
+   129 0001:003B46AB   133 0001:003B46B4   134 0001:003B46BD   135 0001:003B46CB
+   138 0001:003B46D4   139 0001:003B46E3   140 0001:003B46E9   143 0001:003B46F0
+   144 0001:003B46FD   145 0001:003B4707   146 0001:003B4733   147 0001:003B4740
+   148 0001:003B4752   153 0001:003B4758   154 0001:003B4761   155 0001:003B4791
+   156 0001:003B47A4   157 0001:003B47AA   159 0001:003B47B5
+
+Line numbers for fPage(fPage.pas) segment .itext
+
+   161 0002:00001FD0   162 0002:00001FD9   164 0002:00001FE3
+
+Line numbers for fHP(fHP.pas) segment .text
+
+    39 0001:00000000
+
+Line numbers for fODRadImType(Orders\fODRadImType.pas) segment .text
+
+    92 0001:00000000
+
+Line numbers for fODSaveQuick(Orders\fODSaveQuick.pas) segment .text
+
+    35 0001:00000000
+
+Line numbers for fOMProgress(Orders\fOMProgress.pas) segment .text
+
+    47 0001:00000000
+
+Line numbers for fOptionsPrimaryList(Options\fOptionsPrimaryList.pas) segment .text
+
+    51 0001:00000000
+
+Line numbers for fOptionsSubscribe(Options\fOptionsSubscribe.pas) segment .text
+
+    49 0001:00000000
+
+Line numbers for fAResize(fAResize.pas) segment .text
+
+    40 0001:003B4A10    41 0001:003B4A1F    42 0001:003B4A6F    51 0001:003B4A88
+    52 0001:003B4A91    53 0001:003B4AA3    54 0001:003B4AAC    55 0001:003B4AB5
+    57 0001:003B4AD9    58 0001:003B4B35    59 0001:003B4B42    55 0001:003B4B45
+    60 0001:003B4B48    61 0001:003B4B4F    68 0001:003B4B58    70 0001:003B4B61
+    71 0001:003B4B67    72 0001:003B4B6E    74 0001:003B4B8F    76 0001:003B4B9C
+    77 0001:003B4BBF    79 0001:003B4BF3    80 0001:003B4C44    72 0001:003B4C45
+    81 0001:003B4C4F    88 0001:003B4C58    90 0001:003B4C5E    92 0001:003B4C6F
+    93 0001:003B4C78    94 0001:003B4C7D    90 0001:003B4C7E    95 0001:003B4C81
+    96 0001:003B4C8C
+
+Line numbers for fAResize(fAResize.pas) segment .itext
+
+    99 0002:00001FE4   100 0002:00001FED   103 0002:00001FF7
+
+Line numbers for fODAllgy(Orders\fODAllgy.pas) segment .text
+
+   542 0001:00000000
+
+Line numbers for fPostings(fPostings.pas) segment .text
+
+    25 0001:00000000
+
+Line numbers for CPRSChart(P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart\CPRSChart.dpr) segment .itext
+
+   323 0002:00001FF8   324 0002:0000201B   326 0002:00002028   327 0002:00002035
+   328 0002:0000203A   329 0002:00002046   330 0002:0000204F   332 0002:0000206B
+   333 0002:00002087   334 0002:00002093   336 0002:0000209F   337 0002:000020B0
+   338 0002:000020C4   339 0002:000020DC   340 0002:000020F4   341 0002:0000210C
+   342 0002:00002118   344 0002:00002124
+
+Bound resource files
+
+c:\program files\borland\bds\4.0\lib\Controls.res
+c:\program files\borland\bds\4.0\lib\Buttons.res
+c:\program files\borland\bds\4.0\lib\ExtDlgs.res
+c:\program files\borland\bds\4.0\lib\TEERESOU.RES
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib\ORCTRLS.RES
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib\OR2006Compatibility.dfm
+c:\program files\borland\bds\4.0\lib\DBPWDlg.dfm
+c:\program files\borland\bds\4.0\lib\DBLogDlg.dfm
+c:\program files\borland\bds\4.0\lib\DBCtrls.res
+c:\program files\borland\bds\4.0\lib\DBGrids.res
+fBase508Form.dfm
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\frmSignonMessage.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\fDebugInfo.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\Rpcberr.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\SelDiv.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\fRPCBErrMsg.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\VCEdit.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\AddServer.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\Rpcconf1.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\RpcNet.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\Loginfrm.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\fSgnonDlg.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\BDK32\Source\Sgnoncnf.DFM
+fAutoSz.DFM
+c:\program files\borland\bds\4.0\lib\Tabs.res
+fTimeout.DFM
+fPtSelMsg.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib\ORDtTm.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib\ORDtTm.RES
+fVitalsDate.DFM
+P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-Lib\ORDtTmRng.DFM
+fHSplit.DFM
+fGraphData.dfm
+fRptBox.DFM
+fGraphOthers.dfm
+fGraphProfiles.DFM
+fGraphSettings.DFM
+fGraphs.DFM
+fFindingTemplates.dfm
+fMHTest.DFM
+fPCELex.DFM
+fPCEBaseGrid.DFM
+mVisitRelated.DFM
+fPCEProvider.DFM
+fGAF.DFM
+fVisitType.DFM
+fDiagnoses.DFM
+fProcedure.DFM
+fImmunization.DFM
+fSkinTest.DFM
+fPatientEd.DFM
+fHealthFactor.DFM
+fHFSearch.DFM
+fPCEBaseMain.DFM
+fExam.DFM
+fPCEOther.DFM
+fODDietLT.DFM
+fClinicWardMeds.dfm
+fConsult513Prt.DFM
+fTemplateDialog.DFM
+fNoteIDParents.DFM
+mImgText.DFM
+fIconLegend.DFM
+fRemVisitInfo.DFM
+fNoteCPFields.DFM
+fTemplateFields.DFM
+fTemplateFieldEditor.DFM
+fConsultAlertTo.DFM
+fConsMedRslt.DFM
+fRemCoverPreview.DFM
+fRemCoverSheet.DFM
+sremcvr.RES
+fNoteST.DFM
+fVisit.DFM
+fActivateDeactivate.dfm
+fPreReq.DFM
+mCoPayDesc.DFM
+fOrdersPrint.DFM
+fOrdersSign.DFM
+c:\program files\borland\bds\4.0\lib\SPIN.RES
+fSurgeryView.DFM
+fPCEEdit.DFM
+fNotesBP.DFM
+fNoteProps.DFM
+fTemplateObjects.DFM
+fTemplateView.DFM
+fTemplateAutoGen.DFM
+fTemplateEditor.DFM
+fTIUView.DFM
+fNoteDR.DFM
+fAddlSigners.DFM
+fNotePrt.DFM
+fNoteCslt.DFM
+fSignItem.DFM
+fNoteBD.DFM
+fNoteBA.DFM
+fSurgery.DFM
+fLkUpLocation.DFM
+fOCSession.DFM
+fReportsPrint.DFM
+fProbCmt.DFM
+fOMAction.DFM
+fPatientFlagMulti.dfm
+fvit.DFM
+fCover.DFM
+fPtCWAD.DFM
+fARTFreeTextMsg.dfm
+fAllgyFind.DFM
+fProbflt.DFM
+fProbLex.DFM
+fProbEdt.DFM
+fProbs.DFM
+fODConsult.DFM
+fODValidateAction.DFM
+fODAuto.DFM
+fOMVerify.DFM
+fOrdersTS.DFM
+fMedCopy.DFM
+mEvntDelay.DFM
+fOrdersCopy.DFM
+fODChild.DFM
+fODActive.DFM
+fEffectDate.DFM
+fODGen.DFM
+fOMNavA.DFM
+fODReleaseEvent.DFM
+fOCAccept.DFM
+fRenewOutMed.DFM
+fDateRange.DFM
+fOrdersRenew.DFM
+fRename.DFM
+fOrderSaveQuick.DFM
+fOrderComment.DFM
+fOrdersVerify.DFM
+fOrdersComplete.DFM
+fOrdersEvntRelease.DFM
+fOrdersOnChart.DFM
+fOrdersRelease.DFM
+fOrderUnflag.DFM
+fOrderFlag.DFM
+fOrdersAlert.DFM
+fOrdersUnhold.DFM
+fOrdersHold.DFM
+fODChangeEvtDisp.DFM
+fOrdersCV.DFM
+fOrdersDC.DFM
+fOrderVw.DFM
+fOrdersRefill.DFM
+fMeds.DFM
+fPrintLocation.dfm
+fReview.DFM
+fEncnt.DFM
+fNotes.DFM
+fReminderTree.DFM
+fEditConsult.DFM
+fEditProc.DFM
+fCsltNote.DFM
+fODProc.DFM
+fConsultAct.DFM
+fConsultsView.DFM
+fConsultBSt.DFM
+fConsultBD.DFM
+fConsultBS.DFM
+fConsults.DFM
+fDCSummProps.DFM
+fDCSumm.DFM
+fPrintList.dfm
+fODChangeUnreleasedRenew.dfm
+fODMedNVA.DFM
+fOMHTML.DFM
+fOMSet.DFM
+fODVitals.DFM
+fIVRoutes.dfm
+fOtherSchedule.dfm
+fODMedIV.DFM
+fODMeds.DFM
+fLabCollTimes.DFM
+fODLabImmedColl.DFM
+fODLabOthCollSamp.DFM
+fODLab.DFM
+fODLabOthSpec.DFM
+fODBBank.dfm
+fODRadConShRes.DFM
+fODRadApproval.DFM
+fODRad.DFM
+fODText.DFM
+fODMedComplex.DFM
+fODMedFA.DFM
+fODMedOut.DFM
+fODMedIn.DFM
+fODMisc.DFM
+fODDiet.DFM
+fODMessage.DFM
+fODBase.DFM
+fNoteSTStop.dfm
+fARTAllgy.DFM
+fAllgyBox.dfm
+fVitals.DFM
+fEncVitals.DFM
+fReminderDialog.DFM
+mTemplateFieldButton.DFM
+fDrawers.DFM
+dShared.DFM
+fTemplateImport.DFM
+fReportsAdhocSubItem1.DFM
+fReportsAdhocComponent1.DFM
+fReports.DFM
+fDeviceSelect.DFM
+fPCEBase.DFM
+fEncounterFrame.DFM
+fDupPts.dfm
+fPtSens.DFM
+fPtSelDemog.DFM
+fPtSelOptSave.DFM
+fPtSelOptns.DFM
+fAlertForward.DFM
+fPtSel.DFM
+fLabPrint.DFM
+fLabTest.DFM
+fLabTests.DFM
+fLabTestGroups.DFM
+fLabs.DFM
+fPtDemo.DFM
+fAbout.DFM
+fxBroker.DFM
+fxLists.DFM
+fxServer.DFM
+fSplash.DFM
+fLabInfo.DFM
+fBAOptionsDiagnoses.dfm
+fOptionsReportsDefault.DFM
+fOptionsReportsCustom.DFM
+fOptionsTitles.DFM
+fOptionsNotes.DFM
+fOptionsOther.DFM
+fOptionsCombinations.DFM
+fOptionsTeams.DFM
+fOptionsNewList.DFM
+fOptionsLists.DFM
+fOptionsPatientSelection.DFM
+fOptionsSurrogate.DFM
+fOptionsReminders.DFM
+fOptionsDays.DFM
+fOptions.DFM
+fDefaultEvent.DFM
+fFrame.DFM
+sBitmaps.RES
+sRemSrch.RES
+fBALocalDiagnoses.dfm
+fOrders.DFM
+fODMedOIFA.DFM
+fPage.DFM
+fHP.DFM
+fODRadImType.DFM
+fODSaveQuick.DFM
+fOMProgress.DFM
+fOptionsPrimaryList.DFM
+fOptionsSubscribe.DFM
+fAResize.DFM
+fODAllgy.DFM
+fPostings.DFM
+CPRSChart.TLB
+CPRSChart.RES
+CPRSChart.drf
+
+
+Program entry point at 0002:00001FF8
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.~dsk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.~dsk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart.~dsk	(revision 1676)
@@ -0,0 +1,679 @@
+[Closed Files]
+File_0=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\fFrame.pas',0,1,3475,6,3476,0,0,,
+File_1=TSourceModule,'C:\Program Files\vista\BDK32\Source\wsockc.pas',0,1,1464,1,1485,0,0,,
+File_2=TSourceModule,'C:\Vista\cprs\OR_3_243V27\VA\VAUtils.pas',0,1,1390,1,1407,0,0,,
+File_3=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\fReports.pas',0,1,245,1,266,0,0,,
+File_4=TSourceModule,'C:\Vista\cprs\OR_3_243V27\VA\VA508Accessibility\VA508AccessibilityManager.pas',0,1,1163,1,1184,0,0,,
+File_5=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\uGraphs.pas',0,1,199,1,220,0,0,,
+File_6=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\VERGENCECONTEXTORLib_TLB.pas',0,1,1104,47,1117,0,0,,
+File_7=TSourceModule,'C:\Vista\cprs\OR_3_243V27\CPRS-chart\Orders\fOrdersDC.pas',0,1,98,51,121,0,0,,
+File_8=TSourceModule,'c:\program files\borland\bds\4.0\source\Win32\rtl\common\ComObj.pas',0,1,1249,1,1270,0,0,,
+File_9=TSourceModule,'C:\Vista\cprs\main\CPRS-Chart\fAutoSz.pas',0,1,1,1,1,0,0,,
+
+[Modules]
+Module0=C:\Vista\cprs\OR_3_243V27\VA\VAClasses.pas
+Module1=default.htm
+Module2=C:\Vista\cprs\OR_3_243V27\CPRS-chart\CPRSChart.bdsproj
+Module3=C:\Vista\cprs\OR_3_243V27\CPRS-chart\uInit.pas
+Module4=C:\Vista\cprs\OR_3_243V27\CPRS-Lib\ORNet.pas
+Module5=C:\Vista\cprs\OR_3_243V27\CPRS-chart\Templates\fFindingTemplates.pas
+Module6=C:\Vista\cprs\OR_3_243V27\CPRS-chart\fGraphs.pas
+Count=7
+EditWindowCount=1
+TypeLibWindowCount=1
+
+[C:\Vista\cprs\OR_3_243V27\VA\VAClasses.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[default.htm]
+ModuleType=TURLModule
+
+[C:\Vista\cprs\OR_3_243V27\CPRS-chart\CPRSChart.bdsproj]
+ModuleType=TBaseProject
+
+[C:\Vista\cprs\OR_3_243V27\CPRS-chart\uInit.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Vista\cprs\OR_3_243V27\CPRS-Lib\ORNet.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Vista\cprs\OR_3_243V27\CPRS-chart\Templates\fFindingTemplates.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Vista\cprs\OR_3_243V27\CPRS-chart\fGraphs.pas]
+ModuleType=TSourceModule
+FormState=0
+FormOnTop=0
+
+[C:\Vista\cprs\OR_3_243V27\CPRS-chart\fBase508Form.pas]
+FormState=0
+FormOnTop=0
+
+[EditWindow0]
+ViewCount=7
+CurrentEditView=C:\Vista\cprs\OR_3_243V27\VA\VAClasses.pas
+View0=0
+View1=1
+View2=2
+View3=3
+View4=4
+View5=5
+View6=6
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=1709
+Top=1131
+Width=6797
+Height=8760
+MaxLeft=0
+MaxTop=0
+ClientWidth=6719
+ClientHeight=8297
+DockedToMainForm=0
+MessageView=MessageView@EditWindow0
+BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
+TopPanelSize=0
+LeftPanelSize=0
+LeftPanelClients=BorlandEditorCodeExplorer@EditWindow0
+LeftPanelData=0000080001000100000019000000426F726C616E64456469746F72436F64654578706C6F726572B70C00000000000000E201000000000000FFFFFFFF
+RightPanelSize=0
+BottomPanelSize=2552
+BottomPanelClients=MessageView@EditWindow0
+BottomPanelData=0000080001000000000000000000000000000000000000000000000100000000000000000B0000004D65737361676556696577FFFFFFFF
+BottomMiddlePanelSize=0
+BottomMiddlePanelClients=DockSite0
+BottomMiddelPanelData=0000080001000100000009000000446F636B53697465300000000000000000000000000000000000FFFFFFFF
+
+[View0]
+CustomEditViewType=TWelcomePageView
+WelcomePageURL=bds:/default.htm
+
+[View1]
+CustomEditViewType=TEditView
+Module=C:\Vista\cprs\OR_3_243V27\CPRS-chart\uInit.pas
+CursorX=27
+CursorY=23
+TopLine=11
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Vista\cprs\OR_3_243V27\CPRS-chart\uInit.pas
+
+[View2]
+CustomEditViewType=TEditView
+Module=C:\Vista\cprs\OR_3_243V27\CPRS-chart\CPRSChart.dpr
+CursorX=6
+CursorY=322
+TopLine=298
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Vista\cprs\OR_3_243V27\CPRS-chart\CPRSChart.dpr
+
+[View3]
+CustomEditViewType=TEditView
+Module=C:\Vista\cprs\OR_3_243V27\CPRS-chart\fGraphs.pas
+CursorX=1
+CursorY=1661
+TopLine=1640
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Vista\cprs\OR_3_243V27\CPRS-chart\fGraphs.pas
+
+[View4]
+CustomEditViewType=TEditView
+Module=C:\Vista\cprs\OR_3_243V27\VA\VAClasses.pas
+CursorX=1
+CursorY=314
+TopLine=297
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Vista\cprs\OR_3_243V27\VA\VAClasses.pas
+
+[View5]
+CustomEditViewType=TEditView
+Module=C:\Vista\cprs\OR_3_243V27\CPRS-chart\Templates\fFindingTemplates.pas
+CursorX=27
+CursorY=133
+TopLine=119
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Vista\cprs\OR_3_243V27\CPRS-chart\Templates\fFindingTemplates.pas
+
+[View6]
+CustomEditViewType=TEditView
+Module=C:\Vista\cprs\OR_3_243V27\CPRS-Lib\ORNet.pas
+CursorX=51
+CursorY=377
+TopLine=367
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\Vista\cprs\OR_3_243V27\CPRS-Lib\ORNet.pas
+
+[TypeLibEditWindow0]
+Module=C:\Vista\cprs\OR_3_243V27\CPRS-chart\CPRSChart.tlb
+
+[Watches]
+Count=0
+
+[WatchWindow]
+WatchColumnWidth=120
+WatchShowColumnHeaders=1
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=1738
+Top=1417
+Width=2627
+Height=2343
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2549
+ClientHeight=1989
+TBDockHeight=163
+LRDockWidth=2549
+Dockable=1
+StayOnTop=0
+
+[Breakpoints]
+Count=1
+Breakpoint0='C:\Vista\cprs\OR_3_243V27\CPRS-chart\fGraphs.pas',462,'',0,1,'',1,0,0,'',1,'','','',0
+
+[AddressBreakpoints]
+Count=0
+
+[Main Window]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=0
+Top=0
+Width=10000
+Height=1172
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=9922
+ClientHeight=708
+BottomPanelSize=0
+
+[ProjectManager]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=1289
+Height=2357
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1289
+ClientHeight=2357
+TBDockHeight=272
+LRDockWidth=3730
+Dockable=1
+StayOnTop=0
+
+[ToolForm]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=8506
+Top=4292
+Width=1475
+Height=5613
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=1396
+ClientHeight=5259
+TBDockHeight=5817
+LRDockWidth=1406
+Dockable=1
+StayOnTop=0
+
+[DebugLogView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=68
+Top=8202
+Width=3623
+Height=3365
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=3545
+ClientHeight=3011
+TBDockHeight=300
+LRDockWidth=3623
+Dockable=1
+StayOnTop=0
+
+[ThreadStatusWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=68
+Top=8202
+Width=5420
+Height=1757
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=5342
+ClientHeight=1403
+TBDockHeight=150
+LRDockWidth=5420
+Dockable=1
+StayOnTop=0
+Column0Width=145
+Column1Width=100
+Column2Width=115
+Column3Width=250
+
+[LocalVarsWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=1738
+Top=1417
+Width=2627
+Height=2411
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2549
+ClientHeight=2057
+TBDockHeight=204
+LRDockWidth=2549
+Dockable=1
+StayOnTop=0
+
+[CallStackWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=117
+Top=1553
+Width=2627
+Height=2343
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=2549
+ClientHeight=1989
+TBDockHeight=163
+LRDockWidth=2549
+Dockable=1
+StayOnTop=0
+
+[FindReferencsForm]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=4307
+Height=1390
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=4307
+ClientHeight=1390
+TBDockHeight=5082
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[RefactoringForm]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=4307
+Height=1390
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=4307
+ClientHeight=1390
+TBDockHeight=3828
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[TemplateView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=0
+Top=0
+Width=4297
+Height=5858
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=4219
+ClientHeight=5504
+TBDockHeight=5858
+LRDockWidth=4297
+Dockable=1
+StayOnTop=0
+Name=60
+Description=308
+filter=1
+
+[DataExplorer]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=1289
+Height=2357
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1289
+ClientHeight=2357
+TBDockHeight=4877
+LRDockWidth=7148
+Dockable=1
+StayOnTop=0
+
+[PropertyInspector]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=0
+Top=4687
+Width=1689
+Height=5204
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=1611
+ClientHeight=4850
+TBDockHeight=5817
+LRDockWidth=1543
+Dockable=1
+StayOnTop=0
+SplitPos=73
+
+[MetricsView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-899
+Top=-3234
+Width=5303
+Height=3828
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3828
+TBDockHeight=3828
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[QAView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-899
+Top=-3234
+Width=5303
+Height=3828
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3828
+TBDockHeight=3828
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[RefactoringsView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-899
+Top=-3234
+Width=5303
+Height=3828
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3828
+TBDockHeight=3828
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[UsagesView]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-899
+Top=-3234
+Width=5303
+Height=3828
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=5303
+ClientHeight=3828
+TBDockHeight=3828
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[ModelViewTool]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=0
+Width=1289
+Height=2357
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1289
+ClientHeight=2357
+TBDockHeight=4877
+LRDockWidth=5303
+Dockable=1
+StayOnTop=0
+
+[BreakpointWindow]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=88
+Top=7452
+Width=6396
+Height=2275
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=6318
+ClientHeight=1921
+TBDockHeight=204
+LRDockWidth=6396
+Dockable=1
+StayOnTop=0
+Column0Width=100
+Column1Width=75
+Column2Width=200
+Column3Width=200
+Column4Width=75
+Column5Width=75
+
+[StructureView]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=0
+Top=1185
+Width=1670
+Height=3474
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=1592
+ClientHeight=3120
+TBDockHeight=3474
+LRDockWidth=1670
+Dockable=1
+StayOnTop=0
+
+[frmCaliberMain]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=0
+State=0
+Left=78
+Top=7657
+Width=9863
+Height=2207
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=9785
+ClientHeight=1853
+TBDockHeight=1104
+LRDockWidth=1504
+Dockable=1
+StayOnTop=0
+
+[MessageView@EditWindow0]
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=1
+State=0
+Left=0
+Top=23
+Width=6719
+Height=2357
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=6719
+ClientHeight=2357
+TBDockHeight=2357
+LRDockWidth=2773
+Dockable=1
+StayOnTop=0
+
+[BorlandEditorCodeExplorer@EditWindow0]
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=-179
+Top=-113
+Width=1465
+Height=8270
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1465
+ClientHeight=8270
+TBDockHeight=8270
+LRDockWidth=1465
+Dockable=1
+StayOnTop=0
+
+[DockHosts]
+DockHostCount=2
+
+[DockSite0]
+DockSiteType=1
+PercentageSizes=1
+Create=1
+Visible=0
+Docked=1
+State=0
+Left=693
+Top=-440
+Width=4385
+Height=1866
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=4385
+ClientHeight=1866
+TBDockHeight=1866
+LRDockWidth=4385
+Dockable=1
+StayOnTop=0
+TabPosition=1
+ActiveTabID=RefactoringForm
+TabDockClients=RefactoringForm,FindReferencsForm,UsagesView,RefactoringsView,QAView,MetricsView
+
+[DockSite1]
+DockSiteType=1
+PercentageSizes=1
+Create=1
+Visible=1
+Docked=0
+State=0
+Left=8516
+Top=1131
+Width=1445
+Height=3188
+MaxLeft=-10
+MaxTop=-14
+ClientWidth=1367
+ClientHeight=2834
+TBDockHeight=3188
+LRDockWidth=1445
+Dockable=1
+StayOnTop=0
+TabPosition=1
+ActiveTabID=ProjectManager
+TabDockClients=ProjectManager,ModelViewTool,DataExplorer
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/CPRSChart_TLB.pas	(revision 1676)
@@ -0,0 +1,201 @@
+unit CPRSChart_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : 1.2
+// File generated on 6/26/2010 8:43:12 PM from Type Library described below.
+
+// ************************************************************************  //
+// Type Lib: P:\vista\CPRS-WV_OFFICIAL_RELEASE-27\WVEHR-v27Delphi2006\CPRS-chart\CPRSChart.tlb (1)
+// LIBID: {0A4A6086-6504-11D5-82DE-00C04F72C274}
+// LCID: 0
+// Helpfile: 
+// HelpString: CPRSChart Library
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+{$WARN SYMBOL_PLATFORM OFF}
+{$WRITEABLECONST ON}
+{$VARPROPSETTER ON}
+interface
+
+uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants;
+  
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  CPRSChartMajorVersion = 1;
+  CPRSChartMinorVersion = 0;
+
+  LIBID_CPRSChart: TGUID = '{0A4A6086-6504-11D5-82DE-00C04F72C274}';
+
+  IID_ICPRSBroker: TGUID = '{63DC619B-6BE0-11D5-82E6-00C04F72C274}';
+  IID_ICPRSState: TGUID = '{63DC619E-6BE0-11D5-82E6-00C04F72C274}';
+  IID_ICPRSExtension: TGUID = '{63DC61C4-6BE0-11D5-82E6-00C04F72C274}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum BrokerParamType
+type
+  BrokerParamType = TOleEnum;
+const
+  bptLiteral = $00000000;
+  bptReference = $00000001;
+  bptList = $00000002;
+  bptUndefined = $00000003;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  ICPRSBroker = interface;
+  ICPRSBrokerDisp = dispinterface;
+  ICPRSState = interface;
+  ICPRSStateDisp = dispinterface;
+  ICPRSExtension = interface;
+  ICPRSExtensionDisp = dispinterface;
+
+// *********************************************************************//
+// Interface: ICPRSBroker
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {63DC619B-6BE0-11D5-82E6-00C04F72C274}
+// *********************************************************************//
+  ICPRSBroker = interface(IDispatch)
+    ['{63DC619B-6BE0-11D5-82E6-00C04F72C274}']
+    function SetContext(const Context: WideString): WordBool; safecall;
+    function Server: WideString; safecall;
+    function Port: Integer; safecall;
+    function DebugMode: WordBool; safecall;
+    function Get_RPCVersion: WideString; safecall;
+    procedure Set_RPCVersion(const Value: WideString); safecall;
+    function Get_ClearParameters: WordBool; safecall;
+    procedure Set_ClearParameters(Value: WordBool); safecall;
+    function Get_ClearResults: WordBool; safecall;
+    procedure Set_ClearResults(Value: WordBool); safecall;
+    procedure CallRPC(const RPCName: WideString); safecall;
+    function Get_Results: WideString; safecall;
+    procedure Set_Results(const Value: WideString); safecall;
+    function Get_Param(Index: Integer): WideString; safecall;
+    procedure Set_Param(Index: Integer; const Value: WideString); safecall;
+    function Get_ParamType(Index: Integer): BrokerParamType; safecall;
+    procedure Set_ParamType(Index: Integer; Value: BrokerParamType); safecall;
+    function Get_ParamList(Index: Integer; const Node: WideString): WideString; safecall;
+    procedure Set_ParamList(Index: Integer; const Node: WideString; const Value: WideString); safecall;
+    function ParamCount: Integer; safecall;
+    function ParamListCount(Index: Integer): Integer; safecall;
+    property RPCVersion: WideString read Get_RPCVersion write Set_RPCVersion;
+    property ClearParameters: WordBool read Get_ClearParameters write Set_ClearParameters;
+    property ClearResults: WordBool read Get_ClearResults write Set_ClearResults;
+    property Results: WideString read Get_Results write Set_Results;
+    property Param[Index: Integer]: WideString read Get_Param write Set_Param;
+    property ParamType[Index: Integer]: BrokerParamType read Get_ParamType write Set_ParamType;
+    property ParamList[Index: Integer; const Node: WideString]: WideString read Get_ParamList write Set_ParamList;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ICPRSBrokerDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {63DC619B-6BE0-11D5-82E6-00C04F72C274}
+// *********************************************************************//
+  ICPRSBrokerDisp = dispinterface
+    ['{63DC619B-6BE0-11D5-82E6-00C04F72C274}']
+    function SetContext(const Context: WideString): WordBool; dispid 1;
+    function Server: WideString; dispid 2;
+    function Port: Integer; dispid 3;
+    function DebugMode: WordBool; dispid 4;
+    property RPCVersion: WideString dispid 5;
+    property ClearParameters: WordBool dispid 6;
+    property ClearResults: WordBool dispid 7;
+    procedure CallRPC(const RPCName: WideString); dispid 8;
+    property Results: WideString dispid 9;
+    property Param[Index: Integer]: WideString dispid 10;
+    property ParamType[Index: Integer]: BrokerParamType dispid 11;
+    property ParamList[Index: Integer; const Node: WideString]: WideString dispid 12;
+    function ParamCount: Integer; dispid 13;
+    function ParamListCount(Index: Integer): Integer; dispid 14;
+  end;
+
+// *********************************************************************//
+// Interface: ICPRSState
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {63DC619E-6BE0-11D5-82E6-00C04F72C274}
+// *********************************************************************//
+  ICPRSState = interface(IDispatch)
+    ['{63DC619E-6BE0-11D5-82E6-00C04F72C274}']
+    function Handle: WideString; safecall;
+    function UserDUZ: WideString; safecall;
+    function UserName: WideString; safecall;
+    function PatientDFN: WideString; safecall;
+    function PatientName: WideString; safecall;
+    function PatientDOB: WideString; safecall;
+    function PatientSSN: WideString; safecall;
+    function LocationIEN: Integer; safecall;
+    function LocationName: WideString; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ICPRSStateDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {63DC619E-6BE0-11D5-82E6-00C04F72C274}
+// *********************************************************************//
+  ICPRSStateDisp = dispinterface
+    ['{63DC619E-6BE0-11D5-82E6-00C04F72C274}']
+    function Handle: WideString; dispid 1;
+    function UserDUZ: WideString; dispid 2;
+    function UserName: WideString; dispid 3;
+    function PatientDFN: WideString; dispid 4;
+    function PatientName: WideString; dispid 5;
+    function PatientDOB: WideString; dispid 6;
+    function PatientSSN: WideString; dispid 7;
+    function LocationIEN: Integer; dispid 8;
+    function LocationName: WideString; dispid 9;
+  end;
+
+// *********************************************************************//
+// Interface: ICPRSExtension
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {63DC61C4-6BE0-11D5-82E6-00C04F72C274}
+// *********************************************************************//
+  ICPRSExtension = interface(IDispatch)
+    ['{63DC61C4-6BE0-11D5-82E6-00C04F72C274}']
+    function Execute(const CPRSBroker: ICPRSBroker; const CPRSState: ICPRSState; 
+                     const Param1: WideString; const Param2: WideString; const Param3: WideString; 
+                     var Data1: WideString; var Data2: WideString): WordBool; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ICPRSExtensionDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {63DC61C4-6BE0-11D5-82E6-00C04F72C274}
+// *********************************************************************//
+  ICPRSExtensionDisp = dispinterface
+    ['{63DC61C4-6BE0-11D5-82E6-00C04F72C274}']
+    function Execute(const CPRSBroker: ICPRSBroker; const CPRSState: ICPRSState; 
+                     const Param1: WideString; const Param2: WideString; const Param3: WideString; 
+                     var Data1: WideString; var Data2: WideString): WordBool; dispid 1;
+  end;
+
+implementation
+
+uses ComObj;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/FormResize.txt
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/FormResize.txt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/FormResize.txt	(revision 1676)
@@ -0,0 +1,8 @@
+procedure TfrmODCslt.FormResize(Sender: TObject);
+begin
+  inherited;
+  memOrder.Top := pnlReason.Top + pnlReason.Height + 2;
+  pnlMessage.Top := memOrder.Top + 2;
+  cmdAccept.Top := pnlMessage.Top;
+  cmdQuit.Top := cmdAccept.Top;
+end;
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsMedRslt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsMedRslt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsMedRslt.dfm	(revision 1676)
@@ -0,0 +1,207 @@
+inherited frmConsMedRslt: TfrmConsMedRslt
+  Left = 468
+  Top = 172
+  BorderStyle = bsDialog
+  Caption = 'Select Medicine Result'
+  ClientHeight = 242
+  ClientWidth = 505
+  Position = poScreenCenter
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 505
+    Height = 242
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object SrcLabel: TLabel
+      Left = 12
+      Top = 6
+      Width = 145
+      Height = 16
+      AutoSize = False
+      Caption = 'Select medicine result:'
+    end
+    object lblDateofAction: TOROffsetLabel
+      Left = 133
+      Top = 159
+      Width = 112
+      Height = 19
+      Caption = 'Date/time of this action'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 6
+      WordWrap = False
+    end
+    object lblActionBy: TOROffsetLabel
+      Left = 266
+      Top = 159
+      Width = 215
+      Height = 19
+      Caption = 'Action by'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 6
+      WordWrap = False
+    end
+    object lblResultName: TOROffsetLabel
+      Left = 27
+      Top = 29
+      Width = 90
+      Height = 15
+      Caption = 'Type of Result'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblResultDate: TOROffsetLabel
+      Left = 255
+      Top = 29
+      Width = 74
+      Height = 15
+      Caption = 'Date of Result'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblSummary: TOROffsetLabel
+      Left = 375
+      Top = 29
+      Width = 45
+      Height = 15
+      Caption = 'Summary'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object cmdOK: TButton
+      Left = 332
+      Top = 211
+      Width = 75
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 5
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 412
+      Top = 211
+      Width = 75
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 6
+      OnClick = cmdCancelClick
+    end
+    object lstMedResults: TORListBox
+      Left = 15
+      Top = 45
+      Width = 476
+      Height = 114
+      Style = lbOwnerDrawFixed
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      Sorted = True
+      TabOrder = 0
+      OnDrawItem = lstMedResultsDrawItem
+      Caption = 'Select medicine result'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2,3,4'
+      TabPositions = '40,60'
+    end
+    object cmdDetails: TButton
+      Left = 15
+      Top = 179
+      Width = 75
+      Height = 21
+      Caption = 'Show Details'
+      TabOrder = 1
+      OnClick = cmdDetailsClick
+    end
+    object ckAlert: TCheckBox
+      Left = 131
+      Top = 211
+      Width = 79
+      Height = 17
+      Caption = 'Send alert'
+      TabOrder = 4
+      OnClick = ckAlertClick
+    end
+    object calDateofAction: TORDateBox
+      Left = 133
+      Top = 179
+      Width = 116
+      Height = 21
+      TabStop = False
+      TabOrder = 2
+      Text = 'Now'
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Date/time of this action'
+    end
+    object cboPerson: TORComboBox
+      Left = 265
+      Top = 179
+      Width = 220
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Action by'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      Pieces = '2,3'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 3
+      OnNeedData = NewPersonNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstMedResults'
+        'Status = stsDefault')
+      (
+        'Component = cmdDetails'
+        'Status = stsDefault')
+      (
+        'Component = ckAlert'
+        'Status = stsDefault')
+      (
+        'Component = calDateofAction'
+        'Status = stsDefault')
+      (
+        'Component = cboPerson'
+        'Status = stsDefault')
+      (
+        'Component = frmConsMedRslt'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsMedRslt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsMedRslt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsMedRslt.pas	(revision 1676)
@@ -0,0 +1,221 @@
+unit fConsMedRslt;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
+  Buttons, ORCtrls, ORfn, ExtCtrls, fAutoSz, ORDtTm, fConsultAlertTo, fRptBox,
+  VA508AccessibilityManager;
+
+type
+  TMedResultRec = record
+    Action: string;
+    ResultPtr: string;
+    DateTimeofAction: TFMDateTime;
+    ResponsiblePerson: Int64;
+    AlertsTo: TRecipientList;
+  end;
+
+  TfrmConsMedRslt = class(TfrmAutoSz)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lstMedResults: TORListBox;
+    SrcLabel: TLabel;
+    pnlBase: TORAutoPanel;
+    cmdDetails: TButton;
+    ckAlert: TCheckBox;
+    lblDateofAction: TOROffsetLabel;
+    calDateofAction: TORDateBox;
+    lblActionBy: TOROffsetLabel;
+    cboPerson: TORComboBox;
+    lblResultName: TOROffsetLabel;
+    lblResultDate: TOROffsetLabel;
+    lblSummary: TOROffsetLabel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdDetailsClick(Sender: TObject);
+    procedure ckAlertClick(Sender: TObject);
+    procedure NewPersonNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FormDestroy(Sender: TObject);
+    procedure lstMedResultsDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+  protected
+    procedure ShowDetailsDestroyed(Sender: TObject);
+  private
+    FShowDetails: TfrmReportBox;
+    FOldShowDetailsOnDestroy: TNotifyEvent;
+    FMedResult: TMedResultRec ;
+    FChanged: Boolean;
+  end;
+
+function SelectMedicineResult(ConsultIEN: integer; FormTitle: string; var MedResult: TMedResultRec): boolean ;
+
+implementation
+
+{$R *.DFM}
+
+uses rConsults, rCore, uCore, uConst;
+
+const
+  TX_MEDRSLT_TEXT = 'Select medicine result or press Cancel.';
+  TX_MEDRSLT_CAP  = 'No Result Selected';
+
+var
+  RecipientList: TRecipientList ;
+
+function SelectMedicineResult(ConsultIEN: integer; FormTitle: string; var MedResult: TMedResultRec): boolean ;
+{ displays Medicine Result selection form and returns a record of the selection }
+var
+  frmConsMedRslt: TfrmConsMedRslt;
+begin
+  frmConsMedRslt := TfrmConsMedRslt.Create(Application);
+  try
+    with frmConsMedRslt do
+    begin
+      FChanged := False;
+      FillChar(RecipientList, SizeOf(RecipientList), 0);
+      FillChar(FMedResult, SizeOf(FMedResult), 0);
+      Caption := FormTitle;
+      cboPerson.InitLongList(User.Name);
+      cboPerson.SelectByIEN(User.DUZ);
+      ResizeFormToFont(TForm(frmConsMedRslt));
+
+      if MedResult.Action = 'ATTACH' then
+        begin
+          FastAssign(GetAssignableMedResults(ConsultIEN), lstMedResults.Items);
+          ckAlert.Visible := True;
+        end
+      else if MedResult.Action = 'REMOVE' then
+        begin
+          FastAssign(GetRemovableMedResults(ConsultIEN), lstMedResults.Items);
+          ckAlert.Visible := False;
+        end;
+      if lstMedResults.Items.Count > 0 then
+        ShowModal
+      else
+        FChanged := True;
+      Result := FChanged;
+      MedResult := FMedResult;
+    end; {with frmODConsMedRslt}
+  finally
+    frmConsMedRslt.Release;
+  end;
+end;
+
+procedure TfrmConsMedRslt.cmdCancelClick(Sender: TObject);
+begin
+  FillChar(FMedResult, SizeOf(FMedResult), 0);
+  FChanged := False;
+  Close;
+end;
+
+procedure TfrmConsMedRslt.cmdOKClick(Sender: TObject);
+begin
+  FillChar(FMedResult, SizeOf(FMedResult), 0);
+  if lstMedResults.ItemIndex = -1 then
+  begin
+    InfoBox(TX_MEDRSLT_TEXT, TX_MEDRSLT_CAP, MB_OK or MB_ICONWARNING);
+    FChanged := False ;
+    Exit;
+  end;
+  FChanged := True;
+  with FMedResult do
+    begin
+      ResultPtr := lstMedResults.ItemID ;
+      DateTimeofAction := calDateOfAction.FMDateTime;
+      ResponsiblePerson := cboPerson.ItemIEN;
+      AlertsTo := RecipientList;
+    end;
+  Close;
+end;
+
+procedure TfrmConsMedRslt.cmdDetailsClick(Sender: TObject);
+const
+  TX_RESULTS_CAP = 'Detailed Results Display';
+var
+  x: string;
+  //MsgString, HasImages: string;
+begin
+  inherited;
+  if lstMedResults.ItemIndex = -1 then exit;
+  x := Piece(Piece(Piece(lstMedResults.ItemID, ';', 2), '(', 2), ',', 1) + ';' + Piece(lstMedResults.ItemID, ';', 1);
+  // ---------------------------------------------------------------
+  // Don't do this until MED API is changed for new/unassigned results, or false '0' will be broadcast
+(*  MsgString := 'MED^' + x;
+  HasImages := BOOLCHAR[StrToIntDef(Piece(x, U, 5), 0) > 0];
+  SetPiece(HasImages, U, 10, HasImages);
+  NotifyOtherApps(NAE_REPORT, MsgString);*)
+  // ---------------------------------------------------------------
+  NotifyOtherApps(NAE_REPORT, 'MED^' + x);
+  if(not assigned(FShowDetails)) then
+  begin
+    FShowDetails := ModelessReportBox(GetDetailedMedicineResults(lstMedResults.ItemID), TX_RESULTS_CAP, True);
+    FOldShowDetailsOnDestroy := FShowDetails.OnDestroy;
+    FShowDetails.OnDestroy := ShowDetailsDestroyed;
+    cmdDetails.Enabled := (not assigned(FShowDetails));
+    lstMedResults.Enabled := (not assigned(FShowDetails));
+  end;
+end;
+
+procedure TfrmConsMedRslt.ShowDetailsDestroyed(Sender: TObject);
+begin
+  if(assigned(FOldShowDetailsOnDestroy)) then
+    FOldShowDetailsOnDestroy(Sender);
+  FShowDetails := nil;
+  cmdDetails.Enabled := (not assigned(FShowDetails));
+  lstMedResults.Enabled := (not assigned(FShowDetails));
+end;
+
+
+procedure TfrmConsMedRslt.ckAlertClick(Sender: TObject);
+begin
+  FillChar(RecipientList, SizeOf(RecipientList), 0);
+  if ckAlert.Checked then SelectRecipients(Font.Size, 0, RecipientList) ;
+end;
+
+procedure TfrmConsMedRslt.NewPersonNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmConsMedRslt.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  KillObj(@FShowDetails);
+end;
+
+procedure TfrmConsMedRslt.lstMedResultsDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  AnImage: TBitMap;
+const
+  STD_PROC_TEXT = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
+  STD_DATE = 'MMM DD,YY@HH:NNXX';
+begin
+  inherited;
+  AnImage := TBitMap.Create;
+  try
+    with (Control as TORListBox).Canvas do  { draw on control canvas, not on the form }
+      begin
+        x := (Control as TORListBox).Items[Index];
+        FillRect(Rect);       { clear the rectangle }
+        AnImage.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_1');
+        (Control as TORListBox).ItemHeight := HigherOf(TextHeight(x), AnImage.Height);
+        if StrToIntDef(Piece(x, U, 5), 0) > 0 then
+          begin
+            BrushCopy(Bounds(Rect.Left, Rect.Top, AnImage.Width, AnImage.Height),
+              AnImage, Bounds(0, 0, AnImage.Width, AnImage.Height), clRed); {render ImageFlag}
+          end;
+        TextOut(Rect.Left + AnImage.Width, Rect.Top, Piece(x, U, 2));
+        TextOut(Rect.Left + AnImage.Width + TextWidth(STD_PROC_TEXT), Rect.Top, Piece(x, U, 3));
+        TextOut(Rect.Left + AnImage.Width + TextWidth(STD_PROC_TEXT) + TextWidth(STD_DATE), Rect.Top, Piece(x, U, 4));
+      end;
+  finally
+    AnImage.Free;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsult513Prt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsult513Prt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsult513Prt.dfm	(revision 1676)
@@ -0,0 +1,197 @@
+inherited frm513Print: Tfrm513Print
+  Left = 116
+  Top = 375
+  Caption = 'Print SF 513'
+  ClientHeight = 306
+  Position = poScreenCenter
+  ExplicitHeight = 340
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblPrintTo: TLabel [0]
+    Left = 7
+    Top = 265
+    Width = 3
+    Height = 13
+  end
+  object lblConsultTitle: TMemo [1]
+    Left = 10
+    Top = 8
+    Width = 301
+    Height = 53
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Consult Title, Date/Time of Consult, Location')
+    ReadOnly = True
+    TabOrder = 0
+  end
+  object grpChooseCopy: TGroupBox [2]
+    Left = 321
+    Top = 4
+    Width = 98
+    Height = 61
+    Caption = 'Print'
+    TabOrder = 1
+    object radChartCopy: TRadioButton
+      Left = 8
+      Top = 16
+      Width = 81
+      Height = 17
+      Caption = '&Chart Copy'
+      Checked = True
+      TabOrder = 0
+      TabStop = True
+      OnClick = radChartCopyClick
+    end
+    object radWorkCopy: TRadioButton
+      Left = 8
+      Top = 36
+      Width = 81
+      Height = 17
+      Caption = '&Work Copy'
+      TabOrder = 1
+      OnClick = radWorkCopyClick
+    end
+  end
+  object grpDevice: TGroupBox [3]
+    Left = 8
+    Top = 69
+    Width = 411
+    Height = 192
+    Caption = 'Device'
+    TabOrder = 2
+    object lblMargin: TLabel
+      Left = 8
+      Top = 166
+      Width = 60
+      Height = 13
+      Caption = 'Right Margin'
+    end
+    object lblLength: TLabel
+      Left = 120
+      Top = 166
+      Width = 61
+      Height = 13
+      Caption = 'Page Length'
+    end
+    object txtRightMargin: TMaskEdit
+      Left = 72
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 1
+    end
+    object txtPageLength: TMaskEdit
+      Left = 184
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 2
+    end
+    object cboDevice: TORComboBox
+      Left = 8
+      Top = 16
+      Width = 395
+      Height = 140
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Device'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,4'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '30'
+      TabOrder = 0
+      OnChange = cboDeviceChange
+      OnNeedData = cboDeviceNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object cmdOK: TButton [4]
+    Left = 267
+    Top = 272
+    Width = 72
+    Height = 22
+    Caption = 'OK'
+    Default = True
+    TabOrder = 4
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [5]
+    Left = 347
+    Top = 272
+    Width = 72
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 5
+    OnClick = cmdCancelClick
+  end
+  object chkDefault: TCheckBox [6]
+    Left = 7
+    Top = 288
+    Width = 166
+    Height = 17
+    Caption = 'Save as user'#39's default printer'
+    TabOrder = 3
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblConsultTitle'
+        'Status = stsDefault')
+      (
+        'Component = grpChooseCopy'
+        'Status = stsDefault')
+      (
+        'Component = radChartCopy'
+        'Status = stsDefault')
+      (
+        'Component = radWorkCopy'
+        'Status = stsDefault')
+      (
+        'Component = grpDevice'
+        'Status = stsDefault')
+      (
+        'Component = txtRightMargin'
+        'Status = stsDefault')
+      (
+        'Component = txtPageLength'
+        'Status = stsDefault')
+      (
+        'Component = cboDevice'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = chkDefault'
+        'Status = stsDefault')
+      (
+        'Component = frm513Print'
+        'Status = stsDefault'))
+  end
+  object dlgWinPrinter: TPrintDialog
+    Left = 268
+    Top = 26
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsult513Prt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsult513Prt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsult513Prt.pas	(revision 1676)
@@ -0,0 +1,184 @@
+unit fConsult513Prt;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORCtrls, StdCtrls, Mask, ORNet, ORFn, ComCtrls,
+  VA508AccessibilityManager, uReports;
+
+type
+  Tfrm513Print = class(TfrmAutoSz)
+    grpChooseCopy: TGroupBox;
+    radChartCopy: TRadioButton;
+    radWorkCopy: TRadioButton;
+    grpDevice: TGroupBox;
+    lblMargin: TLabel;
+    lblLength: TLabel;
+    txtRightMargin: TMaskEdit;
+    txtPageLength: TMaskEdit;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblConsultTitle: TMemo;
+    cboDevice: TORComboBox;
+    lblPrintTo: TLabel;
+    dlgWinPrinter: TPrintDialog;
+    chkDefault: TCheckBox;
+    procedure cboDeviceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboDeviceChange(Sender: TObject);
+    procedure radChartCopyClick(Sender: TObject);
+    procedure radWorkCopyClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+
+  private
+    { Private declarations }
+    FConsult: Integer;
+    FReportText: TRichEdit;
+    procedure DisplaySelectDevice;
+  public
+    { Public declarations }
+  end;
+
+procedure PrintSF513(AConsult: Longint; AConsultTitle: string);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rConsults, Printers, rReports, uCore;
+
+const
+  TX_NODEVICE = 'A device must be selected to print, or press ''Cancel'' to not print.';
+  TX_NODEVICE_CAP = 'Device Not Selected';
+  TX_ERR_CAP = 'Print Error';
+  TX_QUEUED_CAP = 'Printing Report' ;
+  PAGE_BREAK = '**PAGE BREAK**';
+
+procedure PrintSF513(AConsult: Longint; AConsultTitle: string);
+{ displays a form that prompts for a device and then prints the SF513 }
+var
+  frm513Print: Tfrm513Print;
+  DefPrt: string;
+begin
+  frm513Print := Tfrm513Print.Create(Application);
+  try
+    ResizeFormToFont(TForm(frm513Print));
+    with frm513Print do
+    begin
+      lblConsultTitle.Text := AConsultTitle;
+      FConsult := AConsult;
+      DefPrt := GetDefaultPrinter(User.Duz, Encounter.Location);
+      if User.CurrentPrinter = '' then User.CurrentPrinter := DefPrt;
+      with cboDevice do
+        begin
+          if Printer.Printers.Count > 0 then
+            begin
+              Items.Add('WIN;Windows Printer^Windows Printer');
+              Items.Add('^--------------------VistA Printers----------------------');
+            end;
+          if User.CurrentPrinter <> '' then
+            begin
+              InitLongList(Piece(User.CurrentPrinter, ';', 2));
+              SelectByID(User.CurrentPrinter);
+            end
+          else
+            InitLongList('');
+        end;
+      if (DefPrt = 'WIN;Windows Printer') and
+         (User.CurrentPrinter = DefPrt) then
+         cmdOKClick(frm513Print)
+      else
+         ShowModal;
+    end;
+  finally
+    frm513Print.Release;
+  end;
+end;
+
+procedure Tfrm513Print.DisplaySelectDevice;
+begin
+  with cboDevice, lblPrintTo do
+  begin
+    if radChartCopy.Checked then Caption := 'Print Chart Copy on:  ' + Piece(ItemID, ';', 2);
+    if radWorkCopy.Checked then Caption := 'Print Work Copy on:  ' + Piece(ItemID, ';', 2);
+  end;
+end;
+
+procedure Tfrm513Print.cboDeviceNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboDevice.ForDataUse(SubsetOfDevices(StartFrom, Direction));
+end;
+
+procedure Tfrm513Print.cboDeviceChange(Sender: TObject);
+begin
+  inherited;
+  with cboDevice do if ItemIndex > -1 then
+    begin
+      txtRightMargin.Text := Piece(Items[ItemIndex], '^', 4);
+      txtPageLength.Text := Piece(Items[ItemIndex], '^', 5);
+      DisplaySelectDevice;
+    end;
+end;
+
+procedure Tfrm513Print.radChartCopyClick(Sender: TObject);
+begin
+  inherited;
+  DisplaySelectDevice;
+end;
+
+procedure Tfrm513Print.radWorkCopyClick(Sender: TObject);
+begin
+  inherited;
+  DisplaySelectDevice;
+end;
+
+procedure Tfrm513Print.cmdOKClick(Sender: TObject);
+var
+  ADevice, ErrMsg: string;
+  ChartCopy: string;
+  RemoteSiteID: string;    //for Remote site printing
+  RemoteQuery: string;    //for Remote site printing
+begin
+  inherited;
+  FReportText := CreateReportTextComponent(Self);
+  RemoteSiteID := '';
+  RemoteQuery := '';
+  if cboDevice.ItemID = '' then
+  begin
+    InfoBox(TX_NODEVICE, TX_NODEVICE_CAP, MB_OK);
+    Exit;
+  end;
+  if radChartCopy.Checked then ChartCopy := 'C' else ChartCopy := 'W';
+  if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then
+    begin
+      if dlgWinPrinter.Execute then with FReportText do
+        begin
+          QuickCopy(GetFormattedSF513(FConsult, ChartCopy), FReportText);
+          PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
+          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+        end;
+    end
+  else
+    begin
+      ADevice := Piece(cboDevice.ItemID, ';', 2);
+      PrintSF513ToDevice(FConsult, ADevice, ChartCopy, ErrMsg);
+      ErrMsg := Piece(FReportText.Lines[0], U, 2);
+      if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+    end;
+  if chkDefault.Checked then SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
+  User.CurrentPrinter := cboDevice.ItemID;
+  FReportText.Free;
+  Close;
+end;
+
+procedure Tfrm513Print.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAct.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAct.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAct.dfm	(revision 1676)
@@ -0,0 +1,422 @@
+inherited frmConsultAction: TfrmConsultAction
+  Left = 277
+  Top = 217
+  BorderIcons = []
+  Caption = 'frmConsultAction'
+  ClientHeight = 379
+  ClientWidth = 592
+  Constraints.MinHeight = 406
+  Constraints.MinWidth = 600
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 592
+    Height = 379
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object pnlForward: TPanel
+      Left = 0
+      Top = 0
+      Width = 224
+      Height = 379
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblToService: TOROffsetLabel
+        Left = 2
+        Top = 0
+        Width = 120
+        Height = 19
+        Caption = 'To service'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object lblAttentionOf: TOROffsetLabel
+        Left = 2
+        Top = 325
+        Width = 44
+        Height = 19
+        Caption = 'Attention'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object lblUrgency: TOROffsetLabel
+        Left = 2
+        Top = 277
+        Width = 42
+        Height = 19
+        Caption = 'Urgency'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object Label1: TMemo
+        Left = 18
+        Top = 123
+        Width = 185
+        Height = 65
+        TabStop = False
+        Alignment = taCenter
+        BorderStyle = bsNone
+        Color = clBtnFace
+        Lines.Strings = (
+          'A procedure can only be forwarded to '
+          'other services defined as being able to '
+          'perform that procedure.  Valid '
+          'selections for this procedure are listed '
+          'in the drop-down box above.')
+        ReadOnly = True
+        TabOrder = 4
+      end
+      object cboAttentionOf: TORComboBox
+        Left = 2
+        Top = 344
+        Width = 212
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Attention'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 2
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 3
+        OnNeedData = NewPersonNeedData
+        CharsNeedMatch = 1
+      end
+      object cboUrgency: TORComboBox
+        Left = 2
+        Top = 297
+        Width = 212
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Urgency'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 2
+        CharsNeedMatch = 1
+      end
+      object treService: TORTreeView
+        Left = 2
+        Top = 100
+        Width = 212
+        Height = 182
+        HideSelection = False
+        Indent = 19
+        ReadOnly = True
+        TabOrder = 1
+        OnChange = treServiceChange
+        OnExit = treServiceExit
+        Caption = 'To service'
+        NodePiece = 0
+      end
+      object cboService: TORComboBox
+        Left = 2
+        Top = 23
+        Width = 212
+        Height = 75
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'To service'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = True
+        SynonymChars = '<>'
+        TabOrder = 0
+        OnKeyPause = cboServiceSelect
+        OnMouseClick = cboServiceSelect
+        CharsNeedMatch = 1
+      end
+    end
+    object pnlOther: TPanel
+      Left = 224
+      Top = 0
+      Width = 368
+      Height = 379
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      object pnlSigFind: TPanel
+        Left = 0
+        Top = 0
+        Width = 368
+        Height = 57
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object grpSigFindings: TRadioGroup
+          Left = 9
+          Top = 7
+          Width = 350
+          Height = 41
+          Caption = 'Significant Findings - Current status:  '
+          Columns = 3
+          Ctl3D = True
+          Items.Strings = (
+            '&Yes'
+            '&No'
+            '&Unknown')
+          ParentCtl3D = False
+          TabOrder = 0
+        end
+      end
+      object pnlComments: TPanel
+        Left = 0
+        Top = 57
+        Width = 368
+        Height = 224
+        Align = alClient
+        Alignment = taLeftJustify
+        BevelOuter = bvNone
+        TabOrder = 1
+        object lblComments: TOROffsetLabel
+          Left = 0
+          Top = 0
+          Width = 368
+          Height = 19
+          Align = alTop
+          Caption = 'Comments'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 6
+          WordWrap = False
+        end
+        object memComments: TCaptionMemo
+          Left = 0
+          Top = 19
+          Width = 368
+          Height = 170
+          Align = alClient
+          Font.Charset = ANSI_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          ParentFont = False
+          ScrollBars = ssVertical
+          TabOrder = 0
+          Caption = 'Comments'
+        end
+        object pnlAlert: TPanel
+          Left = 0
+          Top = 189
+          Width = 368
+          Height = 35
+          Align = alBottom
+          BevelOuter = bvNone
+          TabOrder = 1
+          object lblAutoAlerts: TStaticText
+            Left = 6
+            Top = 1
+            Width = 4
+            Height = 4
+            TabOrder = 1
+          end
+          object ckAlert: TCheckBox
+            Left = 6
+            Top = 17
+            Width = 129
+            Height = 17
+            Caption = 'Send additional alerts'
+            TabOrder = 0
+            OnClick = ckAlertClick
+          end
+        end
+      end
+      object pnlAllActions: TPanel
+        Left = 0
+        Top = 281
+        Width = 368
+        Height = 98
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 2
+        DesignSize = (
+          368
+          98)
+        object lblActionBy: TOROffsetLabel
+          Left = 138
+          Top = -4
+          Width = 215
+          Height = 19
+          Caption = 'Action by'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 6
+          WordWrap = False
+        end
+        object lblDateofAction: TOROffsetLabel
+          Left = 5
+          Top = -4
+          Width = 112
+          Height = 19
+          Caption = 'Date/time of this action'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 6
+          WordWrap = False
+        end
+        object calDateofAction: TORDateBox
+          Left = 5
+          Top = 15
+          Width = 116
+          Height = 21
+          TabOrder = 0
+          Text = 'Now'
+          DateOnly = False
+          RequireTime = False
+          Caption = 'Date/time of this action'
+        end
+        object cmdOK: TORAlignButton
+          Left = 201
+          Top = 62
+          Width = 75
+          Height = 22
+          Anchors = [akRight, akBottom]
+          Caption = 'OK'
+          TabOrder = 2
+          OnClick = cmdOKClick
+        end
+        object cmdCancel: TORAlignButton
+          Left = 286
+          Top = 62
+          Width = 75
+          Height = 22
+          Anchors = [akRight, akBottom]
+          Cancel = True
+          Caption = 'Cancel'
+          TabOrder = 3
+          OnClick = cmdCancelClick
+        end
+        object cboPerson: TORComboBox
+          Left = 137
+          Top = 15
+          Width = 220
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Caption = 'Action by'
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = True
+          LookupPiece = 2
+          MaxLength = 0
+          Pieces = '2,3'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 1
+          TabStop = True
+          OnNeedData = NewPersonNeedData
+          CharsNeedMatch = 1
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlForward'
+        'Status = stsDefault')
+      (
+        'Component = Label1'
+        'Status = stsDefault')
+      (
+        'Component = cboAttentionOf'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = treService'
+        'Status = stsDefault')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = pnlOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlSigFind'
+        'Status = stsDefault')
+      (
+        'Component = grpSigFindings'
+        'Status = stsDefault')
+      (
+        'Component = pnlComments'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = pnlAlert'
+        'Status = stsDefault')
+      (
+        'Component = lblAutoAlerts'
+        'Status = stsDefault')
+      (
+        'Component = ckAlert'
+        'Status = stsDefault')
+      (
+        'Component = pnlAllActions'
+        'Status = stsDefault')
+      (
+        'Component = calDateofAction'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboPerson'
+        'Status = stsDefault')
+      (
+        'Component = frmConsultAction'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAct.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAct.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAct.pas	(revision 1676)
@@ -0,0 +1,637 @@
+unit fConsultAct;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
+  StdCtrls, ExtCtrls, ORCtrls, uCore, ComCtrls, ORDtTm, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmConsultAction = class(TfrmBase508Form)
+    lblActionBy: TOROffsetLabel;
+    calDateofAction: TORDateBox;
+    lblDateofAction: TOROffsetLabel;
+    cboPerson: TORComboBox;
+    memComments: TCaptionMemo;
+    lblComments: TOROffsetLabel;
+    lblToService: TOROffsetLabel;
+    cboAttentionOf: TORComboBox;
+    lblAttentionOf: TOROffsetLabel;
+    lblUrgency: TOROffsetLabel;
+    cmdOK: TORAlignButton;
+    cmdCancel: TORAlignButton;
+    cboUrgency: TORComboBox;
+    pnlBase: TPanel;
+    pnlForward: TPanel;
+    pnlOther: TPanel;
+    treService: TORTreeView;
+    pnlComments: TPanel;
+    pnlAllActions: TPanel;
+    grpSigFindings: TRadioGroup;
+    pnlSigFind: TPanel;
+    cboService: TORComboBox;
+    pnlAlert: TPanel;
+    ckAlert: TCheckBox;
+    Label1: TMemo;
+    lblAutoAlerts: TStaticText;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure NewPersonNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure ProviderNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure ckAlertClick(Sender: TObject);
+    procedure treServiceChange(Sender: TObject; Node: TTreeNode);
+    procedure treServiceExit(Sender: TObject);
+    procedure cboServiceSelect(Sender: TObject);           {**REV**}
+  private
+     FActionType: integer ;
+     FChanged: boolean ;
+     FActionBy: Int64;
+     FActionDate: TFMDateTime;
+     FToService: integer ;
+     FAttentionOf: int64 ;
+     FUrgency: integer ;
+     FSigFind: string;
+     FComments: TStrings ;
+     FAlert: integer ;
+     FAlertTo: string ;
+     FIsProcedure: boolean;
+     FProcIEN: integer;
+     FUserLevel: integer;
+     FUserIsRequester: boolean;
+     function SetupForward(IsProcedure: boolean; ProcIEN: integer): boolean;
+     procedure SetupAddComment;
+     procedure SetupAdminComplete;
+     procedure SetupSigFindings;
+     procedure SigFindPanelShow;
+     procedure SetupReceive;
+     procedure SetupSchedule;
+     procedure SetupOther;
+     procedure ShowAutoAlertText;
+  end;
+
+function SetActionContext(FontSize: Integer; ActionCode: integer; IsProcedure: boolean; ProcID: string; UserLevel: integer): boolean;
+
+var
+  frmConsultAction: TfrmConsultAction;
+  SvcList: TStrings ;
+  uChanging: Boolean;
+
+const
+  TX_FWD_NO_CSLT_SVCS_TEXT = 'There are no services that you can forward this consult to' ;
+  TX_FWD_NO_PROC_SVCS_TEXT = 'There are no additional services that can perform this procedure.' ;
+  TX_NOTTHISSVC_TEXT = 'Consults cannot be forwarded to this service. Please select a subspecialty' ;
+  TX_NOFORWARD_TEXT  = 'Service must be specified.' ;
+  TX_NOFORWARD_SELF  = 'A consult cannot be forwarded to the same service already responsible.';
+  TX_NOFORWARD_CAP   = 'Unable to forward' ;
+  TX_NOURGENCY_TEXT  = 'Urgency must be specified';
+  TX_PERSON_TEXT     = 'Select a person to perform this action or press Cancel.';
+  TX_PERSON_CAP      = 'Missing person';
+  TX_DATE_TEXT       = 'Enter a valid date for this action.' ;
+  TX_DATE_CAP        = 'Invalid date' ;
+  TX_FUTDATE_TEXT    = 'Dates or times in the future are not allowed.';
+  TX_COMMENTS_TEXT   = 'Comments are required for this action.' ;
+  TX_COMMENTS_CAP    = 'No comments entered' ;
+  TX_SIGFIND_TEXT    = 'A significant findings selection is required.' ;
+  TX_SIGFIND_CAP     = 'No significant findings status entered' ;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rConsults, uConsults, fConsults, fConsultAlertTo, rOrders;
+
+var
+  RecipientList: TRecipientList ;
+
+function SetActionContext(FontSize: Integer; ActionCode: integer; IsProcedure: boolean; ProcID: string; UserLevel: integer): boolean;
+{ displays action input form for consults and sets up broker calls }
+begin
+  Result := False;
+  frmConsultAction := TfrmConsultAction.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmConsultAction);
+    with frmConsultAction do
+     begin
+      //I wish I knew why the resize wasn't working on the buttons
+      cmdCancel.Left := pnlAllActions.ClientWidth - cmdCancel.Width -7;
+      cmdOK.Left := cmdCancel.Left - cmdOK.Width - 10;
+      FChanged     := False;
+      FActionType  := ActionCode ;
+      FIsProcedure := IsProcedure;
+      FProcIEN     := StrToIntDef(Piece(ProcID, ';', 1), 0);
+      FUserLevel   := UserLevel;
+      FUserIsRequester := (User.DUZ = ConsultRec.SendingProvider);
+      Caption      := ActionType[ActionCode] ;
+      RecipientList.Recipients    := '' ;
+      RecipientList.Changed       := False ;
+
+      case FActionType of
+        CN_ACT_FORWARD:         if not SetupForward(FIsProcedure, FProcIEN) then exit;
+        CN_ACT_ADD_CMT:         SetupAddComment;
+        CN_ACT_ADMIN_COMPLETE:  SetupAdminComplete;
+        CN_ACT_SIGFIND:         SetupSigFindings;
+        CN_ACT_RECEIVE:         SetupReceive;
+        CN_ACT_SCHEDULE:        SetupSchedule;
+      else                      SetupOther;
+      end;
+
+      ShowModal ;
+      Result := FChanged ;
+     end ;
+  finally
+    frmConsultAction.Release;
+  end;
+end;
+
+//=================== Setup form for different actions ===========================
+
+function TfrmConsultAction.SetupForward(IsProcedure: boolean; ProcIEN: integer): boolean;
+var
+  i: integer;
+  OrdItmIEN: integer;
+begin
+ pnlSigFind.Visible := False;
+ with frmConsultAction do Height := Height - pnlSigFind.Height;
+ pnlComments.Visible := True;
+ memComments.Clear;
+ if IsProcedure then
+   begin
+     OrdItmIEN := GetOrderableIEN(IntToStr(ConsultRec.ORFileNumber));
+     FastAssign(GetProcedureServices(OrdItmIEN), SvcList);
+     //FastAssign(GetProcedureServices(ProcIEN), SvcList);   RPC expects pointer to 101.43, NOT 123.3  (RV)
+     i := SvcList.IndexOf(IntToStr(ConsultRec.ToService) + U + Trim(ExternalName(ConsultRec.ToService, 123.5)));
+     if i > -1 then SvcList.Delete(i);
+     treService.Visible := False;
+   end
+ else
+   FastAssign(LoadServiceListWithSynonyms(CN_SVC_LIST_FWD, ConsultRec.IEN), SvcList);           {RV}
+ if (IsProcedure and (SvcList.Count <= 0)) then
+   begin
+     InfoBox(TX_FWD_NO_PROC_SVCS_TEXT, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);
+     Result := False  ;
+     Exit ;
+   end
+ else if ((not IsProcedure) and (Piece(SvcList.Strings[0],U,1) = '-1')) then
+   begin
+     InfoBox(TX_FWD_NO_CSLT_SVCS_TEXT, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);
+     Result := False  ;
+     Exit ;
+   end
+ else
+   begin
+     SortByPiece(TStringList(SvcList), U, 2);                                   {RV}
+     for i := 0 to SvcList.Count - 1 do
+        if (cboService.Items.IndexOf(Trim(Piece(SvcList.Strings[i], U, 2))) = -1) and   {RV}
+          (Piece(SvcList.Strings[i], U, 5) <> '1') then
+         cboService.Items.Add(SvcList.Strings[i]);
+     if not IsProcedure then
+       begin
+         BuildServiceTree(treService, SvcList, '0', nil) ;
+         with treService do
+           for i:=0 to Items.Count-1 do
+             begin
+               if Items[i].Level > 0 then Items[i].Expanded := False
+                 else Items[i].Expanded := True;
+               TopItem := Items[0] ;
+               Selected := Items[0] ;
+             end ;
+       end;
+     pnlForward.Visible := True ;        
+   end ;
+ if cboService.Items.Count = 1 then cboService.ItemIndex := 0;
+ FToService := cboService.ItemIEN;
+ cboAttentionOf.InitLongList('') ;
+ with cboUrgency do
+  begin
+    FastAssign(SubsetofUrgencies(ConsultRec.IEN), cboUrgency.Items) ;
+    MixedCaseList(Items) ;
+    SelectByIEN(ConsultRec.Urgency);
+    if ItemIndex = -1 then
+      begin
+        for i := 0 to Items.Count-1 do
+          if DisplayText[i] = 'Routine' then break ;
+        ItemIndex := i ;
+      end;
+  end ;
+  FUrgency := cboUrgency.ItemIEN;
+  //lblActionBy.Caption := 'Responsible Clinician';  //  v20.1 RV
+  //cboPerson.OnNeedData := ProviderNeedData;        //
+  lblActionBy.Caption := 'Responsible Person';       //
+  cboPerson.Caption := lblActionBy.Caption;
+  cboPerson.OnNeedData := NewPersonNeedData;         //
+  cboPerson.InitLongList(User.Name)  ;
+  cboPerson.SelectByIEN(User.DUZ);        
+  ckAlert.Visible := False ;
+  lblAutoAlerts.Visible := False;
+  Result := True;
+end;
+
+procedure TfrmConsultAction.SetupAddComment;
+begin
+  pnlForward.Visible := False ;
+  //with frmConsultAction do Width := Width - pnlForward.Width ;
+  pnlSigFind.Visible := False;
+  with frmConsultAction do Height := Height - pnlSigFind.Height;
+  ckAlert.Visible             := True ;
+  lblAutoAlerts.Visible       := True;
+  ShowAutoAlertText;
+(*  RecipientList.Recipients    := '' ;
+  RecipientList.Changed       := False ;*)
+  lblActionBy.Visible         := False ;
+  cboPerson.Visible           := False ;
+  pnlComments.Visible := True;
+  memComments.Clear;
+  ActiveControl := memComments ;
+end;
+
+procedure TfrmConsultAction.SetupSchedule;
+begin
+  pnlForward.Visible := False ;
+  //with frmConsultAction do Width := Width - pnlForward.Width ;
+  pnlSigFind.Visible := False;
+  with frmConsultAction do Height := Height - pnlSigFind.Height;
+  ckAlert.Visible             := True ;
+  lblAutoAlerts.Visible       := True;
+  ShowAutoAlertText;
+(*  RecipientList.Recipients    := '' ;
+  RecipientList.Changed       := False ;*)
+  lblActionBy.Visible         := True ;
+  cboPerson.Visible           := True ;
+  lblActionBy.Caption := 'Responsible Person';
+  cboPerson.Caption := lblActionBy.Caption;
+  cboPerson.OnNeedData := NewPersonNeedData;
+  cboPerson.InitLongList(User.Name)  ;
+  cboPerson.SelectByIEN(User.DUZ);
+  pnlComments.Visible := True;
+  memComments.Clear;
+  ActiveControl := memComments ;
+end;
+
+procedure TfrmConsultAction.SetupAdminComplete;
+begin
+  SigFindPanelShow ;
+  pnlForward.Visible := False ;
+  //with frmConsultAction do Width := Width - pnlForward.Width ;
+  ckAlert.Visible             := False ;
+  lblAutoAlerts.Visible       := False;
+
+  //lblActionBy.Caption := 'Responsible Provider';
+  //cboPerson.OnNeedData := ProviderNeedData;   //RIC-0100-21228 - need ALL users here
+  //cboPerson.InitLongList('')  ;
+  //cboPerson.ItemIndex := -1;
+  lblActionBy.Caption := 'Responsible Person';
+  cboPerson.Caption := lblActionBy.Caption;
+  cboPerson.OnNeedData := NewPersonNeedData;
+  cboPerson.InitLongList(User.Name)  ;
+  cboPerson.SelectByIEN(User.DUZ);
+
+  pnlComments.Visible := True;
+  memComments.Clear;
+(*  if not FUserIsRequester then RecipientList.Recipients := IntToStr(ConsultRec.SendingProvider);
+  RecipientList.Changed := not FUserIsRequester;*)
+  ActiveControl := memComments ;
+end;
+
+procedure TfrmConsultAction.SetupSigFindings;
+begin
+  SigFindPanelShow ;
+  pnlForward.Visible := False ;
+  //with frmConsultAction do Width := Width - pnlForward.Width ;
+  ckAlert.Visible             := True ;
+  lblAutoAlerts.Visible       := True;
+  ShowAutoAlertText;
+(*  RecipientList.Recipients    := '' ;
+  RecipientList.Changed       := False ;*)
+  lblActionBy.Visible         := False ;
+  cboPerson.Visible           := False ;
+  pnlComments.Visible := True;
+  memComments.Clear;
+  ActiveControl := memComments ;
+end;
+
+procedure TfrmConsultAction.SigFindPanelShow;
+var
+  i: integer;
+begin
+  pnlSigFind.Visible := True;        
+  with grpSigFindings do        
+    begin
+      for i := 0 to 2 do if Copy(Items[i],1,1)=ConsultRec.Findings then ItemIndex := i ;
+      if ItemIndex = -1 then        
+        begin
+          ItemIndex := 2;        
+          Caption := Caption + 'Not yet entered';
+        end
+      else        
+        Caption := Caption + Items[ItemIndex];
+    end;
+end ;
+
+procedure TfrmConsultAction.SetupReceive;
+begin
+  pnlForward.Visible := False ;
+  //with frmConsultAction do Width := Width - pnlForward.Width ;
+  pnlComments.Visible := True;                                                              // V14?
+  ckAlert.Visible := False ;
+  lblAutoAlerts.Visible := False;
+  pnlSigFind.Visible := False;
+  with frmConsultAction do Height := Height - pnlSigFind.Height;// - pnlComments.Height ;   // V14?
+  cboPerson.OnNeedData := NewPersonNeedData;
+  cboPerson.InitLongList(User.Name)  ;
+  cboPerson.SelectByIEN(User.DUZ);        
+  ActiveControl := calDateOfAction;
+end;
+
+procedure TfrmConsultAction.SetupOther;
+begin
+  pnlForward.Visible := False ;
+  //with frmConsultAction do Width := Width - pnlForward.Width ;
+  pnlSigFind.Visible := False;
+  with frmConsultAction do Height := Height - pnlSigFind.Height;
+  lblActionBy.Caption := 'Action by';
+  cboPerson.Caption := lblActionBy.Caption;
+  cboPerson.OnNeedData := NewPersonNeedData;
+  cboPerson.InitLongList(User.Name)  ;        
+  cboPerson.SelectByIEN(User.DUZ);
+  ckAlert.Visible := False ;        
+  lblAutoAlerts.Visible := False;
+  pnlComments.Visible := True;
+  memComments.Clear;
+  ActiveControl := memComments ;
+end;
+
+// ============================= Control events ================================
+
+procedure TfrmConsultAction.NewPersonNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmConsultAction.ProviderNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  (Sender as TORComboBox).ForDataUse(SubSetOfProviders(StartFrom, Direction));
+end;
+
+procedure TfrmConsultAction.cmdCancelClick(Sender: TObject);
+begin
+  FChanged := False ;
+  Close ;
+end;
+
+procedure TfrmConsultAction.cmdOKClick(Sender: TObject);
+var
+  Alist: TStringList;
+begin
+  Alist := TStringList.Create ;
+  try
+    if (cboPerson.ItemIEN = 0)
+        and (FActionType <> CN_ACT_ADD_CMT)
+        and (FActionType <> CN_ACT_SIGFIND) then
+      begin
+        InfoBox(TX_PERSON_TEXT, TX_PERSON_CAP, MB_OK or MB_ICONWARNING);
+        Exit;
+      end;
+
+    if ((FActionType = CN_ACT_SIGFIND) or (FActionType = CN_ACT_ADMIN_COMPLETE))
+    and (grpSigFindings.ItemIndex < 0) then
+      begin
+        InfoBox(TX_SIGFIND_TEXT, TX_SIGFIND_CAP, MB_OK or MB_ICONWARNING);
+        Exit;
+      end;
+
+    if   ((FActionType = CN_ACT_DENY)
+       or (FActionType = CN_ACT_DISCONTINUE)
+       or (FActionType = CN_ACT_ADD_CMT)
+       or (FActionType = CN_ACT_ADMIN_COMPLETE))
+       and (memComments.Lines.Count = 0) then
+      begin
+          InfoBox(TX_COMMENTS_TEXT, TX_COMMENTS_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+      end;
+
+    if (FActionType = CN_ACT_FORWARD) then
+     begin
+       if (FIsProcedure and (cboService.ItemIndex = -1) and (FToService = 0 )) or
+          ((not FIsProcedure) and (treService.Selected = nil) and (FToService = 0 )) then
+         begin
+          InfoBox(TX_NOFORWARD_TEXT, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+         end;
+       if (not FIsProcedure) and (cboService.ItemIEN = ConsultRec.ToService) then
+         begin
+          InfoBox(TX_NOFORWARD_SELF, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+         end;
+       if cboUrgency.ItemIEN = 0 then
+         begin
+           InfoBox(TX_NOURGENCY_TEXT, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);
+           Exit;
+         end;
+       if (FIsProcedure and (Piece(cboService.Items[cboService.ItemIndex], U, 5) = '1')) or
+          ((not FIsProcedure) and (Piece(TORTreeNode(treService.Selected).StringData, U, 5) = '1')) then
+         begin
+          InfoBox(TX_NOTTHISSVC_TEXT, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+         end;
+     end ;
+
+    if calDateofAction.Text <> '' then
+      begin
+        FActionDate := StrToFMDateTime(calDateofAction.Text) ;
+        if FActionDate = -1 then
+          begin
+            InfoBox(TX_DATE_TEXT, TX_DATE_CAP, MB_OK or MB_ICONWARNING);
+            calDateofAction.SetFocus ;
+            exit ;
+          end
+        else if FActionDate > FMNow then
+          begin
+            InfoBox(TX_FUTDATE_TEXT, TX_DATE_CAP, MB_OK or MB_ICONWARNING);
+            calDateofAction.SetFocus ;
+            exit ;
+          end;
+      end
+    else
+      FActionDate := FMNow ;
+
+    FActionBy      := cboPerson.ItemIEN;
+    FAttentionOf   := cboAttentionOf.ItemIEN ;
+    FUrgency       := cboUrgency.ItemIEN ;
+    if (FActionType = CN_ACT_SIGFIND) or (FActionType = CN_ACT_ADMIN_COMPLETE) then
+      FSigFind       := Copy(grpSigFindings.Items[grpSigFindings.ItemIndex],2,1);
+    LimitEditWidth(memComments, 74);
+    FComments := memComments.Lines ;
+    if ((ckAlert.Checked) (*or (FActionType = CN_ACT_ADMIN_COMPLETE)*))
+        and RecipientList.Changed then
+      begin
+        FAlert   := 1  ;
+        FAlertTo := RecipientList.Recipients ;
+      end
+    else
+      begin
+        FAlert   := 0;
+        FAlertTo := '';
+      end ;
+
+    case FActionType of
+      CN_ACT_RECEIVE    :
+        ReceiveConsult(Alist, ConsultRec.IEN, FActionBy, FActionDate, FComments) ;
+      CN_ACT_SCHEDULE   :
+        ScheduleConsult(Alist, ConsultRec.IEN, FActionBy, FActionDate, FAlert, FAlertTo, FComments) ;
+      CN_ACT_DENY       :
+        DenyConsult(Alist, ConsultRec.IEN, FActionBy, FActionDate, FComments) ;
+      CN_ACT_DISCONTINUE:
+        DiscontinueConsult(Alist, ConsultRec.IEN, FActionBy, FActionDate, FComments) ;
+      CN_ACT_FORWARD    :
+        ForwardConsult(Alist, ConsultRec.IEN, FToService, FActionBy, FAttentionOf, FUrgency, FActionDate, FComments);
+      CN_ACT_ADD_CMT    :
+        AddComment(Alist, ConsultRec.IEN, FComments, FActionDate, FAlert, FAlertTo) ;
+      CN_ACT_SIGFIND    :
+        SigFindings(Alist, ConsultRec.IEN, FSigFind, FComments, FActionDate, FAlert, FAlertTo) ;
+      CN_ACT_ADMIN_COMPLETE :
+        AdminComplete(Alist,ConsultRec.IEN, FSigFind, FComments, FActionBy, FActionDate, FAlert, FAlertTo);
+    end ;
+    if AList.Count > 0 then
+    begin
+      if StrToInt(Piece(Alist[0],u,1)) > 0 then
+        begin
+          InfoBox(Piece(Alist[0],u,2), 'Unable to '+ActionType[FActionType], MB_OK or MB_ICONWARNING);
+          FChanged :=  False ;
+        end
+      else
+        FChanged := True;
+    end
+    else
+      FChanged := True ;
+  finally
+    Alist.Free ;
+  end ;
+  Close ;
+end ;
+
+procedure TfrmConsultAction.ckAlertClick(Sender: TObject);
+begin
+   if ckAlert.Checked then SelectRecipients(Font.Size, FActionType, RecipientList) ;
+end;
+
+
+procedure TfrmConsultAction.treServiceChange(Sender: TObject; Node: TTreeNode);
+begin
+  if uChanging or FIsProcedure then Exit;
+  FToService  := StrToIntDef(Piece(TORTreeNode(treService.Selected).StringData, U, 1), 0);
+(*  if (treService.Selected.Data <> nil) and (Piece(string(treService.Selected.Data), U, 5) <> '1') then
+    cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))*)
+  //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1));
+   cboService.ItemIndex := cboService.Items.IndexOf(Trim(treService.Selected.Text));  {RV}
+   ActiveControl := cboService;                                                 {RV}
+end;
+
+procedure TfrmConsultAction.treServiceExit(Sender: TObject);
+begin
+(*  if (Piece(TORTreeNode(treService.Selected).StringData, U, 5) = '1') then      WHY IS THIS IN HERE?  (rv - v15.5)
+    InfoBox(TX_NOTTHISSVC_TEXT, TX_NOFORWARD_CAP, MB_OK or MB_ICONWARNING);*)
+end;
+
+procedure TfrmConsultAction.cboServiceSelect(Sender: TObject);
+var                                                                       
+  i: integer;                                                             
+begin                                                                     
+  if not FIsProcedure then
+    begin
+      uChanging := True;
+      with treService do for i := 0 to Items.Count-1 do
+        begin
+          if Piece(TORTreeNode(Items[i]).StringData, U, 1) = cboService.ItemID then
+            begin
+              Selected := Items[i];
+              //treServiceChange(Self, Items[i]);
+              break;
+            end;
+        end;
+      uChanging := False;
+      FToService  := StrToIntDef(Piece(TORTreeNode(treService.Selected).StringData, U, 1), 0);
+    end
+  else 
+    FToService  := cboService.ItemIEN;
+end;                                                                      
+
+(*procedure TfrmConsultAction.ShowAutoAlertText;      ****  SEE BELOW FOR REPLACEMENT - v27.9 Phelps/Vertigan
+const
+  TX_ALERT1          = 'An alert will automatically be sent to ';
+  TX_ALERT_PROVIDER  = 'the ordering provider';
+  TX_ALERT_SVC_USERS = 'notification recipients for this service.';
+  TX_ALERT_NOBODY    = 'No automatic alerts will be sent.';  // this should be rare to never
+var
+  x: string;
+begin
+  case FUserLevel of
+     UL_NONE, UL_REVIEW:
+       begin
+         if FUserIsRequester then
+           x := TX_ALERT1 + TX_ALERT_SVC_USERS
+         else
+           x := TX_ALERT1 + TX_ALERT_PROVIDER + ' and to ' + TX_ALERT_SVC_USERS;
+       end;
+     UL_UPDATE, UL_ADMIN, UL_UPDATE_AND_ADMIN:
+       begin
+         if FUserIsRequester then
+           x := TX_ALERT_NOBODY
+         else
+           x := TX_ALERT1 + TX_ALERT_PROVIDER + '.';
+       end;
+   end;
+   lblAutoAlerts.Caption := x;
+end;*)
+
+procedure TfrmConsultAction.ShowAutoAlertText;
+const
+  TX_ALERT1          = 'An alert will automatically be sent to ';
+  TX_ALERT_PROVIDER  = 'the ordering provider';
+  TX_ALERT_SVC_USERS = 'notification recipients for this service.';
+  TX_ALERT_NOBODY    = 'No automatic alerts will be sent.';  // this should be rare to never
+var
+  x: string;
+begin
+  case FUserLevel of
+    UL_NONE, UL_REVIEW:
+      begin
+        if FUserIsRequester then
+          x := TX_ALERT1 + TX_ALERT_SVC_USERS
+        else
+          x := TX_ALERT1 + TX_ALERT_PROVIDER + ' and to ' + TX_ALERT_SVC_USERS;
+      end;
+    UL_UPDATE, UL_ADMIN, UL_UPDATE_AND_ADMIN:
+      begin
+        if FUserIsRequester then
+          //x := TX_ALERT_NOBODY   Replace with following line
+          x := TX_ALERT1 + TX_ALERT_SVC_USERS
+        else
+          x := TX_ALERT1 + TX_ALERT_PROVIDER + '.';
+      end;
+    UL_UNRESTRICTED:
+      begin
+        if FUserIsRequester then
+          x := TX_ALERT1 + TX_ALERT_SVC_USERS
+        else
+          x := TX_ALERT1 + TX_ALERT_PROVIDER + ' and to ' + TX_ALERT_SVC_USERS;
+      end;
+  end;
+  lblAutoAlerts.Caption := x;
+end;
+
+
+initialization
+   SvcList := TStringList.Create ;
+
+finalization
+   SvcList.Free ;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAlertTo.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAlertTo.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAlertTo.dfm	(revision 1676)
@@ -0,0 +1,144 @@
+inherited frmConsultAlertsTo: TfrmConsultAlertsTo
+  Left = 297
+  Top = 206
+  BorderStyle = bsDialog
+  Caption = 'Send Alert'
+  ClientHeight = 262
+  ClientWidth = 371
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 371
+    Height = 262
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    ExplicitWidth = 358
+    object SrcLabel: TLabel
+      Left = 12
+      Top = 14
+      Width = 98
+      Height = 13
+      Caption = 'Select or enter name'
+    end
+    object DstLabel: TLabel
+      Left = 217
+      Top = 14
+      Width = 132
+      Height = 13
+      Caption = 'Currently selected recipients'
+    end
+    object cmdOK: TButton
+      Left = 105
+      Top = 226
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 4
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 185
+      Top = 226
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 5
+      OnClick = cmdCancelClick
+    end
+    object cboSrcList: TORComboBox
+      Left = 12
+      Top = 30
+      Width = 144
+      Height = 185
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Select or enter name'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      Pieces = '2,3'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnKeyDown = cboSrcListKeyDown
+      OnMouseClick = cboSrcListMouseClick
+      OnNeedData = cboSrcListNeedData
+      CharsNeedMatch = 1
+    end
+    object DstList: TORListBox
+      Left = 217
+      Top = 30
+      Width = 144
+      Height = 185
+      ItemHeight = 13
+      MultiSelect = True
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = DstListClick
+      Caption = 'Currently selected recipients'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object btnAdd: TButton
+      Left = 160
+      Top = 109
+      Width = 51
+      Height = 25
+      Caption = 'Add'
+      TabOrder = 1
+      OnClick = cboSrcListMouseClick
+    end
+    object btnRemove: TButton
+      Left = 160
+      Top = 140
+      Width = 51
+      Height = 25
+      Caption = 'Remove'
+      TabOrder = 3
+      OnClick = DstListClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboSrcList'
+        'Status = stsDefault')
+      (
+        'Component = DstList'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = frmConsultAlertsTo'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAlertTo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAlertTo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultAlertTo.pas	(revision 1676)
@@ -0,0 +1,139 @@
+unit fConsultAlertTo;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
+  Buttons, ORCtrls, ORfn, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmConsultAlertsTo = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboSrcList: TORComboBox;
+    DstList: TORListBox;
+    SrcLabel: TLabel;
+    DstLabel: TLabel;
+    pnlBase: TORAutoPanel;
+    btnAdd: TButton;
+    btnRemove: TButton;
+    procedure cboSrcListNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    //procedure cboSrcListdblClick(Sender: TObject);
+    procedure cboSrcListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure DstListClick(Sender: TObject);
+    procedure cboSrcListMouseClick(Sender: TObject);
+  private
+    FActionType: integer;
+    FRecipients: string ;
+    FChanged: Boolean;
+  end;
+
+TRecipientList = record
+    Changed: Boolean;
+    Recipients: string ;
+  end;
+
+procedure SelectRecipients(FontSize: Integer; ActionType: integer; var RecipientList: TRecipientList) ;
+
+implementation
+
+{$R *.DFM}
+
+uses rConsults, rCore, uCore, uConsults, fConsults;
+
+const
+  TX_RCPT_TEXT = 'Select recipients or press Cancel.';
+  TX_RCPT_CAP = 'No Recipients Selected';
+  TX_REQ_TEXT = 'The requesting provider is always included in this type of alert';
+  TX_REQ_CAP = 'Cannot Remove Recipient';
+
+procedure SelectRecipients(FontSize: Integer; ActionType: integer; var RecipientList: TRecipientList) ;
+{ displays recipients select form for consults and returns a record of the selection }
+var
+  frmConsultAlertsTo: TfrmConsultAlertsTo;
+begin
+  frmConsultAlertsTo := TfrmConsultAlertsTo.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmConsultAlertsTo);
+    with frmConsultAlertsTo do
+    begin
+      FActionType := ActionType;
+      FChanged := False;
+      cboSrcList.InitLongList('');
+(*      cboSrcList.InitLongList(ConsultRec.SendingProviderName);
+      cboSrcList.SelectByIEN(ConsultRec.SendingProvider);
+      cboSrcListMouseClick(cboSrcList) ;*)
+      ShowModal;
+      with RecipientList do
+        begin
+          Recipients := Recipients + FRecipients ;
+          Changed := FChanged ;
+        end ;
+    end; {with frmConsultAlertsTo}
+  finally
+    frmConsultAlertsTo.Release;
+  end;
+end;
+
+procedure TfrmConsultAlertsTo.cboSrcListNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmConsultAlertsTo.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmConsultAlertsTo.cmdOKClick(Sender: TObject);
+var
+  i: integer ;
+begin
+  if DstList.Items.Count = 0 then
+  begin
+    InfoBox(TX_RCPT_TEXT, TX_RCPT_CAP, MB_OK or MB_ICONWARNING);
+    FChanged := False ;
+    Exit;
+  end;
+  FChanged := True;
+  for i := 0 to DstList.Items.Count-1 do
+      FRecipients := Piece(DstList.Items[i],u,1) + ';' + FRecipients;
+  Close;
+end;
+
+(*procedure TfrmConsultAlertsTo.cboSrcListdblClick(Sender: TObject);
+begin
+     if cboSrcList.ItemIndex = -1 then exit ;
+     if DstList.SelectByID(cboSrcList.ItemID) = -1 then
+       DstList.Items.Add(cboSrcList.Items[cboSrcList.Itemindex]) ;
+end;*)
+
+procedure TfrmConsultAlertsTo.DstListClick(Sender: TObject);
+begin
+     if DstList.ItemIndex = -1 then exit ;
+(*     if (DstList.ItemIEN = ConsultRec.SendingProvider) and
+        ((FActionType = CN_ACT_SIGFIND) or (FActionType = CN_ACT_ADMIN_COMPLETE)) then
+       begin
+         InfoBox(TX_REQ_TEXT, TX_REQ_CAP, MB_OK or MB_ICONWARNING);
+         exit ;
+       end ;*)
+     DstList.Items.Delete(DstList.ItemIndex) ;
+end;
+
+procedure TfrmConsultAlertsTo.cboSrcListKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_RETURN then cboSrcListMouseClick(Self);
+end;
+
+procedure TfrmConsultAlertsTo.cboSrcListMouseClick(Sender: TObject);
+begin
+     if cboSrcList.ItemIndex = -1 then exit ;
+     if DstList.SelectByID(cboSrcList.ItemID) = -1 then
+       DstList.Items.Add(cboSrcList.Items[cboSrcList.Itemindex]) ;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBD.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBD.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBD.dfm	(revision 1676)
@@ -0,0 +1,112 @@
+inherited frmConsultsByDate: TfrmConsultsByDate
+  Left = 372
+  Top = 217
+  BorderIcons = []
+  Caption = 'List Consults by Date Range'
+  ClientHeight = 151
+  ClientWidth = 251
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 259
+  ExplicitHeight = 178
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 251
+    Height = 151
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblBeginDate: TLabel
+      Left = 8
+      Top = 8
+      Width = 73
+      Height = 13
+      Caption = 'Beginning Date'
+    end
+    object lblEndDate: TLabel
+      Left = 8
+      Top = 51
+      Width = 59
+      Height = 13
+      Caption = 'Ending Date'
+    end
+    object calBeginDate: TORDateBox
+      Left = 8
+      Top = 22
+      Width = 155
+      Height = 21
+      TabOrder = 0
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Beginning Date'
+    end
+    object calEndDate: TORDateBox
+      Left = 8
+      Top = 65
+      Width = 155
+      Height = 21
+      TabOrder = 1
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Ending Date'
+    end
+    object radSort: TRadioGroup
+      Left = 8
+      Top = 94
+      Width = 155
+      Height = 49
+      Caption = 'Sort Order'
+      Items.Strings = (
+        '&Ascending (oldest first)'
+        '&Descending (newest first)')
+      TabOrder = 2
+    end
+    object cmdOK: TButton
+      Left = 171
+      Top = 95
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 3
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 171
+      Top = 122
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 4
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = calBeginDate'
+        'Status = stsDefault')
+      (
+        'Component = calEndDate'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmConsultsByDate'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBD.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBD.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBD.pas	(revision 1676)
@@ -0,0 +1,128 @@
+unit fConsultBD;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
+  StdCtrls, ExtCtrls, ORCtrls, ORDtTm, uConsults, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmConsultsByDate = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblBeginDate: TLabel;
+    calBeginDate: TORDateBox;
+    lblEndDate: TLabel;
+    calEndDate: TORDateBox;
+    radSort: TRadioGroup;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure calBeginDateKeyPress(Sender: TObject; var Key: Char);
+    procedure calEndDateKeyPress(Sender: TObject; var Key: Char);
+  private
+    FChanged: Boolean;
+    FBeginDate: string;
+    FEndDate: string;
+    FAscending: Boolean;
+  end;
+
+  TConsultDateRange = record
+    Changed: Boolean;
+    BeginDate: string;
+    EndDate: string;
+    Ascending: Boolean;
+  end;
+
+function SelectConsultDateRange(FontSize: Integer; CurrentContext: TSelectContext; var ConsultDateRange: TConsultDateRange): boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rConsults;
+
+const
+   TX_DATE_ERR = 'Enter valid beginning and ending dates or press Cancel.';
+   TX_DATE_ERR_CAP = 'Error in Date Range';
+
+function SelectConsultDateRange(FontSize: Integer; CurrentContext: TSelectContext; var ConsultDateRange: TConsultDateRange): boolean;
+{ displays date range select form for progress Consults and returns a record of the selection }
+var
+  frmConsultsByDate: TfrmConsultsByDate;
+  W, H: Integer;
+  CurrentBegin, CurrentEnd: string;
+begin
+  frmConsultsByDate := TfrmConsultsByDate.Create(Application);
+  try
+    with frmConsultsByDate do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      with radSort do {if SortConsultsAscending then ItemIndex := 0 else} ItemIndex := 1;
+      CurrentBegin := CurrentContext.BeginDate;
+      CurrentEnd := CurrentContext.EndDate;
+      if CurrentBegin <> '' then
+        calBeginDate.Text := CurrentBegin;
+      if CurrentEnd <> '' then
+        calEndDate.Text := CurrentEnd;
+      if calEndDate.Text = '' then calEndDate.Text := 'TODAY';
+      ShowModal;
+      with ConsultDateRange do
+      begin
+        Changed := FChanged;
+        BeginDate := FBeginDate;
+        EndDate := FEndDate;
+        Ascending := FAscending;
+        Result := Changed ;
+      end; {with ConsultDateRange}
+    end; {with frmConsultsByDate}
+  finally
+    frmConsultsByDate.Release;
+  end;
+end;
+
+procedure TfrmConsultsByDate.cmdOKClick(Sender: TObject);
+var
+  bdate, edate: TFMDateTime;
+begin
+  bdate := StrToFMDateTime(calBeginDate.Text);
+  edate   := StrToFMDateTime(calEndDate.Text);
+  if ((bdate > 0) and (edate > 0)) and (bdate <= edate) then
+  begin
+    FChanged := True;
+    FBeginDate := calBeginDate.Text;
+    FEndDate := calEndDate.Text;
+    FAscending := radSort.ItemIndex = 0;
+    Close;
+  end else
+  begin
+    InfoBox(TX_DATE_ERR, TX_DATE_ERR_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+end;
+
+procedure TfrmConsultsByDate.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmConsultsByDate.calBeginDateKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if (Key = #13) then cmdOKClick(Self);
+end;
+
+procedure TfrmConsultsByDate.calEndDateKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if (Key = #13) then cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBS.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBS.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBS.dfm	(revision 1676)
@@ -0,0 +1,121 @@
+inherited frmConsultsByService: TfrmConsultsByService
+  Left = 339
+  Top = 175
+  BorderIcons = []
+  Caption = 'List Consults by Service'
+  ClientHeight = 385
+  ClientWidth = 320
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 320
+    Height = 385
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblService: TLabel
+      Left = 8
+      Top = 8
+      Width = 36
+      Height = 13
+      Caption = 'Service'
+    end
+    object radSort: TRadioGroup
+      Left = 52
+      Top = 289
+      Width = 212
+      Height = 49
+      Caption = 'Sort Order'
+      Items.Strings = (
+        '&Ascending (A-Z)'
+        '&Descending (Z-A)')
+      TabOrder = 2
+    end
+    object cmdOK: TButton
+      Left = 70
+      Top = 350
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 3
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 157
+      Top = 350
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 4
+      OnClick = cmdCancelClick
+    end
+    object treService: TORTreeView
+      Left = 7
+      Top = 57
+      Width = 305
+      Height = 225
+      HideSelection = False
+      Indent = 19
+      ReadOnly = True
+      TabOrder = 1
+      OnChange = treServiceChange
+      Caption = 'Service'
+      NodePiece = 0
+    end
+    object cboService: TORComboBox
+      Left = 8
+      Top = 28
+      Width = 305
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Service'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnKeyPause = cboServiceSelect
+      OnMouseClick = cboServiceSelect
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = treService'
+        'Status = stsDefault')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = frmConsultsByService'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBS.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBS.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBS.pas	(revision 1676)
@@ -0,0 +1,166 @@
+unit fConsultBS;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, StdCtrls, ORFn, ComCtrls, uConsults, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmConsultsByService = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblService: TLabel;
+    radSort: TRadioGroup;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    treService: TORTreeView;
+    cboService: TORComboBox;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure treServiceChange(Sender: TObject; Node: TTreeNode);
+    procedure cboServiceSelect(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FService: string;
+    FServiceName: string;
+    FAscending: Boolean;
+    fConsultUser: boolean ;
+  end;
+
+  TServiceContext = record
+    Changed: Boolean;
+    Service: string;
+    ServiceName: string;
+    Ascending: Boolean;
+    ConsultUser: Boolean ;
+  end;
+
+function SelectService(FontSize: Integer; CurrentContext: TSelectContext; var ServiceContext: TServiceContext): boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rConsults, rCore, uCore;
+
+var
+  SvcList: TStrings ;
+  SvcInfo: string ;
+  uChanging: Boolean;
+
+const
+  TX_SVC_TEXT = 'Select a consult service or press Cancel.';
+  TX_SVC_CAP = 'Missing Service';
+
+function SelectService(FontSize: Integer; CurrentContext: TSelectContext; var ServiceContext: TServiceContext): boolean;
+{ displays service select form for consults and returns a record of the selection }
+var
+  frmConsultsByService: TfrmConsultsByService;
+  W, H, i: Integer;
+  CurrentService: string;
+begin
+  frmConsultsByService := TfrmConsultsByService.Create(Application);
+  try
+    with frmConsultsByService do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      //FastAssign(LoadServiceList(CN_SVC_LIST_DISP), SvcList);                         {RV}
+      FastAssign(LoadServiceListWithSynonyms(CN_SVC_LIST_DISP), SvcList);             {RV}
+      SortByPiece(TStringList(SvcList), U, 2);                                   {RV}
+      for i := 0 to SvcList.Count - 1 do
+        if cboService.Items.IndexOf(Trim(Piece(SvcList.Strings[i], U, 2))) = -1 then   {RV}
+        //if cboService.SelectByID(Piece(SvcList.Strings[i], U, 1)) = -1 then
+          cboService.Items.Add(SvcList.Strings[i]);
+      BuildServiceTree(treService, SvcList, '0', nil) ;
+      with treService do
+        for i := 0 to Items.Count-1 do
+          begin
+            if Items[i].Level > 0 then Items[i].Expanded := False else Items[i].Expanded := True;
+            TopItem := Items[0] ;
+            Selected := Items[0] ;
+          end ;
+      FAscending := CurrentContext.Ascending;
+      radSort.ItemIndex := Ord(not FAscending);
+      CurrentService := CurrentContext.Service;
+      if StrToIntDef(CurrentService, 0) > 0 then
+        begin
+          cboservice.SelectByID(CurrentService);
+          cboServiceSelect(frmConsultsByService);
+        end;
+      ShowModal;
+      with ServiceContext do
+      begin
+        Changed := FChanged;
+        Service := FService;
+        ServiceName := FServiceName;
+        Ascending := FAscending;
+        ConsultUser := FConsultUser ;
+        Result := Changed ;
+      end; {with ServiceContext}
+    end; {with frmConsultsByService}
+  finally
+    frmConsultsByService.Release;
+  end;
+end;
+
+procedure TfrmConsultsByService.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmConsultsByService.cmdOKClick(Sender: TObject);
+begin
+  if (treService.Selected = nil) and (StrToIntDef(FService, 0) = 0 ) then
+  begin
+    InfoBox(TX_SVC_TEXT, TX_SVC_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  FChanged     := True;
+  FService     := Piece(SvcInfo,u,1);
+  FServiceName := Piece(SvcInfo,u,2) ;
+  FAscending   := (radSort.ItemIndex = 0);
+  FConsultUser := ConsultServiceUser(StrToIntDef(FService, 0), User.DUZ) ;
+  Close;
+end;
+
+procedure TfrmConsultsByService.treServiceChange(Sender: TObject;
+  Node: TTreeNode);
+begin
+   if uChanging then Exit;
+   SvcInfo  := TORTreeNode(treService.Selected).StringData ;
+   cboService.ItemIndex := cboService.Items.IndexOf(Trim(treService.Selected.Text));  {RV}
+   //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1));
+end;
+
+procedure TfrmConsultsByService.cboServiceSelect(Sender: TObject);
+var
+  i: integer;
+begin                                                                    
+  uChanging := True;
+  with treService do for i := 0 to Items.Count-1 do
+    begin                                                                
+      if Piece(TORTreeNode(Items[i]).StringData, U, 1) = cboService.ItemID then
+        begin                                                            
+          Selected := Items[i];                                          
+          //treServiceChange(Self, Items[i]);                              
+          break;                                                         
+        end;                                                             
+    end;
+  uChanging := False;
+  SvcInfo  := TORTreeNode(treService.Selected).StringData ;
+end;
+
+initialization
+   SvcList := TStringList.Create ;
+
+finalization
+   SvcList.Free ;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBSt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBSt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBSt.dfm	(revision 1676)
@@ -0,0 +1,95 @@
+inherited frmConsultsByStatus: TfrmConsultsByStatus
+  Left = 286
+  Top = 202
+  BorderIcons = []
+  Caption = 'List Consults by Status'
+  ClientHeight = 205
+  ClientWidth = 308
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 308
+    Height = 205
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblStatus: TLabel
+      Left = 8
+      Top = 8
+      Width = 30
+      Height = 13
+      Caption = 'Status'
+    end
+    object radSort: TRadioGroup
+      Left = 8
+      Top = 148
+      Width = 212
+      Height = 49
+      Caption = 'Sort Order'
+      Items.Strings = (
+        '&Ascending (A-Z)'
+        '&Descending (Z-A)')
+      TabOrder = 1
+    end
+    object lstStatus: TORListBox
+      Left = 8
+      Top = 22
+      Width = 212
+      Height = 118
+      ItemHeight = 13
+      MultiSelect = True
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Status'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object cmdOK: TButton
+      Left = 228
+      Top = 149
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 228
+      Top = 176
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = lstStatus'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmConsultsByStatus'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBSt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBSt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultBSt.pas	(revision 1676)
@@ -0,0 +1,121 @@
+unit fConsultBSt;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, StdCtrls, ORFn, uConsults, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmConsultsByStatus = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblStatus: TLabel;
+    radSort: TRadioGroup;
+    lstStatus: TORListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FStatus: string;
+    FStatusName: string;
+    FAscending: Boolean;
+  end;
+
+  TStatusContext = record
+    Changed: Boolean;
+    Status: string;
+    StatusName: string;
+    Ascending: Boolean;
+  end;
+
+function SelectStatus(FontSize: Integer; CurrentContext: TSelectContext; var StatusContext: TStatusContext): boolean ;
+
+implementation
+
+{$R *.DFM}
+
+uses rConsults, rCore, uCore;
+
+const
+  TX_STAT_TEXT = 'Select a consult status or press Cancel.';
+  TX_STAT_CAP = 'Missing Status';
+
+function SelectStatus(FontSize: Integer; CurrentContext: TSelectContext; var StatusContext: TStatusContext): boolean ;
+{ displays Status select form for consults and returns a record of the selection }
+var
+  frmConsultsByStatus: TfrmConsultsByStatus;
+  W, H, i, j: Integer;
+  CurrentStatus: string;
+begin
+  frmConsultsByStatus := TfrmConsultsByStatus.Create(Application);
+  try
+    with frmConsultsByStatus do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      with radSort do {if SortConsultsAscending then ItemIndex := 0 else} ItemIndex := 1;
+      FastAssign(SubSetOfStatus, lstStatus.Items);
+      CurrentStatus := CurrentContext.Status;
+      if CurrentStatus <> '' then with lstStatus do
+        begin
+          i := 1;
+          while Piece(CurrentStatus, ',', i) <> '' do
+            begin
+              j := SelectByID(Piece(CurrentStatus, ',', i));
+              if j > -1 then Selected[j] := True;
+              Inc(i);
+            end;
+        end;
+      ShowModal;
+      with StatusContext do
+      begin
+        Changed := FChanged;
+        Status := FStatus;
+        StatusName := FStatusName;
+        Ascending := FAscending;
+        Result := Changed ;
+      end; {with StatusContext}
+    end; {with frmConsultsByStatus}
+  finally
+    frmConsultsByStatus.Release;
+  end;
+end;
+
+procedure TfrmConsultsByStatus.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmConsultsByStatus.cmdOKClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if lstStatus.SelCount = 0 then
+   begin
+    InfoBox(TX_STAT_TEXT, TX_STAT_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+   end;
+  FChanged := True;
+  with lstStatus do for i := 0 to Items.Count-1 do if Selected[i] then
+    begin
+      if Piece(Items[i], U, 1) <> '999' then
+        FStatus := FStatus + Piece(Items[i], U, 1) + ','
+      else
+        FStatus := FStatus + Piece(Items[i],U,3) ;
+      FStatusName := FStatusName + DisplayText[i] + ',' ;
+    end;
+  FStatus := Copy(FStatus, 1, Length(FStatus)-1);
+  FStatusName := Copy(FStatusName, 1, Length(FStatusName)-1);
+  FAscending  := radSort.ItemIndex = 0;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsults.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsults.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsults.dfm	(revision 1676)
@@ -0,0 +1,1162 @@
+inherited frmConsults: TfrmConsults
+  Left = 402
+  Top = 80
+  HelpContext = 6000
+  Caption = 'Consults Page'
+  ClientHeight = 421
+  ClientWidth = 715
+  Menu = mnuConsults
+  OnDestroy = FormDestroy
+  OnHide = FormHide
+  OnShow = FormShow
+  ExplicitWidth = 723
+  ExplicitHeight = 467
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 416
+    Width = 715
+    ExplicitTop = 416
+    ExplicitWidth = 715
+  end
+  inherited sptHorz: TSplitter
+    Left = 83
+    Width = 2
+    Height = 416
+    OnCanResize = sptHorzCanResize
+    ExplicitLeft = 83
+    ExplicitWidth = 2
+    ExplicitHeight = 416
+  end
+  inherited pnlRight: TPanel [2]
+    Left = 85
+    Width = 630
+    Height = 416
+    OnExit = pnlRightExit
+    OnResize = pnlRightResize
+    ExplicitLeft = 85
+    ExplicitWidth = 630
+    ExplicitHeight = 416
+    object sptVert: TSplitter
+      Left = 0
+      Top = 350
+      Width = 630
+      Height = 4
+      Cursor = crVSplit
+      Align = alBottom
+    end
+    object pnlRead: TPanel
+      Left = 0
+      Top = 0
+      Width = 630
+      Height = 350
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblTitle: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 630
+        Height = 19
+        Align = alTop
+        Caption = 'Details of Selected Consult'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        HorzOffset = 2
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object memConsult: TRichEdit
+        Left = 0
+        Top = 19
+        Width = 630
+        Height = 331
+        Align = alClient
+        Color = clCream
+        Ctl3D = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Lines.Strings = (
+          
+            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRUSTVWXYZabcdefghijkl' +
+            'mnopqrstuvwxyz12')
+        ParentCtl3D = False
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popNoteMemo
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 0
+        WantReturns = False
+        WordWrap = False
+      end
+    end
+    object memPCEShow: TRichEdit
+      Left = 0
+      Top = 354
+      Width = 630
+      Height = 62
+      Align = alBottom
+      Color = clCream
+      TabOrder = 2
+      WantReturns = False
+    end
+    object pnlResults: TPanel
+      Left = 0
+      Top = 0
+      Width = 630
+      Height = 350
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      OnResize = pnlResultsResize
+      object memResults: TRichEdit
+        Left = 0
+        Top = 67
+        Width = 630
+        Height = 283
+        Align = alClient
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        PopupMenu = popNoteMemo
+        ScrollBars = ssBoth
+        TabOrder = 1
+        WantTabs = True
+        OnChange = memResultChange
+        OnKeyDown = memResultsKeyDown
+      end
+      object pnlFields: TPanel
+        Left = 0
+        Top = 0
+        Width = 630
+        Height = 67
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        OnResize = pnlFieldsResize
+        DesignSize = (
+          630
+          67)
+        object bvlNewTitle: TBevel
+          Left = 5
+          Top = 5
+          Width = 117
+          Height = 15
+        end
+        object lblRefDate: TStaticText
+          Left = 237
+          Top = 6
+          Width = 101
+          Height = 17
+          Hint = 'Press "Change..." to change date/time of note.'
+          Alignment = taCenter
+          Caption = 'Oct 20,1999@15:30'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 3
+        end
+        object lblAuthor: TStaticText
+          Left = 402
+          Top = 6
+          Width = 152
+          Height = 17
+          Hint = 'Press "Change..." to select a different author.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          Caption = 'Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 4
+        end
+        object lblVisit: TStaticText
+          Left = 6
+          Top = 21
+          Width = 204
+          Height = 17
+          Caption = 'Vst: 10/20/99 Pulmonary Clinic, Dr. Welby'
+          ShowAccelChar = False
+          TabOrder = 5
+        end
+        object lblCosigner: TStaticText
+          Left = 307
+          Top = 21
+          Width = 243
+          Height = 13
+          Hint = 'Press "Change..." to select a different cosigner.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          AutoSize = False
+          Caption = 'Expected Cosigner: Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 6
+        end
+        object lblSubject: TStaticText
+          Left = 6
+          Top = 43
+          Width = 43
+          Height = 17
+          Caption = 'Subject:'
+          TabOrder = 7
+        end
+        object lblNewTitle: TStaticText
+          Left = 6
+          Top = 6
+          Width = 119
+          Height = 17
+          Hint = 'Press "Change..." to select a different title.'
+          Caption = ' General Medicine Note '
+          Color = clCream
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentColor = False
+          ParentFont = False
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 2
+        end
+        object cmdChange: TButton
+          Left = 556
+          Top = 6
+          Width = 58
+          Height = 21
+          Anchors = [akTop, akRight]
+          Caption = 'Change...'
+          TabOrder = 0
+          OnClick = cmdChangeClick
+        end
+        object txtSubject: TCaptionEdit
+          Left = 48
+          Top = 40
+          Width = 566
+          Height = 21
+          Hint = 'Subject is limited to a maximum of 80 characters.'
+          Anchors = [akLeft, akTop, akRight]
+          MaxLength = 80
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Text = 'txtSubject'
+          Caption = 'Subject'
+        end
+      end
+    end
+  end
+  inherited pnlLeft: TPanel [3]
+    Width = 83
+    Height = 416
+    OnExit = pnlLeftExit
+    OnResize = pnlLeftResize
+    ExplicitWidth = 83
+    ExplicitHeight = 416
+    object splConsults: TSplitter
+      Left = 0
+      Top = 161
+      Width = 83
+      Height = 3
+      Cursor = crVSplit
+      Align = alTop
+    end
+    object pnlAction: TPanel
+      Left = 0
+      Top = 164
+      Width = 83
+      Height = 231
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      object splDrawers: TSplitter
+        Left = 0
+        Top = 228
+        Width = 83
+        Height = 3
+        Cursor = crVSplit
+        Align = alBottom
+      end
+      object cmdNewConsult: TORAlignButton
+        Left = 0
+        Top = 21
+        Width = 83
+        Height = 21
+        Align = alTop
+        Caption = 'New Consult'
+        Constraints.MinHeight = 21
+        Default = True
+        TabOrder = 1
+        OnClick = cmdNewConsultClick
+        OnExit = cmdNewConsultExit
+      end
+      object cmdNewProc: TORAlignButton
+        Left = 0
+        Top = 42
+        Width = 83
+        Height = 21
+        Align = alTop
+        Caption = 'New Procedure'
+        Constraints.MinHeight = 21
+        TabOrder = 2
+        OnClick = cmdNewProcClick
+      end
+      object cmdEditResubmit: TORAlignButton
+        Left = 0
+        Top = 0
+        Width = 83
+        Height = 21
+        Align = alTop
+        Caption = 'Edit/Resubmit'
+        Constraints.MinHeight = 21
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 0
+        Visible = False
+        OnClick = cmdEditResubmitClick
+        OnExit = cmdEditResubmitExit
+      end
+      object lstNotes: TORListBox
+        Left = 0
+        Top = 63
+        Width = 83
+        Height = 24
+        Style = lbOwnerDrawFixed
+        ItemHeight = 13
+        ParentShowHint = False
+        PopupMenu = popNoteMemo
+        ShowHint = True
+        TabOrder = 4
+        Visible = False
+        OnClick = lstNotesClick
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3'
+        TabPositions = '10'
+      end
+      object tvCsltNotes: TORTreeView
+        Left = 0
+        Top = 63
+        Width = 83
+        Height = 165
+        Align = alClient
+        Constraints.MinWidth = 30
+        HideSelection = False
+        Images = dmodShared.imgNotes
+        Indent = 19
+        PopupMenu = popNoteList
+        ReadOnly = True
+        StateImages = dmodShared.imgImages
+        TabOrder = 3
+        OnChange = tvCsltNotesChange
+        OnClick = tvCsltNotesClick
+        OnCollapsed = tvCsltNotesCollapsed
+        OnDragDrop = tvCsltNotesDragDrop
+        OnDragOver = tvCsltNotesDragOver
+        OnExpanded = tvCsltNotesExpanded
+        OnStartDrag = tvCsltNotesStartDrag
+        Caption = 'Consult Notes'
+        NodePiece = 0
+      end
+    end
+    object cmdPCE: TORAlignButton
+      Left = 0
+      Top = 395
+      Width = 83
+      Height = 21
+      Align = alBottom
+      Caption = 'Encounter'
+      Enabled = False
+      TabOrder = 2
+      Visible = False
+      OnClick = cmdPCEClick
+    end
+    object pnlConsultList: TPanel
+      Left = 0
+      Top = 0
+      Width = 83
+      Height = 161
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblConsults: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 83
+        Height = 19
+        Align = alTop
+        Caption = 'Consults'
+        HorzOffset = 2
+        Transparent = True
+        VertOffset = 6
+        WordWrap = False
+      end
+      object lstConsults: TORListBox
+        Left = 0
+        Top = 19
+        Width = 83
+        Height = 142
+        Align = alClient
+        Ctl3D = True
+        ItemHeight = 13
+        ParentCtl3D = False
+        ParentShowHint = False
+        PopupMenu = popConsultList
+        ShowHint = True
+        TabOrder = 1
+        Visible = False
+        OnClick = lstConsultsClick
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3,4,5'
+        TabPositions = '10,15,42'
+      end
+      object tvConsults: TORTreeView
+        Left = 0
+        Top = 19
+        Width = 83
+        Height = 142
+        Align = alClient
+        HideSelection = False
+        Images = dmodShared.imgConsults
+        Indent = 19
+        PopupMenu = popNoteList
+        ReadOnly = True
+        TabOrder = 0
+        OnClick = tvConsultsClick
+        OnCollapsed = tvConsultsCollapsed
+        OnExit = tvConsultsExit
+        OnExpanded = tvConsultsExpanded
+        OnKeyUp = tvConsultsKeyUp
+        Caption = 'Consults'
+        NodePiece = 0
+        ShortNodeCaptions = True
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlRead'
+        'Status = stsDefault')
+      (
+        'Component = memConsult'
+        'Status = stsDefault')
+      (
+        'Component = memPCEShow'
+        'Status = stsDefault')
+      (
+        'Component = pnlResults'
+        'Status = stsDefault')
+      (
+        'Component = memResults'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = lblRefDate'
+        'Status = stsDefault')
+      (
+        'Component = lblAuthor'
+        'Status = stsDefault')
+      (
+        'Component = lblVisit'
+        'Status = stsDefault')
+      (
+        'Component = lblCosigner'
+        'Status = stsDefault')
+      (
+        'Component = lblSubject'
+        'Status = stsDefault')
+      (
+        'Component = lblNewTitle'
+        'Status = stsDefault')
+      (
+        'Component = cmdChange'
+        'Status = stsDefault')
+      (
+        'Component = txtSubject'
+        'Status = stsDefault')
+      (
+        'Component = pnlAction'
+        'Status = stsDefault')
+      (
+        'Component = cmdNewConsult'
+        'Status = stsDefault')
+      (
+        'Component = cmdNewProc'
+        'Status = stsDefault')
+      (
+        'Component = cmdEditResubmit'
+        'Status = stsDefault')
+      (
+        'Component = lstNotes'
+        'Status = stsDefault')
+      (
+        'Component = tvCsltNotes'
+        'Status = stsDefault')
+      (
+        'Component = cmdPCE'
+        'Status = stsDefault')
+      (
+        'Component = pnlConsultList'
+        'Status = stsDefault')
+      (
+        'Component = lstConsults'
+        'Status = stsDefault')
+      (
+        'Component = tvConsults'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmConsults'
+        'Status = stsDefault'))
+  end
+  object popNoteMemo: TPopupMenu
+    OnPopup = popNoteMemoPopup
+    Left = 589
+    Top = 304
+    object popNoteMemoCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popNoteMemoCutClick
+    end
+    object popNoteMemoCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popNoteMemoCopyClick
+    end
+    object popNoteMemoPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popNoteMemoPasteClick
+    end
+    object popNoteMemoPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popNoteMemoPasteClick
+    end
+    object popNoteMemoReformat: TMenuItem
+      Caption = 'Re&format Paragraph'
+      ShortCut = 24658
+      OnClick = popNoteMemoReformatClick
+    end
+    object popNoteMemoSaveContinue: TMenuItem
+      Caption = 'Save && Continue Editing'
+      ShortCut = 24659
+      Visible = False
+      OnClick = popNoteMemoSaveContinueClick
+    end
+    object Z11: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoFind: TMenuItem
+      Caption = '&Find in Selected Note/Consult'
+      OnClick = popNoteMemoFindClick
+    end
+    object popNoteMemoReplace: TMenuItem
+      Caption = '&Replace Text'
+      OnClick = popNoteMemoReplaceClick
+    end
+    object N14: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      OnClick = popNoteMemoGrammarClick
+    end
+    object popNoteMemoSpell: TMenuItem
+      Caption = 'C&heck Spelling'
+      OnClick = popNoteMemoSpellClick
+    end
+    object N5: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoTemplate: TMenuItem
+      Caption = 'Copy into New &Template'
+      OnClick = popNoteMemoTemplateClick
+    end
+    object Z10: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoSignList: TMenuItem
+      Caption = 'Add to Signature &List'
+      OnClick = mnuActSignatureListClick
+    end
+    object popNoteMemoDelete: TMenuItem
+      Caption = '&Delete Note...'
+      OnClick = mnuActNoteDeleteClick
+    end
+    object popNoteMemoEdit: TMenuItem
+      Caption = '&Edit Note...'
+      OnClick = mnuActNoteEditClick
+    end
+    object popNoteMemoAddend: TMenuItem
+      Caption = '&Make Addendum...'
+      OnClick = mnuActMakeAddendumClick
+    end
+    object popNoteMemoSave: TMenuItem
+      Caption = 'S&ave without Signature'
+      OnClick = mnuActSignatureSaveClick
+    end
+    object popNoteMemoSign: TMenuItem
+      Caption = '&Sign Note Now...'
+      OnClick = mnuActSignatureSignClick
+    end
+    object popNoteMemoAddlSign: TMenuItem
+      Caption = '&Identify Additional Signers'
+      OnClick = popNoteMemoAddlSignClick
+    end
+    object N7: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoPrint: TMenuItem
+      Caption = 'P&rint Note'
+      OnClick = popNoteMemoPrintClick
+    end
+    object N15: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoPreview: TMenuItem
+      Caption = 'Previe&w/Print Current Template'
+      ShortCut = 16471
+      OnClick = popNoteMemoPreviewClick
+    end
+    object popNoteMemoInsTemplate: TMenuItem
+      Caption = 'Insert Current Template'
+      ShortCut = 16429
+      OnClick = popNoteMemoInsTemplateClick
+    end
+    object popNoteMemoEncounter: TMenuItem
+      Caption = 'Edit Encounter Information'
+      ShortCut = 16453
+      OnClick = cmdPCEClick
+    end
+  end
+  object popConsultList: TPopupMenu
+    Left = 523
+    Top = 308
+    object popConsultAll: TMenuItem
+      Tag = 1
+      Caption = '&All Consults'
+      OnClick = mnuViewClick
+    end
+    object popConsultStatus: TMenuItem
+      Tag = 2
+      Caption = 'Consults by Stat&us'
+      OnClick = mnuViewClick
+    end
+    object popConsultService: TMenuItem
+      Tag = 4
+      Caption = 'Consults by &Service'
+      OnClick = mnuViewClick
+    end
+    object popConsultDates: TMenuItem
+      Tag = 5
+      Caption = 'Consults by Date &Range'
+      OnClick = mnuViewClick
+    end
+    object popConsultCustom: TMenuItem
+      Tag = 6
+      Caption = '&Custom View..'
+      OnClick = mnuViewClick
+    end
+  end
+  object mnuConsults: TMainMenu
+    Left = 461
+    Top = 305
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewAll: TMenuItem
+        Tag = 1
+        Caption = '&All Consults'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByStatus: TMenuItem
+        Tag = 2
+        Caption = 'Consults by Stat&us'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByService: TMenuItem
+        Tag = 4
+        Caption = 'Consults by &Service'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByDate: TMenuItem
+        Tag = 5
+        Caption = 'Consults by Date &Range'
+        OnClick = mnuViewClick
+      end
+      object mnuViewCustom: TMenuItem
+        Tag = 6
+        Caption = 'Custo&m View'
+        OnClick = mnuViewClick
+      end
+      object N4: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewSaveAsDefault: TMenuItem
+        Caption = 'Sa&ve as Default View'
+        OnClick = mnuViewSaveAsDefaultClick
+      end
+      object mnuViewReturntoDefault: TMenuItem
+        Caption = 'Return to De&fault View'
+        OnClick = mnuViewReturntoDefaultClick
+      end
+      object N13: TMenuItem
+        Caption = '-'
+      end
+      object mnuIconLegend: TMenuItem
+        Caption = 'Icon Legend'
+        OnClick = mnuIconLegendClick
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      object mnuActNew: TMenuItem
+        Caption = '&New...'
+        Hint = 'Add consults or procedures'
+        object mnuActNewConsultRequest: TMenuItem
+          Tag = 1
+          Caption = '&Consult...'
+          Hint = 'Creates a new consult'
+          OnClick = mnuActNewConsultRequestClick
+        end
+        object mnuActNewProcedure: TMenuItem
+          Tag = 9
+          Caption = '&Procedure...'
+          Hint = 'Creates a new procedure'
+          OnClick = mnuActNewProcedureClick
+        end
+      end
+      object Z2: TMenuItem
+        Caption = '-'
+      end
+      object mnuActConsultRequest: TMenuItem
+        Caption = '&Consult Tracking...'
+        Hint = 'Actions related to the selected consult'
+        object mnuActReceive: TMenuItem
+          Tag = 1
+          Caption = '&Receive'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActSchedule: TMenuItem
+          Tag = 10
+          Caption = 'Schedu&le'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActDeny: TMenuItem
+          Tag = 2
+          Caption = '&Cancel (Deny)'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActEditResubmit: TMenuItem
+          Caption = '&Edit/Resubmit'
+          OnClick = mnuActEditResubmitClick
+        end
+        object mnuActDiscontinue: TMenuItem
+          Tag = 3
+          Caption = '&Discontinue'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActForward: TMenuItem
+          Tag = 4
+          Caption = '&Forward'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActAddComment: TMenuItem
+          Tag = 5
+          Caption = '&Add Comment'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActSigFindings: TMenuItem
+          Tag = 8
+          Caption = '&Significant Findings'
+          OnClick = mnuActConsultClick
+        end
+        object mnuActAdminComplete: TMenuItem
+          Tag = 9
+          Caption = 'Ad&ministrative Complete'
+          OnClick = mnuActConsultClick
+        end
+        object N3: TMenuItem
+          Caption = '-'
+        end
+        object mnuActDisplayDetails: TMenuItem
+          Caption = 'Display De&tails'
+          OnClick = mnuActDisplayDetailsClick
+        end
+        object mnuActDisplayResults: TMenuItem
+          Caption = 'Display Res&ults'
+          OnClick = mnuActDisplayResultsClick
+        end
+        object mnuActDisplaySF513: TMenuItem
+          Caption = 'Display SF &513'
+          OnClick = mnuActDisplaySF513Click
+        end
+        object mnuActPrintSF513: TMenuItem
+          Caption = '&Print SF 513'
+          OnClick = mnuActPrintSF513Click
+        end
+      end
+      object N1: TMenuItem
+        Caption = '-'
+      end
+      object mnuActConsultResults: TMenuItem
+        Caption = 'Consult &Results...'
+        object mnuActComplete: TMenuItem
+          Tag = 6
+          Caption = 'Complete/&Update Results...'
+          ShortCut = 24661
+          OnClick = mnuActCompleteClick
+        end
+        object mnuActMakeAddendum: TMenuItem
+          Tag = 7
+          Caption = '&Make Addendum...'
+          Hint = 'Makes an addendum for the currently selected consult'
+          ShortCut = 24653
+          OnClick = mnuActMakeAddendumClick
+        end
+        object mnuActAddIDEntry: TMenuItem
+          Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+          OnClick = mnuActAddIDEntryClick
+        end
+        object mnuActAttachtoIDParent: TMenuItem
+          Caption = 'Attach to Interdisciplinary Note'
+          OnClick = mnuActAttachtoIDParentClick
+        end
+        object mnuActDetachFromIDParent: TMenuItem
+          Caption = 'Detac&h from Interdisciplinary Note'
+          OnClick = mnuActDetachFromIDParentClick
+        end
+        object N12: TMenuItem
+          Caption = '-'
+        end
+        object mnuActAttachMed: TMenuItem
+          Caption = 'A&ttach Medicine Results'
+          OnClick = mnuActAttachMedClick
+        end
+        object mnuActRemoveMed: TMenuItem
+          Caption = 'Remo&ve Medicine Results'
+          OnClick = mnuActRemoveMedClick
+        end
+        object N9: TMenuItem
+          Caption = '-'
+        end
+        object mnuActChange: TMenuItem
+          Caption = '&Change Title...'
+          ShortCut = 24643
+          OnClick = mnuActChangeClick
+        end
+        object mnuActLoadBoiler: TMenuItem
+          Caption = 'Reload &Boilerplate Text'
+          OnClick = mnuActLoadBoilerClick
+        end
+        object N2: TMenuItem
+          Caption = '-'
+        end
+        object mnuActSignatureList: TMenuItem
+          Caption = 'Add to Signature &List'
+          Hint = 
+            'Adds the currently displayed consult to list of things to be sig' +
+            'ned'
+          OnClick = mnuActSignatureListClick
+        end
+        object mnuActNoteDelete: TMenuItem
+          Caption = '&Delete Note...'
+          ShortCut = 24644
+          OnClick = mnuActNoteDeleteClick
+        end
+        object mnuActNoteEdit: TMenuItem
+          Caption = '&Edit Note...'
+          ShortCut = 24645
+          OnClick = mnuActNoteEditClick
+        end
+        object mnuActSignatureSave: TMenuItem
+          Caption = 'S&ave Without Signature'
+          Hint = 'Saves the consult that is being edited'
+          ShortCut = 24641
+          OnClick = mnuActSignatureSaveClick
+        end
+        object mnuActSignatureSign: TMenuItem
+          Caption = 'Si&gn Note Now...'
+          ShortCut = 24647
+          OnClick = mnuActSignatureSignClick
+        end
+        object mnuActIdentifyAddlSigners: TMenuItem
+          Caption = '&Identify Additional Signers'
+          OnClick = mnuActIdentifyAddlSignersClick
+        end
+        object N8: TMenuItem
+          Caption = '-'
+        end
+        object mnuActNotePrint: TMenuItem
+          Caption = 'P&rint Note'
+          OnClick = mnuActNotePrintClick
+        end
+      end
+    end
+    object mnuOptions: TMenuItem
+      Caption = '&Options'
+      GroupIndex = 4
+      OnClick = mnuOptionsClick
+      object mnuEditTemplates: TMenuItem
+        Caption = 'Edit &Templates...'
+        OnClick = mnuEditTemplatesClick
+      end
+      object mnuNewTemplate: TMenuItem
+        Caption = 'Create &New Template...'
+        OnClick = mnuNewTemplateClick
+      end
+      object N6: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditSharedTemplates: TMenuItem
+        Caption = 'Edit &Shared Templates...'
+        OnClick = mnuEditSharedTemplatesClick
+      end
+      object mnuNewSharedTemplate: TMenuItem
+        Caption = '&Create New Shared Template...'
+        OnClick = mnuNewSharedTemplateClick
+      end
+      object N10: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditDialgFields: TMenuItem
+        Caption = 'Edit Template &Fields'
+        OnClick = mnuEditDialgFieldsClick
+      end
+    end
+  end
+  object timAutoSave: TTimer
+    Enabled = False
+    Interval = 300000
+    OnTimer = timAutoSaveTimer
+    Left = 602
+    Top = 110
+  end
+  object popNoteList: TPopupMenu
+    OnPopup = popNoteListPopup
+    Left = 395
+    Top = 307
+    object popNoteListExpandSelected: TMenuItem
+      Caption = '&Expand Selected'
+      OnClick = popNoteListExpandSelectedClick
+    end
+    object popNoteListExpandAll: TMenuItem
+      Caption = 'E&xpand All'
+      OnClick = popNoteListExpandAllClick
+    end
+    object popNoteListCollapseSelected: TMenuItem
+      Caption = 'C&ollapse Selected'
+      OnClick = popNoteListCollapseSelectedClick
+    end
+    object popNoteListCollapseAll: TMenuItem
+      Caption = 'Co&llapse All'
+      OnClick = popNoteListCollapseAllClick
+    end
+    object N11: TMenuItem
+      Caption = '-'
+    end
+    object popNoteListAddIDEntry: TMenuItem
+      Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+      OnClick = mnuActAddIDEntryClick
+    end
+    object popNoteListAttachtoIDParent: TMenuItem
+      Caption = 'Attach to Interdisciplinary Note'
+      OnClick = mnuActAttachtoIDParentClick
+    end
+    object popNoteListDetachFromIDParent: TMenuItem
+      Caption = 'Detac&h from Interdisciplinary Note'
+      OnClick = mnuActDetachFromIDParentClick
+    end
+  end
+  object dlgFindText: TFindDialog
+    Options = [frDown, frHideUpDown]
+    OnFind = dlgFindTextFind
+    Left = 628
+    Top = 303
+  end
+  object dlgReplaceText: TReplaceDialog
+    OnFind = dlgReplaceTextFind
+    OnReplace = dlgReplaceTextReplace
+    Left = 665
+    Top = 303
+  end
+  object imgLblNotes: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvCsltNotes
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblNotes
+    Left = 16
+    Top = 48
+  end
+  object imgLblImages: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvCsltNotes
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblImages
+    Left = 8
+    Top = 88
+  end
+  object imgLblConsults: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvConsults
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblConsults
+    Left = 56
+    Top = 96
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsults.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsults.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsults.pas	(revision 1676)
@@ -0,0 +1,4744 @@
+unit fConsults;
+{Notes of Intent:
+  Tab Order:
+    The tab order has been custom coded to place the pnlRight in the Tab order
+    right after the tvConsults.  
+}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORDtTm,
+  fHSplit, stdCtrls, ExtCtrls, Menus, ComCtrls, ORCtrls, ORFn, uConsults, rOrders, uPCE,
+  ORClasses, uConst, fDrawers, rTIU, uTIU, uDocTree, RichEdit, fPrintList,
+  VA508AccessibilityManager, fBase508Form, VA508ImageListLabeler;
+
+type
+  TfrmConsults = class(TfrmHSplit)
+    mnuConsults: TMainMenu;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    mnuAct: TMenuItem;
+    Z2: TMenuItem;
+    pnlRead: TPanel;
+    lblTitle: TOROffsetLabel;
+    memConsult: TRichEdit;
+    pnlAction: TPanel;
+    cmdNewConsult: TORAlignButton;
+    Z3: TMenuItem;
+    mnuViewAll: TMenuItem;
+    mnuViewByService: TMenuItem;
+    mnuViewByDate: TMenuItem;
+    mnuViewByStatus: TMenuItem;
+    cmdNewProc: TORAlignButton;
+    N1: TMenuItem;
+    mnuActConsultRequest: TMenuItem;
+    mnuActReceive: TMenuItem;
+    mnuActDeny: TMenuItem;
+    mnuActForward: TMenuItem;
+    mnuActDiscontinue: TMenuItem;
+    mnuActAddComment: TMenuItem;
+    mnuActComplete: TMenuItem;
+    mnuActNew: TMenuItem;
+    mnuActNewConsultRequest: TMenuItem;
+    mnuActNewProcedure: TMenuItem;
+    mnuActSignatureList: TMenuItem;
+    mnuActSignatureSave: TMenuItem;
+    mnuActSignatureSign: TMenuItem;
+    mnuActMakeAddendum: TMenuItem;
+    mnuViewCustom: TMenuItem;
+    pnlResults: TPanel;
+    memResults: TRichEdit;
+    mnuActNoteEdit: TMenuItem;
+    mnuActNoteDelete: TMenuItem;
+    sptVert: TSplitter;
+    memPCEShow: TRichEdit;
+    cmdEditResubmit: TORAlignButton;
+    cmdPCE: TORAlignButton;
+    mnuActConsultResults: TMenuItem;
+    N2: TMenuItem;
+    lstNotes: TORListBox;
+    popNoteMemo: TPopupMenu;
+    popNoteMemoCut: TMenuItem;
+    popNoteMemoCopy: TMenuItem;
+    popNoteMemoPaste: TMenuItem;
+    Z10: TMenuItem;
+    popNoteMemoSignList: TMenuItem;
+    popNoteMemoDelete: TMenuItem;
+    popNoteMemoEdit: TMenuItem;
+    popNoteMemoSave: TMenuItem;
+    popNoteMemoSign: TMenuItem;
+    popConsultList: TPopupMenu;
+    popConsultAll: TMenuItem;
+    popConsultStatus: TMenuItem;
+    popConsultService: TMenuItem;
+    popConsultDates: TMenuItem;
+    popConsultCustom: TMenuItem;
+    mnuActPrintSF513: TMenuItem;
+    N3: TMenuItem;
+    mnuActDisplayDetails: TMenuItem;
+    mnuActDisplayResults: TMenuItem;
+    mnuActDisplaySF513: TMenuItem;
+    mnuActSigFindings: TMenuItem;
+    mnuActAdminComplete: TMenuItem;
+    mnuActIdentifyAddlSigners: TMenuItem;
+    popNoteMemoAddlSign: TMenuItem;
+    Z11: TMenuItem;
+    popNoteMemoSpell: TMenuItem;
+    popNoteMemoGrammar: TMenuItem;
+    mnuActEditResubmit: TMenuItem;
+    N4: TMenuItem;
+    mnuViewSaveAsDefault: TMenuItem;
+    mnuViewReturntoDefault: TMenuItem;
+    splDrawers: TSplitter;
+    N5: TMenuItem;
+    popNoteMemoTemplate: TMenuItem;
+    mnuOptions: TMenuItem;
+    mnuEditTemplates: TMenuItem;
+    mnuNewTemplate: TMenuItem;
+    splConsults: TSplitter;
+    pnlConsultList: TPanel;
+    lblConsults: TOROffsetLabel;
+    lstConsults: TORListBox;
+    N6: TMenuItem;
+    mnuEditSharedTemplates: TMenuItem;
+    mnuNewSharedTemplate: TMenuItem;
+    popNoteMemoPrint: TMenuItem;
+    N7: TMenuItem;
+    N8: TMenuItem;
+    mnuActNotePrint: TMenuItem;
+    timAutoSave: TTimer;
+    pnlFields: TPanel;
+    lblNewTitle: TStaticText;
+    lblRefDate: TStaticText;
+    lblAuthor: TStaticText;
+    lblVisit: TStaticText;
+    lblCosigner: TStaticText;
+    lblSubject: TStaticText;
+    cmdChange: TButton;
+    txtSubject: TCaptionEdit;
+    mnuActSchedule: TMenuItem;
+    popNoteMemoPaste2: TMenuItem;
+    popNoteMemoReformat: TMenuItem;
+    N9: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActLoadBoiler: TMenuItem;
+    bvlNewTitle: TBevel;
+    popNoteMemoSaveContinue: TMenuItem;
+    mnuActAttachMed: TMenuItem;
+    mnuActRemoveMed: TMenuItem;
+    N10: TMenuItem;
+    mnuEditDialgFields: TMenuItem;
+    tvCsltNotes: TORTreeView;
+    popNoteList: TPopupMenu;
+    popNoteListExpandSelected: TMenuItem;
+    popNoteListExpandAll: TMenuItem;
+    popNoteListCollapseSelected: TMenuItem;
+    popNoteListCollapseAll: TMenuItem;
+    N11: TMenuItem;
+    popNoteListDetachFromIDParent: TMenuItem;
+    N12: TMenuItem;
+    mnuActDetachFromIDParent: TMenuItem;
+    mnuActAddIDEntry: TMenuItem;
+    tvConsults: TORTreeView;
+    popNoteListAddIDEntry: TMenuItem;
+    N13: TMenuItem;
+    mnuIconLegend: TMenuItem;
+    dlgFindText: TFindDialog;
+    popNoteMemoFind: TMenuItem;
+    dlgReplaceText: TReplaceDialog;
+    N14: TMenuItem;
+    popNoteMemoReplace: TMenuItem;
+    mnuChartSurgery: TMenuItem;
+    mnuActAttachtoIDParent: TMenuItem;
+    popNoteListAttachtoIDParent: TMenuItem;
+    popNoteMemoAddend: TMenuItem;
+    N15: TMenuItem;
+    popNoteMemoPreview: TMenuItem;
+    popNoteMemoInsTemplate: TMenuItem;
+    popNoteMemoEncounter: TMenuItem;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    imgLblNotes: TVA508ImageListLabeler;
+    imgLblImages: TVA508ImageListLabeler;
+    imgLblConsults: TVA508ImageListLabeler;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure lstConsultsClick(Sender: TObject);
+    procedure pnlRightResize(Sender: TObject);
+    procedure cmdNewConsultClick(Sender: TObject);
+    procedure memResultChange(Sender: TObject);
+    procedure mnuActCompleteClick(Sender: TObject);
+    procedure mnuActAddIDEntryClick(Sender: TObject);
+    procedure mnuActSignatureSaveClick(Sender: TObject);
+    procedure mnuViewClick(Sender: TObject);
+    procedure mnuActSignatureListClick(Sender: TObject);
+    procedure mnuActSignatureSignClick(Sender: TObject);
+    procedure mnuActMakeAddendumClick(Sender: TObject);
+    procedure mnuActDetachFromIDParentClick(Sender: TObject);
+    procedure mnuActAttachtoIDParentClick(Sender: TObject);
+    procedure cmdPCEClick(Sender: TObject);
+    procedure mnuActConsultClick(Sender: TObject);
+    procedure mnuActNewConsultRequestClick(Sender: TObject);
+    procedure mnuActNoteEditClick(Sender: TObject);
+    procedure mnuActNoteDeleteClick(Sender: TObject);
+    procedure lstNotesClick(Sender: TObject);
+    procedure popNoteMemoCutClick(Sender: TObject);
+    procedure popNoteMemoCopyClick(Sender: TObject);
+    procedure popNoteMemoPasteClick(Sender: TObject);
+    procedure popNoteMemoPopup(Sender: TObject);
+    procedure NewPersonNeedData(Sender: TObject; const StartFrom: string;
+       Direction, InsertAt: Integer);
+    procedure cmdNewProcClick(Sender: TObject);
+    procedure mnuActNewProcedureClick(Sender: TObject);
+    procedure mnuActDisplayResultsClick(Sender: TObject);
+    procedure mnuActDisplaySF513Click(Sender: TObject);
+    procedure pnlResultsResize(Sender: TObject);
+    procedure mnuActPrintSF513Click(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure mnuActDisplayDetailsClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure mnuActIdentifyAddlSignersClick(Sender: TObject);
+    procedure popNoteMemoAddlSignClick(Sender: TObject);
+    procedure mnuActEditResubmitClick(Sender: TObject);
+    procedure EnableDisableOrdering;
+    procedure cmdEditResubmitClick(Sender: TObject);
+    procedure popNoteMemoSpellClick(Sender: TObject);
+    procedure popNoteMemoGrammarClick(Sender: TObject);
+    procedure mnuViewSaveAsDefaultClick(Sender: TObject);
+    procedure mnuViewReturntoDefaultClick(Sender: TObject);
+    procedure popNoteMemoTemplateClick(Sender: TObject);
+    procedure mnuEditTemplatesClick(Sender: TObject);
+    procedure mnuNewTemplateClick(Sender: TObject);
+    procedure pnlLeftResize(Sender: TObject);
+    procedure mnuOptionsClick(Sender: TObject);
+    procedure mnuEditSharedTemplatesClick(Sender: TObject);
+    procedure mnuNewSharedTemplateClick(Sender: TObject);
+    procedure popNoteMemoPrintClick(Sender: TObject);
+    procedure mnuActNotePrintClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure timAutoSaveTimer(Sender: TObject);
+    procedure cmdChangeClick(Sender: TObject);
+    procedure pnlFieldsResize(Sender: TObject);
+    procedure popNoteMemoReformatClick(Sender: TObject);
+    procedure mnuActChangeClick(Sender: TObject);
+    procedure mnuActLoadBoilerClick(Sender: TObject);
+    procedure popNoteMemoSaveContinueClick(Sender: TObject);
+    procedure ProcessMedResults(ActionType: string);
+    procedure mnuActAttachMedClick(Sender: TObject);
+    procedure mnuActRemoveMedClick(Sender: TObject);
+    procedure mnuEditDialgFieldsClick(Sender: TObject);
+    procedure tvCsltNotesChange(Sender: TObject; Node: TTreeNode);
+    procedure tvCsltNotesCollapsed(Sender: TObject; Node: TTreeNode);
+    procedure tvCsltNotesExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvCsltNotesStartDrag(Sender: TObject;
+      var DragObject: TDragObject);
+    procedure tvCsltNotesDragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure tvCsltNotesDragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
+    procedure popNoteListExpandSelectedClick(Sender: TObject);
+    procedure popNoteListExpandAllClick(Sender: TObject);
+    procedure popNoteListCollapseSelectedClick(Sender: TObject);
+    procedure popNoteListCollapseAllClick(Sender: TObject);
+    procedure tvCsltNotesClick(Sender: TObject);
+    procedure tvConsultsExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvConsultsCollapsed(Sender: TObject; Node: TTreeNode);
+    procedure tvConsultsClick(Sender: TObject);
+    procedure tvConsultsChange(Sender: TObject; Node: TTreeNode);
+    procedure popNoteListPopup(Sender: TObject);
+    procedure mnuIconLegendClick(Sender: TObject);
+    procedure popNoteMemoFindClick(Sender: TObject);
+    procedure dlgFindTextFind(Sender: TObject);
+    procedure dlgReplaceTextFind(Sender: TObject);
+    procedure dlgReplaceTextReplace(Sender: TObject);
+    procedure popNoteMemoReplaceClick(Sender: TObject);
+    procedure tvConsultsKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memResultsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure sptHorzCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
+    procedure popNoteMemoPreviewClick(Sender: TObject);
+    procedure popNoteMemoInsTemplateClick(Sender: TObject);
+    procedure tvConsultsExit(Sender: TObject);
+    procedure FormHide(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+    procedure pnlLeftExit(Sender: TObject);
+    procedure pnlRightExit(Sender: TObject);
+    procedure cmdEditResubmitExit(Sender: TObject);
+    procedure cmdNewConsultExit(Sender: TObject);
+  private
+    FocusToRightPanel : Boolean;
+    FEditingIndex: Integer;      // TIU index of document being currently edited
+    FChanged: Boolean;
+    FActionType: integer ;
+    FEditCtrl: TCustomEdit;
+    FSilent: Boolean;
+    FCurrentContext: TSelectContext;
+    FDefaultContext: TSelectContext;
+    FCurrentNoteContext: TTIUContext;
+    FOrderID: string;
+    FImageFlag: TBitmap;
+    FEditNote: TEditNoteRec;
+    FVerifyNoteTitle: Integer;
+    FDocList: TStringList;
+    FConfirmed: boolean;
+    FCsltList: TStringList;
+    FDeleted: boolean;
+    FLastNoteID: string;
+    FcmdChangeOKPressed: boolean;
+    FNotifPending: boolean;
+    FOldFramePnlPatientExit: TNotifyEvent;
+    //FMousing: TDateTime;
+    procedure DoLeftPanelCustomShiftTab;
+    procedure frmFramePnlPatientExit(Sender: TObject);
+    procedure DoAutoSave(Suppress: integer = 1);
+    function GetTitleText(AnIndex: Integer): string;
+    //function MakeTitleText(IsAddendum: Boolean = False): string;
+    procedure ClearEditControls;
+    procedure LoadForEdit ;
+    function LacksRequiredForCreate: Boolean;
+    function LacksClinProcFields(AnEditRec: TEditNoteRec; AMenuAccessRec: TMenuAccessRec; var ErrMsg: string): boolean;
+    function LacksClinProcFieldsForSignature(NoteIEN: int64; var ErrMsg: string): boolean;
+    procedure UpdateList;
+    procedure DisplayPCE;
+    procedure CompleteConsult(IsIDChild: boolean; AnIDParent: integer; UseClinProcTitles: boolean);
+    procedure InsertAddendum;
+    procedure SetSubjectVisible(ShouldShow: Boolean);
+    procedure SaveCurrentNote(var Saved: Boolean);
+    procedure SaveEditedConsult(var Saved: Boolean);
+    procedure SetEditingIndex(const Value: Integer);
+    procedure ShowPCEControls(ShouldShow: Boolean);
+    procedure SetActionMenus ;
+    procedure SetResultMenus ;
+    procedure RemovePCEFromChanges(IEN: Integer; AVisitStr: string = '');
+    procedure ProcessNotifications;
+    procedure UMNewOrder(var Message: TMessage);   message UM_NEWORDER;
+    procedure SetViewContext(AContext: TSelectContext);
+    function GetDrawers: TFrmDrawers;
+    function LockConsultRequest(AConsult: Integer): Boolean;
+    function LockConsultRequestAndNote(AnIEN: Int64): Boolean;
+    function StartNewEdit(NewNoteType: integer): Boolean;
+    procedure UnlockConsultRequest(ANote: Int64; AConsult: Integer = 0);
+    function CanFinishReminder: boolean;
+    property EditingIndex: Integer read FEditingIndex write SetEditingIndex;
+    function VerifyNoteTitle: Boolean;
+    procedure UpdateNoteTreeView(DocList: TStringList; Tree: TORTreeView; AContext: integer);
+    procedure EnableDisableIDNotes;
+    procedure LoadConsults;
+    procedure UpdateConsultsTreeView(DocList: TStringList; Tree: TORTreeView);
+    procedure DoAttachIDChild(AChild, AParent: TORTreeNode);
+    function UserIsSigner(NoteIEN: integer): boolean;
+  public
+    function ActiveEditOf(AnIEN: Int64): Boolean;
+    function  AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure SetFontSize(NewFontSize: Integer); override;
+    procedure SaveSignItem(const ItemID, ESCode: string);
+    procedure RequestPrint; override;
+    procedure RequestMultiplePrint(AForm: TfrmPrintList);
+    procedure NotifyOrder(OrderAction: Integer; AnOrder: TOrder); override;
+    function AuthorizedUser: Boolean;
+    procedure AssignRemForm;
+    property OrderID: string read FOrderID;
+    procedure LstConsultsToPrint;
+  published
+    property Drawers: TFrmDrawers read GetDrawers; // Keep Drawers published
+  end;
+
+var
+  frmConsults: TfrmConsults;
+
+const
+  CN_ACT_RECEIVE     =   1 ;
+  CN_ACT_DENY        =   2 ;
+  CN_ACT_DISCONTINUE =   3 ;
+  CN_ACT_FORWARD     =   4 ;
+  CN_ACT_ADD_CMT     =   5 ;
+  CN_ACT_COMPLETE    =   6 ;
+  CN_ACT_ADDENDUM    =   7 ;
+  CN_ACT_SIGFIND     =   8 ;
+  CN_ACT_ADMIN_COMPLETE = 9 ;
+  CN_ACT_SCHEDULE       = 10;
+  CN_ACT_CP_COMPLETE    = 11;
+
+  ActionType: array[1..11] of string = ('Receive Consult','Cancel (Deny) Consult',
+                'Discontinue Consult','Forward Consult','Add Comment to Consult',
+                'Complete Consult', 'Make Addendum to Consult', 'Update Significant Findings',
+                'Administratively Complete', 'Schedule Consult', 'Complete Clinical Procedure') ;
+
+implementation
+
+{$R *.DFM}
+
+uses fVisit, rCore, uCore, rConsults, fConsultBS, fConsultBD, fSignItem,
+     fConsultBSt, fConsultsView, fConsultAct, fEncnt, rPCE, fEncounterFrame,
+     Clipbrd, rReports, fRptBox, fConsult513Prt, fODConsult, fODProc, fCsltNote, fAddlSigners,
+     fOrders, rVitals, fFrame, fNoteDR, fEditProc, fEditConsult, uOrders, rODBase, uSpell, {*KCM*}
+     fTemplateEditor, fNotePrt, fNotes, fNoteProps, fNotesBP, fReminderTree,
+     fReminderDialog, uReminders, fConsMedRslt, fTemplateFieldEditor,
+     dShared, rTemplates, fIconLegend, fNoteIDParents, fNoteCPFields,
+     uTemplates, fTemplateDialog, DateUtils, uVA508CPRSCompatibility, VA508AccessibilityRouter;
+
+const
+  CT_ORDERS =   4;                               // ID for orders tab used by frmFrame
+  EF_VISIT_TYPE = 10;
+  EF_VITALS     = 200;
+  EF_DIAGNOSES  = 20;
+  EF_PROCEDURES = 30;
+  EF_ORDERS     = 100;
+
+  CA_CREATE     = 0;                             // create new consult result
+  CA_SHOW       = 1;                             // show current note
+  CA_SAVECREATE = 2;                             // save current then create
+  CA_EDIT       = 3;                             // save current note, then edit an existing note
+  CA_SAVEEDIT   = 4;
+
+  CN_NEW_RESULT = -30;                           // Holder IEN for a new Consult Result
+  CN_ADDENDUM   = -40;                           // Holder IEN for a new addendum
+
+  NT_ACT_NEW_NOTE  = 2;
+  NT_ACT_ADDENDUM  = 3;
+  NT_ACT_EDIT_NOTE = 4;
+  NT_ACT_ID_ENTRY  = 5;
+
+  ST_DISCONTINUED    = 1  ;
+  ST_COMPLETE        = 2  ;
+  ST_HOLD            = 3  ;
+  ST_FLAGGED         = 4  ;
+  ST_PENDING         = 5  ;
+  ST_ACTIVE          = 6  ;
+  ST_EXPIRED         = 7  ;
+  ST_SCHEDULED       = 8  ;
+  ST_PARTIAL_RESULTS = 9  ;
+  ST_DELAYED         = 10 ;
+  ST_UNRELEASED      = 11 ;
+  ST_CHANGED         = 12 ;
+  ST_CANCELLED       = 13 ;
+  ST_LAPSED          = 14 ;
+  ST_RENEWED         = 15 ;
+  ST_NO_STATUS       = 99 ;
+
+  TYP_PROGRESS_NOTE = 3;
+  TYP_ADDENDUM      = 81;
+  TX_PROV_LOC   = 'A provider and location must be selected before entering orders.';
+  TC_PROV_LOC   = 'Incomplete Information';
+
+  TX_NEED_VISIT = 'A visit is required before creating a new consult result.';
+  TX_NO_VISIT   = 'Insufficient Visit Information';
+  TX_BOILERPLT  = 'You have modified the text of this note.  Changing the title will' +
+                  ' discard the note text.' + CRLF + 'Do you wish to continue?';
+  TX_NEWTITLE   = 'Change Consult Title';
+  TX_REQD_CONSULT  = 'The following information is required to save a Consult Result - ' + CRLF;
+  TX_REQD_ADDM  = 'The following information is required to save an addendum - ' + CRLF;
+  TX_REQ2       = CRLF + CRLF +
+                  'It is recommended that these fields be entered before continuing' + CRLF +
+                  'to prevent losing the note should the application time out.';
+  TX_CREATE_ERR = 'Error Creating Note';
+  TX_UPDATE_ERR = 'Error Updating Note';
+  TX_NO_CONSULT    = 'No note is currently being edited';
+  TX_SAVE_CONSULT  = 'Save Note';
+  TX_ADDEND_NO  = 'Cannot make an addendum to a note that is being edited';
+  TX_DEL_OK     = CRLF + CRLF + 'Delete this note?';
+  TX_DEL_ERR    = 'Unable to Delete note';
+  TX_SIGN       = 'Sign Note';
+  TX_COSIGN     = 'Cosign Note';
+  TX_REQD_COSIG = CRLF + 'Expected Cosigner';
+  TX_REQ_COSIGNER = 'A cosigner must be identified.';
+  TX_SIGN_ERR   = 'Unable to Sign Note';
+  TX_INVALID_CONSULT_CAP = 'Invalid consult record' ;
+  TX_INVALID_CONSULT_TEXT = 'Unable to retrieve the information for this consult.' ;
+  TX_SCREQD     = 'This progress note title requires the service connected questions to be '+
+                  'answered.  The Encounter form will now be opened.  Please answer all '+
+                  'service connected questions.';
+  TX_SCREQD_T   = 'Response required for SC questions.';
+  TX_NOPRT_NEW  = 'This consult may not be printed until the current note is saved';
+  TX_NOPRT_NEW_CAP = 'Save Consult Result';
+  TX_NOCONSULT     = 'No consult is currently selected.';
+  TX_NOCSLT_CAP = 'No Consult Selected';
+  TX_NONOTE     = 'No note is currently selected.';
+  TX_NONOTE_CAP = 'No Note Selected';
+  TX_NO_ORDER   = 'Ordering has been disabled.';
+  TX_NO_ORDER_CAP = 'Unable to place order';
+  TX_PROV_KEY   = 'The provider selected for this encounter must' + CRLF +
+                  'hold the PROVIDER key to enter orders.';
+  TC_PROV_KEY   = 'PROVIDER Key Required';
+  TX_NOKEY   = 'You do not have the keys required to take this action.';
+  TC_NOKEY   = 'Insufficient Authority';
+  TX_BADKEYS = 'You have mutually exclusive order entry keys (ORES, ORELSE, or OREMAS).' +
+               CRLF + 'This must be resolved before you can enter orders.';
+  TC_BADKEYS = 'Multiple Keys';
+  TX_NO_FUTURE_DT = 'A Reference Date/Time in the future is not allowed.';
+  TX_ORDER_LOCKED = 'This record is locked by an action underway on the Notes tab';
+  TC_ORDER_LOCKED = 'Unable to access record';
+  TC_NO_RESUBMIT  = 'Unable to resubmit';
+  TX_NO_ORD_CHG   = 'The note is still associated with the previously selected request.' + CRLF +
+                    'Finish the pending action, then try again.';
+  TC_NO_ORD_CHG   = 'Locked Consult Request';
+  TX_NEW_SAVE1    = 'You are currently editing:' + CRLF + CRLF;
+  TX_NEW_SAVE2    = CRLF + CRLF + 'Do you wish to save this note and begin a new one?';
+  TX_NEW_SAVE3    = CRLF + CRLF + 'Do you wish to save this note and begin a new addendum?';
+  TX_NEW_SAVE4    = CRLF + CRLF + 'Do you wish to save this note and edit the one selected?';
+  TX_NEW_SAVE5    = CRLF + CRLF + 'Do you wish to save this note and begin a new Interdisciplinary entry?';
+  TC_NEW_SAVE2    = 'Create New Note';
+  TC_NEW_SAVE3    = 'Create New Addendum';
+  TC_NEW_SAVE4    = 'Edit Different Note';
+  TC_NEW_SAVE5    = 'Create New Interdisciplinary Entry';
+  TX_EMPTY_NOTE   = CRLF + CRLF + 'This note contains no text and will not be saved.' + CRLF +
+                    'Do you wish to delete this note?';
+  TC_EMPTY_NOTE   = 'Empty Note';
+  TX_EMPTY_NOTE1   = 'This note contains no text and can not be signed.';
+  TC_NO_LOCK      = 'Unable to Lock Note';
+  TX_ABSAVE       = 'It appears the session terminated abnormally when this' + CRLF +
+                    'note was last edited. Some text may not have been saved.' + CRLF + CRLF +
+                    'Do you wish to continue and sign the note?';
+  TC_ABSAVE       = 'Possible Missing Text';
+  TX_NO_BOIL      = 'There is no boilerplate text associated with this title.';
+  TC_NO_BOIL      = 'Load Boilerplate Text';
+  TX_BLR_CLEAR    = 'Do you want to clear the previously loaded boilerplate text?';
+  TC_BLR_CLEAR    = 'Clear Previous Boilerplate Text';
+  TX_CP_NO_RESULTS = 'This Clinical Procedure cannot be completed yet.' + CRLF +
+                     'No results are available for interpretation.';
+  TC_CP_NO_RESULTS = 'No Results Available';
+  TX_CLIN_PROC     = 'A procedure summary code and valid date/time for the procedure must be entered.';
+  TX_NO_AUTHOR     = 'An author must be entered for the note.';
+  TC_CLIN_PROC     = 'Missing Information for Clinical Procedures Document';
+  TX_DETACH_CNF     = 'Confirm Detachment';
+  TX_DETACH_FAILURE = 'Detach failed';
+
+  DLG_CONSULT = 'C';
+  DLG_PROC    = 'P';
+  TX_RETRACT_CAP    = 'Retraction Notice';
+  TX_RETRACT        = 'This document will now be RETRACTED.  As Such, it has been removed' +CRLF +
+                      ' from public view, and from typical Releases of Information,' +CRLF +
+                      ' but will remain indefinitely discoverable to HIMS.' +CRLF +CRLF;
+  TX_AUTH_SIGNED    = 'Author has not signed, are you SURE you want to sign.' +CRLF;
+
+var
+  ViewContext, CurrNotifIEN: integer ;
+  SvcCtxt: TServiceContext;
+  StsCtxt: TStatusContext ;
+  DateRange: TConsultDateRange;
+  uSelectContext: TSelectContext  ;
+  uPCEShow, uPCEEdit:  TPCEData;
+  frmDrawers: TfrmDrawers;
+  MenuAccessRec: TMenuAccessRec;
+  MedResult: TMedResultRec;
+  uChanging: Boolean;
+  uIDNotesActive: boolean;
+
+{ TPage common methods --------------------------------------------------------------------- }
+
+function TfrmConsults.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  dlgFindText.CloseDialog;
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  if Assigned(frmTemplateDialog) then
+    if Screen.ActiveForm = frmTemplateDialog then
+    //if (fsModal in frmTemplateDialog.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'A template in progress will be aborted.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmTemplateDialog.Silent := True;
+                 frmTemplateDialog.ModalResult := mrCancel;
+               end;
+           end;
+    end;
+  if EditingIndex <> -1 then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+    '1': begin
+             if memResults.GetTextLen > 0 then
+               WhyNot := WhyNot + 'A note in progress will be saved as unsigned.  '
+             else
+               WhyNot := WhyNot + 'An empty note in progress will be deleted.  ';
+           Result := False;
+         end;
+    '0': begin
+           if WhyNot = 'COMMIT' then FSilent := True;
+           SaveCurrentNote(Result);
+         end;
+  end;
+  if Assigned(frmEncounterFrame) then
+    if Screen.ActiveForm = frmEncounterFrame then
+    //if (fsModal in frmEncounterFrame.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := WhyNot + 'Encounter information being edited will not be saved';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmEncounterFrame.Abort := False;
+                 frmEncounterFrame.Cancel := True;
+               end;
+           end;
+    end;
+end;
+
+procedure TfrmConsults.ClearPtData;
+{ clear all controls that contain patient specific information }
+begin
+  inherited ClearPtData;
+  ClearEditControls;
+  lstConsults.Clear;
+  memConsult.Clear;
+  memResults.Clear;
+  uChanging := True;
+  tvCsltNotes.Items.BeginUpdate;
+  KillDocTreeObjects(tvCsltNotes);
+  tvCsltNotes.Items.Clear;
+  tvCsltNotes.Items.EndUpdate;
+  tvConsults.Items.BeginUpdate;
+  tvConsults.Items.Clear;
+  tvConsults.Items.EndUpdate;
+  uChanging := False;
+  lstNotes.Clear ;
+  memPCEShow.Clear;
+  uPCEShow.Clear;
+  frmDrawers.ResetTemplates;
+  FOrderID := '';
+end;
+
+procedure TfrmConsults.SetViewContext(AContext: TSelectContext);
+var
+  Saved: boolean;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FCurrentContext := AContext;
+  CurrNotifIEN := 0;
+  EditingIndex := -1;
+  tvConsults.Enabled := True;
+  lstConsults.Enabled := True ;
+  lstNotes.Enabled := True ;
+  pnlRead.BringToFront ;
+  memConsult.TabStop := True;
+  with uSelectContext do
+    begin
+      BeginDate := FCurrentContext.BeginDate;
+      EndDate   := FCurrentContext.EndDate;
+      Status    := FCurrentContext.Status;
+      Service   := FCurrentContext.Service;
+      Ascending := FCurrentContext.Ascending;
+      GroupBy   := FCurrentContext.GroupBy;
+      Changed   := True;
+      mnuViewClick(Self);
+    end;
+end;
+
+procedure TfrmConsults.DisplayPage;
+{ causes page to be visible and conditionally executes initialization code }
+begin
+  inherited DisplayPage;
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+  frmFrame.mnuFilePrint.Tag := CT_CONSULTS;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  frmFrame.mnuFilePrintSelectedItems.Enabled := True;
+  FNotifPending := False;
+  if InitPage then
+  begin
+    FDefaultContext := GetCurrentContext;
+    FCurrentContext := FDefaultContext;
+    popNoteMemoSpell.Visible   := SpellCheckAvailable;
+    popNoteMemoGrammar.Visible := popNoteMemoSpell.Visible;
+    Z11.Visible                := popNoteMemoSpell.Visible;
+    timAutoSave.Interval := User.AutoSave * 1000;  // convert seconds to milliseconds
+    SetEqualTabStops(memResults);
+  end;
+  cmdEditResubmit.Visible := False;
+  EnableDisableIDNotes;
+  EnableDisableOrdering;
+  if InitPage then SendMessage(memConsult.Handle, EM_SETMARGINS, EC_LEFTMARGIN, 4);
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+    begin
+      SetViewContext(FDefaultContext);
+    end;
+  case CallingContext of
+    CC_INIT_PATIENT: if not InitPatient then
+                       begin
+                         SetViewContext(FDefaultContext);
+                       end;
+    CC_NOTIFICATION:  ProcessNotifications;
+  end;
+  //with tvConsults do if Selected <> nil then tvConsultsChange(Self, Selected);   
+end;
+
+procedure TfrmConsults.SetFontSize(NewFontSize: Integer);
+{ adjusts the font size of any controls that don't have ParentFont = True }
+begin
+  inherited SetFontSize(NewFontSize);
+  memConsult.Font.Size  := NewFontSize;
+  memResults.Font.Size  := NewFontSize;
+  lblTitle.Font.Size    := NewFontSize;
+  frmDrawers.Font.Size  := NewFontSize;
+  SetEqualTabStops(memResults);
+  // adjust heights of pnlAction, pnlFields, and memPCEShow
+end;
+
+procedure TfrmConsults.mnuChartTabClick(Sender: TObject);
+{ reroute to Chart Tab menu of the parent form: frmFrame }
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+{ General procedures ----------------------------------------------------------------------- }
+
+procedure TfrmConsults.ClearEditControls;
+begin
+  // clear FEditNote (should FEditNote be an object with a clear method?)
+  with FEditNote do
+  begin
+    DocType      := 0;
+    Title        := 0;
+    TitleName    := '';
+    DateTime     := 0;
+    Author       := 0;
+    AuthorName   := '';
+    Cosigner     := 0;
+    CosignerName := '';
+    Subject      := '';
+    Location     := 0;
+    LocationName := '';
+    //Consult      := 0;
+    PkgRef       := '';
+    PkgIEN       := 0;
+    PkgPtr       := '';
+    NeedCPT      := False;
+    Addend       := 0;
+    Lines        := nil;
+  end;
+  // clear the editing controls (also clear the new labels?)
+  txtSubject.Text := '';
+  memResults.Clear;
+  timAutoSave.Enabled := False;
+  // clear the PCE object for editing
+  uPCEEdit.Clear;
+  // set the tracking variables to initial state
+  EditingIndex := -1;
+  frmConsults.ActiveControl := nil;
+  ShowPCEControls(FALSE);
+  FChanged := False;
+end;
+
+procedure TfrmConsults.CompleteConsult(IsIDChild: boolean; AnIDParent: integer; UseClinProcTitles: boolean);
+{ creates the editing context for a new progress note & inserts stub into top of view list }
+const
+  USE_CURRENT_VISITSTR = -2;
+var
+  EnableAutosave, HaveRequired: Boolean;
+  CreatedNote: TCreatedDoc;
+  TmpBoilerPlate: TStringList;
+  x, WhyNot: string;
+  tmpNode: TTreeNode;
+  AClassName: string;
+  DocInfo: string;
+begin
+  EnableAutosave := FALSE;
+  TmpBoilerPlate := nil;
+  try
+    ClearEditControls;
+    tvConsults.Enabled := False;
+    lstConsults.Enabled := False ;
+    FillChar(FEditNote, SizeOf(FEditNote), 0);  //v15.7
+    with FEditNote do
+    begin
+      if UseClinProcTitles then
+        begin
+          DocType      := IdentifyClinProcClass;
+          Title        := DfltClinProcTitle;
+          TitleName    := DfltClinProcTitleName;
+          AClassName   := DCL_CLINPROC;
+        end
+      else
+        begin
+          DocType      := TYP_PROGRESS_NOTE;
+          Title        := DfltConsultTitle;
+          TitleName    := DfltConsultTitleName;
+          AClassName   := DCL_CONSULTS
+        end;
+      if IsIDChild and (not CanTitleBeIDChild(Title, WhyNot)) then
+        begin
+          Title := 0;
+          TitleName := '';
+        end;
+      DateTime     := FMNow;
+      Author       := User.DUZ;
+      AuthorName   := User.Name;
+      Location     := Encounter.Location;
+      LocationName := Encounter.LocationName;                                           
+      VisitDate    := Encounter.DateTime;
+      if IsIDChild then
+        IDParent   := AnIDParent
+      else
+        IDParent   := 0;
+      PkgRef       := lstConsults.ItemID + ';' + PKG_CONSULTS;
+      PkgIEN       := lstConsults.ItemIEN;
+      PkgPtr       := PKG_CONSULTS;
+      // Cosigner, if needed, will be set by fNoteProps
+    end;
+    // check to see if interaction necessary to get required fields
+    if LacksRequiredForCreate or VerifyNoteTitle
+      then HaveRequired := ExecuteNoteProperties(FEditNote, CT_CONSULTS, IsIDChild, False, AClassName,
+                              MenuAccessRec.ClinProcFlag)
+      else HaveRequired := True;
+    // lock the consult request if there is a consult
+    if FEditNote.PkgIEN > 0 then HaveRequired := HaveRequired and LockConsultRequest(FEditNote.PkgIEN);
+    if HaveRequired then
+      begin
+        // set up uPCEEdit for entry of new note
+        uPCEEdit.UseEncounter := True;
+        uPCEEdit.NoteDateTime := FEditNote.DateTime;
+        uPCEEdit.PCEForNote(USE_CURRENT_VISITSTR, uPCEShow);
+        FEditNote.NeedCPT  := uPCEEdit.CPTRequired;
+         // create the note
+        PutNewNote(CreatedNote, FEditNote);
+        uPCEEdit.NoteIEN := CreatedNote.IEN;
+        if CreatedNote.IEN > 0 then LockDocument(CreatedNote.IEN, CreatedNote.ErrorText);
+        if CreatedNote.ErrorText = '' then
+          begin
+            if lstNotes.DisplayText[0] = 'None' then
+              begin
+                uChanging := True;
+                tvCsltNotes.Items.BeginUpdate;
+                lstNotes.Items.Clear;
+                KillDocTreeObjects(tvCsltNotes);
+                tvCsltNotes.Items.Clear;
+                tvCsltNotes.Items.EndUpdate;
+                uChanging := False;
+              end;
+            with FEditNote do
+              begin
+                x := IntToStr(CreatedNote.IEN) + U + TitleName + U + FloatToStr(DateTime) + U +
+                     Patient.Name + U + IntToStr(Author) + ';' + AuthorName + U + LocationName + U + 'new' + U +
+                     'Adm: ' + FormatFMDateTime('mmm dd,yyyy', VisitDate) + ';' + FloatToStr(VisitDate) + U + U +
+                     U + U + U + U + U + U;
+              end;
+            lstNotes.Items.Insert(0, x);
+            uChanging := True;
+            tvCsltNotes.Items.BeginUpdate;
+            if IsIDChild then
+              begin
+                tmpNode := tvCsltNotes.FindPieceNode(IntToStr(AnIDParent), 1, U, tvCsltNotes.Items.GetFirstNode);
+                tmpNode.ImageIndex := IMG_IDNOTE_OPEN;
+                tmpNode.SelectedIndex := IMG_IDNOTE_OPEN;
+                tmpNode := tvCsltNotes.Items.AddChildObjectFirst(tmpNode, MakeConsultNoteDisplayText(x), MakeNoteTreeObject(x));
+                tmpNode.ImageIndex := IMG_ID_CHILD;
+                tmpNode.SelectedIndex := IMG_ID_CHILD;
+              end
+            else
+              begin
+                tmpNode := tvCsltNotes.Items.AddObjectFirst(tvCsltNotes.Items.GetFirstNode, 'New Note in Progress',
+                                                        MakeNoteTreeObject('NEW^New Note in Progress^^^^^^^^^^^%^0'));
+                TORTreeNode(tmpNode).StringData := 'NEW^New Note in Progress^^^^^^^^^^^%^0';
+                tmpNode.ImageIndex := IMG_TOP_LEVEL;
+                tmpNode := tvCsltNotes.Items.AddChildObjectFirst(tmpNode, MakeConsultNoteDisplayText(x), MakeNoteTreeObject(x));
+                tmpNode.ImageIndex := IMG_SINGLE;
+                tmpNode.SelectedIndex := IMG_SINGLE;
+              end;
+            tmpNode.StateIndex := IMG_NO_IMAGES;
+            TORTreeNode(tmpNode).StringData := x;
+            tvCsltNotes.Selected := tmpNode;
+            tvCsltNotes.Items.EndUpdate;
+            uChanging := False;
+
+            Changes.Add(CH_CON, IntToStr(CreatedNote.IEN), GetTitleText(0), '', CH_SIGN_YES);
+            lstNotes.ItemIndex := 0;
+            EditingIndex := 0;
+            SetSubjectVisible(AskSubjectForNotes);
+            if not assigned(TmpBoilerPlate) then
+              TmpBoilerPlate := TStringList.Create;
+            LoadBoilerPlate(TmpBoilerPlate, FEditNote.Title);
+            FChanged := False;
+            cmdChangeClick(Self); // will set captions, sign state for Changes
+            lstNotesClick(Self);  // will make pnlWrite visible
+            if timAutoSave.Interval <> 0 then EnableAutosave := TRUE;
+            if txtSubject.Visible then txtSubject.SetFocus else memResults.SetFocus;
+          end
+        else  //  CreatedNote.ErrorText <> ''
+          begin
+            // if note creation failed or failed to get note lock (both unlikely), unlock consult
+            if FEditNote.PkgIEN > 0 then UnlockConsultRequest(0, FEditNote.PkgIEN);
+            //if FEditNote.Consult > 0 then UnlockConsultRequest(0, FEditNote.Consult);
+            if CreatedNote.ErrorText <> '' then
+              InfoBox(CreatedNote.ErrorText, TX_CREATE_ERR, MB_OK);
+            HaveRequired := False;
+          end; {if CreatedNote.IEN}
+      end; {if HaveRequired}
+    if not HaveRequired then
+      begin
+        ClearEditControls;
+        lstConsults.Enabled := True;
+        tvConsults.Enabled := True;
+      end;
+    SetResultMenus ;
+  finally
+    if assigned(TmpBoilerPlate) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(CreatedNote.IEN), FEditNote);
+      ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+      QuickCopyWith508Msg(TmpBoilerPlate, memResults);
+      TmpBoilerPlate.Free;
+    end;
+    if EnableAutosave then // Don't enable autosave until after dialog fields have been resolved
+      timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmConsults.InsertAddendum;
+{ sets up fields of pnlWrite to write an addendum for the selected note }
+const
+  AS_ADDENDUM = True;
+  IS_ID_CHILD = False;
+var
+  HaveRequired: Boolean;
+  CreatedNote: TCreatedDoc;
+  x: string;
+  tmpNode: TTreeNode;
+  AClassName: string;
+begin
+  AClassName := DCL_CONSULTS;
+  ClearEditControls;
+  lstConsults.Enabled := False ;
+  tvConsults.Enabled := False;
+  with FEditNote do
+  begin
+    DocType      := TYP_ADDENDUM;
+    Title        := TitleForNote(lstNotes.ItemIEN);
+    TitleName    := Piece(lstNotes.Items[lstNotes.ItemIndex], U, 2);
+    DateTime     := FMNow;
+    Author       := User.DUZ;
+    AuthorName   := User.Name;
+    x            := GetPackageRefForNote(lstNotes.ItemIEN);
+    if Piece(x, U, 1) <> '-1' then
+      begin
+        PkgRef       := GetPackageRefForNote(lstNotes.ItemIEN);
+        PkgIEN       := StrToIntDef(Piece(PkgRef, ';', 1), 0);
+        PkgPtr       := Piece(PkgRef, ';', 2);
+      end;
+    Addend       := lstNotes.ItemIEN;
+    // Cosigner, if needed, will be set by fNoteProps
+    // Location info will be set after the encounter is loaded
+  end;
+  // check to see if interaction necessary to get required fields
+  if LacksRequiredForCreate
+    then HaveRequired := ExecuteNoteProperties(FEditNote, CT_CONSULTS, IS_ID_CHILD,
+                           False, AClassName, MenuAccessRec.ClinProcFlag)
+    else HaveRequired := True;
+  // lock the consult request if there is a consult
+  if HaveRequired and (FEditNote.PkgIEN > 0) then
+    HaveRequired := LockConsultRequest(FEditNote.PkgIEN);
+  if HaveRequired then
+  begin
+    uPCEEdit.NoteDateTime := FEditNote.DateTime;
+    uPCEEdit.PCEForNote(FEditNote.Addend, uPCEShow);
+    FEditNote.Location     := uPCEEdit.Location;
+    FEditNote.LocationName := ExternalName(uPCEEdit.Location, 44);
+    FEditNote.VisitDate    := uPCEEdit.DateTime;
+    PutAddendum(CreatedNote, FEditNote, FEditNote.Addend);
+    uPCEEdit.NoteIEN := CreatedNote.IEN;
+    if CreatedNote.IEN > 0 then LockDocument(CreatedNote.IEN, CreatedNote.ErrorText);
+    if CreatedNote.ErrorText = '' then
+    begin
+      with FEditNote do
+        begin
+          x := IntToStr(CreatedNote.IEN) + U + 'Addendum to ' + TitleName + U + FloatToStr(DateTime) + U +
+               Patient.Name + U + IntToStr(Author) + ';' + AuthorName + U + LocationName + U + 'new' + U +
+               U + U + U + U + U + U + U + U;
+        end;
+      lstNotes.Items.Insert(0, x);
+
+      uChanging := True;
+      tvCsltNotes.Items.BeginUpdate;
+      tmpNode := tvCsltNotes.Items.AddObjectFirst(tvCsltNotes.Items.GetFirstNode, 'New Addendum in Progress',
+                                              MakeConsultsNoteTreeObject('ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_TOP_LEVEL;
+      tmpNode := tvCsltNotes.Items.AddChildObjectFirst(tmpNode, MakeConsultNoteDisplayText(x), MakeConsultsNoteTreeObject(x));
+      TORTreeNode(tmpNode).StringData := x;
+      tmpNode.ImageIndex := IMG_ADDENDUM;
+      tmpNode.SelectedIndex := IMG_ADDENDUM;
+      tvCsltNotes.Selected := tmpNode;
+      tvCsltNotes.Items.EndUpdate;
+      uChanging := False;
+
+      Changes.Add(CH_CON, IntToStr(CreatedNote.IEN), GetTitleText(0), '', CH_SIGN_YES);
+      lstNotes.ItemIndex := 0;
+      EditingIndex := 0;
+      SetSubjectVisible(AskSubjectForNotes);
+      cmdChangeClick(Self); // will set captions, sign state for Changes
+      lstNotesClick(Self);  // will make pnlWrite visible
+      if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+      memResults.SetFocus;
+    end else
+    begin
+      // if note creation failed or failed to get note lock (both unlikely), unlock consult
+      if FEditNote.PkgIEN > 0 then UnlockConsultRequest(0, FEditNote.PkgIEN);
+      //if FEditNote.Consult > 0 then UnlockConsultRequest(0, FEditNote.Consult);
+      InfoBox(CreatedNote.ErrorText, TX_CREATE_ERR, MB_OK);
+      HaveRequired := False;
+      lstConsults.Enabled := True;
+      tvConsults.Enabled := True;
+    end; {if CreatedNote.IEN}
+  end; {if HaveRequired}
+  if not HaveRequired then ClearEditControls;
+  SetResultMenus ;
+end;
+
+procedure TfrmConsults.LoadForEdit;
+{ retrieves an existing note and places the data in the fields of pnlWrite }
+var
+  tmpNode: TTreeNode;
+  x: string;
+  ErrMsg: string;
+  AnAuthor: int64;
+  AProcSummCode: integer;
+  AProcDate: TFMDateTime;
+  tmpBoilerplate: TStringList;
+  EnableAutoSave: boolean;
+  DocInfo: string;
+begin
+  ClearEditControls;
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  EnableAutosave := FALSE;
+  tmpBoilerplate := nil;
+  try
+    EditingIndex := lstNotes.ItemIndex;
+    Changes.Add(CH_CON, lstNotes.ItemID, GetTitleText(EditingIndex), '', CH_SIGN_YES);
+    GetNoteForEdit(FEditNote, lstNotes.ItemIEN);
+    memResults.Lines.Assign(FEditNote.Lines);
+    FChanged := False;
+    if FEditNote.Title = TYP_ADDENDUM then
+    begin
+      FEditNote.DocType := TYP_ADDENDUM;
+      FEditNote.TitleName := Piece(lstNotes.Items[lstNotes.ItemIndex], U, 2);
+      if Copy(FEditNote.TitleName,1,1) = '+' then FEditNote.TitleName := Copy(FEditNote.TitleName, 3, 199);
+      if CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0
+        then FEditNote.TitleName := FEditNote.TitleName + 'Addendum to ';
+    end;
+    uChanging := True;
+    tvCsltNotes.Items.BeginUpdate;
+    tmpNode := tvCsltNotes.FindPieceNode('EDIT', 1, U, nil);
+    if tmpNode = nil then
+      begin
+        tmpNode := tvCsltNotes.Items.AddObjectFirst(tvCsltNotes.Items.GetFirstNode, 'Note being edited',
+                                                MakeConsultsNoteTreeObject('EDIT^Note being edited^^^^^^^^^^^%^0'));
+        TORTreeNode(tmpNode).StringData := 'EDIT^Note being edited^^^^^^^^^^^%^0';
+      end
+    else
+      tmpNode.DeleteChildren;
+    x := lstNotes.Items[lstNotes.ItemIndex];
+    tmpNode.ImageIndex := IMG_TOP_LEVEL;
+    tmpNode := tvCsltNotes.Items.AddChildObjectFirst(tmpNode, MakeConsultNoteDisplayText(x), MakeConsultsNoteTreeObject(x));
+    TORTreeNode(tmpNode).StringData := x;
+    if CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0 then
+      tmpNode.ImageIndex := IMG_SINGLE
+    else
+      tmpNode.ImageIndex := IMG_ADDENDUM;
+    tmpNode.SelectedIndex := tmpNode.ImageIndex;
+    tvCsltNotes.Selected := tmpNode;
+    tvCsltNotes.Items.EndUpdate;
+    uChanging := False;
+
+    uPCEEdit.NoteDateTime := MakeFMDateTime(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+    uPCEEdit.PCEForNote(lstNotes.ItemIEN, uPCEShow);
+    FEditNote.NeedCPT := uPCEEdit.CPTRequired;
+    txtSubject.Text := FEditNote.Subject;
+    SetSubjectVisible(AskSubjectForNotes);
+    if MenuAccessRec.IsClinicalProcedure and LacksClinProcFields(FEditNote, MenuAccessRec, ErrMsg) then
+      begin
+        // **** Collect Author, ClinProcSummCode, and ClinProcDate    ****
+         AnAuthor := FEditNote.Author;
+         AProcSummCode := FEditNote.ClinProcSummCode;
+         AProcDate := FEditNote.ClinProcDateTime;
+         EnterClinProcFields(MenuAccessRec.ClinProcFlag, ErrMsg, AProcSummCode, AProcDate, AnAuthor);
+        // **** set values into FEditNote ****
+         FEditNote.Author           := AnAuthor;
+         FEditNote.ClinProcSummCode := AProcSummCode;
+         FEditNote.ClinProcDateTime := AProcDate;
+      end;
+  (*  if LacksClinProcFields(ErrMsg) then
+      begin
+        // **** Collect Author, Cosigner (if required), ClinProcSummCode, and ClinProcDate    ****
+        EnterClinProcFields(MenuAccessRec.ClinProcFlag, ErrMsg, FEditNote);
+      end;*)
+    if MenuAccessRec.IsClinicalProcedure and (memResults.Lines.Text = '') then
+    begin
+      if not assigned(TmpBoilerPlate) then
+        TmpBoilerPlate := TStringList.Create;
+      LoadBoilerPlate(TmpBoilerPlate, FEditNote.Title);
+    end;
+    if frmFrame.Closing then exit;
+    cmdChangeClick(Self); // will set captions, sign state for Changes
+    lstNotesClick(Self);  // will make pnlWrite visible
+    if timAutoSave.Interval <> 0 then EnableAutosave := TRUE;
+    memResults.SetFocus;
+  finally
+    if assigned(TmpBoilerPlate) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(lstNotes.ItemIEN), FEditNote);
+      ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+      QuickCopyWith508Msg(TmpBoilerPlate, memResults);
+      TmpBoilerPlate.Free;
+    end;
+    if EnableAutosave then // Don't enable autosave until after dialog fields have been resolved
+      timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmConsults.SaveEditedConsult(var Saved: Boolean);
+{ validates fields and sends the updated consult result to the server }
+var
+  UpdatedNote: TCreatedDoc;
+  x, ErrMsg: string;
+  ContinueSave: boolean;
+
+  // this block executes for Clinical Procedures documents ONLY!!
+  procedure SaveOrAbort(var AllowSave: boolean);
+  begin
+    // if no text, leave as undictated, saving nothing
+    if (memResults.GetTextLen = 0) or (not ContainsVisibleChar(memResults.Text)) then
+      begin
+        if lstNotes.ItemIndex = EditingIndex then
+          begin
+            EditingIndex := -1;
+            lstNotesClick(Self);
+          end;
+        EditingIndex := -1;
+        Saved := True;    // (yes, though not actually saving, this is correct and necessary (RV))
+        AllowSave := False;
+      end
+    // if text, stuff user as author, and allow save as unsigned
+    else
+      begin
+        if FEditNote.Author <= 0 then FEditNote.Author := User.DUZ;
+        AllowSave := True;
+      end;
+  end;
+
+begin
+  Saved := False;
+  ContinueSave := True;
+  if MenuAccessRec.IsClinicalProcedure and LacksClinProcFields(FEditNote, MenuAccessRec, ErrMsg) then
+    // this block will execute for Clinical Procedures documents ONLY!!
+    begin
+      if not FSilent then                       //  if not timing out, then prompt for required fields
+        begin
+          InfoBox(ErrMsg, TC_CLIN_PROC, MB_OK);
+          cmdChangeClick(mnuActConsultResults);
+          if frmFrame.TimedOut then exit;
+          if MenuAccessRec.IsClinicalProcedure and LacksClinProcFields(FEditNote, MenuAccessRec, ErrMsg) then   //  if still not entered, action depends on presence of text
+            SaveOrAbort(ContinueSave);
+        end
+      else SaveOrAbort(ContinueSave);           //  if timing out, action depends on presence of text
+      if not ContinueSave then exit;
+    end
+  else if (memResults.GetTextLen = 0) or (not ContainsVisibleChar(memResults.Text)) then
+  // this block will NOT execute for Clinical Procedures documents!!
+  begin
+    lstNotes.ItemIndex := EditingIndex;
+    x := lstNotes.ItemID;
+    uChanging := True;
+    tvCsltNotes.Selected := tvCsltNotes.FindPieceNode(x, 1, U, tvCsltNotes.Items.GetFirstNode);
+    uChanging := False;
+    tvCsltNotesChange(Self, tvCsltNotes.Selected);
+    if FSilent or
+       ((not FSilent) and
+      (InfoBox(GetTitleText(EditingIndex) + TX_EMPTY_NOTE, TC_EMPTY_NOTE, MB_YESNO) = IDYES))
+    then
+    begin
+      FConfirmed := True;
+      mnuActNoteDeleteClick(Self);
+      Saved := True;
+      FDeleted := True;
+    end
+    else
+      FConfirmed := False;
+    Exit;
+  end;
+  //ExpandTabsFilter(memResults.Lines, TAB_STOP_CHARS);
+  FEditNote.Lines    := memResults.Lines;
+  FEditNote.Subject  := txtSubject.Text;
+  FEditNote.NeedCPT  := uPCEEdit.CPTRequired;
+  timAutoSave.Enabled := False;
+  try
+    PutEditedNote(UpdatedNote, FEditNote, lstNotes.GetIEN(EditingIndex));
+  finally
+    timAutoSave.Enabled := True;
+  end;
+  // there's no unlocking here since the note is still in Changes after a save
+  if UpdatedNote.IEN > 0 then
+  begin
+    if lstNotes.ItemIndex = EditingIndex then
+    begin
+      EditingIndex := -1;
+      lstNotesClick(Self);
+    end;
+    EditingIndex := -1;
+    Saved := True;
+    FChanged := False;
+  end else
+  begin
+    if not FSilent then
+      InfoBox(TX_SAVE_ERROR1 + UpdatedNote.ErrorText + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  end;
+end;
+
+procedure TfrmConsults.SaveCurrentNote(var Saved: Boolean);
+begin
+  if EditingIndex < 0 then Exit;
+  SaveEditedConsult(Saved);
+end;
+
+
+{ Form events -----------------------------------------------------------------}
+
+procedure TfrmConsults.pnlRightExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed then
+    FindNextControl(tvConsults, True, True, False).SetFocus
+  else if ShiftTabIsPressed then
+    FindNextControl(pnlLeft, True, True, False).SetFocus;
+end;
+
+procedure TfrmConsults.pnlRightResize(Sender: TObject);
+{ TRichEdit doesn't repaint appropriately unless its parent panel is refreshed }
+begin
+  inherited;
+  pnlRight.Refresh;
+  pnlAction.Invalidate;
+  memConsult.Repaint;
+  pnlResults.Invalidate;
+  memResults.Repaint;
+end;
+
+{ Left panel (selector) events ------------------------------------------------------------- }
+
+procedure TfrmConsults.lstConsultsClick(Sender: TObject);
+{ loads the text for the selected Consult}
+const
+  RSLT_TIU_DOC = 1;
+  RSLT_MED_RPT = 2;
+var
+  ANode: TTreeNode;
+begin
+  inherited;
+  lstNotes.Items.Clear ;
+  memConsult.Clear ;
+  ClearEditControls ;
+  if lstConsults.ItemIEN <= 0 then
+   begin
+      memConsult.Lines.Add('No consults were found which met the criteria specified: '
+                               + #13#10#13#10 + lblConsults.Caption) ;
+      memConsult.SelStart := 0;
+      mnuAct.Enabled := False ;
+      exit ;
+   end
+  else mnuAct.Enabled := True;
+  pnlResults.Visible := False;
+  pnlResults.SendToBack;
+  Screen.Cursor := crHourglass ;
+  StatusText('Retrieving selected consult...');
+  cmdPCE.Enabled := False;
+  popNoteMemoEncounter.Enabled := False;
+  GetConsultRec(lstConsults.ItemIEN) ;
+  FOrderID := '';
+  //FOrderID := Piece(lstConsults.Items[lstConsults.ItemIndex], U, 6);
+  if ConsultRec.EntryDate = -1 then
+    begin
+       memConsult.Lines.Add(TX_INVALID_CONSULT_TEXT) ;
+       lblTitle.Caption :=  TX_INVALID_CONSULT_CAP ;
+       lblTitle.Hint := lblTitle.Caption;
+    end
+  else
+    begin
+       lblTitle.Caption := lstConsults.DisplayText[lstConsults.ItemIndex] ;
+       lblTitle.Hint := lblTitle.Caption;
+       LoadConsultDetail(memConsult.Lines, lstConsults.ItemIEN) ;
+       FDocList.Clear;
+       lstNotes.Items.Clear;
+       uChanging := True;
+       tvCsltNotes.Items.BeginUpdate;
+       KillDocTreeObjects(tvCsltNotes);
+       tvCsltNotes.Items.Clear;
+       if (ConsultRec.TIUDocuments.Count + ConsultRec.MedResults.Count) > 0 then
+       begin
+         with FCurrentNoteContext do
+            begin
+                if ConsultRec.TIUDocuments.Count > 0 then
+                  begin
+                    CreateListItemsForDocumentTree(FDocList, ConsultRec.TIUDocuments, RSLT_TIU_DOC, GroupBy, TreeAscending, CT_CONSULTS);
+                    UpdateNoteTreeView(FDocList, tvCsltNotes, RSLT_TIU_DOC);
+                  end;
+                FDocList.Clear;
+                if ConsultRec.MedResults.Count > 0 then
+                  begin
+                    CreateListItemsForDocumentTree(FDocList, ConsultRec.MedResults, RSLT_MED_RPT, GroupBy, TreeAscending, CT_CONSULTS);
+                    UpdateNoteTreeView(FDocList, tvCsltNotes, RSLT_MED_RPT);
+                  end;
+            end;
+         with tvCsltNotes do
+           begin
+             FullExpand;
+             if Notifications.Active and FNotifPending then
+               Selected := FindPieceNode(Piece(Notifications.AlertData, U, 1), 1, U, nil)
+             else if FLastNoteID <> '' then
+               Selected := FindPieceNode(FLastNoteID, 1, U, nil);
+             if Selected <> nil then
+               if Piece(PDocTreeObject(Selected)^.DocID, ';', 1) <> 'MCAR' then DisplayPCE ;
+           end;
+        end
+       else
+        begin
+          ANode := tvCsltNotes.Items.AddFirst(tvCsltNotes.Items.GetFirstNode, 'No related documents found');
+          TORTreeNode(ANode).StringData := '-1^No related documents found';
+          lstNotes.Items.Add('-1^None') ;
+          ShowPCEControls(False) ;
+        end ;
+       tvCsltNotes.Items.EndUpdate;
+       uChanging := False;
+       FLastNoteID := '';
+       //FLastNoteID := lstNotes.ItemID;
+   end ;
+  SetActionMenus ;
+  SetResultMenus ;
+  StatusText('');
+  pnlRight.Repaint ;
+  memConsult.SelStart := 0;
+  memConsult.Repaint;
+  Screen.Cursor := crDefault ;
+end;
+
+procedure TfrmConsults.mnuActNewConsultRequestClick(Sender: TObject);
+var
+  DialogInfo: string;
+  DelayEvent: TOrderDelayEvent;
+begin
+  inherited;
+  DelayEvent.EventType := 'C';         // temporary, so can pass to CopyOrders
+  DelayEvent.Specialty := 0;
+  DelayEvent.Effective := 0;
+  DelayEvent.EventIFN  := 0;
+  DelayEvent.PtEventIFN := 0;
+  if not ReadyForNewOrder(DelayEvent) then Exit;
+  { get appropriate form, create the dialog form and show it }
+  DialogInfo := GetNewDialog(DLG_CONSULT);   // DialogInfo = DlgIEN;FormID;DGroup
+  case CharAt(Piece(DialogInfo, ';', 4), 1) of
+  'A':      ActivateAction(     Piece(DialogInfo, ';', 1),             Self, 0);
+  'D', 'Q': ActivateOrderDialog(Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  'M':      ActivateOrderMenu(  Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  'O':      ActivateOrderSet(   Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  else InfoBox('Unsupported dialog type', 'Error', MB_OK);
+  end; {case}
+end;
+
+procedure TfrmConsults.mnuActNewProcedureClick(Sender: TObject);
+var
+  DialogInfo: string;
+  DelayEvent: TOrderDelayEvent;
+begin
+  inherited;
+  DelayEvent.EventType := 'C';         // temporary, so can pass to CopyOrders
+  DelayEvent.Specialty := 0;
+  DelayEvent.Effective := 0;
+  DelayEvent.EventIFN  := 0;
+  DelayEvent.PtEventIFN := 0;
+  
+  if not ReadyForNewOrder(DelayEvent) then Exit;
+  { get appropriate form, create the dialog form and show it }
+  DialogInfo := GetNewDialog(DLG_PROC);   // DialogInfo = DlgIEN;FormID;DGroup
+  case CharAt(Piece(DialogInfo, ';', 4), 1) of
+  'D', 'Q': ActivateOrderDialog(Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  'M':      ActivateOrderMenu(  Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  'O':      ActivateOrderSet(   Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  else InfoBox('Unsupported dialog type', 'Error', MB_OK);
+  end; {case}
+end;
+
+procedure TfrmConsults.cmdNewConsultClick(Sender: TObject);
+{ maps 'New Consult' button to the New Consult menu item }
+begin
+  inherited;
+  mnuActNewConsultRequestClick(Self);
+end;
+
+procedure TfrmConsults.cmdNewConsultExit(Sender: TObject);
+begin
+  inherited;
+  if Not cmdEditResubmit.Visible then
+    DoLeftPanelCustomShiftTab;
+end;
+
+procedure TfrmConsults.cmdNewProcClick(Sender: TObject);
+begin
+  inherited;
+  mnuActNewProcedureClick(Self);
+end;
+
+{ Right panel (editor) events -------------------------------------------------------------- }
+
+procedure TfrmConsults.NewPersonNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmConsults.memResultChange(Sender: TObject);
+{ sets FChanged to record that the note has really been edited }
+begin
+  inherited;
+  FChanged := True;
+end;
+
+{ View menu events ------------------------------------------------------------------------- }
+
+procedure TfrmConsults.mnuViewClick(Sender: TObject);
+{ changes the list of Consults available for viewing }
+var
+  NewView: boolean;
+  Saved: Boolean;
+  //tmpNode: TTreeNode;
+begin
+  inherited;
+  // save note at FEditingIndex?
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  NewView := False ;
+  if Sender is TMenuItem then
+    begin
+      ViewContext := TMenuItem(Sender).Tag ;
+      case ViewContext of
+        CC_BY_STATUS  :  NewView := SelectStatus(Font.Size, FCurrentContext, StsCtxt);
+        CC_BY_SERVICE :  NewView := SelectService(Font.Size, FCurrentContext, SvcCtxt);
+        CC_BY_DATE    :  NewView := SelectConsultDateRange(Font.Size, FCurrentContext, DateRange);
+        CC_CUSTOM     :  begin
+                           NewView := SelectConsultsView(Font.Size, FCurrentContext, uSelectContext) ;
+                           if NewView then lblConsults.Caption := 'Custom List';
+                         end;  
+        CC_ALL        :  NewView := True ;
+      end;
+    end
+  else with FCurrentContext do
+    begin
+      if ((BeginDate + EndDate + Status + Service + GroupBy) <> '') then
+        begin
+          ViewContext := CC_CUSTOM;
+          NewView := True;
+          lblConsults.Caption := 'Default List';
+        end
+      else
+        begin
+          ViewContext := CC_ALL;
+          NewView := True;
+          lblConsults.Caption := 'All Consults';
+        end;
+    end;
+  tvConsults.Caption := lblConsults.Caption;
+  if NewView then
+    begin
+      StatusText('Retrieving Consult list...');
+      lblTitle.Caption := '';
+      lblTitle.Hint := lblTitle.Caption;
+      UpdateList ;
+      StatusText('');
+    end;
+  tvConsultsClick(Self);
+end;
+
+{ Action menu events ----------------------------------------------------------------------- }
+
+procedure TfrmConsults.mnuActCompleteClick(Sender: TObject);
+const
+  IS_ID_CHILD = False;
+var
+  NoteIEN: integer;
+  ActionSts: TActionRec;
+  UseClinProcTitles: boolean;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0  then exit;
+  if MenuAccessRec.IsClinicalProcedure then
+    begin
+      case MenuAccessRec.ClinProcFlag of
+        {1} CP_NO_INSTRUMENT    : FActionType := CN_ACT_CP_COMPLETE;
+        {2} CP_INSTR_NO_STUB    : begin
+                                InfoBox(TX_CP_NO_RESULTS, TC_CP_NO_RESULTS, MB_OK or MB_ICONERROR);
+                                Exit;
+                              end;
+        {3} CP_INSTR_INCOMPLETE : FActionType := CN_ACT_CP_COMPLETE;
+        {4} CP_INSTR_COMPLETE   : FActionType := CN_ACT_CP_COMPLETE;
+      end;
+    end
+  else  // {0} not a clinical procedure
+    FActionType := TMenuItem(Sender).Tag ;
+  if not StartNewEdit(NT_ACT_NEW_NOTE) then Exit;
+
+  SelectNoteForProcessing(Font.Size, FActionType, lstNotes.Items, NoteIEN, MenuAccessRec.ClinProcFlag);
+  if NoteIEN > 0 then
+    begin
+      with tvCsltNotes do Selected := FindPieceNode(IntToStr(NoteIEN), 1, U, Items.GetFirstNode);
+      if tvCsltNotes.Selected = nil then exit;
+      ActOnDocument(ActionSts, lstNotes.ItemIEN, 'EDIT RECORD');
+      if not ActionSts.Success then
+        begin
+          InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+          Exit;
+        end ;
+      mnuActNoteEditClick(Self);
+    end
+  else if NoteIEN = StrToInt(CN_NEW_CP_NOTE) then
+    begin
+      // make sure a visit (time & location) is available before creating the note
+      if Encounter.NeedVisit then
+      begin
+        UpdateVisit(Font.Size, DfltTIULocation);
+        frmFrame.DisplayEncounterText;
+      end;
+      if Encounter.NeedVisit then
+      begin
+        InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+        Exit;
+      end;
+      SetResultMenus ;
+      UseClinProcTitles := True;
+      CompleteConsult(IS_ID_CHILD, 0, UseClinProcTitles);
+    end
+  else if NoteIEN = StrToInt(CN_NEW_CSLT_NOTE) then
+    begin
+      // make sure a visit (time & location) is available before creating the note
+      if Encounter.NeedVisit then
+      begin
+        UpdateVisit(Font.Size, DfltTIULocation);
+        frmFrame.DisplayEncounterText;
+      end;
+      if Encounter.NeedVisit then
+      begin
+        InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+        Exit;
+      end;
+      SetResultMenus ;
+      UseClinProcTitles := False;
+      CompleteConsult(IS_ID_CHILD, 0, UseClinProcTitles);
+    end
+  else if NoteIEN = -1 then Exit
+end;
+
+procedure TfrmConsults.mnuActAddIDEntryClick(Sender: TObject);
+const
+  IS_ID_CHILD = True;
+  IS_CLIN_PROC = False;
+var
+  AnIDParent: integer;
+  //AConsultID: string;
+{ switches to current new note or creates a new note if none is being edited already }
+begin
+  inherited;
+(*  AConsultID := lstConsults.ItemID;*)
+  AnIDParent := lstNotes.ItemIEN;
+  if not StartNewEdit(NT_ACT_ID_ENTRY) then Exit;
+(*  with tvConsults do Selected := FindPieceNode(AConsultID, 1, U, Items.GetFirstNode);
+  with tvCsltNotes do Selected := FindPieceNode(IntToStr(AnIDParent), 1, U, Items.GetFirstNode);*)
+
+  // make sure a visit (time & location) is available before creating the note
+  if Encounter.NeedVisit then
+  begin
+    UpdateVisit(Font.Size, DfltTIULocation);
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.NeedVisit then
+  begin
+    InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  CompleteConsult(IS_ID_CHILD, AnIDParent, IS_CLIN_PROC);
+end;
+
+procedure TfrmConsults.mnuActMakeAddendumClick(Sender: TObject);
+var
+  ActionSts: TActionRec;
+  //ANoteID, AConsultID: string;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0  then exit;
+(*  // ====== REMOVED IN V14 - superfluous with treeview in v15 ===========
+  FActionType := TMenuItem(Sender).Tag ;
+  SelectNoteForProcessing(Font.Size, FActionType, lstNotes.Items, NoteIEN);
+  if NoteIEN = -1 then exit;
+  //lstNotes.SelectByIEN(NoteIEN);
+  with tvCsltNotes do Selected := FindPieceNode(IntToStr(NoteIEN), 1, U, Items.GetFirstNode);
+  if tvCsltNotes.Selected = nil then exit;
+  // ========================================*)
+  if lstNotes.ItemIEN <= 0 then Exit;
+(*  AConsultID := lstConsults.ItemID;
+  ANoteID := lstNotes.ItemID;*)
+  if lstNotes.ItemIndex = EditingIndex then
+  begin
+    InfoBox(TX_ADDEND_NO, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  if not StartNewEdit(NT_ACT_ADDENDUM) then Exit;
+(*  with tvConsults do Selected := FindPieceNode(AConsultID, 1, U, Items.GetFirstNode);
+  with tvCsltNotes do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);*)
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'MAKE ADDENDUM');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  with lstNotes do if TitleForNote(ItemIEN) = TYP_ADDENDUM then      //v17.5 RV
+  //with lstNotes do if Copy(Piece(Items[ItemIndex], U, 2), 1, 8) = 'Addendum' then
+  begin
+    InfoBox(TX_ADDEND_AD, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  SetResultMenus ;
+  InsertAddendum;
+end;
+
+procedure TfrmConsults.mnuActDetachFromIDParentClick(Sender: TObject);
+var
+  DocID, WhyNot: string;
+  Saved: boolean;
+  SavedDocID, SavedConsultID: string;
+begin
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    with tvConsults do Selected := FindPieceNode(SavedConsultID, 1, U, Items.GetFirstNode);
+    tvConsultsClick(Self);
+    with tvCsltNotes do Selected := FindPieceNode(SavedDocID, 1, U, Items.GetFirstNode);
+  end;
+  if not CanBeAttached(PDocTreeObject(tvCsltNotes.Selected.Data)^.DocID, WhyNot) then
+    begin
+      WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+      WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+      InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+      Exit;
+    end;
+  if (InfoBox('DETACH:   ' + tvCsltNotes.Selected.Text + CRLF +  CRLF +
+              '  FROM:   ' + tvCsltNotes.Selected.Parent.Text + CRLF + CRLF +
+              'Are you sure?', TX_DETACH_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES)
+      then Exit;
+  DocID := PDocTreeObject(tvCsltNotes.Selected.Data)^.DocID;
+  SavedDocID := PDocTreeObject(tvCsltNotes.Selected.Parent.Data)^.DocID;
+  if DetachEntryFromParent(DocID, WhyNot) then
+    begin
+      tvConsultsChange(Self, tvConsults.Selected);
+      with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+      if tvCsltNotes.Selected <> nil then tvCsltNotes.Selected.Expand(False);
+    end
+  else
+    begin
+      WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+      WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+      InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+    end;
+end;
+
+procedure TfrmConsults.mnuActSignatureListClick(Sender: TObject);
+{ add the note to the Encounter object, see mnuActSignatureSignClick - copied}
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  ActionType, SignTitle: string;
+  ActionSts: TActionRec;
+  ErrMsg: string;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then Exit;
+  if lstNotes.ItemIndex = EditingIndex then Exit;  // already in signature list
+  if LacksClinProcFieldsForSignature(lstNotes.ItemIEN, ErrMsg) then
+     begin
+       InfoBox(ErrMsg, TC_CLIN_PROC, MB_OK);
+       Exit;
+     end;
+  if not NoteHasText(lstNotes.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstNotes.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstNotes.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, ActionType);
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LockConsultRequestAndNote(lstNotes.ItemIEN);
+  with lstNotes do Changes.Add(CH_CON, ItemID, GetTitleText(ItemIndex), '', CH_SIGN_YES);
+end;
+
+
+procedure TfrmConsults.mnuActNoteDeleteClick(Sender: TObject);
+{ delete the selected progress note & remove from the Encounter object if necessary }
+var
+  DeleteSts, ActionSts: TActionRec;
+  SaveConsult, SavedDocIEN: Integer;
+  ReasonForDelete, AVisitStr, SavedDocID, x: string;
+  Saved: boolean;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then Exit;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'DELETE RECORD');
+  if ShowMsgOn(not ActionSts.Success, ActionSts.Reason, TX_IN_AUTH) then Exit;
+  ReasonForDelete := SelectDeleteReason(lstNotes.ItemIEN);
+  if ReasonForDelete = DR_CANCEL then Exit;
+  // suppress prompt for deletion when called from SaveEditedNote (Sender = Self)
+  if (Sender <> Self) and (InfoBox(MakeNoteDisplayText(lstNotes.Items[lstNotes.ItemIndex]) + TX_DEL_OK,
+    TX_DEL_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES) then Exit;
+  // do the appropriate locking
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  if JustifyDocumentDelete(lstNotes.ItemIEN) then
+     InfoBox(TX_RETRACT, TX_RETRACT_CAP, MB_OK);
+  SavedDocID := lstNotes.ItemID;
+  SavedDocIEN := lstNotes.ItemIEN;
+  if (EditingIndex > -1) and (not FConfirmed) and (lstNotes.ItemIndex <> EditingIndex) and (memResults.GetTextLen > 0) then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+    end;
+  EditingIndex := -1;
+  FConfirmed := False;
+  (*  if Saved then
+    begin
+      EditingIndex := -1;
+      mnuViewClick(Self);
+      with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+   end;*)
+  // remove the note
+  DeleteSts.Success := True;
+  x := GetPackageRefForNote(SavedDocIEN);
+  SaveConsult := StrToIntDef(Piece(x, ';', 1), 0);
+  //SaveConsult := GetConsultIENforNote(SavedDocIEN);
+  AVisitStr := VisitStrForNote(SavedDocIEN);
+  RemovePCEFromChanges(SavedDocIEN, AVisitStr);
+  if (SavedDocIEN > 0) and (lstNotes.ItemIEN = SavedDocIEN)then DeleteDocument(DeleteSts, SavedDocIEN, ReasonForDelete);
+  if not Changes.Exist(CH_CON, SavedDocID) then UnlockDocument(SavedDocIEN);
+  Changes.Remove(CH_CON, SavedDocID);  // this will unlock the document if in Changes
+  UnlockConsultRequest(0, SaveConsult);     // note has been deleted, so 1st param = 0
+  // reset the display now that the note is gone
+  if DeleteSts.Success then
+  begin
+    DeletePCE(AVisitStr);  // removes PCE data if this was the only note pointing to it
+    ClearEditControls;
+    //ClearPtData;   WRONG - fixed in v15.10 - RV
+    cmdNewConsult.Visible := True;
+    cmdNewProc.Top := cmdNewConsult.Top + cmdNewConsult.Height;
+    cmdNewProc.Visible := True;
+    pnlConsultList.Height := (pnlLeft.Height div 2);
+(*    uChanging := True;
+    with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    uChanging := False;
+    if tvCsltNotes.Selected <> nil then tvCsltNotesChange(Self, tvCsltNotes.Selected) else
+    begin*)
+      pnlResults.Visible := False;
+      pnlResults.SendToBack;
+      pnlRead.Visible := True;
+      pnlRead.BringToFront ;
+      memConsult.TabStop := True;
+      UpdateReminderFinish;
+      ShowPCEControls(False);
+      frmDrawers.DisplayDrawers(FALSE);
+      cmdPCE.Visible := FALSE;
+      popNoteMemoEncounter.Visible := FALSE;
+      UpdateList;
+      lstConsults.Enabled := True ;
+      tvConsults.Enabled := True;
+      with tvConsults do Selected := FindPieceNode(IntToStr(SaveConsult), 1, U, Items.GetFirstNode);
+      tvConsultsClick(Self);
+(*      lstConsults.SelectByIEN(ConsultRec.IEN);
+      if lstConsults.ItemIEN > 0 then
+        lstConsultsClick(Self) ;*)
+      lstNotes.Enabled := True;
+(*      uChanging := True;
+      with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+      uChanging := False;
+      if tvCsltNotes.Selected <> nil then tvCsltNotesChange(Self, tvCsltNotes.Selected);
+    end; {if ItemIndex}*)
+  end {if DeleteSts}
+  else InfoBox(DeleteSts.Reason, TX_DEL_ERR, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmConsults.mnuActNoteEditClick(Sender: TObject);
+{ load the selected progress note for editing }
+var
+  ActionSts: TActionRec;
+  //AConsultID, ANoteID: string;
+begin
+  inherited;
+  if lstNotes.ItemIndex = EditingIndex then Exit;
+(*  AConsultID := lstConsults.ItemID;
+  ANoteID := lstNotes.ItemID;*)
+  if not StartNewEdit(NT_ACT_EDIT_NOTE) then Exit;
+(*  with tvConsults do Selected := FindPieceNode(AConsultID, 1, U, Items.GetFirstNode);
+  with tvCsltNotes do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);*)
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'EDIT RECORD');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LoadForEdit;
+end;
+
+procedure TfrmConsults.mnuActSignatureSaveClick(Sender: TObject);
+{ saves the Consult that is currently being edited }
+var
+  Saved: Boolean;
+//  i: integer;
+  SavedDocID, SavedCsltID, x: string;
+  tmpNode: TORTreeNode;
+begin
+  inherited;
+  if EditingIndex > -1 then
+    begin
+      SavedDocID := Piece(lstNotes.Items[EditingIndex], U, 1);
+      FLastNoteID := SavedDocID;
+      SavedCsltID := lstConsults.ItemID;
+      SaveCurrentNote(Saved) ;
+      if Saved and (EditingIndex < 0) and (not FDeleted) then
+      //if Saved then
+        begin
+          pnlResults.Visible := False;
+          pnlResults.SendToBack;
+          lstConsults.Enabled := True;
+          tvConsults.Enabled := True;
+          if Notifications.Active then
+            with tvConsults do
+              begin
+                uChanging := True;
+                Selected := FindPieceNode(SavedCsltID, 1, U, Items.GetFirstNode);
+                if Selected <> nil then Selected.Delete;
+                x := FindConsult(StrToIntDef(SavedCsltID, 0));
+                tmpNode := TORTreeNode(Items.AddChildFirst(Items.GetFirstNode, MakeConsultListDisplayText(x)));
+                tmpNode.StringData := x;
+                SetNodeImage(tmpNode, FCurrentContext);
+                uChanging := False;
+                Selected := tmpNode;
+                tvConsultsClick(Self);
+              end
+          else
+            begin
+              UpdateList ;  {update consult list after success}
+              with tvConsults do Selected := FindPieceNode(SavedCsltID, U, Items.GetFirstNode);
+              tvConsultsClick(Self);
+              with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+            end;
+          pnlLeft.Refresh ;
+        end;
+    end
+  else InfoBox(TX_NO_CONSULT, TX_SAVE_CONSULT, MB_OK or MB_ICONWARNING);
+  if frmFrame.TimedOut then Exit;
+  with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+end;
+
+procedure TfrmConsults.mnuActSignatureSignClick(Sender: TObject);
+{ sign the currently selected note, save first if necessary }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  Saved, NoteUnlocked: Boolean;
+  ActionType, ESCode, SignTitle, x: string;
+  ActionSts, SignSts: TActionRec;
+  OK: boolean;
+  tmpNode: TORTreeNode;
+  SavedDocID, SavedCsltID, tmpItem, ErrMsg: string;
+  EditingID: string;                                         //v22.12 - RV
+begin
+  inherited;
+(*  if lstNotes.ItemIndex = EditingIndex then
+  begin
+    SaveCurrentNote(Saved);
+    if (not Saved) or FDeleted then Exit;
+  end
+  else if EditingIndex > -1 then
+    tmpItem := lstNotes.Items[EditingIndex];
+  SavedDocID := lstNotes.ItemID;*)
+  SavedCsltID := lstConsults.ItemID;
+  SavedDocID := lstNotes.ItemID;                             //v22.12 - RV
+  FLastNoteID := SavedDocID;                                 //v22.12 - RV
+  if lstNotes.ItemIndex = EditingIndex then                  //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentNote(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    tmpItem := lstNotes.Items[EditingIndex];                 //v22.12 - RV
+    EditingID := Piece(tmpItem, U, 1);                       //v22.12 - RV
+  end;                                                       //v22.12 - RV
+  if LacksClinProcFieldsForSignature(lstNotes.ItemIEN, ErrMsg) then
+     begin
+       InfoBox(ErrMsg, TC_CLIN_PROC, MB_OK);
+       Exit;
+     end;
+  if not NoteHasText(lstNotes.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstNotes.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstNotes.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  // no exits after things are locked
+  NoteUnlocked := False;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, ActionType);
+  if ActionSts.Success then
+  begin
+    OK := IsOK2Sign(uPCEShow, lstNotes.ItemIEN);
+    if frmFrame.Closing then exit;
+    if(uPCEShow.Updated) then
+    begin
+      uPCEShow.CopyPCEData(uPCEEdit);
+      uPCEShow.Updated := FALSE;
+      lstNotesClick(Self); 
+    end;
+    if not AuthorSignedDocument(lstNotes.ItemIEN) then
+    begin
+      if (InfoBox(TX_AUTH_SIGNED +
+          GetTitleText(lstNotes.ItemIndex),TX_SIGN ,MB_YESNO)= ID_NO) then exit;
+    end;
+    if(OK) then
+    begin
+      with lstNotes do SignatureForItem(Font.Size, MakeConsultNoteDisplayText(Items[ItemIndex]), SignTitle, ESCode);
+      if Length(ESCode) > 0 then
+      begin
+        SignDocument(SignSts, lstNotes.ItemIEN, ESCode);
+        RemovePCEFromChanges(lstNotes.ItemIEN);
+        NoteUnlocked := Changes.Exist(CH_CON, lstNotes.ItemID);
+        Changes.Remove(CH_CON, lstNotes.ItemID);  // this will unlock if in Changes
+        if SignSts.Success then
+        begin
+          pnlResults.Visible := False;
+          pnlResults.SendToBack;
+          lstConsults.Enabled := True;
+          tvConsults.Enabled := True;
+          if Notifications.Active then
+            with tvConsults do
+              begin
+                uChanging := True;
+                Selected := FindPieceNode(SavedCsltID, 1, U, Items.GetFirstNode);
+                if Selected <> nil then Selected.Delete;
+                x := FindConsult(StrToIntDef(SavedCsltID, 0));
+                tmpNode := TORTreeNode(Items.AddChildFirst(Items.GetFirstNode, MakeConsultListDisplayText(x)));
+                tmpNode.StringData := x;
+                SetNodeImage(tmpNode, FCurrentContext);
+                uChanging := False;
+                Selected := tmpNode;
+                //tvConsultsClick(Self);
+              end
+          else
+            begin
+              UpdateList ;  {update consult list after success}
+              with tvConsults do Selected := FindPieceNode(SavedCsltID, U, Items.GetFirstNode);
+              //tvConsultsClick(Self);
+              //with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+            end;
+        end
+        else InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end {if Length(ESCode)}
+      else
+        NoteUnlocked := Changes.Exist(CH_CON, lstNotes.ItemID);
+    end;
+  end
+  else InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+  if not NoteUnlocked then UnlockDocument(lstNotes.ItemIEN);
+  UnlockConsultRequest(lstNotes.ItemIEN, StrToIntDef(SavedCsltID, 0));  // v20.4  RV (unlocking problem)
+  //UnlockConsultRequest(lstNotes.ItemIEN, ConsultRec.IEN);
+  tvConsultsClick(Self);
+  //if EditingIndex > -1 then         //v22.12 - RV
+  if (EditingID <> '') then           //v22.12 - RV
+    begin
+      lstNotes.Items.Insert(0, tmpItem);
+      tmpNode := TORTreeNode(tvCsltNotes.Items.AddObjectFirst(tvCsltNotes.Items.GetFirstNode, 'Note being edited',
+                 MakeNoteTreeObject('EDIT^Note being edited^^^^^^^^^^^%^0')));
+      tmpNode.StringData := 'EDIT^Note being edited^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_TOP_LEVEL;
+      tmpNode := TORTreeNode(tvCsltNotes.Items.AddChildObjectFirst(tmpNode, MakeConsultNoteDisplayText(tmpItem),
+                 MakeConsultsNoteTreeObject(tmpItem)));
+      tmpNode.StringData := tmpItem;
+      SetTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentNoteContext, CT_CONSULTS);
+      EditingIndex := lstNotes.SelectByID(EditingID);                 //v22.12 - RV
+    end;
+  //with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);  //v22.12 - RV
+  with tvCsltNotes do                                                                  //v22.12 - RV
+  begin                                                                                //v22.12 - RV
+    Selected := FindPieceNode(FLastNoteID, U, Items.GetFirstNode);                     //v22.12 - RV
+    if Selected <> nil then tvCsltNotesChange(Self, Selected);                         //v22.12 - RV
+  end;
+end;
+
+procedure TfrmConsults.SaveSignItem(const ItemID, ESCode: string);
+{ saves and optionally signs a progress note or addendum }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  AnIndex, IEN, i: Integer;
+  Saved, ContinueSign: Boolean;  {*RAB* 8/26/99}
+  ActionSts, SignSts: TActionRec;
+  APCEObject: TPCEData;
+  OK: boolean;
+  SavedCsltID, x: string;
+  tmpNode: TORTreeNode;
+  ErrMsg: string;
+  ActionType, SignTitle: string;
+begin
+  AnIndex := -1;
+  IEN := StrToIntDef(ItemID, 0);
+  if IEN = 0 then Exit;
+  x := GetPackageRefForNote(IEN);
+  SavedCsltID := Piece(x, ';', 1);
+  //SavedCsltID := IntToStr(GetConsultIENForNote(IEN));
+  if frmFrame.TimedOut and (EditingIndex <> -1) then FSilent := True;
+  with lstNotes do for i := 0 to Items.Count - 1 do if lstNotes.GetIEN(i) = IEN then
+  begin
+    AnIndex := i;
+    break;
+  end;
+  if (AnIndex > -1) and (AnIndex = EditingIndex) then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    if FDeleted then
+      begin
+        FDeleted := False;
+        Exit;
+      end;
+    AnIndex := lstNotes.SelectByIEN(IEN);
+    //IEN := lstNotes.GetIEN(AnIndex);                    // saving will change IEN
+  end;
+  if Length(ESCode) > 0 then
+  begin
+    if CosignDocument(IEN) then
+    begin
+      SignTitle := TX_COSIGN;
+      ActionType := SIG_COSIGN;
+    end else
+    begin
+      SignTitle := TX_SIGN;
+      ActionType := SIG_SIGN;
+    end;
+    ActOnDocument(ActionSts, IEN, ActionType);
+    if not ActionSts.Success then
+      begin
+        InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+        ContinueSign := False;
+      end
+    else if LacksClinProcFieldsForSignature(IEN, ErrMsg) then
+      begin
+       InfoBox(ErrMsg, TC_CLIN_PROC, MB_OK);
+       ContinueSign := False;
+      end
+    else if not NoteHasText(IEN) then
+      begin
+        InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+        ContinueSign := False;
+      end
+    else if not LastSaveClean(IEN) and
+      (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES)
+       then ContinueSign := False
+    else ContinueSign := True;
+    if ContinueSign then
+    begin
+      if (AnIndex >= 0) and (AnIndex = lstNotes.ItemIndex) then
+        APCEObject := uPCEShow
+      else
+        APCEObject := nil;
+      OK := IsOK2Sign(APCEObject, IEN);
+      if frmFrame.Closing then exit;
+      if(assigned(APCEObject)) and (uPCEShow.Updated) then
+      begin
+        uPCEShow.CopyPCEData(uPCEEdit);
+        uPCEShow.Updated := FALSE;
+        lstNotesClick(Self);
+      end
+      else
+        uPCEEdit.Clear;
+      if(OK) then
+      begin
+        SignDocument(SignSts, IEN, ESCode);
+        if not SignSts.Success then InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end; {if OK}
+    end; {if ContinueSign}
+  end; {if Length(ESCode)}
+
+  UnlockConsultRequest(IEN);
+  UnlockDocument(IEN);
+  if (AnIndex = lstNotes.ItemIndex) and (not frmFrame.ContextChanging) then lstNotesClick(Self);
+  if Notifications.Active then
+    with tvConsults do
+      begin
+        if (AnIndex = lstNotes.ItemIndex) and (not frmFrame.ContextChanging) then lstNotesClick(Self);
+        uChanging := True;
+        Selected := FindPieceNode(SavedCsltID, 1, U, Items.GetFirstNode);
+        if Selected <> nil then Selected.Delete;
+        x := FindConsult(StrToIntDef(SavedCsltID, 0));
+        tmpNode := TORTreeNode(Items.AddChildFirst(Items.GetFirstNode, MakeConsultListDisplayText(x)));
+        tmpNode.StringData := x;
+        SetNodeImage(tmpNode, FCurrentContext);
+        uChanging := False;
+        Selected := tmpNode;
+        tvConsultsClick(Self);
+      end
+  else
+    begin
+      UpdateList ;  {update consult list after success}
+      if (AnIndex = lstNotes.ItemIndex) and (not frmFrame.ContextChanging) then lstNotesClick(Self);
+      with tvConsults do Selected := FindPieceNode(SavedCsltID, U, Items.GetFirstNode);
+      tvConsultsClick(Self);
+      with tvCsltNotes do Selected := FindPieceNode(IntToStr(IEN), U, Items.GetFirstNode);
+    end;
+  pnlLeft.Refresh ;
+end ;
+
+procedure TfrmConsults.cmdPCEClick(Sender: TObject);
+begin
+  inherited;
+  cmdPCE.Enabled := False;
+  UpdatePCE(uPCEEdit);
+  cmdPCE.Enabled := True;
+  if frmFrame.Closing then exit;
+  DisplayPCE;
+end;
+
+procedure TfrmConsults.mnuActConsultClick(Sender: TObject);
+var
+//  i:integer ;
+  Saved, IsProcedure: boolean;
+  SavedCsltID, x: string;
+  tmpNode: TORTreeNode;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0  then exit;
+  SavedCsltID := lstConsults.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FOrderID := Piece(lstConsults.Items[lstConsults.ItemIndex], U, 6);
+  if not LockConsultRequest(lstConsults.ItemIEN) then Exit;
+  FActionType := TMenuItem(Sender).Tag ;
+  ClearEditControls ;
+  lstNotes.Enabled := False ;
+  lstConsults.Enabled  := False ;
+  tvConsults.Enabled := False;
+  x := Piece(lstConsults.Items[lstConsults.ItemIndex], U, 12);
+  if x <> '' then
+    IsProcedure := (x[1] in ['P', 'M'])
+  else
+    IsProcedure := (Piece(lstConsults.Items[lstConsults.ItemIndex], U, 9) = 'Procedure');
+  //if SetActionContext(Font.Size,FActionType, IsProcedure, ConsultRec.ConsultProcedure) then
+   if SetActionContext(Font.Size,FActionType, IsProcedure, ConsultRec.ConsultProcedure, MenuAccessRec.UserLevel) then
+    begin
+      if Notifications.Active then
+        with tvConsults do
+          begin
+            uChanging := True;
+            Selected := FindPieceNode(SavedCsltID, 1, U, Items.GetFirstNode);
+            if Selected <> nil then Selected.Delete;
+            x := FindConsult(StrToIntDef(SavedCsltID, 0));
+            tmpNode := TORTreeNode(Items.AddChildFirst(Items.GetFirstNode, MakeConsultListDisplayText(x)));
+            tmpNode.StringData := x;
+            SetNodeImage(tmpNode, FCurrentContext);
+            uChanging := False;
+            Selected := tmpNode;
+            tvConsultsClick(Self);
+          end
+(*        with tvConsults do
+          begin
+            Selected := FindPieceNode(IntToStr(ConsultRec.IEN), 1, U, Items.GetFirstNode);
+            if Selected <> nil then Selected.Delete;
+            Items.AddFirst(nil, FindConsult(ConsultRec.IEN));
+            Selected := FindPieceNode(IntToStr(ConsultRec.IEN), 1, U, Items.GetFirstNode);
+          end*)
+      else
+        begin
+          UpdateList ;  {update consult list after success}
+          with tvConsults do Selected := FindPieceNode(SavedCsltID, U, Items.GetFirstNode);
+          tvConsultsClick(Self);
+        end;
+    end;
+  UnlockConsultRequest(lstNotes.ItemIEN, StrToIntDef(SavedCsltID, 0));  // v20.4  RV (unlocking problem)
+  //UnlockConsultRequest(lstNotes.ItemIEN, lstConsults.ItemIEN);
+  lstNotes.Enabled := True ;
+  lstConsults.Enabled := True ;
+  tvConsults.Enabled := True;
+end;
+
+procedure TfrmConsults.UpdateList;
+begin
+     { call this after performing some action on a consult that changes its status
+       or its service  }
+  case ViewContext of
+    CC_ALL       : begin
+                     FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                     lblConsults.Caption := 'All Consults' ;
+                     FCurrentContext.Ascending := False;
+                   end;
+    CC_BY_STATUS : begin
+                     with StsCtxt do if Changed then
+                       begin
+                         FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                         lblConsults.Caption := 'All ' + StatusName + ' Consults';
+                         FCurrentContext.Status := Status;
+                         FCurrentContext.Ascending := Ascending;
+                       end;
+                   end;
+    CC_BY_SERVICE : begin
+                      with SvcCtxt do if Changed then
+                        begin
+                          FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                          lblConsults.Caption := 'Consults to ' + ServiceName;
+                          FCurrentContext.Service := Service;
+                          FCurrentContext.Ascending := Ascending;
+                        end;
+                    end;
+     CC_BY_DATE   : begin
+                     with DateRange do if Changed then
+                       begin
+                        FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                        lblConsults.Caption := FormatFMDateTime('mmm dd,yy', StrToFMDateTime(BeginDate)) + ' to ' +
+                                               FormatFMDateTime('mmm dd,yy', StrToFMDateTime(EndDate));
+                        FCurrentContext.BeginDate := BeginDate;
+                        FCurrentContext.EndDate   := EndDate;
+                        FCurrentContext.Ascending := Ascending;
+                       end;
+                    end;
+     CC_CUSTOM    : begin
+                      with uSelectContext do if Changed then
+                        begin
+                          FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                          with lblConsults do if Caption <> 'Default List' then Caption := 'Custom List' ;
+                          FCurrentContext.BeginDate := BeginDate;
+                          FCurrentContext.EndDate   := EndDate;
+                          FCurrentContext.Status := Status;
+                          FCurrentContext.Service := Service;
+                          FCurrentContext.GroupBy := GroupBy;
+                          FCurrentContext.Ascending := Ascending;
+                        end ;
+                      end ;
+   end; {case}
+   tvConsults.Caption := lblConsults.Caption;
+   if not frmFrame.ContextChanging then LoadConsults;
+end ;
+
+procedure TfrmConsults.SetActionMenus ;
+{Set available menu actions based on consult status and user access to consult's service}
+var
+   status: integer ;
+begin
+
+     FillChar(MenuAccessRec, SizeOf(MenuAccessRec), 0);
+     if (lstConsults.ItemIndex < 0) then
+      begin
+        mnuAct.Enabled := False ;
+        exit ;
+      end
+     else
+      begin
+       MenuAccessRec  := GetActionMenuLevel(ConsultRec.IEN) ;
+       status  := ConsultRec.ORStatus ;
+      end ;
+
+
+     with MenuAccessRec do
+       begin
+          //     mnuAct.Enabled := (UserLevel > 1) ;    {'User Review'    menu level = 1 }
+                                             {'Service Action' menu level = 2 }
+
+         mnuActConsultRequest.Enabled :=  (lstConsults.ItemIEN > 0);
+         mnuActReceive.Enabled        :=  (UserLevel > UL_REVIEW)
+                                                          and (status=ST_PENDING);
+         mnuActSchedule.Enabled       :=  (UserLevel > UL_REVIEW)
+                                                          and ((status=ST_PENDING)
+                                                          or   (status=ST_ACTIVE));
+         mnuActDeny.Enabled           :=  (UserLevel > UL_REVIEW)
+                                                          and ((status<>ST_DISCONTINUED)
+                                                          and (status<>ST_COMPLETE)
+                                                          and (status<>ST_CANCELLED)
+                                                          and (status<>ST_PARTIAL_RESULTS))   ;
+(*         mnuActEditResubmit.Enabled   :=  {(UserLevel > 1) and }(Notifications.Active)
+            {if the user received the alert,}          and (lstConsults.ItemIEN = CurrNotifIEN)
+            { this menu should be available }          and (status = ST_CANCELLED)
+                                                       and (not User.NoOrdering);*)
+        {if processing an alert - NO CHANGE HERE}
+         if Notifications.Active and (lstConsults.ItemIEN = CurrNotifIEN) then
+           mnuActEditResubmit.Enabled := (*(lstConsults.ItemIEN = CurrNotifIEN) and*)
+                                         (status = ST_CANCELLED) and
+                                         (not User.NoOrdering)
+        {if not processing an alert, check other stuff}
+         else
+           mnuActEditResubmit.Enabled :=  AllowResubmit and
+                                          (status = ST_CANCELLED) and
+                                          (not User.NoOrdering);
+         mnuActForward.Enabled        :=  (UserLevel > UL_REVIEW)
+                                                       and ((status<>ST_DISCONTINUED)
+                                                       and (status<>ST_COMPLETE)
+                                                       and (status<>ST_CANCELLED))   ;
+         mnuActDiscontinue.Enabled    :=  (UserLevel > UL_REVIEW)
+                                                       and ((status<>ST_DISCONTINUED)
+                                                       and (status<>ST_COMPLETE)
+                                                       and (status<>ST_CANCELLED)
+                                                       and (status<>ST_PARTIAL_RESULTS))   ;
+         mnuActSigFindings.Enabled    :=  (UserLevel > UL_REVIEW)
+                                                       and ((status<>ST_DISCONTINUED)
+                                                       and (status<>ST_CANCELLED));
+         mnuActAdminComplete.Enabled  :=  ((UserLevel = UL_ADMIN) or (UserLevel = UL_UPDATE_AND_ADMIN))
+                                                       and ((status<>ST_DISCONTINUED)
+                                                       and (status<>ST_COMPLETE)
+                                                       and (status<>ST_CANCELLED));
+
+         mnuActAddComment.Enabled     :=  True;
+         mnuActDisplayDetails.Enabled :=  True;
+         mnuActDisplayResults.Enabled :=  True;
+         mnuActDisplaySF513.Enabled   :=  True;
+         mnuActPrintSF513.Enabled     :=  True;
+         mnuActConsultResults.Enabled :=  (lstConsults.ItemIEN > 0) and
+                                          (((UserLevel = UL_UPDATE) or (UserLevel = UL_UPDATE_AND_ADMIN) or (UserLevel = UL_UNRESTRICTED)) and
+                                          ((status<>ST_DISCONTINUED) and
+                                           (status<>ST_CANCELLED)))
+                                          or
+                                           (lstConsults.ItemIEN > 0) and
+                                          ((AllowMedResulting) and
+                                          ((status<>ST_DISCONTINUED) and
+                                           (status<>ST_CANCELLED)))
+                                          or
+                                           (lstConsults.ItemIEN > 0) and
+                                          ((AllowMedDissociate) and
+                                          ((status = ST_COMPLETE)))
+                                          or
+                                           ((Notifications.Active) and
+                                           (lstConsults.ItemIEN = CurrNotifIEN) and
+                                           (Notifications.FollowUp = NF_CONSULT_UNSIGNED_NOTE) and
+                                           (lstNotes.ItemIndex > -1));
+         cmdEditResubmit.Visible      :=  mnuActEditResubmit.Enabled;
+       end;
+end ;
+
+procedure TfrmConsults.SetResultMenus ;
+var
+  WhyNot: string;
+begin
+  mnuActComplete.Enabled           :=   mnuActConsultResults.Enabled and
+                                        ((MenuAccessRec.UserLevel = UL_UPDATE) or
+                                        (MenuAccessRec.UserLevel = UL_UPDATE_AND_ADMIN) or
+                                        (MenuAccessRec.UserLevel = UL_UNRESTRICTED))
+                                        and
+                                       ((ConsultRec.ORStatus=ST_PENDING) or
+                                       (ConsultRec.ORStatus=ST_ACTIVE) or
+                                       (ConsultRec.ORStatus=ST_SCHEDULED) or
+                                       (ConsultRec.ORStatus=ST_PARTIAL_RESULTS) or
+                                       (ConsultRec.ORStatus=ST_COMPLETE))   ;
+  mnuActMakeAddendum.Enabled       :=  mnuActConsultResults.Enabled and
+                                        ((MenuAccessRec.UserLevel = UL_UPDATE) or
+                                        (MenuAccessRec.UserLevel = UL_UPDATE_AND_ADMIN) or
+                                        (MenuAccessRec.UserLevel = UL_UNRESTRICTED))
+                                        and
+                                        (ConsultRec.ORStatus=ST_COMPLETE) and
+                                       ((lstNotes.ItemIndex > -1) and
+                                       ((ConsultRec.TIUResultNarrative>0) or
+                                       (lstNotes.ItemIEN > 0)));
+  mnuActAddIDEntry.Enabled         :=   mnuActConsultResults.Enabled and
+                                        uIDNotesActive and
+                                        (tvCsltNotes.Selected <> nil) and
+                                        (tvCsltNotes.Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                        IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_OPEN,
+                                        IMG_IDPAR_ADDENDA_SHUT]) and
+                                        CanReceiveAttachment(PDocTreeObject(tvCsltNotes.Selected.Data)^.DocID, WhyNot);
+  mnuActDetachFromIDParent.Enabled :=   mnuActConsultResults.Enabled and
+                                        uIDNotesActive and
+                                        (tvCsltNotes.Selected <> nil) and
+                                        (tvCsltNotes.Selected.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD]);
+  mnuActAttachMed.Enabled          :=   mnuActConsultResults.Enabled and
+                                        (((mnuActComplete.Enabled) or
+                                        (MenuAccessRec.UserLevel = UL_ADMIN) or
+                                        (MenuAccessRec.UserLevel = UL_UPDATE_AND_ADMIN)))
+                                         and (MenuAccessRec.AllowMedResulting);
+  mnuActRemoveMed.Enabled          :=   mnuActConsultResults.Enabled and
+                                        ((ConsultRec.ORStatus=ST_COMPLETE) and (MenuAccessRec.AllowMedDissociate));
+  mnuActNoteEdit.Enabled           :=   mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0) or
+                                        (FActionType = CN_ACT_COMPLETE) or
+                                        (FActionType = CN_ACT_ADDENDUM)));
+  mnuActNoteDelete.Enabled         :=   mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0) or
+                                        (FActionType = CN_ACT_COMPLETE) or
+                                        (FActionType = CN_ACT_ADDENDUM)));
+  mnuActSignatureSign.Enabled      :=   mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0) or
+                                        (FActionType = CN_ACT_COMPLETE) or
+                                        (FActionType = CN_ACT_ADDENDUM)))
+                                        or
+                                        ((Notifications.Active) and
+                                        (lstConsults.ItemIEN = CurrNotifIEN) and
+                                        (Notifications.FollowUp = NF_CONSULT_UNSIGNED_NOTE) and
+                                        (lstNotes.ItemIndex > -1));
+  mnuActSignatureList.Enabled      :=   mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0) or
+                                        (FActionType = CN_ACT_COMPLETE) or
+                                        (FActionType = CN_ACT_ADDENDUM)))
+                                        or
+                                        ((Notifications.Active) and
+                                        (lstConsults.ItemIEN = CurrNotifIEN) and
+                                        (Notifications.FollowUp = NF_CONSULT_UNSIGNED_NOTE) and
+                                        (lstNotes.ItemIndex > -1));
+  mnuActSignatureSave.Enabled      :=   mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0) or
+                                        (FActionType = CN_ACT_COMPLETE) or
+                                        (FActionType = CN_ACT_ADDENDUM)));
+  mnuActIdentifyAddlSigners.Enabled :=  mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0)));
+  mnuActNotePrint.Enabled           :=  mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and
+                                        ((ConsultRec.TIUResultNarrative>0) or
+                                        (lstNotes.ItemIEN > 0)));
+  mnuActChange.Enabled              :=  mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and (lstNotes.ItemIndex = EditingIndex));
+  mnuActLoadBoiler.Enabled          :=  mnuActConsultResults.Enabled and
+                                        ((lstNotes.ItemIndex > -1) and (lstNotes.ItemIndex = EditingIndex));
+
+  if ((lstNotes.ItemIndex > -1) and UserIsSigner(lstNotes.ItemIEN)) then
+  begin
+    mnuActSignatureList.Enabled := True;
+    mnuActSignatureSign.Enabled := True;
+    mnuActConsultResults.Enabled := True;
+  end;
+
+  popNoteMemoSignList.Enabled       :=  //(mnuActConsultResults.Enabled) and
+                                        (mnuActSignatureList.Enabled) ;
+  popNoteMemoSign.Enabled           :=  //(mnuActConsultResults.Enabled) and
+                                        mnuActSignatureSign.Enabled ;
+  popNoteMemoSave.Enabled           :=  //(mnuActConsultResults.Enabled) and
+                                        mnuActSignatureSave.Enabled ;
+  popNoteMemoEdit.Enabled           :=  //(mnuActConsultResults.Enabled) and
+                                        mnuActNoteEdit.Enabled;
+  popNoteMemoAddend.Enabled         :=  //(mnuActConsultResults.Enabled) and
+                                        mnuActMakeAddendum.Enabled;
+  popNoteMemoDelete.Enabled         :=  //(mnuActConsultResults.Enabled) and
+                                        mnuActNoteDelete.Enabled;
+  popNoteMemoAddlSign.Enabled       :=  //(mnuActConsultResults.Enabled) and
+                                        mnuActIdentifyAddlSigners.Enabled;
+  popNoteMemoPrint.Enabled          :=  (mnuActNotePrint.Enabled);
+end;
+
+procedure TfrmConsults.DisplayPCE;
+{ displays PCE information if appropriate & enables/disables editing of PCE data }
+var
+  EnableList, ShowList: TDrawers;
+  VitalStr:   TStringlist;
+  NoPCE:      boolean;
+  ActionSts: TActionRec;
+
+begin
+  if (lstNotes.ItemIndex=-1) or (lstNotes.Items.Count=0) then exit ;
+  memPCEShow.Clear;
+  with lstNotes do if ItemIndex = EditingIndex then
+  begin
+    with uPCEEdit do
+    begin
+      AddStrData(memPCEShow.Lines);
+      NoPCE := (memPCEShow.Lines.Count = 0);
+      VitalStr  := TStringList.create;
+      try
+        GetVitalsFromDate(VitalStr, uPCEEdit);
+        AddVitalData(VitalStr, memPCEShow.Lines);
+      finally
+        VitalStr.free;
+      end;
+      cmdPCE.Enabled := CanEditPCE(uPCEEdit);
+      ShowPCEControls(cmdPCE.Enabled or (memPCEShow.Lines.Count > 0));
+      if(NoPCE and memPCEShow.Visible) then
+        memPCEShow.Lines.Insert(0, TX_NOPCE);
+
+      if(InteractiveRemindersActive) then
+      begin
+        if(GetReminderStatus = rsNone) then
+          EnableList := [odTemplates]
+        else
+          EnableList := [odTemplates, odReminders];
+        ShowList := [odTemplates, odReminders];
+      end
+      else
+      begin
+        EnableList := [odTemplates];
+        ShowList := [odTemplates];
+      end;
+      frmDrawers.Visible := True;
+      frmDrawers.DisplayDrawers(TRUE, EnableList, ShowList);
+      cmdNewConsult.Visible := False;
+      cmdNewProc.Visible := False;
+      pnlConsultList.Height := (pnlLeft.Height div 5);
+
+      cmdPCE.Visible := TRUE;
+    end;
+  end else
+  begin
+    //VitalStr := TStringList.create;
+    //VitalStr.clear;
+    cmdPCE.Enabled := False;
+
+    frmDrawers.Visible := False;
+    frmDrawers.DisplayDrawers(FALSE);
+    cmdPCE.Visible := FALSE;
+    cmdNewConsult.Visible := True;
+    cmdNewProc.Top := cmdNewConsult.Top + cmdNewConsult.Height;
+    cmdNewProc.Visible := True;
+    pnlConsultList.Height := (pnlLeft.Height div 2);
+    //pnlConsultList.Height := 3 * (pnlLeft.Height div 5);
+
+    ActOnDocument(ActionSts, lstNotes.ItemIEN, 'VIEW');
+    if ActionSts.Success then
+    begin
+      StatusText('Retrieving encounter information...');
+      with uPCEShow do
+      begin
+        NoteDateTime := MakeFMDateTime(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+        PCEForNote(lstNotes.ItemIEN, uPCEEdit);
+        AddStrData(memPCEShow.Lines);
+        NoPCE := (memPCEShow.Lines.Count = 0);
+        VitalStr  := TStringList.create;
+        try
+          GetVitalsFromNote(VitalStr, uPCEShow, lstNotes.ItemIEN);
+          AddVitalData(VitalStr, memPCEShow.Lines);
+        finally
+          VitalStr.free;
+        end;
+        ShowPCEControls(memPCEShow.Lines.Count > 0);
+        if(NoPCE and memPCEShow.Visible) then
+          memPCEShow.Lines.Insert(0, TX_NOPCE);
+      end;
+      StatusText('');
+    end
+    else
+      ShowPCEControls(FALSE);
+  end; {if ItemIndex}
+  memPCEShow.SelStart := 0;
+  popNoteMemoEncounter.Enabled := cmdPCE.Enabled;
+  popNoteMemoEncounter.Visible := cmdPCE.Visible;
+end;
+
+procedure TfrmConsults.ShowPCEControls(ShouldShow: Boolean);
+begin
+  sptVert.Visible    := ShouldShow;
+  memPCEShow.Visible := ShouldShow;
+  if(ShouldShow) then
+    sptVert.Top := memPCEShow.Top - sptVert.Height;
+  memResults.Invalidate;
+end;
+
+procedure TfrmConsults.RemovePCEFromChanges(IEN: Integer; AVisitStr: string = '');
+begin
+  if IEN = CN_ADDENDUM then Exit;  // no PCE information entered for an addendum
+  if AVisitStr = '' then AVisitStr := VisitStrForNote(IEN);
+  Changes.Remove(CH_PCE, 'V' + AVisitStr);
+  Changes.Remove(CH_PCE, 'P' + AVisitStr);
+  Changes.Remove(CH_PCE, 'D' + AVisitStr);
+  Changes.Remove(CH_PCE, 'I' + AVisitStr);
+  Changes.Remove(CH_PCE, 'S' + AVisitStr);
+  Changes.Remove(CH_PCE, 'A' + AVisitStr);
+  Changes.Remove(CH_PCE, 'H' + AVisitStr);
+  Changes.Remove(CH_PCE, 'E' + AVisitStr);
+  Changes.Remove(CH_PCE, 'T' + AVisitStr);
+end;
+
+procedure TfrmConsults.lstNotesClick(Sender: TObject);
+{ loads the text for the selected note or displays the editing panel for the selected note }
+var
+ x: string;
+begin
+  inherited;
+  if (lstNotes.ItemIEN = -1) then exit ;
+  with lstNotes do
+   if ItemIndex = EditingIndex then
+     begin
+       lstConsults.Enabled := False ;
+       tvConsults.Enabled := False;
+       pnlResults.Visible := True;
+       pnlResults.BringToFront;
+       memConsult.TabStop := False;
+       mnuActChange.Enabled     := True;
+       mnuActLoadBoiler.Enabled := True;
+       UpdateReminderFinish;
+     end
+   else
+     begin
+       StatusText('Retrieving selected item...');
+       if EditingIndex = -1 then
+         begin
+           lstConsults.Enabled := True ;
+           tvConsults.Enabled := True;
+         end;
+       lblTitle.Caption := MakeConsultNoteDisplayText(lstNotes.Items[lstNotes.ItemIndex]);
+       lblTitle.Hint := lblTitle.Caption;
+       lstNotes.Enabled := True ;
+       pnlResults.Visible := False;
+       UpdateReminderFinish;
+       pnlRead.BringToFront;
+       memConsult.TabStop := True;
+       if Copy(Piece(lstNotes.ItemID, ';', 2), 1, 4)= 'MCAR' then
+         begin
+           QuickCopy(GetDetailedMedicineResults(lstNotes.ItemID), memConsult);
+           x := Piece(Piece(Piece(lstNotes.ItemID, ';', 2), '(', 2), ',', 1) + ';' + Piece(lstNotes.ItemID, ';', 1);
+           x := 'MED^' + x;
+           SetPiece(x, U, 10, Piece(lstNotes.Items[lstNotes.ItemIndex], U, 11));
+           NotifyOtherApps(NAE_REPORT, x);
+         end
+       else
+         begin
+           LoadDocumentText(memConsult.Lines,ItemIEN) ;
+           mnuActChange.Enabled     := False;
+           mnuActLoadBoiler.Enabled := False;
+           x := 'TIU^' + lstNotes.ItemID;
+           SetPiece(x, U, 10, Piece(lstNotes.Items[lstNotes.ItemIndex], U, 11));
+           NotifyOtherApps(NAE_REPORT, x);
+         end;
+       memConsult.SelStart := 0;
+     end;
+  if Copy(Piece(lstNotes.ItemID, ';', 2), 1, 4) <> 'MCAR' then
+    begin
+      if(assigned(frmReminderTree)) then frmReminderTree.EnableActions;
+      DisplayPCE;
+    end;
+  pnlRight.Refresh;
+  memConsult.Repaint;
+  memResults.Repaint;
+  SetResultMenus;
+  StatusText('');
+end;
+
+procedure TfrmConsults.popNoteMemoPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteMemo) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popNoteMemo))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+   begin
+    popNoteMemoCut.Enabled       := FEditCtrl.SelLength > 0;
+    popNoteMemoCopy.Enabled      := popNoteMemoCut.Enabled;
+    popNoteMemoPaste.Enabled     := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                    Clipboard.HasFormat(CF_TEXT);
+    popNoteMemoTemplate.Enabled  := frmDrawers.CanEditTemplates and popNoteMemoCut.Enabled;
+    popNoteMemoFind.Enabled      := FEditCtrl.GetTextLen > 0;
+   end
+  else
+   begin
+    popNoteMemoCut.Enabled       := False;
+    popNoteMemoCopy.Enabled      := False;
+    popNoteMemoPaste.Enabled     := False;
+    popNoteMemoTemplate.Enabled  := False;
+   end;
+  if pnlResults.Visible then
+  begin
+    popNoteMemoSpell.Enabled    := True;
+    popNoteMemoGrammar.Enabled  := True;
+    popNoteMemoReformat.Enabled := True;
+    popNoteMemoReplace.Enabled  := (FEditCtrl.GetTextLen > 0);
+    popNoteMemoPreview.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+    popNoteMemoInsTemplate.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+  end else
+  begin
+    popNoteMemoSpell.Enabled    := False;
+    popNoteMemoGrammar.Enabled  := False;
+    popNoteMemoReformat.Enabled := False;
+    popNoteMemoReplace.Enabled  := False;
+    popNoteMemoPreview.Enabled  := False;
+    popNoteMemoInsTemplate.Enabled := False;
+  end;
+end;
+
+procedure TfrmConsults.popNoteMemoCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmConsults.popNoteMemoCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmConsults.popNoteMemoPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText; {*KCM*}
+  //FEditCtrl.PasteFromClipboard;        // use AsText to prevent formatting
+end;
+
+procedure TfrmConsults.popNoteMemoReformatClick(Sender: TObject);
+begin
+  inherited;
+  if Screen.ActiveControl <> memResults then Exit;
+  ReformatMemoParagraph(memResults);
+end;
+
+procedure TfrmConsults.popNoteMemoFindClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popNoteMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgFindText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmConsults.dlgFindTextFind(Sender: TObject);
+begin
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmConsults.dlgReplaceTextFind(Sender: TObject);
+begin
+  inherited;
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmConsults.dlgReplaceTextReplace(Sender: TObject);
+begin
+  inherited;
+  dmodShared.ReplaceRichEditText(dlgReplaceText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmConsults.popNoteMemoReplaceClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popNoteMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgReplaceText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      ReplaceText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmConsults.popNoteMemoSpellClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    SpellCheckForControl(memResults);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmConsults.popNoteMemoGrammarClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    GrammarCheckForControl(memResults);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmConsults.RequestPrint;
+var
+  Saved: boolean;
+begin
+  inherited;
+  if lstNotes.ItemIEN = EditingIndex then  // !KCM! in response to WPB-0898-31166
+  //if ItemIEN < 0 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  with lstConsults do
+    if ItemIEN > 0 then PrintSF513(ItemIEN, DisplayText[ItemIndex]) else
+     begin
+      if ItemIEN = 0 then InfoBox(TX_NOCONSULT, TX_NOCSLT_CAP, MB_OK);
+      if lstNotes.ItemIEN < 0 then InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+     end;
+end;
+
+{for printing multiple notes}
+procedure TfrmConsults.RequestMultiplePrint(AForm: TfrmPrintList);
+var
+  NoteIEN: int64;
+  i: integer;
+begin
+  with AForm.lbIDParents do
+  for i := 0 to Items.Count - 1 do
+  if Selected[i] then
+  begin
+    NoteIEN := StrToInt64def(Piece(Items[i], U, 1), 0);
+    if NoteIEN > 0 then PrintSF513(NoteIEN, DisplayText[i])
+    else if NoteIEN = 0 then InfoBox(TX_NOCONSULT, TX_NOCSLT_CAP, MB_OK)
+    else InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+  end;
+end;
+
+procedure TfrmConsults.mnuActDisplayResultsClick(Sender: TObject);
+var
+  Saved: boolean;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0 then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  lstNotes.ItemIndex := -1 ;
+  DisplayResults(memConsult.Lines, lstConsults.ItemIEN) ;
+  memConsult.SelStart := 0;
+  SetResultMenus;
+  if memConsult.CanFocus then
+    memConsult.SetFocus;
+end;
+
+procedure TfrmConsults.mnuActDisplaySF513Click(Sender: TObject);
+var
+  Saved: boolean;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0 then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  lstNotes.ItemIndex := -1 ;
+  with lstConsults do
+    if ItemIEN > 0 then ReportBox(ShowSF513(ItemIEN),DisplayText[ItemIndex], False)
+    else
+    begin
+      if ItemIEN = 0 then InfoBox(TX_NOCONSULT, TX_NOCSLT_CAP, MB_OK);
+      if lstNotes.ItemIEN < 0 then InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+    end;
+  SetResultMenus;
+end;
+
+procedure TfrmConsults.pnlResultsResize(Sender: TObject);
+const
+  LEFT_MARGIN = 4;
+begin
+  inherited;
+  LimitEditWidth(memResults, MAX_ENTRY_WIDTH - 1);
+  memResults.Constraints.MinWidth := TextWidthByFont(memResults.Font.Handle, StringOfChar('X', MAX_ENTRY_WIDTH)) + (LEFT_MARGIN * 2) + ScrollBarWidth;
+  //CQ13181	508 Consults--Splitter bar doesn't retain size
+ //CQ13181  pnlLeft.Width := self.ClientWidth - pnlResults.Width - sptHorz.Width;
+end;
+
+procedure TfrmConsults.NotifyOrder(OrderAction: Integer; AnOrder: TOrder);
+var
+  SavedCsltID: string;
+begin
+  if ViewContext = 0 then exit;     // form has not yet been displayed, so nothing to update
+  if EditingIndex <> -1 then exit;  // do not rebuild list until after save
+  with tvConsults do if Selected <> nil then SavedCsltID := lstConsults.ItemID;
+  case OrderAction of
+  ORDER_NEW:  UpdateList ;
+  ORDER_SIGN: UpdateList{ sent by fReview, fOrderSign when orders signed, AnOrder=nil}
+  end;
+  if SavedCsltID <> '' then with tvConsults do
+  begin
+    Selected := FindPieceNode(SavedCsltID, U, Items.GetFirstNode);
+    tvConsultsChange(Self, Selected);
+  end;
+end;
+
+procedure TfrmConsults.mnuActPrintSF513Click(Sender: TObject);
+var
+  Saved: boolean;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0 then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  RequestPrint;
+end;
+
+
+function TfrmConsults.AuthorizedUser: Boolean;
+begin
+  Result := True;
+  if User.NoOrdering then Result := False;
+  if User.OrderRole = OR_BADKEYS then
+  begin
+    InfoBox(TX_BADKEYS, TC_BADKEYS, MB_OK);
+    Result := False;
+  end;
+end;
+
+procedure TfrmConsults.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FocusToRightPanel := False;
+  PageID := CT_CONSULTS;
+  EditingIndex := -1;
+  FLastNoteID := '';
+  FEditNote.LastCosigner := 0;
+  FEditNote.LastCosignerName := '';
+  //pnlConsultList.Height := (pnlLeft.Height div 2);
+  pnlConsultList.Height := 3 * (pnlLeft.Height div 5);
+  frmDrawers := TfrmDrawers.CreateDrawers(Self, pnlAction, [],[]);
+  frmDrawers.Align := alBottom;
+  frmDrawers.RichEditControl := memResults;
+  frmDrawers.Splitter := splDrawers;
+  frmDrawers.DefTempPiece := 2;
+  FImageFlag := TBitmap.Create;
+  FDocList := TStringList.Create;
+  with FCurrentNoteContext do
+    begin
+      GroupBy := '';
+      TreeAscending := False;
+      Status := IntToStr(NC_ALL);
+    end;
+  FCsltList := TStringList.Create;
+end;
+
+procedure TfrmConsults.mnuActDisplayDetailsClick(Sender: TObject);
+var
+  Saved: boolean;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0  then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  tvConsultsChange(Self, tvConsults.Selected);
+  //lstConsultsClick(Self);
+  if memConsult.CanFocus then
+    memConsult.SetFocus;
+end;
+
+procedure TfrmConsults.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  Saved: Boolean;
+  IEN: Int64;
+  ErrMsg: string;
+  DeleteSts: TActionRec;
+begin
+  inherited;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then
+  begin
+    FSilent := True;
+    if memResults.GetTextLen > 0 then SaveCurrentNote(Saved)
+    else
+    begin
+      IEN := lstNotes.GetIEN(EditingIndex);
+      if not LastSaveClean(IEN) then             // means note hasn't been committed yet
+      begin
+        LockDocument(IEN, ErrMsg);
+        if ErrMsg = '' then
+        begin
+          DeleteDocument(DeleteSts, IEN, '');
+          UnlockDocument(IEN);
+        end; {if ErrMsg}
+      end; {if not LastSaveClean}
+    end; {else}
+  end; {if frmFrame}
+end;
+
+procedure TfrmConsults.mnuActIdentifyAddlSignersClick(Sender: TObject);
+var
+  Exclusions: TStrings;
+  Saved, x, y: boolean;
+  SignerList: TSignerList;
+  ActionSts: TActionRec;
+  SigAction: integer;
+  SavedDocID, SavedCsltID: string;
+  ARefDate: TFMDateTime;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  SavedCsltID := lstConsults.ItemID;
+  if lstNotes.ItemIndex = EditingIndex then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+      tvConsultsChange(Self, tvConsults.Selected);
+      with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    end;
+  x := CanChangeCosigner(lstNotes.ItemIEN);
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'IDENTIFY SIGNERS');
+  y := ActionSts.Success;
+  if x and not y then
+    begin
+      if InfoBox(ActionSts.Reason + CRLF + CRLF +
+                 'Would you like to change the cosigner?',
+                 TX_IN_AUTH, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES then
+    	SigAction := SG_COSIGNER
+      else
+	Exit;
+    end
+  else if y and not x then SigAction := SG_ADDITIONAL
+  else if x and y then SigAction := SG_BOTH
+  else
+    begin
+      InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+      Exit;
+    end;
+
+  with lstNotes do
+    begin
+      if not LockConsultRequestAndNote(ItemIEN) then Exit;
+      Exclusions := GetCurrentSigners(ItemIEN);
+      ARefDate := StrToFloat(Piece(Items[ItemIndex], U, 3));
+      SelectAdditionalSigners(Font.Size, ItemIEN, SigAction, Exclusions, SignerList, CT_CONSULTS, ARefDate);
+    end;
+  with SignerList do
+    begin
+      case SigAction of
+        SG_ADDITIONAL:  if Changed and (Signers <> nil) and (Signers.Count > 0) then
+                          UpdateAdditionalSigners(lstNotes.ItemIEN, Signers);
+        SG_COSIGNER:    if Changed then ChangeCosigner(lstNotes.ItemIEN, Cosigner);
+        SG_BOTH:        if Changed then
+                          begin
+                            if (Signers <> nil) and (Signers.Count > 0) then
+                              UpdateAdditionalSigners(lstNotes.ItemIEN, Signers);
+                            ChangeCosigner(lstNotes.ItemIEN, Cosigner);
+                          end;
+      end;
+      lstNotesClick(Self);
+    end;
+  UnlockDocument(lstNotes.ItemIEN);
+  UnlockConsultRequest(lstNotes.ItemIEN, StrToIntDef(SavedCsltID, 0));  // v20.4  RV (unlocking problem)
+  //UnlockConsultRequest(lstNotes.ItemIEN, ConsultRec.IEN);
+end;
+
+procedure TfrmConsults.popNoteMemoAddlSignClick(Sender: TObject);
+begin
+  inherited;
+  mnuActIdentifyAddlSignersClick(Self);
+end;
+
+procedure TfrmConsults.ProcessNotifications;
+var
+  ConsultIEN, NoteIEN: integer;
+  x: string;
+  Saved: boolean;
+  AnObject: PDocTreeObject;
+  tmpNode: TORTreeNode;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FNotifPending := True;
+  NoteIEN := 0;
+  CurrNotifIEN := 0;
+  lblConsults.Caption := Notifications.Text;
+  tvConsults.Caption := Notifications.Text;
+  EditingIndex := -1;
+  lstConsults.Enabled := True ;
+  tvConsults.Enabled := True;
+  lstNotes.Enabled := True ;
+  pnlRead.BringToFront ;
+  memConsult.TabStop := True;
+  lstConsults.Clear;
+
+  if Copy(Piece(Piece(Notifications.RecordID, U, 2),';',1),1,3) = 'TIU' then
+    begin
+      ConsultIEN := StrToIntDef(Piece(Piece(Notifications.RecordID, U, 4),';',2),0);
+      NoteIEN := StrToIntDef(Piece(Notifications.AlertData, U, 1),0);
+    end
+  else if Notifications.Followup = NF_STAT_RESULTS then
+    ConsultIEN := StrToIntDef(Piece(Piece(Piece(Notifications.AlertData, '|', 2), '@', 1), ';', 1), 0)
+  else if Notifications.Followup = NF_CONSULT_PROC_INTERPRETATION then
+    ConsultIEN := StrToIntDef(Piece(Notifications.AlertData, '|', 1), 0)
+  else if ((Notifications.Followup = NF_CONSULT_REQUEST_RESOLUTION) and (Pos('Sig Findings', Notifications.RecordID) = 0)) then
+    ConsultIEN := StrToIntDef(Piece(Notifications.AlertData, '|', 1), 0)
+  else
+    ConsultIEN := StrToIntDef(Notifications.AlertData, 0);
+  x := FindConsult(ConsultIEN);
+  CurrNotifIEN := ConsultIEN;
+  lstConsults.Items.Add(x);
+  uChanging := True;
+  tvConsults.Items.BeginUpdate;
+  tvConsults.Items.Clear;
+  tmpNode := tvConsults.FindPieceNode('Alerted Consult', 2, U, nil);
+  if tmpNode = nil then
+    begin
+      tmpNode := TORTreeNode(tvConsults.Items.AddFirst(tvConsults.Items.GetFirstNode, 'Alerted Consult'));
+      tmpNode.StringData := '-1^Alerted Consult^^^^^^0';
+    end
+  else
+    tmpNode.DeleteChildren;
+  SetNodeImage(tmpNode, FCurrentContext);
+  tmpNode := TORTreeNode(tvConsults.Items.AddChildFirst(tmpNode, MakeConsultListDisplayText(x)));
+  tmpNode.StringData := x;
+  SetNodeImage(tmpNode, FCurrentContext);
+  with tvConsults do Selected := FindPieceNode(Piece(x, U, 1), U, Items.GetFirstNode);
+  tvConsults.Items.EndUpdate;
+  uChanging := False;
+  tvConsultsChange(Self, tvConsults.Selected);
+  if ((Notifications.Followup = NF_CONSULT_REQUEST_RESOLUTION) and (Pos('Sig Findings', Notifications.RecordID) = 0)) then
+    begin
+      //XQADATA = consult_ien|tiu_ien;TIU(8925,
+      if Copy(Piece(Piece(Notifications.AlertData, '|', 2), ';', 2), 1, 3) = 'TIU' then
+        NoteIEN := StrToIntDef(Piece(Piece(Notifications.AlertData, '|', 2), ';', 1), 0);
+    end
+  else if (Notifications.Followup = NF_CONSULT_PROC_INTERPRETATION) then
+    begin
+      NoteIEN := StrToIntDef(Piece(Piece(Notifications.AlertData, '|', 2), ';', 1), 0);
+    end
+  else if (Notifications.Followup = NF_STAT_RESULTS) then
+    begin
+      NoteIEN := 0;   // Note IEN not available for this alert - fall through to display all results - CURTIS?
+    end;
+  tvCsltNotes.FullExpand;
+  if NoteIEN > 0 then with lstNotes do
+    begin
+      if SelectByIEN(NoteIEN) = -1 then
+        begin
+          x := Notifications.AlertData;
+          uChanging := True;
+          tvCsltNotes.Items.BeginUpdate;
+          lstNotes.Clear;
+          KillDocTreeObjects(tvCsltNotes);
+          tvCsltNotes.Items.Clear;
+          lstNotes.Items.Add(x);
+          AnObject := MakeConsultsNoteTreeObject('ALERT^Alerted Note^^^^^^^^^^^%^0');
+          tmpNode := TORTreeNode(tvCsltNotes.Items.AddObjectFirst(tvCsltNotes.Items.GetFirstNode, AnObject.NodeText, AnObject));
+          TORTreeNode(tmpNode).StringData := 'ALERT^Alerted Note^^^^^^^^^^^%^0';
+          tmpNode.ImageIndex := IMG_TOP_LEVEL;
+          AnObject := MakeConsultsNoteTreeObject(x);
+          tmpNode := TORTreeNode(tvCsltNotes.Items.AddChildObjectFirst(tmpNode, AnObject.NodeText, AnObject));
+          tmpNode.StringData := x;
+          SetTreeNodeImagesAndFormatting(tmpNode, FCurrentNoteContext, CT_CONSULTS);
+          with tvCsltNotes do Selected := FindPieceNode(Piece(x, U, 1), U, Items.GetFirstNode);
+          tvCsltNotes.Items.EndUpdate;
+          uChanging := False;
+        end
+      else
+        begin
+          uChanging := True;
+          with tvCsltNotes do Selected := FindPieceNode(IntToStr(NoteIEN), U , nil);
+          uChanging := False;
+        end;
+      tvCsltNotesChange(Self, tvCsltNotes.Selected);
+    end
+  else if (ConsultRec.ORStatus = ST_COMPLETE) and ((ConsultRec.TIUDocuments.Count + ConsultRec.MedResults.Count) > 0) then
+    mnuActDisplayResultsClick(Self);
+    
+  case Notifications.Followup of
+    NF_CONSULT_REQUEST_RESOLUTION   :  Notifications.Delete;
+    NF_NEW_SERVICE_CONSULT_REQUEST  :  Notifications.Delete;
+    NF_STAT_RESULTS                 :  Notifications.Delete;
+    NF_CONSULT_REQUEST_CANCEL_HOLD  :  Notifications.Delete;
+    NF_CONSULT_REQUEST_UPDATED      :  Notifications.Delete;
+    NF_CONSULT_UNSIGNED_NOTE        :  {Will be automatically deleted by TIU sig action!!!} ;
+    NF_CONSULT_PROC_INTERPRETATION  :  Notifications.Delete;      // not sure we want to do this yet,
+                                                                  // but if not now, then when?
+  end;
+  if Copy(Piece(Notifications.RecordID, U, 2), 1, 6) = 'TIUADD' then Notifications.Delete;
+  if Copy(Piece(Notifications.RecordID, U, 2), 1, 5) = 'TIUID' then Notifications.Delete;
+  FNotifPending := False;
+end;
+
+procedure TfrmConsults.mnuActEditResubmitClick(Sender: TObject);
+var
+  Resubmitted: boolean;
+  x: string;
+  SavedConsultID: string;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0  then exit;
+  SavedConsultID := lstConsults.ItemID;
+  x := ConsultCanBeResubmitted(lstConsults.ItemIEN);
+  if Piece(x, U, 1) = '0' then
+    begin
+      InfoBox(Piece(x, U, 2), TC_NO_RESUBMIT, MB_OK);
+      Exit;
+    end;
+  if ConsultRec.ConsultProcedure <> '' then
+    Resubmitted := EditResubmitProcedure(Font.Size, lstConsults.ItemIEN)
+  else
+    Resubmitted := EditResubmitConsult(Font.Size, lstConsults.ItemIEN);
+  if Resubmitted then
+    begin
+      LoadConsults;
+      with tvConsults do Selected := FindPieceNode(SavedConsultID, 1, U, Items.GetFirstNode);
+      tvConsultsClick(Self);
+    (*      lstConsults.Clear;
+      lstConsults.Items.Add(FindConsult(ConsultRec.IEN));
+      lstConsults.SelectByIEN(ConsultRec.IEN);
+      lstConsultsClick(Self);*)
+    end;
+end;
+
+procedure TfrmConsults.EnableDisableOrdering;
+begin
+  if User.NoOrdering then
+    begin
+      cmdNewConsult.Enabled := False;
+      cmdNewProc.Enabled := False;
+      mnuActNew.Enabled  := False;
+      Exit;
+    end;
+end;
+
+procedure TfrmConsults.UMNewOrder(var Message: TMessage);
+{ update consults list if progress note completes consult }
+begin
+  with Message do
+  begin
+    if ViewContext = 0 then exit;  // form has not yet been displayed, so nothing to update
+    UpdateList;
+  end;
+end;
+
+procedure TfrmConsults.cmdEditResubmitClick(Sender: TObject);
+begin
+  inherited;
+  mnuActEditResubmitClick(Self);
+end;
+
+procedure TfrmConsults.cmdEditResubmitExit(Sender: TObject);
+begin
+  inherited;
+  DoLeftPanelCustomShiftTab;
+end;
+
+procedure TfrmConsults.mnuViewSaveAsDefaultClick(Sender: TObject);
+begin
+  inherited;
+  if InfoBox('Replace current defaults?','Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      SaveCurrentContext(FCurrentContext);
+      lblConsults.Caption := 'Default List';
+      tvConsults.Caption := 'Default List';
+      FDefaultContext := FCurrentContext;
+    end;
+end;
+
+procedure TfrmConsults.mnuViewReturntoDefaultClick(Sender: TObject);
+begin
+  inherited;
+  lblConsults.Caption := 'Default List';
+  tvConsults.Caption := 'Default List';
+  SetViewContext(FDefaultContext);
+end;
+
+procedure TfrmConsults.popNoteMemoTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, True, FEditCtrl.SelText);
+end;
+
+procedure TfrmConsults.mnuEditTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self);
+end;
+
+procedure TfrmConsults.mnuNewTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, True);
+end;
+
+procedure TfrmConsults.pnlLeftExit(Sender: TObject);
+begin
+  inherited;
+  if (Not FocusToRightPanel) then
+    if ShiftTabIsPressed then
+      frmFrame.tabPage.SetFocus
+    else if TabIsPressed then
+      frmFrame.pnlPatient.SetFocus;
+
+  if FocusToRightPanel then
+    FocusToRightPanel := False;
+end;
+
+procedure TfrmConsults.pnlLeftResize(Sender: TObject);
+begin
+  inherited;
+  if EditingIndex = -1 then
+    pnlConsultList.Height := (pnlLeft.Height div 2)
+    //pnlConsultList.Height := 3 * (pnlLeft.Height div 5)
+  else
+    pnlConsultList.Height := (pnlLeft.Height div 5);
+  Self.Invalidate;
+end;
+
+procedure TfrmConsults.mnuOptionsClick(Sender: TObject);
+begin
+  inherited;
+  mnuEditTemplates.Enabled := frmDrawers.CanEditTemplates;
+  mnuNewTemplate.Enabled := frmDrawers.CanEditTemplates;
+  mnuEditSharedTemplates.Enabled := frmDrawers.CanEditShared;
+  mnuNewSharedTemplate.Enabled := frmDrawers.CanEditShared;
+  mnuEditDialgFields.Enabled := CanEditTemplateFields;
+end;
+
+procedure TfrmConsults.mnuEditSharedTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, FALSE, '', TRUE);
+end;
+
+procedure TfrmConsults.mnuNewSharedTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE, '', TRUE);
+end;
+
+procedure TfrmConsults.mnuActNotePrintClick(Sender: TObject);
+var
+  Saved: Boolean;
+begin
+  inherited;
+  with lstNotes do
+  begin
+    if ItemIndex = EditingIndex then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+    end;
+    if ItemIEN > 0 then PrintNote(ItemIEN, MakeConsultNoteDisplayText(Items[ItemIndex])) else
+    begin
+      if ItemIEN = 0 then InfoBox(TX_NONOTE, TX_NONOTE_CAP, MB_OK);
+      if ItemIEN < 0 then InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+    end;
+  end;
+end;
+
+procedure TfrmConsults.popNoteMemoPrintClick(Sender: TObject);
+begin
+  inherited;
+  mnuActNotePrintClick(Self);
+end;
+
+
+//========================== leave these at end of file =============================
+
+(*procedure TfrmConsults.lstNotesDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+const
+  STD_DATE = 'MMM DD,YY';
+begin
+  inherited;
+	 with (Control as TORListBox).Canvas do  { draw on control canvas, not on the form }
+    begin
+      FImageFlag.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_1');
+      x := (Control as TORListBox).Items[Index];
+      (Control as TORListBox).ItemHeight := HigherOf(TextHeight(x), FImageFlag.Height);
+      FillRect(Rect);       { clear the rectangle }
+      if StrToIntDef(Piece(x, U, 7), 0) > 0 then
+        begin
+          if StrToIntDef(Piece(x, U, 7), 0) = 1 then
+            FImageFlag.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_1')
+          else if StrToIntDef(Piece(x, U, 7), 0) = 2 then
+            FImageFlag.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_2')
+          else if StrToIntDef(Piece(x, U, 7), 0) > 2 then
+            FImageFlag.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_3');
+          BrushCopy(Bounds(Rect.Left, Rect.Top, FImageFlag.Width, FImageFlag.Height),
+            FImageFlag, Bounds(0, 0, FImageFlag.Width, FImageFlag.Height), clRed); {render ImageFlag}
+        end;
+      TextOut(Rect.Left + FImageFlag.Width, Rect.Top, Piece(x, U, 2));
+      TextOut(Rect.Left + FImageFlag.Width + TextWidth(STD_DATE), Rect.Top, Piece(x, U, 3));
+    end;
+end;
+*)
+procedure TfrmConsults.FormDestroy(Sender: TObject);
+begin
+  FDocList.Free;
+  FCsltList.Free;
+  FImageFlag.Free;
+  KillDocTreeObjects(tvCsltNotes);
+  inherited;
+end;
+
+function TfrmConsults.GetDrawers: TFrmDrawers;
+begin
+  Result := frmDrawers;
+end;
+
+procedure TfrmConsults.SetEditingIndex(const Value: Integer);
+begin
+  FEditingIndex := Value;
+  if(FEditingIndex < 0) then
+    KillReminderDialog(Self);
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.EnableActions;
+end;
+
+function TfrmConsults.LockConsultRequest(AConsult: Integer): Boolean;
+{ returns true if consult successfully locked }
+begin
+  // *** I'm not sure about the FOrderID field - if the user is editing one note and
+  //     deletes another, FOrderID will be for editing note, then delete note, then null
+  Result := True;
+  FOrderID := GetConsultOrderIEN(AConsult);
+  if frmNotes.ActiveEditOf(0, AConsult) then
+    begin
+      InfoBox(TX_ORDER_LOCKED, TC_ORDER_LOCKED, MB_OK);
+      Result := False;
+      FOrderID := '';
+      Exit;
+    end;
+(*  if (FOrderID <> '') and (FOrderID = frmNotes.OrderID) then
+  begin
+    InfoBox(TX_ORDER_LOCKED, TC_ORDER_LOCKED, MB_OK);
+    Result := False;
+    FOrderID := '';
+    Exit;
+  end;*)
+  if (FOrderId <> '') then
+    if not OrderCanBeLocked(FOrderID) then Result := False;
+  if not Result then FOrderID := '';
+end;
+
+function TfrmConsults.LockConsultRequestAndNote(AnIEN: Int64): Boolean;
+{ returns true if note and associated request successfully locked }
+var
+  AConsult: Integer;
+  LockMsg, x: string;
+begin
+  Result := True;
+  AConsult := 0;
+  if frmNotes.ActiveEditOf(AnIEN, lstConsults.ItemIEN) then
+    begin
+      InfoBox(TX_ORDER_LOCKED, TC_ORDER_LOCKED, MB_OK);
+      Result := False;
+      Exit;
+    end;
+  if Changes.Exist(CH_CON, IntToStr(AnIEN)) then Exit;  // already locked
+  // try to lock the consult request first, if there is one
+  if IsConsultTitle(TitleForNote(AnIEN)) then
+  begin
+    x := GetPackageRefForNote(lstNotes.ItemIEN);
+    AConsult := StrToIntDef(Piece(x, ';', 1), 0);
+    //AConsult := GetConsultIENforNote(lstNotes.ItemIEN);
+    Result := LockConsultRequest(AConsult);
+  end;
+  // now try to lock the note
+  if Result then
+  begin
+    LockDocument(AnIEN, LockMsg);
+    if LockMsg <> '' then
+    begin
+      Result := False;
+      // if can't lock the note, unlock the consult request that was just locked
+      if AConsult > 0 then
+      begin
+        UnlockOrderIfAble(FOrderID);
+        FOrderID := '';
+      end;
+      InfoBox(LockMsg, TC_NO_LOCK, MB_OK);
+    end;
+  end;
+  if not Result then FOrderID := '';
+end;
+
+procedure TfrmConsults.UnlockConsultRequest(ANote: Int64; AConsult: Integer = 0);
+(*var
+  x: string;*)
+begin
+(*  if (AConsult = 0) then
+    begin
+      x := GetPackageRefForNote(ANote);
+      AConsult := StrToIntDef(Piece(x, ';', 1), 0);
+    end;
+  if AConsult = 0 then Exit;*)
+  if AConsult = 0 then AConsult := GetConsultIENForNote(ANote);
+  if AConsult <= 0 then exit;
+  FOrderID := GetConsultOrderIEN(AConsult);
+  UnlockOrderIfAble(FOrderID);
+  FOrderID := '';
+end;
+
+function TfrmConsults.ActiveEditOf(AnIEN: Int64): Boolean;
+var
+  ARequest: integer;
+  x: string;
+begin
+  Result := False;
+  if (lstNotes.ItemIEN = AnIEN) and (lstNotes.ItemIndex = EditingIndex) then
+    begin
+      Result := True;
+      Exit;
+    end;
+  x := GetPackageRefForNote(AnIEN);
+  ARequest := StrToIntDef(Piece(x, ';', 1), 0);
+  //ARequest := GetConsultIENForNote(AnIEN);
+  if (lstConsults.ItemIEN = ARequest) and (EditingIndex > -1) then Result := True;
+end;
+
+function TfrmConsults.StartNewEdit(NewNoteType: integer): Boolean;
+{ if currently editing a note, returns TRUE if the user wants to start a new one }
+var
+  Saved: Boolean;
+  AConsultID, ANoteID: string;
+  Msg, CapMsg: string;
+begin
+  AConsultID := lstConsults.ItemID;
+  ANoteID := lstNotes.ItemID;
+  Result := True;
+  if EditingIndex > -1 then
+  begin
+    case NewNoteType of
+      NT_ACT_ADDENDUM:  begin
+                          Msg := TX_NEW_SAVE1 + MakeConsultNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE3;
+                          CapMsg := TC_NEW_SAVE3;
+                        end;
+      NT_ACT_EDIT_NOTE: begin
+                          Msg := TX_NEW_SAVE1 + MakeConsultNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE4;
+                          CapMsg := TC_NEW_SAVE4;
+                        end;
+      NT_ACT_ID_ENTRY:  begin
+                          Msg := TX_NEW_SAVE1 + MakeConsultNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE5;
+                          CapMsg := TC_NEW_SAVE5;
+                        end;
+    else
+      begin
+        Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE2;
+        CapMsg := TC_NEW_SAVE2;
+      end;
+    end;
+    if InfoBox(Msg, CapMsg, MB_YESNO) = IDNO then Result := False
+    else
+      begin
+        SaveCurrentNote(Saved);
+        if not Saved then Result := False
+        else
+          begin
+            with tvConsults do Selected := FindPieceNode(AConsultID, 1, U, Items.GetFirstNode);
+            tvConsultsClick(Self);
+            with tvCsltNotes do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);
+          end;
+      end;
+  end;
+end;
+
+function TfrmConsults.LacksRequiredForCreate: Boolean;
+{ determines if the fields required to create the note are present }
+var
+  CurTitle: Integer;
+begin
+  Result := False;
+  with FEditNote do
+  begin
+    if Title <= 0    then Result := True;
+    if Author <= 0   then Result := True;
+    if DateTime <= 0 then Result := True;
+    if MenuAccessRec.IsClinicalProcedure then
+      begin
+        if (IsClinProcTitle(Title) and (PkgIEN = 0)) then Result := True;
+        //if (IsClinProcTitle(Title) and (Consult = 0)) then Result := True;
+      end
+    else
+      if (IsConsultTitle(Title) and (PkgIEN = 0)) then Result := True;
+      //if (IsConsultTitle(Title) and (Consult = 0)) then Result := True;
+    if (DocType = TYP_ADDENDUM) then
+    begin
+      if AskCosignerForDocument(Addend, Author, DateTime) and (Cosigner <= 0) then Result := True;
+    end else
+    begin
+      if Title > 0 then CurTitle := Title else CurTitle := DocType;
+      if AskCosignerForTitle(CurTitle, Author, DateTime) and (Cosigner <= 0) then Result := True;
+    end;
+  end;
+end;
+
+function TfrmConsults.LacksClinProcFields(AnEditRec: TEditNoteRec; AMenuAccessRec: TMenuAccessRec; var ErrMsg: string): boolean;
+begin
+  Result := False;
+  if not AMenuAccessRec.IsClinicalProcedure then exit;
+  with AnEditRec do
+    begin
+      if Author <= 0 then
+        begin
+          Result := True;
+          ErrMsg := TX_NO_AUTHOR;
+        end;
+      if AskCosignerForTitle(Title, Author, DateTime) and (Cosigner = 0) then
+        begin
+          Result := True;
+          ErrMsg := ErrMsg + CRLF + TX_REQ_COSIGNER;
+        end;
+      if (DocType <> TYP_ADDENDUM) and (AMenuAccessRec.ClinProcFlag = CP_INSTR_INCOMPLETE) then
+        begin
+          if (ClinProcSummCode = 0) or (ClinProcDateTime <= 0) then
+            begin
+              Result := True;
+              ErrMsg := ErrMsg + CRLF + TX_CLIN_PROC;
+            end;
+        end;
+    end;
+end;
+
+function TfrmConsults.LacksClinProcFieldsForSignature(NoteIEN: int64; var ErrMsg: string): boolean;
+var
+  CsltIEN: integer;
+  CsltActionRec: TMenuAccessRec;
+  SignRec: TEditNoteRec;
+begin
+  Result := False;
+  CsltIEN := GetConsultIENForNote(NoteIEN);
+  if CsltIEN <= 0 then exit;
+  CsltActionRec := GetActionMenuLevel(CsltIEN);
+  if not CsltActionRec.IsClinicalProcedure then exit;
+  if not IsClinProcTitle(TitleForNote(NoteIEN)) then exit;
+  SignRec := GetSavedCPFields(NoteIEN);
+  Result := LacksClinProcFields(SignRec, CsltActionRec, ErrMsg);
+end;
+
+function TfrmConsults.GetTitleText(AnIndex: Integer): string;
+{ returns non-tabbed text for the title of a note given the ItemIndex in lstNotes }
+var
+  x: string;
+begin
+  with lstNotes do
+    x := MakeConsultNoteDisplayText(Items[AnIndex]);
+(*    x := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(Items[AnIndex], U, 3))) +
+              ' ' + Piece(Items[AnIndex], U, 2);*)
+  Result := x;
+end;
+
+(*function TfrmConsults.MakeTitleText(IsAddendum: Boolean = False): string;
+{ returns display text for list box based on FEditNote }
+begin
+  Result := FormatFMDateTime('mmm dd,yy', FEditNote.DateTime) + U;
+  if IsAddendum and (CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0)
+    then Result := Result + 'Addendum to ';
+  Result := Result + FEditNote.TitleName + ', ' + FEditNote.LocationName + ', ' +
+            FEditNote.AuthorName;
+end;*)
+
+function TfrmConsults.VerifyNoteTitle: Boolean;
+const
+  VNT_UNKNOWN = 0;
+  VNT_NO      = 1;
+  VNT_YES     = 2;
+var
+  AParam: string;
+begin
+  if FVerifyNoteTitle = VNT_UNKNOWN then
+  begin
+    AParam := GetUserParam('ORWOR VERIFY NOTE TITLE');
+    if AParam = '1' then FVerifyNoteTitle := VNT_YES else FVerifyNoteTitle := VNT_NO;
+  end;
+  Result := FVerifyNoteTitle = VNT_YES;
+end;
+
+procedure TfrmConsults.SetSubjectVisible(ShouldShow: Boolean);
+{ hide/show subject & resize panel accordingly - leave 6 pixel margin above memNewNote }
+begin
+  if ShouldShow then
+  begin
+    lblSubject.Visible := True;
+    txtSubject.Visible := True;
+    pnlFields.Height   := txtSubject.Top + txtSubject.Height + 6;
+  end else
+  begin
+    lblSubject.Visible := False;
+    txtSubject.Visible := False;
+    pnlFields.Height   := lblVisit.Top + lblVisit.Height + 6;
+  end;
+end;
+
+
+procedure TfrmConsults.timAutoSaveTimer(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave;
+end;
+
+procedure TfrmConsults.DoAutoSave(Suppress: integer = 1);
+var
+  ErrMsg: string;
+begin
+  if fFrame.frmFrame.DLLActive = True then Exit;  
+  if (EditingIndex > -1) and FChanged then
+  begin
+    StatusText('Autosaving note...');
+    //PutTextOnly(ErrMsg, memResults.Lines, lstNotes.GetIEN(EditingIndex));
+    timAutoSave.Enabled := False;
+    try
+      SetText(ErrMsg, memResults.Lines, lstNotes.GetIEN(EditingIndex), Suppress);
+    finally
+      timAutoSave.Enabled := True;
+    end;
+    FChanged := False;
+    StatusText('');
+  end;
+  if ErrMsg <> '' then
+    InfoBox(TX_SAVE_ERROR1 + ErrMsg + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  //Assert(ErrMsg = '', 'AutoSave: ' + ErrMsg);
+end;
+
+procedure TfrmConsults.DoLeftPanelCustomShiftTab;
+begin
+  if ShiftTabIsPressed then begin
+    FocusToRightPanel := True;
+    FindNextControl(frmFrame.pnlPatient, False, True, False).SetFocus;
+  end;
+end;
+
+procedure TfrmConsults.cmdChangeClick(Sender: TObject);
+var
+  LastTitle, LastConsult: Integer;
+  (*OKPressed, *)IsIDChild, UseClinProcTitles: Boolean;
+  x, AClassName: string;
+begin
+  inherited;
+  FcmdChangeOKPressed := False;
+  IsIDChild := uIDNotesActive and (FEditNote.IDParent > 0);
+  LastTitle   := FEditNote.Title;
+  LastConsult := FEditNote.PkgIEN;
+  with MenuAccessRec do
+    UseClinProcTitles := ((IsClinicalProcedure) and
+                         (ClinProcFlag in [CP_NO_INSTRUMENT, CP_INSTR_INCOMPLETE, CP_INSTR_COMPLETE]));
+  if UseClinProcTitles then AClassName := DCL_CLINPROC else AClassName := DCL_CONSULTS;
+  if Sender <> Self then
+    FcmdChangeOKPressed := ExecuteNoteProperties(FEditNote, CT_CONSULTS, IsIDChild, False, AClassName,
+                              MenuAccessRec.ClinProcFlag)
+  else FcmdChangeOKPressed := True;
+  if not FcmdChangeOKPressed then Exit;
+  // update display fields & uPCEEdit
+  lblNewTitle.Caption := ' ' + FEditNote.TitleName + ' ';
+  if (FEditNote.Addend > 0) and (CompareText(Copy(lblNewTitle.Caption, 2, 8), 'Addendum') <> 0)
+    then lblNewTitle.Caption := ' Addendum to:' + lblNewTitle.Caption;
+  with lblNewTitle do bvlNewTitle.SetBounds(Left - 1, Top - 1, Width + 2, Height + 2);
+  lblRefDate.Caption := FormatFMDateTime('mmm dd,yyyy@hh:nn', FEditNote.DateTime);
+  lblAuthor.Caption  := FEditNote.AuthorName;
+  if uPCEEdit.Inpatient then x := 'Adm: ' else x := 'Vst: ';
+  x := x + FormatFMDateTime('mm/dd/yy', FEditNote.VisitDate) + '  ' + FEditNote.LocationName;
+  lblVisit.Caption   := x;
+  if Length(FEditNote.CosignerName) > 0
+    then lblCosigner.Caption := 'Expected Cosigner: ' + FEditNote.CosignerName
+    else lblCosigner.Caption := '';
+  uPCEEdit.NoteTitle  := FEditNote.Title;
+  // modify signature requirements if author or cosigner changed
+  if (User.DUZ <> FEditNote.Author) and (User.DUZ <> FEditNote.Cosigner)
+    then Changes.ReplaceSignState(CH_CON, lstNotes.ItemID, CH_SIGN_NA)
+    else Changes.ReplaceSignState(CH_CON, lstNotes.ItemID, CH_SIGN_YES);
+  x := lstNotes.Items[EditingIndex];
+  SetPiece(x, U, 2, lblNewTitle.Caption);
+  SetPiece(x, U, 3, FloatToStr(FEditNote.DateTime));
+  tvCsltNotes.Selected.Text := MakeConsultNoteDisplayText(x);
+  TORTreeNode(tvCsltNotes.Selected).StringData := x;
+  lstNotes.Items[EditingIndex] := x;
+  Changes.ReplaceText(CH_CON, lstNotes.ItemID, GetTitleText(EditingIndex));
+  if LastConsult <> FEditNote.PkgIEN then
+  //if LastConsult <> FEditNote.Consult then
+  begin
+    // try to lock the new consult, reset to previous if unable
+    if (FEditNote.PkgIEN > 0) and not LockConsultRequest(FEditNote.PkgIEN) then
+    //if (FEditNote.Consult > 0) and not LockConsultRequest(FEditNote.Consult) then
+    begin
+      Infobox(TX_NO_ORD_CHG, TC_NO_ORD_CHG, MB_OK);
+      FEditNote.PkgIEN := LastConsult;
+      //FEditNote.Consult := LastConsult;
+    end else
+    begin
+      // unlock the previous consult
+      if LastConsult > 0 then UnlockOrderIfAble(GetConsultOrderIEN(LastConsult));
+      if FEditNote.PkgIEN = 0 then FOrderID := '';
+      //if FEditNote.Consult = 0 then FOrderID := '';
+    end;
+  end;
+  if LastTitle <> FEditNote.Title then mnuActLoadBoilerClick(Self);
+end;
+
+procedure TfrmConsults.pnlFieldsResize(Sender: TObject);
+{ center the reference date on the panel }
+begin
+  inherited;
+  lblRefDate.Left := (pnlFields.Width - lblRefDate.Width) div 2;
+  if lblRefDate.Left < (lblNewTitle.Left + lblNewTitle.Width + 6)
+    then lblRefDate.Left := (lblNewTitle.Left + lblNewTitle.Width);
+end;
+
+
+procedure TfrmConsults.AssignRemForm;
+begin
+  with RemForm do
+  begin
+    Form := Self;
+    PCEObj := uPCEEdit;
+    RightPanel := pnlRight;
+    CanFinishProc := CanFinishReminder;
+    DisplayPCEProc := DisplayPCE;
+    Drawers := frmDrawers;
+    NewNoteRE := memResults;
+    NoteList := lstNotes;
+  end;
+end;
+
+function TfrmConsults.CanFinishReminder: boolean;
+begin
+  if(EditingIndex < 0) then
+    Result := FALSE
+  else
+    Result := (lstNotes.ItemIndex = EditingIndex);
+end;
+
+procedure TfrmConsults.mnuActChangeClick(Sender: TObject);
+begin
+  inherited;
+  if (FEditingIndex < 0) or (lstNotes.ItemIndex <> FEditingIndex) then Exit;
+  cmdChangeClick(Sender);
+end;
+
+procedure TfrmConsults.mnuActLoadBoilerClick(Sender: TObject);
+var
+  NoteEmpty: Boolean;
+  BoilerText: TStringList;
+  DocInfo: string;
+
+  procedure AssignBoilerText;
+  begin
+    ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+    QuickCopyWith508Msg(BoilerText, memResults);
+    FChanged := False;
+  end;
+
+begin
+  inherited;
+  if (FEditingIndex < 0) or (lstNotes.ItemIndex <> FEditingIndex) then Exit;
+  BoilerText := TStringList.Create;
+  try
+    NoteEmpty := memResults.Text = '';
+    LoadBoilerPlate(BoilerText, FEditNote.Title);
+    if (BoilerText.Text <> '') or
+       assigned(GetLinkedTemplate(IntToStr(FEditNote.Title), ltTitle)) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(lstNotes.ItemIEN), FEditNote);
+      if NoteEmpty then AssignBoilerText else
+      begin
+        case QueryBoilerPlate(BoilerText) of
+        0:  { do nothing } ;                         // ignore
+        1: begin
+             ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+             QuickCopyWith508Msg(BoilerText, memResults);  // append
+           end;
+        2: AssignBoilerText;                         // replace
+        end;
+      end;
+    end else
+    begin
+      if Sender = mnuActLoadBoiler
+        then InfoBox(TX_NO_BOIL, TC_NO_BOIL, MB_OK)
+        else
+        begin
+          if not NoteEmpty then
+            if not FChanged and (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
+              then memResults.Lines.Clear;
+        end;
+    end; {if BoilerText.Text <> ''}
+  finally
+    BoilerText.Free;
+  end;
+end;
+
+procedure TfrmConsults.popNoteMemoSaveContinueClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := True;
+  DoAutoSave;
+end;
+
+procedure TfrmConsults.ProcessMedResults(ActionType: string);
+var
+  FormTitle, ErrMsg: string;
+  (*i, *)AConsult: integer;
+const
+  TX_ATTACH = 'Attach Medicine Result to:  ';
+  TX_REMOVE = 'Remove Medicine Result from:  ';
+  TX_NO_ATTACH_RESULTS   = 'There are no results available to associate with this procedure.';
+  TX_NO_REMOVE_RESULTS   = 'There are no medicine results currently associated with this procedure.';
+  TC_NO_RESULTS   = 'No Results';
+begin
+  inherited;
+  with lstConsults, MedResult do
+    begin
+      FillChar(MedResult, SizeOf(MedResult), 0);
+      if ItemIEN = 0 then Exit;
+      AConsult := ItemIEN;
+      if not LockConsultRequest(AConsult) then Exit;
+      lstNotes.Enabled := False ;
+      lstConsults.Enabled  := False ;
+      tvConsults.Enabled := False;
+      if ActionType = 'ATTACH' then
+        begin
+          FormTitle := TX_ATTACH + Piece(DisplayText[ItemIndex], #9, 3);
+          ErrMsg := TX_NO_ATTACH_RESULTS;
+        end
+      else if ActionType = 'REMOVE' then
+        begin
+          FormTitle := TX_REMOVE + Piece(DisplayText[ItemIndex], #9, 3);
+          ErrMsg := TX_NO_REMOVE_RESULTS;
+        end;
+      Action := ActionType;
+      if SelectMedicineResult(ItemIEN, FormTitle, MedResult) then
+        begin
+          if ResultPtr <> '' then
+            begin
+              if ActionType = 'ATTACH' then
+                AttachMedicineResult(ItemIEN, ResultPtr, DateTimeofAction, ResponsiblePerson, AlertsTo.Recipients)
+              else if ActionType = 'REMOVE' then
+                RemoveMedicineResult(ItemIEN, ResultPtr, DateTimeofAction, ResponsiblePerson);
+              UpdateList ;  {update consult list after success}
+              ItemIndex := 0 ;
+              {ItemIndex may have changed - need to look up by IEN}
+              with tvConsults do Selected := FindPieceNode(IntToStr(AConsult), 1, U, Items.GetFirstNode);
+              tvConsultsClick(Self);
+            end
+          else
+            InfoBox(ErrMsg, TC_NO_RESULTS, MB_OK or MB_ICONWARNING);
+        end;
+    end;
+  lstNotes.Enabled := True ;
+  lstConsults.Enabled  := True ;
+  tvConsults.Enabled := True;
+  FOrderID := GetConsultOrderIEN(AConsult);
+  UnlockOrderIfAble(FOrderID);
+  FOrderID := '';
+end;
+
+procedure TfrmConsults.mnuActAttachMedClick(Sender: TObject);
+begin
+  inherited;
+  ProcessMedResults('ATTACH');
+end;
+
+procedure TfrmConsults.mnuActRemoveMedClick(Sender: TObject);
+begin
+  inherited;
+  ProcessMedResults('REMOVE');
+end;
+
+procedure TfrmConsults.mnuEditDialgFieldsClick(Sender: TObject);
+begin
+  inherited;
+  EditDialogFields;
+end;
+
+procedure TfrmConsults.UpdateNoteTreeView(DocList: TStringList; Tree: TORTreeView; AContext: integer);
+var
+  i: integer;
+begin
+  with Tree do
+    begin
+      uChanging := True;
+      Items.BeginUpdate;
+      for i := 0 to DocList.Count - 1 do
+        begin
+          if Piece(DocList[i], U, 14) = '0' then continue;       // v16.8 fix  RV
+          //if Piece(DocList[i], U, 14) <> IntToStr(AContext) then continue;
+          lstNotes.Items.Add(DocList[i]);
+        end;
+      FCurrentNoteContext.Status := IntToStr(AContext);
+      BuildDocumentTree(DocList, '0', Tree, nil, FCurrentNoteContext, CT_CONSULTS);
+      Items.EndUpdate;
+      uChanging := False;
+    end;
+end;
+
+procedure TfrmConsults.tvCsltNotesChange(Sender: TObject; Node: TTreeNode);
+var
+  x, WhyNot: string;
+begin
+  if uChanging then Exit;
+  //This gives the change a chance to occur when keyboarding, so that WindowEyes
+  //doesn't use the old value.
+  Application.ProcessMessages;
+  with tvCsltNotes do
+    begin
+      if (Selected = nil) then Exit;
+      if uIDNotesActive then
+        begin
+          mnuActDetachFromIDParent.Enabled := (Selected.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD]);
+          popNoteListDetachFromIDParent.Enabled := mnuActDetachFromIDParent.Enabled;
+          if (Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT, IMG_ID_CHILD, IMG_ID_CHILD_ADD]) then
+            mnuActAttachtoIDParent.Enabled := CanBeAttached(PDocTreeObject(Selected.Data)^.DocID, WhyNot)
+          else
+            mnuActAttachtoIDParent.Enabled := False;
+          popNoteListAttachtoIDParent.Enabled := mnuActAttachtoIDParent.Enabled;
+          if (Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                      IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT,
+                                      IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT]) then
+            mnuActAddIDEntry.Enabled := CanReceiveAttachment(PDocTreeObject(Selected.Data)^.DocID, WhyNot)
+          else
+            mnuActAddIDEntry.Enabled := False;
+          popNoteListAddIDEntry.Enabled := mnuActAddIDEntry.Enabled
+        end;
+      popNoteListExpandSelected.Enabled := Selected.HasChildren;
+      popNoteListCollapseSelected.Enabled := Selected.HasChildren;
+      if (Selected.ImageIndex = IMG_TOP_LEVEL) then
+        begin
+          pnlResults.Visible := False;
+          pnlResults.SendToBack;
+          pnlRead.Visible := True;
+          pnlRead.BringToFront ;
+          memConsult.TabStop := True;
+          UpdateReminderFinish;
+          ShowPCEControls(False);
+          frmDrawers.DisplayDrawers(FALSE);
+          cmdPCE.Visible := FALSE;
+          popNoteMemoEncounter.Visible := FALSE;
+          lstConsults.Enabled := True ;
+          tvConsults.Enabled := True;
+          lstNotes.Enabled := True;
+          lblTitle.Caption := '';
+          lblTitle.Hint := lblTitle.Caption;
+          Exit;
+        end;
+      x := TORTreeNode(Selected).StringData;
+      if StrToIntDef(Piece(Piece(x, U, 1), ';', 1), 0) > 0 then
+        begin
+          memConsult.Clear;
+          lstNotes.SelectByID(Piece(x, U, 1));
+          lstNotesClick(Self);
+          SendMessage(memConsult.Handle, WM_VSCROLL, SB_TOP, 0);
+        end;
+    end;
+end;
+
+procedure TfrmConsults.tvCsltNotesCollapsed(Sender: TObject; Node: TTreeNode);
+begin
+  with Node do
+    begin
+      if (ImageIndex in [IMG_GROUP_OPEN, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_OPEN]) then
+        ImageIndex := ImageIndex - 1;
+      if (SelectedIndex in [IMG_GROUP_OPEN, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_OPEN]) then
+        SelectedIndex := SelectedIndex - 1;
+    end;
+end;
+
+procedure TfrmConsults.tvCsltNotesExpanded(Sender: TObject; Node: TTreeNode);
+
+  function SortByTitle(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+  begin
+    { Within an ID parent node, sorts in ascending order by title
+    BUT - addenda to parent document are always at the top of the sort, in date order}
+    if (Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum') and
+       (Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum') then
+      begin
+        Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end
+    else if Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := -1
+    else if Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := 1
+    else
+      begin
+        if Data = 0 then
+          Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocTitle),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocTitle))
+        else
+          Result := -AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocTitle),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocTitle));
+      end
+  end;
+
+  function SortByDate(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+  begin
+    { Within an ID parent node, sorts in ascending order by document date
+    BUT - addenda to parent document are always at the top of the sort, in date order}
+    if (Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum') and
+       (Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum') then
+      begin
+        Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end
+    else if Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := -1
+    else if Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := 1
+    else
+      begin
+        if Data = 0 then
+          Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocFMDate))
+        else
+          Result := -AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end;
+  end;
+
+begin
+  with Node do
+    begin
+      if Assigned(Data) then
+        if (Pos('<', PDocTreeObject(Data)^.DocHasChildren) > 0) then
+          begin
+            if (PDocTreeObject(Node.Data)^.OrderByTitle) then
+              CustomSort(@SortByTitle, 0)
+            else
+              CustomSort(@SortByDate, 0);
+          end;
+      if (ImageIndex in [IMG_GROUP_SHUT, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_SHUT]) then
+        ImageIndex := ImageIndex + 1;
+      if (SelectedIndex in [IMG_GROUP_SHUT, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_SHUT]) then
+        SelectedIndex := SelectedIndex + 1;
+    end;
+end;
+
+procedure TfrmConsults.tvCsltNotesDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
+var
+  AnItem: TORTreeNode;
+begin
+  Accept := False;
+  if not uIDNotesActive then exit;
+  AnItem := TORTreeNode(tvCsltNotes.GetNodeAt(X, Y));
+  if (AnItem = nil) or (AnItem.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) then Exit;
+  with tvCsltNotes.Selected do
+    if (ImageIndex in [IMG_SINGLE, IMG_PARENT, IMG_ID_CHILD, IMG_ID_CHILD_ADD]) then
+      Accept := (AnItem.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                       IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT,
+                                       IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT])
+    else if (ImageIndex in [IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT]) then
+      Accept := (AnItem.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL])
+    else if (ImageIndex in [IMG_ADDENDUM, IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) then
+      Accept := False;
+end;
+
+procedure TfrmConsults.tvCsltNotesDragDrop(Sender, Source: TObject; X, Y: Integer);
+var
+  HT: THitTests;
+  ADestNode: TORTreeNode;
+  Saved: boolean;
+begin
+  if not uIDNotesActive then
+    begin
+      CancelDrag;
+      exit;
+    end;
+  if tvCsltNotes.Selected = nil then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  HT := tvCsltNotes.GetHitTestInfoAt(X, Y);
+  ADestNode := TORTreeNode(tvCsltNotes.GetNodeAt(X, Y));
+  DoAttachIDChild(TORTreeNode(tvCsltNotes.Selected), ADestNode);
+end;
+
+procedure TfrmConsults.tvCsltNotesStartDrag(Sender: TObject;
+  var DragObject: TDragObject);
+const
+  TX_CAP_NO_DRAG = 'Item cannot be moved';
+  var
+  WhyNot: string;
+  Saved: boolean;
+begin
+  if (tvCsltNotes.Selected.ImageIndex in [IMG_ADDENDUM, IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) or
+     (not uIDNotesActive) or
+     (lstNotes.ItemIEN = 0) then
+    begin
+      CancelDrag;
+      Exit;
+    end;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  if not CanBeAttached(PDocTreeObject(tvCsltNotes.Selected.Data)^.DocID, WhyNot) then
+    begin
+      InfoBox(WhyNot, TX_CAP_NO_DRAG, MB_OK);
+      CancelDrag;
+    end;
+end;
+
+procedure TfrmConsults.popNoteListExpandAllClick(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteList) is TTreeView then
+    TTreeView(PopupComponent(Sender, popNoteList)).FullExpand;
+end;
+
+procedure TfrmConsults.popNoteListCollapseAllClick(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteList) is TTreeView then
+    with TTreeView(PopupComponent(Sender, popNoteList)) do
+      begin
+        Selected := nil;
+        FullCollapse;
+        Selected := TopItem;
+      end;
+  lblTitle.Caption := '';
+  lblTitle.Hint := lblTitle.Caption;
+  memConsult.Clear;
+end;
+
+procedure TfrmConsults.popNoteListExpandSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteList) is TTreeView then
+    with TTreeView(PopupComponent(Sender, popNoteList)) do
+      begin
+        if Selected = nil then exit;
+        with Selected do if HasChildren then Expand(True);
+      end;
+end;
+
+procedure TfrmConsults.popNoteListCollapseSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteList) is TTreeView then
+    with TTreeView(PopupComponent(Sender, popNoteList)) do
+      begin
+        if Selected = nil then exit;
+        with Selected do if HasChildren then Collapse(True);
+      end;
+end;
+
+procedure TfrmConsults.EnableDisableIDNotes;
+begin
+  uIDNotesActive := False;  //IDNotesInstalled;      {not for Consults in v15}
+  mnuActDetachFromIDParent.Visible := uIDNotesActive;
+  popNoteListDetachFromIDParent.Visible := uIDNotesActive;
+  mnuActAddIDEntry.Visible := uIDNotesActive;
+  popNoteListAddIDEntry.Visible := uIDNotesActive;
+  mnuActAttachtoIDParent.Visible := uIDNotesActive;
+  popNoteListAttachtoIDParent.Visible := uIDNotesActive;
+  if uIDNotesActive then
+    tvCsltNotes.DragMode := dmAutomatic
+  else
+    tvCsltNotes.DragMode := dmManual;
+end;
+
+
+procedure TfrmConsults.tvCsltNotesClick(Sender: TObject);
+begin
+  inherited;
+  if tvCsltNotes.Selected = nil then exit;
+  if (tvCsltNotes.Selected.ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+    begin
+      lblTitle.Caption := '';
+      lblTitle.Hint := lblTitle.Caption;
+      memConsult.Clear;
+    end;
+end;
+
+// =========================== Consults Treeview Code ==================================
+
+procedure TfrmConsults.LoadConsults;
+var
+  tmpList: TStringList;
+  ANode: TTreeNode;
+begin
+  tmpList := TStringList.Create;
+  try
+
+    FCsltList.Clear;
+    uChanging := True;
+    RedrawSuspend(memConsult.Handle);
+    tvConsults.Items.BeginUpdate;
+    lstConsults.Items.Clear;
+    KillDocTreeObjects(tvConsults);
+    tvConsults.Items.Clear;
+    tvConsults.Items.EndUpdate;
+    tvCsltNotes.Items.BeginUpdate;
+    KillDocTreeObjects(tvCsltNotes);
+    tvCsltNotes.Items.Clear;
+    tvCsltNotes.Items.EndUpdate;
+    lstNotes.Clear;
+    memConsult.Clear;
+    memConsult.Invalidate;
+    lblTitle.Caption := '';
+    lblTitle.Hint := lblTitle.Caption;
+    with FCurrentContext do
+      begin
+        GetConsultsList(tmpList, StrToFMDateTime(BeginDate), StrToFMDateTime(EndDate), Service, Status, Ascending);
+        CreateListItemsforConsultTree(FCsltList, tmpList, ViewContext, GroupBy, Ascending);
+        UpdateConsultsTreeView(FCsltList, tvConsults);
+        FastAssign(tmpList, lstConsults.Items);
+      end;
+    with tvConsults do
+      begin
+        uChanging := True;
+        Items.BeginUpdate;
+        ANode := Items.GetFirstNode;
+        if ANode <> nil then Selected := ANode.getFirstChild;
+        memConsult.Clear;
+        //RemoveParentsWithNoChildren(tvConsults, FCurrentContext);
+        Items.EndUpdate;
+        uChanging := False;
+        if (Self.Active) and (Selected <> nil) then tvConsultsChange(Self, Selected);
+      end;
+  finally
+    RedrawActivate(memConsult.Handle);
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmConsults.UpdateConsultsTreeView(DocList: TStringList; Tree: TORTreeView);
+begin
+  with Tree do
+    begin
+      uChanging := True;
+      Items.BeginUpdate;
+      FastAddStrings(DocList, lstConsults.Items);
+      BuildConsultsTree(Tree, DocList, '0', nil, FCurrentContext);
+      Items.EndUpdate;
+      uChanging := False;
+    end;
+end;
+
+procedure TfrmConsults.tvConsultsExpanded(Sender: TObject; Node: TTreeNode);
+begin
+  inherited;
+  with Node do
+    begin
+      if (ImageIndex in [IMG_GMRC_GROUP_SHUT]) then
+        ImageIndex := ImageIndex + 1;
+      if (SelectedIndex in [IMG_GMRC_GROUP_SHUT]) then
+        SelectedIndex := SelectedIndex + 1;
+    end;
+end;
+
+procedure TfrmConsults.tvConsultsCollapsed(Sender: TObject; Node: TTreeNode);
+begin
+  inherited;
+  with Node do
+    begin
+      if (ImageIndex in [IMG_GMRC_GROUP_OPEN]) then
+        ImageIndex := ImageIndex - 1;
+      if (SelectedIndex in [IMG_GMRC_GROUP_OPEN]) then
+        SelectedIndex := SelectedIndex - 1;
+    end;
+end;
+
+procedure TfrmConsults.tvConsultsClick(Sender: TObject);
+begin
+  inherited;
+  with tvConsults do
+    begin
+      if Selected = nil then exit;
+      if (Selected.ImageIndex in [IMG_GMRC_TOP_LEVEL, IMG_GMRC_GROUP_OPEN, IMG_GMRC_GROUP_SHUT]) then
+        begin
+          lblTitle.Caption := '';
+          lblTitle.Hint := lblTitle.Caption;
+          memConsult.Clear;
+          KillDocTreeObjects(tvCsltNotes);
+          tvCsltNotes.Items.Clear;
+          lstNotes.Items.Clear;
+        end
+      else
+        tvConsultsChange(Self, Selected);
+    end;
+end;
+
+procedure TfrmConsults.tvConsultsChange(Sender: TObject; Node: TTreeNode);
+var
+  x: string;
+begin
+  inherited;
+  if uChanging then Exit;
+  with tvConsults do
+    begin
+      if (Selected = nil) then Exit;
+      if (tvConsults.Selected.ImageIndex in [IMG_GMRC_TOP_LEVEL, IMG_GMRC_GROUP_OPEN, IMG_GMRC_GROUP_SHUT]) then
+        begin
+          mnuActConsultRequest.Enabled := False;
+          mnuActConsultResults.Enabled := False;
+          frmFrame.mnuFilePrint.Enabled := False;
+           frmFrame.mnuFilePrintSelectedItems.Enabled := False;
+        end
+      else
+      begin
+        frmFrame.mnuFilePrint.Enabled := True;
+        frmFrame.mnuFilePrintSelectedItems.Enabled := True;
+      end;
+      popNoteListExpandSelected.Enabled := Selected.HasChildren;
+      popNoteListCollapseSelected.Enabled := Selected.HasChildren;
+      lstConsults.Enabled := True ;
+      tvConsults.Enabled := True;
+      lstNotes.Enabled := True;
+      if (Selected.ImageIndex in [IMG_GMRC_TOP_LEVEL, IMG_GMRC_GROUP_OPEN, IMG_GMRC_GROUP_SHUT]) then
+        begin
+          pnlResults.Visible := False;
+          pnlResults.SendToBack;
+          pnlRead.Visible := True;
+          pnlRead.BringToFront ;
+          memConsult.TabStop := True;
+          UpdateReminderFinish;
+          ShowPCEControls(False);
+          frmDrawers.DisplayDrawers(FALSE);
+          cmdPCE.Visible := FALSE;
+          popNoteMemoEncounter.Visible := FALSE;
+          lstConsults.Enabled := True ;
+          tvConsults.Enabled := True;
+          KillDocTreeObjects(tvCsltNotes);
+          tvCsltNotes.Items.Clear;
+          lstNotes.Clear;
+          lstNotes.Enabled := True;
+          lblTitle.Caption := '';
+          lblTitle.Hint := lblTitle.Caption;
+          Exit;
+        end;
+      x := TORTreeNode(Selected).StringData;
+      if StrToIntDef(Piece(x, U, 1), 0) > 0 then
+        begin
+          memConsult.Clear;
+          lstConsults.SelectByID(Piece(x, U, 1));
+          lstConsultsClick(Self);
+          //tvConsults.SetFocus;
+          SendMessage(memConsult.Handle, WM_VSCROLL, SB_TOP, 0);
+        end;
+    end;
+end;
+
+procedure TfrmConsults.popNoteListPopup(Sender: TObject);
+var
+  ShowIt: boolean;
+begin
+  inherited;
+  ShowIt := uIDNotesActive and (PopupComponent(Sender, popNoteList) = tvCsltNotes);
+  popNoteListDetachFromIDParent.Visible := ShowIt;
+  popNoteListAddIDEntry.Visible         := ShowIt;
+end;
+
+procedure TfrmConsults.mnuIconLegendClick(Sender: TObject);
+begin
+  inherited;
+  ShowIconLegend(ilConsults);
+end;
+
+procedure TfrmConsults.mnuActAttachtoIDParentClick(Sender: TObject);
+var
+  AChildNode: TORTreeNode;
+  AParentID: string;
+  Saved: boolean;
+  SavedDocID, SavedConsultID: string;
+begin
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    with tvConsults do Selected := FindPieceNode(SavedConsultID, 1, U, Items.GetFirstNode);
+    tvConsultsClick(Self);
+    with tvCsltNotes do Selected := FindPieceNode(SavedDocID, 1, U, Items.GetFirstNode);
+  end;
+  if tvCsltNotes.Selected = nil then exit;
+  AChildNode := TORTreeNode(tvCsltNotes.Selected);
+  AParentID := SelectParentNodeFromList(tvCsltNotes);
+  if AParentID = '' then exit;
+  with tvCsltNotes do Selected := FindPieceNode(AParentID, 1, U, Items.GetFirstNode);
+  DoAttachIDChild(AChildNode, TORTreeNode(tvCsltNotes.Selected));
+end;
+
+procedure TfrmConsults.DoAttachIDChild(AChild, AParent: TORTreeNode);
+const
+  TX_ATTACH_CNF     = 'Confirm Attachment';
+  TX_ATTACH_FAILURE = 'Attachment failed';
+var
+  ErrMsg, WhyNot: string;
+  SavedDocID: string;
+begin
+  if (AChild = nil) or (AParent = nil) then exit;
+  ErrMsg := '';
+  if not CanBeAttached(PDocTreeObject(AChild.Data)^.DocID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot + CRLF + CRLF;
+  if not CanReceiveAttachment(PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot;
+  if ErrMsg <> '' then
+    begin
+      InfoBox(ErrMsg, TX_ATTACH_FAILURE, MB_OK);
+      Exit;
+    end
+  else
+    begin
+      WhyNot := '';
+      if (InfoBox('ATTACH:   ' + AChild.Text + CRLF + CRLF +
+                  '    TO:   ' + AParent.Text + CRLF + CRLF +
+                  'Are you sure?', TX_ATTACH_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES)
+          then Exit;
+      SavedDocID := PDocTreeObject(AParent.Data)^.DocID;
+    end;
+  if AChild.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD] then
+    begin
+      if DetachEntryFromParent(PDocTreeObject(AChild.Data)^.DocID, WhyNot) then
+        begin
+          if AttachEntryToParent(PDocTreeObject(AChild.Data)^.DocID, PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+            begin
+              tvConsultsChange(Self, tvConsults.Selected);
+              with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+              if tvCsltNotes.Selected <> nil then tvCsltNotes.Selected.Expand(False);
+            end
+          else
+            InfoBox(WhyNot, TX_ATTACH_FAILURE, MB_OK);
+        end
+      else
+        begin
+          WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+          WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+          InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+          Exit;
+        end;
+    end
+  else
+    begin
+      if AttachEntryToParent(PDocTreeObject(AChild.Data)^.DocID, PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+        begin
+          tvConsultsChange(Self, tvConsults.Selected);
+          with tvCsltNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+          if tvCsltNotes.Selected <> nil then tvCsltNotes.Selected.Expand(False);
+        end
+      else
+        InfoBox(WhyNot, TX_ATTACH_FAILURE, MB_OK);
+   end;
+end;
+
+procedure TfrmConsults.tvConsultsKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key in [VK_UP, VK_DOWN] then tvConsultsChange(Self, tvConsults.Selected);
+end;
+
+function TfrmConsults.UserIsSigner(NoteIEN: integer): boolean;
+var
+  Signers: TStringList;
+  i: integer;
+begin
+  Result := False;
+  if NoteIEN <= 0 then exit;
+  Signers := TStringList.Create;
+  try
+    FastAssign(GetCurrentSigners(NoteIEN), Signers);
+    for i := 0 to Signers.Count - 1 do
+      if Piece(Signers[i], U, 1) = IntToStr(User.DUZ) then
+        begin
+          Result := True;
+          break;
+        end;
+  finally
+    Signers.Free;
+  end;
+end;
+
+procedure TfrmConsults.memResultsKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmConsults.sptHorzCanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if pnlResults.Visible then
+     if NewSize > frmConsults.ClientWidth - memResults.Constraints.MinWidth - sptHorz.Width then
+        NewSize := frmConsults.ClientWidth - memResults.Constraints.MinWidth - sptHorz.Width;
+end;
+
+procedure TfrmConsults.popNoteMemoPreviewClick(Sender: TObject);
+begin
+  frmDrawers.mnuPreviewTemplateClick(Sender);
+end;
+
+procedure TfrmConsults.popNoteMemoInsTemplateClick(Sender: TObject);
+begin
+  inherited;
+  frmDrawers.mnuInsertTemplateClick(Sender);
+end;
+
+procedure TfrmConsults.lstConsultsToPrint;      
+var
+  AParentID: string;
+  SavedDocID: string;
+  Saved: boolean;
+begin
+  inherited;
+  if lstConsults.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    LoadConsults;
+    with tvConsults do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if tvConsults.Selected = nil then exit;
+  AParentID := frmPrintList.SelectParentFromList(tvConsults,CT_CONSULTS);
+  if AParentID = '' then exit;
+  with tvConsults do Selected := FindPieceNode(AParentID, 1, U, Items.GetFirstNode);
+end;
+
+procedure TfrmConsults.tvConsultsExit(Sender: TObject);
+begin
+  inherited;
+  FocusToRightPanel := True;
+  if TabIsPressed then
+    FindNextControl(pnlLeft, False, True, False).SetFocus;
+end;
+
+procedure TfrmConsults.frmFramePnlPatientExit(Sender: TObject);
+begin
+  FOldFramePnlPatientExit(Sender);
+  if ShiftTabIsPressed then
+    FindNextControl( pnlRight, False, True, False).SetFocus;
+end;
+
+procedure TfrmConsults.FormHide(Sender: TObject);
+begin
+  inherited;
+  frmFrame.pnlPatient.OnExit := FOldFramePnlPatientExit;
+end;
+
+procedure TfrmConsults.FormShow(Sender: TObject);
+var
+  i : integer;
+begin
+  inherited;
+  FOldFramePnlPatientExit := frmFrame.pnlPatient.OnExit;
+  frmFrame.pnlPatient.OnExit := frmFramePnlPatientExit;
+  {Below is a fix for ClearQuest Defect HDS0000948, Kind of Kloogy I looked
+  and looked for side effects and a better solution and this was the best!}
+  if (EditingIndex = -1) or (lstNotes.ItemIndex <> EditingIndex) then
+    frmDrawers.Hide;
+  {This TStaticText I am looking for doesn't have a Name! So
+   I have to loop through the panel's controls and disable the TStaticText.}
+  with pnlAction do begin
+    for i := 0 to (ControlCount -1) do
+    begin
+      if Controls[i] is TStaticText then
+        if (Controls[i] as TStaticText).Caption = 'Consult Notes' then
+          (Controls[i] as TStaticText).Enabled := False;
+    end;
+  end
+  {End of ClearQuest Defect HDS0000948 Fixes}
+end;
+
+procedure TfrmConsults.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmConsults.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmConsults);
+  uPCEEdit := TPCEData.Create;
+  uPCEShow := TPCEData.Create;
+
+finalization
+  uPCEEdit.Free;
+  uPCEShow.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultsView.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultsView.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultsView.dfm	(revision 1676)
@@ -0,0 +1,233 @@
+inherited frmConsultsView: TfrmConsultsView
+  Left = 320
+  Top = 172
+  BorderIcons = []
+  Caption = 'List Selected Consults'
+  ClientHeight = 373
+  ClientWidth = 406
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 406
+    Height = 373
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblBeginDate: TLabel
+      Left = 239
+      Top = 128
+      Width = 73
+      Height = 13
+      Caption = 'Beginning Date'
+    end
+    object lblEndDate: TLabel
+      Left = 239
+      Top = 173
+      Width = 59
+      Height = 13
+      Caption = 'Ending Date'
+    end
+    object lblService: TLabel
+      Left = 8
+      Top = 9
+      Width = 36
+      Height = 13
+      Caption = 'Service'
+    end
+    object lblStatus: TLabel
+      Left = 239
+      Top = 10
+      Width = 30
+      Height = 13
+      Caption = 'Status'
+    end
+    object Label1: TLabel
+      Left = 239
+      Top = 217
+      Width = 44
+      Height = 13
+      Caption = 'Group By'
+    end
+    object calBeginDate: TORDateBox
+      Left = 239
+      Top = 142
+      Width = 155
+      Height = 21
+      TabOrder = 3
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Beginning Date'
+    end
+    object calEndDate: TORDateBox
+      Left = 239
+      Top = 187
+      Width = 155
+      Height = 21
+      TabOrder = 4
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Ending Date'
+    end
+    object lstStatus: TORListBox
+      Left = 239
+      Top = 24
+      Width = 156
+      Height = 96
+      ItemHeight = 13
+      MultiSelect = True
+      ParentShowHint = False
+      PopupMenu = popStatus
+      ShowHint = True
+      TabOrder = 2
+      Caption = 'Status'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object radSort: TRadioGroup
+      Left = 239
+      Top = 266
+      Width = 155
+      Height = 64
+      Caption = 'Sort Order'
+      Items.Strings = (
+        '&Ascending (oldest first)'
+        '&Descending (newest first)')
+      TabOrder = 6
+    end
+    object cmdOK: TButton
+      Left = 239
+      Top = 340
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 7
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 324
+      Top = 340
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 8
+      OnClick = cmdCancelClick
+    end
+    object treService: TORTreeView
+      Left = 8
+      Top = 57
+      Width = 214
+      Height = 304
+      HideSelection = False
+      Indent = 19
+      ReadOnly = True
+      TabOrder = 1
+      OnChange = treServiceChange
+      Caption = 'Service'
+      NodePiece = 0
+    end
+    object cboService: TORComboBox
+      Left = 8
+      Top = 27
+      Width = 214
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Service'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnKeyPause = cboServiceSelect
+      OnMouseClick = cboServiceSelect
+      CharsNeedMatch = 1
+    end
+    object cboGroupBy: TORComboBox
+      Left = 239
+      Top = 230
+      Width = 155
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Group By'
+      Color = clWindow
+      DropDownCount = 8
+      Items.Strings = (
+        '^(none)'
+        'T^Consults/Procedures'
+        'V^Service'
+        'S^Status')
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 5
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = calBeginDate'
+        'Status = stsDefault')
+      (
+        'Component = calEndDate'
+        'Status = stsDefault')
+      (
+        'Component = lstStatus'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = treService'
+        'Status = stsDefault')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = cboGroupBy'
+        'Status = stsDefault')
+      (
+        'Component = frmConsultsView'
+        'Status = stsDefault'))
+  end
+  object popStatus: TPopupMenu
+    Left = 284
+    Top = 51
+    object popStatusSelectNone: TMenuItem
+      Caption = 'Select None'
+      OnClick = popStatusSelectNoneClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultsView.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultsView.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fConsultsView.pas	(revision 1676)
@@ -0,0 +1,260 @@
+unit fConsultsView;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
+  StdCtrls, ExtCtrls, ORCtrls, ComCtrls, ORDtTm, uConsults, Menus, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmConsultsView = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblBeginDate: TLabel;
+    calBeginDate: TORDateBox;
+    lblEndDate: TLabel;
+    calEndDate: TORDateBox;
+    radSort: TRadioGroup;
+    lblStatus: TLabel;
+    lstStatus: TORListBox;
+    lblService: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    treService: TORTreeView;
+    cboService: TORComboBox;
+    cboGroupBy: TORComboBox;
+    Label1: TLabel;
+    popStatus: TPopupMenu;
+    popStatusSelectNone: TMenuItem;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure treServiceChange(Sender: TObject; Node: TTreeNode);
+    procedure cboServiceSelect(Sender: TObject);
+    procedure popStatusSelectNoneClick(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FBeginDate: string;
+    FEndDate: string;
+    FGroupBy: string;
+    FAscending: Boolean;
+    FService: string;
+    FServiceName: string;
+    FConsultUser: boolean ;
+    FStatus: string;
+    FStatusName: string;
+  end;
+
+function SelectConsultsView(FontSize: Integer; CurrentContext: TSelectContext; var SelectContext: TSelectContext): boolean ;
+
+var
+  uChanging: Boolean;
+  
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, rConsults;
+
+var
+  SvcList: TStrings ;
+  SvcInfo: string ;
+
+const
+   TX_DATE_ERR = 'Enter valid beginning and ending dates or press Cancel.';
+   TX_DATE_ERR_CAP = 'Error in Date Range';
+
+function SelectConsultsView(FontSize: Integer; CurrentContext: TSelectContext; var SelectContext: TSelectContext): boolean ;
+{ displays select form for Consults and returns a record of the selection }
+var
+  frmConsultsView: TfrmConsultsView;
+  W, H, i, j: Integer;
+  CurrentStatus, CurrentBegin, CurrentEnd, CurrentService: string;
+begin
+  frmConsultsView := TfrmConsultsView.Create(Application);
+  try
+    with frmConsultsView do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      with radSort do ItemIndex := 1;
+      //FastAssign(LoadServiceList(CN_SVC_LIST_DISP), SvcList);                         {RV}
+      FastAssign(LoadServiceListWithSynonyms(CN_SVC_LIST_DISP), SvcList);           {RV}
+      SortByPiece(TStringList(SvcList), U, 2);                                   {RV}
+      for i := 0 to SvcList.Count - 1 do
+        if cboService.Items.IndexOf(Trim(Piece(SvcList.Strings[i], U, 2))) = -1 then   {RV}
+        //if cboService.SelectByID(Piece(SvcList.Strings[i], U, 1)) = -1 then
+          cboService.Items.Add(SvcList.Strings[i]);
+      BuildServiceTree(treService, SvcList, '0', nil) ;
+      with treService do
+        for i:=0 to Items.Count-1 do
+          begin
+            if Items[i].Level > 0 then Items[i].Expanded := False else Items[i].Expanded := True;
+            TopItem := Items[0] ;
+            Selected := Items[0] ;
+          end ;
+      CurrentService := CurrentContext.Service;
+      if StrToIntDef(CurrentService, 0) > 0 then
+        begin
+          cboservice.SelectByID(CurrentService);
+          cboServiceSelect(frmConsultsView);
+        end;
+      FastAssign(SubSetOfStatus, lstStatus.Items);
+      CurrentStatus := CurrentContext.Status;
+      if CurrentStatus <> '' then with lstStatus do
+        begin
+          i := 1;
+          while Piece(CurrentStatus, ',', i) <> '' do
+            begin
+              j := SelectByID(Piece(CurrentStatus, ',', i));
+              if j > -1 then Selected[j] := True;
+              Inc(i);
+            end;
+        end;
+      CurrentBegin := CurrentContext.BeginDate;
+      CurrentEnd := CurrentContext.EndDate;
+      if CurrentBegin <> '' then
+        calBeginDate.Text := CurrentBegin;
+      if CurrentEnd <> '' then
+        calEndDate.Text := CurrentEnd;
+      if calEndDate.Text = '' then calEndDate.Text := 'TODAY';
+      cboGroupBy.SelectByID(CurrentContext.GroupBy);
+      ShowModal;
+
+      with SelectContext do
+       begin
+        Changed := FChanged;
+        BeginDate := FBeginDate;
+        EndDate := FEndDate;
+        Ascending := FAscending;
+        Service := FService;
+        ServiceName := FServiceName;
+        ConsultUser := FConsultUser ;
+        Status := FStatus;
+        StatusName := FStatusName;
+        GroupBy := FGroupBy;
+        Result := Changed ;
+      end;
+
+    end; {with frmConsultsView}
+  finally
+    frmConsultsView.Release;
+  end;
+end;
+
+procedure TfrmConsultsView.cmdOKClick(Sender: TObject);
+var
+  bdate, edate: TFMDateTime;
+  i: integer;
+begin
+  if calBeginDate.Text <> '' then
+     bdate := StrToFMDateTime(calBeginDate.Text)
+  else
+     bdate := 0 ;
+
+  if calEndDate.Text <> '' then
+     edate   := StrToFMDateTime(calEndDate.Text)
+  else
+     edate := 0 ;
+
+  if (bdate <= edate) then
+    begin
+      FAscending := radSort.ItemIndex = 0;
+      FBeginDate := calBeginDate.Text;
+      FEndDate := calEndDate.Text;
+    end
+  else
+    begin
+      InfoBox(TX_DATE_ERR, TX_DATE_ERR_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+
+  if treService.Selected <> nil then
+   begin
+     FService := Piece(SvcInfo,u,1) ;
+     FServiceName := Piece(SvcInfo,u,2) ;
+     FConsultUser := ConsultServiceUser(StrToIntDef(FService, 0), User.DUZ) ;
+   end
+  else
+     FService := '' ;
+
+  if lstStatus.SelCount > 0 then
+   begin
+      with lstStatus do for i := 0 to Items.Count-1 do if Selected[i] then
+        begin
+          if Piece(Items[i], U, 1) <> '999' then
+            FStatus := FStatus + Piece(Items[i], U, 1) + ','
+          else
+            FStatus := FStatus + Piece(Items[i],U,3) ;
+          FStatusName := FStatusName + DisplayText[i] + ',' ;
+        end;
+      FStatus := Copy(FStatus, 1, Length(FStatus)-1);
+      FStatusName := Copy(FStatusName, 1, Length(FStatusName)-1);
+   end
+  else
+     FStatus := '' ;
+
+  if cboGroupBy.ItemID <> '' then
+    FGroupBy := cboGroupBy.ItemID
+  else
+    FGroupBy := '';
+
+  FChanged := True;
+  Close;
+end;
+
+procedure TfrmConsultsView.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+
+procedure TfrmConsultsView.treServiceChange(Sender: TObject; Node: TTreeNode);
+begin
+   if uChanging then Exit;
+   SvcInfo  := TORTreeNode(treService.Selected).StringData ;
+   cboService.ItemIndex := cboService.Items.IndexOf(Trim(treService.Selected.Text));  {RV}
+   //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1));
+end;
+
+procedure TfrmConsultsView.cboServiceSelect(Sender: TObject);
+var                                                                      
+  i: integer;                                                            
+begin                                                                    
+  uChanging := True;
+  with treService do for i := 0 to Items.Count-1 do
+    begin                                                                
+      if Piece(TORTreeNode(Items[i]).StringData,U,1) = cboService.ItemID then
+        begin                                                            
+          Selected := Items[i];                                          
+          //treServiceChange(Self, Items[i]);
+          break;                                                         
+        end;                                                             
+    end;
+  uChanging := False;
+  SvcInfo  := TORTreeNode(treService.Selected).StringData ;
+end;                                                                     
+
+procedure TfrmConsultsView.popStatusSelectNoneClick(Sender: TObject);
+var
+  i: integer;
+begin
+  with lstStatus do
+    begin
+      for i := 0 to Items.Count - 1 do
+        Selected[i] := False;
+      ItemIndex := -1;
+    end;
+end;
+
+initialization
+   SvcList := TStringList.Create ;
+
+finalization
+   SvcList.Free ;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fCsltNote.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fCsltNote.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fCsltNote.dfm	(revision 1676)
@@ -0,0 +1,92 @@
+inherited frmCsltNote: TfrmCsltNote
+  Left = 147
+  Top = 206
+  BorderStyle = bsDialog
+  Caption = 'Select Progress Note'
+  ClientHeight = 189
+  ClientWidth = 398
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 398
+    Height = 189
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblAction: TLabel
+      Left = 12
+      Top = 14
+      Width = 372
+      Height = 16
+      AutoSize = False
+      Caption = 'Select a note for this action:'
+    end
+    object cmdOK: TButton
+      Left = 122
+      Top = 152
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 203
+      Top = 152
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+    object cboCsltNote: TORComboBox
+      Left = 15
+      Top = 32
+      Width = 370
+      Height = 103
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Select a note for this action'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2,3'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 0
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboCsltNote'
+        'Status = stsDefault')
+      (
+        'Component = frmCsltNote'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fCsltNote.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fCsltNote.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fCsltNote.pas	(revision 1676)
@@ -0,0 +1,148 @@
+unit fCsltNote;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
+  Buttons, ORCtrls, ORfn, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmCsltNote = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboCsltNote: TORComboBox;
+    lblAction: TLabel;
+    pnlBase: TORAutoPanel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    FNoteIEN: string  ;
+    FChanged: Boolean;
+  end;
+
+procedure SelectNoteForProcessing(FontSize: Integer; ActionType: integer; NoteList: TStrings;
+           var NoteIEN: integer; CPStatus: integer) ;
+
+implementation
+
+{$R *.DFM}
+
+uses rConsults, rCore, uCore, fConsults, uConsults;
+
+const
+  TX_NOTE_TEXT = 'Select a document or press Cancel.';
+  TX_NOTE_CAP = 'No Document Selected';
+
+procedure SelectNoteForProcessing(FontSize: Integer; ActionType: integer; NoteList: TStrings;
+           var NoteIEN: integer; CPStatus: integer) ;
+{ displays progress note selection form and returns a record of the selection }
+var
+  frmCsltNote: TfrmCsltNote;
+  W, H, i: Integer;
+begin
+  frmCsltNote := TfrmCsltNote.Create(Application);
+  try
+    with frmCsltNote do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      Caption := fConsults.ActionType[ActionType];
+      case ActionType of
+        CN_ACT_CP_COMPLETE:
+          begin
+            if CPStatus = CP_INSTR_INCOMPLETE then
+              begin
+                lblAction.Caption := 'Interpret Clinical Procedure Results:';
+                cboCsltNote.Caption := lblAction.Caption;
+                for i := 0 to NoteList.Count-1 do
+                  if ((not (Copy(Piece(Piece(NoteList[i], U, 1), ';', 2), 1, 4) = 'MCAR')) and
+                     (Piece(NoteList[i], U, 13) <> '%') and
+                     (Piece(NoteList[i], U, 7)  <> 'completed')) then
+                       cboCsltNote.Items.Add(Piece(NoteList[i], U, 1) + U + MakeConsultNoteDisplayText(Notelist[i]));
+                cboCsltNote.ItemIndex := 0;
+                FNoteIEN := cboCsltNote.ItemID;
+                //ShowModal;
+              end
+            else if CPStatus in [CP_NO_INSTRUMENT, CP_INSTR_COMPLETE] then
+              begin
+                lblAction.Caption := 'Select incomplete note to continue with:';
+                cboCsltNote.Caption := lblAction.Caption;
+                for i := 0 to NoteList.Count-1 do
+                  if ((not (Copy(Piece(Piece(NoteList[i], U, 1), ';', 2), 1, 4) = 'MCAR')) and
+                     (Piece(NoteList[i], U, 7)  <> 'completed') and
+                     ((Piece(Piece(NoteList[i], U, 5), ';', 1) = IntToStr(User.DUZ)) or
+                     (Piece(Piece(NoteList[i], U, 5), ';', 1) = '0')))  then
+                    cboCsltNote.Items.Add(Piece(NoteList[i], U, 1) + U + MakeConsultNoteDisplayText(Notelist[i]));
+                if cboCsltNote.Items.Count > 0 then cboCsltNote.Items.Insert(0, CN_NEW_CP_NOTE + '^<Create new note>');
+                if cboCsltNote.Items.Count > 0 then
+                  ShowModal
+                else
+                  FNoteIEN := CN_NEW_CP_NOTE;
+              end;
+          end;
+        CN_ACT_COMPLETE:
+          begin
+            lblAction.Caption := 'Select incomplete note to continue with:';
+            cboCsltNote.Caption := lblAction.Caption;
+            for i := 0 to NoteList.Count-1 do
+              if ((not (Copy(Piece(Piece(NoteList[i], U, 1), ';', 2), 1, 4) = 'MCAR')) and
+                 (Piece(NoteList[i], U, 7)  <> 'completed') and
+                 (Piece(Piece(NoteList[i], U, 5), ';', 1) = IntToStr(User.DUZ)))  then
+                cboCsltNote.Items.Add(Piece(NoteList[i], U, 1) + U + MakeConsultNoteDisplayText(Notelist[i]));
+            if cboCsltNote.Items.Count > 0 then cboCsltNote.Items.Insert(0, CN_NEW_CSLT_NOTE + '^<Create new note>');
+            if cboCsltNote.Items.Count > 0 then
+              ShowModal
+            else
+              FNoteIEN := CN_NEW_CSLT_NOTE;
+          end;
+(*      CN_ACT_ADDENDUM:     //  no longer called in v15
+          begin
+            lblAction.Caption := 'Select completed note to addend to:';
+            for i := 0 to NoteList.Count-1 do
+              begin
+                if Copy(Piece(NoteList[i], U, 2), 1, 8) = 'Addendum' then continue;
+                if Piece(NoteList[i], U, 13) = '%' then continue;
+                cboCsltNote.Items.Add(Piece(NoteList[i], U, 1) + U + MakeConsultNoteDisplayText(Notelist[i]));
+              end;
+            if cboCsltNote.Items.Count > 0 then
+              ShowModal
+            else
+              FNoteIEN := '-30';
+          end;*)
+      end; {case}
+
+      NoteIEN:= StrToIntDef(FNoteIEN, -1) ;
+    end; {with frmCsltNote}
+  finally
+    frmCsltNote.Release;
+  end;
+end;
+
+procedure TfrmCsltNote.cmdCancelClick(Sender: TObject);
+begin
+  FNoteIEN := '-1';
+  Close;
+end;
+
+procedure TfrmCsltNote.cmdOKClick(Sender: TObject);
+begin
+ with cboCsltNote do
+   begin
+     if ItemIEN = 0 then
+       begin
+         InfoBox(TX_NOTE_TEXT, TX_NOTE_CAP, MB_OK or MB_ICONWARNING);
+         FChanged := False ;
+         FNoteIEN := '-1';
+         Exit;
+       end;
+     FChanged := True;
+     FNoteIEN := Piece(Items[ItemIndex],U,1);
+     Close;
+   end ;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditConsult.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditConsult.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditConsult.dfm	(revision 1676)
@@ -0,0 +1,481 @@
+inherited frmEditCslt: TfrmEditCslt
+  Tag = 110
+  Left = 409
+  Top = 225
+  Width = 599
+  Height = 375
+  HorzScrollBar.Range = 561
+  VertScrollBar.Range = 340
+  Caption = 'Edit/Resubmit a Cancelled Consult'
+  Constraints.MinHeight = 371
+  Constraints.MinWidth = 573
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitLeft = 409
+  ExplicitTop = 225
+  ExplicitWidth = 599
+  ExplicitHeight = 375
+  DesignSize = (
+    591
+    341)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblService: TLabel [0]
+    Left = 4
+    Top = 4
+    Width = 134
+    Height = 13
+    Caption = 'Consult to Service/Specialty'
+  end
+  object lblReason: TLabel [1]
+    Left = 4
+    Top = 166
+    Width = 90
+    Height = 13
+    Caption = 'Reason for Consult'
+  end
+  object lblComment: TLabel [2]
+    Left = 4
+    Top = 105
+    Width = 77
+    Height = 13
+    Caption = 'New Comments:'
+  end
+  object lblComments: TLabel [3]
+    Left = 4
+    Top = 51
+    Width = 89
+    Height = 13
+    Caption = 'Display Comments:'
+  end
+  object lblUrgency: TStaticText [4]
+    Left = 196
+    Top = 4
+    Width = 44
+    Height = 17
+    Caption = 'Urgency'
+    TabOrder = 16
+  end
+  object lblPlace: TStaticText [5]
+    Left = 376
+    Top = 41
+    Width = 104
+    Height = 17
+    Caption = 'Place of Consultation'
+    TabOrder = 17
+  end
+  object lblAttn: TStaticText [6]
+    Left = 376
+    Top = 4
+    Width = 46
+    Height = 17
+    Caption = 'Attention'
+    TabOrder = 18
+  end
+  object lblProvDiag: TStaticText [7]
+    Left = 195
+    Top = 82
+    Width = 104
+    Height = 17
+    Caption = 'Provisional Diagnosis'
+    TabOrder = 19
+  end
+  object lblInpOutp: TStaticText [8]
+    Left = 197
+    Top = 47
+    Width = 127
+    Height = 17
+    Caption = 'Patient will be seen as an:'
+    TabOrder = 20
+  end
+  object memReason: TRichEdit [9]
+    Left = 4
+    Top = 179
+    Width = 589
+    Height = 137
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    PopupMenu = popReason
+    ScrollBars = ssBoth
+    TabOrder = 11
+    WantTabs = True
+    OnChange = ControlChange
+    OnExit = memReasonExit
+    OnKeyDown = memCommentKeyDown
+    OnKeyPress = memCommentKeyPress
+    OnKeyUp = memCommentKeyUp
+    ExplicitHeight = 136
+  end
+  object pnlMessage: TPanel [10]
+    Left = 16
+    Top = 294
+    Width = 418
+    Height = 44
+    Anchors = [akLeft, akRight, akBottom]
+    BevelInner = bvRaised
+    BorderStyle = bsSingle
+    Caption = 'pnlMessage'
+    TabOrder = 15
+    Visible = False
+    object imgMessage: TImage
+      Left = 4
+      Top = 4
+      Width = 32
+      Height = 32
+    end
+    object memMessage: TRichEdit
+      Left = 37
+      Top = 4
+      Width = 332
+      Height = 32
+      Color = clInfoBk
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clInfoText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      ScrollBars = ssVertical
+      TabOrder = 0
+      WantReturns = False
+    end
+  end
+  object cboService: TORComboBox [11]
+    Left = 4
+    Top = 19
+    Width = 180
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Consult to Service/Specialty'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clGrayText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentFont = False
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 0
+    CharsNeedMatch = 1
+  end
+  object cboUrgency: TORComboBox [12]
+    Left = 196
+    Top = 19
+    Width = 170
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Urgency'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object radInpatient: TRadioButton [13]
+    Left = 197
+    Top = 61
+    Width = 61
+    Height = 17
+    Caption = '&Inpatient'
+    TabOrder = 5
+    OnClick = radInpatientClick
+  end
+  object radOutpatient: TRadioButton [14]
+    Left = 269
+    Top = 61
+    Width = 73
+    Height = 17
+    Caption = '&Outpatient'
+    TabOrder = 6
+    OnClick = radOutpatientClick
+  end
+  object cboPlace: TORComboBox [15]
+    Left = 376
+    Top = 54
+    Width = 216
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Place of Consultation'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 7
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object txtProvDiag: TCaptionEdit [16]
+    Left = 195
+    Top = 95
+    Width = 346
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    MaxLength = 180
+    ParentShowHint = False
+    PopupMenu = mnuPopProvDx
+    ShowHint = True
+    TabOrder = 8
+    OnChange = ControlChange
+    Caption = 'Provisional Diagnosis'
+  end
+  object txtAttn: TORComboBox [17]
+    Left = 376
+    Top = 19
+    Width = 218
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Attention'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 2
+    OnChange = ControlChange
+    OnNeedData = txtAttnNeedData
+    CharsNeedMatch = 1
+  end
+  object cboCategory: TORComboBox [18]
+    Left = 561
+    Top = 103
+    Width = 10
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 14
+    Visible = False
+    CharsNeedMatch = 1
+  end
+  object cmdAccept: TButton [19]
+    Left = 437
+    Top = 319
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'Resubmit'
+    TabOrder = 12
+    OnClick = cmdAcceptClick
+  end
+  object cmdQuit: TButton [20]
+    Left = 514
+    Top = 319
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 13
+    OnClick = cmdQuitClick
+  end
+  object memComment: TRichEdit [21]
+    Left = 4
+    Top = 121
+    Width = 587
+    Height = 41
+    Anchors = [akLeft, akTop, akRight]
+    PopupMenu = popReason
+    TabOrder = 10
+    WantTabs = True
+    OnChange = ControlChange
+    OnKeyDown = memCommentKeyDown
+    OnKeyPress = memCommentKeyPress
+    OnKeyUp = memCommentKeyUp
+  end
+  object btnCmtCancel: TButton [22]
+    Left = 110
+    Top = 49
+    Width = 75
+    Height = 21
+    Caption = 'Cancellation'
+    TabOrder = 3
+    OnClick = btnCmtCancelClick
+  end
+  object btnCmtOther: TButton [23]
+    Left = 110
+    Top = 75
+    Width = 75
+    Height = 21
+    Caption = 'Other'
+    TabOrder = 4
+    OnClick = btnCmtOtherClick
+  end
+  object cmdLexSearch: TButton [24]
+    Left = 545
+    Top = 95
+    Width = 46
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = 'Lexicon'
+    TabOrder = 9
+    OnClick = cmdLexSearchClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblUrgency'
+        'Status = stsDefault')
+      (
+        'Component = lblPlace'
+        'Status = stsDefault')
+      (
+        'Component = lblAttn'
+        'Status = stsDefault')
+      (
+        'Component = lblProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = lblInpOutp'
+        'Status = stsDefault')
+      (
+        'Component = memReason'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = radInpatient'
+        'Status = stsDefault')
+      (
+        'Component = radOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = cboPlace'
+        'Status = stsDefault')
+      (
+        'Component = txtProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = txtAttn'
+        'Status = stsDefault')
+      (
+        'Component = cboCategory'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = memComment'
+        'Status = stsDefault')
+      (
+        'Component = btnCmtCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnCmtOther'
+        'Status = stsDefault')
+      (
+        'Component = cmdLexSearch'
+        'Status = stsDefault')
+      (
+        'Component = frmEditCslt'
+        'Status = stsDefault'))
+  end
+  object mnuPopProvDx: TPopupMenu
+    Left = 353
+    Top = 77
+    object mnuPopProvDxDelete: TMenuItem
+      Caption = 'Delete diagnosis'
+      OnClick = mnuPopProvDxDeleteClick
+    end
+  end
+  object popReason: TPopupMenu
+    OnPopup = popReasonPopup
+    Left = 411
+    Top = 169
+    object popReasonCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popReasonCutClick
+    end
+    object popReasonCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popReasonCopyClick
+    end
+    object popReasonPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popReasonPasteClick
+    end
+    object popReasonPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popReasonPasteClick
+    end
+    object popReasonReformat: TMenuItem
+      Caption = 'Reformat Paragraph'
+      ShortCut = 16466
+      OnClick = popReasonReformatClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditConsult.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditConsult.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditConsult.pas	(revision 1676)
@@ -0,0 +1,673 @@
+unit fEditConsult;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, ComCtrls, ORfn, uConst, uConsults, Buttons,
+  Menus, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmEditCslt = class(TfrmBase508Form)
+    cboService: TORComboBox;
+    cboUrgency: TORComboBox;
+    radInpatient: TRadioButton;
+    radOutpatient: TRadioButton;
+    cboPlace: TORComboBox;
+    txtProvDiag: TCaptionEdit;
+    txtAttn: TORComboBox;
+    lblReason: TLabel;
+    lblService: TLabel;
+    lblUrgency: TStaticText;
+    lblPlace: TStaticText;
+    lblAttn: TStaticText;
+    lblProvDiag: TStaticText;
+    cboCategory: TORComboBox;
+    pnlMessage: TPanel;
+    imgMessage: TImage;
+    memMessage: TRichEdit;
+    cmdAccept: TButton;
+    cmdQuit: TButton;
+    memComment: TRichEdit;
+    lblComment: TLabel;
+    lblComments: TLabel;
+    btnCmtCancel: TButton;
+    btnCmtOther: TButton;
+    mnuPopProvDx: TPopupMenu;
+    mnuPopProvDxDelete: TMenuItem;
+    cmdLexSearch: TButton;
+    lblInpOutp: TStaticText;
+    memReason: TRichEdit;
+    popReason: TPopupMenu;
+    popReasonCut: TMenuItem;
+    popReasonCopy: TMenuItem;
+    popReasonPaste: TMenuItem;
+    popReasonPaste2: TMenuItem;
+    popReasonReformat: TMenuItem;
+    procedure txtAttnNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure radInpatientClick(Sender: TObject);
+    procedure radOutpatientClick(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cmdQuitClick(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure memReasonExit(Sender: TObject);
+    procedure OrderMessage(const AMessage: string);
+    procedure btnCmtCancelClick(Sender: TObject);
+    procedure btnCmtOtherClick(Sender: TObject);
+    procedure cmdLexSearchClick(Sender: TObject);
+    procedure mnuPopProvDxDeleteClick(Sender: TObject);
+    procedure popReasonCutClick(Sender: TObject);
+    procedure popReasonCopyClick(Sender: TObject);
+    procedure popReasonPasteClick(Sender: TObject);
+    procedure popReasonPopup(Sender: TObject);
+    procedure popReasonReformatClick(Sender: TObject);
+    procedure memCommentKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memCommentKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memCommentKeyPress(Sender: TObject; var Key: Char);
+  private
+    FLastServiceID: string;
+    FChanged: boolean;
+    FChanging: boolean;
+    FEditCtrl: TCustomEdit;
+    FNavigatingTab: boolean;
+    procedure SetProvDiagPromptingMode;
+  protected
+    procedure InitDialog;
+    procedure Validate(var AnErrMsg: string);
+    function  ValidSave: Boolean;
+  end;
+
+function EditResubmitConsult(FontSize: Integer; ConsultIEN: integer): boolean;
+
+var
+  frmEditCslt: TfrmEditCslt;
+
+implementation
+
+{$R *.DFM}
+
+uses
+    rODBase, rConsults, uCore, rCore, fConsults, fRptBox, fPCELex, rPCE,
+    ORClasses, clipbrd, UBAGlobals, rOrders ;
+
+var
+  SvcList: TStrings ;
+  OldRec, NewRec: TEditResubmitRec;
+  Defaults: TStringList;
+  uMessageVisible: DWORD;
+  ProvDx: TProvisionalDiagnosis;
+{Begin BillingAware}
+  BADxUpdated: boolean;
+{End BillingAware}
+
+const
+  TX_NOTTHISSVC_TEXT = 'Consults cannot be ordered from this service' ;
+  TX_NO_SVC          = 'A service must be specified.'    ;
+  TX_NO_REASON       = 'A reason for this consult must be entered.'  ;
+  TX_SVC_ERROR       = 'This service has not been defined in your Orderable Items file.' +
+                       #13#10'Contact IRM for assistance.' ;
+  TX_NO_URGENCY      = 'An urgency must be specified.';
+  TX_NO_PLACE        = 'A place of consultation must be specified';
+  TX_NO_DIAG         = 'A provisional diagnosis must be entered for consults to this service.';
+  TX_SELECT_DIAG     = 'You must use the "Lexicon" button to select a diagnosis for consults to this service.';
+  TX_INACTIVE_CODE   = 'The provisional diagnosis code is not active as of today''s date.' + #13#10 +
+                       'Another code must be selected';
+  TC_INACTIVE_CODE   = 'Inactive ICD Code';
+
+function EditResubmitConsult(FontSize: Integer; ConsultIEN: integer): boolean;
+begin
+  Result := False;
+  if ConsultIEN = 0 then exit;
+  FillChar(OldRec, SizeOf(OldRec), 0);
+  FillChar(NewRec, SizeOf(NewRec), 0);
+  FillChar(ProvDx, SizeOf(ProvDx), 0);
+  OldRec := LoadConsultForEdit(ConsultIEN);
+  NewRec.IEN := OldRec.IEN;
+  NewRec.RequestType := OldRec.RequestType;
+  with NewRec do
+    begin
+      RequestReason:= TStringList.Create ;
+      DenyComments:= TStringList.Create ;
+      OtherComments:= TStringList.Create ;
+      NewComments:= TStringList.Create ;
+    end;
+  StatusText('Loading Consult for Edit');
+  frmEditCslt := TfrmEditCslt.Create(Application);
+  SvcList     := TStringList.Create ;
+  Defaults    := TStringList.Create;
+  try
+    with frmEditCslt do
+      begin
+        ResizeAnchoredFormToFont(frmEditCslt);
+        FChanged     := False;
+        InitDialog;
+        ShowModal ;
+        Result := FChanged ;
+      end ;
+  finally
+    OldRec.RequestReason.Free;
+    OldRec.DenyComments.Free;
+    OldRec.OtherComments.Free;
+    OldRec.NewComments.Free;
+    NewRec.RequestReason.Free;
+    NewRec.DenyComments.Free;
+    NewRec.OtherComments.Free;
+    NewRec.NewComments.Free;
+    SvcList.Free;
+    Defaults.Free;
+    frmEditCslt.Release;
+  end;
+end;
+
+procedure TfrmEditCslt.InitDialog;
+var
+ i:integer;
+begin
+  FChanging := True;
+  FastAssign(ODForConsults, Defaults);
+  FLastServiceID := '';
+  cboService.Items.Clear;
+  if OldRec.InpOutp <> '' then
+    case OldRec.InpOutp[1] of
+      'I': radInpatient.Checked  := True;                 //INPATIENT CONSULT
+      'O': radOutpatient.Checked := True;                 //OUTPATIENT CONSULT
+    end
+  else
+    begin
+      if Patient.Inpatient then
+        radInpatient.Checked  := True
+      else
+        radOutpatient.Checked := True;  
+    end;
+  StatusText('Initializing Long List');
+  FastAssign(LoadServiceList(CN_SVC_LIST_ORD), SvcList)   ;
+  with cboService do
+    begin
+      for i := 0 to SvcList.Count - 1 do
+        if SelectByID(Piece(SvcList.Strings[i], U, 1)) = -1 then
+          Items.Add(SvcList.Strings[i]);
+      SelectByID(IntToStr(OldRec.ToService));
+    end;
+  cboPlace.SelectByID(OldRec.Place);
+  with cboUrgency do for i := 0 to Items.Count-1 do
+    if UpperCase(DisplayText[i]) = UpperCase(OldRec.UrgencyName) then ItemIndex := i;
+  txtProvDiag.Text := OldRec.ProvDiagnosis;
+  ProvDx.Code := OldRec.ProvDxCode;
+  if OldRec.ProvDxCodeInactive then
+   begin
+    InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+    ProvDx.CodeInactive := True;
+   end;
+  QuickCopy(OldRec.RequestReason, memReason);
+  memComment.Clear ;
+  btnCmtCancel.Enabled := (OldRec.DenyComments.Count > 0);
+  btnCmtOther.Enabled := (OldRec.OtherComments.Count > 0);
+  txtAttn.InitLongList(OldRec.AttnName) ;
+  if OldRec.Attention > 0 then
+    txtAttn.SelectByIEN(OldRec.Attention)
+  else
+    txtAttn.ItemIndex := -1;
+  SetProvDiagPromptingMode;
+  FChanging := False;
+  StatusText('');
+end;
+
+procedure TfrmEditCslt.Validate(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  if cboService.ItemIEN = 0               then SetError(TX_NO_SVC);
+  if cboUrgency.ItemIEN = 0 then SetError(TX_NO_URGENCY);
+  if cboPlace.ItemID = '' then SetError(TX_NO_PLACE);
+  if memReason.Lines.Count = 0            then SetError(TX_NO_REASON);
+  with cboService do
+    begin
+      if Piece(Items[ItemIndex], U, 5) = '1' then SetError(TX_NOTTHISSVC_TEXT);
+      if (Piece(Items[ItemIndex],U,5) <> '1')
+         and (Piece(Items[ItemIndex], U, 6) = '')
+                                              then SetError(TX_SVC_ERROR) ;
+    end;
+  if (ProvDx.Reqd = 'R') and (Length(txtProvDiag.Text) = 0) then
+    begin
+      if ProvDx.PromptMode = 'F' then
+        SetError(TX_NO_DIAG)
+      else
+        SetError(TX_SELECT_DIAG);
+    end;
+  if OldRec.ProvDxCodeInactive and ProvDx.CodeInactive then
+    SetError(TX_INACTIVE_CODE);
+end;
+
+procedure TfrmEditCslt.txtAttnNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  txtAttn.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmEditCslt.radInpatientClick(Sender: TObject);
+begin
+  inherited;
+  cboUrgency.Items.Clear;
+  cboPlace.Items.Clear;
+  cboCategory.Items.Clear;
+  cboCategory.Items.Add('I^Inpatient');
+  cboCategory.SelectById('I');
+  ExtractItems(cboPlace.Items, Defaults, 'Inpt Place');
+  ExtractItems(cboUrgency.Items, Defaults, 'Inpt Cslt Urgencies');      //S.GMRCR
+  ControlChange(Self);
+end;
+
+procedure TfrmEditCslt.radOutpatientClick(Sender: TObject);
+begin
+  inherited;
+  cboUrgency.Items.Clear;
+  cboPlace.Items.Clear;
+  cboCategory.Items.Clear;
+  cboCategory.Items.Add('O^Outpatient');
+  cboCategory.SelectById('O');
+  ExtractItems(cboPlace.Items, Defaults, 'Outpt Place');
+  ExtractItems(cboUrgency.Items, Defaults, 'Outpt Urgencies');     //S.GMRCO
+  ControlChange(Self);
+end;
+
+
+procedure TfrmEditCslt.ControlChange(Sender: TObject);
+begin
+  if FChanging then exit;
+  with NewRec do
+    begin
+      with cboService do if ItemIEN > 0 then
+        if ItemIEN <> OldRec.ToService then
+          begin
+            ToService     := ItemIEN;
+            ToServiceName := Text;
+          end
+        else
+          begin
+            ToService     := 0;
+            ToServiceName := '';
+          end;
+
+     with cboCategory do if Length(ItemID) > 0 then
+       if ItemID <> OldRec.InpOutP then
+         InpOutP := ItemID
+       else
+         InpOutP := '';
+
+     with cboUrgency do if ItemIEN > 0 then
+       if StrToIntDef(Piece(Items[ItemIndex], U, 3), 0) <> OldRec.Urgency then
+         begin
+           Urgency     := StrToIntDef(Piece(Items[ItemIndex], U, 3), 0);
+           UrgencyName := Text;
+         end
+       else
+         begin
+           Urgency     := 0;
+           UrgencyName := '';
+         end;
+
+     with cboPlace do if Length(ItemID) > 0 then
+       if ItemID <> OldRec.Place then
+         begin
+           Place     := ItemID;
+           PlaceName := Text;
+         end
+       else
+         begin
+           Place     := '';
+           PlaceName := '';
+         end;
+
+     with txtAttn do
+       if ItemIEN > 0 then
+         begin
+           if ItemIEN <> OldRec.Attention then
+             begin
+               Attention := ItemIEN;
+               AttnName  := Text;
+             end
+           else
+             begin
+               Attention := 0;
+               AttnName  := '';
+             end;
+         end
+       else  // blank
+         begin
+           if OldRec.Attention > 0 then
+             begin
+               Attention := -1;
+               AttnName  := '';
+             end
+           else
+             begin
+               Attention := 0;
+               AttnName  := '';
+             end;
+         end;
+
+     with txtProvDiag do
+       if Length(Text) > 0 then
+         begin
+           if Text <> OldRec.ProvDiagnosis then
+             ProvDiagnosis := Text
+           else
+             ProvDiagnosis := '';
+
+           if ProvDx.Code <> OldRec.ProvDxCode then
+             ProvDxCode := ProvDx.Code
+           else
+             ProvDxCode := '';
+
+           if OldRec.ProvDxCodeInactive then
+             ProvDx.CodeInactive := (ProvDx.Code = OldRec.ProvDxCode);
+         end
+       else  //blank
+         begin
+           ProvDx.Code := '';
+           ProvDx.CodeInactive := False;
+           if OldRec.ProvDiagnosis <> '' then
+             ProvDiagnosis := '@'
+           else
+             ProvDiagnosis := '';
+         end;
+
+     with memReason do if Lines.Count > 0 then
+        if Lines.Equals(OldRec.RequestReason) then
+          RequestReason.Clear
+        else
+          QuickCopy(memReason, RequestReason);
+
+      with memComment do
+        if GetTextLen > 0 then
+          QuickCopy(memComment, NewComments)
+        else
+          NewComments.Clear;
+    end;
+end;
+
+procedure TfrmEditCslt.FormClose(Sender: TObject; var Action: TCloseAction);
+const
+  TX_ACCEPT = 'Resubmit this request?' + CRLF + CRLF;
+  TX_ACCEPT_CAP = 'Unsaved Changes';
+begin
+  if FChanged then
+    if InfoBox(TX_ACCEPT, TX_ACCEPT_CAP, MB_YESNO) = ID_YES then
+      if not ValidSave then Action := caNone;
+end;
+
+procedure TfrmEditCslt.cmdAcceptClick(Sender: TObject);
+{Begin BillingAware}
+var
+  BADiagnosis: string;
+  //newDxRec: TBADxRecord;
+  //AnOrder: TOrder;
+{End BillingAware}
+begin
+
+{Begin BillingAware}
+  if  BILLING_AWARE then
+  begin
+     if BADxUpdated then
+     begin
+        BADiagnosis := ProvDx.Text + '^' + ProvDx.Code;
+        UBAGlobals.Dx1 := BADiagnosis;  //  add selected dx to BA Dx List.
+        UBAGlobals.SimpleAddTempDxList(UBAGlobals.BAOrderID);
+     end;
+  end;
+{End BillingAware}
+
+  if ValidSave then
+    begin
+      FChanged := (ResubmitConsult(NewRec) = '0');
+      Close;
+    end;
+end;
+
+procedure TfrmEditCslt.memReasonExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    //QuickCopy(memReason, AStringList);
+    AStringList.Text := memReason.Text;
+    LimitStringLength(AStringList, 74);
+    //QuickCopy(AstringList, memReason);
+    memReason.Text := AStringList.Text;
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure TfrmEditCslt.cmdQuitClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := False;
+  Close;
+end;
+
+function TfrmEditCslt.ValidSave: Boolean;
+const
+  TX_NO_SAVE     = 'This request cannot be saved for the following reason(s):' + CRLF + CRLF;
+  TX_NO_SAVE_CAP = 'Unable to Save Request';
+  TX_SAVE_ERR    = 'Unexpected error - it was not possible to save this request.';
+var
+  ErrMsg: string;
+begin
+  Result := True;
+  Validate(ErrMsg);
+  if Length(ErrMsg) > 0 then
+  begin
+    InfoBox(TX_NO_SAVE + ErrMsg, TX_NO_SAVE_CAP, MB_OK);
+    Result := False;
+  end;
+  if (ProvDx.Reqd = 'R') and (Length(txtProvDiag.Text) = 0) and (ProvDx.PromptMode = 'L') then
+    cmdLexSearchClick(Self);
+end;
+
+
+procedure TfrmEditCslt.OrderMessage(const AMessage: string);
+begin
+  memMessage.Lines.SetText(PChar(AMessage));
+  if ContainsVisibleChar(AMessage) then
+  begin
+    pnlMessage.Visible := True;
+    pnlMessage.BringToFront;
+    uMessageVisible := GetTickCount;
+  end
+  else pnlMessage.Visible := False;
+end;
+
+procedure TfrmEditCslt.btnCmtCancelClick(Sender: TObject);
+begin
+  ReportBox(OldRec.DenyComments, 'Cancellation Comments', False);
+end;
+
+procedure TfrmEditCslt.btnCmtOtherClick(Sender: TObject);
+begin
+  ReportBox(OldRec.OtherComments, 'Added Comments', False);
+end;
+
+procedure TfrmEditCslt.cmdLexSearchClick(Sender: TObject);
+var
+  Match: string;
+  i: integer;
+begin
+  inherited;
+{Begin BillingAware}
+  if  BILLING_AWARE then BADxUpdated := FALSE;
+{End BillingAware}
+  LexiconLookup(Match, LX_ICD);
+  if Match = '' then Exit;
+  ProvDx.Code := Piece(Match, U, 1);
+  ProvDx.Text := Piece(Match, U, 2);
+  i := Pos(' (ICD', ProvDx.Text);
+  if i = 0 then i := Length(ProvDx.Text) + 1;
+  if ProvDx.Text[i-1] = '*' then i := i - 2;
+  ProvDx.Text := Copy(ProvDx.Text, 1, i - 1);
+  txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
+{Begin BillingAware}
+  if  BILLING_AWARE then BADxUpdated := TRUE;
+{End BillingAware}
+  ProvDx.CodeInactive := False;
+end;
+
+procedure TfrmEditCslt.SetProvDiagPromptingMode;
+const
+  TX_USE_LEXICON = 'You must use the "Lexicon" button to select a provisional diagnosis for this service.';
+  TX_PROVDX_OPT  = 'Provisional Diagnosis';
+  TX_PROVDX_REQD = 'Provisional Dx (REQUIRED)';
+begin
+  cmdLexSearch.Enabled   := False;
+  txtProvDiag.Enabled    := False;
+  txtProvDiag.ReadOnly   := True;
+  txtProvDiag.Color      := clBtnFace;
+  txtProvDiag.Font.Color := clBtnText;
+  lblProvDiag.Enabled    := False;
+  txtProvDiag.Hint       := '';
+  if cboService.ItemIEN = 0 then Exit;
+  GetProvDxMode(ProvDx, cboService.ItemID + CSLT_PTR);
+  //  Returns:  string  A^B
+  //     A = O (optional), R (required) or S (suppress)
+  //     B = F (free-text) or L (lexicon)
+  with ProvDx do if (Reqd = '') or (PromptMode = '') then Exit;
+  if ProvDx.Reqd = 'R' then
+    lblProvDiag.Caption := TX_PROVDX_REQD
+  else
+    lblProvDiag.Caption := TX_PROVDX_OPT;
+  if ProvDx.Reqd = 'S' then
+    begin
+      cmdLexSearch.Enabled   := False;
+      txtProvDiag.Enabled    := False;
+      txtProvDiag.ReadOnly   := True;
+      txtProvDiag.Color      := clBtnFace;
+      txtProvDiag.Font.Color := clBtnText;
+      lblProvDiag.Enabled    := False;
+    end
+  else
+    case ProvDx.PromptMode[1] of
+      'F':  begin
+              cmdLexSearch.Enabled   := False;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := False;
+              txtProvDiag.Color      := clWindow;
+              txtProvDiag.Font.Color := clWindowText;
+              lblProvDiag.Enabled    := True;
+            end;
+      'L':  begin
+              cmdLexSearch.Enabled   := True;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := True;
+              txtProvDiag.Color      := clInfoBk;
+              txtProvDiag.Font.Color := clInfoText;
+              lblProvDiag.Enabled    := True;
+              txtProvDiag.Hint       := TX_USE_LEXICON;
+            end;
+    end;
+end;
+
+procedure TfrmEditCslt.mnuPopProvDxDeleteClick(Sender: TObject);
+begin
+  inherited;
+  ProvDx.Text := '';
+  ProvDx.Code := '';
+  ProvDx.CodeInactive := False;
+  txtProvDiag.Text := '';
+  ControlChange(Self);
+end;
+
+procedure TfrmEditCslt.popReasonPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popReason) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popReason))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popReasonCut.Enabled      := FEditCtrl.SelLength > 0;
+    popReasonCopy.Enabled     := popReasonCut.Enabled;
+    popReasonPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+  end else
+  begin
+    popReasonCut.Enabled      := False;
+    popReasonCopy.Enabled     := False;
+    popReasonPaste.Enabled    := False;
+  end;
+  popReasonReformat.Enabled := True;
+end;
+
+procedure TfrmEditCslt.popReasonCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmEditCslt.popReasonCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmEditCslt.popReasonPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmEditCslt.popReasonReformatClick(Sender: TObject);
+begin
+  inherited;
+  if (Screen.ActiveControl <> memReason) and
+     (Screen.ActiveControl <> memComment)then Exit;
+  ReformatMemoParagraph(TCustomMemo(FEditCtrl));
+end;
+
+procedure TfrmEditCslt.memCommentKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if FNavigatingTab then
+  begin
+    if ssShift in Shift then
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
+    else if ssCtrl	in Shift then
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+    FNavigatingTab := False;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmEditCslt.memCommentKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  //The navigating tab controls were inadvertantently adding tab characters
+  //This should fix it
+  FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
+  if FNavigatingTab then
+    Key := 0;
+end;
+
+procedure TfrmEditCslt.memCommentKeyPress(Sender: TObject; var Key: Char);
+begin
+  if FNavigatingTab then
+    Key := #0;  //Disable shift-tab processin
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditProc.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditProc.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditProc.dfm	(revision 1676)
@@ -0,0 +1,528 @@
+inherited frmEditProc: TfrmEditProc
+  Tag = 112
+  Left = 296
+  Top = 245
+  Width = 571
+  Height = 359
+  HorzScrollBar.Range = 561
+  VertScrollBar.Range = 308
+  Caption = 'Edit and resubmit a cancelled procedure'
+  Constraints.MinHeight = 359
+  Constraints.MinWidth = 571
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitLeft = 296
+  ExplicitTop = 245
+  ExplicitWidth = 571
+  ExplicitHeight = 359
+  DesignSize = (
+    563
+    325)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblProc: TLabel [0]
+    Left = 3
+    Top = 7
+    Width = 49
+    Height = 13
+    Caption = 'Procedure'
+  end
+  object lblReason: TLabel [1]
+    Left = 3
+    Top = 167
+    Width = 90
+    Height = 13
+    Caption = 'Reason for Consult'
+  end
+  object lblService: TOROffsetLabel [2]
+    Left = 3
+    Top = 49
+    Width = 158
+    Height = 15
+    Caption = 'Service to perform this procedure'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblComment: TLabel [3]
+    Left = 106
+    Top = 109
+    Width = 74
+    Height = 13
+    Caption = 'New Comments'
+  end
+  object lblComments: TLabel [4]
+    Left = 3
+    Top = 99
+    Width = 89
+    Height = 13
+    Caption = 'Display Comments:'
+  end
+  object lblUrgency: TStaticText [5]
+    Left = 190
+    Top = 7
+    Width = 44
+    Height = 17
+    Caption = 'Urgency'
+    TabOrder = 18
+  end
+  object lblPlace: TStaticText [6]
+    Left = 362
+    Top = 50
+    Width = 104
+    Height = 17
+    Caption = 'Place of Consultation'
+    TabOrder = 19
+  end
+  object lblAttn: TStaticText [7]
+    Left = 362
+    Top = 7
+    Width = 46
+    Height = 17
+    Caption = 'Attention'
+    TabOrder = 20
+  end
+  object lblProvDiag: TStaticText [8]
+    Left = 190
+    Top = 81
+    Width = 104
+    Height = 17
+    Caption = 'Provisional Diagnosis'
+    TabOrder = 21
+  end
+  object lblInpOutp: TStaticText [9]
+    Left = 192
+    Top = 48
+    Width = 127
+    Height = 17
+    Caption = 'Patient will be seen as an:'
+    TabOrder = 17
+  end
+  object memReason: TRichEdit [10]
+    Left = 2
+    Top = 181
+    Width = 557
+    Height = 119
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    PopupMenu = popReason
+    ScrollBars = ssBoth
+    TabOrder = 12
+    WantTabs = True
+    OnChange = ControlChange
+    OnExit = memReasonExit
+    OnKeyDown = memReasonKeyDown
+    OnKeyPress = memReasonKeyPress
+    OnKeyUp = memCommentKeyUp
+  end
+  object cmdAccept: TButton [11]
+    Left = 401
+    Top = 303
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'Resubmit'
+    TabOrder = 13
+    OnClick = cmdAcceptClick
+  end
+  object cmdQuit: TButton [12]
+    Left = 486
+    Top = 303
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 14
+    OnClick = cmdQuitClick
+  end
+  object cboUrgency: TORComboBox [13]
+    Left = 190
+    Top = 22
+    Width = 165
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Urgency'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 2
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object radInpatient: TRadioButton [14]
+    Left = 190
+    Top = 61
+    Width = 61
+    Height = 17
+    Caption = '&Inpatient'
+    TabOrder = 4
+    OnClick = radInpatientClick
+  end
+  object radOutpatient: TRadioButton [15]
+    Left = 264
+    Top = 61
+    Width = 73
+    Height = 17
+    Caption = '&Outpatient'
+    TabOrder = 5
+    OnClick = radOutpatientClick
+  end
+  object cboPlace: TORComboBox [16]
+    Left = 362
+    Top = 63
+    Width = 197
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Place of Consultation'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 6
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+    ExplicitWidth = 195
+  end
+  object txtProvDiag: TCaptionEdit [17]
+    Left = 190
+    Top = 94
+    Width = 315
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    MaxLength = 180
+    ParentShowHint = False
+    PopupMenu = mnuPopProvDx
+    ShowHint = True
+    TabOrder = 7
+    OnChange = ControlChange
+    Caption = 'Provisional Diagnosis'
+  end
+  object txtAttn: TORComboBox [18]
+    Left = 362
+    Top = 22
+    Width = 197
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Attention'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnChange = ControlChange
+    OnNeedData = txtAttnNeedData
+    CharsNeedMatch = 1
+    ExplicitWidth = 195
+  end
+  object cboProc: TORComboBox [19]
+    Left = 3
+    Top = 22
+    Width = 173
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Procedure'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clGrayText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    ParentFont = False
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnChange = cboProcSelect
+    OnNeedData = cboProcNeedData
+    CharsNeedMatch = 1
+  end
+  object cboCategory: TORComboBox [20]
+    Left = 505
+    Top = -11
+    Width = 2
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 15
+    Visible = False
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboService: TORComboBox [21]
+    Left = 3
+    Top = 65
+    Width = 173
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Service to perform this procedure'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clGrayText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentFont = False
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object memComment: TRichEdit [22]
+    Left = 106
+    Top = 123
+    Width = 451
+    Height = 38
+    Anchors = [akLeft, akTop, akRight]
+    PopupMenu = popReason
+    TabOrder = 11
+    WantTabs = True
+    OnChange = ControlChange
+    OnKeyUp = memCommentKeyUp
+  end
+  object pnlMessage: TPanel [23]
+    Left = 19
+    Top = 276
+    Width = 383
+    Height = 44
+    Anchors = [akLeft, akRight, akBottom]
+    BevelInner = bvRaised
+    BorderStyle = bsSingle
+    Caption = 'pnlMessage'
+    TabOrder = 16
+    Visible = False
+    object imgMessage: TImage
+      Left = 4
+      Top = 4
+      Width = 32
+      Height = 32
+    end
+    object memMessage: TRichEdit
+      Left = 40
+      Top = 4
+      Width = 332
+      Height = 32
+      Color = clInfoBk
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clInfoText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      ScrollBars = ssVertical
+      TabOrder = 0
+      WantReturns = False
+    end
+  end
+  object btnCmtCancel: TButton [24]
+    Left = 11
+    Top = 116
+    Width = 75
+    Height = 21
+    Caption = 'Cancellation'
+    TabOrder = 9
+    OnClick = btnCmtCancelClick
+  end
+  object btnCmtOther: TButton [25]
+    Left = 11
+    Top = 139
+    Width = 75
+    Height = 21
+    Caption = 'Other'
+    TabOrder = 10
+    OnClick = btnCmtOtherClick
+  end
+  object cmdLexSearch: TButton [26]
+    Left = 509
+    Top = 94
+    Width = 49
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = 'Lexicon'
+    TabOrder = 8
+    OnClick = cmdLexSearchClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblUrgency'
+        'Status = stsDefault')
+      (
+        'Component = lblPlace'
+        'Status = stsDefault')
+      (
+        'Component = lblAttn'
+        'Status = stsDefault')
+      (
+        'Component = lblProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = lblInpOutp'
+        'Status = stsDefault')
+      (
+        'Component = memReason'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = radInpatient'
+        'Status = stsDefault')
+      (
+        'Component = radOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = cboPlace'
+        'Status = stsDefault')
+      (
+        'Component = txtProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = txtAttn'
+        'Status = stsDefault')
+      (
+        'Component = cboProc'
+        'Status = stsDefault')
+      (
+        'Component = cboCategory'
+        'Status = stsDefault')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = memComment'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = btnCmtCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnCmtOther'
+        'Status = stsDefault')
+      (
+        'Component = cmdLexSearch'
+        'Status = stsDefault')
+      (
+        'Component = frmEditProc'
+        'Status = stsDefault'))
+  end
+  object mnuPopProvDx: TPopupMenu
+    Left = 353
+    Top = 77
+    object mnuPopProvDxDelete: TMenuItem
+      Caption = 'Delete diagnosis'
+      OnClick = mnuPopProvDxDeleteClick
+    end
+  end
+  object popReason: TPopupMenu
+    OnPopup = popReasonPopup
+    Left = 411
+    Top = 169
+    object popReasonCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popReasonCutClick
+    end
+    object popReasonCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popReasonCopyClick
+    end
+    object popReasonPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popReasonPasteClick
+    end
+    object popReasonPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popReasonPasteClick
+    end
+    object popReasonReformat: TMenuItem
+      Caption = 'Reformat Paragraph'
+      ShortCut = 16466
+      OnClick = popReasonReformatClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditProc.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditProc.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fEditProc.pas	(revision 1676)
@@ -0,0 +1,688 @@
+unit fEditProc;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, ComCtrls, ORfn, uConst, uConsults, Buttons,
+  Menus, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmEditProc = class(TfrmBase508Form)
+    cmdAccept: TButton;
+    cmdQuit: TButton;
+    cboUrgency: TORComboBox;
+    radInpatient: TRadioButton;
+    radOutpatient: TRadioButton;
+    cboPlace: TORComboBox;
+    txtProvDiag: TCaptionEdit;
+    txtAttn: TORComboBox;
+    lblProc: TLabel;
+    cboProc: TORComboBox;
+    lblReason: TLabel;
+    lblUrgency: TStaticText;
+    lblPlace: TStaticText;
+    lblAttn: TStaticText;
+    lblProvDiag: TStaticText;
+    cboCategory: TORComboBox;
+    cboService: TORComboBox;
+    lblService: TOROffsetLabel;
+    memComment: TRichEdit;
+    lblComment: TLabel;
+    lblComments: TLabel;
+    pnlMessage: TPanel;
+    imgMessage: TImage;
+    memMessage: TRichEdit;
+    btnCmtCancel: TButton;
+    btnCmtOther: TButton;
+    mnuPopProvDx: TPopupMenu;
+    mnuPopProvDxDelete: TMenuItem;
+    cmdLexSearch: TButton;
+    lblInpOutp: TStaticText;
+    memReason: TRichEdit;
+    popReason: TPopupMenu;
+    popReasonCut: TMenuItem;
+    popReasonCopy: TMenuItem;
+    popReasonPaste: TMenuItem;
+    popReasonPaste2: TMenuItem;
+    popReasonReformat: TMenuItem;
+    procedure txtAttnNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboProcNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure radInpatientClick(Sender: TObject);
+    procedure radOutpatientClick(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cboProcSelect(Sender: TObject);
+    procedure memReasonExit(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure cmdQuitClick(Sender: TObject);
+    procedure OrderMessage(const AMessage: string);
+    procedure btnCmtCancelClick(Sender: TObject);
+    procedure btnCmtOtherClick(Sender: TObject);
+    procedure cmdLexSearchClick(Sender: TObject);
+    procedure mnuPopProvDxDeleteClick(Sender: TObject);
+    procedure popReasonCutClick(Sender: TObject);
+    procedure popReasonCopyClick(Sender: TObject);
+    procedure popReasonPasteClick(Sender: TObject);
+    procedure popReasonPopup(Sender: TObject);
+    procedure popReasonReformatClick(Sender: TObject);
+    procedure memCommentKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyPress(Sender: TObject; var Key: Char);
+  private
+    FLastProcID: string;
+    FChanged: boolean;
+    FChanging: boolean;
+    FEditCtrl: TCustomEdit;
+    FNavigatingTab: boolean;
+    procedure SetProvDiagPromptingMode;
+  protected
+    procedure InitDialog;
+    procedure Validate(var AnErrMsg: string);
+    function  ValidSave: Boolean;
+  end;
+
+
+function EditResubmitProcedure(FontSize: Integer; ConsultIEN: integer): boolean;
+
+var
+  frmEditProc: TfrmEditProc;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rConsults, uCore, rCore, fConsults, rODBase, fRptBox, fPCELex, rPCE, ORClasses, clipbrd ;
+
+var
+  OldRec, NewRec: TEditResubmitRec;
+  Defaults: TStringList;
+  uMessageVisible: DWORD;
+  ProvDx: TProvisionalDiagnosis;
+
+const
+  TX_NO_PROC         = 'A procedure must be specified.'    ;
+  TX_NO_REASON       = 'A reason for this procedure must be entered.'  ;
+  TX_NO_SERVICE      = 'A service must be selected to perform this procedure.';
+  TX_NO_URGENCY      = 'An urgency must be specified.';
+  TX_NO_PLACE        = 'A place of consultation must be specified';
+  TX_NO_DIAG         = 'A provisional diagnosis must be entered for consults to this service.';
+  TX_SELECT_DIAG     = 'You must use the "Lexicon" button to select a diagnosis for consults to this service.';
+  TX_INACTIVE_CODE   = 'The provisional diagnosis code is not active as of today''s date.' + #13#10 +
+                       'Another code must be selected';
+  TC_INACTIVE_CODE   = 'Inactive ICD Code';
+
+function EditResubmitProcedure(FontSize: Integer; ConsultIEN: integer): boolean;
+begin
+  Result := False;
+  if ConsultIEN = 0 then exit;
+  FillChar(OldRec, SizeOf(OldRec), 0);
+  FillChar(NewRec, SizeOf(NewRec), 0);
+  FillChar(ProvDx, SizeOf(ProvDx), 0);
+  OldRec := LoadConsultForEdit(ConsultIEN);
+  NewRec.IEN := OldRec.IEN;
+  NewRec.RequestType := OldRec.RequestType;
+  with NewRec do
+    begin
+      RequestReason:= TStringList.Create ;
+      DenyComments:= TStringList.Create ;
+      OtherComments:= TStringList.Create ;
+      NewComments:= TStringList.Create ;
+    end;
+  StatusText('Loading Procedure for Edit');
+  frmEditProc := TfrmEditProc.Create(Application);
+  Defaults    := TStringList.Create;
+  try
+    ResizeAnchoredFormToFont(frmEditProc);
+    with frmEditProc do
+      begin
+        FChanged     := False;
+        InitDialog;
+        ShowModal ;
+        Result := FChanged ;
+      end ;
+  finally
+    OldRec.RequestReason.Free;
+    OldRec.DenyComments.Free;
+    OldRec.OtherComments.Free;
+    OldRec.NewComments.Free;
+    NewRec.RequestReason.Free;
+    NewRec.DenyComments.Free;
+    NewRec.OtherComments.Free;
+    NewRec.NewComments.Free;
+    Defaults.Free;
+    frmEditProc.Release;
+  end;
+end;
+
+procedure TfrmEditProc.InitDialog;
+var
+  i: integer;
+begin
+  FChanging := True;
+  Defaults := TStringList.Create;
+  FastAssign(ODForProcedures, Defaults);
+  FLastProcID := '';
+  cboProc.InitLongList(OldRec.ConsultProcName) ;
+  cboProc.SelectByIEN(OldRec.OrderableItem);
+  if cboProc.ItemIndex = -1 then
+    begin
+      cboProc.Items.Insert(0, IntToStr(OldRec.OrderableItem) + U + OldRec.ConsultProcName +
+                              U + OldRec.ConsultProcName + U + OldRec.ConsultProc);
+      cboProc.ItemIndex := 0;
+    end;
+  cboProcSelect(Self);
+  txtAttn.InitLongList(OldRec.AttnName) ;
+  if OldRec.Attention > 0 then
+    txtAttn.SelectByIEN(OldRec.Attention)
+  else
+    txtAttn.ItemIndex := -1;
+  cboService.SelectByIEN(OldRec.ToService);
+  if OldRec.InpOutp <> '' then
+    case OldRec.InpOutp[1] of
+      'I': radInpatient.Checked  := True;                 //INPATIENT PROCEDURE
+      'O': radOutpatient.Checked := True;                 //OUTPATIENT PROCEDURE
+    end
+  else
+    begin
+      if Patient.Inpatient then
+        radInpatient.Checked  := True
+      else
+        radOutpatient.Checked := True;
+    end;
+  cboPlace.SelectByID(OldRec.Place);
+  with cboUrgency do for i := 0 to Items.Count-1 do
+    if UpperCase(DisplayText[i]) = UpperCase(OldRec.UrgencyName) then ItemIndex := i;
+  txtProvDiag.Text := OldRec.ProvDiagnosis;
+  ProvDx.Code := OldRec.ProvDxCode;
+  if OldRec.ProvDxCodeInactive then
+   begin
+    InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+    ProvDx.CodeInactive := True;
+   end;
+  QuickCopy(OldRec.RequestReason, memReason);
+  btnCmtCancel.Enabled := (OldRec.DenyComments.Count > 0);
+  btnCmtOther.Enabled := (OldRec.OtherComments.Count > 0);
+  memComment.Clear ;
+  SetProvDiagPromptingMode;
+  FChanging := False;
+  StatusText('');
+end;
+
+procedure TfrmEditProc.Validate(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  if cboProc.ItemIEN = 0                  then SetError(TX_NO_PROC);
+  if memReason.Lines.Count = 0            then SetError(TX_NO_REASON);
+  if cboService.ItemIEN = 0               then SetError(TX_NO_SERVICE);
+  if cboUrgency.ItemIEN = 0               then SetError(TX_NO_URGENCY);
+  if cboPlace.ItemID = ''                 then SetError(TX_NO_PLACE);
+  if (ProvDx.Reqd = 'R') and (Length(txtProvDiag.Text) = 0) then
+    begin
+      if ProvDx.PromptMode = 'F' then
+        SetError(TX_NO_DIAG)
+      else
+        SetError(TX_SELECT_DIAG);
+    end;
+  if OldRec.ProvDxCodeInactive and ProvDx.CodeInactive then
+    SetError(TX_INACTIVE_CODE);
+end;
+
+procedure TfrmEditProc.txtAttnNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  txtAttn.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmEditProc.cboProcNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboProc.ForDataUse(SubSetOfProcedures(StartFrom, Direction));
+end;
+
+procedure TfrmEditProc.radInpatientClick(Sender: TObject);
+begin
+  inherited;
+  cboCategory.Items.Clear;
+  cboCategory.Items.Add('I^Inpatient');
+  cboCategory.SelectById('I');
+  ExtractItems(cboPlace.Items, Defaults, 'Inpt Place');
+  ExtractItems(cboUrgency.Items, Defaults, 'Inpt Proc Urgencies');      //S.GMRCR
+  ControlChange(Self);
+end;
+
+procedure TfrmEditProc.radOutpatientClick(Sender: TObject);
+begin
+  inherited;
+  cboCategory.Items.Clear;
+  cboCategory.Items.Add('O^Outpatient');
+  cboCategory.SelectById('O');
+  ExtractItems(cboPlace.Items, Defaults, 'Outpt Place');
+  ExtractItems(cboUrgency.Items, Defaults, 'Outpt Urgencies');     //S.GMRCO
+  ControlChange(Self);
+end;
+
+procedure TfrmEditProc.ControlChange(Sender: TObject);
+begin
+  if FChanging then exit;
+  with NewRec do
+    begin
+      with cboProc do if ItemIEN > 0 then
+        if Piece(Items[ItemIndex], U, 4) <> OldRec.ConsultProc then
+          begin
+            ConsultProc     := Piece(Items[ItemIndex], U, 4);
+            ConsultProcName := Text;
+          end
+        else
+          begin
+            ConsultProc     := '';
+            ConsultProcName := '';
+          end;
+
+      with cboService do if ItemIEN > 0 then
+        if ItemIEN <> OldRec.ToService then
+          begin
+            ToService     := ItemIEN;
+            ToServiceName := Text;
+          end
+        else
+          begin
+            ToService     := 0;
+            ToServiceName := '';
+          end;
+
+     with cboCategory do if Length(ItemID) > 0 then
+       if ItemID <> OldRec.InpOutP then
+         InpOutP := ItemID
+       else
+         InpOutP := '';
+
+     with cboUrgency do if ItemIEN > 0 then
+       if StrToIntDef(Piece(Items[ItemIndex], U, 3), 0) <> OldRec.Urgency then
+         begin
+           Urgency     := StrToIntDef(Piece(Items[ItemIndex], U, 3), 0);
+           UrgencyName := Text;
+         end
+       else
+         begin
+           Urgency     := 0;
+           UrgencyName := '';
+         end;
+
+
+     with cboPlace do if Length(ItemID) > 0 then
+       if ItemID <> OldRec.Place then
+         begin
+           Place     := ItemID;
+           PlaceName := Text;
+         end
+       else
+         begin
+           Place     := '';
+           PlaceName := '';
+         end;
+
+     with txtAttn do
+       if ItemIEN > 0 then
+         begin
+           if ItemIEN <> OldRec.Attention then
+             begin
+               Attention := ItemIEN;
+               AttnName  := Text;
+             end
+           else
+             begin
+               Attention := 0;
+               AttnName  := '';
+             end;
+         end
+       else  // blank
+         begin
+           if OldRec.Attention > 0 then
+             begin
+               Attention := -1;
+               AttnName  := '';
+             end
+           else
+             begin
+               Attention := 0;
+               AttnName  := '';
+             end;
+         end;
+
+     with txtProvDiag do
+       if Length(Text) > 0 then
+         begin
+           if Text <> OldRec.ProvDiagnosis then
+             ProvDiagnosis := Text
+           else
+             ProvDiagnosis := '';
+
+           if ProvDx.Code <> OldRec.ProvDxCode then
+             ProvDxCode := ProvDx.Code
+           else
+             ProvDxCode := '';
+
+           if OldRec.ProvDxCodeInactive then
+             ProvDx.CodeInactive := (ProvDx.Code = OldRec.ProvDxCode);
+         end
+       else  //blank
+         begin
+           ProvDx.Code := '';
+           ProvDx.CodeInactive := False;
+           if OldRec.ProvDiagnosis <> '' then
+             ProvDiagnosis := '@'
+           else
+             ProvDiagnosis := '';
+         end;
+
+     with memReason do if Lines.Count > 0 then
+        if Lines.Equals(OldRec.RequestReason) then
+          RequestReason.Clear
+        else
+          QuickCopy(memReason, RequestReason);
+
+      with memComment do
+        if GetTextLen > 0 then
+          QuickCopy(memComment, NewComments)
+        else
+          NewComments.Clear;
+    end;
+end;
+
+procedure TfrmEditProc.FormClose(Sender: TObject; var Action: TCloseAction);
+const
+  TX_ACCEPT = 'Resubmit this request?' + CRLF + CRLF;
+  TX_ACCEPT_CAP = 'Unsaved Changes';
+begin
+  if FChanged then
+    if InfoBox(TX_ACCEPT, TX_ACCEPT_CAP, MB_YESNO) = ID_YES then
+      if not ValidSave then Action := caNone;
+end;
+
+function TfrmEditProc.ValidSave: Boolean;
+const
+  TX_NO_SAVE     = 'This request cannot be saved for the following reason(s):' + CRLF + CRLF;
+  TX_NO_SAVE_CAP = 'Unable to Save Request';
+  TX_SAVE_ERR    = 'Unexpected error - it was not possible to save this request.';
+var
+  ErrMsg: string;
+begin
+  Result := True;
+  Validate(ErrMsg);
+  if Length(ErrMsg) > 0 then
+  begin
+    InfoBox(TX_NO_SAVE + ErrMsg, TX_NO_SAVE_CAP, MB_OK);
+    Result := False;
+  end;
+  if (ProvDx.Reqd = 'R') and (Length(txtProvDiag.Text) = 0) and (ProvDx.PromptMode = 'L') then
+    cmdLexSearchClick(Self);
+end;
+
+procedure TfrmEditProc.cboProcSelect(Sender: TObject);
+begin
+  inherited;
+  with cboProc do
+   begin
+    if ItemIndex = -1 then Exit;
+    if ItemID <> FLastProcID then FLastProcID := ItemID else Exit;
+    with cboService do
+      begin
+        Clear;
+        FastAssign(GetProcedureServices(cboProc.ItemIEN), cboService.Items);
+        if Items.Count > 0 then
+          begin
+            ItemIndex := 0 ;
+            NewRec.ToService := ItemIEN;
+            NewRec.ToServiceName := Text;
+          end
+        else
+          begin
+            InfoBox('There are no services defined for this procedure.',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            cboProc.ItemIndex := -1;
+            InitDialog;
+            Exit ;
+          end;
+      end;
+   end;
+  OrderMessage(ConsultMessage(cboProc.ItemIEN));
+  ControlChange(Self) ;
+end;
+
+procedure TfrmEditProc.memReasonExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    //QuickCopy(memReason, AStringList);
+    AStringList.Text := memReason.Text;
+    LimitStringLength(AStringList, 74);
+    //QuickCopy(AstringList, memReason);
+    memReason.Text := AStringList.Text;
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure TfrmEditProc.cmdAcceptClick(Sender: TObject);
+begin
+  if ValidSave then
+    begin
+      FChanged := (ResubmitConsult(NewRec) = '0');
+      Close;
+    end;
+end;
+
+procedure TfrmEditProc.cmdQuitClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := False;
+  Close;
+end;
+
+procedure TfrmEditProc.OrderMessage(const AMessage: string);
+begin
+  memMessage.Lines.SetText(PChar(AMessage));
+  if ContainsVisibleChar(AMessage) then
+  begin
+    pnlMessage.Visible := True;
+    pnlMessage.BringToFront;
+    uMessageVisible := GetTickCount;
+  end
+  else pnlMessage.Visible := False;
+end;
+
+procedure TfrmEditProc.btnCmtCancelClick(Sender: TObject);
+begin
+  ReportBox(OldRec.DenyComments, 'Cancellation Comments', False);
+end;
+
+procedure TfrmEditProc.btnCmtOtherClick(Sender: TObject);
+begin
+  ReportBox(OldRec.OtherComments, 'Added Comments', False);
+end;
+
+
+
+procedure TfrmEditProc.cmdLexSearchClick(Sender: TObject);
+var
+  Match: string;
+  i: integer;
+begin
+  inherited;
+  LexiconLookup(Match, LX_ICD);
+  if Match = '' then Exit;
+  ProvDx.Code := Piece(Match, U, 1);
+  ProvDx.Text := Piece(Match, U, 2);
+  i := Pos(' (ICD', ProvDx.Text);
+  if i = 0 then i := Length(ProvDx.Text) + 1;
+  if ProvDx.Text[i-1] = '*' then i := i - 2;
+  ProvDx.Text := Copy(ProvDx.Text, 1, i - 1);
+  txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
+  ProvDx.CodeInactive := False;
+end;
+
+procedure TfrmEditProc.SetProvDiagPromptingMode;
+const
+  TX_USE_LEXICON = 'You must use the "Lexicon" button to select a provisional diagnosis for this service.';
+  TX_PROVDX_OPT  = 'Provisional Diagnosis';
+  TX_PROVDX_REQD = 'Provisional Dx (REQUIRED)';
+begin
+  cmdLexSearch.Enabled   := False;
+  txtProvDiag.Enabled    := False;
+  txtProvDiag.ReadOnly   := True;
+  txtProvDiag.Color      := clBtnFace;
+  txtProvDiag.Font.Color := clBtnText;
+  lblProvDiag.Enabled    := False;
+  txtProvDiag.Hint       := '';
+  if cboProc.ItemIEN = 0 then Exit;
+  //GetProvDxMode(ProvDx, cboService.ItemID);
+  GetProvDxMode(ProvDx, Piece(cboProc.Items[cboProc.ItemIndex], U, 4));
+  //  Returns:  string  A^B
+  //     A = O (optional), R (required) or S (suppress)
+  //     B = F (free-text) or L (lexicon)
+  with ProvDx do if (Reqd = '') or (PromptMode = '') then Exit;
+  if ProvDx.Reqd = 'R' then
+    lblProvDiag.Caption := TX_PROVDX_REQD
+  else
+    lblProvDiag.Caption := TX_PROVDX_OPT;
+  if ProvDx.Reqd = 'S' then
+    begin
+      cmdLexSearch.Enabled   := False;
+      txtProvDiag.Enabled    := False;
+      txtProvDiag.ReadOnly   := True;
+      txtProvDiag.Color      := clBtnFace;
+      txtProvDiag.Font.Color := clBtnText;
+      lblProvDiag.Enabled    := False;
+    end
+  else
+    case ProvDx.PromptMode[1] of
+      'F':  begin
+              cmdLexSearch.Enabled   := False;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := False;
+              txtProvDiag.Color      := clWindow;
+              txtProvDiag.Font.Color := clWindowText;
+              lblProvDiag.Enabled    := True;
+            end;
+      'L':  begin
+              cmdLexSearch.Enabled   := True;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := True;
+              txtProvDiag.Color      := clInfoBk;
+              txtProvDiag.Font.Color := clInfoText;
+              lblProvDiag.Enabled    := True;
+              txtProvDiag.Hint       := TX_USE_LEXICON;
+            end;
+    end;
+end;
+
+procedure TfrmEditProc.mnuPopProvDxDeleteClick(Sender: TObject);
+begin
+  inherited;
+  ProvDx.Text := '';
+  ProvDx.Code := '';
+  ProvDx.CodeInactive := False;
+  txtProvDiag.Text := '';
+  ControlChange(Self);
+end;
+
+procedure TfrmEditProc.popReasonPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popReason) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popReason))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popReasonCut.Enabled      := FEditCtrl.SelLength > 0;
+    popReasonCopy.Enabled     := popReasonCut.Enabled;
+    popReasonPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+  end else
+  begin
+    popReasonCut.Enabled      := False;
+    popReasonCopy.Enabled     := False;
+    popReasonPaste.Enabled    := False;
+  end;
+  popReasonReformat.Enabled := True;
+end;
+
+procedure TfrmEditProc.popReasonCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmEditProc.popReasonCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmEditProc.popReasonPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmEditProc.popReasonReformatClick(Sender: TObject);
+begin
+  if (Screen.ActiveControl <> memReason) and
+     (Screen.ActiveControl <> memComment)then Exit;
+  ReformatMemoParagraph(TCustomMemo(FEditCtrl));
+end;
+
+
+procedure TfrmEditProc.memCommentKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if FNavigatingTab then
+  begin
+    if ssShift in Shift then
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
+    else if ssCtrl	in Shift then
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmEditProc.memReasonKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  //The navigating tab controls were inadvertantently adding tab characters
+  //This should fix it
+  FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
+  if FNavigatingTab then
+    Key := 0;
+end;
+
+procedure TfrmEditProc.memReasonKeyPress(Sender: TObject; var Key: Char);
+begin
+  if FNavigatingTab then
+    Key := #0;  //Disable shift-tab processing
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODConsult.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODConsult.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODConsult.dfm	(revision 1676)
@@ -0,0 +1,545 @@
+inherited frmODCslt: TfrmODCslt
+  Tag = 110
+  Left = 430
+  Top = 203
+  Width = 606
+  Height = 376
+  HorzScrollBar.Range = 590
+  VertScrollBar.Range = 340
+  Caption = 'Order a Consult'
+  Constraints.MinHeight = 376
+  Constraints.MinWidth = 606
+  Font.Charset = ANSI_CHARSET
+  ExplicitWidth = 606
+  ExplicitHeight = 376
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblService: TLabel [0]
+    Left = 1
+    Top = 2
+    Width = 134
+    Height = 13
+    Caption = 'Consult to Service/Specialty'
+  end
+  object lblProvDiag: TLabel [1]
+    Left = 309
+    Top = 81
+    Width = 100
+    Height = 13
+    Anchors = [akTop, akRight]
+    Caption = 'Provisional Diagnosis'
+  end
+  object lblUrgency: TLabel [2]
+    Left = 309
+    Top = 2
+    Width = 40
+    Height = 13
+    Anchors = [akTop, akRight]
+    Caption = 'Urgency'
+  end
+  object lblPlace: TLabel [3]
+    Left = 454
+    Top = 43
+    Width = 100
+    Height = 13
+    Anchors = [akTop, akRight]
+    Caption = 'Place of Consultation'
+  end
+  object lblAttn: TLabel [4]
+    Left = 454
+    Top = 2
+    Width = 42
+    Height = 13
+    Anchors = [akTop, akRight]
+    Caption = 'Attention'
+  end
+  object pnlReason: TPanel [5]
+    Left = 3
+    Top = 128
+    Width = 585
+    Height = 161
+    Anchors = [akLeft, akTop, akRight]
+    BevelOuter = bvNone
+    TabOrder = 10
+    object lblReason: TLabel
+      Left = 0
+      Top = 0
+      Width = 585
+      Height = 13
+      Align = alTop
+      Caption = 'Reason for Request'
+      ExplicitWidth = 95
+    end
+    object memReason: TRichEdit
+      Left = 0
+      Top = 13
+      Width = 585
+      Height = 148
+      Align = alClient
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = []
+      Constraints.MinHeight = 40
+      ParentFont = False
+      PopupMenu = popReason
+      ScrollBars = ssBoth
+      TabOrder = 0
+      WantTabs = True
+      OnChange = ControlChange
+      OnExit = memReasonExit
+      OnKeyDown = memReasonKeyDown
+      OnKeyPress = memReasonKeyPress
+      OnKeyUp = memReasonKeyUp
+    end
+  end
+  inherited memOrder: TCaptionMemo
+    Left = 3
+    Top = 305
+    Width = 417
+    Height = 41
+    TabStop = True
+    Anchors = [akLeft, akBottom]
+    Lines.Strings = (
+      'The order text...'
+      '----------------------------------------------'
+      '--------------------------------'
+      'An order message may be displayed here.')
+    TabOrder = 11
+    ExplicitLeft = 3
+    ExplicitTop = 305
+    ExplicitWidth = 417
+    ExplicitHeight = 41
+  end
+  object cboService: TORComboBox [7]
+    Left = 0
+    Top = 16
+    Width = 274
+    Height = 113
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Consult to Service/Specialty'
+    Color = clWindow
+    DropDownCount = 12
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    TabStop = True
+    OnChange = ControlChange
+    OnClick = cboServiceSelect
+    OnExit = cboServiceExit
+    OnKeyDown = cboServiceKeyDown
+    OnKeyUp = cboServiceKeyUp
+    CharsNeedMatch = 1
+  end
+  object cboUrgency: TORComboBox [8]
+    Left = 309
+    Top = 16
+    Width = 133
+    Height = 21
+    Anchors = [akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    TabStop = True
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboPlace: TORComboBox [9]
+    Left = 454
+    Top = 56
+    Width = 136
+    Height = 21
+    Anchors = [akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 6
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object txtProvDiag: TCaptionEdit [10]
+    Left = 309
+    Top = 94
+    Width = 231
+    Height = 21
+    Anchors = [akTop, akRight]
+    MaxLength = 180
+    ParentShowHint = False
+    PopupMenu = mnuPopProvDx
+    ShowHint = True
+    TabOrder = 8
+    OnChange = txtProvDiagChange
+  end
+  object txtAttn: TORComboBox [11]
+    Left = 454
+    Top = 16
+    Width = 136
+    Height = 21
+    Anchors = [akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = ControlChange
+    OnNeedData = txtAttnNeedData
+    CharsNeedMatch = 1
+  end
+  object treService: TORTreeView [12]
+    Left = 0
+    Top = 38
+    Width = 298
+    Height = 220
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -9
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    HideSelection = False
+    Indent = 19
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 2
+    Visible = False
+    OnChange = treServiceChange
+    OnCollapsing = treServiceCollapsing
+    OnEnter = treServiceEnter
+    OnExit = treServiceExit
+    OnKeyDown = treServiceKeyDown
+    OnKeyUp = treServiceKeyUp
+    OnMouseDown = treServiceMouseDown
+    NodePiece = 0
+  end
+  object cboCategory: TORComboBox [13]
+    Left = 225
+    Top = -5
+    Width = 5
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 15
+    Visible = False
+    CharsNeedMatch = 1
+  end
+  object pnlServiceTreeButton: TKeyClickPanel [14]
+    Left = 274
+    Top = 14
+    Width = 26
+    Height = 26
+    Hint = 'View services/specialties hierarchically'
+    Anchors = [akTop, akRight]
+    BevelOuter = bvNone
+    BevelWidth = 2
+    Caption = 'View services/specialties hierarchically'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clBtnFace
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+    TabStop = True
+    OnClick = btnServiceTreeClick
+    OnEnter = pnlServiceTreeButtonEnter
+    OnExit = pnlServiceTreeButtonExit
+    object btnServiceTree: TSpeedButton
+      Left = 2
+      Top = 2
+      Width = 22
+      Height = 22
+      Hint = 'View services/specialties hierarchically'
+      Glyph.Data = {
+        26050000424D26050000000000003604000028000000100000000F0000000100
+        080000000000F000000000000000000000000001000000010000000000000000
+        80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+        A6000020400000206000002080000020A0000020C0000020E000004000000040
+        20000040400000406000004080000040A0000040C0000040E000006000000060
+        20000060400000606000006080000060A0000060C0000060E000008000000080
+        20000080400000806000008080000080A0000080C0000080E00000A0000000A0
+        200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0
+        200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0
+        200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000
+        20004000400040006000400080004000A0004000C0004000E000402000004020
+        20004020400040206000402080004020A0004020C0004020E000404000004040
+        20004040400040406000404080004040A0004040C0004040E000406000004060
+        20004060400040606000406080004060A0004060C0004060E000408000004080
+        20004080400040806000408080004080A0004080C0004080E00040A0000040A0
+        200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0
+        200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0
+        200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000
+        20008000400080006000800080008000A0008000C0008000E000802000008020
+        20008020400080206000802080008020A0008020C0008020E000804000008040
+        20008040400080406000804080008040A0008040C0008040E000806000008060
+        20008060400080606000806080008060A0008060C0008060E000808000008080
+        20008080400080806000808080008080A0008080C0008080E00080A0000080A0
+        200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0
+        200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0
+        200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000
+        2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020
+        2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040
+        2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060
+        2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080
+        2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0
+        2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0
+        2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFF0700
+        07FFFFFFFFFFFFFFFFFFFFA4A407000400FF040404040404FFFFFFA4FFFF0700
+        07FFFFFFFFFFFFFFFFFFFFA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4FFFFFFFF
+        FFFF070007FFFFFFFFFFFFA4FFFFFFA4A407000400FF04040404FFA4FFFFFFA4
+        FFFF070007FFFFFFFFFFFFA4FFFFFF07FFFFFFFFFFFFFFFFFFFFFFA4FFFF0700
+        07FFFFFFFFFFFFFFFFFFFFA4A407000400FF0404040404FFFFFFFFA4FFFF0700
+        07FFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFF070007FFFFFF
+        FFFFFFFFFFFFFFFFFFFF00FB00FF0404040404FFFFFFFFFFFFFF070007FFFFFF
+        FFFFFFFFFFFFFFFFFFFF}
+      Margin = 0
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = btnServiceTreeClick
+    end
+  end
+  object cmdLexSearch: TButton [15]
+    Left = 543
+    Top = 94
+    Width = 49
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = 'Lexicon'
+    TabOrder = 9
+    OnClick = cmdLexSearchClick
+  end
+  object gbInptOpt: TGroupBox [16]
+    Left = 309
+    Top = 35
+    Width = 140
+    Height = 45
+    Anchors = [akTop, akRight]
+    Caption = 'Patient will be seen as an:'
+    TabOrder = 5
+    object radInpatient: TRadioButton
+      Left = 3
+      Top = 20
+      Width = 61
+      Height = 13
+      Caption = '&Inpatient'
+      TabOrder = 0
+      OnClick = radInpatientClick
+    end
+    object radOutpatient: TRadioButton
+      Left = 67
+      Top = 20
+      Width = 70
+      Height = 13
+      Caption = '&Outpatient'
+      TabOrder = 1
+      OnClick = radOutpatientClick
+    end
+  end
+  object btnDiagnosis: TButton [17]
+    Left = 543
+    Top = 95
+    Width = 49
+    Height = 20
+    Anchors = [akTop, akRight]
+    Caption = 'Diagnosis'
+    TabOrder = 7
+    OnClick = btnDiagnosisClick
+  end
+  inherited cmdAccept: TButton
+    Left = 439
+    Top = 315
+    Anchors = [akLeft, akBottom]
+    TabOrder = 12
+    ExplicitLeft = 439
+    ExplicitTop = 315
+  end
+  inherited cmdQuit: TButton
+    Left = 531
+    Top = 315
+    Width = 61
+    Anchors = [akLeft, akBottom]
+    TabOrder = 13
+    ExplicitLeft = 531
+    ExplicitTop = 315
+    ExplicitWidth = 61
+  end
+  inherited pnlMessage: TPanel
+    Left = 13
+    Top = 295
+    Width = 377
+    Anchors = [akLeft, akRight, akBottom]
+    TabOrder = 14
+    ExplicitLeft = 13
+    ExplicitTop = 295
+    ExplicitWidth = 377
+    inherited memMessage: TRichEdit
+      Width = 292
+      ExplicitWidth = 292
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlReason'
+        'Status = stsDefault')
+      (
+        'Component = memReason'
+        'Label = lblReason'
+        'Status = stsOK')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Label = lblUrgency'
+        'Status = stsOK')
+      (
+        'Component = cboPlace'
+        'Label = lblPlace'
+        'Status = stsOK')
+      (
+        'Component = txtProvDiag'
+        'Label = lblProvDiag'
+        'Status = stsOK')
+      (
+        'Component = txtAttn'
+        'Label = lblAttn'
+        'Status = stsOK')
+      (
+        'Component = treService'
+        'Status = stsDefault')
+      (
+        'Component = cboCategory'
+        'Status = stsDefault')
+      (
+        'Component = pnlServiceTreeButton'
+        'Status = stsDefault')
+      (
+        'Component = cmdLexSearch'
+        'Status = stsDefault')
+      (
+        'Component = gbInptOpt'
+        'Status = stsDefault')
+      (
+        'Component = radInpatient'
+        'Status = stsDefault')
+      (
+        'Component = radOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = btnDiagnosis'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODCslt'
+        'Status = stsDefault'))
+  end
+  object mnuPopProvDx: TPopupMenu
+    Left = 353
+    Top = 77
+    object mnuPopProvDxDelete: TMenuItem
+      Caption = 'Delete diagnosis'
+      OnClick = mnuPopProvDxDeleteClick
+    end
+  end
+  object popReason: TPopupMenu
+    OnPopup = popReasonPopup
+    Left = 411
+    Top = 188
+    object popReasonCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popReasonCutClick
+    end
+    object popReasonCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popReasonCopyClick
+    end
+    object popReasonPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popReasonPasteClick
+    end
+    object popReasonPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popReasonPasteClick
+    end
+    object popReasonReformat: TMenuItem
+      Caption = 'Reformat Paragraph'
+      ShortCut = 16466
+      OnClick = popReasonReformatClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODConsult.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODConsult.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODConsult.pas	(revision 1676)
@@ -0,0 +1,1499 @@
+unit fODConsult;
+
+{$O-}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ORCtrls, ExtCtrls, ComCtrls, ORfn, uConst, Buttons,
+  Menus, UBAGlobals, rOrders, fBALocalDiagnoses, UBAConst, UBACore, ORNet,
+  VA508AccessibilityManager ;
+
+type
+  TfrmODCslt = class(TfrmODBase)
+    cboService: TORComboBox;
+    cboUrgency: TORComboBox;
+    cboPlace: TORComboBox;
+    txtProvDiag: TCaptionEdit;
+    txtAttn: TORComboBox;
+    lblService: TLabel;
+    lblUrgency: TLabel;
+    lblPlace: TLabel;
+    lblAttn: TLabel;
+    lblProvDiag: TLabel;
+    treService: TORTreeView;
+    cboCategory: TORComboBox;
+    pnlServiceTreeButton: TKeyClickPanel;
+    btnServiceTree: TSpeedButton;
+    mnuPopProvDx: TPopupMenu;
+    mnuPopProvDxDelete: TMenuItem;
+    cmdLexSearch: TButton;
+    popReason: TPopupMenu;
+    popReasonCut: TMenuItem;
+    popReasonCopy: TMenuItem;
+    popReasonPaste: TMenuItem;
+    popReasonPaste2: TMenuItem;
+    popReasonReformat: TMenuItem;
+    gbInptOpt: TGroupBox;
+    radInpatient: TRadioButton;
+    radOutpatient: TRadioButton;
+    pnlReason: TPanel;
+    lblReason: TLabel;
+    memReason: TRichEdit;
+    btnDiagnosis: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure txtAttnNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure radInpatientClick(Sender: TObject);
+    procedure radOutpatientClick(Sender: TObject);
+    procedure treServiceChange(Sender: TObject; Node: TTreeNode);
+    procedure ControlChange(Sender: TObject);
+    procedure treServiceExit(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure memReasonExit(Sender: TObject);
+    procedure cboServiceSelect(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure btnServiceTreeClick(Sender: TObject);
+    procedure treServiceCollapsing(Sender: TObject; Node: TTreeNode;
+      var AllowCollapse: Boolean);
+    procedure treServiceMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure cmdLexSearchClick(Sender: TObject);
+    procedure mnuPopProvDxDeleteClick(Sender: TObject);
+    procedure txtProvDiagChange(Sender: TObject);
+    procedure cboServiceExit(Sender: TObject);
+    procedure popReasonCutClick(Sender: TObject);
+    procedure popReasonCopyClick(Sender: TObject);
+    procedure popReasonPasteClick(Sender: TObject);
+    procedure popReasonPopup(Sender: TObject);
+    procedure popReasonReformatClick(Sender: TObject);
+    procedure pnlServiceTreeButtonEnter(Sender: TObject);
+    procedure pnlServiceTreeButtonExit(Sender: TObject);
+    procedure treServiceKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure treServiceKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyPress(Sender: TObject; var Key: Char);
+    procedure cboServiceKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboServiceKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnDiagnosisClick(Sender: TObject);
+    procedure cmdQuitClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormResize(Sender: TObject);
+    procedure treServiceEnter(Sender: TObject);
+
+  private
+    FcboServiceKeyDownStopClick : boolean;
+    FKeyBoarding: boolean;
+    FLastServiceID: string;
+    FEditCtrl: TCustomEdit;
+    FNavigatingTab: boolean;
+    procedure BuildQuickTree(QuickList: TStrings; const Parent: string; Node: TTreeNode);
+    procedure ReadServerVariables;
+    procedure SetProvDiagPromptingMode;
+    procedure SetupReasonForRequest(OrderAction: integer);
+    procedure GetProvDxandValidateCode(AResponses: TResponses);
+    function ShowPrerequisites: boolean;
+    procedure DoSetFontSize(FontSize: integer);
+    procedure SetUpQuickOrderDX;
+    procedure SaveConsultDxForNurse(pDiagnosis: string);  // save the dx entered by nurese if Master BA switch is ON
+    procedure SetUpCopyConsultDiagnoses(pOrderID:string);
+    procedure AdjustMemReasonSize;
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+    function DefaultReasonForRequest(Service: string; Resolve: Boolean): TStrings;
+    
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure SetFontSize(FontSize: integer); override;
+  end;
+
+var
+  LastNode: integer ;
+  displayDXCode: string;
+  consultQuickOrder: boolean;
+
+
+implementation
+
+{$R *.DFM}
+
+uses
+    rODBase, rConsults, uCore, uConsults, rCore, fConsults, fPCELex, rPCE, fPreReq,
+    ORClasses, clipbrd, uTemplates, fFrame, uODBase, uVA508CPRSCompatibility;
+
+var
+  SvcList, QuickList, Defaults: TStrings ;
+  ProvDx:  TProvisionalDiagnosis;
+  GMRCREAF: string;
+  BADxUpdated: boolean;
+  quickCode: string;
+
+
+
+
+const
+  TX_NOTTHISSVC_TEXT = 'Consults cannot be ordered from this service' ;
+  TX_NO_SVC          = 'A service must be specified.'    ;
+  TX_NO_REASON       = 'A reason for this consult must be entered.'  ;
+  TX_SVC_ERROR       = 'This service has not been defined in your Orderable Items file.' +
+                       #13#10'Contact IRM for assistance.' ;
+  TX_NO_URGENCY      = 'An urgency must be specified.';
+  TX_NO_PLACE        = 'A place of consultation must be specified';
+  TX_NO_DIAG         = 'A provisional diagnosis must be entered for consults to this service.';
+  TX_SELECT_DIAG     = 'You must select a diagnosis for consults to this service.';
+  TX_GROUPER         = 'This is not an orderable service. Please select a subspecialty';
+  TC_INACTIVE_CODE   = 'Inactive ICD Code';
+  TX_INACTIVE_CODE1  = 'The provisional diagnosis code is not active as of today''s date.' + #13#10;
+  TX_INACTIVE_CODE_REQD     = 'Another code must be selected before the order can be saved.';
+  TX_INACTIVE_CODE_OPTIONAL = 'If another code is not selected, no code will be saved.';
+
+  TX_SVC_HRCHY = 'services/specialties hierarchy';
+  TX_VIEW_SVC_HRCHY = 'View services/specialties hierarchically';
+  TX_CLOSE_SVC_HRCHY = 'Close services/specialties hierarchy tree view';
+
+procedure TfrmODCslt.FormCreate(Sender: TObject);
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  AutoSizeDisabled := True;
+  inherited;
+  if BILLING_AWARE then
+  begin
+     btnDiagnosis.Visible := True;
+     cmdLexSearch.Visible := False;
+  end
+  else
+  begin
+     btnDiagnosis.Visible := False;
+     cmdLexSearch.Visible := True;
+  end;
+  Defaults  := TStringList.Create ;
+  SvcList   := TStringList.Create ;
+  QuickList := TStringList.Create ;
+  AllowQuickOrder := True;
+  LastNode := 0;
+  FLastServiceID := '' ;
+  GMRCREAF := '';
+  FillChar(ProvDx, SizeOf(ProvDx), 0);
+  FillerID := 'GMRC';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'GMRCOR CONSULT';   // loads formatting info
+  StatusText('Loading Default Values');
+  FastAssign(ODForConsults, Defaults);  // ODForConsults returns TStrings with defaults
+  CtrlInits.LoadDefaults(Defaults);
+  txtAttn.InitLongList('') ;
+  PreserveControl(txtAttn);
+  InitDialog;
+  //Calling virtual SetFontSize in constructor is a bad idea!
+  DoSetFontSize( MainFontSize);
+  FcboServiceKeyDownStopClick := false;
+  consultQuickOrder := false;
+
+
+end;
+
+procedure TfrmODCslt.InitDialog;
+begin
+  inherited;
+  Changing := True;
+  FLastServiceID := '';
+  QuickList.Clear;
+  with CtrlInits do
+  begin
+   ExtractItems(QuickList, Defaults, 'ShortList');
+   if OrderForInpatient then                            //INPATIENT CONSULT
+    begin
+      radInpatient.Checked := True;
+      cboCategory.Items.Clear;
+      cboCategory.Items.Add('I^Inpatient');
+      cboCategory.SelectById('I');
+      SetControl(cboPlace, 'Inpt Place');
+      SetControl(cboUrgency, 'Inpt Cslt Urgencies');        //S.GMRCT
+    end
+   else
+    begin
+      radOutpatient.Checked := True;                   //OUTPATIENT CONSULT
+      cboCategory.Items.Clear;
+      cboCategory.Items.Add('O^Outpatient');
+      cboCategory.SelectById('O');
+      SetControl(cboPlace, 'Outpt Place');
+      SetControl(cboUrgency, 'Outpt Urgencies');      //S.GMRCO
+    end ;
+  end ;
+  StatusText('Initializing Long List');
+  memOrder.Clear ;
+  memReason.Clear;
+  cboService.Enabled := True;
+  cboService.Font.Color := clWindowText;
+  cboService.Height := 25 + (7 * cboService.ItemHeight);
+  btnServiceTree.Enabled := True;
+  pnlServiceTreeButton.Enabled := True;
+  SetProvDiagPromptingMode;
+  ActiveControl := cboService; // set after call to SetProvDiagPromptingMode
+  Changing := False;
+  StatusText('');
+end;
+
+procedure TfrmODCslt.SetupDialog(OrderAction: Integer; const ID: string);
+const
+  TX_INACTIVE_SVC = 'This consult service is currently inactive and not receiving requests.' + CRLF +
+                    'Please contact your Clinical Coordinator/IRM staff to fix this order.';
+  TX_INACTIVE_SVC_CAP = 'Inactive Service';
+  TX_NO_SVC = 'The order or quick order you have selected does not specify a consult service.' + CRLF +
+              'Please contact your Clinical Coordinator/IRM staff to fix this order.';
+  TC_NO_SVC = 'No service specified';
+var
+ i:integer;
+ AList: TStringList;
+ tmpResp: TResponse;
+ SvcIEN: string;
+begin
+  inherited;
+  ReadServerVariables;
+  AList := TStringList.Create;
+  try
+    if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+    begin
+      Changing := True;
+      tmpResp := TResponse(FindResponseByName('ORDERABLE',1));
+      if tmpResp <> nil then
+        SvcIEN := GetServiceIEN(tmpResp.IValue)
+      else
+        begin
+          InfoBox(TX_NO_SVC, TC_NO_SVC, MB_ICONERROR or MB_OK);
+          AbortOrder := True;
+          Close;
+          Exit;
+        end;
+      if SvcIEN = '-1' then
+        begin
+          InfoBox(TX_INACTIVE_SVC, TX_INACTIVE_SVC_CAP, MB_OK);
+          AbortOrder := True;
+          Close;
+          Exit;
+        end;
+      cboService.Items.Add(SvcIEN + U + tmpResp.EValue + '^^^^' + tmpResp.IValue);
+      cboService.SelectByID(SvcIEN);
+      tmpResp := TResponse(FindResponseByName('CLASS',1));
+      cboCategory.SelectByID(tmpResp.IValue);
+      if tmpResp.IValue = 'I' then
+        radInpatient.Checked := True
+      else
+        radOutpatient.Checked := True ;
+      SetControl(cboUrgency,    'URGENCY',     1);
+      SetControl(cboPlace,      'PLACE',     1);
+      SetControl(txtAttn,       'PROVIDER',  1);
+      cboService.Enabled := False;
+      cboService.Font.Color := clGrayText;
+      btnServiceTree.Enabled := False;
+      pnlServiceTreeButton.Enabled := False;
+      if (OrderAction in [ORDER_COPY, ORDER_QUICK]) and (not ShowPrerequisites) then
+        begin
+          Close;
+          Exit;
+        end;
+      SetProvDiagPromptingMode;
+      GetProvDxandValidateCode(Responses);
+      SetTemplateDialogCanceled(FALSE);
+      SetControl(memReason,     'COMMENT',   1);
+      if WasTemplateDialogCanceled then
+      begin
+        AbortOrder := True;
+        Close;
+        Exit;
+      end;
+      SetTemplateDialogCanceled(FALSE);
+      SetupReasonForRequest(OrderAction);
+      if WasTemplateDialogCanceled then
+      begin
+        AbortOrder := True;
+        Close;
+        Exit;
+      end;
+      Changing := False;
+      ControlChange(Self);
+    end
+    else
+    begin
+      if QuickList.Count > 0 then BuildQuickTree(QuickList, '0', nil) ;
+      FastAssign(LoadServiceListWithSynonyms(CN_SVC_LIST_ORD), SvcList);           {RV}
+      FastAssign(SvcList, AList);
+      SortByPiece(AList, U, 2);
+      BuildServiceTree(treService, SvcList, '0', nil) ;
+      with treService do
+        begin
+          for i:=0 to Items.Count-1 do
+            if Items[i].Level > 0 then Items[i].Expanded := False else Items[i].Expanded := True;
+          TopItem  := Items[LastNode] ;
+          Changing := True;
+          Selected := Items[LastNode] ;
+          Changing := False;
+          SendMessage(Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+        end ;
+      if QuickList.Count > 0 then with cboService do
+        begin
+          FastAssign(QuickList, cboService.Items);
+          Items.Add(LLS_LINE);
+          Items.Add(LLS_SPACE);
+        end;
+      Changing := True;
+      for i := 0 to AList.Count - 1 do
+        if (cboService.Items.IndexOf(Trim(Piece(AList.Strings[i], U, 2))) = -1) and   {RV}
+        //if (cboService.SelectByID(Piece(AList.Strings[i], U, 1)) = -1) and
+           (Piece(AList.Strings[i], U, 5) <> '1') then
+          cboService.Items.Add(AList.Strings[i]);
+      cboService.ItemIndex := 0;
+      Changing := False;
+      if treService.Selected <> nil then
+        begin
+          if (TORTreeNode(treService.Selected).StringData <> '') and
+             (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
+            cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
+            //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
+          else
+            cboService.ItemIndex := -1;
+        end
+      else
+        cboService.ItemIndex := -1;
+      if cboService.ItemIEN > 0 then
+        begin
+          if not ShowPrerequisites then
+            begin
+              Close;
+              Exit;
+            end;
+          QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+        end;
+      PreserveControl(treService);
+      PreserveControl(cboService);
+    end;
+  finally
+    AList.Free;
+  end;
+end;
+
+procedure TfrmODCslt.Validate(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  if (not ContainsVisibleChar(memReason.Text)) then SetError(TX_NO_REASON);
+  if cboUrgency.ItemIEN = 0 then SetError(TX_NO_URGENCY);
+  if cboPlace.ItemID = '' then SetError(TX_NO_PLACE);
+  if cboService.ItemIEN = 0 then
+    SetError(TX_NO_SVC)
+  else
+    begin
+      if Piece(cboService.Items[cboService.ItemIndex],U,5) = '1' then SetError(TX_NOTTHISSVC_TEXT);
+      if (Piece(cboService.Items[cboService.ItemIndex],U,5) <> '1')
+         and (Piece(cboService.Items[cboService.ItemIndex],U,6) = '')
+                                              then SetError(TX_SVC_ERROR) ;
+    end;
+  if (ProvDx.Reqd = 'R') and (not ContainsVisibleChar(txtProvDiag.Text)) then
+    begin
+      if ProvDx.PromptMode = 'F' then
+        SetError(TX_NO_DIAG)
+      else
+        SetError(TX_SELECT_DIAG);
+    end;
+end;
+
+procedure TfrmODCslt.txtAttnNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  txtAttn.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmODCslt.radInpatientClick(Sender: TObject);
+begin
+  inherited;
+  with CtrlInits do
+  begin
+    SetControl(cboPlace, 'Inpt Place');
+    SetControl(cboUrgency, 'Inpt Cslt Urgencies');
+    cboCategory.Items.Clear;
+    cboCategory.Items.Add('I^Inpatient') ;
+    cboCategory.SelectById('I');
+  end ;
+  ControlChange(Self);
+end;
+
+procedure TfrmODCslt.radOutpatientClick(Sender: TObject);
+begin
+  inherited;
+  with CtrlInits do
+  begin
+    SetControl(cboPlace, 'Outpt Place');
+    SetControl(cboUrgency, 'Outpt Urgencies');
+    cboCategory.Items.Clear;
+    cboCategory.Items.Add('O^Outpatient');
+    cboCategory.SelectById('O');
+  end ;
+  ControlChange(Self);
+end;
+
+procedure TfrmODCslt.BuildQuickTree(QuickList: TStrings; const Parent: string; Node: TTreeNode);
+var
+  i: Integer;
+  QuickInfo, Name: string ;
+  ANode: TTreeNode;
+begin
+  with QuickList do
+    begin
+      Node := treService.Items.AddChildObject(Node, 'Quick Orders', nil);
+      for i := 0 to Count - 1 do
+       begin
+        Name        := Piece(Strings[i], U, 2);
+        QuickInfo   := Strings[i];
+        ANode := treService.Items.AddChildObject(Node, Name, Pointer(QuickInfo));
+        TORTreeNode(ANode).StringData := QuickInfo;
+       end;
+    end;
+end;
+
+procedure TfrmODCslt.treServiceChange(Sender: TObject; Node: TTreeNode);
+var
+  i: integer;
+  tmpSvc: string;
+begin
+  inherited;
+  pnlMessage.Visible := False;
+  if Changing or (treService.Selected = nil)
+     or FKeyBoarding or FcboServiceKeyDownStopClick then exit;
+  Changing := True;
+  with cboService do
+   begin
+    if treService.Selected <> nil then
+      begin
+        if (TORTreeNode(treService.Selected).StringData <> '') and
+           (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
+          cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
+          //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
+        else
+          begin
+            pnlMessage.TabOrder := treService.TabOrder + 1;
+            OrderMessage(TX_GROUPER);
+            cboService.ItemIndex := -1;
+            Changing := False;
+            Exit;
+          end;
+      end
+    else
+      ItemIndex := -1;
+(*    if (treService.Selected.Data <> nil) then
+      SelectByID(Piece(string(treService.Selected.Data), U, 1))
+    else
+      ItemIndex := -1;*)
+    Changing := False;
+    if ItemIndex < 0 then exit;
+    if Piece(Items[ItemIndex],U,5) = '1' then
+      begin
+        Responses.Update('ORDERABLE', 1, '', '');
+        memOrder.Clear;
+        cboService.ItemIndex := -1;
+        FLastServiceID := '';
+        Changing := True;
+        treService.Selected := nil;
+        Changing := False;
+        pnlMessage.TabOrder := treService.TabOrder + 1;
+        OrderMessage(TX_GROUPER);
+        Exit;
+      end;
+    treService.Visible := False;
+    memReason.Clear;
+    if ItemID <> FLastServiceID then FLastServiceID := ItemID else Exit;
+    Changing := True;
+    if Sender <> Self then
+      Responses.Clear;       // Sender=Self when called from SetupDialog
+    Changing := False;
+    if CharAt(ItemID, 1) = 'Q' then
+      begin
+        Changing := True;
+        consultQuickOrder := True;   
+        Responses.QuickOrder := ExtractInteger(ItemID);
+        tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).IValue;
+        with treService do for i := 0 to Items.Count-1 do
+          begin
+            if Piece(TORTreeNode(Items[i]).StringData, U, 6) = tmpSvc then
+              begin
+                Selected := Items[i];
+                break;
+              end;
+          end;
+        if treService.Selected <> nil then
+          begin
+            if (TORTreeNode(treService.Selected).StringData <> '') and
+               (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
+                 cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
+              //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
+            else
+              cboService.ItemIndex := -1;
+          end
+        else
+          cboService.ItemIndex := -1;
+        FLastServiceID := ItemID;
+        cboService.Enabled := False;
+        cboService.Font.Color := clGrayText;
+        btnServiceTree.Enabled := False;
+        pnlServiceTreeButton.Enabled := False;
+        Changing := False;
+      end;
+   end;
+  with Responses do if QuickOrder > 0 then
+    begin
+      tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).IValue;
+      with treService do for i := 0 to Items.Count-1 do
+        begin
+          if Piece(TORTreeNode(Items[i]).StringData, U, 6) = tmpSvc then
+            begin
+              Selected := Items[i];
+              break;
+            end;
+        end;
+      if treService.Selected <> nil then
+        begin
+          if (TORTreeNode(treService.Selected).StringData <> '') and
+             (Piece(TORTreeNode(treService.Selected).StringData, U, 5) <> '1') then
+                cboService.ItemIndex := cboService.Items.IndexOf(Trim(Piece(TORTreeNode(treService.Selected).StringData, U, 2)))
+            //cboService.SelectByID(Piece(string(treService.Selected.Data), U, 1))
+          else
+            cboService.ItemIndex := -1;
+        end
+      else
+        cboService.ItemIndex := -1;
+      Changing := True;
+      if not ShowPrerequisites then
+        begin
+          Close;
+          Exit;
+        end;
+      SetControl(cboCategory,   'CLASS',      1);
+      if cboCategory.ItemID = 'I' then radInpatient.Checked := True
+      else radOutpatient.Checked := True ;
+      SetControl(cboUrgency,    'URGENCY',     1);
+      SetControl(cboPlace,      'PLACE',     1);
+      SetControl(txtAttn,       'PROVIDER',  1);
+      SetTemplateDialogCanceled(FALSE);
+      SetControl(memReason,     'COMMENT',   1);
+      if WasTemplateDialogCanceled and OrderContainsObjects then
+      begin
+        AbortOrder := TRUE;
+        Close;
+        Exit;
+      end;
+      if ((cboService.ItemIEN > 0) and (Length(memReason.Text) = 0)) then
+        QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+      SetupReasonForRequest(ORDER_QUICK);
+      GetProvDxandValidateCode(Responses);
+      Changing := False;
+    end
+  else
+    begin
+      if cboService.ItemIEN > 0 then
+        begin
+          if not ShowPrerequisites then
+            begin
+              Close;
+              Exit;
+            end;
+          QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+          SetupReasonForRequest(ORDER_NEW);
+        end;
+    end;
+  SetProvDiagPromptingMode;
+  tmpSvc := Piece(cboService.Items[cboService.ItemIndex], U, 6);
+  pnlMessage.TabOrder := treService.TabOrder + 1;
+  OrderMessage(ConsultMessage(StrToIntDef(tmpSvc, 0)));
+  //OrderMessage(ConsultMessage(cboService.ItemIEN));
+  ControlChange(Self) ;
+end;
+
+procedure TfrmODCslt.ControlChange(Sender: TObject);
+var
+  x: string;
+  i: integer;
+begin
+  inherited;
+  if Changing or (cboService.ItemIEN = 0) then Exit;
+  with cboService    do
+    begin
+      if (ItemIEN > 0) and (Piece(Items[ItemIndex], U, 5) <> '1') then
+        begin
+          i := Pos('<', Text);
+          if i > 0 then
+            begin
+              x := Piece(Copy(Text, i + 1, 99), '>', 1);
+              x := UpperCase(Copy(x, 1, 1)) + Copy(x, 2, 99);
+            end
+          else
+            x := Text;
+          Responses.Update('ORDERABLE', 1, Piece(Items[ItemIndex], U, 6), x);
+        end
+      else Responses.Update('ORDERABLE', 1, '', '');
+    end;
+  with memReason     do if GetTextLen   > 0 then Responses.Update('COMMENT',   1, TX_WPTYPE, Text);
+  with cboCategory   do if ItemID     <> '' then Responses.Update('CLASS',     1, ItemID, Text);
+  with cboUrgency    do if ItemIEN      > 0 then Responses.Update('URGENCY',   1, ItemID, Text);
+  with cboPlace      do if ItemID     <> '' then Responses.Update('PLACE',     1, ItemID, Text);
+  with txtAttn       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
+  //with txtProvDiag   do if Length(Text) > 0 then Responses.Update('MISC',      1, Text,   Text);
+  if Length(ProvDx.Text)                > 0 then Responses.Update('MISC',      1, ProvDx.Text,   ProvDx.Text)
+   else Responses.Update('MISC',      1, '',   '');
+  if Length(ProvDx.Code)                > 0 then Responses.Update('CODE',      1, ProvDx.Code,   ProvDx.Code)
+   else Responses.Update('CODE',      1, '',   '');
+
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODCslt.treServiceEnter(Sender: TObject);
+begin
+  inherited;
+  cmdQuit.Cancel := FALSE;
+end;
+
+procedure TfrmODCslt.treServiceExit(Sender: TObject);
+begin
+  inherited;
+  cmdQuit.Cancel := TRUE;
+  with cboService do
+  begin
+    if ItemIEN > 0 then
+    begin
+      pnlMessage.TabOrder := treService.TabOrder + 1;
+      OrderMessage(ConsultMessage(StrToInt(Piece(Items[ItemIndex],U,6))));
+    end;
+  end;
+end;
+
+procedure TfrmODCslt.SetUpQuickOrderDX;
+// this procedure is called if the user selects a quick code from the list
+// and accepts the order without entering or selection the diagnoses button.
+begin
+   quickCode := ProvDx.Code;
+   if UBACore.IsICD9CodeActive(quickCode,'ICD',0) then
+   begin
+      uBAGlobals.BAConsultDxList.Clear;
+      uBAGlobals.BAConsultDxList.Add(UBAConst.PRIMARY_DX + U + ProvDx.Text + ':' +  quickCode);
+   end;
+
+end;
+
+procedure TfrmODCslt.cmdAcceptClick(Sender: TObject);
+var
+  BADiagnosis: string;
+ begin
+ inherited;
+ if treService.Selected <> nil then
+    LastNode := treService.Selected.AbsoluteIndex;
+
+ if  BILLING_AWARE and CIDCOkToSave  then
+ begin
+    if btnDiagnosis.Enabled then
+      if consultQuickOrder then SetUpQuickOrderDX;
+       if UBAGlobals.BAConsultDxList.Count > 0 then
+       begin
+          uBACore.CompleteConsultOrderRec(uBAGlobals.BAOrderID,UBAGlobals.BAConsultDxList);
+          uBAGlobals.BAConsultDxList.Clear;
+       end;
+    BADiagnosis := ProvDx.Text + '^' + ProvDx.Code;
+ end;
+
+ if NOT BILLING_AWARE then
+ begin
+   // this will save a dx entered by a nurse to be reviewed by a provided.
+   // this is active if CIDC MASTER SWITCH is ON.
+     if rpcGetBAMasterSwStatus then   // BA master sw is on.
+      if (uCore.User.OrderRole = OR_NURSE) then   // user is a nurse
+     begin
+        if ProvDx.Text <> '' then   // consult dx has been selected
+        begin
+            SaveConsultDxForNurse(ProvDx.Text + ProvDx.Code); // save selected dx, will be displayed to Provider
+        end;
+     end;
+ end;
+end;
+
+procedure TfrmODCslt.memReasonExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    //QuickCopy(memReason, AStringList);
+    AStringList.Text := memReason.Text;
+    LimitStringLength(AStringList, 74);
+    //QuickCopy(AstringList, memReason);
+    memReason.Text := AStringList.Text;
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure TfrmODCslt.cboServiceSelect(Sender: TObject);
+var
+  tmpSvc: string;
+begin
+  if FcboServiceKeyDownStopClick then
+  begin
+    Exit; //This fixes clearquest: HDS00001418
+    FcboServiceKeyDownStopClick := false;
+  end;
+  memReason.Clear;
+  with cboService do
+    begin
+      if (ItemIndex < 0) or (ItemID = '') then
+        begin
+          Responses.Update('ORDERABLE', 1, '', '');
+          memOrder.Clear;
+          FLastServiceID := '';
+          exit;
+        end;
+      if Piece(Items[ItemIndex],U,5) = '1' then
+        begin
+          Responses.Update('ORDERABLE', 1, '', '');
+          memOrder.Clear;
+          FLastServiceID := '';
+          pnlMessage.TabOrder := cboService.TabOrder + 1;
+          OrderMessage(TX_GROUPER);
+          Exit;
+        end;
+      FLastServiceID := ItemID;
+      if CharAt(ItemID, 1) = 'Q' then
+        begin
+          Changing := True;
+          Responses.QuickOrder := ExtractInteger(ItemID);
+          consultQuickOrder := True;   
+          tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).EValue;
+          ItemIndex := Items.IndexOf(Trim(tmpSvc));
+(*          tmpSvc := TResponse(Responses.FindResponseByName('ORDERABLE',1)).IValue;
+          for i := 0 to Items.Count-1 do
+            begin
+              if Piece(Items[i],U,6) = tmpSvc then
+                begin
+                  ItemIndex := i;
+                  break;
+                end;
+            end;*)
+          FLastServiceID := ItemID;
+          Enabled := False;
+          Font.Color := clGrayText;
+          btnServiceTree.Enabled := False;
+          pnlServiceTreeButton.Enabled := False;
+          Changing := False;
+          with Responses do if QuickOrder > 0 then
+            begin
+              Changing := True;
+              if not ShowPrerequisites then
+                begin
+                  Close;
+                  Exit;
+                end;
+              SetControl(cboCategory,   'CLASS',      1);
+              if cboCategory.ItemID = 'I' then radInpatient.Checked := True
+              else radOutpatient.Checked := True ;
+              SetControl(cboUrgency,    'URGENCY',     1);
+              SetControl(cboPlace,      'PLACE',     1);
+              SetControl(txtAttn,       'PROVIDER',  1);
+              SetTemplateDialogCanceled(FALSE);
+              SetControl(memReason,     'COMMENT',   1);
+              if WasTemplateDialogCanceled and OrderContainsObjects then
+              begin
+                AbortOrder := TRUE;
+                Close;
+                Exit;
+              end;
+//              if ((cboService.ItemIEN > 0) and (Length(memReason.Text) = 0)) then
+//                QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+              SetupReasonForRequest(ORDER_QUICK);
+              GetProvDxandValidateCode(Responses);
+              Changing := False;
+            end
+          else
+            begin
+              if cboService.ItemIEN > 0 then
+                begin
+                  Changing := True;
+                  if not ShowPrerequisites then
+                    begin
+                      Close;
+                      Exit;
+                    end;
+                  QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+                  SetupReasonForRequest(ORDER_NEW);
+                  Changing := False;
+                end;
+            end;
+        end
+      else
+        begin
+          Changing := True;
+          if not ShowPrerequisites then
+            begin
+              Close;
+              Exit;
+            end;
+          QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+          SetupReasonForRequest(ORDER_NEW);
+          Changing := False;
+        end;
+      end;
+  treService.Visible := False;
+  SetProvDiagPromptingMode;
+  tmpSvc := Piece(cboService.Items[cboService.ItemIndex], U, 6);
+  pnlMessage.TabOrder := cboService.TabOrder + 1;
+  OrderMessage(ConsultMessage(StrToIntDef(tmpSvc, 0)));
+  //OrderMessage(ConsultMessage(cboService.ItemIEN));
+  ControlChange(Self) ;
+end;
+
+procedure TfrmODCslt.FormDestroy(Sender: TObject);
+begin
+  Defaults.Free;
+  SvcList.Free ;
+  QuickList.Free;
+  inherited;
+end;
+
+procedure TfrmODCslt.btnServiceTreeClick(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+  Changing := True;
+  treService.Visible := not treService.Visible;
+  if treService.Visible then
+  begin
+  // for some reason screen reader is reading caption when tree view is not visible
+    treService.Caption := TX_SVC_HRCHY;
+    pnlServiceTreeButton.Caption := TX_CLOSE_SVC_HRCHY;
+    btnServiceTree.Hint := TX_CLOSE_SVC_HRCHY;
+    treService.SetFocus;
+    with treService do for i := 0 to Items.Count-1 do
+    begin
+      if Piece(TORTreeNode(Items[i]).StringData, U, 1) = cboService.ItemID then
+        begin
+          Selected := Items[i];
+          if Piece(TORTreeNode(Items[i]).StringData, U, 5) = '1' then Selected.Expand(True);
+          break;
+        end;
+    end;
+  end
+  else
+  begin
+    treService.Caption := '';
+    pnlServiceTreeButton.Caption := TX_VIEW_SVC_HRCHY;
+    btnServiceTree.Hint := TX_VIEW_SVC_HRCHY;
+    pnlServiceTreeButton.SetFocus;
+  end;
+  Changing := False;
+end;
+
+procedure  TfrmODCslt.ReadServerVariables;
+begin
+  if StrToIntDef(KeyVariable['GMRCNOAT'], 0) > 0 then
+    begin
+      txtAttn.Enabled    := False;
+      txtAttn.Font.Color := clGrayText;
+      lblAttn.Enabled    := False;
+      txtAttn.Color      := clBtnFace;
+    end
+  else
+    begin
+      txtAttn.Enabled    := True;
+      txtAttn.Font.Color := clWindowText;
+      lblAttn.Enabled    := True;
+      txtAttn.Color      := clWindow;
+    end;
+
+  if StrToIntDef(KeyVariable['GMRCNOPD'], 0) > 0 then
+    begin
+      if BILLING_AWARE then
+         btnDiagnosis.Enabled   := False //1.4.18
+      else
+         cmdLexSearch.Enabled   := False;
+      txtProvDiag.Enabled    := False;
+      txtProvDiag.Font.Color := clGrayText;
+      txtProvDiag.ReadOnly   := True;
+      txtProvDiag.Color      := clBtnFace;
+    end
+  else SetProvDiagPromptingMode;
+
+  GMRCREAF := KeyVariable['GMRCREAF'];
+end;
+
+procedure TfrmODCslt.treServiceCollapsing(Sender: TObject; Node: TTreeNode;
+  var AllowCollapse: Boolean);
+begin
+  inherited;
+  Changing := True;
+  treService.Selected := nil;
+  Changing := False;
+  AllowCollapse := True;
+end;
+
+procedure TfrmODCslt.treServiceMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  tmpNode: TORTreeNode;
+  NodeRect: TRect;
+begin
+  inherited;
+  if Button <> mbLeft then exit;
+  tmpNode := TORTreeNode(treService.GetNodeAt(X, Y));
+  if tmpNode = nil then exit;
+  NodeRect := tmpNode.DisplayRect(True);
+  if treService.Selected <> nil then
+    if (X >= NodeRect.Left) then     // user clicked in the text of the item, not on the bitmap
+      begin
+        if tmpNode.StringData <> '' then
+          if (Piece(tmpNode.StringData, U, 5) <> '1') then
+            treService.Visible := False;
+          end;
+end;
+
+procedure TfrmODCslt.cmdLexSearchClick(Sender: TObject);
+var
+  Match: string;
+  i: integer;
+begin
+  inherited;
+
+ if  BILLING_AWARE then BADxUpdated := FALSE;
+
+ LexiconLookup(Match, LX_ICD);
+ if Match = '' then Exit;
+ ProvDx.Code := Piece(Match, U, 1);
+ ProvDx.Text := Piece(Match, U, 2);
+ i := Pos(' (ICD', ProvDx.Text);
+ if i = 0 then i := Length(ProvDx.Text) + 1;
+ if ProvDx.Text[i-1] = '*' then i := i - 2;
+ ProvDx.Text := Copy(ProvDx.Text, 1, i - 1);
+ txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
+
+ ProvDx.CodeInactive := False;
+end;
+
+procedure TfrmODCslt.SetProvDiagPromptingMode;
+const
+  TX_USE_LEXICON = 'You must use the "Lexicon" button to select a provisional diagnosis for this service.';
+  TX_USE_DIAGNOSIS = 'You must use the "Diagnosis" button to select a diagnosis for this service.';
+
+  TX_PROVDX_OPT  = 'Provisional Diagnosis';
+  TX_PROVDX_REQD = 'Provisional Dx (REQUIRED)';
+begin
+  if BILLING_AWARE then
+     btnDiagnosis.Enabled    := False //1.4.18
+  else
+     cmdLexSearch.Enabled   := False;
+  txtProvDiag.Enabled    := False;
+  txtProvDiag.ReadOnly   := True;
+  txtProvDiag.Color      := clBtnFace;
+  txtProvDiag.Font.Color := clBtnText;
+  txtProvDiag.Hint       := '';
+  if cboService.ItemIEN = 0 then Exit;
+  GetProvDxMode(ProvDx, cboService.ItemID + CSLT_PTR);
+  //  Returns:  string  A^B
+  //     A = O (optional), R (required) or S (suppress)
+  //     B = F (free-text) or L (lexicon)
+  with ProvDx do if (Reqd = '') or (PromptMode = '') then Exit;
+  if ProvDx.Reqd = 'R' then
+  begin
+    lblProvDiag.Caption := TX_PROVDX_REQD;
+    if (BILLING_AWARE)  and (ProvDx.PromptMode[1] = '') then btnDiagnosis.Enabled := True;
+  end
+  else
+    lblProvDiag.Caption := TX_PROVDX_OPT;
+  if ProvDx.Reqd = 'S' then
+    begin
+      cmdLexSearch.Enabled   := False;
+      txtProvDiag.Enabled    := False;
+      txtProvDiag.ReadOnly   := True;
+      txtProvDiag.Color      := clBtnFace;
+      txtProvDiag.Font.Color := clBtnText;
+    end
+  else
+    case ProvDx.PromptMode[1] of
+      'F':  begin
+              cmdLexSearch.Enabled   := False;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := False;
+              txtProvDiag.Color      := clWindow;
+              txtProvDiag.Font.Color := clWindowText;
+            end;
+      'L':  begin
+              if BILLING_AWARE then
+              begin
+                 btnDiagnosis.Enabled   := True; //1.4.18
+                 txtProvDiag.Hint       := TX_USE_DIAGNOSIS;
+              end
+              else
+              begin
+                 cmdLexSearch.Enabled   := True;
+                 txtProvDiag.Hint       := TX_USE_LEXICON;
+              end;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := True;
+              txtProvDiag.Color      := clInfoBk;
+              txtProvDiag.Font.Color := clInfoText;
+           end;
+    end;
+end;
+
+
+procedure TfrmODCslt.mnuPopProvDxDeleteClick(Sender: TObject);
+begin
+  inherited;
+  ProvDx.Text := '';
+  ProvDx.Code := '';
+  txtProvDiag.Text := '';
+  ControlChange(Self);
+end;
+
+procedure TfrmODCslt.txtProvDiagChange(Sender: TObject);
+begin
+  inherited;
+  if ProvDx.PromptMode = 'F' then
+  begin
+    ProvDx.Text := txtProvDiag.Text;
+     displayDxCode := ProvDx.Text;
+  end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODCslt.SetupReasonForRequest(OrderAction: integer);
+var
+  EditReason: string;
+
+  procedure EnableReason;
+  begin
+    memReason.Color := clWindow;
+    memReason.Font.Color := clWindowText;
+    memReason.ReadOnly := False;
+    lblReason.Caption := 'Reason for Request';
+  end;
+
+  procedure DisableReason;
+  begin
+    memReason.Color := clInfoBk;
+    memReason.Font.Color := clInfoText;
+    memReason.ReadOnly := True;
+    lblReason.Caption := 'Reason for Request  (not editable)';
+  end;
+
+begin
+  if ((OrderAction = ORDER_QUICK) and (cboService.ItemID <> '') and (Length(memReason.Text) = 0)) then
+    QuickCopy(DefaultReasonForRequest(cboService.ItemID, True), memReason);
+  EditReason := GMRCREAF;
+  if EditReason = '' then EditReason := ReasonForRequestEditable(cboService.ItemID + CSLT_PTR);
+  case EditReason[1] of
+    '0':  EnableReason;
+    '1':  if OrderAction in [ORDER_COPY, ORDER_EDIT] then
+            EnableReason
+          else
+            DisableReason;
+    '2':  DisableReason
+  else
+    EnableReason;
+  end;
+end;
+
+function TfrmODCslt.ShowPrerequisites: boolean;
+var
+  AList: TStringList;
+const
+  TC_PREREQUISITES = 'Service Prerequisites - ';
+begin
+  Result := True;
+  AbortOrder := False;
+  AList := TStringList.Create;
+  try
+    with cboService do
+      if ItemIEN > 0 then
+        begin
+          FastAssign(GetServicePrerequisites(ItemID + CSLT_PTR), Alist);
+          if AList.Count > 0 then
+            begin
+              if not DisplayPrerequisites(AList, TC_PREREQUISITES + DisplayText[ItemIndex]) then
+                begin
+                  memOrder.Clear;
+                  Result := False;
+                  AbortOrder := True;
+               end
+              else Result := True;
+            end;
+        end;
+  finally
+    AList.Free;
+  end;
+end;
+
+procedure TfrmODCslt.cboServiceExit(Sender: TObject);
+begin
+  inherited;
+  if Length(memOrder.Text) = 0 then Exit;
+  if (Length(cboService.ItemID) = 0) or (cboService.ItemID = '0') then Exit;
+  if cboService.ItemID = FLastServiceID then Exit;
+  cboServiceSelect(cboService);
+  // CQ #7490, following line commented out v26.24 (RV)
+  // CQ #9610 and 10074 - uncommented and "if" added v26.54 (RV)
+  if cboService.Enabled then cboService.SetFocus;
+  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TfrmODCslt.popReasonPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popReason) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popReason))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popReasonCut.Enabled      := FEditCtrl.SelLength > 0;
+    popReasonCopy.Enabled     := popReasonCut.Enabled;
+    popReasonPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+  end else
+  begin
+    popReasonCut.Enabled      := False;
+    popReasonCopy.Enabled     := False;
+    popReasonPaste.Enabled    := False;
+  end;
+  popReasonReformat.Enabled := True;
+end;
+
+procedure TfrmODCslt.popReasonCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmODCslt.popReasonCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmODCslt.popReasonPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmODCslt.popReasonReformatClick(Sender: TObject);
+begin
+  inherited;
+  if Screen.ActiveControl <> memReason then Exit;
+  ReformatMemoParagraph(memReason);
+end;
+
+function TfrmODCslt.DefaultReasonForRequest(Service: string;
+  Resolve: Boolean): TStrings;
+var
+  TmpSL: TStringList;
+  DocInfo: string;
+  x: string;
+  HasObjects: boolean;
+begin
+  Resolve := FALSE ;  // override value passed in - resolve on client - PSI-05-093
+  DocInfo := '';
+  TmpSL := TStringList.Create;
+  try
+    Result := GetDefaultReasonForRequest(Service + CSLT_PTR, Resolve);
+    FastAssign(Result, TmpSL);
+    x := TmpSL.Text;
+    ExpandOrderObjects(x, HasObjects);
+    TmpSL.Text := x;
+    Responses.OrderContainsObjects := HasObjects;
+    ExecuteTemplateOrBoilerPlate(TmpSL, cboService.ItemIEN , ltConsult, nil, 'Reason for Request: ' + cboService.DisplayText[cboService.ItemIndex], DocInfo);
+    AbortOrder := WasTemplateDialogCanceled;
+    Responses.OrderContainsObjects := HasObjects or TemplateBPHasObjects;
+    if AbortOrder then
+    begin
+      Result.Text := '';
+      Close;
+      Exit;
+    end
+    else
+      FastAssignWith508Msg(TmpSL, Result);
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+procedure TfrmODCslt.pnlServiceTreeButtonEnter(Sender: TObject);
+begin
+  inherited;
+  (Sender as TPanel).BevelOuter := bvRaised;
+end;
+
+procedure TfrmODCslt.pnlServiceTreeButtonExit(Sender: TObject);
+begin
+  inherited;
+  (Sender as TPanel).BevelOuter := bvNone;
+end;
+
+procedure TfrmODCslt.treServiceKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+  VK_SPACE, VK_RETURN:
+    begin
+      Key := 0;
+      FKeyBoarding := False;
+      treServiceChange(Sender, treService.Selected);
+    end;
+  VK_ESCAPE:
+    begin
+      key := 0;
+      btnServiceTreeClick(Self);
+    end    
+  else
+    FKeyBoarding := True;
+  end;
+end;
+
+procedure TfrmODCslt.treServiceKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  FKeyBoarding := False;
+end;
+
+procedure TfrmODCslt.DoSetFontSize(FontSize: integer);
+begin
+  memReason.DefAttributes.Size := FontSize;
+  treService.Font.Size := FontSize * 7 div 8;
+end;
+
+procedure TfrmODCslt.SetFontSize(FontSize: integer);
+begin
+  inherited SetFontSize(FontSize);
+  DoSetFontSize(FontSize);
+end;
+
+procedure TfrmODCslt.memReasonKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if FNavigatingTab then
+  begin
+    if ssShift in Shift then
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
+    else if ssCtrl	in Shift then
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+    FNavigatingTab := False;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmODCslt.GetProvDxandValidateCode(AResponses: TResponses);
+var
+  tmpDx: TResponse;
+
+begin
+  with AResponses do
+    begin
+      tmpDx := TResponse(FindResponseByName('MISC',1));
+      if tmpDx <> nil then ProvDx.Text := tmpDx.Evalue;
+      tmpDx := TResponse(FindResponseByName('CODE',1));
+      sourceOrderID := Responses.CopyOrder;
+      if (tmpDx <> nil) and (tmpDx.EValue <> '') then
+      begin
+        if IsActiveICDCode(tmpDx.EValue) then
+          ProvDx.Code := tmpDx.Evalue
+        else
+          begin
+            if ProvDx.Reqd = 'R' then
+              InfoBox(TX_INACTIVE_CODE1 + TX_INACTIVE_CODE_REQD, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK)
+            else
+              InfoBox(TX_INACTIVE_CODE1 + TX_INACTIVE_CODE_OPTIONAL, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+            ProvDx.Code := '';
+            ProvDx.Text := '';
+          end;
+      end;
+      txtProvDiag.Text := ProvDx.Text;
+      if ProvDx.Code <> '' then
+         txtProvDiag.Text :=  (txtProvDiag.Text + ' (' + ProvDx.Code + ')' )
+      else
+      begin
+         if BILLING_AWARE  then
+           if (sourceOrderID <> '') and (ProvDx.Code <> '') then  // if sourceid exists then user is copying an order.
+             SetUpCopyConsultDiagnoses(sourceOrderID);
+
+      end;
+
+   end;
+end;
+
+procedure TfrmODCslt.memReasonKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  //The navigating tab controls were inadvertantently adding tab characters
+  //This should fix it
+  FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
+  if FNavigatingTab then
+    Key := 0;
+end;
+
+procedure TfrmODCslt.memReasonKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  if FNavigatingTab then
+    Key := #0;  //Disable shift-tab processing
+end;
+
+procedure TfrmODCslt.cboServiceKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  //This fixes clearquest: HDS00001418 Makes it so OnClick is not called
+  //Except when Enter or Space is pressed. VK_LBUTTON activates OnClick in TORComboBoxes
+  FcboServiceKeyDownStopClick := false;
+  if (Key <> VK_RETURN) {and (Key <> VK_SPACE)} and (Key <> VK_LBUTTON) then  //comment on this line is fix for CQ6789
+    FcboServiceKeyDownStopClick := True
+  else
+    Key := VK_LBUTTON;
+end;
+
+procedure TfrmODCslt.cboServiceKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  FcboServiceKeyDownStopClick := false;
+end;
+
+
+procedure TfrmODCslt.btnDiagnosisClick(Sender: TObject);
+var
+  leftParan, rightParan: string;
+  tmpOrderIDList: TStringList;
+begin
+  inherited;
+  tmpOrderIDList := TStringList.Create;
+  tmpOrderIDList.Clear;
+  leftParan := '(';
+  rightParan := ')';
+  UBAGlobals.BAtmpOrderList.Clear;
+  UBAGlobals.BAtmpOrderList.Add(Responses.OrderText);
+  quickCode := '';
+  if consultQuickOrder then
+  begin
+     quickCode := Piece(txtProvDiag.text,'(',2);
+     quickCode := Piece(quickCode,')',1);
+     if UBACore.IsICD9CodeActive(quickCode,'ICD',0) then
+     begin
+       uBAGlobals.BAConsultDxList.Clear;
+       uBAGlobals.BAConsultDxList.Add(UBAConst.PRIMARY_DX + U + Piece(txtProvDiag.text,'(',1) + ':' +  quickCode);
+     end;
+
+  end;
+  frmBALocalDiagnoses.Enter(UBAConst.F_CONSULTS, nil);
+  if displayDxCode = '' then txtProvDiag.Text := ''
+  else
+  begin
+     if displayDxCode <> 'DXCANCEL' then
+     begin
+        ProvDx.Code := Piece(displayDxCode,':', 2);
+        ProvDx.Text := Piece(displayDxCode,':', 1);
+        txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
+     end;
+  end;
+
+  ProvDx.CodeInactive := False;
+end;
+
+procedure TfrmODCslt.cmdQuitClick(Sender: TObject);
+begin
+  inherited;
+  if BILLING_AWARE then uBAGlobals.BAConsultDxList.Clear;
+end;
+
+procedure  TfrmODCslt.SaveConsultDxForNurse(pDiagnosis: string);
+var
+  s,tmpTFactors: string;
+  tmpList: TStringList;
+begin
+   tmpList := TStringList.Create;
+   tmpList.Clear;
+   s := '';
+   tmpList.Add(uBAGlobals.BAOrderID);
+   s := GetPatientTFactors(tmpList);
+   tmpTFactors := ConvertPIMTreatmentFactors(s);
+   BANurseConsultOrders.Add(uBAGlobals.BAOrderID + '1' + tmpTFactors + U + ProvDX.Code);
+end;
+
+procedure TfrmODCslt.SetUpCopyConsultDiagnoses(pOrderID:string);
+var
+  sourceOrderID, primaryText,primaryCode: string;
+  sourceOrderList: TStringList;
+  thisOrderList: TStringList;
+begin
+//logic handles setting up diagnoses when copying an order.
+   sourceOrderList := TStringList.Create;
+   sourceOrderList.Clear;
+   thisOrderList := TStringList.Create;
+   thisOrderList.Clear;
+   if IsOrderBillable(sourceOrderID) then
+   begin
+      thisOrderList.Add(sourceOrderID);
+      sourceOrderList := rpcRetrieveSelectedOrderInfo(thisOrderList);
+      primaryText := Piece(sourceOrderList.Strings[0],U,4);
+      primaryCode := Piece(sourceOrderList.Strings[0],U,3);
+      txtProvDiag.Text := primaryText + ' (' + primaryCode + ')';
+      ProvDx.CodeInactive := False;
+      // need to handle the rest of the dx's
+      uBAGlobals.BAConsultDxList.Clear;
+      uBAGlobals.BAConsultDxList.Add(UBAConst.PRIMARY_DX + U + Piece(txtProvDiag.text,'(',1) + ':' +  primaryCode);
+      if (Piece(sourceOrderList.Strings[0],U,5) <> '') then // dx2
+         uBAGlobals.BAConsultDxList.Add(UBAConst.SECONDARY_DX + U + Piece(sourceOrderList.Strings[0],U,6) + ':' +  Piece(sourceOrderList.Strings[0],U,5));
+      if  (Piece(sourceOrderList.Strings[0],U,7) <> '') then // dx3
+         uBAGlobals.BAConsultDxList.Add(UBAConst.SECONDARY_DX + U + Piece(sourceOrderList.Strings[0],U,8) + ':' +  Piece(sourceOrderList.Strings[0],U,7));
+      if (Piece(sourceOrderList.Strings[0],U,9) <> '') then // dx4
+         uBAGlobals.BAConsultDxList.Add(UBAConst.SECONDARY_DX + U + Piece(sourceOrderList.Strings[0],U,10) + ':' +  Piece(sourceOrderList.Strings[0],U,9));
+   end;
+end;
+
+procedure TfrmODCslt.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  frmFrame.pnlVisit.Enabled := true;
+end;
+
+procedure TfrmODCslt.FormResize(Sender: TObject);
+begin
+  inherited;
+  AdjustMemReasonSize();
+end;
+
+procedure TfrmODCslt.AdjustMemReasonSize;
+const
+  PIXEL_SPACE = 3;
+begin
+  pnlReason.Top := cboService.Top + cboService.Height + PIXEL_SPACE;
+  pnlReason.Height := memOrder.Top - pnlReason.Top - PIXEL_SPACE;
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODProc.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODProc.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODProc.dfm	(revision 1676)
@@ -0,0 +1,475 @@
+inherited frmODProc: TfrmODProc
+  Tag = 112
+  Left = 208
+  Top = 188
+  Width = 543
+  Height = 393
+  HorzScrollBar.Range = 523
+  VertScrollBar.Range = 295
+  Caption = 'Order a Procedure'
+  Constraints.MinHeight = 393
+  Constraints.MinWidth = 543
+  ExplicitLeft = 208
+  ExplicitTop = 188
+  ExplicitWidth = 543
+  ExplicitHeight = 393
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblProc: TLabel [0]
+    Left = 4
+    Top = 4
+    Width = 49
+    Height = 13
+    Caption = 'Procedure'
+  end
+  object lblService: TOROffsetLabel [1]
+    Left = 4
+    Top = 42
+    Width = 158
+    Height = 15
+    Caption = 'Service to perform this procedure'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblReason: TLabel [2]
+    Left = 4
+    Top = 103
+    Width = 95
+    Height = 13
+    Caption = 'Reason for Request'
+  end
+  object lblUrgency: TStaticText [3]
+    Left = 249
+    Top = 4
+    Width = 44
+    Height = 17
+    Anchors = [akTop, akRight]
+    Caption = 'Urgency'
+    TabOrder = 15
+  end
+  object lblPlace: TStaticText [4]
+    Left = 396
+    Top = 43
+    Width = 104
+    Height = 17
+    Anchors = [akTop, akRight]
+    Caption = 'Place of Consultation'
+    TabOrder = 16
+  end
+  object lblAttn: TStaticText [5]
+    Left = 396
+    Top = 4
+    Width = 46
+    Height = 17
+    Anchors = [akTop, akRight]
+    Caption = 'Attention'
+    TabOrder = 17
+  end
+  object lblProvDiag: TStaticText [6]
+    Left = 249
+    Top = 81
+    Width = 104
+    Height = 17
+    Anchors = [akTop, akRight]
+    Caption = 'Provisional Diagnosis'
+    TabOrder = 18
+  end
+  object pnlReason: TPanel [7]
+    Left = 0
+    Top = 120
+    Width = 528
+    Height = 192
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 9
+    object memReason: TCaptionRichEdit
+      Left = 0
+      Top = 0
+      Width = 528
+      Height = 192
+      Align = alClient
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = []
+      Constraints.MinHeight = 40
+      ParentFont = False
+      PopupMenu = popReason
+      ScrollBars = ssBoth
+      TabOrder = 0
+      WantTabs = True
+      OnChange = ControlChange
+      OnExit = memReasonExit
+      OnKeyDown = memReasonKeyDown
+      OnKeyPress = memReasonKeyPress
+      OnKeyUp = memReasonKeyUp
+      Caption = 'Reason for Request'
+    end
+  end
+  inherited memOrder: TCaptionMemo
+    Left = 0
+    Top = 321
+    Width = 380
+    Height = 41
+    Anchors = [akLeft, akRight]
+    Lines.Strings = (
+      'The order text...'
+      
+        '----------------------------------------------------------------' +
+        '--------------'
+      'An order message may be displayed here.')
+    TabOrder = 1
+    ExplicitLeft = 0
+    ExplicitTop = 321
+    ExplicitWidth = 380
+    ExplicitHeight = 41
+  end
+  object cboUrgency: TORComboBox [9]
+    Left = 249
+    Top = 17
+    Width = 133
+    Height = 21
+    Anchors = [akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Urgency'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 2
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboPlace: TORComboBox [10]
+    Left = 396
+    Top = 56
+    Width = 133
+    Height = 21
+    Anchors = [akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Place of Consultation'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 6
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object txtAttn: TORComboBox [11]
+    Left = 396
+    Top = 17
+    Width = 133
+    Height = 21
+    Anchors = [akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Attention'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnChange = ControlChange
+    OnNeedData = txtAttnNeedData
+    CharsNeedMatch = 1
+  end
+  object cboProc: TORComboBox [12]
+    Left = 4
+    Top = 17
+    Width = 227
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Procedure'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnChange = cboProcSelect
+    OnNeedData = cboProcNeedData
+    CharsNeedMatch = 1
+  end
+  object cboCategory: TORComboBox [13]
+    Left = 516
+    Top = 10
+    Width = 3
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 13
+    Visible = False
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboService: TORComboBox [14]
+    Left = 4
+    Top = 58
+    Width = 227
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Service to perform this procedure'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = cboServiceChange
+    CharsNeedMatch = 1
+  end
+  object cmdLexSearch: TButton [15]
+    Left = 486
+    Top = 93
+    Width = 49
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = 'Lexicon'
+    TabOrder = 8
+    OnClick = cmdLexSearchClick
+  end
+  object gbInptOpt: TGroupBox [16]
+    Left = 249
+    Top = 36
+    Width = 140
+    Height = 45
+    Anchors = [akTop, akRight]
+    Caption = 'Patient will be seen as an:'
+    TabOrder = 5
+    object radInpatient: TRadioButton
+      Left = 3
+      Top = 20
+      Width = 61
+      Height = 17
+      Caption = '&Inpatient'
+      TabOrder = 0
+      OnClick = radInpatientClick
+    end
+    object radOutpatient: TRadioButton
+      Left = 67
+      Top = 20
+      Width = 71
+      Height = 17
+      Caption = '&Outpatient'
+      TabOrder = 1
+      OnClick = radOutpatientClick
+    end
+  end
+  object txtProvDiag: TCaptionEdit [17]
+    Left = 249
+    Top = 93
+    Width = 234
+    Height = 21
+    Anchors = [akTop, akRight]
+    MaxLength = 180
+    ParentShowHint = False
+    PopupMenu = mnuPopProvDx
+    ShowHint = True
+    TabOrder = 7
+    OnChange = txtProvDiagChange
+    Caption = 'Provisional Diagnosis'
+  end
+  inherited cmdAccept: TButton
+    Left = 387
+    Top = 339
+    Anchors = [akRight, akBottom]
+    TabOrder = 10
+    ExplicitLeft = 387
+    ExplicitTop = 339
+  end
+  inherited cmdQuit: TButton
+    Left = 469
+    Top = 339
+    Width = 64
+    Anchors = [akRight, akBottom]
+    TabOrder = 11
+    ExplicitLeft = 469
+    ExplicitTop = 339
+    ExplicitWidth = 64
+  end
+  inherited pnlMessage: TPanel
+    Left = 50
+    Top = 320
+    Width = 316
+    Anchors = [akLeft, akRight, akBottom]
+    TabOrder = 12
+    ExplicitLeft = 50
+    ExplicitTop = 320
+    ExplicitWidth = 316
+    inherited memMessage: TRichEdit
+      Width = 254
+      ExplicitWidth = 254
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblUrgency'
+        'Status = stsDefault')
+      (
+        'Component = lblPlace'
+        'Status = stsDefault')
+      (
+        'Component = lblAttn'
+        'Status = stsDefault')
+      (
+        'Component = lblProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = pnlReason'
+        'Status = stsDefault')
+      (
+        'Component = memReason'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = cboPlace'
+        'Status = stsDefault')
+      (
+        'Component = txtAttn'
+        'Status = stsDefault')
+      (
+        'Component = cboProc'
+        'Status = stsDefault')
+      (
+        'Component = cboCategory'
+        'Status = stsDefault')
+      (
+        'Component = cboService'
+        'Status = stsDefault')
+      (
+        'Component = cmdLexSearch'
+        'Status = stsDefault')
+      (
+        'Component = gbInptOpt'
+        'Status = stsDefault')
+      (
+        'Component = radInpatient'
+        'Status = stsDefault')
+      (
+        'Component = radOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = txtProvDiag'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODProc'
+        'Status = stsDefault'))
+  end
+  object mnuPopProvDx: TPopupMenu
+    Left = 353
+    Top = 77
+    object mnuPopProvDxDelete: TMenuItem
+      Caption = 'Delete diagnosis'
+      OnClick = mnuPopProvDxDeleteClick
+    end
+  end
+  object popReason: TPopupMenu
+    OnPopup = popReasonPopup
+    Left = 411
+    Top = 169
+    object popReasonCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popReasonCutClick
+    end
+    object popReasonCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popReasonCopyClick
+    end
+    object popReasonPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popReasonPasteClick
+    end
+    object popReasonPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popReasonPasteClick
+    end
+    object popReasonReformat: TMenuItem
+      Caption = 'Reformat Paragraph'
+      ShortCut = 16466
+      OnClick = popReasonReformatClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODProc.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODProc.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fODProc.pas	(revision 1676)
@@ -0,0 +1,854 @@
+unit fODProc;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ORCtrls, ExtCtrls, ComCtrls, ORfn, uConst, Buttons,
+  Menus, VA508AccessibilityManager;
+
+type
+  TfrmODProc = class(TfrmODBase)
+    cboUrgency: TORComboBox;
+    cboPlace: TORComboBox;
+    txtAttn: TORComboBox;
+    lblProc: TLabel;
+    cboProc: TORComboBox;
+    lblUrgency: TStaticText;
+    lblPlace: TStaticText;
+    lblAttn: TStaticText;
+    lblProvDiag: TStaticText;
+    cboCategory: TORComboBox;
+    cboService: TORComboBox;
+    lblService: TOROffsetLabel;
+    mnuPopProvDx: TPopupMenu;
+    mnuPopProvDxDelete: TMenuItem;
+    cmdLexSearch: TButton;
+    popReason: TPopupMenu;
+    popReasonCut: TMenuItem;
+    popReasonCopy: TMenuItem;
+    popReasonPaste: TMenuItem;
+    popReasonPaste2: TMenuItem;
+    popReasonReformat: TMenuItem;
+    pnlReason: TPanel;
+    memReason: TCaptionRichEdit;
+    gbInptOpt: TGroupBox;
+    radInpatient: TRadioButton;
+    radOutpatient: TRadioButton;
+    txtProvDiag: TCaptionEdit;
+    lblReason: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure txtAttnNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboProcNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure radInpatientClick(Sender: TObject);
+    procedure radOutpatientClick(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboProcSelect(Sender: TObject);
+    procedure memReasonExit(Sender: TObject);
+    procedure cmdLexSearchClick(Sender: TObject);
+    procedure cboServiceChange(Sender: TObject);
+    procedure mnuPopProvDxDeleteClick(Sender: TObject);
+    procedure txtProvDiagChange(Sender: TObject);
+    procedure popReasonCutClick(Sender: TObject);
+    procedure popReasonCopyClick(Sender: TObject);
+    procedure popReasonPasteClick(Sender: TObject);
+    procedure popReasonPopup(Sender: TObject);
+    procedure popReasonReformatClick(Sender: TObject);
+    procedure memReasonKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memReasonKeyPress(Sender: TObject; var Key: Char);
+    procedure FormResize(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    FLastProcID: string;
+    FEditCtrl: TCustomEdit;
+    FNavigatingTab: boolean;
+    procedure ReadServerVariables;
+    procedure SetProvDiagPromptingMode;
+    procedure SetupReasonForRequest(OrderAction: integer);
+    procedure GetProvDxandValidateCode(AResponses: TResponses);
+    function ShowPrerequisites: boolean;
+    procedure DoSetFontSize( FontSize: integer);
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+    function  DefaultReasonForRequest(Service: string; Resolve: Boolean): TStrings;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure SetFontSize( FontSize: integer); override;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses
+    rODBase, rConsults, uCore, uConsults, rCore, fConsults, fPCELex, rPCE, ORClasses,
+    clipbrd, fPreReq, uTemplates, fFrame, uODBase,
+  uVA508CPRSCompatibility;
+
+var
+  ProvDx:  TProvisionalDiagnosis;
+  GMRCREAF: string;
+
+const
+  TX_NO_PROC         = 'A procedure must be specified.'    ;
+  TX_NO_REASON       = 'A reason for this procedure must be entered.'  ;
+  TX_NO_SERVICE      = 'A service must be selected to perform this procedure.';
+  TX_NO_URGENCY      = 'An urgency must be specified.';
+  TX_NO_PLACE        = 'A place of consultation must be specified';
+  TX_NO_DIAG         = 'A provisional diagnosis must be entered for consults to this service.';
+  TX_SELECT_DIAG     = 'You must use the "Lexicon" button to select a diagnosis for consults to this service.';
+  TC_INACTIVE_CODE   = 'Inactive ICD Code';
+  TX_INACTIVE_CODE1  = 'The provisional diagnosis code is not active as of today''s date.' + #13#10;
+  TX_INACTIVE_CODE_REQD     = 'Another code must be selected before the order can be saved.';
+  TX_INACTIVE_CODE_OPTIONAL = 'If another code is not selected, no code will be saved.';
+
+procedure TfrmODProc.FormCreate(Sender: TObject);
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  AutoSizeDisabled := True;
+  inherited;
+  DoSetFontSize(MainFontSize);
+  AllowQuickOrder := True;
+  FillChar(ProvDx, SizeOf(ProvDx), 0);
+  FillerID := 'GMRC';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'GMRCOR REQUEST';   // loads formatting info
+  StatusText('Loading Default Values');
+  CtrlInits.LoadDefaults(ODForProcedures);  // ODForProcedures returns TStrings with defaults
+  StatusText('Initializing Long List');
+  ReadServerVariables;
+  cboProc.InitLongList('') ;
+  txtAttn.InitLongList('') ;
+  PreserveControl(txtAttn);
+  PreserveControl(cboProc);
+  InitDialog;
+end;
+
+procedure TfrmODProc.InitDialog;
+begin
+  inherited;
+  Changing := True;
+  FLastProcID := '';
+  with CtrlInits do
+  begin
+   SetControl(cboProc, 'ShortList');
+   cboProc.InsertSeparator;
+   if OrderForInpatient then
+    begin
+      radInpatient.Checked := True;                   //INPATIENT PROCEDURE
+      cboCategory.Items.Clear;
+      cboCategory.Items.Add('I^Inpatient');
+      cboCategory.SelectById('I');
+      SetControl(cboPlace, 'Inpt Place');
+      SetControl(cboUrgency, 'Inpt Proc Urgencies');      //S.GMRCR
+    end
+   else
+    begin
+      radOutpatient.Checked := True;                 //OUTPATIENT PROCEDURE
+      cboCategory.Items.Clear;
+      cboCategory.Items.Add('O^Outpatient');
+      cboCategory.SelectById('O');
+      SetControl(cboPlace, 'Outpt Place');
+      SetControl(cboUrgency, 'Outpt Urgencies');     //S.GMRCO
+    end ;
+  end ;
+  txtAttn.ItemIndex := -1;
+  memOrder.Clear ;
+  memReason.Clear;
+  cboProc.Enabled := True;
+  cboProc.Font.Color := clWindowText;
+  //cboService.Enabled := True;
+  //cboService.Font.Color := clWindowText;
+  ActiveControl := cboProc;
+  SetProvDiagPromptingMode;
+  if not ShowPrerequisites then
+    begin
+      Close;
+      Exit;
+    end;
+  StatusText('');
+  Changing := False;
+end;
+
+procedure TfrmODProc.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  tmpResp: TResponse;
+begin
+  inherited;
+  ReadServerVariables;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do        {*KCM*}
+  begin
+    SetControl(cboProc,       'ORDERABLE', 1);
+    if cboProc.ItemIndex < 0 then exit;
+    FastAssign(GetProcedureServices(cboProc.ItemIEN), cboService.Items);
+    Changing := True;
+    tmpResp := TResponse(FindResponseByName('CLASS',1));
+    cboCategory.SelectByID(tmpResp.IValue);
+    if tmpResp.IValue = 'I' then
+      radInpatient.Checked := True
+    else
+      radOutpatient.Checked := True ;
+    SetControl(cboUrgency,    'URGENCY',     1);
+    SetControl(cboPlace,      'PLACE',     1);
+    SetControl(txtAttn,       'PROVIDER',  1);
+    cboProc.Enabled := False;
+    cboProc.Font.Color := clGrayText;
+   //SetControl(cboService,    'SERVICE',   1);     // to fix OR*3.0*95 bug in v17.6  (RV)
+    tmpResp := TResponse(FindResponseByName('SERVICE',1));
+    if tmpResp <> nil then
+      cboService.SelectByID(Piece(tmpResp.IValue, U, 1))
+    else if (cboService.Items.Count = 1) then
+      cboService.ItemIndex := 0
+    else if (cboService.Items.Count > 1) then
+      cboService.ItemIndex := -1 ;
+    if cboService.ItemIndex > -1 then
+      begin
+        cboService.Enabled := False;
+        cboService.Font.Color := clGrayText;
+      end
+    else
+      begin
+        cboService.Enabled := True;
+        cboService.Font.Color := clWindowText;
+      end;
+    if (OrderAction in [ORDER_COPY, ORDER_QUICK]) and (not ShowPrerequisites) then
+      begin
+        Close;
+        Exit;
+      end;
+    SetProvDiagPromptingMode;
+    GetProvDxandValidateCode(Responses);
+    SetTemplateDialogCanceled(FALSE);
+    SetControl(memReason,     'COMMENT',   1);
+    if WasTemplateDialogCanceled then
+    begin
+      AbortOrder := True;
+      Close;
+      Exit;
+    end;
+    SetTemplateDialogCanceled(FALSE);
+    SetupReasonForRequest(OrderAction);
+    if WasTemplateDialogCanceled then
+    begin
+      AbortOrder := True;
+      Close;
+      Exit;
+    end;
+    Changing := False;
+    OrderMessage(ConsultMessage(cboProc.ItemIEN));
+    ControlChange(Self);
+  end;
+end;
+
+procedure TfrmODProc.Validate(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  if cboProc.ItemIEN = 0                  then SetError(TX_NO_PROC);
+  if cboUrgency.ItemIEN = 0 then SetError(TX_NO_URGENCY);
+  if cboPlace.ItemID = '' then SetError(TX_NO_PLACE);
+  if (not ContainsVisibleChar(memReason.Text))
+                                          then SetError(TX_NO_REASON);
+  if cboService.ItemIEN = 0               then SetError(TX_NO_SERVICE);
+  if (ProvDx.Reqd = 'R') and (Length(txtProvDiag.Text) = 0) then
+    begin
+      if ProvDx.PromptMode = 'F' then
+        SetError(TX_NO_DIAG)
+      else
+        SetError(TX_SELECT_DIAG);
+    end;
+end;
+
+procedure TfrmODProc.txtAttnNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  txtAttn.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmODProc.cboProcNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboProc.ForDataUse(SubSetOfProcedures(StartFrom, Direction));
+end;
+
+procedure TfrmODProc.radInpatientClick(Sender: TObject);
+begin
+  inherited;
+  with CtrlInits do
+  begin
+    SetControl(cboPlace, 'Inpt Place');
+    SetControl(cboUrgency, 'Inpt Proc Urgencies');
+    cboCategory.Items.Clear;
+    cboCategory.Items.Add('I^Inpatient') ;
+    cboCategory.SelectById('I');
+  end ;
+  ControlChange(Self);
+end;
+
+procedure TfrmODProc.radOutpatientClick(Sender: TObject);
+begin
+  inherited;
+  with CtrlInits do
+  begin
+    SetControl(cboPlace, 'Outpt Place');
+    SetControl(cboUrgency, 'Outpt Urgencies');
+    cboCategory.Items.Clear;
+    cboCategory.Items.Add('O^Outpatient');
+    cboCategory.SelectById('O');
+  end ;
+  ControlChange(Self);
+end;
+
+procedure TfrmODProc.ControlChange(Sender: TObject);
+var
+  x: string;
+  i: integer;
+begin
+  inherited;
+  if Changing or (cboProc.ItemIEN = 0) then Exit;
+  with cboProc do
+    begin
+      if ItemIEN > 0 then
+        begin
+          i := Pos('<', Text);
+          if i > 0 then
+            begin
+              x := Piece(Copy(Text, i + 1, 99), '>', 1);
+              x := UpperCase(Copy(x, 1, 1)) + Copy(x, 2, 99);
+            end
+          else
+            x := Text;
+          Responses.Update('ORDERABLE', 1, ItemID, x);
+        end
+      else Responses.Update('ORDERABLE', 1, '', '');
+    end;
+(*  with cboProc       do if ItemIEN      > 0 then Responses.Update('ORDERABLE', 1, ItemID, Text)
+                                            else Responses.Update('ORDERABLE', 1, '', '');*)
+  with cboService    do if ItemIEN      > 0 then Responses.Update('SERVICE', 1, ItemID, Text)
+                                            else Responses.Update('SERVICE', 1, '', '');
+  with memReason     do if GetTextLen   > 0 then Responses.Update('COMMENT',   1, TX_WPTYPE, Text);
+  with cboCategory   do if ItemID     <> '' then Responses.Update('CLASS',     1, ItemID, Text);
+  with cboUrgency    do if ItemIEN      > 0 then Responses.Update('URGENCY',   1, ItemID, Text);
+  with cboPlace      do if ItemID     <> '' then Responses.Update('PLACE',     1, ItemID, Text);
+  with txtAttn       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
+  if Length(ProvDx.Text)                > 0 then Responses.Update('MISC',      1, ProvDx.Text,   ProvDx.Text)
+   else Responses.Update('MISC',      1, '',   '');
+  if Length(ProvDx.Code)                > 0 then Responses.Update('CODE',      1, ProvDx.Code,   ProvDx.Code)
+   else Responses.Update('CODE',      1, '',   '');
+
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODProc.cboProcSelect(Sender: TObject);
+begin
+  inherited;
+  with cboProc do
+   begin
+    if ItemIndex = -1 then Exit;
+    if ItemID <> FLastProcID then FLastProcID := ItemID else Exit;
+    Changing := True;
+    if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+    Changing := False;
+    if CharAt(ItemID, 1) = 'Q' then
+     begin
+      Responses.QuickOrder := ExtractInteger(ItemID);
+      Responses.SetControl(cboProc, 'ORDERABLE', 1);
+      FLastProcID := ItemID;
+     end; 
+    with cboService do
+      begin
+        Clear;
+        FastAssign(GetProcedureServices(cboProc.ItemIEN), cboService.Items);
+        if Items.Count > 1 then
+          ItemIndex := -1
+        else if Items.Count = 1 then
+          begin
+            ItemIndex := 0 ;
+            Responses.Update('SERVICE', 1, ItemID, Text);
+          end
+        else
+          begin
+            if Sender = Self then    // Sender=Self when called from SetupDialog
+              InfoBox('There are no services defined for this procedure.',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            cboProc.ItemIndex := -1;
+            InitDialog;
+            Exit ;
+          end;
+      end;
+   end;
+  with Responses do if QuickOrder > 0 then
+    begin
+      SetControl(cboProc,       'ORDERABLE', 1);
+      Changing := True;
+      with cboService do
+        begin
+          FastAssign(GetProcedureServices(cboProc.ItemIEN), cboService.Items);
+          if Items.Count > 1 then
+            ItemIndex := -1
+          else if Items.Count = 1 then
+            ItemIndex := 0 ;
+        end;
+      if not ShowPrerequisites then
+        begin
+          Close;
+          Exit;
+        end;
+      SetControl(cboCategory,   'CLASS',      1);
+      if cboCategory.ItemID = 'I' then radInpatient.Checked := True
+      else radOutpatient.Checked := True ;
+      SetControl(cboUrgency,    'URGENCY',     1);
+      SetControl(cboPlace,      'PLACE',     1);
+      SetControl(txtAttn,       'PROVIDER',  1);
+      SetTemplateDialogCanceled(FALSE);
+      SetControl(memReason,     'COMMENT',   1);
+      if WasTemplateDialogCanceled and OrderContainsObjects then
+      begin
+        AbortOrder := TRUE;
+        Close;
+        Exit;
+      end;
+      SetupReasonForRequest(ORDER_QUICK);
+      GetProvDxandValidateCode(Responses);
+      SetControl(cboService,    'SERVICE',   1);
+      cboProc.Enabled := False;
+      cboProc.Font.Color := clGrayText;
+      if cboService.ItemIndex > -1 then
+        begin
+          cboService.Enabled := False;
+          cboService.Font.Color := clGrayText;
+        end
+      else
+        begin
+          cboService.Enabled := True;
+          cboService.Font.Color := clWindowText;
+        end;
+      Changing := False;
+    end
+  else
+    begin
+      if cboProc.ItemIEN > 0 then
+        begin
+          if cboService.ItemIndex > -1 then
+            begin
+              cboService.Enabled := False;
+              cboService.Font.Color := clGrayText;
+            end
+          else
+            begin
+              cboService.Enabled := True;
+              cboService.Font.Color := clWindowText;
+            end;
+          if not ShowPrerequisites then
+            begin
+              Close;
+              Exit;
+            end;
+          FastAssign(DefaultReasonForRequest(Piece(cboProc.Items[cboProc.ItemIndex], U, 4), True), memReason.Lines);
+          SetupReasonForRequest(ORDER_NEW);
+        end;
+    end;
+  SetProvDiagPromptingMode;
+  OrderMessage(ConsultMessage(cboProc.ItemIEN));
+  ControlChange(Self) ;
+end;
+
+procedure TfrmODProc.memReasonExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    AStringList.Text := memReason.Text;
+    LimitStringLength(AStringList, 74);
+    memReason.Text := AStringList.Text;
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure  TfrmODProc.ReadServerVariables;
+begin
+  if StrToIntDef(KeyVariable['GMRCNOAT'], 0) > 0 then
+    begin
+      txtAttn.Enabled    := False;
+      txtAttn.Font.Color := clGrayText;
+      lblAttn.Enabled    := False;
+      txtAttn.Color      := clBtnFace;
+    end
+  else
+    begin
+      txtAttn.Enabled    := True;
+      txtAttn.Font.Color := clWindowText;
+      lblAttn.Enabled    := True;
+      txtAttn.Color      := clWindow;
+    end;
+
+  if StrToIntDef(KeyVariable['GMRCNOPD'], 0) > 0 then
+    begin
+      cmdLexSearch.Enabled   := False;
+      txtProvDiag.Enabled    := False;
+      txtProvDiag.Font.Color := clGrayText;
+      lblProvDiag.Enabled    := False;
+      txtProvDiag.ReadOnly   := True;
+      txtProvDiag.Color      := clBtnFace;
+    end
+  else SetProvDiagPromptingMode;
+
+  GMRCREAF := KeyVariable['GMRCREAF'];
+end;
+
+procedure TfrmODProc.cmdLexSearchClick(Sender: TObject);
+var
+  Match: string;
+  i: integer;
+begin
+  inherited;
+  LexiconLookup(Match, LX_ICD);
+  if Match = '' then Exit;
+  ProvDx.Code := Piece(Match, U, 1);
+  ProvDx.Text := Piece(Match, U, 2);
+  i := Pos(' (ICD', ProvDx.Text);
+  if i = 0 then i := Length(ProvDx.Text) + 1;
+  if ProvDx.Text[i-1] = '*' then i := i - 2;
+  ProvDx.Text := Copy(ProvDx.Text, 1, i - 1);
+  txtProvDiag.Text := ProvDx.Text + ' (' + ProvDx.Code + ')';
+  ProvDx.CodeInactive := False;
+end;
+
+procedure TfrmODProc.SetProvDiagPromptingMode;
+const
+  TX_USE_LEXICON = 'You must use the "Lexicon" button to select a provisional diagnosis for this service.';
+  TX_PROVDX_OPT  = 'Provisional Diagnosis';
+  TX_PROVDX_REQD = 'Provisional Dx (REQUIRED)';
+begin
+  cmdLexSearch.Enabled   := False;
+  txtProvDiag.Enabled    := False;
+  txtProvDiag.ReadOnly   := True;
+  txtProvDiag.Color      := clBtnFace;
+  txtProvDiag.Font.Color := clBtnText;
+  lblProvDiag.Enabled    := False;
+  txtProvDiag.Hint       := '';
+  if cboProc.ItemIEN = 0 then Exit;
+  //GetProvDxMode(ProvDx, cboService.ItemID);
+  GetProvDxMode(ProvDx, Piece(cboProc.Items[cboProc.ItemIndex], U, 4));
+  //  Returns:  string  A^B
+  //     A = O (optional), R (required) or S (suppress)
+  //     B = F (free-text) or L (lexicon)
+  with ProvDx do if (Reqd = '') or (PromptMode = '') then Exit;
+  if ProvDx.Reqd = 'R' then
+    lblProvDiag.Caption := TX_PROVDX_REQD
+  else
+    lblProvDiag.Caption := TX_PROVDX_OPT;
+  if ProvDx.Reqd = 'S' then
+    begin
+      cmdLexSearch.Enabled   := False;
+      txtProvDiag.Enabled    := False;
+      txtProvDiag.ReadOnly   := True;
+      txtProvDiag.Color      := clBtnFace;
+      txtProvDiag.Font.Color := clBtnText;
+      lblProvDiag.Enabled    := False;
+    end
+  else
+    case ProvDx.PromptMode[1] of
+      'F':  begin
+              cmdLexSearch.Enabled   := False;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := False;
+              txtProvDiag.Color      := clWindow;
+              txtProvDiag.Font.Color := clWindowText;
+              lblProvDiag.Enabled    := True;
+            end;
+      'L':  begin
+              cmdLexSearch.Enabled   := True;
+              txtProvDiag.Enabled    := True;
+              txtProvDiag.ReadOnly   := True;
+              txtProvDiag.Color      := clInfoBk;
+              txtProvDiag.Font.Color := clInfoText;
+              lblProvDiag.Enabled    := True;
+              txtProvDiag.Hint       := TX_USE_LEXICON;
+            end;
+    end;
+end;
+
+procedure TfrmODProc.cboServiceChange(Sender: TObject);
+begin
+  inherited;
+  //SetProvDiagPromptingMode;
+  ControlChange(Self);
+end;
+
+procedure TfrmODProc.mnuPopProvDxDeleteClick(Sender: TObject);
+begin
+  inherited;
+  ProvDx.Text := '';
+  ProvDx.Code := '';
+  txtProvDiag.Text := '';
+  ControlChange(Self);
+end;
+
+procedure TfrmODProc.txtProvDiagChange(Sender: TObject);
+begin
+  inherited;
+  if ProvDx.PromptMode = 'F' then
+    ProvDx.Text := txtProvDiag.Text;
+  ControlChange(Self);
+end;
+
+procedure TfrmODProc.popReasonPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popReason) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popReason))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popReasonCut.Enabled      := FEditCtrl.SelLength > 0;
+    popReasonCopy.Enabled     := popReasonCut.Enabled;
+    popReasonPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+  end else
+  begin
+    popReasonCut.Enabled      := False;
+    popReasonCopy.Enabled     := False;
+    popReasonPaste.Enabled    := False;
+  end;
+  popReasonReformat.Enabled := True;
+end;
+
+procedure TfrmODProc.popReasonCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmODProc.popReasonCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmODProc.popReasonPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmODProc.popReasonReformatClick(Sender: TObject);
+begin
+  inherited;
+  if Screen.ActiveControl <> memReason then Exit;
+  ReformatMemoParagraph(memReason);
+end;
+
+procedure TfrmODProc.SetupReasonForRequest(OrderAction: integer);
+var
+  EditReason: string;
+
+  procedure EnableReason;
+  begin
+    memReason.Color := clWindow;
+    memReason.Font.Color := clWindowText;
+    memReason.ReadOnly := False;
+    lblReason.Caption := 'Reason for Request';
+  end;
+
+  procedure DisableReason;
+  begin
+    memReason.Color := clInfoBk;
+    memReason.Font.Color := clInfoText;
+    memReason.ReadOnly := True;
+    lblReason.Caption := 'Reason for Request  (not editable)';
+  end;
+
+begin
+  if ((OrderAction = ORDER_QUICK) and (cboProc.ItemID <> '') and (Length(memReason.Text) = 0)) then
+    FastAssign(DefaultReasonForRequest(Piece(cboProc.Items[cboProc.ItemIndex], U, 4), True), memReason.Lines);
+  EditReason := GMRCREAF;
+  if EditReason = '' then EditReason := ReasonForRequestEditable(Piece(cboProc.Items[cboProc.ItemIndex], U, 4));
+  case EditReason[1] of
+    '0':  EnableReason;
+    '1':  if OrderAction in [ORDER_COPY, ORDER_EDIT] then
+            EnableReason
+          else
+            DisableReason;
+    '2':  DisableReason
+  else
+    EnableReason;
+  end;
+end;
+
+function TfrmODProc.ShowPrerequisites: boolean;
+var
+  AList: TStringList;
+const
+  TC_PREREQUISITES = 'Procedure Prerequisites - ';
+begin
+  Result := True;
+  AbortOrder := False;
+  AList := TStringList.Create;
+  try
+    with cboProc do
+      if ItemIEN > 0 then
+        begin
+          FastAssign(GetServicePrerequisites(Piece(Items[ItemIndex], U, 4)), Alist);
+          if AList.Count > 0 then
+            begin
+              if not DisplayPrerequisites(AList, TC_PREREQUISITES + DisplayText[ItemIndex]) then
+                begin
+                  memOrder.Clear;
+                  Result := False;
+                  AbortOrder := True;
+                  //cmdQuitClick(Self);
+                end
+              else Result := True;
+            end;
+        end;
+  finally
+    AList.Free;
+  end;
+end;
+
+function TfrmODProc.DefaultReasonForRequest(Service: string;
+  Resolve: Boolean): TStrings;
+var
+  TmpSL: TStringList;
+  DocInfo: string;
+  x: string;
+  HasObjects: boolean;
+begin
+  Resolve := FALSE ;  // override value passed in - resolve on client - PSI-05-093
+  DocInfo := '';
+  TmpSL := TStringList.Create;
+  try
+    Result := GetDefaultReasonForRequest(Piece(cboProc.Items[cboProc.ItemIndex], U, 4), Resolve);
+    FastAssign(Result, TmpSL);
+    x := TmpSL.Text;
+    ExpandOrderObjects(x, HasObjects);
+    TmpSL.Text := x;
+    Responses.OrderContainsObjects := HasObjects;
+    ExecuteTemplateOrBoilerPlate(TmpSL, StrToIntDef(Piece(Piece(cboProc.Items[cboProc.ItemIndex], U, 4), ';', 1), 0),
+                   ltProcedure, nil, 'Reason for Request: ' + cboProc.DisplayText[cboProc.ItemIndex], DocInfo);
+    AbortOrder := WasTemplateDialogCanceled;
+    Responses.OrderContainsObjects := HasObjects or TemplateBPHasObjects;
+    if AbortOrder then
+    begin
+      Result.Text := '';
+      Close;
+      Exit;
+    end
+    else
+      FastAssignWith508Msg(TmpSL, Result);
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+procedure TfrmODProc.memReasonKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if FNavigatingTab then
+  begin
+    if ssShift in Shift then
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
+    else if ssCtrl	in Shift then
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+    FNavigatingTab := False;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    Key := 0;
+  end;
+end;
+
+procedure TfrmODProc.GetProvDxandValidateCode(AResponses: TResponses);
+var
+  tmpDx: TResponse;
+begin
+  with AResponses do
+    begin
+      tmpDx := TResponse(FindResponseByName('MISC',1));
+      if tmpDx <> nil then ProvDx.Text := tmpDx.Evalue;
+      tmpDx := TResponse(FindResponseByName('CODE',1));
+      if (tmpDx <> nil) and (tmpDx.EValue <> '') then
+      begin
+        if IsActiveICDCode(tmpDx.EValue) then
+          ProvDx.Code := tmpDx.Evalue
+        else
+          begin
+            if ProvDx.Reqd = 'R' then
+              InfoBox(TX_INACTIVE_CODE1 + TX_INACTIVE_CODE_REQD, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK)
+            else
+              InfoBox(TX_INACTIVE_CODE1 + TX_INACTIVE_CODE_OPTIONAL, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+            ProvDx.Code := '';
+            ProvDx.Text := '';
+          end;
+      end;
+      txtProvDiag.Text := ProvDx.Text;
+      if ProvDx.Code <> '' then txtProvDiag.Text :=  txtProvDiag.Text + ' (' + ProvDx.Code + ')';
+    end;
+end;
+
+procedure TfrmODProc.SetFontSize(FontSize: integer);
+begin
+  inherited;
+  DoSetFontSize(FontSize);
+end;
+
+procedure TfrmODProc.DoSetFontSize(FontSize: integer);
+begin
+  memReason.Width := pnlReason.ClientWidth;
+  memReason.Height := pnlReason.ClientHeight;// - memReason.Height;  MAC-0104-61043 - RV
+end;
+
+procedure TfrmODProc.memReasonKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  //The navigating tab controls were inadvertantently adding tab characters
+  //This should fix it
+  FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
+  if FNavigatingTab then
+    Key := 0;
+end;
+
+procedure TfrmODProc.memReasonKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  if FNavigatingTab then
+    Key := #0;  //Disable shift-tab processing
+end;
+
+procedure TfrmODProc.FormResize(Sender: TObject);
+begin
+  inherited;
+  memOrder.Top := PnlReason.Top + PnlReason.Height + 5;
+
+end;
+
+procedure TfrmODProc.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  frmFrame.pnlVisit.Enabled := true;
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fPreReq.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fPreReq.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fPreReq.dfm	(revision 1676)
@@ -0,0 +1,119 @@
+inherited frmPrerequisites: TfrmPrerequisites
+  Left = 337
+  Top = 219
+  BorderIcons = [biSystemMenu]
+  Caption = 'frmPrerequisites'
+  ClientHeight = 319
+  ClientWidth = 367
+  Font.Charset = ANSI_CHARSET
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnActivate = OnActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 375
+  ExplicitHeight = 346
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblFontTest: TLabel [0]
+    Left = 148
+    Top = 208
+    Width = 77
+    Height = 14
+    Caption = 'lblFontTest'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+  end
+  object memReport: TRichEdit [1]
+    Left = 0
+    Top = 33
+    Width = 367
+    Height = 286
+    Align = alClient
+    Color = clCream
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      'memReport')
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 0
+    WantReturns = False
+    WordWrap = False
+  end
+  object pnlButton: TPanel [2]
+    Left = 0
+    Top = 0
+    Width = 367
+    Height = 33
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      367
+      33)
+    object cmdContinue: TButton
+      Left = 207
+      Top = 6
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = 'Continue'
+      TabOrder = 0
+      OnClick = cmdContinueClick
+    end
+    object cmdCancel: TButton
+      Left = 290
+      Top = 6
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel Order'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+  end
+  object cmdPrint: TButton [3]
+    Left = 2
+    Top = 6
+    Width = 75
+    Height = 21
+    Caption = 'Print'
+    TabOrder = 1
+    OnClick = cmdPrintClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memReport'
+        'Status = stsDefault')
+      (
+        'Component = pnlButton'
+        'Status = stsDefault')
+      (
+        'Component = cmdContinue'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrint'
+        'Status = stsDefault')
+      (
+        'Component = frmPrerequisites'
+        'Status = stsDefault'))
+  end
+  object dlgPrintReport: TPrintDialog
+    Left = 113
+    Top = 3
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fPreReq.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fPreReq.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/fPreReq.pas	(revision 1676)
@@ -0,0 +1,195 @@
+unit fPreReq;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORFn, ComCtrls, ExtCtrls, fBase508Form, VA508AccessibilityManager,
+  uReports;
+
+type
+  TfrmPrerequisites = class(TfrmBase508Form)
+    lblFontTest: TLabel;
+    memReport: TRichEdit;
+    pnlButton: TPanel;
+    cmdContinue: TButton;
+    cmdCancel: TButton;
+    cmdPrint: TButton;
+    dlgPrintReport: TPrintDialog;
+    procedure memReportClick(Sender: TObject);
+    procedure cmdContinueClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdPrintClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure OnActivate(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    procedure AlignButtons();
+  end;
+
+function DisplayPrerequisites(ReportText: TStrings; ReportTitle: string): Boolean;
+
+var
+  ContinueWithOrder: Boolean;
+
+implementation
+
+uses
+  uCore, rCore, rReports, Printers, rMisc;
+
+{$R *.DFM}
+
+function CreateReportBox(ReportText: TStrings; ReportTitle: string): TfrmPrerequisites;
+var
+  i, AWidth, MaxWidth, AHeight: Integer;
+  Rect: TRect;
+begin
+  Result := TfrmPrerequisites.Create(Application);
+  try
+    with Result do
+    begin
+      MaxWidth := PnlButton.Width;
+      for i := 0 to ReportText.Count - 1 do
+      begin
+        AWidth := lblFontTest.Canvas.TextWidth(ReportText[i]);
+        if AWidth > MaxWidth then MaxWidth := AWidth;
+      end;
+      MaxWidth := MaxWidth + (GetSystemMetrics(SM_CXFRAME) * 2) + GetSystemMetrics(SM_CXVSCROLL);
+      AHeight := (ReportText.Count * lblFontTest.Height) + ReportText.Count +
+        (GetSystemMetrics(SM_CYFRAME) * 3) + GetSystemMetrics(SM_CYCAPTION);
+      AHeight := AHeight + pnlbutton.Height;
+      AHeight := HigherOf(AHeight, 250);
+      if AHeight > (Screen.Height - 60) then AHeight := Screen.Height - 60;
+      if MaxWidth > Screen.Width then MaxWidth := Screen.Width;
+      Width := MaxWidth;
+      Height := AHeight;
+      Rect := BoundsRect;
+      ForceInsideWorkArea(Rect);
+      BoundsRect := Rect;
+      QuickCopy(ReportText, memReport);
+      //Quick fix to work around glich in resize algorithim
+      AlignButtons();
+      for i := 1 to Length(ReportTitle) do if ReportTitle[i] = #9 then ReportTitle[i] := ' ';
+      Caption := ReportTitle;
+      memReport.SelStart := 0;
+    end;
+  except
+    KillObj(@Result);
+    raise;
+  end;
+end;
+
+function DisplayPrerequisites(ReportText: TStrings; ReportTitle: string): Boolean;
+var
+  frmPrerequisites: TfrmPrerequisites;
+begin
+  frmPrerequisites := CreateReportBox(ReportText, ReportTitle);
+  try
+    frmPrerequisites.ShowModal;
+    Result := ContinueWithOrder;
+  finally
+    frmPrerequisites.Release;
+  end;
+end;
+
+procedure TfrmPrerequisites.memReportClick(Sender: TObject);
+begin
+  //Close;
+end;
+
+procedure TfrmPrerequisites.cmdContinueClick(Sender: TObject);
+begin
+  ContinueWithOrder := True;
+  Close;
+end;
+
+procedure TfrmPrerequisites.cmdCancelClick(Sender: TObject);
+begin
+  ContinueWithOrder := False;
+  Close;
+end;
+
+procedure TfrmPrerequisites.cmdPrintClick(Sender: TObject);
+var
+  AHeader: TStringList;
+  memPrintReport: TRichEdit;
+  MaxLines, LastLine, ThisPage, i: integer;
+  ErrMsg: string;
+  RemoteSiteID: string;    //for Remote site printing
+  RemoteQuery: string;    //for Remote site printing
+const
+  PAGE_BREAK = '**PAGE BREAK**';
+begin
+  RemoteSiteID := '';
+  RemoteQuery := '';
+  if dlgPrintReport.Execute then
+    begin
+      AHeader := TStringList.Create;
+      CreatePatientHeader(AHeader, Self.Caption);
+      memPrintReport := CreateReportTextComponent(Self);
+      try
+        MaxLines := 60 - AHeader.Count;
+        LastLine := 0;
+        ThisPage := 0;
+        with memPrintReport do
+          begin
+            repeat
+              with Lines do
+                begin
+                  AddStrings(AHeader);
+                  for i := 0 to MaxLines do
+                    if i < memReport.Lines.Count then
+                      Add(memReport.Lines[LastLine + i])
+                    else
+                      Break;
+                  LastLine := LastLine + i;
+                  Add(' ');
+                  Add(' ');
+                  Add(StringOfChar('-', 74));
+                  if LastLine >= memReport.Lines.Count - 1 then
+                    Add('End of report')
+                  else
+                    begin
+                      ThisPage := ThisPage + 1;
+                      Add('Page ' + IntToStr(ThisPage));
+                      Add(PAGE_BREAK);
+                    end;
+                end;
+              until LastLine >= memReport.Lines.Count - 1;
+            PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg);
+          end;
+      finally
+        memPrintReport.Free;
+        AHeader.Free;
+      end;
+    end;
+  memReport.SelStart := 0;
+  memReport.Invalidate;
+end;
+
+procedure TfrmPrerequisites.AlignButtons;
+Const
+  BtnSpace = 8;
+begin
+  cmdCancel.Left := self.Width - cmdCancel.Width - (BtnSpace * 3) - 3;
+  cmdContinue.Left := cmdCancel.Left - BtnSpace - cmdContinue.Width;
+end;
+
+procedure TfrmPrerequisites.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(Self); //Save Position & Size of Form
+end;
+
+procedure TfrmPrerequisites.FormCreate(Sender: TObject);
+begin
+  inherited;
+  ResizeAnchoredFormToFont(Self);
+  SetFormPosition(Self); //Get Saved Position & Size of Form
+end;
+
+procedure TfrmPrerequisites.OnActivate(Sender: TObject);
+begin
+  if Self.VertScrollBar.IsScrollBarVisible then Self.VertScrollBar.Position := 0;
+end;
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/rConsults.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/rConsults.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/rConsults.pas	(revision 1676)
@@ -0,0 +1,848 @@
+unit rConsults;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, TRPCB, dialogs, uConsults, rTIU, uTIU;
+
+type
+
+  TUnresolvedConsults = record
+    UnresolvedConsultsExist: boolean;
+    ShowNagScreen: boolean;
+  end;
+
+{Consult Titles }
+function  DfltConsultTitle: integer;
+function  DfltConsultTitleName: string;
+function  DfltClinProcTitle: integer;
+function  DfltClinProcTitleName: string;
+function  IdentifyConsultsClass: integer;
+function  IdentifyClinProcClass: integer;
+procedure ListConsultTitlesShort(Dest: TStrings);
+procedure ListClinProcTitlesShort(Dest: TStrings);
+function SubSetOfConsultTitles(const StartFrom: string; Direction: Integer; IDNoteTitlesOnly: boolean): TStrings;
+function SubSetOfClinProcTitles(const StartFrom: string; Direction: Integer; IDNoteTitlesOnly: boolean): TStrings;
+procedure ResetConsultTitles;
+procedure ResetClinProcTitles;
+
+{ Data Retrieval }
+procedure GetConsultsList(Dest: TStrings; Early, Late: double;
+  Service, Status: string; SortAscending: Boolean);
+procedure LoadConsultDetail(Dest: TStrings; IEN: integer) ;
+function  GetCurrentContext: TSelectContext;
+procedure SaveCurrentContext(AContext: TSelectContext) ;
+procedure DisplayResults(Dest: TStrings; IEN: integer) ;
+procedure GetConsultRec(IEN: integer) ;
+function  ShowSF513(ConsultIEN: integer): TStrings ;
+procedure PrintSF513ToDevice(AConsult: Integer; const ADevice: string; ChartCopy: string;
+  var ErrMsg: string);
+function GetFormattedSF513(AConsult: Integer; ChartCopy: string): TStrings;
+function UnresolvedConsultsExist: boolean;
+procedure GetUnresolvedConsultsInfo;
+
+{list box fillers}
+function  SubSetOfStatus: TStrings;
+function  SubSetOfUrgencies(ConsultIEN: integer): TStrings;
+function  LoadServiceList(Purpose: integer): TStrings ;
+function  LoadServiceListWithSynonyms(Purpose: integer): TStrings ; overload;
+function  LoadServiceListWithSynonyms(Purpose, ConsultIEN: integer): TStrings ; overload;
+function  SubSetOfServices(const StartFrom: string; Direction: Integer): TStrings;
+function  FindConsult(ConsultIEN: integer): string ;
+
+{user access level functions}
+function  ConsultServiceUser(ServiceIEN: integer; DUZ: int64): boolean ;
+function GetActionMenuLevel(ConsultIEN: integer): TMenuAccessRec ;
+
+{consult result functions}
+function  GetAssignableMedResults(ConsultIEN: integer): TStrings;
+function  GetRemovableMedResults(ConsultIEN: integer): TStrings;
+function  GetDetailedMedicineResults(ResultID: string): TStrings;
+procedure AttachMedicineResult(ConsultIEN: integer; ResultID: string; DateTime: TFMDateTime; ResponsiblePerson: int64; AlertTo: string);
+procedure RemoveMedicineResult(ConsultIEN: integer; ResultID: string; DateTime: TFMDateTime; ResponsiblePerson: int64);
+
+{Consult Request Actions}
+procedure ReceiveConsult(Dest: TStrings; IEN: integer; ReceivedBy: int64; RcptDate: TFMDateTime; Comments: TStrings);
+procedure ScheduleConsult(Dest: TStrings; IEN: integer; ScheduledBy: Int64; SchdDate: TFMDateTime; Alert: integer;
+     AlertTo: string; Comments: TStrings);
+procedure DiscontinueConsult(Dest: TStrings; IEN: integer; DiscontinuedBy: int64;
+     DiscontinueDate: TFMDateTime; Comments: TStrings);
+procedure DenyConsult(Dest: TStrings; IEN: integer; DeniedBy: int64;
+     DenialDate: TFMDateTime; Comments: TStrings);
+procedure ForwardConsult(Dest: TStrings; IEN, ToService: integer; Forwarder, AttentionOf: int64;
+     Urgency: integer; ActionDate: TFMDateTime; Comments: TStrings);
+procedure AddComment(Dest: TStrings; IEN: integer; Comments: TStrings; ActionDate: TFMDateTime; Alert: integer;
+     AlertTo: string) ;
+procedure SigFindings(Dest: TStrings; IEN: integer; SigFindingsFlag: string; Comments: TStrings;  ActionDate: TFMDateTime;Alert: integer;
+     AlertTo: string) ;
+procedure AdminComplete(Dest: TStrings; IEN: integer; SigFindingsFlag: string; Comments: TStrings;
+          RespProv: Int64; ActionDate: TFMDateTime; Alert: integer; AlertTo: string) ;
+
+     { Consults Ordering Calls }
+function ODForConsults: TStrings;
+function ODForProcedures: TStrings;
+function ConsultMessage(AnIEN: Integer): string;
+function LoadConsultsQuickList: TStrings ;
+function GetProcedureServices(ProcIEN: integer): TStrings;
+function ConsultCanBeResubmitted(ConsultIEN: integer): string;
+function LoadConsultForEdit(ConsultIEN: integer): TEditResubmitRec;
+function ResubmitConsult(EditResubmitRec: TEditResubmitRec): string;
+function SubSetOfProcedures(const StartFrom: string; Direction: Integer): TStrings;
+function GetDefaultReasonForRequest(Service: string; Resolve: Boolean): TStrings;
+function ReasonForRequestEditable(Service: string): string;
+function GetNewDialog(OrderType: string): string;
+function GetServiceIEN(ORIEN: string): string;
+function GetProcedureIEN(ORIEN: string): string;
+function GetConsultOrderIEN(ConsultIEN: integer): string;
+function GetServicePrerequisites(Service: string): TStrings;
+procedure GetProvDxMode(var ProvDx: TProvisionalDiagnosis; SvcIEN: string);
+
+{ Clinical Procedures Specific}
+function GetSavedCPFields(NoteIEN: integer): TEditNoteRec;
+
+var
+  uConsultsClass: integer;
+  uConsultTitles: TConsultTitles;
+  uClinProcClass: integer;
+  uClinProcTitles: TClinProcTitles;
+  uUnresolvedConsults: TUnresolvedConsults;
+
+implementation
+
+uses  rODBase;
+
+var
+  uLastOrderedIEN: Integer;
+  uLastOrderMsg: string;
+
+{ -------------------------- Consult Titles --------------------------------- }
+
+function IdentifyConsultsClass: integer;
+begin
+  if uConsultsClass = 0 then
+    uConsultsClass := StrToIntDef(sCallV('TIU IDENTIFY CONSULTS CLASS',[nil]), 0)  ;
+  Result := uConsultsClass;
+end;
+
+procedure LoadConsultTitles;
+{ private - called one time to set up the uConsultTitles object }
+var
+  x: string;
+begin
+  if uConsultTitles <> nil then Exit;
+  CallV('TIU PERSONAL TITLE LIST', [User.DUZ, IdentifyConsultsClass]);
+  RPCBrokerV.Results.Insert(0, '~SHORT LIST');  // insert so can call ExtractItems
+  uConsultTitles := TConsultTitles.Create;
+  ExtractItems(uConsultTitles.ShortList, RPCBrokerV.Results, 'SHORT LIST');
+  x := ExtractDefault(RPCBrokerV.Results, 'SHORT LIST');
+  uConsultTitles.DfltTitle := StrToIntDef(Piece(x, U, 1), 0);
+  uConsultTitles.DfltTitleName := Piece(x, U, 2);
+end;
+
+procedure ResetConsultTitles;
+begin
+  if uConsultTitles <> nil then
+    begin
+      uConsultTitles.Free;
+      uConsultTitles := nil;
+      LoadConsultTitles;
+    end;
+end;
+
+function DfltConsultTitle: integer;
+{ returns the user defined default Consult title (if any) }
+begin
+  if uConsultTitles = nil then LoadConsultTitles;
+  Result := uConsultTitles.DfltTitle;
+end;
+
+function DfltConsultTitleName: string;
+{ returns the name of the user defined default progress note title (if any) }
+begin
+  if uConsultTitles = nil then LoadConsultTitles;
+  Result := uConsultTitles.DfltTitleName;
+end;
+
+procedure ListConsultTitlesShort(Dest: TStrings);
+{ returns the user defined list (short list) of Consult titles }
+begin
+  if uConsultTitles = nil then LoadConsultTitles;
+  Dest.AddStrings(uConsultTitles.ShortList);
+  if uConsultTitles.ShortList.Count > 0 then
+  begin
+    Dest.Add('0^________________________________________________________________________');
+    Dest.Add('0^ ');
+  end;
+end;
+
+function SubSetOfConsultTitles(const StartFrom: string; Direction: Integer; IDNoteTitlesOnly: boolean): TStrings;
+{ returns a pointer to a list of consults progress note titles (for use in a long list box) -
+  The return value is a pointer to RPCBrokerV.Results, so the data must be used BEFORE
+  the next broker call! }
+begin
+(*  if IDNoteTitlesOnly then        //  This RPC not changed for initial ID Notes release
+    CallV('TIU LONG LIST CONSULT TITLES', [StartFrom, Direction, IDNoteTitlesOnly])
+  else*)
+    CallV('TIU LONG LIST CONSULT TITLES', [StartFrom, Direction]);
+  //MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+
+{ -------------------------- Clinical Procedures Titles --------------------------------- }
+function IdentifyClinProcClass: integer;
+begin
+  if uClinProcClass = 0 then
+    uClinProcClass := StrToIntDef(sCallV('TIU IDENTIFY CLINPROC CLASS',[nil]), 0)  ;
+  Result := uClinProcClass;
+end;
+
+procedure LoadClinProcTitles;
+{ private - called one time to set up the uConsultTitles object }
+var
+  x: string;
+begin
+  if uClinProcTitles <> nil then Exit;
+  CallV('TIU PERSONAL TITLE LIST', [User.DUZ, IdentifyClinProcClass]);
+  RPCBrokerV.Results.Insert(0, '~SHORT LIST');  // insert so can call ExtractItems
+  uClinProcTitles := TClinProcTitles.Create;
+  ExtractItems(uClinProcTitles.ShortList, RPCBrokerV.Results, 'SHORT LIST');
+  x := ExtractDefault(RPCBrokerV.Results, 'SHORT LIST');
+  uClinProcTitles.DfltTitle := StrToIntDef(Piece(x, U, 1), 0);
+  uClinProcTitles.DfltTitleName := Piece(x, U, 2);
+end;
+
+procedure ResetClinProcTitles;
+begin
+  if uClinProcTitles <> nil then
+    begin
+      uClinProcTitles.Free;
+      uClinProcTitles := nil;
+      LoadClinProcTitles;
+    end;
+end;
+
+function DfltClinProcTitle: integer;
+{ returns the user defined default ClinProc title (if any) }
+begin
+  if uClinProcTitles = nil then LoadClinProcTitles;
+  Result := uClinProcTitles.DfltTitle;
+end;
+
+function DfltClinProcTitleName: string;
+{ returns the name of the user defined default progress note title (if any) }
+begin
+  if uClinProcTitles = nil then LoadClinProcTitles;
+  Result := uClinProcTitles.DfltTitleName;
+end;
+
+procedure ListClinProcTitlesShort(Dest: TStrings);
+{ returns the user defined list (short list) of ClinProc titles }
+begin
+  if uClinProcTitles = nil then LoadClinProcTitles;
+  Dest.AddStrings(uClinProcTitles.ShortList);
+  if uClinProcTitles.ShortList.Count > 0 then
+  begin
+    Dest.Add('0^________________________________________________________________________');
+    Dest.Add('0^ ');
+  end;
+end;
+
+function SubSetOfClinProcTitles(const StartFrom: string; Direction: Integer; IDNoteTitlesOnly: boolean): TStrings;
+{ returns a pointer to a list of clinical procedures titles (for use in a long list box) -
+  The return value is a pointer to RPCBrokerV.Results, so the data must be used BEFORE
+  the next broker call! }
+begin
+(*  if IDNoteTitlesOnly then        //  This RPC not changed for initial ID Notes release
+    CallV('TIU LONG LIST CLINPROC TITLES', [StartFrom, Direction, IDNoteTitlesOnly])
+  else*)
+    CallV('TIU LONG LIST CLINPROC TITLES', [StartFrom, Direction]);
+  //MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+{--------------- data retrieval ------------------------------------------}
+
+procedure GetConsultsList(Dest: TStrings; Early, Late: double;
+  Service, Status: string; SortAscending: Boolean);
+{ returns a list of consults for a patient, based on selected dates, service, status, or ALL}
+var
+  i: Integer;
+  x, date1, date2: string;
+begin
+  if Early <= 0 then date1 := '' else date1 := FloatToStr(Early) ;
+  if Late  <= 0 then date2 := '' else date2 := FloatToStr(Late)  ;
+  CallV('ORQQCN LIST', [Patient.DFN, date1, date2, Service, Status]);
+  with RPCBrokerV do
+   begin
+    if Copy(Results[0],1,1) <> '<' then
+      begin
+       SortByPiece(TStringList(Results), U, 2);
+       if not SortAscending then InvertStringList(TStringList(Results));
+       //SetListFMDateTime('mmm dd,yy', TStringList(Results), U, 2);
+       for i := 0 to Results.Count - 1 do
+         begin
+           x := MakeConsultListItem(Results[i]);
+           Results[i] := x;
+         end;
+       FastAssign(Results, Dest);
+     end
+    else
+     begin
+       Dest.Clear ;
+       Dest.Add('-1^No Matches') ;
+     end ;
+  end;
+end;
+
+procedure LoadConsultDetail(Dest: TStrings; IEN: integer) ;
+{ returns the detail of a consult }
+begin
+  CallV('ORQQCN DETAIL', [IEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure DisplayResults(Dest: TStrings; IEN: integer) ;
+{ returns the results for a consult }
+begin
+  CallV('ORQQCN MED RESULTS', [IEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure GetConsultRec(IEN: integer);
+{returns zero node from file 123, plus a list of all related TIU documents, if any}
+const
+  SHOW_ADDENDA = True;
+var
+   alist: TStrings;
+   x: string ;
+   i: integer;
+{           1    2    3     4     5     6    7    8   9    10   11  12   13     14    15
+{ Pieces: EntDt^Pat^OrIFN^PtLoc^ToSvc^From^ReqDt^Typ^Urg^Place^Attn^Sts^LstAct^SndPrv^Rslt^
+    16      17     18    19     20     21      22
+ ^EntMode^ReqTyp^InOut^SigFnd^TIUPtr^OrdFac^FrgnCslt}
+begin
+  FillChar(ConsultRec, SizeOf(ConsultRec), 0);
+  CallV('ORQQCN GET CONSULT', [IEN, SHOW_ADDENDA]);
+  ConsultRec.IEN := IEN ;
+  alist := TStringList.Create ;
+ try
+  FastAssign(RPCBrokerV.Results, aList);
+  x := alist[0] ;
+  if Piece(x,u,1) <> '-1' then
+    with ConsultRec do
+     begin
+      EntryDate             := MakeFMDateTime(Piece(x, U, 1));
+      ORFileNumber          := StrToIntDef(Piece(x, U, 3),0);
+      PatientLocation       := StrToIntDef(Piece(x, U, 4),0);
+      OrderingFacility      := StrToIntDef(Piece(x, U, 21),0);
+      ForeignConsultFileNum := StrToIntDef(Piece(x, U, 22),0);
+      ToService             := StrToIntDef(Piece(x, U, 5),0);
+      From                  := StrToIntDef(Piece(x, U, 6),0);
+      RequestDate           := MakeFMDateTime(Piece(x, U, 7));
+      ConsultProcedure      := Piece(x, U, 8)  ;
+      Urgency               := StrToIntDef(Piece(x, U, 9),0);
+      PlaceOfConsult        := StrToIntDef(Piece(x, U, 10),0);
+      Attention             := StrToInt64Def(Piece(x, U, 11),0);
+      ORStatus              := StrToIntDef(Piece(x, U, 12),0);
+      LastAction            := StrToIntDef(Piece(x, U, 13),0);
+      SendingProvider       := StrToInt64Def(Piece(Piece(x, U, 14),';',1),0);
+      SendingProviderName   := Piece(Piece(x, U, 14),';',2)   ;
+      Result                := Piece(x, U, 15)  ;
+      ModeOfEntry           := Piece(x, U, 16)  ;
+      RequestType           := StrToIntDef(Piece(x, U, 17),0);
+      InOut                 := Piece(x, U, 18)  ;
+      Findings              := Piece(x, U, 19)  ;
+      TIUResultNarrative    := StrToIntDef(Piece(x, U, 20),0);
+      //ProvDiagnosis         := Piece(x, U, 23);  NO!!!!! Up to 180 Characters!!!!
+      alist.delete(0) ;
+      TIUDocuments := TStringList.Create ;
+      MedResults := TStringList.Create;
+      if alist.count > 0 then
+        begin
+          SortByPiece(TStringList(alist), U, 3);
+          for i := 0 to alist.Count - 1 do
+            if Copy(Piece(Piece(alist[i], U, 1), ';', 2), 1, 4) = 'MCAR' then
+              MedResults.Add(alist[i])
+            else
+              TIUDocuments.Add(alist[i]);
+        end;
+     end  {ConsultRec}
+  else
+   ConsultRec.EntryDate := -1 ;
+ finally
+   alist.free ;
+ end ;
+end ;
+
+{---------------- list box fillers -----------------------------------}
+
+function SubSetOfStatus: TStrings;
+{ returns a pointer to a list of stati (for use in a list box) }
+begin
+  CallV('ORQQCN STATUS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfUrgencies(ConsultIEN: integer): TStrings;
+{ returns a pointer to a list of urgencies  }
+begin
+  CallV('ORQQCN URGENCIES',[ConsultIEN]) ;
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function FindConsult(ConsultIEN: integer): string ;
+var
+  x: string;
+begin
+  x := sCallV('ORQQCN FIND CONSULT',[ConsultIEN]);
+  Result := MakeConsultListItem(x);
+end;
+
+{-----------------consult result functions-----------------------------------}
+function GetAssignableMedResults(ConsultIEN: integer): TStrings;
+begin
+  CallV('ORQQCN ASSIGNABLE MED RESULTS', [ConsultIEN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetRemovableMedResults(ConsultIEN: integer): TStrings;
+begin
+  CallV('ORQQCN REMOVABLE MED RESULTS', [ConsultIEN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetDetailedMedicineResults(ResultID: string): TStrings;
+begin
+  CallV('ORQQCN GET MED RESULT DETAILS', [ResultID]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure AttachMedicineResult(ConsultIEN: integer; ResultID: string; DateTime: TFMDateTime; ResponsiblePerson: int64; AlertTo: string);
+begin
+  CallV('ORQQCN ATTACH MED RESULTS', [ConsultIEN, ResultID, DateTime, ResponsiblePerson, AlertTo]);
+end;
+
+procedure RemoveMedicineResult(ConsultIEN: integer; ResultID: string; DateTime: TFMDateTime; ResponsiblePerson: int64);
+begin
+  CallV('ORQQCN REMOVE MED RESULTS', [ConsultIEN, ResultID, DateTime, ResponsiblePerson]);
+end;
+{-------------- user access level functions ---------------------------------}
+
+function ConsultServiceUser(ServiceIEN: integer; DUZ: int64): boolean ;
+var
+  i: integer ;
+begin
+  Result := False ;
+  CallV('ORWU GENERIC', ['',1,'^GMR(123.5,'+IntToStr(ServiceIEN)+',123.3,"B")']) ;
+  for i:=0 to RPCBrokerV.Results.Count-1 do
+      if StrToInt64(Piece(RPCBrokerV.Results[i],u,2))=DUZ then result := True  ;
+end ;
+
+function GetActionMenuLevel(ConsultIEN: integer): TMenuAccessRec ;
+var
+  x: string;
+begin
+  x := sCallV('ORQQCN SET ACT MENUS', [ConsultIEN]) ;
+  Result.UserLevel := StrToIntDef(Piece(x, U, 1), 1);
+  Result.AllowMedResulting := (Piece(x, U, 4) = '1');
+  Result.AllowMedDissociate := (Piece(x, U, 5) = '1');
+  Result.AllowResubmit := (Piece(x, U, 6) = '1') and (Piece(ConsultCanBeResubmitted(ConsultIEN), U, 1) <> '0');
+  Result.ClinProcFlag := StrToIntDef(Piece(x, U, 7), CP_NOT_CLINPROC);
+  Result.IsClinicalProcedure := (Result.ClinProcFlag > CP_NOT_CLINPROC);
+end ;
+
+{------------------- Consult request actions -------------------------------}
+
+procedure ReceiveConsult(Dest: TStrings; IEN: integer; ReceivedBy: int64; RcptDate: TFMDateTime; Comments: TStrings);
+begin
+  CallV('ORQQCN RECEIVE', [IEN, ReceivedBy, RcptDate, Comments]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end;
+
+procedure ScheduleConsult(Dest: TStrings; IEN: integer; ScheduledBy: Int64; SchdDate: TFMDateTime; Alert: integer;
+     AlertTo: string; Comments: TStrings);
+begin
+  CallV('ORQQCN2 SCHEDULE CONSULT', [IEN, ScheduledBy, SchdDate, Alert, AlertTo, Comments]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end;
+
+procedure DenyConsult(Dest: TStrings; IEN: integer; DeniedBy: int64;
+            DenialDate: TFMDateTime; Comments: TStrings);
+begin
+  CallV('ORQQCN DISCONTINUE', [IEN, DeniedBy, DenialDate,'DY',Comments]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end;
+
+procedure DiscontinueConsult(Dest: TStrings; IEN: integer; DiscontinuedBy: int64;
+            DiscontinueDate: TFMDateTime; Comments: TStrings);
+begin
+  CallV('ORQQCN DISCONTINUE', [IEN, DiscontinuedBy, DiscontinueDate,'DC',Comments]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end;
+
+procedure ForwardConsult(Dest: TStrings; IEN, ToService: integer; Forwarder, AttentionOf: int64; Urgency: integer;
+     ActionDate: TFMDateTime; Comments: TStrings);
+begin
+  CallV('ORQQCN FORWARD', [IEN, ToService, Forwarder, AttentionOf, Urgency, ActionDate, Comments]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end ;
+
+procedure AddComment(Dest: TStrings; IEN: integer; Comments: TStrings; ActionDate: TFMDateTime; Alert: integer;
+AlertTo: string) ;
+begin
+  CallV('ORQQCN ADDCMT', [IEN, Comments, Alert, AlertTo, ActionDate]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end ;
+
+procedure AdminComplete(Dest: TStrings; IEN: integer; SigFindingsFlag: string; Comments: TStrings;
+          RespProv: Int64; ActionDate: TFMDateTime; Alert: integer; AlertTo: string) ;
+begin
+  CallV('ORQQCN ADMIN COMPLETE', [IEN, SigFindingsFlag, Comments, RespProv, Alert, AlertTo, ActionDate]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end ;
+
+procedure SigFindings(Dest: TStrings; IEN: integer; SigFindingsFlag: string; Comments: TStrings; ActionDate: TFMDateTime; Alert: integer;
+AlertTo: string) ;
+begin
+  CallV('ORQQCN SIGFIND', [IEN, SigFindingsFlag, Comments, Alert, AlertTo, ActionDate]);
+  FastAssign(RPCBrokerV.Results, Dest);   {1^Error message' or '0'}
+end ;
+
+//==================  Ordering functions   ===================================
+function ODForConsults: TStrings;
+{ Returns init values for consults dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDCN32 DEF', ['C']);
+  Result := RPCBrokerV.Results;
+end;
+
+function ODForProcedures: TStrings;
+{ Returns init values for procedures dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDCN32 DEF', ['P']);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfProcedures(const StartFrom: string; Direction: Integer): TStrings;
+begin
+begin
+  CallV('ORWDCN32 PROCEDURES', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+end;
+
+function LoadServiceList(Purpose: integer): TStrings ;
+// Purpose:  0=display all services, 1=forward or order from possible services
+begin
+  Callv('ORQQCN SVCTREE',[Purpose]) ;
+  MixedCaseList(RPCBrokerV.Results) ;
+  Result := RPCBrokerV.Results;
+end ;
+
+function LoadServiceListWithSynonyms(Purpose: integer): TStrings ;
+// Param 1 = Starting service (1=All Services)
+// Param 2 = Purpose:  0=display all services, 1=forward or order from possible services
+// Param 3 = Show synonyms
+begin
+  Callv('ORQQCN SVC W/SYNONYMS',[1, Purpose, True]) ;
+  MixedCaseList(RPCBrokerV.Results) ;
+  Result := RPCBrokerV.Results;
+end ;
+
+function LoadServiceListWithSynonyms(Purpose, ConsultIEN: integer): TStrings ;
+// Param 1 = Starting service (1=All Services)
+// Param 2 = Purpose:  0=display all services, 1=forward or order from possible services
+// Param 3 = Show synonyms
+// Param 4 = Consult IEN
+begin
+  Callv('ORQQCN SVC W/SYNONYMS',[1, Purpose, True, ConsultIEN]) ;
+  MixedCaseList(RPCBrokerV.Results) ;
+  Result := RPCBrokerV.Results;
+end ;
+
+function SubSetOfServices(const StartFrom: string; Direction: Integer): TStrings;
+//  used only on consults order dialog for service long combo box, which needs to include quick orders
+begin
+  CallV('ORQQCN SVCLIST', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function LoadConsultsQuickList: TStrings ;
+begin
+  Callv('ORWDXQ GETQLST',['CSLT', 'Q']) ;
+  Result := RPCBrokerV.Results;
+end ;
+
+function ShowSF513(ConsultIEN: integer): TStrings ;
+var
+  x: string;
+  i: integer;
+begin
+  CallV('ORQQCN SHOW SF513',[ConsultIEN]) ;
+  if RPCBrokerV.Results.Count > 0 then
+    begin
+      x := RPCBrokerV.Results[0];
+      i := Pos('-', x);
+      x := Copy(x, i, 999);
+      RPCBrokerV.Results[0] := x;
+    end;
+  Result := RPCBrokerV.Results;
+end ;
+
+procedure PrintSF513ToDevice(AConsult: Integer; const ADevice: string; ChartCopy: string;
+  var ErrMsg: string);
+{ prints a SF 513 on the selected device }
+begin
+  ErrMsg := sCallV('ORQQCN PRINT SF513', [AConsult, ChartCopy, ADevice]);
+//  if Piece(ErrMsg, U, 1) = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+end;
+
+function GetFormattedSF513(AConsult: Integer; ChartCopy: string): TStrings;
+begin
+  CallV('ORQQCN SF513 WINDOWS PRINT',[AConsult, ChartCopy]);
+  Result := RPCBrokerV.Results;
+end;
+
+function UnresolvedConsultsExist: boolean;
+begin
+  Result := (sCallV('ORQQCN UNRESOLVED', [Patient.DFN]) = '1');
+end;
+
+procedure GetUnresolvedConsultsInfo;
+var
+  x: string;
+begin
+  x := sCallV('ORQQCN UNRESOLVED', [Patient.DFN]);
+  with uUnresolvedConsults do
+  begin
+    UnresolvedConsultsExist := (Piece(x, U, 1) = '1');
+    ShowNagScreen := (Piece(x, U, 2) = '1');
+  end;
+end;
+
+function ConsultMessage(AnIEN: Integer): string;
+begin
+  if AnIEN = uLastOrderedIEN then Result := uLastOrderMsg else
+  begin
+    Result := sCallV('ORWDCN32 ORDRMSG', [AnIEN]);
+    uLastOrderedIEN := AnIEN;
+    uLastOrderMsg := Result;
+  end;
+end;
+
+function GetProcedureIEN(ORIEN: string): string;
+begin
+  Result := sCallV('ORQQCN GET PROC IEN', [ORIEN]);
+end;
+
+function GetProcedureServices(ProcIEN: integer): TStrings;
+begin
+  CallV('ORQQCN GET PROC SVCS',[ProcIEN]) ;
+  Result := RPCBrokerV.Results;
+end;
+
+function ConsultCanBeResubmitted(ConsultIEN: integer): string;
+begin
+  Result := sCallV('ORQQCN CANEDIT', [ConsultIEN]);
+end;
+
+function LoadConsultForEdit(ConsultIEN: integer): TEditResubmitRec;
+var
+  Dest: TStringList;
+  EditRec: TEditResubmitRec;
+begin
+  Dest := TStringList.Create;
+  try
+    tCallV(Dest, 'ORQQCN LOAD FOR EDIT',[ConsultIEN]) ;
+    with EditRec do
+      begin
+         Changed         := False;
+         IEN             := ConsultIEN;
+         ToService       := StrToIntDef(Piece(ExtractDefault(Dest, 'SERVICE'), U, 2), 0);
+         RequestType     := Piece(ExtractDefault(Dest, 'TYPE'), U, 3);
+         OrderableItem   := StrToIntDef(Piece(ExtractDefault(Dest, 'PROCEDURE'), U, 1), 0);
+         ConsultProc     := Piece(ExtractDefault(Dest, 'PROCEDURE'), U, 3);
+         ConsultProcName := Piece(ExtractDefault(Dest, 'PROCEDURE'), U, 2);
+         Urgency         := StrToIntDef(Piece(ExtractDefault(Dest, 'URGENCY'), U, 3), 0);
+         UrgencyName     := Piece(ExtractDefault(Dest, 'URGENCY'), U, 2);
+         Place           := Piece(ExtractDefault(Dest, 'PLACE'), U, 1);
+         PlaceName       := Piece(ExtractDefault(Dest, 'PLACE'), U, 2);
+         Attention       := StrToInt64Def(Piece(ExtractDefault(Dest, 'ATTENTION'), U, 1), 0);
+         AttnName        := Piece(ExtractDefault(Dest, 'ATTENTION'), U, 2);
+         InpOutp         := Piece(ExtractDefault(Dest, 'CATEGORY'), U, 1);
+         ProvDiagnosis      := Piece(ExtractDefault(Dest, 'DIAGNOSIS'), U, 1);
+         ProvDxCode         := Piece(ExtractDefault(Dest, 'DIAGNOSIS'), U, 2);
+         ProvDxCodeInactive := (Piece(ExtractDefault(Dest, 'DIAGNOSIS'), U, 3) = '1');
+         RequestReason   := TStringList.Create;
+         ExtractText(RequestReason, Dest, 'REASON');
+         LimitStringLength(RequestReason, 74);
+         DenyComments    := TStringList.Create;
+         ExtractText(DenyComments, Dest, 'DENY COMMENT');
+         OtherComments   := TStringList.Create;
+         ExtractText(OtherComments, Dest, 'ADDED COMMENT');
+         NewComments     := TStringList.Create;
+      end;
+    Result := EditRec;
+  finally
+    Dest.Free;
+  end;
+end;
+
+function ResubmitConsult(EditResubmitRec: TEditResubmitRec): string;
+var
+  i: integer;
+begin
+  with RPCBrokerV, EditResubmitRec do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORQQCN RESUBMIT';
+      Param[0].PType := literal;
+      Param[0].Value := IntToStr(IEN);
+      Param[1].PType := list;
+      with Param[1] do
+        begin
+          if ToService > 0 then
+            Mult['1']  := 'GMRCSS^'   + IntToStr(ToService);
+          if ConsultProc <> '' then
+            Mult['2']  := 'GMRCPROC^' + ConsultProc ;
+          if Urgency > 0 then
+            Mult['3']  := 'GMRCURG^'  + IntToStr(Urgency);
+          if Length(Place) > 0 then
+            Mult['4']  := 'GMRCPL^'   + Place;
+          if Attention > 0 then
+            Mult['5']  := 'GMRCATN^'  + IntToStr(Attention)
+          else if Attention = -1 then
+            Mult['5']  := 'GMRCATN^'  + '@';
+          if RequestType <> '' then
+            Mult['6']  := 'GMRCRQT^'  + RequestType;
+          if Length(InpOutP) > 0 then
+            Mult['7']  := 'GMRCION^'  + InpOutp;
+          if Length(ProvDiagnosis) > 0 then
+            Mult['8']  := 'GMRCDIAG^' + ProvDiagnosis + U + ProvDxCode;
+          if RequestReason.Count > 0 then
+            begin
+              Mult['9']  := 'GMRCRFQ^20';
+              for i := 0 to RequestReason.Count - 1 do
+                Mult['9,' + IntToStr(i+1)]  := RequestReason.Strings[i];
+            end;
+          if NewComments.Count > 0 then
+            begin
+              Mult['10'] := 'COMMENT^';
+              for i := 0 to NewComments.Count - 1 do
+                Mult['10,' + IntToStr(i+1)] := NewComments.Strings[i];
+            end;
+        end;
+      CallBroker;
+      Result := '0';
+      //Result := Results[0];
+    end;
+end;
+
+function  GetCurrentContext: TSelectContext;
+var
+  x: string;
+  AContext: TSelectContext;
+begin
+  x := sCallV('ORQQCN2 GET CONTEXT', [User.DUZ]) ;
+  with AContext do
+    begin
+      Changed       := True;
+      BeginDate     := Piece(x, ';', 1);
+      EndDate       := Piece(x, ';', 2);
+      Status        := Piece(x, ';', 3);
+      Service       := Piece(x, ';', 4);
+      GroupBy       := Piece(x, ';', 5);
+      Ascending     := (Piece(x, ';', 6) = '1');
+    end;
+  Result := AContext;
+end;
+
+procedure SaveCurrentContext(AContext: TSelectContext) ;
+var
+  x: string;
+begin
+  with AContext do
+    begin
+      SetPiece(x, ';', 1, BeginDate);
+      SetPiece(x, ';', 2, EndDate);
+      SetPiece(x, ';', 3, Status);
+      SetPiece(x, ';', 4, Service);
+      SetPiece(x, ';', 5, GroupBy);
+      SetPiece(x, ';', 6, BOOLCHAR[Ascending]);
+    end;
+  CallV('ORQQCN2 SAVE CONTEXT', [x]);
+end;
+
+function GetDefaultReasonForRequest(Service: string; Resolve: Boolean): TStrings;
+begin
+  CallV('ORQQCN DEFAULT REQUEST REASON',[Service, Patient.DFN, Resolve]) ;
+  Result := RPCBrokerV.Results;
+end;
+
+function ReasonForRequestEditable(Service: string): string;
+begin
+  Result := sCallV('ORQQCN EDIT DEFAULT REASON', [Service]);
+end;
+
+function GetServicePrerequisites(Service: string): TStrings;
+begin
+  CallV('ORQQCN2 GET PREREQUISITE',[Service, Patient.DFN]) ;
+  Result := RPCBrokerV.Results;
+end;
+
+function GetNewDialog(OrderType: string): string;
+{ get dialog for new consults}
+begin
+  Result := sCallV('ORWDCN32 NEWDLG', [OrderType, Encounter.Location]);
+end;
+
+function GetServiceIEN(ORIEN: string): string;
+begin
+  Result := sCallV('ORQQCN GET SERVICE IEN', [ORIEN]);
+end;
+
+procedure GetProvDxMode(var ProvDx: TProvisionalDiagnosis; SvcIEN: string);
+var
+  x: string;
+begin
+  x := sCallV('ORQQCN PROVDX', [SvcIEN]);
+  ProvDx.Reqd := Piece(x, U, 1);
+  ProvDx.PromptMode := Piece(x, U, 2);
+end;
+
+function GetConsultOrderIEN(ConsultIEN: integer): string;
+begin
+  Result := sCallV('ORQQCN GET ORDER NUMBER', [ConsultIEN]); 
+end;
+
+function GetSavedCPFields(NoteIEN: integer): TEditNoteRec;
+var
+  x: string;
+  AnEditRec: TEditNoteRec;
+begin
+  x := sCallV('ORWTIU GET SAVED CP FIELDS', [NoteIEN]);
+  with AnEditRec do
+    begin
+      Author := StrToInt64Def(Piece(x, U, 1), 0);
+      Cosigner := StrToInt64Def(Piece(x, U, 2), 0);
+      ClinProcSummCode := StrToIntDef(Piece(x, U, 3), 0);
+      ClinProcDateTime := StrToFMDateTime(Piece(x, U, 4));
+      Title := StrToIntDef(Piece(x, U, 5), 0);
+      DateTime := StrToFloatDef(Piece(x, U, 6), 0);
+    end;
+  Result := AnEditRec;
+end;
+
+initialization
+  uLastOrderedIEN := 0;
+  uLastOrderMsg := '';
+  uConsultsClass := 0;
+  uClinProcClass := 0;
+
+finalization
+  if uConsultTitles <> nil then uConsultTitles.Free;
+  if uClinProcTitles <> nil then uClinProcTitles.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/uConsults.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/uConsults.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Consults/uConsults.pas	(revision 1676)
@@ -0,0 +1,458 @@
+unit uConsults;
+
+interface
+
+uses
+    SysUtils, Windows, Messages, Controls, Classes, StdCtrls, ORfn, uTIU, ORCtrls;
+
+type
+
+  TConsultRequest = record              {file 123}  {Order Dialog}
+    IEN: integer ;                          {.001}
+    EntryDate: TFMDateTime ;                { .01}
+    ORFileNumber: integer ;                 { .03}
+    PatientLocation: integer ;              { .04}
+    OrderingFacility: integer ;             { .05}
+    ForeignConsultFileNum: integer ;        { .06}
+    ToService: integer ;                    {   1}       { * }
+    From: integer ;                         {   2}
+    RequestDate: TFMDateTime ;              {   3}
+    ConsultProcedure: string ;              {   4}
+    Urgency: integer ;                      {   5}       { * }
+    PlaceOfConsult: integer ;               {   6}       { * }
+    Attention: int64   ;                    {   7}       { * }
+    ORStatus: integer ;                     {   8}
+    LastAction: integer ;                   {   9}
+    SendingProvider: int64 ;              {  10}
+    SendingProviderName: string ;
+    Result: string ;                        {  11}
+    ModeOfEntry: string ;                   {  12}
+    RequestType: integer ;                  {  13}
+    InOut: string ;                         {  14}       { * }
+    Findings: string ;                      {  15}
+    TIUResultNarrative: integer ;           {  16}
+    TIUDocuments: TStrings ;                {from '50' node of file 123}
+    MedResults:  TStrings;                  {from '50' node of file 123}
+    RequestReason: TStringList ;            {  20}       { * }
+    ProvDiagnosis: string ;                 {  30}       { * }
+    ProvDxCode: string;                     {  30.1}
+    RequestProcessingActivity: TStringList; {  40}
+    //EarliestDate: TFMDateTime;
+    //LatestDate: TFMDateTime;
+  end ;
+
+  TEditResubmitRec = record
+    Changed: boolean;
+    IEN: integer;
+    OrderableItem: integer;
+    RequestType: string;
+    ToService: integer;
+    ToServiceName: string;
+    ConsultProc: string;
+    ConsultProcName: string;
+    Urgency: integer;
+    UrgencyName: string;
+    //EarliestDate: TFMDateTime;
+    //LatestDate: TFMDateTime;
+    Place: string;
+    PlaceName: string;
+    Attention: int64;
+    AttnName: string;
+    InpOutp: string;
+    RequestReason: TStringList;
+    ProvDiagnosis: string;
+    ProvDxCode: string;
+    ProvDxCodeInactive:  boolean;
+    DenyComments: TStringList;
+    OtherComments: TStringList;
+    NewComments: TStringList;
+  end;
+
+  TSelectContext = record
+    Changed: Boolean;
+    BeginDate: string;
+    EndDate: string;
+    Ascending: Boolean;
+    Service: string;
+    ServiceName: string;
+    ConsultUser: Boolean ;
+    Status: string;
+    StatusName: string;
+    GroupBy: string;
+  end ;
+
+  TMenuAccessRec = record
+    UserLevel: integer;
+    AllowMedResulting: Boolean;
+    AllowMedDissociate: Boolean;
+    AllowResubmit: Boolean;
+    ClinProcFlag: integer;
+    IsClinicalProcedure: Boolean;
+  end;
+
+  TProvisionalDiagnosis = record
+    Code: string;
+    Text: string;
+    CodeInactive: boolean;
+    Reqd: string;
+    PromptMode: string;
+  end;
+
+  TConsultTitles = class
+    DfltTitle: Integer;
+    DfltTitleName: string;
+    ShortList: TStringList;
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+  TClinProcTitles = class
+    DfltTitle: Integer;
+    DfltTitleName: string;
+    ShortList: TStringList;
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+function  MakeConsultListItem(InputString: string):string;
+function  MakeConsultListDisplayText(InputString: string): string;
+function  MakeConsultNoteDisplayText(RawText: string): string;
+procedure BuildServiceTree(Tree: TORTreeView; SvcList: TStrings; const Parent: string; Node: TORTreeNode);
+procedure CreateListItemsForConsultTree(Dest, Source: TStrings; Context: integer; GroupBy: string;
+          Ascending: Boolean);
+procedure BuildConsultsTree(Tree: TORTreeView; tmpList: TStrings; const Parent: string; Node: TORTreeNode;
+           CurrentContext: TSelectContext);
+procedure SetNodeImage(Node: TORTreeNode; CurrentContext: TSelectContext);
+
+const
+   CN_SVC_LIST_DISP     = 0 ;
+   CN_SVC_LIST_FWD      = 1 ;
+   CN_SVC_LIST_ORD      = 1 ;
+   CSLT_PTR             = ';99CON';
+   PROC_PTR             = ';99PRC';
+
+   {MenuAccessRec.UserLevel}
+   UL_NONE              = 0;
+   UL_REVIEW            = 1;
+   UL_UPDATE            = 2;
+   UL_ADMIN             = 3;
+   UL_UPDATE_AND_ADMIN  = 4;
+   UL_UNRESTRICTED      = 5;
+
+   {Clinical Procedure statuses}
+   CP_NOT_CLINPROC      = 0;
+   CP_NO_INSTRUMENT     = 1;
+   CP_INSTR_NO_STUB     = 2;
+   CP_INSTR_INCOMPLETE  = 3;
+   CP_INSTR_COMPLETE    = 4;
+
+   CN_NEW_CSLT_NOTE     = '-30';
+   CN_NEW_CP_NOTE       = '-20';
+
+var
+   ConsultRec: TConsultRequest ;
+
+implementation
+
+uses
+  uConst;
+
+constructor TConsultTitles.Create;
+{ creates an object to store Consult titles so only obtained from server once }
+begin
+  inherited Create;
+  ShortList := TStringList.Create;
+end;
+
+destructor TConsultTitles.Destroy;
+{ frees the lists that were used to store the Consult titles }
+begin
+  ShortList.Free;
+  inherited Destroy;
+end;
+
+constructor TClinProcTitles.Create;
+{ creates an object to store ClinProc titles so only obtained from server once }
+begin
+  inherited Create;
+  ShortList := TStringList.Create;
+end;
+
+destructor TClinProcTitles.Destroy;
+{ frees the lists that were used to store the ClinProc titles }
+begin
+  ShortList.Free;
+  inherited Destroy;
+end;
+
+{============================================================================================
+1016^Jun 04,98  ^(dc)^ COLONOSCOPY GASTROENTEROLOGY Proc^Consult #: 1016^15814^^P
+1033^Jun 10,98  ^(c)^ GASTROENTEROLOGY Cons^Consult #: 1033^15881^^C
+=============================================================================================
+function call [GetConsultsList] returns the following string '^' pieces:
+===============================================================
+      1 -  Consult IEN
+      2 -  Consult Date
+      3 -  (Status)
+      4 -  Consult/Procedure Display Text
+      5 -  Consult #: ###
+      6 -  Order IFN
+      7 -  ''  (used for HasChildren in tree)
+      8 -  Parent in tree
+      9 -  'Consult', 'Procedure', or 'Clinical Procedure'
+     10 -  Service Name
+     11 -  FMDate of piece 2
+     12 -  'C' or 'P' or 'M' or 'I' or 'R'
+===============================================================}
+
+function MakeConsultListItem(InputString: string): string;
+var
+  x: string;
+begin
+  x := InputString;
+  if Piece(x, U, 6) = '' then SetPiece(x, U, 6, ' ');
+  if Piece(x, U, 9) <> '' then
+    case Piece(x, U, 9)[1] of
+      'C':  SetPiece(x, U, 10, 'Consult');
+      'P':  SetPiece(x, U, 10, 'Procedure');
+      'M':  SetPiece(x, U, 10, 'Procedure');  //'Clinical Procedure');
+      'I':  SetPiece(x, U, 10, 'Consult - Interfacility');
+      'R':  SetPiece(x, U, 10, 'Procedure - Interfacility');
+    end
+  else
+    begin
+      if Piece(x, U, 5) = 'Consult' then SetPiece(x, U, 10, 'Consult')
+      else SetPiece(x, U, 10, 'Procedure');
+    end;
+  x := Piece(x, U, 1) + U + FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 2))) + '  ' + U + '(' + Piece(x, U, 3) + ')' + U + Piece(x, U, 6) + Piece(x, U, 7) + U +
+       'Consult #: ' + Piece(x, U, 1) + U + Piece(x, U, 8) + U + U + U + Piece(x, U, 10) + U + Piece(x, U, 4)+ U +
+       Piece(x, U, 2) + U + Piece(x, U, 9);
+  Result := x;
+end;
+
+function MakeConsultListDisplayText(InputString: string): string;
+var
+  x: string;
+begin
+  x := InputString;
+  x := Piece(x, U, 2) + ' ' + Piece(x, U, 3) + ' ' + Piece(x, U, 4) + ' ' + Piece(x, U, 5);
+  Result := x;
+end;
+
+function MakeConsultNoteDisplayText(RawText: string): string;
+var
+  x: string;
+begin
+  x := RawText;
+  if Piece(x, U, 1)[1] in ['A', 'N', 'E'] then
+    x := Piece(x, U, 2)
+  else
+    begin
+      x := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3))) + '  ' + Piece(x, U, 2) +
+           ' (#' + Piece(Piece(x, U, 1), ';', 1) + ')';
+      if not (Copy(Piece(Piece(RawText, U, 1), ';', 2), 1, 4) = 'MCAR') then
+        x := x + ', ' + Piece(RawText, U, 6) + ', ' + Piece(Piece(RawText, U, 5), ';', 2);
+    end;
+  Result := x;
+end;
+
+procedure BuildServiceTree(Tree: TORTreeView; SvcList: TStrings; const Parent: string; Node: TORTreeNode);
+var
+  MyID, MyParent, Name, temp: string;
+  i: Integer;
+  ChildNode, tmpNode: TORTreeNode;
+  HasChildren: Boolean;
+begin
+  Tree.Items.BeginUpdate;
+  with SvcList do for i := 0 to Count - 1 do
+    begin
+      if Piece(Strings[i], U, 5) = 'S' then Continue;  // V19.4 {rv}
+      //if Piece(Strings[i], U, 6) = 'S' then Continue;
+      MyParent := Piece(Strings[i], U, 3);
+      if (MyParent = Parent) then
+        begin
+          MyID := Piece(Strings[i], U, 1);
+          Name := Piece(Strings[i], U, 2);
+          temp  := Strings[i];
+          tmpNode := nil;
+          HasChildren := Piece(Strings[i], U, 4) = '+';
+          if Node <> nil then if Node.HasChildren then
+            tmpNode := Tree.FindPieceNode(MyID, 1, U, Node);
+          if (tmpNode <> nil) and tmpNode.HasAsParent(Node) then
+            Continue
+          else
+            begin
+              ChildNode := TORTreeNode(Tree.Items.AddChild(Node, Name));
+              ChildNode.StringData := temp;
+              if HasChildren then BuildServiceTree(Tree, SvcList, MyID, ChildNode);
+            end;
+        end;
+    end;
+  Tree.Items.EndUpdate;
+end;
+
+procedure CreateListItemsForConsultTree(Dest, Source: TStrings; Context: integer; GroupBy: string;
+          Ascending: Boolean);
+var
+  i: Integer;
+  x, x3, MyParent, MyService, MyStatus, MyType, StatusText: string;
+  AList, SrcList: TStringList;
+begin
+  AList := TStringList.Create;
+  SrcList := TStringList.Create;
+  try
+    FastAssign(Source, SrcList);
+    with SrcList do
+      begin
+        if (Count = 1) and (Piece(Strings[0], U, 1) = '-1') then
+          begin
+            Dest.Insert(0, IntToStr(Context) + '^^^' + 'No Matching Consults Found' + '^^^^0^^^^');
+            Exit;
+          end;
+        for i := 0 to Count - 1 do
+          begin
+            x := Strings[i];
+            MyType   := Piece(x, U, 9);
+            if Context = 0 then Context := CC_ALL;
+            SetPiece(x, U, 8, IntToStr(Context));
+            MyParent := Piece(x, U, 8);
+            MyService  := Piece(x, U, 10);
+            MyStatus   := Piece(x, U, 3);
+            if Length(Trim(MyService)) = 0 then
+              begin
+                MyService := '** No Service **';
+                SetPiece(x, U, 10, MyService);
+              end;
+            if Length(Trim(MyStatus)) = 0 then
+              begin
+                MyStatus := '** No Status **';
+                SetPiece(x, U, 3, MyStatus);
+              end;
+            if GroupBy <> '' then case GroupBy[1] of
+              'S':  begin
+                      SetPiece(x, U, 8, MyParent + MyStatus);
+                      if MyStatus = '(a)' then StatusText := 'Active'
+                      else if MyStatus = '(p)' then StatusText := 'Pending'
+                      else if MyStatus = '(pr)' then StatusText := 'Partial Results'
+                      else if MyStatus = '(s)' then StatusText := 'Scheduled'
+                      else if MyStatus = '(x)' then StatusText := 'Cancelled'
+                      else if MyStatus = '(dc)' then StatusText := 'Discontinued'
+                      else if MyStatus = '(c)' then StatusText := 'Completed'
+                      else StatusText := 'Other';
+                      x3 := MyStatus + U + StatusText + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;
+              'V':  begin
+                      SetPiece(x, U, 8, MyParent + MyService);
+                      x3 := MyService + U + MixedCase(MyService) + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;
+              'T':  begin
+                      SetPiece(x, U, 8, MyParent + MyType);
+                      x3 := MyType + U + MixedCase(MyType) + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;
+            end;
+            Dest.Add(x);
+          end; {for}
+        SortByPiece(TStringList(Dest), U, 11);
+        if not Ascending then InvertStringList(TStringList(Dest));
+        Dest.Insert(0, IntToStr(Context) + '^^^' + CC_TV_TEXT[Context] + '^^^+^0^^^^');
+        Alist.Sort;
+        InvertStringList(AList);
+        for i := 0 to AList.Count-1 do
+          Dest.Insert(0, IntToStr(Context) + Piece(AList[i], U, 1) + '^^^' + Piece(AList[i], U, 2) + '^^^+^' + Piece(AList[i], U, 3) + '^^^^');
+      end;
+  finally
+    AList.Free;
+    SrcList.Free;
+  end;
+end;
+
+procedure BuildConsultsTree(Tree: TORTreeView; tmpList: TStrings; const Parent: string; Node: TORTreeNode;
+           CurrentContext: TSelectContext);
+var
+  MyID, MyParent, Name, temp: string;
+  i: Integer;
+  ChildNode, tmpNode: TORTreeNode;
+  HasChildren: Boolean;
+begin
+  Tree.Items.BeginUpdate;
+  with tmpList do for i := 0 to Count - 1 do
+    begin
+      MyParent := Piece(Strings[i], U, 8);
+      if (MyParent = Parent) then
+        begin
+          MyID := Piece(Strings[i], U, 1);
+          Name := MakeConsultListDisplayText(Strings[i]);
+          temp  := Strings[i];
+          tmpNode := nil;
+          HasChildren := Piece(Strings[i], U, 7) = '+';
+          if Node <> nil then if Node.HasChildren then
+            tmpNode := Tree.FindPieceNode(MyID, 1, U, Node);
+          if (tmpNode <> nil) and tmpNode.HasAsParent(Node) then
+            Continue
+          else
+            begin
+              ChildNode := TORTreeNode(Tree.Items.AddChild(Node, Name));
+              ChildNode.StringData := temp;
+              SetNodeImage(ChildNode, CurrentContext);
+              if HasChildren then
+                  BuildConsultsTree(Tree, tmpList, MyID, ChildNode, CurrentContext);
+            end;
+        end;
+    end;
+  Tree.Items.EndUpdate;
+end;
+
+procedure SetNodeImage(Node: TORTreeNode; CurrentContext: TSelectContext);
+begin
+  with Node do
+    begin
+      if Piece(Stringdata, U, 8) = '0' then
+        begin
+          ImageIndex    := IMG_GMRC_TOP_LEVEL;
+          SelectedIndex := IMG_GMRC_TOP_LEVEL;
+          if (Piece(StringData, U, 4) = 'No Matching Consults Found') then exit;
+          if Piece(Stringdata, U, 1) <> '-1' then
+            with CurrentContext, Node do
+              if GroupBy <> '' then case GroupBy[1] of
+                'V': Text := CC_TV_TEXT[StrToInt(Piece(Stringdata, U, 1))] + ' by Service';
+                'S': Text := CC_TV_TEXT[StrToInt(Piece(Stringdata, U, 1))] + ' by Status';
+                'T': Text := CC_TV_TEXT[StrToInt(Piece(Stringdata, U, 1))] + ' by Type';
+              end;
+        end
+      else
+        begin
+          if Piece(Stringdata, U, 7) <> '' then
+            case Piece(Stringdata, U, 7)[1] of
+              '+': begin
+                     ImageIndex    := IMG_GMRC_GROUP_SHUT;
+                     SelectedIndex := IMG_GMRC_GROUP_OPEN;
+                   end;
+            end
+          else
+            begin
+              if Piece(StringData, U, 12) <> '' then
+                case Piece(StringData, U, 12)[1] of
+                  'C': ImageIndex := IMG_GMRC_CONSULT;
+                  'P': ImageIndex := IMG_GMRC_ALL_PROC;  //IMG_GMRC_PROC;
+                  'M': ImageIndex := IMG_GMRC_ALL_PROC;  //IMG_GMRC_CLINPROC;
+                  'I': ImageIndex := IMG_GMRC_IFC_CONSULT;
+                  'R': ImageIndex := IMG_GMRC_IFC_PROC;
+                end
+              else
+                begin
+                  if Piece(StringData, U, 9) = 'Procedure' then
+                    ImageIndex := IMG_GMRC_ALL_PROC
+                  else
+                    ImageIndex := IMG_GMRC_CONSULT;
+                end;
+              SelectedIndex := ImageIndex;
+            end;
+        end;
+      StateIndex := IMG_NONE;
+    end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fDiagnoses.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fDiagnoses.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fDiagnoses.dfm	(revision 1676)
@@ -0,0 +1,159 @@
+inherited frmDiagnoses: TfrmDiagnoses
+  Left = 304
+  Top = 169
+  Caption = 'Encounter Diagnoses'
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited lblSection: TLabel
+    Width = 89
+    Caption = 'Diagnoses Section'
+    ExplicitWidth = 89
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 7
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 8
+  end
+  inherited pnlGrid: TPanel
+    Width = 523
+    TabOrder = 1
+    ExplicitWidth = 523
+    inherited lbGrid: TORListBox
+      Tag = 20
+      Width = 523
+      Pieces = '1,2,3'
+      ExplicitWidth = 523
+    end
+    inherited hcGrid: THeaderControl
+      Width = 523
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 60
+          Text = 'Add to PL'
+          Width = 60
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 65
+          Text = 'Primary'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 110
+          Text = 'Selected Diagnoses'
+          Width = 110
+        end>
+      ExplicitWidth = 523
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    TabOrder = 3
+  end
+  object cmdDiagPrimary: TButton [8]
+    Left = 536
+    Top = 306
+    Width = 75
+    Height = 21
+    Caption = 'Primary'
+    Enabled = False
+    TabOrder = 5
+    OnClick = cmdDiagPrimaryClick
+  end
+  object ckbDiagProb: TCheckBox [9]
+    Left = 535
+    Top = 258
+    Width = 76
+    Height = 38
+    Caption = 'Add to Problem list'
+    TabOrder = 4
+    WordWrap = True
+    OnClick = ckbDiagProbClicked
+  end
+  inherited btnRemove: TButton
+    TabOrder = 6
+  end
+  inherited btnSelectAll: TButton
+    Left = 454
+    TabOrder = 2
+    TabStop = True
+    ExplicitLeft = 454
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited lbxSection: TORListBox
+      Tag = 20
+      Height = 196
+      IntegralHeight = True
+      Pieces = '2,3,4,5'
+      ExplicitHeight = 196
+    end
+    inherited pnlLeft: TPanel
+      inherited lbSection: TORListBox
+        Tag = 20
+        TabOrder = 0
+      end
+      inherited btnOther: TButton
+        Tag = 12
+        Caption = 'Other Diagnosis...'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdDiagPrimary'
+        'Status = stsDefault')
+      (
+        'Component = ckbDiagProb'
+        'Status = stsDefault')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmDiagnoses'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fDiagnoses.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fDiagnoses.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fDiagnoses.pas	(revision 1676)
@@ -0,0 +1,261 @@
+unit fDiagnoses;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, CheckLst, ORCtrls, ORNet, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  ComCtrls, fPCEBaseMain, UBAGlobals, UBAConst, UCore, VA508AccessibilityManager;
+
+type
+  TfrmDiagnoses = class(TfrmPCEBaseMain)
+    cmdDiagPrimary: TButton;
+    ckbDiagProb: TCheckBox;
+    procedure cmdDiagPrimaryClick(Sender: TObject);
+    procedure ckbDiagProbClicked(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure FormResize(Sender: TObject); override;
+    procedure lbxSectionClickCheck(Sender: TObject; Index: Integer);
+    procedure btnOKClick(Sender: TObject);  override;
+    procedure lbSectionClick(Sender: TObject);
+    procedure GetEncounterDiagnoses;
+    procedure lbSectionDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+  private
+    procedure EnsurePrimaryDiag;
+
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+  public
+  end;
+
+const
+  TX_INACTIVE_CODE = 'The "#" character next to the code for this problem indicates that the problem' + #13#10 +
+                     'references an ICD code that is not active as of the date of this encounter.' + #13#10 +
+                     'Before you can select this problem, you must update the ICD code it contains' + #13#10 +
+                     'via the Problems tab.';
+  TC_INACTIVE_CODE = 'Problem Contains Inactive Code';
+
+var
+  frmDiagnoses: TfrmDiagnoses;
+  dxList : TStringList;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, uConst, UBACore, VA508AccessibilityRouter;
+
+procedure TfrmDiagnoses.EnsurePrimaryDiag;
+var
+  i: Integer;
+  Primary: Boolean;
+
+begin
+  with lbGrid do
+  begin
+    Primary := False;
+    for i := 0 to Items.Count - 1 do
+      if TPCEDiag(Items.Objects[i]).Primary then
+        Primary := True;
+
+    if not Primary and (Items.Count > 0) then
+    begin
+      GridIndex := 0;
+      TPCEDiag(Items.Objects[0]).Primary := True;
+      GridChanged;
+    end;
+  end;
+end;
+
+procedure TfrmDiagnoses.cmdDiagPrimaryClick(Sender: TObject);
+var
+  gi, i: Integer;
+  ADiagnosis: TPCEDiag;
+
+begin
+  inherited;
+  gi := GridIndex;
+  with lbGrid do for i := 0 to Items.Count - 1 do
+  begin
+    ADiagnosis := TPCEDiag(Items.Objects[i]);
+    ADiagnosis.Primary := (gi = i);
+  end;
+  GridChanged;
+end;
+
+procedure TfrmDiagnoses.ckbDiagProbClicked(Sender: TObject);
+var
+  i: integer;
+const
+  PL_ITEMS = 'Problem List Items';
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEDiag(lbGrid.Items.Objects[i]).AddProb := (ckbDiagProb.Checked) and
+                                                     (TPCEDiag(lbGrid.Items.Objects[i]).Category <> PL_ITEMS);
+    GridChanged;
+  end;
+end;
+
+procedure TfrmDiagnoses.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_DiagNm;
+  FPCEListCodesProc := ListDiagnosisCodes;
+  FPCEItemClass := TPCEDiag;
+  FPCECode := 'POV';
+  FSectionTabCount := 3;
+  FormResize(Self);
+end;
+
+procedure TfrmDiagnoses.btnRemoveClick(Sender: TObject);
+begin
+  inherited;
+  EnsurePrimaryDiag;
+end;
+
+procedure TfrmDiagnoses.UpdateNewItemStr(var x: string);
+begin
+  inherited;
+  if lbGrid.Items.Count = 0 then
+    x := x + U + '1'
+  else
+    x := x + U + '0';
+end;
+
+procedure TfrmDiagnoses.UpdateControls;
+var
+  i, j, k, PLItemCount: integer;
+  OK: boolean;
+const
+  PL_ITEMS = 'Problem List Items';
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      cmdDiagPrimary.Enabled := (lbGrid.SelCount = 1);
+      OK := (lbGrid.SelCount > 0);
+      PLItemCount := 0;
+      if OK then
+        for k := 0 to lbGrid.Items.Count - 1 do
+          if (lbGrid.Selected[k]) and (TPCEDiag(lbGrid.Items.Objects[k]).Category = PL_ITEMS) then
+            PLItemCount := PLItemCount + 1;
+      OK := OK and (PLItemCount < lbGrid.SelCount);
+      ckbDiagProb.Enabled := OK;
+      if(OK) then
+      begin
+        j := 0;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if(lbGrid.Selected[i]) and (TPCEDiag(lbGrid.Items.Objects[i]).AddProb) then
+            inc(j);
+        end;
+        if(j = 0) then
+          ckbDiagProb.Checked := FALSE
+        else
+        if(j < lbGrid.SelCount) then
+          ckbDiagProb.State := cbGrayed
+        else
+          ckbDiagProb.Checked := TRUE;
+      end
+      else
+        ckbDiagProb.Checked := FALSE;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+procedure TfrmDiagnoses.FormResize(Sender: TObject);
+begin
+  inherited;
+  if lbxSection.width = 0 then Exit;
+  FSectionTabs[0] := -(lbxSection.width - LBCheckWidthSpace - (8*MainFontWidth) - ScrollBarWidth);
+  FSectionTabs[1] := -FSectionTabs[0]+2;
+  FSectionTabs[2] := -FSectionTabs[0]+4;
+  UpdateTabPos;
+end;
+
+procedure TfrmDiagnoses.lbxSectionClickCheck(Sender: TObject;
+  Index: Integer);
+begin
+  if not FUpdatingGrid then
+    if (lbxSection.Checked[Index]) and (Piece(lbxSection.Items[Index], U, 5) = '#') then
+      begin
+        InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+        lbxSection.Checked[Index] := False;
+        exit;
+      end;
+  inherited;
+  EnsurePrimaryDiag;
+end;
+
+procedure TfrmDiagnoses.btnOKClick(Sender: TObject);
+begin
+  inherited;
+  if  BILLING_AWARE then
+     GetEncounterDiagnoses;
+end;
+
+procedure TfrmDiagnoses.lbSectionClick(Sender: TObject);
+begin
+  inherited;
+//
+end;
+
+procedure TfrmDiagnoses.GetEncounterDiagnoses;
+var
+  i: integer;
+  dxCode, dxName: string;
+  ADiagnosis: TPCEItem;
+begin
+   inherited;
+  UBAGlobals.BAPCEDiagList.Clear;
+  with lbGrid do for i := 0 to Items.Count - 1 do
+  begin
+    ADiagnosis := TPCEDiag(Items.Objects[i]);
+    dxCode :=  ADiagnosis.Code;
+    dxName :=  ADiagnosis.Narrative;
+    if BAPCEDiagList.Count = 0 then
+       UBAGlobals.BAPCEDiagList.Add(U + DX_ENCOUNTER_LIST_TXT);
+    UBAGlobals.BAPCEDiagList.Add(dxCode + U + dxName);
+  end;
+end;
+
+
+procedure TfrmDiagnoses.lbSectionDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+begin
+  inherited;
+  if (control as TListbox).items[index] = DX_PROBLEM_LIST_TXT then
+     (Control as TListBox).Canvas.Font.Style := [fsBold]
+  else
+     if (control as Tlistbox).items[index] = DX_PERSONAL_LIST_TXT then
+        (Control as TListBox).Canvas.Font.Style := [fsBold]
+  else
+     if (control as Tlistbox).items[index] =  DX_TODAYS_DX_LIST_TXT  then
+        (Control as TListBox).Canvas.Font.Style := [fsBold]
+  else
+     if (control as Tlistbox).items[index] = DX_ENCOUNTER_LIST_TXT then
+        (Control as TListBox).Canvas.Font.Style := [fsBold]
+  else
+     (Control as TListBox).Canvas.Font.Style := [];
+
+  (Control as TListBox).Canvas.TextOut(Rect.Left+2, Rect.Top+1, (Control as
+              TListBox).Items[Index]); {display the text }
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmDiagnoses);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncVitals.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncVitals.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncVitals.dfm	(revision 1676)
@@ -0,0 +1,613 @@
+inherited frmEncVitals: TfrmEncVitals
+  Left = 353
+  Top = 210
+  Caption = 'Vitals'
+  OnActivate = FormActivate
+  OnShow = FormShow
+  ExplicitWidth = 632
+  ExplicitHeight = 427
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lvVitals: TCaptionListView [0]
+    Left = 0
+    Top = 0
+    Width = 624
+    Height = 368
+    Align = alClient
+    Columns = <>
+    Constraints.MinHeight = 50
+    HideSelection = False
+    MultiSelect = True
+    ReadOnly = True
+    RowSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    ViewStyle = vsReport
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 368
+    Width = 624
+    Height = 32
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 4
+    object btnEnterVitals: TButton
+      Left = 8
+      Top = 6
+      Width = 75
+      Height = 21
+      Caption = 'Enter Vitals'
+      TabOrder = 0
+      OnClick = btnEnterVitalsClick
+    end
+    object btnOKkludge: TButton
+      Left = 434
+      Top = 6
+      Width = 75
+      Height = 21
+      Caption = 'OK'
+      TabOrder = 1
+      OnClick = btnOKClick
+    end
+    object btnCancelkludge: TButton
+      Left = 522
+      Top = 6
+      Width = 75
+      Height = 21
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = btnCancelClick
+    end
+  end
+  inherited btnOK: TBitBtn
+    Left = 208
+    Top = 374
+    Caption = 'OK No Show'
+    TabOrder = 2
+    Visible = False
+    ExplicitLeft = 208
+    ExplicitTop = 374
+  end
+  inherited btnCancel: TBitBtn
+    Left = 289
+    Top = 374
+    Caption = 'Cancel No Show'
+    TabOrder = 3
+    Visible = False
+    ExplicitLeft = 289
+    ExplicitTop = 374
+  end
+  object pnlmain: TPanel [4]
+    Left = 28
+    Top = 24
+    Width = 569
+    Height = 217
+    TabOrder = 0
+    Visible = False
+    object lblVitPointer: TOROffsetLabel
+      Left = 506
+      Top = 48
+      Width = 17
+      Height = 15
+      Caption = '<--'
+      Color = clBtnFace
+      HorzOffset = 5
+      ParentColor = False
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblDate: TStaticText
+      Left = 56
+      Top = 23
+      Width = 31
+      Height = 17
+      Caption = 'Date'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 1
+    end
+    object lblDateBP: TStaticText
+      Tag = 3
+      Left = 50
+      Top = 122
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 17
+    end
+    object lblDateTemp: TStaticText
+      Left = 50
+      Top = 52
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 4
+    end
+    object lblDateResp: TStaticText
+      Tag = 2
+      Left = 50
+      Top = 98
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 13
+    end
+    object lblDatePulse: TStaticText
+      Tag = 1
+      Left = 50
+      Top = 75
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 9
+    end
+    object lblDateHeight: TStaticText
+      Tag = 4
+      Left = 50
+      Top = 145
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 21
+    end
+    object lblDateWeight: TStaticText
+      Tag = 5
+      Left = 50
+      Top = 169
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 26
+    end
+    object lblLstMeas: TStaticText
+      Left = 180
+      Top = 23
+      Width = 80
+      Height = 17
+      Caption = 'Last Measure'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 2
+    end
+    object lbllastBP: TStaticText
+      Tag = 3
+      Left = 188
+      Top = 122
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 18
+    end
+    object lblLastTemp: TStaticText
+      Left = 188
+      Top = 52
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 5
+    end
+    object lblLastResp: TStaticText
+      Tag = 2
+      Left = 188
+      Top = 98
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 14
+    end
+    object lblLastPulse: TStaticText
+      Tag = 1
+      Left = 188
+      Top = 75
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 10
+    end
+    object lblLastHeight: TStaticText
+      Tag = 4
+      Left = 188
+      Top = 145
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 22
+    end
+    object lblLastWeight: TStaticText
+      Tag = 5
+      Left = 188
+      Top = 169
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 27
+    end
+    object lblVital: TStaticText
+      Left = 344
+      Top = 23
+      Width = 29
+      Height = 17
+      Caption = 'Vital'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 3
+    end
+    object lblVitBP: TStaticText
+      Left = 344
+      Top = 122
+      Width = 23
+      Height = 17
+      Caption = 'B/P'
+      TabOrder = 19
+    end
+    object lnlVitTemp: TStaticText
+      Left = 344
+      Top = 52
+      Width = 31
+      Height = 17
+      Caption = 'Temp'
+      TabOrder = 6
+    end
+    object lblVitResp: TStaticText
+      Left = 344
+      Top = 98
+      Width = 29
+      Height = 17
+      Caption = 'Resp'
+      TabOrder = 15
+    end
+    object lblVitPulse: TStaticText
+      Left = 344
+      Top = 75
+      Width = 30
+      Height = 17
+      Caption = 'Pulse'
+      TabOrder = 11
+    end
+    object lblVitHeight: TStaticText
+      Left = 344
+      Top = 145
+      Width = 35
+      Height = 17
+      Caption = 'Height'
+      TabOrder = 23
+    end
+    object lblVitWeight: TStaticText
+      Left = 344
+      Top = 169
+      Width = 38
+      Height = 17
+      Caption = 'Weight'
+      TabOrder = 28
+    end
+    object lblVitPain: TStaticText
+      Left = 344
+      Top = 193
+      Width = 55
+      Height = 17
+      Caption = 'Pain Scale'
+      TabOrder = 33
+    end
+    object lblLastPain: TStaticText
+      Tag = 5
+      Left = 188
+      Top = 193
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 32
+    end
+    object lblDatePain: TStaticText
+      Tag = 5
+      Left = 50
+      Top = 193
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 31
+    end
+    object txtMeasBP: TCaptionEdit
+      Tag = 1
+      Left = 406
+      Top = 119
+      Width = 100
+      Height = 21
+      TabOrder = 20
+      OnEnter = SetVitPointer
+      OnExit = txtMeasBPExit
+      Caption = 'Blood Pressure'
+    end
+    object cboTemp: TCaptionComboBox
+      Tag = 7
+      Left = 448
+      Top = 48
+      Width = 57
+      Height = 21
+      DropDownCount = 2
+      ItemHeight = 13
+      TabOrder = 8
+      OnChange = cboTempChange
+      OnEnter = SetVitPointer
+      OnExit = cboTempExit
+      Items.Strings = (
+        'F'
+        'C')
+      Caption = 'Temperature'
+    end
+    object txtMeasTemp: TCaptionEdit
+      Tag = 2
+      Left = 406
+      Top = 48
+      Width = 43
+      Height = 21
+      TabOrder = 7
+      OnEnter = SetVitPointer
+      OnExit = txtMeasTempExit
+      Caption = 'Temperature'
+    end
+    object txtMeasResp: TCaptionEdit
+      Tag = 3
+      Left = 406
+      Top = 95
+      Width = 100
+      Height = 21
+      TabOrder = 16
+      OnEnter = SetVitPointer
+      OnExit = txtMeasRespExit
+      Caption = 'Resp'
+    end
+    object cboHeight: TCaptionComboBox
+      Tag = 8
+      Left = 449
+      Top = 142
+      Width = 57
+      Height = 21
+      ItemHeight = 13
+      TabOrder = 25
+      OnChange = cboHeightChange
+      OnEnter = SetVitPointer
+      OnExit = cboHeightExit
+      Items.Strings = (
+        'IN'
+        'CM')
+      Caption = 'Height'
+    end
+    object txtMeasWt: TCaptionEdit
+      Tag = 6
+      Left = 406
+      Top = 166
+      Width = 43
+      Height = 21
+      TabOrder = 29
+      OnEnter = SetVitPointer
+      OnExit = txtMeasWtExit
+      Caption = 'Weight'
+    end
+    object cboWeight: TCaptionComboBox
+      Tag = 9
+      Left = 449
+      Top = 166
+      Width = 57
+      Height = 21
+      ItemHeight = 13
+      TabOrder = 30
+      OnChange = cboWeightChange
+      OnEnter = SetVitPointer
+      OnExit = cboWeightExit
+      Items.Strings = (
+        'LB'
+        'KG')
+      Caption = 'Weight'
+    end
+    object txtMeasDate: TORDateBox
+      Tag = 11
+      Left = 406
+      Top = 16
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      OnEnter = SetVitPointer
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Current Vital Date '
+    end
+    object cboPain: TORComboBox
+      Tag = 10
+      Left = 406
+      Top = 190
+      Width = 102
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Pain Scale'
+      Color = clWindow
+      DropDownCount = 12
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '1,2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 34
+      TabStop = True
+      OnEnter = SetVitPointer
+      CharsNeedMatch = 1
+    end
+    object txtMeasPulse: TCaptionEdit
+      Tag = 4
+      Left = 406
+      Top = 72
+      Width = 100
+      Height = 21
+      TabOrder = 12
+      OnEnter = SetVitPointer
+      OnExit = txtMeasPulseExit
+      Caption = 'Pulse'
+    end
+    object txtMeasHt: TCaptionEdit
+      Tag = 5
+      Left = 406
+      Top = 142
+      Width = 43
+      Height = 21
+      TabOrder = 24
+      OnEnter = SetVitPointer
+      OnExit = txtMeasHtExit
+      Caption = 'Height'
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lvVitals'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnEnterVitals'
+        'Status = stsDefault')
+      (
+        'Component = btnOKkludge'
+        'Status = stsDefault')
+      (
+        'Component = btnCancelkludge'
+        'Status = stsDefault')
+      (
+        'Component = pnlmain'
+        'Status = stsDefault')
+      (
+        'Component = lblDate'
+        'Status = stsDefault')
+      (
+        'Component = lblDateBP'
+        'Status = stsDefault')
+      (
+        'Component = lblDateTemp'
+        'Status = stsDefault')
+      (
+        'Component = lblDateResp'
+        'Status = stsDefault')
+      (
+        'Component = lblDatePulse'
+        'Status = stsDefault')
+      (
+        'Component = lblDateHeight'
+        'Status = stsDefault')
+      (
+        'Component = lblDateWeight'
+        'Status = stsDefault')
+      (
+        'Component = lblLstMeas'
+        'Status = stsDefault')
+      (
+        'Component = lbllastBP'
+        'Status = stsDefault')
+      (
+        'Component = lblLastTemp'
+        'Status = stsDefault')
+      (
+        'Component = lblLastResp'
+        'Status = stsDefault')
+      (
+        'Component = lblLastPulse'
+        'Status = stsDefault')
+      (
+        'Component = lblLastHeight'
+        'Status = stsDefault')
+      (
+        'Component = lblLastWeight'
+        'Status = stsDefault')
+      (
+        'Component = lblVital'
+        'Status = stsDefault')
+      (
+        'Component = lblVitBP'
+        'Status = stsDefault')
+      (
+        'Component = lnlVitTemp'
+        'Status = stsDefault')
+      (
+        'Component = lblVitResp'
+        'Status = stsDefault')
+      (
+        'Component = lblVitPulse'
+        'Status = stsDefault')
+      (
+        'Component = lblVitHeight'
+        'Status = stsDefault')
+      (
+        'Component = lblVitWeight'
+        'Status = stsDefault')
+      (
+        'Component = lblVitPain'
+        'Status = stsDefault')
+      (
+        'Component = lblLastPain'
+        'Status = stsDefault')
+      (
+        'Component = lblDatePain'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasBP'
+        'Status = stsDefault')
+      (
+        'Component = cboTemp'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasTemp'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasResp'
+        'Status = stsDefault')
+      (
+        'Component = cboHeight'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasWt'
+        'Status = stsDefault')
+      (
+        'Component = cboWeight'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasDate'
+        'Status = stsDefault')
+      (
+        'Component = cboPain'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasPulse'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasHt'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmEncVitals'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncVitals.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncVitals.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncVitals.pas	(revision 1676)
@@ -0,0 +1,636 @@
+unit fEncVitals;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, ORDtTm, StdCtrls, ORCtrls, ExtCtrls, Buttons, fAutoSz, ORFn,
+  rvitals, ComCtrls, ORNet, uVitals, VAUtils, TRPCB, VA508AccessibilityManager;
+
+type
+  TfrmEncVitals = class(TfrmPCEBase)
+    pnlmain: TPanel;
+    lblDate: TStaticText;
+    lblDateBP: TStaticText;
+    lblDateTemp: TStaticText;
+    lblDateResp: TStaticText;
+    lblDatePulse: TStaticText;
+    lblDateHeight: TStaticText;
+    lblDateWeight: TStaticText;
+    lblLstMeas: TStaticText;
+    lbllastBP: TStaticText;
+    lblLastTemp: TStaticText;
+    lblLastResp: TStaticText;
+    lblLastPulse: TStaticText;
+    lblLastHeight: TStaticText;
+    lblLastWeight: TStaticText;
+    lblVitPointer: TOROffsetLabel;
+    lblVital: TStaticText;
+    lblVitBP: TStaticText;
+    lnlVitTemp: TStaticText;
+    lblVitResp: TStaticText;
+    lblVitPulse: TStaticText;
+    lblVitHeight: TStaticText;
+    lblVitWeight: TStaticText;
+    txtMeasBP: TCaptionEdit;
+    cboTemp: TCaptionComboBox;
+    txtMeasTemp: TCaptionEdit;
+    txtMeasResp: TCaptionEdit;
+    cboHeight: TCaptionComboBox;
+    txtMeasWt: TCaptionEdit;
+    cboWeight: TCaptionComboBox;
+    txtMeasDate: TORDateBox;
+    lblVitPain: TStaticText;
+    lblLastPain: TStaticText;
+    lblDatePain: TStaticText;
+    cboPain: TORComboBox;
+    txtMeasPulse: TCaptionEdit;
+    txtMeasHt: TCaptionEdit;
+    pnlBottom: TPanel;
+    lvVitals: TCaptionListView;
+    btnEnterVitals: TButton;
+    btnOKkludge: TButton;
+    btnCancelkludge: TButton;
+    procedure SetVitPointer(Sender: TObject);
+    procedure txtMeasBPExit(Sender: TObject);
+    procedure cboTempChange(Sender: TObject);
+    procedure cboTempExit(Sender: TObject);
+    procedure txtMeasRespExit(Sender: TObject);
+    procedure txtMeasPulseExit(Sender: TObject);
+    procedure cboHeightChange(Sender: TObject);
+    procedure cboHeightExit(Sender: TObject);
+    procedure cboWeightChange(Sender: TObject);
+    procedure cboWeightExit(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure lbllastClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    function HasData: Boolean;
+    function AssignVitals: boolean;
+    procedure cboPainChange(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure txtMeasTempExit(Sender: TObject);
+    procedure txtMeasHtExit(Sender: TObject);
+    procedure txtMeasWtExit(Sender: TObject);
+    procedure btnEnterVitalsClick(Sender: TObject); //vitals lite
+  private
+    FDataLoaded: boolean;
+    FChangingFocus: boolean;
+    UvitalNew: TStringList;
+    uVitalOld: TSTringList;
+    procedure InitVitalPanel;
+    procedure PopulateLastVital;
+    function GetVitHTRate: String;
+    procedure CheckVitalUnit;
+    procedure ChangeFocus(Control: TWinControl);
+    procedure ClearData;
+    procedure LoadVitalView(VitalsList : TStringList); //Vitals Lite
+    procedure LoadVitalsList;
+  public
+    function OK2SaveVitals: boolean;
+    property VitalNew: TStringList read uVitalNew;
+    property VitalOld: TStringList read uVitalOld;
+  end;
+
+var
+  frmEncVitals: TfrmEncVitals;
+//  uVitalLocation: Real;
+
+implementation
+
+{$R *.DFM}
+
+uses UCore, rCore, rPCE, fPCELex, fPCEOther, fVitals,fVisit, fFrame, fEncnt,
+     fEncounterFrame, uInit
+  //   , fGMV_InputTemp // Vitals Lite 2004-05-21
+     , VA508AccessibilityRouter;
+
+const
+  TX_VDATE_REQ1 = 'Entered vitals information can not be saved without a Date.' + CRLF +
+                  'Do you wish to use the encounter date of ';
+  TX_VDATE_REQ2 = '?';
+  TC_VDATE_REQ = 'Missing Vitals Entry Date';
+
+  TX_KILLDATA = 'Discard entered vitals information?';
+
+var
+  UcboVitChanging:      Boolean = False;
+
+function TfrmEncVitals.HasData: Boolean;
+begin
+  result := False;
+  if ((txtMeasBP.text <> '') or (txtMeasTemp.text <> '') or (txtMeasResp.text <> '') or
+    (txtMeasPulse.text <> '') or (txtMeasHt.text <> '') or (txtMeasWt.text <> '')) or
+    (cboPain.text <>'') then
+    result := True;
+end;
+
+procedure TfrmEncVitals.InitVitalPanel;
+begin
+  lblDate.font.Style := [fsBold];
+  lblDateBP.font.Style := [fsBold];
+  lblDateTemp.font.Style := [fsBold];
+  lblDateResp.font.Style := [fsBold];
+  lblDatePulse.font.Style := [fsBold];
+  lblDateHeight.font.Style := [fsBold];
+  lblDateWeight.font.Style := [fsBold];
+  lblDatePain.font.style := [fsBold];
+  lblLstMeas.font.Style := [fsBold];
+  lblLastBP.font.Style := [fsBold];
+  lblLastTemp.font.Style := [fsBold];
+  lblLastResp.font.Style := [fsBold];
+  lblLastPulse.font.Style := [fsBold];
+  lblLastHeight.font.Style := [fsBold];
+  lblLastWeight.font.Style := [fsBold];
+  lblLastPain.font.style := [fsBold];
+  lblVital.font.Style := [fsbold];
+
+  {Use this area to read parameter for units and set apropriately
+   after parameter is defined. in next version
+  }
+  UcboVitchanging := true; //prevents entering code in CheckVitalUnit
+
+  try
+    InitPainCombo(cboPain);
+    cboTemp.Text := cboTemp.Items[0];
+    cboHeight.Text := cboHeight.Items[0];
+    cboWeight.Text := cboWeight.Items[0];
+  finally
+    UcboVitchanging := False; //prevents entering code in CheckVitalUnit
+  end;
+
+  if txtMeasDate.Text = '' then
+    txtMeasDate.Text := FormatFMDateTime('mmm dd,yy@hh:nn', uEncPCEData.VisitDateTime);
+  if (UvitalOld.text = '') then
+    PopulateLastVital;
+end;
+
+
+procedure TfrmEncVitals.PopulateLastVital;
+var
+ i: integer;
+begin
+  GetLastVital(uVitalOld,Patient.DFN);
+  //populate labels from UVitalOld;
+  with UVitalOld do
+  for i := 0 to count-1 do
+  begin
+    if piece(strings[i],U,2) = 'T' then
+    begin
+      lblLastTemp.Caption := ConvertVitalData(piece(strings[i],U,3), vtTemp);
+      lblDateTemp.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'P' then
+    begin
+      lblLastPulse.Caption := piece(strings[i],U,3);
+      lblDatePulse.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'R' then
+    begin
+      lblLastResp.Caption := piece(strings[i],U,3);
+      lblDateResp.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'BP' then
+    begin
+      lblLastBP.Caption := piece(strings[i],U,3);
+      lblDateBP.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'HT' then
+    begin
+      lblLastHeight.Caption := ConvertVitalData(piece(strings[i],U,3), vtHeight);
+      lblDateHeight.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'WT' then
+    begin
+      lblLastWeight.Caption := ConvertVitalData(piece(strings[i],U,3), vtWeight);
+      lblDateWeight.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+
+    end;
+   if piece(strings[i],U,2) = 'PN' then
+    begin
+      lblLastPain.Caption := piece(strings[i],U,3);
+      lblDatePain.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+  end;
+end;
+
+
+procedure TfrmEncVitals.SetVitPointer(Sender: TObject);
+begin
+  if ActiveCtrl.tag in VitalTagSet then
+  begin
+    // move pointer to some height and five pixels to right of edit box.
+    lblVitPointer.Top := ActiveCtrl.Top+((ActiveCtrl.height ) div
+    (lblVitPointer.height ));
+
+    if ActiveCtrl = txtMeasTemp then
+      lblVitPointer.left := (cboTemp.left + cboTemp.Width)
+    else if ActiveCtrl = txtMeasHT then
+      lblVitPointer.left := (cboHeight.left + cboHeight.Width)
+    else if ActiveCtrl = txtMeasWT then
+      lblVitPointer.left := (cboWeight.left + cboWeight.Width)
+    else
+      lblVitPointer.left := (ActiveCtrl.left + ActiveCtrl.Width);
+
+  end;
+end;
+
+
+function TfrmEncVitals.GetVitHTRate: String;
+begin
+  Result := ConvertHeight2Inches(txtMeasHT.Text);
+  txtMeasHT.text := result;
+end;
+
+function TfrmEncVitals.AssignVitals: boolean;
+var
+  TmpDate: TFMDateTime;
+
+begin
+  TmpDate := txtMeasDate.FMDateTime;
+  Result := ValidVitalsDate(TmpDate);
+  if Result then
+    AssignVitals2List(uVitalNew, TmpDate, FloatToStr(PCERPCEncLocation),
+                       txtMeasBP.text, txtMeasTemp.text, cboTemp.text,
+                       txtMeasResp.text, txtMeasPulse.text, GetVitHTRate, cboHeight.text,
+                       txtMeasWT.text, cboWeight.text, cboPain.ItemID);
+end;
+
+procedure TfrmEncVitals.cboTempChange(Sender: TObject);
+begin
+  inherited;
+  if not (cbotemp.droppeddown) then
+    CheckVitalUnit;
+end;
+
+
+procedure TfrmEncVitals.CheckVitalUnit;
+var
+  len,i: integer;
+  found: boolean;
+  comp: string; //substring for comparing
+  temp: string;
+begin
+  if (UcboVitchanging = true) then exit;
+
+  UcboVitChanging := true;
+  try
+    with ActiveCtrl as TComboBox do
+    begin
+       found := False;
+       temp := text;
+       while (found = false) and (Length(temp) > 0) do
+       begin
+          i := 0;
+          while (found = false) and (length(items[i]) > 0) do
+          begin
+          len := length(temp);
+          //match text to string
+          comp := copy(items[i],0,len);
+          if (CompareText(comp,temp) = 0) then
+          begin
+             found := true;
+             Text := '';
+             text := items[i];
+
+          end;
+          inc(i);
+          end;
+          if (found = false) then Delete(temp,1,1);
+       end;
+       if (found = False) then
+       begin
+          Text := '';
+       end;
+    end;
+  finally
+    UcboVitChanging := false;
+  end;
+end;
+
+
+procedure TfrmEncVitals.cboHeightChange(Sender: TObject);
+begin
+  inherited;
+  CheckVitalUnit;
+end;
+
+procedure TfrmEncVitals.cboWeightChange(Sender: TObject);
+begin
+  inherited;
+  CheckVitalUnit;
+end;
+
+procedure TfrmEncVitals.txtMeasBPExit(Sender: TObject);
+begin
+  inherited;
+  if VitalInvalid(txtMeasBP) then
+    ChangeFocus(txtMeasBP);
+end;
+
+procedure TfrmEncVitals.cboTempExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveCtrl <> txtMeasTemp) then
+  begin
+    if VitalInvalid(txtMeasTemp, cboTemp) then
+      ChangeFocus(txtMeasTemp);
+  end;
+end;
+
+procedure TfrmEncVitals.txtMeasRespExit(Sender: TObject);
+begin
+  inherited;
+  if VitalInvalid(txtMeasResp) then
+    ChangeFocus(txtMeasResp);
+end;
+
+procedure TfrmEncVitals.txtMeasPulseExit(Sender: TObject);
+begin
+  inherited;
+  if VitalInvalid(txtMeasPulse) then
+    ChangeFocus(txtMeasPulse);
+end;
+
+procedure TfrmEncVitals.cboHeightExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveCtrl <> txtMeasHt) then
+  begin
+    if VitalInvalid(txtMeasHt, cboHeight, GetVitHTRate) then
+      ChangeFocus(txtMeasHt);
+  end;
+end;
+
+procedure TfrmEncVitals.cboWeightExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveCtrl <> txtMeasWt) then
+  begin
+    if VitalInvalid(txtMeasWt, cboWeight) then
+      ChangeFocus(txtMeasWt);
+  end;
+end;
+
+
+procedure TfrmEncVitals.FormCreate(Sender: TObject);
+begin
+
+  inherited;
+  FTabName := CT_VitNm;
+  //uVisitType := TPCEProc.create;
+  uVitalOld  := TStringList.create;
+  uVitalNew  := TStringList.create;
+
+end;
+
+
+
+procedure TfrmEncVitals.FormDestroy(Sender: TObject);
+
+begin
+  //uVisitType.Free;
+  uVitalOld.Free;
+  uVitalNew.free;
+
+{== Vitals Lite 2004-05-21 ===================================================}
+  if VitalsDLLHandle <> 0 then
+  begin
+    FreeLibrary(VitalsDLLHandle);
+    VitalsDLLHandle := 0;
+  end;
+{== Vitals Lite 2004-05-21 ===================================================}
+  inherited;
+end;
+
+
+
+
+procedure TfrmEncVitals.lbllastClick(Sender: TObject);
+begin
+  inherited;
+  //
+  try
+    frmEncVitals.Show;
+  except
+    with sender as TStaticText do
+      SelectVital(self.Font.Size, tag);
+  end; //end of try
+end;
+
+
+procedure TfrmEncVitals.FormShow(Sender: TObject);
+var
+  GMV_LibName: String;
+begin
+  inherited;
+  //Begin Vitals Lite
+  {Visit is Assumed to Be selected when Opening Encounter Dialog}
+  GMV_LibName :='GMV_VitalsViewEnter.dll';
+  GMV_LibName := GetProgramFilesPath + SHARE_DIR + GMV_LibName;
+  if VitalsDLLHandle = 0 then
+    VitalsDLLHandle := LoadLibrary(PChar(GMV_LibName));
+  if VitalsDLLHandle = 0 then // No Handle found
+    MessageDLG('Can''t find library "'+GMV_LibName+'".',mtError,[mbok],0)
+  else
+    LoadVitalsList;
+  //End Vitals Lite
+//  frmEncVitals.caption := 'Vital entry for - '+ patient.name; {RAB 6/15/98}
+  FormActivate(Sender);
+end;
+
+procedure TfrmEncVitals.FormActivate(Sender: TObject);
+begin
+  inherited;
+  if(not FChangingFocus) and (not FDataLoaded) then
+  begin
+    FDataLoaded := TRUE;
+    InitVitalPanel;
+//    txtMeasTemp.setfocus;  //added 3/30/99 after changing tab order.
+                         //The date is now first in tab order, but it shouldn't default there.
+  end;
+end;
+
+
+
+procedure TfrmEncVitals.cboPainChange(Sender: TObject);
+begin
+  inherited;
+  CheckVitalUnit;
+end;
+
+procedure TfrmEncVitals.FormResize(Sender: TObject);
+begin
+  inherited;
+  //added to make things austo size that do not heave the property.
+  cboTemp.height := txtmeastemp.height;
+  cboPain.height := txtmeastemp.height;
+  cboheight.height := txtmeastemp.height;
+  cboweight.height := txtmeastemp.height;
+end;
+
+procedure TfrmEncVitals.txtMeasTempExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveCtrl <> cboTemp) then
+  begin
+    if VitalInvalid(txtMeasTemp, cboTemp) then
+      ChangeFocus(txtMeasTemp);
+  end;
+end;
+
+procedure TfrmEncVitals.txtMeasHtExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveCtrl <> cboHeight) then
+  begin
+    if VitalInvalid(txtMeasHt, cboHeight, GetVitHTRate) then
+      ChangeFocus(txtMeasHt);
+  end;
+end;
+
+procedure TfrmEncVitals.txtMeasWtExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveCtrl <> cboWeight) then
+  begin
+    if VitalInvalid(txtMeasWt, cboWeight) then
+      ChangeFocus(txtMeasWt);
+  end;
+end;
+
+procedure TfrmEncVitals.ChangeFocus(Control: TWinControl);
+begin
+  FChangingFocus := TRUE;
+  try
+    Control.SetFocus;
+  finally
+    FChangingFocus := FALSE;
+  end;
+end;
+
+function TfrmEncVitals.OK2SaveVitals: boolean;
+begin
+  Result := TRUE;
+  if(HasData and (abs(txtMeasDate.FMDateTime) <= 0.0000000000001)) then
+  begin
+    Result := (InfoBox(TX_VDATE_REQ1 + FormatFMDateTime('mmm dd,yy@hh:nn', uEncPCEData.DateTime) +
+                       TX_VDATE_REQ2, TC_VDATE_REQ, MB_YESNO or MB_ICONWARNING) = IDYES);
+    if Result then
+      txtMeasDate.FMDateTime := uEncPCEData.DateTime
+    else
+    begin
+      Result := (InfoBox(TX_KILLDATA, TC_VDATE_REQ, MB_YESNO or MB_ICONWARNING) = IDYES);
+      if(Result) then
+        ClearData;
+    end;
+  end;
+end;
+
+procedure TfrmEncVitals.ClearData;
+begin
+  txtMeasBP.text    := '';
+  txtMeasTemp.text  := '';
+  txtMeasResp.text  := '';
+  txtMeasPulse.text := '';
+  txtMeasHt.text    := '';
+  txtMeasWt.text    := '';
+  cboPain.text      := '';
+end;
+
+//Begin Vitals Lite
+procedure TfrmEncVitals.LoadVitalView(VitalsList: TStringList);
+var
+  i : integer;
+  curCol : TListColumn;
+  curItem : TListItem;
+  HeadingList,tmpList : TStringList;
+begin
+  HeadingList := TStringList.Create;
+  tmpList := TStringList.Create;
+  lvVitals.ShowColumnHeaders := false;                //CQ: 10069 - the column display becomes squished.
+  lvVitals.Items.Clear;
+  lvVitals.Columns.Clear;
+  PiecesToList(VitalsList[0],U,HeadingList);
+  for i := 0 to HeadingList.Count-1 do
+  begin
+    curCol := lvVitals.Columns.Add;
+    curCol.Caption := HeadingList[i];
+    curCol.AutoSize := true;
+  end;
+  for i := 1 to VitalsList.Count-1 do
+  begin
+    curItem := lvVitals.Items.Add;
+    PiecesToList(VitalsList[i],U,tmpList);
+    curItem.Caption := tmpList[0];
+    tmpList.Delete(0);
+    curItem.SubItems.Assign(tmpList);
+  end;
+  lvVitals.ShowColumnHeaders := true;                 //CQ: 10069 - the column display becomes squished.
+  HeadingList.Free;
+  tmpList.Free;
+end;
+
+procedure TfrmEncVitals.btnEnterVitalsClick(Sender: TObject);
+var
+  VLPtVitals : TGMV_VitalsEnterDLG;
+  GMV_FName : String;
+begin
+  inherited;
+  if VitalsDLLHandle = 0 then Exit;//The DLL was initialized on Create, but just in case....
+  GMV_FName := 'GMV_VitalsEnterDLG';
+  @VLPtVitals := GetProcAddress(VitalsDLLHandle,PChar(GMV_FName));
+  if assigned(VLPtVitals) then
+  begin
+    VLPtVitals(
+      RPCBrokerV,
+      Patient.DFN,
+      FloatToStr(uEncPCEData.Location),
+      GMV_DEFAULT_TEMPLATE,
+      GMV_APP_SIGNATURE,
+      FMDateTimeToDateTime(uEncPCEData.DateTime),
+      Patient.Name,
+      frmFrame.lblPtSSN.Caption + '    ' + frmFrame.lblPtAge.Caption
+    );
+  end
+  else
+    MessageDLG('Unable to find function "'+GMV_FName+'".',mtError,[mbok],0);
+  @VLPtVitals := nil;
+  LoadVitalsList;
+end;
+
+procedure TfrmEncVitals.LoadVitalsList;
+var
+  VitalsList : TStringList;
+  VLPtVitals : TGMV_LatestVitalsList;
+  GMV_FName : String;
+begin
+  if VitalsDLLHandle = 0 then Exit;//The DLL was initialized on Create, but just in case....
+  GMV_FName := 'GMV_LatestVitalsList';
+  @VLPtVitals := GetProcAddress(VitalsDLLHandle,PChar(GMV_FName));
+  if assigned(VLPtVitals) then
+  begin
+//    frmFrame.DLLActive := True;  // need this flag for CCOW (RV)
+    VitalsList := VLPtVitals(RPCBrokerV,Patient.DFN,U,false);
+    if assigned(VitalsList) then
+      LoadVitalView(VitalsList);
+  end
+  else
+    MessageDLG('Can''t find function "'+GMV_FName+'".',mtError,[mbok],0);
+  @VLPtVitals := nil;
+//  frmFrame.DLLActive := False;  // need this flag for CCOW (RV)
+end;
+//End Vitals Lite
+
+initialization
+  SpecifyFormIsNotADialog(TfrmEncVitals);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncounterFrame.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncounterFrame.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncounterFrame.dfm	(revision 1676)
@@ -0,0 +1,78 @@
+inherited frmEncounterFrame: TfrmEncounterFrame
+  Left = 290
+  Top = 108
+  Caption = 'Encounter Frame'
+  ClientHeight = 424
+  ClientWidth = 632
+  FormStyle = fsMDIForm
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCanResize = FormCanResize
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitLeft = 290
+  ExplicitTop = 108
+  ExplicitWidth = 640
+  ExplicitHeight = 458
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Bevel1: TBevel [0]
+    Left = 0
+    Top = 0
+    Width = 632
+    Height = 2
+    Align = alTop
+  end
+  object StatusBar1: TStatusBar [1]
+    Left = 0
+    Top = 424
+    Width = 632
+    Height = 0
+    Panels = <>
+  end
+  object pnlPage: TPanel [2]
+    Left = 0
+    Top = 24
+    Width = 632
+    Height = 400
+    Align = alClient
+    BevelOuter = bvNone
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+  end
+  object TabControl: TTabControl [3]
+    Left = 0
+    Top = 2
+    Width = 632
+    Height = 22
+    Align = alTop
+    TabOrder = 2
+    OnChange = TabControlChange
+    OnChanging = TabControlChanging
+    OnEnter = TabControlEnter
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = StatusBar1'
+        'Status = stsDefault')
+      (
+        'Component = pnlPage'
+        'Status = stsDefault')
+      (
+        'Component = TabControl'
+        'Status = stsDefault')
+      (
+        'Component = frmEncounterFrame'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncounterFrame.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncounterFrame.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fEncounterFrame.pas	(revision 1676)
@@ -0,0 +1,843 @@
+unit fEncounterFrame;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  Tabs, ComCtrls, ExtCtrls, Menus, StdCtrls, Buttons, fPCEBase,
+  fVisitType, fDiagnoses, fProcedure, fImmunization, fSkinTest, fPatientEd,
+  fHealthFactor, fExam, uPCE, rPCE, rTIU, ORCtrls, ORFn, fEncVitals, rvitals, fBase508Form,
+  VA508AccessibilityManager;
+
+const
+  //tab names
+  CT_VisitNm = 'Visit Type';
+  CT_DiagNm  = 'Diagnoses';
+  CT_ProcNm  = 'Procedures';
+  CT_ImmNm   = 'Immunizations';
+  CT_SkinNm  = 'Skin Tests';
+  CT_PedNm   = 'Patient Ed';
+  CT_HlthNm  = 'Health Factors';
+  CT_XamNm   = 'Exams';
+  CT_VitNm   = 'Vitals';
+  CT_GAFNm   = 'GAF';
+
+  //numbers assigned to tabs to make changes easier
+  //they must be sequential
+  CT_NOPAGE        = -1;
+  CT_UNKNOWN       = 0;
+  CT_VISITTYPE     = 1; CT_FIRST = 1;
+  CT_DIAGNOSES     = 2;
+  CT_PROCEDURES    = 3;
+  CT_IMMUNIZATIONS = 4;
+  CT_SKINTESTS     = 5;
+  CT_PATIENTED     = 6;
+  CT_HEALTHFACTORS = 7;
+  CT_EXAMS         = 8;
+  CT_VITALS        = 9;
+  CT_GAF           = 10; CT_LAST = 10;
+
+  NUM_TABS       = 3;
+  TAG_VTYPE      = 10;
+  TAG_DIAG       = 20;
+  TAG_PROC       = 30;
+  TAG_IMMUNIZ    = 40;
+  TAG_SKIN       = 50;
+  TAG_PED        = 60;
+  TAG_HF         = 70;
+  TAG_XAM        = 80;
+  TAG_TRT        = 90;
+
+  TX_NOSECTION = '-1^No sections found';
+  TX_PROV_REQ = 'A primary encounter provider must be selected before encounter data can' + CRLF +
+                'be saved.  Select the Primary Encounter Provider on the VISIT TYPE tab.' + CRLF +
+                'Otherwise, press <Cancel> to quit without saving data.';
+
+  TC_PROV_REQ = 'Missing Primary Provider for Encounter';
+
+type
+  TfrmEncounterFrame = class(TfrmBase508Form)
+    StatusBar1: TStatusBar;
+    pnlPage: TPanel;
+    Bevel1: TBevel;
+    TabControl: TTabControl;
+
+    procedure tabPageChange(Sender: TObject; NewTab: Integer;
+      var AllowChange: Boolean);
+    procedure FormResize(Sender: TObject);
+    procedure SectionClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure TabControlChange(Sender: TObject);
+    procedure TabControlChanging(Sender: TObject;
+      var AllowChange: Boolean);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCanResize(Sender: TObject; var NewWidth,
+      NewHeight: Integer; var Resize: Boolean);
+    procedure FormShow(Sender: TObject);
+    procedure TabControlEnter(Sender: TObject);
+
+  private
+    FAutoSave: boolean;
+    FSaveNeeded: boolean;
+    FChangeSource: Integer;
+    FCancel:  Boolean; //Indicates the cancel button has been pressed;
+    FAbort: boolean; // indicates that neither OK or Cancel has been pressed
+    FormList: TStringList;  //Holds the types of any forms that will be used
+                            //in the frame.  They must be available at compile time
+    FLastPage: TfrmPCEBase;
+    FGiveMultiTabMessage: boolean;
+    procedure CreateChildForms(Sender: TObject; Location: integer);
+    procedure SynchPCEData;
+    procedure SwitchToPage(NewForm: TfrmPCEBase);   //was tfrmPage
+    function PageIDToForm(PageID: Integer): TfrmPCEBase;
+    function PageIDToTab(PageID: Integer): string;
+    procedure LoadFormList(Location: integer);
+    procedure CreateForms;
+    procedure AddTabs;
+    function FormListContains(item: string): Boolean;
+    procedure SendData;
+    procedure UpdateEncounter(PCE: TPCEData);
+    procedure SetFormFonts;
+
+  public
+    procedure SelectTab(NewTabName: string);
+    property ChangeSource:    Integer read FChangeSource;
+    property Forms:           tstringlist read FormList;
+    property Cancel:          Boolean read FCancel write FCancel;
+    property Abort:          Boolean read FAbort write FAbort;
+  end;
+
+var
+  frmEncounterFrame: TfrmEncounterFrame;
+  uSCCond:              TSCConditions;
+  uVisitType:           TPCEProc;       // contains info for visit type page
+  uEncPCEData: TPCEData;
+  uProviders: TPCEProviderList;
+
+// Returns true if PCE data still needs to be saved - vitals/gaf are always saved
+function UpdatePCE(PCEData: TPCEData; SaveOnExit: boolean = TRUE): boolean;
+
+implementation
+
+uses
+  uCore,
+  fGAF, uConst,
+  rCore, fPCEProvider, rMisc, VA508AccessibilityRouter, VAUtils;
+
+{$R *.DFM}
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmEncounterFrame.PageIDToTab(PageID: Integer): String;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: returns the tab index that corresponds to a given PageID .
+///////////////////////////////////////////////////////////////////////////////}
+function TfrmEncounterFrame.PageIDToTab(PageID: Integer): String;
+begin
+  result := '';
+  case PageID of
+    CT_NOPAGE:        Result := '';
+    CT_UNKNOWN:       Result := '';
+    CT_VISITTYPE:     Result := CT_VisitNm;
+    CT_DIAGNOSES:     Result := CT_DiagNm;
+    CT_PROCEDURES:    Result := CT_ProcNm;
+    CT_IMMUNIZATIONS: Result := CT_ImmNm;
+    CT_SKINTESTS:     Result := CT_SkinNm;
+    CT_PATIENTED:     Result := CT_PedNm;
+    CT_HEALTHFACTORS: Result := CT_HlthNm;
+    CT_EXAMS:         Result := CT_XamNm;
+    CT_VITALS:        Result := CT_VitNm;
+    CT_GAF:           Result := CT_GAFNm;
+
+  end;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmEncounterFrame.PageIDToForm(PageID: Integer): TfrmPCEBase;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: return the form name based on the PageID}
+///////////////////////////////////////////////////////////////////////////////}
+function TfrmEncounterFrame.PageIDToForm(PageID: Integer): TfrmPCEBase;
+begin
+  case PageID of
+    CT_VISITTYPE:     Result := frmVisitType;
+    CT_DIAGNOSES:     Result := frmDiagnoses;
+    CT_PROCEDURES:    Result := frmProcedures;
+    CT_IMMUNIZATIONS: Result := frmImmunizations;
+    CT_SKINTESTS:     Result := frmSkinTests;
+    CT_PATIENTED:     Result := frmPatientEd;
+    CT_HEALTHFACTORS: Result := frmHealthFactors;
+    CT_EXAMS:         Result := frmExams;
+    CT_VITALS:        Result := frmEncVitals;
+    CT_GAF:           Result := frmGAF;
+  else  //not a valid form
+    result := frmPCEBase;
+  end;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.CreatChildForms(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Finds out what pages to display, has the pages and tabs created.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.CreateChildForms(Sender: TObject; Location: integer);
+begin
+  //load FormList with a list of all forms to display.
+  inherited;
+  LoadFormList(Location);
+  AddTabs;
+  CreateForms;
+end;
+
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: TfrmEncounterFrame.LoadFormList;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Loads Formlist with the forms to create, will be replaced by RPC call.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.LoadFormList(Location: integer);
+begin
+  //change this to an RPC in RPCE.pas
+  FormList.clear;
+  FormList.add(CT_VisitNm);
+  FormList.add(CT_DiagNm);
+  FormList.add(CT_ProcNm);
+  formList.add(CT_VitNm);
+  formList.add(CT_ImmNm);
+  formList.add(CT_SkinNm);
+  formList.add(CT_PedNm);
+  formList.add(CT_HlthNm);
+  formList.add(CT_XamNm);
+  if MHClinic(Location) then
+    formList.add(CT_GAFNm);
+  end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmEncounterFrame.FormListContains(item: string): Boolean;
+//Created: 12/06/98
+//By: Robert Bott
+//Location: ISL
+//Description: Returns a boolean value indicating if a given string exists in
+// the formlist.
+///////////////////////////////////////////////////////////////////////////////}
+function TfrmEncounterFrame.FormListContains(item: string): Boolean;
+begin
+  result := false;
+  if (FormList.IndexOf(item) <> -1 ) then
+    result := true;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.CreateForms;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description:  Creates all of the forms in the list.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.CreateForms;
+var
+  i: integer;
+begin
+  //could this be placed in a loop using PagedIdToTab & PageIDToFOrm & ?
+
+  if FormListContains(CT_VisitNm) then
+    frmVisitType  := TfrmVisitType.CreateLinked(pnlPage);
+  if FormListContains(CT_DiagNm) then
+    frmDiagnoses  := TfrmDiagnoses.CreateLinked(pnlPage);
+  if FormListContains(CT_ProcNm) then
+    frmProcedures := TfrmProcedures.CreateLinked(pnlPage);
+  if FormListContains(CT_VitNm) then
+    frmEncVitals := TfrmEncVitals.CreateLinked(pnlPage);
+  if FormListContains(CT_ImmNm) then
+    frmImmunizations := TfrmImmunizations.CreateLinked(pnlPage);
+  if FormListContains(CT_SkinNm) then
+    frmSkinTests := TfrmSkinTests.CreateLinked(pnlPage);
+  if FormListContains(CT_PedNm) then
+    frmPatientEd := TfrmPatientEd.CreateLinked(pnlPage);
+  if FormListContains(CT_HlthNm) then
+    frmHealthFactors := TfrmHEalthFactors.CreateLinked(pnlPage);
+  if FormListContains(CT_XamNm) then
+    frmExams := TfrmExams.CreateLinked(pnlPage);
+  if FormListContains(CT_GAFNm) then
+    frmGAF := TfrmGAF.CreateLinked(pnlPage);
+  //must switch based on caption, as all tabs may not be present.
+  for i := CT_FIRST to CT_LAST do
+  begin
+    if Formlist.IndexOf(PageIdToTab(i)) <> -1 then
+      PageIDToForm(i).Visible := (Formlist.IndexOf(PageIdToTab(i)) = 0);
+  end;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: TfrmEncounterFrame.SwitchToPage(NewForm: tfrmPCEBase);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Brings the selected page to the front for display.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.SwitchToPage(NewForm: tfrmPCEBase);// was TfrmPage);
+{ unmerge/merge menus, bring page to top of z-order, call form-specific OnDisplay code }
+begin
+  if (NewForm = nil) or (FLastPage = NewForm) then Exit;
+  if Assigned(FLastPage) then
+    FLastPage.Hide;
+  FLastPage := NewForm;
+//  KeyPreview := (NewForm = frmEncVitals);
+  NewForm.DisplayPage;  // this calls BringToFront for the form
+end;
+
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.tabPageChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Finds the page, and calls SwithToPage to display it.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.tabPageChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);
+{ switches to form linked to NewTab }
+var
+  i: integer;
+begin
+//must switch based on caption, as all tabs may not be present.
+for i := CT_FIRST to CT_LAST do
+  begin
+  With Formlist do
+    if NewTab = IndexOf(PageIdToTab(i)) then
+    begin
+      PageIDToForm(i).show;
+      SwitchToPage(PageIDToForm(i));
+    end;
+  end;
+end;
+
+{ Resize and Font-Change procedures --------------------------------------------------------- }
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.FormResize(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Resizes all windows when parent changes.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.FormResize(Sender: TObject);
+var
+  i: integer;
+begin
+ for i := CT_FIRST to CT_LAST do
+   if (FormList.IndexOf(PageIdToTab(i)) <> -1) then
+     MoveWindow(PageIdToForm(i).Handle, 0, 0, pnlPage.ClientWidth, pnlpage.ClientHeight, true);
+  self.repaint;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.AddTabs;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: adds a tab for each page that will be displayed
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.AddTabs;
+
+var
+  i: integer;
+begin
+  TabControl.Tabs.Clear;
+  for I := 0 to (Formlist.count - 1) do
+    TabControl.Tabs.Add(Formlist.Strings[i]);
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure UpdatePCE(PCEData: TPCEData);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: The main call to open the encounter frame and capture encounter
+// information.
+///////////////////////////////////////////////////////////////////////////////}
+function UpdatePCE(PCEData: TPCEData; SaveOnExit: boolean = TRUE): boolean;
+var
+//  FontHeight,
+//  FontWidth: Integer;
+  AUser: string;
+
+begin
+  frmEncounterFrame := TfrmEncounterFrame.Create(Application);
+  try
+    frmEncounterFrame.FAutoSave := SaveOnExit;
+
+    uEncPCEData := PCEData;
+    if(uEncPCEData.Empty and ((uEncPCEData.Location = 0) or (uEncPCEData.VisitDateTime = 0)) and
+      (not Encounter.NeedVisit)) then
+      uEncPCEData.UseEncounter := TRUE;
+    frmEncounterFrame.Caption := 'Encounter Form for ' + ExternalName(uEncPCEData.Location, 44) +
+                                  '  (' + FormatFMDateTime('mmm dd,yyyy@hh:nn', uEncPCEData.VisitDateTime) + ')';
+
+    uProviders.Assign(uEncPCEData.Providers);
+    SetDefaultProvider(uProviders, uEncPCEData);
+    AUser := IntToStr(uProviders.PendingIEN(FALSE));
+    if(AUser <> '0') and (uProviders.IndexOfProvider(AUser) < 0) and
+       AutoCheckout(uEncPCEData.Location) then
+      uProviders.AddProvider(AUser, uProviders.PendingName(FALSE), FALSE);
+
+    frmEncounterFrame.CreateChildForms(frmEncounterFrame, PCEData.Location);
+    ResizeAnchoredFormToFont(frmEncounterFrame);
+    SetFormPosition(frmEncounterFrame);
+
+    with frmEncounterFrame do
+    begin
+      SetRPCEncLocation(PCEData.Location);
+      SynchPCEData;
+      TabControl.Tabindex := 0;
+      TabControlChange(TabControl);
+
+      ShowModal;
+      Result := FSaveNeeded;
+    end;
+  finally
+    // frmEncounterFrame.Free;   v22.11 (JD and SM)
+    frmEncounterFrame.Release;
+    //frmEncounterFrame := nil;  access violation source?  removed 7/28/03 RV
+  end;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: TfrmEncounterFrame.SectionClick(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Call the procedure apropriate for the selected tab
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.SectionClick(Sender: TObject);
+begin
+  with Sender as TListBox do case Tag of
+  TAG_VTYPE:   if FormListContains(CT_VisitNm) then
+               begin
+                 with frmVisitType do
+                   lstVTypeSectionClick(Sender);
+               end;
+  end;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.SynchPCEData;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Synchronize any existing PCE data with what is displayed in the form.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.SynchPCEData;
+
+  procedure InitList(AListBox: TORListBox);
+  var
+    DoClick: boolean;
+
+  begin
+    with AListBox do
+    begin
+      DoClick := TRUE;
+      case Tag of
+        TAG_VTYPE:   begin
+                       if FormListContains(CT_VisitNm) then
+                          ListVisitTypeSections(Items);
+                       DoClick := AutoSelectVisit(PCERPCEncLocation);
+                     end;
+      end;
+      if Items.Count > 0 then
+      begin
+        if DoClick then
+        begin
+          ItemIndex := 0;
+          SectionClick(AListBox);
+        end;
+      end
+      else Items.Add(TX_NOSECTION);
+    end;
+  end;
+
+begin
+  if FormListContains(CT_VisitNm) then
+  with frmVisitType do
+    begin
+      InitList(frmVisitType.lstVTypeSection);                     // set up Visit Type page
+      ListSCDisabilities(memSCDisplay.Lines);
+      uSCCond := EligbleConditions;
+      frmVisitType.fraVisitRelated.InitAllow(uSCCond);
+    end;
+  with uEncPCEData do                               // load any existing data from PCEData
+  begin
+    if FormListContains(CT_VisitNm) then
+      frmVisitType.fraVisitRelated.InitRelated(uEncPCEData);
+    if FormListContains(CT_DiagNm) then
+      frmDiagnoses.InitTab(CopyDiagnoses, ListDiagnosisSections);
+    if FormListContains(CT_ProcNm) then
+      frmProcedures.InitTab(CopyProcedures, ListProcedureSections);
+    if FormListContains(CT_ImmNm) then
+      frmImmunizations.InitTab(CopyImmunizations,ListImmunizSections);
+    if FormListContains(CT_SkinNm) then
+      frmSkinTests.InitTab(CopySkinTests, ListSkinSections);
+    if FormListContains(CT_PedNm) then
+      frmPatientEd.InitTab(CopyPatientEds, ListPatientSections);
+    if FormListContains(CT_HlthNm) then
+      frmHealthFactors.InitTab(CopyHealthFactors, ListHealthSections);
+    if FormListContains(CT_XamNm) then
+      frmExams.InitTab(CopyExams, ListExamsSections);
+    uVisitType.Assign(VisitType);
+    if FormListContains(CT_VisitNm) then
+    with frmVisitType do
+    begin
+      MatchVType;
+    end;
+  end;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.FormDestroy(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Free up objects in memory when destroying form.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.FormDestroy(Sender: TObject);
+var
+  i: integer;
+
+begin
+  inherited;
+  for i := ComponentCount-1 downto 0 do
+    if(Components[i] is TForm) then
+      TForm(Components[i]).Free;
+
+  formlist.clear;
+  KillObj(@uProviders);
+  uVisitType.Free;
+  Formlist.free;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.FormCreate(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Create instances of the objects needed.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.FormCreate(Sender: TObject);
+begin
+  uProviders := TPCEProviderList.Create;
+  uVisitType := TPCEProc.create;
+  //uVitalOld  := TStringList.create;
+  //uVitalNew  := TStringList.create;
+  FormList := TStringList.create;
+  fCancel := False;
+  FAbort := TRUE;
+  SetFormFonts;
+  FGiveMultiTabMessage := ScreenReaderSystemActive;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.SendData;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Send Data back to the M side sor storing.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.SendData;
+//send PCE data to the RPC
+var
+  StoreMessage: string;
+  GAFScore: integer;
+  GAFDate: TFMDateTime;
+  GAFStaff: Int64;
+
+begin
+  inherited;
+  // do validation for vitals & anything else here
+
+  //process vitals
+  if FormListContains(CT_VitNm) then
+  begin
+    with frmEncVitals do
+    if HasData then
+    begin
+      if AssignVitals then
+      begin
+        StoreMessage := ValAndStoreVitals(frmEncVitals.VitalNew);
+        if (Storemessage <> 'True') then
+        begin
+          ShowMsg(storemessage);
+//        exit;
+        end;
+      end;
+    end;
+  end;
+
+  if(FormListContains(CT_GAFNm)) then
+  begin
+    frmGAF.GetGAFScore(GAFScore, GAFDate, GAFStaff);
+    if(GAFScore > 0) then
+      SaveGAFScore(GAFScore, GAFDate, GAFStaff);
+  end;
+
+  //PCE
+
+  UpdateEncounter(uEncPCEData);
+  with uEncPCEData do
+  begin
+    if FAutoSave then
+      Save
+    else
+      FSaveNeeded := TRUE;
+  end;
+  Close;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmEncounterFrame.FormCloseQuery(Sender: TObject;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Check to see if the Cancel button was pressed, if not, call
+// procedure to send the data to the server.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmEncounterFrame.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+
+const
+  TXT_SAVECHANGES = 'Save Changes?';
+
+var
+  TmpPCEData: TPCEData;
+  ask, ChangeOK: boolean;
+
+begin
+  CanClose := True;
+  if(FAbort) then
+    FCancel := (InfoBox(TXT_SAVECHANGES, TXT_SAVECHANGES, MB_YESNO) = ID_NO);
+  if FCancel then Exit;  //*KCM*
+
+  if(uProviders.PrimaryIdx >= 0) then
+    ask := TRUE
+  else
+  begin
+    TmpPCEData := TPCEData.Create;
+    try
+      uEncPCEData.CopyPCEData(TmpPCEData);
+      UpdateEncounter(TmpPCEData);
+      ask := TmpPCEData.NeedProviderInfo;
+    finally
+      TmpPCEData.Free;
+    end;
+  end;
+  if ask and (NoPrimaryPCEProvider(uProviders, uEncPCEData)) then
+  begin
+    InfoBox(TX_PROV_REQ, TC_PROV_REQ, MB_OK or MB_ICONWARNING);
+    CanClose := False;
+    Exit;
+  end;
+
+  uVisitType.Provider := uProviders.PrimaryIEN;  {RV - v20.1}
+
+  if FormListContains(CT_VitNm) then
+    CanClose := frmEncVitals.OK2SaveVitals;
+
+  if CanClose and FormListContains(CT_ProcNm) then  
+    begin
+      CanClose := frmProcedures.OK2SaveProcedures;
+      if not CanClose then
+        begin
+          tabPageChange(Self, FormList.IndexOf(CT_ProcNm), ChangeOK);
+          SwitchToPage(PageIDToForm(CT_PROCEDURES));
+          TabControl.TabIndex := FormList.IndexOf(CT_ProcNm);
+        end;
+    end;
+
+  if CanClose then SendData;  //*KCM*
+
+end;
+
+procedure TfrmEncounterFrame.TabControlChange(Sender: TObject);
+var
+  i: integer;
+begin
+//must switch based on caption, as all tabs may not be present.
+  if (sender as tTabControl).tabindex = -1 then exit;
+
+  if TabControl.CanFocus and Assigned(FLastPage) and not TabControl.Focused then
+    TabControl.SetFocus;  //CQ: 14845
+
+  for i := CT_FIRST to CT_LAST do
+  begin
+    with Formlist do
+      with sender as tTabControl do
+        if Tabindex = IndexOf(PageIdToTab(i)) then
+      begin
+        PageIDToForm(i).show;
+        SwitchToPage(PageIDToForm(i));
+        Exit;
+      end;
+  end;
+end;
+
+procedure TfrmEncounterFrame.TabControlChanging(Sender: TObject;
+  var AllowChange: Boolean);
+begin
+  if(assigned(FLastPage)) then
+    FLastPage.AllowTabChange(AllowChange);
+end;
+
+procedure TfrmEncounterFrame.UpdateEncounter(PCE: TPCEData);
+begin
+  with PCE do
+  begin
+    if FormListContains(CT_VisitNm) then
+    begin
+      VisitType := uVisitType;
+      frmVisitType.fraVisitRelated.GetRelated(uEncPCEData);
+      Providers.Merge(uProviders);
+    end;
+
+    if FormListContains(CT_DiagNm) then
+      SetDiagnoses(frmDiagnoses.lbGrid.Items);
+    if FormListContains(CT_ProcNm) then
+      SetProcedures(frmProcedures.lbGrid.Items);
+    if FormListContains(CT_ImmNm) then
+      SetImmunizations(frmImmunizations.lbGrid.Items);
+    if FormListContains(CT_SkinNm) then
+      SetSkinTests(frmSkinTests.lbGrid.Items);
+    if FormListContains(CT_PedNm) then
+      SetPatientEds(frmPatientEd.lbGrid.Items);
+    if FormListContains(CT_HlthNm) then
+      SetHealthFactors(frmHealthFactors.lbGrid.Items);
+    if FormListContains(CT_XamNm) then
+      SetExams(frmExams.lbGrid.Items);
+  end;
+end;
+
+procedure TfrmEncounterFrame.SelectTab(NewTabName: string);
+var
+  AllowChange: boolean;
+begin
+  AllowChange := True;
+  tabControl.TabIndex := FormList.IndexOf(NewTabName);
+  tabPageChange(Self, tabControl.TabIndex, AllowChange);
+end;
+
+procedure TfrmEncounterFrame.TabControlEnter(Sender: TObject);
+begin
+  if FGiveMultiTabMessage then // CQ#15483
+  begin
+    FGiveMultiTabMessage := FALSE;
+    GetScreenReader.Speak('Multi tab form');
+  end;
+end;
+
+procedure TfrmEncounterFrame.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+var
+  CanChange: boolean;
+begin
+  inherited;
+  if (Key = VK_ESCAPE) then
+  begin
+    Key := 0;
+    FLastPage.btnCancel.Click;
+  end
+  else if Key = VK_TAB then
+  begin
+    if ssCtrl in Shift then
+    begin
+      CanChange := True;
+      if Assigned(TabControl.OnChanging) then
+        TabControl.OnChanging(TabControl, CanChange);
+      if CanChange then
+      begin
+        if ssShift in Shift then
+        begin
+          if TabControl.TabIndex < 1 then
+            TabControl.TabIndex := TabControl.Tabs.Count -1
+          else
+            TabControl.TabIndex := TabControl.TabIndex - 1;
+        end
+        else
+          TabControl.TabIndex := (TabControl.TabIndex + 1) mod TabControl.Tabs.Count;
+        if Assigned(TabControl.OnChange) then
+          TabControl.OnChange(TabControl);
+      end;
+      Key := 0;
+    end;
+  end;
+end;
+
+procedure TfrmEncounterFrame.SetFormFonts;
+var
+  NewFontSize: integer;
+begin
+  NewFontSize := MainFontsize;
+  if FormListContains(CT_VisitNm) then
+    frmVisitType.Font.Size := NewFontSize;
+  if FormListContains(CT_DiagNm) then
+    frmDiagnoses.Font.Size := NewFontSize;
+  if FormListContains(CT_ProcNm) then
+    frmProcedures.Font.Size := NewFontSize;
+  if FormListContains(CT_ImmNm) then
+    frmImmunizations.Font.Size := NewFontSize;
+  if FormListContains(CT_SkinNm) then
+    frmSkinTests.Font.Size := NewFontSize;
+  if FormListContains(CT_PedNm) then
+    frmPatientEd.Font.Size := NewFontSize;
+  if FormListContains(CT_HlthNm) then
+    frmHealthFactors.Font.Size := NewFontSize;
+  if FormListContains(CT_XamNm) then
+    frmExams.Font.Size := NewFontSize;
+  if FormListContains(CT_VitNm) then
+    frmEncVitals.Font.Size := NewFontSize;
+  if FormListContains(CT_GAFNm) then
+    frmGAF.SetFontSize(NewFontSize);
+end;
+
+procedure TfrmEncounterFrame.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmEncounterFrame.FormCanResize(Sender: TObject; var NewWidth,
+  NewHeight: Integer; var Resize: Boolean);
+begin
+  //CQ4740
+  if NewWidth < 200 then
+     begin
+     NewWidth := 200;
+     Resize := false;
+     end;
+end;
+
+procedure TfrmEncounterFrame.FormShow(Sender: TObject);
+begin
+  inherited;
+  if TabControl.CanFocus then
+    TabControl.SetFocus;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fExam.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fExam.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fExam.dfm	(revision 1676)
@@ -0,0 +1,154 @@
+inherited frmExams: TfrmExams
+  Left = 509
+  Top = 223
+  Caption = 'Encounter Examinations'
+  ExplicitLeft = 509
+  ExplicitTop = 223
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblExamResults: TLabel [0]
+    Left = 490
+    Top = 264
+    Width = 35
+    Height = 13
+    Caption = 'Results'
+  end
+  inherited lblSection: TLabel
+    Width = 65
+    Caption = 'Exam Section'
+    ExplicitWidth = 65
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 6
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 7
+  end
+  inherited pnlGrid: TPanel
+    TabOrder = 1
+    inherited lbGrid: TORListBox
+      Caption = 'Exams'
+      Pieces = '1,2'
+    end
+    inherited hcGrid: THeaderControl
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 60
+          Text = 'Results'
+          Width = 60
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 90
+          Text = 'Selected Exams'
+          Width = 90
+        end>
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    TabOrder = 3
+  end
+  object cboExamResults: TORComboBox [9]
+    Tag = 60
+    Left = 490
+    Top = 280
+    Width = 121
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Results'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = cboExamResultsChange
+    CharsNeedMatch = 1
+  end
+  inherited btnRemove: TButton
+    TabOrder = 5
+  end
+  inherited btnSelectAll: TButton
+    TabOrder = 2
+    TabStop = True
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited lbxSection: TORListBox
+      Tag = 80
+    end
+    inherited pnlLeft: TPanel
+      inherited lbSection: TORListBox
+        TabOrder = 0
+        Caption = 'Exam Section'
+      end
+      inherited btnOther: TButton
+        Tag = 24
+        Caption = 'Other Exam...'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboExamResults'
+        'Label = lblExamResults'
+        'Status = stsOK')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmExams'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fExam.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fExam.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fExam.pas	(revision 1676)
@@ -0,0 +1,120 @@
+unit fExam;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, ORCtrls, CheckLst, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  fPCELex, fPCEOther, ComCtrls, fPCEBaseMain, VA508AccessibilityManager;
+
+type
+  TfrmExams = class(TfrmPCEBaseMain)
+    lblExamResults: TLabel;
+    cboExamResults: TORComboBox;
+    procedure cboExamResultsChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+  public   
+  end;
+
+var
+  frmExams: TfrmExams;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, VA508AccessibilityRouter;
+
+procedure TfrmExams.cboExamResultsChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) and (cboExamResults.Text <> '') then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEExams(lbGrid.Items.Objects[i]).Results := cboExamResults.ItemID;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmExams.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_XamNm;
+  FPCEListCodesProc := ListExamsCodes;
+  FPCEItemClass := TPCEExams;
+  FPCECode := 'XAM';
+  PCELoadORCombo(cboExamResults);
+end;
+
+procedure TfrmExams.UpdateNewItemStr(var x: string);
+begin
+  SetPiece(x, U, pnumExamResults, NoPCEValue);
+end;
+
+procedure TfrmExams.UpdateControls;
+var
+  ok, First: boolean;
+  SameR: boolean;
+  i: integer;
+  Res: string;
+  Obj: TPCEExams;
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      ok := (lbGrid.SelCount > 0);
+      lblExamResults.Enabled := ok;
+      cboExamResults.Enabled := ok;
+      if(ok) then
+      begin
+        First := TRUE;
+        SameR := TRUE;
+        Res := NoPCEValue;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if lbGrid.Selected[i] then
+          begin
+            Obj := TPCEExams(lbGrid.Items.Objects[i]);
+            if(First) then
+            begin
+              First := FALSE;
+              Res := Obj.Results;
+            end
+            else
+            begin
+              if(SameR) then
+                SameR := (Res = Obj.Results);
+            end;
+          end;
+        end;
+        if(SameR) then
+          cboExamResults.SelectByID(Res)
+        else
+          cboExamResults.Text := '';
+      end
+      else
+      begin
+        cboExamResults.Text := '';
+      end;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmExams);
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fGAF.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fGAF.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fGAF.dfm	(revision 1676)
@@ -0,0 +1,243 @@
+inherited frmGAF: TfrmGAF
+  Left = 255
+  Top = 178
+  ActiveControl = edtScore
+  Caption = 'frmGAF'
+  OnActivate = FormActivate
+  ExplicitLeft = 8
+  ExplicitTop = 8
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblScore: TLabel [0]
+    Left = 139
+    Top = 175
+    Width = 31
+    Height = 13
+    Caption = 'Score:'
+  end
+  object lblDate: TLabel [1]
+    Left = 139
+    Top = 206
+    Width = 83
+    Height = 13
+    Caption = 'Date Determined:'
+  end
+  object lblDeterminedBy: TLabel [2]
+    Left = 139
+    Top = 237
+    Width = 72
+    Height = 13
+    Caption = 'Determined By:'
+  end
+  object Spacer1: TLabel [3]
+    Left = 0
+    Top = 0
+    Width = 624
+    Height = 13
+    Align = alTop
+    ExplicitWidth = 3
+  end
+  object Spacer2: TLabel [4]
+    Left = 0
+    Top = 122
+    Width = 624
+    Height = 13
+    Align = alTop
+    ExplicitWidth = 3
+  end
+  object lblGAF: TStaticText [5]
+    Left = 0
+    Top = 13
+    Width = 624
+    Height = 22
+    Align = alTop
+    Alignment = taCenter
+    AutoSize = False
+    Caption = 'Most recent Global Assessment of Functioning (GAF) scores:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 8
+  end
+  object lblEntry: TStaticText [6]
+    Left = 0
+    Top = 135
+    Width = 624
+    Height = 30
+    Align = alTop
+    Alignment = taCenter
+    AutoSize = False
+    Caption = 'Global Assessment of Functioning (GAF) score entry:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 9
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 6
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 7
+  end
+  inherited pnlGrid: TPanel
+    Left = 0
+    Top = 35
+    Width = 624
+    Align = alTop
+    TabOrder = 0
+    ExplicitLeft = 0
+    ExplicitTop = 35
+    ExplicitWidth = 624
+    inherited lbGrid: TORListBox
+      Width = 624
+      TabStop = False
+      MultiSelect = True
+      Caption = 'Most recent Global Assessment of Functioning (GAF) scores'
+      Pieces = '1,2,3,4'
+      ExplicitWidth = 624
+    end
+    inherited hcGrid: THeaderControl
+      Width = 624
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 65
+          Text = 'GAF Score'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 95
+          Text = 'Date Determined'
+          Width = 95
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 85
+          Text = 'Determined By'
+          Width = 85
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 60
+          Text = 'Comment'
+          Width = 60
+        end>
+      ExplicitWidth = 624
+    end
+  end
+  object edtScore: TCaptionEdit [10]
+    Left = 226
+    Top = 171
+    Width = 33
+    Height = 21
+    TabOrder = 1
+    Text = '0'
+    OnChange = edtScoreChange
+    Caption = 'Score'
+  end
+  object udScore: TUpDown [11]
+    Left = 259
+    Top = 171
+    Width = 15
+    Height = 21
+    Associate = edtScore
+    TabOrder = 2
+  end
+  object dteGAF: TORDateBox [12]
+    Left = 226
+    Top = 202
+    Width = 121
+    Height = 21
+    TabOrder = 3
+    OnExit = dteGAFExit
+    DateOnly = True
+    RequireTime = False
+    Caption = 'Date Determined:'
+  end
+  object cboGAFProvider: TORComboBox [13]
+    Left = 226
+    Top = 233
+    Width = 212
+    Height = 117
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Determined By'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnExit = cboGAFProviderExit
+    OnNeedData = cboGAFProviderNeedData
+    CharsNeedMatch = 1
+  end
+  object btnURL: TButton [14]
+    Left = 3
+    Top = 376
+    Width = 134
+    Height = 21
+    Hint = 'GAF Scale Rating Form'
+    Caption = 'Reference Information'
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 5
+    OnClick = btnURLClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblGAF'
+        'Status = stsDefault')
+      (
+        'Component = lblEntry'
+        'Status = stsDefault')
+      (
+        'Component = edtScore'
+        'Status = stsDefault')
+      (
+        'Component = udScore'
+        'Status = stsDefault')
+      (
+        'Component = dteGAF'
+        'Status = stsDefault')
+      (
+        'Component = cboGAFProvider'
+        'Status = stsDefault')
+      (
+        'Component = btnURL'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmGAF'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fGAF.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fGAF.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fGAF.pas	(revision 1676)
@@ -0,0 +1,210 @@
+unit fGAF;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, Buttons, ExtCtrls, Grids, ORFn, ORNet, ORCtrls,
+  ORDtTm, ComCtrls, fPCEBaseGrid, Menus, VA508AccessibilityManager;
+
+type
+  TfrmGAF = class(TfrmPCEBaseGrid)
+    lblGAF: TStaticText;
+    edtScore: TCaptionEdit;
+    udScore: TUpDown;
+    dteGAF: TORDateBox;
+    lblEntry: TStaticText;
+    lblScore: TLabel;
+    lblDate: TLabel;
+    lblDeterminedBy: TLabel;
+    cboGAFProvider: TORComboBox;
+    btnURL: TButton;
+    Spacer1: TLabel;
+    Spacer2: TLabel;
+    procedure cboGAFProviderNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure edtScoreChange(Sender: TObject);
+    procedure dteGAFExit(Sender: TObject);
+    procedure cboGAFProviderExit(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure btnURLClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    FDataLoaded: boolean;
+    procedure LoadScores;
+    function BADData(ShowMessage: boolean): boolean;
+  public
+    procedure AllowTabChange(var AllowChange: boolean); override;
+    procedure GetGAFScore(var Score: integer; var Date: TFMDateTime; var Staff: Int64);
+  end;
+
+function ValidGAFData(Score: integer; Date: TFMDateTime; Staff: Int64): boolean;
+
+var
+  frmGAF: TfrmGAF;
+
+implementation
+
+uses rPCE, rCore, uCore, uPCE, fEncounterFrame, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+function ValidGAFData(Score: integer; Date: TFMDateTime; Staff: Int64): boolean;
+begin
+  if(Score < 1) or (Score > 100) or (Date <= 0) or (Staff = 0) then
+    Result := FALSE
+  else
+    Result := ((Patient.DateDied <= 0) or (Date <= Patient.DateDied));
+end;
+
+procedure TfrmGAF.LoadScores;
+var
+  i: integer;
+  tmp: string;
+
+begin
+  RecentGafScores(3);
+  if(RPCBrokerV.Results.Count > 0) and (RPCBrokerV.Results[0] = '[DATA]') then
+  begin
+    for i := 1 to RPCBrokerV.Results.Count-1 do
+    begin
+      tmp := RPCBrokerV.Results[i];
+      lbGrid.Items.Add(Piece(tmp,U,5) + U + Piece(Piece(tmp,U,2),NoPCEValue,1) + U +
+                                Piece(tmp,U,7) + U + Piece(tmp,U,8));
+    end;
+  end;
+  if(lbGrid.Items.Count > 0) then
+    SyncGridData
+  else
+    lbGrid.Items.Add('No GAF scores found.');
+end;
+
+procedure TfrmGAF.cboGAFProviderNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboGAFProvider.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+function TfrmGAF.BADData(ShowMessage: boolean): boolean;
+var
+  PName, msg: string;
+  GAFDate: TFMDateTime;
+  UIEN: Int64;
+
+begin
+  GAFDate := dteGAF.FMDateTime;
+  msg := ValidateGAFDate(GAFDate);
+  if(dteGAF.FMDateTime <> GAFDate) then
+    dteGAF.FMDateTime := GAFDate;
+
+  if(cboGAFProvider.ItemID = '') then
+  begin
+    if(msg <> '') then
+      msg := msg + CRLF;
+    msg := msg + 'A determining party is required to enter a GAF score.';
+    UIEN := uProviders.PCEProvider;
+    if(UIEN <> 0) then
+    begin
+      PName := uProviders.PCEProviderName;
+      msg := msg + '  Determined By changed to ' + PName + '.';
+      cboGAFProvider.SelectByIEN(UIEN);
+      if(cboGAFProvider.ItemID = '') then
+      begin
+        cboGAFProvider.InitLongList(PName);
+        cboGAFProvider.SelectByIEN(UIEN);
+      end;
+    end;
+  end;
+
+  if(ShowMessage and (msg <> '')) then
+    InfoBox(msg, 'Invalid GAF Data', MB_OK);
+
+  if(udScore.Position > udScore.Min) then
+    Result := (msg <> '')
+  else
+    Result := FALSE;
+end;
+
+procedure TfrmGAF.edtScoreChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  inherited;
+  i := StrToIntDef(edtScore.Text,udScore.Min);
+  if(i < udScore.Min) or (i > udScore.Max) then
+    i := udScore.Min;
+  udScore.Position := i;
+  edtScore.Text := IntToStr(i);
+  edtScore.SelStart := length(edtScore.Text);
+end;
+
+procedure TfrmGAF.dteGAFExit(Sender: TObject);
+begin
+  inherited;
+//  BadData(TRUE);
+end;
+
+procedure TfrmGAF.cboGAFProviderExit(Sender: TObject);
+begin
+  inherited;
+  BadData(TRUE);
+end;
+
+procedure TfrmGAF.AllowTabChange(var AllowChange: boolean);
+begin
+  AllowChange := (not BadData(TRUE));
+end;
+
+procedure TfrmGAF.GetGAFScore(var Score: integer; var Date: TFMDateTime; var Staff: Int64);
+begin
+  Score := udScore.Position;
+  if(Score > 0) then BadData(TRUE);
+  Date := dteGAF.FMDateTime;
+  Staff := cboGAFProvider.ItemIEN;
+  if(not ValidGAFData(Score, Date, Staff)) then
+  begin
+    Score := 0;
+    Date := 0;
+    Staff := 0
+  end;
+end;
+
+procedure TfrmGAF.FormActivate(Sender: TObject);
+begin
+  inherited;
+  if(not FDataLoaded) then
+  begin
+    FDataLoaded := TRUE;
+    LoadScores;
+    cboGAFProvider.InitLongList(Encounter.ProviderName);
+    BadData(FALSE);
+  end;
+end;
+
+procedure TfrmGAF.FormShow(Sender: TObject);
+begin
+  inherited;
+  FormActivate(Sender);
+end;
+
+procedure TfrmGAF.btnURLClick(Sender: TObject);
+begin
+  inherited;
+  GotoWebPage(GAFURL);
+end;
+
+procedure TfrmGAF.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_GAFNm;
+  btnURL.Visible := (User.WebAccess and (GAFURL <> ''));
+  FormActivate(Sender);
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmGAF);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHFSearch.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHFSearch.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHFSearch.dfm	(revision 1676)
@@ -0,0 +1,144 @@
+inherited frmHFSearch: TfrmHFSearch
+  Left = 286
+  Top = 248
+  Caption = 'Other Health Factors'
+  ClientHeight = 390
+  ClientWidth = 355
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 363
+  ExplicitHeight = 417
+  PixelsPerInch = 96
+  TextHeight = 13
+  object splMain: TSplitter [0]
+    Left = 0
+    Top = 131
+    Width = 355
+    Height = 3
+    Cursor = crVSplit
+    Align = alTop
+  end
+  object lblCat: TLabel [1]
+    Left = 0
+    Top = 0
+    Width = 355
+    Height = 13
+    Align = alTop
+    Caption = 'Category:'
+    ExplicitWidth = 45
+  end
+  object cbxSearch: TORComboBox [2]
+    Left = 0
+    Top = 13
+    Width = 355
+    Height = 118
+    Style = orcsSimple
+    Align = alTop
+    AutoSelect = True
+    Caption = 'Category'
+    Color = clWindow
+    DropDownCount = 7
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    TabStop = True
+    OnChange = cbxSearchChange
+    OnDblClick = tvSearchDblClick
+    CharsNeedMatch = 1
+  end
+  object tvSearch: TORTreeView [3]
+    Left = 0
+    Top = 134
+    Width = 355
+    Height = 229
+    Align = alClient
+    HideSelection = False
+    Images = dmodShared.imgTemplates
+    Indent = 23
+    ReadOnly = True
+    TabOrder = 1
+    OnChange = tvSearchChange
+    OnCollapsed = tvSearchGetImageIndex
+    OnDblClick = tvSearchDblClick
+    OnExpanded = tvSearchGetImageIndex
+    OnGetImageIndex = tvSearchGetImageIndex
+    OnGetSelectedIndex = tvSearchGetImageIndex
+    Caption = 'Health Factors Category'
+    NodePiece = 2
+    ExplicitTop = 137
+  end
+  object pnlBottom: TPanel [4]
+    Left = 0
+    Top = 363
+    Width = 355
+    Height = 27
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      355
+      27)
+    object btnOK: TButton
+      Left = 196
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '&OK'
+      Default = True
+      Enabled = False
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 276
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = '&Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 176
+    Data = (
+      (
+        'Component = cbxSearch'
+        'Status = stsDefault')
+      (
+        'Component = tvSearch'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmHFSearch'
+        'Status = stsDefault'))
+  end
+  object imgListHFtvSearch: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvSearch
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblHealthFactorLabels
+    Left = 224
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHFSearch.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHFSearch.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHFSearch.pas	(revision 1676)
@@ -0,0 +1,235 @@
+unit fHFSearch;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORFn, StdCtrls, ComCtrls, ORCtrls, ExtCtrls,
+  VA508AccessibilityManager, VA508ImageListLabeler;
+
+type
+  TfrmHFSearch = class(TfrmAutoSz)
+    cbxSearch: TORComboBox;
+    tvSearch: TORTreeView;
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    splMain: TSplitter;
+    lblCat: TLabel;
+    imgListHFtvSearch: TVA508ImageListLabeler;
+    procedure FormCreate(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure tvSearchDblClick(Sender: TObject);
+    procedure tvSearchGetImageIndex(Sender: TObject; Node: TTreeNode);
+    procedure tvSearchChange(Sender: TObject; Node: TTreeNode);
+    procedure cbxSearchChange(Sender: TObject);
+  private
+    FCode:   string;
+    FChanging: boolean;
+    procedure UpdateCat;
+  public
+  end;
+
+procedure HFLookup(var Code: string);
+
+implementation
+
+uses rPCE, dShared, fEncounterFrame;
+
+{$R *.DFM}
+
+const
+  CatTxt = 'Category: ';
+
+procedure HFLookup(var Code: string);
+var
+  frmHFSearch: TfrmHFSearch;
+
+begin
+  frmHFSearch := TfrmHFSearch.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmHFSearch));
+    frmHFSearch.ShowModal;
+    Code := frmHFSearch.FCode;
+  finally
+    frmHFSearch.Free;
+  end;
+end;
+
+procedure TfrmHFSearch.cbxSearchChange(Sender: TObject);
+var
+  Node: TORTreeNode;
+  CurCat, NodeCat: TTreeNode;
+  ID: string;
+
+begin
+  inherited;
+  if(not FChanging) then
+  begin
+    FChanging := TRUE;
+    try
+      btnOK.Enabled := (cbxSearch.ItemIndex >= 0);
+      if(cbxSearch.ItemIndex < 0) then
+        tvSearch.Selected := nil
+      else
+      begin
+        ID := cbxSearch.ItemID;
+        if(assigned(tvSearch.Selected)) then
+        begin
+          CurCat := tvSearch.Selected;
+          while (assigned(CurCat.Parent)) do
+            CurCat := CurCat.Parent;
+        end
+        else
+          CurCat := nil;
+        Node := TORTreeNode(tvSearch.Items.GetFirstNode);
+        while assigned(Node) do
+        begin
+          if(piece(Node.StringData,U,1)= ID) then
+          begin
+            NodeCat := Node;
+            while (assigned(NodeCat.Parent)) do
+              NodeCat := NodeCat.Parent;
+            RedrawSuspend(tvSearch.Handle);
+            try
+              if(CurCat <> NodeCat) then
+                tvSearch.FullCollapse;
+              tvSearch.Selected := Node;
+              Node.EnsureVisible;
+            finally
+              RedrawActivate(tvSearch.Handle);
+            end;
+            break;
+          end;
+          Node := TORTreeNode(Node.GetNext);
+        end;
+      end;
+      UpdateCat;
+    finally
+      FChanging := FALSE;
+    end;
+  end;
+end;
+
+
+procedure TfrmHFSearch.FormCreate(Sender: TObject);
+var
+  HFList: TStringList;
+  i: integer;
+  Node, Child :TORTreeNode;
+  CAT: string;
+
+begin
+  inherited;
+  HFList := TStringList.Create;
+  try
+    LoadcboOther(HFList, uEncPCEData.Location, PCE_HF);
+    for i := 0 to HFList.Count-1 do
+    begin
+      if(Piece(HFList[i],U,3)='F') then
+        cbxSearch.Items.Add(pieces(HFList[i],U,1,2));
+    end;
+    for i := 0 to HFList.Count-1 do
+    begin
+      if(Piece(HFList[i],U,3)='C') then
+      begin
+        with TORTreeNode(tvSearch.Items.Add(nil, '')) do
+        begin
+          StringData := HFList[i];
+          ImageIndex := 2;
+          SelectedIndex := 2;
+        end;
+      end;
+    end;
+    for i := 0 to HFList.Count-1 do
+    begin
+      if(Piece(HFList[i],U,3)='F') then
+      begin
+        CAT := piece(HFList[i],U,4);
+        Node := TORTreeNode(tvSearch.Items.GetFirstNode);
+        while(assigned(Node)) do
+        begin
+          if(Piece(Node.StringData, U, 1) = CAT) then
+            break;
+          Node := TORTreeNode(Node.GetNextSibling);
+        end;
+        Child := TORTreeNode(tvSearch.Items.AddChild(Node, ''));
+        Child.StringData := Pieces(HFList[i],U,1,2);
+        Child.ImageIndex := -1;
+        Child.StateIndex := -1;
+      end;
+    end;
+//    tvSearch.Invalidate;
+  finally
+    HFList.Free;
+  end;
+end;
+
+procedure TfrmHFSearch.btnOKClick(Sender: TObject);
+begin
+  inherited;
+  if cbxSearch.ItemIndex = -1 then Exit;
+  FCode := cbxSearch.Items[cbxSearch.ItemIndex];
+  ModalResult := mrOK;
+end;
+
+procedure TfrmHFSearch.tvSearchDblClick(Sender: TObject);
+begin
+  inherited;
+  btnOKClick(Sender);
+end;
+
+procedure TfrmHFSearch.tvSearchGetImageIndex(Sender: TObject;
+  Node: TTreeNode);
+begin
+  inherited;
+  if(piece(TORTreeNode(Node).StringData,U,3)= 'C') then
+  begin
+    if(Node.Expanded) then
+      Node.ImageIndex := 3
+    else
+      Node.ImageIndex := 2;
+  end
+  else
+    Node.ImageIndex := -1;
+  Node.SelectedIndex := Node.ImageIndex;
+//  tvSearch.Invalidate;
+end;
+
+procedure TfrmHFSearch.tvSearchChange(Sender: TObject; Node: TTreeNode);
+begin
+  inherited;
+  if(not FChanging) then
+  begin
+    FChanging := TRUE;
+    try
+      if(assigned(Node)) then
+        cbxSearch.SelectByID(Piece(TORTreeNode(Node).StringData,U,1))
+      else
+        cbxSearch.ItemIndex := -1;
+      btnOK.Enabled := (cbxSearch.ItemIndex >= 0);
+      UpdateCat;
+    finally
+      FChanging := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmHFSearch.UpdateCat;
+var
+  NodeCat: TTreeNode;
+  
+begin
+  NodeCat := tvSearch.Selected;
+  if(assigned(NodeCat)) then
+  begin
+    while (assigned(NodeCat.Parent)) do
+      NodeCat := NodeCat.Parent;
+    lblCat.Caption := CatTxt + NodeCat.Text;
+  end
+  else
+    lblCat.Caption := CatTxt;
+  cbxSearch.Caption := lblCat.Caption;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHealthFactor.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHealthFactor.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHealthFactor.dfm	(revision 1676)
@@ -0,0 +1,158 @@
+inherited frmHealthFactors: TfrmHealthFactors
+  Left = 374
+  Top = 205
+  Caption = 'Health Factor page'
+  ExplicitLeft = 374
+  ExplicitTop = 205
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblHealthLevel: TLabel [0]
+    Left = 490
+    Top = 264
+    Width = 69
+    Height = 13
+    Caption = 'Level/Severity'
+  end
+  inherited lblSection: TLabel
+    Width = 103
+    Caption = 'Health Factor Section'
+    ExplicitWidth = 103
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 6
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 7
+  end
+  inherited pnlGrid: TPanel
+    TabOrder = 1
+    inherited lbGrid: TORListBox
+      Tag = 70
+      Caption = 'Selected Health Factors'
+      Pieces = '1,2'
+    end
+    inherited hcGrid: THeaderControl
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 85
+          Text = 'Level/Severity'
+          Width = 85
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 130
+          Text = 'Selected Health Factors'
+          Width = 130
+        end>
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    MaxLength = 245
+    TabOrder = 3
+  end
+  object cboHealthLevel: TORComboBox [9]
+    Tag = 50
+    Left = 490
+    Top = 280
+    Width = 121
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Level/Severity'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = cboHealthLevelChange
+    CharsNeedMatch = 1
+  end
+  inherited btnRemove: TButton
+    TabOrder = 5
+  end
+  inherited btnSelectAll: TButton
+    TabOrder = 2
+    TabStop = True
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited lbxSection: TORListBox
+      Tag = 70
+      ExplicitLeft = 210
+    end
+    inherited pnlLeft: TPanel
+      inherited lbSection: TORListBox
+        Tag = 70
+        TabOrder = 0
+        Caption = 'Health Factor Section'
+      end
+      inherited btnOther: TButton
+        Tag = 23
+        Caption = 'Other Health Factor...'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboHealthLevel'
+        'Label = lblHealthLevel'
+        'Status = stsOK')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmHealthFactors'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHealthFactor.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHealthFactor.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fHealthFactor.pas	(revision 1676)
@@ -0,0 +1,120 @@
+unit fHealthFactor;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, ORCtrls, CheckLst, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  fPCELex, fPCEOther, ComCtrls, fPCEBaseMain, VA508AccessibilityManager;
+
+type
+  TfrmHealthFactors = class(TfrmPCEBaseMain)
+    lblHealthLevel: TLabel;
+    cboHealthLevel: TORComboBox;
+
+    procedure cboHealthLevelChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+  public
+  end;
+
+var
+  frmHealthFactors: TfrmHealthFactors;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, VA508AccessibilityRouter;
+
+procedure tfrmHealthFactors.cboHealthLevelChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) and (cboHealthLevel.Text <> '') then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEPat(lbGrid.Items.Objects[i]).Level := cboHealthLevel.ItemID;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmHealthFactors.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_HlthNm;
+  FPCEListCodesProc := ListHealthCodes;
+  FPCEItemClass := TPCEHealth;
+  FPCECode := 'HF';
+  PCELoadORCombo(cboHealthLevel);
+end;
+
+procedure TfrmHealthFactors.UpdateNewItemStr(var x: string);
+begin
+  SetPiece(x, U, pnumHFLevel, NoPCEValue);
+end;
+
+procedure TfrmHealthFactors.UpdateControls;
+var
+  ok, First: boolean;
+  SameHL: boolean;
+  i: integer;
+  HL: string;
+  Obj: TPCEHealth;
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      ok := (lbGrid.SelCount > 0);
+      lblHealthLevel.Enabled := ok;
+      cboHealthLevel.Enabled := ok;
+      if(ok) then
+      begin
+        First := TRUE;
+        SameHL := TRUE;
+        HL := NoPCEValue;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if lbGrid.Selected[i] then
+          begin
+            Obj := TPCEHealth(lbGrid.Items.Objects[i]);
+            if(First) then
+            begin
+              First := FALSE;
+              HL := Obj.Level;
+            end
+            else
+            begin
+              if(SameHL) then
+                SameHL := (HL = Obj.Level);
+            end;
+          end;
+        end;
+        if(SameHL) then
+          cboHealthLevel.SelectByID(HL)
+        else
+          cboHealthLevel.Text := '';
+      end
+      else
+      begin
+        cboHealthLevel.Text := '';
+      end;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmHealthFactors);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fImmunization.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fImmunization.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fImmunization.dfm	(revision 1676)
@@ -0,0 +1,225 @@
+inherited frmImmunizations: TfrmImmunizations
+  Left = 373
+  Top = 169
+  Caption = 'Encouner Immunization'
+  ExplicitLeft = 373
+  ExplicitTop = 169
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblReaction: TLabel [0]
+    Left = 490
+    Top = 274
+    Width = 43
+    Height = 13
+    Caption = 'Reaction'
+  end
+  object lblSeries: TLabel [1]
+    Left = 490
+    Top = 236
+    Width = 29
+    Height = 13
+    Caption = 'Series'
+  end
+  inherited lblSection: TLabel
+    Width = 100
+    Caption = 'Immunization Section'
+    ExplicitWidth = 100
+  end
+  object lblContra: TLabel [6]
+    Left = 509
+    Top = 312
+    Width = 74
+    Height = 26
+    Caption = 'Repeat Contraindicated'
+    WordWrap = True
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 8
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 9
+  end
+  inherited pnlGrid: TPanel
+    TabOrder = 1
+    inherited lbGrid: TORListBox
+      Tag = 40
+      Caption = 'Selected Immunizations'
+      Pieces = '1,2,3,4'
+    end
+    inherited hcGrid: THeaderControl
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 43
+          Text = 'Series'
+          Width = 96
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 57
+          Text = 'Reaction'
+          Width = 134
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 45
+          Text = 'Contra'
+          Width = 45
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 124
+          Text = 'Selected Immunizations'
+          Width = 124
+        end>
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    TabOrder = 3
+  end
+  object cboImmReaction: TORComboBox [11]
+    Tag = 20
+    Left = 490
+    Top = 288
+    Width = 121
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Reaction'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 5
+    OnChange = cboImmReactionChange
+    CharsNeedMatch = 1
+  end
+  object cboImmSeries: TORComboBox [12]
+    Tag = 10
+    Left = 490
+    Top = 250
+    Width = 121
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Series'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = cboImmSeriesChange
+    CharsNeedMatch = 1
+  end
+  object ckbContra: TCheckBox [13]
+    Left = 490
+    Top = 319
+    Width = 13
+    Height = 13
+    Enabled = False
+    TabOrder = 6
+    OnClick = ckbContraClick
+  end
+  inherited btnRemove: TButton
+    TabOrder = 7
+  end
+  inherited btnSelectAll: TButton
+    TabOrder = 2
+    TabStop = True
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited lbxSection: TORListBox
+      Tag = 40
+    end
+    inherited pnlLeft: TPanel
+      inherited lbSection: TORListBox
+        Tag = 40
+        TabOrder = 0
+        Caption = 'Immunization Section'
+      end
+      inherited btnOther: TButton
+        Tag = 20
+        Caption = 'Other Immunization...'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboImmReaction'
+        'Label = lblReaction'
+        'Status = stsOK')
+      (
+        'Component = cboImmSeries'
+        'Label = lblSeries'
+        'Status = stsOK')
+      (
+        'Component = ckbContra'
+        'Status = stsDefault')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmImmunizations'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fImmunization.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fImmunization.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fImmunization.pas	(revision 1676)
@@ -0,0 +1,183 @@
+unit fImmunization;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, ORCtrls, CheckLst, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  fPCELex, fPCEOther, ComCtrls, fPCEBaseMain, VA508AccessibilityManager;
+
+type
+  TfrmImmunizations = class(TfrmPCEBaseMain)
+    lblReaction: TLabel;
+    lblSeries: TLabel;
+    cboImmReaction: TORComboBox;
+    cboImmSeries: TORComboBox;
+    ckbContra: TCheckBox;
+    lblContra: TLabel;
+
+    procedure cboImmSeriesChange(Sender: TObject);
+    procedure cboImmReactionChange(Sender: TObject);
+    procedure ckbContraClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+  public
+//    procedure ChangeProvider;
+  end;
+
+var
+  frmImmunizations: TfrmImmunizations;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, VA508AccessibilityRouter;
+
+procedure TfrmImmunizations.cboImmSeriesChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) and (cboImmSeries.Text <> '') then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEImm(lbGrid.Items.Objects[i]).Series := cboImmSeries.ItemID;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmImmunizations.cboImmReactionChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) and (cboImmReaction.Text <> '') then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEImm(lbGrid.Items.Objects[i]).Reaction := cboImmReaction.ItemID;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmImmunizations.ckbContraClick(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEImm(lbGrid.Items.Objects[i]).Contraindicated := ckbContra.Checked;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmImmunizations.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_ImmNm;
+  FPCEListCodesProc := ListImmunizCodes;
+  FPCEItemClass := TPCEImm;
+  FPCECode := 'IMM';
+  PCELoadORCombo(cboImmReaction);
+  PCELoadORCombo(cboImmSeries);
+end;
+
+procedure TfrmImmunizations.UpdateNewItemStr(var x: string);
+begin
+  inherited;
+  SetPiece(x, U, pnumImmSeries, NoPCEValue);
+  SetPiece(x, U, pnumImmReaction, NoPCEValue);
+  SetPiece(x, U, pnumImmRefused, '0');
+  SetPiece(x, U, pnumImmContra, '0');
+end;
+
+procedure TfrmImmunizations.UpdateControls;
+var
+  ok, Contra, First: boolean;
+  SameS, SameR, SameC: boolean;
+  i: integer;
+  Ser, React: string;
+  Obj: TPCEImm;
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      ok := (lbGrid.SelCount > 0);
+      lblSeries.Enabled := ok;
+      lblReaction.Enabled := ok;
+      cboImmSeries.Enabled := ok;
+      cboImmReaction.Enabled := ok;
+      ckbContra.Enabled := ok;
+      if(ok) then
+      begin
+        First := TRUE;
+        SameS := TRUE;
+        SameR := TRUE;
+        SameC := TRUE;
+        Contra := FALSE;
+        Ser := NoPCEValue;
+        React := NoPCEValue;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if lbGrid.Selected[i] then
+          begin
+            Obj := TPCEImm(lbGrid.Items.Objects[i]);
+            if(First) then
+            begin
+              First := FALSE;
+              Contra := Obj.Contraindicated;
+              Ser := Obj.Series;
+              React := Obj.Reaction;
+            end
+            else
+            begin
+              if(SameS) then
+                SameS := (Ser = Obj.Series);
+              if(SameR) then
+                SameR := (React = Obj.Reaction);
+              if(SameC) then
+                SameC := (Contra = Obj.Contraindicated);
+            end;
+          end;
+        end;
+        if(SameS) then
+          cboImmSeries.SelectByID(Ser)
+        else
+          cboImmSeries.Text := '';
+        if(SameR) then
+          cboImmReaction.SelectByID(React)
+        else
+          cboImmReaction.Text := '';
+        if(SameC) then
+          ckbContra.Checked := Contra
+        else
+          ckbContra.State := cbGrayed;
+      end
+      else
+      begin
+        cboImmSeries.Text := '';
+        cboImmReaction.Text := '';
+        ckbContra.Checked := FALSE;
+      end;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmImmunizations);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBase.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBase.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBase.dfm	(revision 1676)
@@ -0,0 +1,52 @@
+inherited frmPCEBase: TfrmPCEBase
+  Left = 194
+  Top = 170
+  Caption = 'Basic Page'
+  ClientHeight = 400
+  ClientWidth = 624
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  DesignSize = (
+    624
+    400)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object btnOK: TBitBtn [0]
+    Left = 467
+    Top = 376
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = '&OK'
+    ModalResult = 1
+    TabOrder = 0
+    OnClick = btnOKClick
+    NumGlyphs = 2
+  end
+  object btnCancel: TBitBtn [1]
+    Left = 547
+    Top = 376
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = '&Cancel'
+    ModalResult = 2
+    TabOrder = 1
+    OnClick = btnCancelClick
+    NumGlyphs = 2
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPCEBase'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBase.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBase.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBase.pas	(revision 1676)
@@ -0,0 +1,373 @@
+{///////////////////////////////////////////////////////////////////////////////
+//Name: fPCEBase.pas, fPCEBase.dfm
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Parent form for all PCE tabs.  This form will hold methods that are
+// universal for a PCE tabs.  These forms will be child forms to fEncounterFrame.
+////////////////////////////////////////////////////////////////////////////////}
+
+unit fPCEBase;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, uConst,
+  StdCtrls, fAutoSz, Buttons, ORCtrls, ORFn, uPCE, ORDtTm, Checklst,
+  ComCtrls, VA508AccessibilityManager, fBase508Form;
+
+type
+  TfrmPCEBase = class(TfrmAutoSz)
+    btnOK: TBitBtn;
+    btnCancel: TBitBtn;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject); virtual;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    FDisplayCount: Integer;                      // number of times page displayed
+    FPatientCount: Integer;                      // number of times page displayed for given pt
+    FCallingContext: Integer;
+//    function GetInitPage: Boolean;
+//    function GetInitPatient: Boolean;
+//    function GetPatientViewed: Boolean;
+    procedure UMResizePage(var Message: TMessage); message UM_RESIZEPAGE;
+  protected
+    FClosing: boolean;
+    FSectionTabs: array[0..2] of Integer;
+    FSectionTabCount: integer;
+    FTabName: string;
+//    procedure CreateParams(var Params: TCreateParams); override;
+    function ActiveCtrl: TWinControl;
+    function SectionString: string;
+    procedure DoEnter; override;
+  public
+    constructor CreateLinked(AParent: TWinControl);
+    procedure Loaded; override;
+//    function AllowContextChange: Boolean; virtual;
+//    procedure ClearPtData; virtual;
+    procedure DisplayPage; virtual;
+//    procedure NotifyOrder(OrderAction: Integer; AnOrder: TOrder); virtual;  //*no ordering will be done*//
+//    procedure RequestPrint; virtual;
+    procedure SetFontSize(NewFontSize: Integer); virtual;
+    procedure AllowTabChange(var AllowChange: boolean); virtual;
+
+    property CallingContext: Integer read FCallingContext;
+//    property InitPage: Boolean read GetInitPage;
+//    property InitPatient: Boolean read GetInitPatient;
+//    property PatientViewed: Boolean read GetPatientViewed;
+    procedure FocusFirstControl;
+  end;
+
+var
+  frmPCEBase: TfrmPCEBase;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, VA508AccessibilityRouter;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.FormCreate(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Initialize counters to zero
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.FormCreate(Sender: TObject);
+begin
+  FDisplayCount := 0;
+  FPatientCount := 0;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.CreateParams(var Params: TCreateParams);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: turn the form into a child window
+///////////////////////////////////////////////////////////////////////////////}
+(*procedure TfrmPCEBase.CreateParams(var Params: TCreateParams);
+{ turn the form into a child window }
+begin
+  inherited CreateParams(Params);
+  with Params do
+  begin
+    if Owner is TPanel
+      then WndParent := TPanel(Owner).Handle
+    else if owner is TForm then
+      WndParent := (Owner as TForm).Handle;
+    Style := WS_CHILD or WS_CLIPSIBLINGS;
+    X := 0; Y := 0;
+  end;
+end;
+ *)
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.Loaded;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: make the form borderless to allow it to be a child window
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.Loaded;
+begin
+  inherited Loaded;
+  Visible := False;
+  Position := poDefault;
+  BorderIcons := [];
+  BorderStyle := bsNone;
+  HandleNeeded;
+  SetBounds(0, 0, Width, Height);
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmPCEBase.AllowContextChange: Boolean;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description:
+///////////////////////////////////////////////////////////////////////////////}
+(*function TfrmPCEBase.AllowContextChange: Boolean;
+begin
+  Result := True;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.ClearPtData;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: clear all patient related data on a page
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.ClearPtData;
+begin
+  FPatientCount := 0;
+end;
+*)
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.DisplayPage;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: cause the page to be displayed and update the display counters
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.DisplayPage;
+begin
+  BringToFront;
+//  FocusControl(ActiveCtrl);
+  //SetFocus;
+  Inc(FDisplayCount);
+  Inc(FPatientCount);
+  FCallingContext := frmEncounterFrame.ChangeSource;
+  if (FCallingContext = CC_CLICK) and (FPatientCount = 1)
+    then FCallingContext := CC_INIT_PATIENT;
+end;
+(*
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.RequestPrint;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: For posible future use when printing is supported.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.RequestPrint;
+begin
+  //
+end;
+*)
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.SetFontSize(NewFontSize: Integer);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Assign the new font size.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.SetFontSize(NewFontSize: Integer);
+begin
+  Font.Size := NewFontSize;
+end;
+(*
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmPCEBase.GetInitPage: Boolean;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: if the count is one, this is the first time the page is being displayed.
+///////////////////////////////////////////////////////////////////////////////}
+function TfrmPCEBase.GetInitPage: Boolean;
+begin
+  Result := FDisplayCount = 1;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmPCEBase.GetInitPatient: Boolean;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: if the count is one, this is the first time the page is being
+// displayed for a given patient
+///////////////////////////////////////////////////////////////////////////////}
+function TfrmPCEBase.GetInitPatient: Boolean;
+begin
+  Result := FPatientCount = 1;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: function TfrmPCEBase.GetPatientViewed: Boolean;
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: returns false if the tab has never been clicked for this patient
+///////////////////////////////////////////////////////////////////////////////}
+function TfrmPCEBase.GetPatientViewed: Boolean;
+begin
+  Result := FPatientCount > 0;
+end;
+*)
+(*
+procedure RepaintControl(AControl: TControl);
+var
+  i: Integer;
+begin
+  AControl.Invalidate;
+  AControl.Update;
+  if AControl is TWinControl then with TWinControl(AControl) do
+    for i := 0 to ControlCount - 1 do RepaintControl(Controls[i]);
+end;
+*)
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.UMResizePage(var Message: TMessage);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Redraw the controls on the form when it is resized.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.UMResizePage(var Message: TMessage);
+var
+  i: Integer;
+begin
+  for i := 0 to ComponentCount - 1 do
+    if Components[i] is TControl then with TControl(Components[i]) do Invalidate;
+  Update;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.btnCancelClick(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Indicate to the frame that cancel was pressed, and close the frame.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.btnCancelClick(Sender: TObject);
+begin
+  inherited;
+  frmencounterframe.Abort := FALSE;
+  frmEncounterFrame.Cancel := true;
+  frmencounterframe.Close;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.btnCancelClick(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Indicate to the frame that it should close and save data.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.btnOKClick(Sender: TObject);
+begin
+  frmencounterframe.Abort := FALSE;
+  frmencounterframe.Close;
+end;
+
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.FormClose(Sender: TObject; var Action: TCloseAction);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Free the memory held by the form.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  action := caFree;    //destroy the forms when closed
+  FClosing := TRUE;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name: procedure TfrmPCEBase.CheckListDrawItem(Control: TWinControl; Index: Integer; Rect: TRect;
+//  State: TOwnerDrawState);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description: Populate the checklist
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmPCEBase.AllowTabChange(var AllowChange: boolean);
+begin
+end;
+
+constructor TfrmPCEBase.CreateLinked(AParent: TWinControl);
+begin
+  inherited Create(GetParentForm(AParent));
+  Parent := AParent;
+  Align := alClient;
+  Show;
+end;
+
+function TfrmPCEBase.ActiveCtrl: TWinControl;
+begin
+  Result := GetParentForm(Self).ActiveControl;
+  if(Result is TORComboEdit) then
+    Result := TWinControl(Result.Owner);
+end;
+
+function TfrmPCEBase.SectionString: string;
+var
+  v, i: integer;
+
+begin
+  Result := '';
+  if FSectionTabCount = 0 then exit;
+  v := 0;
+  for i := 0 to FSectionTabCount-1 do
+  begin
+    if(Result <> '') then
+      Result := Result + ',';
+    Result := Result + IntToStr(FSectionTabs[i]);
+    v := FSectionTabs[i];
+  end;
+  for i := 1 to 20 do
+  begin
+    if(v<0) then
+      dec(v,32)
+    else
+      inc(v,32);
+    if Result <> '' then Result := Result + ',';
+    Result := Result + inttostr(v);
+  end;
+end;
+
+procedure TfrmPCEBase.DoEnter;
+begin
+  inherited;
+  frmEncounterFrame.SelectTab(FTabName);
+end;
+
+procedure TfrmPCEBase.FocusFirstControl;
+begin
+//  SetFocus;
+  FindNextControl(self, True, True, False).SetFocus;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPCEBase);
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseGrid.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseGrid.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseGrid.dfm	(revision 1676)
@@ -0,0 +1,70 @@
+inherited frmPCEBaseGrid: TfrmPCEBaseGrid
+  Left = 128
+  Top = 192
+  Caption = 'frmPCEBaseGrid'
+  ExplicitLeft = 128
+  ExplicitTop = 192
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlGrid: TPanel [2]
+    Left = 6
+    Top = 238
+    Width = 451
+    Height = 87
+    BevelOuter = bvNone
+    TabOrder = 2
+    OnResize = pnlGridResize
+    object lbGrid: TORListBox
+      Left = 0
+      Top = 17
+      Width = 451
+      Height = 70
+      Align = alClient
+      Color = clCream
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      ItemTipColor = clCream
+      LongList = False
+      TabPosInPixels = True
+    end
+    object hcGrid: THeaderControl
+      Left = 0
+      Top = 0
+      Width = 451
+      Height = 17
+      Sections = <
+        item
+          ImageIndex = -1
+          Width = 50
+        end
+        item
+          ImageIndex = -1
+          Width = 50
+        end>
+      OnSectionResize = hcGridSectionResize
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPCEBaseGrid'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseGrid.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseGrid.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseGrid.pas	(revision 1676)
@@ -0,0 +1,231 @@
+unit fPCEBaseGrid;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, ComCtrls, StdCtrls, ORCtrls, ExtCtrls, Buttons, ORFn,
+  VA508AccessibilityManager;
+
+type
+  TfrmPCEBaseGrid = class(TfrmPCEBase)
+    pnlGrid: TPanel;
+    lbGrid: TORListBox;
+    hcGrid: THeaderControl;
+    procedure FormCreate(Sender: TObject);
+    procedure hcGridSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure pnlGridResize(Sender: TObject);
+  private
+    FSel: string;
+    FGridHeaderSyncing: boolean;
+    function GetGridIndex: integer;
+    procedure SetGridIndex(const Value: integer);
+  protected
+    FSectionGap: integer;
+    procedure UpdateControls; virtual;
+    procedure SaveGridSelected;
+    procedure RestoreGridSelected;
+  public
+    procedure SyncGridHeader(FromHeader: boolean);
+    procedure SyncGridData;
+    procedure ClearGrid;
+    property GridIndex: integer read GetGridIndex write SetGridIndex;
+  end;
+
+var
+  frmPCEBaseGrid: TfrmPCEBaseGrid;
+
+implementation
+
+uses
+  VA2006Utils, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+const
+  JustificationGap = 5;
+
+procedure TfrmPCEBaseGrid.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FixHeaderControlDelphi2006Bug(hcGrid);
+  FSectionGap := 15;
+  SyncGridHeader(TRUE);
+end;
+
+procedure TfrmPCEBaseGrid.SyncGridHeader(FromHeader: boolean);
+var
+  i, w, wd, wp, Gap: integer;
+  txt: string;
+
+begin
+  if(not FGridHeaderSyncing) then
+  begin
+    Gap := JustificationGap;
+    FGridHeaderSyncing := TRUE;
+    try
+      if(FromHeader) then
+      begin
+        txt := '';
+        w := 0;
+        for i := 0 to hcGrid.Sections.Count-2 do
+        begin
+          if(i > 0) then
+            txt := txt + ',';
+          inc(w,(hcGrid.Sections[i].Width div 2)*2);
+          txt := txt + IntToStr(w + Gap);
+          Gap := 0;
+        end;
+        lbGrid.TabPositions := txt;
+      end
+      else
+      begin
+        txt := lbGrid.TabPositions;
+        wd := 0;
+        for i := 0 to hcGrid.Sections.Count-2 do
+        begin
+          wp := StrToIntDef(Piece(txt,',',i+1),hcGrid.Sections[i].MinWidth);
+          w := wp - wd;
+          hcGrid.Sections[i].Width := w - Gap;
+          Gap := 0;
+          wd := wp;
+        end;
+      end;
+      w := 0;
+      for i := 0 to hcGrid.Sections.Count-2 do
+        inc(w,hcGrid.Sections[i].Width);
+      hcGrid.Sections[hcGrid.Sections.Count-1].Width := pnlGrid.Width - w;
+    finally
+      FGridHeaderSyncing := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmPCEBaseGrid.hcGridSectionResize(
+  HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  SyncGridHeader(TRUE);
+end;
+
+procedure TfrmPCEBaseGrid.pnlGridResize(Sender: TObject);
+begin
+  inherited;
+  SyncGridHeader(TRUE);
+end;
+
+procedure TfrmPCEBaseGrid.SyncGridData;
+var
+  tp, ltp, i, j, tlen: integer;
+  max: array[0..9] of integer; // more than 10 header sections will cause this to explode
+  tmp: string;
+
+begin
+  if(lbGrid.Items.Count > 0) then
+  begin
+    for j := 0 to hcGrid.Sections.Count-2 do max[j] := 0;
+    for i := 0 to lbGrid.Items.Count-1 do
+    begin
+      tmp := lbGrid.Items[i];
+      for j := 0 to hcGrid.Sections.Count-2 do
+      begin
+        tlen := Canvas.TextWidth(Piece(tmp,U,j+1)) + FSectionGap;
+        if(max[j] < tlen) then
+          max[j] := tlen;
+      end;
+    end;
+    ltp := 0;
+    tmp := lbGrid.TabPositions;
+    for i := 0 to hcGrid.Sections.Count-2 do
+    begin
+      if(max[i] < hcGrid.Sections[i].MinWidth) then
+        max[i] := hcGrid.Sections[i].MinWidth;
+      tp := StrToIntDef(Piece(tmp,',',i+1),0);
+      tlen := tp - ltp;
+      ltp := tp;
+      if(max[i] < tlen) then
+        max[i] := tlen;
+    end;
+    for i := 1 to hcGrid.Sections.Count-2 do
+      inc(max[i], max[i-1]);
+    tmp := '';
+    for i := 0 to hcGrid.Sections.Count-2 do
+      tmp := tmp + ',' + inttostr(max[i]);
+    delete(tmp,1,1);
+    if(lbGrid.TabPositions <> tmp) then
+    begin
+      SaveGridSelected;
+      lbGrid.TabPositions := tmp;
+      RestoreGridSelected;
+    end;
+    SyncGridHeader(FALSE);
+  end;
+end;
+
+function TfrmPCEBaseGrid.GetGridIndex: integer;
+var
+  i: integer;
+
+begin
+  Result := -1;
+  if(lbGrid.SelCount > 0) then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+      begin
+        Result := i;
+        exit;
+      end;
+  end;
+end;
+
+procedure TfrmPCEBaseGrid.SetGridIndex(const Value: integer);
+var
+  i: integer;
+
+begin
+  for i := 0 to lbGrid.Items.Count-1 do
+    lbGrid.Selected[i] := (i = Value);
+  UpdateControls;
+end;
+
+procedure TfrmPCEBaseGrid.ClearGrid;
+var
+  i: integer;
+
+begin
+  if lbGrid.SelCount > 0 then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      lbGrid.Selected[i] := FALSE;
+  end;
+  UpdateControls;
+end;
+
+procedure TfrmPCEBaseGrid.UpdateControls;
+begin
+end;
+
+procedure TfrmPCEBaseGrid.RestoreGridSelected;
+var
+  i: integer;
+
+begin
+  for i := 0 to lbGrid.Items.Count-1 do
+    lbGrid.Selected[i] := (copy(FSel,i+1,1) = BOOLCHAR[TRUE]);
+end;
+
+procedure TfrmPCEBaseGrid.SaveGridSelected;
+var
+  i: integer;
+begin
+  FSel := '';
+  for i := 0 to lbGrid.Items.Count-1 do
+    FSel := FSel + BOOLCHAR[lbGrid.Selected[i]];
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPCEBaseGrid);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseMain.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseMain.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseMain.dfm	(revision 1676)
@@ -0,0 +1,226 @@
+inherited frmPCEBaseMain: TfrmPCEBaseMain
+  Left = 302
+  Top = 166
+  Caption = 'frmPCEBaseMain'
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSection: TLabel [0]
+    Left = 6
+    Top = 6
+    Width = 46
+    Height = 13
+    Caption = 'lblSection'
+  end
+  object lblList: TLabel [1]
+    Left = 213
+    Top = 6
+    Width = 67
+    Height = 13
+    Caption = 'Section Name'
+  end
+  object lblComment: TLabel [2]
+    Left = 6
+    Top = 328
+    Width = 49
+    Height = 13
+    Caption = 'Comments'
+  end
+  object bvlMain: TBevel [3]
+    Left = 0
+    Top = 230
+    Width = 619
+    Height = 140
+  end
+  inherited btnOK: TBitBtn
+    Left = 464
+    TabOrder = 1
+    ExplicitLeft = 464
+  end
+  inherited btnCancel: TBitBtn
+    Left = 544
+    TabOrder = 2
+    ExplicitLeft = 544
+  end
+  inherited pnlGrid: TPanel
+    Width = 475
+    TabOrder = 0
+    ExplicitWidth = 475
+    inherited lbGrid: TORListBox
+      Width = 475
+      MultiSelect = True
+      OnClick = lbGridSelect
+      OnExit = lbGridExit
+      OnChange = lbGridSelect
+      CheckEntireLine = True
+      ExplicitWidth = 475
+    end
+    inherited hcGrid: THeaderControl
+      Width = 475
+      ExplicitWidth = 475
+    end
+  end
+  object edtComment: TCaptionEdit [7]
+    Left = 6
+    Top = 343
+    Width = 523
+    Height = 21
+    TabOrder = 5
+    OnChange = edtCommentChange
+    OnExit = edtCommentExit
+    OnKeyPress = edtCommentKeyPress
+    Caption = 'Comments'
+  end
+  object btnRemove: TButton [8]
+    Left = 536
+    Top = 343
+    Width = 75
+    Height = 21
+    Caption = 'Remove'
+    TabOrder = 4
+    OnClick = btnRemoveClick
+  end
+  object btnSelectAll: TButton [9]
+    Left = 406
+    Top = 326
+    Width = 75
+    Height = 17
+    Caption = 'Select All'
+    TabOrder = 3
+    TabStop = False
+    OnClick = btnSelectAllClick
+  end
+  object pnlMain: TPanel [10]
+    Left = 6
+    Top = 20
+    Width = 612
+    Height = 204
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 6
+    object splLeft: TSplitter
+      Left = 204
+      Top = 0
+      Height = 204
+      OnMoved = splLeftMoved
+    end
+    object lbxSection: TORListBox
+      Left = 207
+      Top = 0
+      Width = 405
+      Height = 204
+      Style = lbOwnerDrawFixed
+      Align = alClient
+      ExtendedSelect = False
+      ItemHeight = 16
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = clbListClick
+      OnExit = lbxSectionExit
+      OnMouseDown = clbListMouseDown
+      Caption = 'Section Name'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+      TabPosInPixels = True
+      CheckBoxes = True
+      CheckEntireLine = True
+      OnClickCheck = lbxSectionClickCheck
+    end
+    object pnlLeft: TPanel
+      Left = 0
+      Top = 0
+      Width = 204
+      Height = 204
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      DesignSize = (
+        204
+        204)
+      object lbSection: TORListBox
+        Left = 0
+        Top = 0
+        Width = 204
+        Height = 174
+        Align = alTop
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = lbSectionClick
+        OnExit = lbSectionExit
+        Caption = 'Section'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '3'
+        CheckEntireLine = True
+        ExplicitLeft = -3
+        ExplicitTop = -2
+      end
+      object btnOther: TButton
+        Left = 65
+        Top = 178
+        Width = 139
+        Height = 21
+        Anchors = [akTop, akRight]
+        Caption = 'Other'
+        TabOrder = 0
+        OnClick = btnOtherClick
+        OnExit = btnOtherExit
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 24
+    Top = 24
+    Data = (
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPCEBaseMain'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseMain.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseMain.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEBaseMain.pas	(revision 1676)
@@ -0,0 +1,603 @@
+unit fPCEBaseMain;
+{Warning: The tab order has been changed in the OnExit event of several controls.
+ To change the tab order of lbSection, lbxSection, and btnOther you must do it programatically.}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBaseGrid, ComCtrls, StdCtrls, ORCtrls, ExtCtrls, Buttons, rPCE, uPCE,
+  CheckLst, ORFn, VA508AccessibilityManager;
+
+type
+  TCopyItemsMethod = procedure(Dest: TStrings) of object;
+  TListSectionsProc = procedure(Dest: TStrings);
+
+  TfrmPCEBaseMain = class(TfrmPCEBaseGrid)
+    lbSection: TORListBox;
+    edtComment: TCaptionEdit;
+    lblSection: TLabel;
+    lblList: TLabel;
+    lblComment: TLabel;
+    btnRemove: TButton;
+    btnOther: TButton;
+    bvlMain: TBevel;
+    btnSelectAll: TButton;
+    lbxSection: TORListBox;
+    pnlMain: TPanel;
+    pnlLeft: TPanel;
+    splLeft: TSplitter;
+    procedure lbSectionClick(Sender: TObject);
+    procedure btnOtherClick(Sender: TObject);
+    procedure edtCommentExit(Sender: TObject);
+    procedure edtCommentChange(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure clbListClick(Sender: TObject);
+    procedure lbGridSelect(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure btnSelectAllClick(Sender: TObject);
+    procedure FormResize(Sender: TObject); virtual;
+    procedure clbListMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure lbxSectionClickCheck(Sender: TObject; Index: Integer);
+    procedure splLeftMoved(Sender: TObject);
+    procedure edtCommentKeyPress(Sender: TObject; var Key: Char);
+    procedure lbSectionExit(Sender: TObject);
+    procedure btnOtherExit(Sender: TObject);
+    procedure lbxSectionExit(Sender: TObject);
+    procedure lbGridExit(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    FCommentItem: integer;
+    FCommentChanged: boolean;
+    FUpdateCount: integer;
+    FSectionPopulated: boolean;
+    //FUpdatingGrid: boolean;  moved to 'protected' so frmDiagnoses can see it  (RV)
+  protected
+    FUpdatingGrid: boolean;
+    FPCEListCodesProc: TPCEListCodesProc;
+    FPCEItemClass: TPCEItemClass;
+    FPCECode: string;
+    FSplitterMove: boolean;
+    function GetCat: string;
+    procedure UpdateNewItemStr(var x: string); virtual;
+//    procedure UpdateNewItem(APCEItem: TPCEItem); virtual;
+    procedure GridChanged; virtual;
+    procedure UpdateControls; override;
+    procedure BeginUpdate;
+    procedure EndUpdate;
+    function NotUpdating: boolean;
+    procedure CheckOffEntries;
+    procedure UpdateTabPos;
+    procedure Sync2Grid;
+    procedure Sync2Section;
+  public
+    procedure AllowTabChange(var AllowChange: boolean); override;
+    procedure InitTab(ACopyProc: TCopyItemsMethod; AListProc: TListSectionsProc);
+  end;
+
+var
+  frmPCEBaseMain: TfrmPCEBaseMain;
+
+const
+  LBCheckWidthSpace = 18;
+
+implementation
+
+uses fPCELex, fPCEOther, fEncounterFrame, fHFSearch, VA508AccessibilityRouter,
+  ORCtrlsVA508Compatibility, fBase508Form;
+
+{$R *.DFM}
+
+type
+  TLBSectionManager = class(TORListBox508Manager)
+  public
+    function GetItemInstructions(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;    
+  end;
+
+procedure TfrmPCEBaseMain.lbSectionClick(Sender: TObject);
+begin
+  inherited;
+  ClearGrid;
+  FPCEListCodesProc(lbxSection.Items, lbSection.ItemIEN);
+  CheckOffEntries;
+  FSectionPopulated := TRUE;
+end;
+
+procedure TfrmPCEBaseMain.lbSectionExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed then
+    if lbxSection.CanFocus then
+      lbxSection.SetFocus;
+end;
+
+procedure TfrmPCEBaseMain.UpdateNewItemStr(var x: string);
+begin
+end;
+
+procedure TfrmPCEBaseMain.GridChanged;
+var
+  i: integer;
+  tmpList: TStringList;
+begin
+  tmpList := TStringList.Create;
+  BeginUpdate;
+  try
+    SaveGridSelected;
+    FastAssign(lbGrid.Items, tmpList);
+    for i := 0 to lbGrid.Items.Count-1 do
+    begin
+      //lbGrid.Items[i] := TPCEItem(lbGrid.Items.Objects[i]).ItemStr;   v22.5 - RV
+      tmpList[i] := TPCEItem(lbGrid.Items.Objects[i]).ItemStr;
+      tmpList.Objects[i] := lbGrid.Items.Objects[i];
+    end;
+  //FastAssign(tmpList,lbGrid.Items); //cq: 13228  Causin a/v errors.
+    lbGrid.Items.Assign(tmpList);    //cq: 13228
+    RestoreGridSelected;
+    SyncGridData;
+  finally
+    EndUpdate;
+    tmpList.Free;
+  end;
+  UpdateControls;
+end;
+
+//procedure TfrmPCEBaseMain.UpdateNewItem(APCEItem: TPCEItem);
+//begin
+//end;
+
+procedure TfrmPCEBaseMain.btnOtherClick(Sender: TObject);
+var
+  x, Code: string;
+  APCEItem: TPCEItem;
+  SrchCode: integer;
+begin
+  inherited;
+  ClearGrid;
+  SrchCode := (Sender as TButton).Tag;
+  if(SrchCode <= LX_Threshold) then
+    LexiconLookup(Code, SrchCode)
+  else
+  if(SrchCode = PCE_HF) then
+    HFLookup(Code)
+  else
+    OtherLookup(Code, SrchCode);
+  btnOther.SetFocus;
+  if Code <> '' then
+  begin
+    x := FPCECode + U + Piece(Code, U, 1) + U + U + Piece(Code, U, 2);
+    if FPCEItemClass = TPCEProc then
+      SetPiece(x, U, pnumProvider, IntToStr(uProviders.PCEProvider));
+    UpdateNewItemStr(x);
+    APCEItem := FPCEItemClass.Create;
+    APCEItem.SetFromString(x);
+//    UpdateNewItem(APCEItem);
+    GridIndex := lbGrid.Items.AddObject(APCEItem.ItemStr, APCEItem);
+    SyncGridData;
+  end;
+  UpdateControls;
+end;
+
+procedure TfrmPCEBaseMain.btnOtherExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed then begin
+    if lbGrid.CanFocus then
+      lbGrid.SetFocus
+  end
+  else if ShiftTabIsPressed then
+    if lbxSection.CanFocus then
+      lbxSection.SetFocus;
+end;
+
+procedure TfrmPCEBaseMain.edtCommentExit(Sender: TObject);
+begin
+  inherited;
+  if(FCommentChanged) then
+  begin
+    FCommentChanged := FALSE;
+    if(FCommentItem >= 0) then
+      TPCEItem(lbGrid.Items.Objects[FCommentItem]).Comment := edtComment.text;
+  end;
+end;
+
+procedure TfrmPCEBaseMain.AllowTabChange(var AllowChange: boolean);
+begin
+  edtCommentExit(Self);
+end;
+
+procedure TfrmPCEBaseMain.edtCommentChange(Sender: TObject);
+begin
+  inherited;
+  FCommentItem := GridIndex;
+  FCommentChanged := TRUE;
+end;
+
+procedure TfrmPCEBaseMain.btnRemoveClick(Sender: TObject);
+var
+  i, j: Integer;
+  APCEItem: TPCEItem;
+  CurCategory: string;
+
+begin
+  inherited;
+  FUpdatingGrid := TRUE;
+  try
+    for i := lbGrid.Items.Count-1 downto 0 do if(lbGrid.Selected[i]) then
+    begin
+      CurCategory := GetCat;
+      APCEItem := TPCEDiag(lbGrid.Items.Objects[i]);
+      if APCEItem.Category = CurCategory then
+      begin
+        with APCEItem do for j := 0 to lbxSection.Items.Count - 1 do
+          if ORFn.Pieces(lbxSection.Items[j], U, 1, 2) = Code + U + Narrative then
+            lbxSection.Checked[j] := False;
+      end;
+      APCEItem.Free;
+      lbGrid.Items.Delete(i);
+    end;
+    ClearGrid;
+  finally
+    FUpdatingGrid := FALSE;
+  end;
+end;
+
+procedure TfrmPCEBaseMain.UpdateControls;
+var
+  CommentOK: boolean;
+
+begin
+  btnSelectAll.Enabled := (lbGrid.Items.Count > 0);
+  btnRemove.Enabled := (lbGrid.SelCount > 0);
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      inherited;
+      CommentOK := (lbGrid.SelCount = 1);
+      lblComment.Enabled := CommentOK;
+      edtComment.Enabled := CommentOK;
+      if(CommentOK) then
+        edtComment.Text := TPCEItem(lbGrid.Items.Objects[GridIndex]).Comment
+      else
+        edtComment.Text := '';
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+procedure TfrmPCEBaseMain.clbListClick(Sender: TObject);
+begin
+  inherited;
+//  with clbList do
+//  if(ItemIndex >= 0) and (not(Checked[ItemIndex])) then
+//    ClearGrid;
+end;
+
+procedure TfrmPCEBaseMain.lbGridExit(Sender: TObject);
+begin
+  inherited;
+  if ShiftTabIsPressed then
+    if btnOther.CanFocus then
+      btnOther.SetFocus;
+end;
+
+procedure TfrmPCEBaseMain.lbGridSelect(Sender: TObject);
+begin
+  inherited;
+//  clbList.ItemIndex := -1;
+  UpdateControls;
+end;
+
+procedure TfrmPCEBaseMain.FormCreate(Sender: TObject);
+begin
+  inherited FormCreate(Sender);
+  lbxSection.HideSelection := TRUE;
+  amgrMain.ComponentManager[lbSection] := TLBSectionManager.Create;
+end;
+
+procedure TfrmPCEBaseMain.FormDestroy(Sender: TObject);
+var
+  i:integer;
+
+begin
+  inherited;
+  with lbGrid.Items do for i := 0 to Count - 1 do TPCEItem(Objects[i]).Free;
+end;
+
+procedure TfrmPCEBaseMain.InitTab(ACopyProc: TCopyItemsMethod; AListProc: TListSectionsProc);
+begin
+  AListProc(lbSection.Items);
+  ACopyProc(lbGrid.Items);
+  lbSection.ItemIndex := 0;
+  lbSectionClick(lbSection);
+  ClearGrid;
+  GridChanged;
+//  CheckOffEntries;
+end;
+
+procedure TfrmPCEBaseMain.BeginUpdate;
+begin
+  inc(FUpdateCount);
+end;
+
+procedure TfrmPCEBaseMain.EndUpdate;
+begin
+  if(FUpdateCount > 0) then
+    dec(FUpdateCount);
+end;
+
+function TfrmPCEBaseMain.NotUpdating: boolean;
+begin
+  Result := (FUpdateCount = 0);
+end;
+
+procedure TfrmPCEBaseMain.CheckOffEntries;
+{ TODO -oRich V. -cCode Set Versioning : Uncomment these lines to prevent acceptance of existing inactive DX codes. }
+(*const
+  TX_INACTIVE_ICD_CODE1 = 'The diagnosis of "';
+  TX_INACTIVE_ICD_CODE2 = '" entered for this encounter' + #13#10 + 'contains an inactive ICD code of "';
+  TX_INACTIVE_ICD_CODE3 = '" as of the encounter date, and will be removed.' + #13#10#13#10 +
+                          'Please select another diagnosis.';
+  TC_INACTIVE_ICD_CODE = 'Diagnosis Contains Inactive Code';*)
+var
+  i, j: Integer;
+  CurCategory, CodeNarr: string;
+  APCEItem: TPCEItem;
+begin
+  FUpdatingGrid := TRUE;
+  try
+    if(lbSection.Items.Count < 1) then exit;
+    CurCategory := GetCat;
+    for i := lbGrid.Items.Count - 1 downto 0 do
+    begin
+      APCEItem := TPCEItem(lbGrid.Items.Objects[i]);
+      if APCEItem.Category = CurCategory then
+      begin
+        CodeNarr := APCEItem.Code + U + APCEItem.Narrative;
+        for j := 0 to lbxSection.Items.Count - 1 do
+          if ORFn.Pieces(lbxSection.Items[j], U, 1, 2) = CodeNarr then
+            begin
+{ TODO -oRich V. -cCode Set Versioning : Uncomment these lines to prevent acceptance of existing inactive DX codes. }
+(*              if (CurCategory = 'Problem List Items') and (Piece(lbxSection.Items[j], U, 5) = '#') then
+                begin
+                  InfoBox(TX_INACTIVE_ICD_CODE1 + APCEItem.Narrative + TX_INACTIVE_ICD_CODE2 +
+                         APCEItem.Code + TX_INACTIVE_ICD_CODE3, TC_INACTIVE_ICD_CODE, MB_ICONWARNING or MB_OK);
+                  lbxSection.Checked[j] := False;
+                  APCEItem.Free;
+                  lbGrid.Items.Delete(i);
+                end
+              else*)
+                lbxSection.Checked[j] := True;
+            end;
+      end;
+    end;
+  finally
+    FUpdatingGrid := FALSE;
+  end;
+end;
+
+procedure TfrmPCEBaseMain.btnSelectAllClick(Sender: TObject);
+var
+  i: integer;
+
+begin
+  inherited;
+  BeginUpdate;
+  try
+    for i := 0 to lbGrid.Items.Count-1 do
+      lbGrid.Selected[i] := TRUE;
+  finally
+    EndUpdate;
+  end;
+  UpdateControls;
+end;
+
+procedure TfrmPCEBaseMain.FormResize(Sender: TObject);
+begin
+  if FSplitterMove then
+    FSplitterMove := FALSE
+  else
+    inherited;
+end;
+
+procedure TfrmPCEBaseMain.clbListMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+//  if(Button <> mbLeft) then
+//    clbList.Itemindex := clbList.itemAtPos(Point(X,Y), TRUE);
+end;
+
+function TfrmPCEBaseMain.GetCat: string;
+begin
+  Result := '';
+  if(lbSection.Items.Count > 0) and (lbSection.ItemIndex >= 0) then
+    Result := Piece(lbSection.Items[lbSection.ItemIndex], U, 2);
+end;
+
+procedure TfrmPCEBaseMain.lbxSectionClickCheck(Sender: TObject;
+  Index: Integer);
+var
+  i, j: Integer;
+  x, x0, CodeCatNarr: string;
+  APCEItem: TPCEItem;
+  Found, DoSync: boolean;
+
+begin
+  inherited;
+  if FUpdatingGrid or FClosing then exit;
+  DoSync := FALSE;
+  x0 := GetCat;
+  for i := 0 to lbxSection.Items.Count-1 do
+  begin
+    x := x0 + U + ORFn.Pieces(lbxSection.Items[i], U, 1, 2);
+    CodeCatNarr := Piece(x, U, 2) + U + Piece(x, U, 1) + U + Piece(x, U, 3);
+    Found := FALSE;
+    for j := lbGrid.Items.Count - 1 downto 0 do
+    begin
+      APCEItem := TPCEItem(lbGrid.Items.Objects[j]);
+      with APCEItem do if CodeCatNarr = Code + U + Category + U + Narrative then
+      begin
+        Found := TRUE;
+        if(lbxSection.Checked[i]) then break;
+        APCEItem.Free;
+        lbGrid.Items.Delete(j);
+      end;
+    end;
+    if(lbxSection.Checked[i] and (not Found)) then
+    begin
+      x := FPCECode + U + CodeCatNarr;
+      if FPCEItemClass = TPCEProc then
+        SetPiece(x, U, pnumProvider, IntToStr(uProviders.PCEProvider));
+      UpdateNewItemStr(x);
+      APCEItem := FPCEItemClass.Create;
+      APCEItem.SetFromString(x);
+      GridIndex := lbGrid.Items.AddObject(APCEItem.ItemStr, APCEItem);
+      DoSync := TRUE;
+    end;
+  end;
+  if(DoSync) then
+    SyncGridData;
+  UpdateControls;
+end;
+
+procedure TfrmPCEBaseMain.lbxSectionExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed then begin
+    if btnOther.CanFocus then
+      btnOther.SetFocus
+  end
+  else if ShiftTabIsPressed then
+    if lbSection.CanFocus then
+      lbSection.SetFocus;
+end;
+
+procedure TfrmPCEBaseMain.UpdateTabPos;
+begin
+  lbxSection.TabPositions := SectionString;
+end;
+
+procedure TfrmPCEBaseMain.splLeftMoved(Sender: TObject);
+begin
+  inherited;
+  lblList.Left := lbxSection.Left + pnlMain.Left;
+  FSplitterMove := TRUE;
+  FormResize(Sender);
+end;
+
+procedure TfrmPCEBaseMain.Sync2Grid;
+var
+  i, idx, cnt, NewIdx: Integer;
+  CodeNarr: string;
+  APCEItem: TPCEItem;
+
+begin
+  if(FUpdatingGrid or FClosing) then exit;
+  FUpdatingGrid := TRUE;
+  try
+    cnt := 0;
+    idx := -1;
+    for i := 0 to lbGrid.Items.Count - 1 do
+    begin
+      if(lbGrid.Selected[i]) then
+      begin
+        if(idx < 0) then idx := i;
+        inc(cnt);
+        if(cnt > 1) then break;
+      end;
+    end;
+    NewIdx := -1;
+    if(cnt = 1) then
+    begin
+      APCEItem := TPCEItem(lbGrid.Items.Objects[idx]);
+      if APCEItem.Category = GetCat then
+      begin
+        CodeNarr := APCEItem.Code + U + APCEItem.Narrative;
+        for i := 0 to lbxSection.Items.Count - 1 do
+        begin
+          if Pieces(lbxSection.Items[i], U, 1, 2) = CodeNarr then
+          begin
+            NewIdx := i;
+            break;
+          end;
+        end;
+      end;
+    end;
+    lbxSection.ItemIndex := NewIdx;
+  finally
+    FUpdatingGrid := FALSE;
+  end;
+end;
+
+procedure TfrmPCEBaseMain.Sync2Section;
+var
+  i, idx: Integer;
+  ACode: string;
+
+begin
+  if(FUpdatingGrid or FClosing) then exit;
+  FUpdatingGrid := TRUE;
+  try
+    idx := lbxSection.ItemIndex;
+    if(idx >= 0) then
+      ACode := GetCat + U + Pieces(lbxSection.Items[idx], U, 1, 2)
+    else
+      ACode := '~@^~@^@~';
+    for i := 0 to lbGrid.Items.Count - 1 do
+    begin
+      with TPCEItem(lbGrid.Items.Objects[i]) do
+        lbGrid.Selected[i] := (ACode = (Category + U + Code + U + Narrative));
+    end;
+  finally
+    FUpdatingGrid := FALSE;
+  end;
+end;
+
+procedure TfrmPCEBaseMain.edtCommentKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  inherited;
+  if (Key = '?') and
+     ((edtComment.Text = '') or (edtComment.SelStart = 0)) then
+    Key := #0;
+end;
+
+{ TLBSectionManager }
+
+function TLBSectionManager.GetItemInstructions(Component: TWinControl): string;
+var
+  lb : TORListBox;
+  idx: integer;
+begin
+  lb := TORListBox(Component);
+  idx := lb.ItemIndex;
+  if (idx >= 0) and lb.Selected[idx] then
+    Result := 'Press space bar to populate ' +
+        TfrmPCEBaseMain(Component.Owner).FTabName + ' section'
+  else
+    result := inherited GetItemInstructions(Component);
+end;
+
+function TLBSectionManager.GetState(Component: TWinControl): string;
+var
+  frm: TfrmPCEBaseMain;
+begin
+  Result := '';
+  frm := TfrmPCEBaseMain(Component.Owner);
+  if frm.FSectionPopulated then
+  begin
+    frm.FSectionPopulated := FALSE;
+    Result := frm.FTabName + ' section populated with ' +
+        inttostr(frm.lbxSection.Count) + ' items';
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPCEBaseMain);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEEdit.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEEdit.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEEdit.dfm	(revision 1676)
@@ -0,0 +1,109 @@
+inherited frmPCEEdit: TfrmPCEEdit
+  Left = 214
+  Top = 107
+  BorderStyle = bsDialog
+  Caption = 'Edit Encounter'
+  ClientHeight = 128
+  ClientWidth = 543
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  DesignSize = (
+    543
+    128)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TStaticText [0]
+    Left = 0
+    Top = 0
+    Width = 543
+    Height = 24
+    Align = alTop
+    Alignment = taCenter
+    Caption = 'Select Encounter to Edit'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -16
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 5
+    ExplicitWidth = 201
+  end
+  object lblNew: TMemo [1]
+    Left = 136
+    Top = 32
+    Width = 401
+    Height = 26
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'New')
+    TabOrder = 3
+  end
+  object lblNote: TMemo [2]
+    Left = 136
+    Top = 73
+    Width = 401
+    Height = 26
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Note')
+    TabOrder = 4
+  end
+  object btnNew: TButton [3]
+    Left = 8
+    Top = 28
+    Width = 121
+    Height = 21
+    Caption = 'Edit Current Encounter'
+    ModalResult = 6
+    TabOrder = 0
+  end
+  object btnNote: TButton [4]
+    Left = 8
+    Top = 69
+    Width = 121
+    Height = 21
+    Caption = 'Edit Note Encounter'
+    ModalResult = 7
+    TabOrder = 1
+  end
+  object btnCancel: TButton [5]
+    Left = 465
+    Top = 104
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = '&Cancel'
+    ModalResult = 2
+    TabOrder = 2
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Label1'
+        'Status = stsDefault')
+      (
+        'Component = lblNew'
+        'Status = stsDefault')
+      (
+        'Component = lblNote'
+        'Status = stsDefault')
+      (
+        'Component = btnNew'
+        'Status = stsDefault')
+      (
+        'Component = btnNote'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPCEEdit'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEEdit.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEEdit.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEEdit.pas	(revision 1676)
@@ -0,0 +1,147 @@
+unit fPCEEdit;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORFn, uPCE, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPCEEdit = class(TfrmBase508Form)
+    btnNew: TButton;
+    btnNote: TButton;
+    lblNew: TMemo;
+    lblNote: TMemo;
+    btnCancel: TButton;
+    Label1: TStaticText;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+function EditPCEData(NoteData: TPCEData): boolean;
+
+implementation
+
+uses uCore, rCore, fEncnt, fFrame, fEncounterFrame;
+
+{$R *.DFM}
+
+const
+  TX_NEED_VISIT2 = 'A visit is required before entering encounter information.';
+  TX_NOPCE_TXT1  = 'the encounter date is in the future.';
+  TX_NOPCE_TXT2  = 'encounter entry has been disabled.';
+  TX_NOPCE_TXT   = 'You can not edit encounter information because ';
+  TX_NOPCE_HDR   = 'Can not edit encounter';
+
+var
+  uPCETemp: TPCEData = nil;
+  uPCETempOld: TPCEData = nil;
+  uPatient: string = '';
+
+function EditPCEData(NoteData: TPCEData): boolean;   // Returns TRUE if NoteData is edited
+var
+  frmPCEEdit: TfrmPCEEdit;
+  BtnTxt, NewTxt, txt: string;
+  Ans: integer;
+
+begin
+  Result := FALSE;
+  if (Encounter.VisitCategory = 'H') then
+  begin
+    if Assigned(NoteData) then
+      Ans := mrNo
+    else
+    begin
+      InfoBox('Can not edit admission encounter', 'Error', MB_OK or MB_ICONERROR);
+      Ans := mrCancel;
+    end;
+  end
+  else
+  if not Assigned(NoteData) then
+    Ans := mrYes
+  else
+  if (NoteData.VisitString = Encounter.VisitStr) then
+    Ans := mrNo
+  else
+  begin
+    frmPCEEdit := TfrmPCEEdit.Create(Application);
+    try
+      if Encounter.NeedVisit then
+      begin
+        NewTxt := 'Create New Encounter';
+        BtnTxt := 'New Encounter';
+      end
+      else
+      begin
+        NewTxt := 'Edit Encounter for ' + Encounter.LocationName + ' on ' +
+                  FormatFMDateTime('mmm dd yyyy hh:nn', Encounter.DateTime);
+        BtnTxt := 'Edit Current Encounter';
+      end;
+      frmPCEEdit.lblNew.Text := NewTxt;
+      frmPCEEdit.btnNew.Caption := BtnTxt;
+      frmPCEEdit.lblNote.Text := 'Edit Note Encounter for ' + ExternalName(NoteData.Location, 44) + ' on ' +
+                  FormatFMDateTime('mmm dd yyyy hh:nn', NoteData.VisitDateTime);
+      ans := frmPCEEdit.ShowModal;
+    finally
+      frmPCEEdit.Free;
+    end;
+  end;
+  if ans = mrYes then
+  begin
+    if Encounter.NeedVisit then
+    begin
+      UpdateVisit(8);
+      frmFrame.DisplayEncounterText;
+    end;
+    if Encounter.NeedVisit then
+    begin
+      InfoBox(TX_NEED_VISIT2, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+    if not assigned(uPCETemp) then
+      uPCETemp := TPCEData.Create;
+    uPCETemp.UseEncounter := True;
+    if not CanEditPCE(uPCETemp) then
+    begin
+      if FutureEncounter(uPCETemp) then
+        txt := TX_NOPCE_TXT1
+      else
+        txt := TX_NOPCE_TXT2;
+      InfoBox(TX_NOPCE_TXT + txt, TX_NOPCE_HDR, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+    uPCETemp.PCEForNote(USE_CURRENT_VISITSTR, uPCETempOld);
+    UpdatePCE(uPCETemp);
+    if not assigned(uPCETempOld) then
+      uPCETempOld := TPCEData.Create;
+    uPCETemp.CopyPCEData(uPCETempOld);
+  end
+  else
+  if ans = mrNo then
+  begin
+    UpdatePCE(NoteData);
+    Result := TRUE;
+  end;
+end;
+
+procedure TfrmPCEEdit.FormCreate(Sender: TObject);
+begin
+  if uPatient <> Patient.DFN then
+    begin
+      KillObj(@uPCETemp);
+      KillObj(@uPCETempOld);
+    end;
+  uPatient := Patient.DFN;
+end;
+
+initialization
+
+finalization
+  KillObj(@uPCETemp);
+  KillObj(@uPCETempOld);
+  uPatient := '';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCELex.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCELex.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCELex.dfm	(revision 1676)
@@ -0,0 +1,105 @@
+inherited frmPCELex: TfrmPCELex
+  Left = 639
+  Top = 480
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Lookup Other Diagnosis'
+  ClientHeight = 275
+  ClientWidth = 429
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSearch: TLabel [0]
+    Left = 6
+    Top = 16
+    Width = 98
+    Height = 13
+    Caption = 'Search for Diagnosis'
+  end
+  object lblSelect: TLabel [1]
+    Left = 6
+    Top = 67
+    Width = 175
+    Height = 13
+    Caption = 'Select from one of the following items'
+    Visible = False
+  end
+  object txtSearch: TCaptionEdit [2]
+    Left = 6
+    Top = 30
+    Width = 331
+    Height = 21
+    TabOrder = 0
+    OnChange = txtSearchChange
+    Caption = 'Search for Diagnosis'
+  end
+  object cmdSearch: TButton [3]
+    Left = 346
+    Top = 30
+    Width = 75
+    Height = 21
+    Caption = 'Search'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdSearchClick
+  end
+  object cmdOK: TButton [4]
+    Left = 263
+    Top = 245
+    Width = 75
+    Height = 22
+    Caption = 'OK'
+    TabOrder = 3
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [5]
+    Left = 346
+    Top = 245
+    Width = 75
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 4
+    OnClick = cmdCancelClick
+  end
+  object lstSelect: TORListBox [6]
+    Left = 6
+    Top = 81
+    Width = 415
+    Height = 156
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    OnClick = lstSelectClick
+    OnDblClick = lstSelectDblClick
+    Caption = 'Select from one of the following items'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtSearch'
+        'Status = stsDefault')
+      (
+        'Component = cmdSearch'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstSelect'
+        'Status = stsDefault')
+      (
+        'Component = frmPCELex'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCELex.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCELex.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCELex.pas	(revision 1676)
@@ -0,0 +1,151 @@
+unit fPCELex;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmPCELex = class(TfrmAutoSz)
+    txtSearch: TCaptionEdit;
+    cmdSearch: TButton;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblSearch: TLabel;
+    lblSelect: TLabel;
+    lstSelect: TORListBox;
+    procedure cmdSearchClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure lstSelectClick(Sender: TObject);
+    procedure txtSearchChange(Sender: TObject);
+    procedure lstSelectDblClick(Sender: TObject);
+  private
+    FLexApp: Integer;
+    FCode:   string;
+    FDate:   TFMDateTime;
+    procedure SetApp(LexApp: Integer);
+    procedure SetDate(ADate: TFMDateTime);
+  end;
+
+procedure LexiconLookup(var Code: string; LexApp: Integer; ADate: TFMDateTime = 0);
+
+implementation
+
+{$R *.DFM}
+
+uses rPCE,UBAGlobals;
+
+procedure LexiconLookup(var Code: string; LexApp: Integer; ADate: TFMDateTime = 0);
+var
+  frmPCELex: TfrmPCELex;
+begin
+  frmPCELex := TfrmPCELex.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmPCELex));
+    frmPCELex.SetApp(LexApp);
+    frmPCELex.SetDate(ADate);
+    frmPCELex.ShowModal;
+    Code := frmPCELex.FCode;
+  finally
+    frmPCELex.Free;
+  end;
+end;
+
+procedure TfrmPCELex.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FCode := '';
+end;
+
+procedure TfrmPCELex.SetApp(LexApp: Integer);
+begin
+  FLexApp := LexApp;
+  case LexApp of
+  LX_ICD: begin
+            Caption := 'Lookup Diagnosis';
+            lblSearch.Caption := 'Search for Diagnosis';
+          end;
+  LX_CPT: begin
+            Caption := 'Lookup Procedure';
+            lblSearch.Caption := 'Search for Procedure';
+          end;
+  end;
+end;
+
+procedure TfrmPCELex.SetDate(ADate: TFMDateTime);
+begin
+  FDate := ADate;
+end;
+
+procedure TfrmPCELex.txtSearchChange(Sender: TObject);
+begin
+  inherited;
+  cmdSearch.Default := True;
+  cmdOK.Default := False;
+end;
+
+procedure TfrmPCELex.cmdSearchClick(Sender: TObject);
+begin
+  inherited;
+  if Length(txtSearch.Text) = 0 then Exit;
+  StatusText('Searching clinical lexicon...');
+  ListLexicon(lstSelect.Items, txtSearch.Text, FLexApp, FDate);
+  if lstSelect.GetIEN(0) = -1 then
+  begin
+    lblSelect.Visible := False;
+    txtSearch.SetFocus;
+    txtSearch.SelectAll;
+    cmdOK.Default := False;
+    cmdSearch.Default := True;
+  end else
+  begin
+    lblSelect.Visible := True;
+    lstSelect.SetFocus;
+    cmdSearch.Default := False;
+  end;
+  StatusText('');
+end;
+
+procedure TfrmPCELex.lstSelectClick(Sender: TObject);
+begin
+  inherited;
+  if(lstSelect.ItemIndex > -1) and (lstSelect.ItemIEN > 0) then
+  begin
+    cmdSearch.Default := False;
+    cmdOK.Default := True;
+  end;
+end;
+
+procedure TfrmPCELex.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  if(lstSelect.ItemIndex = -1) or (lstSelect.ItemIEN <= 0) then Exit;
+  with lstSelect do
+  begin
+    if BAPersonalDX then
+      FCode := (LexiconToCode(ItemIEN, FLexApp, FDate) + U + DisplayText[ItemIndex] + U + IntToStr(ItemIEN) )
+   else
+       FCode := LexiconToCode(ItemIEN, FLexApp, FDate) + U + DisplayText[ItemIndex];
+    Close;
+  end;
+end;
+
+procedure TfrmPCELex.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FCode := '';
+  Close;
+end;
+
+procedure TfrmPCELex.lstSelectDblClick(Sender: TObject);
+begin
+  inherited;
+  lstSelectClick(Sender);
+  cmdOKClick(Sender);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEOther.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEOther.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEOther.dfm	(revision 1676)
@@ -0,0 +1,74 @@
+inherited frmPCEOther: TfrmPCEOther
+  Left = 451
+  Top = 201
+  ActiveControl = cboOther
+  Caption = 'OtherItems'
+  ClientHeight = 313
+  ClientWidth = 271
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 279
+  ExplicitHeight = 340
+  PixelsPerInch = 96
+  TextHeight = 13
+  object cmdCancel: TButton [0]
+    Left = 190
+    Top = 287
+    Width = 75
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object cmdOK: TButton [1]
+    Left = 110
+    Top = 287
+    Width = 75
+    Height = 22
+    Caption = 'OK'
+    Enabled = False
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cboOther: TORComboBox [2]
+    Left = 8
+    Top = 8
+    Width = 257
+    Height = 273
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Other Items'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnChange = cboOtherChange
+    OnDblClick = cboOtherDblClick
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cboOther'
+        'Status = stsDefault')
+      (
+        'Component = frmPCEOther'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEOther.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEOther.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEOther.pas	(revision 1676)
@@ -0,0 +1,105 @@
+unit fPCEOther;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORFn, ORCtrls, StdCtrls, VA508AccessibilityManager;
+
+type
+  TfrmPCEOther = class(TfrmAutoSz)
+    cmdCancel: TButton;
+    cmdOK: TButton;
+    cboOther: TORComboBox;
+    procedure cmdOKClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboOtherDblClick(Sender: TObject);
+    procedure cboOtherChange(Sender: TObject);
+  private
+    fOtherApp: Integer;
+    FCode:   string;
+    procedure SetApp(OtherApp: Integer);
+  public
+    { Public declarations }
+  end;
+
+
+procedure OtherLookup(var Code: string; OtherApp: Integer);
+
+implementation
+
+{$R *.DFM}
+
+uses rPCE, fEncounterFrame;
+
+procedure OtherLookup(var Code: string; OtherApp: Integer);
+var
+  frmPCEOther: TfrmPCEOther;
+begin
+  frmPCEOther := TfrmPCEOther.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmPCEOther));
+    frmPCEOther.SetApp(OtherApp);
+    frmPCEOther.ShowModal;
+    Code := frmPCEOther.FCode;
+  finally
+    frmPCEOther.Free;
+  end;
+end;
+
+procedure TfrmPCEOther.SetApp(OtherApp: Integer);
+begin
+  fOtherApp := OtherApp;
+  case OtherApp of
+    PCE_IMM: Caption := 'Other Immunizations';
+    PCE_SK:  Caption := 'Other Skin Tests';
+    PCE_PED: Caption := 'Other Education Topics';
+//    PCE_HF:  Caption := 'Other Health Factors';
+    PCE_XAM: Caption := 'Other Examinations';
+
+  end;
+  cboOther.Caption := Caption;
+  LoadcboOther(cboOther.Items, uEncPCEData.Location, OtherApp);
+end;
+
+
+procedure TfrmPCEOther.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  with cboOther do
+  begin
+    if ItemIndex = -1 then Exit;
+    FCode := CboOther.Items[ItemIndex];
+//
+    Close;
+  end;
+end;
+
+procedure TfrmPCEOther.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FCode := '';
+end;
+
+
+procedure TfrmPCEOther.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  fCode := '';
+  close();
+end;
+
+procedure TfrmPCEOther.cboOtherDblClick(Sender: TObject);
+begin
+  inherited;
+  cmdOKClick(Sender);
+end;
+
+procedure TfrmPCEOther.cboOtherChange(Sender: TObject);
+begin
+  inherited;
+  cmdOK.Enabled := (cboOther.ItemIndex >= 0);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEProvider.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEProvider.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEProvider.dfm	(revision 1676)
@@ -0,0 +1,119 @@
+inherited frmPCEProvider: TfrmPCEProvider
+  Left = 192
+  Top = 104
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Primary Encounter Provider'
+  ClientHeight = 254
+  ClientWidth = 317
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Spacer1: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 317
+    Height = 13
+    Align = alTop
+    ExplicitWidth = 3
+  end
+  object lblMsg: TMemo [1]
+    Left = 0
+    Top = 13
+    Width = 317
+    Height = 29
+    TabStop = False
+    Align = alTop
+    Alignment = taCenter
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    Lines.Strings = (
+      'Primary Provider for this Encounter')
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 4
+  end
+  object cboPrimary: TORComboBox [2]
+    Left = 6
+    Top = 69
+    Width = 307
+    Height = 180
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Primary Provider for this Encounter'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    TabStop = True
+    Visible = False
+    OnChange = cboPrimaryChange
+    OnNeedData = cboPrimaryNeedData
+    CharsNeedMatch = 1
+  end
+  object btnYes: TButton [3]
+    Left = 158
+    Top = 40
+    Width = 75
+    Height = 21
+    Caption = '&Yes'
+    Default = True
+    ModalResult = 6
+    TabOrder = 1
+  end
+  object btnNo: TButton [4]
+    Left = 238
+    Top = 40
+    Width = 75
+    Height = 21
+    Cancel = True
+    Caption = '&No'
+    ModalResult = 7
+    TabOrder = 2
+  end
+  object btnSelect: TButton [5]
+    Left = 6
+    Top = 40
+    Width = 90
+    Height = 21
+    Caption = '&Select Primary'
+    TabOrder = 3
+    OnClick = btnSelectClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblMsg'
+        'Status = stsDefault')
+      (
+        'Component = cboPrimary'
+        'Status = stsDefault')
+      (
+        'Component = btnYes'
+        'Status = stsDefault')
+      (
+        'Component = btnNo'
+        'Status = stsDefault')
+      (
+        'Component = btnSelect'
+        'Status = stsDefault')
+      (
+        'Component = frmPCEProvider'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEProvider.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEProvider.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPCEProvider.pas	(revision 1676)
@@ -0,0 +1,188 @@
+unit fPCEProvider;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, uPCE, ORFn, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmPCEProvider = class(TfrmBase508Form)
+    cboPrimary: TORComboBox;
+    lblMsg: TMemo;
+    btnYes: TButton;
+    btnNo: TButton;
+    btnSelect: TButton;
+    Spacer1: TLabel;
+    procedure cboPrimaryNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboPrimaryChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure btnSelectClick(Sender: TObject);
+  private
+    FPCEData: TPCEData;
+    FUseDefault: boolean;
+    FIEN: array[boolean] of Int64;
+    FName: array[boolean] of string;
+  public
+    procedure AskUser(ForceSelect: boolean);
+  end;
+
+function NoPrimaryPCEProvider(AProviders: TPCEProviderList; PCEData: TPCEData): boolean;
+
+implementation
+
+uses rCore, uCore, rTIU, rPCE;
+
+{$R *.DFM}
+
+const
+  AreYouStr = 'Are You, ';
+  PEPStr2 = ' the Primary Provider for this Encounter';
+  PEPStr = PEPStr2 + '?';
+  IsStr = 'Is ';
+  SelectStr = 'Please Select' + PEPStr2 + '.';
+
+function NoPrimaryPCEProvider(AProviders: TPCEProviderList; PCEData: TPCEData): boolean;
+var
+  frmPCEProvider: TfrmPCEProvider;
+  idx: integer;
+  b: boolean;
+  X: string;
+  mr: TModalResult;
+
+begin
+  if(AProviders.PrimaryIdx < 0) then
+    SetDefaultProvider(AProviders, PCEData);
+  if(AProviders.PrimaryIdx < 0) then
+  begin
+    frmPCEProvider := TfrmPCEProvider.Create(Application);
+    try
+      with frmPCEProvider do
+      begin
+        FPCEData := PCEData;
+        for b := FALSE to TRUE do
+        begin
+          FIEN[b] := AProviders.PendingIEN(b);
+          FName[b] := AProviders.PendingNAME(b);
+        end;
+        if(FIEN[TRUE] = 0) and (FIEN[FALSE] = 0) then
+        begin
+          AskUser(TRUE);
+          mr := ModalResult;
+        end
+        else
+        begin
+          FUseDefault := TRUE;
+          AskUser(FALSE);
+          mr := ModalResult;
+          if((mr in [mrAbort, mrNo]) and (FIEN[TRUE] <> FIEN[FALSE])) then
+          begin
+            FUseDefault := FALSE;
+            AskUser(FALSE);
+            mr := ModalResult;
+          end;
+        end;
+        if (mr = mrYes) then
+        begin
+          AProviders.AddProvider(IntToStr(FIEN[FUseDefault]), FName[FUseDefault], TRUE);
+        end
+        else
+        if (mr = mrOK) then
+        begin
+          idx := cboPrimary.ItemIndex;
+          if(idx >= 0) then
+          begin
+            X := frmPCEProvider.cboPrimary.Items[idx];
+            AProviders.AddProvider(Piece(X, U, 1), Piece(X, U, 2), TRUE);
+          end;
+        end;
+      end;
+    finally
+      frmPCEProvider.Free;
+    end;
+    Result := (AProviders.PrimaryIdx < 0);
+  end
+  else
+    Result := FALSE;
+end;
+
+{ TfrmPCEProvider }
+
+procedure TfrmPCEProvider.cboPrimaryNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  if(FPCEData.VisitCategory = 'E') then
+    cboPrimary.ForDataUse(SubSetOfPersons(StartFrom, Direction))
+  else
+    cboPrimary.ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction,
+                                                 FloatToStr(FPCEData.PersonClassDate)));
+end;
+
+procedure TfrmPCEProvider.cboPrimaryChange(Sender: TObject);
+var
+  txt: string;
+
+begin
+  if(cboPrimary.ItemIEN <> 0) and (FPCEData.VisitCategory <> 'E') then
+  begin
+    txt := InvalidPCEProviderTxt(cboPrimary.ItemIEN, FPCEData.PersonClassDate);
+    if(txt <> '') then
+    begin
+      InfoBox(cboPrimary.DisplayText[cboPrimary.ItemIndex] + txt, TX_BAD_PROV, MB_OK);
+      cboPrimary.ItemIndex := -1;
+    end;
+  end;
+end;
+
+procedure TfrmPCEProvider.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  ClientHeight := cboPrimary.Top;
+end;
+
+procedure TfrmPCEProvider.btnSelectClick(Sender: TObject);
+begin
+  ClientHeight := cboPrimary.Top + cboPrimary.Height + 5;
+  cboPrimary.Visible := TRUE;
+  btnSelect.Visible := FALSE;
+  btnYes.Caption := '&OK';
+  btnYes.ModalResult := mrOK;
+  btnNo.Caption := '&Cancel';
+  btnNo.ModalResult := mrCancel;
+  lblMsg.Text := SelectStr;
+  cboPrimary.Caption := lblMsg.Text;
+  cboPrimary.InitLongList(User.Name);
+end;
+
+procedure TfrmPCEProvider.AskUser(ForceSelect: boolean);
+var
+  msg: string;
+
+begin
+  if(ForceSelect) then
+  begin
+    btnSelectClick(Self);
+  end
+  else
+  begin
+    if(FIEN[FUseDefault] = 0) then
+    begin
+      ModalResult := mrAbort;
+      exit;
+    end
+    else
+    begin
+      if(FIEN[FUseDefault] = User.DUZ) then
+        msg := AreYouStr + FName[FUseDefault] + ',' + PEPStr
+      else
+        msg := IsStr + FName[FUseDefault] + PEPStr;
+    end;
+    lblMsg.text := msg;
+    cboPrimary.Caption := lblMsg.text;
+  end;
+  ShowModal;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPatientEd.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPatientEd.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPatientEd.dfm	(revision 1676)
@@ -0,0 +1,155 @@
+inherited frmPatientEd: TfrmPatientEd
+  Left = 275
+  Top = 267
+  Caption = 'Patient Education'
+  ExplicitLeft = 275
+  ExplicitTop = 267
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblUnderstanding: TLabel [0]
+    Left = 490
+    Top = 264
+    Width = 112
+    Height = 13
+    Caption = 'Level Of Understanding'
+  end
+  inherited lblSection: TLabel
+    Width = 123
+    Caption = 'Patient Education Section'
+    ExplicitWidth = 123
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 6
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 7
+  end
+  inherited pnlGrid: TPanel
+    TabOrder = 1
+    inherited lbGrid: TORListBox
+      Tag = 60
+      Caption = 'Selected Patient Educations'
+      Pieces = '1,2'
+    end
+    inherited hcGrid: THeaderControl
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 124
+          Text = 'Level of Understanding'
+          Width = 124
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 150
+          Text = 'Selected Patient Educations'
+          Width = 150
+        end>
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    TabOrder = 3
+  end
+  object cboPatUnderstanding: TORComboBox [9]
+    Tag = 40
+    Left = 490
+    Top = 280
+    Width = 121
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Level Of Understanding'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = cboPatUnderstandingChange
+    CharsNeedMatch = 1
+  end
+  inherited btnRemove: TButton
+    TabOrder = 5
+  end
+  inherited btnSelectAll: TButton
+    TabOrder = 2
+    TabStop = True
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited lbxSection: TORListBox
+      Tag = 60
+    end
+    inherited pnlLeft: TPanel
+      inherited lbSection: TORListBox
+        Tag = 60
+        TabOrder = 0
+        Caption = 'Patient Education Section'
+      end
+      inherited btnOther: TButton
+        Tag = 22
+        Caption = 'Other Education Topic...'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboPatUnderstanding'
+        'Status = stsDefault')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPatientEd'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPatientEd.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPatientEd.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fPatientEd.pas	(revision 1676)
@@ -0,0 +1,126 @@
+unit fPatientEd;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, ORCtrls, CheckLst, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  fPCELex, fPCEOther, ComCtrls, fPCEBaseMain, VA508AccessibilityManager;
+
+type
+  TfrmPatientEd = class(TfrmPCEBaseMain)
+    lblUnderstanding: TLabel;
+    cboPatUnderstanding: TORComboBox;
+    procedure cboPatUnderstandingChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+  public
+  end;
+
+var
+  frmPatientEd: TfrmPatientEd;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, VA508AccessibilityRouter;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name:procedure tfrmPatientEd.cboPatUnderstandingChange(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description:Change the level of understanding assigned to the education item.
+///////////////////////////////////////////////////////////////////////////////}
+procedure tfrmPatientEd.cboPatUnderstandingChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) and (cboPatUnderstanding.Text <> '') then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEPat(lbGrid.Items.Objects[i]).Level := cboPatUnderstanding.ItemID;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmPatientEd.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_PedNm;
+  FPCEListCodesProc := ListPatientCodes;
+  FPCEItemClass := TPCEPat;
+  FPCECode := 'PED';
+  PCELoadORCombo(cboPatUnderstanding);
+end;
+
+procedure TfrmPatientEd.UpdateNewItemStr(var x: string);
+begin
+  SetPiece(x, U, pnumPEDLevel, NoPCEValue);
+end;
+
+procedure TfrmPatientEd.UpdateControls;
+var
+  ok, First: boolean;
+  SameLOU: boolean;
+  i: integer;
+  LOU: string;
+  Obj: TPCEPat;
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      ok := (lbGrid.SelCount > 0);
+      lblUnderstanding.Enabled := ok;
+      cboPatUnderstanding.Enabled := ok;
+      if(ok) then
+      begin
+        First := TRUE;
+        SameLOU := TRUE;
+        LOU := NoPCEValue;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if lbGrid.Selected[i] then
+          begin
+            Obj := TPCEPat(lbGrid.Items.Objects[i]);
+            if(First) then
+            begin
+              First := FALSE;
+              LOU := Obj.Level;
+            end
+            else
+            begin
+              if(SameLOU) then
+                SameLOU := (LOU = Obj.Level);
+            end;
+          end;
+        end;
+        if(SameLOU) then
+          cboPatUnderstanding.SelectByID(LOU)
+        else
+          cboPatUnderstanding.Text := '';
+      end
+      else
+      begin
+        cboPatUnderstanding.Text := '';
+      end;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPatientEd);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fProcedure.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fProcedure.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fProcedure.dfm	(revision 1676)
@@ -0,0 +1,286 @@
+inherited frmProcedures: TfrmProcedures
+  Left = 548
+  Top = 172
+  Caption = 'Encounter Procedure'
+  ExplicitWidth = 632
+  ExplicitHeight = 427
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblProcQty: TLabel [0]
+    Left = 240
+    Top = 375
+    Width = 39
+    Height = 13
+    Caption = 'Quantity'
+  end
+  inherited lblSection: TLabel
+    Width = 88
+    Caption = 'Procedure Section'
+    ExplicitWidth = 88
+  end
+  inherited lblList: TLabel
+    Left = 154
+    ExplicitLeft = 154
+  end
+  inherited bvlMain: TBevel
+    Top = 232
+    Width = 537
+    Height = 166
+    ExplicitTop = 232
+    ExplicitWidth = 537
+    ExplicitHeight = 166
+  end
+  object lblMod: TLabel [5]
+    Left = 358
+    Top = 6
+    Width = 42
+    Height = 13
+    Hint = 'Modifiers'
+    Caption = 'Modifiers'
+    ParentShowHint = False
+    ShowHint = True
+  end
+  object lblProvider: TLabel [6]
+    Left = 6
+    Top = 376
+    Width = 42
+    Height = 13
+    Caption = 'Provider:'
+  end
+  inherited btnOK: TBitBtn
+    Left = 544
+    Top = 344
+    TabOrder = 8
+    ExplicitLeft = 544
+    ExplicitTop = 344
+  end
+  inherited btnCancel: TBitBtn
+    Top = 371
+    TabOrder = 9
+    ExplicitTop = 371
+  end
+  inherited pnlGrid: TPanel
+    Width = 523
+    TabOrder = 1
+    ExplicitWidth = 523
+    inherited lbGrid: TORListBox
+      Tag = 30
+      Width = 523
+      Caption = 'Selected Procedures'
+      Pieces = '1,2'
+      ExplicitWidth = 523
+    end
+    inherited hcGrid: THeaderControl
+      Width = 523
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 52
+          Text = 'Quantity'
+          Width = 52
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 112
+          Text = 'Selected Procedures'
+          Width = 112
+        end>
+      ExplicitWidth = 523
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    TabOrder = 2
+  end
+  object spnProcQty: TUpDown [11]
+    Left = 348
+    Top = 371
+    Width = 15
+    Height = 21
+    Associate = txtProcQty
+    Min = 1
+    Position = 1
+    TabOrder = 5
+  end
+  object txtProcQty: TCaptionEdit [12]
+    Left = 288
+    Top = 371
+    Width = 60
+    Height = 21
+    Enabled = False
+    TabOrder = 4
+    Text = '1'
+    OnChange = txtProcQtyChange
+    Caption = 'Quantity'
+  end
+  object cboProvider: TORComboBox [13]
+    Left = 56
+    Top = 371
+    Width = 177
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Provider'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    TabStop = True
+    OnChange = cboProviderChange
+    OnNeedData = cboProviderNeedData
+    CharsNeedMatch = 1
+  end
+  inherited btnRemove: TButton
+    Left = 454
+    Top = 371
+    TabOrder = 7
+    ExplicitLeft = 454
+    ExplicitTop = 371
+  end
+  inherited btnSelectAll: TButton
+    Left = 374
+    Top = 371
+    Height = 21
+    TabOrder = 6
+    TabStop = True
+    ExplicitLeft = 374
+    ExplicitTop = 371
+    ExplicitHeight = 21
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited splLeft: TSplitter
+      Left = 145
+      ExplicitLeft = 145
+    end
+    object splRight: TSplitter [1]
+      Left = 349
+      Top = 0
+      Height = 204
+      Align = alRight
+      OnMoved = splRightMoved
+    end
+    inherited lbxSection: TORListBox
+      Tag = 30
+      Left = 148
+      Width = 201
+      ItemHeight = 14
+      Pieces = '2,3'
+      ExplicitLeft = 148
+      ExplicitWidth = 201
+    end
+    inherited pnlLeft: TPanel
+      Width = 145
+      ExplicitWidth = 145
+      inherited lbSection: TORListBox
+        Tag = 30
+        Width = 145
+        TabOrder = 0
+        ExplicitWidth = 145
+      end
+      inherited btnOther: TButton
+        Tag = 13
+        Left = 3
+        Caption = 'Other Procedure...'
+        TabOrder = 1
+        ExplicitLeft = 3
+      end
+    end
+    object lbMods: TORListBox
+      Left = 352
+      Top = 0
+      Width = 260
+      Height = 204
+      Style = lbOwnerDrawFixed
+      Align = alRight
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ItemHeight = 14
+      ParentFont = False
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnExit = lbModsExit
+      Caption = 'Modifiers'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2,3'
+      TabPosInPixels = True
+      CheckBoxes = True
+      CheckEntireLine = True
+      OnClickCheck = lbModsClickCheck
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lbMods'
+        'Label = lblMod'
+        'Status = stsOK')
+      (
+        'Component = spnProcQty'
+        'Status = stsDefault')
+      (
+        'Component = txtProcQty'
+        'Status = stsDefault')
+      (
+        'Component = cboProvider'
+        'Status = stsDefault')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmProcedures'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fProcedure.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fProcedure.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fProcedure.pas	(revision 1676)
@@ -0,0 +1,589 @@
+unit fProcedure;
+{Warning: The tab order has been changed in the OnExit event of several controls.
+ To change the tab order of lbSection, lbxSection, lbMods, and btnOther you must do it programatically.}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, ComCtrls, CheckLst, ORCtrls, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  fPCELex, fPCEOther, fPCEBaseGrid, fPCEBaseMain, VA508AccessibilityManager;
+
+type
+  TfrmProcedures = class(TfrmPCEBaseMain)
+    lblProcQty: TLabel;
+    spnProcQty: TUpDown;
+    txtProcQty: TCaptionEdit;
+    lbMods: TORListBox;
+    splRight: TSplitter;
+    lblMod: TLabel;
+    cboProvider: TORComboBox;
+    lblProvider: TLabel;
+    procedure txtProcQtyChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormResize(Sender: TObject); override;
+    procedure splRightMoved(Sender: TObject);
+    procedure clbListClick(Sender: TObject);
+    procedure lbGridSelect(Sender: TObject);
+    procedure btnSelectAllClick(Sender: TObject);
+    procedure lbModsClickCheck(Sender: TObject; Index: Integer);
+    procedure lbSectionClick(Sender: TObject);
+    procedure lbxSectionClickCheck(Sender: TObject; Index: Integer);
+    procedure btnOtherClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure cboProviderNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboProviderChange(Sender: TObject);
+    procedure lbxSectionExit(Sender: TObject);
+    procedure lbModsExit(Sender: TObject);
+    procedure btnOtherExit(Sender: TObject);
+  private
+    FCheckingCode: boolean;
+    FCheckingMods: boolean;
+    FLastCPTCodes: string;
+    FModsReadOnly: boolean;
+    FProviderChanging: boolean;
+    FModsROChecked: string;
+    function MissingProvider: boolean;
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+    procedure ShowModifiers;
+    procedure CheckModifiers;
+  public
+    function OK2SaveProcedures: boolean;
+    procedure InitTab(ACopyProc: TCopyItemsMethod; AListProc: TListSectionsProc);
+  end;
+
+var
+  frmProcedures: TfrmProcedures;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, uConst, rCore, VA508AccessibilityRouter;
+
+const
+  TX_PROC_PROV = 'Each procedure requires selection of a Provider before it can be saved.';
+  TC_PROC_PROV = 'Missing Procedure Provider';
+
+procedure TfrmProcedures.txtProcQtyChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEProc(lbGrid.Items.Objects[i]).Quantity := spnProcQty.Position;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmProcedures.cboProviderChange(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCEProc(lbGrid.Items.Objects[i]).Provider := cboProvider.ItemIEN;
+    FProviderChanging := TRUE; // CQ 11707
+    try
+      GridChanged;
+    finally
+      FProviderChanging := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmProcedures.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_ProcNm;
+  FPCEListCodesProc := ListProcedureCodes;
+  cboProvider.InitLongList(uProviders.PCEProviderName);
+  FPCEItemClass := TPCEProc;
+  FPCECode := 'CPT';
+  FSectionTabCount := 1;
+  FormResize(Self);
+  lbMods.HideSelection := TRUE;
+end;
+
+procedure TfrmProcedures.UpdateNewItemStr(var x: string);
+begin
+  SetPiece(x, U, pnumProcQty, '1');
+  //x := x + U + '1';
+end;
+
+procedure TfrmProcedures.UpdateControls;
+var
+  ok, First: boolean;
+  SameQty: boolean;
+  SameProv: boolean;
+  i: integer;
+  Qty: integer;
+  Prov: int64;
+  Obj: TPCEProc;
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      ok := (lbGrid.SelCount > 0);
+      lblProcQty.Enabled := ok;
+      txtProcQty.Enabled := ok;
+      spnProcQty.Enabled := ok;
+      cboProvider.Enabled := ok;
+      lblProvider.Enabled := ok;
+      if(ok) then
+      begin
+        First := TRUE;
+        SameQty := TRUE;
+        SameProv := TRUE;
+        Prov := 0;
+        Qty := 1;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if lbGrid.Selected[i] then
+          begin
+            Obj := TPCEProc(lbGrid.Items.Objects[i]);
+            if(First) then
+            begin
+              First := FALSE;
+              Qty := Obj.Quantity;
+              Prov := Obj.Provider;
+            end
+            else
+            begin
+              if(SameQty) then
+                SameQty := (Qty = Obj.Quantity);
+              if(SameProv) then
+                SameProv := (Prov = Obj.Provider);
+            end;
+          end;
+        end;
+        if(SameQty) then
+        begin
+          spnProcQty.Position := Qty;
+          txtProcQty.Text := IntToStr(Qty);
+          txtProcQty.SelStart := length(txtProcQty.Text);
+        end
+        else
+        begin
+          spnProcQty.Position := 1;
+          txtProcQty.Text := '';
+        end;
+        if not FProviderChanging then // CQ 11707
+        begin
+          if(SameProv) then
+            cboProvider.SetExactByIEN(Prov, ExternalName(Prov, 200))
+          else
+            cboProvider.SetExactByIEN(uProviders.PCEProvider, uProviders.PCEProviderName);
+            //cboProvider.ItemIndex := -1;     v22.8 - RV
+        end;
+      end
+      else
+      begin
+        txtProcQty.Text := '';
+        cboProvider.ItemIndex := -1;
+      end;
+//      ShowModifiers;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+procedure TfrmProcedures.FormResize(Sender: TObject);
+var
+  v, i: integer;
+  s: string;
+  
+begin
+  inherited;
+  FSectionTabs[0] := -(lbxSection.width - LBCheckWidthSpace - MainFontWidth - ScrollBarWidth);
+  UpdateTabPos;
+  v := (lbMods.width - LBCheckWidthSpace - (4*MainFontWidth) - ScrollBarWidth);
+  s := '';
+  for i := 1 to 20 do
+  begin
+    if s <> '' then s := s + ',';
+    s := s + inttostr(v);
+    if(v<0) then
+      dec(v,32)
+    else
+      inc(v,32);
+  end;
+  lbMods.TabPositions := s;
+end;
+
+procedure TfrmProcedures.splRightMoved(Sender: TObject);
+begin
+  inherited;
+  lblMod.Left := lbMods.Left + pnlMain.Left;
+  FSplitterMove := TRUE;
+  FormResize(Sender);
+end;
+
+procedure TfrmProcedures.clbListClick(Sender: TObject);
+begin
+  inherited;
+  Sync2Section;
+  UpdateControls;
+  ShowModifiers;
+end;
+
+procedure TfrmProcedures.lbGridSelect(Sender: TObject);
+begin
+  inherited;
+  Sync2Grid;
+  ShowModifiers;
+end;
+
+procedure TfrmProcedures.btnSelectAllClick(Sender: TObject);
+begin
+  inherited;
+  Sync2Grid;
+  ShowModifiers;
+end;
+
+procedure TfrmProcedures.ShowModifiers;
+const
+  ModTxt = 'Modifiers';
+  ForTxt = ' for ';
+  Spaces = '    ';
+  CommonTxt = ' Common to Multiple Procedures';
+
+var
+  i, TopIdx: integer;
+//  Needed,
+  Codes, ProcName, Hint, Msg: string;
+  Proc: TPCEProc;
+
+begin
+  if(not NotUpdating) then exit;
+  Codes := '';
+  ProcName := '';
+  Hint := '';
+//  Needed := '';
+  for i := 0 to lbGrid.Items.Count-1 do
+  begin
+    if(lbGrid.Selected[i]) then
+    begin
+      Proc := TPCEProc(lbGrid.Items.Objects[i]);
+      Codes := Codes + Proc.Code + U;
+      if(ProcName = '') then
+        ProcName := Proc.Narrative
+      else
+        ProcName := CommonTxt;
+      if(Hint <> '') then
+        Hint := Hint + CRLF + Spaces;
+      Hint := Hint + Proc.Narrative;
+//      Needed := Needed + Proc.Modifiers;
+    end;
+  end;
+  if(Codes = '') and (lbxSection.ItemIndex >= 0) then
+  begin
+    Codes := piece(lbxSection.Items[lbxSection.ItemIndex],U,1) + U;
+    ProcName := piece(lbxSection.Items[lbxSection.ItemIndex],U,2);
+    Hint := ProcName;
+//    Needed := piece(lbxSection.Items[lbxSection.ItemIndex],U,4); Don't show expired codes!
+  end;
+  msg := ModTxt;
+  if(ProcName <> '') and (ProcName <> CommonTxt) then
+    msg := msg + ForTxt;
+  lblMod.Caption := msg + ProcName;
+  if(pos(CRLF,Hint)>0) then
+    Hint := ':' + CRLF + Spaces + Hint;
+  lblMod.Hint := msg + Hint;
+  
+  if(FLastCPTCodes = Codes) then
+    TopIdx := lbMods.TopIndex
+  else
+  begin
+    TopIdx := 0;
+    FLastCPTCodes := Codes;
+  end;
+  ListCPTModifiers(lbMods.Items, Codes, ''); // Needed);
+  lbMods.TopIndex := TopIdx;
+  CheckModifiers;
+end;
+
+procedure TfrmProcedures.CheckModifiers;
+var
+  i, idx, cnt, mcnt: integer;
+  Code, Mods: string;
+  state: TCheckBoxState;
+
+begin
+  FModsReadOnly := TRUE;
+  if lbMods.Items.Count < 1 then exit;
+  FCheckingMods := TRUE;
+  try
+    cnt := 0;
+    Mods := ';';
+    for i := 0 to lbGrid.Items.Count-1 do
+    begin
+      if(lbGrid.Selected[i]) then
+      begin
+        inc(cnt);
+        Mods := Mods + TPCEProc(lbGrid.Items.Objects[i]).Modifiers;
+        FModsReadOnly := FALSE;
+      end;
+    end;
+    if(cnt = 0) and (lbxSection.ItemIndex >= 0) then
+    begin
+      Mods := ';' + UpdateModifierList(lbxSection.Items, lbxSection.ItemIndex);
+      cnt := 1;
+    end;
+    for i := 0 to lbMods.Items.Count-1 do
+    begin
+      state := cbUnchecked;
+      if(cnt > 0) then
+      begin
+        Code := ';' + piece(lbMods.Items[i], U, 1) + ';';
+        mcnt := 0;
+        repeat
+          idx := pos(Code, Mods);
+          if(idx > 0) then
+          begin
+            inc(mcnt);
+            delete(Mods, idx, length(Code) - 1);
+          end;
+        until (idx = 0);
+        if mcnt >= cnt then
+          State := cbChecked
+        else
+        if(mcnt > 0) then
+          State := cbGrayed;
+      end;
+      lbMods.CheckedState[i] := state;
+    end;
+    if FModsReadOnly then
+    begin
+      FModsROChecked := lbMods.CheckedString;
+      lbMods.Font.Color := clInactiveCaption;
+    end
+    else
+      lbMods.Font.Color := clWindowText;
+  finally
+    FCheckingMods := FALSE;
+  end;
+end;
+
+procedure TfrmProcedures.lbModsClickCheck(Sender: TObject; Index: Integer);
+var
+  i, idx: integer;
+  PCEObj: TPCEProc;
+  ModIEN: string;
+  DoChk, Add: boolean;
+
+begin
+  if FCheckingMods or (Index < 0) then exit;
+  if FModsReadOnly then
+  begin
+    lbMods.CheckedString := FModsROChecked;
+    exit;
+  end;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      DoChk := FALSE;
+      Add := (lbMods.Checked[Index]);
+      ModIEN := piece(lbMods.Items[Index],U,1) + ';';
+      for i := 0 to lbGrid.Items.Count-1 do
+      begin
+        if(lbGrid.Selected[i]) then
+        begin
+          PCEObj := TPCEProc(lbGrid.Items.Objects[i]);
+          idx := pos(';' + ModIEN, ';' + PCEObj.Modifiers);
+          if(idx > 0) then
+          begin
+            if not Add then
+            begin
+              delete(PCEObj.Modifiers, idx, length(ModIEN));
+              DoChk := TRUE;
+            end;
+          end
+          else
+          begin
+            if Add then
+            begin
+              PCEObj.Modifiers := PCEObj.Modifiers + ModIEN;
+              DoChk := TRUE;
+            end;
+          end;
+        end;
+      end;
+    finally
+      EndUpdate;
+    end;
+    if DoChk then
+      GridChanged;
+  end;
+end;
+
+procedure TfrmProcedures.lbModsExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed then
+    if btnOther.CanFocus then
+      btnOther.SetFocus;
+end;
+
+procedure TfrmProcedures.lbSectionClick(Sender: TObject);
+begin
+  inherited;
+  ShowModifiers;
+end;
+
+procedure TfrmProcedures.lbxSectionClickCheck(Sender: TObject;
+  Index: Integer);
+var
+  i: integer;
+begin
+  if FCheckingCode then exit;
+  FCheckingCode := TRUE;
+  try
+    inherited;
+    Sync2Grid;
+    lbxSection.Selected[Index] := True;
+    if(lbxSection.ItemIndex >= 0) and (lbxSection.ItemIndex = Index) and
+      (lbxSection.Checked[Index]) then
+    begin
+      UpdateModifierList(lbxSection.Items, Index); // CQ#16439
+      lbxSection.Checked[Index] := TRUE;    
+      for i := 0 to lbGrid.Items.Count-1 do
+      begin
+        if(lbGrid.Selected[i]) then
+        with TPCEProc(lbGrid.Items.Objects[i]) do
+        begin
+          if(Category = GetCat) and
+            (Pieces(lbxSection.Items[Index], U, 1, 2) = Code + U + Narrative) then
+          begin
+            { TODO -oRich V. -cEncounters : v21/22 - Added this block to default provider for procedures.}
+            if Provider = 0 then Provider := uProviders.PCEProvider;
+            { uPCE.TPCEProviderList.PCEProvider function sorts this out automatically:                            }
+            {   1.  Current CPRS encounter provider, if present and has active person class as of encounter date. }
+            {   2.  Current user, if has active person class as of encounter date.                                }
+            {   3.  Primary provider for the visit, if defined.                                                   }
+            {   4.  No default.                                                                                   }
+            Modifiers := Piece(lbxSection.Items[lbxSection.ItemIndex], U, 4);
+            GridChanged;
+            lbxSection.Selected[Index] := True; // CQ#15493
+            exit;
+          end;
+        end;
+      end;
+    end;
+  finally
+    FCheckingCode := FALSE;
+  end;
+end;
+
+procedure TfrmProcedures.lbxSectionExit(Sender: TObject);
+begin
+  if TabIsPressed then begin
+    if lbMods.CanFocus then
+      lbMods.SetFocus;
+  end
+  else if ShiftTabIsPressed then
+    if lbSection.CanFocus then
+      lbSection.SetFocus;
+end;
+
+procedure TfrmProcedures.btnOtherClick(Sender: TObject);
+begin
+  inherited;
+  Sync2Grid;
+  ShowModifiers;
+end;
+
+procedure TfrmProcedures.btnOtherExit(Sender: TObject);
+begin
+  if TabIsPressed then begin
+    if lbGrid.CanFocus then
+      lbGrid.SetFocus;
+  end
+  else if ShiftTabIsPressed then
+    if lbMods.CanFocus then
+      lbMods.SetFocus;    
+end;
+
+procedure TfrmProcedures.btnRemoveClick(Sender: TObject);
+begin
+  inherited;
+  Sync2Grid;
+  ShowModifiers;
+end;
+
+procedure TfrmProcedures.cboProviderNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  inherited;
+  if(uEncPCEData.VisitCategory = 'E') then
+    cboProvider.ForDataUse(SubSetOfPersons(StartFrom, Direction))
+  else
+    cboProvider.ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction,
+                                     FloatToStr(uEncPCEData.PersonClassDate)));
+end;
+
+function TfrmProcedures.OK2SaveProcedures: boolean;
+begin
+  Result := TRUE;
+  if MissingProvider then
+  begin
+    InfoBox(TX_PROC_PROV, TC_PROC_PROV, MB_OK or MB_ICONWARNING);
+    Result := False;
+  end;
+end;
+
+function TfrmProcedures.MissingProvider: boolean;    
+var
+  i: integer;
+  AProc: TPCEProc;
+begin
+  { TODO -oRich V. -cEncounters : {v21 - Entry of a provider for each new CPT is now required}
+            {Existing CPTs on the encounter will NOT require entry of a provider}
+            {Monitor status of new service request #20020203.}
+  Result := False;
+
+  { Comment out the block below (and the "var" block above) }
+  {  to allow but not require entry of a provider with each new CPT entered}
+//------------------------------------------------
+  for i := 0 to lbGrid.Items.Count - 1 do
+  begin
+    AProc := TPCEProc(lbGrid.Items.Objects[i]);
+    if AProc.fIsOldProcedure then continue;
+    if (AProc.Provider = 0) then
+    begin
+      Result := True;
+      lbGrid.ItemIndex := i;
+      exit;
+    end;
+  end;
+//-------------------------------------------------
+end;
+
+procedure TfrmProcedures.InitTab(ACopyProc: TCopyItemsMethod; AListProc: TListSectionsProc);
+var
+  i: integer;
+begin
+  inherited;
+  for i := 0 to lbGrid.Items.Count - 1 do
+    TPCEProc(lbGrid.Items.Objects[i]).fIsOldProcedure := True;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmProcedures);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fSkinTest.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fSkinTest.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fSkinTest.dfm	(revision 1676)
@@ -0,0 +1,240 @@
+inherited frmSkinTests: TfrmSkinTests
+  Left = 213
+  Top = 163
+  Caption = 'Encounter Skin Test form'
+  ExplicitLeft = 213
+  ExplicitTop = 163
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSkinResults: TLabel [0]
+    Left = 490
+    Top = 244
+    Width = 35
+    Height = 13
+    Caption = 'Results'
+  end
+  object lblDTRead: TLabel [1]
+    Left = 46
+    Top = 380
+    Width = 52
+    Height = 13
+    Caption = 'Date Read'
+    Visible = False
+  end
+  object lblReading: TLabel [2]
+    Left = 490
+    Top = 290
+    Width = 40
+    Height = 13
+    Caption = 'Reading'
+  end
+  object lblDTGiven: TLabel [3]
+    Left = 216
+    Top = 380
+    Width = 54
+    Height = 13
+    Caption = 'Date Given'
+    Visible = False
+  end
+  inherited lblSection: TLabel
+    Width = 84
+    Caption = 'Skin Test Section'
+    ExplicitWidth = 84
+  end
+  inherited btnOK: TBitBtn
+    TabOrder = 10
+  end
+  inherited btnCancel: TBitBtn
+    TabOrder = 11
+  end
+  inherited pnlGrid: TPanel
+    TabOrder = 1
+    inherited lbGrid: TORListBox
+      Tag = 50
+      Caption = 'Selected Skin Tests'
+      Pieces = '1,2,3'
+    end
+    inherited hcGrid: THeaderControl
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 50
+          Text = 'Results'
+          Width = 55
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 55
+          Text = 'Reading'
+          Width = 55
+        end
+        item
+          ImageIndex = -1
+          Text = 'Selected Skin Tests'
+          Width = 110
+        end>
+    end
+  end
+  inherited edtComment: TCaptionEdit
+    TabOrder = 3
+  end
+  object UpDnReading: TUpDown [12]
+    Left = 531
+    Top = 304
+    Width = 15
+    Height = 21
+    Associate = EdtReading
+    Max = 40
+    TabOrder = 6
+    OnChanging = UpDnReadingChanging
+  end
+  object EdtReading: TCaptionEdit [13]
+    Left = 490
+    Top = 304
+    Width = 41
+    Height = 21
+    Enabled = False
+    TabOrder = 5
+    Text = '0'
+    OnChange = EdtReadingChange
+    Caption = 'Reading'
+  end
+  object edtDtRead: TCaptionEdit [14]
+    Left = 104
+    Top = 376
+    Width = 97
+    Height = 21
+    TabOrder = 8
+    Text = 'edtDtRead'
+    Visible = False
+    Caption = 'Date Read'
+  end
+  object edtDTGiven: TCaptionEdit [15]
+    Left = 280
+    Top = 376
+    Width = 81
+    Height = 21
+    TabOrder = 9
+    Text = 'edtDTGiven'
+    Visible = False
+    Caption = 'Date Given'
+  end
+  object cboSkinResults: TORComboBox [16]
+    Tag = 30
+    Left = 490
+    Top = 260
+    Width = 121
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Results'
+    Color = clWindow
+    DropDownCount = 8
+    Enabled = False
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = cboSkinResultsChange
+    CharsNeedMatch = 1
+  end
+  inherited btnRemove: TButton
+    TabOrder = 7
+  end
+  inherited btnSelectAll: TButton
+    TabOrder = 2
+    TabStop = True
+  end
+  inherited pnlMain: TPanel
+    TabOrder = 0
+    inherited lbxSection: TORListBox
+      Tag = 50
+    end
+    inherited pnlLeft: TPanel
+      inherited lbSection: TORListBox
+        Tag = 50
+        TabOrder = 0
+        Caption = 'Skin Test Section'
+      end
+      inherited btnOther: TButton
+        Tag = 21
+        Caption = 'Other Skin Test...'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = UpDnReading'
+        'Status = stsDefault')
+      (
+        'Component = EdtReading'
+        'Label = lblReading'
+        'Status = stsOK')
+      (
+        'Component = edtDtRead'
+        'Label = lblDTRead'
+        'Status = stsOK')
+      (
+        'Component = edtDTGiven'
+        'Label = lblDTGiven'
+        'Status = stsOK')
+      (
+        'Component = cboSkinResults'
+        'Label = lblSkinResults'
+        'Status = stsOK')
+      (
+        'Component = edtComment'
+        'Label = lblComment'
+        'Status = stsOK')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnSelectAll'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lbxSection'
+        'Label = lblList'
+        'Status = stsOK')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lbSection'
+        'Label = lblSection'
+        'Status = stsOK')
+      (
+        'Component = btnOther'
+        'Status = stsDefault')
+      (
+        'Component = pnlGrid'
+        'Status = stsDefault')
+      (
+        'Component = lbGrid'
+        'Status = stsDefault')
+      (
+        'Component = hcGrid'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmSkinTests'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fSkinTest.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fSkinTest.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fSkinTest.pas	(revision 1676)
@@ -0,0 +1,251 @@
+unit fSkinTest;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, ORCtrls, StdCtrls, ComCtrls, CheckLst, ExtCtrls, Buttons, uPCE, rPCE, ORFn,
+  fPCELex, fPCEOther, rCore, fPCEBaseMain, VA508AccessibilityManager;
+
+type
+  TfrmSkinTests = class(TfrmPCEBaseMain)
+    lblSkinResults: TLabel;
+    lblDTRead: TLabel;
+    lblReading: TLabel;
+    lblDTGiven: TLabel;
+    UpDnReading: TUpDown;
+    EdtReading: TCaptionEdit;
+    edtDtRead: TCaptionEdit;
+    edtDTGiven: TCaptionEdit;
+    cboSkinResults: TORComboBox;
+    procedure cboSkinResultsChange(Sender: TObject);
+    procedure EdtReadingChange(Sender: TObject);
+    procedure edtDtReadChange(Sender: TObject);
+    procedure edtDTGivenChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure UpDnReadingChanging(Sender: TObject;
+      var AllowChange: Boolean);
+  private
+  protected
+    procedure UpdateNewItemStr(var x: string); override;
+    procedure UpdateControls; override;
+  public
+  end;
+
+var
+  frmSkinTests: TfrmSkinTests;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, VA508AccessibilityRouter;
+
+procedure TfrmSkinTests.cboSkinResultsChange(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(NotUpdating) and (cboSkinResults.Text <> '') then
+  begin
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCESkin(lbGrid.Items.Objects[i]).Results := cboSkinResults.ItemID;
+    GridChanged;
+  end;
+end;
+
+{///////////////////////////////////////////////////////////////////////////////
+//Name:procedure TfrmSkinTests.EdtReadingChange(Sender: TObject);
+//Created: Jan 1999
+//By: Robert Bott
+//Location: ISL
+//Description:Change the reading assigned to the skin test.
+///////////////////////////////////////////////////////////////////////////////}
+procedure TfrmSkinTests.EdtReadingChange(Sender: TObject);
+var
+  x, i: integer;
+
+begin
+  if(NotUpdating) then
+  begin
+    x := StrToIntDef(EdtReading.Text, 0);
+    for i := 0 to lbGrid.Items.Count-1 do
+      if(lbGrid.Selected[i]) then
+        TPCESkin(lbGrid.Items.Objects[i]).Reading := x;
+    GridChanged;
+  end;
+end;
+
+procedure TfrmSkinTests.edtDtReadChange(Sender: TObject);
+begin
+end;
+(*
+var
+  DtRead: TFMDateTime;
+  ASkinTest: TPCESkin;
+begin
+  inherited;
+  if lstSkinSelect.ItemIndex < 0 then Exit;
+
+  with lstSkinSelect do ASkinTest := TPCESkin(Items.Objects[ItemIndex]);
+  DtRead := StrToFMDateTime(edtReading.text);
+  with lstSkinSelect do if (ItemIndex > -1) then
+  begin
+    ASkinTest.DTRead := DTRead;
+    Items[ItemIndex] := ASkinTest.ItemStr;
+  end;
+end;
+*)
+
+procedure TfrmSkinTests.edtDTGivenChange(Sender: TObject);
+begin
+end;
+(*
+var
+  DtGiven: TFMDateTime;
+  ASkinTest: TPCESkin;
+begin
+  inherited;
+  if lstSkinSelect.ItemIndex < 0 then Exit;
+
+  with lstSkinSelect do ASkinTest := TPCESkin(Items.Objects[ItemIndex]);
+  DtGiven := StrToFMDateTime(edtDTGiven.text);
+  with lstSkinSelect do if (ItemIndex > -1) then
+  begin
+    ASkinTest.DTGiven := DTGIven;
+    Items[ItemIndex] := ASkinTest.ItemStr;
+  end;
+end;
+*)
+(*
+procedure TfrmSkinTests.CheckSkinRules;
+begin
+  //Results must be between 0 and 40
+  if StrToInt(EdtReading.Text) < 0 then EdtReading.text := '0';
+  if StrToInt(EdtReading.Text) > 40 then EdtReading.text := '40';
+
+(*  //if reading >10, result must be "positive"
+  if (StrToInt(EdtReading.Text) > 9) and
+    (CompareText(Piece(cboSkinResults.items[cboSkinResults.itemindex],U,1),'P') <> 0) then
+    begin
+      if (Piece(cboSkinResults.items[cboSkinResults.itemindex],U,1) = '@') then    // not selected
+      begin
+        cboSkinResults.SelectById('P');
+      end
+      else
+      begin
+        Show508Message('If the reading is over 9, the results are required to be positive.');
+        cboSkinResults.SelectById('P');
+       end;
+    end;
+end;
+*)
+
+procedure TfrmSkinTests.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FTabName := CT_SkinNm;
+  FPCEListCodesProc := ListSkinCodes;
+  FPCEItemClass := TPCESkin;
+  FPCECode := 'SK';
+  PCELoadORCombo(cboSkinResults);
+end;
+
+procedure TfrmSkinTests.UpdateNewItemStr(var x: string);
+begin
+  SetPiece(x, U, pnumSkinResults, NoPCEValue);
+  SetPiece(x, U, pnumSkinReading, '0');
+//  SetPiece(x, U, pnumSkinDTRead);
+//  SetPiece(x, U, pnumSkinDTGiven);
+end;
+
+procedure TfrmSkinTests.UpdateControls;
+var
+  ok, First: boolean;
+  SameRes, SameRead: boolean;
+  i: integer;
+  Res: string;
+  Read: integer;
+  Obj: TPCESkin;
+
+begin
+  inherited;
+  if(NotUpdating) then
+  begin
+    BeginUpdate;
+    try
+      ok := (lbGrid.SelCount > 0);
+      lblSkinResults.Enabled := ok;
+      lblReading.Enabled := ok;
+      cboSkinResults.Enabled := ok;
+      EdtReading.Enabled := ok;
+      UpDnReading.Enabled := ok;
+      if(ok) then
+      begin
+        First := TRUE;
+        SameRes := TRUE;
+        SameRead := TRUE;
+        Res := NoPCEValue;
+        Read := 0;
+        for i := 0 to lbGrid.Items.Count-1 do
+        begin
+          if lbGrid.Selected[i] then
+          begin
+            Obj := TPCESkin(lbGrid.Items.Objects[i]);
+            if(First) then
+            begin
+              First := FALSE;
+              Res := Obj.Results;
+              Read := Obj.Reading;
+            end
+            else
+            begin
+              if(SameRes) then
+                SameRes := (Res = Obj.Results);
+              if(SameRead) then
+                SameRead := (Read = Obj.Reading);
+            end;
+          end;
+        end;
+        if(SameRes) then
+          cboSkinResults.SelectByID(Res)
+        else
+          cboSkinResults.Text := '';
+        if(SameRead) then
+        begin
+          UpDnReading.Position := Read;
+          EdtReading.Text := IntToStr(Read);
+          EdtReading.SelStart := length(EdtReading.Text);
+        end
+        else
+        begin
+          UpDnReading.Position := 0;
+          EdtReading.Text := '';
+        end;
+      end
+      else
+      begin
+        cboSkinResults.Text := '';
+        EdtReading.Text := '';
+      end;
+    finally
+      EndUpdate;
+    end;
+  end;
+end;
+
+procedure TfrmSkinTests.UpDnReadingChanging(Sender: TObject;
+  var AllowChange: Boolean);
+begin
+  inherited;
+  if(UpDnReading.Position = 0) then
+    EdtReadingChange(Sender);
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmSkinTests);
+
+end.
+  
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fVisitType.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fVisitType.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fVisitType.dfm	(revision 1676)
@@ -0,0 +1,525 @@
+inherited frmVisitType: TfrmVisitType
+  Left = 260
+  Caption = 'Encounter VisitType'
+  ClientHeight = 438
+  ClientWidth = 592
+  Constraints.MinHeight = 465
+  Constraints.MinWidth = 600
+  OnCloseQuery = FormCloseQuery
+  ExplicitLeft = 260
+  ExplicitWidth = 600
+  ExplicitHeight = 472
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited btnOK: TBitBtn
+    Left = 436
+    Top = 414
+    TabOrder = 3
+    ExplicitLeft = 474
+    ExplicitTop = 459
+  end
+  object pnlTop: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 592
+    Height = 105
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    ExplicitWidth = 630
+    object splLeft: TSplitter
+      Left = 145
+      Top = 0
+      Height = 105
+      ExplicitLeft = 154
+      ExplicitTop = 7
+      ExplicitHeight = 145
+    end
+    object splRight: TSplitter
+      Left = 361
+      Top = 0
+      Height = 105
+      ExplicitLeft = 634
+    end
+    object pnlLeft: TPanel
+      Left = 0
+      Top = 0
+      Width = 145
+      Height = 105
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      ExplicitHeight = 145
+      object lblVTypeSection: TLabel
+        Left = 0
+        Top = 0
+        Width = 145
+        Height = 13
+        Align = alTop
+        Caption = 'Type of Visit'
+        ExplicitWidth = 58
+      end
+      object lstVTypeSection: TORListBox
+        Tag = 10
+        Left = 0
+        Top = 13
+        Width = 145
+        Height = 92
+        Align = alClient
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = lstVTypeSectionClick
+        Caption = 'Type of Visit'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '3'
+        CheckEntireLine = True
+      end
+    end
+    object pnlModifiers: TPanel
+      Left = 364
+      Top = 0
+      Width = 228
+      Height = 105
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 2
+      ExplicitLeft = 431
+      ExplicitWidth = 199
+      ExplicitHeight = 145
+      object lblMod: TLabel
+        Left = 0
+        Top = 0
+        Width = 228
+        Height = 13
+        Hint = 'Modifiers'
+        Align = alTop
+        Caption = 'Modifiers'
+        ParentShowHint = False
+        ShowHint = True
+        ExplicitWidth = 42
+      end
+      object lbMods: TORListBox
+        Left = 0
+        Top = 13
+        Width = 228
+        Height = 92
+        Style = lbOwnerDrawFixed
+        Align = alClient
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ItemHeight = 14
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        Caption = 'Modifiers'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3'
+        TabPosInPixels = True
+        CheckBoxes = True
+        CheckEntireLine = True
+        OnClickCheck = lbModsClickCheck
+        ExplicitWidth = 199
+        ExplicitHeight = 132
+      end
+    end
+    object pnlSection: TPanel
+      Left = 148
+      Top = 0
+      Width = 213
+      Height = 105
+      Align = alLeft
+      BevelOuter = bvNone
+      Caption = 'pnlSection'
+      TabOrder = 1
+      object lblVType: TLabel
+        Left = 0
+        Top = 0
+        Width = 213
+        Height = 13
+        Align = alTop
+        Caption = 'Section Name'
+        ExplicitWidth = 67
+      end
+      object lbxVisits: TORListBox
+        Tag = 10
+        Left = 0
+        Top = 13
+        Width = 213
+        Height = 92
+        Style = lbOwnerDrawFixed
+        Align = alClient
+        ItemHeight = 16
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = lbxVisitsClick
+        Caption = 'Section Name'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '3,4,5'
+        TabPosInPixels = True
+        CheckBoxes = True
+        CheckEntireLine = True
+        OnClickCheck = lbxVisitsClickCheck
+        ExplicitLeft = -3
+        ExplicitTop = 7
+        ExplicitWidth = 281
+      end
+    end
+  end
+  object pnlMiddle: TPanel [2]
+    Left = 0
+    Top = 105
+    Width = 592
+    Height = 164
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 1
+    ExplicitTop = 145
+    ExplicitWidth = 630
+    inline fraVisitRelated: TfraVisitRelated
+      Left = 384
+      Top = 0
+      Width = 208
+      Height = 164
+      Align = alRight
+      TabOrder = 1
+      ExplicitLeft = 384
+      ExplicitWidth = 208
+      ExplicitHeight = 164
+      inherited gbVisitRelatedTo: TGroupBox
+        Width = 208
+        Height = 164
+        ExplicitWidth = 208
+        ExplicitHeight = 164
+        inherited chkMSTYes: TCheckBox
+          Top = 127
+          ExplicitTop = 127
+        end
+        inherited chkMSTNo: TCheckBox
+          Top = 127
+          ExplicitTop = 127
+        end
+        inherited chkHNCYes: TCheckBox
+          Top = 143
+          ExplicitTop = 143
+        end
+        inherited chkHNCNo: TCheckBox
+          Top = 142
+          Width = 150
+          Height = 18
+          Caption = 'Head and/or Neck Cancer     No'
+          ExplicitTop = 142
+          ExplicitWidth = 150
+          ExplicitHeight = 18
+        end
+      end
+    end
+    object pnlSC: TPanel
+      Left = 0
+      Top = 0
+      Width = 384
+      Height = 164
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      ExplicitWidth = 422
+      object lblSCDisplay: TLabel
+        Left = 0
+        Top = 0
+        Width = 384
+        Height = 13
+        Align = alTop
+        Caption = 'Service Connection && Rated Disabilities'
+        ExplicitWidth = 186
+      end
+      object memSCDisplay: TCaptionMemo
+        Left = 0
+        Top = 13
+        Width = 384
+        Height = 151
+        Align = alClient
+        Color = clBtnFace
+        Lines.Strings = (
+          '')
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 0
+        OnEnter = memSCDisplayEnter
+        Caption = 'Service Connection && Rated Disabilities'
+      end
+    end
+  end
+  object pnlBottom: TPanel [3]
+    Left = 0
+    Top = 269
+    Width = 592
+    Height = 141
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 2
+    ExplicitTop = 309
+    ExplicitWidth = 630
+    object btnAdd: TButton
+      Left = 260
+      Top = 35
+      Width = 75
+      Height = 21
+      Caption = 'Add'
+      TabOrder = 1
+      OnClick = btnAddClick
+    end
+    object btnDelete: TButton
+      Left = 260
+      Top = 72
+      Width = 75
+      Height = 21
+      Caption = 'Remove'
+      TabOrder = 2
+      OnClick = btnDeleteClick
+    end
+    object btnPrimary: TButton
+      Left = 260
+      Top = 112
+      Width = 75
+      Height = 21
+      Caption = 'Primary'
+      TabOrder = 3
+      OnClick = btnPrimaryClick
+    end
+    object pnlBottomLeft: TPanel
+      Left = 0
+      Top = 0
+      Width = 240
+      Height = 141
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblProvider: TLabel
+        Left = 0
+        Top = 0
+        Width = 240
+        Height = 13
+        Align = alTop
+        Caption = 'Available providers'
+        ExplicitWidth = 89
+      end
+      object cboPtProvider: TORComboBox
+        Left = 0
+        Top = 13
+        Width = 240
+        Height = 128
+        Style = orcsSimple
+        Align = alClient
+        AutoSelect = True
+        Caption = 'Available providers'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 2
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        CheckEntireLine = True
+        OnChange = cboPtProviderChange
+        OnDblClick = cboPtProviderDblClick
+        OnNeedData = cboPtProviderNeedData
+        CharsNeedMatch = 1
+        ExplicitWidth = 260
+      end
+    end
+    object pnlBottomRight: TPanel
+      Left = 352
+      Top = 0
+      Width = 240
+      Height = 141
+      Align = alRight
+      BevelOuter = bvNone
+      TabOrder = 4
+      object lblCurrentProv: TLabel
+        Left = 0
+        Top = 0
+        Width = 240
+        Height = 13
+        Align = alTop
+        Caption = 'Current providers for this encounter'
+        ExplicitWidth = 165
+      end
+      object lbProviders: TORListBox
+        Left = 0
+        Top = 13
+        Width = 240
+        Height = 128
+        Align = alClient
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnDblClick = lbProvidersDblClick
+        Caption = 'Current providers for this encounter'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+        OnChange = lbProvidersChange
+        CheckEntireLine = True
+        ExplicitTop = 11
+        ExplicitWidth = 220
+      end
+    end
+  end
+  inherited btnCancel: TBitBtn
+    Left = 517
+    Top = 414
+    TabOrder = 4
+    ExplicitLeft = 555
+    ExplicitTop = 459
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 8
+    Top = 24
+    Data = (
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmVisitType'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lstVTypeSection'
+        'Label = lblVTypeSection'
+        'Status = stsOK')
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.gbVisitRelatedTo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSCYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkAOYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkIRYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkECYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkMSTYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkMSTNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkECNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkIRNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkAONo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSCNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkHNCYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkHNCNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkCVYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkCVNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSHDYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSHDNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.lblSCNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.lblSCYes'
+        'Status = stsDefault')
+      (
+        'Component = pnlSC'
+        'Status = stsDefault')
+      (
+        'Component = memSCDisplay'
+        'Label = lblSCDisplay'
+        'Status = stsOK')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnDelete'
+        'Status = stsDefault')
+      (
+        'Component = btnPrimary'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottomLeft'
+        'Status = stsDefault')
+      (
+        'Component = cboPtProvider'
+        'Label = lblProvider'
+        'Status = stsOK')
+      (
+        'Component = pnlBottomRight'
+        'Status = stsDefault')
+      (
+        'Component = lbProviders'
+        'Label = lblCurrentProv'
+        'Status = stsOK')
+      (
+        'Component = pnlModifiers'
+        'Status = stsDefault')
+      (
+        'Component = lbMods'
+        'Label = lblMod'
+        'Status = stsOK')
+      (
+        'Component = pnlSection'
+        'Status = stsDefault')
+      (
+        'Component = lbxVisits'
+        'Label = lblVType'
+        'Status = stsOK'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fVisitType.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fVisitType.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/fVisitType.pas	(revision 1676)
@@ -0,0 +1,551 @@
+unit fVisitType;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPCEBase, StdCtrls, CheckLst, ORCtrls, ExtCtrls, Buttons, uPCE, rPCE, ORFn, rCore,
+  ComCtrls, mVisitRelated, VA508AccessibilityManager;
+
+type
+  TfrmVisitType = class(TfrmPCEBase)
+    pnlTop: TPanel;
+    splLeft: TSplitter;
+    splRight: TSplitter;
+    pnlLeft: TPanel;
+    lstVTypeSection: TORListBox;
+    pnlMiddle: TPanel;
+    fraVisitRelated: TfraVisitRelated;
+    pnlSC: TPanel;
+    lblSCDisplay: TLabel;
+    memSCDisplay: TCaptionMemo;
+    pnlBottom: TPanel;
+    btnAdd: TButton;
+    btnDelete: TButton;
+    btnPrimary: TButton;
+    pnlBottomLeft: TPanel;
+    lblProvider: TLabel;
+    cboPtProvider: TORComboBox;
+    pnlBottomRight: TPanel;
+    lbProviders: TORListBox;
+    lblCurrentProv: TLabel;
+    lblVTypeSection: TLabel;
+    pnlModifiers: TPanel;
+    lbMods: TORListBox;
+    lblMod: TLabel;
+    pnlSection: TPanel;
+    lbxVisits: TORListBox;
+    lblVType: TLabel;
+    procedure lstVTypeSectionClick(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure FormCreate(Sender: TObject);
+    procedure btnAddClick(Sender: TObject);
+    procedure btnDeleteClick(Sender: TObject);
+    procedure btnPrimaryClick(Sender: TObject);
+    procedure cboPtProviderDblClick(Sender: TObject);
+    procedure cboPtProviderChange(Sender: TObject);
+    procedure cboPtProviderNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure lbProvidersChange(Sender: TObject);
+    procedure lbProvidersDblClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure lbxVisitsClickCheck(Sender: TObject; Index: Integer);
+    procedure lbModsClickCheck(Sender: TObject; Index: Integer);
+    procedure lbxVisitsClick(Sender: TObject);
+    procedure memSCDisplayEnter(Sender: TObject);
+  protected
+    FSplitterMove: boolean;
+    procedure ShowModifiers;
+    procedure CheckModifiers;
+  private
+    FChecking: boolean;
+    FCheckingMods: boolean;
+    FLastCPTCodes: string;
+    FLastMods: string;
+    procedure RefreshProviders;
+    procedure UpdateProviderButtons;
+  public
+    procedure MatchVType;
+  end;
+
+var
+  frmVisitType: TfrmVisitType;
+  USCchecked:boolean = false;
+//  PriProv: Int64;
+  PriProv: Int64;
+
+const
+  LBCheckWidthSpace = 18;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fEncounterFrame, uCore, uConst, VA508AccessibilityRouter;
+
+const
+  FN_NEW_PERSON = 200;
+  
+procedure TfrmVisitType.MatchVType;
+var
+  i: Integer;
+  Found: Boolean;
+begin
+  with uVisitType do
+  begin
+    if Code = '' then Exit;
+    Found := False;
+    with lstVTypeSection do for i := 0 to Items.Count - 1 do
+      if Piece(Items[i], U, 2) = Category then
+      begin
+        ItemIndex := i;
+        lstVTypeSectionClick(Self);
+        Found := True;
+        break;
+      end;
+    if Found then for i := 0 to lbxVisits.Items.Count - 1 do
+      if Pieces(lbxVisits.Items[i], U, 1, 2) = Code + U + Narrative then
+      begin
+        lbxVisits.ItemIndex := i;
+        FChecking := TRUE;
+        try
+          lbxVisits.Checked[i] := True;
+          lbxVisitsClickCheck(Self, i);
+        finally
+          FChecking := FALSE;
+        end;
+      end;
+  end;
+end;
+
+procedure TfrmVisitType.lstVTypeSectionClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  ListVisitTypeCodes(lbxVisits.Items, lstVTypeSection.ItemIEN);
+  with uVisitType do for i := 0 to lbxVisits.Items.Count - 1 do
+    begin
+      if ((uVisitType <> nil) and (Pieces(lbxVisits.Items[i], U, 1, 2) = Code + U + Narrative)) then
+        begin
+          FChecking := TRUE;
+          try
+            lbxVisits.Checked[i] := True;
+            lbxVisits.ItemIndex := i;
+          finally
+            FChecking := FALSE;
+          end;
+        end;
+    end;
+  lbxVisitsClick(Self);
+end;
+
+procedure TfrmVisitType.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+begin
+  inherited;
+  //process before closing
+
+end;
+
+(*function ExposureAnswered: Boolean;
+begin
+  result := false;
+  //if SC answered set result = true
+end;*)
+
+
+procedure TfrmVisitType.RefreshProviders;
+var
+  i: integer;
+  ProvData: TPCEProviderRec;
+  ProvEntry: string;
+
+begin
+  lbProviders.Clear;
+  for i := 0 to uProviders.count-1 do
+  begin
+    ProvData := uProviders[i];
+    ProvEntry := IntToStr(ProvData.IEN) + U + ProvData.Name;
+    if(ProvData.Primary) then
+      ProvEntry := ProvEntry + ' (Primary)';
+    lbProviders.Items.Add(ProvEntry);
+  end;
+  UpdateProviderButtons;
+end;
+
+procedure TfrmVisitType.FormCreate(Sender: TObject);
+var
+  AIEN: Int64;
+
+begin
+  inherited;
+  FTabName := CT_VisitNm;
+  FSectionTabCount := 2;
+  FormResize(Self);
+  AIEN := uProviders.PendingIEN(TRUE);
+  if(AIEN = 0) then
+  begin
+    AIEN := uProviders.PendingIEN(FALSE);
+    if(AIEN = 0) then
+    begin
+      cboPtProvider.InitLongList(User.Name);
+      AIEN := User.DUZ;
+    end
+    else
+      cboPtProvider.InitLongList(uProviders.PendingName(FALSE));
+    cboPtProvider.SelectByIEN(AIEN);
+  end
+  else
+  begin
+    cboPtProvider.InitLongList(uProviders.PendingName(TRUE));
+    cboPtProvider.SelectByIEN(AIEN);
+  end;
+  RefreshProviders;
+  FLastMods := uEncPCEData.VisitType.Modifiers;
+  fraVisitRelated.TabStop := FALSE;
+end;
+
+(*procedure TfrmVisitType.SynchEncounterProvider;
+// add the Encounter.Provider if this note is for the current encounter
+var
+  ProviderFound, PrimaryFound: Boolean;
+  i: Integer;
+  AProvider: TPCEProvider;
+begin
+  if (FloatToStrF(uEncPCEData.DateTime, ffFixed, 15, 4) =      // compensate rounding errors
+      FloatToStrF(Encounter.DateTime,   ffFixed, 15, 4)) and
+     (uEncPCEData.Location = Encounter.Location) and
+     (Encounter.Provider > 0) then
+  begin
+    ProviderFound := False;
+    PrimaryFound := False;
+    for i := 0 to ProviderLst.Count - 1 do
+    begin
+      AProvider := TPCEProvider(ProviderLst.Items[i]);
+      if AProvider.IEN = Encounter.Provider then ProviderFound := True;
+      if AProvider.Primary = '1' then PrimaryFound := True;
+    end;
+    if not ProviderFound then
+    begin
+      AProvider := TPCEProvider.Create;
+      AProvider.IEN := Encounter.Provider;
+      AProvider.Name := ExternalName(Encounter.Provider, FN_NEW_PERSON);
+      if not PrimaryFound then
+      begin
+        AProvider.Primary := '1';
+        uProvider := Encounter.Provider;
+      end
+      else AProvider.Primary := '0';
+      AProvider.Delete := False;
+      ProviderLst.Add(AProvider);
+    end;
+  end;
+end;
+*)
+
+procedure TfrmVisitType.UpdateProviderButtons;
+var
+  ok: boolean;
+
+begin
+  ok := (lbProviders.ItemIndex >= 0);
+  btnDelete.Enabled := ok;
+  btnPrimary.Enabled := ok;
+  btnAdd.Enabled := (cboPtProvider.ItemIEN <> 0);
+end;
+
+procedure TfrmVisitType.btnAddClick(Sender: TObject);
+begin
+  inherited;
+  uProviders.AddProvider(IntToStr(cboPTProvider.ItemIEN), cboPTProvider.Text, FALSE);
+  RefreshProviders;
+  lbProviders.SelectByIEN(cboPTProvider.ItemIEN);
+end;
+
+procedure TfrmVisitType.btnDeleteClick(Sender: TObject);
+var
+  idx: integer;
+
+begin
+  inherited;
+  If lbProviders.ItemIndex = -1 then exit;
+  idx := uProviders.IndexOfProvider(lbProviders.ItemID);
+  if(idx >= 0) then
+    uProviders.Delete(idx);
+  RefreshProviders;
+end;
+
+procedure TfrmVisitType.btnPrimaryClick(Sender: TObject);
+var
+  idx: integer;
+  AIEN: Int64;
+
+begin
+  inherited;
+  if lbProviders.ItemIndex = -1 then exit;
+  AIEN := lbProviders.ItemIEN;
+  idx := uProviders.IndexOfProvider(IntToStr(AIEN));
+  if(idx >= 0) then
+    uProviders.PrimaryIdx := idx;
+  RefreshProviders;
+  lbProviders.SelectByIEN(AIEN);
+end;
+
+procedure TfrmVisitType.cboPtProviderDblClick(Sender: TObject);
+begin
+  inherited;
+  btnAddClick(Sender);
+end;
+
+procedure TfrmVisitType.cboPtProviderChange(Sender: TObject);
+begin
+  inherited;
+  UpdateProviderButtons;
+end;
+
+procedure TfrmVisitType.cboPtProviderNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  inherited;
+  if(uEncPCEData.VisitCategory = 'E') then
+    cboPtProvider.ForDataUse(SubSetOfPersons(StartFrom, Direction))
+  else
+    cboPtProvider.ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction,
+                                     FloatToStr(uEncPCEData.PersonClassDate)));
+end;
+
+procedure TfrmVisitType.lbProvidersChange(Sender: TObject);
+begin
+  inherited;
+  UpdateProviderButtons;
+end;
+
+procedure TfrmVisitType.lbProvidersDblClick(Sender: TObject);
+begin
+  inherited;
+  btnDeleteClick(Sender);
+end;
+
+procedure TfrmVisitType.FormResize(Sender: TObject);
+var
+  v, i: integer;
+  s: string;
+  padding, size: integer;
+  btnOffset: integer;
+begin
+  if FSplitterMove then
+    FSplitterMove := FALSE
+  else
+  begin
+//      inherited;
+    FSectionTabs[0] := -(lbxVisits.width - LBCheckWidthSpace - MainFontWidth - ScrollBarWidth);
+    FSectionTabs[1] := -(lbxVisits.width - (6*MainFontWidth) - ScrollBarWidth);
+    if(FSectionTabs[0] <= FSectionTabs[1]) then FSectionTabs[0] := FSectionTabs[1]+2;
+    lbxVisits.TabPositions := SectionString;
+    v := (lbMods.width - LBCheckWidthSpace - (4*MainFontWidth) - ScrollBarWidth);
+    s := '';
+    for i := 1 to 20 do
+    begin
+      if s <> '' then s := s + ',';
+      s := s + inttostr(v);
+      if(v<0) then
+        dec(v,32)
+      else
+        inc(v,32);
+    end;
+    lbMods.TabPositions := s;
+  end;
+  btnOffset := btnAdd.Width div 7;
+  padding := btnAdd.Width + (btnOffset * 2);
+  size := (ClientWidth - padding) div 2;
+  pnlBottomLeft.Width := size;
+  pnlBottomRight.Width := size;
+  btnAdd.Left := size + btnOffset;
+  btnDelete.Left := size + btnOffset;
+  btnPrimary.Left := size + btnOffset;
+  btnOK.top := ClientHeight - btnOK.Height - 4;
+  btnCancel.top := btnOK.Top;
+  btnCancel.Left := ClientWidth - btnCancel.Width - 4;
+  btnOK.Left := btnCancel.Left - btnOK.Width - 4;
+  size := ClientHeight - btnOK.Height - pnlMiddle.Height - pnlBottom.Height - 8;
+  pnlTop.Height := size;
+end;
+
+procedure TfrmVisitType.lbxVisitsClickCheck(Sender: TObject;
+  Index: Integer);
+var
+  i: Integer;
+  x, CurCategory: string;
+begin
+  inherited;
+  if FChecking or FClosing then exit;
+  for i := 0 to lbxVisits.Items.Count - 1 do
+    if i <> lbxVisits.ItemIndex then
+    begin
+      FChecking := TRUE;
+      try
+        uVisitType.Modifiers := '';
+        lbxVisits.Checked[i] := False;
+      finally
+        FChecking := FALSE;
+      end;
+    end;
+  if lbxVisits.Checked[lbxVisits.ItemIndex] then with uVisitType do
+  begin
+    with lstVTypeSection do CurCategory := Piece(Items[ItemIndex], U, 2);
+    x := Pieces(lbxVisits.Items[lbxVisits.ItemIndex], U, 1, 2);
+    x := 'CPT' + U + Piece(x, U, 1) + U + CurCategory + U + Piece(x, U, 2) + U + '1' + U
+        + IntToStr(uProviders.PrimaryIEN);
+//      + IntToStr(uProvider);
+    uVisitType.SetFromString(x);
+  end
+  else
+  begin
+    uVisitType.Clear;
+    //with lstVTypeSection do CurCategory := Piece(Items[ItemIndex], U, 2);
+  end;
+end;
+
+procedure TfrmVisitType.ShowModifiers;
+const
+  ModTxt = 'Modifiers';
+  ForTxt = ' for ';
+  Spaces = '    ';
+
+var
+  TopIdx: integer;
+//  Needed,
+  Codes, VstName, Hint, Msg: string;
+
+begin
+  Codes := '';
+  VstName := '';
+  Hint := '';
+  if(Codes = '') and (lbxVisits.ItemIndex >= 0) then
+  begin
+    Codes := piece(lbxVisits.Items[lbxVisits.ItemIndex],U,1) + U;
+    VstName := piece(lbxVisits.Items[lbxVisits.ItemIndex],U,2);
+    Hint := VstName;
+//    Needed := piece(lbxVisit.Items[lbxVisit.ItemIndex],U,4); Don't show expired codes!
+  end;
+  msg := ModTxt;
+  if(VstName <> '') then
+    msg := msg + ForTxt;
+  lblMod.Caption := msg + VstName;
+  lbMods.Caption := lblMod.Caption;
+  if(pos(CRLF,Hint)>0) then
+    Hint := ':' + CRLF + Spaces + Hint;
+  lblMod.Hint := msg + Hint;
+  
+  if(FLastCPTCodes = Codes) then
+    TopIdx := lbMods.TopIndex
+  else
+  begin
+    TopIdx := 0;
+    FLastCPTCodes := Codes;
+  end;
+  ListCPTModifiers(lbMods.Items, Codes, ''); // Needed);
+  lbMods.TopIndex := TopIdx;
+  CheckModifiers;
+end;
+
+procedure TfrmVisitType.CheckModifiers;
+var
+  i, idx, cnt, mcnt: integer;
+  Code, Mods: string;
+  state: TCheckBoxState;
+
+begin
+  if lbMods.Items.Count < 1 then exit;
+  FCheckingMods := TRUE;
+  try
+    cnt := 0;
+    Mods := ';';
+    if uVisitType.Modifiers <> '' then
+      begin
+        inc(cnt);
+        Mods := Mods + uVisitType.Modifiers;
+      end;
+    if(cnt = 0) and (lbxVisits.ItemIndex >= 0) then
+    begin
+      Mods := ';' + UpdateVisitTypeModifierList(lbxVisits.Items, lbxVisits.ItemIndex);
+      lbxVisits.Checked[lbxVisits.ItemIndex] := True;
+      cnt := 1;
+    end;
+    for i := 0 to lbMods.Items.Count-1 do
+    begin
+      state := cbUnchecked;
+      if(cnt > 0) then
+      begin
+        Code := ';' + piece(lbMods.Items[i], U, 1) + ';';
+        mcnt := 0;
+        repeat
+          idx := pos(Code, Mods);
+          if(idx > 0) then
+          begin
+            inc(mcnt);
+            delete(Mods, idx, length(Code) - 1);
+          end;
+        until (idx = 0);
+        if mcnt >= cnt then
+          State := cbChecked
+        else
+        if(mcnt > 0) then
+          State := cbGrayed;
+      end;
+      lbMods.CheckedState[i] := state;
+    end;
+  finally
+    FCheckingMods := FALSE;
+  end;
+end;
+
+procedure TfrmVisitType.lbModsClickCheck(Sender: TObject; Index: Integer);
+var
+  idx: integer;
+  ModIEN: string;
+  Add: boolean;
+begin
+  if FCheckingMods or (Index < 0) then exit;
+  Add := (lbMods.Checked[Index]);
+  ModIEN := piece(lbMods.Items[Index],U,1) + ';';
+  idx := pos(';' + ModIEN, ';' + uVisitType.Modifiers);
+  if(idx > 0) then
+  begin
+    if not Add then
+    begin
+      delete(uVisitType.Modifiers, idx, length(ModIEN));
+    end;
+  end
+  else
+  begin
+    if Add then
+    begin
+      uVisitType.Modifiers := uVisitType.Modifiers + ModIEN;
+    end;
+  end;
+end;
+
+procedure TfrmVisitType.lbxVisitsClick(Sender: TObject);
+begin
+  inherited;
+  ShowModifiers;
+end;
+
+procedure TfrmVisitType.memSCDisplayEnter(Sender: TObject);
+begin
+  inherited;
+  memSCDisplay.SelStart := 0;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmVisitType);
+
+//frmVisitType.CreateProviderList;
+
+finalization
+//frmVisitType.FreeProviderList;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/mVisitRelated.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/mVisitRelated.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/mVisitRelated.dfm	(revision 1676)
@@ -0,0 +1,194 @@
+object fraVisitRelated: TfraVisitRelated
+  Left = 0
+  Top = 0
+  Width = 206
+  Height = 172
+  TabOrder = 0
+  object gbVisitRelatedTo: TGroupBox
+    Left = 0
+    Top = 0
+    Width = 206
+    Height = 172
+    Align = alClient
+    Caption = 'Visit Related To'
+    TabOrder = 0
+    object chkSCYes: TCheckBox
+      Tag = 1
+      Left = 7
+      Top = 33
+      Width = 14
+      Height = 17
+      Caption = 'Service Connected Condition     Yes'
+      TabOrder = 0
+      OnClick = chkClick
+    end
+    object chkAOYes: TCheckBox
+      Tag = 2
+      Left = 7
+      Top = 65
+      Width = 14
+      Height = 17
+      Caption = 'Agent Orange Exposure     Yes'
+      TabOrder = 4
+      OnClick = chkClick
+    end
+    object chkIRYes: TCheckBox
+      Tag = 3
+      Left = 7
+      Top = 81
+      Width = 14
+      Height = 17
+      Caption = 'Ionizing Radiation Exposure     Yes'
+      TabOrder = 6
+      OnClick = chkClick
+    end
+    object chkECYes: TCheckBox
+      Tag = 4
+      Left = 7
+      Top = 97
+      Width = 14
+      Height = 17
+      Caption = 'Southwest Asia Conditions     Yes'
+      TabOrder = 8
+      OnClick = chkClick
+    end
+    object chkMSTYes: TCheckBox
+      Tag = 5
+      Left = 7
+      Top = 129
+      Width = 14
+      Height = 17
+      Caption = 'MST     Yes'
+      TabOrder = 12
+      OnClick = chkClick
+    end
+    object chkMSTNo: TCheckBox
+      Tag = 15
+      Left = 27
+      Top = 129
+      Width = 40
+      Height = 17
+      Caption = 'MST     No'
+      TabOrder = 13
+      OnClick = chkClick
+    end
+    object chkECNo: TCheckBox
+      Tag = 14
+      Left = 27
+      Top = 97
+      Width = 148
+      Height = 17
+      Caption = 'Southwest Asia Conditions     No'
+      TabOrder = 9
+      OnClick = chkClick
+    end
+    object chkIRNo: TCheckBox
+      Tag = 13
+      Left = 27
+      Top = 81
+      Width = 154
+      Height = 17
+      Caption = 'Ionizing Radiation Exposure    No'
+      TabOrder = 7
+      OnClick = chkClick
+    end
+    object chkAONo: TCheckBox
+      Tag = 12
+      Left = 27
+      Top = 65
+      Width = 136
+      Height = 17
+      Caption = 'Agent Orange Exposure    No'
+      TabOrder = 5
+      OnClick = chkClick
+    end
+    object chkSCNo: TCheckBox
+      Tag = 11
+      Left = 27
+      Top = 33
+      Width = 158
+      Height = 17
+      Caption = 'Service Connected Condition    No'
+      TabOrder = 1
+      OnClick = chkClick
+    end
+    object chkHNCYes: TCheckBox
+      Tag = 6
+      Left = 7
+      Top = 145
+      Width = 14
+      Height = 17
+      Caption = 'Head and/or Neck Cancer    Yes'
+      TabOrder = 14
+      OnClick = chkClick
+    end
+    object chkHNCNo: TCheckBox
+      Tag = 16
+      Left = 27
+      Top = 145
+      Width = 144
+      Height = 17
+      Caption = 'Head and/or Neck Cancer    No'
+      TabOrder = 15
+      OnClick = chkClick
+    end
+    object chkCVYes: TCheckBox
+      Tag = 7
+      Left = 7
+      Top = 49
+      Width = 14
+      Height = 17
+      Caption = 'Combat Vet (Combat Related)     Yes'
+      TabOrder = 2
+      OnClick = chkClick
+    end
+    object chkCVNo: TCheckBox
+      Tag = 17
+      Left = 27
+      Top = 49
+      Width = 165
+      Height = 17
+      Caption = 'Combat Vet (Combat Related)    No'
+      TabOrder = 3
+      OnClick = chkClick
+    end
+    object chkSHDYes: TCheckBox
+      Tag = 8
+      Left = 7
+      Top = 112
+      Width = 14
+      Height = 17
+      Caption = 'Shipboard Hazard and Defense     Yes'
+      TabOrder = 10
+      OnClick = chkClick
+    end
+    object chkSHDNo: TCheckBox
+      Tag = 18
+      Left = 27
+      Top = 112
+      Width = 168
+      Height = 17
+      Caption = 'Shipboard Hazard and Defense     No'
+      TabOrder = 11
+      OnClick = chkClick
+    end
+    object lblSCNo: TStaticText
+      Left = 27
+      Top = 16
+      Width = 18
+      Height = 13
+      AutoSize = False
+      Caption = 'No'
+      TabOrder = 17
+    end
+    object lblSCYes: TStaticText
+      Left = 4
+      Top = 16
+      Width = 22
+      Height = 13
+      AutoSize = False
+      Caption = 'Yes'
+      TabOrder = 16
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/mVisitRelated.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/mVisitRelated.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/mVisitRelated.pas	(revision 1676)
@@ -0,0 +1,261 @@
+unit mVisitRelated;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, rPCE, uPCE;
+
+type
+  TfraVisitRelated = class(TFrame)
+    gbVisitRelatedTo: TGroupBox;
+    chkSCYes: TCheckBox;
+    chkAOYes: TCheckBox;
+    chkIRYes: TCheckBox;
+    chkECYes: TCheckBox;
+    chkMSTYes: TCheckBox;
+    chkMSTNo: TCheckBox;
+    chkECNo: TCheckBox;
+    chkIRNo: TCheckBox;
+    chkAONo: TCheckBox;
+    chkSCNo: TCheckBox;
+    chkHNCYes: TCheckBox;
+    chkHNCNo: TCheckBox;
+    chkCVYes: TCheckBox;
+    chkCVNo: TCheckBox;
+    chkSHDYes: TCheckBox;
+    chkSHDNo: TCheckBox;
+    lblSCNo: TStaticText;
+    lblSCYes: TStaticText;
+    procedure chkClick(Sender: TObject);
+  private
+    FSCCond: TSCConditions;
+    procedure SetCheckEnable(CheckYes, CheckNo: TCheckBox; Allow: Boolean);
+    procedure SetCheckState(CheckYes, CheckNo: TCheckBox; CheckState: Integer);
+    function GetCheckState(CheckYes, CheckNo: TCheckBox): Integer;
+
+  public
+    constructor Create(AOwner: TComponent); override;
+    procedure GetRelated(PCEData: TPCEData); overload;
+    procedure GetRelated(var ASCRelated, AAORelated, AIRRelated,
+                                AECRelated, AMSTRelated, AHNCRelated, ACVRelated,ASHDRelated: integer); overload;
+    procedure InitAllow(SCCond: TSCConditions);
+    procedure InitRelated(PCEData: TPCEData); overload;
+    procedure InitRelated(const ASCRelated, AAORelated, AIRRelated,
+                                AECRelated, AMSTRelated, AHNCRelated, ACVRelated,ASHDRelated: integer); overload;
+
+  end;
+
+implementation
+
+uses VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+const
+  TAG_SCYES      = 1;
+  TAG_AOYES      = 2;
+  TAG_IRYES      = 3;
+  TAG_ECYES      = 4;
+  TAG_MSTYES     = 5;
+  TAG_HNCYES     = 6;
+  TAG_CVYES      = 7;
+  TAG_SHDYES     = 8;
+  TAG_SCNO       = 11;
+  TAG_AONO       = 12;
+  TAG_IRNO       = 13;
+  TAG_ECNO       = 14;
+  TAG_MSTNO      = 15;
+  TAG_HNCNO      = 16;
+  TAG_CVNO       = 17;
+  TAG_SHDNO      = 18;
+
+
+procedure TfraVisitRelated.chkClick(Sender: TObject);
+
+  procedure DisableCheck(ACheckBox: TCheckBox);
+  begin
+    ACheckBox.Checked := False; ACheckBox.Enabled := False;
+  end;
+
+begin
+  inherited;
+  if Sender is TCheckBox then with TCheckBox(Sender) do case Tag of
+    TAG_SCYES:   if Checked then chkSCNo.Checked    := False;
+    TAG_AOYES:   if Checked then chkAONo.Checked    := False;
+    TAG_IRYES:   if Checked then chkIRNo.Checked    := False;
+    TAG_ECYES:   if Checked then chkECNo.Checked    := False;
+    TAG_MSTYES:  if Checked then chkMSTNo.Checked   := False;
+    TAG_HNCYES:  if Checked then chkHNCNo.Checked   := False;
+    TAG_CVYES:   if Checked then chkCVNo.Checked    := False;
+    TAG_SHDYES:  if Checked then chkSHDNo.Checked   := False;
+    TAG_SCNO:    if Checked then chkSCYes.Checked   := False;
+    TAG_AONO:    if Checked then chkAOYes.Checked   := False;
+    TAG_IRNO:    if Checked then chkIRYes.Checked   := False;
+    TAG_ECNO:    if Checked then chkECYes.Checked   := False;
+    TAG_MSTNO:   if Checked then chkMSTYes.Checked  := False;
+    TAG_HNCNO:   if Checked then chkHNCYes.Checked  := False;
+    TAG_CVNO:    if Checked then chkCVYes.Checked   := False;
+    TAG_SHDNO:   if Checked then chkSHDYes.Checked := False;
+  end;
+  if chkSCYes.Checked then
+  begin
+    DisableCheck(chkAOYes);
+    DisableCheck(chkIRYes);
+    DisableCheck(chkECYes);
+    DisableCheck(chkSHDYes);
+//    DisableCheck(chkMSTYes);
+    DisableCheck(chkAONo);
+    DisableCheck(chkIRNo);
+    DisableCheck(chkECNo);
+    DisableCheck(chkSHDNo);
+//    DisableCheck(chkMSTNo);
+  end else
+  begin
+    SetCheckEnable(chkSCYes,  chkSCNo,  FSCCond.SCAllow);
+    SetCheckEnable(chkAOYes,  chkAONo,  FSCCond.AOAllow);
+    SetCheckEnable(chkIRYes,  chkIRNo,  FSCCond.IRAllow);
+    SetCheckEnable(chkECYes,  chkECNo,  FSCCond.ECAllow);
+    SetCheckEnable(chkSHDYEs, chkSHDNo, FSCCond.SHDAllow);
+  end;
+  SetCheckEnable(chkMSTYes, chkMSTNo, FSCCond.MSTAllow);
+  SetCheckEnable(chkHNCYes, chkHNCNo, FSCCond.HNCAllow);
+  SetCheckEnable(chkCVYes, chkCVNo,   FSCCond.CVAllow);
+
+  if chkAOYes.Checked or chkIRYes.Checked or chkECYes.Checked or chkSHDYes.Checked then //or chkMSTYes.Checked then
+  begin
+    if FSCCond.SCAllow then
+    begin
+       chkSCYes.Checked := False;
+       chkSCNo.Checked := True;
+    end;
+  end;
+end;
+
+constructor TfraVisitRelated.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  TabStop := FALSE;
+  lblSCYes.Height := 13;
+  lblSCNo.Height := 13;
+end;
+
+function TfraVisitRelated.GetCheckState(CheckYes, CheckNo: TCheckBox): Integer;
+begin
+  Result := SCC_NA;
+  if CheckYes.Enabled and CheckYes.Checked then Result := SCC_YES;
+  if CheckNo.Enabled and CheckNo.Checked then Result := SCC_NO;
+end;
+
+procedure TfraVisitRelated.GetRelated(PCEData: TPCEData);
+begin
+  PCEData.SCRelated  := GetCheckState(chkSCYes,  chkSCNo);
+  PCEData.AORelated  := GetCheckState(chkAOYes,  chkAONo);
+  PCEData.IRRelated  := GetCheckState(chkIRYes,  chkIRNo);
+  PCEData.ECRelated  := GetCheckState(chkECYes,  chkECNo);
+  PCEData.MSTRelated := GetCheckState(chkMSTYes, chkMSTNo);
+  PCEData.HNCRelated := GetCheckState(chkHNCYes, chkHNCNo);
+  PCEData.CVRelated  := GetCheckState(chkCVYes,  chkCVNo);
+  PCEData.SHADRelated := GetCheckState(chkSHDYes, chkSHDNo);
+end;
+
+procedure TfraVisitRelated.GetRelated(var ASCRelated, AAORelated,
+  AIRRelated, AECRelated, AMSTRelated, AHNCRelated, ACVRelated, ASHDRelated: integer);
+begin
+  ASCRelated  := GetCheckState(chkSCYes,  chkSCNo);
+  AAORelated  := GetCheckState(chkAOYes,  chkAONo);
+  AIRRelated  := GetCheckState(chkIRYes,  chkIRNo);
+  AECRelated  := GetCheckState(chkECYes,  chkECNo);
+  AMSTRelated := GetCheckState(chkMSTYes, chkMSTNo);
+  AHNCRelated := GetCheckState(chkHNCYes, chkHNCNo);
+  ACVRelated  := GetCheckState(chkCVYes,  chkCVNo);
+  ASHDRelated := GetCheckState(chkSHDYes, chkSHDNo);
+end;
+
+procedure TfraVisitRelated.InitAllow(SCCond: TSCConditions);
+begin
+  FSCCond := SCCond;
+  with FSCCond do
+  begin
+    SetCheckEnable(chkSCYes,  chkSCNo,  SCAllow);
+    SetCheckEnable(chkAOYes,  chkAONo,  AOAllow);
+    SetCheckEnable(chkIRYes,  chkIRNo,  IRAllow);
+    SetCheckEnable(chkECYes,  chkECNo,  ECAllow);
+    SetCheckEnable(chkMSTYes, chkMSTNo, MSTAllow);
+    SetCheckEnable(chkHNCYes, chkHNCNo, HNCAllow);
+    SetCheckEnable(chkCVYes,  chkCVNo,  CVAllow);
+    SetCheckEnable(chkSHDYes, chkSHDNo, SHDAllow);
+  end;
+end;
+
+procedure TfraVisitRelated.InitRelated(PCEData: TPCEData);
+begin
+  SetCheckState(chkSCYes,  chkSCNo,  PCEData.SCRelated);
+  SetCheckState(chkAOYes,  chkAONo,  PCEData.AORelated);
+  SetCheckState(chkIRYes,  chkIRNo,  PCEData.IRRelated);
+  SetCheckState(chkECYes,  chkECNo,  PCEData.ECRelated);
+  SetCheckState(chkMSTYes, chkMSTNo, PCEData.MSTRelated);
+  SetCheckState(chkHNCYes, chkHNCNo, PCEData.HNCRelated);
+  SetCheckState(chkCVYes,  chkCVNo,  PCEData.CVRelated);
+  SetCheckState(chkSHDYes, chkSHDNo, PCEData.SHADRelated);
+   //HDS00015356: GWOT Default, if Related no specified default to "Yes"
+  // -1=Null, 0=No, 1 = Yes
+  if FSCCond.CVAllow then
+  begin
+    if PCEData.CVRelated = SCC_NA then
+       chkCVYes.Checked := True;
+  end;
+end;
+
+procedure TfraVisitRelated.InitRelated(const ASCRelated, AAORelated, AIRRelated,
+  AECRelated, AMSTRelated, AHNCRelated, ACVRelated, ASHDRelated: integer);
+begin
+  SetCheckState(chkSCYes,  chkSCNo,  ASCRelated);
+  SetCheckState(chkAOYes,  chkAONo,  AAORelated);
+  SetCheckState(chkIRYes,  chkIRNo,  AIRRelated);
+  SetCheckState(chkECYes,  chkECNo,  AECRelated);
+  SetCheckState(chkMSTYes, chkMSTNo, AMSTRelated);
+  SetCheckState(chkHNCYes, chkHNCNo, AHNCRelated);
+  SetCheckState(chkCVYes,  chkCVNo,  ACVRelated);
+  SetCheckState(chkSHDYes, chkSHDNo, ASHDRelated);
+   //HDS00015356: GWOT Default, if Related no specified default to "Yes"
+   // -1=Null, 0=No, 1 = Yes
+  if FSCCond.CVAllow then
+  begin
+    if ACVRelated = SCC_NA then
+       chkCVYes.Checked := True;
+  end;
+end;
+
+procedure TfraVisitRelated.SetCheckEnable(CheckYes, CheckNo: TCheckBox;
+  Allow: Boolean);
+begin
+  CheckYes.Enabled := Allow;
+  CheckNo.Enabled := Allow;
+end;
+
+procedure TfraVisitRelated.SetCheckState(CheckYes, CheckNo: TCheckBox; CheckState: Integer);
+begin
+  if CheckYes.Enabled then
+    case CheckState of
+    SCC_NA:  begin
+               CheckYes.Checked := False;
+               CheckNo.Checked := False;
+             end;
+    SCC_NO:  begin
+               CheckYes.Checked := False;
+               CheckNo.Checked := True;
+             end;
+    SCC_YES: begin
+               CheckYes.Checked := True;
+               CheckNo.Checked := False;
+             end;
+    end; {case}
+  chkClick(Self);
+end;
+
+
+initialization
+  SpecifyFormIsNotADialog(TfraVisitRelated);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/rPCE.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/rPCE.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/rPCE.pas	(revision 1676)
@@ -0,0 +1,1507 @@
+unit rPCE;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, uPCE, UBACore, ORClasses;
+
+const
+  LX_ICD = 12;
+  LX_CPT = 13;
+
+  LX_Threshold = 15;
+
+  PCE_IMM = 20;
+  PCE_SK  = 21;
+  PCE_PED = 22;
+  PCE_HF  = 23;
+  PCE_XAM = 24;
+  PCE_TRT = 25;
+
+  SCC_YES =  1;
+  SCC_NO  =  0;
+  SCC_NA  = -1;
+
+var
+  uEncLocation: integer;
+//  uEncDateTime: TFMDateTime;
+
+type
+  TSCConditions = record
+    SCAllow:  Boolean;        // prompt for service connected
+    SCDflt:   Boolean;        // default if prompting service connected
+    AOAllow:  Boolean;        // prompt for agent orange exposure
+    AODflt:   Boolean;        // default if prompting agent orange exposure
+    IRAllow:  Boolean;        // prompt for ionizing radiation exposure
+    IRDflt:   Boolean;        // default if prompting ionizing radiation
+    ECAllow:  Boolean;        // prompt for environmental conditions
+    ECDflt:   Boolean;        // default if prompting environmental cond.
+    MSTAllow: Boolean;        // prompt for military sexual trauma
+    MSTDflt:  Boolean;        // default if prompting military sexual trauma
+    HNCAllow: Boolean;        // prompt for Head or Neck Cancer
+    HNCDflt:  Boolean;        // default if prompting Head or Neck Cancer
+    CVAllow:  Boolean;        // prompt for Combat Veteran Related
+    CVDflt:   Boolean;        // default if prompting Comabt Veteran
+    SHDAllow: Boolean;        // prompt for Shipboard Hazard and Defense
+    SHDDflt:  Boolean;        // default if prompting Shipboard Hazard and Defense
+  end;
+
+  TPCEListCodesProc = procedure(Dest: TStrings; SectionIndex: Integer);
+
+  TAskPCE = (apPrimaryNeeded, apPrimaryOutpatient, apPrimaryAlways,
+             apNeeded, apOutpatient, apAlways, apNever, apDisable);
+
+function GetVisitCat(InitialCat: char; Location: integer; Inpatient: boolean): char;
+
+{assign and read values from fPCEData}
+//function SetRPCEncouterInfo(PCEData: TPCEData): boolean;
+function SetRPCEncLocation(Loc: Integer): boolean;
+//function SetRPCEncDateTime(DT: TFMDateTime): boolean;
+
+function PCERPCEncLocation: integer;
+//function PCERPCEncDateTime: TFMDateTime;
+function GetLocSecondaryVisitCode(Loc: integer): char;
+
+{check for active person class on provider}
+function CheckActivePerson(provider:string;DateTime:TFMDateTime): boolean;
+function ForcePCEEntry(Loc: integer): boolean;
+
+{"Other" form PCE calls}
+procedure LoadcboOther(Dest: TStrings; Location, fOtherApp: Integer);
+
+{ Lexicon Lookup Calls }
+function  LexiconToCode(IEN, LexApp: Integer; ADate: TFMDateTime = 0): string;
+procedure ListLexicon(Dest: TStrings; const x: string; LexApp: Integer; ADate: TFMDateTime = 0);
+function  IsActiveICDCode(ACode: string; ADate: TFMDateTime = 0): boolean;
+function  IsActiveCPTCode(ACode: string; ADate: TFMDateTime = 0): boolean;
+function  IsActiveCode(ACode: string; LexApp: integer; ADate: TFMDateTime = 0): boolean;
+
+{ Encounter Form Elements }
+procedure DeletePCE(const AVisitStr: string);
+function EligbleConditions: TSCConditions;
+
+procedure ListVisitTypeSections(Dest: TStrings);
+procedure ListVisitTypeCodes(Dest: TStrings; SectionIndex: Integer);
+procedure ListVisitTypeByLoc(Dest: TStrings; Location: Integer; ADateTime: TFMDateTime = 0);
+function AutoSelectVisit(Location: integer): boolean;
+function UpdateVisitTypeModifierList(Dest: TStrings; Index: integer): string;
+
+procedure ListDiagnosisSections(Dest: TStrings);
+procedure ListDiagnosisCodes(Dest: TStrings; SectionIndex: Integer);
+
+procedure ListExamsSections(Dest: TStrings);
+procedure ListExamsCodes(Dest: TStrings; SectionIndex: Integer);
+
+procedure ListHealthSections(Dest: TStrings);
+procedure ListHealthCodes(Dest: TStrings; SectionIndex: Integer);
+
+procedure ListImmunizSections(Dest: TStrings);
+procedure ListImmunizCodes(Dest: TStrings; SectionIndex: Integer);
+
+procedure ListPatientSections(Dest: TStrings);
+procedure ListPatientCodes(Dest: TStrings; SectionIndex: Integer);
+
+procedure ListProcedureSections(Dest: TStrings);
+procedure ListProcedureCodes(Dest: TStrings; SectionIndex: Integer);
+function ModifierList(CPTCode: string): string;
+procedure ListCPTModifiers(Dest: TStrings; CPTCodes, NeededModifiers: string);
+function ModifierName(ModIEN: string): string;
+function ModifierCode(ModIEN: string): string;
+function UpdateModifierList(Dest: TStrings; Index: integer): string;
+
+procedure ListSkinSections(Dest: TStrings);
+procedure ListSkinCodes(Dest: TStrings; SectionIndex: Integer);
+
+procedure ListSCDisabilities(Dest: TStrings);
+procedure LoadPCEDataForNote(Dest: TStrings; ANoteIEN: Integer; VStr: string);
+function GetVisitIEN(NoteIEN: Integer): string;
+procedure SavePCEData(PCEList: TStringList; ANoteIEN, ALocation: integer);
+
+function DataHasCPTCodes(AList: TStrings): boolean;
+function GetAskPCE(Loc: integer): TAskPCE;
+function HasVisit(const ANoteIEN, ALocation: integer; const AVisitDate: TFMDateTime): Integer;
+
+procedure LoadImmSeriesItems(Dest: TStrings);
+procedure LoadImmReactionItems(Dest: TStrings);
+procedure LoadSkResultsItems(Dest: TStrings);
+procedure LoadPEDLevelItems(Dest: TStrings);
+procedure LoadHFLevelItems(Dest: TStrings);
+procedure LoadXAMResultsItems(Dest: TStrings);
+procedure LoadHistLocations(Dest: TStrings);
+procedure AddProbsToDiagnoses;
+
+//GAF
+function GAFOK: boolean;
+function MHClinic(const Location: integer): boolean;
+procedure RecentGAFScores(const Limit: integer);
+function SaveGAFScore(const Score: integer; GAFDate: TFMDateTime; Staff: Int64): boolean;
+function GAFURL: string;
+function MHTestsOK: boolean;
+function MHTestAuthorized(Test: string): boolean;
+
+function AnytimeEncounters: boolean;
+function AutoCheckout(Loc: integer): boolean;
+
+{ Encounter }
+//function RequireExposures(ANote: Integer): Boolean;      {RAB}
+function RequireExposures(ANote, ATitle: Integer): Boolean;
+function PromptForWorkload(ANote, ATitle: Integer; VisitCat: Char; StandAlone: boolean): Boolean;
+function DefaultProvider(ALocation: integer; AUser: Int64; ADate: TFMDateTime;
+                                             ANoteIEN: integer): string;
+function IsUserAProvider(AUser: Int64; ADate: TFMDateTime): boolean;
+function IsUserAUSRProvider(AUser: Int64; ADate: TFMDateTime): boolean;
+function IsCancelOrNoShow(ANote: integer): boolean;
+function IsNonCountClinic(ALocation: integer): boolean;
+
+// HNC Flag
+//function HNCOK: boolean;
+
+implementation
+
+uses TRPCB, rCore, uCore, uConst, fEncounterFrame, UBAGlobals, UBAConst;
+
+var
+  uLastLocation:  Integer;
+  uLastDFN:       String;
+  uVTypeLastLoc:  Integer;
+  uVTypeLastDate: double = 0;
+  uDiagnoses:     TStringList;
+  uExams:         TStringList;
+  uHealthFactors: TStringList;
+  uImmunizations: TStringList;
+  uPatientEds:    TStringList;
+  uProcedures:    TStringList;
+  uSkinTests:     TStringList;
+  uVisitTypes:    TStringList;
+  uVTypeForLoc:   TStringList;
+  uProblems:      TStringList;
+  uModifiers:     TORStringList = nil;
+  uGAFOK:         boolean;
+  uGAFOKCalled:   boolean = FALSE;
+  uLastForceLoc:  integer = -1;
+  uLastForce:     boolean;
+  uHasCPT:        TStringList = nil;
+  uGAFURL:        string;
+  uGAFURLChecked: boolean = FALSE;
+  uMHOK:          boolean;
+  uMHOKChecked:   boolean = FALSE;
+  uVCInitialCat:  char = #0;
+  uVCLocation:    integer = -2;
+  uVCInpatient:   boolean = FALSE;
+  uVCResult:      char;
+  uAPUser:        Int64 = -1;
+  uAPLoc:         integer = -2;
+  uAPAsk:         TAskPCE;
+  uAnytimeEnc:    integer = -1;
+  UAutoSelLoc:    integer = -1;
+  UAutoSelVal:    boolean;
+  uLastChkOut:    boolean;
+  uLastChkOutLoc: integer = -2;
+  uLastIsClinicLoc: integer = 0;
+  uLastIsClinic: boolean = FALSE;
+//  uHNCOK:         integer = -1;
+
+function GetVisitCat(InitialCat: char; Location: integer; Inpatient: boolean): char;
+var
+  tmp: string;
+
+begin
+  if(InitialCat <> uVCInitialCat) or (Location <> uVCLocation) or
+    (Inpatient <> uVCInpatient) then
+  begin
+    uVCInitialCat := InitialCat;
+    uVCLocation := Location;
+    uVCInpatient := Inpatient;
+    tmp := sCallV('ORWPCE GETSVC', [InitialCat, Location, BOOLCHAR[Inpatient]]);
+    if(tmp <> '') then
+      uVCResult := tmp[1]
+    else
+      uVCResult := InitialCat;
+  end;
+  Result := uVCResult
+end;
+
+{ Lexicon Lookup Calls }
+
+function LexiconToCode(IEN, LexApp: Integer; ADate: TFMDateTime = 0): string;
+var
+  CodeSys: string;
+begin
+  case LexApp of
+  LX_ICD: CodeSys := 'ICD';
+  LX_CPT: CodeSys := 'CHP';
+  end;
+  Result := sCallV('ORWPCE LEXCODE', [IEN, CodeSys, ADate]);
+end;
+
+procedure ListLexicon(Dest: TStrings; const x: string; LexApp: Integer; ADate: TFMDateTime = 0);
+var
+  CodeSys: string;
+begin
+  case LexApp of
+  LX_ICD: CodeSys := 'ICD';
+  LX_CPT: CodeSys := 'CHP';
+  end;
+  CallV('ORWPCE LEX', [x, CodeSys, ADate]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function  IsActiveICDCode(ACode: string; ADate: TFMDateTime = 0): boolean;
+begin
+  Result := IsActiveCode(ACode, LX_ICD, ADate);
+end;
+
+function  IsActiveCPTCode(ACode: string; ADate: TFMDateTime = 0): boolean;
+begin
+  Result := IsActiveCode(ACode, LX_CPT, ADate);
+end;
+
+function  IsActiveCode(ACode: string; LexApp: integer; ADate: TFMDateTime = 0): boolean;
+var
+  CodeSys: string;
+begin
+  case LexApp of
+  LX_ICD: CodeSys := 'ICD';
+  LX_CPT: CodeSys := 'CHP';
+  end;
+  Result := (sCallV('ORWPCE ACTIVE CODE',[ACode, CodeSys, ADate]) = '1');
+end;
+
+{ Encounter Form Elements ------------------------------------------------------------------ }
+
+procedure DeletePCE(const AVisitStr: string);
+begin
+  sCallV('ORWPCE DELETE', [AVisitStr, Patient.DFN]);
+end;
+
+procedure LoadEncounterForm;
+{ load the major coding lists that are used by the encounter form for a given location }
+var
+  i: integer;
+  uTempList: TStringList;
+  EncDt: TFMDateTime;
+  
+begin
+  uLastLocation := uEncLocation;
+  EncDt := Trunc(uEncPCEData.VisitDateTime);
+
+  //add problems to the top of diagnoses.
+  uTempList := TstringList.Create;
+
+
+  if UBAGlobals.BILLING_AWARE then //BAPHII 1.3.10
+     begin
+        UBACore.BADxList := TStringList.Create;
+     end;
+
+  try
+    uDiagnoses.clear;
+
+    if BILLING_AWARE then
+     begin
+        UBACore.BADxList.Clear; //BAPHII 1.3.10
+     end;
+
+    tCallV(uTempList,     'ORWPCE DIAG',  [uEncLocation, EncDt]);  //BAPHII 1.3.10
+    uDiagnoses.add(utemplist.strings[0]);  //BAPHII 1.3.10
+    AddProbsToDiagnoses;  //BAPHII 1.3.10
+   // BA 25  AddProviderPatientDaysDx(uDxLst, IntToStr(Encounter.Provider), Patient.DFN);
+    for i := 1 to (uTempList.Count-1) do  //BAPHII 1.3.10
+      uDiagnoses.add(uTemplist.strings[i]);  //BAPHII 1.3.10
+
+  finally
+    uTempList.free;
+  end;
+
+  tCallV(uVisitTypes,    'ORWPCE VISIT', [uEncLocation, EncDt]);
+  tCallV(uProcedures,    'ORWPCE PROC',  [uEncLocation, EncDt]);
+  tCallV(uImmunizations, 'ORWPCE IMM',   [uEncLocation]);
+  tCallV(uSkinTests,     'ORWPCE SK',    [uEncLocation]);
+  tCallV(uPatientEds,    'ORWPCE PED',   [uEncLocation]);
+  tCallV(uHealthFactors, 'ORWPCE HF',    [uEncLocation]);
+  tCallV(uExams,         'ORWPCE XAM',   [uEncLocation]);
+
+  if uVisitTypes.Count > 0    then uVisitTypes.Delete(0);             // discard counts
+  if uDiagnoses.Count  > 0    then uDiagnoses.Delete(0);
+  if uProcedures.Count > 0    then uProcedures.Delete(0);
+  if uImmunizations.Count > 0 then uImmunizations.Delete(0);   
+  if uSkinTests.Count > 0     then uSkinTests.Delete(0);       
+  if uPatientEds.Count > 0    then uPatientEds.Delete(0);      
+  if uHealthFactors.Count > 0 then uHealthFactors.Delete(0);   
+  if uExams.Count > 0         then uExams.Delete(0);           
+
+  if (uVisitTypes.Count > 0) and (CharAt(uVisitTypes[0], 1) <> U) then uVisitTypes.Insert(0, U);
+  if (uDiagnoses.Count > 0)  and (CharAt(uDiagnoses[0], 1)  <> U) then uDiagnoses.Insert(0,  U);
+  if (uProcedures.Count > 0) and (CharAt(uProcedures[0], 1) <> U) then uProcedures.Insert(0, U);
+  if (uImmunizations.Count > 0) and (CharAt(uImmunizations[0], 1) <> U) then uImmunizations.Insert(0, U);
+  if (uSkinTests.Count > 0) and (CharAt(uSkinTests[0], 1) <> U) then uSkinTests.Insert(0, U);            
+  if (uPatientEds.Count > 0) and (CharAt(uPatientEds[0], 1) <> U) then uPatientEds.Insert(0, U);         
+  if (uHealthFactors.Count > 0) and (CharAt(uHealthFactors[0], 1) <> U) then uHealthFactors.Insert(0, U);
+  if (uExams.Count > 0) and (CharAt(uExams[0], 1) <> U) then uExams.Insert(0, U);                        
+
+end;
+
+{Visit Types-------------------------------------------------------------------}
+procedure ListVisitTypeSections(Dest: TStrings);
+{ return section names in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uVisitTypes.Count - 1 do if CharAt(uVisitTypes[i], 1) = U then
+  begin
+    x := Piece(uVisitTypes[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uVisitTypes[i], U, 2) + U + x);
+  end;
+end;
+
+procedure ListVisitTypeCodes(Dest: TStrings; SectionIndex: Integer);
+{ return visit types in format: visit type <TAB> amount of time <TAB> CPT code <TAB> CPT code }
+var
+  i: Integer;
+  s: string;
+
+  function InsertTab(x: string): string;
+  { turn the white space between the name and the number of minutes into a single tab }
+  begin
+    if CharAt(x, 20) = ' '
+      then Result := Trim(Copy(x, 1, 20)) + U + Trim(Copy(x, 21, Length(x)))
+      else Result := Trim(x) + U;
+  end;
+
+begin {ListVisitTypeCodes}
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uVisitTypes.Count) and (CharAt(uVisitTypes[i], 1) <> U) do
+  begin
+    s := Pieces(uVisitTypes[i], U, 1, 2) + U + InsertTab(Piece(uVisitTypes[i], U, 2)) + U + Piece(uVisitTypes[i], U, 1) +
+         U + IntToStr(i);
+    Dest.Add(s);
+    Inc(i);
+  end;
+end;
+
+procedure ListVisitTypeByLoc(Dest: TStrings; Location: Integer; ADateTime: TFMDateTime = 0);
+var
+  i: Integer;
+  x, SectionName: string;
+  EncDt: TFMDateTime;
+begin
+  EncDt := Trunc(ADateTime);
+  if (uVTypeLastLoc <> Location) or (uVTypeLastDate <> EncDt) then
+  begin
+    uVTypeForLoc.Clear;
+    if Location = 0 then Exit;
+    SectionName := '';
+    CallV('ORWPCE VISIT', [Location, EncDt]);
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      if CharAt(x, 1) = U
+        then SectionName := Piece(x, U, 2)
+        else uVTypeForLoc.Add(Piece(x, U, 1) + U + SectionName + U + Piece(x, U, 2));
+    end;
+    uVTypeLastLoc := Location;
+    uVTypeLastDate := EncDt;
+  end;
+  FastAssign(uVTypeForLoc, Dest);
+end;
+
+function AutoSelectVisit(Location: integer): boolean;
+begin
+  if UAutoSelLoc <> Location then
+  begin
+    UAutoSelVal := (sCallV('ORWPCE AUTO VISIT TYPE SELECT', [Location]) = '1');
+    UAutoSelLoc := Location;
+  end;
+  Result := UAutoSelVal;
+end;
+
+{Diagnosis---------------------------------------------------------------------}
+procedure ListDiagnosisSections(Dest: TStrings);
+{ return section names in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+ //// if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+ // if (uLastDFN <> patient.DFN) then LoadEncounterForm;// commented out for CIDC needs.
+  LoadEncounterForm;
+  for i := 0 to uDiagnoses.Count - 1 do if CharAt(uDiagnoses[i], 1) = U then
+  begin
+    x := Piece(uDiagnoses[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uDiagnoses[i], U, 2) + U + x);
+  end;
+end;
+
+procedure ListDiagnosisCodes(Dest: TStrings; SectionIndex: Integer);
+{ return diagnoses within section in format:
+    diagnosis <TAB> ICDInteger <TAB> .ICDDecimal <TAB> ICD Code }
+var
+  i: Integer;
+  s,d: string;
+  EncDT: TFMDateTime;
+
+begin
+  EncDT := uEncPCEData.VisitDateTime;
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uDiagnoses.Count) and (CharAt(uDiagnoses[i], 1) <> U) do
+  begin
+    s := Piece(uDiagnoses[i], U, 1);
+    d := Piece(s, '.', 2);
+    s := s + U + Piece(uDiagnoses[i], U, 2) + U + Piece(s, '.', 1) + U;
+    if(d <> '') then
+      SetPiece(s, U, 4, '.' + d )
+    else    // RV - CSV - need to do this so trailing "#" lines up correctly when no decimals
+      SetPiece(s, U, 4, '   ');  
+
+    //filtering out inactive codes.
+    if (Piece(uDiagnoses[i], U, 3) =  '#') then
+    begin
+      SetPiece(s, U, 5, '#');
+      Dest.Add(s);
+    end
+    else if ((Piece(uDiagnoses[i], U, 3) =  '') or
+     ( StrToFloat(Piece(uDiagnoses[i], U, 3)) > EncDT )) then
+    begin
+      Dest.Add(s);
+    end;
+    Inc(i);
+  end;
+end;
+
+procedure AddProbsToDiagnoses;
+var
+  i: integer;                 //loop index
+  EncDT: TFMDateTime;
+begin
+  //get problem list
+  EncDT := Trunc(uEncPCEData.VisitDateTime);
+  uLastDFN := patient.DFN;
+  tCallV(uProblems,      'ORWPCE ACTPROB',[Patient.DFN, EncDT]);
+  if uProblems.count > 0 then
+  begin
+    //add category to udiagnoses
+    uDiagnoses.add(U + DX_PROBLEM_LIST_TXT);
+    for i := 1 to (uProblems.count-1) do //start with 1 because strings[0] is
+                                         //the count of elements.
+    begin
+      //add problems to udiagnosis.
+      if (piece(uproblems.Strings[i],U,3) = '799.9') then continue;            // DON'T INCLUDE 799.9 CODES
+
+      if (Piece(uproblems.Strings[i], U, 11) =  '#') then
+        uDiagnoses.add(piece(uProblems.Strings[i],U,3) + U +                   // PL code inactive
+          piece(uProblems.Strings[i],U,2) + U + '#')
+      else if (Piece(uproblems.Strings[i], U, 10) =  '') then                  // no inactive date for code
+        uDiagnoses.add(piece(uProblems.Strings[i],U,3) + U +
+          piece(uProblems.Strings[i],U,2))
+      else if (Trunc(StrToFloat(Piece(uProblems.Strings[i], U, 10))) > EncDT) then     // code active as of EncDt
+        uDiagnoses.add(piece(uProblems.Strings[i],U,3) + U +
+          piece(uProblems.Strings[i],U,2))
+      else
+        uDiagnoses.add(piece(uProblems.Strings[i],U,3) + U +                   // PL code inactive
+          piece(uProblems.Strings[i],U,2) + U + '#');
+    end;
+
+    //1.3.10
+    if BILLING_AWARE then
+     begin
+        //  add New Section and dx codes to Encounter Diagnosis Section and Code List.
+        //  Diagnoses  ->  Provider/Patient/24 hrs
+        uDiagnoses.add(UBAConst.ENCOUNTER_TODAYS_DX); //BAPHII 1.3.10
+        //BADxList := AddProviderPatientDaysDx(UBACore.uDxLst, IntToStr(Encounter.Provider), Patient.DFN); //BAPHII 1.3.10
+        rpcGetProviderPatientDaysDx(IntToStr(Encounter.Provider), Patient.DFN); //BAPHII 1.3.10
+
+        for i := 0 to (UBACore.uDxLst.Count-1) do //BAPHII 1.3.10
+           uDiagnoses.add(UBACore.uDxLst[i]); //BAPHII 1.3.10
+        //  Code added after presentation.....
+        //  Add Personal Diagnoses Section and Codes to Encounter Diagnosis Section and Code List.
+        UBACore.uDxLst.Clear;
+        uDiagnoses.Add(UBAConst.ENCOUNTER_PERSONAL_DX);
+        UBACore.uDxLst := rpcGetPersonalDxList(User.DUZ);
+        for i := 0 to (UBACore.uDxLst.Count -1) do
+        begin
+            uDiagnoses.Add(UBACore.uDxLst.Strings[i]);
+        end;
+     end;
+
+  end;
+end;
+{Immunizations-----------------------------------------------------------------}
+procedure LoadImmReactionItems(Dest: TStrings);
+begin
+  tCallV(Dest,'ORWPCE GET SET OF CODES',['9000010.11','.06','1']);
+end;
+
+procedure LoadImmSeriesItems(Dest: TStrings);  
+{loads items into combo box on Immunixation screen}
+begin
+  tCallV(Dest,'ORWPCE GET SET OF CODES',['9000010.11','.04','1']);
+end;
+
+procedure ListImmunizSections(Dest: TStrings);
+{ return section names in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uImmunizations.Count - 1 do if CharAt(uImmunizations[i], 1) = U then
+  begin
+    x := Piece(uImmunizations[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uImmunizations[i], U, 2) + U + x);
+  end;
+end;
+
+procedure ListImmunizCodes(Dest: TStrings; SectionIndex: Integer);
+{ return procedures within section in format: procedure <TAB> CPT code <TAB><TAB> CPT code}
+var
+  i: Integer;
+begin
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uImmunizations.Count) and (CharAt(uImmunizations[i], 1) <> U) do
+  begin
+    Dest.Add(Pieces(uImmunizations[i], U, 1, 2));
+    Inc(i);
+  end;
+end;
+
+
+{Procedures--------------------------------------------------------------------}
+procedure ListProcedureSections(Dest: TStrings);
+{ return section names in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uProcedures.Count - 1 do if CharAt(uProcedures[i], 1) = U then
+  begin
+    x := Piece(uProcedures[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uProcedures[i], U, 2) + U + x);
+  end;
+end;
+
+procedure ListProcedureCodes(Dest: TStrings; SectionIndex: Integer);
+{ return procedures within section in format: procedure <TAB> CPT code <TAB><TAB> CPT code}
+//Piece 12 are CPT Modifiers, Piece 13 is a flag indicating conversion of Piece 12 from
+//modifier code to modifier IEN (updated in UpdateModifierList routine)
+var
+  i: Integer;
+begin
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uProcedures.Count) and (CharAt(uProcedures[i], 1) <> U) do
+  begin
+    Dest.Add(Pieces(uProcedures[i], U, 1, 2) + U + Piece(uProcedures[i], U, 1) + U +
+             Piece(uProcedures[i], U, 12) + U + Piece(uProcedures[i], U, 13) + U +
+             IntToStr(i));
+    Inc(i);
+  end;
+end;
+
+function MixedCaseModifier(const inStr: string): string;
+begin
+  Result := inStr;
+  SetPiece(Result, U, 2, MixedCase(Trim(Piece(Result, U, 2))));
+end;
+
+function ModifierIdx(ModIEN: string): integer;
+var
+  EncDt: TFMDateTime;
+begin
+  Result := uModifiers.IndexOfPiece(ModIEN);
+  if(Result < 0) then
+    begin
+      if Assigned(uEncPCEData) then         // may not exist yet on display of note and PCE data
+        EncDT := Trunc(uEncPCEData.VisitDateTime)
+      else if Encounter.DateTime > 0 then   // really need note date/time next, but can't get to it
+        EncDT := Trunc(Encounter.DateTime)
+      else
+        EncDT := FMToday;
+      Result := uModifiers.Add(MixedCaseModifier(sCallV('ORWPCE GETMOD', [ModIEN, EncDt])));
+    end;
+end;
+
+function ModifierList(CPTCode: string): string;
+// uModifiers list contains <@>CPTCode;ModCount;^Mod1Index^Mod2Index^...^ModNIndex
+//    or                    MODIEN^MODDescription^ModCode
+
+const
+  CPTCodeHeader = '<@>';
+
+var
+  i, idx: integer;
+  s, ModIEN: string;
+  EncDt: TFMDateTime;
+begin
+  EncDT := Trunc(uEncPCEData.VisitDateTime);
+  idx := uModifiers.IndexOfPiece(CPTCodeHeader + CPTCode, ';', 1);
+  if(idx < 0) then
+  begin
+    CallV('ORWPCE CPTMODS', [CPTCode, EncDt]);
+    s := CPTCodeHeader + CPTCode + ';' + IntToStr(RPCBrokerV.Results.Count) + ';' + U;
+    for i := 0 to RPCBrokerV.Results.Count - 1 do
+    begin
+      ModIEN := piece(RPCBrokerV.Results[i], U, 1);
+      idx := uModifiers.IndexOfPiece(ModIEN);
+      if(idx < 0) then
+        idx := uModifiers.Add(MixedCaseModifier(RPCBrokerV.Results[i]));
+      s := s + IntToStr(idx) + U;
+    end;
+    idx := uModifiers.Add(s);
+  end;
+  Result := uModifiers[idx];
+end;
+
+procedure ListCPTModifiers(Dest: TStrings; CPTCodes, NeededModifiers: string);
+//CPTCodes expected in the format of code^code^code
+//NeededModifiers in format of ModIEN1;ModIEN2;ModIEN3
+var
+  TmpSL: TStringList;
+  i, j, idx, cnt, found: integer;
+  s, Code: string;
+
+begin
+  if(not assigned(uModifiers)) then uModifiers := TORStringList.Create;
+  if(copy(CPTCodes, length(CPTCodes), 1) <> U) then
+    CPTCodes := CPTCodes + U;
+  if(copy(NeededModifiers, length(NeededModifiers), 1) <> ';') then
+    NeededModifiers := NeededModifiers + ';';
+
+  TmpSL := TStringList.Create;
+  try
+    repeat
+      i := pos(U, CPTCodes);
+      if(i > 0) then
+      begin
+        Code := copy(CPTCodes, 1, i-1);
+        delete(CPTCodes,1,i);
+        if(Code <> '') then
+          TmpSL.Add(ModifierList(Code));
+        i := pos(U, CPTCodes);
+      end;
+    until(i = 0);
+    if(TmpSL.Count = 0) then
+      s := ';0;'
+    else
+    if(TmpSL.Count = 1) then
+      s := TmpSL[0]
+    else
+    begin
+      s := '';
+      found := 0;
+      cnt := StrToIntDef(piece(TmpSL[0], ';', 2), 0);
+      for i := 1 to cnt do
+      begin
+        Code := U + Piece(TmpSL[0], U, i+1);
+        for j := 1 to TmpSL.Count-1 do
+        begin
+          if(pos(Code + U, TmpSL[j]) = 0) then
+          begin
+            Code := '';
+            break;
+          end;
+        end;
+        if(Code <> '') then
+        begin
+          s := s + Code;
+          inc(found);
+        end;
+      end;
+      s := s + U;
+      SetPiece(s , U, 1, ';' + IntToStr(Found) + ';');
+    end;
+  finally
+    TmpSL.Free;
+  end;
+
+  Dest.Clear;
+  cnt := StrToIntDef(piece(s, ';', 2), 0);
+  if(NeededModifiers <> '') then
+  begin
+    found := cnt;
+    repeat
+      i := pos(';',NeededModifiers);
+      if(i > 0) then
+      begin
+        idx := StrToIntDef(copy(NeededModifiers,1,i-1),0);
+        if(idx > 0) then
+        begin
+          Code := IntToStr(ModifierIdx(IntToStr(idx))) + U;
+          if(pos(U+Code, s) = 0) then
+          begin
+            s := s + Code;
+            inc(cnt);
+          end;
+        end;
+        delete(NeededModifiers,1,i);
+      end;
+    until(i = 0);
+    if(found <> cnt) then
+      SetPiece(s , ';', 2, IntToStr(cnt));
+  end;
+  for i := 1 to cnt do
+  begin
+    idx := StrToIntDef(piece(s, U, i + 1), -1);
+    if(idx >= 0) then
+      Dest.Add(uModifiers[idx]);
+  end;
+end;
+
+function ModifierName(ModIEN: string): string;
+begin
+  if(not assigned(uModifiers)) then uModifiers := TORStringList.Create;
+  Result := piece(uModifiers[ModifierIdx(ModIEN)], U, 2);
+end;
+
+function ModifierCode(ModIEN: string): string;
+begin
+  if(not assigned(uModifiers)) then uModifiers := TORStringList.Create;
+  Result := piece(uModifiers[ModifierIdx(ModIEN)], U, 3);
+end;
+
+function UpdateModifierList(Dest: TStrings; Index: integer): string;
+var
+  i, idx, LastIdx: integer;
+  Tmp, OKMods, Code: string;
+  OK: boolean;
+
+begin
+  if(Piece(Dest[Index], U, 5) = '1') then
+    Result := Piece(Dest[Index],U,4)
+  else
+  begin
+    Tmp := Piece(Dest[Index], U, 4);
+    Result := '';
+    OKMods := ModifierList(Piece(Dest[Index], U, 1))+U;
+    i := 1;
+    repeat
+      Code := Piece(Tmp,';',i);
+      if(Code <> '') then
+      begin
+        LastIdx := -1;
+        OK := FALSE;
+        repeat
+          idx := uModifiers.IndexOfPiece(Code, U, 3, LastIdx);
+          if(idx > 0) then
+          begin
+            if(pos(U + IntToStr(idx) + U, OKMods)>0) then
+            begin
+              Result := Result + piece(uModifiers[idx],U,1) + ';';
+              OK := TRUE;
+            end
+            else
+              LastIdx := Idx;
+          end;
+        until(idx < 0) or OK;
+        inc(i);
+      end
+    until(Code = '');
+    Tmp := Dest[Index];
+    SetPiece(Tmp,U,4,Result);
+    SetPiece(Tmp,U,5,'1');
+    Dest[Index] := Tmp;
+    idx := StrToIntDef(piece(Tmp,U,6),-1);
+    if(idx >= 0) then
+    begin
+      Tmp := uProcedures[idx];
+      SetPiece(Tmp,U,12,Result);
+      SetPiece(Tmp,U,13,'1');
+      uProcedures[idx] := Tmp;
+    end;
+  end;
+end;
+
+function UpdateVisitTypeModifierList(Dest: TStrings; Index: integer): string;
+var
+  i, idx, LastIdx: integer;
+  Tmp, OKMods, Code: string;
+  OK: boolean;
+
+begin
+  if(Piece(Dest[Index], U, 7) = '1') then
+    Result := Piece(Dest[Index],U,6)
+  else
+  begin
+    Tmp := Piece(Dest[Index], U, 6);
+    Result := '';
+    OKMods := ModifierList(Piece(Dest[Index], U, 1))+U;
+    i := 1;
+    repeat
+      Code := Piece(Tmp,';',i);
+      if(Code <> '') then
+      begin
+        LastIdx := -1;
+        OK := FALSE;
+        repeat
+          idx := uModifiers.IndexOfPiece(Code, U, 3, LastIdx);
+          if(idx > 0) then
+          begin
+            if(pos(U + IntToStr(idx) + U, OKMods)>0) then
+            begin
+              Result := Result + piece(uModifiers[idx],U,1) + ';';
+              OK := TRUE;
+            end
+            else
+              LastIdx := Idx;
+          end;
+        until(idx < 0) or OK;
+        inc(i);
+      end
+    until(Code = '');
+    Tmp := Dest[Index];
+    SetPiece(Tmp,U,6,Result);
+    SetPiece(Tmp,U,7,'1');
+    Dest[Index] := Tmp;
+    idx := StrToIntDef(piece(Tmp,U,8),-1);
+    if(idx >= 0) then
+    begin
+      Tmp := uProcedures[idx];
+      SetPiece(Tmp,U,12,Result);
+      SetPiece(Tmp,U,13,'1');
+      uProcedures[idx] := Tmp;
+    end;
+  end;
+end;
+
+
+{SkinTests---------------------------------------------------------------------}
+procedure LoadSkResultsItems(Dest: TStrings);  
+begin
+  tCallV(Dest,'ORWPCE GET SET OF CODES',['9000010.12','.04','1']);
+end;
+
+procedure ListSkinSections(Dest: TStrings);                    
+{ return section names in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uSkinTests.Count - 1 do if CharAt(uSkinTests[i], 1) = U then
+  begin
+    x := Piece(uSkinTests[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uSkinTests[i], U, 2) + U + x);
+  end;
+end;
+
+
+procedure ListSkinCodes(Dest: TStrings; SectionIndex: Integer);
+{ return procedures within section in format: procedure <TAB> CPT code <TAB><TAB> CPT code}
+var
+  i: Integer;
+begin
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uSkinTests.Count) and (CharAt(uSkinTests[i], 1) <> U) do
+  begin
+    Dest.Add(Pieces(uSkinTests[i], U, 1, 2));
+    Inc(i);
+  end;
+end;
+
+
+{Patient Education-------------------------------------------------------------}
+procedure LoadPEDLevelItems(Dest: TStrings);  
+begin
+  tCallV(Dest,'ORWPCE GET SET OF CODES',['9000010.16','.06','1']);
+end;
+
+procedure ListPatientSections(Dest: TStrings);                    
+{ return Sections in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uPatientEds.Count - 1 do if CharAt(uPatientEds[i], 1) = U then
+  begin
+    x := Piece(uPatientEds[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uPatientEds[i], U, 2) + U + x);
+  end;
+end;
+
+
+procedure ListPatientCodes(Dest: TStrings; SectionIndex: Integer);
+{ return PatientEds within section in format: procedure <TAB> CPT code <TAB><TAB> CPT code}
+var
+  i: Integer;
+begin
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uPatientEds.Count) and (CharAt(uPatientEds[i], 1) <> U) do
+  begin
+    Dest.Add(Pieces(uPatientEds[i], U, 1, 2));
+    Inc(i);
+  end;
+end;
+
+
+
+{HealthFactors-------------------------------------------------------------}
+procedure LoadHFLevelItems(Dest: TStrings);  
+begin
+  tCallV(Dest,'ORWPCE GET SET OF CODES',['9000010.23','.04','1']);
+end;
+
+procedure ListHealthSections(Dest: TStrings);                    
+{ return Sections in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uHealthFactors.Count - 1 do if CharAt(uHealthFactors[i], 1) = U then
+  begin
+    x := Piece(uHealthFactors[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uHealthFactors[i], U, 2) + U + x);
+  end;
+end;
+
+
+procedure ListHealthCodes(Dest: TStrings; SectionIndex: Integer);
+{ return PatientEds within section in format: procedure <TAB> CPT code <TAB><TAB> CPT code}
+var
+  i: Integer;
+begin
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uHealthFactors.Count) and (CharAt(uHealthFactors[i], 1) <> U) do
+  begin
+    Dest.Add(Pieces(uHealthFactors[i], U, 1, 2));
+    Inc(i);
+  end;
+end;
+
+
+
+{Exams-------------------------------------------------------------------------}
+procedure LoadXAMResultsItems(Dest: TStrings);  
+begin
+  tCallV(Dest,'ORWPCE GET SET OF CODES',['9000010.13','.04','1']);
+end;
+
+procedure LoadHistLocations(Dest: TStrings);
+var
+  i, j, tlen: integer;
+  tmp: string;
+
+begin
+  tCallV(Dest,'ORQQPX GET HIST LOCATIONS',[]);
+  for i := 0 to (Dest.Count - 1) do
+  begin
+    tmp := MixedCase(dest[i]);
+    j := pos(', ',tmp);
+    tlen := length(tmp);
+    if(j > 0) and (j < (tlen - 2)) and (pos(tmp[j+2],UpperCaseLetters) > 0) and
+      (pos(tmp[j+3],LowerCaseLetters)>0) and ((j = (tlen-3)) or (pos(tmp[j+4],LowerCaseLetters)=0)) then
+      tmp[j+3] := UpCase(tmp[j+3]);
+    if(tlen > 1) then
+    begin
+      if(pos(tmp[tlen],Digits) > 0) and (pos(tmp[tlen-1],Digits)=0) then
+        insert(' ',tmp, tlen);
+    end;
+    dest[i] := tmp;
+  end;
+end;
+
+procedure ListExamsSections(Dest: TStrings);                    
+{ return Sections in format: ListIndex^SectionName (sections begin with '^') }
+var
+  i: Integer;
+  x: string;
+begin
+  if (uLastLocation <> uEncLocation) then LoadEncounterForm;
+  for i := 0 to uExams.Count - 1 do if CharAt(uExams[i], 1) = U then
+  begin
+    x := Piece(uExams[i], U, 2);
+    if Length(x) = 0 then x := '<No Section Name>';
+    Dest.Add(IntToStr(i) + U + Piece(uExams[i], U, 2) + U + x);
+  end;
+end;
+
+
+procedure ListExamsCodes(Dest: TStrings; SectionIndex: Integer);
+{ return PatientEds within section in format: procedure <TAB> CPT code <TAB><TAB> CPT code}
+var
+  i: Integer;
+begin
+  Dest.Clear;
+  i := SectionIndex + 1;           // first line after the section name
+  while (i < uExams.Count) and (CharAt(uExams[i], 1) <> U) do
+  begin
+    Dest.Add(Pieces(uExams[i], U, 1, 2));
+    Inc(i);
+  end;
+end;
+
+
+
+
+
+{------------------------------------------------------------------------------}
+function EligbleConditions: TSCConditions;
+{ return a record listing the conditions for which a patient is eligible }
+var
+  x: string;
+begin
+  x := sCallV('ORWPCE SCSEL', [Patient.DFN, Encounter.DateTime, uEncLocation]);
+  with Result do
+  begin
+    SCAllow  := Piece(Piece(x, ';', 1), U, 1) = '1';
+    SCDflt   := Piece(Piece(x, ';', 1), U, 2) = '1';
+    AOAllow  := Piece(Piece(x, ';', 2), U, 1) = '1';
+    AODflt   := Piece(Piece(x, ';', 2), U, 2) = '1';
+    IRAllow  := Piece(Piece(x, ';', 3), U, 1) = '1';
+    IRDflt   := Piece(Piece(x, ';', 3), U, 2) = '1';
+    ECAllow  := Piece(Piece(x, ';', 4), U, 1) = '1';
+    ECDflt   := Piece(Piece(x, ';', 4), U, 2) = '1';
+    MSTAllow := Piece(Piece(x, ';', 5), U, 1) = '1';
+    MSTDflt  := Piece(Piece(x, ';', 5), U, 2) = '1';
+    HNCAllow := Piece(Piece(x, ';', 6), U, 1) = '1';
+    HNCDflt  := Piece(Piece(x, ';', 6), U, 2) = '1';
+    CVAllow  := Piece(Piece(x, ';', 7), U, 1) = '1';
+    CVDflt   := Piece(Piece(x, ';', 7), U, 2) = '1';
+    SHDAllow := Piece(Piece(x, ';', 8), U, 1) = '1';
+    SHDDflt  := Piece(Piece(x, ';', 8), U, 2) = '1';
+  end;
+end;
+
+procedure ListSCDisabilities(Dest: TStrings);
+{ return text listing a patient's rated disabilities and % service connected }
+begin
+  CallV('ORWPCE SCDIS', [Patient.DFN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadPCEDataForNote(Dest: TStrings; ANoteIEN: Integer; VStr: string);
+begin
+  if(ANoteIEN < 1) then
+    CallV('ORWPCE PCE4NOTE', [ANoteIEN, Patient.DFN, VStr])
+  else
+    CallV('ORWPCE PCE4NOTE', [ANoteIEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function GetVisitIEN(NoteIEN: Integer): string;
+begin
+  if(NoteIEN < 1) then
+    CallV('ORWPCE GET VISIT', [NoteIEN, Patient.DFN, Encounter.VisitStr])
+  else
+    CallV('ORWPCE GET VISIT', [NoteIEN]);
+  if(RPCBrokerV.Results.Count > 0) then
+    Result := RPCBrokerV.Results[0]
+  else
+    Result := '0';
+end;
+
+procedure SavePCEData(PCEList: TStringList; ANoteIEN, ALocation: integer);
+begin
+  CallV('ORWPCE SAVE', [PCEList, ANoteIEN, ALocation]);
+end;
+
+{-----------------------------------------------------------------------------}
+
+function DataHasCPTCodes(AList: TStrings): boolean;
+var
+  i: integer;
+  vl: string;
+
+begin
+  if(not assigned(uHasCPT)) then
+    uHasCPT := TStringList.Create;
+  Result := FALSE;
+  i := 0;
+  while(i < AList.Count) do
+  begin
+    vl := uHasCPT.Values[AList[i]];
+    if(vl = '1') then
+    begin
+      Result := TRUE;
+      exit;
+    end
+    else
+    if(vl = '0') then
+      AList.Delete(i)
+    else
+      inc(i);
+  end;
+  if(AList.Count > 0) then
+  begin
+    with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWPCE HASCPT';
+      Param[0].PType := list;
+      with Param[0] do
+      begin
+        for i := 0 to AList.Count-1 do
+          Mult[inttostr(i+1)] := AList[i];
+      end;
+      CallBroker;
+      for i := 0 to RPCBrokerV.Results.Count-1 do
+      begin
+        if(Piece(RPCBrokerV.Results[i],'=',2) = '1') then
+        begin
+          Result := TRUE;
+          break;
+        end;
+      end;
+      FastAddStrings(RPCBrokerV.Results, uHasCPT);
+    end;
+  end;
+end;
+
+function GetAskPCE(Loc: integer): TAskPCE;
+begin
+  if(uAPUser <> User.DUZ) or (uAPLoc <> Loc) then
+  begin
+    uAPUser := User.DUZ;
+    uAPLoc := Loc;
+    uAPAsk := TAskPCE(StrToIntDef(sCallV('ORWPCE ASKPCE', [User.DUZ, Loc]), 0));
+  end;
+  Result := uAPAsk;
+end;
+
+function HasVisit(const ANoteIEN, ALocation: integer; const AVisitDate: TFMDateTime): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWPCE HASVISIT', [ANoteIEN, Patient.DFN, ALocation, AVisitDate]), -1);
+end;
+
+{-----------------------------------------------------------------------------}
+function CheckActivePerson(provider:String;DateTime:TFMDateTime): boolean;
+var
+  RetVal: String;
+begin
+  Callv('ORWPCE ACTIVE PROV',[provider,FloatToStr(DateTime)]);
+  retval := RPCBrokerV.Results[0];
+  if StrToInt(RetVal) = 1 then result := true
+  else result := false;
+end;
+
+function ForcePCEEntry(Loc: integer): boolean;
+begin
+  if(Loc <> uLastForceLoc) then
+  begin
+    uLastForce := (sCallV('ORWPCE FORCE', [User.DUZ, Loc]) = '1');
+    uLastForceLoc := Loc;
+  end;
+  Result := uLastForce;
+end;
+
+procedure LoadcboOther(Dest: TStrings; Location, fOtherApp: Integer);
+{loads items into combo box on Immunization screen}
+var
+  IEN, RPC: string;
+  TmpSL: TORStringList;
+  i, j, idx, typ: integer;
+
+begin
+  TmpSL := TORStringList.Create;
+  try
+    Idx := 0;
+    case fOtherApp of
+      PCE_IMM: begin typ := 1; RPC := 'ORWPCE GET IMMUNIZATION TYPE';           end;
+      PCE_SK:  begin typ := 2; RPC := 'ORWPCE GET SKIN TEST TYPE';              end;
+      PCE_PED: begin typ := 3; RPC := 'ORWPCE GET EDUCATION TOPICS';            end;
+      PCE_HF:  begin typ := 4; RPC := 'ORWPCE GET HEALTH FACTORS TY'; Idx := 1; end;
+      PCE_XAM: begin typ := 5; RPC := 'ORWPCE GET EXAM TYPE';                   end;
+      else     begin typ := 0; RPC := '';                                       end;
+    end;
+    if typ > 0 then
+    begin
+      if idx = 0 then
+      begin
+        if (typ = 1) or (typ = 2) then
+          tCallV(TmpSL,RPC,[uEncPCEData.VisitDateTime])
+        else
+          tCallV(TmpSL,RPC,[nil]);
+      end
+      else
+        tCallV(TmpSL,RPC,[idx]);
+      CallV('ORWPCE GET EXCLUDED', [Location, Typ]);
+      for i := 0 to RPCBrokerV.Results.Count-1 do
+      begin
+        IEN := piece(RPCBrokerV.Results[i],U,2);
+        idx := TmpSL.IndexOfPiece(IEN);
+        if idx >= 0 then
+        begin
+          TmpSL.Delete(idx);
+          if fOtherApp = PCE_HF then
+          begin
+            j := 0;
+            while (j < TmpSL.Count) do
+            begin
+              if IEN = Piece(TmpSL[J],U,4) then
+                TmpSL.Delete(j)
+              else
+                inc(j);
+            end;
+          end;
+        end;
+      end;
+    end;
+    FastAssign(TmpSL, Dest);
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+{
+function SetRPCEncouterInfo(PCEData: TPCEData): boolean;
+begin
+  if (SetRPCEncLocation(PCEData.location) = False) or (SetRPCEncDateTime(PCEData.DateTime) = False) then
+    result := False
+  else result := True;
+end;
+}
+
+function SetRPCEncLocation(Loc: Integer): boolean;
+begin
+  uEncLocation := Loc;
+  Result := (uEncLocation <> 0);
+end;
+
+{
+function SetRPCEncDateTime(DT: TFMDateTime): boolean;
+begin
+  uEncDateTime := 0.0;
+  result := False;
+  uEncDateTime := DT;
+  if uEncDateTime > 0.0 then result := true;
+end;
+}
+
+function PCERPCEncLocation: integer;
+begin
+  result := uEncLocation;
+end;
+
+{
+function PCERPCEncDateTime: TFMDateTime;
+begin
+  result := uEncDateTime;
+end;
+}
+
+function GetLocSecondaryVisitCode(Loc: integer): char;
+begin
+  if (Loc <> uLastIsClinicLoc) then
+  begin
+    uLastIsClinicLoc := Loc;
+    uLastIsClinic := (sCallV('ORWPCE ISCLINIC', [Loc]) = '1');
+  end;
+  if uLastIsClinic then
+    Result := 'I'
+  else
+    Result := 'D';
+end;
+
+function GAFOK: boolean;
+begin
+  if(not uGAFOKCalled) then
+  begin
+    uGAFOK := (sCallV('ORWPCE GAFOK', []) = '1');
+    uGAFOKCalled := TRUE;
+  end;
+  Result := uGAFOK;
+end;
+
+function MHClinic(const Location: integer): boolean;
+begin
+  if GAFOK then
+    Result := (sCallV('ORWPCE MHCLINIC', [Location]) = '1')
+  else
+    Result := FALSE;
+end;
+
+procedure RecentGAFScores(const Limit: integer);
+begin
+  if(GAFOK) then
+  begin
+    with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWPCE LOADGAF';
+      Param[0].PType := list;
+      with Param[0] do
+      begin
+        Mult['"DFN"'] := Patient.DFN;
+        Mult['"LIMIT"'] := IntToStr(Limit);
+      end;
+      CallBroker;
+    end;
+  end;
+end;
+
+function SaveGAFScore(const Score: integer; GAFDate: TFMDateTime; Staff: Int64): boolean;
+begin
+  Result := FALSE;
+  if(GAFOK) then
+  begin
+    with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWPCE SAVEGAF';
+      Param[0].PType := list;
+      with Param[0] do
+      begin
+        Mult['"DFN"'] := Patient.DFN;
+        Mult['"GAF"'] := IntToStr(Score);
+        Mult['"DATE"'] := FloatToStr(GAFDate);
+        Mult['"STAFF"'] := IntToStr(Staff);
+      end;
+      CallBroker;
+    end;
+    if(RPCBrokerV.Results.Count > 0) and
+      (RPCBrokerV.Results[0] = '1') then
+      Result := TRUE;
+  end;
+end;
+
+function GAFURL: string;
+begin
+  if(not uGAFURLChecked) then
+  begin
+    uGAFURL := sCallV('ORWPCE GAFURL', []);
+    uGAFURLChecked  := TRUE;
+  end;
+  Result := uGAFURL;
+end;
+
+function MHTestsOK: boolean;
+begin
+  if(not uMHOKChecked) then
+  begin
+    uMHOK := (sCallV('ORWPCE MHTESTOK', []) = '1');
+    uMHOKChecked := TRUE;
+  end;
+  Result := uMHOK;
+end;
+
+function MHTestAuthorized(Test: string): boolean;
+begin
+  Result := (sCallV('ORWPCE MH TEST AUTHORIZED', [Test, User.DUZ]) = '1');
+end;
+
+function AnytimeEncounters: boolean;
+begin
+  if uAnytimeEnc < 0 then
+    uAnytimeEnc := ord(sCallV('ORWPCE ANYTIME', []) = '1');
+  Result := BOOLEAN(uAnytimeEnc);
+end;
+
+function AutoCheckout(Loc: integer): boolean;
+begin
+  if(uLastChkOutLoc <> Loc) then
+  begin
+    uLastChkOutLoc := Loc;
+    uLastChkOut := (sCallV('ORWPCE ALWAYS CHECKOUT', [Loc]) = '1');
+  end;
+  Result := uLastChkOut;
+end;
+
+{ encounter capture functions ------------------------------------------------ }
+
+function RequireExposures(ANote, ATitle: Integer): Boolean;   {*RAB 3/22/99*}
+{ returns true if a progress note should require the expossure questions to be answered }
+begin
+  if ANote <= 0
+    then Result := Piece(sCallV('TIU GET DOCUMENT PARAMETERS', ['0', ATitle]), U, 15) = '1'
+    else Result := Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [ANote]), U, 15) = '1';
+end;
+
+function PromptForWorkload(ANote, ATitle: Integer; VisitCat: Char; StandAlone: boolean): Boolean;
+{ returns true if a progress note should prompt for capture of encounter }
+var
+  X: string;
+
+begin
+  Result := FALSE;
+  if (VisitCat <> 'A') and (VisitCat <> 'I') and (VisitCat <> 'T') then exit;
+  if ANote <= 0 then
+    X := sCallV('TIU GET DOCUMENT PARAMETERS', ['0', ATitle])
+  else
+    X := sCallV('TIU GET DOCUMENT PARAMETERS', [ANote]);
+  if(Piece(X, U, 14) = '1') then exit; // Suppress DX/CPT  param is TRUE - don't ask
+  if StandAlone then
+    Result := TRUE
+  else
+    Result := (Piece(X, U, 16) = '1'); // Check  Ask DX/CPT  param
+end;
+
+function IsCancelOrNoShow(ANote: integer): boolean;
+begin
+  Result := (sCallV('ORWPCE CXNOSHOW', [ANote]) = '0');
+end;
+
+function IsNonCountClinic(ALocation: integer): boolean;
+begin
+  Result := (sCallV('ORWPCE1 NONCOUNT', [ALocation]) = '1');
+end;
+
+function DefaultProvider(ALocation: integer; AUser: Int64; ADate: TFMDateTime;
+                                             ANoteIEN: integer): string;
+begin
+  Result := sCallV('TIU GET DEFAULT PROVIDER', [ALocation, AUser, ADate, ANoteIEN]);
+end;
+
+function IsUserAProvider(AUser: Int64; ADate: TFMDateTime): boolean;
+begin
+  Result := (sCallV('TIU IS USER A PROVIDER?', [AUser, ADate]) = '1');
+end;
+
+function IsUserAUSRProvider(AUser: Int64; ADate: TFMDateTime): boolean;
+begin
+  Result := (sCallV('TIU IS USER A USR PROVIDER', [AUser, ADate]) = '1');
+end;
+
+//function HNCOK: boolean;
+//begin
+//  if uHNCOK < 0 then
+//    uHNCOK := ord(sCallV('ORWPCE HNCOK', []) = '1');
+//  Result := boolean(uHNCOK);
+//end;
+
+initialization
+  uLastLocation := 0;
+  uVTypeLastLoc := 0;
+  uVTypeLastDate := 0;
+  uDiagnoses     := TStringList.Create;
+  uExams         := TStringList.Create;
+  uHealthFactors := TStringList.Create;
+  uImmunizations := TStringList.Create;
+  uPatientEds    := TStringList.Create;
+  uProcedures    := TStringList.Create;
+  uSkinTests     := TStringList.Create;
+  uVisitTypes    := TStringList.Create;
+  uVTypeForLoc   := TStringList.Create;
+  uProblems      := TStringList.Create;
+
+finalization
+  uDiagnoses.Free;
+  uExams.Free;
+  uHealthFactors.Free;
+  uImmunizations.Free;
+  uPatientEds.Free;
+  uProcedures.Free;
+  uSkinTests.free;
+  uVisitTypes.Free;
+  uVTypeForLoc.Free;
+  uProblems.Free;
+  KillObj(@uModifiers);
+  KillObj(@uHasCPT);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/uPCE.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/uPCE.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Encounter/uPCE.pas	(revision 1676)
@@ -0,0 +1,3540 @@
+unit uPCE;
+                                                                       
+interface
+
+uses Windows, SysUtils, Classes, ORFn, uConst, ORCtrls, ORClasses,UBAGlobals;
+
+type
+  TPCEProviderRec = record
+    IEN: int64;
+    Name: string;
+    Primary: boolean;
+    Delete: boolean;
+  end;
+
+  TPCEProviderList = class(TORStringList)
+  private
+    FNoUpdate: boolean;
+    FOnPrimaryChanged: TNotifyEvent;
+    FPendingDefault: string;
+    FPendingUser: string;
+    FPCEProviderIEN: Int64;
+    FPCEProviderName: string;
+    function GetProviderData(Index: integer): TPCEProviderRec;
+    procedure SetProviderData(Index: integer; const Value: TPCEProviderRec);
+    function GetPrimaryIdx: integer;
+    procedure SetPrimaryIdx(const Value: integer);
+    procedure SetPrimary(index: integer; Primary: boolean);
+  public
+    function Add(const S: string): Integer; override;
+    function AddProvider(AIEN, AName: string; APrimary: boolean): integer;
+    procedure Assign(Source: TPersistent); override;
+    function PCEProvider: Int64;
+    function PCEProviderName: string;
+    function IndexOfProvider(AIEN: string): integer;
+    procedure Merge(AList: TPCEProviderList);
+    procedure Clear; override;
+    procedure Delete(Index: Integer); override;
+    function PrimaryIEN: int64;
+    function PrimaryName: string;
+    function PendingIEN(ADefault: boolean): Int64;
+    function PendingName(ADefault: boolean): string;
+    property ProviderData[Index: integer]: TPCEProviderRec read GetProviderData
+                                                          write SetProviderData; default;
+    property PrimaryIdx: integer read GetPrimaryIdx write SetPrimaryIdx;
+    property OnPrimaryChanged: TNotifyEvent read FOnPrimaryChanged
+                                           write FOnPrimaryChanged;
+  end;
+
+  TPCEItem = class(TObject)
+  {base class for PCE items}
+  private
+    FDelete:   Boolean;                          //flag for deletion
+    FSend:     Boolean;                          //flag to send to broker
+    FComment:  String;
+  protected
+    procedure SetComment(const Value: String);
+  public
+//    Provider:  Int64;
+    Provider:  Int64;
+    Code:      string;
+    Category:  string;
+    Narrative: string;
+    FGecRem: string;
+    procedure Assign(Src: TPCEItem); virtual;
+    procedure Clear; virtual;
+    function DelimitedStr: string; virtual;
+    function DelimitedStr2: string; virtual;
+    function ItemStr: string; virtual;
+    function Match(AnItem: TPCEItem): Boolean;
+//    function MatchProvider(AnItem: TPCEItem):Boolean;
+    function MatchProvider(AnItem: TPCEItem):Boolean;
+    procedure SetFromString(const x: string); virtual;
+    function HasCPTStr: string; virtual;
+    property Comment: String read FComment write SetComment;
+    property GecRem: string read FGecRem write FGecRem;
+  end;
+
+  TPCEItemClass = class of TPCEItem;
+
+  TPCEProc = class(TPCEItem)
+  {class for procedures}
+  public
+    FIsOldProcedure: boolean;
+    Quantity:  Integer;
+    Modifiers: string; // Format Modifier1IEN;Modifier2IEN;Modifier3IEN; Trailing ; needed
+//    Provider: Int64; {jm 9/8/99}
+    Provider: Int64; {jm 9/8/99}
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+//    function DelimitedStrC: string;
+//    function Match(AnItem: TPCEProc): Boolean;
+    function ModText: string;
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    procedure CopyProc(Dest: TPCEProc);
+    function Empty: boolean;
+  end;
+
+  TPCEDiag = class(TPCEItem)
+  {class for diagnosis}
+  public
+    fProvider: Int64; 
+    Primary:   Boolean;
+    AddProb:   Boolean;
+    OldComment: string;
+    SaveComment: boolean;
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+    function DelimitedStr2: string; override;
+//    function delimitedStrC: string;        
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    procedure Send;
+  end;
+
+  TPCEExams = class(TPCEItem)
+  {class for Examinations}
+  public
+//    Provider: Int64;
+    Results:   String;
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+//    function delimitedStrC: string;
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    function HasCPTStr: string; override;
+  end;
+
+
+  TPCEHealth = class(TPCEItem)
+  {class for Health Factors}
+  public
+//    Provider: Int64; {jm 9/8/99}
+    Level:   string;
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+//    function delimitedStrC: string;        
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    function HasCPTStr: string; override;
+  end;
+
+  TPCEImm = class(TPCEItem)  
+  {class for immunizations}
+  public
+//    Provider:        Int64; {jm 9/8/99}
+    Series:          String;
+    Reaction:        String;
+    Refused:         Boolean; //not currently used
+    Contraindicated: Boolean;
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+//    function delimitedStrC: string;        
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    function HasCPTStr: string; override;
+  end;
+
+  TPCEPat = class(TPCEItem)
+  {class for patient Education}
+  public
+//    Provider: Int64; {jm 9/8/99}
+    Level:   String;
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+//    function delimitedStrC: string;        
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    function HasCPTStr: string; override;
+  end;
+
+  TPCESkin = class(TPCEItem)  
+  {class for skin tests}
+  public
+//    Provider:  Int64; {jm 9/8/99}
+    Results:   String;                   //Do not confuse for reserved word "result"
+    Reading:   Integer;
+    DTRead:    TFMDateTime;
+    DTGiven:   TFMDateTime;
+    procedure Assign(Src: TPCEItem); override;
+    procedure Clear; override;
+    function DelimitedStr: string; override;
+//    function delimitedStrC: string;
+    function ItemStr: string; override;
+    procedure SetFromString(const x: string); override;
+    function HasCPTStr: string; override;
+  end;
+
+//  TPCEData = class;
+
+  tRequiredPCEDataType = (ndDiag, ndProc, ndSC); {jm 9/9/99}
+  tRequiredPCEDataTypes = set of tRequiredPCEDataType;
+
+  //modified: 6/9/99
+  //By: Robert Bott
+  //Location: ISL
+  //Purpose: Changed to allow capture of multiple providers.
+  TPCEData = class
+  {class for data to be passed to and from broker}
+  private
+    FUpdated:      boolean;
+    FEncDateTime:  TFMDateTime;                    //encounter date & time
+    FNoteDateTime: TFMDateTime;                    //Note date & time
+    FEncLocation:  Integer;                        //encounter location
+    FEncSvcCat:    Char;                           //
+    FEncInpatient: Boolean;                        //Inpatient flag
+    FEncUseCurr:   Boolean;                        //
+    FSCChanged:    Boolean;                        //
+    FSCRelated:    Integer;                        //service con. related?
+    FAORelated:    Integer;                        //
+    FIRRelated:    Integer;                        //
+    FECRelated:    Integer;                        //
+    FMSTRelated:   Integer;                        //
+    FHNCRelated:   Integer;                        //
+    FCVRelated:    Integer;                        //
+    FSHADRelated:   Integer;                        //
+    FVisitType:    TPCEProc;                       //
+    FProviders:    TPCEProviderList;
+    FDiagnoses:    TList;                          //pointer list for diagnosis
+    FProcedures:   TList;                          //pointer list for Procedures
+    FImmunizations: TList;                         //pointer list for Immunizations
+    FSkinTests:     TList;                         //pointer list for skin tests
+    FPatientEds:    TList;
+    FHealthFactors: TList;
+    fExams:         TList;
+    FNoteTitle:    Integer;
+    FNoteIEN:      Integer;
+    FParent:       string;                         // Parent Visit for secondary encounters
+    FHistoricalLocation: string;                   // Institution IEN^Name (if IEN=0 Piece 4 = outside location)
+    FStandAlone: boolean;
+    FStandAloneLoaded: boolean;
+
+    function GetVisitString: string;
+    function GetCPTRequired: Boolean;
+    function getDocCount: Integer;
+    function MatchItem(AList: TList; AnItem: TPCEItem): Integer;
+    procedure MarkDeletions(PreList: TList; PostList: TStrings);
+    procedure SetSCRelated(Value: Integer);
+    procedure SetAORelated(Value: Integer);
+    procedure SetIRRelated(Value: Integer);
+    procedure SetECRelated(Value: Integer);
+    procedure SetMSTRelated(Value: Integer);
+    procedure SetHNCRelated(Value: Integer);
+    procedure SetCVRelated(Value: Integer);
+    procedure SetSHADRelated(Value: Integer);
+    procedure SetEncUseCurr(Value: Boolean);
+    function GetHasData: Boolean;
+    procedure GetHasCPTList(AList: TStrings);
+    procedure CopyPCEItems(Src: TList; Dest: TObject; ItemClass: TPCEItemClass);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Clear;
+    procedure CopyPCEData(Dest: TPCEData);
+    function Empty: boolean;
+    procedure PCEForNote(NoteIEN: Integer; EditObj: TPCEData);(* overload;
+    procedure PCEForNote(NoteIEN: Integer; EditObj: TPCEData; DCSummAdmitString: string); overload;*)
+    procedure Save;
+    procedure CopyDiagnoses(Dest: TStrings);     // ICDcode^P|S^Category^Narrative^P|S Text
+    procedure CopyProcedures(Dest: TStrings);    // CPTcode^Qty^Category^Narrative^Qty Text
+    procedure CopyImmunizations(Dest: TStrings); //
+    procedure CopySkinTests(Dest: TStrings);     //
+    procedure CopyPatientEds(Dest: TStrings);
+    procedure CopyHealthFactors(Dest: TStrings);
+    procedure CopyExams(Dest: TStrings);
+
+    procedure SetDiagnoses(Src: TStrings; FromForm: boolean = TRUE);       // ICDcode^P|S^Category^Narrative^P|S Text
+    procedure SetExams(Src: TStrings; FromForm: boolean = TRUE);
+    Procedure SetHealthFactors(Src: TStrings; FromForm: boolean = TRUE);
+    procedure SetImmunizations(Src: TStrings; FromForm: boolean = TRUE);   // IMMcode^
+    Procedure SetPatientEds(Src: TStrings; FromForm: boolean = TRUE);
+    procedure SetSkinTests(Src: TStrings; FromForm: boolean = TRUE);        //
+    procedure SetProcedures(Src: TStrings; FromForm: boolean = TRUE);      // CPTcode^Qty^Category^Narrative^Qty Text
+
+    procedure SetVisitType(Value: TPCEProc);     // CPTcode^1^Category^Narrative
+    function StrDiagnoses: string;               // Diagnoses: ...
+    function StrImmunizations: string;           // Immunizzations: ...
+    function StrProcedures: string;              // Procedures: ...
+    function StrSkinTests: string;
+    function StrPatientEds: string;
+    function StrHealthFactors: string;
+    function StrExams: string;
+    function StrVisitType(const ASCRelated, AAORelated, AIRRelated, AECRelated,
+                                AMSTRelated, AHNCRelated, ACVRelated, ASHADRelated: Integer): string; overload;
+    function StrVisitType: string; overload;
+    function StandAlone: boolean;
+    procedure AddStrData(List: TStrings);
+    procedure AddVitalData(Data, List: TStrings);
+
+    function NeededPCEData: tRequiredPCEDataTypes;
+    function OK2SignNote: boolean;
+
+    function PersonClassDate: TFMDateTime;
+    function VisitDateTime: TFMDateTime;
+    function IsSecondaryVisit: boolean;
+    function NeedProviderInfo: boolean;
+
+    property HasData:      Boolean  read GetHasData;
+    property CPTRequired:  Boolean  read GetCPTRequired;
+    property Inpatient:    Boolean  read FEncInpatient;
+    property UseEncounter: Boolean  read FEncUseCurr  write SetEncUseCurr;
+    property SCRelated:    Integer  read FSCRelated   write SetSCRelated;
+    property AORelated:    Integer  read FAORelated   write SetAORelated;
+    property IRRelated:    Integer  read FIRRelated   write SetIRRelated;
+    property ECRelated:    Integer  read FECRelated   write SetECRelated;
+    property MSTRelated:   Integer  read FMSTRelated  write SetMSTRelated;
+    property HNCRelated:   Integer  read FHNCRelated  write SetHNCRelated;
+    property CVRelated:    Integer  read FCVRelated  write SetCVRelated;
+    property SHADRelated:   Integer  read FSHADRelated write SetSHADRelated;
+    property VisitType:    TPCEProc read FVisitType   write SetVisitType;
+    property VisitString:  string   read GetVisitString;
+    property VisitCategory:char     read FEncSvcCat   write FEncSvcCat;
+    property DateTime:     TFMDateTime read FEncDateTime write FEncDateTime;
+    property NoteDateTime: TFMDateTime read FNoteDateTime write FNoteDateTime;
+    property Location:     Integer  Read FencLocation;
+    property NoteTitle:    Integer read FNoteTitle write FNoteTitle;
+    property NoteIEN:      Integer read FNoteIEN write FNoteIEN;
+    property DocCOunt:     Integer read GetDocCount;
+    property Providers:    TPCEProviderList read FProviders;
+    property Parent:       string read FParent write FParent;
+    property HistoricalLocation: string read FHistoricalLocation write FHistoricalLocation;
+    property Updated: boolean read FUpdated write FUpdated;
+  end;
+
+type
+  TPCEType = (ptEncounter, ptReminder, ptTemplate);
+
+const
+  PCETypeText: array[TPCEType] of string = ('encounter', 'reminder', 'template');
+
+function InvalidPCEProviderTxt(AIEN: Int64; ADate: TFMDateTime): string;
+function MissingProviderInfo(PCEEdit: TPCEData; PCEType: TPCEType = ptEncounter): boolean;
+function IsOK2Sign(const PCEData: TPCEData; const IEN: integer) :boolean;
+function FutureEncounter(APCEData: TPCEData): boolean;
+function CanEditPCE(APCEData: TPCEData): boolean;
+procedure GetPCECodes(List: TStrings; CodeType: integer);
+procedure GetComboBoxMinMax(dest: TORComboBox; var Min, Max: integer);
+procedure PCELoadORCombo(dest: TORComboBox); overload;
+procedure PCELoadORCombo(dest: TORComboBox; var Min, Max: integer); overload;
+function GetPCEDisplayText(ID: string; Tag: integer): string;
+procedure SetDefaultProvider(ProviderList: TPCEProviderList; APCEData: TPCEData);
+function ValidateGAFDate(var GafDate: TFMDateTime): string;
+procedure GetVitalsFromDate(VitalStr: TStrings; PCEObj: TPCEData);
+procedure GetVitalsFromNote(VitalStr: TStrings; PCEObj: TPCEData; ANoteIEN: Int64);
+
+type
+  TPCEDataCat = (pdcVisit, pdcDiag, pdcProc, pdcImm, pdcSkin, pdcPED, pdcHF,
+                 pdcExam, pdcVital, pdcOrder, pdcMH, pdcMST, pdcHNC, pdcWHR, pdcWH);
+
+function GetPCEDataText(Cat: TPCEDataCat; Code, Category, Narrative: string;
+                       PrimaryDiag: boolean = FALSE; Qty: integer = 0): string;
+
+const
+  PCEDataCatText: array[TPCEDataCat] of string =
+                        { dcVisit } ('',
+                        { dcDiag  }  'Diagnoses: ',
+                        { dcProc  }  'Procedures: ',
+                        { dcImm   }  'Immunizations: ',
+                        { dcSkin  }  'Skin Tests: ',
+                        { dcPED   }  'Patient Educations: ',
+                        { dcHF    }  'Health Factors: ',
+                        { dcExam  }  'Examinations: ',
+                        { dcVital }  '',
+                        { dcOrder }  'Orders: ',
+                        { dcMH    }  'Mental Health: ',
+                        { dcMST   }  'MST History: ',
+                        { dcHNC   }  'Head and/or Neck Cancer: ',
+                        { dcWHR   }  'Women''s Health Procedure: ',
+                        { dcWH    }  'WH Notification: ');
+
+  NoPCEValue = '@';
+  TAB_STOP_CHARS = 7;
+  TX_NO_VISIT   = 'Insufficient Visit Information';
+  TX_NEED_PROV1  = 'The provider responsible for this encounter must be entered before ';
+  TX_NEED_PROV2  = ' information may be entered.';
+//  TX_NEED_PROV3  = 'you can sign the note.';
+  TX_NO_PROV    = 'Missing Provider';
+  TX_BAD_PROV   = 'Invalid Provider';
+  TX_NOT_ACTIVE = ' does not have an active person class.';
+  TX_NOT_PROV   = ' is not a known Provider.';
+  TX_MISSING    = 'Required Information Missing';
+  TX_REQ1       = 'The following required fields have not been entered:' + CRLF;
+  TC_REQ        = 'Required Fields';
+  TX_ADDEND_AD  = 'Cannot make an addendum to an addendum' + CRLF +
+                  'Please select the parent note or document, and try again.';
+  TX_ADDEND_MK  = 'Unable to Make Addendum';
+  TX_DEL_CNF    = 'Confirm Deletion';
+  TX_IN_AUTH    = 'Insufficient Authorization';
+  TX_NOPCE      = '<No encounter information entered>';
+  TX_NEED_T     = 'Missing Encounter Information';
+  TX_NEED1      = 'This note title is marked to prompt for the following missing' + CRLF +
+                  'encounter information:' + CRLF;
+  TX_NEED_DIAG  = '  A diagnosis.';
+  TX_NEED_PROC  = '  A visit type or procedure.';
+  TX_NEED_SC    = '  One or more service connected questions.';
+  TX_NEED2      = 'Would you like to enter encounter information now?';
+  TX_NEED3      = 'You must enter the encounter information before you can sign the note.';
+  TX_NEEDABORT  = 'Document not signed.';
+  TX_COS_REQ    = 'A cosigner is required for this document.';
+  TX_COS_SELF   = 'You cannot make yourself a cosigner.';
+  TX_COS_AUTH   = ' is not authorized to cosign this document.';
+  TC_COS        = 'Select Cosigner';
+
+  TAG_IMMSERIES  = 10;
+  TAG_IMMREACTION= 20;
+  TAG_SKRESULTS  = 30;
+  TAG_PEDLEVEL   = 40;
+  TAG_HFLEVEL    = 50;
+  TAG_XAMRESULTS = 60;
+  TAG_HISTLOC    = 70;
+
+{ These piece numbers are used by both the PCE objects and reminders }
+  pnumCode           = 2;
+  pnumPrvdrIEN       = 2;
+  pnumCategory       = 3;
+  pnumNarrative      = 4;
+  pnumExamResults    = 5;
+  pnumSkinResults    = 5;
+  pnumHFLevel        = 5;
+  pnumImmSeries      = 5;
+  pnumProcQty        = 5;
+  pnumPEDLevel       = 5;
+  pnumDiagPrimary    = 5;
+  pnumPrvdrName      = 5;
+  pnumProvider       = 6;
+  pnumPrvdrPrimary   = 6;
+  pnumSkinReading    = 7;
+  pnumImmReaction    = 7;
+  pnumDiagAdd2PL     = 7;
+  pnumSkinDTRead     = 8;
+  pnumImmContra      = 8;
+  pnumSkinDTGiven    = 9;
+  pnumImmRefused     = 9;
+  pnumCPTMods        = 9;
+  pnumComment        = 10;
+  pnumWHPapResult    =11;
+  pnumWHNotPurp      =12;
+
+  USE_CURRENT_VISITSTR = -2;
+
+implementation
+
+uses uCore, rPCE, rCore, rTIU, fEncounterFrame, uVitals, fFrame,
+     fPCEProvider, rVitals, uReminders;
+
+const
+  FN_NEW_PERSON = 200;
+
+function InvalidPCEProviderTxt(AIEN: Int64; ADate: TFMDateTime): string;
+begin
+  Result := '';
+  if(not CheckActivePerson(IntToStr(AIEN), ADate)) then
+    Result := TX_NOT_ACTIVE
+  else
+  if(not IsUserAProvider(AIEN, ADate)) then
+    Result := TX_NOT_PROV;
+end;
+
+function MissingProviderInfo(PCEEdit: TPCEData; PCEType: TPCEType = ptEncounter): boolean;
+begin
+  if(PCEEdit.Empty and (PCEEdit.Location <> Encounter.Location) and (not Encounter.NeedVisit)) then
+    PCEEdit.UseEncounter := TRUE;
+  Result := NoPrimaryPCEProvider(PCEEdit.Providers, PCEEdit);
+  if(Result) then
+    InfoBox(TX_NEED_PROV1 + PCETypeText[PCEType] + TX_NEED_PROV2,
+            TX_NO_PROV, MB_OK or MB_ICONWARNING);
+end;
+
+var
+  UNxtCommSeqNum: integer;                             
+
+function IsOK2Sign(const PCEData: TPCEData; const IEN: integer) :boolean;
+var
+  TmpPCEData: TPCEData;
+
+begin
+  if(assigned(PCEData)) then
+    PCEData.FUpdated := FALSE;
+  if(assigned(PCEData) and (PCEData.VisitString <> '') and
+     (VisitStrForNote(IEN) = PCEData.VisitString)) then
+  begin
+    if(PCEData.FNoteIEN <= 0) then
+      PCEData.FNoteIEN := IEN;
+    Result := PCEData.OK2SignNote
+  end
+  else
+  begin
+    TmpPCEData := TPCEData.Create;
+    try
+      TmpPCEData.PCEForNote(IEN, nil);
+      Result := TmpPCEData.OK2SignNote;
+    finally
+      TmpPCEData.Free;
+    end;
+  end;
+end;
+
+function FutureEncounter(APCEData: TPCEData): boolean;
+begin
+  Result := (Int(APCEData.FEncDateTime + 0.0000001) > Int(FMToday + 0.0000001));
+end;
+
+function CanEditPCE(APCEData: TPCEData): boolean;
+begin
+  if(GetAskPCE(APCEData.FEncLocation) = apDisable) then
+    Result := FALSE
+  else
+    Result := (not FutureEncounter(APCEData));
+end;
+
+procedure GetComboBoxMinMax(dest: TORComboBox; var Min, Max: integer);
+var
+  DC: HDC;
+  SaveFont: HFont;
+  TextSize: TSize;
+  TLen, i: integer;
+  x: string;
+
+begin
+  Min := MaxInt;
+  Max := 0;
+  DC := GetDC(0);
+  try
+    SaveFont := SelectObject(DC, dest.Font.Handle);
+    try
+      for i := 0 to dest.Items.Count-1 do
+      begin
+        x := dest.DisplayText[i];
+        GetTextExtentPoint32(DC, PChar(x), Length(x), TextSize);
+        TLen := TextSize.cx;
+        if(TLen > 0) and (Min > TLen) then
+          Min := TLen;
+        if(Max < TLen) then
+          Max := TLen;
+      end;
+    finally
+      SelectObject(DC, SaveFont);
+    end;
+  finally
+    ReleaseDC(0, DC);
+  end;
+  if(Min > Max) then Min := Max;
+
+  inc(Min, ScrollBarWidth + 8);
+  inc(Max, ScrollBarWidth + 8);
+end;
+
+type
+  TListMinMax = (mmMin, mmMax, mmFont);
+
+var
+  PCESetsOfCodes: TStringList = nil;
+  HistLocations: TORStringList = nil;
+  WHNotPurpose: TORStringList = nil;
+  WHPapResult: TORStringList = nil;
+  WHMammResult: TORStringList = nil;
+  WHUltraResult: TORStringList = nil;
+const
+  SetOfCodesHeader = '{^~Codes~^}';
+  SOCHeaderLen = length(SetOfCodesHeader);
+  ListMinMax: array[1..7, TListMinMax] of integer =
+                          ((0,0,-1),  // TAG_IMMSERIES
+                           (0,0,-1),  // TAG_IMMREACTION
+                           (0,0,-1),  // TAG_SKRESULTS
+                           (0,0,-1),  // TAG_PEDLEVEL
+                           (0,0,-1),  // TAG_HFLEVEL
+                           (0,0,-1),  // TAG_XAMRESULTS
+                           (0,0,-1));  // TAG_HISTLOC
+                           
+function CodeSetIndex(CodeType: integer): integer;
+var
+  TempSL: TStringList;
+  Hdr: string;
+
+begin
+  Hdr := SetOfCodesHeader + IntToStr(CodeType);
+  Result := PCESetsOfCodes.IndexOf(Hdr);
+  if(Result < 0) then
+  begin
+    TempSL := TStringList.Create;
+    try
+      case CodeType of
+        TAG_IMMSERIES:   LoadImmSeriesItems(TempSL);
+        TAG_IMMREACTION: LoadImmReactionItems(TempSL);
+        TAG_SKRESULTS:   LoadSkResultsItems(TempSL);
+        TAG_PEDLEVEL:    LoadPEDLevelItems(TempSL);
+        TAG_HFLEVEL:     LoadHFLevelItems(TempSL);
+        TAG_XAMRESULTS:  LoadXAMResultsItems(TempSL);
+        else
+          KillObj(@TempSL);
+      end;
+      if(assigned(TempSL)) then
+      begin
+        Result := PCESetsOfCodes.Add(Hdr);
+        FastAddStrings(TempSL, PCESetsOfCodes);
+      end;
+    finally
+      KillObj(@TempSL);
+    end;
+  end;
+end;
+
+procedure GetPCECodes(List: TStrings; CodeType: integer);
+var
+  idx: integer;
+
+  begin
+  if(CodeType = TAG_HISTLOC) then
+  begin
+    if(not assigned(HistLocations)) then
+    begin
+      HistLocations := TORStringList.Create;
+      LoadHistLocations(HistLocations);
+      HistLocations.SortByPiece(2);
+      HistLocations.Insert(0,'0');
+    end;
+    FastAddStrings(HistLocations, List);
+  end
+  else
+  begin
+    if(not assigned(PCESetsOfCodes)) then
+      PCESetsOfCodes := TStringList.Create;
+    idx := CodeSetIndex(CodeType);
+    if(idx >= 0) then
+    begin
+      inc(idx);
+      while((idx < PCESetsOfCodes.Count) and
+            (copy(PCESetsOfCodes[idx],1,SOCHeaderLen) <> SetOfCodesHeader)) do
+      begin
+        List.Add(PCESetsOfCodes[idx]);
+        inc(idx);
+      end;
+    end;
+  end;
+end;
+
+function GetPCECodeString(CodeType: integer; ID: string): string;
+var
+  idx: integer;
+
+begin
+  Result := '';
+  if(CodeType <> TAG_HISTLOC) then
+  begin
+    if(not assigned(PCESetsOfCodes)) then
+      PCESetsOfCodes := TStringList.Create;
+    idx := CodeSetIndex(CodeType);
+    if(idx >= 0) then
+    begin
+      inc(idx);
+      while((idx < PCESetsOfCodes.Count) and
+            (copy(PCESetsOfCodes[idx],1,SOCHeaderLen) <> SetOfCodesHeader)) do
+      begin
+        if(Piece(PCESetsOfCodes[idx], U, 1) = ID) then
+        begin
+          Result := Piece(PCESetsOfCodes[idx], U, 2);
+          break;
+        end;
+        inc(idx);
+      end;
+    end;
+  end;
+end;
+
+procedure PCELoadORComboData(dest: TORComboBox; GetMinMax: boolean; var Min, Max: integer);
+var
+  idx: integer;
+
+begin
+  if(dest.items.count < 1) then
+  begin
+    dest.Clear;
+    GetPCECodes(dest.Items, dest.Tag);
+    dest.itemindex := 0;
+    if(GetMinMax) and (dest.Items.Count > 0) then
+    begin
+      idx := dest.Tag div 10;
+      if(idx > 0) and (idx < 8) then
+      begin
+        if(ListMinMax[idx, mmFont] <> integer(dest.Font.Handle)) then
+        begin
+          GetComboBoxMinMax(dest, Min, Max);
+          ListMinMax[idx, mmMin] := Min;
+          ListMinMax[idx, mmMax] := Max;
+        end
+        else
+        begin
+          Min := ListMinMax[idx, mmMin];
+          Max := ListMinMax[idx, mmMax];
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure PCELoadORCombo(dest: TORComboBox);
+var
+  tmp: integer;
+
+begin
+  PCELoadORComboData(dest, FALSE, tmp, tmp);
+end;
+
+procedure PCELoadORCombo(dest: TORComboBox; var Min, Max: integer);
+begin
+  PCELoadORComboData(dest, TRUE, Min, Max);
+end;
+
+function GetPCEDisplayText(ID: string; Tag: integer): string;
+var
+  Hdr: string;
+  idx: integer;
+  TempSL: TStringList;
+
+begin
+  Result := '';
+  if(Tag = TAG_HISTLOC) then
+  begin
+    if(not assigned(HistLocations)) then
+    begin
+      HistLocations := TORStringList.Create;
+      LoadHistLocations(HistLocations);
+      HistLocations.SortByPiece(2);
+      HistLocations.Insert(0,'0');
+    end;
+    idx := HistLocations.IndexOfPiece(ID);
+    if(idx >= 0) then
+      Result := Piece(HistLocations[idx], U, 2);
+  end
+  else
+  begin
+    if(not assigned(PCESetsOfCodes)) then
+      PCESetsOfCodes := TStringList.Create;
+    Hdr := SetOfCodesHeader + IntToStr(Tag);
+    idx := PCESetsOfCodes.IndexOf(Hdr);
+    if(idx < 0) then
+    begin
+      TempSL := TStringList.Create;
+      try
+        case Tag of
+          TAG_IMMSERIES:   LoadImmSeriesItems(TempSL);
+          TAG_IMMREACTION: LoadImmReactionItems(TempSL);
+          TAG_SKRESULTS:   LoadSkResultsItems(TempSL);
+          TAG_PEDLEVEL:    LoadPEDLevelItems(TempSL);
+          TAG_HFLEVEL:     LoadHFLevelItems(TempSL);
+          TAG_XAMRESULTS:  LoadXAMResultsItems(TempSL);
+          else
+            KillObj(@TempSL);
+        end;
+        if(assigned(TempSL)) then
+        begin
+          idx := PCESetsOfCodes.Add(Hdr);
+          FastAddStrings(TempSL, PCESetsOfCodes);
+        end;
+      finally
+        KillObj(@TempSL);
+      end;
+    end;
+    if(idx >= 0) then
+    begin
+      inc(idx);
+      while((idx < PCESetsOfCodes.Count) and
+            (copy(PCESetsOfCodes[idx],1,SOCHeaderLen) <> SetOfCodesHeader)) do
+      begin
+        if(Piece(PCESetsOfCodes[idx], U, 1) = ID) then
+        begin
+          Result := Piece(PCESetsOfCodes[idx], U, 2);
+          break;
+        end;
+        inc(idx);
+      end;
+    end;
+  end;
+end;
+
+function GetPCEDataText(Cat: TPCEDataCat; Code, Category, Narrative: string;
+                       PrimaryDiag: boolean = FALSE; Qty: integer = 0): string;
+begin
+  Result := '';
+  case Cat of
+    pdcVisit: if Code <> '' then Result := Category + ' ' + Narrative;
+    pdcDiag:  begin
+               Result := Narrative;
+               if PrimaryDiag then Result := Result + ' (Primary)';
+             end;
+    pdcProc: begin
+              Result := Narrative;
+              if Qty > 1 then Result := Result + ' (' + IntToStr(Qty) + ' times)';
+            end;
+    else Result := Narrative;
+  end;
+end;
+
+procedure SetDefaultProvider(ProviderList: TPCEProviderList; APCEData: TPCEData);
+var
+  SIEN, tmp: string;
+  DefUser, AUser: Int64;
+  UserName: string;
+
+begin
+  DefUser := Encounter.Provider;
+  if(DefUser <> 0) and (InvalidPCEProviderTxt(DefUser, APCEData.PersonClassDate) <> '') then
+    DefUser := 0;
+  if(DefUser <> 0) then
+  begin
+    AUser := DefUser;
+    UserName := Encounter.ProviderName;
+  end
+  else
+  if(InvalidPCEProviderTxt(User.DUZ, APCEData.PersonClassDate) = '') then
+  begin
+    AUser := User.DUZ;
+    UserName := User.Name;
+  end
+  else
+  begin
+    AUser := 0;
+    UserName := '';
+  end;
+  if(AUser = 0) then
+    ProviderList.FPendingUser := ''
+  else
+    ProviderList.FPendingUser := IntToStr(AUser) + U + UserName;
+  ProviderList.FPendingDefault := '';
+  tmp := DefaultProvider(APCEData.Location, DefUser, APCEData.PersonClassDate, APCEData.NoteIEN);
+  SIEN := IntToStr(StrToIntDef(Piece(tmp,U,1),0));
+  if(SIEN <> '0') then
+  begin
+    if(CheckActivePerson(SIEN, APCEData.PersonClassDate)) then
+    begin
+      if(piece(TIUSiteParams, U, 8) = '1') and // Check to see if DEFAULT PRIMARY PROVIDER is by Location 
+        (SIEN = IntToStr(User.DUZ)) then
+        ProviderList.AddProvider(SIEN, Piece(tmp,U,2) ,TRUE)
+      else
+        ProviderList.FPendingDefault := tmp;
+    end;
+  end;
+end;
+
+function ValidateGAFDate(var GafDate: TFMDateTime): string;
+var
+  DateMsg: string;
+  OKDate: TFMDateTime;
+
+begin
+  Result := '';
+  if(Patient.DateDied > 0) and (FMToday > Patient.DateDied) then
+  begin
+    DateMsg := 'Date of Death';
+    OKDate := Patient.DateDied;
+  end
+  else
+  begin
+    DateMsg := 'Today';
+    OKDate := FMToday;
+  end;
+  if(GafDate <= 0) then
+  begin
+    Result := 'A date is required to enter a GAF score.  Date Determined changed to ' + DateMsg + '.';
+    GafDate := OKDate;
+  end
+  else
+  if(Patient.DateDied > 0) and (GafDate > Patient.DateDied) then
+  begin
+    Result := 'This patient died ' + FormatFMDateTime('mmm dd, yyyy hh:nn', Patient.DateDied) +
+           '.  Date GAF determined can not ' + CRLF +
+           'be later than the date of death, and has been changed to ' + DateMsg + '.';
+    GafDate := OKDate;
+  end;
+end;
+
+procedure GetVitalsFromDate(VitalStr: TStrings; PCEObj: TPCEData);
+var
+  dte: TFMDateTime;
+  
+begin
+  if(PCEObj.IsSecondaryVisit) then
+    dte := PCEObj.NoteDateTime
+  else
+    dte := PCEObj.DateTime;
+  GetVitalsFromEncDateTime(VitalStr, Patient.DFN, dte);
+end;
+
+procedure GetVitalsFromNote(VitalStr: TStrings; PCEObj: TPCEData; ANoteIEN: Int64);
+begin
+  if(PCEObj.IsSecondaryVisit) then
+    GetVitalsFromEncDateTime(VitalStr, Patient.DFN, PCEObj.NoteDateTime)
+  else
+    GetVitalFromNoteIEN(VitalStr, Patient.DFN, ANoteIEN);
+end;
+
+{ TPCEItem methods ------------------------------------------------------------------------- }
+
+//function TPCEItem.DelimitedStr2: string;
+//added: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Return comment string to be passed in RPC call.
+function TPCEItem.DelimitedStr2: string;
+{created delimited string to pass to broker}
+begin
+  If Comment = '' then
+  begin
+    result := 'COM' + U +  IntToStr(UNxtCommSeqNum) + U + NoPCEValue;
+  end
+  else
+  begin
+    Result := 'COM' + U +  IntToStr(UNxtCommSeqNum) + U + Comment;
+  end;
+
+  Inc(UNxtCommSeqNum); //set up for next comment
+end;
+
+procedure TPCEItem.Assign(Src: TPCEItem);
+begin
+  FDelete   := Src.FDelete;
+  FSend     := Src.FSend;
+  Code      := Src.Code;
+  Category  := Src.Category;
+  Narrative := Src.Narrative;
+  Provider  := Src.Provider;
+  Comment   := Src.Comment;                            
+end;
+
+procedure TPCEItem.SetComment(const Value: String);
+begin
+  FComment := Value;
+  while (length(FComment) > 0) and (FComment[1] = '?') do
+    delete(FComment,1,1);
+end;
+
+
+//procedure TPCEItem.Clear;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+procedure TPCEItem.Clear;
+{clear fields(properties) of class}
+begin
+  FDelete   := False;
+  FSend     := False;
+  Code      := '';
+  Category  := '';
+  Narrative := '';
+  Provider  := 0;
+  Comment   := '';                                     
+end;
+
+//function TPCEItem.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCEItem.DelimitedStr: string;
+{created delimited string to pass to broker}
+var
+  DelFlag: Char;
+begin
+  if FDelete then DelFlag := '-' else DelFlag := '+';
+  Result := DelFlag + U + Code + U + Category + U + Narrative;
+end;
+
+function TPCEItem.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  Result := Narrative;
+end;
+
+function TPCEItem.Match(AnItem: TPCEItem): Boolean;
+{checks for match of Code, Category. and Item}
+begin
+  Result := False;
+  if (Code = AnItem.Code) and (Category = AnItem.Category) and (Narrative = AnItem.Narrative)
+    then Result := True;
+end;
+
+function TPCEItem.HasCPTStr: string;
+begin
+  Result := '';
+end;
+
+//procedure TPCEItem.SetFromString(const x: string);
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+procedure TPCEItem.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative }
+begin
+  Code      := Piece(x, U, pnumCode);
+  Category  := Piece(x, U, pnumCategory);
+  Narrative := Piece(x, U, pnumNarrative);
+  Provider  := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Comment   := Piece(x, U, pnumComment);                        
+end;
+
+
+{ TPCEExams methods ------------------------------------------------------------------------- }
+
+procedure TPCEExams.Assign(Src: TPCEItem);
+begin
+  inherited Assign(Src);
+  Results := TPCEExams(Src).Results;
+  if Results = '' then Results := NoPCEValue;
+end;
+
+procedure TPCEExams.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+//  Provider := 0;
+  Results  := NoPCEValue;
+end;
+
+//function TPCEExams.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCEExams.DelimitedStr: string;
+{created delimited string to pass to broker}
+begin
+  Result := inherited DelimitedStr;
+  //Result := 'XAM' + Result + U + Results + U + IntToStr(Provider) +U + U + U +
+  Result := 'XAM' + Result + U + Results + U +U + U + U +
+   U + IntToStr(UNxtCommSeqNum);
+end;
+
+(*function TPCEExams.delimitedStrC: string;
+begin
+  Result := inherited DelimitedStr;
+  Result := 'XAM' + Result + U + Results + U + IntToStr(Provider) +U + U + U +
+   U + comment;
+end;
+*)
+function TPCEExams.HasCPTStr: string;
+begin
+  Result := Code + ';AUTTEXAM(';
+end;
+
+function TPCEExams.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if(Results <> NoPCEValue) then
+    Result := GetPCECodeString(TAG_XAMRESULTS, Results)
+  else
+    Result := '';
+  Result := Result + U + inherited ItemStr;
+end;
+
+procedure TPCEExams.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Qty ^ Prov }
+begin
+  inherited SetFromString(x);
+//  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Results  := Piece(x, U, pnumExamResults);
+  If results = '' then results := NoPCEValue;
+end;
+
+
+{ TPCESkin methods ------------------------------------------------------------------------- }
+
+procedure TPCESkin.Assign(Src: TPCEItem);
+var
+  SKSrc: TPCESkin;
+
+begin
+  inherited Assign(Src);
+  SKSrc := TPCESkin(Src);
+  Results := SKSrc.Results;
+  Reading := SKSrc.Reading;
+  DTRead  := SKSrc.DTRead;
+  DTGiven := SKSrc.DTGiven;
+  if Results = '' then Results := NoPCEValue;
+end;
+
+procedure TPCESkin.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+//  Provider := 0;
+  Results := NoPCEValue;
+  Reading   := 0;
+  DTRead    := 0.0;        //What should dates be ititialized to?
+  DTGiven   := 0.0;
+end;
+
+//function TPCESkin.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCESkin.DelimitedStr: string;
+{created delimited string to pass to broker}
+begin
+  Result := inherited DelimitedStr;
+  //Result := 'SK' + Result + U + results + U + IntToStr(Provider) + U +
+  Result := 'SK' + Result + U + results + U + U +
+   IntToStr(Reading) + U + U + U + IntToStr(UNxtCommSeqNum); 
+    //+ FloatToStr(DTRead) + U + FloatToStr(DTGiven);
+end;
+
+(*function TPCESkin.delimitedStrC: string;
+begin
+  Result := inherited DelimitedStr;
+  Result := 'SK' + Result + U + results + U + IntToStr(Provider) + U +
+   IntToStr(Reading) + U + U + U + comment;
+end;
+*)
+function TPCESkin.HasCPTStr: string;
+begin
+  Result := Code + ';AUTTSK(';
+end;
+
+function TPCESkin.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if(Results <> NoPCEValue) then
+    Result := GetPCECodeString(TAG_SKRESULTS, Results)
+  else
+    Result := '';
+  Result := Result + U;
+  if(Reading <> 0) then
+    Result := Result + IntToStr(Reading);
+  Result := Result + U + inherited ItemStr;
+end;
+
+procedure TPCESkin.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Qty ^ Prov }
+var
+  sRead, sDTRead, sDTGiven: String;
+begin
+  inherited SetFromString(x);
+//  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Results  := Piece(x, U, pnumSkinResults);
+  sRead    := Piece(x, U, pnumSkinReading);
+  sDTRead  := Piece(x, U, pnumSkinDTRead);
+  sDtGiven := Piece(x, U, pnumSkinDTGiven);
+  If results = '' then results := NoPCEValue;
+
+  if sRead <> '' then
+    Reading  := StrToInt(sRead);
+  if sDTRead <> '' then
+    DTRead   := StrToFMDateTime(sDTRead);
+  if sDTGiven <> '' then
+    DTGiven  := StrToFMDateTime(sDTGiven);
+
+end;
+
+
+{ TPCEHealth methods ------------------------------------------------------------------------- }
+
+procedure TPCEHealth.Assign(Src: TPCEItem);
+begin
+  inherited Assign(Src);
+  Level := TPCEHealth(Src).Level;
+  if Level = '' then Level := NoPCEValue;
+end;
+
+procedure TPCEHealth.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+//  Provider := 0;
+  Level    := NoPCEValue;
+end;
+
+//function TPCEHealth.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCEHealth.DelimitedStr: string;
+{created delimited string to pass to broker}
+begin
+  Result := inherited DelimitedStr;
+//  Result := 'HF' + Result + U + Level + U + IntToStr(Provider) + U + U + U +
+  Result := 'HF' + Result + U + Level + U + U + U + U +
+   U + IntToStr(UNxtCommSeqNum)+ U + GecRem; 
+end;
+
+(*function TPCEHealth.delimitedStrC: string;
+begin
+  Result := inherited DelimitedStr;
+  Result := 'HF' + Result + U + Level + U + IntToStr(Provider) + U + U + U +
+   U + comment;
+end;
+*)
+function TPCEHealth.HasCPTStr: string;
+begin
+  Result := Code + ';AUTTHF(';
+end;
+
+function TPCEHealth.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if(Level <> NoPCEValue) then
+    Result := GetPCECodeString(TAG_HFLEVEL, Level)
+  else
+    Result := '';
+  Result := Result + U + inherited ItemStr;
+end;
+
+procedure TPCEHealth.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Qty ^ Prov }
+begin
+  inherited SetFromString(x);
+//  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Level    := Piece(x, U, pnumHFLevel);
+  if level = '' then level := NoPCEValue;
+end;
+
+
+{ TPCEImm methods ------------------------------------------------------------------------- }
+
+procedure TPCEImm.Assign(Src: TPCEItem);
+var
+  IMMSrc: TPCEImm;
+  
+begin
+  inherited Assign(Src);
+  IMMSrc := TPCEImm(Src);
+  Series          := IMMSrc.Series;
+  Reaction        := IMMSrc.Reaction;
+  Refused         := IMMSrc.Refused;
+  Contraindicated := IMMSrc.Contraindicated;
+  if Series = '' then Series := NoPCEValue;
+  if Reaction ='' then Reaction := NoPCEValue;
+end;
+
+procedure TPCEImm.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+//  Provider := 0;
+  Series   := NoPCEValue;
+  Reaction := NoPCEValue;
+  Refused  := False; //not currently used
+  Contraindicated := false;
+end;
+
+//function TPCEImm.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCEImm.DelimitedStr: string;
+{created delimited string to pass to broker}
+begin
+  Result := inherited DelimitedStr;
+  //Result := 'IMM' + Result + U + Series + U + IntToStr(Provider) + U + Reaction;
+  Result := 'IMM' + Result + U + Series + U + U + Reaction;
+  if Contraindicated then Result := Result + U + '1'
+  else Result := Result + U + '0';
+  Result := Result + U + U + IntToStr(UNxtCommSeqNum); 
+  {the following two lines are not yet implemented in PCE side}
+  //if Refused then Result := Result + U + '1'
+  //else Result := Result + U + '0';
+end;
+
+(*function TPCEImm.delimitedStrC: string;
+begin
+  Result := inherited DelimitedStr;
+  Result := 'IMM' + Result + U + Series + U + IntToStr(Provider) + U + Reaction;
+  if Contraindicated then Result := Result + U + '1'
+  else Result := Result + U + '0';
+  Result := Result + U + U + comment;
+    {the following two lines are not yet implemented in PCE side}
+  //if Refused then Result := Result + U + '1'
+  //else Result := Result + U + '0';
+end;
+*)
+function TPCEImm.HasCPTStr: string;
+begin
+  Result := Code + ';AUTTIMM(';
+end;
+
+function TPCEImm.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if(Series <> NoPCEValue) then
+    Result := GetPCECodeString(TAG_IMMSERIES, Series)
+  else
+    Result := '';
+  Result := Result + U;
+  if(Reaction <> NoPCEValue) then
+    Result := Result + GetPCECodeString(TAG_IMMREACTION, Reaction);
+  Result := Result + U;
+  if(Contraindicated) then
+    Result := Result + 'X';
+  Result := Result + U + inherited ItemStr;
+end;
+
+procedure TPCEImm.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Qty ^ Prov }
+var
+  temp: String;
+begin
+  inherited SetFromString(x);
+//  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Series   := Piece(x, U, pnumImmSeries);
+  Reaction := Piece(x, U, pnumImmReaction);
+  temp     := Piece(x, U, pnumImmRefused);
+  if temp = '1' then refused  := true else refused := false;
+  temp     := Piece(x, U, pnumImmContra);
+  if temp = '1' then Contraindicated := true else Contraindicated := false;
+  if Series = '' then series := NoPCEValue;
+  if Reaction ='' then reaction := NoPCEValue;
+end;
+
+
+
+{ TPCEProc methods ------------------------------------------------------------------------- }
+
+procedure TPCEProc.Assign(Src: TPCEItem);
+begin
+  inherited Assign(Src);
+  Quantity := TPCEProc(Src).Quantity;
+  Modifiers := TPCEProc(Src).Modifiers;
+  Provider := TPCEProc(Src).Provider;
+end;
+
+procedure TPCEProc.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+  Quantity := 0;
+  Modifiers := '';
+//  Provider := 0;
+  Provider := 0;
+end;
+
+procedure TPCEProc.CopyProc(Dest: TPCEProc);
+begin
+  Dest.FDelete    :=  FDelete;
+  Dest.FSend      :=  Fsend;                          //flag to send to broker
+//  Dest.Provider   := Provider;
+  Dest.Provider   := Provider;
+  Dest.Code       := Code;
+  Dest.Category   := Category;
+  Dest.Narrative  := Narrative;
+  Dest.Comment    := Comment;
+  Dest.Modifiers  := Modifiers;
+end;
+
+//function TPCEProc.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCEProc.DelimitedStr: string;
+var
+  i, cnt: integer;
+  Mods, ModIEN, tmpProv: string;
+
+{created delimited string to pass to broker}
+begin
+  i := 1;
+  cnt := 0;
+  Mods := '';
+  repeat
+    ModIEN := piece(Modifiers, ';', i);
+    if(ModIEN <> '') then
+    begin
+      inc(cnt);
+      Mods := Mods + ';' + ModifierCode(ModIEN) + '/' + ModIEN;
+      inc(i);
+    end;
+  until (ModIEN = '');
+
+  Result := inherited DelimitedStr;
+  if Provider > 0 then tmpProv := IntToStr(Provider) else tmpProv := '';
+  Result := 'CPT' + Result + U + IntToStr(Quantity) + U + tmpProv
+             + U + U + U + IntToStr(cnt) + Mods + U + IntToStr(UNxtCommSeqNum) + U;
+  if Length(Result) > 250 then SetPiece(Result, U, 4, '');
+end;
+
+(*function TPCEProc.delimitedStrC: string;
+begin
+  Result := inherited DelimitedStr;
+  Result := 'CPT' + Result + U + IntToStr(Quantity) + U + IntToStr(Provider) +
+  U + U + U + U + comment;
+end;
+*)
+
+function TPCEProc.Empty: boolean;
+begin
+  Result := (Code = '') and (Category = '') and (Narrative = '') and
+            (Comment = '') and (Quantity = 0) and (Provider = 0) and (Modifiers = '');
+end;
+
+(*function TPCEProc.Match(AnItem: TPCEProc): Boolean;        {NEW CODE - v20 testing only - RV}
+begin
+  Result := inherited Match(AnItem) and (Modifiers = AnItem.Modifiers);
+end;*)
+
+function TPCEProc.ModText: string;
+var
+  i: integer;
+  tmp: string;
+
+begin
+  Result := '';
+  if(Modifiers <> '') then
+  begin
+    i := 1;
+    repeat
+      tmp := Piece(Modifiers,';',i);
+      if(tmp <> '') then
+      begin
+        tmp := ModifierName(tmp);
+        Result := Result + ' - ' + tmp;
+      end;
+      inc(i);
+    until (tmp = '');
+  end;
+end;
+
+function TPCEProc.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if(Quantity > 1) then
+    Result := IntToStr(Quantity) + ' times'
+  else
+    Result := '';
+  Result := Result + U + inherited ItemStr + ModText;
+end;
+
+procedure TPCEProc.SetFromString(const x: string);
+var
+  i, cnt: integer;
+  Mods: string;
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Qty ^ Prov }
+begin
+  inherited SetFromString(x);
+  Quantity := StrToIntDef(Piece(x, U, pnumProcQty), 1);
+//  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Modifiers := '';
+  Mods := Piece(x, U, pnumCPTMods);
+  cnt := StrToIntDef(Piece(Mods, ';', 1), 0);
+  if(cnt > 0) then
+   for i := 1 to cnt do
+     Modifiers := Modifiers + Piece(Piece(Mods, ';' , i+1), '/', 2) + ';';
+end;
+
+
+{ TPCEPat methods ------------------------------------------------------------------------- }
+
+procedure TPCEPat.Assign(Src: TPCEItem);
+begin
+  inherited Assign(Src);
+  Level := TPCEPat(Src).Level;
+  if Level = '' then Level := NoPCEValue;
+end;
+
+procedure TPCEPat.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+//  Provider := 0;
+  Level    := NoPCEValue;
+end;
+
+//function TPCEPat.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+function TPCEPat.DelimitedStr: string;
+{created delimited string to pass to broker}
+begin
+  Result := inherited DelimitedStr;
+  //Result := 'PED' + Result + U + Level + U + IntToStr(Provider) + U + U + U +
+  Result := 'PED' + Result + U + Level + U+ U + U + U +
+   U + IntToStr(UNxtCommSeqNum); 
+end;
+
+(*function TPCEPat.delimitedStrC: string;
+begin
+  Result := inherited DelimitedStr;
+  Result := 'PED' + Result + U + Level + U + IntToStr(Provider) + U + U + U +
+   U + comment;
+end;
+*)
+function TPCEPat.HasCPTStr: string;
+begin
+  Result := Code + ';AUTTEDT(';
+end;
+
+function TPCEPat.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if(Level <> NoPCEValue) then
+    Result := GetPCECodeString(TAG_PEDLEVEL, Level)
+  else
+    Result := '';
+  Result := Result + U + inherited ItemStr;
+end;
+
+procedure TPCEPat.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Qty ^ Prov }
+begin
+  inherited SetFromString(x);
+//  Provider := StrToInt64Def(Piece(x, U, pnumProvider), 0);
+  Level    := Piece(x, U, pnumPEDLevel);
+  if level = '' then level := NoPCEValue;
+end;
+
+{ TPCEDiag methods ------------------------------------------------------------------------- }
+
+procedure TPCEDiag.Assign(Src: TPCEItem);
+begin
+  inherited Assign(Src);
+  Primary    := TPCEDiag(Src).Primary;
+  AddProb    := TPCEDiag(Src).AddProb;
+end;
+
+//procedure TPCEDiag.Clear;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Clear a diagnosis object.
+procedure TPCEDiag.Clear;
+{clear fields(properties) of class}
+begin
+  inherited Clear;
+  Primary := False;
+  //Provider := 0;
+  AddProb  := False;
+end;
+
+//function TPCEDiag.DelimitedStr: string;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Create delimited string to pass to Broker.
+function TPCEDiag.DelimitedStr: string;
+{created delimited string to pass to broker}
+var
+  ProviderStr: string; {jm 9/8/99}
+begin
+  Result := inherited DelimitedStr;
+  if(AddProb) then
+    ProviderStr := IntToStr(fProvider)
+  else
+    ProviderStr := '';
+  Result := 'POV' + Result + U + BOOLCHAR[Primary] + U + ProviderStr + U +
+    BOOLCHAR[AddProb] + U + U + U;
+  if(SaveComment) then Result := Result + IntToStr(UNxtCommSeqNum);
+  if Length(Result) > 250 then SetPiece(Result, U, 4, '');
+end;
+
+function TPCEDiag.DelimitedStr2: string;
+begin
+  If Comment = '' then
+  begin
+    SaveComment := (OldComment <> '') or (not AddProb);
+    if(SaveComment) then
+      result := 'COM' + U +  IntToStr(UNxtCommSeqNum) + U + NoPCEValue
+    else
+      result := '';
+  end
+  else
+  begin
+    Result := 'COM' + U +  IntToStr(UNxtCommSeqNum) + U + Comment;
+    SaveComment := TRUE;
+  end;
+  Inc(UNxtCommSeqNum);
+end;
+
+(*function TPCEDiag.DelimitedStrC: string;
+{created delimited string for internal use - keep comment in same string.}
+begin
+  Result := inherited DelimitedStr;
+  Result := 'POV' + Result + U + BOOLCHAR[Primary] + U + IntToStr(Provider)+
+  U + BOOLCHAR[AddProb] + U + U + U + comment;
+end;
+*)
+function TPCEDiag.ItemStr: string;
+{returns string to be assigned to Tlist in PCEData object}
+begin
+  if Primary then
+    Result := 'Primary'
+  else
+    Result := 'Secondary';
+// This may change in the future if we add a check box to the grid    
+  if(AddProb) then
+    Result := 'Add' + U + Result
+  else
+    Result := U + Result;
+
+  Result := Result + U + inherited ItemStr;
+end;
+
+procedure TPCEDiag.Send;
+//marks diagnosis to be sent;
+begin
+  Fsend := True;
+end;
+
+//procedure TPCEDiag.SetFromString(const x: string);
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Sets fields to pieces passed from server.
+procedure TPCEDiag.SetFromString(const x: string);
+{ sets fields to pieces passed from server:  TYP ^ Code ^ Category ^ Narrative ^ Primary ^ ^ ^ Comment }
+begin
+  inherited SetFromString(x);
+  OldComment := Comment;
+  Primary := (Piece(x, U, pnumDiagPrimary) = '1');
+  //Provider := StrToInt64Def(Piece(x, U, pnumProvider),0);
+  AddProb := (Piece(x, U, pnumDiagAdd2PL) = '1');
+end;
+
+{ TPCEData methods ------------------------------------------------------------------------- }
+
+constructor TPCEData.Create;
+begin
+  FDiagnoses   := TList.Create;
+  FProcedures  := TList.Create;
+  FImmunizations := TList.Create;
+  FSkinTests   := TList.Create;
+  FVisitType   := TPCEProc.Create;
+  FPatientEds  := TList.Create;
+  FHealthFactors := TList.Create;
+  fExams       := TList.Create;
+  FProviders := TPCEProviderList.Create;
+  FSCRelated   := SCC_NA;
+  FAORelated   := SCC_NA;
+  FIRRelated   := SCC_NA;
+  FECRelated   := SCC_NA;
+  FMSTRelated  := SCC_NA;
+  FHNCRelated  := SCC_NA;
+  FCVRelated   := SCC_NA;
+  FSHADRelated := SCC_NA;
+  FSCChanged   := False;
+end;
+
+destructor TPCEData.Destroy;
+var
+  i: Integer;
+begin
+  with FDiagnoses  do for i := 0 to Count - 1 do TPCEDiag(Items[i]).Free;
+  with FProcedures do for i := 0 to Count - 1 do TPCEProc(Items[i]).Free;
+  with FImmunizations do for i := 0 to Count - 1 do TPCEImm(Items[i]).Free;
+  with FSkinTests do for i := 0 to Count - 1 do TPCESkin(Items[i]).Free;
+  with FPatientEds do for i := 0 to Count - 1 do TPCEPat(Items[i]).Free;
+  with FHealthFactors do for i := 0 to Count - 1 do TPCEHealth(Items[i]).Free;
+  with FExams do for i := 0 to Count - 1 do TPCEExams(Items[i]).Free;
+  FVisitType.Free;
+  FDiagnoses.Free;
+  FProcedures.Free;
+  FImmunizations.Free;  
+  FSkinTests.free;      
+  FPatientEds.Free;
+  FHealthFactors.Free;
+  FExams.Free;
+  FProviders.Free;
+  inherited Destroy;
+end;
+
+procedure TPCEData.Clear;
+
+  procedure ClearList(AList: TList);
+  var
+    i: Integer;
+
+  begin
+    for i := 0 to AList.Count - 1 do
+      TObject(AList[i]).Free;
+    AList.Clear;
+  end;
+
+begin
+  FEncDateTime := 0;
+  FNoteDateTime := 0;
+  FEncLocation := 0;
+  FEncSvcCat   := 'A';
+  FEncInpatient := FALSE;
+  FEncUseCurr   := FALSE;
+  FStandAlone := FALSE;
+  FStandAloneLoaded := FALSE;
+  FParent       := '';
+  FHistoricalLocation := '';
+  FSCRelated  := SCC_NA;
+  FAORelated  := SCC_NA;
+  FIRRelated  := SCC_NA;
+  FECRelated  := SCC_NA;
+  FMSTRelated := SCC_NA;
+  FHNCRelated := SCC_NA;
+  FCVRelated  := SCC_NA;
+  FSHADRelated := SCC_NA;
+
+  ClearList(FDiagnoses);
+  ClearList(FProcedures);
+  ClearList(FImmunizations);
+  ClearList(FSkinTests);
+  ClearList(FPatientEds);
+  ClearList(FHealthFactors);
+  ClearList(FExams);
+
+  FVisitType.Clear;
+  FProviders.Clear;
+  FSCChanged   := False;
+  FNoteIEN := 0;
+  FNoteTitle := 0;
+end;
+
+procedure TPCEData.CopyDiagnoses(Dest: TStrings);
+begin
+  CopyPCEItems(FDiagnoses, Dest, TPCEDiag);
+end;
+
+procedure TPCEData.CopyProcedures(Dest: TStrings);
+begin
+  CopyPCEItems(FProcedures, Dest, TPCEProc);
+end;
+
+procedure TPCEData.CopyImmunizations(Dest: TStrings);
+begin
+  CopyPCEItems(FImmunizations, Dest, TPCEImm);
+end;
+
+procedure TPCEData.CopySkinTests(Dest: TStrings);
+begin
+  CopyPCEItems(FSkinTests, Dest, TPCESkin);
+end;
+
+procedure TPCEData.CopyPatientEds(Dest: TStrings);
+begin
+  CopyPCEItems(FPatientEds, Dest, TPCEPat);
+end;
+
+procedure TPCEData.CopyHealthFactors(Dest: TStrings);
+begin
+  CopyPCEItems(FHealthFactors, Dest, TPCEHealth);
+end;
+
+procedure TPCEData.CopyExams(Dest: TStrings);
+begin
+  CopyPCEItems(FExams, Dest, TPCEExams);
+end;
+
+function TPCEData.GetVisitString: string;
+begin
+  Result :=  IntToStr(FEncLocation) + ';' + FloatToStr(VisitDateTime) + ';' + FEncSvcCat;
+end;
+
+function TPCEData.GetCPTRequired: Boolean;
+begin
+  Result := (([ndDiag, ndProc] * NeededPCEData) <> []);
+end;
+
+procedure TPCEData.PCEForNote(NoteIEN: Integer; EditObj: TPCEData);
+(*const
+  NULL_STR = '';
+begin
+  PCEForNote(NoteIEN, EditObj, NULL_STR);
+end;
+
+procedure TPCEData.PCEForNote(NoteIEN: Integer; EditObj: TPCEData; DCSummAdmitString: string);*)
+var
+  i, j: Integer;
+  TmpCat, TmpVStr: string;
+  x: string;
+  DoCopy, IsVisit: Boolean;
+  PCEList, VisitTypeList: TStringList;
+  ADiagnosis:    TPCEDiag;
+  AProcedure:    TPCEProc;
+  AImmunization: TPCEImm;
+  ASkinTest:     TPCESkin;
+  APatientEd:    TPCEPat;
+  AHealthFactor: TPCEHealth;
+  AExam:         TPCEExams;
+  FileVStr: string;
+  FileIEN: integer;
+  GetCat, DoRestore: boolean;
+  FRestDate: TFMDateTime;
+//  AProvider:     TPCEProvider;  {6/9/99}
+
+  function SCCValue(x: string): Integer;
+  begin
+    Result := SCC_NA;
+    if Piece(x, U, 3) = '1' then Result := SCC_YES;
+    if Piece(x, U, 3) = '0' then Result := SCC_NO;
+  end;
+
+  function AppendComment(x: string): String;
+  begin
+    //check for comment append string if a comment exists   
+    If (((i+1) <= (PCEList.Count - 1)) and (Copy(PCEList[(i+1)], 1, 3) = 'COM')) then
+    begin
+      //remove last piece (comment sequence number) from x.
+      While x[length(x)] <> U do
+        x := Copy(X,0,(length(x)-1));
+      //add last piece of comment to x
+      x := X + Piece (PCEList[(i+1)],U,3);
+    end;
+    result := x;
+  end;
+
+begin
+(*  if DCSummAdmitString <> '' then
+    TmpVStr := DCSummAdmitString
+  else*) if(NoteIEN < 1) then
+    TmpVStr := Encounter.VisitStr
+  else
+  begin
+    TmpVStr := VisitStrForNote(NoteIEN);
+    if(FEncSvcCat = #0) then
+      GetCat :=TRUE
+    else
+    if(GetVisitString = '0;0;A') then
+    begin
+      FEncLocation := StrToIntDef(Piece(TmpVStr, ';', 1), 0);
+      FEncDateTime := StrToFloatDef(Piece(TmpVStr, ';', 2),0);
+      GetCat :=TRUE
+    end
+    else
+      GetCat := FALSE;
+    if(GetCat) then
+    begin
+      TmpCat := Piece(TmpVStr, ';', 3);
+      if(TmpCat <> '') then
+        FEncSvcCat := TmpCat[1];
+    end;
+  end;
+
+  if(assigned(EditObj)) then
+  begin
+    if(copy(TmpVStr,1,2) <> '0;') and   // has location
+      (pos(';0;',TmpVStr) = 0) and     // has time
+      (EditObj.GetVisitString = TmpVStr) then
+    begin
+      if(FEncSvcCat = 'H') and (FEncInpatient) then
+        DoCopy := (FNoteDateTime = EditObj.FNoteDateTime)
+      else
+        DoCopy := TRUE;
+      if(DoCopy) then
+      begin
+        if(EditObj <> Self) then
+        begin
+          EditObj.CopyPCEData(Self);
+          FNoteTitle := 0;
+          FNoteIEN := 0;
+        end;
+        exit;
+      end;
+    end;
+  end;
+
+  TmpCat := Piece(TmpVStr, ';', 3);
+  if(TmpCat <> '') then
+    FEncSvcCat := TmpCat[1]
+  else
+    FEncSvcCat := #0;
+  FEncLocation := StrToIntDef(Piece(TmpVStr,';',1),0);
+  FEncDateTime := StrToFloatDef(Piece(TmpVStr, ';', 2),0);
+
+  if(IsSecondaryVisit and (FEncLocation > 0)) then
+  begin
+    FileIEN := USE_CURRENT_VISITSTR;
+    FileVStr := IntToStr(FEncLocation) + ';' + FloatToStr(FNoteDateTime) + ';' +
+                                               GetLocSecondaryVisitCode(FEncLocation);
+    DoRestore := TRUE;
+    FRestDate := FEncDateTime;
+  end
+  else
+  begin
+    DoRestore := FALSE;
+    FRestDate := 0; 
+    FileIEN := NoteIEN;
+(*    if DCSummAdmitString <> '' then
+      FileVStr := DCSummAdmitString
+    else*) if(FileIEN < 0) then
+      FileVStr := Encounter.VisitStr
+    else
+      FileVStr := '';
+  end;
+
+  Clear;
+  PCEList       := TStringList.Create;
+  VisitTypeList := TStringList.Create;
+  try
+    LoadPCEDataForNote(PCEList, FileIEN, FileVStr);        // calls broker RPC to load data
+    FNoteIEN := NoteIEN;
+    for i := 0 to PCEList.Count - 1 do
+    begin
+      x := PCEList[i];
+      if Copy(x, 1, 4) = 'HDR^' then             // HDR ^ Inpatient ^ ProcReq ^ VStr ^ Provider
+      {header information-------------------------------------------------------------}
+      begin
+        FEncInpatient := Piece(x, U, 2) = '1';
+        //FCPTRequired  := Piece(x, U, 3) = '1';  
+        //FNoteHasCPT   := Piece(x, U, 6) = '1';    //4/21/99 error! PIECE 3 = cptRequired, not HasCPT!
+        FEncLocation  := StrToIntDef(Piece(Piece(x, U, 4), ';', 1), 0);
+        if DoRestore then
+        begin
+          FEncSvcCat := 'H';
+          FEncDateTime := FRestDate;
+          FNoteDateTime := MakeFMDateTime(Piece(Piece(x, U, 4), ';', 2));
+        end
+        else
+        begin
+          FEncDateTime  := MakeFMDateTime(Piece(Piece(x, U, 4), ';', 2));
+          FEncSvcCat    := CharAt(Piece(Piece(x, U, 4), ';', 3), 1);
+        end;
+        //FEncProvider  := StrToInt64Def(Piece(x, U, 5), 0);
+        ListVisitTypeByLoc(VisitTypeList, FEncLocation, FEncDateTime);
+        //set the values needed fot the RPCs
+        SetRPCEncLocation(FEncLocation);
+//        SetRPCEncDateTime(FEncDateTime);
+      end;
+      {visit information--------------------------------------------------------------}
+      if Copy(x, 1, 7) = 'VST^DT^' then
+      begin
+        if DoRestore then
+        begin
+          FEncDateTime := FRestDate;
+          FNoteDateTime := MakeFMDateTime(Piece(x, U, 3));
+        end
+        else
+          FEncDateTime := MakeFMDateTime(Piece(x, U, 3));
+      end;
+      if Copy(x, 1, 7) = 'VST^HL^' then FEncLocation := StrToIntDef(Piece(x, U, 3), 0);
+      if Copy(x, 1, 7) = 'VST^VC^' then
+      begin
+        if DoRestore then
+          FEncSvcCat := 'H'
+        else
+          FEncSvcCat := CharAt(x, 8);
+      end;
+      if Copy(x, 1, 7) = 'VST^PS^' then FEncInpatient := CharAt(x, 8) = '1';
+      {6/10/99}//if Copy(x, 1, 4) = 'PRV^'    then FEncProvider := StrToInt64Def(Piece(x, U, 2), 0);
+      if Copy(x, 1, 7) = 'VST^SC^'  then FSCRelated := SCCValue(x);
+      if Copy(x, 1, 7) = 'VST^AO^'  then FAORelated := SCCValue(x);
+      if Copy(x, 1, 7) = 'VST^IR^'  then FIRRelated := SCCValue(x);
+      if Copy(x, 1, 7) = 'VST^EC^'  then FECRelated := SCCValue(x);
+      if Copy(x, 1, 8) = 'VST^MST^' then FMSTRelated := SCCValue(x);
+//      if HNCOK and (Copy(x, 1, 8) = 'VST^HNC^') then
+      if Copy(x, 1, 8) = 'VST^HNC^' then FHNCRelated := SCCValue(x);
+      if Copy(x, 1, 7) = 'VST^CV^' then FCVRelated := SCCValue(x);
+      if (Copy(x, 1, 3) = 'PRV') and (CharAt(x, 4) <> '-') then
+      {Providers---------------------------------------------------------------------}
+      begin
+        FProviders.Add(x);
+      end;
+
+      if (Copy(x, 1, 3) = 'POV') and (CharAt(x, 4) <> '-') then
+      {'POV'=Diagnosis--------------------------------------------------------------}
+      begin
+        //check for comment append string if a comment exists   
+        x := AppendComment(x);                         
+        ADiagnosis := TPCEDiag.Create;
+        ADiagnosis.SetFromString(x);
+        FDiagnoses.Add(ADiagnosis);
+      end;
+      if (Copy(x, 1, 3) = 'CPT') and (CharAt(x, 4) <> '-') then
+      {CPT (procedure) information--------------------------------------------------}
+      begin
+        x := AppendComment(x);                         
+
+        IsVisit := False;
+        with VisitTypeList do for j := 0 to Count - 1 do
+          if Pieces(x, U, 2, 4) = Strings[j] then IsVisit := True;
+        if IsVisit and (FVisitType.Code = '') then FVisitType.SetFromString(x) else
+        begin
+          AProcedure := TPCEProc.Create;
+          AProcedure.SetFromString(x);
+          AProcedure.fIsOldProcedure := TRUE;
+          FProcedures.Add(AProcedure);
+        end; {if IsVisit}
+      end; {if Copy}
+      if (Copy(x, 1, 3) = 'IMM') and (CharAt(x, 4) <> '-') then
+      {Immunizations ---------------------------------------------------------------}
+      begin
+        x := AppendComment(x);                         
+        AImmunization := TPCEImm.Create;
+        AImmunization.SetFromString(x);
+        FImmunizations.Add(AImmunization);
+      end;
+      if (Copy(x, 1, 2) = 'SK') and (CharAt(x, 3) <> '-') then
+      {Skin Tests-------------------------------------------------------------------}
+      begin
+        x := AppendComment(x);                         
+        ASkinTest := TPCESkin.Create;
+        ASkinTest.SetFromString(x);
+        FSkinTests.Add(ASkinTest);
+      end;
+      if (Copy(x, 1, 3) = 'PED') and (CharAt(x, 3) <> '-') then
+      {Patient Educations------------------------------------------------------------}
+      begin
+        x := AppendComment(x);                         
+        APatientEd := TPCEpat.Create;
+        APatientEd.SetFromString(x);
+        FpatientEds.Add(APatientEd);
+      end;
+      if (Copy(x, 1, 2) = 'HF') and (CharAt(x, 3) <> '-') then
+      {Health Factors----------------------------------------------------------------}
+      begin
+        x := AppendComment(x);                         
+        AHealthFactor := TPCEHealth.Create;
+        AHealthFactor.SetFromString(x);
+        FHealthFactors.Add(AHealthFactor);
+      end;
+      if (Copy(x, 1, 3) = 'XAM') and (CharAt(x, 3) <> '-') then
+      {Exams ------------------------------------------------------------------------}
+      begin
+        x := AppendComment(x);
+        AExam := TPCEExams.Create;
+        AExam.SetFromString(x);
+        FExams.Add(AExam);
+      end;
+
+    end;
+  finally
+    PCEList.Free;
+    VisitTypeList.Free;
+  end;
+end;
+
+//procedure TPCEData.Save;
+//modified: 6/17/98
+//By: Robert Bott
+//Location: ISL
+//Purpose: Add Comments to PCE Items.
+procedure TPCEData.Save;
+{ pass the changes to the encounter to DATA2PCE,
+  Pieces: Subscript^Code^Qualifier^Category^Narrative^Delete }
+var
+  i: Integer;
+  x, AVisitStr, EncName, Temp2: string;
+  PCEList: TStringList;
+  FileCat: char;
+  FileDate: TFMDateTime;
+  FileNoteIEN: integer;
+  dstring1,dstring2: pchar; //used to separate former DelimitedStr variable
+                             // into two strings, the second being for the comment.
+
+begin
+  PCEList := TStringList.Create;
+  UNxtCommSeqNum := 1;                                 
+  try
+    with PCEList do
+    begin
+      if(IsSecondaryVisit) then
+      begin
+        FileCat := GetLocSecondaryVisitCode(FEncLocation);
+        FileDate := FNoteDateTime;
+        FileNoteIEN := NoteIEN;
+        if((NoteIEN > 0) and ((FParent = '') or (FParent = '0'))) then
+          FParent := GetVisitIEN(NoteIEN);
+      end
+      else
+      begin
+        FileCat := FEncSvcCat;
+        FileDate := FEncDateTime;
+        FileNoteIEN := 0;
+      end;
+      AVisitStr :=  IntToStr(FEncLocation) + ';' + FloatToStr(FileDate) + ';' + FileCat;
+      Add('HDR^' + BOOLCHAR[FEncInpatient] + U + U + AVisitStr);
+//      Add('HDR^' + BOOLCHAR[FEncInpatient] + U + BOOLCHAR[FNoteHasCPT] + U + AVisitStr);
+      // set up list that can be passed via broker to set up array for DATA2PCE
+      Add('VST^DT^' + FloatToStr(FileDate));  // Encounter Date/Time
+      Add('VST^PT^' + Patient.DFN);               // Encounter Patient    //*DFN*
+      if(FEncLocation > 0) then
+        Add('VST^HL^' + IntToStr(FEncLocation));    // Encounter Location
+      Add('VST^VC^' + FileCat);                // Encounter Service Category
+      if(StrToIntDef(FParent,0) > 0) then
+        Add('VST^PR^' + FParent);                 // Parent for secondary visit
+      if(FileCat = 'E') and (FHistoricalLocation <> '') then
+        Add('VST^OL^' + FHistoricalLocation);     // Outside Location
+      FastAddStrings(FProviders, PCEList);
+
+      if FSCChanged then
+      begin
+        if FSCRelated  <> SCC_NA then  Add('VST^SC^'  + IntToStr(FSCRelated));
+        if FAORelated  <> SCC_NA then  Add('VST^AO^'  + IntToStr(FAORelated));
+        if FIRRelated  <> SCC_NA then  Add('VST^IR^'  + IntToStr(FIRRelated));
+        if FECRelated  <> SCC_NA then  Add('VST^EC^'  + IntToStr(FECRelated));
+        if FMSTRelated <> SCC_NA then  Add('VST^MST^' + IntToStr(FMSTRelated));
+        if FHNCRelated  <> SCC_NA then Add('VST^HNC^'+ IntToStr(FHNCRelated));
+        if FCVRelated   <> SCC_NA then Add('VST^CV^' + IntToStr(FCVRelated));
+        if FSHADRelated <> SCC_NA then Add('VST^SHD^'+ IntToStr(FSHADRelated));
+      end;
+     with FDiagnoses  do for i := 0 to Count - 1 do with TPCEDiag(Items[i]) do
+        if FSend then
+        begin
+          Temp2 := DelimitedStr2; // Call first to make sure SaveComment is set.
+          if(SaveComment) then
+            dec(UNxtCommSeqNum);
+          fProvider := FProviders.PCEProvider;
+          // Provides user with list of dx when signing orders - Billing Aware
+          PCEList.Add(DelimitedStr);
+          if(SaveComment) then
+          begin
+            inc(UNxtCommSeqNum);
+            if(Temp2 <> '') then
+              PCEList.Add(Temp2);
+          end;
+      end;
+      with FProcedures do for i := 0 to Count - 1 do with TPCEProc(Items[i]) do
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+      with FImmunizations do for i := 0 to Count - 1 do with TPCEImm(Items[i]) do
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+      with FSkinTests do for i := 0 to Count - 1 do with TPCESkin(Items[i]) do
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+      with FPatientEds do for i := 0 to Count - 1 do with TPCEPat(Items[i]) do
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+      with FHealthFactors do for i := 0 to Count - 1 do with TPCEHealth(Items[i]) do
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+      with FExams do for i := 0 to Count - 1 do with TPCEExams(Items[i]) do
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+
+      with FVisitType  do
+      begin
+        if Code = '' then Fsend := false;
+        if FSend then
+        begin
+          PCEList.Add(DelimitedStr);
+          PCEList.Add(DelimitedStr2);
+        end;
+      end;
+      // call DATA2PCE (in background)
+      SavePCEData(PCEList, FileNoteIEN, FEncLocation);
+
+      // turn off 'Send' flags and remove items that were deleted
+      with FDiagnoses  do for i := Count - 1 downto 0 do with TPCEDiag(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCEDiag(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      with FProcedures do for i := Count - 1 downto 0 do with TPCEProc(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCEProc(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      with FImmunizations do for i := Count - 1 downto 0 do with TPCEImm(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCEImm(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      with FSkinTests do for i := Count - 1 downto 0 do with TPCESkin(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCESkin(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      with FPatientEds do for i := Count - 1 downto 0 do with TPCEPat(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCEPat(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      with FHealthFactors do for i := Count - 1 downto 0 do with TPCEHealth(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCEHealth(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      with FExams do for i := Count - 1 downto 0 do with TPCEExams(Items[i]) do
+      begin
+        FSend := False;
+        if FDelete then
+        begin
+          TPCEExams(Items[i]).Free;
+          Delete(i);
+        end;
+      end;
+      
+      for i := FProviders.Count - 1 downto 0 do
+      begin
+        if(FProviders.ProviderData[i].Delete) then
+          FProviders.Delete(i);
+      end;
+
+      if FVisitType.FDelete then FVisitType.Clear else FVisitType.FSend := False;
+    end; {with PCEList}
+    //if (FProcedures.Count > 0) or (FVisitType.Code <> '') then FCPTRequired := False;  
+
+    // update the Changes object
+    EncName := FormatFMDateTime('mmm dd,yy hh:nn', FileDate);
+    x := StrVisitType;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'V' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrProcedures;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'P' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrDiagnoses;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'D' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrImmunizations;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'I' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrSkinTests;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'S' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrPatientEds;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'A' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrHealthFactors;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'H' + AVisitStr, x, EncName, CH_SIGN_NA);
+    x := StrExams;
+    if Length(x) > 0 then Changes.Add(CH_PCE, 'E' + AVisitStr, x, EncName, CH_SIGN_NA);
+
+
+  finally
+    PCEList.Free;
+  end;
+end;
+
+function TPCEData.MatchItem(AList: TList; AnItem: TPCEItem): Integer;
+{ return index in AList of matching item }
+var
+  i: Integer;
+begin
+  Result := -1;
+  with AList do for i := 0 to Count - 1 do with TPCEItem(Items[i]) do if Match(AnItem) and MatchProvider(AnItem)then
+  begin
+    Result := i;
+    break;
+  end;
+end;
+
+procedure TPCEData.MarkDeletions(PreList: TList; PostList: TStrings);
+{mark items that need deleted}
+var
+  i, j: Integer;
+  MatchFound: Boolean;
+  PreItem, PostItem: TPCEItem;
+begin
+  with PreList do for i := 0 to Count - 1 do
+  begin
+    PreItem := TPCEItem(Items[i]);
+    MatchFound := False;
+    with PostList do for j := 0 to Count - 1 do
+    begin
+      PostItem := TPCEItem(Objects[j]);
+      if (PreItem.Match(PostItem) and (PreItem.MatchProvider(PostItem))) then MatchFound := True;
+    end;
+    if not MatchFound then
+    begin
+      PreItem.FDelete := True;
+      PreItem.FSend   := True;
+    end;
+  end;
+end;
+
+procedure TPCEData.SetDiagnoses(Src: TStrings; FromForm: boolean = TRUE);
+{ load diagnoses for this encounter into TPCEDiag records, assumes all diagnoses for the
+  encounter will be listed in Src and marks those that are not in Src for deletion }
+var
+  i, MatchIndex: Integer;
+  SrcDiagnosis, CurDiagnosis, PrimaryDiag: TPCEDiag;
+begin
+  if FromForm then MarkDeletions(FDiagnoses, Src);
+  PrimaryDiag := nil;
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcDiagnosis := TPCEDiag(Src.Objects[i]);
+    MatchIndex := MatchItem(FDiagnoses, SrcDiagnosis);
+    if MatchIndex > -1 then    //found in fdiagnoses
+    begin
+      CurDiagnosis := TPCEDiag(FDiagnoses.Items[MatchIndex]);
+      if ((SrcDiagnosis.Primary <> CurDiagnosis.Primary) or
+       (SrcDiagnosis.Comment <> CurDiagnosis.Comment) or
+       (SrcDiagnosis.AddProb <> CurDiagnosis.Addprob)) then
+      begin
+        CurDiagnosis.Primary    := SrcDiagnosis.Primary;
+        CurDiagnosis.Comment    := SrcDiagnosis.Comment;
+        CurDiagnosis.AddProb    := SrcDiagnosis.AddProb;
+        CurDiagnosis.FSend := True;
+      end;
+    end else
+    begin
+      CurDiagnosis := TPCEDiag.Create;
+      CurDiagnosis.Assign(SrcDiagnosis);
+      CurDiagnosis.FSend := True;
+      FDiagnoses.Add(CurDiagnosis);
+    end; {if MatchIndex}
+    if(CurDiagnosis.Primary and (not assigned(PrimaryDiag))) then
+      PrimaryDiag := CurDiagnosis;
+  end; {for}
+  if(assigned(PrimaryDiag)) then
+  begin
+    for i := 0 to FDiagnoses.Count - 1 do
+    begin
+      CurDiagnosis := TPCEDiag(FDiagnoses[i]);
+      if(CurDiagnosis.Primary) and (CurDiagnosis <> PrimaryDiag) then
+      begin
+        CurDiagnosis.Primary := FALSE;
+        CurDiagnosis.FSend := True;
+      end;
+    end;
+  end;
+end;
+
+procedure TPCEData.SetProcedures(Src: TStrings; FromForm: boolean = TRUE);
+{ load Procedures for this encounter into TPCEProc records, assumes all Procedures for the
+  encounter will be listed in Src and marks those that are not in Src for deletion }
+var
+  i, MatchIndex: Integer;
+  SrcProcedure, CurProcedure, OldProcedure: TPCEProc;
+begin
+  if FromForm then MarkDeletions(FProcedures, Src);
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcProcedure := TPCEProc(Src.Objects[i]);
+    MatchIndex := MatchItem(FProcedures, SrcProcedure);
+    if MatchIndex > -1 then
+    begin
+      CurProcedure := TPCEProc(FProcedures.Items[MatchIndex]);
+(*      if (SrcProcedure.Provider <> CurProcedure.Provider) then
+      begin
+        OldProcedure := TPCEProc.Create;
+        OldProcedure.Assign(CurProcedure);
+        OldProcedure.FDelete := TRUE;
+        OldProcedure.FSend := TRUE;
+        FProcedures.Add(OldProcedure);
+      end;*)
+      if (SrcProcedure.Quantity <> CurProcedure.Quantity) or
+         (SrcProcedure.Provider <> CurProcedure.Provider) or
+         (Curprocedure.Comment <> SrcProcedure.Comment) or
+         (Curprocedure.Modifiers <> SrcProcedure.Modifiers)then
+      begin
+        OldProcedure := TPCEProc.Create;
+        OldProcedure.Assign(CurProcedure);
+        OldProcedure.FDelete := TRUE;
+        OldProcedure.FSend := TRUE;
+        FProcedures.Add(OldProcedure);
+        CurProcedure.Quantity := SrcProcedure.Quantity;
+        CurProcedure.Provider := SrcProcedure.Provider;
+        CurProcedure.Comment := SrcProcedure.Comment;
+        CurProcedure.Modifiers := SrcProcedure.Modifiers;
+        CurProcedure.FSend := True;
+      end;
+    end else
+    begin
+      CurProcedure := TPCEProc.Create;
+      CurProcedure.Assign(SrcProcedure);
+      CurProcedure.FSend := True;
+      FProcedures.Add(CurProcedure);
+    end; {if MatchIndex}
+  end; {for}
+end;
+
+
+
+procedure TPCEData.SetImmunizations(Src: TStrings; FromForm: boolean = TRUE);
+{ load Immunizations for this encounter into TPCEImm records, assumes all Immunizations for the
+  encounter will be listed in Src and marks those that are not in Src for deletion }
+var
+  i, MatchIndex: Integer;
+  SrcImmunization, CurImmunization: TPCEImm;
+begin
+  if FromForm then MarkDeletions(FImmunizations, Src);
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcImmunization := TPCEImm(Src.Objects[i]);
+    MatchIndex := MatchItem(FImmunizations, SrcImmunization);
+    if MatchIndex > -1 then
+    begin
+      CurImmunization := TPCEImm(FImmunizations.Items[MatchIndex]);
+
+      //set null strings to NoPCEValue
+      if SrcImmunization.Series = '' then SrcImmunization.Series := NoPCEValue;
+      if SrcImmunization.Reaction = '' then SrcImmunization.Reaction := NoPCEValue;
+      if CurImmunization.Series = '' then CurImmunization.Series := NoPCEValue;
+      if CurImmunization.Reaction = '' then CurImmunization.Reaction := NoPCEValue;
+
+      if(SrcImmunization.Series <> CurImmunization.Series) or
+        (SrcImmunization.Reaction <> CurImmunization.Reaction) or
+        (SrcImmunization.Refused <> CurImmunization.Refused) or
+        (SrcImmunization.Contraindicated <> CurImmunization.Contraindicated) or
+        (CurImmunization.Comment <> SrcImmunization.Comment)then  
+      begin
+        CurImmunization.Series          := SrcImmunization.Series;
+        CurImmunization.Reaction        := SrcImmunization.Reaction;
+        CurImmunization.Refused         := SrcImmunization.Refused;
+        CurImmunization.Contraindicated := SrcImmunization.Contraindicated;
+        CurImmunization.Comment         := SrcImmunization.Comment;  
+        CurImmunization.FSend := True;
+      end;
+    end else
+    begin
+      CurImmunization := TPCEImm.Create;
+      CurImmunization.Assign(SrcImmunization);
+      CurImmunization.FSend := True;
+      FImmunizations.Add(CurImmunization);
+    end; {if MatchIndex}
+  end; {for}
+end;
+
+procedure TPCEData.SetSkinTests(Src: TStrings; FromForm: boolean = TRUE);
+{ load SkinTests for this encounter into TPCESkin records, assumes all SkinTests for the
+  encounter will be listed in Src and marks those that are not in Src for deletion }
+var
+  i, MatchIndex: Integer;
+  SrcSkinTest, CurSkinTest: TPCESkin;
+begin
+  if FromForm then MarkDeletions(FSKinTests, Src);
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcSkinTest := TPCESkin(Src.Objects[i]);
+    MatchIndex := MatchItem(FSKinTests, SrcSkinTest);
+    if MatchIndex > -1 then
+    begin
+      CurSkinTest := TPCESKin(FSkinTests.Items[MatchIndex]);
+      if CurSkinTest.Results = '' then CurSkinTest.Results := NoPCEValue;
+      if SrcSkinTest.Results = '' then SrcSkinTest.Results := NoPCEValue;
+
+      if(SrcSkinTest.Results <> CurSkinTest.Results) or
+        (SrcSkinTest.Reading <> CurSkinTest.Reading) or
+        (CurSkinTest.Comment <> SrcSkinTest.Comment) then
+      begin
+
+        CurSkinTest.Results := SrcSkinTest.Results;
+        CurSkinTest.Reading := SrcSkinTest.Reading;
+        CurSkinTest.Comment := SrcSkinTest.Comment;
+        CurSkinTest.FSend := True;
+      end;
+    end else
+    begin
+      CurSKinTest := TPCESkin.Create;
+      CurSkinTest.Assign(SrcSkinTest);
+      CurSkinTest.FSend := True;
+      FSkinTests.Add(CurSkinTest);
+    end; {if MatchIndex}
+  end; {for}
+end;
+
+procedure TPCEData.SetPatientEds(Src: TStrings; FromForm: boolean = TRUE);
+var
+  i, MatchIndex: Integer;
+  SrcPatientEd, CurPatientEd: TPCEPat;
+begin
+  if FromForm then MarkDeletions(FPatientEds, Src);
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcPatientEd := TPCEPat(Src.Objects[i]);
+    MatchIndex := MatchItem(FPatientEds, SrcPatientEd);
+    if MatchIndex > -1 then
+    begin
+      CurPatientEd := TPCEPat(FPatientEds.Items[MatchIndex]);
+
+      if CurPatientEd.level = '' then CurPatientEd.level := NoPCEValue;
+      if SrcPatientEd.level = '' then SrcPatientEd.level := NoPCEValue;
+      if(SrcPatientEd.Level <> CurPatientEd.Level) or
+        (CurPatientEd.Comment <> SrcPatientEd.Comment) then
+      begin
+        CurPatientEd.Level  := SrcPatientEd.Level;
+        CurPatientEd.Comment := SrcPatientEd.Comment;  
+        CurPatientEd.FSend := True;
+      end;
+    end else
+    begin
+      CurPatientEd := TPCEPat.Create;
+      CurPatientEd.Assign(SrcPatientEd);
+      CurPatientEd.FSend := True;
+      FPatientEds.Add(CurPatientEd);
+    end; {if MatchIndex}
+  end; {for}
+end;
+
+
+procedure TPCEData.SetHealthFactors(Src: TStrings; FromForm: boolean = TRUE);
+
+var
+  i, MatchIndex: Integer;
+  SrcHealthFactor, CurHealthFactor: TPCEHealth;
+begin
+  if FromForm then MarkDeletions(FHealthFactors, Src);
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcHealthFactor := TPCEHealth(Src.Objects[i]);
+    MatchIndex := MatchItem(FHealthFactors, SrcHealthFactor);
+    if MatchIndex > -1 then
+    begin
+      CurHealthFactor := TPCEHealth(FHealthFactors.Items[MatchIndex]);
+
+      if CurHealthFactor.level = '' then CurHealthFactor.level := NoPCEValue;
+      if SrcHealthFactor.level = '' then SrcHealthFactor.level := NoPCEValue;
+      if(SrcHealthFactor.Level <> CurHealthFactor.Level) or
+        (CurHealthFactor.Comment <> SrcHealthFactor.Comment) then  
+      begin
+        CurHealthFactor.Level  := SrcHealthFactor.Level;
+        CurHealthFactor.Comment := SrcHealthFactor.Comment;  
+        CurHealthFactor.FSend := True;
+      end;
+       if(SrcHealthFactor.GecRem <> CurHealthFactor.GecRem) then
+          CurHealthFactor.GecRem := SrcHealthFactor.GecRem;
+    end else
+    begin
+      CurHealthFactor := TPCEHealth.Create;
+      CurHealthFactor.Assign(SrcHealthFactor);
+      CurHealthFactor.FSend := True;
+      CurHealthFactor.GecRem := SrcHealthFactor.GecRem;
+      FHealthFactors.Add(CurHealthFactor);
+    end; {if MatchIndex}
+  end; {for}
+end;
+
+
+procedure TPCEData.SetExams(Src: TStrings; FromForm: boolean = TRUE);
+
+var
+  i, MatchIndex: Integer;
+  SrcExam, CurExam: TPCEExams;
+begin
+  if FromForm then MarkDeletions(FExams, Src);
+  for i := 0 to Src.Count - 1 do
+  begin
+    SrcExam := TPCEExams(Src.Objects[i]);
+    MatchIndex := MatchItem(FExams, SrcExam);
+    if MatchIndex > -1 then
+    begin
+      CurExam := TPCEExams(FExams.Items[MatchIndex]);
+      if CurExam.Results = '' then CurExam.Results := NoPCEValue;
+      if SrcExam.Results = '' then SrcExam.Results := NoPCEValue;
+      if(SrcExam.Results <> CurExam.Results) or
+        (CurExam.Comment <> SrcExam.Comment) then  
+      begin
+        CurExam.Results  := SrcExam.Results;
+        CurExam.Comment := SrcExam.Comment;  
+        CurExam.Fsend := True;
+      end;
+    end else
+    begin
+      CurExam := TPCEExams.Create;
+      CurExam.Assign(SrcExam);
+      CurExam.FSend := True;
+      FExams.Add(CurExam);
+    end; {if MatchIndex}
+  end; {for}
+end;
+
+
+procedure TPCEData.SetVisitType(Value: TPCEProc);
+var
+  VisitDelete: TPCEProc;
+begin
+  if (not FVisitType.Match(Value)) or
+  (FVisitType.Modifiers <> Value.Modifiers) then  {causes CPT delete/re-add}
+  begin
+    if FVisitType.Code <> '' then                // add old visit to procedures for deletion
+    begin
+      VisitDelete := TPCEProc.Create;
+      VisitDelete.Assign(FVisitType);
+      VisitDelete.FDelete := True;
+      VisitDelete.FSend   := True;
+      FProcedures.Add(VisitDelete);
+    end;
+    FVisitType.Assign(Value);
+    FVisitType.Quantity := 1;
+    FVisitType.FSend := True;
+  end;
+end;
+
+procedure TPCEData.SetSCRelated(Value: Integer);
+begin
+  if Value <> FSCRelated then
+  begin
+    FSCRelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetAORelated(Value: Integer);
+begin
+  if Value <> FAORelated then
+  begin
+    FAORelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetIRRelated(Value: Integer);
+begin
+  if Value <> FIRRelated then
+  begin
+    FIRRelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetECRelated(Value: Integer);
+begin
+  if Value <> FECRelated then
+  begin
+    FECRelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetMSTRelated(Value: Integer);
+begin
+  if Value <> FMSTRelated then
+  begin
+    FMSTRelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetHNCRelated(Value: Integer);
+begin
+//  if HNCOK and (Value <> FHNCRelated) then
+  if Value <> FHNCRelated then
+  begin
+    FHNCRelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetCVRelated(Value: Integer);
+begin
+  if (Value <> FCVRelated) then
+  begin
+    FCVRelated := Value;
+    FSCChanged := True;
+  end;
+end;
+
+procedure TPCEData.SetSHADRelated(Value: Integer);
+begin
+  if (Value <> FSHADRelated) then
+  begin
+    FSHADRelated := Value;
+    FSCChanged   := True;
+  end;
+end;
+
+procedure TPCEData.SetEncUseCurr(Value: Boolean);
+begin
+  FEncUseCurr := Value;
+  if FEncUseCurr then
+  begin
+    FEncDateTime  := Encounter.DateTime;
+    FEncLocation  := Encounter.Location;
+    //need to add to full list of providers
+    FEncSvcCat    := Encounter.VisitCategory;
+    FStandAlone   := Encounter.StandAlone;
+    FStandAloneLoaded := TRUE;
+    FEncInpatient := Encounter.Inpatient;
+
+  end else
+  begin
+    FEncDateTime  := 0;
+    FEncLocation  := 0;
+    FStandAlone := FALSE;
+    FStandAloneLoaded := FALSE;
+    FProviders.PrimaryIdx := -1;
+    FEncSvcCat    := 'A';
+    FEncInpatient := False;
+  end;
+  //
+  SetRPCEncLocation(FEncLocation);
+end;
+
+function TPCEData.StrDiagnoses: string;
+{ returns the list of diagnoses for this encounter as a single comma delimited string }
+var
+  i: Integer;
+begin
+  Result := '';
+  with FDiagnoses do for i := 0 to Count - 1 do with TPCEDiag(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcDiag, Code, Category, Narrative, Primary) + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcDiag] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+function TPCEData.StrProcedures: string;
+{ returns the list of procedures for this encounter as a single comma delimited string }
+var
+  i: Integer;
+begin
+  Result := '';
+  with FProcedures do for i := 0 to Count - 1 do with TPCEProc(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcProc, Code, Category, Narrative, FALSE, Quantity) +
+                         ModText + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcProc] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+function TPCEData.StrImmunizations: string;
+{ returns the list of Immunizations for this encounter as a single comma delimited string }
+var
+  i: Integer;
+begin
+  Result := '';
+  with FImmunizations do for i := 0 to Count - 1 do with TPCEImm(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcImm, Code, Category, Narrative) + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcImm] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+
+function TPCEData.StrSkinTests: string;
+{ returns the list of Immunizations for this encounter as a single comma delimited string }
+var
+  i: Integer;
+begin
+  Result := '';
+  with FSkinTests do for i := 0 to Count - 1 do with TPCESkin(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcSkin, Code, Category, Narrative) + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcSkin] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+function TPCEData.StrPatientEds: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with FPatientEds do for i := 0 to Count - 1 do with TPCEPat(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcPED, Code, Category, Narrative) + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcPED] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+function TPCEData.StrHealthFactors: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with FHealthFactors do for i := 0 to Count - 1 do with TPCEHealth(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcHF, Code, Category, Narrative) + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcHF] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+function TPCEData.StrExams: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with FExams do for i := 0 to Count - 1 do with TPCEExams(Items[i]) do
+    if not FDelete then
+      Result := Result + GetPCEDataText(pdcExam, Code, Category, Narrative) + ', ';
+  if Length(Result) > 0 then Result := PCEDataCatText[pdcExam] + Copy(Result, 1, Length(Result) - 2);
+end;
+
+function TPCEData.StrVisitType(const ASCRelated, AAORelated, AIRRelated,
+  AECRelated, AMSTRelated, AHNCRelated, ACVRelated, ASHADRelated: Integer): string;
+{ returns as a string the type of encounter (according to CPT) & related contitions treated }
+
+  procedure AddTxt(txt: string);
+  begin
+    if(Result <> '') then
+      Result := Result + ',';
+    Result := Result + ' ' + txt;
+  end;
+
+begin
+  Result := '';
+  if ASCRelated = SCC_YES  then AddTxt('Service Connected Condition');
+  if AAORelated = SCC_YES  then AddTxt('Agent Orange Exposure');
+  if AIRRelated = SCC_YES  then AddTxt('Ionizing Radiation Exposure');
+  if AECRelated = SCC_YES  then AddTxt('Environmental Contaminants');
+  if AMSTRelated = SCC_YES then AddTxt('MST');//'Military Sexual Trauma';
+//  if HNCOK and (AHNCRelated = SCC_YES) then AddTxt('Head and/or Neck Cancer');
+  if AHNCRelated = SCC_YES then AddTxt('Head and/or Neck Cancer');
+  if ACVRelated = SCC_YES  then AddTxt('Combat Veteran Related');
+  if Length(Result) > 0 then Result := ' related to: ' + Result;
+//  Result := Trim(Result);
+end;
+
+function TPCEData.StrVisitType: string;
+{ returns as a string the type of encounter (according to CPT) & related contitions treated }
+begin
+  Result := '';
+  with FVisitType do
+    begin
+      Result := GetPCEDataText(pdcVisit, Code, Category, Narrative);
+      if Length(ModText) > 0 then Result := Result + ModText + ', ';
+    end;
+  Result := Trim(Result + StrVisitType(FSCRelated, FAORelated, FIRRelated,
+                                       FECRelated, FMSTRelated, FHNCRelated, FCVRelated, FSHADRelated));
+end;
+
+function TPCEData.StandAlone: boolean;
+var
+  Sts: integer;
+
+begin
+  if(not FStandAloneLoaded) and ((FNoteIEN > 0) or ((FEncLocation > 0) and (FEncDateTime > 0))) then
+  begin
+    Sts := HasVisit(FNoteIEN, FEncLocation, FEncDateTime);
+    FStandAlone := (Sts <> 1);
+    if(Sts >= 0) then
+      FStandAloneLoaded := TRUE;
+  end;
+  Result := FStandAlone;
+end;
+
+function TPCEData.getDocCount: Integer;
+begin
+  rESULT := 1;
+//  result := DocCount(vISIT);
+end;
+
+{function TPCEItem.MatchProvider(AnItem: TPCEItem): Boolean;
+begin
+  Result := False;
+  if (Provider = AnItem.Provider) then Result := True;
+end;
+}
+function TPCEItem.MatchProvider(AnItem: TPCEItem): Boolean;
+begin
+  Result := False;
+  if (Provider = AnItem.Provider) then Result := True;
+end;
+
+function TPCEData.GetHasData: Boolean;
+begin
+  result := True;
+  if ((FDiagnoses.count = 0)
+     and (FProcedures.count = 0)
+     and (FImmunizations.count = 0)
+     and (FSkinTests.count = 0)
+     and (FPatientEds.count = 0)
+     and (FHealthFactors.count = 0)
+     and (fExams.count = 0) and
+     (FvisitType.Quantity = 0))then
+      result := False;
+end;
+
+procedure TPCEData.CopyPCEData(Dest: TPCEData);
+begin
+  Dest.Clear;
+  Dest.FEncDateTime  := FEncDateTime;
+  Dest.FNoteDateTime := FNoteDateTime;
+  Dest.FEncLocation  := FEncLocation;
+  Dest.FEncSvcCat    := FEncSvcCat;
+  Dest.FEncInpatient := FEncInpatient;
+  Dest.FStandAlone   := FStandAlone;
+  Dest.FStandAloneLoaded := FStandAloneLoaded;
+  Dest.FEncUseCurr   := FEncUseCurr;
+  Dest.FSCChanged    := FSCChanged;
+  Dest.FSCRelated    := FSCRelated;
+  Dest.FAORelated    := FAORelated;
+  Dest.FIRRelated    := FIRRelated;
+  Dest.FECRelated    := FECRelated;
+  Dest.FMSTRelated   := FMSTRelated;
+  Dest.FHNCRelated   := FHNCRelated;
+  Dest.FCVRelated    := FCVRelated;
+  Dest.FSHADRelated  := FSHADRelated;
+  FVisitType.CopyProc(Dest.VisitType);
+  Dest.FProviders.Assign(FProviders);
+
+  CopyPCEItems(FDiagnoses,     Dest.FDiagnoses,     TPCEDiag);
+  CopyPCEItems(FProcedures,    Dest.FProcedures,    TPCEProc);
+  CopyPCEItems(FImmunizations, Dest.FImmunizations, TPCEImm);
+  CopyPCEItems(FSkinTests,     Dest.FSkinTests,     TPCESkin);
+  CopyPCEItems(FPatientEds,    Dest.FPatientEds,    TPCEPat);
+  CopyPCEItems(FHealthFactors, Dest.FHealthFactors, TPCEHealth);
+  CopyPCEItems(FExams,         Dest.FExams,         TPCEExams);
+
+  Dest.FNoteTitle := FNoteTitle;
+  Dest.FNoteIEN := FNoteIEN;
+  Dest.FParent := FParent;
+  Dest.FHistoricalLocation := FHistoricalLocation;
+end;
+
+function TPCEData.NeededPCEData: tRequiredPCEDataTypes;
+var
+  EC: TSCConditions;
+  NeedSC: boolean;
+  TmpLst: TStringList;
+
+begin
+  Result := [];
+  if(not FutureEncounter(Self)) then
+  begin
+    if(PromptForWorkload(FNoteIEN, FNoteTitle, FEncSvcCat, StandAlone)) then
+    begin
+      if(fdiagnoses.count <= 0) then
+        Include(Result, ndDiag);
+      if((fprocedures.count <= 0) and (fVisitType.Code = '')) then
+      begin
+        TmpLst := TStringList.Create;
+        try
+          GetHasCPTList(TmpLst);
+          if(not DataHasCPTCodes(TmpLst)) then
+            Include(Result, ndProc);
+        finally
+          TmpLst.Free;
+        end;
+      end;
+      if(RequireExposures(FNoteIEN, FNoteTitle)) then
+      begin
+        NeedSC := FALSE;
+        EC :=  EligbleConditions;
+        if (EC.SCAllow and (SCRelated = SCC_NA)) then
+          NeedSC := TRUE
+        else   if(SCRelated <> SCC_YES) then  //if screlated = yes, the others are not asked.
+        begin
+               if(EC.AOAllow and (AORelated = SCC_NA)) then NeedSC := TRUE
+          else if(EC.IRAllow and (IRRelated = SCC_NA)) then NeedSC := TRUE
+          else if(EC.ECAllow and (ECRelated = SCC_NA)) then NeedSC := TRUE
+        end;
+        if(EC.MSTAllow and (MSTRelated = SCC_NA)) then NeedSC := TRUE;
+//        if HNCOK and (EC.HNCAllow and (HNCRelated = SCC_NA)) then NeedSC := TRUE;
+        if(EC.HNCAllow and (HNCRelated = SCC_NA)) then NeedSC := TRUE;
+        if(EC.CVAllow and (CVRelated = SCC_NA) and (SHADRelated = SCC_NA)) then NeedSC := TRUE;
+        if(NeedSC) then
+          Include(Result, ndSC);
+      end;
+(*      if(Result = []) and (FNoteIEN > 0) then   //  **** block removed in v19.1  {RV} ****
+        ClearCPTRequired(FNoteIEN);*)
+    end;
+  end;
+end;
+
+
+function TPCEData.OK2SignNote: boolean;
+var
+  Req: tRequiredPCEDataTypes;
+  msg: string;
+  Asked, DoAsk, Primary, Needed: boolean;
+  Outpatient, First, DoSave, NeedSave, Done: boolean;
+  Ans: integer;
+  Flags: word;
+  Ask: TAskPCE;
+
+  procedure Add(Typ: tRequiredPCEDataType; txt: string);
+  begin
+    if(Typ in Req) then
+      msg := msg + txt + CRLF;
+  end;
+
+begin
+  if not CanEditPCE(Self) then
+  begin
+    Result := TRUE;
+    exit;
+  end;
+  if IsNonCountClinic(FEncLocation) then
+  begin
+    Result := TRUE;
+    exit;
+  end;
+  if IsCancelOrNoShow(NoteIEN) then
+  begin
+    Result := TRUE;
+    exit;
+  end;
+  Ask := GetAskPCE(FEncLocation);
+  if(Ask = apNever) or (Ask = apDisable) then
+    Result := TRUE
+  else
+  begin
+    DoSave := FALSE;
+    try
+      Asked := FALSE;
+      First := TRUE;
+      Outpatient := ((FEncSvcCat = 'A') or (FEncSvcCat = 'I') or (FEncSvcCat = 'T'));
+      repeat
+        Result := TRUE;
+        Done := TRUE;
+        Req := NeededPCEData;
+        Needed := (Req <> []);
+        if(First) then
+        begin
+          if Needed and (not Outpatient) then
+            OutPatient := TRUE;
+          if((Ask = apPrimaryAlways) or Needed or
+             ((Ask = apPrimaryOutpatient) and Outpatient)) then
+          begin
+            if(Providers.PrimaryIdx < 0) then
+            begin
+              NoPrimaryPCEProvider(FProviders, Self);
+              if(not DoSave) then
+                DoSave := (Providers.PrimaryIdx >= 0);
+              if(DoSave and (FProviders.PendingIEN(FALSE) <> 0) and
+                (FProviders.IndexOfProvider(IntToStr(FProviders.PendingIEN(FALSE))) < 0)) then
+                FProviders.AddProvider(IntToStr(FProviders.PendingIEN(FALSE)), FProviders.PendingName(FALSE), FALSE);
+            end;
+          end;
+          First := FALSE;
+        end;
+        Primary := (Providers.PrimaryIEN = User.DUZ);
+        case Ask of
+          apPrimaryOutpatient: DoAsk := (Primary and Outpatient);
+          apPrimaryAlways:     DoAsk := Primary;
+          apNeeded:            DoAsk := Needed;
+          apOutpatient:        DoAsk := Outpatient;
+          apAlways:            DoAsk := TRUE;
+          else
+        { apPrimaryNeeded }    DoAsk := (Primary and Needed);
+        end;
+        if(DoAsk) then
+        begin
+          if(Asked and ((not Needed) or (not Primary))) then
+            exit;
+          if(Needed) then
+          begin
+            msg := TX_NEED1;
+            Add(ndDiag, TX_NEED_DIAG);
+            Add(ndProc, TX_NEED_PROC);
+            Add(ndSC,   TX_NEED_SC);
+            if(Primary and ForcePCEEntry(FEncLocation)) then
+            begin
+              Flags := MB_OKCANCEL;
+              msg :=  msg + CRLF + TX_NEED3;
+            end
+            else
+            begin
+              if(Primary) then
+                Flags := MB_YESNOCANCEL
+              else
+                Flags := MB_YESNO;
+              msg :=  msg + CRLF + TX_NEED2;
+            end;
+            Flags := Flags + MB_ICONWARNING;
+          end
+          else
+          begin
+            Flags := MB_YESNO + MB_ICONQUESTION;
+            msg :=  TX_NEED2;
+          end;
+          Ans := InfoBox(msg, TX_NEED_T, Flags);
+          if(Ans = ID_CANCEL) then
+          begin
+            Result := FALSE;
+            InfoBox(TX_NEEDABORT, TX_NEED_T, MB_OK);
+            exit;
+          end;
+          Result := (Ans = ID_NO);
+          if(not Result) then
+          begin
+            if(not MissingProviderInfo(Self)) then
+            begin
+              NeedSave := UpdatePCE(Self, FALSE);
+              if(not DoSave) then
+                DoSave := NeedSave;
+              FUpdated := TRUE;
+            end;
+            Done := frmFrame.Closing;
+            Asked := TRUE;
+          end;
+        end;
+      until(Done);
+    finally
+      if(DoSave) then
+        Save;
+    end;
+  end;
+end;
+
+procedure TPCEData.AddStrData(List: TStrings);
+
+  procedure Add(Txt: string);
+  begin
+    if(length(Txt) > 0) then List.Add(Txt);
+  end;
+
+begin
+  Add(StrVisitType);
+  Add(StrDiagnoses);
+  Add(StrProcedures);
+  Add(StrImmunizations);
+  Add(StrSkinTests);
+  Add(StrPatientEds);
+  Add(StrHealthFactors);
+  Add(StrExams);
+end;
+
+procedure TPCEData.AddVitalData(Data, List: TStrings);
+var
+  i: integer;
+
+begin
+  for i := 0 to Data.Count-1 do
+    List.Add(FormatVitalForNote(Data[i]));
+end;
+
+function TPCEData.PersonClassDate: TFMDateTime;
+begin
+  if(FEncSvcCat = 'H') then
+    Result := FMToday
+  else
+    Result := FEncDateTime; //Encounter.DateTime;
+end;
+
+function TPCEData.VisitDateTime: TFMDateTime;
+begin
+  if(IsSecondaryVisit) then
+    Result := FNoteDateTime
+  else
+    Result := FEncDateTime;
+end;
+
+function TPCEData.IsSecondaryVisit: boolean;
+begin
+  Result := ((FEncSvcCat = 'H') and (FNoteDateTime > 0) and (FEncInpatient));
+end;
+
+function TPCEData.NeedProviderInfo: boolean;
+var
+  i: integer;
+  TmpLst: TStringList;
+
+begin
+  if(FProviders.PrimaryIdx < 0) then
+  begin
+    Result := AutoCheckout(FEncLocation);
+    if not Result then
+    begin
+      for i := 0 to FDiagnoses.Count - 1 do
+      begin
+        if not TPCEDiag(FDiagnoses[i]).FDelete then
+        begin
+          Result := TRUE;
+          break;
+        end;
+      end;
+    end;
+    if not Result then
+    begin
+      for i := 0 to FProcedures.Count - 1 do
+      begin
+        if not TPCEProc(FProcedures[i]).FDelete then
+        begin
+          Result := TRUE;
+          break;
+        end;
+      end;
+    end;
+    if not Result then
+    begin
+      for i := 0 to FProviders.Count - 1 do
+      begin
+        if not FProviders[i].Delete then
+        begin
+          Result := TRUE;
+          break;
+        end;
+      end;
+    end;
+    if not Result then
+    begin
+      TmpLst := TStringList.Create;
+      try
+        GetHasCPTList(TmpLst);
+        if(DataHasCPTCodes(TmpLst)) then
+          Result := TRUE;
+      finally
+        TmpLst.Free;
+      end;
+    end;
+  end
+  else
+    Result := FALSE;
+end;
+
+procedure TPCEData.GetHasCPTList(AList: TStrings);
+
+  procedure AddList(List: TList);
+  var
+    i: integer;
+    tmp: string;
+
+  begin
+    for i := 0 to List.Count-1 do
+    begin
+      tmp := TPCEItem(List[i]).HasCPTStr;
+      if(tmp <> '') then
+        AList.Add(tmp);
+    end;
+  end;
+
+begin
+  AddList(FImmunizations);
+  AddList(FSkinTests);
+  AddList(FPatientEds);
+  AddList(FHealthFactors);
+  AddList(FExams);
+end;
+
+procedure TPCEData.CopyPCEItems(Src: TList; Dest: TObject; ItemClass: TPCEItemClass);
+var
+  AItem: TPCEItem;
+  i: Integer;
+  IsStrings: boolean;
+  
+begin
+  if(Dest is TStrings) then
+    IsStrings := TRUE
+  else
+  if(Dest is TList) then
+    IsStrings := FALSE
+  else
+    exit;
+  for i := 0 to Src.Count - 1 do
+  begin
+    if(not TPCEItem(Src[i]).FDelete) then
+    begin
+      AItem := ItemClass.Create;
+      AItem.Assign(TPCEItem(Src[i]));
+      if(IsStrings) then
+        TStrings(Dest).AddObject(AItem.ItemStr, AItem)
+      else
+        TList(Dest).Add(AItem);
+    end;
+  end;
+end;
+
+function TPCEData.Empty: boolean;
+begin
+  Result := (FProviders.Count = 0);
+  if(Result) then Result := (FSCRelated  = SCC_NA);
+  if(Result) then Result := (FAORelated  = SCC_NA);
+  if(Result) then Result := (FIRRelated  = SCC_NA);
+  if(Result) then Result := (FECRelated  = SCC_NA);
+  if(Result) then Result := (FMSTRelated = SCC_NA);
+//  if(Result) and HNCOK then Result := (FHNCRelated = SCC_NA);
+  if(Result) then Result := (FHNCRelated = SCC_NA);
+  if(Result) then Result := (FCVRelated = SCC_NA);
+  if(Result) then Result := (FSHADRelated = SCC_NA);
+  if(Result) then Result := (FDiagnoses.Count = 0);
+  if(Result) then Result := (FProcedures.Count = 0);
+  if(Result) then Result := (FImmunizations.Count = 0);
+  if(Result) then Result := (FSkinTests.Count = 0);
+  if(Result) then Result := (FPatientEds.Count = 0);
+  if(Result) then Result := (FHealthFactors.Count = 0);
+  if(Result) then Result := (fExams.Count = 0);
+  if(Result) then Result := (FVisitType.Empty);
+end;
+
+{ TPCEProviderList }
+
+function TPCEProviderList.Add(const S: string): Integer;
+var
+  SIEN: string;
+  LastPrimary: integer;
+
+begin
+  SIEN := IntToStr(StrToInt64Def(Piece(S, U, pnumPrvdrIEN), 0));
+  if(SIEN = '0') then
+    Result := -1
+  else
+  begin
+    LastPrimary := PrimaryIdx;
+    Result := IndexOfProvider(SIEN);
+    if(Result < 0) then
+      Result := inherited Add(S)
+    else
+      Strings[Result] := S;
+    if(Piece(S, U, pnumPrvdrPrimary) = '1') then
+    begin
+      FNoUpdate := TRUE;
+      try
+        SetPrimaryIdx(Result);
+      finally
+        FNoUpdate := FALSE;
+      end;
+      if(assigned(FOnPrimaryChanged) and (LastPrimary <> PrimaryIdx)) then
+        FOnPrimaryChanged(Self);
+    end;
+  end;
+end;
+
+function TPCEProviderList.AddProvider(AIEN, AName: string; APrimary: boolean): integer;
+var
+  tmp: string;
+
+begin
+  tmp := 'PRV' + U + AIEN + U + U + U + AName + U;
+  if(APrimary) then tmp := tmp + '1';
+  Result := Add(tmp);
+end;
+
+procedure TPCEProviderList.Clear;
+var
+  DoNotify: boolean;
+
+begin
+  DoNotify := (assigned(FOnPrimaryChanged) and (GetPrimaryIdx >= 0));
+  FPendingDefault := '';
+  FPendingUser := '';
+  FPCEProviderIEN := 0;
+  FPCEProviderName := '';
+  inherited;
+  if(DoNotify) then
+    FOnPrimaryChanged(Self);
+end;
+
+procedure TPCEProviderList.Delete(Index: Integer);
+var
+  DoNotify: boolean;
+
+begin
+  DoNotify := (assigned(FOnPrimaryChanged) and (Piece(Strings[Index], U, pnumPrvdrPrimary) = '1'));
+  inherited Delete(Index);
+  if(DoNotify) then
+    FOnPrimaryChanged(Self);
+end;
+
+function TPCEProviderList.PCEProvider: Int64;
+
+  function Check(AIEN: Int64): Int64;
+  begin
+    if(AIEN = 0) or (IndexOfProvider(IntToStr(AIEN)) < 0) then
+      Result := 0
+    else
+      Result := AIEN;
+  end;
+
+begin
+  Result := Check(Encounter.Provider);
+  if(Result = 0) then Result := Check(User.DUZ);
+  if(Result = 0) then Result := PrimaryIEN;
+end;
+
+function TPCEProviderList.PCEProviderName: string;
+var
+  NewProv: Int64;
+
+begin
+  NewProv := PCEProvider;
+  if(FPCEProviderIEN <> NewProv) then
+  begin
+    FPCEProviderIEN := NewProv;
+    FPCEProviderName := ExternalName(PCEProvider, FN_NEW_PERSON);
+  end;
+  Result := FPCEProviderName;
+end;
+
+function TPCEProviderList.GetPrimaryIdx: integer;
+begin
+  Result := IndexOfPiece('1', U, pnumPrvdrPrimary);
+end;
+
+function TPCEProviderList.GetProviderData(Index: integer): TPCEProviderRec;
+var
+  X: string;
+
+begin
+  X := Strings[Index];
+  Result.IEN     := StrToInt64Def(Piece(X, U, pnumPrvdrIEN), 0);
+  Result.Name    := Piece(X, U, pnumPrvdrName);
+  Result.Primary := (Piece(X, U, pnumPrvdrPrimary) = '1');
+  Result.Delete  := (Piece(X, U, 1) = 'PRV-');
+end;
+
+function TPCEProviderList.IndexOfProvider(AIEN: string): integer;
+begin
+  Result := IndexOfPiece(AIEN, U, pnumPrvdrIEN);
+end;
+
+procedure TPCEProviderList.Merge(AList: TPCEProviderList);
+var
+  i, idx: integer;
+  tmp: string;
+
+begin
+  for i := 0 to Count-1 do
+  begin
+    tmp := Strings[i];
+    idx := AList.IndexOfProvider(Piece(tmp, U, pnumPrvdrIEN));
+    if(idx < 0) then
+    begin
+      SetPiece(tmp, U, 1, 'PRV-');
+      Strings[i] := tmp;
+    end;
+  end;
+  for i := 0 to AList.Count-1 do
+    Add(AList.Strings[i]); // Add already filters out duplicates
+end;
+
+function TPCEProviderList.PendingIEN(ADefault: boolean): Int64;
+begin
+  if(ADefault) then
+    Result := StrToInt64Def(Piece(FPendingDefault, U, 1), 0)
+  else
+    Result := StrToInt64Def(Piece(FPendingUser, U, 1), 0);
+end;
+
+function TPCEProviderList.PendingName(ADefault: boolean): string;
+begin
+  if(ADefault) then
+    Result := Piece(FPendingDefault, U, 2)
+  else
+    Result := Piece(FPendingUser, U, 2);
+end;
+
+function TPCEProviderList.PrimaryIEN: int64;
+var
+  idx: integer;
+
+begin
+  idx := GetPrimaryIdx;
+  if(idx < 0) then
+    Result := 0
+  else
+    Result := StrToInt64Def(Piece(Strings[idx], U, pnumPrvdrIEN), 0);
+end;
+
+function TPCEProviderList.PrimaryName: string;
+var
+  idx: integer;
+
+begin
+  idx := GetPrimaryIdx;
+  if(idx < 0) then
+    Result := ''
+  else
+    Result := Piece(Strings[idx], U, pnumPrvdrName);
+end;
+
+procedure TPCEProviderList.SetPrimary(index: integer; Primary: boolean);
+var
+  tmp, x: string;
+
+begin
+  tmp := Strings[index];
+  if(Primary) then
+    x := '1'
+  else
+    x := '';
+  SetPiece(tmp, U, pnumPrvdrPrimary, x);
+  Strings[Index] := tmp;
+end;
+
+procedure TPCEProviderList.SetPrimaryIdx(const Value: integer);
+var
+  LastPrimary, idx: integer;
+  Found: boolean;
+
+begin
+  LastPrimary := GetPrimaryIdx;
+  idx := -1;
+  Found := FALSE;
+  repeat
+    idx := IndexOfPiece('1', U, pnumPrvdrPrimary, idx);
+    if(idx >= 0) then
+    begin
+      if(idx = Value) then
+        Found := TRUE
+      else
+        SetPrimary(idx, FALSE);
+    end;
+  until(idx < 0);
+  if(not Found) and (Value >= 0) and (Value < Count) then
+    SetPrimary(Value, TRUE);
+  if((not FNoUpdate) and assigned(FOnPrimaryChanged) and (LastPrimary <> Value)) then
+    FOnPrimaryChanged(Self);
+end;
+
+procedure TPCEProviderList.SetProviderData(Index: integer;
+  const Value: TPCEProviderRec);
+var
+  tmp, SIEN: string;
+
+begin
+  if(Value.IEN = 0) or (index < 0) or (index >= Count) then exit;
+  SIEN := IntToStr(Value.IEN);
+  if(IndexOfPiece(SIEN, U, pnumPrvdrIEN) = index) then
+  begin
+    tmp := 'PRV';
+    if(Value.Delete) then tmp := tmp + '-';
+    tmp := tmp + U + SIEN + U + U + U + Value.Name + U;
+    Strings[index] := tmp;
+    if Value.Primary then
+      SetPrimaryIdx(Index);
+  end;
+end;
+
+procedure TPCEProviderList.Assign(Source: TPersistent);
+var
+  Src: TPCEProviderList;
+
+begin
+  inherited Assign(Source);
+  if(Source is TPCEProviderList) then
+  begin
+    Src := TPCEProviderList(Source);
+    Src.FOnPrimaryChanged := FOnPrimaryChanged;
+    Src.FPendingDefault := FPendingDefault;
+    Src.FPendingUser := FPendingUser;
+    Src.FPCEProviderIEN := FPCEProviderIEN;
+    Src.FPCEProviderName := FPCEProviderName;
+  end;
+end;
+
+initialization
+
+finalization
+  KillObj(@PCESetsOfCodes);
+  KillObj(@HistLocations);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.JKM
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.JKM	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.JKM	(revision 1676)
@@ -0,0 +1,21 @@
+[Common Keys]
+F2=f2editTreeNode
+Control+Alt+NumPadSlash=ltLeftClickCell
+Control+Alt+NumPadStar=ltRightClickCell
+Control+Shift+Alt+NumPadSlash=ltLeftClickHeader
+Control+Shift+Alt+NumPadStar=ltRightClickHeader
+[Classic Laptop Keys]
+Control+Alt+8=ltLeftClickCell
+Control+Alt+9=ltRightClickCell
+Control+Shift+Alt+8=ltLeftClickHeader
+Control+Shift+Alt+9=ltRightClickHeader
+[Laptop Keys]
+Control+Alt+8=ltLeftClickCell
+Control+Alt+9=ltRightClickCell
+Control+Shift+Alt+8=ltLeftClickHeader
+Control+Shift+Alt+9=ltRightClickHeader
+[Kinesis keys]
+Control+Alt+I=ltLeftClickCell
+Control+Alt+O=ltRightClickCell
+Control+Shift+Alt+I=ltLeftClickHeader
+Control+Shift+Alt+O=ltRightClickHeader
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.JSS
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.JSS	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.JSS	(revision 1676)
@@ -0,0 +1,6 @@
+use "VA508JAWS.jsb"
+void Function _Filler()
+; function needed here to force JAWS to load VA508JAWS script
+EndFunction
+
+; Add Custom Scripts Here
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.jcf
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.jcf	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508APP.jcf	(revision 1676)
@@ -0,0 +1,56 @@
+;The below classes are defined in the default.jcf for JAWS 8 and 7.1 and thus are not defined below
+;TBitBtn=Button
+;TEdit=Edit
+;TRichEdit=Edit
+;TListbox=ListBox
+;TCombobox=ComboBox
+;TCheckbox=CheckBox
+;TRadioButton=RadioButton
+;TMemo=Edit
+;TRadioGroup=GroupBox
+;TGroupBox=GroupBox
+;TListView=ListView
+;TToolBar=ToolBar
+;TTreeView=TreeView
+;TButton=Button
+;TPageControl=TabControl
+;TGroupButton=RadioButton
+
+[WindowClasses]
+TfrmSplash=Dialog
+TValueListEditor=ListBox
+TPanel=GroupBox
+TFlowPanel=GroupBox
+TGridPanel=GroupBox
+TFrame=GroupBox
+TInplaceEditList=Edit
+TMaskEdit=Edit
+TLabeledEdit=Edit
+TPageControl=TabControl
+TTabControl=TabControl
+TTrackBar=Slider
+TCheckListBox=ListBox
+TListBox=ListBox
+TToolbar=Toolbar
+TStatusBar=StatusBar
+TComboBoxEx=ComboBox
+TColorListBox=ListBox
+TColorBox=ComboBox
+TStaticText=StaticText
+TLabel=TStaticText
+[Options]
+SayNumericDates=0
+[OSM]
+IncludeGraphics=0
+[Braille translations]
+ControlType|State Check Box|checked=||<x>
+ControlType|State Check Box|not checked=||< >
+ControlType|State Three State Check Box|checked=||<x>
+ControlType|State Three State Check Box|not checked=||< >
+ControlType|State Three State Check Box|Question mark=||<?>
+ControlType|State Three State Check Box|Partially Checked=||<->
+ControlType|State Check List Box|Checked=|lbx|<x>
+ControlType|State Check List Box|Not Checked=|lbx|< >
+[ControlTypes]
+[BrailleClasses]
+Grid = 54
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508JAWS.jsd
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508JAWS.jsd	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508JAWS.jsd	(revision 1676)
@@ -0,0 +1,293 @@
+:function VA508Cast
+:Returns variant No Return Description
+:Synopsis Conversion functionality (cast of any type to any other type within reason)
+:Param variant/value No Description
+
+:function getListType
+:Returns string
+:Synopsis returns the type of list such as extended selection, multi-selection, listview, or listbox
+:Param int 
+
+:function isSpecialFocus
+:Returns int
+:Synopsis returns true if we are in a menu, the jaws cursor, invisible cursor, or user cursor is active or if we are in an hj dialog
+:Param int 
+
+:function watchCount
+:Synopsis Used in Debugging
+:Param string 
+
+:function VA508SendMessage
+:Returns int success or failure
+:Synopsis Send message wrapper with common message id for communicating with dll
+:Param handle/Window handle of dll window
+:Param int/wParam wParam
+:Param int/lParam lParam
+
+:function Get4KName
+:Returns string No Return Description
+:Synopsis Returns the window name up to 4k of the data window
+:Param handle/hWnd handle of the data window
+
+:function VA508GetStringValue
+:Returns string Returns the data for a given var property such as a caption
+:Synopsis Returns the data for a given var property such as caption, usually called after getApplicationData has set the data
+:Param string/VarName the var to get
+
+:function VA508GetApplicationData
+:Synopsis tell framework to set contents of data window so we can get that info using getStringValue
+:Param handle/hwnd Handle of window to query for
+:Param int/iQueryCode Query code
+
+:function VA508ResetGlobals
+:Synopsis Clears out some global variables
+
+:function VA508EnsureInitialized
+:Synopsis Makes sure the Script is working with the VA App
+:Description Before the script file tries to communicate with the VA application, it needs to make sure the VA application wants to try and communicate with it.
+
+:function VA508cacheGetVal
+:Returns int No Return Description
+:Synopsis Get a property value from the cache.
+:Param int/iQueryCode No Description
+:Param string/byRef No Description
+
+:function VA508CacheUpdate
+:Synopsis Update the property cache.  Called only by VA508getComponentProp() and VA508 ResetGlobals
+:Param handle/hwnd Handle of the window to cache for, or 0 to clear the cache
+
+:function VA508FieldNameFromQueryCode
+:Returns string No Return Description
+:Synopsis Return the framework field name corresponding to the given query code.
+:Param int/iQueryCode No Description
+
+:function VA508QueryCodeFromFieldName
+:Returns int No Return Description
+:Synopsis Return the query code corresponding to the given framework field name.
+:Param string/sFieldName No Description
+
+:function VA508GetComponentProp
+:Returns int 1 on success, 0 if the property is not found, -1 on error
+:Synopsis returns the requested property of a given window if one is available through the framework
+:Param handle/hWnd handle of control
+:Param string/sProp Name of property
+:Param int/iCacheHandling Whether to update cache, skip the cache, or just use the cache
+:Param string/byRef sVal The property value if found
+
+:function VA508CacheSetVals
+:Synopsis Update the property cache when the framework sends an event indicating property changes.
+:Param handle/hwnd No Description
+:Param int/iDataStatus No Description
+:Param string/sCaption No Description
+:Param string/sValue No Description
+:Param string/sControlType No Description
+:Param string/sState No Description
+:Param string/sInstructions No Description
+:Param string/sItemInstructions No Description
+
+:function VA508GetGridData
+:Returns int No Return Description
+:Synopsis Fills the VA508cacheGrid* globals.
+:Param variant/fromWhere No Description
+:Param int/dontCheck No Description
+
+:function VA508SayData
+:Returns int No Return Description
+:Synopsis function for actually speaking data for control when needed
+:Param handle/hwnd handle of window
+
+:function tvGetFocusItemExpandStateString
+:Returns string No Return Description
+:Synopsis Returns a string with open or closed representing the state of the currently focused tree view node
+:Param handle/hwnd No Description
+
+:function bxTestNum
+:Synopsis used for debugging purposes
+:Param int/n No Description
+
+:function autoCloseIfOpenCombo
+:Synopsis Automatically close a combo box if one is open when tab or shift+tab is pressed
+
+:function VA508TranslateProps
+:Returns int No Return Description
+:Synopsis Handles custom translations of types and states for output.
+:Param string/sTable No Description
+:Param int/iQueryCode No Description
+:Param string/byRef No Description
+:Param string/byRef No Description
+
+:function controlpropGet
+:Returns int No Return Description
+:Synopsis Handles all control property requests.
+:Param string/sOrigin No Description
+:Param string/whichProp No Description
+:Param string/byRef sVal
+:Param string 
+
+:function BraillePropHelper
+:Returns int No Return Description
+:Synopsis Logic for BrailleAddObject* functions to use.
+:Param string/whichProp No Description
+:Param int/nSubtype No Description
+
+:function BrailleClassFound
+:Returns int
+:Synopsis returns true if there was a custom braille class reclass found in the jcf for a custom framework control type
+:Param string 
+:Param int 
+
+:script f2editTreeNode
+:Synopsis Edits the current tree node's name if applicable
+:Description This command simulates a left click on the currently selected node of a Delphi treeView control, which can open the current node's name for editing.  On any other control, the key pressed is passed through to the application.
+
+:function VA508ChangeEvent
+:Synopsis called by framework dll to tell scripts when an event occurs that changes the property of the currently focused control
+:Param handle/hwnd No Description
+:Param int/iDataStatus No Description
+:Param string/sCaption, No Description
+:Param string/sValue, No Description
+:Param string/sControlType No Description
+:Param string/sState No Description
+:Param string/sInstructions No Description
+:Param string/sItemInstructions No Description
+
+:function AnnounceProp
+:Synopsis announce a property if one was set by the changeEvent and it hasn't already been canceled
+:Param int 
+:Param int 
+:Param int 
+
+:function AnnounceEvent
+:Synopsis helper function that is scheduled from changeEvent for speaking changes in framework properties
+
+:function ChangeDocumentWindow
+:Synopsis allows control tab to announce the correct tab when focus in on page tab control and style is set to button or flat button
+:Description allows control tab when pressed on a child object of a page tab to announce the change in page
+:Param int/direction No Description
+
+:function getSelectedTab
+:Returns string No Return Description
+:Synopsis gets the selected tab from a TTabControl when a child control is in focus
+
+:function SelectTab
+:Synopsis Used for TTabControl to activate a new tab using MSAA
+:Param int/direction No Description
+
+:function ClearSuppressFocusChange
+:Synopsis resets the global variable that suppress focus changes from being announced
+
+:function isSpinBox
+:Returns int No Return Description
+:Synopsis returns true if window with handle is a spinbox
+:Param handle/hwnd No Description
+
+:function getValue
+:Returns string No Return Description
+:Synopsis get value for element from framework, falls back on getObjectValue()
+
+:function SpeakCellUnit
+:Returns int No Return Description
+:Synopsis Speaks the aspects of a cell that are different from the last cell visited
+:Param string/str the direction we just moved
+
+:function getCurrentCellHeadersData
+:Returns string No Return Description
+:Synopsis returns the full string of col number, row number, column name, row name, and cell data for the current table cell
+
+:function UpdateBrailleClasses
+:Synopsis Called from autoStartEvent to load jcf settings into memory for braille reclassing
+:Returns int
+
+:function UpdateControlTypes
+:Synopsis Called from autoStartEvent to load jcf settings into memory for custom control type reclassing
+:Returns int
+
+:function ControlTypeFound
+:Returns int
+:Synopsis returns true of a new control type string is found in the jcf file to be spoken instead of the custom framework control type
+:Param string 
+:Param string 
+
+:function ToggleGridSpeechMode
+:Returns string
+:Synopsis toggles whether table headers are announced or not
+:Param int 
+
+:function ToggleGridBrailleMode
+:Returns string
+:Synopsis toggles whether table headers are shown in Braille or not
+:Param int 
+
+:function getAccName
+:Returns string Returns an msaa directly using msaa rather than getObjectName()
+:Synopsis returns an accessible name depending on context
+
+:function getAccValue
+:Returns string No Return Description
+:Synopsis returns an accessible value depending on context
+
+:function getAccState
+:Returns string Returns an msaa state string that can be spoken via msaa directly  rather than getObjectState()
+:Synopsis returns an accessible state depending on context
+
+:function lt_stringCast
+:Returns string
+:Param variant 
+
+:function lt_stringSegmentWithMultiCharDelim
+:Returns string
+:Param string 
+:Param string 
+:Param int 
+
+:function lt_canTryLVCalls
+:Returns int
+
+:function lt_getMSAARect
+:Returns int
+:Param object 
+:Param int 
+:Param int 
+:Param int 
+:Param int 
+:Param int 
+
+:function lt_move
+:Returns int
+:Param string 
+
+:function lt_clearSuppressHighlight
+
+:script moveToTopOfColumn
+:Returns undef
+
+:script moveToBottomOfColumn
+:Returns undef
+
+:script moveToStartOfRow
+:Returns undef
+
+:script moveToEndOfRow
+:Returns undef
+
+:script ltLeftClickCell
+:Synopsis Clicks the current cell with the left mouse button
+:Description This command simulates a left mouse click on the current cell
+
+:script ltRightClickCell
+:Synopsis Clicks the current cell with the right mouse button
+:Description This command simulates a right mouse click on the current cell
+
+:script ltLeftClickHeader
+:Synopsis Clicks the current cell's column header with the left mouse button
+:Description This command simulates a right mouse click on the current cell's column header
+
+:script ltRightClickHeader
+:Synopsis Clicks the current cell's column header with the right mouse button
+:Description This command simulates a right mouse click on the current cell's column header
+
+:script VA508SendCustomCommand
+:Synopsis Custom command for this application
+:Description This is a custom command for this application, implemented directly by the accessibility framework
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508JAWS.jss
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508JAWS.jss	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/JAWS Support Files/VA508JAWS.jss	(revision 1676)
@@ -0,0 +1,3758 @@
+; $Id: va508jaws.jss,v 1.171 2008/05/30 13:48:38 dlee Exp $
+/* Data Communication for this framework is provided through hidden windows
+Written for the VA508 Script project
+Original scripts by: JMerrill
+Updated: June, 2007 - JAvila and DLee, for Freedom Scientific
+Updated: October, 2007 by DLee
+JAWS 7.1 and 8.0
+The top line of this file should be preserved for CVS purposes
+The framework requires the jaws.SR and VA508JAWSDispatcher.exe files in addition to the FSAPI 1.0 com library in the shared folder of the JAWS program
+*/
+
+; Default includes from JAWS
+include "HjConst.jsh"
+include "hjglobal.jsh"
+include "common.jsm"
+
+; constants are differentiated by underscores between words
+Const
+; Not used by any code in this file, but read by JAWS.SR from this file to determine if the script file should be updated with a newer version
+	VA508_Script_Version = 1137,
+
+; Maximum property cache lifespan in milliseconds
+	VA508_Cache_Mils = 2000,  ; 2 seconds
+
+; iCacheHandling values for VA508getComponentProp()
+; See that function for more about these constants.
+	VA508_Cache_Use = 0,  ; Use the cache but don't force it to update
+	VA508_Cache_Update = 1,  ; Update the cache, then use it
+	VA508_Cache_Skip = 2,  ; Don't touch the cache at all, just pull straight from Framework
+; Constant used to indicate that the framework sent a null property value explicitly.
+; When a cache property value is actually null, it means the framework did not send a value for that property at all.
+; This means either there was an error (VA508_QueryCode_Error dataStatus bit set)
+; or the property has no value in the framework (appropriate VA508_QueryCode_* dataStatus bit for the property NOT set).
+	VA508_Cache_Explicit_Null = " ",
+
+; Used by AutoStartEvent only.to get the msg id used to communicate with sendMessage
+	VA508_Reg_Msg_ID = "VA 508 / Freedom Scientific - JAWS Communication Message ID",
+
+; Used only by VA508EnsureInitialized
+	VA508_DLL_Dispatcher_Hidden_Window_Class = "TfrmVA508JawsDispatcherHiddenWindow",
+	VA508_DLL_Hidden_Main_Window_Class = "TfrmVA508HiddenJawsMainWindow",
+	VA508_Message_Get_DLL_With_Focus = 1,
+; Not used by any code.
+	VA508_DLL_Dispatcher_Hidden_Window_Title = "VA 508 JAWS Dispatcher Window",
+	VA508_DLL_Hidden_Data_Window_Class = "TfrmVA508HiddenJawsDataWindow",
+
+; General data format = prefix : next window handle : data
+; See VA508GetApplicationData() for more info on the data structure.
+	VA508_DLL_Data_Window_Delim = ":",
+; Next two used only by VA508GetStringValue.
+	VA508_DLL_Data_Offset = "=",
+	VA508_DLL_Data_Length = ",",
+
+; Names of data structure elements, found in the data structure itself (gsVA508varData).
+; Pass these to VA508GetStringValue() to get values by name.
+	VA508_FieldName_Caption = "Caption",
+	VA508_FieldName_Value = "Value",
+	VA508_FieldName_Control_Type = "ControlType",
+	VA508_FieldName_State = "State",
+	VA508_FieldName_Instructions = "Instructions",
+	VA508_FieldName_Item_Instructions = "ItemInstructions",
+	VA508_FieldName_Data_Status = "DataStatus",
+
+; Query bits to retrieve each of the above items except Data_Status.
+; These are passed to VA508GetApplicationData().
+; iDataStatus comes back with the same flags to indicate what was actually retrieved.
+	VA508_QueryCode_Caption = 0x00000001L,
+	VA508_QueryCode_Value = 0x00000002L,
+	VA508_QueryCode_Control_Type = 0x00000004L,
+	VA508_QueryCode_State = 0x00000008L,
+	VA508_QueryCode_Instructions = 0x00000010L, ;16
+	VA508_QueryCode_Item_Instructions = 0x00000020L, ;32
+	VA508_QueryCode_Data = 0x00000040L, ;64
+; Query code to retrieve all of the above at once.
+	VA508_QueryCode_All = 0x0000007FL, ; 127
+; Extra bits that can be sent to the VA508ChangeEvent
+	VA508_Data_Change_Event = 0x00001000L, ; 4096
+	VA508_DataItem_Change_Event = 0x00002000L, ;8192
+; If this comes back from a query, it means the sent hwnd was not in the framework's list of windows
+; This can happen if
+;	- The hwnd is to another application, or
+;	- The hwnd is to a system-generated window, such as SysHeader32 under a ListView or Edit under an edit combo.
+	VA508_QueryCode_Error = 0x00800000L,
+
+; Keystroke constants
+	Key_F4 = "F4",  ; Key to close an open combo box.
+	ksRightArrow = "RightArrow",
+	ksLeftArrow = "LeftArrow",
+; Window class constants
+	wcComboLBox = "ComboLBox", ; Window class of a normal combo box's list window.
+	wcTMaskEdit = "TMaskEdit",
+	wcTTabControl = "TTabControl",
+	wcTTabSheet = "TTabSheet",
+	wcTUpDown = "TUpDown",
+	wcTTreeView = "TTreeView",
+	wcTStringGrid = "TStringGrid",
+	wcTComboBox = "TComboBox",
+	wcEdit = "Edit",
+; ControlTypes
+	ctSpinBox = "SpinBox",
+; Window Styles
+	window_style_tabsWithButtons = 0x100,
+; MSAA constans
+	ChildID_Self = 0,
+	SELFLAG_TAKEFOCUS = 0x1L,
+	SELFLAG_TAKESELECTION = 0x2L,
+	ROLE_SYSTEM_PAGETABLIST = 0x3cL,
+	ROLE_SYSTEM_PAGETAB = 0x25L,
+	ROLE_SYSTEM_LIST = 0x21L,
+	STATE_SYSTEM_SELECTED = 0x00000002L,
+	STATE_SYSTEM_FOCUSED = 0x00000004L,
+	STATE_SYSTEM_FOCUSABLE = 0x00100000L,
+	STATE_SYSTEM_SELECTABLE = 0x00200000L,
+	STATE_SYSTEM_CHECKED = 0x00000010L,
+; Messages
+	msgPage = "Page",
+	msgNotSelected = "not selected",
+	msgDataOnly = "data only",
+	msgRowAndColumnNumbers = "row and column numbers",
+	msgRowAndColumnHeaders = "row and column headers",
+	msgRowAndColumnHeadersAndNumbers = "row and column headers and numbers",
+	msgScriptSetName = "V A 508 Scripts",
+	msgSpace = " ",
+	msgLoadingSettings = "loading settings",
+	msgPersonalSettingsSaved = "personal settings saved",
+	msgPersonalSettingsNotSaved = "personal settings not saved",
+	msgChecked = "checked",
+	msgNull = "",
+	msgBlank = "blank",
+	msgLevel = "Level ",
+	msgColumn = "Column",
+	msgRow = "Row",
+; Personalized settings
+	hKey_GridSpeechMode = "GridSpeechMode", ; ini key name
+	hKey_GridBrailleMode = "GridBrailleMode", ; ini key name
+	jvToggleGridSpeechMode="|ToggleGridSpeechMode:Grid Speech",	 ; function name then shown description
+	jvToggleGridBrailleMode="|ToggleGridBrailleMode:Grid Braille",	 ; function name then shown description
+	Section_ControlTypes = "ControlTypes",
+	Section_BrailleClasses = "BrailleClasses",
+; General Constants
+	string_delim = "|",
+	gi_mag_draw_highlights = 1, 	; for magic
+	LB_COUNT = 0x018B,
+	LB_getcursel = 0x0188,
+	TVGN_CARET = 0x0009,
+	TVGN_NEXT = 0x0001,
+	TVGN_PREVIOUS = 0x0002,
+	TVM_EDITLABELA = 0x110E,
+	TVM_EDITLABELW = 0x1141,
+	TVM_GETNEXTITEM = 0x110A
+
+Messages
+@msgPosMOfN
+%1 of %2
+@@
+@msgItemCount1
+%1 item
+@@
+@msgItemCount2
+%1 items
+@@
+EndMessages
+
+
+; All global variables start with "g" and a lowercase letter indicating their type string, int, handle or boolean
+Globals
+; True for debugging enabled (see autoStartEvent)
+	int inDebugging,
+; True for framework debugging
+	int fwDebug,
+; Property cache
+; GetTickCount() value at the time of the last full cache update
+	int giVA508cacheTick,
+; Handle of window to which the cache now applies
+	handle ghVA508cacheHwnd,
+; Properties cached
+	string gsVA508cacheCaption,
+	string gsVA508cacheValue,
+	string gsVA508cacheControlType,
+	string gsVA508cacheState,
+	string gsVA508cacheInstructions,
+	string gsVA508cacheItemInstructions,
+	int giVA508cacheDataStatus,
+; Cache of grid data for string grids
+; "valid" is not passed by the DLL; it is set (along with all the rest of these) by VA508GetGridData().
+; The rest are passed in a ^-delimited string from the DLL in the Value field.
+	string gsVA508cacheGridColHdr, 
+	int giVA508cacheGridColNum, 
+	int giVA508cacheGridColCnt,
+	string gsVA508cacheGridRowHdr, 
+	int giVA508cacheGridRowNum, 
+	int giVA508cacheGridRowCnt,
+	string gsVA508cacheGridCellVal, 
+	int giVA508cacheGridCellNum, 
+	int giVA508cacheGridCellCnt,
+; Handle of the window of the DLL for the application in focus.
+	handle ghVA508DLLWindow,
+; ID of registered VA508_Reg_Msg_ID Windows message.
+; Sent to the dispatch window and DLL-specific windows, obtained by RegisterWindowMessage
+	int giVA508messageID,
+; True if the app-specific DLL link has not yet been established.
+; This link is remade every time a VA508 app receives focus.
+	int gbVA508needToLinkToDLL,
+	string gsVA508TutorMessage,  ; saves a global tutor message variable that will be announced by JAWS when getCustomTutorMessage is automatically called if the user settings ask for it
+	int giVA508TutorReturnValue,
+	handle ghVA508tutorWindow, ; handle of the window where there was a custom tutor message
+	string gsVA508dataWindowTitle,
+	int giVA508dataWindowTitleLen,
+; Data field names and values for the last-queried control.
+	string gsVA508varData,
+	string gsVA508data,
+; A flag to suppress speech at certain times.
+	int gbVA508suppressEcho,
+	int glbSuppressFocusChange,
+; Custom braille types
+	string glbsTable,
+	string glbsTable2,
+; Custom control types for speech
+	string glbsTable3,
+	string glbsTable4,
+; personalized settings for how row and column headers are displayed in a table
+	int giGridSpeechMode,
+	int giGridBrailleMode,
+	int giAppHasBeenLoaded, ; keeps track of if the app has been loaded before so we don't need to pull the ini settings for personalized grids
+; Globals for ChangeEvent speaking
+	int giSuppressCaption,  ; use custom caption when event occurs but focus did not move
+	int giSuppressControlType,
+	int giSuppressState,
+	int giSuppressValue,
+	int giSuppressInstructions,
+	int giSuppressItemInstructions,
+	int giDidFocusChange, 	; did the focus event fire after the changeEvent did?  If so, scrap speaking anything becuase handleCustomWindows will announce it
+	handle ghFromChangeEvent,  ; handle of window that last called changeEvent
+	int lt_suppressHighlight,
+	int giCancelEvent,
+	int giSpokeCellUnit,
+	int giDebugMode
+
+;**************************************************************
+; Conversion functionality (cast of any type to any other type within reason)
+;**************************************************************
+Variant Function VA508Cast (variant Value)
+	return Value
+EndFunction
+
+;**************************************************************
+; Dodge for a stringSegmentCount anomaly in at least JAWS 8:
+; If the string ends with the delimiter, the final null segment is not counted.
+; This causes it to be counted.
+;**************************************************************
+int function VA508stringSegmentCount(string s, string sDelim)
+var
+	int segcount
+let segcount = stringSegmentCount(s, sDelim)
+if stringRight(s, 1) == sDelim then
+	let segcount = segcount +1
+endIf
+return segcount
+endFunction
+
+;**************************************************************
+; Classification of list types:  lb=listbox, lv=listview, lx=extended-select, lm=multiselect.
+;**************************************************************
+string function getListType(int typeCode)
+if typeCode == WT_ListView || typeCode == wt_listboxItem then
+	return "lv"
+elif typeCode == WT_ListBox then
+	return "lb"
+elif typeCode == WT_MultiSelect_ListBox then
+	return "lm"
+elif typeCode == WT_ExtendedSelect_ListBox then
+	return "lx"
+endIf
+; Return non-null, or things like stringContains("lb lm lx", getListType(typeCode)) will return 1!
+return "--"
+endFunction
+
+;**************************************************************
+; Detection of special focus situations.
+;**************************************************************
+int function isSpecialFocus(int includeAllDialogs)
+if menusActive() || userBufferIsActive() || inHJDialog() then
+	return True
+endIf
+if includeAllDialogs && dialogActive() then
+	return True
+endIf
+if (getWindowClass(getFocus()) == "#32771"
+&& getObjectTypeCode(getFocus()) == WT_ListBoxItem) then
+	; This is the Alt+Tab window.
+	return True
+endIf
+return False
+endFunction
+
+globals
+	object goCountDict,
+	string gsCountList
+;**************************************************************
+; Reports execution counts of functions/code blocks.
+;**************************************************************
+Void function watchCount(string sKey)
+var
+	int resetting,
+	string sKey1
+if !inDebugging then
+	return
+endIf
+
+let resetting = False
+if sKey == "*" then
+	let sKey = stringChopLeft(sKey, 1)
+	let resetting = True
+endIf
+
+if !sKey || resetting then
+	; Internal or external call to speak and reset counts.
+	var int i
+	let i = 1
+	while i
+		let sKey1 = stringSegment(gsCountList, "|", i+1)
+		if sKey1 then
+			if goCountDict(sKey1) then
+				sayMessage(OT_Message, formatString("%1 %2", sKey1, goCountDict(sKey1)))
+				dictSet(goCountDict, sKey1, 0)
+			endIf
+			let i = i +1
+		else
+			let i = 0  ; exits loop
+		endIf
+	endWhile
+	if !sKey then
+		return
+	endIf
+endIf
+
+; External call to count.
+if stringLeft(gsCountList, 1) != "|" then
+	let goCountDict = createObjectEx("Scripting.Dictionary", False)
+	let gsCountList = "|"
+endIf
+if !goCountDict then
+	return
+endIf
+dictDelta(goCountDict, sKey, 1)
+if !stringContains(gsCountList, "|"+sKey+"|") then
+	let gsCountList = gsCountList +sKey +"|"
+endIf
+scheduleFunction("watchCount", 8)
+endFunction
+
+;***************************************************************
+; Sends Message to hidden window, and retrieves result from window caption.
+; Has build in retry attempts and timeout
+;***************************************************************
+int Function VA508SendMessage(Handle Window, int wParam, int lParam)
+	var
+		int Result,
+		int working,
+		int pendingCount,
+		int pendingMax,
+		int retryCount,
+		int idx1,
+		int idx2,
+		int doSend,
+		string header1,
+		string header2,
+		string value
+
+	let Result = 0
+	if (Window != 0) then
+		let working = TRUE
+		let retryCount = 2 ; was 3
+		let pendingMax = 3 ; was 4
+		let doSend = TRUE
+
+		let header1 = GetWindowName(Window)
+		while working
+			if doSend then
+				; This condition should avoid "Unknown function call to VA508GetApplicationData" messages on application shutdown.
+				; The idea is to stop trying to send messages when the application closes.
+				; Otherwise, this function delays even the AutoFinishEvent for several seconds.
+				; GetAppFileName includes an extension and getActiveConfiguration does not,
+				; but == stops at the end of the shortest string, so it works.
+				; [DGL, 2007-05-24]
+				if getAppFileName() == getActiveConfiguration() && !InHJDialog () then
+					SendMessage(Window, giVA508messageID, wParam, lParam)
+				else
+					return 0
+				endIf
+				let doSend = FALSE
+				let pendingCount = pendingMax
+			endIf ; doSend
+
+			let header2 = GetWindowName(Window)
+			;	messageBox(getWindowName(StringToInt(StringSegment(header2, VA508_DLL_Data_Window_Delim, 3)))) ; ":"
+			if StringCompare(header1, header2, TRUE) == 0 then ; they are equal
+;				beep()
+				Delay(1,true)
+				let pendingCount = pendingCount - 1
+				if pendingCount < 1 then
+					let retryCount = retryCount - 1
+					if retryCount < 1 then
+						let working = FALSE
+					else
+						let doSend = TRUE
+					endIf
+				endIf
+			else ; headers are not equal so we have a new one
+				let working = false
+				let value = StringSegment(header2, VA508_DLL_Data_Window_Delim, 3) ; ":"
+				let Result = StringToInt(value)
+			endIf
+		endWhile
+	endIf ; is window handle valid
+	return Result
+EndFunction
+
+
+;**************************************************************
+; Uses MSAA to return a window name up to 4 K long even though getWindowName stops at 255 characters.
+; MSAA is only used when it seems necessary; getWindowName is used otherwise for efficiency.
+;**************************************************************
+string Function Get4KName(handle hWnd)
+var
+	string wName,
+	string mName,
+	int cutoffLen
+
+; Window names can reach 255 characters, but we choose an earlier cutoff for safety.
+let cutoffLen = 240
+
+let wName = GetWindowName(HWnd)
+if stringLength(wName) > cutoffLen
+|| (hasTitleBar(hwnd) && stringLength(wName) == 0) then
+	var
+		int childID,
+		object obj
+	let obj = GetObjectFromEvent(HWnd, -4, 0, childID)  ; -4 = ObjID_Client
+	let mName = obj.accName(0)
+	if stringLength(mName) > cutoffLen then
+		return mName
+	endIf
+endIf
+return wName
+EndFunction
+
+
+;***********************************************************************
+; Gets a value by its name from the data structure saved in gsVA508varData and gsVA508data.
+;***********************************************************************
+String Function VA508GetStringValue(string VarName)
+var
+	string Search,
+	string Result,
+	int idx,
+	int idx2,
+	int idx3,
+	int max,
+	int offset,
+	int len
+
+	let Result = ""
+	let Search = VA508_DLL_Data_Window_Delim + VarName + VA508_DLL_Data_Offset ; something like ":Caption="
+	let idx = StringContains(gsVA508varData, Search) ; returns starting character position
+
+	if idx > 0 then ; we found a match
+		let max = idx + 50 ; just in case of bad data - prevents infinite loop lock up
+		let idx = idx + StringLength(Search)
+		let idx2 = idx+1
+		while (SubString(gsVA508varData, idx2, 1) != VA508_DLL_Data_Length) && (idx2 < max)
+			let idx2 = idx2 + 1
+		endWhile
+		let idx3 = idx2 + 1
+		while (SubString(gsVA508varData, idx3, 1) != VA508_DLL_Data_Window_Delim) && (idx2 < max)
+			let idx3 = idx3 + 1
+		endWhile
+		let offset = StringToInt(SubString(gsVA508varData, idx, idx2-idx)) + 1
+		let len = StringToInt(SubString(gsVA508varData, idx2+1, idx3-idx2-1))
+		if len > 0 then
+			let Result = SubString(gsVA508data, offset, len)
+		EndIf
+	EndIf
+	return Result
+EndFunction
+
+;***********************************************************************
+; Retrieves one or more data items, as indicated by iQueryCode, for the given window.
+; Data ends up in gsVA508varData (names/indices) and gsVA508data (values).
+; hwnd is the handle of the window for which info is wanted
+; iQueryCode indicates what is wanted (VA508_QueryCode_* constants)
+;
+;gsVA508dataWindowTitle = caption:
+; caption:[next window handle]:varlen:var=offset,length:var=offset,len:data
+; varlen = from first to last :
+;***********************************************************************
+globals string gsVA508GetAppDataDebugBuf
+Void Function VA508GetApplicationData(handle hwnd, int iQueryCode)
+watchCount("*appData")
+var
+	handle hWindow,
+	handle nullHandle,
+	string sCaption,
+	string sSubTitle,
+	int idx,
+	int len,
+	string sData
+
+	let gsVA508varData = ""
+	let gsVA508data = ""
+let gsVA508GetAppDataDebugBuf = ""
+	let sData= ""
+
+	if fwDebug then
+		let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf
+		+formatString(
+			"VA508GetApplicationData execution info:\13\10Invocation: handle %1, iQueryCode %2",
+			intToString(hwnd), intToString(iQueryCode)
+			)
+	endIf
+
+	; hWindow becomes handle of data window received from dll window
+	let hWindow = VA508Cast(VA508SendMessage(ghVA508DLLWindow, hwnd, iQueryCode))
+	if fwDebug then
+		let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +formatString(
+			"\13\10VA508SendMessage(%1, %2) returns %3",
+			intToString(ghVA508DLLWindow), intToString(iQueryCode), intToString(hWindow)
+			)
+	endIf
+
+	; if more than 4k or 255char windows are chained together and window contains next windows hwnd like a linked list
+
+	while (hWindow != 0) && (hWindow != 1)
+
+		let sCaption= Get4KName(hWindow) ; uses MSAA to get the name of the dll Window
+		if fwDebug then
+			let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +formatString(
+				"\13\10sCaption from window %1: '%2'",
+				intToString(hWindow), sCaption
+				)
+		endIf
+		let hWindow = nullHandle
+
+		; Data window title and len are set in Initialization function
+		let sSubTitle = SubString(sCaption,1,giVA508dataWindowTitleLen)
+		if fwDebug then
+			let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +formatString(
+				"\13\10sSubtitle from caption: '%1'",
+				sSubtitle
+				)
+		endIf
+
+		if StringCompare(sSubTitle, gsVA508dataWindowTitle , TRUE) == 0 then ; just checking to make sure we have proper window
+			if fwDebug then
+				let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +"\13\10Data window title recognized"
+			endIf
+			let sCaption= StringChopLeft(sCaption, giVA508dataWindowTitleLen) ; get everything after the title
+			let idx = StringContains(sCaption, VA508_DLL_Data_Window_Delim) ; ":"
+			if idx > 1 then ; see if we have a handle embedded in caption
+				let hWindow = VA508Cast(StringToInt(SubString(sCaption, 1, idx-1)))
+				if fwDebug then
+					let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +formatString(
+						"\13\10Next window: %1", intToString(hWindow))
+				endIf
+			else
+				if fwDebug then
+					let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +"\13\10No next window"
+				endIf
+			endIf
+
+			let sCaption = StringChopLeft(sCaption, idx) ; pull out everything after handle
+			if fwDebug then
+				let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +formatString(
+					"\13\10Caption text saved (idx %1): '%2'",
+					intToString(idx), sCaption
+					)
+			endIf
+			let sData=sData+sCaption ; save what we pulled out into sData variable
+		endIf
+	EndWhile
+
+	if StringLength(sData) > 0 then  ; we have valid data
+		let idx = StringContains(sData, VA508_DLL_Data_Window_Delim) ; ":"
+		if idx > 1 then ; get data
+			let len = StringToInt(SubString(sData, 1, idx-1)) ; length is first delimiter, length is length of vars, var length/pos, and data
+			let sData = StringChopLeft(sData,idx-1) ; get data
+			let gsVA508varData = StringLeft(sData,len) ; variable data
+			; MessageBox(gsVA508varData) ; contains position and length of each property :Caption=0,2:
+			let gsVA508data = StringChopLeft(sData,len) ; actual data
+			;	messageBox(gsva508data)
+		endIf
+	else
+		if fwDebug then
+			let gsVA508GetAppDataDebugBuf = gsVA508GetAppDataDebugBuf +"\13\10No data to return."
+		endIf
+	EndIf
+EndFunction
+
+;***********************************************************************
+; this function is called from AutoStartEvent and AutoFinishEvent to reset all global variables for privacy reasons
+;***********************************************************************
+Void Function VA508ResetGlobals ()
+	let ghVA508DLLWindow = VA508cast(0)
+	let gsVA508dataWindowTitle = ""
+	let gsVA508tutorMessage = ""
+	let ghVA508tutorWindow = VA508cast(0)
+	let giVA508TutorReturnValue = 0
+	; Clear the cache of framework data.
+	VA508cacheUpdate(0)
+	let	gbVA508suppressEcho = FALSE
+	endFunction
+
+;***********************************************************************
+Void Function VA508EnsureInitialized ()
+var
+		int InstanceID,
+		handle DispatchWindow,
+		string className
+
+	if gbVA508needToLinkToDLL then	; CHECK FOR DLL LINK
+		let DispatchWindow = FindTopLevelWindow(VA508_DLL_Dispatcher_Hidden_Window_Class, "")
+		if DispatchWindow then	; CHECK FOR DISPATCH WINDOW
+			let ghVA508DLLWindow = VA508Cast(VA508SendMessage(DispatchWindow, VA508_Message_Get_DLL_With_Focus, 0))
+;			sayInteger(ghVA508DLLWindow)
+			if (ghVA508DLLWindow != 0) && (ghVA508DLLWindow != 1) then ; CHECK FOR VALID DLL WINDOW HANDLE
+				let className = GetWindowClass(ghVA508DLLWindow)
+				If StringCompare(className, VA508_DLL_Hidden_Main_Window_Class, TRUE) == 0 then ; dll window and main window are one in the same
+				; the dll window contains the name of the data window
+					let gsVA508dataWindowTitle = Get4KName(ghVA508DLLWindow)
+					let gsVA508dataWindowTitle = StringSegment(gsVA508dataWindowTitle, VA508_DLL_Data_Window_Delim, 1) + VA508_DLL_Data_Window_Delim
+					let giVA508dataWindowTitleLen = StringLength(gsVA508dataWindowTitle)
+					; sayString("linked")
+					let gbVA508needToLinkToDLL = FALSE
+				endIf	; check CLASS name
+			endIf ; check DLL window handle
+
+		endIf ; check for existence of DISPATCH window
+	endIf ; only call if we need to link2DLL
+
+	if gbVA508needToLinkToDLL then	; if not linked then clear and try again
+		let ghVA508DLLWindow = VA508cast(0)
+; keep this delay at 1 or first field may not function on startup
+		ScheduleFunction("VA508EnsureInitialized",1)
+	EndIf
+EndFunction
+
+;***********************************************************************
+; Get a property value from the cache.
+; iQueryCode:  The VA508_QueryCode_* constant indicating the wanted property.
+; sVal:  On return, the property value or null.
+; Returns 1 if the wanted property is found, 0 if not, and -1 on error.
+; On a return of 1, sVal is the property value; otherwise, it is null.
+;***********************************************************************
+int function VA508cacheGetVal(int iQueryCode, string byRef sVal)
+let sVal = ""
+if giVA508cacheDataStatus & VA508_QueryCode_Error then
+	return -1
+elif !(giVA508cacheDataStatus & iQueryCode) then
+	return 0
+elif iQueryCode == VA508_QueryCode_Caption then
+	let sVal = gsVA508cacheCaption
+elif iQueryCode == VA508_QueryCode_Value then
+	let sVal = gsVA508cacheValue
+elif iQueryCode == VA508_QueryCode_Control_Type then
+	let sVal = gsVA508cacheControlType
+elif iQueryCode == VA508_QueryCode_State then
+	let sVal = gsVA508cacheState
+elif iQueryCode == VA508_QueryCode_Instructions then
+	let sVal = gsVA508cacheInstructions
+elif iQueryCode == VA508_QueryCode_Item_Instructions then
+	let sVal = gsVA508cacheItemInstructions
+else
+	; This should not happen in production and indicates a programming error.
+	beep()
+	return -1
+endIf
+return 1
+endFunction
+
+;***********************************************************************
+; Update the property cache.  Called only by VA508getComponentProp() and VA508 ResetGlobals
+; hwnd:  The window handle of interest, or 0 to clear the cache.
+;***********************************************************************
+Void Function VA508CacheUpdate (handle hwnd)
+var
+	int iQueryCode,
+	int iStatus,
+	string sVal
+let iQueryCode = 0
+if hwnd then
+	let iQueryCode = VA508_QueryCode_All
+endIf
+
+; Clear the cache first.
+let giVA508cacheTick = 0
+let ghVA508cacheHwnd = VA508cast(0)
+let gsVA508cacheCaption = ""
+let gsVA508cacheValue = ""
+let gsVA508cacheControlType = ""
+let gsVA508cacheState = ""
+let gsVA508cacheInstructions = ""
+let gsVA508cacheItemInstructions = ""
+let giVA508cacheDataStatus = 0
+; Clear grid data also.
+VA508getGridData("",0)
+
+; If we're just clearing the cache, we're done.
+if iQueryCode == 0 then
+	return
+endIf
+
+; Replace the just-cleared cache from the framework.
+; VA508getApplicationData should have been called by the caller already.
+let iStatus = StringToInt(VA508GetStringValue(VA508_FieldName_Data_Status))
+let giVA508cacheTick = getTickCount()
+let ghVA508cacheHwnd = hwnd
+let giVA508cacheDataStatus = iStatus
+if giVA508cacheDataStatus & VA508_QueryCode_Caption then
+	let gsVA508cacheCaption = VA508GetStringValue(VA508_FieldName_Caption)
+endIf
+if giVA508cacheDataStatus & VA508_QueryCode_Value then
+	let gsVA508cacheValue = VA508GetStringValue(VA508_FieldName_Value)
+	; Grid data shows up in Value, so only try to get it if there's something to get.
+	VA508getGridData(gsVA508cacheValue, 1)
+endIf
+if giVA508cacheDataStatus & VA508_QueryCode_Control_Type then
+	let gsVA508cacheControlType = VA508GetStringValue(VA508_FieldName_Control_Type)
+endIf
+if giVA508cacheDataStatus & VA508_QueryCode_State then
+	let gsVA508cacheState = VA508GetStringValue(VA508_FieldName_State)
+endIf
+if giVA508cacheDataStatus & VA508_QueryCode_Instructions then
+	let gsVA508cacheInstructions = VA508GetStringValue(VA508_FieldName_Instructions)
+endIf
+if giVA508cacheDataStatus & VA508_QueryCode_Item_Instructions then
+	let gsVA508cacheItemInstructions = VA508GetStringValue(VA508_FieldName_Item_Instructions)
+endIf
+EndFunction
+
+;***********************************************************************
+; Return the framework field name corresponding to the given query code.
+;***********************************************************************
+string function VA508FieldNameFromQueryCode(int iQueryCode)
+var
+	string sFieldName
+if iQueryCode == VA508_QueryCode_Caption then
+	let sFieldName = VA508_FieldName_Caption
+elif iQueryCode == VA508_QueryCode_Value then
+	let sFieldName = VA508_FieldName_Value
+elif iQueryCode == VA508_QueryCode_Control_Type then
+	let sFieldName = VA508_FieldName_Control_Type
+elif iQueryCode == VA508_QueryCode_State then
+	let sFieldName = VA508_FieldName_State
+elif iQueryCode == VA508_QueryCode_Instructions then
+	let sFieldName = VA508_FieldName_Instructions
+elif iQueryCode == VA508_QueryCode_Item_Instructions then
+	let sFieldName = VA508_FieldName_Item_Instructions
+else
+	; This should not happen in production and indicates a programming error.
+	beep()
+	return 0
+endIf
+return sFieldName
+endFunction
+
+;***********************************************************************
+; Return the query code corresponding to the given framework field name.
+;***********************************************************************
+int function VA508QueryCodeFromFieldName(string sFieldName)
+var
+	int iQueryCode
+if sFieldName == VA508_FieldName_Caption then
+	let iQueryCode = VA508_QueryCode_Caption
+elif sFieldName == VA508_FieldName_Value then
+	let iQueryCode = VA508_QueryCode_Value
+elif sFieldName == VA508_FieldName_Control_Type then
+	let iQueryCode = VA508_QueryCode_Control_Type
+elif sFieldName == VA508_FieldName_State then
+	let iQueryCode = VA508_QueryCode_State
+elif sFieldName == VA508_FieldName_Instructions then
+	let iQueryCode = VA508_QueryCode_Instructions
+elif sFieldName == VA508_FieldName_Item_Instructions then
+	let iQueryCode = VA508_QueryCode_Item_Instructions
+else
+	; This should not happen in production and indicates a programming error.
+	beep()
+	return 0
+endIf
+return iQueryCode
+endFunction
+
+;***********************************************************************
+; Gets a single component property immediately.
+; hwnd:  Window about which to ask.
+; xProp:  VA508_QueryCode_* or VA508_FieldName_* constant indicating or naming the wanted property.
+; iCacheHandling:  A VA508_Cache_* constant determining how to handle the property cache on this call.
+; sVal:  On return, the value of the property if found, otherwise undefined.
+; Returns 1 if the property has a custom value, 0 if not, and -1 on error.
+; iCacheHandling constant usage in detail:
+;	VA508_Cache_Use:
+;		If hwnd is the window cached already and the cache is not too old, pull the property from the cache and don't ask the framework.
+;		If hwnd is not the cached window or the cache is too old, rebuild the cache completely while getting the property.
+;	VA508_Cache_Update:  Rebuild the cache unconditionally from the framework while getting the property.
+;	VA508_Cache_Skip:
+;		Get the property directly from the framework.
+;		If hwnd is the cached window, update the cache entry for the property in the process.
+; Called by VA508SayData for Speech and controlPropGet for Braille
+;***********************************************************************
+int Function VA508GetComponentProp(handle hWnd, variant xProp, int iCacheHandling, string byRef sVal)
+Var
+	string sProp,
+	int iQueryCode,
+	Int iDataStatus
+
+; ***** Code from here to the next short set of stars can be called 40 or more times per second by Braille code.
+; For efficiency, frequent callers should pass a query code, not a field name here.
+
+if stringToInt(xProp) then
+	let iQueryCode = VA508cast(xProp)
+	let sProp = ""  ; Don't figure that one out unless we need it.
+else
+	let sProp = VA508cast(xProp)
+	let iQueryCode = VA508QueryCodeFromFieldName(sProp)
+endIf
+
+; Optimize by far the most frequent call case.
+let sVal = ""
+if iCacheHandling == VA508_Cache_Use
+&& hwnd == ghVA508cacheHwnd
+&& getTickCount() -giVA508cacheTick < VA508_Cache_Mils then
+	; Use the cached value and don't call on the framework at all this time.
+	watchCount("cacheUse")
+	return VA508cacheGetVal(iQueryCode, sVal)
+
+; ***** End of 40-time-per-second code block.
+
+elif iCacheHandling == VA508_Cache_Skip then
+	; Always go to the framework for these.  We'll need the field name for that.
+	if !sProp then
+		let sProp = VA508FieldNameFromQueryCode(iQueryCode)
+	endIf
+	watchCount("cacheSkip")
+	VA508GetApplicationData(hWnd, iQueryCode)
+	let iDataStatus = StringToInt(VA508GetStringValue(VA508_FieldName_Data_Status))  ;"DataStatus"
+
+	if iDataStatus & iQueryCode then
+		let sVal = VA508GetStringValue(sProp)
+		if hwnd == ghVA508cacheHwnd then
+			; A trick to re-use VA508cacheSetVals for this.
+			; Makes sure the dataStatus bit is set and sets the property value.
+			VA508cacheSetVals(iQueryCode, iDataStatus, sVal, sVal, sVal, sVal, sVal, sVal)
+		endIf
+		return 1
+	elif iDataStatus & VA508_QueryCode_Error then
+		; Should not happen, but force the next call to update the cache if it does.
+		if hwnd == ghVA508cacheHwnd then
+			let giVA508cacheTick = 0
+		endIf
+		return -1
+	else
+		; Property not handled by the framework.
+		if hwnd == ghVA508cacheHwnd then
+			if giVA508cacheDataStatus & iQueryCode then
+				; Property removed from framework (probably never happens).
+				; Remove the status bit from the cache as well.
+				; let giVA508cacheDataStatus = giVA508cacheDataStatus -iQueryCode
+			endIf
+		endIf
+		return 0
+	endIf
+endIf
+
+; All remaining use cases are rebuild-cache cases.
+
+; Clear the cache first.
+VA508cacheUpdate(0)
+
+; Get all properties from the framework.
+watchCount("cacheUpdate")
+VA508GetApplicationData(hWnd, VA508_QueryCode_All)
+
+; Update all properties in the cache.
+VA508cacheUpdate(hwnd)
+
+; Return the property sought in the first place.
+
+return VA508cacheGetVal(iQueryCode, sVal)
+EndFunction
+
+;**********************************************************************
+; Update the property cache when the framework sends an event indicating property changes.
+; Called only from VA508ChangeEvent and getComponentProp with skip
+; should update only items that have changed and getcomponentProp
+;**********************************************************************
+Void Function VA508CacheSetVals (handle hwnd, int iDataStatus, string sCaption, string sValue, string sControlType, string sState, string sInstructions, string sItemInstructions)
+; Don't mess with the cache if it doesn't apply to this window.
+if hwnd != ghVA508cacheHwnd then
+	return
+endIf
+
+; This is in case the framework suddenly decides to include a property not previously included by tossing it at us in an event call.
+; This will probably never happen, but this line shouldn't hurt anything anyway.
+let giVA508cacheDataStatus = giVA508cacheDataStatus | iDataStatus
+
+; Hand out property changes based on what we're told changed.
+if iDataStatus & VA508_QueryCode_Caption then
+	let gsVA508cacheCaption = sCaption
+endIf
+if iDataStatus & VA508_QueryCode_Value then
+	let gsVA508cacheValue = sValue
+endIf
+if iDataStatus & VA508_QueryCode_Control_Type then
+	let gsVA508cacheControlType = sControlType
+endIf
+if iDataStatus & VA508_QueryCode_State then
+	let gsVA508cacheState = sState
+endIf
+if iDataStatus & VA508_QueryCode_Instructions then
+	let gsVA508cacheInstructions = sInstructions
+endIf
+if iDataStatus & VA508_QueryCode_Item_Instructions then
+	let gsVA508cacheItemInstructions = sItemInstructions
+endIf
+EndFunction
+
+;**********************************************************************
+; Fills the VA508cacheGrid* globals.
+; called by va508ChacheUpdate
+; fromWhere:  Hwnd of window to query (presumably a grid), or Value field already obtained from such a window.
+; Returns True if this is a grid and False otherwise.
+; Side effects:  Modifies all g?VA508cacheGrid* globals.
+; TODO:  If a row or column header or cell value contains a ^, False will be returned and no grid data will be set.
+;**********************************************************************
+int Function VA508GetGridData (variant fromWhere, int dontCheck)
+watchCount("grid")
+var
+	int iResult,
+	string sVal
+
+; It's not a grid until we say it's a grid...
+let gsVA508cacheGridColHdr = ""
+let giVA508cacheGridColNum = 0
+let giVA508cacheGridColCnt = 0
+let gsVA508cacheGridRowHdr = ""
+let giVA508cacheGridRowNum = 0
+let giVA508cacheGridRowCnt = 0
+let giVA508cacheGridCellNum = 0
+let giVA508cacheGridCellCnt = 0
+let gsVA508cacheGridCellVal = ""
+if !fromWhere then
+	return False
+endIf
+
+if stringToInt(fromWhere) && !stringContains(fromWhere, "^") && !dontCheck then
+; A window handle.
+; sayString("grid check")
+	let iResult = VA508GetComponentProp(fromWhere, VA508_FieldName_Value, VA508_Cache_Skip, sVal)
+	If iResult < 1 then
+		return False
+	endIf
+else
+	; A value property already obtained from somewhere.
+	let sVal = fromWhere
+endIf
+
+if VA508stringSegmentCount(sVal, "^") != 9 then
+	; Got a value, but it's not grid data.
+	return False
+endIf
+
+; sayString("valid grid found by ggd")
+let gsVA508cacheGridColHdr = stringSegment(sVal, "^", 1)
+let giVA508cacheGridColNum = stringToInt(stringSegment(sVal, "^", 2))
+let giVA508cacheGridColCnt = stringToInt(stringSegment(sVal, "^", 3))
+let gsVA508cacheGridRowHdr = stringSegment(sVal, "^", 4)
+let giVA508cacheGridRowNum = stringToInt(stringSegment(sVal, "^", 5))
+let giVA508cacheGridRowCnt = stringToInt(stringSegment(sVal, "^", 6))
+; The cell value is at the end of the string from the DLL.
+let giVA508cacheGridCellNum = stringToInt(stringSegment(sVal, "^", 7))
+let giVA508cacheGridCellCnt = stringToInt(stringSegment(sVal, "^", 8))
+let gsVA508cacheGridCellVal = stringSegment(sVal, "^", 9)
+return True
+EndFunction
+
+;***********************************************************************
+; this function is called from handleCustomWindows and should get called whenever tab, insert+tab are pressed.  It also may get called by sayLine and Braille functions
+; Returns False if we should use default and True if this function announced the control and we don't need to do anything else
+;***********************************************************************
+int Function VA508SayData(handle hwnd)
+var
+	int iResult,
+	int iResultInstructions,
+	int iResultValue,
+	int iResultState,
+	int bUseDefault,
+	string Caption,
+	string Value,
+	string ControlType,
+	string State,
+	string Instructions,
+	string ItemInstructions,
+	string Text,
+	handle tempHandle,
+	int TypeCode,
+	int subTypeCode,
+	string StaticText,
+	string position,
+	string Grouping,
+	string GroupingType,
+	int special,
+	string newControlType,
+	int iDataStatus
+
+	; clear global variables, this should happen every time tab is pressed
+	let gsVA508tutorMessage = ""
+	let ghVA508tutorWindow = tempHandle  ; which is now null
+	let giVA508TutorReturnValue = 0
+
+	let special = FALSE
+
+	if gbVA508needToLinkToDLL then
+		return False
+	endIf
+	; the assumption is made that if the return value is 0 or less, that "" will be returned and not garbage
+
+	let iResult = VA508getComponentProp(hwnd, VA508_QueryCode_Caption, VA508_Cache_Update, Caption)
+
+	if iResult >= 0 then  ; Framework has nothing for this window, -1 means error, if 0 this passes
+		let bUseDefault = (iResult <= 0)
+		let iResult = VA508getComponentProp(hwnd, VA508_QueryCode_Value, VA508_Cache_Use, Value)
+		let iResultValue = iResult
+		let bUseDefault = bUseDefault && (iResult <= 0)
+		let iResult = VA508getComponentProp(hwnd, VA508_QueryCode_Control_Type, VA508_Cache_Use, ControlType)
+		let bUseDefault = bUseDefault && (iResult <= 0)
+		let iResult = VA508getComponentProp(hwnd, VA508_QueryCode_State, VA508_Cache_Use, State)
+		let iResultState = iResult
+		let bUseDefault = bUseDefault && (iResult <= 0)
+		let iResultInstructions = VA508getComponentProp(hwnd, VA508_QueryCode_Instructions, VA508_Cache_Use, Instructions)
+		let iResult = VA508getComponentProp(hwnd, VA508_QueryCode_Item_Instructions, VA508_Cache_Use, ItemInstructions)
+	else
+		let bUseDefault = TRUE ; because caption had error we can assume we should use default unless a special case below is needed
+	endif
+
+	let TypeCode = GetWindowTypeCode(hWnd)
+	if !typeCode then
+		let typeCode = getObjectSubTypeCode()
+	Endif
+
+	if isSpinBox(hwnd) then ; standard delphi spinboxes are not announced correctly
+		if VA508getComponentProp(hwnd, VA508_QueryCode_Control_Type, VA508_Cache_Use, ControlType) < 1 then
+			let ControlType = ctSpinBox
+			let special = true
+		Endif ; check for presence of custom controlType
+	elif TypeCode == wt_listbox || TypeCode == wt_listView then ; position in group is wrong for standard delphi list boxes
+		let special = true
+	elif getWindowClass(hwnd) == wcTTreeView then ; to remove unchecked from value
+			let special = true
+	elif getWindowClass(hwnd) == "TORComboEdit" || getWindowClass(hwnd) == "TORComboBox" then
+		let special = True
+	endif ; check for spinBox
+
+	if bUseDefault == FALSE || special then
+		if VA508getGridData(getFocus(),0) > 0 && isPcCursor() && !userBufferIsActive() then
+			let value = getCurrentCellHeadersData()
+		elif typeCode == wt_listBox || typecode == wt_listView then 
+			if iResultValue < 1 then ; the framework either return nothing or an error
+				let value = getAccName()
+			Endif
+			if iResultState < 1 then ; the framework either return nothing or an error
+				if !getObjectState() then
+					let state = getAccState()
+				endif
+			Endif
+		elif typeCode == wt_treeview then
+			if iResultValue < 1 then
+				let value = getAccValue()
+			Endif
+			; add this state even if another state exists and no matter where the value came from
+			let state = tvGetFocusItemExpandStateString (hwnd) + " " + state
+		Endif ; end check for special control types
+
+		if ControlType && ControlTypeFound(ControlType, newControlType) then
+			let ControlType = newControlType
+		EndIf ; end custom spoken control type
+		sayControlEx(hwnd, Caption, ControlType, State, Grouping, GroupingType, Value, PositionInGroup(), StaticText)
+	else ; use default
+		return False
+	EndIf ; use default?
+
+	;Say(ItemInstructions,OT_TUTOR)  ; should always say item instructions if they exist?
+	; See JAWS 8's tutorialHelp.jss::sayTutorialHelp() for the rationale for using this SayUsingVoice call.
+	; TODO: This may speak in a few undesirable places depending on user settings.
+	var
+		int ot
+	let ot = OT_Tutor
+	if !shouldItemSpeak(OT_Tutor) && False then
+		; TODO: "False" above should be "code invoked from script", but I see no way to establish that.
+		let ot = OT_Line
+	endIf
+	sayUsingVoice(VCTX_Message, itemInstructions, ot)
+	If iResultInstructions > 0 then
+		let ghVA508tutorWindow = hWnd
+		let gsVA508tutorMessage = Instructions
+		let giVA508TutorReturnValue = iResultInstructions
+	EndIf ; instructions
+	return True
+EndFunction
+
+;***************************************************************************
+; updated to announce custom information for listview/listbox type controls
+; spoken order for listbox and listview = value or name, state, then position
+; the name of the control is not announced here for listboxes
+; customType = caption,type,value,state
+; checkbox = caption,type,state
+; radioButton = caption, type,state
+; button = caption,type, state (use default)
+; link = caption, type, state
+; comboBox = value, position
+; edit = name, type, value, state (use default)
+; spinner = name, type, value, state (use default)
+; multiline edit = current line 
+; page tab = all page tabs
+; list item = state, value, position
+; tree item = value, state, position, 
+; listbox/listview = not possible
+; treeview = not possible
+; dialog = not possible
+; grid = caption, type, value, state
+; menu = use default
+; slider = caption, type, value
+; progressBar = caption, type, value
+; groupbox = not possible
+;***************************************************************************
+Script SayLine()
+var
+	int theTypeCode,
+	string strVal,
+	string strState,
+	handle hwnd,
+	string strControlType
+
+;sayString("sayline")
+if !isPcCursor() || isSpecialFocus(False) then
+	performScript sayLine()
+	return
+Endif
+
+/*
+; Update the cache
+VA508GetComponentProp(hwnd, VA508_FieldName_Value, VA508_Cache_Update, strVal)
+
+let hwnd = getFocus()
+Let TheTypeCode = GetWindowSubTypeCode (GetFocus ())
+If !TheTypeCode then  ; if any unknown typeCode then get the sub type code from MSAA
+	Let TheTypeCode = GetObjectSubTypeCode ()
+EndIf
+
+; if we have a custom control type, then we really don't know how much or little information should be spoken, so say it all!
+if theTypeCode == wt_unknown && VA508GetComponentProp(hwnd, VA508_FieldName_Control_Type, VA508_Cache_Use, strControlType) >  0 then ; make assumption that anything that has a value has child objects, doesn't cover case where it isn't a list but has a custom state but not a custom value
+	VA508SayData(hwnd)
+	return
+Endif
+
+; this only applies to list boxes
+if stringContains("lb lm lx", getListType(theTypeCode))  ; doesn't apply to listview, should pick up tree with custom value
+&& !VA508GetGridData(hwnd) then ; grids should be handled differently though, so if value but grid don't use this code, use code in sayLine function
+	; BOTH value and state are custom
+	if VA508GetComponentProp(hwnd, VA508_FieldName_Value, VA508_Cache_Use, strVal) >  0 &&
+ 	VA508GetComponentProp(hwnd, VA508_FieldName_State, VA508_Cache_Use, strState) >  0 then
+		SayMessage (OT_LINE, strVal)
+		SayMessage (OT_item_state, strState)  ; custom expanded/collapsed states should be handled by the framework
+		SayMessage (OT_POSITION, PositionInGroup ())
+		return
+	Endif
+	; only VALUE is custom, use state from jaws
+	if VA508GetComponentProp(hwnd, VA508_FieldName_Value, VA508_Cache_Use, strVal) >  0 &&
+ 	VA508GetComponentProp(hwnd, VA508_FieldName_State, VA508_Cache_Use, strState) < 1 then
+		SayMessage (OT_line, strVal)
+		If (theTypeCode == WT_TREEVIEW || theTypecode == WT_TREEVIEWITEM) then
+			SayTVFocusItemExpandState (hwnd)  ; getObjectState() doesn't return correct info for tree views
+		Else
+			SayMessage  (ot_item_state,getObjectState())
+		endif
+		SayMessage (OT_POSITION, PositionInGroup ())
+		return
+	Endif
+	; only STATE is custom - current case for checklist box
+ 	if VA508GetComponentProp(hwnd, VA508_FieldName_State, VA508_Cache_Use, strState) > 0 &&
+	VA508GetComponentProp(hwnd, VA508_FieldName_Value, VA508_Cache_Use, strVal) <  1 then
+		Let strVal = GetAccName()
+		SayMessage (OT_line, strVal)
+		SayMessage (OT_item_State, strState)
+		SayMessage (OT_POSITION, PositionInGroup ())
+		return
+	EndIf  ; only state
+Endif ; are we on a listbox or a custom control that has it's value set
+
+; another special case for listboxes
+; no custom state or value found but need to use msaa for listboxes
+; for standard listboxes that JAWS has trouble announcing not selected for
+if stringContains("lb lm lx", getListType(theTypeCode)) then  ; doesn't apply to listview, only listbox, should pick up tree with custom value
+	say(getAccState(),ot_item_state)
+	say(getAccName(),ot_selected_item) ; uses msaa for list item, falls back on getObjectValue()
+	SayMessage (OT_POSITION, PositionInGroup ())
+	return
+Endif
+*/
+; performScript sayLine()  ; this function in default is likely to call the function sayLine below
+sayLine()
+EndScript
+
+;*****************************************************************************************
+String Function tvGetFocusItemExpandStateString (handle hwnd)
+	if tvGetFocusItemExpandState (hwnd) then
+		return "opened"
+	else
+		return "closed"
+	Endif
+EndFunction
+
+;*****************************************************************************************
+; also called by control+home and control+end in grid
+; called by script sayLine for edits and buttons when sayLine command is pressed
+void Function SayLine(int iDrawHighlights)
+var
+	int typeCode,
+	int subTypeCode,
+	handle hwnd,
+	string strState,
+	string strCaption,
+	string strValue,
+	string strControlType,
+	string strPosition,
+	int special
+
+;sayString("sayline")
+if !isPCCursor() || isSpecialFocus(False)  then
+	return sayLine(iDrawHighlights)
+endIf
+let hwnd = getFocus()
+let typeCode = getWindowTypeCode(hwnd)
+; sayInteger(typeCode)
+let subTypeCode = getWindowSubTypeCode(hwnd)
+
+if stringContains("lb lm lx", getListType(TypeCode)) then 
+	let special = true ; for listbox without customizations we need this for msaa names to be announced
+elif getObjectTypeCode() == wt_listboxItem then ; for list view
+	let special = true ; for listview without customizations we need this for position in group to be spoken
+elif (getWindowClass(hwnd) == "TORComboEdit" || getWindowClass(hwnd) == "TORComboBox") && positionInGroup() then
+	let special = True
+EndIf
+
+; simple call to update the cache
+VA508GetComponentProp(getFocus(), VA508_FieldName_Control_Type, VA508_Cache_Update, strControlType)
+
+; added jda 4-22-08 to make standard edit combos announce blank when empty and nothing else, also prevents speaking of caption on standard edit combos when sayLine is pressed
+if getWindowClass(hwnd) == wcEdit && getWindowClass(getParent(hwnd)) == wcTComboBox then
+	let typeCode = wt_editCombo
+endif
+
+; combo boxes should not have their name spoken
+if (typeCode == wt_edit && subTypeCode != wt_multiline_edit) ; also covers edit comboes, and spinboxes because they have a typeCode of edit
+|| typeCode == wt_button then ; also handles edit & edit comboes
+	; sayInteger(subTypeCode)
+	if VA508SayData(hwnd) then
+		return
+	else			; else fall through to regular sayline
+		sayLine(iDrawHighlights)	 ; calls internal sayline function as default has no sayline function
+		return
+	endIf
+; if we have a custom control type, then we really don't know how much or little information should be spoken, so say it all!
+elif TypeCode == wt_unknown && VA508GetComponentProp(hwnd, VA508_FieldName_Control_Type, VA508_Cache_Use, strControlType) >  0 then ; make assumption that anything that has a value has child objects, doesn't cover case where it isn't a list but has a custom state but not a custom value
+	VA508SayData(hwnd)
+	return
+elif VA508getGridData(getFocus(),0) > 0 then  ; GRID
+	say(getCurrentCellHeadersData(),ot_line)
+	return
+elif VA508GetComponentProp(getFocus(), VA508_FieldName_Caption, VA508_Cache_Use, strCaption) < 1 &&
+VA508GetComponentProp(getFocus(), VA508_FieldName_Control_Type, VA508_Cache_Use, strControlType) < 1 &&
+VA508GetComponentProp(getFocus(), VA508_FieldName_Value, VA508_Cache_Use, strValue) < 1 &&
+VA508GetComponentProp(getFocus(), VA508_FieldName_State, VA508_Cache_Use, strState) < 1  &&
+!special then
+	sayLine(iDrawHighlights)	 ; calls internal sayline function as default has no sayline function
+	return
+elif subTypeCode == wt_multiline_Edit then
+	sayLine(iDrawHighlights)	 ; calls internal sayline function as default has no sayline function
+	return
+endIf
+
+; now we have at least one custom property and it is stored in our local variable or we are special
+
+let strPosition = PositionInGroup()
+if getWindowClass(hwnd) == "TORComboEdit" then
+	let typeCode = WT_EditCombo
+elif getWindowClass(hwnd) == "TORComboBox" then
+	let typeCode = WT_ComboBox
+endIf
+
+; now let's set everything from default if there wasn't a custom framework property
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Caption, VA508_Cache_Use, strCaption) < 1 then
+	;let strCaption = getAccName()
+	let strCaption = getObjectName() ; don't need to worry about child objects
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Control_Type, VA508_Cache_Use, strControlType) < 1 then
+	let strControlType = getObjectType()
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Value, VA508_Cache_Use, strValue) < 1 then
+	let strValue = getAccValue()
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_State, VA508_Cache_Use, strState) < 1 then
+	let strState = getObjectState()
+Endif
+if typeCode == wt_treeview then
+	let strState = tvGetFocusItemExpandStateString (hwnd) + " " + strState
+Endif
+
+; caption is typically not announced here, so no custom caption is announced unless we think we are on a control with no children and no value
+; ControlType is typically not announced here, so no custom control type is announced
+; controls with custom values should be handled by sayLine script and thus are not handled here
+; instructions and item instructions are typically not announced when sayLine is pressed that is why custom ones are not set here
+
+if typeCode == wt_checkbox ||
+typeCode == wt_radiobutton then
+	say(strCaption,ot_control_name)
+	say(strControlType,ot_control_type)
+	say(strState,ot_item_state)
+Elif typeCode == wt_comboBox || typeCode == WT_EditCombo then
+	if !strValue then
+		let strValue = " "
+	endIf
+	say(strValue,ot_line)
+	; jda added 4-22-08 if statement to prevent position in group from being announced when tor edit combo box is empty
+	if !(strValue == " " && stringLength(strValue)) then
+		say(strPosition,ot_position)
+	Endif
+Elif typeCode == wt_slider ||
+typeCode == wt_progressBar then
+	say(strCaption,ot_control_name)
+	say(strControlType,ot_control_type)
+	say(strValue,ot_selected_item)
+elif stringContains("lb lm lx", getListType(typeCode)) then
+	say(strValue,ot_selected_item)
+	say(strState,ot_item_state)
+	say(strPosition,ot_position)
+elif typecode == wt_listview then ; for list views
+	say(strValue,ot_selected_item)
+	say(strState,ot_item_state)
+	say(strPosition,ot_position)
+elif typeCode == wt_treeview then
+	; no level needs to be announced here
+	say(strValue,ot_selected_item)
+	say(strState,ot_item_state)
+	say(strPosition,ot_position)	
+Else ; for anything else speak everything
+	if VA508SayData(hwnd) then
+		return
+	else
+		sayLine(iDrawHighlights)	; this should never get called, here as backup!
+	endif
+Endif
+EndFunction
+
+;****************************************
+; this function should replace sayObjectTypeAndText
+int Function HandleCustomWindows(handle hwnd)
+;		sayString(getWindowClass(hwnd))
+
+	if getWindowClass(hwnd) == wcTComboBox && getWindowClass(getFirstChild(hwnd)) == wcEdit then
+		return True
+	endif
+
+	if glbSuppressFocusChange then
+		let glbSuppressFocusChange = FALSE
+		return true
+	endif
+
+	; don't waste our time processing
+	if hWnd == 0 || getWindowClass(hWnd) == "Invalid" then
+		return true
+	Endif
+
+	if VA508SayData(hwnd) then
+		; sayString("custom")
+		return true  ; customizations were announced
+	else
+		; sayString("use default")
+		return false ; we are using default code in JAWS
+	endIf
+EndFunction
+
+; called first
+;************************************************************************
+void Function	SayTutorialHelp (int iSubType, int flag)
+	If (GetCurrentWindow() == ghVA508tutorWindow) then
+		If giVA508TutorReturnValue > 0 then  ; if we have a global tutor message announce it
+			if gsVa508tutorMessage == " " && stringLength(gsva508tutorMessage) == 1 then
+				return ; prevents blank from being announced when custom tutor message is " "
+			endif
+		Endif
+	Endif
+	SayTutorialHelp (iSubType, flag)
+EndFunction
+
+;***********************************************************************
+; JAWS internally calls this function... in JAWS 7.1 and higher
+;***********************************************************************
+String Function GetCustomTutorMessage ()
+	If (GetCurrentWindow() == ghVA508tutorWindow) then
+		If giVA508TutorReturnValue > 0 then  ; if we have a global tutor message announce it
+			Return gsVA508tutorMessage ; if " " then JAWS may announce blank when insert+tab is pressed
+		EndIf
+	EndIf
+	Return getCustomTutorMessage()
+EndFunction
+
+;**********************************************************************
+; initialize variables and tell code to perform handshake with dispatch window.  Reset any globals in case other application left them in memory which should not be the case though
+;**********************************************************************
+Void Function AutoStartEvent ()
+let inDebugging = False
+let fwDebug = False
+let giDebugMode = 0
+if fileExists(getJAWSSettingsDirectory() +"\\debug.ini") then
+	let inDebugging = True
+endIf
+if fileExists(getJAWSSettingsDirectory() +"\\fwdebug.ini") then
+	let fwDebug = True
+endIf
+	let gbVA508needToLinkToDLL = TRUE
+	let giVA508messageID = RegisterWindowMessage(VA508_Reg_Msg_ID)
+	VA508ResetGlobals()
+	VA508EnsureInitialized()
+	UpdateBrailleClasses()
+	UpdateControlTypes()
+If !giAppHasBeenLoaded Then
+	LoadPersonalSettings()	; load personal settings
+	let giAppHasBeenLoaded=TRUE
+EndIf
+
+EndFunction
+
+;**********************************************************************
+; called when user alt+tabs out of application, resets all global variables and forces the application to re-initialize next time.  This helps to ensure patient privacy as no patient data is left in hidden windows.
+;**********************************************************************
+Void Function AutoFinishEvent()
+var
+	object nullObject
+
+	let gbVA508needToLinkToDLL = TRUE
+	VA508ResetGlobals()
+EndFunction
+
+;**********************************************************************
+; called when JAWSKey+Q is pressed to announce script file settings that are loaded and module file name that is being used
+;**********************************************************************
+Script ScriptFileName()
+; one line of debugging code
+if !giDebugMode then
+	ScriptAndAppNames(msgScriptSetName)
+Else ; start debug mode
+	DisplayDebugData()
+Endif ; end debug mode
+EndScript
+
+;***********************************************************************
+; added by jda 4-22-08
+;***********************************************************************
+void Function DisplayDebugData()
+var
+	string strCaption,
+	string strControlType,
+	string strValue,
+	string strState,
+	string strInstructions,
+	string strItemInstructions,
+	int iCustomInfo,
+	string sDisplayText
+	
+let sDisplayText = ""
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Caption, VA508_Cache_Use, strCaption) > 0 then
+	;say("has custom name",ot_jaws_message)
+	;say(strCaption,ot_control_name)
+	let sDisplayText = sDisplayText + "Custom Name: " + strCaption + "\n"
+	let iCustomInfo = true
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Control_Type, VA508_Cache_Use, strControlType) > 0 then
+	;say("has custom type",ot_jaws_message)
+	;say(strControlType,ot_control_type)
+	let sDisplayText = sDisplayText + "Custom Type: " + strControlType + "\n"
+	let iCustomInfo = true
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Value, VA508_Cache_Use, strValue) > 0 then
+	;say("has custom value",ot_jaws_message)
+	;say(strValue,ot_selected_item)
+	let sDisplayText = sDisplayText + "Custom Value: " + strValue + "\n"
+	let iCustomInfo = true
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_State, 	VA508_Cache_Use, strState) > 0 then
+	;say("has custom state",ot_jaws_message)
+	;say(strState,ot_item_state)
+	let sDisplayText = sDisplayText + "Custom State: " + strState + "\n"
+	let iCustomInfo = true
+Endif
+if VA508GetComponentProp(getFocus(),VA508_FieldName_Instructions, VA508_Cache_Use, strInstructions) > 0 then
+	;say("has custom instructions",ot_jaws_message)
+	;say(strInstructions,ot_line)
+	let sDisplayText = sDisplayText + "Custom Instructions: " + strInstructions + "\n"
+	let iCustomInfo = true
+Endif
+if VA508GetComponentProp(getFocus(), VA508_FieldName_Item_Instructions, 	VA508_Cache_Use, strItemInstructions) > 0 then
+	;say("has custom item instructions",ot_jaws_message)
+	;say(strItemInstructions,ot_line)
+	let sDisplayText = sDisplayText + "Custom Item Instructions: " + strItemInstructions + "\n"
+	let iCustomInfo = true
+Endif
+if !iCustomInfo then
+	;say("No custom information found",ot_Jaws_message)
+	let sDisplayText = "no custom information found\n"
+Endif
+	
+va508getApplicationData(getFocus(),va508_queryCode_all)
+;copyToClipboard("Status:" + VA508GetStringValue(va508_fieldname_data_status)+ " Data: " + gsva508data)
+let sDisplayText = sDisplayText + "Status:" + VA508GetStringValue(va508_fieldname_data_status)+ " Data: " + gsva508data + "\n" + "DLL handle: " + IntToString(ghVA508DLLWindow) + "\n" + "Need to link to DLL?: " + IntToString(gbVA508needToLinkToDLL) + "\n" + "Data Windows Title: " + gsVA508dataWindowTitle + "\n"
+;sayMessage(ot_message,"data copied to clipboard")
+If UserBufferIsActive() then UserBufferDeActivate() Endif
+UserBufferClear()
+sayMessage(ot_user_buffer,sDisplayText)
+EndFunction
+
+;**********************************************************************
+int function abs(int n)
+; Absolute value
+if n < 0 then
+	return 0-n
+endIf
+return n
+endFunction
+
+;**********************************************************************
+; Get position and count from TORComboBox windows.
+;**********************************************************************
+int function getTorComboInfo(int byRef pos, int byRef count)
+var
+	handle hwnd,
+	object o, int childID
+let hwnd = getCurrentWindow()
+if !hwnd then
+	return False
+endIf
+if getWindowClass(hwnd) == "TorComboEdit" then
+	let hwnd = getParent(hwnd)
+endIf
+if getWindowClass(hwnd) != "TorComboBox" then
+	return False
+endIf
+let o = getObjectFromEvent(hwnd, -4, 0, childID)  ; -4 = ObjID_Client
+if !o then
+	return False
+endIf
+let o = o.accNavigate(8, childID)  ; 8 = NavDir_LastChild
+if !o then
+	return False
+endIf
+if o.accRole(0) == 9 then  ; 9 = Role_System_Window
+	let o = o.accChild(-4)
+	if !o then
+		return False
+	endIf
+endIf
+if o.accRole(0) != 33  ; 33 = Role_System_List
+&& isPCCursor() && getWindowTypeCode(getFirstChild(getFocus())) == WT_Button then
+	let hwnd = getFirstChild(findTopLevelWindow("TORDropPanel", ""))
+	if getWindowClass(hwnd) != "TORListBox"
+	|| abs(getWindowLeft(hwnd) -getWindowLeft(getFocus())) > 5
+	|| abs(getWindowTop(hwnd) -getWindowBottom(getFocus())) > 5 then
+		return False
+	endIf
+	let o = getObjectFromEvent(hwnd, -4, 0, childID)  ; -4 = ObjID_Client
+	if !o then
+		return False
+	endIf
+	if o.accRole(0) != 33 then  ; 33 = Role_System_List
+		return False
+	endIf
+endIf
+let count = o.accChildCount +0
+let pos = o.accSelection +0
+return True
+endFunction
+
+;**********************************************************************
+; add proper speaking of position in group information for standard delphi listboxes, listviews already work correctly
+; called by sayTreeViewLevel from activeItemChangedEvent
+String Function PositionInGroup ()
+var
+	handle hwnd,
+	int hItem,
+	int hOrigItem,
+	int count,
+	int count1,
+	int pos,
+	string str
+
+	let hwnd = getFocus()
+	let pos = 0
+	let count = 0
+	if getObjectTypeCode() == wt_listboxitem then ; this is actually for list views which return a type code of listbox item
+		let pos = lvGetFocusItem(hwnd)
+		let count = lvGetItemCount (hwnd)
+	elif getObjectTypeCode() == wt_listbox then
+		let pos = SendMessage(hwnd,LB_GETCURSEL,0,0)+1
+		let count = SendMessage(hwnd,LB_COUNT,0,0)
+	elif getWindowClass(hwnd) == "TorComboEdit"
+	|| (getWindowClass(hwnd) == "TorComboBox" && !positionInGroup())
+	then
+		if !getTorComboInfo(pos, count) then
+			let pos = 0
+			let count = 0
+		endIf
+	elif getObjectTypeCode() == wt_treeview && !(StringContains(StringLower(PositionInGroup()),"of") ||
+			StringContains(StringLower(PositionInGroup()),"item")) then
+		; sayString(positioninGroup())
+		; use custom
+		let hItem = sendMessage(hWnd,TVM_GETNEXTITEM,TVGN_CARET,0)
+		if hItem then
+			let hOrigItem = hItem
+			let count = 0
+			while hItem != 0 && count < 200 ; should always go through once
+				let hItem = sendMessage(hWnd,TVM_GETNEXTITEM,TVGN_PREVIOUS,hItem)
+				let count = count + 1
+			EndWhile
+			let hItem = hOrigItem
+			let count1 = -1
+			while hItem != 0 && count1 < 200 ; should always go through once
+				let hItem = sendMessage(hWnd,TVM_GETNEXTITEM,TVGN_NEXT,hItem)
+				let count1 = count1 + 1
+			EndWhile
+			let pos = count
+			let count = count+count1
+		Endif ; if we a valid handle for the item
+	endif ; if we have a valid position
+	if count then
+		if pos == 0 then
+			if count == 1 then
+				let str = formatString(msgItemCount1, intToString(count))
+			else
+				let str = formatString(msgItemCount2, intToString(count))
+			endIf
+		else
+			let str = formatString(msgPosMOfN, intToString(pos), intToString(count))
+		endIf
+	endIf
+	if stringLength(str) then
+		return str
+	endIf
+	return PositionInGroup()
+EndFunction
+
+;**********************************************************************
+;**********************************************************************
+Script Test()
+var
+	string str
+
+; get4kName(getCurrentWindow())
+; sayInteger(RegisterWindowMessage("VA 508 / Freedom Scientific - JAWS Communication Message ID"))
+EndScript
+
+;**********************************************************************
+; Test function for getting and speaking and/or displaying all DLL framework data for any window.
+; Requires BX to be loaded.
+; Usage:
+; First select a window via the BX Window Navigation map.
+; Then from inside or outside of BX, type BXQuickKey T (for Test) <num>.
+; <num> is a number or number plus other keys that determine what to query for and speak or show, as follows:
+;	- 0 for query and speak all,
+;	- Ctrl+Shift+3 for query and show-all (in JAWS virtual viewer),
+;	- 1-7 for query and speak caption, value, controlType, state, instructions, itemInstructions, or data individually,
+;	- 8-9 to send query bit 8 or 9 and speak result,
+;	- Shift+0-9 to send one of query bits 10-19 and speak result,
+;	- Ctrl+0-9 to send one of query bits 20-29 and speak result,
+;	- Ctrl+Shift+0-2 to send one of query bits 30-32 and speak result, or
+;	- Ctrl+Shift+4-9 for query and show caption, value, controlType, state, instructions, or itemInstructions individually.
+; Parameter n is set to 0-9 for keys 0-9, 10-19 for Shift+0-9, 20-29 for Ctrl+0-9, and 30-39 for Ctrl+Shift+0-9.
+; This function calls VA508GetApplicationData and VA508GetGridData but does all other parsing internally.
+;**********************************************************************
+void function bxTestNum(int n)
+var
+	handle hwnd,
+	int iQueryCode,
+	string fmt,
+	string varData, string data,
+	string delim,
+	string seg,
+	string varName, int varStart, int varLen, string varVal,
+	int i,
+	string debugBuf,
+	string buf
+/*
+let hwnd = VA508Cast(bxGetWindow())
+if !hwnd then
+	bxSayString("No window selected", "")
+	return
+endIf
+*/
+let hwnd = getCurrentWindow()
+let fmt = ""
+if n >= 32 then
+	let n = n -33
+	let fmt = fmt +"v"
+endIf
+if n then
+	let iQueryCode = 1 << (n-1)
+else
+	let iQueryCode = VA508_QueryCode_All
+endIf
+VA508GetApplicationData(hwnd, iQueryCode)
+let debugBuf = gsVA508GetAppDataDebugBuf
+
+let varData = gsVA508varData
+let data = gsVA508data
+let delim = stringLeft(varData, 1)
+let buf = ""
+let buf = buf +formatString(
+		;"VA508 data for window of class %1:\13\10Delimiter: '%2'\13\10",
+		"VA508 data for window of class %1:\13\10",
+		getWindowClass(hwnd),
+		delim
+		)
+let i = 1
+while i
+	let i = i +1
+	let seg = stringSegment(varData, delim, i)
+	if stringLength(seg) then
+		let varName = stringSegment(seg, "=,", 1)
+		let varVal = ""
+		let varStart = stringToInt(stringSegment(seg, "=,", 2)) +1
+		let varLen = stringToInt(stringSegment(seg, "=,", 3))
+		if varStart && varLen then
+			let varVal = substring(data, varStart, varLen)
+		endIf
+		if stringLength(varVal) then
+			let buf = buf +formatString("\13\10%1: %2", varName, varVal)
+			if varName == "value" then
+				; Include grid data where appropriate.
+				if VA508getGridData(varVal,0) then
+					let buf = buf +formatString(
+							"\13\10Grid data:\13\10Column %1 (%2 of %3)\13\10Row %4 (%5 of %6)\13\10Cell %7 (%8 of %9)",
+							gsVA508cacheGridColHdr, intToString(giVA508cacheGridColNum), intToString(giVA508cacheGridColCnt),
+							gsVA508cacheGridRowHdr, intToString(giVA508cacheGridRowNum), intToString(giVA508cacheGridRowCnt),
+							gsVA508cacheGridCellVal, intToString(giVA508cacheGridCellNum), intToString(giVA508cacheGridCellCnt))
+				endIf
+			elif varName == "dataStatus" then
+				; Some of these bits are obsolete but can still be passed, so they are named here.
+				; Obsolete bits: CheckForStateChanges through ItemChangeSpeakValues, except for ItemChanged.
+				; [DGL, 2007-05-31]
+				let buf = buf +formatString(" (%1)",
+						VA508Cast(olStringFlags(stringToInt(varVal),
+						"|Caption|Value|ControlType|State|Instructions|ItemInstructions|Data||CheckForStateChanges|CheckForItemChanges|GetOnlyIfStateChanged|GetOnlyIfItemChanged|StateChanged|ItemChanged|ItemChangeSpeakValues|||||||||Error"))
+						)
+			endIf
+		endIf
+	else
+		let i = 0  ; exits loop
+	endIf
+endWhile
+if fwDebug then
+	let buf = buf +formatString("\13\10\13\10VarData: %1\13\10Data: %2",
+		varData, data)
+	if debugBuf then
+		let buf = buf +"\13\10\13\10" +debugBuf
+	endIf
+endIf  ; fwDebug
+bxSayString(buf, fmt)
+endFunction
+
+;**********************************************************************
+; Automatically close a combo box if one is open when tab or shift+tab is pressed
+; Without this, tab and shift+tab in an open combo box do nothing.
+;**********************************************************************
+void function autoCloseIfOpenCombo()
+var
+	string class,
+	handle hWnd
+	let hWnd = getFocus()
+	if getWindowClass(hWnd) == wcComboLBox then
+		TypeKey(Key_F4)
+	endIf
+endFunction
+
+;**********************************************************************
+Script Tab()
+if isSpecialFocus(False) then
+	autoCloseIfOpenCombo()
+endIf
+	PerformScript Tab()
+EndScript
+
+;**********************************************************************
+Script ShiftTab()
+if isSpecialFocus(False) then
+	autoCloseIfOpenCombo()
+endIf
+	PerformScript ShiftTab()
+EndScript
+
+;**********************************************************************
+; Avoids double speech in edit combo boxes.
+;**********************************************************************
+Void Function ValueChangedEvent (handle hwnd, int objId, int childId, int nObjType, string sObjName, string sObjValue,int bIsFocusObject)
+; A fix borrowed from JAWS 9...
+if nObjType == WT_Edit
+&& getObjectSubtypeCode() == WT_EditCombo then
+	; This seems to happen at random;
+	; nObjType should normally be WT_EditCombo also.  [DGL, 2007-10-03]
+	let nObjType = WT_EditCombo
+endIf
+	ValueChangedEvent (hwnd, objId, childId, nObjType, sObjName, sObjValue, bIsFocusObject)
+	if nObjType == wt_editCombo && bIsFocusObject && sObjValue then
+		; we can assume it was spoken so suppress sayHighLightedText
+		let gbVA508suppressEcho = true
+	endIf
+EndFunction
+
+;**********************************************************************
+; Overwrite of default to prevent double speaking in edit comboes and other places
+;**********************************************************************
+Void Function SayHighLightedText (handle hwnd, string buffer)
+	if lt_suppressHighlight then
+		scheduleFunction("lt_clearSuppressHighlight", 3)
+		return
+	endIf
+
+	; sayInteger(GetWindowSubTypeCode(hwnd))
+	; prevent double speaking in open edit comboes
+	if getWindowClass(getFocus()) == wcComboLBox then
+	  if getWindowSubTypeCode(hwnd) == wt_editcombo || getWindowClass(hwnd) == "TORComboEdit" then
+	  	return
+	  endIf
+	EndIf
+	; prevent double speaking in TORComboEdit boxes, which seem to stay open.
+if (hwnd == getFocus() || getWindowClass(hwnd) == "TORListBox")
+&& getWindowClass(getFocus()) == "TORComboEdit" then
+	return
+endIf
+;sayString(getWindowClass(hwnd) +" " +getWindowClass(getFocus()))
+	if getWindowClass(hwnd) == wcTMaskEdit then
+		return
+	Endif
+	; added to suppress echo when valueChangedEvent works in closed editComboes
+	if gbVA508suppressEcho then
+		let gbVA508suppressEcho = false
+		return
+	EndIf
+	if getWindowClass(hwnd) == wcTStringGrid && hwnd != getFocus() then
+		return ; prevent speaking of highlight in grid when focus is not in that control
+	Endif
+
+	SayHighLightedText (hwnd, buffer)
+EndFunction
+
+;**********************************************************************
+; Handles custom translations of types and states for output.
+; Also completely defines the structure and location of translation tables.
+; sTable:  Braille for Braille translations.
+; Other tables such as "Speech" could be defined if necessary.
+; iQueryCode:  Properties to look up in the table.
+; 	%1 and %2 in sKeyFormat become initial Type and State values, respectively.
+; sTypeVal and sStateVal:  Initial values on entry, initial or translated as appropriate on exit.
+; Returns True if anything was changed and False if not.
+;
+; Table location:  All in <app>.jcf (initially VA508APP.jcf).
+; Table section names:  [<name> Translations] (e.g., <name>=Braille)
+; Keys (LHS in file): <prop1name>[|<prop2name>...] <propVal1>[|<propVal2>...]
+;	where prop<n>name = e.g. ControlType or State.
+;	Examples: "ControlType checkbox" or "ControlType|State Checkbox|Checked"
+; Values (RHS in file): <delim><prop1val>[|<prop2val>...]
+;	Examples:  "|lbx" or "|lbx|<x>"
+; Full example:
+;	[Braille Translations]
+;	ControlType|State checkListBox|checked=|lbx|<x>
+; makes the type "lbx" and the state "<x>" for a checked listbox item.
+; Called by controlPropGet
+;**********************************************************************
+int function VA508TranslateProps(string sTable, int iQueryCode, string byRef sTypeVal, string byRef sStateVal)
+var
+	string sFile,
+	string sSect,
+	string sKeyFormat1, string sKeyFormat2, string sKeyFormat,
+	string sKey,
+	string sTran,
+	string sDelim,
+	int i,
+	int iChanged
+let iChanged = False
+
+; Set file and section.
+let sFile = findJAWSSettingsFile(getActiveConfiguration() +".jcf")
+if !fileExists(sFile) then
+	; No file, no translations.
+	return False
+endIf
+let sSect = formatString("%1 Translations", sTable)
+
+; Set key by constructing it based on iQueryCode.
+let sKeyFormat1 = ""
+let sKeyFormat2 = ""
+if iQueryCode & VA508_QueryCode_Control_Type then
+	let sKeyFormat1 = sKeyFormat1 +"|ControlType"
+	let sKeyFormat2 = sKeyFormat2 +"|%1"
+endIf
+if iQueryCode & VA508_QueryCode_State then
+	let sKeyFormat1 = sKeyFormat1 +"|State"
+	let sKeyFormat2 = sKeyFormat2 +"|%2"
+endIf
+let sKeyFormat = stringChopLeft(sKeyFormat1, 1) +msgSpace +stringChopLeft(sKeyFormat2, 1)
+let sKey = formatString(sKeyFormat, sTypeVal, sStateVal)
+
+; Look up the key and abort if not found.
+let sTran = iniReadString(sSect, sKey, "<NoTranslation>", sFile)
+if stringCompare(sTran, "<NoTranslation>", True) == 0 then
+	return False
+endIf
+
+; A translation was found; interpret it.
+let sDelim = stringLeft(sTran, 1)
+let i = 1
+if stringContains(sKeyFormat, "%1") then
+	; There is a Type translation.
+	let i = i +1
+	let sTypeVal = stringSegment(sTran, sDelim, i)
+	let iChanged = True
+endIf
+if stringContains(sKeyFormat, "%2") then
+	; There is a State translation.
+	let i = i +1
+	let sStateVal = stringSegment(sTran, sDelim, i)
+	let iChanged = True
+endIf
+return iChanged
+endFunction
+
+;**********************************************************************
+; Handles all control property requests.
+; Called only by BraillePropHelper
+; Returns 1 when a property has a custom value, 0 when not, and below 0 on error.
+; This function defines the accepted list of JAWS control property names.
+; Most of them come from the names of the BrailleAddObject* functions built in to JAWS.
+; sOrigin can be current, focus, or hwnd<handle>.
+; whichProp is the name of the property sought.
+; whichProp can end in .brl for a Braille-specific answer.
+; sVal is the returned property value if the function returns 1, undefined otherwise.
+;**********************************************************************
+int function controlpropGet(string sOrigin, string whichProp, int nSubtype, string byRef sVal)
+var
+	handle hwnd,
+	int iCacheHandling,
+	int isBraille,
+	int iResult
+
+; sayString("control prop")
+; Get hwnd, iCacheHandling, and nSubtype worked out.
+let iCacheHandling = VA508_Cache_Skip
+if sOrigin == "focus"
+|| (sOrigin == "current" && isPCCursor()) then
+	let hwnd = getFocus()
+	let iCacheHandling = VA508_Cache_Use
+	if !nSubtype then
+		let nSubtype = getObjectSubtypeCode()
+	endIf
+elif sOrigin == "current" then
+	let hwnd = getCurrentWindow()
+	if !nSubtype then
+		let nSubtype = getObjectSubtypeCode()
+	endIf
+elif sOrigin == "hwnd" then
+	let hwnd = stringToHandle(stringChopLeft(sOrigin, 4))
+	if hwnd == getFocus() then
+		let iCacheHandling = VA508_Cache_Use
+	endIf
+	if !nSubtype then
+		let nSubtype = getWindowSubtypeCode(hwnd)
+	endIf
+else
+	; Not supported at this time.
+	return 0
+endIf
+
+; Now for isBraille and whichProp.
+let isBraille = False
+if stringRight(whichProp, 4) == ".brl" then
+	let whichProp = stringChopRight(whichProp, 4)
+	let isBraille = True
+endIf
+
+; Check the framework for custom values.
+if whichProp == "Name" then
+	return VA508GetComponentProp(hwnd, VA508_FieldName_Caption, iCacheHandling, sVal)
+elif whichProp == "Type" || whichProp == "State" then
+	var
+		int iTypeRet, string sTypeVal,
+		int iStateRet, string sStateVal
+	let iTypeRet = VA508GetComponentProp(hwnd, VA508_FieldName_Control_Type, iCacheHandling, sTypeVal)
+	let iStateRet = VA508GetComponentProp(hwnd, VA508_FieldName_State, iCacheHandling, sStateVal)
+	if isBraille then
+		if iTypeRet > 0 && iStateRet > 0 then
+			VA508TranslateProps("Braille", VA508_QueryCode_Control_Type +VA508_QueryCode_State, sTypeVal, sStateVal)
+		endIf
+		if iTypeRet > 0 then
+			VA508TranslateProps("Braille", VA508_QueryCode_Control_Type, sTypeVal, sStateVal)
+		endIf
+		if iStateRet > 0 then
+			VA508TranslateProps("Braille", VA508_QueryCode_State, sTypeVal, sStateVal)
+		endIf
+	endIf  ; isBraille
+	if whichProp == "Type" then
+		let sVal = sTypeVal
+		return iTypeRet
+	else  ; State
+		let sVal = sStateVal
+		return iStateRet
+	endIf
+elif whichProp == "Value" then
+	var int iValFound
+	let iValFound = VA508GetComponentProp(hwnd, VA508_FieldName_Value, iCacheHandling, sVal) > 0
+	if iValFound > 0 && VA508GetGridData(sVal,0) then ; GRID
+		if isBraille then
+			let sVal = ""
+			if giGridBrailleMode == 1 || giGridBrailleMode == 3 then
+				let sVal = "r"+IntToString(giVA508CacheGridRowNum)+"c"+intToString(giVa508CacheGridcolNum)+msgSpace
+			Endif
+			if giGridBrailleMode == 1 || giGridBrailleMode == 2 then
+				let sVal = sVal + gsVA508cacheGridRowHdr +msgSpace +gsVA508CacheGridColHdr +msgSpace
+			endif
+			if gsVA508CacheGridCellVal == "" then
+				let gsVA508CacheGridCellVal = "-" 
+			Endif
+		else ; NOT BRAILLE
+			let sVal = ""
+		endIf  ; isBraille
+		let sVal = sVal + gsVA508CacheGridCellVal ;always show cell
+		return true
+	elif nSubType == wt_progressBar then
+		if iValFound < 1 then
+			let sVal = getObjectValue()
+			return true
+		Endif
+	endif
+	return iValFound
+; TODO:  Many of the rest are not handled yet.
+elif whichProp == "ContainerName" then
+	; Generally a group box name.
+elif whichProp == "ContainerType" then
+	; Not sure how often this one gets used.
+elif whichProp == "Position" then
+	; e.g., "1 of 4" or "4 items" for lists and trees.
+elif whichProp == "DlgPageName" then
+	; Name of active tab.
+elif whichProp == "DlgText" then
+	; Dialog static text.
+elif whichProp == "ContextHelp" then
+	; TODO: This could be Instructions or Item_Instructions.
+elif whichProp == "Time" then
+	; This may not be used at all.
+elif whichProp == "Level" then
+	; Tree level.
+endIf
+return 0  ; no custom value for this property
+endFunction
+
+; Braille Support
+;**********************************************************************
+int function BraillePropHelper(string whichProp, int nSubtype)
+; Logic for BrailleAddObject* functions to use.
+var
+	int x, int y,
+	int tc,
+	int iResult,
+	string sVal,
+	int nWindowSubTypeCode
+
+let nWindowSubTypeCode = getWindowSubtypeCode(getFocus())
+if nWindowSubTypeCode == wt_unknown then
+	let nWindowSubTypeCode = getObjectSubTypeCode()
+endif
+
+if  nWindowSubTypeCode != nSubtype then
+	; BrailleAddObject* function(s) called on a parent (e.g., dialog) control.
+	; We currently have no way to handle this, so let JAWS do it.
+	return False
+endIf
+
+let iResult = controlpropGet("focus", whichProp +".brl", nSubType, sVal)
+if iResult > 0 then
+	if whichProp != "name" then  ; prevents cursor from being placed on label instead of value in edit fields
+		let x = getCursorCol()
+		let y = getCursorRow()
+	Endif
+	BrailleAddString(sVal, x,y, 0)
+	return True
+endIf
+return False
+endFunction
+
+;************************************************************************
+int Function BrailleClassFound(string ControlType, int byref nType)
+var
+	int i,
+	int count
+
+	let i = StringSegmentIndex (glbsTable, string_delim, StringLower(msgSpace+ControlType), true)
+	if i then
+		let nType = StringToInt(StringSegment(glbsTable2,string_delim,i))
+		return true
+	endif
+return false
+EndFunction
+
+;************************************************************************
+int function BrailleCallbackObjectIdentify()
+var
+	int nType,
+	string controlType
+
+if isSpinBox(getCurrentWindow()) then
+		return wt_spinbox
+Endif
+if VA508GetComponentProp(getCurrentWindow(),VA508_FieldName_Control_Type,VA508_Cache_Use,controlType) > 0 then
+	let nType = 0
+	if BrailleClassFound(ControlType, nType) then
+		return nType
+	EndIf
+Endif
+return BrailleCallBackObjectIdentify()
+EndFunction
+
+; added so spinbox sub type code can make nSubType code passed to BrailleAddObject functions
+; what is returned in getWindowSubTypeCode must matach what is returned in BrailleCallBackObjectIdentify for the BraillePropHelper to show any custom information
+;************************************************************************
+int Function getWindowSubTypeCode (handle hwnd)
+var
+	int nType,
+	string ControlType,
+	int cacheHandling
+
+; sayString("get window sub type code")
+
+if isSpinBox(hwnd) then
+		return wt_spinbox
+Endif
+if hwnd == getFocus() then
+	let cacheHandling = VA508_Cache_Use
+else
+	let cacheHandling = VA508_Cache_Skip
+endIf
+if VA508GetComponentProp(getCurrentWindow(),VA508_FieldName_Control_Type,cacheHandling,controlType) > 0 then
+	if BrailleClassFound(ControlType, nType) then
+		return nType
+	EndIf
+Endif
+return getWindowSubTypeCode(hwnd)
+EndFunction
+
+;************************************************************************
+; These are all the BrailleAddObject* functions internally recognized as of JAWS 8.0.
+int function BrailleAddObjectName(int nSubtype)
+return BraillePropHelper("Name", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectType(int nSubtype)
+return BraillePropHelper("Type", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectState(int nSubtype)
+return BraillePropHelper("State", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectValue(int nSubtype)
+return BraillePropHelper("Value", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectContainerName(int nSubtype)
+return BraillePropHelper("ContainerName", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectContainerType(int nSubtype)
+return BraillePropHelper("ContainerType", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectPosition(int nSubtype)
+return BraillePropHelper("Position", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectDlgPageName(int nSubtype)
+return BraillePropHelper("DlgPageName", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectDlgText(int nSubtype)
+return BraillePropHelper("DlgText", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectContextHelp(int nSubtype)
+return BraillePropHelper("ContextHelp", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectTime(int nSubtype)
+return BraillePropHelper("Time", nSubtype)
+endFunction
+
+;************************************************************************
+int function BrailleAddObjectLevel(int nSubtype)
+return BraillePropHelper("Level", nSubtype)
+endFunction
+
+;**********************************************************************
+; Allows JAWS ListView commands like Ctrl+JAWSKey+numbers to work with custom but functional ListView controls
+; Only affects JAWS 7.1 and later.
+;**********************************************************************
+int function isTrueListView(handle hwnd)
+var
+	int result
+let result = isTrueListView(hwnd)
+if result then
+	return result
+endIf
+if stringContains(stringLower(getWindowClass(hwnd)), "list")
+&& lvGetNumOfColumns(hwnd) > 0 then
+	return True
+endIf
+return False
+endFunction
+
+;**********************************************************************
+; Makes F2 edit the current tree node as a left-click does
+;**********************************************************************
+Script f2editTreeNode ()
+var
+	int hItem,
+	handle hWnd
+
+sayCurrentScriptKeyLabel()
+let hwnd = getFocus()
+if getWindowClass(hWnd) == wcTTreeView then
+	let hItem = sendMessage(hWnd,TVM_GETNEXTITEM,TVGN_CARET,0)
+	if hItem then
+		sendMessage(hWnd,TVM_EDITLABELW,0,hitem)
+		return
+	Endif
+elif getWindowTypeCode(hwnd) == WT_TREEVIEW then ; we have a tree that's not a TTreeView then it might not have an api so use mouse
+	saveCursor()  JAWSCursor()  saveCursor()
+	routeJAWSToPC()
+	leftMouseButton()
+	return
+endIf
+typeCurrentScriptKey()
+
+EndScript
+
+;**********************************************************************
+; Called by JAWS.SR when things happen to a window in the active VA508 application.
+; This is the only function/script in this file called externally.
+; ControlTypes are only sent for custom types and are always sent regardless of whether the type changes, it is doubtful that a type will actually change
+; This function gets called before focusChangedEvent, thus 3ms schedule functions were used
+;**********************************************************************
+void function VA508ChangeEvent(handle hwnd, int iDataStatus, string sCaption, string sValue, string sControlType,
+ string sState, string sInstructions, string sItemInstructions)
+
+; sayString("called")
+
+if giCancelEvent == true then
+	return
+Endif
+
+let ghFromChangeEvent = hwnd
+let giDidFocusChange = false ; used to ensure that we don't have double speaking when the event comes in before handleCustomWindows has a change to speak it
+if iDataStatus & VA508_Data_Change_Event then
+	let iDataStatus = iDataStatus - VA508_Data_Change_Event ; not needed so let's remove
+Endif
+if iDataStatus & VA508_QueryCode_Control_Type then
+	let iDataStatus = iDataStatus - VA508_QueryCode_Control_Type ; not needed
+Endif
+
+; Update the cache so Braille will update immediately.
+VA508CacheSetVals(hwnd, iDataStatus, sCaption, sValue, sControlType,
+ sState, sInstructions, sItemInstructions)
+BrailleRefresh() ;for an instant update rather than waiting up to 2 seconds to see the change, or in the case of braille viewer instead of waiting 30 seconds
+/*
+sayString(formatString(
+"Event %1 vals %2 %3 %4 %5 %6 %7",
+decToHex(iDataStatus), sCaption, sValue, sControlType,
+ sState, sInstructions, sItemInstructions
+))
+*/
+
+; Don't speak changes to non-focused windows.
+if hwnd != getFocus() then
+	if inDebugging then bxGauge(3, 0) Endif
+	return
+endIf
+watchCount("change")
+
+; was a grid cell changed?
+; jda 9-14-07
+
+if VA508GetGridData(sValue,0) && !giSpokeCellUnit then
+	say(gsVA508cacheGridColHdr,ot_control_name)
+	say(gsVA508cacheGridRowHdr,ot_control_name)
+	if gsVA508cacheGridCellVal == "" then
+		let gsVA508cacheGridCellVal = " " ; so blank will be spoken
+	Endif
+	say(gsVA508cacheGridCellVal,ot_line)
+	say("column " + intToString(giVA508cacheGridColNum),ot_position)
+	say("row " + intToString(giVA508cacheGridRowNum),ot_position)
+	return
+Endif
+
+; For some one-thing-only changes, just speak what changed.
+; Since changes are spoken individually this might affect reading order preferences that users have set when arrow keys are used
+if iDataStatus & VA508_QueryCode_Caption && sCaption then
+	let giSuppressCaption = true
+Endif
+; this is always set and thus would always be announced, thus it is filtered out and should not get called
+if iDataStatus & VA508_QueryCode_Control_Type && sControlType then
+	let giSuppressControlType = true
+endIf
+if iDataStatus & VA508_QueryCode_State && sState then
+	let giSuppressState = true
+Endif
+if iDataStatus & VA508_QueryCode_Value && sValue && !VA508GetGridData(hwnd,0) then
+	let giSuppressValue = true
+Endif
+if iDataStatus & VA508_QueryCode_Instructions && sInstructions then
+	let giSuppressInstructions = true
+Endif
+if iDataStatus & VA508_QueryCode_Item_instructions && sItemInstructions then
+	let giSuppressItemInstructions = true
+Endif
+ScheduleFunction("AnnounceEvent",3)
+
+endFunction
+
+;*********************************************************************************************************
+; Called by the Announce* functions below.
+;*********************************************************************************************************
+Void Function AnnounceProp(int iQueryCode, int outputType, int byRef propGlobalFlag)
+var
+	string prop
+
+if propGlobalFlag && giDidFocusChange == false then
+	if VA508getComponentProp(ghFromChangeEvent, iQueryCode, VA508_Cache_Use, prop) > 0 then
+		sayMessage(outputType, prop)
+	Endif
+Endif
+let propGlobalFlag = false
+EndFunction
+
+;*********************************************************************************************************
+; All these are called by va508ChangeEvent
+;*********************************************************************************************************
+Void Function AnnounceEvent()
+AnnounceProp(VA508_QueryCode_Caption, OT_Control_Name, giSuppressCaption)
+AnnounceProp(VA508_QueryCode_Control_Type, OT_Control_Type, giSuppressControlType)
+AnnounceProp(VA508_QueryCode_State, OT_Item_State, giSuppressState)
+AnnounceProp(VA508_QueryCode_Value, OT_Selected_Item, giSuppressValue)
+AnnounceProp(VA508_QueryCode_Instructions, OT_Tutor, giSuppressInstructions)
+AnnounceProp(VA508_QueryCode_Item_Instructions, OT_Tutor, giSuppressItemInstructions)
+endFunction
+
+;*********************************************************************************************************
+; overwrite of default to allow control+tab to be used to change tabs in Delphi applications
+Script NextDocumentWindow ()
+	ChangeDocumentWindow(1)
+EndScript
+
+;*********************************************************************************************************
+; overwrite of default to allow control_shift+tab to be used to change tabs in Delphi applications
+Script PreviousDocumentWindow ()
+	ChangeDocumentWindow(0)
+EndScript
+
+;*********************************************************************************************************
+; allows control tab when pressed on a child object of a page tab to announce the change in page
+; allows control tab to announce the correct tab when focus in on page tab control and style is set to button or flat button
+;*********************************************************************************************************
+Void Function ChangeDocumentWindow(int direction)
+var
+	string pageName,
+	handle hwnd
+
+	if isSpecialFocus(False) then
+		if direction == 1 then
+			PerformScript NextDocumentWindow()
+		elif direction == 0 then
+			PerformScript PreviousDocumentWindow()
+		Endif
+		return
+	endIf
+
+	let hwnd = getFocus()
+	; store to see if page changed
+	let PageName = getDialogPageName()
+
+	; cause tab to change
+	if getWindowClass(hwnd) == wcTTabControl then ; this control doesn't natively support control+shift+tab
+		if direction == 1 then
+			typeKey(ksRightArrow)
+		elif direction == 0 then
+			typeKey(ksLeftArrow)
+		endif
+	elif getWindowClass(getParent(hwnd)) == wcTTabControl ||
+		getWindowClass(getParent(getParent(hwnd))) == wcTTabControl then ; this control doesn't natively support control+shift+tab
+			SelectTab(direction)
+	endif
+
+	if direction == 1 then
+		PerformScript NextDocumentWindow()
+	elif direction == 0 then
+		PerformScript PreviousDocumentWindow()
+	Endif
+
+	let hwnd = getFocus()  ; have to get focus again because it may have changed???
+	; announce change when focus is on special type of TPageControl tab with buttons
+	if getObjectTypeCode() == wt_tabcontrol then
+		if getWindowStyleBits(hwnd) & window_style_tabsWithButtons then  ; tabs with buttons or flat buttons, control+tab doesn't work correctly here
+			let glbSuppressFocusChange = true
+			delay(1, True)
+			SayControlEx (hwnd, getDialogPageName(), "", "", "", "", "", "", "")
+			ScheduleFunction("ClearSuppressFocusChange",3)
+			return
+		endif
+	; announce change when focus is on child of page tab
+	elif PageName != getDialogPageName() && getDialogPageName() then
+			say(getDialogPageName()+msgSpace+MsgPage,ot_controL_name)
+	endif
+EndFunction
+
+;*********************************************************************************************************
+; overwrite of default function to return proper page names in Delphi windows
+String Function GetDialogPageName()
+var
+	string page,
+	object o,
+	int cid,
+	handle hwnd
+
+	let hwnd = getFocus()
+	let page = getDialogPageName()
+	if page == "" then
+		if getWindowClass(getParent(hwnd)) == wcTTabSheet ||
+			getWindowClass(getParent(getParent(hwnd))) == wcTTabSheet then ; for TPageControl when child or granchild has focus
+			if getWindowTypeCode(getParent(hwnd)) == wt_tabControl then
+				let page = getWindowName(getParent(hwnd))
+			elif getWindowTypeCode(getParent(getParent(hwnd))) == wt_tabControl then
+				let page = getWindowName(getParent(getParent(hwnd)))
+			endif
+		; TTabControl not handled here
+		elif getWindowClass(getParent(hwnd)) == wcTTabControl ||
+			getWindowClass(getParent(getParent(hwnd))) == wcTTabControl then ; forTTabControl when child or grandchild has focus
+			let page = getSelectedTab()
+		elif getObjectTypeCode() == wt_tabControl then ; for TTabControl and TPageControl
+			; getObjectName() can return the wrong name
+			let o = getFocusObject(cid)
+			if o then
+				let page = o.accName(cid)
+			endif
+		endif
+	endif
+	return page
+EndFunction
+
+; gets the selected tab from a TTabControl when a child control is in focus
+;***************************************************************************
+String Function getSelectedTab()
+var
+	object o,
+	int cid,
+	int count
+
+if getWindowClass(getParent(getFocus())) == wcTTabControl then ; forTTabControl
+	let o = getFocusObject(cid) ; full child control
+	let count = 1
+	while o && count < 10 && o.accRole(childId_self) != role_system_pagetablist
+		let o = o.accParent() ; window
+		let count = count + 1
+	EndWhile
+
+	if o && o.accRole(childId_self) == role_system_pagetablist then
+		let count = 1
+		while count <= o.accChildCount()
+			if o.accState(count) & state_system_selected then
+				return o.accName(count)
+			endif
+			let count = count + 1
+		EndWhile
+	endif
+Endif
+EndFunction
+
+;***************************************************************************
+; 1 for next
+; 0 for previous
+; Used for TTabControl to activate a new tab using MSAA
+;***************************************************************************
+Void Function SelectTab(int direction)
+var
+	object o,
+	int cid,
+	int childCount,
+	int count
+
+; msaa structure includes all control in page under page tab list.... troubling
+; only works when groupbox or panel is not used
+if getWindowClass(getParent(getFocus())) == wcTTabControl then ; forTTabControl
+	let o = getFocusObject(cid)
+	let count = 1
+	; find the page tab list
+	while o && count < 10 && o.accRole(childId_self) != role_system_pagetablist
+		let o = o.accParent() ; window
+		let count = count + 1
+	EndWhile
+	; find the selected child
+	if o && o.accRole(childId_self) == role_system_pagetablist then
+		let childCount = o.accChildCount()
+		let count = 1
+		while count <= o.accChildCount()
+			if o.accState(count) & state_system_selected then
+				let cid = count
+			endif
+			let count = count + 1
+		EndWhile
+		; set focus to the next or prior child
+		if direction == 1 then
+			if o.accRole(cid+1) != role_system_pagetab then
+				let cid = 0
+			endif ; role page tab
+			o.accSelect(selflag_takeSelection,cid+1)
+		elif direction == 0 then
+			if cid > 1 then
+				o.accSelect(selflag_takeSelection,cid-1)
+			else ; just sit on first tab
+			endif
+		Endif ; direction
+	EndIf ; role page tab list
+Endif ; TTabControl
+EndFunction
+
+;***************************************************************************
+; resets the global variable that suppress focus changes from being announced
+Void Function ClearSuppressFocusChange()
+	let glbSuppressFocusChange = FALSE
+EndFunction
+
+;***************************************************************************
+int Function isSpinBox (handle hwnd)
+if getObjectTypeCode() == wt_edit && getWindowClass(getNextWindow(hwnd)) == wcTUpDown then
+	return true
+endif
+return false
+EndFunction
+
+;***************************************************************************
+; get value for element from framework, falls back on getObjectValue()
+String Function getValue()
+var
+	string value
+
+if VA508GetComponentProp(getFocus(),VA508_FieldName_Value,VA508_Cache_Update,value) <= 0 then ; no custom property returned
+	let value = getObjectValue()
+endif
+return value ; could be null from either getObjectValue or from framework if it was set to null on purpose
+EndFunction
+
+;***************************************************************************
+; updated for grid support
+int function moveByLine(int forward)
+var
+	handle hwnd
+let hwnd = getFocus()
+if isPCCursor() && !isSpecialFocus(False) then
+	if isSpinBox(hwnd)
+	|| getWindowClass(hwnd) == "TORComboEdit"
+	|| getWindowClass(hwnd) == "TORComboBox" then
+		if forward then
+			nextLine()
+		else
+			priorLine()
+		endIf
+		if 	isSpinBox(hwnd)
+		|| getWindowClass(hwnd) == "TORComboEdit" then
+			say(getValue(),ot_selected_item)
+		endIf
+		return True
+	elif SpeakCellUnit("downArrow") then
+		return True
+	endIf
+endIf
+return False
+endFunction
+
+Script SayNextLine()
+if !moveByLine(True) then
+	performScript sayNextLine()
+endIf
+EndScript
+
+Script SayPriorLine()
+if !moveByLine(False) then
+	performScript sayPriorLine()
+endIf
+EndScript
+
+;***************************************************************************
+; updated for grid support
+Script SayNextCharacter()
+if SpeakCellUnit("rightArrow") then
+	return
+Endif
+performScript sayNextCharacter()
+EndScript
+
+;***************************************************************************
+; updated to allow correct announcement in grids
+;***************************************************************************
+Script SayPriorCharacter()
+	if SpeakCellUnit("leftArrow") then
+		return
+	Endif
+	performScript sayPriorCharacter()
+EndScript
+
+;******************************************************************
+function clearSpokeCellUnit()
+	let giSpokeCellUnit = false
+EndFunction
+
+;******************************************************************
+; Speaks the aspects of a cell that are different from the last cell visited
+int Function SpeakCellUnit(string str)
+var
+	string strVal,
+	string buildString
+	
+;sayString("speak cell unit")
+let giSpokeCellUnit = true
+scheduleFunction("clearSpokeCellUnit",2) ; prevent double speaking by changeEvent
+
+if !isPCCursor() || isSpecialFocus(False) then
+	return 0
+elif VA508getGridData(getFocus(),0) > 0 then ; IN GRID
+	TypeKey(str)
+	delay(1, True)
+	; Update the cache.
+	VA508GetComponentProp(getFocus(), VA508_FieldName_Value, VA508_Cache_Update, strVal)
+	VA508GetGridData(strVal,0) ; have to call here to refresh view when Braille is not being used
+	if gsVA508cacheGridCellVal == "" then 
+		let gsVA508cacheGridCellVal = " " ; so it will say blank with ot_line
+	Endif
+	if !giGridSpeechMode then
+		say(gsVA508cacheGridCellVal,ot_line)  ; DATA ONLY
+		return 1
+	elif str == "leftArrow" || str == "rightArrow" || str == "home" || str == "end" then
+		;	COLUMN CHANGE
+		if giGridSpeechMode == 1 || giGridSpeechMode == 2 then
+			; don't use ot_line here incase it is blank we dont' want blank spoken
+			sayUsingVoice(VCTX_MESSAGE,gsVA508cacheGridColHdr,ot_control_name)
+		Endif
+		say(gsVA508cacheGridCellVal,ot_line)
+		if giGridSpeechMode == 1 || giGridSpeechMode == 3 then
+			say("column " + intToString(giVA508cacheGridColNum),ot_position)
+		Endif
+		return 1
+	elif str == "upArrow" || str == "downArrow" || str == "pageUp" || str == "pageDown" then
+		; Row change
+		if giGridSpeechMode == 1 || giGridSpeechMode == 2 then
+		; don't use ot_line here incase it is blank we dont' want blank spoken
+			sayUsingVoice(VCTX_MESSAGE,gsVA508cacheGridRowHdr,ot_control_name)
+		Endif
+		say(gsVA508cacheGridCellVal,ot_line)
+		if giGridSpeechMode == 1 || giGridSpeechMode == 3 then
+			say("row " + intToString(giVA508cacheGridRowNum),ot_position)
+		Endif
+		return 1
+	endif
+; IN TAB CONTROL
+elif getObjectTypeCode() == wt_tabcontrol && getWindowStyleBits(getCurrentWindow()) & window_style_tabsWithButtons then  ; tabs with buttons or flat buttons
+	let glbSuppressFocusChange = true
+	TypeKey(str)
+	delay(1, True)
+	sayControlEx(getCurrentWindow(), getObjectName(), getObjectSubtype(), getAccState())
+	ScheduleFunction("ClearSuppressFocusChange",3)
+	return 1
+endif
+return 0
+EndFunction
+
+;******************************************************************
+; returns the full string of col number, row number, column name, row name, and cell data for the current table cell
+; used by sayLine, tab, shift+tab, insert+tab and control+home, and control+end
+string Function getCurrentCellHeadersData ()
+var
+	string str
+
+VA508GetGridData(getFocus(),0) ; have to call here to refresh view when Braille is not being used
+let str = "column" + msgSpace + IntToString(giVA508CacheGridColNum) + "row" + msgSpace + IntToString(giVA508CacheGridRowNum) + msgSpace
+let str = str + gsVA508cacheGridColHdr + msgSpace + gsVA508cacheGridRowHdr + msgSpace + gsVA508cacheGridCellVal
+return str
+EndFunction
+
+;home and end in grid
+
+;*********************************************************************
+; updated for grid support
+Script JAWSHome()
+	if SpeakCellUnit("home") then
+		return
+	Endif
+	performScript JAWSHome()
+EndScript
+
+;*********************************************************************
+; updated for grid support
+Script JAWSEnd()
+	if SpeakCellUnit("end") then
+		return
+	Endif
+	performScript JAWSEnd()
+EndScript
+
+;*********************************************************************
+; updated for grid support
+Script JAWSPageDown()
+	if SpeakCellUnit("pageDown") then
+		return
+	Endif
+	performScript JAWSPageDown()
+EndScript
+
+;*********************************************************************
+; updated for grid support
+Script JAWSPageUp()
+	if SpeakCellUnit("pageUp") then
+		return
+	Endif
+	performScript JAWSPageUp()
+EndScript
+
+;*********************************************************************
+Int Function UpdateBrailleClasses()
+var
+	string sFile,
+	string sTable,
+	int i,
+	int count
+
+let glbsTable = ""
+let glbsTable2 = ""
+let sFile = findJAWSSettingsFile(getActiveConfiguration() +".jcf") ; get applicatio specific jcf file
+if !fileExists(sFile) then
+	; No file, no translations.
+	return False
+endIf
+; file exists
+; this line adds a space at the beginning of each item in the list that is returned because of a bug in StringSegmentIndex
+let glbsTable = msgSpace + StringReplaceSubStrings(StringLower(IniReadSectionKeys (section_BrailleClasses, sFile)),string_delim, string_delim+MsgSpace) ; msgSpace need for first item to match
+let count = VA508StringSegmentCount (glbsTable, string_delim)
+let i = 1
+while i <= count
+	let glbsTable2 = glbsTable2 + IntToString(IniReadInteger (section_BrailleClasses, StringChopLeft(StringSegment(glbsTable,string_delim,count),1), 0, sFile)) + string_delim
+	let i = i + 1
+endWhile
+if glbsTable2 then
+	let glbsTable2 = stringChopRight (glbsTable2, 1)
+Endif
+return True
+EndFunction
+
+;*****************************************************************************************************
+Int Function UpdateControlTypes()
+var
+	string sFile,
+	string sTable,
+	int i,
+	int count
+
+let glbsTable3 = ""
+let glbsTable4 = ""
+let sFile = findJAWSSettingsFile(getActiveConfiguration() +".jcf")
+if !fileExists(sFile) then
+	; No file, no translations.
+	return False
+endIf
+let glbsTable3 = msgSpace + StringReplaceSubStrings(StringLower(IniReadSectionKeys (section_ControlTypes, sFile)),string_delim, string_delim+msgSpace)
+let count = VA508StringSegmentCount (glbsTable3, string_delim)
+let i = 1
+while i <= count
+	let glbsTable4 = glbsTable4 + IniReadString (section_ControlTypes, StringChopLeft(StringSegment(glbsTable3,string_delim,count),1), msgNull, sFile) + string_delim
+	let i = i + 1
+endWhile
+if glbsTable4 then
+	let glbsTable4 = stringChopRight (glbsTable4, 1)
+Endif
+return True
+EndFunction
+
+;************************************************************************
+int Function ControlTypeFound (string ControlType, string ByRef newControlType)
+var
+	int i,
+	int count
+
+	let i = StringSegmentIndex (glbsTable3, string_delim, StringLower(msgSpace+ControlType), true)
+	if i then
+		let newControlType = StringSegment(glbsTable4,string_delim,i)
+		return true
+	endif
+return false
+EndFunction
+
+
+/* Start - Personal settings */
+
+;*******************************************************************************************
+; called by JAWS verbosity dialog to flip or return status
+String Function ToggleGridSpeechMode (int iRetVal)
+If not iRetVal Then ; flip only if space pressed
+	Let giGridSpeechMode = giGridSpeechMode + 1
+	if giGridSpeechMode > 3 then
+		let giGridSpeechMode = 0
+	Endif
+EndIf  ; update it
+
+; return state, used to build visual list of current settings
+If giGridSpeechMode == 1 Then
+	return msgRowAndColumnHeadersAndNumbers
+elif giGridSpeechMode == 2 then
+	return msgRowAndColumnHeaders
+elif giGridSpeechMode == 3 then
+	return msgRowAndColumnNumbers
+Else ; 0
+	return msgDataOnly
+EndIf
+EndFunction
+
+;*******************************************************************************************
+; called by JAWS verbosity dialog to flip or return status
+String Function ToggleGridBrailleMode (int iRetVal)
+If not iRetVal Then ; flip only if space pressed
+	Let giGridBrailleMode = giGridBrailleMode + 1
+	if giGridBrailleMode > 3 then
+		let giGridBrailleMode = 0
+	Endif
+EndIf  ; update it
+; return state
+If giGridBrailleMode == 1 Then
+	return msgRowAndColumnHeadersAndNumbers
+elif giGridBrailleMode == 2 then
+	return msgRowAndColumnHeaders
+elif giGridBrailleMode == 3 then
+	return msgRowAndColumnNumbers
+Else ; 0
+	return msgDataOnly
+EndIf
+EndFunction
+
+;*******************************************************************************************
+Void Function LoadPersonalSettings ()
+var
+	string sFile
+
+; Load personal preferences
+; SayUsingVoice(VCTX_MESSAGE,msgLoadingSettings,OT_USER_REQUESTED_INFORMATION)
+let sFile = findJAWSSettingsFile(getActiveConfiguration() +".jsi")
+let giGridSpeechMode = IniReadInteger (Section_Options, hKey_GridSpeechMode, 1, sFile)
+let giGridBrailleMode = IniReadInteger (Section_Options, hKey_GridBrailleMode, 1, sFile)
+EndFunction
+
+;*******************************************************************************************
+Int Function SavePersonalSettings ()
+; save personal preferences
+Var
+	int iResult,
+	string sFile
+
+let sFile = findJAWSSettingsFile(getActiveConfiguration() +".jsi")
+let iResult =IniWriteInteger (Section_Options, hKey_GridSpeechMode, giGridSpeechMode, sFile)
+let iResult = IResult | IniWriteInteger (Section_Options, hKey_GridBrailleMode, giGridBrailleMode, sFile)
+return iResult
+EndFunction
+
+;*******************************************************************************************
+; modified to include personalized settings for automatically speaking buddies as the sign in and incoming messages
+Script AdjustJAWSVerbosity ()
+Var
+	int iPrevGridSpeechMode,
+	int iPrevGridBrailleMode,
+	string sList
+
+;	save the current values
+let iPrevGridSpeechMode = giGridSpeechMode
+let iPrevGridBrailleMode = giGridBrailleMode
+
+let sList=jvToggleGridSpeechMode
+	+ jvToggleGridBrailleMode
+
+JAWSVerbosityCore (sList) ; call default
+
+; If any values changed, save them...
+If iPrevGridSpeechMode != giGridSpeechMode
+|| iPrevGridBrailleMode != giGridBrailleMode then
+	If savePersonalSettings() then
+		SayUsingVoice(VCTX_MESSAGE, msgPersonalSettingsSaved,OT_STATUS)
+	Else
+		SayFormattedMessage(ot_error, msgPersonalSettingsNotSaved)
+	EndIf
+EndIf
+
+EndScript
+
+/* End - Personal settings */
+
+;***************************************************************************************
+; getObjectName() is often wrong and this can be used to get the real msaa name as long as the msaa cache is up-to-date in JAWS
+; if no msaa name is returned then fall back on getObjectName and getObjectValue which use other methods in addition to MSAA to determine the name or value (name of list item)
+; called on listboxes and listviews
+;***************************************************************************************
+string Function getAccName ()
+var
+	object o,
+	int cid,
+	string str
+
+let o = getFocusObject(cid)
+if o then
+	if getObjectTypeCode() == wt_listbox || getObjectTypeCode() == wt_listview || getObjectTypeCode() == wt_listboxItem then
+		let str = o.accName(cid)
+	Else
+		let str = getObjectName()
+	Endif
+	if o.accRole(cid) == role_system_list then ; we are on parent not simple child, should cover listView and listbox
+		let str = o.accName(1) ; announce first item if nothing is focused
+	Endif
+Endif ; object exists?
+if !str then
+	if getObjectTypeCode() == wt_listbox || getObjectTypeCode() == wt_listview || getObjectTypeCode() == wt_listboxItem then
+		let str = getObjectValue()
+	else
+		let str = getObjectName()
+	EndIf
+Endif
+return str
+EndFunction
+
+;***************************************************************************
+string Function getAccValue ()
+var
+	object o,
+	int cid,
+	string str
+
+let o = getFocusObject(cid)
+if o then
+	if getObjectTypeCode() == wt_listbox || getObjectTypeCode() == wt_listview || getObjectTypeCode() == wt_listboxItem ||
+		getObjectTypeCode() == wt_treeview then
+		let str = o.accName(cid)
+	else
+		; let str = o.accValue(cid)
+		let str = getObjectValue()
+	Endif
+	if o.accRole(cid) == role_system_list then ; we are on parent not simple child, should cover listView and listbox
+		let str = o.accName(1) ; announce first item if nothing is focused
+	Endif
+Endif ; object exists?
+if !str then
+	let str = getObjectValue()
+Endif
+return str
+EndFunction
+
+;***************************************************************************************
+; currently only returns checked and/or not selected
+; getObjectName() is often wrong and this can be used to get the real msaa name as long as the msaa cache is up-to-date in JAWS
+string Function getAccState ()
+var
+	object o,
+	int cid,
+	int ret,
+	string str
+
+let o = getFocusObject(cid)
+if o then
+	let ret = o.accState(cid)
+EndIf
+if ret & state_system_focused && ret & state_system_selectable && !(ret & state_system_selected) then
+	let str = msgNotSelected
+endif
+if ret & state_system_checked then
+	let str = str + msgSpace + msgChecked
+Endif
+return str
+EndFunction
+
+;****************************************************************************************************
+; use to overwrite default speech for itmes when arrow keys are used and custom properties exist
+; for listbox when focus changes within object
+; arrow, home, end in listbox
+; arrows, home, end in listview
+;****************************************************************************************************
+Void Function sayObjectActiveItem(int speakPositionInfo)
+var
+	string strValue,
+	string strState,
+	int iResultValue,
+	int iResultState
+
+; sayString("sayObjectActiveItem")
+
+	if getObjectTypeCode() == wt_tabcontrol && getWindowStyleBits(getCurrentWindow()) & window_style_tabsWithButtons then  ; tabs with buttons or flat buttons
+		say(getAccState(),ot_item_state) ; Makes JAWS say "not selected" when a tab is in focus but not selected (possible on this type of tab control)
+	endif
+
+	if stringContains("lb lm lx lv", getListType(getObjectSubtypeCode())) then
+		let iResultValue = VA508GetComponentProp(getFocus(), VA508_FieldName_Value, VA508_Cache_Update, strValue)
+		let iResultState = VA508GetComponentProp(getFocus(), VA508_FieldName_State, VA508_Cache_Use, strState)
+		if  iResultValue > 0 then
+			if giSuppressValue then
+				let giSuppressValue = false
+			Endif
+			say(strValue,ot_selected_item)
+		Else
+			say(getAccName(),ot_selected_item) ; getObjectValue() is wrong when extended selection is on
+		Endif
+		if  iResultState > 0 then
+			if giSuppressState then
+				let giSuppressState = false
+			Endif
+			say(strState,ot_item_state)
+		Else
+			say(getAccState(),ot_item_state)  ; will announce not selected if the item is not selected in extended selection mode
+		Endif
+		if speakPositionInfo then 
+			sayMessage(ot_position,PositionInGroup ()) 
+		Endif
+		return
+	endif
+	sayObjectActiveItem(speakPositionInfo)
+EndFunction
+
+;****************************************************************************************************
+; use to overwrite default speech for itmes when arrow keys are used and custom properties exist
+; arrows, home, end in treeview
+; currently doesn't handle custom states, position, level, information etc.
+;****************************************************************************************************
+Void Function ActiveItemChangedEvent (handle curHwnd, int curObjectId, int curChildId,
+	handle prevHwnd, int prevObjectId, int prevChildId)
+var
+	int iObjType,
+	int level,
+	string strValue,
+	string strState,
+	int iResultValue,
+	int iResultState
+
+; sayString("active item changed")
+Let iObjType = GetObjectSubtypeCode ()
+
+If (WT_TREEVIEW == iObjType || WT_TREEVIEWITEM == iObjType) && !MenusActive() then
+	;SayTreeViewLevel (true) ; calls sayTreeViewItem even though you would not expect it to to say name, level, also says position in group
+	; level change
+	let iResultValue = VA508GetComponentProp(getFocus(), VA508_FieldName_Value, VA508_Cache_Update, strValue)
+	let iResultState = VA508GetComponentProp(getFocus(), VA508_FieldName_State, VA508_Cache_Use, strState)
+
+	let level = getTreeViewLevel()
+	if level != PreviousTreeviewLevel then
+		sayMessage(ot_position,msgLevel + IntToString(level), IntToString(level))
+		let PreviousTreeviewLevel = level
+	Endif
+	; value
+	if !giSuppressValue then ; don't announce value because ChangeEvent will catch it
+		if iResultValue > 0 then
+			say(strValue,ot_selected_item)
+		Else
+			say(getAccValue(),ot_selected_item) ;also contains state
+		Endif
+	Else
+		if iResultValue > 0 then
+			say(strValue,ot_selected_item)
+			let giSuppressValue = false
+		Endif		
+	Endif
+	; never suppress open/closed states on tree views even if the framework has state data
+	SayTVFocusItemExpandState (curhwnd)
+	if giSuppressState then
+		if iResultState > 0 then
+			say(strState,ot_item_state)
+			let giSuppressState = false
+		Endif
+	Else ; if we have a custom state but the event didn't fire still speak it
+		if iResultState > 0 then
+			say(strState,ot_item_state)
+		Endif
+	Endif
+	; position info, always speak it, never get it from the framework
+	SayMessage(ot_position, PositionInGroup())
+	return
+Endif
+ActiveItemChangedEvent (curHwnd, curObjectId, curChildId, prevHwnd, prevObjectId, prevChildId)
+Endfunction
+
+;**********************************************************************************************************
+; overwritten so when this function is called from saytree viewLevel in ActivateItemChangedEvent the item will not be spoken because we have a custom value that represents a custom name for the focused tree view item
+void function SayTreeViewItem()
+if giSuppressValue then ; don't announce value because ChangeEvent will catch it
+	return
+Endif
+sayTreeViewItem()
+EndFunction
+
+;*****************************************************************************************************
+Void Function FocusChangedEvent (handle FocusWindow, handle PrevWindow)
+	let giCancelEvent = true
+	let giDidFocusChange = true
+	FocusChangedEvent (FocusWindow, PrevWindow)
+EndFunction
+
+;********************************************************************************************************
+Void Function KeyPressedEvent (int nKey, string strKeyName, int nIsBrailleKey, int nIsScriptKey)
+	let giCancelEvent = false
+	; sayInteger(nkey)
+	;if nKey == 69206331 then
+	if nKey == 2097467 then
+		if giDebugMode then
+			let giDebugMode = 0
+		Else
+			let giDebugMode = 1
+		Endif
+	Endif
+	KeyPressedEvent (nKey, strKeyName, nIsBrailleKey, nIsScriptKey)
+EndFunction
+
+;********************************************************************************************************
+void Function MouseButtonEvent (int eventID, int x, int y)
+	let giCancelEvent = false
+	MouseButtonEvent (eventID, x, y)
+EndFunction
+
+
+;**********  ListView navigation with Ctrl+Alt+arrows/Home/End.
+; Borrowed from freely available code written by Doug Lee
+
+; Original CVS Id: listtbl.jss,v 1.7 2006/01/11 13:22:22 dgl Exp
+; Module Prefix:  lt/lt_
+; Purpose:  Makes JAWS ctrl+alt commands navigate ListViews as if they were tables.  Drop in (ahead of default) and enjoy.
+;
+; Interface:  No callable functions inside.
+; Overrides:  scripts down/up/prior/next/sayCell, first/lastCellInTable, moveToTop/BottomOfColumn, moveToStart/EndOfRow.
+;
+; Author:  Doug Lee
+;
+; Revision History:  See CVS.
+
+globals
+	int lt_suppressHighlight,
+	handle lt_lastWin,
+	int lt_lastCol
+
+string function lt_stringCast(variant v)
+; Cast of anything to string, to make the compiler happy in a few places.
+return v
+endFunction
+
+string function lt_stringSegmentWithMultiCharDelim(string s, string sep, int idx)
+; Same as stringSegment but with multi-character delimiters.
+; Used in breaking up MSAA accDescription strings containing multiple ListView column names/values.
+var
+	int pos
+let idx = idx -1
+while stringLength(s) && idx
+	let pos = stringContains(s, sep)
+	if !pos then
+		return ""
+	endIf
+	let s = stringChopLeft(s, pos+stringLength(sep) -1)
+	let idx = idx -1
+endWhile
+let pos = stringContains(s, sep)
+if pos then
+	let s = stringLeft(s, pos-1)
+endIf
+return s
+endFunction
+
+int function lt_canTryLVCalls()
+; Returns True if it is ok to try the lv* functions, which became available in JAWS 5.10.
+;return (getJfwVersion() >= 510000)
+return False
+endFunction
+
+int function lt_getMSAARect(object o, int childID, int byRef left, int byRef right, int byRef top, int byRef bottom)
+; Get the bounding rectangle for the given MSAA object and childID.
+; The rectangle is returned 1-based, as JAWS likes its rectangles.
+; MSAA provides 0-based left/top/width/height.
+o.accLocation(intRef(left), intRef(top), intRef(right), intRef(bottom), childID)
+if !left && !right && !top && !bottom then
+	return False
+endIf
+; but we want 1-based left/right/top/bottom.
+let left = left +1
+let top = top +1
+let right = left +right
+let bottom = top +bottom
+return True
+endFunction
+
+int function lt_move(string where)
+; Move to and announce the requested "cell" of the focused ListView control,
+; or left-click or right-click the current cell or its header.
+; Where:
+;	- Left/right/up/down to move one cell.
+;	- Home/end for start/end of row.
+;	- Top/bottom for top/bottom of current column.
+;	- First/last for first/last cell in view.
+;	- Here for current cell.
+;	- (Cell|Header)Click(Left|Right) to left- or right-click the current cell or its header.
+var
+	int useLV, string moveFunc,
+	handle hwndList, handle hwndHeader,
+	object oList, int rowIdx, int rowCount,
+	object oHeader, int colIdx, int colCount,
+	int sayRow, int sayCol, int sayCell,
+	int rowSaid,
+	string buf, int pos,
+	int sayColPos, int sayRowPos
+
+if !isPCCursor() || userBufferIsActive() || menusActive() then
+	return False
+endIf
+let hwndList = getFocus()
+
+; Figure out if this is a control with which we can do anything useful.
+; Also figure out if we can use JAWS 5.10+ lv* calls or whether we must use MSAA instead.
+let useLV = lt_canTryLVCalls()
+if useLV then
+	let useLV = (lvGetNumOfColumns(hwndList))
+endIf
+if !useLV && getWindowTypeCode(hwndList) != WT_ListView then
+	return False
+endIf
+
+; Reset the column index when we move from one list to another.
+if lt_lastWin != hwndList then
+	let lt_lastWin = hwndList
+	let lt_lastCol = 1
+endIf
+
+; Get the list's MSAA object even if we will be using lv* calls.
+; Reason: lvSetFocusItem() and setCurrentItem() seem unreliable; they can return 1 but still change nothing.
+; This is just in case we need to use accSelect.
+let oList = getObjectFromEvent(hwndList, 0-4, 0, rowIdx)
+if !oList then
+	sayMessage(OT_Error, "List access error")
+	return True  ; don't go on to try a table access
+endIf
+
+; Get the current list item and header info.
+if useLV then
+	let rowIdx = getCurrentItem(hwndList)
+	if !rowIdx then
+		sayMessage(OT_Error, "Nothing selected")
+		return True
+	endIf
+	let rowCount = getItemCount(hwndList)
+	let colIdx = lt_lastCol
+	; May be 0 or out of range; leave it that way for now.
+	let colCount = lvGetNumOfColumns(hwndList)
+else  ; use MSAA
+	; List info
+	let rowIdx = oList.accFocus +0
+	if !rowIdx then
+		sayMessage(OT_Error, "Nothing selected")
+		return True
+	endIf
+	let rowCount = oList.accChildCount -1  ; -1 to account for the header object
+
+	; Header info
+	let hwndHeader = getFirstChild(hwndList)
+	if !hwndHeader then
+		sayMessage(OT_Error, "List headers not found")
+		return True
+	endIf
+	let oHeader = getObjectFromEvent(hwndHeader, 0-4, 0, colIdx)
+	if !oHeader then
+		sayMessage(OT_Error, "List header access error")
+		return True
+	endIf
+	let colIdx = lt_lastCol
+	; May be 0 or out of range; leave it that way for now.
+	let colCount = oHeader.accChildCount +0
+endIf
+
+; Set rowIdx, colIdx, sayCol, sayRow, sayColPos, sayRowPos, and sayCell based on the navigation request.
+; Also set moveFunc if the list item is changing.
+let sayCol = False
+let sayRow = False
+let sayColPos = False
+let sayRowPos = False
+let sayCell = True
+	let moveFunc = ""
+if where == "left" then
+	let colIdx = colIdx -1
+	let sayCol = True
+elif where == "right" then
+	let colIdx = colIdx +1
+	let sayCol = True
+elif where == "up" then
+	let rowIdx = rowIdx -1
+	let sayRow = True
+	let moveFunc = "priorLine"
+elif where == "down" then
+	let rowIdx = rowIdx +1
+	let sayRow = True
+	let moveFunc = "nextLine"
+elif where == "home" then
+	let colIdx = 1
+	let sayCol = True
+elif where == "end" then
+	let colIdx = colCount
+	let sayCol = True
+elif where == "top" then
+	let rowIdx = 1
+	let sayRow = True
+	let moveFunc = "JAWSHome"
+elif where == "bottom" then
+	let rowIdx = rowCount
+	let sayRow = True
+	let moveFunc = "JAWSEnd"
+elif where == "first" then
+	let rowIdx = 1
+	let colIdx = 1
+	let sayCol = True
+	let sayRow = True
+	let moveFunc = "JAWSHome"
+elif where == "last" then
+	let rowIdx = rowCount
+	let colIdx = colCount
+	let sayCol = True
+	let sayRow = True
+	let moveFunc = "JAWSEnd"
+elif where == "here" then
+	; No navigation.
+	let sayCol = True
+	let sayRow = True
+	let sayColPos = True
+	let sayRowPos = True
+elif where == "cellClick" then  ; left or right
+	; SayCell already set.
+elif where == "headerClick" then  ; left or right
+	let sayCell = False
+	let sayCol = True
+else
+	sayMessage(OT_Error, "Unknown navigation: " +where)
+	return True
+endIf
+
+; Enforce boundaries and update the remembered last-visited column index.
+if !moveFunc then
+	; Row boundaries are determined by the control itself when key sending is used to move focus; see below.
+	if rowIdx < 1 then
+		beep()
+		let rowIdx = 1
+		let moveFunc = ""
+	elif rowIdx > rowCount then
+		beep()
+		let rowIdx = rowCount
+		let moveFunc = ""
+	endIf
+endIf
+if colIdx < 1 then
+	beep()
+	let colIdx = 1
+elif colIdx > colCount then
+	beep()
+	let colIdx = colCount
+endIf
+let lt_lastCol = colIdx
+
+; Move focus if necessary but prevent the speaking of highlighting.
+if moveFunc then
+	let lt_suppressHighlight = True
+	if moveFunc then
+		; This is the preferred way of changing focus:  It's what the app will expect, and it won't focus something without scrolling it into view.
+		if formatStringWithEmbeddedFunctions("<" +moveFunc +">") == 0 then
+			beep()
+		endIf
+	elif useLV then
+		; LvSetFocusItem() and setCurrentItem() seem unreliable; they can return 1 but still change nothing.
+		; We therefore still use MSAA here, which is why we got the MSAA object earlier regardless of useLV.  [DGL, 2006-01-11, JAWS 6.20]
+		;SetCurrentItem(hwndList, rowIdx)
+		oList.accSelect(3, rowIdx)
+	else
+		oList.accSelect(3, rowIdx)
+	endIf
+	pause()
+	; The stopSpeech is still here even though we suppress highlighting via the global lt_suppressHighlight variable.
+	; This is because app-specific scripts with their own sayHighlightedText functions can (and often do) speak their own highlighting, thus defeating the lt_suppressHighlight approach.
+	; For some reason, using only stopSpeech seems to allow a split second of unwanted speech unless the lt_suppressHighlight method is also used.
+	; We therefore use both at once.  [DGL, 2006-01-11]
+	stopSpeech()
+endIf
+
+; Click if a click was requested.
+if stringContains(stringLower(where), "click") then
+	var
+		int isRight,
+		int left, int right, int top, int bottom,
+		int cx, int cy
+	let isRight = (stringContains(stringLower(where), "right") > 0)
+	; lvGetItemColumnRect can crash the app against which it is called, so we use MSAA here.
+	if !lt_getMSAARect(oHeader, colIdx, left, right, top, bottom) then
+		beep()
+		return False
+	endIf
+	let cx = (left+right) /2
+	if where == "cellClick" then
+		let cy = getCursorRow()
+	elif where == "headerClick" then
+		let cy = (top+bottom) /2
+	endIf  ; cell or header
+	saveCursor()  JAWSCursor()  saveCursor()
+	moveTo(cx, cy)
+	if isRight then
+		rightMouseButton()
+	else
+		leftMouseButton()
+	endIf
+	delay(1, True)
+endIf  ; click
+
+; Reset the row index to what's actually the case.
+; This is to handle cases where arrows follow visual order but not item index order.
+; Example:  when a Windows Explorer Details view is sorted by type.
+; This may also be needed when a list is resorted by a click.
+if useLV then
+let rowIdx = getCurrentItem(hwndList)
+else
+let rowIdx = oList.accFocus +0
+endIf
+
+; Say row, column, and/or cell if appropriate.
+if useLV then
+	if sayRow then
+		;sayMessage(OT_Message, lt_stringCast(lvGetItemText(hwndList, rowIdx, 1)))
+		;let rowSaid = True
+	endIf
+	if sayCol then
+		sayMessage(OT_Message, lvGetColumnHeader(hwndList, colIdx))
+	endIf
+	if sayCell then
+		if colIdx == 1 then
+			if !rowSaid then
+				sayMessage(OT_Message, lvGetItemText(hwndList, rowIdx, colIdx))
+			endIf
+		else
+			sayMessage(OT_Message, lvGetItemText(hwndList, rowIdx, colIdx))
+		endIf
+	endIf  ; sayCell
+else  ; Use MSAA instead
+	if sayRow then
+		;sayMessage(OT_Message, lt_stringCast(oList.accName(1)))
+		;let rowSaid = True
+	endIf
+	if sayCol then
+		sayMessage(OT_Message, oHeader.accName(colIdx))
+	endIf
+	if sayCell then
+		if colIdx == 1 then
+			if !rowSaid then
+				sayMessage(OT_Message, oList.accName(rowIdx))
+			endIf
+		else
+			let buf = oList.accDescription(rowIdx)
+			let pos = stringContains(buf, lt_stringCast(oHeader.accName(colIdx)) +":")
+			if !pos then
+				let buf = lt_stringSegmentWithMultiCharDelim(buf, ", ", colIdx-1)  ; -1 because the first column is not included in accDescription
+				if !stringLength(buf) then
+					sayMessage(OT_Error, "Can't find column value")
+					return True
+				endIf
+			else
+				let buf = stringChopLeft(buf, pos +stringLength(oHeader.accName(colIdx)) +1)
+				if colIdx < colCount then
+					let pos = stringContains(buf, lt_stringCast(oHeader.accName(colIdx+1)) +":")
+					if pos then
+						let buf = stringLeft(buf, pos-1)
+					else
+						sayMessage(OT_Error, "Can't find end of cell value")
+						; allow the overly long value to speak though
+					endIf
+				endIf
+			endIf
+			sayMessage(OT_Message, buf)
+		endIf
+	endIf  ; sayCell
+endIf  ; LV vs. MSAA
+
+if sayRowPos then
+	sayMessage(OT_Position, "Row " +intToString(rowIdx) +" of " +intToString(rowCount))
+endIf
+if sayColPos then
+	sayMessage(OT_Position, "Column " +intToString(colIdx) +" of " +intToString(colCount))
+endIf
+return True
+endFunction
+
+void function lt_clearSuppressHighlight()
+let lt_suppressHighlight = False
+endFunction
+
+script downCell()
+if !lt_move("down") then
+	performScript downCell()
+endIf
+endScript
+
+script upCell()
+if !lt_move("up") then
+	performScript upCell()
+endIf
+endScript
+
+script priorCell()
+if !lt_move("left") then
+	performScript priorCell()
+endIf
+endScript
+
+script nextCell()
+if !lt_move("right") then
+	performScript nextCell()
+endIf
+endScript
+
+script moveToTopOfColumn()
+if !lt_move("top") then
+	performScript moveToTopOfColumn()
+endIf
+endScript
+
+script moveToBottomOfColumn()
+if !lt_move("bottom") then
+	performScript moveToBottomOfColumn()
+endIf
+endScript
+
+script moveToStartOfRow()
+if !lt_move("home") then
+	performScript moveToStartOfRow()
+endIf
+endScript
+
+script moveToEndOfRow()
+if !lt_move("end") then
+	performScript moveToEndOfRow()
+endIf
+endScript
+
+script firstCellInTable()
+if !lt_move("first") then
+	performScript firstCellInTable()
+endIf
+endScript
+
+script lastCellInTable()
+if !lt_move("last") then
+	performScript lastCellInTable()
+endIf
+endScript
+
+script sayCell()
+if !lt_move("here") then
+	performScript sayCell()
+endIf
+endScript
+
+script ltLeftClickCell()
+if !lt_move("cellClickLeft") then
+	sayCurrentScriptKeyLabel()
+	typeCurrentScriptKey()
+endIf
+endScript
+
+script ltRightClickCell()
+if !lt_move("cellClickRight") then
+	sayCurrentScriptKeyLabel()
+	typeCurrentScriptKey()
+endIf
+endScript
+
+script ltLeftClickHeader()
+if !lt_move("headerClickLeft") then
+	sayCurrentScriptKeyLabel()
+	typeCurrentScriptKey()
+endIf
+endScript
+
+script ltRightClickHeader()
+if !lt_move("headerClickRight") then
+	sayCurrentScriptKeyLabel()
+	typeCurrentScriptKey()
+endIf
+endScript
+
+;*******************************************
+; called when left/right arrows are used in tree views
+void function ObjStateChangedEvent(handle hObj, int iObjType, int nChangedState, int nState, int nOldState)
+	if iObjType == wt_treeview || iObjType == wt_treeviewItem then
+		sayLine(0)
+		return
+	endif
+	ObjStateChangedEvent(hObj, iObjType, nChangedState, nState, nOldState)
+EndFunction
+
+
+;===============================================================================
+;
+; Code supporting custom commands sent directly to the framework by keystrokes listed in the app.jkm file.
+; This code includes constants, a script called by all such keys, and overrides to provide help for these keys.
+; Help for custom keys is located in the Custom Command Help section of the app.jcf file.
+; Keys in this section take the form short1=..., long1=..., short2=..., etc.
+; "Short" is the short (Synopsis) help text, and long is the longer (description) text.
+; Warning:  Each .jcf line should be less than 255 characters long.
+;
+; Overrides:  Functions GetScriptSynopsis and GetScriptDescription.
+; This section uses the VA508SendMessage function and the gbVA508needToLinkToDLL global variable.
+
+const
+; Name of the below script
+; jkm lines should look like, for example,  F1=VA508SendCustomCommand(1)
+	VA508_Custom_Command_Script = "VA508SendCustomCommand",
+; Offset added to the cmdno passed to the script to get the LParam value for SendMessage.
+	VA508_Custom_Command_Offset = 0x100000,
+; app.jcf section name for help text
+	VA508_Custom_Command_Help_Section = "Custom Command Help",
+; Prefixes for command synopses and descriptions, the full key being one of these plus the command number.
+	VA508_Custom_Command_Help_Prefix1 = "short",
+	VA508_Custom_Command_Help_Prefix2 = "long"
+
+;*******************************************
+; Called from the application .jkm file to send custom messages to the framework.
+; Example jkm line:  F1=VA508SendCustomCommand(1)
+;*******************************************
+script VA508SendCustomCommand(int cmdno)
+var
+	handle hwnd,
+	int WParam,
+	int LParam
+if gbVA508needToLinkToDLL then
+	sayMessage(OT_Error, "Framework not connected")
+	return
+endIf
+let hwnd = ghVA508DLLWindow
+let WParam = 0
+let LParam = cmdno +VA508_Custom_Command_Offset
+VA508SendMessage(hwnd, WParam, LParam)
+endScript
+
+;*******************************************
+; Retrieve help text for custom commands.
+; Scr is the script name (VA508SendCustomCommand).
+; Cmdno is the command number being queried.
+; Extended is True for long (Description) text and False for short (Synopsis) text.
+;*******************************************
+string function getCustomScriptHelpText(string scr, int cmdno, int extended)
+var
+	string sSect,
+	string sKey,
+	string sFile,
+	string helpBuf
+let sFile = findJAWSSettingsFile(getActiveConfiguration() +".jcf")
+if !fileExists(sFile) then
+	; No file, no custom help.
+	return ""
+endIf
+let sSect = VA508_Custom_Command_Help_Section
+if extended then
+	let sKey = VA508_Custom_Command_Help_Prefix2
+else
+	let sKey = VA508_Custom_Command_Help_Prefix1
+endIf
+let sKey = sKey +intToString(cmdno)
+let helpBuf = iniReadString(sSect, sKey, "", sFile)
+return helpBuf
+endFunction
+
+;*******************************************
+; Pull the command number being queried from the jkm line for the just-pressed keystroke.
+;*******************************************
+int function getCustomCommandNumber()
+var
+	string keyName,
+	string scr
+; This pulls the current script name with parameters.
+let keyName = getCurrentScriptKeyName()
+let scr = getScriptAssignedTo(keyName)
+; and this pulls out the number in parentheses.
+let scr = stringChopLeft(scr, stringContains(scr, "("))
+let scr = stringLeft(scr, stringContains(scr, ")") -1)
+return stringToInt(scr)
+endFunction
+
+;*******************************************
+; Implements GetScriptSynopsis and GetScriptDescription below.
+; Returns custom help if found and normal (jsd) help if not.
+;*******************************************
+string function getScriptHelpText(string scr, int extended)
+var
+	int cmdno,
+	string helpBuf
+let helpBuf = ""
+if stringCompare(scr, VA508_Custom_Command_Script, False) == 0 then
+	let cmdno = getCustomCommandNumber()
+	let helpBuf = getCustomScriptHelpText(scr, cmdno, extended)
+	if helpBuf then
+		return helpBuf
+	endIf
+endIf
+if extended then
+	return getScriptDescription(scr)
+else
+	return getScriptSynopsis(scr)
+endIf
+endFunction
+
+;*******************************************
+; Override of standard JAWS function.
+;*******************************************
+string function getScriptSynopsis(string scr)
+	return getScriptHelpText(scr, False)
+endFunction
+
+;*******************************************
+; Override of standard JAWS function.
+;*******************************************
+string function getScriptDescription(string scr)
+return getScriptHelpText(scr, True)
+;va508getApplicationData(getFocus(),va508_queryCode_all)
+;sayString(VA508GetStringValue(va508_fieldname_data_status))
+;sayString(gsva508data)
+endFunction
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptions.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptions.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptions.dfm	(revision 1676)
@@ -0,0 +1,1716 @@
+inherited frmOptions: TfrmOptions
+  Left = 315
+  Top = 110
+  Width = 435
+  Height = 397
+  HelpContext = 9999
+  VertScrollBar.Range = 360
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Options'
+  Font.Name = 'Tahoma'
+  HelpFile = 'CPRSWT.HLP'
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 435
+  ExplicitHeight = 397
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBottom: TPanel [0]
+    Left = 0
+    Top = 335
+    Width = 429
+    Height = 30
+    HelpContext = 9999
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 1
+    object btnOK: TButton
+      Left = 187
+      Top = 2
+      Width = 75
+      Height = 22
+      HelpContext = 9007
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnApplyClick
+    end
+    object btnCancel: TButton
+      Left = 267
+      Top = 2
+      Width = 75
+      Height = 22
+      HelpContext = 9008
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+    object btnApply: TButton
+      Left = 347
+      Top = 2
+      Width = 75
+      Height = 22
+      HelpContext = 9009
+      Caption = 'Apply'
+      Enabled = False
+      TabOrder = 2
+      OnClick = btnApplyClick
+    end
+  end
+  object pnlMain: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 429
+    Height = 335
+    Align = alClient
+    BevelOuter = bvNone
+    BorderWidth = 5
+    ParentColor = True
+    TabOrder = 0
+    object pagOptions: TPageControl
+      Left = 5
+      Top = 5
+      Width = 419
+      Height = 325
+      HelpContext = 9999
+      ActivePage = tsCprsReports
+      Align = alClient
+      TabOrder = 0
+      OnEnter = pagOptionsEnter
+      object tsCoverSheet: TTabSheet
+        HelpContext = 9000
+        Caption = 'General'
+        DesignSize = (
+          411
+          297)
+        object bvlCoverDays: TBevel
+          Left = 125
+          Top = 16
+          Width = 275
+          Height = 2
+        end
+        object bvlCoverReminders: TBevel
+          Left = 112
+          Top = 102
+          Width = 288
+          Height = 2
+        end
+        object imgCoverDays: TImage
+          Left = 16
+          Top = 27
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000777777777777777777777777700000007FFF8FFF8FFF8FFF88888
+            888800000007FFF8FFF8FFF8FFF88888888800000007FFF8FFF8FFF8FFF88888
+            88880000000788888888888888888888888800000007FFF8FFF8FFF8FFF8FFF8
+            FFF800000007FFF8FFF8FFF8FFF8FFF8FFF800000007FFF8FFF8FFF8FFF8FFF8
+            FFF80000000788888888888888888888888800000007FFF8FFF8FFF8FFF8FFF8
+            FFF800000007FFF8FFF8FFF8FFF8FFF8FFF800000007FFF8FFF8FFF8FFF8FFF8
+            FFF80000000788888888888888881118888800000007FFF8FFF8FFF8FFF18F81
+            FFF800000007FFF8FFF8FFF8FFF1FFF1FFF800000007FFF8FFF8FFF8FFF18F81
+            FFF80000000788888888888888881118888800000007888888888888FFF8FFF8
+            FFF800000007888888888888FFF8FFF8FFF800000007888888888888FFF8FFF8
+            FFF8000000077777777777777777777777770000000744444444444477777777
+            7777000000074444444444447777777777770000000777777777777777777777
+            7777000000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFE0000007E0000007E0000007E0000007E0000007E0000007E0000007
+            E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
+            E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
+            E0000007E0000007FFFFFFFFFFFFFFFFFFFFFFFF280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
+            0000000000000000000000008FF7FF7FF7FF7FF08FF7FF7FF7FF7FF087777777
+            777777708FF7FF7FF7FF7FF08FF7FF7FF7FF7FF087777777711117708FF7FF7F
+            F1FF1FF08FF7FF7FF1FF1FF087777777711117708FF7FF7FF7FF7FF08FF7FF7F
+            F7FF7FF0844444448888888084444444888888808888888888888880FFFF0000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000000000000000000000000000000000000000000000}
+        end
+        object imgCoverReminders: TImage
+          Left = 16
+          Top = 115
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            000000000000000008FFF0000000000000000000000000008BFBFFF000000000
+            0000000000000008BFBFFBFFB0000000000000000000000BFBFBFFFFFFF00000
+            000000000000008FBFBFBFBFBFFFB00000000000000000FBFBF38BFBFFFFFFB0
+            00000000000008BFBFB88888BFBFBFFFB000000000000BFBFB83878B8BFFFFFF
+            FFB0000000008FBFBFBF38383FB8BFFBFFFFB0000000FBFB83FBFB83FB838BFF
+            FFBFFF700008BFBF7838BFBFB87F87BFBFFFFF70000BFBFB8B878B8BFB8B8F83
+            8FFBF700008FBFBFB8B87838BFB8383F88FF700000FBFB8BFBF3838788FBFBF3
+            8BFB700008BFB878B8BFBFB83878BFF8FFF700000BFBF38B878BFBFBF37788FB
+            FBF700008FBFBFB8B8387FBFBFB838BFFF7000008BFBFBFBFB838B8BFBFBF3FB
+            FB70000077BFBFBFB887BF383FBFBFBFB70000000077FBFBFBFBF3FB878B8BFB
+            F7000000000077BFBFBFBF38B778BFBF7000000000000077FBFBFBFBFB83FBFB
+            700000000000000077BFBFBFBFBFBFB700000000000000000077FBFBFBFBFBF7
+            0000000000000000000077BFBFBFBF70000000000000000000000077FBFBFB70
+            00000000000000000000000077BFB70000000000000000000000000000777000
+            0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF87FFFF
+            FF01FFFFFE007FFFFC001FFFFC0007FFF80001FFF800007FF000001FF0000007
+            E0000001E0000001C0000001C000000380000007800000070000000F0000000F
+            0000001F0000001F0000003FC000003FF000007FFC00007FFF0000FFFFC000FF
+            FFF001FFFFFC01FFFFFF03FFFFFFC7FFFFFFFFFF280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
+            00000000000000000000000000000FB00000000000000BFBF00000000000BFBF
+            BFB000000000FB88FBFBF000000FBFBF88BFBFB0000BF88BFB88FB8000BFBFB8
+            8FBFB80000FB88FBF88BF800088FBF88BFBF800000088BFB88FB80000000088F
+            BFB80000000000088BF8000000000000088000000000000000000000FFFF0000
+            F9FF0000F07F0000F01F0000E0070000E0010000C0000000C001000080030000
+            8003000080070000E0070000F80F0000FE0F0000FF9F0000FFFF0000}
+        end
+        object bvlOtherParameters: TBevel
+          Left = 115
+          Top = 185
+          Width = 288
+          Height = 2
+        end
+        object imgOtherParameters: TImage
+          Left = 15
+          Top = 197
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000
+            000000000000000000FBFFFBFFFBFFFBFFFBFFF00000000000FFFFFFFFFFFFFF
+            FFFFFFF00000000000FFFBFFFBFFFBFFFBFFFBF00000000000FFFFFFFFFFFFFF
+            FFFFFFF00000000000FB77777777777777777FF00000000000FFFFFFFFFFFFFF
+            FFFFFFF00000000000FFFBFFFBFFFBFFFBFFFBF00000000000FFFFFFFFFFFFFF
+            FFFFFFF000000000008877777777777777777FF0000000000000000000000008
+            FFFFFFF00BFBFBFBFBFBFBFBFBFBFB08FBFFFBF000BFBFBFBFBFBFBFBFBFBFB0
+            8FFFFFF000FBFBFBFBFBFBFBFBFBFBF077777FF0000FBFBFBFBFBFBFBFBFBFBF
+            08FFFFF0000BFBFBFBFBFBFBFBFBFBFB08FFFBF00000BFBFBFBFBFBFBFBFBFBF
+            B08FFFF00000FBFBFBFBFBFBFBFBFBFBF0777FF000000FBFBFBFBFBFBFBFBFBF
+            BF08FFF000000BFBFBFBFBFBFBFBFBFBFB08FBF0000000BFBFBF000000000FBF
+            BFB08FF0000000FBFBFB0FFFFFFF0BFBFBF07FF00000000FBFBFB0F0F00FF0BF
+            BFBF08F00000000BFBFBF0FF0000F0FBFBFB08F000000000BFBFBF0FFFFFFF0F
+            BFBFB08000000000FBFBFB000000000BFBFBF080000000000FBFBFBFBFBFBFBF
+            BFBFBF00000000000BFBFBFBFBFBFBFBFBFBFB000000000000BF7FBF7FBF7FBF
+            7FBF7FB000000000000070007000700070007000000000000000707070707070
+            7070707000000000000007000700070007000700FF800000FF800000FF800000
+            FF800000FF800000FF800000FF800000FF800000FF800000FF80000000000000
+            000000008000000080000000C0000000C0000000E0000000E0000000F0000000
+            F0000000F8000000F8000000FC000000FC000000FE000000FE000000FF000000
+            FF000000FF800000FF800000FFF55555FFFBBBBB280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            00008000008000000080800080000000800080008080000080808000C0C0C000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
+            0000000000000FBFBFBFBFB000000B77777777F000000FBFBFBFBFB000000B77
+            777777F0000000000000BFB00BFBFBFBFBF0F7F000BFBFBFBFBF0FB000FBFBFB
+            FBFB0BF0000FB00000BFB0B0000BFB0FFF0BF0F00000BF00000FBF000000FBFB
+            FBFBFB00000007BF7FB7BF7000000700700700700000007007007007F0000000
+            F0000000F0000000F0000000F000000000000000000000008000000080000000
+            C0000000C0000000E0000000E0000000F0000000F0000000FDB60000}
+        end
+        object lblCoverReminderDesc: TMemo
+          Left = 125
+          Top = 115
+          Width = 275
+          Height = 67
+          TabStop = False
+          Anchors = [akLeft, akTop, akRight]
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Configure and arrange which clinical reminders are '
+            'displayed on your cover sheet.')
+          ReadOnly = True
+          TabOrder = 3
+        end
+        object lblCoverReminders: TStaticText
+          Left = 13
+          Top = 95
+          Width = 90
+          Height = 17
+          Caption = 'Clinical Reminders'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 4
+        end
+        object lblCoverDaysDesc: TMemo
+          Left = 125
+          Top = 27
+          Width = 275
+          Height = 70
+          TabStop = False
+          Anchors = [akLeft, akTop, akRight]
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Change the default date ranges for displaying patient '
+            'information on your cover sheet.')
+          ReadOnly = True
+          TabOrder = 5
+        end
+        object lblCoverDays: TStaticText
+          Left = 13
+          Top = 9
+          Width = 102
+          Height = 17
+          Caption = 'Date Range defaults'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 6
+        end
+        object lblOtherParameters: TStaticText
+          Left = 12
+          Top = 177
+          Width = 86
+          Height = 17
+          Caption = 'Other Parameters'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 7
+        end
+        object lblOtherParametersDesc: TMemo
+          Left = 124
+          Top = 195
+          Width = 275
+          Height = 78
+          TabStop = False
+          Anchors = [akLeft, akTop, akRight]
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Configure chart tab setting.'
+            ''
+            'Change display date range on Meds tab.'
+            ''
+            'Change Encounter Appointments date range.')
+          TabOrder = 8
+        end
+        object btnCoverDays: TButton
+          Left = 255
+          Top = 67
+          Width = 145
+          Height = 22
+          HelpContext = 9001
+          Anchors = [akTop, akRight]
+          Caption = '&Date Range Defaults...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 0
+          OnClick = btnCoverDaysClick
+        end
+        object btnCoverReminders: TButton
+          Left = 255
+          Top = 150
+          Width = 145
+          Height = 22
+          HelpContext = 9002
+          Anchors = [akTop, akRight]
+          Caption = '&Clinical Reminders...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 1
+          OnClick = btnCoverRemindersClick
+        end
+        object btnOtherParameters: TButton
+          Left = 254
+          Top = 269
+          Width = 145
+          Height = 22
+          HelpContext = 9003
+          Anchors = [akTop, akRight]
+          Caption = '&Other Parameters...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 2
+          OnClick = btnOtherParametersClick
+        end
+      end
+      object tsNotifications: TTabSheet
+        HelpContext = 9030
+        Caption = 'Notifications'
+        object bvlNotifications: TBevel
+          Left = 88
+          Top = 16
+          Width = 312
+          Height = 2
+        end
+        object imgNotifications: TImage
+          Left = 16
+          Top = 28
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000000003888738337700000000000000000038FBFFFB788B8837
+            7000000000000788FBFFFBFFF7FF8B8883700000000007FBFFFBFFFBFF7BFFFB
+            888700000000007FFBFFFBFFFB7FFBFFFBF3700000000007FFFBFFFBFFF7FFFB
+            FF77770000000007FBFFFBFFFBF7FB7777FFF800000000007FFBFFFBFFF777FB
+            FFFBF800000000007BFFFBFFFBFFFBFFFBFFF8000000000007FBFFFBFFFBFFFB
+            FFFBF8000000000007FFFBFFFBFFFBFFFBFFF8000000000000000FFBFFFBFFFB
+            FFFBF80000000000011110FFFBFFFBFFFBFFF80000111000011110FBFFFBFFFB
+            FFFBF800011111000001110FFBFFFBFFFBFFF800091111011110110FFFFFFFFB
+            FFFBF800091111011110110000000FFFFBFFF8000991110111101107777777FB
+            FFFBF800099111099991110FFBFFFBFFFBFFF80000999077091110FBFFFBFFFB
+            FFFBF80000000000099910FFFBFFFBFFFBFFF8000000000000000FFBFFFBFFFB
+            FFFBF8000000000007FFFBFFFBFFFBFFFBFFF8000000000007FBFFFBFFFBFFFB
+            FFFBF8000000000007FFFBFFFBFFFBFFFBFFF8000000000007FBFFFBFFFBFFFB
+            FFFBF80000000000077777777777777777777700000000000000000000000000
+            0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFE003FF
+            FF00007FFC00001FF800000FF8000007FC000003FE000001FE000001FF000001
+            FF000001FF800001FF800001FF800001C7000001830000010000000100000001
+            00000001000000010000000180000001C7000001FF800001FF800001FF800001
+            FF800001FF800001FF800001FFFFFFFFFFFFFFFF280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
+            00000000000000000000000000087B77088800000008FFFBF0B7880000008BFF
+            FB0FB78000008FFBFF0F0080000008FFFB80FB700000000BFFFBFF7000000660
+            FBFFFB7006600060FFFBFF700E60E06000FFFB700EE00EE0FFFBFF700000000F
+            FBFFFB70000008FBFFFBFF7000000888888888800000000000000000FFFF0000
+            F00F0000E0030000E0010000F0000000F0000000F8000000F800000090000000
+            00000000000000000000000098000000F8000000F8000000FFFF0000}
+        end
+        object lblNotificationView: TLabel
+          Left = 10
+          Top = 118
+          Width = 349
+          Height = 13
+          Caption = 
+            'You can turn on or off these notifications except those that are' +
+            ' mandatory.'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+        end
+        object lblNotificationsOptions: TStaticText
+          Left = 125
+          Top = 27
+          Width = 164
+          Height = 17
+          Caption = 'Change your notification options.'
+          TabOrder = 4
+        end
+        object lblNotifications: TStaticText
+          Left = 13
+          Top = 9
+          Width = 62
+          Height = 17
+          Caption = 'Notifications'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 5
+        end
+        object lblNotificationsSurrogate: TStaticText
+          Left = 9
+          Top = 100
+          Width = 53
+          Height = 17
+          Caption = 'Surrogate:'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 6
+        end
+        object lblNotificationsSurrogateText: TStaticText
+          Left = 60
+          Top = 100
+          Width = 130
+          Height = 17
+          Caption = '<no surrogate designated>'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 7
+        end
+        object lvwNotifications: TCaptionListView
+          Left = 0
+          Top = 138
+          Width = 411
+          Height = 159
+          HelpContext = 9035
+          Align = alBottom
+          Checkboxes = True
+          Columns = <
+            item
+              Caption = 'Notification'
+              Width = 190
+            end
+            item
+              Caption = 'On/Off'
+            end
+            item
+              Caption = 'Comment'
+              Width = 145
+            end>
+          ReadOnly = True
+          RowSelect = True
+          TabOrder = 3
+          ViewStyle = vsReport
+          OnChange = lvwNotificationsChange
+          OnColumnClick = lvwNotificationsColumnClick
+          OnCompare = lvwNotificationsCompare
+          OnDblClick = lvwNotificationsDblClick
+          OnEnter = lvwNotificationsEnter
+          OnMouseDown = lvwNotificationsMouseDown
+          Caption = 
+            'You can turn on or off these notifications except those that are' +
+            ' mandatory.'
+        end
+        object btnNotificationsRemove: TButton
+          Left = 191
+          Top = 73
+          Width = 160
+          Height = 22
+          HelpContext = 9031
+          Caption = '&Remove Pending Notifications...'
+          Enabled = False
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 2
+          OnClick = btnNotificationsRemoveClick
+        end
+        object chkNotificationsFlagged: TCheckBox
+          Left = 88
+          Top = 50
+          Width = 241
+          Height = 16
+          HelpContext = 9032
+          Caption = 'Send me a MailMan bulletin for flagged orders'
+          TabOrder = 0
+          OnClick = chkNotificationsFlaggedClick
+        end
+        object btnSurrogate: TButton
+          Left = 8
+          Top = 73
+          Width = 120
+          Height = 22
+          HelpContext = 9033
+          Caption = 'Surrogate Settings...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 1
+          OnClick = btnSurrogateClick
+        end
+      end
+      object tsOrderChecks: TTabSheet
+        HelpContext = 9040
+        Caption = 'Order Checks'
+        ImageIndex = 3
+        object lblOrderChecksDesc: TLabel
+          Left = 125
+          Top = 27
+          Width = 275
+          Height = 30
+          AutoSize = False
+          Caption = 'Enable or disable your order checks.'
+          WordWrap = True
+        end
+        object bvlOrderChecks: TBevel
+          Left = 88
+          Top = 16
+          Width = 312
+          Height = 2
+        end
+        object imgOrderChecks: TImage
+          Left = 16
+          Top = 27
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            0000000000000777777777777777777777700000000007FFFFFFFFFFFFFFFFFF
+            FF700000000007FFFFFFFFFFFFFFFFFFFF700000000007FFFFFFFFFFFFFFFFFF
+            FF700000000007FFFFFF888FFFFFFFFFFF700000000007FFFFF81188FFFFFFFF
+            FF700000000007FFFF8111188FFFFFFFFF700000000007FFF81111118FFFFFFF
+            FF700000000007FF8111111178FFFFFFFF700000000007FF1111F711188FFFFF
+            FF700000000007FF111FFF811188FFFFFF700000000007FFF1FFFFF81178FFFF
+            FF700000000007FFFFFFFFFF81178FFFFF700000000007FFFFFFFFFFFF1188FF
+            FF700000000007FFFFFFFFFFFFF1188FFF700000000007FFFFFFFFFFFFFF1188
+            FF700000000007FFFFFFFFFFFFFFF118FF700000000007FFFFFFFFFFFFFFFF11
+            FF700000000007FFFFFFFFFFFFFFFFF18F700000000007FFFFFFFFFFFFFFFFFF
+            1F700000000007FFFFFFFFFFFFFFFFFFFF700000000007FFFFF000000000008F
+            FF700000000007FFFFF777777777808FFF700000000000777777F77777778077
+            77000000000000000007F88888878000000000000000000000007FFFFFF70000
+            0000000000000000000007777777000000000000000000000000000000000000
+            0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFC00001F
+            F800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000F
+            F800000FF800000FF800000FF800000FF800000FF800000FF800000FF800000F
+            F800000FF800000FF800000FF800000FF800000FF800000FF800000FFC00003F
+            FFE003FFFFF007FFFFF80FFFFFFFFFFFFFFFFFFF280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
+            000000000000000000000000000FFFFFFFFFF000000FFF77FFFFF000000FF717
+            7FFFF000000F711177FFF000000F11F117FFF000000FFFFF187FF000000FFFFF
+            F177F000000FFFFFFF17F000000FFFFFFFF1F000000FFFFFFFFFF000000FF000
+            000FF000000000F77700000000000000000000000000000000000000FFFF0000
+            E0070000C0030000C0030000C0030000C0030000C0030000C0030000C0030000
+            C0030000C0030000C0030000C0030000E0070000FC3F0000FFFF0000}
+        end
+        object lblOrderChecksView: TLabel
+          Left = 13
+          Top = 68
+          Width = 349
+          Height = 13
+          Caption = 
+            'You can turn on or off these notifications except those that are' +
+            ' mandatory.'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+        end
+        object lblOrderChecks: TStaticText
+          Left = 13
+          Top = 9
+          Width = 69
+          Height = 17
+          Caption = 'Order Checks'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 1
+        end
+        object lvwOrderChecks: TCaptionListView
+          Left = 0
+          Top = 89
+          Width = 411
+          Height = 208
+          HelpContext = 9041
+          Align = alBottom
+          Checkboxes = True
+          Columns = <
+            item
+              Caption = 'Order Check'
+              Width = 190
+            end
+            item
+              Caption = 'On/Off'
+            end
+            item
+              Caption = 'Comment'
+              Width = 145
+            end>
+          ReadOnly = True
+          RowSelect = True
+          TabOrder = 0
+          ViewStyle = vsReport
+          OnChange = lvwNotificationsChange
+          OnColumnClick = lvwNotificationsColumnClick
+          OnCompare = lvwNotificationsCompare
+          OnDblClick = lvwNotificationsDblClick
+          OnEnter = lvwNotificationsEnter
+          OnMouseDown = lvwNotificationsMouseDown
+          Caption = 
+            'You can turn on or off these notifications except those that are' +
+            ' mandatory.'
+        end
+      end
+      object tsListsTeams: TTabSheet
+        HelpContext = 9050
+        Caption = 'Lists/Teams'
+        ImageIndex = 4
+        object bvlPatientSelection: TBevel
+          Left = 144
+          Top = 16
+          Width = 256
+          Height = 2
+        end
+        object imgPatientSelection: TImage
+          Left = 16
+          Top = 28
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00066660006606666000000000
+            000000000666066600606600000000000000000000600660FF60000000000000
+            000000000000660FFF0000000000000000000000000000FF8800000000000000
+            0000000000000FFF700005550555500000000000000007FFFFFF070050500000
+            00000000000077FFFFFF78885000000000000000000780FFFF70088800000000
+            000000000078880FFFFF088700000000000000000088870FFFFFF08000000000
+            00000000008880FFFFFF08888000000000000000008F80FFFFF7888880000000
+            0000000000FF8807FFF08888800000000000000000FFFFFFFFF0888888000000
+            00000000007FFFFFFFF888888880000000000000000FFFFFFFF0088888000000
+            00000000000007FFF00778888700000000000000000000000888778880777777
+            777777700000000FF8888788808888888888887000000007FF88887778088888
+            8888887000000000FFF8888888088848888888700000000077FFFFF700888444
+            8888887000000000007700000788444448888870000000000000000007888484
+            4488887000000000000000000788888844488870000000000000000007888888
+            8444887000000000000000000788888888444870000000000000000007888888
+            8884887000000000000000000788888888888870000000000000000007888888
+            88888870000000000000000007777777777777700001FFFF0001FFFF8003FFFF
+            C00FFFFFE01FFFFFF00007FFF00007FFE0001FFFC0003FFF80007FFF80007FFF
+            80003FFF80003FFF80003FFF80001FFFC0000FFFC0001FFFE0003FFFFC000001
+            FC000001FE000001FE000001FF000001FFC18001FFFF8001FFFF8001FFFF8001
+            FFFF8001FFFF8001FFFF8001FFFF8001FFFF8001280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000660060
+            000000000000FF0000000000000FF005050000000000FFF070000000077FFFF0
+            700000000770FFFF070000000770FF007700000007770FF07770000000777770
+            7000000000000008770888880000088888047778000000000044477800000000
+            0847447800000000087774480000000008777748000000000888888880FF0000
+            C1FF0000C01F0000803F0000003F0000001F0000001F0000000F0000801F0000
+            C0000000F0000000F8000000FF800000FF800000FF800000FF800000}
+        end
+        object bvlTeams: TBevel
+          Left = 144
+          Top = 155
+          Width = 256
+          Height = 2
+        end
+        object imgTeams: TImage
+          Left = 16
+          Top = 168
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00066660006606666000000000
+            000000000666066600606600000000000000000000600660FF60000000000000
+            000000000000660FFF0000000000000000000000000000FF8800000000000000
+            0000000000000FFF700005550555500000000000000007FFFFFF070050500000
+            00000000000077FFFFFF78885000000000000000000780FFFF70088800000000
+            000000000078880FFFFF088700000000000000000088870FFFFFF08000000000
+            00000000008880FFFFFF08888000000000000000008F80FFFFF7888880000000
+            0000000000FF8807FFF08888800000000000000000FFFFFFFFF0888888000000
+            00000000007FFFFFFFF888888880000000000000000FFFFFFFF0088888000000
+            00000000000007FFF00778888700000000000000000000000888778880000000
+            000000000000000FF8888788800000000000000000000007FF88887778000000
+            0000000000000000FFF8888888000000000000000000000077FFFFF700000000
+            0000000000000000007700000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000000000000000000000000000000000000001FFFF0001FFFF8003FFFF
+            C00FFFFFE01FFFFFF00007FFF00007FFE0001FFFC0003FFF80007FFF80007FFF
+            80003FFF80003FFF80003FFF80001FFFC0000FFFC0001FFFE0003FFFFC003FFF
+            FC003FFFFE001FFFFE001FFFFF003FFFFFC1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000660060
+            000000000000FF0000000000000FF005050000000000FFF070000000077FFFF0
+            700000000770FFFF070000000770FF007700000007770FF07770000000777770
+            7008888800000008770557780000088888077778000000000075577800000000
+            0877557800000000085775580000000008755578000000000888888880FF0000
+            C1FF0000C01F0000803F0000003F0000001F0000001F0000000F000080000000
+            C0000000F0000000F8000000FF800000FF800000FF800000FF800000}
+        end
+        object lblPatientSelectionDesc: TMemo
+          Left = 125
+          Top = 27
+          Width = 275
+          Height = 78
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Change the defaults for selecting patients. If your List '
+            'Source is Combination, the criteria is defined using '
+            'Source Combinations.')
+          ReadOnly = True
+          TabOrder = 7
+        end
+        object lblTeamsDesc: TMemo
+          Left = 125
+          Top = 168
+          Width = 275
+          Height = 73
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Edit your personal lists of patients and diagnoses. View '
+            'the teams you are on and the patients associated with '
+            'those teams.')
+          ReadOnly = True
+          TabOrder = 8
+        end
+        object lblPatientSelection: TStaticText
+          Left = 13
+          Top = 9
+          Width = 124
+          Height = 17
+          Caption = 'Patient Selection defaults'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 5
+        end
+        object lblTeams: TStaticText
+          Left = 13
+          Top = 148
+          Width = 125
+          Height = 17
+          Caption = 'Personal Lists and Teams'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 6
+        end
+        object btnPatientSelection: TButton
+          Left = 255
+          Top = 84
+          Width = 145
+          Height = 22
+          HelpContext = 9051
+          Caption = 'Patient &Selection Defaults...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 0
+          OnClick = btnPatientSelectionClick
+        end
+        object btnPersonalLists: TButton
+          Left = 255
+          Top = 210
+          Width = 145
+          Height = 22
+          HelpContext = 9052
+          Caption = 'Personal &Lists...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 2
+          OnClick = btnPersonalListsClick
+        end
+        object btnTeams: TButton
+          Left = 255
+          Top = 266
+          Width = 145
+          Height = 22
+          HelpContext = 9053
+          Caption = '&Teams Information...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 4
+          OnClick = btnTeamsClick
+        end
+        object btnCombinations: TButton
+          Left = 255
+          Top = 117
+          Width = 145
+          Height = 22
+          HelpContext = 9054
+          Caption = 'Source &Combinations...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 1
+          OnClick = btnCombinationsClick
+        end
+        object btnDiagnoses: TButton
+          Left = 256
+          Top = 237
+          Width = 145
+          Height = 22
+          Caption = 'Personal &Diagnoses List...'
+          TabOrder = 3
+          OnClick = btnDiagnosesClick
+        end
+      end
+      object tsNotes: TTabSheet
+        HelpContext = 9200
+        Caption = 'Notes'
+        ImageIndex = 4
+        DesignSize = (
+          411
+          297)
+        object bvlNotesNotes: TBevel
+          Left = 88
+          Top = 16
+          Width = 312
+          Height = 2
+        end
+        object bvlNotesTitles: TBevel
+          Left = 112
+          Top = 155
+          Width = 288
+          Height = 2
+        end
+        object imgNotesNotes: TImage
+          Left = 16
+          Top = 27
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00077777700077770000000000
+            00000000000000777000077700000000000000000FFFFF000FFFF00777000000
+            000000000FFFFFFFFFFFFF0007770000000000000FFFFFFFFFFFFFFFF0077000
+            000000000FFFFFFFFFFFFFFFFF007700000000000FFFFFFFFFFFFFFFFFF00700
+            000000000FFFFFFFFFFFFFFFFFFF0770000000000FFFFFF77777777777770077
+            777770000FFFFFFFFFFFFFFFFFFFF000000077000FFFFFFFFFFFFFFFFFFFFFFF
+            FFF007700FFFFFFFFFFFFFFFFFFFFFFFFFFF00700FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFF0700FFFFFFFFFFFFFFFFFFFFFFFFFFFF0770FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFF0070FFFFFF77777777777777777777777070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFF77777777777777777
+            777777070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFF0FFF0FF00FFFF0FFF
+            000FFF070FFFFFF0FF00F0FF0FFF0FFF0FFFFF070FFFFFF0F0F0F0FF0FFF0FFF
+            00FFFF070FFFFFF00FF0F0FF0FFF0FFF0FFFFF070FFFFFF0FFF0FF00FF00000F
+            000FFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070000000000000000000000000000000081C3FFFF0000FFFF00003FFF
+            00000FFF000007FF000003FF000003FF000001FF000000070000000300000001
+            0000000100000001000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000001280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            00008000008000000080800080000000800080008080000080808000C0C0C000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0077777777
+            0000000000000000770000000FFFFFFF007000000FFFFFFFFF0770000FF77777
+            777007770FFFFFFFFFFFF0070FFFFFFFFFFFFF070FF77777777777070FFFFFFF
+            FFFFFF070FFFFFFFFFFFFF070FF77777777777070FF9F9999F9F99070FF9999F
+            9F9F9F070FF9F9F9F99999070FFFFFFFFFFFFF07000000000000000700FF0000
+            003F0000001F0000000700000000000000000000000000000000000000000000
+            00000000000000000000000000000000000000000000000000000000}
+        end
+        object imgNotes: TImage
+          Left = 16
+          Top = 163
+          Width = 41
+          Height = 41
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00077777700077770000000000
+            00000000000000777000077700000000000000000FFFFF000FFFF00777000000
+            000000000FFFFFFFFFFFFF0007770000000000000FFFFFFFFFFFFFFFF0077000
+            000000000FFFFFFFFFFFFFFFFF007700000000000FFFFFFFFFFFFFFFFFF00700
+            000000000FFFFFFFFFFFFFFFFFFF0770000000000FFFFFF77777777777770077
+            777770000FFFFFFFFFFFFFFFFFFFF000000077000FFFFFFFFFFFFFFFFFFFFFFF
+            FFF007700FFFFFFFFFFFFFFFFFFFFFFFFFFF00700FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFF0700FFFFFFFFFFFFFFFFFFFFFFFFFFFF0770FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFF0070FFFFFF77777777777777777777777070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFF77777777777777777
+            777777070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFF0FFF0FFF0FFF000
+            F000FF070FFFFFFFF0FFF0FFF0FFF0FFF0FFFF070FFFFFFFF0FFF0FFF0FFF0FF
+            F00FFF070FFFFFFFF0FFF0FFF0FFF0FFF0FFFF070FFFFFF00000F0F00000F0FF
+            F000FF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFF
+            FFFFFF070000000000000000000000000000000081C3FFFF0000FFFF00003FFF
+            00000FFF000007FF000003FF000003FF000001FF000000070000000300000001
+            0000000100000001000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000001280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            00008000008000000080800080000000800080008080000080808000C0C0C000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0077777777
+            0000000000000000770000000FFFFFFF007000000FFFFFFFFF0770000FF77777
+            777007770FFFFFFFFFFFF0070FFFFFFFFFFFFF070FF77777777777070FFFFFFF
+            FFFFFF070FFFFFFFFFFFFF070FF77777777777070FF9F9999F9F99070FF9999F
+            9F9F9F070FF9F9F9F99999070FFFFFFFFFFFFF07000000000000000700FF0000
+            003F0000001F0000000700000000000000000000000000000000000000000000
+            00000000000000000000000000000000000000000000000000000000}
+        end
+        object lblNotesNotesDesc: TMemo
+          Left = 125
+          Top = 27
+          Width = 275
+          Height = 30
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Configure defaults for editing and saving notes.')
+          ReadOnly = True
+          TabOrder = 4
+        end
+        object lblNotesTitlesDesc: TMemo
+          Left = 125
+          Top = 165
+          Width = 275
+          Height = 78
+          TabStop = False
+          Anchors = [akLeft, akTop, akRight]
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Configure document list preferences.')
+          ReadOnly = True
+          TabOrder = 5
+        end
+        object lblNotesNotes: TStaticText
+          Left = 13
+          Top = 9
+          Width = 32
+          Height = 17
+          Caption = 'Notes'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 2
+        end
+        object lblNotesTitles: TStaticText
+          Left = 13
+          Top = 145
+          Width = 81
+          Height = 17
+          Caption = 'Document Titles'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 3
+        end
+        object btnNotesNotes: TButton
+          Left = 255
+          Top = 67
+          Width = 145
+          Height = 22
+          HelpContext = 9201
+          Anchors = [akTop, akRight]
+          Caption = '&Notes...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 0
+          OnClick = btnNotesNotesClick
+        end
+        object btnNotesTitles: TButton
+          Left = 255
+          Top = 205
+          Width = 145
+          Height = 22
+          HelpContext = 9202
+          Anchors = [akTop, akRight]
+          Caption = '&Document Titles...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 1
+          OnClick = btnNotesTitlesClick
+        end
+      end
+      object tsCprsReports: TTabSheet
+        Caption = 'Reports'
+        ImageIndex = 5
+        object bvlReports: TBevel
+          Left = 80
+          Top = 16
+          Width = 321
+          Height = 2
+        end
+        object imgReports: TImage
+          Left = 20
+          Top = 31
+          Width = 41
+          Height = 41
+          Center = True
+          Picture.Data = {
+            055449636F6E0000010001002020100000000000E80200001600000028000000
+            2000000040000000010004000000000080020000000000000000000000000000
+            0000000000000000000080000080000000808000800000008000800080800000
+            80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
+            FFFFFF0000000000000000000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000070000000000000007000
+            00000000000008FFFFFFFFFFFFFF07000000000000007888888888888888F070
+            0000000000000FFFFFFFFFFFFFFF77070000000000007888888888888888F770
+            7000000000000FFFFFFFFFFFFFFF77770700000000007888888888888888F777
+            7070000000000FFFFFFFFFFFFFFF887777070000000078888888888888888888
+            77707000080007FFFFFF888888888888887077000787707FFFF800FF00008888
+            8880777008887807FFF0F80FF808F888888077770FFF78807FF08F80FFF08FFF
+            888000000777777707FF08F0FF0008FFF880000008887887807FF008FFFF08FF
+            FF8000000FFF7FF78807FFFFFFFFFFFFFF800000077777777770000000000000
+            00000000088878878878878878870807777000000FFF7FF7FF7F87F87F870807
+            7777000007777777777777777777080777777000088878878878878878870807
+            777777000FFF7FF7FF7FF7FF7FF7080777777000044444444444444444440800
+            00000000044444444444FF4FF4F4040000000000044444444444444444440400
+            0000000000000000000000000000040000000000044444444444444444444000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000FFFFFFFFFFFFFFFFFFFFFFFFF7FFF7FFF80003FFF00001FFF80000FF
+            F000007FF800003FF000001FF800000FF0000007B80000038000000180000000
+            8000000F8000000F8000000F8000000F8000000F8000021F8000020F80000207
+            8000020380000207800003FF800003FF800003FF800003FF800007FFFFFFFFFF
+            FFFFFFFF}
+        end
+        object bvlReport1: TBevel
+          Left = 104
+          Top = 108
+          Width = 297
+          Height = 2
+        end
+        object bvlReport2: TBevel
+          Left = 104
+          Top = 204
+          Width = 297
+          Height = 2
+        end
+        object imgReport1: TImage
+          Left = 16
+          Top = 123
+          Width = 41
+          Height = 41
+          Center = True
+          Picture.Data = {
+            055449636F6E0000010002002020100000000000E80200002600000010101000
+            00000000280100000E0300002800000020000000400000000100040000000000
+            8002000000000000000000000000000000000000000000000000800000800000
+            0080800080000000800080008080000080808000C0C0C0000000FF0000FF0000
+            00FFFF00FF000000FF00FF00FFFF0000FFFFFF00000000000000000000000000
+            0000000000006666666666666666660000000000606007777777777777777700
+            000000006660700FFFFFFFFFFFFFF7000000000066608F7FFFFFFFFFFFFFF700
+            00000000666077FFFFFFFFFFFFFFF70000000000666077FFF444F44F444FF700
+            000000006660700FFFFFFFFFFFFFF7000000000066608F7FF444F44F444FF700
+            00000000666077FFFFFFFFFFFFFFF70000000000666077FFF444F44F444FF700
+            000000006660700FFFFFFFFFFFFFF7000000000066608F7FF444F44F444FF700
+            00000000666077FFFFFFFFFFFFFFF70000000000666077FFF444F44F444FF700
+            000000006660700FFFFFFFFFFFFFF7000000000066608F7FF444000000000000
+            00000000666077FFFFFF7FF8FF8FF8FF8FF00000666077FFF4447FF8FF8FF8FF
+            8FF000006660700FFFFF7888888888888880000066608F7FFFFF7FF8FF8FF8FF
+            8FF00000666077FFFFFF7FF8FF8FF8FF8FF0000066607FFFFFFF788888888111
+            188000006660777777777FF8FF8FF1FF1FF000006660000000007FF8FF8FF1FF
+            1FF00000660000000000788888888111188000006600000000007FF8FF8FF8FF
+            8FF000006600000000007FF8FF8FF8FF8FF00000660000000000744444447777
+            7770000060000000000074444444777777700000000000000000777777777777
+            7770000000000000000000007777000000000000F00001FFE00001FF400001FF
+            000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF
+            000001FF000001FF000001FF000001FF000001FF0000000F0000000F0000000F
+            0000000F0000000F0000000F0000000F0000000F1FF0000F3FF0000F3FF0000F
+            3FF0000F3FF0000F7FF0000FFFF0000FFFFF0FFF280000001000000020000000
+            0100040000000000C00000000000000000000000000000000000000000000000
+            000080000080000000808000800000008000800080800000C0C0C00080808000
+            0000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000
+            00000000000000000000000000000007777777008000008F74444F008F000707
+            FFFFFF008FFF778F74444F008FFF7707FFFFFF008FFF778F74444F008FFF7707
+            FF0000008FFF778F787777008FFF770F8F7F77708FFF78088FF0007008FF7800
+            8F707F70008880008FF0F7F00000000008FFFF000000000000888800FFFF0000
+            FE0100007C010000380100000001000000010000000100000001000000010000
+            00010000000000000200000083000000C7000000FF810000FFC30000}
+        end
+        object imgReport2: TImage
+          Left = 16
+          Top = 219
+          Width = 41
+          Height = 41
+          Center = True
+          Picture.Data = {
+            055449636F6E0000010001002020000000000000A80800001600000028000000
+            2000000040000000010008000000000080040000000000000000000000010000
+            0000000000000000000080000080000000808000800000008000800080800000
+            C0C0C000C0DCC000F0CAA600CCFFFF0099FFFF0066FFFF0033FFFF00FFCCFF00
+            CCCCFF0099CCFF0066CCFF0033CCFF0000CCFF00FF99FF00CC99FF009999FF00
+            6699FF003399FF000099FF00FF66FF00CC66FF009966FF006666FF003366FF00
+            0066FF00FF33FF00CC33FF009933FF006633FF003333FF000033FF00CC00FF00
+            9900FF006600FF003300FF00FFFFCC00CCFFCC0099FFCC0066FFCC0066FFCC00
+            33FFCC0000FFCC00FFCCCC00CCCCCC0099CCCC0066CCCC0033CCCC0000CCCC00
+            FF99CC00CC99CC009999CC006699CC003399CC000099CC00FF66CC00CC66CC00
+            9966CC006666CC003366CC000066CC00FF33CC00CC33CC009933CC006633CC00
+            3333CC000033CC00FF00CC00CC00CC009900CC006600CC003300CC000000CC00
+            FFFF9900CCFF990099FF990066FF990033FF990000FF9900FFCC9900CCCC9900
+            99CC990066CC990033CC990000CC9900FF999900CC9999009999990066999900
+            3399990000999900FF669900CC66990099669900666699003366990000669900
+            FF339900CC33990099339900663399003333990000339900FF009900CC009900
+            99009900660099003300990000009900FFFF6600CCFF660099FF660066FF6600
+            33FF660000FF6600FFCC6600CCCC660099CC660066CC660033CC660000CC6600
+            FF996600CC99660099996600669966003399660000996600FF666600CC666600
+            99666600666666003366660000666600FF336600CC3366009933660066336600
+            3333660000336600FF006600CC00660099006600660066003300660000006600
+            FFFF3300CCFF330099FF330066FF330033FF330000FF3300FFCC3300CCCC3300
+            99CC330066CC330033CC330000CC3300FF993300CC9933009999330066993300
+            3399330000993300FF663300CC66330099663300666633003366330000663300
+            FF333300CC33330099333300663333003333330000333300FF003300CC003300
+            99003300660033003300330000003300CCFF000099FF000066FF000033FF0000
+            FFCC0000CCCC000099CC000066CC000033CC000000CC0000FF990000CC990000
+            99990000669900003399000000990000FF660000CC6600009966000066660000
+            0066000033660000FF330000CC33000099330000663300003333000000330000
+            CC0000009900000066000000330000000000DD000000BB000000AA0000008800
+            0000770000005500000044000000220000DD000000BB000000AA000000880000
+            00770000005500000044000000220000DDDDDD00555555007777770077777700
+            44444400222222001111110077000000550000004400000022000000F0FBFF00
+            A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
+            FFFFFF000000000000EF000000EFEFEFEFEFEFEF000000000000000000000000
+            0000000000000000EFEF0000EFEFEFEFEFEFEFEFEF00000000000000000000ED
+            ED00000000000000EFEFEF0000000000EFEFEFEFEFEF00000000000000EDEDEB
+            ED00000000000000EFEFEF00ACACAC4FACEF00EFEFEFEF00000000EDEDEBEBEB
+            ED0000000000FB0000000000EFEFEFECEC4FAC00EFEFEF0000EDEDEBEBFFEBEB
+            ED00000000FBFB0AEB0707F7F75D5DEDED4F4F00EF0000EFEDEBEBEBEBF7FFEB
+            ED00000000F1FB00F0EFEFEFECECECECEC4F4FAC00EFEFEFEBEBEBEBEDF7FFEB
+            ED0000000000F0F04FFF4FFFA6A6A6A6FF4FACACACEFEFEFEBEBEBEBEDF7FFEB
+            ED000000000000F04F4FFFA6A64FFF4F4F4FA6ACAC00EFEFEBEBEBEBEDF7FFEB
+            ED000000000000004FA6E4A6A6FF4FFF4F4FA6ACAC00EFEFEFEBEBEBEDF7FFF7
+            ED000000000000004FACE4A6A6A64F4FFF4FA64F4F00EFEFEFEFEBEBEDEDF700
+            ED000000000000EF4FACE4A6ACA6ACACA6A6ACACAC0000EFEFEFEFEB5D000000
+            ED0000000000000000ACE4A6ECECEFEFEFEF00000000FB00EFEFEB00F05DEB00
+            ED00000000000000EF002AE4EDED5D5DF7F70707EB0AFBFB00EBEBFFEBEBEB00
+            ED0000000000000000004FACECECECECECEFEFEFF000FB00EBEBEBFFEBFFFFEB
+            ED00000000000000000000004FACACAC4F00EFEBEB0000EBEBEBEBFFFFF7FFEB
+            ED000000000000000000000000000000EF5DEBEBEB00EBEBEBEBEBEBEDF7FFEB
+            ED000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBEBEBEBEDF7FFEB
+            ED000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBEBEBEBEDF7FFEB
+            ED000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBEBEBEBEDF7FFEB
+            ED000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBEBEBEBEDECEBEB
+            ED000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBEBEBEBECF7FFFF
+            ED000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBEBEBFFFFFF0700
+            00000000000000000000000000FFEBEBEBEBEBEBEBEBEBEBEBFFFFFF07000000
+            00000000000000000000000000FFEBEBEBEBEBEBEBEBEBFFFFFF070000000000
+            00000000000000000000000000FFEBEBEBEBEBEBEBFFFFFF0700000000000000
+            00000000000000000000000000FFEBEBEBEBEBFFFFFF07000000000000000000
+            00000000000000000000000000FFEBEBEBFFFFFF070000000000000000000000
+            00000000000000000000000000FFEBFFFFFF0700000000000000000000000000
+            00000000000000000000000000FFFFFF07000000000000000000000000000000
+            00000000000000000000000000EB070000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            00000000FB80FFE7F3007F83E1003E03C0001803800000030000000380000003
+            C0000003E0000003E0000003E0000003E0000003F0000003F0000003F8000003
+            FC000003FF000003FF000003FF000003FF000003FF000003FF000003FF000007
+            FF00001FFF00007FFF0001FFFF0007FFFF001FFFFF007FFFFF01FFFFFF07FFFF
+            FF9FFFFF}
+        end
+        object memReports: TMemo
+          Left = 128
+          Top = 27
+          Width = 273
+          Height = 41
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Change the default date range and occurrence limits '
+            'for '
+            'all reports on the CPRS Reports tab (excluding health '
+            'summary reports) .')
+          ReadOnly = True
+          TabOrder = 4
+        end
+        object memReport1: TMemo
+          Left = 128
+          Top = 121
+          Width = 273
+          Height = 49
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Change the individual date range and occurrence limits '
+            'for each report on the CPRS Reports tab (excluding '
+            'health summary reports) .')
+          ReadOnly = True
+          TabOrder = 5
+        end
+        object lblReports: TStaticText
+          Left = 13
+          Top = 9
+          Width = 56
+          Height = 17
+          Caption = 'All Reports'
+          TabOrder = 2
+        end
+        object lblReport1: TStaticText
+          Left = 9
+          Top = 101
+          Width = 91
+          Height = 17
+          Caption = 'Individual Reports'
+          TabOrder = 3
+        end
+        object btnReports: TButton
+          Left = 200
+          Top = 76
+          Width = 193
+          Height = 22
+          Caption = 'Set All Reports...'
+          TabOrder = 0
+          OnClick = btnReportsClick
+        end
+        object btnReport1: TButton
+          Left = 200
+          Top = 167
+          Width = 193
+          Height = 22
+          Caption = 'Set Individual Report...'
+          TabOrder = 1
+          OnClick = btnReport1Click
+        end
+        object lblReport2: TStaticText
+          Left = 5
+          Top = 197
+          Width = 90
+          Height = 17
+          Caption = 'Remote Data Tool'
+          TabOrder = 6
+        end
+        object memReport2: TMemo
+          Left = 128
+          Top = 213
+          Width = 273
+          Height = 47
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Users now have direct '#39'one-click'#39' access to VistaWeb '
+            'and RDV from the CPRS Toolbar.  You no longer have '
+            'to change your Remote Data Tool settings.')
+          ReadOnly = True
+          TabOrder = 7
+        end
+      end
+      object tsGraphs: TTabSheet
+        Caption = 'Graphs'
+        ImageIndex = 6
+        DesignSize = (
+          411
+          297)
+        object bvlGraphSettings: TBevel
+          Left = 104
+          Top = 16
+          Width = 297
+          Height = 2
+        end
+        object imgGraphSettings: TImage
+          Left = 16
+          Top = 163
+          Width = 41
+          Height = 41
+          Center = True
+          Picture.Data = {
+            055449636F6E0000010001002020100000000000E80200001600000028000000
+            2000000040000000010004000000000080020000000000000000000000000000
+            0000000000000000000080000080000000808000800000008000800080800000
+            80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
+            FFFFFF0000000000000000000000000000000000007070707070707070707070
+            7070700007FFFFFFFFFFFFFFFFFFFFFFFFFF000007F000000000000000000000
+            0000700007F7888788878887888788878888000007FFFFFF9FFFFF9FFFF9FFFF
+            FFFF700007FFFFFFFFFFFFFFFFFFFFFFFFFF000007FFFF999999F99970707070
+            7070707007FFFFFFFFFFFFFF788888888887878007FFFBBBBBBBBBBB78878787
+            88FFFF7707FFFFCCCCCCFCCC78F000088887878007FFFFFFFFFFFFFF77FFFFF7
+            88FFFF7707FFFFFFFFFFFFFF78F000088888888007FFFFFFFFFFFFFF77FFFFF7
+            8887878707FFFFFFFFFFFFFF78F0000888FFFF7007FFFFFFFFFFFFFF77FFFFF7
+            8888888707F000000000000078F000088887878007F788878887888777FFFFF7
+            88F0FF7707F7FFFFFFFFFFFF788888888888888007F7FF9FFFFFFFFF77878787
+            8787878707F7FF9FFFFFFFFF777777777777777007F7FFF9FFFFFFFFF9F9FFFF
+            FFF9700007F7FFF9FFFFFFFF9FF99FFFFF9F000007F7FFFF9FFFFFFF9FFFF9FF
+            F99F700007F7FFFF9FFFFFF9FFFFF99F9FFF000007F7FFFFF9FFFF9FFFFFFFF9
+            9FFF700007F7FFFFF9FF99FFFFFFFFF9FFFF000007F7FFFFFF999FFFFFFFFFFF
+            FFFF700007F7FFFFFFF9FFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFF
+            FFFF700007777777777777777777777777770000000000000000000000000000
+            00000000FFFFFFFF800000078000000780000007800000078000000780000007
+            8000000080000000800000008000000080000000800000008000000080000000
+            8000000080000000800000008000000080000000800000008000000780000007
+            8000000780000007800000078000000780000007800000078000000780000007
+            FFFFFFFF}
+        end
+        object bvlGraphViews: TBevel
+          Left = 104
+          Top = 155
+          Width = 297
+          Height = 2
+        end
+        object imgGraphViews: TImage
+          Left = 16
+          Top = 27
+          Width = 41
+          Height = 41
+          Center = True
+          Picture.Data = {
+            055449636F6E0000010001002020100000000000E80200001600000028000000
+            2000000040000000010004000000000080020000000000000000000000000000
+            0000000000000000000080000080000000808000800000008000800080800000
+            80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000
+            FFFFFF0000000000000070707707070707070700000000000000788888888888
+            888888700707070707077878788787887878880007FFFFFFFFFF788787887878
+            8787887007F0000000007888888888888888880007F08888888878FFFF8FFFF8
+            FFFF887007F08FFFFFFF7878787878787878780007F08F999999788888888888
+            8888887007F08FFFFFFF787F0F8FFFF8FFFF880007F08BBBBBBB78FFFF8FFFF8
+            FFFF887007F08F222222787F7F8FFFF8FFFF880007F08FFFFFFF78FFFF8FFFF8
+            FFFF887007F08FFFFFFF787F0F8FFFF8FFFF880007FFFFFFFFFF78FFFF8FFFF8
+            FFFF887007FFFFFFFFFF787F7F8FFFF8FFFF880007FFFFFFFFFF78FFFF8FFFF8
+            FFFF887007F000000000787F0F8FFFF87F0F880007F08888888878FFFF8FFFF8
+            FFFF887007F08FFFFFFF787F7F87F0F87F0F880007F08F9FFFFF78FFFF8FFFF8
+            FFFF887007F08F9FFFFF7888888888888888880007F08FF9FFFF787878878788
+            7878887007F08FF9FFFF7777777777777777770007F08FFF9FFFFFFFF9FFFF9F
+            FFF0000007F08FFF9FFFFFFF9FFFFFF9FFF0000007F08FFFF9FFFF99FFFFFFFF
+            9FF7000007F08FFFF9FF99FFFFFFFFFFF9F0000007F08FFFFF99FFFFFFFFFFFF
+            FFF7000007F08FFFFFFFFFFFFFFFFFFFFFF0000007FFFFFFFFFFFFFFFFFFFFFF
+            FFF7000007777777777777777777777777700000000000000000000000000000
+            00000000FFF00001FFF000018000000180000001800000018000000180000001
+            8000000180000001800000018000000180000001800000018000000180000001
+            8000000180000001800000018000000180000001800000018000000180000001
+            8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F
+            FFFFFFFF}
+        end
+        object lblGraphSettings: TStaticText
+          Left = 13
+          Top = 145
+          Width = 81
+          Height = 17
+          Caption = 'Default Settings'
+          TabOrder = 0
+        end
+        object btnGraphSettings: TButton
+          Left = 200
+          Top = 235
+          Width = 193
+          Height = 22
+          Caption = 'Default Graph Settings...'
+          TabOrder = 1
+          OnClick = btnGraphSettingsClick
+        end
+        object lblGraphViews: TStaticText
+          Left = 13
+          Top = 9
+          Width = 79
+          Height = 17
+          Caption = 'View Definitions'
+          TabOrder = 2
+        end
+        object btnGraphViews: TButton
+          Left = 200
+          Top = 100
+          Width = 193
+          Height = 22
+          Caption = 'View Definitions...'
+          TabOrder = 3
+          OnClick = btnGraphViewsClick
+        end
+        object memGraphSettings: TMemo
+          Left = 125
+          Top = 167
+          Width = 275
+          Height = 66
+          TabStop = False
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Configure default settings for graphs. Changes can be '
+            'made to the types of data displayed and the styles of '
+            'presentation. These settings are saved as your default.')
+          ReadOnly = True
+          TabOrder = 4
+        end
+        object memGraphViews: TMemo
+          Left = 125
+          Top = 27
+          Width = 275
+          Height = 68
+          TabStop = False
+          Anchors = [akLeft, akTop, akRight]
+          BorderStyle = bsNone
+          Color = clBtnFace
+          Lines.Strings = (
+            'Define collections of data as views. Views are used for '
+            'common selections of multiple items.')
+          ReadOnly = True
+          TabOrder = 5
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnApply'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = pagOptions'
+        'Status = stsDefault')
+      (
+        'Component = tsCoverSheet'
+        'Status = stsDefault')
+      (
+        'Component = lblCoverReminderDesc'
+        'Status = stsDefault')
+      (
+        'Component = lblCoverReminders'
+        'Status = stsDefault')
+      (
+        'Component = lblCoverDaysDesc'
+        'Status = stsDefault')
+      (
+        'Component = lblCoverDays'
+        'Status = stsDefault')
+      (
+        'Component = lblOtherParameters'
+        'Status = stsDefault')
+      (
+        'Component = lblOtherParametersDesc'
+        'Status = stsDefault')
+      (
+        'Component = btnCoverDays'
+        'Status = stsDefault')
+      (
+        'Component = btnCoverReminders'
+        'Status = stsDefault')
+      (
+        'Component = btnOtherParameters'
+        'Status = stsDefault')
+      (
+        'Component = tsNotifications'
+        'Status = stsDefault')
+      (
+        'Component = lblNotificationsOptions'
+        'Status = stsDefault')
+      (
+        'Component = lblNotifications'
+        'Status = stsDefault')
+      (
+        'Component = lblNotificationsSurrogate'
+        'Status = stsDefault')
+      (
+        'Component = lblNotificationsSurrogateText'
+        'Status = stsDefault')
+      (
+        'Component = lvwNotifications'
+        'Status = stsDefault')
+      (
+        'Component = btnNotificationsRemove'
+        'Status = stsDefault')
+      (
+        'Component = chkNotificationsFlagged'
+        'Status = stsDefault')
+      (
+        'Component = btnSurrogate'
+        'Status = stsDefault')
+      (
+        'Component = tsOrderChecks'
+        'Status = stsDefault')
+      (
+        'Component = lblOrderChecks'
+        'Status = stsDefault')
+      (
+        'Component = lvwOrderChecks'
+        'Status = stsDefault')
+      (
+        'Component = tsListsTeams'
+        'Status = stsDefault')
+      (
+        'Component = lblPatientSelectionDesc'
+        'Status = stsDefault')
+      (
+        'Component = lblTeamsDesc'
+        'Status = stsDefault')
+      (
+        'Component = lblPatientSelection'
+        'Status = stsDefault')
+      (
+        'Component = lblTeams'
+        'Status = stsDefault')
+      (
+        'Component = btnPatientSelection'
+        'Status = stsDefault')
+      (
+        'Component = btnPersonalLists'
+        'Status = stsDefault')
+      (
+        'Component = btnTeams'
+        'Status = stsDefault')
+      (
+        'Component = btnCombinations'
+        'Status = stsDefault')
+      (
+        'Component = btnDiagnoses'
+        'Status = stsDefault')
+      (
+        'Component = tsNotes'
+        'Status = stsDefault')
+      (
+        'Component = lblNotesNotesDesc'
+        'Status = stsDefault')
+      (
+        'Component = lblNotesTitlesDesc'
+        'Status = stsDefault')
+      (
+        'Component = lblNotesNotes'
+        'Status = stsDefault')
+      (
+        'Component = lblNotesTitles'
+        'Status = stsDefault')
+      (
+        'Component = btnNotesNotes'
+        'Status = stsDefault')
+      (
+        'Component = btnNotesTitles'
+        'Status = stsDefault')
+      (
+        'Component = tsCprsReports'
+        'Status = stsDefault')
+      (
+        'Component = memReports'
+        'Status = stsDefault')
+      (
+        'Component = memReport1'
+        'Status = stsDefault')
+      (
+        'Component = lblReports'
+        'Status = stsDefault')
+      (
+        'Component = lblReport1'
+        'Status = stsDefault')
+      (
+        'Component = btnReports'
+        'Status = stsDefault')
+      (
+        'Component = btnReport1'
+        'Status = stsDefault')
+      (
+        'Component = lblReport2'
+        'Status = stsDefault')
+      (
+        'Component = memReport2'
+        'Status = stsDefault')
+      (
+        'Component = tsGraphs'
+        'Status = stsDefault')
+      (
+        'Component = lblGraphSettings'
+        'Status = stsDefault')
+      (
+        'Component = btnGraphSettings'
+        'Status = stsDefault')
+      (
+        'Component = lblGraphViews'
+        'Status = stsDefault')
+      (
+        'Component = btnGraphViews'
+        'Status = stsDefault')
+      (
+        'Component = memGraphSettings'
+        'Status = stsDefault')
+      (
+        'Component = memGraphViews'
+        'Status = stsDefault')
+      (
+        'Component = frmOptions'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptions.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptions.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptions.pas	(revision 1676)
@@ -0,0 +1,741 @@
+unit fOptions;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ComCtrls, ExtCtrls, ORCtrls, OrFn, Dialogs, ORDtTmRng, fBAOptionsDiagnoses,
+  uBAGlobals, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptions = class(TfrmBase508Form)
+    pnlMain: TPanel;
+    pnlBottom: TPanel;
+    pagOptions: TPageControl;
+    tsCoverSheet: TTabSheet;
+    tsNotifications: TTabSheet;
+    btnOK: TButton;
+    btnCancel: TButton;
+    btnApply: TButton;
+    tsOrderChecks: TTabSheet;
+    tsListsTeams: TTabSheet;
+    lblCoverReminderDesc: TMemo;
+    lblCoverReminders: TStaticText;
+    lblCoverDaysDesc: TMemo;
+    lblCoverDays: TStaticText;
+    btnCoverDays: TButton;
+    bvlCoverDays: TBevel;
+    btnCoverReminders: TButton;
+    bvlCoverReminders: TBevel;
+    imgCoverDays: TImage;
+    imgCoverReminders: TImage;
+    lblPatientSelectionDesc: TMemo;
+    lblPatientSelection: TStaticText;
+    btnPatientSelection: TButton;
+    bvlPatientSelection: TBevel;
+    btnPersonalLists: TButton;
+    imgPatientSelection: TImage;
+    lblNotificationsOptions: TStaticText;
+    lblNotifications: TStaticText;
+    bvlNotifications: TBevel;
+    imgNotifications: TImage;
+    lblOrderChecksDesc: TLabel;
+    lblOrderChecks: TStaticText;
+    bvlOrderChecks: TBevel;
+    imgOrderChecks: TImage;
+    lblTeamsDesc: TMemo;
+    lblTeams: TStaticText;
+    btnTeams: TButton;
+    bvlTeams: TBevel;
+    lvwNotifications: TCaptionListView;
+    lblNotificationView: TLabel;
+    btnNotificationsRemove: TButton;
+    chkNotificationsFlagged: TCheckBox;
+    lvwOrderChecks: TCaptionListView;
+    lblOrderChecksView: TLabel;
+    btnSurrogate: TButton;
+    lblNotificationsSurrogate: TStaticText;
+    lblNotificationsSurrogateText: TStaticText;
+    btnCombinations: TButton;
+    bvlOtherParameters: TBevel;
+    lblOtherParameters: TStaticText;
+    imgOtherParameters: TImage;
+    lblOtherParametersDesc: TMemo;
+    btnOtherParameters: TButton;
+    tsNotes: TTabSheet;
+    lblNotesNotesDesc: TMemo;
+    lblNotesNotes: TStaticText;
+    bvlNotesNotes: TBevel;
+    btnNotesNotes: TButton;
+    lblNotesTitles: TStaticText;
+    bvlNotesTitles: TBevel;
+    lblNotesTitlesDesc: TMemo;
+    btnNotesTitles: TButton;
+    imgNotesNotes: TImage;
+    imgNotes: TImage;
+    imgTeams: TImage;
+    tsCprsReports: TTabSheet;
+    lblReports: TStaticText;
+    bvlReports: TBevel;
+    memReports: TMemo;
+    imgReports: TImage;
+    btnReports: TButton;
+    lblReport1: TStaticText;
+    memReport1: TMemo;
+    btnReport1: TButton;
+    bvlReport1: TBevel;
+    btnDiagnoses: TButton;
+    tsGraphs: TTabSheet;
+    lblGraphSettings: TStaticText;
+    bvlGraphSettings: TBevel;
+    imgGraphSettings: TImage;
+    btnGraphSettings: TButton;
+    bvlGraphViews: TBevel;
+    lblGraphViews: TStaticText;
+    imgGraphViews: TImage;
+    btnGraphViews: TButton;
+    memGraphSettings: TMemo;
+    memGraphViews: TMemo;
+    bvlReport2: TBevel;
+    lblReport2: TStaticText;
+    memReport2: TMemo;
+    imgReport1: TImage;
+    imgReport2: TImage;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure btnCoverDaysClick(Sender: TObject);
+    procedure btnCoverRemindersClick(Sender: TObject);
+    procedure btnOtherParametersClick(Sender: TObject);
+    procedure btnPatientSelectionClick(Sender: TObject);
+    procedure btnPersonalListsClick(Sender: TObject);
+    procedure btnTeamsClick(Sender: TObject);
+    procedure btnNotificationsRemoveClick(Sender: TObject);
+    procedure btnApplyClick(Sender: TObject);
+    procedure chkNotificationsFlaggedClick(Sender: TObject);
+    procedure lvwNotificationsChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure lvwNotificationsColumnClick(Sender: TObject;
+      Column: TListColumn);
+    procedure lvwNotificationsCompare(Sender: TObject; Item1,
+      Item2: TListItem; Data: Integer; var Compare: Integer);
+    procedure lvwNotificationsDblClick(Sender: TObject);
+    procedure btnSurrogateClick(Sender: TObject);
+    procedure btnCombinationsClick(Sender: TObject);
+    procedure btnNotesNotesClick(Sender: TObject);
+    procedure btnNotesTitlesClick(Sender: TObject);
+    procedure btnReportsClick(Sender: TObject);
+    procedure btnReport1Click(Sender: TObject);
+    procedure lvwNotificationsEnter(Sender: TObject);
+    procedure lvwNotificationsMouseDown(Sender: TObject;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure btnDiagnosesClick(Sender: TObject);
+    procedure btnGraphSettingsClick(Sender: TObject);
+    procedure btnGraphViewsClick(Sender: TObject);
+    procedure pagOptionsEnter(Sender: TObject);
+  private
+    { Private declarations }
+    FdirtyNotifications: boolean;  // used to determine edit changes to Notifications
+    FdirtyOrderChecks: boolean;    // used to determine edit changes to Order Checks
+    FdirtyOtherStuff: boolean;     // used to determine edit changes to misc settings
+    FuseCheckBoxes: boolean;
+    FsortCol: integer;
+    FsortAscending: boolean;
+    FLastClickedItem: TListItem;
+    FGiveMultiTabMessage: boolean;
+    procedure Offset(var topnum: integer; topoffset: integer; var leftnum: integer; leftoffset: integer);
+    procedure LoadNotifications;
+    procedure LoadOrderChecks;
+    procedure ApplyNotifications;
+    procedure ApplyOrderChecks;
+    procedure ApplyOtherStuff;
+    procedure CheckApply;
+    procedure LoadListView(aListView: TListView; aList: TStrings);
+    procedure ChangeOnOff(aListView: TListView; aListItem: TListItem);
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptions: TfrmOptions;
+
+procedure DialogOptions(var actiontype: Integer);
+
+implementation
+
+uses fOptionsDays, fOptionsReminders, fOptionsSurrogate,
+     fOptionsPatientSelection, fOptionsLists, fOptionsTeams, fOptionsCombinations,
+     fOptionsOther, fOptionsNotes, fOptionsTitles, fOptionsReportsCustom, fOptionsReportsDefault,
+     fGraphs, fGraphSettings, fGraphProfiles, rGraphs, uGraphs,
+     rOptions, rCore, uCore, uOptions, UBACore, fFrame,
+  VA508AccessibilityRouter;
+     //fTestDialog;
+
+{$R *.DFM}
+
+type
+  TRule = class
+  public
+    IEN: string;
+    OriginalValue: string;
+    ItemText: string;
+end;
+
+procedure DialogOptions(var actiontype: Integer);
+// create the form and make in modal, return an action
+const
+  PixelGapBetweenButtons = 5;
+var
+  frmOptions: TfrmOptions;
+begin
+  frmOptions := TfrmOptions.Create(Application);
+  try
+    with frmOptions do
+    begin
+      with pagOptions do
+      begin
+        tsCoverSheet.TabVisible := false;
+        tsNotifications.TabVisible := false;
+        tsOrderChecks.TabVisible := false;
+        tsListsTeams.TabVisible := false;
+        case actiontype of
+        1: begin
+             tsCoverSheet.TabVisible := true;
+           end;
+        2: begin
+             tsNotifications.TabVisible := true;
+           end;
+        3: begin
+             tsOrderChecks.TabVisible := true;
+           end;
+        4: begin
+             tsListsTeams.TabVisible := true;
+           end;
+        else
+           begin
+             tsCoverSheet.TabVisible := true;
+             tsNotifications.TabVisible := true;
+             tsOrderChecks.TabVisible := true;
+             tsListsTeams.TabVisible := true;
+             ActivePage := tsCoverSheet;
+             memReports.Text := 'Change the default date range and occurrence limits for all reports on ' +
+                               'the CPRS Reports tab (excluding health summary reports) .';
+             memReport1.Text := 'Change the individual date range and occurrence limits for each report on ' +
+                               'the CPRS Reports tab (excluding health summary reports) .';
+             btnReports.caption := 'Set All Reports...';
+             btnReport1.caption := 'Set Individual Reports...';
+             if User.IsReportsOnly then // For "Reports Only" users.
+               begin
+                 tsCoverSheet.TabVisible := false;
+                 tsNotifications.TabVisible := false;
+                 tsOrderChecks.TabVisible := false;
+                 tsListsTeams.TabVisible := false;
+                 tsNotes.TabVisible := false;
+                 if (not User.ToolsRptEdit) then
+                 begin
+                   btnOK.visible := false;
+                   btnApply.visible := false;
+                   btnCancel.caption := 'Close';
+                 end;
+               end;
+             if (not User.ToolsRptEdit) then // For users with Reports settings edit parameter not set.
+               begin
+                 memReports.Text := 'View the default date range and occurrence limits for all reports on ' +
+                                   'the CPRS Reports tab (excluding health summary reports) .';
+                 memReport1.Text := 'View the individual date range and occurrence limits for each report on ' +
+                                   'the CPRS Reports tab (excluding health summary reports) .';
+                 btnReports.caption := 'View All Report Settings...';
+                 btnReport1.caption := 'View Individual Report Settings...';
+               end;
+           end;
+        end;
+      end;
+      actiontype := 0;
+      ResizeAnchoredFormToFont(frmOptions);
+      btnApply.Left := pagOptions.Left + pagOptions.Width - btnApply.Width;
+      btnCancel.Left := btnApply.Left - btnCancel.Width - PixelGapBetweenButtons;
+      btnOK.Left := btnCancel.Left - btnOK.Width - PixelGapBetweenButtons;
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptions.Release;
+  end;
+end;
+
+procedure TfrmOptions.FormCreate(Sender: TObject);
+// initialize form
+begin
+  LoadNotifications;
+  LoadOrderChecks;
+  FdirtyNotifications := false;
+  FdirtyOrderChecks := false;
+  FdirtyOtherStuff := false;
+  CheckApply;
+
+  if (Encounter.Provider = 0) and not IsCIDCProvider(User.DUZ) then
+      btnDiagnoses.Enabled := False;
+  FGiveMultiTabMessage := ScreenReaderSystemActive;
+end;
+
+procedure TfrmOptions.FormDestroy(Sender: TObject);
+// cleanup creation of objects
+var
+  i: integer;
+begin
+  for i := 0 to lvwOrderChecks.Items.Count - 1 do
+    lvwOrderChecks.Items.Item[i].SubItems.Objects[2].free;
+  for i := 0 to lvwNotifications.Items.Count - 1 do
+    lvwNotifications.Items.Item[i].SubItems.Objects[2].free;
+end;
+
+procedure TfrmOptions.btnCoverDaysClick(Sender: TObject);
+// display Date Range Defaults on Cover Sheet
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsDays(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnCoverRemindersClick(Sender: TObject);
+// display Clinical Reminder Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsReminders(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnOtherParametersClick(Sender: TObject);
+// display Other Parameters Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, 40, leftsize, 40);
+  DialogOptionsOther(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnPatientSelectionClick(Sender: TObject);
+// display Patient Selection Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsPatientSelection(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnPersonalListsClick(Sender: TObject);
+// display Personal Lists Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsLists(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnTeamsClick(Sender: TObject);
+// display Team Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsTeams(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnNotificationsRemoveClick(Sender: TObject);
+// confirm before clearing notifications
+begin
+  if InfoBox('CAUTION: This will clear all the current notifications you have pending.'
+    + #13 + 'If you say YES, these changes will take place immediately.'
+    + #13 + 'Are you sure you want to erase all of your notifications?',
+    'Warning', MB_YESNO or MB_ICONWARNING) = IDYES then
+    begin
+      rpcClearNotifications;
+    end;
+end;
+
+procedure TfrmOptions.Offset(var topnum: integer; topoffset: integer; var leftnum: integer; leftoffset: integer);
+// get positions to display dialog
+begin
+  // use these top and left values to display dialog
+  topnum := Top;
+  leftnum := Left;
+  topnum := topnum + topoffset;
+  if topnum < 0 then topnum := 0;
+  leftnum := leftnum + leftoffset;
+  if leftnum < 0 then leftnum := 0;
+end;
+
+procedure TfrmOptions.pagOptionsEnter(Sender: TObject);
+begin
+  if FGiveMultiTabMessage then // CQ#15483
+  begin
+    FGiveMultiTabMessage := FALSE;
+    GetScreenReader.Speak('Multi Tab Form');
+  end;
+end;
+
+procedure TfrmOptions.btnApplyClick(Sender: TObject);
+// save actions without exiting
+begin
+  if FdirtyNotifications then
+    ApplyNotifications;
+  if FdirtyOrderChecks then
+    ApplyOrderChecks;
+  if FdirtyOtherStuff then
+    ApplyOtherStuff;
+  CheckApply;
+  if Sender = btnOK then
+    Close;
+end;
+
+procedure TfrmOptions.LoadNotifications;
+// load Notification tab
+var
+  notifydefaults, surrogateinfo, flag, enableerase: string;
+begin
+  LoadListView(lvwNotifications, rpcGetNotifications);
+  lvwNotificationsColumnClick(lvwNotifications, lvwNotifications.Column[0]); // make sure sorted
+  notifydefaults := rpcGetNotificationDefaults;
+  flag := Piece(notifydefaults, '^', 2);
+  enableerase := Piece(notifydefaults, '^', 3);
+  chkNotificationsFlagged.Checked := flag = '1';
+  btnNotificationsRemove.Enabled := enableerase = '1';
+  surrogateinfo := rpcGetSurrogateInfo;
+  btnSurrogate.Hint := surrogateinfo;
+  LabelSurrogate(surrogateinfo, lblNotificationsSurrogateText);
+end;
+
+procedure TfrmOptions.LoadOrderChecks;
+// load Order Check tab
+begin
+  LoadListView(lvwOrderChecks, rpcGetOrderChecks);
+  lvwOrderChecks.Checkboxes := true;
+end;
+
+procedure TfrmOptions.ApplyNotifications;
+// save Notification changes
+var
+  i: integer;
+  newonoff: string;
+  aRule: TRule;
+  aList: TStringList;
+begin
+  aList := TStringList.Create;
+  for i := 0 to lvwNotifications.Items.Count - 1 do
+  begin
+    aRule := TRule(lvwNotifications.Items.Item[i].SubItems.Objects[2]);
+    if lvwNotifications.Items.Item[i].SubItems[1] <> 'Mandatory' then
+    begin
+      newonoff := Uppercase(lvwNotifications.Items.Item[i].SubItems[0]);
+      if aRule.OriginalValue <> newonoff then
+      begin
+        //***Show508Message(aRule.IEN + ' ' + aRule.OriginalValue + ' ' + newonoff);
+        aList.Add(aRule.IEN + '^' + newonoff);
+        aRule.OriginalValue := lvwNotifications.Items.Item[i].SubItems[0];
+      end;
+    end;
+  end;
+  rpcSetNotifications(aList);
+  aList.free;
+  FdirtyNotifications := false;
+end;
+
+procedure TfrmOptions.ApplyOrderChecks;
+// save Order Check changes
+var
+  i: integer;
+  newonoff: string;
+  aRule: TRule;
+  aList: TStringList;
+begin
+  aList := TStringList.Create;
+  for i := 0 to lvwOrderChecks.Items.Count - 1 do
+  begin
+    aRule := TRule(lvwOrderChecks.Items.Item[i].SubItems.Objects[2]);
+    newonoff := Uppercase(lvwOrderChecks.Items.Item[i].SubItems[0]);
+    if aRule.OriginalValue <> newonoff then
+    begin
+      aList.Add(aRule.IEN + '^' + newonoff);
+      aRule.OriginalValue := lvwOrderChecks.Items.Item[i].SubItems[0];
+    end;
+  end;
+  rpcSetOrderChecks(aList);
+  aList.free;
+  FdirtyOrderChecks := false;
+end;
+
+procedure TfrmOptions.ApplyOtherStuff;
+// save other changes
+var
+  aString: string;
+begin
+  aString := '';
+  if chkNotificationsFlagged.Checked then
+    aString := aString + '^1'
+  else
+    aString := aString + '^0';
+  rpcSetOtherStuff(aString);
+  FdirtyOtherStuff := false;
+end;
+
+procedure TfrmOptions.CheckApply;
+// determine if Apply button is enabled
+begin
+  btnApply.Enabled :=  FdirtyOrderChecks or FdirtyNotifications or FdirtyOtherStuff;
+end;
+
+procedure TfrmOptions.chkNotificationsFlaggedClick(Sender: TObject);
+// set notification flagged status
+begin
+  FdirtyOtherStuff := true;
+  CheckApply;
+end;
+
+procedure TfrmOptions.LoadListView(aListView: TListView; aList: TStrings);
+// load a list view with: name, on/off, comment
+var
+  i: integer;
+  aListItem: TListItem;
+  aRule: TRule;
+  rulenum, ruletext, ruleonoff, rulecomment: string;
+begin
+  FuseCheckBoxes := false;
+  aListView.Items.Clear;
+  aListView.SortType := stNone; // if Sorting during load then potential error
+  with aList do
+  begin
+    for i := 0 to aList.Count - 1 do
+    begin
+      rulenum := Piece(aList[i], '^', 1);
+      ruletext := Piece(aList[i], '^', 2);
+      ruleonoff := Piece(aList[i], '^', 3);
+      rulecomment := Piece(aList[i], '^', 4);
+      aListItem := aListView.Items.Add;
+      with aListItem do
+      begin
+        Caption := ruletext;
+        SubItems.Add(ruleonoff);
+        if ruleonoff = 'On' then Checked := true;
+        SubItems.Add(rulecomment);
+      end;
+      aRule := TRule.Create;
+      with aRule do
+      begin
+        IEN := rulenum;
+        OriginalValue := ruleonoff;
+        ItemText := ruletext;
+      end;
+      aListItem.SubItems.AddObject('rule object', aRule);
+    end;
+  end;
+  aListView.SortType := stBoth;
+  FuseCheckBoxes := true;
+end;
+
+procedure TfrmOptions.lvwNotificationsChange(Sender: TObject;
+  Item: TListItem; Change: TItemChange);
+// change on/off on checkmark
+begin
+  if (Sender as TListView).ItemIndex = -1 then exit;
+  if not FuseCheckBoxes then exit;
+  if (Sender as TListView).Checkboxes = false then exit;
+  if (Item.SubItems[1] = 'Mandatory') and not Item.Checked then begin
+    Item.Checked := True;
+    exit;
+  end;
+  if Item.Checked then
+  begin
+    if Item.SubItems[0] <> 'On' then
+      ChangeOnOff(Sender as TListView, Item);
+    Item.SubItems[0] := 'On';
+  end
+  else
+  begin
+    if Item.SubItems[0] <> 'Off' then
+      ChangeOnOff(Sender as TListView, Item);
+    Item.SubItems[0] := 'Off';
+  end;
+end;
+
+procedure TfrmOptions.lvwNotificationsColumnClick(Sender: TObject;
+  Column: TListColumn);
+// toggle sort
+begin
+  if FsortCol = Column.Index then
+    FsortAscending := not FsortAscending
+  else
+    FsortAscending := true;
+  FsortCol := Column.Index;
+  (Sender as TListView).AlphaSort;
+end;
+
+procedure TfrmOptions.lvwNotificationsCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+//  sort columns
+begin
+  if not(Sender is TListView) then exit;
+  if FsortAscending then
+  begin
+    if FsortCol = 0 then
+      Compare := CompareStr(Item1.Caption, Item2.Caption)
+    else
+      Compare := CompareStr(Item1.SubItems[FsortCol - 1],
+        Item2.SubItems[FsortCol - 1]);
+  end
+  else
+  begin
+    if FsortCol = 0 then
+      Compare := CompareStr(Item2.Caption, Item1.Caption)
+    else
+      Compare := CompareStr(Item2.SubItems[FsortCol - 1],
+        Item1.SubItems[FsortCol - 1]);
+  end;
+end;
+
+procedure TfrmOptions.lvwNotificationsDblClick(Sender: TObject);
+// toggle check marks with double click
+var
+  aListItem: TListItem;
+begin
+  with (Sender as TListView) do
+  begin
+    if Checkboxes = false then exit;
+    if Selected = nil then exit;
+    if Selected.SubItems[1] = 'Mandatory' then exit;
+    if Selected <> FLastClickedItem then exit;
+    aListItem := Selected;
+    aListItem.Checked := not aListItem.Checked;
+    ChangeOnOff(Sender as TListView, aListItem);
+
+    if aListItem.Checked then
+      aListItem.SubItems[0] := 'On'
+    else
+      aListItem.SubItems[0] := 'Off';
+  end;
+end;
+
+procedure TfrmOptions.ChangeOnOff(aListView: TListView; aListItem: TListItem);
+// check if list items were edited
+begin
+  if aListView = lvwNotifications then FdirtyNotifications := true;
+  if aListView = lvwOrderChecks then FdirtyOrderChecks := true;
+  CheckApply;
+end;
+
+procedure TfrmOptions.btnSurrogateClick(Sender: TObject);
+// display Surrogate Options
+var
+  topsize, leftsize: integer;
+  surrogateinfo: string;
+begin
+  surrogateinfo := btnSurrogate.Hint;
+  Offset(topsize, -30, leftsize, -30);
+  DialogOptionsSurrogate(topsize, leftsize, Font.Size, surrogateinfo);
+  LabelSurrogate(surrogateinfo, lblNotificationsSurrogateText);
+  btnSurrogate.Hint := surrogateinfo;
+end;
+
+procedure TfrmOptions.btnCombinationsClick(Sender: TObject);
+// display Combination List Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsCombinations(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnNotesNotesClick(Sender: TObject);
+// display Notes Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsNotes(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnNotesTitlesClick(Sender: TObject);
+// display Titles Options
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsTitles(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnReportsClick(Sender: TObject);
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, 90, leftsize, 23);
+  DialogOptionsHSDefault(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.btnReport1Click(Sender: TObject);
+var
+  topsize, leftsize, value: integer;
+begin
+  value := 0;
+  Offset(topsize, -18, leftsize, -15);
+  DialogOptionsHSCustom(topsize, leftsize, Font.Size, value);
+end;
+
+procedure TfrmOptions.lvwNotificationsEnter(Sender: TObject);
+begin
+  with Sender as TListView do begin
+    if (Selected = nil) and (Items.Count > 0) then
+      Selected := Items[0];
+  end;
+end;
+
+procedure TfrmOptions.lvwNotificationsMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  FLastClickedItem := (Sender as TListView).GetItemAt(X,Y);
+end;
+
+procedure TfrmOptions.btnDiagnosesClick(Sender: TObject);
+// display Personal Diagnoses List
+var
+  topsize, leftsize, value: integer;
+begin
+  if IsCIDCProvider(User.DUZ) then    //(hds7564)
+  begin
+     value := 0;
+     Offset(topsize, -60, leftsize, -60);
+     DialogOptionsDiagnoses(topsize, leftsize, Font.Size, value);
+  end;
+end;
+
+procedure TfrmOptions.btnGraphSettingsClick(Sender: TObject);
+// display GraphSettings
+var
+  actiontype: boolean;
+  topsize, leftsize: integer;
+begin
+  actiontype := false;
+  Offset(topsize, -60, leftsize, -60);
+  DialogOptionsGraphSettings(topsize, leftsize, Font.Size, actiontype);
+end;
+
+procedure TfrmOptions.btnGraphViewsClick(Sender: TObject);
+// display Graph Views
+var
+  actiontype: boolean;
+begin
+  actiontype := false;
+  DialogOptionsGraphProfiles(actiontype);
+  // if changes were made then view listing should be updated ***********
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsCombinations.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsCombinations.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsCombinations.dfm	(revision 1676)
@@ -0,0 +1,229 @@
+inherited frmOptionsCombinations: TfrmOptionsCombinations
+  Left = 366
+  Top = 189
+  HelpContext = 9120
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsSingle
+  Caption = 'Source Combinations'
+  ClientHeight = 306
+  ClientWidth = 407
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAddby: TLabel [0]
+    Left = 7
+    Top = 97
+    Width = 29
+    Height = 13
+    Caption = 'Ward:'
+  end
+  object lblCombinations: TLabel [1]
+    Left = 224
+    Top = 97
+    Width = 66
+    Height = 13
+    Caption = 'Combinations:'
+  end
+  object lblInfo: TMemo [2]
+    Left = 183
+    Top = 16
+    Width = 218
+    Height = 81
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'You can change your combinations by adding '
+      'or removing  specific wards, clinics, providers, '
+      'specialties, or lists. Patients meeting this '
+      'criteria can be used for patient selection.')
+    ReadOnly = True
+    TabOrder = 6
+  end
+  object radAddByType: TRadioGroup [3]
+    Left = 7
+    Top = 8
+    Width = 153
+    Height = 86
+    HelpContext = 9121
+    Caption = 'Select source by '
+    Columns = 2
+    ItemIndex = 0
+    Items.Strings = (
+      '&Ward'
+      '&Clinic'
+      '&Provider'
+      '&Specialty'
+      '&List')
+    TabOrder = 0
+    OnClick = radAddByTypeClick
+  end
+  object lstAddBy: TORComboBox [4]
+    Left = 7
+    Top = 112
+    Width = 153
+    Height = 153
+    HelpContext = 9122
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Ward'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnChange = lstAddByChange
+    OnDblClick = btnAddClick
+    OnEnter = lstAddByEnter
+    OnExit = lstAddByExit
+    OnKeyUp = lstAddByKeyUp
+    OnNeedData = lstAddByNeedData
+    CharsNeedMatch = 1
+  end
+  object btnAdd: TButton [5]
+    Left = 166
+    Top = 145
+    Width = 50
+    Height = 22
+    HelpContext = 9124
+    Caption = 'Add'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 2
+    OnClick = btnAddClick
+  end
+  object btnRemove: TButton [6]
+    Left = 165
+    Top = 218
+    Width = 50
+    Height = 22
+    HelpContext = 9125
+    Caption = 'Remove'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+    OnClick = btnRemoveClick
+  end
+  object pnlBottom: TPanel [7]
+    Left = 0
+    Top = 273
+    Width = 407
+    Height = 33
+    HelpContext = 9120
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 5
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 407
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 245
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 325
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object lvwCombinations: TCaptionListView [8]
+    Left = 224
+    Top = 112
+    Width = 177
+    Height = 150
+    HelpContext = 9123
+    Columns = <
+      item
+        Caption = 'Entry'
+        Width = 100
+      end
+      item
+        Caption = 'Source'
+        Width = 72
+      end>
+    MultiSelect = True
+    ReadOnly = True
+    RowSelect = True
+    SortType = stBoth
+    TabOrder = 4
+    ViewStyle = vsReport
+    OnChange = lvwCombinationsChange
+    OnColumnClick = lvwCombinationsColumnClick
+    OnCompare = lvwCombinationsCompare
+    OnDblClick = btnRemoveClick
+    Caption = 'Combinations'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblInfo'
+        'Status = stsDefault')
+      (
+        'Component = radAddByType'
+        'Status = stsDefault')
+      (
+        'Component = lstAddBy'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = lvwCombinations'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsCombinations'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsCombinations.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsCombinations.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsCombinations.pas	(revision 1676)
@@ -0,0 +1,365 @@
+unit fOptionsCombinations;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ORCtrls, OrFn, ComCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsCombinations = class(TfrmBase508Form)
+    radAddByType: TRadioGroup;
+    lblInfo: TMemo;
+    lblAddby: TLabel;
+    lblCombinations: TLabel;
+    lstAddBy: TORComboBox;
+    btnAdd: TButton;
+    btnRemove: TButton;
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    bvlBottom: TBevel;
+    lvwCombinations: TCaptionListView;
+    procedure radAddByTypeClick(Sender: TObject);
+    procedure lstAddByNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FormCreate(Sender: TObject);
+    procedure btnAddClick(Sender: TObject);
+    procedure lvwCombinationsColumnClick(Sender: TObject;
+      Column: TListColumn);
+    procedure lvwCombinationsCompare(Sender: TObject; Item1,
+      Item2: TListItem; Data: Integer; var Compare: Integer);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure lstAddByChange(Sender: TObject);
+    procedure lstAddByKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnOKClick(Sender: TObject);
+    procedure lstAddByEnter(Sender: TObject);
+    procedure lstAddByExit(Sender: TObject);
+    procedure lvwCombinationsChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure FormShow(Sender: TObject);
+  private
+    { Private declarations }
+    FsortCol: integer;
+    FsortAscending: boolean;
+    FDirty: boolean;
+    function Duplicate(avalueien, asource: string): boolean;
+    procedure LoadCombinations(alist: TStrings);
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsCombinations: TfrmOptionsCombinations;
+
+procedure DialogOptionsCombinations(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, rCore;
+
+{$R *.DFM}
+
+type
+  TCombination = class
+  public
+    IEN: string;
+    Entry: string;
+    Source: string;
+end;
+
+procedure DialogOptionsCombinations(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsCombinations: TfrmOptionsCombinations;
+begin
+  frmOptionsCombinations := TfrmOptionsCombinations.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsCombinations do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsCombinations);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsCombinations.Release;
+  end;
+end;
+
+procedure TfrmOptionsCombinations.radAddByTypeClick(Sender: TObject);
+begin
+  with lstAddBy do
+  begin
+    case radAddByType.ItemIndex of
+      0: begin
+           ListItemsOnly := false;
+           LongList := false;
+           ListWardAll(lstAddBy.Items);
+           MixedCaseList(lstAddBy.Items);
+           lblAddby.Caption := 'Ward:';
+         end;
+      1: begin
+           ListItemsOnly := true;
+           LongList := true;
+           InitLongList('');
+           lblAddby.Caption := 'Clinic:';
+         end;
+      2: begin
+           ListItemsOnly := true;
+           LongList := true;
+           InitLongList('');
+           lblAddby.Caption := 'Provider:';
+         end;
+      3: begin
+           ListItemsOnly := false;
+           LongList := false;
+           ListSpecialtyAll(lstAddBy.Items);
+           lblAddby.Caption := 'Specialty:';
+         end;
+      4: begin
+           ListItemsOnly := false;
+           LongList := false;
+           ListTeamAll(lstAddBy.Items);
+           lblAddby.Caption := 'List:';
+         end;
+    end;
+    lstAddBy.Caption := lblAddby.Caption;
+    ItemIndex := -1;
+    Text := '';
+    btnAdd.Enabled := false;
+  end;
+end;
+
+procedure TfrmOptionsCombinations.lstAddByNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  with lstAddBy do
+  begin
+    case radAddByType.ItemIndex of
+      0: begin
+           Pieces := '2';
+         end;
+      1: begin
+           Pieces := '2';
+           ForDataUse(SubSetOfClinics(StartFrom, Direction));
+         end;
+      2: begin
+           Pieces := '2,3';
+           ForDataUse(SubSetOfProviders(StartFrom, Direction));
+         end;
+      3: begin
+           Pieces := '2';
+         end;
+      4: begin
+           Pieces := '2';
+         end;
+    end;
+  end;
+end;
+
+procedure TfrmOptionsCombinations.FormCreate(Sender: TObject);
+begin
+  radAddByType.ItemIndex := 0;
+  radAddByTypeClick(self);
+  FDirty := false;
+end;
+
+procedure TfrmOptionsCombinations.btnAddClick(Sender: TObject);
+var
+  aListItem: TListItem;
+  aCombination: TCombination;
+  valueien, valuename, valuesource: string;
+begin
+  valuesource := radAddByType.Items[radAddByType.ItemIndex];
+  if copy(valuesource, 1, 1) = '&' then
+    valuesource := copy(valuesource, 2, length(valuesource) - 1);
+  valuename := Piece(lstAddBy.DisplayText[lstAddBy.ItemIndex], '-', 1);
+  valueien := Piece(lstAddBy.Items[lstAddBy.ItemIndex], '^', 1);
+  if Duplicate(valueien, valuesource) then exit; // check for duplicates
+  aListItem := lvwCombinations.Items.Add;
+  with aListItem do
+  begin
+    Caption := valuename;
+    SubItems.Add(valuesource);
+  end;
+  aCombination := TCombination.Create;
+  with aCombination do
+  begin
+    IEN := valueien;
+    Entry := valuename;
+    Source := valuesource;
+  end;
+  aListItem.SubItems.AddObject('combo object', aCombination);
+  btnAdd.Enabled := false;
+  FDirty := true;
+end;
+
+procedure TfrmOptionsCombinations.lvwCombinationsColumnClick(
+  Sender: TObject; Column: TListColumn);
+begin
+  if FsortCol = Column.Index then
+    FsortAscending := not FsortAscending
+  else
+    FsortAscending := true;
+  FsortCol := Column.Index;
+  (Sender as TListView).AlphaSort;
+end;
+
+procedure TfrmOptionsCombinations.lvwCombinationsCompare(Sender: TObject;
+  Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+begin
+  if not(Sender is TListView) then exit;
+  if FsortAscending then
+  begin
+    if FsortCol = 0 then
+      Compare := CompareStr(Item1.Caption, Item2.Caption)
+    else
+      Compare := CompareStr(Item1.SubItems[FsortCol - 1],
+        Item2.SubItems[FsortCol - 1]);
+  end
+  else
+  begin
+    if FsortCol = 0 then
+      Compare := CompareStr(Item2.Caption, Item1.Caption)
+    else
+      Compare := CompareStr(Item2.SubItems[FsortCol - 1],
+        Item1.SubItems[FsortCol - 1]);
+  end;
+end;
+
+procedure TfrmOptionsCombinations.btnRemoveClick(Sender: TObject);
+var
+  i: integer;
+begin
+  with lvwCombinations do
+  for i := Items.Count - 1 downto 0 do
+    if Items[i].Selected then
+      Items[i].Delete;
+  btnRemove.Enabled := false;
+  FDirty := true;
+end;
+
+procedure TfrmOptionsCombinations.lstAddByChange(Sender: TObject);
+var
+  valueien, source: string;
+begin
+  if lstAddBy.ItemIndex = -1 then
+    btnAdd.Enabled := false
+  else
+  begin
+    source := radAddByType.Items[radAddByType.ItemIndex];
+    if copy(source, 1, 1) = '&' then
+      source := copy(source, 2, length(source) - 1);
+    valueien := Piece(lstAddBy.Items[lstAddBy.ItemIndex], '^', 1);
+    btnAdd.Enabled :=  not Duplicate(valueien, source);
+  end;
+  btnRemove.Enabled := false;
+end;
+
+function TfrmOptionsCombinations.Duplicate(avalueien,
+  asource: string): boolean;
+var
+  i: integer;
+  aCombination :TCombination;
+begin
+  result := false;
+  with lvwCombinations do
+  for i := 0 to Items.Count - 1 do
+    if asource = Items[i].Subitems[0] then
+    begin
+      aCombination := TCombination(Items.Item[i].SubItems.Objects[1]);
+      if aCombination.IEN = avalueien then
+      begin
+        Result := true;
+      end;
+    end;
+end;
+
+procedure TfrmOptionsCombinations.lstAddByKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if Key = 13 then Perform(WM_NextDlgCtl, 0, 0);
+end;
+
+procedure TfrmOptionsCombinations.btnOKClick(Sender: TObject);
+var
+  i: integer;
+  alist: TStringList;
+  aCombination :TCombination;
+begin
+  if FDirty then
+  begin
+    alist := TStringList.Create;
+    with lvwCombinations do
+    for i := 0 to Items.Count - 1 do
+    begin
+      aCombination := TCombination(Items.Item[i].SubItems.Objects[1]);
+      with aCombination do alist.Add(IEN + '^' + Source);
+    end;
+    rpcSetCombo(alist);
+    alist.Free;
+  end;
+end;
+
+procedure TfrmOptionsCombinations.lstAddByEnter(Sender: TObject);
+begin
+  btnAdd.Default := true;
+end;
+
+procedure TfrmOptionsCombinations.lstAddByExit(Sender: TObject);
+begin
+  btnAdd.Default := false;
+end;
+
+procedure TfrmOptionsCombinations.lvwCombinationsChange(Sender: TObject;
+  Item: TListItem; Change: TItemChange);
+begin
+  btnRemove.Enabled := lvwCombinations.SelCount > 0;
+end;
+
+procedure TfrmOptionsCombinations.LoadCombinations(alist: TStrings);
+var
+  i: integer;
+  aListItem: TListItem;
+  aCombination: TCombination;
+  valueien, valuename, valuesource: string;
+begin
+  for i := 0 to alist.Count - 1 do
+  begin
+    valuesource := Piece(alist[i], '^', 1);
+    valuename := Piece(alist[i], '^', 2);
+    valueien := Piece(alist[i], '^', 3);
+    aListItem := lvwCombinations.Items.Add;
+    with aListItem do
+    begin
+      Caption := valuename;
+      SubItems.Add(valuesource);
+    end;
+    aCombination := TCombination.Create;
+    with aCombination do
+    begin
+      IEN := valueien;
+      Entry := valuename;
+      Source := valuesource;
+    end;
+    aListItem.SubItems.AddObject('combo object', aCombination);
+  end;
+end;
+
+procedure TfrmOptionsCombinations.FormShow(Sender: TObject);
+begin
+  LoadCombinations(rpcGetCombo);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsDays.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsDays.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsDays.dfm	(revision 1676)
@@ -0,0 +1,337 @@
+inherited frmOptionsDays: TfrmOptionsDays
+  Left = 516
+  Top = 90
+  HelpContext = 9010
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Date Range Defaults on Cover Sheet'
+  ClientHeight = 337
+  ClientWidth = 328
+  HelpFile = 'CPRSWT.HLP'
+  Position = poDefault
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object bvlTop: TBevel [0]
+    Left = 11
+    Top = 9
+    Width = 310
+    Height = 2
+  end
+  object bvlMiddle: TBevel [1]
+    Left = 11
+    Top = 155
+    Width = 310
+    Height = 2
+  end
+  object lblVisitStop: TLabel [2]
+    Left = 15
+    Top = 251
+    Width = 25
+    Height = 13
+    Caption = 'Stop:'
+  end
+  object lblVisitStart: TLabel [3]
+    Left = 15
+    Top = 197
+    Width = 25
+    Height = 13
+    Caption = 'Start:'
+  end
+  object lblLabOutpatient: TLabel [4]
+    Left = 15
+    Top = 103
+    Width = 77
+    Height = 13
+    Caption = 'Outpatient days:'
+  end
+  object lblLabInpatient: TLabel [5]
+    Left = 15
+    Top = 47
+    Width = 69
+    Height = 13
+    Caption = 'Inpatient days:'
+  end
+  object lblVisitValue: TMemo [6]
+    Left = 136
+    Top = 219
+    Width = 169
+    Height = 73
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'lblVisitValue')
+    ReadOnly = True
+    TabOrder = 13
+  end
+  object lblLabValue: TMemo [7]
+    Left = 136
+    Top = 71
+    Width = 169
+    Height = 74
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'lblLabValue')
+    ReadOnly = True
+    TabOrder = 14
+  end
+  object lblVisit: TStaticText [8]
+    Left = 15
+    Top = 164
+    Width = 115
+    Height = 17
+    Caption = 'Appointments and visits'
+    TabOrder = 11
+  end
+  object lblLab: TStaticText [9]
+    Left = 15
+    Top = 16
+    Width = 55
+    Height = 17
+    Caption = 'Lab results'
+    TabOrder = 12
+  end
+  object pnlBottom: TPanel [10]
+    Left = 0
+    Top = 304
+    Width = 328
+    Height = 33
+    HelpContext = 9010
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 10
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 328
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 167
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 247
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object txtLabInpatient: TCaptionEdit [11]
+    Left = 15
+    Top = 66
+    Width = 42
+    Height = 21
+    HelpContext = 9013
+    TabOrder = 0
+    Text = '1'
+    OnChange = txtLabInpatientChange
+    OnExit = txtLabInpatientExit
+    OnKeyPress = txtLabInpatientKeyPress
+    Caption = 'Inpatient days'
+  end
+  object spnLabInpatient: TUpDown [12]
+    Left = 57
+    Top = 66
+    Width = 16
+    Height = 21
+    HelpContext = 9013
+    Associate = txtLabInpatient
+    Max = 999
+    Position = 1
+    TabOrder = 1
+    Thousands = False
+    OnClick = spnLabInpatientClick
+  end
+  object txtLabOutpatient: TCaptionEdit [13]
+    Left = 15
+    Top = 121
+    Width = 42
+    Height = 21
+    HelpContext = 9014
+    TabOrder = 2
+    Text = '1'
+    OnChange = txtLabOutpatientChange
+    OnExit = txtLabOutpatientExit
+    OnKeyPress = txtLabInpatientKeyPress
+    Caption = 'Outpatient days'
+  end
+  object spnLabOutpatient: TUpDown [14]
+    Left = 57
+    Top = 121
+    Width = 16
+    Height = 21
+    HelpContext = 9014
+    Associate = txtLabOutpatient
+    Max = 999
+    Position = 1
+    TabOrder = 3
+    Thousands = False
+    OnClick = spnLabOutpatientClick
+  end
+  object txtVisitStart: TCaptionEdit [15]
+    Tag = -180
+    Left = 15
+    Top = 214
+    Width = 79
+    Height = 21
+    HelpContext = 9015
+    MaxLength = 12
+    TabOrder = 5
+    Text = '0'
+    OnExit = txtVisitStartExit
+    OnKeyPress = txtVisitStartKeyPress
+    OnKeyUp = txtVisitStartKeyUp
+    Caption = 'Start'
+  end
+  object spnVisitStart: TUpDown [16]
+    Tag = -180
+    Left = 94
+    Top = 214
+    Width = 15
+    Height = 21
+    HelpContext = 9015
+    Associate = txtVisitStart
+    Min = -999
+    Max = 999
+    TabOrder = 6
+    Thousands = False
+    OnClick = spnVisitStartClick
+  end
+  object txtVisitStop: TCaptionEdit [17]
+    Tag = 30
+    Left = 15
+    Top = 269
+    Width = 79
+    Height = 21
+    HelpContext = 9015
+    MaxLength = 12
+    TabOrder = 7
+    Text = '0'
+    OnExit = txtVisitStopExit
+    OnKeyPress = txtVisitStopKeyPress
+    OnKeyUp = txtVisitStopKeyUp
+    Caption = 'Stop'
+  end
+  object spnVisitStop: TUpDown [18]
+    Tag = 30
+    Left = 94
+    Top = 269
+    Width = 16
+    Height = 21
+    HelpContext = 9015
+    Associate = txtVisitStop
+    Min = -999
+    Max = 999
+    TabOrder = 8
+    Thousands = False
+    OnClick = spnVisitStopClick
+  end
+  object btnLabDefaults: TButton [19]
+    Left = 245
+    Top = 32
+    Width = 75
+    Height = 22
+    HelpContext = 9011
+    Caption = 'Use Defaults'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 4
+    OnClick = btnLabDefaultsClick
+  end
+  object btnVisitDefaults: TButton [20]
+    Left = 245
+    Top = 184
+    Width = 75
+    Height = 22
+    HelpContext = 9012
+    Caption = 'Use Defaults'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 9
+    OnClick = btnVisitDefaultsClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblVisitValue'
+        'Status = stsDefault')
+      (
+        'Component = lblLabValue'
+        'Status = stsDefault')
+      (
+        'Component = lblVisit'
+        'Status = stsDefault')
+      (
+        'Component = lblLab'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = txtLabInpatient'
+        'Status = stsDefault')
+      (
+        'Component = spnLabInpatient'
+        'Status = stsDefault')
+      (
+        'Component = txtLabOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = spnLabOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = txtVisitStart'
+        'Status = stsDefault')
+      (
+        'Component = spnVisitStart'
+        'Status = stsDefault')
+      (
+        'Component = txtVisitStop'
+        'Status = stsDefault')
+      (
+        'Component = spnVisitStop'
+        'Status = stsDefault')
+      (
+        'Component = btnLabDefaults'
+        'Status = stsDefault')
+      (
+        'Component = btnVisitDefaults'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsDays'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsDays.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsDays.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsDays.pas	(revision 1676)
@@ -0,0 +1,437 @@
+unit fOptionsDays;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, fOptions, ComCtrls, OrFn, ORCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsDays = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    bvlTop: TBevel;
+    bvlMiddle: TBevel;
+    txtLabInpatient: TCaptionEdit;
+    spnLabInpatient: TUpDown;
+    txtLabOutpatient: TCaptionEdit;
+    spnLabOutpatient: TUpDown;
+    txtVisitStart: TCaptionEdit;
+    spnVisitStart: TUpDown;
+    txtVisitStop: TCaptionEdit;
+    spnVisitStop: TUpDown;
+    lblVisit: TStaticText;
+    lblVisitStop: TLabel;
+    lblVisitStart: TLabel;
+    lblLabOutpatient: TLabel;
+    lblLabInpatient: TLabel;
+    lblLab: TStaticText;
+    lblVisitValue: TMemo;
+    lblLabValue: TMemo;
+    btnLabDefaults: TButton;
+    btnVisitDefaults: TButton;
+    bvlBottom: TBevel;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure spnVisitStartClick(Sender: TObject; Button: TUDBtnType);
+    procedure spnVisitStopClick(Sender: TObject; Button: TUDBtnType);
+    procedure spnLabInpatientClick(Sender: TObject; Button: TUDBtnType);
+    procedure spnLabOutpatientClick(Sender: TObject; Button: TUDBtnType);
+    procedure txtLabInpatientKeyPress(Sender: TObject; var Key: Char);
+    procedure btnLabDefaultsClick(Sender: TObject);
+    procedure btnVisitDefaultsClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure txtLabInpatientChange(Sender: TObject);
+    procedure txtLabInpatientExit(Sender: TObject);
+    procedure txtLabOutpatientChange(Sender: TObject);
+    procedure txtLabOutpatientExit(Sender: TObject);
+    procedure txtVisitStartExit(Sender: TObject);
+    procedure txtVisitStartKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtVisitStopExit(Sender: TObject);
+    procedure txtVisitStopKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtVisitStartKeyPress(Sender: TObject; var Key: Char);
+    procedure txtVisitStopKeyPress(Sender: TObject; var Key: Char);
+  private
+    { Private declarations }
+    FStartEntered: boolean;
+    FStopEntered: boolean;
+    procedure AdjustVisitLabel;
+    procedure AdjustLabLabel;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsDays: TfrmOptionsDays;
+
+procedure DialogOptionsDays(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, uOptions;
+
+{$R *.DFM}
+
+procedure DialogOptionsDays(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsDays: TfrmOptionsDays;
+begin
+  frmOptionsDays := TfrmOptionsDays.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsDays do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsDays);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsDays.Release;
+  end;
+end;
+
+procedure TfrmOptionsDays.FormCreate(Sender: TObject);
+begin
+  FStartEntered := false;
+  FStopEntered := false;
+end;
+
+procedure TfrmOptionsDays.FormShow(Sender: TObject);
+  //get lab defaults, personal values, visit defaults, personal values
+  //tags for textboxes hold setting, tags on spinbuttons hold default,
+  //tag of 1 on buttons indicate system default being used
+var
+  labin, labout, visitstart, visitstop: integer;
+  labindef, laboutdef, visitstartdef, visitstopdef: integer;
+begin
+  rpcGetLabDays(labindef, laboutdef);
+  rpcGetLabUserDays(labin, labout);
+  rpcGetApptDays(visitstartdef, visitstopdef);
+  rpcGetApptUserDays(visitstart, visitstop);
+
+  txtLabInpatient.Text := inttostr(-labin);
+  txtLabInpatient.Tag := labin;
+  txtLabOutpatient.Text := inttostr(-labout);
+  txtLabOutpatient.Tag := labout;
+  txtVisitStart.Tag := visitstart - 1;
+  txtVisitStop.Tag := visitstop - 1;
+
+  spnLabInpatient.Tag := labindef;
+  spnLabOutpatient.Tag := laboutdef;
+  spnVisitStart.Tag := visitstartdef;
+  spnVisitStop.Tag := visitstopdef;
+
+  spnLabInpatientClick(self, btNext);
+  spnLabOutpatientClick(self, btNext);
+  spnVisitStartClick(self, btNext);
+  spnVisitStopClick(self, btNext);
+  
+  txtLabInpatient.SetFocus;
+end;
+
+procedure TfrmOptionsDays.spnVisitStartClick(Sender: TObject;
+  Button: TUDBtnType);
+var
+  tagnum: integer;
+begin
+  with txtVisitStart do
+  begin
+    if FStartEntered then
+    begin
+      if Hint = '' then Hint := 'T';
+      tagnum := RelativeDate(Hint);
+      if tagnum = INVALID_DAYS then
+      begin
+        Text := Hint;
+        beep;
+        InfoBox('Start Date entry was invalid', 'Warning', MB_OK or MB_ICONWARNING);
+        ShowDisplay(txtVisitStart);
+        FStartEntered := false;
+        exit;
+      end
+      else
+      begin
+        DateLimits(DAYS_LIMIT, tagnum);
+        if tagnum <> INVALID_DAYS then
+          Tag := tagnum;
+      end;
+    end;
+    SetFocus;
+    if Button = btNext then tagnum := Tag + 1
+    else tagnum := Tag - 1;
+    Text := Hint;
+    DateLimits(DAYS_LIMIT, tagnum);
+    if tagnum <> INVALID_DAYS then
+      Tag := tagnum;
+    ShowDisplay(txtVisitStart);
+  end;
+  btnVisitDefaults.Tag := 0;
+  AdjustVisitLabel;
+  FStartEntered := false;
+end;
+
+procedure TfrmOptionsDays.spnVisitStopClick(Sender: TObject;
+  Button: TUDBtnType);
+var
+  tagnum: integer;
+begin
+  with txtVisitStop do
+  begin
+    if FStopEntered then
+    begin
+      if Hint = '' then Hint := 'T';
+      tagnum := RelativeDate(Hint);
+      if tagnum = INVALID_DAYS then
+      begin
+        Text := Hint;
+        beep;
+        InfoBox('Stop Date entry was invalid', 'Warning', MB_OK or MB_ICONWARNING);
+        ShowDisplay(txtVisitStop);
+        FStopEntered := false;
+        exit;
+      end
+      else
+      begin
+        DateLimits(DAYS_LIMIT, tagnum);
+        if tagnum = INVALID_DAYS then
+        begin
+          Text := Hint;
+          ShowDisplay(txtVisitStop);
+          FStopEntered := false;
+          exit;
+        end;
+      end;
+    end;
+    SetFocus;
+    if Button = btNext then tagnum := Tag + 1
+    else tagnum := Tag - 1;
+    Text := Hint;
+    DateLimits(DAYS_LIMIT, tagnum);
+    if tagnum <> INVALID_DAYS then
+      Tag := tagnum;
+    ShowDisplay(txtVisitStop);
+  end;
+  btnVisitDefaults.Tag := 0;
+  AdjustVisitLabel;
+  FStopEntered := false;
+end;
+
+procedure TfrmOptionsDays.spnLabInpatientClick(Sender: TObject;
+  Button: TUDBtnType);
+begin
+ // txtLabInpatient.SetFocus; cq:13554
+  txtLabInpatient.Tag := strtointdef(txtLabInpatient.Text, 0);
+  btnLabDefaults.Tag := 0;
+  AdjustLabLabel;
+end;
+
+procedure TfrmOptionsDays.spnLabOutpatientClick(Sender: TObject;
+  Button: TUDBtnType);
+begin
+  //txtLabOutpatient.SetFocus;  cq:13554
+  txtLabOutpatient.Tag := strtointdef(txtLabOutpatient.Text, 0);
+  btnLabDefaults.Tag := 0;
+  AdjustLabLabel;
+end;
+
+procedure TfrmOptionsDays.txtLabInpatientKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if not (Key in ['0'..'9', #8]) then
+  begin
+    Key := #0;
+    beep;
+  end;
+end;
+
+procedure TfrmOptionsDays.btnLabDefaultsClick(Sender: TObject);
+begin
+  txtLabInpatient.Text := inttostr(spnLabInpatient.Tag);
+  spnLabInpatientClick(self, btNext);
+  txtLabOutpatient.Text := inttostr(spnLabOutpatient.Tag);
+  spnLabOutpatientClick(self, btNext);
+  btnLabDefaults.Tag := 1;
+end;
+
+procedure TfrmOptionsDays.btnVisitDefaultsClick(Sender: TObject);
+begin
+  txtVisitStart.Tag := spnVisitStart.Tag - 1;
+  spnVisitStartClick(self, btNext);
+  txtVisitStop.Tag := spnVisitStop.Tag - 1;
+  spnVisitStopClick(self, btNext);
+  btnVisitDefaults.Tag := 1;
+end;
+
+procedure TfrmOptionsDays.AdjustVisitLabel;
+var
+  start, stop: string;
+begin
+  start := txtVisitStart.Text;
+  stop := txtVisitStop.Text;
+  if start <> 'Today' then start := start + ' days';
+  if stop <> 'Today' then stop := stop + ' days';
+  lblVisitValue.Text := 'Appointments and visits will be displayed on the cover sheet '
+                         + 'from ' + start + ' to ' + stop + '.'
+end;
+
+procedure TfrmOptionsDays.AdjustLabLabel;
+begin
+  lblLabValue.Text := 'Lab results will be displayed on the cover sheet '
+                       + 'back ' + txtLabInpatient.Text + ' days for inpatients and '
+                       + txtLabOutpatient.Text + ' days for outpatients.';
+end;
+
+procedure TfrmOptionsDays.btnOKClick(Sender: TObject);
+begin
+  rpcSetDays(txtLabInpatient.Tag, txtLabOutpatient.Tag, txtVisitStart.Tag, txtVisitStop.Tag);
+end;
+
+procedure TfrmOptionsDays.txtLabInpatientChange(Sender: TObject);
+var
+  maxvalue: integer;
+begin
+  maxvalue := spnLabInpatient.Max;
+  with txtLabInpatient do
+  begin
+    if strtointdef(Text, maxvalue) > maxvalue then
+    begin
+      beep;
+      InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
+      if strtointdef(Text, 0) > maxvalue then
+        Text := inttostr(maxvalue);
+    end;
+  end;
+  spnLabInpatientClick(self, btNext);
+end;
+
+procedure TfrmOptionsDays.txtLabInpatientExit(Sender: TObject);
+begin
+  with txtLabInpatient do
+  begin
+    if Text = '' then
+    begin
+      Text := '0';
+      spnLabInpatientClick(self, btNext);
+    end
+    else if (Copy(Text, 1, 1) = '0') and (length(Text) > 1) then
+    begin
+      Text := inttostr(strtointdef(Text, 0));
+      spnLabInpatientClick(self, btNext);
+    end;
+  end;
+end;
+
+procedure TfrmOptionsDays.txtLabOutpatientChange(Sender: TObject);
+var
+  maxvalue: integer;
+begin
+  maxvalue := spnLabOutpatient.Max;
+  with txtLabOutpatient do
+  begin
+    if strtointdef(Text, maxvalue) > maxvalue then
+    begin
+      beep;
+      InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
+      if strtointdef(Text, 0) > maxvalue then
+        Text := inttostr(maxvalue);
+    end;
+  end;
+  spnLabOutpatientClick(self, btNext);
+end;
+
+procedure TfrmOptionsDays.txtLabOutpatientExit(Sender: TObject);
+begin
+  with txtLabOutpatient do
+  begin
+    if Text = '' then
+    begin
+      Text := '0';
+      spnLabOutpatientClick(self, btNext);
+    end
+    else if (Copy(Text, 1, 1) = '0') and (length(Text) > 1) then
+    begin
+      Text := inttostr(strtointdef(Text, 0));
+      spnLabOutpatientClick(self, btNext);
+    end;
+  end;
+end;
+
+procedure TfrmOptionsDays.txtVisitStartExit(Sender: TObject);
+begin
+  with txtVisitStart do
+  if Text = '' then
+  begin
+    Text := 'T-1';
+    Hint := 'T-1';
+    spnVisitStartClick(self, btNext);
+  end;
+  TextExit(txtVisitStart, FStartEntered, DAYS_LIMIT);
+  AdjustVisitLabel;
+end;
+
+procedure TfrmOptionsDays.txtVisitStartKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  txtVisitStart.Hint := txtVisitStart.Text;   // put text in hint since text not available to spin
+  FStartEntered := true;
+end;
+
+procedure TfrmOptionsDays.txtVisitStopExit(Sender: TObject);
+begin
+  with txtVisitStop do
+  if Text = '' then
+  begin
+    Text := 'T-1';
+    Hint := 'T-1';
+    spnVisitStopClick(self, btNext);
+  end;
+  TextExit(txtVisitStop, FStopEntered, DAYS_LIMIT);
+  AdjustVisitLabel;
+end;
+
+procedure TfrmOptionsDays.txtVisitStopKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  txtVisitStop.Hint := txtVisitStop.Text;   // put text in hint since text not available to spin
+  FStopEntered := true;
+end;
+
+procedure TfrmOptionsDays.txtVisitStartKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if key = #13 then
+  begin
+    FStartEntered := true;
+    Perform(WM_NextDlgCtl, 0, 0);
+  end;
+end;
+
+procedure TfrmOptionsDays.txtVisitStopKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if key = #13 then
+  begin
+    FStopEntered := true;
+    Perform(WM_NextDlgCtl, 0, 0);
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsLists.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsLists.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsLists.dfm	(revision 1676)
@@ -0,0 +1,407 @@
+inherited frmOptionsLists: TfrmOptionsLists
+  Left = 354
+  Top = 178
+  HelpContext = 9070
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsSingle
+  Caption = 'Personal Lists'
+  ClientHeight = 442
+  ClientWidth = 407
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitLeft = 354
+  ExplicitTop = 178
+  ExplicitWidth = 415
+  ExplicitHeight = 469
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAddby: TLabel [0]
+    Left = 7
+    Top = 97
+    Width = 42
+    Height = 13
+    Caption = 'Provider:'
+  end
+  object lblPatientsAdd: TLabel [1]
+    Left = 7
+    Top = 200
+    Width = 74
+    Height = 13
+    Caption = 'Patients to add:'
+  end
+  object lblPersonalPatientList: TLabel [2]
+    Left = 248
+    Top = 200
+    Width = 114
+    Height = 13
+    Caption = 'Patients on personal list:'
+  end
+  object lblPersonalLists: TLabel [3]
+    Left = 248
+    Top = 97
+    Width = 68
+    Height = 13
+    Caption = 'Personal Lists:'
+  end
+  object lblInfo: TMemo [4]
+    Left = 199
+    Top = 24
+    Width = 186
+    Height = 65
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'You can change your personal lists by '
+      'adding or removing patients.')
+    ReadOnly = True
+    TabOrder = 14
+  end
+  object pnlBottom: TPanel [5]
+    Left = 0
+    Top = 409
+    Width = 407
+    Height = 33
+    HelpContext = 9070
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 13
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 407
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 245
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 325
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object lstAddBy: TORComboBox [6]
+    Left = 7
+    Top = 112
+    Width = 153
+    Height = 81
+    HelpContext = 9072
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Provider:'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnClick = lstAddByClick
+    OnKeyPress = lstAddByKeyPress
+    OnNeedData = lstAddByNeedData
+    CharsNeedMatch = 1
+  end
+  object btnPersonalPatientRA: TButton [7]
+    Left = 166
+    Top = 296
+    Width = 75
+    Height = 22
+    HelpContext = 9079
+    Caption = 'Remove All'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 9
+    OnClick = btnPersonalPatientRAClick
+  end
+  object btnPersonalPatientR: TButton [8]
+    Left = 166
+    Top = 271
+    Width = 75
+    Height = 22
+    HelpContext = 9078
+    Caption = 'Remove'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 8
+    OnClick = btnPersonalPatientRClick
+  end
+  object lstListPats: TORListBox [9]
+    Left = 7
+    Top = 215
+    Width = 153
+    Height = 134
+    HelpContext = 9073
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    PopupMenu = mnuPopPatient
+    ShowHint = True
+    Sorted = True
+    TabOrder = 5
+    OnClick = lstListPatsChange
+    OnDblClick = btnListAddClick
+    OnMouseDown = lstListPatsMouseDown
+    Caption = 'Patients to add:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    OnChange = lstListPatsChange
+  end
+  object lstPersonalPatients: TORListBox [10]
+    Left = 248
+    Top = 215
+    Width = 153
+    Height = 134
+    HelpContext = 9075
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    PopupMenu = mnuPopPatient
+    ShowHint = True
+    Sorted = True
+    TabOrder = 11
+    OnClick = lstPersonalPatientsChange
+    OnDblClick = btnPersonalPatientRClick
+    OnMouseDown = lstPersonalPatientsMouseDown
+    Caption = 'Patients on personal list:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    OnChange = lstPersonalPatientsChange
+  end
+  object btnListAddAll: TButton [11]
+    Left = 166
+    Top = 241
+    Width = 75
+    Height = 22
+    HelpContext = 9077
+    Caption = 'Add All'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 7
+    OnClick = btnListAddAllClick
+  end
+  object btnNewList: TButton [12]
+    Left = 166
+    Top = 113
+    Width = 75
+    Height = 22
+    HelpContext = 9081
+    Caption = 'New List...'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 2
+    OnClick = btnNewListClick
+  end
+  object btnDeleteList: TButton [13]
+    Left = 165
+    Top = 171
+    Width = 75
+    Height = 22
+    HelpContext = 9082
+    Caption = 'Delete List'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+    OnClick = btnDeleteListClick
+  end
+  object lstPersonalLists: TORListBox [14]
+    Left = 248
+    Top = 112
+    Width = 153
+    Height = 81
+    HelpContext = 9074
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    Sorted = True
+    TabOrder = 4
+    Caption = 'Personal Lists:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    OnChange = lstPersonalListsChange
+  end
+  object radAddByType: TRadioGroup [15]
+    Left = 7
+    Top = 8
+    Width = 153
+    Height = 86
+    HelpContext = 9071
+    Caption = 'Select patients by '
+    Columns = 2
+    ItemIndex = 0
+    Items.Strings = (
+      'P&atient'
+      '&Ward'
+      '&Clinic'
+      '&Provider'
+      '&Specialty'
+      '&List')
+    TabOrder = 0
+    OnClick = radAddByTypeClick
+  end
+  object btnListSaveChanges: TButton [16]
+    Left = 166
+    Top = 328
+    Width = 75
+    Height = 22
+    HelpContext = 9080
+    Caption = 'Save Changes'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 10
+    OnClick = btnListSaveChangesClick
+  end
+  object btnListAdd: TButton [17]
+    Left = 166
+    Top = 216
+    Width = 75
+    Height = 22
+    HelpContext = 9076
+    Caption = 'Add'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 6
+    OnClick = btnListAddClick
+  end
+  object grpVisibility: TRadioGroup [18]
+    Left = 8
+    Top = 356
+    Width = 391
+    Height = 45
+    Caption = 'Who should be able to see and use the selected  list?'
+    Columns = 3
+    ItemIndex = 1
+    Items.Strings = (
+      '&Myself only'
+      '&All CPRS users')
+    TabOrder = 12
+    OnClick = grpVisibilityClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblInfo'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstAddBy'
+        'Status = stsDefault')
+      (
+        'Component = btnPersonalPatientRA'
+        'Status = stsDefault')
+      (
+        'Component = btnPersonalPatientR'
+        'Status = stsDefault')
+      (
+        'Component = lstListPats'
+        'Status = stsDefault')
+      (
+        'Component = lstPersonalPatients'
+        'Status = stsDefault')
+      (
+        'Component = btnListAddAll'
+        'Status = stsDefault')
+      (
+        'Component = btnNewList'
+        'Status = stsDefault')
+      (
+        'Component = btnDeleteList'
+        'Status = stsDefault')
+      (
+        'Component = lstPersonalLists'
+        'Status = stsDefault')
+      (
+        'Component = radAddByType'
+        'Status = stsDefault')
+      (
+        'Component = btnListSaveChanges'
+        'Status = stsDefault')
+      (
+        'Component = btnListAdd'
+        'Status = stsDefault')
+      (
+        'Component = grpVisibility'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsLists'
+        'Status = stsDefault'))
+  end
+  object mnuPopPatient: TPopupMenu
+    Left = 8
+    Top = 408
+    object mnuPatientID: TMenuItem
+      Caption = 'Patient ID...'
+      OnClick = mnuPatientIDClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsLists.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsLists.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsLists.pas	(revision 1676)
@@ -0,0 +1,589 @@
+unit fOptionsLists;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, OrFn, Menus, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsLists = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    lblAddby: TLabel;
+    lblPatientsAdd: TLabel;
+    lblPersonalPatientList: TLabel;
+    lblPersonalLists: TLabel;
+    lstAddBy: TORComboBox;
+    btnPersonalPatientRA: TButton;
+    btnPersonalPatientR: TButton;
+    lstListPats: TORListBox;
+    lstPersonalPatients: TORListBox;
+    btnListAddAll: TButton;
+    btnNewList: TButton;
+    btnDeleteList: TButton;
+    lstPersonalLists: TORListBox;
+    radAddByType: TRadioGroup;
+    btnListSaveChanges: TButton;
+    btnListAdd: TButton;
+    lblInfo: TMemo;
+    bvlBottom: TBevel;
+    mnuPopPatient: TPopupMenu;
+    mnuPatientID: TMenuItem;
+    grpVisibility: TRadioGroup;
+    procedure FormCreate(Sender: TObject);
+    procedure btnNewListClick(Sender: TObject);
+    procedure radAddByTypeClick(Sender: TObject);
+    procedure lstPersonalListsChange(Sender: TObject);
+    procedure lstAddByClick(Sender: TObject);
+    procedure btnDeleteListClick(Sender: TObject);
+    procedure btnListSaveChangesClick(Sender: TObject);
+    procedure btnPersonalPatientRAClick(Sender: TObject);
+    procedure btnListAddAllClick(Sender: TObject);
+    procedure btnPersonalPatientRClick(Sender: TObject);
+    procedure lstPersonalPatientsChange(Sender: TObject);
+    procedure btnListAddClick(Sender: TObject);
+    procedure lstListPatsChange(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure lstAddByNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure btnOKClick(Sender: TObject);
+    procedure mnuPatientIDClick(Sender: TObject);
+    procedure lstListPatsMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure lstPersonalPatientsMouseDown(Sender: TObject;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure lstAddByKeyPress(Sender: TObject; var Key: Char);
+    procedure grpVisibilityClick(Sender: TObject);
+  private
+    { Private declarations }
+    FLastList: integer;
+    FChanging: boolean;
+    procedure AddIfUnique(entry: string; aList: TORListBox);
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsLists: TfrmOptionsLists;
+
+procedure DialogOptionsLists(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses fOptionsNewList, rOptions, uOptions, rCore, fPtSelOptns, VAUtils;
+
+{$R *.DFM}
+
+const
+  LIST_ADD = 1;
+  LIST_PERSONAL = 2;
+
+procedure DialogOptionsLists(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsLists: TfrmOptionsLists;
+begin
+  frmOptionsLists := TfrmOptionsLists.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsLists do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsLists);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsLists.Release;
+  end;
+end;
+
+procedure TfrmOptionsLists.FormCreate(Sender: TObject);
+begin
+  rpcGetPersonalLists(lstPersonalLists.Items);
+  grpVisibility.ItemIndex := 1;
+  grpVisibility.Enabled := FALSE;
+  radAddByType.ItemIndex := 0;
+  radAddByTypeClick(self);
+  FLastList := 0;
+end;
+
+procedure TfrmOptionsLists.btnNewListClick(Sender: TObject);
+var
+  newlist: string;
+  newlistnum: integer;
+begin
+  newlist := '';
+  DialogOptionsNewList(Font.Size, newlist);
+  newlistnum := strtointdef(Piece(newlist, '^', 1), 0);
+  if newlistnum > 0 then
+  begin
+    with lstPersonalLists do
+    begin
+      Items.Add(newlist);
+      SelectByIEN(newlistnum);
+    end;
+    lstPersonalListsChange(self);
+    lstPersonalPatients.Items.Clear;
+    lstPersonalPatientsChange(self);
+  end;
+end;
+
+procedure TfrmOptionsLists.radAddByTypeClick(Sender: TObject);
+begin
+  with lstAddBy do
+  begin
+    case radAddByType.ItemIndex of
+      0: begin
+           ListItemsOnly := true;
+           LongList := true;
+           InitLongList('');
+           lblAddby.Caption := 'Patient:';
+         end;
+      1: begin
+           ListItemsOnly := false;
+           LongList := false;
+           ListWardAll(lstAddBy.Items);
+           lblAddby.Caption := 'Ward:';
+         end;
+      2: begin
+           ListItemsOnly := true;
+           LongList := true;
+           InitLongList('');
+           lblAddby.Caption := 'Clinic:';
+         end;
+      3: begin
+           ListItemsOnly := true;
+           LongList := true;
+           InitLongList('');
+           lblAddby.Caption := 'Provider:';
+         end;
+      4: begin
+           ListItemsOnly := false;
+           LongList := false;
+           ListSpecialtyAll(lstAddBy.Items);
+           lblAddby.Caption := 'Specialty:';
+         end;
+      5: begin
+           ListItemsOnly := false;
+           LongList := false;
+           ListTeamAll(lstAddBy.Items);
+           lblAddby.Caption := 'List:';
+         end;
+    end;
+    lstAddby.Caption := lblAddby.Caption;
+    ItemIndex := -1;
+    Text := '';
+  end;
+    lstListPats.Items.Clear;
+    lstListPatsChange(self);
+end;
+
+procedure TfrmOptionsLists.AddIfUnique(entry: string; aList: TORListBox);
+var
+  i: integer;
+  ien: string;
+  inlist: boolean;
+begin
+  ien := Piece(entry, '^', 1);
+  inlist := false;
+  with aList do
+  for i := 0 to Items.Count - 1 do
+    if ien = Piece(Items[i], '^', 1) then
+    begin
+      inlist := true;
+      break;
+    end;
+  if not inlist then
+    aList.Items.Add(entry);
+end;
+
+procedure TfrmOptionsLists.lstPersonalListsChange(Sender: TObject);
+var
+  x: integer;
+begin
+  if (btnListSaveChanges.Enabled) and (not FChanging) then
+  begin
+    if InfoBox('Do you want to save changes to '
+        + Piece(lstPersonalLists.Items[FLastList], '^', 2) + '?',
+        'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+      btnListSaveChangesClick(self);
+  end;
+  if lstPersonalLists.ItemIndex > -1 then FLastList := lstPersonalLists.ItemIndex;
+  lstPersonalPatients.Items.Clear;
+  btnDeleteList.Enabled := lstPersonalLists.ItemIndex > -1;
+  with lstPersonalLists do
+  begin
+    if (ItemIndex < 0) or (Items.Count <1) then
+    begin
+      btnListAdd.Enabled := false;
+      btnListAddAll.Enabled := false;
+      btnPersonalPatientR.Enabled := false;
+      btnPersonalPatientRA.Enabled := false;
+      btnListSaveChanges.Enabled := false;
+      grpVisibility.Enabled := False;
+      exit;
+    end;
+    ListPtByTeam(lstPersonalPatients.Items, strtointdef(Piece(Items[ItemIndex], '^', 1), 0));
+    grpVisibility.Enabled := TRUE;
+    FChanging := True;
+    x := StrToIntDef(Piece(Items[ItemIndex], '^', 9), 1);
+    if x = 2 then x := 1;
+    grpVisibility.ItemIndex := x;
+    FChanging := False;
+    btnDeleteList.Enabled := true;
+  end;
+  if lstPersonalPatients.Items.Count = 1 then         // avoid selecting '^No patients found.' msg
+    if Piece(lstPersonalPatients.Items[0], '^', 1) = '' then
+    begin
+      btnPersonalPatientR.Enabled := false;
+      btnPersonalPatientRA.Enabled := false;
+      exit;
+    end;
+  btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
+  btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
+  btnListSaveChanges.Enabled := false;
+end;
+
+procedure TfrmOptionsLists.lstAddByClick(Sender: TObject);
+var
+  ien: string;
+  visitstart, visitstop, i: integer;
+  visittoday, visitbegin, visitend: TFMDateTime;
+  aList: TStringList;
+  PtRec: TPtIDInfo;
+begin
+  if lstAddBy.ItemIndex < 0 then exit;
+  ien := Piece(lstAddBy.Items[lstAddBy.ItemIndex], '^', 1);
+  case radAddByType.ItemIndex of
+    0:
+    begin
+      PtRec := GetPtIDInfo(ien);
+      lblAddBy.Caption := 'Patient:   SSN: ' + PtRec.SSN;
+      lstAddby.Caption := lblAddby.Caption;
+      AddIfUnique(lstAddBy.Items[lstAddBy.ItemIndex], lstListPats);
+    end;
+    1:
+    begin
+      ListPtByWard(lstListPats.Items, strtointdef(ien,0));
+    end;
+    2:
+    begin
+      rpcGetApptUserDays(visitstart, visitstop);   // use user's date range for appointments
+      visittoday := FMToday;
+      visitbegin := FMDateTimeOffsetBy(visittoday, LowerOf(visitstart, visitstop));
+      visitend := FMDateTimeOffsetBy(visittoday, HigherOf(visitstart, visitstop));
+      aList := TStringList.Create;
+      ListPtByClinic(lstListPats.Items, strtointdef(ien, 0), floattostr(visitbegin), floattostr(visitend));
+      for i := 0 to aList.Count - 1 do
+        AddIfUnique(aList[i], lstListPats);
+      aList.Free;
+    end;
+    3:
+    begin
+      ListPtByProvider(lstListPats.Items, strtoint64def(ien,0));
+    end;
+    4:
+    begin
+      ListPtBySpecialty(lstListPats.Items, strtointdef(ien,0));
+    end;
+    5:
+    begin
+      ListPtByTeam(lstListPats.Items, strtointdef(ien,0));
+    end;
+  end;
+  if lstListPats.Items.Count = 1 then         // avoid selecting '^No patients found.' msg
+    if Piece(lstListPats.Items[0], '^', 1) = '' then
+    begin
+      btnListAddAll.Enabled := false;
+      btnListAdd.Enabled := false;
+      exit;
+    end;
+  btnListAddAll.Enabled := (lstListPats.Items.Count > 0) and (lstPersonalLists.ItemIndex > -1);
+  btnListAdd.Enabled := (lstListPats.SelCount > 0) and (lstPersonalLists.ItemIndex > -1);
+end;
+
+procedure TfrmOptionsLists.btnDeleteListClick(Sender: TObject);
+var
+  oldindex: integer;
+  deletemsg: string;
+begin
+  with lstPersonalLists do
+    deletemsg := 'You have selected "' + DisplayText[ItemIndex]
+      + '" to be deleted.' + CRLF + 'Are you sure you want to delete this list?';
+  if InfoBox(deletemsg, 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+    btnListSaveChanges.Enabled := false;
+    with lstPersonalLists do
+    begin
+      oldindex := ItemIndex;
+      if oldindex > -1 then
+      begin
+        rpcDeleteList(Piece(Items[oldindex], '^', 1));
+        Items.Delete(oldindex);
+        btnPersonalPatientRAClick(self);
+        btnListSaveChanges.Enabled := false;
+      end;
+      if Items.Count > 0 then
+      begin
+        if oldindex = 0 then
+          ItemIndex := 0
+        else if oldindex > (Items.Count - 1) then
+          ItemIndex := Items.Count - 1
+        else
+          ItemIndex := oldindex;
+        btnListSaveChanges.Enabled := false;
+        lstPersonalListsChange(self);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmOptionsLists.btnListSaveChangesClick(Sender: TObject);
+var
+  listien: integer;
+begin
+  listien := strtointdef(Piece(lstPersonalLists.Items[FLastList], '^', 1), 0);
+  rpcSaveListChanges(lstPersonalPatients.Items, listien, grpVisibility.ItemIndex);
+  btnListSaveChanges.Enabled := false;
+  rpcGetPersonalLists(lstPersonalLists.Items);
+  lstPersonalLists.ItemIndex := FLastList;
+  lstPersonalListsChange(Self);
+  if lstPersonalPatients.CanFocus then
+    lstPersonalPatients.SetFocus;
+end;
+
+procedure TfrmOptionsLists.btnPersonalPatientRAClick(Sender: TObject);
+begin
+  lstPersonalPatients.Items.Clear;
+  btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
+  btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
+  btnListSaveChanges.Enabled := true;
+end;
+
+procedure TfrmOptionsLists.btnListAddAllClick(Sender: TObject);
+var
+  i: integer;
+begin
+  with lstPersonalPatients do
+  begin
+    if Items.Count = 1 then
+      if Piece(Items[0], '^', 1) = '' then
+        Items.Clear;
+  end;
+  with lstListPats do
+  begin
+    for i := 0 to Items.Count - 1 do
+      AddIfUnique(Items[i], lstPersonalPatients);
+    Items.Clear;
+    lstPersonalPatientsChange(self);
+    lstAddBy.ItemIndex := -1;
+    btnListAddAll.Enabled := false;
+    lstPersonalPatientsChange(self);
+  end;
+  btnListSaveChanges.Enabled := true;
+end;
+
+procedure TfrmOptionsLists.btnPersonalPatientRClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if not btnPersonalPatientR.Enabled then exit;
+  with lstPersonalPatients do
+  for i := Items.Count - 1 downto 0 do
+    if Selected[i] then
+      Items.Delete(i);
+  btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
+  btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
+  btnListSaveChanges.Enabled := true;
+end;
+
+procedure TfrmOptionsLists.lstPersonalPatientsChange(Sender: TObject);
+begin
+  if lstPersonalPatients.SelCount = 1 then         // avoid selecting '^No patients found.' msg
+    if Piece(lstPersonalPatients.Items[0], '^', 1) = '' then
+    begin
+      btnPersonalPatientR.Enabled := false;
+      btnPersonalPatientRA.Enabled := false;
+      exit;
+    end;
+  btnPersonalPatientR.Enabled := lstPersonalPatients.SelCount > 0;
+  btnPersonalPatientRA.Enabled := lstPersonalPatients.Items.Count > 0;
+end;
+
+procedure TfrmOptionsLists.btnListAddClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if not btnListAdd.Enabled then exit;
+  with lstPersonalPatients do
+  begin
+    if Items.Count = 1 then
+      if Piece(Items[0], '^', 1) = '' then
+        Items.Clear;
+  end;
+  with lstListPats do
+  for i := Items.Count - 1 downto 0 do
+    if Selected[i] then
+    begin
+      AddIfUnique(Items[i], lstPersonalPatients);
+      Items.Delete(i);
+    end;
+  lstListPatsChange(self);
+  lstPersonalPatientsChange(self);
+  btnListSaveChanges.Enabled := true;
+end;
+
+procedure TfrmOptionsLists.lstListPatsChange(Sender: TObject);
+begin
+  if lstListPats.SelCount = 1 then         // avoid selecting '^No patients found.' msg
+    if Piece(lstListPats.Items[0], '^', 1) = '' then
+      exit;
+  btnListAdd.Enabled := (lstListPats.SelCount > 0) and (lstPersonalLists.ItemIndex > -1);
+  btnListAddAll.Enabled := (lstListPats.Items.Count > 0) and (lstPersonalLists.ItemIndex > -1);
+end;
+
+procedure TfrmOptionsLists.FormShow(Sender: TObject);
+begin
+  with lstPersonalLists do
+    if Items.Count < 1 then
+      ShowMsg('You have no personal lists. Use "New List..." to create one.')
+    else
+    begin
+      ItemIndex := 0;
+      lstPersonalListsChange(self);
+    end;
+end;
+
+procedure TfrmOptionsLists.grpVisibilityClick(Sender: TObject);
+begin
+  inherited;
+  if not FChanging then btnListSaveChanges.Enabled := True;
+end;
+
+procedure TfrmOptionsLists.lstAddByNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  with lstAddBy do
+  begin
+    case radAddByType.ItemIndex of
+      0: begin
+           Pieces := '2';
+           ForDataUse(SubSetOfPatients(StartFrom, Direction));
+         end;
+      1: begin
+           Pieces := '2';
+         end;
+      2: begin
+           Pieces := '2';
+           ForDataUse(SubSetOfClinics(StartFrom, Direction));
+         end;
+      3: begin
+           Pieces := '2,3';
+           ForDataUse(SubSetOfProviders(StartFrom, Direction));
+         end;
+      4: begin
+           Pieces := '2';
+         end;
+      5: begin
+           Pieces := '2';
+         end;
+    end;
+  end;
+end;
+
+procedure TfrmOptionsLists.btnOKClick(Sender: TObject);
+begin
+  if btnListSaveChanges.Enabled then
+  begin
+    if InfoBox('Do you want to save changes to '
+        + Piece(lstPersonalLists.Items[FLastList], '^', 2) + '?',
+        'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+      btnListSaveChangesClick(self);
+  end;
+end;
+
+procedure TfrmOptionsLists.mnuPatientIDClick(Sender: TObject);
+begin
+  case mnuPopPatient.Tag of
+    LIST_PERSONAL: DisplayPtInfo(lstPersonalPatients.ItemID);
+    LIST_ADD:      DisplayPtInfo(lstListPats.ItemID);
+  end;
+end;
+
+procedure TfrmOptionsLists.lstListPatsMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  mnuPopPatient.AutoPopup :=      (lstListPats.Items.Count > 0)
+                              and (lstListPats.ItemIndex > -1)
+                              and (lstListPats.SelCount = 1)
+                              and (Button = mbRight)
+                              and (btnListAdd.Enabled);
+  mnuPopPatient.Tag := LIST_ADD;
+end;
+
+procedure TfrmOptionsLists.lstPersonalPatientsMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  mnuPopPatient.AutoPopup :=      (lstPersonalPatients.Items.Count > 0)
+                              and (lstPersonalPatients.ItemIndex > -1)
+                              and (lstPersonalPatients.SelCount = 1)
+                              and (Button = mbRight)
+                              and (btnPersonalPatientR.Enabled);
+  mnuPopPatient.Tag := LIST_PERSONAL;
+end;
+
+procedure TfrmOptionsLists.lstAddByKeyPress(Sender: TObject;
+  var Key: Char);
+
+  procedure ShowMatchingPatients;
+  begin
+    with lstAddBy do
+    begin
+      if ShortCount > 0 then
+      begin
+        if ShortCount = 1 then
+        begin
+          ItemIndex := 0;
+        end;
+        Items.Add(LLS_LINE);
+        Items.Add(LLS_SPACE);
+      end;
+      InitLongList('');
+    end;
+    Key := #0; //Now that we've selected it, don't process the last keystroke!
+  end;
+
+var
+  FutureText: string;
+begin
+  if radAddByType.ItemIndex = 0 {patient} then
+  begin
+    with lstAddBy do
+    begin
+      FutureText := Text + Key;
+      if frmPtSelOptns.IsLast5(FutureText) then
+        begin
+          ListPtByLast5(Items, FutureText);
+          ShowMatchingPatients;
+        end
+      else if frmPtSelOptns.IsFullSSN(FutureText) then
+        begin
+          ListPtByFullSSN(Items, FutureText);
+          ShowMatchingPatients;
+        end;
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNewList.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNewList.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNewList.dfm	(revision 1676)
@@ -0,0 +1,122 @@
+inherited frmOptionsNewList: TfrmOptionsNewList
+  Left = 623
+  Top = 446
+  HelpContext = 9085
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'New Personal List'
+  ClientHeight = 234
+  ClientWidth = 173
+  Font.Name = 'Tahoma'
+  HelpFile = 'CPRSWT.HLP'
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 623
+  ExplicitTop = 446
+  ExplicitWidth = 181
+  ExplicitHeight = 261
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblEnter: TLabel [0]
+    Left = 10
+    Top = 8
+    Width = 96
+    Height = 13
+    Caption = 'Enter the name of a'
+  end
+  object lblNew: TLabel [1]
+    Left = 10
+    Top = 24
+    Width = 84
+    Height = 13
+    Caption = 'new personal list.'
+  end
+  object Label1: TLabel [2]
+    Left = 11
+    Top = 80
+    Width = 156
+    Height = 33
+    AutoSize = False
+    Caption = 'Who should be able to see and use this list?'
+    WordWrap = True
+  end
+  object pnlBottom: TPanel [3]
+    Left = 0
+    Top = 200
+    Width = 173
+    Height = 34
+    HelpContext = 9085
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 2
+    object btnOK: TButton
+      Left = 11
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Caption = 'OK'
+      Default = True
+      Enabled = False
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 91
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object txtNewList: TCaptionEdit [4]
+    Left = 10
+    Top = 45
+    Width = 153
+    Height = 21
+    HelpContext = 9086
+    MaxLength = 30
+    TabOrder = 0
+    OnChange = txtNewListChange
+    OnKeyPress = txtNewListKeyPress
+    Caption = 'Enter the name of a new personal list'
+  end
+  object grpVisibility: TRadioGroup [5]
+    Left = 11
+    Top = 105
+    Width = 156
+    Height = 81
+    ItemIndex = 1
+    Items.Strings = (
+      '&Myself only'
+      '&All CPRS users')
+    TabOrder = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = txtNewList'
+        'Status = stsDefault')
+      (
+        'Component = grpVisibility'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsNewList'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNewList.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNewList.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNewList.pas	(revision 1676)
@@ -0,0 +1,112 @@
+unit fOptionsNewList;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Dialogs,
+  Buttons, ComCtrls, ExtCtrls, OrFn, ORCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsNewList = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    txtNewList: TCaptionEdit;
+    lblEnter: TLabel;
+    lblNew: TLabel;
+    Label1: TLabel;
+    grpVisibility: TRadioGroup;
+    procedure btnOKClick(Sender: TObject);
+    procedure txtNewListKeyPress(Sender: TObject; var Key: Char);
+    procedure txtNewListChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+    FNewList: string;
+  public
+    { Public declarations }
+  end;
+
+procedure DialogOptionsNewList(fontsize: integer; var actiontype: string);
+
+var
+  frmOptionsNewList: TfrmOptionsNewList;
+
+implementation
+
+uses rOptions, VAUtils;
+
+{$R *.DFM}
+
+procedure DialogOptionsNewList(fontsize: integer; var actiontype: string);
+// create the form and make it modal, return an action
+var
+  frmOptionsNewList: TfrmOptionsNewList;
+begin
+  frmOptionsNewList := TfrmOptionsNewList.Create(Application);
+  actiontype := '';
+  try
+    with frmOptionsNewList do
+    begin
+      Position := poScreenCenter;
+      ResizeAnchoredFormToFont(frmOptionsNewList);
+      ShowModal;
+      actiontype := FNewList;
+    end;
+  finally
+    frmOptionsNewList.Release;
+  end;
+end;
+
+procedure TfrmOptionsNewList.btnOKClick(Sender: TObject);
+var
+  ok: boolean;
+begin
+  ok := false;
+  with txtNewList do
+  begin
+    if (length(Text) < 3) or (length(Text) > 30) then
+      ShowMsg('Enter a valid name.')
+    else if not ContainsAlpha(txtNewList.Text[1]) then
+      ShowMsg('Enter a valid name.')
+    else
+    begin
+      FNewList := rpcNewList(Text, grpVisibility.ItemIndex);
+      if Piece(FNewList, '^', 1) = '' then
+        ShowMsg('Enter a valid name. ' + Piece(FNewList, '^', 2))
+      else
+        ok := true;
+    end;
+    if ok then Close
+    else
+    begin
+      Text := '';
+      SetFocus;
+    end;
+  end;
+end;
+
+procedure TfrmOptionsNewList.txtNewListKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if not (Key in ['A'..'Z', 'a'..'z', '0'..'9', #32, #8]) then
+  begin
+    Key := #0;
+    beep;
+  end;
+end;
+
+procedure TfrmOptionsNewList.FormCreate(Sender: TObject);
+begin
+  inherited;
+  grpVisibility.ItemIndex := 0;
+  txtNewList.Text := '';
+end;
+
+procedure TfrmOptionsNewList.txtNewListChange(Sender: TObject);
+begin
+  btnOK.Enabled := length(txtNewList.Text) > 3;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNotes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNotes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNotes.dfm	(revision 1676)
@@ -0,0 +1,177 @@
+inherited frmOptionsNotes: TfrmOptionsNotes
+  Left = 360
+  Top = 264
+  HelpContext = 9210
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsSingle
+  Caption = 'Notes'
+  ClientHeight = 150
+  ClientWidth = 399
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAutoSave1: TLabel [0]
+    Left = 9
+    Top = 14
+    Width = 97
+    Height = 13
+    Caption = 'Interval for autosave'
+  end
+  object lblCosigner: TLabel [1]
+    Left = 9
+    Top = 75
+    Width = 80
+    Height = 13
+    Caption = 'Default cosigner:'
+  end
+  object lblAutoSave2: TLabel [2]
+    Left = 9
+    Top = 28
+    Width = 67
+    Height = 13
+    Caption = 'of notes (sec):'
+  end
+  object txtAutoSave: TCaptionEdit [3]
+    Left = 9
+    Top = 42
+    Width = 42
+    Height = 21
+    HelpContext = 9213
+    TabOrder = 0
+    Text = '5'
+    OnChange = txtAutoSaveChange
+    OnExit = txtAutoSaveExit
+    OnKeyPress = txtAutoSaveKeyPress
+  end
+  object spnAutoSave: TUpDown [4]
+    Left = 51
+    Top = 42
+    Width = 15
+    Height = 21
+    HelpContext = 9213
+    Associate = txtAutoSave
+    Max = 10000
+    Increment = 5
+    Position = 5
+    TabOrder = 1
+    Thousands = False
+    OnClick = spnAutoSaveClick
+  end
+  object chkVerifyNote: TCheckBox [5]
+    Left = 177
+    Top = 59
+    Width = 169
+    Height = 17
+    HelpContext = 9214
+    Caption = 'Verify note title'
+    TabOrder = 3
+  end
+  object chkAskSubject: TCheckBox [6]
+    Left = 177
+    Top = 30
+    Width = 217
+    Height = 17
+    HelpContext = 9215
+    Caption = 'Ask subject for progress notes'
+    TabOrder = 2
+  end
+  object cboCosigner: TORComboBox [7]
+    Left = 9
+    Top = 88
+    Width = 297
+    Height = 21
+    HelpContext = 9216
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Default cosigner'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnExit = cboCosignerExit
+    OnNeedData = cboCosignerNeedData
+    CharsNeedMatch = 1
+  end
+  object pnlBottom: TPanel [8]
+    Left = 0
+    Top = 117
+    Width = 399
+    Height = 33
+    HelpContext = 9110
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 5
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 399
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 240
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 321
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtAutoSave'
+        'Status = stsDefault')
+      (
+        'Component = spnAutoSave'
+        'Status = stsDefault')
+      (
+        'Component = chkVerifyNote'
+        'Status = stsDefault')
+      (
+        'Component = chkAskSubject'
+        'Status = stsDefault')
+      (
+        'Component = cboCosigner'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsNotes'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNotes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNotes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsNotes.pas	(revision 1676)
@@ -0,0 +1,207 @@
+unit fOptionsNotes;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, ORFn, ComCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsNotes = class(TfrmBase508Form)
+    lblAutoSave1: TLabel;
+    lblCosigner: TLabel;
+    txtAutoSave: TCaptionEdit;
+    spnAutoSave: TUpDown;
+    chkVerifyNote: TCheckBox;
+    chkAskSubject: TCheckBox;
+    cboCosigner: TORComboBox;
+    pnlBottom: TPanel;
+    bvlBottom: TBevel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    lblAutoSave2: TLabel;
+    procedure FormShow(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure txtAutoSaveChange(Sender: TObject);
+    procedure txtAutoSaveKeyPress(Sender: TObject; var Key: Char);
+    procedure txtAutoSaveExit(Sender: TObject);
+    procedure spnAutoSaveClick(Sender: TObject; Button: TUDBtnType);
+    procedure cboCosignerNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboCosignerExit(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsNotes: TfrmOptionsNotes;
+
+procedure DialogOptionsNotes(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rOptions, uOptions, rCore, rTIU, rDCSumm;
+
+procedure DialogOptionsNotes(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsNotes: TfrmOptionsNotes;
+begin
+  frmOptionsNotes := TfrmOptionsNotes.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsNotes do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsNotes);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsNotes.Release;
+  end;
+end;
+
+procedure TfrmOptionsNotes.FormShow(Sender: TObject);
+// displays defaults
+// opening tab^use last tab^autosave seconds^verify note title
+var
+  autosave, verify: integer;
+  cosigner: Int64;
+  values, cosignername: string;
+begin
+  values := rpcGetOther;
+  autosave := strtointdef(Piece(values, '^', 3), -1);
+  verify := strtointdef(Piece(values, '^', 4), 0);
+  chkVerifyNote.Checked := verify = 1;
+  chkVerifyNote.Tag := verify;
+  spnAutoSave.Position := autosave;
+  spnAutoSave.Tag := autosave;
+
+  values := rpcGetDefaultCosigner;
+  cosigner := strtoint64def(Piece(values, '^', 1), 0);
+  cosignername := Piece(values, '^', 2);
+  cboCosigner.Items.Add('0^<none>');
+  cboCosigner.InitLongList(cosignername);
+  cboCosigner.SelectByIEN(cosigner);
+  cboCosigner.Tag := cosigner;
+  chkAskSubject.Checked := rpcGetSubject;
+  if chkAskSubject.Checked then chkAskSubject.Tag := 1;
+end;
+
+procedure TfrmOptionsNotes.btnOKClick(Sender: TObject);
+// only saves values if they have been changed
+// opening tab^use last tab^autosave seconds^verify note title
+var
+  values: string;
+begin
+  values := '';
+  values := values + '^';
+  values := values + '^';
+  if spnAutoSave.Position <> spnAutoSave.Tag then
+    values := values + inttostr(spnAutoSave.Position);
+  values := values + '^';
+  if chkVerifyNote.Checked then
+    if chkVerifyNote.Tag <> 1 then
+      values := values + '1';
+  if not chkVerifyNote.Checked then
+    if chkVerifyNote.Tag <> 0 then
+      values := values + '0';
+  rpcSetOther(values);
+  with chkAskSubject do
+  if (Checked and (Tag = 0)) or (not Checked and (Tag = 1)) then
+    rpcSetSubject(Checked);
+  with cboCosigner do
+    if Tag <> ItemIEN then
+      rpcSetDefaultCosigner(ItemIEN);
+  ResetTIUPreferences;
+  ResetDCSummPreferences;
+end;
+
+procedure TfrmOptionsNotes.txtAutoSaveChange(Sender: TObject);
+var
+  maxvalue: integer;
+begin
+  maxvalue := spnAutoSave.Max;
+  with txtAutoSave do
+  begin
+    if strtointdef(Text, maxvalue) > maxvalue then
+    begin
+      beep;
+      InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
+      if strtointdef(Text, 0) > maxvalue then
+        Text := inttostr(maxvalue);
+    end;
+  end;
+  spnAutoSaveClick(self, btNext);
+end;
+
+procedure TfrmOptionsNotes.txtAutoSaveKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if not (Key in ['0'..'9', #8]) then
+  begin
+    Key := #0;
+    beep;
+  end;  
+end;
+
+procedure TfrmOptionsNotes.txtAutoSaveExit(Sender: TObject);
+begin
+  with txtAutoSave do
+  begin
+    if Text = '' then
+    begin
+      Text := '0';
+      spnAutoSaveClick(self, btNext);
+    end
+    else if (Copy(Text, 1, 1) = '0') and (length(Text) > 1) then
+    begin
+      Text := inttostr(strtointdef(Text, 0));
+      spnAutoSaveClick(self, btNext);
+    end;
+  end;
+end;
+
+procedure TfrmOptionsNotes.spnAutoSaveClick(Sender: TObject;
+  Button: TUDBtnType);
+begin
+  txtAutoSave.SetFocus;
+  txtAutoSave.Tag := strtointdef(txtAutoSave.Text, 0);
+end;
+
+procedure TfrmOptionsNotes.cboCosignerNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboCosigner.ForDataUse(rpcGetCosigners(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsNotes.cboCosignerExit(Sender: TObject);
+begin
+  with cboCosigner do
+  if (Text = '') or (ItemIndex = -1) then
+  begin
+    ItemIndex := 0;
+    Text := DisplayText[0];
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsOther.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsOther.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsOther.dfm	(revision 1676)
@@ -0,0 +1,377 @@
+inherited frmOptionsOther: TfrmOptionsOther
+  Left = 341
+  Top = 96
+  Hint = 'Use system default settings'
+  HelpContext = 9110
+  Align = alCustom
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Other Parameters'
+  ClientHeight = 436
+  ClientWidth = 329
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  ShowHint = True
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMedsTab: TLabel [0]
+    Left = 7
+    Top = 121
+    Width = 135
+    Height = 26
+    Hint = 'Set date ranges for displaying medication orders on Meds tab.'
+    Caption = 'Set date range for Meds tab display:'
+    ParentShowHint = False
+    ShowHint = True
+    WordWrap = True
+  end
+  object lblTab: TLabel [1]
+    Left = 8
+    Top = 27
+    Width = 134
+    Height = 13
+    Caption = 'Initial tab when CPRS starts:'
+  end
+  object Bevel1: TBevel [2]
+    Left = 1
+    Top = 110
+    Width = 327
+    Height = 2
+  end
+  object lblEncAppts: TLabel [3]
+    Left = 8
+    Top = 269
+    Width = 207
+    Height = 13
+    Hint = 'Set date range for Encounter Appointments.'
+    Caption = 'Set date range for Encounter Appointments:'
+    ParentShowHint = False
+    ShowHint = True
+    WordWrap = True
+  end
+  object Bevel2: TBevel [4]
+    Left = 1
+    Top = 256
+    Width = 327
+    Height = 2
+  end
+  object pnlBottom: TPanel [5]
+    Left = 0
+    Top = 403
+    Width = 329
+    Height = 33
+    HelpContext = 9110
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 7
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 329
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 167
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 248
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object stStart: TStaticText [6]
+    Left = 7
+    Top = 151
+    Width = 55
+    Height = 17
+    Caption = 'Start Date:'
+    TabOrder = 1
+  end
+  object stStop: TStaticText [7]
+    Left = 7
+    Top = 207
+    Width = 55
+    Height = 17
+    Caption = 'Stop Date:'
+    TabOrder = 5
+  end
+  object dtStart: TORDateBox [8]
+    Left = 7
+    Top = 170
+    Width = 187
+    Height = 21
+    TabOrder = 4
+    OnChange = dtStartChange
+    OnExit = dtStartExit
+    DateOnly = True
+    RequireTime = False
+    Caption = 'Start Date'
+  end
+  object dtStop: TORDateBox [9]
+    Left = 8
+    Top = 225
+    Width = 186
+    Height = 21
+    TabOrder = 6
+    OnExit = dtStopExit
+    DateOnly = True
+    RequireTime = False
+    Caption = 'Stop Date'
+  end
+  object lblTabDefault: TStaticText [10]
+    Left = 8
+    Top = 6
+    Width = 52
+    Height = 17
+    Caption = 'Chart tabs'
+    TabOrder = 0
+  end
+  object cboTab: TORComboBox [11]
+    Left = 8
+    Top = 51
+    Width = 217
+    Height = 21
+    HelpContext = 9111
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Initial tab when CPRS starts:'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 2
+    TabStop = True
+    CharsNeedMatch = 1
+  end
+  object chkLastTab: TCheckBox [12]
+    Left = 8
+    Top = 82
+    Width = 312
+    Height = 21
+    HelpContext = 9112
+    Caption = 'Use last selected tab on patient change'
+    TabOrder = 3
+  end
+  object stStartEncAppts: TStaticText [13]
+    Left = 9
+    Top = 296
+    Width = 55
+    Height = 17
+    Caption = 'Start Date:'
+    TabOrder = 13
+  end
+  object txtTodayMinus: TStaticText [14]
+    Left = 38
+    Top = 321
+    Width = 64
+    Height = 17
+    Alignment = taRightJustify
+    Caption = 'Today minus'
+    Color = clBtnFace
+    ParentColor = False
+    TabOrder = 14
+  end
+  object txtEncStart: TCaptionEdit [15]
+    Left = 110
+    Top = 318
+    Width = 50
+    Height = 21
+    HelpContext = 9015
+    MaxLength = 12
+    TabOrder = 8
+    Text = '0'
+    OnChange = txtEncStartChange
+    OnExit = txtEncStartExit
+    Caption = 'Stop'
+  end
+  object txtDaysMinus: TStaticText [16]
+    Left = 178
+    Top = 322
+    Width = 26
+    Height = 17
+    Caption = 'days'
+    Color = clBtnFace
+    ParentColor = False
+    TabOrder = 16
+  end
+  object spnEncStart: TUpDown [17]
+    Tag = 30
+    Left = 160
+    Top = 318
+    Width = 15
+    Height = 21
+    HelpContext = 9015
+    Associate = txtEncStart
+    Min = -999
+    Max = 999
+    TabOrder = 17
+    Thousands = False
+  end
+  object txtDaysPlus: TStaticText [18]
+    Left = 180
+    Top = 374
+    Width = 26
+    Height = 17
+    Caption = 'days'
+    Color = clBtnFace
+    ParentColor = False
+    TabOrder = 18
+  end
+  object spnEncStop: TUpDown [19]
+    Tag = 30
+    Left = 162
+    Top = 369
+    Width = 15
+    Height = 21
+    HelpContext = 9015
+    Associate = txtEncStop
+    Min = -999
+    Max = 999
+    TabOrder = 19
+    Thousands = False
+  end
+  object txtEncStop: TCaptionEdit [20]
+    Left = 112
+    Top = 369
+    Width = 50
+    Height = 21
+    HelpContext = 9015
+    MaxLength = 12
+    TabOrder = 10
+    Text = '0'
+    OnChange = txtEncStopChange
+    OnExit = txtEncStopExit
+    Caption = 'Stop'
+  end
+  object txtTodayPlus: TStaticText [21]
+    Left = 46
+    Top = 372
+    Width = 56
+    Height = 17
+    Alignment = taRightJustify
+    Caption = 'Today plus'
+    Color = clBtnFace
+    ParentColor = False
+    TabOrder = 21
+  end
+  object stStopEncAppts: TStaticText [22]
+    Left = 10
+    Top = 348
+    Width = 55
+    Height = 17
+    Caption = 'Stop Date:'
+    TabOrder = 22
+  end
+  object btnEncDefaults: TButton [23]
+    Left = 248
+    Top = 287
+    Width = 75
+    Height = 22
+    HelpContext = 9011
+    Caption = 'Use Defaults'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 12
+    OnClick = btnEncDefaultsClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = stStart'
+        'Status = stsDefault')
+      (
+        'Component = stStop'
+        'Status = stsDefault')
+      (
+        'Component = dtStart'
+        'Status = stsDefault')
+      (
+        'Component = dtStop'
+        'Status = stsDefault')
+      (
+        'Component = lblTabDefault'
+        'Status = stsDefault')
+      (
+        'Component = cboTab'
+        'Status = stsDefault')
+      (
+        'Component = chkLastTab'
+        'Status = stsDefault')
+      (
+        'Component = stStartEncAppts'
+        'Status = stsDefault')
+      (
+        'Component = txtTodayMinus'
+        'Status = stsDefault')
+      (
+        'Component = txtEncStart'
+        'Status = stsDefault')
+      (
+        'Component = txtDaysMinus'
+        'Status = stsDefault')
+      (
+        'Component = spnEncStart'
+        'Status = stsDefault')
+      (
+        'Component = txtDaysPlus'
+        'Status = stsDefault')
+      (
+        'Component = spnEncStop'
+        'Status = stsDefault')
+      (
+        'Component = txtEncStop'
+        'Status = stsDefault')
+      (
+        'Component = txtTodayPlus'
+        'Status = stsDefault')
+      (
+        'Component = stStopEncAppts'
+        'Status = stsDefault')
+      (
+        'Component = btnEncDefaults'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsOther'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsOther.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsOther.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsOther.pas	(revision 1676)
@@ -0,0 +1,273 @@
+unit fOptionsOther;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ComCtrls, ORCtrls, ORFn, rOrders, uCore, ORDtTm, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsOther = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    bvlBottom: TBevel;
+    stStart: TStaticText;
+    stStop: TStaticText;
+    dtStart: TORDateBox;
+    dtStop: TORDateBox;
+    lblMedsTab: TLabel;
+    lblTabDefault: TStaticText;
+    lblTab: TLabel;
+    cboTab: TORComboBox;
+    chkLastTab: TCheckBox;
+    Bevel1: TBevel;
+    lblEncAppts: TLabel;
+    stStartEncAppts: TStaticText;
+    txtTodayMinus: TStaticText;
+    txtEncStart: TCaptionEdit;
+    txtDaysMinus: TStaticText;
+    spnEncStart: TUpDown;
+    txtDaysPlus: TStaticText;
+    spnEncStop: TUpDown;
+    txtEncStop: TCaptionEdit;
+    txtTodayPlus: TStaticText;
+    stStopEncAppts: TStaticText;
+    Bevel2: TBevel;
+    btnEncDefaults: TButton;
+    procedure FormShow(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure dtStartExit(Sender: TObject);
+    procedure dtStopExit(Sender: TObject);
+    procedure dtStartChange(Sender: TObject);
+    procedure txtEncStartChange(Sender: TObject);
+    procedure txtEncStopChange(Sender: TObject);
+    procedure txtEncStartExit(Sender: TObject);
+    procedure txtEncStopExit(Sender: TObject);
+    procedure btnEncDefaultsClick(Sender: TObject);
+  private
+    { Private declarations }
+    FstartDt: TFMDateTime;
+    FstopDt: TFMDateTime;
+    FEncStartDays, FEncStopDays, FEncDefStartDays, FEncDefStopDays: integer;
+    //FDefaultEvent: string;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsOther: TfrmOptionsOther;
+
+const
+  ENC_MAX_LIMIT = 999;
+
+procedure DialogOptionsOther(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rOptions, uOptions, rCore, rSurgery, uConst, fMeds, VAUtils;
+
+procedure DialogOptionsOther(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsOther: TfrmOptionsOther;
+begin
+  frmOptionsOther := TfrmOptionsOther.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsOther do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsOther);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsOther.Release;
+  end;
+end;
+
+procedure TfrmOptionsOther.FormShow(Sender: TObject);
+// displays defaults
+// opening tab^use last tab^autosave seconds^verify note title
+var
+  last: integer;
+  values, tab: string;
+begin
+  FastAssign(rpcGetOtherTabs, cboTab.Items);
+  if (cboTab.Items.IndexOf('Surgery') > -1) and (not ShowSurgeryTab) then
+    cboTab.Items.Delete(cboTab.Items.IndexOf('Surgery'));
+  values := rpcGetOther;
+  tab := Piece(values, '^', 1);
+  last := strtointdef(Piece(values, '^', 2), 0);
+  cboTab.SelectByID(tab);
+  cboTab.Tag := strtointdef(tab, -1);
+  chkLastTab.Checked := last = 1;
+  chkLastTab.Tag := last;
+  cboTab.SetFocus;
+  rpcGetRangeForMeds(FstartDt, FstopDt);
+  if FstartDt > 1 then
+    dtStart.Text := FormatFMDateTime('mmm d, yyyy',FstartDt);
+  if FstopDt > 1 then
+    dtStop.Text  := FormatFMDateTime('mmm d, yyyy', FstopDt);
+  rpcGetRangeForEncs(FEncDefStartDays, FEncDefStopDays, True); // True gets params settings above User/Service level.
+  if FEncDefStartDays < 1 then
+    FEncDefStartDays := 0;
+  if FEncDefStopDays < 1 then
+    FEncDefStopDays := 0;
+  rpcGetRangeForEncs(FEncStartDays, FEncStopDays, False);      // False gets User/Service params.
+  if ((FEncStartDays < 0) and (FEncStartDays <> 0)) then
+    FEncStartDays := FEncDefStartDays;
+  txtEncStart.Text := IntToStr(FEncStartDays);
+  if ((FEncStopDays < 0) and (FEncStopDays <> 0)) then
+    FEncStopDays := FEncDefStopDays;
+  txtEncStop.Text := IntToStr(FEncStopDays);
+end;
+
+procedure TfrmOptionsOther.btnOKClick(Sender: TObject);
+// opening tab^use last tab^autosave seconds^verify note title
+var
+  values, theVal: string;
+begin
+  values := '';
+  if cboTab.ItemIEN <> cboTab.Tag then
+    values := values + cboTab.ItemID;
+  values := values + '^';
+  if chkLastTab.Checked then
+    if chkLastTab.Tag <> 1 then
+      values := values + '1';
+  if not chkLastTab.Checked then
+    if chkLastTab.Tag <> 0 then
+      values := values + '0';
+  values := values + '^^';
+  rpcSetOther(values);
+  if (dtStop.FMDateTime > 0) and (dtStart.FMDateTime > 0) then
+  begin
+    if dtStop.FMDateTime < dtStart.FMDateTime then
+    begin
+      ShowMsg('The stop time can not prior to the start time.');
+      dtStop.FMDateTime := FMToday;
+      dtStop.SetFocus;
+      Exit;
+    end;
+    theVal := dtStart.RelativeTime + ';' + dtStop.RelativeTime;
+    rpcPutRangeForMeds(theVal);
+  end;
+  if (dtStart.Text = '') and (dtStop.Text = '') then
+    rpcPutRangeForMeds('');
+  rpcPutRangeForEncs(txtEncStart.Text, txtEncStop.Text);
+  if frmMeds <> nil then
+    frmMeds.RefreshMedLists;
+end;
+
+procedure TfrmOptionsOther.FormCreate(Sender: TObject);
+begin
+  FStartDT  := 0;
+  FStopDT   := 0;
+end;
+
+procedure TfrmOptionsOther.dtStartExit(Sender: TObject);
+begin
+  if dtStart.FMDateTime > FMToday then
+  begin
+    ShowMsg('Start time can not greater than today.');
+    dtStart.FMDateTime := FMToday;
+    dtStart.SetFocus;
+    Exit;
+  end;
+end;
+
+procedure TfrmOptionsOther.dtStopExit(Sender: TObject);
+begin
+  if (dtStop.FMDateTime > 0) and (dtStart.FMDateTime > 0) then
+    if (dtStop.FMDateTime < dtStart.FMDateTime) then
+    begin
+      ShowMsg('Stop time can not prior to start time');
+      dtStop.FMDateTime := FMToday;
+      dtStop.SetFocus;
+      Exit;
+    end;
+end;
+
+procedure TfrmOptionsOther.dtStartChange(Sender: TObject);
+begin
+  if (dtStart.FMDateTime > FMToday) then
+  begin
+    ShowMsg('Start time can not greater than today.');
+    dtStart.FMDateTime := FMToday;
+    dtStart.SetFocus;
+    Exit;
+  end;
+end;
+
+procedure TfrmOptionsOther.txtEncStartChange(Sender: TObject);
+begin
+with txtEncStart do
+  begin
+    if Text = '' then
+      Exit;
+    if Text = ' ' then
+      Text := '0';
+    if StrToInt(Text) < 0 then
+      Text := '0';
+    if StrToIntDef(Text, ENC_MAX_LIMIT) > ENC_MAX_LIMIT then
+      begin
+        Text := IntToStr(ENC_MAX_LIMIT);
+        Beep;
+        InfoBox('Number must be < ' + IntToStr(ENC_MAX_LIMIT), 'Warning', MB_OK or MB_ICONWARNING);
+      end;
+  end;
+end;
+
+procedure TfrmOptionsOther.txtEncStopChange(Sender: TObject);
+begin
+with txtEncStop do
+  begin
+    if Text = '' then
+      Exit;
+    if Text = ' ' then
+      Text := '0';
+    if StrToInt(Text) < 0 then
+      Text := '0';
+    if StrToIntDef(Text, ENC_MAX_LIMIT) > ENC_MAX_LIMIT then
+      begin
+        Text := IntToStr(ENC_MAX_LIMIT);
+        Beep;
+        InfoBox('Number must be < ' + IntToStr(ENC_MAX_LIMIT), 'Warning', MB_OK or MB_ICONWARNING);
+      end;
+  end;
+end;
+
+procedure TfrmOptionsOther.txtEncStartExit(Sender: TObject);
+begin
+with txtEncStart do
+  if Text = '' then
+    Text := '0';
+end;
+
+procedure TfrmOptionsOther.txtEncStopExit(Sender: TObject);
+begin
+with txtEncStart do
+  if Text = '' then
+    Text := '0';
+end;
+
+procedure TfrmOptionsOther.btnEncDefaultsClick(Sender: TObject);
+begin
+txtEncStart.Text := IntToStr(FEncDefStartDays);
+txtEncStop.Text := IntToStr(FEncDefStopDays);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPatientSelection.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPatientSelection.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPatientSelection.dfm	(revision 1676)
@@ -0,0 +1,704 @@
+inherited frmOptionsPatientSelection: TfrmOptionsPatientSelection
+  Left = 345
+  Top = 133
+  HelpContext = 9060
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Patient Selection Defaults'
+  ClientHeight = 413
+  ClientWidth = 414
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblClinicDays: TLabel [0]
+    Left = 179
+    Top = 162
+    Width = 101
+    Height = 13
+    Caption = 'Clinic for day of week'
+  end
+  object lblMonday: TLabel [1]
+    Left = 179
+    Top = 184
+    Width = 41
+    Height = 13
+    Caption = 'Monday:'
+  end
+  object lblTuesday: TLabel [2]
+    Left = 179
+    Top = 213
+    Width = 44
+    Height = 13
+    Caption = 'Tuesday:'
+  end
+  object lblWednesday: TLabel [3]
+    Left = 179
+    Top = 241
+    Width = 60
+    Height = 13
+    Caption = 'Wednesday:'
+  end
+  object lblThursday: TLabel [4]
+    Left = 179
+    Top = 270
+    Width = 47
+    Height = 13
+    Caption = 'Thursday:'
+  end
+  object lblFriday: TLabel [5]
+    Left = 179
+    Top = 298
+    Width = 31
+    Height = 13
+    Caption = 'Friday:'
+  end
+  object lblSaturday: TLabel [6]
+    Left = 179
+    Top = 327
+    Width = 45
+    Height = 13
+    Caption = 'Saturday:'
+  end
+  object lblSunday: TLabel [7]
+    Left = 179
+    Top = 355
+    Width = 39
+    Height = 13
+    Caption = 'Sunday:'
+  end
+  object lblVisitStart: TLabel [8]
+    Left = 20
+    Top = 321
+    Width = 25
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Start:'
+  end
+  object lblVisitStop: TLabel [9]
+    Left = 20
+    Top = 352
+    Width = 25
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Stop:'
+  end
+  object lbWard: TLabel [10]
+    Left = 179
+    Top = 136
+    Width = 29
+    Height = 13
+    Caption = 'Ward:'
+  end
+  object lblTeam: TLabel [11]
+    Left = 179
+    Top = 107
+    Width = 51
+    Height = 13
+    Caption = 'Team/List:'
+  end
+  object lblTreating: TLabel [12]
+    Left = 179
+    Top = 77
+    Width = 88
+    Height = 13
+    Caption = 'Treating Specialty:'
+  end
+  object lblProvider: TLabel [13]
+    Left = 179
+    Top = 50
+    Width = 79
+    Height = 13
+    Caption = 'Primary Provider:'
+  end
+  object lblVisitDateRange: TMemo [14]
+    Left = 20
+    Top = 255
+    Width = 133
+    Height = 61
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Display patients that have '
+      'clinic appointments within '
+      'this date range.')
+    ReadOnly = True
+    TabOrder = 18
+  end
+  object lblInfo: TMemo [15]
+    Left = 8
+    Top = 6
+    Width = 393
+    Height = 27
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    Lines.Strings = (
+      
+        'The values on the right will be defaults for selecting patients ' +
+        'depending on the list '
+      
+        'source selected. Combination uses the criteria defined using Sou' +
+        'rce Combinations.')
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 19
+  end
+  object pnlBottom: TPanel [16]
+    Left = 0
+    Top = 380
+    Width = 414
+    Height = 33
+    HelpContext = 9060
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 17
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 414
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 251
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 331
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object cboProvider: TORComboBox [17]
+    Left = 285
+    Top = 48
+    Width = 121
+    Height = 21
+    HelpContext = 9063
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Primary Provider'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 6
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboProviderNeedData
+    CharsNeedMatch = 1
+  end
+  object cboTreating: TORComboBox [18]
+    Left = 285
+    Top = 75
+    Width = 121
+    Height = 21
+    HelpContext = 9064
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Treating Specialty'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 7
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    CharsNeedMatch = 1
+  end
+  object cboTeam: TORComboBox [19]
+    Left = 285
+    Top = 104
+    Width = 121
+    Height = 21
+    HelpContext = 9065
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Team/List'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 8
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    CharsNeedMatch = 1
+  end
+  object cboWard: TORComboBox [20]
+    Left = 285
+    Top = 132
+    Width = 121
+    Height = 21
+    HelpContext = 9066
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Ward'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 9
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    CharsNeedMatch = 1
+  end
+  object cboMonday: TORComboBox [21]
+    Left = 285
+    Top = 181
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Monday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 10
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboMondayNeedData
+    CharsNeedMatch = 1
+  end
+  object cboTuesday: TORComboBox [22]
+    Left = 285
+    Top = 210
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Tuesday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 11
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboTuesdayNeedData
+    CharsNeedMatch = 1
+  end
+  object cboWednesday: TORComboBox [23]
+    Left = 285
+    Top = 238
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Wednesday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 12
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboWednesdayNeedData
+    CharsNeedMatch = 1
+  end
+  object cboThursday: TORComboBox [24]
+    Left = 285
+    Top = 267
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Thursday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 13
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboThursdayNeedData
+    CharsNeedMatch = 1
+  end
+  object cboFriday: TORComboBox [25]
+    Left = 285
+    Top = 295
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Friday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 14
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboFridayNeedData
+    CharsNeedMatch = 1
+  end
+  object cboSaturday: TORComboBox [26]
+    Left = 285
+    Top = 324
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Saturday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 15
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboSaturdayNeedData
+    CharsNeedMatch = 1
+  end
+  object cboSunday: TORComboBox [27]
+    Left = 285
+    Top = 352
+    Width = 121
+    Height = 21
+    HelpContext = 9067
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Sunday'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 16
+    OnExit = cboProviderExit
+    OnKeyUp = cboProviderKeyUp
+    OnNeedData = cboSundayNeedData
+    CharsNeedMatch = 1
+  end
+  object txtVisitStart: TCaptionEdit [28]
+    Tag = -180
+    Left = 49
+    Top = 319
+    Width = 79
+    Height = 21
+    HelpContext = 9068
+    TabOrder = 2
+    Text = '0'
+    OnExit = txtVisitStartExit
+    OnKeyPress = txtVisitStartKeyPress
+    OnKeyUp = txtVisitStartKeyUp
+    Caption = 'Start'
+  end
+  object txtVisitStop: TCaptionEdit [29]
+    Tag = 30
+    Left = 48
+    Top = 348
+    Width = 79
+    Height = 21
+    HelpContext = 9069
+    TabOrder = 4
+    Text = '0'
+    OnExit = txtVisitStopExit
+    OnKeyPress = txtVisitStopKeyPress
+    OnKeyUp = txtVisitStopKeyUp
+    Caption = 'Stop'
+  end
+  object spnVisitStart: TUpDown [30]
+    Tag = -180
+    Left = 128
+    Top = 319
+    Width = 16
+    Height = 21
+    HelpContext = 9068
+    Associate = txtVisitStart
+    Min = -999
+    Max = 999
+    TabOrder = 3
+    Thousands = False
+    OnClick = spnVisitStartClick
+  end
+  object spnVisitStop: TUpDown [31]
+    Tag = 30
+    Left = 127
+    Top = 348
+    Width = 16
+    Height = 21
+    HelpContext = 9069
+    Associate = txtVisitStop
+    Min = -999
+    Max = 999
+    TabOrder = 5
+    Thousands = False
+    OnClick = spnVisitStopClick
+  end
+  object radListSource: TRadioGroup [32]
+    Left = 16
+    Top = 38
+    Width = 145
+    Height = 105
+    HelpContext = 9061
+    Caption = 'List Source '
+    ItemIndex = 0
+    Items.Strings = (
+      'Primary &Provider'
+      'Treating &Specialty'
+      'Team/&List'
+      '&Ward'
+      '&Clinic'
+      'C&ombination')
+    TabOrder = 0
+    OnClick = radListSourceClick
+  end
+  object grpSortOrder: TGroupBox [33]
+    Left = 16
+    Top = 152
+    Width = 145
+    Height = 94
+    HelpContext = 9062
+    Caption = 'Sort Order '
+    TabOrder = 1
+    object radAlphabetical: TRadioButton
+      Left = 8
+      Top = 16
+      Width = 113
+      Height = 17
+      HelpContext = 9062
+      Caption = '&Alphabetical'
+      TabOrder = 0
+    end
+    object radRoomBed: TRadioButton
+      Left = 8
+      Top = 31
+      Width = 113
+      Height = 17
+      HelpContext = 9062
+      Caption = '&Room/Bed'
+      TabOrder = 1
+    end
+    object radAppointmentDate: TRadioButton
+      Left = 8
+      Top = 46
+      Width = 113
+      Height = 17
+      HelpContext = 9062
+      Caption = 'Appointment &Date'
+      TabOrder = 2
+    end
+    object radTerminalDigit: TRadioButton
+      Left = 8
+      Top = 60
+      Width = 113
+      Height = 17
+      HelpContext = 9062
+      Caption = '&Terminal Digit'
+      TabOrder = 3
+    end
+    object radSource: TRadioButton
+      Left = 8
+      Top = 75
+      Width = 113
+      Height = 17
+      HelpContext = 9062
+      Caption = 'So&urce'
+      TabOrder = 4
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblVisitDateRange'
+        'Status = stsDefault')
+      (
+        'Component = lblInfo'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboProvider'
+        'Status = stsDefault')
+      (
+        'Component = cboTreating'
+        'Status = stsDefault')
+      (
+        'Component = cboTeam'
+        'Status = stsDefault')
+      (
+        'Component = cboWard'
+        'Status = stsDefault')
+      (
+        'Component = cboMonday'
+        'Status = stsDefault')
+      (
+        'Component = cboTuesday'
+        'Status = stsDefault')
+      (
+        'Component = cboWednesday'
+        'Status = stsDefault')
+      (
+        'Component = cboThursday'
+        'Status = stsDefault')
+      (
+        'Component = cboFriday'
+        'Status = stsDefault')
+      (
+        'Component = cboSaturday'
+        'Status = stsDefault')
+      (
+        'Component = cboSunday'
+        'Status = stsDefault')
+      (
+        'Component = txtVisitStart'
+        'Status = stsDefault')
+      (
+        'Component = txtVisitStop'
+        'Status = stsDefault')
+      (
+        'Component = spnVisitStart'
+        'Status = stsDefault')
+      (
+        'Component = spnVisitStop'
+        'Status = stsDefault')
+      (
+        'Component = radListSource'
+        'Status = stsDefault')
+      (
+        'Component = grpSortOrder'
+        'Status = stsDefault')
+      (
+        'Component = radAlphabetical'
+        'Status = stsDefault')
+      (
+        'Component = radRoomBed'
+        'Status = stsDefault')
+      (
+        'Component = radAppointmentDate'
+        'Status = stsDefault')
+      (
+        'Component = radTerminalDigit'
+        'Status = stsDefault')
+      (
+        'Component = radSource'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsPatientSelection'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPatientSelection.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPatientSelection.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPatientSelection.pas	(revision 1676)
@@ -0,0 +1,502 @@
+unit fOptionsPatientSelection;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, OrFn, ComCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsPatientSelection = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    cboProvider: TORComboBox;
+    cboTreating: TORComboBox;
+    cboTeam: TORComboBox;
+    cboWard: TORComboBox;
+    cboMonday: TORComboBox;
+    cboTuesday: TORComboBox;
+    cboWednesday: TORComboBox;
+    cboThursday: TORComboBox;
+    cboFriday: TORComboBox;
+    cboSaturday: TORComboBox;
+    cboSunday: TORComboBox;
+    txtVisitStart: TCaptionEdit;
+    txtVisitStop: TCaptionEdit;
+    spnVisitStart: TUpDown;
+    spnVisitStop: TUpDown;
+    lblClinicDays: TLabel;
+    lblMonday: TLabel;
+    lblTuesday: TLabel;
+    lblWednesday: TLabel;
+    lblThursday: TLabel;
+    lblFriday: TLabel;
+    lblSaturday: TLabel;
+    lblSunday: TLabel;
+    lblVisitStart: TLabel;
+    lblVisitStop: TLabel;
+    lblVisitDateRange: TMemo;
+    lblInfo: TMemo;
+    lbWard: TLabel;
+    lblTeam: TLabel;
+    lblTreating: TLabel;
+    lblProvider: TLabel;
+    radListSource: TRadioGroup;
+    grpSortOrder: TGroupBox;
+    radAlphabetical: TRadioButton;
+    radRoomBed: TRadioButton;
+    radAppointmentDate: TRadioButton;
+    radTerminalDigit: TRadioButton;
+    radSource: TRadioButton;
+    bvlBottom: TBevel;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure spnVisitStartClick(Sender: TObject; Button: TUDBtnType);
+    procedure spnVisitStopClick(Sender: TObject; Button: TUDBtnType);
+    procedure btnOKClick(Sender: TObject);
+    procedure txtVisitStartExit(Sender: TObject);
+    procedure txtVisitStopExit(Sender: TObject);
+    procedure txtVisitStartKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtVisitStopKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboProviderExit(Sender: TObject);
+    procedure radListSourceClick(Sender: TObject);
+    procedure cboMondayNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboTuesdayNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboWednesdayNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure cboThursdayNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboFridayNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboSaturdayNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboSundayNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboProviderNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure txtVisitStartKeyPress(Sender: TObject; var Key: Char);
+    procedure txtVisitStopKeyPress(Sender: TObject; var Key: Char);
+    procedure cboProviderKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+    FStartEntered: boolean;
+    FStopEntered: boolean;
+    FProviderSpecial: boolean;   // used to avoid duplicate action on cboProviderKeyUp
+  public
+    { Public declarations }
+    procedure NextControl(Key: Char);
+  end;
+
+var
+  frmOptionsPatientSelection: TfrmOptionsPatientSelection;
+
+procedure DialogOptionsPatientSelection(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, uOptions, rCore;
+
+{$R *.DFM}
+
+procedure DialogOptionsPatientSelection(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsPatientSelection: TfrmOptionsPatientSelection;
+begin
+  frmOptionsPatientSelection := TfrmOptionsPatientSelection.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsPatientSelection do
+    begin
+      FProviderSpecial := false;
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsPatientSelection);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsPatientSelection.Release;
+  end;
+end;
+
+procedure TfrmOptionsPatientSelection.FormCreate(Sender: TObject);
+begin
+  FStartEntered := false;
+  FStopEntered := false;
+  cboMonday.InitLongList('');
+  cboTuesday.InitLongList('');
+  cboWednesday.InitLongList('');
+  cboThursday.InitLongList('');
+  cboFriday.InitLongList('');
+  cboSaturday.InitLongList('');
+  cboSunday.InitLongList('');
+  cboProvider.InitLongList('');
+  ListSpecialtyAll(cboTreating.Items);
+  ListTeamAll(cboTeam.Items);
+  ListWardAll(cboWard.Items);
+end;
+
+procedure TfrmOptionsPatientSelection.FormShow(Sender: TObject);
+var
+  visitstart, visitstop: integer;
+  mon, tues, wed, thurs, fri, sat, sun: integer;
+  visitstartdef, visitstopdef: integer;
+  defprovider, deftreating, deflist, defward: integer;
+begin
+  rpcGetClinicUserDays(visitstart, visitstop);
+  visitstartdef := visitstart;
+  visitstopdef := visitstop;
+  txtVisitStart.Tag := visitstart - 1;
+  txtVisitStop.Tag := visitstop - 1;
+  spnVisitStart.Tag := visitstartdef;
+  spnVisitStop.Tag := visitstopdef;
+  spnVisitStartClick(self, btNext);
+  spnVisitStopClick(self, btNext);
+
+  rpcGetClinicDefaults(mon, tues, wed, thurs, fri, sat, sun);
+  cboMonday.SelectByIEN(mon);
+  if cboMonday.Text = '' then
+    cboMonday.SetExactByIEN(mon, ExternalName(mon, 44));
+  cboTuesday.SelectByIEN(tues);
+  if cboTuesday.Text = '' then
+    cboTuesday.SetExactByIEN(tues, ExternalName(tues, 44));
+  cboWednesday.SelectByIEN(wed);
+  if cboWednesday.Text = '' then
+    cboWednesday.SetExactByIEN(wed, ExternalName(wed, 44));
+  cboThursday.SelectByIEN(thurs);
+  if cboThursday.Text = '' then
+    cboThursday.SetExactByIEN(thurs, ExternalName(thurs, 44));
+  cboFriday.SelectByIEN(fri);
+  if cboFriday.Text = '' then
+    cboFriday.SetExactByIEN(fri, ExternalName(fri, 44));
+  cboSaturday.SelectByIEN(sat);
+  if cboSaturday.Text = '' then
+    cboSaturday.SetExactByIEN(sat, ExternalName(sat, 44));
+  cboSunday.SelectByIEN(sun);
+  if cboSunday.Text = '' then
+    cboSunday.SetExactByIEN(sun, ExternalName(sun, 44));
+
+  with radListSource do
+    case DfltPtListSrc of
+      'P': ItemIndex := 0;
+      'S': ItemIndex := 1;
+      'T': ItemIndex := 2;
+      'W': ItemIndex := 3;
+      'C': ItemIndex := 4;
+      'M': ItemIndex := 5;
+    end;
+  radListSourceClick(self);
+
+  case rpcGetListOrder of
+    'A': radAlphabetical.Checked := true;
+    'R':
+      begin
+        if radRoomBed.Enabled then
+          radRoomBed.Checked := true
+        else
+          radAlphabetical.Checked := True;
+      end;
+    'P': 
+      begin
+        if radAppointmentDate.Enabled then
+          radAppointmentDate.Checked := true
+        else
+          radAlphabetical.Checked := True;
+      end;
+    'T': radTerminalDigit.Checked := true;
+    'S': radSource.Checked := true;
+    else
+       radAlphabetical.Checked := true;
+  end;
+
+  rpcGetListSourceDefaults(defprovider, deftreating, deflist, defward);
+  cboProvider.SelectByIEN(defprovider);
+  cboTreating.SelectByIEN(deftreating);
+  cboTeam.SelectByIEN(deflist);
+  cboWard.SelectByIEN(defward);
+
+  radListSource.SetFocus;
+end;
+
+procedure TfrmOptionsPatientSelection.spnVisitStartClick(Sender: TObject;
+  Button: TUDBtnType);
+var
+  tagnum: integer;
+begin
+  with txtVisitStart do
+  begin
+    if FStartEntered then
+    begin
+      if Hint = '' then Hint := 'T';
+      tagnum := RelativeDate(Hint);
+      if tagnum = INVALID_DAYS then
+      begin
+        Text := Hint;
+        beep;
+        InfoBox('Start Date entry was invalid', 'Warning', MB_OK or MB_ICONWARNING);
+        ShowDisplay(txtVisitStart);
+        FStartEntered := false;
+        exit;
+      end
+      else
+      begin
+        DateLimits(SELECTION_LIMIT, tagnum);
+        if tagnum <> INVALID_DAYS then
+          Tag := tagnum;
+      end;
+    end;
+    SetFocus;
+    if Button = btNext then tagnum := Tag + 1
+    else tagnum := Tag - 1;
+    Text := Hint;
+    DateLimits(SELECTION_LIMIT, tagnum);
+    if tagnum <> INVALID_DAYS then
+      Tag := tagnum;
+    ShowDisplay(txtVisitStart);
+  end;
+  FStartEntered := false;
+end;
+
+procedure TfrmOptionsPatientSelection.spnVisitStopClick(Sender: TObject;
+  Button: TUDBtnType);
+var
+  tagnum: integer;
+begin
+  with txtVisitStop do
+  begin
+    if FStopEntered then
+    begin
+      if Hint = '' then Hint := 'T';
+      tagnum := RelativeDate(Hint);
+      if tagnum = INVALID_DAYS then
+      begin
+        Text := Hint;
+        beep;
+        InfoBox('Stop Date entry was invalid', 'Warning', MB_OK or MB_ICONWARNING);
+        ShowDisplay(txtVisitStop);
+        FStopEntered := false;
+        exit;
+      end
+      else
+      begin
+        DateLimits(SELECTION_LIMIT, tagnum);
+        Tag := tagnum;
+      end;
+    end;
+    SetFocus;
+    if Button = btNext then tagnum := Tag + 1
+    else tagnum := Tag - 1;
+    Text := Hint;
+    DateLimits(SELECTION_LIMIT, tagnum);
+    Tag := tagnum;
+    ShowDisplay(txtVisitStop);
+  end;
+  FStopEntered := false;
+end;
+
+procedure TfrmOptionsPatientSelection.btnOKClick(Sender: TObject);
+var
+  StartDays, StopDays, mon, tues, wed, thurs, fri, sat, sun: integer;
+  PLSource, PLSort: Char;
+  prov, spec, team, ward: integer;
+begin
+  StartDays := txtVisitStart.Tag;
+  StopDays := txtVisitStop.Tag;
+  mon := cboMonday.ItemIEN;
+  tues := cboTuesday.ItemIEN;
+  wed := cboWednesday.ItemIEN;
+  thurs := cboThursday.ItemIEN;
+  fri := cboFriday.ItemIEN;
+  sat := cboSaturday.ItemIEN;
+  sun := cboSunday.ItemIEN;
+  rpcSetClinicDefaults(StartDays, StopDays, mon, tues, wed, thurs, fri, sat, sun);
+  case radListSource.ItemIndex of
+    0: PLSource := 'P';
+    1: PLSource := 'S';
+    2: PLSource := 'T';
+    3: PLSource := 'W';
+    4: PLSource := 'C';
+    5: PLSource := 'M';
+    else
+       PLSource := 'P';
+  end;
+  if radAlphabetical.Checked then PLSort := 'A'
+  else if radRoomBed.Checked then PLSort := 'R'
+  else if radAppointmentDate.Checked then PLSort := 'P'
+  else if radSource.Checked then PLSort := 'S'
+  else PLSort := 'T';
+  prov := cboProvider.ItemIEN;
+  spec := cboTreating.ItemIEN;
+  team := cboTeam.ItemIEN;
+  ward := cboWard.ItemIEN;
+  rpcSetPtListDefaults(PLSource, PLSort, prov, spec, team, ward);
+  ResetDfltSort;
+end;
+
+procedure TfrmOptionsPatientSelection.txtVisitStartExit(Sender: TObject);
+begin
+  with txtVisitStart do
+  if Text = '' then
+  begin
+    Text := 'T-1';
+    Hint := 'T-1';
+    spnVisitStartClick(self, btNext);
+  end;
+  TextExit(txtVisitStart, FStartEntered, SELECTION_LIMIT);
+end;
+
+procedure TfrmOptionsPatientSelection.txtVisitStopExit(Sender: TObject);
+begin
+  with txtVisitStop do
+  if Text = '' then
+  begin
+    Text := 'T-1';
+    Hint := 'T-1';
+    spnVisitStopClick(self, btNext);
+  end;
+  TextExit(txtVisitStop, FStopEntered, SELECTION_LIMIT);
+end;
+
+procedure TfrmOptionsPatientSelection.txtVisitStartKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  txtVisitStart.Hint := txtVisitStart.Text;   // put text in hint since text not available to spin
+  FStartEntered := true;
+end;
+
+procedure TfrmOptionsPatientSelection.txtVisitStopKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  txtVisitStop.Hint := txtVisitStop.Text;   // put text in hint since text not available to spin
+  FStopEntered := true;
+end;
+
+procedure TfrmOptionsPatientSelection.cboProviderExit(Sender: TObject);
+begin
+  with (Sender as TORComboBox) do
+  if ItemIndex < 0 then
+    Text := '';
+end;
+
+procedure TfrmOptionsPatientSelection.radListSourceClick(Sender: TObject);
+begin
+  if radListSource.ItemIndex = 4 then
+  begin
+    if radRoomBed.Checked then
+      radAlphabetical.Checked := true;
+    radRoomBed.Enabled := false;
+    radAppointmentDate.Enabled := true;
+  end
+  else
+  begin
+    if radAppointmentDate.Checked then
+      radAlphabetical.Checked := true;
+    radAppointmentDate.Enabled := false;
+    radRoomBed.Enabled := true;
+  end;
+  if radListSource.ItemIndex = 5 then
+  begin
+    radSource.Enabled := true;
+    radAppointmentDate.Enabled := true;
+    radRoomBed.Enabled := false;
+  end
+  else
+    radSource.Enabled := false;
+end;
+
+procedure TfrmOptionsPatientSelection.cboMondayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboMonday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboTuesdayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboTuesday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboWednesdayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboWednesday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboThursdayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboThursday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboFridayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboFriday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboSaturdayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboSaturday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboSundayNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboSunday.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.cboProviderNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboProvider.ForDataUse(SubSetOfProviders(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsPatientSelection.NextControl(Key: Char);
+begin
+  if Key = #13 then Perform(WM_NextDlgCtl, 0, 0);
+end;
+
+procedure TfrmOptionsPatientSelection.txtVisitStartKeyPress(
+  Sender: TObject; var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    FStartEntered := true;
+    Perform(WM_NextDlgCtl, 0, 0);
+  end;
+end;
+
+procedure TfrmOptionsPatientSelection.txtVisitStopKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    FStopEntered := true;
+    FProviderSpecial := true;    // used to avoid duplicate action on cboProviderKeyUp
+    Perform(WM_NextDlgCtl, 0, 0);
+  end;
+end;
+
+procedure TfrmOptionsPatientSelection.cboProviderKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if not FProviderSpecial then NextControl(Char(Key));
+  FProviderSpecial := false;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPrimaryList.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPrimaryList.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPrimaryList.dfm	(revision 1676)
@@ -0,0 +1,92 @@
+inherited frmOptionsPrimaryList: TfrmOptionsPrimaryList
+  Left = 714
+  Top = 143
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Primary List'
+  ClientHeight = 225
+  ClientWidth = 175
+  HelpFile = 'CPRSWT.HLP'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblPrimaryList: TLabel [0]
+    Left = 10
+    Top = 8
+    Width = 145
+    Height = 49
+    AutoSize = False
+    Caption = 'Select the list you wish to be your primary personal list.'
+    WordWrap = True
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 191
+    Width = 175
+    Height = 34
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 1
+    object btnOK: TButton
+      Left = 11
+      Top = 7
+      Width = 75
+      Height = 22
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+    end
+    object btnCancel: TButton
+      Left = 91
+      Top = 7
+      Width = 75
+      Height = 22
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object cboPrimary: TORComboBox [2]
+    Left = 10
+    Top = 64
+    Width = 153
+    Height = 113
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Select the list you wish to be your primary personal list.'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 0
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboPrimary'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsPrimaryList'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPrimaryList.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPrimaryList.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsPrimaryList.pas	(revision 1676)
@@ -0,0 +1,51 @@
+unit fOptionsPrimaryList;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, ORFn, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptionsPrimaryList = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    lblPrimaryList: TLabel;
+    cboPrimary: TORComboBox;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure DialogOptionsPrimaryList(fontsize: integer; var actiontype: Integer);
+
+var
+  frmOptionsPrimaryList: TfrmOptionsPrimaryList;
+
+implementation
+
+{$R *.DFM}
+
+procedure DialogOptionsPrimaryList(fontsize: integer; var actiontype: Integer);
+// create the form and make in modal, return an action
+var
+  frmOptionsPrimaryList: TfrmOptionsPrimaryList;
+begin
+  frmOptionsPrimaryList := TfrmOptionsPrimaryList.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsPrimaryList do
+    begin
+      Position := poScreenCenter;
+      Font.Size := MainFontSize;
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsPrimaryList.Release;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReminders.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReminders.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReminders.dfm	(revision 1676)
@@ -0,0 +1,216 @@
+inherited frmOptionsReminders: TfrmOptionsReminders
+  Left = 693
+  Top = 17
+  HelpContext = 9020
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Clinical Reminders on Cover Sheet'
+  ClientHeight = 323
+  ClientWidth = 407
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblDisplayed: TLabel [0]
+    Left = 209
+    Top = 8
+    Width = 129
+    Height = 13
+    Caption = 'Reminders being displayed:'
+  end
+  object lblNotDisplayed: TLabel [1]
+    Left = 8
+    Top = 8
+    Width = 147
+    Height = 13
+    Caption = 'Reminders not being displayed:'
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 290
+    Width = 407
+    Height = 33
+    HelpContext = 9020
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 7
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 407
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 247
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 327
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object lstDisplayed: TORListBox [3]
+    Left = 209
+    Top = 25
+    Width = 160
+    Height = 217
+    HelpContext = 9025
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 3
+    OnClick = lstDisplayedChange
+    OnDblClick = btnDeleteClick
+    Caption = 'Reminders being displayed:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '3'
+    OnChange = lstDisplayedChange
+  end
+  object lstNotDisplayed: TORListBox [4]
+    Left = 8
+    Top = 25
+    Width = 160
+    Height = 217
+    HelpContext = 9026
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    Sorted = True
+    TabOrder = 0
+    OnClick = lstNotDisplayedChange
+    OnDblClick = btnAddClick
+    Caption = 'Reminders not being displayed:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '3'
+    OnChange = lstNotDisplayedChange
+  end
+  object btnUp: TButton [5]
+    Left = 378
+    Top = 94
+    Width = 22
+    Height = 22
+    HelpContext = 9021
+    Caption = '^'
+    TabOrder = 4
+    OnClick = btnUpClick
+  end
+  object btnDown: TButton [6]
+    Left = 378
+    Top = 142
+    Width = 22
+    Height = 22
+    HelpContext = 9022
+    Caption = 'v'
+    TabOrder = 6
+    OnClick = btnDownClick
+  end
+  object btnDelete: TButton [7]
+    Left = 178
+    Top = 181
+    Width = 22
+    Height = 22
+    HelpContext = 9023
+    Caption = '<'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 2
+    OnClick = btnDeleteClick
+  end
+  object btnAdd: TButton [8]
+    Left = 178
+    Top = 70
+    Width = 22
+    Height = 22
+    HelpContext = 9024
+    Caption = '>'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+    OnClick = btnAddClick
+  end
+  object radSort: TRadioGroup [9]
+    Left = 209
+    Top = 246
+    Width = 192
+    Height = 37
+    Caption = 'Sort by '
+    Columns = 2
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ItemIndex = 0
+    Items.Strings = (
+      '&Display Order'
+      '&Alphabetical')
+    ParentFont = False
+    TabOrder = 5
+    OnClick = radSortClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstDisplayed'
+        'Status = stsDefault')
+      (
+        'Component = lstNotDisplayed'
+        'Status = stsDefault')
+      (
+        'Component = btnUp'
+        'Status = stsDefault')
+      (
+        'Component = btnDown'
+        'Status = stsDefault')
+      (
+        'Component = btnDelete'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsReminders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReminders.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReminders.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReminders.pas	(revision 1676)
@@ -0,0 +1,299 @@
+unit fOptionsReminders;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, OrFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptionsReminders = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    lstDisplayed: TORListBox;
+    lstNotDisplayed: TORListBox;
+    btnUp: TButton;
+    btnDown: TButton;
+    btnDelete: TButton;
+    btnAdd: TButton;
+    lblDisplayed: TLabel;
+    lblNotDisplayed: TLabel;
+    bvlBottom: TBevel;
+    radSort: TRadioGroup;
+    procedure FormCreate(Sender: TObject);
+    procedure lstDisplayedChange(Sender: TObject);
+    procedure lstNotDisplayedChange(Sender: TObject);
+    procedure btnUpClick(Sender: TObject);
+    procedure btnDownClick(Sender: TObject);
+    procedure btnDeleteClick(Sender: TObject);
+    procedure btnAddClick(Sender: TObject);
+    function GetFirstSelection(aList: TORListBox): integer;
+    procedure SetItem(aList: TORListBox; index: integer);
+    procedure MoveSelected(aList: TORListBox; items: TStrings);
+    procedure btnOKClick(Sender: TObject);
+    procedure radSortClick(Sender: TObject);
+  private
+    { Private declarations }
+    procedure CheckEnable;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsReminders: TfrmOptionsReminders;
+
+procedure DialogOptionsReminders(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, fRemCoverSheet, rReminders;
+
+{$R *.DFM}
+
+procedure DialogOptionsReminders(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsReminders: TfrmOptionsReminders;
+begin
+  if NewRemCoverSheetListActive then
+    EditCoverSheetReminderList(TRUE)
+  else
+  begin
+    frmOptionsReminders := TfrmOptionsReminders.Create(Application);
+    actiontype := 0;
+    try
+      with frmOptionsReminders do
+      begin
+        if (topvalue < 0) or (leftvalue < 0) then
+          Position := poScreenCenter
+        else
+        begin
+          Position := poDesigned;
+          Top := topvalue;
+          Left := leftvalue;
+        end;
+        ResizeAnchoredFormToFont(frmOptionsReminders);
+        ShowModal;
+        actiontype := btnOK.Tag;
+      end;
+    finally
+      frmOptionsReminders.Release;
+    end;
+  end;
+end;
+
+procedure TfrmOptionsReminders.FormCreate(Sender: TObject);
+var
+  i: integer;
+  biglist, userlist: TStringList;
+begin
+  biglist := TStringList.Create;
+  userlist := TStringList.Create;
+  try
+    rpcGetReminders(biglist);
+    for i := 0 to biglist.Count - 1 do
+      if strtointdef(Piece(biglist[i], '^', 2), 0) > 0 then
+        userlist.Add(biglist[i])
+      else
+        lstNotDisplayed.Items.Add(biglist[i]);
+    SortByPiece(userlist, '^', 2);
+    for i := 0 to userlist.Count - 1 do
+      lstDisplayed.Items.Add(userlist[i]);
+  finally
+    biglist.free;
+    userlist.free;
+  end;
+  CheckEnable;
+end;
+
+procedure TfrmOptionsReminders.CheckEnable;
+// allow buttons to be enabled or not depending on selections
+begin
+  with lstDisplayed do
+  begin
+    if Items.Count > 0 then
+    begin
+      if SelCount > 0 then
+      begin
+        btnUp.Enabled     := (SelCount > 0)
+                             and (not Selected[0])
+                             and (radSort.ItemIndex = 0);
+        btnDown.Enabled   := (SelCount > 0)
+                             and (not Selected[Items.Count - 1])
+                             and (radSort.ItemIndex = 0);
+        btnDelete.Enabled := true;
+      end
+      else
+      begin
+        btnUp.Enabled     := false;
+        btnDown.Enabled   := false;
+        btnDelete.Enabled := false;
+      end;
+    end
+    else
+    begin
+      btnUp.Enabled     := false;
+      btnDown.Enabled   := false;
+      btnDelete.Enabled := false;
+    end;
+  end;
+  with lstNotDisplayed do
+  begin
+    btnAdd.Enabled := SelCount > 0;
+  end;
+end;
+
+procedure TfrmOptionsReminders.lstDisplayedChange(Sender: TObject);
+begin
+  CheckEnable;
+end;
+
+procedure TfrmOptionsReminders.lstNotDisplayedChange(Sender: TObject);
+begin
+  CheckEnable;
+end;
+
+procedure TfrmOptionsReminders.btnUpClick(Sender: TObject);
+var
+  newindex, i: integer;
+begin
+  with lstDisplayed do
+  begin
+    i := 0;
+    while i < Items.Count do
+    begin
+      if Selected[i] then
+      begin
+        newindex := i - 1;
+        Items.Move(i, newindex);
+        Selected[newindex] := true;
+      end;
+      inc(i);
+    end;
+  end;
+  lstDisplayedChange(self);
+end;
+
+procedure TfrmOptionsReminders.btnDownClick(Sender: TObject);
+var
+  newindex, i: integer;
+begin
+  with lstDisplayed do
+  begin
+    i := Items.Count - 1;
+    while i > -1 do
+    begin
+      if Selected[i] then
+      begin
+        newindex := i + 1;
+        Items.Move(i, newindex);
+        Selected[newindex] := true;
+      end;
+      dec(i);
+    end;
+  end;
+  lstDisplayedChange(self);
+end;
+
+procedure TfrmOptionsReminders.btnDeleteClick(Sender: TObject);
+var
+  index: integer;
+begin
+  index := GetFirstSelection(lstDisplayed);
+  MoveSelected(lstDisplayed, lstNotDisplayed.Items);
+  SetItem(lstDisplayed, index);
+  CheckEnable;
+end;
+
+procedure TfrmOptionsReminders.btnAddClick(Sender: TObject);
+var
+  index: integer;
+begin
+  index := GetFirstSelection(lstNotDisplayed);
+  MoveSelected(lstNotDisplayed, lstDisplayed.Items);
+  SetItem(lstNotDisplayed, index);
+  if radSort.ItemIndex = 1 then radSortClick(self);
+  CheckEnable;
+end;
+
+function TfrmOptionsReminders.GetFirstSelection(aList: TORListBox): integer;
+begin
+  for result := 0 to aList.Items.Count - 1 do
+    if aList.Selected[result] then exit;
+  result := LB_ERR;
+end;
+
+procedure TfrmOptionsReminders.SetItem(aList: TORListBox; index: integer);
+var
+  maxindex: integer;
+begin
+  with aList do
+  begin
+    SetFocus;
+    maxindex := aList.Items.Count - 1;
+    if Index = LB_ERR then
+      Index := 0
+    else if Index > maxindex then Index := maxindex;
+    Selected[index] := true;
+  end;
+  CheckEnable;  
+end;
+
+procedure TfrmOptionsReminders.MoveSelected(aList: TORListBox; Items: TStrings);
+var
+  i: integer;
+begin
+  for i := aList.Items.Count - 1 downto 0 do
+  begin
+    if aList.Selected[i] then
+    begin
+      Items.AddObject(aList.Items[i], aList.Items.Objects[i]);
+      aList.Items.Delete(i);
+    end;
+  end;
+end;
+
+procedure TfrmOptionsReminders.btnOKClick(Sender: TObject);
+var
+  i: integer;
+  values: string;
+  aList: TStringList;
+begin
+  aList := TStringList.Create;
+  try
+    with lstDisplayed do
+    for i := 0 to Items.Count - 1 do
+    begin
+      values := inttostr(i + 1) + '^' + Piece(Items[i], '^', 1);
+      aList.Add(values);
+    end;
+    rpcSetReminders(aList);
+  finally
+    aList.free;
+  end;
+end;
+
+procedure TfrmOptionsReminders.radSortClick(Sender: TObject);
+var
+  i: integer;
+  userlist: TStringList;
+begin
+  userlist := TStringList.Create;
+  try
+    for i := 0 to lstDisplayed.Items.Count - 1 do
+      userlist.Add(lstDisplayed.Items[i]);
+    case radSort.ItemIndex of
+      0: SortByPiece(userlist, '^', 2);
+      else SortByPiece(userlist, '^', 3);
+    end;
+    lstDisplayed.Items.Clear;
+    for i := 0 to userlist.Count - 1 do
+      lstDisplayed.Items.Add(userlist[i]);
+  finally
+    userlist.free;
+  end;
+  CheckEnable;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsCustom.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsCustom.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsCustom.dfm	(revision 1676)
@@ -0,0 +1,208 @@
+inherited frmOptionsReportsCustom: TfrmOptionsReportsCustom
+  Left = 414
+  Top = 329
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Individual CPRS Report Settings'
+  ClientHeight = 383
+  ClientWidth = 503
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Bevel3: TBevel [0]
+    Left = 0
+    Top = 352
+    Width = 503
+    Height = 2
+    Align = alBottom
+  end
+  object Panel1: TPanel [1]
+    Left = 0
+    Top = 354
+    Width = 503
+    Height = 29
+    Align = alBottom
+    TabOrder = 1
+    object btnApply: TButton
+      Left = 432
+      Top = 4
+      Width = 50
+      Height = 22
+      Hint = 'Click to save new settings'
+      Caption = 'Apply'
+      Enabled = False
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = btnApplyClick
+    end
+    object btnCancel: TButton
+      Left = 368
+      Top = 4
+      Width = 50
+      Height = 22
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+    object btnOK: TButton
+      Left = 304
+      Top = 4
+      Width = 51
+      Height = 22
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+  end
+  object Panel2: TPanel [2]
+    Left = 0
+    Top = 0
+    Width = 503
+    Height = 353
+    Align = alTop
+    TabOrder = 0
+    object grdReport: TCaptionStringGrid
+      Left = 1
+      Top = 73
+      Width = 501
+      Height = 272
+      Align = alTop
+      ColCount = 4
+      DefaultRowHeight = 20
+      FixedCols = 0
+      RowCount = 16
+      Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goDrawFocusSelected, goTabs]
+      ScrollBars = ssVertical
+      TabOrder = 5
+      OnDrawCell = grdReportDrawCell
+      OnKeyDown = grdReportKeyDown
+      OnKeyPress = grdReportKeyPress
+      OnMouseDown = grdReportMouseDown
+      Caption = 'Report Grid'
+      ColWidths = (
+        219
+        97
+        89
+        71)
+    end
+    object edtMax: TCaptionEdit
+      Left = 264
+      Top = 328
+      Width = 89
+      Height = 20
+      BorderStyle = bsNone
+      TabOrder = 1
+      Visible = False
+      OnExit = edtMaxExit
+      OnKeyPress = edtMaxKeyPress
+    end
+    object odbStop: TORDateBox
+      Left = 136
+      Top = 328
+      Width = 113
+      Height = 21
+      TabOrder = 3
+      Visible = False
+      OnExit = odbStopExit
+      OnKeyPress = odbStopKeyPress
+      DateOnly = True
+      RequireTime = False
+      Caption = 'Stop Date'
+    end
+    object odbStart: TORDateBox
+      Left = 8
+      Top = 328
+      Width = 113
+      Height = 21
+      TabOrder = 2
+      Visible = False
+      OnExit = odbStartExit
+      OnKeyPress = odbStartKeyPress
+      DateOnly = True
+      RequireTime = False
+      Caption = 'Start Date'
+    end
+    object odbTool: TORDateBox
+      Left = 360
+      Top = 328
+      Width = 121
+      Height = 21
+      TabOrder = 4
+      Visible = False
+      DateOnly = True
+      RequireTime = False
+      Caption = 'Date'
+    end
+    object Panel3: TPanel
+      Left = 1
+      Top = 1
+      Width = 501
+      Height = 72
+      Align = alTop
+      TabOrder = 0
+      object Label1: TLabel
+        Left = 16
+        Top = 8
+        Width = 265
+        Height = 13
+        Caption = 'Type the first few letters of the report you are looking for:'
+      end
+      object edtSearch: TCaptionEdit
+        Left = 24
+        Top = 32
+        Width = 433
+        Height = 21
+        TabOrder = 0
+        OnChange = edtSearchChange
+        OnKeyPress = edtSearchKeyPress
+        Caption = 'Type the first few letters of the report you are looking for:'
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = btnApply'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = grdReport'
+        'Status = stsDefault')
+      (
+        'Component = edtMax'
+        'Status = stsDefault')
+      (
+        'Component = odbStop'
+        'Status = stsDefault')
+      (
+        'Component = odbStart'
+        'Status = stsDefault')
+      (
+        'Component = odbTool'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = edtSearch'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsReportsCustom'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsCustom.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsCustom.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsCustom.pas	(revision 1676)
@@ -0,0 +1,664 @@
+unit fOptionsReportsCustom;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, Spin, ORCtrls, fOptions, ComCtrls, ORFn, ORNet, Grids, uConst,
+  ORDtTm, rCore, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptionsReportsCustom = class(TfrmBase508Form)
+    Panel1: TPanel;
+    Bevel3: TBevel;
+    btnApply: TButton;
+    btnCancel: TButton;
+    Panel2: TPanel;
+    grdReport: TCaptionStringGrid;
+    edtMax: TCaptionEdit;
+    odbStop: TORDateBox;
+    odbStart: TORDateBox;
+    odbTool: TORDateBox;
+    btnOK: TButton;
+    Panel3: TPanel;
+    edtSearch: TCaptionEdit;
+    Label1: TLabel;
+    function ValFor(ACol, ARow: Integer): string;
+    procedure FormCreate(Sender: TObject);
+    procedure grdReportMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure grdReportKeyPress(Sender: TObject; var Key: Char);
+    procedure grdReportDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure UMDelayEvent(var Message: TMessage); Message UM_DELAYEVENT;
+    procedure edtMaxExit(Sender: TObject);
+    procedure btnApplyClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure odbStartExit(Sender: TObject);
+    procedure odbStopExit(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure odbStartKeyPress(Sender: TObject; var Key: Char);
+    procedure odbStopKeyPress(Sender: TObject; var Key: Char);
+    procedure edtMaxKeyPress(Sender: TObject; var Key: Char);
+    procedure btnOKClick(Sender: TObject);
+    procedure edtSearchChange(Sender: TObject);
+    procedure edtSearchKeyPress(Sender: TObject; var Key: Char);
+    procedure FormShow(Sender: TObject);
+    procedure grdReportKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+    //startDate,endDate,
+    maxOcurs,signal: integer;
+    rptList: TStringList;
+    fDropColumn: Integer;
+    sDate,eDate: string;
+    procedure ShowEditor(ACol, ARow: Integer; AChar: Char);
+  public
+    { Public declarations }
+  end;
+var
+  frmOptionsReportsCustom: TfrmOptionsReportsCustom;
+  const
+    Col_StartDate = 1;
+    Col_StopDate  = 2;
+    Col_Max       = 3;
+    TAB           = #9;
+procedure DialogOptionsHSCustom(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, uOptions, fReports, fLabs, uCore;
+
+{$R *.DFM}
+
+procedure TfrmOptionsReportsCustom.UMDelayEvent(var Message: TMessage);
+{ after focusing events are completed for a combobox, set the key the user typed }
+begin
+  case Message.LParam of
+  Col_StartDate:
+    begin
+      odbStart.Visible := True;
+      odbStart.Text := Chr(Message.WParam);
+    end;
+  COL_StopDate :
+    begin
+      odbStop.Visible := True;
+      odbStop.Text := Chr(Message.WParam);
+    end;
+  COL_Max      :
+    begin
+      edtMax.Visible := True;
+      edtMax.Text := Chr(Message.WParam);
+    end;
+  end;
+end;
+
+procedure DialogOptionsHSCustom(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+var
+  frmOptionsReportsCustom: TfrmOptionsReportsCustom;
+begin
+  frmOptionsReportsCustom := TfrmOptionsReportsCustom.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsReportsCustom do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsReportsCustom);
+      ShowModal;
+      actiontype := btnApply.Tag;
+    end;
+  finally
+    frmOptionsReportsCustom.Release;
+  end;
+end;
+
+procedure TfrmOptionsReportsCustom.FormCreate(Sender: TObject);
+begin
+  rptList := TStringList.Create;
+end;
+
+procedure TfrmOptionsReportsCustom.ShowEditor(ACol, ARow: Integer; AChar: Char);
+
+    procedure PlaceControl(AControl: TWinControl);
+    var
+        ARect: TRect;
+    begin
+        with AControl do
+        begin
+            ARect := grdReport.CellRect(ACol, ARow);
+            SetBounds(ARect.Left + grdReport.Left + 2, ARect.Top + grdReport.Top + 2,
+                ARect.Right - ARect.Left - 1 , ARect.Bottom-ARect.Top -1 );
+            Visible := True;
+            Tag := ARow;
+            BringToFront;
+            Show;
+            SetFocus;
+        end;
+    end;
+    procedure Synch(AEdit: TEdit; const edtText: string);
+    begin
+        AEdit.Text := edtText;
+        AEdit.SelectAll;
+    end;
+begin
+  inherited;
+  if ARow = 0 then Exit;  //header row
+  with grdReport do if (ARow = Pred(RowCount)) and (ACol > 4 ) then Exit;
+  case ACol of
+  Col_StartDate: begin
+    if (ARow > 0 ) then
+      begin
+        PlaceControl(odbStart);
+        Synch(odbStart,ValFor(Col_StartDate,ARow));
+        if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_StartDate);
+      end;
+    end;
+  Col_StopDate: begin
+    if (ARow > 0 ) then
+      begin
+        PlaceControl(odbStop);
+        Synch(odbStop, ValFor(Col_StopDate,ARow));
+        if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_StopDate);
+      end;
+    end;
+  Col_Max: begin
+    if (ARow > 0 ) and (StrToInt(ValFor(Col_Max,ARow)) > 0) then
+      begin
+        PlaceControl(edtMax);
+        Synch(edtMax, ValFor(Col_Max,ARow));
+        fDropColumn := Col_Max;
+        if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_Max);
+      end;
+    end;
+  end;
+end;
+
+function TfrmOptionsReportsCustom.ValFor(ACol, ARow: Integer): string;
+begin
+   Result := grdReport.Cells[ACol, ARow];
+end;
+
+procedure TfrmOptionsReportsCustom.grdReportKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  inherited;
+  if grdReport.Col = 1 then
+    sDate := grdReport.Cells[grdReport.Col,grdReport.Row];
+  if grdReport.Col = 2 then
+    eDate := grdReport.Cells[grdReport.Col,grdReport.Row];
+  if (grdReport.Col = 3) and (grdReport.Cells[grdReport.Col, grdReport.Row]='') then
+      Exit else if Length(grdReport.Cells[3, grdReport.Row]) > 0 then maxOcurs := StrToInt( grdReport.Cells[3,grdReport.Row]);
+  if Key = #13 then ShowEditor(grdReport.Col, grdReport.Row, #0);
+  if Key = #9 then
+    begin
+      odbStart.Visible := False;
+      odbStop.Visible := False;
+      edtMax.Visible := False;
+      ShowEditor(grdReport.Col, grdReport.Row, #0);
+    end;
+  if Key in [#32..#127] then ShowEditor(grdReport.Col, grdReport.Row, Key);
+ signal := 0;
+end;
+
+procedure TfrmOptionsReportsCustom.grdReportMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  ACol,ARow: integer;
+begin
+  inherited;
+  if (not User.ToolsRptEdit) then // For users with Reports settings edit parameter not set.
+  begin
+    abort;
+    exit;
+  end;
+  grdReport.MouseToCell(X,Y,ACol,ARow);
+  if (ARow < 1) or (ACol < 1) then
+    begin
+      odbStop.Visible := False;
+      odbStart.Visible := False;
+      edtMax.Visible := False;
+      Exit;
+    end;
+  if ACol = 1 then
+    begin
+      odbStop.Visible := False;
+      edtMax.Visible := False;
+      sDate := grdReport.Cells[1,ARow];
+      ShowEditor(ACol, ARow, #0);
+    end;
+  if ACol = 2 then
+    begin
+      odbStart.Visible := False;
+      edtMax.Visible := False;
+      eDate := grdReport.Cells[2,ARow];
+      ShowEditor(ACol, ARow, #0);
+    end;
+  if (ACol = 3) and (grdReport.Cells[ACol,ARow]='') then
+    begin
+      odbStart.Visible := False;
+      odbStop.Visible := False;
+      Exit;
+    end
+  else if (ACol = 3) and (strtoint(grdReport.Cells[ACol,ARow])>0) then
+    begin
+      odbStart.Visible := False;
+      odbStop.Visible := False;
+      maxOcurs := strtoint(grdReport.Cells[ACol,ARow]);
+      ShowEditor(ACol, ARow, #0);
+    end
+  else
+    begin
+      grdReport.Col := 0;
+      grdReport.Row := ARow;
+    end;
+  signal := 0;
+end;
+
+procedure TfrmOptionsReportsCustom.grdReportDrawCell(Sender: TObject; ACol,
+  ARow: Integer; Rect: TRect; State: TGridDrawState);
+begin
+ inherited;
+ grdReport.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,
+    Piece(grdReport.Cells[ACol, ARow], TAB, 1));
+
+end;
+
+procedure TfrmOptionsReportsCustom.edtMaxExit(Sender: TObject);
+var
+  newValue: String;
+  code, I: integer;
+begin
+  if edtMax.Modified then
+    begin
+      newValue := edtMax.Text;
+      if length(newValue) = 0 then
+        begin
+          InfoBox('Invalid value of max occurences', 'Warning', MB_OK or MB_ICONWARNING);
+          edtMax.Text := IntToStr(maxOcurs);
+          edtMax.SetFocus;
+          edtMax.SelectAll;
+        end;
+      if length(newValue) > 0 then
+        begin
+          Val(newValue, I, code);
+          if I = 0 then begin end; //added to keep compiler from generating a hint
+          if code <> 0 then
+             begin
+              InfoBox('Invalid value of max occurences', 'Warning', MB_OK or MB_ICONWARNING);
+              edtMax.Text := IntToStr(maxOcurs);
+              edtMax.SetFocus;
+              edtMax.SelectAll;
+             end;
+          if code = 0 then
+            begin
+              if strtoint(edtMax.Text) <= 0 then
+              begin
+                InfoBox('the value of max should be greater than 0', 'Warning', MB_OK or MB_ICONWARNING);
+                edtMax.Text := intToStr(maxOcurs);
+                edtMax.SetFocus;
+                edtMax.SelectAll;
+                exit;
+              end;
+              grdReport.Cells[Col_Max, edtMax.Tag] := edtMax.Text;
+              if compareStr(Piece(Piece(grdReport.Cells[0,edtMax.Tag],TAB,2),'^',2),'M')=0 then
+              begin
+                 edtMax.Visible := False;
+                 btnApply.Enabled := True;
+                 Exit;
+              end;
+              grdReport.Cells[0,edtMax.Tag] := grdReport.Cells[0,edtMax.Tag] + '^M';
+              edtMax.Visible := False;
+              btnApply.Enabled := True;
+            end;
+        end;
+    end;
+end;
+
+procedure TfrmOptionsReportsCustom.btnApplyClick(Sender: TObject);
+var
+  valueStartdate, valueStopdate,valueMax, rpt, values,name: string;
+  i: integer;
+begin
+   for i := 1 to grdReport.RowCount do
+      begin
+          if CompareStr(Piece(Piece( grdReport.Cells[0,i],TAB,2),'^',2),'M')=0 then
+          begin
+             rpt := Piece(Piece( grdReport.Cells[0,i],TAB,2),'^',1);
+             name := Piece( grdReport.Cells[0,i],TAB,1);
+             odbTool.Text := grdReport.Cells[1,i];
+             valueStartDate := odbTool.RelativeTime;
+             odbTool.Text := grdReport.Cells[2,i];
+             valueStopDate := odbTool.RelativeTime;
+             valueMax := grdReport.Cells[3,i];
+             if Length(valueMax)<1 then
+                valueMax := '7';
+             values := valueStartdate + ';' + valueStopDate + ';' + valueMax;
+{             if CompareStr(name,'Imaging (local only)')=0 then // imaging report id is hard coded to be 10000
+               values := valueStartdate + ';' + valueStopDate + ';;;' + valueMax
+             else}
+             rpcSetIndividualReportSetting(rpt, values);
+          end;
+      end;
+   btnApply.Enabled := False;
+   odbStart.Visible := False;
+   odbStop.Visible := False;
+   edtMax.Visible := False;
+   frmReports.LoadTreeView;
+   frmLabs.LoadTreeView;
+   with frmReports.tvReports do
+     begin
+       if Items.Count > 0 then
+         Selected := Items.GetFirstNode;
+       frmReports.tvReportsClick(Selected);
+     end;
+   with frmLabs.tvReports do
+     begin
+       if Items.Count > 0 then
+         Selected := Items.GetFirstNode;
+       frmReports.tvReportsClick(Selected);
+     end;
+end;
+
+procedure TfrmOptionsReportsCustom.btnCancelClick(Sender: TObject);
+begin
+  rptList.Clear;
+  Close;
+end;
+
+
+procedure TfrmOptionsReportsCustom.odbStartExit(Sender: TObject);
+const
+  TX_BAD_START   = 'The start date is not valid.';
+  TX_STOPSTART   = 'The start date must not be after the stop date.';
+var
+  x,ErrMsg,datestart,datestop: String;
+begin
+    if odbStart.text = '' then
+    begin
+      InfoBox(TX_BAD_START, 'Warning', MB_OK or MB_ICONWARNING);
+      odbStart.Visible := True;
+      odbStart.Text := sDate;
+      odbStart.Setfocus;
+      odbStart.SelectAll;
+      exit;
+    end;
+    if odbStart.Text = sDate then
+      exit;
+    ErrMsg := '';
+    odbStart.Validate(x);
+    if Length(x) > 0 then
+      begin
+        ErrMsg := TX_BAD_START;
+        InfoBox(TX_BAD_START, 'Warning', MB_OK or MB_ICONWARNING);
+        odbStart.Visible := True;
+        odbStart.Text := sDate;
+        odbStart.Setfocus;
+        odbStart.SelectAll;
+        exit;
+      end;
+    datestart := odbStart.RelativeTime;
+    datestop := MakeRelativeDateTime(
+          StrToFMDateTime(grdReport.Cells[Col_StopDate,odbStart.Tag])
+       );
+    delete(datestart,1,1);
+    delete(datestop,1,1);
+    if StrToIntDef(datestart,0)> StrToIntDef(datestop,0) then
+    begin
+      InfoBox(TX_STOPSTART, 'Warning', MB_OK or MB_ICONWARNING);
+      odbStart.Text := grdReport.Cells[Col_StopDate,odbStart.Tag];
+      odbStart.SetFocus;
+      odbStart.SelectAll;
+      exit;
+    end;
+    grdReport.Cells[Col_StartDate, odbStart.Tag] := DateToStr(FMDateTimeToDateTime(odbStart.FMDateTime));
+    odbStart.Visible := False;
+    btnApply.Enabled := True;
+    if compareStr(Piece(Piece(grdReport.Cells[0,odbStart.Tag],TAB,2),'^',2),'M')=0 then
+        Exit;
+    grdReport.Cells[0,odbStart.Tag] := grdReport.Cells[0,odbStart.Tag] + '^M';
+end;
+
+procedure TfrmOptionsReportsCustom.odbStopExit(Sender: TObject);
+const
+  TX_BAD_STOP    = 'The stop date is not valid.';
+  TX_BAD_ORDER   = 'The stop date must not be earlier than start date.';
+var
+  x, ErrMsg,datestart,datestop: string;
+begin
+    if odbStop.text = '' then
+    begin
+      InfoBox(TX_BAD_STOP, 'Warning', MB_OK or MB_ICONWARNING);
+      odbStop.Visible := True;
+      odbStop.Text := eDate;
+      odbStop.Setfocus;
+      odbStop.SelectAll;
+      exit;
+    end;
+
+   if odbStop.Text = eDate then
+      exit;
+
+    ErrMsg := '';
+    odbStop.Validate(x);
+    if Length(x) > 0 then
+      begin
+        ErrMsg := TX_BAD_STOP;
+        InfoBox(TX_BAD_STOP, 'Warning', MB_OK or MB_ICONWARNING);
+        odbStop.Visible := True;
+        odbStop.Text := eDate;
+        odbStop.Setfocus;
+        odbStop.SelectAll;
+        exit;
+      end;
+
+    datestart := MakeRelativeDateTime(
+          StrToFMDateTime(grdReport.Cells[Col_StartDate,odbStop.Tag])
+       );
+    datestop := odbStop.RelativeTime;
+    delete(datestart,1,1);
+    delete(datestop,1,1);
+    if StrToIntDef(datestart,0)> StrToIntDef(datestop,0) then
+    begin
+      InfoBox(TX_BAD_ORDER, 'Warning', MB_OK or MB_ICONWARNING);
+      odbStop.Text := grdReport.Cells[Col_StartDate,odbStop.Tag];
+      odbStop.SetFocus;
+      odbStop.SelectAll;
+      exit;
+    end;
+    grdReport.Cells[Col_StopDate, odbStop.Tag] := DateToStr(FMDateTimeToDateTime(odbStop.FMDateTime));
+    odbStop.Visible := False;
+    btnApply.Enabled := True;
+    if compareStr(Piece(Piece(grdReport.Cells[0,odbStop.Tag],TAB,2),'^',2),'M')=0 then
+       Exit;
+    grdReport.Cells[0,odbStop.Tag] := grdReport.Cells[0,odbStop.Tag] + '^M';
+end;
+
+
+procedure TfrmOptionsReportsCustom.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Close;
+  rptList.Clear;
+end;
+
+procedure TfrmOptionsReportsCustom.odbStartKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    odbStart.Visible := False;
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsCustom.odbStopKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    odbStop.Visible := False;
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsCustom.edtMaxKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    edtMax.Visible := False;
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsCustom.btnOKClick(Sender: TObject);
+begin
+  if btnApply.Enabled then
+    btnApplyClick(self);
+  Close;
+end;
+
+procedure TfrmOptionsReportsCustom.edtSearchChange(Sender: TObject);
+var
+  i: integer;
+  needle,hay: String;
+  selRect: TGridRect;
+
+begin
+  if (edtSearch.Modified) and (signal=0) then
+    begin
+      needle := UpperCase(edtSearch.text);
+      if length(needle)=0 then
+        begin
+          selRect.Left := 0;
+          selRect.Top := 1;
+          selRect.Right := 0;
+          selRect.Bottom := 1;
+          grdReport.Selection := selRect;
+          grdReport.TopRow := 1;
+          exit;
+        end;
+      for i := 1 to grdReport.RowCount do
+        begin
+          hay := Piece(UpperCase(grdReport.Cells[0,i]),TAB,1);
+          hay := Copy(hay,0,length(needle));
+          if Pos(needle, hay) > 0 then
+            begin
+              selRect.Left := 0;
+              selRect.Top := i;
+              selRect.Right := 0;
+              selRect.Bottom := i;
+              grdReport.Selection := selRect;
+              grdReport.TopRow := i;
+              exit;
+            end;
+        end;
+    end;
+  if (edtSearch.Modified) and (signal=1) then
+    begin
+      signal := 0;
+    end;
+  Exit;
+end;
+
+procedure TfrmOptionsReportsCustom.edtSearchKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    edtSearch.Text := '';
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsCustom.FormShow(Sender: TObject);
+var
+    i,rowNum: integer;
+    startOff,stopOff: string;
+    today: TFMDateTime;
+begin
+    today := FMToday;
+    signal := 0;
+    rptList := TStringList.Create;
+    CallV('ORWTPD GETSETS',[nil]);
+    MixedCaseList( RPCBrokerV.Results );
+    rptList := TStringList(RPCBrokerV.Results);
+    SortByPiece(rptList,'^',2);
+    rowNum := rptList.Count;
+    grdReport.RowCount := rowNum + 1;
+    grdReport.Cells[0,0] := 'Report Name';
+    grdReport.Cells[1,0] := 'Start Date';
+    grdReport.Cells[2,0] := 'Stop Date';
+    grdReport.Cells[3 ,0] := 'Max';
+
+    for i := 1 to grdReport.RowCount-1 do
+    begin
+      grdReport.Cells[0,i] := Piece(rptList[i-1],'^',2)+ TAB + Piece(rptList[i-1],'^',1);
+      startOff := Piece(Piece(rptList[i-1],'^',3),';',1);
+      stopOff := Piece(Piece(rptList[i-1],'^',3),';',2);
+      delete(startOff,1,1);
+      delete(stopOff,1,1);
+      grdReport.Cells[1,i] := DateToStr(FMDateTimeToDateTime(FMDateTimeOffsetBy(today, StrToIntDef(startOff,0))));
+      grdReport.Cells[2,i] := DateToStr(FMDateTimeToDateTime(FMDateTimeOffsetBy(today, StrToIntDef(stopOff,0))));
+      grdReport.Cells[3,i] := Piece(Piece(rptList[i-1],'^',3),';',3);
+    end;
+    if not edtSearch.Focused then
+      edtSearch.SetFocus;
+    btnCancel.Caption := 'Cancel';
+    if (not User.ToolsRptEdit) then // For users with Reports settings edit parameter not set.
+      begin
+        grdReport.onKeyPress := nil;
+        grdReport.onMouseDown := nil;
+        odbStart.readOnly := true;
+        odbStart.onExit := nil;
+        odbStart.onKeyPress := nil;
+        odbStop.readOnly := true;
+        odbStop.onExit := nil;
+        odbStop.onKeyPress := nil;
+        edtMax.readOnly := true;
+        odbTool.readOnly := true;
+        btnOK.visible := false;
+        btnApply.visible := false;
+        btnCancel.Caption := 'Close';
+      end;
+end;
+
+procedure TfrmOptionsReportsCustom.grdReportKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      EdtSearch.SetFocus;
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      if User.ToolsRptEdit then
+        btnApply.SetFocus
+      else
+        btnCancel.SetFocus;
+      Key := 0;
+    end;
+  end;
+  if Key = VK_ESCAPE then begin
+    EdtSearch.SetFocus;
+    Key := 0;
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsDefault.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsDefault.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsDefault.dfm	(revision 1676)
@@ -0,0 +1,168 @@
+inherited frmOptionsReportsDefault: TfrmOptionsReportsDefault
+  Left = 773
+  Top = 334
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Default Settings For Available CPRS Reports'
+  ClientHeight = 205
+  ClientWidth = 384
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label2: TLabel [0]
+    Left = 8
+    Top = 118
+    Width = 23
+    Height = 13
+    Caption = 'Max:'
+  end
+  object Label3: TLabel [1]
+    Left = 8
+    Top = 48
+    Width = 51
+    Height = 13
+    Caption = 'Start Date:'
+  end
+  object Label4: TLabel [2]
+    Left = 8
+    Top = 81
+    Width = 51
+    Height = 13
+    Caption = 'Stop Date:'
+  end
+  object Bevel1: TBevel [3]
+    Left = 8
+    Top = 8
+    Width = 337
+    Height = 2
+  end
+  object Bevel2: TBevel [4]
+    Left = 0
+    Top = 173
+    Width = 384
+    Height = 2
+    Align = alBottom
+  end
+  object lblDefaultText: TMemo [5]
+    Left = 232
+    Top = 40
+    Width = 137
+    Height = 121
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Click dots in boxes to set '
+      'start and end dates. You can '
+      'also input values directly.')
+    ReadOnly = True
+    TabOrder = 4
+  end
+  object edtDefaultMax: TCaptionEdit [6]
+    Left = 96
+    Top = 112
+    Width = 121
+    Height = 21
+    TabOrder = 2
+    OnClick = edtDefaultMaxClick
+    OnExit = edtDefaultMaxExit
+    OnKeyPress = edtDefaultMaxKeyPress
+    Caption = 'Max'
+  end
+  object Panel1: TPanel [7]
+    Left = 0
+    Top = 175
+    Width = 384
+    Height = 30
+    Align = alBottom
+    TabOrder = 3
+    object btnOK: TButton
+      Left = 264
+      Top = 4
+      Width = 50
+      Height = 22
+      Hint = 'Click to save the new setting.'
+      Caption = 'OK'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = btnOKClick
+    end
+    object btnReset: TButton
+      Left = 176
+      Top = 4
+      Width = 81
+      Height = 22
+      Hint = 'Click to keep original setting'
+      Caption = 'Use Defaults'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      OnClick = btnResetClick
+    end
+    object btnCancel: TButton
+      Left = 320
+      Top = 4
+      Width = 57
+      Height = 22
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = btnCancelClick
+    end
+  end
+  object odcDfStart: TORDateBox [8]
+    Left = 96
+    Top = 48
+    Width = 121
+    Height = 21
+    TabOrder = 0
+    OnClick = odcDfStartClick
+    OnExit = odcDfStartExit
+    OnKeyPress = odcDfStartKeyPress
+    DateOnly = True
+    RequireTime = False
+  end
+  object odcDfStop: TORDateBox [9]
+    Left = 96
+    Top = 80
+    Width = 121
+    Height = 21
+    TabOrder = 1
+    OnClick = odcDfStopClick
+    OnExit = odcDfStopExit
+    OnKeyPress = odcDfStopKeyPress
+    DateOnly = True
+    RequireTime = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblDefaultText'
+        'Status = stsDefault')
+      (
+        'Component = edtDefaultMax'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnReset'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = odcDfStart'
+        'Status = stsDefault')
+      (
+        'Component = odcDfStop'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsReportsDefault'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsDefault.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsDefault.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsReportsDefault.pas	(revision 1676)
@@ -0,0 +1,429 @@
+unit fOptionsReportsDefault;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, Spin, fOptions, ComCtrls, ORFn, ORNet, ORCtrls,
+  ORDtTm, rCore, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptionsReportsDefault = class(TfrmBase508Form)
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    edtDefaultMax: TCaptionEdit;
+    Bevel1: TBevel;
+    Bevel2: TBevel;
+    Panel1: TPanel;
+    btnOK: TButton;
+    btnReset: TButton;
+    lblDefaultText: TMemo;
+    btnCancel: TButton;
+    odcDfStart: TORDateBox;
+    odcDfStop: TORDateBox;
+    procedure btnOKClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnResetClick(Sender: TObject);
+    procedure edtDefaultMaxExit(Sender: TObject);
+    procedure edtDefaultStartKeyPress(Sender: TObject; var Key: Char);
+    procedure edtDefaultEndKeyPress(Sender: TObject; var Key: Char);
+    procedure edtDefaultMaxKeyPress(Sender: TObject; var Key: Char);
+    procedure FormCreate(Sender: TObject);
+    procedure odcDfStartExit(Sender: TObject);
+    procedure odcDfStopExit(Sender: TObject);
+    procedure odcDfStartKeyPress(Sender: TObject; var Key: Char);
+    procedure odcDfStopKeyPress(Sender: TObject; var Key: Char);
+    procedure odcDfStartClick(Sender: TObject);
+    procedure odcDfStopClick(Sender: TObject);
+    procedure edtDefaultMaxClick(Sender: TObject);
+  private
+    { Private declarations }
+    startDate, endDate, maxOcurs: integer;
+    sDate,eDate: String;
+  public
+    { Public declarations }
+    procedure fillLabelText;
+
+  end;
+
+var
+  frmOptionsReportsDefault: TfrmOptionsReportsDefault;
+
+procedure DialogOptionsHSDefault(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, uOptions, fReports, uCore;
+{$R *.DFM}
+
+procedure DialogOptionsHSDefault(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+var
+  frmOptionsReportsDefault: TfrmOptionsReportsDefault;
+begin
+  frmOptionsReportsDefault := TfrmOptionsReportsDefault.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsReportsDefault do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsReportsDefault);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsReportsDefault.Release;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.btnOKClick(Sender: TObject);
+var
+  valueStartdate, valueEnddate, valueMax, values: string;
+begin
+  if (odcDfStart.Text = sDate) and (odcDfStop.Text = eDate) and (not edtDefaultMax.Modified ) then
+    begin
+      Close;
+      Exit;
+    end;
+
+  if (odcDfStart.Text='') or (odcDfStop.Text='') or (edtDefaultMax.Text='') then
+    begin
+      InfoBox('You have to fill out each box, don''t leave blank!', 'Warning', MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+
+  valueStartdate := odcDfStart.RelativeTime;
+  valueEnddate := odcDfStop.RelativeTime;
+  valueMax := edtDefaultMax.Text;
+  values := valueStartdate + ';' + valueEnddate + ';' + valueMax;
+  if InfoBox('Do you really want to change all of the reports settings to the specified values as following?'
+    +#13#13' Start date: ' + odcDfStart.Text
+    +#13' End date: ' + odcDfStop.Text
+    +#13' Max occurences: ' + edtDefaultMax.Text
+    +#13#13' Click Yes, all of the CPRS reports except for health summary reports will have these same settings.',
+    'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+      rpcSetDefaultReportsSetting(values);
+      rpcActiveDefaultSetting;
+      frmReports.LoadTreeView;
+      with frmReports.tvReports do
+        begin
+         if Items.Count > 0 then
+           Selected := Items.GetFirstNode;
+         frmReports.tvReportsClick(Selected);
+        end;
+      Close;
+  end
+  else
+  begin
+    odcDfStart.Text := sDate;
+    odcDfStop.Text := eDate;
+    edtDefaultMax.Text := IntToStr(maxOcurs);
+  end;
+end;
+
+
+procedure TfrmOptionsReportsDefault.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmOptionsReportsDefault.btnResetClick(Sender: TObject);
+var
+  startD,endD,maxOc: integer;
+  values,msg,stdate,endate: string;
+  today: TFMDateTime;
+begin
+  rpcRetrieveDefaultSetting(startD,endD,maxOc,msg);
+  today := FMToday;
+  if msg = 'NODEFAULT' then
+  begin
+    InfoBox('No default report settings are available', 'Warning', MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  //if (startD=startDate) and (endD=endDate) and (maxOc=maxOcurs) then
+  //  Exit;
+  stdate := DateToStr(FMDateTimeToDateTime(FMDateTimeOffsetBy(today, startD)));
+  endate := DateToStr(FMDateTimeToDateTime(FMDateTimeOffsetBy(today, endD)));
+  if InfoBox('Do you really want to change all of the reports settings to the default values as following?'
+    +#13#13' Start date: ' + stdate
+    +#13' End date: ' + endate
+    +#13' Max occurences: ' + IntToStr(maxOc)
+    +#13#13' Click Yes, all of the CPRS reports except for health summary reports will have these same settings.',
+    'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+    rpcDeleteUserLevelReportsSetting;
+    odcDfStart.Text := stdate;
+    odcDfStop.Text := endate;
+    edtDefaultMax.Text := inttostr(maxOc);
+    values := odcDfStart.RelativeTime + ';' + odcDfStop.RelativeTime + ';' + edtDefaultMax.Text;
+    rpcSetDefaultReportsSetting(values);
+    rpcActiveDefaultSetting;
+    sDate := odcDfStart.Text;
+    eDate := odcDfStop.Text;
+    startDate := startD;
+    endDate := endD;
+    maxOcurs := maxOc;
+    fillLabelText;
+    frmReports.LoadTreeView;
+    with frmReports.tvReports do
+     begin
+       if Items.Count > 0 then
+         Selected := Items.GetFirstNode;
+       frmReports.tvReportsClick(Selected);
+     end;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.edtDefaultMaxExit(Sender: TObject);
+var
+  newValue: string;
+  I, code: integer;
+begin
+  if edtDefaultMax.Modified then
+  begin
+
+  newValue := edtDefaultMax.Text;
+  if length(newValue) = 0 then
+    begin
+      InfoBox('Invalid value of max occurences', 'Warning', MB_OK or MB_ICONWARNING);
+      edtDefaultMax.Text := '100';
+    end;
+  if length(newValue) > 0 then
+    begin
+      Val(newValue, I, code);
+      if I = 0 then begin end; //added to keep compiler from generating a hint
+      if code <> 0 then
+        begin
+          InfoBox('Invalid value of max occurences', 'Warning', MB_OK or MB_ICONWARNING);
+          edtDefaultMax.Text := inttostr(maxOcurs);
+        end;
+      if code = 0 then
+        if strtoint(edtDefaultMax.Text) <= 0 then
+          begin
+            InfoBox('Invalid value of max occurences', 'Warning', MB_OK or MB_ICONWARNING);
+            edtDefaultMax.Text := inttostr(maxOcurs);
+          end;
+    end;
+  fillLabelText;
+
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.fillLabelText;
+var
+  fromday,dayto: string;
+begin
+  fromday := DateToStr(FMDateTimeToDateTime(odcDfStart.FMDateTime));
+  dayto := DateToStr(FMDateTimeToDateTime(odcDfStop.FMDateTime));
+  lblDefaultText.Text := 'All of the CPRS reports except for Health Summary reports will be displayed on the CPRS Reports tab from start date: '
+                       + fromday + ' to end date: ' + dayto + '.';
+end;
+
+procedure TfrmOptionsReportsDefault.edtDefaultStartKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.edtDefaultEndKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.edtDefaultMaxKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.FormCreate(Sender: TObject);
+var
+  today : TFMDateTime;
+begin
+  today := FMToday;
+  rpcGetDefaultReportsSetting(startDate,endDate,maxOcurs);
+  odcDfStart.text := DateToStr(FMDateTimeToDateTime(FMDateTimeOffsetBy(today, startDate)));
+  sDate := odcDfStart.Text;
+  odcDfStop.text := DateToStr(FMDateTimeToDateTime(FMDateTimeOffsetBy(today, endDate)));
+  eDate := odcDfStop.Text;
+  if maxOcurs <> 0 then
+    begin
+      edtDefaultMax.Text := inttostr(maxOcurs);
+      fillLabelText;
+    end;
+  lblDefaultText.Text := 'Click dots in boxes to set start and end dates. You can also input values directly.';
+  btnCancel.caption := 'Cancel';
+  if (not User.ToolsRptEdit) then // For users with Reports settings edit parameter not set.
+    begin
+      lblDefaultText.Text := 'Settings can only be viewed (no editing provided).';
+      btnReset.visible := false;
+      btnOK.visible := false;
+      btnCancel.caption := 'Close';
+      odcDfStart.readOnly := true;
+      odcDfStart.enabled := false;
+      odcDfStart.onExit := nil;
+      odcDfStart.onKeyPress := nil;
+      odcDfStop.readOnly := true;
+      odcDfStop.enabled := false;
+      odcDfStop.onExit := nil;
+      odcDfStop.onKeyPress := nil;
+      edtDefaultMax.readOnly := true;
+    end;
+end;
+
+procedure TfrmOptionsReportsDefault.odcDfStartExit(Sender: TObject);
+const
+  TX_BAD_START   = 'The start date is not valid.';
+  TX_STOPSTART   = 'The start date must not be after the stop date.';
+
+var
+  x,ErrMsg,datestart,datestop: String;
+begin
+    if odcDfStart.text = '' then
+    begin
+      InfoBox(TX_BAD_START, 'Warning', MB_OK or MB_ICONWARNING);
+      odcDfStart.Text := sDate;
+      odcDfStart.Setfocus;
+      odcDfStart.SelectAll;
+      exit;
+    end;
+
+    ErrMsg := '';
+    odcDfStart.Validate(x);
+    if Length(x) > 0 then
+      begin
+        ErrMsg := TX_BAD_START;
+        InfoBox(TX_BAD_START, 'Warning', MB_OK or MB_ICONWARNING);
+        odcDfStart.Text := sDate;
+        odcDfStart.Setfocus;
+        odcDfStart.SelectAll;
+        exit;
+      end;
+   datestart := odcDfStart.RelativeTime;
+   datestop := odcDfStop.RelativeTime;
+   delete(datestart,1,1);
+   delete(datestop,1,1);
+   if StrToIntDef(datestop,0) < StrToIntDef(datestart,0) then
+   begin
+    InfoBox(TX_STOPSTART, 'Warning', MB_OK or MB_ICONWARNING);
+    odcDfStart.Text := odcDfStop.Text;
+    odcDfStart.SetFocus;
+    odcDfStart.SelectAll;
+    exit;
+   end;
+   odcDfStart.Text := DateToStr(FMDateTimeToDateTime(odcDfStart.FMDateTime));
+   fillLabelText;
+end;
+
+procedure TfrmOptionsReportsDefault.odcDfStopExit(Sender: TObject);
+const
+  TX_BAD_STOP    = 'The stop date is not valid.';
+  TX_BAD_ORDER   = 'The stop date must not be earlier than start date.';
+var
+  x, ErrMsg,datestart,datestop: string;
+begin
+   if odcDfStop.text = '' then
+   begin
+      InfoBox(TX_BAD_STOP, 'Warning', MB_OK or MB_ICONWARNING);
+      odcDfStop.Text := eDate;
+      odcDfStop.Setfocus;
+      odcDfStop.SelectAll;
+      exit;
+   end;
+
+   ErrMsg := '';
+   odcDfStop.Validate(x);
+   if Length(x) > 0 then
+   begin
+     ErrMsg := TX_BAD_STOP;
+     InfoBox(TX_BAD_STOP, 'Warning', MB_OK or MB_ICONWARNING);
+     odcDfStop.Visible := True;
+     odcDfStop.Text := eDate;
+     odcDfStop.Setfocus;
+     odcDfStop.SelectAll;
+     exit;
+   end;
+   datestart := odcDfStart.RelativeTime;
+   datestop := odcDfStop.RelativeTime;
+   delete(datestart,1,1);
+   delete(datestop,1,1);
+   if StrToIntDef(datestop,0) < StrToIntDef(datestart,0) then
+   begin
+    InfoBox(TX_BAD_ORDER, 'Warning', MB_OK or MB_ICONWARNING);
+    odcDfStop.Text := odcDfStart.Text;
+    odcDfStop.SetFocus;
+    odcDfStop.SelectAll;
+    exit;
+   end;
+   odcDfStop.Text := DateToStr(FMDateTimeToDateTime(odcDfStop.FMDateTime));
+   fillLabelText;
+end;
+
+
+procedure TfrmOptionsReportsDefault.odcDfStartKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if Key = #27 then //Escape
+  begin
+    Key := #0;
+    btnCancel.Click;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.odcDfStopKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if Key = #27 then //Escape
+  begin
+    Key := #0;
+    btnCancel.Click;
+  end;
+end;
+
+procedure TfrmOptionsReportsDefault.odcDfStartClick(Sender: TObject);
+begin
+  odcDfStart.SelectAll;
+end;
+
+procedure TfrmOptionsReportsDefault.odcDfStopClick(Sender: TObject);
+begin
+  odcDfStop.SelectAll;
+end;
+
+procedure TfrmOptionsReportsDefault.edtDefaultMaxClick(Sender: TObject);
+begin
+  edtDefaultMax.SelectAll;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSubscribe.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSubscribe.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSubscribe.dfm	(revision 1676)
@@ -0,0 +1,67 @@
+inherited frmOptionsSubscribe: TfrmOptionsSubscribe
+  Left = 309
+  Top = 103
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsSingle
+  Caption = 'Subscribe to a Team'
+  ClientHeight = 216
+  ClientWidth = 302
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBottom: TPanel [0]
+    Left = 0
+    Top = 184
+    Width = 302
+    Height = 32
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 0
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 302
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 109
+      Top = 2
+      Width = 75
+      Height = 22
+      HelpContext = 9003
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+    end
+    object btnCancel: TButton
+      Left = 205
+      Top = 2
+      Width = 75
+      Height = 22
+      HelpContext = 9004
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsSubscribe'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSubscribe.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSubscribe.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSubscribe.pas	(revision 1676)
@@ -0,0 +1,49 @@
+unit fOptionsSubscribe;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptionsSubscribe = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    bvlBottom: TBevel;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsSubscribe: TfrmOptionsSubscribe;
+
+procedure DialogOptionsSubscribe(fontsize: integer; var actiontype: Integer);
+
+implementation
+
+{$R *.DFM}
+
+procedure DialogOptionsSubscribe(fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsSubscribe: TfrmOptionsSubscribe;
+begin
+  frmOptionsSubscribe := TfrmOptionsSubscribe.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsSubscribe do
+    begin
+      Font.Size := MainFontSize;
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsSubscribe.Release;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSurrogate.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSurrogate.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSurrogate.dfm	(revision 1676)
@@ -0,0 +1,205 @@
+inherited frmOptionsSurrogate: TfrmOptionsSurrogate
+  Left = 232
+  Top = 107
+  HelpContext = 9100
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Surrogate for Notifications'
+  ClientHeight = 136
+  ClientWidth = 313
+  HelpFile = 'CPRSWT.HLP'
+  OnShow = FormShow
+  ExplicitLeft = 232
+  ExplicitTop = 107
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSurrogate: TLabel [0]
+    Left = 7
+    Top = 51
+    Width = 49
+    Height = 13
+    Caption = 'Surrogate:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+  end
+  object lblSurrogateText: TStaticText [1]
+    Left = 157
+    Top = 4
+    Width = 81
+    Height = 17
+    Caption = 'lblSurrogateText'
+    TabOrder = 4
+  end
+  object lblStart: TStaticText [2]
+    Left = 157
+    Top = 24
+    Width = 36
+    Height = 17
+    Caption = 'lblStart'
+    TabOrder = 5
+  end
+  object lblStop: TStaticText [3]
+    Left = 157
+    Top = 44
+    Width = 36
+    Height = 17
+    Caption = 'lblStop'
+    TabOrder = 6
+  end
+  object cboSurrogate: TORComboBox [4]
+    Left = 7
+    Top = 66
+    Width = 145
+    Height = 21
+    HelpContext = 9102
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Surrogate'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnChange = cboSurrogateChange
+    OnExit = cboSurrogateChange
+    OnKeyDown = cboSurrogateKeyDown
+    OnNeedData = cboSurrogateNeedData
+    CharsNeedMatch = 1
+  end
+  object btnSurrogateDateRange: TButton [5]
+    Left = 157
+    Top = 66
+    Width = 145
+    Height = 22
+    HelpContext = 9103
+    Caption = 'Surrogate Date Range...'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+    OnClick = btnSurrogateDateRangeClick
+  end
+  object btnRemove: TButton [6]
+    Left = 7
+    Top = 20
+    Width = 145
+    Height = 22
+    HelpContext = 9101
+    Caption = 'Remove Surrogate'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+    OnClick = btnRemoveClick
+  end
+  object pnlBottom: TPanel [7]
+    Left = 0
+    Top = 103
+    Width = 313
+    Height = 33
+    HelpContext = 9100
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 2
+    DesignSize = (
+      313
+      33)
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 313
+      Height = 2
+      Align = alTop
+    end
+    object btnCancel: TButton
+      Left = 229
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+    object btnOK: TButton
+      Left = 149
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblSurrogateText'
+        'Status = stsDefault')
+      (
+        'Component = lblStart'
+        'Status = stsDefault')
+      (
+        'Component = lblStop'
+        'Status = stsDefault')
+      (
+        'Component = cboSurrogate'
+        'Status = stsDefault')
+      (
+        'Component = btnSurrogateDateRange'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsSurrogate'
+        'Status = stsDefault'))
+  end
+  object dlgSurrogateDateRange: TORDateRangeDlg
+    DateOnly = False
+    Instruction = 
+      'Enter a date range to begin and end when this will be in effect.' +
+      ' Otherwise it will always be in effect.'
+    LabelStart = 'Start Date'
+    LabelStop = 'Stop Date'
+    RequireTime = False
+    Format = 'mmm d,yy@hh:nn'
+    TextOfStop = 'Jun 6,99@12:45'
+    Left = 265
+    Top = 4
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSurrogate.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSurrogate.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsSurrogate.pas	(revision 1676)
@@ -0,0 +1,251 @@
+unit fOptionsSurrogate;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORDtTmRng, ORFn, ExtCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsSurrogate = class(TfrmBase508Form)
+    lblSurrogate: TLabel;
+    cboSurrogate: TORComboBox;
+    btnSurrogateDateRange: TButton;
+    dlgSurrogateDateRange: TORDateRangeDlg;
+    lblSurrogateText: TStaticText;
+    btnRemove: TButton;
+    lblStart: TStaticText;
+    lblStop: TStaticText;
+    pnlBottom: TPanel;
+    bvlBottom: TBevel;
+    btnCancel: TButton;
+    btnOK: TButton;
+    procedure FormShow(Sender: TObject);
+    procedure btnSurrogateDateRangeClick(Sender: TObject);
+    procedure cboSurrogateNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure btnOKClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure cboSurrogateChange(Sender: TObject);
+    procedure cboSurrogateKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+    procedure LabelInfo;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsSurrogate: TfrmOptionsSurrogate;
+
+procedure DialogOptionsSurrogate(topvalue, leftvalue, fontsize: integer; var info: string);
+
+implementation
+
+uses rOptions, uOptions, rCore;
+
+var
+  Surrogate, TempSurrogate: TSurrogate;
+
+{$R *.DFM}
+
+procedure DialogOptionsSurrogate(topvalue, leftvalue, fontsize: integer; var info: string);
+// create the form and make it modal
+var
+  frmOptionsSurrogate: TfrmOptionsSurrogate;
+begin
+  frmOptionsSurrogate := TfrmOptionsSurrogate.Create(Application);
+  Surrogate := TSurrogate.Create;           // saved settings
+  TempSurrogate := TSurrogate.Create;       // unsaved settings
+ try
+    with frmOptionsSurrogate do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsSurrogate);
+      with Surrogate do
+      begin
+        IEN := StrToInt64Def(Piece(info, '^', 1), -1);
+        Name := Piece(info, '^', 2);
+        Start := MakeFMDateTime(Piece(info, '^', 3));
+        Stop := MakeFMDateTime(Piece(info, '^', 4));
+      end;
+      with TempSurrogate do
+      begin
+        IEN := Surrogate.IEN;
+        Name := Surrogate.Name;
+        Start := Surrogate.Start;
+        Stop := Surrogate.Stop;
+      end;
+      ShowModal;
+      info := '';
+      info := info + IntToStr(Surrogate.IEN) + '^';
+      info := info + Surrogate.Name + '^';
+      info := info + FloatToStr(Surrogate.Start) + '^';
+      info := info + FloatToStr(Surrogate.Stop) + '^';
+    end;
+  finally
+    frmOptionsSurrogate.Release;
+    Surrogate.Free;
+    TempSurrogate.Free;
+  end;
+end;
+
+procedure TfrmOptionsSurrogate.FormShow(Sender: TObject);
+begin
+  cboSurrogate.InitLongList(Surrogate.Name);
+  cboSurrogate.SelectByIEN(Surrogate.IEN);
+  LabelInfo;
+end;
+
+procedure TfrmOptionsSurrogate.btnSurrogateDateRangeClick(Sender: TObject);
+var
+  TempFMDate: TFMDateTime;
+  ok : boolean;
+begin
+  ok := false;
+  with dlgSurrogateDateRange do
+  while not ok do
+  begin
+    FMDateStart := TempSurrogate.Start;
+    FMDateStop := TempSurrogate.Stop;
+    if Execute then
+    begin
+      If (FMDateStop <> 0) and (FMDateStart > FMDateStop) then
+      begin
+        TempFMDate := FMDateStart;
+        FMDateStart := FMDateStop;
+        FMDateStop := TempFMDate;
+      end;
+      with TempSurrogate do
+      begin
+        Start := FMDateStart;
+        Stop := FMDateStop;
+        LabelInfo;
+        if (Stop <> 0) and (Stop < DateTimeToFMDateTime(Now)) then
+        begin
+          beep;
+          InfoBox('Stop Date must be in the future.', 'Warning', MB_OK or MB_ICONWARNING);
+          Stop := 0;
+        end
+        else
+          ok := true;
+      end;
+    end
+    else
+      ok := true;
+  end;
+end;
+
+procedure TfrmOptionsSurrogate.cboSurrogateNeedData(
+  Sender: TObject; const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboSurrogate.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmOptionsSurrogate.btnOKClick(Sender: TObject);
+var
+  info, msg: string;
+  ok: boolean;
+begin
+  //rpcCheckSurrogate(TempSurrogate.IEN, ok, msg);   chack is now in rpcSetSurrogateInfo (v27.29 - RV)
+  ok := TRUE;
+  info := '';
+  info := info + IntToStr(TempSurrogate.IEN) + '^';
+  info := info + FloatToStr(TempSurrogate.Start) + '^';
+  info := info + FloatToStr(TempSurrogate.Stop) + '^';
+  rpcSetSurrogateInfo(info, ok, msg);
+  if not ok then
+  begin
+    beep;
+    InfoBox(msg, 'Warning', MB_OK or MB_ICONWARNING);
+    with cboSurrogate do ItemIndex := SetExactByIEN(Surrogate.IEN, Surrogate.Name);
+    cboSurrogateChange(Self);
+    ModalResult := mrNone;
+  end
+  else
+  begin
+    with Surrogate do
+    begin
+      IEN := TempSurrogate.IEN;
+      Name := TempSurrogate.Name;
+      Start := TempSurrogate.Start;
+      Stop := TempSurrogate.Stop;
+    end;
+    ModalResult := mrOK;
+  end;
+end;
+
+procedure TfrmOptionsSurrogate.btnRemoveClick(Sender: TObject);
+begin
+  cboSurrogate.ItemIndex := -1;
+  cboSurrogate.Text := '';
+  with TempSurrogate do
+  begin
+    IEN := -1;
+    Name := '';
+    Start := 0;
+    Stop := 0;
+  end;
+  LabelInfo;
+end;
+
+procedure TfrmOptionsSurrogate.LabelInfo;
+begin
+  with TempSurrogate do
+  begin
+    btnRemove.Enabled := length(Name) > 0;
+    btnSurrogateDateRange.Enabled := length(Name) > 0;
+    if length(Name) > 0 then
+      lblSurrogateText.Caption := Name
+    else
+    begin
+      lblSurrogateText.Caption := '<no surrogate designated>';
+      Start := 0;
+      Stop := 0;
+    end;
+    if Start > 0 then
+      lblStart.Caption := 'from: ' + FormatFMDateTime('mmm d,yyyy@hh:nn', Start)
+    else
+      lblStart.Caption := 'from: <now>';
+    if Stop > 0 then
+      lblStop.Caption := 'until: ' + FormatFMDateTime('mmm d,yyyy@hh:nn', Stop)
+    else
+      lblStop.Caption := 'until: <changed>';
+  end;
+end;
+
+procedure TfrmOptionsSurrogate.cboSurrogateChange(Sender: TObject);
+begin
+  with cboSurrogate do
+  if (ItemIndex = -1) or (Text = '') then
+  begin
+    TempSurrogate.IEN := -1;
+    TempSurrogate.Name := '';
+    ItemIndex := -1;
+    Text := '';
+  end
+  else
+  begin
+    TempSurrogate.IEN := ItemIEN;
+    TempSurrogate.Name := DisplayText[cboSurrogate.ItemIndex];
+  end;
+  LabelInfo;
+end;
+
+procedure TfrmOptionsSurrogate.cboSurrogateKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if cboSurrogate.ItemIndex = -1 then       // allow typing to do change event
+    Application.ProcessMessages;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTeams.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTeams.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTeams.dfm	(revision 1676)
@@ -0,0 +1,249 @@
+inherited frmOptionsTeams: TfrmOptionsTeams
+  Left = 730
+  Top = 96
+  HelpContext = 9090
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Team Information'
+  ClientHeight = 369
+  ClientWidth = 384
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblTeams: TLabel [0]
+    Left = 10
+    Top = 70
+    Width = 115
+    Height = 13
+    Caption = 'You are on these teams:'
+  end
+  object lblPatients: TLabel [1]
+    Left = 200
+    Top = 70
+    Width = 130
+    Height = 13
+    Caption = 'Patients on selected teams:'
+  end
+  object lblTeamMembers: TLabel [2]
+    Left = 200
+    Top = 214
+    Width = 75
+    Height = 13
+    Caption = 'Team members:'
+  end
+  object lblSubscribe: TLabel [3]
+    Left = 8
+    Top = 270
+    Width = 97
+    Height = 13
+    Caption = 'Subscribe to a team:'
+  end
+  object lblInfo: TMemo [4]
+    Left = 8
+    Top = 8
+    Width = 369
+    Height = 33
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      
+        'View team information by selecting teams. You can subscribe or r' +
+        'emove '
+      'yourself from teams.')
+    ReadOnly = True
+    TabOrder = 8
+  end
+  object pnlBottom: TPanel [5]
+    Left = 0
+    Top = 336
+    Width = 384
+    Height = 33
+    HelpContext = 9090
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 7
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 384
+      Height = 2
+      Align = alTop
+    end
+    object btnClose: TButton
+      Left = 301
+      Top = 8
+      Width = 75
+      Height = 22
+      HelpContext = 9998
+      Cancel = True
+      Caption = 'Close'
+      ModalResult = 2
+      TabOrder = 0
+    end
+  end
+  object lstPatients: TORListBox [6]
+    Left = 200
+    Top = 86
+    Width = 175
+    Height = 121
+    HelpContext = 9091
+    ItemHeight = 13
+    ParentShowHint = False
+    PopupMenu = mnuPopPatient
+    ShowHint = True
+    Sorted = True
+    TabOrder = 5
+    OnMouseDown = lstPatientsMouseDown
+    Caption = 'Patients on selected teams'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object lstTeams: TORListBox [7]
+    Left = 10
+    Top = 86
+    Width = 175
+    Height = 145
+    HelpContext = 9092
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    Sorted = True
+    TabOrder = 2
+    OnClick = lstTeamsClick
+    Caption = 'You are on these teams'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object lstUsers: TORListBox [8]
+    Left = 200
+    Top = 230
+    Width = 175
+    Height = 97
+    HelpContext = 9093
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    Sorted = True
+    TabOrder = 6
+    Caption = 'Team members'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object btnRemove: TButton [9]
+    Left = 10
+    Top = 241
+    Width = 175
+    Height = 22
+    HelpContext = 9094
+    Caption = 'Remove yourself from this team'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+    OnClick = btnRemoveClick
+  end
+  object chkPersonal: TCheckBox [10]
+    Left = 10
+    Top = 40
+    Width = 175
+    Height = 17
+    HelpContext = 9096
+    Caption = 'Include personal lists'
+    TabOrder = 0
+    OnClick = chkPersonalClick
+  end
+  object chkRestrict: TCheckBox [11]
+    Left = 200
+    Top = 40
+    Width = 185
+    Height = 17
+    HelpContext = 9097
+    Caption = 'View only common members'
+    Enabled = False
+    TabOrder = 1
+    Visible = False
+    OnClick = chkRestrictClick
+  end
+  object cboSubscribe: TORComboBox [12]
+    Left = 12
+    Top = 287
+    Width = 175
+    Height = 21
+    HelpContext = 9095
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Subscribe to a team'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnClick = cboSubscribeClick
+    OnKeyDown = cboSubscribeKeyDown
+    OnMouseClick = cboSubscribeMouseClick
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblInfo'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = lstPatients'
+        'Status = stsDefault')
+      (
+        'Component = lstTeams'
+        'Status = stsDefault')
+      (
+        'Component = lstUsers'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = chkPersonal'
+        'Status = stsDefault')
+      (
+        'Component = chkRestrict'
+        'Status = stsDefault')
+      (
+        'Component = cboSubscribe'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsTeams'
+        'Status = stsDefault'))
+  end
+  object mnuPopPatient: TPopupMenu
+    Top = 336
+    object mnuPatientID: TMenuItem
+      Caption = 'Patient ID...'
+      OnClick = mnuPatientIDClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTeams.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTeams.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTeams.pas	(revision 1676)
@@ -0,0 +1,301 @@
+unit fOptionsTeams;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, OrFn, Menus, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOptionsTeams = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnClose: TButton;
+    lstPatients: TORListBox;
+    lstTeams: TORListBox;
+    lblTeams: TLabel;
+    lblPatients: TLabel;
+    lstUsers: TORListBox;
+    lblTeamMembers: TLabel;
+    btnRemove: TButton;
+    chkPersonal: TCheckBox;
+    chkRestrict: TCheckBox;
+    bvlBottom: TBevel;
+    lblInfo: TMemo;
+    lblSubscribe: TLabel;
+    cboSubscribe: TORComboBox;
+    mnuPopPatient: TPopupMenu;
+    mnuPatientID: TMenuItem;
+    procedure FormCreate(Sender: TObject);
+    procedure chkPersonalClick(Sender: TObject);
+    procedure lstTeamsClick(Sender: TObject);
+    procedure chkRestrictClick(Sender: TObject);
+    procedure cboSubscribeClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure mnuPatientIDClick(Sender: TObject);
+    procedure lstPatientsMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure cboSubscribeKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboSubscribeMouseClick(Sender: TObject);
+  private
+    FKeyBoarding: boolean;
+    { Private declarations }
+    procedure FillATeams;
+    procedure FillList(alist: TORListBox; members: TStrings);
+    procedure MergeList(alist: TORListBox; members: TStrings);
+    function ItemNotAMember(alist: TStrings; listnum: string): boolean;
+    function MemberNotOnList(alist: TStrings; listnum: string): boolean;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsTeams: TfrmOptionsTeams;
+
+procedure DialogOptionsTeams(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+uses rOptions, uOptions, rCore, fOptions;
+
+{$R *.DFM}
+
+procedure DialogOptionsTeams(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsTeams: TfrmOptionsTeams;
+begin
+  frmOptionsTeams := TfrmOptionsTeams.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsTeams do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsTeams);
+      ShowModal;
+    end;
+  finally
+    frmOptionsTeams.Release;
+  end;
+end;
+
+procedure TfrmOptionsTeams.FormCreate(Sender: TObject);
+begin
+  rpcGetTeams(lstTeams.Items);
+  lstTeams.ItemIndex := -1;
+  FillATeams;
+end;
+
+procedure TfrmOptionsTeams.FillATeams;
+var
+  i: integer;
+  alist: TStringList;
+begin
+  cboSubscribe.Items.Clear;
+  alist := TStringList.Create;
+  rpcGetAteams(alist);
+  for i := 0 to alist.Count - 1 do
+  if MemberNotOnList(lstTeams.Items, Piece(alist[i], '^', 1)) then
+    cboSubscribe.Items.Add(alist[i]);
+  cboSubscribe.Enabled := cboSubscribe.Items.Count > 0;
+  lblSubscribe.Enabled := cboSubscribe.Items.Count > 0;
+  alist.Free;
+end;
+
+procedure TfrmOptionsTeams.FillList(alist: TORListBox; members: TStrings);
+var
+  i: integer;
+begin
+  for i := 0 to members.Count - 1 do
+  if MemberNotOnList(alist.Items, Piece(members[i], '^', 1)) then
+    alist.Items.Add(members[i]);
+end;
+
+procedure TfrmOptionsTeams.MergeList(alist: TORListBox; members: TStrings);
+var
+  i: integer;
+begin
+  for i := alist.Items.Count - 1 downto 0 do
+  if ItemNotAMember(members, Piece(alist.Items[i], '^', 1)) then
+    alist.Items.Delete(i);
+end;
+
+function TfrmOptionsTeams.ItemNotAMember(alist: TStrings; listnum: string): boolean;
+var
+  i: integer;
+begin
+  result := true;
+  for i := 0 to alist.Count - 1 do
+    if listnum = Piece(alist[i], '^', 1) then
+    begin
+      result := false;
+      break;
+    end;
+end;
+
+function TfrmOptionsTeams.MemberNotOnList(alist: TStrings; listnum: string): boolean;
+var
+  i: integer;
+begin
+  result := true;
+  with alist do
+  for i := 0 to Count - 1 do
+    if listnum = Piece(alist[i], '^', 1) then
+    begin
+      result := false;
+      break;
+    end;
+end;
+
+procedure TfrmOptionsTeams.chkPersonalClick(Sender: TObject);
+begin
+  lstTeams.Items.Clear;
+  if chkPersonal.Checked then
+    rpcGetAllTeams(lstTeams.Items)
+  else
+    rpcGetTeams(lstTeams.Items);
+  lstTeams.ItemIndex := -1;
+  lstTeamsClick(self);
+end;
+
+procedure TfrmOptionsTeams.lstTeamsClick(Sender: TObject);
+var
+  i, teamid, cnt: integer;
+  astrings: TStringList;
+begin
+  lstPatients.Items.Clear;
+  lstUsers.Items.Clear;
+  chkRestrict.Enabled := lstTeams.SelCount > 1;
+  astrings := TStringList.Create;
+  cnt := 0;
+  with lstTeams do
+  begin
+    for i := 0 to Items.Count - 1 do
+    if Selected[i] then
+    begin
+      inc(cnt);
+      teamid := strtointdef(Piece(Items[i], '^', 1), 0);
+      if (cnt > 1) and chkRestrict.Checked then
+      begin
+        ListPtByTeam(astrings, teamid);
+        MergeList(lstPatients, astrings);
+        rpcListUsersByTeam(astrings, teamid);
+        MergeList(lstUsers, astrings);
+      end
+      else
+      begin
+        ListPtByTeam(astrings, teamid);
+        if astrings.Count = 1 then         // don't fill the '^No patients found.' msg
+        begin
+          if Piece(astrings[0], '^', 1) <> '' then
+            FillList(lstPatients, astrings);
+        end
+        else
+          FillList(lstPatients, astrings);
+        rpcListUsersByTeam(astrings, teamid);
+        FillList(lstUsers, astrings);
+      end;
+    end;
+    btnRemove.Enabled := (SelCount = 1)
+                          and (Piece(Items[ItemIndex], '^', 3) <> 'P')
+                          and (Piece(Items[ItemIndex], '^', 7) = 'Y');
+    if SelCount > 0 then
+    begin
+      if lstPatients.Items.Count = 0 then
+        lstPatients.Items.Add('^No patients found.');
+      if lstUsers.Items.Count = 0 then
+        lstUsers.Items.Add('^No team members found.');
+    end;
+  end;
+  astrings.Free;
+end;
+
+procedure TfrmOptionsTeams.chkRestrictClick(Sender: TObject);
+begin
+  lstTeamsClick(self);
+end;
+
+procedure TfrmOptionsTeams.cboSubscribeClick(Sender: TObject);
+begin
+  FKeyBoarding := False
+end;
+
+procedure TfrmOptionsTeams.btnRemoveClick(Sender: TObject);
+begin
+  with lstTeams do
+    if InfoBox('Do you want to remove yourself from '
+      + Piece(Items[ItemIndex], '^', 2) + '?',
+      'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+    rpcRemoveList(ItemIEN);
+    Items.Delete(ItemIndex);
+    lstTeamsClick(self);
+    FillATeams;
+  end;
+end;
+
+procedure TfrmOptionsTeams.mnuPatientIDClick(Sender: TObject);
+begin
+  DisplayPtInfo(lstPatients.ItemID);
+end;
+
+procedure TfrmOptionsTeams.lstPatientsMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  mnuPopPatient.AutoPopup := (lstPatients.Items.Count > 0)
+                              and (lstPatients.ItemIndex > -1)
+                              and (Button = mbRight);
+end;
+
+procedure TfrmOptionsTeams.cboSubscribeKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  case Key of VK_RETURN:
+    if (cboSubscribe.ItemIndex > -1) then
+    begin
+      FKeyBoarding := False;
+      cboSubscribeMouseClick(self); // Provide onmouseclick behavior.
+    end;
+  else
+    FKeyBoarding := True; // Suppress onmouseclick behavior.
+  end;
+end;
+
+procedure TfrmOptionsTeams.cboSubscribeMouseClick(Sender: TObject);
+begin
+  if FKeyBoarding then
+    FKeyBoarding := False
+  else
+  begin
+    with cboSubscribe do
+    if ItemIndex < 0 then
+      exit
+    else if InfoBox('Do you want to join '
+      + Piece(Items[ItemIndex], '^', 2) + '?',
+      'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      rpcAddList(ItemIEN);
+      lstTeams.Items.Add(Items[ItemIndex]);
+      Items.Delete(ItemIndex);
+      ItemIndex := -1;
+      Text := '';
+      Enabled := Items.Count > 0;
+      lblSubscribe.Enabled := Items.Count > 0;
+    end
+    else
+    begin
+      ItemIndex := -1;
+      Text := '';
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTitles.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTitles.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTitles.dfm	(revision 1676)
@@ -0,0 +1,310 @@
+inherited frmOptionsTitles: TfrmOptionsTitles
+  Left = 271
+  Top = 271
+  HelpContext = 9230
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsSingle
+  Caption = 'Document Titles'
+  ClientHeight = 237
+  ClientWidth = 527
+  HelpFile = 'CPRSWT.HLP'
+  Position = poScreenCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblDocumentClass: TLabel [0]
+    Left = 8
+    Top = 17
+    Width = 79
+    Height = 13
+    Caption = 'Document class:'
+  end
+  object lblDocumentTitles: TLabel [1]
+    Left = 8
+    Top = 57
+    Width = 76
+    Height = 13
+    Caption = 'Document titles:'
+  end
+  object lblYourTitles: TLabel [2]
+    Left = 299
+    Top = 78
+    Width = 76
+    Height = 13
+    Caption = 'Your list of titles:'
+  end
+  object lblDefaultTitle: TStaticText [3]
+    Left = 299
+    Top = 43
+    Width = 41
+    Height = 17
+    Caption = 'Default:'
+    TabOrder = 10
+  end
+  object lblDefault: TStaticText [4]
+    Left = 299
+    Top = 59
+    Width = 108
+    Height = 17
+    Caption = '<no default specified>'
+    ShowAccelChar = False
+    TabOrder = 11
+  end
+  object lblDocumentPreference: TStaticText [5]
+    Left = 199
+    Top = 6
+    Width = 132
+    Height = 17
+    Caption = 'Document List Preferences'
+    TabOrder = 12
+  end
+  object cboDocumentClass: TORComboBox [6]
+    Left = 8
+    Top = 31
+    Width = 200
+    Height = 21
+    HelpContext = 9231
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Document class'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnClick = cboDocumentClassClick
+    CharsNeedMatch = 1
+  end
+  object lstYourTitles: TORListBox [7]
+    Left = 299
+    Top = 93
+    Width = 200
+    Height = 108
+    HelpContext = 9237
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 6
+    OnClick = lstYourTitlesClick
+    OnDblClick = btnRemoveClick
+    Caption = 'Your list of titles'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    OnChange = lstYourTitlesChange
+  end
+  object btnAdd: TButton [8]
+    Left = 211
+    Top = 93
+    Width = 85
+    Height = 22
+    HelpContext = 9233
+    Caption = 'Add'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 2
+    OnClick = btnAddClick
+  end
+  object btnRemove: TButton [9]
+    Left = 211
+    Top = 121
+    Width = 85
+    Height = 22
+    HelpContext = 9234
+    Caption = 'Remove'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+    OnClick = btnRemoveClick
+  end
+  object btnDefault: TButton [10]
+    Left = 211
+    Top = 178
+    Width = 85
+    Height = 22
+    HelpContext = 9236
+    Caption = 'Set as Default'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 5
+    OnClick = btnDefaultClick
+  end
+  object btnSaveChanges: TButton [11]
+    Left = 211
+    Top = 150
+    Width = 85
+    Height = 22
+    HelpContext = 9235
+    Caption = 'Save Changes'
+    Enabled = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 4
+    OnClick = btnSaveChangesClick
+  end
+  object pnlBottom: TPanel [12]
+    Left = 0
+    Top = 204
+    Width = 527
+    Height = 33
+    HelpContext = 9110
+    Align = alBottom
+    BevelOuter = bvNone
+    ParentColor = True
+    TabOrder = 9
+    object bvlBottom: TBevel
+      Left = 0
+      Top = 0
+      Width = 527
+      Height = 2
+      Align = alTop
+    end
+    object btnOK: TButton
+      Left = 367
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9996
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 448
+      Top = 7
+      Width = 75
+      Height = 22
+      HelpContext = 9997
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+  end
+  object cboDocumentTitles: TORComboBox [13]
+    Left = 8
+    Top = 72
+    Width = 200
+    Height = 129
+    HelpContext = 9232
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Document titles'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnChange = cboDocumentTitlesChange
+    OnDblClick = btnAddClick
+    OnNeedData = cboDocumentTitlesNeedData
+    CharsNeedMatch = 1
+  end
+  object btnUp: TButton [14]
+    Left = 504
+    Top = 110
+    Width = 22
+    Height = 22
+    HelpContext = 9021
+    Caption = '^'
+    TabOrder = 7
+    OnClick = btnUpClick
+  end
+  object btnDown: TButton [15]
+    Left = 504
+    Top = 150
+    Width = 22
+    Height = 22
+    HelpContext = 9022
+    Caption = 'v'
+    TabOrder = 8
+    OnClick = btnDownClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblDefaultTitle'
+        'Status = stsDefault')
+      (
+        'Component = lblDefault'
+        'Status = stsDefault')
+      (
+        'Component = lblDocumentPreference'
+        'Status = stsDefault')
+      (
+        'Component = cboDocumentClass'
+        'Status = stsDefault')
+      (
+        'Component = lstYourTitles'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnDefault'
+        'Status = stsDefault')
+      (
+        'Component = btnSaveChanges'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboDocumentTitles'
+        'Status = stsDefault')
+      (
+        'Component = btnUp'
+        'Status = stsDefault')
+      (
+        'Component = btnDown'
+        'Status = stsDefault')
+      (
+        'Component = frmOptionsTitles'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTitles.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTitles.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/fOptionsTitles.pas	(revision 1676)
@@ -0,0 +1,437 @@
+unit fOptionsTitles;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ORCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmOptionsTitles = class(TfrmBase508Form)
+    lblDocumentClass: TLabel;
+    lblDocumentTitles: TLabel;
+    lblYourTitles: TLabel;
+    lblDefaultTitle: TStaticText;
+    lblDefault: TStaticText;
+    cboDocumentClass: TORComboBox;
+    lstYourTitles: TORListBox;
+    btnAdd: TButton;
+    btnRemove: TButton;
+    btnDefault: TButton;
+    btnSaveChanges: TButton;
+    pnlBottom: TPanel;
+    bvlBottom: TBevel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    cboDocumentTitles: TORComboBox;
+    lblDocumentPreference: TStaticText;
+    btnUp: TButton;
+    btnDown: TButton;
+    procedure FormShow(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure cboDocumentClassClick(Sender: TObject);
+    procedure cboDocumentTitlesNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure btnSaveChangesClick(Sender: TObject);
+    procedure btnDefaultClick(Sender: TObject);
+    procedure btnAddClick(Sender: TObject);
+    procedure lstYourTitlesChange(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure cboDocumentTitlesChange(Sender: TObject);
+    procedure btnUpClick(Sender: TObject);
+    procedure btnDownClick(Sender: TObject);
+    function GetFirstSelection(aList: TORListBox): integer;
+    procedure SetItem(aList: TORListBox; index: integer);
+    procedure RemoveSelected;
+    procedure lstYourTitlesClick(Sender: TObject);
+  private
+    { Private declarations }
+    FLastClass: integer;
+    procedure AddIfUnique(entry: string; aList: TORListBox);
+    function MemberNotOnList(alist: TStrings; listnum: string): boolean;
+    procedure CheckEnable;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOptionsTitles: TfrmOptionsTitles;
+
+procedure DialogOptionsTitles(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rOptions, uOptions, rCore, rTIU, rConsults, rDCSumm;
+
+procedure DialogOptionsTitles(topvalue, leftvalue, fontsize: integer; var actiontype: Integer);
+// create the form and make it modal, return an action
+var
+  frmOptionsTitles: TfrmOptionsTitles;
+begin
+  frmOptionsTitles := TfrmOptionsTitles.Create(Application);
+  actiontype := 0;
+  try
+    with frmOptionsTitles do
+    begin
+      if (topvalue < 0) or (leftvalue < 0) then
+        Position := poScreenCenter
+      else
+      begin
+        Position := poDesigned;
+        Top := topvalue;
+        Left := leftvalue;
+      end;
+      ResizeAnchoredFormToFont(frmOptionsTitles);
+      ShowModal;
+      actiontype := btnOK.Tag;
+    end;
+  finally
+    frmOptionsTitles.Release;
+  end;
+end;
+
+procedure TfrmOptionsTitles.FormShow(Sender: TObject);
+var
+  i: integer;
+begin
+  FLastClass := -1;
+  with cboDocumentClass do
+  begin
+    FastAssign(rpcGetClasses, cboDocumentClass.Items);
+    Items.Add(IntToStr(IdentifyConsultsClass) + U + 'Consults');
+    for i := 0 to Items.Count - 1 do
+      if Piece(Items[i], '^', 2) = 'Progress Notes' then
+      begin
+        ItemIndex := i;
+        FLastClass := ItemIndex;
+        break;
+      end;
+  end;
+  cboDocumentClassClick(self);
+end;
+
+procedure TfrmOptionsTitles.btnOKClick(Sender: TObject);
+begin
+  if btnSaveChanges.Enabled then
+    btnSaveChangesClick(self);
+  ResetTIUPreferences;
+  ResetDCSummPreferences;
+end;
+
+procedure TfrmOptionsTitles.cboDocumentClassClick(Sender: TObject);
+var
+  aList: TStringList;
+  defaultIEN: integer;
+begin
+  if btnSaveChanges.Enabled then
+  begin
+    if InfoBox('Do you want to save changes to your '
+        + Piece(cboDocumentClass.Items[FLastClass], '^', 2) + ' defaults?',
+        'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+      btnSaveChangesClick(self);
+  end;
+  cboDocumentTitles.Text := '';
+  cboDocumentTitles.InitLongList('');
+  aList := TStringList.Create;
+  with lstYourTitles do
+  begin
+    FastAssign(rpcGetTitlesForUser(cboDocumentClass.ItemIEN), aList);
+    SortByPiece(aList, '^', 3);
+    FastAssign(aList, lstYourTitles.Items);
+    defaultIEN := rpcGetTitleDefault(cboDocumentClass.ItemIEN);
+    if defaultIEN > 0 then SelectByIEN(defaultIEN)
+    else ItemIndex := -1;
+    if ItemIndex > -1 then
+    begin
+      lblDefault.Caption := DisplayText[ItemIndex];
+      lblDefault.Tag := ItemIEN;
+    end
+    else
+    begin
+      lblDefault.Caption := '<no default specified>';
+      lblDefault.Tag := 0;
+    end;
+  end;
+  lstYourTitlesChange(self);
+  btnSaveChanges.Enabled := false;
+  FLastClass := cboDocumentClass.ItemIndex;
+  aList.Free;
+  CheckEnable;
+end;
+
+procedure TfrmOptionsTitles.cboDocumentTitlesNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  with cboDocumentTitles do
+    begin
+      HideSynonyms := (cboDocumentClass.ItemIEN <> CLS_PROGRESS_NOTES);
+      ForDataUse(rpcGetTitlesForClass(cboDocumentClass.ItemIEN, StartFrom, Direction));
+    end;
+end;
+
+procedure TfrmOptionsTitles.btnSaveChangesClick(Sender: TObject);
+var
+  classnum: integer;
+begin
+  classnum := strtointdef(Piece(cboDocumentClass.Items[FLastClass], '^', 1), 0);
+  if classnum > 0 then
+  begin
+    rpcSaveDocumentDefaults(classnum, lblDefault.Tag, lstYourTitles.Items);
+    btnSaveChanges.Enabled := false;
+    if      classnum =  CLS_PROGRESS_NOTES     then ResetNoteTitles
+    else if classnum =  CLS_DC_SUMM            then ResetDCSummTitles
+    else if classnum =  IdentifyConsultsClass  then ResetConsultTitles
+    else if classnum =  IdentifyClinProcClass  then ResetClinProcTitles;
+  end;
+end;
+
+procedure TfrmOptionsTitles.btnDefaultClick(Sender: TObject);
+begin
+  with lstYourTitles do
+    if ItemIndex > -1 then
+    begin
+      if btnDefault.Caption = 'Set as Default' then
+      begin
+        lblDefault.Caption := DisplayText[ItemIndex];
+        lblDefault.Tag := ItemIEN;
+        btnDefault.Caption := 'Remove Default';
+      end
+      else
+      begin
+        lblDefault.Caption := '<no default specified>';
+        lblDefault.Tag := 0;
+        btnDefault.Caption := 'Set as Default';
+      end;
+      btnDefault.Enabled := true;
+    end
+    else
+    begin
+      lblDefault.Caption := '<no default specified>';
+      lblDefault.Tag := 0;
+      btnDefault.Enabled := false;
+    end;
+    btnSaveChanges.Enabled := true;
+end;
+
+procedure TfrmOptionsTitles.btnAddClick(Sender: TObject);
+begin
+  AddIfUnique(cboDocumentTitles.Items[cboDocumentTitles.ItemIndex], lstYourTitles);
+  lstYourTitles.SelectByIEN(cboDocumentTitles.ItemIEN);
+  btnSaveChanges.Enabled := true;
+  btnAdd.Enabled := false;
+  CheckEnable;
+end;
+
+procedure TfrmOptionsTitles.lstYourTitlesChange(Sender: TObject);
+begin
+  with btnDefault do
+  begin
+    if lstYourTitles.SelCount = 1 then
+    begin
+      if lstYourTitles.ItemIEN = lblDefault.Tag then
+        Caption := 'Remove Default'
+      else
+        Caption := 'Set as Default';
+      Enabled := true;
+    end
+    else
+      Enabled := false;
+  end;
+  //CheckEnable;             // ?? causes access violation
+end;
+
+procedure TfrmOptionsTitles.btnRemoveClick(Sender: TObject);
+var
+  index: integer;
+begin
+  index := GetFirstSelection(lstYourTitles);
+  RemoveSelected;
+  SetItem(lstYourTitles, index);
+  CheckEnable;
+  if lstYourTitles.Items.Count = 0 then
+  begin
+    btnDefault.Enabled := false;
+    btnRemove.Enabled := false;
+  end
+  else
+    lstYourTitlesChange(self);
+  btnSaveChanges.Enabled := true;
+end;
+
+procedure TfrmOptionsTitles.AddIfUnique(entry: string; aList: TORListBox);
+var
+  i: integer;
+  ien: string;
+  inlist: boolean;
+begin
+  ien := Piece(entry, '^', 1);
+  inlist := false;
+  with aList do
+  for i := 0 to Items.Count - 1 do
+    if ien = Piece(Items[i], '^', 1) then
+    begin
+      inlist := true;
+      break;
+    end;
+  if not inlist then
+    aList.Items.Add(entry);
+end;
+
+function TfrmOptionsTitles.MemberNotOnList(alist: TStrings; listnum: string): boolean;
+var
+  i: integer;
+begin
+  result := true;
+  with alist do
+  for i := 0 to Count - 1 do
+    if listnum = Piece(alist[i], '^', 1) then
+    begin
+      result := false;
+      break;
+    end;
+end;
+
+procedure TfrmOptionsTitles.cboDocumentTitlesChange(Sender: TObject);
+begin
+  CheckEnable;
+end;
+
+procedure TfrmOptionsTitles.btnUpClick(Sender: TObject);
+var
+  newindex, i: integer;
+begin
+  with lstYourTitles do
+  begin
+    i := 0;
+    while i < Items.Count do
+    begin
+      if Selected[i] then
+      begin
+        newindex := i - 1;
+        Items.Move(i, newindex);
+        Selected[newindex] := true;
+      end;
+      inc(i)
+    end;
+  end;
+  btnSaveChanges.Enabled := true;
+  CheckEnable;
+  lstYourTitlesChange(self);
+end;
+
+procedure TfrmOptionsTitles.btnDownClick(Sender: TObject);
+var
+  newindex, i: integer;
+begin
+  with lstYourTitles do
+  begin
+    i := Items.Count - 1;
+    while i > -1 do
+    begin
+      if Selected[i] then
+      begin
+        newindex := i + 1;
+        Items.Move(i, newindex);
+        Selected[newindex] := true;
+      end;
+      dec(i)
+    end;
+  end;
+  btnSaveChanges.Enabled := true;
+  CheckEnable;
+  lstYourTitlesChange(self);
+end;
+
+function TfrmOptionsTitles.GetFirstSelection(aList: TORListBox): integer;
+begin
+  for result := 0 to aList.Items.Count - 1 do
+    if aList.Selected[result] then exit;
+  result := LB_ERR;
+end;
+
+procedure TfrmOptionsTitles.SetItem(aList: TORListBox; index: integer);
+var
+  maxindex: integer;
+begin
+  with aList do
+  begin
+    SetFocus;
+    maxindex := aList.Items.Count - 1;
+    if Index = LB_ERR then
+      Index := 0
+    else if Index > maxindex then Index := maxindex;
+    Selected[index] := true;
+  end;
+  //CheckEnable;
+end;
+
+procedure TfrmOptionsTitles.RemoveSelected;
+var
+  i: integer;
+begin
+  for i := lstYourTitles.Items.Count - 1 downto 0 do
+  begin
+    if lstYourTitles.Selected[i] then
+    begin
+      if strtoint(Piece(lstYourTitles.Items[i], '^' ,1)) = lblDefault.Tag then
+      begin
+        lblDefault.Caption := '<no default specified>';
+        lblDefault.Tag := 0;
+        btnDefault.Enabled := false;
+      end;
+      lstYourTitles.Items.Delete(i);
+    end;
+  end;
+end;
+
+procedure TfrmOptionsTitles.CheckEnable;
+// allow buttons to be enabled or not depending on selections
+var
+  astring: string;
+begin
+  with lstYourTitles do
+  begin
+    if Items.Count > 0 then
+    begin
+      if SelCount > 0 then
+      begin
+        btnUp.Enabled     := (SelCount > 0)
+                             and (not Selected[0]);
+        btnDown.Enabled   := (SelCount > 0)
+                             and (not Selected[Items.Count - 1]);
+        btnRemove.Enabled := true;
+      end
+      else
+      begin
+        btnUp.Enabled     := false;
+        btnDown.Enabled   := false;
+        btnRemove.Enabled := false;
+      end;
+    end
+    else
+    begin
+      btnUp.Enabled     := false;
+      btnDown.Enabled   := false;
+      btnRemove.Enabled := false;
+    end;
+  end;
+  with cboDocumentTitles do
+  if ItemIndex > -1 then
+  begin
+    astring := ItemID;
+    btnAdd.Enabled := MemberNotOnList(lstYourTitles.Items, astring);
+  end
+  else
+    btnAdd.Enabled := false;
+end;
+
+procedure TfrmOptionsTitles.lstYourTitlesClick(Sender: TObject);
+begin
+  lstYourTitlesChange(self);    // need to check default
+  CheckEnable;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/rOptions.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/rOptions.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/rOptions.pas	(revision 1676)
@@ -0,0 +1,601 @@
+unit rOptions;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, uCore, rCore, rTIU, rConsults;
+
+function rpcGetNotifications: TStrings;
+function rpcGetOrderChecks: TStrings;
+function rpcGetNotificationDefaults: String;
+function rpcGetSurrogateInfo: String;
+procedure rpcCheckSurrogate(surrogate: Int64; var ok: boolean; var msg: string);
+//procedure rpcSetSurrogateInfo(aString: String);
+procedure rpcSetSurrogateInfo(aString: String; var ok: boolean; var msg: string);
+procedure rpcClearNotifications;
+procedure rpcSetNotifications(aList: TStringList);
+procedure rpcSetOrderChecks(aList: TStringList);
+procedure rpcSetOtherStuff(aString: String);
+
+function rpcGetOtherTabs: TStrings;
+function rpcGetOther: String;
+procedure rpcSetOther(info: String);
+function rpcGetCosigners(const StartFrom: string; Direction: Integer): TStrings;
+function rpcGetDefaultCosigner: String;
+procedure rpcSetDefaultCosigner(value: Int64);
+function rpcGetSubject: boolean;
+procedure rpcSetSubject(value: boolean);
+function rpcGetClasses: TStrings;
+function rpcGetTitlesForClass(value: integer; const StartFrom: string; Direction: Integer): TStrings;
+function rpcGetTitlesForUser(value: integer): TStrings;
+function rpcGetTitleDefault(value: integer): integer;
+procedure rpcSaveDocumentDefaults(classvalue, titledefault: integer; aList: TStrings);
+
+procedure rpcGetLabDays(var InpatientDays: integer; var OutpatientDays: integer);
+procedure rpcGetLabUserDays(var InpatientDays: integer; var OutpatientDays: integer);
+procedure rpcGetApptDays(var StartDays: integer; var StopDays: integer);
+procedure rpcGetApptUserDays(var StartDays: integer; var StopDays: integer);
+procedure rpcSetDays(InpatientDays, OutpatientDays, StartDays, StopDays: integer);
+procedure rpcGetImagingDays(var MaxNum: integer; var StartDays: integer; var StopDays: integer);
+procedure rpcGetImagingUserDays(var MaxNum: integer; var StartDays: integer; var StopDays: integer);
+procedure rpcSetImagingDays(MaxNum, StartDays, StopDays: integer);
+
+procedure rpcGetReminders(Dest: TStrings);
+procedure rpcSetReminders(aList: TStringList);
+
+function rpcGetListOrder: Char;
+procedure rpcGetClinicUserDays(var StartDays: integer; var StopDays: integer);
+procedure rpcGetClinicDefaults(var mon, tues, wed, thurs, fri, sat, sun: integer);
+procedure rpcGetListSourceDefaults(var provider, treating, list, ward: integer);
+procedure rpcSetClinicDefaults(StartDays, StopDays, mon, tues, wed, thurs, fri, sat, sun: integer);
+procedure rpcSetPtListDefaults(PLSource, PLSort: Char; prov, spec, team, ward: integer);
+
+procedure rpcGetPersonalLists(Dest: TStrings);
+procedure rpcGetAllTeams(Dest: TStrings);
+procedure rpcGetTeams(Dest: TStrings);
+procedure rpcGetATeams(Dest: TStrings);
+procedure rpcDeleteList(aString: String);
+function rpcNewList(aString: String; Visibility: integer): String;
+procedure rpcSaveListChanges(aList: TStrings; aListIEN, aListVisibility: integer);
+procedure rpcListUsersByTeam(Dest: TStrings; teamid: integer);
+procedure rpcRemoveList(aListIEN: integer);
+procedure rpcAddList(aListIEN: integer);
+
+function rpcGetCombo: TStrings;
+procedure rpcSetCombo(aList: TStrings);
+
+procedure rpcGetDefaultReportsSetting(var int1: integer; var int2: integer; var int3: integer);
+procedure rpcDeleteUserLevelReportsSetting;
+procedure rpcActiveDefaultSetting;
+procedure rpcSetDefaultReportsSetting(aString: string);
+procedure rpcSetIndividualReportSetting(aString1:string; aString2:string);
+procedure rpcRetrieveDefaultSetting(var int1: integer; var int2: integer; var int3: integer; var msg: string);
+
+procedure rpcGetRangeForMeds(var startDt, stopDt: TFMDateTime);
+procedure rpcPutRangeForMeds(TheVal: string);
+procedure rpcGetRangeForEncs(var StartDays, StopDays: integer; DefaultParams: Boolean);
+procedure rpcPutRangeForEncs(StartDays, StopDays: string);
+procedure rpcGetEncFutureDays(var FutureDays: string);
+
+implementation
+
+//..............................................................................
+
+function rpcGetNotifications: TStrings;
+begin
+  CallV('ORWTPP GETNOT', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  result :=RPCBrokerV.Results;
+end;
+
+function rpcGetOrderChecks: TStrings;
+begin
+  CallV('ORWTPP GETOC', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  result :=RPCBrokerV.Results;
+end;
+
+function rpcGetNotificationDefaults: String;
+begin
+  result := sCallV('ORWTPP GETNOTO', [nil]);
+end;
+
+function rpcGetSurrogateInfo: String;
+begin
+  result := MixedCase(sCallV('ORWTPP GETSURR', [nil]));
+end;
+
+procedure rpcCheckSurrogate(surrogate: Int64; var ok: boolean; var msg: string);
+var
+  value: string;
+begin
+  value := sCallV('ORWTPP CHKSURR', [surrogate]);
+  ok := Piece(value, '^', 1) = '1';
+  msg := Piece(value, '^', 2);
+end;
+
+(*procedure rpcSetSurrogateInfo(aString: String);
+begin
+  CallV('ORWTPP SAVESURR', [aString]);
+end;*)
+
+procedure rpcSetSurrogateInfo(aString: String; var ok: boolean; var msg: string);
+var
+  value: string;
+begin
+  value := sCallV('ORWTPP SAVESURR', [aString]);
+  ok := Piece(value, '^', 1) = '1';
+  msg := Piece(value, '^', 2);
+end;
+
+
+procedure rpcClearNotifications;
+begin
+  CallV('ORWTPP CLEARNOT', [nil]);
+end;
+
+procedure rpcSetNotifications(aList: TStringList);
+begin
+  CallV('ORWTPP SAVENOT', [aList]);
+end;
+
+procedure rpcSetOrderChecks(aList: TStringList);
+begin
+  CallV('ORWTPP SAVEOC', [aList]);
+end;
+
+procedure rpcSetOtherStuff(aString: String);
+begin
+  CallV('ORWTPP SAVENOTO', [aString]);
+end;
+
+//..............................................................................
+
+function rpcGetOtherTabs: TStrings;
+begin
+  CallV('ORWTPO GETTABS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  result :=RPCBrokerV.Results;
+end;
+
+function rpcGetOther: String;
+begin
+  result := sCallV('ORWTPP GETOTHER', [nil]);
+end;
+
+procedure rpcSetOther(info: String);
+begin
+  CallV('ORWTPP SETOTHER', [info]);
+end;
+
+function rpcGetCosigners(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('ORWTPP GETCOS', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetDefaultCosigner: String;
+begin
+  result := sCallV('ORWTPP GETDCOS', [nil]);
+end;
+
+procedure rpcSetDefaultCosigner(value: Int64);
+begin
+  CallV('ORWTPP SETDCOS', [value])
+end;
+
+function rpcGetSubject: boolean;
+var
+  value: string;
+begin
+  value := sCallV('ORWTPP GETSUB', [nil]);
+  if value = '1' then result := true
+  else result := false;
+end;
+
+procedure rpcSetSubject(value: boolean);
+begin
+  CallV('ORWTPP SETSUB', [value])
+end;
+
+function rpcGetClasses: TStrings;
+begin
+  CallV('ORWTPN GETCLASS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  result :=RPCBrokerV.Results;
+end;
+
+function rpcGetTitlesForClass(value: integer; const StartFrom: string; Direction: Integer): TStrings;
+begin
+(*  case value of
+    CLS_PROGRESS_NOTES: CallV('TIU LONG LIST OF TITLES', [value, StartFrom, Direction]);
+  else
+    CallV('ORWTPN GETTC', [value, StartFrom, Direction]);   //****** original
+  end;*)
+  CallV('TIU LONG LIST OF TITLES', [value, StartFrom, Direction]);
+  //MixedCaseList(RPCBrokerV.Results);
+  result :=RPCBrokerV.Results;
+end;
+
+function rpcGetTitlesForUser(value: integer): TStrings;
+begin
+  CallV('ORWTPP GETTU', [value]);
+  //MixedCaseList(RPCBrokerV.Results);
+  result :=RPCBrokerV.Results;
+end;
+
+function rpcGetTitleDefault(value: integer): integer;
+begin
+  result := strtointdef(sCallV('ORWTPP GETTD', [value]), -1);
+end;
+
+procedure rpcSaveDocumentDefaults(classvalue, titledefault: integer; aList: TStrings);
+begin
+  CallV('ORWTPP SAVET', [classvalue, titledefault, aList]);
+end;
+
+//..............................................................................
+
+procedure rpcGetLabDays(var InpatientDays: integer; var OutpatientDays:integer);
+var
+  values: string;
+begin
+  values := sCallV('ORWTPO CSLABD', [nil]);
+  InpatientDays := strtointdef(Piece(values, '^', 1), 0);
+  OutpatientDays := strtointdef(Piece(values, '^', 2), 0);
+end;
+
+procedure rpcGetLabUserDays(var InpatientDays: integer; var OutpatientDays: integer);
+var
+  values: string;
+begin
+  values := sCallV('ORWTPP CSLAB', [nil]);
+  InpatientDays := -strtointdef(Piece(values, '^', 1), 0);
+  OutpatientDays := -strtointdef(Piece(values, '^', 2), 0);
+end;
+
+procedure rpcGetApptDays(var StartDays: integer; var StopDays: integer);
+var
+  values, start, stop: string;
+begin
+  values := sCallV('ORWTPD1 GETCSDEF', [nil]);
+  start := Piece(values, '^', 1);
+  stop  := Piece(values, '^', 2);
+  StartDays := strtointdef(Piece(start, 'T', 2), 0);
+  StopDays  := strtointdef(Piece(stop, 'T', 2), 0);
+end;
+
+procedure rpcGetApptUserDays(var StartDays: integer; var StopDays: integer);
+var
+  values, start, stop: string;
+begin
+  values := sCallV('ORWTPD1 GETCSRNG', [nil]);
+  start := Piece(values, '^', 1);
+  stop  := Piece(values, '^', 2);
+  StartDays := strtointdef(Piece(start, 'T', 2), 0);
+  StopDays  := strtointdef(Piece(stop, 'T', 2), 0);
+end;
+
+procedure rpcSetDays(InpatientDays, OutpatientDays, StartDays, StopDays: integer);
+var
+  values: string;
+begin
+  values := '';
+  values := values + inttostr(InpatientDays) + '^';
+  values := values + inttostr(OutpatientDays) + '^';
+  values := values + inttostr(StartDays) + '^';
+  values := values + inttostr(StopDays) + '^';
+  CallV('ORWTPD1 PUTCSRNG', [values]);
+end;
+
+procedure rpcGetImagingDays(var MaxNum: integer; var StartDays: integer; var StopDays: integer);
+var
+  values, max, start, stop: string;
+begin
+  values := sCallV('ORWTPO GETIMGD', [nil]);
+  //values := 'T-120;T;;;100';
+  start := Piece(values, ';', 1);
+  stop  := Piece(values, ';', 2);
+  max  := Piece(values, ';', 5);
+  StartDays := strtointdef(Piece(start, 'T', 2), 0);
+  StopDays  := strtointdef(Piece(stop, 'T', 2), 0);
+  MaxNum  := strtointdef(max, 0);
+end;
+
+procedure rpcGetImagingUserDays(var MaxNum: integer; var StartDays: integer; var StopDays: integer);
+var
+  values, max, start, stop: string;
+begin
+  values := sCallV('ORWTPP GETIMG', [nil]);
+  //values := 'T-180;T;;;15';
+  start := Piece(values, ';', 1);
+  stop  := Piece(values, ';', 2);
+  max  := Piece(values, ';', 5);
+  StartDays := strtointdef(Piece(start, 'T', 2), 0);
+  StopDays  := strtointdef(Piece(stop, 'T', 2), 0);
+  MaxNum  := strtointdef(max, 0);
+end;
+
+procedure rpcSetImagingDays(MaxNum, StartDays, StopDays: integer);
+begin
+  CallV('ORWTPP SETIMG', [MaxNum, StartDays, StopDays]);
+end;
+
+//..............................................................................
+
+procedure rpcGetReminders(Dest: TStrings);
+begin
+  CallV('ORWTPP GETREM', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure rpcSetReminders(aList: TStringList);
+begin
+  CallV('ORWTPP SETREM', [aList]);
+end;
+
+//..............................................................................
+
+function rpcGetListOrder: Char;
+begin
+  result := CharAt(sCallV('ORWTPP SORTDEF', [nil]), 1);
+end;
+
+procedure rpcGetClinicUserDays(var StartDays: integer; var StopDays: integer);
+var
+  values, start, stop: string;
+begin
+  values := sCallV('ORWTPP CLRANGE', [nil]);
+  start := Piece(values, '^', 1);
+  stop  := Piece(values, '^', 2);
+  StartDays := strtointdef(Piece(start, 'T', 2), 0);
+  StopDays  := strtointdef(Piece(stop, 'T', 2), 0);
+end;
+
+procedure rpcGetClinicDefaults(var mon, tues, wed, thurs, fri, sat, sun: integer);
+var
+  values: string;
+begin
+  values := sCallV('ORWTPP CLDAYS', [nil]);
+  mon    := strtointdef(Piece(values, '^', 1), 0);
+  tues   := strtointdef(Piece(values, '^', 2), 0);
+  wed    := strtointdef(Piece(values, '^', 3), 0);
+  thurs  := strtointdef(Piece(values, '^', 4), 0);
+  fri    := strtointdef(Piece(values, '^', 5), 0);
+  sat    := strtointdef(Piece(values, '^', 6), 0);
+  sun    := strtointdef(Piece(values, '^', 7), 0);
+end;
+
+procedure rpcGetListSourceDefaults(var provider, treating, list, ward: integer);
+var
+  values: string;
+begin
+  values := sCallV('ORWTPP LSDEF', [nil]);
+  provider := strtointdef(Piece(values, '^', 1), 0);
+  treating := strtointdef(Piece(values, '^', 2), 0);
+  list     := strtointdef(Piece(values, '^', 3), 0);
+  ward     := strtointdef(Piece(values, '^', 4), 0);
+end;
+
+procedure rpcSetClinicDefaults(StartDays, StopDays, mon, tues, wed, thurs, fri, sat, sun: integer);
+var
+  values: string;
+begin
+  values := '';
+  values := values + inttostr(StartDays) + '^';
+  values := values + inttostr(StopDays) + '^';
+  values := values + inttostr(mon) + '^';
+  values := values + inttostr(tues) + '^';
+  values := values + inttostr(wed) + '^';
+  values := values + inttostr(thurs) + '^';
+  values := values + inttostr(fri) + '^';
+  values := values + inttostr(sat) + '^';
+  values := values + inttostr(sun) + '^';
+  CallV('ORWTPP SAVECD', [values]);
+end;
+
+procedure rpcSetPtListDefaults(PLSource, PLSort: Char; prov, spec, team, ward: integer);
+var
+  values: string;
+begin
+  values := '';
+  values := values + PLSource + '^';
+  values := values + PLSort + '^';
+  values := values + inttostr(prov) + '^';
+  values := values + inttostr(spec) + '^';
+  values := values + inttostr(team) + '^';
+  values := values + inttostr(ward) + '^';
+  CallV('ORWTPP SAVEPLD', [values]);
+end;
+
+//..............................................................................
+
+procedure rpcGetPersonalLists(Dest: TStrings);
+begin
+  CallV('ORWTPP PLISTS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure rpcGetAllTeams(Dest: TStrings);
+begin
+  CallV('ORWTPP PLTEAMS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure rpcGetTeams(Dest: TStrings);
+begin
+  CallV('ORWTPP TEAMS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure rpcGetATeams(Dest: TStrings);
+begin
+  CallV('ORWTPT ATEAMS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure rpcDeleteList(aString: String);
+begin
+  CallV('ORWTPP DELLIST', [aString]);
+end;
+
+function rpcNewList(aString: String; Visibility: integer): String;
+begin
+  result := sCallV('ORWTPP NEWLIST', [aString, Visibility]);
+  result := MixedCase(result);
+end;
+
+procedure rpcSaveListChanges(aList: TStrings; aListIEN, aListVisibility: integer);
+begin
+  CallV('ORWTPP SAVELIST', [aList, aListIEN, aListVisibility]);
+end;
+
+procedure rpcListUsersByTeam(Dest: TStrings; teamid: integer);
+begin
+  CallV('ORWTPT GETTEAM', [teamid]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure rpcRemoveList(aListIEN: integer);
+begin
+  CallV('ORWTPP REMLIST', [aListIEN]);
+end;
+
+procedure rpcAddList(aListIEN: integer);
+begin
+  CallV('ORWTPP ADDLIST', [aListIEN]);
+end;
+
+//..............................................................................
+
+function rpcGetCombo: TStrings;
+begin
+  CallV('ORWTPP GETCOMBO', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  result := RPCBrokerV.Results;
+end;
+
+procedure rpcSetCombo(aList: TStrings);
+begin
+  CallV('ORWTPP SETCOMBO', [aList]);
+end;
+
+//..............................................................................
+
+procedure rpcGetDefaultReportsSetting(var int1: integer; var int2: integer; var int3: integer);
+var
+  values: string;
+  startoffset,stopoffset: string;
+begin
+  values := sCallV('ORWTPD GETDFLT', [nil]);
+  if length(values)=0 then
+    exit;
+  startoffset := Piece(values,';',1);
+  delete(startoffset,1,1);
+  stopoffset := Piece(values,';',2);
+  delete(stopoffset,1,1);
+  int1 := strtointdef(startoffset,0);
+  int2 := strtointdef(stopoffset,0);
+  int3:= strtointdef(Piece(values, ';', 3), 100);  // max occurences
+end;
+
+procedure rpcDeleteUserLevelReportsSetting;
+begin
+  sCallV('ORWTPD DELDFLT',[nil]);
+end;
+
+procedure rpcActiveDefaultSetting;
+begin
+  sCallV('ORWTPD ACTDF',[nil]);
+end;
+
+procedure rpcSetDefaultReportsSetting(aString: string);
+begin
+  sCallV('ORWTPD SUDF',[aString]);
+end;
+
+procedure rpcSetIndividualReportSetting(aString1:string; aString2:string);
+begin
+  sCallV('ORWTPD SUINDV',[aString1,aString2]);
+end;
+
+procedure rpcRetrieveDefaultSetting(var int1: integer; var int2: integer; var int3: integer; var msg: string);
+var
+  values: string;
+  startoffset,stopoffset: string;
+begin
+  values :=  sCallV('ORWTPD RSDFLT',[nil]);
+  if length(values)=0 then
+    begin
+      msg := 'NODEFAULT';
+      exit;
+    end;
+  startoffset := Piece(values,';',1);
+  delete(startoffset,1,1);
+  stopoffset := Piece(values,';',2);
+  delete(stopoffset,1,1);
+  int1 := strtointdef(startoffset,0);
+  int2 := strtointdef(stopoffset,0);
+  int3:= strtointdef(Piece(values, ';', 3), 100);  // max occurences
+end;
+
+procedure rpcGetRangeForMeds(var startDt, stopDt: TFMDateTime);
+var
+  rst,sDt,eDt: string;
+  td: TFMDateTime;
+begin
+  rst := SCallV('ORWTPD GETOCM',[nil]);
+  sDt := Piece(rst,';',1);
+  if lowerCase(sDt) <> 't' then
+    Delete(sDt,1,1);
+  eDt := Piece(rst,';',2);
+  if lowerCase(eDt) <> 't' then
+    Delete(eDt,1,1);
+  td := FMToday;
+  if Length(sDt)>0 then
+    startDt := FMDateTimeOffsetBy(td, StrToIntDef(sDt,0));
+  if Length(eDt)>0 then
+    stopDt  := FMDateTimeOffsetBy(td, StrToIntDef(eDt,0));
+end;
+
+procedure rpcPutRangeForMeds(TheVal: string);
+begin
+  SCallV('ORWTPD PUTOCM',[TheVal]);
+end;
+
+procedure rpcGetRangeForEncs(var StartDays, StopDays: integer; DefaultParams: Boolean);
+var
+  Start, Stop, Values: string;
+begin
+  if DefaultParams then
+    Values := SCallV('ORWTPD1 GETEFDAT',[nil])
+  else
+    Values := SCallV('ORWTPD1 GETEDATS',[nil]);
+  Start := Piece(Values, '^', 1);
+  Stop  := Piece(Values, '^', 2);
+  StartDays := StrToIntDef(Start, 0);
+  StopDays  := StrToIntDef(Stop, 0);
+end;
+
+procedure rpcPutRangeForEncs(StartDays, StopDays: string);
+var
+  values: string;
+begin
+  values := '';
+  values := values + StartDays + '^';
+  values := values + StopDays;
+  CallV('ORWTPD1 PUTEDATS',[values]);
+end;
+
+procedure rpcGetEncFutureDays(var FutureDays: string);
+begin
+  FutureDays := SCallV('ORWTPD1 GETEAFL',[nil]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/uOptions.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/uOptions.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Options/uOptions.pas	(revision 1676)
@@ -0,0 +1,273 @@
+unit uOptions;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ComCtrls, ORFn;
+
+type
+  TSurrogate = class
+  private
+    FIEN:        Int64;
+    FName:       string;
+    FStart:      TFMDateTime;
+    FStop:       TFMDateTime;
+  public
+    property IEN:        Int64          read FIEN       write FIEN;
+    property Name:       string         read FName      write FName;
+    property Start:      TFMDateTime    read FStart     write FStart;
+    property Stop:       TFMDateTime    read FStop      write FStop;
+  end;
+
+function RelativeDate(entry: string): integer;
+procedure DateLimits(const limit: integer; var value: integer);
+procedure ShowDisplay(editbox: TEdit);
+procedure TextExit(editbox: TEdit; var entrycheck: boolean; limitcheck: integer);
+procedure LabelSurrogate(surrogateinfo: string; alabel: TStaticText);
+procedure DisplayPtInfo(PtID: string);
+
+const
+  INVALID_DAYS = -99999;
+  DAYS_LIMIT = 999;
+  SELECTION_LIMIT = 999;
+
+implementation
+
+uses rCore, fRptBox;
+
+function RelativeDate(entry: string): integer;
+// return the number of days for the entry  (e.g. -3 for T - 3)
+
+  function OKToday(value: string): boolean;
+  // check if value is used as the current date
+  begin
+    Result := false;
+    if value = 'T' then Result := true
+    else if value = 'TODAY' then Result := true
+    else if value = 'N' then Result := true
+    else if value = 'NOW' then Result := true;
+  end;
+
+  procedure GetMultiplier(var entry: string; var multiplier: integer);
+  // check if entry has a multiplier on today's date (days, weeks, months, years)
+  var
+    lastchar: char;
+  begin
+    if (entry = 'NOW') or (entry = 'TODAY') then
+    begin
+      multiplier := 1;
+      exit;
+    end;
+    lastchar := entry[length(entry)];
+    case lastchar of
+      'D': multiplier := 1;
+      'W': multiplier := 7;
+      'M': multiplier := 30;
+      'Y': multiplier := 365;
+      else multiplier := 0;
+    end;
+    if multiplier > 0 then
+      entry := copy(entry, 0, length(entry) - 1)
+    else
+      multiplier := 1;
+  end;
+
+var
+  firstpart, operator: string;
+  lenfirstpart, multiplier: integer;
+begin                                  // begin function RelativeDate
+  Result := INVALID_DAYS;
+  entry := Uppercase(entry);
+  GetMultiplier(entry, multiplier);
+  if strtointdef(entry, INVALID_DAYS) <> INVALID_DAYS then
+  begin
+    Result := strtointdef(entry, INVALID_DAYS);
+    if Result <> INVALID_DAYS then
+      Result := Result * multiplier;
+    exit;
+  end;
+  if OKToday(entry) then                      // process today only
+  begin
+    Result := 0;
+    exit;
+  end;
+  firstpart := Piece(entry, ' ', 1);
+  lenfirstpart := length(firstpart);
+  if OKToday(firstpart) then                  // process space
+  begin
+    operator := Copy(entry, lenfirstpart + 2, 1);
+    if (operator = '+') or (operator = '-') then
+    begin
+      if Copy(entry, lenfirstpart + 3, 1) = ' ' then
+        Result := strtointdef(Copy(entry, lenfirstpart + 4, length(entry)), INVALID_DAYS)
+      else
+        Result := strtointdef(Copy(entry, lenfirstpart + 3, length(entry)), INVALID_DAYS);
+      if Result <> INVALID_DAYS then
+        if Result < 0 then
+          Result := INVALID_DAYS
+        else if operator = '-' then
+          Result := -Result;
+    end;
+    if Result <> INVALID_DAYS then
+      Result := Result * multiplier;
+  end
+  else
+  begin
+    firstpart := Piece(entry, '+', 1);
+    lenfirstpart := length(firstpart);
+    if OKToday(firstpart) then                // process +
+    begin
+      if Copy(entry, lenfirstpart + 2, 1) = ' ' then
+        Result := strtointdef(Copy(entry, lenfirstpart + 3, length(entry)), INVALID_DAYS)
+      else
+        Result := strtointdef(Copy(entry, lenfirstpart + 2, length(entry)), INVALID_DAYS);
+      if Result <> INVALID_DAYS then
+        if Result < 0 then
+          Result := INVALID_DAYS
+    end
+    else
+    begin
+      firstpart := Piece(entry, '-', 1);
+      lenfirstpart := length(firstpart);
+      if OKToday(firstpart) then              // process -
+      begin
+        if Copy(entry, lenfirstpart + 2, 1) = ' ' then
+          Result := strtointdef(Copy(entry, lenfirstpart + 3, length(entry)), INVALID_DAYS)
+        else
+          Result := strtointdef(Copy(entry, lenfirstpart + 2, length(entry)), INVALID_DAYS);
+        if Result <> INVALID_DAYS then
+          Result := -Result;
+      end;
+    end;
+    if Result <> INVALID_DAYS then
+      Result := Result * multiplier;
+  end;
+end;
+
+procedure DateLimits(const limit: integer; var value: integer);
+// check if date is within valid limit
+begin
+  if value > limit then
+  begin
+    beep;
+    InfoBox('Date cannot be greater than Today + ' + inttostr(limit), 'Warning', MB_OK or MB_ICONWARNING);
+    value := INVALID_DAYS;
+  end
+  else if value < -limit then
+  begin
+    beep;
+    InfoBox('Date cannot be less than Today - ' + inttostr(limit), 'Warning', MB_OK or MB_ICONWARNING);
+    value := INVALID_DAYS;
+  end;
+end;
+
+procedure ShowDisplay(editbox: TEdit);
+// displays the relative date (uses tag of editbox to hold # of days
+begin
+  with editbox do
+  begin
+    if Tag > 0 then
+      Text := 'Today + ' + inttostr(Tag)
+    else if Tag < 0 then
+      Text := 'Today - ' + inttostr(-Tag)
+    else
+      Text := 'Today';
+    Hint := Text;
+  end;
+end;
+
+procedure TextExit(editbox: TEdit; var entrycheck: boolean; limitcheck: integer);
+// checks entry in editbx if date is valid
+var
+  tagnum: integer;
+begin
+  with editbox do
+  begin
+    if entrycheck then
+    begin
+      tagnum := RelativeDate(Hint);
+      if tagnum = INVALID_DAYS then
+      begin
+        beep;
+        InfoBox('Date entry was invalid', 'Warning', MB_OK or MB_ICONWARNING);
+        SetFocus;
+      end
+      else
+      begin
+        DateLimits(limitcheck, tagnum);
+        if tagnum = INVALID_DAYS then
+          SetFocus
+        else
+          Tag := tagnum;
+      end;
+      ShowDisplay(editbox);
+      if Focused then SelectAll;
+    end;
+    entrycheck := false;
+  end;
+end;
+
+procedure LabelSurrogate(surrogateinfo: string; alabel: TStaticText);
+// surrogateinfo = surrogateIEN^surrogate name^surrogate start date/time^surrogate stop date/time
+var
+  surrogatename, surrogatestart, surrogatestop: string;
+  surrogateien: Int64;
+begin
+  surrogateien := strtoint64def(Piece(surrogateinfo, '^', 1), -1);
+  if surrogateien > 1 then
+  begin
+    surrogatename := Piece(surrogateinfo, '^', 2);
+    surrogatestart := Piece(surrogateinfo, '^', 3);
+    if surrogatestart = '-1' then surrogatestart := '0';
+    if surrogatestart = '' then surrogatestart := '0';
+    surrogatestop := Piece(surrogateinfo, '^', 4);
+    if surrogatestop = '-1' then surrogatestop := '0';
+    if surrogatestop = '' then surrogatestop := '0';
+    alabel.Caption := surrogatename;
+    if (surrogatestart <> '0') and (surrogatestop <> '0') then
+      alabel.Caption := surrogatename +
+      ' (from ' + FormatFMDateTimeStr('mmm d,yyyy@hh:nn', surrogatestart) +
+      ' until ' + FormatFMDateTimeStr('mmm d,yyyy@hh:nn', surrogatestop) + ')'
+    else if surrogatestart <> '0' then
+      alabel.Caption := surrogatename +
+      ' (from ' + FormatFMDateTimeStr('mmm d,yyyy@hh:nn', surrogatestart) + ')'
+    else if surrogatestop <> '0' then
+      alabel.Caption := surrogatename +
+      ' (until ' + FormatFMDateTimeStr('mmm d,yyyy@hh:nn', surrogatestop) + ')'
+    else
+      alabel.Caption := surrogatename;
+  end
+  else
+    alabel.Caption := '<no surrogate designated>';
+end;
+
+procedure DisplayPtInfo(PtID: string);
+var
+  PtRec: TPtIDInfo;
+  rpttext: TStringList;
+begin
+  if strtointdef(PtID, -1) < 0 then exit;
+  PtRec := GetPtIDInfo(PtID);
+  rpttext := TStringList.Create;
+  try
+    with PtRec do
+    begin
+      rpttext.Add('     ' + Name);
+      rpttext.Add('SSN: ' + SSN);
+      rpttext.Add('DOB: ' + DOB);
+      rpttext.Add('');
+      rpttext.Add(Sex);
+      rpttext.Add(SCSts);
+      rpttext.Add(Vet);
+      rpttext.Add('');
+      if length(Location) > 0 then rpttext.Add('Location: ' + Location);
+      if length(RoomBed)  > 0 then rpttext.Add('Room/Bed: ' + RoomBed);
+    end;
+    ReportBox(rpttext, 'Patient ID', false);
+  finally
+    rpttext.free
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fIVRoutes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fIVRoutes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fIVRoutes.dfm	(revision 1676)
@@ -0,0 +1,99 @@
+inherited frmIVRoutes: TfrmIVRoutes
+  Left = 0
+  Top = 0
+  Caption = 'Expanded Med Route List'
+  ClientHeight = 339
+  ClientWidth = 222
+  Constraints.MinHeight = 360
+  Constraints.MinWidth = 220
+  Font.Name = 'Tahoma'
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  ExplicitWidth = 230
+  ExplicitHeight = 366
+  DesignSize = (
+    222
+    339)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 220
+    Height = 249
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 0
+    object cboAllIVRoutes: TORComboBox
+      Left = 24
+      Top = 16
+      Width = 161
+      Height = 217
+      Style = orcsSimple
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      CharsNeedMatch = 1
+      UniqueAutoComplete = True
+    end
+  end
+  object pnlBottom: TORAutoPanel [1]
+    Left = 0
+    Top = 255
+    Width = 218
+    Height = 82
+    BevelOuter = bvNone
+    TabOrder = 1
+    object BtnOK: TButton
+      Left = 110
+      Top = 24
+      Width = 75
+      Height = 25
+      Caption = '&OK'
+      Default = True
+      TabOrder = 0
+      OnClick = BtnOKClick
+    end
+    object btnCancel: TButton
+      Left = 29
+      Top = 24
+      Width = 75
+      Height = 25
+      Caption = '&Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = cboAllIVRoutes'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = BtnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmIVRoutes'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fIVRoutes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fIVRoutes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fIVRoutes.pas	(revision 1676)
@@ -0,0 +1,88 @@
+unit fIVRoutes;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ORCtrls, ExtCtrls, ORFn, rMisc, rODMeds, VA508AccessibilityManager, VAUtils, fAutoSz;
+
+type
+  TfrmIVRoutes = class(TfrmAutoSz)
+    pnlTop: TPanel;
+    cboAllIVRoutes: TORComboBox;
+    pnlBottom: TORAutoPanel;
+    BtnOK: TButton;
+    btnCancel: TButton;
+    procedure BtnOKClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+    { Private declarations }
+
+  public
+    { Public declarations }
+  end;
+
+function ShowOtherRoutes(var Route: string): boolean;
+
+var
+  frmIVRoutes: TfrmIVRoutes;
+
+implementation
+
+{$R *.dfm}
+function ShowOtherRoutes(var Route: string): boolean;
+var
+idx: integer;
+begin
+     Result := false;
+     frmIVRoutes := TfrmIVRoutes.Create(Application);
+     ResizeFormToFont(TForm(frmIVRoutes));
+     SetFormPosition(frmIVRoutes);
+     //LoadAllIVRoutes(frmIVRoutes.cboAllIVRoutes.Items);
+     if frmIVRoutes.ShowModal = mrOK then
+       begin
+         idx := frmIVRoutes.cboAllIVRoutes.ItemIndex;
+         if idx > -1 then
+           begin
+             Route := frmIVRoutes.cboAllIVRoutes.Items.Strings[idx];
+             setPiece(Route,U,5,'1');
+           end
+         else Route := '';
+         Result := True;
+       end;
+     frmIVRoutes.Free;
+end;
+{ TfrmIVRoutes }
+
+procedure TfrmIVRoutes.btnCancelClick(Sender: TObject);
+begin
+  frmIVRoutes.cboAllIVRoutes.ItemIndex := -1;
+  modalResult := mrOK;
+end;
+
+procedure TfrmIVRoutes.BtnOKClick(Sender: TObject);
+begin
+  if frmIVRoutes.cboAllIVRoutes.ItemIndex = -1 then
+    begin
+       infoBox('A route from the list must be selected','Warning', MB_OK);
+       Exit;
+    end;
+  modalResult := mrOK;
+end;
+
+
+procedure TfrmIVRoutes.FormCreate(Sender: TObject);
+begin
+   frmIVRoutes := nil;
+   LoadAllIVRoutes(cboAllIVRoutes.Items);
+end;
+
+procedure TfrmIVRoutes.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  frmIVRoutes := nil;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCAccept.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCAccept.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCAccept.dfm	(revision 1676)
@@ -0,0 +1,73 @@
+inherited frmOCAccept: TfrmOCAccept
+  Left = 305
+  Top = 257
+  BorderIcons = []
+  Caption = 'Order Checking'
+  ClientHeight = 169
+  ClientWidth = 472
+  Position = poScreenCenter
+  ExplicitLeft = 305
+  ExplicitTop = 257
+  ExplicitWidth = 480
+  ExplicitHeight = 203
+  PixelsPerInch = 96
+  TextHeight = 13
+  object memChecks: TRichEdit [0]
+    Left = 0
+    Top = 0
+    Width = 472
+    Height = 136
+    Align = alClient
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 0
+    WantReturns = False
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 136
+    Width = 472
+    Height = 33
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    object cmdAccept: TButton
+      Left = 148
+      Top = 7
+      Width = 80
+      Height = 21
+      Caption = 'Accept Order'
+      Default = True
+      ModalResult = 6
+      TabOrder = 0
+    end
+    object cmdCancel: TButton
+      Left = 244
+      Top = 7
+      Width = 80
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel Order'
+      ModalResult = 7
+      TabOrder = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memChecks'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOCAccept'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCAccept.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCAccept.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCAccept.pas	(revision 1676)
@@ -0,0 +1,52 @@
+unit fOCAccept;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, ORFn, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmOCAccept = class(TfrmAutoSz)
+    memChecks: TRichEdit;
+    pnlBottom: TPanel;
+    cmdAccept: TButton;
+    cmdCancel: TButton;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+function AcceptOrderWithChecks(OCList: TStringList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+function AcceptOrderWithChecks(OCList: TStringList): Boolean;
+var
+  i: Integer;
+  frmOCAccept: TfrmOCAccept;
+begin
+  Result := True;
+  if OCList.Count > 0 then
+  begin
+    frmOCAccept := TfrmOCAccept.Create(Application);
+    try
+      ResizeFormToFont(TForm(frmOCAccept));
+      for i := 0 to OCList.Count - 1 do
+      begin
+        frmOCAccept.memChecks.Lines.Add(Piece(OCList[i], U, 4));
+        frmOCAccept.memChecks.Lines.Add('');
+      end;
+      frmOCAccept.memChecks.SelStart := 0;
+      frmOCAccept.memChecks.SelLength := 0;
+      Result := frmOCAccept.ShowModal = mrYes;
+    finally
+      frmOCAccept.Release;
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCSession.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCSession.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCSession.dfm	(revision 1676)
@@ -0,0 +1,132 @@
+inherited frmOCSession: TfrmOCSession
+  Left = 366
+  Top = 222
+  BorderIcons = []
+  Caption = 'Order Checks'
+  ClientWidth = 494
+  Position = poScreenCenter
+  ShowHint = True
+  OnClose = FormClose
+  OnShow = FormShow
+  ExplicitWidth = 502
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lstChecks: TCaptionListBox [0]
+    Left = 0
+    Top = 0
+    Width = 494
+    Height = 162
+    Style = lbOwnerDrawVariable
+    Align = alClient
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    OnDrawItem = lstChecksDrawItem
+    OnMeasureItem = lstChecksMeasureItem
+    HintOnItem = True
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 162
+    Width = 494
+    Height = 111
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      494
+      111)
+    object lblJustify: TLabel
+      Left = 9
+      Top = 34
+      Width = 248
+      Height = 13
+      Anchors = [akLeft, akTop, akRight]
+      Caption = 'Enter justification for overriding critical order checks -'
+    end
+    object txtJustify: TCaptionEdit
+      Left = 8
+      Top = 50
+      Width = 478
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      MaxLength = 80
+      TabOrder = 0
+      OnKeyDown = txtJustifyKeyDown
+      Caption = 'Enter justification for overriding critical order checks -'
+    end
+    object cmdCancelOrder: TButton
+      Left = 356
+      Top = 5
+      Width = 131
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      Caption = 'Cancel Selected Order(s)'
+      TabOrder = 3
+      OnClick = cmdCancelOrderClick
+    end
+    object cmdContinue: TButton
+      Left = 157
+      Top = 82
+      Width = 70
+      Height = 21
+      Caption = 'Continue'
+      TabOrder = 4
+      OnClick = cmdContinueClick
+    end
+    object btnReturn: TButton
+      Left = 241
+      Top = 82
+      Width = 97
+      Height = 21
+      Cancel = True
+      Caption = 'Return to Orders'
+      TabOrder = 5
+      OnClick = btnReturnClick
+    end
+    object memNote: TMemo
+      Left = 8
+      Top = 4
+      Width = 329
+      Height = 29
+      BorderStyle = bsNone
+      Color = clBtnFace
+      Lines.Strings = (
+        'NOTE: The override justification is for tracking purposes and '
+        'does not change or place new order(s).')
+      ReadOnly = True
+      TabOrder = 1
+      OnEnter = memNoteEnter
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstChecks'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = txtJustify'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancelOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdContinue'
+        'Status = stsDefault')
+      (
+        'Component = btnReturn'
+        'Status = stsDefault')
+      (
+        'Component = memNote'
+        'Status = stsDefault')
+      (
+        'Component = frmOCSession'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCSession.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCSession.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOCSession.pas	(revision 1676)
@@ -0,0 +1,354 @@
+unit fOCSession;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, uConst, ORCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmOCSession = class(TfrmAutoSz)
+    lstChecks: TCaptionListBox;
+    pnlBottom: TPanel;
+    lblJustify: TLabel;
+    txtJustify: TCaptionEdit;
+    cmdCancelOrder: TButton;
+    cmdContinue: TButton;
+    btnReturn: TButton;
+    memNote: TMemo;
+    procedure cmdCancelOrderClick(Sender: TObject);
+    procedure cmdContinueClick(Sender: TObject);
+    procedure lstChecksMeasureItem(Control: TWinControl; Index: Integer;
+      var Height: Integer);
+    procedure lstChecksDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure txtJustifyKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnReturnClick(Sender: TObject);
+    procedure memNoteEnter(Sender: TObject);
+  private
+    FCritical: Boolean;
+    FCancelSignProcess : Boolean;
+    FCheckList: TStringList;
+    FOrderList: TStringList;
+    procedure SetReqJustify;
+    procedure SetReturn(const Value: Boolean);
+  public
+    { Public declarations }
+    property CancelSignProcess : Boolean read FCancelSignProcess write SetReturn default false;
+  end;
+
+procedure ExecuteReleaseOrderChecks(SelectList: TList);
+function ExecuteSessionOrderChecks(OrderList: TStringList) : Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, uCore, rMisc, fFrame;
+
+type
+  TOCRec = class
+    OrderID: string;
+    OrderText: string;
+    Checks: TStringList;
+    constructor Create(const AnID: string);
+    destructor Destroy; override;
+  end;
+
+var
+  uCheckedOrders: TList;
+  FOldHintHidePause: integer;
+
+constructor TOCRec.Create(const AnID: string);
+begin
+  OrderID := AnID;
+  Checks := TStringList.Create;
+  FOldHintHidePause := Application.HintHidePause;
+end;
+
+destructor TOCRec.Destroy;
+begin
+  Application.HintHidePause := FOldHintHidePause;
+  Checks.Free;
+  inherited Destroy;
+end;
+
+procedure ExecuteReleaseOrderChecks(SelectList: TList);
+var
+  i: Integer;
+  AnOrder: TOrder;
+  OrderIDList: TStringList;
+begin
+  OrderIDList := TStringList.Create;
+  try
+    for i := 0 to SelectList.Count - 1 do
+    begin
+      AnOrder := TOrder(SelectList.Items[i]);
+      OrderIDList.Add(AnOrder.ID + '^^1');  // 3rd pce = 1 means releasing order
+    end;
+    if ExecuteSessionOrderChecks(OrderIDList) then
+      for i := SelectList.Count - 1 downto 0 do
+      begin
+        AnOrder := TOrder(SelectList.Items[i]);
+        if OrderIDList.IndexOf(AnOrder.ID + '^^1') < 0 then
+        begin
+          Changes.Remove(CH_ORD, AnOrder.ID);
+          SelectList.Delete(i);
+        end;
+      end
+    else
+      SelectList.Clear;
+  finally
+    OrderIDList.Free;
+  end;
+end;
+
+{Returns True if the Signature process should proceed.
+ Clears OrderList If False. }
+function ExecuteSessionOrderChecks(OrderList: TStringList) : Boolean;
+var
+  i, j: Integer;
+  LastID, NewID: string;
+  CheckList: TStringList;
+  OCRec: TOCRec;
+  //AChangeItem: TChangeItem;
+  frmOCSession: TfrmOCSession;
+  x: string;
+begin
+  Result := True;
+  CheckList := TStringList.Create;
+  try
+    StatusText('Order Checking...');
+    OrderChecksForSession(CheckList, OrderList);
+    StatusText('');
+    if CheckList.Count > 0 then
+    begin
+      frmOCSession := TfrmOCSession.Create(Application);
+      try
+        ResizeFormToFont(TForm(frmOCSession));
+        uCheckedOrders := TList.Create;
+        LastID := '';
+        for i := 0 to CheckList.Count - 1 do
+        begin
+          NewID := Piece(CheckList[i], U, 1);
+          if NewID <> LastID then
+          begin
+            OCRec := TOCRec.Create(NewID);
+            uCheckedOrders.Add(OCRec);
+            LastID := NewID;
+          end; {if NewID}
+        end; {for i}
+        with uCheckedOrders do for i := 0 to Count - 1 do
+        begin
+          OCRec := TOCRec(Items[i]);
+          x := TextForOrder(OCRec.OrderID);
+          OCRec.OrderText := x;
+          for j := 0 to CheckList.Count - 1 do
+            if Piece(CheckList[j], U, 1) = OCRec.OrderID then
+            begin
+              OCRec.Checks.Add(Pieces(CheckList[j], U, 2, 4));
+              x := x + CRLF + Piece(CheckList[j], U, 4);
+            end;
+          //AChangeItem := Changes.Locate(CH_ORD, OCRec.OrderID);
+          //if AChangeItem <> nil then OCRec.OrderText := AChangeItem.Text;
+          frmOCSession.lstChecks.Items.Add(x);
+        end; {with...for i}
+        frmOCSession.FOrderList := OrderList;
+        frmOCSession.FCheckList := CheckList;
+        frmOCSession.SetReqJustify;
+        MessageBeep(MB_ICONASTERISK);
+        if frmOCSession.Visible then frmOCSession.SetFocus;
+        frmOCSession.ShowModal;
+        Result := not frmOCSession.CancelSignProcess;
+        if frmOCSession.CancelSignProcess then begin
+          OrderList.Clear;
+          if Assigned(frmFrame) then
+            frmFrame.SetActiveTab(CT_ORDERS);
+        end;
+      finally
+        with uCheckedOrders do for i := 0 to Count - 1 do TOCRec(Items[i]).Free;
+        frmOCSession.Free;
+      end; {try}
+    end; {if CheckList}
+  finally
+    CheckList.Free;
+  end;
+end;
+
+procedure TfrmOCSession.SetReqJustify;
+var
+  i, j: Integer;
+  OCRec: TOCRec;
+begin
+  FCritical := False;
+  with uCheckedOrders do for i := 0 to Count - 1 do
+  begin
+    OCRec := TOCRec(Items[i]);
+    for j := 0 to OCRec.Checks.Count - 1 do
+      if Piece(OCRec.Checks[j], U, 2) = '1' then FCritical := True;
+  end;
+  lblJustify.Visible := FCritical;
+  txtJustify.Visible := FCritical;
+  memNote.Visible := FCritical;
+
+end;
+
+procedure TfrmOCSession.lstChecksMeasureItem(Control: TWinControl; Index: Integer; var Height: Integer);
+var
+  i, AHt, TotalHt: Integer;
+  x: string;
+  ARect: TRect;
+  OCRec: TOCRec;
+begin
+  inherited;
+
+  with lstChecks do
+     begin
+       if Index >= uCheckedOrders.Count then Exit;
+       OCRec := TOCRec(uCheckedOrders.Items[Index]);
+       ARect := ItemRect(Index);
+       ARect.Left := ARect.Left + 2;
+       AHt := DrawText(Canvas.Handle, PChar(OCRec.OrderText), Length(OCRec.OrderText), ARect, DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK or DT_EXTERNALLEADING) + 2; //CQ7178: added DT_EXTERNALLEADING
+       TotalHt := AHt;
+
+       for i := 0 to OCRec.Checks.Count - 1 do
+          begin
+            ARect := ItemRect(Index);
+            ARect.Left := ARect.Left + 10;
+            x := Piece(OCRec.Checks[i], U, 3);
+            AHt := DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK or DT_EXTERNALLEADING); //CQ7178: added DT_EXTERNALLEADING
+            TotalHt := TotalHt + AHt;
+          end;
+     end;
+  Height := TotalHt + 2; // add 2 for focus rectangle
+  if Height > 255 then Height := 255; //CQ7178
+end;
+
+procedure TfrmOCSession.lstChecksDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  i, AHt: Integer;
+  x: string;
+  ARect: TRect;
+  OCRec: TOCRec;
+begin
+  inherited;
+
+  with lstChecks do
+     begin
+       if Index >= uCheckedOrders.Count then Exit;
+       OCRec := TOCRec(uCheckedOrders.Items[Index]);
+       ARect := ItemRect(Index);
+       AHt := DrawText(Canvas.Handle, PChar(OCRec.OrderText), Length(OCRec.OrderText), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK or DT_EXTERNALLEADING) + 2; //CQ7178: added DT_EXTERNALLEADING
+       ARect.Left := ARect.Left + 10;
+       ARect.Top  := ARect.Top + AHt;
+       for i := 0 to OCRec.Checks.Count - 1 do
+          begin
+            x := Piece(OCRec.Checks[i], U, 3);
+            if not (odSelected in State) then
+               begin
+                 if (Piece(OCRec.Checks[i], U, 2) = '1') then
+                   begin
+                     Canvas.Font.Color := Get508CompliantColor(clBlue);
+                     Canvas.Font.Style := [fsUnderline];
+                   end
+                 else Canvas.Font.Color := clWindowText;
+               end;
+            AHt := DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK or DT_EXTERNALLEADING); //CQ7178: added DT_EXTERNALLEADING
+            ARect.Top  := ARect.Top + AHt;
+        end;
+     end;
+
+end;
+
+procedure TfrmOCSession.cmdCancelOrderClick(Sender: TObject);
+var
+  i, j: Integer;
+  AnOrderID: string;
+  OCRec: TOCRec;
+begin
+  inherited;
+  for i := lstChecks.Items.Count - 1 downto 0 do if lstChecks.Selected[i] then
+  begin
+    OCRec := TOCRec(uCheckedOrders.Items[i]);
+    AnOrderID := OCRec.OrderID;
+    if DeleteCheckedOrder(AnOrderID) then
+    begin
+      for j := FCheckList.Count - 1 downto 0 do
+        if Piece(FCheckList[j], U, 1) = AnOrderID then FCheckList.Delete(j);
+      for j := FOrderList.Count - 1 downto 0 do
+        if Piece(FOrderList[j], U, 1) = AnOrderID then FOrderList.Delete(j);
+      OCRec.Free;
+      uCheckedOrders.Delete(i);
+      lstChecks.Items.Delete(i);
+    end;
+  end;
+  if uCheckedOrders.Count = 0 then Close;
+end;
+
+procedure TfrmOCSession.cmdContinueClick(Sender: TObject);
+begin
+  inherited;
+  if FCritical and ((Length(txtJustify.Text) < 2) or not ContainsVisibleChar(txtJustify.Text)) then
+  begin
+     InfoBox('A justification for overriding critical order checks is required.',
+            'Justification Required', MB_OK);
+    Exit;
+  end;
+  StatusText('Saving Order Checks...');
+  SaveOrderChecksForSession(txtJustify.Text, FCheckList);
+  StatusText('');
+  Close;
+end;
+
+procedure TfrmOCSession.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self); //Save Position & Size of Form
+end;
+
+procedure TfrmOCSession.FormShow(Sender: TObject);
+begin
+  inherited;
+  SetFormPosition(Self); //Get Saved Position & Size of Form
+  FCancelSignProcess := False;
+end;
+
+
+procedure TfrmOCSession.FormResize(Sender: TObject);
+begin
+  //TfrmAutoSz has defect must call inherited Resize for the resize to function.
+  inherited;
+end;
+
+procedure TfrmOCSession.txtJustifyKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  //GE CQ9540  activate Return key, behave as "Continue" buttom clicked.
+  if Key = VK_RETURN then cmdContinueClick(self);
+end;
+
+procedure TfrmOCSession.btnReturnClick(Sender: TObject);
+begin
+  inherited;
+  FCancelSignProcess := True;
+  Close;
+end;
+
+procedure TfrmOCSession.SetReturn(const Value: Boolean);
+begin
+  FCancelSignProcess := Value;
+end;
+
+procedure TfrmOCSession.memNoteEnter(Sender: TObject);
+begin
+  inherited;
+  memNote.SelStart := 0;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODActive.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODActive.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODActive.dfm	(revision 1676)
@@ -0,0 +1,128 @@
+inherited frmODActive: TfrmODActive
+  Left = 267
+  Top = 216
+  Caption = 'Copy active orders for selected event'
+  ClientHeight = 316
+  ClientWidth = 539
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblCaption: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 539
+    Height = 29
+    Align = alTop
+    AutoSize = False
+    Caption = '  Highlight orders to be copied to delayed release event'
+    Layout = tlCenter
+    WordWrap = True
+  end
+  object pnlClient: TPanel [1]
+    Left = 0
+    Top = 29
+    Width = 539
+    Height = 287
+    Align = alClient
+    BevelOuter = bvNone
+    Locked = True
+    TabOrder = 0
+    ExplicitHeight = 294
+    DesignSize = (
+      539
+      287)
+    object btnOK: TButton
+      Left = 386
+      Top = 270
+      Width = 57
+      Height = 20
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 458
+      Top = 270
+      Width = 57
+      Height = 20
+      Anchors = [akRight, akBottom]
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = btnCancelClick
+    end
+    object lstActiveOrders: TCaptionListBox
+      Left = 0
+      Top = 21
+      Width = 539
+      Height = 242
+      Style = lbOwnerDrawVariable
+      Align = alTop
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      ItemHeight = 16
+      MultiSelect = True
+      TabOrder = 1
+      OnDblClick = btnOKClick
+      OnDrawItem = lstActiveOrdersDrawItem
+      OnMeasureItem = lstActiveOrdersMeasureItem
+      Caption = '  Copy selected active orders to the release event'
+    end
+    object hdControl: THeaderControl
+      Left = 0
+      Top = 0
+      Width = 539
+      Height = 21
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 50
+          Text = 'Service'
+          Width = 100
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 200
+          Text = 'Orders'
+          Width = 280
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 50
+          Text = 'Start / Stop'
+          Width = 112
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 50
+          Text = 'Status'
+          Width = 80
+        end>
+      OnSectionResize = hdControlSectionResize
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlClient'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstActiveOrders'
+        'Status = stsDefault')
+      (
+        'Component = hdControl'
+        'Status = stsDefault')
+      (
+        'Component = frmODActive'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODActive.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODActive.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODActive.pas	(revision 1676)
@@ -0,0 +1,325 @@
+unit fODActive;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORFn, uCore, StdCtrls, CheckLst, ComCtrls,ExtCtrls,rOrders,fOrders,uOrders,
+  fFrame,ORCtrls,fAutoSz, VA508AccessibilityManager;
+
+type
+  TfrmODActive = class(TfrmAutoSz)
+    lblCaption: TLabel;
+    pnlClient: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    hdControl: THeaderControl;
+    lstActiveOrders: TCaptionListBox;
+    procedure btnOKClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure lstActiveOrdersMeasureItem(Control: TWinControl;
+      Index: Integer; var AaHeight: Integer);
+    procedure lstActiveOrdersDrawItem(Control: TWinControl;
+      Index: Integer; TheeRect: TRect; State: TOwnerDrawState);
+    procedure hdControlSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+  private
+    { Private declarations }
+    FOrderView: TOrderView;
+    FEvent: TOrderDelayEvent;
+    FAutoAc: boolean;
+    ActiveOrderList: TList;
+    FDefaultEventOrder: string;
+    function MeasureColumnHeight(TheOrderText: string; Index: Integer; Column: integer):integer;
+    procedure LoadActiveOrders;
+    procedure RetrieveVisibleOrders(AnIndex: Integer);
+    procedure RedrawActiveList;
+  public
+    { Public declarations }
+    property Event: TOrderDelayEvent   read FEvent         write FEvent;
+    property OrderView: TOrderView     read FOrderView     write FOrderView;
+    property AutoAc: boolean           read FAutoAc;
+  end;
+
+procedure CopyActiveOrdersToEvent(AnOrderView: TOrderView; AnEvent: TOrderDelayEvent);
+
+implementation
+
+uses
+  VA2006Utils;
+
+{$R *.DFM}
+
+const
+ FM_DATE_ONLY = 7;
+
+procedure CopyActiveOrdersToEvent(AnOrderView: TOrderView; AnEvent: TOrderDelayEvent);
+var
+  frmODActive: TfrmODActive;
+begin
+  frmODActive := TfrmODActive.Create(Application);
+  ResizeFormToFont(TForm(frmODActive));
+  frmODActive.Event     := AnEvent;
+  frmODActive.FOrderView := AnOrderView;
+  frmODActive.FOrderView.Filter := 2;
+  if Length(frmOrders.EventDefaultOrder)>0 then
+    frmODActive.FDefaultEventOrder := frmOrders.EventDefaultOrder;
+  frmODActive.lblCaption.Caption := frmODActive.lblCaption.Caption + ' Delayed ' + AnEvent.EventName + ':';
+  frmODActive.LoadActiveOrders;
+  if frmODActive.lstActiveOrders.Items.Count < 1 then
+    frmODActive.Close
+  else
+    frmODActive.ShowModal;
+end;
+
+procedure TfrmODActive.btnOKClick(Sender: TObject);
+const
+  TX_NOSEL      = 'No orders are highlighted.  Select the orders' + CRLF +
+                  'you wish to take action on.';
+  TC_NOSEL      = 'No Orders Selected';
+var
+  i : integer;
+  SelectedList: TStringList;
+  TheVerify : boolean;
+  DoesDestEvtOccur:boolean;
+begin
+  try
+  self.btnOK.Enabled := false;
+  DoesDestEvtOccur := False;
+  uAutoAC := True;
+  frmFrame.UpdatePtInfoOnRefresh;
+  SelectedList := TStringList.Create;
+  try
+    TheVerify := False;
+    with lstActiveOrders do for i := 0 to Items.Count - 1 do
+      if Selected[i] then SelectedList.Add(TOrder(Items.Objects[i]).ID);
+    if ShowMsgOn(SelectedList.Count = 0, TX_NOSEL, TC_NOSEL) then Exit;
+    if (Event.EventType = 'D') or ((not Patient.InPatient) and (Event.EventType = 'T')) then
+      TransferOrders(SelectedList, Event, DoesDestEvtOccur, TheVerify)
+    else if (not Patient.Inpatient) and (Event.EventType = 'A') then
+      TransferOrders(SelectedList, Event, DoesDestEvtOccur, TheVerify)
+    else
+      CopyOrders(SelectedList, Event, DoesDestEvtOccur, TheVerify);
+    if ( frmOrders <> nil ) and DoesDestEvtOccur then
+      frmOrders.PtEvtCompleted(Event.PtEventIFN,Event.EventName);
+   finally
+    SelectedList.Free;
+    uAutoAC := False;
+  end;
+  finally
+    self.btnOK.Enabled := True;
+  end;
+  Close;
+end;
+
+procedure TfrmODActive.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmODActive.FormCreate(Sender: TObject);
+begin
+  FixHeaderControlDelphi2006Bug(hdControl);
+  ActiveOrderList := TList.Create;
+  FOrderView      := TOrderView.Create;
+  FDefaultEventOrder := '';
+end;
+
+procedure TfrmODActive.LoadActiveOrders;
+var
+  AnOrder: TOrder;
+  i: integer;
+  AnOrderPtEvtId,AnOrderEvtId: string;
+begin
+  LoadOrdersAbbr(ActiveOrderList,FOrderView,'');
+  with ActiveOrderList do for i := Count - 1 downto 0 do
+  begin
+    AnOrder := TOrder(Items[i]);
+    AnOrderPtEvtID := GetOrderPtEvtID(AnOrder.ID);
+    if StrToIntDef(AnOrderPtEvtID,0)>0 then
+    begin
+      AnOrderEvtId := Piece(EventInfo(AnOrderPtEvtID),'^',2);
+      if AnsiCompareText(AnOrderEvtID,IntToStr(FEvent.TheParent.ParentIFN))=0 then
+      begin
+         ActiveOrderList.Delete(i);
+         continue;
+      end;
+    end;
+    if (AnOrder.ID = FDefaultEventOrder) or (IsDCedOrder(AnOrder.ID)) then
+    begin
+      ActiveOrderList.Delete(i);
+    end;
+  end;
+  SortOrders(ActiveOrderList, FOrderView.ByService, FOrderView.InvChrono);
+  lstActiveOrders.Items.Clear;
+  with ActiveOrderList do for i := 0 to Count - 1 do
+  begin
+    AnOrder := TOrder(Items[i]);
+    lstActiveOrders.Items.AddObject(AnOrder.ID,AnOrder);
+  end;
+end;
+
+procedure TfrmODActive.FormDestroy(Sender: TObject);
+begin
+  ClearOrders(ActiveOrderList);
+  ActiveOrderList.Free;
+  lstActiveOrders.Clear;
+  if FOrderView <> nil then FOrderView := nil ;
+end;
+
+procedure TfrmODActive.lstActiveOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AaHeight: Integer);
+var
+  x,y: string;
+  TextHeight, NewHeight, DateHeight: Integer;
+  TheOrder: TOrder;
+begin
+  inherited;
+  NewHeight := AaHeight;
+  with lstActiveOrders do if Index < Items.Count then
+  begin
+    TheOrder := TOrder(ActiveOrderList.Items[index]);
+    if TheOrder <> nil then with TheOrder do
+    begin
+      if not TheOrder.Retrieved then RetrieveVisibleOrders(Index);
+      {measure the height of order text}
+      x := Text;
+      TextHeight := MeasureColumnHeight(x,Index,1);
+
+      {measure the height of Start/Stop date time}
+      x := FormatFMDateTimeStr('mm/dd/yy hh:nn', StartTime);
+      if IsFMDateTime(StartTime) and (Length(StartTime) = FM_DATE_ONLY) then x := Piece(x, #32, 1);
+      if Length(x) > 0 then x := 'Start: ' + x;
+      y := FormatFMDateTimeStr('mm/dd/yy hh:nn', StopTime);
+      if IsFMDateTime(StopTime)  and (Length(StopTime) = FM_DATE_ONLY)  then y := Piece(y, #32, 1);
+      if Length(y) > 0 then x := x + CRLF + 'Stop: ' + y;
+      DateHeight := MeasureColumnHeight(x,Index,2);
+      NewHeight := HigherOf(TextHeight, DateHeight);
+    end;
+  end;
+  AaHeight := NewHeight;
+end;
+
+procedure TfrmODActive.lstActiveOrdersDrawItem(Control: TWinControl;
+  Index: Integer; TheeRect: TRect; State: TOwnerDrawState);
+var
+  x, y: string;
+  ARect: TRect;
+  AnOrder: TOrder;
+  i,RightSide: integer;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstActiveOrders do
+  begin
+    ARect := TheeRect;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    RightSide := -2;
+    for i := 0 to 2 do
+    begin
+      RightSide := RightSide + hdControl.Sections[i].Width;
+      Canvas.MoveTo(RightSide, ARect.Bottom - 1);
+      Canvas.LineTo(RightSide, ARect.Top);
+    end;
+    if Index < Items.Count then
+    begin
+      AnOrder := TOrder(Items.Objects[Index]);
+      if AnOrder <> nil then with AnOrder do for i := 0 to 3 do
+      begin
+        if i > 0 then ARect.Left := ARect.Right + 2 else ARect.Left := 2;
+        ARect.Right := ARect.Left + hdControl.Sections[i].Width - 6;
+        SaveColor := Canvas.Brush.Color;
+        if i = 0 then
+        begin
+          x := DGroupName;
+          if (Index > 0) and (x = TOrder(Items.Objects[Index - 1]).DGroupName) then x := '';
+        end;
+        if i = 1 then x := Text;
+        if i = 2 then
+        begin
+          x := FormatFMDateTimeStr('mm/dd/yy hh:nn', StartTime);
+          if IsFMDateTime(StartTime) and (Length(StartTime) = FM_DATE_ONLY) then x := Piece(x, #32, 1);
+          if Length(x) > 0 then x := 'Start: ' + x;
+          y := FormatFMDateTimeStr('mm/dd/yy hh:nn', StopTime);
+          if IsFMDateTime(StopTime)  and (Length(StopTime) = FM_DATE_ONLY)  then y := Piece(y, #32, 1);
+          if Length(y) > 0 then x := x + CRLF + 'Stop: ' + y;
+        end;
+        if i = 3 then x := NameOfStatus(Status);
+        if (i = 1) or (i = 2) then
+          DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK)
+        else
+          DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX );
+        Canvas.Brush.Color := SaveColor;
+        ARect.Right := ARect.Right + 4;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmODActive.RetrieveVisibleOrders(AnIndex: Integer);
+var
+  i: Integer;
+  tmplst: TList;
+  AnOrder: TOrder;
+begin
+  tmplst := TList.Create;
+  for i := AnIndex to AnIndex + 100 do
+  begin
+    if i >= ActiveOrderList.Count then break;
+    AnOrder := TOrder(ActiveOrderList.Items[i]);
+    if not AnOrder.Retrieved then tmplst.Add(AnOrder);
+  end;
+  RetrieveOrderFields(tmplst, 2, -1);
+  tmplst.Free;
+end;
+
+procedure TfrmODActive.hdControlSectionResize(
+  HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  RedrawSuspend(Self.Handle);
+  RedrawActiveList;
+  RedrawActivate(Self.Handle);
+  lstActiveOrders.Invalidate;
+end;
+
+procedure TfrmODActive.RedrawActiveList;
+var
+  i, SaveTop: Integer;
+  AnOrder: TOrder;
+begin
+  with lstActiveOrders do
+  begin
+    RedrawSuspend(Handle);
+    SaveTop := TopIndex;
+    Clear;
+    for i := 0 to ActiveOrderList.Count - 1 do
+    begin
+      AnOrder := TOrder(ActiveOrderList.Items[i]);
+      if (AnOrder.ID = FDefaultEventOrder) or (IsDCedOrder(AnOrder.ID)) then
+        Continue;
+      Items.AddObject(AnOrder.ID, AnOrder);
+    end;
+    TopIndex := SaveTop;
+    RedrawActivate(Handle);
+  end;
+end;
+
+function TfrmODActive.MeasureColumnHeight(TheOrderText: string; Index,
+  Column: integer): integer;
+var
+  ARect: TRect;
+begin
+  ARect.Left := 0;
+  ARect.Top := 0;
+  ARect.Bottom := 0;
+  ARect.Right := hdControl.Sections[Column].Width -6;
+  Result := WrappedTextHeightByFont(lstActiveOrders.Canvas,lstActiveOrders.Font,TheOrderText,ARect);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAllgy.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAllgy.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAllgy.dfm	(revision 1676)
@@ -0,0 +1,427 @@
+inherited frmODAllergy: TfrmODAllergy
+  Tag = 105
+  Left = 13
+  Top = 106
+  Height = 339
+  HorzScrollBar.Range = 520
+  VertScrollBar.Range = 312
+  Caption = 'Enter Allergy Information'
+  ExplicitHeight = 339
+  PixelsPerInch = 96
+  TextHeight = 13
+  object btnAgent: TSpeedButton [0]
+    Left = 175
+    Top = 61
+    Width = 19
+    Height = 19
+    Caption = '...'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    OnClick = btnAgentClick
+  end
+  object lblReactionType: TOROffsetLabel [1]
+    Left = 7
+    Top = 81
+    Width = 188
+    Height = 15
+    Caption = 'Type of Reaction:'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblAgent: TOROffsetLabel [2]
+    Left = 7
+    Top = 44
+    Width = 188
+    Height = 15
+    Caption = 'Causative agent:'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblSymptoms: TOROffsetLabel [3]
+    Left = 7
+    Top = 125
+    Width = 134
+    Height = 15
+    Caption = 'Signs/Symptoms'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblSelectedSymptoms: TOROffsetLabel [4]
+    Left = 147
+    Top = 125
+    Width = 119
+    Height = 15
+    Caption = 'Selected Symptoms'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblComments: TOROffsetLabel [5]
+    Left = 281
+    Top = 125
+    Width = 226
+    Height = 15
+    Caption = 'Comments'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblOriginator: TOROffsetLabel [6]
+    Left = 209
+    Top = 6
+    Width = 45
+    Height = 15
+    Caption = 'Observer'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object Bevel1: TBevel [7]
+    Left = 2
+    Top = 125
+    Width = 273
+    Height = 125
+  end
+  object lblObservedDate: TOROffsetLabel [8]
+    Left = 366
+    Top = 46
+    Width = 140
+    Height = 15
+    Caption = 'Reaction Date/Time'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblSeverity: TOROffsetLabel [9]
+    Left = 365
+    Top = 82
+    Width = 141
+    Height = 15
+    Caption = 'Severity'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lstAllergy: TORListBox [10]
+    Left = 8
+    Top = 61
+    Width = 166
+    Height = 21
+    Color = clBtnFace
+    ExtendedSelect = False
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    OnClick = lstAllergyClick
+    Caption = 'Causative agent'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    OnChange = ControlChange
+  end
+  inherited memOrder: TCaptionMemo
+    Left = 5
+    Top = 256
+    TabOrder = 16
+    ExplicitLeft = 5
+    ExplicitTop = 256
+  end
+  inherited cmdAccept: TButton
+    Left = 441
+    Top = 256
+    Caption = 'Accept'
+    TabOrder = 13
+    ExplicitLeft = 441
+    ExplicitTop = 256
+  end
+  inherited cmdQuit: TButton
+    Left = 441
+    Top = 283
+    TabOrder = 14
+    ExplicitLeft = 441
+    ExplicitTop = 283
+  end
+  inherited pnlMessage: TPanel
+    Left = 20
+    Top = 253
+    TabOrder = 15
+    ExplicitLeft = 20
+    ExplicitTop = 253
+    inherited memMessage: TRichEdit
+      Left = 41
+      ExplicitLeft = 41
+    end
+  end
+  object cboReactionType: TORComboBox [15]
+    Left = 7
+    Top = 96
+    Width = 190
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Type of Reaction'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object grpObsHist: TRadioGroup [16]
+    Left = 364
+    Top = 11
+    Width = 147
+    Height = 30
+    Columns = 2
+    Ctl3D = True
+    Items.Strings = (
+      '&Observed'
+      '&Historical')
+    ParentCtl3D = False
+    TabOrder = 9
+    OnClick = grpObsHistClick
+  end
+  object memComments: TRichEdit [17]
+    Left = 282
+    Top = 142
+    Width = 229
+    Height = 104
+    TabOrder = 12
+    WantTabs = True
+    OnExit = memCommentsExit
+    OnKeyUp = memCommentsKeyUp
+  end
+  object lstSelectedSymptoms: TORListBox [18]
+    Left = 147
+    Top = 143
+    Width = 122
+    Height = 75
+    ExtendedSelect = False
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 5
+    Caption = 'Selected Symptoms'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2,4'
+    OnChange = ControlChange
+  end
+  object ckNoKnownAllergies: TCheckBox [19]
+    Left = 8
+    Top = 18
+    Width = 119
+    Height = 17
+    Caption = 'No Known Allergies'
+    TabOrder = 0
+    OnClick = ckNoKnownAllergiesClick
+  end
+  object cboOriginator: TORComboBox [20]
+    Left = 210
+    Top = 22
+    Width = 139
+    Height = 96
+    Anchors = [akLeft, akTop, akRight]
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Observer'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2,3'
+    ShowHint = False
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 8
+    OnChange = ControlChange
+    OnNeedData = cboOriginatorNeedData
+    CharsNeedMatch = 1
+  end
+  object cboSymptoms: TORComboBox [21]
+    Left = 7
+    Top = 143
+    Width = 135
+    Height = 103
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Signs/Symptoms'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnKeyDown = cboSymptomsKeyDown
+    OnMouseClick = cboSymptomsMouseClick
+    OnNeedData = cboSymptomsNeedData
+    CharsNeedMatch = 1
+  end
+  object btnCurrent: TButton [22]
+    Left = 137
+    Top = 14
+    Width = 56
+    Height = 21
+    Caption = 'Current'
+    TabOrder = 1
+    OnClick = btnCurrentClick
+  end
+  object calObservedDate: TORDateBox [23]
+    Left = 365
+    Top = 62
+    Width = 145
+    Height = 21
+    TabOrder = 10
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Reaction Date/Time'
+  end
+  object cboSeverity: TORComboBox [24]
+    Left = 365
+    Top = 97
+    Width = 144
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Severity'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 11
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object btnRemove: TButton [25]
+    Left = 210
+    Top = 224
+    Width = 57
+    Height = 21
+    Caption = 'Remove'
+    TabOrder = 7
+    OnClick = btnRemoveClick
+  end
+  object btnDateTime: TButton [26]
+    Left = 147
+    Top = 224
+    Width = 62
+    Height = 21
+    Caption = 'Date/Time'
+    TabOrder = 6
+    OnClick = btnDateTimeClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstAllergy'
+        'Status = stsDefault')
+      (
+        'Component = cboReactionType'
+        'Status = stsDefault')
+      (
+        'Component = grpObsHist'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = lstSelectedSymptoms'
+        'Status = stsDefault')
+      (
+        'Component = ckNoKnownAllergies'
+        'Status = stsDefault')
+      (
+        'Component = cboOriginator'
+        'Status = stsDefault')
+      (
+        'Component = cboSymptoms'
+        'Status = stsDefault')
+      (
+        'Component = btnCurrent'
+        'Status = stsDefault')
+      (
+        'Component = calObservedDate'
+        'Status = stsDefault')
+      (
+        'Component = cboSeverity'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnDateTime'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODAllergy'
+        'Status = stsDefault'))
+  end
+  object dlgReactionDateTime: TORDateTimeDlg
+    FMDateTime = 2981202.000000000000000000
+    DateOnly = False
+    RequireTime = False
+    Left = 242
+    Top = 10
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAllgy.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAllgy.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAllgy.pas	(revision 1676)
@@ -0,0 +1,542 @@
+unit fODAllgy;
+{$O-}
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, ORCtrls, ORfn, fODBase, ExtCtrls, ComCtrls, uConst,
+  Menus, ORDtTm, Buttons, VA508AccessibilityManager;
+
+type
+  TfrmODAllergy = class(TfrmODBase)
+    btnAgent: TSpeedButton;
+    cboReactionType: TORComboBox;
+    lblReactionType: TOROffsetLabel;
+    lblAgent: TOROffsetLabel;
+    lblSymptoms: TOROffsetLabel;
+    lblSelectedSymptoms: TOROffsetLabel;
+    grpObsHist: TRadioGroup;
+    memComments: TRichEdit;
+    lblComments: TOROffsetLabel;
+    lstSelectedSymptoms: TORListBox;
+    ckNoKnownAllergies: TCheckBox;
+    cboOriginator: TORComboBox;
+    lblOriginator: TOROffsetLabel;
+    Bevel1: TBevel;
+    lstAllergy: TORListBox;
+    cboSymptoms: TORComboBox;
+    dlgReactionDateTime: TORDateTimeDlg;
+    btnCurrent: TButton;
+    lblObservedDate: TOROffsetLabel;
+    calObservedDate: TORDateBox;
+    lblSeverity: TOROffsetLabel;
+    cboSeverity: TORComboBox;
+    btnRemove: TButton;
+    btnDateTime: TButton;
+    procedure btnAgentClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboOriginatorNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboSymptomsNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure lstAllergySelect(Sender: TObject);
+    procedure grpObsHistClick(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure memCommentsExit(Sender: TObject);
+    procedure cboSymptomsClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure ckNoKnownAllergiesClick(Sender: TObject);
+    procedure EnableControls;
+    procedure DisableControls;
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure btnCurrentClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure lstAllergyClick(Sender: TObject);
+    procedure btnDateTimeClick(Sender: TObject);
+    procedure cboSymptomsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboSymptomsMouseClick(Sender: TObject);
+    procedure memCommentsKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FLastAllergyID: string;
+    FNKAOrder: boolean;
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+var
+  frmODAllergy: TfrmODAllergy;
+  AllergyList: TStringList;
+
+implementation
+
+{$R *.DFM}
+
+uses
+    rODBase, uCore, rCore, rCover, rODAllergy, fAllgyFind, fPtCWAD;
+
+const
+  TX_NO_ALLERGY       = 'An allergy must be specified.'    ;
+  TX_NO_REACTION      = 'A reaction type must be entered for this allergy.'  ;
+  TX_NO_SYMPTOMS      = 'Symptoms must be selected for this observed allergy and reaction.';
+  TX_NO_OBSERVER      = 'An observer must be selected for this allergy and reaction .';
+  TX_NO_FUTURE_DATES  = 'Dates in the future are not allowed.';
+  TX_BAD_DATE         = 'Dates must be in the format m/d/y or m/y or y, or T-d.';
+  TX_CAP_FUTURE       = 'Invalid date';
+
+procedure TfrmODAllergy.FormCreate(Sender: TObject);
+begin
+  inherited;
+  AllergyList := TStringList.Create;
+  AllowQuickOrder := False;
+  FillerID := 'GMRD';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'GMRAOR ALLERGY ENTER/EDIT';   // loads formatting info
+  StatusText('Loading Default Values');
+  CtrlInits.LoadDefaults(ODForAllergies);  // returns TStrings with defaults
+  StatusText('Initializing Long List');
+  CtrlInits.SetControl(cboSymptoms, 'Top Ten');
+  cboSymptoms.InsertSeparator;
+  cboOriginator.InitLongList(User.Name) ;
+  cboOriginator.SelectByIEN(User.DUZ);
+  PreserveControl(cboSymptoms);
+  PreserveControl(cboOriginator);
+  InitDialog;
+  btnAgentClick(Self);
+end;
+
+procedure TfrmODAllergy.InitDialog;
+begin
+  inherited;
+  Changing := True;
+  with CtrlInits do
+    begin
+      SetControl(cboReactionType, 'Reactions');
+      SetControl(cboSeverity, 'Severity');
+    end;
+  lstAllergy.Items.Add('-1^Click button to search ---->');
+  grpObsHist.ItemIndex := 1;
+  calObservedDate.Text := ''; //FMDateTime := FMNow;
+  cboSeverity.ItemIndex := -1;
+  cboSymptoms.ItemIndex := -1;
+  memComments.Clear;
+  ListAllergies(AllergyList);
+  with AllergyList do
+    if Count > 0 then
+      begin
+        if Piece(Strings[0], U, 1) = '' then
+          ckNoKnownAllergies.Enabled := True
+        else
+          ckNoKnownAllergies.Enabled := False;
+      end
+    else
+      ckNoKnownAllergies.Enabled := True;
+  StatusText('');
+  memOrder.Clear ;
+  Changing := False;
+end;
+
+procedure TfrmODAllergy.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    SetControl(lstAllergy,          'ITEM',   1);
+    lstAllergySelect(Self);
+    Changing := True;
+    SetControl(cboReactionType,     'TYPE',     1);
+    SetControl(lstSelectedSymptoms, 'REACTION',     1);     // need dates concatenated  - see cboSymptomsClick
+    SetControl(grpObsHist,          'OBSERVED',     1);
+    SetControl(calObservedDate,     'START',     1);
+    SetControl(cboSeverity,         'SEVERITY',     1);
+    SetControl(memComments,         'COMMENT',   1);
+    SetControl(ckNoKnownAllergies,  'NKA',       1);
+    SetControl(cboOriginator,       'PROVIDER',  1);
+    Changing := False;
+    ControlChange(Self);
+  end;
+end;
+
+procedure TfrmODAllergy.Validate(var AnErrMsg: string);
+var
+  tmpDate: TFMDateTime;
+const
+  TX_NO_LOCATION = 'A location must be identified.' + CRLF +
+                   '(Select File | Update Provider/Location)';
+  TX_NO_PROVIDER = 'A provider who is authorized to write orders must be indentified.' + CRLF +
+                   '(Select File | Update Provider/Location)';
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+//  inherited;    v14a -  do not reject past dates - historical would not be allowed
+  AnErrMsg := '';
+  if User.NoOrdering then AnErrMsg := 'Ordering has been disabled.  Press Quit.';
+  if not ckNoKnownAllergies.Checked then
+    begin
+      if lstAllergy.Items.Count = 0 then SetError(TX_NO_ALLERGY)
+      else if (Length(lstAllergy.DisplayText[0]) = 0) or
+         (Piece(lstAllergy.Items[0], U, 1) = '-1') then SetError(TX_NO_ALLERGY);
+      if (grpObsHist.ItemIndex = 0) and (lstSelectedSymptoms.Items.Count = 0)   then SetError(TX_NO_SYMPTOMS);
+      if cboReactionType.ItemID = '' then
+        SetError(TX_NO_REACTION)
+      else
+        Responses.Update('TYPE', 1, cboReactionType.ItemID, cboReactionType.Text);
+    end;
+  if cboOriginator.ItemIEN = 0             then SetError(TX_NO_OBSERVER);
+  if calObservedDate.Text <> '' then
+    begin
+      tmpDate := ValidDateTimeStr(calObservedDate.Text, 'TS');
+      if tmpDate > FMNow then  SetError(TX_NO_FUTURE_DATES);
+      if tmpDate < 0 then SetError(TX_BAD_DATE);
+    end;
+  if (Encounter.Location = 0) and not(Self.EvtID>0) then AnErrMsg := TX_NO_LOCATION;
+  if (Encounter.Provider = 0) or (PersonHasKey(Encounter.Provider, 'PROVIDER') = False)
+    then AnErrMsg := TX_NO_PROVIDER;
+end;
+
+procedure TfrmODAllergy.cboOriginatorNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboOriginator.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmODAllergy.cboSymptomsNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboSymptoms.ForDataUse(SubSetOfSymptoms(StartFrom, Direction));
+end;
+
+procedure TfrmODAllergy.grpObsHistClick(Sender: TObject);
+begin
+  inherited;
+  Changing := True;
+  cboSeverity.ItemIndex := -1;
+  case grpObsHist.ItemIndex of
+    0:  begin
+          cboSeverity.Visible := True;
+          lblSeverity.Visible := True;
+        end;
+    1:  begin
+          cboSeverity.Visible := False;
+          lblSeverity.Visible := False;
+        end;
+  end;
+  Changing := False;
+  ControlChange(Self);
+end;
+
+procedure TfrmODAllergy.ControlChange(Sender: TObject);
+var
+  i: integer;
+  tmpDate: TFMDateTime;
+begin
+  inherited;
+  if Changing then Exit;
+  Responses.Clear;
+  if ckNoKnownAllergies.Checked then
+    begin
+      Responses.Update('NKA',       1, 'NKA', 'No Known Allergies');
+      with cboOriginator       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
+    end
+  else
+    with lstAllergy          do
+      if (Items.Count > 0) then
+        if (Piece(Items[0], U, 1) <>  '-1') and (Length(DisplayText[0]) > 0) then
+          begin
+            Responses.Update('ITEM', 1, DisplayText[0], DisplayText[0]);
+            with cboReactionType     do if ItemID     <> '' then Responses.Update('TYPE', 1, ItemID, Text);
+            with lstSelectedSymptoms do for i := 0 to Items.Count - 1 do
+              begin
+                Responses.Update('REACTION', i+1, Piece(Items[i],U,1), Piece(Items[i],U,2));
+                Responses.Update('REACTDT',  i+1, Piece(Items[i],U,3), Piece(Items[i],U,4));
+              end;
+            with grpObsHist          do if ItemIndex   > -1 then
+                                        if ItemIndex = 0    then Responses.Update('OBSERVED',     1, 'o', 'Observed')
+                                        else                     Responses.Update('OBSERVED',     1, 'h', 'Historical');
+            with calObservedDate do
+              begin
+                tmpDate := ValidDateTimeStr(calObservedDate.Text, 'TS');
+                if tmpDate   > 0 then Responses.Update('START',     1, FloatToStr(tmpDate), Text);
+              end;
+            with cboSeverity         do if ItemID     <> '' then Responses.Update('SEVERITY',     1, ItemID, Text);
+            with cboOriginator       do if ItemIEN      > 0 then Responses.Update('PROVIDER',  1, ItemID, Text);
+            with memComments         do if GetTextLen   > 0 then Responses.Update('COMMENT',   1, TX_WPTYPE, Text);
+          end;
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODAllergy.lstAllergySelect(Sender: TObject);
+begin
+  inherited;
+  with lstAllergy do
+    begin
+      if Items.Count = 0 then
+        Exit
+      else if Piece(Items[0], U, 1) = '-1' then
+        Exit;
+      if Piece(Items[0], U, 1) <> FLastAllergyID then FLastAllergyID := Piece(Items[0], U, 1) else Exit;
+      Changing := True;
+      if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+      Changing := False;
+      if CharAt(Piece(Items[0], U, 1), 1) = 'Q' then
+        begin
+          Responses.QuickOrder := ExtractInteger(Piece(Items[0], U, 1));
+          Responses.SetControl(lstAllergy, 'ITEM', 1);
+          FLastAllergyID := Piece(Items[0], U, 1);
+        end;
+    end;
+  with Responses do if QuickOrder > 0 then
+    begin
+    SetControl(lstAllergy,          'ITEM',   1);
+    lstAllergySelect(Self);
+    Changing := True;
+    SetControl(cboReactionType,     'TYPE',     1);
+    SetControl(lstSelectedSymptoms, 'REACTION',     1);
+    SetControl(grpObsHist,          'OBSERVED',     1);
+    SetControl(calObservedDate,     'START',     1);
+    SetControl(cboSeverity,         'SEVERITY',     1);
+    SetControl(memComments,         'COMMENT',   1);
+    SetControl(ckNoKnownAllergies,  'NKA',       1);
+    SetControl(cboOriginator,       'PROVIDER',  1);
+    end;
+  ControlChange(Self) ;
+end;
+
+procedure TfrmODAllergy.memCommentsExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    FastAssign(memComments.Lines, AStringList);
+    LimitStringLength(AStringList, 74);
+    QuickCopy(AstringList, memComments);
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure TfrmODAllergy.btnAgentClick(Sender: TObject);
+var
+  Allergy: string;
+begin
+  inherited;
+  AllergyLookup(Allergy, ckNoKnownAllergies.Enabled);
+  if Piece(Allergy, U, 1) = '-1' then
+    ckNoKnownAllergies.Checked := True
+  else
+    if Allergy <> '' then
+      begin
+        lstAllergy.Clear;
+        lstAllergy.Items.Add(Allergy);
+        cboReactionType.SelectByID(Piece(Allergy, U, 4));
+      end
+  else
+    Close;
+  ControlChange(lstAllergy);
+end;
+
+procedure TfrmODAllergy.cboSymptomsClick(Sender: TObject);
+begin
+  inherited;
+  if cboSymptoms.ItemIndex < 0 then exit;
+  Changing := True;
+  if lstSelectedSymptoms.SelectByID(cboSymptoms.ItemID) > -1 then exit;
+  with lstSelectedSymptoms do
+    begin
+      Items.Add(cboSymptoms.Items[cboSymptoms.ItemIndex]);
+      SelectByID(cboSymptoms.ItemID);
+    end;
+  Changing := False;
+  ControlChange(Self)
+end;
+
+procedure TfrmODAllergy.FormDestroy(Sender: TObject);
+begin
+  AllergyList.Free;
+  inherited;
+end;
+
+procedure TfrmODAllergy.ckNoKnownAllergiesClick(Sender: TObject);
+begin
+  inherited;
+  if ckNoKnownAllergies.Checked then
+    begin
+      DisableControls;
+      FNKAOrder := True;
+    end
+  else
+    begin
+      EnableControls;
+      FNKAOrder := False;
+    end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODAllergy.DisableControls;
+begin
+   InitDialog;
+   btnAgent.Enabled            := False;
+   cboReactionType.Enabled     := False;
+   lblReactionType.Enabled     := False;
+   lblAgent.Enabled            := False;
+   lblSymptoms.Enabled         := False;
+   lblSelectedSymptoms.Enabled := False;
+   grpObsHist.Enabled          := False;
+   memComments.Enabled         := False;
+   lblComments.Enabled         := False;
+   lstSelectedSymptoms.Enabled := False;
+   lblObservedDate.Enabled     := False;
+   calObservedDate.Enabled     := False;
+   lblSeverity.Enabled         := False;
+   cboSeverity.Enabled         := False;
+   lstAllergy.Enabled          := False;
+   cboSymptoms.Enabled         := False;
+   btnDateTime.Enabled         := False;
+end;
+
+procedure TfrmODAllergy.EnableControls;
+begin
+   InitDialog;
+   btnAgent.Enabled            := True;
+   cboReactionType.Enabled     := True;
+   lblReactionType.Enabled     := True;
+   lblAgent.Enabled            := True;
+   lblSymptoms.Enabled         := True;
+   lblSelectedSymptoms.Enabled := True;
+   grpObsHist.Enabled          := True;
+   memComments.Enabled         := True;
+   lblComments.Enabled         := True;
+   lstSelectedSymptoms.Enabled := True;
+   lblObservedDate.Enabled     := True;
+   calObservedDate.Enabled     := True;
+   lblSeverity.Enabled         := True;
+   cboSeverity.Enabled         := True;
+   lstAllergy.Enabled          := True;
+   cboSymptoms.Enabled         := True;
+   btnDateTime.Enabled         := True;
+end;
+
+procedure TfrmODAllergy.cmdAcceptClick(Sender: TObject);
+begin
+  if not FNKAOrder then
+    inherited
+  else
+    if ValidSave then
+      begin
+        ckNoKnownAllergies.Checked := False;
+        memOrder.Clear;
+        Responses.Clear;    // to allow form to close without prompting to save order
+        Close;
+      end;
+end;
+
+procedure TfrmODAllergy.btnCurrentClick(Sender: TObject);
+begin
+  inherited;
+  ShowCWAD;
+end;
+
+
+procedure TfrmODAllergy.btnRemoveClick(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+  with lstSelectedSymptoms do
+    begin
+      if (Items.Count = 0) or (ItemIndex = -1) then exit;
+      i := ItemIndex;
+      Items.Delete(ItemIndex);
+      ItemIndex := i - 1;
+      if (Items.Count > 0) and (ItemIndex = -1) then ItemIndex := 0;
+    end;
+end;
+
+procedure TfrmODAllergy.lstAllergyClick(Sender: TObject);
+begin
+  inherited;
+  lstAllergy.ItemIndex := -1;
+end;
+
+procedure TfrmODAllergy.btnDateTimeClick(Sender: TObject);
+begin
+  inherited;
+  with lstSelectedSymptoms do
+    begin
+      if (Items.Count = 0) or (ItemIndex = -1) then exit;
+      dlgReactionDateTime.FMDateTime := FMNow;
+      if not dlgReactionDateTime.Execute then exit;
+      if dlgReactionDateTime.FMDateTime > FMNow then
+        InfoBox(TX_NO_FUTURE_DATES, TX_CAP_FUTURE, MB_OK)
+      else
+        Items[ItemIndex] := Items[ItemIndex] + U + FloatToStr(dlgReactionDateTime.FMDateTime) + U + FormatFMDateTime('mmm dd,yyyy@hh:nn', dlgReactionDateTime.FMDateTime);
+    end;
+end;
+
+procedure TfrmODAllergy.cboSymptomsKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then cboSymptomsMouseClick(Self);
+end;
+
+procedure TfrmODAllergy.cboSymptomsMouseClick(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  if cboSymptoms.ItemIndex < 0 then exit;
+  Changing := True;
+  if lstSelectedSymptoms.SelectByID(cboSymptoms.ItemID) > -1 then exit;
+  with cboSymptoms do
+    if Piece(Items[ItemIndex], U, 3) <> '' then
+      x := ItemID + U + Piece(Items[ItemIndex], U, 3)
+    else
+      x := ItemID + U + Piece(Items[ItemIndex], U, 2);
+  with lstSelectedSymptoms do
+    begin
+      Items.Add(x);
+      SelectByID(cboSymptoms.ItemID);
+    end;
+  Changing := False;
+  ControlChange(Self)
+end;
+
+procedure TfrmODAllergy.memCommentsKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAuto.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAuto.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAuto.dfm	(revision 1676)
@@ -0,0 +1,37 @@
+inherited frmODAuto: TfrmODAuto
+  Caption = 'Auto-Accept Order'
+  FormStyle = fsNormal
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 108
+    Top = 72
+    Width = 287
+    Height = 26
+    Caption = 
+      'This form is never made visible.  It exists to allow auto-accept' +
+      ' orders to be treated as any other order dialog.'
+    WordWrap = True
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODAuto'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAuto.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAuto.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODAuto.pas	(revision 1676)
@@ -0,0 +1,92 @@
+unit fODAuto;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ComCtrls, ExtCtrls, ORFn, ORCtrls,
+  VA508AccessibilityManager;
+
+type
+  TfrmODAuto = class(TfrmODBase)
+    Label1: TLabel;
+  public
+    procedure InitDialog; override;
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure Validate(var AnErrMsg: string); override;
+  end;
+
+var
+  frmODAuto: TfrmODAuto;
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase, rOrders, fTemplateDialog, uTemplateFields, rTemplates, uConst, uTemplates,
+     rConsults, uCore, uODBase;
+
+procedure TfrmODAuto.InitDialog;
+begin
+  inherited;
+  // nothing for now
+end;
+
+procedure TfrmODAuto.Validate(var AnErrMsg: string);
+var
+  cptn, tmp, DocInfo: string;
+  TempSL: TStringList;
+  LType: TTemplateLinkType;
+  IEN: integer;
+  HasObjects: boolean;
+
+begin
+  inherited;
+  DocInfo := '';
+  LType := DisplayGroupToLinkType(Responses.DisplayGroup);
+  tmp := Responses.EValueFor('COMMENT', 1);
+  ExpandOrderObjects(tmp, HasObjects);
+  Responses.OrderContainsObjects := Responses.OrderContainsObjects or HasObjects;
+  if (LType <> ltNone) or HasTemplateField(tmp) then
+  begin
+    cptn := 'Reason for Request: ' + Responses.EValueFor('ORDERABLE', 1);
+    case LType of
+      ltConsult:   IEN := StrToIntDef(GetServiceIEN(Responses.IValueFor('ORDERABLE', 1)),0);
+      ltProcedure: IEN := StrToIntDef(GetProcedureIEN(Responses.IValueFor('ORDERABLE', 1)),0);
+      else         IEN := 0;
+    end;
+    if IEN <> 0 then
+      ExecuteTemplateOrBoilerPlate(tmp, IEN, LType, nil, cptn, DocInfo)
+    else
+      CheckBoilerplate4Fields(tmp, cptn);
+
+    if tmp <> '' then
+      Responses.Update('COMMENT', 1, TX_WPTYPE, tmp)
+    else
+    begin
+      TempSL := TStringList.Create;
+      try
+        TempSL.Text := Responses.EValueFor('COMMENT', 1);
+        Convert2LMText(TempSL);
+        Responses.Update('COMMENT', 1, TX_WPTYPE, TempSL.Text);
+      finally
+        TempSL.Free;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmODAuto.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  DialogNames: TDialogNames;
+begin
+  inherited;  // Responses is already loaded here
+  AutoAccept := True;
+  StatusText('Loading Dialog Definition');
+  FillerID := FillerIDForDialog(DialogIEN);
+  IdentifyDialog(DialogNames, DialogIEN);
+  Responses.Dialog := DialogNames.BaseName;                      // loads formatting info
+  StatusText('');
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBBank.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBBank.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBBank.dfm	(revision 1676)
@@ -0,0 +1,986 @@
+inherited frmODBBank: TfrmODBBank
+  Left = 409
+  Top = 244
+  HorzScrollBar.Range = 0
+  VertScrollBar.Range = 0
+  Caption = 'Blood Component and Diagnostic Test Order Form'
+  ClientHeight = 600
+  ClientWidth = 709
+  ExplicitWidth = 717
+  ExplicitHeight = 634
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlComments: TPanel [0]
+    Left = 12
+    Top = 25
+    Width = 534
+    Height = 368
+    TabOrder = 5
+    Visible = False
+    object lblOrdComment: TLabel
+      Left = 25
+      Top = 3
+      Width = 87
+      Height = 13
+      Caption = 'Order Comment'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+    end
+    object btnUpdateComments: TButton
+      Left = 372
+      Top = 174
+      Width = 115
+      Height = 25
+      Caption = 'Update Comments'
+      TabOrder = 0
+      OnClick = btnUpdateCommentsClick
+    end
+    object btnCancelComment: TButton
+      Left = 279
+      Top = 174
+      Width = 75
+      Height = 25
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelCommentClick
+    end
+  end
+  inherited memOrder: TCaptionMemo
+    Left = 0
+    Top = 399
+    Width = 449
+    Height = 59
+    Visible = False
+    ExplicitLeft = 0
+    ExplicitTop = 399
+    ExplicitWidth = 449
+    ExplicitHeight = 59
+  end
+  object pgeProduct: TPageControl [2]
+    Left = 0
+    Top = 0
+    Width = 709
+    Height = 393
+    ActivePage = TabDiag
+    Align = alTop
+    TabOrder = 6
+    TabStop = False
+    OnChange = pgeProductChange
+    object TabInfo: TTabSheet
+      Caption = 'Patient Information'
+      ImageIndex = 3
+      object edtInfo: TCaptionRichEdit
+        Left = 0
+        Top = 8
+        Width = 556
+        Height = 337
+        TabStop = False
+        BevelInner = bvNone
+        BevelOuter = bvNone
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 0
+        Caption = 'Patient Info'
+      end
+    end
+    object TabDiag: TTabSheet
+      Caption = 'Blood Bank Orders'
+      ImageIndex = 2
+      object lblReqComment: TOROffsetLabel
+        Left = 298
+        Top = 25
+        Width = 108
+        Height = 37
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+      end
+      object pnlFields: TPanel
+        Left = 0
+        Top = 163
+        Width = 701
+        Height = 99
+        Hint = 'Data entered into these fields apply to the entire order.'
+        Align = alTop
+        BevelEdges = []
+        BevelOuter = bvNone
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        object lblDiagComment: TOROffsetLabel
+          Left = 257
+          Top = 35
+          Width = 46
+          Height = 15
+          Caption = 'Comment'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          HorzOffset = 2
+          ParentFont = False
+          Transparent = False
+          VertOffset = 2
+          WordWrap = True
+        end
+        object lblUrgency: TLabel
+          Left = 8
+          Top = -2
+          Width = 44
+          Height = 13
+          Caption = 'Urgency*'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+        end
+        object lblReason: TLabel
+          Left = 10
+          Top = 35
+          Width = 99
+          Height = 13
+          Caption = 'Reason for Request*'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+        end
+        object lblSurgery: TLabel
+          Left = 115
+          Top = -2
+          Width = 36
+          Height = 13
+          Hint = 
+            'Enter the name of the surgical procedure that this request is fo' +
+            'r.'
+          Caption = 'Surgery'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+        end
+        object lblRequiredField: TLabel
+          Left = 10
+          Top = 75
+          Width = 122
+          Height = 13
+          Caption = '* Indicates a required field'
+        end
+        object cboUrgency: TORComboBox
+          Left = 12
+          Top = 12
+          Width = 98
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Caption = 'Urgency'
+          Color = clWindow
+          DropDownCount = 8
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = False
+          LookupPiece = 0
+          MaxLength = 0
+          ParentFont = False
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 0
+          OnChange = cboUrgencyChange
+          OnExit = cboUrgencyExit
+          CharsNeedMatch = 1
+        end
+        object chkConsent: TCheckBox
+          Left = 351
+          Top = 10
+          Width = 112
+          Height = 17
+          Hint = 'Informed Consent Signed On Chart?'
+          Alignment = taLeftJustify
+          Caption = 'Informed Consent?'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          Visible = False
+          OnClick = chkConsentClick
+        end
+        object cboSurgery: TORComboBox
+          Left = 115
+          Top = 12
+          Width = 218
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Caption = 'Surgery'
+          Color = clWindow
+          DropDownCount = 8
+          Enabled = False
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = False
+          LongList = False
+          LookupPiece = 0
+          MaxLength = 0
+          ParentFont = False
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 1
+          OnChange = cboSurgeryChange
+          OnClick = cboSurgeryClick
+          CharsNeedMatch = 1
+        end
+        object cboReasons: TORComboBox
+          Left = 12
+          Top = 51
+          Width = 239
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = False
+          LongList = False
+          LookupPiece = 0
+          MaxLength = 0
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 2
+          OnChange = cboReasonsChange
+          OnEnter = cboReasonsEnter
+          OnExit = cboReasonsExit
+          CharsNeedMatch = 1
+        end
+        object memDiagComment: TRichEdit
+          Left = 257
+          Top = 51
+          Width = 250
+          Height = 48
+          TabOrder = 4
+          OnChange = memDiagCommentChange
+        end
+      end
+      object pnlSelect: TPanel
+        Left = 0
+        Top = 35
+        Width = 701
+        Height = 128
+        Align = alTop
+        BevelEdges = []
+        BevelOuter = bvNone
+        TabOrder = 1
+        object lblTNS: TLabel
+          Left = 298
+          Top = 109
+          Width = 14
+          Height = 13
+          Caption = 'tns'
+          Color = clActiveBorder
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clMaroon
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentColor = False
+          ParentFont = False
+          Visible = False
+        end
+        object pnlDiagnosticTests: TGroupBox
+          Left = 256
+          Top = 0
+          Width = 267
+          Height = 110
+          Caption = 'Diagnostic Tests'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          TabOrder = 1
+          object lblCollType: TLabel
+            Left = 13
+            Top = 33
+            Width = 77
+            Height = 13
+            Caption = 'Collection Type*'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+          end
+          object lblCollTime: TLabel
+            Left = 12
+            Top = 70
+            Width = 104
+            Height = 13
+            Caption = 'Collection Date/Time*'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+          end
+          object cmdImmedColl: TSpeedButton
+            Left = 148
+            Top = 89
+            Width = 21
+            Height = 11
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -16
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            Glyph.Data = {
+              D6000000424DD60000000000000076000000280000000C0000000C0000000100
+              0400000000006000000000000000000000001000000010000000000000000000
+              80000080000000808000800000008000800080800000C0C0C000808080000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+              0000333333333333000033333333333300003333333333330000300330033003
+              0000300330033003000033333333333300003333333333330000333333333333
+              0000333333333333000033333333333300003333333333330000}
+            ParentFont = False
+            ParentShowHint = False
+            ShowHint = False
+            OnClick = cmdImmedCollClick
+          end
+          object pnlCollTimeButton: TKeyClickPanel
+            Left = 85
+            Top = 89
+            Width = 20
+            Height = 13
+            BevelOuter = bvNone
+            Caption = 'Select collection time'
+            TabOrder = 5
+            TabStop = True
+          end
+          object cboAvailTest: TORComboBox
+            Left = 13
+            Top = 13
+            Width = 234
+            Height = 21
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Diagnostic Tests'
+            Color = clWindow
+            DropDownCount = 8
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = False
+            LongList = True
+            LookupPiece = 0
+            MaxLength = 0
+            ParentFont = False
+            Pieces = '2'
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 0
+            TabStop = True
+            OnExit = cboAvailTestExit
+            OnMouseClick = cboAvailTestSelect
+            OnNeedData = cboAvailTestNeedData
+            CharsNeedMatch = 1
+          end
+          object cboCollType: TORComboBox
+            Left = 12
+            Top = 46
+            Width = 165
+            Height = 21
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Collection Type'
+            Color = clWindow
+            DropDownCount = 8
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = True
+            LongList = False
+            LookupPiece = 0
+            MaxLength = 0
+            ParentFont = False
+            Pieces = '2'
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 1
+            OnChange = cboCollTypeChange
+            CharsNeedMatch = 1
+          end
+          object cboCollTime: TORComboBox
+            Left = 12
+            Top = 82
+            Width = 165
+            Height = 21
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Collection Date/Time'
+            Color = clWindow
+            DropDownCount = 8
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = False
+            LongList = False
+            LookupPiece = 0
+            MaxLength = 0
+            ParentFont = False
+            Pieces = '2'
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 2
+            OnChange = cboCollTimeChange
+            CharsNeedMatch = 1
+          end
+          object calCollTime: TORDateBox
+            Left = 12
+            Top = 82
+            Width = 165
+            Height = 21
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+            TabOrder = 3
+            OnChange = calCollTimeChange
+            DateOnly = False
+            RequireTime = False
+          end
+          object txtImmedColl: TCaptionEdit
+            Left = 12
+            Top = 82
+            Width = 165
+            Height = 21
+            Color = clBtnFace
+            ReadOnly = True
+            TabOrder = 4
+            Text = 'txtImmedColl'
+          end
+        end
+        object pnlBloodComponents: TGroupBox
+          Left = 4
+          Top = 0
+          Width = 246
+          Height = 110
+          Caption = 'Blood Components'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          TabOrder = 0
+          object lblQuantity: TLabel
+            Left = 198
+            Top = 0
+            Width = 43
+            Height = 13
+            Caption = 'Quantity*'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+          end
+          object lblModifiers: TLabel
+            Left = 7
+            Top = 33
+            Width = 42
+            Height = 13
+            Caption = 'Modifiers'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+          end
+          object lblWanted: TLabel
+            Left = 7
+            Top = 70
+            Width = 96
+            Height = 13
+            Caption = 'Date/Time Wanted*'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+          end
+          object cboAvailComp: TORComboBox
+            Left = 11
+            Top = 13
+            Width = 181
+            Height = 21
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Blood Components'
+            Color = clWindow
+            DropDownCount = 8
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = False
+            LongList = False
+            LookupPiece = 0
+            MaxLength = 0
+            ParentFont = False
+            Pieces = '2'
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 0
+            TabStop = True
+            OnChange = cboAvailCompChange
+            OnExit = cboAvailCompExit
+            OnMouseClick = cboAvailCompSelect
+            OnNeedData = cboAvailCompNeedData
+            CharsNeedMatch = 1
+          end
+          object tQuantity: TEdit
+            Left = 198
+            Top = 13
+            Width = 25
+            Height = 21
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+            TabOrder = 1
+            OnChange = tQuantityChange
+            OnClick = tQuantityClick
+            OnEnter = tQuantityEnter
+          end
+          object cboModifiers: TORComboBox
+            Left = 11
+            Top = 46
+            Width = 133
+            Height = 21
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Modifier'
+            Color = clWindow
+            DropDownCount = 8
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = True
+            LongList = False
+            LookupPiece = 0
+            MaxLength = 0
+            ParentFont = False
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 2
+            OnChange = cboModifiersChange
+            CharsNeedMatch = 1
+          end
+          object calWantTime: TORDateBox
+            Left = 11
+            Top = 82
+            Width = 149
+            Height = 21
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+            TabOrder = 3
+            OnChange = calWantTimeChange
+            DateOnly = False
+            RequireTime = False
+          end
+        end
+      end
+      object GroupBox1: TGroupBox
+        Left = 0
+        Top = 0
+        Width = 701
+        Height = 35
+        Align = alTop
+        Caption = ' Personal Quick Orders'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 0
+        object cboQuick: TORComboBox
+          Left = 15
+          Top = 11
+          Width = 488
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = False
+          LongList = True
+          LookupPiece = 0
+          MaxLength = 0
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 0
+          OnClick = cboQuickClick
+          CharsNeedMatch = 1
+        end
+      end
+      object pnlSelectedTests: TGroupBox
+        Left = 0
+        Top = 262
+        Width = 701
+        Height = 112
+        Align = alTop
+        Caption = 'Selected Components and Tests'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 3
+        Visible = False
+        object lvSelectionList: TCaptionListView
+          Left = 5
+          Top = 12
+          Width = 417
+          Height = 91
+          Color = clBtnFace
+          Columns = <
+            item
+              AutoSize = True
+              Caption = 'Test/Component'
+            end
+            item
+              AutoSize = True
+              Caption = 'Qty'
+            end
+            item
+              AutoSize = True
+              Caption = 'Modifiers'
+            end
+            item
+              Caption = 'ModifierItemIndex'
+              Width = 0
+            end
+            item
+              Caption = 'TestIEN'
+              Width = 0
+            end>
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ReadOnly = True
+          RowSelect = True
+          ParentFont = False
+          TabOrder = 0
+          TabStop = False
+          ViewStyle = vsReport
+          OnClick = lvSelectionListClick
+          Caption = 'lvSelectionList'
+        end
+        object btnRemove: TButton
+          Left = 428
+          Top = 37
+          Width = 75
+          Height = 21
+          Caption = 'Remove'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 1
+          OnClick = btnRemoveClick
+        end
+        object btnRemoveAll: TButton
+          Left = 428
+          Top = 64
+          Width = 75
+          Height = 21
+          Caption = 'Remove All'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          TabOrder = 2
+          OnClick = btnRemoveAllClick
+        end
+      end
+    end
+    object TabResults: TTabSheet
+      Caption = 'Lab Results'
+      object edtResults: TCaptionRichEdit
+        Left = -4
+        Top = 57
+        Width = 517
+        Height = 290
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 0
+      end
+    end
+  end
+  inherited cmdAccept: TButton
+    Left = 455
+    Top = 399
+    TabOrder = 2
+    Visible = False
+    ExplicitLeft = 455
+    ExplicitTop = 399
+  end
+  inherited cmdQuit: TButton
+    Left = 455
+    Top = 426
+    Width = 52
+    TabOrder = 3
+    ExplicitLeft = 455
+    ExplicitTop = 426
+    ExplicitWidth = 52
+  end
+  inherited pnlMessage: TPanel
+    Left = 8
+    Top = 409
+    Width = 409
+    Height = 49
+    TabOrder = 1
+    ExplicitLeft = 8
+    ExplicitTop = 409
+    ExplicitWidth = 409
+    ExplicitHeight = 49
+    inherited memMessage: TRichEdit
+      Left = 42
+      Top = 5
+      Width = 360
+      ExplicitLeft = 42
+      ExplicitTop = 5
+      ExplicitWidth = 360
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODBBank'
+        'Status = stsDefault')
+      (
+        'Component = pnlComments'
+        'Status = stsDefault')
+      (
+        'Component = btnUpdateComments'
+        'Status = stsDefault')
+      (
+        'Component = btnCancelComment'
+        'Status = stsDefault')
+      (
+        'Component = pgeProduct'
+        'Status = stsDefault')
+      (
+        'Component = TabInfo'
+        'Status = stsDefault')
+      (
+        'Component = edtInfo'
+        'Status = stsDefault')
+      (
+        'Component = TabDiag'
+        'Status = stsDefault')
+      (
+        'Component = TabResults'
+        'Status = stsDefault')
+      (
+        'Component = edtResults'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = chkConsent'
+        'Status = stsDefault')
+      (
+        'Component = cboSurgery'
+        'Status = stsDefault')
+      (
+        'Component = pnlSelect'
+        'Status = stsDefault')
+      (
+        'Component = pnlDiagnosticTests'
+        'Status = stsDefault')
+      (
+        'Component = cboAvailTest'
+        'Status = stsDefault')
+      (
+        'Component = pnlBloodComponents'
+        'Status = stsDefault')
+      (
+        'Component = cboAvailComp'
+        'Status = stsDefault')
+      (
+        'Component = tQuantity'
+        'Status = stsDefault')
+      (
+        'Component = cboModifiers'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = cboQuick'
+        'Status = stsDefault')
+      (
+        'Component = pnlSelectedTests'
+        'Status = stsDefault')
+      (
+        'Component = lvSelectionList'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAll'
+        'Status = stsDefault')
+      (
+        'Component = cboReasons'
+        'Text = Applies to entire order'
+        'Status = stsOK')
+      (
+        'Component = memDiagComment'
+        'Status = stsDefault')
+      (
+        'Component = cboCollType'
+        'Status = stsDefault')
+      (
+        'Component = cboCollTime'
+        'Status = stsDefault')
+      (
+        'Component = calWantTime'
+        'Status = stsDefault')
+      (
+        'Component = calCollTime'
+        'Status = stsDefault')
+      (
+        'Component = txtImmedColl'
+        'Status = stsDefault')
+      (
+        'Component = pnlCollTimeButton'
+        'Status = stsDefault'))
+  end
+  object dlgLabCollTime: TORDateTimeDlg
+    FMDateTime = 2980923.000000000000000000
+    DateOnly = False
+    RequireTime = True
+    Left = 435
+    Top = 72
+  end
+  object ORWanted: TORDateTimeDlg
+    FMDateTime = 2980923.000000000000000000
+    DateOnly = False
+    RequireTime = True
+    Left = 343
+    Top = 72
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBBank.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBBank.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBBank.pas	(revision 1676)
@@ -0,0 +1,3972 @@
+unit fODBBank;
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, ORCtrls, ORfn, fODBase, ExtCtrls, ComCtrls, uConst,
+  ORDtTm, Buttons, Menus, ImgList, VA508AccessibilityManager, VAUtils;
+
+type
+  TfrmODBBank = class(TfrmODBase)
+    dlgLabCollTime: TORDateTimeDlg;
+    ORWanted: TORDateTimeDlg;
+    pnlComments: TPanel;
+    btnUpdateComments: TButton;
+    btnCancelComment: TButton;
+    lblOrdComment: TLabel;
+    pgeProduct: TPageControl;
+    TabInfo: TTabSheet;
+    edtInfo: TCaptionRichEdit;
+    TabDiag: TTabSheet;
+    lblReqComment: TOROffsetLabel;
+    TabResults: TTabSheet;
+    edtResults: TCaptionRichEdit;
+    pnlFields: TPanel;
+    lblDiagComment: TOROffsetLabel;
+    lblUrgency: TLabel;
+    lblReason: TLabel;
+    lblSurgery: TLabel;
+    cboUrgency: TORComboBox;
+    chkConsent: TCheckBox;
+    cboSurgery: TORComboBox;
+    pnlSelect: TPanel;
+    pnlDiagnosticTests: TGroupBox;
+    cboAvailTest: TORComboBox;
+    pnlBloodComponents: TGroupBox;
+    lblQuantity: TLabel;
+    lblModifiers: TLabel;
+    cboAvailComp: TORComboBox;
+    tQuantity: TEdit;
+    cboModifiers: TORComboBox;
+    GroupBox1: TGroupBox;
+    cboQuick: TORComboBox;
+    pnlSelectedTests: TGroupBox;
+    lvSelectionList: TCaptionListView;
+    btnRemove: TButton;
+    btnRemoveAll: TButton;
+    cboReasons: TORComboBox;
+    lblRequiredField: TLabel;
+    memDiagComment: TRichEdit;
+    lblCollType: TLabel;
+    cboCollType: TORComboBox;
+    lblCollTime: TLabel;
+    cboCollTime: TORComboBox;
+    calWantTime: TORDateBox;
+    lblWanted: TLabel;
+    calCollTime: TORDateBox;
+    txtImmedColl: TCaptionEdit;
+    pnlCollTimeButton: TKeyClickPanel;
+    cmdImmedColl: TSpeedButton;
+    lblTNS: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cboAvailTestSelect(Sender: TObject);
+    procedure cboAvailCompSelect(Sender: TObject);
+    procedure DisableCommentPanels;
+    procedure DisableComponentControls;
+    procedure DisableDiagTestControls;
+    procedure EnableComponentControls;
+    procedure EnableDiagTestControls;
+    procedure cboAvailTestExit(Sender: TObject);
+    procedure cboAvailCompExit(Sender: TObject);
+    procedure cboAvailTestNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure cboAvailCompNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure cmdImmedCollClick(Sender: TObject);
+    procedure pgeProductChange(Sender: TObject);
+    procedure cboCollTypeChange(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure btnRemoveAllClick(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure calWantTimeChange(Sender: TObject);
+    procedure chkConsentClick(Sender: TObject);
+    procedure cboUrgencyChange(Sender: TObject);
+    procedure cboSurgeryChange(Sender: TObject);
+    procedure calCollTimeChange(Sender: TObject);
+    procedure cboQuickClick(Sender: TObject);
+    procedure tQuantityEnter(Sender: TObject);
+    procedure btnUpdateCommentsClick(Sender: TObject);
+    procedure btnCancelCommentClick(Sender: TObject);
+    procedure cboSurgeryClick(Sender: TObject);
+    procedure cboReasonsEnter(Sender: TObject);
+    procedure cboReasonsExit(Sender: TObject);
+    procedure tQuantityClick(Sender: TObject);
+    procedure tQuantityChange(Sender: TObject);
+    procedure cboReasonsChange(Sender: TObject);
+    procedure cboModifiersChange(Sender: TObject);
+    procedure lvSelectionListClick(Sender: TObject);
+    procedure cboAvailCompChange(Sender: TObject);
+    procedure cboCollTimeChange(Sender: TObject);
+    procedure memDiagCommentChange(Sender: TObject);
+    procedure cboUrgencyExit(Sender: TObject);
+  protected
+    FCmtTypes: TStringList ;
+    procedure InitDialog; override;
+    function  ValidCollTime(UserEntry: string): string;
+    procedure GetAllCollSamples(AComboBox: TORComboBox);
+    procedure GetAllSpecimens(AComboBox: TORComboBox);
+    procedure SetupCollTimes(CollType: string);
+    procedure LoadCollType(AComboBox:TORComboBox);
+    function  ValidAdd: Boolean;
+    procedure ValidateAdd(var AnErrMsg: string);
+    procedure Validate(var AnErrMsg: string); override;
+    procedure ExtractMSBOS(OutList:TStrings; AList:TStrings);
+    procedure ExtractTests(OutList:TStrings; AList:TStrings);
+    procedure ExtractSurgeries(OutList:TStrings; AList:TStrings);
+    procedure ExtractUrgencies(OutList:TStrings; AList:TStrings);
+    procedure ExtractTNSOrders(OutList:TStrings; AList:TStrings);
+    procedure ExtractModifiers(OutList:TStrings; AList:TStrings);
+    procedure ExtractReasons(OutList:TStrings; AList:TStrings);
+    procedure ExtractSpecimens(OutList:TStrings; AList:TStrings);
+    procedure ExtractTypeScreen(OutList:TStrings; AList:TStrings);
+    procedure ExtractOther(OutList:TStrings; AList:TStrings);
+    procedure ExtractPatientInfo(OutList:TStrings; AList:TStrings);
+    procedure ExtractSpecimen(OutList:TStrings; AList:TStrings);
+    function  SpecimenNeeded(OutList:TStrings; AList:TStrings; CompID:integer): Boolean;
+    procedure LoadUrgencies(AComboBox:TORComboBox);
+    procedure LoadModifiers(AComboBox:TORComboBox);
+    procedure LoadReasons(AComboBox:TORComboBox);
+
+  private
+    FLastCollType: string;
+    FLastCollTime: string;
+    FLastLabCollTime: string;
+    FLastLabID: string;
+    FLastItemID: string;
+    FEvtDelayLoc: integer;
+    FEvtDivision: integer;
+    FVbecLookup: string;
+    FQuickList:  Integer;
+    FQuickItems: TStringList;
+    FOrderAction: Integer;
+    procedure ReadServerVariables;
+    procedure SetOnQuickOrder;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure LoadRequiredComment(CmtType: integer);
+    procedure DetermineCollectionDefaults(Responses: TResponses);
+    property  EvtDelayLoc: integer   read FEvtDelayLoc   write FEvtDelayLoc;
+    property  EvtDivision: integer   read FEvtDivision   write FEvtDivision;
+  end;
+
+type
+  TCollSamp = class(TObject)
+    CollSampID: Integer;                  { IEN of CollSamp }
+    CollSampName: string;                 { Name of CollSamp }
+    SpecimenID: Integer;                  { IEN of default specimen }
+    SpecimenName: string;                 { Name of the specimen }
+    TubeColor: string;                    { TubeColor (text) }
+    MinInterval: Integer;                 { Minimum days between orders }
+    MaxPerDay: Integer;                   { Maximum orders per day }
+    LabCanCollect: Boolean;               { True if lab can collect }
+    SampReqComment: string;               { Name of required comment }
+    WardComment: TStringList;             { CollSamp specific comment }
+  end;
+
+  TLabTest = class(TObject)
+    TestID: Integer;                      { IEN of Lab Test }
+    TestName: string;                     { Name of Lab Test }
+    ItemID: Integer;                      { Orderable Item ID }
+    LabSubscript: string ;                { which section of Lab? }
+    CollSamp: Integer;                    { index into CollSampList }
+    Specimen: Integer;                    { IEN of specimen }
+    Urgency: Integer;                     { IEN of urgency }
+    Comment: TStringList;                 { text of comment }
+    TestReqComment: string;               { Name of required comment }
+    CurReqComment: string;                { name of required comment }
+    CurWardComment: TStringList;          { WP of Ward Comment }
+    UniqueCollSamp: Boolean;              { true if not prompt CollSamp }
+    CollSampList: TList;                  { collection sample objects }
+    CollSampCount: integer;               { count of original contents of CollSampList}
+    SpecimenList: TStringList;            { Strings: IEN^Specimen Name }
+    SpecListCount: integer;               { count of original contents of SpecimenList}
+    UrgencyList: TStringList;             { Strings: IEN^Urgency Name }
+    ForceUrgency: Boolean;                { true if not prompt Urgency }
+    SurgeryList: TStringList;             { Strings: Surgeries}
+    PatientInfo: TStringList;             { Text of Patient Information}
+    ResultsDisplay: TStringList;          { Text of Test Results}
+    QuickOrderResponses: TResponses;      { if created as a result of a quick order selection}
+    { functions & procedures }
+    constructor Create(const LabTestIEN: string; Responses: TResponses);
+    destructor Destroy; override ;
+    function  IndexOfCollSamp(CollSampIEN: Integer): Integer;
+    procedure FillCollSampList(LoadData: TStringList; DfltCollSamp: Integer);
+    procedure LoadAllSamples;
+    procedure SetCollSampDflts;
+    procedure ChangeCollSamp(CollSampIEN: Integer);
+    procedure ChangeSpecimen(const SpecimenIEN: string);
+    procedure ChangeComment(const CommentText: string);
+    function  LabCanCollect: Boolean;
+    procedure LoadCollSamp(AComboBox: TORComboBox);
+    procedure LoadSpecimen(AComboBox: TORComboBox);
+    procedure LoadUrgency(CollType: string; AComboBox:TORComboBox);
+    function  NameOfCollSamp: string;
+    function  NameOfSpecimen: string;
+    function  NameOfUrgency: string;
+    function  ObtainCollSamp: Boolean;
+    function  ObtainSpecimen: Boolean;
+    function  ObtainUrgency: Boolean;
+    function  ObtainComment: Boolean;
+
+  end;
+
+const
+  CmtType: array[0..6] of string = ('ANTICOAGULATION','DOSE/DRAW TIMES','ORDER COMMENT',
+                                    'ORDER COMMENT MODIFIED','TDM (PEAK-TROUGH)',
+                                    'TRANSFUSION','URINE VOLUME');
+var
+  frmODBBank: TfrmODBBank;
+
+implementation
+
+{$R *.dfm}
+
+uses rODBase, rODLab, uCore, rCore, fODLabOthCollSamp, fODLabOthSpec, fODLabImmedColl, fLabCollTimes,
+ rOrders, uODBase, fRptBox;
+
+var
+  uSelectedItems: TStringList;   //Selected Items in ListView- if TestYes =1 then test else component
+                                 //TestYes(1)^Test-Component(2)^Qty(3)^Modifier(4)^Specimen(5,6)^CollTime(7)^CollType(8)
+  uVBECList: TStringList;        //List of items from VBEC api
+  uTestsForResults: TStringList; //List of tests to show results
+  uUrgencyList: TStringList;     //List of Urgencies
+  uTNSOrders: TStringList;       //List of Current orders for Type & Screen
+  uModifierList: TStringList;    //List of Modifiers
+  uReasonsList: TStringList;     //List of Reasons for Request
+  uRaw: TStringList;             //Results Array
+  uTestSelected, uComponentSelected: Boolean;  //Used on Validate
+  uDfltUrgency: Integer;         //Default Urgency
+  uSelUrgency: String;          //Previously Selected Urgency - Used when components have been added for specific urgency
+  uSelSurgery: Integer;          //Selected Surgery for Blood order
+  uSpecimen, uGetTnS: Integer;            //Set to 1 if a specimen for test is already in lab... no need to collect
+  uDfltCollType, uReason: string;
+  ALabTest: TLabTest;
+  UserHasLRLABKey: boolean;
+  LRFZX     : string;  //the default collection type  (LC,WC,SP,I)
+  LRFSAMP   : string;  //the default sample           (ptr)
+  LRFSPEC   : string;  //the default specimen         (ptr)
+  LRFDATE   : string;  //the default collection time  (NOW,NEXT,AM,PM,T...)
+  LRFURG    : string;  //the default urgency          (number)		TRY '2'
+  LRFSCH    : string;  //the default schedule?        (ONE TIME, QD, ...)
+  LRORDERMODE : Integer; //the mode being used to order (component or diagnostic test)
+
+const
+  TX_NO_TEST          = 'A Lab Test must be specified.'    ;
+  TX_NO_IMMED = 'Immediate collect is not available for this test/sample';
+  TX_NO_IMMED_CAP = 'Invalid Collection Type';
+
+  TI_INFO = 0;    //Corresponds with pgeProduct TabIndex
+  TI_COMPONENT = 1;
+  TI_RESULTS = 2;
+
+  TORDER_MODE_INFO = 0;
+  TORDER_MODE_DIAG = 1;
+  TORDER_MODE_COMP = 2;
+
+procedure TfrmODBBank.FormCreate(Sender: TObject);
+var
+  i: integer;
+  AList, ATests: TStringList;
+  ListCount: Integer;
+  x: string;
+begin
+  AutoSizeDisabled := True;
+  inherited;
+  AList := TStringList.Create;
+  ATests := TStringList.Create;
+  uSelectedItems := TStringList.Create;
+  uVBECList := TStringList.Create;
+  uTestsForResults := TStringList.Create;
+  uUrgencyList := TStringList.Create;
+  uTNSOrders := TStringList.Create;
+  uModifierList := TStringList.Create;
+  uReasonsList := TStringList.Create;
+  uRaw := TStringList.Create;
+  uSpecimen := 0;
+  uGetTnS := 0;
+  uReason := '';
+  lblTNS.Caption := '';
+  lblTNS.Visible := false;
+  pnlMessage.Visible := false;
+  uDfltUrgency := 9;
+  uSelUrgency := '';
+  uSelSurgery := 0;
+  TabResults.Caption := 'Lab Results';
+  edtResults.Lines.Clear;
+  edtResults.Lines.Add('Lab results are ONLY available after selecting/adding a component on the Blood Bank Orders tab that has been designated for results retrieval.');
+  Responses.Clear;
+  try
+    LRFZX    := '';
+    LRFSAMP  := '';
+    LRFSPEC  := '';
+    LRFDATE  := '';
+    LRFURG   := '';
+    LRFSCH   := '';
+    LRORDERMODE := TORDER_MODE_INFO;
+    FLastColltime := '';
+    FLastLabCollTime := '';
+    FLastItemID := '';
+    uDfltCollType := '';
+    FillerID := 'LR';
+    FEvtDelayLoc := 0;
+    FEvtDivision := 0;
+    UserHasLRLABKey := User.HasKey('LRLAB');
+    AllowQuickOrder := True;
+    StatusText('Loading Dialog Definition');
+    FCmtTypes := TStringList.Create;
+    for i := 0 to 6 do FCmtTypes.Add(CmtType[i]) ;
+    Responses.Dialog := 'VBEC BLOOD BANK';        // loads formatting info
+    StatusText('Loading Default Values');
+    if Self.EvtID > 0 then
+    begin
+      EvtDelayLoc := StrToIntDef(GetEventLoc1(IntToStr(Self.EvtID)),0);
+      EvtDivision := StrToIntDef(GetEventDiv1(IntToStr(Self.EvtID)),0);
+      if EvtDelayLoc>0 then
+        FastAssign(ODForLab(EvtDelayLoc,EvtDivision), AList)
+      else
+        FastAssign(ODForLab(Encounter.Location,EvtDivision), AList);
+    end else
+      FastAssign(ODForLab(Encounter.Location), AList); // ODForLab returns TStrings with defaults
+    CtrlInits.LoadDefaults(AList);
+    InitDialog;
+    GroupBox1.Visible := True;
+    with CtrlInits do
+    begin
+      SetControl(cboCollType, 'Collection Types');
+      uDfltCollType := ExtractDefault(AList, 'Collection Types');
+      if uDfltCollType <> '' then
+        cboCollType.SelectByID(uDfltCollType)
+      else if OrderForInpatient then
+        cboCollType.SelectByID('LC')
+      else
+        cboCollType.SelectByID('SP');
+      SetupCollTimes(cboCollType.ItemID);
+      StatusText('Initializing List of Tests');
+      FVbecLookup := 'S.VBT';
+      cboAvailTest.InitLongList('');      //Populates cboAvailTest control based on S.VBT xref
+    end;
+    cboAvailComp.Clear;
+    aList.Clear;
+    GetBloodComponents(aList);            //Get Components in right order
+    for i := 0 to aList.Count - 1 do
+      cboAvailComp.Items.Add(aList[i]);
+    uVBECList.Clear;
+    edtInfo.Clear;
+    cboSurgery.Clear;
+    GetPatientBBInfo(uVBECList, Patient.DFN, Encounter.Location);
+    aList.Clear;
+    ExtractPatientInfo(AList, uVBECList);
+    QuickCopy(AList, edtInfo);
+    AList.Clear;
+    ExtractSurgeries(AList, uVBECList);
+    for i := 0 to AList.Count - 1 do
+      cboSurgery.Items.Add(AList[i]);
+    AList.Clear;
+    ExtractUrgencies(uUrgencyList, uVBECList);
+    ExtractTNSOrders(uTNSOrders, uVBECList);
+    LoadUrgencies(cboUrgency);
+    ExtractModifiers(uModifierList, uVBECList);
+    ExtractReasons(uReasonsList, uVBECList);
+    LoadModifiers(cboModifiers);
+    LoadReasons(cboReasons);
+    calWantTime.Text := 'NOW'; //FormatFMDateTime('mmm dd,yyyy@hh:nn',DateTimeToFMDateTime(Now));
+    pgeProduct.TabIndex := TI_INFO;
+    lvSelectionList.Column[0].Width := 240;
+    lvSelectionList.Column[1].Width := 30;
+    lvSelectionList.Column[2].Width := 100;
+    DisableComponentControls;
+    DisableDiagTestControls;
+    pgeProduct.ActivePageIndex := TI_INFO;
+    StatusText('');
+    x := 'VBEC';
+    FQuickItems := TStringList.Create;
+    ListForQuickOrders(FQuickList, ListCount, x);
+    if ListCount > 0 then
+      begin
+        SubsetOfQuickOrders(FQuickItems, FQuickList, 0, 0);
+      end else
+      begin
+        ListCount := 1;
+        FQuickItems.Add('0^(No quick orders available)');
+      end;
+
+    FastAssign(FQuickItems, cboQuick.Items);
+    if lvSelectionList.Items.Count > 0 then
+      begin
+        memOrder.Visible := true;
+        cmdAccept.Visible := true;
+      end;
+  finally
+    AList.Free;
+    ATests.Free;
+  end;
+end;
+
+procedure TfrmODBBank.InitDialog;
+begin
+  inherited;
+  Changing := True;
+  if ALabTest <> nil then
+    begin
+      ALabTest.Destroy;
+      ALabTest := nil;
+    end;
+  DisableCommentPanels;
+  cboAvailTest.SelectByID(FLastItemID);
+  cboAvailComp.SelectByID(FLastItemID);
+  cboAvailTest.ItemIndex := -1;
+  StatusText('');
+  Changing := False ;
+end;
+
+procedure TfrmODBBank.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  AnInstance, CurAdd: Integer;
+  AResponse: TResponse;
+  i, j, k, aTNS, aTNSDays, getTest, TestAdded: integer;
+  aStr, aTestYes, aName, aTypeScreen, aSpecimen, aModifier, sub, sub1, x, aTNSString: string;
+  ListItem: TListItem;
+  aList: TStringList;
+  aTests: TStringList;
+begin
+  inherited;
+  aList := TStringList.Create;
+  aTests:= TStringList.Create;
+  try
+  FOrderAction := OrderAction;
+  ReadServerVariables;
+  sub1 := '';
+  aTypeScreen := '';
+  aSpecimen := '^';
+  aModifier := '';
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses, ALabTest do
+    begin
+      AnInstance := NextInstance('ORDERABLE', 0);
+      while AnInstance > 0 do
+        begin
+          AResponse := FindResponseByName('ORDERABLE', AnInstance);
+          if AResponse <> nil then
+            begin
+              sub := GetSubtype(AResponse.EValue);
+              if sub = 't' then
+                begin
+                  SetControl(cboAvailTest,        'ORDERABLE', AnInstance);
+                  ALabTest := TLabTest.Create(cboAvailTest.ItemID, Responses);
+                end
+              else
+                begin
+                  SetControl(cboAvailComp,        'ORDERABLE', AnInstance);
+                  ALabTest := TLabTest.Create(cboAvailComp.ItemID, Responses);
+                end;
+              if ALabTest = nil then Exit;  // Causes access violation
+              if AnInstance = 1 then
+                begin
+                  SetControl(cboReasons,         'REASON' , AnInstance);
+                  SetControl(calWantTime,        'DATETIME', AnInstance);
+                  SetControl(memDiagComment,     'COMMENT', AnInstance);
+                  SetControl(chkConsent,         'YN', AnInstance);
+                  //DetermineCollectionDefaults(Responses);
+                  SetControl(cboCollType,        'COLLECT', AnInstance);
+                  SetControl(cboCollTime,        'START', AnInstance);
+                  SetupCollTimes(cboCollType.ItemID);
+                  SetControl(cboUrgency,         'URGENCY', AnInstance);
+                  SetControl(cboSurgery,         'MISC', AnInstance);
+                  Urgency := cboUrgency.ItemIEN;
+                  if (Urgency = 0) and (cboUrgency.Items.Count = 1) then
+                    begin
+                      cboUrgency.ItemIndex := 0;
+                      Urgency := cboUrgency.ItemIEN;
+                    end;
+                  i := 1 ;
+                  AResponse := Responses.FindResponseByName('COMMENT',i);
+                  while AResponse <> nil do
+                    begin
+                      Comment.Add(AResponse.EValue);
+                      Inc(i);
+                      AResponse := Responses.FindResponseByName('COMMENT',i);
+                    end ;
+                end;
+              if sub = 't' then with ALabTest do      //DIAGNOSTIC TEST
+                begin
+                  Changing := True;
+                  DisableComponentControls;
+                  EnableDiagTestControls;
+                  LRORDERMODE := TORDER_MODE_DIAG;
+                  aList.Clear;
+                  aTestYes := '1';
+                  ExtractTypeScreen(aList, uVBECList);
+                  if aList.Count > 0 then aTypeScreen := aList[0];
+                  aList.Clear;
+                  with lvSelectionList do
+                    begin
+                      ListItem := Items.Add;
+                      ListItem.Caption := piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',2);
+                      ListItem.SubItems.Add('');
+                      ListItem.SubItems.Add('');
+                      ListItem.SubItems.Add('');
+                      ListItem.SubItems.Add(piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',1));
+                      if piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',1) = aTypeScreen then
+                        begin
+                          lblTNS.Caption := '';
+                          lblTNS.Visible := false;
+                          memMessage.Text := '';
+                          pnlMessage.Visible := false;
+                          uGetTnS := 0;
+                          pnlDiagnosticTests.Caption := 'Diagnostic Tests';
+                        end;
+                    end;
+                  aStr := aTestYes + '^' + IntToStr(aLabTest.TestID) + '^' + tQuantity.Text + '^' + aModifier + '^' + aSpecimen + '^' + IntToStr(aLabTest.ItemID);  //aSpecimen has 2 pieces additional pieces added for Tests
+                  uSelectedItems.Add(aStr);
+                  if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+                  {with cboCollType do if Length(ItemID) > 0 then
+                    begin
+                      Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+                      FLastCollType := ItemID;
+                    end;  }
+                  if Length(cboUrgency.Text) > 0 then Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+                  if Length(memDiagComment.Text) > 0 then Responses.Update('COMMENT',1,memDiagComment.Text,memDiagComment.Text);
+                  if Length(cboReasons.Text) > 0 then Responses.Update('REASON',1,cboReasons.Text,cboReasons.Text);
+                  LoadCollType(cboCollType);
+                  if (cboCollType.ItemID = 'LC') or (cboCollType.ItemID = 'I') then
+                    if not(ALabTest.LabCanCollect) and OrderForInpatient then
+                      cboCollType.SelectByID('WC')
+                    else if not(ALabTest.LabCanCollect) then
+                      cboCollType.SelectByID('SP');
+                  SetupCollTimes(cboCollType.ItemID);
+                  if cboCollType.ItemID = 'LC' then
+                    begin
+                      with cboCollTime do
+                        if Length(ItemID) > 0 then
+                          begin
+                            Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+                            FLastLabCollTime := ItemID + U + Text;
+                          end
+                        else if Length(Text) > 0 then
+                          begin
+                            Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+                            FLastLabCollTime := ValidCollTime(Text);
+                          end;
+                    end
+                  else
+                    begin
+                      with calCollTime do
+                        if FMDateTime > 0 then
+                          begin
+                            Responses.Update('START', 1, ValidCollTime(Text), Text);
+                            FLastColltime := ValidCollTime(Text);
+                          end
+                        else
+                          begin
+                            Responses.Update('START', 1, '', '') ;
+                            FLastCollTime := '';
+                          end;
+                    end;
+                  with cboCollType do if Length(ItemID) > 0 then
+                    begin
+                      Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+                      FLastCollType := ItemID;
+                    end;
+                  //if Length(cboCollType.Text) > 0 then Responses.Update('COLLECT',1,cboCollType.ItemID,cboCollType.ItemID);
+                  memOrder.Text := Responses.OrderText;
+                  Changing := False;
+                  if ObtainCollSamp then
+                    begin
+                      //For BloodBank orders, this condition should never occur
+                    end
+                  else
+                    begin
+                      with ALabTest do
+                        with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                          begin
+                            x := '' ;
+                            for i := 0 to WardComment.Count-1 do
+                            x := x + WardComment.strings[i]+#13#10 ;
+                            pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                            OrderMessage(x) ;
+                          end ;
+                    end;
+                end;
+              if sub = 'c' then with ALabTest do  //COMPONENT
+                begin
+                  Changing := True;
+                  DisableDiagTestControls;
+                  EnableComponentControls;
+                  aTestYes := '0';
+                  LRORDERMODE := TORDER_MODE_COMP;
+                  SetControl(cboModifiers,       'MODIFIER', AnInstance);
+                  SetControl(tQuantity,          'QTY', AnInstance);
+                  uComponentSelected := true;
+                  aList.Clear;
+                  TestAdded := 0;
+                  getTest := 0;
+                  ExtractTests(aList, uVBECList);   //Get Results associated with ordered components
+                    for j := 0 to aList.Count - 1 do
+                      begin
+                        if StrToInt(piece(aList[j],'^',1)) = aLabTest.ItemID then
+                          begin
+                            if uTestsForResults.Count < 1 then getTest := 1;
+                            for k := 0 to uTestsForResults.Count - 1 do
+                              begin
+                                if piece(uTestsForResults[k],'^',1) = piece(aList[j],'^',3) then
+                                  begin
+                                    getTest := 0;
+                                    break;
+                                  end
+                                else getTest := 1;
+                              end;
+                            if getTest = 1 then
+                              begin
+                                uTestsForResults.Add(piece(aList[j],'^',3));
+                                TestAdded := 1;
+                              end;
+                          end;
+                      end;
+                    if TestAdded = 1 then
+                      begin
+                        edtResults.Clear;
+                        aTests.Clear;
+                        GetPatientBloodResults(aTests, Patient.DFN, uTestsForResults);
+                        QuickCopy(ATests,edtResults);
+                        if edtResults.Lines.Count > 0 then TabResults.Caption := 'Lab Results Available'; //TabResults.ImageIndex := 1;
+                        uRaw.Clear;
+                        GetPatientBloodResultsRaw(uRaw, Patient.DFN, uTestsForResults);
+                      end;
+                    CurAdd := 1;
+                    if uRaw.Count > 0 then
+                    for j := 0 to uRaw.Count - 1 do
+                      begin
+                        if Length(uRaw[j]) > 0 then Responses.Update('RESULTS', CurAdd, uRaw[j], piece(uRaw[j],'^',1));
+                        Inc(CurAdd);
+                      end;
+                  with lvSelectionList do
+                    begin
+                      ListItem := Items.Add;
+                      ListItem.Caption := piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',2);
+                      ListItem.SubItems.Add(tQuantity.Text);
+                      if length(cboModifiers.ItemID) > 0 then
+                        begin
+                          ListItem.SubItems.Add(cboModifiers.Items[cboModifiers.ItemIndex]);
+                          ListItem.SubItems.Add(IntToStr(cboModifiers.ItemIndex));
+                        end
+                        else
+                          begin
+                            ListItem.SubItems.Add('');
+                            ListItem.SubItems.Add('');
+                          end;
+                      ListItem.SubItems.Add(piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',1));
+                    end;
+                  aStr := aTestYes + '^' + IntToStr(aLabTest.TestID) + '^' + tQuantity.Text + '^' + aModifier + '^' + aSpecimen + '^' + IntToStr(aLabTest.ItemID);  //aSpecimen has 2 pieces additional pieces added for Tests
+                  uSelectedItems.Add(aStr);
+                  memOrder.Text := Responses.OrderText;
+                  Changing := False;
+                end;
+            end;
+          StatusText('');
+          AnInstance := NextInstance('ORDERABLE', AnInstance);
+        end;  //while AnInstance - ORDERABLE
+      DisableComponentControls;
+      DisableDiagTestControls;
+    end;
+    CurAdd := 1;
+    for i := 0 to uSelectedItems.Count - 1 do
+      begin
+        aName := lvSelectionList.Items[i].Caption;
+        x := uSelectedItems[i];
+        if piece(x,'^',1) = '1' then    //Diagnostic Test related fields
+          begin
+            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+          end
+        else
+          begin
+            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+            if Length(piece(x,'^',3)) > 0 then Responses.Update('QTY', CurAdd, piece(x,'^',3), piece(x,'^',3));
+            if Length(piece(x,'^',4)) > 0 then Responses.Update('MODIFIER', CurAdd, piece(x,'^',4), piece(x,'^',4));
+            if Length(piece(x,'^',5)) > 0 then Responses.Update('SPECSTS', CurAdd, pieces(x,'^',5,7), piece(x,'^',5));
+            if Length(cboSurgery.Text) > 0 then Responses.Update('MISC',1,cboSurgery.Text,cboSurgery.Text);
+            if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+            if Length(cboUrgency.Text) > 0 then Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text)
+              else
+                begin
+                  cboUrgency.ItemIndex := 1;
+                  Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+                  cboUrgencyChange(self);
+                end;
+          end;
+        Inc(CurAdd);
+      end;
+    for i := 0 to lvSelectionList.Items.Count - 1 do
+      begin
+        if lvSelectionList.Items[i].SubItems[3] = aTypeScreen then
+          begin
+            if uTNSOrders.Count > 0 then
+              begin
+                for j := 0 to uTNSOrders.Count - 1 do
+                  aTNSString := aTNSString + CRLF + uTNSOrders[j];
+                with Application do
+                  begin
+                    NormalizeTopMosts;
+                    aTNSDays := TNSDaysBack;
+                    aTNS :=
+                      MessageBox(PChar(aTNSString + CRLF + CRLF +
+                                 'Do you wish to continue with this request for Type & Screen?'),
+                                 PChar('Type & Screen Entered in Past ' + IntToStr(TNSDaysBack) + ' Days'),
+                                 MB_YESNO);
+                    RestoreTopMosts;
+                    if aTNS = 7 then
+                      begin
+                        lvSelectionList.ItemIndex := i;
+                        lvSelectionListClick(self);
+                        btnRemoveClick(self);
+                        break;
+                      end;
+                  end;
+              end;
+            break;
+          end;
+      end;
+  {if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses, ALabTest do
+    begin
+      if OrderAction in [ORDER_QUICK, ORDER_EDIT] then uQuickInProcess := 1;
+      AnInstance := NextInstance('ORDERABLE', 0);
+      while AnInstance > 0 do
+        begin
+          AResponse := FindResponseByName('ORDERABLE', AnInstance);
+          if AResponse <> nil then
+            begin
+              sub := GetSubtype(AResponse.EValue);
+              if sub = 't' then
+                begin
+                  SetControl(cboAvailTest,        'ORDERABLE', AnInstance);
+                  ALabTest := TLabTest.Create(cboAvailTest.ItemID, Responses);
+                end
+              else
+                begin
+                  SetControl(cboAvailComp,        'ORDERABLE', AnInstance);
+                  ALabTest := TLabTest.Create(cboAvailComp.ItemID, Responses);
+                end;
+              //SetControl(cboTests,           'ORDERABLE', AnInstance);
+              //ALabTest := TLabTest.Create(cboTests.ItemID, Responses);
+              if ALabTest = nil then Exit;  // Causes access violation
+              //sub := GetSubtype(ALabTest.TestName);
+              if AnInstance = 1 then
+                begin
+                  DetermineCollectionDefaults(Responses);
+                  SetControl(cboReasons,         'REASON', AnInstance);
+                  SetControl(chkConsent,         'YN', AnInstance);
+                  SetControl(cboSurgery,         'MISC', AnInstance);
+                  //SetControl(cboCollType,        'COLLECT', AnInstance);
+                  //SetControl(cboCollTime,        'START', AnInstance);
+                  SetControl(calWantTime,        'DATETIME', AnInstance);
+                  //LoadUrgency(cboCollType.ItemID, cboUrgency);
+                  SetControl(cboUrgency,         'URGENCY', AnInstance);
+                  Urgency := cboUrgency.ItemIEN;
+                  if (Urgency = 0) and (cboUrgency.Items.Count = AnInstance) then
+                    begin
+                      cboUrgency.ItemIndex := 0;
+                      Urgency := cboUrgency.ItemIEN;
+                    end;
+                  i := 1 ;
+                  AResponse := Responses.FindResponseByName('COMMENT',i);
+                  while AResponse <> nil do
+                      begin
+                        if Length(AResponse.Evalue) > 0 then
+                          Comment.Add(AResponse.EValue);
+                        Inc(i);
+                        AResponse := Responses.FindResponseByName('COMMENT',i);
+                      end ;
+                end;
+              if sub = 't' then with ALabTest do      //DIAGNOSTIC TEST
+                begin
+                  Changing := True;
+                  DisableComponentControls;
+                  EnableDiagTestControls;
+                  LRORDERMODE := TORDER_MODE_DIAG;
+                  with Responses do
+                    begin
+                      StatusText('Initializing Order');
+                      AResponse := FindResponseByName('ORDERABLE', AnInstance);
+                      if AResponse <> nil then
+                        sub1 := GetSubtype(AResponse.EValue);
+                      if sub1 = 't' then
+                        begin
+                          SetControl(cboAvailTest,       'ORDERABLE', AnInstance);
+                          //SetControl(cboTests,           'ORDERABLE', AnInstance);
+                          //DetermineCollectionDefaults(Responses);   //cboCollType = COLLECT , calCollTime = START
+                          cboAvailTestSelect(self);
+                        end;
+                    end;
+                  Changing := False;
+                  if ObtainCollSamp then
+                    begin
+                      //For BloodBank orders, this condition should never occur
+                    end
+                  else
+                    begin
+                      with ALabTest do
+                        with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                          begin
+                            x := '' ;
+                            for i := 0 to WardComment.Count-1 do
+                            x := x + WardComment.strings[i]+#13#10 ;
+                            pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                            OrderMessage(x) ;
+                          end ;
+                    end;
+                end;
+              if sub = 'c' then with ALabTest do  //COMPONENT
+                begin
+                  Changing := True;
+                  DisableDiagTestControls;
+                  EnableComponentControls;
+                  LRORDERMODE := TORDER_MODE_COMP;
+                  with Responses do
+                    begin
+                      StatusText('Initializing Order');
+                      AResponse := FindResponseByName('ORDERABLE', AnInstance);
+                      if AResponse <> nil then
+                        sub1 := GetSubtype(AResponse.EValue);
+                      if sub1 = 'c' then
+                        begin
+                          SetControl(cboAvailComp,       'ORDERABLE', AnInstance);
+                          //SetControl(cboTests,           'ORDERABLE', AnInstance);
+                          SetControl(cboModifiers,       'MODIFIER', AnInstance);
+                          SetControl(tQuantity,          'QTY', AnInstance);
+                          //DetermineCollectionDefaults(Responses);
+                          cboAvailCompSelect(self);
+                        end;
+                    end;
+                  Changing := False;
+                end;
+              with ALabTest do
+                begin
+                  if ObtainComment then
+                    LoadRequiredComment(FCmtTypes.IndexOf(CurReqComment))
+                  else
+                    DisableCommentPanels;
+                  x := '' ;
+                  for i := 0 to CurWardComment.Count-1 do
+                    x := x + CurWardComment.strings[i]+#13#10 ;
+                  i :=  IndexOfCollSamp(CollSamp);
+                  if i > -1 then with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                    for i := 0 to WardComment.Count-1 do
+                      x := x + WardComment.strings[i]+#13#10 ;
+                  pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                  if Length(x) > 0 then
+                    begin
+                      OrderMessage(x) ;
+                    end;
+                end;
+              StatusText('');
+              Changing := True;
+              //if not(FOrderAction = ORDER_EDIT) then DetermineCollectionDefaults(Responses);
+              Changing := False;
+            end;
+          AnInstance := NextInstance('ORDERABLE', AnInstance);
+        end; //while AnInstance - ORDERABLE
+      DisableComponentControls;
+      DisableDiagTestControls;
+      uQuickInProcess := 0;
+    end;  }
+  finally
+    aList.Free;
+    aTests.Free;
+  end;
+  edtResults.Height := 247;
+  edtInfo.Height := 247;
+  if lvSelectionList.Items.Count > 0 then
+    begin
+      pnlSelectedTests.Visible := True;
+      cmdAccept.Visible := True;
+      memOrder.Visible := True;
+      GroupBox1.Visible := False;
+    end;
+end;
+
+procedure TfrmODBBank.SetOnQuickOrder;
+  var
+  AnInstance: Integer;
+  AResponse: TResponse;
+  i: integer;
+  x,sub,sub1,aTNSString: string;
+  aList: TStringList;
+  aGotIt: boolean;
+  aTests: TStringList;
+  ListItem: TListItem;
+  aName, aMsg, aStr, aModifier, aReason, aSurgery, aCollTime, aTestYes, aSpecimen, aTypeScreen: String;
+  CurAdd, j, k, getTest, TestAdded, aMSBOS, aMSBOSContinue, aTNS, aTNSDays: Integer;
+begin
+  inherited;
+  aList := TStringList.Create;
+  aTests := TStringList.Create;
+  try
+    aModifier := '';
+    aReason := '';
+    aSurgery := '';
+    aCollTime := '';
+    aTestYes := '0';
+    aTypeScreen := '';
+    aSpecimen := '';
+    sub1 := '';
+    ExtractTypeScreen(aList, uVBECList);
+    if aList.Count > 0 then aTypeScreen := aList[0];
+    aList.Clear;
+    Extractspecimen(aList, uVBECList);
+    if aList.Count > 0 then aSpecimen := aList[0];
+    with Responses, ALabTest do
+      begin
+        Changing := True;
+        aGotIt := False;
+        FLastItemID := cboQuick.ItemID;
+        QuickOrder := ExtractInteger(cboQuick.ItemID);
+        with Responses do
+          begin
+            StatusText('Initializing Quick Order');
+            AnInstance := NextInstance('ORDERABLE', 0);
+            while AnInstance > 0 do
+              begin
+                AResponse := FindResponseByName('ORDERABLE', AnInstance);
+                sub := GetSubtype(AResponse.EValue);
+                if sub = 't' then
+                  begin
+                    SetControl(cboAvailTest,        'ORDERABLE', AnInstance);
+                    ALabTest := TLabTest.Create(cboAvailTest.ItemID, Responses);
+                  end
+                else
+                  begin
+                    SetControl(cboAvailComp,        'ORDERABLE', AnInstance);
+                    ALabTest := TLabTest.Create(cboAvailComp.ItemID, Responses);
+                  end;
+                for i := 0 to aList.Count - 1 do
+                  if aList[i] = ALabTest.TestName then
+                    begin
+                      aGotIt := true;
+                      break;
+                    end;
+                if aGotIt = true then
+                  begin
+                    aGotIt := false;
+                    AnInstance := NextInstance('ORDERABLE', AnInstance);
+                    Continue;
+                  end
+                  else
+                    begin
+                      aList.Add(ALabTest.TestName);
+                    end;
+                if AResponse <> nil then
+                  sub1 := GetSubtype(AResponse.EValue);
+                if AnInstance = 1 then
+                  begin
+                    SetControl(cboReasons,         'REASON', AnInstance);
+                    SetControl(calWantTime,        'DATETIME', AnInstance);
+                    SetControl(memDiagComment,     'COMMENT', AnInstance);
+                    SetControl(chkConsent,         'YN', AnInstance);
+                    //DetermineCollectionDefaults(Responses);
+                    SetControl(cboCollType,        'COLLECT', AnInstance);
+                    SetupCollTimes(cboCollType.ItemID);
+                    //SetControl(cboCollTime,        'START', AnInstance);
+                    //LoadUrgency(cboCollType.ItemID, cboUrgency);
+                    SetControl(cboUrgency,         'URGENCY', AnInstance);
+                    Urgency := cboUrgency.ItemIEN;
+                    if (Urgency = 0) and (cboUrgency.Items.Count = AnInstance) then
+                      begin
+                        cboUrgency.ItemIndex := 0;
+                        Urgency := cboUrgency.ItemIEN;
+                        cboUrgencyChange(self);
+                      end;
+                    SetControl(cboSurgery,         'MISC', AnInstance);
+                    if not(ALabTest = nil) then
+                      begin
+                        Urgency := cboUrgency.ItemIEN;
+                        if (Urgency = 0) and (cboUrgency.Items.Count = 1) then
+                          begin
+                            cboUrgency.ItemIndex := 0;
+                            Urgency := cboUrgency.ItemIEN;
+                          end;
+                        i := 1 ;
+                        AResponse := Responses.FindResponseByName('COMMENT',i);
+                        while AResponse <> nil do
+                          begin
+                            Comment.Add(AResponse.EValue);
+                            Inc(i);
+                            AResponse := Responses.FindResponseByName('COMMENT',i);
+                          end ;
+                      end;
+                    if not(cboCollType.ItemID = 'LC') then
+                      begin
+                        if Length(cboCollTime.Text) > 0 then
+                          begin
+                            calCollTime.FMDateTime := StrToFMDateTime(cboCollTime.Text);
+                            FLastCollTime := cboCollTime.Text;
+                          end
+                        else
+                          begin
+                            FLastCollTime := '';
+                          end;
+                      end;
+                  end;
+                if sub1 = 'c' then
+                  begin
+                    DisableDiagTestControls;
+                    EnableComponentControls;
+                    LRORDERMODE := TORDER_MODE_COMP;
+                    SetControl(cboAvailComp,       'ORDERABLE', AnInstance);
+                    SetControl(cboModifiers,       'MODIFIER', AnInstance);
+                    SetControl(tQuantity,          'QTY', AnInstance);
+                    //DetermineCollectionDefaults(Responses);
+                    //Check for and display any associated Lab Results
+                    aList.Clear;
+                    TestAdded := 0;
+                    getTest := 0;
+                    ExtractTests(aList, uVBECList);   //Get Results associated with ordered components
+                      for j := 0 to aList.Count - 1 do
+                        begin
+                          if StrToInt(piece(aList[j],'^',1)) = aLabTest.ItemID then
+                            begin
+                              if uTestsForResults.Count < 1 then getTest := 1;
+                              for k := 0 to uTestsForResults.Count - 1 do
+                                begin
+                                  if piece(uTestsForResults[k],'^',1) = piece(aList[j],'^',3) then
+                                    begin
+                                      getTest := 0;
+                                      break;
+                                    end
+                                  else getTest := 1;
+                                end;
+                              if getTest = 1 then
+                                begin
+                                  uTestsForResults.Add(piece(aList[j],'^',3));
+                                  TestAdded := 1;
+                                end;
+                            end;
+                        end;
+                      if TestAdded = 1 then
+                        begin
+                          edtResults.Clear;
+                          aTests.Clear;
+                          GetPatientBloodResults(aTests, Patient.DFN, uTestsForResults);
+                          QuickCopy(ATests,edtResults);
+                          if edtResults.Lines.Count > 0 then TabResults.Caption := 'Lab Results Available'; //TabResults.ImageIndex := 1;
+                          uRaw.Clear;
+                          GetPatientBloodResultsRaw(uRaw, Patient.DFN, uTestsForResults);
+                        end;
+                      CurAdd := 1;
+                      if uRaw.Count > 0 then
+                      for j := 0 to uRaw.Count - 1 do
+                        begin
+                          if Length(uRaw[j]) > 0 then Responses.Update('RESULTS', CurAdd, uRaw[j], piece(uRaw[j],'^',1));
+                          Inc(CurAdd);
+                        end;
+                    aSpecimen := '^';
+                    aTestYes := '0';
+                    aReason := '';
+                    aSurgery := '';
+                    aCollTime := '';
+                    ExtractSpecimen(aList, uVBECList);
+                    if aList.Count > 0 then aSpecimen := aList[0];
+                    if length(cboModifiers.ItemID) > 0 then aModifier := cboModifiers.Items[cboModifiers.ItemIndex];
+                    if length(cboReasons.ItemID) > 0 then aReason := cboReasons.Items[cboReasons.ItemIndex];
+                    if length(cboSurgery.ItemID) > 0 then aSurgery := cboSurgery.Items[cboSurgery.ItemIndex];
+                    if length(cboCollTime.ItemID) > 0 then aCollTime := cboCollTime.Items[cboCollTime.ItemIndex];
+                    if Length(cboSurgery.ItemID) > 0 then
+                      begin
+                        aList.Clear;
+                        ExtractMSBOS(aList, uVBECList);    //Get maximum units for selected Surgey
+                        for i := 0 to aList.Count - 1 do
+                          begin
+                            if (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID)
+                             and (piece(aList[i],'^',3) = cboSurgery.Text) then
+                              begin
+                                aMSBOS := StrToInt(piece(aList[i],'^',4));
+                                if (aMSBOS > 0) and (StrToInt(tQuantity.Text) > aMSBOS) then
+                                  begin
+                                    with Application do
+                                    begin
+                                      NormalizeTopMosts;
+                                      aMSBOSContinue :=
+                                        MessageBox(PChar('The number of units ordered (' + tQuantity.Text +
+                                                   ') for ' + aLabTest.TestName + ' exceeds the maximum number of units ('
+                                                   + IntToStr(aMSBOS) +
+                                                   ') for the ' + cboSurgery.text +
+                                                   ' surgical procedure selected.' + CRLF + CRLF + 'Do you wish to continue?'),
+                                                   PChar('Maximum Number of Units Exceeded'),
+                                                   MB_YESNO);
+                                      RestoreTopMosts;
+                                    end;
+                                    if aMSBOSContinue = 7 then
+                                      begin
+                                        ShowMsg(cboAvailComp.Text + ' has NOT been added to this request.');
+                                        exit;
+                                      end;
+                                  end;
+                              end;
+                          end;
+                      end;
+                    if (uTNSOrders.Count < 1) then //SpecimenNeeded(aList, uVBECList, aLabTest.ItemID) then  //check to see if type and screen is needed
+                      begin
+                        uGetTnS := 1;
+                      end;
+                    aList.Clear;
+                    ExtractSpecimens(aList, uVBECList);    //Get specimen values to pass back to Server
+                    for i := 0 to aList.Count - 1 do
+                      begin
+                        if (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID) then
+                          begin
+                            aSpecimen := piece(aList[i],'^',2) + '^' + aSpecimen;
+                            break;
+                          end;
+                      end;
+                    uComponentSelected := true;
+                    with lvSelectionList do
+                      begin
+                        ListItem := Items.Add;
+                        ListItem.Caption := piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',2);
+                        ListItem.SubItems.Add(tQuantity.Text);
+                        if length(cboModifiers.ItemID) > 0 then
+                          begin
+                            ListItem.SubItems.Add(cboModifiers.Items[cboModifiers.ItemIndex]);
+                            ListItem.SubItems.Add(IntToStr(cboModifiers.ItemIndex));
+                          end
+                          else
+                            begin
+                              ListItem.SubItems.Add('');
+                              ListItem.SubItems.Add('');
+                            end;
+                        ListItem.SubItems.Add(piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',1));
+                      end;
+                    CurAdd := 1;
+                    aStr := aTestYes + '^' + IntToStr(aLabTest.TestID) + '^' + tQuantity.Text + '^' + aModifier + '^' + aSpecimen + '^' + IntToStr(aLabTest.ItemID);  //aSpecimen has 2 pieces additional pieces added for Tests
+                    uSelectedItems.Add(aStr);
+                    for i := 0 to uSelectedItems.Count - 1 do
+                      begin
+                        aName := lvSelectionList.Items[i].Caption;
+                        x := uSelectedItems[i];
+                        if piece(x,'^',1) = '1' then    //Diagnostic Test related fields
+                          begin
+                            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+                          end
+                        else
+                          begin
+                            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+                            if Length(piece(x,'^',3)) > 0 then Responses.Update('QTY', CurAdd, piece(x,'^',3), piece(x,'^',3));
+                            if Length(piece(x,'^',4)) > 0 then Responses.Update('MODIFIER', CurAdd, piece(x,'^',4), aModifier);
+                            if Length(piece(x,'^',5)) > 0 then Responses.Update('SPECSTS', CurAdd, pieces(x,'^',5,7), piece(x,'^',5));
+                            if Length(cboSurgery.Text) > 0 then Responses.Update('MISC',1,cboSurgery.Text,cboSurgery.Text);
+                          end;
+                        Inc(CurAdd);
+                      end;
+                    memOrder.Text := Responses.OrderText;
+                    GroupBox1.Visible := False;
+                  aMsg := '';
+                  LRORDERMODE := TORDER_MODE_INFO;
+                  {if uGetTnS = 1 then
+                    begin
+                      lblTNS.Caption := 'TYPE + SCREEN must be added to order';
+                      lblTNS.Visible := true;
+                      memMessage.Text := 'TYPE + SCREEN must be added to order';
+                      memMessage.Visible := false;
+                      pnlMessage.Visible := true;
+                      pnlDiagnosticTests.Caption := 'Diagnostic Tests*';
+                    end;  }
+                  {if uGetTnS = 1 then
+                    begin
+                      if responses.QuickOrder < 1 then
+                        begin
+                          for i := 1 to cboAvailTest.Items.Count - 1 do
+                            begin
+                              if piece(cboAvailTest.Items[i],'^',1) = aTypeScreen then
+                                begin
+                                  if piece(aSpecimen,'^',1) = '1' then
+                                    begin
+                                      cboCollTime.Text := calWantTime.Text;
+                                      aCollSave := cboCollTime.Text + '^' + cboCollTime.ItemID + '^' + cboCollType.Text + '^' + cboCollType.ItemID;
+                                      cboCollTime.Text := '';
+                                      cboCollType.Text := '';
+                                      uSpecimen := 1;
+                                    end;
+                                  cboModifiers.Text := '';
+                                  cboAvailTest.SelectByID(aTypeScreen);
+                                  cboTests.SelectByID(aTypeScreen);
+                                  cboTestsClick(self);
+                                  //cboAvailTestSelect(Self);
+                                  uSpecimen := 0;
+                                  cboCollTime.Text := piece(aCollSave,'^',1);
+                                  cboCollType.Text := piece(aCollSave,'^',3);
+                                  aCollSave := '';
+                                  break;
+                                end;
+                            end;
+                          aMsg := 'An order for Type and Screen has been added to this request' + '.';
+                        end
+                        else
+                          begin
+                            lblTNS.Caption := 'TYPE + SCREEN must be added to order';
+                            lblTNS.Visible := true;
+                            memMessage.Text := 'TYPE + SCREEN must be added to order';
+                            memMessage.Visible := false;
+                            pnlMessage.Visible := true;
+                          end;
+                    end;
+                  if (uGetTnS = 1) then
+                    begin
+                      if length(aMsg) > 0 then aMsg := aMsg + crlf + crlf;
+                      ShowMsg(aMsg);
+                    end;  }
+
+                  //cboModifiers.Text := '';
+                  edtResults.Height := 247;
+                  edtInfo.Height := 247;
+                  if lvSelectionList.Items.Count > 0 then
+                    begin
+                      pnlSelectedTests.Visible := True;
+                      cmdAccept.Visible := True;
+                      memOrder.Visible := True;
+                      GroupBox1.Visible := False;
+                    end;
+                  end
+                  else
+                    begin
+                      if sub1 = 't' then
+                      begin
+                        DisableComponentControls;
+                        EnableDiagTestControls;
+                        LRORDERMODE := TORDER_MODE_DIAG;
+                        aTestYes := '1';
+                        SetControl(cboAvailTest,       'ORDERABLE', AnInstance);
+                        //DetermineCollectionDefaults(Responses);   //cboCollType = COLLECT , calCollTime = START
+                        i := 1 ;
+                        AResponse := Responses.FindResponseByName('COMMENT',i);
+                        while AResponse <> nil do
+                          begin
+                            Comment.Add(AResponse.EValue);
+                            Inc(i);
+                            AResponse := Responses.FindResponseByName('COMMENT',i);
+                          end ;
+                        if ObtainCollSamp then
+                          begin
+                          //For BloodBank orders, this condition should never occur
+                          end
+                        else
+                          begin
+                            with ALabTest do
+                              with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                                begin
+                                  x := '' ;
+                                  for i := 0 to WardComment.Count-1 do
+                                  x := x + WardComment.strings[i]+#13#10 ;
+                                  pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                                  OrderMessage(x) ;
+                                end ;
+                          end;
+                        if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+                        with cboCollType do if Length(ItemID) > 0 then
+                          begin
+                            Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+                            FLastCollType := ItemID;
+                          end;
+                        if Length(cboUrgency.Text) > 0 then Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text)
+                          else
+                            begin
+                              cboUrgency.ItemIndex := 1;
+                              Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+                              cboUrgencyChange(self);
+                            end;
+                        if Length(memDiagComment.Text) > 0 then Responses.Update('COMMENT',1,memDiagComment.Text,memDiagComment.Text);
+                        if Length(cboReasons.Text) > 0 then Responses.Update('REASON',1,cboReasons.Text,cboReasons.Text);
+                        LoadCollType(cboCollType);
+                        if (cboCollType.ItemID = 'LC') or (cboCollType.ItemID = 'I') then
+                          if not(ALabTest.LabCanCollect) and OrderForInpatient then
+                            cboCollType.SelectByID('WC')
+                          else if not(ALabTest.LabCanCollect) then
+                            cboCollType.SelectByID('SP');
+                        SetupCollTimes(cboCollType.ItemID);
+                        if cboCollType.ItemID = 'LC' then
+                          begin
+                            with cboCollTime do
+                              if Length(ItemID) > 0 then
+                                begin
+                                  Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+                                  FLastLabCollTime := ItemID + U + Text;
+                                end
+                              else if Length(Text) > 0 then
+                                begin
+                                  Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+                                  FLastLabCollTime := ValidCollTime(Text);
+                                end;
+                          end
+                        else
+                          begin
+                            with calCollTime do
+                              if FMDateTime > 0 then
+                                begin
+                                  Responses.Update('START', 1, ValidCollTime(Text), Text);
+                                  FLastColltime := ValidCollTime(Text);
+                                end
+                              else
+                                begin
+                                  Responses.Update('START', 1, '', '') ;
+                                  FLastCollTime := '';
+                                end;
+                          end;
+                        if length(cboCollTime.ItemID) > 0 then aCollTime := cboCollTime.Items[cboCollTime.ItemIndex];
+                        with cboCollType do if Length(ItemID) > 0 then
+                          begin
+                            Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+                            FLastCollType := ItemID;
+                          end;
+                        uTestSelected := true;
+                        with lvSelectionList do
+                          begin
+                            ListItem := Items.Add;
+                            ListItem.Caption := piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',2);
+                            ListItem.SubItems.Add('');
+                            ListItem.SubItems.Add('');
+                            ListItem.SubItems.Add('');
+                            ListItem.SubItems.Add(piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',1));
+                          end;
+                        CurAdd := 1;
+                        aStr := aTestYes + '^' + IntToStr(aLabTest.TestID) + '^' + tQuantity.Text + '^' + aModifier + '^' + aSpecimen + '^' + aCollTime + '^' + cboCollType.Text + '^' + IntToStr(aLabTest.ItemID);  //aSpecimen has 2 pieces
+                        uSelectedItems.Add(aStr);
+                        for i := 0 to uSelectedItems.Count - 1 do
+                          begin
+                            aName := lvSelectionList.Items[i].Caption;
+                            x := uSelectedItems[i];
+                            if piece(x,'^',1) = '1' then    //Diagnostic Test related fields
+                              begin
+                                if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+                              end;
+                            Inc(CurAdd);
+                          end;
+                        memOrder.Text := Responses.OrderText;
+                      edtResults.Height := 247;
+                      edtInfo.Height := 247;
+                      if lvSelectionList.Items.Count > 0 then
+                        begin
+                          pnlSelectedTests.Visible := True;
+                          cmdAccept.Visible := True;
+                          memOrder.Visible := True;
+                          GroupBox1.Visible := False;
+                        end;
+                      end;
+                    end;
+                  AnInstance := NextInstance('ORDERABLE', AnInstance);
+              end;
+              //Quick Order
+          end;
+        for i := 0 to lvSelectionList.Items.Count - 1 do
+          begin
+            if lvSelectionList.Items[i].SubItems[3] = aTypeScreen then
+              begin
+                uGetTnS := 0;
+                uDfltUrgency := cboUrgency.ItemID;
+                lblTNS.Caption := '';
+                lblTNS.Visible := false;
+                memMessage.Text := '';
+                pnlMessage.Visible := false;
+                pnlDiagnosticTests.Caption := 'Diagnostic Tests';
+                if uTNSOrders.Count > 0 then
+                  begin
+                    for j := 0 to uTNSOrders.Count - 1 do
+                      aTNSString := aTNSString + CRLF + uTNSOrders[j];
+                    with Application do
+                      begin
+                        NormalizeTopMosts;
+                        aTNSDays := TNSDaysBack;
+                        aTNS :=
+                          MessageBox(PChar(aTNSString + CRLF + CRLF +
+                                     'Do you wish to continue with this request for Type & Screen?'),
+                                     PChar('Type & Screen Entered in Past ' + IntToStr(TNSDaysBack) + ' Days'),
+                                     MB_YESNO);
+                        RestoreTopMosts;
+                        if aTNS = 7 then
+                          begin
+                            lvSelectionList.ItemIndex := i;
+                            lvSelectionListClick(self);
+                            btnRemoveClick(self);
+                            break;
+                          end;
+                      end;
+                  end;
+                break;
+              end;
+          end;
+        if uGetTnS = 1 then
+          begin
+            lblTNS.Caption := 'TYPE + SCREEN must be added to order';
+            lblTNS.Visible := true;
+            memMessage.Text := 'TYPE + SCREEN must be added to order';
+            pnlMessage.Visible := true;
+            pnlDiagnosticTests.Caption := 'Diagnostic Tests*';
+          end;
+        if ALabTest <> nil then
+          begin
+            if ObtainCollSamp then
+              begin
+               //For BloodBank orders, this condition should never occur
+              end
+            else
+              begin
+                with ALabTest do
+                  with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                    begin
+                      x := '' ;
+                      for i := 0 to WardComment.Count-1 do
+                      x := x + WardComment.strings[i]+#13#10 ;
+                      pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                      OrderMessage(x) ;
+                    end ;
+              end;
+            with ALabTest do
+              begin
+                if ObtainComment then
+                  LoadRequiredComment(FCmtTypes.IndexOf(CurReqComment))
+                else
+                  DisableCommentPanels;
+                x := '' ;
+                for i := 0 to CurWardComment.Count-1 do
+                  x := x + CurWardComment.strings[i]+#13#10 ;
+                i :=  IndexOfCollSamp(CollSamp);
+                if i > -1 then with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                  for i := 0 to WardComment.Count-1 do
+                    x := x + WardComment.strings[i]+#13#10 ;
+                pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                OrderMessage(x) ;
+              end;
+            GroupBox1.Visible := False;
+          end;
+        StatusText('');
+        Changing := False;
+      end;
+  finally                      //**SubTest
+    alist.Free;
+    aTests.Free;
+  end;
+end;
+
+constructor TLabTest.Create(const LabTestIEN: string; Responses: TResponses);
+var
+  LoadData, OneSamp: TStringList;
+  DfltCollSamp: Integer;
+  x: string;
+  tmpResp: TResponse;
+begin
+  LoadData := TStringList.Create;
+  try
+    LoadLabTestData(LoadData, LabTestIEN) ;
+    with LoadData do
+    begin
+      QuickOrderResponses := Responses;
+      TestID := StrToInt(LabTestIEN);
+      TestName := Piece(ExtractDefault(LoadData, 'Test Name'),U,1);
+      ItemID := StrToInt(Piece(ExtractDefault(LoadData, 'Item ID'),U,1));
+      LabSubscript := Piece(ExtractDefault(LoadData, 'Item ID'),U,2);
+      TestReqComment := ExtractDefault(LoadData, 'ReqCom');
+      UniqueCollSamp := false;
+      if Length(ExtractDefault(LoadData, 'Unique CollSamp')) > 0 then UniqueCollSamp := True;
+      x := ExtractDefault(LoadData, 'Unique CollSamp');
+      if Length(x) = 0 then x := ExtractDefault(LoadData, 'Lab CollSamp');
+      if Length(x) = 0 then x := ExtractDefault(LoadData, 'Default CollSamp');
+      if Length(x) = 0 then x := '-1';
+      DfltCollSamp := StrToInt(x);
+      SpecimenList := TStringList.Create;
+      ExtractItems(SpecimenList, LoadData, 'Specimens');
+      if LRFSPEC <> '' then SpecimenList.Add(GetOneSpecimen(StrToInt(LRFSPEC)));
+      UrgencyList := TStringList.Create;
+      if Length(ExtractDefault(LoadData, 'Default Urgency')) > 0 then  { forced urgency }
+        begin
+          ForceUrgency := True;
+          UrgencyList.Add(ExtractDefault(LoadData, 'Default Urgency'));
+          Urgency := StrToInt(Piece(ExtractDefault(LoadData, 'Default Urgency'), '^', 1));
+          uDfltUrgency := Urgency;
+        end
+      else
+        begin                 { list of urgencies }
+          ExtractItems(UrgencyList, LoadData, 'Urgencies');
+          if StrToIntDef(LRFURG, 0) > 0 then
+            Urgency := StrToInt(LRFURG)
+          else
+            Urgency := uDfltUrgency;
+        end;
+      Comment := TStringList.Create ;
+      CurWardComment := TStringList.Create;
+      ExtractText(CurWardComment, LoadData, 'GenWardInstructions');
+      CollSamp := 0;
+      CollSampList := TList.Create;
+      FillCollSampList(LoadData, DfltCollSamp);
+      with QuickOrderResponses do tmpResp := FindResponseByName('SAMPLE'  ,1);
+      if (LRFSAMP <> '') and (IndexOfCollSamp(StrToInt(LRFSAMP)) < 0) and
+         (not UniqueCollSamp) and (tmpResp = nil) then
+        begin
+          OneSamp := TStringList.Create;
+          try
+            FastAssign(GetOneCollSamp(StrToInt(LRFSAMP)), OneSamp);
+            FillCollSampList(OneSamp, CollSampList.Count);
+          finally
+            OneSamp.Free;
+          end;
+        end;
+      if (not UniqueCollSamp) and (CollSampList.Count = 0) then LoadAllSamples;
+      CollSampCount := CollSampList.Count;
+    end;
+  finally
+    LoadData.Free;
+  end;
+  SetCollSampDflts;
+end;
+
+destructor TLabTest.Destroy;
+var
+  i: Integer;
+begin
+  if CollSampList <> nil then
+    with CollSampList do for i := 0 to Count - 1 do
+     with TCollSamp(Items[i]) do
+      begin
+        WardComment.Free;
+        Free;
+      end;
+  CollSampList.Free;
+  SpecimenList.Free;
+  UrgencyList.Free;
+  CurWardComment.Free;
+  Comment.Free;
+  inherited Destroy;
+end;
+
+function TLabTest.IndexOfCollSamp(CollSampIEN: Integer): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  with CollSampList do for i := 0 to Count - 1 do with TCollSamp(Items[i]) do
+    if CollSampIEN = CollSampID then
+    begin
+      Result := i;
+      break;
+    end;
+end;
+
+procedure TLabTest.LoadAllSamples;
+var
+  LoadList, SpecList: TStringList;
+  i: Integer;
+begin
+  LoadList := TStringList.Create;
+  SpecList := TStringList.Create;
+  try
+    LoadSamples(LoadList) ;
+    FillCollSampList(LoadList, 0);
+    ExtractItems(SpecList, LoadList, 'Specimens');
+    with SpecList do for i := 0 to Count - 1 do
+      if SpecimenList.IndexOf(Strings[i]) = -1 then SpecimenList.Add(Strings[i]);
+  finally
+    LoadList.Free;
+    SpecList.Free;
+  end;
+end;
+
+procedure TLabTest.FillCollSampList(LoadData: TStringList; DfltCollSamp: Integer);
+{1  2        3         4       5         6          7         8          9               10   }
+{n^IEN^CollSampName^SpecIEN^TubeTop^MinInterval^MaxPerDay^LabCollect^SampReqCommentIEN;name^SpecName}
+var
+  i, LastListItem, AnIndex: Integer;
+  ACollSamp: TCollSamp;
+  LabCollSamp: Integer;
+begin
+  i := -1;
+  if CollSampList = nil then CollSampList := TList.Create;
+  LastListItem := CollSampList.Count ;
+  LabCollSamp := StrToIntDef(ExtractDefault(LoadData, 'Lab CollSamp'), 0);
+  repeat Inc(i) until (i = LoadData.Count) or (LoadData[i] = '~CollSamp');
+  Inc(i);
+  if i < LoadData.Count then repeat
+    if LoadData[i][1] = 'i' then
+      begin
+        ACollSamp := TCollSamp.Create;
+        with ACollSamp do
+          begin
+            AnIndex         := StrToIntDef(Copy(Piece(LoadData[i], '^', 1), 2, 999), -1);
+            CollSampID      := StrToInt(Piece(LoadData[i], '^', 2));
+            CollSampName    := Piece(LoadData[i], '^', 3);
+            SpecimenID      := StrToIntDef(Piece(LoadData[i], '^', 4), 0);
+            SpecimenName    := Piece(LoadData[i], '^', 10);
+            TubeColor       := Piece(LoadData[i], '^', 5);
+            MinInterval     := StrToIntDef(Piece(LoadData[i], '^', 6), 0);
+            MaxPerDay       := StrToIntDef(Piece(LoadData[i], '^', 7), 0);
+            LabCanCollect   := AnIndex = LabCollSamp;
+            SampReqComment  := Piece(LoadData[i], '^', 9);
+            WardComment     := TStringList.Create;
+            if CollSampID  = StrToIntDef(LRFSAMP, 0) then
+              CollSamp := CollSampID
+            else if AnIndex = DfltCollSamp then
+              CollSamp := CollSampID;
+          end; {with}
+        LastListItem := CollSampList.Add(ACollSamp);
+      end; {if}
+    if (LoadData[i][1] = 't') then
+      TCollSamp(CollSampList.Items[LastListItem]).WardComment.Add(Copy(LoadData[i], 2, 255));
+    Inc(i);
+  until (i = LoadData.Count) or (LoadData[i][1] = '~');
+end;
+
+procedure TLabTest.SetCollSampDflts;
+var
+  tmpResp: TResponse;
+begin
+  Specimen := 0;
+  Comment.Clear;
+  CurReqComment := TestReqComment;
+  if CollSamp = 0 then Exit;
+  with QuickOrderResponses do tmpResp := FindResponseByName('SPECIMEN'  ,1);
+  if (LRFSPEC <> '') and (tmpResp = nil) then
+    ChangeSpecimen(LRFSPEC)
+  else with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+    begin
+      Specimen := SpecimenID;
+      if SampReqcomment <> '' then CurReqComment := SampReqComment;
+    end;
+end;
+
+procedure TLabTest.ChangeCollSamp(CollSampIEN: Integer);
+begin
+  CollSamp := CollSampIEN;
+  SetCollSampDflts;
+end;
+
+procedure TLabTest.ChangeSpecimen(const SpecimenIEN: string);
+begin
+  Specimen := StrToIntDef(SpecimenIEN,0);
+end;
+
+procedure TLabTest.ChangeComment(const CommentText: string);
+begin
+  Comment.Add(CommentText);
+end;
+
+function TLabTest.LabCanCollect: Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  i := IndexOfCollSamp(CollSamp);
+  if i > -1 then with TCollSamp(CollSampList.Items[i]) do Result := LabCanCollect;
+end;
+
+procedure TLabTest.LoadCollSamp(AComboBox: TORComboBox);
+{ loads the collection sample combo box, expects CollSamp to already be set to default }
+var
+  i: Integer;
+  x: string;
+begin
+  AComboBox.Clear;
+  with CollSampList do for i := 0 to Count - 1 do with TCollSamp(Items[i]) do
+  begin
+    x := IntToStr(CollSampID) + '^' + CollSampName;
+    if Length(TubeColor) <> 0 then x := x + ' (' + TubeColor + ')';
+    AComboBox.Items.Add(x);
+    if CollSamp = CollSampID then AComboBox.ItemIndex := i;
+  end;
+  if ((ALabTest.LabSubscript = 'CH') and (not UserHasLRLABKey)) then
+    begin
+      // do not add 'Other'   (coded this way for clarity)
+    end
+  else
+    with AComboBox do
+      begin
+        Items.Add('0^Other...');
+        if ItemIndex < 0 then ItemIndex := Items.IndexOf('Other...');
+      end;
+end;
+
+procedure TLabTest.LoadSpecimen(AComboBox: TORComboBox);
+{ loads specimen combo box, if SpecimenList is empty, use 'E' xref on 61 ?? }
+var
+  i: Integer;
+  tmpResp: TResponse;
+begin
+  AComboBox.Clear;
+  if ObtainSpecimen then
+    begin
+      if SpecimenList.Count = 0 then LoadSpecimens(SpecimenList) ;
+      FastAssign(SpecimenList, AComboBox.Items);
+      AComboBox.Items.Add('0^Other...');
+      with QuickOrderResponses do tmpResp := FindResponseByName('SPECIMEN'  ,1);
+      if (LRFSPEC <> '') and (tmpResp = nil) then
+        AComboBox.SelectByID(LRFSPEC)
+      else if Specimen > 0 then
+        AComboBox.SelectByIEN(Specimen)
+      else
+        AComboBox.ItemIndex := AComboBox.Items.IndexOf('Other...');
+    end
+  else
+    begin
+      i := IndexOfCollSamp(CollSamp);
+      if i < CollSampList.Count then with TCollSamp(CollSampList.Items[i]) do
+        begin
+          AComboBox.Items.Add(IntToStr(SpecimenID) + '^' + SpecimenName);
+          AComboBox.ItemIndex := 0;
+        end;
+      with QuickOrderResponses do tmpResp := FindResponseByName('SPECIMEN'  ,1);
+      if (LRFSPEC <> '') and (tmpResp = nil) then
+        begin
+          AComboBox.Items.Add(GetOneSpecimen(StrToInt(LRFSPEC)));
+          AComboBox.SelectByID(LRFSPEC);
+        end;
+    end;
+  ChangeSpecimen(AComboBox.ItemID);
+end;
+
+procedure TLabTest.LoadUrgency(CollType: string; AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  if UrgencyList.Count < 1 then Exit;
+  with AComboBox do
+    begin
+      Clear;
+      for i := 0 to UrgencyList.Count - 1 do
+         if (CollType = 'LC') and (Piece(UrgencyList[i], U, 3) = '') then
+           Continue
+         else
+           Items.Add(UrgencyList[i]);
+      if (LRFURG <> '') and (ALabTest.ObtainUrgency) then
+        SelectByID(LRFURG)
+      else
+        SelectByIEN(uDfltUrgency);
+      Urgency := AComboBox.ItemIEN;
+    end;
+end;
+
+function TLabTest.NameOfCollSamp: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  i := IndexOfCollSamp(CollSamp);
+  if i > -1 then with TCollSamp(CollSampList.Items[i]) do Result := CollSampName;
+end;
+
+function TLabTest.NameOfSpecimen: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  if CollSamp > 0 then with TCollSamp(CollSampList[IndexOfCollSamp(CollSamp)]) do
+    if (Specimen > 0) and (Specimen = SpecimenID) then Result := SpecimenName;
+  if (Length(Result) = 0) and (Specimen > 0) then with SpecimenList do
+    for i := 0 to Count - 1 do if Specimen = StrToInt(Piece(Strings[i], '^', 1)) then
+    begin
+      Result := Piece(Strings[i], '^', 2);
+      break;
+    end;
+end;
+
+function TLabTest.NameOfUrgency: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with UrgencyList do for i := 0 to Count - 1 do
+  begin
+    if StrToInt(Piece(Strings[i], '^', 1)) = Urgency
+      then Result := Piece(Strings[i], '^', 2);
+    break;
+  end;
+end;
+
+function TLabTest.ObtainCollSamp: Boolean;
+begin
+  Result := (not UniqueCollSamp);
+end;
+
+function TLabTest.ObtainSpecimen: Boolean;
+var
+  i: Integer;
+begin
+  Result := True;
+  i := IndexOfCollSamp(CollSamp);
+  if (i > -1) and (i < CollSampList.Count) then with TCollSamp(CollSampList.Items[i]) do
+    if SpecimenID > 0 then Result := False;
+end;
+
+function TLabTest.ObtainUrgency: Boolean;
+begin
+  Result := not ForceUrgency;
+end;
+
+function TLabTest.ObtainComment: Boolean;
+begin
+  Result := Length(CurReqComment) > 0;
+end;
+
+procedure TfrmODBBank.ExtractModifiers(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(Outlist, AList,'MODIFIERS');
+end;
+
+procedure TfrmODBBank.ExtractReasons(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(Outlist, AList,'REASONS');
+end;
+
+procedure TfrmODBBank.ExtractUrgencies(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(Outlist, AList,'URGENCIES');
+end;
+
+procedure TfrmODBBank.ExtractTNSOrders(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(Outlist, AList,'TNS ORDERS');
+end;
+
+procedure TfrmODBBank.ExtractSurgeries(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList,'SURGERIES');
+end;
+
+procedure TfrmODBBank.ExtractSpecimens(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList,'SPECIMENS');
+end;
+
+procedure TfrmODBBank.ExtractTypeScreen(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList, 'TYPE AND SCREEN');
+end;
+
+procedure TfrmODBBank.ExtractOther(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList, 'OTHER');
+end;
+
+procedure TfrmODBBank.ExtractSpecimen(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList, 'SPECIMEN');
+end;
+
+procedure TfrmODBBank.ExtractPatientInfo(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList, 'INFO');
+end;
+
+procedure TfrmODBBank.ExtractTests(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList, 'TESTS');
+end;
+
+procedure TfrmODBBank.ExtractMSBOS(OutList:TStrings; AList:TStrings);
+begin
+  ExtractItems(OutList, AList, 'MSBOS');
+end;
+
+function TfrmODBBank.SpecimenNeeded(OutList:TStrings; AList:TStrings; CompID:integer): Boolean;
+var
+  i:integer;
+  aborh: boolean;
+  aSpecimen, aSpecimenDate: string;
+  aWantDateTime, aExpiredSpecimenDate: TFMDateTime;
+begin
+  result := false;
+  aborh := false;
+  aSpecimen := '';
+  OutList.Clear;
+  ExtractItems(OutList,Alist,'ABORH');
+  for i := 0 to OutList.Count - 1 do
+    begin
+      if Length(OutList[i])>1 then
+        begin
+          aborh := true;
+        end;
+    end;
+  if aborh = false then
+    begin
+      result := true;
+      exit;
+    end;
+  OutList.Clear;
+  ExtractSpecimen(OutList, uVBECList);
+  if OutList.Count > 0 then aSpecimen := OutList[0];
+  OutList.Clear;
+  ExtractItems(OutList,AList,'SPECIMENS');
+  aWantDateTime := calWantTime.FMDateTime;
+  aSpecimenDate := piece(aSpecimen,'^',1);
+  aExpiredSpecimenDate := 0;
+  if Length(aSpecimenDate) > 0 then aExpiredSpecimenDate := StrToFloat(aSpecimenDate);
+
+  for i := 0 to OutList.Count - 1 do
+    begin
+      if (IntToStr(aLabTest.ItemID) = piece(OutList[i],'^',1)) and (piece(OutList[i],'^',2) = '1') then
+        if aSpecimen = '' then
+          begin
+            result := true;
+            exit;
+          end
+        else if (Length(calWantTime.Text) > 0) and (aExpiredSpecimenDate < aWantDateTime) then
+          begin
+            result := true;
+            exit;
+          end;
+    end;
+end;
+
+procedure TfrmODBBank.Validate(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+const
+  TX_NO_TESTS       = 'No Tests or Components selected' ;
+  TX_TNS_REQUIRED   = 'An order for TYPE and SCREEN must be created for this order set' ;
+
+begin
+  inherited;
+  if uSelectedItems.Count < 1 then
+    begin
+      SetError(TX_NO_TESTS);
+      Exit;
+    end;
+  if uGetTns = 1 then
+    begin
+      SetError(TX_TNS_REQUIRED);
+      Exit;
+    end;
+  ValidateAdd(AnErrMsg);
+end;
+
+procedure TfrmODBBank.ValidateAdd(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+    begin
+      if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+      AnErrMsg := AnErrMsg + x;
+    end;
+
+var
+  aList: TStringList;
+  i, DaysofFuturePast: integer;
+  d1, d2: TDateTime;
+  x,test,aOther: string;
+const
+  {Diagnostic Test Errors}
+  TX_NO_TIME        = 'Collection Time is required' ;
+  TX_NO_TCOLLTYPE   = 'Collection Type is required' ;
+  TX_NO_TESTS       = 'A Lab Test or tests must be selected' ;
+  TX_BAD_TIME       = 'Collection times must be chosen from the drop down list or entered as valid' +
+                      ' Fileman date/times (T@1700, T+1@0800, etc.)' ;
+  TX_PAST_TIME      = 'Collection times in the past are not allowed';
+  TX_NO_DAYS        = 'A number of days must be entered for continuous orders';
+  TX_NO_TIMES       = 'A number of times must be entered for continuous orders';
+  TX_NO_STOP_DATE   = 'Could not calculate the stop date for the order.  Check "for n Days"';
+  TX_TOO_MANY_DAYS  = 'Maximum number of days allowed is ';
+  TX_TOO_MANY_TIMES = 'For this frequency, the maximum number of times allowed is:  X';
+  //TX_NO_COMMENT     = 'A comment is required for this test and collection sample.';
+  TX_NUMERIC_REQD   = 'A numeric value is required for urine volume';
+  TX_DOSEDRAW_REQD  = 'Both DOSE and DRAW times are required for this order';
+  TX_TDM_REQD       = 'A value for LEVEL is required for this order';
+  //TX_ANTICOAG_REQD  = 'You must specify an anticoagulant on this order.' ;
+  TX_NO_COLLSAMPLE  = 'A collection sample MUST be specified';
+  TX_NO_SPECIMEN    = 'A specimen MUST be specified';
+  TX_NO_URGENCY     = 'An urgency MUST be specified';
+  TX_NO_FREQUENCY   = 'A collection frequency MUST be specified';
+  TX_NOT_LAB_COLL_TIME = ' is not a routine lab collection time';
+  TX_NO_ALPHA       = 'For continuous orders, enter a number of days, or an "X" followed by a number of times';
+  TX_BADTIME_CAP    = 'Invalid Immediate Collect Time';
+  {Component/Type & Screen Errors}
+  TX_NO_COMPONENTS  = 'A Blood Product MUST be selected';
+  TX_NO_QUANTITY    = 'The number of units MUST be specified under "Quantity"';
+  TX_HIGH_QUANTITY  = 'Quantity too high';
+  TX_NO_DATEMODIFIED= 'A Date/time Wanted MUST be specified';
+  TX_NO_SURGERY     = 'A Surgery MUST be specified for Pre-Op orders';         //only if Pre-op selected
+  TX_NO_REASON      = 'A Reason for Request MUST be entered';
+  TX_REASON_TOO_LONG= 'Reason for Request MUST be less than 76 characters long';
+  TX_MODIFIER_TOO_LONG = 'Modifer text MUST be less than 51 characters long';
+  TX_NO_COMMENT     = 'A Comment MUST be entered for this Component';
+  TX_DUPLICATE      = 'Duplicate Test/Component not allowed';
+  TX_NO_TEST_SELECTED = 'No Test/Component selected';
+
+begin
+  inherited;
+  AnErrMsg := '';
+  aList := TStringList.Create;
+  try
+    ExtractOther(aList, uVBECList);
+    if aList.Count > 0 then aOther := aList[0];
+    aList.Clear;
+    if uSelectedItems.Count < 1 then
+      begin
+        AnErrMsg := TX_NO_TEST_SELECTED;
+        Exit;
+      end;
+    for i := 0 to uSelectedItems.Count - 1 do
+      begin
+        x := uSelectedItems[i];
+        test := lvSelectionList.Items[i].Caption;
+        if piece(x,'^',1) = '1' then    //Diagnostic Test
+          begin
+            if uSpecimen = 0 then
+              if cboCollType.ItemID = '' then
+                SetError(TX_NO_TCOLLTYPE + ' (' + test + ')')
+              else if cboCollType.ItemID = 'LC' then
+                begin
+                 if Length(cboCollTime.Text) = 0 then SetError(TX_NO_TIME + ' (' + test + ')');
+                 with cboCollTime do if (Length(Text) > 0) and (ItemIndex = -1) then
+                   begin
+                     if StrToFMDateTime(Text) < 0 then
+                       SetError(TX_BAD_TIME + ' (' + test + ')')
+                     else if StrToFMDateTime(Text) < FMNow then
+                       SetError(TX_PAST_TIME + ' (' + test + ')')
+                     else if OrderForInpatient then
+                       begin
+                         d1 := FMDateTimeToDateTime(Trunc(StrToFMDateTime(cboColltime.Text)));
+                         d2 := FMDateTimeToDateTime(FMToday);
+                         if EvtDelayLoc > 0 then
+                           DaysofFuturePast := LabCollectFutureDays(EvtDelayLoc,EvtDivision)
+                         else
+                           DaysofFuturePast := LabCollectFutureDays(Encounter.Location);
+                         if DaysofFuturePast = 0 then DaysofFuturePast := 7;
+                         if ((d1 - d2) > DaysofFuturePast) then
+                           SetError('A lab collection cannot be ordered more than '
+                             + IntToStr(DaysofFuturePast) + ' days in advance');
+                       end
+                     else if EvtDelayLoc > 0 then
+                       begin
+                         if (not IsLabCollectTime(StrToFMDateTime(cboCollTime.Text), EvtDelayLoc)) then
+                           SetError(cboCollTime.Text + TX_NOT_LAB_COLL_TIME + ' (' + test + ')');
+                       end
+                     else if EvtDelayLoc <= 0 then
+                       begin
+                         if (not IsLabCollectTime(StrToFMDateTime(cboCollTime.Text), Encounter.Location)) then
+                           SetError(cboCollTime.Text + TX_NOT_LAB_COLL_TIME + ' (' + test + ')');
+                       end;
+                   end;
+                end
+              else
+                begin
+                  if cboCollType.ItemID = 'I' then
+                    begin
+                      calCollTime.Text := txtImmedColl.Text;
+                      x := ValidImmCollTime(calCollTime.FMDateTime);
+                      if (Piece(x, U, 1) <> '1') then
+                        SetError(Piece(x, U, 2));
+                    end;
+
+                  with calColltime do
+                    begin
+                      if FMDateTime = 0 then SetError(TX_BAD_TIME + ' (' + test + ')')
+                      else
+                        begin
+                          // date only was entered
+                          if (FMDateTime - Trunc(FMDateTime) = 0) then
+                            begin
+                              if (Trunc(FMDateTime) < FMToday) then SetError(TX_PAST_TIME + ' (' + test + ')');
+                            end
+                          // date/time was entered
+                          else
+                            begin
+                              if (UpperCase(Text) <> 'NOW') and (FMDateTime < FMNow) then SetError(TX_PAST_TIME + ' (' + test + ')');
+                            end;
+                        end;
+                    end;
+                end;
+
+            with cboUrgency do if ItemIEN  <= 0 then SetError(TX_NO_URGENCY + ' (' + test + ')');
+          end
+        else                            //Component
+          begin
+            if piece(x,'^',3) ='' then SetError(TX_NO_QUANTITY + ' (' + test + ')')
+              else
+                begin
+                  if StrToInt(piece(x,'^',3)) < 1 then SetError(TX_NO_QUANTITY + ' (' + test + ')');
+                  if StrToInt(piece(x,'^',3)) > 100 then SetError(TX_HIGH_QUANTITY + ' (' + test + ')');
+                end;
+            if calWantTime.Text = '' then SetError(TX_NO_DATEMODIFIED + ' (' + test + ')');
+            if (cboReasons.Text = '') and not(uReason = '') then
+              begin
+                SetError(TX_NO_REASON + ' (' + test + ').' + ' Previously entered ''Reason for Request'' will be retained.');
+                cboReasons.Text := uReason; //reset reason back to previous value
+              end;
+              if (cboReasons.Text = '') then
+                begin
+                  SetError(TX_NO_REASON + ' (' + test + ').');
+                end;
+            if (memDiagComment.Text = '') and (piece(x,'^',2) = aOther) then SetError(TX_NO_COMMENT + ' (' + test + ')');
+            if (cboUrgency.Text = 'PRE-OP') and (length(cboSurgery.Text) < 1) then SetError(TX_NO_SURGERY + ' (' + test + ')');
+            if (length(cboReasons.Text) > 75) then SetError(TX_REASON_TOO_LONG);
+            if (length(cboModifiers.Text) > 50) then SetError(TX_MODIFIER_TOO_LONG);
+          end;
+      end;
+  finally
+    aList.Free;
+  end;
+end;
+
+function TfrmODBBank.ValidAdd: Boolean;
+const
+  TX_NO_SAVE     = 'This item cannot be added for the following reason(s):' + CRLF + CRLF;
+  TX_NO_SAVE_CAP = 'Unable to Add item';
+  TX_SAVE_ERR    = 'Unexpected error - it was not possible to Add this item.';
+var
+  ErrMsg: string;
+
+begin
+  Result := True;
+  ValidateAdd(ErrMsg);
+  if Length(ErrMsg) > 0 then
+  begin
+    InfoBox(TX_NO_SAVE + ErrMsg, TX_NO_SAVE_CAP, MB_OK);
+    Result := False;
+    Exit;
+  end;
+end;
+
+function TfrmODBBank.ValidCollTime(UserEntry: string): string;
+var
+  i: integer;
+const
+  FMDateResponses: array[0..3] of string = ('TODAY','NOW','NOON','MID');
+begin
+  Result := '';
+  UserEntry := UpperCase(UserEntry);
+  if StrToFMDateTime(UserEntry) < 0 then exit;
+  if (UserEntry = 'T') or
+     (UserEntry = 'N') or
+     (Copy(UserEntry,1,2)='T+') or
+     (Copy(UserEntry,1,2)='T@') or
+     (Copy(UserEntry,1,2)='T-') or
+     (Copy(UserEntry,1,2)='N+') then Result := UserEntry
+  else
+     for i := 0 to 3 do if Pos(FMDateResponses[i],UserEntry)>0 then Result := UserEntry ;
+  if Result = '' then Result := FloatToStr(StrToFMDateTime(UserEntry));
+end;
+
+procedure TfrmODBBank.GetAllCollSamples(AComboBox: TORComboBox);
+var
+  OtherSamp: string;
+begin
+  with ALabTest, AComboBox do
+    begin
+      if ((CollSampList.Count + 1) <= AComboBox.Items.Count) then LoadAllSamples;
+      OtherSamp := SelectOtherCollSample(Font.Size, CollSampCount, CollSampList);
+      if OtherSamp = '-1' then exit;
+      if SelectByID(Piece(OtherSamp, U, 1)) = -1 then
+        if Items.Count > CollSampCount + 1 then
+          Items[0] := OtherSamp
+        else
+          Items.Insert(0, OtherSamp) ;
+      SelectByID(Piece(OtherSamp, U, 1));
+      AComboBox.OnChange(Self);
+      ActiveControl := cmdAccept;
+    end;
+end;
+
+procedure TfrmODBBank.GetAllSpecimens(AComboBox: TORComboBox);
+var
+  OtherSpec: string;
+begin
+  inherited;
+  if ALabTest <> nil then
+    with ALabTest, AComboBox do
+      begin
+        AComboBox.DroppedDown := False;
+        OtherSpec := SelectOtherSpecimen(Font.Size, SpecimenList);
+        if OtherSpec = '-1' then exit;
+        if SelectByID(Piece(OtherSpec, U, 1)) = -1 then
+          if Items.Count > SpecListCount + 1 then
+            Items[0] := OtherSpec
+          else
+            Items.Insert(0, OtherSpec) ;
+        SpecimenList.Add(OtherSpec);
+        SelectByID(Piece(OtherSpec, U, 1));
+        AComboBox.OnChange(Self);
+      end;
+end;
+
+procedure TfrmODBBank.SetupCollTimes(CollType: string);
+var
+  tmpImmTime, tmpTime: TFMDateTime;
+  x, tmpORECALLType, tmpORECALLTime: string;
+begin
+  x := GetLastCollectionTime;
+  tmpORECALLType := Piece(x, U, 1);
+  tmpORECALLTime := Piece(x, U, 2);
+  if CollType = 'SP' then
+    begin
+      cboColltime.Visible    := False;
+      txtImmedColl.Visible   := False;
+      pnlCollTimeButton.Visible   := False;
+      pnlCollTimeButton.TabStop := False;
+      calCollTime.Visible    := True;
+      calColltime.Enabled    := True;
+      if FLastCollTime <> '' then
+        begin
+          calCollTime.Text := ValidCollTime(FLastColltime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(FLastCollTime);
+            end;
+        end
+      else if tmpORECALLTime <> '' then
+        begin
+          calCollTime.Text := ValidCollTime(tmpORECALLTime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(tmpORECALLTime);
+            end;
+        end
+      else if LRFDATE <> '' then
+        calCollTime.Text     := LRFDATE
+      else
+        calCollTime.Text     := 'TODAY';
+    end
+  else if CollType = 'WC' then
+    begin
+      cboColltime.Visible    := False;
+      txtImmedColl.Visible   := False;
+      pnlCollTimeButton.Visible   := False;
+      pnlCollTimeButton.TabStop := False;
+      calCollTime.Visible    := True;
+      calColltime.Enabled    := True;
+      if FLastCollTime <> '' then
+        begin
+          calCollTime.Text := ValidColltime(FLastColltime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(FLastCollTime);
+            end;
+        end
+      else if tmpORECALLTime <> '' then
+        begin
+          calCollTime.Text := ValidColltime(tmpORECALLTime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(tmpORECALLTime);
+            end;
+        end
+      else if LRFDATE <> '' then
+        calCollTime.Text     := LRFDATE
+      else
+        calCollTime.Text     := 'NOW';
+    end
+  else if CollType = 'LC' then
+    begin
+      cboColltime.Visible    := True;
+      calCollTime.Visible    := False;
+      calColltime.Enabled    := False;
+      txtImmedColl.Visible   := False;
+      pnlCollTimeButton.Visible   := False;
+      pnlCollTimeButton.TabStop := False;
+      with CtrlInits do SetControl(cboCollTime, 'Lab Collection Times');
+      if Pos(U, FLastLabCollTime) > 0 then
+        cboColltime.SelectByID(Piece(FLastLabCollTime, U, 1))
+      else if FLastLabCollTime <> '' then
+        cboCollTime.Text     := FLastLabCollTime
+      else if (tmpORECALLTime <> '') and (tmpORECALLType = 'LC') then
+        cboCollTime.Text     := MakeRelativeDateTime(StrToFMDateTime(tmpORECALLTime))
+      else if LRFDATE <> '' then
+        cboCollTime.Text     := LRFDATE
+      else
+        cboCollTime.ItemIndex := 0;
+    end
+  else if CollType = 'I' then
+    begin
+      cboColltime.Visible    := False;
+      calCollTime.Visible    := False;
+      calColltime.Enabled    := False;
+      txtImmedColl.Visible   := True;
+      pnlCollTimeButton.Visible   := True;
+      pnlCollTimeButton.TabStop := True;
+      tmpImmTime := GetDefaultImmCollTime;
+      tmpTime := 0;
+      if (FLastColltime <> '') then
+        tmpTime := StrToFMDateTime(FLastColltime)
+      else if (tmpORECALLTime <> '') then
+        tmpTime := StrToFMDateTime(tmpORECALLTime)
+      else if LRFDATE <> '' then
+        tmpTime := StrToFMDateTime(LRFDATE);
+
+      if tmpTime > tmpImmTime then
+        begin
+          calCollTime.FMDateTime := tmpTime;
+          txtImmedColl.Text      := FormatFMDateTime('mmm dd,yy@hh:nn', tmpTime);
+        end
+      else
+        begin
+          calCollTime.FMDateTime := GetDefaultImmCollTime;
+          txtImmedColl.Text      := FormatFMDateTime('mmm dd,yy@hh:nn', calCollTime.FMDateTime);
+        end;
+    end;
+end;
+
+procedure TfrmODBBank.LoadCollType(AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  with CtrlInits, cboCollType do
+    begin
+      SetControl(cboCollType, 'Collection Types');
+      if not ALabTest.LabCanCollect then
+        begin
+          i := SelectByID('LC');
+          if i > -1 then Items.Delete(i);
+          i := SelectByID('I');
+          if i > -1 then Items.Delete(i);
+        end ;
+      if LRFZX <> '' then
+        begin
+          if (LRFZX = 'LC') or (LRFZX = 'I') then
+            begin
+              if ALabTest.LabCanCollect then
+                cboCollType.SelectByID(LRFZX)
+              else
+                cboCollType.SelectByID('WC');
+            end
+          else
+            cboCollType.SelectByID(LRFZX);
+        end
+      else if FLastCollType <> '' then
+        begin
+          if (FLastCollType = 'LC') or (FLastCollType = 'I') then
+            begin
+              if ALabTest.LabCanCollect then
+                cboCollType.SelectByID(FLastCollType)
+              else
+                cboCollType.SelectByID('WC');
+            end
+          else
+            cboCollType.SelectByID(FLastCollType);
+        end
+      else if uDfltCollType <> '' then
+        begin
+          if (uDfltCollType = 'LC') or (uDfltCollType = 'I') then
+            begin
+              if ALabTest.LabCanCollect then
+                cboCollType.SelectByID(uDfltCollType)
+              else
+                cboCollType.SelectByID('WC');
+            end
+          else
+            cboCollType.SelectByID(uDfltCollType);
+        end
+      else if OrderForInpatient then
+        begin
+          if ALabTest.LabCanCollect then
+            cboCollType.SelectByID('LC')
+          else
+            SelectByID('WC');
+        end
+      else
+        cboCollType.SelectByID('SP');
+    end;
+  SetupCollTimes(cboCollType.ItemID);
+end;
+
+procedure  TfrmODBBank.ReadServerVariables;
+begin
+  LRFZX   := KeyVariable['LRFZX'];
+  LRFSAMP := KeyVariable['LRFSAMP'];
+  LRFSPEC := KeyVariable['LRFSPEC'];
+  LRFDATE := KeyVariable['LRFDATE'];
+  LRFURG  := KeyVariable['LRFURG'];
+  LRFSCH  := KeyVariable['LRFSCH'];
+end;
+
+procedure TfrmODBBank.cboQuickClick(Sender: TObject);
+begin
+  inherited;
+  SetOnQuickOrder;
+end;
+
+procedure TfrmODBBank.cboReasonsChange(Sender: TObject);
+begin
+  inherited;
+  if (length(cboReasons.Text) > 75) then
+    begin
+      ShowMsg('REASON FOR REQUEST cannot be longer than 75 characters');
+      cboReasons.Text := Copy(cboReasons.Text,0,75);
+      Exit;
+    end;
+  if Length(cboReasons.Text) > 0 then Responses.Update('REASON', 1, cboReasons.Text, cboReasons.Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODBBank.cboReasonsEnter(Sender: TObject);
+begin
+  inherited;
+  if Length(cboReasons.Text) > 0 then
+    uReason := cboReasons.Text;
+end;
+
+procedure TfrmODBBank.cboReasonsExit(Sender: TObject);
+begin
+  inherited;
+  if Length(cboReasons.Text) > 0 then
+    uReason := cboReasons.Text;
+end;
+
+procedure TfrmODBBank.cboAvailTestSelect(Sender: TObject);
+var
+  i: integer;
+  text : string;
+  ListItem: TListItem;
+  aCollTime,aTypeScreen,aStr,aModifier,aSpecimen,aTestYes,x,aName,aTNSString: string;
+  aList: TStringList;
+  curAdd,AnInstance,aTNS,aTNSDays: Integer;
+  sub,sub1: string;
+  AResponse: TResponse;
+begin
+  if cboAvailTest.ItemID = '' then Exit;
+  aList := TStringList.Create;
+  try
+    ALabTest := nil;
+    aTypeScreen := '';
+    aSpecimen := '^';
+    aTestYes := '1';
+    aModifier := '';
+    changing := true;
+    tQuantity.Text := '';
+    sub1 := '';
+    cboModifiers.ItemIndex := -1;
+    DisableComponentControls;
+    EnableDiagTestControls;
+    LRORDERMODE := TORDER_MODE_DIAG;
+    ALabTest := TLabTest.Create(cboAvailTest.ItemID, Responses);
+    sub := GetSubtype(ALabTest.TestName);
+    with CtrlInits do
+        begin
+          SetControl(cboCollType, 'Collection Types');
+          LoadCollType(cboCollType);
+          if FLastCollType <> '' then
+            cboCollType.SelectByID(FLastCollType)
+          else if uDfltCollType <> '' then
+            cboCollType.SelectByID(uDfltCollType)
+          else if OrderForInpatient then
+            if (ALabTest.LabCanCollect) then
+              cboCollType.SelectByID('LC')
+            else
+              cboCollType.SelectByID('WC')
+          else
+            cboCollType.SelectByID('SP');
+          SetupCollTimes(cboCollType.ItemID);
+        end;
+    with cboAvailTest do
+      begin
+        if (Length(ItemID) = 0) or (ItemID = '0') then Exit;
+        FLastLabID := ItemID ;
+        FLastItemID := ItemID;
+        for i := 0 to uSelectedItems.Count - 1 do
+          if ItemID = piece(uSelectedItems[i],'^',2) then
+            begin
+              ItemIndex := -1;
+              lvSelectionList.Items[i].Selected := true;
+              lvSelectionListClick(self);
+              Exit;
+            end;
+        Changing := True;
+        Changing := False;
+        ExtractTypeScreen(aList, uVBECList);
+        if aList.Count > 0 then aTypeScreen := aList[0];
+        aList.Clear;
+        aTNSString := '';
+        if (StrToInt(aTypeScreen) = cboAvailTest.ItemID) and (uTNSOrders.Count > 0) then
+          begin
+            for i := 0 to uTNSOrders.Count - 1 do
+              aTNSString := aTNSString + CRLF + uTNSOrders[i];
+            with Application do
+              begin
+                NormalizeTopMosts;
+                aTNSDays := TNSDaysBack;
+                aTNS :=
+                  MessageBox(PChar(aTNSString + CRLF + CRLF +
+                             'Do you wish to continue?'),
+                             PChar('Type & Screen Entered in Past ' + IntToStr(TNSDaysBack) + ' Days'),
+                             MB_YESNO);
+                RestoreTopMosts;
+                if aTNS = 7 then
+                  begin
+                    cboAvailTest.ItemIndex := -1;
+                    exit;
+                  end;
+              end;
+          end;
+        if sub = 't' then with ALabTest do      //DIAGNOSTIC TEST
+          begin
+            if ObtainCollSamp then
+              begin
+              //For BloodBank orders, this condition should never occur
+              end
+            else
+              begin
+                with ALabTest do
+                  with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+                    begin
+                      x := '' ;
+                      for i := 0 to WardComment.Count-1 do
+                      x := x + WardComment.strings[i]+#13#10 ;
+                      pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+                      OrderMessage(x) ;
+                    end ;
+              end;
+        end;
+        Changing := False;
+      end;
+    if LRORDERMODE = TORDER_MODE_DIAG then
+      begin
+        if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+        with cboCollType do if Length(ItemID) > 0 then
+          begin
+            Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+            FLastCollType := ItemID;
+          end;
+        if Length(cboUrgency.Text) > 0 then Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text)
+        else
+          begin
+            cboUrgency.ItemIndex := 1;
+            Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+          end;
+        if Length(memDiagComment.Text) > 0 then Responses.Update('COMMENT',1,memDiagComment.Text,memDiagComment.Text);
+        if Length(cboReasons.Text) > 0 then Responses.Update('REASON',1,cboReasons.Text,cboReasons.Text);
+        if cboCollType.ItemID = 'LC' then
+          begin
+            with cboCollTime do
+              if Length(ItemID) > 0 then
+                begin
+                  Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+                  FLastLabCollTime := ItemID + U + Text;
+                end
+              else if Length(Text) > 0 then
+                begin
+                  Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+                  FLastLabCollTime := ValidCollTime(Text);
+                end;
+          end
+          else
+            begin
+              with calCollTime do
+                if FMDateTime > 0 then
+                  begin
+                    Responses.Update('START', 1, ValidCollTime(Text), Text);
+                    FLastColltime := ValidCollTime(Text);
+                  end
+                else
+                  begin
+                    Responses.Update('START', 1, '', '') ;
+                    FLastCollTime := '';
+                  end;
+            end;
+          if Length(cboCollType.Text) > 0 then Responses.Update('COLLECT',1,cboCollType.ItemID,cboCollType.ItemID);
+      end;
+    if length(cboCollTime.ItemID) > 0 then aCollTime := cboCollTime.Items[cboCollTime.ItemIndex];
+    uTestSelected := true;
+    with lvSelectionList do
+      begin
+        ListItem := Items.Add;
+        ListItem.Caption := piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',2);
+        ListItem.SubItems.Add('');
+        ListItem.SubItems.Add('');
+        ListItem.SubItems.Add('');
+        ListItem.SubItems.Add(piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',1));
+        if piece(cboAvailTest.Items[cboAvailTest.ItemIndex],'^',1) = aTypeScreen then
+          begin
+            lblTNS.Caption := '';
+            lblTNS.Visible := false;
+            memMessage.Text := '';
+            pnlMessage.Visible := false;
+            uGetTnS := 0;
+            pnlDiagnosticTests.Caption := 'Diagnostic Tests';
+          end;
+      end;
+    aStr := aTestYes + '^' + IntToStr(aLabTest.TestID) + '^' + tQuantity.Text + '^' + aModifier + '^' + aSpecimen + '^' + aCollTime + '^' + cboCollType.Text + '^' + IntToStr(aLabTest.ItemID);  //aSpecimen has 2 pieces
+    uSelectedItems.Add(aStr);
+    CurAdd := 1;
+    for i := 0 to uSelectedItems.Count - 1 do
+      begin
+        aName := lvSelectionList.Items[i].Caption;
+        x := uSelectedItems[i];
+        if piece(x,'^',1) = '1' then    //Diagnostic Test related fields
+          begin
+            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+          end;
+        Inc(CurAdd);
+      end;
+    memOrder.Text := Responses.OrderText;
+  finally
+    aList.Free;
+  end;
+  edtResults.Height := 247;
+  edtInfo.Height := 247;
+  if lvSelectionList.Items.Count > 0 then
+    begin
+      pnlSelectedTests.Visible := True;
+      cmdAccept.Visible := True;
+      memOrder.Visible := True;
+      GroupBox1.Visible := False;
+    end;
+end;
+
+procedure TfrmODBBank.cboAvailCompSelect(Sender: TObject);
+ var
+  aList,aTests: TStringList;
+  i,j,k,getTest,TestAdded: integer;
+  text : string;
+  aMSBOS,aMSBOSContinue,curAdd,AnInstance: integer;
+  sub,sub1: string;
+  AResponse: TResponse;
+  ListItem: TListItem;
+  aTypeScreen,aSpecimen,aTestYes,aStr,aMsg,aModifier,x,x1,aReason,aSurgery,aCollTime,aCollSave,aName: String;
+begin
+  if cboAvailComp.ItemID = '' then Exit;
+  aList := TStringList.Create;
+  aTests := TStringList.Create;
+  sub1 := '';
+  try
+    DisableDiagTestControls;
+    EnableComponentControls;
+    if not(changing = true) then
+      begin
+        changing := true;
+        tQuantity.Text := '';
+        cboModifiers.ItemIndex := -1;
+        changing := false;
+      end;
+    LRORDERMODE := TORDER_MODE_COMP;
+    with cboAvailComp do
+      begin
+        if (Length(ItemID) = 0) or (ItemID = '0') then Exit;
+        FLastLabID := ItemID ;
+        FLastItemID := ItemID;
+        for i := 0 to uSelectedItems.Count - 1 do
+          if ItemID = piece(uSelectedItems[i],'^',2) then
+            begin
+              ItemIndex := -1;
+              lvSelectionList.Items[i].Selected := true;
+              lvSelectionListClick(self);
+              Exit;
+            end;
+        ALabTest := TLabTest.Create(ItemID, Responses);
+        sub := GetSubtype(ALabTest.TestName);
+        Changing := False;
+        StatusText('');
+      end;
+    //Check for and display any associated Lab Results
+    aList.Clear;
+    TestAdded := 0;
+    getTest := 0;
+    ExtractTests(aList, uVBECList);   //Get Results associated with ordered components
+      for j := 0 to aList.Count - 1 do
+        begin
+          if StrToInt(piece(aList[j],'^',1)) = aLabTest.ItemID then
+            begin
+              if uTestsForResults.Count < 1 then getTest := 1;
+              for k := 0 to uTestsForResults.Count - 1 do
+                begin
+                  if piece(uTestsForResults[k],'^',1) = piece(aList[j],'^',3) then
+                    begin
+                      getTest := 0;
+                      break;
+                    end
+                  else getTest := 1;
+                end;
+              if getTest = 1 then
+                begin
+                  uTestsForResults.Add(piece(aList[j],'^',3));
+                  TestAdded := 1;
+                end;
+            end;
+        end;
+      if TestAdded = 1 then
+        begin
+          edtResults.Clear;
+          aTests.Clear;
+          GetPatientBloodResults(aTests, Patient.DFN, uTestsForResults);
+          QuickCopy(ATests,edtResults);
+          if edtResults.Lines.Count > 0 then TabResults.Caption := 'Lab Results Available';
+          uRaw.Clear;
+          GetPatientBloodResultsRaw(uRaw, Patient.DFN, uTestsForResults);
+        end;
+      CurAdd := 1;
+      if uRaw.Count > 0 then
+      for j := 0 to uRaw.Count - 1 do
+        begin
+          if Length(uRaw[j]) > 0 then Responses.Update('RESULTS', CurAdd, uRaw[j], piece(uRaw[j],'^',1));
+          Inc(CurAdd);
+        end;
+    aTypeScreen := '';
+    aSpecimen := '^';
+    aTestYes := '0';
+    aReason := '';
+    aSurgery := '';
+    aCollTime := '';
+    aList.Clear;
+    ExtractTypeScreen(aList, uVBECList);
+    if aList.Count > 0 then aTypeScreen := aList[0];
+    aList.Clear;
+    ExtractSpecimen(aList, uVBECList);
+    if aList.Count > 0 then aSpecimen := aList[0];
+    if length(cboModifiers.ItemID) > 0 then aModifier := cboModifiers.Items[cboModifiers.ItemIndex];
+    if length(cboReasons.ItemID) > 0 then aReason := cboReasons.Items[cboReasons.ItemIndex];
+    if length(cboSurgery.ItemID) > 0 then aSurgery := cboSurgery.Items[cboSurgery.ItemIndex];
+    if length(cboCollTime.ItemID) > 0 then aCollTime := cboCollTime.Items[cboCollTime.ItemIndex];
+    if Length(cboSurgery.ItemID) > 0 then
+      begin
+        aList.Clear;
+        ExtractMSBOS(aList, uVBECList);    //Get maximum units for selected Surgey
+        for i := 0 to aList.Count - 1 do
+          begin
+            if (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID)
+             and (piece(aList[i],'^',3) = cboSurgery.Text) then
+              begin
+                aMSBOS := StrToInt(piece(aList[i],'^',4));
+                if (aMSBOS > 0) and (Length(tQuantity.Text) > 0) and (StrToInt(tQuantity.Text) > aMSBOS) then
+                  begin
+                    with Application do
+                    begin
+                      NormalizeTopMosts;
+                      aMSBOSContinue :=
+                        MessageBox(PChar('The number of units ordered (' + tQuantity.Text +
+                                   ') for ' + aLabTest.TestName + ' exceeds the maximum number of units ('
+                                   + IntToStr(aMSBOS) +
+                                   ') for the ' + cboSurgery.text +
+                                   ' surgical procedure selected.' + CRLF + CRLF + 'Do you wish to continue?'),
+                                   PChar('Maximum Number of Units Exceeded'),
+                                   MB_YESNO);
+                      RestoreTopMosts;
+                    end;
+                    if aMSBOSContinue = 7 then
+                      begin
+                        ShowMsg(cboAvailComp.Text + ' has NOT been added to this request.');
+                        exit;
+                      end;
+                  end;
+              end;
+          end;
+      end;
+    if (uTNSOrders.Count < 1) then // SpecimenNeeded(aList, uVBECList, aLabTest.ItemID) then  //check to see if type and screen is needed
+      begin
+        uGetTnS := 1;
+        for i := 0 to lvSelectionList.Items.Count - 1 do
+          begin
+            if lvSelectionList.Items[i].SubItems[3] = aTypeScreen then
+              begin
+                uGetTnS := 0;
+                if length(cboUrgency.ItemID) > 0 then uDfltUrgency := cboUrgency.ItemID;
+                lblTNS.Caption := '';
+                lblTNS.Visible := false;
+                memMessage.Text := '';
+                pnlMessage.Visible := false;
+                pnlDiagnosticTests.Caption := 'Diagnostic Tests';
+                break;
+              end;
+          end;
+      end;
+    aList.Clear;
+    ExtractSpecimens(aList, uVBECList);    //Get specimen values to pass back to Server
+    for i := 0 to aList.Count - 1 do
+      begin
+        if (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID) then
+          begin
+            aSpecimen := piece(aList[i],'^',2) + '^' + aSpecimen;
+            break;
+          end;
+      end;
+    uComponentSelected := true;
+    with lvSelectionList do
+      begin
+        ListItem := Items.Add;
+        ListItem.Caption := piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',2);
+        ListItem.SubItems.Add(tQuantity.Text);
+        if length(cboModifiers.ItemID) > 0 then
+          begin
+            ListItem.SubItems.Add(cboModifiers.Items[cboModifiers.ItemIndex]);
+            ListItem.SubItems.Add(IntToStr(cboModifiers.ItemIndex));
+          end
+          else
+            begin
+              ListItem.SubItems.Add('');
+              ListItem.SubItems.Add('');
+            end;
+        ListItem.SubItems.Add(piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',1));
+      end;
+      aStr := aTestYes + '^' + IntToStr(aLabTest.TestID) + '^' + tQuantity.Text + '^' + aModifier + '^' + aSpecimen + '^' + IntToStr(aLabTest.ItemID);  //aSpecimen has 2 pieces additional pieces added for Tests
+      uSelectedItems.Add(aStr);
+      CurAdd := 1;
+      for i := 0 to uSelectedItems.Count - 1 do
+        begin
+          aName := lvSelectionList.Items[i].Caption;
+          x := uSelectedItems[i];
+          if piece(x,'^',1) = '1' then    //Diagnostic Test related fields
+            begin
+              if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+            end
+          else
+            begin
+              if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+              if Length(piece(x,'^',3)) > 0 then Responses.Update('QTY', CurAdd, piece(x,'^',3), piece(x,'^',3));
+              if Length(piece(x,'^',4)) > 0 then Responses.Update('MODIFIER', CurAdd, piece(x,'^',4), piece(x,'^',4));
+              if Length(piece(x,'^',5)) > 0 then Responses.Update('SPECSTS', CurAdd, pieces(x,'^',5,7), piece(x,'^',5));
+              if Length(cboSurgery.Text) > 0 then Responses.Update('MISC',1,cboSurgery.Text,cboSurgery.Text);
+              if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+              if Length(cboUrgency.Text) > 0 then Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text)
+                else
+                  begin
+                    cboUrgency.ItemIndex := 1;
+                    Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+                  end;
+            end;
+          Inc(CurAdd);
+        end;
+      memOrder.Text := Responses.OrderText;
+  finally
+    alist.Free;
+    aTests.Free;
+  end;
+  aMsg := '';
+  LRORDERMODE := TORDER_MODE_INFO;
+  if uGetTnS = 1 then
+    begin
+      lblTNS.Caption := 'TYPE + SCREEN must be added to order';
+      lblTNS.Visible := true;
+      memMessage.Text := 'TYPE + SCREEN must be added to order';
+      pnlMessage.Visible := true;
+      pnlDiagnosticTests.Caption := 'Diagnostic Tests*';
+    end;
+  {if uGetTnS = 1 then
+    begin
+      if responses.QuickOrder < 1 then
+        begin
+          for i := 1 to cboAvailTest.Items.Count - 1 do
+            begin
+              if piece(cboAvailTest.Items[i],'^',1) = aTypeScreen then
+                begin
+                  if piece(aSpecimen,'^',1) = '1' then
+                    begin
+                      cboCollTime.Text := calWantTime.Text;
+                      aCollSave := cboCollTime.Text + '^' + cboCollTime.ItemID + '^' + cboCollType.Text + '^' + cboCollType.ItemID;
+                      cboCollTime.Text := '';
+                      cboCollType.Text := '';
+                      uSpecimen := 1;
+                    end;
+                  cboModifiers.Text := '';
+                  cboAvailTest.SelectByID(aTypeScreen);
+                  cboTests.SelectByID(aTypeScreen);
+                  cboTestsClick(self);
+                  //cboAvailTestSelect(Self);
+                  uSpecimen := 0;
+                  cboCollTime.Text := piece(aCollSave,'^',1);
+                  cboCollType.Text := piece(aCollSave,'^',3);
+                  aCollSave := '';
+                  break;
+                end;
+            end;
+          aMsg := 'An order for Type and Screen has been added to this request' + '.';
+        end
+        else
+          begin
+            lblTNS.Caption := 'TYPE + SCREEN must be added to order';
+            lblTNS.Visible := true;
+            memMessage.Text := 'TYPE + SCREEN must be added to order';
+            memMessage.Visible := false;
+            pnlMessage.Visible := true;
+          end;
+      end;
+  if (uGetTnS = 1) then
+    begin
+      if length(aMsg) > 0 then aMsg := aMsg + crlf + crlf;
+      ShowMsg(aMsg);
+    end;  }
+  edtResults.Height := 247;
+  edtInfo.Height := 247;
+  if lvSelectionList.Items.Count > 0 then
+    begin
+      pnlSelectedTests.Visible := True;
+      cmdAccept.Visible := True;
+      memOrder.Visible := True;
+      GroupBox1.Visible := False;
+    end;
+  if tQuantity.CanFocus = true then tQuantity.SetFocus;
+end;
+
+procedure TfrmODBBank.DisableCommentPanels;
+begin
+  lblReqComment.Visible := False;
+end;
+
+procedure TfrmODBBank.DisableComponentControls;
+begin
+  lblQuantity.Enabled := false;
+  tQuantity.Enabled := false;
+  lblModifiers.Enabled := false;
+  cboModifiers.Enabled := false;
+  cboAvailComp.ItemIndex := -1;
+end;
+
+procedure TfrmODBBank.EnableComponentControls;
+begin
+  lblQuantity.Enabled := true;
+  tQuantity.Enabled := true;
+  lblModifiers.Enabled := true;
+  cboModifiers.Enabled := true;
+  if not(changing) then
+    if not(uSelUrgency = 'PRE-OP') then
+      if uSelUrgency = '' then
+        if lvSelectionList.Items.Count < 1 then
+          cboUrgency.SelectByID(IntToStr(uDfltUrgency));
+  if cboUrgency.Text = 'PRE-OP' then
+    begin
+      lblSurgery.Enabled := true;
+      cboSurgery.Enabled := true;
+      lblSurgery.Caption := 'Surgery*';
+    end
+    else
+      begin
+        lblSurgery.Enabled := false;
+        cboSurgery.Enabled := false;
+        lblSurgery.Caption := 'Surgery';
+      end;
+  lblDiagComment.Enabled := true;
+end;
+
+procedure TfrmODBBank.DisableDiagTestControls;
+begin
+  lblCollTime.Enabled := false;
+  calCollTime.Enabled := false;
+  cboCollTime.Enabled := false;
+  lblCollType.Enabled := false;
+  cboCollType.Enabled := false;
+  cmdImmedColl.Enabled := false;
+  cboAvailTest.ItemIndex := -1;
+  cboAvailTest.InitLongList('');
+end;
+
+procedure TfrmODBBank.EnableDiagTestControls;
+begin
+  lblCollTime.Enabled := true;
+  calCollTime.Enabled := true;
+  cboCollTime.Enabled := true;
+  lblCollType.Enabled := true;
+  cboCollType.Enabled := true;
+  cmdImmedColl.Enabled := true;
+  if not(changing) then
+    if not(uSelUrgency = 'PRE-OP') then
+      if uSelUrgency = '' then
+        if lvSelectionList.Items.Count < 1 then
+          cboUrgency.SelectByID(IntToStr(uDfltUrgency));
+end;
+
+procedure TfrmODBBank.LoadRequiredComment(CmtType: integer);
+begin
+  DisableCommentPanels;
+  lblReqComment.Visible := True ;
+end;
+
+procedure TfrmODBBank.DetermineCollectionDefaults(Responses: TResponses);
+var
+  RespCollect, RespStart: TResponse;
+begin
+  if ALabTest = nil then exit;
+  if ALabTest.LabSubscript = 'BB' then exit;
+  calCollTime.Clear;
+  cboCollTime.Clear;
+  calCollTime.Enabled := True;
+  lblCollTime.Enabled := True;
+  cboColltime.Enabled := True;
+  with Responses, ALabTest do
+    begin
+      RespCollect := FindResponseByName('COLLECT',1);
+      RespStart   := FindResponseByName('START'  ,1);
+      if (RespCollect <> nil) then with RespCollect do
+        begin
+          if IValue = 'LC' then
+            begin
+              if not LabCanCollect then
+                begin
+                 cboCollType.SelectByID('WC');
+                 SetupCollTimes('WC');
+                end
+              else   //  if LabCanCollect
+                begin
+                 cboCollType.SelectByID('LC');
+                 SetupCollTimes('LC');
+                 CtrlInits.SetControl(cboCollTime, 'Lab Collection Times') ;
+                 if RespStart <> nil then
+                   begin
+                     cboCollTime.SelectByID('L' + RespStart.IValue);
+                     if cboCollTime.ItemIndex < 0 then
+                       cboCollTime.Text := RespStart.IValue;
+                   end;
+                end;
+            end
+          else    //  if IValue <> 'LC'
+            begin
+              cboCollType.SelectByID(IValue) ;
+              SetupCollTimes(IValue);
+              if RespStart <> nil then
+                begin
+                  if ContainsAlpha(RespStart.IValue) then
+                    calColltime.Text := RespStart.IValue
+                  else
+                    calColltime.FMDateTime := StrToFMDateTime(RespStart.IValue);
+                end;
+            end ;
+          if IValue = 'I' then
+            if not LabCanCollect then
+              begin
+               cboCollType.SelectByID('WC');
+               SetupCollTimes('WC');
+              end
+            else
+              begin
+                calCollTime.Enabled := False;
+                if RespStart <> nil then txtImmedColl.Text := RespStart.EValue;
+              end;
+        end
+      else   // if (RespCollect = nil)
+        LoadCollType(cbocollType);
+    end;
+end;
+
+procedure TfrmODBBank.cboAvailTestExit(Sender: TObject);
+begin
+  inherited;
+  if (Length(cboAvailTest.ItemID) = 0) or (cboAvailTest.ItemID = '0') then Exit;
+  if cboAvailTest.ItemID = FLastLabID then Exit;
+  cboAvailTestSelect(cboAvailTest);
+  cboAvailTest.SetFocus;
+  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TfrmODBBank.cboAvailCompChange(Sender: TObject);
+begin
+  inherited;
+  changing := true;
+  changing := false;
+end;
+
+procedure TfrmODBBank.cboAvailCompExit(Sender: TObject);
+begin
+  inherited;
+  if (Length(cboAvailComp.ItemID) = 0) or (cboAvailComp.ItemID = '0') then Exit;
+  if cboAvailComp.ItemID = FLastLabID then Exit;
+  cboAvailCompSelect(cboAvailComp);
+  cboAvailComp.SetFocus;
+  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TfrmODBBank.cboAvailTestNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboAvailTest.ForDataUse(SubsetOfOrderItems(StartFrom, Direction, FVbecLookup));
+end;
+
+procedure TfrmODBBank.cboAvailCompNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboAvailComp.ForDataUse(SubsetOfOrderItems(StartFrom, Direction, FVbecLookup));
+end;
+
+procedure TfrmODBBank.cmdImmedCollClick(Sender: TObject);
+var
+  ImmedCollTime: string;
+begin
+  inherited;
+  ImmedCollTime := SelectImmediateCollectTime(Font.Size, txtImmedColl.Text);
+  if ImmedCollTime <> '-1' then
+    begin
+      txtImmedColl.Text := ImmedCollTime;
+      calCollTime.FMDateTime := StrToFMDateTime(ImmedCollTime);
+    end
+  else
+    begin
+      txtImmedColl.Clear;
+      calCollTime.Clear;
+    end;
+end;
+
+procedure TfrmODBBank.pgeProductChange(Sender: TObject);
+begin
+  inherited;
+  case pgeProduct.TabIndex of
+  TI_COMPONENT :     begin
+                  memOrder.Visible := true;
+                  cmdAccept.Visible := true;
+                  pnlSelectedTests.Visible := true;
+                  lvSelectionList.Width := lvSelectionList.Width + 1; //added to fix font resize issue - funky column display
+                end;
+  TI_INFO :     begin
+                  if lvSelectionList.Items.Count > 0 then
+                  begin
+                    memOrder.Visible := true;
+                    cmdAccept.Visible := true;
+                    pnlSelectedTests.Visible := true;
+                  end
+                  else
+                  begin
+                    memOrder.Visible := false;
+                    cmdAccept.Visible := false;
+                    pnlSelectedTests.Visible := false;
+                  end;
+                end;
+  TI_RESULTS :  begin
+                  if lvSelectionList.Items.Count > 0 then
+                  begin
+                    memOrder.Visible := true;
+                    cmdAccept.Visible := true;
+                    pnlSelectedTests.Visible := true;
+                  end
+                  else
+                  begin
+                    memOrder.Visible := false;
+                    cmdAccept.Visible := false;
+                    pnlSelectedTests.Visible := false;
+                  end;
+                end;
+  end; {case}
+end;
+
+procedure TfrmODBBank.cboCollTimeChange(Sender: TObject);
+var
+  CollType: string;
+const
+  TX_BAD_TIME         = ' is not a routine lab collection time.' ;
+  TX_BAD_TIME_CAP     = 'Invalid Time';
+begin
+  CollType := 'LC';
+  with cboCollTime do
+    begin
+      if ItemID = 'LO' then
+        begin
+          ItemIndex := -1;
+          Text := GetFutureLabTime(FMToday);
+        end;
+    end;
+  cboCollType.SelectByID(CollType);
+  if uSelectedItems.Count > 0 then
+    begin
+      with cboCollTime do
+        if Length(ItemID) > 0 then
+          begin
+            Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+            FLastLabCollTime := ItemID + U + Text;
+          end
+        else if Length(Text) > 0 then
+          begin
+            Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+            FLastLabCollTime := ValidCollTime(Text);
+          end;
+    end;
+end;
+
+procedure TfrmODBBank.cboCollTypeChange(Sender: TObject);
+begin
+  if (ALabTest = nil) or Changing or (cboCollType.ItemID = '') then exit;
+  if (cboCollType.ItemID = 'I') and (not ALabTest.LabCanCollect) then
+    begin
+      InfoBox(TX_NO_IMMED, TX_NO_IMMED_CAP, MB_OK or MB_ICONWARNING);
+      cboCollType.ItemIndex := -1;
+      Exit;
+    end;
+  if cboCollType.ItemID = 'I' then
+  begin
+    cboCollTime.ItemIndex := -1;
+    cboCollTime.Text := 'NOW';
+    calCollTime.Text := 'NOW';
+  end;
+  SetupCollTimes(cboCollType.ItemID);
+  if Length(cboCollType.Text) > 0 then Responses.Update('COLLECT',1,cboCollType.ItemID,cboCollType.ItemID);
+  FLastCollType := cboCollType.ItemID;
+  calCollTimeChange(self);
+end;
+
+procedure TfrmODBBank.cboModifiersChange(Sender: TObject);
+var
+  i: integer;
+  ListItem: TListItem;
+  x,q,m: string;
+begin
+  inherited;
+  if changing = true then Exit;
+  if (cboAvailComp.ItemIndex <> -1) and (uSelectedItems.Count > 0) then
+    begin
+      for i := 0 to lvSelectionList.Items.Count - 1 do
+        begin
+          x := uSelectedItems[i];
+          m := piece(x,'^',4);
+          q := piece(x,'^',3);
+          if lvSelectionList.Items[i].Caption = piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',2) then
+            begin
+              ListItem := lvSelectionList.Items[i];
+              ListItem.SubItems.Clear;
+              ListItem.SubItems.Add(q);
+              if length(cboModifiers.ItemID) > 0 then
+                begin
+                  ListItem.SubItems.Add(cboModifiers.Items[cboModifiers.ItemIndex]);
+                  ListItem.SubItems.Add(IntToStr(cboModifiers.ItemIndex));
+                end
+                else
+                  begin
+                    ListItem.SubItems.Add('');
+                    ListItem.SubItems.Add('');
+                  end;
+              ListItem.SubItems.Add(piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',1));
+              Responses.Update('MODIFIER', (i+1), cboModifiers.Text, cboModifiers.Text);
+              Break;
+            end;
+        end;
+    end;
+  if Length(cboModifiers.Text) > 0 then
+    begin
+      memOrder.Text := Responses.OrderText;
+    end;
+end;
+
+procedure TfrmODBBank.LoadModifiers(AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  with AComboBox do
+    begin
+      Clear;
+      for i := 0 to uModifierList.Count - 1 do
+           Items.Add(uModifierList[i]);
+    end;
+end;
+
+procedure TfrmODBBank.LoadReasons(AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  with AComboBox do
+    begin
+      Clear;
+      for i := 0 to uReasonsList.Count - 1 do
+           Items.Add(uReasonsList[i]);
+    end;
+end;
+
+procedure TfrmODBBank.LoadUrgencies(AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  with AComboBox do
+    begin
+      Clear;
+      for i := 0 to uUrgencyList.Count - 1 do
+         if (piece(uUrgencyList[i],'^',2) = 'STAT') and (StatAllowed(Patient.DFN) = false) then
+           Continue
+         else
+           Items.Add(uUrgencyList[i]);
+    end;
+end;
+
+procedure TfrmODBBank.lvSelectionListClick(Sender: TObject);
+var
+  ListItem: TListItem;
+  x,y: string;
+  i,j: integer;
+begin
+  inherited;
+  if lvSelectionList.Selected = nil then Exit;
+  ListItem := lvSelectionList.Selected;
+  changing := true;
+  tQuantity.Text := '';
+  cboModifiers.ItemIndex := -1;
+  i := lvSelectionList.ItemIndex;
+  j := 0;
+  if cboCollType.ItemID = 'LC' then
+    begin
+      if FLastLabCollTime <> '' then
+        cboCollTime.SelectByID(piece(FLastLabCollTime,'^',1));
+    end
+  else
+    begin
+      if FLastCollTime = 'TODAY' then
+        calCollTime.Text := FLastCollTime
+      else if FLastCollTime = 'NOW' then
+        calCollTime.Text := FLastCollTime
+      else if FLastCollTime <> '' then
+        calCollTime.Text := FormatFMDateTime('mmm dd,yyyy@hh:nn',StrToFMDateTime(FLastCollTime));
+    end;
+  if FLastCollType <> '' then
+    cboCollType.SelectByID(FLastCollType);
+  if uSelectedItems.Count > 0 then
+    begin
+      x := uSelectedItems[i];
+      ALabTest := TLabTest.Create(piece(uSelectedItems[i],'^',2), Responses);
+      if not(piece(x,'^',2) = '') then j := StrToInt(piece(x,'^',2));
+      if not(piece(x,'^',1) = '1') and (j > 0) then //Components
+        begin
+          DisableDiagTestControls;
+          EnableComponentControls;
+          y := ListItem.SubItems[2];
+          changing := true;
+          cboModifiers.Text := '';
+          cboAvailComp.SelectByIEN(j);
+          tQuantity.Text := ListItem.SubItems[0];
+          changing := false;
+          if y <> '' then cboModifiers.ItemIndex := StrToInt(y);
+        end
+      else                            //Diagnostic Tests
+        begin
+          DisableComponentControls;
+          EnableDiagTestControls;
+          cboAvailTest.SelectByIEN(j);
+        end;
+    end;
+  changing := false;
+end;
+
+procedure TfrmODBBank.memDiagCommentChange(Sender: TObject);
+begin
+  inherited;
+  if (length(memDiagComment.Text) > 250) then
+    begin
+      ShowMsg('COMMENT cannot be longer than 250 characters');
+      memDiagComment.Text := Copy(memDiagComment.Text,0,250);
+      Exit;
+    end;
+  if lvSelectionList.Items.Count < 1 then Exit;
+
+  if uSelectedItems = nil then Exit;
+  
+  if uSelectedItems.Count > 0 then
+    Responses.Update('COMMENT',1,memDiagComment.Text,memDiagComment.Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODBBank.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  uSelectedItems.Free;
+  uVBECList.Free;
+  uTestsForResults.Free;
+  uUrgencyList.Free;
+  uTNSOrders.Free;
+  uModifierList.Free;
+  uReasonsList.Free;
+  uRaw.Free;
+end;
+
+procedure TfrmODBBank.btnRemoveClick(Sender: TObject);
+var
+  i,j,curAdd: integer;
+  x, aName, aModifier, aReason, aTypeScreen: string;
+  aList: TStringList;
+  aSel, aSelTst : boolean;
+begin
+  inherited;
+  aList := TStringList.Create;
+  try
+    curAdd := 1;
+    aModifier := '';
+    aReason := '';
+    aTypeScreen := '';
+    aSel := false;
+    aSelTst := false;
+    ExtractTypeScreen(aList, uVBECList);
+    if aList.Count > 0 then aTypeScreen := aList[0];
+    aList.Clear;
+    if length(cboModifiers.ItemID) > 0 then aModifier := cboModifiers.Items[cboModifiers.ItemIndex];
+    if length(cboReasons.ItemID) > 0 then aReason := cboReasons.Items[cboReasons.ItemIndex];
+    if lvSelectionList.Items.Count < 1 then
+      begin
+        ShowMsg('There is nothing in the list to remove.');
+        exit;
+      end;
+    cboAvailComp.ItemIndex := -1;
+    tQuantity.Text := '';
+    cboAvailTest.ItemIndex := -1;
+    uGetTnS := 0;
+    lblTNS.Caption := '';
+    lblTNS.Visible := false;
+    memMessage.Text := '';
+    pnlMessage.Visible := false;
+    pnlDiagnosticTests.Caption := 'Diagnostic Tests';
+    with lvSelectionList do
+      begin
+        for i := lvSelectionList.Items.Count - 1 downto 0 do
+          begin
+            if lvSelectionList.Items[i].Selected = true then
+              begin
+                aSel := true;
+                for j := uSelectedItems.Count - 1 downto 0 do
+                  if lvSelectionList.Items[i].SubItems[3] = piece(uSelectedItems[j],'^',2) then
+                    begin
+                      {if (uGetTnS = 1) and (lvSelectionList.Items[i].SubItems[3] = aTypeScreen) then
+                        begin
+                          uGetTnS := 1;
+                          lblTNS.Caption := 'TYPE+SCREEN must be added to order';
+                          lblTNS.Visible := true;
+                          memMessage.Text := 'TYPE + SCREEN must be added to order';
+                          //memMessage.Visible := true;
+                          pnlMessage.Visible := true;
+                          pnlDiagnosticTests.Caption := 'Diagnostic Tests*';
+                        end; }
+                      uSelectedItems.Delete(j);
+                      lvSelectionList.Items[i].Delete;
+                      break;
+                    end;
+              end;
+          end;
+      end;
+    for i := uSelectedItems.Count - 1 downto 0 do
+      begin
+        if (not(piece(uSelectedItems[i],'^',1) = '1')) and (uTNSOrders.Count < 1) then // and (SpecimenNeeded(aList, uVBECList, StrToInt(piece(uSelectedItems[i],'^',9)))) then
+          begin
+            uGetTnS := 1;
+            lblTNS.Caption := 'TYPE+SCREEN must be added to order';
+            lblTNS.Visible := true;
+            memMessage.Text := 'TYPE + SCREEN must be added to order';
+            //memMessage.Visible := true;
+            pnlMessage.Visible := true;
+            pnlDiagnosticTests.Caption := 'Diagnostic Tests*';
+            break;
+          end;
+      end;
+      
+    if (aSel = false) and (lvSelectionList.Items.Count > 0) then
+      begin
+        ShowMsg('Please select an item from the list to be removed.');
+        exit;
+      end;
+    Responses.Clear;
+    if lvSelectionList.Items.Count < 1 then
+      begin
+        cboReasons.ItemIndex := -1;
+        memDiagComment.Text := '';
+        cboSurgery.ItemIndex := -1;
+        cboUrgency.ItemIndex := -1;
+        cboCollType.ItemIndex := -1;
+        cboCollTime.ItemIndex := -1;
+        cboQuick.ItemIndex := -1;
+        calCollTime.Text := '';
+      end;
+    for i := 0 to uSelectedItems.Count - 1 do
+      begin
+        aName := lvSelectionList.Items[i].Caption;
+        x := uSelectedItems[i];
+        if piece(x,'^',1) = '1' then    //Diagnostic Test related fields
+          begin
+            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+            aSelTst := true;
+          end
+        else
+          begin
+            if Length(piece(x,'^',2)) > 0 then Responses.Update('ORDERABLE', CurAdd, piece(x,'^',2), aName);
+            if Length(piece(x,'^',3)) > 0 then Responses.Update('QTY', CurAdd, piece(x,'^',3), piece(x,'^',3));
+            if Length(piece(x,'^',4)) > 0 then Responses.Update('MODIFIER', CurAdd, piece(x,'^',4), aModifier);
+            if Length(piece(x,'^',5)) > 0 then Responses.Update('SPECSTS', CurAdd, pieces(x,'^',5,7), piece(x,'^',5));
+            cboModifiers.ItemIndex := -1;
+            cboAvailComp.ItemIndex := -1;
+            tQuantity.Text := '';
+          end;
+        Inc(CurAdd);
+      end;
+    if aSelTst = false then
+      begin
+        cboCollType.ItemIndex := -1;
+        cboCollTime.ItemIndex := -1;
+        calCollTime.Text := '';
+      end;
+    if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+    if cboCollType.ItemID = 'LC' then
+      begin
+        with cboCollTime do
+          if Length(ItemID) > 0 then
+            begin
+              Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+              FLastLabCollTime := ItemID + U + Text;
+            end
+          else if Length(Text) > 0 then
+            begin
+              Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+              FLastLabCollTime := ValidCollTime(Text);
+            end;
+      end
+    else
+      begin
+        with calCollTime do
+          if FMDateTime > 0 then
+            begin
+              Responses.Update('START', 1, ValidCollTime(Text), Text);
+              FLastColltime := ValidCollTime(Text);
+            end
+          else
+            begin
+              Responses.Update('START', 1, '', '') ;
+              FLastCollTime := '';
+            end;
+      end;
+    with cboCollType do if Length(ItemID) > 0 then
+      begin
+        Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+        FLastCollType := ItemID;
+      end;
+    if Length(cboUrgency.Text) > 0 then Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+    if Length(memDiagComment.Text) > 0 then Responses.Update('COMMENT',1,memDiagComment.Text,memDiagComment.Text);
+    if Length(cboSurgery.Text) > 0 then Responses.Update('MISC',1,cboSurgery.Text,cboSurgery.Text);
+    if Length(cboReasons.Text) > 0 then Responses.Update('REASON',1,cboReasons.Text,cboReasons.Text);
+    if chkConsent.Checked = true then Responses.Update('YN',1,'1','Yes');
+    memOrder.Text := Responses.OrderText;
+    CurAdd := 1;
+    if uRaw.Count > 0 then
+      for j := 0 to uRaw.Count - 1 do
+        begin
+          if Length(uRaw[j]) > 0 then Responses.Update('RESULTS', CurAdd, uRaw[j], piece(uRaw[j],'^',1));
+          Inc(CurAdd);
+        end;
+    if uSelectedItems.Count < 1 then
+      begin
+        uGetTnS := 0;
+        lblTNS.Caption := '';
+        lblTNS.Visible := false;
+        memMessage.Text := '';
+        pnlMessage.Visible := false;
+        GroupBox1.Visible := true;
+        pnlDiagnosticTests.Caption := 'Diagnostic Tests';
+      end;
+  finally
+    aList.Free;
+  end;
+end;
+
+procedure TfrmODBBank.btnUpdateCommentsClick(Sender: TObject);
+begin
+  inherited;
+  pnlComments.Visible := false;
+  pnlComments.SendToBack;
+  Responses.Update('COMMENT',1,memDiagComment.Text,memDiagComment.Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODBBank.btnCancelCommentClick(Sender: TObject);
+begin
+  inherited;
+  pnlComments.Visible := false;
+  pnlComments.SendToBack;
+end;
+
+procedure TfrmODBBank.btnRemoveAllClick(Sender: TObject);
+begin
+  inherited;
+  if lvSelectionList.Items.Count < 1 then
+    begin
+      ShowMsg('There is nothing in the list to remove.');
+      exit;
+    end;
+  lvSelectionList.Clear;
+  uSelectedItems.Clear;
+  uTestsForResults.Clear;
+  uRaw.Clear;
+  uGetTnS := 0;
+  lblTNS.Caption := '';
+  lblTNS.Visible := false;
+  memMessage.Text := '';
+  pnlMessage.Visible := false;
+  InitDialog;
+  cboModifiers.ItemIndex := -1;
+  cboAvailTest.ItemIndex := -1;
+  cboAvailComp.ItemIndex := -1;
+  cboSurgery.ItemIndex := -1;
+  cboUrgency.ItemIndex := -1;
+  cboReasons.ItemIndex := -1;
+  cboCollType.ItemIndex := -1;
+  cboCollTime.ItemIndex := -1;
+  cboQuick.ItemIndex := -1;
+  calWantTime.Text := '';
+  memDiagComment.Text := '';
+  GroupBox1.Visible := true;
+  tQuantity.Text := '';
+  FLastCollType := '';
+  FLastCollTime := '';
+  FLastLabCollTime := '';
+  txtImmedColl.Text := '';
+end;
+
+procedure TfrmODBBank.cmdAcceptClick(Sender: TObject);
+var
+  i: integer;
+  Comp: boolean;
+const
+  Txt1 = 'This order can not be saved for the following reason(s):';
+  Txt2 = #13+#13+'An order for TYPE and SCREEN must be created with this order set.';
+begin
+  if not ValidAdd then Exit;
+  if uGetTnS = 1 then
+    begin
+      MessageDlg(Txt1+Txt2, mtWarning,[mbOK],0);
+      Exit;
+    end;
+  Comp := false;
+  if uSelectedItems.Count > 0 then
+    begin
+      for i := 0 to uSelectedItems.Count - 1 do
+        if not (piece(uSelectedItems[i],'^',1) = '1') then
+          begin
+            Comp := true;
+            Break;
+          end;
+    end;
+  if Comp = true then
+    begin
+      if NursAdminSuppress = true then
+        ShowMsg('The nursing blood administration order must be entered separately' + '.');
+    end;
+  inherited;
+end;
+
+procedure TfrmODBBank.calWantTimeChange(Sender: TObject);
+begin
+  inherited;
+  if uSelectedItems.Count > 0 then
+    begin
+      with calWantTime do if not Changing then
+        begin
+          if FMDateTime = 0 then
+            begin
+              ShowMsg('Invalid Date/Time entered');
+              Changing := true;
+              calWantTime.Text := '';
+              Changing := false;
+              Exit;
+            end
+          else
+            begin
+              // date/time was entered
+              if (UpperCase(Text) <> 'NOW') and not(Trunc(FMNow) = Trunc(FMDateTime)) and (FMDateTime < FMNow) then
+                begin
+                  ShowMsg('Date/Time Wanted must be a future Date/Time');
+                  Changing := true;
+                  calWantTime.Text := '';
+                  Changing := false;
+                  Exit;
+                end;
+            end;
+        end;
+      if Length(calWantTime.Text) > 0 then Responses.Update('DATETIME',1,ValidCollTime(calWantTime.Text),calWantTime.Text);
+      memOrder.Text := Responses.OrderText;
+    end;
+end;
+
+procedure TfrmODBBank.chkConsentClick(Sender: TObject);
+begin
+  inherited;
+  if uSelectedItems.Count > 0 then
+    begin
+      if chkConsent.Checked = true then Responses.Update('YN',1,'1','Yes');
+      memOrder.Text := Responses.OrderText;
+    end;
+end;
+
+procedure TfrmODBBank.cboUrgencyChange(Sender: TObject);
+begin
+  inherited;
+  if Length(cboUrgency.Text) > 0 then
+    begin
+      Responses.Update('URGENCY',1,cboUrgency.ItemID,cboUrgency.Text);
+      uSelUrgency := cboUrgency.Text;
+      if cboUrgency.Text = 'PRE-OP' then
+        begin
+          lblSurgery.Enabled := true;
+          cboSurgery.Enabled := true;
+          lblSurgery.Caption := 'Surgery*';
+        end
+      else
+        begin
+          lblSurgery.Enabled := false;
+          cboSurgery.Enabled := false;
+          lblSurgery.Caption := 'Surgery';
+          cboSurgery.ItemIndex := -1;
+          Responses.Update('MISC',1,cboSurgery.Text,cboSurgery.Text);
+        end;
+    end
+  else
+    cboUrgency.SelectByID(IntToStr(uDfltUrgency));
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODBBank.cboUrgencyExit(Sender: TObject);
+begin
+  inherited;
+  if Length(cboUrgency.Text) < 1 then
+    cboUrgency.SelectByID(IntToStr(uDfltUrgency));
+end;
+
+procedure TfrmODBBank.cboSurgeryChange(Sender: TObject);
+var
+  aList: TStringList;
+  i,j,aMSBOS,aMSBOSContinue: integer;
+  x: string;
+  handled: boolean;
+begin
+  inherited;
+  aList := TStringList.Create;
+  handled := false;
+  try
+    if (Length(cboSurgery.ItemID) > 0) and (Length(tQuantity.Text) > 0) then
+      begin
+        aList.Clear;
+        ExtractMSBOS(aList, uVBECList);    //Get maximum units for selected Surgey
+        for i := 0 to aList.Count - 1 do
+          begin
+            if (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID)
+             and (piece(aList[i],'^',3) = cboSurgery.Text) then
+              begin
+                aMSBOS := StrToInt(piece(aList[i],'^',4));
+                if (aMSBOS > 0) and (StrToInt(tQuantity.Text) > aMSBOS) then
+                  begin
+                    with Application do
+                    begin
+                      NormalizeTopMosts;
+                      aMSBOSContinue :=
+                        MessageBox(PChar('The number of unit Quantity selected (' + tQuantity.Text +
+                                   ') for ' + aLabTest.TestName + ' exceeds the maximum number of units ('
+                                   + IntToStr(aMSBOS) +
+                                   ') for the ' + cboSurgery.text +
+                                   ' surgical procedure selected.' + CRLF + CRLF + 'Continue to order ' + tQuantity.Text + ' units?'),
+                                   PChar('Maximum Number of Units Exceeded'),
+                                   MB_YESNO);
+                      RestoreTopMosts;
+                    end;
+                    if aMSBOSContinue = 7 then
+                      begin
+                        ShowMsg('Please enter a new quantity for ' + cboAvailComp.Text);
+                        tQuantity.Text := '0';
+                        tQuantity.SelLength := 2;
+                        tQuantity.SelectAll;
+                        break;
+                      end;
+                  end;
+                handled := true;
+                break;
+              end;
+          end;
+      end;
+    if (handled = false) and (Length(cboSurgery.ItemID) > 0) and (uSelectedItems.Count > 0) then
+      begin
+        aList.Clear;
+        ExtractMSBOS(aList, uVBECList);    //Get maximum units for selected Surgey
+        for j := 0 to uSelectedItems.Count - 1 do
+          begin
+            ALabTest := TLabTest.Create(piece(uSelectedItems[j],'^',2), Responses);
+            for i := 0 to aList.Count - 1 do
+              begin
+                if (piece(uSelectedItems[j],'^',1) = '0')
+                 and (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID)
+                 and (piece(aList[i],'^',3) = cboSurgery.Text) then
+                  begin
+                    aMSBOS := StrToInt(piece(aList[i],'^',4));
+                    if (aMSBOS > 0) and (length(piece(uSelectedItems[j],'^',3)) > 0) and (StrToInt(piece(uSelectedItems[j],'^',3)) > aMSBOS) then
+                      begin
+                        with Application do
+                        begin
+                          NormalizeTopMosts;
+                          aMSBOSContinue :=
+                            MessageBox(PChar('The number of unit Quantity selected (' + piece(uSelectedItems[j],'^',3) +
+                               ') for ' + lvSelectionList.Items[j].Caption + ' exceeds the maximum number of units ('
+                               + IntToStr(aMSBOS) +
+                               ') for the ' + cboSurgery.text +
+                               ' surgical procedure selected.' + CRLF + CRLF + 'Continue to order ' + piece(uSelectedItems[j],'^',3) + ' units?'),
+                               PChar('Maximum Number of Units Exceeded'),
+                               MB_YESNO);
+                          RestoreTopMosts;
+                        end;
+                        if aMSBOSContinue = 7 then
+                          begin
+                            ShowMsg('Please enter a new quantity for ' + lvSelectionList.Items[j].Caption);
+                            tQuantity.Text := '0';
+                            tQuantity.SelLength := 2;
+                            tQuantity.SelectAll;
+                            x := uSelectedItems[j];
+                            SetPiece(x,U,3,'');
+                            uSelectedItems[j] := x;
+                            lvSelectionList.Items[j].SubItems[0] := '';
+                            RePaint;
+                            break;
+                          end;
+                      end;
+                    break;
+                  end;
+              end;
+          end;
+      end;
+    if uSelectedItems.Count > 0 then
+      if Length(cboSurgery.Text) > 0 then
+        Responses.Update('MISC',1,cboSurgery.Text,cboSurgery.Text);
+    uSelSurgery := 0;
+    if Length(cboSurgery.Text) > 0 then
+      begin
+        if length(cboSurgery.ItemID) > 0 then uSelSurgery := cboSurgery.ItemID;
+        cboReasons.Text := cboSurgery.Text;
+        Responses.Update('REASON',1,cboReasons.Text,cboReasons.Text);
+      end;
+    memOrder.Text := Responses.OrderText; 
+    finally
+      aList.Free;
+    end;
+end;
+
+procedure TfrmODBBank.cboSurgeryClick(Sender: TObject);
+begin
+  inherited;
+  if Length(cboSurgery.Text) > 0 then uSelSurgery := cboSurgery.ItemID;
+end;
+
+procedure TfrmODBBank.tQuantityChange(Sender: TObject);
+var
+  aList: TStringList;
+  i,aMSBOS,aMSBOSContinue: integer;
+  ListItem: TListItem;
+  x,m: string;
+begin
+  inherited;
+  if changing = true then Exit;
+  aList := TStringList.Create;
+  if Length(tQuantity.Text) > 0 then
+    begin
+      if Length(tQuantity.Text) > 2 then
+        begin
+          ShowMsg('Invalid entry. Please select a numeric value <100');
+          tQuantity.Text := '';
+          Exit;
+        end;
+      if StrToInt(tQuantity.Text) > 100 then
+        begin
+          ShowMsg('Quantity too high. Please select a value <100');
+          tQuantity.Text := Copy(tQuantity.Text,0,1);
+          Exit;
+        end;
+    end;
+  try
+    if (Length(cboSurgery.ItemID) > 0) and (Length(tQuantity.Text) > 0) then
+      begin
+        aList.Clear;
+        ExtractMSBOS(aList, uVBECList);    //Get maximum units for selected Surgery
+        for i := 0 to aList.Count - 1 do
+          begin
+            if (StrToInt(piece(aList[i],'^',1)) = aLabTest.ItemID)
+             and (piece(aList[i],'^',3) = cboSurgery.Text) then
+              begin
+                aMSBOS := StrToInt(piece(aList[i],'^',4));
+                if (aMSBOS > 0) and (StrToInt(tQuantity.Text) > aMSBOS) then
+                  begin
+                    with Application do
+                    begin
+                      NormalizeTopMosts;
+                      aMSBOSContinue :=
+                        MessageBox(PChar('The number of units ordered (' + tQuantity.Text +
+                                   ') for ' + aLabTest.TestName + ' exceeds the maximum number of units ('
+                                   + IntToStr(aMSBOS) +
+                                   ') for the ' + cboSurgery.text +
+                                   ' surgical procedure selected.' + CRLF + CRLF + 'Do you wish to continue?'),
+                                   PChar('Maximum Number of Units Exceeded'),
+                                   MB_YESNO);
+                      RestoreTopMosts;
+                    end;
+                    if aMSBOSContinue = 7 then
+                      begin
+                        ShowMsg('Please enter a new quantity for ' + cboAvailComp.Text);
+                        tQuantity.Text := '0';
+                        tQuantity.SelLength := 2;
+                        tQuantity.SelectAll;
+                        break;
+                      end;
+                  end;
+                break;
+              end;
+          end;
+      end;
+    if (cboAvailComp.ItemIndex <> -1) and (uSelectedItems.Count > 0) then
+      for i := 0 to lvSelectionList.Items.Count - 1 do
+        begin
+          if lvSelectionList.Items[i].Caption = piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',2) then
+            begin
+              x := uSelectedItems[i];
+              m := piece(x,'^',4);
+              ListItem := lvSelectionList.Items[i];
+              ListItem.SubItems.Clear;
+              ListItem.SubItems.Add(tQuantity.Text);
+              SetPiece(x,U,3,tQuantity.Text);
+              Responses.Update('QTY', (i+1), tQuantity.Text, tQuantity.Text);
+              uSelectedItems[i] := x;
+              if length(cboModifiers.ItemID) > 0 then
+                begin
+                  ListItem.SubItems.Add(cboModifiers.Items[cboModifiers.ItemIndex]);
+                  ListItem.SubItems.Add(IntToStr(cboModifiers.ItemIndex));
+                end
+                else
+                  begin
+                    ListItem.SubItems.Add('');
+                    ListItem.SubItems.Add('');
+                  end;
+
+              ListItem.SubItems.Add(piece(cboAvailComp.Items[cboAvailComp.ItemIndex],'^',1));
+              Break;
+            end;
+        end;
+    if Length(tQuantity.Text) > 0 then
+      begin
+        memOrder.Text := Responses.OrderText;
+      end;
+  finally
+    aList.Free;
+  end;
+end;
+
+procedure TfrmODBBank.tQuantityClick(Sender: TObject);
+begin
+  inherited;
+  tQuantity.SelLength := 2;
+  tQuantity.SelectAll;
+end;
+
+procedure TfrmODBBank.tQuantityEnter(Sender: TObject);
+begin
+  inherited;
+  tQuantity.SelLength := 2;
+  tQuantity.SelectAll;
+end;
+
+procedure TfrmODBBank.calCollTimeChange(Sender: TObject);
+begin
+  inherited;
+  if uSelectedItems.Count > 0 then
+    begin
+      if cboCollType.ItemID = 'LC' then
+        begin
+          with cboCollTime do
+            if Length(ItemID) > 0 then
+              begin
+                Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+                FLastLabCollTime := ItemID + U + Text;
+              end
+            else if Length(Text) > 0 then
+              begin
+                Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+                FLastLabCollTime := ValidCollTime(Text);
+              end;
+        end
+      else
+        begin
+          with calCollTime do
+            if FMDateTime > 0 then
+              begin
+                Responses.Update('START', 1, ValidCollTime(Text), Text);
+                FLastColltime := ValidCollTime(Text);
+              end
+            else
+              begin
+                Responses.Update('START', 1, '', '') ;
+                FLastCollTime := '';
+              end;
+        end;
+      memOrder.Text := Responses.OrderText;
+    end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBase.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBase.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBase.dfm	(revision 1676)
@@ -0,0 +1,115 @@
+inherited frmODBase: TfrmODBase
+  Left = 277
+  Top = 179
+  Width = 528
+  Height = 275
+  HorzScrollBar.Range = 500
+  HorzScrollBar.Tracking = True
+  HorzScrollBar.Visible = True
+  VertScrollBar.Range = 225
+  VertScrollBar.Visible = True
+  BorderIcons = [biSystemMenu]
+  Caption = ''
+  FormStyle = fsStayOnTop
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnKeyPress = FormKeyPress
+  ExplicitWidth = 528
+  ExplicitHeight = 275
+  PixelsPerInch = 96
+  TextHeight = 13
+  object memOrder: TCaptionMemo [0]
+    Left = 6
+    Top = 194
+    Width = 430
+    Height = 48
+    TabStop = False
+    Color = clCream
+    Ctl3D = True
+    ParentCtl3D = False
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 0
+    Caption = 'Order'
+  end
+  object cmdAccept: TButton [1]
+    Left = 442
+    Top = 194
+    Width = 72
+    Height = 21
+    Caption = 'Accept Order'
+    TabOrder = 1
+    OnClick = cmdAcceptClick
+  end
+  object cmdQuit: TButton [2]
+    Left = 442
+    Top = 221
+    Width = 39
+    Height = 21
+    Cancel = True
+    Caption = 'Quit'
+    TabOrder = 2
+    OnClick = cmdQuitClick
+  end
+  object pnlMessage: TPanel [3]
+    Left = 24
+    Top = 176
+    Width = 381
+    Height = 44
+    BevelInner = bvRaised
+    BorderStyle = bsSingle
+    TabOrder = 3
+    Visible = False
+    OnExit = pnlMessageExit
+    OnMouseDown = pnlMessageMouseDown
+    OnMouseMove = pnlMessageMouseMove
+    object imgMessage: TImage
+      Left = 4
+      Top = 4
+      Width = 32
+      Height = 32
+      OnMouseUp = memMessageMouseUp
+    end
+    object memMessage: TRichEdit
+      Left = 40
+      Top = 4
+      Width = 332
+      Height = 32
+      Color = clInfoBk
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clInfoText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 0
+      WantReturns = False
+      OnMouseDown = pnlMessageMouseDown
+      OnMouseMove = pnlMessageMouseMove
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODBase'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBase.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBase.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODBase.pas	(revision 1676)
@@ -0,0 +1,1857 @@
+unit fODBase;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, fAutoSz, StdCtrls,
+  ORCtrls, ORFn, uConst, rOrders, rODBase, uCore, ComCtrls, ExtCtrls, Menus, Mask,
+  Buttons, UBAGlobals, UBACore, VA508AccessibilityManager;
+
+type
+  TCtrlInit = class
+  private
+    Name:   string;
+    Text:   string;
+    ListID: string;
+    List:   TStringList;
+  public
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+  TCtrlInits = class
+  private
+    FDfltList: TList;
+    FOIList:   TList;
+    procedure ExtractInits(Src: TStrings; Dest: TList);
+    function FindInitByName(const AName: string): TCtrlInit;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure ClearOI;
+    function DefaultText(const ASection: string): string;
+    procedure LoadDefaults(Src: TStrings);
+    procedure LoadOrderItem(Src: TStrings);
+    procedure SetControl(AControl: TControl; const ASection: string);
+    procedure SetListOnly(AControl: TControl; const ASection: string);
+    procedure SetPopupMenu(AMenu: TPopupMenu; AClickEvent: TNotifyEvent; const ASection: string);
+    function TextOf(const ASection: string): string;
+  end;
+
+  TResponses = class
+  private
+    FDialog: string;
+    FResponseList: TList;
+    FPrompts: TList;
+    FCopyOrder: string;
+    FEditOrder: string;
+    FTransferOrder: string;
+    FDisplayGroup: Integer;
+    FQuickOrder: Integer;
+    FOrderChecks: TStringList;
+    FVarLeading:  string;
+    FVarTrailing: string;
+    FEventType: Char;
+    FEventIFN: Integer;
+    FEventName: string;
+    FSpecialty: Integer;
+    FEffective: TFMDateTime;
+    FParentEvent: TParentEvent;
+    FLogTime:   TFMDateTime;
+    FViewName: string;
+    FCancel: boolean;
+    FOrderContainsObjects: boolean;
+    function FindResponseByIEN(APromptIEN, AnInstance: Integer): TResponse;
+    function GetOrderText: string;
+    function IENForPrompt(const APromptID: string): Integer;
+    procedure SetDialog(Value: string);
+    procedure SetCopyOrder(const AnID: string);
+    procedure SetEditOrder(const AnID: string);
+    procedure SetQuickOrder(AnIEN: Integer);
+    procedure SetQuickOrderByID(const AnID: string);
+    procedure FormatResponse(var FormattedText: string; var ExcludeText: Boolean;
+              APrompt: TPrompt; const x: string; AnInstance: Integer);
+    function FindPromptByIEN(AnIEN: Integer): TPrompt;
+    procedure AppendChildren(var ParentText: string; ChildPrompts: string; AnInstance: Integer);
+    procedure BuildOCItems(AList: TStringList; var AStartDtTm: string; const AFillerID: string);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Clear; overload;
+    procedure Clear(const APromptID: string; SaveInstance: Integer = 0); overload;
+    function EValueFor(const APromptID: string; AnInstance: Integer): string;
+    function GetIENForPrompt(const APromptID: string): Integer;
+    function FindResponseByName(const APromptID: string; AnInstance: Integer): TResponse;
+    function PromptExists(const APromptID: string):boolean;
+    function InstanceCount(const APromptID: string): Integer;
+    function IValueFor(const APromptID: string; AnInstance: Integer): string;
+    function NextInstance(const APromptID: string; LastInstance: Integer): Integer;
+    function OrderCRC: string;
+    procedure Remove(const APromptID: string; AnInstance: Integer);
+    procedure SaveQuickOrder(var ANewIEN: Integer; const ADisplayName: string);
+    procedure SaveOrder(var AnOrder: TOrder; DlgIEN: Integer; IsIMOOrder: boolean = False);
+    procedure SetControl(AControl: TControl; const APromptID: string; AnInstance: Integer);
+    procedure SetEventDelay(AnEvent: TOrderDelayEvent);
+    procedure SetPromptFormat(const APromptID, NewFormat: string);
+    procedure Update(const APromptID: string; AnInstance: Integer;
+      const AnIValue, AnEValue: string);
+    property Dialog: string            read FDialog         write SetDialog;
+    property DisplayGroup: Integer     read FDisplayGroup   write FDisplayGroup;
+    property CopyOrder:    string      read FCopyOrder      write SetCopyOrder;
+    property EditOrder:    string      read FEditOrder;  //  write SetEditOrder;
+    property TransferOrder:string      read FTransferOrder  write FTransferOrder;
+    property EventType:    Char        read FEventType;
+    property EventIFN:     integer     read FEventIFN       write FEventIFN;
+    property EventName:    string      read FEventName      write FEventName;
+    property LogTime:      TFMDateTime read FLogTime        write FLogTime;
+    property QuickOrder:   Integer     read FQuickOrder     write SetQuickOrder;
+    property OrderChecks:  TStringList read FOrderChecks    write FOrderChecks;
+    property OrderText:    string      read GetOrderText;
+    property VarLeading:   string      read FVarLeading     write FVarLeading;
+    property VarTrailing:  string      read FVarTrailing    write FVarTrailing;
+    property TheList:      TList       read FResponseList   write FResponseList;
+    property Cancel:       boolean     read FCancel         write FCancel;
+    property OrderContainsObjects: boolean read FOrderContainsObjects write FOrderContainsObjects;
+  end;
+
+  TCallOnExit = procedure;
+
+  TfrmODBase = class(TfrmAutoSz)
+    memOrder: TCaptionMemo;
+    cmdAccept: TButton;
+    cmdQuit: TButton;
+    pnlMessage: TPanel;
+    imgMessage: TImage;
+    memMessage: TRichEdit;
+    procedure cmdQuitClick(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure FormKeyPress(Sender: TObject; var Key: Char);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure memMessageMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlMessageExit(Sender: TObject);
+    procedure pnlMessageMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlMessageMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+  private
+    FIsSupply:  Boolean;
+    FAbortOrder:   Boolean;
+    FAllowQO:      Boolean;
+    FAutoAccept:   Boolean;
+    FClosing:      Boolean;
+    FChanging:     Boolean;
+    FDialogIEN:    Integer;
+    FDisplayGroup: Integer;
+    FFillerID:     string;
+    FFromQuit:     Boolean;
+    FAcceptOK:     Boolean;
+    FCtrlInits:    TCtrlInits;
+    FResponses:    TResponses;
+    FPreserve:     TList;
+    FRefNum:       Integer;
+    FOrderAction:  Integer;
+    FKeyVariables: string;
+    FCallOnExit:   TCallOnExit;
+    FTestMode:     Boolean;
+    FDlgFormID:    Integer;
+    FDfltCopay:    String;
+    FEvtForPassDischarge:  Char;
+    FEvtID    :    Integer;
+    FEvtType  :    Char;
+    FEvtName  :    string;
+    FIncludeOIPI:  boolean;
+    FIsIMO:        boolean;  //imo
+    FMessageClickX: integer;
+    FMessageClickY: integer;
+    function AcceptOrderChecks: Boolean;
+    procedure ClearDialogControls;
+    function GetKeyVariable(const Index: string): string;
+    function GetEffectiveDate: TFMDateTime;
+    procedure SetDisplayGroup(Value: Integer);
+    procedure SetFillerID(const Value: string);
+    procedure DoSetFontSize( FontSize: integer);
+  protected
+    function LESValidationCheck: boolean;
+    procedure InitDialog; virtual;
+    procedure SetDialogIEN(Value: Integer); virtual;
+    procedure Validate(var AnErrMsg: string); virtual;
+    procedure updateSig; virtual;
+    function ValidSave: Boolean;
+    procedure ShowOrderMessage(Show: boolean);
+  public
+    function OrderForInpatient: Boolean;
+    procedure SetDefaultCoPay(AnOrderID: string);
+    procedure OrderMessage(const AMessage: string);
+    procedure PreserveControl(AControl: TControl);
+    procedure SetupDialog(OrderAction: Integer; const ID: string); virtual;
+    procedure SetFontSize( FontSize: integer); virtual;
+    procedure SetKeyVariables(const VarStr: string);
+    procedure TabClose(var CanClose: Boolean);
+    property AbortOrder:  Boolean       read FAbortOrder   write FAbortOrder;
+    property AcceptOK:  Boolean         read FAcceptOK;
+    property AllowQuickOrder: Boolean   read FAllowQO      write FAllowQO;
+    property AutoAccept: Boolean        read FAutoAccept   write FAutoAccept;
+    property CallOnExit: TCallOnExit    read FCallOnExit   write FCallOnExit;
+    property Changing:  Boolean         read FChanging     write FChanging;
+    property Closing:   Boolean         read FClosing;
+    property CtrlInits: TCtrlInits      read FCtrlInits    write FCtrlInits;
+    property DialogIEN: Integer         read FDialogIEN    write SetDialogIEN;
+    property DisplayGroup: Integer      read FDisplayGroup write SetDisplayGroup;
+    property EffectiveDate: TFMDateTime read GetEffectiveDate;
+    property FillerID: string           read FFillerID     write SetFillerID;
+    property KeyVariable[const Index: string]: string read GetKeyVariable;
+    property RefNum: Integer            read FRefNum       write FRefNum;
+    property Responses: TResponses      read FResponses    write FResponses;
+    property TestMode: Boolean          read FTestMode     write FTestMode;
+    property DlgFormID: Integer         read FDlgFormID    write FDlgFormID;
+    property DfltCopay: string          read FDfltCopay    write FDfltCopay;
+    property EvtForPassDischarge: Char  read FEvtForPassDischarge  write FEvtForPassDischarge;
+    property EvtID: integer             read FEvtID        write FEvtID;
+    property EvtType: Char              read FEvtType      write FEvtType;
+    property EvtName: String            read FEvtName      write FEvtName;
+    property IncludeOIPI: boolean       read FIncludeOIPI  write FIncludeOIPI;
+    property IsIMO:boolean              read FIsIMO        write FIsIMO;
+    property IsSupply: boolean          read FIsSupply     write FIsSupply;
+  end;
+
+var
+  frmODBase: TfrmODBase = nil;
+  XfInToOutNow :boolean = False;       // it's used only for transfering Inpatient Meds to OutPatient Med for
+                                       // immediately release (NO EVENT DELAY)
+  XferOuttoInOnMeds : boolean = False; // it's used only for transfering Outpatient Meds to Inpatient Med for
+                                       // immediately release (NO EVENT DELAY)
+  ImmdCopyAct: boolean  = False;
+  IsUDGroup: boolean = False;     // it's only used for copy inpatient med order.
+  DEASig: string;                 // digital signature
+  DupORIFN: string;               // it's used to identify the order number for duplicate orders in order checking
+  NoFresh: boolean = False;        // EDO use only
+  SaveAsCurrent: boolean = False;  // EDO use only
+  CIDCOkToSave: boolean;   // CIDC only, used for consult orders.
+  OrderSource: string = '';
+  EventDefaultOD: integer = 0;    // If it's event default dialog?
+  IsTransferAction: boolean = False;  
+
+procedure ClearControl(AControl: TControl);
+procedure ResetControl(AControl: TControl);
+
+implementation
+
+{$R *.DFM}
+
+uses fOCAccept, uODBase, rCore, rMisc, fODMessage,
+  fTemplateDialog, uEventHooks, uTemplates, rConsults,fOrders,uOrders,
+  fFrame, uTemplateFields, fClinicWardMeds, fODDietLT, rODDiet, VAUtils;
+
+const
+  TX_ACCEPT = 'Accept the following order?' + CRLF + CRLF;
+  TX_ACCEPT_CAP = 'Unsaved Order';
+  TC_ORDERCHECKS = 'Order Checks';
+
+{ Procedures shared with descendent forms }
+
+procedure ClearControl(AControl: TControl);
+{ clears a control, removes text and listbox items }
+begin
+  if AControl is TLabel then with TLabel(AControl) do Caption := ''
+  else if AControl is TStaticText then with TStaticText(AControl) do Caption := ''
+  else if AControl is TButton then with TButton(AControl) do Caption := ''
+  else if AControl is TEdit then with TEdit(AControl) do Text := ''
+  else if AControl is TMemo then with TMemo(AControl) do Clear
+  else if AControl is TRichEdit then with TRichEdit(AControl) do Clear
+  else if AControl is TORListBox then with TORListBox(AControl) do Clear
+  else if AControl is TListBox then with TListBox(AControl) do Clear
+  else if AControl is TORComboBox then with TORComboBox(AControl) do
+  begin
+    Items.Clear;
+    Text := '';
+  end
+  else if AControl is TComboBox then with TComboBox(AControl) do
+  begin
+    Clear;
+    Text := '';
+  end;
+end;
+
+procedure ResetControl(AControl: TControl);
+{ clears text, deselects items, does not remove listbox or combobox items }
+begin
+  if AControl is TLabel then with TLabel(AControl) do Caption := ''
+  else if AControl is TStaticText then with TStaticText(AControl) do Caption := ''
+  else if AControl is TButton then with TButton(AControl) do Caption := ''
+  else if AControl is TEdit then with TEdit(AControl) do Text := ''
+  else if AControl is TMemo then with TMemo(AControl) do Clear
+  else if AControl is TRichEdit then with TRichEdit(AControl) do Clear
+  else if AControl is TListBox then with TListBox(AControl) do ItemIndex := -1
+  else if AControl is TORComboBox then with TORComboBox(AControl) do
+  begin
+    Text := '';
+    ItemIndex := -1;
+  end
+  else if AControl is TComboBox then with TComboBox(AControl) do
+  begin
+    Text := '';
+    ItemIndex := -1;
+  end;
+end;
+
+{ TCtrlInit methods }
+
+constructor TCtrlInit.Create;
+begin
+  List := TStringList.Create;
+end;
+
+destructor TCtrlInit.Destroy;
+begin
+  List.Free;
+  inherited Destroy;
+end;
+
+{ TCtrlInits methods }
+
+constructor TCtrlInits.Create;
+{ create lists to store initial value for dialog and selected orderable item }
+begin
+  FDfltList := TList.Create;
+  FOIList   := TList.Create;
+end;
+
+destructor TCtrlInits.Destroy;
+{ free the objects used to store initialization information }
+var
+  i: Integer;
+begin
+  { free the objects in the lists first }
+  with FDfltList do for i := 0 to Count - 1 do TCtrlInit(Items[i]).Free;
+  FDfltList.Free;
+  ClearOI;
+  FOIList.Free;
+  inherited Destroy;
+end;
+
+procedure TCtrlInits.ClearOI;
+{ clears the records in FOIList, but not FDfltList }
+var
+  i: Integer;
+begin
+  with FOIList do for i := 0 to Count - 1 do TCtrlInit(Items[i]).Free;
+  FOIList.Clear;
+end;
+
+procedure TCtrlInits.ExtractInits(Src: TStrings; Dest: TList);
+{ load a list with TCtrlInit records (source strings are those passed from server }
+var
+  i: Integer;
+  ACtrlInit: TCtrlInit;
+begin
+  i := 0;
+  while i < Src.Count do
+  begin
+    if CharAt(Src[i], 1) = '~' then
+    begin
+      ACtrlInit := TCtrlInit.Create;
+      with ACtrlInit do
+      begin
+        Name := Copy(Src[i], 2, Length(Src[i]));
+        List := TStringList.Create;
+        Inc(i);
+        while (i < Src.Count) and (CharAt(Src[i], 1) <> '~') do
+        begin
+          if CharAt(Src[i], 1) = 'i' then List.Add(Copy(Src[i], 2, 255));
+          if CharAt(Src[i], 1) = 't' then List.Add(Copy(Src[i], 2, 255));
+          if CharAt(Src[i], 1) = 'd' then
+          begin
+            Text := Piece(Src[i], U, 2);
+            ListID := Copy(Piece(Src[i], U, 1), 2, 255);
+          end;
+          Inc(i);
+        end; {while i & CharAt...}
+        Dest.Add(ACtrlInit);
+      end; {with ACtrlDflt}
+    end; {if CharAt}
+  end; {while i}
+end;
+
+
+procedure TCtrlInits.LoadDefaults(Src: TStrings);
+{ loads control initialization information for the dialog }
+begin
+  FDfltList.Clear;		
+  ExtractInits(Src, FDfltList);
+end;
+
+procedure TCtrlInits.LoadOrderItem(Src: TStrings);
+{ loads control initialization information for the orderable item }
+begin
+  ClearOI;
+  ExtractInits(Src, FOIList);
+end;
+
+function TCtrlInits.FindInitByName(const AName: string): TCtrlInit;
+{ look first in FOIList, then in FDfltList for initial values identified by name (~section) }
+var
+  i: Integer;
+begin
+  Result := nil;
+  with FOIList do
+    for i := 0 to Count - 1 do if TCtrlInit(Items[i]).Name = AName then
+    begin
+      Result := TCtrlInit(Items[i]);
+      break;
+    end;
+  if Result = nil then with FDfltList do
+    for i := 0 to Count - 1 do if TCtrlInit(Items[i]).Name = AName then
+    begin
+      Result := TCtrlInit(Items[i]);
+      break;
+    end;
+end;
+
+procedure TCtrlInits.SetControl(AControl: TControl; const ASection: string);
+{ initializes a control to the information in a section (~section from server) }
+var
+  CtrlInit: TCtrlInit;
+begin
+  ClearControl(AControl);
+  CtrlInit := FindInitByName(ASection);
+  if CtrlInit = nil then Exit;
+  if AControl is TLabel then with TLabel(AControl) do Caption := CtrlInit.Text
+  else if AControl is TStaticText then with TStaticText(AControl) do Caption := CtrlInit.Text
+  else if AControl is TButton then with TButton(AControl) do Caption := CtrlInit.Text
+  else if AControl is TEdit then with TEdit(AControl) do Text := CtrlInit.Text
+  else if AControl is TMemo then FastAssign(CtrlInit.List, TMemo(AControl).Lines)
+  else if AControl is TRichEdit then QuickCopy(CtrlInit.List, TRichEdit(AControl))
+  else if AControl is TORListBox then FastAssign(CtrlInit.List, TORListBox(AControl).Items)
+  else if AControl is TListBox then FastAssign(CtrlInit.List, TListBox(AControl).Items)
+  else if AControl is TComboBox then with TComboBox(AControl) do
+  begin
+    FastAssign(CtrlInit.List, TComboBox(AControl).Items);
+    Text := CtrlInit.Text;
+  end
+  else if AControl is TORComboBox then with TORComboBox(AControl) do
+  begin
+    FastAssign(CtrlInit.List, TORComboBox(AControl).Items);
+    if LongList then InitLongList(Text) else Text := CtrlInit.Text;
+    SelectByID(CtrlInit.ListID);
+  end;
+  { need to add SelectByID for combobox & listbox }
+end;
+
+procedure TCtrlInits.SetListOnly(AControl: TControl; const ASection: string);
+{ assigns list portion to a control from a section (used to set ShortList for meds) }
+var
+  CtrlInit: TCtrlInit;
+begin
+  CtrlInit := FindInitByName(ASection);
+  if CtrlInit = nil then Exit;
+  if      AControl is TMemo       then FastAssign(CtrlInit.List, TMemo(AControl).Lines)
+  else if AControl is TORListBox  then FastAssign(CtrlInit.List, TORListBox(AControl).Items)
+  else if AControl is TListBox    then FastAssign(CtrlInit.List, TListBox(AControl).Items)
+  else if AControl is TComboBox   then FastAssign(CtrlInit.List, TComboBox(AControl).Items)
+  else if AControl is TORComboBox then FastAssign(CtrlInit.List, TORComboBox(AControl).Items);
+end;
+
+procedure TCtrlInits.SetPopupMenu(AMenu: TPopupMenu; AClickEvent: TNotifyEvent; const ASection: string);
+{ populates a popup menu with items in a list, leaves the maximum text width in Tag }
+var
+  i, MaxWidth: Integer;
+  CtrlInit: TCtrlInit;
+  AMenuItem: TMenuItem;
+begin
+  CtrlInit := FindInitByName(ASection);
+  // clear the current menu entries
+  for i := AMenu.Items.Count - 1 downto 0 do
+  begin
+    AMenuItem := AMenu.Items[i];
+    if AMenuItem <> nil then
+    begin
+      AMenu.Items.Delete(i);
+      AMenuItem.Free;
+    end;
+  end;
+  MaxWidth := 0;
+  for i := 0 to CtrlInit.List.Count - 1 do
+  begin
+    AMenuItem := TMenuItem.Create(Application);
+    AMenuItem.Caption := CtrlInit.List[i];
+    AMenuItem.OnClick := AClickEvent;
+    AMenu.Items.Add(AMenuItem);
+    MaxWidth := HigherOf(MaxWidth, Application.MainForm.Canvas.TextWidth(CtrlInit.List[i]));
+  end;
+  AMenu.Tag := MaxWidth;
+end;
+
+function TCtrlInits.DefaultText(const ASection: string): string;
+var
+  CtrlInit: TCtrlInit;
+begin
+  Result := '';
+  CtrlInit := FindInitByName(ASection);
+  if CtrlInit <> nil then Result := CtrlInit.ListID;
+end;
+
+function TCtrlInits.TextOf(const ASection: string): string;
+var
+  CtrlInit: TCtrlInit;
+begin
+  Result := '';
+  CtrlInit := FindInitByName(ASection);
+  if CtrlInit <> nil then Result := CtrlInit.List.Text;
+end;
+
+{ TResponses methods }
+
+function SortPromptsBySequence(Item1, Item2: Pointer): Integer;
+{ compare function used to sort formatting info by sequence - used by TResponses.SetDialog}
+var
+  Prompt1, Prompt2: TPrompt;
+begin
+  Prompt1 := TPrompt(Item1);
+  Prompt2 := TPrompt(Item2);
+  if Prompt1.Sequence < Prompt2.Sequence then Result := -1
+  else if Prompt1.Sequence > Prompt2.Sequence then Result := 1
+  else Result := 0;
+end;
+
+constructor TResponses.Create;
+begin
+  FResponseList := TList.Create;
+  FPrompts := TList.Create;
+  FOrderChecks := TStringList.Create;
+  FEventType := #0;
+  FParentEvent := TParentEvent.Create;
+  FLogTime := 0;
+end;
+
+destructor TResponses.Destroy;
+{ frees all response objects before freeing list }
+var
+  i: Integer;
+begin
+  Clear;
+  FOrderChecks.Free;
+  FResponseList.Free;
+  with FPrompts do for i := 0 to Count - 1 do TPrompt(Items[i]).Free;
+  FPrompts.Free;
+  inherited Destroy;
+end;
+
+procedure TResponses.Clear;
+{ clears all information in the response multiple }
+var
+  i: Integer;
+begin
+  FVarLeading  := '';
+  FVarTrailing := '';
+  FQuickOrder  := 0;
+  //FCopyOrder  := '';  // don't clear FCopyOrder either?
+  // don't clear FEditOrder or it will cause a new order to be created instead of an edit
+  with FResponseList do for i := 0 to Count - 1 do TResponse(Items[i]).Free;
+  FResponseList.Clear;
+  FOrderChecks.Clear;
+end;
+
+procedure TResponses.Clear(const APromptID: string; SaveInstance: Integer = 0);
+var
+  AResponse: TResponse;
+  i: Integer;
+begin
+  with FResponseList do
+    for i := Count - 1 downto SaveInstance do
+    begin
+      AResponse := TResponse(Items[i]);
+      if AResponse.PromptID = APromptID then
+      begin
+        AResponse.Free;
+        FResponseList.Delete(i);
+      end; {if AResponse}
+    end; {for}
+end;
+
+procedure TResponses.SetDialog(Value: string);
+{ loads formatting information for a dialog }
+var
+  i: Integer;
+begin
+  with FPrompts do for i := 0 to Count - 1 do TPrompt(Items[i]).Free;
+  FPrompts.Clear;
+  FDialog := Value;
+  LoadDialogDefinition(FPrompts, FDialog);
+  FPrompts.Sort(SortPromptsBySequence);
+end;
+
+procedure TResponses.SetCopyOrder(const AnID: string);
+{ sets responses to the values for an order that is created by copying }
+var
+  HasObjects: boolean;
+begin
+  if AnID = '' then
+  begin
+    FCopyOrder := AnID;
+    Exit;
+  end;
+  Clear;
+  LoadResponses(FResponseList, AnID, HasObjects);                      // Example AnID=C123456;1-3604
+  FCopyOrder := Copy(Piece(AnID, '-', 1), 2, Length(AnID));
+  FOrderContainsObjects := HasObjects;
+end;
+
+procedure TResponses.SetEditOrder(const AnID: string);
+{ sets responses to the values for an order that is about to be edited }
+var
+  HasObjects: boolean;
+begin
+  Clear;
+  LoadResponses(FResponseList, AnID, HasObjects);                      // Example AnID=X123456;1
+  FEditOrder := Copy(Piece(AnID, '-', 1), 2, Length(AnID));
+  FOrderContainsObjects := HasObjects;
+end;
+
+procedure TResponses.SetQuickOrder(AnIEN: Integer);
+{ sets responses to a quick order value - this is used by the QuickOrder property}
+var
+  HasObjects: boolean;
+begin
+  Clear;
+  LoadResponses(FResponseList, IntToStr(AnIEN), HasObjects);           // Example AnIEN=134
+  FQuickOrder := AnIEN;
+  FOrderContainsObjects := HasObjects;
+end;
+
+procedure TResponses.SetQuickOrderByID(const AnID: string);
+{ sets responses to a quick order value }
+var
+  HasObjects: boolean;
+begin
+  Clear;
+  LoadResponses(FResponseList, AnID, HasObjects);                      // Example AnID=134-3645
+  FQuickOrder := StrToIntDef(Piece(AnID, '-', 1), 0);      // 2nd '-' piece is $H seconds
+  FOrderContainsObjects := HasObjects;
+end;
+
+procedure TResponses.BuildOCItems(AList: TStringList; var AStartDtTm: string;
+  const AFillerID: string);
+var
+  i, TheInstance: Integer;
+  OrderableIEN, PkgPart: string;
+begin
+  if EditOrder <> '' then DupORIFN := EditOrder;
+  if CopyOrder <> '' then DupORIFN := CopyOrder;
+  //if {(CopyOrder <> '') or} (EditOrder <> '') then Exit;  // only check new orders
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptID = 'ORDERABLE') or (PromptID = 'ADDITIVE') then
+    begin
+      OrderableIEN := IValue;
+      TheInstance := Instance;
+      PkgPart := '';
+      if AFillerID = 'LR' then PkgPart := '^LR^' + IValueFor('SPECIMEN', TheInstance);
+      if (AFillerID = 'PSI') or (AFillerID = 'PSO') or (AFillerID = 'PSH')
+        then PkgPart := U + AFillerID + U + IValueFor('DRUG', TheInstance);
+        // was -- then PkgPart := '^PS^' + IValueFor('DRUG', TheInstance);
+      if AFillerID = 'PSIV' then
+      begin
+        if PromptID = 'ORDERABLE' then PkgPart := '^PSIV^B;' + IValueFor('VOLUME', TheInstance);
+        if PromptID = 'ADDITIVE'  then PkgPart := '^PSIV^A';
+      end;
+      AList.Add(OrderableIEN + PkgPart);
+    end;
+  AStartDtTm := IValueFor('START', 1);
+end;
+
+function TResponses.EValueFor(const APromptID: string; AnInstance: Integer): string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptID = APromptID) and (Instance = AnInstance) then
+    begin
+      Result := EValue;
+      break;
+    end;
+end;
+
+function TResponses.IValueFor(const APromptID: string; AnInstance: Integer): string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptID = APromptID) and (Instance = AnInstance) then
+    begin
+      Result := IValue;
+      break;
+    end;
+end;
+
+function TResponses.PromptExists(const APromptID: string): boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  with FPrompts do for i := 0 to Count - 1 do with TPrompt(Items[i]) do
+    if (ID = APromptID) then Result :=  True;
+end;
+
+function TResponses.FindResponseByName(const APromptID: string; AnInstance: Integer): TResponse;
+var
+  i: Integer;
+begin
+  Result := nil;
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptID = APromptID) and (Instance = AnInstance) then
+    begin
+      Result := TResponse(Items[i]);
+      break;
+    end;
+end;
+
+function TResponses.IENForPrompt(const APromptID: string): Integer;
+var
+  i: Integer;
+begin
+  Result := 0;
+  with FPrompts do for i := 0 to Count - 1 do with TPrompt(Items[i]) do
+    if (ID = APromptID) then
+    begin
+      Result := IEN;
+      break;
+    end;
+end;
+
+function TResponses.InstanceCount(const APromptID: string): Integer;
+var
+  i: Integer;
+begin
+  Result := 0;
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptID = APromptID) then Inc(Result);
+end;
+
+function TResponses.NextInstance(const APromptID: string; LastInstance: Integer): Integer;
+var
+  i: Integer;
+begin
+  Result := 0;
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptID = APromptID) and (Instance > LastInstance) and
+      ((Result = 0) or ((Result > 0) and (Instance < Result))) then Result := Instance;
+end;
+
+function TResponses.FindResponseByIEN(APromptIEN, AnInstance: Integer): TResponse;
+var
+  i: Integer;
+begin
+  Result := nil;
+  with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    if (PromptIEN = APromptIEN) and (Instance = AnInstance) then
+    begin
+      Result := TResponse(Items[i]);
+      break;
+    end;
+end;
+
+procedure TResponses.FormatResponse(var FormattedText: string; var ExcludeText: Boolean;
+  APrompt: TPrompt; const x: string; AnInstance: Integer);
+var
+  AValue: string;
+  PromptIEN: Integer;
+  Related: TResponse;
+begin
+  FormattedText := '';
+  ExcludeText := True;
+  with APrompt do
+  begin
+    if FmtCode = '@' then Exit;                // skip this response
+    if CharAt(FmtCode, 1) = '@' then           // exclude if related response exists
+    begin
+      PromptIEN := StrToIntDef(Copy(FmtCode, 2, Length(FmtCode)), 0);
+      if (FindResponseByIEN(PromptIEN, AnInstance) <> nil) then Exit;
+    end;
+    if CharAt(FmtCode, 1) = '*' then           // include if related response exists
+    begin
+      PromptIEN := StrToIntDef(Copy(FmtCode, 2, Length(FmtCode)), 0);
+      if FindResponseByIEN(PromptIEN, AnInstance) = nil then Exit;
+    end;
+    if CharAt(FmtCode, 1) = '#' then           // include if related response = value
+    begin
+      AValue := Copy(FmtCode, Pos('=', FmtCode) + 1, Length(FmtCode));
+      PromptIEN := StrToIntDef(Copy(Piece(FmtCode, '=', 1), 2, Length(FmtCode)), 0);
+      Related := FindResponseByIEN(PromptIEN, AnInstance);
+      if Related = nil then Exit;
+      if not (Related.EValue = AValue) then Exit;
+    end;
+    if CharAt(FmtCode, 1) = '=' then           // exclude if related response has same text
+    begin
+      PromptIEN := StrToIntDef(Copy(FmtCode, 2, Length(FmtCode)), 0);
+      Related := FindResponseByIEN(PromptIEN, AnInstance);
+      if (Related <> nil) and ((Pos(Related.EValue, x) > 0) or (Pos(x, Related.EValue) > 0)) then Exit;
+    end;
+    ExcludeText := False;
+    if (Length(x) = 0) or (CompareText(x, Omit) = 0) then Exit;
+    FormattedText := x;
+    if IsChild and (Length(Leading) > 0) and (CharAt(Leading, 1) <> '@')
+      then FormattedText := Leading + ' ' + FormattedText;
+    if IsChild and (Length(Trailing) > 0) and (CharAt(Trailing, 1) <> '@')
+      then FormattedText := FormattedText + ' ' + Trailing;
+  end; {with APrompt}
+end;
+
+function TResponses.FindPromptByIEN(AnIEN: Integer): TPrompt;
+var
+  i: Integer;
+begin
+  Result := nil;
+  with FPrompts do for i := 0 to Count - 1 do with TPrompt(Items[i]) do
+    if IEN = AnIEN then
+    begin
+      Result := TPrompt(Items[i]);
+      break;
+    end;
+end;
+
+procedure TResponses.AppendChildren(var ParentText: string; ChildPrompts: string; AnInstance: Integer);
+var
+  x, Segment: string;
+  Boundary, ChildIEN: Integer;
+  ExcludeText: Boolean;
+  AResponse: TResponse;
+  APrompt: TPrompt;
+begin
+  while Length(ChildPrompts) > 0 do
+  begin
+    Boundary := Pos('~', ChildPrompts);
+    if Boundary = 0 then Boundary := Length(ChildPrompts) + 1;
+    Segment := Copy(ChildPrompts, 1, Boundary - 1);
+    Delete(ChildPrompts, 1, Boundary);
+    ChildIEN := StrToIntDef(Segment, 0);
+    APrompt := FindPromptByIEN(ChildIEN);
+    if APrompt <> nil then
+    begin
+      AResponse := FindResponseByIEN(APrompt.IEN, AnInstance);
+      if AResponse <> nil then
+      begin
+        FormatResponse(x, ExcludeText, APrompt, AResponse.EValue, AnInstance);
+        //x := FormatResponse(APrompt, AResponse.EValue, AnInstance);
+        if not ExcludeText then
+        begin
+          if (Length(ParentText) > 0) and (Length(x) > 0) then ParentText := ParentText + ' ';
+          ParentText := ParentText + x;
+        end; {if not ExcludeText}
+      end; {if AResponse}
+    end; {if APrompt}
+  end; {while Length}
+end; {AppendChildren}
+
+function TResponses.GetOrderText: string;
+{ loop thru the response objects and build the order text }
+var
+  i, AnInstance, NumInstance: Integer;
+  x, Segment: string;
+  ExcludeText, StartNewline: Boolean;
+  AResponse: TResponse;
+  APrompt: TPrompt;
+begin
+  Result := '';
+  with FPrompts do for i := 0 to Count - 1 do
+  begin
+    APrompt := TPrompt(Items[i]);
+    if APrompt.Sequence = 0 then Continue;   // skip if prompt not in formatting sequence
+    NumInstance := 0;
+    Segment := '';
+    AnInstance := NextInstance(APrompt.ID, 0);
+    while AnInstance > 0 do
+    begin
+      Inc(NumInstance);
+      AResponse := FindResponseByName(APrompt.ID, AnInstance);
+      FormatResponse(x, ExcludeText, APrompt, AResponse.EValue, AnInstance);
+      //x := FormatResponse(APrompt, AResponse.EValue, AnInstance);
+      if not ExcludeText then
+      begin
+        if Length(APrompt.Children) > 0 then AppendChildren(x, APrompt.Children, AnInstance);
+        if Length(x) > 0 then
+        begin
+          // should the newline property be checked for children, too?
+          if APrompt.NewLine and (Length(Result) > 0) then x := CRLF + x;
+          if NumInstance > 1     then Segment := Segment + ',';
+          if Length(Segment) > 0 then Segment := Segment + ' ';
+          Segment := Segment + x;
+        end; {if Length(x)}
+      end; {if not ExcudeText}
+      AnInstance := NextInstance(APrompt.ID, AnInstance);
+    end; {while AnInstance}
+    if NumInstance > 0 then with APrompt do
+    begin
+      if Length(Segment) > 0 then
+      begin
+        if Copy(Segment, 1, 2) = CRLF then
+        begin
+          Segment := Copy(Segment, 3, Length(Segment));
+          StartNewline := True;
+        end
+        else StartNewline := False;
+        if (Length(Leading) > 0) then
+        begin
+          if (CharAt(Leading, 1) <> '@')
+            then Segment := Leading + ' ' + Segment
+            else Segment := FVarLeading + ' ' + Segment;
+        end; {if Length(Leading)}
+        if StartNewline then Segment := CRLF + Segment;
+        if (Length(Trailing) > 0) then
+        begin
+          if (CharAt(Trailing, 1) <> '@')
+            then Segment := Segment + ' ' + Trailing
+            else Segment := Segment + ' ' + FVarTrailing;
+        end; {if Length(Trailing)}
+      end; {if Length(Segment)}
+      if Length(Result) > 0 then Result := Result + ' ';
+      Result := Result + Segment;
+    end; {with APrompt}
+  end; {with FPrompts}
+end; {GetOrderText}
+
+procedure TResponses.Update(const APromptID: string; AnInstance: Integer;
+  const AnIValue, AnEValue: string);
+{ for a given Prompt,Instance update or create the associated response object }
+var
+  AResponse: TResponse;
+begin
+  AResponse := FindResponseByName(APromptID, AnInstance);
+  if AResponse = nil then
+  begin
+    AResponse := TResponse.Create;
+    AResponse.PromptID := APromptID;
+    AResponse.PromptIEN := IENForPrompt(APromptID);
+    AResponse.Instance := AnInstance;
+    FResponseList.Add(AResponse);
+  end;
+  AResponse.IValue := AnIValue;
+  AResponse.EValue := AnEValue;
+end;
+
+function TResponses.OrderCRC: string;
+const
+  CRC_WIDTH = 8;
+var
+  i: Integer;
+  x: string;
+  tmplst: TStringList;
+begin
+  tmplst := TStringList.Create;
+  try
+    with FResponseList do for i := 0 to Count - 1 do with TResponse(Items[i]) do
+    begin
+      if IValue = TX_WPTYPE then x := EValue else x := IValue;
+      tmplst.Add(IntToStr(PromptIEN) + U + IntToStr(Instance) + U + x);
+    end;
+    Result := IntToHex(CRCForStrings(tmplst), CRC_WIDTH);
+  finally
+    tmplst.Free;
+  end;
+end;
+
+procedure TResponses.Remove(const APromptID: string; AnInstance: Integer);
+var
+  AResponse: TResponse;
+begin
+  AResponse := FindResponseByName(APromptID, AnInstance);
+  if AResponse <> nil then
+  begin
+    FResponseList.Remove(AResponse);
+    AResponse.Free;
+  end;
+end;
+
+procedure TResponses.SaveQuickOrder(var ANewIEN: Integer; const ADisplayName: string);
+begin
+  if FDisplayGroup = ClinDisp then  //Clin. Meds share same quick order definition with Inpt. Meds
+    PutQuickOrder(ANewIEN, OrderCRC, ADisplayName, InptDisp, FResponseList)
+  else
+    PutQuickOrder(ANewIEN, OrderCRC, ADisplayName, FDisplayGroup, FResponseList)
+end;
+
+procedure TResponses.SaveOrder(var AnOrder: TOrder; DlgIEN: Integer; IsIMOOrder: boolean);
+var
+  ConstructOrder: TConstructOrder;
+  i,j: integer;
+  QOUDGroup: boolean;
+  NewPtEvtPtr: Integer;  // ptr to #100.2
+  APtEvtPtr: string;
+begin
+  //IMOLoc := 0;
+  NewPtEvtPtr := 0;
+  QOUDGroup := False;
+  if FQuickOrder > 0 then
+  begin
+   DlgIEN := FQuickOrder;
+   QOUDGroup := CheckQOGroup( IntToStr(FQuickOrder) );
+  end;
+  AnOrder.EditOf := FEditOrder;  // null if new order, otherwise ORIFN of original order
+  with ConstructOrder do
+  begin
+    if XfInToOutNow then
+      DialogName := FDialog + '^O'
+    else DialogName := FDialog;
+    LeadText     := FVarLeading;
+    TrailText    := FVarTrailing;
+    DGroup       := FDisplayGroup;
+    OrderItem    := DlgIEN;
+    DelayEvent   := FEventType;
+    Specialty    := FSpecialty;
+    Effective    := FEffective;
+    LogTime      := FLogTime;
+    OCList       := FOrderChecks;
+    DigSig       := DEASig;
+    IsIMODialog  := IsIMOOrder;       //IMO
+    if IsIMODialog then
+      DGroup := ClinDisp;
+    //AGP Change 26.35, 26.41 8518 added text order
+    //AGP Change 26.55 remove IMO functionality for inpatient
+    (*if (Patient.Inpatient = true) and (IsValidIMOLoc(encounter.Location,Patient.DFN)=true) and
+      ((ConstructOrder.DialogName = 'PSJ OR PAT OE') or (ConstructOrder.DialogName = 'PSJI OR PAT FLUID OE') or
+      (ConstructOrder.DialogName = 'OR GXTEXT WORD PROCESSING ORDE')) and
+      ((FEditOrder = '') and (Self.FEventName = '') and (Self.FCopyOrder = '')) then
+      begin
+       if frmClinicWardMeds.ClinicOrWardLocation(Encounter.location) = Encounter.Location then
+          begin
+            ConstructOrder.IsIMODialog := True;
+            ConstructOrder.DGroup := ClinDisp;
+          end
+       else IMOLoc := Patient.Location;
+      end; *)
+    //AGP Change 26.51, change logic to set text orders to IMO for outpatients at an outpatient location.
+    //AGP Text orders are only treated as IMO if the order display group is a nursing display group
+    if (Patient.Inpatient = False) and (IsValidIMOLoc(encounter.Location,Patient.DFN)=true) and
+       (((pos('OR GXTEXT WORD PROCESSING ORDER',ConstructOrder.DialogName)>0) and (ConstructOrder.DGroup = NurDisp)) or
+       ((ConstructOrder.DialogName = 'OR GXMISC GENERAL') and (ConstructOrder.DGroup = NurDisp)) or
+       ((ConstructOrder.DialogName = 'OR GXTEXT TEXT ONLY ORDER') and (ConstructOrder.DGroup = NurDisp))) and //AGP Change CQ #10757
+      ((FEditOrder = '') and (Self.FEventName = '') and (Self.FCopyOrder = '')) then
+         begin
+            ConstructOrder.IsIMODialog := True;
+            ConstructOrder.DGroup := ClinDisp;
+          end;
+    IsEventDefaultOR := EventDefaultOD;
+    if IsUDGroup or QOUDGroup then
+    begin
+      for i := 0 to FResponseList.Count - 1 do
+       if UpperCase(TResponse(FResponseList.Items[i]).PromptID) = 'PICKUP' then
+       begin
+          FResponseList.Delete(i);
+          Break;
+       end;
+    end;
+
+    if SaveAsCurrent then
+      ConstructOrder.DelayEvent := #0;
+
+    ResponseList := FResponseList;
+    if (FEventIFN>0) and (EventExist(Patient.DFN, FEventIFN)>0) then
+    begin
+      APtEvtPtr   := IntToStr(EventExist(Patient.DFN, FEventIFN));
+      PTEventPtr  := APtEvtPtr;
+      //PutNewOrder(AnOrder, ConstructOrder, OrderSource, IMOLoc);
+      PutNewOrder(AnOrder, ConstructOrder, OrderSource);
+      if not SaveAsCurrent then
+      begin
+        AnOrder.EventPtr  := PTEventPtr;
+        AnOrder.EventName := 'Delayed ' + MixedCase(Piece(EventInfo(APtEvtPtr),'^',4));
+      end;
+    end
+    else
+    begin
+      //PutNewOrder(AnOrder, ConstructOrder, OrderSource, IMOLoc);
+      PutNewOrder(AnOrder, ConstructOrder, OrderSource);
+      if not SaveAsCurrent then
+      begin
+        if (FEventIFN > 0) and (FParentEvent.ParentIFN > 0) then
+        begin
+          {For a child event, create a parent event in 100.2 first}
+          SaveEvtForOrder(Patient.DFN, FParentEvent.ParentIFN, AnOrder.ID);
+          NewPtEvtPtr := EventExist(Patient.DFN, FParentEvent.ParentIFN);
+          AnOrder.EventPtr := IntToStr(NewPtEvtPtr);
+          AnOrder.EventName := 'Delayed ' + MixedCase(Piece(EventInfo(IntToStr(NewPtEvtPtr)),'^',4));
+          {Then create the child event in 100.2}
+          SaveEvtForOrder(Patient.DFN, FEventIFN, '');
+          NewPtEvtPtr := EventExist(Patient.DFN, FEventIFN);
+        end
+        else if (FEventIFN > 0) and (FParentEvent.ParentIFN = 0) then
+        begin
+          SaveEvtForOrder(Patient.DFN, FEventIFN, AnOrder.ID);
+          NewPtEvtPtr := EventExist(Patient.DFN, FEventIFN);
+          AnOrder.EventPtr := IntToStr(NewPtEvtPtr);
+          AnOrder.EventName := 'Delayed ' + MixedCase(Piece(EventInfo(IntToStr(NewPtEvtPtr)),'^',4));
+        end;
+        if FEventIFN > 0 then
+        begin
+          for j := 1 to frmOrders.lstSheets.Items.Count - 1 do
+          begin
+            if FEventIFN = StrToInt( Piece(Piece(frmOrders.lstSheets.Items[j],'^',1),';',1) ) then
+            begin
+              frmOrders.lstSheets.Items[j] := IntToStr( NewPtEvtPtr) + '^' + Piece(frmOrders.lstSheets.Items[j],'^',2);
+              frmOrders.lstSheets.ItemIndex := j;
+            end;
+          end;
+        end;
+      end;
+    end;
+    DEASig := ''; //PKI
+  end;
+  AnOrder.EditOf := FEditOrder;
+{Begin BillingAware}
+  if  rpcGetBAMasterSwStatus then
+  begin
+     UBAGlobals.BAOrderID := '';
+     UBAGlobals.BAOrderID := AnOrder.ID;
+  end;
+{Begin BillingAware}
+end;
+
+procedure TResponses.SetControl(AControl: TControl; const APromptID: string; AnInstance: Integer);
+{ sets the value of a control, uses ID string & instance to find the right response entry }
+var
+  i: Integer;
+  AResponse: TResponse;
+  IEN: integer;
+  HasObjects: boolean;
+
+  procedure AssignBPText(List: TStrings; const Value: string);
+  var
+    tmp, cptn, DocInfo: string;
+    LType: TTemplateLinkType;
+
+  begin
+    DocInfo := '';
+    LType := DisplayGroupToLinkType(DisplayGroup);
+    cptn := 'Reason for Request: ' + EValueFor('ORDERABLE', 1);
+    tmp := Value;
+    case LType of
+      ltConsult:   IEN := StrToIntDef(GetServiceIEN(IValueFor('ORDERABLE', 1)),0);
+      ltProcedure: IEN := StrToIntDef(GetProcedureIEN(IValueFor('ORDERABLE', 1)),0);
+      else         IEN := 0;
+    end;
+    ExpandOrderObjects(tmp, HasObjects);
+    FOrderContainsObjects := FOrderContainsObjects or HasObjects;
+    if IEN <> 0 then
+      begin
+        // template will execute on copy order if commented out  (tried to eliminate for CSV v22, RV)
+        //
+        //if (Length(tmp) > 0) and (not HasTemplateField(tmp)) then
+        //  CheckBoilerplate4Fields(tmp, cptn)
+        //else
+
+        // CQ #11669 - changing an existing order shouldn't restart template - JM
+          if assigned(frmODBase) and (frmODBase.FOrderAction = ORDER_EDIT) then
+            CheckBoilerplate4Fields(tmp, cptn)
+          else
+            ExecuteTemplateOrBoilerPlate(tmp, IEN, LType, nil, cptn, DocInfo);
+      end
+    else
+      CheckBoilerplate4Fields(tmp, cptn);
+    List.Text := tmp;
+  end;
+
+begin
+  AResponse := FindResponseByName(APromptID, AnInstance);
+  if AResponse = nil then Exit;
+  if AControl is TLabel then with TLabel(AControl) do Caption := AResponse.EValue
+  else if AControl is TStaticText then with TStaticText(AControl) do Caption := AResponse.EValue
+  else if AControl is TButton then with TButton(AControl) do Caption := AResponse.EValue
+  else if AControl is TEdit then with TEdit(AControl) do Text := AResponse.EValue
+  else if AControl is TMaskEdit then with TMaskEdit(AControl) do Text := AResponse.EValue
+  else if AControl is TCheckBox then with TCheckBox(AControl) do
+    Checked := (StrToIntDef(AResponse.IValue,0) > 0) or
+               (UpperCase(AResponse.IValue) = 'Y')
+  else if AControl is TMemo then with TMemo(AControl) do AssignBPText(Lines, AResponse.EValue)
+  else if AControl is TRichEdit then with TRichEdit(AControl) do AssignBPText(Lines, AResponse.EValue)
+  else if AControl is TORListBox then with TORListBox(AControl) do
+  begin
+    for i := 0 to Items.Count - 1 do
+      if Piece(Items[i], U, 1) = AResponse.IValue then ItemIndex := i;
+  end
+  else if AControl is TListBox then with TListBox(AControl) do
+  begin
+    for i := 0 to Items.Count - 1 do
+      if Items[i] = AResponse.EValue then ItemIndex := i;
+  end
+  else if AControl is TComboBox then with TComboBox(AControl) do
+  begin
+    for i := 0 to Items.Count - 1 do
+      if Items[i] = AResponse.EValue then ItemIndex := i;
+    Text := AResponse.EValue;
+  end
+  else if AControl is TORComboBox then with TORComboBox(AControl) do
+  begin
+    if LongList then InitLongList(AResponse.EValue);
+    SelectByID(AResponse.IValue);
+    if (not LongList) and (ItemIndex < 0) then Text := AResponse.EValue;
+  end;
+end;
+
+procedure TResponses.SetEventDelay(AnEvent: TOrderDelayEvent);
+begin
+  with AnEvent do if EventType in ['A','D','T','M','O'] then
+  begin
+    FEventIFN  := EventIFN;
+    FEventName := EventName;
+    FEventType := EventType;
+    FSpecialty := Specialty;
+    FEffective := Effective;
+    FViewName := 'Delayed ' + MixedCase(EventName);
+    FParentEvent := TParentEvent(AnEvent.TheParent);
+  end;
+end;
+
+procedure TResponses.SetPromptFormat(const APromptID, NewFormat: string);
+var
+  i: Integer;
+begin
+  with FPrompts do for i := 0 to Count - 1 do with TPrompt(Items[i]) do
+    if (ID = APromptID) then FmtCode := NewFormat;
+end;
+
+{ Private calls }
+
+procedure TfrmODBase.ClearDialogControls;
+var
+  i: Integer;
+begin
+  FChanging := True;
+  for i := 0 to ControlCount - 1 do
+  begin
+    // need to check if control is container & clear it's children also
+    if (Controls[i] is TLabel) or (Controls[i] is TButton) or (Controls[i] is TStaticText) then Continue;
+    if FPreserve.IndexOf(Controls[i]) < 0 then ClearControl(Controls[i]);
+  end;
+  FChanging := False;
+  ShowOrderMessage( False );
+end;
+
+procedure TfrmODBase.SetDisplayGroup(Value: Integer);
+begin
+  FDisplayGroup := Value;
+  Responses.FDisplayGroup := Value;
+end;
+
+procedure TfrmODBase.SetFillerID(const Value: string);
+var
+  x: string;
+begin
+  FFillerID := Value;
+  if AddFillerAppID(FFillerID) and OrderChecksEnabled then
+  begin
+    StatusText('Order Checking...');
+    x := OrderChecksOnDisplay(FillerID);
+    StatusText('');
+    if Length(x) > 0 then InfoBox(x, TC_ORDERCHECKS, MB_OK);
+  end;
+end;
+
+{ Protected Calls (used by descendant forms) }
+
+procedure TfrmODBase.InitDialog;
+begin
+  ClearDialogControls;
+  Responses.Clear;
+  FAcceptOK := False;
+  FAbortOrder := False;
+end;
+
+function TfrmODBase.OrderForInpatient: Boolean;
+var
+  AnEventType: Char;
+begin
+  AnEventType := OrderEventTypeOnCreate;
+  // if event type = #0, then it wasn't passed or we're not in create
+  if AnEventType = #0 then AnEventType := Responses.FEventType;
+  case AnEventType of
+  'A','O': Result := True;
+  'D': Result := False;
+  'T':
+  begin
+    if IsPassEvt1(FEvtID,'T') then  Result := False
+    else Result := True;
+  end
+  else Result := Patient.Inpatient;
+  end;
+end;
+
+procedure TfrmODBase.ShowOrderMessage(Show: boolean);
+begin
+  if Show then
+  begin
+    pnlMessage.Visible := True;
+    pnlMessage.BringToFront;
+    memMessage.TabStop := True;
+  end
+  else
+  begin
+    pnlMessage.Visible := False;
+    pnlMessage.SendToBack;
+    memMessage.TabStop := False;
+  end;
+end;
+
+procedure TfrmODBase.OrderMessage(const AMessage: string);
+{Caller needs to set pnlMessage.TabOrder}
+begin
+  memMessage.Lines.SetText(PChar(AMessage));
+  //begin CQ: 2640
+  memMessage.SelStart := 0; // Put at first character
+  SendMessage(memMessage.Handle, WM_VSCROLL, SB_TOP, 0);
+  //End CQ: 2640
+  ShowOrderMessage(ContainsVisibleChar(AMessage));
+end;
+
+procedure TfrmODBase.PreserveControl(AControl: TControl);
+begin
+  FPreserve.Add(AControl);
+end;
+
+procedure TfrmODBase.SetDialogIEN(Value: Integer);
+begin
+  FDialogIEN := Value;
+end;
+
+procedure TfrmODBase.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  FOrderAction := OrderAction;
+  FAbortOrder := False;
+  case OrderAction of
+  ORDER_NEW:   {nothing};
+  ORDER_EDIT:  Responses.SetEditOrder(ID);
+  ORDER_COPY:  Responses.SetCopyOrder(ID);
+  ORDER_QUICK: Responses.SetQuickOrderByID(ID);
+  end;
+  if Responses.FEventType in ['A','D','T','M','O'] then Caption := Caption + ' (Delayed ' + Responses.FEventName + ')'; // ' (Event Delayed)';
+  if OrderAction in [ORDER_EDIT, ORDER_COPY] then cmdQuit.Caption := 'Cancel';
+end;
+
+function TfrmODBase.GetEffectiveDate: TFMDateTime;
+begin
+  Result := Responses.FEffective;
+end;
+
+function TfrmODBase.GetKeyVariable(const Index: string): string;
+begin
+  if      UpperCase(Index) = 'LRFZX'    then Result := Piece(FKeyVariables, U, 1)
+  else if UpperCase(Index) = 'LRFSAMP'  then Result := Piece(FKeyVariables, U, 2)
+  else if UpperCase(Index) = 'LRFSPEC'  then Result := Piece(FKeyVariables, U, 3)
+  else if UpperCase(Index) = 'LRFDATE'  then Result := Piece(FKeyVariables, U, 4)
+  else if UpperCase(Index) = 'LRFURG'   then Result := Piece(FKeyVariables, U, 5)
+  else if UpperCase(Index) = 'LRFSCH'   then Result := Piece(FKeyVariables, U, 6)
+  else if UpperCase(Index) = 'PSJNOPC'  then Result := Piece(FKeyVariables, U, 7)
+  else if UpperCase(Index) = 'GMRCNOPD' then Result := Piece(FKeyVariables, U, 8)
+  else if UpperCase(Index) = 'GMRCNOAT' then Result := Piece(FKeyVariables, U, 9)
+  else if UpperCase(Index) = 'GMRCREAF' then Result := Piece(FKeyVariables, U, 10)
+  else                                       Result := '';
+end;
+
+procedure TfrmODBase.SetKeyVariables(const VarStr: string);
+begin
+  FKeyVariables := VarStr;
+end;
+
+procedure TfrmODBase.Validate(var AnErrMsg: string);
+const
+  TX_OR_DISABLED = 'Ordering has been disabled.  Press Quit.';
+  TX_PAST_START  = 'The start date may not be earlier than the present.';
+  TX_NO_LOCATION = 'A location must be identified.' + CRLF +
+                   '(Select File | Update Provider/Location)';
+  TX_NO_PROVIDER = 'A provider who is authorized to write orders must be indentified.' + CRLF +
+                   '(Select File | Update Provider/Location)';
+var
+  StartStr,x: string;
+  StartDt: TFMDateTime;
+begin
+  AnErrMsg := '';
+  if User.NoOrdering then AnErrMsg := 'Ordering has been disabled.  Press Quit.';
+  // take this out if we <don't> need to check for earlier start date/times
+  // should this check be against FMNow??
+  StartStr := Piece(Responses.IValueFor('START', 1), '.', 1);
+  if not IsFMDateTime(StartStr)
+    then StartDt := StrToFMDateTime(StartStr)
+    else StartDt := StrToFloat(StartStr);
+  if (StartDt > 0) and (StartDt < FMToday)
+    then AnErrMsg := 'The start date may not be earlier than the present.';
+  //frmFrame.UpdatePtInfoOnRefresh;
+  if (not Patient.Inpatient) and (Responses.EventIFN > 0) then x := ''
+  else
+  begin
+    if Encounter.Location = 0 then AnErrMsg := TX_NO_LOCATION;
+  end;
+  if (Encounter.Provider = 0) or (PersonHasKey(Encounter.Provider, 'PROVIDER') = False)
+    then AnErrMsg := TX_NO_PROVIDER;
+  if IsPFSSActive and Responses.PromptExists('VISITSTR') then
+    Responses.Update('VISITSTR', 1, Encounter.VisitStr, Encounter.VisitStr);
+end;
+
+{ Form Calls }
+
+procedure TfrmODBase.FormCreate(Sender: TObject);
+begin
+  inherited;
+  frmODBase   := Self;
+  FAcceptOK   := False;
+  FAutoAccept := False;
+  FChanging   := False;
+  FClosing    := False;
+  FFromQuit   := False;
+  FTestMode   := False;
+  FIncludeOIPI := True;
+  FEvtForPassDischarge := #0;
+  FCtrlInits  := TCtrlInits.Create;
+  FResponses  := TResponses.Create;
+  FPreserve   := TList.Create;
+  FIsIMO      := False;          //imo
+  FIsSupply := False;
+  {This next bit is mostly for the font size.  It also sets the default size of
+  order forms if it is not in the database.  This is handy if a new user wants
+  to have large fonts.  However, in the general case, this will be resized
+  through rMisc.SetFormPosition.}
+  if not AutoSizeDisabled then
+    ResizeFormToFont(self);
+  DoSetFontSize(MainFontSize);
+
+  imgMessage.Picture.Icon.Handle := LoadIcon(0, IDI_ASTERISK);
+  //if User.NoOrdering then cmdAccept.Enabled := False;
+  if uCore.User.NoOrdering then cmdAccept.Enabled := False;
+  FDlgFormID := OrderFormIDOnCreate;
+  FEvtID     := OrderEventIDOnCreate;
+  FEvtType   := OrderEventTypeOnCreate;
+  FEvtName   := OrderEventNameOnCreate;
+  DefaultButton := cmdAccept;
+end;
+
+procedure TfrmODBase.FormDestroy(Sender: TObject);
+begin
+  frmODBase := nil;
+  FCtrlInits.Free;
+  FResponses.Free;
+  FPreserve.Free;
+  //DestroyingOrderDialog;
+  if Assigned(FCallOnExit) then FCallOnExit;
+  if (Owner <> nil) and (Owner is TWinControl)
+    then SendMessage(TWinControl(Owner).Handle, UM_DESTROY, FRefNum, 0);
+  inherited;
+end;
+
+procedure TfrmODBase.FormKeyPress(Sender: TObject; var Key: Char);
+{ causes RETURN to be treated as pressing a tab key (need to have user preference) }
+begin
+  inherited;
+  if (Key = #13) and not (ActiveControl is TCustomMemo) then
+  begin
+    Key := #0;
+    Perform(WM_NEXTDLGCTL, 0, 0);
+  end;
+end;
+
+{ Accept & Quit Buttons }
+
+function TfrmODBase.AcceptOrderChecks: Boolean;
+{ returns True if order was accepted with order checks, false if order should be cancelled }
+var
+  StartDtTm: string;
+  OIList: TStringList;
+begin
+  Result := True;
+  Responses.OrderChecks.Clear;
+  if not OrderChecksEnabled then Exit;
+  OIList := TStringList.Create;
+  try
+    StatusText('Order Checking...');
+    Responses.BuildOCItems(OIList, StartDtTm, FillerID);
+    OrderChecksOnAccept(Responses.OrderChecks, FillerID, StartDtTm, OIList, DupORIFN);
+    DupORIFN := '';
+    StatusText('');
+    Result :=  AcceptOrderWithChecks(Responses.OrderChecks);
+  finally
+    OIList.Free;
+  end;
+end;
+
+function TfrmODBase.ValidSave: Boolean;
+const
+  TX_NO_SAVE     = 'This order cannot be saved for the following reason(s):' + CRLF + CRLF;
+  TX_NO_SAVE_CAP = 'Unable to Save Order';
+  TX_SAVE_ERR    = 'Unexpected error - it was not possible to save this order.';
+var
+  ErrMsg: string;
+  NewOrder: TOrder;
+  CanSign, OrderAction: Integer;
+  IsDelayOrder: boolean;
+  //thisSourceOrder: TOrder;
+begin
+  Result := True;
+  Validate(ErrMsg);
+  IsDelayOrder := False;
+  if Length(ErrMsg) > 0 then
+  begin
+    InfoBox(TX_NO_SAVE + ErrMsg, TX_NO_SAVE_CAP, MB_OK);
+    Result := False;
+    Exit;
+  end;
+  if not AcceptOrderChecks then
+  begin
+    if AskAnotherOrder(DialogIEN) then
+        InitDialog           // ClearDialogControls is in InitDialog
+      else
+        begin
+          ClearDialogControls;    // to allow form to close without prompting to save order
+          Close;
+        end;
+    Result := False;
+    Exit;
+  end;
+  if FTestMode then
+  begin
+    Result := False;
+    Exit;
+  end;
+  // LES validation checking for changed lab order
+  if not LESValidationCheck then Exit;
+  NewOrder := TOrder.Create;
+
+  Responses.SaveOrder(NewOrder, DialogIEN, FIsIMO);
+
+  if frmOrders.IsDefaultDlg then
+  begin
+    frmOrders.EventDefaultOrder := NewOrder.ID;
+    frmOrders.EvtOrderList.Add(NewOrder.EventPtr + '^' + NewOrder.ID);
+    frmOrders.IsDefaultDlg := False;
+  end;
+  if Length(DfltCopay)>0 then SetDefaultCoPayToNewOrder(NewOrder.ID, DfltCopay);
+  if (Length(FEvtName)>0) then
+  begin
+    NewOrder.EventName := 'Delayed ' + MixedCase(FEvtName);
+    FEvtName := '';
+  end;
+  if not ProcessOrderAcceptEventHook(NewOrder.ID, NewOrder.DGroup) then
+  begin
+    if NewOrder.ID <> '' then
+    begin
+      if (Encounter.Provider = User.DUZ) and User.CanSignOrders
+        then CanSign := CH_SIGN_YES
+        else CanSign := CH_SIGN_NA;
+      if NewOrder.Signature = OSS_NOT_REQUIRE then CanSign := CH_SIGN_NA;
+      if NewOrder.EventPtr <> '' then IsDelayOrder := True;
+      Changes.Add(CH_ORD, NewOrder.ID, NewOrder.Text, Responses.FViewName, CanSign,'',0, NewOrder.DGroupName, False,IsDelayOrder);
+
+    UBAGlobals.TargetOrderID := NewOrder.ID;
+
+      if Responses.EditOrder = '' then OrderAction := ORDER_NEW else OrderAction := ORDER_EDIT;
+      SendMessage(Application.MainForm.Handle, UM_NEWORDER, OrderAction, Integer(NewOrder));
+    end
+    else InfoBox(TX_SAVE_ERR, TX_NO_SAVE_CAP, MB_OK);
+  end;
+  NewOrder.Free;      // free here - recieving forms should get own copy using assign
+end;
+
+procedure TfrmODBase.cmdAcceptClick(Sender: TObject);
+const
+  TX_CMPTEVT = ' occurred since you started writing delayed orders. '
+    + 'The orders that were entered and signed have now been released. '
+    + 'Any unsigned orders will be released immediately upon signature. '
+    + #13#13
+    + 'To write new delayed orders for this event you need to click the write delayed orders button again and select the appropriate event. '
+    + 'Orders delayed to this same event will remain delayed until the event occurs again.'
+    + #13#13
+    + 'The Orders tab will now be refreshed and switched to the Active Orders view. '
+    + 'If you wish to continue to write active orders for this patient, '
+    + 'close this message window and continue as usual.';
+var
+  theGrpName: string;
+  alreadyClosed: boolean;
+  LateTrayFields: TLateTrayFields;
+  x, CxMsg: string;
+begin
+  FAcceptOK := False;
+  CIDCOkToSave := False;
+  alreadyClosed := False;
+  self.Responses.Cancel := False;
+  if frmOrders <> nil then
+  begin
+    if (frmOrders.TheCurrentView <> nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0) and IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN) then
+    begin
+      theGrpName := 'Delayed ' + frmOrders.TheCurrentView.EventDelay.EventName;
+      SaveAsCurrent := True;
+    end;
+  end;
+
+  // check for diet orders that will be auto-DCd because of start/stop overlaps
+  if Responses.Dialog = 'FHW1' then
+  begin
+    if (Self.EvtID <> 0) then
+    begin
+      CheckForAutoDCDietOrders(Self.EvtID, Self.DisplayGroup, '', CxMsg, cmdAccept);
+      if CxMsg <> '' then
+      begin
+        if InfoBox(CxMsg + CRLF + CRLF +
+           'Have you done either of the above?', 'Possible delayed order conflict',
+           MB_ICONWARNING or MB_YESNO) = ID_NO
+           then exit;
+      end;
+    end
+    else if FAutoAccept then
+    begin
+      x := CurrentDietText;
+      CheckForAutoDCDietOrders(0, Self.DisplayGroup, x, CxMsg, nil);
+      if CxMsg <> '' then
+      begin
+        if InfoBox(CxMsg + CRLF +
+                  'Are you sure?', 'Confirm', MB_ICONWARNING or MB_YESNO) = ID_NO then
+        begin
+          //AbortOrder := True;
+          FAcceptOK := FALSE;
+          //cmdQuitClick(Self);
+          exit;
+        end;
+      end;
+    end;
+  end;
+
+  if ValidSave then
+  begin
+    FAcceptOK := True;
+    CIDCOkToSave := True;
+    with Responses do
+      if not FAutoAccept and (CopyOrder = '') and (EditOrder = '') and (TransferOrder = '')
+        and AskAnotherOrder(DialogIEN)
+        then InitDialog           // ClearDialogControls is in InitDialog
+        else
+        begin
+          LateTrayFields.LateMeal := #0;
+          with Responses do
+            if FAutoAccept and ((Dialog = 'FHW1') or (Dialog = 'FHW OP MEAL') or (Dialog ='FHW SPECIAL MEAL')) then
+            begin
+              LateTrayCheck(Responses, Self.EvtID, not OrderForInpatient, LateTrayFields);
+            end;
+          ClearDialogControls;    // to allow form to close without prompting to save order
+          with LateTrayFields do if LateMeal <> #0 then LateTrayOrder(LateTrayFields, OrderForInpatient);
+          Close;
+          alreadyClosed := True;
+        end;
+    if NoFresh then
+    begin
+      if SaveAsCurrent then
+      begin
+        SaveAsCurrent := False;
+        with Responses do
+        begin
+          if not alreadyClosed then
+          begin
+            ClearDialogControls;
+            Close;
+          end;
+        end;
+        frmOrders.GroupChangesUpdate(theGrpName);
+        Exit;
+      end;
+    end else
+    begin
+      if SaveAsCurrent then
+      begin
+        SaveAsCurrent := False;
+        with Responses do
+        begin
+          if not alreadyClosed then
+          begin
+            ClearDialogControls;
+            Close;
+          end;
+        end;
+        frmOrders.GroupChangesUpdate(theGrpName);
+        //EDONeedRefresh := True;
+        Exit;
+      end;
+    end
+  end; {if ValidSave}
+  if SaveAsCurrent then
+    SaveAsCurrent := False;
+end;
+
+procedure TfrmODBase.cmdQuitClick(Sender: TObject);
+begin
+  inherited;
+  FFromQuit := True;
+  Close;
+end;
+
+procedure TfrmODBase.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  // unlock an order that is being edited if accept wasn't pressed
+  //   this unlock is currently done in ActivateOrderDialog
+  //with Responses do if (Length(EditOrder) > 0) and (not FAcceptOK) then UnlockOrder(EditOrder);
+  PopKeyVars;
+  SaveUserBounds(Self);
+  FClosing := True;
+  Action := caFree;
+  (*
+  if User.NoOrdering then Exit;
+  if Length(memOrder.Text) > 0 then
+    if InfoBox(TX_ACCEPT + memOrder.Text, TX_ACCEPT_CAP, MB_YESNO) = ID_YES then
+      if not ValidSave then
+      begin
+        FClosing := False;
+        Action := caNone;
+      end;
+  *)
+end;
+
+procedure TfrmODBase.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+begin
+  inherited;
+  //self.Responses.Cancel := False;
+  if User.NoOrdering then Exit;
+  if FAbortOrder then exit;
+  if FOrderAction in [ORDER_EDIT, ORDER_COPY] then Exit;  // don't invoke verify dialog
+  if FOrderAction = ORDER_QUICK then Exit;                // should this be here??
+  if frmFrame.ContextChanging then
+    begin
+      // close any sub-dialogs created by order dialog FIRST!!
+      exit;
+    end;
+  if FFromQuit = False then updateSig;
+  if Length(memOrder.Text) > 0 then
+  begin
+    if InfoBox(TX_ACCEPT + memOrder.Text, TX_ACCEPT_CAP, MB_YESNO) = ID_YES
+      then CanClose := ValidSave
+      else memOrder.Text := '';  // so don't return False on subsequent CloseQuery
+  end;
+end;
+
+procedure TfrmODBase.TabClose(var CanClose: Boolean);
+begin
+  inherited;
+  CanClose := True;
+  if Length(memOrder.Text) > 0 then
+    if InfoBox(TX_ACCEPT + memOrder.Text, TX_ACCEPT_CAP, MB_YESNO) = ID_YES then
+      if not ValidSave then CanClose := False;
+  if CanClose then InitDialog;
+end;
+
+procedure TfrmODBase.updateSig;
+begin
+
+end;
+
+procedure TfrmODBase.memMessageMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  ShowOrderMessage( False );
+end;
+
+procedure TfrmODBase.SetDefaultCoPay(AnOrderID: string);
+begin
+  FDfltCopay := GetDefaultCopay(AnOrderID);
+end;
+
+procedure TfrmODBase.DoSetFontSize( FontSize: integer);
+begin
+  if AutoSizeDisabled then
+    ResizeAnchoredFormToFont( Self )
+  else
+  begin
+    //You get to resize the window yourself!
+    Font.Size := FontSize;
+    memMessage.DefAttributes.Size := FontSize;
+  end;
+end;
+
+procedure TfrmODBase.SetFontSize( FontSize: integer);
+begin
+  DoSetFontSize( FontSize );
+end;
+
+function TResponses.GetIENForPrompt(const APromptID: string): Integer;
+var
+  i: Integer;
+begin
+  Result := 0;
+  with FPrompts do for i := 0 to Count - 1 do with TPrompt(Items[i]) do
+    if (ID = APromptID) then
+    begin
+      Result := IEN;
+      break;
+    end;
+end;
+
+procedure TfrmODBase.pnlMessageExit(Sender: TObject);
+begin
+  inherited;
+  ShowOrderMessage(False);
+end;
+
+procedure TfrmODBase.pnlMessageMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  FMessageClickX := X;
+  FMessageClickY := Y;
+end;
+
+procedure TfrmODBase.pnlMessageMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  if (ssLeft in Shift) then
+    pnlMessage.SetBounds(pnlMessage.Left + X - FMessageClickX, pnlMessage.Top + Y - FMessageClickY, pnlMessage.Width, pnlMessage.Height);
+end;
+
+function TfrmODBase.LESValidationCheck: boolean;
+var
+  idx: integer;
+  LESGrpList,LESRejectedReason: TStringList;
+  IsLESOrder: boolean;
+  TempMSG,LESODInfo: string;
+begin
+  Result := True;
+  if Length(Responses.EditOrder)>1 then
+  begin
+    LESGrpList := TStringList.Create;
+    PiecesToList(GetDispGroupForLES,'^',LESGrpList);
+    IsLESOrder := False;
+    for idx:=0 to LESGrpList.Count - 1 do
+      if StrToIntDef(LESGrpList[idx],0) = Responses.DisplayGroup then
+      begin
+        IsLESOrder := True;
+        Break;
+      end;
+    if IsLESOrder then
+    begin
+      TempMSG := '';
+      LESODInfo := Patient.DFN +
+                  '^' + Responses.IValueFor('ORDERABLE',1) +
+                  '^' + IntToStr(Encounter.Location) +
+                  '^' + IntToStr(Encounter.Provider) +
+                  '^' + Responses.IValueFor('START',1);
+      LESRejectedReason := TStringList.Create;
+      LESValidationForChangedLabOrder(LESRejectedReason,LESODInfo);
+      if LESRejectedReason.Count > 0 then
+      begin
+        for idx := 0 to LESRejectedReason.Count - 1 do
+        begin
+          if Length(LESRejectedReason[idx])>0 then
+            TempMSG := TempMSG + #13 + LESRejectedReason[idx];
+        end;
+        if Length(TempMSG)>0 then
+        begin
+          ShowMsg(TempMSG);
+          Result := False;
+        end;
+      end;
+    end;
+  end;
+end;
+
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeEvtDisp.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeEvtDisp.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeEvtDisp.dfm	(revision 1676)
@@ -0,0 +1,101 @@
+inherited frmChangeEventDisp: TfrmChangeEventDisp
+  Left = 344
+  Top = 230
+  Caption = 'Change release event'
+  ClientHeight = 417
+  ClientWidth = 400
+  OldCreateOrder = False
+  Position = poDesktopCenter
+  ExplicitWidth = 408
+  ExplicitHeight = 444
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblTop: TMemo [0]
+    Left = 0
+    Top = 0
+    Width = 400
+    Height = 37
+    TabStop = False
+    Align = alTop
+    BorderStyle = bsNone
+    Color = clBtnFace
+    ReadOnly = True
+    TabOrder = 2
+  end
+  object pnlTop: TPanel [1]
+    Left = 0
+    Top = 37
+    Width = 400
+    Height = 339
+    Align = alClient
+    BorderStyle = bsSingle
+    TabOrder = 0
+    object lstCVOrders: TCaptionListBox
+      Left = 1
+      Top = 1
+      Width = 394
+      Height = 333
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      ItemHeight = 13
+      TabOrder = 0
+      OnDrawItem = lstCVOrdersDrawItem
+      OnMeasureItem = lstCVOrdersMeasureItem
+    end
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 376
+    Width = 400
+    Height = 41
+    Align = alBottom
+    TabOrder = 1
+    DesignSize = (
+      400
+      41)
+    object cmdOK: TButton
+      Left = 230
+      Top = 12
+      Width = 75
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 314
+      Top = 12
+      Width = 75
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lstCVOrders'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmChangeEventDisp'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeEvtDisp.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeEvtDisp.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeEvtDisp.pas	(revision 1676)
@@ -0,0 +1,111 @@
+unit fODChangeEvtDisp;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ExtCtrls, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmChangeEventDisp = class(TfrmAutoSz)
+    lblTop: TMemo;
+    pnlTop: TPanel;
+    lstCVOrders: TCaptionListBox;
+    pnlBottom: TPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure lstCVOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure lstCVOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    FOKPressed: boolean;
+  public
+    { Public declarations }
+  end;
+
+function DispOrdersForEventChange(AnOrderList: TList; ACap: string): boolean;
+
+implementation
+
+{$R *.DFM}
+uses rOrders;
+
+function DispOrdersForEventChange(AnOrderList: TList; ACap: string): boolean;
+var
+  frmChangeEventDisp: TfrmChangeEventDisp;
+  i: integer;
+  AnOrder: TOrder;
+begin
+  frmChangeEventDisp := TFrmChangeEventDisp.Create(Application);
+  frmChangeEventDisp.lblTop.Text := ACap;
+  frmChangeEventDisp.lstCVOrders.Caption := ACap;
+  for i := 0 to AnOrderList.Count - 1 do
+  begin
+    AnOrder := TOrder(AnOrderList[i]);
+    frmChangeEventDisp.lstCVOrders.Items.Add(AnOrder.Text);
+  end;
+  frmChangeEventDisp.ShowModal;
+  Result := frmChangeEventDisp.FOKPressed;
+end;
+
+procedure TfrmChangeEventDisp.lstCVOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+begin
+  inherited;
+  x := '';
+  ARect := Rect;
+  with lstCVOrders do
+  begin
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(0, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := Items[Index];
+      DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+    end;
+  end;
+end;
+
+
+procedure TfrmChangeEventDisp.lstCVOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  x:string;
+  ARect: TRect;
+begin
+  inherited;
+  AHeight := MainFontHeight + 3;
+  with lstCVOrders do if Index < Items.Count then
+  begin
+    x := Items[index];
+    ARect := ItemRect(Index);
+    AHeight  := DrawText(Canvas.Handle, PChar(x), Length(x), ARect,
+          DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
+    if AHeight > 255 then AHeight := 255;
+    if AHeight <  13 then AHeight := 13;
+  end;
+end;
+
+procedure TfrmChangeEventDisp.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  FOKPressed := True;
+  Close;
+end;
+
+procedure TfrmChangeEventDisp.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FOKPressed := False;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeUnreleasedRenew.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeUnreleasedRenew.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeUnreleasedRenew.dfm	(revision 1676)
@@ -0,0 +1,186 @@
+inherited frmODChangeUnreleasedRenew: TfrmODChangeUnreleasedRenew
+  Left = 240
+  Top = 163
+  Caption = 'Change Unreleased Renewed Order'
+  ClientHeight = 171
+  ClientWidth = 529
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  ExplicitWidth = 537
+  ExplicitHeight = 198
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel2: TPanel [0]
+    Left = 0
+    Top = 57
+    Width = 529
+    Height = 82
+    Align = alClient
+    TabOrder = 0
+    ExplicitHeight = 81
+    object lblRefill: TLabel
+      Left = 9
+      Top = 15
+      Width = 28
+      Height = 13
+      Caption = 'Refills'
+    end
+    object lblPickUp: TLabel
+      Left = 216
+      Top = 15
+      Width = 36
+      Height = 13
+      Caption = 'Pick up'
+    end
+    object edtRefill: TCaptionEdit
+      Left = 8
+      Top = 34
+      Width = 121
+      Height = 21
+      TabOrder = 0
+    end
+    object cboPickup: TORComboBox
+      Left = 216
+      Top = 32
+      Width = 145
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      CharsNeedMatch = 1
+    end
+  end
+  object Panel3: TPanel [1]
+    Left = 0
+    Top = 57
+    Width = 529
+    Height = 82
+    Align = alClient
+    TabOrder = 3
+    ExplicitHeight = 81
+    object Label1: TLabel
+      Left = 61
+      Top = 16
+      Width = 53
+      Height = 13
+      Caption = 'Begin Date'
+    end
+    object Label2: TLabel
+      Left = 274
+      Top = 17
+      Width = 45
+      Height = 13
+      Caption = 'End Date'
+    end
+    object txtStart: TORDateBox
+      Left = 61
+      Top = 39
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Begin Date'
+    end
+    object txtStop: TORDateBox
+      Left = 274
+      Top = 39
+      Width = 121
+      Height = 21
+      TabOrder = 1
+      DateOnly = False
+      RequireTime = False
+      Caption = 'End Date'
+    end
+  end
+  object memOrder: TCaptionMemo [2]
+    Left = 0
+    Top = 0
+    Width = 529
+    Height = 57
+    Align = alTop
+    BevelInner = bvLowered
+    BevelOuter = bvRaised
+    Color = clBtnFace
+    Lines.Strings = (
+      '')
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 2
+  end
+  object Panel1: TPanel [3]
+    Left = 0
+    Top = 139
+    Width = 529
+    Height = 32
+    Align = alBottom
+    TabOrder = 1
+    ExplicitTop = 138
+    object btnOK: TButton
+      Left = 348
+      Top = 7
+      Width = 75
+      Height = 20
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 433
+      Top = 7
+      Width = 75
+      Height = 20
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = edtRefill'
+        'Status = stsDefault')
+      (
+        'Component = cboPickup'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = txtStart'
+        'Status = stsDefault')
+      (
+        'Component = txtStop'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmODChangeUnreleasedRenew'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeUnreleasedRenew.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeUnreleasedRenew.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChangeUnreleasedRenew.pas	(revision 1676)
@@ -0,0 +1,153 @@
+unit fODChangeUnreleasedRenew;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ExtCtrls, StdCtrls, ORCtrls, fAutoSz, uOrders, ORFn, ORDtTm, rOrders,
+  VA508AccessibilityManager;
+
+type
+  TfrmODChangeUnreleasedRenew = class(TFrmAutoSz)
+    memOrder: TCaptionMemo;
+    Panel1: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    Panel2: TPanel;
+    edtRefill: TCaptionEdit;
+    lblRefill: TLabel;
+    lblPickUp: TLabel;
+    cboPickup: TORComboBox;
+    Panel3: TPanel;
+    Label1: TLabel;
+    Label2: TLabel;
+    txtStart: TORDateBox;
+    txtStop: TORDateBox;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+  private
+    OKPressed: boolean;
+    FCategory: integer;
+  public
+    { Public declarations }
+  end;
+
+procedure ExecuteChangeRenewedOrder(const AnID: string; var param1, param2: string; Category: integer);
+
+implementation
+
+{$R *.dfm}
+const
+  TX_ERR_REFILL = 'Refills must be a number from 0 to 11.';
+  TC_ERR_REFILL = 'Refills';
+  TC_INVALID_DATE = 'Unable to interpret date/time entry.';
+  TX_BAD_START   = 'The start date is not valid.';
+  TX_BAD_STOP    = 'The stop date is not valid.';
+  TX_STOPSTART   = 'The stop date must be after the start date.';
+
+procedure ExecuteChangeRenewedOrder(const AnID: string; var param1, param2: string; Category: integer);
+var
+  frmODChangeUnreleasedRenew: TfrmODChangeUnreleasedRenew;
+  theText: string;
+  tmpRefills: integer;
+begin
+  tmpRefills := 0;
+  theText := Trim(RetrieveOrderText(AnID));
+  if Pos('>> RENEW', UpperCase(theText)) = 1 then Delete(theText,1,length('>> RENEW'))
+  else if Pos('RENEW',UpperCase(theText))= 1 then Delete(theText,1,length('RENEW'));
+  frmODChangeUnreleasedRenew := TfrmODChangeUnreleasedRenew.Create(Application);
+  try
+    frmODChangeUnreleasedRenew.FCategory := Category;
+    ResizeFormToFont(TForm(frmODChangeUnreleasedRenew));
+    if Category = 0 then
+    begin
+      frmODChangeUnreleasedRenew.Panel3.Visible := False;
+      tmpRefills := StrToIntDef(param1,0);
+      frmODChangeUnreleasedRenew.edtRefill.Text := param1;
+      frmODChangeUnreleasedRenew.cboPickup.SelectByID(param2);
+      frmODChangeUnreleasedRenew.memOrder.SetTextBuf(PChar(theText));
+    end
+    else if Category = 1 then
+    begin
+      frmODChangeUnreleasedRenew.Panel2.Visible := false;
+      frmODChangeUnreleasedRenew.txtStart.Text := param1;
+      frmODChangeUnreleasedRenew.txtStop.Text  := param2;
+      frmODChangeUnreleasedRenew.memOrder.SetTextBuf(PChar(theText));
+    end;
+    frmODChangeUnreleasedRenew.ShowModal;
+    if frmODChangeUnreleasedRenew.OKPressed then
+    begin
+      if Category = 0 then
+      begin
+        tmpRefills := StrToIntDef(frmODChangeUnreleasedRenew.edtRefill.Text, tmpRefills);
+        param1 := IntToStr(tmpRefills);
+        param2 := frmODChangeUnreleasedRenew.cboPickup.ItemID;
+      end
+      else if Category = 1 then
+      begin
+        param1 := frmODChangeUnreleasedRenew.txtStart.Text;
+        param2 := frmODChangeUnreleasedRenew.txtStop.Text;
+      end;
+    end;
+  finally
+    frmODChangeUnreleasedRenew.Release;
+  end;
+end;
+
+procedure TfrmODChangeUnreleasedRenew.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  with cboPickup.Items do
+  begin
+    Add('W^at Window');
+    Add('M^by Mail');
+    Add('C^in Clinic');
+  end;
+end;
+
+procedure TfrmODChangeUnreleasedRenew.btnCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmODChangeUnreleasedRenew.btnOKClick(Sender: TObject);
+var
+  NumRefills: Integer;
+  x, ErrMsg: string;
+begin
+  inherited;
+  if panel2.Visible then
+  begin
+    NumRefills := StrToIntDef(edtRefill.Text, -1);
+    if (NumRefills < 0) or (NumRefills > 11) then
+    begin
+      InfoBox(TX_ERR_REFILL, TC_ERR_REFILL, MB_OK);
+      Exit;
+    end;
+  end
+  else if panel3.Visible then
+  begin
+    ErrMsg := '';
+    txtStart.Validate(x);
+    if Length(x) > 0   then ErrMsg := ErrMsg + TX_BAD_START + CRLF;
+    with txtStop do
+    begin
+      Validate(x);
+      if Length(x) > 0 then ErrMsg := ErrMsg + TX_BAD_STOP + CRLF;
+      if (Length(Text) > 0) and (FMDateTime <= txtStart.FMDateTime)
+                       then ErrMsg := ErrMsg + TX_STOPSTART;
+    end;
+    if Length(ErrMsg) > 0 then
+    begin
+      InfoBox(ErrMsg, TC_INVALID_DATE, MB_OK);
+      Exit;
+    end;
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChild.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChild.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChild.dfm	(revision 1676)
@@ -0,0 +1,103 @@
+inherited frmODChild: TfrmODChild
+  Left = 433
+  Top = 271
+  Caption = 'Associated Complex Orders'
+  ClientHeight = 426
+  ClientWidth = 504
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 512
+  ExplicitHeight = 453
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblWarning: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 504
+    Height = 59
+    Align = alTop
+    AutoSize = False
+    Caption = 
+      'You have requested to discontinue a medication order which was e' +
+      'ntered as part of a complex order. The following are the orders ' +
+      'associated with the same complex order. Do you want to dicsconti' +
+      'nue all of these orders?'
+    WordWrap = True
+  end
+  object Panel1: TPanel [1]
+    Left = 0
+    Top = 59
+    Width = 504
+    Height = 326
+    Align = alClient
+    BevelOuter = bvNone
+    BorderWidth = 3
+    BorderStyle = bsSingle
+    TabOrder = 0
+    object lstODComplex: TListBox
+      Left = 3
+      Top = 3
+      Width = 494
+      Height = 316
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      ItemHeight = 16
+      TabOrder = 0
+      OnDrawItem = lstODComplexDrawItem
+      OnMeasureItem = lstODComplexMeasureItem
+    end
+  end
+  object Panel2: TPanel [2]
+    Left = 0
+    Top = 385
+    Width = 504
+    Height = 41
+    Align = alBottom
+    TabOrder = 1
+    DesignSize = (
+      504
+      41)
+    object btnOK: TButton
+      Left = 332
+      Top = 12
+      Width = 75
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 416
+      Top = 12
+      Width = 75
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = lstODComplex'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmODChild'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChild.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChild.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODChild.pas	(revision 1676)
@@ -0,0 +1,137 @@
+unit fODChild;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, fAutoSZ, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmODChild = class(TfrmAutoSz)
+    lblWarning: TLabel;
+    Panel1: TPanel;
+    lstODComplex: TListBox;
+    Panel2: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure lstODComplexDrawItem(Control: TWinControl; Index: Integer;
+      TheRect: TRect; State: TOwnerDrawState);
+    procedure lstODComplexMeasureItem(Control: TWinControl; Index: Integer;
+      var TheHeight: Integer);
+    procedure btnOKClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+  private
+    { Private declarations }
+    FCmdOK: boolean;
+  public
+    { Public declarations }
+  end;
+
+function ActionOnComplexOrder(AnList: TStringList; CaptionTxt: string = ''; ShowCancel: boolean = False): boolean;
+implementation
+
+{$R *.DFM}
+function ActionOnComplexOrder(AnList: TStringList; CaptionTxt: string; ShowCancel: boolean): boolean;
+var
+  i: integer;
+  frmODChild: TfrmODChild;
+begin
+  frmODChild := TfrmODChild.Create(nil);
+  try
+    try
+      ResizeFormToFont(TForm(frmODChild));
+      if Length(CaptionTxt)>0 then
+        frmODChild.lblWarning.Caption := CaptionTxt;
+
+      for i := 0 to AnList.count - 1 do
+        frmODChild.lstODComplex.Items.Add(AnList[i]);
+
+      if not ShowCancel then
+      begin
+        frmODChild.btnOK.Visible := False;
+        frmODChild.btnCancel.Caption := 'OK';
+      end;
+
+      frmODChild.ShowModal;
+      if frmODChild.FCmdOK then Result := True else Result := False;
+    except
+      on e: Exception do
+        Result := False;
+    end;
+  finally
+    frmODChild.Release;
+  end;
+end;
+
+procedure TfrmODChild.FormCreate(Sender: TObject);
+begin
+  FCmdOK := False;
+end;
+
+procedure TfrmODChild.lstODComplexDrawItem(Control: TWinControl;
+  Index: Integer; TheRect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstODComplex do
+  begin
+    ARect := TheRect;
+    ARect.Left := ARect.Left + 2;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    SaveColor := Canvas.Brush.Color;
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := Piece(Items[index],'^',2);
+      DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+      Canvas.Brush.Color := SaveColor;
+      ARect.Right := ARect.Right + 4;
+    end;
+  end;
+end;
+
+procedure TfrmODChild.lstODComplexMeasureItem(Control: TWinControl;
+  Index: Integer; var TheHeight: Integer);
+var
+  x :string;
+  tempHeight: integer;
+  R: TRect;
+begin
+  inherited;
+  tempHeight := 0;
+  TheHeight := MainFontHeight + 2;
+  with lstODComplex do if Index < Items.Count then
+  begin
+    R := ItemRect(Index);
+    R.Left   := 0;
+    R.Right  := R.Right - 4;
+    R.Top    := 0;
+    R.Bottom := 0;
+    x := Piece(Items[index],'^',2);
+    TempHeight := WrappedTextHeightByFont(Canvas, Font, x, R);
+    TempHeight := HigherOf(TempHeight,TheHeight);
+    if TempHeight > 255 then TempHeight := 255;
+    if TempHeight < 13 then TempHeight := 13;
+  end;
+  TheHeight := TempHeight;
+end;
+
+procedure TfrmODChild.btnOKClick(Sender: TObject);
+begin
+  FCmdOK := True;
+  Close;
+end;
+
+procedure TfrmODChild.btnCancelClick(Sender: TObject);
+begin
+  FCmdOK := False;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDiet.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDiet.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDiet.dfm	(revision 1676)
@@ -0,0 +1,1253 @@
+inherited frmODDiet: TfrmODDiet
+  Left = 541
+  Top = 398
+  Width = 532
+  Height = 291
+  Caption = 'Diet Order'
+  ExplicitWidth = 532
+  ExplicitHeight = 291
+  PixelsPerInch = 96
+  TextHeight = 13
+  object nbkDiet: TPageControl [0]
+    Left = 0
+    Top = 0
+    Width = 524
+    Height = 194
+    ActivePage = pgeOutPt
+    Align = alTop
+    TabOrder = 4
+    TabStop = False
+    OnChange = nbkDietChange
+    OnChanging = nbkDietChanging
+    object pgeDiet: TTabSheet
+      Caption = 'Diet'
+      object lblDietAvail: TLabel
+        Left = 4
+        Top = 0
+        Width = 127
+        Height = 13
+        Caption = 'Available Diet Components'
+      end
+      object lblDietSelect: TLabel
+        Left = 200
+        Top = 0
+        Width = 126
+        Height = 13
+        Caption = 'Selected Diet Components'
+      end
+      object lblComment: TLabel
+        Left = 200
+        Top = 119
+        Width = 92
+        Height = 13
+        Caption = 'Special Instructions'
+      end
+      object lblStart: TLabel
+        Left = 393
+        Top = 0
+        Width = 96
+        Height = 13
+        Caption = 'Effective Date/Time'
+      end
+      object lblStop: TLabel
+        Left = 393
+        Top = 39
+        Width = 100
+        Height = 13
+        Caption = 'Expiration Date/Time'
+      end
+      object lblDelivery: TLabel
+        Left = 393
+        Top = 77
+        Width = 38
+        Height = 13
+        Caption = 'Delivery'
+      end
+      object cboDietAvail: TORComboBox
+        Left = 4
+        Top = 14
+        Width = 188
+        Height = 140
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Available Diet Components'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        OnExit = cboDietAvailExit
+        OnMouseClick = cboDietAvailMouseClick
+        OnNeedData = cboDietAvailNeedData
+        CharsNeedMatch = 1
+      end
+      object lstDietSelect: TORListBox
+        Left = 200
+        Top = 14
+        Width = 185
+        Height = 71
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        Caption = 'Selected Diet Components'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object cmdRemove: TButton
+        Left = 313
+        Top = 85
+        Width = 72
+        Height = 17
+        Caption = 'Remove'
+        TabOrder = 2
+        OnClick = cmdRemoveClick
+      end
+      object txtDietComment: TCaptionEdit
+        Left = 200
+        Top = 133
+        Width = 308
+        Height = 21
+        MaxLength = 80
+        TabOrder = 3
+        OnChange = DietChange
+        Caption = 'Special Instructions'
+      end
+      object calDietStart: TORDateBox
+        Left = 393
+        Top = 14
+        Width = 115
+        Height = 21
+        TabOrder = 4
+        Text = 'Now'
+        OnChange = DietChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'Effective Date/Time'
+      end
+      object calDietStop: TORDateBox
+        Left = 393
+        Top = 52
+        Width = 115
+        Height = 21
+        TabOrder = 5
+        OnChange = DietChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'Expiration Date/Time'
+      end
+      object cboDelivery: TORComboBox
+        Left = 393
+        Top = 90
+        Width = 115
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Delivery'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 6
+        OnChange = DietChange
+        CharsNeedMatch = 1
+      end
+      object chkCancelTubefeeding: TCheckBox
+        Left = 393
+        Top = 114
+        Width = 115
+        Height = 17
+        Caption = 'Cancel Tubefeeding'
+        State = cbGrayed
+        TabOrder = 7
+        Visible = False
+        OnClick = DietChange
+      end
+    end
+    object pgeOutPt: TTabSheet
+      Caption = 'Outpatient Meals'
+      object lblOPStart: TLabel
+        Left = 292
+        Top = 1
+        Width = 48
+        Height = 13
+        Caption = 'Start Date'
+      end
+      object lblOPStop: TLabel
+        Left = 292
+        Top = 37
+        Width = 45
+        Height = 13
+        Caption = 'End Date'
+      end
+      object lblOPDietAvail: TLabel
+        Left = 0
+        Top = 1
+        Width = 70
+        Height = 13
+        Caption = 'Available Diets'
+      end
+      object lblOPComment: TLabel
+        Left = 4
+        Top = 128
+        Width = 92
+        Height = 13
+        Caption = 'Special Instructions'
+      end
+      object lblOPDelivery: TLabel
+        Left = 292
+        Top = 74
+        Width = 38
+        Height = 13
+        Caption = 'Delivery'
+      end
+      object lblOPSelect: TLabel
+        Left = 0
+        Top = 39
+        Width = 64
+        Height = 13
+        Caption = 'Selected Diet'
+      end
+      object grpOPMeal: TKeyClickRadioGroup
+        Left = 168
+        Top = 11
+        Width = 110
+        Height = 107
+        Caption = ' Meal '
+        ItemIndex = 3
+        Items.Strings = (
+          'Breakfast'
+          'Lunch'
+          'Evening'
+          '<none selected>')
+        TabOrder = 3
+        TabStop = True
+        OnClick = grpOPMealClick
+      end
+      object grpOPDoW: TGroupBox
+        Left = 415
+        Top = 5
+        Width = 93
+        Height = 155
+        Caption = 'Days of Week'
+        TabOrder = 8
+        object chkOPMonday: TCheckBox
+          Left = 8
+          Top = 15
+          Width = 80
+          Height = 17
+          Caption = 'Monday'
+          TabOrder = 0
+          OnClick = OPChange
+        end
+        object chkOPTuesday: TCheckBox
+          Left = 8
+          Top = 35
+          Width = 80
+          Height = 17
+          Caption = 'Tuesday'
+          TabOrder = 1
+          OnClick = OPChange
+        end
+        object chkOPWednesday: TCheckBox
+          Left = 8
+          Top = 54
+          Width = 80
+          Height = 17
+          Caption = 'Wednesday'
+          TabOrder = 2
+          OnClick = OPChange
+        end
+        object chkOPThursday: TCheckBox
+          Left = 8
+          Top = 73
+          Width = 80
+          Height = 17
+          Caption = 'Thursday'
+          TabOrder = 3
+          OnClick = OPChange
+        end
+        object chkOPFriday: TCheckBox
+          Left = 8
+          Top = 92
+          Width = 80
+          Height = 17
+          Caption = 'Friday'
+          TabOrder = 4
+          OnClick = OPChange
+        end
+        object chkOPSaturday: TCheckBox
+          Left = 8
+          Top = 111
+          Width = 80
+          Height = 17
+          Caption = 'Saturday'
+          TabOrder = 5
+          OnClick = OPChange
+        end
+        object chkOPSunday: TCheckBox
+          Left = 8
+          Top = 130
+          Width = 80
+          Height = 17
+          Caption = 'Sunday'
+          TabOrder = 6
+          OnClick = OPChange
+        end
+      end
+      object calOPStart: TORDateBox
+        Left = 292
+        Top = 14
+        Width = 120
+        Height = 21
+        TabOrder = 4
+        OnChange = calOPStartChange
+        OnEnter = calOPStartEnter
+        OnExit = calOPStartExit
+        DateOnly = True
+        RequireTime = False
+        Caption = 'Start Date'
+      end
+      object calOPStop: TORDateBox
+        Left = 292
+        Top = 50
+        Width = 120
+        Height = 21
+        TabOrder = 5
+        OnChange = calOPStopChange
+        DateOnly = True
+        RequireTime = False
+        Caption = 'End Date'
+      end
+      object cboOPDietAvail: TORComboBox
+        Left = 0
+        Top = 16
+        Width = 157
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Available Diet Components'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        OnExit = cboDietAvailExit
+        OnKeyDown = cboOPDietAvailKeyDown
+        OnMouseClick = cboOPDietAvailMouseClick
+        CharsNeedMatch = 1
+      end
+      object txtOPDietComment: TCaptionEdit
+        Left = 3
+        Top = 143
+        Width = 404
+        Height = 21
+        MaxLength = 80
+        TabOrder = 11
+        OnChange = OPChange
+        Caption = 'Special Instructions'
+      end
+      object cboOPDelivery: TORComboBox
+        Left = 292
+        Top = 86
+        Width = 120
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Delivery'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 6
+        OnChange = OPChange
+        CharsNeedMatch = 1
+      end
+      object lstOPDietSelect: TORListBox
+        Left = 0
+        Top = 53
+        Width = 156
+        Height = 56
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        Caption = 'Selected Diet Components'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+        OnChange = OPChange
+      end
+      object cmdOPRemove: TButton
+        Left = 85
+        Top = 110
+        Width = 72
+        Height = 17
+        Caption = 'Remove'
+        TabOrder = 2
+        OnClick = cmdOPRemoveClick
+      end
+      object chkOPCancelTubefeeding: TCheckBox
+        Left = 292
+        Top = 112
+        Width = 115
+        Height = 17
+        Caption = 'Cancel Tubefeeding'
+        State = cbGrayed
+        TabOrder = 7
+        Visible = False
+        OnClick = OPChange
+      end
+    end
+    object pgeTubefeeding: TTabSheet
+      Caption = 'Tubefeeding'
+      object lblTFProductList: TLabel
+        Left = 4
+        Top = 0
+        Width = 105
+        Height = 13
+        Caption = 'Tubefeeding Products'
+      end
+      object lblTFComment: TLabel
+        Left = 4
+        Top = 119
+        Width = 92
+        Height = 13
+        Caption = 'Special Instructions'
+      end
+      object lblTFStrength: TLabel
+        Left = 288
+        Top = 0
+        Width = 40
+        Height = 13
+        Caption = 'Strength'
+      end
+      object lblTFQuantity: TLabel
+        Left = 352
+        Top = 0
+        Width = 39
+        Height = 13
+        Caption = 'Quantity'
+      end
+      object lblTFProduct: TLabel
+        Left = 152
+        Top = 0
+        Width = 37
+        Height = 13
+        Caption = 'Product'
+      end
+      object lblTFAmount: TLabel
+        Left = 428
+        Top = 0
+        Width = 36
+        Height = 13
+        Caption = 'Amount'
+      end
+      object lblOPTFStart: TLabel
+        Left = 341
+        Top = 90
+        Width = 51
+        Height = 13
+        Caption = 'Start Date:'
+      end
+      object cboProduct: TORComboBox
+        Left = 4
+        Top = 14
+        Width = 140
+        Height = 97
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Tubefeeding Products'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        OnExit = cboProductExit
+        OnMouseClick = cboProductMouseClick
+        CharsNeedMatch = 1
+      end
+      object txtTFComment: TCaptionEdit
+        Left = 6
+        Top = 133
+        Width = 504
+        Height = 21
+        MaxLength = 240
+        TabOrder = 8
+        OnChange = TFChange
+        Caption = 'Special Instructions'
+      end
+      object grdSelected: TCaptionStringGrid
+        Left = 152
+        Top = 14
+        Width = 356
+        Height = 63
+        ColCount = 4
+        DefaultColWidth = 88
+        DefaultRowHeight = 19
+        FixedCols = 0
+        RowCount = 1
+        FixedRows = 0
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goDrawFocusSelected]
+        ScrollBars = ssVertical
+        TabOrder = 1
+        OnDrawCell = grdSelectedDrawCell
+        OnSelectCell = grdSelectedSelectCell
+        Caption = 'Selected Products'
+      end
+      object cmdTFRemove: TButton
+        Left = 436
+        Top = 77
+        Width = 72
+        Height = 17
+        Caption = 'Remove'
+        TabOrder = 4
+        OnClick = cmdTFRemoveClick
+      end
+      object chkCancelTrays: TCheckBox
+        Left = 152
+        Top = 96
+        Width = 153
+        Height = 17
+        Caption = 'Cancel Future TRAY Orders'
+        TabOrder = 5
+        OnClick = TFChange
+      end
+      object txtQuantity: TCaptionEdit
+        Tag = -1
+        Left = 151
+        Top = 124
+        Width = 93
+        Height = 19
+        Hint = 
+          'Enter quantity as 2000 K, 100 ML/HOUR, 8 OZ/TID, etc; total quan' +
+          'tity may not exceed 5000ml.'
+        Ctl3D = False
+        ParentCtl3D = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        Visible = False
+        OnChange = txtQuantityChange
+        OnEnter = txtQuantityEnter
+        OnExit = txtQuantityExit
+        OnKeyDown = txtQuantityKeyDown
+        Caption = 'Quantity'
+      end
+      object cboStrength: TCaptionComboBox
+        Tag = -1
+        Left = 252
+        Top = 124
+        Width = 53
+        Height = 21
+        Style = csDropDownList
+        Ctl3D = False
+        ItemHeight = 13
+        ParentCtl3D = False
+        TabOrder = 2
+        Visible = False
+        OnChange = cboStrengthChange
+        OnEnter = cboStrengthEnter
+        OnExit = cboStrengthExit
+        OnKeyDown = cboStrengthKeyDown
+        Items.Strings = (
+          '1/4'
+          '1/2'
+          '3/4'
+          'FULL')
+        Caption = 'Strength'
+      end
+      object calOPTFStart: TORDateBox
+        Left = 341
+        Top = 104
+        Width = 169
+        Height = 21
+        TabStop = False
+        TabOrder = 7
+        Visible = False
+        OnChange = TFChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'Start Date:'
+      end
+      object cboOPTFRecurringMeals: TORComboBox
+        Left = 342
+        Top = 105
+        Width = 160
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabPositions = '12'
+        TabOrder = 6
+        TabStop = True
+        OnChange = TFChange
+        CharsNeedMatch = 1
+      end
+    end
+    object pgeEarlyLate: TTabSheet
+      Caption = 'Early / Late Tray'
+      object lblELStart: TLabel
+        Left = 287
+        Top = 2
+        Width = 48
+        Height = 13
+        Caption = 'Start Date'
+      end
+      object lblELStop: TLabel
+        Left = 287
+        Top = 46
+        Width = 45
+        Height = 13
+        Caption = 'End Date'
+      end
+      object grpMeal: TKeyClickRadioGroup
+        Left = 4
+        Top = 2
+        Width = 106
+        Height = 93
+        Caption = ' Meal '
+        ItemIndex = 3
+        Items.Strings = (
+          'Breakfast'
+          'Lunch'
+          'Evening'
+          '<none selected>')
+        TabOrder = 0
+        TabStop = True
+        OnClick = grpMealClick
+      end
+      object grpMealTime: TGroupBox
+        Left = 114
+        Top = 4
+        Width = 161
+        Height = 93
+        Caption = ' Meal Times '
+        TabOrder = 1
+        object lblNoTimes: TLabel
+          Left = 29
+          Top = 44
+          Width = 96
+          Height = 13
+          Caption = 'No meal times listed.'
+          Visible = False
+        end
+        object radET1: TRadioButton
+          Left = 8
+          Top = 18
+          Width = 56
+          Height = 17
+          TabOrder = 0
+          Visible = False
+          OnClick = ELChange
+        end
+        object radET2: TRadioButton
+          Left = 8
+          Top = 43
+          Width = 56
+          Height = 17
+          TabOrder = 1
+          Visible = False
+          OnClick = ELChange
+        end
+        object radET3: TRadioButton
+          Left = 8
+          Top = 68
+          Width = 56
+          Height = 17
+          TabOrder = 2
+          Visible = False
+          OnClick = ELChange
+        end
+        object radLT1: TRadioButton
+          Left = 92
+          Top = 18
+          Width = 56
+          Height = 17
+          TabOrder = 3
+          Visible = False
+          OnClick = ELChange
+        end
+        object radLT2: TRadioButton
+          Left = 92
+          Top = 43
+          Width = 56
+          Height = 17
+          TabOrder = 4
+          Visible = False
+          OnClick = ELChange
+        end
+        object radLT3: TRadioButton
+          Left = 92
+          Top = 68
+          Width = 56
+          Height = 17
+          TabOrder = 5
+          Visible = False
+          OnClick = ELChange
+        end
+      end
+      object calELStart: TORDateBox
+        Left = 287
+        Top = 15
+        Width = 120
+        Height = 21
+        TabOrder = 2
+        OnChange = calELStartChange
+        OnEnter = calELStartEnter
+        OnExit = calELStartExit
+        DateOnly = True
+        RequireTime = False
+        Caption = 'Start Date'
+      end
+      object calELStop: TORDateBox
+        Left = 287
+        Top = 60
+        Width = 120
+        Height = 21
+        TabOrder = 4
+        OnChange = calELStopChange
+        DateOnly = True
+        RequireTime = False
+        Caption = 'End Date'
+      end
+      object grpDoW: TGroupBox
+        Left = 415
+        Top = 2
+        Width = 93
+        Height = 152
+        Caption = 'Days of Week'
+        TabOrder = 5
+        object chkMonday: TCheckBox
+          Left = 8
+          Top = 16
+          Width = 80
+          Height = 17
+          Caption = 'Monday'
+          TabOrder = 0
+          OnClick = ELChange
+        end
+        object chkTuesday: TCheckBox
+          Left = 8
+          Top = 35
+          Width = 80
+          Height = 17
+          Caption = 'Tuesday'
+          TabOrder = 1
+          OnClick = ELChange
+        end
+        object chkWednesday: TCheckBox
+          Left = 8
+          Top = 54
+          Width = 80
+          Height = 17
+          Caption = 'Wednesday'
+          TabOrder = 2
+          OnClick = ELChange
+        end
+        object chkThursday: TCheckBox
+          Left = 8
+          Top = 73
+          Width = 80
+          Height = 17
+          Caption = 'Thursday'
+          TabOrder = 3
+          OnClick = ELChange
+        end
+        object chkFriday: TCheckBox
+          Left = 8
+          Top = 92
+          Width = 80
+          Height = 17
+          Caption = 'Friday'
+          TabOrder = 4
+          OnClick = ELChange
+        end
+        object chkSaturday: TCheckBox
+          Left = 8
+          Top = 111
+          Width = 80
+          Height = 17
+          Caption = 'Saturday'
+          TabOrder = 5
+          OnClick = ELChange
+        end
+        object chkSunday: TCheckBox
+          Left = 9
+          Top = 130
+          Width = 80
+          Height = 17
+          Caption = 'Sunday'
+          TabOrder = 6
+          OnClick = ELChange
+        end
+      end
+      object chkBagged: TCheckBox
+        Left = 4
+        Top = 120
+        Width = 85
+        Height = 17
+        Caption = 'Bagged Meal'
+        TabOrder = 6
+        OnClick = ELChange
+      end
+      object cboOPELRecurringMeals: TORComboBox
+        Left = 287
+        Top = 15
+        Width = 121
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabPositions = '12'
+        TabOrder = 3
+        TabStop = True
+        OnChange = ELChange
+        CharsNeedMatch = 1
+      end
+    end
+    object pgeIsolations: TTabSheet
+      Caption = 'Isolations / Precautions'
+      object lblIsolation: TLabel
+        Left = 4
+        Top = 0
+        Width = 123
+        Height = 13
+        Caption = 'Select Type of Precaution'
+      end
+      object lblIPComment: TLabel
+        Left = 4
+        Top = 119
+        Width = 54
+        Height = 13
+        Caption = 'Instructions'
+      end
+      object lblIPCurrent: TLabel
+        Left = 224
+        Top = 0
+        Width = 76
+        Height = 13
+        Caption = 'Current Isolation'
+      end
+      object lstIsolation: TORListBox
+        Left = 4
+        Top = 14
+        Width = 212
+        Height = 97
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        Caption = 'Select Type of Precaution'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+        OnChange = IPChange
+      end
+      object txtIPComment: TCaptionEdit
+        Left = 4
+        Top = 133
+        Width = 504
+        Height = 21
+        MaxLength = 240
+        TabOrder = 2
+        OnChange = IPChange
+        Caption = 'Instructions'
+      end
+      object txtIPCurrent: TCaptionEdit
+        Left = 224
+        Top = 14
+        Width = 212
+        Height = 21
+        Color = clBtnFace
+        ReadOnly = True
+        TabOrder = 1
+        Text = '<none>'
+        Caption = 'Current Isolation'
+      end
+    end
+    object pgeAdditional: TTabSheet
+      Caption = 'Additional Order'
+      object lblAddlOrder: TLabel
+        Left = 4
+        Top = 24
+        Width = 125
+        Height = 13
+        Caption = 'Enter Additional Diet Order'
+      end
+      object lblOPAOStart: TLabel
+        Left = 6
+        Top = 72
+        Width = 51
+        Height = 13
+        Caption = 'Start Date:'
+      end
+      object txtAOComment: TCaptionEdit
+        Left = 4
+        Top = 38
+        Width = 504
+        Height = 21
+        MaxLength = 80
+        TabOrder = 1
+        OnChange = AOChange
+        Caption = 'Enter Additional Diet Order'
+      end
+      object calOPAOStart: TORDateBox
+        Left = 54
+        Top = 88
+        Width = 169
+        Height = 21
+        TabStop = False
+        TabOrder = 4
+        Visible = False
+        OnChange = AOChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'Start Date:'
+      end
+      object cboOPAORecurringMeals: TORComboBox
+        Left = 6
+        Top = 88
+        Width = 168
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabPositions = '12'
+        TabOrder = 2
+        TabStop = True
+        OnChange = AOChange
+        CharsNeedMatch = 1
+      end
+    end
+  end
+  inherited memOrder: TCaptionMemo
+    Top = 208
+    ExplicitTop = 208
+  end
+  inherited cmdAccept: TButton
+    Left = 445
+    Top = 208
+    TabOrder = 2
+    ExplicitLeft = 445
+    ExplicitTop = 208
+  end
+  inherited cmdQuit: TButton
+    Left = 445
+    Top = 235
+    TabOrder = 3
+    ExplicitLeft = 445
+    ExplicitTop = 235
+  end
+  inherited pnlMessage: TPanel
+    Top = 197
+    Height = 57
+    TabOrder = 1
+    ExplicitTop = 197
+    ExplicitHeight = 57
+    inherited imgMessage: TImage
+      Top = 10
+      ExplicitTop = 10
+    end
+    inherited memMessage: TRichEdit
+      Height = 45
+      ExplicitHeight = 45
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = nbkDiet'
+        'Status = stsDefault')
+      (
+        'Component = pgeDiet'
+        'Status = stsDefault')
+      (
+        'Component = cboDietAvail'
+        'Status = stsDefault')
+      (
+        'Component = lstDietSelect'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = txtDietComment'
+        'Status = stsDefault')
+      (
+        'Component = calDietStart'
+        'Status = stsDefault')
+      (
+        'Component = calDietStop'
+        'Status = stsDefault')
+      (
+        'Component = cboDelivery'
+        'Status = stsDefault')
+      (
+        'Component = chkCancelTubefeeding'
+        'Status = stsDefault')
+      (
+        'Component = pgeOutPt'
+        'Status = stsDefault')
+      (
+        'Component = grpOPMeal'
+        'Status = stsDefault')
+      (
+        'Component = grpOPDoW'
+        'Status = stsDefault')
+      (
+        'Component = chkOPMonday'
+        'Status = stsDefault')
+      (
+        'Component = chkOPTuesday'
+        'Status = stsDefault')
+      (
+        'Component = chkOPWednesday'
+        'Status = stsDefault')
+      (
+        'Component = chkOPThursday'
+        'Status = stsDefault')
+      (
+        'Component = chkOPFriday'
+        'Status = stsDefault')
+      (
+        'Component = chkOPSaturday'
+        'Status = stsDefault')
+      (
+        'Component = chkOPSunday'
+        'Status = stsDefault')
+      (
+        'Component = calOPStart'
+        'Status = stsDefault')
+      (
+        'Component = calOPStop'
+        'Status = stsDefault')
+      (
+        'Component = cboOPDietAvail'
+        'Status = stsDefault')
+      (
+        'Component = txtOPDietComment'
+        'Status = stsDefault')
+      (
+        'Component = cboOPDelivery'
+        'Status = stsDefault')
+      (
+        'Component = lstOPDietSelect'
+        'Status = stsDefault')
+      (
+        'Component = cmdOPRemove'
+        'Status = stsDefault')
+      (
+        'Component = chkOPCancelTubefeeding'
+        'Status = stsDefault')
+      (
+        'Component = pgeTubefeeding'
+        'Status = stsDefault')
+      (
+        'Component = cboProduct'
+        'Status = stsDefault')
+      (
+        'Component = txtTFComment'
+        'Status = stsDefault')
+      (
+        'Component = grdSelected'
+        'Status = stsDefault')
+      (
+        'Component = cmdTFRemove'
+        'Status = stsDefault')
+      (
+        'Component = chkCancelTrays'
+        'Status = stsDefault')
+      (
+        'Component = txtQuantity'
+        'Status = stsDefault')
+      (
+        'Component = cboStrength'
+        'Status = stsDefault')
+      (
+        'Component = calOPTFStart'
+        'Status = stsDefault')
+      (
+        'Component = cboOPTFRecurringMeals'
+        'Status = stsDefault')
+      (
+        'Component = pgeEarlyLate'
+        'Status = stsDefault')
+      (
+        'Component = grpMeal'
+        'Status = stsDefault')
+      (
+        'Component = grpMealTime'
+        'Status = stsDefault')
+      (
+        'Component = radET1'
+        'Status = stsDefault')
+      (
+        'Component = radET2'
+        'Status = stsDefault')
+      (
+        'Component = radET3'
+        'Status = stsDefault')
+      (
+        'Component = radLT1'
+        'Status = stsDefault')
+      (
+        'Component = radLT2'
+        'Status = stsDefault')
+      (
+        'Component = radLT3'
+        'Status = stsDefault')
+      (
+        'Component = calELStart'
+        'Status = stsDefault')
+      (
+        'Component = calELStop'
+        'Status = stsDefault')
+      (
+        'Component = grpDoW'
+        'Status = stsDefault')
+      (
+        'Component = chkMonday'
+        'Status = stsDefault')
+      (
+        'Component = chkTuesday'
+        'Status = stsDefault')
+      (
+        'Component = chkWednesday'
+        'Status = stsDefault')
+      (
+        'Component = chkThursday'
+        'Status = stsDefault')
+      (
+        'Component = chkFriday'
+        'Status = stsDefault')
+      (
+        'Component = chkSaturday'
+        'Status = stsDefault')
+      (
+        'Component = chkSunday'
+        'Status = stsDefault')
+      (
+        'Component = chkBagged'
+        'Status = stsDefault')
+      (
+        'Component = cboOPELRecurringMeals'
+        'Status = stsDefault')
+      (
+        'Component = pgeIsolations'
+        'Status = stsDefault')
+      (
+        'Component = lstIsolation'
+        'Status = stsDefault')
+      (
+        'Component = txtIPComment'
+        'Status = stsDefault')
+      (
+        'Component = txtIPCurrent'
+        'Status = stsDefault')
+      (
+        'Component = pgeAdditional'
+        'Status = stsDefault')
+      (
+        'Component = txtAOComment'
+        'Status = stsDefault')
+      (
+        'Component = calOPAOStart'
+        'Status = stsDefault')
+      (
+        'Component = cboOPAORecurringMeals'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODDiet'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDiet.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDiet.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDiet.pas	(revision 1676)
@@ -0,0 +1,2301 @@
+unit fODDiet;
+{$O-}
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, ComCtrls, ExtCtrls, StdCtrls, Grids, ORCtrls, ORDtTm, ORFn, uConst,
+  VA508AccessibilityManager;
+
+type
+  TfrmODDiet = class(TfrmODBase)
+    nbkDiet: TPageControl;
+    pgeDiet: TTabSheet;
+    lblDietAvail: TLabel;
+    lblDietSelect: TLabel;
+    lblComment: TLabel;
+    lblStart: TLabel;
+    lblStop: TLabel;
+    lblDelivery: TLabel;
+    cboDietAvail: TORComboBox;
+    lstDietSelect: TORListBox;
+    cmdRemove: TButton;
+    txtDietComment: TCaptionEdit;
+    calDietStart: TORDateBox;
+    calDietStop: TORDateBox;
+    cboDelivery: TORComboBox;
+    pgeTubefeeding: TTabSheet;                                                        
+    lblTFProductList: TLabel;
+    lblTFComment: TLabel;                                                             
+    lblTFStrength: TLabel;
+    lblTFQuantity: TLabel;
+    lblTFProduct: TLabel;
+    cboProduct: TORComboBox;
+    txtTFComment: TCaptionEdit;
+    grdSelected: TCaptionStringGrid;
+    cmdTFRemove: TButton;
+    pgeEarlyLate: TTabSheet;
+    pgeIsolations: TTabSheet;
+    pgeAdditional: TTabSheet;
+    chkCancelTubefeeding: TCheckBox;
+    chkCancelTrays: TCheckBox;
+    txtQuantity: TCaptionEdit;
+    cboStrength: TCaptionComboBox;
+    lblTFAmount: TLabel;
+    grpMeal: TKeyClickRadioGroup;
+    grpMealTime: TGroupBox;
+    lblELStart: TLabel;
+    calELStart: TORDateBox;
+    lblELStop: TLabel;
+    calELStop: TORDateBox;
+    grpDoW: TGroupBox;
+    chkMonday: TCheckBox;
+    chkTuesday: TCheckBox;
+    chkWednesday: TCheckBox;
+    chkThursday: TCheckBox;
+    chkFriday: TCheckBox;
+    chkSaturday: TCheckBox;
+    chkSunday: TCheckBox;
+    chkBagged: TCheckBox;
+    radET1: TRadioButton;
+    radET2: TRadioButton;
+    radET3: TRadioButton;
+    radLT1: TRadioButton;
+    radLT2: TRadioButton;
+    radLT3: TRadioButton;
+    lblNoTimes: TLabel;
+    txtAOComment: TCaptionEdit;
+    lblAddlOrder: TLabel;
+    lstIsolation: TORListBox;
+    lblIsolation: TLabel;
+    lblIPComment: TLabel;
+    txtIPComment: TCaptionEdit;
+    lblIPCurrent: TLabel;
+    txtIPCurrent: TCaptionEdit;
+    pgeOutPt: TTabSheet;
+    grpOPMeal: TKeyClickRadioGroup;
+    grpOPDoW: TGroupBox;
+    chkOPMonday: TCheckBox;
+    chkOPTuesday: TCheckBox;
+    chkOPWednesday: TCheckBox;
+    chkOPThursday: TCheckBox;
+    chkOPFriday: TCheckBox;
+    chkOPSaturday: TCheckBox;
+    chkOPSunday: TCheckBox;
+    lblOPStart: TLabel;
+    calOPStart: TORDateBox;
+    lblOPStop: TLabel;
+    calOPStop: TORDateBox;
+    lblOPDietAvail: TLabel;
+    cboOPDietAvail: TORComboBox;
+    lblOPComment: TLabel;
+    txtOPDietComment: TCaptionEdit;
+    lblOPDelivery: TLabel;
+    cboOPDelivery: TORComboBox;
+    lblOPSelect: TLabel;
+    lstOPDietSelect: TORListBox;
+    cmdOPRemove: TButton;
+    chkOPCancelTubefeeding: TCheckBox;
+    calOPTFStart: TORDateBox;
+    lblOPTFStart: TLabel;
+    lblOPAOStart: TLabel;
+    calOPAOStart: TORDateBox;
+    cboOPAORecurringMeals: TORComboBox;
+    cboOPTFRecurringMeals: TORComboBox;
+    cboOPELRecurringMeals: TORComboBox;
+    procedure nbkDietChanging(Sender: TObject;
+      var AllowChange: Boolean);
+    procedure nbkDietChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboDietAvailNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure cboDietAvailMouseClick(Sender: TObject);
+    procedure cboDietAvailExit(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure DietChange(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure cboProductMouseClick(Sender: TObject);
+    procedure cboProductExit(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure grdSelectedSelectCell(Sender: TObject; Col, Row: Integer;
+      var CanSelect: Boolean);
+    procedure txtQuantityChange(Sender: TObject);
+    procedure txtQuantityExit(Sender: TObject);
+    procedure cboStrengthChange(Sender: TObject);
+    procedure cboStrengthExit(Sender: TObject);
+    procedure TFChange(Sender: TObject);
+    procedure cmdTFRemoveClick(Sender: TObject);
+    procedure grdSelectedDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
+      State: TGridDrawState);
+    procedure cboStrengthKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboStrengthEnter(Sender: TObject);
+    procedure txtQuantityKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtQuantityEnter(Sender: TObject);
+    procedure grpMealClick(Sender: TObject);
+    procedure calELStartExit(Sender: TObject);
+    procedure calELStopChange(Sender: TObject);
+    procedure ELChange(Sender: TObject);
+    procedure calELStartEnter(Sender: TObject);
+    procedure calELStartChange(Sender: TObject);
+    procedure IPChange(Sender: TObject);
+    procedure AOChange(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboOPDietAvailMouseClick(Sender: TObject);
+    procedure cboOPDietAvailExit(Sender: TObject);
+    procedure calOPStartExit(Sender: TObject);
+    procedure calOPStopChange(Sender: TObject);
+    procedure calOPStartEnter(Sender: TObject);
+    procedure calOPStartChange(Sender: TObject);
+    procedure OPChange(Sender: TObject);
+    procedure grpOPMealClick(Sender: TObject);
+    procedure cmdOPRemoveClick(Sender: TObject);
+    procedure cboOPDietAvailKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FNextCol: Integer;
+    FNextRow: Integer;
+    FChangeStop: Boolean;
+    FIsolationID: string;
+    FTabChanging: Boolean;
+    FGiveMultiTabMessage: boolean;
+    procedure DietCheckForNPO;
+    procedure DietCheckForTF;
+    function GetMealTime: string;
+    function GetDaysOfWeek: string;
+    function IsEarlyTray: Boolean;
+    procedure ResetControlsDO;
+    procedure ResetControlsTF;
+    procedure ResetControlsEL;
+    procedure ResetControlsIP;
+    procedure ResetControlsAO;
+    procedure SetEnableDOW(AllowUse: Boolean);
+    procedure SetNextCell(ACol, ARow: Integer);
+    procedure SetValuesFromResponsesDO;
+    procedure SetValuesFromResponsesTF;
+    procedure SetValuesFromResponsesEL;
+    procedure SetValuesFromResponsesIP;
+    procedure SetValuesFromResponsesAO;
+    procedure TFMoveToNextCell;
+    procedure TFClearGrid;
+    procedure TFSetAmountForRow(ARow: Integer);
+    function TFStrengthCode(const x: string): Integer;
+   //  Outpatient meal additions
+    function  FMDOW(AnFMDate: TFMDateTime): integer;
+    function  FMDays(AStart, AEnd: TFMDateTime): string;
+    function  GetOPDaysOfWeek: string;
+    procedure SetEnableOPDOW(AllowUse: Boolean; OneTimeDay: integer; DaysToCheck: string = '');
+    procedure ResetControlsOP;
+    procedure SetValuesFromResponsesOP;
+    function  GetOPMealWindow: string;
+    procedure OPDietCheckForNPO;
+    procedure OPDietCheckForTF;
+    function  PatientHasRecurringMeals(var MealList: TStringList; MealType: string = ''): boolean;
+    //procedure CheckForAutoDCOrders(EvtID: integer; CurrentText: string; var CancelText: string; Sender: TObject);
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+var
+  frmODDiet: TfrmODDiet;
+  uDialogName: string;
+  uFHAUTH: boolean;
+  uRecurringMealList: TStringList;
+
+implementation
+
+{$R *.DFM}
+
+uses uCore, rODBase, rODDiet, rCore, rOrders, fODDietLT, DateUtils,
+  fOrders, uODBase, VA508AccessibilityRouter;
+
+const
+  TX_DIET_REG = 'A regular diet may not be combined with other diets.';
+  TX_DIET_NPO = 'NPO may not be combined with other diets.';
+  TX_DIET_LIM = 'A maximum of 5 diet modifications may be selected.';
+  TX_DIET_DUP = 'This diet has already been selected.';
+  TX_DIET_PRC = 'This diet conflicts with ';
+  TC_DIET_ERR = 'Unable to Add Diet';
+  TX_INPT_ONLY = 'This type of diet may be entered for inpatients only.';
+  TC_INPT_ONLY = 'Ordering Restriction';
+  TX_CANCEL_TF = 'Cancel the current tubefeeding order?' + CRLF + CRLF;
+  TC_CANCEL_TF = 'Cancel Tubefeeding';
+  TX_NO_DIET   = 'At least one diet must be selected.';
+  TX_BAD_START = 'The effective date is not valid.';
+  TX_BAD_STOP  = 'The expiration date is not valid.';
+  TX_STOPSTART = 'The expiration date must be after the effective date.';
+  TX_MINMAX = 'At least 1 product must be selected (maximum: 5).';
+  TX_TFQTY  = 'A quantity must be entered for ';
+  TX_TFAMT  = 'The quantity is invalid for ';
+  TX_TF5000 = 'The total quantity ordered may not exceed 5000ml.';
+  TX_HLPQTY = CRLF + 'The following may be entered for quantity:' + CRLF +
+              '  Units may be K for Kcals, C for cc''s, M for ml, O for oz. or U for units (e.g. cans).' + CRLF +
+              '  Frequency may be DAY, HOUR, QD, QH, BID, TID, QID, Q2H, Q3H, Q4H, or Q6H.' + CRLF +
+              '  May also input 100CC/HR X 16 for 16 hours.  Valid quantity for powder form' + CRLF +
+              '  product can be "# GRAMS" as 20 G, GRAMS, or GMS, or as 1 PKG or 1 U and the' + CRLF +
+              '  frequency (e.g. 20 GRAMS/DAY or 1 PKG/TID).';
+  TX_ELMEAL      = 'A meal must be selected.';
+  TX_ELTIME      = 'A meal time must be selected.';
+  TX_ELNOSTART   = 'A valid start date must be entered.';
+  TX_ELNOSTOP    = 'A valid end date must be entered.';
+  TX_ELSTARTLT   = 'The start date may not be earlier than today.';
+  TX_ELSTOPLT    = 'The end date may not be earlier than today.';
+  TX_ELSTOPSTART = 'The end date may not be earlier than the start date.';
+  TX_ELSTART30   = 'The start date may not be more than 30 days in the future.';
+  TX_ELSTOP30    = 'The end date may not be more than 30 days in the future.';
+  TX_ELDOW       = 'The days of the week must be selected for time ranges greater than 1 day.';
+  TX_ELPAST      = 'The selected meal time has already passed.';
+  TX_IPNONE      = 'An isolation type must be selected.';
+  TX_AONONE      = 'Text for additional order has not been entered.';
+  TX_ACCEPT      = 'Accept the following order?' + CRLF + CRLF;
+  TX_CONTINUE    = 'Continue editing the following order?' + CRLF + CRLF;
+  TX_DISCARD     = CRLF + CRLF + 'Answering NO will discard all changes.';
+  TC_ACCEPT      = 'Unsaved Order';
+  TX_EL_SAVE_ERR    = 'An error occurred while saving this late tray order.';
+  TC_EL_SAVE_ERR    = 'Error Saving Late Tray Order';
+   //  Outpatient meal additions
+  TX_OPMEAL       = 'A meal must be selected.';
+  TX_OPNOSTART    = 'A valid start date must be entered.';
+  TX_OPNOSTOP     = 'A valid end date must be entered.';
+  TX_OPSTARTLT    = 'The start date may not be earlier than today.';
+  TX_OPSTOPLT     = 'The end date may not be earlier than today.';
+  TX_OPSTOPSTART  = 'The end date may not be earlier than the start date.';
+  TX_OPSTART_MAX1 = 'The start date may not be more than ';
+  TX_OPSTART_MAX2 = ' days in the future.';
+  TX_OPSTOP_MAX1  = 'The end date may not be more than ';
+  TX_OPSTOP_MAX2  = ' days in the future.';
+  TX_OPDOW        = 'The days of the week must be selected for time ranges greater than 1 day.';
+  TX_OPPAST       = 'The selected meal time has already passed.';
+  TX_OP_SAVE_ERR  = 'An error occurred while saving this outpatient meal order.';
+  TC_OP_SAVE_ERR  = 'Error Saving Outpatient Meal Order';
+  TX_OP_NO_DIET   = 'One and only one diet must be selected.';
+  TX_OP_BAD_START = 'The effective date is not valid.';
+  TX_OP_BAD_STOP  = 'The expiration date is not valid.';
+  //TX_OP_DIET_REG  = 'A regular diet may not be combined with other diets.';
+  //TX_OP_DIET_NPO  = 'NPO may not be combined with other diets.';
+  //TX_OP_DIET_LIM  = 'A maximum of 1 diet may be selected.';
+  //TX_OP_DIET_DUP  = 'This diet has already been selected.';
+  //TX_OP_DIET_PRC  = 'This diet conflicts with ';
+  TC_OP_DIET_ERR  = 'Unable to Add Diet';
+  TX_OUTPT_ONLY   = 'This type of diet may be entered for outpatients only.';
+  TC_OUTPT_ONLY   = 'Ordering Restriction';
+  TX_NO_PARAMS    = 'Placing Early or Late tray orders is not allowed until the IRM diet package' + CRLF +
+                    'coordinator enters times for E/L trays for this location.';
+  TC_NO_PARAMS    = 'Unable to Order Early/Late Tray';
+  TX_NOSTART   = 'A valid start date must be entered.';
+  TC_NOSTART   = 'Start date required';
+  TX_NOT_THIS_LOC = 'This location has not been configured to' + CRLF +
+                    'allow ordering of meals for outpatients.' + CRLF + CRLF +
+                    'Please contact your IRM diet package coordinator.';
+  TC_NOT_THIS_LOC = 'Unable to order from this location';
+  TX_NO_OUTPT_ORDERS = 'Diet orders may only be entered for inpatients.';
+  TC_NO_OUTPT_ORDERS = 'Ordering Restriction';
+  TX_NO_MEALS_DEFINED = 'No diet types have been defined to be orderable for outpatients.' + CRLF + CRLF +
+                        'Please contact your IRM diet package coordinator.';
+  TC_NO_MEALS_DEFINED = 'Unable to order outpatient meals';
+
+  FMDayLetters: array[1..7] of string[1] = ('M', 'T', 'W', 'R', 'F', 'S', 'X');
+
+type
+  TTFProduct = class
+  private
+    IEN: Integer;
+    Name: string;
+  end;
+
+var
+  uDietParams: TDietParams;
+
+procedure TfrmODDiet.FormCreate(Sender: TObject);
+var
+  ALocation: string;   //ptr to #44 hospital location
+begin
+  inherited;
+  FGiveMultiTabMessage := ScreenReaderSystemActive;
+  AbortOrder := False;
+  uRecurringMealList := TStringList.Create;
+  if OrderForInpatient then
+    begin
+      pgeDiet.TabVisible := True;
+      pgeOutPt.TabVisible := False;
+    end
+  else if OutpatientPatchInstalled then        // put here to only call RPCs if outpatient - remove "IF" later
+    begin
+      pgeDiet.TabVisible := False;
+      pgeOutPt.TabVisible := True;
+    end
+  else                                         // this block will go away after FH patch installed everywhere
+    begin
+      InfoBox(TX_NO_OUTPT_ORDERS, TC_NO_OUTPT_ORDERS, MB_OK);
+      AbortOrder := True;
+      Exit;
+    end;
+
+  FillerID := 'FH';                     // does 'on Display' order check **KCM**
+  ALocation := '0';
+  if Self.EvtID > 0 then
+    ALocation := GetEventLoc1(IntToStr(Self.EvtID));
+  if StrToIntDef(ALocation, 0) < 1 then
+    ALocation := IntToStr(Encounter.Location);
+  if (not OrderForInpatient) and OutpatientPatchInstalled and (not OutpatientLocationConfigured(ALocation)) then
+    begin
+      InfoBox(TX_NOT_THIS_LOC, TC_NOT_THIS_LOC, MB_OK or MB_ICONINFORMATION);
+      AbortOrder := True;
+    end
+  else
+    begin
+      LoadDietParams(uDietParams, ALocation);
+      if pgeOutPt.TabVisible then
+        with uDietParams, cboOPDelivery do
+        begin
+          if Tray      then Items.Add('T^Tray');
+          if Cafeteria then Items.Add('C^Cafeteria');
+          if DiningRm  then Items.Add('D^Dining Room');
+          ItemIndex := 0;
+          chkBagged.Visible := uDietParams.Bagged;
+        end
+      else
+        with uDietParams, cboDelivery do
+        begin
+          if Tray      then Items.Add('T^Tray');
+          if Cafeteria then Items.Add('C^Cafeteria');
+          if DiningRm  then Items.Add('D^Dining Room');
+          ItemIndex := 0;
+          chkBagged.Visible := uDietParams.Bagged;
+        end;
+    end;
+end;
+
+procedure TfrmODDiet.FormDestroy(Sender: TObject);
+begin
+  TFClearGrid;
+  uRecurringMealList.Free;
+  inherited;
+end;
+
+procedure TfrmODDiet.FormResize(Sender: TObject);
+begin
+  inherited;
+  with grdSelected do
+  begin
+    ColWidths[1] := Canvas.TextWidth('XFULLX') + GetSystemMetrics(SM_CXVSCROLL);
+    ColWidths[2] := Canvas.TextWidth('100 GRAMS/HOUR X 24');
+    ColWidths[3] := Canvas.TextWidth('55000ml');
+    ColWidths[0] := ClientWidth - ColWidths[1] - ColWidths[2] - ColWidths[3] - 3;
+    lblTFStrength.Left := Left + ColWidths[0] + 3;
+    lblTFQuantity.Left := Left + ColWidths[0] + ColWidths[1] + 5;
+    lblTFAmount.Left   := Left + ColWidths[0] + ColWidths[1] + ColWidths[2] + 7;
+  end;
+end;
+
+procedure TfrmODDiet.InitDialog;
+begin
+  inherited;
+  // handle all initialization at the tab level
+  // if FTabChanging, then nbkDietChange is about to be called anyway
+  if not FTabChanging then nbkDietChange(Self);
+end;
+
+procedure TfrmODDiet.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  if AbortOrder then exit;
+  inherited;
+  uDialogName := ExternalName(DialogIEN, 101.41);
+  case DietDialogType(DisplayGroup) of
+  'D': begin
+         if not OrderForInpatient then
+           begin
+             InfoBox(TX_INPT_ONLY, TC_INPT_ONLY, MB_OK);
+             Close;
+             Exit;
+           end;
+         pgeDiet.TabVisible := True;
+         pgeOutPt.TabVisible := False;
+         nbkDiet.ActivePage := pgeDiet;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesDO;
+       end;
+  'N': begin
+         if not OrderForInpatient then
+           begin
+             InfoBox(TX_INPT_ONLY, TC_INPT_ONLY, MB_OK);
+             Close;
+             Exit;
+           end;
+         nbkDiet.ActivePage := pgeDiet;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesDO;
+       end;
+  'T': begin
+         if (not OrderForInpatient) and (not PatientHasRecurringMeals(uRecurringMealList)) then
+         begin
+           Close;
+           Exit;
+         end;
+         nbkDiet.ActivePage := pgeTubefeeding;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesTF;
+       end;
+  'E': begin
+         if (not OrderForInpatient) and (not PatientHasRecurringMeals(uRecurringMealList)) then
+         begin
+           Close;
+           Exit;
+         end;
+         nbkDiet.ActivePage := pgeEarlyLate;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesEL;
+       end;
+  'P': begin
+         nbkDiet.ActivePage := pgeIsolations;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesIP;
+       end;
+  'A': begin
+         if (not OrderForInpatient) and (not PatientHasRecurringMeals(uRecurringMealList)) then
+         begin
+           Close;
+           Exit;
+         end;
+         nbkDiet.ActivePage := pgeAdditional;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesAO;
+       end;
+  'M': begin
+         if OrderForInpatient then
+           begin
+             InfoBox(TX_OUTPT_ONLY, TC_OUTPT_ONLY, MB_OK);
+             Close;
+             Exit;
+           end;
+         uFHAUTH := UserHasFHAUTHKey;       // is this really needed for other than printing?
+         pgeDiet.TabVisible := False;
+         pgeOutPt.TabVisible := True;
+         nbkDiet.ActivePage := pgeOutPt;
+         nbkDietChange(Self);
+         if OrderAction <> ORDER_NEW then SetValuesFromResponsesOP;
+       end
+  else
+      begin
+        if not OrderForInpatient then
+         begin
+           InfoBox(TX_INPT_ONLY, TC_INPT_ONLY, MB_OK);
+           Close;
+           Exit;
+         end;
+        pgeDiet.TabVisible := True;
+        pgeOutPt.TabVisible := False;
+        nbkDiet.ActivePage := pgeDiet;
+        nbkDietChange(Self);
+        if OrderAction <> ORDER_NEW then SetValuesFromResponsesDO;
+        ActiveControl := cboOPDietAvail;
+      end;
+  end;
+  if OrderAction = ORDER_NEW then SetFocusedControl(nbkDiet);
+end;
+
+procedure TfrmODDiet.Validate(var AnErrMsg: string);
+var
+  ErrMsg: string;
+  i, Sum: Integer;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+  function MealTimePassed: Boolean;
+  var
+    x: string;
+    ATime: Integer;
+  begin
+    Result := False;
+    if calELStart.FMDateTime <> FMToday then Exit;
+    x := GetMealTime;
+    if Pos(':', x) = 0 then Exit;
+    ATime := StrToIntDef(Piece(x, ':', 1) + Copy(Piece(x, ':', 2), 1, 2), 0);
+    if (Pos('P', x) > 0) and (ATime < 1200) then ATime := ATime + 1200;
+    if (Pos('A', x) > 0) and (ATime > 1200) then ATime := ATime - 1200;
+    if (ATime / 10000) < Frac(FMNow) then Result := True;
+  end;
+
+  function OPMealTimePassed: Boolean;
+  var
+    WindowTimes: string;
+    EndWindow: integer;
+    x: extended;
+  begin
+    Result := False;
+    if calOPStart.FMDateTime <> FMToday then Exit;
+    WindowTimes := GetOPMealWindow;
+    if WindowTimes = U then exit;
+    EndWindow := StrToIntDef(Piece(WindowTimes, U, 2), 0);
+    x := Frac(calOPStart.FMDateTime);
+    if x = 0 then x := Frac(FMNow) * 10000;
+    if x > EndWindow then Result := True;
+  end;
+
+begin
+  // do the appropriate validation depending on the currently selected tab
+  if nbkDiet.ActivePage = pgeDiet then
+  begin
+    if lstDietSelect.Items.Count < 1 then SetError(TX_NO_DIET);
+    if not calDietStart.IsValid      then SetError(TX_BAD_START);
+    with calDietStop do
+    begin
+      Validate(ErrMsg);
+      if Length(ErrMsg) > 0          then SetError(TX_BAD_STOP);
+      if (Length(Text) > 0) and (FMDateTime <= calDietStart.FMDateTime)
+                                     then SetError(TX_STOPSTART);
+    end; {with calDietStop}
+  end; {pgeDiet}
+  if nbkDiet.ActivePage = pgeTubeFeeding then
+  begin
+    Sum := 0;
+    with grdSelected do for i := 0 to RowCount - 1 do if Objects[0, i] <> nil then Inc(Sum);
+    if (Sum < 1) or (Sum > 5) then SetError(TX_MINMAX);
+    Sum := 0;
+    with grdSelected do for i := 0 to RowCount - 1 do if Objects[0, i] <> nil then
+    begin
+      if  Length(Cells[2, i]) = 0  then SetError(TX_TFQTY + Cells[0, i]);
+      if (Length(Cells[2, i]) > 0) and (Length(Cells[3, i]) = 0)
+        then SetError(TX_TFAMT + Cells[0, i] + TX_HLPQTY);
+      Sum := Sum + StrToIntDef(Piece(Cells[3, i], 'c', 1), 0);
+    end;
+    if Sum > 5000 then SetError(TX_TF5000);
+    if not OrderForInpatient then
+      if not calOPTFStart.IsValid      then SetError(TX_BAD_START);
+  end;
+  if nbkDiet.ActivePage = pgeEarlyLate then
+  begin
+    if grpMeal.ItemIndex = 3                                   then SetError(TX_ELMEAL);
+    if not calELStart.IsValid                                  then SetError(TX_ELNOSTART);
+    if calELStart.FMDateTime < FMToday                         then SetError(TX_ELSTARTLT);
+    if calELStart.FMDateTime > FMDateTimeOffsetBy(FMToday, 30) then SetError(TX_ELSTART30);
+    if OrderForInpatient then
+    begin
+      if GetMealTime = ''                                        then SetError(TX_ELTIME);
+      if not calELStop.IsValid                                   then SetError(TX_ELNOSTOP);
+      if calELStop.FMDateTime < FMToday                          then SetError(TX_ELSTOPLT);
+      if calELStop.FMDateTime < calELStart.FMDateTime            then SetError(TX_ELSTOPSTART);
+      if calELStop.FMDateTime > FMDateTimeOffsetBy(FMToday, 30)  then SetError(TX_ELSTOP30);
+    end;
+    if grpDOW.Enabled and (GetDaysOfWeek = '')                 then SetError(TX_ELDOW);
+    if MealTimePassed                                          then SetError(TX_ELPAST);
+  end;
+  if nbkDiet.ActivePage = pgeIsolations then
+  begin
+    if lstIsolation.ItemIndex < 0                              then SetError(TX_IPNONE);
+  end;
+  if nbkDiet.ActivePage = pgeAdditional then
+  begin
+    if not ContainsVisibleChar(txtAOComment.Text)              then SetError(TX_AONONE);
+    if not OrderForInpatient then
+      if not calOPAOStart.IsValid                              then SetError(TX_BAD_START);
+  end;
+  if nbkDiet.ActivePage = pgeOutPt then
+  begin
+    if grpOPMeal.ItemIndex = 3           then SetError(TX_OPMEAL);
+    if lstOPDietSelect.Items.Count < 1   then SetError(TX_OP_NO_DIET);
+    if OPMealTimePassed                  then SetError(TX_OPPAST);
+    if uDialogName = 'FHW OP MEAL' then
+    begin
+      if not calOPStart.IsValid          then SetError(TX_OP_BAD_START);
+      with calOPStop do
+      begin
+        Validate(ErrMsg);
+        if Length(ErrMsg) > 0            then SetError(TX_OP_BAD_STOP);
+        if (Length(Text) > 0) and (FMDateTime < calOPStart.FMDateTime)
+                                         then SetError(TX_OPSTOPSTART);
+      end; {with calOPDietStop}
+      if calOPStart.FMDateTime > FMDateTimeOffsetBy(FMToday, uDietParams.OPMaxDays)
+                                         then SetError(TX_OPSTART_MAX1 + IntToStr(uDietParams.OPMaxDays) +
+                                         TX_OPSTART_MAX2);
+      if calOPStop.FMDateTime > FMDateTimeOffsetBy(FMToday, uDietParams.OPMaxDays)
+                                         then SetError(TX_OPSTOP_MAX1 + IntToStr(uDietParams.OPMaxDays) +
+                                         TX_OPSTOP_MAX2);
+      if grpOPDOW.Enabled and (GetOPDaysOfWeek = '')
+                                         then SetError(TX_OPDOW);
+    end;
+  end;
+end;
+
+{ notebook tabs - general ------------------------------------------------------------------- }
+
+procedure TfrmODDiet.nbkDietChanging(Sender: TObject; var AllowChange: Boolean);
+begin
+  inherited;
+  with Responses do if (Length(CopyOrder) > 0) or (Length(EditOrder) > 0) then
+  begin
+    AllowChange := False;
+    Exit;
+  end;
+  FTabChanging := True;
+  if Length(memOrder.Text) > 0 then
+    begin
+      if nbkDiet.ActivePage = pgeOutpt then
+        begin
+          if InfoBox(TX_CONTINUE + memOrder.Text + TX_DISCARD, TC_ACCEPT, MB_YESNO) = ID_YES then
+            begin
+              AllowChange := FALSE;
+            end else
+            begin
+              memOrder.Text := '';
+              memOrder.Lines.Clear;
+              Responses.Clear;
+            end;
+        end
+      else
+        begin
+          if InfoBox(TX_ACCEPT + memOrder.Text, TC_ACCEPT, MB_YESNO) = ID_YES then
+            begin
+              cmdAcceptClick(Self);
+              AllowChange := AcceptOK;
+            end else
+            begin
+              memOrder.Text := '';
+              memOrder.Lines.Clear;
+              Responses.Clear;
+            end;
+        end
+    end;
+  FTabChanging := False;
+end;
+
+(*procedure TfrmODDiet.CheckForAutoDCOrders(EvtID: integer; CurrentText: string; var CancelText: string; Sender: TObject);
+const
+  TX_CX_CUR = 'A new diet order will CANCEL and REPLACE this current diet now unless' + CRLF +
+              'you specify a start date for when the new diet should replace the current' + CRLF +
+              'diet:' + CRLF + CRLF;
+  TX_CX_FUT = 'A new diet order with no expiration date will CANCEL and REPLACE these diets:' + CRLF + CRLF;
+  TX_CX_DELAYED1 =  'There are other delayed diet orders for this release event:';
+  TX_CX_DELAYED2 =  'This new diet order may cancel and replace those other diets' + CRLF +
+                    'IMMEDIATELY ON RELEASE, unless you either:' + CRLF + CRLF +
+
+                    '1. Specify an expiration date/time for this order that will' + CRLF +
+                    '   be prior to the start date/time of those other orders; or' + CRLF + CRLF +
+
+                    '2. Specify a later start date/time for this order for when you' + CRLF +
+                    '   would like it to cancel and replace those other orders.';
+
+var
+  i: integer;
+  AStringList: TStringList;
+  AList: TList;
+  x, PtEvtIFN, PtEvtName: string;
+  //AResponse: TResponse;
+begin
+  if Self.EvtID = 0 then   // check current and future released diets
+  begin
+    x := CurrentText;
+    if Piece(x, #13, 1) <> 'Current Diet:  ' then
+    begin
+      AStringList := TStringList.Create;
+      try
+        AStringList.Text := x;
+        CancelText := TX_CX_CUR + #9 + Piece(AStringList[0], ':', 1) + ':' + CRLF + CRLF
+                 + #9 + Copy(AStringList[0], 16, 99) + CRLF;
+        if AStringList.Count > 1 then
+        begin
+          CancelText := CancelText + CRLF + CRLF +
+                   TX_CX_FUT + #9 + Piece(AStringList[1], ':', 1) + ':' + CRLF + CRLF
+                   + #9 + Copy(AStringList[1], 22, 99) + CRLF;
+          if AStringList.Count > 2 then
+          for i := 2 to AStringList.Count - 1 do
+            CancelText := CancelText + #9 + TrimLeft(AStringList[i]) + CRLF;
+        end;
+      finally
+        AStringList.Free;
+      end;
+    end;
+  end 
+  else if Sender is TButton then     // delayed orders code here - on accept only
+  begin
+    //AResponse := Responses.FindResponseByName('STOP', 1);
+    //if (AResponse <> nil) and (AResponse.EValue <> '') then exit;
+    AList := TList.Create;
+    try
+      PtEvtIFN := IntToStr(frmOrders.TheCurrentView.EventDelay.PtEventIFN);
+      PtEvtName := frmOrders.TheCurrentView.EventDelay.EventName;
+      LoadOrdersAbbr(AList, frmOrders.TheCurrentView, PtEvtIFN);
+      for i := AList.Count - 1 downto 0 do
+      begin
+        if TOrder(Alist.Items[i]).DGroup <> Self.DisplayGroup then
+        begin
+          TOrder(AList.Items[i]).Free;
+          AList.Delete(i);
+        end;
+      end;
+      if AList.Count > 0 then
+      begin
+        x := '';
+        RetrieveOrderFields(AList, 0, 0);
+        CancelText := TX_CX_DELAYED1 + CRLF + CRLF + 'Release event: ' + PtEvtName; 
+        for i := 0 to AList.Count - 1 do
+          with TOrder(AList.Items[i]) do
+          begin
+            x := x + #9 + Text + CRLF;
+(*            if StartTime <> '' then
+              x := #9 + x + 'Start:   ' + StartTime + CRLF
+            else
+              x := #9 + x + 'Ordered: ' + FormatFMDateTime('mmm dd,yyyy@hh:nn', OrderTime) + CRLF;*)
+(*          end;
+        CancelText := CancelText + CRLF + CRLF + x;
+        CancelText := CancelText + CRLF + CRLF + TX_CX_DELAYED2;
+      end;
+    finally
+      with AList do for i := 0 to Count - 1 do TOrder(Items[i]).Free;
+      AList.Free;
+    end;
+  end;
+end;*)
+
+procedure TfrmODDiet.nbkDietChange(Sender: TObject);
+var
+  x: string ;
+  CxMsg: string;
+begin
+  inherited;
+  // much of the logic here can be eliminated if ClearDialogControls starts clearing containers
+  if AbortOrder then
+  begin
+    cmdQuitClick(Self);
+    exit;
+  end;
+  StatusText('Loading Dialog Definition');
+  if Sender <> Self then Responses.Clear;
+  Changing := True;                                        // Changing set!
+  if nbkDiet.ActivePage = pgeDiet then
+  begin
+    AllowQuickOrder := True;
+    x := CurrentDietText;
+    CheckForAutoDCDietOrders(Self.EvtID, Self.DisplayGroup, x, CxMsg, nbkDiet);
+    if CxMsg <> '' then
+    begin
+      if InfoBox(CxMsg + CRLF +
+                'Are you sure?', 'Confirm', MB_ICONWARNING or MB_YESNO) = ID_NO then
+      begin
+        AbortOrder := True;
+        cmdQuitClick(Self);
+        exit;
+      end;
+    end;
+    OrderMessage(x);
+    Responses.Dialog := 'FHW1';                            // Diet Order
+    DisplayGroup := DisplayGroupForDialog('FHW1');
+    LoadDietQuickList(cboDietAvail.Items, 'DO');
+    cboDietAvail.InsertSeparator;
+    cboDietAvail.InitLongList('');
+    chkCancelTubefeeding.State := cbGrayed;
+    chkCancelTubefeeding.Visible := False;
+    ResetControlsDO;
+  end;
+  if nbkDiet.ActivePage = pgeTubefeeding then
+  begin
+    if not OrderForInpatient then
+    begin
+      if not PatientHasRecurringMeals(uRecurringMealList) then
+        begin
+          Changing := False;
+          nbkDiet.ActivePage := pgeOutPt;
+          nbkDietChange(nbkDiet);
+          Exit;
+          end
+        else
+          FastAssign(uRecurringMealList, cboOPTFRecurringMeals.Items);
+    end;
+    cboOPTFRecurringMeals.Visible := not OrderForInpatient;
+    calOPTFStart.Visible := False;
+    lblOPTFStart.Visible := not OrderForInpatient;
+    AllowQuickOrder := True;
+    if Length(uDietParams.CurTF) > 0
+      then OrderMessage(TextForOrder(uDietParams.CurTF))
+      else OrderMessage('');
+    Responses.Dialog := 'FHW8';                            // Tubefeeding
+    DisplayGroup := DisplayGroupForDialog('FHW8');
+    with cboProduct do if Items.Count = 0 then
+    begin
+      LoadDietQuickList(Items, 'TF');
+      if Items.Count > 0 then
+      begin
+        Items.Add(LLS_LINE);
+        Items.Add(LLS_SPACE);
+      end;
+      AppendTFProducts(Items);
+    end;
+    cboProduct.Text := '';
+    ResetControlsTF;
+  end;
+  if nbkDiet.ActivePage = pgeEarlyLate then
+  begin
+    if not OrderForInpatient then
+      begin
+        if not PatientHasRecurringMeals(uRecurringMealList) then
+          begin
+            Changing := False;
+            nbkDiet.ActivePage := pgeOutPt;
+            nbkDietChange(nbkDiet);
+            Exit;
+          end
+        else
+          FastAssign(uRecurringMealList, cboOPELRecurringMeals.Items);
+      end
+    else if (StrToIntDef(uDietParams.EarlyIEN, 0) = 0) or (StrToIntDef(uDietParams.LateIEN, 0) = 0) then
+      begin
+        InfoBox(TX_NO_PARAMS, TC_NO_PARAMS, MB_ICONERROR or MB_OK);
+        if pgeEarlyLate <> nil then
+          nbkDiet.SelectNextPage(False);
+        Changing := False;
+        Exit;
+      end;
+    cboOPELRecurringMeals.Visible := not OrderForInpatient;
+    cboOPELRecurringMeals.TabStop := not OrderForInpatient;
+    calELStart.Visible := OrderForInpatient;
+    calELStart.TabStop := OrderForInpatient;
+    calELStop.Visible := OrderForInpatient;
+    lblELStop.Visible := OrderForInpatient;
+    grpDOW.Visible := OrderForInpatient;
+    grpDOW.Enabled := OrderForInpatient;
+    AllowQuickOrder := False;
+    OrderMessage('');
+    Responses.Dialog := 'FHW2';                            // Early/Late Tray
+    DisplayGroup := DisplayGroupForDialog('FHW2');
+    ResetControlsEL;
+  end;
+  if nbkDiet.ActivePage = pgeIsolations then
+  begin
+    AllowQuickOrder := False;
+    OrderMessage('');
+    Responses.Dialog := 'FHW3';                            // Isolations
+    DisplayGroup := DisplayGroupForDialog('FHW3');
+    if lstIsolation.Items.Count = 0 then LoadIsolations(lstIsolation.Items);
+    txtIPCurrent.Text := CurrentIsolation;
+    FIsolationID := IsolationID;
+    ResetControlsIP;
+  end;
+  if nbkDiet.ActivePage = pgeAdditional then
+  begin
+  if not OrderForInpatient then
+    begin
+      if not PatientHasRecurringMeals(uRecurringMealList) then
+        begin
+          Changing := False;
+          nbkDiet.ActivePage := pgeOutPt;
+          nbkDietChange(nbkDiet);
+          Exit;
+        end
+      else
+        FastAssign(uRecurringMealList, cboOPAORecurringMeals.Items);
+    end;
+    cboOPAORecurringMeals.Visible := not OrderForInpatient;
+    calOPAOStart.Visible := False;  //not OrderForInpatient;
+    lblOPAOStart.Visible := not OrderForInpatient;
+    AllowQuickOrder := False;
+    OrderMessage('');
+    Responses.Dialog := 'FHW7';                            // Additional Order
+    DisplayGroup := DisplayGroupForDialog('FHW7');
+    ResetControlsAO;
+  end;
+  if nbkDiet.ActivePage = pgeOutPt then
+  begin
+    x := CurrentDietText;
+    if Length(Piece(x, #$D, 1)) > Length('Current Diet:  ') then
+      OrderMessage(x)
+    else
+      OrderMessage('');
+    if (uDialogName <> 'FHW SPECIAL MEAL') and (uDialogName <> 'FHW OP MEAL') then
+      uDialogName := 'FHW OP MEAL';
+    Responses.Dialog := uDialogName;
+    DisplayGroup := DisplayGroupForDialog(uDialogName);
+    if uDialogName = 'FHW SPECIAL MEAL' then                 // Special meal
+      begin
+       AllowQuickOrder := False;
+       ResetControlsOP;
+       FastAddStrings(SubsetOfOPDiets, cboOPDietAvail.Items);
+       { TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+       chkOPCancelTubefeeding.State := cbGrayed;
+       chkOPCancelTubefeeding.Visible := False;
+       grpOPMeal.Caption := 'Special Meal';
+       pgeTubefeeding.TabVisible := False;
+       pgeIsolations.TabVisible := False;
+       pgeAdditional.TabVisible := False;
+       pgeEarlyLate.TabVisible := False;
+       cboOPDietAvail.SelectByIEN(uDietParams.OPDefaultDiet);
+       cboOPDietAvailMouseClick(Self);
+       Changing := False;
+      end
+    else if uDialogName = 'FHW OP MEAL' then                          // Recurring meal
+      begin
+       AllowQuickOrder := True;
+       ResetControlsOP;
+       LoadDietQuickList(cboOPDietAvail.Items, 'MEAL');              // use D.G. short name here
+       cboOPDietAvail.InsertSeparator;
+       FastAddStrings(SubsetOfOPDiets, cboOPDietAvail.Items);
+       cboOPDietAvail.SelectByIEN(uDietParams.OPDefaultDiet);
+       { TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+       chkOPCancelTubefeeding.State := cbGrayed;
+       chkOPCancelTubefeeding.Visible := False;
+       grpOPMeal.Caption := 'Recurring Meal';
+       SetEnableOPDOW(False, -1);
+       cboOPDietAvailMouseClick(Self);
+       Changing := False;
+      end;
+  end;
+  Changing := False;                                       // Changing reset
+  StatusText('');
+  if FGiveMultiTabMessage then  // CQ#15483
+  begin
+    FGiveMultiTabMessage := FALSE;
+    GetScreenReader.Speak('Multi Tab Form');
+  end;
+end;
+
+{ Diet Order tab ---------------------------------------------------------------------------- }
+
+procedure TfrmODDiet.DietCheckForNPO;
+begin
+  if Piece(lstDietSelect.Items[0], U, 2) = 'NPO' then
+  begin
+    lblDelivery.Visible := False;
+    cboDelivery.Visible := False;
+    lblComment.Visible := True;          // <-- these changes added for 11a to suppress
+    txtDietComment.Visible := True;      // <-- prompting of special instructions except
+  end else                               // <-- for NPO
+  begin                                  // <--
+    lblComment.Visible := False;         // <--
+    txtDietComment.Visible := False;     // <--
+    txtDietComment.Text := '';           // <--
+  end;
+end;
+
+procedure TfrmODDiet.DietCheckForTF;
+var
+  x: string;
+begin
+  with lstDietSelect do
+  begin
+    if (Items.Count = 1) and (Piece(Items[0], U, 2) <> 'NPO')
+      and (Length(uDietParams.CurTF) > 0) then
+    begin
+      x := TextForOrder(uDietParams.CurTF);
+      if InfoBox(TX_CANCEL_TF + x, TC_CANCEL_TF, MB_YESNO) = IDYES then
+      begin
+        chkCancelTubeFeeding.State := cbChecked;
+        chkCancelTubeFeeding.Visible := True;
+      end
+      else chkCancelTubeFeeding.State := cbUnchecked;
+    end; {if (Items...}
+  end; {with lstDietSelect}
+end;
+
+procedure TfrmODDiet.ResetControlsDO;
+begin
+  lstDietSelect.Clear;
+  calDietStart.Text := 'Now';
+  calDietStop.Text  := '';
+  lblDelivery.Visible := True;
+  cboDelivery.Visible := True;
+  txtDietComment.Text := '';             // <-- suppress except for NPO
+  txtDietComment.Visible := False;       // <--
+  lblComment.Visible := False;           // <--
+end;
+
+procedure TfrmODDiet.SetValuesFromResponsesDO;
+var
+  AnInstance: Integer;
+  AResponse: TResponse;
+  ADiet: string;
+begin
+  Changing := True;                                        // Changing set!!
+  ResetControlsDO;
+  with Responses do
+  begin
+    AnInstance := NextInstance('ORDERABLE', 0);
+    while AnInstance > 0 do
+    begin
+      AResponse := FindResponseByName('ORDERABLE', AnInstance);
+      if AResponse <> nil then
+      begin
+        ADiet := DietAttributes(StrToIntDef(AResponse.IValue,0));
+        if Piece(ADiet,'^',1)='0' then
+        begin
+          InfoBox(Piece(ADiet,'^',2), TC_DIET_ERR, MB_OK);
+          cboDietAvail.ItemIndex := -1;
+          Changing := False;
+          Exit;
+        end;
+        lstDietSelect.Items.Add(ADiet);
+      end;
+      AnInstance := NextInstance('ORDERABLE', AnInstance);
+    end; {while AnInstance - ORDERABLE}
+    SetControl(calDietStart,   'START',    1);
+    SetControl(calDietStop,    'STOP',     1);
+    SetControl(cboDelivery,    'DELIVERY', 1);
+    SetControl(txtDietComment, 'COMMENT',  1);
+  end;
+  DietCheckForNPO;
+  DietCheckForTF;
+  Changing := False;                                       // Changing reset
+  DietChange(Self);
+end;
+
+procedure TfrmODDiet.cboDietAvailNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboDietAvail.ForDataUse(SubSetOfDiets(StartFrom, Direction));
+end;
+
+procedure TfrmODDiet.cboDietAvailMouseClick(Sender: TObject);
+var
+  NewDiet, ErrMsg: string;
+  DupDiet: Boolean;
+  i: Integer;
+
+  procedure SetError(const AnError: string);
+  begin
+    if Length(ErrMsg) > 0 then Exit;
+    ErrMsg := AnError;
+  end;
+
+begin
+  inherited;
+  if CharAt(cboDietAvail.ItemID, 1) = 'Q' then              // setup quick order
+  begin
+    Responses.QuickOrder := ExtractInteger(cboDietAvail.ItemID);
+    SetValuesFromResponsesDO;
+    cboDietAvail.ItemIndex := -1;
+    Exit;
+  end;
+  if cboDietAvail.ItemIEN > 0 then with lstDietSelect do
+  begin
+    ErrMsg := '';
+    if Items.Count > 0 then  // disallow other diets with Regular & NPO
+    begin
+      if cboDietAvail.ItemIEN = uDietParams.RegIEN then SetError(TX_DIET_REG);
+      if GetIEN(0) = uDietParams.RegIEN            then SetError(TX_DIET_REG);
+      if cboDietAvail.ItemIEN = uDietParams.NPOIEN then SetError(TX_DIET_NPO);
+      if GetIEN(0) = uDietParams.NPOIEN            then SetError(TX_DIET_NPO);
+    end;
+    if Items.Count = 5 then SetError(TX_DIET_LIM);    // maximum of 5 diet modifications
+    DupDiet := False;
+    for i := 0 to Items.Count - 1 do if cboDietAvail.ItemIEN = GetIEN(i) then DupDiet := True;
+    if DupDiet         then SetError(TX_DIET_DUP);    // each diet mod must be unique
+    NewDiet := DietAttributes(cboDietAvail.ItemIEN);
+    if Piece(NewDiet,'^',1)='0' then
+    begin
+      InfoBox(Piece(NewDiet,'^',2),TC_DIET_ERR, MB_OK);
+      cboDietAvail.ItemIndex := -1;
+      Exit;
+    end;
+    for i := 0 to Items.Count - 1 do                  // check to make sure unique precedence
+      if Piece(Items[i], U, 4) = Piece(NewDiet, U, 4)
+        then SetError(TX_DIET_PRC + Piece(Items[i], U, 2));
+    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TC_DIET_ERR, MB_OK) else
+    begin
+      lstDietSelect.Items.Add(NewDiet);
+      DietCheckForNPO;
+      DietCheckForTF;
+      OrderMessage(OIMessage(StrToIntDef(Piece(NewDiet, U, 1), 0)));
+      DietChange(Sender);
+    end; {else of if Length}
+  end; {if cboDietAvail}
+  cboDietAvail.ItemIndex := -1;
+end;
+
+procedure TfrmODDiet.cboDietAvailExit(Sender: TObject);
+begin
+  inherited;
+  if (cboDietAvail.ItemIEN > 0) or (CharAt(cboDietAvail.ItemID, 1) = 'Q') then
+    cboDietAvailMouseClick(Self);
+end;
+
+procedure TfrmODDiet.cmdRemoveClick(Sender: TObject);
+begin
+  inherited;
+  with lstDietSelect do if ItemIndex > -1 then Items.Delete(ItemIndex);
+  DietChange(Sender);
+  with lstDietSelect do if Items.Count = 0 then
+  begin
+    chkCancelTubefeeding.State := cbGrayed;
+    chkCancelTubefeeding.Visible := False;
+    lblDelivery.Visible := True;
+    cboDelivery.Visible := True;
+  end;
+end;
+
+procedure TfrmODDiet.DietChange(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  if Changing then Exit;
+  if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+  with calDietStart   do {if Length(Text) > 0 then} Responses.Update('START',     1, Text,   Text);
+  with calDietStop    do {if Length(Text) > 0 then} Responses.Update('STOP',      1, Text,   Text);
+  with lstDietSelect  do for i := 0 to Items.Count - 1 do
+    Responses.Update('ORDERABLE', i+1, Piece(Items[i], U, 1), Piece(Items[i], U, 2));
+  with txtDietComment do {if Length(Text) > 0 then} Responses.Update('COMMENT',   1, Text,   Text);
+  with cboDelivery    do if Visible            then Responses.Update('DELIVERY',  1, ItemID, Text);
+  with chkCancelTubefeeding do case State of
+                                 cbChecked:   Responses.Update('CANCEL', 1, '1', 'YES');
+                                 cbUnchecked: Responses.Update('CANCEL', 1, '0', 'NO');
+                               end;
+  with lstDietSelect do if (Items.Count = 1) and (GetIEN(0) = uDietParams.NPOIEN) then
+  begin
+    if Frac(calDietStart.FMDateTime) > 0.2358 then Responses.VarTrailing := 'at Midnight';
+  end
+  else Responses.VarTrailing := 'Diet';
+  memOrder.Text := Responses.OrderText;
+end;
+
+{ Tubefeeding tab --------------------------------------------------------------------------- }
+
+procedure TfrmODDiet.ResetControlsTF;
+begin
+  TFClearGrid;
+  chkCancelTrays.Checked := False;
+  calOPTFStart.Text := '';
+  txtTFComment.Text := '';
+end;
+
+procedure TfrmODDiet.SetValuesFromResponsesTF;
+var
+  AnInstance: Integer;
+  AResponse: TResponse;
+  AProduct: TTFProduct;
+begin
+  Changing := True;                                        // Changing set!!
+  ResetControlsTF;
+  with Responses do
+  begin
+    AnInstance := NextInstance('ORDERABLE', 0);
+    while AnInstance > 0 do
+    begin
+      AResponse := FindResponseByName('ORDERABLE', AnInstance);
+      if AResponse <> nil then
+      begin
+        AProduct := TTFProduct.Create;
+        AProduct.IEN := StrToIntDef(AResponse.IValue, 0);
+        AProduct.Name := AResponse.EValue;
+        with grdSelected do
+        begin
+          if Objects[0, RowCount - 1] <> nil then RowCount := RowCount + 1;
+          Objects[0, RowCount - 1] := AProduct;
+          Cells[0, RowCount - 1] := AProduct.Name;
+          AResponse := FindResponseByName('STRENGTH', AnInstance);
+          if AResponse <> nil then Cells[1, RowCount - 1] := AResponse.EValue;
+          AResponse := FindResponseByName('INSTR',   AnInstance);
+          if AResponse <> nil then Cells[2, RowCount - 1] := AResponse.EValue;
+          TFSetAmountForRow(RowCount - 1);
+        end;
+      end;
+      AnInstance := NextInstance('ORDERABLE', AnInstance);
+    end; {while AnInstance - ORDERABLE}
+    AResponse := FindResponseByName('CANCEL', 1);
+    if AResponse <> nil then chkCancelTrays.Checked := AResponse.IValue = '1';
+    if not OrderForInpatient then
+    begin
+      SetControl(cboOPTFRecurringMeals, 'DATETIME', 1);
+      SetControl(calOPTFStart, 'DATETIME', 1);
+    end;
+    SetControl(txtTFComment, 'COMMENT',  1);
+  end;
+  Changing := False;                                       // Changing reset
+  TFChange(Self);
+end;
+
+procedure TfrmODDiet.TFClearGrid;
+var
+  i: Integer;
+begin
+  with grdSelected do for i := 0 to RowCount - 1 do
+  begin
+    TTFProduct(Objects[0, i]).Free;
+    Rows[i].Clear;
+  end;
+  grdSelected.RowCount := 1;
+end;
+
+procedure TfrmODDiet.cboProductMouseClick(Sender: TObject);
+var
+  AProduct: TTFProduct;
+begin
+  inherited;
+  // check quick order
+  if CharAt(cboProduct.ItemID, 1) = 'Q' then              // setup quick order
+  begin
+    Responses.QuickOrder := ExtractInteger(cboProduct.ItemID);
+    SetValuesFromResponsesTF;
+    cboProduct.ItemIndex := -1;
+    Exit;
+  end;
+  if cboProduct.ItemIEN <= 0 then Exit;
+  AProduct := TTFProduct.Create;
+  AProduct.IEN := cboProduct.ItemIEN;
+  AProduct.Name := Piece(cboProduct.Items[cboProduct.ItemIndex], U, 3);
+  cboProduct.ItemIndex := -1;
+  with grdSelected do
+  begin
+    if Objects[0, RowCount - 1] <> nil then RowCount := RowCount + 1;
+    Objects[0, RowCount - 1] := AProduct;
+    Cells[0, RowCount - 1] := AProduct.Name;
+    Cells[1, RowCount - 1] := 'FULL';
+    Row := RowCount - 1;
+    Col := 1;
+  end;
+  OrderMessage(OIMessage(AProduct.IEN));
+  TFChange(Sender);
+end;
+
+procedure TfrmODDiet.cboProductExit(Sender: TObject);
+begin
+  inherited;
+  if (cboProduct.ItemIEN > 0) or (CharAt(cboProduct.ItemID, 1) = 'Q') then
+    cboProductMouseClick(Self);
+end;
+
+procedure TfrmODDiet.grdSelectedDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
+  State: TGridDrawState);
+begin
+  inherited;
+  if Sender = ActiveControl then Exit;
+  if not (gdSelected in State) then Exit;
+  with Sender as TStringGrid do
+  begin
+    Canvas.Brush.Color := Color;
+    Canvas.Font := Font;
+    Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
+  end;
+end;
+
+procedure TfrmODDiet.grdSelectedSelectCell(Sender: TObject; Col, Row: Integer;
+  var CanSelect: Boolean);
+
+  procedure PlaceControl(AControl: TWinControl);
+  var
+    ARect: TRect;
+  begin
+    with AControl do
+    begin
+      ARect := grdSelected.CellRect(Col, Row);
+      SetBounds(ARect.Left + grdSelected.Left + 1,  ARect.Top  + grdSelected.Top + 1,
+                ARect.Right - ARect.Left + 1,       ARect.Bottom - ARect.Top + 1);
+      BringToFront;
+      Show;
+      SetFocus;
+    end;
+  end;
+
+begin
+  inherited;
+  if (Col <> 1) and (Col <> 2) then Exit;
+  if csDestroying in ComponentState then Exit;
+  if Col = 1 then
+  begin
+    cboStrength.ItemIndex :=cboStrength.Items.IndexOf(grdSelected.Cells[Col, Row]);
+    cboStrength.Tag := (Col * 256) + Row;
+    PlaceControl(cboStrength);
+  end;
+  if Col = 2 then
+  begin
+    txtQuantity.Text := grdSelected.Cells[Col, Row];
+    txtQuantity.Tag  := (Col * 256) + Row;
+    PlaceControl(txtQuantity);
+  end;
+end;
+
+procedure TfrmODDiet.SetNextCell(ACol, ARow: Integer);
+begin
+  FNextCol := ACol;
+  FNextRow := ARow;
+end;
+
+procedure TfrmODDiet.TFMoveToNextCell;
+var
+  NextCol, NextRow: Integer;
+begin
+  if (FNextCol < 0) or (FNextRow < 0) then Exit;
+  if (ActiveControl = grdSelected) and not (csLButtonDown in grdSelected.ControlState) then
+  begin
+    NextCol := FNextCol;
+    NextRow := FNextRow;
+    with grdSelected do if NextCol <> Col then Col := NextCol;
+    with grdSelected do if NextRow <> Row then Row := NextRow;
+  end;
+end;
+
+procedure TfrmODDiet.TFSetAmountForRow(ARow: Integer);
+var
+  Product, Strength: Integer;
+  x: string;
+begin
+  with grdSelected do
+  begin
+    if Objects[0, ARow] <> nil
+      then Product := TTFProduct(Objects[0, ARow]).IEN
+      else Product := 0;
+    Strength := TFStrengthCode(Cells[1, ARow]);
+    x := ExpandedQuantity(Product, Strength, Cells[2, ARow]);
+    if Length(x) > 0 then
+    begin
+      grdSelected.Cells[2, ARow] := Piece(x, U, 2);
+      grdSelected.Cells[3, ARow] := Piece(x, U, 1) + 'ml';
+    end
+    else grdSelected.Cells[3, ARow] := '';
+  end;
+end;
+
+function TfrmODDiet.TFStrengthCode(const x: string): Integer;
+begin
+  Result := 0;
+  if      x = '1/4'  then Result := 1
+  else if x = '1/2'  then Result := 2
+  else if x = '3/4'  then Result := 3
+  else if x = 'FULL' then Result := 4;
+end;
+
+procedure TfrmODDiet.cboStrengthEnter(Sender: TObject);
+begin
+  inherited;
+  SetNextCell(2, grdSelected.Row);
+end;
+
+procedure TfrmODDiet.cboStrengthKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  with grdSelected do
+    case Key of
+    VK_LEFT:  SetNextCell(0, Row);
+    VK_RIGHT: SetNextCell(2, Row);
+    end;
+  if Key in [VK_LEFT, VK_RIGHT] then
+  begin
+    Key := 0;
+    if not (csDestroying in ComponentState) then grdSelected.SetFocus;
+  end;
+end;
+
+procedure TfrmODDiet.cboStrengthChange(Sender: TObject);
+begin
+  inherited;
+  with cboStrength do
+  begin
+    if Tag < 0 then Exit;
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+  end;
+  TFChange(Sender);
+end;
+
+procedure TfrmODDiet.cboStrengthExit(Sender: TObject);
+begin
+  inherited;
+  with cboStrength do
+  begin
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+    TFSetAmountForRow(Tag mod 256);
+    Tag := -1;
+    Hide;
+  end;
+  TFChange(Sender);
+  TFMoveToNextCell;
+end;
+
+procedure TfrmODDiet.txtQuantityEnter(Sender: TObject);
+begin
+  inherited;
+  SetNextCell(-1, -1);
+end;
+
+procedure TfrmODDiet.txtQuantityKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  with grdSelected, txtQuantity do
+    case Key of
+    VK_UP:    SetNextCell(Col, HigherOf(Row - 1, 0));
+    VK_DOWN:  SetNextCell(Col, LowerOf(Row + 1, RowCount - 1));
+    VK_LEFT:  if (SelLength = 0) and (SelStart = 0) then SetNextCell(1, Row);
+    VK_RIGHT: if (SelLength = 0) and (SelStart = Length(Text)) then SetNextCell(3, Row);
+    VK_END:   if (SelLength = 0) and (SelStart = Length(Text)) then SetNextCell(3, Row);
+    VK_HOME:  if (SelLength = 0) and (SelStart = 0) then SetNextCell(0, Row);
+    VK_PRIOR: SetNextCell(Col, 0);
+    VK_NEXT:  SetNextCell(Col, RowCount - 1);
+    end;
+  if FNextCol > -1 then
+  begin
+    Key := 0;
+    if not (csDestroying in ComponentState) then grdSelected.SetFocus;
+  end;
+end;
+
+procedure TfrmODDiet.txtQuantityChange(Sender: TObject);
+begin
+  inherited;
+  with txtQuantity do
+  begin
+    if Tag < 0 then Exit;
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+  end;
+  TFChange(Sender);
+end;
+
+procedure TfrmODDiet.txtQuantityExit(Sender: TObject);
+begin
+  inherited;
+  with txtQuantity do
+  begin
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+    TFSetAmountForRow(Tag mod 256);
+    Tag := -1;
+    Hide;
+  end;
+  TFChange(Sender);
+  TFMoveToNextCell;
+end;
+
+procedure TfrmODDiet.cmdTFRemoveClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  with grdSelected do
+  begin
+    if Row < 0 then Exit;
+    if Objects[0, Row] <> nil then TTFProduct(Objects[0, Row]).Free;
+    for i := Row to RowCount - 2 do Rows[i] := Rows[i + 1];
+    Rows[RowCount - 1].Clear;
+    RowCount := RowCount - 1;
+  end;
+  TFChange(Sender);
+end;
+
+procedure TfrmODDiet.TFChange(Sender: TObject);
+var
+  i: Integer;
+  AProduct: TTFProduct;
+
+begin
+  inherited;
+  if Changing then Exit;
+  if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+  with grdSelected do for i := 0 to RowCount - 1 do
+  begin
+    AProduct := TTFProduct(Objects[0, i]);
+    if AProduct = nil then Continue;
+    with AProduct do if IEN > 0
+      then Responses.Update('ORDERABLE', i+1, IntToStr(IEN), Name);
+    if TFStrengthCode(Cells[1,i]) > 0
+      then Responses.Update('STRENGTH',  i+1, IntToStr(TFStrengthCode(Cells[1,i])), Cells[1,i]);
+    if Length(Cells[2,i]) > 0
+      then Responses.Update('INSTR',     i+1, Cells[2,i], Cells[2,i]);
+  end; {with grdSelected}
+  with txtTFComment do if Text <> ''
+    then Responses.Update('COMMENT', 1, Text, Text);
+  with chkCancelTrays do if Checked
+    then Responses.Update('CANCEL', 1, '1', 'Yes')
+    else Responses.Update('CANCEL', 1, '0', 'No');
+  if not OrderForInpatient then
+  begin
+    calOPTFStart.FMDateTime := StrToFloatDef(cboOPTFRecurringMeals.ItemID, 0);
+    Responses.Update('DATETIME', 1, FloatToStr(calOPTFStart.FMDateTime), calOPTFStart.Text);
+  end;
+  memOrder.Text := Responses.OrderText;
+end;
+
+{ Early/Late Tray tab ----------------------------------------------------------------------- }
+
+procedure TfrmODDiet.ResetControlsEL;
+begin
+  grpMeal.ItemIndex    := 3;
+  grpMeal.TabStop      := True;
+  grpMealTime.TabStop  := False;
+  radET1.Visible       := False;
+  radET2.Visible       := False;
+  radET3.Visible       := False;
+  radLT1.Visible       := False;
+  radLT2.Visible       := False;
+  radLT3.Visible       := False;
+  lblNoTimes.Visible   := False;
+  calELStart.Text      := '';
+  calELStop.Text       := '';
+  chkMonday.Checked    := False;
+  chkTuesday.Checked   := False;
+  chkWednesday.Checked := False;
+  chkThursday.Checked  := False;
+  chkFriday.Checked    := False;
+  chkSaturday.Checked  := False;
+  chkSunday.Checked    := False;
+  chkBagged.Checked    := False;
+end;
+
+procedure TfrmODDiet.SetValuesFromResponsesEL;
+var
+  AResponse: TResponse;
+begin
+  Changing := True;
+  ResetControlsEL;
+  with Responses do
+  begin
+    AResponse := FindResponseByName('MEAL', 1);
+    if AResponse <> nil then
+    begin
+      if AResponse.IValue = 'B' then grpMeal.ItemIndex := 0;
+      if AResponse.IValue = 'N' then grpMeal.ItemIndex := 1;
+      if AResponse.IValue = 'E' then grpMeal.ItemIndex := 2;
+    end;
+    if grpMeal.ItemIndex <> 3 then grpMealClick(Self);
+    AResponse := FindResponseByName('TIME', 1);
+    if AResponse <> nil then
+    begin
+      if radET1.Caption = AResponse.IValue then radET1.Checked := True;
+      if radET2.Caption = AResponse.IValue then radET2.Checked := True;
+      if radET3.Caption = AResponse.IValue then radET3.Checked := True;
+      if radLT1.Caption = AResponse.IValue then radLT1.Checked := True;
+      if radLT2.Caption = AResponse.IValue then radLT2.Checked := True;
+      if radLT3.Caption = AResponse.IValue then radLT3.Checked := True;
+    end;
+    if not OrderForInpatient then
+      SetControl(cboOPELRecurringMeals, 'START', 1)
+    else
+    begin
+      SetControl(calELStart, 'START', 1);
+      SetControl(calELStop,  'STOP',  1);
+    end;
+    calELStopChange(Self);
+    AResponse := FindResponseByName('SCHEDULE', 1);
+    if AResponse <> nil then
+    begin
+      chkMonday.Checked    := Pos('M', AResponse.IValue) > 0;
+      chkTuesday.Checked   := Pos('T', AResponse.IValue) > 0;
+      chkWednesday.Checked := Pos('W', AResponse.IValue) > 0;
+      chkThursday.Checked  := Pos('R', AResponse.IValue) > 0;
+      chkFriday.Checked    := Pos('F', AResponse.IValue) > 0;
+      chkSaturday.Checked  := Pos('S', AResponse.IValue) > 0;
+      chkSunday.Checked    := Pos('X', AResponse.IValue) > 0;
+    end;
+    AResponse := FindResponseByName('YN', 1);
+    if AResponse <> nil then chkBagged.Checked := AResponse.IValue = '1';
+  end; {with Responses}
+  Changing := False;
+  ELChange(Self);
+end;
+
+function TfrmODDiet.GetMealTime: string;
+begin
+  Result := '';
+  if radET1.Checked then Result := radET1.Caption;
+  if radET2.Checked then Result := radET2.Caption;
+  if radET3.Checked then Result := radET3.Caption;
+  if radLT1.Checked then Result := radLT1.Caption;
+  if radLT2.Checked then Result := radLT2.Caption;
+  if radLT3.Checked then Result := radLT3.Caption;
+end;
+
+function TfrmODDiet.GetDaysOfWeek: string;
+begin
+  Result := '';
+  if chkMonday.Checked    then Result := Result + 'M';
+  if chkTuesday.Checked   then Result := Result + 'T';
+  if chkWednesday.Checked then Result := Result + 'W';
+  if chkThursday.Checked  then Result := Result + 'R';
+  if chkFriday.Checked    then Result := Result + 'F';
+  if chkSaturday.Checked  then Result := Result + 'S';
+  if chkSunday.Checked    then Result := Result + 'X';
+end;
+
+function TfrmODDiet.IsEarlyTray: Boolean;
+begin
+  Result := True;
+  if radLT1.Checked then Result := False;
+  if radLT2.Checked then Result := False;
+  if radLT3.Checked then Result := False;
+end;
+
+procedure TfrmODDiet.grpMealClick(Sender: TObject);
+
+  procedure SetMealTimes(const x: string);
+
+    procedure ActivateButton( Button: TRadioButton; const MealTime: string;
+      var MoreActivated: boolean);
+    var
+      Activate: boolean;
+    begin
+      Button.Caption := MealTime;
+      Activate := Length(MealTime) > 0;
+      Button.Visible := Activate;
+      Button.Checked := Activate and not MoreActivated;
+      MoreActivated := MoreActivated or Activate;
+    end;
+
+  var
+    HasTimes: Boolean;
+  begin
+    HasTimes := False;
+    ActivateButton(radET1, Piece(x, U, 1), HasTimes);
+    ActivateButton(radET2, Piece(x, U, 2), HasTimes);
+    ActivateButton(radET3, Piece(x, U, 3), HasTimes);
+    ActivateButton(radLT1, Piece(x, U, 4), HasTimes);
+    ActivateButton(radLT2, Piece(x, U, 5), HasTimes);
+    ActivateButton(radLT3, Piece(x, U, 6), HasTimes);
+    lblNoTimes.Visible := not HasTimes;
+  end;
+var
+  AMeal: string;
+begin
+  inherited;
+  Changing := True;
+  case grpMeal.ItemIndex of
+    0: begin
+         SetMealTimes(uDietParams.BTimes);
+         AMeal := 'B';
+       end;
+    1: begin
+         SetMealTimes(uDietParams.NTimes);
+         AMeal := 'N';
+       end;
+    2: begin
+         SetMealTimes(uDietParams.ETimes);
+         AMeal := 'E';
+       end;
+  else
+    begin
+      SetMealTimes('');
+      AMeal := '';
+    end;
+  end;
+  if not OrderForInpatient then
+    begin
+      if AMeal = '' then
+      begin
+        uRecurringMealList.Clear;
+        cboOPELRecurringMeals.Clear;
+      end
+      else if not PatientHasRecurringMeals(uRecurringMealList, AMeal) then
+        begin
+          uRecurringMealList.Clear;
+          cboOPELRecurringMeals.Clear;
+          grpMeal.ItemIndex := 3;
+        end
+      else
+        FastAssign(uRecurringMealList, cboOPELRecurringMeals.Items);
+    end;
+  Changing := False;
+  ELChange(grpMeal);
+end;
+
+
+procedure TfrmODDiet.SetEnableDOW(AllowUse: Boolean);
+begin
+  grpDOW.Enabled       := AllowUse;
+  chkMonday.Enabled    := AllowUse;
+  chkTuesday.Enabled   := AllowUse;
+  chkWednesday.Enabled := AllowUse;
+  chkThursday.Enabled  := AllowUse;
+  chkFriday.Enabled    := AllowUse;
+  chkSaturday.Enabled  := AllowUse;
+  chkSunday.Enabled    := AllowUse;
+end;
+
+procedure TfrmODDiet.calELStartEnter(Sender: TObject);
+begin
+  inherited;
+  FChangeStop := Length(calELStop.Text) = 0;
+end;
+
+procedure TfrmODDiet.calELStartChange(Sender: TObject);
+begin
+  inherited;
+  if FChangeStop then
+    calELStop.Text := calELStart.Text
+  else
+    ELChange(Sender);
+end;
+
+procedure TfrmODDiet.calELStartExit(Sender: TObject);
+begin
+  inherited;
+  if not OrderForInpatient then SetEnableDOW(False)
+  else if (Length(calELStop.Text) > 0) and (calELStop.Text = calELStart.Text)
+    then SetEnableDOW(False)
+    else SetEnableDOW(True);
+end;
+
+procedure TfrmODDiet.calELStopChange(Sender: TObject);
+begin
+  inherited;
+  if (Length(calELStop.Text) > 0) and (calELStop.FMDateTime = calELStart.FMDateTime)
+    then SetEnableDOW(False)
+    else SetEnableDOW(True);
+  ELChange(Sender);
+end;
+
+procedure TfrmODDiet.ELChange(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  if Changing then Exit;
+  if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+  case grpMeal.ItemIndex of
+  0: Responses.Update('MEAL', 1, 'B', 'BREAKFAST');
+  1: Responses.Update('MEAL', 1, 'N', 'NOON');
+  2: Responses.Update('MEAL', 1, 'E', 'EVENING');
+  end;
+  x := GetMealTime;
+  if Length(x) > 0 then
+  begin
+    Responses.Update('TIME', 1, x, x);
+    if IsEarlyTray
+      then Responses.Update('ORDERABLE', 1, uDietParams.EarlyIEN, 'EARLY TRAY')
+      else Responses.Update('ORDERABLE', 1, uDietParams.LateIEN,  'LATE TRAY');
+  end;
+  if not OrderForInpatient then
+  begin
+    calELStart.FMDateTime := StrToFloatDef(cboOPELRecurringMeals.ItemID, 0);
+    calELStop.FMDateTime := calELStart.FMDateTime;
+  end;
+  with calELStart   do if Length(Text) > 0 then Responses.Update('START',     1, Text,   Text);
+  with calELStop    do if Length(Text) > 0 then Responses.Update('STOP',      1, Text,   Text);
+  x := GetDaysOfWeek;
+  if Length(x) > 0 then Responses.Update('SCHEDULE', 1, x, x);
+  if chkBagged.Checked
+    then Responses.Update('YN', 1, '1', 'YES')
+    else Responses.Update('YN', 1, '0', 'NO');
+  memOrder.Text := Responses.OrderText;
+end;
+
+{ Isolation Precautions tab ----------------------------------------------------------------- }
+
+procedure TfrmODDiet.ResetControlsIP;
+begin
+  lstIsolation.ItemIndex := -1;
+  txtIPComment.Text := '';
+end;
+
+procedure TfrmODDiet.SetValuesFromResponsesIP;
+begin
+  Changing := True;
+  ResetControlsIP;
+  Responses.SetControl(lstIsolation, 'ISOLATION', 1);
+  Responses.SetControl(txtIPComment, 'COMMENT',   1);
+  Changing := False;
+  IPChange(Self);
+end;
+
+procedure TfrmODDiet.IPChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+  Responses.Update('ORDERABLE', 1, FIsolationID, 'Isolation Procedures');
+  with lstIsolation do if ItemIEN > 0
+    then Responses.Update('ISOLATION', 1, ItemID, DisplayText[ItemIndex]);
+  with txtIPComment do if Text <> ''
+    then Responses.Update('COMMENT', 1, Text, Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+{ Additional Diet Order tab ----------------------------------------------------------------- }
+
+procedure TfrmODDiet.ResetControlsAO;
+begin
+  txtAOComment.Text := '';
+  calOPAOStart.Text := '';
+end;
+
+procedure TfrmODDiet.SetValuesFromResponsesAO;
+begin
+  Changing := True;
+  ResetControlsAO;
+  Responses.SetControl(txtAOComment, 'COMMENT', 1);
+  //Responses.SetControl(calOPAOStart, 'DATETIME', 1);
+  Responses.SetControl(cboOPAORecurringMeals, 'DATETIME', 1);
+  Changing := False;
+  AOChange(Self);
+end;
+
+procedure TfrmODDiet.AOChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  with txtAOComment do if Text <> ''
+    then Responses.Update('COMMENT', 1, Text, Text);
+  if not OrderForInpatient then
+    begin
+      calOPAOStart.FMDateTime := StrToFloatDef(cboOPAORecurringMeals.ItemID, 0);
+      Responses.Update('DATETIME', 1, FloatToStr(calOPAOStart.FMDateTime), calOPAOStart.Text);
+    end;
+  memOrder.Text := Responses.OrderText;
+end;
+
+
+{ Outpatient Meals Order tab ----------------------------------------------------------------- }
+
+procedure TfrmODDiet.cboOPDietAvailMouseClick(Sender: TObject);
+var
+  NewDiet,ErrMsg: string;
+
+  procedure SetError(const AnError: string);
+  begin
+    if Length(ErrMsg) > 0 then Exit;
+    ErrMsg := AnError;
+  end;
+
+begin
+  inherited;
+  if cboOPDietAvail.Items.Count = 0 then
+    begin
+      InfoBox(TX_NO_MEALS_DEFINED, TC_NO_MEALS_DEFINED, MB_OK or MB_ICONINFORMATION);
+      AbortOrder := True;
+      exit;
+    end  ;
+  if CharAt(cboOPDietAvail.ItemID, 1) = 'Q' then              // setup quick order
+  begin
+    Responses.QuickOrder := ExtractInteger(cboOPDietAvail.ItemID);
+    SetValuesFromResponsesOP;
+    cboOPDietAvail.ItemIndex := -1;
+    Exit;
+  end;
+  if cboOPDietAvail.ItemIEN > 0 then with lstOPDietSelect do
+  begin
+    ErrMsg := '';
+    NewDiet := DietAttributes(cboOPDietAvail.ItemIEN);
+    if Piece(NewDiet,'^',1)='0' then
+    begin
+      InfoBox(Piece(NewDiet,'^',2),TC_OP_DIET_ERR, MB_OK);     
+      cboOPDietAvail.ItemIndex := -1;
+      Exit;
+    end;
+    lstOPDietSelect.Items.Clear;
+    lstOPDietSelect.Items.Add(NewDiet);
+{ TODO -oRich V. -cOutpatient Meals : Will these be selectable for an outpatient meal? }
+    OPDietCheckForNPO;
+{ TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+    OPDietCheckForTF;
+    OrderMessage(OIMessage(StrToIntDef(Piece(NewDiet, U, 1), 0)));
+    OPChange(Sender);
+  end; {if cboOPDietAvail}
+  OPChange(Sender);
+  cboOPDietAvail.ItemIndex := -1;
+end;
+
+procedure TfrmODDiet.cboOPDietAvailExit(Sender: TObject);
+begin
+  inherited;
+  if (cboOPDietAvail.ItemIEN > 0) or (CharAt(cboOPDietAvail.ItemID, 1) = 'Q') then
+    cboOPDietAvailMouseClick(Self);
+end;
+
+procedure TfrmODDiet.ResetControlsOP;
+begin
+  lstOPDietSelect.Clear;
+  cboOPDietAvail.ItemIndex := -1;
+  grpOPMeal.ItemIndex    := 3;
+  grpOPMeal.TabStop      := True;
+  chkOPMonday.Checked    := False;
+  chkOPTuesday.Checked   := False;
+  chkOPWednesday.Checked := False;
+  chkOPThursday.Checked  := False;
+  chkOPFriday.Checked    := False;
+  chkOPSaturday.Checked  := False;
+  chkOPSunday.Checked    := False;
+  lblOPComment.Visible   := False;
+  txtOPDietComment.Visible := False;
+  txtOPDietComment.Text := '';
+  if uDialogName = 'FHW OP MEAL' then
+    begin
+      calOPStart.Text      := '';
+      calOPStop.Text       := '';
+      calOPStart.Enabled := True;
+      calOPStop.Enabled := True;
+      lblOPStart.Enabled := True;
+      lblOPStop.Enabled := True;
+      grpOPDOW.Visible := True;
+    end
+  else if uDialogName = 'FHW SPECIAL MEAL' then
+    begin
+      calOPStart.Text := 'TODAY';
+      calOPStop.Text  := 'TODAY';
+      calOPStart.Enabled := False;
+      calOPStop.Enabled := False;
+      lblOPStart.Enabled := False;
+      lblOPStop.Enabled := False;
+      grpOPDOW.Visible := False;
+    end;
+end;
+
+procedure TfrmODDiet.SetValuesFromResponsesOP;
+var
+  AResponse: TResponse;
+  ADiet: string;
+begin
+  Changing := True;
+  ResetControlsOP;
+  with Responses do
+  begin
+    AResponse := FindResponseByName('ORDERABLE', 1);
+    if AResponse <> nil then
+    begin
+      ADiet := DietAttributes(StrToIntDef(AResponse.IValue,0));
+      if Piece(ADiet,'^',1)='0' then
+      begin
+        InfoBox(Piece(ADiet,'^',2), TC_OP_DIET_ERR, MB_OK);
+        cboOPDietAvail.ItemIndex := -1;
+        Changing := False;
+        Exit;
+      end;
+      SetControl(cboOPDietAvail,    'ORDERABLE', 1);
+      lstOPDietSelect.Items.Add(ADiet);
+    end;
+    SetControl(cboOPDelivery,    'DELIVERY', 1);
+    AResponse := FindResponseByName('MEAL', 1);
+    if AResponse <> nil then
+    begin
+      if AResponse.IValue = 'B' then grpOPMeal.ItemIndex := 0;
+      if AResponse.IValue = 'N' then grpOPMeal.ItemIndex := 1;
+      if AResponse.IValue = 'E' then grpOPMeal.ItemIndex := 2;
+    end;
+    SetControl(calOPStart, 'START', 1);
+    SetControl(calOPStop,  'STOP',  1);
+    calOPStopChange(Self);
+    AResponse := FindResponseByName('SCHEDULE', 1);
+    if AResponse <> nil then
+    begin
+      chkOPMonday.Checked    := Pos('M', AResponse.IValue) > 0;
+      chkOPTuesday.Checked   := Pos('T', AResponse.IValue) > 0;
+      chkOPWednesday.Checked := Pos('W', AResponse.IValue) > 0;
+      chkOPThursday.Checked  := Pos('R', AResponse.IValue) > 0;
+      chkOPFriday.Checked    := Pos('F', AResponse.IValue) > 0;
+      chkOPSaturday.Checked  := Pos('S', AResponse.IValue) > 0;
+      chkOPSunday.Checked    := Pos('X', AResponse.IValue) > 0;
+    end;
+    SetControl(txtOPDietComment, 'COMMENT',  1);
+  end; {with Responses}
+  OPDietCheckForNPO;
+  OPDietCheckForTF;
+  Changing := False;
+  OPChange(Self);
+end;
+
+procedure TfrmODDiet.calOPStartEnter(Sender: TObject);
+begin
+  inherited;
+  FChangeStop := Length(calOPStop.Text) = 0;
+end;
+
+procedure TfrmODDiet.calOPStartChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then exit;
+  if FChangeStop then
+    calOPStop.Text := calOPStart.Text
+  else
+    OPChange(Sender);
+end;
+
+function TfrmODDiet.FMDOW(AnFMDate: TFMDateTime): integer;
+var
+  WinDate: TDateTime;
+  x: integer;
+begin
+  WinDate := FMDateTimeToDateTime(AnFMDate);
+  x := DayOfTheWeek(WinDate);
+  Result := x;
+end;
+
+function TfrmODDiet.FMDays(AStart, AEnd: TFMDateTime): string;
+var
+  AWinStart, AWinEnd: TDateTime;
+  i: double;
+  Days: string;
+begin
+  AWinStart := FMDateTimeToDateTime(AStart);
+  AWinEnd := FMDateTimeToDateTime(AEnd);
+  i := AWinStart;
+  repeat
+    Days := Days + FMDayLetters[DayOfTheWeek(i)];
+    i := i + 1;
+  until i > AWinEnd;
+  Result := Days;
+end;
+
+procedure TfrmODDiet.calOPStartExit(Sender: TObject);
+var
+  Days: string;
+begin
+  inherited;
+  if not (calOPStart.FMDateTime > 0) then
+  begin
+    SetEnableOPDOW(False, -1);
+    Exit ;
+  end;
+  if (Length(calOPStop.Text) > 0) and (calOPStop.Text = calOPStart.Text) then
+    SetEnableOPDOW(False, FMDOW(calOPStart.FMDateTime))
+  else
+  begin
+    Days := FMDays(calOPStart.FMDateTime, calOPStop.FMDateTime);
+    SetEnableOPDOW(True, -1, Days);
+  end;
+end;
+
+procedure TfrmODDiet.calOPStopChange(Sender: TObject);
+var
+  Days: string;
+begin
+  inherited;
+  if Changing then exit;
+  if not (calOPStop.FMDateTime > 0) then
+  begin
+    SetEnableOPDOW(False, -1);
+    Exit ;
+  end;
+  if (Length(calOPStop.Text) > 0) and (calOPStop.FMDateTime = calOPStart.FMDateTime) then
+    SetEnableOPDOW(False, FMDOW(calOPStart.FMDateTime))
+  else
+  begin
+    Days := FMDays(calOPStart.FMDateTime, calOPStop.FMDateTime);
+    SetEnableOPDOW(True, -1, Days);
+  end;
+  OPChange(Sender);
+end;
+
+procedure TfrmODDiet.OPChange(Sender: TObject);
+var
+  x: string;
+  //i: integer;
+begin
+  inherited;
+  if Changing then Exit;
+  if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+  // Per NFS, only one selection allowed from any of 10-15 available OP diets
+  with lstOPDietSelect do if Items.Count > 0 then
+    Responses.Update('ORDERABLE', 1, Piece(Items[0], U, 1), Piece(Items[0], U, 2));
+  case grpOPMeal.ItemIndex of
+    0: Responses.Update('MEAL', 1, 'B', 'BREAKFAST');
+    1: Responses.Update('MEAL', 1, 'N', 'NOON');
+    2: Responses.Update('MEAL', 1, 'E', 'EVENING');
+  end;
+  with calOPStart   do (*if Length(Text) > 0 then*) Responses.Update('START',     1, Text,   Text);
+  with calOPStop    do (*if Length(Text) > 0 then*) Responses.Update('STOP',      1, Text,   Text);
+  if uDialogName = 'FHW OP MEAL' then
+    begin
+      x := GetOPDaysOfWeek;
+      if Length(x) = 0 then x := 'ONCE';
+      Responses.Update('SCHEDULE', 1, x, x);
+    end;
+  with txtOPDietComment do {if Length(Text) > 0 then} Responses.Update('COMMENT',   1, Text,   Text);
+  with cboOPDelivery    do if Visible            then Responses.Update('DELIVERY',  1, ItemID, Text);
+{ TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+(*  with chkOPCancelTubefeeding do case State of
+                                 cbChecked:   Responses.Update('CANCEL', 1, '1', 'YES');
+                                 cbUnchecked: Responses.Update('CANCEL', 1, '0', 'NO');
+                               end;*)
+  Responses.VarTrailing := 'Meal';
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODDiet.grpOPMealClick(Sender: TObject);
+begin
+  inherited;
+  OPChange(Sender);
+end;
+
+procedure TfrmODDiet.SetEnableOPDOW(AllowUse: Boolean; OneTimeDay: integer; DaysToCheck: string = '');
+var
+  i: integer;
+begin
+  if (not AllowUse) and (OneTimeDay > -1) then
+    begin
+      for i := 0 to grpOPDOW.ControlCount - 1 do
+      begin
+        if grpOPDOW.Controls[i] is TCheckBox then
+          TCheckBox(grpOPDOW.Controls[i]).Checked := False;
+      end;
+      //TCheckBox(grpOPDOW.Controls[OneTimeDay - 1]).Checked := True;  CQ #8305
+    end;
+  grpOPDOW.Enabled       := AllowUse;
+  chkOPMonday.Enabled    := AllowUse and (Pos('M', DaysToCheck) > 0);
+  chkOPTuesday.Enabled   := AllowUse and (Pos('T', DaysToCheck) > 0);
+  chkOPWednesday.Enabled := AllowUse and (Pos('W', DaysToCheck) > 0);
+  chkOPThursday.Enabled  := AllowUse and (Pos('R', DaysToCheck) > 0);
+  chkOPFriday.Enabled    := AllowUse and (Pos('F', DaysToCheck) > 0);
+  chkOPSaturday.Enabled  := AllowUse and (Pos('S', DaysToCheck) > 0);
+  chkOPSunday.Enabled    := AllowUse and (Pos('X', DaysToCheck) > 0);
+end;
+
+function TfrmODDiet.GetOPDaysOfWeek: string;
+begin
+  Result := '';
+  if chkOPMonday.Checked    then Result := Result + 'M';
+  if chkOPTuesday.Checked   then Result := Result + 'T';
+  if chkOPWednesday.Checked then Result := Result + 'W';
+  if chkOPThursday.Checked  then Result := Result + 'R';
+  if chkOPFriday.Checked    then Result := Result + 'F';
+  if chkOPSaturday.Checked  then Result := Result + 'S';
+  if chkOPSunday.Checked    then Result := Result + 'X';
+end;
+
+procedure TfrmODDiet.cmdOPRemoveClick(Sender: TObject);
+begin
+  inherited;
+  with lstOPDietSelect do if ItemIndex > -1 then Items.Delete(ItemIndex);
+  OPChange(Sender);
+  with lstOPDietSelect do if Items.Count = 0 then
+  begin
+    lblOPDelivery.Visible := True;
+    cboOPDelivery.Visible := True;
+{ TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+    chkOPCancelTubefeeding.State := cbGrayed;
+    chkOPCancelTubefeeding.Visible := False;
+  end;
+end;
+
+function TfrmODDiet.GetOPMealWindow: string;
+begin
+  case grpOPMeal.ItemIndex of
+    0:  Result := Pieces(uDietParams.Alarms, U, 1, 2);
+    1:  Result := Pieces(uDietParams.Alarms, U, 3, 4);
+    2:  Result := Pieces(uDietParams.Alarms, U, 5, 6);
+  else
+    Result := U;
+  end;
+end;
+
+procedure TfrmODDiet.OPDietCheckForNPO;
+begin
+{ TODO -oRich V. -cOutpatient Meals : Need NFS input on this section (NPO and special instructions.) }
+  if Piece(lstOPDietSelect.Items[0], U, 2) = 'NPO' then
+  begin
+    lblOPDelivery.Visible := False;
+    cboOPDelivery.Visible := False;
+    lblOPComment.Visible := True;          
+    txtOPDietComment.Visible := True;
+  end else                                 
+  begin                                    
+    lblOPComment.Visible := False;         
+    txtOPDietComment.Visible := False;     
+    txtOPDietComment.Text := '';           
+  end;
+end;
+
+{ TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+procedure TfrmODDiet.OPDietCheckForTF;
+var
+  x: string;
+begin
+  with lstOPDietSelect do
+  begin
+    if (Items.Count = 1) and (Piece(Items[0], U, 2) <> 'NPO')
+      and (Length(uDietParams.CurTF) > 0) then
+    begin
+      x := TextForOrder(uDietParams.CurTF);
+      if InfoBox(TX_CANCEL_TF + x, TC_CANCEL_TF, MB_YESNO) = IDYES then
+      begin
+        chkOPCancelTubeFeeding.State := cbChecked;
+        chkOPCancelTubeFeeding.Visible := True;
+      end
+      else chkOPCancelTubeFeeding.State := cbUnchecked;
+    end; {if (Items...}
+  end; {with lstOPDietSelect}
+end;
+
+{ Common Buttons ---------------------------------------------------------------------------- }
+
+procedure TfrmODDiet.cmdAcceptClick(Sender: TObject);
+var
+  DCOrder: TOrder;
+  LateTrayFields: TLateTrayFields;
+  //CxMsg: string;
+begin
+  // these actions should be before inherited, so that InitDialog doesn't clear properties
+  LateTrayFields.LateMeal := #0;      // #0 so only create late order if LT dialog invoked
+  if nbkDiet.ActivePage = pgeDiet then
+  begin
+(*    if Self.EvtID <> 0 then
+    begin
+      CheckForAutoDCDietOrders(Self.EvtID, Self.DisplayGroup, '', CxMsg, cmdAccept);
+      if CxMsg <> '' then
+      begin
+        if InfoBox(CxMsg + CRLF + CRLF +
+           'Have you done either of the above?', 'Possible delayed order conflict',
+           MB_ICONWARNING or MB_YESNO) = ID_NO
+           then exit;
+      end;
+    end;*)
+    // create dc tubefeeding order
+    if chkCancelTubeFeeding.State = cbChecked then
+    begin
+      DCOrder := TOrder.Create;
+      DCOrder.ID := uDietParams.CurTF;
+      SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_DC, Integer(DCOrder));
+      DCOrder.Free;
+    end;
+    // check if late tray should be ordered
+    LateTrayCheck(Responses, Self.EvtID, FALSE, LateTrayFields);
+  end;
+{ TODO -oRich V. -cOutpatient Meals : Need to DC Tubefeeding order for OP meals? }
+  if nbkDiet.ActivePage = pgeOutPt then
+  begin
+    // create dc tubefeeding order
+    if chkOPCancelTubeFeeding.State = cbChecked then
+    begin
+      DCOrder := TOrder.Create;
+      DCOrder.ID := uDietParams.CurTF;
+      SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_DC, Integer(DCOrder));
+      DCOrder.Free;
+    end;
+    // check if late tray should be ordered
+    LateTrayCheck(Responses, Self.EvtID, TRUE, LateTrayFields);
+  end;
+  inherited;
+  with LateTrayFields do if LateMeal <> #0 then LateTrayOrder(LateTrayFields, OrderForInpatient);
+end;
+
+procedure TfrmODDiet.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then begin
+    if (ssCtrl in Shift) then begin
+      if not (ActiveControl is TCustomMemo) or not TMemo(ActiveControl).WantTabs then begin
+        nbkDiet.SelectNextPage( not (ssShift in Shift));
+        Key := 0;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmODDiet.cboOPDietAvailKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then cboOPDietAvailMouseClick(Self);
+end;
+
+function TfrmODDiet.PatientHasRecurringMeals(var MealList: TStringList; MealType: string = ''): boolean;
+const
+  TX_NO_RECURRING_MEALS = 'For outpatients, this type of order requires association with an existing recurring' + CRLF +
+                          'meal order.  There are currently no active recurring meal orders for this patient.' + CRLF + CRLF +
+                          'Those orders must be signed and released before they can be linked to this item.'; 
+  TC_NO_RECURRING_MEALS = 'Unable to order ' ;
+begin
+  MealList.Clear;
+  GetCurrentRecurringOPMeals(MealList, MealType);
+  if MealList.Count = 0 then
+    begin
+      InfoBox(TX_NO_RECURRING_MEALS, TC_NO_RECURRING_MEALS + nbkDiet.ActivePage.Caption, MB_OK);
+      Result := False;
+    end
+  else
+    Result := True;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDietLT.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDietLT.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDietLT.dfm	(revision 1676)
@@ -0,0 +1,125 @@
+inherited frmODDietLT: TfrmODDietLT
+  Left = 398
+  Top = 254
+  Caption = 'Late Tray?'
+  ClientHeight = 161
+  ClientWidth = 296
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 304
+  ExplicitHeight = 188
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Bevel1: TBevel [0]
+    Left = 0
+    Top = 66
+    Width = 296
+    Height = 2
+  end
+  object lblMealCutoff: TStaticText [1]
+    Left = 8
+    Top = 16
+    Width = 186
+    Height = 17
+    Caption = 'You have missed the breakfast cut-off.'
+    TabOrder = 4
+  end
+  object Label2: TStaticText [2]
+    Left = 8
+    Top = 34
+    Width = 156
+    Height = 17
+    Caption = 'Do you wish to order a late tray?'
+    TabOrder = 5
+  end
+  object GroupBox1: TGroupBox [3]
+    Left = 109
+    Top = 76
+    Width = 77
+    Height = 78
+    Caption = 'Meal Time'
+    TabOrder = 0
+    object radLT1: TRadioButton
+      Left = 9
+      Top = 16
+      Width = 56
+      Height = 17
+      TabOrder = 0
+    end
+    object radLT2: TRadioButton
+      Left = 9
+      Top = 36
+      Width = 56
+      Height = 17
+      TabOrder = 1
+    end
+    object radLT3: TRadioButton
+      Left = 9
+      Top = 56
+      Width = 56
+      Height = 17
+      TabOrder = 2
+    end
+  end
+  object cmdYes: TButton [4]
+    Left = 216
+    Top = 8
+    Width = 72
+    Height = 21
+    Caption = 'Yes'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdYesClick
+  end
+  object cmdNo: TButton [5]
+    Left = 216
+    Top = 37
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'No'
+    TabOrder = 2
+    OnClick = cmdNoClick
+  end
+  object chkBagged: TCheckBox [6]
+    Left = 8
+    Top = 76
+    Width = 85
+    Height = 17
+    Caption = 'Bagged Meal'
+    TabOrder = 3
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblMealCutoff'
+        'Status = stsDefault')
+      (
+        'Component = Label2'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = radLT1'
+        'Status = stsDefault')
+      (
+        'Component = radLT2'
+        'Status = stsDefault')
+      (
+        'Component = radLT3'
+        'Status = stsDefault')
+      (
+        'Component = cmdYes'
+        'Status = stsDefault')
+      (
+        'Component = cmdNo'
+        'Status = stsDefault')
+      (
+        'Component = chkBagged'
+        'Status = stsDefault')
+      (
+        'Component = frmODDietLT'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDietLT.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDietLT.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODDietLT.pas	(revision 1676)
@@ -0,0 +1,280 @@
+unit fODDietLT;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ExtCtrls, StdCtrls, ORFn, fODBase, rODBase, VA508AccessibilityManager;
+
+type
+  TfrmODDietLT = class(TfrmAutoSz)
+    lblMealCutoff: TStaticText;
+    Label2: TStaticText;
+    GroupBox1: TGroupBox;
+    cmdYes: TButton;
+    cmdNo: TButton;
+    radLT1: TRadioButton;
+    radLT2: TRadioButton;
+    radLT3: TRadioButton;
+    chkBagged: TCheckBox;
+    Bevel1: TBevel;
+    procedure cmdYesClick(Sender: TObject);
+    procedure cmdNoClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    FOutpatient: boolean;
+    YesPressed: Boolean;
+  public
+    { Public declarations }
+  end;
+
+  TLateTrayFields = record
+    LateMeal: Char;
+    LateTime: string;
+    IsBagged: Boolean;
+  end;
+
+procedure CheckLateTray(const StartTime: string; var LateTrayFields: TLateTrayFields; IsOutpatient: boolean; AMeal: char = #0);
+procedure LateTrayCheck(SomeResponses: TResponses; EventId: integer; IsOutpatient: boolean; var LateTrayFields: TLateTrayFields);
+procedure LateTrayOrder(LateTrayFields: TLateTrayFields; IsInpatient: boolean);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, rODDiet, uConst, rOrders;
+
+const
+  TX_MEAL_REQ = 'A meal time must be selected.';
+  TC_MEAL_REQ = 'No Meal Time Selected';
+
+procedure CheckLateTray(const StartTime: string; var LateTrayFields: TLateTrayFields; IsOutpatient: boolean; AMeal: char = #0);
+var
+  frmODDietLT: TfrmODDietLT;
+  DietParams: TDietParams;
+  FMTime: TFMDateTime;
+  TimePart: Extended;
+  Meal: Char;
+  AvailTimes,ALocation: string;
+  TimeCount: Integer;
+
+  function AMPMToFMTime(const x: string): Extended;
+  var
+    IntTime: Integer;
+  begin
+    Result := 0;
+    if Pos(':', x) = 0 then Exit;
+    IntTime := StrToIntDef(Piece(x, ':', 1) + Copy(Piece(x, ':', 2), 1, 2), 0);
+    if (Pos('P', x) > 0) and (IntTime < 1200) then IntTime := IntTime + 1200;
+    if (Pos('A', x) > 0) and (IntTime > 1200) then IntTime := IntTime - 1200;
+    Result := IntTime / 10000;
+  end;
+
+  function FMTimeToAMPM(x: Extended): string;
+  var
+    TimePart: extended;
+    AMPMTime, Suffix: string;
+  begin
+    TimePart := Frac(x);
+    if TimePart > 0.1159 then
+    begin
+      if TimePart > 0.1259 then x := x - 0.12;
+      Suffix := 'P'
+    end
+    else Suffix := 'A';
+    AMPMTime := FormatFMDateTime('hh:nn', x);
+    Result := AMPMTime + Suffix;
+  end;
+
+  procedure SetAvailTimes(ATime: Extended; var ACount: Integer; var TimeList: string);
+  var
+    i: Integer;
+    ReturnList: string;
+  begin
+    ACount := 0;
+    ReturnList := '';
+    for i := 1 to 3 do
+      if AMPMToFMTime(Piece(TimeList, U, i)) > ATime then
+      begin
+        if Length(ReturnList) > 0 then ReturnList := ReturnList + U;
+        ReturnList := ReturnList + Piece(TimeList, U, i);
+        Inc(ACount);
+      end;
+    TimeList := ReturnList;
+  end;
+
+begin
+  // initialize LateTrayFields
+  LateTrayFields.LateMeal := #0;
+  LateTrayFields.LateTime := '';
+  LateTrayFields.IsBagged := False;
+  // make sure the start time is today and not in the future
+  FMTime := StrToFMDateTime(StartTime);
+  if FMTime < 0 then Exit;
+  if Int(FMTime) <> FMToday then Exit;
+  TimePart := Frac(FMTime);
+  if TimePart = 0 then TimePart := Frac(FMNow);
+  if TimePart > Frac(FMNow) then Exit;
+  Meal := #0;
+  ALocation := IntToStr(Encounter.Location);
+  LoadDietParams(DietParams,ALocation);
+  // check to see if falling within the alarm range of a meal
+  if not IsOutpatient then
+  begin
+    if (TimePart > (StrToIntDef(Piece(DietParams.Alarms, U, 1), 0) / 10000)) and
+       (TimePart < (StrToIntDef(Piece(DietParams.Alarms, U, 2), 0) / 10000)) then Meal := 'B';
+    if (TimePart > (StrToIntDef(Piece(DietParams.Alarms, U, 3), 0) / 10000)) and
+       (TimePart < (StrToIntDef(Piece(DietParams.Alarms, U, 4), 0) / 10000)) then Meal := 'N';
+    if (TimePart > (StrToIntDef(Piece(DietParams.Alarms, U, 5), 0) / 10000)) and
+       (TimePart < (StrToIntDef(Piece(DietParams.Alarms, U, 6), 0) / 10000)) then Meal := 'E';
+    if Meal = #0 then Exit;
+  end
+  else  // for outpatients
+  begin
+(*  From Rich Knoepfle, NFS developer
+If they order a breakfast and it is after the LATE BREAKFAST ALARM END, I don't allow them to do it.  (For special meals I don't allow them to order something for the following day).
+If it's before the LATE BREAKFAST ALARM BEGIN than I accept the order.
+If it's between the LATE BREAKFAST ALARM BEGIN and ALARM END then I ask if they want to order a Late breakfast tray.
+*)
+    Meal := AMeal;
+    case AMeal of
+      'B':  if (TimePart < (StrToIntDef(Piece(DietParams.Alarms, U, 1), 0) / 10000)) or
+               (TimePart > (StrToIntDef(Piece(DietParams.Alarms, U, 2), 0) / 10000)) then Meal := #0;
+      'N':  if (TimePart < (StrToIntDef(Piece(DietParams.Alarms, U, 3), 0) / 10000)) or
+               (TimePart > (StrToIntDef(Piece(DietParams.Alarms, U, 4), 0) / 10000)) then Meal := #0;
+      'E':  if (TimePart < (StrToIntDef(Piece(DietParams.Alarms, U, 5), 0) / 10000)) or
+               (TimePart > (StrToIntDef(Piece(DietParams.Alarms, U, 6), 0) / 10000)) then Meal := #0;
+    end;
+    if Meal = #0 then exit;
+  end;
+
+  // get the available late times for this meal
+  case Meal of
+  'B': AvailTimes := Pieces(DietParams.BTimes, U, 4, 6);
+  'E': AvailTimes := Pieces(DietParams.ETimes, U, 4, 6);
+  'N': AvailTimes := Pieces(DietParams.NTimes, U, 4, 6);
+  end;
+  SetAvailTimes(TimePart, TimeCount, AvailTimes);
+  if TimeCount = 0 then Exit;
+
+  // setup form to get the selected late tray
+  frmODDietLT := TfrmODDietLT.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmODDietLT));
+    with frmODDietLT do
+    begin
+      FOutpatient := IsOutpatient;
+      if Length(Piece(AvailTimes, U, 1)) > 0 then radLT1.Caption := Piece(AvailTimes, U, 1);
+      if Length(Piece(AvailTimes, U, 2)) > 0 then radLT2.Caption := Piece(AvailTimes, U, 2);
+      if Length(Piece(AvailTimes, U, 3)) > 0 then radLT3.Caption := Piece(AvailTimes, U, 3);
+      radLT1.Visible := Length(radLT1.Caption) > 0;
+      radLT2.Visible := Length(radLT2.Caption) > 0;
+      radLT3.Visible := Length(radLT3.Caption) > 0;
+      radLT1.Checked := TimeCount = 1;
+      chkBagged.Visible := DietParams.Bagged;
+      with lblMealCutOff do case Meal of
+      'B': Caption := 'You have missed the breakfast cut-off.';
+      'E': Caption := 'You have missed the evening cut-off.';
+      'N': Caption := 'You have missed the noon cut-off.';
+      end;
+      // display the form
+      ShowModal;
+      if YesPressed then
+      begin
+        with radLT1 do if Checked then LateTrayFields.LateTime := Caption;
+        with radLT2 do if Checked then LateTrayFields.LateTime := Caption;
+        with radLT3 do if Checked then LateTrayFields.LateTime := Caption;
+        LateTrayFields.LateMeal := Meal;
+        LateTrayFields.IsBagged := chkBagged.Checked;
+      end;
+    end; {with frmODDietLT}
+  finally
+    frmODDietLT.Release;
+  end;
+end;
+
+procedure LateTrayCheck(SomeResponses: TResponses; EventId: integer; IsOutpatient: boolean; var LateTrayFields: TLateTrayFields);
+var
+  AResponse, AnotherResponse: TResponse;
+begin
+  if IsOutpatient then
+  begin
+    AResponse := SomeResponses.FindResponseByName('ORDERABLE', 1);
+    if (EventID = 0) and (AResponse <> nil) and (Copy(AResponse.EValue, 1, 3) <> 'NPO') then
+    begin
+      AResponse := SomeResponses.FindResponseByName('START', 1);
+      AnotherResponse := SomeResponses.FindResponseByName('MEAL', 1);
+      if (AResponse <> nil) and (AnotherResponse <> nil) then
+        CheckLateTray(AResponse.IValue, LateTrayFields, True, CharAt(AnotherResponse.IValue, 1));
+    end;
+  end
+  else
+  begin
+    AResponse := SomeResponses.FindResponseByName('ORDERABLE', 1);
+    if (EventID = 0) and (AResponse <> nil) and (Copy(AResponse.EValue, 1, 3) <> 'NPO') then
+    begin
+      AResponse := SomeResponses.FindResponseByName('START', 1);
+      if AResponse <> nil then CheckLateTray(AResponse.IValue, LateTrayFields, False);
+    end;
+  end;
+end;
+
+procedure LateTrayOrder(LateTrayFields: TLateTrayFields; IsInpatient: boolean);
+const
+  TX_EL_SAVE_ERR    = 'An error occurred while saving this late tray order.';
+  TC_EL_SAVE_ERR    = 'Error Saving Late Tray Order';
+var
+  NewOrder: TOrder;
+  CanSign: integer;
+begin
+  NewOrder := TOrder.Create;
+  try
+    with LateTrayFields do OrderLateTray(NewOrder, LateMeal, LateTime, IsBagged);
+    if NewOrder.ID <> '' then
+    begin
+      if IsInpatient then
+        begin
+          if (Encounter.Provider = User.DUZ) and User.CanSignOrders
+            then CanSign := CH_SIGN_YES
+            else CanSign := CH_SIGN_NA;
+        end
+      else
+        begin
+          CanSign := CH_SIGN_NA;
+        end;
+      Changes.Add(CH_ORD, NewOrder.ID, NewOrder.Text, '', CanSign);
+      SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_NEW, Integer(NewOrder))
+    end
+    else InfoBox(TX_EL_SAVE_ERR, TC_EL_SAVE_ERR, MB_OK);
+  finally
+    NewOrder.Free;
+  end;
+end;
+
+// ---------- frmODDietLT procedures ---------------
+procedure TfrmODDietLT.FormCreate(Sender: TObject);
+begin
+  inherited;
+  YesPressed := False;
+end;
+
+procedure TfrmODDietLT.cmdYesClick(Sender: TObject);
+begin
+  inherited;
+  if not FOutpatient then
+    if (radLT1.Checked = False) and (radLT2.Checked = False) and (radLT3.Checked = False) then
+    begin
+      InfoBox(TX_MEAL_REQ, TC_MEAL_REQ, MB_OK);
+      Exit;
+    end;
+  YesPressed := True;
+  Close;
+end;
+
+procedure TfrmODDietLT.cmdNoClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODGen.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODGen.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODGen.dfm	(revision 1676)
@@ -0,0 +1,45 @@
+inherited frmODGen: TfrmODGen
+  Left = 223
+  Top = 290
+  Caption = 'frmODGen'
+  ExplicitLeft = 223
+  ExplicitTop = 290
+  PixelsPerInch = 96
+  TextHeight = 13
+  object sbxMain: TScrollBox [0]
+    Left = 0
+    Top = 0
+    Width = 520
+    Height = 185
+    Align = alTop
+    TabOrder = 4
+  end
+  inherited cmdQuit: TButton
+    Top = 219
+    ExplicitTop = 219
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = sbxMain'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODGen'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODGen.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODGen.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODGen.pas	(revision 1676)
@@ -0,0 +1,635 @@
+unit fODGen;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, ComCtrls, ExtCtrls, StdCtrls, ORDtTm, ORCtrls, ORFn, rODBase, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TDialogCtrl = class
+    ID: string;
+    DataType: Char;
+    Required: Boolean;
+    Preserve: Boolean;
+    Prompt: TStaticText;
+    Editor: TWinControl;
+    IHidden: string;
+    EHidden: string;
+  end;
+
+  TfrmODGen = class(TfrmODBase)
+    sbxMain: TScrollBox;
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cmdAcceptClick(Sender: TObject);
+  private
+    FilterOut: boolean;
+    TsID: string; //treating specialty id
+    TSDomain: string;
+    AttendID: string;
+    AttendDomain: string;
+    procedure ControlChange(Sender: TObject);
+    procedure LookupNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure PlaceControls;
+    procedure PlaceDateTime(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceFreeText(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceHidden(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceNumeric(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceSetOfCodes(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceYesNo(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceLookup(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceMemo(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure PlaceLabel(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+    procedure TrimAllMemos;
+  protected
+    FFormCloseCalled : Boolean;
+    FCharHt: Integer;
+    FCharWd: Integer;
+    FDialogItemList: TList;
+    FDialogCtrlList: TList;
+    FEditorLeft: Integer;
+    FEditorTop: Integer;
+    FFirstCtrl: TWinControl;
+    FLabelWd: Integer;
+    procedure InitDialog; override;
+    procedure SetDialogIEN(Value: Integer); override;
+    procedure Validate(var AnErrMsg: string); override;
+    procedure UpdateAccessabilityActions(var Actions: TAccessibilityActions); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+var
+  frmODGen: TfrmODGen;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rOrders, uConst;
+
+const
+  HT_FRAME  = 8;
+  HT_LBLOFF = 3;
+  HT_SPACE  = 6;
+  WD_MARGIN = 6;
+  TX_STOPSTART   = 'The stop date must be after the start date.';
+
+procedure TfrmODGen.FormCreate(Sender: TObject);
+var
+  TheEvtType: string;
+  IDs,TSstr, AttendStr: string;
+begin
+  FFormCloseCalled := false;
+  inherited;
+  FilterOut := True;
+  if Self.EvtID < 1 then
+    FilterOut := False;
+  if Self.EvtID > 0 then
+  begin
+    TheEvtType := Piece(EventInfo1(IntToStr(Self.EvtId)), '^', 1);
+    if (TheEvtType = 'A') or (TheEvtType = 'T') or (TheEvtType = 'M') or (TheEvtType = 'O') then
+      FilterOut := False;
+  end;
+  FillerID := 'OR';                     // does 'on Display' order check **KCM**
+  IDs := GetPromptIDs;
+  TSstr := Piece(IDs,'~',1);
+  TsDomain := Piece(TSstr,'^', 1);
+  TsID := Piece(TSstr,'^', 2);
+  AttendStr := Piece(IDs,'~',2);
+  AttendDomain := Piece(AttendStr,'^',1);
+  AttendID := Piece(AttendStr,'^',2);
+  FDialogItemList := TList.Create;
+  FDialogCtrlList := TList.Create;
+end;
+
+procedure TfrmODGen.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  i: Integer;
+  DialogCtrl: TDialogCtrl;
+begin
+  with FDialogItemList do for i := 0 to Count - 1 do TDialogItem(Items[i]).Free;
+  with FDialogCtrlList do for i := 0 to Count - 1 do
+  begin
+    DialogCtrl := TDialogCtrl(Items[i]);
+    with DialogCtrl do
+    begin
+      if Prompt <> nil then Prompt.Free;
+      if Editor <> nil then case DataType of
+      'D': TORDateBox(Editor).Free;
+      'F': TEdit(Editor).Free;
+      'N': TEdit(Editor).Free;
+      'P': TORComboBox(Editor).Free;
+      'R': TORDateBox(Editor).Free;
+      'S': TORComboBox(Editor).Free;
+      'W': TMemo(Editor).Free;
+      'Y': TORComboBox(Editor).Free;
+      else Editor.Free;
+      end;
+      Free;
+    end;
+  end;
+  FDialogItemList.Free;
+  FDialogCtrlList.Free;
+  FFormCloseCalled := true;
+  inherited;
+end;
+
+procedure TfrmODGen.SetDialogIEN(Value: Integer);
+{ Sets up a generic ordering dialog on the fly.  Called before SetupDialog. }
+var
+  DialogNames: TDialogNames;
+begin
+  inherited;
+  StatusText('Loading Dialog Definition');
+  IdentifyDialog(DialogNames, DialogIEN);
+  Caption := DialogNames.Display;
+  Responses.Dialog := DialogNames.BaseName;                      // loads formatting info
+  LoadOrderPrompting(FDialogItemList, DialogNames.BaseIEN);      // loads prompting info
+  PlaceControls;
+  StatusText('');
+end;
+
+procedure TfrmODGen.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  i: Integer;
+  theEvtInfo: string;
+  thePromptIen: integer;
+  AResponse: TResponse;
+  AnEvtResponse: TResponse;
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    Changing := True;
+    // for copy & edit, SetDialogIEN hasn't been called yet
+    if (Length(ID) > 0) and (DialogIEN = 0) then SetDialogIEN(DialogForOrder(ID));
+    with FDialogCtrlList do for i := 0 to Count -1 do with TDialogCtrl(Items[i]) do
+    begin
+      if (ID = 'EVENT') and ( Responses.EventIFN > 0 ) then
+      begin
+        thePromptIen := GetIENForPrompt(ID);
+        if thePromptIen = 0 then
+          thePromptIen := GetEventPromptID;
+        AResponse := FindResponseByName('EVENT', 1);
+        if AResponse <> nil then
+        begin
+          theEvtInfo := EventInfo1(AResponse.IValue);
+          AResponse.EValue := Piece(theEvtInfo,'^',4);
+        end;
+        if AResponse = nil then
+        begin
+          AnEvtResponse := TResponse.Create;
+          AnEvtResponse.PromptID  := 'EVENT';
+          AnEvtResponse.PromptIEN := thePromptIen;
+          AnEvtResponse.Instance  := 1;
+          AnEvtResponse.IValue    := IntToStr(Responses.EventIFN);
+          theEvtInfo := EventInfo1(AnEvtResponse.IValue);
+          AnEvtResponse.EValue := Piece(theEvtInfo,'^',4);
+          Responses.TheList.Add(AnEvtResponse);
+        end;
+      end;
+      if Editor <> nil then SetControl(Editor, ID, 1);
+      if DataType = 'H' then
+      begin
+        AResponse := FindResponseByName(ID, 1);
+        if AResponse <> nil then
+        begin
+          IHidden := AResponse.IValue;
+          EHidden := AResponse.EValue;
+        end; {if AResponse}
+      end; {if DataType}
+    end; {with TDialogCtrl}
+    Changing := False;
+  end; {if OrderAction}
+  UpdateColorsFor508Compliance(Self);
+  ControlChange(Self);
+  if (FFirstCtrl <> nil) and (FFirstCtrl.Enabled) then SetFocusedControl(FFirstCtrl);
+end;
+
+procedure TfrmODGen.UpdateAccessabilityActions(
+  var Actions: TAccessibilityActions);
+begin
+  exclude(Actions, aaColorConversion);
+end;
+
+procedure TfrmODGen.InitDialog;
+var
+  i: Integer;
+begin
+  inherited; // inherited does a ClearControls (probably never called since always quick order)
+  {NEED TO CLEAR CONTROLS HERE OR CHANGE ClearControls so can clear children of container}
+  with FDialogCtrlList do for i := 0 to Count -1 do
+    with TDialogCtrl(Items[i]) do if (Editor <> nil) and not Preserve then
+    begin
+      // treat the list & combo boxes differently so their lists aren't cleared
+      if      (Editor is TListBox)    then TListBox(Editor).ItemIndex := -1
+      else if (Editor is TComboBox)   then
+      begin
+        TComboBox(Editor).Text := '';
+        TComboBox(Editor).ItemIndex := -1;
+      end
+      else if (Editor is TORComboBox) then
+      begin
+        TORComboBox(Editor).Text := '';
+        TORComboBox(Editor).ItemIndex := -1;
+      end
+      else ClearControl(Editor);
+    end;
+  if FFirstCtrl <> nil then ActiveControl := FFirstCtrl;
+end;
+
+procedure TfrmODGen.Validate(var AnErrMsg: string);
+var
+  i: Integer;
+  ALabel, AMsg: string;
+  AResponse: TResponse;
+  DialogCtrl: TDialogCtrl;
+  StartDT, StopDT: TFMDateTime;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  with FDialogCtrlList do for i := 0 to Count -1 do
+  begin
+    DialogCtrl := TDialogCtrl(Items[i]);
+    with DialogCtrl do
+    begin
+      if Prompt <> nil then ALabel := Piece(Prompt.Caption, ':', 1) else ALabel := '<Unknown>';
+      if Required then
+      begin
+        AResponse := Responses.FindResponseByName(ID, 1);
+        if (AResponse = nil) or ((AResponse <> nil) and (AResponse.EValue = ''))
+          then SetError(ALabel + ' is required.');
+      end;
+      if ((DataType = 'D') or (DataType = 'R')) and (Editor <> nil) then
+      begin
+        TORDateBox(Editor).Validate(AMsg);
+        if Length(AMsg) > 0 then SetError('For ' + ALabel + ':  ' + AMsg);
+      end;
+      if (DataType = 'N') then
+      begin
+        AResponse := Responses.FindResponseByName(ID, 1);
+        if (AResponse <> nil) and (Length(AResponse.EValue) > 0) then with AResponse do
+        begin
+          ValidateNumericStr(EValue, Piece(TEdit(Editor).Hint, '|', 2), AMsg);
+          if Length(AMsg) > 0 then SetError('For ' + ALabel + ':  ' + AMsg);
+        end; {if AResponse}
+      end; {if DataType}
+    end; {with DialogCtrl}
+  end; {with FDialogCtrlList}
+  with Responses do
+  begin
+    AResponse := FindResponseByName('START', 1);
+    if AResponse <> nil then StartDT := StrToFMDateTime(AResponse.EValue) else StartDT := 0;
+    AResponse := FindResponseByName('STOP',  1);
+    if AResponse <> nil then StopDT  := StrToFMDateTime(AResponse.EValue) else StopDT  := 0;
+    if (StopDT > 0) and (StopDT <= StartDT) then SetError(TX_STOPSTART);
+  end;
+end;
+
+procedure TfrmODGen.PlaceControls;
+var
+  i: Integer;
+  DialogItem: TDialogItem;
+  DialogCtrl: TDialogCtrl;
+begin
+  FCharHt := MainFontHeight;
+  FCharWd := MainFontWidth;
+  FEditorTop := HT_SPACE;
+  FLabelWd := 0;
+  with FDialogItemList do for i := 0 to Count - 1 do with TDialogItem(Items[i]) do
+    if not Hidden then FLabelWd := HigherOf(FLabelWd, Canvas.TextWidth(Prompt));
+  FEditorLeft := FLabelWd + (WD_MARGIN * 2);
+  with FDialogItemList do for i := 0 to Count - 1 do
+  begin
+    DialogItem := TDialogItem(Items[i]);
+    if FilterOut then
+    begin
+      if ( compareText(TsID,DialogItem.Id)=0 ) or ( compareText(TSDomain,DialogItem.Domain)=0) then
+        Continue;
+      if (Pos('primary',LowerCase(DialogItem.Prompt)) > 0) then
+        Continue;
+      if (compareText(AttendID,DialogItem.ID) = 0) or ( compareText(AttendDomain,DialogItem.Domain)=0 ) then
+        Continue;
+    end;
+    DialogCtrl := TDialogCtrl.Create;
+    DialogCtrl.ID       := DialogItem.ID;
+    DialogCtrl.DataType := DialogItem.DataType;
+    DialogCtrl.Required := DialogItem.Required;
+    DialogCtrl.Preserve := Length(DialogItem.EDefault) > 0;
+    case DialogItem.DataType of
+    'D': PlaceDateTime(DialogCtrl, DialogItem);
+    'F': PlaceFreeText(DialogCtrl, DialogItem);
+    'H': PlaceHidden(DialogCtrl, DialogItem);
+    'N': PlaceNumeric(DialogCtrl, DialogItem);
+    'P': PlaceLookup(DialogCtrl, DialogItem);
+    'R': PlaceDateTime(DialogCtrl, DialogItem);
+    'S': PlaceSetOfCodes(DialogCtrl, DialogItem);
+    'W': PlaceMemo(DialogCtrl, DialogItem);
+    'Y': PlaceYesNo(DialogCtrl, DialogItem);
+    end;
+    FDialogCtrlList.Add(DialogCtrl);
+    if (DialogCtrl.Editor <> nil) and (FFirstCtrl = nil) then FFirstCtrl := DialogCtrl.Editor;
+  end;
+end;
+
+procedure TfrmODGen.PlaceDateTime(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+const
+  NUM_CHAR = 22;
+begin
+  with DialogCtrl do
+  begin
+    Editor := TORDateBox.Create(Self);
+    Editor.Parent := sbxMain;
+    Editor.SetBounds(FEditorLeft, FEditorTop, NUM_CHAR * FCharWd, HT_FRAME * FCharHt);
+    TORDateBox(Editor).DateOnly := Pos('T', DialogItem.Domain) = 0;
+    with TORDateBox(Editor) do RequireTime := (not DateOnly) and (Pos('R', DialogItem.Domain) > 0); //v26.48 - RV  PSI-05-002
+    TORDateBox(Editor).Text := DialogItem.EDefault;
+    TORDateBox(Editor).Hint := DialogItem.HelpText;
+    TORDateBox(Editor).Caption := DialogItem.Prompt;
+    if Length(DialogItem.HelpText) > 0 then TORDateBox(Editor).ShowHint := True;
+    TORDateBox(Editor).OnExit := ControlChange;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + FCharHt + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.PlaceFreeText(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+begin
+  with DialogCtrl do
+  begin
+    Editor := TCaptionEdit.Create(Self);
+    Editor.Parent := sbxMain;
+    Editor.SetBounds(FEditorLeft, FEditorTop,
+                     sbxMain.Width - FEditorLeft - WD_MARGIN - GetSystemMetrics(SM_CXVSCROLL),
+                     HT_FRAME * FCharHt);
+    TEdit(Editor).MaxLength := StrToIntDef(Piece(DialogItem.Domain, ':', 2), 0);
+    TEdit(Editor).Text := DialogItem.EDefault;
+    TEdit(Editor).Hint := DialogItem.HelpText;
+    TCaptionEdit(Editor).Caption := DialogItem.Prompt;
+    if Length(DialogItem.HelpText) > 0 then TEdit(Editor).ShowHint := True;
+    TEdit(Editor).OnChange := ControlChange;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + FCharHt + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.PlaceNumeric(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+const
+  NUM_CHAR = 16;
+begin
+  with DialogCtrl do
+  begin
+    Editor := TCaptionEdit.Create(Self);
+    Editor.Parent := sbxMain;
+    Editor.SetBounds(FEditorLeft, FEditorTop, NUM_CHAR * FCharWd, HT_FRAME * FCharHt);
+    TEdit(Editor).MaxLength := NUM_CHAR;
+    TEdit(Editor).Text := DialogItem.EDefault;
+    TEdit(Editor).Hint := DialogItem.HelpText + '|' + DialogItem.Domain;
+    TCaptionEdit(Editor).Caption := DialogItem.Prompt;
+    if Length(DialogItem.HelpText) > 0 then TEdit(Editor).ShowHint := True;
+    TEdit(Editor).OnChange := ControlChange;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + FCharHt + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.PlaceSetOfCodes(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+const
+  NUM_CHAR = 32;
+var
+  x, y: string;
+begin
+  with DialogCtrl do
+  begin
+    Editor := TORComboBox.Create(Self);
+    Editor.Parent := sbxMain;
+    TORComboBox(Editor).Style := orcsDropDown;
+    TORComboBox(Editor).ListItemsOnly := True;
+    TORComboBox(Editor).Pieces := '2';
+    Editor.SetBounds(FEditorLeft, FEditorTop, NUM_CHAR * FCharWd, HT_FRAME * FCharHt);
+    x := DialogItem.Domain;
+    repeat
+      y := Piece(x, ';', 1);
+      Delete(x, 1, Length(y) + 1);
+      y := Piece(y, ':', 1) + U + Piece(y, ':', 2);
+      TORComboBox(Editor).Items.Add(y);
+    until Length(x) = 0;
+    TORComboBox(Editor).SelectByID(DialogItem.IDefault);
+    //TORComboBox(Editor).Text := DialogItem.EDefault;
+    TORComboBox(Editor).Hint := DialogItem.HelpText;
+    if Length(DialogItem.HelpText) > 0 then TORComboBox(Editor).ShowHint := True;
+    TORComboBox(Editor).OnChange := ControlChange;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + FCharHt + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.PlaceYesNo(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+const
+  NUM_CHAR = 9;
+begin
+  with DialogCtrl do
+  begin
+    Editor := TORComboBox.Create(Self);
+    Editor.Parent := sbxMain;
+    TORComboBox(Editor).Style := orcsDropDown;
+    TORComboBox(Editor).ListItemsOnly := True;
+    TORComboBox(Editor).Pieces := '2';
+    Editor.SetBounds(FEditorLeft, FEditorTop, NUM_CHAR * FCharWd, HT_FRAME * FCharHt);
+    TORComboBox(Editor).Items.Add('0^No');
+    TORComboBox(Editor).Items.Add('1^Yes');
+    TORComboBox(Editor).SelectByID(DialogItem.IDefault);
+    //TORComboBox(Editor).Text := DialogItem.EDefault;
+    TORComboBox(Editor).Hint := DialogItem.HelpText;
+    if Length(DialogItem.HelpText) > 0 then TORComboBox(Editor).ShowHint := True;
+    TORComboBox(Editor).OnChange := ControlChange;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + FCharHt + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.PlaceLookup(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+const
+  NUM_CHAR = 32;
+var
+  idx,defidx,evtChars: integer;
+  GblRef, XRef: string;
+  TopTSList: TStringList;
+begin
+  with DialogCtrl do
+  begin
+    GblRef := DialogItem.Domain;
+    if CharAt(GblRef, 1) in ['0'..'9','.']
+      then GblRef := GlobalRefForFile(Piece(GblRef, ':', 1))
+      else GblRef := Piece(GblRef, ':', 1);
+    if CharAt(GblRef, 1) <> U then GblRef := U + GblRef;
+    if Length(DialogItem.CrossRef) > 0 then XRef := DialogItem.CrossRef else XRef := 'B';
+    XRef := GblRef + '"' + XRef + '")';
+    Editor := TORComboBox.Create(Self);
+    Editor.Parent := sbxMain;
+    TORComboBox(Editor).Style := orcsDropDown;
+    TORComboBox(Editor).ListItemsOnly := True;
+    TORComboBox(Editor).Pieces := '2';
+    TORComboBox(Editor).LongList := True;
+    // 2nd bar piece of hint is not visible, hide xref, global ref, & screen code in tab pieces
+    TORComboBox(Editor).Hint := DialogItem.HelpText + '|' + XRef + #9 + GblRef + #9 +
+                                DialogItem.ScreenRef;
+    if ( compareText(TsID,DialogItem.Id)=0 ) or (compareText(TSDomain,DialogItem.Domain)=0)then
+    begin
+      TopTSList := TStringList.Create;
+      DialogItem.IDefault := Piece(GetDefaultTSForEvt(Self.EvtID),'^',1);
+      GetTSListForEvt(TStrings(TopTSList),Self.EvtID);
+      if TopTSList.Count > 0 then
+      begin
+        if Length(DialogItem.IDefault)>0 then
+        begin
+          defidx := -1;
+          for idx := 0 to topTSList.Count - 1 do
+            if Piece(TopTSList[idx],'^',1)= DialogItem.IDefault then
+            begin
+              defidx := idx;
+              break;
+            end;
+          if defidx >= 0 then
+            topTSList.Move(defidx,0);
+        end;
+        with TORComboBox(Editor) do
+        begin
+          FastAddStrings(TStrings(TopTSList), TORComboBox(Editor).Items);
+          LongList := false;
+        end;
+      end else
+        TORComboBox(Editor).OnNeedData := LookupNeedData;
+      if Length(DialogItem.IDefault)<1 then
+        DialogItem.IDefault := '0';
+    end else
+      TORComboBox(Editor).OnNeedData := LookupNeedData;
+    Editor.SetBounds(FEditorLeft, FEditorTop, NUM_CHAR * FCharWd, HT_FRAME * FCharHt);
+    TORComboBox(Editor).InitLongList(DialogItem.EDefault);
+    TORComboBox(Editor).SelectByID(DialogItem.IDefault);
+    if Length(DialogItem.HelpText) > 0 then TORComboBox(Editor).ShowHint := True;
+    TORComboBox(Editor).OnChange := ControlChange;
+    if ( AnsiCompareText(ID,'EVENT')=0 ) and (Self.EvtID>0)then
+    begin
+       evtChars := length(Responses.EventName);
+       if evtChars > NUM_CHAR then
+          Editor.SetBounds(FEditorLeft, FEditorTop, (evtChars + 6) * FCharWd, HT_FRAME * FCharHt);
+       TORComboBox(Editor).Enabled := False;
+    end;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + FCharHt + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.LookupNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+var
+  XRef, GblRef, ScreenRef: string;
+begin
+  inherited;
+  XRef := Piece(TORComboBox(Sender).Hint, '|', 2);
+  GblRef    := Piece(XRef, #9, 2);
+  ScreenRef := Piece(XRef, #9, 3);
+  XRef      := Piece(XRef, #9, 1);
+  TORComboBox(Sender).ForDataUse(SubsetOfEntries(StartFrom, Direction, XRef, GblRef, ScreenRef));
+end;
+
+procedure TfrmODGen.PlaceMemo(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+const
+  NUM_LINES = 3;
+begin
+  with DialogCtrl do
+  begin
+    Editor := TCaptionMemo.Create(Self);
+    Editor.Parent := sbxMain;
+    Editor.SetBounds(FEditorLeft, FEditorTop,
+                     sbxMain.Width - FEditorLeft - WD_MARGIN - GetSystemMetrics(SM_CXVSCROLL),
+                     (FCharHt * NUM_LINES) + HT_FRAME);
+    TMemo(Editor).Text := DialogItem.EDefault;
+    TMemo(Editor).Hint := DialogItem.HelpText;
+    TCaptionMemo(Editor).Caption := DialogItem.Prompt;
+    if Length(DialogItem.HelpText) > 0 then TMemo(Editor).ShowHint := True;
+    TMemo(Editor).ScrollBars := ssVertical;
+    TMemo(Editor).OnChange := ControlChange;
+    PlaceLabel(DialogCtrl, DialogItem);
+    FEditorTop := FEditorTop + HT_FRAME + (FCharHt * 3) + HT_SPACE;
+  end;
+end;
+
+procedure TfrmODGen.PlaceHidden(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+begin
+  DialogCtrl.IHidden := DialogItem.IDefault;
+  DialogCtrl.EHidden := DialogItem.EDefault;
+end;
+
+procedure TfrmODGen.PlaceLabel(DialogCtrl: TDialogCtrl; DialogItem: TDialogItem);
+begin
+  with DialogCtrl do
+  begin
+    Prompt := TStaticText.Create(Self);
+    Prompt.Parent := sbxMain;
+    Prompt.Caption := DialogItem.Prompt;
+    Prompt.AutoSize := False;
+    Prompt.SetBounds(WD_MARGIN, FEditorTop + HT_LBLOFF, FLabelWd, FCharHt);
+    Prompt.Alignment := taRightJustify;
+    Prompt.Visible := True;
+  end;
+end;
+
+procedure TfrmODGen.TrimAllMemos;
+var
+  i : integer;
+  Memo : TMemo;
+begin
+  if FFormCloseCalled then Exit; //it is possible for TrimAllMemos to get called after FormClose
+  if Not Assigned(FDialogCtrlList) then Exit;
+  for i := 0 to FDialogCtrlList.Count - 1 do
+    if TDialogCtrl(FDialogCtrlList.Items[i]).Editor is TMemo then begin
+      Memo := TMemo(TDialogCtrl(FDialogCtrlList.Items[i]).Editor);
+      Memo.Lines.Text := Trim(Memo.Lines.Text);
+    end;
+end;
+
+procedure TfrmODGen.cmdAcceptClick(Sender: TObject);
+begin
+  inherited;
+  Application.ProcessMessages;
+  TrimAllMemos;
+end;
+
+procedure TfrmODGen.ControlChange(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  if Changing then Exit;
+  with FDialogCtrlList do for i := 0 to Count - 1 do with TDialogCtrl(Items[i]) do
+  begin
+    case DataType of
+    'D': Responses.Update(ID, 1, FloatToStr(TORDateBox(Editor).FMDateTime),
+                                 TORDateBox(Editor).Text);
+    'F': Responses.Update(ID, 1, TEdit(Editor).Text, TEdit(Editor).Text);
+    'H': Responses.Update(ID, 1, IHidden, EHidden);
+    'N': Responses.Update(ID, 1, TEdit(Editor).Text, TEdit(Editor).Text);
+    'P': Responses.Update(ID, 1, TORComboBox(Editor).ItemID, TORComboBox(Editor).Text);
+    'R': Responses.Update(ID, 1, TORDateBox(Editor).Text, TORDateBox(Editor).Text);
+    'S': Responses.Update(ID, 1, TORComboBox(Editor).ItemID, TORComboBox(Editor).Text);
+    'W': Responses.Update(ID, 1, TX_WPTYPE, TMemo(Editor).Text);
+    'Y': Responses.Update(ID, 1, TORComboBox(Editor).ItemID, TORComboBox(Editor).Text);
+    end;
+  end;
+  memOrder.Text := Responses.OrderText;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLab.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLab.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLab.dfm	(revision 1676)
@@ -0,0 +1,687 @@
+inherited frmODLab: TfrmODLab
+  Tag = 120
+  Left = 245
+  Top = 263
+  Width = 523
+  Height = 271
+  Caption = 'Order a Lab Test'
+  ExplicitWidth = 523
+  ExplicitHeight = 271
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAvailTests: TLabel [0]
+    Left = 6
+    Top = 4
+    Width = 93
+    Height = 13
+    Caption = 'Available Lab Tests'
+  end
+  object lblCollTime: TLabel [1]
+    Left = 148
+    Top = 152
+    Width = 100
+    Height = 13
+    Caption = 'Collection Date/Time'
+  end
+  object lblTestName: TLabel [2]
+    Left = 180
+    Top = 4
+    Width = 3
+    Height = 13
+    ShowAccelChar = False
+  end
+  object lblCollSamp: TLabel [3]
+    Left = 187
+    Top = 31
+    Width = 70
+    Height = 13
+    Caption = 'Collect Sample'
+  end
+  object lblSpecimen: TLabel [4]
+    Left = 210
+    Top = 58
+    Width = 47
+    Height = 13
+    Caption = 'Specimen'
+  end
+  object lblUrgency: TLabel [5]
+    Left = 217
+    Top = 85
+    Width = 40
+    Height = 13
+    Caption = 'Urgency'
+  end
+  object lblAddlComment: TLabel [6]
+    Left = 187
+    Top = 107
+    Width = 93
+    Height = 13
+    Caption = 'Additional Comment'
+    Visible = False
+  end
+  object bvlTestName: TBevel [7]
+    Left = 180
+    Top = 18
+    Width = 338
+    Height = 130
+    Style = bsRaised
+  end
+  object lblFrequency: TLabel [8]
+    Left = 326
+    Top = 152
+    Width = 57
+    Height = 13
+    Caption = 'How Often?'
+  end
+  object lblReqComment: TOROffsetLabel [9]
+    Left = 386
+    Top = 0
+    Width = 96
+    Height = 19
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblHowManyDays: TLabel [10]
+    Left = 431
+    Top = 152
+    Width = 55
+    Height = 13
+    Caption = 'How Long?'
+  end
+  object lblCollType: TLabel [11]
+    Left = 7
+    Top = 152
+    Width = 73
+    Height = 13
+    Caption = 'Collection Type'
+  end
+  inherited memOrder: TCaptionMemo
+    TabOrder = 20
+  end
+  object txtImmedColl: TCaptionEdit [13]
+    Left = 149
+    Top = 166
+    Width = 141
+    Height = 21
+    Color = clBtnFace
+    ReadOnly = True
+    TabOrder = 14
+    Text = 'txtImmedColl'
+  end
+  object calCollTime: TORDateBox [14]
+    Left = 149
+    Top = 166
+    Width = 165
+    Height = 21
+    TabOrder = 13
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+  end
+  object pnlUrineVolume: TORAutoPanel [15]
+    Left = 378
+    Top = 25
+    Width = 133
+    Height = 118
+    BevelInner = bvLowered
+    BevelOuter = bvNone
+    TabOrder = 8
+    object lblUrineVolume: TOROffsetLabel
+      Left = 6
+      Top = 29
+      Width = 111
+      Height = 15
+      Caption = 'Enter the urine volume:'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object txtUrineVolume: TCaptionEdit
+      Left = 5
+      Top = 56
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      OnExit = txtUrineVolumeExit
+    end
+  end
+  object pnlAntiCoagulation: TORAutoPanel [16]
+    Left = 378
+    Top = 25
+    Width = 133
+    Height = 118
+    BevelInner = bvLowered
+    BevelOuter = bvNone
+    TabOrder = 7
+    object lblAntiCoagulant: TOROffsetLabel
+      Left = 6
+      Top = 8
+      Width = 97
+      Height = 41
+      Caption = 'What kind of anticoagulant is the patient on?'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = True
+    end
+    object txtAntiCoagulant: TCaptionEdit
+      Left = 6
+      Top = 56
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      OnExit = txtAntiCoagulantExit
+    end
+  end
+  object pnlOrderComment: TORAutoPanel [17]
+    Left = 378
+    Top = 25
+    Width = 133
+    Height = 118
+    BevelInner = bvLowered
+    BevelOuter = bvNone
+    TabOrder = 6
+    Visible = False
+    object lblOrderComment: TOROffsetLabel
+      Left = 6
+      Top = 37
+      Width = 103
+      Height = 15
+      Caption = 'Enter order comment:'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = True
+    end
+    object txtOrderComment: TCaptionEdit
+      Left = 6
+      Top = 57
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      OnExit = txtOrderCommentExit
+    end
+  end
+  object pnlHide: TORAutoPanel [18]
+    Left = 378
+    Top = 25
+    Width = 133
+    Height = 118
+    BevelOuter = bvNone
+    TabOrder = 5
+  end
+  object pnlDoseDraw: TORAutoPanel [19]
+    Left = 378
+    Top = 25
+    Width = 133
+    Height = 118
+    BevelInner = bvLowered
+    BevelOuter = bvNone
+    TabOrder = 10
+    object lblDose: TOROffsetLabel
+      Left = 10
+      Top = 15
+      Width = 115
+      Height = 15
+      Caption = 'Enter the last dose time:'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblDraw: TOROffsetLabel
+      Left = 10
+      Top = 68
+      Width = 78
+      Height = 15
+      Caption = 'Enter draw time:'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object txtDoseTime: TCaptionEdit
+      Left = 10
+      Top = 31
+      Width = 112
+      Height = 21
+      TabOrder = 0
+      OnExit = txtDoseTimeExit
+    end
+    object txtDrawTime: TCaptionEdit
+      Left = 10
+      Top = 85
+      Width = 112
+      Height = 21
+      TabOrder = 1
+      OnExit = txtDrawTimeExit
+    end
+  end
+  object pnlPeakTrough: TORAutoPanel [20]
+    Left = 378
+    Top = 25
+    Width = 133
+    Height = 118
+    BevelInner = bvLowered
+    BevelOuter = bvNone
+    TabOrder = 9
+    object lblPeakTrough: TOROffsetLabel
+      Left = 6
+      Top = 7
+      Width = 82
+      Height = 13
+      Caption = 'Sample drawn at:'
+      HorzOffset = 0
+      Transparent = False
+      VertOffset = 0
+      WordWrap = True
+    end
+    object grpPeakTrough: TRadioGroup
+      Left = 6
+      Top = 20
+      Width = 120
+      Height = 89
+      Items.Strings = (
+        '&Peak'
+        '&Trough'
+        '&Mid'
+        '&Unknown')
+      TabOrder = 0
+      OnClick = grpPeakTroughClick
+    end
+  end
+  inherited cmdAccept: TButton
+    Left = 443
+    TabOrder = 18
+    ExplicitLeft = 443
+  end
+  inherited cmdQuit: TButton
+    TabOrder = 19
+  end
+  inherited pnlMessage: TPanel
+    Left = 18
+    Top = 192
+    Height = 56
+    TabOrder = 21
+    ExplicitLeft = 18
+    ExplicitTop = 192
+    ExplicitHeight = 56
+    inherited imgMessage: TImage
+      Top = 11
+      ExplicitTop = 11
+    end
+    inherited memMessage: TRichEdit
+      Left = 41
+      Top = 5
+      Height = 43
+      PopupMenu = MessagePopup
+      ExplicitLeft = 41
+      ExplicitTop = 5
+      ExplicitHeight = 43
+    end
+  end
+  object pnlCollTimeButton: TKeyClickPanel [24]
+    Left = 288
+    Top = 167
+    Width = 20
+    Height = 19
+    BevelOuter = bvNone
+    Caption = 'Select collection time'
+    TabOrder = 15
+    TabStop = True
+    OnClick = cmdImmedCollClick
+    OnEnter = pnlCollTimeButtonEnter
+    OnExit = pnlCollTimeButtonExit
+    object cmdImmedColl: TSpeedButton
+      Left = 1
+      Top = 1
+      Width = 18
+      Height = 17
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -16
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      Glyph.Data = {
+        D6000000424DD60000000000000076000000280000000C0000000C0000000100
+        0400000000006000000000000000000000001000000010000000000000000000
+        80000080000000808000800000008000800080800000C0C0C000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        0000333333333333000033333333333300003333333333330000300330033003
+        0000300330033003000033333333333300003333333333330000333333333333
+        0000333333333333000033333333333300003333333333330000}
+      ParentFont = False
+      ParentShowHint = False
+      ShowHint = False
+      OnClick = cmdImmedCollClick
+    end
+  end
+  object cboAvailTest: TORComboBox [25]
+    Left = 6
+    Top = 18
+    Width = 168
+    Height = 130
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Available Lab Tests'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnClick = cboAvailTestSelect
+    OnExit = cboAvailTestExit
+    OnNeedData = cboAvailTestNeedData
+    CharsNeedMatch = 1
+  end
+  object cboFrequency: TORComboBox [26]
+    Left = 326
+    Top = 166
+    Width = 97
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'How Often?'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 16
+    OnChange = cboFrequencyChange
+    CharsNeedMatch = 1
+  end
+  object cboCollSamp: TORComboBox [27]
+    Left = 269
+    Top = 28
+    Width = 100
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Collect Sample'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnChange = cboCollSampChange
+    OnEnter = cboCollSampMouseClick
+    OnKeyPause = cboCollSampKeyPause
+    OnMouseClick = cboCollSampMouseClick
+    CharsNeedMatch = 1
+  end
+  object cboSpecimen: TORComboBox [28]
+    Left = 269
+    Top = 55
+    Width = 100
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Specimen'
+    Color = clWindow
+    DropDownCount = 10
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 2
+    OnChange = cboSpecimenChange
+    OnEnter = cboSpecimenMouseClick
+    OnKeyPause = cboSpecimenKeyPause
+    OnMouseClick = cboSpecimenMouseClick
+    CharsNeedMatch = 1
+  end
+  object cboUrgency: TORComboBox [29]
+    Left = 269
+    Top = 82
+    Width = 100
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Urgency'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnChange = cboUrgencyChange
+    CharsNeedMatch = 1
+  end
+  object txtAddlComment: TCaptionEdit [30]
+    Left = 187
+    Top = 122
+    Width = 180
+    Height = 21
+    TabOrder = 4
+    Visible = False
+    OnExit = txtAddlCommentExit
+    Caption = 'Additional Comment'
+  end
+  object txtDays: TCaptionEdit [31]
+    Left = 430
+    Top = 166
+    Width = 84
+    Height = 21
+    Hint = 'Enter a number of days, or an "X" followed by a number of times.'
+    Enabled = False
+    TabOrder = 17
+    OnChange = ControlChange
+    Caption = 'How Long?'
+  end
+  object FLabCommonCombo: TORListBox [32]
+    Left = 440
+    Top = 247
+    Width = 121
+    Height = 97
+    TabStop = False
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 22
+    Visible = False
+    ItemTipColor = clWindow
+    LongList = False
+  end
+  object cboCollTime: TORComboBox [33]
+    Left = 149
+    Top = 166
+    Width = 168
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Collection Date/Time'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 12
+    OnChange = cboCollTimeChange
+    OnExit = cboCollTimeExit
+    CharsNeedMatch = 1
+  end
+  object cboCollType: TORComboBox [34]
+    Left = 6
+    Top = 166
+    Width = 136
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Collection Type'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 11
+    OnChange = cboCollTypeChange
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtImmedColl'
+        'Status = stsDefault')
+      (
+        'Component = calCollTime'
+        'Status = stsDefault')
+      (
+        'Component = pnlUrineVolume'
+        'Status = stsDefault')
+      (
+        'Component = txtUrineVolume'
+        'Status = stsDefault')
+      (
+        'Component = pnlAntiCoagulation'
+        'Status = stsDefault')
+      (
+        'Component = txtAntiCoagulant'
+        'Status = stsDefault')
+      (
+        'Component = pnlOrderComment'
+        'Status = stsDefault')
+      (
+        'Component = txtOrderComment'
+        'Status = stsDefault')
+      (
+        'Component = pnlHide'
+        'Status = stsDefault')
+      (
+        'Component = pnlDoseDraw'
+        'Status = stsDefault')
+      (
+        'Component = txtDoseTime'
+        'Status = stsDefault')
+      (
+        'Component = txtDrawTime'
+        'Status = stsDefault')
+      (
+        'Component = pnlPeakTrough'
+        'Status = stsDefault')
+      (
+        'Component = grpPeakTrough'
+        'Status = stsDefault')
+      (
+        'Component = pnlCollTimeButton'
+        'Status = stsDefault')
+      (
+        'Component = cboAvailTest'
+        'Status = stsDefault')
+      (
+        'Component = cboFrequency'
+        'Status = stsDefault')
+      (
+        'Component = cboCollSamp'
+        'Status = stsDefault')
+      (
+        'Component = cboSpecimen'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = txtAddlComment'
+        'Status = stsDefault')
+      (
+        'Component = txtDays'
+        'Status = stsDefault')
+      (
+        'Component = FLabCommonCombo'
+        'Status = stsDefault')
+      (
+        'Component = cboCollTime'
+        'Status = stsDefault')
+      (
+        'Component = cboCollType'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODLab'
+        'Status = stsDefault'))
+  end
+  object dlgLabCollTime: TORDateTimeDlg
+    FMDateTime = 2980923.000000000000000000
+    DateOnly = False
+    RequireTime = True
+    Left = 219
+    Top = 4
+  end
+  object MessagePopup: TPopupMenu
+    Left = 340
+    Top = 218
+    object ViewinReportWindow1: TMenuItem
+      Caption = '&View in Report Window'
+      OnClick = ViewinReportWindow1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLab.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLab.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLab.pas	(revision 1676)
@@ -0,0 +1,2028 @@
+unit fODLab;
+
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, ORCtrls, ORfn, fODBase, ExtCtrls, ComCtrls, uConst,
+  ORDtTm, Buttons, Menus, VA508AccessibilityManager;
+
+type
+  TfrmODLab = class(TfrmODBase)
+    lblAvailTests: TLabel;
+    cboAvailTest: TORComboBox;
+    lblCollTime: TLabel;
+    cboFrequency: TORComboBox;
+    lblTestName: TLabel;
+    lblCollSamp: TLabel;
+    cboCollSamp: TORComboBox;
+    lblSpecimen: TLabel;
+    cboSpecimen: TORComboBox;
+    lblUrgency: TLabel;
+    cboUrgency: TORComboBox;
+    lblAddlComment: TLabel;
+    txtAddlComment: TCaptionEdit;
+    txtDays: TCaptionEdit;
+    bvlTestName: TBevel;
+    lblFrequency: TLabel;
+    pnlHide: TORAutoPanel;
+    pnlOrderComment: TORAutoPanel;
+    lblOrderComment: TOROffsetLabel;
+    pnlAntiCoagulation: TORAutoPanel;
+    lblAntiCoagulant: TOROffsetLabel;
+    txtAntiCoagulant: TCaptionEdit;
+    pnlUrineVolume: TORAutoPanel;
+    lblUrineVolume: TOROffsetLabel;
+    txtUrineVolume: TCaptionEdit;
+    pnlPeakTrough: TORAutoPanel;
+    lblPeakTrough: TOROffsetLabel;
+    grpPeakTrough: TRadioGroup;
+    lblReqComment: TOROffsetLabel;
+    pnlDoseDraw: TORAutoPanel;
+    lblDose: TOROffsetLabel;
+    lblDraw: TOROffsetLabel;
+    txtDoseTime: TCaptionEdit;
+    txtDrawTime: TCaptionEdit;
+    txtOrderComment: TCaptionEdit;
+    FLabCommonCombo: TORListBox;
+    lblHowManyDays: TLabel;
+    cboCollTime: TORComboBox;
+    lblCollType: TLabel;
+    pnlCollTimeButton: TKeyClickPanel;
+    cboCollType: TORComboBox;
+    calCollTime: TORDateBox;
+    dlgLabCollTime: TORDateTimeDlg;
+    txtImmedColl: TCaptionEdit;
+    cmdImmedColl: TSpeedButton;
+    MessagePopup: TPopupMenu;
+    ViewinReportWindow1: TMenuItem;
+    procedure FormCreate(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboAvailTestNeedData(Sender: TObject;
+              const StartFrom: string; Direction, InsertAt: Integer);
+    procedure cboAvailTestSelect(Sender: TObject);
+    procedure cboCollSampChange(Sender: TObject);
+    procedure cboUrgencyChange(Sender: TObject);
+    procedure cboSpecimenChange(Sender: TObject);
+    procedure txtAddlCommentExit(Sender: TObject);
+    procedure cboCollTimeChange(Sender: TObject);
+    procedure cboFrequencyChange(Sender: TObject);
+    procedure cboCollTypeChange(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure txtOrderCommentExit(Sender: TObject);
+    procedure txtAntiCoagulantExit(Sender: TObject);
+    procedure txtUrineVolumeExit(Sender: TObject);
+    procedure grpPeakTroughClick(Sender: TObject);
+    procedure txtDoseTimeExit(Sender: TObject);
+    procedure txtDrawTimeExit(Sender: TObject);
+    procedure DisableCommentPanels;
+    procedure cboAvailTestExit(Sender: TObject);
+    procedure cboCollSampKeyPause(Sender: TObject);
+    procedure cboCollSampMouseClick(Sender: TObject);
+    procedure cboCollTimeExit(Sender: TObject);
+    procedure cboSpecimenMouseClick(Sender: TObject);
+    procedure cboSpecimenKeyPause(Sender: TObject);
+    procedure cmdImmedCollClick(Sender: TObject);
+    procedure pnlCollTimeButtonEnter(Sender: TObject);
+    procedure pnlCollTimeButtonExit(Sender: TObject);
+    procedure ViewinReportWindow1Click(Sender: TObject);
+  protected
+    FCmtTypes: TStringList ;
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+    function  ValidCollTime(UserEntry: string): string;
+    procedure DoseDrawComment;
+    procedure GetAllCollSamples(AComboBox: TORComboBox);
+    procedure GetAllSpecimens(AComboBox: TORComboBox);
+    procedure SetupCollTimes(CollType: string);
+    procedure LoadCollType(AComboBox:TORComboBox);
+   private
+    FLastCollType: string;
+    FLastCollTime: string;
+    FLastLabCollTime: string;
+    FLastLabID: string;
+    FLastItemID: string;
+    FEvtDelayLoc: integer;
+    FEvtDivision: integer;
+    procedure ReadServerVariables;
+    procedure DisplayChangedOrders(ACollType: string);
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure LoadRequiredComment(CmtType: integer);
+    procedure DetermineCollectionDefaults(Responses: TResponses);
+    property  EvtDelayLoc: integer   read FEvtDelayLoc   write FEvtDelayLoc;
+    property  EvtDivision: integer   read FEvtDivision   write FEvtDivision;
+  end;
+
+  type
+  TCollSamp = class(TObject)
+    CollSampID: Integer;                  { IEN of CollSamp }
+    CollSampName: string;                 { Name of CollSamp }
+    SpecimenID: Integer;                  { IEN of default specimen }
+    SpecimenName: string;                 { Name of the specimen }
+    TubeColor: string;                    { TubeColor (text) }
+    MinInterval: Integer;                 { Minimum days between orders }
+    MaxPerDay: Integer;                   { Maximum orders per day }
+    LabCanCollect: Boolean;               { True if lab can collect }
+    SampReqComment: string;               { Name of required comment }
+    WardComment: TStringList;             { CollSamp specific comment }
+  end;
+
+  TLabTest = class(TObject)
+    TestID: Integer;                      { IEN of Lab Test }
+    TestName: string;                     { Name of Lab Test }
+    LabSubscript: string ;                { which section of Lab? }
+    CollSamp: Integer;                    { index into CollSampList }
+    Specimen: Integer;                    { IEN of specimen }
+    Urgency: Integer;                     { IEN of urgency }
+    Comment: TStringList;                 { text of comment }
+    TestReqComment: string;               { Name of required comment }
+    CurReqComment: string;                { name of required comment }
+    CurWardComment: TStringList;          { WP of Ward Comment }
+    UniqueCollSamp: Boolean;              { true if not prompt CollSamp }
+    CollSampList: TList;                  { collection sample objects }
+    CollSampCount: integer;               { count of original contents of CollSampList}
+    SpecimenList: TStringList;            { Strings: IEN^Specimen Name }
+    SpecListCount: integer;               { count of original contents of SpecimenList}
+    UrgencyList: TStringList;             { Strings: IEN^Urgency Name }
+    ForceUrgency: Boolean;                { true if not prompt Urgency }
+    QuickOrderResponses: TResponses;      { if created as a result of a quick order selection}
+    { functions & procedures }
+    constructor Create(const LabTestIEN: string; Responses: TResponses);
+    destructor Destroy; override ;
+    function IndexOfCollSamp(CollSampIEN: Integer): Integer;
+    procedure FillCollSampList(LoadData: TStringList; DfltCollSamp: Integer);
+    procedure LoadAllSamples;
+    procedure SetCollSampDflts;
+    procedure ChangeCollSamp(CollSampIEN: Integer);
+    procedure ChangeSpecimen(const SpecimenIEN: string);
+    procedure ChangeUrgency(const UrgencyIEN: string);
+    procedure ChangeComment(const CommentText: string);
+    function  LabCanCollect: Boolean;
+    procedure LoadCollSamp(AComboBox: TORComboBox);
+    procedure LoadSpecimen(AComboBox: TORComboBox);
+    procedure LoadUrgency(CollType: string; AComboBox:TORComboBox);
+    function NameOfCollSamp: string;
+    function NameOfSpecimen: string;
+    function NameOfUrgency: string;
+    function ObtainCollSamp: Boolean;
+    function ObtainSpecimen: Boolean;
+    function ObtainUrgency: Boolean;
+    function ObtainComment: Boolean;
+  end;
+
+const
+  CmtType: array[0..6] of string = ('ANTICOAGULATION','DOSE/DRAW TIMES','ORDER COMMENT',
+                                    'ORDER COMMENT MODIFIED','TDM (PEAK-TROUGH)',
+                                    'TRANSFUSION','URINE VOLUME');
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase, rODLab, uCore, rCore, fODLabOthCollSamp, fODLabOthSpec, fODLabImmedColl, fLabCollTimes,
+ rOrders, uODBase, fRptBox, fFrame;
+
+
+var
+  uDfltUrgency: Integer;
+  uDfltCollType: string;
+  ALabTest: TLabTest;
+  UserHasLRLABKey: boolean;
+  LRFZX     : string;  //the default collection type  (LC,WC,SP,I)
+  LRFSAMP   : string;  //the default sample           (ptr)
+  LRFSPEC   : string;  //the default specimen         (ptr)
+  LRFDATE   : string;  //the default collection time  (NOW,NEXT,AM,PM,T...)
+  LRFURG    : string;  //the default urgency          (number)		TRY '2'
+  LRFSCH    : string;  //the default schedule?        (ONE TIME, QD, ...)
+
+const
+  TX_NO_TEST          = 'A Lab Test must be specified.'    ;
+  TX_NO_IMMED = 'Immediate collect is not available for this test/sample';
+  TX_NO_IMMED_CAP = 'Invalid Collection Type';
+
+{ base form procedures shared by all dialogs ------------------------------------------------ }
+
+procedure TfrmODLab.FormCreate(Sender: TObject);
+var
+  i, n: integer;
+  AList: TStringList;
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  AutoSizeDisabled := True;
+  inherited;
+  AList := TStringList.Create;
+  try
+    LRFZX    := '';
+    LRFSAMP  := '';
+    LRFSPEC  := '';
+    LRFDATE  := '';
+    LRFURG   := '';
+    LRFSCH   := '';
+    FLastColltime := '';
+    FLastLabCollTime := '';
+    FLastItemID := '';
+    uDfltCollType := '';
+    FillerID := 'LR';
+    FEvtDelayLoc := 0;
+    FEvtDivision := 0;
+    UserHasLRLABKey := User.HasKey('LRLAB');
+    AllowQuickOrder := True;
+    StatusText('Loading Dialog Definition');
+    pnlHide.BringToFront;
+    lblReqComment.Visible := False ;
+    FCmtTypes := TStringList.Create;
+    for i := 0 to 6 do FCmtTypes.Add(CmtType[i]) ;
+    Responses.Dialog := 'LR OTHER LAB TESTS';        // loads formatting info
+    StatusText('Loading Default Values');
+    if Self.EvtID > 0 then
+    begin
+      EvtDelayLoc := StrToIntDef(GetEventLoc1(IntToStr(Self.EvtID)),0);
+      EvtDivision := StrToIntDef(GetEventDiv1(IntToStr(Self.EvtID)),0);
+      if EvtDelayLoc>0 then
+        FastAssign(ODForLab(EvtDelayLoc, EvtDivision), AList)
+      else
+        FastAssign(ODForLab(Encounter.Location, EvtDivision), AList);
+    end else
+      FastAssign(ODForLab(Encounter.Location), AList); // ODForLab returns TStrings with defaults
+    CtrlInits.LoadDefaults(AList);
+    InitDialog;
+    with CtrlInits do
+    begin
+      SetControl(cboCollType, 'Collection Types');
+      uDfltCollType := ExtractDefault(AList, 'Collection Types');
+      if uDfltCollType <> '' then
+        cboCollType.SelectByID(uDfltCollType)
+      else if OrderForInpatient then
+        cboCollType.SelectByID('LC')
+      else
+        cboCollType.SelectByID('SP');
+      SetupCollTimes(cboCollType.ItemID);
+      StatusText('Initializing List of Tests');
+      SetControl(cboAvailTest, 'ShortList');
+      if cboAvailTest.Items.Count > 0 then cboAvailTest.InsertSeparator;
+      cboAvailTest.InitLongList('');
+      SetControl(cboFrequency, 'Schedules');
+      with cboFrequency do
+        begin
+          if ItemIndex < 0 then ItemIndex := Items.IndexOf('ONE TIME');
+          if ItemIndex < 0 then ItemIndex := Items.IndexOf('ONCE');
+        end;
+      lblHowManyDays.Enabled := False;                 { have this call change event in case }
+      txtDays.Enabled := False;                         { the default is not 'one time'?      }
+    end;
+    if EvTDelayLoc>0 then
+      n := MaxDays(EvtDelayLoc, 0)
+    else
+      n := MaxDays(Encounter.Location, 0);
+    if n < 0 then with cboFrequency do
+      begin
+        ItemIndex := Items.IndexOf('ONE TIME');
+        if ItemIndex = -1 then ItemIndex := Items.IndexOf('ONCE');
+        Enabled := False;
+        Font.Color := clGrayText;
+        lblFrequency.Enabled := False;
+      end;
+    PreserveControl(cboAvailTest);
+    PreserveControl(cboCollType);
+    PreserveControl(cboCollTime);
+    PreserveControl(calCollTime);
+    PreserveControl(cboFrequency);
+    PreserveControl(txtDays);
+    StatusText('');
+  finally
+    AList.Free;
+  end;
+end;
+
+procedure TfrmODLab.InitDialog;
+begin
+  inherited;
+  Changing := True;
+  if ALabTest <> nil then
+    begin
+      ALabTest.Destroy;
+      ALabTest := nil;
+    end;
+  with CtrlInits do
+    begin
+      SetControl(cboUrgency, 'Default Urgency') ;
+      uDfltUrgency := StrToInt(Piece(cboUrgency.Items[0],U,1));
+    end;
+  lblTestName.Caption := '';
+  DisableCommentPanels;
+  cboAvailTest.SelectByID(FLastItemID);
+  ActiveControl := cboAvailTest;
+  cboAvailTest.ItemIndex := -1;
+  StatusText('');
+  Changing := False ;
+end;
+
+procedure TfrmODLab.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  tmpResp: TResponse;
+  i: integer;
+begin
+  inherited;
+  ReadServerVariables;
+  if LRFZX <> '' then
+    begin
+      cboCollType.SelectByID(LRFZX);
+      if cboCollType.ItemIndex > -1 then SetupCollTimes(LRFZX);
+    end;
+  if (LRFSCH <> '') and (cboFrequency.Enabled) then
+    begin
+      cboFrequency.ItemIndex := cboFrequency.Items.IndexOf(LRFSCH);
+      cboFrequencyChange(Self);
+    end;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses, ALabTest do
+   begin
+      SetControl(cboAvailTest,       'ORDERABLE', 1);
+      cboAvailTestSelect(Self);
+      if ALabTest = nil then Exit;  // Causes access violation in FillCollSampleList
+      Changing := True;
+      SetControl(cboFrequency,       'SCHEDULE', 1);
+      SetControl(txtDays,            'DAYS', 1);
+      tmpResp := FindResponseByName('SAMPLE'  ,1);
+      if (tmpResp <> nil) and (tmpResp.IValue <> '') then with cboCollSamp do
+        begin
+          SelectByID(tmpResp.IValue);
+          if ItemIndex < 0 then
+            begin
+              LoadAllSamples;
+              Items.Insert(0, tmpResp.IValue + U + tmpResp.EValue);
+              ItemIndex := 0  ;
+            end;
+        end;
+      cboCollSampChange(Self);
+      DetermineCollectionDefaults(Responses);
+      tmpResp := FindResponseByName('SPECIMEN'  ,1);
+      if (tmpResp <> nil) and (tmpResp.IValue <> '') then with cboSpecimen do
+        begin
+          SelectByID(tmpResp.IValue);
+          if ItemIndex < 0 then
+            begin
+              if ALabTest <> nil then
+                ALabTest.SpecimenList.Add(tmpResp.IValue + U + tmpResp.EValue);
+              Items.Insert(0, tmpResp.IValue + U + tmpResp.EValue);
+              ItemIndex := 0  ;
+            end;
+        end
+      else
+        if (LRFSPEC <> '') then cboSpecimen.SelectByID(LRFSPEC);
+      if ALabTest <> nil then Specimen := cboSpecimen.ItemIEN;
+      if ALabTest <> nil then AlabTest.LoadUrgency(cboCollType.ItemID, cboUrgency);
+      SetControl(cboUrgency,         'URGENCY', 1);
+      if cboUrgency.ItemIEN = 0 then
+        begin
+          if StrToIntDef(LRFURG, 0) > 0 then
+            cboUrgency.SelectByID(LRFURG)
+          else if (ALabTest <> nil) and (Urgency = 0) and (cboUrgency.Items.Count = 1) then
+            cboUrgency.ItemIndex := 0;
+        end;
+      if ALabTest <> nil then Urgency := cboUrgency.ItemIEN;
+      i := 1 ;
+      tmpResp := Responses.FindResponseByName('COMMENT',i);
+      while tmpResp <> nil do
+        begin
+          Comment.Add(tmpResp.EValue);
+          Inc(i);
+          tmpResp := Responses.FindResponseByName('COMMENT',i);
+        end ;
+      with cboFrequency do
+        if not Enabled then
+          begin
+            ItemIndex := Items.IndexOf('ONE TIME');
+            if ItemIndex = -1 then ItemIndex := Items.IndexOf('ONCE');
+          end;
+      cboFrequencyChange(Self);
+      Changing := False;
+      ControlChange(Self);
+   end;
+end;
+
+{ dialog specific event procedures follow here ---------------------------------------------- }
+
+constructor TLabTest.Create(const LabTestIEN: string; Responses: TResponses);
+var
+  LoadData, OneSamp: TStringList;
+  DfltCollSamp: Integer;
+  x: string;
+  tmpResp: TResponse;
+begin
+  LoadData := TStringList.Create;
+  try
+    LoadLabTestData(LoadData, LabTestIEN) ;
+    with LoadData do
+    begin
+      QuickOrderResponses := Responses;
+      TestID := StrToInt(LabTestIEN);
+      TestName := Piece(ExtractDefault(LoadData, 'Test Name'),U,1);
+      LabSubscript := Piece(ExtractDefault(LoadData, 'Item ID'),U,2);
+      TestReqComment := ExtractDefault(LoadData, 'ReqCom');
+      if Length(ExtractDefault(LoadData, 'Unique CollSamp')) > 0 then UniqueCollSamp := True;
+      x := ExtractDefault(LoadData, 'Unique CollSamp');                            
+      if Length(x) = 0 then x := ExtractDefault(LoadData, 'Lab CollSamp');
+      if Length(x) = 0 then x := ExtractDefault(LoadData, 'Default CollSamp');
+      if Length(x) = 0 then x := '-1';
+      DfltCollSamp := StrToInt(x);
+      SpecimenList := TStringList.Create;
+      ExtractItems(SpecimenList, LoadData, 'Specimens');
+      if LRFSPEC <> '' then SpecimenList.Add(GetOneSpecimen(StrToInt(LRFSPEC)));
+      UrgencyList := TStringList.Create;
+      if Length(ExtractDefault(LoadData, 'Default Urgency')) > 0 then  { forced urgency }
+        begin
+          ForceUrgency := True;
+          UrgencyList.Add(ExtractDefault(LoadData, 'Default Urgency'));
+          Urgency := StrToInt(Piece(ExtractDefault(LoadData, 'Default Urgency'), '^', 1));
+          uDfltUrgency := Urgency;
+        end
+      else
+        begin                 { list of urgencies }
+          ExtractItems(UrgencyList, LoadData, 'Urgencies');
+          if StrToIntDef(LRFURG, 0) > 0 then
+            Urgency := StrToInt(LRFURG)
+          else
+            Urgency := uDfltUrgency;
+        end;
+      Comment := TStringList.Create ;
+      CurWardComment := TStringList.Create;
+      ExtractText(CurWardComment, LoadData, 'GenWardInstructions');
+      CollSamp := 0;
+      CollSampList := TList.Create;
+      FillCollSampList(LoadData, DfltCollSamp);
+      with QuickOrderResponses do tmpResp := FindResponseByName('SAMPLE'  ,1);
+      if (LRFSAMP <> '') and (IndexOfCollSamp(StrToInt(LRFSAMP)) < 0) and
+         (not UniqueCollSamp) and (tmpResp = nil) then
+        begin
+          OneSamp := TStringList.Create;
+          try
+            FastAssign(GetOneCollSamp(StrToInt(LRFSAMP)), OneSamp);
+            FillCollSampList(OneSamp, CollSampList.Count);
+          finally
+            OneSamp.Free;
+          end;
+        end;
+      if (not UniqueCollSamp) and (CollSampList.Count = 0) then LoadAllSamples;
+      CollSampCount := CollSampList.Count;
+    end;
+  finally
+    LoadData.Free;
+  end;
+  SetCollSampDflts;
+end;
+
+destructor TLabTest.Destroy;
+var
+  i: Integer;
+begin
+  if CollSampList <> nil then
+    with CollSampList do for i := 0 to Count - 1 do
+     with TCollSamp(Items[i]) do
+      begin
+        WardComment.Free;
+        Free;
+      end;
+  CollSampList.Free;
+  SpecimenList.Free;
+  UrgencyList.Free;
+  CurWardComment.Free;
+  Comment.Free;
+  inherited Destroy;
+end;
+
+function TLabTest.IndexOfCollSamp(CollSampIEN: Integer): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  with CollSampList do for i := 0 to Count - 1 do with TCollSamp(Items[i]) do
+    if CollSampIEN = CollSampID then
+    begin
+      Result := i;
+      break;
+    end;
+end;
+
+procedure TLabTest.LoadAllSamples;
+var
+  LoadList, SpecList: TStringList;
+  i: Integer;
+begin
+  LoadList := TStringList.Create;
+  SpecList := TStringList.Create;
+  try
+    LoadSamples(LoadList) ;
+    FillCollSampList(LoadList, 0);
+    ExtractItems(SpecList, LoadList, 'Specimens');
+    with SpecList do for i := 0 to Count - 1 do
+      if SpecimenList.IndexOf(Strings[i]) = -1 then SpecimenList.Add(Strings[i]);
+  finally
+    LoadList.Free;
+    SpecList.Free;
+  end;
+end;
+
+procedure TLabTest.FillCollSampList(LoadData: TStringList; DfltCollSamp: Integer);
+{1  2        3         4       5         6          7         8          9               10   }
+{n^IEN^CollSampName^SpecIEN^TubeTop^MinInterval^MaxPerDay^LabCollect^SampReqCommentIEN;name^SpecName}
+var
+  i, LastListItem, AnIndex: Integer;
+  ACollSamp: TCollSamp;
+  LabCollSamp: Integer;
+begin
+  i := -1;
+  if CollSampList = nil then CollSampList := TList.Create;
+  LastListItem := CollSampList.Count ;
+  LabCollSamp := StrToIntDef(ExtractDefault(LoadData, 'Lab CollSamp'), 0);
+  repeat Inc(i) until (i = LoadData.Count) or (LoadData[i] = '~CollSamp');
+  Inc(i);
+  if i < LoadData.Count then repeat
+    if LoadData[i][1] = 'i' then
+      begin
+        ACollSamp := TCollSamp.Create;
+        with ACollSamp do
+          begin
+            AnIndex         := StrToIntDef(Copy(Piece(LoadData[i], '^', 1), 2, 999), -1);
+            CollSampID      := StrToInt(Piece(LoadData[i], '^', 2));
+            CollSampName    := Piece(LoadData[i], '^', 3);
+            SpecimenID      := StrToIntDef(Piece(LoadData[i], '^', 4), 0);
+            SpecimenName    := Piece(LoadData[i], '^', 10);
+            TubeColor       := Piece(LoadData[i], '^', 5);
+            MinInterval     := StrToIntDef(Piece(LoadData[i], '^', 6), 0);
+            MaxPerDay       := StrToIntDef(Piece(LoadData[i], '^', 7), 0);
+            LabCanCollect   := AnIndex = LabCollSamp;
+            SampReqComment  := Piece(LoadData[i], '^', 9);
+            WardComment     := TStringList.Create;
+            if CollSampID  = StrToIntDef(LRFSAMP, 0) then
+              CollSamp := CollSampID
+            else if AnIndex = DfltCollSamp then
+              CollSamp := CollSampID;
+          end; {with}
+        LastListItem := CollSampList.Add(ACollSamp);
+      end; {if}
+    if (LoadData[i][1] = 't') then
+      TCollSamp(CollSampList.Items[LastListItem]).WardComment.Add(Copy(LoadData[i], 2, 255));
+    Inc(i);
+  until (i = LoadData.Count) or (LoadData[i][1] = '~');
+end;
+
+procedure TLabTest.SetCollSampDflts;
+var
+  tmpResp: TResponse;
+begin
+  Specimen := 0;
+  Comment.Clear;
+  CurReqComment := TestReqComment;
+  if CollSamp = 0 then Exit;
+  with QuickOrderResponses do tmpResp := FindResponseByName('SPECIMEN'  ,1);
+  if (LRFSPEC <> '') and (tmpResp = nil) then
+    ChangeSpecimen(LRFSPEC)
+  else with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+    begin
+      Specimen := SpecimenID;
+      if SampReqcomment <> '' then CurReqComment := SampReqComment;
+    end;
+end;
+
+procedure TLabTest.ChangeCollSamp(CollSampIEN: Integer);
+begin
+  CollSamp := CollSampIEN;
+  SetCollSampDflts;
+end;
+
+procedure TLabTest.ChangeSpecimen(const SpecimenIEN: string);
+begin
+  Specimen := StrToIntDef(SpecimenIEN,0);
+end;
+
+procedure TLabTest.ChangeUrgency(const UrgencyIEN: string);
+begin
+  Urgency := StrToIntDef(UrgencyIEN,0);
+end;
+
+procedure TLabTest.ChangeComment(const CommentText: string);
+begin
+  Comment.Add(CommentText);
+end;
+
+function TLabTest.LabCanCollect: Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  i := IndexOfCollSamp(CollSamp);
+  if i > -1 then with TCollSamp(CollSampList.Items[i]) do Result := LabCanCollect;
+end;
+
+procedure TLabTest.LoadCollSamp(AComboBox: TORComboBox);
+{ loads the collection sample combo box, expects CollSamp to already be set to default }
+var
+  i: Integer;
+  x: string;
+begin
+  AComboBox.Clear;
+  with CollSampList do for i := 0 to Count - 1 do with TCollSamp(Items[i]) do
+  begin
+    x := IntToStr(CollSampID) + '^' + CollSampName;
+    if Length(TubeColor) <> 0 then x := x + ' (' + TubeColor + ')';
+    AComboBox.Items.Add(x);
+    if CollSamp = CollSampID then AComboBox.ItemIndex := i;
+  end;
+  if ((ALabTest.LabSubscript = 'CH') and (not UserHasLRLABKey)) then
+    begin
+      // do not add 'Other'   (coded this way for clarity)
+    end
+  else
+    with AComboBox do
+      begin
+        Items.Add('0^Other...');
+        if ItemIndex < 0 then ItemIndex := Items.IndexOf('Other...');
+      end;
+end;
+
+procedure TLabTest.LoadSpecimen(AComboBox: TORComboBox);
+{ loads specimen combo box, if SpecimenList is empty, use 'E' xref on 61 ?? }
+var
+  i: Integer;
+  tmpResp: TResponse;
+begin
+  AComboBox.Clear;
+  if ObtainSpecimen then
+    begin
+      if SpecimenList.Count = 0 then LoadSpecimens(SpecimenList) ;
+      FastAssign(SpecimenList, AComboBox.Items);
+      AComboBox.Items.Add('0^Other...');
+      with QuickOrderResponses do tmpResp := FindResponseByName('SPECIMEN'  ,1);
+      if (LRFSPEC <> '') and (tmpResp = nil) then
+        AComboBox.SelectByID(LRFSPEC)
+      else if Specimen > 0 then
+        AComboBox.SelectByIEN(Specimen)
+      else
+        AComboBox.ItemIndex := AComboBox.Items.IndexOf('Other...');
+    end
+  else
+    begin
+      i := IndexOfCollSamp(CollSamp);
+      if i < CollSampList.Count then with TCollSamp(CollSampList.Items[i]) do
+        begin
+          AComboBox.Items.Add(IntToStr(SpecimenID) + '^' + SpecimenName);
+          AComboBox.ItemIndex := 0;
+        end;
+      with QuickOrderResponses do tmpResp := FindResponseByName('SPECIMEN'  ,1);
+      if (LRFSPEC <> '') and (tmpResp = nil) then
+        begin
+          AComboBox.Items.Add(GetOneSpecimen(StrToInt(LRFSPEC)));
+          AComboBox.SelectByID(LRFSPEC);
+        end;
+    end;
+  ChangeSpecimen(AComboBox.ItemID);
+end;
+
+procedure TfrmODLab.LoadCollType(AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  with CtrlInits, cboCollType do
+    begin
+      SetControl(cboCollType, 'Collection Types');
+      if not ALabTest.LabCanCollect then
+        begin
+          i := SelectByID('LC');
+          if i > -1 then Items.Delete(i);
+          i := SelectByID('I');
+          if i > -1 then Items.Delete(i);
+        end ;
+      if LRFZX <> '' then
+        begin
+          if (LRFZX = 'LC') or (LRFZX = 'I') then
+            begin
+              if ALabTest.LabCanCollect then
+                cboCollType.SelectByID(LRFZX)
+              else
+                cboCollType.SelectByID('WC');
+            end
+          else
+            cboCollType.SelectByID(LRFZX);
+        end
+      else if FLastCollType <> '' then
+        begin
+          if (FLastCollType = 'LC') or (FLastCollType = 'I') then
+            begin
+              if ALabTest.LabCanCollect then
+                cboCollType.SelectByID(FLastCollType)
+              else
+                cboCollType.SelectByID('WC');
+            end
+          else
+            cboCollType.SelectByID(FLastCollType);
+        end
+      else if uDfltCollType <> '' then
+        begin
+          if (uDfltCollType = 'LC') or (uDfltCollType = 'I') then
+            begin
+              if ALabTest.LabCanCollect then
+                cboCollType.SelectByID(uDfltCollType)
+              else
+                cboCollType.SelectByID('WC');
+            end
+          else
+            cboCollType.SelectByID(uDfltCollType);
+        end
+      else if OrderForInpatient then
+        begin
+          if ALabTest.LabCanCollect then
+            cboCollType.SelectByID('LC')
+          else
+            SelectByID('WC');
+        end
+      else
+        cboCollType.SelectByID('SP');
+    end;
+  SetupCollTimes(cboCollType.ItemID);
+end;
+
+procedure TLabTest.LoadUrgency(CollType: string; AComboBox:TORComboBox);
+var
+  i: integer;
+begin
+  with AComboBox do
+    begin
+      Clear;
+      for i := 0 to UrgencyList.Count - 1 do
+         if (CollType = 'LC') and (Piece(UrgencyList[i], U, 3) = '') then
+           Continue
+         else
+           Items.Add(UrgencyList[i]);
+      if (LRFURG <> '') and (ALabTest.ObtainUrgency) then
+        SelectByID(LRFURG)
+      else
+        SelectByIEN(uDfltUrgency);
+      Urgency := AComboBox.ItemIEN;
+    end;
+end;
+
+function TLabTest.NameOfCollSamp: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  i := IndexOfCollSamp(CollSamp);
+  if i > -1 then with TCollSamp(CollSampList.Items[i]) do Result := CollSampName;
+end;
+
+function TLabTest.NameOfSpecimen: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  if CollSamp > 0 then with TCollSamp(CollSampList[IndexOfCollSamp(CollSamp)]) do
+    if (Specimen > 0) and (Specimen = SpecimenID) then Result := SpecimenName;
+  if (Length(Result) = 0) and (Specimen > 0) then with SpecimenList do
+    for i := 0 to Count - 1 do if Specimen = StrToInt(Piece(Strings[i], '^', 1)) then
+    begin
+      Result := Piece(Strings[i], '^', 2);
+      break;
+    end;
+end;
+
+function TLabTest.NameOfUrgency: string;
+var
+  i: Integer;
+begin
+  Result := '';
+  with UrgencyList do for i := 0 to Count - 1 do
+  begin
+    if StrToInt(Piece(Strings[i], '^', 1)) = Urgency
+      then Result := Piece(Strings[i], '^', 2);
+    break;
+  end;
+end;
+
+function TLabTest.ObtainCollSamp: Boolean;
+begin
+  Result := (not UniqueCollSamp);
+end;
+
+function TLabTest.ObtainSpecimen: Boolean;
+var
+  i: Integer;
+begin
+  Result := True;
+  i := IndexOfCollSamp(CollSamp);
+  if (i > -1) and (i < CollSampList.Count) then with TCollSamp(CollSampList.Items[i]) do
+    if SpecimenID > 0 then Result := False;
+end;
+
+function TLabTest.ObtainUrgency: Boolean;
+begin
+  Result := not ForceUrgency;
+end;
+
+function TLabTest.ObtainComment: Boolean;
+begin
+  Result := Length(CurReqComment) > 0;
+end;
+
+{ end of TLabTest object }
+
+procedure TfrmODLab.ControlChange(Sender: TObject);
+var
+  AResponse: TResponse;
+  AVisitStr: string;
+begin
+  inherited;
+  if Changing or (ALabTest = nil) then Exit;
+  AResponse := Responses.FindResponseByName('VISITSTR', 1);
+  if AResponse <> nil then
+    AVisitStr := AResponse.EValue;
+  Responses.Clear;
+  with ALabTest do
+  begin
+    if TestID > 0 then Responses.Update('ORDERABLE', 1, IntToStr(TestID), TestName);
+    if CollSamp > 0 then Responses.Update('SAMPLE', 1, IntToStr(CollSamp), NameOfCollSamp)
+      else Responses.Update('SAMPLE', 1, '', '');
+    if Specimen > 0 then Responses.Update('SPECIMEN', 1, IntToStr(Specimen), NameOfSpecimen)
+      else Responses.Update('SPECIMEN', 1, '', '');
+    if Urgency > 0 then Responses.Update('URGENCY', 1, IntToStr(Urgency), NameOfUrgency);
+    if Length(Comment.Text) > 0 then Responses.Update('COMMENT', 1, TX_WPTYPE, Comment.Text);
+    with cboCollType do if Length(ItemID) > 0 then
+      begin
+        Responses.Update('COLLECT', 1, ItemID, ItemID) ;
+        FLastCollType := ItemID;
+      end;
+  end;
+  if cboCollType.ItemID = 'LC' then
+    begin
+      with cboCollTime do
+        if Length(ItemID) > 0 then
+          begin
+            Responses.Update('START', 1, Copy(ItemID, 2, 999), Copy(ItemID, 2, 999));
+            FLastLabCollTime := ItemID + U + Text;
+          end
+        else if Length(Text) > 0 then
+          begin
+            Responses.Update('START', 1, ValidCollTime(Text), Text) ;
+            FLastLabCollTime := ValidCollTime(Text);
+          end;
+    end
+  else
+    begin
+      with calCollTime do
+        if FMDateTime > 0 then
+          begin
+            Responses.Update('START', 1, ValidCollTime(Text), Text);
+            FLastColltime := ValidCollTime(Text);
+          end
+        else
+          begin
+            Responses.Update('START', 1, '', '') ;
+            FLastCollTime := '';
+          end;
+    end;
+  with cboFrequency do if Length(ItemID) > 0
+    then Responses.Update('SCHEDULE', 1, ItemID, Text);
+  with txtDays do if Enabled then Responses.Update('DAYS', 1, Text, Text);
+  { worry about stop date later }
+  if AVisitStr <> '' then Responses.Update('VISITSTR', 1, AVisitStr, AVisitStr);
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODLab.Validate(var AnErrMsg: string);
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+var
+  CmtType,DaysofFuturePast, y: integer;
+  (*Hours, *)DayMax, (*Daily, *)NoOfTimes, (*DayFreq,*) Minutes: integer;
+  d1, d2: TDateTime;
+  Days, MsgTxt: Double;
+  x: string;
+  ACollType: string;
+const
+  TX_NO_TIME        = 'Collection Time is required.' ;
+  TX_NO_TCOLLTYPE   = 'Collection Type is required.' ;
+  TX_NO_TESTS       = 'A Lab Test or tests must be selected.' ;
+  TX_BAD_TIME       = 'Collection times must be chosen from the drop down list or entered as valid' +
+                      ' Fileman date/times (T@1700, T+1@0800, etc.).' ;
+  TX_PAST_TIME      = 'Collection times in the past are not allowed.';
+  TX_NO_DAYS        = 'A number of days must be entered for continuous orders.';
+  TX_NO_TIMES       = 'A number of times must be entered for continuous orders.';
+  TX_NO_STOP_DATE   = 'Could not calculate the stop date for the order.  Check "for n Days".';
+  TX_TOO_MANY_DAYS  = 'Maximum number of days allowed is ';
+  TX_TOO_MANY_TIMES = 'For this frequency, the maximum number of times allowed is:  X';
+  //TX_NO_COMMENT     = 'A comment is required for this test and collection sample.';
+  TX_NUMERIC_REQD   = 'A numeric value is required for urine volume.';
+  TX_DOSEDRAW_REQD  = 'Both DOSE and DRAW times are required for this order.';
+  TX_TDM_REQD       = 'A value for LEVEL is required for this order.';
+  //TX_ANTICOAG_REQD  = 'You must specify an anticoagulant on this order.' ;
+  TX_NO_COLLSAMPLE  = 'A collection sample MUST be specified.';
+  TX_NO_SPECIMEN    = 'A specimen MUST be specified.';
+  TX_NO_URGENCY     = 'An urgency MUST be specified.';
+  TX_NO_FREQUENCY   = 'A collection frequency MUST be specified.';
+  TX_NOT_LAB_COLL_TIME = ' is not a routine lab collection time.';
+  TX_NO_ALPHA       = 'For continuous orders, enter a number of days, or an "X" followed by a number of times.';
+  TX_BADTIME_CAP    = 'Invalid Immediate Collect Time';
+
+begin
+  inherited;
+  { need to go thru list and make sure everything is filled in }
+  with cboAvailTest do if ItemIEN <= 0 then SetError(TX_NO_TESTS);
+
+  if ALabTest <> nil then
+    if (cboCollType.ItemID = 'I') and (not ALabTest.LabCanCollect) then
+      begin
+        SetError(TX_NO_IMMED);
+        cboCollType.ItemIndex := -1;
+      end;
+
+  if cboCollType.ItemID = '' then
+    SetError(TX_NO_TCOLLTYPE)
+  else if cboCollType.ItemID = 'LC' then
+   begin
+     if Length(cboCollTime.Text) = 0 then SetError(TX_NO_TIME);
+     with cboCollTime do if (Length(Text) > 0) and (ItemIndex = -1) then
+       begin
+         if StrToFMDateTime(Text) < 0 then
+           SetError(TX_BAD_TIME)
+         else if StrToFMDateTime(Text) < FMNow then
+           SetError(TX_PAST_TIME)
+         else if OrderForInpatient then
+           begin
+             d1 := FMDateTimeToDateTime(Trunc(StrToFMDateTime(cboColltime.Text)));
+             d2 := FMDateTimeToDateTime(FMToday);
+             if EvtDelayLoc > 0 then
+               DaysofFuturePast := LabCollectFutureDays(EvtDelayLoc,EvtDivision)
+             else
+               DaysofFuturePast := LabCollectFutureDays(Encounter.Location);
+             if DaysofFuturePast = 0 then DaysofFuturePast := 7;
+             if ((d1 - d2) > DaysofFuturePast) then
+               SetError('A lab collection cannot be ordered more than '
+                 + IntToStr(DaysofFuturePast) + ' days in advance');
+           end
+         else if EvtDelayLoc > 0 then
+           begin
+             if (not IsLabCollectTime(StrToFMDateTime(cboCollTime.Text), EvtDelayLoc)) then
+               SetError(cboCollTime.Text + TX_NOT_LAB_COLL_TIME);
+           end
+         else if EvtDelayLoc <= 0 then
+           begin
+             if (not IsLabCollectTime(StrToFMDateTime(cboCollTime.Text), Encounter.Location)) then
+               SetError(cboCollTime.Text + TX_NOT_LAB_COLL_TIME);
+           end;
+       end;
+   end
+  else
+    begin
+      if cboCollType.ItemID = 'I' then
+        begin
+          calCollTime.Text := txtImmedColl.Text;
+          x := ValidImmCollTime(calCollTime.FMDateTime);
+          if (Piece(x, U, 1) <> '1') then
+            SetError(Piece(x, U, 2));
+        end;
+
+      with calColltime do
+        begin
+          if FMDateTime = 0 then SetError(TX_BAD_TIME)
+          else
+            begin
+              // date only was entered
+              if (FMDateTime - Trunc(FMDateTime) = 0) then
+                begin
+                  if (Trunc(FMDateTime) < FMToday) then SetError(TX_PAST_TIME);
+                end
+              // date/time was entered
+              else
+                begin
+                  if (UpperCase(Text) <> 'NOW') and (FMDateTime < FMNow) then SetError(TX_PAST_TIME);
+                end;
+            end;
+        end;
+    end;
+
+  with cboCollSamp  do
+    if ItemIndex < 0 then
+      SetError(TX_NO_COLLSAMPLE)
+    else if (ItemIndex >= 0) and (ItemIEN = 0) then
+      begin
+        if ALabTest <> nil then
+          GetAllCollSamples(cboCollSamp);
+        if ItemIEN = 0 then SetError(TX_NO_COLLSAMPLE);
+      end;
+
+  with cboSpecimen  do
+    if ItemIndex < 0 then
+      SetError(TX_NO_SPECIMEN)
+    else if (ItemIndex >= 0) and (ItemIEN = 0) then
+      begin
+        if (ALabTest <> nil) and (cboCollSamp.ItemIEN > 0) then
+          GetAllSpecimens(cboSpecimen);
+        if ItemIEN = 0 then SetError(TX_NO_SPECIMEN);
+      end;
+
+  with cboUrgency   do if ItemIEN  <= 0 then SetError(TX_NO_URGENCY);
+  with cboFrequency do if ItemIEN  <= 0 then SetError(TX_NO_FREQUENCY);
+
+  if ALabTest <> nil then
+    begin
+      CmtType := FCmtTypes.IndexOf(ALabTest.CurReqComment) ;
+      with ALabTest do
+      case CmtType of
+        0 : {ANTICOAGULATION}         {if (Pos('ANTICOAGULANT',Comment.Text)=0) then
+                                     SetError(TX_ANTICOAG_REQD)};
+        1 : {DOSE/DRAW TIMES}         if (Pos('Last dose:',Comment.Text)=0) or
+                                      (Pos('draw time:',Comment.Text)=0) then
+                                     SetError(TX_DOSEDRAW_REQD);
+        2 : {ORDER COMMENT}           {if (Length(Comment.Text)=0) then
+                                     SetError(TX_NO_COMMENT)};
+        3 : {ORDER COMMENT MODIFIED}  {if (Length(Comment.Text)=0) then
+                                     SetError(TX_NO_COMMENT)};
+        4 : {TDM (PEAK-TROUGH}        if (Pos('Dose is expected',Comment.Text)=0) then
+                                     SetError(TX_TDM_REQD);
+        5 : {TRANSFUSION}             {if (Length(Comment.Text)=0) then
+                                     SetError(TX_NO_COMMENT)};
+        6 : {URINE VOLUME}            if (Length(Comment.Text)>0) and
+                                   (ExtractInteger(Comment.Text)<=0) then
+                                      Comment.Text := '?';
+                                     {SetError(TX_NUMERIC_REQD);}
+        {   else
+              if (Length(CurReqComment)>0) and (Length(Comment.Text)=0) then
+                SetError(TX_NO_COMMENT); }
+      end;
+    end;
+
+  with txtDays do if Enabled then
+    begin
+      DayMax := 0;
+      if (cboCollType.ItemID = 'LC') or (cboCollType.ItemID = 'I') then
+      begin
+        if EvtDelayLoc > 0 then
+          DayMax := LabCollectFutureDays(EvtDelayLoc,EvtDivision)
+        else
+          DayMax := LabCollectFutureDays(Encounter.Location);
+      end;
+      if DayMax = 0 then
+      begin
+         if EvtDelayLoc > 0 then
+           DayMax := MaxDays(EvtDelayLoc, cboFrequency.ItemIEN)
+         else
+           DayMax := MaxDays(Encounter.Location, cboFrequency.ItemIEN);
+      end;
+      x := Piece(cboFrequency.Items[cboFrequency.ItemIndex], U, 3);
+      if (x = 'C') or (x = 'D') then
+        begin
+          Minutes := StrToIntDef(Piece(cboFrequency.Items[cboFrequency.ItemIndex], U, 4), 0);
+          Days := Minutes / 1440;
+          if (Days = 0) then Days := 1;
+          if Pos('X', UpperCase(txtDays.Text)) > 0 then
+            begin
+              x := Trim(Copy(txtDays.Text, 1, Pos('X', UpperCase(txtDays.Text)) - 1)) +
+                   Trim(Copy(txtDays.Text, Pos('X', UpperCase(txtDays.Text)) + 1, 99));
+              NoOfTimes := ExtractInteger(x);
+              Days := NoOfTimes * Days;                                      // # days requested
+              if FloatToStr(NoOfTimes) <> x then
+                SetError(TX_NO_ALPHA)
+              else if NoOfTimes = 0 then
+                SetError(TX_NO_TIMES)
+              else if (Days > DayMax) then
+                begin
+                  MsgTxt := Minutes / 60;
+                  x := ' hour';
+                  if MsgTxt > 24 then
+                    begin
+                      MsgTxt := MsgTxt / 24;
+                      x := ' day';
+                    end;
+                  if MsgTxt > 1 then x := x + 's';
+                  y := 0;
+                  if Minutes > 0 then y := (DayMax * 1440) div Minutes;
+                  if y = 0 then y := 1;
+                  //if y > 0 then
+                    SetError(TX_TOO_MANY_TIMES + IntToStr(y) + CRLF +
+                      '     (Every ' + FloatToStr(MsgTxt) + x + ' for a maximum of ' + IntToStr(DayMax) + ' days.)')
+                  //else
+                  //  Responses.Update('DAYS', 1, 'X1', 'X1');
+                end
+              else
+                begin
+                  x := 'X' + IntToStr(NoOfTimes);
+                  Responses.Update('DAYS', 1, x, x);
+                end;
+            end
+          else
+            begin
+              Days := ExtractInteger(txtDays.Text);
+              if FloatToStr(Days) <> Trim(txtDays.Text) then
+                SetError(TX_NO_ALPHA)
+                //SetError(TX_NO_DAYS)    v18.6  (RV)
+              else if (Days > DayMax) then
+                SetError(TX_TOO_MANY_DAYS + IntToStr(DayMax))
+              else
+                Responses.Update('DAYS', 1, txtDays.Text, txtDays.Text);
+            end;
+        end;
+    end;
+
+  if (AnErrMsg <> '') or (Self.EvtID > 0) then exit;
+    
+  // add check and display for auto-change from LC to WC - v27.1 - CQ #10226
+  ACollType := Responses.FindResponseByName('COLLECT', 1).EValue;
+  if ((ACollType = 'LC') or (ACollType = 'I')) then DisplayChangedOrders(ACollType);
+end;
+
+procedure TfrmODLab.DisplayChangedOrders(ACollType: string);
+var
+  AStartDate, ASchedule, ADuration: string;
+  ChangedOrdersList, AList: TStringlist;
+  i, j, k: integer;
+begin
+  ChangedOrdersList := TStringList.Create;
+  try
+    AStartDate := Responses.FindResponseByName('START', 1).IValue;
+    ASchedule  := Responses.FindResponseByName('SCHEDULE', 1).IValue;
+    if txtDays.Enabled then ADuration := Responses.FindResponseByName('DAYS', 1).EValue else ADuration := '';
+    CheckForChangeFromLCtoWCOnAccept(ChangedOrdersList, Encounter.Location, AStartDate, ACollType, ASchedule, ADuration);
+    if ChangedOrdersList.Text <> '' then
+    begin
+      AList := TStringList.Create;
+      try
+        AList.Text := Responses.OrderText;
+        with ChangedOrdersList do
+        begin
+          Insert(5, 'Order   :' + #9 + AList[0]);
+          k := Length(ChangedOrdersList[5]);
+          i := 0;
+          if AList.Count > 1 then
+            for j := 1 to AList.Count - 1 do
+            begin
+              Insert(5 + j, StringOfChar(' ', 9) + #9 + AList[j]);
+              k := HigherOf(k, Length(ChangedOrdersList[5 + j]));
+              i := j;
+            end;
+          Insert(5 + i + 1, StringOfChar('-', k + 4));
+        end;
+        ReportBox(ChangedOrdersList, 'Changed Orders', TRUE);
+      finally
+        AList.Free;
+      end;
+    end;
+  finally
+    ChangedOrdersList.Free;
+  end;
+end;
+
+procedure TfrmODLab.cboAvailTestNeedData(Sender: TObject;
+              const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboAvailTest.ForDataUse(SubsetOfOrderItems(StartFrom, Direction, 'S.LAB'));
+end;
+
+procedure TfrmODLab.cboAvailTestExit(Sender: TObject);
+begin
+  inherited;
+  if (Length(cboAvailTest.ItemID) = 0) or (cboAvailTest.ItemID = '0') then Exit;
+  if cboAvailTest.ItemID = FLastLabID then Exit;
+  cboAvailTestSelect(cboAvailTest);
+  cboAvailTest.SetFocus;
+  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
+end;
+
+procedure TfrmODLab.cboAvailTestSelect(Sender: TObject);
+var
+  x: string;
+  i: integer;
+  tmpResp: TResponse;
+begin
+  with cboAvailTest do
+    begin
+      if (Length(ItemID) = 0) or (ItemID = '0') then Exit;
+      FLastLabID := ItemID ;
+      FLastItemID := ItemID;
+      Changing := True;
+      if Sender <> Self then
+        Responses.Clear;       // Sender=Self when called from SetupDialog
+      if CharAt(ItemID, 1) = 'Q' then
+        with Responses do
+          begin
+            FLastItemID := ItemID;
+            QuickOrder := ExtractInteger(ItemID);
+            SetControl(cboAvailTest, 'ORDERABLE', 1);
+            if (Length(ItemID) = 0) or (ItemID = '0') then Exit;
+            FLastLabID := ItemID;
+          end;
+      ALabTest := TLabTest.Create(ItemID, Responses);
+    end;
+  with ALabTest do
+  begin
+    lblTestName.Caption := TestName;
+    LoadCollSamp(cboCollSamp);
+    cboCollSampChange(Self);
+    LoadSpecimen(cboSpecimen);
+    LoadUrgency(cboCollType.ItemID, cboUrgency);
+    with Responses do if QuickOrder > 0 then
+     begin
+      StatusText('Initializing Quick Order');
+      Changing := True;
+      SetControl(cboAvailTest,       'ORDERABLE', 1);
+      SetControl(cboFrequency,       'SCHEDULE', 1);
+      SetControl(txtDays,            'DAYS', 1);
+      tmpResp := FindResponseByName('SAMPLE'  ,1);
+      if (tmpResp <> nil) and (tmpResp.IValue <> '') then with cboCollSamp do
+        begin
+          SelectByID(tmpResp.IValue);
+          if ItemIndex < 0 then
+            begin
+              LoadAllSamples;
+              Items.Insert(0, tmpResp.IValue + U + tmpResp.EValue);
+              ItemIndex := 0  ;
+            end;
+        end
+      else if LRFSAMP <> '' then
+        cboCollSamp.SelectByID(LRFSAMP);
+      if (cboCollSamp.ItemIndex < 0) and (cboCollSamp.Items.IndexOf('Other...') >= 0) then cboCollSamp.SelectByID('0');
+      cboCollSampChange(Self);
+      DetermineCollectionDefaults(Responses);
+      LoadUrgency(cboCollType.ItemID, cboUrgency);
+      SetControl(cboUrgency,         'URGENCY', 1);
+      Urgency := cboUrgency.ItemIEN;
+      if (Urgency = 0) and (cboUrgency.Items.Count = 1) then
+        begin
+          cboUrgency.ItemIndex := 0;
+          Urgency := cboUrgency.ItemIEN;
+        end;
+      tmpResp := FindResponseByName('SPECIMEN'  ,1);
+      if (tmpResp <> nil) and (tmpResp.IValue <> '') then with cboSpecimen do
+        begin
+          SelectByID(tmpResp.IValue);
+          if ItemIndex < 0 then
+            begin
+              if ALabTest <> nil then
+                ALabTest.SpecimenList.Add(tmpResp.IValue + U + tmpResp.EValue);
+              Items.Insert(0, tmpResp.IValue + U + tmpResp.EValue);
+              ItemIndex := 0  ;
+            end;
+        end
+      else if LRFSPEC <> '' then
+        cboSpecimen.SelectByID(LRFSPEC);
+      if (cboSpecimen.ItemIndex < 0) and (cboSpecimen.Items.IndexOf('Other...') >= 0) then cboSpecimen.SelectByID('0');
+      Specimen := cboSpecimen.ItemIEN;
+      i := 1 ;
+      tmpResp := Responses.FindResponseByName('COMMENT',i);
+      while tmpResp <> nil do
+        begin
+          Comment.Add(tmpResp.EValue);
+          Inc(i);
+          tmpResp := Responses.FindResponseByName('COMMENT',i);
+        end ;
+      with cboFrequency do
+        if not Enabled then
+          begin
+            ItemIndex := Items.IndexOf('ONE TIME');
+            if ItemIndex = -1 then ItemIndex := Items.IndexOf('ONCE');
+          end;
+      cboFrequencyChange(Self);
+     end;  //  Quick Order
+    if ObtainCollSamp then
+      begin
+        lblCollSamp.Enabled := True;
+        cboCollSamp.Enabled := True;
+      end
+    else
+      begin
+        with ALabTest do
+          with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+            begin
+              x := '' ;
+              for i := 0 to WardComment.Count-1 do
+                x := x + WardComment.strings[i]+#13#10 ;
+              pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+              OrderMessage(x) ;
+            end ;
+        lblCollSamp.Enabled := False;
+        cboCollSamp.Enabled := False;
+      end;
+    if ObtainSpecimen then
+    begin
+      lblSpecimen.Enabled:= True;
+      cboSpecimen.Enabled:= True;
+    end else
+    begin
+      lblSpecimen.Enabled:= False;
+      cboSpecimen.Enabled:= False;
+    end;
+    if ObtainUrgency then
+    begin
+      lblUrgency.Enabled := True;
+      cboUrgency.Enabled := True;
+    end else
+    begin
+      lblUrgency.Enabled := False;
+      cboUrgency.Enabled := False;
+    end;
+    if ObtainComment then
+      LoadRequiredComment(FCmtTypes.IndexOf(CurReqComment))
+    else
+      DisableCommentPanels;
+    x := '' ;
+    for i := 0 to CurWardComment.Count-1 do
+      x := x + CurWardComment.strings[i]+#13#10 ;
+    i :=  IndexOfCollSamp(CollSamp);
+    if i > -1 then with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+       for i := 0 to WardComment.Count-1 do
+         x := x + WardComment.strings[i]+#13#10 ;
+    pnlMessage.TabOrder := cboAvailTest.TabOrder + 1;
+    OrderMessage(x) ;
+   end; { with }
+  StatusText('');
+  Changing := False;
+  if Sender <> Self then ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboCollSampChange(Sender: TObject);
+var
+  i: integer;
+  x: string;
+begin
+  if (ALabTest = nil) or (cboCollSamp.ItemIEN = 0) then exit;
+  with ALabTest do
+  begin
+    ChangeCollSamp(cboCollSamp.ItemIEN);
+    LoadSpecimen(cboSpecimen);
+    LoadCollType(cbocollType);
+    LoadUrgency(cboCollType.ItemID, cboUrgency);
+    if ObtainSpecimen then
+     begin
+      lblSpecimen.Enabled:= True;
+      cboSpecimen.Enabled:= True;
+     end else
+     begin
+      lblSpecimen.Enabled:= False;
+      cboSpecimen.Enabled:= False;
+     end;
+    if ObtainComment then
+       LoadRequiredComment(FCmtTypes.IndexOf(CurReqComment))
+    else
+       DisableCommentPanels;
+    if not Changing then with TCollSamp(CollSampList.Items[IndexOfCollSamp(CollSamp)]) do
+      begin
+          x := '' ;
+          for i := 0 to WardComment.Count-1 do
+            x := x + WardComment.strings[i]+#13#10 ;
+          pnlMessage.TabOrder := cboCollSamp.TabOrder + 1;
+          OrderMessage(x) ;
+      end ;
+  end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboUrgencyChange(Sender: TObject);
+begin
+  if ALabTest = nil then exit;
+  with ALabTest do
+    ChangeUrgency(cboUrgency.ItemID);
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboSpecimenChange(Sender: TObject);
+begin
+  if ALabTest = nil then exit;
+  with cboSpecimen do if Text = 'Other...' then
+    if (ItemIndex >= 0) and (ItemIEN = 0) then
+      GetAllSpecimens(cboSpecimen);
+  with ALabTest do
+    ChangeSpecimen(cboSpecimen.ItemID);
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboCollTimeChange(Sender: TObject);
+var
+  CollType: string;
+const
+  TX_BAD_TIME         = ' is not a routine lab collection time.' ;
+  TX_BAD_TIME_CAP     = 'Invalid Time';
+begin
+  CollType := 'LC';
+  with cboCollTime do if ItemID = 'LO' then
+    begin
+      ItemIndex := -1;
+      Text := GetFutureLabTime(FMToday);
+    end;
+  //cboCollType.SelectByID(CollType);
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboFrequencyChange(Sender: TObject);
+var
+  x: string;
+const
+  HINT_TEXT1 = 'Enter a number of days';
+  HINT_TEXT2 = ', or an "X" followed by a number of times.';
+begin
+  with cboFrequency do if ItemIndex > -1 then x := Items[ItemIndex];
+  with cboFrequency do
+    if (ItemIndex > -1) and (Piece(Items[ItemIndex], U, 3) <> 'O') then
+      begin
+        lblHowManyDays.Enabled := True;
+        if Piece(Items[ItemIndex], U, 3) = 'C' then
+          txtDays.Hint := HINT_TEXT1 + HINT_TEXT2
+        else
+          txtDays.Hint := '';
+        txtDays.Enabled := True;
+        txtDays.Showhint := True;
+      end
+    else
+      begin
+        txtDays.Text := '';
+        lblHowManyDays.Enabled := False;
+        txtDays.Enabled := False;
+        txtDays.ShowHint := False;
+      end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboCollTypeChange(Sender: TObject);
+begin
+  if (ALabTest = nil) or Changing or (cboCollType.ItemID = '') then exit;
+  if (cboCollType.ItemID = 'I') and (not ALabTest.LabCanCollect) then
+    begin
+      InfoBox(TX_NO_IMMED, TX_NO_IMMED_CAP, MB_OK or MB_ICONWARNING);
+      cboCollType.ItemIndex := -1;
+      Exit;
+    end;
+  SetupCollTimes(cboCollType.ItemID);
+  ALabTest.LoadUrgency(cboCollType.ItemID, cboUrgency);
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.SetupCollTimes(CollType: string);
+var
+  tmpImmTime, tmpTime: TFMDateTime;
+  x, tmpORECALLType, tmpORECALLTime: string;
+begin
+  x := GetLastCollectionTime;
+  tmpORECALLType := Piece(x, U, 1);
+  tmpORECALLTime := Piece(x, U, 2);
+  if CollType = 'SP' then
+    begin
+      cboColltime.Visible    := False;
+      txtImmedColl.Visible   := False;
+      pnlCollTimeButton.Visible   := False;
+      pnlCollTimeButton.TabStop := False;
+      calCollTime.Visible    := True;
+      calColltime.Enabled    := True;
+      if FLastCollTime <> '' then
+        begin
+          calCollTime.Text := ValidCollTime(FLastColltime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(FLastCollTime);
+            end;
+        end
+      else if tmpORECALLTime <> '' then
+        begin
+          calCollTime.Text := ValidCollTime(tmpORECALLTime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(tmpORECALLTime);
+            end;
+        end
+      else if LRFDATE <> '' then
+        calCollTime.Text     := LRFDATE
+      else
+        calCollTime.Text     := 'TODAY';
+    end
+  else if CollType = 'WC' then
+    begin
+      cboColltime.Visible    := False;
+      txtImmedColl.Visible   := False;
+      pnlCollTimeButton.Visible   := False;
+      pnlCollTimeButton.TabStop := False;
+      calCollTime.Visible    := True;
+      calColltime.Enabled    := True;
+      if FLastCollTime <> '' then
+        begin
+          calCollTime.Text := ValidColltime(FLastColltime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(FLastCollTime);
+            end;
+        end
+      else if tmpORECALLTime <> '' then
+        begin
+          calCollTime.Text := ValidColltime(tmpORECALLTime);
+          if IsFMDateTime(calCollTime.Text) then
+            begin
+              calCollTime.Text := FormatFMDateTime('mmm dd,yy@hh:nn', StrToFMDateTime(calColltime.Text));
+              calColltime.FMDateTime := StrToFMDateTime(tmpORECALLTime);
+            end;
+        end
+      else if LRFDATE <> '' then
+        calCollTime.Text     := LRFDATE
+      else
+        calCollTime.Text     := 'NOW';
+    end
+  else if CollType = 'LC' then
+    begin
+      cboColltime.Visible    := True;
+      calCollTime.Visible    := False;
+      calColltime.Enabled    := False;
+      txtImmedColl.Visible   := False;
+      pnlCollTimeButton.Visible   := False;
+      pnlCollTimeButton.TabStop := False;
+      with CtrlInits do SetControl(cboCollTime, 'Lab Collection Times');
+      if Pos(U, FLastLabCollTime) > 0 then
+        cboColltime.SelectByID(Piece(FLastLabCollTime, U, 1))
+      else if FLastLabCollTime <> '' then
+        cboCollTime.Text     := FLastLabCollTime
+      else if (tmpORECALLTime <> '') and (tmpORECALLType = 'LC') then
+        cboCollTime.Text     := MakeRelativeDateTime(StrToFMDateTime(tmpORECALLTime))
+      else if LRFDATE <> '' then
+        cboCollTime.Text     := LRFDATE
+      else
+        cboCollTime.ItemIndex := 0;
+    end
+  else if CollType = 'I' then
+    begin
+      cboColltime.Visible    := False;
+      calCollTime.Visible    := False;
+      calColltime.Enabled    := False;
+      txtImmedColl.Visible   := True;
+      pnlCollTimeButton.Visible   := True;
+      pnlCollTimeButton.TabStop := True;
+      tmpImmTime := GetDefaultImmCollTime;
+      tmpTime := 0;
+      if (FLastColltime <> '') then
+        tmpTime := StrToFMDateTime(FLastColltime)
+      else if (tmpORECALLTime <> '') then
+        tmpTime := StrToFMDateTime(tmpORECALLTime)
+      else if LRFDATE <> '' then
+        tmpTime := StrToFMDateTime(LRFDATE);
+
+      if tmpTime > tmpImmTime then
+        begin
+          calCollTime.FMDateTime := tmpTime;
+          txtImmedColl.Text      := FormatFMDateTime('mmm dd,yy@hh:nn', tmpTime);
+        end
+      else
+        begin
+          calCollTime.FMDateTime := GetDefaultImmCollTime;
+          txtImmedColl.Text      := FormatFMDateTime('mmm dd,yy@hh:nn', calCollTime.FMDateTime);
+        end;
+    end;
+end;
+
+procedure TfrmODLab.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  if FCmtTypes <> nil then FCmtTypes.Free;
+  frmFrame.pnlVisit.Enabled := true;
+end;
+
+procedure TfrmODLab.LoadRequiredComment(CmtType: integer);
+begin
+  DisableCommentPanels;
+  pnlHide.SendToBack;
+  lblReqComment.Visible := True ;
+  case CmtType of
+     0 : {ANTICOAGULATION}         pnlAntiCoagulation.Show ;
+     1 : {DOSE/DRAW TIMES}         pnlDoseDraw.Show ;
+     2 : {ORDER COMMENT}           pnlOrderComment.Show ;
+     3 : {ORDER COMMENT MODIFIED}  pnlOrderComment.Show ; // DIFFERENT ???
+     4 : {TDM (PEAK-TROUGH}        begin
+                                     pnlPeakTrough.Show ;
+                                     grpPeakTrough.ItemIndex := -1;
+                                     txtAddlComment.Show;
+                                     lblAddlComment.Show;
+                                   end;
+     5 : {TRANSFUSION}             pnlOrderComment.Show ;
+     6 : {URINE VOLUME}            pnlUrineVolume.Show ;
+   else
+     pnlOrderComment.Show ;
+   end;
+end;
+
+procedure TfrmODLab.txtOrderCommentExit(Sender: TObject);
+begin
+  inherited;
+  if (not pnlOrderComment.Visible) or (ALabTest = nil) then exit;
+  with ALabTest do
+      if Length(txtOrderComment.Text)>0 then
+       begin
+        Comment.Clear;
+        ChangeComment('~For Test: ' + TestName);
+        ChangeComment('~' + txtOrderComment.Text) ;
+       end
+      else
+        Comment.Clear;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.txtAntiCoagulantExit(Sender: TObject);
+begin
+  inherited;
+  if (not pnlAntiCoagulation.Visible) or (ALabTest = nil) then exit;
+  with ALabTest do
+      if Length(txtAntiCoagulant.Text)>0 then
+       begin
+        Comment.Clear;
+        ChangeComment('~For Test: ' + TestName);
+        ChangeComment('~ANTICOAGULANT: ' + txtAntiCoagulant.Text);
+       end
+      else
+        Comment.Clear;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.txtUrineVolumeExit(Sender: TObject);
+begin
+  inherited;
+  if (not pnlUrineVolume.Visible) or (ALabTest = nil) then exit;
+  with ALabTest do
+   begin
+    Comment.Clear;
+    ChangeComment(txtUrineVolume.Text) ;
+   end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.grpPeakTroughClick(Sender: TObject);
+begin
+  inherited;
+  if (not pnlPeakTrough.Visible) or (ALabTest = nil) then exit;
+  with ALabTest,grpPeakTrough do
+    if ItemIndex > -1 then
+      begin
+        Comment.Clear;
+        ChangeComment('~For Test: ' + TestName);
+        ChangeComment('~Dose is expected to be at ' + UpperCase(Items[ItemIndex]) + ' level.');
+        ChangeComment(txtAddlComment.Text) ;
+      end
+    else
+      Comment.Clear;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.txtDoseTimeExit(Sender: TObject);
+begin
+  inherited;
+  if (not pnlDoseDraw.Visible) or (ALabTest = nil) then exit;
+  with txtDoseTime do
+    if Length(Text)>0 then
+      Text := FormatFMDateTime('mm/dd/yy hh:nn', StrToFMDateTime(Text))
+    else
+      Text := 'UNKNOWN';
+  DoseDrawComment;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.txtDrawTimeExit(Sender: TObject);
+begin
+  inherited;
+  if (not pnlDoseDraw.Visible) or (ALabTest = nil) then exit;
+  with txtDrawTime do
+    if Length(Text)>0 then
+      Text := FormatFMDateTime('mm/dd/yy hh:nn', StrToFMDateTime(Text))
+    else
+      Text := 'UNKNOWN';
+  DoseDrawComment;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.DoseDrawComment;
+begin
+  if ALabTest = nil then exit;
+  with ALabTest do
+   begin
+     Comment.Clear;
+     ChangeComment('~For Test: ' + TestName);
+     ChangeComment('~Last dose: ' + txtDoseTime.Text +
+                   '   draw time: '+txtDrawTime.Text);
+   end;
+end;
+
+procedure TfrmODLab.txtAddlCommentExit(Sender: TObject);
+begin
+  if (not pnlPeakTrough.Visible) or (ALabTest = nil) then exit;
+  grpPeakTroughClick(Sender);
+end;
+
+procedure TfrmODLab.DisableCommentPanels;
+begin
+  pnlHide.BringToFront;
+  lblReqComment.Visible := False;
+  pnlAntiCoagulation.Visible := False;
+  pnlOrderComment.Visible := False;
+  pnlDoseDraw.Visible := False;
+  pnlPeakTrough.Visible := False;
+  pnlUrineVolume.Visible := False;
+  lblAddlComment.Visible := False;
+  txtAddlComment.Visible := False;
+  //pnlTransfusion.Visible := False;
+end;
+
+procedure TfrmODLab.cboCollSampKeyPause(Sender: TObject);
+begin
+  inherited;
+  if ALabTest = nil then exit;
+  with cboCollSamp do
+    if (ItemIndex >= 0) and (ItemIEN = 0) then GetAllCollSamples(cboCollSamp);
+  if (cboCollSamp.ItemIEN = 0) then
+    begin
+      ALabTest.Specimen := 0;
+      ALabTest.CollSamp := 0;
+      cboCollSamp.ItemIndex := -1;
+      cboSpecimen.ItemIndex := -1;
+    end
+  else
+    ALabTest.LoadSpecimen(cboSpecimen);
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cboCollSampMouseClick(Sender: TObject);
+begin
+  inherited;
+  if ALabTest = nil then exit;
+  with cboCollSamp do
+    begin
+      if (ItemIndex >= 0) and (ItemIEN = 0) then
+        GetAllCollSamples(cboCollSamp);
+      if (ItemIEN = 0) then
+        begin
+          ALabTest.Specimen := 0;
+          ALabTest.CollSamp := 0;
+          ItemIndex := -1;
+          cboSpecimen.ItemIndex := -1;
+        end
+      else
+        ALabTest.LoadSpecimen(cboSpecimen);
+    end;
+  ControlChange(Self);
+end;
+
+function TfrmODLab.ValidCollTime(UserEntry: string): string;
+var
+  i: integer;
+const
+  FMDateResponses: array[0..3] of string = ('TODAY','NOW','NOON','MID');
+begin
+  Result := '';
+  UserEntry := UpperCase(UserEntry);
+  if StrToFMDateTime(UserEntry) < 0 then exit;
+  if (UserEntry = 'T') or
+     (UserEntry = 'N') or
+     (Copy(UserEntry,1,2)='T+') or
+     (Copy(UserEntry,1,2)='T@') or
+     (Copy(UserEntry,1,2)='T-') or
+     (Copy(UserEntry,1,2)='N+') then Result := UserEntry
+  else
+     for i := 0 to 3 do if Pos(FMDateResponses[i],UserEntry)>0 then Result := UserEntry ;
+  if Result = '' then Result := FloatToStr(StrToFMDateTime(UserEntry));
+end;
+
+procedure TfrmODLab.cboCollTimeExit(Sender: TObject);
+var
+  ADateTime: TFMDateTime;
+  CollType: string;
+  isTrue: boolean;
+const
+  TX_BAD_TIME         = ' is not a routine lab collection time.' ;
+  TX_BAD_TIME_CAP     = 'Invalid Time';
+begin
+  inherited;
+  if (ALabTest = nil) or (cboColltime.Text = '') then Exit;
+  Changing := True;
+  CollType := 'LC';
+  with cboCollTime do if (ItemIndex < 0) or (ITEMID = 'LO') then
+    if ALabTest.LabCanCollect then
+      begin
+        ADateTime := StrToFMDateTime(cboCollTime.Text);
+        if EvtDelayLoc > 0 then
+          isTrue := IsLabCollectTime(ADateTime, EvtDelayLoc)
+        else
+          isTrue := IsLabCollectTime(ADateTime, Encounter.Location);
+        if isTrue then
+          begin
+            calCollTime.Clear;
+            cboCollTime.Visible := True;
+            calCollTime.Visible := False;
+            calCollTime.Enabled := False;
+          end {if IsLabCollectTime}
+        else
+          begin
+            InfoBox(cboCollTime.Text + TX_BAD_TIME, TX_BAD_TIME_CAP, MB_OK or MB_ICONWARNING) ;
+            ItemIndex := -1;
+            Text := GetFutureLabTime(ADateTime);
+          end ;
+      end {if (LabCanCollect...}
+    else
+     begin
+       if OrderForInpatient then CollType := 'WC' else CollType := 'SP';
+       calCollTime.Text := cboCollTime.Text;
+       cboCollTime.Clear;
+       cboCollTime.Visible := False;
+       calCollTime.Visible := True;
+       calCollTime.Enabled := True;
+     end;
+  cboCollType.SelectByID(CollType);
+  Changing := False;                                           //v16.3  RV
+  ControlChange(Self);                                         //v16.3  RV
+  //Responses.Update('COLLECT', 1, CollType, CollType) ;       //v16.3  RV
+  //memOrder.Text := Responses.OrderText;                      //v16.3  RV
+end;
+
+procedure TfrmODLab.cboSpecimenMouseClick(Sender: TObject);
+begin
+  inherited;
+  if ALabTest = nil then exit;
+  with cboSpecimen do
+    begin
+      if (ItemIndex >= 0) and (ItemIEN = 0) then
+        GetAllSpecimens(cboSpecimen);
+      if (ItemIEN = 0) then
+        begin
+          ALabTest.Specimen := 0;
+          ItemIndex := -1;
+        end;
+    end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.GetAllCollSamples(AComboBox: TORComboBox);
+var
+  OtherSamp: string;
+begin
+  with ALabTest, AComboBox do
+    begin
+      if ((CollSampList.Count + 1) <= AComboBox.Items.Count) then LoadAllSamples;
+      OtherSamp := SelectOtherCollSample(Font.Size, CollSampCount, CollSampList);
+      if OtherSamp = '-1' then exit;
+      if SelectByID(Piece(OtherSamp, U, 1)) = -1 then
+        if Items.Count > CollSampCount + 1 then
+          Items[0] := OtherSamp
+        else
+          Items.Insert(0, OtherSamp) ;
+      SelectByID(Piece(OtherSamp, U, 1));
+      AComboBox.OnChange(Self);
+      ActiveControl := cmdAccept;
+    end;
+end;
+
+procedure TfrmODLab.GetAllSpecimens(AComboBox: TORComboBox);
+var
+  OtherSpec: string;
+begin
+  inherited;
+  if ALabTest <> nil then
+    with ALabTest, AComboBox do
+      begin
+        AComboBox.DroppedDown := False;
+        OtherSpec := SelectOtherSpecimen(Font.Size, SpecimenList);
+        if OtherSpec = '-1' then exit;
+        if SelectByID(Piece(OtherSpec, U, 1)) = -1 then
+          if Items.Count > SpecListCount + 1 then
+            Items[0] := OtherSpec
+          else
+            Items.Insert(0, OtherSpec) ;
+        SpecimenList.Add(OtherSpec);
+        SelectByID(Piece(OtherSpec, U, 1));
+        AComboBox.OnChange(Self);
+      end;
+end;
+
+procedure TfrmODLab.cboSpecimenKeyPause(Sender: TObject);
+begin
+  inherited;
+  if ALabTest = nil then exit;
+  with cboSpecimen do
+    if (ItemIndex >= 0) and (ItemIEN = 0) then
+      GetAllSpecimens(cboSpecimen);
+  if (cboSpecimen.ItemIEN = 0) then
+    begin
+      ALabTest.Specimen := 0;
+      cboSpecimen.ItemIndex := -1;
+    end ;
+  ControlChange(Self);
+end;
+
+procedure TfrmODLab.cmdImmedCollClick(Sender: TObject);
+var
+  ImmedCollTime: string;
+begin
+  inherited;
+  ImmedCollTime := SelectImmediateCollectTime(Font.Size, txtImmedColl.Text);
+  if ImmedCollTime <> '-1' then
+    begin
+      txtImmedColl.Text := ImmedCollTime;
+      calCollTime.FMDateTime := StrToFMDateTime(ImmedCollTime);
+    end
+  else
+    begin
+      txtImmedColl.Clear;
+      calCollTime.Clear;
+    end;
+end;
+
+procedure  TfrmODLab.ReadServerVariables;
+begin
+  LRFZX   := KeyVariable['LRFZX'];
+  LRFSAMP := KeyVariable['LRFSAMP'];
+  LRFSPEC := KeyVariable['LRFSPEC'];
+  LRFDATE := KeyVariable['LRFDATE'];
+  LRFURG  := KeyVariable['LRFURG'];
+  LRFSCH  := KeyVariable['LRFSCH'];
+end;
+
+procedure TfrmODLab.DetermineCollectionDefaults(Responses: TResponses);
+var
+  RespCollect, RespStart: TResponse;
+  //i: integer;
+begin
+  if ALabTest = nil then exit;
+  calCollTime.Clear;
+  cboCollTime.Clear;
+  calCollTime.Enabled := True;
+  lblCollTime.Enabled := True;
+  cboColltime.Enabled := True;
+  with Responses, ALabTest do
+    begin
+      RespCollect := FindResponseByName('COLLECT',1);
+      RespStart   := FindResponseByName('START'  ,1);
+      if (RespCollect <> nil) then with RespCollect do
+        begin
+          if IValue = 'LC' then
+            begin
+              if not LabCanCollect then
+                begin
+                 cboCollType.SelectByID('WC');
+                 SetupCollTimes('WC');
+                end
+              else   //  if LabCanCollect
+                begin
+                 cboCollType.SelectByID('LC');
+                 SetupCollTimes('LC');
+                 CtrlInits.SetControl(cboCollTime, 'Lab Collection Times') ;
+                 if RespStart <> nil then
+                   begin
+                     cboCollTime.SelectByID('L' + RespStart.IValue);
+                     if cboCollTime.ItemIndex < 0 then
+                       cboCollTime.Text := RespStart.IValue;
+                   end;
+                end;
+            end
+          else    //  if IValue <> 'LC'
+            begin
+              cboCollType.SelectByID(IValue) ;
+              SetupCollTimes(IValue);
+              if RespStart <> nil then
+                begin
+                  if ContainsAlpha(RespStart.IValue) then
+                    calColltime.Text := RespStart.IValue
+                  else
+                    calColltime.FMDateTime := StrToFMDateTime(RespStart.IValue);
+                end;
+            end ;
+          if IValue = 'I' then
+            if not LabCanCollect then
+              begin
+               cboCollType.SelectByID('WC');
+               SetupCollTimes('WC');
+              end
+            else
+              begin
+                calCollTime.Enabled := False;
+                if RespStart <> nil then txtImmedColl.Text := RespStart.EValue;
+              end;
+        end
+      else   // if (RespCollect = nil)
+        LoadCollType(cbocollType);
+    end;
+end;
+procedure TfrmODLab.pnlCollTimeButtonEnter(Sender: TObject);
+begin
+  inherited;
+  (Sender as TPanel).BevelOuter := bvRaised;
+end;
+
+procedure TfrmODLab.pnlCollTimeButtonExit(Sender: TObject);
+begin
+  inherited;
+  (Sender as TPanel).BevelOuter := bvNone;
+end;
+
+procedure TfrmODLab.ViewinReportWindow1Click(Sender: TObject);
+begin
+  inherited;
+  ReportBox(memMessage.Lines, 'Lab Procedure', True);
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabImmedColl.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabImmedColl.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabImmedColl.dfm	(revision 1676)
@@ -0,0 +1,102 @@
+inherited frmODLabImmedColl: TfrmODLabImmedColl
+  Left = 146
+  Top = 150
+  Caption = 'Immediate Collection Times'
+  ClientHeight = 259
+  ClientWidth = 516
+  OldCreateOrder = True
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 516
+    Height = 259
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblImmedColl: TOROffsetLabel
+      Left = 26
+      Top = 202
+      Width = 149
+      Height = 15
+      Caption = 'Enter or select a collection time'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object memImmedCollect: TCaptionMemo
+      Left = 0
+      Top = 0
+      Width = 516
+      Height = 193
+      Align = alTop
+      Color = clBtnFace
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = []
+      Lines.Strings = (
+        'Collection times')
+      ParentFont = False
+      ReadOnly = True
+      TabOrder = 0
+      WantReturns = False
+      Caption = 'Collection times'
+    end
+    object calImmedCollect: TORDateBox
+      Left = 26
+      Top = 216
+      Width = 219
+      Height = 21
+      TabOrder = 1
+      OnKeyUp = calImmedCollectKeyUp
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Enter or select a collection time'
+    end
+    object cmdOK: TORAlignButton
+      Left = 309
+      Top = 213
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TORAlignButton
+      Left = 405
+      Top = 213
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = memImmedCollect'
+        'Status = stsDefault')
+      (
+        'Component = calImmedCollect'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmODLabImmedColl'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabImmedColl.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabImmedColl.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabImmedColl.pas	(revision 1676)
@@ -0,0 +1,114 @@
+unit fODLabImmedColl;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORDtTm, ExtCtrls, ORFn, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmODLabImmedColl = class(TfrmBase508Form)
+    memImmedCollect: TCaptionMemo;
+    calImmedCollect: TORDateBox;
+    cmdOK: TORAlignButton;
+    cmdCancel: TORAlignButton;
+    pnlBase: TORAutoPanel;
+    lblImmedColl: TOROffsetLabel;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure calImmedCollectKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FCollTime: string;
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+function SelectImmediateCollectTime(FontSize: integer; CollTime: string): string;
+
+implementation
+
+{$R *.DFM}
+
+uses  rODLab;
+
+const
+  TX_NOTIME_TEXT = 'Enter or select a collection time or press Cancel.';
+  TX_NOTIME_CAP = 'Missing Date/Time';
+  TX_BADTIME_CAP = 'Invalid Immediate Collect Time';
+
+function SelectImmediateCollectTime(FontSize: integer; CollTime: string): string;
+{ displays select form for immediate collect time and returns a record of the selection }
+var
+  frmODLabImmedColl: TfrmODLabImmedColl;
+begin
+  frmODLabImmedColl := TfrmODLabImmedColl.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmODLabImmedColl);
+    with frmODLabImmedColl do
+    begin
+      FCollTime := CollTime;
+      ShowModal;
+      Result := FCollTime;
+    end;
+  finally
+    frmODLabImmedColl.Release;
+  end;
+end;
+
+procedure TfrmODLabImmedColl.cmdCancelClick(Sender: TObject);
+begin
+  FCollTime := '-1' ;
+  Close;
+end;
+
+procedure TfrmODLabImmedColl.cmdOKClick(Sender: TObject);
+var
+  x: string;
+begin
+  if calImmedCollect.FMDateTime = 0 then
+   begin
+    InfoBox(TX_NOTIME_TEXT, TX_NOTIME_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+   end;
+  if calImmedCollect.FMDateTime > 0 then
+    begin
+      x := ValidImmCollTime(calImmedCollect.FMDateTime);
+      if Piece(x ,U, 1) = '1' then
+        FCollTime := calImmedCollect.Text
+      else
+        begin
+          InfoBox(MixedCase(Piece(x ,U, 2)), TX_BADTIME_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+        end;
+    end
+  else
+    FCollTime := '-1';
+  Close;
+end;
+
+
+procedure TfrmODLabImmedColl.FormShow(Sender: TObject);
+begin
+  FastAssign(ImmediateCollectTimes, memImmedCollect.Lines);
+  if Length(FCollTime) > 0 then
+    calImmedCollect.Text := FCollTime
+  else
+    calImmedCollect.FMDateTime := GetDefaultImmCollTime;
+  ActiveControl := calImmedCollect;
+end;
+
+procedure TfrmODLabImmedColl.calImmedCollectKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    cmdCancelClick(cmdCancel);
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthCollSamp.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthCollSamp.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthCollSamp.dfm	(revision 1676)
@@ -0,0 +1,84 @@
+inherited frmODLabOthCollSamp: TfrmODLabOthCollSamp
+  Left = 321
+  Top = 136
+  BorderIcons = []
+  Caption = 'Select Collection Sample'
+  ClientHeight = 332
+  ClientWidth = 228
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 236
+  ExplicitHeight = 359
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 228
+    Height = 332
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object cboOtherCollSamp: TORComboBox
+      Left = 9
+      Top = 22
+      Width = 212
+      Height = 270
+      Style = orcsSimple
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnDblClick = cboOtherCollSampDblClick
+      CharsNeedMatch = 1
+    end
+    object cmdOK: TButton
+      Left = 39
+      Top = 303
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 123
+      Top = 303
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cboOtherCollSamp'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmODLabOthCollSamp'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthCollSamp.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthCollSamp.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthCollSamp.pas	(revision 1676)
@@ -0,0 +1,90 @@
+unit fODLabOthCollSamp;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, StdCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODLabOthCollSamp = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    cboOtherCollSamp: TORComboBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cboOtherCollSampDblClick(Sender: TObject);
+  private
+    FOtherCollSamp: string;
+  end;
+
+function SelectOtherCollSample(FontSize: Integer; Skip: integer; CollSampList: TList): string ;
+
+implementation
+
+{$R *.DFM}
+
+uses fODLab, rODLab;
+
+const
+  TX_NOCOLLSAMP_TEXT = 'Select a collection sample or press Cancel.';
+  TX_NOCOLLSAMP_CAP = 'Missing Collection Sample';
+
+function SelectOtherCollSample(FontSize: Integer; Skip: integer; CollSampList: TList): string ;
+{ displays collection sample select form for lab and returns a record of the selection }
+var
+  frmODLabOthCollSamp: TfrmODLabOthCollSamp;
+  W, H, i: Integer;
+  x: string;
+begin
+  frmODLabOthCollSamp := TfrmODLabOthCollSamp.Create(Application);
+  try
+    with frmODLabOthCollSamp do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      with CollSampList do for i := Skip to Count-1 do with TCollSamp(Items[i]) do
+        begin
+          x := IntToStr(CollSampID) + '^' + CollSampName;
+          if Length(TubeColor) <> 0 then x := x + ' (' + TubeColor + ')';
+          cboOtherCollSamp.Items.Add(x) ;
+        end;
+      ShowModal;
+      Result := FOtherCollSamp;
+    end;
+  finally
+    frmODLabOthCollSamp.Release;
+  end;
+end;
+
+procedure TfrmODLabOthCollSamp.cmdCancelClick(Sender: TObject);
+begin
+  FOtherCollSamp := '-1'  ;
+  Close;
+end;
+
+procedure TfrmODLabOthCollSamp.cmdOKClick(Sender: TObject);
+begin
+  if cboOtherCollSamp.ItemIEN = 0 then
+   begin
+    InfoBox(TX_NOCOLLSAMP_TEXT, TX_NOCOLLSAMP_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+   end;
+  if cboOtherCollSamp.ItemIEN > 0 then
+     FOtherCollSamp := cboOtherCollSamp.Items[cboOtherCollSamp.ItemIndex]
+  else
+     FOtherCollSamp := '-1'  ;
+  Close;
+end;
+
+procedure TfrmODLabOthCollSamp.cboOtherCollSampDblClick(Sender: TObject);
+begin
+  cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthSpec.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthSpec.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthSpec.dfm	(revision 1676)
@@ -0,0 +1,83 @@
+inherited frmODLabOthSpec: TfrmODLabOthSpec
+  Left = 240
+  Top = 136
+  BorderIcons = []
+  Caption = 'Select Specimen'
+  ClientHeight = 332
+  ClientWidth = 309
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 309
+    Height = 332
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object cboOtherSpec: TORComboBox
+      Left = 9
+      Top = 22
+      Width = 291
+      Height = 270
+      Style = orcsSimple
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnDblClick = cboOtherSpecDblClick
+      OnNeedData = cboOtherSpecNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdOK: TButton
+      Left = 76
+      Top = 302
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 160
+      Top = 302
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cboOtherSpec'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmODLabOthSpec'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthSpec.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthSpec.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODLabOthSpec.pas	(revision 1676)
@@ -0,0 +1,98 @@
+unit fODLabOthSpec;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, StdCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODLabOthSpec = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    cboOtherSpec: TORComboBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cboOtherSpecDblClick(Sender: TObject);
+    procedure cboOtherSpecNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+  private
+    FOtherSpec: string;
+  end;
+
+function SelectOtherSpecimen(FontSize: Integer; SpecimenList: TStringList): string ;
+
+implementation
+
+{$R *.DFM}
+
+uses fODLab, rODLab;
+
+const
+  TX_NOSPEC_TEXT = 'Select a specimen or press Cancel.';
+  TX_NOSPEC_CAP = 'Missing Specimen';
+
+function SelectOtherSpecimen(FontSize: Integer; SpecimenList: TStringList): string ;
+{ displays collection sample select form for lab and returns a record of the selection }
+var
+  frmODLabOthSpec: TfrmODLabOthSpec;
+  W, H: Integer;
+begin
+  frmODLabOthSpec := TfrmODLabOthSpec.Create(Application);
+  try
+    with frmODLabOthSpec do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      with cboOtherSpec do
+        begin
+          {FastAssign(SpecimenList, MItems);
+          InsertSeparator; }
+          InitLongList('');
+        end;
+      ShowModal;
+      Result := FOtherSpec;
+    end;
+  finally
+    frmODLabOthSpec.Release;
+  end;
+end;
+
+procedure TfrmODLabOthSpec.cmdCancelClick(Sender: TObject);
+begin
+  FOtherSpec := '-1'  ;
+  Close;
+end;
+
+procedure TfrmODLabOthSpec.cmdOKClick(Sender: TObject);
+begin
+  if cboOtherSpec.ItemIEN = 0 then
+   begin
+    InfoBox(TX_NOSPEC_TEXT, TX_NOSPEC_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+   end;
+  if cboOtherSpec.ItemIEN > 0 then
+     FOtherSpec := cboOtherSpec.Items[cboOtherSpec.ItemIndex]
+  else
+     FOtherSpec := '-1'  ;
+  Close;
+end;
+
+procedure TfrmODLabOthSpec.cboOtherSpecDblClick(Sender: TObject);
+begin
+  cmdOKClick(Self);
+end;
+
+procedure TfrmODLabOthSpec.cboOtherSpecNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboOtherSpec.ForDataUse(SubsetOfSpecimens(StartFrom, Direction));
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedComplex.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedComplex.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedComplex.dfm	(revision 1676)
@@ -0,0 +1,263 @@
+inherited frmODMedComplex: TfrmODMedComplex
+  Left = 291
+  Top = 307
+  BorderIcons = []
+  Caption = 'Complex Dose'
+  ClientHeight = 227
+  ClientWidth = 445
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 453
+  ExplicitHeight = 254
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Bevel1: TBevel [0]
+    Left = 6
+    Top = 174
+    Width = 433
+    Height = 2
+  end
+  object grdDoses: TStringGrid [1]
+    Left = 6
+    Top = 6
+    Width = 433
+    Height = 135
+    DefaultColWidth = 78
+    DefaultRowHeight = 21
+    RowCount = 6
+    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goTabs]
+    ScrollBars = ssVertical
+    TabOrder = 4
+    OnDrawCell = grdDosesDrawCell
+    OnKeyPress = grdDosesKeyPress
+    OnMouseDown = grdDosesMouseDown
+    OnMouseUp = grdDosesMouseUp
+    RowHeights = (
+      21
+      21
+      21
+      21
+      21
+      21)
+  end
+  object cmdOK: TButton [2]
+    Left = 290
+    Top = 184
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    TabOrder = 5
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 368
+    Top = 184
+    Width = 72
+    Height = 21
+    Caption = 'Cancel'
+    TabOrder = 6
+    OnClick = cmdCancelClick
+  end
+  object cboRoute: TORComboBox [4]
+    Left = 170
+    Top = 200
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = False
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    Visible = False
+    OnClick = cboRouteClick
+    OnExit = cboRouteExit
+    CharsNeedMatch = 1
+  end
+  object cboSchedule: TORComboBox [5]
+    Left = 169
+    Top = 176
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = False
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 2
+    Visible = False
+    OnExit = cboScheduleExit
+    CharsNeedMatch = 1
+  end
+  object pnlInstruct: TPanel [6]
+    Left = 6
+    Top = 177
+    Width = 150
+    Height = 21
+    BevelOuter = bvNone
+    TabOrder = 0
+    Visible = False
+    OnEnter = pnlInstructEnter
+    OnExit = pnlInstructExit
+    object btnUnits: TSpeedButton
+      Left = 86
+      Top = 1
+      Width = 63
+      Height = 15
+      Caption = 'TABLET(S)'
+      Flat = True
+      Glyph.Data = {
+        AE000000424DAE0000000000000076000000280000000E000000070000000100
+        0400000000003800000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        330033333333333333003330333333733300330003333F87330030000033FFFF
+        F30033333333333333003333333333333300}
+      Layout = blGlyphRight
+      NumGlyphs = 2
+      Spacing = 0
+      OnClick = btnUnitsClick
+    end
+    object cboInstruct: TORComboBox
+      Left = -1
+      Top = -1
+      Width = 86
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = False
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 80
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      CharsNeedMatch = 1
+    end
+  end
+  object pnlDays: TPanel [7]
+    Left = 6
+    Top = 201
+    Width = 67
+    Height = 21
+    BevelOuter = bvNone
+    TabOrder = 3
+    Visible = False
+    OnEnter = pnlDaysEnter
+    OnExit = pnlDaysExit
+    object Label1: TLabel
+      Left = 43
+      Top = 4
+      Width = 22
+      Height = 13
+      Caption = 'days'
+    end
+    object txtDays: TCaptionEdit
+      Left = 0
+      Top = 0
+      Width = 25
+      Height = 21
+      AutoSelect = False
+      TabOrder = 0
+      Text = '0'
+      OnChange = txtDaysChange
+      Caption = 'days'
+    end
+    object UpDown2: TUpDown
+      Left = 25
+      Top = 0
+      Width = 15
+      Height = 21
+      Associate = txtDays
+      Max = 999
+      TabOrder = 1
+    end
+  end
+  object cmdInsert: TButton [8]
+    Left = 6
+    Top = 149
+    Width = 79
+    Height = 17
+    Caption = 'Insert Row'
+    TabOrder = 7
+    OnClick = cmdInsertClick
+  end
+  object cmdRemove: TButton [9]
+    Left = 92
+    Top = 149
+    Width = 91
+    Height = 17
+    Caption = 'Remove Row'
+    TabOrder = 8
+    OnClick = cmdRemoveClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = grdDoses'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboRoute'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = pnlInstruct'
+        'Status = stsDefault')
+      (
+        'Component = cboInstruct'
+        'Status = stsDefault')
+      (
+        'Component = pnlDays'
+        'Status = stsDefault')
+      (
+        'Component = txtDays'
+        'Status = stsDefault')
+      (
+        'Component = UpDown2'
+        'Status = stsDefault')
+      (
+        'Component = cmdInsert'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedComplex'
+        'Status = stsDefault'))
+  end
+  object popUnits: TPopupMenu
+    AutoPopup = False
+    Left = 109
+    Top = 193
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedComplex.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedComplex.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedComplex.pas	(revision 1676)
@@ -0,0 +1,562 @@
+unit fODMedComplex;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, Grids, Buttons, ExtCtrls, ORCtrls, Menus, ORFn, fODBase, uConst,
+  ComCtrls, VA508AccessibilityManager;
+
+type
+  TfrmODMedComplex = class(TfrmAutoSz)
+    grdDoses: TStringGrid;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboRoute: TORComboBox;
+    cboSchedule: TORComboBox;
+    pnlInstruct: TPanel;
+    cboInstruct: TORComboBox;
+    btnUnits: TSpeedButton;
+    pnlDays: TPanel;
+    txtDays: TCaptionEdit;
+    Label1: TLabel;
+    popUnits: TPopupMenu;
+    Bevel1: TBevel;
+    cmdInsert: TButton;
+    cmdRemove: TButton;
+    UpDown2: TUpDown;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure btnUnitsClick(Sender: TObject);
+    procedure pnlInstructExit(Sender: TObject);
+    procedure cboRouteExit(Sender: TObject);
+    procedure cboScheduleExit(Sender: TObject);
+    procedure pnlDaysExit(Sender: TObject);
+    procedure grdDosesDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure pnlInstructEnter(Sender: TObject);
+    procedure pnlDaysEnter(Sender: TObject);
+    procedure grdDosesMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure cmdInsertClick(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure grdDosesMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure grdDosesKeyPress(Sender: TObject; var Key: Char);
+    procedure txtDaysChange(Sender: TObject);
+    procedure cboRouteClick(Sender: TObject);
+  private
+    FDropColumn: Integer;
+    procedure ShowEditor(ACol, ARow: Integer; AChar: Char);
+    procedure UnitClick(Sender: TObject);
+    procedure Validate(var AnErrMsg: string);
+    function ValFor(FieldID, ARow: Integer): string;
+    procedure UMDelayEvent(var Message: TMessage); message UM_DELAYEVENT;
+  public
+    { Public declarations }
+  end;
+
+function ExecuteComplexDose(CtrlInits: TCtrlInits; Responses: TResponses): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase;
+
+const
+  COL_SELECT   =  0;
+  COL_INSTRUCT =  1;
+  COL_ROUTE    =  2;
+  COL_SCHEDULE =  3;
+  COL_DURATION =  4;
+  VAL_INSTR    = 10;
+  VAL_MISC     = 11;
+  VAL_ROUTE    = 12;
+  VAL_SCHEDULE = 13;
+  VAL_DAYS     = 14;
+  VAL_ABBROUTE = 15;
+  TAB          = #9;
+  TX_NO_AMPER  = ' Instructions may not contain the ampersand (&) character.';
+  TX_NF_ROUTE  = ' not found in the Medication Routes file.';
+  TX_NO_ROUTE  = ': Route must be entered.';
+  TX_NO_SCHED  = ': Schedule must be entered.';
+
+{ public functions }
+
+function ExecuteComplexDose(CtrlInits: TCtrlInits; Responses: TResponses): Boolean;
+var
+  frmODMedComplex: TfrmODMedComplex;
+  AResponse: TResponse;
+  AnInstance, ARow: Integer;
+  x: string;
+begin
+  frmODMedComplex := TfrmODMedComplex.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmODMedComplex));
+    with frmODMedComplex do
+    begin
+      grdDoses.Cells[COL_INSTRUCT, 0] := CtrlInits.DefaultText('Verb');
+      if grdDoses.Cells[COL_INSTRUCT, 0] = '' then grdDoses.Cells[COL_INSTRUCT, 0] := 'Amount';
+      CtrlInits.SetControl(cboInstruct, 'Instruct');
+      CtrlInits.SetPopupMenu(popUnits, UnitClick, 'Nouns');
+      CtrlInits.SetControl(cboRoute,    'Route');
+      CtrlInits.SetControl(cboSchedule, 'Schedules');
+      with Responses do
+      begin
+        grdDoses.RowCount := InstanceCount('INSTR') + 2;  // 1 row for headers, 1 for new dose
+        ARow := 1;                                        // row 1 is first dose row
+        AnInstance := NextInstance('INSTR', 0);
+        while AnInstance > 0 do
+        begin
+          grdDoses.Cells[COL_INSTRUCT, ARow] :=
+            IValueFor('INSTR', AnInstance) + ' ' + IValueFor('MISC', AnInstance) + TAB +
+            IValueFor('INSTR', AnInstance) + TAB + IValueFor('MISC', AnInstance);
+          AResponse := FindResponseByName('ROUTE', AnInstance);
+          cboRoute.SelectByID(AResponse.IValue);
+          with cboRoute do if ItemIndex > -1 then x := DisplayText[ItemIndex];
+          grdDoses.Cells[COL_ROUTE,    ARow] := x + TAB + AResponse.IValue + TAB + AResponse.EValue;
+          grdDoses.Cells[COL_SCHEDULE, ARow] := IValueFor('SCHEDULE', AnInstance);
+          x := IValueFor('DAYS', AnInstance);
+          if Length(x) > 0 then x := x + ' day(s)';
+          grdDoses.Cells[COL_DURATION, ARow] := x + TAB + IValueFor('DAYS', AnInstance);
+          AnInstance := NextInstance('INSTR', AnInstance);
+          Inc(ARow);
+        end; {while AnInstance}
+      end; {with Responses}
+    end;
+    Result := frmODMedComplex.ShowModal = mrOK;
+    if Result then with frmODMedComplex, grdDoses, Responses do
+    begin
+      Clear('INSTR');
+      Clear('MISC');
+      Clear('ROUTE');
+      Clear('SCHEDULE');
+      Clear('DAYS');
+      for ARow := 1 to Pred(RowCount) do
+      begin
+        if Length(ValFor(VAL_INSTR, ARow)) > 0 then
+        begin
+          Update('INSTR',    ARow, ValFor(VAL_INSTR,    ARow), ValFor(VAL_INSTR,    ARow));
+          if Length(ValFor(VAL_MISC, ARow)) > 0 then
+            Update('MISC',   ARow, ValFor(VAL_MISC,     ARow), ValFor(VAL_MISC,     ARow));
+          Update('ROUTE',    ARow, ValFor(VAL_ROUTE,    ARow), ValFor(VAL_ABBROUTE, ARow));
+          Update('SCHEDULE', ARow, ValFor(VAL_SCHEDULE, ARow), ValFor(COL_SCHEDULE, ARow));
+          Update('DAYS',     ARow, ValFor(VAL_DAYS,     ARow), ValFor(VAL_DAYS,     ARow));
+        end; {if Length}
+      end; {with...for}
+    end; {if Result}
+  finally
+    frmODMedComplex.Release;
+  end;
+end;
+
+{ General Functions - get & set cell values}
+
+function TfrmODMedComplex.ValFor(FieldID, ARow: Integer): string;
+{ Contents of grid cells is as follows (cells delimited by |, ^ indicates tab char)
+    InstructionText^INSTR^MISC | RouteText^ROUTE^Abbrev. | SCHEDULE  DurationText^DAYS
+  Only the first tab piece for each cell is drawn. }
+begin
+  Result := '';
+  if (ARow < 1) or (ARow >= grdDoses.RowCount) then Exit;
+  with grdDoses do
+    case FieldID of
+    COL_INSTRUCT : Result := Piece(Cells[COL_INSTRUCT, ARow], TAB, 1);
+    COL_ROUTE    : Result := Piece(Cells[COL_ROUTE,    ARow], TAB, 1);
+    COL_SCHEDULE : Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+    COL_DURATION : Result := Piece(Cells[COL_DURATION, ARow], TAB, 1);
+    VAL_INSTR    : Result := Piece(Cells[COL_INSTRUCT, ARow], TAB, 2);
+    VAL_MISC     : Result := Piece(Cells[COL_INSTRUCT, ARow], TAB, 3);
+    VAL_ROUTE    : Result := Piece(Cells[COL_ROUTE,    ARow], TAB, 2);
+    VAL_SCHEDULE : Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+    VAL_DAYS     : Result := Piece(Cells[COL_DURATION, ARow], TAB, 2);
+    VAL_ABBROUTE : Result := Piece(Cells[COL_ROUTE,    ARow], Tab, 3);
+    end;
+end;
+
+procedure FindInCombo(const x: string; AComboBox: TORComboBox);
+var
+  i, Found: Integer;
+begin
+  with AComboBox do
+  begin
+    i := 0;
+    Found := -1;
+    while (i < Items.Count) and (Found < 0) do
+    begin
+      if CompareText(Copy(DisplayText[i], 1, Length(x)), x) = 0 then Found := i;
+      Inc(i);
+    end; {while}
+    if Found > -1 then
+    begin
+      ItemIndex := Found;
+      Application.ProcessMessages;
+      SelStart  := 1;
+      SelLength := Length(Items[Found]);
+    end else
+    begin
+      Text := x;
+      SelStart := Length(x);
+    end;
+  end; {with AComboBox}
+end;
+
+{ Form Events }
+
+procedure TfrmODMedComplex.FormCreate(Sender: TObject);
+begin
+  inherited;
+  with grdDoses do
+  begin
+    ColWidths[COL_SELECT]   := 12;
+    ColWidths[COL_INSTRUCT] := 160;
+    Cells[COL_INSTRUCT, 0]  := 'Amount';
+    Cells[COL_ROUTE,    0]  := 'Route';
+    Cells[COL_SCHEDULE, 0]  := 'Schedule';
+    Cells[COL_DURATION, 0]  := 'Duration';
+  end;
+  FDropColumn := -1;
+end;
+
+{ grdDoses events (including cell editors) }
+
+procedure TfrmODMedComplex.grdDosesMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+var
+  ACol, ARow: Integer;
+begin
+  inherited;
+  grdDoses.MouseToCell(X, Y, ACol, ARow);
+  if (ARow < 0) or (ACol < 0) then Exit;
+  if ACol > COL_SELECT then ShowEditor(ACol, ARow, #0) else
+  begin
+    grdDoses.Col := COL_INSTRUCT;
+    grdDoses.Row := ARow;
+  end;
+end;
+
+procedure TfrmODMedComplex.grdDosesKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  if Key = #13 then ShowEditor(grdDoses.Col, grdDoses.Row, #0);
+  if Key in [#32..#127] then ShowEditor(grdDoses.Col, grdDoses.Row, Key);
+end;
+
+procedure TfrmODMedComplex.grdDosesMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  case FDropColumn of
+  COL_INSTRUCT: with cboInstruct do if Items.Count > 0 then DroppedDown := True;
+  COL_ROUTE:    with cboRoute    do if Items.Count > 0 then DroppedDown := True;
+  COL_SCHEDULE: with cboSchedule do if Items.Count > 0 then DroppedDown := True;
+  end;
+  FDropColumn := -1;
+end;
+
+procedure TfrmODMedComplex.grdDosesDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
+  State: TGridDrawState);
+{ only show the first tab piece of the cell }
+begin
+  inherited;
+  grdDoses.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,
+    Piece(grdDoses.Cells[ACol, ARow], TAB, 1));
+end;
+
+procedure TfrmODMedComplex.ShowEditor(ACol, ARow: Integer; AChar: Char);
+
+  procedure PlaceControl(AControl: TWinControl);
+  var
+    ARect: TRect;
+  begin
+    with AControl do
+    begin
+      ARect := grdDoses.CellRect(ACol, ARow);
+      SetBounds(ARect.Left + grdDoses.Left + 1,  ARect.Top  + grdDoses.Top + 1,
+                ARect.Right - ARect.Left + 1,    ARect.Bottom - ARect.Top + 1);
+      BringToFront;
+      Show;
+      SetFocus;
+    end;
+  end;
+
+begin
+  inherited;
+  if ARow = 0 then Exit;  // header row
+  // require initial instruction entry when in last row
+  with grdDoses do if (ARow = Pred(RowCount)) and (ACol > COL_INSTRUCT) and
+    (ValFor(VAL_INSTR, ARow) = '') then Exit;
+  // only allow route when in first row
+  if (ACol = COL_ROUTE) and (ARow > 1) then Exit;
+  // display appropriate editor for row & column
+  case ACol of
+  COL_INSTRUCT: begin
+                  // if this is the last row, default the route & schedule to previous row
+                  if (ARow > 1) and (ARow = Pred(grdDoses.RowCount)) then
+                  begin
+                    grdDoses.Cells[COL_INSTRUCT, ARow] := TAB + TAB + ValFor(VAL_MISC, Pred(ARow));
+                    grdDoses.Cells[COL_ROUTE,    ARow] := grdDoses.Cells[COL_ROUTE,    Pred(ARow)];
+                    grdDoses.Cells[COL_SCHEDULE, ARow] := grdDoses.Cells[COL_SCHEDULE, Pred(ARow)];
+                  end;
+                  // set appropriate value for cboInstruct & btnUnits
+                  btnUnits.Caption := ValFor(VAL_MISC, ARow);
+                  pnlInstruct.Tag := ARow;
+                  if popUnits.Items.Count = 0 then
+                  begin
+                    btnUnits.Visible := False;
+                    cboInstruct.Width := pnlInstruct.Width;
+                  end;
+                  PlaceControl(pnlInstruct);
+                  FDropColumn := COL_INSTRUCT;
+                  if AChar <> #0
+                    then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_INSTRUCT)
+                    else cboInstruct.Text := ValFor(VAL_INSTR, ARow);
+                end;
+  COL_ROUTE:    begin
+                  // set appropriate value for cboRoute
+                  cboRoute.SelectByID(ValFor(VAL_ROUTE, ARow));
+                  if cboRoute.Text = '' then cboRoute.Text := ValFor(COL_ROUTE, ARow);
+                  cboRoute.Tag := ARow;
+                  PlaceControl(cboRoute);
+                  FDropColumn := COL_ROUTE;
+                  if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_ROUTE);
+                end;
+  COL_SCHEDULE: begin
+                  // set appropriate value for cboSchedule
+                  cboSchedule.Tag := ARow;
+                  PlaceControl(cboSchedule);
+                  FDropColumn := COL_SCHEDULE;
+                  if AChar <> #0
+                    then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_SCHEDULE)
+                    else cboSchedule.Text := ValFor(COL_SCHEDULE, ARow);
+                end;
+  COL_DURATION: begin
+                  // set appropriate value for txtDays
+                  pnlDays.Tag := ARow;
+                  PlaceControl(pnlDays);
+                  txtDays.SetFocus;
+                  if AChar <> #0
+                    then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_DURATION)
+                    else txtDays.Text := ValFor(VAL_DAYS, ARow);
+                end;
+  end; {case ACol}
+end;
+
+procedure TfrmODMedComplex.UMDelayEvent(var Message: TMessage);
+{ after focusing events are completed for a combobox, set the key the user typed }
+begin
+  case Message.LParam of
+  COL_INSTRUCT : FindInCombo(Chr(Message.WParam), cboInstruct);
+  COL_ROUTE    : FindInCombo(Chr(Message.WParam), cboRoute);
+  COL_SCHEDULE : FindInCombo(Chr(Message.WParam), cboSchedule);
+  COL_DURATION : begin
+                   txtDays.Text := Chr(Message.WParam);
+                   txtDays.SelStart := 1;
+                 end;
+  end;
+end;
+
+{ Instructions Editor }
+
+procedure TfrmODMedComplex.pnlInstructEnter(Sender: TObject);
+begin
+  inherited;
+  // if this was the last row, create a new last row
+  if grdDoses.Row = Pred(grdDoses.RowCount) then grdDoses.RowCount := grdDoses.RowCount + 1;
+  // shift focus to the combobox portion of the instructions panel
+  cboInstruct.SetFocus;
+end;
+
+procedure TfrmODMedComplex.pnlInstructExit(Sender: TObject);
+var
+  ARow: Integer;
+begin
+  inherited;
+  ARow := pnlInstruct.Tag;
+  // clear the rest of the row if no instruction has been entered
+  with grdDoses do if (ARow = Pred(RowCount)) and (cboInstruct.Text = '') then
+  begin
+    Cells[COL_INSTRUCT, ARow] := '';
+    Cells[COL_ROUTE,    ARow] := '';
+    Cells[COL_SCHEDULE, ARow] := '';
+    Cells[COL_DURATION, ARow] := '';
+    Exit;
+  end;
+  // save entered information in the cell
+  grdDoses.Cells[COL_INSTRUCT, ARow] := cboInstruct.Text + ' ' + btnUnits.Caption + TAB +
+    cboInstruct.Text + TAB + btnUnits.Caption;
+  pnlInstruct.Tag := -1;
+  pnlInstruct.Hide;
+end;
+
+procedure TfrmODMedComplex.btnUnitsClick(Sender: TObject);
+var
+  APoint: TPoint;
+begin
+  inherited;
+  APoint := btnUnits.ClientToScreen(Point(0, btnUnits.Height));
+  popUnits.Popup(APoint.X, APoint.Y);
+end;
+
+procedure TfrmODMedComplex.UnitClick(Sender: TObject);
+begin
+  btnUnits.Caption := TMenuItem(Sender).Caption;
+end;
+
+{ Route Editor }
+
+procedure TfrmODMedComplex.cboRouteClick(Sender: TObject);
+{ force all routes to be the same (until pharmacy changes to accomodate varying routes) }
+var
+  i: Integer;
+  x: string;
+begin
+  inherited;
+  with cboRoute do if ItemIndex > -1
+    then x := Piece(Items[ItemIndex], U, 3)
+    else x := cboRoute.Text;
+  for i := 1 to Pred(grdDoses.RowCount) do
+    if Length(ValFor(VAL_INSTR, i)) > 0
+      then grdDoses.Cells[COL_ROUTE, i] := cboRoute.Text + TAB + cboRoute.ItemID + TAB + x;
+end;
+
+procedure TfrmODMedComplex.cboRouteExit(Sender: TObject);
+begin
+  inherited;
+  cboRouteClick(Self);
+  cboRoute.Tag := -1;
+  cboRoute.Hide;
+end;
+
+{ Schedule Editor }
+
+procedure TfrmODMedComplex.cboScheduleExit(Sender: TObject);
+begin
+  inherited;
+  grdDoses.Cells[COL_SCHEDULE, cboSchedule.Tag] := cboSchedule.Text;
+  cboSchedule.Tag := -1;
+  cboSchedule.Hide;
+end;
+
+{ Duration Editor }
+
+procedure TfrmODMedComplex.pnlDaysEnter(Sender: TObject);
+begin
+  inherited;
+  txtDays.SetFocus;
+end;
+
+procedure TfrmODMedComplex.pnlDaysExit(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  x := txtDays.Text;
+  if Length(x) > 0 then x := x + ' day(s)';
+  x := x + TAB + txtDays.Text;
+  grdDoses.Cells[COL_DURATION, pnlDays.Tag] := x;
+  pnlDays.Tag := -1;
+  pnlDays.Hide;
+end;
+
+procedure TfrmODMedComplex.txtDaysChange(Sender: TObject);
+begin
+  inherited;
+  if txtDays.Text = '0' then txtDays.Text := '';
+end;
+
+{ Command Buttons }
+
+procedure TfrmODMedComplex.cmdInsertClick(Sender: TObject);
+var
+  i: Integer;
+  x0, x1, x2: string;
+begin
+  inherited;
+  cmdInsert.SetFocus;                            // make sure exit events for editors fire
+  with grdDoses do
+  begin
+    if Row < 1 then Exit;
+    x0 := TAB + TAB + ValFor(VAL_MISC, Row);
+    x1 := grdDoses.Cells[COL_ROUTE,    Row];
+    x2 := grdDoses.Cells[COL_SCHEDULE, Row];
+    RowCount := RowCount + 1;
+    { move rows down }
+    for i := Pred(RowCount) downto Succ(Row) do Rows[i] := Rows[i-1];
+    Rows[Row].Clear;
+    Cells[COL_INSTRUCT, Row] := x0;
+    Cells[COL_ROUTE,    Row] := x1;
+    Cells[COL_SCHEDULE, Row] := x2;
+    Col := COL_INSTRUCT;
+    ShowEditor(COL_INSTRUCT, Row, #0);
+  end;
+end;
+
+procedure TfrmODMedComplex.cmdRemoveClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  cmdRemove.SetFocus;                            // make sure exit events for editors fire
+  with grdDoses do if (Row > 0) and (RowCount > 2) then
+  begin
+    { move rows up }
+    for i := Row to RowCount - 2 do Rows[i] := Rows[i+1];
+    RowCount := RowCount - 1;
+    Rows[RowCount].Clear;
+  end;
+end;
+
+procedure TfrmODMedComplex.Validate(var AnErrMsg: string);
+var
+  i: Integer;
+  RouteID, RouteAbbr: string;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  AnErrMsg := '';
+  with grdDoses do for i := 1 to Pred(RowCount) do
+  begin
+    if Length(ValFor(VAL_INSTR, i)) > 0 then
+    begin
+      if Pos('&', cboInstruct.Text) > 0 then SetError(IntToStr(i) + TX_NO_AMPER);
+      if ValFor(COL_ROUTE,    i) = ''   then SetError(IntToStr(i) + TX_NO_ROUTE);
+      if ValFor(COL_SCHEDULE, i) = ''   then SetError(IntToStr(i) + TX_NO_SCHED);
+      if (ValFor(VAL_ROUTE,    i) = '') and (Length(ValFor(COL_ROUTE, i)) > 0) then
+      begin
+        LookupRoute(ValFor(COL_ROUTE, i), RouteID, RouteAbbr);
+        if RouteID = '0'
+          then SetError(ValFor(COL_ROUTE, i) + TX_NF_ROUTE)
+          else Cells[COL_ROUTE, i] := ValFor(COL_ROUTE, i) + TAB + RouteID + TAB + RouteAbbr;
+      end; {if ValFor}
+    end; {if Length}
+  end; {with grdDoses...for i}
+end;
+
+procedure TfrmODMedComplex.cmdOKClick(Sender: TObject);
+var
+  ErrMsg: string;
+begin
+  inherited;
+  cmdOK.SetFocus;                                // make sure exit events for editors fire
+  Validate(ErrMsg);
+  if ShowMsgOn(Length(ErrMsg) > 0, ErrMsg, 'Error') then Exit;
+  ModalResult := mrOK;
+end;
+
+procedure TfrmODMedComplex.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+{ Test Stuff }
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedFA.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedFA.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedFA.dfm	(revision 1676)
@@ -0,0 +1,82 @@
+inherited frmODMedFA: TfrmODMedFA
+  Left = 333
+  Top = 258
+  Caption = 'Formulary Alternatives'
+  ClientHeight = 178
+  ClientWidth = 308
+  FormStyle = fsStayOnTop
+  OnCreate = FormCreate
+  ExplicitWidth = 316
+  ExplicitHeight = 205
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 273
+    Height = 13
+    Caption = 'The selected drug is not in the formulary.  Alternatives are:'
+  end
+  object Label2: TStaticText [1]
+    Left = 8
+    Top = 127
+    Width = 250
+    Height = 17
+    Caption = 'Do you wish to use the selected alternative instead?'
+    TabOrder = 3
+  end
+  object lstFormAlt: TORListBox [2]
+    Left = 8
+    Top = 22
+    Width = 292
+    Height = 97
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    OnClick = lstFormAltClick
+    Caption = 'The selected drug is not in the formulary.  Alternatives are:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object cmdYes: TButton [3]
+    Left = 74
+    Top = 148
+    Width = 72
+    Height = 21
+    Caption = 'Yes'
+    Default = True
+    Enabled = False
+    TabOrder = 1
+    OnClick = cmdYesClick
+  end
+  object cmdNo: TButton [4]
+    Left = 162
+    Top = 148
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'No'
+    TabOrder = 2
+    OnClick = cmdNoClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Label2'
+        'Status = stsDefault')
+      (
+        'Component = lstFormAlt'
+        'Status = stsDefault')
+      (
+        'Component = cmdYes'
+        'Status = stsDefault')
+      (
+        'Component = cmdNo'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedFA'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedFA.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedFA.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedFA.pas	(revision 1676)
@@ -0,0 +1,107 @@
+unit fODMedFA;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORCtrls, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmODMedFA = class(TfrmAutoSz)
+    Label1: TLabel;
+    lstFormAlt: TORListBox;
+    Label2: TStaticText;
+    cmdYes: TButton;
+    cmdNo: TButton;
+    procedure lstFormAltClick(Sender: TObject);
+    procedure cmdYesClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdNoClick(Sender: TObject);
+  private
+    { Private declarations }
+    FSelected: string;
+  public
+    { Public declarations }
+  end;
+
+procedure SelectFormularyAlt(AnIEN: Integer; var ADrug, AnOI: Integer;
+  var ADrugName, AnOIName: string; PSType: Char);
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase;
+
+const
+  TX_NO_FORM_ALT = 'This drug is not in the formulary!' + CRLF +
+                   'There are no formulary alternatives entered for this item.' + CRLF +
+                   'Please consult with your pharmacy before ordering this item.';
+  TC_NO_FORM_ALT = 'No Formulary Alternatives';
+
+procedure SelectFormularyAlt(AnIEN: Integer; var ADrug, AnOI: Integer;
+  var ADrugName, AnOIName: string; PSType: Char);
+var
+  frmODMedFA: TfrmODMedFA;
+  FormAltList: TStringList;
+begin
+  ADrug := 0;
+  AnOI  := 0;
+  ADrugName := '';
+  AnOIName  := '';
+  FormAltList := TStringList.Create;
+  try
+    LoadFormularyAlt(FormAltList, AnIEN, PSType);
+    if FormAltList.Count > 0 then
+    begin
+      frmODMedFA := TfrmODMedFA.Create(Application);
+      try
+        ResizeFormToFont(TForm(frmODMedFA));
+        with frmODMedFA do
+        begin
+          FastAssign(FormAltList, lstFormAlt.Items);
+          ShowModal;
+          if Length(FSelected) > 0 then
+          begin
+            ADrug := StrToIntDef(Piece(FSelected, U, 1), 0);
+            AnOI  := StrToIntDef(Piece(FSelected, U, 4), 0);
+            ADrugName := Piece(FSelected, U, 2);
+            AnOIName  := Piece(FSelected, U, 5);
+          end;
+        end;
+      finally
+        frmODMedFA.Release;
+      end; {frmODMedFA}
+    end
+    else InfoBox(TX_NO_FORM_ALT, TC_NO_FORM_ALT, MB_OK);
+  finally
+    FormAltList.Free;
+  end; {FormAltList}
+end;
+
+procedure TfrmODMedFA.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FSelected := '';
+end;
+
+procedure TfrmODMedFA.lstFormAltClick(Sender: TObject);
+begin
+  inherited;
+  if lstFormAlt.ItemIndex > -1 then cmdYes.Enabled := True;
+end;
+
+procedure TfrmODMedFA.cmdYesClick(Sender: TObject);
+begin
+  inherited;
+  with lstFormAlt do if ItemIndex > -1 then FSelected := Items[ItemIndex];
+  Close;
+end;
+
+procedure TfrmODMedFA.cmdNoClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIV.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIV.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIV.dfm	(revision 1676)
@@ -0,0 +1,582 @@
+inherited frmODMedIV: TfrmODMedIV
+  Left = 246
+  Top = 256
+  Width = 668
+  Height = 465
+  Caption = 'Infusion Order'
+  Constraints.MinHeight = 350
+  Constraints.MinWidth = 500
+  ExplicitWidth = 668
+  ExplicitHeight = 465
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblInfusionRate: TLabel [0]
+    Left = 486
+    Top = 197
+    Width = 100
+    Height = 13
+    Caption = 'Infusion Rate (ml/hr)*'
+  end
+  object lblPriority: TLabel [1]
+    Left = 8
+    Top = 238
+    Width = 35
+    Height = 13
+    Caption = 'Priority*'
+  end
+  object lblComponent: TLabel [2]
+    Left = 214
+    Top = 7
+    Width = 85
+    Height = 13
+    Caption = 'Solution/Additive*'
+  end
+  object lblAmount: TLabel [3]
+    Left = 328
+    Top = 7
+    Width = 84
+    Height = 13
+    Caption = 'Volume/Strength*'
+    WordWrap = True
+  end
+  object lblComments: TLabel [4]
+    Left = 214
+    Top = 107
+    Width = 49
+    Height = 13
+    Caption = 'Comments'
+  end
+  object lblLimit: TLabel [5]
+    Left = 185
+    Top = 238
+    Width = 165
+    Height = 13
+    Caption = 'Duration or Total Volume (Optional)'
+  end
+  object Label1: TLabel [6]
+    Left = 8
+    Top = 344
+    Width = 133
+    Height = 13
+    Caption = ' * Indicates a Required Field'
+  end
+  object lblRoute: TLabel [7]
+    Left = 8
+    Top = 197
+    Width = 33
+    Height = 13
+    Caption = 'Route*'
+  end
+  object lblSchedule: TLabel [8]
+    Left = 304
+    Top = 197
+    Width = 52
+    Height = 13
+    Caption = 'Schedule *'
+  end
+  object lblType: TLabel [9]
+    Left = 184
+    Top = 197
+    Width = 28
+    Height = 13
+    Caption = 'Type*'
+    ParentShowHint = False
+    ShowHint = True
+  end
+  object txtNSS: TLabel [10]
+    Left = 361
+    Top = 197
+    Width = 69
+    Height = 13
+    Caption = '(Day-of-Week)'
+    Color = clBtnFace
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clBlue
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentColor = False
+    ParentFont = False
+    OnClick = txtNSSClick
+  end
+  object txtAllIVRoutes: TLabel [11]
+    Left = 47
+    Top = 197
+    Width = 129
+    Height = 13
+    Caption = '(Expanded Med Route List)'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clBlue
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    Visible = False
+    OnClick = txtAllIVRoutesClick
+  end
+  object lblTypeHelp: TLabel [12]
+    Left = 219
+    Top = 197
+    Width = 68
+    Height = 13
+    Caption = '(IV Type Help)'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clBlue
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    ParentShowHint = False
+    ShowHint = False
+    OnClick = lblTypeHelpClick
+  end
+  object txtRate: TCaptionEdit [13]
+    Left = 486
+    Top = 211
+    Width = 91
+    Height = 21
+    AutoSelect = False
+    TabOrder = 8
+    OnChange = txtRateChange
+    Caption = 'Infusion Rate'
+  end
+  object cboPriority: TORComboBox [14]
+    Left = 8
+    Top = 252
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Priority'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 10
+    OnChange = cboPriorityChange
+    OnExit = cboPriorityExit
+    CharsNeedMatch = 1
+  end
+  object grdSelected: TCaptionStringGrid [15]
+    Left = 214
+    Top = 21
+    Width = 437
+    Height = 76
+    ColCount = 3
+    DefaultColWidth = 100
+    DefaultRowHeight = 19
+    FixedCols = 0
+    RowCount = 1
+    FixedRows = 0
+    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goDrawFocusSelected]
+    ScrollBars = ssVertical
+    TabOrder = 1
+    OnDrawCell = grdSelectedDrawCell
+    OnKeyPress = grdSelectedKeyPress
+    OnMouseDown = grdSelectedMouseDown
+    Caption = 'Selected Solution and Additives'
+  end
+  object cmdRemove: TButton [16]
+    Left = 443
+    Top = 100
+    Width = 72
+    Height = 18
+    Caption = 'Remove'
+    TabOrder = 2
+    OnClick = cmdRemoveClick
+  end
+  object memComments: TCaptionMemo [17]
+    Left = 214
+    Top = 121
+    Width = 437
+    Height = 66
+    Lines.Strings = (
+      'memComments')
+    ScrollBars = ssVertical
+    TabOrder = 13
+    OnChange = ControlChange
+    Caption = 'Comments'
+  end
+  object txtSelected: TCaptionEdit [18]
+    Tag = -1
+    Left = 416
+    Top = 45
+    Width = 45
+    Height = 19
+    Ctl3D = False
+    ParentCtl3D = False
+    TabOrder = 0
+    Text = 'meq.'
+    Visible = False
+    OnChange = txtSelectedChange
+    OnExit = txtSelectedExit
+    Caption = 'Volume'
+  end
+  object cboSelected: TCaptionComboBox [19]
+    Tag = -1
+    Left = 460
+    Top = 45
+    Width = 53
+    Height = 21
+    Style = csDropDownList
+    Ctl3D = False
+    ItemHeight = 13
+    ParentCtl3D = False
+    TabOrder = 4
+    Visible = False
+    OnChange = cboSelectedChange
+    OnExit = cboSelectedExit
+    Caption = 'Volume/Strength'
+  end
+  inherited memOrder: TCaptionMemo
+    Top = 359
+    Width = 475
+    TabStop = True
+    TabOrder = 16
+    ExplicitTop = 359
+    ExplicitWidth = 475
+  end
+  object pnlXDuration: TPanel [21]
+    Left = 184
+    Top = 252
+    Width = 150
+    Height = 21
+    BevelOuter = bvNone
+    TabOrder = 11
+    OnEnter = pnlXDurationEnter
+    object txtXDuration: TCaptionEdit
+      Left = 0
+      Top = 0
+      Width = 68
+      Height = 21
+      TabOrder = 0
+      OnChange = txtXDurationChange
+      OnExit = txtXDurationExit
+      Caption = 'Duration'
+    end
+    object cboDuration: TComboBox
+      Left = 70
+      Top = 0
+      Width = 75
+      Height = 21
+      ItemHeight = 13
+      TabOrder = 2
+      OnChange = cboDurationChange
+      OnEnter = cboDurationEnter
+    end
+  end
+  object pnlCombo: TPanel [22]
+    Left = 8
+    Top = 2
+    Width = 200
+    Height = 185
+    BevelOuter = bvNone
+    TabOrder = 25
+    object cboAdditive: TORComboBox
+      Left = 0
+      Top = 20
+      Width = 200
+      Height = 165
+      Style = orcsSimple
+      Align = alClient
+      AutoSelect = True
+      Caption = 'Additives'
+      Color = clWindow
+      DropDownCount = 11
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '20'
+      TabOrder = 0
+      OnExit = cboAdditiveExit
+      OnMouseClick = cboAdditiveMouseClick
+      OnNeedData = cboAdditiveNeedData
+      CharsNeedMatch = 1
+    end
+    object tabFluid: TTabControl
+      Left = 0
+      Top = 0
+      Width = 200
+      Height = 20
+      Align = alTop
+      TabHeight = 15
+      TabOrder = 2
+      Tabs.Strings = (
+        '   Solutions   '
+        '   Additives   ')
+      TabIndex = 0
+      TabStop = False
+      OnChange = tabFluidChange
+    end
+    object cboSolution: TORComboBox
+      Left = 0
+      Top = 20
+      Width = 200
+      Height = 165
+      Style = orcsSimple
+      Align = alClient
+      AutoSelect = True
+      Caption = 'Solutions'
+      Color = clWindow
+      DropDownCount = 11
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '20'
+      TabOrder = 1
+      OnExit = cboSolutionExit
+      OnMouseClick = cboSolutionMouseClick
+      OnNeedData = cboSolutionNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object cboRoute: TORComboBox [23]
+    Left = 8
+    Top = 211
+    Width = 168
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnChange = cboRouteChange
+    OnClick = cboRouteClick
+    OnExit = cboRouteExit
+    CharsNeedMatch = 1
+    UniqueAutoComplete = True
+  end
+  object cboSchedule: TORComboBox [24]
+    Left = 304
+    Top = 211
+    Width = 129
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 1
+    MaxLength = 0
+    Pieces = '1'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 6
+    OnChange = cboScheduleChange
+    OnClick = cboScheduleClick
+    OnExit = cboScheduleExit
+    CharsNeedMatch = 1
+    UniqueAutoComplete = True
+  end
+  object cboType: TComboBox [25]
+    Left = 184
+    Top = 211
+    Width = 114
+    Height = 21
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 5
+    OnChange = cboTypeChange
+  end
+  object chkPRN: TCheckBox [26]
+    Left = 436
+    Top = 213
+    Width = 45
+    Height = 21
+    Caption = 'PRN'
+    TabOrder = 7
+    OnClick = chkPRNClick
+  end
+  object chkDoseNow: TCheckBox [27]
+    Left = 8
+    Top = 279
+    Width = 147
+    Height = 17
+    Anchors = [akLeft]
+    Caption = 'Give Additional Dose Now'
+    Constraints.MinWidth = 147
+    TabOrder = 12
+    OnClick = chkDoseNowClick
+  end
+  object cboInfusionTime: TComboBox [28]
+    Left = 576
+    Top = 211
+    Width = 74
+    Height = 21
+    ItemHeight = 13
+    TabOrder = 9
+    OnChange = cboInfusionTimeChange
+    OnEnter = cboInfusionTimeEnter
+  end
+  object lblAdminTime: TVA508StaticText [29]
+    Name = 'lblAdminTime'
+    Left = 8
+    Top = 308
+    Width = 4
+    Height = 4
+    Alignment = taLeftJustify
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 14
+    TabStop = True
+    Visible = False
+    ShowAccelChar = True
+  end
+  object lblFirstDose: TVA508StaticText [30]
+    Name = 'lblFirstDose'
+    Left = 8
+    Top = 323
+    Width = 4
+    Height = 4
+    Alignment = taLeftJustify
+    TabOrder = 15
+    TabStop = True
+    Visible = False
+    ShowAccelChar = True
+  end
+  inherited cmdAccept: TButton
+    Left = 495
+    Top = 359
+    TabOrder = 17
+    ExplicitLeft = 495
+    ExplicitTop = 359
+  end
+  inherited cmdQuit: TButton
+    Left = 495
+    Top = 386
+    TabOrder = 18
+    ExplicitLeft = 495
+    ExplicitTop = 386
+  end
+  inherited pnlMessage: TPanel
+    Left = 56
+    Top = 349
+    TabOrder = 19
+    ExplicitLeft = 56
+    ExplicitTop = 349
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtRate'
+        'Status = stsDefault')
+      (
+        'Component = cboPriority'
+        'Status = stsDefault')
+      (
+        'Component = grdSelected'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = txtSelected'
+        'Status = stsDefault')
+      (
+        'Component = cboSelected'
+        'Status = stsDefault')
+      (
+        'Component = pnlXDuration'
+        'Status = stsDefault')
+      (
+        'Component = txtXDuration'
+        'Status = stsDefault')
+      (
+        'Component = pnlCombo'
+        'Status = stsDefault')
+      (
+        'Component = cboAdditive'
+        'Status = stsDefault')
+      (
+        'Component = tabFluid'
+        'Status = stsDefault')
+      (
+        'Component = cboSolution'
+        'Status = stsDefault')
+      (
+        'Component = cboRoute'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = cboType'
+        'Status = stsDefault')
+      (
+        'Component = chkPRN'
+        'Status = stsDefault')
+      (
+        'Component = chkDoseNow'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedIV'
+        'Status = stsDefault')
+      (
+        'Component = cboInfusionTime'
+        'Status = stsDefault')
+      (
+        'Component = cboDuration'
+        'Status = stsDefault')
+      (
+        'Component = lblAdminTime'
+        'Status = stsDefault')
+      (
+        'Component = lblFirstDose'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIV.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIV.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIV.pas	(revision 1676)
@@ -0,0 +1,1997 @@
+unit fODMedIV;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, Grids, StdCtrls, ORCtrls, ComCtrls, ExtCtrls, Buttons, Menus, IdGlobal, strUtils,
+  VA508AccessibilityManager, VAUtils, fIVRoutes;
+
+type
+  TfrmODMedIV = class(TfrmODBase)
+    lblInfusionRate: TLabel;
+    txtRate: TCaptionEdit;
+    lblComponent: TLabel;
+    lblAmount: TLabel;
+    grdSelected: TCaptionStringGrid;
+    cmdRemove: TButton;
+    lblComments: TLabel;
+    memComments: TCaptionMemo;
+    txtSelected: TCaptionEdit;
+    cboSelected: TCaptionComboBox;
+    pnlXDuration: TPanel;
+    txtXDuration: TCaptionEdit;
+    lblLimit: TLabel;
+    pnlCombo: TPanel;
+    cboAdditive: TORComboBox;
+    tabFluid: TTabControl;
+    cboSolution: TORComboBox;
+    lblPriority: TLabel;
+    cboPriority: TORComboBox;
+    Label1: TLabel;
+    cboRoute: TORComboBox;
+    cboSchedule: TORComboBox;
+    lblRoute: TLabel;
+    lblSchedule: TLabel;
+    cboType: TComboBox;
+    lblType: TLabel;
+    chkPRN: TCheckBox;
+    txtNSS: TLabel;
+    chkDoseNow: TCheckBox;
+    cboInfusionTime: TComboBox;
+    cboDuration: TComboBox;
+    lblAdminTime: TVA508StaticText;
+    lblFirstDose: TVA508StaticText;
+    txtAllIVRoutes: TLabel;
+    lblTypeHelp: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure tabFluidChange(Sender: TObject);
+    procedure  cboAdditiveNeedData(Sender: TObject; const StartFrom: string; Direction,
+      InsertAt: Integer);
+    procedure cboSolutionNeedData(Sender: TObject; const StartFrom: string; Direction,
+      InsertAt: Integer);
+    procedure cboAdditiveMouseClick(Sender: TObject);
+    procedure cboAdditiveExit(Sender: TObject);
+    procedure cboSolutionMouseClick(Sender: TObject);
+    procedure cboSolutionExit(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure txtSelectedExit(Sender: TObject);
+    procedure cboSelectedExit(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure txtSelectedChange(Sender: TObject);
+    procedure cboSelectedChange(Sender: TObject);
+    procedure grdSelectedDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
+      State: TGridDrawState);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure grdSelectedKeyPress(Sender: TObject; var Key: Char);
+    procedure grdSelectedMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure txtXDurationChange(Sender: TObject);
+    procedure pnlXDurationEnter(Sender: TObject);
+    procedure txtXDurationExit(Sender: TObject);
+    procedure cboScheduleChange(Sender: TObject);
+    procedure cboTypeChange(Sender: TObject);
+    procedure cboRouteChange(Sender: TObject);
+    procedure txtRateChange(Sender: TObject);
+    procedure cboPriorityChange(Sender: TObject);
+    procedure cboPriorityExit(Sender: TObject);
+    procedure cboRouteExit(Sender: TObject);
+    procedure txtNSSClick(Sender: TObject);
+    procedure cboScheduleClick(Sender: TObject);
+    procedure chkPRNClick(Sender: TObject);
+    procedure chkDoseNowClick(Sender: TObject);
+    procedure loadExpectFirstDose;
+    procedure SetSchedule(const x: string);
+    procedure cboScheduleExit(Sender: TObject);
+    procedure cboInfusionTimeChange(Sender: TObject);
+    procedure cboDurationChange(Sender: TObject);
+    procedure cboDurationEnter(Sender: TObject);
+    procedure cboInfusionTimeEnter(Sender: TObject);
+    procedure txtAllIVRoutesClick(Sender: TObject);
+    procedure cboRouteClick(Sender: TObject);
+    procedure lblTypeHelpClick(Sender: TObject);
+  private
+    FInpatient: Boolean;
+    FNSSAdminTime: string;
+    FNSSScheduleType: string;
+    OSolIEN: integer;
+    OAddIEN: integer;
+    OSchedule: string;
+    oAdmin: string;
+    Action: integer;
+    OrderIEN: string;
+    FAdminTimeText: string;
+    JAWSON: boolean;
+    FOriginalDurationType: integer;
+    FOriginalInfusionType: integer;
+    FInitialOrderID: boolean;
+    procedure SetValuesFromResponses;
+    procedure DoSetFontSize( FontSize: integer);
+    procedure ClickOnGridCell;
+    procedure SetLimitationControl(aValue: string);
+    function CreateOtherSchedule: string;
+    function CreateOtherRoute: string;
+    procedure UpdateRoute;
+    procedure DisplayDoseNow(Status: boolean);
+    procedure UpdateDuration(SchType: string);
+    procedure ClearAllFields;
+  public
+    procedure InitDialog; override;
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure Validate(var AnErrMsg: string); override;
+    procedure SetFontSize( FontSize: integer); override;
+    function ValidateInfusionRate(Rate: string): string;
+    function IVTypeHelpText: string;
+    property NSSAdminTime: string read FNSSAdminTime write FNSSAdminTime;
+    property NSSScheduleType: string read FNSSScheduleType write FNSSScheduleType;
+  end;
+
+var
+  frmODMedIV: TfrmODMedIV;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, uConst, rODMeds, rODBase, fFrame, uCore, fOtherSchedule, rCore;
+
+const
+  TX_NO_DEA     = 'Provider must have a DEA# or VA# to order this medication';
+  TC_NO_DEA     = 'DEA# Required';
+
+type
+  TIVComponent = class
+  private
+    IEN: Integer;
+    Name: string;
+    Fluid: Char;
+    Amount: Integer;
+    Units: string;
+    Volumes: string;
+  end;
+
+const
+  TC_RESTRICT  = 'Ordering Restrictions';
+  TX_NO_BASE   = 'A solution must be selected.';
+  TX_NO_AMOUNT = 'A valid strength or volume must be entered for ';
+  TX_NO_UNITS  = 'Units must be entered for ';
+  TX_NO_RATE   = 'An infusion rate must be entered.';
+  //TX_BAD_RATE  = 'The infusion rate must be:  # ml/hr  or  text@labels per day';
+  TX_BAD_RATE =  'Infusion rate can only be up to 4 digits long or' + CRLF + 'Infusion rate must be # ml/hr or text@labels per day';
+  TX_NO_INFUSION_TIME = 'An Infusion length must be entered or the Unit of Time for the Infuse Over Time field needs to be cleared out.';
+  TX_NO_SCHEDULE = 'A schedule is required for an intermittent order.';
+  TX_BAD_SCHEDULE = 'Unable to resolve non-standard schedule.';
+  TX_NO_INFUSION_UNIT = 'Invalid Unit of Time, select either "Minutes" or "Hours" for the Infusion Length';
+  TX_BAD_ROUTE = 'Route cannot be free-text';
+  TX_LEADING_NUMERIC = 'this additive must start with a leading numeric value';
+
+(*
+  { TIVComponent methods }
+
+procedure TIVComponent.Clear;
+begin
+  IEN     := 0;
+  Name    := '';
+  Fluid   := #0;
+  Amount  := 0;
+  Units   := '';
+  Volumes := '';
+end;
+*)
+
+{ Form methods }
+
+procedure TfrmODMedIV.FormCreate(Sender: TObject);
+var
+  Restriction: string;
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  //AutoSizeDisabled := true;
+  inherited;
+  AllowQuickOrder := True;
+  CheckAuthForMeds(Restriction);
+  if Length(Restriction) > 0 then
+  begin
+    InfoBox(Restriction, TC_RESTRICT, MB_OK);
+    Close;
+    Exit;
+  end;
+  DoSetFontSize(MainFontSize);
+  FillerID := 'PSIV';                            // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'PSJI OR PAT FLUID OE';    // loads formatting info
+  StatusText('Loading Default Values');
+  CtrlInits.LoadDefaults(ODForIVFluids);         // ODForIVFluids returns TStrings with defaults
+  InitDialog;
+end;
+
+procedure TfrmODMedIV.FormDestroy(Sender: TObject);
+var
+  i: Integer;
+begin
+  with grdSelected do for i := 0 to RowCount - 1 do TIVComponent(Objects[0, i]).Free;
+  inherited;
+  frmFrame.pnlVisit.Enabled := True;
+end;
+
+procedure TfrmODMedIV.FormResize(Sender: TObject);
+var
+bottom: integer;
+begin
+  inherited;
+  with grdSelected do
+  begin
+    ColWidths[1] := Canvas.TextWidth(' 10000 ') + GetSystemMetrics(SM_CXVSCROLL);
+    ColWidths[2] := Canvas.TextWidth('meq.') + GetSystemMetrics(SM_CXVSCROLL);
+    ColWidths[0] := ClientWidth - ColWidths[1] - ColWidths[2] - 4;
+  end;
+  lblAmount.Left := grdSelected.Left + grdSelected.ColWidths[0];
+  self.cboType.SelLength := 0;
+  self.cboInfusionTime.SelLength := 0;
+  self.cboDuration.SelLength := 0;
+  bottom := self.cboPriority.Top + self.cboPriority.Height;
+  if self.chkDoseNow.Top < bottom then self.chkDoseNow.Top := bottom + 5;
+  self.txtRate.Height := self.cboInfusionTime.Height;
+  self.txtXDuration.Height := self.cboDuration.Height;
+  self.lblAdminTime.Height := TextHeightByFont(self.lblAdminTime.Font.Handle, 'A');
+  self.lblFirstDose.Height := TextHeightByFont(self.lblFirstDose.Font.Handle, 'A');
+  self.lblAdminTime.Width := TextWidthByFont(self.lblAdminTime.Font.Handle, self.lblAdminTime.Caption + '  ');
+  self.lblFirstDose.Width := TextWidthByFont(self.lblFirstDose.Font.Handle, self.lblFirstDose.Caption + '  ');
+  self.lblAdminTime.Top := self.chkDoseNow.Top + self.chkDoseNow.Height + 2;
+  self.lblFirstDose.Top := self.lblAdminTime.Top + self.lblAdminTime.Height + 2;
+  if self.Label1.Top < (self.lblFirstDose.Top + self.lblFirstDose.Height) then
+    begin
+      self.Label1.Top := self.lblFirstDose.Top + self.lblFirstDose.Height + 2;
+      self.memOrder.Top := self.Label1.Top + self.Label1.Height;
+    end;
+end;
+
+{ TfrmODBase overrides }
+
+procedure TfrmODMedIV.InitDialog;
+const
+  NOSELECTION: TGridRect = (Left: -1; Top: -1; Right: -1; Bottom: -1);
+var
+  i: Integer;
+begin
+  inherited;
+  //grdSelected.Selection := NOSELECTION;
+  //FRouteConflict := False;
+  //lblTypeHelp.Hint := IVTypeHelpText;
+  lblType.Hint := IVTypeHelpText;
+  cboType.Hint := IVTYpeHelpText;
+  with grdSelected do for i := 0 to RowCount - 1 do
+  begin
+     TIVComponent(Objects[0, i]).Free;
+     Rows[i].Clear;
+  end;
+  grdSelected.RowCount := 1;
+  //txtRate.Text := ' ml/hr';   {*kcm*}
+  with CtrlInits do
+  begin
+    SetControl(cboSolution, 'ShortList');
+    cboSolution.InsertSeparator;
+    SetControl(cboPriority, 'Priorities');
+    cboType.Items.Add('Continuous');
+    cboType.Items.Add('Intermittent');
+    cboType.ItemIndex := -1;
+    cboType.SelLength := 0;
+    //SetControl(cboRoute, 'Route');
+    if (cboRoute.ItemIndex = -1) and (cboRoute.Text <> '') then cboRoute.Text := '';
+    //SetControl(cboSchedule, 'Schedules');
+    LoadSchedules(cboSchedule.Items, patient.Inpatient);
+    //if (Patient.Inpatient) and (cboSchedule.Items.IndexOfName('Other')<0) then
+    if cboSchedule.Items.IndexOf('Other') = -1 then cboSchedule.Items.Add('OTHER');
+
+    cboSchedule.Enabled := False;
+    lblschedule.Enabled := False;
+    if cboInfusionTime.Items.Count = 0 then
+       begin
+        cboInfusionTime.Items.add('Minutes');
+        cboInfusionTime.Items.Add('Hours');
+       end;
+    cboInfusionTime.Enabled := false;
+    updateDuration('');
+    if cboDuration.Items.Count = 0 then
+      begin
+        cboDuration.Items.Add('L');
+        cboDuration.Items.Add('ml');
+        cboDuration.Items.Add('days');
+        cboDuration.Items.Add('hours');
+      end;
+    cboDuration.ItemIndex := -1;
+    cboDuration.Text := '';
+    if self.txtXDuration.Text <> '' then self.txtXDuration.Text := '';
+    txtNSS.Visible := false;
+    if (chkDoseNow.Visible = true) and (chkDoseNow.Checked = true) then chkDoseNow.Checked := false;
+    chkDoseNow.Visible := false;
+    chkPRN.Enabled := false;
+  end;
+  tabFluid.TabIndex := 0;
+  tabFluidChange(Self);            // this makes cboSolution visible
+  cboSolution.InitLongList('');
+  cboAdditive.InitLongList('');
+  JAWSON := true;
+  if ScreenReaderActive = false then
+    begin
+      lblAdminTime.TabStop := false;
+      lblFirstDose.TabStop := false;
+      memOrder.TabStop := false;
+      JAWSON := false;
+    end;
+  ActiveControl := cboSolution;  //SetFocusedControl(cboSolution);
+  StatusText('');
+  OSolIEN := 0;
+  OAddIEN := 0;
+  OSchedule := '';
+  oAdmin := '';
+  self.txtAllIVRoutes.Visible := false;
+end;
+
+function TfrmODMedIV.IVTypeHelpText: string;
+begin
+   result := 'Continuous Type:' + CRLF + '     IVs that run at a specified Rate ( __ml/hr, __mcg/kg/min, etc)' +
+             CRLF + CRLF + 'Intermittent Type:' + CRLF +
+             '     IVs administered at scheduled intervals (Q4H, QDay) or One-Time only, ' +
+             CRLF + '     over a specified time period (e.g. Infuse over 30 min.).' + CRLF + CRLF +
+             'Examples:' + CRLF + 'Continuous = Infusion/drip' + CRLF + 'Intermittent = IVP/IVPB';
+end;
+
+procedure TfrmODMedIV.lblTypeHelpClick(Sender: TObject);
+var
+str: string;
+begin
+  inherited;
+    str := IVTypeHelpText;
+    infoBox(str, 'Informational Help Text', MB_OK);
+end;
+
+
+procedure TfrmODMedIV.loadExpectFirstDose;
+var
+i: integer;
+AnIVComponent: TIVComponent;
+fAddIEN, fSolIEN, Interval, idx: integer;
+AdminTime:    TFMDateTime;
+Admin, Duration, ShowText, SchTxt, SchType, IVType: string;
+doseNow, calFirstDose: boolean;
+begin
+  idx := self.cboSchedule.ItemIndex;
+  IVType := self.cboType.Items.Strings[self.cboType.itemindex];
+  if idx = -1 then
+    begin
+      if IVType = 'Continuous' then
+        begin
+          self.lblFirstDose.Caption := '';
+          self.lblFirstDose.Visible := false;
+        end;
+      exit;
+    end;
+  doseNow := true;
+  SchType := Piece(self.cboSchedule.Items.Strings[idx],U,3);
+  if self.EvtID > 0 then doseNow := false;
+  if (IVType = 'Continuous') or ((idx > -1) and ((SchType = 'P') or (SchType = 'O') or (SchType = 'OC')) or
+     (self.chkPRN.Checked = True))  then
+     begin
+       self.lblFirstDose.Caption := '';
+       self.lblAdminTime.Caption := '';
+       self.lblFirstDose.Visible := false;
+       self.lblAdminTime.Visible := false;
+       self.lblAdminTime.TabStop := false;
+       self.lblFirstDose.TabStop := false;
+       if (self.cboType.Text = 'Continuous') or (Piece(self.cboSchedule.Items.Strings[idx],U,3) = 'O') then doseNow := false;
+       if chkDoseNow.Checked = true then lblFirstDose.Visible := false;
+       if idx > -1 then oSchedule := Piece(self.cboSchedule.Items.Strings[idx],U,1);
+       if (self.chkPRN.Checked = True) and (idx > -1) and (LeftStr(Piece(self.cboSchedule.Items.Strings[idx],U,1),3)<> 'PRN') then
+          OSchedule := Piece(self.cboSchedule.Items.Strings[idx],U,1) + ' PRN';
+       DisplayDoseNow(doseNow);
+       exit;
+       //  end;
+     end
+  else if SchType <> 'O' then
+    begin
+      self.lblAdminTime.Visible := true;
+      if FAdminTimeText <> '' then self.lblAdminTime.Caption := 'Admin. Time: ' + FAdminTimeText
+      else if Piece(self.cboSchedule.Items[idx],U,4) <> '' then
+           self.lblAdminTime.Caption := 'Admin. Time: ' + Piece(self.cboSchedule.Items[idx],U,4)
+      else self.lblAdminTime.Caption := 'Admin. Time: Not Defined';
+    end;
+ DisplayDoseNow(doseNow);
+ if chkDoseNow.Checked = true then
+   begin
+     lblFirstDose.Visible := false;
+     Exit;
+   end;
+ self.lblFirstDose.Visible := True;
+ fSolIEN := 0;
+ fAddIEN := 0;
+ for i := 0 to self.grdSelected.RowCount - 1 do
+  begin
+   AniVComponent := TIVComponent(self.grdSelected.Objects[0, i]);
+   if AnIVComponent = nil then Continue;
+   if (AnIVComponent.Fluid = 'B') and (fSolIEN = 0) then fSolIEN := AnIVComponent.IEN;
+   if (AnIVComponent.Fluid = 'A') and (fAddIEN = 0) then fAddIEN := AnIVComponent.IEN;
+   if (fSolIEN > 0) and (fAddIEN > 0) then break;
+  end;
+  SchTxt := self.cboSchedule.Text;
+  Admin := '';
+  if (self.lblAdminTime.visible = True) and (self.lblAdminTime.Caption <> '') then
+    begin
+      Admin := Copy(self.lblAdminTime.Caption,  14, (Length(self.lblAdminTime.Caption)-1));
+      if not (Admin[1] in ['0'..'9']) then Admin := '';
+    end;
+  if (fSolIEN = oSolIEN) and (fAddIEN = oAddIEN) and (OSchedule = SchTxt) and (oAdmin = Admin) then CalFirstDose := false
+  else
+    begin
+      CalFirstDose := True;
+      oSolIEN := fSolIEN;
+      oAddIEN := fAddIEN;
+      oSchedule := SchTxt;
+      oAdmin := Admin;
+    end;
+  if CalFirstDose = True then
+  begin
+    if fAddIEN > 0 then LoadAdminInfo(';' + schTxt, fAddIEN, ShowText, AdminTime, Duration, Admin)
+    else LoadAdminInfo(';' + schTxt, fSolIEN, ShowText, AdminTime, Duration, Admin);
+    if AdminTime > 0 then
+      begin
+        ShowText := 'Expected First Dose: ';
+        Interval := Trunc(FMDateTimeToDateTime(AdminTime) - FMDateTimeToDateTime(FMToday));
+        case Interval of
+        0: ShowText := ShowText + 'TODAY ' + FormatFMDateTime('(mmm dd, yy) at hh:nn', AdminTime);
+        1: ShowText := ShowText + 'TOMORROW ' + FormatFMDateTime('(mmm dd, yy) at hh:nn', AdminTime);
+        else ShowText := ShowText + FormatFMDateTime('mmm dd, yy at hh:nn', AdminTime);
+      end;
+    end;
+    self.lblFirstDose.Caption := ShowText;
+  end;
+  if (self.lblFirstDose.Visible = true) and (self.lblFirstDose.Caption <> '') and (JAWSON = true) then self.lblFirstDose.TabStop := true
+  else self.lblFirstDose.TabStop := false;
+  if (self.lblAdminTime.Visible = true) and (self.lblAdminTime.Caption <> '') and (JAWSON = true) then self.lblAdminTime.TabStop := true
+  else self.lblAdminTime.TabStop := false;
+end;
+
+procedure TfrmODMedIV.Validate(var AnErrMsg: string);
+var
+  DispWarning, ItemOK, Result: Boolean;
+  LDec,RDec,x, tempStr, iunit, infError: string;
+  digits, i, j, Len, temp, Value: Integer;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  with grdSelected do
+  begin
+    ItemOK := False;
+    for i := 0 to RowCount - 1 do
+      if (Objects[0,i] <> nil) and (TIVComponent(Objects[0, i]).Fluid = 'B') then ItemOK := True;
+    if (not ItemOK) and ((self.cboType.ItemIndex = -1) or (MixedCase(self.cboType.Items.Strings[self.cboType.ItemIndex]) = 'Continuous')) then
+        SetError(TX_NO_BASE);
+    for i := 0 to RowCount - 1 do
+    begin
+      if (Objects[0, i] <> nil) and ((Length(Cells[1, i]) = 0) or (StrToFloat(Cells[1,i])=0))
+        then SetError(TX_NO_AMOUNT + Cells[0, i]);
+      if (Objects[0, i] <> nil) and (Length(Cells[2, i]) = 0)
+        then SetError(TX_NO_UNITS + Cells[0, i]);
+      if (Objects[0,i] <> nil) and (TIVComponent(Objects[0, i]).Fluid = 'A') then
+        begin
+          temp := Pos('.', Cells[1, i]);
+          if temp > 0 then
+            begin
+              tempStr := Cells[1, i];
+               if temp = 1 then
+                 begin
+                   SetError(cells[0, i] + TX_LEADING_NUMERIC);
+                   Exit;
+                 end;
+              for j := 1 to temp -1 do if not (tempStr[j] in ['0'..'9']) then
+                begin
+                  SetError(cells[0, i] + TX_LEADING_NUMERIC);
+                  Exit;
+                end;
+            end;
+        end;
+  end;
+  end;
+  if Pos(U, self.memComments.Text) > 0 then SetError('Comments cannot contain a "^".');  
+  if cboSchedule.ItemIndex > -1 then updateDuration(Piece(cboSchedule.Items.Strings[cboSchedule.itemIndex], U, 3));
+  if self.cboPriority.Text = '' then SetError('Priority is required');
+  if (cboRoute.ItemIndex = -1) and (cboRoute.Text <> '') then SetError(TX_BAD_ROUTE);
+  if (cboRoute.ItemIndex > -1) and (cboRoute.ItemIndex = cboRoute.Items.IndexOf('OTHER')) then
+      SetError('A valid route must be selected');
+  if self.cboRoute.Text = '' then SetError('Route is required');
+  if (self.txtXDuration.Text <> '') and (self.cboduration.Items.IndexOf(SELF.cboDuration.Text) = -1) then
+      SetError('A valid duration type is required');
+  if (self.txtXDuration.Text = '') and (self.cboduration.Items.IndexOf(SELF.cboDuration.Text) > -1) then
+     SetError('Cannot have a duration type without a duration value');
+
+  if self.cboType.ItemIndex = -1 then
+    begin
+      SetError('IV Type is required');
+      Exit;
+    end;
+  if MixedCase(self.cboType.Items.Strings[self.cboType.ItemIndex]) = 'Continuous' then
+     begin
+      if Length(txtRate.Text) = 0 then SetError(TX_NO_RATE) else
+        begin
+          x := Trim(txtRate.Text);
+          if pos('@', X) > 0 then
+            begin
+            LDec := Piece(x, '@', 1);
+            RDec := Piece(x, '@', 2);
+            if (Length(RDec) = 0) or (Length(RDec) > 2) then x := '';
+            end
+          else if Pos('.',X)>0 then
+            begin
+              LDec := Piece(x, '.', 1);
+              RDec := Piece(x, '.', 2);
+              if Length(LDec) = 0 then SetError('Infusion Rate required a leading numeric value');
+              if Length(RDec) > 1 then SetError('Infusion Rate cannot exceed one decimal place');
+            end
+            else if LeftStr(txtRate.Text, 1) = '0' then
+               SetError('Infusion Rate cannot start with a zero.');
+          if ( Pos('@',x)=0) then
+            begin
+              if (Length(x) > 4) then
+                begin
+                  seterror(TX_BAD_RATE);
+                  exit;
+                end;
+              for i := 1 to Length(x) do
+                begin
+                  if  not (x[i] in ['0'..'9']) and (x[i] <> '.') then
+                    begin
+                      SetError(TX_BAD_RATE);
+                      exit;
+                    end;
+                end;
+            end;
+          if (pos('ml/hr', X) = 0) and (Length(x) > 0) and (pos('@', X) = 0) then X := X + ' ml/hr';
+          if Length(x) = 0 then SetError(TX_BAD_RATE) else Responses.Update('RATE', 1, x, x);
+        end;
+      if cboduration.text = 'doses' then SetError('Continuous Orders cannot have "doses" as a duration type');
+    end
+  else if MixedCase(self.cboType.Items.Strings[self.cboType.ItemIndex]) = 'Intermittent' then
+     begin
+      if (cboInfusionTime.ItemIndex = -1) and (txtRate.Text <> '') then SetError(TX_NO_INFUSION_UNIT);
+      if (txtRate.Text = '') and (cboInfusionTime.ItemIndex > -1) then SetError(TX_NO_INFUSION_TIME);
+      if (txtRate.Text <> '') then
+        begin
+          infError := '';
+          InfError := ValidateInfusionRate(txtRate.Text);
+          if infError <> '' then SetError(InfError);
+          Len := Length(txtRate.Text);
+          iunit := MixedCase(self.cboInfusionTime.Items.Strings[cboInfusionTime.ItemIndex]);
+          if (iunit = 'Minutes') and (Len > 4) then setError('Infuse Over Time cannot exceed 4 spaces for ' + iunit)
+          else if (iunit = 'Hours') and (Len > 2) then setError('Infuse Over Time cannot exceed 2 spaces for ' + iunit);
+        end;
+      if (cboSchedule.ItemIndex = -1) and (cboSchedule.Text = '')  then SetError(TX_NO_SCHEDULE);
+      if (cboSchedule.ItemIndex = -1) and (cboSchedule.Text <> '') then SetError(TX_BAD_SCHEDULE);
+    end;
+  if txtXDuration.Text = '' then
+    begin
+      if AnErrMsg = '' then self.FInitialOrderID := True;
+      exit;
+    end;
+  Len := Length(txtXDuration.Text);
+  if LeftStr(txtXDuration.Text,1) <> '.' then
+    begin
+      DispWarning := false;
+      Digits := 2;
+      if cboDuration.text = 'ml' then digits := 4;
+      if ((cboDuration.text = 'days') or (cboDuration.text = 'hours')) and (Len > digits) then
+          DispWarning := true
+      else if (cboduration.text = 'ml') and (Len > digits) then  DispWarning := true
+      else if (cboduration.text = 'L') and (Len > digits) and (Pos('.',txtXDuration.Text) = 0) then DispWarning := True;
+      if DispWarning = true then SetError('Duration for ' + cboduration.text + ' cannot be greater than ' + InttoStr(digits) + ' digits.');
+    end;
+  if (Pos('.', txtXDuration.Text)>0)  then
+  begin
+    SetError('Invalid Duration, please enter a whole numbers for a duration.');
+  end
+  else if LeftStr(txtXDuration.text, 1) = '0' then
+       SetError('Duration cannot start with a zero.');
+  if (cboduration.text = 'doses') then
+     begin
+       if TryStrToInt(txtXDuration.Text, Value) = false then
+         SetError('Duration with a unit of "doses" must be a whole number between 0 and 2000000')
+       else if (Value < 0) or (Value > 2000000) then
+         SetError('Duration with a unit of "doses" must be greater then 0 and less then 2000000');
+     end;
+  if AnErrMsg = '' then self.FInitialOrderID := True;
+  
+end;
+
+function TFrmODMedIV.ValidateInfusionRate(Rate: string): string;
+var
+Temp: Boolean;
+i: integer;
+begin
+  Temp := False;
+  if Pos('.',Rate) >0 then
+    begin
+      Result := 'Infuse Over Time can only be a whole number';
+      exit;
+    end
+  else if LeftStr(Rate, 1) = '0' then Result := 'Infuse Over Time cannot start with a zero.';
+  for i := 1 to Length(Rate) do if not (Rate[i] in ['0'..'9']) then Temp := True;
+  if Temp = True then Result := 'The Infusion time can only be a whole number';
+end;
+
+procedure TfrmODMedIV.SetValuesFromResponses;
+var
+  x, addRoute, tempSch, AdminTime, TempOrder, tmpSch, tempIRoute, tempRoute: string;
+  AnInstance, i, idx: Integer;
+  AResponse: TResponse;
+  AnIVComponent: TIVComponent;
+  AllIVRoute: TStringList;
+  PQO: boolean;
+begin
+  Changing := True;
+  self.FInitialOrderID := false;
+  with Responses do
+  begin
+    FInpatient := OrderForInpatient;
+    AnInstance := NextInstance('ORDERABLE', 0);
+    while AnInstance > 0 do
+    begin
+      AResponse := FindResponseByName('ORDERABLE', AnInstance);
+      if AResponse <> nil then
+      begin
+        x := AmountsForIVFluid(StrToIntDef(AResponse.IValue, 0), 'B');
+        AnIVComponent := TIVComponent.Create;
+        AnIVComponent.IEN     := StrToIntDef(AResponse.IValue, 0);
+        if not FInpatient then
+        begin
+          if DEACheckFailedForIVOnOutPatient(AnIVComponent.IEN,'S') then
+          begin
+            InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+            cboAdditive.Text := '';
+            AbortOrder := True;
+            Exit;
+          end;
+        end else
+        begin
+          if DEACheckFailed(AnIVComponent.IEN, FInpatient) then
+          begin
+            InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+            cboAdditive.Text := '';
+            AbortOrder := True;
+            Exit;
+          end;
+        end;
+        AnIVComponent.Name    := AResponse.EValue;
+        AnIVComponent.Fluid   := 'B';
+        AnIVComponent.Amount  := StrToIntDef(Piece(x, U, 2), 0);
+        AnIVComponent.Units   := Piece(x, U, 1);
+        AnIVComponent.Volumes := Copy(x, Pos(U, x) + 1, Length(x));
+        with grdSelected do
+        begin
+          if Objects[0, RowCount - 1] <> nil then RowCount := RowCount + 1;
+          Objects[0, RowCount - 1] := AnIVComponent;
+          Cells[0, RowCount - 1] := AnIVComponent.Name;
+          if AnIVComponent.Amount <> 0 then
+            Cells[1, RowCount - 1] := IntToStr(AnIVComponent.Amount);
+          Cells[2, RowCount - 1] := AnIVComponent.Units;
+        end;
+      end;
+      AResponse := FindResponseByName('VOLUME', AnInstance);
+      if AResponse <> nil then with grdSelected do Cells[1, RowCount - 1] := AResponse.EValue;
+      AnInstance := NextInstance('ORDERABLE', AnInstance);
+    end; {while AnInstance - ORDERABLE}
+    AnInstance := NextInstance('ADDITIVE', 0);
+    while AnInstance > 0 do
+    begin
+      AResponse := FindResponseByName('ADDITIVE', AnInstance);
+      if AResponse <> nil then
+      begin
+        x := AmountsForIVFluid(StrToIntDef(AResponse.IValue, 0), 'A');
+        AnIVComponent := TIVComponent.Create;
+        AnIVComponent.IEN     := StrToIntDef(AResponse.IValue, 0);
+        if not FInpatient then
+        begin
+          if DEACheckFailedForIVOnOutPatient(AnIVComponent.IEN,'A') then
+          begin
+            InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+            cboAdditive.Text := '';
+            AbortOrder := True;
+            Exit;
+          end;
+        end else
+        begin
+          if DEACheckFailed(AnIVComponent.IEN, FInpatient) then
+          begin
+            InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+            cboAdditive.Text := '';
+            AbortOrder := true;
+            Exit;
+          end;
+        end;
+        AnIVComponent.Name    := AResponse.EValue;
+        AnIVComponent.Fluid   := 'A';
+        AnIVComponent.Amount  := StrToIntDef(Piece(x, U, 2), 0);
+        AnIVComponent.Units   := Piece(x, U, 1);
+        AnIVComponent.Volumes := Copy(x, Pos(U, x) + 1, Length(x));
+        with grdSelected do
+        begin
+          if Objects[0, RowCount - 1] <> nil then RowCount := RowCount + 1;
+          Objects[0, RowCount - 1] := AnIVComponent;
+          Cells[0, RowCount - 1] := AnIVComponent.Name;
+          if AnIVComponent.Amount <> 0 then
+            Cells[1, RowCount - 1] := IntToStr(AnIVComponent.Amount);
+          Cells[2, RowCount - 1] := AnIVComponent.Units;
+        end;
+      end;
+      AResponse := FindResponseByName('STRENGTH', AnInstance);
+      if AResponse <> nil then with grdSelected do Cells[1, RowCount - 1] := AResponse.EValue;
+      AResponse := FindResponseByName('UNITS', AnInstance);
+      if AResponse <> nil then with grdSelected do Cells[2, RowCount - 1] := AResponse.EValue;
+      AnInstance := NextInstance('ADDITIVE', AnInstance);
+    end; {while AnInstance - ADDITIVE}
+    SetControl(cboType, 'TYPE', 1);
+    if self.grdSelected.RowCount > 0 then self.txtAllIVRoutes.Visible := True;    
+    updateRoute;
+    AResponse := FindResponseByName('ROUTE', 1);
+    if AResponse <> nil then
+      begin
+        tempRoute := AResponse.EValue;
+        if tempRoute <> '' then
+          begin
+           idx := self.cboRoute.Items.IndexOf(tempRoute);
+           if idx > -1 then self.cboRoute.ItemIndex := idx
+           else begin
+             tempIRoute := AResponse.IValue;
+             if tempIRoute <> '' then
+               begin
+                AllIVRoute := TStringList.Create;
+                LoadAllIVRoutes(AllIVRoute);
+                idx := -1;
+                for i := 0 to AllIVRoute.Count - 1 do
+                  begin
+                    if Piece(AllIVRoute.Strings[i], U, 1) = tempIRoute then
+                      begin
+                        idx := i;
+                        break;
+                      end;
+                  end;
+                if idx > -1 then
+                  begin
+                    self.cboRoute.Items.Add(AllIVRoute.Strings[idx]);
+                    idx := self.cboRoute.Items.IndexOf(tempRoute);
+                    if idx > -1 then self.cboRoute.ItemIndex := idx;
+                  end;
+                  AllIVRoute.Free;
+                //if Pos(U, tempIRoute) = 0 then tempIRoute := tempIRoute + U + tempRoute;
+                //self.cboRoute.Items.Add(tempIRoute);
+                //idx := self.cboRoute.Items.IndexOf(tempRoute);
+                //if idx > -1 then self.cboRoute.ItemIndex := idx;
+               end;
+           end;
+          end;
+      end;
+    //SetControl(cboRoute, 'ROUTE', 1);
+    if (cboRoute.ItemIndex = -1) and (cboRoute.Text <> '') then cboRoute.Text := '';
+    if self.cboType.Text = 'Intermittent' then
+      begin
+         lblInfusionRate.Caption := 'Infuse Over Time (Optional)';
+         lblSchedule.Enabled := True;
+         cboschedule.Enabled := True;
+         //if popDuration.Items.IndexOf(popDoses) = -1 then popDuration.Items.Add(popDoses);
+         if cboDuration.Items.IndexOf('doses') = -1 then cboDuration.Items.Add('doses');         
+         txtNss.Visible := true;
+         chkDoseNow.Visible := true;
+         chkPRN.Enabled := True;
+         tempSch := '';
+         AdminTime := '';
+         AResponse := FindResponseByName('SCHEDULE', 1);
+         if AResponse <> nil then tempSch := AResponse.EValue;
+         lblAdminTime.Visible := True;
+         lblAdminTime.Hint := AdminTimeHelpText;
+         lblAdminTime.ShowHint := True;
+         //AResponse := Responses.FindResponseByName('ADMIN', 1);
+         //if AResponse <> nil then AdminTime := AResponse.EValue;
+         //if Action = Order_Copy then FOriginalAdminTime := AdminTime;
+         SetSchedule(tempSch);
+         //if (cboSchedule.ItemIndex > -1) then lblAdminTime.Caption := 'Admin. Time: ' + Piece(cboSchedule.Items.strings[cboSchedule.itemindex],U,5);
+         //if (cboSchedule.ItemIndex > -1) and (Piece(lblAdminTime.Caption, ':' ,2) = ' ') then lblAdminTime.Caption := 'Admin. Time: ' + AdminTime;
+         if (Action in [ORDER_COPY, ORDER_EDIT])  then
+           begin
+            TempOrder := Piece(OrderIEN,';',1);
+            TempOrder := Copy(tempOrder, 2, Length(tempOrder));
+             if DifferentOrderLocations(tempOrder, Patient.Location) = false then
+              begin
+                AResponse := Responses.FindResponseByName('ADMIN', 1);
+                if AResponse <> nil then AdminTime := AResponse.EValue;
+                //lblAdminTime.Caption := 'Admin. Time: ' + AdminTime;
+                if cboSchedule.ItemIndex > -1 then
+                  begin
+                    tmpSch := cboSchedule.Items.Strings[cboSchedule.itemindex];
+                    setPiece(tmpSch,U,4,AdminTime);
+                    cboSchedule.Items.Strings[cboSchedule.ItemIndex] := tmpSch;
+                  end;
+              end;
+           end;
+         //if Piece(lblAdminTime.Caption, ':' ,2) = ' ' then lblAdminTime.Caption := 'Admin. Time: Not Defined';
+         SetControl(txtRate,     'RATE',    1);
+         cboInfusionTime.Enabled := true;
+         PQO := false;
+         if Pos('INFUSE OVER',UpperCase(txtRate.Text)) > 0 then
+           begin
+             txtRate.Text := Copy(txtRate.Text,Length('Infuse over ')+1,Length(txtRate.text));
+             PQO := True;
+           end;
+         if Pos('MINUTE',UpperCase(txtRate.Text))>0 then
+           begin
+             cboInfusionTime.Text := 'Minutes';
+             cboInfusionTime.itemindex := 0;
+             //txtRate.Text := Copy(txtRate.Text,Length('Infuse over ')+1,Length(txtRate.text));
+             txtRate.Text := Copy(txtRate.Text, 1, Length(txtRate.Text) - 8);
+           end
+         else if Pos('HOUR',UpperCase(txtRate.Text))>0 then
+           begin
+             cboInfusionTime.Text := 'Hours';
+             cboInfusionTime.ItemIndex := 1;
+             //txtRate.Text := Copy(txtRate.Text,Length('Infuse over ')+1,Length(txtRate.text));
+             txtRate.Text := Copy(txtRate.Text, 1, Length(txtRate.Text) - 6);
+           end
+         else if (txtRate.Text <> '') and (PQO = false) and (ValidateInfusionRate(txtRate.Text) ='') then
+           begin
+             cboInfusionTime.Text := 'Minutes';
+             cboInfusionTime.itemindex := 0;
+           end;
+      end
+    else
+      begin
+        lblSchedule.Enabled := false;
+        cboSchedule.ItemIndex := -1;
+        cboSchedule.Enabled := false;
+        if chkDoseNow.Visible = true then  chkDoseNow.Checked := false;
+        chkDoseNow.Visible := false;
+        txtNSS.Visible := false;
+        cboInfusionTime.ItemIndex := -1;
+        cboInfusionTime.Text := '';
+        cboInfusionTime.Enabled := false;
+        chkPRN.Checked := false;
+        chkPRN.Enabled := false;
+        txtRate.Text := '';
+        cboDuration.ItemIndex := -1;
+        cboDuration.Text := '';
+        txtXDuration.Text := '';
+        SetControl(txtRate,     'RATE',    1);
+        if LowerCase(Copy(ReverseStr(txtRate.Text), 1, 6)) = 'rh/lm '             {*kcm*}
+          then txtRate.Text := Copy(txtRate.Text, 1, Length(txtRate.Text) - 6);
+      end;
+    SetControl(cboPriority, 'URGENCY', 1);
+    SetControl(memComments, 'COMMENT', 1);
+
+    AnInstance := NextInstance('DAYS', 0);
+    if AnInstance > 0 then
+    begin
+      AResponse := FindResponseByName('DAYS', AnInstance);
+      if AResponse <> nil then
+          SetLimitationControl(AResponse.EValue);
+    end;
+  end; {if...with Responses}
+  Changing := False;
+  if self.cboSchedule.ItemIndex > -1 then updateDuration(Piece(cboSchedule.Items.Strings[cboSchedule.itemindex],U,3));
+  loadExpectFirstDose;
+  ControlChange(Self);
+end;
+
+procedure TfrmODMedIV.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  inherited;
+  Action := OrderAction;
+  OrderIEN := id;
+  self.FInitialOrderID := True;
+  if self.EvtID > 0 then FAdminTimeText := 'To Be Determined';
+  if (isIMO) or ((patient.Inpatient = true) and (encounter.Location <> patient.Location)) and (FAdminTimeText = '') then
+      FAdminTimeText := 'Not defined for Clinic Locations';
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then
+    begin
+
+      SetValuesFromResponses;
+    end;
+end;
+
+{ tabFluid events }
+
+procedure TfrmODMedIV.tabFluidChange(Sender: TObject);
+begin
+  inherited;
+  case TabFluid.TabIndex of
+  0: begin
+       cboSolution.Visible := True;
+       cboAdditive.Visible := False;
+     end;
+  1: begin
+       cboAdditive.Visible := True;
+       cboSolution.Visible := False;
+     end;
+  end;
+  if cboSolution.Visible then
+    ActiveControl := cboSolution;
+  if cboAdditive.Visible then
+    ActiveControl := cboAdditive;
+end;
+
+{ cboSolution events }
+
+procedure TfrmODMedIV.cboSolutionNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+var
+  CurString: string;
+begin
+  inherited;
+  if (Direction = 1) then
+    CurString := AnsiUpperCase(StartFrom) + '          ';
+  cboSolution.ForDataUse(SubSetOfOrderItems(CurString, Direction, 'S.IVB RX'));
+end;
+
+procedure TfrmODMedIV.cbotypeChange(Sender: TObject);
+begin
+  inherited;
+  //if (self.cbotype.Text = 'Intermittent') or (self.cboType.itemIndex = 1) then
+  if (self.cboType.itemIndex = 1) then
+    begin
+      cboSchedule.ItemIndex := -1;
+      lblAdminTime.Caption := '';
+      lblAdminTime.Visible := false;
+      lblschedule.Enabled := True;
+      cboSchedule.Enabled := True;
+      txtNSS.Visible := true;
+      chkDoseNow.Checked := false;
+      chkDoseNow.Visible := true;
+      chkPRN.Checked := false;
+      chkPRN.Enabled := True;
+      lblInfusionRate.Caption := 'Infuse Over Time (Optional)';
+      cboInfusionTime.Enabled := true;
+      cboDuration.Items.Add('doses');
+    end
+  //else if (self.cbotype.Text = 'Continuous') or (self.cboType.itemIndex = 0) then
+  else
+    begin
+      lblschedule.Enabled := False;
+      cboSchedule.ItemIndex := -1;
+      cboSchedule.Enabled := False;
+      txtNSS.Visible := false;
+      chkPRN.Checked := false;
+      chkPRN.Enabled := false;
+      if chkDoseNow.Visible = true then chkDoseNow.Checked := false;
+      chkDoseNow.Visible := false;
+      lblInfusionRate.Caption := 'Infusion Rate (ml/hr)*';
+      cboInfusionTime.ItemIndex := -1;
+      cboInfusionTime.Text := '';
+      cboInfusionTime.Enabled := false;
+      lblAdminTime.Visible := false;
+      updateDuration('');
+      cboduration.Items.Delete(cboDuration.Items.IndexOf('doses'));
+    end;
+  self.txtRate.Text := '';
+  ControlChange(Sender);
+end;
+
+procedure TfrmODMedIV.chkDoseNowClick(Sender: TObject);
+Const
+  T  = '"';
+  T1 = 'By checking the "Give additional dose now" box, you have actually entered two orders for the same medication.';
+  T2 = #13#13'The first order''s administrative schedule is "';
+  T3 = #13'The second order''s administrative schedule is "';
+  T4 = #13#13'Do you want to continue?';
+  T1A = 'By checking the "Give additional dose now" box, you have actually entered a new order with the schedule "NOW"';
+  T2A = ' in addition to the one you are placing for the same medication.';
+var
+  medNm: string;
+  theSch: string;
+  //SchID: integer;
+begin
+  inherited;
+  if (chkDoseNow.Checked) then
+  begin
+    medNm := 'Test';
+    //SchID := cboSchedule.ItemIndex;
+    theSch := cboSchedule.Text;
+    if length(theSch)>0 then
+    begin
+      //if (InfoBox(T1+medNm+T+T2+theSch+T+T3+'NOW"'+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL)then
+      if (InfoBox(T1+T2+theSch+T+T3+'NOW"'+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL)then
+      begin
+        chkDoseNow.Checked := False;
+        Exit;
+      end;
+    end else
+    begin
+      //if InfoBox(T1A+T2A+medNm+T+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL then
+      if InfoBox(T1A+T2A+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL then
+      begin
+        chkDoseNow.Checked := False;
+        Exit;
+      end;
+    end;
+  end;
+  ControlChange(self);
+end;
+
+procedure TfrmODMedIV.chkPRNClick(Sender: TObject);
+begin
+  inherited;
+  ControlChange(Self);
+end;
+
+procedure TfrmODMedIV.cboSolutionMouseClick(Sender: TObject);
+var
+  AnIVComponent: TIVComponent;
+  x,routeIEN: string;
+  i: integer;
+begin
+  inherited;
+  if CharAt(cboSolution.ItemID, 1) = 'Q' then              // setup quick order
+  begin
+    //Clear pre-existing values
+    for i := 0 to self.grdSelected.RowCount do
+      begin
+         if self.grdSelected.Objects[0,i] <> nil then
+           begin
+             TIVComponent(self.grdSelected.Objects[0,i]).Free;
+             self.grdSelected.Rows[i].Clear;
+           end
+         else self.grdSelected.Rows[i].clear;
+      end;
+    self.grdSelected.RowCount := 0;
+    ControlChange(Sender);
+    Responses.QuickOrder := ExtractInteger(cboSolution.ItemID);
+    SetValuesFromResponses;
+    cboSolution.ItemIndex := -1;
+    Exit;
+  end;
+  if cboSolution.ItemIEN <= 0 then Exit;                   // process selection of solution
+  FInpatient := OrderForInpatient;
+  if not FInpatient then
+  begin
+    if DEACheckFailedForIVOnOutPatient(cboSolution.ItemIEN,'S') then
+    begin
+      InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+      cboSolution.Text := '';
+      Exit;
+    end;
+  end else
+  begin
+    if DEACheckFailed(cboSolution.ItemIEN, FInpatient) then
+    begin
+       InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+       cboSolution.Text := '';
+       Exit;
+    end;
+  end;
+  RouteIEN := Piece(cboSolution.Items.Strings[cboSolution.itemindex],U,4);
+  x := AmountsForIVFluid(cboSolution.ItemIEN, 'B');
+  AnIVComponent := TIVComponent.Create;
+  AnIVComponent.IEN     := cboSolution.ItemIEN;
+  AnIVComponent.Name    := Piece(cboSolution.Items[cboSolution.ItemIndex], U, 3);
+  AnIVComponent.Fluid   := 'B';
+  AnIVComponent.Amount  := StrToIntDef(Piece(x, U, 2), 0);
+  AnIVComponent.Units   := Piece(x, U, 1);
+  AnIVComponent.Volumes := Copy(x, Pos(U, x) + 1, Length(x));
+  cboSolution.ItemIndex := -1;
+  with grdSelected do
+  begin
+    if Objects[0, RowCount - 1] <> nil then RowCount := RowCount + 1;
+    Objects[0, RowCount - 1] := AnIVComponent;
+    Cells[0, RowCount - 1] := AnIVComponent.Name;
+    Cells[1, RowCount - 1] := IntToStr(AnIVComponent.Amount);
+    Cells[2, RowCount - 1] := AnIVComponent.Units;
+    Row := RowCount - 1;
+    if Length(Piece(AnIVComponent.Volumes, U, 2)) > 0 then Col := 1 else Col := 0;
+    if RowCount = 1 then        // switch to additives after 1st IV
+    begin
+       tabFluid.TabIndex := 1;
+       tabFluidChange(Self);
+    end;
+  end;
+  Application.ProcessMessages;         //CQ: 10157
+  ClickOnGridCell;
+  updateRoute;
+  ControlChange(Sender);
+  //updateRoute(routeIEN);
+end;
+
+procedure TfrmODMedIV.cboSolutionExit(Sender: TObject);
+begin
+  inherited;
+  if EnterIsPressed then //CQ: 15097
+    if (cboSolution.ItemIEN > 0) or
+       ((cboSolution.ItemIEN = 0) and (CharAt(cboSolution.ItemID, 1) = 'Q')) then
+      cboSolutionMouseClick(Self);
+end;
+
+{ cboAdditive events }
+
+procedure TfrmODMedIV.cboAdditiveNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+var
+  CurString: string;
+begin
+  inherited;
+  if (Direction = 1) then
+    CurString := AnsiUpperCase(StartFrom) + '          ';
+  cboAdditive.ForDataUse(SubSetOfOrderItems(CurString, Direction, 'S.IVA RX'));
+end;
+
+procedure TfrmODMedIV.cboDurationChange(Sender: TObject);
+begin
+  inherited;
+  if (FOriginalDurationType > -1) and (FOriginalDurationType <> cboDuration.ItemIndex) then
+    begin
+      self.txtXDuration.Text := '';
+      FOriginalDurationType := cboDuration.ItemIndex;
+    end;
+  if (FOriginalDurationType = -1) and (cboDuration.ItemIndex > -1) then FOriginalDurationType := cboDuration.ItemIndex;
+  controlchange(sender);
+end;
+
+procedure TfrmODMedIV.cboDurationEnter(Sender: TObject);
+begin
+  inherited;
+  FOriginalDurationType := cboDuration.ItemIndex;
+end;
+
+
+procedure TfrmODMedIV.cboInfusionTimeChange(Sender: TObject);
+begin
+  inherited;
+  if (FOriginalInfusionType > -1) and (FOriginalInfusionType <> cboInfusionTime.ItemIndex) then
+     begin
+       self.txtRate.Text := '';
+       FOriginalInfusionType := cboInfusionTime.ItemIndex;
+     end;
+  if (FOriginalInfusionType = -1) and (cboInfusionTime.ItemIndex > -1) then FOriginalInfusionType := cboInfusionTime.ItemIndex;
+  ControlChange(Sender);
+end;
+
+procedure TfrmODMedIV.cboInfusionTimeEnter(Sender: TObject);
+begin
+  inherited;
+  FOriginalInfusionType := self.cboInfusionTime.ItemIndex;
+end;
+
+procedure TfrmODMedIV.cboPriorityChange(Sender: TObject);
+begin
+  inherited;
+  ControlChange(sender);
+end;
+
+procedure TfrmODMedIV.cboPriorityExit(Sender: TObject);
+begin
+  inherited;
+  if cboPriority.Text = '' then
+    begin
+      infoBox('Priority must have a value assigned to it', 'Warning', MB_OK);
+      cboPriority.SetFocus;
+    end;
+end;
+
+procedure TfrmODMedIV.cboRouteChange(Sender: TObject);
+begin
+  inherited;
+  if cboRoute.ItemIndex = cboRoute.Items.IndexOf('OTHER') then cboRouteClick(cboRoute);
+  ControlChange(sender);
+end;
+
+procedure TfrmODMedIV.cboRouteClick(Sender: TObject);
+var
+otherRoute, temp: string;
+idx, oidx: integer;
+begin
+  inherited;
+  oidx := cboRoute.Items.IndexOf('OTHER');
+  if oidx = -1 then exit;
+  
+  if cboRoute.ItemIndex = oidx then
+    begin
+      otherRoute := CreateOtherRoute;
+      if length(otherRoute) > 1 then
+        begin
+          idx := cboRoute.Items.IndexOf(Piece(OtherRoute, U, 2));
+          if idx > -1 then
+            begin
+              temp := cboRoute.Items.Strings[idx];
+              //setPiece(temp,U,5,'1');
+              cboRoute.Items.Strings[idx] := temp;
+            end
+          else
+          begin
+             cboRoute.Items.Add(otherRoute);
+             idx := cboRoute.Items.IndexOf(Piece(OtherRoute, U, 2));
+          end;
+          cboRoute.ItemIndex := idx;
+        end
+      else
+        begin
+          cboRoute.ItemIndex := -1;
+          cboRoute.SetFocus;
+        end;
+    end;
+end;
+
+procedure TfrmODMedIV.cboRouteExit(Sender: TObject);
+begin
+  inherited;
+(*  if (cboRoute.Text <> '') and (cboRoute.ItemIndex = -1)  then
+    begin
+      infoBox(TX_BAD_ROUTE,'Warning',MB_OK);
+      cboRoute.SetFocus;
+    end; *)
+end;
+
+procedure TfrmODMedIV.cboAdditiveMouseClick(Sender: TObject);
+var
+  AnIVComponent: TIVComponent;
+  x, routeIEN: string;
+begin
+  inherited;
+  if cboAdditive.ItemIEN <= 0 then Exit;
+  FInpatient := OrderForInpatient;
+  if not FInpatient then
+  begin
+    if DEACheckFailedForIVOnOutPatient(cboAdditive.ItemIEN,'A') then
+    begin
+      InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+      cboAdditive.Text := '';
+      Exit;
+    end;
+  end else
+  begin
+    if DEACheckFailed(cboAdditive.ItemIEN, FInpatient) then
+    begin
+       InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+       cboAdditive.Text := '';
+       Exit;
+    end;
+  end;
+  routeIEN := Piece(cboAdditive.Items.Strings[cboAdditive.itemindex],U,4);
+  x := AmountsForIVFluid(cboAdditive.ItemIEN, 'A');
+  AnIVComponent := TIVComponent.Create;
+  AnIVComponent.IEN     := cboAdditive.ItemIEN;
+  AnIVComponent.Name    := Piece(cboAdditive.Items[cboAdditive.ItemIndex], U, 3);
+  AnIVComponent.Fluid   := 'A';
+  AnIVComponent.Amount  := 0;
+  AnIVComponent.Units   := Piece(x, U, 1);
+  AnIVComponent.Volumes := '';
+  cboAdditive.ItemIndex := -1;
+  with grdSelected do
+  begin
+    if Objects[0, RowCount - 1] <> nil then RowCount := RowCount + 1;
+    Objects[0, RowCount - 1] := AnIVComponent;
+    Cells[0, RowCount - 1] := AnIVComponent.Name;
+    Cells[2, RowCount - 1] := AnIVComponent.Units;
+    Row := RowCount - 1;
+    Col := 1;
+  end;
+  Application.ProcessMessages;         //CQ: 10157
+  ClickOnGridCell;
+  updateRoute;
+  ControlChange(Sender);
+  //UpdateRoute(RouteIEN);
+end;
+
+procedure TfrmODMedIV.cboAdditiveExit(Sender: TObject);
+begin
+  inherited;
+  if (cboAdditive.ItemIEN > 0) and (EnterIsPressed) then
+    cboAdditiveMouseClick(Self);
+end;
+
+{ grdSelected events }
+
+procedure TfrmODMedIV.ClearAllFields;
+begin
+  self.cboType.ItemIndex := -1;
+  self.cboType.Text := '';
+  self.memComments.Text := '';
+  self.txtRate.Text := '';
+  self.txtXDuration.text := '';
+  self.cboDuration.ItemIndex := -1;
+  self.cboDuration.Text := '';
+  self.txtAllIVRoutes.Visible := false;
+  self.FInitialOrderID := True;
+  cbotypeChange(self.cboType);
+  if self.cboroute.Items.Count > 0 then self.cboRoute.Clear;
+end;
+
+procedure TfrmODMedIV.ClickOnGridCell;
+var
+  AnIVComponent: TIVComponent;
+
+  procedure PlaceControl(AControl: TWinControl);
+  var
+    ARect: TRect;
+  begin
+    with AControl do
+    begin
+      ARect := grdSelected.CellRect(grdSelected.Col, grdSelected.Row);
+      SetBounds(ARect.Left + grdSelected.Left + 1,  ARect.Top  + grdSelected.Top + 1,
+                ARect.Right - ARect.Left + 1,       ARect.Bottom - ARect.Top + 1);
+      BringToFront;
+      Show;
+      SetFocus;
+      if AControl is TComboBox then                    //CQ: 10157
+        TComboBox(AControl).DroppedDown := True;
+    end;
+  end;
+
+begin
+  AnIVComponent := TIVComponent(grdSelected.Objects[0, grdSelected.Row]);
+  if (AnIVComponent = nil) or (grdSelected.Col = 0) then Exit;
+  // allow selection if more the 1 unit to choose from
+  if (grdSelected.Col = 2) and (Length(Piece(AnIVComponent.Units, U, 2)) > 0) then
+  begin
+    PiecesToList(AnIVComponent.Units, U, cboSelected.Items);
+    cboSelected.ItemIndex := cboSelected.Items.IndexOf(grdSelected.Cells[grdSelected.Col, grdSelected.Row]);
+    cboSelected.Tag  := (grdSelected.Col * 256) + grdSelected.Row;
+    PlaceControl(cboSelected);
+  end;
+  // allow selection if more than 1 volume to choose from
+  if (grdSelected.Col = 1) and (Length(Piece(AnIVComponent.Volumes, U, 2)) > 0) then
+  begin
+    PiecesToList(AnIVComponent.Volumes, U, cboSelected.Items);
+    cboSelected.ItemIndex := cboSelected.Items.IndexOf(grdSelected.Cells[grdSelected.Col, grdSelected.Row]);
+    cboSelected.Tag  := (grdSelected.Col * 256) + grdSelected.Row;
+    PlaceControl(cboSelected);
+  end;
+  // display text box to enter strength if the entry is an additive
+  if (grdSelected.Col = 1) and (AnIVComponent.Fluid = 'A') then
+  begin
+    txtSelected.Text := grdSelected.Cells[grdSelected.Col, grdSelected.Row];
+    txtSelected.Tag  := (grdSelected.Col * 256) + grdSelected.Row;
+    PlaceControl(txtSelected);
+  end;
+end;
+
+procedure TfrmODMedIV.txtSelectedChange(Sender: TObject);   // text editor for grid
+begin
+  inherited;
+  with txtSelected do
+  begin
+    if Tag < 0 then Exit;
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+  end;
+  ControlChange(Sender);
+end;
+
+procedure TfrmODMedIV.txtSelectedExit(Sender: TObject);
+begin
+  inherited;
+  with txtSelected do
+  begin
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+    Tag := -1;
+    Hide;
+  end;
+end;
+
+procedure TfrmODMedIV.cboScheduleChange(Sender: TObject);
+begin
+  inherited;
+   if self.txtXDuration.Enabled = true then
+     begin
+       self.txtXDuration.Text := '';
+       self.cboDuration.ItemIndex := -1;
+     end;
+   if self.cboSchedule.ItemIndex > -1 then updateDuration(Piece(cboSchedule.Items.Strings[cboSchedule.itemindex],U,3));
+  ControlChange(sender);
+end;
+
+procedure TfrmODMedIV.cboScheduleClick(Sender: TObject);
+var
+  othSch: string;
+  idx, i : integer;
+begin
+  inherited;
+  if cboSchedule.ItemIndex = cboSchedule.Items.IndexOf('Other') then
+    begin
+      othSch := CreateOtherSchedule;
+      if length(trim(othSch)) > 1 then
+        begin
+          cboSchedule.Items.Add(othSch + U + U + NSSScheduleType + U + NSSAdminTime);
+          idx := -1;
+          for I := 0 to cboSchedule.Items.Count - 1 do
+            if Piece(cboSchedule.Items.Strings[i], U, 1) = othSch then
+              begin
+                idx := i;
+                break;
+              end;
+          //idx := cboSchedule.Items.IndexOfName(othSch);
+          cboSchedule.ItemIndex := idx;
+        end;
+    end
+  else
+    begin
+      NSSAdminTime := '';
+      NSSScheduleType := '';
+    end;
+end;
+
+procedure TfrmODMedIV.cboScheduleExit(Sender: TObject);
+begin
+  inherited;
+    if (cboSchedule.ItemIndex = -1) and (cboSchedule.Text <> '') then
+    begin
+      infoBox('Please select a valid schedule from the list.'+ CRLF + CRLF +
+              'If you would like to create a Day-of-Week schedule please select ''OTHER'' from the list.',
+              'Incorrect Schedule.', MB_OK);
+      cboSchedule.Text := '';
+      cboSchedule.SetFocus;
+    end;
+end;
+
+procedure TfrmODMedIV.cboSelectedChange(Sender: TObject);   // combo editor for grid
+begin
+  inherited;
+  with cboSelected do
+  begin
+    if Tag < 0 then Exit;
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+  end;
+  ControlChange(Sender);
+end;
+
+procedure TfrmODMedIV.cboSelectedExit(Sender: TObject);
+begin
+  inherited;
+  with cboSelected do
+  begin
+    grdSelected.Cells[Tag div 256, Tag mod 256] := Text;
+    Tag := -1;
+    Hide;
+  end;
+end;
+
+procedure TfrmODMedIV.cmdRemoveClick(Sender: TObject);  // remove button for grid
+var
+  i, stRow, stRowCount: Integer;
+begin
+  inherited;
+  with grdSelected do
+  begin
+    if Row < 0 then Exit;
+    stRow := Row;
+    stRowCount := RowCount;
+    if Objects[0, Row] <> nil then TIVComponent(Objects[0, Row]).Free;
+    for i := Row to RowCount - 2 do Rows[i] := Rows[i + 1];
+    Rows[RowCount - 1].Clear;
+    RowCount := RowCount - 1;
+  end;
+  updateRoute;
+  if (stRowCount = 1) and (stRow = 0) then
+    begin
+      //self.cboRoute.ItemIndex := -1;
+      ClearAllFields;
+    end;
+  ControlChange(Sender);
+end;
+
+{ update Responses & Create Order Text }
+
+procedure TfrmODMedIV.ControlChange(Sender: TObject);
+var
+  i, CurAdd, CurBase, idx: Integer;
+  adminTime,x,xlimIn,xLimEx,eSch,iSch,iType, tmpdur, tmpSch, tmpRate: string;
+  AnIVComponent: TIVComponent;
+  FQOSchedule: TResponse;
+
+  function IsNumericRate(const x: string): Boolean;
+  var
+    i: Integer;
+  begin
+    Result := True;
+    for i := 1 to Length(x) do if not (x[i] in ['0'..'9','.']) then Result := False;
+  end;
+
+begin
+  inherited;
+  if Changing then Exit;
+  loadExpectFirstDose;
+//  FQOSchedule := TResponse.Create;
+  FQOSchedule := Responses.FindResponseByName('SCHEDULE',1);
+  if FQOSchedule <> nil then
+  begin
+    eSch := FQOSchedule.EValue;
+    iSch := FQOSchedule.IValue;
+  end;
+  //if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+  Responses.Clear;   // want this to clear even after SetupDialog in case instances don't match
+  CurAdd := 1; CurBase := 1;
+  tmpRate := '';
+  with grdSelected do for i := 0 to RowCount - 1 do
+  begin
+    AnIVComponent := TIVComponent(Objects[0, i]);
+    if AnIVComponent = nil then Continue;
+    with AnIVComponent do
+    begin
+      if Fluid = 'B' then                        // Solutions
+      begin
+        if IEN > 0                then Responses.Update('ORDERABLE', CurBase, IntToStr(IEN), Name);
+        if Length(Cells[1,i]) > 0 then Responses.Update('VOLUME',    CurBase, Cells[1,i], Cells[1,i]);
+        Inc(CurBase);
+      end; {if Fluid B}
+      if Fluid = 'A' then                        // Additives
+      begin
+        if IEN > 0                then Responses.Update('ADDITIVE', CurAdd, IntToStr(IEN), Name);
+        if Length(Cells[1,i]) > 0 then Responses.Update('STRENGTH', CurAdd, Cells[1,i], Cells[1,i]);
+        if Length(Cells[2,i]) > 0 then Responses.Update('UNITS',    CurAdd, Cells[2,i], Cells[2,i]);
+        Inc(CurAdd);
+      end; {if Fluid A}
+    end; {with AnIVComponent}
+  end; {with grdSelected}
+  x := txtRate.Text;
+  xlimIn := '';
+  xlimEx := '';
+  if length(txtXDuration.Text) > 0 then
+  begin
+    tmpDur := LowerCase(cboDuration.Text);
+    if (tmpDur = 'l') or (tmpDur = 'ml') then
+    begin
+      xlimEx := 'with total volume ' +  txtXDuration.Text + self.cboDuration.items.strings[self.cboDuration.itemindex];
+      xlimIn := 'with total volume ' +  txtXDuration.Text + self.cboDuration.items.strings[self.cboDuration.itemindex];
+    end
+    else if (tmpDur = 'days') or (tmpDur = 'hours') then
+    begin
+      xlimEx := 'for ' + txtXDuration.Text + ' ' +  self.cboDuration.items.strings[self.cboDuration.itemindex];
+      xlimIn := 'for ' + txtXDuration.Text + ' ' +  self.cboDuration.items.strings[self.cboDuration.itemindex];
+    end
+    else if tmpDur = 'doses' then
+      begin
+         xlimEx := 'for a total of ' + txtXDuration.Text + ' ' +  self.cboDuration.items.strings[self.cboDuration.itemindex];
+         xlimIn := 'for a total of ' + txtXDuration.Text + ' ' +  self.cboDuration.items.strings[self.cboDuration.itemindex];
+      end
+   else  begin
+      xlimIn := '';
+      xlimEx := '';
+    end;
+  end;
+  if cboType.Text = 'Intermittent' then iType := 'I'
+  else iType := 'C';
+  Responses.Update('TYPE',1,iType,cboType.Text);
+  Responses.Update('ROUTE',1,cboRoute.ItemID,cboRoute.Text);
+  tmpSch := UpperCase(Trim(cboSchedule.Text));
+  if chkPRN.Checked then tmpSch := tmpSch + ' PRN';
+  if UpperCase(Copy(tmpSch, Length(tmpSch) - 6, Length(tmpSch))) = 'PRN PRN'
+  then tmpSch := Copy(tmpSch, 1, Length(tmpSch) - 4);
+  Responses.Update('SCHEDULE',1,tmpSch,tmpSch);
+  (*adminTime := Piece(lblAdminTime.Caption,':',2);
+  adminTime := Copy(adminTime,1,Length(adminTime));
+  if (Action in [ORDER_COPY, ORDER_EDIT]) and ((FAdminTimeDelay <> '') or (FAdminTimeClinic <> '')) and
+      (cboSchedule.ItemIndex = FOriginalScheduleIndex) then  Responses.Update('ADMIN',1,FOriginalAdminTime,FOriginalAdminTime)
+  else Responses.Update('ADMIN',1,adminTime,adminTime);*)
+  idx := self.cboSchedule.ItemIndex;
+  if idx > -1 then
+     begin
+       adminTime := Piece(lblAdminTime.Caption,':',2);
+       adminTime := Copy(adminTime,2,Length(adminTime));
+       if FAdminTimeText <> '' then AdminTime :=  '';
+       if AdminTime = 'Not Defined' then AdminTime := '';
+       Responses.Update('ADMIN',1,adminTime,adminTime);
+     end;
+  if IsNumericRate(x) then
+    begin
+      if cboInfusionTime.Enabled = true then
+        begin
+           idx := cboInfusionTime.Items.IndexOf(cboInfusionTime.Text);
+           if idx > -1 then x := x + ' ' + cboInfusionTime.Items.Strings[idx];
+           tmpRate := 'Infuse Over ' + x;
+        end
+      else
+        if pos('ml/hr', x)= 0 then  x := x + ' ml/hr';
+    end;
+  if (Pos('@',x)>0) and (Piece(x,'@',1) = IntToStr(StrToIntDef(Piece(x,'@',1), -1))) and (cboInfusionTime.Enabled = false) then
+    begin
+      if Pos('ml/hr', x) = 0 then
+         x := Piece(x,'@',1) + ' ml/hr@' + Copy(x, Pos('@',x) + 1, Length(x));
+    end;
+  with txtRate     do if (Length(Text) > 0) then
+    begin
+      if tmpRate = '' then Responses.Update('RATE', 1, x, x)
+      else Responses.Update('RATE', 1, 'INFUSE OVER ' + x, tmpRate);
+    end;
+  with cboPriority do if ItemIndex > -1     then Responses.Update('URGENCY', 1, ItemID, Text);
+  if Length(xlimIn)>0 then Responses.Update('DAYS',1, xlimIn, xlimEx);
+  with memComments do if GetTextLen > 0     then Responses.Update('COMMENT', 1, TX_WPTYPE, Text);
+  if (chkDoseNow.Visible = True) and (chkDoseNow.Checked = True) then
+    Responses.Update('NOW', 1, '1', 'NOW')
+  else Responses.Update('NOW', 1, '', '');
+  memOrder.Text := Responses.OrderText;
+  (* (Length(eSch)>0) or (Length(iSch)>0) then
+    Responses.Update('SCHEDULE',1,iSch,eSch);  *)
+end;
+
+function TfrmODMedIV.CreateOtherRoute: string;
+var
+  aRoute: string;
+begin
+  aRoute := '';
+  Result := '';
+  if not ShowOtherRoutes(aRoute) then
+    begin
+      cboRoute.ItemIndex := -1;
+      cboRoute.Text := '';
+    end
+  else
+    begin
+      Result := aRoute;
+    end;
+end;
+
+function TfrmODMedIV.CreateOtherSchedule: string;
+var
+  aSchedule: string;
+begin
+  aSchedule := '';
+  if not ShowOtherSchedule(aSchedule) then
+  begin
+    cboSchedule.ItemIndex := -1;
+    cboSchedule.Text      := '';
+  end
+  else
+    begin
+        Result := Piece(aSchedule,U,1);
+        NSSAdminTime := Piece(aschedule,u,2);
+        NSSScheduleType := Piece(ASchedule, U, 3);
+    end;
+end;
+
+procedure TfrmODMedIV.grdSelectedDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
+  State: TGridDrawState);
+begin
+  inherited;
+  if Sender = ActiveControl then Exit;
+  if not (gdSelected in State) then Exit;
+  with Sender as TStringGrid do
+  begin
+    Canvas.Brush.Color := Color;
+    Canvas.Font := Font;
+    Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
+  end;
+end;
+
+procedure TfrmODMedIV.SetFontSize( FontSize: integer);
+begin
+  inherited SetFontSize( FontSize );
+  DoSetFontSize( FontSize );
+end;
+
+procedure TfrmODMedIV.DisplayDoseNow(Status: boolean);
+begin
+  if self.EvtID > 0 then Status := false;
+  if status = false then
+    begin
+      if (self.chkDoseNow.Visible = true) and (self.chkDoseNow.Checked = true) then self.chkDoseNow.Checked := false;
+      self.chkDoseNow.Visible := false;
+    end;
+  if status = true then self.chkDoseNow.Visible := true;
+end;
+
+procedure TfrmODMedIV.DoSetFontSize( FontSize: integer);
+begin
+  tabFluid.TabHeight := Abs(Font.Height) + 4;
+  grdSelected.DefaultRowHeight := Abs(Font.Height) + 8;
+end;
+
+procedure TfrmODMedIV.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) and (ssCtrl in Shift) then
+  begin
+    //Back-tab works the same as forward-tab because there are only two tabs.
+    tabFluid.TabIndex := (tabFluid.TabIndex + 1) mod tabFluid.Tabs.Count;
+    Key := 0;
+    tabFluidChange(tabFluid);
+  end;
+end;
+
+procedure TfrmODMedIV.grdSelectedKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  ClickOnGridCell;
+end;
+
+procedure TfrmODMedIV.grdSelectedMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  ClickOnGridCell;
+end;
+
+procedure TfrmODMedIV.txtXDurationChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  ControlChange(Sender);
+end;
+
+
+procedure TfrmODMedIV.pnlXDurationEnter(Sender: TObject);
+begin
+  inherited;
+  txtXDuration.SetFocus;
+end;
+
+procedure TfrmODMedIV.SetLimitationControl(aValue: string);
+var
+  limitUnit,limitValue,tempval: string;
+begin
+  limitUnit  := '';
+  limitValue := '';
+  tempVal := '';
+  if pos('dose',AValue)>0 then
+    begin
+      limitValue := Piece(aValue,' ',5);
+      limitUnit := 'doses';
+    end;
+  if (( CharAt(aValue,1)= 'f') or ( CharAt(aValue,1)= 'F')) and (pos('dose',aValue)=0) then  //days, hours
+  begin
+     limitValue := Piece(aValue,' ',2);
+     limitUnit  := Piece(aValue,' ',3);
+  end;
+  if (CharAt(aValue,1)= 'w') or (CharAt(aValue,1)= 'W') then  //L, ml
+  begin
+     tempval  := Piece(aValue,' ',4);
+     limitValue := FloatToStr(ExtractFloat(tempVal));
+     limitUnit  := Copy(tempVal,length(limitValue)+1,Length(tempVal));
+  end;
+  if isNumeric(CharAt(aValue,1)) then
+  begin
+    if LeftStr(avalue,1) = '0' then AValue := Copy(aValue,2,Length(aValue));
+    limitValue := FloatToStr(ExtractFloat(aValue));
+    limitUnit  := Copy(aValue,length(limitValue)+1,Length(aValue));
+    if limitUnit = 'D' then limitUnit := 'days'
+    else if limitUnit = 'H' then limitUnit := 'hours'
+    else if limitUnit = 'ML' then limitUnit := 'ml';
+  end;
+  if ( Length(limitUnit)> 0)  and ( (Length(limitValue) > 0 ) ) then
+  begin
+    txtXDuration.Text := limitValue;
+    if Trim(UpperCase(limitUnit))='CC' then
+      limitUnit := 'ml';
+    cboduration.text := limitUnit;
+    if cboDuration.Text <> '' then cboDuration.ItemIndex := cboDuration.Items.IndexOf(cboDuration.Text)
+  end;
+
+end;
+
+procedure TfrmODMedIV.SetSchedule(const x: string);
+var
+NonPRNPart,tempSch: string;
+idx: integer;
+begin
+    cboSchedule.ItemIndex := -1;
+    chkPRN.Checked := False;
+    //Check to see if schedule is already define in the schedule list
+    idx := cboSchedule.Items.IndexOf(X);
+    if idx > -1 then
+      begin
+        cboSchedule.ItemIndex := idx;
+        exit;
+      end;
+      //Check to see if schedule is a Day-of-Week Schedule (MO-WE-FR@BID)
+      if (Pos('@', x) > 0) then
+        begin
+          tempSch := Piece(x, '@', 2);
+          idx := cboSchedule.Items.IndexOf(tempSch);
+          if idx > -1 then
+            begin
+             //tempSch := U + Piece(x, '@', 1) + '@' + Pieces(cboSchedule.Items.Strings[idx], U, 2, 5);
+             tempSch := Piece(x, '@', 1) + '@' + cboSchedule.Items.Strings[idx];
+             cboSchedule.Items.Add(tempSch);
+             cboSchedule.Text := (Piece(tempSch,U,1));
+             cboSchedule.ItemIndex := cboSchedule.Items.IndexOf(Piece(tempSch,U,1));
+             EXIT;
+            end;
+          //Check to see if schedule is a Day-of-Week PRN Schedule (MO-WE-FR@BID PRN)
+          if Pos('PRN', tempSch) > 0 then
+            begin
+              NonPRNPart := Trim(Copy(tempSch, 1, Pos('PRN', tempSch) - 1));
+              idx := cboSchedule.Items.IndexOf(NonPRNPart);
+              if idx > -1 then
+                begin
+                  //tempSch := U + Piece(x, '@', 1) + '@' + Pieces(cboSchedule.Items.Strings[idx], U, 2, 5);
+                  tempSch := Piece(x, '@', 1) + '@' + cboSchedule.Items.Strings[idx];
+                  cboSchedule.Items.Add(tempSch);
+                  cboSchedule.Text := (Piece(tempSch,U,1));
+                  cboSchedule.ItemIndex := cboSchedule.Items.IndexOf(Piece(tempSch, U, 1));
+                  chkPRN.Checked := True;
+                  EXIT;
+                end
+              else
+               //Add Day-of-Week PRN schedule built off Time Prompt (MO-WE-FR@0800-1000 PRN)
+               begin
+                  NonPRNPart := Trim(Copy(X, 1, Pos('PRN', X) - 1));
+                  chkPRN.Checked := True;
+                  //cboSchedule.Items.Add(U + NonPRNPart + U + U + U + AdminTime);
+                  //cboSchedule.Items.Add(U + NonPRNPart + U + U + U + Piece(NonPRNPart, '@', 2));
+                  cboSchedule.Items.Add(NonPRNPart + U + U + U + Piece(NonPRNPart, '@', 2));
+                  cboSchedule.Text := NonPRNPart;
+                  cboSchedule.ItemIndex := cboSchedule.Items.IndexOf(NonPRNPart);
+                  EXIT;
+               end;
+            end;
+         //Add Non PRN Day-of-Week Schedule built off Time Prompt (MO-WE-FR@0800-1000)
+         //cboSchedule.Items.Add(U + x + U + U + U + AdminTime);
+         //cboSchedule.Items.Add(U + x + U + U + U + tempSch);
+         cboSchedule.Items.Add(x + U + U + U + tempSch);
+         cboSchedule.Text := x;
+         cboSchedule.ItemIndex := cboSchedule.Items.IndexOf(X);
+        end
+        else
+          begin
+            //Handle standard schedule mark as PRN (Q4H PRN)
+            if Pos('PRN', X) > 0 then
+              begin
+                NonPRNPart := Trim(Copy(X, 1, Pos('PRN', X) - 1));
+                idx := cboSchedule.Items.IndexOf(NonPRNPart);
+                if idx > -1 then
+                  begin
+                    cboSchedule.ItemIndex := idx;
+                    tempSch := cboSchedule.Items.Strings[idx];
+                    //setPiece(tempSch,U,5,AdminTime);
+                    cboSchedule.Items.Strings[idx] := tempSch;
+                    chkPRN.Checked := True;
+                    exit;
+                  end;
+              end;
+          end;
+end;
+
+
+procedure TfrmODMedIV.txtXDurationExit(Sender: TObject);
+var
+  Code: double;
+begin
+  inherited;
+  if (txtXDuration.Text <> '0') and (txtXDuration.Text <> '') then
+  begin
+    try
+      code := StrToFloat(txtXDuration.Text);
+    except
+      code := 0;
+    end;
+    if code < 0.0001 then
+    begin
+      ShowMsg('Can not save order.' + #13#10 + 'Reason: Invalid Duration or Total Volume!');
+      txtXDuration.Text := '';
+      txtXDuration.SetFocus;
+      Exit;
+    end;
+  end;
+  try
+    if (Length(txtXDuration.Text)>0) and (StrToFloat(txtXDuration.Text)<0) then
+    begin
+      ShowMsg('Can not save order.' + #13#10 + 'Reason: Invalid Duration or total volume!');
+      txtXDuration.Text := '';
+      txtXDuration.SetFocus;
+      Exit;
+    end;
+  except
+    txtXDuration.Text := '';
+  end;
+  ControlChange(Sender);
+end;
+
+procedure TfrmODMedIV.UpdateDuration(SchType: string);
+begin
+if SchType = 'O' then
+   begin
+     self.cboDuration.ItemIndex := -1;
+     self.txtXDuration.Text := '';
+     self.cboDuration.Enabled := false;
+     self.txtXDuration.Enabled := false;
+     self.lblLimit.Enabled := false;
+   end
+else
+  begin
+     self.cboDuration.Enabled := true;
+     self.txtXDuration.Enabled := true;
+     self.lblLimit.Enabled := true;
+  end;
+end;
+
+procedure TfrmODMedIV.UpdateRoute;
+var
+AnIVComponent: TIVComponent;
+i: integer;
+OrderIds, TempIVRoute: TStringList;
+Default: boolean;
+begin
+  if self.grdSelected.RowCount > 0 then self.txtAllIVRoutes.Visible := True;
+  TempIVRoute := TStringList.Create;
+  for I := (self.cboRoute.Items.Count -1) downto 0 do
+    begin
+      if Piece(self.cboRoute.Items.Strings[i], U, 5) = '1' then
+        TempIVRoute.Add(self.cboRoute.Items.Strings[i]);
+        self.cboRoute.Items.Delete(i);
+    end;
+  if self.cboRoute.ItemIndex = -1 then self.cboRoute.Text := '';
+  OrderIds := TStringList.Create;
+  for i := 0 to self.grdSelected.RowCount -1  do
+    begin
+      AniVComponent := TIVComponent(self.grdSelected.Objects[0, i]);
+      if AnIVComponent <> nil then  orderIds.Add(InttoStr(AniVComponent.IEN));
+    end;
+ if OrderIds.Count > 0 then
+   begin
+     if (self.FInitialOrderID = True) and (self.grdSelected.RowCount = 1) then Default := True
+     else Default := False;
+     LoadDosageFormIVRoutes(self.cboRoute.Items, OrderIds, Default);
+     if default = True then
+       begin
+         for I := 0 to cboRoute.items.Count - 1 do
+           if Piece(cboRoute.Items.Strings[i], U, 5) = 'D' then
+             begin
+               cboRoute.ItemIndex := i;
+               break;
+             end;
+         self.FInitialOrderID := false;
+       end;
+     OrderIds.Free;
+   end;
+ if TempIVRoute.Count > 0 then
+   begin
+     for I := 0 to tempIVRoute.Count - 1 do cboRoute.Items.Add(tempIVRoute.Strings[i]);
+     TempIVRoute.Free;
+   end;
+ cboRoute.Items.Add(U + 'OTHER');
+end;
+
+
+procedure TfrmODMedIV.txtAllIVRoutesClick(Sender: TObject);
+var
+i: integer;
+begin
+  inherited;
+  if MessageDlg('You can also select "OTHER" from the Route list'
+     + ' to select a Route from the Expanded Med Route List.'
+     + #13#10 + 'Click OK to launch the Expanded Med Route List.',
+     mtInformation, [mbOK, mbCancel],0) = mrOK then
+  begin
+      for I := 0 to cboRoute.Items.Count - 1 do if cboRoute.Items.Strings[i] = U + 'OTHER' then break;
+      cboRoute.ItemIndex := i;
+      cboRouteClick(self);
+      cboRouteChange(self.cboRoute);
+  end;
+end;
+
+procedure TfrmODMedIV.txtNSSClick(Sender: TObject);
+var
+i: integer;
+begin
+  inherited;
+  if MessageDlg('You can also select ' + '"' + 'Other' + '"' + ' from the schedule list'
+    + ' to create a day-of-week schedule.'
+    + #13#10 + 'Click OK to launch schedule builder',
+    mtInformation, [mbOK, mbCancel],0) = mrOK then
+  begin
+      //cboSchedule.Items.Add(U + 'OTHER');
+      for I := 0 to cboSchedule.Items.Count - 1 do if cboSchedule.Items.Strings[i] = 'OTHER' then break;
+      cboSchedule.ItemIndex := i;
+      //cboSchedule.SelectByID(U+'OTHER');
+      cboScheduleClick(Self);
+      cboScheduleChange(self.cboSchedule);
+  end;
+end;
+
+procedure TfrmODMedIV.txtRateChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  ControlChange(Sender);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIn.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIn.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIn.dfm	(revision 1676)
@@ -0,0 +1,287 @@
+inherited frmODMedIn: TfrmODMedIn
+  Left = 220
+  Top = 416
+  Caption = 'Inpatient Medication Order'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMedication: TLabel [0]
+    Left = 6
+    Top = 4
+    Width = 52
+    Height = 13
+    Caption = 'Medication'
+  end
+  object lblDosage: TLabel [1]
+    Left = 224
+    Top = 4
+    Width = 37
+    Height = 13
+    Caption = 'Dosage'
+  end
+  object lblRoute: TLabel [2]
+    Left = 364
+    Top = 4
+    Width = 29
+    Height = 13
+    Caption = 'Route'
+  end
+  object lblSchedule: TLabel [3]
+    Left = 442
+    Top = 4
+    Width = 45
+    Height = 13
+    Caption = 'Schedule'
+  end
+  object Label5: TLabel [4]
+    Left = 6
+    Top = 45
+    Width = 70
+    Height = 13
+    Caption = 'Dispense Drug'
+  end
+  object lblComments: TLabel [5]
+    Left = 223
+    Top = 114
+    Width = 49
+    Height = 13
+    Caption = 'Comments'
+  end
+  object lblPriority: TLabel [6]
+    Left = 442
+    Top = 114
+    Width = 31
+    Height = 13
+    Caption = 'Priority'
+  end
+  object Bevel1: TBevel [7]
+    Left = 214
+    Top = 0
+    Width = 4
+    Height = 186
+  end
+  object cboDispense: TORComboBox [8]
+    Left = 6
+    Top = 59
+    Width = 202
+    Height = 127
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2,4,3'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabPositions = '30,33'
+    TabOrder = 2
+    OnChange = ControlChange
+    OnExit = cboDispenseExit
+    OnMouseClick = cboDispenseMouseClick
+    CharsNeedMatch = 1
+  end
+  object cboMedication: TORComboBox [9]
+    Left = 6
+    Top = 18
+    Width = 202
+    Height = 167
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 11
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnChange = ControlChange
+    OnExit = cboMedicationSelect
+    OnMouseClick = cboMedicationSelect
+    OnNeedData = cboMedicationNeedData
+    CharsNeedMatch = 1
+  end
+  inherited memOrder: TCaptionMemo
+    TabOrder = 10
+  end
+  inherited cmdAccept: TButton
+    TabOrder = 8
+  end
+  object cboRoute: TORComboBox [12]
+    Left = 364
+    Top = 18
+    Width = 72
+    Height = 90
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboSchedule: TORComboBox [13]
+    Left = 442
+    Top = 18
+    Width = 72
+    Height = 90
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 5
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object memComments: TMemo [14]
+    Left = 223
+    Top = 128
+    Width = 212
+    Height = 58
+    ScrollBars = ssVertical
+    TabOrder = 6
+    OnChange = ControlChange
+  end
+  object cboPriority: TORComboBox [15]
+    Left = 442
+    Top = 128
+    Width = 72
+    Height = 58
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 7
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object txtDosage: TCaptionEdit [16]
+    Left = 224
+    Top = 18
+    Width = 134
+    Height = 21
+    MaxLength = 20
+    TabOrder = 3
+    OnChange = ControlChange
+    Caption = 'Dosage'
+  end
+  inherited cmdQuit: TButton
+    TabOrder = 9
+  end
+  inherited pnlMessage: TPanel
+    TabOrder = 11
+  end
+  object cboMedAlt: TORComboBox [19]
+    Left = 6
+    Top = 18
+    Width = 202
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 11
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    Visible = False
+    OnChange = ControlChange
+    OnExit = cboMedicationSelect
+    OnMouseClick = cboMedicationSelect
+    OnNeedData = cboMedicationNeedData
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboDispense'
+        'Status = stsDefault')
+      (
+        'Component = cboMedication'
+        'Status = stsDefault')
+      (
+        'Component = cboRoute'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = cboPriority'
+        'Status = stsDefault')
+      (
+        'Component = txtDosage'
+        'Status = stsDefault')
+      (
+        'Component = cboMedAlt'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedIn'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIn.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIn.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedIn.pas	(revision 1676)
@@ -0,0 +1,360 @@
+unit fODMedIn;
+
+{$OPTIMIZATION OFF}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, ORCtrls, StdCtrls, ORFn, ExtCtrls, uConst, ComCtrls, uCore,
+  Menus, VA508AccessibilityManager;
+
+type
+  TfrmODMedIn = class(TfrmODBase)
+    lblMedication: TLabel;
+    cboMedication: TORComboBox;
+    lblDosage: TLabel;
+    lblRoute: TLabel;
+    cboRoute: TORComboBox;
+    lblSchedule: TLabel;
+    cboSchedule: TORComboBox;
+    Label5: TLabel;
+    cboDispense: TORComboBox;
+    lblComments: TLabel;
+    memComments: TMemo;
+    lblPriority: TLabel;
+    cboPriority: TORComboBox;
+    txtDosage: TCaptionEdit;
+    Bevel1: TBevel;
+    cboMedAlt: TORComboBox;
+    procedure cboMedicationNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboMedicationSelect(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboDispenseExit(Sender: TObject);
+    procedure cboDispenseMouseClick(Sender: TObject);
+  private
+    { Private declarations }
+    FLastDrug: Integer;
+    FLastMedID: string;
+    FDispenseMsg: string;
+    FMedCombo: TORComboBox;
+    procedure CheckFormAlt;
+    procedure ResetOnMedChange;
+    procedure SetAltCombo;
+    procedure SetOnOISelect;
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, rODBase, fODMedFA;
+
+const
+  TX_NO_MED    = 'Medication must be entered.';
+  TX_NO_DOSE   = 'Dosage must be entered.';
+  TX_NO_AMPER  = 'Dosage may not contain the ampersand (&) character.';
+  TX_NO_ROUTE  = 'Route must be entered.';
+  TX_NF_ROUTE  = 'Route not found in the Medication Routes file.';
+  TX_NO_SCHED  = 'Schedule must be entered.';
+  TX_DOSE_AMT  = 'Dosage must be the amount given, not simply the number of units.';
+  TX_SCH_QUOTE = 'Schedule must not have quotemarks in it.';
+  TX_SCH_MINUS = 'Schedule must not have a dash at the beginning.';
+  TX_SCH_SPACE = 'Schedule must have only one space in it.';
+  TX_SCH_LEN   = 'Schedule must be less than 70 characters.';
+  TX_SCH_PRN   = 'Schedule cannot include PRN - use Comments to enter PRN.';
+  TX_SCH_ZERO  = 'Schedule cannot be Q0.';
+  TX_SCH_LSP   = 'Schedule may not have leading spaces.';
+  TX_SCH_NS    = 'Unable to resolve non-standard schedule.';
+  TX_OUTPT_IV  = 'This patient has not been admitted.  Only IV orders may be entered.';
+
+{ TfrmODBase common methods }
+
+procedure TfrmODMedIn.FormCreate(Sender: TObject);
+const
+  TC_RESTRICT = 'Ordering Restrictions';
+var
+  Restriction: string;
+begin
+  inherited;
+  AllowQuickOrder := True;
+  CheckAuthForMeds(Restriction);
+  if Length(Restriction) > 0 then
+  begin
+    InfoBox(Restriction, TC_RESTRICT, MB_OK);
+    Close;
+    Exit;
+  end;
+  FillerID := 'PSI';                             // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'PSJ OR PAT OE';           // loads formatting info
+  StatusText('Loading Default Values');
+  CtrlInits.LoadDefaults(ODForMedIn);            // ODForMedIn returns TStrings with defaults
+  InitDialog;
+end;
+
+procedure TfrmODMedIn.InitDialog;
+begin
+  inherited;
+  FLastDrug := 0;
+  FLastMedID := '';
+  FDispenseMsg := '';
+  FMedCombo := cboMedication;                    // this must be before SetControl(cboMedication)
+  with CtrlInits do
+  begin
+    SetControl(cboMedication, 'ShortList');
+    cboMedication.InsertSeparator;
+    //SetControl(cboMedAlt,     'ShortList'); can't do this since it calls InitLongList
+    SetControl(cboSchedule,   'Schedules');
+    SetControl(cboPriority,   'Priorities');
+  end;
+  StatusText('Initializing Long List');
+  cboMedAlt.Visible := False;
+  cboMedication.Visible := True;
+  cboMedication.InitLongList('');
+  ActiveControl := cboMedication;  //SetFocusedControl(FMedCombo);
+  StatusText('');
+end;
+
+procedure TfrmODMedIn.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    Changing := True;                                     //v12a
+    SetControl(cboMedication, 'ORDERABLE', 1);
+    ResetOnMedChange;                                     //v12a
+    SetOnOISelect;                                        //v12a
+    SetAltCombo;                                          //v12a
+    //cboMedicationSelect(Self);
+    SetControl(cboDispense,   'DRUG',      1);
+    SetControl(txtDosage,     'INSTR',     1);
+    SetControl(cboRoute,      'ROUTE',     1);
+    SetControl(cboSchedule,   'SCHEDULE',  1);
+    SetControl(memComments,   'COMMENT',   1);
+    SetControl(cboPriority,   'URGENCY',   1);
+    { can't edit the orderable item for a med order that has been released }
+    if (OrderAction = ORDER_EDIT) and OrderIsReleased(EditOrder)
+      then FMedCombo.Enabled := False;
+    Changing := False;                                   //v12a
+    ControlChange(Self);                                 //v12a
+  end;
+  if OrderAction <> ORDER_EDIT then SetFocusedControl(FMedCombo);
+end;
+
+procedure TfrmODMedIn.Validate(var AnErrMsg: string);
+var
+  Sched: Integer;
+  RouteID, RouteAbbr: string;
+
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  if Length(cboMedAlt.Text) = 0           then SetError(TX_NO_MED);
+  if Length(txtDosage.Text) = 0           then SetError(TX_NO_DOSE);
+  if Pos('&', txtDosage.Text) > 0         then SetError(TX_NO_AMPER);
+  if Length(cboRoute.Text) = 0            then SetError(TX_NO_ROUTE);
+  if (Length(cboRoute.Text) > 0) and (cboRoute.ItemIndex < 0) then
+  begin
+    LookupRoute(cboRoute.Text, RouteID, RouteAbbr);
+    if RouteID = '0'
+      then SetError(TX_NF_ROUTE)
+      else Responses.Update('ROUTE', 1, RouteID, RouteAbbr);
+  end;
+  if Length(cboSchedule.Text) = 0         then SetError(TX_NO_SCHED);
+  with cboSchedule do if Length(Text) > 0 then
+  begin
+    Sched := ValidSchedule(Text);
+    if Sched = -1 then
+    begin
+      if Pos('"', Text) > 0                                 then SetError(TX_SCH_QUOTE);
+      if Copy(Text, 1, 1) = '-'                             then SetError(TX_SCH_MINUS);
+      if Pos(' ', Copy(Text, Pos(' ', Text) + 1, 999)) > 0  then SetError(TX_SCH_SPACE);
+      if Length(Text) > 70                                  then SetError(TX_SCH_LEN);
+      if (Pos('P RN', Text) > 0) or (Pos('PR N', Text) > 0) then SetError(TX_SCH_PRN);
+      if Pos('Q0', Text) > 0                                then SetError(TX_SCH_ZERO);
+      if TrimLeft(Text) <> Text                             then SetError(TX_SCH_LSP);
+    end;
+    if Sched = 0                          then SetError(TX_SCH_NS);
+  end;
+  if (Length(txtDosage.Text) > 0) and (not ContainsAlpha(txtDosage.Text))
+    then SetError(TX_DOSE_AMT);
+  if (not OrderForInpatient) and (not MedTypeIsIV(cboMedAlt.ItemIEN))
+    then SetError(TX_OUTPT_IV);
+end;
+
+{ cboMedication methods }
+
+procedure TfrmODMedIn.ResetOnMedChange;
+begin
+  ClearControl(cboDispense);
+  ClearControl(txtDosage);
+  ClearControl(cboRoute);                       // routes should be cached
+  ResetControl(cboSchedule);
+  ClearControl(memComments);
+  ClearControl(memOrder);
+end;
+
+procedure TfrmODMedIn.SetAltCombo;
+begin
+  with cboMedication do
+  begin
+    FMedCombo := cboMedAlt;
+    if cboMedAlt.Items.Count = 0 then
+    begin
+      CtrlInits.SetListOnly(cboMedAlt, 'ShortList');
+      cboMedAlt.InsertSeparator;
+    end;
+    cboMedAlt.SetExactByIEN(ItemIEN, TrimRight(Piece(Text, '<', 1)));
+    cboMedication.Visible := False;
+    cboMedAlt.Visible := True;
+  end;
+end;
+
+procedure TfrmODMedIn.SetOnOISelect;
+begin
+  with CtrlInits do
+  begin
+    FLastMedID := FMedCombo.ItemID;
+    LoadOrderItem(OIForMedIn(FMedCombo.ItemIEN));
+    SetControl(cboDispense, 'Dispense');
+    if cboDispense.Items.Count = 1 then cboDispense.ItemIndex := 0;
+    SetControl(txtDosage,   'Instruct');
+    SetControl(cboRoute,    'Route');
+    if cboRoute.Items.Count = 1 then cboRoute.ItemIndex := 0;
+    //cboRoute.InsertSeparator;
+    //AppendMedRoutes(cboRoute.Items);
+    if DefaultText('DefSched') <> '' then cboSchedule.SelectByID(DefaultText('DefSched'));
+    OrderMessage(TextOf('Message'));
+  end;
+end;
+
+procedure TfrmODMedIn.cboMedicationNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+{ retrieves a subset of inpatient medication orderable items }
+begin
+  inherited;
+  FMedCombo.ForDataUse(SubSetOfOrderItems(StartFrom, Direction, 'S.UD RX'));
+end;
+
+procedure TfrmODMedIn.cboMedicationSelect(Sender: TObject);
+{ sets related controls whenever orderable item changes (MouseClick or Exit) }
+begin
+  inherited;
+  with FMedCombo do
+  begin
+    if ItemID <> FLastMedID then FLastMedID := ItemID else Exit;
+    Changing := True;
+    if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+    ResetOnMedChange;
+    if CharAt(ItemID, 1) = 'Q' then
+    begin
+      Responses.QuickOrder := ExtractInteger(ItemID);
+      Responses.SetControl(FMedCombo, 'ORDERABLE', 1);
+    end;
+    if ItemIEN > 0 then SetOnOISelect;
+  end;
+  with Responses do if QuickOrder > 0 then
+  begin
+    SetControl(FMedCombo,     'ORDERABLE', 1);
+    SetControl(cboDispense,   'DRUG',      1);
+    SetControl(txtDosage,     'INSTR',     1);
+    SetControl(cboRoute,      'ROUTE',     1);
+    SetControl(cboSchedule,   'SCHEDULE',  1);
+    SetControl(memComments,   'COMMENT',   1);
+    SetControl(cboPriority,   'URGENCY',   1);
+  end;
+  Changing := False;
+  ControlChange(Self);
+  if FMedCombo = cboMedication then SetAltCombo;
+  // if the Dispense drug was stuffed - still do the checks (form alt, refills)
+  if cboDispense.ItemIndex > -1 then cboDispenseMouseClick(Self);
+end;
+
+{ cboDispense methods }
+
+procedure TfrmODMedIn.CheckFormAlt;
+var
+  DrugName, OIName: string;
+  Drug, OI: Integer;
+begin
+  with cboDispense do if (ItemIndex > -1) and (Piece(Items[ItemIndex], U, 4) = 'NF') then
+  begin
+    SelectFormularyAlt(ItemIEN, Drug, OI, DrugName, OIName, PST_UNIT_DOSE);
+    if Drug > 0 then
+    begin
+      if FMedCombo.ItemIEN <> OI then
+      begin
+        FMedCombo.InitLongList(OIName);
+        FMedCombo.SelectByIEN(OI);
+        cboMedicationSelect(Self);
+      end;
+      cboDispense.SelectByIEN(Drug);
+    end; {if FormAlt}
+  end; {if ItemIndex}
+end;
+
+procedure TfrmODMedIn.cboDispenseExit(Sender: TObject);
+var
+  AMsg: string;
+begin
+  inherited;
+  with cboDispense do
+  begin
+    if ItemIEN <> FLastDrug then CheckFormAlt;
+    if ItemIEN > 0 then
+    begin
+      AMsg := DispenseMessage(ItemIEN);
+      if memMessage.Text <> AMsg then OrderMessage(AMsg);
+    end;
+    FLastDrug := ItemIEN;
+  end;
+end;
+
+procedure TfrmODMedIn.cboDispenseMouseClick(Sender: TObject);
+begin
+  inherited;
+  with cboDispense do
+  begin
+    if ItemIEN <> FLastDrug then CheckFormAlt;
+    if ItemIEN > 0 then OrderMessage(DispenseMessage(ItemIEN));
+    FLastDrug := ItemIEN;
+  end;
+end;
+
+{ all controls }
+
+procedure TfrmODMedIn.ControlChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  with FMedCombo do if ItemIEN > 0
+    then Responses.Update('ORDERABLE', 1, ItemID, Piece(Items[ItemIndex], U, 3))
+    else Responses.Update('ORDERABLE', 1, '', '');
+  with cboDispense   do if ItemIEN > 0
+    then Responses.Update('DRUG', 1, ItemID, Piece(Items[ItemIndex], U, 2));
+  with txtDosage     do if Length(Text) > 0 then Responses.Update('INSTR', 1, Text, Text);
+  with cboRoute      do if ItemIndex > -1
+    then Responses.Update('ROUTE', 1, ItemID, Piece(Items[ItemIndex], U, 3))
+    else Responses.Update('ROUTE', 1, Text, Text);
+  with cboSchedule   do if Length(Text) > 0 then Responses.Update('SCHEDULE', 1, Text, Text);
+  with cboPriority   do if ItemIndex > -1   then Responses.Update('URGENCY', 1, ItemID, Text);
+  with memComments   do                          Responses.Update('COMMENT', 1, TX_WPTYPE, Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedNVA.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedNVA.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedNVA.dfm	(revision 1676)
@@ -0,0 +1,516 @@
+inherited frmODMedNVA: TfrmODMedNVA
+  Left = 203
+  Top = 183
+  Width = 632
+  Height = 536
+  Caption = 'Document Herbal/OTC/Non-VA Medications'
+  Constraints.MinHeight = 365
+  ExplicitWidth = 632
+  ExplicitHeight = 536
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited memOrder: TCaptionMemo
+    Left = 0
+    Top = 461
+    Width = 525
+    Anchors = [akLeft, akRight, akBottom]
+    Constraints.MinWidth = 25
+    TabOrder = 4
+    ExplicitLeft = 0
+    ExplicitTop = 461
+    ExplicitWidth = 525
+  end
+  object pnlMeds: TPanel [1]
+    Left = 6
+    Top = 34
+    Width = 593
+    Height = 415
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    Caption = 'pnlMeds'
+    TabOrder = 1
+    object sptSelect: TSplitter
+      Left = 0
+      Top = 133
+      Width = 593
+      Height = 4
+      Cursor = crVSplit
+      Align = alTop
+    end
+    object lstQuick: TCaptionListView
+      Left = 0
+      Top = 0
+      Width = 593
+      Height = 133
+      Align = alTop
+      BevelInner = bvLowered
+      BevelOuter = bvSpace
+      Columns = <
+        item
+          Width = 420
+        end>
+      ColumnClick = False
+      Constraints.MaxHeight = 165
+      HideSelection = False
+      HotTrack = True
+      OwnerData = True
+      ParentShowHint = False
+      ShowColumnHeaders = False
+      ShowHint = True
+      TabOrder = 0
+      TabStop = False
+      ViewStyle = vsReport
+      OnChange = lstChange
+      OnClick = ListViewClick
+      OnData = lstQuickData
+      OnEditing = ListViewEditing
+      OnEnter = ListViewEnter
+      OnResize = ListViewResize
+      Caption = 'Quick Orders'
+    end
+    object lstAll: TCaptionListView
+      Left = 0
+      Top = 137
+      Width = 593
+      Height = 278
+      Align = alClient
+      Columns = <
+        item
+          Width = 420
+        end>
+      ColumnClick = False
+      HideSelection = False
+      OwnerData = True
+      ParentShowHint = False
+      ShowColumnHeaders = False
+      ShowHint = True
+      TabOrder = 1
+      ViewStyle = vsReport
+      OnChange = lstChange
+      OnClick = ListViewClick
+      OnData = lstAllData
+      OnDataHint = lstAllDataHint
+      OnEditing = ListViewEditing
+      OnEnter = ListViewEnter
+      OnResize = ListViewResize
+      Caption = 'All Medication orders'
+    end
+  end
+  object txtMed: TEdit [2]
+    Left = 5
+    Top = 6
+    Width = 596
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    AutoSelect = False
+    TabOrder = 0
+    Text = '(Type a medication name or select from the orders below)'
+    OnChange = txtMedChange
+    OnExit = txtMedExit
+    OnKeyDown = txtMedKeyDown
+    OnKeyUp = txtMedKeyUp
+  end
+  object pnlFields: TPanel [3]
+    Left = 3
+    Top = 30
+    Width = 624
+    Height = 428
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    Enabled = False
+    TabOrder = 2
+    Visible = False
+    object pnlTop: TPanel
+      Left = 0
+      Top = 0
+      Width = 624
+      Height = 264
+      Align = alClient
+      Constraints.MinHeight = 80
+      Constraints.MinWidth = 30
+      TabOrder = 0
+      DesignSize = (
+        624
+        264)
+      object lblRoute: TLabel
+        Left = 349
+        Top = 23
+        Width = 29
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Route'
+        Visible = False
+      end
+      object lblSchedule: TLabel
+        Left = 467
+        Top = 23
+        Width = 45
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Schedule'
+        Visible = False
+      end
+      object lblGuideline: TStaticText
+        Left = 0
+        Top = 1
+        Width = 181
+        Height = 17
+        Caption = 'Display Restrictions/Guidelines'
+        Color = clBtnFace
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBlue
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold, fsUnderline]
+        ParentColor = False
+        ParentFont = False
+        ShowAccelChar = False
+        TabOrder = 0
+        TabStop = True
+        Visible = False
+        OnClick = lblGuidelineClick
+      end
+      object tabDose: TTabControl
+        Left = -7
+        Top = 19
+        Width = 175
+        Height = 17
+        TabOrder = 4
+        Tabs.Strings = (
+          'Dosage')
+        TabIndex = 0
+        TabStop = False
+        TabWidth = 86
+        OnChange = tabDoseChange
+      end
+      object cboDosage: TORComboBox
+        Left = 8
+        Top = 36
+        Width = 383
+        Height = 222
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Dosage'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '5,3,6'
+        Sorted = False
+        SynonymChars = '<>'
+        TabPositions = '27,32'
+        TabOrder = 1
+        OnChange = cboDosageChange
+        OnClick = cboDosageClick
+        OnExit = cboDosageExit
+        CharsNeedMatch = 1
+      end
+      object cboRoute: TORComboBox
+        Left = 355
+        Top = 36
+        Width = 114
+        Height = 223
+        Anchors = [akTop, akRight, akBottom]
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Route'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        ParentShowHint = False
+        Pieces = '2'
+        ShowHint = True
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 2
+        OnChange = cboRouteChange
+        OnClick = ControlChange
+        OnExit = cboRouteExit
+        CharsNeedMatch = 1
+      end
+      object cboSchedule: TORComboBox
+        Left = 467
+        Top = 36
+        Width = 157
+        Height = 223
+        Anchors = [akTop, akRight, akBottom]
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Schedule'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '1'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 3
+        OnChange = cboScheduleChange
+        OnClick = cboScheduleClick
+        OnExit = cboScheduleExit
+        CharsNeedMatch = 1
+      end
+      object chkPRN: TCheckBox
+        Left = 582
+        Top = 39
+        Width = 42
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'PRN'
+        Color = clBtnFace
+        ParentColor = False
+        TabOrder = 5
+        OnClick = chkPRNClick
+      end
+    end
+    object pnlBottom: TPanel
+      Left = 0
+      Top = 264
+      Width = 624
+      Height = 164
+      Align = alBottom
+      TabOrder = 1
+      DesignSize = (
+        624
+        164)
+      object lblComment: TLabel
+        Left = 4
+        Top = 5
+        Width = 52
+        Height = 16
+        Alignment = taRightJustify
+        AutoSize = False
+        Caption = 'Comments:'
+      end
+      object Label1: TLabel
+        Left = 5
+        Top = 47
+        Width = 108
+        Height = 13
+        Caption = 'Statement/Explanation'
+      end
+      object Label2: TLabel
+        Left = 10
+        Top = 145
+        Width = 51
+        Height = 13
+        Caption = 'Start Date:'
+      end
+      object Image1: TImage
+        Left = 25
+        Top = 17
+        Width = 31
+        Height = 31
+      end
+      object memComment: TCaptionMemo
+        Left = 64
+        Top = 2
+        Width = 559
+        Height = 44
+        Align = alCustom
+        Anchors = [akLeft, akTop, akRight]
+        ScrollBars = ssVertical
+        TabOrder = 2
+        OnChange = ControlChange
+        Caption = 'Comments'
+      end
+      object lblAdminTime: TStaticText
+        Left = 267
+        Top = 105
+        Width = 4
+        Height = 4
+        TabOrder = 0
+        Visible = False
+      end
+      object calStart: TORDateBox
+        Left = 64
+        Top = 141
+        Width = 145
+        Height = 21
+        Anchors = [akLeft, akTop, akBottom]
+        TabOrder = 5
+        Text = 'Today'
+        OnChange = ControlChange
+        DateOnly = True
+        RequireTime = False
+        Caption = 'Effective Date'
+      end
+      object lbStatements: TORListBox
+        Left = 7
+        Top = 59
+        Width = 603
+        Height = 81
+        Style = lbOwnerDrawFixed
+        Anchors = [akLeft, akTop, akRight]
+        ExtendedSelect = False
+        ItemHeight = 16
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        ItemTipColor = clWindow
+        LongList = False
+        CheckBoxes = True
+        OnClickCheck = lbStatementsClickCheck
+      end
+      object memDrugMsg: TMemo
+        Left = 63
+        Top = 15
+        Width = 533
+        Height = 31
+        Anchors = [akLeft, akRight, akBottom]
+        Color = clCream
+        Lines.Strings = (
+          '')
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 6
+        Visible = False
+      end
+    end
+  end
+  object btnSelect: TButton [4]
+    Left = 539
+    Top = 463
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    Enabled = False
+    TabOrder = 5
+    OnClick = btnSelectClick
+  end
+  inherited cmdAccept: TButton
+    Left = 540
+    Top = 463
+    Width = 69
+    Anchors = [akRight, akBottom]
+    TabOrder = 6
+    Visible = False
+    ExplicitLeft = 540
+    ExplicitTop = 463
+    ExplicitWidth = 69
+  end
+  inherited cmdQuit: TButton
+    Left = 546
+    Top = 489
+    Width = 49
+    Anchors = [akRight, akBottom]
+    TabOrder = 7
+    ExplicitLeft = 546
+    ExplicitTop = 489
+    ExplicitWidth = 49
+  end
+  inherited pnlMessage: TPanel
+    Top = 240
+    ExplicitTop = 240
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlMeds'
+        'Status = stsDefault')
+      (
+        'Component = lstQuick'
+        'Status = stsDefault')
+      (
+        'Component = lstAll'
+        'Status = stsDefault')
+      (
+        'Component = txtMed'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lblGuideline'
+        'Status = stsDefault')
+      (
+        'Component = tabDose'
+        'Status = stsDefault')
+      (
+        'Component = cboDosage'
+        'Status = stsDefault')
+      (
+        'Component = cboRoute'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = chkPRN'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = memComment'
+        'Status = stsDefault')
+      (
+        'Component = lblAdminTime'
+        'Status = stsDefault')
+      (
+        'Component = calStart'
+        'Status = stsDefault')
+      (
+        'Component = lbStatements'
+        'Status = stsDefault')
+      (
+        'Component = memDrugMsg'
+        'Status = stsDefault')
+      (
+        'Component = btnSelect'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedNVA'
+        'Status = stsDefault'))
+  end
+  object dlgStart: TORDateTimeDlg
+    FMDateTime = 3001101.000000000000000000
+    DateOnly = False
+    RequireTime = True
+    Left = 500
+    Top = 201
+  end
+  object timCheckChanges: TTimer
+    Enabled = False
+    Interval = 500
+    Left = 501
+    Top = 233
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedNVA.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedNVA.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedNVA.pas	(revision 1676)
@@ -0,0 +1,2354 @@
+unit fODMedNVA;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ComCtrls, ExtCtrls, ORCtrls, Grids, Buttons, uConst, ORDtTm,
+  Menus, XUDIGSIGSC_TLB, rMisc, uOrders, StrUtils, oRFn, contnrs,
+  VA508AccessibilityManager;
+
+const
+  UM_DELAYCLICK = 11037;  // temporary for listview click event
+  NVA_CR = #13;
+  NVA_LF = #10;
+
+type
+  TfrmODMedNVA = class(TfrmODBase)
+    txtMed: TEdit;
+    pnlMeds: TPanel;
+    lstQuick: TCaptionListView;
+    sptSelect: TSplitter;
+    lstAll: TCaptionListView;
+    dlgStart: TORDateTimeDlg;
+    timCheckChanges: TTimer;
+    pnlFields: TPanel;
+    pnlTop: TPanel;
+    lblRoute: TLabel;
+    lblSchedule: TLabel;
+    lblGuideline: TStaticText;
+    tabDose: TTabControl;
+    cboDosage: TORComboBox;
+    cboRoute: TORComboBox;
+    cboSchedule: TORComboBox;
+    chkPRN: TCheckBox;
+    pnlBottom: TPanel;
+    lblComment: TLabel;
+    memComment: TCaptionMemo;
+    lblAdminTime: TStaticText;
+    calStart: TORDateBox;
+    Label1: TLabel;
+    lbStatements: TORListBox;
+    Label2: TLabel;
+    btnSelect: TButton;
+    Image1: TImage;
+    memDrugMsg: TMemo;
+    procedure FormCreate(Sender: TObject);
+    procedure btnSelectClick(Sender: TObject);
+    procedure tabDoseChange(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure txtMedKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtMedKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtMedChange(Sender: TObject);
+    procedure txtMedExit(Sender: TObject);
+    procedure ListViewEditing(Sender: TObject; Item: TListItem;
+      var AllowEdit: Boolean);
+    procedure ListViewResize(Sender: TObject);
+    procedure lstQuickData(Sender: TObject; Item: TListItem);
+    procedure lstAllDataHint(Sender: TObject; StartIndex,
+      EndIndex: Integer);
+    procedure lstAllData(Sender: TObject; Item: TListItem);
+    procedure lblGuidelineClick(Sender: TObject);
+    procedure ListViewClick(Sender: TObject);
+    procedure cboScheduleExit(Sender: TObject);
+    procedure cboScheduleChange(Sender: TObject);
+    procedure cboRouteChange(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboDosageClick(Sender: TObject);
+    procedure cboDosageChange(Sender: TObject);
+    procedure cboScheduleClick(Sender: TObject);
+    procedure cboRouteExit(Sender: TObject);
+    procedure DispOrderMessage(const AMessage: string);
+
+
+    procedure grdDosesExit(Sender: TObject);
+    procedure ListViewEnter(Sender: TObject);
+    procedure timCheckChangesTimer(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure cboDosageExit(Sender: TObject);
+    procedure chkPRNClick(Sender: TObject);
+    procedure grdDosesKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure grdDosesEnter(Sender: TObject);
+    procedure pnlMessageEnter(Sender: TObject);
+    procedure pnlMessageExit(Sender: TObject);
+    procedure memMessageKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormResize(Sender: TObject);
+    procedure lbStatementsClickCheck(Sender: TObject; Index: Integer);
+    procedure lstChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure FormKeyPress(Sender: TObject; var Key: Char);
+
+  private
+    {selection}
+    FNVAMedCache:   TObjectList;
+    FCacheIEN:   integer;
+    FQuickList:  Integer;
+    FQuickItems: TStringList;
+    FChangePending: Boolean;
+    FKeyTimerActive: Boolean;
+    FActiveMedList: TListView;
+    FRowHeight: Integer;
+    FFromSelf: Boolean;
+    {edit}
+    FAllDoses:  TStringList;
+    FAllDrugs:  TStringList;
+    FGuideline: TStringList;
+    FLastUnits:    string;
+    FLastSchedule: string;
+    FLastDispDrug: string;
+    FLastQuantity: Integer;
+    FLastSupply:   Integer;
+    FLastPickup:   string;
+    FSIGVerb: string;
+    FSIGPrep: string;
+    FDrugID: string;
+    fInptDlg: Boolean;
+    FNonVADlg: Boolean;
+    FUpdated: Boolean;
+    FSuppressMsg: Boolean;
+    FPtInstruct: string;
+    FAltChecked: Boolean;
+    FShrinkDrugMsg: boolean;
+    FQOQuantity: Double;
+    FQODosage: string;
+    FNoZERO: boolean;
+    FIsQuickOrder: boolean;
+    FAdminTimeLbl: string;
+    FDisabledDefaultButton: TButton;
+    FDisabledCancelButton: TButton;
+    FShrinked: boolean;
+    FQOInitial: boolean;
+    FRemoveText : Boolean;
+    FMedName: string;
+    {selection}
+    procedure ChangeDelayed;
+    procedure LoadNonVAMedCache(First, Last: Integer);
+    function FindQuickOrder(const x: string): Integer;
+    function isUniqueQuickOrder(iText: string): Boolean;
+    function GetCacheChunkIndex(idx: integer): integer;
+    procedure ScrollToVisible(AListView: TListView);
+    procedure StartKeyTimer;
+    procedure StopKeyTimer;
+    procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
+    // NON VA MEDS
+    procedure LoadOTCStatements(Dest: TStrings);
+
+    {edit}
+    procedure ResetOnMedChange;
+    procedure SetOnMedSelect;
+    procedure SetOnQuickOrder;
+    procedure ShowMedSelect;
+    procedure ShowMedFields;
+    procedure ShowControlsSimple;
+    procedure SetDosage(const x: string);
+    procedure SetStatements(x: string);
+    procedure SetStartDate(const x: string);
+    procedure SetSchedule(const x: string);
+    procedure CheckFormAltDose(DispDrug: Integer);
+    function ConstructedDoseFields(const ADose: string; PrependName: Boolean = FALSE): string;
+    function FindCommonDrug(DoseList: TStringList): string;
+    function FindDoseFields(const Drug, ADose: string): string;
+    function OutpatientSig: string;
+    function  SearchStatements(StatementList:TStringList;Statement: string): Boolean;
+    procedure UpdateRelated(DelayUpdate: Boolean = TRUE);
+    procedure UpdateStartExpires(const CurSchedule: string);
+    function DisableDefaultButton(Control: TWinControl): boolean;
+    function DisableCancelButton(Control: TWinControl): boolean;
+    procedure RestoreDefaultButton;
+    procedure RestoreCancelButton;
+    function ValueOf(FieldID: Integer; ARow: Integer = -1): string;
+    function ValueOfResponse(FieldID: Integer; AnInstance: Integer = 1): string;
+    procedure UMDelayClick(var Message: TMessage); message UM_DELAYCLICK;
+
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure CheckDecimal(var AStr: string);
+    property MedName: string read FMedName write FMedName;
+  end;
+
+var
+  frmODMedNVA: TfrmODMedNVA;
+  crypto: IXuDigSigS;
+
+function OIForNVA(AnIEN: Integer; ForNonVAMed: Boolean; HavePI: boolean = True; PKIActive: Boolean = False): TStrings;
+procedure CheckAuthForNVAMeds(var x: string);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, rODMeds, rODBase, rOrders, fRptBox, fODMedOIFA,
+  fFrame, ORNet, VAUtils;
+
+const
+  {grid columns for complex dosing }
+  COL_SELECT   =  0;
+  COL_DOSAGE   =  1;
+  COL_ROUTE    =  2;
+  COL_SCHEDULE =  3;
+  COL_DURATION =  4;
+
+  COL_SEQUENCE =  5;
+  VAL_DOSAGE   = 10;
+  VAL_ROUTE    = 20;
+  VAL_SCHEDULE = 30;
+  VAL_DURATION = 40;
+  VAL_SEQUENCE = 50;
+  TAB          = #9;
+  {field identifiers}
+  FLD_LOCALDOSE =  1;
+  FLD_STRENGTH  =  2;
+  FLD_DRUG_ID   =  3;
+  FLD_DRUG_NM   =  4;
+  FLD_DOSEFLDS  =  5;
+  FLD_UNITNOUN  =  6;
+  FLD_TOTALDOSE =  7;
+  FLD_DOSETEXT  =  8;
+  FLD_INSTRUCT  = 10;
+  FLD_DOSEUNIT  = 11;
+  FLD_ROUTE_ID  = 15;
+  FLD_ROUTE_NM  = 16;
+  FLD_ROUTE_AB  = 17;
+  FLD_ROUTE_EX  = 18;
+  FLD_SCHEDULE  = 20;
+  FLD_SCHED_EX  = 21;
+  FLD_SCHED_TYP = 22;
+  FLD_DURATION  = 30;
+  FLD_SEQUENCE  = 31;
+  FLD_MISC_FLDS = 50;
+  FLD_SUPPLY    = 51;
+  FLD_QUANTITY  = 52;
+  FLD_REFILLS   = 53;
+  FLD_PICKUP    = 55;
+  FLD_QTYDISP   = 56;
+  FLD_SC        = 58;
+  FLD_PRIOR_ID  = 60;
+  FLD_PRIOR_NM  = 61;
+  FLD_START_ID  = 70;
+  FLD_START_NM  = 71;
+  FLD_EXPIRE    = 72;
+  FLD_ANDTHEN   = 73;
+  FLD_NOW_ID    = 75;
+  FLD_NOW_NM    = 76;
+  FLD_COMMENT   = 80;
+  FLD_PTINSTR   = 85;
+  FLD_START     = 88;
+  FLD_STATEMENTS = 90;
+    {dosage type tab index values}
+  TI_DOSE       =  0;
+  TI_RATE       =  99;
+  TI_COMPLEX    =  1;
+  {misc constants}
+  TIMER_ID = 6902;                                // arbitrary number
+  TIMER_DELAY = 500;                              // 500 millisecond delay
+  TIMER_FROM_DAYS = 1;
+  TIMER_FROM_QTY  = 2;
+
+  MED_CACHE_CHUNK_SIZE = 100;  
+  {text constants}
+  TX_ADMIN      = 'Requested Start: ';
+  TX_TAKE       = '';
+  TX_NO_DEA     = 'Provider must have a DEA# or VA# to order this medication';
+  TC_NO_DEA     = 'DEA# Required';
+  TX_NO_MED     = 'Medication must be selected.';
+  TX_NO_DOSE    = 'Dosage must be entered.';
+  TX_DOSE_NUM   = 'Dosage may not be numeric only';
+  TX_DOSE_LEN   = 'Dosage may not exceed 60 characters';
+  TX_NO_ROUTE   = 'Route must be entered.';
+  TX_NF_ROUTE   = 'Route not found in the Medication Routes file.';
+  TX_NO_SCHED   = 'Schedule must be entered.';
+  TX_NO_PICK    = 'A method for picking up the medication must be entered.';
+  TX_RNG_REFILL = 'The number of refills must be in the range of 0 through ';
+  TX_SCH_QUOTE  = 'Schedule must not have quotemarks in it.';
+  TX_SCH_MINUS  = 'Schedule must not have a dash at the beginning.';
+  TX_SCH_SPACE  = 'Schedule must have only one space in it.';
+  TX_SCH_LEN    = 'Schedule must be less than 70 characters.';
+  TX_SCH_PRN    = 'Schedule cannot include PRN - use Comments to enter PRN.';
+  TX_SCH_ZERO   = 'Schedule cannot be Q0';
+  TX_SCH_LSP    = 'Schedule may not have leading spaces.';
+  TX_SCH_NS     = 'Unable to resolve non-standard schedule.';
+  TX_MAX_STOP   = 'The maximum expiration for this order is ';
+  TX_OUTPT_IV   = 'This patient has not been admitted.  Only IV orders may be entered.';
+  TX_QTY_NV     = 'Unable to validate quantity.';
+  TX_QTY_MAIL   = 'Quantity for mailed items must be a whole number.';
+  TX_SUPPLY_LIM = 'Days Supply may not be greater than 90.';
+  TX_SUPPLY_LIM1 = 'Days Supply may not be less than 1.';
+  TX_SUPPLY_NINT= 'Days Supply is an invalid number.';
+  TC_RESTRICT   = 'Ordering Restrictions';
+  TC_GUIDELINE  = 'Restrictions/Guidelines';
+  TX_QTY_PRE    = '>> Quantity Dispensed: ';
+  TX_QTY_POST   = ' <<';
+  TX_STARTDT    = 'Unable to interpret start date.';  //cla 7-17-03
+  TX_FUTUREDT   = 'Dates in the future are not allowed.';  //cla 7-17-03
+  TX_NO_FUTURE_DATES  = 'Dates in the future are not allowed.';
+  TX_BAD_DATE         = 'Dates must be in the format mm/dd/yy or mm/yy';
+  TX_CAP_FUTURE       = 'Invalid date';
+
+{ procedures inherited from fODBase --------------------------------------------------------- }
+
+procedure TfrmODMedNVA.FormCreate(Sender: TObject);
+const
+  TC_RESTRICT = 'Ordering Restrictions';
+var
+  ListCount: Integer;
+  Restriction, x: string;
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  AutoSizeDisabled := True;
+ // ActivateOrderDialog(Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  inherited;
+  AllowQuickOrder := True;
+
+  if User.OrderRole in[OR_CLERK] then   // if user is clerk check restrictions else ok to write NonVA Order.
+    begin
+      CheckAuthForNVAMeds(Restriction);
+      if Length(Restriction) > 0 then
+        begin
+          CheckAuthForNVAMeds(Restriction);
+          if Length(Restriction) > 0 then
+            begin
+              InfoBox(Restriction, TC_RESTRICT, MB_OK);
+              Close;
+              Exit;
+            end;
+        end;
+    end;  // clerk restrictions
+
+  if DlgFormID = OD_MEDNONVA  then FNonVADlg := TRUE;
+  FillerID := 'PSH';    // CLA 6/3/03
+  FGuideline := TStringList.Create;
+  FAllDoses  := TStringList.Create;
+  FAllDrugs  := TStringList.Create;
+  StatusText('Loading Dialog Definition');
+
+  Responses.Dialog := 'PSH OERR';  // CLA 6/3/03
+  Responses.SetPromptFormat('INSTR', '@');
+  StatusText('Loading Schedules');
+  LoadSchedules(cboSchedule.Items);               // load the schedules combobox (cached)
+  StatusText('');
+  FSuppressMsg := CtrlInits.DefaultText('DispMsg') = '1';
+  InitDialog;
+
+   // medication selection
+  FRowHeight := MainFontHeight + 1;
+  x := 'NV RX';  // CLA 6/3/03
+  ListForOrderable(FCacheIEN, ListCount, x);
+  lstAll.Items.Count := ListCount;
+  FNVAMedCache := TObjectList.Create;
+  FQuickItems := TStringList.Create;
+  ListForQuickOrders(FQuickList, ListCount, x);
+ if ListCount > 0 then
+  begin
+    lstQuick.Items.Count := ListCount;
+    SubsetOfQuickOrders(FQuickItems, FQuickList, 0, 0);
+    FActiveMedList := lstQuick;
+  end else
+  begin
+    lstQuick.Items.Count := 1;
+    ListCount := 1;
+    FQuickItems.Add('0^(No quick orders available)');
+    FActiveMedList := lstAll;
+  end;
+
+  // set the height based on user parameter here
+  with lstQuick do if ListCount < VisibleRowCount
+    then Height := (((Height - 6) div VisibleRowCount) * ListCount) + 6;
+  pnlFields.Height := cmdAccept.Top - 4 - pnlFields.Top;
+  cmdAccept.Left := cmdQuit.Left;
+  cmdaccept.Anchors := cmdQuit.anchors;
+  FNoZero := False;
+  FShrinked := False;
+  // Load OTC Statement/Explanations
+  LoadOTCStatements(lbStatements.Items);
+  FRemoveText := True;
+  FShrinkDrugMsg := False;
+end;
+
+procedure TfrmODMedNVA.FormDestroy(Sender: TObject);
+begin
+  {selection}
+  FQuickItems.Free;
+  FNVAMedCache.Free;
+  {edit}
+  FGuideline.Free;
+  FAllDoses.Free;
+  FAllDrugs.Free;
+ // TAccessibleStringGrid.UnwrapControl(grdDoses);
+  inherited;
+  frmFrame.pnlVisit.Enabled := true;
+end;
+
+procedure TfrmODMedNVA.InitDialog;
+{ Executed each time dialog is reset after pressing accept.  Clears controls & responses }
+begin
+  inherited;
+  FLastPickup := ValueOf(FLD_PICKUP);
+  Changing := True;
+  ResetOnMedChange;
+  txtMed.Text := '';
+  txtMed.Tag := 0;
+  lstQuick.Selected := nil;
+  lstAll.Selected := nil;
+  if Visible then ShowMedSelect;
+  Changing := False;
+  FIsQuickOrder := False;
+  FQOQuantity := 0 ;
+  FQODosage   := '';
+  memComment.Clear;  // sometimes the sig is in the comment
+  LoadOTCStatements(lbStatements.Items);
+
+end;
+
+procedure TfrmODMedNVA.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  //AnInstr: string;
+  OrderID: string;
+begin
+  inherited;
+ // if FInptDlg and (not FOutptIV) then DisplayGroup := DisplayGroupByName('UD RX')
+  DisplayGroup := DisplayGroupByName('NV RX');   // CLA 6/3/03
+  if XfInToOutNow then DisplayGroup := DisplayGroupByName('O RX');
+  if CharAt(ID,1)='X' then
+  begin
+    OrderID := Copy(Piece(ID, ';', 1), 2, Length(ID));
+    CheckExistingPI(OrderID, FPtInstruct);
+  end;
+  if OrderAction = ORDER_QUICK then
+    FIsQuickOrder := True
+  else
+    FIsQuickOrder := False;
+//  if OrderAction in [ORDER_COPY, ORDER_EDIT] then Responses.Remove('START', 1);
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then
+  begin
+    Changing := True;
+    txtMed.Tag  := StrToIntDef(Responses.IValueFor('ORDERABLE', 1), 0);
+    SetOnMedSelect;
+    SetOnQuickOrder;                                  // set up for this medication
+    ShowMedFields;
+    if (OrderAction = ORDER_EDIT) and OrderIsReleased(Responses.EditOrder)
+      then btnSelect.Enabled := False;
+    UpdateRelated(FALSE);
+    Changing := False;
+  end;
+  { prevent the SIG from being part of the comments on pre-CPRS prescriptions }
+  {if (OrderAction in [ORDER_COPY, ORDER_EDIT]) and (cboDosage.Text = '') then  //commented out by cla 2/27/04 - CQ 2591
+  begin
+    OrderID := Copy(Piece(ID, ';', 1), 2, Length(ID));
+    AnInstr := TextForOrder(OrderID);
+    pnlMessage.TabOrder := 0;
+    OrderMessage(AnInstr);
+    if OrderAction = ORDER_COPY
+      then AnInstr := 'Copy: ' + AnInstr
+      else AnInstr := 'Change: ' + AnInstr;
+    Caption := AnInstr;
+    memComment.Clear;  // sometimes the sig is in the comment
+    lbStatements.Clear;
+  end;}
+  ControlChange(Self);
+end;
+
+procedure TfrmODMedNVA.Validate(var AnErrMsg: string);
+var
+  i: Integer;
+  StartDate: TFMDateTime;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+  procedure ValidateDosage(const x: string);
+  begin
+    if Length(x) = 0 then SetError(TX_NO_DOSE);
+  end;
+
+  procedure ValidateRoute(const x: string; NeedLookup: Boolean; AnInstance: Integer);
+  var
+    RouteID, RouteAbbr: string;
+  begin
+    if (Length(x) = 0) and (not MedIsSupply(txtMed.Tag)) then SetError(TX_NO_ROUTE);
+    if (Length(x) > 0) and NeedLookup then
+    begin
+      LookupRoute(x, RouteID, RouteAbbr);
+      if RouteID = '0'
+        then SetError(TX_NF_ROUTE)
+        else Responses.Update('ROUTE', AnInstance, RouteID, RouteAbbr);
+    end;
+  end;
+
+  procedure ValidateSchedule(const x: string; AnInstance: Integer);
+  const
+    SCH_BAD = 0;
+    SCH_NO_RTN = -1;
+  var
+    ValidLevel: Integer;
+    ARoute, ADrug: string;
+  begin
+    ARoute := ValueOfResponse(FLD_ROUTE_ID, AnInstance);
+    ADrug  := ValueOfResponse(FLD_DRUG_ID,  AnInstance);
+ {  if (Length(x) = 0) and (not FNonVADlg) then SetError(TX_NO_SCHED)
+    else if (Length(x) = 0) and FNonVADlg and ScheduleRequired(txtMed.Tag, ARoute, ADrug)
+    then SetError(TX_NO_SCHED);
+}
+    if Length(x) > 0 then
+    begin
+      ValidLevel := ValidSchedule(x, 'O');
+      if ValidLevel = SCH_NO_RTN then
+      begin
+        if Pos('"', x) > 0                              then SetError(TX_SCH_QUOTE);
+        if Copy(x, 1, 1) = '-'                          then SetError(TX_SCH_MINUS);
+        if Pos(' ', Copy(x, Pos(' ', x) + 1, 999)) > 0  then SetError(TX_SCH_SPACE);
+        if Length(x) > 70                               then SetError(TX_SCH_LEN);
+        if (Pos('P RN', x) > 0) or (Pos('PR N', x) > 0) then SetError(TX_SCH_PRN);
+        if Pos('Q0', x) > 0                             then SetError(TX_SCH_ZERO);
+        if TrimLeft(x) <> x                             then SetError(TX_SCH_LSP);
+      end;
+      if ValidLevel = SCH_BAD then SetError(TX_SCH_NS);
+    end;
+  end;
+
+begin
+  inherited;
+   begin
+  AnErrMsg := '';
+  if User.NoOrdering then AnErrMsg := 'Ordering has been disabled. Press Quit';
+
+  ControlChange(Self);                            // make sure everything is updated
+  if txtMed.Tag = 0 then SetError(TX_NO_MED);
+  if Responses.InstanceCount('INSTR') < 1 then SetError(TX_NO_DOSE);
+  i := Responses.NextInstance('INSTR', 0);
+  while i > 0 do
+  begin
+ {   if (ValueOfResponse(FLD_DRUG_ID, i) = '') then
+     begin
+      if not ContainsAlpha(Responses.IValueFor('INSTR', i)) then SetError(TX_DOSE_NUM);
+      if Length(Responses.IValueFor('INSTR', i)) > 60       then SetError(TX_DOSE_LEN);
+     end;
+    ValidateRoute(Responses.EValueFor('ROUTE', i), Responses.IValueFor('ROUTE', i) = '', i);
+    ValidateSchedule(ValueOfResponse(FLD_SCHEDULE, i), i);
+ }
+    i := Responses.NextInstance('INSTR', i);
+  //  inherited;  -  do not reject past dates - historical would not be allowed
+
+       if calStart.Text <> '' then
+     begin
+        StartDate := ValidDateTimeStr(calStart.Text,'TS');
+        if StartDate > FMNow then SetError(TX_NO_FUTURE_DATES);
+        if StartDate < 0 then SetError(TX_BAD_DATE);
+     end;
+   end;
+  end;
+  if Pos(U, self.memComment.Text) > 0 then SetError('Comments cannot contain a "^".');
+end;
+
+{ Navigate medication selection lists ------------------------------------------------------- }
+
+{ txtMed methods (including timers) }
+
+procedure TfrmODMedNVA.WMTimer(var Message: TWMTimer);
+begin
+  inherited;
+  if (Message.TimerID = TIMER_ID) then
+  begin
+    StopKeyTimer;
+    ChangeDelayed;
+  end;
+end;
+
+procedure TfrmODMedNVA.StartKeyTimer;
+{ start (or restart) a timer (done on keyup to delay before calling OnKeyPause) }
+var
+  ATimerID: Integer;
+begin
+  StopKeyTimer;
+  ATimerID := SetTimer(Handle, TIMER_ID, TIMER_DELAY, nil);
+  FKeyTimerActive := ATimerID > 0;
+  // if can't get a timer, just call the event immediately  F
+  if not FKeyTimerActive then Perform(WM_TIMER, TIMER_ID, 0);
+end;
+
+procedure TfrmODMedNVA.StopKeyTimer;
+{ stop the timer (done whenever a key is pressed or the combobox no longer has focus) }
+begin
+  if FKeyTimerActive then
+  begin
+    KillTimer(Handle, TIMER_ID);
+    FKeyTimerActive := False;
+  end;
+end;
+
+procedure TfrmODMedNVA.txtMedKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+var
+  i: Integer;
+  x: string;
+begin
+  if Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN] then             // navigation
+  begin
+    FActiveMedList.Perform(WM_KEYDOWN, Key, 0);
+    FFromSelf := True;
+    txtMed.Text := FActiveMedList.Selected.Caption;
+    txtMed.SelectAll;
+    FFromSelf := False;
+    Key := 0;
+  end
+  else if Key = VK_BACK then
+  begin
+    FFromSelf := True;
+    x := txtMed.Text;
+    i := txtMed.SelStart;
+    if i > 1 then Delete(x, i + 1, Length(x)) else x := '';
+    txtMed.Text := x;
+    if i > 1 then txtMed.SelStart := i;
+    FFromSelf := False;
+  end
+  else {StartKeyTimer};
+end;
+
+procedure TfrmODMedNVA.txtMedKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if not (Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN]) then StartKeyTimer;
+end;
+
+procedure TfrmODMedNVA.txtMedChange(Sender: TObject);
+begin
+  if FFromSelf then Exit;
+  FChangePending := True;
+end;
+
+procedure TfrmODMedNVA.ScrollToVisible(AListView: TListView);
+var
+  Offset: Integer;
+  SelRect: TRect;
+begin
+  AListView.Selected.MakeVisible(FALSE);
+  SelRect := AListView.Selected.DisplayRect(drBounds);   //  CQ: 6636
+  FRowHeight := SelRect.Bottom - SelRect.Top;
+  Offset := AListView.Selected.Index - AListView.TopItem.Index;
+  Application.ProcessMessages;
+  if Offset > 0 then AListView.Scroll(0, (Offset * FRowHeight));
+  Application.ProcessMessages;
+end;
+
+procedure TfrmODMedNVA.ChangeDelayed;
+var
+  QuickIndex, AllIndex: Integer;
+  NewText, OldText, UserText: string;
+  UniqueText: Boolean;
+begin
+  FRemoveText := False;
+  UniqueText := False;
+  FChangePending := False;
+  if (Length(txtMed.Text) > 0) and (txtMed.SelStart = 0) then Exit;  // don't lookup null
+  // lookup item in appropriate list box
+  NewText := '';
+  UserText := Copy(txtMed.Text, 1, txtMed.SelStart);
+  QuickIndex := FindQuickOrder(UserText);
+  AllIndex := IndexOfOrderable(FCacheIEN, UserText);  // but always synch the full list
+  if UserText <> Copy(txtMed.Text, 1, txtMed.SelStart) then Exit;  // if typing during lookup
+  if AllIndex > -1 then
+  begin
+    lstAll.Selected := lstAll.Items[AllIndex];
+    FActiveMedList := lstAll;
+  end;
+  if QuickIndex > -1 then
+  begin
+    try
+      lstQuick.Selected := lstQuick.Items[QuickIndex];
+      lstQuick.ItemFocused := lstQuick.Selected;
+      NewText := lstQuick.Selected.Caption;
+      FActiveMedList := lstQuick;
+      //Search Quick List for Uniqueness
+      UniqueText := isUniqueQuickOrder(UserText);
+    except
+      //doing nothing  short term solution related to 117
+    end;
+  end
+  else if AllIndex > -1 then
+  begin
+    lstAll.Selected := lstAll.Items[AllIndex];
+    lstAll.ItemFocused := lstAll.Selected;
+    NewText := lstAll.Selected.Caption;
+    lstQuick.Selected := nil;
+    FActiveMedList := lstAll;
+    //List is alphabetical, So compare next Item in list to establish uniqueness.
+    if CompareText(UserText, Copy(lstAll.Items[AllIndex+1].Caption, 1, Length(UserText))) <> 0 then
+      UniqueText := True;
+  end
+  else
+  begin
+    lstQuick.Selected := nil;
+    lstAll.Selected := nil;
+    FActiveMedList := lstAll;
+    NewText := txtMed.Text;
+  end;
+  if (AllIndex > -1) and (QuickIndex > -1) then  //Not Unique Between Lists
+    UniqueText := False;
+  FFromSelf := True;
+  if UniqueText then
+  begin
+    OldText := Copy(txtMed.Text, 1, txtMed.SelStart);
+    txtMed.Text := NewText;
+    //txtMed.SelStart := Length(OldText);  // v24.14 RV
+    txtMed.SelStart := Length(UserText);   // v24.14 RV
+    txtMed.SelLength := Length(NewText);
+  end
+  else begin
+    txtMed.Text := UserText;
+    txtMed.SelStart := Length(txtMed.Text);
+  end;
+  FFromSelf := False;
+  if lstAll.Selected <> nil then
+    ScrollToVisible(lstAll);
+  if lstQuick.Selected <> nil then
+    ScrollToVisible(lstQuick);
+  if Not UniqueText then
+  begin
+    lstQuick.ItemIndex := -1;
+    lstAll.ItemIndex := -1;
+  end;
+  FRemoveText := True;
+end;
+
+procedure TfrmODMedNVA.txtMedExit(Sender: TObject);
+begin
+  StopKeyTimer;
+  if not ((ActiveControl = lstAll) or (ActiveControl = lstQuick)) then ChangeDelayed;
+end;
+
+{ lstAll & lstQuick methods }
+
+procedure TfrmODMedNVA.ListViewEnter(Sender: TObject);
+begin
+  inherited;
+  FActiveMedList := TListView(Sender);
+  with Sender as TListView do
+  begin
+    if Selected = nil then Selected := TopItem;
+    if Name = 'lstQuick' then lstAll.Selected := nil else lstQuick.Selected := nil;
+    ItemFocused := Selected;
+  end;
+end;
+
+procedure TfrmODMedNVA.ListViewClick(Sender: TObject);
+begin
+  inherited;
+  btnSelect.Visible := True;
+  btnSelect.Enabled := True;
+  //txtMed.Text := FActiveMedList.Selected.Caption;
+  PostMessage(Handle, UM_DELAYCLICK, 0, 0);
+end;
+
+procedure TfrmODMedNVA.UMDelayClick(var Message: TMessage);
+begin
+  btnSelectClick(Self);
+end;
+
+procedure TfrmODMedNVA.ListViewEditing(Sender: TObject; Item: TListItem;
+  var AllowEdit: Boolean);
+begin
+  AllowEdit := FALSE;
+end;
+
+procedure TfrmODMedNVA.ListViewResize(Sender: TObject);
+begin
+  with Sender as TListView do Columns.Items[0].Width := ClientWidth - 20;
+end;
+
+{ lstAll Methods (lstAll is TListView) }
+
+// Cache is a list of 100 string lists, starting at idx 0
+procedure TfrmODMedNVA.LoadNonVAMedCache(First, Last: Integer);
+var
+  firstChunk, lastchunk, i: integer;
+  list: TStringList;
+  firstMed, LastMed: integer;
+
+begin
+  firstChunk := GetCacheChunkIndex(First);
+  lastChunk := GetCacheChunkIndex(Last);
+  for i := firstChunk to lastChunk do
+  begin
+    if (FNVAMedCache.Count <= i) or (not assigned(FNVAMedCache[i])) then
+    begin
+      while FNVAMedCache.Count <= i do
+        FNVAMedCache.add(nil);
+      list := TStringList.Create;
+      FNVAMedCache[i] := list;
+      firstMed := i * MED_CACHE_CHUNK_SIZE;
+      LastMed := firstMed + MED_CACHE_CHUNK_SIZE - 1;
+      if LastMed >= lstAll.Items.Count then
+        LastMed := lstAll.Items.Count - 1;
+      SubsetOfOrderable(list, false, FCacheIEN, firstMed, lastMed);
+    end;
+  end;
+end;
+
+procedure TfrmODMedNVA.lstAllData(Sender: TObject; Item: TListItem);
+var
+  x: string;
+  chunk: integer;
+  list: TStringList;
+begin
+  LoadNonVAMedCache(Item.Index, Item.Index);
+  chunk := GetCacheChunkIndex(Item.Index);
+  list := TStringList(FNVAMedCache[chunk]);
+  x := list[Item.Index mod MED_CACHE_CHUNK_SIZE];
+  Item.Caption := Piece(x, U, 2);
+  Item.Data := Pointer(StrToIntDef(Piece(x, U, 1), 0));
+end;
+
+procedure TfrmODMedNVA.lstAllDataHint(Sender: TObject; StartIndex,
+  EndIndex: Integer);
+begin
+  LoadNonVAMedCache(StartIndex, EndIndex);
+end;
+
+{ Medication is now selected ---------------------------------------------------------------- }
+
+procedure TfrmODMedNVA.btnSelectClick(Sender: TObject);
+var
+  MedIEN: Integer;
+  //MedName: string;
+  QOQuantityStr: string;
+  ErrMsg, temp: string;
+begin
+  inherited;
+  QOQuantityStr := '';
+  btnSelect.SetFocus;
+  self.MedName := '';                             // let the exit events finish
+  if pnlMeds.Visible then                         // display the medication fields
+  begin
+    Changing := True;
+    ResetOnMedChange;
+    if (FActiveMedList = lstQuick) and (lstQuick.Selected <> nil) then   // quick order
+    begin
+      ErrMsg := '';
+      FIsQuickOrder := True;
+      FQOInitial := True;
+      Responses.QuickOrder := Integer(lstQuick.Selected.Data);
+      txtMed.Tag  := StrToIntDef(Responses.IValueFor('ORDERABLE', 1), 0);
+      IsActivateOI(ErrMsg, txtMed.Tag);
+      if Length(ErrMsg)>0 then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        ShowMsg(ErrMsg);
+        Exit;
+      end;
+      if txtMed.Tag = 0 then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        txtMed.SetFocus;
+        Exit;
+      end;
+      SetOnMedSelect;   // set up for this medication
+      SetOnQuickOrder;  // insert quick order responses
+      ShowMedFields;
+    end
+    else if (FActiveMedList = lstAll) and (lstAll.Selected <> nil) then  // orderable item
+    begin
+      MedIEN := Integer(lstAll.Selected.Data);
+      self.MedName := lstAll.Selected.Caption;
+      txtMed.Tag := MedIEN;
+      ErrMsg := '';
+      IsActivateOI(ErrMsg, txtMed.Tag);
+      if Length(ErrMsg)>0 then
+      begin
+        btnSelect.Enabled := False;
+        ShowMsg(ErrMsg);
+        Exit;
+      end;
+
+     { if Pos(' NF', MedName) > 0 then
+      begin
+        CheckFormularyOI(MedIEN, MedName, FNonVADlg);
+        FAltChecked := True;
+      end;
+     }
+      if MedIEN <> txtMed.Tag then
+      begin
+        txtMed.Tag := MedIEN;
+        temp := self.MedName;
+        self.MedName := txtMed.Text;
+        txtMed.Text := Temp;
+      end;
+      SetOnMedSelect;
+      ShowMedFields;
+    end
+    else                                           // no selection
+    begin
+      MessageBeep(0);
+      Exit;
+    end;
+    UpdateRelated(False);
+    Changing := False;
+    ControlChange(Self);
+  end
+  else ShowMedSelect;                             // show the selection fields
+  FNoZERO   := False;
+end;
+
+procedure TfrmODMedNVA.ResetOnMedChange;
+begin
+  cboDosage.Items.Clear;
+  chkPRN.Checked := False;
+  cboSchedule.ItemIndex := -1;
+  cboSchedule.Text := '';  // leave items intact
+  memComment.Lines.Clear;
+  cboDosage.Text := '';
+  cboRoute.Items.Clear;
+  cboRoute.Text := '';
+  cboRoute.Hint := cboRoute.Text;
+  ResetControl(cboSchedule);        /// cla 2/26/04
+  Responses.Clear;
+end;
+
+procedure TfrmODMedNVA.SetOnMedSelect;
+var
+  i,j: Integer;
+  temp,x: string;
+  QOPiUnChk: boolean;
+  PKIEnviron: boolean;
+begin
+  // clear controls?
+  cboDosage.Tag := -1;
+  QOPiUnChk := False;
+  PKIEnviron := False;
+  if GetPKISite then PKIEnviron := True;
+  with CtrlInits do
+  begin
+    // set up CtrlInits for orderable item
+    LoadOrderItem(OIForNVA(txtMed.Tag, FNonVADlg, IncludeOIPI, PKIEnviron));
+    // set up lists & initial values based on orderable item
+    SetControl(txtMed,       'Medication');
+    if (self.MedName <> '') then
+       begin
+         if (txtMed.Text <> self.MedName) then
+           begin
+             temp := self.MedName;
+             self.MedName := txtMed.Text;
+             txtMed.Text := temp;
+           end
+         else MedName := '';
+       end;
+    SetControl(cboDosage,    'Dosage');
+    SetControl(cboRoute,     'Route');
+    SetControl(calStart,     'START');   //cla 7-17-03
+    if cboRoute.Items.Count = 1 then cboRoute.ItemIndex := 0;
+    cboRouteChange(Self);
+    x := DefaultText('Schedule');
+    if x <> '' then
+    begin
+      cboSchedule.SelectByID(x);
+      cboSchedule.Text := x;
+    end;
+    if Length(ValueOf(FLD_QTYDISP))>10 then
+    begin
+    end;
+    FAllDoses.Text := TextOf('AllDoses');
+    FAllDrugs.Text := TextOf('Dispense');
+    FGuideline.Text := TextOf('Guideline');
+    case FGuideline.Count of
+    0: lblGuideline.Visible := False;
+    1:   begin
+           lblGuideline.Caption := FGuideline[0];
+           lblGuideline.Visible := TRUE;
+         end;
+    else begin
+           lblGuideline.Caption := 'Display Restrictions/Guidelines';
+           lblGuideline.Visible := TRUE;
+         end;
+    end;
+
+      DEASig := '';
+      if GetPKISite then DEASig := DefaultText('DEASchedule');
+      FSIGVerb := DefaultText('Verb');
+      if Length(FSIGVerb) = 0 then FSIGVerb := TX_TAKE;
+      FSIGPrep := DefaultText('Preposition');
+      for j := 0 to Responses.TheList.Count - 1 do
+      begin
+        if (TResponse(Responses.theList[j]).PromptID = 'PI') and (TResponse(Responses.theList[j]).EValue = ' ') then
+          QOPiUnChk := True;
+      end;
+      FPtInstruct := TextOf('PtInstr');
+      for i := 1 to Length(FPtInstruct) do if Ord(FPtInstruct[i]) < 32 then FPtInstruct[i] := ' ';
+      FPtInstruct := TrimRight(FPtInstruct);
+      if Length(FPtInstruct) > 0 then
+      begin
+        if FShrinked then
+        begin
+           FShrinked := False;
+        end;
+        if QOPiUnChk then
+       end else
+      begin
+        if not FShrinked then
+        begin
+           FShrinked := True;
+        end;
+      end;
+ //   end;
+    pnlMessage.TabOrder := cboDosage.TabOrder + 1;
+
+ //   DispOrderMessage(TextOf('Message'));
+  end;
+end;
+
+procedure TfrmODMedNVA.SetOnQuickOrder;
+var
+  AResponse: TResponse;
+  x,LocRoute,TempSch,DispGrp: string;
+  i, DispDrug: Integer;
+begin
+  // txtMed already set by SetOnMedSelect
+  with Responses do
+  begin
+    if (InstanceCount('INSTR') > 1) or (InstanceCount('DAYS') > 0) then // complex dose
+    begin
+      i := Responses.NextInstance('INSTR', 0);
+      while i > 0 do
+      begin
+        SetDosage(IValueFor('INSTR', i));
+        with cboDosage do
+          if ItemIndex > -1 then x := Text + TAB + Items[ItemIndex] else x := Text;
+
+        SetControl(cboRoute,  'ROUTE', i);
+        with cboRoute do
+          if ItemIndex > -1 then x := Text + TAB + Items[ItemIndex] else x := Text;
+        if FIsQuickOrder then TempSch := cboSchedule.Text;
+        SetSchedule(IValueFor('SCHEDULE', i));
+        if (cboSchedule.Text = '') and FIsQuickOrder then
+        begin
+          cboSchedule.SelectByID(TempSch);
+          cboSchedule.Text := TempSch;
+        end;
+        x := cboSchedule.Text;
+        if chkPRN.Checked then x := x + ' PRN';
+        with cboSchedule do
+          if ItemIndex > -1 then x := x + TAB + Items[ItemIndex];
+        if      IValueFor('CONJ', i) = 'A' then x := 'AND'
+        else if IValueFor('CONJ', i) = 'T' then x := 'THEN'
+        else if IValueFor('CONJ', i) = 'X' then x := 'EXCEPT'
+        else x := '';
+        i := Responses.NextInstance('INSTR', i);
+      end; {while}
+    end else                                      // single dose
+    begin
+      if FIsQuickOrder then
+      begin
+        FQODosage := IValueFor('INSTR', 1);
+        SetDosage(FQODosage);
+        TempSch := cboSchedule.Text;
+      end
+      else
+        SetDosage(IValueFor('INSTR', 1));
+      SetControl(cboDosage, 'DOSAGE', 1); // CQ: HDS00007776
+      SetControl(cboRoute,  'ROUTE',     1);  //AGP ADDED ROUTE FOR CQ 11252
+      SetSchedule(IValueFor('SCHEDULE',  1));
+      if (cboSchedule.Text = '') and FIsQuickOrder then
+      begin
+        cboSchedule.SelectByID(TempSch);
+        cboSchedule.Text := TempSch;
+      end;
+      DispDrug := StrToIntDef(ValueOf(FLD_DRUG_ID), 0);
+      if DispDrug > 0 then x := QuantityMessage(DispDrug) else x := '';
+    SetControl(memComment ,  'COMMENT',  1);
+    SetControl(calStart, 'START', 1);
+    SetStartDate(EValueFor('START', 1));
+    SetStatements(EValueFor('STATEMENTS', 1));
+    if FIsQuickOrder then
+      begin
+        if not QOHasRouteDefined(Responses.QuickOrder) then
+        begin
+          LocRoute := GetPickupForLocation(IntToStr(Encounter.Location));
+        end;
+      end;
+      AResponse := Responses.FindResponseByName('SC',     1);
+      DispGrp := NameOfDGroup(Responses.DisplayGroup);
+     if (AResponse = nil) or ((StrToIntDef(Piece(Responses.CopyOrder,';',1),0)>0) and AnsiSameText('Out. Meds',DispGrp)) then
+      begin
+        LocRoute := GetPickupForLocation(IntToStr(Encounter.Location));
+      end;
+
+    end;
+  end; {with}
+  if FInptDlg then
+  begin
+    x := ValueOfResponse(FLD_SCHEDULE, 1);
+    if Length(x) > 0 then UpdateStartExpires(x);
+  end;
+end;
+
+
+procedure TfrmODMedNVA.ShowMedSelect;
+begin
+  txtMed.SelStart := Length(txtMed.Text);
+  ChangeDelayed;  // synch the listboxes with display
+  pnlFields.Enabled := False;
+  pnlFields.Visible := False;
+  pnlMeds.Enabled   := True;
+  pnlMeds.Visible   := True;
+  btnSelect.Caption := 'OK';
+  btnSelect.Top     := cmdAccept.Top;
+  btnSelect.Anchors := [akRight, akBottom];
+  btnSelect.BringToFront;
+  cmdAccept.Visible := False;
+  cmdAccept.Default := False;
+  btnSelect.Default := True;
+  btnSelect.TabOrder := cmdAccept.TabOrder;
+  cmdAccept.TabStop := False;
+  txtMed.Font.Color := clWindowText;
+  txtMed.Color      := clWindow;
+  txtMed.ReadOnly   := False;
+  txtMed.SelectAll;
+  txtMed.SetFocus;
+  FDrugID := '';
+end;
+
+procedure TfrmODMedNVA.ShowMedFields;
+begin
+   pnlMeds.Enabled   := False;
+  pnlMeds.Visible   := False;
+  pnlFields.Enabled := True;
+  pnlFields.Visible := True;
+  btnSelect.Caption := 'Change';
+  btnSelect.Top     := txtMed.Top;
+  btnSelect.Anchors := [akRight, akTop];
+  btnSelect.Default := False;
+  cmdAccept.Visible := True;
+  cmdAccept.Default := True;
+  btnSelect.TabOrder := txtMed.TabOrder + 1;
+  cmdAccept.TabStop := True;
+  txtMed.Width      := memOrder.Width;
+  txtMed.Font.Color := clInfoText;
+  txtMed.Color      := clInfoBk;
+  txtMed.ReadOnly   := True;
+  ShowControlsSimple;
+end;
+
+procedure TfrmODMedNVA.ShowControlsSimple;
+begin
+  tabDose.TabIndex := TI_DOSE;
+  cboDosage.Visible := True;
+  lblRoute.Visible := True;
+  cboRoute.Visible := True;
+  lblSchedule.Visible := True;
+  cboSchedule.Visible := True;
+  chkPRN.Visible := True;
+  ActiveControl := cboDosage;
+end;
+
+procedure TfrmODMedNVA.SetDosage(const x: string);
+var
+  i, DoseIndex: Integer;
+begin
+  DoseIndex := -1;
+  with cboDosage do
+  begin
+    ItemIndex := -1;
+    for i := 0 to Pred(Items.Count) do
+      if Piece(Items[i], U, 5) = x then
+      begin
+        DoseIndex := i;
+        Break;
+      end;
+    if DoseIndex < 0 then Text := x else ItemIndex := DoseIndex;
+  end;
+end;
+
+procedure TfrmODMedNVA.SetStatements(x: string);
+var
+i,stmtLen: integer;
+stmt: string;
+hldStr, matchStmt: string;
+stmtList: TStringList;
+begin
+   stmt := x;
+   stmtLen := Length(stmt);
+   stmtList := TStringList.Create;
+   stmtList.Clear;
+   for i := 1 to stmtLen do
+   if((stmt[i] <> NVA_CR) and (stmt[i] <> NVA_LF)) then
+      hldStr := hldStr + stmt[i]
+   else
+      hldStr := hldStr + '^';
+   hldStr := hldStr + '^';  //  end line with a '^' for piece.
+
+   //  Load List of statements.
+   stmtList.Add(Piece(hldStr,U,1));
+   stmtList.Add(Piece(hldStr,U,3));
+   stmtList.Add(Piece(hldStr,U,5));
+   stmtList.Add(Piece(hldStr,U,7));
+
+   for i := 0 to lbStatements.count-1 do
+   begin
+      matchStmt := lbStatements.Items.Strings[i];
+      if SearchStatements(stmtList,matchStmt) then
+         lbStatements.Checked[i] := True;
+   end;
+
+end;
+
+function TfrmODMedNVA.SearchStatements(StatementList: TStringList; Statement: string): Boolean;
+var
+i : integer;
+x: string;
+begin
+
+    Result := FALSE;
+    for i := 0 to StatementList.Count-1 do
+    begin
+       x := StatementList.Strings[i];
+       if Statement = Trim(StatementList.Strings[i]) then
+       begin
+           Result := TRUE;
+           Break;
+       end;
+    end;
+end;
+
+procedure TfrmODMedNVA.SetStartDate(const x: string);
+begin
+     calStart.Text := x;
+end;
+
+procedure TfrmODMedNVA.SetSchedule(const x: string);
+var
+  NonPRNPart: string;
+begin
+ 
+  cboSchedule.ItemIndex := -1;
+  if Pos('PRN', x) > 0 then
+  begin
+    NonPRNPart := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+    cboSchedule.SelectByID(NonPRNPart);
+    if cboSchedule.ItemIndex < 0 then
+    begin
+      if NSSchedule then
+      begin
+        chkPRN.Checked := False;
+        cboSchedule.Text := '';
+      end else
+      begin
+        chkPRN.Checked := True;
+        cboSchedule.Items.Add(NonPRNPart);
+        cboSchedule.Text := NonPRNPart;
+      end;
+    end else
+      chkPRN.Checked := True;
+  end else
+  begin
+    chkPRN.Checked := False;
+    cboSchedule.SelectByID(x);
+    if cboSchedule.ItemIndex < 0 then
+    begin
+      if NSSchedule then
+      begin
+        cboSchedule.Text := '';
+      end
+      else
+      begin
+        cboSchedule.Items.Add(x);
+        cboSchedule.Text := x;
+        cboSchedule.SelectByID(x);
+      end;
+    end;
+  end;
+end;
+
+{ Medication edit --------------------------------------------------------------------------- }
+
+procedure TfrmODMedNVA.tabDoseChange(Sender: TObject);
+begin
+  inherited;
+  case tabDose.TabIndex of
+  TI_DOSE:    begin
+                // clean up responses?
+                ShowControlsSimple;
+                ControlChange(Self);
+              end;
+  TI_RATE:    begin
+                // for future use...
+              end;
+   end; {case}
+end;
+
+procedure TfrmODMedNVA.lblGuidelineClick(Sender: TObject);
+var
+  TextStrings: TStringList;
+begin
+  inherited;
+  TextStrings := TStringList.Create;
+  try
+    TextStrings.Text := FGuideline.Text;
+    ReportBox(TextStrings, TC_GUIDELINE, TRUE);
+  finally
+    TextStrings.Free;
+  end;
+end;
+
+{ cboDosage ------------------------------------- }
+
+procedure TfrmODMedNVA.CheckFormAltDose(DispDrug: Integer);
+var
+  OI: Integer;
+  OIName: string;
+begin
+  if FAltChecked or (DispDrug = 0) then Exit;
+  OI := txtMed.Tag;
+  OIName := txtMed.Text;
+  CheckFormularyDose(DispDrug, OI, OIName, FNonVADlg);
+  if OI <> txtMed.Tag then
+  begin
+    ResetOnMedChange;
+    txtMed.Tag  := OI;
+    txtMed.Text := OIName;
+    SetOnMedSelect;
+  end;
+end;
+
+procedure TfrmODMedNVA.cboDosageClick(Sender: TObject);
+var
+  DispDrug: Integer;
+begin
+  inherited;
+UpdateRelated(False);
+  DispDrug := StrToIntDef(ValueOf(FLD_DRUG_ID), 0);
+  if cboDosage.Text = '' then    //cla 3/18/04
+  begin
+    DispDrug := 0;
+    cboDosage.ItemIndex := -1;
+  end;
+  {  hds8084
+  if DispDrug > 0 then
+  begin
+    if not FSuppressMsg then begin
+      pnlMessage.TabOrder := cboDosage.TabOrder + 1;
+      DispOrderMessage(DispenseMessage(DispDrug));
+    end;
+    x := QuantityMessage(DispDrug);
+  end
+  else x := '';
+  }
+  with cboDosage do
+    if (ItemIndex > -1) and (Piece(Items[ItemIndex], U, 3) = 'NF')
+      then CheckFormAltDose(DispDrug);
+end;
+
+procedure TfrmODMedNVA.cboDosageChange(Sender: TObject);
+begin
+  inherited;
+  UpdateRelated;
+end;
+
+procedure TfrmODMedNVA.cboDosageExit(Sender: TObject);
+begin
+  inherited;
+  if ActiveControl = memMessage then
+  begin
+    memMessage.SendToBack;
+    PnlMessage.Visible := False;
+    Exit;
+  end;
+  if ActiveControl = memComment then
+  begin
+   if PnlMessage.Visible = true then
+   begin
+     memMessage.SendToBack;
+     PnlMessage.Visible := False;
+   end;
+  end
+  else if (ActiveControl <> btnSelect) and (ActiveControl <> memComment) then
+  begin
+   if PnlMessage.Visible = true then
+   begin
+     memMessage.SendToBack;
+     PnlMessage.Visible := False;
+   end;
+   cboDosageClick(Self);
+  end;
+end;
+
+{ cboRoute -------------------------------------- }
+
+procedure TfrmODMedNVA.cboRouteChange(Sender: TObject);
+begin
+  inherited;
+  with cboRoute do
+    if ItemIndex > -1 then
+    begin
+      if Piece(Items[ItemIndex], U, 5) = '1'
+        then tabDose.Tabs[0] := 'Dosage / Rate'
+        else tabDose.Tabs[0] := 'Dosage';
+    end;
+  cboDosage.Caption := tabDose.Tabs[0];
+  if Sender <> Self then ControlChange(Sender);
+end;
+
+procedure TfrmODMedNVA.cboRouteExit(Sender: TObject);
+begin
+  inherited;
+end;
+
+{ cboSchedule ----------------------------------- }
+
+procedure TfrmODMedNVA.cboScheduleClick(Sender: TObject);
+begin
+  inherited;
+  UpdateRelated(False);
+end;
+
+procedure TfrmODMedNVA.cboScheduleChange(Sender: TObject);
+begin
+  inherited;
+  UpdateRelated;
+end;
+
+procedure TfrmODMedNVA.cboScheduleExit(Sender: TObject);
+begin
+end;
+
+{ values changing }
+
+function TfrmODMedNVA.OutpatientSig: string;
+var
+  Dose, Route, Schedule: string;
+begin
+  case tabDose.TabIndex of
+  TI_DOSE:
+    begin
+      if ValueOf(FLD_TOTALDOSE) = ''
+        then Dose := ValueOf(FLD_LOCALDOSE)
+        else Dose := ValueOf(FLD_UNITNOUN);
+      CheckDecimal(Dose);
+      Route := ValueOf(FLD_ROUTE_EX);
+      if (Length(Route) > 0) and (Length(FSigPrep) > 0) then Route := FSigPrep + ' ' + Route;
+      if Length(Route) = 0 then Route := ValueOf(FLD_ROUTE_NM);
+      Schedule := ValueOf(FLD_SCHED_EX);
+      if Length(Schedule) = 0 then Schedule := ValueOf(FLD_SCHEDULE);
+      Result := FSIGVerb + ' ' + Dose + ' ' + Route + ' ' + Schedule;
+    end;
+  end; {case}
+end;
+
+function TfrmODMedNVA.ConstructedDoseFields(const ADose: string; PrependName: Boolean = FALSE): string;
+var
+  i, DrugIndex: Integer;
+  UnitsPerDose, Strength: Extended;
+  Units, Noun, AName: string;
+begin
+  DrugIndex := -1;
+  for i := 0 to Pred(FAllDrugs.Count) do
+    if AnsiSameText(Piece(FAllDrugs[i], U, 1), FDrugID) then
+    begin
+      DrugIndex := i;
+      Break;
+    end;
+  Strength := StrToFloatDef(Piece(FAllDrugs[DrugIndex], U, 2), 0);
+  Units    := Piece(FAllDrugs[DrugIndex], U, 3);
+  AName    := Piece(FAllDrugs[DrugIndex], U, 4);
+  if FAllDoses.Count > 0
+    then Noun := Piece(Piece(FAllDoses[0], U, 3), '&', 4)
+    else Noun := '';
+  if Strength > 0
+    then UnitsPerDose := ExtractFloat(ADose) / Strength
+    else UnitsPerDose := 0;
+  if (UnitsPerDose > 1) and (Noun <> '') and (CharAt(Noun, Length(Noun)) <> 'S')
+    then Noun := Noun + 'S';
+  Result := FloatToStr(ExtractFloat(ADose)) + '&' + Units + '&' + FloatToStr(UnitsPerDose)
+            + '&' + Noun + '&' + ADose + '&' + FDrugID + '&' + FloatToStr(Strength) + '&'
+            + Units;
+  if PrependName then Result := AName + U + FloatToStr(Strength) + Units + U + U +
+                                Result + U + ADose;
+  Result := UpperCase(Result);
+end;
+
+function TfrmODMedNVA.FindDoseFields(const Drug, ADose: string): string;
+var
+  i: Integer;
+  x: string;
+begin
+  Result := '';
+  x := ADose + U + Drug + U;
+  for i := 0 to Pred(FAllDoses.Count) do
+  begin
+    if AnsiSameText(x, Copy(FAllDoses[i], 1, Length(x))) then
+    begin
+      Result := Piece(FAllDoses[i], U, 3);
+      Break;
+    end;
+  end;
+end;
+
+function TfrmODMedNVA.FindCommonDrug(DoseList: TStringList): string;
+// DoseList[n] = DoseText ^ Dispense Drug Pointer
+var
+  i, j, UnitIndex: Integer;
+  DrugStrength, DoseValue, UnitsPerDose: Extended;
+  DrugOK, PossibleDoses, SplitTab: Boolean;
+  ADrug, ADose, DoseFields, DoseUnits, DrugUnits: string;
+  FoundDrugs: TStringList;
+
+  procedure SaveDrug(const ADrug: string; UnitsPerDose: Extended);
+  var
+    i, DrugIndex: Integer;
+    CurUnits: Extended;
+  begin
+    DrugIndex := -1;
+    for i := 0 to Pred(FoundDrugs.Count) do
+      if AnsiSameText(Piece(FoundDrugs[i], U, 1), ADrug) then DrugIndex := i;
+    if DrugIndex = -1 then FoundDrugs.Add(ADrug + U + FloatToStr(UnitsPerDose)) else
+    begin
+      CurUnits := StrToFloatDef(Piece(FoundDrugs[DrugIndex], U, 2), 0);
+      if UnitsPerDose > CurUnits
+        then FoundDrugs[DrugIndex] := ADrug + U + FloatToStr(UnitsPerDose);
+    end;
+  end;
+
+  procedure KillDrug(const ADrug: string);
+  var
+    i, DrugIndex: Integer;
+  begin
+    DrugIndex := -1;
+    for i := 0 to Pred(FoundDrugs.Count) do
+      if AnsiSameText(Piece(FoundDrugs[i], U, 1), ADrug) then DrugIndex := i;
+    if DrugIndex > -1 then FoundDrugs.Delete(DrugIndex);
+  end;
+
+begin
+  Result := '';
+  if FInptDlg then                                // inpatient dialog
+  begin
+    DrugOK := True;
+    for i := 0 to Pred(DoseList.Count) do
+    begin
+      ADrug := Piece(DoseList[i], U, 2);
+      if ADrug = '' then DrugOK := False;
+      if Result = '' then Result := ADrug;
+      if not AnsiSameText(ADrug, Result) then DrugOK := False;
+      if not DrugOK then Break;
+    end;
+    
+    if not DrugOK then Result :='';
+  end else                                        // outpatient dialog
+  begin
+    // check the dose combinations for each dispense drug
+    FoundDrugs := TStringList.Create;
+    try
+      if FAllDoses.Count > 0
+        then PossibleDoses := Length(Piece(Piece(FAllDoses[0], U, 3), '&', 1)) > 0
+        else PossibleDoses := False;
+      for i := 0 to Pred(FAllDrugs.Count) do
+      begin
+        ADrug := Piece(FAllDrugs[i], U, 1);
+        DrugOK := True;
+        DrugStrength := StrToFloatDef(Piece(FAllDrugs[i], U, 2), 0);
+        DrugUnits := Piece(FAllDrugs[i], U, 3);
+        SplitTab := Piece(FAllDrugs[i], U, 5) = '1';
+        for j := 0 to Pred(DoseList.Count) do
+        begin
+          ADose:= Piece(DoseList[j], U, 1);
+          DoseFields := FindDoseFields(ADrug, ADose);  // get the idnode for the dose/drug combination
+          if not PossibleDoses then
+          begin
+            if DoseFields = '' then DrugOK := False else SaveDrug(ADrug, 0);
+          end else
+          begin
+            DoseValue := StrToFloatDef(Piece(DoseFields, '&', 1), 0);
+            if DoseValue = 0 then DoseValue := ExtractFloat(ADose);
+            UnitsPerDose := DoseValue / DrugStrength;
+            if (Frac(UnitsPerDose) = 0) or (SplitTab and (Frac(UnitsPerDose) = 0.5))
+              then SaveDrug(ADrug, UnitsPerDose)
+              else DrugOK := False;
+            // make sure this dose is using the same units as the drug
+            if DoseFields = '' then
+            begin
+              for UnitIndex := 1 to Length(ADose) do
+                if not (ADose[UnitIndex] in ['0'..'9','.']) then Break;
+              DoseUnits := Copy(ADose, UnitIndex, Length(ADose));
+            end
+            else DoseUnits := Piece(DoseFields, '&', 2);
+            if not AnsiSameText(DoseUnits, DrugUnits) then DrugOK := False;
+          end;
+          if not DrugOK then
+          begin
+            KillDrug(ADrug);
+            Break;
+          end; {if not DrugOK}
+        end; {with..for j}
+      end; {for i}
+      if FoundDrugs.Count > 0 then
+      begin
+        if not PossibleDoses then Result := Piece(FoundDrugs[0], U, 1) else
+        begin
+          UnitsPerDose := 99999999;
+          for i := 0 to Pred(FoundDrugs.Count) do
+          begin
+            if StrToFloatDef(Piece(FoundDrugs[i], U, 2), 99999999) < UnitsPerDose then
+            begin
+              Result := Piece(FoundDrugs[i], U, 1);
+              UnitsPerDose := StrToFloatDef(Piece(FoundDrugs[i], U, 2), 99999999);
+            end; {if StrToFloatDef}
+          end; {for i..FoundDrugs}
+        end; {if not..else PossibleDoses}
+      end; {if FoundDrugs}
+    finally
+      FoundDrugs.Free;
+    end; {try}
+  end; {if..else FInptDlg}
+end; {FindCommonDrug}
+
+procedure TfrmODMedNVA.ControlChange(Sender: TObject);
+var
+  x,ADose,AUnit,ADosageText: string;
+  DoseList: TStringList;
+begin
+  inherited;
+  if csLoading in ComponentState then Exit;       // to prevent error caused by txtRefills
+  if Changing then Exit;
+  if txtMed.Tag = 0 then Exit;
+  ADose := '';
+  AUnit := '';
+  ADosageText := '';
+  FUpdated := FALSE;
+  Responses.Clear;
+  if self.MedName = '' then Responses.Update('ORDERABLE',  1, IntToStr(txtMed.Tag), txtMed.Text)
+  else Responses.Update('ORDERABLE',  1, IntToStr(txtMed.Tag), self.MedName);
+  DoseList := TStringList.Create;
+  case tabDose.TabIndex of
+  TI_DOSE:
+    begin
+      if (cboDosage.ItemIndex < 0) and (Length(cboDosage.Text) > 0) then
+      begin
+        // try to resolve freetext dose and add it as a new item to the combobox
+        ADosageText := cboDosage.Text;
+        ADose := Piece(ADosageText,' ',1);
+        Delete(ADosageText,1,Length(ADose)+1);
+        ADosageText := ADose + Trim(ADosageText);
+        DoseList.Add(ADosageText);
+        FDrugID := FindCommonDrug(DoseList);
+        if FDrugID <> '' then
+        begin
+          if ExtractFloat(cboDosage.Text) > 0 then
+          begin
+            x := ConstructedDoseFields(cboDosage.Text, TRUE);
+            FDrugID := '';
+            with cboDosage do ItemIndex := cboDosage.Items.Add(x);
+          end;
+        end;
+      end;
+      x := ValueOf(FLD_DOSETEXT);    Responses.Update('INSTR',    1, x,  x);
+      x := ValueOf(FLD_DRUG_ID);     Responses.Update('DRUG',     1, x, '');
+      x := ValueOf(FLD_DOSEFLDS);    Responses.Update('DOSE',     1, x, '');
+      x := ValueOf(FLD_STRENGTH);
+      // if outpt or inpt order with no total dose (i.e., topical)
+      if (not FInptDlg) or (ValueOf(FLD_TOTALDOSE) = '')
+                                then Responses.Update('STRENGTH', 1, x,  x);
+      // if no strength for dosage, use dispense drug name
+      if Length(x) = 0 then
+      begin
+        x := ValueOf(FLD_DRUG_NM);
+        if Length(x) > 0        then Responses.Update('NAME',     1, x,  x);
+      end;
+      x := ValueOf(FLD_ROUTE_AB);
+      if Length(x) = 0 then x := ValueOf(FLD_ROUTE_NM);
+      if Length(ValueOf(FLD_ROUTE_ID)) > 0
+                                then Responses.Update('ROUTE',    1, ValueOf(FLD_ROUTE_ID), x)
+                                else Responses.Update('ROUTE',    1, '', x);
+      x := ValueOf(FLD_SCHEDULE);    Responses.Update('SCHEDULE', 1, x,  x); // CQ:7297, 7534
+    end;
+  end; {case TabDose.TabIndex}
+  DoseList.Free;
+  Responses.Update('URGENCY',   1, ValueOf(FLD_PRIOR_ID), '');
+  Responses.Update('COMMENT',   1, TX_WPTYPE, ValueOf(FLD_COMMENT));
+
+  if Length(calStart.Text) > 0 then
+     Responses.Update('START', 1, calStart.Text, 'Start Date: ' + calStart.Text);  //cla 7-17-03
+     
+  x := ValueOf(FLD_STATEMENTS);
+  Responses.Update('STATEMENTS',1, TX_WPTYPE, x);
+
+
+ if FInptDlg then                       // inpatient orders
+  begin
+    Responses.Update('NOW',     1, ValueOf(FLD_NOW_ID), ValueOf(FLD_NOW_NM));
+  end else
+  begin
+     x := OutpatientSig;                 Responses.Update('SIG',     1, TX_WPTYPE, x);
+ end;
+  memOrder.Text := Responses.OrderText;
+end;
+
+{ complex dose ------------------------------------------------------------------------------ }
+
+{ General Functions - get & set cell values}
+
+procedure FindInCombo(const x: string; AComboBox: TORComboBox);
+var
+  i, Found: Integer;
+begin
+  with AComboBox do
+  begin
+    i := 0;
+    Found := -1;
+    while (i < Items.Count) and (Found < 0) do
+    begin
+      if CompareText(Copy(DisplayText[i], 1, Length(x)), x) = 0 then Found := i;
+      Inc(i);
+    end; {while}
+    if Found > -1 then
+    begin
+      ItemIndex := Found;
+      Application.ProcessMessages;
+      SelStart  := 1;
+      SelLength := Length(Items[Found]);
+    end else
+    begin
+      Text := x;
+      SelStart := Length(x);
+    end;
+  end; {with AComboBox}
+end;
+
+procedure TfrmODMedNVA.grdDosesExit(Sender: TObject);
+begin
+  inherited;
+  UpdateRelated(FALSE);
+  RestoreDefaultButton;
+  RestoreCancelButton;
+end;
+
+function TfrmODMedNVA.ValueOf(FieldID: Integer; ARow: Integer = -1): string;
+var
+  y: string;
+  stmt: Integer;
+{ Contents of cboDosage
+    DrugName^Strength^NF^TDose&Units&U/D&Noun&LDose&Drug^DoseText^CostText^MaxRefills
+  Contents of grid cells  (Only the first tab piece for each cell is drawn)
+    Dosage    <TAB> DosageFields
+    RouteText <TAB> IEN^RouteName^Abbreviation
+    Schedule  <TAB> (nothing)
+    Duration  <TAB> Duration^Units }
+
+  // the following functions were created to get rid of a compile warning saying the
+  // return value may be undefined - too much branching logic in the case statements
+  // for the compiler to handle
+
+  function GetSchedule: string;
+  begin
+    Result := UpperCase(cboSchedule.Text);
+    if chkPRN.Checked then Result := Result + ' PRN';
+    if UpperCase(Copy(Result, Length(Result) - 6, Length(Result))) = 'PRN PRN'
+      then Result := Copy(Result, 1, Length(Result) - 4);
+  end;
+
+  function GetScheduleEX: string;
+  begin
+    Result := '';
+    with cboSchedule do
+      if ItemIndex > -1 then Result := Piece(Items[ItemIndex], U, 2);
+    if (Length(Result) > 0) and chkPRN.Checked then Result := Result + ' AS NEEDED';
+    if UpperCase(Copy(Result, Length(Result) - 18, Length(Result))) = 'AS NEEDED AS NEEDED'
+      then Result := Copy(Result, 1, Length(Result) - 10);
+  end;
+
+begin
+  Result := '';
+  if ARow < 0 then                                // use single dose controls
+  begin
+    case FieldID of
+    FLD_DOSETEXT  : with cboDosage do
+                      if ItemIndex > -1 then Result := Uppercase(Piece(Items[ItemIndex], U, 5))
+                                        else Result := Uppercase(Text);
+    FLD_LOCALDOSE : with cboDosage do
+                      if ItemIndex > -1 then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 5)
+                                        else Result := Uppercase(Text);
+    FLD_STRENGTH  : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 2);
+    FLD_DRUG_ID   : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 6);
+    FLD_DRUG_NM   : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 1);
+    FLD_DOSEFLDS  : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 4);
+    FLD_TOTALDOSE : with cboDosage do
+                      if ItemIndex > -1 then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 1);
+    FLD_UNITNOUN  : with cboDosage do
+                      if ItemIndex > -1 then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 3) + ' '
+                                                     + Piece(Piece(Items[ItemIndex], U, 4), '&', 4);
+    FLD_ROUTE_ID  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 1);
+    FLD_ROUTE_NM  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 2)
+                                        else Result := Text;
+    FLD_ROUTE_AB  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 3);
+    FLD_ROUTE_EX  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 4);
+    FLD_SCHEDULE  : begin
+                      Result := GetSchedule;
+                    end;
+    FLD_SCHED_EX  : begin
+                      Result := GetScheduleEX;
+                    end;
+    FLD_SCHED_TYP : with cboSchedule do
+                      if ItemIndex > -1 then Result := Piece(Items[ItemIndex], U, 3);
+    FLD_QTYDISP   : with cboDosage do
+                      begin
+                        if ItemIndex > -1 then Result := Piece(Items[ItemIndex], U, 8);
+                        if (Result = '') and (Items.Count > 0) then Result := Piece(Items[0], U, 8);
+                        if Result <> ''
+                          then Result := 'Qty (' + Result + ')'
+                          else Result := 'Quantity';
+                      end;
+
+    FLD_COMMENT   : Result := memComment.Text;
+
+    FLD_START     : Result := FormatFMDateTime('mmm dd,yy',calStart.FMDateTime);
+
+    FLD_STATEMENTS : with lbStatements do
+                     for stmt := 0 to lbStatements.Items.Count-1 do
+                     if(lbStatements.Checked[stmt]) then
+                     begin
+                        y := #13#10 + lbStatements.Items.Strings[stmt] + '  ';
+                          Result := Result + y;
+                     end;
+
+    end; {case FieldID}
+   end;                          // use complex dose controls
+end;
+
+function TfrmODMedNVA.ValueOfResponse(FieldID: Integer; AnInstance: Integer = 1): string;
+var
+  x: string;
+begin
+  case FieldID of
+  FLD_SCHEDULE  : Result := Responses.IValueFor('SCHEDULE', AnInstance);
+  FLD_UNITNOUN  : begin
+                    x := Responses.IValueFor('DOSE',   AnInstance);
+                    Result := Piece(x, '&', 3) + ' ' + Piece(x, '&', 4);
+                  end;
+  FLD_DOSEUNIT  : begin
+                    x := Responses.IValueFor('DOSE',   AnInstance);
+                    Result := Piece(x, '&', 3);
+                  end;
+  FLD_DRUG_ID   : Result := Responses.IValueFor('DRUG',     AnInstance);
+  FLD_INSTRUCT  : Result := Responses.IValueFor('INSTR',    AnInstance);
+  FLD_SUPPLY    : Result := Responses.IValueFor('SUPPLY',   AnInstance);
+  FLD_QUANTITY  : Result := Responses.IValueFor('QTY',      AnInstance);
+  FLD_ROUTE_ID  : Result := Responses.IValueFor('ROUTE',    AnInstance);
+  FLD_EXPIRE    : Result := Responses.IValueFor('DAYS',     AnInstance);
+  FLD_ANDTHEN   : Result := Responses.IValueFor('CONJ',     AnInstance);
+  end;
+end;
+
+procedure TfrmODMedNVA.UpdateStartExpires(const CurSchedule: string);
+var
+  ShowText, Duration, ASchedule: string;
+  AdminTime:    TFMDateTime;
+  Interval, PrnPos: Integer;
+begin
+  if Length(CurSchedule)=0 then Exit;
+  ASchedule := Trim(CurSchedule);
+  {if (Pos('^',ASchedule)=0) then  //GE  CQ7506
+  begin
+    PrnPos := Pos('PRN',ASchedule);
+    if (PrnPos > 1) and (CharAt(ASchedule,PrnPos-1) <> ';') then
+      Delete(ASchedule, PrnPos, Length(ASchedule));
+  end  }
+  if (Pos('^',ASchedule)>0) then
+  begin
+    PrnPos := Pos('PRN',ASchedule);
+    if (PrnPos > 1) and (CharAt(ASchedule,PrnPos-1)=' ') then
+      Delete(ASchedule, PrnPos-1, 4);
+  end;
+  ASchedule := Trim(ASchedule);
+  if Length(ASchedule)>0 then
+      LoadAdminInfo(ASchedule, txtMed.Tag, ShowText, AdminTime, Duration)
+  else Exit;
+  if AdminTime > 0 then
+  begin
+    ShowText := 'Expected First Dose: ';
+    Interval := Trunc(FMDateTimeToDateTime(AdminTime) - FMDateTimeToDateTime(FMToday));
+    case Interval of
+    0: ShowText := ShowText + 'TODAY ' + FormatFMDateTime('(mmm dd, yy) at hh:nn', AdminTime);
+    1: ShowText := ShowText + 'TOMORROW ' + FormatFMDateTime('(mmm dd, yy) at hh:nn', AdminTime);
+    else ShowText := ShowText + FormatFMDateTime('mmm dd, yy at hh:nn', AdminTime);
+    end;
+  lblAdminTime.Caption := ShowText;
+  FAdminTimeLbl := lblAdminTime.Caption;
+  end
+  else lblAdminTime.Caption := '';
+end;
+
+procedure TfrmODMedNVA.UpdateRelated(DelayUpdate: Boolean = TRUE);
+begin
+  timCheckChanges.Enabled := False;               // turn off timer
+  if DelayUpdate
+    then timCheckChanges.Enabled := True          // restart timer
+    else timCheckChangesTimer(Self);              // otherwise call directly
+end;
+
+procedure TfrmODMedNVA.timCheckChangesTimer(Sender: TObject);
+const
+  UPD_NONE     = 0;
+  UPD_QUANTITY = 1;
+  UPD_SUPPLY   = 2;
+var
+  CurUnits, CurSchedule, CurInstruct, CurDispDrug, CurDuration, TmpSchedule, x, x1: string;
+  CurScheduleIN, CurScheduleOut: string;
+  CurQuantity, CurSupply, i, pNum, j: Integer;
+ { LackQtyInfo,} SaveChanging: Boolean;
+begin
+  inherited;
+  timCheckChanges.Enabled := False;
+  ControlChange(Self);
+  SaveChanging := Changing;
+  Changing := TRUE;
+  // don't allow Exit procedure so Changing gets reset appropriately
+  CurUnits    := '';
+  CurSchedule := '';
+  CurDuration := '';
+ // LackQtyInfo := False;
+  i := Responses.NextInstance('DOSE', 0);
+  while i > 0 do
+  begin
+    x := ValueOfResponse(FLD_DOSEUNIT,  i);
+ //   if x = '' then LackQtyInfo := TRUE;  //StrToIntDef(x, 0) = 0
+    CurUnits    := CurUnits   + x  + U;
+    x := ValueOfResponse(FLD_SCHEDULE,  i);
+ //   if Length(x) = 0         then LackQtyInfo := TRUE;
+    CurScheduleOut := CurScheduleOut + x + U;
+    x1 := ValueOf(FLD_SEQUENCE,i);
+    if Length(x1)>0 then
+    begin
+      X1 := CharAt(X1,1);
+      CurScheduleIn := CurScheduleIn + x1 + ';' + x + U;
+    end
+    else
+      CurScheduleIn := CurScheduleIn + ';' + x + U;
+    x := ValueOfResponse(FLD_EXPIRE,    i);
+    CurDuration := CurDuration + x + '~';
+    x := ValueOfResponse(FLD_ANDTHEN,   i);
+    CurDuration := CurDuration + x + U;
+    x := ValueOfResponse(FLD_DRUG_ID,   i);
+    CurDispDrug := CurDispDrug + x + U;
+    x := ValueOfResponse(FLD_INSTRUCT,  i);
+    CurInstruct := CurInstruct + x + U;
+    i := Responses.NextInstance('DOSE', i);
+  end;
+
+  pNum := 1;
+  while Length( Piece(CurScheduleIn,U,pNum)) > 0 do
+    pNum := pNum + 1;
+  if Length(Piece(CurScheduleIn,U,pNum)) < 1 then
+    for j := 1 to pNum - 1 do
+    begin
+      if j = pNum -1 then
+        TmpSchedule := TmpSchedule + ';' + Piece(Piece(CurScheduleIn,U,j),';',2)
+      else
+        TmpSchedule := TmpSchedule + Piece(CurScheduleIn,U,j) + U
+    end;
+  CurScheduleIn := TmpSchedule;
+  CurQuantity := StrToIntDef(ValueOfResponse(FLD_QUANTITY) ,0);
+  CurSupply   := StrToIntDef(ValueOfResponse(FLD_SUPPLY)   ,0);
+  if FInptDlg then
+  begin
+    CurSchedule := CurScheduleIn;
+    if Pos('^',CurSchedule)>0 then
+    begin
+      if Pos('PRN',Piece(CurSchedule,'^',1))>0 then
+        if lblAdminTime.Visible then
+          lblAdminTime.Caption := '';
+    end;
+    if CurSchedule <> FLastSchedule then UpdateStartExpires(CurSchedule);
+    if Responses.EventType in ['A','D','T','M','O'] then lblAdminTime.Visible := False;
+  end;
+  if not FInptDlg then
+  begin
+    CurSchedule := CurScheduleOut;
+  end;
+
+  FLastUnits    := CurUnits;
+  FLastSchedule := CurSchedule;
+  FLastDispDrug := CurDispDrug;
+  FLastQuantity := CurQuantity;
+  FLastSupply   := CurSupply;
+  if (ActiveControl <> nil) and (ActiveControl.Parent <> cboDosage)
+    then cboDosage.Text := Piece(cboDosage.Text, TAB, 1);
+  Changing := SaveChanging;
+  if FUpdated then ControlChange(Self);
+end;
+
+procedure TfrmODMedNVA.cmdAcceptClick(Sender: TObject);
+begin
+  cmdAccept.SetFocus;
+  inherited;
+end;
+procedure TfrmODMedNVA.CheckDecimal(var AStr: string);
+var
+  Number: double;
+  DUName,TabletNum,tempStr: string;
+  ToWord: string;
+  ie,code: integer;
+begin
+  ToWord := '';
+  tempStr := AStr;
+  TabletNum := Piece(AStr,' ',1);
+  if CharAt(TabletNum,1)='.' then
+  begin
+    if CharAt(TabletNum,2) in ['0','1','2','3','4','5','6','7','8','9'] then
+    begin
+      TabletNum := '0' + TabletNum;
+      AStr := '0' + AStr;
+    end;
+  end;
+  DUName := Piece(AStr,' ',2);
+  if Pos('TABLET',upperCase(DUName))= 0 then
+    Exit;
+  if (Length(TabletNum)>0) and (Length(DUName)>0) then
+  begin
+    if CharAt(TabletNum,1) <> '0' then
+    begin
+      Val(TabletNum, ie, code);
+      if ie = 0 then begin end;
+      if code <> 0 then
+        Exit;
+    end;
+    try
+      begin
+        Number := StrToFloat(TabletNum);
+        if Number = 0.5 then
+          ToWord := 'ONE-HALF';
+        if ( Number >= 0.333 ) and  ( Number <= 0.334 ) then
+          ToWord := 'ONE-THIRD';
+        if Number = 0.25 then
+          ToWord := 'ONE-FOURTH';
+        if ( Number >= 0.66 ) and ( Number <= 0.67 ) then
+          ToWord := 'TWO-THIRDS';
+        if Number = 0.75 then
+          ToWord := 'THREE-FOURTHS';
+        if Number = 1 then
+          ToWord := 'ONE';
+        if Number = 2 then
+          ToWord := 'TWO';
+        if Number = 3 then
+          ToWord := 'THREE';
+        if Number = 4 then
+          ToWord := 'FOUR';
+        if Number = 5 then
+          ToWord := 'FIVE';
+        if Number = 6 then
+          ToWord := 'SIX';
+        if (Length(ToWord) > 0) then
+           AStr :=  ToWord + ' ' + DUName;
+      end
+    except
+      on EConvertError do AStr := tempStr;
+    end;
+  end;
+end;
+
+procedure TfrmODMedNVA.chkPRNClick(Sender: TObject);
+var
+  tempSch: string;
+  PRNPos: integer;
+begin
+  inherited;
+  {if chkPRN.Checked then lblAdminTime.Caption := ''
+  else
+  begin
+    lblAdminTime.Caption := FAdminTimeLbl;
+  end;
+  ControlChange(Self);
+  }
+  if chkPRN.Checked then
+  begin
+     lblAdminTime.Caption := '';
+     PrnPos := Pos('PRN',cboSchedule.Text);
+     if (PrnPos < 1) then
+        UpdateStartExpires(cboSchedule.Text + ' PRN');
+  end
+  else
+  begin
+    if Length(Trim(cboSchedule.Text))>0 then
+    begin
+      tempSch := ';'+Trim(cboSchedule.Text);
+      UpdateStartExpires(tempSch);
+    end;
+    lblAdminTime.Caption := FAdminTimeLbl;
+    
+  end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODMedNVA.grdDosesKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+  VK_ESCAPE:
+    begin
+      ActiveControl := FindNextControl(Sender as TWinControl, False, True, False); //Previous control
+      Key := 0;
+    end;
+  VK_TAB:
+    begin
+      if ssShift in Shift then
+      begin
+        ActiveControl := tabDose; //Previeous control
+        Key := 0;
+      end
+      else if ssCtrl	in Shift then
+      begin
+        ActiveControl := memComment;
+        Key := 0;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmODMedNVA.grdDosesEnter(Sender: TObject);
+begin
+  inherited;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+function TfrmODMedNVA.DisableCancelButton(Control: TWinControl): boolean;
+var
+  i: integer;
+begin
+  if (Control is TButton) and TButton(Control).Cancel then begin
+    result := True;
+    FDisabledCancelButton := TButton(Control);
+    TButton(Control).Cancel := False;
+  end else begin
+    result := False;
+    for i := 0 to Control.ControlCount-1 do
+      if (Control.Controls[i] is TWinControl) then
+        if DisableCancelButton(TWinControl(Control.Controls[i])) then begin
+          result := True;
+          break;
+        end;
+  end;
+end;
+
+function TfrmODMedNVA.DisableDefaultButton(Control: TWinControl): boolean;
+var
+  i: integer;
+begin
+  if (Control is TButton) and TButton(Control).Default then begin
+    result := True;
+    FDisabledDefaultButton := TButton(Control);
+    TButton(Control).Default := False;
+  end else begin
+    result := False;
+    for i := 0 to Control.ControlCount-1 do
+      if (Control.Controls[i] is TWinControl) then
+        if DisableDefaultButton(TWinControl(Control.Controls[i])) then begin
+          result := True;
+          break;
+        end;
+  end;
+end;
+
+procedure TfrmODMedNVA.RestoreCancelButton;
+begin
+  if Assigned(FDisabledCancelButton) then begin
+    FDisabledCancelButton.Cancel := True;
+    FDisabledCancelButton := nil;
+  end;
+end;
+
+procedure TfrmODMedNVA.RestoreDefaultButton;
+begin
+  if Assigned(FDisabledDefaultButton) then begin
+    FDisabledDefaultButton.Default := True;
+    FDisabledDefaultButton := nil;
+  end;
+end;
+
+procedure TfrmODMedNVA.pnlMessageEnter(Sender: TObject);
+begin
+  inherited;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMedNVA.pnlMessageExit(Sender: TObject);
+begin
+  inherited;
+  RestoreDefaultButton;
+  RestoreCancelButton;
+end;
+
+procedure TfrmODMedNVA.memMessageKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_RETURN) or (Key = VK_ESCAPE) then
+  begin
+    Perform(WM_NEXTDLGCTL, 0, 0);
+    Key := 0;
+  end;
+end;
+
+procedure TfrmODMedNVA.FormResize(Sender: TObject);
+begin
+  inherited;
+  pnlFields.Height := cmdAccept.Top - 4 - pnlFields.Top;
+end;
+
+function TfrmODMedNVA.GetCacheChunkIndex(idx: integer): integer;
+begin
+  Result := idx div MED_CACHE_CHUNK_SIZE;
+end;
+
+procedure TfrmODMedNVA.lstQuickData(Sender: TObject; Item: TListItem);
+var
+  x: string;
+begin
+    x := FQuickItems[Item.Index];
+    Item.Caption := Piece(x, U, 2);
+    Item.Data := Pointer(StrToIntDef(Piece(x, U, 1), 0));
+end;
+
+procedure TfrmODMedNVA.LoadOTCStatements(Dest: TStrings);
+var tmplst: TStringList;
+  s: string;
+  i :Integer;
+begin
+    tmplst := TStringList.Create;
+    tmplst.Clear;
+    tCallV(tmplst, 'ORWPS REASON', [nil]);
+    if tmplst.Count > 0 then
+    begin
+      //  sort := tmplst.Strings[0];
+        for i := 0 to tmplst.Count-1 do
+        begin
+            s:= tmplst.Strings[i];
+            tmplst.Strings[i] := Piece(s,U,2);
+        end;
+        FastAssign(tmplst, Dest);
+    end;
+ end;
+
+function TfrmODMedNVA.FindQuickOrder(const x: string): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  if x = '' then Exit;
+  for i := 0 to Pred(FQuickItems.Count) do
+  begin
+    if (Result > -1) or (FQuickItems[i] = '') then Break;
+    if AnsiCompareText(x, Copy(Piece(FQuickItems[i],'^',2), 1, Length(x))) = 0 then Result := i;
+  end;
+end;
+procedure TfrmODMedNVA.lbStatementsClickCheck(Sender: TObject;
+  Index: Integer);
+begin
+  inherited;
+   ControlChange(self);
+end;
+
+procedure TfrmODMedNVA.lstChange(Sender: TObject; Item: TListItem;
+  Change: TItemChange);
+begin
+  inherited;
+  btnSelect.Enabled := (lstAll.ItemIndex > -1) or
+                       ((lstQuick.ItemIndex > -1) and
+                       (Assigned(lstQuick.Items[lstQuick.ItemIndex].Data)) and
+                       (Integer(lstQuick.Selected.Data) > 0)) ;
+  if (btnSelect.Enabled) and (FRemoveText) then
+    txtMed.Text := '';
+end;
+
+procedure TfrmODMedNVA.FormKeyPress(Sender: TObject; var Key: Char);
+begin
+ if (Key = #13) and (ActiveControl = txtMed) then
+  Key := #0   //Don't let the base class turn it into a forward tab!
+ else
+  inherited;
+end;
+
+function OIForNVA(AnIEN: Integer; ForNonVAMed: Boolean; HavePI: Boolean; PKIActive: Boolean): TStrings;
+var
+  PtType: Char;
+  NeedPI: Char;
+  IsPKIActive: Char;
+begin
+  if HavePI then NeedPI := 'Y' else NeedPI := 'N';
+  if ForNonVAMed then PtType := 'X' else PtType := 'O';
+  if PKIActive then IsPKIActive := 'Y' else IsPKIActive := 'N';
+  CallV('ORWDPS2 OISLCT', [AnIEN, PtType, Patient.DFN, NeedPI, IsPKIActive]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure CheckAuthForNVAMeds(var x: string);
+begin
+  x := Piece(sCallV('ORWDPS32 AUTHNVA', [Encounter.Provider]), U, 2);
+end;
+
+function TfrmODMedNVA.isUniqueQuickOrder(iText: string): Boolean;
+var
+  counter,i: Integer;
+begin
+  counter := 0;
+  Result := False;
+  if iText = '' then Exit;
+  for i := 0 to FQuickItems.Count-1 do
+    if AnsiCompareText(iText, Copy(Piece(FQuickItems[i],'^',2), 1, Length(iText))) = 0 then
+      Inc(counter);               //Found a Match
+  Result := counter = 1;
+end;
+
+procedure TfrmODMedNVA.DispOrderMessage(const AMessage: string);
+begin
+  if ContainsVisibleChar(AMessage) then
+  begin
+    image1.Visible := True;
+    memDrugMsg.Visible := True;
+    image1.Picture.Icon.Handle := LoadIcon(0, IDI_ASTERISK);
+    memDrugMsg.Lines.Clear;
+    memDrugMsg.Lines.SetText(PChar(AMessage));
+    if fShrinkDrugMsg then
+    begin
+      pnlBottom.Height := pnlBottom.Height + memDrugMsg.Height + 2;
+      fShrinkDrugMsg := False;
+    end;
+  end else
+  begin
+    image1.Visible := False;
+    memDrugMsg.Visible := False;
+    if not fShrinkDrugMsg then
+  //  begin
+  //    pnlBottom.Height := pnlBottom.Height - memDrugMsg.Height - 2;
+      fShrinkDrugMsg := True;
+ //   end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOIFA.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOIFA.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOIFA.dfm	(revision 1676)
@@ -0,0 +1,101 @@
+inherited frmODMedOIFA: TfrmODMedOIFA
+  Left = 0
+  Top = 0
+  Caption = 'Formulary Alternatives'
+  ClientHeight = 178
+  ClientWidth = 305
+  FormStyle = fsStayOnTop
+  OldCreateOrder = True
+  Position = poMainFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 305
+    Height = 13
+    Align = alTop
+    Caption = 'The selected drug is not in the formulary.  Alternatives are:'
+    ExplicitWidth = 273
+  end
+  object Label2: TStaticText [1]
+    Left = 0
+    Top = 134
+    Width = 305
+    Height = 17
+    Align = alBottom
+    Caption = 'Do you wish to use the selected alternative instead?'
+    TabOrder = 1
+    ExplicitWidth = 250
+  end
+  object lstFormAlt: TORListBox [2]
+    Left = 0
+    Top = 13
+    Width = 305
+    Height = 121
+    Align = alClient
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    OnClick = lstFormAltClick
+    Caption = 'The selected drug is not in the formulary.  Alternatives are:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object btnPanel: TPanel [3]
+    Left = 0
+    Top = 151
+    Width = 305
+    Height = 27
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 3
+    object cmdYes: TButton
+      Left = 74
+      Top = 3
+      Width = 72
+      Height = 21
+      Caption = 'Yes'
+      Default = True
+      Enabled = False
+      TabOrder = 0
+      OnClick = cmdYesClick
+    end
+    object cmdNo: TButton
+      Left = 162
+      Top = 3
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'No'
+      TabOrder = 1
+      OnClick = cmdNoClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Label2'
+        'Status = stsDefault')
+      (
+        'Component = lstFormAlt'
+        'Status = stsDefault')
+      (
+        'Component = btnPanel'
+        'Status = stsDefault')
+      (
+        'Component = cmdYes'
+        'Status = stsDefault')
+      (
+        'Component = cmdNo'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedOIFA'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOIFA.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOIFA.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOIFA.pas	(revision 1676)
@@ -0,0 +1,148 @@
+unit fODMedOIFA;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, fAutoSz, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODMedOIFA = class(TfrmBase508Form)
+    Label1: TLabel;
+    lstFormAlt: TORListBox;
+    Label2: TStaticText;
+    btnPanel: TPanel;
+    cmdYes: TButton;
+    cmdNo: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdYesClick(Sender: TObject);
+    procedure cmdNoClick(Sender: TObject);
+    procedure lstFormAltClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    FSelected: string;
+  end;
+
+procedure CheckFormularyOI(var AnIEN: Integer; var AName: string; ForInpatient: Boolean);
+procedure CheckFormularyDose(DispDrug: Integer; var OI: Integer; var OIName: string;
+  ForInpatient: Boolean);
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rODMeds, rMisc;
+
+procedure CheckFormularyOI(var AnIEN: Integer; var AName: string; ForInpatient: Boolean);
+
+const
+  TX_NO_FORM_ALT = 'This drug is not in the formulary!' + CRLF +
+                   'There are no formulary alternatives entered for this item.' + CRLF +
+                   'Please consult with your pharmacy before ordering this item.';
+  TC_NO_FORM_ALT = 'No Formulary Alternatives';
+
+var
+  frmODMedOIFA: TfrmODMedOIFA;
+  FormAltList: TStringList;
+begin
+  FormAltList := TStringList.Create;
+  try
+    LoadFormularyAltOI(FormAltList, AnIEN, ForInpatient);
+    if FormAltList.Count > 0 then
+    begin
+      frmODMedOIFA := TfrmODMedOIFA.Create(Application);
+      try
+        ResizeFormToFont(TForm(frmODMedOIFA));
+        with frmODMedOIFA do
+        begin
+          FastAssign(FormAltList, lstFormAlt.Items);
+          ShowModal;
+          if Length(FSelected) > 0 then
+          begin
+            AnIEN := StrToIntDef(Piece(FSelected, U, 1), 0);
+            AName := Piece(FSelected, U, 2);
+          end;
+        end; {with frmODMedOIFA}
+      finally
+        frmODMedOIFA.Release;
+      end; {frmODMedOIFA}
+    end
+    else messageDlg(TX_NO_FORM_ALT,mtWarning, [mbOK],0);
+  finally
+    FormAltList.Free;
+  end; {FormAltList}
+end;
+
+procedure CheckFormularyDose(DispDrug: Integer; var OI: Integer; var OIName: string;
+  ForInpatient: Boolean);
+var
+  frmODMedOIFA: TfrmODMedOIFA;
+  FormAltList: TStringList;
+begin
+  FormAltList := TStringList.Create;
+  try
+    LoadFormularyAltDose(FormAltList, DispDrug, OI, ForInpatient);
+    if FormAltList.Count > 0 then
+    begin
+      frmODMedOIFA := TfrmODMedOIFA.Create(Application);
+      try
+        ResizeFormToFont(TForm(frmODMedOIFA));
+        with frmODMedOIFA do
+        begin
+          FastAssign(FormAltList, lstFormAlt.Items);
+          ShowModal;
+          if Length(FSelected) > 0 then
+          begin
+            OI     := StrToIntDef(Piece(FSelected, U, 1), 0);
+            OIName := Piece(FSelected, U, 2);
+          end;
+        end; {with frmODMedOIFA}
+      finally
+        frmODMedOIFA.Release;
+      end; {frmODMedOIFA}
+    end; {if FormAltList}
+  finally
+    FormAltList.Free;
+  end; {FormAltList}
+end;
+
+procedure TfrmODMedOIFA.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FSelected := '';
+end;
+
+procedure TfrmODMedOIFA.lstFormAltClick(Sender: TObject);
+begin
+  inherited;
+  if lstFormAlt.ItemIndex > -1 then cmdYes.Enabled := True;
+end;
+
+procedure TfrmODMedOIFA.cmdYesClick(Sender: TObject);
+begin
+  inherited;
+  with lstFormAlt do if ItemIndex > -1 then FSelected := Items[ItemIndex];
+  Close;
+end;
+
+procedure TfrmODMedOIFA.cmdNoClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmODMedOIFA.FormShow(Sender: TObject);
+begin
+  inherited;
+  SetFormPosition(Self);
+end;
+
+procedure TfrmODMedOIFA.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);  
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOut.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOut.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOut.dfm	(revision 1676)
@@ -0,0 +1,507 @@
+inherited frmODMedOut: TfrmODMedOut
+  Left = 427
+  Top = 145
+  Height = 316
+  Caption = 'Outpatient Medication Order'
+  ExplicitHeight = 316
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMedication: TLabel [0]
+    Left = 6
+    Top = 4
+    Width = 52
+    Height = 13
+    Caption = 'Medication'
+  end
+  object lblDosage: TLabel [1]
+    Left = 202
+    Top = 45
+    Width = 28
+    Height = 13
+    Caption = 'TAKE'
+  end
+  object lblRoute: TLabel [2]
+    Left = 314
+    Top = 45
+    Width = 29
+    Height = 13
+    Caption = 'Route'
+  end
+  object lblSchedule: TLabel [3]
+    Left = 392
+    Top = 45
+    Width = 45
+    Height = 13
+    Caption = 'Schedule'
+  end
+  object lblDispense: TLabel [4]
+    Left = 6
+    Top = 45
+    Width = 70
+    Height = 13
+    Caption = 'Dispense Drug'
+  end
+  object Bevel1: TBevel [5]
+    Left = 192
+    Top = 0
+    Width = 4
+    Height = 227
+  end
+  object lblQuantity: TLabel [6]
+    Left = 470
+    Top = 45
+    Width = 39
+    Height = 13
+    Caption = 'Quantity'
+  end
+  object lblPickup: TLabel [7]
+    Left = 202
+    Top = 142
+    Width = 38
+    Height = 13
+    Caption = 'Pick Up'
+  end
+  object lblSC: TLabel [8]
+    Left = 314
+    Top = 142
+    Width = 43
+    Height = 13
+    Caption = 'SC? Y/N'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+  end
+  object lblRefills: TLabel [9]
+    Left = 470
+    Top = 91
+    Width = 28
+    Height = 13
+    Caption = 'Refills'
+  end
+  object lblComment: TLabel [10]
+    Left = 202
+    Top = 183
+    Width = 49
+    Height = 13
+    Caption = 'Comments'
+  end
+  object lblPriority: TLabel [11]
+    Left = 392
+    Top = 142
+    Width = 31
+    Height = 13
+    Caption = 'Priority'
+  end
+  object btnUnits: TSpeedButton [12]
+    Left = 248
+    Top = 61
+    Width = 63
+    Height = 15
+    Caption = 'TABLET(S)'
+    Flat = True
+    Glyph.Data = {
+      AE000000424DAE0000000000000076000000280000000E000000070000000100
+      0400000000003800000000000000000000001000000010000000000000000000
+      8000008000000080800080000000800080008080000080808000C0C0C0000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      330033333333333333003330333333733300330003333F87330030000033FFFF
+      F30033333333333333003333333333333300}
+    Layout = blGlyphRight
+    NumGlyphs = 2
+    Spacing = 0
+    OnClick = btnUnitsClick
+  end
+  object lblSIG: TLabel [13]
+    Left = 314
+    Top = 4
+    Width = 18
+    Height = 13
+    Caption = 'SIG'
+    Visible = False
+  end
+  object memComplex: TMemo [14]
+    Left = 202
+    Top = 45
+    Width = 262
+    Height = 91
+    Color = clBtnFace
+    TabOrder = 19
+    Visible = False
+  end
+  object txtSIG: TCaptionEdit [15]
+    Left = 314
+    Top = 18
+    Width = 200
+    Height = 21
+    Color = clInfoBk
+    TabOrder = 18
+    Visible = False
+    Caption = 'SIG'
+  end
+  object cboDispense: TORComboBox [16]
+    Left = 6
+    Top = 59
+    Width = 180
+    Height = 168
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2,4,3'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabPositions = '30,33'
+    TabOrder = 2
+    OnChange = ControlChange
+    OnExit = cboDispenseExit
+    OnMouseClick = cboDispenseMouseClick
+    CharsNeedMatch = 1
+  end
+  object cboMedication: TORComboBox [17]
+    Left = 6
+    Top = 18
+    Width = 180
+    Height = 208
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 11
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnChange = ControlChange
+    OnExit = cboMedicationSelect
+    OnMouseClick = cboMedicationSelect
+    OnNeedData = cboMedicationNeedData
+    CharsNeedMatch = 1
+  end
+  inherited memOrder: TCaptionMemo
+    Top = 235
+    TabOrder = 15
+    ExplicitTop = 235
+  end
+  object cboRoute: TORComboBox [19]
+    Left = 314
+    Top = 59
+    Width = 72
+    Height = 77
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboSchedule: TORComboBox [20]
+    Left = 392
+    Top = 59
+    Width = 72
+    Height = 77
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 5
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object memComments: TMemo [21]
+    Left = 202
+    Top = 197
+    Width = 311
+    Height = 32
+    ScrollBars = ssVertical
+    TabOrder = 12
+    OnChange = ControlChange
+    OnEnter = memCommentsEnter
+  end
+  object cboPriority: TORComboBox [22]
+    Left = 392
+    Top = 156
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 11
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboMedAlt: TORComboBox [23]
+    Left = 6
+    Top = 18
+    Width = 180
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 11
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    Visible = False
+    OnChange = ControlChange
+    OnExit = cboMedicationSelect
+    OnMouseClick = cboMedicationSelect
+    OnNeedData = cboMedicationNeedData
+    CharsNeedMatch = 1
+  end
+  object cboInstructions: TORComboBox [24]
+    Left = 203
+    Top = 59
+    Width = 45
+    Height = 77
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 80
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboPickup: TORComboBox [25]
+    Left = 202
+    Top = 156
+    Width = 106
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 9
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboSC: TORComboBox [26]
+    Left = 314
+    Top = 156
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 10
+    OnChange = ControlChange
+    OnEnter = cboSCEnter
+    CharsNeedMatch = 1
+  end
+  object txtQuantity: TCaptionEdit [27]
+    Left = 470
+    Top = 59
+    Width = 44
+    Height = 21
+    TabOrder = 6
+    OnChange = ControlChange
+    OnEnter = txtQuantityEnter
+    Caption = 'Quantity'
+  end
+  object txtRefills: TCaptionEdit [28]
+    Left = 470
+    Top = 105
+    Width = 31
+    Height = 21
+    TabOrder = 7
+    Text = '0'
+    OnChange = ControlChange
+    Caption = 'Refills'
+  end
+  object spnRefills: TUpDown [29]
+    Left = 501
+    Top = 105
+    Width = 15
+    Height = 21
+    Associate = txtRefills
+    Max = 11
+    TabOrder = 8
+  end
+  object cmdComplex: TButton [30]
+    Left = 202
+    Top = 18
+    Width = 106
+    Height = 21
+    Caption = 'Complex Dose...'
+    TabOrder = 17
+    OnClick = cmdComplexClick
+  end
+  inherited cmdAccept: TButton
+    Top = 235
+    TabOrder = 13
+    ExplicitTop = 235
+  end
+  inherited cmdQuit: TButton
+    Top = 262
+    TabOrder = 14
+    ExplicitTop = 262
+  end
+  inherited pnlMessage: TPanel
+    Left = 6
+    Top = 190
+    TabOrder = 16
+    ExplicitLeft = 6
+    ExplicitTop = 190
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memComplex'
+        'Status = stsDefault')
+      (
+        'Component = txtSIG'
+        'Status = stsDefault')
+      (
+        'Component = cboDispense'
+        'Status = stsDefault')
+      (
+        'Component = cboMedication'
+        'Status = stsDefault')
+      (
+        'Component = cboRoute'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = cboPriority'
+        'Status = stsDefault')
+      (
+        'Component = cboMedAlt'
+        'Status = stsDefault')
+      (
+        'Component = cboInstructions'
+        'Status = stsDefault')
+      (
+        'Component = cboPickup'
+        'Status = stsDefault')
+      (
+        'Component = cboSC'
+        'Status = stsDefault')
+      (
+        'Component = txtQuantity'
+        'Status = stsDefault')
+      (
+        'Component = txtRefills'
+        'Status = stsDefault')
+      (
+        'Component = spnRefills'
+        'Status = stsDefault')
+      (
+        'Component = cmdComplex'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMedOut'
+        'Status = stsDefault'))
+  end
+  object popUnits: TPopupMenu
+    AutoHotkeys = maManual
+    AutoPopup = False
+    Left = 271
+    Top = 76
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOut.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOut.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMedOut.pas	(revision 1676)
@@ -0,0 +1,619 @@
+unit fODMedOut;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, ORCtrls, StdCtrls, ORFn, ExtCtrls, uConst, ComCtrls, uCore, Mask,
+  Menus, Buttons, VA508AccessibilityManager;
+
+type
+  TfrmODMedOut = class(TfrmODBase)
+    lblMedication: TLabel;
+    cboMedication: TORComboBox;
+    lblDosage: TLabel;
+    lblRoute: TLabel;
+    cboRoute: TORComboBox;
+    lblSchedule: TLabel;
+    cboSchedule: TORComboBox;
+    lblDispense: TLabel;
+    cboDispense: TORComboBox;
+    memComments: TMemo;
+    cboPriority: TORComboBox;
+    Bevel1: TBevel;
+    cboMedAlt: TORComboBox;
+    cboInstructions: TORComboBox;
+    lblQuantity: TLabel;
+    cboPickup: TORComboBox;
+    lblPickup: TLabel;
+    cboSC: TORComboBox;
+    lblSC: TLabel;
+    lblRefills: TLabel;
+    txtQuantity: TCaptionEdit;
+    lblComment: TLabel;
+    lblPriority: TLabel;
+    txtRefills: TCaptionEdit;
+    spnRefills: TUpDown;
+    cmdComplex: TButton;
+    btnUnits: TSpeedButton;
+    txtSIG: TCaptionEdit;
+    lblSIG: TLabel;
+    popUnits: TPopupMenu;
+    memComplex: TMemo;
+    procedure cboMedicationNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboMedicationSelect(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboDispenseExit(Sender: TObject);
+    procedure cboDispenseMouseClick(Sender: TObject);
+    procedure cboSCEnter(Sender: TObject);
+    procedure txtQuantityEnter(Sender: TObject);
+    procedure btnUnitsClick(Sender: TObject);
+    procedure cmdComplexClick(Sender: TObject);
+    procedure memCommentsEnter(Sender: TObject);
+  private
+    { Private declarations }
+    FLastDrug: Integer;
+    FLastMedID: string;
+    FDispenseMsg: string;
+    FMedCombo: TORComboBox;
+    procedure CheckFormAlt;
+    procedure ResetOnMedChange;
+    procedure SetAskSC;
+    procedure SetAltCombo;
+    procedure SetInstructions;
+    procedure SetOnOISelect;
+    procedure SetMaxRefills;
+    procedure SetupNouns;
+    procedure SetComplex;
+    procedure SetSimple;
+    procedure UnitClick(Sender: TObject);
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, rODBase, fODMedFA, fODMedComplex;
+
+const
+  REFILLS_DFLT  = '0';
+  REFILLS_MAX   = 11;
+
+  TX_NO_MED     = 'Medication must be entered.';
+  TX_NO_DOSE    = 'Instructions must be entered.';
+  TX_NO_AMPER   = 'Instructions may not contain the ampersand (&) character.';
+  TX_NO_ROUTE   = 'Route must be entered.';
+  TX_NF_ROUTE   = 'Route not found in the Medication Routes file.';
+  TX_NO_SCHED   = 'Schedule must be entered.';
+  TX_NO_PICK    = 'A method for picking up the medication must be entered.';
+  TX_RNG_REFILL = 'The number of refills must be in the range of 0 through ';
+  TX_SCH_QUOTE  = 'Schedule must not have quotemarks in it.';
+  TX_SCH_MINUS  = 'Schedule must not have a dash at the beginning.';
+  TX_SCH_SPACE  = 'Schedule must have only one space in it.';
+  TX_SCH_LEN    = 'Schedule must be less than 70 characters.';
+  TX_SCH_PRN    = 'Schedule cannot include PRN - use Comments to enter PRN.';
+  TX_SCH_ZERO   = 'Schedule cannot be Q0';
+  TX_SCH_LSP    = 'Schedule may not have leading spaces.';
+  TX_SCH_NS     = 'Unable to resolve non-standard schedule.';
+  TX_OUTPT_IV   = 'This patient has not been admitted.  Only IV orders may be entered.';
+  TX_QTY_NV     = 'Unable to validate quantity.';
+  TX_QTY_MAIL   = 'Quantity for mailed items must be a whole number.';
+
+
+{ TfrmODBase common methods }
+
+procedure TfrmODMedOut.FormCreate(Sender: TObject);
+const
+  TC_RESTRICT = 'Ordering Restrictions';
+var
+  Restriction: string;
+begin
+  inherited;
+  AllowQuickOrder := True;
+  CheckAuthForMeds(Restriction);
+  if Length(Restriction) > 0 then
+  begin
+    InfoBox(Restriction, TC_RESTRICT, MB_OK);
+    Close;
+    Exit;
+  end;
+  FillerID := 'PSO';                        // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'PSO OERR';           // loads formatting info
+  StatusText('Loading Default Values');
+  CtrlInits.LoadDefaults(ODForMedOut);      // ODForMedOut returns TStrings with defaults
+  InitDialog;
+  CtrlInits.SetControl(cboPickup, 'Pickup'); // do only once, so don't do in InitDialog
+  PreserveControl(cboPickup);
+end;
+
+procedure TfrmODMedOut.InitDialog;
+begin
+  inherited;
+  FLastDrug := 0;
+  FLastMedID := '';
+  FDispenseMsg := '';
+  FMedCombo := cboMedication;                    // this must be before SetControl(cboMedication)
+  with CtrlInits do
+  begin
+    SetControl(cboMedication, 'ShortList');
+    cboMedication.InsertSeparator;
+    //SetControl(cboMedAlt,     'ShortList'); can't do this since it calls InitLongList
+    SetControl(cboSchedule,   'Schedules');
+    SetControl(cboPriority,   'Priorities');
+    //SetControl(cboPickup,     'Pickup');
+    SetControl(cboSC,         'SCStatus');
+  end;
+  SetAskSC;
+  StatusText('Retrieving List of Medications');
+  cboMedAlt.Visible := False;
+  cboMedication.Visible := True;
+  cboMedication.InitLongList('');
+  ActiveControl := cboMedication; //SetFocusedControl(FMedCombo);
+  SetSimple;
+  StatusText('');
+end;
+
+procedure TfrmODMedOut.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  AnInstr: string;
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT] then Responses.Remove('START', 1);
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    Changing := True;
+    SetControl(cboMedication, 'ORDERABLE', 1);
+    ResetOnMedChange;
+    SetOnOISelect;
+    SetAltCombo;
+    //cboMedicationSelect(Self);
+    SetControl(cboDispense,   'DRUG',      1);
+    SetInstructions;
+    SetControl(txtQuantity,   'QTY',       1);
+    SetControl(txtRefills,    'REFILLS',   1);
+    spnRefills.Position := StrToIntDef(txtRefills.Text, 0);
+    SetControl(cboPickup,     'PICKUP',    1);
+    SetControl(memComments,   'COMMENT',   1);
+    SetControl(cboPriority,   'URGENCY',   1);
+    { prevent the SIG from being part of the comments on pre-CPRS prescriptions }
+    if (OrderAction in [ORDER_COPY, ORDER_EDIT]) and (cboInstructions.Text = '') then
+    begin
+      AnInstr := TextForOrder(ID); //'SIG:  ' + memComments.Text;
+      OrderMessage(AnInstr);
+      lblSIG.Visible := True;
+      txtSIG.Visible := True;
+      txtSIG.Text := memComments.Text;
+      memComments.Clear;
+    end;
+    { can't edit the orderable item for a med order that has been released }
+    if (OrderAction = ORDER_EDIT) and OrderIsReleased(EditOrder)
+      then FMedCombo.Enabled := False;
+    Changing := False;
+    ControlChange(Self);
+  end;
+  if OrderAction <> ORDER_EDIT then SetFocusedControl(FMedCombo);
+end;
+
+procedure TfrmODMedOut.Validate(var AnErrMsg: string);
+var
+  Sched: Integer;
+  RouteID, RouteAbbr: string;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  if Length(cboMedAlt.Text) = 0           then SetError(TX_NO_MED);
+  // if memComplex is Visible, then the dosage fields were validated in fMedComplex
+  if memComplex.Visible = False then
+  begin
+    if Length(cboInstructions.Text) = 0     then SetError(TX_NO_DOSE);
+    if Pos('&', cboInstructions.Text) > 0   then SetError(TX_NO_AMPER);
+    if (Length(cboRoute.Text) = 0) and (not MedIsSupply(cboMedAlt.ItemIEN))
+                                            then SetError(TX_NO_ROUTE);
+    if (Length(cboRoute.Text) > 0) and (cboRoute.ItemIndex < 0) then
+    begin
+      LookupRoute(cboRoute.Text, RouteID, RouteAbbr);
+      if RouteID = '0'
+        then SetError(TX_NF_ROUTE)
+        else Responses.Update('ROUTE', 1, RouteID, RouteAbbr);
+    end;
+    if Length(cboSchedule.Text) = 0         then SetError(TX_NO_SCHED);
+  end;
+  if cboPickup.ItemID = ''                then SetError(TX_NO_PICK);
+  if StrToIntDef(txtRefills.Text, 99) > spnRefills.Max
+    then SetError(TX_RNG_REFILL + IntToStr(spnRefills.Max));
+  with cboSchedule do if Length(Text) > 0 then
+  begin
+    Sched := ValidSchedule(Text);
+    if Sched = -1 then
+    begin
+      if Pos('"', Text) > 0                                 then SetError(TX_SCH_QUOTE);
+      if Copy(Text, 1, 1) = '-'                             then SetError(TX_SCH_MINUS);
+      if Pos(' ', Copy(Text, Pos(' ', Text) + 1, 999)) > 0  then SetError(TX_SCH_SPACE);
+      if Length(Text) > 70                                  then SetError(TX_SCH_LEN);
+      if (Pos('P RN', Text) > 0) or (Pos('PR N', Text) > 0) then SetError(TX_SCH_PRN);
+      if Pos('Q0', Text) > 0                                then SetError(TX_SCH_ZERO);
+      if TrimLeft(Text) <> Text                             then SetError(TX_SCH_LSP);
+    end;
+    if Sched = 0                          then SetError(TX_SCH_NS);
+  end;
+  with txtQuantity do if Length(Text) > 0 then
+  begin
+    if not ValidQuantity(Text)            then SetError(TX_QTY_NV);
+    //if (cboPickup.ItemID = 'M') and (IntToStr(StrToIntDef(Text,-1)) <> Text)
+    //                                      then SetError(TX_QTY_MAIL);
+  end;
+end;
+
+{ cboMedication methods }
+
+procedure TfrmODMedOut.ResetOnMedChange;
+begin
+  ClearControl(cboDispense);
+  ClearControl(cboInstructions);
+  btnUnits.Caption := '';
+  ResetControl(cboRoute);
+  ResetControl(cboSchedule);
+  ClearControl(txtQuantity);
+  txtRefills.Text := REFILLS_DFLT;
+  spnRefills.Max  := REFILLS_MAX;
+  ClearControl(memComments);
+  ClearControl(memOrder);
+end;
+
+procedure TfrmODMedOut.SetAltCombo;
+begin
+  with cboMedication do
+  begin
+    FMedCombo := cboMedAlt;
+    if cboMedAlt.Items.Count = 0 then CtrlInits.SetListOnly(cboMedAlt, 'ShortList');
+    cboMedAlt.SetExactByIEN(ItemIEN, TrimRight(Piece(Text, '<', 1)));
+    cboMedication.Visible := False;
+    cboMedAlt.Visible := True;
+  end;
+end;
+
+procedure TfrmODMedOut.SetOnOISelect;
+begin
+  with CtrlInits do
+  begin
+    FLastMedID := FMedCombo.ItemID;
+    LoadOrderItem(OIForMedOut(FMedCombo.ItemIEN));
+    SetControl(cboDispense,     'Dispense');
+    if cboDispense.Items.Count = 1 then cboDispense.ItemIndex := 0;
+    lblDosage.Caption := DefaultText('Verb');
+    if lblDosage.Caption = '' then lblDosage.Caption := 'Amount';
+    SetControl(cboInstructions, 'Instruct');
+    SetupNouns;
+    SetControl(cboRoute,        'Route');
+    if cboRoute.Items.Count = 1 then cboRoute.ItemIndex := 0;
+    if DefaultText('DefSched') <> '' then cboSchedule.SelectByID(DefaultText('DefSched'));
+    OrderMessage(TextOf('Message'));
+  end;
+end;
+
+procedure TfrmODMedOut.cboMedicationNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+{ retrieves a subset of inpatient medication orderable items }
+begin
+  inherited;
+  FMedCombo.ForDataUse(SubSetOfOrderItems(StartFrom, Direction, 'S.O RX'));
+end;
+
+procedure TfrmODMedOut.cboMedicationSelect(Sender: TObject);
+{ sets related controls whenever orderable item changes (MouseClick or Exit) }
+begin
+  inherited;
+  with FMedCombo do
+  begin
+    if ItemID <> FLastMedID then FLastMedID := ItemID else Exit;
+    Changing := True;
+    if Sender <> Self then Responses.Clear;       // Sender=Self when called from SetupDialog
+    ResetOnMedChange;
+    if CharAt(ItemID, 1) = 'Q' then
+    begin
+      Responses.QuickOrder := ExtractInteger(ItemID);
+      Responses.SetControl(FMedCombo, 'ORDERABLE', 1);
+    end;
+    if ItemIEN > 0 then SetOnOISelect;
+  end;
+  with Responses do if QuickOrder > 0 then
+  begin
+    SetControl(FMedCombo,     'ORDERABLE', 1);
+    SetControl(cboDispense,   'DRUG',      1);
+    SetInstructions;
+    SetControl(txtQuantity,   'QTY',       1);
+    SetControl(txtRefills,    'REFILLS',   1);
+    spnRefills.Position := StrToIntDef(txtRefills.Text, 0);
+    SetControl(cboPickup,     'PICKUP',    1);
+    SetControl(memComments,   'COMMENT',   1);
+    SetControl(cboPriority,   'URGENCY',   1);
+  end;
+  Changing := False;
+  ControlChange(Self);
+  if FMedCombo = cboMedication then SetAltCombo;
+  // if the Dispense drug was stuffed - still do the checks (form alt, refills)
+  if cboDispense.ItemIndex > -1 then cboDispenseMouseClick(Self);
+end;
+
+{ cboDispense methods }
+
+procedure TfrmODMedOut.CheckFormAlt;
+var
+  DrugName, OIName: string;
+  Drug, OI: Integer;
+begin
+  with cboDispense do if (ItemIndex > -1) and (Piece(Items[ItemIndex], U, 4) = 'NF') then
+  begin
+    SelectFormularyAlt(ItemIEN, Drug, OI, DrugName, OIName, PST_OUTPATIENT);
+    if Drug > 0 then
+    begin
+      if FMedCombo.ItemIEN <> OI then
+      begin
+        FMedCombo.InitLongList(OIName);
+        FMedCombo.SelectByIEN(OI);
+        cboMedicationSelect(Self);
+      end;
+      cboDispense.SelectByIEN(Drug);
+    end; {if FormAlt}
+  end; {if ItemIndex}
+  SetAskSC;  // now check enabled for the service connected prompt
+end;
+
+procedure TfrmODMedOut.SetMaxRefills;
+begin
+  with cboDispense do if (ItemIndex > -1) and (Length(Piece(Items[ItemIndex], U, 6)) > 0) then
+  begin
+    spnRefills.Max := StrToIntDef(Piece(Items[ItemIndex], U, 6), REFILLS_MAX);
+    if StrToIntDef(txtRefills.Text, 0) > spnRefills.Max then
+    begin
+      txtRefills.Text := IntToStr(spnRefills.Max);
+      spnRefills.Position := spnRefills.Max;
+    end;
+  end;
+end;
+
+procedure TfrmODMedOut.cboDispenseExit(Sender: TObject);
+var
+  AMsg: string;
+begin
+  inherited;
+  SetMaxRefills;
+  with cboDispense do
+  begin
+    if ItemIEN <> FLastDrug then CheckFormAlt;
+    if ItemIEN > 0 then
+    begin
+      AMsg := DispenseMessage(ItemIEN) + CRLF;
+      if memMessage.Text <> AMsg then OrderMessage(AMsg);
+    end;
+    FLastDrug := ItemIEN;
+  end;
+end;
+
+procedure TfrmODMedOut.cboDispenseMouseClick(Sender: TObject);
+begin
+  inherited;
+  SetMaxRefills;
+  with cboDispense do
+  begin
+    if ItemIEN <> FLastDrug then CheckFormAlt;
+    if ItemIEN > 0 then OrderMessage(DispenseMessage(ItemIEN));
+    FLastDrug := ItemIEN;
+  end;
+end;
+
+{ dosage instructions }
+
+procedure TfrmODMedOut.SetupNouns;
+var
+  AvailWidth, MaxWidth: Integer;
+begin
+  CtrlInits.SetPopupMenu(popUnits, UnitClick, 'Nouns');
+  if popUnits.Items.Count > 0 then
+  begin
+    // Make sure cboInstructions is at least 40 pixels wide so it can show values
+    // like "1/2".  Allow for a 3 pixel space between the the Units button & Route.
+    AvailWidth := (cboRoute.Left - 3) - (cboInstructions.Left + 40);
+    MaxWidth := popUnits.Tag + 9; // allow 9 pixels for the down arrow & button border
+    if MaxWidth > AvailWidth then MaxWidth := AvailWidth;
+    btnUnits.Width := MaxWidth;
+    btnUnits.Left  := cboRoute.Left - MaxWidth - 3;
+    cboInstructions.Width := btnUnits.Left - cboInstructions.Left;
+    btnUnits.Caption := popUnits.Items[0].Caption;
+    btnUnits.Visible := True;
+  end else
+  begin
+    btnUnits.Visible := False;
+    // Allow for a 6 pixel margin between the Instructions box & Route
+    cboInstructions.Width := cboRoute.Left - cboInstructions.Left - 6;
+  end;
+end;
+
+procedure TfrmODMedOut.btnUnitsClick(Sender: TObject);
+var
+  APoint: TPoint;
+begin
+  inherited;
+  APoint := btnUnits.ClientToScreen(Point(0, btnUnits.Height));
+  popUnits.Popup(APoint.X, APoint.Y);
+end;
+
+procedure TfrmODMedOut.UnitClick(Sender: TObject);
+begin
+  btnUnits.Caption := TMenuItem(Sender).Caption;
+end;
+
+procedure TfrmODMedOut.SetComplex;
+begin
+  lblDosage.Visible := False;;
+  lblRoute.Visible := False;;
+  lblSchedule.Visible := False;;
+  cboInstructions.Visible := False;
+  btnUnits.Visible := False;;
+  cboRoute.Visible := False;
+  cboSchedule.Visible := False;
+  memComplex.Visible := True;
+  cmdComplex.Caption := 'Change Dose...';
+end;
+
+procedure TfrmODMedOut.SetSimple;
+begin
+  memComplex.Visible := False;
+  lblDosage.Visible := True;;
+  lblRoute.Visible := True;;
+  lblSchedule.Visible := True;;
+  cboInstructions.Visible := True;
+  btnUnits.Visible := (popUnits.Items.Count > 0) or (btnUnits.Caption <> '');
+  cboRoute.Visible := True;
+  cboSchedule.Visible := True;
+  cmdComplex.Caption := 'Complex Dose...';
+end;
+
+procedure TfrmODMedOut.SetInstructions;
+var
+  x: string;
+  AnInstance: Integer;
+begin
+  case Responses.InstanceCount('INSTR') of
+  0:   begin
+         cboInstructions.ItemIndex := -1;
+         // there may still be a route & schedule (for copied orders)
+         if Responses.EValueFor('MISC', 1) <> ''
+           then btnUnits.Caption := Responses.EValueFor('MISC', 1);
+         Responses.SetControl(cboRoute, 'ROUTE', 1);
+         with cboRoute do if ItemIndex > -1 then Text := DisplayText[ItemIndex];
+         Responses.SetControl(cboSchedule, 'SCHEDULE', 1);
+         SetSimple;
+       end;
+  1:   begin
+         AnInstance := Responses.NextInstance('INSTR', 0);
+         Responses.SetControl(cboInstructions, 'INSTR', AnInstance);
+         btnUnits.Caption := Responses.IValueFor('MISC', AnInstance);
+         Responses.SetControl(cboRoute, 'ROUTE', AnInstance);
+         with cboRoute do if ItemIndex > -1 then Text := DisplayText[ItemIndex];
+         Responses.SetControl(cboSchedule, 'SCHEDULE', AnInstance);
+         SetSimple;
+       end;
+  else begin
+         memComplex.Clear;
+         AnInstance := Responses.NextInstance('INSTR', 0);
+         while AnInstance > 0 do
+         begin
+           x := Responses.EValueFor('INSTR', AnInstance);
+           x := x + ' ' + Responses.EValueFor('MISC', AnInstance);
+           x := x + ' ' + Responses.EValueFor('ROUTE', AnInstance);
+           x := x + ' ' + Responses.EValueFor('SCHEDULE', AnInstance);
+           if Length(Responses.EValueFor('DAYS', AnInstance)) > 0
+             then x := x + ' ' + Responses.EValueFor('DAYS', AnInstance) + ' day(s)';
+           memComplex.Lines.Add(x);
+           AnInstance := Responses.NextInstance('INSTR', AnInstance);
+         end;
+         SetComplex;
+       end;
+  end; {case}
+  memOrder.Text := Responses.OrderText;
+end; {if ExecuteComplexDose}
+
+procedure TfrmODMedOut.cmdComplexClick(Sender: TObject);
+begin
+  inherited;
+  if FMedCombo.ItemIEN = 0 then
+  begin
+    InfoBox(TX_NO_MED, 'Error', MB_OK);
+    Exit;
+  end;
+  if ExecuteComplexDose(CtrlInits, Responses) then SetInstructions;
+end;
+
+{ quantity }
+
+procedure TfrmODMedOut.txtQuantityEnter(Sender: TObject);
+begin
+  inherited;
+  with cboDispense do if ItemIEN > 0 then OrderMessage(QuantityMessage(ItemIEN));
+end;
+
+{ service connection }
+
+procedure TfrmODMedOut.SetAskSC;
+const
+  SC_NO  = 0;
+  SC_YES = 1;
+begin
+  if Patient.ServiceConnected and RequiresCopay(FLastDrug) then
+  begin
+    lblSC.Font.Color := clWindowText;
+    cboSC.Enabled := True;
+    cboSC.Color := clWindow;
+    if Patient.SCPercent > 50 then cboSC.SelectByIEN(SC_YES) else cboSC.SelectByIEN(SC_NO);
+  end else
+  begin
+    lblSC.Font.Color := clGrayText;
+    cboSC.Enabled := False;
+    cboSC.Color := clBtnFace;
+    cboSC.ItemIndex := -1;
+  end;
+end;
+
+procedure TfrmODMedOut.cboSCEnter(Sender: TObject);
+begin
+  inherited;
+  OrderMessage(RatedDisabilities);
+end;
+
+{ comments }
+
+procedure TfrmODMedOut.memCommentsEnter(Sender: TObject);
+begin
+  inherited;
+  OrderMessage('');  // make sure Order Message disappears when in comments box
+end;
+
+{ all controls }
+
+procedure TfrmODMedOut.ControlChange(Sender: TObject);
+begin
+  inherited;
+  if csLoading in ComponentState then Exit;  // to prevent error caused by txtRefills
+  if Changing then Exit;
+  if FMedCombo.ItemIEN = 0 then Exit;        // prevent txtRefills from updating early
+  with FMedCombo do if ItemIEN > 0
+    then Responses.Update('ORDERABLE', 1, ItemID, Piece(Items[ItemIndex], U, 3))
+    else Responses.Update('ORDERABLE', 1, '', '');
+  with cboDispense   do if ItemIEN > 0
+    then Responses.Update('DRUG', 1, ItemID, Piece(Items[ItemIndex], U, 2))
+    else Responses.Update('DRUG', 1, '', '');
+  if memComplex.Visible = False then
+  begin
+    with cboInstructions do Responses.Update('INSTR', 1, Text, Text);
+    with btnUnits        do if Visible then Responses.Update('MISC',  1, Caption, Caption);
+    with cboRoute        do if ItemIndex > -1
+      then Responses.Update('ROUTE', 1, ItemID, Piece(Items[ItemIndex], U, 3)) // abbreviation
+      else Responses.Update('ROUTE', 1, Text, Text);
+    with cboSchedule     do Responses.Update('SCHEDULE', 1, Text, Text);
+  end;
+  with txtQuantity     do Responses.Update('QTY', 1, Text, Text);
+  with txtRefills      do Responses.Update('REFILLS', 1, Text, Text);
+  with cboPickup       do Responses.Update('PICKUP', 1, ItemID, Text);
+  with cboPriority     do Responses.Update('URGENCY', 1, ItemID, Text);
+  with memComments     do Responses.Update('COMMENT', 1, TX_WPTYPE, Text);
+  with cboSC           do if Enabled then Responses.Update('SC', 1, ItemID, Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMeds.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMeds.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMeds.dfm	(revision 1676)
@@ -0,0 +1,1140 @@
+inherited frmODMeds: TfrmODMeds
+  Left = 321
+  Top = 183
+  Width = 584
+  Height = 572
+  HorzScrollBar.Range = 558
+  VertScrollBar.Range = 399
+  Caption = 'Medication Order'
+  Constraints.MinHeight = 325
+  OnShow = FormShow
+  ExplicitWidth = 584
+  ExplicitHeight = 572
+  DesignSize = (
+    576
+    545)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlMeds: TPanel [0]
+    Left = 6
+    Top = 34
+    Width = 580
+    Height = 470
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 1
+    object sptSelect: TSplitter
+      Left = 0
+      Top = 133
+      Width = 580
+      Height = 4
+      Cursor = crVSplit
+      Align = alTop
+    end
+    object lstQuick: TCaptionListView
+      Left = 0
+      Top = 0
+      Width = 580
+      Height = 133
+      Align = alTop
+      BevelInner = bvLowered
+      BevelOuter = bvSpace
+      Columns = <
+        item
+          Width = 420
+        end>
+      ColumnClick = False
+      HideSelection = False
+      HotTrack = True
+      HoverTime = 2147483647
+      OwnerData = True
+      ParentShowHint = False
+      ShowColumnHeaders = False
+      ShowHint = True
+      TabOrder = 0
+      ViewStyle = vsReport
+      OnChange = lstChange
+      OnClick = ListViewClick
+      OnData = lstQuickData
+      OnDataHint = lstQuickDataHint
+      OnEditing = ListViewEditing
+      OnEnter = ListViewEnter
+      OnKeyUp = ListViewKeyUp
+      OnResize = ListViewResize
+      Caption = 'Quick Orders'
+    end
+    object lstAll: TCaptionListView
+      Left = 0
+      Top = 137
+      Width = 580
+      Height = 333
+      Align = alClient
+      BevelInner = bvLowered
+      BevelOuter = bvNone
+      Columns = <
+        item
+          Width = 420
+        end>
+      ColumnClick = False
+      HideSelection = False
+      HotTrack = True
+      HoverTime = 2147483647
+      OwnerData = True
+      ParentShowHint = False
+      ShowColumnHeaders = False
+      ShowHint = True
+      TabOrder = 1
+      ViewStyle = vsReport
+      OnChange = lstChange
+      OnClick = ListViewClick
+      OnData = lstAllData
+      OnDataHint = lstAllDataHint
+      OnEditing = ListViewEditing
+      OnEnter = ListViewEnter
+      OnKeyUp = ListViewKeyUp
+      OnResize = ListViewResize
+      Caption = 'All Medication orders'
+    end
+  end
+  inherited memOrder: TCaptionMemo
+    Tag = 13
+    Top = 505
+    Width = 502
+    TabStop = True
+    Anchors = [akLeft, akRight, akBottom]
+    TabOrder = 4
+    ExplicitTop = 505
+    ExplicitWidth = 502
+  end
+  object txtMed: TEdit [2]
+    Left = 6
+    Top = 6
+    Width = 580
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    AutoSelect = False
+    TabOrder = 0
+    Text = '(Type a medication name or select from the orders below)'
+    OnChange = txtMedChange
+    OnExit = txtMedExit
+    OnKeyDown = txtMedKeyDown
+    OnKeyUp = txtMedKeyUp
+  end
+  object btnSelect: TButton [3]
+    Left = 515
+    Top = 505
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    Enabled = False
+    TabOrder = 5
+    OnClick = btnSelectClick
+  end
+  object pnlFields: TPanel [4]
+    Left = 6
+    Top = 34
+    Width = 580
+    Height = 470
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    Enabled = False
+    TabOrder = 2
+    Visible = False
+    OnResize = pnlFieldsResize
+    object pnlTop: TPanel
+      Left = 0
+      Top = 0
+      Width = 580
+      Height = 197
+      Align = alClient
+      Constraints.MinHeight = 80
+      TabOrder = 3
+      DesignSize = (
+        580
+        197)
+      object lblRoute: TLabel
+        Left = 280
+        Top = 23
+        Width = 29
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Route'
+        Visible = False
+      end
+      object lblSchedule: TLabel
+        Left = 394
+        Top = 22
+        Width = 45
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Schedule'
+        Visible = False
+        WordWrap = True
+      end
+      object txtNSS: TLabel
+        Left = 442
+        Top = 22
+        Width = 71
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = '(Day-Of-Week)'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBlue
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        Visible = False
+        WordWrap = True
+        OnClick = txtNSSClick
+      end
+      object grdDoses: TCaptionStringGrid
+        Left = 0
+        Top = 36
+        Width = 580
+        Height = 156
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        ColCount = 7
+        DefaultColWidth = 76
+        DefaultRowHeight = 21
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goTabs]
+        ScrollBars = ssVertical
+        TabOrder = 8
+        OnDrawCell = grdDosesDrawCell
+        OnEnter = grdDosesEnter
+        OnExit = grdDosesExit
+        OnKeyDown = grdDosesKeyDown
+        OnKeyPress = grdDosesKeyPress
+        OnMouseDown = grdDosesMouseDown
+        OnMouseUp = grdDosesMouseUp
+        Caption = 'Complex Dosage'
+        JustToTab = True
+        ColWidths = (
+          76
+          76
+          76
+          76
+          76
+          76
+          76)
+      end
+      object lblGuideline: TStaticText
+        Left = 0
+        Top = 1
+        Width = 181
+        Height = 17
+        Caption = 'Display Restrictions/Guidelines'
+        Color = clBtnFace
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBlue
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold, fsUnderline]
+        ParentColor = False
+        ParentFont = False
+        ShowAccelChar = False
+        TabOrder = 0
+        TabStop = True
+        Visible = False
+        OnClick = lblGuidelineClick
+      end
+      object tabDose: TTabControl
+        Left = 1
+        Top = 19
+        Width = 175
+        Height = 17
+        TabOrder = 3
+        Tabs.Strings = (
+          'Dosage'
+          'Complex')
+        TabIndex = 0
+        TabStop = False
+        TabWidth = 86
+        OnChange = tabDoseChange
+      end
+      object cboDosage: TORComboBox
+        Left = 1
+        Top = 36
+        Width = 279
+        Height = 155
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Dosage'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '5,3,6'
+        Sorted = False
+        SynonymChars = '<>'
+        TabPositions = '27,32'
+        TabOrder = 4
+        OnChange = cboDosageChange
+        OnClick = cboDosageClick
+        OnExit = cboDosageExit
+        OnKeyUp = cboDosageKeyUp
+        CharsNeedMatch = 1
+        UniqueAutoComplete = True
+      end
+      object cboRoute: TORComboBox
+        Left = 280
+        Top = 36
+        Width = 113
+        Height = 156
+        Anchors = [akTop, akRight, akBottom]
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Route'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        ParentShowHint = False
+        Pieces = '2'
+        ShowHint = True
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 5
+        OnChange = cboRouteChange
+        OnClick = ControlChange
+        OnExit = cboRouteExit
+        CharsNeedMatch = 1
+        UniqueAutoComplete = True
+      end
+      object cboSchedule: TORComboBox
+        Left = 394
+        Top = 36
+        Width = 178
+        Height = 156
+        Anchors = [akTop, akRight, akBottom]
+        Style = orcsSimple
+        AutoSelect = False
+        Caption = 'Schedule'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '1'
+        Sorted = True
+        SynonymChars = '<>'
+        TabOrder = 6
+        OnChange = cboScheduleChange
+        OnClick = cboScheduleClick
+        OnEnter = cboScheduleEnter
+        OnExit = cboScheduleExit
+        CharsNeedMatch = 1
+        UniqueAutoComplete = True
+      end
+      object chkPRN: TCheckBox
+        Left = 530
+        Top = 37
+        Width = 42
+        Height = 18
+        Anchors = [akTop, akRight]
+        Caption = 'PRN'
+        Color = clBtnFace
+        ParentColor = False
+        TabOrder = 7
+        OnClick = chkPRNClick
+      end
+      object btnXInsert: TButton
+        Left = 403
+        Top = 3
+        Width = 79
+        Height = 17
+        Caption = 'Insert Row'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnXInsertClick
+      end
+      object btnXRemove: TButton
+        Left = 488
+        Top = 3
+        Width = 79
+        Height = 17
+        Caption = 'Remove Row'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnXRemoveClick
+      end
+      object pnlXAdminTime: TPanel
+        Left = 432
+        Top = 149
+        Width = 65
+        Height = 17
+        Caption = 'pnlXAdminTime'
+        TabOrder = 9
+        Visible = False
+        OnClick = pnlXAdminTimeClick
+      end
+    end
+    object cboXDosage: TORComboBox
+      Left = 49
+      Top = 122
+      Width = 72
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = False
+      Caption = 'Dosage'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '5'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      Visible = False
+      OnChange = cboXDosageChange
+      OnClick = cboXDosageClick
+      OnEnter = cboXDosageEnter
+      OnExit = cboXDosageExit
+      OnKeyDown = memMessageKeyDown
+      OnKeyUp = cboXDosageKeyUp
+      CharsNeedMatch = 1
+      UniqueAutoComplete = True
+    end
+    object cboXRoute: TORComboBox
+      Left = 122
+      Top = 122
+      Width = 72
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = False
+      Caption = 'Route'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      Visible = False
+      OnChange = cboXRouteChange
+      OnClick = cboXRouteClick
+      OnEnter = cboXRouteEnter
+      OnExit = cboXRouteExit
+      OnKeyDown = memMessageKeyDown
+      CharsNeedMatch = 1
+      UniqueAutoComplete = True
+    end
+    object pnlXDuration: TPanel
+      Left = 300
+      Top = 122
+      Width = 72
+      Height = 21
+      BevelOuter = bvNone
+      TabOrder = 4
+      Visible = False
+      OnEnter = pnlXDurationEnter
+      OnExit = pnlXDurationExit
+      DesignSize = (
+        72
+        21)
+      object pnlXDurationButton: TKeyClickPanel
+        Left = 39
+        Top = 1
+        Width = 33
+        Height = 19
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Caption = 'Duration'
+        TabOrder = 2
+        TabStop = True
+        OnClick = btnXDurationClick
+        object btnXDuration: TSpeedButton
+          Left = 0
+          Top = 0
+          Width = 33
+          Height = 19
+          Caption = 'days'
+          Flat = True
+          Glyph.Data = {
+            AE000000424DAE0000000000000076000000280000000E000000070000000100
+            0400000000003800000000000000000000001000000000000000000000000000
+            8000008000000080800080000000800080008080000080808000C0C0C0000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+            330033333333333333003330333333733300330003333F87330030000033FFFF
+            F30033333333333333003333333333333300}
+          Layout = blGlyphRight
+          NumGlyphs = 2
+          Spacing = 0
+          Transparent = False
+          OnClick = btnXDurationClick
+        end
+      end
+      object txtXDuration: TCaptionEdit
+        Left = 0
+        Top = 0
+        Width = 25
+        Height = 21
+        Anchors = [akLeft, akTop, akBottom]
+        TabOrder = 0
+        Text = '0'
+        OnChange = txtXDurationChange
+        OnKeyDown = memMessageKeyDown
+        Caption = 'Duration'
+      end
+      object spnXDuration: TUpDown
+        Left = 25
+        Top = 0
+        Width = 15
+        Height = 21
+        Anchors = [akLeft, akTop, akBottom]
+        Associate = txtXDuration
+        Max = 999
+        TabOrder = 1
+      end
+    end
+    object pnlXSchedule: TPanel
+      Left = 195
+      Top = 122
+      Width = 106
+      Height = 21
+      BevelOuter = bvNone
+      TabOrder = 2
+      Visible = False
+      OnEnter = pnlXScheduleEnter
+      OnExit = pnlXScheduleExit
+      DesignSize = (
+        106
+        21)
+      object cboXSchedule: TORComboBox
+        Left = 0
+        Top = 0
+        Width = 63
+        Height = 21
+        Anchors = [akLeft, akTop, akRight]
+        Style = orcsDropDown
+        AutoSelect = False
+        Caption = 'Schedule'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '1'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        TabStop = True
+        OnChange = cboXScheduleChange
+        OnClick = cboXScheduleClick
+        OnEnter = cboXScheduleEnter
+        OnExit = cboXScheduleExit
+        OnKeyDown = memMessageKeyDown
+        CharsNeedMatch = 1
+        UniqueAutoComplete = True
+      end
+      object chkXPRN: TCheckBox
+        Left = 63
+        Top = 4
+        Width = 42
+        Height = 11
+        Anchors = [akTop, akRight]
+        Caption = 'PRN'
+        TabOrder = 1
+        OnClick = chkXPRNClick
+        OnKeyDown = memMessageKeyDown
+      end
+    end
+    object pnlBottom: TPanel
+      Left = 0
+      Top = 197
+      Width = 580
+      Height = 273
+      Align = alBottom
+      TabOrder = 5
+      DesignSize = (
+        580
+        273)
+      object lblComment: TLabel
+        Left = 4
+        Top = 5
+        Width = 52
+        Height = 16
+        Alignment = taRightJustify
+        AutoSize = False
+        Caption = 'Comments:'
+      end
+      object lblDays: TLabel
+        Left = 4
+        Top = 65
+        Width = 59
+        Height = 13
+        Caption = 'Days Supply'
+      end
+      object lblQuantity: TLabel
+        Left = 84
+        Top = 65
+        Width = 39
+        Height = 13
+        Caption = 'Quantity'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object lblRefills: TLabel
+        Left = 164
+        Top = 65
+        Width = 28
+        Height = 13
+        Caption = 'Refills'
+      end
+      object lblPriority: TLabel
+        Left = 500
+        Top = 61
+        Width = 31
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Priority'
+      end
+      object Image1: TImage
+        Left = 5
+        Top = 221
+        Width = 31
+        Height = 31
+        Anchors = [akLeft, akBottom]
+        Visible = False
+        ExplicitTop = 177
+      end
+      object chkDoseNow: TCheckBox
+        Left = 3
+        Top = 104
+        Width = 247
+        Height = 21
+        Caption = 'Give additional dose now'
+        TabOrder = 8
+        OnClick = chkDoseNowClick
+      end
+      object memComment: TCaptionMemo
+        Left = 57
+        Top = 2
+        Width = 513
+        Height = 43
+        Anchors = [akLeft, akTop, akRight]
+        ScrollBars = ssVertical
+        TabOrder = 0
+        OnChange = ControlChange
+        OnClick = memCommentClick
+        Caption = 'Comments'
+      end
+      object lblQtyMsg: TStaticText
+        Left = 4
+        Top = 47
+        Width = 206
+        Height = 17
+        Caption = '>> Quantity Dispensed: Multiples of 100 <<'
+        TabOrder = 13
+      end
+      object txtSupply: TCaptionEdit
+        Left = 2
+        Top = 78
+        Width = 60
+        Height = 21
+        AutoSize = False
+        TabOrder = 1
+        Text = '0'
+        OnChange = txtSupplyChange
+        OnClick = txtSupplyClick
+        Caption = 'Days Supply'
+      end
+      object spnSupply: TUpDown
+        Left = 62
+        Top = 78
+        Width = 15
+        Height = 21
+        Associate = txtSupply
+        TabOrder = 2
+      end
+      object txtQuantity: TCaptionEdit
+        Left = 83
+        Top = 78
+        Width = 60
+        Height = 21
+        AutoSize = False
+        TabOrder = 3
+        Text = '0'
+        OnChange = txtQuantityChange
+        OnClick = txtQuantityClick
+        Caption = 'Quantity'
+      end
+      object spnQuantity: TUpDown
+        Left = 143
+        Top = 78
+        Width = 16
+        Height = 21
+        Associate = txtQuantity
+        Max = 32766
+        TabOrder = 4
+      end
+      object txtRefills: TCaptionEdit
+        Left = 164
+        Top = 78
+        Width = 30
+        Height = 21
+        AutoSize = False
+        TabOrder = 5
+        Text = '0'
+        OnChange = txtRefillsChange
+        OnClick = txtRefillsClick
+        Caption = 'Refills'
+      end
+      object spnRefills: TUpDown
+        Left = 194
+        Top = 78
+        Width = 15
+        Height = 21
+        Associate = txtRefills
+        Max = 11
+        TabOrder = 6
+      end
+      object grpPickup: TGroupBox
+        Left = 283
+        Top = 66
+        Width = 172
+        Height = 36
+        Anchors = [akTop, akRight]
+        Caption = 'Pick Up'
+        TabOrder = 7
+        object radPickWindow: TRadioButton
+          Left = 105
+          Top = 14
+          Width = 58
+          Height = 17
+          Caption = '&Window'
+          TabOrder = 2
+          OnClick = ControlChange
+        end
+        object radPickMail: TRadioButton
+          Left = 58
+          Top = 14
+          Width = 38
+          Height = 17
+          Caption = '&Mail'
+          TabOrder = 1
+          OnClick = ControlChange
+        end
+        object radPickClinic: TRadioButton
+          Left = 7
+          Top = 14
+          Width = 44
+          Height = 17
+          Caption = '&Clinic'
+          TabOrder = 0
+          OnClick = ControlChange
+        end
+      end
+      object cboPriority: TORComboBox
+        Left = 499
+        Top = 76
+        Width = 72
+        Height = 21
+        Anchors = [akTop, akRight]
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Priority'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 9
+        OnChange = ControlChange
+        CharsNeedMatch = 1
+      end
+      object stcPI: TStaticText
+        Left = 2
+        Top = 123
+        Width = 89
+        Height = 17
+        Caption = 'Patient Instruction'
+        TabOrder = 17
+        Visible = False
+      end
+      object chkPtInstruct: TCheckBox
+        Left = 4
+        Top = 137
+        Width = 14
+        Height = 21
+        Color = clBtnFace
+        ParentColor = False
+        TabOrder = 18
+        Visible = False
+        OnClick = chkPtInstructClick
+      end
+      object memPI: TMemo
+        Left = 23
+        Top = 139
+        Width = 547
+        Height = 35
+        TabStop = False
+        Anchors = [akLeft, akTop, akRight]
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 19
+        Visible = False
+        OnClick = memPIClick
+        OnKeyDown = memPIKeyDown
+      end
+      object memDrugMsg: TMemo
+        Left = 37
+        Top = 220
+        Width = 533
+        Height = 51
+        Anchors = [akLeft, akRight, akBottom]
+        Color = clCream
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 20
+        Visible = False
+      end
+      object lblAdminSch: TMemo
+        Left = 344
+        Top = 120
+        Width = 68
+        Height = 15
+        Anchors = [akLeft, akTop, akRight]
+        Color = clCream
+        ParentShowHint = False
+        ReadOnly = True
+        ScrollBars = ssVertical
+        ShowHint = True
+        TabOrder = 10
+        Visible = False
+      end
+      object lblAdminTime: TVA508StaticText
+        Name = 'lblAdminTime'
+        Left = 164
+        Top = 116
+        Width = 64
+        Height = 15
+        Alignment = taLeftJustify
+        Caption = 'lblAdminTime'
+        TabOrder = 11
+        TabStop = True
+        ShowAccelChar = True
+      end
+    end
+    object cboXSequence: TORComboBox
+      Left = 438
+      Top = 122
+      Width = 64
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Sequence'
+      Color = clWindow
+      DropDownCount = 8
+      Items.Strings = (
+        'and'
+        'then')
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 6
+      Visible = False
+      OnChange = cboXSequenceChange
+      OnEnter = cboXSequenceEnter
+      OnExit = cboXSequenceExit
+      OnKeyDown = memMessageKeyDown
+      CharsNeedMatch = 1
+    end
+  end
+  inherited cmdAccept: TButton
+    Left = 514
+    Top = 505
+    Anchors = [akRight, akBottom]
+    TabOrder = 6
+    TabStop = False
+    Visible = False
+    ExplicitLeft = 514
+    ExplicitTop = 505
+  end
+  inherited cmdQuit: TButton
+    Left = 514
+    Top = 530
+    Width = 51
+    Anchors = [akRight, akBottom]
+    TabOrder = 7
+    ExplicitLeft = 514
+    ExplicitTop = 530
+    ExplicitWidth = 51
+  end
+  inherited pnlMessage: TPanel
+    Left = 31
+    Top = 200
+    OnEnter = pnlMessageEnter
+    ExplicitLeft = 31
+    ExplicitTop = 200
+    inherited imgMessage: TImage
+      Left = 2
+      ExplicitLeft = 2
+    end
+    inherited memMessage: TRichEdit
+      OnKeyDown = memMessageKeyDown
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlMeds'
+        'Status = stsDefault')
+      (
+        'Component = lstQuick'
+        'Text = Quick Orders'
+        'Status = stsOK')
+      (
+        'Component = lstAll'
+        'Text = Medications'
+        'Status = stsOK')
+      (
+        'Component = txtMed'
+        'Text = Medication'
+        'Status = stsOK')
+      (
+        'Component = btnSelect'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = grdDoses'
+        'Status = stsDefault')
+      (
+        'Component = lblGuideline'
+        'Status = stsDefault')
+      (
+        'Component = tabDose'
+        'Status = stsDefault')
+      (
+        'Component = cboDosage'
+        'Status = stsDefault')
+      (
+        'Component = cboRoute'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = chkPRN'
+        'Status = stsDefault')
+      (
+        'Component = btnXInsert'
+        'Status = stsDefault')
+      (
+        'Component = btnXRemove'
+        'Status = stsDefault')
+      (
+        'Component = pnlXAdminTime'
+        'Status = stsDefault')
+      (
+        'Component = cboXDosage'
+        'Status = stsDefault')
+      (
+        'Component = cboXRoute'
+        'Status = stsDefault')
+      (
+        'Component = pnlXDuration'
+        'Status = stsDefault')
+      (
+        'Component = pnlXDurationButton'
+        'Status = stsDefault')
+      (
+        'Component = txtXDuration'
+        'Status = stsDefault')
+      (
+        'Component = spnXDuration'
+        'Status = stsDefault')
+      (
+        'Component = pnlXSchedule'
+        'Status = stsDefault')
+      (
+        'Component = cboXSchedule'
+        'Status = stsDefault')
+      (
+        'Component = chkXPRN'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = chkDoseNow'
+        'Status = stsDefault')
+      (
+        'Component = memComment'
+        'Status = stsDefault')
+      (
+        'Component = lblQtyMsg'
+        'Status = stsDefault')
+      (
+        'Component = txtSupply'
+        'Status = stsDefault')
+      (
+        'Component = spnSupply'
+        'Status = stsDefault')
+      (
+        'Component = txtQuantity'
+        'Status = stsDefault')
+      (
+        'Component = spnQuantity'
+        'Status = stsDefault')
+      (
+        'Component = txtRefills'
+        'Status = stsDefault')
+      (
+        'Component = spnRefills'
+        'Status = stsDefault')
+      (
+        'Component = grpPickup'
+        'Status = stsDefault')
+      (
+        'Component = radPickWindow'
+        'Status = stsDefault')
+      (
+        'Component = radPickMail'
+        'Status = stsDefault')
+      (
+        'Component = radPickClinic'
+        'Status = stsDefault')
+      (
+        'Component = cboPriority'
+        'Status = stsDefault')
+      (
+        'Component = stcPI'
+        'Status = stsDefault')
+      (
+        'Component = chkPtInstruct'
+        'Status = stsDefault')
+      (
+        'Component = memPI'
+        'Status = stsDefault')
+      (
+        'Component = memDrugMsg'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMeds'
+        'Status = stsDefault')
+      (
+        'Component = cboXSequence'
+        'Status = stsDefault')
+      (
+        'Component = lblAdminSch'
+        'Status = stsDefault')
+      (
+        'Component = lblAdminTime'
+        'Status = stsDefault'))
+  end
+  object dlgStart: TORDateTimeDlg
+    FMDateTime = 3001101.000000000000000000
+    DateOnly = False
+    RequireTime = True
+    Left = 444
+    Top = 336
+  end
+  object timCheckChanges: TTimer
+    Enabled = False
+    Interval = 500
+    OnTimer = timCheckChangesTimer
+    Left = 477
+    Top = 336
+  end
+  object popDuration: TPopupMenu
+    AutoHotkeys = maManual
+    Left = 380
+    Top = 145
+    object popBlank: TMenuItem
+      Caption = '(no selection)'
+      OnClick = popDurationClick
+    end
+    object months1: TMenuItem
+      Tag = 5
+      Caption = 'months'
+      OnClick = popDurationClick
+    end
+    object weeks1: TMenuItem
+      Tag = 4
+      Caption = 'weeks'
+      OnClick = popDurationClick
+    end
+    object popDays: TMenuItem
+      Tag = 3
+      Caption = 'days'
+      OnClick = popDurationClick
+    end
+    object hours1: TMenuItem
+      Tag = 2
+      Caption = 'hours'
+      OnClick = popDurationClick
+    end
+    object minutes1: TMenuItem
+      Tag = 1
+      Caption = 'minutes'
+      OnClick = popDurationClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMeds.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMeds.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMeds.pas	(revision 1676)
@@ -0,0 +1,5511 @@
+unit fODMeds;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ComCtrls, ExtCtrls, ORCtrls, Grids, Buttons, uConst, ORDtTm,
+  Menus, XUDIGSIGSC_TLB, VA508AccessibilityManager, VAUtils, Contnrs;
+
+const
+  UM_DELAYCLICK = 11037;  // temporary for listview click event
+
+type
+  TfrmODMeds = class(TfrmODBase)
+    txtMed: TEdit;
+    pnlMeds: TPanel;
+    btnSelect: TButton;
+    pnlFields: TPanel;
+    lstQuick: TCaptionListView;
+    sptSelect: TSplitter;
+    lstAll: TCaptionListView;
+    dlgStart: TORDateTimeDlg;
+    cboXDosage: TORComboBox;
+    cboXRoute: TORComboBox;
+    pnlXDuration: TPanel;
+    timCheckChanges: TTimer;
+    popDuration: TPopupMenu;
+    popDays: TMenuItem;
+    popBlank: TMenuItem;
+    hours1: TMenuItem;
+    minutes1: TMenuItem;
+    months1: TMenuItem;
+    weeks1: TMenuItem;
+    pnlXSchedule: TPanel;
+    cboXSchedule: TORComboBox;
+    chkXPRN: TCheckBox;
+    txtXDuration: TCaptionEdit;
+    spnXDuration: TUpDown;
+    pnlXDurationButton: TKeyClickPanel;
+    btnXDuration: TSpeedButton;
+    pnlTop: TPanel;
+    lblRoute: TLabel;
+    lblSchedule: TLabel;
+    grdDoses: TCaptionStringGrid;
+    lblGuideline: TStaticText;
+    tabDose: TTabControl;
+    cboDosage: TORComboBox;
+    cboRoute: TORComboBox;
+    cboSchedule: TORComboBox;
+    chkPRN: TCheckBox;
+    btnXInsert: TButton;
+    btnXRemove: TButton;
+    pnlBottom: TPanel;
+    lblComment: TLabel;
+    lblDays: TLabel;
+    lblQuantity: TLabel;
+    lblRefills: TLabel;
+    lblPriority: TLabel;
+    chkDoseNow: TCheckBox;
+    memComment: TCaptionMemo;
+    lblQtyMsg: TStaticText;
+    txtSupply: TCaptionEdit;
+    spnSupply: TUpDown;
+    txtQuantity: TCaptionEdit;
+    spnQuantity: TUpDown;
+    txtRefills: TCaptionEdit;
+    spnRefills: TUpDown;
+    grpPickup: TGroupBox;
+    radPickWindow: TRadioButton;
+    radPickMail: TRadioButton;
+    radPickClinic: TRadioButton;
+    cboPriority: TORComboBox;
+    stcPI: TStaticText;
+    chkPtInstruct: TCheckBox;
+    memPI: TMemo;
+    Image1: TImage;
+    memDrugMsg: TMemo;
+    txtNSS: TLabel;
+    pnlXAdminTime: TPanel;
+    cboXSequence: TORComboBox;
+    lblAdminSch: TMemo;
+    lblAdminTime: TVA508StaticText;
+    procedure FormCreate(Sender: TObject);
+    procedure btnSelectClick(Sender: TObject);
+    procedure tabDoseChange(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure txtMedKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtMedKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtMedChange(Sender: TObject);
+    procedure txtMedExit(Sender: TObject);
+    procedure ListViewEditing(Sender: TObject; Item: TListItem;
+      var AllowEdit: Boolean);
+    procedure ListViewKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure ListViewResize(Sender: TObject);
+    procedure lstQuickData(Sender: TObject; Item: TListItem);
+    procedure lstQuickDataHint(Sender: TObject; StartIndex,
+      EndIndex: Integer);
+    procedure lstAllDataHint(Sender: TObject; StartIndex,
+      EndIndex: Integer);
+    procedure lstAllData(Sender: TObject; Item: TListItem);
+    procedure lblGuidelineClick(Sender: TObject);
+    procedure ListViewClick(Sender: TObject);
+    procedure cboScheduleChange(Sender: TObject);
+    procedure cboRouteChange(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboDosageClick(Sender: TObject);
+    procedure cboDosageChange(Sender: TObject);
+    procedure cboScheduleClick(Sender: TObject);
+    procedure txtSupplyChange(Sender: TObject);
+    procedure txtQuantityChange(Sender: TObject);
+    procedure cboRouteExit(Sender: TObject);
+    procedure grdDosesMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure grdDosesKeyPress(Sender: TObject; var Key: Char);
+    procedure grdDosesMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure grdDosesDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure cboXDosageClick(Sender: TObject);
+    procedure cboXDosageExit(Sender: TObject);
+    procedure cboXRouteClick(Sender: TObject);
+    procedure cboXRouteExit(Sender: TObject);
+    procedure cboXScheduleClick(Sender: TObject);
+    procedure pnlXDurationEnter(Sender: TObject);
+    procedure pnlXDurationExit(Sender: TObject);
+    procedure txtXDurationChange(Sender: TObject);
+    procedure cboXDosageEnter(Sender: TObject);
+    procedure cboXDosageChange(Sender: TObject);
+    procedure cboXRouteChange(Sender: TObject);
+    procedure cboXScheduleChange(Sender: TObject);
+    procedure grdDosesExit(Sender: TObject);
+    procedure ListViewEnter(Sender: TObject);
+    procedure timCheckChangesTimer(Sender: TObject);
+    procedure popDurationClick(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure btnXInsertClick(Sender: TObject);
+    procedure btnXRemoveClick(Sender: TObject);
+    procedure pnlXScheduleEnter(Sender: TObject);
+    procedure pnlXScheduleExit(Sender: TObject);
+    procedure chkPtInstructClick(Sender: TObject);
+    procedure pnlFieldsResize(Sender: TObject);
+    procedure chkDoseNowClick(Sender: TObject);
+    procedure cboDosageExit(Sender: TObject);
+    procedure chkXPRNClick(Sender: TObject);
+    procedure memCommentClick(Sender: TObject);
+    procedure btnXDurationClick(Sender: TObject);
+    procedure chkPRNClick(Sender: TObject);
+    procedure grdDosesKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure grdDosesEnter(Sender: TObject);
+    procedure FormKeyPress(Sender: TObject; var Key: Char);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboXRouteEnter(Sender: TObject);
+    procedure pnlMessageEnter(Sender: TObject);
+    procedure pnlMessageExit(Sender: TObject);
+    procedure memMessageKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memPIClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure memPIKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure lstChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure txtNSSClick(Sender: TObject);
+    procedure cboScheduleEnter(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure cboScheduleExit(Sender: TObject);
+    procedure cboXScheduleExit(Sender: TObject);
+    procedure cboDosageKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboXDosageKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure txtSupplyClick(Sender: TObject);
+    procedure txtQuantityClick(Sender: TObject);
+    procedure txtRefillsClick(Sender: TObject);
+    procedure WMClose(var Msg : TWMClose); message WM_CLOSE;
+    procedure cboXScheduleEnter(Sender: TObject);
+    procedure pnlXAdminTimeClick(Sender: TObject);
+    procedure cboXSequenceChange(Sender: TObject);
+    procedure cboXSequence1Exit(Sender: TObject);
+    procedure cboXSequenceExit(Sender: TObject);
+    procedure cboXSequenceEnter(Sender: TObject);
+    procedure txtRefillsChange(Sender: TObject);
+    //procedure btnNSSClick(Sender: TObject);
+  private
+    FCloseCalled : Boolean;
+    FScheduleChanged : Boolean;
+    {selection}
+    FMedCache:   TObjectList;
+    FCacheIEN:   Integer;
+    FQuickList:  Integer;
+    FQuickItems: TStringList;
+    FChangePending: Boolean;
+    FKeyTimerActive: Boolean;
+    FActiveMedList: TListView;
+    FRowHeight: Integer;
+    FFromSelf: Boolean;
+    {edit}
+    FAllDoses:  TStringList;
+    FAllDrugs:  TStringList;
+    FGuideline: TStringList;
+    FLastUnits:    string;
+    FLastSchedule: string;
+    FLastDuration: string;
+    FLastInstruct: string;
+    FLastDispDrug: string;
+    FLastQuantity: Double;
+    FLastSupply:   Integer;
+    FLastPickup:   string;
+    FSIGVerb: string;
+    FSIGPrep: string;
+    FDropColumn: Integer;
+    FDrugID: string;
+    FInptDlg: Boolean;
+    FUpdated: Boolean;
+    FSuppressMsg: Boolean;
+    FPtInstruct: string;
+    FAltChecked: Boolean;
+    FOutptIV: Boolean;
+    FQOQuantity: Double;
+    FQODosage: string;
+    FNoZERO: boolean;
+    FIsQuickOrder: boolean;
+    FDisabledDefaultButton: TButton;
+    FDisabledCancelButton: TButton;
+    FShrinked: boolean;
+    FShrinkDrugMsg: boolean;
+    FResizedAlready: boolean;
+    FQOInitial: boolean;
+    FOrigiMsgDisp: boolean;
+    FNSSOther: boolean;
+    {selection}
+    FShowPnlXScheduleOk : boolean;
+    FRemoveText : Boolean;
+    FSmplPRNChkd: Boolean;
+    {Admin Time}
+    FAdminTimeLbl: string;
+    FMedName: String;
+    FNSSAdminTime: string;
+    FNSSScheduleType: string;
+    FAdminTimeText: string;
+    //FOriginalAdminTime: string;
+    //FOriginalScheduleIndex: integer;
+    FOrderAction: integer;
+    JAWSON: boolean;
+    procedure ChangeDelayed;
+    function FindQuickOrder(const x: string): Integer;
+    function isUniqueQuickOrder(iText: string): Boolean;
+    function GetCacheChunkIndex(idx: integer): integer;
+    procedure LoadMedCache(First, Last: Integer);
+    procedure ScrollToVisible(AListView: TListView);
+    procedure StartKeyTimer;
+    procedure StopKeyTimer;
+    procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
+    {edit}
+    procedure ResetOnMedChange;
+    procedure ResetOnTabChange;
+    procedure SetControlsInpatient;
+    procedure SetControlsOutpatient;
+    procedure SetOnMedSelect;
+    procedure SetOnQuickOrder;
+    procedure SetVisibleCommentRows( Rows: integer );
+    procedure ShowMedSelect;
+    procedure ShowMedFields;
+    procedure ShowControlsSimple;
+    procedure ShowControlsComplex;
+    procedure SetDosage(const x: string);
+    procedure SetPickup(const x: string);
+    procedure SetSchedule(const x: string);
+    procedure CheckFormAltDose(DispDrug: Integer);
+    function DurationToDays: Integer;
+    function ConstructedDoseFields(const ADose: string; PrependName: Boolean = FALSE): string;
+    function FieldsForDose(ARow: Integer): string;
+    function FieldsForDrug(const DrugID: string): string;
+    function FindCommonDrug(DoseList: TStringList): string;
+    function FindDoseFields(const Drug, ADose: string): string;
+    function InpatientSig: string;
+    function OutpatientSig: string;
+    procedure UpdateRelated(DelayUpdate: Boolean = TRUE);
+    procedure UpdateRefills(const CurDispDrug: string; CurSupply: Integer);
+    procedure UpdateStartExpires(const CurSchedule: string);
+    procedure UpdateDefaultSupply(const CurUnits, CurSchedule, CurDuration, CurDispDrug: string;
+      var CurSupply: Integer; var CurQuantity: double; var SkipQtyCheck: Boolean);
+    procedure UpdateSupplyQuantity(const CurUnits, CurSchedule, CurDuration, CurDispDrug: string;
+      var CurSupply: Integer; var CurQuantity: double);
+    procedure UpdateDurationControls( FreeText: boolean);
+    function DisableDefaultButton(Control: TWinControl): boolean;
+    function DisableCancelButton(Control: TWinControl): boolean;
+    procedure RestoreDefaultButton;
+    procedure RestoreCancelButton;
+    function ValueOf(FieldID: Integer; ARow: Integer = -1): string;
+    function ValueOfResponse(FieldID: Integer; AnInstance: Integer = 1): string;
+    function ValFor(FieldID, ARow: Integer): string;
+    function TextDosage(ADosage: string): string;
+    //NSS
+    function CreateOtherScheduel: string;
+    function CreateOtherScheduelComplex: string;
+    procedure ShowEditor(ACol, ARow: Integer; AChar: Char);
+    procedure DropLastSequence(ASign: integer = 0);
+    procedure DispOrderMessage(const AMessage: string);
+    procedure UMDelayClick(var Message: TMessage); message UM_DELAYCLICK;
+    procedure UMDelayEvent(var Message: TMessage); message UM_DELAYEVENT;
+    procedure UMShowNSSBuilder(var Message: TMessage); message UM_NSSOTHER;
+    function  IfIsIMODialog: boolean;
+    procedure ValidateInpatientSchedule(ScheduleCombo: TORComboBox);
+//    function ValidateRoute(RouteCombo: TORComboBox) : Boolean; Removed based on Site feeback. See CQ: 7518
+    function IsSupplyAndOutPatient : boolean;
+    function GetSchedListIndex(SchedCombo: TORComboBox; pSchedule: String):integer;
+    procedure DisplayDoseNow(Status: boolean);
+    function lblAdminSchGetText: string;
+    procedure lblAdminSchSetText(str: string);
+  protected
+    procedure Loaded; override;
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+    procedure updateSig; override;
+  public
+    ARow1: integer;
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure CheckDecimal(var AStr: string);
+    property MedName: string read FMedName write FMedName;
+    property NSSAdminTime: string read FNSSAdminTime write FNSSAdminTime;
+    property NSSScheduleType: string read FNSSScheduleType write FNSSScheduleType;
+  end;
+
+var
+  frmODMeds: TfrmODMeds;
+  crypto: IXuDigSigS;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, ORFn, rODMeds, rODBase, rOrders, fRptBox, fODMedOIFA,
+  uOrders, fOtherSchedule, StrUtils, fFrame, VA508AccessibilityRouter;
+
+const
+  {grid columns for complex dosing}
+  COL_SELECT    =  0;
+  COL_DOSAGE    =  1;
+  COL_ROUTE     =  2;
+  COL_SCHEDULE  =  3;
+  COL_DURATION  =  4;
+  COL_ADMINTIME =  5;
+  COL_SEQUENCE  =  6;
+  COL_CHKXPRN   =  7;
+  VAL_DOSAGE    = 10;
+  VAL_ROUTE     = 20;
+  VAL_SCHEDULE  = 30;
+  VAL_DURATION  = 40;
+  VAL_ADMINTIME = 50;
+  VAL_SEQUENCE  = 60;
+  VAL_CHKXPRN   = 70;
+  TAB           = #9;
+  {field identifiers}
+  FLD_LOCALDOSE =  1;
+  FLD_STRENGTH  =  2;
+  FLD_DRUG_ID   =  3;
+  FLD_DRUG_NM   =  4;
+  FLD_DOSEFLDS  =  5;
+  FLD_UNITNOUN  =  6;
+  FLD_TOTALDOSE =  7;
+  FLD_DOSETEXT  =  8;
+  FLD_INSTRUCT  = 10;
+  FLD_DOSEUNIT  = 11;
+  FLD_ROUTE_ID  = 15;
+  FLD_ROUTE_NM  = 16;
+  FLD_ROUTE_AB  = 17;
+  FLD_ROUTE_EX  = 18;
+  FLD_SCHEDULE  = 20;
+  FLD_SCHED_EX  = 21;
+  FLD_SCHED_TYP = 22;
+  FLD_DURATION  = 30;
+  FLD_SEQUENCE  = 31;
+  FLD_MISC_FLDS = 50;
+  FLD_SUPPLY    = 51;
+  FLD_QUANTITY  = 52;
+  FLD_REFILLS   = 53;
+  FLD_PICKUP    = 55;
+  FLD_QTYDISP   = 56;
+  FLD_SC        = 58;
+  FLD_PRIOR_ID  = 60;
+  FLD_PRIOR_NM  = 61;
+  FLD_START_ID  = 70;
+  FLD_START_NM  = 71;
+  FLD_EXPIRE    = 72;
+  FLD_ANDTHEN   = 73;
+  FLD_NOW_ID    = 75;
+  FLD_NOW_NM    = 76;
+  FLD_COMMENT   = 80;
+  FLD_PTINSTR   = 85;
+  {dosage type tab index values}
+  TI_DOSE       =  0;
+  TI_RATE       =  99;
+  TI_COMPLEX    =  1;
+  {misc constants}
+  TIMER_ID = 6902;                                // arbitrary number
+  TIMER_DELAY = 500;                              // 500 millisecond delay
+  TIMER_FROM_DAYS = 1;
+  TIMER_FROM_QTY  = 2;
+
+  MED_CACHE_CHUNK_SIZE = 100;
+  {text constants}
+  TX_ADMIN      = 'Requested Start: ';
+  TX_TAKE       = '';
+  TX_NO_DEA     = 'Provider must have a DEA# or VA# to order this medication';
+  TC_NO_DEA     = 'DEA# Required';
+  TX_NO_MED     = 'Medication must be selected.';
+  TX_NO_SEQ     = 'Missing one or more conjunction.';
+  TX_NO_DOSE    = 'Dosage must be entered.';
+  TX_DOSE_NUM   = 'Dosage may not be numeric only';
+  TX_DOSE_LEN   = 'Dosage may not exceed 60 characters';
+  TX_NO_ROUTE   = 'Route must be entered.';
+  TX_NF_ROUTE   = 'Route not found in the Medication Routes file.';
+  TX_NO_SCHED   = 'Schedule must be entered.';
+  TX_NO_PICK    = 'A method for picking up the medication must be entered.';
+  TX_RNG_REFILL = 'The number of refills must be in the range of 0 through ';
+  TX_SCH_QUOTE  = 'Schedule must not have quotemarks in it.';
+  TX_SCH_MINUS  = 'Schedule must not have a dash at the beginning.';
+  TX_SCH_SPACE  = 'Schedule must have only one space in it.';
+  TX_SCH_LEN    = 'Schedule must be less than 70 characters.';
+  TX_SCH_PRN    = 'Schedule cannot include PRN - use Comments to enter PRN.';
+  TX_SCH_ZERO   = 'Schedule cannot be Q0';
+  TX_SCH_LSP    = 'Schedule may not have leading spaces.';
+  TX_SCH_NS     = 'Unable to resolve non-standard schedule.';
+  TX_MAX_STOP   = 'The maximum expiration for this order is ';
+  TX_OUTPT_IV   = 'This patient has not been admitted.  Only IV orders may be entered.';
+  TX_QTY_NV     = 'Unable to validate quantity.';
+  TX_QTY_MAIL   = 'Quantity for mailed items must be a whole number.';
+  TX_SUPPLY_LIM = 'Days Supply may not be greater than 90.';
+  TX_SUPPLY_LIM1 = 'Days Supply may not be less than 1.';
+  TX_SUPPLY_NINT= 'Days Supply is an invalid number.';
+  TC_RESTRICT   = 'Ordering Restrictions';
+  TC_GUIDELINE  = 'Restrictions/Guidelines';
+  TX_QTY_PRE    = '>> Quantity Dispensed: ';
+  TX_QTY_POST   = ' <<';
+
+{ procedures inherited from fODBase --------------------------------------------------------- }
+
+procedure TfrmODMeds.FormCreate(Sender: TObject);
+var
+  ListCount: Integer;
+  x: string;
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  AutoSizeDisabled := True;
+  inherited;
+  FAdminTimeText := '';
+  btnXDuration.Align := alClient;
+  AllowQuickOrder := True;
+  FSmplPRNChkd := False; // GE CQ7585
+  CheckAuthForMeds(x);
+  if Length(x) > 0 then
+  begin
+    InfoBox(x, TC_RESTRICT, MB_OK);
+    Close;
+    Exit;
+  end;
+  if DlgFormID = OD_MEDINPT  then FInptDlg := TRUE;
+  if DlgFormID = OD_MEDOUTPT then FInptDlg := FALSE;
+  if DlgFormID = OD_MEDNONVA then FInptDlg := FALSE;
+  if DlgFormID = OD_MEDS  then FInptDlg := OrderForInpatient;
+  if XfInToOutNow then
+    FInptDlg := False;
+  if XferOuttoInOnMeds then
+    FInptDlg := True;
+  if ImmdCopyAct and isUDGroup and (Patient.Inpatient) then
+    FInptDlg := True;
+  if ImmdcopyAct and (not isUDGroup) then
+    FInptDlg := False;
+  if FInptDlg then FillerID := 'PSI' else FillerID := 'PSO';
+  FGuideline := TStringList.Create;
+  FAllDoses  := TStringList.Create;
+  FAllDrugs  := TStringList.Create;
+  StatusText('Loading Dialog Definition');
+  if      DlgFormID = OD_MEDINPT  then Responses.Dialog := 'PSJ OR PAT OE'
+  else if DlgFormID = OD_MEDOUTPT then Responses.Dialog := 'PSO OERR'
+  else if DlgFormID = OD_MEDNONVA then Responses.Dialog := 'PSH OERR'
+  else                                 Responses.Dialog := 'PS MEDS';  // loads formatting info
+  {if not FInptDlg then } Responses.SetPromptFormat('INSTR', '@');
+  StatusText('Loading Schedules');
+  //if (Self.EvtID > 0) then LoadSchedules(cboSchedule.Items)
+  //else LoadSchedules(cboSchedule.Items, FInptDlg);
+  LoadSchedules(cboSchedule.Items, FInptDlg);
+  StatusText('');
+  if FInptDlg then SetControlsInpatient else SetControlsOutpatient;
+  CtrlInits.SetControl(cboPriority, 'Priority');
+  FSuppressMsg := CtrlInits.DefaultText('DispMsg') = '1';
+  FOrigiMsgDisp := FSuppressMsg;
+  InitDialog;
+  isIMO := IfisIMODialog;
+  if (isIMO) or ((FInptDlg) and (encounter.Location <> patient.Location)) then
+      FAdminTimeText := 'Not defined for Clinic Locations';
+  if FInptDlg then
+  begin
+    txtNss.Visible := True;
+    //cboSchedule.ListItemsOnly := True;
+    //cboXSchedule.ListItemsOnly := True;
+  end;
+  with grdDoses do
+  begin                                          
+    ColWidths[0] := 8;  // select
+    ColWidths[1] := 160; // dosage
+    ColWidths[2] := 82;  // route
+    ColWidths[3] := 102;  // schedule
+    ColWidths[4] := 70;  // duration
+    if (FInptDlg) and (FAdminTimeText <> 'Not defined for Clinic Locations') then
+      begin
+        ColWidths[5] := 102;  // administration times
+        ColWidths[6] := 58;  // and/then
+      end
+    else
+        ColWidths[5] := 0;
+        ColWidths[6] := 58;
+    Cells[1, 0]  := 'Dosage';
+    Cells[2, 0]  := 'Route';
+    Cells[3, 0]  := 'Schedule';
+    Cells[4, 0]  := 'Duration (optional)';
+    Cells[5, 0]  := 'Admin. Times';
+    Cells[6, 0]  := 'then/and';
+  end;
+
+  // medication selection
+  FRowHeight := MainFontHeight + 1;
+
+  //IsIMO := IfIsIMODialog; //IMO
+  if (Self.EvtID > 0) then IsIMO := False; // event order can not be IMO order.
+  if FInptDlg then x := 'UD RX'
+  else if (not FInptDlg) and (DlgFormID = OD_MEDNONVA) then x := 'NV RX'
+  else x := 'O RX';
+  if FInptDlg and (not OrderForInpatient) and (not IsIMO) then        //IMO
+  begin
+    FOutptIV := TRUE;
+    x := 'IVM RX';
+  end;
+  if self.EvtID > 0  then FAdminTimeText := 'To Be Determined';
+  ListForOrderable(FCacheIEN, ListCount, x);
+  lstAll.Items.Count := ListCount;
+  FMedCache := TObjectList.Create;
+  FQuickItems := TStringList.Create;
+  ListForQuickOrders(FQuickList, ListCount, x);
+  if ListCount > 0 then
+  begin
+    lstQuick.Items.Count := ListCount;
+    SubsetOfQuickOrders(FQuickItems, FQuickList, 0, 0);
+    FActiveMedList := lstQuick;
+  end else
+  begin
+    lstQuick.Items.Count := 1;
+    ListCount := 1;
+    FQuickItems.Add('0^(No quick orders available)');
+    FActiveMedList := lstAll;
+  end;
+  // set the height based on user parameter here
+  with lstQuick do if ListCount < VisibleRowCount
+    then Height := (((Height - 6) div VisibleRowCount) * ListCount) + 6;
+  pnlFields.Height := memOrder.Top - 4 - pnlFields.Top;
+  FNoZero := False;
+  FShrinked := False;
+  FShrinkDrugMsg := False;
+  FResizedAlready := False;
+  FShowPnlXScheduleOk := True;
+  FRemoveText := True;
+  JAWSON := True;
+  if ScreenReaderActive = false then
+    begin
+      lblAdminTime.TabStop := false;
+      lblAdminSch.TabStop := false;
+      memOrder.TabStop := false;
+      JAWSON := false;
+    end;
+end;
+
+procedure TfrmODMeds.FormDestroy(Sender: TObject);
+begin
+  {selection}
+  FQuickItems.Free;
+  FMedCache.Free;
+  {edit}
+  FGuideline.Free;
+  FAllDoses.Free;
+  FAllDrugs.Free;
+  frmFrame.pnlVisit.Enabled := true;
+  inherited;
+end;
+
+procedure TfrmODMeds.InitDialog;
+{ Executed each time dialog is reset after pressing accept.  Clears controls & responses }
+begin
+  inherited;
+  FLastPickup := ValueOf(FLD_PICKUP);
+  Changing := True;
+  ResetOnMedChange;
+  txtMed.Text := '';
+  txtMed.Tag := 0;
+  lstQuick.Selected := nil;
+  lstAll.Selected := nil;
+  if Visible then ShowMedSelect;
+  Changing := False;
+  FIsQuickOrder := False;
+  FQOQuantity := 0 ;
+  FQODosage   := '';
+  FQOInitial  := False;
+  FNSSOther   := False;
+end;
+
+procedure TfrmODMeds.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  AnInstr, OrderID, nsSch, Text, tempOrder, tempSchString, tempSchType, AdminTime: string;
+  ix: integer;
+  LocChange: boolean;
+  AResponse: TResponse;
+
+begin
+  inherited;
+  FOrderAction := OrderAction;
+  if self.EvtID > 0 then DisplayDoseNow(false);
+  if XfInToOutNow then DisplayGroup := DisplayGroupByName('O RX');
+  if (CharAt(ID,1)='X') or (CharAt(ID,1)='C') then
+  begin
+    OrderID := Copy(Piece(ID, ';', 1), 2, Length(ID));
+    CheckExistingPI(OrderID, FPtInstruct);
+  end;
+  //AGP 27.72 Order Action behave similar to QO this is why Edit and Copy are setting FIsQuickOrder to true
+  //this is not the best approach but this should fix the problem with order edit losing the quantity value.
+  if (OrderAction = ORDER_QUICK) or (OrderAction = ORDER_EDIT) or (OrderAction = ORDER_COPY) then
+  begin
+    FIsQuickOrder := True;
+    FQOInitial := True;
+  end
+  else
+  begin
+    FIsQuickOrder := False;
+    FQOInitial := False;
+  end;
+  if lblDays.Visible then SetVisibleCommentRows(2) else SetVisibleCommentRows(4);
+  if OrderAction in [ORDER_COPY, ORDER_EDIT] then Responses.Remove('START', 1);
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then
+  begin
+    Changing := True;
+    txtMed.Tag  := StrToIntDef(Responses.IValueFor('ORDERABLE', 1), 0);
+    if (OrderAction = ORDER_QUICK) and (uOrders.PassDrugTstCall = False) and
+     (uOrders.OutptDisp = OutptDisp) and (PassDrugTest(txtMed.Tag, 'Q', false) = False) then Exit;
+    if (OrderAction = ORDER_QUICK) and (uOrders.PassDrugTstCall = False) and
+     ((uOrders.ClinDisp = ClinDisp) or (uOrders.InptDisp = InptDisp)) and (PassDrugTest(txtMed.Tag, 'Q', true) = False) then Exit;
+  (*  if (OrderAction = ORDER_QUICK) then
+      begin
+        tempAltIEN := GetQOAltOI;
+        if tempAltIEN > 0 then txtMed.Tag := tempAltIEN;
+      end; *)
+    SetOnMedSelect;                               // set up for this medication
+    SetOnQuickOrder;                              // insert quick order responses
+    ShowMedFields;
+    if (OrderAction = ORDER_EDIT) and OrderIsReleased(Responses.EditOrder)
+      then btnSelect.Enabled := False;
+    if (OrderAction in [ORDER_COPY, ORDER_EDIT]) and (self.EvtID <= 0) then //nss
+    begin
+       if NSSchedule then
+       begin
+         for ix := 0 to Responses.TheList.Count - 1 do
+         begin
+           if TResponse(Responses.TheList[ix]).promptid = 'SCHEDULE'  then
+           begin
+             nsSch :=  TResponse(Responses.theList[ix]).EVALUE;
+             if length(nsSch) > 0 then
+             begin
+                SetSchedule(nsSch);
+                {cboSchedule.SelectByID(nsSch);
+                if cboSchedule.ItemIndex < 0 then
+                begin
+                  cboSchedule.Items.Add(nsSch);
+                  cboSchedule.ItemIndex := cboSchedule.Items.IndexOf(nsSch);
+                end;}
+             end;
+           end;
+         end;
+       end;
+    end;  //nss
+    //if (FInptDlg) and (self.tabDose.TabIndex = TI_DOSE) and (OrderAction in [ORDER_COPY, ORDER_EDIT])  then
+    if (FInptDlg) and (OrderAction in [ORDER_COPY, ORDER_EDIT])  then
+      begin
+        TempOrder := Piece(id,';',1);
+        TempOrder := Copy(tempOrder, 2, Length(tempOrder));
+        LocChange := DifferentOrderLocations(tempOrder, Patient.Location);
+          if LocChange = false then
+            begin
+              AResponse := Responses.FindResponseByName('ADMIN', 1);
+              if AResponse <> nil then AdminTime := AResponse.EValue;
+              if self.cboSchedule.ItemIndex > -1 then
+                begin
+                  tempSchString := self.cboSchedule.Items.Strings[cboSchedule.itemindex];
+                  SetPiece(tempSchString,U,4,AdminTime);
+                  self.cboSchedule.Items.strings[cboSchedule.ItemIndex] := tempSchString;
+                end;
+              if self.tabDose.TabIndex = TI_COMPLEX then
+                begin
+                  if self.cboXSchedule.ItemIndex > -1 then
+                    begin
+                      tempSchString := self.cboXSchedule.Items.Strings[cboXSchedule.itemindex];
+                      SetPiece(tempSchString,U,4,AdminTime);
+                      self.cboXSchedule.Items.strings[cboXSchedule.ItemIndex] := tempSchString;
+                    end;
+                end;
+              AResponse := Responses.FindResponseByName('SCHTYPE', 1);
+              if AResponse <> nil then tempSchType := AResponse.EValue;
+              if self.cboSchedule.ItemIndex > -1 then
+                begin
+                  if (Piece(self.cboSchedule.Items.Strings[self.cboSchedule.itemIndex], U, 3) = 'C') and (tempSchType = 'P') then
+                     self.chkPRN.Checked := True
+                  else
+                     begin
+                       tempSchString := self.cboSchedule.Items.Strings[cboSchedule.itemindex];
+                       SetPiece(tempSchString,U,3,tempSchType);
+                       self.cboSchedule.Items.strings[cboSchedule.ItemIndex] := tempSchString;
+                     end;
+                  end;
+               if self.tabDose.TabIndex = TI_COMPLEX then
+                begin
+                  if self.cboXSchedule.ItemIndex > -1 then
+                    begin
+                      if  (Piece(self.cboXSchedule.Items.Strings[self.cboXSchedule.itemIndex], U, 3) = 'C') and (tempSchType = 'P') then
+                          self.chkXPRN.Checked := True
+                      else
+                        begin
+                          tempSchString := self.cboXSchedule.Items.Strings[cboXSchedule.itemindex];
+                          SetPiece(tempSchString,U,3,tempSchType);
+                          self.cboXSchedule.Items.strings[cboXSchedule.ItemIndex] := tempSchString;
+                        end;
+                    end;
+                end;
+            end;
+        if (FAdminTimeText <> 'Not defined for Clinic Locations') and (self.tabDose.TabIndex = TI_COMPLEX) then
+            lblAdminSchSetText('');
+        if (FAdminTimeText <> '') and (self.tabDose.TabIndex = TI_DOSE) then lblAdminSchSetText('Admin. Time: ' + FAdminTimeText);
+      end;
+    if ((OrderAction <> Order_COPY) and (OrderAction <> Order_EDIT)) or
+    (XfInToOutNow = true) or (FIsQuickOrder) then UpdateRelated(FALSE); //AGP Change
+    Changing := False;
+    if ((OrderAction = Order_Copy) or (OrderAction = Order_Edit)) and
+        (self.cboSchedule.ItemIndex > -1) then
+          UpdateStartExpires(Piece(self.cboSchedule.items.strings[self.cboSchedule.itemindex], U, 1));
+  end;
+  { prevent the SIG from being part of the comments on pre-CPRS prescriptions }
+  if (OrderAction in [ORDER_COPY, ORDER_EDIT]) and (cboDosage.Text = '') then
+  begin
+    OrderID := Copy(Piece(ID, ';', 1), 2, Length(ID));
+    AnInstr := TextForOrder(OrderID);
+    pnlMessage.TabOrder := 0;
+    DispOrderMessage(AnInstr);
+    if OrderAction = ORDER_COPY
+      then AnInstr := 'Copy: ' + AnInstr
+      else AnInstr := 'Change: ' + AnInstr;
+    Text := AnsiReplaceText(AnInstr,CRLF,'');
+    Caption := Text;
+    memComment.Clear;  // sometimes the sig is in the comment
+  end;
+  ControlChange(Self);
+  if Self.IsSupply then
+    btnSelect.Enabled := False;
+end;
+
+procedure TfrmODMeds.Validate(var AnErrMsg: string);
+var
+  i,ie,code, curSupply, tempRefills: Integer;
+  curDispDrug, tmpError, temp, x: string;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+  procedure ValidateDosage(const x: string);
+  begin
+    if Length(x) = 0 then SetError(TX_NO_DOSE);
+  end;
+
+  procedure ValidateRoute(const x: string; NeedLookup: Boolean; AnInstance: Integer);
+  var
+    RouteID, RouteAbbr: string;
+  begin
+    //if order does not have route, and is not a supply order,
+    // and is not an outpaitent order, then display error text to require route
+    if (Length(x) = 0) and (Not IsSupplyAndOutPatient) then
+    begin
+      if cboRoute.Showing = true then cboRoute.SetFocus;  //CQ: 7467
+      SetError(TX_NO_ROUTE);
+    end;
+    if (Length(x) > 0) and NeedLookup then
+    begin
+      LookupRoute(x, RouteID, RouteAbbr);
+      if RouteID = '0'
+        then
+        begin
+         if cboRoute.Showing = true then cboRoute.SetFocus;    //CQ: 7467
+        SetError(TX_NF_ROUTE);
+        end
+        else Responses.Update('ROUTE', AnInstance, RouteID, RouteAbbr);
+    end;
+  end;
+
+  procedure ValidateSchedule(const x: string; AnInstance: Integer);
+  const
+    SCH_BAD = 0;
+    SCH_NO_RTN = -1;
+  var
+    ValidLevel: Integer;
+    ARoute, ADrug, tmpX: string;
+  begin
+    ARoute := ValueOfResponse(FLD_ROUTE_ID, AnInstance);
+    ADrug  := ValueOfResponse(FLD_DRUG_ID,  AnInstance);
+    tmpX := x; //Changed for CQ: 7370 - it was tmpX := Trim(x);
+    if (Length(tmpX) = 0) and (not FInptDlg) then SetError(TX_NO_SCHED)
+    else if (Length(tmpX) = 0) and FInptDlg and ScheduleRequired(txtMed.Tag, ARoute, ADrug)
+      then SetError(TX_NO_SCHED);
+    if Length(tmpX) > 0 then
+    begin
+      if FInptDlg then ValidLevel := ValidSchedule(tmpX) else ValidLevel := ValidSchedule(tmpX, 'O');
+      if ValidLevel = SCH_NO_RTN then
+      begin
+        if Pos('"', tmpX) > 0                              then SetError(TX_SCH_QUOTE);
+        if Copy(tmpX, 1, 1) = '-'                          then SetError(TX_SCH_MINUS);
+        if Pos(' ', Copy(tmpX, Pos(' ', tmpX) + 1, 999)) > 0  then SetError(TX_SCH_SPACE);
+        if Length(tmpX) > 70                               then SetError(TX_SCH_LEN);
+        if (Pos('P RN', tmpX) > 0) or (Pos('PR N', tmpX) > 0) then SetError(TX_SCH_PRN);
+        if Pos('Q0', tmpX) > 0                             then SetError(TX_SCH_ZERO);
+        if TrimLeft(tmpX) <> tmpX                             then SetError(TX_SCH_LSP);
+      end;
+      if ValidLevel = SCH_BAD then SetError(TX_SCH_NS);
+    end;
+  end;
+
+begin
+  inherited;
+  ControlChange(Self);                            // make sure everything is updated
+  if txtMed.Tag = 0 then SetError(TX_NO_MED);
+  if Responses.InstanceCount('INSTR') < 1 then SetError(TX_NO_DOSE);
+  if Pos(U, self.memComment.Text) > 0 then SetError('Comments cannot contain a "^".');
+  i := Responses.NextInstance('INSTR', 0);
+  while i > 0 do
+  begin
+    if (ValueOfResponse(FLD_DRUG_ID, i) = '') then
+    begin
+      if not ContainsAlpha(Responses.IValueFor('INSTR', i)) then
+      begin
+         SetError(TX_DOSE_NUM);
+         if tabDose.TabIndex = TI_DOSE then
+            cboDosage.SetFocus;    //CQ: 7467
+      end;
+      if Length(Responses.IValueFor('INSTR', i)) > 60       then
+      begin
+         SetError(TX_DOSE_LEN);
+         cboDosage.SetFocus;  //CQ: 7467
+      end;
+    end;
+    ValidateRoute(Responses.EValueFor('ROUTE', i), Responses.IValueFor('ROUTE', i) = '', i);
+    ValidateSchedule(ValueOfResponse(FLD_SCHEDULE, i), i);
+    i := Responses.NextInstance('INSTR', i);
+  end;
+  if self.tabDose.TabIndex = TI_DOSE then
+     begin
+         if (LeftStr(cboDosage.Text,1)='.') then
+       begin
+         SetError('Dosage must have a leading numeric value');
+         Exit;
+       end;
+     end;
+  //AGP Change 26.45 Fix for then/and conjucntion PSI-04-069
+  if self.tabDose.TabIndex = TI_COMPLEX then
+    begin
+       for i := 1 to self.grdDoses.RowCount do
+         begin
+           temp := ValFor(COL_DOSAGE, i);
+           if (LeftStr(temp,1) = '.') then
+             begin
+                SetError('All dosage must have a leading numeric value');
+                Exit;
+             end;
+           if (i > 1) and ((ValFor(COL_DOSAGE, i-1) <> '') and (ValFor(COL_DOSAGE, i) <> '')) and (ValFor(COL_SEQUENCE,i-1) = '') then
+              begin
+                SetError(TX_NO_SEQ);
+                Exit;
+              end;
+         end;
+    end;
+  if not FInptDlg then                            // outpatient stuff
+  begin
+    if Responses.IValueFor('PICKUP', 1) = '' then SetError(TX_NO_PICK);
+    temp := Responses.IValueFor('REFILLS', 1);
+    for i := 1 to Length(temp) do if not (temp[i] in ['0'..'9']) then
+      begin
+        SetError('Refills can only be a number');
+        Exit;
+      end;
+    tempRefills := StrToIntDef(temp, 0);
+    if (spnRefills.Max > 0) and (tempRefills > 0) then
+      begin
+        i := Responses.NextInstance('DOSE', 0);
+        while i > 0 do
+        begin
+          x := ValueOfResponse(FLD_DRUG_ID,   i);
+          CurDispDrug := CurDispDrug + x + U;
+          i := Responses.NextInstance('DOSE', i);
+        end;
+        CurSupply   := StrToIntDef(ValueOfResponse(FLD_SUPPLY)   ,0);
+        UpdateRefills(CurDispDrug, CurSupply);
+      end;
+    if tempRefills > spnRefills.Max
+      then SetError(TX_RNG_REFILL + IntToStr(spnRefills.Max));
+    with txtQuantity do
+      begin
+        if not ValidQuantity(Responses.IValueFor('QTY', 1)) then
+          SetError(TX_QTY_NV);
+      (*  else
+          begin
+            Quantity := ValidateQuantityErrorMsg(StrtoIntDef(Responses.IValueFor('QTY', 1), 0));
+            if Quantity <> '' then SetError(Quantity);
+          end; *)
+      end;
+    with txtSupply do
+    begin
+      txtSupply.Text := Trim(txtSupply.Text);
+      Val( txtSupply.Text, ie, code);
+      if (code <> 0) and (ie = 0)then
+      begin
+        SetError(TX_SUPPLY_NINT);
+        Exit;
+      end;
+      if (StrToIntDef(Responses.IValueFor('SUPPLY', 1), 0) > 90) then SetError(TX_SUPPLY_LIM);
+      if (StrToIntDef(Responses.IValueFor('SUPPLY', 1), 0) < 1)  then SetError(TX_SUPPLY_LIM1);
+      //Supply := ValidateDaySupplyandQuantityErrorMsg(strtoInt(Responses.IValueFor('SUPPLY',1)));
+      //if Supply <> '' then  SetError(Supply);
+    end;
+    tmpError :=  ValidateDaySupplyandQuantityErrorMsg(strtoInt(Responses.IValueFor('SUPPLY',1)),StrtoIntDef(Responses.IValueFor('QTY', 1), 0));
+    if tmpError <> '' then SetError(tmpError)
+    else ClearMaxData;
+  end;
+end;
+
+procedure TfrmODMeds.SetVisibleCommentRows( Rows: integer);
+begin
+  memComment.Height := (Abs(Font.Height)+2)*Rows+8;
+end;
+
+procedure TfrmODMeds.SetControlsInpatient;
+begin
+  FillerID := 'PSI';
+  CtrlInits.LoadDefaults(ODForMedsIn);
+  lblPriority.Top := pnlFields.Height - cboPriority.Height - lblPriority.Height - 1;
+  cboPriority.Top := pnlFields.Height - cboPriority.Height;
+  lblDays.Visible := False;
+  txtSupply.Visible := False;
+  spnSupply.Visible := False;
+  lblQuantity.Visible := False;
+  txtQuantity.Visible := False;
+  spnQuantity.Visible := False;
+  lblQtyMsg.Visible := False;
+  lblRefills.Visible := False;
+  txtRefills.Visible := False;
+  spnRefills.Visible := False;
+  grpPickup.Visible := False;
+  lblPriority.Visible := True;
+  cboPriority.Visible := True;
+  chkDoseNow.Visible := True;
+  lblAdminTime.Visible := True;
+  lblAdminSch.Visible := True;
+  lblAdminSch.Hint := AdminTimeHelpText;
+  if cboXSequence.Items.IndexOf('except') > -1 then cboXSequence.Items.Delete(cboXSequence.Items.IndexOf('except'));
+end;
+
+procedure TfrmODMeds.SetControlsOutpatient;
+begin
+  FillerID := 'PSO';
+  CtrlInits.LoadDefaults(ODForMedsOut);
+  lblPriority.Top := lblQuantity.Top;
+  cboPriority.Top := txtQuantity.Top;
+  lblDays.Visible := True;
+  txtSupply.Visible := True;
+  spnSupply.Visible := True;
+  lblQuantity.Visible := True;
+  txtQuantity.Visible := True;
+  //if IsClozapineOrder = True then txtQuantity.Enabled := false;
+  spnQuantity.Visible := True;
+  lblQtyMsg.Visible := True;
+  lblRefills.Visible := True;
+  txtRefills.Visible := True;
+  spnRefills.Visible := True;
+  grpPickup.Visible := True;
+  lblPriority.Visible := True;
+  cboPriority.Visible := True;
+  chkDoseNow.Visible := False;
+  lblAdminTime.Visible := False;
+  lblAdminSch.Visible := False;
+  if cboXSequence.Items.IndexOf('except') = -1 then cboXSequence.Items.Add('except');
+  
+end;
+
+{ Navigate medication selection lists ------------------------------------------------------- }
+
+{ txtMed methods (including timers) }
+
+procedure TfrmODMeds.WMTimer(var Message: TWMTimer);
+begin
+  inherited;
+  if (Message.TimerID = TIMER_ID) then
+  begin
+    StopKeyTimer;
+    ChangeDelayed;
+  end;
+end;
+
+procedure TfrmODMeds.StartKeyTimer;
+{ start (or restart) a timer (done on keyup to delay before calling OnKeyPause) }
+var
+  ATimerID: Integer;
+begin
+  StopKeyTimer;
+  ATimerID := SetTimer(Handle, TIMER_ID, TIMER_DELAY, nil);
+  FKeyTimerActive := ATimerID > 0;
+  // if can't get a timer, just call the event immediately  F
+  if not FKeyTimerActive then Perform(WM_TIMER, TIMER_ID, 0);
+end;
+
+procedure TfrmODMeds.StopKeyTimer;
+{ stop the timer (done whenever a key is pressed or the combobox no longer has focus) }
+begin
+  if FKeyTimerActive then
+  begin
+    KillTimer(Handle, TIMER_ID);
+    FKeyTimerActive := False;
+  end;
+end;
+
+function TfrmODMeds.FindQuickOrder(const x: string): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  if x = '' then Exit;
+  for i := 0 to Pred(FQuickItems.Count) do
+  begin
+    if (Result > -1) or (FQuickItems[i] = '') then Break;
+    if AnsiCompareText(x, Copy(Piece(FQuickItems[i],'^',2), 1, Length(x))) = 0 then Result := i;
+  end;
+end;
+
+procedure TfrmODMeds.txtMedKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+var
+  i: Integer;
+  x: string;
+begin
+  if txtMed.ReadOnly then    // v27.50 - RV - CQ #15365
+  begin
+    if not (Key in [VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN, VK_HOME, VK_END]) then           // navigation
+    begin
+      Key := 0;
+      Exit;
+    end;
+  end
+  else if (Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN]) then             // navigation
+  begin
+    FActiveMedList.Perform(WM_KEYDOWN, Key, 0);
+    FFromSelf := True;
+    //txtMed.Text := FActiveMedList.Selected.Caption;
+    txtMed.SelectAll;
+    FFromSelf := False;
+    Key := 0;
+  end
+  else if Key = VK_BACK then
+  begin
+    FFromSelf := True;
+    x := txtMed.Text;
+    i := txtMed.SelStart;
+    if i > 1 then Delete(x, i + 1, Length(x)) else x := '';
+    txtMed.Text := x;
+    if i > 1 then txtMed.SelStart := i;
+    FFromSelf := False;
+  end
+  else {StartKeyTimer};
+end;
+
+procedure TfrmODMeds.txtMedKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if txtMed.ReadOnly then exit;    // v27.50 - RV - CQ #15365
+  if not (Key in [VK_PRIOR, VK_NEXT, VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN, VK_HOME, VK_END]) then StartKeyTimer;
+end;
+
+
+procedure TfrmODMeds.txtMedChange(Sender: TObject);
+begin
+  if FFromSelf then Exit;
+  FChangePending := True;
+end;
+
+procedure TfrmODMeds.ScrollToVisible(AListView: TListView);
+var
+  Offset: Integer;
+  SelRect: TRect;
+begin
+  AListView.Selected.MakeVisible(FALSE);
+  SelRect := AListView.Selected.DisplayRect(drBounds);
+  FRowHeight := SelRect.Bottom - SelRect.Top;
+  Offset := AListView.Selected.Index - AListView.TopItem.Index;
+  Application.ProcessMessages;
+  if Offset > 0 then AListView.Scroll(0, (Offset * FRowHeight));
+  Application.ProcessMessages;
+end;
+
+procedure TfrmODMeds.ChangeDelayed;
+var
+  QuickIndex, AllIndex: Integer;
+  NewText, OldText, UserText: string;
+  UniqueText: Boolean;
+begin
+  FRemoveText := False;
+  UniqueText := False;
+  FChangePending := False;
+  if (Length(txtMed.Text) > 0) and (txtMed.SelStart = 0) then Exit;  // don't lookup null
+  // lookup item in appropriate list box
+  NewText := '';
+  UserText := Copy(txtMed.Text, 1, txtMed.SelStart);
+  QuickIndex := FindQuickOrder(UserText);            // look in quick list first
+  AllIndex := IndexOfOrderable(FCacheIEN, UserText);  // but always synch the full list
+  if UserText <> Copy(txtMed.Text, 1, txtMed.SelStart) then Exit;  // if typing during lookup
+  if AllIndex > -1 then
+  begin
+    lstAll.Selected := lstAll.Items[AllIndex];
+    FActiveMedList := lstAll;
+  end;
+  if QuickIndex > -1 then
+  begin
+    try
+      lstQuick.Selected := lstQuick.Items[QuickIndex];
+      lstQuick.ItemFocused := lstQuick.Selected;
+      NewText := lstQuick.Selected.Caption;
+      FActiveMedList := lstQuick;
+      //Search Quick List for Uniqueness
+      UniqueText := isUniqueQuickOrder(UserText);
+    except
+      //doing nothing  short term solution related to 117
+    end;
+  end
+  else if AllIndex > -1 then
+  begin
+    lstAll.Selected := lstAll.Items[AllIndex];
+    lstAll.ItemFocused := lstAll.Selected;
+    NewText := lstAll.Selected.Caption;
+    lstQuick.Selected := nil;
+    FActiveMedList := lstAll;
+    //List is alphabetical, So compare next Item in list to establish uniqueness.
+    if CompareText(UserText, Copy(lstAll.Items[AllIndex+1].Caption, 1, Length(UserText))) <> 0 then
+      UniqueText := True;
+  end
+  else
+  begin
+    lstQuick.Selected := nil;
+    lstAll.Selected := nil;
+    FActiveMedList := lstAll;
+    NewText := txtMed.Text;
+  end;
+  if (AllIndex > -1) and (QuickIndex > -1) then  //Not Unique Between Lists
+    UniqueText := False;
+  FFromSelf := True;
+  {AutoSelection is only based upon uniquely matching characters.
+   Several CQs have been resolved relating to this issue:
+   See CQ:
+   7326 - Auto complete does not work correctly if user has quick orders in Medication list
+   7328 - PSI-05-016: TAM-0205-31170  Med Error due to pre-populated med screen
+   6715 PSI-04-044 Orders: NJH-0804-20315  Physician unable to enter medication order
+  }
+  if UniqueText then
+  begin
+    OldText := Copy(txtMed.Text, 1, txtMed.SelStart);
+    txtMed.Text := NewText;
+    //txtMed.SelStart := Length(OldText);  // v24.14 RV
+    txtMed.SelStart := Length(UserText);   // v24.14 RV
+    txtMed.SelLength := Length(NewText);
+  end
+  else begin
+    txtMed.Text := UserText;
+    txtMed.SelStart := Length(txtMed.Text);
+  end;
+  FFromSelf := False;
+  if lstAll.Selected <> nil then
+    ScrollToVisible(lstAll);
+  if lstQuick.Selected <> nil then
+    ScrollToVisible(lstQuick);
+  if Not UniqueText then
+  begin
+    lstQuick.ItemIndex := -1;
+    lstAll.ItemIndex := -1;
+  end;
+  FRemoveText := True;
+end;
+
+procedure TfrmODMeds.txtMedExit(Sender: TObject);
+begin
+  StopKeyTimer;
+  if txtMed.ReadOnly then exit;        // v27.50 - RV - CQ #15365
+  if not ((ActiveControl = lstAll) or (ActiveControl = lstQuick)) then ChangeDelayed;
+end;
+
+{ lstAll & lstQuick methods }
+
+procedure TfrmODMeds.ListViewEnter(Sender: TObject);
+begin
+  inherited;
+  FActiveMedList := TListView(Sender);
+  with Sender as TListView do
+  begin
+    if Selected = nil then Selected := TopItem;
+    if Name = 'lstQuick' then lstAll.Selected := nil else lstQuick.Selected := nil;
+    ItemFocused := Selected;
+    //ScrollToVisible(TListView(Sender));
+  end;
+end;
+
+procedure TfrmODMeds.ListViewClick(Sender: TObject);
+begin
+  inherited;
+  btnSelect.Visible := True;
+  btnSelect.Enabled := True;
+  //txtMed.Text := FActiveMedList.Selected.Caption;
+  PostMessage(Handle, UM_DELAYCLICK, 0, 0);
+end;
+
+procedure TfrmODMeds.UMDelayClick(var Message: TMessage);
+begin
+ btnSelectClick(Self);
+end;
+
+procedure TfrmODMeds.ListViewEditing(Sender: TObject; Item: TListItem;
+  var AllowEdit: Boolean);
+begin
+  AllowEdit := FALSE;
+end;
+
+procedure TfrmODMeds.ListViewKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+//This code emulates combo-box behavior on the quick view and all meds view.
+//I think this is a really bad idea because it cannot automatically be undone.
+//Example: pull up a valid medication.  Press change button.  Press tab.  Valid
+//medication is gone, replaced by first quick order entry.  Not good behavior
+//when tabbing through page.
+//If we are going to use an edit box to play combo box, I emphatically suggest
+//that we use a different edit box.
+(*
+  with Sender as TListView do
+  begin
+    if txtMed.Text = Selected.Caption then Exit; // for tabs, arrows, etc.
+    FFromSelf := True;
+    txtMed.Text := Selected.Caption;
+    txtMed.SelectAll;
+    FFromSelf := False;
+    Key := 0;
+  end;
+*)
+end;
+
+procedure TfrmODMeds.ListViewResize(Sender: TObject);
+begin
+  with Sender as TListView do Columns.Items[0].Width := ClientWidth - 20;
+end;
+
+{ lstAll Methods (lstAll is TListView) }
+
+procedure TfrmODMeds.Loaded;
+begin
+  inherited;
+  if ScreenReaderSystemActive then
+    tabDose.TabStop := TRUE;
+end;
+
+// Cache is a list of 100 string lists, starting at idx 0
+procedure TfrmODMeds.LoadMedCache(First, Last: Integer);
+var
+  firstChunk, lastchunk, i: integer;
+  list: TStringList;
+  firstMed, LastMed: integer;
+
+begin
+  firstChunk := GetCacheChunkIndex(First);
+  lastChunk := GetCacheChunkIndex(Last);
+  for i := firstChunk to lastChunk do
+  begin
+    if (FMedCache.Count <= i) or (not assigned(FMedCache[i])) then
+    begin
+      while FMedCache.Count <= i do
+        FMedCache.add(nil);
+      list := TStringList.Create;
+      FMedCache[i] := list;
+      firstMed := i * MED_CACHE_CHUNK_SIZE;
+      LastMed := firstMed + MED_CACHE_CHUNK_SIZE - 1;
+      if LastMed >= lstAll.Items.Count then
+        LastMed := lstAll.Items.Count - 1;
+      SubsetOfOrderable(list, false, FCacheIEN, firstMed, lastMed);
+    end;
+  end;
+end;
+
+procedure TfrmODMeds.lstAllData(Sender: TObject; Item: TListItem);
+var
+  x: string;
+  chunk: integer;
+  list: TStringList;
+begin
+  LoadMedCache(Item.Index, Item.Index);
+  chunk := GetCacheChunkIndex(Item.Index);
+  list := TStringList(FMedCache[chunk]);
+  x := list[Item.Index mod MED_CACHE_CHUNK_SIZE];
+  Item.Caption := Piece(x, U, 2);
+  Item.Data := Pointer(StrToIntDef(Piece(x, U, 1), 0));
+end;
+
+procedure TfrmODMeds.lstAllDataHint(Sender: TObject; StartIndex,
+  EndIndex: Integer);
+begin
+  LoadMedCache(StartIndex, EndIndex);
+end;
+
+{ lstQuick methods (lstQuick is TListView) }
+
+procedure TfrmODMeds.lstQuickData(Sender: TObject; Item: TListItem);
+var
+  x: string;
+begin
+{  try
+    if FQuickItems[Item.Index] = '' then
+      SubsetOfQuickOrders(FQuickItems, FQuickList, Item.Index, Item.Index);}
+    x := FQuickItems[Item.Index];
+    Item.Caption := Piece(x, U, 2);
+    Item.Data := Pointer(StrToIntDef(Piece(x, U, 1), 0));
+{  except
+    // doing nothing
+  end;}
+end;
+
+procedure TfrmODMeds.lstQuickDataHint(Sender: TObject; StartIndex,
+  EndIndex: Integer);
+begin
+
+end;
+
+{ Medication is now selected ---------------------------------------------------------------- }
+
+procedure TfrmODMeds.btnSelectClick(Sender: TObject);
+var
+  MedIEN: Integer;
+  //MedName: string;
+  QOQuantityStr: string;
+  ErrMsg, Temp: string;
+begin
+  inherited;
+  QOQuantityStr := '';
+  btnSelect.SetFocus;                             // let the exit events finish
+  self.MedName := '';
+  if pnlMeds.Visible then                         // display the medication fields
+  begin
+    Changing := True;
+    ResetOnMedChange;
+    if (FActiveMedList = lstQuick) and (lstQuick.Selected <> nil) then   // quick order
+    begin
+      ErrMsg := '';
+      FIsQuickOrder := True;
+      FQOInitial := True;
+      Responses.QuickOrder := Integer(lstQuick.Selected.Data);
+      txtMed.Tag  := StrToIntDef(Responses.IValueFor('ORDERABLE', 1), 0);
+      if (not FInptDLG) and (PassDrugTest(TXTmED.Tag, 'N', false) = false) then exit;
+      if (FInptDLG) and (PassDrugTest(TXTmED.Tag, 'N', true) = false) then exit;
+      IsActivateOI(ErrMsg, txtMed.Tag);
+      if Length(ErrMsg)>0 then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        ShowMsg(ErrMsg);
+        Exit;
+      end;
+      if DEACheckFailed(txtMed.Tag, FInptDlg) then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+        txtMed.Tag := 0;
+        txtMed.SetFocus;
+        Exit;
+      end;
+      if txtMed.Tag = 0 then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        txtMed.SetFocus;
+        Exit;
+      end;
+   (*   temp := self.MedName;
+      tempIEN := txtMed.Tag;
+      QOIEN := GetQOOrderableItem(InttoStr(Responses.QuickOrder));
+      if QOIEN > 0 then
+        begin
+          CheckFormularyOI(tempIEN, temp, FInptDlg);
+          if tempIEN <> txtMed.Tag then
+            begin
+              txtMed.Tag := tempIEN;
+              txtMed.Text := temp;
+            end;
+        end; *)
+      FAltChecked := True;
+      ;
+      SetOnMedSelect;   // set up for this medication
+      SetOnQuickOrder;  // insert quick order responses
+      if Length(txtQuantity.Text)>0 then
+         QOQuantityStr := txtQuantity.Text;
+      ShowMedFields;
+      if self.tabDose.TabIndex = TI_COMPLEX then self.lblAdminSch.Visible := false;
+      if (txtQuantity.Text = '0') and (Length(QOQuantityStr)>0) then
+        txtQuantity.Text := QOQuantityStr;
+    end
+    else if (FActiveMedList = lstAll) and (lstAll.Selected <> nil) then  // orderable item
+    begin
+      MedIEN := Integer(lstAll.Selected.Data);
+      self.MedName := lstAll.Selected.Caption;
+      if (not FInptDLG) and (PassDrugTest(MedIEN, 'N', false) = false) then exit;
+      if (FInptDLG) and (PassDrugTest(MedIEN, 'N', true) = false) then exit;
+      txtMed.Tag := MedIEN;
+      ErrMsg := '';
+      IsActivateOI(ErrMsg, txtMed.Tag);
+      if Length(ErrMsg)>0 then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        ShowMsg(ErrMsg);
+        Exit;
+      end;
+      if DEACheckFailed(txtMed.Tag, FInptDlg) then
+      begin
+        //btnSelect.Visible := False;
+        btnSelect.Enabled := False;
+        InfoBox(TX_NO_DEA, TC_NO_DEA, MB_OK);
+        txtMed.Tag := 0;
+        txtMed.SetFocus;
+        Exit;
+      end;
+      if Pos(' NF', self.MedName) > 0 then
+      begin
+        temp := self.MedName;
+        CheckFormularyOI(MedIEN, temp, FInptDlg);
+        FAltChecked := True;
+      end;
+      if MedIEN <> txtMed.Tag then
+      begin
+        txtMed.Tag := MedIEN;
+        temp := self.MedName;
+        self.MedName := txtMed.Text;
+        txtMed.Text := Temp;
+      end;
+      SetOnMedSelect;
+      ShowMedFields;
+    end
+    else                                                                 // no selection
+    begin
+      //btnSelect.Visible := False;
+      btnSelect.Enabled := False;
+      MessageBeep(0);
+      //btnSelect.Visible := False;
+      btnSelect.Enabled := False;
+      Exit;
+    end;
+    UpdateRelated(False);
+    Changing := False;
+    ControlChange(Self);
+  end
+  else ShowMedSelect;                             // show the selection fields
+  FNoZERO   := False;
+end;
+
+procedure TfrmODMeds.ResetOnMedChange;
+var
+  i: Integer;
+begin
+  Responses.Clear;
+  // clear dialog controls individually, since they are on panels
+  with grdDoses do for i := 1 to Pred(RowCount) do Rows[i].Clear;
+  cboDosage.Items.Clear;
+  cboDosage.Text := '';
+  cboRoute.Items.Clear;
+  cboRoute.Text := '';
+  cboRoute.Hint := cboRoute.Text;
+  cboSchedule.ItemIndex := -1;
+  cboSchedule.Text := '';  // leave items intact
+  chkPRN.Checked := False;
+  memComment.Lines.Clear;
+  txtSupply.Text := '';
+  txtQuantity.Text := '';
+  txtRefills.Text := '0';
+  lblQtyMsg.Caption := '';
+  lblQuantity.Caption := 'Quantity';
+  chkDoseNow.Checked := FALSE;
+  lblAdminTime.Caption := '';
+  chkPtInstruct.Checked := False;
+  chkPtInstruct.Visible := False;
+  memPI.Visible := False;
+  stcPI.Visible := False;
+  image1.Visible := False;
+  memDrugMsg.Visible := False;
+  FLastUnits    := '';
+  FLastSchedule := '';
+  FLastDuration := '';
+  FLastInstruct := '';
+  FLastDispDrug := '-1';
+  FLastQuantity := 0;
+  FLastSupply   := 0;
+  FAltChecked   := False;
+  FPtInstruct   := '';
+end;
+
+procedure TfrmODMeds.ResetOnTabChange;
+var
+  i: Integer;
+begin
+  with grdDoses do for i := 1 to Pred(RowCount) do Rows[i].Clear;
+  Responses.Clear('STRENGTH');
+  Responses.Clear('NAME');
+  Responses.Clear('INSTR');
+  Responses.Clear('DOSE');
+  Responses.Clear('DRUG');
+  Responses.Clear('DAYS');
+  Responses.Clear('ROUTE');
+  Responses.Clear('SCHEDULE');
+  Responses.Clear('START', 1);
+  Responses.Clear('SIG');
+  Responses.Clear('SUPPLY');
+  Responses.Clear('QTY');
+  cboDosage.ItemIndex := -1;
+  cboDosage.Text := '';
+  cboRoute.ItemIndex  := -1;
+  cboRoute.Text := '';
+  cboSchedule.ItemIndex := -1;
+  cboSchedule.Text := '';  // leave items intact
+  if FAdminTimeText <> 'Not defined for Clinic Locations' then lblAdminSchSetText('');
+  txtSupply.Text := '';
+  txtSupply.Tag := 0;
+  txtQuantity.Text := '';
+  txtQuantity.Tag := 0;
+  lblQtyMsg.Caption := '';
+  lblQuantity.Caption := 'Quantity';
+  FSmplPRNChkd := chkPRN.Checked;  //  GE  CQ7585
+  chkPRN.Checked := False;
+  FLastUnits    := '';
+  FLastSchedule := '';
+  FLastDuration := '';
+  FLastInstruct := '';
+  FLastDispDrug := '';
+  FDrugID := '';
+end;
+
+procedure TfrmODMeds.SetOnMedSelect;
+var
+  i,j: Integer;
+  temp,x: string;
+  QOPiUnChk: boolean;
+  PKIEnviron: boolean;
+  AResponse: TResponse;
+begin
+  // clear controls?
+  cboDosage.Tag := -1;
+  txtSupply.Tag := 0;
+  txtQuantity.Tag := 0;
+  spnQuantity.Tag := 0;
+   QOPiUnChk := False;
+  PKIEnviron := False;
+  if GetPKISite then PKIEnviron := True;
+  with CtrlInits do
+  begin
+    // set up CtrlInits for orderable item
+    LoadOrderItem(OIForMed(txtMed.Tag, FInptDlg, IncludeOIPI, PKIEnviron));
+    // set up lists & initial values based on orderable item
+    SetControl(txtMed,       'Medication');
+    if (self.MedName <> '') then
+       begin
+         if (txtMed.Text <> self.MedName) then
+           begin
+             temp := self.MedName;
+             self.MedName := txtMed.Text;
+             txtMed.Text := temp;
+           end
+         else MedName := '';
+       end;
+    SetControl(cboDosage,    'Dosage');
+    SetControl(cboRoute,     'Route');
+    if cboRoute.Items.Count = 1 then cboRoute.ItemIndex := 0;
+    cboRouteChange(Self);
+    x := DefaultText('Schedule');
+    //AGP Change 27.72 trying to centralized the schedule setting code
+    AResponse := Responses.FindResponseByName('SCHEDULE',1);
+    if (AResponse <> nil) and (AResponse.EValue <> '') then  x := AResponse.EValue;
+    SetSchedule(x);
+   (* if x <> '' then
+    begin
+      cboSchedule.SelectByID(x);
+      if cboSchedule.ItemIndex > -1 then
+        AdminTime := Piece(cboSchedule.Items.Strings[cboSchedule.itemindex],U,4);
+      if (cboSchedule.ItemIndex < 0) and (RightStr(x,3) = 'PRN')  then
+        begin
+          self.chkPRN.Checked := true;
+          x := Copy(x,1,(Length(x)-3));
+          if RightStr(X,1) = ' ' then x := Copy(x,1,(Length(x)-1))
+        end;
+      cboSchedule.Text := x;
+    end; *)
+    if Length(ValueOf(FLD_QTYDISP))>10 then
+    begin
+      lblQuantity.Caption := Copy(ValueOf(FLD_QTYDISP),0,7) + '...';
+      lblQuantity.Hint := ValueOf(FLD_QTYDISP);
+    end;
+    FAllDoses.Text := TextOf('AllDoses');
+    FAllDrugs.Text := TextOf('Dispense');
+    FGuideline.Text := TextOf('Guideline');
+    case FGuideline.Count of
+    0: lblGuideline.Visible := False;
+    1:   begin
+           lblGuideline.Caption := FGuideline[0];
+           lblGuideline.Visible := TRUE;
+         end;
+    else begin
+           lblGuideline.Caption := 'Display Restrictions/Guidelines';
+           lblGuideline.Visible := TRUE;
+         end;
+    end;
+    if FInptDlg then
+    begin
+      if not FResizedAlready then
+      begin
+        pnlBottom.Height := pnlBottom.Height - lblDays.Height -  txtSupply.Height
+          - stcPi.Height - memPi.Height + 6;
+        FResizedAlready := True;
+      end;
+      pnlTop.Height := pnlFields.Height - pnlBottom.Height;
+      chkDoseNow.Top := memComment.Top + memComment.Height + 1;
+      lblPriority.Top := memcomment.Top + memComment.Height + 1;
+      cboPriority.Top := lblPriority.Top + lblPriority.Height;
+      lblAdminSch.Left := chkDoseNow.Left;
+      lblAdminSch.Top := chkDoseNow.Top + chkDoseNow.Height - 1;
+      lblAdminSch.Height := (MainFontHeight * 3) + 3;
+      lblAdminSch.Width := cboPriority.Left - lblAdminSch.Left - 5;
+      lblAdminTime.Left := lblAdminSch.Left;
+      lblAdminTime.top := lblAdminSch.Top + lblAdminSch.Height -1;
+      if self.tabDose.TabIndex = TI_Dose then lblAdminSchSetText('')
+      else
+        begin
+          if FAdminTimeText = 'Not defined for Clinic Locations' then lblAdminSchSetText('Admin. Time: ' + FAdminTimeText)
+          else self.lblAdminSch.Visible := False;
+        end;
+    end else
+    begin
+      DEASig := '';
+      if GetPKISite then DEASig := DefaultText('DEASchedule');
+      FSIGVerb := DefaultText('Verb');
+      if Length(FSIGVerb) = 0 then FSIGVerb := TX_TAKE;
+      FSIGPrep := DefaultText('Preposition');
+      if FLastPickup <> '' then SetPickup(FLastPickup) else SetPickup(DefaultText('Pickup'));
+      SetControl(txtRefills, 'Refills');
+      for j := 0 to Responses.TheList.Count - 1 do
+      begin
+        if (TResponse(Responses.theList[j]).PromptID = 'PI') and (TResponse(Responses.theList[j]).EValue = ' ') then
+          QOPiUnChk := True;
+      end;
+      //if Length(FPtInstruct) = 0 then
+      if FPtInstruct = '' then FPtInstruct := TextOf('PtInstr');
+      for i := 1 to Length(FPtInstruct) do if Ord(FPtInstruct[i]) < 32 then FPtInstruct[i] := ' ';
+      FPtInstruct := TrimRight(FPtInstruct);
+      if Length(FPtInstruct) > 0 then
+      begin
+        //chkPtInstruct.Caption := FPtInstruct;
+        if memPI.Lines.Count > 0 then
+          memPI.Lines.Clear;
+        memPI.Lines.Add(FPtInstruct);
+        chkPtInstruct.Visible := True;
+        chkPtInstruct.Checked := True;
+        stcPI.Visible := True;
+        memPI.Visible := True;
+        if FShrinked then
+        begin
+          pnlBottom.Height := pnlBottom.Height + memPi.Height + stcPI.Height + 2;
+          FShrinked := False;
+        end;
+        if QOPiUnChk then
+          chkPtInstruct.Checked := False;
+      end else
+      begin
+        chkPtInstruct.Visible := False;
+        chkPtInstruct.Checked := False;
+        stcPI.Visible := False;
+        memPI.Visible := False;
+        if not FShrinked then
+        begin
+          pnlBottom.Height := pnlBottom.Height - stcPI.Height - memPI.Height - 2;
+          FShrinked := True;
+        end;
+      end;
+    end;
+    pnlMessage.TabOrder := cboDosage.TabOrder + 1;
+    DispOrderMessage(TextOf('Message'));
+  end;
+end;
+
+procedure TfrmODMeds.SetOnQuickOrder;
+var
+  AResponse: TResponse;
+  x,LocRoute,TempSch,DispGrp: string;
+  i, DispDrug: Integer;
+begin
+  // txtMed already set by SetOnMedSelect
+  with Responses do
+  begin
+    if (InstanceCount('INSTR') > 1) or (InstanceCount('DAYS') > 0) then // complex dose
+    begin
+      grdDoses.RowCount := HigherOf(InstanceCount('INSTR')+2, 4);
+      i := Responses.NextInstance('INSTR', 0);
+      while i > 0 do
+      begin
+        SetDosage(IValueFor('INSTR', i));
+        with cboDosage do
+          if ItemIndex > -1 then x := Text + TAB + Items[ItemIndex]
+         else x := IValueFor('INSTR',i); //AGP Change 26.41 for CQ 9102 PSI-05-015 affect copy and edit functionality
+        grdDoses.Cells[COL_DOSAGE, i] := x;
+        SetControl(cboRoute,  'ROUTE', i);
+        with cboRoute do
+          if ItemIndex > -1 then x := Text + TAB + Items[ItemIndex] else x := Text;
+        grdDoses.Cells[COL_ROUTE,  i] := x;
+        if FIsQuickOrder then TempSch := cboSchedule.Text;
+        SetSchedule(IValueFor('SCHEDULE', i));
+        if (cboSchedule.Text = '') and (FIsQuickOrder) and (NSSchedule = False) then
+        begin
+          cboSchedule.SelectByID(TempSch);
+          cboSchedule.Text := TempSch;
+        end;
+        if (cboSchedule.Text = '') and (FIsQuickOrder) and (NSSchedule = True) then cboSchedule.ItemIndex := -1;
+        x := cboSchedule.Text;
+        if chkPRN.Checked then x := x + ' PRN';
+        with cboSchedule do
+          if ItemIndex > -1 then x := x + TAB + Items[ItemIndex];
+        grdDoses.Cells[COL_SCHEDULE, i] := x;
+        if chkPRN.Checked = True then grdDoses.Cells[COL_CHKXPRN,i] := '1';
+        grdDoses.Cells[COL_DURATION, i] := IValueFor('DAYS', i);
+        if FInptDlg then
+          begin
+            if IValueFor('ADMIN', i) <> '' then grdDoses.Cells[COL_ADMINTIME, i] := IValueFor('ADMIN', i)
+            else if cboSchedule.ItemIndex > -1 then
+               grdDoses.Cells[COL_ADMINTIME, i] := Piece(cboSchedule.Items.Strings[cboSchedule.itemIndex],U,4)
+            else grdDoses.Cells[COL_ADMINTIME, i] := '';
+            if grdDoses.Cells[COL_ADMINTIME, i] = '' then grdDoses.Cells[COL_ADMINTIME, i] := 'Not Defined';
+            if FAdminTimeText <> '' then grdDoses.Cells[COL_ADMINTIME, i] := FAdminTimeText;
+          end;
+        if      IValueFor('CONJ', i) = 'A' then x := 'AND'
+        else if IValueFor('CONJ', i) = 'T' then x := 'THEN'
+        else if IValueFor('CONJ', i) = 'X' then x := 'EXCEPT'
+        else x := '';
+        grdDoses.Cells[COL_SEQUENCE, i] := x;
+        i := Responses.NextInstance('INSTR', i);
+      end; {while}
+    end else                                      // single dose
+    begin
+      if FIsQuickOrder then
+      begin
+        FQODosage := IValueFor('INSTR', 1);
+        SetDosage(FQODosage);
+        TempSch := cboSchedule.Text;
+      end
+      else
+        SetDosage(IValueFor('INSTR', 1));
+      SetControl(cboRoute,  'ROUTE',     1);
+      SetSchedule(IValueFor('SCHEDULE',  1));
+      if (cboSchedule.Text = '') and (FIsQuickOrder) and (NSSchedule = False) then
+      begin
+        cboSchedule.SelectByID(TempSch);
+        cboSchedule.Text := TempSch;
+      end;
+      if (cboSchedule.Text = '') and (FIsQuickOrder) and (NSSchedule = True) then cboSchedule.ItemIndex := -1;
+      if ((cboSchedule.Text = 'OTHER') and FIsQuickOrder)  then
+         FNSSOther := True;
+      DispDrug := StrToIntDef(ValueOf(FLD_DRUG_ID), 0);
+      if Length(ValueOf(FLD_QTYDISP))>10 then
+      begin
+        lblQuantity.Caption := Copy(ValueOf(FLD_QTYDISP),0,7) + '...';
+        lblQuantity.Hint := ValueOf(FLD_QTYDISP);
+      end;
+      if DispDrug > 0 then
+      begin
+        DispOrderMessage(DispenseMessage(DispDrug));
+        x := QuantityMessage(DispDrug);
+      end;
+      if Length(x) > 0
+        then lblQtyMsg.Caption := TX_QTY_PRE + x + TX_QTY_POST
+        else lblQtyMsg.Caption := '';
+    end;
+    SetControl(memComment ,  'COMMENT',  1);
+    SetControl(cboPriority,  'URGENCY',  1);
+    if FInptDlg then
+    begin
+      SetControl(chkDoseNow, 'NOW', 1);
+      chkDoseNowClick(Self);
+    end else
+    begin
+      SetControl(txtSupply,   'SUPPLY',  1);
+      txtSupply.Text := Trim(txtSupply.Text);
+      spnSupply.Position   := StrToIntDef(txtSupply.Text, 0);
+      { setting .Tag=1 was commented out because xfer & change were not auto-calculating }
+      //if spnSupply.Position <> 0 then txtSupply.Tag   := 1;
+      if Length(IValueFor('QTY',1))>0 then
+      begin
+        FQOQuantity := StrToFloat(IValueFor('QTY',1));
+        txtQuantity.Text := FloatToStr(FQOQuantity);
+      end;
+      SetControl(txtQuantity, 'QTY',     1);
+      SetControl(txtRefills,  'REFILLS', 1);
+      spnRefills.Position  := StrToIntDef(txtRefills.Text, 0);
+      AResponse := Responses.FindResponseByName('PICKUP', 1);
+      if AResponse <> nil then SetPickup(AResponse.IValue);
+      if (FIsQuickOrder) and (FOrderAction = ORDER_QUICK) then
+      begin
+        if not QOHasRouteDefined(Responses.QuickOrder) then
+        begin
+          LocRoute := GetPickupForLocation(IntToStr(Encounter.Location));
+          SetPickup(LocRoute);
+        end;
+      end;
+      DispGrp := NameOfDGroup(Responses.DisplayGroup);
+      if (AResponse = nil) or ((StrToIntDef(Piece(Responses.CopyOrder,';',1),0)>0) and AnsiSameText('Out. Meds',DispGrp)) then
+      begin
+        LocRoute := GetPickupForLocation(IntToStr(Encounter.Location));
+        SetPickup(LocRoute);
+      end;
+      if ValueOf(FLD_PICKUP) = '' then SetPickup(FLastPickup);
+//      AResponse := Responses.FindResponseByName('SC',     1);
+      Responses.FindResponseByName('SC',     1);
+    end; {if FInptDlg..else}
+  end; {with}
+ if FInptDlg then
+  begin
+    x := ValueOfResponse(FLD_SCHEDULE, 1);
+    if Length(x) > 0 then UpdateStartExpires(x);
+  end;
+end;
+
+procedure TfrmODMeds.ShowMedSelect;
+begin
+  txtMed.SelStart := Length(txtMed.Text);
+  ChangeDelayed;  // synch the listboxes with display
+  pnlFields.Enabled := False;
+  pnlFields.Visible := False;
+  pnlMeds.Enabled   := True;
+  pnlMeds.Visible   := True;
+  pnlFields.Height := MemOrder.Top - 4 - pnlFields.Top;
+  if btnSelect.Caption = 'Change' then
+  begin
+    btnSelect.Caption := 'OK';
+    //btnSelect.Visible := false;
+    btnSelect.Enabled := false;
+  end;
+  btnSelect.Top     := memOrder.Top;
+  btnSelect.Anchors := [akRight, akBottom];
+  btnSelect.BringToFront;
+  cmdAccept.Visible := False;
+  cmdAccept.Default := False;
+  btnSelect.Default := True;
+  cmdAccept.Left := cmdQuit.Left;
+  cmdAccept.Top := MemOrder.Top;
+  btnSelect.TabOrder := cmdAccept.TabOrder;
+  cmdAccept.TabStop := False;
+  txtMed.Width      := grdDoses.Width;
+  txtMed.Font.Color := clWindowText;
+  txtMed.Color      := clWindow;
+  txtMed.ReadOnly   := False;
+  txtMed.SelectAll;
+  txtMed.SetFocus;
+  FDrugID := '';
+  //ShowOrderMessage( False );
+end;
+
+procedure TfrmODMeds.ShowMedFields;
+begin
+  pnlMeds.Enabled   := False;
+  pnlMeds.Visible   := False;
+  pnlFields.Enabled := True;
+  pnlFields.Visible := True;
+  pnlFields.Height := MemOrder.Top - 4 - pnlFields.Top;
+  btnSelect.Caption := 'Change';
+  btnSelect.Visible := True;
+  btnSelect.Enabled := True;
+  btnSelect.Top     := txtMed.Top;
+  btnSelect.Anchors := [akRight, akTop];
+  btnSelect.Default := False;
+  cmdAccept.Visible := True;
+  cmdAccept.Default := True;
+  cmdAccept.Left := cmdQuit.Left;
+  cmdAccept.Top := MemOrder.Top;
+  btnSelect.TabOrder := txtMed.TabOrder + 1;
+  cmdAccept.TabStop := True;
+  txtMed.Width      := memOrder.Width;
+  txtMed.Font.Color := clInfoText;
+  txtMed.Color      := clInfoBk;
+  txtMed.ReadOnly   := True;
+  if (Responses.InstanceCount('INSTR') > 1) or (Responses.InstanceCount('DAYS') > 0)
+    then ShowControlsComplex else ShowControlsSimple;
+end;
+
+procedure TfrmODMeds.ShowControlsSimple;
+//var
+  //dosagetxt: string;
+begin
+  //Commented out, no longer using CharsNeedMatch Property
+{  NumCharsForMatch := 0;
+  for i := 0 to cboDosage.Items.Count - 1 do         //find the shortest unit dose text on fifth piece
+  begin
+    dosagetxt := Piece(cboDosage.Items[i],'^',5);
+    if Length(dosagetxt) < 1 then break;
+    if NumCharsForMatch = 0 then
+      NumCharsForMatch := Length(dosagetxt);
+    if (NumCharsForMatch > Length(dosagetxt)) then
+      NumCharsForMatch := Length(dosagetxt);
+  end;
+  if NumCharsForMatch > 1 then
+    cboDosage.CharsNeedMatch := NumCharsForMatch - 1;
+  if NumCharsForMatch > 5 then
+    cboDosage.CharsNeedMatch := 5;}
+  tabDose.TabIndex := TI_DOSE;
+  grdDoses.Visible := False;
+  btnXInsert.Visible := False;
+  btnXRemove.Visible := False;
+  cboDosage.Visible := True;
+  lblRoute.Visible := True;
+  cboRoute.Visible := True;
+  lblSchedule.Visible := True;
+  cboSchedule.Visible := True;
+  if FInptDlg = True then lblAdminSch.Visible := True
+  else lblAdminSch.Visible := false;
+  chkPRN.Visible := True;
+  ActiveControl := cboDosage;
+end;
+
+procedure TfrmODMeds.ShowControlsComplex;
+
+  procedure MoveCombo(SrcCombo, DestCombo: TORComboBox; CompSch: boolean = false); //AGP Changes 26.12 PSI-04-63
+  var
+  cnt,i,index: integer;
+  node,text: string;
+  begin
+  if (CompSch = false) or not (FInptDlg)then
+    begin
+      DestCombo.Items.Clear;
+      FastAssign(SrcCombo.Items, DestCombo.Items);
+      DestCombo.ItemIndex := SrcCombo.ItemIndex;
+      DestCombo.Text := Piece(SrcCombo.Text, TAB, 1);
+    end;
+  if (CompSch = true) and (FInptDlg) then     // AGP Changes 26.12 PSI-04-63
+    begin
+    //AGP change 26.34 CQ 7201,6902 fix the problem with one time schedule still showing for inpatient complex orders
+    DestCombo.ItemIndex := -1;
+    Text := SrcCombo.Text;
+    index := SrcCombo.ItemIndex;
+    cnt := 0;
+    for i := 0 to SrcCombo.Items.Count - 1 do
+      begin
+        node := SrcCombo.Items.Strings[i];
+        if piece(node,U,3) <> 'O' then
+          begin
+            DestCombo.Items.Add(SrcCombo.Items.Strings[i]);
+            if Piece(node,U,1) = text then DestCombo.ItemIndex := index - cnt;
+          end
+        else cnt := cnt+1;
+      end;
+    if (index = -1) and (Text <> '') then
+       begin
+         for I := 0 to DestCombo.Items.Count - 1 do
+         if Piece(DestCombo.Items.Strings[i],U,1) = Text then
+            begin
+               DestCombo.ItemIndex := i;
+               DestCombo.Text := Text;
+               Exit;
+            end;
+       end;
+    end;
+  end;
+
+//var
+  //dosagetxt: string;
+begin
+  tabDose.TabIndex := TI_COMPLEX;
+  MoveCombo(cboDosage,   cboXDosage);
+  MoveCombo(cboRoute,    cboXRoute);
+  MoveCombo(cboSchedule, cboXSchedule, true);  //AGP Changes 26.12 PSI-04-063
+  grdDoses.Visible := True;
+  btnXInsert.Visible := True;
+  btnXRemove.Visible := True;
+  cboDosage.Visible := False;
+  lblRoute.Visible := False;
+  cboRoute.Visible := False;
+  lblSchedule.Visible := False;
+  cboSchedule.Visible := False;
+  chkPRN.Visible := False;
+  FDropColumn := -1;
+  pnlFieldsResize(Self);
+  ActiveControl := grdDoses;
+  //Commented out, no longer using CharsNeedMatch Property
+{  NumCharsForMatch := 0;
+  for i := 0 to cboXDosage.Items.Count - 1 do         //find the shortest unit dose text on fifth piece
+  begin
+    dosagetxt := Piece(cboXDosage.Items[i],'^',5);
+    if Length(dosagetxt) < 1 then break;
+    if NumCharsForMatch = 0 then
+      NumCharsForMatch := Length(dosagetxt);
+    if (NumCharsForMatch > Length(dosagetxt)) then
+      NumCharsForMatch := Length(dosagetxt);
+  end;
+  if NumCharsForMatch > 1 then
+    cboXDosage.CharsNeedMatch := NumCharsForMatch - 1;
+  if NumCharsForMatch > 5 then
+    cboDosage.CharsNeedMatch := 5;}
+end;
+
+procedure TfrmODMeds.SetDosage(const x: string);
+var
+  i, DoseIndex: Integer;
+begin
+  DoseIndex := -1;
+  with cboDosage do
+  begin
+    ItemIndex := -1;
+    for i := 0 to Pred(Items.Count) do
+      if Piece(Items[i], U, 5) = x then
+      begin
+        DoseIndex := i;
+        Break;
+      end;
+    if DoseIndex <0 then Text := x
+  (*  if ((DoseIndex < 0) and (not IsTransferAction)) then Text := x
+    else if ((DoseIndex < 0) and IsTransferAction) and (DosageTab = False) then Text := ''
+    else if ((DoseIndex < 0) and IsTransferAction) and (DosageTab = True) then Text := x *)
+    else ItemIndex := DoseIndex;
+  end;
+end;
+
+procedure TfrmODMeds.SetPickup(const x: string);
+begin
+  radPickClinic.Checked := FALSE;
+  radPickMail.Checked   := FALSE;
+  radPickWindow.Checked := FALSE;
+  case CharAt(x, 1) of
+  'C': radPickClinic.Checked := TRUE;
+  'M': radPickMail.Checked   := TRUE;
+  'W': radPickWindow.Checked := TRUE;
+  else {leave all unchecked}
+  end;
+end;
+
+procedure TfrmODMeds.SetSchedule(const x: string);
+var
+NonPRNPart,tempSch, tempText: string;
+begin
+    //AGP Change 27.72 if schedule matches why goes through and reprocess the same info?
+    if cboSchedule.ItemIndex > -1 then
+      begin
+        tempText := Piece(cboSchedule.Items.Strings[cboSchedule.itemindex], U, 1);
+        if tempText = x then exit;
+        if (Pos('PRN',x)>0) and (chkPRN.Checked = true) then
+          begin
+             NonPRNPart := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+             if nonPRNPart = tempText then exit;
+          end;
+      end;
+    cboSchedule.ItemIndex := -1;
+    if chkPRN.Checked = True then chkPRN.Checked := False;
+    cboSchedule.SelectByID(x);
+    if cboSchedule.ItemIndex > -1 then exit;
+   // if cboSchedule.ItemIndex < 0 then
+    //begin
+      //if NSSchedule then
+      //begin
+      //  cboSchedule.Text := '';
+      //end
+      if FInptDlg then
+        begin
+          if (Pos('@', x) > 0) then
+            begin
+            tempSch := Piece(x, '@', 2);
+            cboSchedule.SelectByID(tempSch);
+            if cboSchedule.ItemIndex > -1 then
+              begin
+                tempSch := Piece(x, '@', 1) + '@' + cboSchedule.Items.Strings[cboSchedule.itemindex];
+                cboSchedule.Items.Add(tempSch);
+                cboSchedule.Text := (Piece(tempSch,U,1));
+                cboSchedule.SelectByID(Piece(tempSch,u,1));
+                EXIT;
+              end;
+            if Pos('PRN', tempSch) > 0 then
+              begin
+                NonPRNPart := Trim(Copy(tempSch, 1, Pos('PRN', tempSch) - 1));
+                cboSchedule.SelectByID(NonPRNPart);
+                if cboSchedule.ItemIndex > -1 then
+                  begin
+                    tempSch := Piece(x, '@', 1) + '@' + cboSchedule.Items.Strings[cboSchedule.itemindex];
+                    cboSchedule.Items.Add(tempSch);
+                    cboSchedule.Text := (Piece(tempSch,U,1));
+                    cboSchedule.SelectByID(Piece(tempSch,u,1));
+                    chkPRN.Checked := True;
+                    EXIT;
+                  end
+                else
+                  begin
+                    NonPRNPart := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+                    chkPRN.Checked := true;
+                    tempSch := NonPRNPart + U + U + U + Piece(NonPRNPart, '@', 2);
+                    cboSchedule.Items.Add(tempSch);
+                    cboSchedule.SelectByID(Piece(tempSch, U, 1));
+                    EXIT;
+                  end;
+              end;
+              cboSchedule.Items.Add(X + U + U + U + Piece(x, '@', 2));
+              cboSchedule.Text := x;
+              cboSchedule.SelectByID(x);
+              EXIT;
+            end
+        else if Pos('PRN', x) > 0 then
+          begin
+            NonPRNPart := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+            chkPRN.Checked := True;
+            cboSchedule.SelectByID(NonPRNPart);
+            if cboSchedule.ItemIndex > -1 then  EXIT;
+          end;
+      end
+      else if Pos('PRN', x) > 0 then
+        begin
+         NonPRNPart := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+         chkPRN.Checked := True;
+         cboSchedule.SelectByID(NonPRNPart);
+         if cboSchedule.ItemIndex > -1 then  EXIT;
+         cboSchedule.Items.Add(NonPRNPart);
+         cboSchedule.Text := NonPRNPart;
+         cboSchedule.SelectByID(NonPRNPart);
+         EXIT;
+        end;
+      cboSchedule.Items.Add(x);
+      cboSchedule.Text := x;
+      cboSchedule.SelectByID(x);
+end;
+
+{ Medication edit --------------------------------------------------------------------------- }
+procedure TfrmODMeds.tabDoseChange(Sender: TObject);
+var
+  //text,x, tmpsch: string;
+  text, tmpAdmin, x: string;
+  reset: integer;
+begin
+  inherited;
+  reset := 0;
+  //AGP change for CQ 6521 added warning message
+  //AGP Change for CQ 7508 added tab information
+  //GE  Change warning message functionality show only   cq 7590
+  //    when tab changes from complex to simple.
+  //AGP Change for CQ 7834 and 7832 change text and added check to see if some values have been completed in row 1
+  if (tabDose.TabIndex = 0) and ((ValFor(COL_DOSAGE, 1)<>'') or (ValFor(COL_SCHEDULE, 1)<>'') or (ValFor(COL_DURATION, 1)<>'') or
+      (ValFor(COL_SEQUENCE, 1)<>''))  then
+      begin
+        text := 'By switching to the Dosage Tab, ' ;
+         if (InfoBox(text +'you will lose all data on this screen. Click OK to continue or Cancel','Warning',MB_OKCANCEL)=IDCANCEL) then
+            begin
+             if tabDose.TabIndex = 1 then tabDose.TabIndex := 0
+             else tabDose.TabIndex := 1;
+             reset := 1;
+            end;
+      end;
+  case tabDose.TabIndex of
+  TI_DOSE:    begin
+                cboXSchedule.Clear;                       // Added to Fix CQ: 9603
+                cboXDosage.Clear;
+                // clean up responses?
+                FSuppressMsg := FOrigiMsgDisp;
+                ShowControlsSimple;
+                if reset = 0 then ResetOnTabChange;
+                txtNss.Left := lblSchedule.Left + lblSchedule.Width + 2;
+                if (FInptDlg) then txtNss.Visible := True
+                else txtNss.Visible := False;
+                cboXRoute.Hide;                           // Added to Fix CQ: 7640
+                ControlChange(Self);
+              end;
+  TI_RATE:    begin
+                // for future use...
+              end;
+  TI_COMPLEX: begin
+                FSuppressMsg := FOrigiMsgDisp;
+                if reset = 1 then exit;
+               (*  AGP Change admin wrap 27.73
+                tmpAdmin := Piece(self.lblAdminSch.text, ':', 2);
+                tmpAdmin := Copy(tmpAdmin,2,Length(tmpAdmin)); *)
+                tmpAdmin := lblAdminSchGetText;
+                if FAdminTimeText <> '' then
+                  begin
+                    tmpAdmin := FAdminTimeText;
+                    if FAdminTimeText <> 'Not defined for Clinic Locations' then self.lblAdminSch.Visible := False;
+                  end;               
+                ShowControlsComplex;
+                ResetOnTabChange;
+                txtNss.Left := grdDoses.Left + grdDoses.ColWidths[0] + grdDoses.ColWidths[1] + grdDoses.ColWidths[2] + 3;
+                txtNss.Visible := False;
+                x := cboXDosage.Text + TAB;
+                if LeftStr(x,1) = '.' then x := '';
+                with cboXDosage   do if ItemIndex > -1 then x := x + Items[ItemIndex];
+                grdDoses.Cells[COL_DOSAGE,   1] := x;
+                x := cboXRoute.Text + TAB;
+                with cboXRoute    do if ItemIndex > -1 then x := x + Items[ItemIndex];
+                grdDoses.Cells[COL_ROUTE,    1] := x;
+                x := cboXSchedule.Text + TAB;
+                with cboXSchedule do if ItemIndex > -1 then x := x + Items[ItemIndex];
+                grdDoses.Cells[COL_SCHEDULE, 1] := x;
+                //AGP Change 27.1 handle PRN not showing in schedule panel if a dose is not selected.
+                if FSmplPRNChkd then
+                  begin
+                    pnlXSchedule.Tag := 1;
+                    self.chkXPRN.Checked := True;
+                  end;
+                if FInptDLG then UpdateStartExpires(ValFor(VAL_SCHEDULE,1));
+                ControlChange(Self);
+             end; {TI_COMPLEX}
+  end; {case}
+  if ScreenReaderSystemActive then
+    GetScreenReader.Speak(tabDose.Tabs[tabDose.TabIndex] + ' tab');
+end;
+
+
+function TfrmODMeds.lblAdminSchGetText: string;
+var
+tempstr: string;
+i: integer;
+begin
+  result := '';
+  if self.lblAdminSch.Text = '' then exit;
+  tempstr := '';
+  if self.lblAdminSch.Lines.Count > 1 then
+    begin
+      for i := 0 to self.lblAdminSch.Lines.Count - 1 do
+        tempstr := tempStr + self.lblAdminSch.Lines.Strings[i];
+    end
+  else if self.lblAdminSch.Lines.Count = 1 then
+       begin
+         tempstr := self.lblAdminSch.Text;
+       end;
+  Result := Piece(tempStr,':',2);
+  Result := Copy(Result,2,Length(Result));
+end;
+
+procedure TfrmODMeds.lblAdminSchSetText(str: string);
+var
+cutoff: integer;
+begin
+  cutoff := lblAdminSch.width div MainFontWidth;
+  if Length(str) > cutoff then self.lblAdminSch.Text := Copy(str, 1, cutoff) + CRLF +
+                                              Copy(str, cutoff + 1, Length(str))
+  else self.lblAdminSch.Text := str;
+end;
+
+procedure TfrmODMeds.lblGuidelineClick(Sender: TObject);
+var
+  TextStrings: TStringList;
+begin
+  inherited;
+  TextStrings := TStringList.Create;
+  try
+    TextStrings.Text := FGuideline.Text;
+    ReportBox(TextStrings, TC_GUIDELINE, TRUE);
+  finally
+    TextStrings.Free;
+  end;
+  //if FGuideline.Count > 0 then InfoBox(FGuideline.Text, 'Restrictions/Guidelines', MB_OK);
+end;
+
+{ cboDosage ------------------------------------- }
+
+procedure TfrmODMeds.CheckFormAltDose(DispDrug: Integer);
+var
+  OI: Integer;
+  OIName: string;
+begin
+  if FAltChecked or (DispDrug = 0) then Exit;
+  OI := txtMed.Tag;
+  OIName := txtMed.Text;
+  CheckFormularyDose(DispDrug, OI, OIName, FInptDlg);
+  if OI <> txtMed.Tag then
+  begin
+    ResetOnMedChange;
+    txtMed.Tag  := OI;
+    txtMed.Text := OIName;
+    SetOnMedSelect;
+  end;
+end;
+
+procedure TfrmODMeds.cboDosageClick(Sender: TObject);
+var
+  DispDrug: Integer;
+  x: string;
+begin
+  inherited;
+  if FSuppressMsg then
+  begin
+     if PnlMessage.Visible = true then
+     begin
+       memMessage.SendToBack;
+       PnlMessage.Visible := False;
+     end;
+  end;
+  UpdateRelated(False);
+  DispDrug := StrToIntDef(ValueOf(FLD_DRUG_ID), 0);
+  if DispDrug > 0 then
+  begin
+    if not FSuppressMsg then
+    begin
+        DispOrderMessage(DispenseMessage(DispDrug));
+    end;
+    x := QuantityMessage(DispDrug);
+  end
+  else x := '';
+  if Length(ValueOf(FLD_QTYDISP))>10 then
+  begin
+    lblQuantity.Caption := Copy(ValueOf(FLD_QTYDISP),0,7) + '...';
+    lblQuantity.Hint := ValueOf(FLD_QTYDISP);
+  end else
+  begin
+    lblQuantity.Caption := ValueOf(FLD_QTYDISP);
+    lblQuantity.Hint := '';
+  end;
+  if Length(x) > 0
+    then lblQtyMsg.Caption := TX_QTY_PRE + x + TX_QTY_POST
+    else lblQtyMsg.Caption := '';
+  with cboDosage do
+    if (ItemIndex > -1) and (Piece(Items[ItemIndex], U, 3) = 'NF')
+      then CheckFormAltDose(DispDrug);
+end;
+
+procedure TfrmODMeds.cboDosageChange(Sender: TObject);
+var
+temp1,temp2: string;
+Count: integer;
+begin
+  inherited;
+  Count := Pos(U,cboDosage.Text);
+  if Count > 0 then
+    begin
+      temp1 := copy(cboDosage.Text,0,count-1);
+      temp2 := copy(cboDosage.Text,count+1,Length(cboDosage.text));
+      infoBox('An ^ is not allowed in the dosage value', 'Dosage Warning', MB_OK);
+      cboDosage.Text := temp1 + temp2;
+    end;
+  UpdateRelated;
+end;
+
+procedure TfrmODMeds.cboDosageExit(Sender: TObject);
+var
+str: string;
+begin
+  inherited;
+  str := cboDosage.Text;
+  if (length(cboDosage.Text)<1) then
+      cboDosage.ItemIndex := -1;
+ (* Probably not needed here since this on validation check on accept
+  if (LeftStr(cboDosage.Text,1)='.') then
+       begin
+         infoBox('Dosage must have a leading numeric value','Invalid Dosage',MB_OK);
+         if self.tabDose.TabIndex = TI_DOSE then cboDosage.SetFocus;
+         Exit;
+       end; *)
+  if (length(cbodosage.Text)>0) and (cboDosage.ItemIndex > -1) and
+    (Piece(cboDosage.Items.Strings[cboDosage.ItemIndex],U,5) <> Piece(cboDosage.Text,tab,1)) then
+    begin
+      cboDosage.ItemIndex := -1;
+      cboDosage.Text := Piece(str, tab, 1);
+      UpdateRelated(false);
+    end;
+  if ActiveControl = memMessage then
+  begin
+    memMessage.SendToBack;
+    PnlMessage.Visible := False;
+    Exit;
+  end;
+  if ActiveControl = memComment then
+  begin
+   if PnlMessage.Visible = true then
+   begin
+     memMessage.SendToBack;
+     PnlMessage.Visible := False;
+   end;
+  end
+  else if (ActiveControl <> btnSelect) and (ActiveControl <> memComment) then
+  begin
+   if PnlMessage.Visible = true then
+   begin
+     memMessage.SendToBack;
+     PnlMessage.Visible := False;
+   end;
+   //cboDosageClick(Self);
+  end;
+end;
+
+{ cboRoute -------------------------------------- }
+
+procedure TfrmODMeds.cboRouteChange(Sender: TObject);
+begin
+  inherited;
+  with cboRoute do
+    if ItemIndex > -1 then
+    begin
+      if Piece(Items[ItemIndex], U, 5) = '1'
+        then tabDose.Tabs[0] := 'Dosage / Rate'
+        else tabDose.Tabs[0] := 'Dosage';
+    end;
+  cboDosage.Caption := tabDose.Tabs[0];
+  if Sender <> Self then ControlChange(Sender);
+end;
+
+procedure TfrmODMeds.cboRouteExit(Sender: TObject);
+begin
+  if Trim(cboRoute.Text) = '' then
+    cboRoute.ItemIndex := -1;
+//  ValidateRoute(cboRoute); Removed based on Site feeback. See CQ: 7518
+  inherited;
+end;
+
+{ cboSchedule ----------------------------------- }
+
+procedure TfrmODMeds.cboScheduleClick(Sender: TObject);
+var
+  othSch: string;
+  idx : integer;
+begin
+  inherited;
+  if (FInptDlg) and (cboSchedule.Text = 'OTHER') then
+  begin
+    othSch := CreateOtherScheduel;
+    if length(trim(othSch)) > 1 then
+    begin
+      othSch := othSch + U + U + NSSScheduleType + U + NSSAdminTime;
+      cboSchedule.Items.Add(othSch);
+      idx := cboSchedule.Items.IndexOf(Piece(OthSch, U, 1));
+      cboSchedule.ItemIndex := idx;
+    end;
+  end
+  else
+    begin
+      NSSAdminTime := '';
+      FNSSScheduleType := '';
+    end;
+  UpdateRelated(False);
+end;
+
+
+procedure TfrmODMeds.cboScheduleChange(Sender: TObject);
+var
+  othSch: string;
+  idx : integer;
+begin
+  inherited;
+  if  (FInptDlg) and (cboSchedule.Text = 'OTHER') then
+  begin
+    othSch := CreateOtherScheduel;
+    if length(trim(othSch)) > 1 then
+    begin
+      cboSchedule.Items.Add(othSch);
+      idx := cboSchedule.Items.IndexOf(OthSch);
+      cboSchedule.ItemIndex := idx;
+    end;
+  end;
+  FScheduleChanged := true;
+  UpdateRelated;
+end;
+
+
+{ Duration ----------------------------- }
+procedure TfrmODMeds.UpdateDurationControls( FreeText: boolean);
+begin
+  if FreeText then
+  begin
+    pnlXDurationButton.Width := 8;
+    pnlXDurationButton.Align := alRight;
+    spnXDuration.Visible := False;
+    txtXduration.Align := alClient;
+  end
+  else
+  begin
+    txtXduration.Align := alNone;
+    txtXduration.Width := pnlXDuration.Width - (pnlXDuration.Width div 2) - spnXDuration.Width + 2;
+    pnlXDurationButton.Width := pnlXDuration.Width div 2;
+    pnlXDurationButton.Align := alRight;
+    spnXDuration.Visible := True;
+    spnXDuration.AlignButton := udRight;
+  end;
+end;
+
+procedure TfrmODMeds.popDurationClick(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  with TMenuItem(Sender) do
+  begin
+    if Tag > 0 then
+    begin
+      x := LowerCase(Caption);
+      //Make sure duration is integer
+      txtXDuration.Text := IntToStr(StrToIntDef(txtXDuration.Text,0));
+      UpdateDurationControls(False);
+    end
+    else begin
+      x := '';
+      txtXDuration.Text := '';
+      UpdateDurationControls(True);
+    end;
+  end;
+  btnXDuration.Caption := x;
+  txtXDurationChange(Sender);
+  ControlChange(Sender);
+end;
+
+{ txtSupply, txtQuantity -------------------------- }
+
+procedure TfrmODMeds.txtSupplyChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  if not Showing then Exit;
+  if FNoZERO = False then FNoZERO := True;
+
+  // if value = 0, change probably caused by the spin button
+  if txtSupply.Text <> '0' then txtSupply.Tag := 1;
+  UpdateRelated;
+end;
+
+procedure TfrmODMeds.txtQuantityChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  if not Showing then
+    begin
+       if (FISQuickOrder = true) and (txtQuantity.Text = '0') and (FLastQuantity > 0) and (FLastQuantity <> StrtoInt64(txtQuantity.text)) then
+         begin
+           Changing := True;
+           txtQuantity.Text := FloattoStr(FLastQuantity);
+           Changing := False;
+         end;
+       Exit;
+    end;
+  if FNoZERO = False then FNoZERO := True;
+  // if value = 0, change probably caused by the spin button
+  if txtQuantity.Text <> '0' then txtQuantity.Tag := 1;
+  UpdateRelated;
+end;
+
+{ values changing }
+
+function TfrmODMeds.OutpatientSig: string;
+var
+  Dose, Route, Schedule, Duration, x: string;
+  i: Integer;
+begin
+  case tabDose.TabIndex of
+  TI_DOSE:
+    begin
+      if ValueOf(FLD_TOTALDOSE) = ''
+        then Dose := ValueOf(FLD_LOCALDOSE)
+        else Dose := ValueOf(FLD_UNITNOUN);
+      CheckDecimal(Dose);
+      Route := ValueOf(FLD_ROUTE_EX);
+      if (Length(Route) > 0) and (Length(FSigPrep) > 0) then Route := FSigPrep + ' ' + Route;
+      if Length(Route) = 0 then Route := ValueOf(FLD_ROUTE_NM);
+      Schedule := ValueOf(FLD_SCHED_EX);
+      (* Schedule := Piece(Temp,U,1);
+      if Piece(Temp,U,3) = '1' then Schedule := Schedule + ' AS NEEDED';
+      if UpperCase(Copy(Schedule, Length(Schedule) - 18, Length(Schedule))) = 'AS NEEDED AS NEEDED'
+      then Schedule := Copy(Schedule, 1, Length(Schedule) - 10); *)
+      if Length(Schedule) = 0 then
+        begin
+          Schedule := ValueOf(FLD_SCHEDULE);
+          if RightStr(Schedule,3) = 'PRN' then
+             begin
+               Schedule := Copy(Schedule,1,Length(Schedule)-3); //Remove the Trailing PRN
+               if (RightStr(Schedule,1) = ' ') or (RightStr(Schedule,1) = '-') then
+               Schedule := Copy(Schedule,1,Length(Schedule)-1);
+               Schedule := Schedule + ' AS NEEDED'
+             end;
+        end;
+      Result := FSIGVerb + ' ' + Dose + ' ' + Route + ' ' + Schedule;
+    end;
+  TI_COMPLEX:
+    begin
+      with grdDoses do for i := 1 to Pred(RowCount) do
+      begin
+        if Length(ValueOf(FLD_LOCALDOSE, i)) = 0 then Continue;
+        if FDrugID = '' then
+        begin
+         Dose := ValueOf(FLD_DOSETEXT, i);
+         CheckDecimal(Dose);
+        end
+        else
+        begin
+          if ValueOf(FLD_TOTALDOSE, i) = ''
+            then Dose := ValueOf(FLD_LOCALDOSE, i)
+            else Dose := ValueOf(FLD_UNITNOUN, i);
+          CheckDecimal(Dose);
+        end;
+        Route := ValueOf(FLD_ROUTE_EX, i);
+        if (Length(Route) > 0) and (Length(FSigPrep) > 0) then Route := FSigPrep + ' ' + Route;
+        if Length(Route) = 0 then Route := ValueOf(FLD_ROUTE_NM, i);
+        Schedule := ValueOf(FLD_SCHED_EX, i);
+        //if Length(Schedule) = 0 then Schedule := ValueOf(FLD_SCHEDULE, i);
+        if Length(Schedule) = 0 then
+        begin
+          Schedule := ValueOf(FLD_SCHEDULE);
+          if RightStr(Schedule,3) = 'PRN' then
+             begin
+               Schedule := Copy(Schedule,1,Length(Schedule)-3); //Remove the Trailing PRN
+               if (RightStr(Schedule,1) = ' ') or (RightStr(Schedule,1) = '-') then
+               Schedule := Copy(Schedule,1,Length(Schedule)-1);
+               Schedule := Schedule + ' AS NEEDED'
+             end;
+        end;
+        Duration := ValueOf(FLD_DURATION, i);
+        if Length(Duration) > 0 then Duration := 'FOR ' + Duration;
+        x := FSIGVerb + ' ' + Dose + ' ' + Route + ' ' + Schedule + ' ' + Duration;
+        if i > 1
+          then Result := Result + ' ' + ValueOf(FLD_SEQUENCE, i-1) + ' ' + x
+          else Result := x;
+      end; {with grdDoses}
+    end; {TI__COMPLEX}
+  end; {case}
+end;
+
+function TfrmODMeds.InpatientSig: string;
+var
+  Dose, Route, Schedule, Duration, x: string;
+  i: Integer;
+begin
+  case tabDose.TabIndex of
+  TI_DOSE:
+    begin
+      Dose  := ValueOf(FLD_LOCALDOSE);
+      CheckDecimal(Dose);
+      Route := ValueOf(FLD_ROUTE_AB);
+      if Route = '' then Route := ValueOf(FLD_ROUTE_NM);
+      Schedule := ValueOf(FLD_SCHEDULE);
+      Result := Dose + ' ' + Route + ' ' + Schedule;
+    end;
+  TI_COMPLEX:
+    begin
+      with grdDoses do for i := 1 to Pred(RowCount) do
+      begin
+        if Length(ValueOf(FLD_LOCALDOSE, i)) = 0 then Continue;
+        if FDrugID = ''
+          then Dose := ValueOf(FLD_DOSETEXT,  i)
+          else Dose := ValueOf(FLD_LOCALDOSE, i);
+        CheckDecimal(Dose);
+        Route := ValueOf(FLD_ROUTE_AB, i);
+        if Route = '' then Route := ValueOf(FLD_ROUTE_NM, i);
+        Schedule := ValueOf(FLD_SCHEDULE, i);
+        Duration := ValueOf(FLD_DURATION, i);
+        if Length(Duration) > 0 then Duration := 'FOR ' + Duration;
+        x := Dose + ' ' + Route + ' ' + Schedule + ' ' + Duration;
+        if i > 1
+          then Result := Result + ' ' + ValueOf(FLD_SEQUENCE, i-1) + ' ' + x
+          else Result := x;
+      end; {with grdDoses}
+    end; {TI__COMPLEX}
+  end; {case}
+end;
+
+
+function TfrmODMeds.ConstructedDoseFields(const ADose: string; PrependName: Boolean = FALSE): string;
+var
+  i, DrugIndex: Integer;
+  UnitsPerDose, Strength: Extended;
+  Units, Noun, AName: string;
+begin
+  DrugIndex := -1;
+  for i := 0 to Pred(FAllDrugs.Count) do
+    if AnsiSameText(Piece(FAllDrugs[i], U, 1), FDrugID) then
+    begin
+      DrugIndex := i;
+      Break;
+    end;
+  Strength := StrToFloatDef(Piece(FAllDrugs[DrugIndex], U, 2), 0);
+  Units    := Piece(FAllDrugs[DrugIndex], U, 3);
+  AName    := Piece(FAllDrugs[DrugIndex], U, 4);
+  if FAllDoses.Count > 0
+    then Noun := Piece(Piece(FAllDoses[0], U, 3), '&', 4)
+    else Noun := '';
+  if Strength > 0
+    then UnitsPerDose := ExtractFloat(ADose) / Strength
+    else UnitsPerDose := 0;
+  if (UnitsPerDose > 1) and (Noun <> '') and (CharAt(Noun, Length(Noun)) <> 'S')
+    then Noun := Noun + 'S';
+  Result := FloatToStr(ExtractFloat(ADose)) + '&' + Units + '&' + FloatToStr(UnitsPerDose)
+            + '&' + Noun + '&' + ADose + '&' + FDrugID + '&' + FloatToStr(Strength) + '&'
+            + Units;
+  if PrependName then Result := AName + U + FloatToStr(Strength) + Units + U + U +
+                                Result + U + ADose;
+  Result := UpperCase(Result);
+end;
+
+function TfrmODMeds.FieldsForDrug(const DrugID: string): string;
+var
+  i, DrugIndex: Integer;
+begin
+  Result := '';
+  DrugIndex := -1;
+  for i := 0 to Pred(FAllDrugs.Count) do
+  begin
+    if AnsiSameText(Piece(FAllDrugs[i], U, 1), DrugID) then DrugIndex := i;
+  end;
+  if DrugIndex > -1 then Result := FAllDrugs[DrugIndex];
+end;
+
+function TfrmODMeds.FieldsForDose(ARow: Integer): string;
+var
+  i: Integer;
+  DoseDrug: string;
+begin
+  Result := Piece(Piece(grdDoses.Cells[COL_DOSAGE, ARow], TAB, 2), U, 4);
+  //AGP CHANGE 26.33 change for Remedy ticket 87476 fix for quick orders for complex
+  //inpatient orders not displaying the correct unit dose in Pharmacy
+  //if (not FInptDlg) and (Length(FDrugID) > 0) then
+  if Length(FDrugID) > 0 then
+  begin
+    Result := '';
+    DoseDrug := Piece(Piece(grdDoses.Cells[COL_DOSAGE, ARow], TAB, 2), U, 5);
+    if DoseDrug = '' then DoseDrug := Piece(grdDoses.Cells[COL_DOSAGE, ARow], TAB, 1);
+    DoseDrug := DoseDrug + U + FDrugID;
+    for i := 0 to Pred(FAllDoses.Count) do
+    begin
+      if AnsiSameText(DoseDrug, Copy(FAllDoses[i], 1, Length(DoseDrug))) then
+      begin
+        Result := Piece(FAllDoses[i], U, 3);
+        Break;
+      end; {if AnsiSameText}
+    end; {for i}
+    if Result = '' then Result := ConstructedDoseFields(Piece(DoseDrug, U, 1));
+  end;
+end;
+
+function TfrmODMeds.FindDoseFields(const Drug, ADose: string): string;
+var
+  i: Integer;
+  x: string;
+begin
+  Result := '';
+  x := ADose + U + Drug + U;
+  for i := 0 to Pred(FAllDoses.Count) do
+  begin
+    if AnsiSameText(x, Copy(FAllDoses[i], 1, Length(x))) then
+    begin
+      Result := Piece(FAllDoses[i], U, 3);
+      Break;
+    end;
+  end;
+end;
+
+function TfrmODMeds.FindCommonDrug(DoseList: TStringList): string;
+// DoseList[n] = DoseText ^ Dispense Drug Pointer
+var
+  i, j, UnitIndex: Integer;
+  DrugStrength, DoseValue, UnitsPerDose: Extended;
+  DrugOK, PossibleDoses, SplitTab: Boolean;
+  ADrug, ADose, DoseFields, DoseUnits, DrugUnits: string;
+  FoundDrugs: TStringList;
+
+  procedure SaveDrug(const ADrug: string; UnitsPerDose: Extended);
+  var
+    i, DrugIndex: Integer;
+    CurUnits: Extended;
+  begin
+    DrugIndex := -1;
+    for i := 0 to Pred(FoundDrugs.Count) do
+      if AnsiSameText(Piece(FoundDrugs[i], U, 1), ADrug) then DrugIndex := i;
+    if DrugIndex = -1 then FoundDrugs.Add(ADrug + U + FloatToStr(UnitsPerDose)) else
+    begin
+      CurUnits := StrToFloatDef(Piece(FoundDrugs[DrugIndex], U, 2), 0);
+      if UnitsPerDose > CurUnits
+        then FoundDrugs[DrugIndex] := ADrug + U + FloatToStr(UnitsPerDose);
+    end;
+  end;
+
+  procedure KillDrug(const ADrug: string);
+  var
+    i, DrugIndex: Integer;
+  begin
+    DrugIndex := -1;
+    for i := 0 to Pred(FoundDrugs.Count) do
+      if AnsiSameText(Piece(FoundDrugs[i], U, 1), ADrug) then DrugIndex := i;
+    if DrugIndex > -1 then FoundDrugs.Delete(DrugIndex);
+  end;
+
+begin
+  Result := '';
+ if FInptDlg then                                // inpatient dialog
+  begin
+    DrugOK := True;
+    for i := 0 to Pred(DoseList.Count) do
+    begin
+      ADrug := Piece(DoseList[i], U, 2);
+      if ADrug = '' then DrugOK := False;
+      if Result = '' then Result := ADrug;
+      if not AnsiSameText(ADrug, Result) then DrugOK := False;
+      if not DrugOK then Break;
+    end;
+    if not DrugOK then Result :='';
+  end else                                        // outpatient dialog
+  begin
+    // check the dose combinations for each dispense drug
+    FoundDrugs := TStringList.Create;
+    try
+      if FAllDoses.Count > 0
+        then PossibleDoses := Length(Piece(Piece(FAllDoses[0], U, 3), '&', 1)) > 0
+        else PossibleDoses := False;
+      for i := 0 to Pred(FAllDrugs.Count) do
+      begin
+        ADrug := Piece(FAllDrugs[i], U, 1);
+        DrugOK := True;
+        DrugStrength := StrToFloatDef(Piece(FAllDrugs[i], U, 2), 0);
+        DrugUnits := Piece(FAllDrugs[i], U, 3);
+        SplitTab := Piece(FAllDrugs[i], U, 5) = '1';
+        for j := 0 to Pred(DoseList.Count) do
+        begin
+          ADose:= Piece(DoseList[j], U, 1);
+          DoseFields := FindDoseFields(ADrug, ADose);  // get the idnode for the dose/drug combination
+          if not PossibleDoses then
+          begin
+            if DoseFields = '' then DrugOK := False else SaveDrug(ADrug, 0);
+          end else
+          begin
+            DoseValue := StrToFloatDef(Piece(DoseFields, '&', 1), 0);
+            if DoseValue = 0 then DoseValue := ExtractFloat(ADose);
+            UnitsPerDose := DoseValue / DrugStrength;
+            if (Frac(UnitsPerDose) = 0) or (SplitTab and (Frac(UnitsPerDose) = 0.5))
+              then SaveDrug(ADrug, UnitsPerDose)
+              else DrugOK := False;
+            // make sure this dose is using the same units as the drug
+            if DoseFields = '' then
+            begin
+              for UnitIndex := 1 to Length(ADose) do
+                if not (ADose[UnitIndex] in ['0'..'9','.']) then Break;
+              DoseUnits := Copy(ADose, UnitIndex, Length(ADose));
+            end
+            else DoseUnits := Piece(DoseFields, '&', 2);
+            if (not AnsiSameText(DoseUnits, DrugUnits)) then DrugOK := False;
+          end;
+          if not DrugOK then
+          begin
+            KillDrug(ADrug);
+            Break;
+          end; {if not DrugOK}
+        end; {with..for j}
+      end; {for i}
+      if FoundDrugs.Count > 0 then
+      begin
+        if not PossibleDoses then Result := Piece(FoundDrugs[0], U, 1) else
+        begin
+          UnitsPerDose := 99999999;
+          for i := 0 to Pred(FoundDrugs.Count) do
+          begin
+            if StrToFloatDef(Piece(FoundDrugs[i], U, 2), 99999999) < UnitsPerDose then
+            begin
+              Result := Piece(FoundDrugs[i], U, 1);
+              UnitsPerDose := StrToFloatDef(Piece(FoundDrugs[i], U, 2), 99999999);
+            end; {if StrToFloatDef}
+          end; {for i..FoundDrugs}
+        end; {if not..else PossibleDoses}
+      end; {if FoundDrugs}
+    finally
+      FoundDrugs.Free;
+    end; {try}
+  end; {if..else FInptDlg}
+end; {FindCommonDrug}
+
+procedure TfrmODMeds.ControlChange(Sender: TObject);
+var
+  x,ADose,AUnit,ADosageText: string;
+  i, LastDose: Integer;
+  DoseList: TStringList;
+begin
+  inherited;
+  if csLoading in ComponentState then Exit;       // to prevent error caused by txtRefills
+  if Changing then Exit;
+  if txtMed.Tag = 0 then Exit;
+  ADose := '';
+  AUnit := '';
+  ADosageText := '';
+  FUpdated := FALSE;
+  Responses.Clear;
+  if self.MedName = '' then Responses.Update('ORDERABLE',  1, IntToStr(txtMed.Tag), txtMed.Text)
+  else Responses.Update('ORDERABLE',  1, IntToStr(txtMed.Tag), self.MedName);
+  DoseList := TStringList.Create;
+  case tabDose.TabIndex of
+  TI_DOSE:
+    begin
+      if (cboDosage.ItemIndex < 0) and (Length(cboDosage.Text) > 0) then
+      begin
+        // try to resolve freetext dose and add it as a new item to the combobox
+        ADosageText := cboDosage.Text;
+        ADose := Piece(ADosageText,' ',1);
+        Delete(ADosageText,1,Length(ADose)+1);
+        ADosageText := ADose + Trim(ADosageText);
+        DoseList.Add(ADosageText);
+        FDrugID := FindCommonDrug(DoseList);
+        if FDrugID <> '' then
+        begin
+          if ExtractFloat(cboDosage.Text) > 0 then
+          begin
+            x := ConstructedDoseFields(cboDosage.Text, TRUE);
+            FDrugID := '';
+            with cboDosage do ItemIndex := cboDosage.Items.Add(x);
+          end;
+        end;
+      end;
+      x := ValueOf(FLD_DOSETEXT);    Responses.Update('INSTR',    1, x,  x);
+      x := ValueOf(FLD_DRUG_ID);     Responses.Update('DRUG',     1, x, '');
+      x := ValueOf(FLD_DOSEFLDS);    Responses.Update('DOSE',     1, x, '');
+      x := ValueOf(FLD_STRENGTH);
+      // if outpt or inpt order with no total dose (i.e., topical)
+      if (not FInptDlg) or (ValueOf(FLD_TOTALDOSE) = '')
+                                then Responses.Update('STRENGTH', 1, x,  x);
+      // if no strength for dosage, use dispense drug name
+      if Length(x) = 0 then
+      begin
+        x := ValueOf(FLD_DRUG_NM);
+        if Length(x) > 0        then Responses.Update('NAME',     1, x,  x);
+      end;
+      x := ValueOf(FLD_ROUTE_AB);
+      if Length(x) = 0 then x := ValueOf(FLD_ROUTE_NM);
+      if Length(ValueOf(FLD_ROUTE_ID)) > 0
+                                then Responses.Update('ROUTE',    1, ValueOf(FLD_ROUTE_ID), x)
+                                else Responses.Update('ROUTE',    1, '', x);
+      x := ValueOf(FLD_SCHEDULE);    Responses.Update('SCHEDULE', 1, x,  x);
+      if FInptDlg then
+        begin
+        (* AGP Change Admin Time Wrap 27.73
+          x := Piece(self.lblAdminSch.text,':',2);
+          x := Copy(x,2,Length(x));  *)
+          x := lblAdminSchGetText;
+          if FAdminTimeText <> '' then x := '';
+          if x = 'Not Defined' then x := '';
+          Responses.Update('ADMIN',1,x,x);
+          X := Valueof(FLD_SCHED_TYP);
+          if self.chkPRN.Checked = true then x := 'P';
+          Responses.Update('SCHTYPE',1,x,x);
+        end;
+    end;
+  TI_COMPLEX:
+    begin
+      //if txtNss.Visible then txtNss.Visible := False;
+      with grdDoses do for i := 1 to Pred(RowCount) do
+      begin
+        x := Piece(Piece(grdDoses.Cells[COL_DOSAGE, i], TAB, 2), U, 5);
+        if x = '' then x := Piece(grdDoses.Cells[COL_DOSAGE, i], TAB, 1);
+        if x = '' then Continue;
+        x := x + U + Piece(Piece(grdDoses.Cells[COL_DOSAGE, i], U, 4), '&', 6);
+        DoseList.Add(x);
+      end;
+      FDrugID := FindCommonDrug(DoseList);
+      if FDrugID <> '' then                       // common drug found
+      begin
+        x := ValueOf(FLD_STRENGTH, 1);
+        if (not FInptDlg) or (ValueOf(FLD_TOTALDOSE, 1) = '')
+                                then    Responses.Update('STRENGTH', 1, x, x);
+        // if no strength, use dispense drug
+        if Length(x) = 0 then
+        begin
+          x := ValueOf(FLD_DRUG_NM, 1);
+          if Length(x) > 0      then    Responses.Update('NAME',     1, x, x);
+        end;
+        Responses.Update('DRUG', 1, FDrugID, '');
+      end; {if FDrugID}
+      LastDose := 0;
+      with grdDoses do for i := 1 to Pred(RowCount) do
+        if Length(ValueOf(FLD_DOSETEXT, i)) > 0 then LastDose := i;
+      with grdDoses do for i := 1 to Pred(RowCount) do
+      begin
+        if Length(ValueOf(FLD_DOSETEXT, i)) = 0 then Continue;
+        x := ValueOf(FLD_DOSETEXT, i);  Responses.Update('INSTR',    i, x, x);
+        x := ValueOf(FLD_DOSEFLDS, i);  Responses.Update('DOSE',     i, x, '');
+        x := ValueOf(FLD_ROUTE_AB, i);
+        if Length(x) = 0 then x := ValueOf(FLD_ROUTE_NM, i);
+        if Length(ValueOf(FLD_ROUTE_ID, i)) > 0
+                                   then Responses.Update('ROUTE',    i, ValueOf(FLD_ROUTE_ID, i), x)
+                                   else Responses.Update('ROUTE',    i, '', x);
+        x := ValueOf(FLD_SCHEDULE, i);  Responses.Update('SCHEDULE', i, x, x);
+        if FSmplPRNChkd then   // GE CQ7585  Carry PRN checked from simple to complex tab
+        begin
+           pnlXSchedule.Tag := 1;
+           chkXPRN.Checked := True;
+          //cboXScheduleClick(Self);// force onclick to fire when complex tab is entered
+           FSmplPRNChkd := False;
+        end;
+        x := ValueOf(FLD_DURATION, i);  Responses.Update('DAYS',     i, UpperCase(x), x);
+        if FInptDlg then
+          begin
+            x := ValFor(VAL_ADMINTIME,i);
+            if FAdminTimeText <> '' then x := '';
+            if x = 'Not Defined' then x := '';
+            Responses.Update('ADMIN',i,x,x);
+            x := Valueof(FLD_SCHED_TYP, i);
+            if ValFor(VAL_CHKXPRN, i) = '1' then x := 'P';
+            Responses.Update('SCHTYPE', i, x, x);
+          end;
+        x := ValueOf(FLD_SEQUENCE, i);
+        if      Uppercase(x) = 'THEN'   then x := 'T'
+        else if Uppercase(x) = 'AND'    then x := 'A'
+        else if Uppercase(x) = 'EXCEPT' then x := 'X'
+        else x := '';
+        if  i = LastDose then  x := '';            // no conjunction for last dose
+        Responses.Update('CONJ',     i, x, x);
+      end; {with grdDoses}
+    end; {TI_COMPLEX}
+  end; {case TabDose.TabIndex}
+  DoseList.Free;
+  Responses.Update('URGENCY',   1, ValueOf(FLD_PRIOR_ID), '');
+  Responses.Update('COMMENT',   1, TX_WPTYPE, ValueOf(FLD_COMMENT));
+  if FInptDlg then                       // inpatient orders
+  begin
+    Responses.Update('NOW',     1, ValueOf(FLD_NOW_ID), ValueOf(FLD_NOW_NM));
+    x := InpatientSig;
+    Responses.Update('SIG',     1, TX_WPTYPE, x);
+  end else                                        // outpatient orders
+  begin
+    x := ValueOf(FLD_SUPPLY);           Responses.Update('SUPPLY',  1, x,  x);
+    x := ValueOf(FLD_QUANTITY);         Responses.Update('QTY',     1, x,  x);
+    x := ValueOf(FLD_REFILLS);          Responses.Update('REFILLS', 1, x,  x);
+    x := ValueOf(FLD_SC);               Responses.Update('SC',      1, x, '');
+    x := ValueOf(FLD_PICKUP);           Responses.Update('PICKUP',  1, x, '');
+    x := ValueOf(FLD_PTINSTR);          Responses.Update('PI',      1, TX_WPTYPE, x);
+    x := '';
+    x := OutpatientSig;                 Responses.Update('SIG',     1, TX_WPTYPE, x);
+  end;
+  memOrder.Text := Responses.OrderText;
+end;
+
+{ complex dose ------------------------------------------------------------------------------ }
+
+{ General Functions - get & set cell values}
+
+function TfrmODMeds.ValFor(FieldID, ARow: Integer): string;
+{ Contents of grid cells  (Only the first tab piece for each cell is drawn)
+    Dosage    <TAB> DosageFields
+    RouteText <TAB> IEN^RouteName^Abbreviation
+    Schedule  <TAB> (nothing)
+    Duration  <TAB> Duration^Units }
+begin
+  Result := '';
+  if (ARow < 1) or (ARow >= grdDoses.RowCount) then Exit;
+  with grdDoses do
+    case FieldID of
+    COL_DOSAGE    : Result := Piece(Cells[COL_DOSAGE,   ARow], TAB, 1);
+    COL_ROUTE     : Result := Piece(Cells[COL_ROUTE,    ARow], TAB, 1);
+    COL_SCHEDULE  : Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+    COL_DURATION  : Result := Piece(Cells[COL_DURATION, ARow], TAB, 1);
+    COL_SEQUENCE  : Result := Piece(Cells[COL_SEQUENCE, ARow], TAB, 1);
+    VAL_DOSAGE    : Result := Piece(Cells[COL_DOSAGE,   ARow], TAB, 2);
+    VAL_ROUTE     : Result := Piece(Cells[COL_ROUTE,    ARow], TAB, 2);
+    VAL_SCHEDULE  : Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+    VAL_DURATION  : Result := Piece(Cells[COL_DURATION, ARow], TAB, 1);
+    VAL_ADMINTIME : Result := Piece(Cells[COL_ADMINTIME, ARow], TAB, 1);
+    VAL_SEQUENCE  : Result := Piece(Cells[COL_SEQUENCE, ARow], TAB, 1);
+    VAL_CHKXPRN   : Result := Cells[COL_CHKXPRN, ARow];
+    end;
+end;
+
+procedure FindInCombo(const x: string; AComboBox: TORComboBox);
+begin
+  AComboBox.SetTextAutoComplete(x);
+end;
+
+(*
+procedure TfrmODMeds.DurationToDays;
+var
+  i, DoseHours, TotalHours: Integer;
+  AllRows: Boolean;
+  Days: Extended;
+  x: string;
+begin
+  Exit;  // don't try to figure out days supply from duration for now
+  if txtSupply.Tag = 1 then Exit;
+  AllRows := True;
+  with grdDoses do for i := 1 to Pred(RowCount) do
+    if (Length(ValFor(COL_DOSAGE, i)) > 0) and (Length(ValFor(VAL_DURATION, i)) = 0)
+      then AllRows := False;
+  if not AllRows then Exit;
+  Changing := True;
+  TotalHours := 0;
+  with grdDoses do for i := 1 to Pred(RowCount) do
+    if Length(ValFor(COL_DOSAGE, i)) > 0 then
+    begin
+      x := ValFor(VAL_DURATION, i);
+      if Piece(x, U, 2) = 'D'
+        then DoseHours := ExtractInteger(x) * 24
+        else DoseHours := ExtractInteger(x);
+      TotalHours := TotalHours + DoseHours;
+    end;
+  Days := TotalHours / 24;
+  if Days > Int(Days) then Days := Days + 1;
+  txtSupply.Text := IntToStr(Trunc(Days));
+  //timDayQty.Tag := TIMER_FROM_DAYS;
+  //timDayQtyTimer(Self);
+  Changing := False;
+end;
+*)
+
+function TfrmODMeds.DurationToDays: Integer;
+var
+  i, DoseMinutes, AndMinutes, TotalMinutes: Integer;
+  AllRows: Boolean;
+  Days: Extended;
+  x: string;
+begin
+  Result := 0;
+  // make sure a duration exists for all rows with a dose
+  AllRows := True;
+  with grdDoses do for i := 1 to Pred(RowCount) do
+    if (Length(ValFor(COL_DOSAGE, i)) > 0) and (Length(ValFor(VAL_DURATION, i)) = 0)
+      then AllRows := False;
+  if not AllRows then Exit;
+
+  AndMinutes := 0;
+  TotalMinutes := 0;
+  with grdDoses do for i := 1 to Pred(RowCount) do
+    if Length(ValFor(COL_DOSAGE, i)) > 0 then
+    begin
+      x := ValFor(VAL_DURATION, i);
+      DoseMinutes := 0;
+      if Piece(x, ' ', 2) = 'MONTHS'  then DoseMinutes := ExtractInteger(x) * 43200;
+      if Piece(x, ' ', 2) = 'WEEKS'   then DoseMinutes := ExtractInteger(x) * 10080;
+      if Piece(x, ' ', 2) = 'DAYS'    then DoseMinutes := ExtractInteger(x) * 1440;
+      if Piece(x, ' ', 2) = 'HOURS'   then DoseMinutes := ExtractInteger(x) * 60;
+      if Piece(x, ' ', 2) = 'MINUTES' then DoseMinutes := ExtractInteger(x);
+      // Determine how TotalMinutes should be calculated based on conjunction
+      if ValFor(COL_SEQUENCE, i) <> 'AND' then  // 'THEN', 'EXCEPT', or ''
+      begin
+        if AndMinutes = 0 then TotalMinutes := TotalMinutes + DoseMinutes;
+        if AndMinutes > 0 then
+        begin
+          if AndMinutes < DoseMinutes then AndMinutes := DoseMinutes;
+          TotalMinutes := TotalMinutes + AndMinutes;
+          AndMinutes := 0;
+        end;
+        if ValFor(COL_SEQUENCE, i) = 'EXCEPT' then break;  //quit out of For Loop to stop counting TotalMinutes
+      end;
+      if (ValFor(COL_SEQUENCE, i) = 'AND') then
+        if AndMinutes < DoseMinutes then AndMinutes := DoseMinutes;
+    end;
+  if AndMinutes > 0 then TotalMinutes := TotalMinutes + AndMinutes;
+
+  Days := TotalMinutes / 1440;
+  if Days > Int(Days) then Days := Days + 1;
+  Result := Trunc(Days);
+end;
+
+procedure TfrmODMeds.pnlFieldsResize(Sender: TObject);
+const
+  REL_DOSAGE   = 0.38;
+  REL_ROUTE    = 0.17;
+  REL_SCHEDULE = 0.19;
+  REL_DURATION = 0.16;
+  REL_ANDTHEN  = 0.10;
+  REL_ADMINTIME = 0.16;
+var
+  i, ht, RowCountShowing: Integer;
+  ColControl: TWinControl;
+begin
+  inherited;
+  with grdDoses do
+  begin
+    i := grdDoses.Width - 12;                 // 12 = 4 pixel margin + 8 pixel column 0
+    i := i - GetSystemMetrics(SM_CXVSCROLL);  // compensate for appearance of scroll bar
+    if (not FinptDlg) or (FAdminTimeText = 'Not defined for Clinic Locations') then
+      begin
+        ColWidths[1] := Round(REL_DOSAGE   * i);  // dosage
+        ColWidths[2] := Round(REL_ROUTE    * i);  // route
+        ColWidths[3] := Round(REL_SCHEDULE * i);  // schedule
+        ColWidths[4] := Round(REL_DURATION * i);  // duration
+        ColWidths[5] := Round(0  * i);  // administration time
+        grdDoses.TabStops[5] := False;
+        ColWidths[6] := Round(REL_ANDTHEN  * i);  // and/then
+      end
+    else
+      begin
+        ColWidths[1] := Round(0.35    * i);  // dosage
+        ColWidths[2] := Round(0.10     * i);  // route
+        ColWidths[3] := Round(0.19  * i);  // schedule
+        ColWidths[4] := Round(0.12  * i);  // duration
+        ColWidths[5] := Round(0.16 * i);  // administration time
+        grdDoses.TabStops[5] := True;
+        ColWidths[6] := Round(0.08   * i);  // and/then
+      end;
+    // adjust height of grid to not show partial rows
+    ht := pnlBottom.Top - Top - 6;
+
+    ht := ht div (DefaultRowHeight+1);
+    ht := ht * (DefaultRowHeight+1);
+    Inc(ht, 3);
+    Height := ht;
+    // Move a column control if it is showing
+    ColControl := nil;
+    case grdDoses.Col of
+      COL_DOSAGE:ColControl := cboXDosage;
+      COL_ROUTE:ColControl := cboXRoute;
+      COL_SCHEDULE:ColControl := pnlXSchedule;
+      COL_DURATION:ColControl := pnlXDuration;
+      COL_ADMINTIME:ColControl := pnlXAdminTime;
+      COL_SEQUENCE:ColControl := cboXSequence;
+    end; {case}
+
+    if assigned(ColControl) and ColControl.Showing then
+      begin
+        RowCountShowing := (Height - 25) div (DefaultRowHeight+1);
+        if (grdDoses.Row <= RowCountShowing) then
+          ShowEditor(grdDoses.col, grdDoses.row, #0)
+        else
+          ColControl.Hide;
+      end;
+
+  end;
+end;
+
+procedure TfrmODMeds.grdDosesMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+var
+  ACol, ARow: Integer;
+begin
+  inherited;
+  grdDoses.MouseToCell(X, Y, ACol, ARow);
+  if (ARow < 0) or (ACol < 0) then Exit;
+  if ACol > COL_SELECT then ShowEditor(ACol, ARow, #0) else
+  begin
+    grdDoses.Col := COL_DOSAGE;
+    grdDoses.Row := ARow;
+  end;
+  if grdDoses.Col <> COL_DOSAGE then
+    DropLastSequence;
+end;
+
+procedure TfrmODMeds.grdDosesKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  if Key in [#32..#127] then ShowEditor(grdDoses.Col, grdDoses.Row, Key);
+  if grdDoses.Col <> COL_DOSAGE then
+    DropLastSequence;
+end;
+
+procedure TfrmODMeds.grdDosesMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  case FDropColumn of
+  COL_DOSAGE:   with cboXDosage   do if Items.Count > 0 then DroppedDown := True;
+  COL_ROUTE:    with cboXRoute    do if Items.Count > 0 then DroppedDown := True;
+  COL_SCHEDULE: with cboXSchedule do if Items.Count > 0 then DroppedDown := True;
+  COL_SEQUENCE: with cboXSequence do if Items.Count > 0 then DroppedDown := True;
+                                     
+  end;
+  FDropColumn := -1;
+end;
+
+procedure TfrmODMeds.grdDosesDrawCell(Sender: TObject; ACol, ARow: Integer;
+  Rect: TRect; State: TGridDrawState);
+begin
+  inherited;
+  grdDoses.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,
+    Piece(grdDoses.Cells[ACol, ARow], TAB, 1));
+end;
+
+procedure TfrmODMeds.grdDosesExit(Sender: TObject);
+begin
+  inherited;
+  UpdateRelated(FALSE);
+  RestoreDefaultButton;
+  RestoreCancelButton;
+end;
+
+procedure TfrmODMeds.ShowEditor(ACol, ARow: Integer; AChar: Char);
+var
+  x,tmpText: string;
+
+  procedure PlaceControl(AControl: TWinControl);
+  var
+    ARect: TRect;
+  begin
+    with AControl do
+    begin
+      ARect := grdDoses.CellRect(ACol, ARow);
+      SetBounds(ARect.Left + grdDoses.Left + 1,  ARect.Top  + grdDoses.Top + 1,
+                ARect.Right - ARect.Left + 1,    ARect.Bottom - ARect.Top + 1);
+      Tag := ARow;
+      BringToFront;
+      Show;
+      SetFocus;
+    end;
+  end;
+
+  procedure SynchCombo(ACombo: TORComboBox; const ItemText, EditText: string);
+  var
+    i: Integer;
+  begin
+    ACombo.ItemIndex := -1;
+    for i := 0 to Pred(ACombo.Items.Count) do
+      if ACombo.Items[i] = ItemText then ACombo.ItemIndex := i;
+    if ACombo.ItemIndex < 0 then ACombo.Text := EditText;
+  end;
+
+begin
+  inherited;
+  txtNSS.Visible := False;
+  //Make space just select editor.  This blows up as soon as some joker makes a
+  //dosage starting with a space.
+  if AChar = ' ' then
+    AChar := #0;
+  if ARow = 0 then Exit;  // header row
+  // require initial instruction entry when in last row
+  with grdDoses do if {(ARow = Pred(RowCount)) and} (ACol > COL_DOSAGE) and
+    (ValFor(COL_DOSAGE, ARow) = '') then Exit;
+  // require that initial instructions  for rows get entered from top to bottom
+  //(this does not include behaivor of row insertion button.)
+  if (ACol = COL_DOSAGE) and (ARow > 1) and (ValFor(COL_DOSAGE, ARow-1) = '') then
+    Exit;
+  // display appropriate editor for row & column
+  case ACol of
+  COL_DOSAGE:   begin
+                  // default route & schedule to previous row
+                  if (ARow > 1) then
+                  begin
+                    if (grdDoses.Cells[COL_ROUTE, ARow] = '') and
+                       (grdDoses.Cells[COL_SCHEDULE, ARow] = '') then
+                    begin
+                      grdDoses.Cells[COL_ROUTE,    ARow] := grdDoses.Cells[COL_ROUTE,    Pred(ARow)];
+                      { don't default schedule - recommended by Martin Lowe }
+                      //grdDoses.Cells[COL_SCHEDULE, ARow] := grdDoses.Cells[COL_SCHEDULE, Pred(ARow)];
+                    end;
+                //AGP Change 26.45 remove auto-populate of the sequence field
+                {*    if grdDoses.Cells[COL_SEQUENCE, Pred(ARow)] = '' then
+                    begin
+                      if StrToIntDef(Piece(grdDoses.Cells[COL_DURATION, Pred(ARow)], ' ', 1), 0) > 0
+                        then grdDoses.Cells[COL_SEQUENCE, Pred(ARow)] := 'THEN'
+                        else grdDoses.Cells[COL_SEQUENCE, Pred(ARow)] := 'AND';
+                    end;  *}
+                  end;
+                  // set appropriate value for cboDosage
+                  SynchCombo(cboXDosage, ValFor(VAL_DOSAGE, ARow), ValFor(COL_DOSAGE, ARow));
+                  PlaceControl(cboXDosage);
+                  FDropColumn := COL_DOSAGE;
+                  if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_DOSAGE);
+                end;
+  COL_ROUTE:    begin
+                  // set appropriate value for cboRoute
+                  SynchCombo(cboXRoute, ValFor(VAL_ROUTE, ARow), ValFor(COL_ROUTE, ARow));
+                  PlaceControl(cboXRoute);
+                  FDropColumn := COL_ROUTE;
+                  if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_ROUTE);
+                end;
+  COL_SCHEDULE: begin
+                  // set appropriate value for cboSchedule
+                  if FInptDlg then txtNSS.Visible := True;
+                  x := Piece(grdDoses.Cells[COL_SCHEDULE, ARow], TAB, 1);
+                  Changing := TRUE;
+                  if ValFor(VAL_CHKXPRN,Arow)='1' then chkXPRN.Checked := true
+                  else chkXPRN.Checked := False;
+                  if Pos('PRN',x)>0 then
+                    begin
+                      cboXSchedule.SelectByID(x);
+                      if cboXSchedule.ItemIndex <0 then
+                        begin
+                          x := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+                          chkXPRN.Checked := true;
+                        end;
+                    end;
+                  if Length(x) > 0 then
+                  begin
+                    cboXSchedule.SelectByID(x);
+                    cboXSchedule.Text := x;
+                  end
+                  else cboXSchedule.ItemIndex := -1;
+                (*  if Pos('PRN', x) > 0 then
+                  begin
+                    NonPRNPart := Trim(Copy(x, 1, Pos('PRN', x) - 1));
+                    cboXSchedule.SelectByID(NonPRNPart);
+                    if cboXSchedule.ItemIndex > -1 then chkXPRN.Checked := True else
+                    begin
+                      chkXPRN.Checked := False;
+                      cboXSchedule.SelectByID(x);
+                      if cboXSchedule.ItemIndex < 0 then cboXSchedule.Text := x;
+                    end;
+                  end; *)
+                  Changing := FALSE;
+                  cboXSequence.Tag := ARow;
+                  PlaceControl(pnlXSchedule);
+                  FDropColumn := COL_SCHEDULE;
+                  if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_SCHEDULE);
+                end;
+  COL_DURATION: begin
+                  // set appropriate value for pnlDuration
+                  x := ValFor(VAL_DURATION, ARow);
+                  Changing := TRUE;
+                  txtXDuration.Text    := Piece(x, ' ', 1);
+                  x := Piece(x, ' ', 2);
+                  if Length(x) > 0 then btnXDuration.Caption := LowerCase(x)
+                  else begin
+                    txtXDuration.Text := '0';
+                    btnXDuration.Caption := 'days';
+                  end;
+                  tmpText := txtXDuration.Text;  //Fix for CQ: 8107 - Kloogy but works.
+                  UpdateDurationControls(False);
+                  Changing := FALSE;
+                  pnlXDuration.Tag := ARow;
+                  PlaceControl(pnlXDuration);
+                  txtXDuration.SetFocus;
+                  ARow1 := ARow;
+                  txtXDuration.Text := tmpText;  //Fix for CQ: 8107 - Kloogy but works.
+                  if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_DURATION);
+                end;
+  COL_SEQUENCE: begin
+                  SynchCombo(cboXSequence, ValFor(VAL_SEQUENCE, ARow), ValFor(COL_SEQUENCE, ARow));
+                  cboXSequence.Tag := ARow;
+                  ARow1 := ARow;
+                  PlaceControl(cboXSequence);
+                  FDropColumn := COL_SEQUENCE;
+                  if AChar <> #0 then PostMessage(Handle, UM_DELAYEVENT, Ord(AChar), COL_SEQUENCE);
+                end;
+  COL_ADMINTIME: BEGIN
+                 pnlXAdminTime.OnClick(pnlXAdminTime);
+                 end;
+  end; {case ACol}
+end;
+
+procedure TfrmODMeds.UMDelayEvent(var Message: TMessage);
+{ after focusing events are completed for a combobox, set the key the user typed }
+begin
+  case Message.LParam of
+  COL_DOSAGE   : FindInCombo(Chr(Message.WParam), cboXDosage);
+  COL_ROUTE    : FindInCombo(Chr(Message.WParam), cboXRoute);
+  COL_SCHEDULE : FindInCombo(Chr(Message.WParam), cboXSchedule);
+  COL_DURATION : begin
+                   txtXDuration.Text := Chr(Message.WParam);
+                   txtXDuration.SelStart := 1;
+                 end;
+  COL_SEQUENCE : FindInCombo(Chr(Message.WParam), cboXSequence);
+  end;
+end;
+
+procedure TfrmODMeds.cboXDosageEnter(Sender: TObject);
+begin
+  inherited;
+  // if this was the last row, create a new last row
+  if grdDoses.Row = Pred(grdDoses.RowCount) then grdDoses.RowCount := grdDoses.RowCount + 1;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMeds.cboXDosageChange(Sender: TObject);
+var
+temp1,temp2: string;
+count: integer;
+begin
+  inherited;
+  if not Changing and (cboXDosage.ItemIndex < 0) then
+  begin
+    Count := Pos(U,cboXDosage.Text);
+    if Count > 0 then
+      begin
+        temp1 := copy(cboXDosage.Text,0,count-1);
+        temp2 := copy(cboXDosage.Text,count+1,Length(cboXDosage.text));
+        infoBox('An ^ is not allowed in the dosage value', 'Dosage Warning', MB_OK);
+        cboXDosage.Text := temp1 + temp2;
+      end;
+    grdDoses.Cells[COL_DOSAGE, cboXDosage.Tag] := cboXDosage.Text;
+    UpdateRelated;
+  end;
+end;
+
+procedure TfrmODMeds.cboXDosageClick(Sender: TObject);
+var
+  DispDrug: Integer;
+  x: string;
+begin
+  inherited;
+  if FSuppressMsg then
+  begin
+     if PnlMessage.Visible = true then
+     begin
+       memMessage.SendToBack;
+       PnlMessage.Visible := False;
+     end;
+  end;
+
+  with cboXDosage do if ItemIndex > -1 then x := Text + TAB + Items[ItemIndex] else x := Text;
+  grdDoses.Cells[COL_DOSAGE, cboXDosage.Tag] := x;
+  UpdateRelated(FALSE);
+  DispDrug := StrToIntDef(ValueOf(FLD_DRUG_ID, cboXDosage.Tag), 0);
+  if DispDrug > 0 then
+  begin
+    if not FSuppressMsg then
+    begin
+      DispOrderMessage(DispenseMessage(DispDrug));
+      FSuppressMsg  := False;
+    end;
+    x := QuantityMessage(DispDrug);
+  end
+  else x := '';
+  if Length(x) > 0
+    then lblQtyMsg.Caption := TX_QTY_PRE + x + TX_QTY_POST
+    else lblQtyMsg.Caption := '';
+end;
+
+procedure TfrmODMeds.cboXDosageExit(Sender: TObject);
+var
+//tempTag: integer;
+str: string;
+begin
+  inherited;
+  if cboXDosage.Showing then
+  begin
+    cboXDosageClick(Self);
+    str := cboXDosage.Text;
+    //tempTag := cboXDosage.Tag;
+    //cboXDosage.Tag := -1;
+    cboXDosage.Hide;
+    UpdateRelated;
+    RestoreDefaultButton;
+    RestoreCancelButton;
+   (*Probably not needed here since on validation check on accept
+    if (LeftStr(cboXDosage.Text,1)='.') and (self.tabDose.TabIndex = TI_COMPLEX) then
+         begin
+           infoBox('Dosage must have a leading numeric value','Invalid Dosage',MB_OK);
+           //cboXDosage.Tag := tempTag;
+           cboXDosage.Show;
+           cboXDosage.SetFocus;
+           Exit;
+         end;  *)
+    if (length(cboxdosage.Text)>0) and (cboxDosage.ItemIndex > -1) and
+      (Piece(cboxDosage.Items.Strings[cboxDosage.ItemIndex],U,5) <> Piece(cboxDosage.Text,'#',1)) then
+      begin
+        cboXDosage.ItemIndex := -1;
+        cboXDosage.Text := Piece(str, '#', 1);
+        self.grdDoses.Cells[COL_DOSAGE,self.grdDoses.row] := cboXDosage.Text;
+        UpdateRelated(false);
+      end;
+    if (pnlMessage.Visible) and (memMessage.TabStop)  then
+    begin
+      pnlMessage.Parent := grdDoses.Parent;
+      pnlMessage.TabOrder := grdDoses.TabOrder;
+      ActiveControl := memMessage;
+    end
+    else if grdDoses.Showing then
+      ActiveControl := grdDoses
+    else
+      ActiveControl := cboDosage;
+    end
+    else
+       cmdQuit.Click;
+  end;
+
+procedure TfrmODMeds.cboXRouteChange(Sender: TObject);
+begin
+  inherited;
+  //Commented out to fix CQ: 7280
+//  if cboXRoute.Text = '' then cboXRoute.ItemIndex := -1;
+   if not Changing and (cboXRoute.ItemIndex < 0) then
+   begin
+     grdDoses.Cells[COL_ROUTE, cboXRoute.Tag] := cboXRoute.Text;
+     ControlChange(Self);
+   end;
+end;
+
+procedure TfrmODMeds.cboXRouteClick(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  with cboXRoute do if ItemIndex > -1 then x := Text + TAB + Items[ItemIndex] else x := Text;
+  grdDoses.Cells[COL_ROUTE, cboXRoute.Tag] := x;
+  ControlChange(Self);
+end;
+
+procedure TfrmODMeds.cboXRouteExit(Sender: TObject);
+begin
+  inherited;
+  //Removed based on Site feeback. See CQ: 7518
+{  if Not ValidateRoute(cboXRoute) then
+    Exit; }
+  if Trim(cboXRoute.Text) = '' then
+  begin
+    cboXRoute.ItemIndex := -1;
+    Exit;
+  end;  
+  cboXRouteClick(Self);
+  cboXRoute.Tag := -1;
+  cboXRoute.Hide;
+  RestoreDefaultButton;
+  RestoreCancelButton;
+  if (pnlMessage.Visible) and (memMessage.TabStop) then
+  begin
+    pnlMessage.Parent := grdDoses.Parent;
+    pnlMessage.TabOrder := grdDoses.TabOrder;
+    ActiveControl := memMessage;
+  end
+  else if grdDoses.Showing then
+    ActiveControl := grdDoses
+  else
+    ActiveControl := cboDosage;
+end;
+
+procedure TfrmODMeds.pnlXScheduleEnter(Sender: TObject);
+begin
+  inherited;
+  cboXSchedule.SetFocus;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMeds.cboXScheduleChange(Sender: TObject);
+var
+  othSch, x: string;
+  idx : integer;
+begin
+  inherited;
+  //Commented out to fix CQ: 7280
+//  if cboXSchedule.Text = '' then cboXSchedule.ItemIndex := -1;
+  if not Changing {and (cboXSchedule.ItemIndex < 0)} then
+  begin
+    if (FInptDlg) and (cboXSchedule.Text = 'OTHER') then
+    begin
+      cboXSchedule.SelectByID('OTHER');
+      othSch := CreateOtherScheduelComplex;
+      if length(trim(othSch)) > 1 then
+      begin
+        othSch := othSch + U + U + NSSScheduleType + U + NSSAdminTime;
+        cboXSchedule.Items.Add(othSch);
+        idx := cboXSchedule.Items.IndexOf(Piece(OthSch, U, 1));
+        cboXSchedule.ItemIndex := idx;
+      end;
+    end;
+  if pnlXSchedule.Tag = -1 then pnlXSchedule.Tag := self.grdDoses.Row;
+    //if pnlXSchedule.Tag = -1 then pnlXSchedule.Tag := self.grdDoses.Row;
+    with cboXSchedule do if ItemIndex > -1
+      then x := Text + TAB + Items[ItemIndex]
+      else x := Text;
+    grdDoses.Cells[COL_SCHEDULE, pnlXSchedule.Tag] := x;
+    self.cboSchedule.Text := x;
+     //AGP Start Expired uncommented out the line
+    if FInptDlg then UpdateStartExpires(Piece(x, tab, 1));
+    UpdateRelated;
+  end;
+end;
+
+procedure TfrmODMeds.cboXScheduleClick(Sender: TObject);
+var
+  PRN,x: string;
+begin
+  inherited;
+  //agp change CQ 11015
+  if (chkXPRN.Checked) then PRN := ' PRN' else PRN := '';
+  with cboXSchedule do
+    begin
+      if RightStr(Text,3) = 'PRN' then PRN := '';
+      if ItemIndex > -1 then x := Text + PRN + TAB + Items[ItemIndex]
+      else x := Text + PRN;
+    end;
+ (* with cboXSchedule do if ItemIndex > -1
+    then x := Text + TAB + Items[ItemIndex]
+    else x := Text;  *)
+  grdDoses.Cells[COL_SCHEDULE, pnlXSchedule.Tag] := x;
+  //AGP Start Expired uncommented out the line
+  UpdateStartExpires(Piece(x, tab, 1));
+  UpdateRelated;
+end;
+
+procedure TfrmODMeds.chkXPRNClick(Sender: TObject);
+var
+check: string;
+begin
+  inherited;
+  if self.chkXPRN.Checked = True then check := '1'
+  else check := '0';
+  self.grdDoses.Cells[COL_CHKXPRN, self.grdDoses.Row] := check;
+  if not Changing then cboXScheduleClick(Self);
+end;
+
+procedure TfrmODMeds.pnlXScheduleExit(Sender: TObject);
+begin
+  inherited;
+  if Not FShowPnlXScheduleOk then   //Added for CQ: 7370
+    Exit;
+  cboXScheduleClick(Self);
+  pnlXSchedule.Tag := -1;
+  pnlXSchedule.Hide;
+  UpdateRelated;
+  RestoreDefaultButton;
+  RestoreCancelButton;
+  if (pnlMessage.Visible) and (memMessage.TabStop) then
+  begin
+    pnlMessage.Parent := grdDoses.Parent;
+    pnlMessage.TabOrder := grdDoses.TabOrder;
+    ActiveControl := memMessage;
+  end
+  else if grdDoses.Showing then
+    ActiveControl := grdDoses
+  else
+    ActiveControl := cboDosage;
+  //AGP Start Expired commented out the line
+  //updateStartExpires(valFor(COL_SCHEDULE,self.grdDoses.Row));
+end;
+
+procedure TfrmODMeds.pnlXAdminTimeClick(Sender: TObject);
+var
+Str: string;
+begin
+  inherited;
+  if not FInptDlg then Exit;
+  
+  str := 'The Administration Times for this dose are: ' + CRLF + CRLF + VALFOR(VAL_ADMINTIME,grddoses.Row);
+  str := str + CRLF + CRLF + AdminTimeHelpText;
+  infoBox(str,'Administration Time Information',MB_OK);
+end;
+
+procedure TfrmODMeds.pnlXDurationEnter(Sender: TObject);
+begin
+  inherited;
+  txtXDuration.SetFocus;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMeds.txtXDurationChange(Sender: TObject);
+var
+  I, Code: Integer;
+  OrgValue: string;
+begin
+  inherited;
+  if Changing then Exit;
+  if (txtXDuration.Text <> '0') and (txtXDuration.Text <> '') then
+  begin
+    Val(txtXDuration.Text, I, Code);
+    UpdateDurationControls(Code <> 0);
+    //Commented out the "and" to resolve CQ: 7557
+    if (Code <> 0) {and (I=0)} then
+    begin
+      ShowMsg('Please use numeric characters only.');
+      with txtXDuration do
+      begin
+        Text := IntToStr(I);
+        SelStart := Length(Text);
+      end;
+      Exit;
+      btnXDuration.Width := 8;
+      btnXDuration.Align := alRight;
+      spnXDuration.Visible := False;
+      txtXduration.Align := alClient;
+      PopDuration.Items.Tag := 0;
+      btnXDuration.Caption := '';
+    end;
+   {AGP change 26.19 for PSI-05-018 cq #7322
+    else if PopDuration.Items.Tag = 0 then
+    begin
+      PopDuration.Items.Tag := 3;  //Days selection
+      btnXDuration.Caption := 'days';
+    end; }
+    grdDoses.Cells[COL_DURATION, pnlXDuration.Tag] := txtXDuration.Text + ' ' + Uppercase(btnXDuration.Caption);
+  end else   //AGP CHANGE ORDER
+       begin
+         if not(FInptDlg) then grdDoses.Cells[COL_DURATION, pnlXDuration.Tag] := '';
+         OrgValue := ValFor(COL_DURATION, pnlxDuration.tag);
+         //if ((txtXDuration.Text = '0') or (txtXDuration.Text = '')) and ((ValFor(COL_SEQUENCE, ARow1) = 'THEN') and (FInptDlg)) then //AGP CHANGE ORDER
+         //AGP change 26.33 Then/And conjunction requiring a duration to include outpatient orders also
+         if ((txtXDuration.Text = '0') or (txtXDuration.Text = '')) and (ValFor(COL_SEQUENCE, ARow1) = 'THEN') then //AGP CHANGE ORDER
+             begin
+               if (InfoBox('A duration is required when using "Then" as a sequence.'+CRLF+'"Then" will be remove from the sequence field if you continue'+
+                    CRLF+'Click "OK" to continue or click "Cancel"','Duration Warning', MB_OKCANCEL)=1) then
+                    begin
+                        grdDoses.Cells[COL_DURATION, pnlXDuration.Tag] := '';
+                        cboXSequence.Tag := ARow1;
+                        grdDoses.Cells[COL_SEQUENCE, cboXSequence.Tag] := '';
+                        cboXSequence.Text := '';
+                        cboXSequence.ItemIndex := -1;
+                    end
+                    else
+                    grdDoses.Cells[COL_DURATION, pnlXDuration.Tag] := OrgValue;
+               end
+             else grdDoses.Cells[COL_DURATION, pnlXDuration.Tag] := txtXDuration.Text;
+       end;
+   // end;
+  ControlChange(Self);
+  UpdateRelated;
+end;
+
+procedure TfrmODMeds.pnlXDurationExit(Sender: TObject);
+begin
+  inherited;
+  pnlXDuration.Tag := -1;
+  pnlXDuration.Hide;
+  UpdateRelated;
+  RestoreDefaultButton;
+  RestoreCancelButton;
+  if (pnlMessage.Visible) and (memMessage.TabStop) then
+  begin
+    pnlMessage.Parent := grdDoses.Parent;
+    pnlMessage.TabOrder := grdDoses.TabOrder;
+    ActiveControl := memMessage;
+  end
+  else if grdDoses.Showing then
+    ActiveControl := grdDoses
+  else
+    ActiveControl := cboDosage;
+end;
+
+
+procedure TfrmODMeds.btnXInsertClick(Sender: TObject);
+var
+  i: Integer;
+  x1, x2: string;
+begin
+  inherited;
+  grdDoses.SetFocus;                            // make sure exit events for editors fire
+  with grdDoses do
+  begin
+    if Row < 1 then Exit;
+    x1 := grdDoses.Cells[COL_ROUTE,    Row];
+    x2 := grdDoses.Cells[COL_SCHEDULE, Row];
+    RowCount := RowCount + 1;
+    { move rows down }
+    for i := Pred(RowCount) downto Succ(Row) do Rows[i] := Rows[i-1];
+    Rows[Row].Clear;
+    Cells[COL_ROUTE,    Row] := x1;
+    Cells[COL_SCHEDULE, Row] := x2;
+    Col := COL_DOSAGE;
+    ShowEditor(COL_DOSAGE, Row, #0);
+  end;
+  DropLastSequence;
+end;
+
+procedure TfrmODMeds.btnXRemoveClick(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  grdDoses.SetFocus;                            // make sure exit events for editors fire
+  with grdDoses do if (Row > 0) and (RowCount > 2) then
+  begin
+    { move rows up }
+    for i := Row to RowCount - 2 do Rows[i] := Rows[i+1];
+    RowCount := RowCount - 1;
+    Rows[RowCount].Clear;
+  end;
+  DropLastSequence;
+  ControlChange(Self);
+end;
+
+function TfrmODMeds.ValueOf(FieldID: Integer; ARow: Integer = -1): string;
+var
+  x: string;
+{ Contents of cboDosage
+    DrugName^Strength^NF^TDose&Units&U/D&Noun&LDose&Drug^DoseText^CostText^MaxRefills
+  Contents of grid cells  (Only the first tab piece for each cell is drawn)
+    Dosage    <TAB> DosageFields
+    RouteText <TAB> IEN^RouteName^Abbreviation
+    Schedule  <TAB> (nothing)
+    Duration  <TAB> Duration^Units }
+
+  // the following functions were created to get rid of a compile warning saying the
+  // return value may be undefined - too much branching logic in the case statements
+  // for the compiler to handle
+  
+  function GetSingleDoseSchedule: string;
+  begin
+    Result := UpperCase(Trim(cboSchedule.Text));
+    if chkPRN.Checked then Result := Result + ' PRN';
+    if UpperCase(Copy(Result, Length(Result) - 6, Length(Result))) = 'PRN PRN'
+      then Result := Copy(Result, 1, Length(Result) - 4);
+  end;
+
+  function GetSingleDoseScheduleEX: string;
+  begin
+    Result := '';
+    with cboSchedule do
+    begin
+      if ItemIndex > -1 then Result := Piece(Items[ItemIndex], U, 2);
+(*     if (Length(Result)=0) and (ItemIndex > -1) then
+        begin
+          Result := Piece(Items[ItemIndex], U, 1);
+          if Piece(Items[ItemIndex], U, 3) = 'P' then
+          begin
+            if RightStr(Result,3) = 'PRN' then
+              begin
+                Result := Copy(Result,1,Length(Result)-3); //Remove the Trailing PRN
+                if (RightStr(Result,1) = ' ') or (RightStr(Result,1) = '-') then
+                Result := Copy(Result,1,Length(Result)-1);
+              end;
+           Result := Result + ' AS NEEDED';
+          end;
+        end;
+    end; *)
+      if RightStr(Result,3) = 'PRN' then
+      begin
+        Result := Copy(Result,1,Length(Result)-3); //Remove the Trailing PRN
+        if (RightStr(Result,1) = ' ') or (RightStr(Result,1) = '-') then
+          Result := Copy(Result,1,Length(Result)-1);
+        Result := Result + ' AS NEEDED'
+      end;
+      if (Length(Result) > 0) and chkPRN.Checked then
+        Result := Result + ' AS NEEDED';
+      if UpperCase(Copy(Result, Length(Result) - 18, Length(Result))) = 'AS NEEDED AS NEEDED' then
+        Result := Copy(Result, 1, Length(Result) - 10);
+      if UpperCase(Copy(Result, Length(Result) - 12, Length(Result))) = 'PRN AS NEEDED' then
+      begin
+        Result := Copy(Result, 1, Length(Result) - 13);
+        if RightStr(Result,1)=' ' then
+          Result := Result + 'AS NEEDED'
+        else
+          Result := Result + ' AS NEEDED';
+      end;
+    end;
+  end;
+
+  function GetComplexDoseSchedule: string;
+  begin
+    with grdDoses do
+    begin
+      Result := Piece(Piece(Cells[COL_SCHEDULE, ARow], TAB, 2), U, 1);
+      if Result = '' then Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+      if valFor(VAL_CHKXPRN,ARow)='1' then Result := Result + ' PRN';
+      if UpperCase(Copy(Result, Length(Result) - 6, Length(Result))) = 'PRN PRN' then
+      Result := Copy(Result, 1, Length(Result) - 4);
+    end;
+  end;
+
+  function GetComplexDoseScheduleEX: string;
+  begin
+    with grdDoses do
+    begin
+      (*Result := Piece(Piece(Cells[COL_SCHEDULE, ARow], TAB, 2), U, 2);
+      if Result = '' then //Added for CQ: 7639
+      begin
+        Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+        if RightStr(Result,4) = ' PRN' then
+          Result := Copy(Result,1,Length(Result)-4); //Remove the Trailing PRN
+      end;
+      if (Piece(Cells[COL_SCHEDULE, ARow], TAB, 1) <>
+         Piece(Piece(Cells[COL_SCHEDULE, ARow], TAB, 2), U, 1)) and
+         (Pos('PRN', Piece(Cells[COL_SCHEDULE, ARow], TAB, 1)) > 0)
+         then Result := Result + ' AS NEEDED';
+    end;*)
+      Result := Piece(Piece(Cells[COL_SCHEDULE, ARow], TAB, 2),U,2);
+      if Result = '' then Result := Piece(Piece(Cells[COL_SCHEDULE, ARow], TAB, 2),U,1); //Added for CQ: 7639
+      if Result = '' then Result := Piece(Cells[COL_SCHEDULE, ARow], TAB, 1);
+      if RightStr(Result,3) = 'PRN' then
+      begin
+        Result := Copy(Result,1,Length(Result)-3); //Remove the Trailing PRN
+        if (RightStr(Result,1) = ' ') or (RightStr(Result,1) = '-') then
+        Result := Copy(Result,1,Length(Result)-1);
+        Result := Result + ' AS NEEDED';
+      end;
+      if valFor(VAL_CHKXPRN,ARow)='1' then Result := Result + ' AS NEEDED';
+      if UpperCase(Copy(Result, Length(Result) - 18, Length(Result))) = 'AS NEEDED AS NEEDED'
+      then Result := Copy(Result, 1, Length(Result) - 10);
+      if UpperCase(Copy(Result, Length(Result) - 12, Length(Result))) = 'PRN AS NEEDED' then
+      begin
+        Result := Copy(Result, 1, Length(Result) - 13);
+        if RightStr(Result,1)=' ' then Result := Result + 'AS NEEDED'
+        else Result := Result + ' AS NEEDED';
+      end;
+    end;
+  end;
+  
+begin
+  Result := '';
+  if ARow < 0 then                                // use single dose controls
+  begin
+    case FieldID of
+    FLD_DOSETEXT  : with cboDosage do
+                      if ItemIndex > -1 then Result := Uppercase(Piece(Items[ItemIndex], U, 5))
+                                        else Result := Uppercase(Text);
+    FLD_LOCALDOSE : with cboDosage do
+                      if ItemIndex > -1 then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 5)
+                                        else Result := Uppercase(Text);
+    FLD_STRENGTH  : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 2);
+    FLD_DRUG_ID   : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 6);
+    FLD_DRUG_NM   : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 1);
+    FLD_DOSEFLDS  : with cboDosage do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 4);
+    FLD_TOTALDOSE : with cboDosage do
+                      if ItemIndex > -1 then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 1);
+    FLD_UNITNOUN  : with cboDosage do
+                      if ItemIndex > -1 then Result := Piece(Piece(Items[ItemIndex], U, 4), '&', 3) + ' '
+                                                     + Piece(Piece(Items[ItemIndex], U, 4), '&', 4);
+    FLD_ROUTE_ID  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 1);
+    FLD_ROUTE_NM  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 2)
+                                        else Result := Text;
+    FLD_ROUTE_AB  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 3);
+    FLD_ROUTE_EX  : with cboRoute do
+                     if ItemIndex > -1  then Result := Piece(Items[ItemIndex], U, 4);
+    FLD_SCHEDULE  : begin      
+                      Result := GetSingleDoseSchedule;
+                    end;
+    FLD_SCHED_EX  : begin
+                      Result := GetSingleDoseScheduleEX;
+                    end;
+    FLD_SCHED_TYP : with cboSchedule do
+                      if ItemIndex > -1 then Result := Piece(Items[ItemIndex], U, 3);
+    FLD_QTYDISP   : with cboDosage do
+                      begin
+                        if ItemIndex > -1 then Result := Piece(Items[ItemIndex], U, 8);
+                        if (Result = '') and (Items.Count > 0) then Result := Piece(Items[0], U, 8);
+                        if Result <> ''
+                          then Result := 'Qty (' + Result + ')'
+                          else Result := 'Quantity';
+                      end;
+    end; {case FieldID}                           // use complex dose controls
+  end else
+  begin
+    if (ARow < 1) or (ARow >= grdDoses.RowCount) then Exit;
+    if Length(FDrugID) > 0
+      then x := FieldsForDose(ARow)
+      else x := Piece(Piece(grdDoses.Cells[COL_DOSAGE, ARow], TAB, 2), U, 4);
+    with grdDoses do
+      case FieldID of
+      FLD_DOSETEXT  : Result := Uppercase(Piece(Cells[COL_DOSAGE, ARow], TAB, 1));
+      FLD_LOCALDOSE : begin
+                        if (Length(x) > 0) and (Length(FDrugID) > 0)
+                          then Result := Piece(x, '&', 5)
+                          else Result := Uppercase(Piece(Cells[COL_DOSAGE, ARow], TAB, 1));
+                      end;
+      FLD_STRENGTH  : Result := Piece(x, '&', 7) + Piece(x, '&', 8);
+      FLD_DRUG_ID   : Result := Piece(x, '&', 6);
+      FLD_DRUG_NM   : Result := Piece(FieldsForDrug(Piece(x, '&', 6)), U, 4);
+      FLD_DOSEFLDS  : Result := x;
+      FLD_TOTALDOSE : Result := Piece(x, '&', 1);
+      FLD_UNITNOUN  : Result := Piece(x, '&', 3) + ' ' + Piece(x, '&', 4);
+      FLD_ROUTE_ID  : Result := Piece(Piece(Cells[COL_ROUTE, ARow], TAB, 2), U, 1);
+      FLD_ROUTE_NM  : begin
+                        Result := Piece(Piece(Cells[COL_ROUTE, ARow], TAB, 2), U, 2);
+                        if Result = '' then Result := Piece(Cells[COL_ROUTE, ARow], TAB, 1);
+                      end;
+      FLD_ROUTE_AB  : Result := Piece(Piece(Cells[COL_ROUTE, ARow], TAB, 2), U, 3);
+      FLD_ROUTE_EX  : Result := Piece(Piece(Cells[COL_ROUTE, ARow], TAB, 2), U, 4);
+      FLD_SCHEDULE  : begin
+                        Result := GetComplexDoseSchedule;
+                      end;
+      FLD_SCHED_EX  : begin
+                        Result := GetComplexDoseScheduleEX;
+                      end;
+      FLD_SCHED_TYP : Result := Piece(Piece(Cells[COL_SCHEDULE, ARow], TAB, 2), U, 3);
+      FLD_DURATION  : Result := Piece(Cells[COL_DURATION, ARow], TAB, 1);
+      FLD_SEQUENCE  : Result := Piece(Cells[COL_SEQUENCE, ARow], TAB, 1);
+      end; {case FieldID}
+  end; {if ARow}
+  if FieldID > FLD_MISC_FLDS then                 // still need to process 'non-sig' fields
+  begin
+    case FieldID of
+    FLD_SUPPLY    : Result := Trim(txtSupply.Text);
+    FLD_QUANTITY  :
+    begin
+       if Pos(',', txtQuantity.Text)>0 then 
+        Result := Piece(txtQuantity.Text,',',1) + Piece(txtQuantity.Text,',',2)
+       else
+        Result := Trim(txtQuantity.Text);
+    end;
+    FLD_REFILLS   : Result := txtRefills.Text;
+    FLD_PICKUP    : if      radPickWindow.Checked then Result := 'W'
+                    else if radPickMail.Checked   then Result := 'M'
+                    else if radPickClinic.Checked then Result := 'C'
+                    else Result := '';
+    FLD_PRIOR_ID  : Result := cboPriority.ItemID;
+    FLD_PRIOR_NM  : Result := cboPriority.Text;
+    FLD_COMMENT   : Result := memComment.Text;
+
+    FLD_NOW_ID    : if chkDoseNow.Visible and chkDoseNow.Checked then Result := '1'   else Result := '';
+    FLD_NOW_NM    : if chkDoseNow.Visible and chkDoseNow.Checked then Result := 'NOW' else Result := '';
+    FLD_PTINSTR   : if chkPtInstruct.Visible and chkPtInstruct.Checked
+                      then Result := FPtInstruct
+                      else Result := ' ';
+    end; {case FieldID}
+  end; {if FieldID}
+end;
+
+function TfrmODMeds.ValueOfResponse(FieldID: Integer; AnInstance: Integer = 1): string;
+var
+  x: string;
+begin
+  case FieldID of
+  FLD_SCHEDULE  : Result := Responses.IValueFor('SCHEDULE', AnInstance);
+  FLD_UNITNOUN  : begin
+                    x := Responses.IValueFor('DOSE',   AnInstance);
+                    Result := Piece(x, '&', 3) + ' ' + Piece(x, '&', 4);
+                  end;
+  FLD_DOSEUNIT  : begin
+                    x := Responses.IValueFor('DOSE',   AnInstance);
+                    Result := Piece(x, '&', 3);
+                  end;
+  FLD_DRUG_ID   : Result := Responses.IValueFor('DRUG',     AnInstance);
+  FLD_INSTRUCT  : Result := Responses.IValueFor('INSTR',    AnInstance);
+  FLD_SUPPLY    : Result := Responses.IValueFor('SUPPLY',   AnInstance);
+  FLD_QUANTITY  : Result := Responses.IValueFor('QTY',      AnInstance);
+  FLD_ROUTE_ID  : Result := Responses.IValueFor('ROUTE',    AnInstance);
+  FLD_EXPIRE    : Result := Responses.IValueFor('DAYS',     AnInstance);
+  FLD_ANDTHEN   : Result := Responses.IValueFor('CONJ',     AnInstance);
+  end;
+end;
+
+procedure TfrmODMeds.UpdateDefaultSupply(const CurUnits, CurSchedule, CurDuration, CurDispDrug: string;
+  var CurSupply: Integer; var CurQuantity: double; var SkipQtyCheck: Boolean);
+var
+  ADrug: string;
+  Checked: boolean;
+  tmpSupply: integer;
+begin
+  Checked := false;
+  if ((StrToFloatDef(txtQuantity.Text, 0) = 0) and (StrToIntDef(txtSupply.Text, 0) = 0) and
+     (txtQuantity.Tag = 0) and (txtSupply.Tag = 0) and (cboDosage.Text <> ''))
+     or ((cboDosage.ItemIndex < 0) and (not FIsQuickOrder)) or
+     ((IsClozapineOrder = true) and (FISQuickOrder) and (FQOInitial))  then
+  begin
+    Checked := True;
+    ADrug := Piece(CurDispDrug, U, 1);
+    CurSupply := DefaultDays(ADrug, CurUnits, CurSchedule);
+    if CurSupply > 0 then
+    begin
+      spnSupply.Position := CurSupply;
+      if (txtSupply.Text = '') or (StrToInt(txtSupply.Text)<>CurSupply)  then
+        txtSupply.Text := IntToStr(CurSupply);
+      if (FIsQuickOrder) and (FQOInitial) and (IsClozapineOrder = false) then
+      begin
+        if StrToFloatDef(txtSupply.Text,0) > 0 then
+        begin
+          Exit;
+        end;
+      end;
+      CurQuantity := DaysToQty(CurSupply, CurUnits, CurSchedule, CurDuration, ADrug);
+      if CurQuantity >= 0 then
+      begin
+       //spnQuantity.Position := CurQuantity;
+       if txtQuantity.Text <> '' then
+        txtQuantity.Text := FloatToStr(CurQuantity);
+       if (txtQuantity.Text = '') or (StrToInt(txtQuantity.Text) <> CurQuantity) then
+         txtQuantity.Text := FloatToStr(CurQuantity);
+      end;
+      SkipQtyCheck := TRUE;
+    end;
+    if FQOInitial = true then FQOInitial := False;    
+  end;
+  if (IsClozapineOrder = true) and (CurDispDrug <> '') and (CurDispDrug <> U)and (Checked = false) then
+    begin
+      ADrug := Piece(CurDispDrug, U, 1);
+      tmpSupply := DefaultDays(ADrug, CurUnits, CurSchedule);
+      if (tmpSupply > 0) and (CurSupply > tmpSupply) then
+        begin
+          CurSupply := tmpSupply;
+          spnSupply.Position := CurSupply;
+          if (txtSupply.Text = '') or (StrToInt(txtSupply.Text)<>CurSupply)  then
+          txtSupply.Text := IntToStr(CurSupply);
+        end;
+      CurQuantity := DaysToQty(CurSupply, CurUnits, CurSchedule, CurDuration, ADrug);
+      if CurQuantity >= 0 then
+      begin
+       //spnQuantity.Position := CurQuantity;
+       if (txtQuantity.Text <> '') and (CurQuantity > 0) then
+        txtQuantity.Text := FloatToStr(CurQuantity);
+       if (txtQuantity.Text = '') or (StrToInt(txtQuantity.Text) <> CurQuantity) and (CurQuantity > 0)  then
+         txtQuantity.Text := FloatToStr(CurQuantity);
+      end;
+    end;
+end;
+
+procedure TfrmODMeds.UpdateSupplyQuantity(const CurUnits, CurSchedule, CurDuration, CurDispDrug: string;
+  var CurSupply: Integer; var CurQuantity: double);
+const
+  UPD_NONE     = 0;
+  UPD_QUANTITY = 1;
+  UPD_SUPPLY   = 2;
+  UPD_COMPLEX  = 3;
+  UPD_BOTH     = 4;
+var
+  UpdateControl, NewSupply: Integer;
+  ADrug: string;
+  SaveChanging: Boolean;
+  tmpQuty: Double;
+begin
+  tmpQuty := 0;
+  if (tabDose.TabIndex = TI_COMPLEX) and (txtSupply.Tag = 0) and (txtQuantity.Tag = 0) then
+  begin
+    // set days supply based on durations
+    NewSupply := DurationToDays;
+    if NewSupply > 0 then
+    begin
+      SaveChanging := Changing;
+      Changing := TRUE;
+      txtSupply.Text := IntToStr(NewSupply);
+      CurSupply := NewSupply;
+      Changing := SaveChanging;
+    end;
+  end;
+  // exit if not enough fields to calculation supply or quantity
+  if (CurQuantity = 0) and (CurSupply = 0) then Exit;
+  // exit if nothing has changed
+  if (CurUnits    = FLastUnits)    and
+     (CurSchedule = FLastSchedule) and
+     (CurDuration = FLastDuration) and
+     (CurQuantity = FLastQuantity) and
+     (CurSupply   = FLastSupply)   then Exit;
+  // exit if supply & quantity have both been directly edited
+  if (txtSupply.Tag > 0) and (txtQuantity.Tag > 0) then Exit;
+  // figure out which control to update
+  UpdateControl := UPD_NONE;
+
+  if (CurSupply <> FLastSupply) and (txtQuantity.Tag = 0) and (CurQuantity <> FLastQuantity) and (txtSupply.Tag = 0) and Changing then UpdateControl := UPD_BOTH
+  else if (CurSupply <> FLastSupply) and (txtQuantity.Tag = 0) then UpdateControl := UPD_QUANTITY
+  else if (CurQuantity <> FLastQuantity) and (txtSupply.Tag = 0) then UpdateControl := UPD_SUPPLY;
+  if (UpdateControl = UPD_NONE) and ((CurUnits <> FLastUnits) or (CurSchedule <> FLastSchedule)) then
+  begin
+    if txtQuantity.Tag = 0    then UpdateControl := UPD_QUANTITY
+    else if txtSupply.Tag = 0 then UpdateControl := UPD_SUPPLY;
+  end;
+  ADrug := Piece(CurDispDrug, U, 1);  // just use the first dispense drug (for clozapine chk)
+  case UpdateControl of
+  UPD_QUANTITY : begin
+                   if FIsQuickOrder and (CurQuantity > 0) and FQOInitial then
+                   begin
+                     FQOInitial := False;
+                     Exit;
+                   end;
+                   if FIsQuickOrder and (CurQuantity > 0) then
+                     tmpQuty := CurQuantity;
+                   CurQuantity := DaysToQty(CurSupply,   CurUnits, CurSchedule, CurDuration, ADrug);
+                   if (tmpQuty > 0) and (CurQuantity <= 0) then
+                   begin
+                     txtQuantity.Text := FloatToStr(tmpQuty);
+                     CurQuantity := tmpQuty;
+                   end else if (CurQuantity >= 0) then
+                     txtQuantity.Text := FloatToStr(CurQuantity);
+                 end;
+  UPD_SUPPLY   : begin
+                   CurSupply   := QtyToDays(CurQuantity, CurUnits, CurSchedule, CurDuration, ADrug);
+                   if CurSupply > 0   then txtSupply.Text     := IntToStr(CurSupply);
+                 end;
+  UPD_BOTH     : begin
+                   txtSupply.Text     := IntToStr(CurSupply);
+                   tmpQuty := 0;
+                   if FIsQuickOrder and (CurQuantity > 0) and FQOInitial then
+                   begin
+                     FQOInitial := False;
+                     Exit;
+                   end;
+                   if FIsQuickOrder and (CurQuantity > 0) then
+                     tmpQuty := CurQuantity;
+                   CurQuantity := DaysToQty(CurSupply,   CurUnits, CurSchedule, CurDuration, ADrug);
+                   if (tmpQuty > 0) and (CurQuantity <= 0) then
+                   begin
+                     txtQuantity.Text := FloatToStr(tmpQuty);
+                     CurQuantity := tmpQuty;
+                   end else if CurQuantity >= 0 then
+                     txtQuantity.Text := FloatToStr(CurQuantity);
+                 end;
+  end;
+  if UpdateControl > UPD_NONE then FUpdated := True;
+end;
+
+procedure TfrmODMeds.updateSig;
+begin
+  inherited;
+  if self.tabDose.TabIndex = TI_DOSE then self.cboDosage.OnExit(cboDosage);
+  if self.tabDose.TabIndex = TI_COMPLEX then self.cboxDosage.OnExit(cboxDosage);
+end;
+
+procedure TfrmODMeds.UpdateStartExpires(const CurSchedule: string);
+var
+  CompSch, CompDose, LastSch, ShowText, Duration, ASchedule, TempSch, schType, Admin, tempAdmin: string;
+  AdminTime:    TFMDateTime;
+  j, r, Interval, PrnPos, SchID: Integer;
+  EndCheck, rowCheck, DoseNow: boolean;
+begin
+  if not FInptDlg then Exit;
+  if Length(CurSchedule)=0 then Exit;
+  ASchedule := Trim(CurSchedule);
+  DoseNow := True;
+  if self.EvtID > 0 then DoseNow := false;
+  if (Pos('^',ASchedule)>0) then
+  begin
+    PrnPos := Pos('PRN',ASchedule);
+    if (PrnPos > 1) and (CharAt(ASchedule,PrnPos-1)=' ') then
+      Delete(ASchedule, PrnPos-1, 4);
+  end;
+  if (FAdminTimeText = '') and (self.EvtID > 0) then FAdminTimeText := 'To Be Determined';
+  AdminTime := 0;
+  ASchedule := Trim(ASchedule);
+  //AGP Change for CQ 9906
+  EndCheck := False;
+  lastSch := '';
+  if self.tabDose.TabIndex = TI_COMPLEX then
+    begin
+    tempSch := ASchedule;
+    ASchedule := '';
+    for r := 1 to self.grdDoses.RowCount-1 do
+      begin
+        CompSch := valFor(VAL_SCHEDULE,r);
+        CompDose := valFor(VAL_DOSAGE,r);
+        RowCheck := valFor(VAL_CHKXPRN,r)='1';
+        if (RowCheck = True) then
+          begin
+            if EndCheck = false then AdminTime := -1;
+            if FAdminTimeText = '' then self.grdDoses.cells[COL_ADMINTIME, r] := ''
+            else Self.grdDoses.Cells[COL_ADMINTIME, r] := FAdminTimeText;
+          end
+        else
+          begin
+            if CompSch <> '' then
+               begin
+                 //cboXSchedule.Items.IndexOfName(CompSch);
+                 //cboXSchedule.SelectByID(CompSch);
+                 SchID := -1;
+                 for j := 0 to cboXSchedule.Items.Count - 1 do
+                    begin
+                      if Piece(cboXSchedule.Items.Strings[j], U, 1) = CompSch then
+                        begin
+                          schID := j;
+                          break;
+                        end;
+                    end;
+                 //if cboXSchedule.ItemIndex > -1 then
+                 if SchID > -1 then
+                   begin
+                     //SchID := cboXSchedule.ItemIndex;
+                     if (Piece(self.cboXSchedule.Items.Strings[SchID],U,1) = CompSch) then
+                       begin
+                         SchType := Piece(self.cboXSchedule.Items.Strings[SchID],U,3);
+                         if (SchType = 'P') or (SchType = 'O') or (SchType = 'OC') then
+                             self.grdDoses.Cells[COL_ADMINTIME, r] := ''
+                         else if FAdminTimeText <> '' then self.grdDoses.Cells[COL_ADMINTIME, r] := FAdminTimeText
+                         else
+                           begin
+                             self.grdDoses.Cells[COL_ADMINTIME, r] := Piece(self.cboXSchedule.Items.Strings[SchID],U,4);
+                             if self.grdDoses.Cells[COL_ADMINTIME, r] = '' then self.grdDoses.Cells[COL_ADMINTIME, r] := 'Not Defined';
+
+                           end;
+                         if CompDose <> '' then
+                           begin
+                             lastSch := CompSch;
+                             if (EndCheck = False) and ((SchType = 'P') or (SchType = 'O')) then AdminTime := -1
+                             //else Aschedule := ';' + CompSch;
+                           end;
+                       end;
+                     
+                   end;
+               end;
+          end;
+        if ((valFor(VAL_SEQUENCE,r) = 'AND') or (valFor(VAL_SEQUENCE,r) = '')) and (AdminTime > -1) and (EndCheck = false) then
+          begin
+            //if (CompSch = '') and (LastSch <> '') and (Aschedule <> '') then CompSch := LastSch;
+            if (ASchedule <> '') and (CompSch <> '') and (RowCheck = False) then ASchedule := ASchedule + ';' + CompSch;
+            if (ASchedule = '') and (CompSch <> '') and (RowCheck = False) then ASchedule := ';' + CompSch;
+          end
+        else if ValFor(VAL_SEQUENCE, r) = 'THEN' then
+          begin
+           // if (CompSch = '') and (LastSch <> '') and (Aschedule <> '') then CompSch := LastSch;
+            if (ASchedule <> '') and (CompSch <> '') and (RowCheck = False) then ASchedule := ASchedule + ';' + CompSch;
+            if (ASchedule = '') and (CompSch <> '') and (RowCheck = False) then ASchedule := ';' + CompSch;
+            EndCheck := True;
+          end
+      end;
+    end;
+  if self.tabDose.TabIndex = TI_DOSE then
+    begin
+     if LeftStr(ASchedule, 1) = ';' then tempSch := Piece(ASchedule, ';', 2)
+     else tempSch := ASchedule;
+     if self.chkPRN.Checked = True then
+       begin
+         AdminTime := -1;
+         lblAdminSchSetText('');
+         if (cboSchedule.ItemIndex > -1) and (Piece(self.cboSchedule.Items.Strings[cboSchedule.itemIndex], U, 3) = 'O') then
+           DoseNow := false;
+       end
+     else begin
+         //cboSchedule.SelectByID(tempSch);
+         SchID := -1;
+         for j := 0 to cboSchedule.Items.Count - 1 do
+           begin
+             if Piece(cboSchedule.Items.Strings[j], U, 1) = tempSch then
+                begin
+                  schID := j;
+                  break;
+                end;
+           end;
+         if schID > -1 then
+           begin
+             SchType := Piece(self.cboSchedule.Items.Strings[schID], U, 3);
+             if (SchType = 'P') or (SchType = 'OC') or (SchType = 'O') then
+               begin
+                 lblAdminSchSetText('');
+                 if (SchType = 'P') or (SchType = 'OC') or (SchType = 'O') then AdminTime := -1;
+                 if SchType = 'O' then DoseNow := false;
+               end
+             else
+               begin
+                 if FAdminTimeText <> '' then tempAdmin := 'Admin. Time: ' + FAdminTimeText
+                 else
+                   begin
+                      if Piece(self.cboSchedule.Items.Strings[schID], U, 4) <> '' then
+                          tempAdmin := 'Admin. Time: ' + Piece(self.cboSchedule.Items.Strings[schID], U, 4)
+                      else tempAdmin := 'Admin. Time: Not Defined';
+                   end;
+                  lblAdminSchSetText(tempAdmin);
+             (*    if FAdminTimeText <> '' then self.lblAdminSch.text := 'Admin. Time: ' + FAdminTimeText
+                 else
+                   begin
+                      if Piece(self.cboSchedule.Items.Strings[schID], U, 4) <> '' then
+                          self.lblAdminSch.text := 'Admin. Time: ' + Piece(self.cboSchedule.Items.Strings[schID], U, 4)
+                      else self.lblAdminSch.text := 'Admin. Time: Not Defined';
+                   end;   *)
+
+               end;
+           end;
+       end;
+    end;
+  if (Length(ASchedule)>0) and (AdminTime > -1) then
+     begin
+      if LeftStr(Aschedule, 1) <> ';' then ASchedule := ';'+ASchedule;
+      Admin := '';
+      if (self.lblAdminSch.visible = True) and (self.lblAdminSch.text <> '') and (self.tabDose.TabIndex = TI_DOSE) then
+        begin
+          //AGP Change Admin Time Wrap 27.73
+          //Admin := Copy(self.lblAdminSch.text,  14, (Length(self.lblAdminSch.text)-1));
+          Admin := lblAdminSchGetText;
+          if (Admin <> '') and (not (Admin[1] in ['0'..'9'])) then Admin := '';
+        end
+      else if self.tabDose.TabIndex = TI_COMPLEX then
+        begin
+          Admin := Self.grdDoses.Cells[COL_ADMINTIME, 1];
+          if (Admin <> '') and (not (Admin[1] in ['0'..'9'])) then Admin := '';
+        end;           
+      LoadAdminInfo(ASchedule, txtMed.Tag, ShowText, AdminTime, Duration, Admin);
+     end;
+  if AdminTime > 0 then
+  begin
+    ShowText := 'Expected First Dose: ';
+    Interval := Trunc(FMDateTimeToDateTime(AdminTime) - FMDateTimeToDateTime(FMToday));
+    case Interval of
+    0: ShowText := ShowText + 'TODAY ' + FormatFMDateTime('(mmm dd, yy) at hh:nn', AdminTime);
+    1: ShowText := ShowText + 'TOMORROW ' + FormatFMDateTime('(mmm dd, yy) at hh:nn', AdminTime);
+    else ShowText := ShowText + FormatFMDateTime('mmm dd, yy at hh:nn', AdminTime);
+    end;
+
+    if (Pos('PRN',Piece(CurSchedule,'^',1))>0) and ((pnlXSchedule.Tag = 1) or chkPrn.Checked ) then
+    begin
+      if lblAdmintime.visible then
+      begin
+        lblAdmintime.Caption := '';
+        FAdminTimeLbl := lblAdminTime.Caption;
+      end;
+    end else
+      lblAdminTime.Caption := ShowText;
+      FAdminTimeLbl := lblAdminTime.Caption;
+  end
+  else lblAdminTime.Caption := '';
+  if (lblAdminTime.Caption <> '') and (lblAdminTime.Visible = True) and (JAWSON = true) then lblAdminTime.TabStop := true
+  else lblAdminTime.TabStop := false;
+  if (lblAdminSch.text <> '') and (lblAdminSch.Visible = True) and (JAWSON = true) then lblAdminSch.TabStop := true
+  else lblAdminSch.TabStop := false;
+  DisplayDoseNow(DoseNow);
+end;
+
+procedure TfrmODMeds.UpdateRefills(const CurDispDrug: string; CurSupply: Integer);
+begin
+  if EvtForPassDischarge = 'D' then
+    spnRefills.Max := CalcMaxRefills(CurDispDrug, CurSupply, txtMed.Tag, True)
+  else
+    spnRefills.Max := CalcMaxRefills(CurDispDrug, CurSupply, txtMed.Tag, Responses.EventType = 'D');
+  if (StrToIntDef(txtRefills.Text, 0) > spnRefills.Max) then
+  begin
+    txtRefills.Text := IntToStr(spnRefills.Max);
+    spnRefills.Position := spnRefills.Max;
+    FUpdated := True;
+  end;
+end;
+
+procedure TfrmODMeds.UpdateRelated(DelayUpdate: Boolean = TRUE);
+begin
+  timCheckChanges.Enabled := False;               // turn off timer
+  if DelayUpdate
+    then timCheckChanges.Enabled := True          // restart timer
+    else timCheckChangesTimer(Self);              // otherwise call directly
+end;
+
+procedure TfrmODMeds.timCheckChangesTimer(Sender: TObject);
+const
+  UPD_NONE     = 0;
+  UPD_QUANTITY = 1;
+  UPD_SUPPLY   = 2;
+var
+  CurUnits, CurSchedule, CurInstruct, CurDispDrug, CurDuration, TmpSchedule, x, x1: string;
+  CurScheduleIN, CurScheduleOut: string;
+  CurSupply, i, pNum, j: Integer;
+  CurQuantity: double;
+  LackQtyInfo, SaveChanging: Boolean;
+begin
+  inherited;
+  timCheckChanges.Enabled := False;
+  ControlChange(Self);
+  SaveChanging := Changing;
+  Changing := TRUE;
+  // don't allow Exit procedure so Changing gets reset appropriately
+  CurUnits    := '';
+  CurSchedule := '';
+  CurDuration := '';
+  LackQtyInfo := False;
+  i := Responses.NextInstance('DOSE', 0);
+  while i > 0 do
+  begin
+    x := ValueOfResponse(FLD_DOSEUNIT,  i);
+    if (x = '') and (not FIsQuickOrder) then LackQtyInfo := TRUE  //StrToIntDef(x, 0) = 0
+    else if  (x = '') and FIsQuickOrder and (Length(txtQuantity.Text)>0) then
+      LackQtyInfo := false;
+    CurUnits    := CurUnits   + x  + U;
+    x := ValueOfResponse(FLD_SCHEDULE,  i);
+    if Length(x) = 0         then LackQtyInfo := TRUE;
+    CurScheduleOut := CurScheduleOut + x + U;
+    x1 := ValueOf(FLD_SEQUENCE,i);
+    if Length(x1)>0 then
+    begin
+      X1 := CharAt(X1,1);
+      CurScheduleIn := CurScheduleIn + x1 + ';' + x + U;
+    end
+    else
+      CurScheduleIn := CurScheduleIn + ';' + x + U;
+    x := ValueOfResponse(FLD_EXPIRE,    i);
+    CurDuration := CurDuration + x + '~';
+    x := ValueOfResponse(FLD_ANDTHEN,   i);
+    CurDuration := CurDuration + x + U;
+    x := ValueOfResponse(FLD_DRUG_ID,   i);
+    CurDispDrug := CurDispDrug + x + U;
+    x := ValueOfResponse(FLD_INSTRUCT,  i);
+    CurInstruct := CurInstruct + x + U;  //AGP CHANGE 26.19 FOR CQ 7465
+    i := Responses.NextInstance('DOSE', i);
+  end;
+
+  pNum := 1;
+  while Length( Piece(CurScheduleIn,U,pNum)) > 0 do
+    pNum := pNum + 1;
+  if Length(Piece(CurScheduleIn,U,pNum)) < 1 then
+    for j := 1 to pNum - 1 do
+    begin
+      if j = pNum -1 then
+        TmpSchedule := TmpSchedule + ';' + Piece(Piece(CurScheduleIn,U,j),';',2)
+      else
+        TmpSchedule := TmpSchedule + Piece(CurScheduleIn,U,j) + U
+    end;
+  CurScheduleIn := TmpSchedule;
+  CurQuantity := StrToFloatDef(ValueOfResponse(FLD_QUANTITY), 0);
+  CurSupply   := StrToIntDef(ValueOfResponse(FLD_SUPPLY)   ,0);
+  //CurRefill  := StrToIntDef(ValueOfResponse(FLD_REFILLS) , 0);
+  if FInptDlg then
+  begin
+    CurSchedule := CurScheduleIn;
+    if Pos('^',CurSchedule)>0 then
+    begin
+      if Pos('PRN',Piece(CurSchedule,'^',1))>0 then
+        if lblAdminTime.Visible then
+          lblAdminTime.Caption := '';
+    end;
+   if (self.tabDose.TabIndex = TI_DOSE) and (CurSchedule <> FLastSchedule) then UpdateStartExpires(CurSchedule);
+   //AGP remove this code for CQ 11772
+  (*if (ValueOf(FLD_SCHED_TYP) = 'O')
+      or (Responses.EventType in ['A','D','T','M','O'])
+      or ((Length(cboSchedule.Text)>0) and (cboSchedule.ItemIndex < 0)) then
+    begin
+      if (chkDoseNow.Checked) and (chkDoseNow.Visible) then
+      begin
+        chkDoseNowClick(Self);
+        chkDoseNow.Checked := False;
+      end;
+          chkDoseNow.Visible := False;
+          lblAdminTime.Visible := False;
+    end
+    else
+      begin
+        chkDoseNow.Visible := TRUE;
+        lblAdminTime.Visible := not chkDoseNow.Checked;
+      end;  *)
+    if Responses.EventType in ['A','D','T','M','O'] then lblAdminTime.Visible := False;
+  end;
+    if not FInptDlg then
+  begin
+    CurSchedule := CurScheduleOut;
+    if ((CurInstruct <> FLastInstruct) and (CurUnits <> U)) or ((IsClozapineOrder = true) and (CurDispDrug <> '') and (CurDispDrug <> U)) //AGP Change 26.48 Do not update quantity and day supply if no matching dose on the server
+      then UpdateDefaultSupply(CurUnits, CurSchedule, CurDuration, CurDispDrug, CurSupply, CurQuantity,
+                               LackQtyInfo);
+    if LackQtyInfo then begin
+      if FScheduleChanged then
+        txtQuantity.Text := '0';
+    end
+    else
+      UpdateSupplyQuantity(CurUnits, CurSchedule, CurDuration, CurDispDrug, CurSupply, CurQuantity);
+   // if (CurDispDrug <> FLastDispDrug) then UpdateSC(CurDispDrug);
+    if ((CurDispDrug <> FLastDispDrug) or (CurSupply <> FLastSupply)) and ((CurDispDrug <> '') and (CurSupply > 0))  then
+      UpdateRefills(CurDispDrug, CurSupply);
+  end;
+
+  FLastUnits    := CurUnits;
+  FLastSchedule := CurSchedule;
+  FLastDuration := CurDuration;
+  FLastInstruct := CurInstruct;
+  FLastDispDrug := CurDispDrug;
+  FLastQuantity := CurQuantity;
+  FLastSupply   := CurSupply;
+  if (not FNoZERO) and (txtQuantity.Text = '') and (FLastQuantity = 0) then
+    txtQuantity.Text := FloatToStr(FLastQuantity);
+  if (not FNoZERO) and (txtSupply.Text = '') and (FLastSupply = 0) then
+     txtSupply.Text := IntToStr(FLastSupply);
+  if (ActiveControl <> nil) and (ActiveControl.Parent <> cboDosage)
+    then cboDosage.Text := Piece(cboDosage.Text, TAB, 1);
+  Changing := SaveChanging;
+  if FUpdated then ControlChange(Self);
+  FScheduleChanged := false;
+end;
+
+procedure TfrmODMeds.cmdAcceptClick(Sender: TObject);
+var
+i: integer;
+begin
+  if (FInptDlg) and (cboSchedule.Text = 'OTHER') then
+  begin
+    cboScheduleClick(Self);
+    Exit;
+  end;
+  //AGP Change for 26.45 PSI-04-069
+  if self.tabDose.TabIndex = 1 then
+    begin
+       for i := 2 to self.grdDoses.RowCount do
+         begin
+           if ((ValFor(COL_DOSAGE, i-1) <> '') and (ValFor(COL_DOSAGE, i) <> '')) and (ValFor(COL_SEQUENCE,i-1) = '') then
+             begin
+              infoBox('To be able to complete a complex order every row except for the last row must have a conjunction defined. ' + CRLF
+              + CRLF + 'Verify that all rows have a conjunction defined.','Sequence Error',MB_OK);
+              Exit;
+             end;
+           //text := Self.cboXDosage.Items.Strings[i];
+         end;
+    end;
+  if FInptDlg and (not FOutptIV)
+    then DisplayGroup := DisplayGroupByName('UD RX')
+  else DisplayGroup := DisplayGroupByName('O RX');
+ (* if (Not FInptDlg) then
+    begin
+      if (ValidateDaySupplyandQuantity(strtoInt(txtSupply.Text), strtoInt(txtQuantity.text)) = false) then Exit
+      else ClearMaxData;
+    end;   *)
+  //if (Not FInptDlg) and (ValidateMaxQuantity(strtoInt(txtQuantity.Text)) = false) then Exit;
+  
+
+  //timCheckChangesTimer(Self);
+  DropLastSequence;
+  cmdAccept.SetFocus;
+  inherited;
+  (*if self.Responses.Cancel = true then
+    begin
+      self.Destroy;
+      exit;
+    end; *)
+end;
+
+procedure TfrmODMeds.chkPtInstructClick(Sender: TObject);
+begin
+  inherited;
+  ControlChange(Self);
+end;
+
+procedure TfrmODMeds.chkDoseNowClick(Sender: TObject);
+const
+  T  = '"';
+  T1 = 'By checking the "Give additional dose now" box, you have actually entered two orders for the same medication "';
+  T2 = #13#13'The first order''s administrative schedule is "';
+  T3 = #13'The second order''s administrative schedule is "';
+  T4 = #13#13'Do you want to continue?';
+  T1A = 'By checking the "Give additional dose now" box, you have actually entered a new order with the schedule "NOW"';
+  T2A = ' in addition to the one you are placing for the same medication "';
+var
+  medNm: string;
+  theSch: string;
+begin
+  inherited;
+  if (chkDoseNow.Checked) and (tabDose.TabIndex <> TI_COMPLEX) then
+  begin
+    medNm := txtMed.Text;
+    theSch := cboSchedule.Text;
+    if length(theSch)>0 then
+    begin
+      //if ( (ValueOf(FLD_SCHED_TYP) <> 'O') and (InfoBox(T1+medNm+T+T2+theSch+T+T3+'NOW"'+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL) )then
+      if InfoBox(T1+medNm+T+T2+theSch+T+T3+'NOW"'+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL then
+      begin
+        chkDoseNow.Checked := False;
+        Exit;
+      end;
+    end else
+    begin
+      if InfoBox(T1A+T2A+medNm+T+T4, 'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL then
+      begin
+        chkDoseNow.Checked := False;
+        Exit;
+      end;
+    end;
+  end;
+  lblAdminTime.Visible := not chkDoseNow.Checked;
+  if (tabDose.TabIndex = TI_COMPLEX) and chkDoseNow.Checked  then
+  begin
+    if (InfoBox('Give Additional Dose Now is in addition to those listed in the table.' + CRLF +
+                 'Please adjust the duration of the first row, if necessary.',
+                 'Give Additional Dose Now for Complex Order', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL) then
+    begin
+      chkDoseNow.Checked := False;
+      Exit;
+    end;
+  end;
+  ControlChange(Self);
+end;
+
+
+procedure TfrmODMeds.CheckDecimal(var AStr: string);
+var
+  DUName,UnitNum,tempStr: string;
+  ToWord: string;
+  ie,code: integer;
+begin
+  ToWord := '';
+  tempStr := AStr;
+  UnitNum := Piece(AStr,' ',1);
+  DUName := Copy(tempStr,Length(UnitNum)+1,Length(tempStr));
+  DUName := Trim(DUName);
+  if CharAt(UnitNum,1)='.' then
+  begin
+    if CharAt(UnitNum,2) in ['0','1','2','3','4','5','6','7','8','9'] then
+    begin
+      UnitNum := '0' + UnitNum;
+      AStr := '0' + AStr;
+    end;
+  end;
+  if ((Pos('TABLET',upperCase(DUName))= 0)) and ( Pos('DROP',upperCase(DUName))= 0 )then
+    Exit;
+  if (Length(UnitNum)>0) and (Length(DUName)>0) then
+  begin
+    if CharAt(UnitNum,1) <> '0' then
+    begin
+      Val(UnitNum, ie, code);
+      if (code <> 0) and (ie=0) then
+        Exit;
+    end;
+    AStr := TextDosage(UnitNum) + ' ' + DUName;
+  end;
+end;
+
+procedure TfrmODMeds.DropLastSequence(ASign: integer);
+const
+  TXT_CONJUNCTIONWARNING = 'is not associated with the comment field, and has been deleted.';
+var
+  i :integer;
+  StrConjunc: string;
+begin
+  for i := 1 to grdDoses.RowCount - 1 do
+  begin
+    if (i = 1) and (grdDoses.Cells[COL_DOSAGE,i] = '' ) then
+      Exit
+    else if (i>1) and (grdDoses.Cells[COL_DOSAGE,i] = '') and (grdDoses.Cells[COL_ROUTE,i] = '') then
+    begin
+      if Length(grdDoses.Cells[COL_SEQUENCE, i-1])>0 then
+      begin
+        StrConjunc := grdDoses.Cells[COL_SEQUENCE, i-1];
+        if ASign = 1 then
+        begin
+          if InfoBox('The "' + StrConjunc + '" ' + TXT_CONJUNCTIONWARNING, 'Warning', MB_OK or MB_ICONWARNING) = IDOK then
+          begin
+            grdDoses.Cells[COL_SEQUENCE, i-1] := '';
+            ActiveControl := memOrder;
+          end
+        end
+        else
+        begin
+          grdDoses.Cells[COL_SEQUENCE, i-1] := '';
+        end;
+      end;
+      Exit;
+    end;
+  end;
+end;
+
+procedure TfrmODMeds.memCommentClick(Sender: TObject);
+var
+  theSign : integer;
+begin
+  inherited;
+  theSign := 1;
+  DropLastSequence(theSign);
+end;
+
+procedure TfrmODMeds.btnXDurationClick(Sender: TObject);
+var
+  APoint: TPoint;
+begin
+  inherited;
+  with TSpeedButton(Sender) do APoint := ClientToScreen(Point(0, Height));
+  popDuration.Popup(APoint.X, APoint.Y);
+end;
+
+procedure TfrmODMeds.chkPRNClick(Sender: TObject);
+var
+  tempSch: string;
+  PRNPos: integer;
+begin
+  inherited;
+  //GE  CQ 7552
+  if chkPRN.Checked then
+  begin
+     lblAdminTime.Caption := '';
+     PrnPos := Pos('PRN',cboSchedule.Text);
+     if (PrnPos < 1) then
+        UpdateStartExpires(cboSchedule.Text + ' PRN');
+  end
+  else
+  begin
+    if Length(Trim(cboSchedule.Text))>0 then
+    begin
+      tempSch := ';'+Trim(cboSchedule.Text);
+      UpdateStartExpires(tempSch);
+    end;
+    //lblAdminTime.Caption := FAdminTimeLbl;
+    if txtQuantity.visible then
+      cboScheduleClick(Self);
+  end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODMeds.grdDosesKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+//  VK_RETURN:   //moved to form key press
+  VK_RIGHT:
+    begin
+      if (not FInptDlg) and (self.grdDoses.Col = COL_DURATION) then
+        begin
+          self.grdDoses.Col := COL_SEQUENCE;
+          Key := 0;
+        end;
+    end;
+  VK_LEFT:
+    begin
+      if (not FInptDlg) and (self.grdDoses.Col = COL_SEQUENCE) then
+        begin
+          self.grdDoses.Col := COL_DURATION;
+          Key := 0;
+        end;
+    end;
+  VK_ESCAPE:
+    begin
+      ActiveControl := FindNextControl(Sender as TWinControl, False, True, False); //Previous control
+      Key := 0;
+    end;
+  VK_INSERT:
+    begin
+      btnXInsertClick(self);
+      Key := 0;
+    end;
+  VK_DELETE:
+    begin
+      btnXRemoveClick(self);
+      Key := 0;
+    end;
+  VK_TAB:
+    begin
+      if ssShift in Shift then
+      begin
+        ActiveControl := tabDose; //Previeous control
+        Key := 0;
+      end
+      else if ssCtrl	in Shift then
+      begin
+        ActiveControl := memComment;
+        Key := 0;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmODMeds.grdDosesEnter(Sender: TObject);
+begin
+  inherited;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+function TfrmODMeds.DisableCancelButton(Control: TWinControl): boolean;
+var
+  i: integer;
+begin
+  if (Control is TButton) and TButton(Control).Cancel then begin
+    result := True;
+    FDisabledCancelButton := TButton(Control);
+    TButton(Control).Cancel := False;
+  end else begin
+    result := False;
+    for i := 0 to Control.ControlCount-1 do
+      if (Control.Controls[i] is TWinControl) then
+        if DisableCancelButton(TWinControl(Control.Controls[i])) then begin
+          result := True;
+          break;
+        end;
+  end;
+end;
+
+function TfrmODMeds.DisableDefaultButton(Control: TWinControl): boolean;
+var
+  i: integer;
+begin
+  if (Control is TButton) and TButton(Control).Default then begin
+    result := True;
+    FDisabledDefaultButton := TButton(Control);
+    TButton(Control).Default := False;
+  end else begin
+    result := False;
+    for i := 0 to Control.ControlCount-1 do
+      if (Control.Controls[i] is TWinControl) then
+        if DisableDefaultButton(TWinControl(Control.Controls[i])) then begin
+          result := True;
+          break;
+        end;
+  end;
+end;
+
+procedure TfrmODMeds.RestoreCancelButton;
+begin
+  if Assigned(FDisabledCancelButton) then begin
+    FDisabledCancelButton.Cancel := True;
+    FDisabledCancelButton := nil;
+  end;
+end;
+
+procedure TfrmODMeds.RestoreDefaultButton;
+begin
+  if Assigned(FDisabledDefaultButton) then begin
+    FDisabledDefaultButton.Default := True;
+    FDisabledDefaultButton := nil;
+  end;
+end;
+
+procedure TfrmODMeds.FormKeyPress(Sender: TObject; var Key: Char);
+begin
+ (* if (Key = #13) and (ActiveControl = grdDoses{pnlXSequence}) then
+  begin
+    ShowEditor(grdDoses.Col, grdDoses.Row, #0);
+    Key := #0;  //Don't let the base class turn it into a forward tab!
+  end *)
+  //else
+  if (Key = #13) and (ActiveControl = txtMed) then
+    Key := #0;   //Don't let the base class turn it into a forward tab!
+end;
+
+procedure TfrmODMeds.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) and (ssCtrl in Shift) and (ActiveControl <> grdDoses) then
+  begin
+    //Back-tab works the same as forward-tab because there are only two tabs.
+    tabDose.TabIndex := (tabDose.TabIndex + 1) mod tabDose.Tabs.Count;
+    Key := 0;
+    tabDoseChange(tabDose);
+  end;
+end;
+
+procedure TfrmODMeds.cboXRouteEnter(Sender: TObject);
+begin
+  inherited;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMeds.pnlMessageEnter(Sender: TObject);
+begin
+  inherited;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMeds.pnlMessageExit(Sender: TObject);
+begin
+  inherited;
+  RestoreDefaultButton;
+  RestoreCancelButton;
+end;
+
+procedure TfrmODMeds.memMessageKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_RETURN) or (Key = VK_ESCAPE) then
+  begin
+    Perform(WM_NEXTDLGCTL, 0, 0);
+    Key := 0;
+  end;
+end;
+
+procedure TfrmODMeds.memPIClick(Sender: TObject);
+begin
+  inherited;
+  ShowMsg('The patient instruction field may not be edited.');
+  chkPtInstruct.SetFocus;
+end;
+
+procedure TfrmODMeds.FormResize(Sender: TObject);
+var
+  aftHeight: integer;
+  tempAdmin: string;
+begin
+  inherited;
+  pnlFields.Height := memOrder.Top - 4 - pnlFields.Top;
+  aftHeight := pnlFields.Top + pnlFields.Height + memOrder.Height;
+  if aftHeight > Height then
+    Height := aftHeight;
+  if pnlMessage.Visible then
+    pnlMessage.Top := pnlFields.Top + pnlTop.Height + 8;
+  tempAdmin := lblAdminSchGetText;
+  if tempAdmin <> '' then lblAdminSchSetText('Admin Time: ' + tempAdmin);
+end;
+
+procedure TfrmODMeds.memPIKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  ShowMsg('The patient instruction field may not be edited.');
+  chkPtInstruct.SetFocus;
+end;
+
+function TfrmODMeds.TextDosage(ADosage: string): string;
+var
+  intS, fltS: string;
+  iNum: integer;
+  fNum: double;
+begin
+  intS := '';
+  fltS := '';
+  Result := intS + fltS;
+    try
+      begin
+        iNum := StrToIntDef(Piece(ADosage,'.',1),0);
+        fNum := StrToFloatDef('0.'+Piece(ADosage,'.',2),0);
+        if fNum = 0.5 then
+          fltS := 'ONE-HALF';
+        if ( fNum >= 0.3 ) and ( fNum <= 0.4 ) then
+          fltS := 'ONE-THIRD';
+        if fNum = 0.25 then
+          fltS := 'ONE-FOURTH';
+        if ( fNum >= 0.6 ) and ( fNum <= 0.7 ) then
+          fltS := 'TWO-THIRDS';
+        if fNum = 0.75 then
+          fltS := 'THREE-FOURTHS';
+        if iNum = 1 then
+          intS := 'ONE';
+        if iNum = 2 then
+          intS := 'TWO';
+        if iNum = 3 then
+          intS := 'THREE';
+        if iNum = 4 then
+          intS := 'FOUR';
+        if iNum = 5 then
+          intS := 'FIVE';
+        if iNum = 6 then
+          intS := 'SIX';
+        if iNum = 7 then
+          intS := 'SEVEN';
+        if iNum = 8 then
+          intS := 'EIGHT';
+        if iNum = 9 then
+          intS := 'NINE';
+        if iNum = 10 then
+          intS := 'TEN';
+        if Length(intS) > 0 then
+        begin
+          if Length(fltS)>1 then
+            fltS :=' AND ' + fltS;
+        end;
+        Result := intS + fltS;
+        if Result = '' then
+          Result := ADosage;
+      end
+    except
+      on EConvertError do Result := '';
+    end;
+end;
+
+function TfrmODMeds.CreateOtherScheduel: string;      //NSS
+var
+  aSchedule: string;
+begin
+  aSchedule := '';
+  if not ShowOtherSchedule(aSchedule) then
+  begin
+    cboSchedule.ItemIndex := -1;
+    cboSchedule.Text      := '';
+  end
+  else
+    begin
+        Result := Piece(aSchedule,U,1);
+        NSSAdminTime := Piece(aschedule,u,2);
+        NSSScheduleType := Piece(aSchedule, U, 3);
+        if FAdminTimeText <> '' then NSSAdminTime := FAdminTimeText;
+    end;
+end;
+
+function TfrmODMeds.IfIsIMODialog: boolean;
+var
+  IsInptDlg, IsIMOLocation: boolean;
+  Td: TFMDateTime;
+begin
+  result := False;
+  IsInptDlg := False;
+  Td := FMToday;
+  if DlgFormID = MedsInDlgFormId  then IsInptDlg := TRUE;
+  IsIMOLocation := IsValidIMOLoc(Encounter.Location,Patient.DFN);
+  if (IsInptDlg) and (not Patient.Inpatient) and IsIMOLocation and (Encounter.DateTime > Td) then
+    result := True;
+end;
+
+procedure TfrmODMeds.lstChange(Sender: TObject; Item: TListItem;
+  Change: TItemChange);
+begin
+  inherited;
+  btnSelect.Enabled := (lstAll.ItemIndex > -1) or
+                       ((lstQuick.ItemIndex > -1) and
+                       (Assigned(lstQuick.Items[lstQuick.ItemIndex].Data)) and
+                       (Integer(lstQuick.Selected.Data) > 0)) ;
+  if (btnSelect.Enabled) and (FOrderAction = ORDER_EDIT) then btnSelect.Enabled := false;  
+  if (btnSelect.Enabled) and (FRemoveText) then
+    txtMed.Text := '';
+end;
+
+
+procedure TfrmODMeds.DisplayDoseNow(Status: boolean);
+begin
+  if not FinptDlg then Status := False;
+  if Status = false then
+    begin
+      if (self.chkDoseNow.Visible = true) and (self.chkDoseNow.Checked = true) then self.chkDoseNow.Checked := false;
+      self.chkDoseNow.Visible := false;
+    end;
+  if status = true then self.chkDoseNow.Visible := true;  
+end;
+
+procedure TfrmODMeds.DispOrderMessage(const AMessage: string);
+begin
+  if ContainsVisibleChar(AMessage) then
+  begin
+    image1.Visible := True;
+    memDrugMsg.Visible := True;
+    image1.Picture.Icon.Handle := LoadIcon(0, IDI_ASTERISK);
+    memDrugMsg.Lines.Clear;
+    memDrugMsg.Lines.SetText(PChar(AMessage));
+    if fShrinkDrugMsg then
+    begin
+      pnlBottom.Height := pnlBottom.Height + memDrugMsg.Height + 2;
+      fShrinkDrugMsg := False;
+    end;
+  end else
+  begin
+    image1.Visible := False;
+    memDrugMsg.Visible := False;
+    if not fShrinkDrugMsg then
+    begin
+      pnlBottom.Height := pnlBottom.Height - memDrugMsg.Height - 2;
+      fShrinkDrugMsg := True;
+    end;
+  end;
+end;
+
+
+procedure TfrmODMeds.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if FCloseCalled then Exit; //Temporary Hack: Close is called 2x for some reason & errors out
+  FCloseCalled := true;
+  FResizedAlready := False;
+  inherited;
+end;
+
+function TfrmODMeds.CreateOtherScheduelComplex: string;
+var
+  aSchedule: string;
+begin
+  aSchedule := '';
+  if not ShowOtherSchedule(aSchedule) then
+  begin
+    cboXSchedule.ItemIndex := -1;
+    cboXSchedule.Text      := '';
+  end
+  else
+    begin
+        Result := Piece(aSchedule,U,1);
+        NSSAdminTime := Piece(aschedule,u,2);
+        NSSScheduleType := Piece(ASchedule, U, 3);
+        if FAdminTimeText <> '' then NSSAdminTime := FAdminTimeText;
+    end;
+end;
+
+procedure TfrmODMeds.txtNSSClick(Sender: TObject);
+begin
+  inherited;
+  if MessageDlg('You can also select ' + '"' + 'Other' + '"' + ' from the schedule list'
+    + ' to create a day-of-week schedule.'
+    + #13#10 + 'Click OK to launch schedule builder',
+    mtInformation, [mbOK, mbCancel],0) = mrOK then
+  begin
+    if (tabDose.TabIndex = TI_DOSE) then
+    begin
+      cboSchedule.SelectByID('OTHER');
+      cboScheduleClick(Self);
+    end;
+    if  (tabDose.TabIndex = TI_COMPLEX) then
+    begin
+      cboXSchedule.SelectByID('OTHER');
+      CBOXScheduleChange(Self);
+    end;
+  end;
+end;
+
+procedure TfrmODMeds.cboScheduleEnter(Sender: TObject);
+begin
+  inherited;
+  if (FInptDlg) and (cboSchedule.Text = 'OTHER') then
+    cboScheduleClick(Self);
+end;
+
+procedure TfrmODMeds.FormShow(Sender: TObject);
+begin
+  FCloseCalled := false;
+  inherited;
+  if ( (cboSchedule.Text = 'OTHER') and FNSSOther and FInptDlg )then
+    PostMessage(Handle, UM_NSSOTHER, 0, 0);
+
+  //I was using btnSelect.Top for the following, but it gets moved around
+  Constraints.MinHeight := Constraints.MinHeight + ((Self.Height - cmdQuit.Top) * 2);
+end;
+
+procedure TfrmODMeds.UMShowNSSBuilder(var Message: TMessage);
+begin
+  Sleep(1000);
+  cboScheduleClick(Self);
+end;
+
+procedure TfrmODMeds.cboScheduleExit(Sender: TObject);
+begin
+  inherited;
+  if Trim(cboSchedule.Text) = '' then
+    cboSchedule.ItemIndex := -1;
+  ValidateInpatientSchedule(cboSchedule);
+end;
+
+procedure TfrmODMeds.ValidateInpatientSchedule(ScheduleCombo: TORComboBox);
+var
+  tmpIndex : Integer;
+begin
+
+{CQ: 6690 - Orders - autopopulation of schedule field - overtyping only 1 character
+ CQ: 7280 - PTM 32-34, 42 Meds: NJH-0205-20901 MED DIALOG DROPPING FIRST LETTER (schedule)}
+
+ //CQ 7575  Schedule coming across lower-case, change all schedules to Upper-Case.
+  if (Length(ScheduleCombo.Text) > 0) then
+    ScheduleCombo.Text := TrimLeft(UpperCase(ScheduleCombo.Text));
+    {if user entered schedule verify it is in list}
+  if ScheduleCombo.ItemIndex < 0 then // CQ: 7397
+  begin //Fix for CQ: 9299 - Outpatient Med orders will not accept free text schedule
+    tmpIndex := GetSchedListIndex(ScheduleCombo,ScheduleCombo.Text);
+    if tmpIndex > -1 then
+      ScheduleCombo.ItemIndex := tmpIndex;
+  end;
+    if (Length(ScheduleCombo.Text) > 0) and (ScheduleCombo.ItemIndex < 0) and FInptDlg then
+        begin
+          FShowPnlXScheduleOk := False; //Added for CQ: 7370
+          Application.MessageBox('Please select a valid schedule from the list.'+#13+#13+
+                           'If you would like to create a Day-of-Week schedule please'+
+                           ' select ''OTHER'' from the list.',
+                           'Incorrect Schedule.');
+    FShowPnlXScheduleOk := True;  //Added for CQ: 7370
+    if ScheduleCombo.CanFocus then
+      ScheduleCombo.SetFocus;
+    ScheduleCombo.SelStart := Length(ScheduleCombo.Text);
+  end;
+end;
+
+//Removed based on Site feeback. See CQ: 7518
+(*function TfrmODMeds.ValidateRoute(RouteCombo: TORComboBox) : Boolean;
+begin
+{CQ: 7331 - Medications - Route - Can not enter any route not listed in Route field in window}
+  Result := True;
+  if (Length(RouteCombo.Text) > 0) and (RouteCombo.ItemIndex < 0) and (Not IsSupplyAndOutPatient) then
+  begin
+    Application.MessageBox('Please select a correct route from the list.',
+                           'Incorrect Route.');
+    if RouteCombo.CanFocus then
+      RouteCombo.SetFocus;
+    RouteCombo.SelStart := Length(RouteCombo.Text);
+    Result := False;
+  end;
+end;*)
+
+function TfrmODMeds.isUniqueQuickOrder(iText: string): Boolean;
+var
+  counter,i: Integer;
+begin
+  counter := 0;
+  Result := False;
+  if iText = '' then Exit;
+  for i := 0 to FQuickItems.Count-1 do
+    if AnsiCompareText(iText, Copy(Piece(FQuickItems[i],'^',2), 1, Length(iText))) = 0 then
+      Inc(counter);               //Found a Match
+  Result := counter = 1;
+end;
+
+function TfrmODMeds.IsSupplyAndOutPatient: boolean;
+begin
+{CQ: 7331 - Medications - Route - Can not enter any route not listed in Route field in window}
+  Result := False;
+  if (MedIsSupply(txtMed.Tag)) and (not FInptDlg) then
+    Result := True;
+end;
+
+// CQ: 7397 - Inpatient med orders with PRN cancel due to invalid schedule.
+function TfrmODMeds.GetCacheChunkIndex(idx: integer): integer;
+begin
+  Result := idx div MED_CACHE_CHUNK_SIZE;
+end;
+
+function TfrmODMeds.GetSchedListIndex(SchedCombo: TORComboBox; pSchedule: String):integer;
+var i: integer;
+begin
+    result := -1;
+    for i := 0 to SchedCombo.items.Count-1 do
+    begin
+         if pSchedule = SchedCombo.DisplayText[i] then
+         begin
+           result := i;   // match found
+           break;
+         end;
+    end;
+end;
+
+
+procedure TfrmODMeds.cboXScheduleExit(Sender: TObject);
+begin
+  inherited;
+{CQ: 7344 - Inconsistency with Schedule box: Allows free-text entry for Complex orders,
+            doesn't for simple orders }
+  ValidateInpatientSchedule(cboXSchedule);
+end;
+
+procedure TfrmODMeds.cboXSequenceChange(Sender: TObject);
+var
+x: string;
+begin
+  inherited;
+ x := cboXSequence.Text;
+ if (x = 'then') and ((ValFor(COL_DURATION, ARow1) = '') or (ValFor(COL_DURATION, ARow1) = '0')) then
+     begin
+       InfoBox('A duration is required when using "Then" as a conjunction' + CRLF + CRLF+
+           'The patient will be instructed to take these doses consecutively, not concurrently.','Duration Warning',MB_OK);
+       x := '';
+     end;
+  cboXSequence.text := x;
+  cboXSequence.ItemIndex := cboXSequence.Items.IndexOf(x);
+  grdDoses.Cells[COL_SEQUENCE, cboXSequence.Tag] := Uppercase(x);
+  //AGP Start Expire add line
+  UpdateStartExpires(valFor(COL_SCHEDULE,self.grdDoses.Row));
+  ControlChange(Sender);
+end;
+
+procedure TfrmODMeds.cboXSequenceEnter(Sender: TObject);
+begin
+  inherited;
+  DisableDefaultButton(self);
+  DisableCancelButton(self);
+end;
+
+procedure TfrmODMeds.cboXSequenceExit(Sender: TObject);
+begin
+  inherited;
+  grdDoses.Cells[COL_SEQUENCE, cboXSequence.Tag] := Uppercase(cboXSequence.Text);
+  if ActiveControl = grdDoses then
+  begin
+    //This next condition seldom occurs, since entering the dosage on the last
+    // row adds another row
+    if grdDoses.Row = grdDoses.RowCount - 1 then
+      grdDoses.RowCount := grdDoses.RowCount + 1;
+  end;
+  cboXSequence.Tag := -1;
+  cboXSequence.Hide;
+  RestoreDefaultButton;
+  RestoreCancelButton;
+  if (pnlMessage.Visible) and (memMessage.TabStop) then
+  begin
+    pnlMessage.Parent := grdDoses.Parent;
+    pnlMessage.TabOrder := grdDoses.TabOrder;
+    ActiveControl := memMessage;
+  end
+  else if grdDoses.Showing then
+    ActiveControl := grdDoses
+  else
+    ActiveControl := cboDosage;
+  //AGP Start Expire commented out line
+  //UpdateStartExpires(valFor(COL_SCHEDULE,self.grdDoses.Row));
+end;
+
+procedure TfrmODMeds.cboXSequence1Exit(Sender: TObject);
+begin
+  inherited;
+  cboxSequence.Hide;
+end;
+
+procedure TfrmODMeds.cboDosageKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  //Fix for CQ: 7545
+  if cboDosage.ItemIndex > -1 then
+    cboDosageClick(Sender)
+  else
+    UpdateRelated;
+end;
+
+procedure TfrmODMeds.cboXDosageKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  //Fix for CQ: 7545
+  if cboXDosage.ItemIndex > -1 then
+    cboXDosageClick(Sender)
+  else
+    begin
+      grdDoses.Cells[COL_DOSAGE, cboXDosage.Tag] := cboXDosage.Text;
+      UpdateRelated;
+    end;
+end;
+
+procedure TfrmODMeds.txtSupplyClick(Sender: TObject);
+begin
+  inherited;
+  Self.txtSupply.SelectAll;
+end;
+
+procedure TfrmODMeds.txtQuantityClick(Sender: TObject);
+begin
+  inherited;
+   self.txtQuantity.SelectAll;
+end;
+
+procedure TfrmODMeds.txtRefillsChange(Sender: TObject);
+begin
+  inherited;
+  ControlChange(sender);
+end;
+
+procedure TfrmODMeds.txtRefillsClick(Sender: TObject);
+begin
+  inherited;
+  self.txtRefills.SelectAll;
+end;
+
+procedure TfrmODMeds.WMClose(var Msg: TWMClose);
+begin
+   if self <> nil then
+     begin
+       if (self.tabDose.TabIndex = TI_Dose) then
+         begin
+            if Trim(cboSchedule.Text) = '' then cboSchedule.ItemIndex := -1;
+            ValidateInpatientSchedule(cboSchedule);
+            if self.cboSchedule.Focused = true then exit;
+         end;
+       if (self.tabDose.TabIndex = TI_Complex) then
+         begin
+           ValidateInpatientSchedule(cboXSchedule);
+           if self.cboXSchedule.Focused = true then exit;
+         end;
+     end;
+    inherited
+end;
+
+procedure TfrmODMeds.cboXScheduleEnter(Sender: TObject);
+begin
+  inherited;
+  //agp Change CQ 10719
+   self.chkXPRN.OnClick(self.chkXPRN);
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMessage.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMessage.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMessage.dfm	(revision 1676)
@@ -0,0 +1,49 @@
+inherited frmODMessage: TfrmODMessage
+  Left = 271
+  Top = 515
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsToolWindow
+  ClientHeight = 39
+  ClientWidth = 374
+  FormStyle = fsStayOnTop
+  Position = poOwnerFormCenter
+  Visible = True
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  DesignSize = (
+    374
+    39)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object imgMessage: TImage [0]
+    Left = 4
+    Top = 4
+    Width = 32
+    Height = 32
+  end
+  object memMessage: TRichEdit [1]
+    Left = 40
+    Top = 4
+    Width = 332
+    Height = 32
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Color = clInfoBk
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clInfoText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    ScrollBars = ssVertical
+    TabOrder = 0
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMessage'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMessage.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMessage.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMessage.pas	(revision 1676)
@@ -0,0 +1,62 @@
+unit fODMessage;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ComCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODMessage = class(TfrmBase508Form)
+    memMessage: TRichEdit;
+    imgMessage: TImage;
+    procedure FormDestroy(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure ShowOrderMessage(Sender: TForm; const AMsg: string);
+procedure HideOrderMessage;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn;
+
+var
+  frmODMessage: TfrmODMessage;
+
+procedure ShowOrderMessage(Sender: TForm; const AMsg: string);
+begin
+  frmODMessage := TfrmODMessage.Create(Application);
+  ResizeFormToFont(TForm(frmODMessage));
+  with frmODMessage do
+  begin
+    memMessage.Text := AMsg;
+    SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE);
+    Show;
+    Sender.SetFocus;
+  end;
+end;
+
+procedure HideOrderMessage;
+begin
+  if frmODMessage <> nil then frmODMessage.Release;
+end;
+
+procedure TfrmODMessage.FormDestroy(Sender: TObject);
+begin
+  frmODMessage := nil;
+end;
+
+procedure TfrmODMessage.FormCreate(Sender: TObject);
+begin
+  imgMessage.Picture.Icon.Handle := LoadIcon(0, IDI_ASTERISK);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMisc.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMisc.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMisc.dfm	(revision 1676)
@@ -0,0 +1,137 @@
+inherited frmODMisc: TfrmODMisc
+  Left = 404
+  Top = 453
+  Caption = 'Patient Care Order'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblStart: TLabel [0]
+    Left = 6
+    Top = 100
+    Width = 76
+    Height = 13
+    Caption = 'Start Date/Time'
+  end
+  object lblStop: TLabel [1]
+    Left = 158
+    Top = 100
+    Width = 76
+    Height = 13
+    Caption = 'Stop Date/Time'
+  end
+  object lblCare: TLabel [2]
+    Left = 6
+    Top = 6
+    Width = 58
+    Height = 13
+    Caption = 'Patient Care'
+  end
+  object lblComment: TLabel [3]
+    Left = 6
+    Top = 53
+    Width = 54
+    Height = 13
+    Caption = 'Instructions'
+  end
+  inherited memOrder: TCaptionMemo
+    TabOrder = 6
+  end
+  inherited cmdAccept: TButton
+    TabOrder = 4
+  end
+  inherited cmdQuit: TButton
+    TabOrder = 5
+  end
+  inherited pnlMessage: TPanel
+    TabOrder = 7
+  end
+  object cboCare: TORComboBox [8]
+    Left = 6
+    Top = 20
+    Width = 292
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnExit = ControlChange
+    OnMouseClick = ControlChange
+    OnNeedData = cboCareNeedData
+    CharsNeedMatch = 1
+  end
+  object calStart: TORDateBox [9]
+    Left = 6
+    Top = 114
+    Width = 140
+    Height = 21
+    TabOrder = 2
+    Text = 'Now'
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Start Date/Time'
+  end
+  object calStop: TORDateBox [10]
+    Left = 158
+    Top = 114
+    Width = 140
+    Height = 21
+    TabOrder = 3
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Stop Date/Time'
+  end
+  object txtComment: TCaptionEdit [11]
+    Left = 6
+    Top = 67
+    Width = 508
+    Height = 21
+    TabOrder = 1
+    OnChange = ControlChange
+    Caption = 'Instructions'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboCare'
+        'Status = stsDefault')
+      (
+        'Component = calStart'
+        'Status = stsDefault')
+      (
+        'Component = calStop'
+        'Status = stsDefault')
+      (
+        'Component = txtComment'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODMisc'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMisc.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMisc.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODMisc.pas	(revision 1676)
@@ -0,0 +1,125 @@
+unit fODMisc;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ORCtrls, ORDtTm, ComCtrls, ExtCtrls, ORFn, uConst,
+  VA508AccessibilityManager;
+
+type
+  TfrmODMisc = class(TfrmODBase)
+    cboCare: TORComboBox;
+    lblStart: TLabel;
+    calStart: TORDateBox;
+    lblStop: TLabel;
+    calStop: TORDateBox;
+    lblCare: TLabel;
+    lblComment: TLabel;
+    txtComment: TCaptionEdit;
+    procedure ControlChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboCareNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+  private
+    { }
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+var
+  frmODMisc: TfrmODMisc;
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase;
+
+const
+  TX_NO_CAREITEM = 'A patient care item must be selected.';
+  TX_BAD_START   = 'The start date is not valid.';
+  TX_BAD_STOP    = 'The stop date is not valid.';
+  TX_STOPSTART   = 'The stop date must be after the start date.';
+
+procedure TfrmODMisc.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FillerID := 'OR';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'OR GXMISC GENERAL';       // loads formatting info
+  StatusText('Loading Default Values');
+  //CtrlInits.LoadDefaults(ODForMisc);           // there are no defaults for OR GXMISC
+  InitDialog;
+  StatusText('');
+end;
+
+procedure TfrmODMisc.InitDialog;
+begin
+  inherited;
+  cboCare.InitLongList('');
+  txtComment.Text := '';
+end;
+
+procedure TfrmODMisc.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    Changing := True;
+    SetControl(cboCare,    'ORDERABLE', 1);
+    SetControl(txtComment, 'COMMENT',   1);
+    SetControl(calStart,   'START',     1);
+    SetControl(calStop,    'STOP',      1);
+    Changing := False;
+    ControlChange(Self);
+    SetFocusedControl(txtComment);
+  end;
+end;
+
+procedure TfrmODMisc.Validate(var AnErrMsg: string);
+var
+  ErrMsg: string;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  if cboCare.ItemIEN <= 0 then SetError(TX_NO_CAREITEM);
+  calStart.Validate(ErrMsg);
+  if Length(ErrMsg) > 0   then SetError(TX_BAD_START);
+  with calStop do
+  begin
+    Validate(ErrMsg);
+    if Length(ErrMsg) > 0 then SetError(TX_BAD_STOP);
+    if (Length(Text) > 0) and (FMDateTime <= calStart.FMDateTime)
+                          then SetError(TX_STOPSTART);
+  end; {with calStop}
+end;
+
+procedure TfrmODMisc.cboCareNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboCare.ForDataUse(SubSetOfOrderItems(StartFrom, Direction, 'S.NURS'));
+end;
+
+procedure TfrmODMisc.ControlChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  Responses.Clear;
+  with cboCare    do if ItemIEN > 0      then Responses.Update('ORDERABLE', 1, ItemID, Text);
+  with txtComment do if Length(Text) > 0 then Responses.Update('COMMENT',   1, Text,   Text);
+  with calStart   do if Length(Text) > 0 then Responses.Update('START',     1, Text,   Text);
+  with calStop    do if Length(Text) > 0 then Responses.Update('STOP',      1, Text,   Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRad.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRad.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRad.dfm	(revision 1676)
@@ -0,0 +1,636 @@
+inherited frmODRad: TfrmODRad
+  Tag = 160
+  Left = 282
+  Top = 225
+  Width = 586
+  Height = 404
+  Caption = 'Order an Imaging Procedure'
+  Constraints.MinHeight = 404
+  Constraints.MinWidth = 586
+  ExplicitLeft = 282
+  ExplicitTop = 225
+  ExplicitWidth = 586
+  ExplicitHeight = 404
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited memOrder: TCaptionMemo
+    Left = 0
+    Top = 326
+    Width = 490
+    Anchors = [akLeft, akRight, akBottom]
+    TabOrder = 6
+    ExplicitLeft = 0
+    ExplicitTop = 326
+    ExplicitWidth = 490
+  end
+  object FRadCommonCombo: TORListBox [1]
+    Left = 419
+    Top = 362
+    Width = 121
+    Height = 11
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 7
+    Visible = False
+    ItemTipColor = clWindow
+    LongList = False
+  end
+  object pnlLeft: TORAutoPanel [2]
+    Left = 0
+    Top = 0
+    Width = 215
+    Height = 321
+    Anchors = [akLeft, akTop, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblDrug: TLabel
+      Left = 0
+      Top = 34
+      Width = 89
+      Height = 13
+      Caption = 'Imaging Procedure'
+    end
+    object lblAvailMod: TLabel
+      Left = 0
+      Top = 170
+      Width = 88
+      Height = 13
+      Caption = 'Available Modifiers'
+    end
+    object lblImType: TLabel
+      Left = 0
+      Top = 0
+      Width = 64
+      Height = 13
+      Caption = 'Imaging Type'
+    end
+    object lblSelectMod: TLabel
+      Left = 109
+      Top = 170
+      Width = 87
+      Height = 13
+      Caption = 'Selected Modifiers'
+    end
+    object cboImType: TORComboBox
+      Left = 0
+      Top = 13
+      Width = 212
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Imaging Type'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnChange = cboImTypeChange
+      OnDropDownClose = cboImTypeDropDownClose
+      OnExit = cboImTypeExit
+      CharsNeedMatch = 1
+    end
+    object lstSelectMod: TORListBox
+      Left = 109
+      Top = 184
+      Width = 102
+      Height = 68
+      ExtendedSelect = False
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 3
+      Caption = 'Selected Modifiers'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object cboProcedure: TORComboBox
+      Left = 0
+      Top = 47
+      Width = 212
+      Height = 122
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Imaging Procedure'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      OnClick = cboProcedureSelect
+      OnExit = cboProcedureExit
+      OnNeedData = cboProcedureNeedData
+      CharsNeedMatch = 1
+    end
+    object cboAvailMod: TORComboBox
+      Left = 0
+      Top = 184
+      Width = 102
+      Height = 94
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Available Modifiers'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnKeyDown = cboAvailModKeyDown
+      OnMouseClick = cboAvailModMouseClick
+      CharsNeedMatch = 1
+    end
+    object cmdRemove: TButton
+      Left = 110
+      Top = 255
+      Width = 102
+      Height = 18
+      Caption = 'Remove'
+      TabOrder = 4
+      OnClick = cmdRemoveClick
+    end
+  end
+  inherited cmdAccept: TButton
+    Left = 497
+    Top = 326
+    Anchors = [akRight, akBottom]
+    TabOrder = 3
+    ExplicitLeft = 497
+    ExplicitTop = 326
+  end
+  object pnlRightBase: TORAutoPanel [4]
+    Left = 215
+    Top = 0
+    Width = 362
+    Height = 322
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    Caption = 'pnlRightBase'
+    TabOrder = 1
+    object pnlRight: TORAutoPanel
+      Left = 0
+      Top = 127
+      Width = 362
+      Height = 195
+      Align = alBottom
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      BevelOuter = bvNone
+      TabOrder = 1
+      object lblRequestDate: TLabel
+        Left = 4
+        Top = 5
+        Width = 62
+        Height = 13
+        Caption = 'Date Desired'
+      end
+      object lblUrgency: TLabel
+        Left = 104
+        Top = 5
+        Width = 40
+        Height = 13
+        Caption = 'Urgency'
+      end
+      object lblTransport: TLabel
+        Left = 204
+        Top = 5
+        Width = 45
+        Height = 13
+        Caption = 'Transport'
+      end
+      object lblCategory: TLabel
+        Left = 4
+        Top = 42
+        Width = 42
+        Height = 13
+        Caption = 'Category'
+      end
+      object lblSubmit: TLabel
+        Left = 154
+        Top = 42
+        Width = 48
+        Height = 13
+        Caption = 'Submit To'
+      end
+      object lblLastExam: TLabel
+        Left = 4
+        Top = 82
+        Width = 134
+        Height = 13
+        Caption = 'Exams Over the Last 7 Days'
+      end
+      object lblAskSubmit: TLabel
+        Left = 446
+        Top = 103
+        Width = 3
+        Height = 13
+        Visible = False
+      end
+      object lblPreOp: TLabel
+        Left = 198
+        Top = 156
+        Width = 84
+        Height = 13
+        Caption = 'PreOp Scheduled'
+      end
+      object calPreOp: TORDateBox
+        Left = 198
+        Top = 170
+        Width = 96
+        Height = 21
+        TabOrder = 8
+        OnChange = calPreOpChange
+        OnExit = calPreOpExit
+        DateOnly = False
+        RequireTime = False
+        Caption = 'PreOp Scheduled'
+      end
+      object chkIsolation: TCheckBox
+        Left = 198
+        Top = 94
+        Width = 97
+        Height = 17
+        Hint = 'Is patient on isolation procedures?'
+        Caption = 'Isolation'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+        OnClick = ControlChange
+        OnExit = chkIsolationExit
+      end
+      object calRequestDate: TORDateBox
+        Left = 4
+        Top = 18
+        Width = 92
+        Height = 21
+        TabOrder = 0
+        OnChange = ControlChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'Date Desired'
+      end
+      object cboUrgency: TORComboBox
+        Left = 104
+        Top = 18
+        Width = 92
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Urgency'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        OnChange = ControlChange
+        CharsNeedMatch = 1
+      end
+      object cboTransport: TORComboBox
+        Left = 204
+        Top = 18
+        Width = 92
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Transport'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 2
+        OnChange = ControlChange
+        CharsNeedMatch = 1
+      end
+      object cboCategory: TORComboBox
+        Left = 4
+        Top = 57
+        Width = 140
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Category'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 3
+        OnChange = cboCategoryChange
+        CharsNeedMatch = 1
+      end
+      object chkPreOp: TCheckBox
+        Left = 146
+        Top = 233
+        Width = 61
+        Height = 17
+        Caption = 'Pre-Op'
+        TabOrder = 9
+        Visible = False
+        OnClick = ControlChange
+      end
+      object cboSubmit: TORComboBox
+        Left = 154
+        Top = 57
+        Width = 142
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Submit To'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 4
+        OnChange = ControlChange
+        CharsNeedMatch = 1
+      end
+      object lstLastExam: TORListBox
+        Left = 4
+        Top = 95
+        Width = 187
+        Height = 98
+        Color = clBtnFace
+        ExtendedSelect = False
+        ItemHeight = 13
+        MultiSelect = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 5
+        Caption = 'Exams Over the Last 7 Days'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object grpPregnant: TGroupBox
+        Left = 196
+        Top = 112
+        Width = 158
+        Height = 41
+        Caption = 'Pregnant'
+        TabOrder = 7
+        object radPregnant: TRadioButton
+          Left = 2
+          Top = 17
+          Width = 39
+          Height = 17
+          Caption = 'Yes'
+          TabOrder = 0
+          OnClick = ControlChange
+        end
+        object radPregnantNo: TRadioButton
+          Left = 47
+          Top = 17
+          Width = 35
+          Height = 17
+          Caption = 'No'
+          TabOrder = 1
+          OnClick = ControlChange
+        end
+        object radPregnantUnknown: TRadioButton
+          Left = 87
+          Top = 16
+          Width = 66
+          Height = 17
+          Caption = 'Unknown'
+          TabOrder = 2
+          OnClick = ControlChange
+        end
+      end
+    end
+    object pnlHandR: TPanel
+      Left = 0
+      Top = 0
+      Width = 362
+      Height = 127
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblHistory: TLabel
+        Left = 0
+        Top = 34
+        Width = 362
+        Height = 13
+        Align = alTop
+        Caption = 'Clinical History (Optional)'
+        ExplicitWidth = 116
+      end
+      object lblReason: TLabel
+        Left = 0
+        Top = 0
+        Width = 362
+        Height = 13
+        Align = alTop
+        Caption = 'Reason for Study (REQUIRED - 64 characters maximum)'
+        ExplicitWidth = 268
+      end
+      object memHistory: TCaptionMemo
+        Left = 0
+        Top = 47
+        Width = 362
+        Height = 80
+        Align = alClient
+        ScrollBars = ssVertical
+        TabOrder = 3
+        OnChange = ControlChange
+        OnExit = memHistoryExit
+        Caption = 'Clinical History (Optional)'
+      end
+      object txtReason: TCaptionEdit
+        Left = 0
+        Top = 13
+        Width = 362
+        Height = 21
+        Align = alTop
+        MaxLength = 64
+        TabOrder = 0
+        OnChange = ControlChange
+        Caption = 'Reason for Study (REQUIRED)'
+      end
+    end
+  end
+  inherited cmdQuit: TButton
+    Left = 498
+    Top = 353
+    Anchors = [akRight, akBottom]
+    TabOrder = 4
+    ExplicitLeft = 498
+    ExplicitTop = 353
+  end
+  inherited pnlMessage: TPanel
+    Left = 5
+    Top = 318
+    Width = 408
+    Height = 55
+    TabOrder = 2
+    ExplicitLeft = 5
+    ExplicitTop = 318
+    ExplicitWidth = 408
+    ExplicitHeight = 55
+    inherited imgMessage: TImage
+      Left = 10
+      Top = 9
+      ExplicitLeft = 10
+      ExplicitTop = 9
+    end
+    inherited memMessage: TRichEdit
+      Left = 55
+      Width = 344
+      Height = 43
+      ExplicitLeft = 55
+      ExplicitWidth = 344
+      ExplicitHeight = 43
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = FRadCommonCombo'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = cboImType'
+        'Status = stsDefault')
+      (
+        'Component = lstSelectMod'
+        'Status = stsDefault')
+      (
+        'Component = cboProcedure'
+        'Status = stsDefault')
+      (
+        'Component = cboAvailMod'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = calPreOp'
+        'Status = stsDefault')
+      (
+        'Component = chkIsolation'
+        'Status = stsDefault')
+      (
+        'Component = calRequestDate'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = cboTransport'
+        'Status = stsDefault')
+      (
+        'Component = cboCategory'
+        'Status = stsDefault')
+      (
+        'Component = chkPreOp'
+        'Status = stsDefault')
+      (
+        'Component = cboSubmit'
+        'Status = stsDefault')
+      (
+        'Component = lstLastExam'
+        'Status = stsDefault')
+      (
+        'Component = grpPregnant'
+        'Status = stsDefault')
+      (
+        'Component = radPregnant'
+        'Status = stsDefault')
+      (
+        'Component = radPregnantNo'
+        'Status = stsDefault')
+      (
+        'Component = radPregnantUnknown'
+        'Status = stsDefault')
+      (
+        'Component = pnlHandR'
+        'Status = stsDefault')
+      (
+        'Component = memHistory'
+        'Status = stsDefault')
+      (
+        'Component = txtReason'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODRad'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRad.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRad.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRad.pas	(revision 1676)
@@ -0,0 +1,816 @@
+unit fODRad;
+
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, ORCtrls, fODBase, ORFn, ExtCtrls,
+  ComCtrls, uConst, ORDtTm, VA508AccessibilityManager;
+
+type
+  TfrmODRad = class(TfrmODBase)
+    lblDrug: TLabel;
+    cboProcedure: TORComboBox;
+    cboAvailMod: TORComboBox;
+    lblAvailMod: TLabel;
+    cmdRemove: TButton;
+    calRequestDate: TORDateBox;
+    cboUrgency: TORComboBox;
+    cboTransport: TORComboBox;
+    cboCategory: TORComboBox;
+    chkPreOp: TCheckBox;
+    cboSubmit: TORComboBox;
+    lstLastExam: TORListBox;
+    lblHistory: TLabel;
+    memHistory: TCaptionMemo;
+    lstSelectMod: TORListBox;
+    lblSelectMod: TLabel;
+    lblRequestDate: TLabel;
+    lblUrgency: TLabel;
+    lblTransport: TLabel;
+    lblCategory: TLabel;
+    lblSubmit: TLabel;
+    lblLastExam: TLabel;
+    lblAskSubmit: TLabel;
+    chkIsolation: TCheckBox;
+    FRadCommonCombo: TORListBox;
+    lblImType: TLabel;
+    cboImType: TORComboBox;
+    calPreOp: TORDateBox;
+    lblPreOp: TLabel;
+    pnlLeft: TORAutoPanel;
+    pnlRight: TORAutoPanel;
+    pnlHandR: TPanel;
+    grpPregnant: TGroupBox;
+    radPregnant: TRadioButton;
+    radPregnantNo: TRadioButton;
+    radPregnantUnknown: TRadioButton;
+    lblReason: TLabel;
+    txtReason: TCaptionEdit;
+    pnlRightBase: TORAutoPanel;
+    procedure cboProcedureNeedData(Sender: TObject;
+              const StartFrom: string; Direction, InsertAt: Integer);
+    procedure cboAvailModMouseClick(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cboProcedureSelect(Sender: TObject);
+    procedure SetModifierList;
+    procedure cboCategoryChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboImTypeChange(Sender: TObject);
+    procedure memHistoryExit(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure cboAvailModKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure calPreOpChange(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure cboProcedureExit(Sender: TObject);
+    procedure cboImTypeExit(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure chkIsolationExit(Sender: TObject);
+    procedure calPreOpExit(Sender: TObject);
+    procedure cboImTypeDropDownClose(Sender: TObject);
+  private
+    FLastRadID: string;
+    FEditCopy: boolean;
+    FPreOpDate: string;
+    FEvtDelayDiv: string;
+    FPredefineOrder: boolean;
+    ImageTypeChanged : boolean;
+    FFormFirstOpened: boolean;
+    function NoPregnantSelection : Boolean;
+    procedure ImageTypeChange;
+    procedure FormFirstOpened(Sender: TObject);
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+    procedure SetDefaultPregant;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase, rODRad, rOrders, uCore, rCore, fODRadApproval, fODRadConShRes, fLkUpLocation, fFrame,
+  uFormMonitor;
+
+const
+  TX_NO_PROC          = 'An Imaging Procedure must be specified.'    ;
+  TX_NO_MODE          = 'A mode of transport must be selected.';
+  TX_NO_REASON        = 'A Reason for Study must be entered.'  ;
+  TX_BAD_HISTORY      = 'An incomplete or invalid Clinical History has been entered.' + CRLF +
+                        'Please correct or clear.';
+  TX_NO_DATE          = 'A "Date Desired" must be specified.' ;
+  TX_BAD_DATE         = 'The "Date Desired" you have entered is invalid.';
+  TX_PAST_DATE        = '"Date Desired" must not be in the past.';
+  TX_APPROVAL_REQUIRED= 'This procedure requires Radiologist approval.' ;
+  TX_NO_SOURCE        = 'A source must be specified for Contract/Sharing/Research patients.';
+  TX_NO_AGREE         = 'There are no active agreements of the type specified.';
+  TX_NO_AGREE_CAP     = 'No Agreements on file';
+  TX_ORD_LOC          = 'Ordering location must be specified if patient type and order category do not match.';
+  TC_REQ_LOC          = 'Location Required';
+  TX_LOC_ORDER        = 'The selected location will be used to determine the ordering location ' +
+                        'when the patient location does not match the specified category.';
+  TX_NO_CATEGORY      = 'A category of examination must be specified.';
+  TX_NO_IMAGING_LOCATION = 'A  "Submit To"  location must be specified.';
+
+var
+  Radiologist, Contract, Research: string ;
+  AName, IsPregnant: string;
+  ALocation, AType: integer;
+  
+{ TfrmODBase common methods }
+
+procedure TfrmODRad.SetupDialog(OrderAction: Integer; const ID: string);
+var
+  tmpResp: TResponse;
+  i: integer;
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    if (OrderAction = ORDER_QUICK) or (OrderAction = ORDER_EDIT) or (OrderAction = ORDER_COPY) then
+      FPredefineOrder := True;
+    FEditCopy := True;
+    Changing := True;
+    with cboImType do
+      begin
+        FastAssign(SubsetOfImagingTypes, cboImType.Items);
+        for i := 0 to Items.Count-1 do
+          if StrToIntDef(Piece(Items[i],U,4), 0) = DisplayGroup then ItemIndex := i;
+        if OrderAction = ORDER_EDIT then
+        begin
+          Enabled := False;
+          Color := clBtnFace;
+        end;
+     end;
+    if Self.EvtID>0 then
+      FEvtDelayDiv := GetEventDiv1(IntToStr(Self.EvtID));
+    CtrlInits.LoadDefaults(ODForRad(Patient.DFN, FEvtDelayDiv, DisplayGroup));   // ODForRad returns TStrings with defaults
+    InitDialog;
+    SetControl(cboProcedure,       'ORDERABLE', 1);
+    Changing := True;
+    SetModifierList;
+    SetControl(cboUrgency,         'URGENCY', 1);
+    SetControl(cboTransport,       'MODE', 1);
+    SetControl(cboSubmit,          'IMLOC', 1);
+    SetControl(cboCategory,        'CLASS', 1);
+    SetControl(txtReason,           'REASON', 1);
+    SetControl(memHistory,         'COMMENT', 1);
+    SetControl(chkIsolation,       'YN', 1);
+    SetControl(radPregnant,        'PREGNANT', 1);
+    SetControl(calPreOp,           'PREOP', 1);
+    tmpResp := FindResponseByName('START',1);
+    if tmpResp <> nil then
+      begin
+        if ContainsAlpha(tmpResp.IValue) then
+          calRequestDate.Text := tmpResp.IValue
+        else
+          calRequestDate.FMDateTime := StrToFMDateTime(tmpResp.IValue);
+      end;
+    tmpResp := FindResponseByName('PROVIDER',1);
+    if tmpResp <> nil then with tmpResp do if Length(EValue)>0 then Radiologist := IValue + '^' + EValue;
+    if (cboCategory.ItemID = 'C') or (cboCategory.ItemID = 'S') then
+      begin
+        tmpResp := FindResponseByName('CONTRACT',1);
+        if tmpResp <> nil then with tmpResp do
+         if Length(EValue)>0 then
+          begin
+            Contract := IValue + '^' + EValue;
+            Research := '';
+          end;
+      end;
+    if cboCategory.ItemID = 'R' then
+      begin
+        tmpResp := FindResponseByName('RESEARCH',1);
+        if tmpResp <> nil then with tmpResp do
+         if Length(EValue)>0 then
+          begin
+            Research := EValue;
+            Contract := '';
+          end;
+      end;
+    //hds00007460
+    tmpResp := FindResponseByName('PREGNANT',1);
+    if tmpResp <> nil then
+       if Length(tmpResp.EValue)>0 then
+       begin
+          IsPregnant := tmpResp.EValue;
+          if IsPregnant = 'YES' then
+             radPregnant.Checked := True
+          else
+          if IsPregnant = 'NO' then
+             radPregnantNo.Checked := True
+          else
+          if IsPregnant = 'UNKNOWN' then
+             radPregnantUnknown.Checked := True;
+       end;
+    //hds00007460
+    Changing := False;
+    FEditCopy := False;
+    OrderMessage(ImagingMessage(cboProcedure.ItemIEN)) ;
+    ControlChange(Self);
+    FPredefineOrder := False;
+  end;
+end;
+
+procedure TfrmODRad.InitDialog;
+var
+   i: integer;
+   tmplst: TStringList;
+begin
+  if not FEditCopy then
+  begin
+    inherited;
+    if not ReasonForStudyCarryOn then txtReason.text := '';
+  end;
+
+  FPreOpDate := '';
+  FLastRadID := '';
+  Radiologist := '';
+  Contract := '';
+  Research := '';
+  ALocation := 0;
+  AName := '';
+  AType := 0;
+  FEvtDelayDiv := '';
+  if (Self.EvtID > 0 ) and (FEvtDelayDiv = '') then
+    FEvtDelayDiv := GetEventDiv1(IntToStr(Self.EvtID));
+  with CtrlInits do
+   begin
+    SetControl(cboProcedure, 'ShortList');
+    if cboProcedure.Items.Count > 0 then cboProcedure.InsertSeparator;
+    SetControl(FRadCommonCombo, 'Common Procedures');
+    for i := 0 to FRadCommonCombo.Items.Count-1 do
+      cboProcedure.Items.Add(FRadCommonCombo.Items[i]);
+    if FRadCommonCombo.Items.Count>0 then cboProcedure.InsertSeparator;
+
+    //calRequestDate.Text := 'TODAY';     default removed per E3R #19834 - v27.10 - RV
+    SetControl(cboAvailMod, 'Modifiers');
+    SetControl(cboUrgency, 'Urgencies');
+    SetControl(cboTransport, 'Transport');
+    with cboTransport do if OrderForInpatient
+      then SelectByID('W')
+      else SelectByID('A');
+    SetControl(cboCategory, 'Category');
+    with cboCategory do if OrderForInpatient
+      then SelectByID('I')
+      else SelectByID('O');
+    SetControl(cboSubmit, 'Submit to');
+    SetControl(lblAskSubmit,'Ask Submit') ;
+    if (cboSubmit.Items.Count = 0) then
+      begin
+        cboSubmit.ItemIndex := -1;
+        lblSubmit.Enabled := False;
+        cboSubmit.Enabled := False;
+        cboSubmit.Font.Color := clGrayText;
+      end
+    else if (lblAskSubmit.Caption = 'YES') then
+      begin
+        if (cboSubmit.Items.Count > 1) then
+          begin
+            tmplst := TStringList.Create;
+            try
+              FastAssign(cboSubmit.Items, tmplst);
+              SortByPiece(tmplst, U, 2);
+              FastAssign(tmplst, cboSubmit.Items);
+            finally
+              tmplst.Free;
+            end;
+            cboSubmit.ItemIndex := -1 ;
+            lblSubmit.Enabled := True;
+            cboSubmit.Enabled := True;
+            cboSubmit.Font.Color := clWindowText;
+          end
+        else
+          begin
+            cboSubmit.ItemIndex := 0;
+            lblSubmit.Enabled := False;
+            cboSubmit.Enabled := False;
+            cboSubmit.Font.Color := clGrayText;
+          end;
+      end
+    else if lblAskSubmit.Caption = 'NO' then
+      begin
+        if (cboSubmit.Items.Count = 1) then
+          cboSubmit.ItemIndex := 0
+        else
+          cboSubmit.ItemIndex := -1 ;
+        lblSubmit.Enabled := False;
+        cboSubmit.Enabled := False;
+        cboSubmit.Font.Color := clGrayText;
+      end;
+    chkIsolation.Checked := PatientOnIsolationProcedures(Patient.DFN) ;
+    SetControl(lstLastExam, 'Last 7 Days');
+   end;
+  lstSelectMod.Clear;
+  ControlChange(Self);
+  StatusText('Initializing Long List');
+  cboProcedure.InitLongList('') ;
+  StatusText('');
+  
+end;
+
+procedure TfrmODRad.ControlChange(Sender: TObject);
+var
+  i: integer ;
+begin
+  inherited;
+  if Changing then Exit;
+  Responses.Clear;
+  with cboProcedure do
+    if ItemIEN > 0 then Responses.Update('ORDERABLE', 1, ItemID, Text)
+    else Responses.Update('ORDERABLE', 1, ''    , '');
+  //with calRequestDate do if FMDateTime > 0 then     RPC call on EVERY character typed in REASON box!!!!  (v15)
+  with calRequestDate do if Length(Text) > 0 then
+    Responses.Update('START', 1, Text, Text)
+    else Responses.Update('START', 1, '', '') ;
+  with cboUrgency do if Length(ItemID)   > 0 then Responses.Update('URGENCY',   1, ItemID, Text);
+  with cboTransport do if Length(ItemID) > 0 then Responses.Update('MODE',      1, ItemID, Text);
+  with cboCategory do if Length(ItemID)  > 0 then Responses.Update('CLASS',     1, ItemID, Text);
+  with cboSubmit do if Length(ItemID)    > 0 then Responses.Update('IMLOC',     1, ItemID, Text);
+  with radPregnant do if Checked                then Responses.Update('PREGNANT',  1, 'Y'   , 'Yes')
+                 else if not Enabled         then Responses.Update('PREGNANT',  1, ''    , '');
+  with radPregnantNo do if Checked           then Responses.Update('PREGNANT',  1, 'N'   , 'No');
+  with radPregnantUnknown do if Checked      then Responses.Update('PREGNANT',  1, 'U'   , 'Unknown');
+  with chkIsolation do if Checked            then Responses.Update('YN',        1, '1'   , 'Yes')
+                                             else Responses.Update('YN',        1, '0'   , 'No');
+  with calPreOp do if Length(Text) > 0       then Responses.Update('PREOP',     1, FPreOpDate, Text);
+  with txtReason  do if GetTextLen        > 0 then Responses.Update('REASON',    1, Text, Text);
+  with memHistory do if GetTextLen       > 0 then Responses.Update('COMMENT',   1, TX_WPTYPE, Text);
+  with lstSelectMod do for i := 0 to Items.Count - 1 do
+                                                  Responses.Update('MODIFIER',i+1, Piece(Items[i],U,1), Piece(Items[i],U,2));
+  Responses.Update('PROVIDER',1, Piece(Radiologist,U,1),Piece(Radiologist,U,2)) ;
+  Responses.Update('CONTRACT',1, Piece(Contract,U,1),Piece(Contract,U,2)) ;
+  Responses.Update('RESEARCH',1, Research, Research) ;
+  if ALocation > 0 then  Responses.Update('LOCATION', 1, IntToStr(ALocation), AName)
+  else with Encounter do Responses.Update('LOCATION', 1, IntToStr(Location) , LocationName);
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODRad.Validate(var AnErrMsg: string);
+var
+  i, j: integer;
+  AskLoc: boolean;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+  procedure GetOrderingLocation(AType: integer);
+  begin
+    ALocation := 0;
+    AName := '';
+    LookupLocation(ALocation, AName, AType, TX_LOC_ORDER);
+    if ALocation = 0 then
+      begin
+        SetError(TX_ORD_LOC);
+        if OrderForInpatient then cboCategory.SelectByID('I') else cboCategory.SelectByID('O');
+        with Encounter do Responses.Update('LOCATION', 1, IntToStr(Location) , LocationName);
+      end
+    else
+      Responses.Update('LOCATION', 1, IntToStr(ALocation), AName);
+  end;
+
+begin
+  inherited ;
+  with cboProcedure do
+    begin
+      if ((Length(Text) = 0) or (ItemIEN <= 0)) then SetError(TX_NO_PROC)
+      else
+        begin
+          if ItemID <> FLastRadID then Responses.Update('PROVIDER',1, '','');
+          if (UpperCase(Piece(Items[ItemIndex],U,4))='Y') and (Radiologist='') then
+           begin
+             SelectApprovingRadiologist(Font.Size, Radiologist);
+             if Radiologist='' then  SetError(TX_APPROVAL_REQUIRED)
+             else
+               Responses.Update('PROVIDER',1, Piece(Radiologist,U,1),Piece(Radiologist,U,2)) ;
+           end ;
+        end ;
+    end;
+
+  if Length(txtReason.Text) < 3 then
+    SetError(TX_NO_REASON)
+  else
+    begin
+      j := 0;
+      for i := 1 to Length(txtReason.Text) do
+        begin
+          if txtReason.Text[i] in ['A'..'Z','a'..'z','0'..'9'] then j := j + 1;
+          if not (txtReason.Text[i] in ['A'..'Z','a'..'z','0'..'9']) and (j > 0) then j := 0;
+          if j = 2 then break;
+        end;
+      if j < 2 then SetError(TX_NO_REASON);
+    end;
+
+  if Length(memHistory.Text) > 0 then
+  begin
+    j := 0;
+    for i := 1 to Length(memHistory.Text) do
+      begin
+        if memHistory.Text[i] in ['A'..'Z','a'..'z','0'..'9'] then j := j + 1;
+        if not (memHistory.Text[i] in ['A'..'Z','a'..'z','0'..'9']) and (j > 0) then j := 0;
+        if j = 2 then break;
+      end;
+    if j < 2 then SetError(TX_BAD_HISTORY);
+  end;
+
+  with cboCategory do
+    begin
+      AskLoc := (ALocation = 0);
+      if ((not Patient.Inpatient) and (Self.EvtType = 'A')) then
+        AskLoc := False;
+      if ItemID = '' then SetError(TX_NO_CATEGORY);
+      if (CharAt(ItemID,1) in ['C','S']) and (Contract = '') then SetError(TX_NO_SOURCE);
+      if (CharAt(ItemID, 1) = 'R')       and (Research = '') then SetError(TX_NO_SOURCE);
+      if ((CharAt(ItemID, 1) = 'O') and (LocationType(Encounter.Location) = 'W')) then
+      begin
+        if AskLoc then
+          GetOrderingLocation(LOC_OUTP);
+      end
+      else if ((CharAt(ItemID, 1) = 'I') and (not (LocationType(Encounter.Location) = 'W'))) then
+      begin
+        if AskLoc then
+          GetOrderingLocation(LOC_INP);
+      end;
+    end;
+  if Length(cboTransport.Text) = 0 then SetError(TX_NO_MODE);
+
+  with cboSubmit do
+    if Enabled and (ItemIEN = 0)then SetError(TX_NO_IMAGING_LOCATION);
+
+  with calRequestDate do
+  begin
+    if FMDateTime = 0 then
+      SetError(TX_NO_DATE)
+    else if FMDateTime < 0 then
+      SetError(TX_BAD_DATE)
+    else if FMDateTime < FMToday then
+      SetError(TX_PAST_DATE);
+  end;
+
+end;
+
+procedure TfrmODRad.cboProcedureNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+
+begin
+  inherited ;
+  cboProcedure.ForDataUse(SubSetOfRadProcs(DisplayGroup, StartFrom, Direction));
+ end;
+
+procedure TfrmODRad.cboAvailModMouseClick(Sender: TObject);
+var
+  x: string;
+  i: integer;
+  Found: boolean;
+begin
+  if (cboAvailMod.Items.Count < 1) or  //GE 04-30-05 prevent list index out of bounds when empty
+     (cboAvailMod.ItemIndex < 0) then Exit;
+  Found := False;
+  with cboAvailMod do x := Items[ItemIndex];
+  with lstSelectMod do
+    begin
+      if Items.Count > 0 then
+        for i := 0 to Items.Count - 1 do
+          if Items[i] = x then Found := True;
+      if not Found then
+        begin
+          Items.Add(x);
+          SelectByID(Piece(x, U, 1));
+        end;
+    end;
+  if Piece(x, '^', 2) = 'PORTABLE EXAM' then
+    cboTransport.SelectByID('P');
+  ControlChange(Sender);
+end;
+
+procedure TfrmODRad.cmdRemoveClick(Sender: TObject);
+begin
+  with lstSelectMod do
+     if (SelCount = 0) or (ItemIndex < 0) then exit
+     else
+      begin
+       if Piece(Items[ItemIndex], U, 2) = 'PORTABLE EXAM' then
+         with cboTransport do if OrderForInpatient
+           then SelectByID('W')
+           else SelectByID('A');
+       Items.Delete(ItemIndex);
+       ItemIndex := Items.Count - 1;
+       if ItemIndex > -1 then SelectByID(Piece(Items[ItemIndex], U, 1));
+      end ;
+  ControlChange(Sender);
+end;
+
+procedure TfrmODRad.cboProcedureSelect(Sender: TObject);
+var
+  tmpResp: TResponse;
+begin
+  inherited;
+  with cboProcedure do
+   begin
+    if ItemID <> FLastRadID then
+     begin
+       FLastRadID := ItemID;
+       if FPredefineOrder then
+         FPredefineOrder := False;
+     end else Exit;
+    Changing := True;
+    if Sender <> Self then
+      Responses.Clear;       // Sender=Self when called from SetupDialog
+    ClearControl(lstSelectMod);
+    ClearControl(lstLastExam);
+    //ClearControl(memHistory);    {WPB-1298-30758}
+    Changing := False;
+    if CharAt(ItemID, 1) = 'Q' then
+     with Responses do
+       begin
+         QuickOrder := ExtractInteger(ItemID);
+         //SetControl(cboProcedure, 'ORDERABLE', 1);   //v22.9 - RV
+         //SetModifierList;                            //v22.9 - RV
+         FLastRadID := ItemID;
+       end;
+   end;
+   with Responses do if QuickOrder > 0 then
+   begin
+    Changing := True;
+    SetControl(cboProcedure,       'ORDERABLE', 1);
+    SetModifierList;                                   //v22.9 - RV
+    SetControl(lstSelectMod,       'MODIFIER', 1);
+    SetControl(cboUrgency,         'URGENCY', 1);
+    SetControl(cboSubmit,          'IMLOC', 1);
+    SetControl(cboTransport,       'MODE', 1);
+    SetControl(cboCategory,        'CLASS', 1);
+    SetControl(txtReason,           'REASON', 1);
+    SetControl(memHistory,         'COMMENT', 1);
+    SetControl(chkIsolation,       'YN', 1);
+    SetControl(radPregnant,        'PREGNANT', 1);
+    SetControl(calPreOp   ,        'PREOP', 1);
+    tmpResp := FindResponseByName('START',1);
+    if tmpResp <> nil then
+      begin
+        if ContainsAlpha(tmpResp.IValue) then
+          calRequestDate.Text := tmpResp.IValue
+        else
+          calRequestDate.FMDateTime := StrToFMDateTime(tmpResp.IValue);
+      end;
+    Changing := False;
+   end;
+  OrderMessage(ImagingMessage(cboProcedure.ItemIEN)) ;
+  ControlChange(Self);
+end;
+
+procedure TfrmODRad.SetModifierList;
+var
+  i: integer;
+  tmpResp: TResponse;
+begin
+  i := 1;
+  tmpResp := Responses.FindResponseByName('MODIFIER',i);
+  while tmpResp <> nil do
+    begin
+      lstSelectMod.Items.Add(tmpResp.IValue + '^' + tmpResp.EValue);
+      if tmpResp.EValue = 'PORTABLE EXAM' then
+        with cboTransport do SelectByID('P'); 
+      Inc(i);
+      tmpResp := Responses.FindResponseByName('MODIFIER',i);
+    end ;
+end;
+
+procedure TfrmODRad.cboCategoryChange(Sender: TObject);
+var
+  Source: string;
+begin
+  inherited;
+  if Contract <> '' then Source := Contract
+  else if Research <> '' then Source := Research
+  else Source := '';
+  Contract := '';
+  Research := '';
+  with cboCategory do
+    begin
+      if CharAt(ItemID,1) in ['C','S','R'] then
+        begin
+          SelectSource(Font.Size, CharAt(ItemID,1), Source);
+          if Source = '-1' then
+            InfoBox(TX_NO_AGREE, TX_NO_AGREE_CAP, MB_OK or MB_ICONWARNING)
+          else if CharAt(ItemID,1) in ['C','S'] then
+            Contract := Source
+          else if ItemID='R' then
+            Research := Source;
+        end;
+    end;
+  ControlChange(Self);
+end;
+
+procedure TfrmODRad.FormCreate(Sender: TObject);
+begin
+  FFormFirstOpened := TRUE;
+  ImageTypeChanged := false;
+  frmFrame.pnlVisit.Enabled := false;
+  AutoSizeDisabled := True;
+  inherited;
+  memHistory.Width := pnlHandR.ClientWidth;
+  memHistory.Height := pnlHandR.ClientHeight - memHistory.Top;
+  FillerID := 'RA';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Clear;
+  DisplayGroup := 0;
+  AllowQuickOrder := True;
+  Responses.Dialog := 'RA OERR EXAM';              // loads formatting info
+  StatusText('Loading Default Values');
+  FastAssign(SubsetOfImagingTypes, cboImType.Items);
+  if Self.EvtID>0 then
+    FEvtDelayDiv := GetEventDiv1(IntToStr(Self.EvtID));
+  PreserveControl(cboImType);
+  PreserveControl(calRequestDate);
+  PreserveControl(cboUrgency);
+  PreserveControl(cboTransport);
+  PreserveControl(cboSubmit);
+  PreserveControl(cboCategory);
+  PreserveControl(calPreOp);
+  PreserveControl(txtReason);
+  PreserveControl(memHistory);      {WPB-1298-30758}
+  if (Patient.Sex <> 'F') then
+  begin
+    radPregnant.Enabled := False;
+    radPregnantNo.Enabled := False;
+    radPregnantUnknown.Enabled := False;
+  end else SetDefaultPregant;
+  FormMonitorBringToFrontEvent(Self, FormFirstOpened);
+end;
+
+{Assigned to cbolmType.OnDropDownClose and cbolmType.OnExit, instead of
+ cbolmType.OnChange, becuase when it is OnChange the delay interfers with
+ Window-Eyes ability to read the drop-down Items.}
+procedure TfrmODRad.cboImTypeChange(Sender: TObject);
+begin
+  inherited;
+  ImageTypeChanged := true;
+end;
+
+procedure TfrmODRad.memHistoryExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    FastAssign(memHistory.Lines, AStringList);
+    LimitStringLength(AStringList, 74);
+    FastAssign(AstringList, memHistory.Lines);
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure TfrmODRad.FormResize(Sender: TObject);
+begin
+  inherited;
+  memHistory.Width := pnlHandR.ClientWidth;
+  memHistory.Height := pnlHandR.ClientHeight - memHistory.Top;
+end;
+
+procedure TfrmODRad.cboAvailModKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then cboAvailModMouseClick(Self);
+end;
+
+procedure TfrmODRad.calPreOpChange(Sender: TObject);
+begin
+  inherited;
+  FPreOpDate := FloatToStr(calPreOp.FMDateTime);
+  ControlChange(Self);
+end;
+
+procedure TfrmODRad.SetDefaultPregant;
+begin
+  if (Patient.Sex = 'F') and ((Patient.Age > 55) or (Patient.Age < 12)) then
+    radPregnantNo.Checked := True;
+end;
+
+procedure TfrmODRad.cmdAcceptClick(Sender: TObject);
+const
+  Txt1 = 'This order can not be saved for the following reason(s):';
+  Txt2 = #13+#13+'A response for the pregnant field must be selected.';
+var
+  NeedCheckPregnant: boolean;
+begin
+  if Patient.Sex = 'F' then
+  begin
+    NeedCheckPregnant := True;
+    if radPregnant.Checked then NeedCheckPregnant := False
+    else if radPregnantNo.Checked then NeedCheckPregnant := False
+    else if radPregnantUnknown.Checked then NeedCheckPregnant := False;
+    if NeedCheckPregnant then
+    begin
+      MessageDlg(Txt1+Txt2, mtWarning,[mbOK],0);
+      Exit;
+    end;
+  end;
+  inherited;
+end;
+
+procedure TfrmODRad.cboProcedureExit(Sender: TObject);
+var
+  i: integer;
+  ModList: TStringList;
+begin
+  inherited;
+  ModList := TStringList.Create;
+  if lstSelectMod.Items.Count > 0 then
+    for i := 0 to lstSelectMod.Count - 1 do
+      ModList.Add(lstSelectMod.Items[i]);
+  cboProcedureSelect(Self);
+  for i := 0 to ModList.Count - 1 do
+  begin
+    lstSelectMod.Items.Add(ModList[i]);
+    lstSelectMod.SelectByID(Piece(ModList[i],U,1));
+  end;
+  with lstSelectMod do
+    for i := 0 to Items.Count - 1 do
+      Responses.Update('MODIFIER',i+1, Piece(Items[i],U,1), Piece(Items[i],U,2));
+end;
+
+
+procedure TfrmODRad.cboImTypeExit(Sender: TObject);
+begin
+  inherited;
+  ImageTypeChange;
+end;
+
+procedure TfrmODRad.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  frmFrame.pnlVisit.Enabled := true;
+  FormMonitorBringToFrontEvent(Self, nil);
+end;
+
+procedure TfrmODRad.chkIsolationExit(Sender: TObject);
+begin
+  inherited;
+  //Fix for CQ: 10025
+  if TabIsPressed() then
+    if NoPregnantSelection() then
+      if radPregnant.CanFocus then
+        radPregnant.SetFocus();
+end;
+
+procedure TfrmODRad.calPreOpExit(Sender: TObject);
+begin
+  inherited;
+  //Fix for CQ: 10025
+  if ShiftTabIsPressed() then
+    if NoPregnantSelection() then
+      if radPregnant.CanFocus then
+        radPregnant.SetFocus();
+end;
+
+function TfrmODRad.NoPregnantSelection : Boolean;
+begin
+  result := not ((radPregnant.Checked) or (radPregnantNo.Checked) or (radPregnantUnknown.Checked));
+end;
+
+procedure TfrmODRad.cboImTypeDropDownClose(Sender: TObject);
+begin
+  inherited;
+  ImageTypeChange;
+end;
+
+procedure TfrmODRad.ImageTypeChange;
+begin
+  if not ImageTypeChanged then Exit;
+  ImageTypeChanged := false;
+  if FPredefineOrder then
+    FPredefineOrder := False;
+  if Changing or (cboImtype.ItemIndex = -1) then exit;
+  with cboImType do DisplayGroup := StrToIntDef(Piece(Items[ItemIndex], U, 4), 0) ;
+  if DisplayGroup = 0 then exit;
+  CtrlInits.LoadDefaults(ODForRad(Patient.DFN, FEvtDelayDiv, DisplayGroup));   // ODForRad returns TStrings with defaults
+  FPredefineOrder := False;
+  InitDialog;
+end;
+
+procedure TfrmODRad.FormFirstOpened(Sender: TObject);
+begin
+  if(FFormFirstOpened) then
+  begin
+    FFormFirstOpened := FALSE;
+    with cboImType do
+      if not FEditCopy and (ItemIEN = 0) and (DroppedDown = False) and (Application.Active) then
+      begin
+        cboImType.DroppedDown := TRUE;
+      end;
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadApproval.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadApproval.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadApproval.dfm	(revision 1676)
@@ -0,0 +1,91 @@
+inherited frmODRadApproval: TfrmODRadApproval
+  Left = 295
+  Top = 167
+  BorderStyle = bsDialog
+  Caption = 'Select Approving Radiologist'
+  ClientHeight = 262
+  ClientWidth = 259
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 259
+    Height = 262
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object SrcLabel: TLabel
+      Left = 12
+      Top = 14
+      Width = 98
+      Height = 13
+      Caption = 'Select or enter name'
+    end
+    object cmdOK: TButton
+      Left = 52
+      Top = 227
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 132
+      Top = 226
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+    object cboRadiologist: TORComboBox
+      Left = 13
+      Top = 31
+      Width = 234
+      Height = 185
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Select or enter name'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 0
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboRadiologist'
+        'Status = stsDefault')
+      (
+        'Component = frmODRadApproval'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadApproval.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadApproval.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadApproval.pas	(revision 1676)
@@ -0,0 +1,78 @@
+unit fODRadApproval;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
+  Buttons, ORCtrls, ORfn, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODRadApproval = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboRadiologist: TORComboBox;
+    SrcLabel: TLabel;
+    pnlBase: TORAutoPanel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    FRadiologist: string ;
+    FChanged: Boolean;
+  end;
+
+procedure SelectApprovingRadiologist(FontSize: Integer; var Radiologist: string) ;
+
+implementation
+
+{$R *.DFM}
+
+uses rODRad, rCore, uCore;
+
+const
+  TX_RAD_TEXT = 'Select radiologist or press Cancel.';
+  TX_RAD_CAP = 'No Radiologist Selected';
+
+procedure SelectApprovingRadiologist(FontSize: Integer; var Radiologist: string);
+{ displays radiologist selection form and returns a record of the selection }
+var
+  frmODRadApproval: TfrmODRadApproval;
+  W, H: Integer;
+begin
+  frmODRadApproval := TfrmODRadApproval.Create(Application);
+  try
+    with frmODRadApproval do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      FastAssign(SubsetOfRadiologists, cboRadiologist.Items);
+      ShowModal;
+      Radiologist := FRadiologist ;
+    end; {with frmODRadApproval}
+  finally
+    frmODRadApproval.Release;
+  end;
+end;
+
+procedure TfrmODRadApproval.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmODRadApproval.cmdOKClick(Sender: TObject);
+begin
+  if cboRadiologist.ItemIEN = 0 then
+  begin
+    InfoBox(TX_RAD_TEXT, TX_RAD_CAP, MB_OK or MB_ICONWARNING);
+    FChanged := False ;
+    Exit;
+  end;
+  FChanged := True;
+  FRadiologist := cboRadiologist.Items[cboRadiologist.ItemIndex] ;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadConShRes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadConShRes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadConShRes.dfm	(revision 1676)
@@ -0,0 +1,104 @@
+inherited frmODRadConShRes: TfrmODRadConShRes
+  Left = 308
+  Top = 206
+  ActiveControl = txtResearch
+  BorderStyle = bsDialog
+  Caption = 'Contract/Sharing/Research Source'
+  ClientHeight = 121
+  ClientWidth = 288
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 288
+    Height = 121
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object SrcLabel: TLabel
+      Left = 12
+      Top = 14
+      Width = 107
+      Height = 13
+      Caption = 'Select or enter source:'
+    end
+    object cmdOK: TButton
+      Left = 58
+      Top = 74
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 139
+      Top = 74
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+    object cboSource: TORComboBox
+      Left = 14
+      Top = 31
+      Width = 262
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Select or enter source:'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 0
+      CharsNeedMatch = 1
+    end
+    object txtResearch: TCaptionEdit
+      Left = 12
+      Top = 31
+      Width = 261
+      Height = 21
+      MaxLength = 40
+      TabOrder = 1
+      Caption = 'Select or enter source:'
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboSource'
+        'Status = stsDefault')
+      (
+        'Component = txtResearch'
+        'Status = stsDefault')
+      (
+        'Component = frmODRadConShRes'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadConShRes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadConShRes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadConShRes.pas	(revision 1676)
@@ -0,0 +1,121 @@
+unit fODRadConShRes;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
+  Buttons, ORCtrls, ORfn, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODRadConShRes = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboSource: TORComboBox;
+    SrcLabel: TLabel;
+    pnlBase: TORAutoPanel;
+    txtResearch: TCaptionEdit;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    FSource: string  ;
+    FChanged: Boolean;
+  end;
+
+procedure SelectSource(FontSize: Integer; SrcType: char; var Source: string) ;
+
+implementation
+
+{$R *.DFM}
+
+uses rODRad, rCore, uCore;
+
+const
+  TX_CS_TEXT = 'Select Source, or press Cancel.';
+  TX_CS_CAP = 'No Source';
+  TX_R_TEXT = 'Enter Source (3-40 characters), or press Cancel.';
+  TX_R_CAP = 'No Source';
+
+procedure SelectSource(FontSize: Integer; SrcType: char; var Source: string) ;
+{ displays Source entry/selection form and returns a record of the selection }
+var
+  frmODRadConShRes: TfrmODRadConShRes;
+  W, H: Integer;
+begin
+  frmODRadConShRes := TfrmODRadConShRes.Create(Application);
+  try
+    with frmODRadConShRes do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      if SrcType in ['C','S'] then with cboSource do
+         begin
+           FastAssign(SubsetOfRadSources(SrcType), cboSource.Items);
+           if Items.Count > 0 then
+            begin
+             txtResearch.Enabled := False;
+             Enabled := True;
+             SelectByID(Piece(Source,U,1));
+             BringToFront;
+             ShowModal;
+            end
+           {else if Items.Count = 1 then
+             FSource := Items[0]}
+           else
+             FSource := '-1';
+         end
+      else if SrcType = 'R' then
+        begin
+          cboSource.Enabled := False;
+          txtResearch.BringToFront;
+          txtResearch.Text := Source;
+          ShowModal;
+          FSource := txtResearch.Text;
+        end;
+      Source:= FSource ;
+    end; {frmODRadConShRes}
+  finally
+    frmODRadConShRes.Release;
+  end;
+end;
+
+procedure TfrmODRadConShRes.cmdCancelClick(Sender: TObject);
+begin
+  FChanged := False ;
+  FSource := '';
+  Close;
+end;
+
+procedure TfrmODRadConShRes.cmdOKClick(Sender: TObject);
+begin
+ if cboSource.Enabled then with cboSource do
+  begin
+   if ItemIEN = 0 then
+    begin
+     InfoBox(TX_CS_TEXT, TX_CS_CAP, MB_OK or MB_ICONWARNING);
+     FChanged := False ;
+     FSource := '';
+     Exit;
+    end;
+   FChanged := True;
+   FSource := Items[ItemIndex];
+  end
+ else
+  begin
+   if (Length(txtResearch.Text)<3) or (Length(txtResearch.Text)> 40) then
+    begin
+     InfoBox(TX_R_TEXT, TX_R_CAP, MB_OK or MB_ICONWARNING);
+     FChanged := False ;
+     FSource := '';
+     Exit;
+    end ;
+   FChanged := True;
+   FSource := txtResearch.Text;
+  end;
+ Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadImType.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadImType.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadImType.dfm	(revision 1676)
@@ -0,0 +1,93 @@
+inherited frmODRadImType: TfrmODRadImType
+  Left = 308
+  Top = 206
+  BorderStyle = bsDialog
+  Caption = 'Select Imaging Type'
+  ClientHeight = 189
+  ClientWidth = 259
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 259
+    Height = 189
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object SrcLabel: TLabel
+      Left = 12
+      Top = 14
+      Width = 145
+      Height = 16
+      AutoSize = False
+      Caption = 'Select or enter imaging type'
+    end
+    object cmdOK: TButton
+      Left = 57
+      Top = 151
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 138
+      Top = 151
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+    object cboImType: TORComboBox
+      Left = 14
+      Top = 31
+      Width = 234
+      Height = 103
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Select or enter imaging type'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnDblClick = cboImTypeDblClick
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboImType'
+        'Status = stsDefault')
+      (
+        'Component = frmODRadImType'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadImType.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadImType.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODRadImType.pas	(revision 1676)
@@ -0,0 +1,92 @@
+unit fODRadImType;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
+  Buttons, ORCtrls, ORfn, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmODRadImType = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboImType: TORComboBox;
+    SrcLabel: TLabel;
+    pnlBase: TORAutoPanel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboImTypeDblClick(Sender: TObject);
+  private
+    FImagingType: string  ;
+    FChanged: Boolean;
+  end;
+
+procedure SelectImagingType(FontSize: Integer; var ImagingType: string) ;
+
+implementation
+
+{$R *.DFM}
+
+uses rODRad, rCore, uCore;
+
+const
+  TX_RAD_TEXT = 'Select imaging type or press Cancel.';
+  TX_RAD_CAP = 'No imaging type Selected';
+
+procedure SelectImagingType(FontSize: Integer; var ImagingType: string) ;
+{ displays imaging type selection form and returns a record of the selection }
+var
+  frmODRadImType: TfrmODRadImType;
+  W, H: Integer;
+begin
+  frmODRadImType := TfrmODRadImType.Create(Application);
+  try
+    with frmODRadImType do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      FastAssign(SubsetOfImagingTypes, cboImType.Items);
+      if cboImType.Items.Count > 1 then
+         ShowModal
+      else
+         FImagingType := cboImType.Items[0] ;
+      ImagingType:= FImagingType ;
+    end; {with frmODRadImType}
+  finally
+    frmODRadImType.Release;
+  end;
+end;
+
+procedure TfrmODRadImType.cmdCancelClick(Sender: TObject);
+begin
+  FImagingType := '-1';
+  Close;
+end;
+
+procedure TfrmODRadImType.cmdOKClick(Sender: TObject);
+begin
+ with cboImType do
+  begin
+   if ItemIEN = 0 then
+    begin
+     InfoBox(TX_RAD_TEXT, TX_RAD_CAP, MB_OK or MB_ICONWARNING);
+     FChanged := False ;
+     FImagingType := '-1';
+     Exit;
+    end;
+   FChanged := True;
+   FImagingType := Items[ItemIndex];
+   Close;
+  end ;
+end;
+
+procedure TfrmODRadImType.cboImTypeDblClick(Sender: TObject);
+begin
+  cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODReleaseEvent.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODReleaseEvent.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODReleaseEvent.dfm	(revision 1676)
@@ -0,0 +1,100 @@
+inherited frmOrdersReleaseEvent: TfrmOrdersReleaseEvent
+  Left = 410
+  Top = 145
+  Caption = 'Release to Service'
+  ClientHeight = 461
+  ClientWidth = 486
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 494
+  ExplicitHeight = 488
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblRelease: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 486
+    Height = 13
+    Align = alTop
+    Layout = tlCenter
+    WordWrap = True
+    ExplicitWidth = 3
+  end
+  object pnlMiddle: TPanel [1]
+    Left = 0
+    Top = 13
+    Width = 486
+    Height = 413
+    Align = alClient
+    TabOrder = 0
+    object cklstOrders: TCaptionCheckListBox
+      Left = 1
+      Top = 1
+      Width = 484
+      Height = 411
+      Align = alClient
+      ItemHeight = 16
+      ParentShowHint = False
+      ShowHint = True
+      Style = lbOwnerDrawVariable
+      TabOrder = 0
+      OnDrawItem = cklstOrdersDrawItem
+      OnMeasureItem = cklstOrdersMeasureItem
+      OnMouseMove = cklstOrdersMouseMove
+    end
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 426
+    Width = 486
+    Height = 35
+    Align = alBottom
+    TabOrder = 1
+    DesignSize = (
+      486
+      35)
+    object btnOK: TButton
+      Left = 324
+      Top = 8
+      Width = 69
+      Height = 20
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 404
+      Top = 8
+      Width = 69
+      Height = 20
+      Anchors = [akTop, akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = cklstOrders'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOrdersReleaseEvent'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODReleaseEvent.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODReleaseEvent.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODReleaseEvent.pas	(revision 1676)
@@ -0,0 +1,294 @@
+unit fODReleaseEvent;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORFn, CheckLst, ORCtrls, fAutoSz, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOrdersReleaseEvent = class(TfrmBase508Form)
+    pnlMiddle: TPanel;
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    cklstOrders: TCaptionCheckListBox;
+    lblRelease: TLabel;
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cklstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure cklstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure cklstOrdersMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+  private
+    { Private declarations }
+    OKPressed: boolean;
+    FLastHintItem: integer;
+    FOldHintPause: integer;
+    FOldHintHidePause: integer;
+    FComplete: boolean;
+    FCurrTS: string;
+  public
+    { Public declarations }
+    property CurrTS: string       read FCurrTS    write FCurrTS;
+  end;
+
+//procedure ExecuteReleaseEventOrders(AnOrderList: TList);
+function ExecuteReleaseEventOrders(AnOrderList: TList): boolean;
+
+implementation
+{$R *.DFM}
+
+uses rCore, rOrders, uConst, fOrdersPrint, uCore, uOrders, fOrders, rODLab, fRptBox,
+  VAUtils;
+
+const
+  TX_SAVERR1 = 'The error, ';
+  TX_SAVERR2 = ', occurred while trying to release:' + CRLF + CRLF;
+  TC_SAVERR  = 'Error Saving Order';
+
+//procedure ExecuteReleaseEventOrders(AnOrderList: TList);
+function ExecuteReleaseEventOrders(AnOrderList: TList): boolean;
+const
+  TXT_RELEASE = #13 + #13 + '  The following orders will be released to service:';
+var
+  i,j,idx: integer;
+  AOrder: TOrder;
+  OrdersLst: TStringlist;
+  OrderText, LastCheckedPtEvt, SpeCap: string;
+  frmOrdersReleaseEvent: TfrmOrdersReleaseEvent;
+  AList: TStringList;
+
+  function FindOrderText(const AnID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    with AnOrderList do for i := 0 to Count - 1 do
+      with TOrder(Items[i]) do if ID = AnID then
+      begin
+        Result := Text;
+        Break;
+      end;
+  end;
+
+begin
+  frmOrdersReleaseEvent := TfrmOrdersReleaseEvent.Create(Application);
+  try
+    frmOrdersReleaseEvent.CurrTS := Piece(GetCurrentSpec(Patient.DFN),'^',1);
+    if Length(frmOrdersReleaseEvent.CurrTS)>0 then
+      SpeCap := #13 + '  The current treating specialty is ' + frmOrdersReleaseEvent.CurrTS
+    else
+      SpeCap := #13 + '  No treating specialty is available.';
+    ResizeFormToFont(TForm(frmOrdersReleaseEvent));
+    if Patient.Inpatient then
+      frmOrdersReleaseEvent.lblRelease.Caption := '  ' + Patient.Name + ' is currently admitted to '
+         + Encounter.LocationName + SpeCap + TXT_RELEASE
+    else
+    begin
+      if Encounter.Location > 0 then
+        frmOrdersReleaseEvent.lblRelease.Caption := '  ' + Patient.Name + ' is currently at '
+          + Encounter.LocationName + SpeCap + TXT_RELEASE
+      else
+        frmOrdersReleaseEvent.lblRelease.Caption := '  ' + Patient.Name + ' is currently an outpatient.' + SpeCap + TXT_RELEASE;
+    end;
+    with frmOrdersReleaseEvent do
+      cklstOrders.Caption := lblRelease.Caption;
+    with  AnOrderList do for i := 0 to Count - 1 do
+    begin
+      AOrder := TOrder(Items[i]);
+      idx := frmOrdersReleaseEvent.cklstOrders.Items.AddObject(AOrder.Text,AOrder);
+      frmOrdersReleaseEvent.cklstOrders.Checked[idx] := True;
+    end;
+    frmOrdersReleaseEvent.ShowModal;
+    if frmOrdersReleaseEvent.OKPressed then
+    begin
+      OrdersLst := TStringList.Create;
+      for j := 0 to frmOrdersReleaseEvent.cklstOrders.Items.Count - 1 do
+      begin
+        if frmOrdersReleaseEvent.cklstOrders.Checked[j] then
+          OrdersLst.Add(TOrder(frmOrdersReleaseEvent.cklstOrders.Items.Objects[j]).ID);
+      end;
+      StatusText('Releasing Orders to Service...');
+      SendReleaseOrders(OrdersLst);
+      LastCheckedPtEvt := '';
+      with OrdersLst do if Count > 0 then for i := 0 to Count - 1 do
+      begin
+        if Pos('E', Piece(OrdersLst[i], U, 2)) > 0 then
+        begin
+          OrderText := FindOrderText(Piece(OrdersLst[i], U, 1));
+          if Piece(OrdersLst[i],U,4) = 'Invalid Pharmacy order number' then
+          InfoBox(TX_SAVERR1 + Piece(OrdersLst[i], U, 4) + TX_SAVERR2 + OrderText + CRLF + CRLF +
+                  'The changes to this order have not been saved.  You must contact Pharmacy to complete any action on this order.',
+                  TC_SAVERR, MB_OK)
+          else
+          InfoBox(TX_SAVERR1 + Piece(OrdersLst[i], U, 4) + TX_SAVERR2 + OrderText,
+                  TC_SAVERR, MB_OK);
+        end;
+      end;
+      //  CQ 10226, PSI-05-048 - advise of auto-change from LC to WC on lab orders
+      AList := TStringList.Create;
+      try
+        CheckForChangeFromLCtoWCOnRelease(AList, Encounter.Location, OrdersLst);
+        if AList.Text <> '' then
+          ReportBox(AList, 'Changed Orders', TRUE);
+      finally
+        AList.Free;
+      end;
+      PrintOrdersOnSignRelease(OrdersLst, NO_PROVIDER);
+
+      with AnOrderList do for i := 0 to Count - 1 do with TOrder(Items[i]) do
+      begin
+        if EventPtr <> LastCheckedPtEvt then
+        begin
+          LastCheckedPtEvt := EventPtr;
+          if CompleteEvt(EventPtr,EventName,False) then
+            frmOrdersReleaseEvent.FComplete := True;
+        end;
+      end;
+      StatusText('');
+      ordersLst.Free;
+      with AnOrderList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+      if frmOrdersReleaseEvent.FComplete then
+      begin
+        frmOrders.InitOrderSheetsForEvtDelay;
+        frmOrders.ClickLstSheet;
+      end;
+      frmOrdersReleaseEvent.FComplete := False;
+      Result := True;
+    end else
+      Result := False;
+  Except
+    on E: exception do
+      Result := false;
+  end;
+  {finally
+    with AnOrderList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+    if frmOrdersReleaseEvent.FComplete then
+    begin
+      frmOrders.InitOrderSheetsForEvtDelay;
+      frmOrders.ClickLstSheet;
+    end;
+    frmOrdersReleaseEvent.FComplete := False;
+  end;}
+end;
+
+procedure TfrmOrdersReleaseEvent.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmOrdersReleaseEvent.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  FLastHintItem := -1;
+  FComplete  := False;
+  FOldHintPause := Application.HintPause;
+  FCurrTS := '';
+  Application.HintPause := 250;
+  FOldHintHidePause := Application.HintHidePause;
+  Application.HintHidePause := 30000;
+end;
+
+procedure TfrmOrdersReleaseEvent.btnOKClick(Sender: TObject);
+var
+  i: integer;
+  beSelected: boolean;
+begin
+  beSelected := False;
+  for i := 0 to cklstOrders.Items.Count - 1 do
+  begin
+    if cklstOrders.Checked[i] then
+    begin
+      beSelected := True;
+      Break;
+    end;
+  end;
+  if not beSelected then
+  begin
+    ShowMsg('You have to select at least one order!');
+    Exit;
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmOrdersReleaseEvent.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  Application.HintPause := FOldHintPause;
+  Application.HintHidePause := FOldHintHidePause;
+end;
+
+procedure TfrmOrdersReleaseEvent.cklstOrdersMeasureItem(
+  Control: TWinControl; Index: Integer; var AHeight: Integer);
+var
+  x:string;
+  ARect: TRect;
+begin
+  inherited;
+  AHeight := MainFontHeight + 2;
+  with cklstOrders do if Index < Items.Count then
+  begin
+    x := FilteredString(Items[Index]);
+    ARect := ItemRect(Index);
+    AHeight := WrappedTextHeightByFont( cklstOrders.Canvas, Font, x, ARect);
+    if AHeight > 255 then AHeight := 255;
+    if AHeight <  13 then AHeight := 13;
+  end;
+end;
+
+procedure TfrmOrdersReleaseEvent.cklstOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+begin
+  inherited;
+  x := '';
+  ARect := Rect;
+  with cklstOrders do
+  begin
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(0, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      X := FilteredString(Items[Index]);
+      DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+    end;
+  end;
+end;
+
+procedure TfrmOrdersReleaseEvent.cklstOrdersMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+var
+  Itm: integer;
+begin
+  inherited;
+  Itm := cklstOrders.ItemAtPos(Point(X, Y), TRUE);
+  if (Itm >= 0) then
+  begin
+    if (Itm <> FLastHintItem) then
+    begin
+      Application.CancelHint;
+      cklstOrders.Hint := TrimRight(cklstOrders.Items[Itm]);
+      FLastHintItem := Itm;
+      Application.ActivateHint(Point(X, Y));
+    end;
+  end else
+  begin
+    cklstOrders.Hint := '';
+    FLastHintItem := -1;
+    Application.CancelHint;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODSaveQuick.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODSaveQuick.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODSaveQuick.dfm	(revision 1676)
@@ -0,0 +1,132 @@
+inherited frmODQuick: TfrmODQuick
+  Left = 371
+  Top = 203
+  Caption = 'frmODQuick'
+  ClientHeight = 263
+  ClientWidth = 296
+  ExplicitWidth = 304
+  ExplicitHeight = 290
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 261
+    Height = 13
+    Caption = 'Enter the name that should be used for this quick order.'
+  end
+  object Label2: TLabel [1]
+    Left = 8
+    Top = 61
+    Width = 136
+    Height = 13
+    Caption = 'Meds, Inpatient Common List'
+  end
+  object SpeedButton1: TSpeedButton [2]
+    Left = 263
+    Top = 108
+    Width = 25
+    Height = 25
+    Glyph.Data = {
+      F6000000424DF600000000000000760000002800000010000000100000000100
+      0400000000008000000000000000000000001000000010000000000000000000
+      8000008000000080800080000000800080008080000080808000C0C0C0000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      33333333333333333333333333333333333333333CCCCC33333333333CCCCC33
+      333333333CCCCC33333333333CCCCC33333333333CCCCC33333333333CCCCC33
+      3333333CCCCCCCCC33333333CCCCCCC3333333333CCCCC333333333333CCC333
+      33333333333C3333333333333333333333333333333333333333}
+  end
+  object SpeedButton2: TSpeedButton [3]
+    Left = 263
+    Top = 144
+    Width = 25
+    Height = 25
+    Glyph.Data = {
+      F6000000424DF600000000000000760000002800000010000000100000000100
+      0400000000008000000000000000000000001000000010000000000000000000
+      8000008000000080800080000000800080008080000080808000C0C0C0000000
+      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+      3333333333333333333333333333333333333333333C33333333333333CCC333
+      333333333CCCCC3333333333CCCCCCC33333333CCCCCCCCC333333333CCCCC33
+      333333333CCCCC33333333333CCCCC33333333333CCCCC33333333333CCCCC33
+      333333333CCCCC33333333333333333333333333333333333333}
+  end
+  object Bevel1: TBevel [4]
+    Left = 8
+    Top = 224
+    Width = 280
+    Height = 2
+  end
+  object Bevel2: TBevel [5]
+    Left = 8
+    Top = 51
+    Width = 280
+    Height = 2
+  end
+  object Edit1: TCaptionEdit [6]
+    Left = 8
+    Top = 22
+    Width = 280
+    Height = 21
+    TabOrder = 0
+    Caption = 'Enter the name that should be used for this quick order.'
+  end
+  object ORListBox1: TORListBox [7]
+    Left = 8
+    Top = 75
+    Width = 245
+    Height = 141
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    ItemTipColor = clWindow
+    LongList = False
+  end
+  object Button1: TButton [8]
+    Left = 136
+    Top = 234
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    TabOrder = 2
+  end
+  object Button2: TButton [9]
+    Left = 216
+    Top = 234
+    Width = 72
+    Height = 21
+    Caption = 'Cancel'
+    TabOrder = 3
+  end
+  object BitBtn1: TBitBtn [10]
+    Left = 263
+    Top = 191
+    Width = 25
+    Height = 25
+    TabOrder = 4
+    Kind = bkAbort
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Edit1'
+        'Status = stsDefault')
+      (
+        'Component = ORListBox1'
+        'Status = stsDefault')
+      (
+        'Component = Button1'
+        'Status = stsDefault')
+      (
+        'Component = Button2'
+        'Status = stsDefault')
+      (
+        'Component = BitBtn1'
+        'Status = stsDefault')
+      (
+        'Component = frmODQuick'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODSaveQuick.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODSaveQuick.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODSaveQuick.pas	(revision 1676)
@@ -0,0 +1,35 @@
+unit fODSaveQuick;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, Buttons, ExtCtrls, StdCtrls, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmODQuick = class(TfrmAutoSz)
+    Label1: TLabel;
+    Edit1: TCaptionEdit;
+    ORListBox1: TORListBox;
+    Label2: TLabel;
+    SpeedButton1: TSpeedButton;
+    SpeedButton2: TSpeedButton;
+    Button1: TButton;
+    Button2: TButton;
+    Bevel1: TBevel;
+    Bevel2: TBevel;
+    BitBtn1: TBitBtn;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmODQuick: TfrmODQuick;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODTest.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODTest.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODTest.dfm	(revision 1676)
@@ -0,0 +1,296 @@
+inherited frmODTest: TfrmODTest
+  Left = 198
+  Top = 304
+  Caption = 'Test Order'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMedication: TLabel [0]
+    Left = 6
+    Top = 4
+    Width = 52
+    Height = 13
+    AutoSize = False
+    Caption = 'Medication'
+  end
+  object lblDosage: TLabel [1]
+    Left = 202
+    Top = 4
+    Width = 54
+    Height = 13
+    AutoSize = False
+    Caption = 'Instructions'
+  end
+  object lblRoute: TLabel [2]
+    Left = 314
+    Top = 4
+    Width = 29
+    Height = 13
+    AutoSize = False
+    Caption = 'Route'
+  end
+  object lblSchedule: TLabel [3]
+    Left = 392
+    Top = 4
+    Width = 45
+    Height = 13
+    AutoSize = False
+    Caption = 'Schedule'
+  end
+  object lblQuantity: TLabel [4]
+    Left = 470
+    Top = 4
+    Width = 39
+    Height = 13
+    AutoSize = False
+    Caption = 'Quantity'
+  end
+  object lblRefills: TLabel [5]
+    Left = 470
+    Top = 45
+    Width = 28
+    Height = 13
+    AutoSize = False
+    Caption = 'Refills'
+  end
+  object lblPickup: TLabel [6]
+    Left = 202
+    Top = 101
+    Width = 38
+    Height = 13
+    AutoSize = False
+    Caption = 'Pick Up'
+  end
+  object lblSC: TLabel [7]
+    Left = 314
+    Top = 101
+    Width = 43
+    Height = 13
+    AutoSize = False
+    Caption = 'SC? Y/N'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+  end
+  object Label1: TLabel [8]
+    Left = 392
+    Top = 101
+    Width = 31
+    Height = 13
+    AutoSize = False
+    Caption = 'Priority'
+  end
+  object Label2: TLabel [9]
+    Left = 202
+    Top = 142
+    Width = 49
+    Height = 13
+    Caption = 'Comments'
+  end
+  object cboMedication: TORComboBox [10]
+    Left = 6
+    Top = 18
+    Width = 180
+    Height = 167
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 11
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 5
+  end
+  object cboMedAlt: TORComboBox
+    Left = 6
+    Top = 18
+    Width = 180
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 11
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    Visible = False
+  end
+  object cboInstructions: TORComboBox
+    Left = 202
+    Top = 18
+    Width = 106
+    Height = 77
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 6
+  end
+  object cboRoute: TORComboBox
+    Left = 314
+    Top = 18
+    Width = 72
+    Height = 77
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 7
+  end
+  object cboSchedule: TORComboBox
+    Left = 392
+    Top = 18
+    Width = 72
+    Height = 77
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    MaxLength = 0
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 8
+  end
+  object txtQuantity: TEdit
+    Left = 470
+    Top = 18
+    Width = 44
+    Height = 21
+    TabOrder = 9
+    Text = 'txtQuantity'
+  end
+  object txtRefills: TMaskEdit
+    Left = 472
+    Top = 64
+    Width = 29
+    Height = 21
+    EditMask = '90;0; '
+    MaxLength = 2
+    TabOrder = 10
+    Text = '0'
+  end
+  object spnRefills: TUpDown
+    Left = 501
+    Top = 64
+    Width = 15
+    Height = 21
+    Associate = txtRefills
+    Min = 0
+    Max = 11
+    Position = 0
+    TabOrder = 11
+    Wrap = False
+  end
+  object cboPickup: TORComboBox
+    Left = 202
+    Top = 115
+    Width = 106
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 12
+  end
+  object cboSC: TORComboBox
+    Left = 314
+    Top = 115
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 13
+  end
+  object cboPriority: TORComboBox
+    Left = 392
+    Top = 115
+    Width = 72
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 14
+  end
+  object memComments: TMemo
+    Left = 202
+    Top = 156
+    Width = 311
+    Height = 32
+    Lines.Strings = (
+      'memComments')
+    TabOrder = 15
+  end
+  object Timer1: TTimer
+    OnTimer = Timer1Timer
+    Left = 476
+    Top = 108
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODTest.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODTest.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODTest.pas	(revision 1676)
@@ -0,0 +1,57 @@
+unit fODTest;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, ComCtrls, ExtCtrls, StdCtrls, ORCtrls, Mask, RZDebug;
+
+type
+  TfrmODTest = class(TfrmODBase)
+    lblMedication: TLabel;
+    cboMedAlt: TORComboBox;
+    cboMedication: TORComboBox;
+    lblDosage: TLabel;
+    cboInstructions: TORComboBox;
+    lblRoute: TLabel;
+    cboRoute: TORComboBox;
+    lblSchedule: TLabel;
+    cboSchedule: TORComboBox;
+    lblQuantity: TLabel;
+    txtQuantity: TEdit;
+    lblRefills: TLabel;
+    txtRefills: TMaskEdit;
+    spnRefills: TUpDown;
+    lblPickup: TLabel;
+    cboPickup: TORComboBox;
+    lblSC: TLabel;
+    cboSC: TORComboBox;
+    Label1: TLabel;
+    cboPriority: TORComboBox;
+    Label2: TLabel;
+    memComments: TMemo;
+    Timer1: TTimer;
+    procedure Timer1Timer(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmODTest: TfrmODTest;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmODTest.Timer1Timer(Sender: TObject);
+var
+  AControl: TControl;
+begin
+  inherited;
+  AControl := GetCaptureControl;
+  if AControl <> nil then Writeln(AControl.Name) else Writeln('nil');
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODText.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODText.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODText.dfm	(revision 1676)
@@ -0,0 +1,98 @@
+inherited frmODText: TfrmODText
+  Caption = 'Text Only Order'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblText: TLabel [0]
+    Left = 6
+    Top = 4
+    Width = 126
+    Height = 13
+    Caption = 'Enter the text of the order -'
+  end
+  object lblStart: TLabel [1]
+    Left = 226
+    Top = 150
+    Width = 76
+    Height = 13
+    Caption = 'Start Date/Time'
+  end
+  object lblStop: TLabel [2]
+    Left = 374
+    Top = 150
+    Width = 76
+    Height = 13
+    Caption = 'Stop Date/Time'
+  end
+  inherited memOrder: TCaptionMemo
+    TabOrder = 6
+  end
+  inherited cmdAccept: TButton
+    TabOrder = 3
+  end
+  object memText: TMemo [5]
+    Left = 6
+    Top = 18
+    Width = 508
+    Height = 124
+    TabOrder = 0
+    OnChange = ControlChange
+  end
+  object txtStart: TORDateBox [6]
+    Left = 226
+    Top = 164
+    Width = 140
+    Height = 21
+    TabOrder = 1
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Start Date/Time'
+  end
+  object txtStop: TORDateBox [7]
+    Left = 374
+    Top = 164
+    Width = 140
+    Height = 21
+    TabOrder = 2
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Stop Date/Time'
+  end
+  inherited cmdQuit: TButton
+    TabOrder = 4
+  end
+  inherited pnlMessage: TPanel
+    TabOrder = 5
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memText'
+        'Status = stsDefault')
+      (
+        'Component = txtStart'
+        'Status = stsDefault')
+      (
+        'Component = txtStop'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODText'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODText.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODText.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODText.pas	(revision 1676)
@@ -0,0 +1,133 @@
+unit fODText;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, StdCtrls, ORCtrls, ComCtrls, ExtCtrls, ORFn, uConst, ORDtTm,
+  VA508AccessibilityManager;
+
+type
+  TfrmODText = class(TfrmODBase)
+    memText: TMemo;
+    lblText: TLabel;
+    txtStart: TORDateBox;
+    txtStop: TORDateBox;
+    lblStart: TLabel;
+    lblStop: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure cmdAcceptClick(Sender: TObject);
+  public
+    procedure InitDialog; override;
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+    procedure Validate(var AnErrMsg: string); override;
+  end;
+
+var
+  frmODText: TfrmODText;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore;
+
+const
+  TX_NO_TEXT = 'Some text must be entered.';
+  TX_STARTDT = 'Unable to interpret start date.';
+  TX_STOPDT  = 'Unable to interpret stop date.';
+  TX_GREATER = 'Stop date must be greater than start date.';
+
+{ TfrmODBase common methods }
+
+procedure TfrmODText.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FillerID := 'OR';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'OR GXTEXT WORD PROCESSING ORDER';  // loads formatting info
+  //StatusText('Loading Default Values');                // there are no defaults for text only
+  //CtrlInits.LoadDefaults(ODForText);
+  InitDialog;
+  StatusText('');
+end;
+
+procedure TfrmODText.InitDialog;
+begin
+  inherited;                             // inherited clears dialog controls and responses
+  ActiveControl := memText;  //SetFocusedControl(memText);
+end;
+
+procedure TfrmODText.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    SetControl(memText,  'COMMENT', 1);
+    SetControl(txtStart, 'START',   1);
+    SetControl(txtStop,  'STOP',    1);
+  end
+  else txtStart.Text := 'NOW';
+end;
+
+procedure TfrmODText.Validate(var AnErrMsg: string);
+const
+  SPACE_CHAR = 32;
+var
+  ContainsPrintable: Boolean;
+  i: Integer;
+  StartTime, StopTime: TFMDateTime;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  ContainsPrintable := False;
+  for i := 1 to Length(memText.Text) do if Ord(memText.Text[i]) > SPACE_CHAR then
+  begin
+    ContainsPrintable := True;
+    break;
+  end;
+  if not ContainsPrintable then SetError(TX_NO_TEXT);
+  with txtStart do if Length(Text) > 0
+    then StartTime := StrToFMDateTime(Text)
+    else StartTime := 0;
+  with txtStop do if Length(Text) > 0
+    then StopTime := StrToFMDateTime(Text)
+    else StopTime := 0;
+  if StartTime = -1 then SetError(TX_STARTDT);
+  if StopTime  = -1 then SetError(TX_STARTDT);
+  if (StopTime > 0) and (StopTime < StartTime) then SetError(TX_GREATER);
+  //the following is commented out because should be using relative times
+  //if AnErrMsg = '' then
+  //begin
+  //  Responses.Update('START', 1, FloatToStr(StartTime), txtStart.Text);
+  //  Responses.Update('STOP', 1, FloatToStr(StopTime), txtStop.Text);
+  //end;
+end;
+
+procedure TfrmODText.cmdAcceptClick(Sender: TObject);
+begin
+  inherited;
+  Application.ProcessMessages; //CQ 14670
+  memText.Lines.Text := Trim(memText.Lines.Text); //CQ 14670
+end;
+
+procedure TfrmODText.ControlChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  with memText  do if GetTextLen > 0   then Responses.Update('COMMENT', 1, TX_WPTYPE, Text);
+  with txtStart do if Length(Text) > 0 then Responses.Update('START', 1, Text, Text);
+  with txtStop  do if Length(Text) > 0 then Responses.Update('STOP', 1, Text, Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODValidateAction.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODValidateAction.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODValidateAction.dfm	(revision 1676)
@@ -0,0 +1,149 @@
+inherited frmInvalidActionList: TfrmInvalidActionList
+  Left = 445
+  Top = 142
+  Caption = 'Invalidated action orders'
+  ClientHeight = 519
+  ClientWidth = 526
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnResize = FormResize
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 526
+    Height = 229
+    Align = alTop
+    TabOrder = 0
+    object Label1: TLabel
+      Left = 1
+      Top = 1
+      Width = 524
+      Height = 24
+      Align = alTop
+      AutoSize = False
+      Caption = 'You can'#39't take this action on the following orders'
+    end
+    object lstActDeniedOrders: TCaptionListBox
+      Left = 1
+      Top = 52
+      Width = 524
+      Height = 176
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      ItemHeight = 16
+      TabOrder = 0
+      OnDrawItem = lstActDeniedOrdersDrawItem
+      OnMeasureItem = lstActDeniedOrdersMeasureItem
+      Caption = 'You can'#39't take this action on the following orders'
+    end
+    object hdrAction: THeaderControl
+      Left = 1
+      Top = 25
+      Width = 524
+      Height = 27
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 300
+          Text = 'Order'
+          Width = 350
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 150
+          Text = 'Reason'
+          Width = 150
+        end>
+      OnSectionResize = hdrActionSectionResize
+    end
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 229
+    Width = 526
+    Height = 249
+    Align = alClient
+    TabOrder = 1
+    ExplicitHeight = 256
+    object Label2: TLabel
+      Left = 1
+      Top = 1
+      Width = 524
+      Height = 40
+      Align = alTop
+      AutoSize = False
+      Caption = 'The following orders will be taken action:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      Layout = tlCenter
+    end
+    object lstValidOrders: TCaptionListBox
+      Left = 1
+      Top = 41
+      Width = 524
+      Height = 207
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      ItemHeight = 16
+      TabOrder = 0
+      OnDrawItem = lstValidOrdersDrawItem
+      OnMeasureItem = lstValidOrdersMeasureItem
+      Caption = 'The following orders will be taken action'
+    end
+  end
+  object Panel1: TPanel [2]
+    Left = 0
+    Top = 478
+    Width = 526
+    Height = 41
+    Align = alBottom
+    TabOrder = 2
+    ExplicitTop = 485
+    DesignSize = (
+      526
+      41)
+    object btnOK: TButton
+      Left = 440
+      Top = 12
+      Width = 75
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lstActDeniedOrders'
+        'Status = stsDefault')
+      (
+        'Component = hdrAction'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = lstValidOrders'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = frmInvalidActionList'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODValidateAction.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODValidateAction.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODValidateAction.pas	(revision 1676)
@@ -0,0 +1,261 @@
+unit fODValidateAction;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORFn, uCore, StdCtrls, CheckLst, ComCtrls,ExtCtrls,uConst, ORCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmInvalidActionList = class(TfrmBase508Form)
+    pnlTop: TPanel;
+    lstActDeniedOrders: TCaptionListBox;
+    Label1: TLabel;
+    hdrAction: THeaderControl;
+    pnlBottom: TPanel;
+    Label2: TLabel;
+    lstValidOrders: TCaptionListBox;
+    Panel1: TPanel;
+    btnOK: TButton;
+    procedure lstActDeniedOrdersDrawItem(Control: TWinControl;
+      Index: Integer; TheRect: TRect; State: TOwnerDrawState);
+    procedure lstActDeniedOrdersMeasureItem(Control: TWinControl;
+      Index: Integer; var AHeight: Integer);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure hdrActionSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure lstValidOrdersMeasureItem(Control: TWinControl;
+      Index: Integer; var AHeight: Integer);
+    procedure lstValidOrdersDrawItem(Control: TWinControl; Index: Integer;
+      TheRect: TRect; State: TOwnerDrawState);
+    procedure FormResize(Sender: TObject);
+  private
+    { Private declarations }
+    TheInvaList: TStringList;
+    procedure RedrawActiveList;
+  public
+    { Public declarations }
+  end;
+
+  procedure DisplayOrdersForAction(TheInvalidList: TStringList; TheValidList: TStringList; TheAction: String);
+
+implementation
+
+uses
+  VA2006Utils;
+
+{$R *.DFM}
+
+procedure DisplayOrdersForAction(TheInvalidList: TStringList; TheValidList: TStringList; TheAction: String);
+var
+  frmInvalidActionList: TfrmInvalidActionList;
+  i: integer;
+begin
+  frmInvalidActionList := TfrmInvalidActionList.Create(Application);
+  frmInvalidActionList.TheInvaList :=TheInvalidList;
+  if TheAction = OA_CHGEVT then
+  begin
+    frmInvalidActionList.Caption  := 'Change Release Event';
+    frmInvalidActionList.Label1.Caption := 'You can not change the release event for the following orders.';
+    frmInvalidActionList.Label2.Caption := 'You can change the release event for the following orders.';
+  end;
+  if TheAction = OA_EDREL then
+  begin
+    frmInvalidActionList.Caption  := 'Release Order(s) To Service';
+    frmInvalidActionList.Label1.Caption := 'You can not release the following orders to service.';
+    frmInvalidActionList.Label2.Caption := 'You can release the following orders to service.';
+  end;
+  for i := 0 to TheInvalidList.Count - 1 do
+  begin
+    frmInvalidActionList.lstActDeniedOrders.Items.Add(Piece(TheInvalidList[i], U, 1) + ' ' + Piece(TheInvalidList[i], U, 2));
+  end;
+  for i := 0 to TheValidList.Count - 1 do
+  begin
+    frmInvalidActionList.lstValidOrders.Items.Add(TheValidList[i]);
+  end;
+  if TheValidList.Count = 0 then
+  begin
+    frmInvalidActionList.lstValidOrders.Visible := False;
+    frmInvalidActionList.pnlBottom.Visible := False;
+    frmInvalidActionList.Height := frmInvalidActionList.Height - frmInvalidActionList.pnlBottom.Height;
+  end;
+  Beep;
+  frmInvalidActionList.ShowModal;
+  frmInvalidActionList.TheInvaList.Free;
+end;
+
+procedure TfrmInvalidActionList.lstActDeniedOrdersDrawItem(
+  Control: TWinControl; Index: Integer; TheRect: TRect;
+  State: TOwnerDrawState);
+var
+  x,x1,x2: string;
+  ARect: TRect;
+  i,RightSide: integer;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstActDeniedOrders do
+  begin
+    ARect := TheRect;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    RightSide := -2;
+    for i := 0 to 1 do
+    begin
+      RightSide := RightSide + hdrAction.Sections[i].Width;
+      Canvas.MoveTo(RightSide, ARect.Bottom - 1);
+      Canvas.LineTo(RightSide, ARect.Top);
+    end;
+    if Index < Items.Count then
+    begin
+      x1 := FilteredString(Piece(TheInvaList[index],'^',1));
+      x2 := Piece(TheInvaList[index],'^',2);
+      for i := 0 to 1 do
+      begin
+        if i > 0 then ARect.Left := ARect.Right + 2 else ARect.Left := 2;
+        ARect.Right := ARect.Left + hdrAction.Sections[i].Width - 6;
+        SaveColor := Canvas.Brush.Color;
+        if i = 0 then
+          x := x1;
+        if i = 1 then
+          x := x2;
+        DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+        Canvas.Brush.Color := SaveColor;
+        ARect.Right := ARect.Right + 4;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmInvalidActionList.lstActDeniedOrdersMeasureItem(
+  Control: TWinControl; Index: Integer; var AHeight: Integer);
+var
+  x1,x2: string;
+  ARect: TRect;
+  TextHeight, ReasonHeight, NewHeight: Integer;
+begin
+  inherited;
+  AHeight := MainFontHeight + 2;
+  NewHeight := AHeight;
+  with lstActDeniedOrders do if Index < Items.Count then
+  begin
+    x1 := FilteredString(Piece(TheInvaList[index],'^',1));
+    x2 := Piece(TheInvaList[index],'^',2);
+
+    ARect := ItemRect(Index);
+    ARect.Right := hdrAction.Sections[0].Width - 6;
+    ARect.Left := 0; ARect.Top := 0; ARect.Bottom := 0;
+    TextHeight := DrawText(Canvas.Handle, PChar(x1), Length(x1), ARect,
+        DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
+
+    ARect := ItemRect(Index);
+    ARect.Right := hdrAction.Sections[1].Width - 6;
+    ARect.Left := 0; ARect.Top := 0; ARect.Bottom := 0;
+    ReasonHeight := DrawText(Canvas.Handle, PChar(x2), Length(x2), ARect,
+      DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
+    NewHeight := HigherOf(TextHeight, ReasonHeight);
+    if NewHeight > 255 then NewHeight := 255;
+    if NewHeight <  13 then NewHeight := 13;
+  end;
+  AHeight := NewHeight;
+end;
+
+procedure TfrmInvalidActionList.btnOKClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmInvalidActionList.FormCreate(Sender: TObject);
+begin
+  FixHeaderControlDelphi2006Bug(hdrAction);
+  TheInvaList := TStringList.Create;
+end;
+
+procedure TfrmInvalidActionList.hdrActionSectionResize(
+  HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  RedrawSuspend(Self.Handle);
+  RedrawActiveList;
+  RedrawActivate(Self.Handle);
+  lstActDeniedOrders.Invalidate;
+end;
+
+procedure TfrmInvalidActionList.RedrawActiveList;
+var
+  i, SaveTop: Integer;
+begin
+  with lstActDeniedOrders do
+  begin
+    RedrawSuspend(Handle);
+    SaveTop := TopIndex;
+    Clear;
+    for i := 0 to TheInvaList.Count - 1 do
+      Items.Add(Piece(TheInvaList[i], U, 1) + ' ' + Piece(TheInvaList[i], U, 2));
+    TopIndex := SaveTop;
+    RedrawActivate(Handle);
+  end;
+end;
+
+procedure TfrmInvalidActionList.lstValidOrdersMeasureItem(
+  Control: TWinControl; Index: Integer; var AHeight: Integer);
+var
+  x: string;
+  ARect: TRect;
+  NewHeight: Integer;
+begin
+  inherited;
+  AHeight := MainFontHeight + 2;
+  NewHeight := AHeight;
+  with lstValidOrders do if Index < Items.Count then
+  begin
+    x := FilteredString(lstValidOrders.Items[index]);
+    ARect := ItemRect(Index);
+    ARect.Right := hdrAction.Sections[0].Width - 6;
+    ARect.Left := 0; ARect.Top := 0; ARect.Bottom := 0;
+    NewHeight := DrawText(Canvas.Handle, PChar(x), Length(x), ARect,
+        DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
+    if NewHeight > 255 then NewHeight := 255;
+    if NewHeight <  13 then NewHeight := 13;
+  end;
+  AHeight := NewHeight;
+end;
+
+procedure TfrmInvalidActionList.lstValidOrdersDrawItem(
+  Control: TWinControl; Index: Integer; TheRect: TRect;
+  State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstValidOrders do
+  begin
+    ARect := TheRect;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    SaveColor := Canvas.Brush.Color;    
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := FilteredString(lstValidOrders.Items[index]);
+      DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+      Canvas.Brush.Color := SaveColor;
+      ARect.Right := ARect.Right + 4;
+    end;
+  end;
+end;
+
+procedure TfrmInvalidActionList.FormResize(Sender: TObject);
+begin
+  if pnlBottom.Visible then
+    pnlTop.Height := (Height div 5 ) * 2
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODVitals.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODVitals.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODVitals.dfm	(revision 1676)
@@ -0,0 +1,351 @@
+inherited frmODVitals: TfrmODVitals
+  Left = 721
+  Top = 363
+  Caption = 'Vital Measurement Order'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMeasurement: TLabel [0]
+    Left = 6
+    Top = 8
+    Width = 64
+    Height = 13
+    Caption = 'Measurement'
+  end
+  object lblSchedule: TLabel [1]
+    Left = 144
+    Top = 8
+    Width = 45
+    Height = 13
+    Caption = 'Schedule'
+  end
+  object lblStart: TLabel [2]
+    Left = 282
+    Top = 8
+    Width = 22
+    Height = 13
+    Caption = 'Start'
+  end
+  object lblStop: TLabel [3]
+    Left = 282
+    Top = 50
+    Width = 22
+    Height = 13
+    Caption = 'Stop'
+  end
+  object lblComment: TLabel [4]
+    Left = 6
+    Top = 151
+    Width = 103
+    Height = 13
+    Caption = 'Additional Instructions'
+  end
+  object txtComment: TCaptionEdit [5]
+    Left = 6
+    Top = 165
+    Width = 391
+    Height = 21
+    TabOrder = 10
+    OnChange = ControlChange
+    Caption = 'Additional Instructions'
+  end
+  object cboMeasurement: TORComboBox [10]
+    Left = 6
+    Top = 21
+    Width = 130
+    Height = 122
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Measurement'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object cboSchedule: TORComboBox [11]
+    Left = 144
+    Top = 21
+    Width = 130
+    Height = 122
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Schedule'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 5
+    OnChange = ControlChange
+    CharsNeedMatch = 1
+  end
+  object calStart: TORDateBox [12]
+    Left = 282
+    Top = 21
+    Width = 115
+    Height = 21
+    TabOrder = 6
+    Text = 'Now'
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Start Date'
+  end
+  object calStop: TORDateBox [13]
+    Left = 282
+    Top = 64
+    Width = 115
+    Height = 21
+    TabOrder = 7
+    OnChange = ControlChange
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Stop Date'
+  end
+  object grpCallHO: TGroupBox [14]
+    Left = 407
+    Top = 9
+    Width = 107
+    Height = 164
+    TabOrder = 8
+    Visible = False
+    object lblBPsys: TLabel
+      Left = 8
+      Top = 21
+      Width = 38
+      Height = 13
+      Alignment = taRightJustify
+      AutoSize = False
+      Caption = 'BPsys <'
+    end
+    object lblBPdia: TLabel
+      Left = 8
+      Top = 50
+      Width = 38
+      Height = 13
+      Alignment = taRightJustify
+      AutoSize = False
+      Caption = 'BPdia >'
+    end
+    object lblPulseLT: TLabel
+      Left = 8
+      Top = 79
+      Width = 38
+      Height = 13
+      Alignment = taRightJustify
+      AutoSize = False
+      Caption = 'Pulse <'
+    end
+    object lblPulseGT: TLabel
+      Left = 8
+      Top = 108
+      Width = 38
+      Height = 13
+      Alignment = taRightJustify
+      AutoSize = False
+      Caption = 'Pulse >'
+    end
+    object lblTemp: TLabel
+      Left = 8
+      Top = 137
+      Width = 38
+      Height = 13
+      Alignment = taRightJustify
+      AutoSize = False
+      Caption = 'Temp >'
+    end
+    object txtBPsys: TCaptionEdit
+      Left = 50
+      Top = 18
+      Width = 32
+      Height = 21
+      TabOrder = 0
+      Text = '100'
+      Caption = 'BPsys <'
+    end
+    object txtBPDia: TCaptionEdit
+      Left = 50
+      Top = 47
+      Width = 32
+      Height = 21
+      TabOrder = 1
+      Text = '120'
+      Caption = 'BPdia >'
+    end
+    object txtPulseLT: TCaptionEdit
+      Left = 50
+      Top = 76
+      Width = 32
+      Height = 21
+      TabOrder = 2
+      Text = '60'
+      Caption = 'Pulse <'
+    end
+    object txtPulGT: TCaptionEdit
+      Left = 50
+      Top = 105
+      Width = 32
+      Height = 21
+      TabOrder = 3
+      Text = '120'
+      Caption = 'Pulse >'
+    end
+    object txtTemp: TCaptionEdit
+      Left = 50
+      Top = 134
+      Width = 32
+      Height = 21
+      TabOrder = 4
+      Text = '101'
+      Caption = 'Temp >'
+    end
+    object spnBPsys: TUpDown
+      Left = 82
+      Top = 18
+      Width = 15
+      Height = 21
+      Associate = txtBPsys
+      Max = 300
+      Position = 100
+      TabOrder = 5
+    end
+    object spnBPdia: TUpDown
+      Left = 82
+      Top = 47
+      Width = 15
+      Height = 21
+      Associate = txtBPDia
+      Max = 300
+      Position = 120
+      TabOrder = 6
+    end
+    object spnPulseLT: TUpDown
+      Left = 82
+      Top = 76
+      Width = 15
+      Height = 21
+      Associate = txtPulseLT
+      Max = 500
+      Position = 60
+      TabOrder = 7
+    end
+    object spnPulseGT: TUpDown
+      Left = 82
+      Top = 105
+      Width = 15
+      Height = 21
+      Associate = txtPulGT
+      Max = 300
+      Position = 120
+      TabOrder = 8
+    end
+    object spnTemp: TUpDown
+      Left = 82
+      Top = 134
+      Width = 15
+      Height = 21
+      Associate = txtTemp
+      Max = 120
+      Position = 101
+      TabOrder = 9
+    end
+  end
+  object chkCallHO: TCheckBox [15]
+    Left = 414
+    Top = 8
+    Width = 73
+    Height = 17
+    Caption = 'Call HO on'
+    TabOrder = 9
+    Visible = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtComment'
+        'Status = stsDefault')
+      (
+        'Component = cboMeasurement'
+        'Status = stsDefault')
+      (
+        'Component = cboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = calStart'
+        'Status = stsDefault')
+      (
+        'Component = calStop'
+        'Status = stsDefault')
+      (
+        'Component = grpCallHO'
+        'Status = stsDefault')
+      (
+        'Component = txtBPsys'
+        'Status = stsDefault')
+      (
+        'Component = txtBPDia'
+        'Status = stsDefault')
+      (
+        'Component = txtPulseLT'
+        'Status = stsDefault')
+      (
+        'Component = txtPulGT'
+        'Status = stsDefault')
+      (
+        'Component = txtTemp'
+        'Status = stsDefault')
+      (
+        'Component = spnBPsys'
+        'Status = stsDefault')
+      (
+        'Component = spnBPdia'
+        'Status = stsDefault')
+      (
+        'Component = spnPulseLT'
+        'Status = stsDefault')
+      (
+        'Component = spnPulseGT'
+        'Status = stsDefault')
+      (
+        'Component = spnTemp'
+        'Status = stsDefault')
+      (
+        'Component = chkCallHO'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdQuit'
+        'Status = stsDefault')
+      (
+        'Component = pnlMessage'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = frmODVitals'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODVitals.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODVitals.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fODVitals.pas	(revision 1676)
@@ -0,0 +1,150 @@
+unit fODVitals;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fODBase, ComCtrls, ExtCtrls, StdCtrls, ORCtrls, ORDtTm,
+  VA508AccessibilityManager;
+
+type
+  TfrmODVitals = class(TfrmODBase)
+    cboMeasurement: TORComboBox;
+    cboSchedule: TORComboBox;
+    calStart: TORDateBox;
+    calStop: TORDateBox;
+    grpCallHO: TGroupBox;
+    lblMeasurement: TLabel;
+    lblSchedule: TLabel;
+    lblStart: TLabel;
+    lblStop: TLabel;
+    txtBPsys: TCaptionEdit;
+    txtBPDia: TCaptionEdit;
+    txtPulseLT: TCaptionEdit;
+    txtPulGT: TCaptionEdit;
+    txtTemp: TCaptionEdit;
+    lblBPsys: TLabel;
+    lblBPdia: TLabel;
+    lblPulseLT: TLabel;
+    lblPulseGT: TLabel;
+    lblTemp: TLabel;
+    chkCallHO: TCheckBox;
+    txtComment: TCaptionEdit;
+    lblComment: TLabel;
+    spnBPsys: TUpDown;
+    spnBPdia: TUpDown;
+    spnPulseLT: TUpDown;
+    spnPulseGT: TUpDown;
+    spnTemp: TUpDown;
+    procedure FormCreate(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    { Private declarations }
+  protected
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string); override;
+  public
+    procedure SetupDialog(OrderAction: Integer; const ID: string); override;
+  end;
+
+var
+  frmODVitals: TfrmODVitals;
+
+implementation
+
+{$R *.DFM}
+
+uses uConst, ORFn, rODBase, fFrame;
+
+const
+  TX_NO_MEASUREMENT = 'A measurement must be selected.';
+  TX_BAD_START      = 'The start date is not valid.';
+  TX_BAD_STOP       = 'The stop date is not valid.';
+  TX_STOPSTART     = 'The stop date must be after the start date.';
+
+procedure TfrmODVitals.FormCreate(Sender: TObject);
+begin
+  frmFrame.pnlVisit.Enabled := false;
+  inherited;
+  FillerID := 'OR';                     // does 'on Display' order check **KCM**
+  StatusText('Loading Dialog Definition');
+  Responses.Dialog := 'GMRVOR';
+  //Responses.Dialog := 'ORWD GENERIC VITALS';       // loads formatting info
+  StatusText('Loading Default Values');            // there are no defaults for text only
+  CtrlInits.LoadDefaults(ODForVitals);
+  InitDialog;
+  StatusText('');
+end;
+
+procedure TfrmODVitals.InitDialog;
+begin
+  inherited;
+  txtComment.Text := '';
+  with CtrlInits do
+  begin
+    SetControl(cboMeasurement,  'Measurements');
+    SetControl(cboSchedule,     'Schedules');
+  end;
+  ActiveControl := cboMeasurement;  //SetFocusedControl(cboMeasurement);
+end;
+
+procedure TfrmODVitals.SetupDialog(OrderAction: Integer; const ID: string);
+begin
+  inherited;
+  if OrderAction in [ORDER_COPY, ORDER_EDIT, ORDER_QUICK] then with Responses do
+  begin
+    Changing := True;
+    SetControl(cboMeasurement, 'ORDERABLE', 1);
+    SetControl(cboSchedule,    'SCHEDULE',  1);
+    SetControl(calStart,       'START',     1);
+    SetControl(calStop,        'STOP',      1);
+    SetControl(txtComment,     'COMMENT',   1);
+    Changing := False;
+    ControlChange(Self);
+  end;
+end;
+
+procedure TfrmODVitals.Validate(var AnErrMsg: string);
+var
+  ErrMsg: string;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  inherited;
+  if cboMeasurement.ItemIEN <= 0 then SetError(TX_NO_MEASUREMENT);
+  calStart.Validate(ErrMsg);
+  if Length(ErrMsg) > 0          then SetError(TX_BAD_START);
+  calStop.Validate(ErrMsg);
+  if Length(ErrMsg) > 0          then SetError(TX_BAD_STOP);
+  if (Length(calStop.Text) > 0) and (calStop.FMDateTime <= calStart.FMDateTime)
+                                 then SetError(TX_STOPSTART);
+
+end;
+
+procedure TfrmODVitals.ControlChange(Sender: TObject);
+begin
+  inherited;
+  if Changing then Exit;
+  Responses.Clear;
+  with cboMeasurement do if ItemIEN > 0      then Responses.Update('ORDERABLE', 1, ItemID, Text);
+  with cboSchedule    do if Length(Text) > 0 then Responses.Update('SCHEDULE' , 1, Text,   Text);
+  with calStart       do if Length(Text) > 0 then Responses.Update('START',     1, Text,   Text);
+  with calStop        do if Length(Text) > 0 then Responses.Update('STOP',      1, Text,   Text);
+  with txtComment     do if Length(Text) > 0 then Responses.Update('COMMENT',   1, Text,   Text);
+  memOrder.Text := Responses.OrderText;
+end;
+
+procedure TfrmODVitals.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  frmFrame.pnlVisit.Enabled := true;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMAction.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMAction.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMAction.dfm	(revision 1676)
@@ -0,0 +1,13 @@
+inherited frmOMAction: TfrmOMAction
+  Caption = 'frmOMAction'
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = frmOMAction'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMAction.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMAction.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMAction.pas	(revision 1676)
@@ -0,0 +1,53 @@
+unit fOMAction;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, rOrders, VA508AccessibilityManager;
+
+
+type
+  TCallOnExit = procedure;
+
+  TfrmOMAction = class(TfrmAutoSz)
+    procedure FormDestroy(Sender: TObject);
+  private
+    FCallOnExit:   TCallOnExit;
+    FOrderDialog:  Integer;
+    FRefNum:       Integer;
+    FAbortAction:  boolean;
+  protected
+    procedure InitDialog; virtual;
+  public
+    property CallOnExit:  TCallOnExit read FCallOnExit   write FCallOnExit;
+    property OrderDialog: Integer     read FOrderDialog  write FOrderDialog;
+    property RefNum:      Integer     read FRefNum       write FRefNum;
+    property AbortAction: boolean     read FAbortAction  write FAbortAction;
+  end;
+
+
+var
+  frmOMAction: TfrmOMAction;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  uConst;
+
+procedure TfrmOMAction.FormDestroy(Sender: TObject);
+begin
+  if Assigned(FCallOnExit) then FCallOnExit;
+  if (Owner <> nil) and (Owner is TWinControl)
+    then SendMessage(TWinControl(Owner).Handle, UM_DESTROY, FRefNum, 0);
+  inherited;
+end;
+
+procedure TfrmOMAction.InitDialog;
+begin
+  FAbortAction := False;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMHTML.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMHTML.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMHTML.dfm	(revision 1676)
@@ -0,0 +1,104 @@
+inherited frmOMHTML: TfrmOMHTML
+  Left = 390
+  Top = 242
+  Caption = 'HTML Ordering'
+  ClientHeight = 293
+  ClientWidth = 512
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 520
+  ExplicitHeight = 320
+  PixelsPerInch = 96
+  TextHeight = 13
+  object btnOK: TButton [0]
+    Left = 352
+    Top = 268
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    TabOrder = 0
+    OnClick = btnOKClick
+  end
+  object btnCancel: TButton [1]
+    Left = 433
+    Top = 268
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 1
+    OnClick = btnCancelClick
+  end
+  object btnBack: TButton [2]
+    Left = 6
+    Top = 268
+    Width = 43
+    Height = 21
+    Anchors = [akLeft, akBottom]
+    Caption = '< Back'
+    Enabled = False
+    TabOrder = 2
+    OnClick = btnBackClick
+  end
+  object pnlWeb: TPanel [3]
+    Left = 6
+    Top = 6
+    Width = 499
+    Height = 253
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 3
+    object webView: TWebBrowser
+      Left = 0
+      Top = 0
+      Width = 499
+      Height = 253
+      Align = alClient
+      TabOrder = 0
+      OnBeforeNavigate2 = webViewBeforeNavigate2
+      OnDocumentComplete = webViewDocumentComplete
+      ControlData = {
+        4C00000093330000261A00000000000000000000000000000000000000000000
+        000000004C000000000000000000000001000000E0D057007335CF11AE690800
+        2B2E126208000000000000004C0000000114020000000000C000000000000046
+        8000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000100000000000000000000000000000000000000}
+    end
+  end
+  object btnShow: TButton [4]
+    Left = 55
+    Top = 268
+    Width = 103
+    Height = 21
+    Anchors = [akLeft, akBottom]
+    Caption = 'Show Selections....'
+    TabOrder = 4
+    OnClick = btnShowClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnBack'
+        'Status = stsDefault')
+      (
+        'Component = pnlWeb'
+        'Status = stsDefault')
+      (
+        'Component = webView'
+        'Status = stsDefault')
+      (
+        'Component = btnShow'
+        'Status = stsDefault')
+      (
+        'Component = frmOMHTML'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMHTML.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMHTML.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMHTML.pas	(revision 1676)
@@ -0,0 +1,497 @@
+unit fOMHTML;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fOMAction, StdCtrls, OleCtrls, SHDocVw, MSHTML, activex, rOrders, uConst,
+  ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmOMHTML = class(TfrmOMAction)
+    btnOK: TButton;
+    btnCancel: TButton;
+    btnBack: TButton;
+    pnlWeb: TPanel;
+    webView: TWebBrowser;
+    btnShow: TButton;
+    procedure btnOKClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure webViewDocumentComplete(Sender: TObject;
+      const pDisp: IDispatch; var URL: OleVariant);
+    procedure webViewBeforeNavigate2(Sender: TObject;
+      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
+      Headers: OleVariant; var Cancel: WordBool);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure btnBackClick(Sender: TObject);
+    procedure btnShowClick(Sender: TObject);
+  private
+    FOwnedBy: TComponent;
+    FRefNum:  Integer;
+    FDialog:  Integer;
+    FSetList: TStringList;
+    FPageCache: TList;
+    FCurrentIndex: Integer;
+    FCurrentURL: string;
+    FCurrentDoc: IHtmlDocument2;
+    FDelayEvent: TOrderDelayEvent;
+    FHistoryStack: TStringList;
+    FHistoryIndex: Integer;
+    function GetPageIndex(const URL: string): Integer;
+    function MetaElementExists(const AName, AContent: string): Boolean;
+    procedure AddPageToCache;
+    procedure SaveState;
+    procedure RestoreState;
+    procedure SetDialog(Value: Integer);
+  public
+    procedure SetEventDelay(AnEvent: TOrderDelayEvent);
+    property Dialog:  Integer     read FDialog  write SetDialog;
+    property OwnedBy: TComponent  read FOwnedBy write FOwnedBy;
+    property RefNum:  Integer     read FRefNum  write FRefNum;
+    property SetList: TStringList read FSetList write FSetList;
+  end;
+
+var
+  frmOMHTML: TfrmOMHTML;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rCore, uCore, uOrders, ORNet, TRPCB, rMisc;
+
+const
+  TAB = #9;
+
+type
+  TPageState = class
+  private
+    FURL:        string;
+    FTagStates:  TStringList;
+    FSubmitData: TStringList;
+  public
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+{ TPageState }
+
+constructor TPageState.Create;
+begin
+  FTagStates  := TStringList.Create;
+  FSubmitData := TStringList.Create;
+end;
+
+destructor TPageState.Destroy;
+begin
+  FTagStates.Free;
+  FSubmitData.Free;
+  inherited;
+end;
+
+{ temporary RPC's }
+
+function GetIENforHtml(const AnID: string): Integer;
+{AnID, O.name or O.ien for 101.41, H.name or H.ien for 101.14}
+begin
+  Result := StrToIntDef(sCallV('ORWDHTM GETIEN', [AnID]), 0);
+end;
+
+function GetHTMLText(AnIEN: Integer): string;
+{return HTML text from 101.14 given IEN}
+begin
+  CallV('ORWDHTM HTML', [AnIEN, Patient.DFN]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+function GetURLforDialog(AnIEN: Integer): string;
+begin
+  Result := sCallV('ORWDHTM URL', [AnIEN]);
+  if Result = '' then Result := 'about:URL not found';
+end;
+
+procedure NameValueToViewList(Src, Dest: TStringList);
+{ xform name<TAB>value into DlgIEN^DlgType^DisplayName list }
+var
+  i: Integer;
+  Subs: string;
+begin
+  RPCBrokerV.ClearParameters := True;
+  RPCBrokerV.RemoteProcedure := 'ORWDHTM NV2DNM';
+  RPCBrokerV.Param[0].PType := list;
+  for i := 0 to Pred(Src.Count) do
+  begin
+    Subs := IntToStr(Succ(i));
+    RPCBrokerV.Param[0].Mult[Subs] := Copy(Src[i], 1, 245);
+  end; {for i}
+  CallBroker;
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure NameValueToOrderSet(Src, Dest: TStringList);
+{ xform name<TAB>value into DlgIEN^DlgType^DisplayName list }
+var
+  i, j: Integer;
+  Subs: string;
+  WPText: TStringList;
+begin
+  RPCBrokerV.ClearParameters := True;
+  RPCBrokerV.RemoteProcedure := 'ORWDHTM NV2SET';
+  RPCBrokerV.Param[0].PType := list;
+  WPText := TStringList.Create;
+  for i := 0 to Pred(Src.Count) do
+  begin
+    WPText.Clear;
+    WPText.Text := Copy(Src[i], Pos(TAB, Src[i]) + 1, Length(Src[i]));
+    Subs := IntToStr(Succ(i));
+    if WPText.Count = 1 then RPCBrokerV.Param[0].Mult[Subs] := Src[i] else
+    begin
+      RPCBrokerV.Param[0].Mult['"WP",' + Subs] :=
+        Piece(Src[i], TAB, 1) + TAB + 'NMVAL("WP",' + Subs + ')';
+      for j := 0 to Pred(WPText.Count) do
+        RPCBrokerV.Param[0].Mult['"WP",' + Subs + ',' + IntToStr(Succ(j)) + ',0'] := WPText[j];
+    end; {if WPText}
+  end; {for i}
+  CallBroker;
+  WPText.Free;
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+{ general procedures }
+
+procedure TfrmOMHTML.SetEventDelay(AnEvent: TOrderDelayEvent);
+begin
+  FDelayEvent := AnEvent;
+end;
+
+function TfrmOMHTML.GetPageIndex(const URL: string): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  for i := 0 to Pred(FPageCache.Count) do
+    if TPageState(FPageCache[i]).FURL = URL then
+    begin
+      Result := i;
+      break;
+    end;
+end;
+
+function TfrmOMHTML.MetaElementExists(const AName, AContent: string): Boolean;
+var
+  i: Integer;
+  AnElement: IHtmlElement;
+  AllElements: IHtmlElementCollection;
+begin
+  Result := False;
+  AllElements := FCurrentDoc.All;
+  for i := 0 to Pred(AllElements.Length) do
+  begin
+    AnElement := AllElements.Item(i, 0) as IHtmlElement;
+    if AnElement.tagName = 'META' then
+      with AnElement as IHtmlMetaElement do
+        if (CompareText(name, AName) = 0) and (CompareText(content, AContent) = 0)
+           then Result := True;
+    if Result then Break;
+  end;
+end;
+
+procedure TfrmOMHTML.AddPageToCache;
+var
+  APageState: TPageState;
+begin
+  APageState := TPageState.Create;
+  APageState.FURL := FCurrentURL;
+  FCurrentIndex := FPageCache.Add(APageState);
+end;
+
+procedure TfrmOMHTML.SaveState;
+var
+  i: Integer;
+  SelectName, State, NmVal, x: string;
+  APageState: TPageState;
+  AnElement: IHtmlElement;
+  AnInput: IHtmlInputElement;
+  ASelect: IHtmlSelectElement;
+  AnOption: IHtmlOptionElement;
+  ATextArea: IHtmlTextAreaElement;
+  AllElements: IHtmlElementCollection;
+begin
+  if FCurrentIndex < 0 then Exit;
+  Assert(Assigned(FCurrentDoc));
+  APageState := FPageCache[FCurrentIndex];
+  APageState.FTagStates.Clear;
+  APageState.FSubmitData.Clear;
+  if not MetaElementExists('VistAuse', 'ORWDSET') then Exit;
+
+  AllElements := FCurrentDoc.All;
+  for i := 0 to Pred(AllElements.Length) do
+  begin
+    AnElement := AllElements.Item(i, 0) as IHtmlElement;
+    NmVal := '';
+    State := '';
+    if AnElement.tagName = 'INPUT' then
+    begin
+      AnInput := AnElement as IHtmlInputElement;
+      if AnInput.type_ = 'checkbox' then
+      begin
+        if AnInput.checked then
+        begin
+          State := AnInput.name + TAB + '1';
+          NmVal := AnInput.name + TAB + '1';
+        end
+        else State := AnInput.name + TAB + '0';
+      end; {checkbox}
+      if AnInput.type_ = 'radio' then
+      begin
+        if AnInput.checked then
+        begin
+          State := AnInput.name + AnInput.Value + TAB + '1';
+          NmVal := AnInput.value + TAB + '1';
+        end
+        else State := AnInput.name + AnInput.Value + TAB + '0';
+      end; {radio}
+      if (AnInput.type_ = 'hidden') or (AnInput.type_ = 'password') or (AnInput.type_ = 'text') then
+      begin
+        State := AnInput.name + TAB + AnInput.value;
+        NmVal := State;
+      end; {hidden, password, text}
+    end; {INPUT}
+    if AnElement.tagname = 'SELECT' then
+    begin
+      ASelect := AnElement as IHtmlSelectElement;
+      SelectName := ASelect.name;
+    end; {SELECT}
+    if AnElement.tagName = 'OPTION' then
+    begin
+      AnOption := AnElement as IHtmlOptionElement;
+      x := AnOption.value;
+      if x = '' then x := AnOption.text;
+      if AnOption.Selected then
+      begin
+        State := SelectName + x + TAB + '1';
+        NmVal := SelectName + TAB + x;
+      end
+      else State := SelectName + x + TAB + '0';
+    end; {OPTION}
+    if AnElement.tagName = 'TEXTAREA' then
+    begin
+      ATextArea := AnElement as IHtmlTextAreaElement;
+      State := ATextArea.name + TAB + ATextArea.value;
+      NmVal := State;
+    end; {TEXTAREA}
+    if Length(State) > 0 then APageState.FTagStates.Add(State);
+    if Length(NmVal) > 0 then APageState.FSubmitData.Add(NmVal);
+  end; {for i}
+end;
+
+procedure TfrmOMHTML.RestoreState;
+var
+  i: Integer;
+  SelectName, x: string;
+  APageState: TPageState;
+  AnElement: IHtmlElement;
+  AnInput: IHtmlInputElement;
+  ASelect: IHtmlSelectElement;
+  AnOption: IHtmlOptionElement;
+  ATextArea: IHtmlTextAreaElement;
+  AllElements: IHtmlElementCollection;
+
+  function GetStateFromName(const AName: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    for i := 0 to Pred(APageState.FTagStates.Count) do
+    begin
+      if Piece(APageState.FTagStates[i], TAB, 1) = AName then
+      begin
+        Result := Piece(APageState.FTagStates[i], TAB, 2);
+        Break;
+      end; {if Piece}
+    end; {for i}
+  end; {GetStateFromName}
+
+begin
+  APageState := TPageState(FPageCache.Items[FCurrentIndex]);
+  if APageState.FTagStates.Count = 0 then Exit;
+  AllElements := FCurrentDoc.All;
+  for i := 0 to Pred(AllElements.Length) do
+  begin
+    AnElement := AllElements.Item(i, 0) as IHtmlElement;
+    if AnElement.tagName = 'INPUT' then
+    begin
+      AnInput := AnElement as IHtmlInputElement;
+      if AnInput.type_ = 'checkbox'
+        then AnInput.Set_checked(GetStateFromName(AnInput.name) = '1');
+      if AnInput.Type_ = 'radio'
+        then AnInput.Set_checked(GetStateFromName(AnInput.name + AnInput.Value) = '1');
+      if (AnInput.type_ = 'hidden') or (AnInput.type_ = 'password') or (AnInput.type_ = 'text')
+        then AnInput.Set_value(GetStateFromName(AnInput.name));
+    end; {INPUT}
+    if AnElement.tagname = 'SELECT' then
+    begin
+      ASelect := AnElement as IHtmlSelectElement;
+      SelectName := ASelect.name;
+    end; {SELECT}
+    if AnElement.tagName = 'OPTION' then
+    begin
+      AnOption := AnElement as IHtmlOptionElement;
+      x := AnOption.value;
+      if x = '' then x := AnOption.text;
+      AnOption.Set_selected(GetStateFromName(SelectName + x) = '1');
+    end; {OPTION}
+    if AnElement.tagName = 'TEXTAREA' then
+    begin
+      ATextArea := AnElement as IHtmlTextAreaElement;
+      ATextArea.Set_value(GetStateFromName(ATextArea.name));
+    end; {TEXTAREA}
+  end; {for i}
+end;
+
+procedure TfrmOMHTML.SetDialog(Value: Integer);
+begin
+  FDialog := Value;
+  webView.Navigate(GetURLForDialog(FDialog));
+end;
+
+{ Form events (get the initial page loaded) }
+
+procedure TfrmOMHTML.FormCreate(Sender: TObject);
+begin
+  AutoSizeDisabled := True;
+  inherited;
+  FPageCache := TList.Create;
+  FSetList := TStringList.Create;
+  FHistoryStack := TStringList.Create;
+  FHistoryIndex := -1;
+  FCurrentIndex := -1;
+end;
+
+procedure TfrmOMHTML.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+  if (FOwnedBy <> nil) and (FOwnedBy is TWinControl)
+      then SendMessage(TWinControl(FOwnedBy).Handle, UM_DESTROY, FRefNum, 0);
+end;
+
+procedure TfrmOMHTML.FormDestroy(Sender: TObject);
+var
+  i: Integer;
+begin
+  for i := Pred(FPageCache.Count) downto 0 do TPageState(FPageCache[i]).Free;
+  DestroyingOrderHTML;
+  FSetList.Free;
+  FHistoryStack.Free;
+  inherited;
+end;
+
+{ webBrowser events }
+
+procedure TfrmOMHTML.webViewDocumentComplete(Sender: TObject; const pDisp: IDispatch;
+  var URL: OleVariant);
+{ This event happens after a navigation.  It is at this point that there is an instantiated
+  instance of IHtmlDocument available. }
+begin
+  inherited;
+  if not Assigned(webView.Document) then Exit;
+  FCurrentDoc := webView.Document as IHtmlDocument2;
+  FCurrentURL := URL;
+  FHistoryStack.Add(FCurrentURL);
+  btnBack.Enabled := FHistoryStack.Count > 1;
+  FCurrentIndex := GetPageIndex(FCurrentURL);
+  if FCurrentIndex >= 0 then RestoreState else AddPageToCache;
+end;
+
+function CopyToCtrlChar(const Src: string; StartAt: Integer): string;
+var
+  i: Integer;
+begin
+  Result := '';
+  if StartAt < 1 then StartAt := 1;
+  for i := StartAt to Length(Src) do
+    if Ord(Src[i]) > 31 then Result := Result + Src[i] else break;
+end;
+
+procedure TfrmOMHTML.webViewBeforeNavigate2(Sender: TObject;  const pDisp: IDispatch;
+  var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
+begin
+  inherited;
+  SaveState;
+  // activate order dialog here, i.e., 'about:CPRSOrder=FHW1'
+end;
+
+{ button events }
+
+procedure TfrmOMHTML.btnOKClick(Sender: TObject);
+var
+  i, j: Integer;
+  APageState: TPageState;
+begin
+  inherited;
+  SaveState;
+  // create an order set based on all the saved states of pages navigated to
+  for i := 0 to Pred(FPageCache.Count) do
+  begin
+    APageState := FPageCache[i];
+    for j := 0 to Pred(APageState.FSubmitData.Count) do
+    begin
+      FSetList.Add(APageState.FSubmitData[j]);
+    end;
+  end;
+  NameValueToOrderSet(FSetList, FSetList);
+  // put in reference number, key variables, & caption later as necessary
+  //ActivateOrderList(NameValuePairs, FDelayEvent, Self, 0, '', '');
+  Close;
+end;
+
+procedure TfrmOMHTML.btnCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmOMHTML.btnBackClick(Sender: TObject);
+var
+  BackURL: string;
+begin
+  inherited;
+  if FHistoryStack.Count > 1 then
+  begin
+    FHistoryStack.Delete(Pred(FHistoryStack.Count));
+    BackURL := FHistoryStack[Pred(FHistoryStack.Count)];
+    FHistoryStack.Delete(Pred(FHistoryStack.Count));
+    if FHistoryStack.Count < 2 then btnBack.Enabled := False;
+    webView.Navigate(BackURL);
+  end;
+end;
+
+procedure TfrmOMHTML.btnShowClick(Sender: TObject);
+var
+  i, j: Integer;
+  APageState: TPageState;
+  tmpList: TStringList;
+begin
+  inherited;
+  SaveState;
+  tmpList := TStringList.Create;
+  // create an order set based on all the saved states of pages navigated to
+  for i := 0 to Pred(FPageCache.Count) do
+  begin
+    APageState := FPageCache[i];
+    for j := 0 to Pred(APageState.FSubmitData.Count) do
+    begin
+      tmpList.Add(APageState.FSubmitData[j]);
+    end;
+  end;
+  NameValueToViewList(tmpList, tmpList);
+  InfoBox(tmpList.Text, 'Current Selections', MB_OK);
+  tmpList.Free;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMNavA.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMNavA.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMNavA.dfm	(revision 1676)
@@ -0,0 +1,159 @@
+inherited frmOMNavA: TfrmOMNavA
+  Left = 212
+  Top = 354
+  BorderIcons = []
+  Caption = 'Order Menu'
+  ClientHeight = 278
+  ClientWidth = 483
+  OldCreateOrder = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  ExplicitLeft = 212
+  ExplicitTop = 354
+  ExplicitWidth = 491
+  ExplicitHeight = 312
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTool: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 483
+    Height = 19
+    Align = alTop
+    BevelOuter = bvLowered
+    Caption = 'Menu or Dialog Name'
+    Color = clHighlight
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clHighlightText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 1
+    OnMouseDown = pnlToolMouseDown
+    OnMouseMove = pnlToolMouseMove
+    OnMouseUp = pnlToolMouseUp
+    object cmdDone: TORAlignButton
+      Left = 432
+      Top = 1
+      Width = 50
+      Height = 17
+      Align = alRight
+      Caption = 'Done'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 0
+      OnClick = cmdDoneClick
+    end
+    object cmdPrev: TBitBtn
+      Left = 0
+      Top = 1
+      Width = 20
+      Height = 17
+      Caption = 'Back'
+      Enabled = False
+      TabOrder = 1
+      OnClick = cmdPrevClick
+      Glyph.Data = {
+        06010000424D06010000000000007600000028000000180000000C0000000100
+        0400000000009000000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333377333
+        3333333773333333337C7333333333777333333337CC73333333377373333333
+        7CCC73333333773373333337CCCC7333333773337333337CCCCC733333373333
+        733333CCCCCC7333337333337333333CCCCC73333337333373333333CCCC7333
+        33337333733333333CCC7333333337337333333333CC73333333337373333333
+        333C3333333333373333}
+      Layout = blGlyphTop
+      Margin = 0
+      NumGlyphs = 2
+      Spacing = 80
+    end
+    object cmdNext: TBitBtn
+      Left = 20
+      Top = 1
+      Width = 21
+      Height = 17
+      Caption = 'Forward'
+      Enabled = False
+      TabOrder = 2
+      OnClick = cmdNextClick
+      Glyph.Data = {
+        06010000424D06010000000000007600000028000000180000000C0000000100
+        0400000000009000000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333733333333
+        333733333333333C73333333333773333333333CC7333333333777333333333C
+        CC733333333737733333333CCCC73333333733773333333CCCCC733333373337
+        7333333CCCCCC333333733337333333CCCCC3333333733373333333CCCC33333
+        333733733333333CCC333333333737333333333CC3333333333773333333333C
+        33333333333733333333}
+      Layout = blGlyphTop
+      Margin = 0
+      NumGlyphs = 2
+      Spacing = 80
+    end
+  end
+  object grdMenu: TCaptionStringGrid [1]
+    Left = 0
+    Top = 19
+    Width = 483
+    Height = 259
+    Align = alClient
+    BorderStyle = bsNone
+    Color = clBtnFace
+    ColCount = 3
+    DefaultColWidth = 160
+    DefaultRowHeight = 15
+    DefaultDrawing = False
+    FixedCols = 0
+    FixedRows = 0
+    Options = [goFixedVertLine, goFixedHorzLine]
+    ScrollBars = ssVertical
+    TabOrder = 0
+    OnDrawCell = grdMenuDrawCell
+    OnKeyDown = grdMenuKeyDown
+    OnKeyUp = grdMenuKeyUp
+    OnMouseDown = grdMenuMouseDown
+    OnMouseMove = grdMenuMouseMove
+    OnMouseUp = grdMenuMouseUp
+    Caption = 'Menu or Dialog Name'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 8
+    Top = 40
+    Data = (
+      (
+        'Component = pnlTool'
+        'Status = stsDefault')
+      (
+        'Component = cmdDone'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrev'
+        'Status = stsDefault')
+      (
+        'Component = cmdNext'
+        'Status = stsDefault')
+      (
+        'Component = grdMenu'
+        'Status = stsDefault')
+      (
+        'Component = frmOMNavA'
+        'Status = stsDefault'))
+  end
+  object accEventsGrdMenu: TVA508ComponentAccessibility
+    Component = grdMenu
+    OnCaptionQuery = accEventsGrdMenuCaptionQuery
+    OnValueQuery = accEventsGrdMenuValueQuery
+    Left = 40
+    Top = 40
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMNavA.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMNavA.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMNavA.pas	(revision 1676)
@@ -0,0 +1,740 @@
+unit fOMNavA;
+
+{$ASSERTIONS OFF}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  Buttons, Grids, StdCtrls, ORCtrls, ExtCtrls, uConst, rOrders, uOrders, fFrame, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOMNavA = class(TfrmBase508Form)
+    pnlTool: TPanel;
+    cmdDone: TORAlignButton;
+    grdMenu: TCaptionStringGrid;
+    cmdPrev: TBitBtn;
+    cmdNext: TBitBtn;
+    accEventsGrdMenu: TVA508ComponentAccessibility;
+    procedure FormActivate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+    procedure grdMenuDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure grdMenuKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure grdMenuMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure grdMenuMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure grdMenuMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlToolMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlToolMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure pnlToolMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure cmdDoneClick(Sender: TObject);
+    procedure cmdPrevClick(Sender: TObject);
+    procedure cmdNextClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure grdMenuKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormResize(Sender: TObject);
+    procedure accEventsGrdMenuCaptionQuery(Sender: TObject;
+      var Text: string);
+    procedure accEventsGrdMenuValueQuery(Sender: TObject;
+      var Text: string);
+  private
+    FOrderingMenu: Integer;
+    FLastCol: Integer;
+    FLastRow: Integer;
+    FMouseDown: Boolean;
+    FCtrlUp: Boolean;
+    FSelecting: Boolean;
+    FOrderMenuItem: TOrderMenuItem;
+    FMenuHits: TList; {of TOrderMenu}
+    FStack: TList; {of TMenuPath}
+    FQuickBitmap: TBitmap;
+    FOrigPoint: TPoint;
+    FStartPoint: TPoint;
+    FFormMove: Boolean;
+    FKeyVars: string;
+    FDelayEvent: TOrderDelayEvent;
+    FMenuStyle: Integer;
+    FRefNum: Integer;
+    FSelectList: TList; {of TOrderMenuItem}
+    FTheShift: TShiftState;
+    procedure ActivateDialog(AnItem: TOrderMenuItem);
+    procedure AddToSelectList(AnItem: TOrderMenuItem);
+    procedure ClearMenuGrid;
+    function DialogNotDisabled(DlgIEN: Integer): Boolean;
+    procedure DoSelectList;
+    function FindOrderMenu(AMenu: Integer): TOrderMenu;
+    procedure PlaceMenuItems;
+    procedure SetNavButtons;
+    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
+    procedure UMDestroy(var Message: TMessage);    message UM_DESTROY;
+  public
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure SetEventDelay(AnEvent: TOrderDelayEvent);
+    procedure SetNewMenu(MenuIEN: Integer; AnOwner: TComponent; ARefNum: Integer);
+    procedure ResizeFont;
+    property RefNum: Integer read FRefNum write FRefNum;
+  end;
+
+var
+  frmOMNavA: TfrmOMNavA;
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase, ORFn, fODBase,fODGen, fODAuto, fOMVerify, uCore, rMisc, uODBase,
+  fOrders, VAUtils;
+
+const
+  TX_NOFORM    = 'This selection does not have an associated windows form.';
+  TC_NOFORM    = 'Missing Form ID';
+  TX_ODACTIVE  = 'An ordering dialog is already active.';
+  TC_ODACTIVE  = 'Unable to Select Item';
+  TX_QO_NOSAVE = 'Unexpected error - it was not possible to save this order.';
+  TC_QO_NOSAVE = 'Unable to Save Quick Order';
+  TC_DISABLED  = 'Item Disabled';
+
+type
+  TMenuPath = class
+    IENList: array of Integer;
+    OwnedBy: TComponent;
+    RefNum:  Integer;
+    Current: Integer;
+  end;
+
+procedure TfrmOMNavA.ClearMenuGrid;
+var
+  ACol, ARow: Integer;
+begin
+  with grdMenu do
+  begin
+    for ACol := 0 to ColCount - 1 do for ARow := 0 to RowCount - 1 do
+    begin
+      Objects[ACol, ARow] := nil;
+      Cells[ACol, ARow] := '';
+    end;
+    RowCount := 1;
+    ColCount := 1;
+    Cells[0, 0] := '';
+  end;
+end;
+
+function TfrmOMNavA.FindOrderMenu(AMenu: Integer): TOrderMenu;
+{ searchs the menu cache (FMenuHits) for a menu.  If not there, load the menu from the server. }
+var
+  i: Integer;
+  AnOrderMenu: TOrderMenu;
+begin
+  i := 0;
+  Result := nil;
+  while (i < FMenuHits.Count) and (Result = nil) do          // search the menu cache
+  begin
+    AnOrderMenu := TOrderMenu(FMenuHits.Items[i]);
+    if AnOrderMenu.IEN = AMenu then Result := AnOrderMenu;
+    Inc(i);
+  end;
+  if Result = nil then                                       // load new menu from server
+  begin
+    AnOrderMenu := TOrderMenu.Create;
+    AnOrderMenu.IEN := AMenu;
+    AnOrderMenu.MenuItems := TList.Create;
+    LoadOrderMenu(AnOrderMenu, AMenu);
+    FMenuHits.Add(AnOrderMenu);
+    Result := AnOrderMenu;
+  end;
+end;
+
+procedure TfrmOMNavA.PlaceMenuItems;
+{ places the menu items in the proper grid cells }
+var
+  i: Integer;
+  OrderMenu: TOrderMenu;
+  OrderMenuItem: TOrderMenuItem;
+begin
+  ClearMenuGrid;
+  OrderMenu := FindOrderMenu(FOrderingMenu);
+  if OrderMenu = nil then Exit;
+  pnlTool.Caption  := OrderMenu.Title;
+  grdMenu.ColCount := OrderMenu.NumCols;
+  FKeyVars         := OrderMenu.KeyVars;
+  grdMenu.DefaultColWidth := (grdMenu.ClientWidth div grdMenu.ColCount) - 1;
+  with OrderMenu.MenuItems do for i := 0 to Count - 1 do
+  begin
+    OrderMenuItem := TOrderMenuItem(Items[i]);
+    with grdMenu do
+    begin
+      if OrderMenuItem.Row >= RowCount then RowCount := OrderMenuItem.Row + 1;
+      if (OrderMenuItem.Col > -1) and (OrderMenuItem.Row > -1) then
+      begin
+        Cells[OrderMenuItem.Col, OrderMenuItem.Row] := OrderMenuItem.ItemText;
+        Objects[OrderMenuItem.Col, OrderMenuItem.Row] := OrderMenuItem;
+      end; {if OrderMenuItem}
+    end; {with grdMenu}
+  end; {for i}
+  with grdMenu do if VisibleRowCount < RowCount then
+    ColWidths[ColCount - 1] := DefaultColWidth - GetSystemMetrics(SM_CXVSCROLL);
+end;
+
+procedure TfrmOMNavA.SetNewMenu(MenuIEN: Integer; AnOwner: TComponent; ARefNum: Integer);
+{ Creates a new 'starting' menu.  For initial menu or menu from inside order set. }
+var
+  NewMenuPath: TMenuPath;
+begin
+  NewMenuPath := TMenuPath.Create;
+  SetLength(NewMenuPath.IENList, 1);
+  NewMenuPath.IENList[0] := MenuIEN;
+  NewMenuPath.OwnedBy := AnOwner;
+  NewMenuPath.RefNum  := ARefNum;
+  NewMenuPath.Current := 0;
+  FStack.Add(NewMenuPath);
+  FOrderingMenu := MenuIEN;  // sets new starting point here
+  SetNavButtons;
+  PlaceMenuItems;            // displays menu, with nav & done buttons set
+  PushKeyVars(FKeyVars);
+  Self.Enabled := True;
+end;
+
+{ menu navigation }
+
+procedure TfrmOMNavA.SetNavButtons;
+var
+  MenuPath: TMenuPath;
+begin
+  with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+  cmdPrev.Enabled := MenuPath.Current > 0;
+  cmdNext.Enabled := MenuPath.Current < High(MenuPath.IENList);
+  if FStack.Count > 1 then cmdDone.Caption := 'Next' else cmdDone.Caption := 'Done';
+  pnlTool.Invalidate;
+end;
+
+procedure TfrmOMNavA.cmdPrevClick(Sender: TObject);
+var
+  MenuPath: TMenuPath;
+begin
+  with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+  Dec(MenuPath.Current);
+  FOrderingMenu := MenuPath.IENList[MenuPath.Current];
+  SetNavButtons;
+  PlaceMenuItems;
+  PopKeyVars;
+end;
+
+procedure TfrmOMNavA.cmdNextClick(Sender: TObject);
+var
+  MenuPath: TMenuPath;
+begin
+  with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+  Inc(MenuPath.Current);
+  FOrderingMenu := MenuPath.IENList[MenuPath.Current];
+  SetNavButtons;
+  PlaceMenuItems;
+  PushKeyVars(FKeyVars);
+end;
+
+procedure TfrmOMNavA.cmdDoneClick(Sender: TObject);
+var
+  MenuPath: TMenuPath;
+begin
+  if FSelecting then Exit;
+  with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+  with FStack do Delete(Count - 1);
+  if FStack.Count = 0 then Close;
+  with MenuPath do if (OwnedBy <> nil) and (OwnedBy is TWinControl)
+    then SendMessage(TWinControl(OwnedBy).Handle, UM_DESTROY, RefNum, 0);
+  PopKeyVars(MenuPath.Current + 1);
+  MenuPath.Free;
+  if FStack.Count > 0 then
+  begin
+    with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+    FOrderingMenu := MenuPath.IENList[MenuPath.Current];
+    SetNavButtons;
+    PlaceMenuItems;
+  end;
+end;
+
+{ Form methods }
+
+procedure TfrmOMNavA.FormCreate(Sender: TObject);
+begin
+  FLastCol := -1;
+  FLastRow := -1;
+  FMenuStyle := OrderMenuStyle;
+  FMenuHits := TList.Create;
+  FStack := TList.Create;
+  FSelectList := TList.Create;
+  FQuickBitmap := TBitmap.Create;
+  FQuickBitmap.LoadFromResourceName(hInstance, 'BMP_QO_THIN');
+  NoFresh := True;
+  ResizeFont;
+//  TAccessibleStringGrid.WrapControl(grdMenu);
+end;
+
+procedure TfrmOMNavA.CreateParams(var Params: TCreateParams);
+begin
+  inherited CreateParams(Params);
+  with Params do Style := (Style or WS_POPUP) and (not WS_DLGFRAME);
+  //with Params do Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
+end;
+
+procedure TfrmOMNavA.UMDestroy(var Message: TMessage);
+{ sent by ordering dialog when it is closing }
+begin
+  Self.Enabled := True;
+  Self.SetFocus;
+end;
+
+procedure TfrmOMNavA.accEventsGrdMenuCaptionQuery(Sender: TObject;
+  var Text: string);
+begin
+  Text := pnlTool.Caption;
+end;
+
+procedure TfrmOMNavA.FormDestroy(Sender: TObject);
+var
+  i, j: Integer;
+  OrderMenu: TOrderMenu;
+  OrderMenuItem: TOrderMenuItem;
+begin
+//  TAccessibleStringGrid.UnwrapControl(grdMenu);
+  ClearMenuGrid;
+  for i := 0 to FMenuHits.Count - 1 do
+  begin
+    OrderMenu := TOrderMenu(FMenuHits.Items[i]);
+    for j := 0 to OrderMenu.MenuItems.Count - 1 do
+    begin
+      OrderMenuItem := TOrderMenuItem(OrderMenu.MenuItems.Items[j]);
+      OrderMenuItem.Free;
+    end;
+    OrderMenu.MenuItems.Clear;
+    OrderMenu.MenuItems.Free;
+    OrderMenu.Free;
+  end;
+  FMenuHits.Free;
+  Assert(FStack.Count = 0);
+  FStack.Free;
+  Assert(FSelectList.Count = 0);
+  FSelectList.Free;
+  FQuickBitmap.Free;
+  DestroyingOrderMenu;
+  if (frmOrders.TheCurrentView<>nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0)
+    and (IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN)) then
+    SendMessage(frmOrders.handle,UM_EVENTOCCUR,0,0);
+end;
+
+procedure TfrmOMNavA.FormActivate(Sender: TObject);
+begin
+  // do we need to bring something to front here?
+end;
+
+procedure TfrmOMNavA.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  MenuPath: TMenuPath;
+begin
+  while FStack.Count > 0 do
+  begin
+    with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+    with MenuPath do if (OwnedBy <> nil) and (OwnedBy is TWinControl)
+      then SendMessage(TWinControl(OwnedBy).Handle, UM_DESTROY, RefNum, 0);
+    PopKeyVars(MenuPath.Current + 1);
+    MenuPath.Free;
+    with FStack do Delete(Count - 1);
+  end;
+  SaveUserBounds(Self);
+  NoFresh := False;
+  Action := caFree;
+end;
+
+procedure TfrmOMNavA.SetEventDelay(AnEvent: TOrderDelayEvent);
+begin
+  FDelayEvent := AnEvent;
+end;
+
+procedure TfrmOMNavA.grdMenuDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
+  State: TGridDrawState);
+{ Draws each cell in the grid based on characteristics in associated OrderMenuItem object. }
+const
+  QO_BMP_WIDTH = 15;
+var
+  OrderMenuItem: TOrderMenuItem;
+  AMnemonic: string;
+  MneRect, ItmRect: TRect;
+  MneWidth: integer;
+begin
+  //if Sender = ActiveControl then Exit;
+  //if not (gdSelected in State) then Exit;
+  with Sender as TStringGrid do with Canvas do
+  begin
+    MneWidth := TextWidthByFont(Handle, 'MMM');
+    OrderMenuItem := TOrderMenuItem(grdMenu.Objects[ACol, ARow]);
+    if (OrderMenuItem <> nil) then with OrderMenuItem do
+    begin
+      Font.Style := [];
+      Font.Color := clWindowText;
+      if Selected    then
+      begin
+        Font.Color := Get508CompliantColor(clBlue);
+        Font.Style := Font.Style + [fsUnderline];
+      end;
+      if Display = 2 then
+        Font.Style := Font.Style + [fsBold];
+    end;
+    Brush.Color := Color;
+    if (FMenuStyle = 0) and
+      ((OrderMenuItem = nil) or ((OrderMenuItem <> nil) and (OrderMenuItem.Display <> 2))) then
+    begin
+      if OrderMenuItem <> nil then AMnemonic := OrderMenuItem.Mnemonic else AMnemonic := '';
+      FillRect(Rect);
+      MneRect.Left := Rect.Left + QO_BMP_WIDTH;
+      MneRect.Right := MneRect.Left + MneWidth;
+      MneRect.Top := Rect.Top + 2;
+      MneRect.Bottom := Rect.Bottom;
+      ItmRect.Left := Rect.Left + QO_BMP_WIDTH + MneWidth + 1;
+      ItmRect.Right := Rect.Right;
+      ItmRect.Top := Rect.Top + 2;
+      ItmRect.Bottom := Rect.Bottom;
+      TextRect(MneRect, MneRect.Left, MneRect.Top, AMnemonic);
+      TextRect(ItmRect, ItmRect.Left, ItmRect.Top, Cells[ACol, ARow]);
+    end
+    else TextRect(Rect, Rect.Left + QO_BMP_WIDTH, Rect.Top + 2, Cells[ACol, ARow]);
+    if (OrderMenuItem <> nil) and OrderMenuItem.AutoAck
+      then Draw(Rect.Left + 2, Rect.Top + 2, FQuickBitmap);	{ draw bitmap }
+    if gdSelected in State then
+    begin
+      Pen.Width := 1;
+      if FMouseDown then Pen.Color := clBtnShadow    else Pen.Color := clBtnHighlight;
+      MoveTo(Rect.Left,  Rect.Bottom - 1);
+      LineTo(Rect.Left,  Rect.Top);
+      LineTo(Rect.Right, Rect.Top);
+      if FMouseDown then Pen.Color := clBtnHighlight else Pen.Color := clBtnShadow;
+      LineTo(Rect.Right, Rect.Bottom);
+      LineTo(Rect.Left,  Rect.Bottom);
+    end;
+  end;
+end;
+
+{ Mouse & Keyboard Handling }
+
+procedure TfrmOMNavA.AddToSelectList(AnItem: TOrderMenuItem);
+begin
+  if AnItem = nil then Exit;
+  FSelectList.Add(AnItem);
+  FSelecting := True;
+  cmdDone.Enabled := False;
+end;
+
+procedure TfrmOMNavA.DoSelectList;
+var
+  i: Integer;
+  x: string;
+  ItemList: TStringList;
+  AMenuItem: TOrderMenuItem;
+begin
+  FSelecting := False;
+  cmdDone.Enabled := True;
+  if FSelectList.Count = 0 then Exit;
+  ItemList := TStringList.Create;
+  try
+    for i := 0 to FSelectList.Count - 1 do
+    begin
+      AMenuItem := TOrderMenuItem(FSelectList[i]);
+      if AMenuItem <> nil then
+      begin
+        x := IntToStr(AMenuItem.IEN) + U + AMenuItem.DlgType + U + AMenuItem.ItemText;
+        ItemList.Add(x);
+      end;
+    end;
+    if ItemList.Count > 0 then ActivateOrderList(ItemList, FDelayEvent, Self, 0, '', '');
+  finally
+    FSelectList.Clear;
+    ItemList.Free;
+  end;
+end;
+
+procedure TfrmOMNavA.grdMenuKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  //frmFrame.UpdatePtInfoOnRefresh;
+  if Key in [VK_RETURN, VK_SPACE] then with grdMenu do
+  begin
+    if frmOrders <> nil then
+    begin
+       if (frmOrders.TheCurrentView<>nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0)
+         and IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN) then
+       begin
+         FDelayEvent.EventType := #0;
+         FDelayEvent.EventIFN  := 0;
+         FDelayEvent.TheParent := TParentEvent.Create;
+         FDelayEvent.EventName := '';
+         FDelayEvent.PtEventIFN := 0;
+       end;
+    end;
+    //frmFrame.UpdatePtInfoOnRefresh;
+    FOrderMenuItem := TOrderMenuItem(Objects[Col, Row]);
+    if Assigned(FOrderMenuItem) then
+      if FOrderMenuItem.Display > 0 then FOrderMenuItem := nil;          // display only
+    if FOrderMenuItem <> nil then
+    begin
+      FOrderMenuItem.Selected := True;
+      if ssCtrl in Shift
+        then AddToSelectList(FOrderMenuItem)
+        else ActivateDialog(FOrderMenuItem);
+      FOrderMenuItem := nil;
+      Key := 0;
+    end;
+    if frmOrders <> nil then
+    begin
+       if (frmOrders.TheCurrentView<>nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0)
+         and IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN) then
+       begin
+         FDelayEvent.EventType := #0;
+         FDelayEvent.EventIFN  := 0;
+         FDelayEvent.TheParent := TParentEvent.Create;
+         FDelayEvent.EventName := '';
+         FDelayEvent.PtEventIFN := 0;
+       end;
+    end;
+  end;
+  if Key = VK_BACK then
+  begin
+    cmdPrevClick(Self);
+    Key := 0;
+  end;
+  if Key = VK_ESCAPE then
+  begin
+    cmdDoneClick(Self);
+    Key := 0;
+  end;
+end;
+
+procedure TfrmOMNavA.grdMenuKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_CONTROL then
+  begin
+    if FMouseDown then FCtrlUp := True else DoSelectList;
+  end;
+end;
+
+procedure TfrmOMNavA.grdMenuMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  ACol, ARow: Integer;
+begin
+  //frmFrame.UpdatePtInfoOnRefresh;
+  if ssDouble in Shift then
+  begin
+    FTheShift := [ssDouble];
+    Exit;  // ignore a double click
+  end;
+  if frmOrders <> nil then
+  begin
+    if (frmOrders.TheCurrentView<>nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0)
+      and IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN) then
+    begin
+      FDelayEvent.EventType := #0;
+      FDelayEvent.EventIFN  := 0;
+      FDelayEvent.TheParent := TParentEvent.Create;
+      FDelayEvent.EventName := '';
+      FDelayEvent.PtEventIFN := 0;
+    end;
+  end;
+  //frmFrame.UpdatePtInfoOnRefresh;
+  with grdMenu do
+  begin
+    MouseToCell(X, Y, ACol, ARow);
+    if (ACol > -1) and (ARow > -1) and (ACol < grdMenu.ColCount) and (ARow < grdMenu.RowCount) then
+    begin
+      FMouseDown := True;
+      FOrderMenuItem := TOrderMenuItem(Objects[ACol, ARow]);
+      // check to see if this is a display only field
+      if (FOrderMenuItem <> nil) and (FOrderMenuItem.Display > 0) then FOrderMenuItem := nil;
+      if  FOrderMenuItem <> nil then FOrderMenuItem.Selected := True;
+    end;
+  end;
+end;
+
+procedure TfrmOMNavA.grdMenuMouseMove(Sender: TObject; Shift: TShiftState;
+  X, Y: Integer);
+var
+  ACol, ARow: Integer;
+begin
+  grdMenu.MouseToCell(X, Y, ACol, ARow);
+  if (ACol = FLastCol) and (ARow = FLastRow) then Exit;
+  if (ACol > -1) and (ARow > -1) and (ACol < grdMenu.ColCount) and (ARow < grdMenu.RowCount) then
+  begin
+    FLastCol := ACol;
+    FLastRow := ARow;
+    grdMenu.Col := ACol;
+    grdMenu.Row := ARow;
+  end;
+end;
+
+procedure TfrmOMNavA.grdMenuMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if ssDouble in Shift then Exit;  // ignore a double click
+  if ssDouble in FTheShift then
+  begin
+    FTheShift := [];
+    Exit;
+  end;
+
+  FMouseDown := False;
+  //grdMenu.Invalidate;
+  // may want to check here to see if mouse still over the same item
+  if ssCtrl in Shift then AddToSelectList(FOrderMenuItem) else
+  begin
+    if FCtrlUp then
+    begin
+      FCtrlUp := False;
+      AddToSelectList(FOrderMenuItem);
+      DoSelectList;
+    end
+    else ActivateDialog(FOrderMenuItem);
+  end;
+  FCtrlUp := False;
+  FOrderMenuItem := nil;
+  if frmOrders <> nil then
+  begin
+    if (frmOrders.TheCurrentView<>nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0)
+      and IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN) then
+    begin
+      FDelayEvent.EventType := #0;
+      FDelayEvent.EventIFN  := 0;
+      FDelayEvent.TheParent := TParentEvent.Create;
+      FDelayEvent.EventName := '';
+      FDelayEvent.PtEventIFN := 0;
+    end;
+  end;
+end;
+
+procedure TfrmOMNavA.CMMouseLeave(var Message: TMessage);
+begin
+  inherited;
+  FLastCol := -1;
+  FLastRow := -1;
+end;
+
+function TfrmOMNavA.DialogNotDisabled(DlgIEN: Integer): Boolean;
+var
+  x: string;
+begin
+  Result := True;
+  x := OrderDisabledMessage(DlgIEN);
+  if Length(x) > 0 then
+  begin
+    Result := False;
+    InfoBox(x, TC_DISABLED, MB_OK);
+  end;
+end;
+
+procedure TfrmOMNavA.accEventsGrdMenuValueQuery(Sender: TObject;
+  var Text: string);
+var
+  OrderMenuItem : TOrderMenuItem;
+begin
+  inherited;
+  if grdMenu.Objects[grdMenu.Col, grdMenu.Row] is TOrderMenuItem then begin
+    OrderMenuItem := TOrderMenuItem(grdMenu.Objects[grdMenu.Col, grdMenu.Row]);
+    if OrderMenuItem.AutoAck then
+      Text := 'Auto Accept, '+ OrderMenuItem.ItemText;
+  end;
+end;
+
+procedure TfrmOMNavA.ActivateDialog(AnItem: TOrderMenuItem);
+var
+  MenuPath: TMenuPath;
+begin
+  if AnItem = nil then Exit;
+  case AnItem.DlgType of
+  #0:  { ignore if no type, i.e., display header or blank };
+  'A': ActivateAction(IntToStr(AnItem.IEN) + ';' + IntToStr(AnItem.FormID), Self, 0);
+  'D': ActivateOrderDialog(IntToStr(AnItem.IEN), FDelayEvent, Self, 0);
+  'M': begin
+         // this simply moves to new menu, rather than open a new form as in ActivateOrderMenu
+         if DialogNotDisabled(AnItem.IEN) then
+         begin
+           with FStack do MenuPath := TMenuPath(Items[Count - 1]);
+           with MenuPath do
+           begin
+             Inc(Current);
+             if Current > High(IENList) then SetLength(IENList, Current + 1);
+             if Current <> AnItem.IEN then
+             begin
+               IENList := Copy(IENList, 0, Current + 1);
+               IENList[Current] := AnItem.IEN;
+             end;
+             FOrderingMenu := AnItem.IEN;
+             SetNavButtons;
+             PlaceMenuItems;
+             PushKeyVars(FKeyVars);
+             with grdMenu do
+               GoodNotifyWinEvent(EVENT_OBJECT_FOCUS, Handle, integer(OBJID_CLIENT), ColRowToIndex(Col,Row));
+           end; {with MenuPath}
+         end; {if}
+       end; {'M'}
+  'Q': ActivateOrderDialog(IntToStr(AnItem.IEN), FDelayEvent, Self, 0);
+  'P': ShowMsg('Order Dialogs of type "Prompt" cannot be processed.');
+  'O': begin
+         // disable initially, since the 1st item in the set may be a menu
+         Self.Enabled := False;
+         if not ActivateOrderSet(IntToStr(AnItem.IEN), FDelayEvent, Self, 0)
+           then Self.Enabled := True;
+       end;
+  else ShowMsg('Unknown Order Dialog type: ' + AnItem.DlgType);
+  end; {case}
+end;
+
+{ imitate caption bar using panel at top of form }
+
+procedure TfrmOMNavA.pnlToolMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if Button <> mbLeft then Exit;
+  FStartPoint := TControl(Sender).ClientToScreen(Point(X, Y));
+  FOrigPoint  := Point(Left, Top);
+  FFormMove   := True;
+end;
+
+procedure TfrmOMNavA.pnlToolMouseMove(Sender: TObject; Shift: TShiftState;
+  X, Y: Integer);
+var
+  NewPoint: TPoint;
+begin
+  if FFormMove then
+  begin
+    NewPoint := TControl(Sender).ClientToScreen(Point(X, Y));
+    SetBounds(FOrigPoint.X - (FStartPoint.X - NewPoint.X),
+              FOrigPoint.Y - (FStartPoint.Y - NewPoint.Y), Width, Height);
+  end;
+end;
+
+procedure TfrmOMNavA.pnlToolMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  FFormMove := False;
+end;
+
+procedure TfrmOMNavA.FormResize(Sender: TObject);
+begin
+  grdMenu.DefaultColWidth := (grdMenu.ClientWidth div grdMenu.ColCount) - 1;
+  grdMenu.Refresh;
+end;
+
+procedure TfrmOMNavA.ResizeFont;
+begin
+  ResizeAnchoredFormToFont(Self);
+  grdMenu.Canvas.Font := grdMenu.Font;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMProgress.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMProgress.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMProgress.dfm	(revision 1676)
@@ -0,0 +1,43 @@
+inherited frmOMProgress: TfrmOMProgress
+  Left = 221
+  Top = 542
+  BorderIcons = []
+  Caption = 'Order Set Progress'
+  ClientHeight = 188
+  ClientWidth = 159
+  ExplicitWidth = 167
+  ExplicitHeight = 215
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lstItems: TCheckListBox [0]
+    Left = 0
+    Top = 0
+    Width = 159
+    Height = 167
+    Align = alClient
+    Color = clCream
+    ItemHeight = 13
+    TabOrder = 0
+  end
+  object cmdStop: TORAlignButton [1]
+    Left = 0
+    Top = 167
+    Width = 159
+    Height = 21
+    Align = alBottom
+    Caption = 'Stop Order Set'
+    TabOrder = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstItems'
+        'Status = stsDefault')
+      (
+        'Component = cmdStop'
+        'Status = stsDefault')
+      (
+        'Component = frmOMProgress'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMProgress.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMProgress.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMProgress.pas	(revision 1676)
@@ -0,0 +1,47 @@
+unit fOMProgress;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORCtrls, CheckLst, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmOMProgress = class(TfrmAutoSz)
+    lstItems: TCheckListBox;
+    cmdStop: TORAlignButton;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmOMProgress: TfrmOMProgress;
+
+procedure OrderSetStart(AnItemList: TStringList);
+procedure OrderSetItemStart(AnItem: Integer; ADialog: TForm);
+procedure OrderSetItemDone(AnItem: Integer);
+procedure OrderSetDone;
+
+implementation
+
+{$R *.DFM}
+
+procedure OrderSetStart(AnItemList: TStringList);
+begin
+end;
+
+procedure OrderSetItemStart(AnItem: Integer; ADialog: TForm);
+begin
+end;
+
+procedure OrderSetItemDone(AnItem: Integer);
+begin
+end;
+
+procedure OrderSetDone;
+begin
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMSet.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMSet.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMSet.dfm	(revision 1676)
@@ -0,0 +1,53 @@
+inherited frmOMSet: TfrmOMSet
+  Left = 209
+  Top = 191
+  BorderIcons = []
+  Caption = 'Selected Orders'
+  ClientHeight = 202
+  ClientWidth = 105
+  FormStyle = fsStayOnTop
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 113
+  ExplicitHeight = 229
+  DesignSize = (
+    105
+    202)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lstSet: TCheckListBox [0]
+    Left = 0
+    Top = 0
+    Width = 104
+    Height = 165
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Color = clBtnFace
+    Enabled = False
+    ItemHeight = 13
+    TabOrder = 0
+  end
+  object cmdInterupt: TButton [1]
+    Left = 4
+    Top = 172
+    Width = 96
+    Height = 26
+    Anchors = [akLeft, akRight, akBottom]
+    Caption = 'Stop Order Set'
+    TabOrder = 1
+    OnClick = cmdInteruptClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstSet'
+        'Status = stsDefault')
+      (
+        'Component = cmdInterupt'
+        'Status = stsDefault')
+      (
+        'Component = frmOMSet'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMSet.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMSet.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMSet.pas	(revision 1676)
@@ -0,0 +1,320 @@
+unit fOMSet;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, CheckLst, rOrders, uConst, ORFn, rODMeds, fODBase,uCore,fOrders, fframe, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TSetItem = class
+    DialogIEN: Integer;
+    DialogType: Char;
+    OIIEN: string;
+    InPkg: string;
+    OwnedBy: TComponent;
+    RefNum: Integer;
+  end;
+
+  TfrmOMSet = class(TfrmBase508Form)
+    lstSet: TCheckListBox;
+    cmdInterupt: TButton;
+    procedure cmdInteruptClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure FormCreate(Sender: TObject);
+  private
+    DoingNextItem : Boolean;
+    CloseRequested : Boolean;
+    FDelayEvent: TOrderDelayEvent;
+    FClosing: Boolean;
+    FRefNum: Integer;
+    FActiveMenus: Integer;
+    FClosebyDeaCheck: Boolean;
+    function  IsCreatedByMenu(ASetItem: TSetItem): boolean;
+    function  DeaCheckPassed(OIIens: string; APkg: string; AnEventType: Char): boolean;
+    procedure DoNextItem;
+    procedure UMDestroy(var Message: TMessage); message UM_DESTROY;
+    procedure UMDelayEvent(var Message: TMessage); message UM_DELAYEVENT;
+  public
+    procedure InsertList(SetList: TStringList; AnOwner: TComponent; ARefNum: Integer;
+                         const KeyVarStr: string; AnEventType:Char =#0);
+    procedure SetEventDelay(AnEvent: TOrderDelayEvent);
+    property RefNum: Integer read FRefNum write FRefNum;
+  end;
+
+var
+  frmOMSet: TfrmOMSet;
+
+implementation
+
+{$R *.DFM}
+
+uses uOrders, fOMNavA, rMisc, uODBase;
+
+const
+  TX_STOP = 'Do you want to stop entering the current set of orders?';
+  TC_STOP = 'Interrupt Order Set';
+
+procedure TfrmOMSet.SetEventDelay(AnEvent: TOrderDelayEvent);
+begin
+  FDelayEvent := AnEvent;
+end;
+
+procedure TfrmOMSet.InsertList(SetList: TStringList; AnOwner: TComponent; ARefNum: Integer;
+  const KeyVarStr: string; AnEventType: Char);
+{ expects SetList to be strings of DlgIEN^DlgType^DisplayName^OrderableItemIens }
+const
+  TXT_DEAFAIL = 'You need have #DEA key to place the order ';
+  TXT_INSTRUCT = #13 + 'Click OK to continue, Click Cancel to terminate the current order process.';
+var
+  i, InsertAt: Integer;
+  SetItem: TSetItem;
+begin
+  InsertAt := lstSet.ItemIndex + 1;
+  with SetList do for i := 0 to Count - 1 do
+  begin
+    SetItem := TSetItem.Create;
+    SetItem.DialogIEN  := StrToIntDef(Piece(SetList[i], U, 1), 0);
+    SetItem.DialogType := CharAt(Piece(SetList[i], U, 2), 1);
+    SetItem.OIIEN      := Piece(SetList[i], U, 4);
+    SetItem.InPkg      := Piece(SetList[i], U, 5);
+    // put the Owner form and reference number in the last item
+    if i = Count - 1 then
+    begin
+      SetItem.OwnedBy := AnOwner;
+      SetItem.RefNum  := ARefNum;
+    end;
+    if not DeaCheckPassed(SetItem.OIIEN, SetItem.InPkg, AnEventType) then
+      if InfoBox(TXT_DEAFAIL + Piece(SetList[i], U, 3) + TXT_INSTRUCT,
+          'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDOK then
+        Continue
+      else
+      begin
+        FClosebyDeaCheck := True;
+        Close;
+        Exit;
+      end;
+    lstSet.Items.InsertObject(InsertAt, Piece(SetList[i], U, 3), SetItem);
+    Inc(InsertAt);
+  end;
+  PushKeyVars(KeyVarStr);
+  DoNextItem;
+end;
+
+procedure TfrmOMSet.DoNextItem;
+var
+  SetItem: TSetItem;
+  theOwner: TComponent;
+
+  procedure SkipToNext;
+  begin
+    lstSet.Checked[lstSet.ItemIndex] := True;
+    DoNextItem;
+  end;
+
+begin
+  DoingNextItem := true;
+  //frmFrame.UpdatePtInfoOnRefresh;
+  if FClosing then Exit;
+  if frmOrders <> nil then
+  begin
+   if (frmOrders.TheCurrentView<>nil) and (frmOrders.TheCurrentView.EventDelay.PtEventIFN>0)
+    and IsCompletedPtEvt(frmOrders.TheCurrentView.EventDelay.PtEventIFN) then
+   begin
+     FDelayEvent.EventType := #0;
+     FDelayEvent.EventIFN  := 0;
+     FDelayEvent.TheParent := TParentEvent.Create;
+     FDelayEvent.EventName := '';
+     FDelayEvent.PtEventIFN := 0;
+   end;
+  end;
+  with lstSet do
+  begin
+    if ItemIndex >= Items.Count - 1 then
+    begin
+      Close;
+      Exit;
+    end;
+    ItemIndex := ItemIndex + 1;
+    SetItem := TSetItem(Items.Objects[ItemIndex]);
+    case SetItem.DialogType of
+    'A':      if not ActivateAction(IntToStr(SetItem.DialogIEN), Self, ItemIndex) then
+              begin
+                if IsCreatedByMenu(SetItem) and (lstSet.ItemIndex < lstSet.Items.Count - 1) then
+                  lstSet.Checked[lstSet.ItemIndex] := True
+                else SkipToNext;
+              end;
+    'D', 'Q': if not ActivateOrderDialog(IntToStr(SetItem.DialogIEN), FDelayEvent, Self, ItemIndex) then
+                begin
+                  if Not FClosing then
+                  begin
+                    if IsCreatedByMenu(SetItem) and (lstSet.ItemIndex < lstSet.Items.Count - 1) then
+                      lstSet.Checked[lstSet.ItemIndex] := True
+                    else SkipToNext;
+                  end;
+                end;
+    'M':      if ActivateOrderMenu(  IntToStr(SetItem.DialogIEN), FDelayEvent, Self, ItemIndex)
+                then Inc(FActiveMenus)
+                else
+                begin
+                  if IsCreatedByMenu(SetItem) and (lstSet.ItemIndex < lstSet.Items.Count - 1) then
+                    lstSet.Checked[lstSet.ItemIndex] := True
+                  else
+                    SkipToNext;
+                end;
+    'O':      begin
+                if (Self.Owner.Name = 'frmOMNavA') then theOwner := Self.Owner else theOwner := self;
+                if not ActivateOrderSet( IntToStr(SetItem.DialogIEN), FDelayEvent, theOwner, ItemIndex) then
+                begin
+                  if IsCreatedByMenu(SetItem) and (lstSet.ItemIndex < lstSet.Items.Count - 1) then
+                    lstSet.Checked[lstSet.ItemIndex] := True
+                  else SkipToNext;
+                end;
+              end;
+    else      begin
+                InfoBox('Unsupported dialog type: ' + SetItem.DialogType, 'Error', MB_OK);
+                SkipToNext;
+              end;
+    end; {case}
+  end; {with lstSet}
+  DoingNextItem := false;
+end;
+
+procedure TfrmOMSet.UMDelayEvent(var Message: TMessage);
+begin
+  // ignore if delay from other than current itemindex
+  // (prevents completion of an order set from calling DoNextItem)
+  if Message.WParam = lstSet.ItemIndex then
+    if lstSet.ItemIndex < lstSet.Items.Count - 1 then DoNextItem else Close;
+  if CloseRequested then
+    Close;
+end;
+
+procedure TfrmOMSet.UMDestroy(var Message: TMessage);
+{ Received whenever activated item is finished.  Posts to Owner if last item in the set. }
+var
+  SetItem: TSetItem;
+  RefNum: Integer;
+begin
+  RefNum := Message.WParam;
+  lstSet.Checked[RefNum] := True;
+  SetItem := TSetItem(lstSet.Items.Objects[RefNum]);
+  if SetItem.DialogType = 'M' then Dec(FActiveMenus);
+  if (SetItem.OwnedBy <> nil) and (SetItem.DialogType <> 'O') then
+  begin
+    PopKeyVars;
+    if ((lstSet.ItemIndex = lstSet.Count - 1) and (lstSet.Checked[lstSet.ItemIndex] = True)) then Close;
+    if {(SetItem.OwnedBy <> Self) and} (SetItem.OwnedBy is TWinControl) then
+    begin
+      SendMessage(TWinControl(SetItem.OwnedBy).Handle, UM_DESTROY, SetItem.RefNum, 0);
+      //Exit;
+    end;
+  end;
+  // let menu or dialog finish closing before going on to next item in the order set
+  While RefNum <= lstSet.Items.Count - 2 do
+  begin
+    if not (lstSet.Checked[RefNum+1]) then Break
+    else
+    begin
+      RefNum := RefNum + 1;
+      lstSet.ItemIndex := RefNum;
+    end;
+  end;
+  PostMessage(Handle, UM_DELAYEVENT, RefNum, 0);
+end;
+
+procedure TfrmOMSet.FormCreate(Sender: TObject);
+begin
+  FActiveMenus := 0;
+  FClosing := False;
+  FClosebyDeaCheck := False;
+  NoFresh := True;
+  CloseRequested := false;
+  DoingNextItem := false;
+end;
+
+procedure TfrmOMSet.FormDestroy(Sender: TObject);
+var
+  i: Integer;
+begin
+  with lstSet do for i := 0 to Items.Count - 1 do TSetItem(Items.Objects[i]).Free;
+  DestroyingOrderSet;
+end;
+
+procedure TfrmOMSet.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+{ if this is not the last item in the set, prompt whether to interrupt processing }
+begin
+ if FClosebyDeaCheck then
+    CanClose := True
+ else if lstSet.ItemIndex < (lstSet.Items.Count - 1)
+   then CanClose := InfoBox(TX_STOP, TC_STOP, MB_YESNO) = IDYES;
+end;
+
+procedure TfrmOMSet.FormClose(Sender: TObject; var Action: TCloseAction);
+{ Notify remaining owners that their item is done (or - really never completed) }
+var
+  i: Integer;
+  SetItem: TSetItem;
+begin
+  // do we need to iterate thru and send messages where OwnedBy <> nil?
+  FClosing := True;
+  for i := 1 to FActiveMenus do PopLastMenu;
+  if lstSet.Items.Count > 0 then
+  begin
+    if lstSet.ItemIndex < 0 then lstSet.ItemIndex := 0;
+    with lstSet do for i := ItemIndex to Items.Count - 1 do
+    begin
+      SetItem := TSetItem(lstSet.Items.Objects[i]);
+      if (SetItem.OwnedBy <> nil) and (SetItem.OwnedBy is TWinControl)
+        then SendMessage(TWinControl(SetItem.OwnedBy).Handle, UM_DESTROY, SetItem.RefNum, 0);
+    end;
+  end;
+  SaveUserBounds(Self);
+  NoFresh := False;
+  Action := caFree;
+end;
+
+procedure TfrmOMSet.cmdInteruptClick(Sender: TObject);
+begin
+  if DoingNextItem then
+    CloseRequested := true              //Fix for CQ: 8297
+  else
+    Close;
+end;
+
+function TfrmOMSet.DeaCheckPassed(OIIens: string; APkg: string; AnEventType: Char): boolean;
+var
+  tmpIenList: TStringList;
+  i: integer;
+  isInpt: boolean;
+begin
+  Result := True;
+  if Pos('PS',APkg) <> 1 then
+    Exit;
+  if Length(OIIens)=0 then Exit;
+  tmpIenList := TStringList.Create;
+  PiecesToList(OIIens,';',TStrings(tmpIenList));
+  case AnEventType of
+  'A','T': isInpt := True;
+  'D': isInpt := False;
+  else isInpt := Patient.Inpatient;
+  end;
+  for i := 0 to tmpIenList.Count - 1 do
+    if DEACheckFailed(StrToIntDef(tmpIenList[i],0), isInpt) then
+    begin
+      Result := False;
+      Break;
+    end;
+end;
+
+function TfrmOMSet.IsCreatedByMenu(ASetItem: TSetItem): boolean;
+begin
+  Result := False;
+  if (AsetItem.OwnedBy <> nil) and (ASetItem.OwnedBy.Name = 'frmOMNavA') then
+    Result := True;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMVerify.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMVerify.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMVerify.dfm	(revision 1676)
@@ -0,0 +1,91 @@
+inherited frmOMVerify: TfrmOMVerify
+  Left = 328
+  Top = 243
+  BorderIcons = []
+  Caption = 'New Order'
+  ClientHeight = 181
+  ClientWidth = 579
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 587
+  ExplicitHeight = 208
+  PixelsPerInch = 96
+  TextHeight = 13
+  object cmdAccept: TButton [0]
+    Left = 165
+    Top = 154
+    Width = 72
+    Height = 21
+    Caption = 'Accept'
+    Default = True
+    TabOrder = 0
+    OnClick = cmdAcceptClick
+  end
+  object cmdEdit: TButton [1]
+    Left = 253
+    Top = 154
+    Width = 72
+    Height = 21
+    Caption = 'Edit'
+    TabOrder = 1
+    OnClick = cmdEditClick
+  end
+  object cmdCancel: TButton [2]
+    Left = 341
+    Top = 154
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object memText: TRichEdit [3]
+    Left = 6
+    Top = 6
+    Width = 567
+    Height = 132
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      
+        '1234567890123456789012345678901234567890123456789012345678901234' +
+        '5678901234567890'
+      '2'
+      '3'
+      '4'
+      '5'
+      '6'
+      '7'
+      '8'
+      '9'
+      '10')
+    ParentFont = False
+    ScrollBars = ssBoth
+    TabOrder = 3
+    WantTabs = True
+    WordWrap = False
+    OnKeyUp = memTextKeyUp
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdAccept'
+        'Status = stsDefault')
+      (
+        'Component = cmdEdit'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = memText'
+        'Status = stsDefault')
+      (
+        'Component = frmOMVerify'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMVerify.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMVerify.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOMVerify.pas	(revision 1676)
@@ -0,0 +1,154 @@
+unit fOMVerify;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, VA508AccessibilityManager;
+
+type
+  TfrmOMVerify = class(TfrmAutoSz)
+    cmdAccept: TButton;
+    cmdEdit: TButton;
+    cmdCancel: TButton;
+    memText: TRichEdit;
+    procedure cmdAcceptClick(Sender: TObject);
+    procedure cmdEditClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure memTextKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FLevel: Integer;
+  end;
+
+procedure ShowVerifyText(var QuickLevel: Integer; var VerifyText: string; InptDispGrp: boolean = False);
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, uConst, fFrame, rMisc, uODBase;
+
+procedure ShowVerifyText(var QuickLevel: Integer; var VerifyText: string; InptDispGrp: boolean);
+var
+  frmOMVerify: TfrmOMVerify;
+  tempStrs,prompts: TStringList;
+  flag: boolean;
+  HasObjects: boolean;
+
+  function CutoffOutptPrompts(const promptIDs: TStringList; var promptList: TStringList): boolean;
+  var
+    i,j: integer;
+  begin
+    result := False;
+    for i := 0 to promptList.Count - 1 do
+    begin
+      if result = True then
+        break;
+      for j := 0 to promptIDs.Count - 1 do
+      begin
+        if Pos(promptIDs[j],LowerCase(promptList[i]))>0 then
+        begin
+          promptList.Delete(i);
+          result := True;
+          break;
+        end;
+      end;
+    end;
+  end;
+
+begin
+  prompts := TStringList.Create;
+  prompts.Add('supply');
+  prompts.Add('quantity');
+  prompts.Add('refill');
+  prompts.Add('pick up');
+  prompts.Add('priority');
+  frmOMVerify := TfrmOMVerify.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmOMVerify));
+    if InptDispGrp then
+    begin
+      tempStrs := TStringList.Create;
+      TStrings(tempStrs).SetText(PChar(VerifyText));
+      repeat
+        flag := CutoffOutptPrompts(prompts, tempStrs);
+      until not flag;
+      SetString(VerifyText, tempStrs.GetText, StrLen(tempStrs.GetText))
+    end;
+
+    with frmOMVerify do
+    begin
+      SetBounds(frmFrame.Left, frmFrame.Top + frmFrame.Height - Height, Width, Height);
+      SetFormPosition(frmOMVerify);
+      ExpandOrderObjects(VerifyText, HasObjects);
+      memText.Lines.SetText(PChar(VerifyText));
+      ShowModal;
+      QuickLevel := FLevel;
+    end;
+  finally
+    frmOMVerify.Release;
+  end;
+end;
+
+
+procedure TfrmOMVerify.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FLevel := QL_CANCEL;
+end;
+
+procedure TfrmOMVerify.cmdAcceptClick(Sender: TObject);
+begin
+  inherited;
+  FLevel := QL_AUTO;
+  Close;
+end;
+
+procedure TfrmOMVerify.cmdEditClick(Sender: TObject);
+begin
+  inherited;
+  FLevel := QL_DIALOG;
+  Close;
+end;
+
+procedure TfrmOMVerify.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FLevel := QL_CANCEL;
+  Close;
+end;
+
+procedure TfrmOMVerify.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmOMVerify.memTextKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderComment.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderComment.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderComment.dfm	(revision 1676)
@@ -0,0 +1,80 @@
+inherited frmWardComments: TfrmWardComments
+  Left = 334
+  Top = 234
+  Caption = 'Comments for Order'
+  ClientHeight = 262
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 289
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 80
+    Width = 52
+    Height = 13
+    Caption = 'Comments:'
+  end
+  object cmdOK: TButton [1]
+    Left = 267
+    Top = 233
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [2]
+    Left = 347
+    Top = 233
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object memOrder: TMemo [3]
+    Left = 8
+    Top = 8
+    Width = 411
+    Height = 56
+    TabStop = False
+    Color = clBtnFace
+    Lines.Strings = (
+      'memOrder')
+    ReadOnly = True
+    TabOrder = 3
+    WantReturns = False
+  end
+  object memComments: TRichEdit [4]
+    Left = 8
+    Top = 94
+    Width = 411
+    Height = 123
+    ScrollBars = ssVertical
+    TabOrder = 0
+    WantTabs = True
+    OnKeyUp = memCommentsKeyUp
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = frmWardComments'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderComment.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderComment.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderComment.pas	(revision 1676)
@@ -0,0 +1,102 @@
+unit fOrderComment;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, ORFn, rOrders, VA508AccessibilityManager;
+
+type
+  TfrmWardComments = class(TfrmAutoSz)
+    Label1: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    memOrder: TMemo;
+    memComments: TRichEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure memCommentsKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteWardComments(AnOrder: TOrder): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+const
+  TC_PUT_ERR = 'Unable to Save Comments';
+
+function ExecuteWardComments(AnOrder: TOrder): Boolean;
+var
+  frmWardComments: TfrmWardComments;
+  ErrMsg: string;
+begin
+  Result := False;
+  frmWardComments := TfrmWardComments.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmWardComments));
+    with frmWardComments do
+    begin
+      memOrder.SetTextBuf(PChar(AnOrder.Text));
+      LoadWardComments(memComments.Lines, AnOrder.ID);
+      ShowModal;
+      if OKPressed then
+      begin
+        PutWardComments(memComments.Lines, AnOrder.ID, ErrMsg);
+        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TC_PUT_ERR, MB_OK);
+        Result := True;
+      end;
+    end;
+  finally
+    frmWardComments.Release;
+  end;
+end;
+
+procedure TfrmWardComments.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmWardComments.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmWardComments.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmWardComments.memCommentsKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderFlag.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderFlag.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderFlag.dfm	(revision 1676)
@@ -0,0 +1,129 @@
+inherited frmFlagOrder: TfrmFlagOrder
+  Left = 334
+  Top = 234
+  Caption = 'Flag Order'
+  ClientHeight = 264
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 334
+  ExplicitTop = 234
+  ExplicitWidth = 320
+  ExplicitHeight = 291
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 80
+    Width = 199
+    Height = 13
+    Caption = 'Reason for Flag    (Enter or select from list)'
+  end
+  object lblAlertRecipient: TLabel [1]
+    Left = 8
+    Top = 211
+    Width = 69
+    Height = 13
+    Caption = 'Alert Recipient'
+  end
+  object cmdOK: TButton [2]
+    Left = 267
+    Top = 227
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 347
+    Top = 227
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  object memOrder: TMemo [4]
+    Left = 8
+    Top = 8
+    Width = 411
+    Height = 56
+    Color = clBtnFace
+    Lines.Strings = (
+      'memOrder')
+    ReadOnly = True
+    TabOrder = 4
+    WantReturns = False
+  end
+  object cboAlertRecipient: TORComboBox [5]
+    Left = 7
+    Top = 227
+    Width = 226
+    Height = 21
+    HelpContext = 9102
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Alert Recipient'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnExit = cboOnExit
+    OnNeedData = cboAlertRecipientNeedData
+    CharsNeedMatch = 1
+  end
+  object cboFlagReason: TORComboBox [6]
+    Left = 8
+    Top = 99
+    Width = 411
+    Height = 106
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 80
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = cboAlertRecipient'
+        'Status = stsDefault')
+      (
+        'Component = cboFlagReason'
+        'Status = stsDefault')
+      (
+        'Component = frmFlagOrder'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderFlag.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderFlag.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderFlag.pas	(revision 1676)
@@ -0,0 +1,124 @@
+unit fOrderFlag;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, ORFn, rOrders, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmFlagOrder = class(TfrmAutoSz)
+    Label1: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    memOrder: TMemo;
+    lblAlertRecipient: TLabel;
+    cboAlertRecipient: TORComboBox;
+    cboFlagReason: TORComboBox;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboOnExit(Sender: TObject);
+    procedure cboAlertRecipientNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteFlagOrder(AnOrder: TOrder): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses uCore, rCore;
+
+var AlertRecip: Int64;
+
+function ExecuteFlagOrder(AnOrder: TOrder): Boolean;
+var
+  frmFlagOrder: TfrmFlagOrder;
+begin
+  Result := False;
+  frmFlagOrder := TfrmFlagOrder.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmFlagOrder));
+    //AlertRecip := User.DUZ;
+    with frmFlagOrder do
+    begin
+      memOrder.SetTextBuf(PChar(AnOrder.Text));
+      ShowModal;
+      if OKPressed then
+      begin
+        FlagOrder(AnOrder, cboFlagReason.Text, AlertRecip);
+        Result := True;
+      end;
+    end;
+  finally
+    frmFlagOrder.Release;
+    AlertRecip := 0;
+  end;
+end;
+
+procedure TfrmFlagOrder.FormCreate(Sender: TObject);
+var
+  tmpList: TStringList;
+begin
+  inherited;
+  OKPressed := False;
+  tmpList := TStringList.Create;
+  try
+    GetUserListParam(tmpList, 'OR FLAGGED ORD REASONS');
+    FastAssign(tmpList, cboFlagReason.Items);
+  finally
+    tmpList.Free;
+  end;
+  cboAlertRecipient.InitLongList('');
+  //cboAlertRecipient.SelectByIEN(User.DUZ);
+end;
+
+procedure TfrmFlagOrder.cmdOKClick(Sender: TObject);
+const
+  TX_REASON_REQ = 'A reason must be entered to flag an order.';
+  TC_REASON_REQ = 'Reason Required';
+begin
+  inherited;
+  if cboFlagReason.Text = '' then
+  //if txtReason.Text = '' then
+  begin
+    InfoBox(TX_REASON_REQ, TC_REASON_REQ, MB_OK);
+    Exit;
+  end;
+  cmdOK.SetFocus;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmFlagOrder.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmFlagOrder.cboOnExit(Sender: TObject);
+begin
+  with cboAlertRecipient do
+    if (ItemIndex = -1) or (Text = '') then
+    begin
+      AlertRecip := -1;
+      ItemIndex := -1;
+      Text := '';
+    end
+    else
+    begin
+      AlertRecip := ItemIEN;
+    end;
+end;
+
+procedure TfrmFlagOrder.cboAlertRecipientNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+   cboAlertRecipient.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderSaveQuick.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderSaveQuick.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderSaveQuick.dfm	(revision 1676)
@@ -0,0 +1,237 @@
+inherited frmSaveQuickOrder: TfrmSaveQuickOrder
+  Left = 308
+  Top = 171
+  Caption = 'Add to Common List (Meds, Inpatient)'
+  ClientHeight = 335
+  ClientWidth = 355
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 308
+  ExplicitTop = 171
+  ExplicitWidth = 363
+  ExplicitHeight = 362
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 355
+    Height = 113
+    Align = alTop
+    TabOrder = 0
+    object lblDisplayName: TLabel
+      Left = 8
+      Top = 70
+      Width = 261
+      Height = 13
+      Caption = 'Enter the name that should be used for this quick order.'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object memOrder: TMemo
+      Left = 8
+      Top = 8
+      Width = 340
+      Height = 46
+      Color = clBtnFace
+      ReadOnly = True
+      TabOrder = 0
+      WantReturns = False
+    end
+    object txtDisplayName: TCaptionEdit
+      Left = 8
+      Top = 84
+      Width = 340
+      Height = 21
+      TabOrder = 1
+      OnChange = txtDisplayNameChange
+      Caption = 'Enter the name that should be used for this quick order.'
+    end
+  end
+  object Panel2: TPanel [1]
+    Left = 0
+    Top = 113
+    Width = 355
+    Height = 181
+    Align = alClient
+    TabOrder = 1
+    object lblQuickList: TLabel
+      Left = 8
+      Top = 8
+      Width = 136
+      Height = 13
+      Caption = 'Meds, Inpatient Common List'
+    end
+    object lstQuickList: TORListBox
+      Left = 8
+      Top = 30
+      Width = 270
+      Height = 141
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Meds, Inpatient Common List'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object pnlUpButton: TKeyClickPanel
+      Left = 292
+      Top = 42
+      Width = 30
+      Height = 27
+      BevelOuter = bvNone
+      Caption = 'Display selected medication earlier'
+      TabOrder = 2
+      TabStop = True
+      OnClick = cmdUpClick
+      OnEnter = pnlUpButtonEnter
+      OnExit = pnlUpButtonExit
+      DesignSize = (
+        30
+        27)
+      object cmdUp: TSpeedButton
+        Left = 0
+        Top = 0
+        Width = 30
+        Height = 24
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Glyph.Data = {
+          F6000000424DF600000000000000760000002800000010000000100000000100
+          0400000000008000000000000000000000001000000010000000000000000000
+          8000008000000080800080000000800080008080000080808000C0C0C0000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+          33333333333333333333333333333333333333333CCCCC33333333333CCCCC33
+          333333333CCCCC33333333333CCCCC33333333333CCCCC33333333333CCCCC33
+          3333333CCCCCCCCC33333333CCCCCCC3333333333CCCCC333333333333CCC333
+          33333333333C3333333333333333333333333333333333333333}
+        OnClick = cmdUpClick
+      end
+    end
+    object pnlDownButton: TKeyClickPanel
+      Left = 292
+      Top = 76
+      Width = 31
+      Height = 26
+      BevelOuter = bvNone
+      Caption = 'Display selected medication  later'
+      TabOrder = 3
+      TabStop = True
+      OnClick = cmdDownClick
+      OnEnter = pnlUpButtonEnter
+      OnExit = pnlUpButtonExit
+      DesignSize = (
+        31
+        26)
+      object cmdDown: TSpeedButton
+        Left = 0
+        Top = 1
+        Width = 31
+        Height = 22
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        Glyph.Data = {
+          F6000000424DF600000000000000760000002800000010000000100000000100
+          0400000000008000000000000000000000001000000010000000000000000000
+          8000008000000080800080000000800080008080000080808000C0C0C0000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+          3333333333333333333333333333333333333333333C33333333333333CCC333
+          333333333CCCCC3333333333CCCCCCC33333333CCCCCCCCC333333333CCCCC33
+          333333333CCCCC33333333333CCCCC33333333333CCCCC33333333333CCCCC33
+          333333333CCCCC33333333333333333333333333333333333333}
+        OnClick = cmdDownClick
+      end
+    end
+    object cmdRename: TButton
+      Left = 286
+      Top = 128
+      Width = 62
+      Height = 21
+      Caption = 'Rename'
+      TabOrder = 4
+      OnClick = cmdRenameClick
+    end
+    object cmdDelete: TButton
+      Left = 286
+      Top = 153
+      Width = 62
+      Height = 21
+      Caption = 'Delete'
+      TabOrder = 5
+      OnClick = cmdDeleteClick
+    end
+  end
+  object Panel3: TPanel [2]
+    Left = 0
+    Top = 294
+    Width = 355
+    Height = 41
+    Align = alBottom
+    TabOrder = 2
+    object cmdOK: TButton
+      Left = 98
+      Top = 11
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 186
+      Top = 11
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = txtDisplayName'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = lstQuickList'
+        'Status = stsDefault')
+      (
+        'Component = pnlUpButton'
+        'Status = stsDefault')
+      (
+        'Component = pnlDownButton'
+        'Status = stsDefault')
+      (
+        'Component = cmdRename'
+        'Status = stsDefault')
+      (
+        'Component = cmdDelete'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmSaveQuickOrder'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderSaveQuick.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderSaveQuick.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderSaveQuick.pas	(revision 1676)
@@ -0,0 +1,310 @@
+unit fOrderSaveQuick;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, Buttons, ExtCtrls, StdCtrls, ORCtrls, ORFn, fODBase, uOrders,
+  VA508AccessibilityManager;
+
+type
+  TfrmSaveQuickOrder = class(TfrmAutoSz)
+    Panel1: TPanel;
+    memOrder: TMemo;
+    lblDisplayName: TLabel;
+    txtDisplayName: TCaptionEdit;
+    Panel2: TPanel;
+    lblQuickList: TLabel;
+    lstQuickList: TORListBox;
+    pnlUpButton: TKeyClickPanel;
+    cmdUp: TSpeedButton;
+    pnlDownButton: TKeyClickPanel;
+    cmdRename: TButton;
+    cmdDelete: TButton;
+    cmdDown: TSpeedButton;
+    Panel3: TPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure txtDisplayNameChange(Sender: TObject);
+    procedure cmdUpClick(Sender: TObject);
+    procedure cmdDownClick(Sender: TObject);
+    procedure cmdRenameClick(Sender: TObject);
+    procedure cmdDeleteClick(Sender: TObject);
+    procedure pnlUpButtonEnter(Sender: TObject);
+    procedure pnlUpButtonExit(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function EditCommonList(ADisplayGroup: Integer): Boolean;
+function SaveAsQuickOrder(ResponseSet: TResponses): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rODBase, rOrders, fRename;
+
+const
+  TX_DNAME_REQ = 'A name for the quick order must be entered in order to save it.';
+  TC_DNAME_REQ = 'Display Name Missing';
+  TX_DEL_CONFIRM = 'Remove the following quick order from your list?' + CRLF + CRLF;
+  TC_DEL_CONFIRM = 'Remove Quick Order';
+  TX_QO_RENAME   = 'Rename Quick Order';
+  TX_NO_DEL_NEW  = 'A new quick order cannot be deleted.  Press <Cancel> instead.';
+  TC_NO_DEL_NEW  = 'Remove Quick Order';
+  TX_NO_TEXT     = 'No fields have been entered - cannot save as quick order.';
+  TC_NO_TEXT     = 'Save as Quick Order';
+  TX_DUP_NAME = 'There is already a quick order with that name.' + CRLF +
+                'Please either delete the original or enter a different name.';
+  TC_DUP_NAME = 'Unable to save quick order';
+  TC_DUP_RENAME = 'Unable to rename quick order';
+
+function EditCommonList(ADisplayGroup: Integer): Boolean;
+var
+  frmSaveQuickOrder: TfrmSaveQuickOrder;
+  DGroupName: string;
+begin
+  Result := False;
+  frmSaveQuickOrder := TfrmSaveQuickOrder.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmSaveQuickOrder));
+    with frmSaveQuickOrder do
+    begin
+      if ADisplayGroup = ClinDisp then
+        ADisplayGroup := InptDisp;
+      DGroupName := NameOfDGroup(ADisplayGroup);
+      Caption := 'Edit Common Order List (' + DGroupName + ')';
+      lblQuickList.Caption := 'Common List for ' + DGroupName;
+      lstQuickList.Caption := lblQuickList.Caption;
+      lblDisplayName.Font.Color := clGrayText;
+      txtDisplayName.Enabled := False;
+      txtDisplayName.Color := clBtnFace;
+      with lstQuickList do
+      begin
+        LoadQuickListForOD(Items, ADisplayGroup);
+        ItemIndex := 0;
+      end;
+      ActiveControl := lstQuickList;
+      ShowModal;
+      if OKPressed then
+      begin
+        Result := True;
+        // replace the user's quick list with this new quick list
+        SaveQuickListForOD(lstQuickList.Items, ADisplayGroup);
+      end; {if OKPressed}
+    end; {with frmSaveQuickOrder}
+  finally
+    frmSaveQuickOrder.Release;
+  end;
+end;
+
+function SaveAsQuickOrder(ResponseSet: TResponses): Boolean;
+const
+  EMPTY_CRC = 'FFFFFFFF';
+var
+  frmSaveQuickOrder: TfrmSaveQuickOrder;
+  DGroupName, QuickName, CRC: string;
+  NewIEN, AnIndex, i: Integer;
+  IsClinicOrder: boolean;
+begin
+  Result := False;
+  CRC := ResponseSet.OrderCRC;
+  IsClinicOrder := False;
+  if CRC = EMPTY_CRC then
+  begin
+    InfoBox(TX_NO_TEXT, TC_NO_TEXT, MB_OK);
+    Exit;
+  end;
+  frmSaveQuickOrder := TfrmSaveQuickOrder.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmSaveQuickOrder));
+    with frmSaveQuickOrder do
+    begin
+      if (ResponseSet.DisplayGroup = ClinDisp) and (ResponseSet.Dialog = 'PSJI OR PAT FLUID OE') then
+        begin
+          ResponseSet.DisplayGroup := IVDisp;
+          IsClinicOrder := True;
+        end;
+      if ResponseSet.DisplayGroup = ClinDisp then
+        DGroupName := NameOfDGroup(InptDisp)
+      else
+        DGroupName := NameOfDGroup(ResponseSet.DisplayGroup);
+      if DGroupName = 'Inpt. Meds' then
+        begin
+          ResponseSet.DisplayGroup := InptDisp;
+          DGroupName := NameOfDGroup(InptDisp);
+        end;
+      Caption := 'Add Quick Order (' + DGroupName + ')';
+      lblQuickList.Caption := 'Common List for ' + DGroupName;
+      lstQuickList.Caption := lblQuickList.Caption;
+      QuickName := GetQuickName(CRC);
+      memOrder.Text := ResponseSet.OrderText;
+      txtDisplayName.Text := QuickName;
+      with lstQuickList do
+      begin
+        if ResponseSet.DisplayGroup = ClinDisp then
+          LoadQuickListForOD(Items, InptDisp)
+        else
+          LoadQuickListForOD(Items, ResponseSet.DisplayGroup);
+        if Length(QuickName) > 0
+          then Items.Insert(0, '-1^' + QuickName)
+          else Items.Insert(0, '-1^<New Quick Order>');
+        ItemIndex := 0;
+      end;
+      ActiveControl := txtDisplayName;
+      ShowModal;
+      if OKPressed then
+      begin
+        Result := True;
+        // save reponses as quick order
+        ResponseSet.SaveQuickOrder(NewIEN, txtDisplayName.Text);
+        // find the new quick order and set the new IEN
+        AnIndex := -1;
+        with lstQuickList do for i := 0 to Items.Count - 1 do
+          if GetIEN(i) = -1 then AnIndex := i;
+        if AnIndex > -1 then lstQuickList.Items[AnIndex] := IntToStr(NewIEN) + U +
+                                                            txtDisplayName.Text;
+        // replace the user's quick list with this new quick list
+        if ResponseSet.DisplayGroup = ClinDisp then
+          SaveQuickListForOD(lstQuickList.Items, InptDisp)
+        else
+          SaveQuickListForOD(lstQuickList.Items, ResponseSet.DisplayGroup);
+      end; {if OKPressed}
+      if IsClinicOrder = True then ResponseSet.DisplayGroup := ClinDisp;
+    end; {with frmSaveQuickOrder}
+  finally
+    frmSaveQuickOrder.Release;
+  end;
+end;
+
+procedure TfrmSaveQuickOrder.txtDisplayNameChange(Sender: TObject);
+var
+  AnIndex, i: Integer;
+begin
+  inherited;
+  if txtDisplayName.Text = '' then Exit;
+  AnIndex := -1;
+  with lstQuickList do for i := 0 to Items.Count - 1 do
+    if GetIEN(i) = -1 then AnIndex := i;
+  if AnIndex > -1 then lstQuickList.Items[AnIndex] := '-1^' + txtDisplayName.Text;
+end;
+
+procedure TfrmSaveQuickOrder.cmdUpClick(Sender: TObject);
+var
+  NewIndex: Integer;
+begin
+  inherited;
+  with lstQuickList do
+  begin
+    if ItemIndex < 1 then Exit;
+    NewIndex := ItemIndex - 1;
+    Items.Move(ItemIndex, NewIndex);
+    ItemIndex := NewIndex;
+  end;
+end;
+
+procedure TfrmSaveQuickOrder.cmdDownClick(Sender: TObject);
+var
+  NewIndex: Integer;
+begin
+  inherited;
+  with lstQuickList do
+  begin
+    if ItemIndex > Items.Count - 2 then Exit;
+    NewIndex := ItemIndex + 1;
+    Items.Move(ItemIndex, NewIndex);
+    ItemIndex := NewIndex;
+  end;
+end;
+
+procedure TfrmSaveQuickOrder.cmdRenameClick(Sender: TObject);
+var
+  AName: string;
+  i: integer;
+begin
+  inherited;
+  with lstQuickList do
+  begin
+    if ItemIndex < 0 then Exit;
+    AName := Piece(Items[ItemIndex], U, 2);
+    if ExecuteRename(AName, TX_QO_RENAME) then
+    begin
+      i := Items.IndexOf(AName);
+      if (i > -1) and (i <> ItemIndex) then
+        InfoBox(TX_DUP_NAME, TC_DUP_RENAME, MB_ICONERROR or MB_OK)
+      else
+        Items[ItemIndex] := Piece(Items[ItemIndex], U, 1) + U + AName;
+    end;
+  end;
+
+end;
+
+procedure TfrmSaveQuickOrder.cmdDeleteClick(Sender: TObject);
+begin
+  inherited;
+  with lstQuickList do
+  begin
+    if ItemIndex < 0 then Exit;
+    if ItemIEN = -1 then
+    begin
+      InfoBox(TX_NO_DEL_NEW, TC_NO_DEL_NEW, MB_OK);
+      Exit;
+    end;
+    if InfoBox(TX_DEL_CONFIRM + DisplayText[ItemIndex], TC_DEL_CONFIRM,
+      MB_YESNO or MB_ICONQUESTION) = IDYES then Items.Delete(ItemIndex);
+  end;
+end;
+
+procedure TfrmSaveQuickOrder.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmSaveQuickOrder.cmdOKClick(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+  if txtDisplayName.Enabled then
+  begin
+    if (txtDisplayName.Text = '') then
+    begin
+      InfoBox(TX_DNAME_REQ, TC_DNAME_REQ, MB_OK);
+      Exit;
+    end;
+    for i := 0 to lstQuickList.Count - 1 do
+      if (UpperCase(lstQuickList.DisplayText[i]) = UpperCase(txtDisplayName.Text)) and (i > 0) then
+      begin
+        InfoBox(TX_DUP_NAME, TC_DUP_NAME, MB_ICONERROR or MB_OK);
+        lstQuickList.ItemIndex := i;
+        Exit;
+      end;
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmSaveQuickOrder.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmSaveQuickOrder.pnlUpButtonEnter(Sender: TObject);
+begin
+  inherited;
+  TPanel(Sender).BevelOuter := bvRaised;
+end;
+
+procedure TfrmSaveQuickOrder.pnlUpButtonExit(Sender: TObject);
+begin
+  inherited;
+  TPanel(Sender).BevelOuter := bvNone;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderUnflag.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderUnflag.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderUnflag.dfm	(revision 1676)
@@ -0,0 +1,89 @@
+inherited frmUnflagOrder: TfrmUnflagOrder
+  Left = 365
+  Top = 389
+  Caption = 'Unflag Order'
+  ClientHeight = 203
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 230
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 123
+    Width = 90
+    Height = 13
+    Caption = 'Comment (optional)'
+  end
+  object txtComment: TCaptionEdit [1]
+    Left = 8
+    Top = 137
+    Width = 411
+    Height = 21
+    MaxLength = 80
+    TabOrder = 0
+    Caption = 'Comment (optional)'
+  end
+  object cmdOK: TButton [2]
+    Left = 267
+    Top = 174
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 347
+    Top = 174
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object memReason: TMemo [4]
+    Left = 8
+    Top = 80
+    Width = 411
+    Height = 35
+    Color = clBtnFace
+    ReadOnly = True
+    TabOrder = 4
+    WantReturns = False
+  end
+  object memOrder: TMemo [5]
+    Left = 8
+    Top = 8
+    Width = 411
+    Height = 56
+    Color = clBtnFace
+    ReadOnly = True
+    TabOrder = 3
+    WantReturns = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtComment'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = memReason'
+        'Status = stsDefault')
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = frmUnflagOrder'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderUnflag.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderUnflag.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderUnflag.pas	(revision 1676)
@@ -0,0 +1,74 @@
+unit fOrderUnflag;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, ORFn, rOrders, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmUnflagOrder = class(TfrmAutoSz)
+    txtComment: TCaptionEdit;
+    Label1: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    memReason: TMemo;
+    memOrder: TMemo;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteUnflagOrder(AnOrder: TOrder): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+function ExecuteUnflagOrder(AnOrder: TOrder): Boolean;
+var
+  frmUnflagOrder: TfrmUnflagOrder;
+begin
+  Result := False;
+  frmUnflagOrder := TfrmUnflagOrder.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmUnflagOrder));
+    with frmUnflagOrder do
+    begin
+      memOrder.SetTextBuf(PChar(AnOrder.Text));
+      LoadFlagReason(memReason.Lines, AnOrder.ID);
+      ShowModal;
+      if OKPressed then
+      begin
+        UnflagOrder(AnOrder, txtComment.Text);
+        Result := True;
+      end;
+    end;
+  finally
+    frmUnflagOrder.Release;
+  end;
+end;
+
+procedure TfrmUnflagOrder.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmUnflagOrder.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmUnflagOrder.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderVw.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderVw.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderVw.dfm	(revision 1676)
@@ -0,0 +1,285 @@
+inherited frmOrderView: TfrmOrderView
+  Left = 340
+  Top = 165
+  Caption = 'Custom Order View'
+  ClientHeight = 413
+  ClientWidth = 421
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 340
+  ExplicitTop = 165
+  ExplicitWidth = 429
+  ExplicitHeight = 440
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlView: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 421
+    Height = 21
+    Align = alTop
+    BevelOuter = bvLowered
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 0
+    object lblView: TLabel
+      Left = 1
+      Top = 1
+      Width = 419
+      Height = 19
+      Align = alClient
+      Alignment = taCenter
+      Caption = 'All Services, Active Orders'
+      Layout = tlCenter
+      ExplicitWidth = 153
+      ExplicitHeight = 13
+    end
+  end
+  object Panel1: TPanel [1]
+    Left = 0
+    Top = 21
+    Width = 421
+    Height = 278
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    object Splitter1: TSplitter
+      Left = 211
+      Top = 0
+      Height = 278
+      MinSize = 1
+      OnMoved = Splitter1Moved
+    end
+    object Panel2: TPanel
+      Left = 0
+      Top = 0
+      Width = 211
+      Height = 278
+      Align = alLeft
+      Constraints.MinWidth = 15
+      TabOrder = 0
+      object lblFilter: TLabel
+        Left = 1
+        Top = 1
+        Width = 209
+        Height = 13
+        Align = alTop
+        Alignment = taCenter
+        Caption = 'Order Status'
+        Layout = tlCenter
+        ExplicitWidth = 59
+      end
+      object trFilters: TCaptionTreeView
+        Left = 1
+        Top = 14
+        Width = 209
+        Height = 263
+        Align = alClient
+        HideSelection = False
+        Indent = 19
+        TabOrder = 0
+        OnClick = trFiltersClick
+        Caption = 'Order Status'
+      end
+    end
+    object Panel3: TPanel
+      Left = 214
+      Top = 0
+      Width = 207
+      Height = 278
+      Align = alClient
+      Constraints.MinWidth = 15
+      TabOrder = 1
+      object lblService: TLabel
+        Left = 1
+        Top = 1
+        Width = 205
+        Height = 13
+        Align = alTop
+        Alignment = taCenter
+        Caption = 'Service/Section'
+        Layout = tlCenter
+        ExplicitWidth = 77
+      end
+      object treService: TCaptionTreeView
+        Left = 1
+        Top = 14
+        Width = 205
+        Height = 263
+        Align = alClient
+        HideSelection = False
+        Indent = 19
+        TabOrder = 0
+        OnClick = treServiceClick
+        Caption = 'Service/Section'
+      end
+    end
+  end
+  object Panel4: TPanel [2]
+    Left = 0
+    Top = 299
+    Width = 421
+    Height = 114
+    Align = alBottom
+    TabOrder = 2
+    DesignSize = (
+      421
+      114)
+    object chkDateRange: TCheckBox
+      Left = 5
+      Top = 3
+      Width = 372
+      Height = 19
+      Caption = 'Only List Orders Placed During Time Period'
+      TabOrder = 0
+      OnClick = chkDateRangeClick
+    end
+    object GroupBox1: TGroupBox
+      Left = 4
+      Top = 21
+      Width = 399
+      Height = 45
+      TabOrder = 1
+      object lblFrom: TLabel
+        Left = 25
+        Top = 19
+        Width = 26
+        Height = 13
+        Caption = 'From:'
+        Enabled = False
+      end
+      object lblThru: TLabel
+        Left = 210
+        Top = 19
+        Width = 43
+        Height = 13
+        Caption = 'Through:'
+        Enabled = False
+      end
+      object calFrom: TORDateBox
+        Left = 55
+        Top = 16
+        Width = 128
+        Height = 21
+        Color = clBtnFace
+        Enabled = False
+        TabOrder = 0
+        OnChange = calChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'From Date'
+      end
+      object calThru: TORDateBox
+        Left = 257
+        Top = 16
+        Width = 128
+        Height = 21
+        Color = clBtnFace
+        Enabled = False
+        TabOrder = 1
+        OnChange = calChange
+        DateOnly = False
+        RequireTime = False
+        Caption = 'Through Date'
+      end
+    end
+    object chkInvChrono: TCheckBox
+      Left = 6
+      Top = 92
+      Width = 204
+      Height = 18
+      Anchors = [akLeft, akBottom]
+      Caption = 'Reverse Chronological Sequence'
+      Checked = True
+      State = cbChecked
+      TabOrder = 2
+    end
+    object chkByService: TCheckBox
+      Left = 6
+      Top = 72
+      Width = 187
+      Height = 18
+      Caption = 'Group Orders by Service'
+      Checked = True
+      State = cbChecked
+      TabOrder = 3
+    end
+    object cmdOK: TButton
+      Left = 246
+      Top = 78
+      Width = 72
+      Height = 23
+      Anchors = [akLeft, akBottom]
+      Caption = 'OK'
+      Default = True
+      TabOrder = 4
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 328
+      Top = 78
+      Width = 72
+      Height = 23
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 5
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlView'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = trFilters'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = treService'
+        'Status = stsDefault')
+      (
+        'Component = Panel4'
+        'Status = stsDefault')
+      (
+        'Component = chkDateRange'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = calFrom'
+        'Status = stsDefault')
+      (
+        'Component = calThru'
+        'Status = stsDefault')
+      (
+        'Component = chkInvChrono'
+        'Status = stsDefault')
+      (
+        'Component = chkByService'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOrderView'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderVw.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderVw.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrderVw.pas	(revision 1676)
@@ -0,0 +1,334 @@
+unit fOrderVw;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, ExtCtrls, ORCtrls, ORFn, rOrders, ORDtTm,
+  VA508AccessibilityManager;
+
+type
+  TfrmOrderView = class(TfrmAutoSz)
+    pnlView: TPanel;
+    lblView: TLabel;
+    Panel1: TPanel;
+    Panel2: TPanel;
+    lblFilter: TLabel;
+    trFilters: TCaptionTreeView;
+    Panel3: TPanel;
+    treService: TCaptionTreeView;
+    lblService: TLabel;
+    Panel4: TPanel;
+    chkDateRange: TCheckBox;
+    GroupBox1: TGroupBox;
+    lblFrom: TLabel;
+    lblThru: TLabel;
+    calFrom: TORDateBox;
+    calThru: TORDateBox;
+    chkInvChrono: TCheckBox;
+    chkByService: TCheckBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    Splitter1: TSplitter;
+    procedure FormCreate(Sender: TObject);
+    procedure treServiceClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure chkDateRangeClick(Sender: TObject);
+    procedure calChange(Sender: TObject);
+    procedure trFiltersClick(Sender: TObject);
+    procedure Splitter1Moved(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FDGroup: Integer;
+    FDGroupName: string;
+    FFilter: Integer;
+    FFilterName: string;
+    FInvChrono: Boolean;
+    FByService: Boolean;
+    FTimeFrom: TFMDateTime;
+    FTimeThru: TFMDateTime;
+    procedure LoadDGroups(const Parent: string; Node: TTreeNode);
+    procedure LoadFilters(const Parent: string; Node: TTreeNode);
+    procedure SynchViewData;
+    procedure UpdateViewName;
+  public
+    { Public declarations }
+  end;
+
+procedure SelectOrderView(var OrderView: TOrderView);
+
+implementation
+
+{$R *.DFM}
+
+const
+  TX_DATES = 'To list orders for a specific date range, both From & Thru dates are required.';
+  TC_DATES = 'Error in Date Range';
+
+var
+  uDGroupList: TStringList;
+  uFilterList: TStringList;
+
+procedure SelectOrderView(var OrderView: TOrderView);
+var
+  frmOrderView: TfrmOrderView;
+begin
+  frmOrderView := TfrmOrderView.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmOrderView));
+    with frmOrderView do
+    begin
+      FDGroup    := OrderView.DGroup;
+      FFilter    := OrderView.Filter;
+      FInvChrono := OrderView.InvChrono;
+      FByService := OrderView.ByService;
+      FTimeFrom  := OrderView.TimeFrom;
+      FTimeThru  := OrderView.TimeThru;
+      SynchViewData;
+      ShowModal;
+      if FChanged then
+      begin
+        OrderView.Changed   := FChanged;
+        OrderView.DGroup    := FDGroup;
+        OrderView.Filter    := FFilter;
+        OrderView.InvChrono := FInvChrono;
+        OrderView.ByService := FByService;
+        OrderView.TimeFrom  := FTimeFrom;
+        OrderView.TimeThru  := FTimeThru;
+        OrderView.CtxtTime  := 0;                // set by RefreshOrderList
+        OrderView.TextView  := 0;                // set by RefreshOrderList
+        OrderView.ViewName  := lblView.Caption;
+        OrderView.EventDelay.EventType := 'C';
+        OrderView.EventDelay.Specialty := 0;     // treating specialty only for event delayed
+        OrderView.EventDelay.Effective := 0;     // effective date only for discharge orders
+      end
+      else OrderView.Changed := False;
+    end; {with}
+  finally
+    frmOrderView.Release;
+  end;
+end;
+
+procedure TfrmOrderView.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FChanged := False;
+  uDGroupList  := TStringList.Create;
+  uFilterList := TStringList.Create;
+  try
+    ListDGroupAll(uDGroupList);
+    LoadDGroups('0', nil);
+
+    ListOrderFiltersAll(uFilterList);
+    LoadFilters('0', nil);
+  finally
+    uDGroupList.Free;
+    uDGroupList := nil;
+    uFilterList.Free;
+    uFilterList := nil;    
+  end;
+end;
+
+procedure TfrmOrderView.UpdateViewName;
+const
+  FMT_TIME = 'mm/dd/yy';
+var
+  DateText, FilterText: string;
+begin
+  if chkDateRange.Checked
+    then DateText := ' ('     + FormatFMDateTime(FMT_TIME, calFrom.FMDateTime) +
+                     ' thru ' + FormatFMDateTIme(FMT_TIME, calThru.FMDateTime) + ')'
+    else DateText := '';
+  if FFilter in [6, 8, 9, 10, 19, 20]
+    then FilterText := FFilterName
+    else FilterText := FFilterName + ' Orders';
+  lblView.Caption := FilterText + ' - ' + FDGroupName + DateText;
+end;
+
+procedure TfrmOrderView.SynchViewData;
+var
+  i: Integer;
+begin
+  with treService.Items do for i := 0 to Count - 1 do if Integer(Item[i].Data) = FDGroup then
+  begin
+    Item[i].Expanded := True;
+    Item[i].Selected := True;
+    FDGroupName := Item[i].Text;
+    Break;
+  end;
+
+  with trFilters.Items do for i := 0 to Count - 1 do if Integer(Item[i].Data) = FFilter then
+  begin
+    Item[i].Expanded := True;
+    Item[i].Selected := True;
+    FFilter := Integer(Item[i].Data);
+    FFilterName := Item[i].Text;
+    Break;
+  end;
+
+  if (FTimeFrom > 0) or (FTimeThru > 0) then
+  begin
+    calFrom.FMDateTime := FTimeFrom;
+    calThru.FMDateTime := FTimeThru;
+    chkDateRange.Checked := True;
+    chkDateRangeClick(Self);
+  end;
+  UpdateViewName;
+  chkByService.Checked := FByService;
+  chkInvChrono.Checked := FInvChrono;
+end;
+
+procedure TfrmOrderView.LoadDGroups(const Parent: string; Node: TTreeNode);
+var
+  MyID, MyParent, Name: string;
+  i, IEN: Integer;
+  ChildNode: TTreeNode;
+  HasChildren: Boolean;
+begin
+  with uDGroupList do for i := 0 to Count - 1 do
+  begin
+    MyParent := Piece(Strings[i], U, 3);
+    if MyParent = Parent then
+    begin
+      MyID := Piece(Strings[i], U, 1);
+      IEN  := StrToIntDef(MyID, 0);
+      Name := Piece(Strings[i], U, 2);
+      HasChildren := Piece(Strings[i], U, 4) = '+';
+      ChildNode := treService.Items.AddChildObject(Node, Name, Pointer(IEN));
+      if HasChildren then LoadDGroups(MyID, ChildNode);
+    end;
+  end;
+end;
+
+procedure TfrmOrderView.LoadFilters(const Parent: string; Node: TTreeNode);
+var
+  MyID, MyParent, Name: string;
+  i, IEN: Integer;
+  ChildNode: TTreeNode;
+  HasChildren: Boolean;
+begin
+  with uFilterList do for i := 0 to Count - 1 do
+  begin
+    MyParent := Piece(Strings[i], U, 3);
+    if MyParent = Parent then
+    begin
+      MyID := Piece(Strings[i], U, 1);
+      IEN  := StrToIntDef(MyID, 0);
+      Name := Piece(Strings[i], U, 2);
+      HasChildren := Piece(Strings[i], U, 4) = '+';
+      ChildNode := trFilters.Items.AddChildObject(Node, Name, Pointer(IEN));
+      if HasChildren then LoadFilters(MyID, ChildNode);
+    end;
+  end;
+end;
+
+procedure TfrmOrderView.treServiceClick(Sender: TObject);
+var
+  Node: TTreeNode;
+begin
+  inherited;
+  Node := treService.Selected;
+  if Node <> nil then
+  begin
+    FDGroup := Integer(Node.Data);
+    FDGroupName := Node.Text;
+    UpdateViewName;
+  end;
+end;
+
+procedure TfrmOrderView.chkDateRangeClick(Sender: TObject);
+begin
+  inherited;
+  lblThru.Enabled := chkDateRange.Checked;
+  calThru.Enabled := chkDateRange.Checked;
+  lblFrom.Enabled := chkDateRange.Checked;
+  calFrom.Enabled := chkDateRange.Checked;
+  if chkDateRange.Checked then
+  begin
+    calFrom.Color := clWindow;
+    calThru.Color := clWindow;
+    if calThru.FMDateTime = 0 then calThru.Text := 'NOW';
+  end else
+  begin
+    calFrom.FMDateTime := 0;
+    calThru.FMDateTime := 0;
+    calFrom.Color := clBtnFace;
+    calThru.Color := clBtnFace;
+  end;
+  UpdateViewName;
+end;
+
+procedure TfrmOrderView.calChange(Sender: TObject);
+begin
+  inherited;
+  UpdateViewName;
+end;
+
+procedure TfrmOrderView.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  if chkDateRange.Checked and ((not calFrom.IsValid) or (not calThru.IsValid)) then
+  begin
+    InfoBox(TX_DATES, TC_DATES, MB_OK);
+    Exit;
+  end;
+  if chkDateRange.Checked then
+  begin
+    FTimeFrom := calFrom.FMDateTime;
+    FTimeThru := calThru.FMDateTime;
+  end else
+  begin
+    FTimeFrom := 0;
+    FTimeThru := 0;
+  end;
+  FChanged := True;
+  FInvChrono := chkInvChrono.Checked;
+  FByService := chkByService.Checked;
+  Close;
+end;
+
+procedure TfrmOrderView.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmOrderView.trFiltersClick(Sender: TObject);
+var
+  Node: TTreeNode;
+begin
+  inherited;
+  Node := trFilters.Selected;
+  if Node <> nil then
+  begin
+    FFilter := Integer(Node.Data);
+    FFilterName := Node.Text;
+    chkDateRange.Enabled := True;
+    if FFilter = 2 then                          // disallow date range for active orders view
+    begin
+      chkDateRange.Checked := False;
+      chkDateRangeClick(Self);
+    end;
+    if FFilter = 5 then                          // disallow date range for expiring orders view
+    begin
+      chkDateRange.Checked := False;
+      chkDateRangeClick(Self);
+      chkDateRange.Enabled := False;
+    end;
+    if FFilter in [8, 9, 10, 20] then chkDateRange.Checked := True else
+    begin
+      if (calFrom.Text = '') and (calThru.Text = '') then chkDateRange.Checked := False;
+    end;
+    UpdateViewName;
+  end;
+end;
+
+procedure TfrmOrderView.Splitter1Moved(Sender: TObject);
+begin
+  inherited;
+  Splitter1.Align := alNone;
+  Splitter1.Align := alLeft;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrders.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrders.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrders.dfm	(revision 1676)
@@ -0,0 +1,618 @@
+inherited frmOrders: TfrmOrders
+  Left = 451
+  Top = 177
+  HelpContext = 4000
+  Caption = 'Orders Page'
+  ClientHeight = 571
+  ClientWidth = 766
+  HelpFile = 'overvw'
+  Menu = mnuOrders
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  ExplicitWidth = 774
+  ExplicitHeight = 617
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 566
+    Width = 766
+    ExplicitTop = 528
+    ExplicitWidth = 766
+  end
+  inherited sptHorz: TSplitter
+    Left = 117
+    Height = 566
+    OnMoved = sptHorzMoved
+    ExplicitLeft = 117
+    ExplicitHeight = 528
+  end
+  inherited pnlLeft: TPanel
+    Width = 117
+    Height = 566
+    ExplicitWidth = 117
+    ExplicitHeight = 566
+    object OROffsetLabel1: TOROffsetLabel
+      Left = 0
+      Top = 0
+      Width = 117
+      Height = 19
+      Align = alTop
+      Caption = 'View Orders'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 6
+      WordWrap = False
+    end
+    object lblWrite: TLabel
+      Left = 0
+      Top = 97
+      Width = 117
+      Height = 19
+      Align = alTop
+      AutoSize = False
+      Caption = 'Write Orders'
+      ParentShowHint = False
+      ShowHint = True
+      Layout = tlBottom
+      OnMouseMove = lblWriteMouseMove
+    end
+    object sptVert: TSplitter
+      Left = 0
+      Top = 75
+      Width = 117
+      Height = 4
+      Cursor = crVSplit
+      Align = alTop
+    end
+    object lstSheets: TORListBox
+      Left = 0
+      Top = 19
+      Width = 117
+      Height = 56
+      Align = alTop
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      OnClick = lstSheetsClick
+      Caption = 'View Orders'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object lstWrite: TORListBox
+      Left = 0
+      Top = 116
+      Width = 117
+      Height = 450
+      Align = alClient
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = lstWriteClick
+      Caption = 'Write Orders'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object btnDelayedOrder: TORAlignButton
+      Left = 0
+      Top = 79
+      Width = 117
+      Height = 18
+      Align = alTop
+      Caption = 'Write Delayed Orders'
+      TabOrder = 1
+      OnClick = btnDelayedOrderClick
+      Alignment = taLeftJustify
+    end
+  end
+  inherited pnlRight: TPanel
+    Left = 121
+    Width = 645
+    Height = 566
+    ParentColor = True
+    ParentCtl3D = False
+    ParentFont = False
+    OnResize = pnlRightResize
+    ExplicitLeft = 121
+    ExplicitWidth = 645
+    ExplicitHeight = 566
+    object lblOrders: TOROffsetLabel
+      Left = 0
+      Top = 0
+      Width = 645
+      Height = 19
+      Align = alTop
+      Caption = 'Active Orders'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 6
+      WordWrap = False
+    end
+    object imgHide: TImage
+      Left = 520
+      Top = 0
+      Width = 16
+      Height = 16
+      Hint = 'All Active Orders not Visible'
+      AutoSize = True
+      ParentShowHint = False
+      Picture.Data = {
+        07544269746D6170F6000000424DF60000000000000076000000280000001000
+        0000100000000100040000000000800000000000000000000000100000001000
+        0000000000000000800000800000008080008000000080008000808000008080
+        8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+        FF003333000000000EEE33330FF00FBFB0EE33330F0BFB0BFB0E33330FF000BF
+        BFB033330FFF0BFBFBF033300000BF0FBFB0000FBFB0F0FB0BF0E0FB00000000
+        BF00E0BFBFBFBFB0F0F0E0FBFB0000000FF0E0BFBFBFBFB0FFF0E0FBFB00000F
+        0000E00FBFBFB0FF0FF0003000000FFF0F0333330FFFFFFF0033333300000000
+        0333}
+      ShowHint = True
+      Transparent = True
+    end
+    object hdrOrders: THeaderControl
+      Left = 0
+      Top = 19
+      Width = 645
+      Height = 17
+      Sections = <
+        item
+          ImageIndex = -1
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Service'
+          Width = 50
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 20
+          Text = 'Order'
+          Width = 210
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Start / Stop'
+          Width = 100
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Provider'
+          Width = 60
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Nurse'
+          Width = 40
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Clerk'
+          Width = 35
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Chart'
+          Width = 35
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Status'
+          Width = 50
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 25
+          Text = 'Location'
+          Width = 40
+        end>
+      OnSectionClick = hdrOrdersSectionClick
+      OnSectionResize = hdrOrdersSectionResize
+      OnMouseDown = hdrOrdersMouseDown
+      OnMouseUp = hdrOrdersMouseUp
+    end
+    object lstOrders: TCaptionListBox
+      Left = 0
+      Top = 36
+      Width = 645
+      Height = 530
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      Color = clCream
+      Ctl3D = False
+      ItemHeight = 32
+      MultiSelect = True
+      ParentCtl3D = False
+      PopupMenu = popOrder
+      TabOrder = 1
+      OnDblClick = lstOrdersDblClick
+      OnDrawItem = lstOrdersDrawItem
+      OnMeasureItem = lstOrdersMeasureItem
+      Caption = 'Active Orders'
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstSheets'
+        'Status = stsDefault')
+      (
+        'Component = lstWrite'
+        'Status = stsDefault')
+      (
+        'Component = btnDelayedOrder'
+        'Status = stsDefault')
+      (
+        'Component = hdrOrders'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmOrders'
+        'Status = stsDefault'))
+  end
+  object mnuOrders: TMainMenu
+    Left = 136
+    Top = 60
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      OnClick = mnuViewClick
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewActive: TMenuItem
+        Caption = '&Active Orders (includes pending, recent activity)'
+        OnClick = mnuViewActiveClick
+      end
+      object mnuViewCurrent: TMenuItem
+        Caption = 'Current &Orders (active/pending status only)'
+        OnClick = mnuViewCurrentClick
+      end
+      object EventRealeasedOrder1: TMenuItem
+        Caption = 'Auto DC/Release Event Orders'
+        OnClick = EventRealeasedOrder1Click
+      end
+      object mnuViewExpiring: TMenuItem
+        Caption = '&Expiring Orders'
+        OnClick = mnuViewExpiringClick
+      end
+      object mnuViewUnsigned: TMenuItem
+        Caption = '&Unsigned Orders'
+        OnClick = mnuViewUnsignedClick
+      end
+      object mnuViewExpired: TMenuItem
+        Caption = '&Recently Expired Orders'
+        OnClick = mnuViewExpiredClick
+      end
+      object Z2: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewCustom: TMenuItem
+        Caption = '&Custom Order View...'
+        OnClick = mnuViewCustomClick
+      end
+      object Z6: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewDfltSave: TMenuItem
+        Caption = '&Save as Default View...'
+        OnClick = mnuViewDfltSaveClick
+      end
+      object mnuViewDfltShow: TMenuItem
+        Caption = '&Return to Default View'
+        OnClick = mnuViewDfltShowClick
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewDetail: TMenuItem
+        Caption = '&Details...'
+        OnClick = mnuViewDetailClick
+      end
+      object mnuViewResult: TMenuItem
+        Caption = '&Results...'
+        OnClick = mnuViewResultClick
+      end
+      object mnuViewResultsHistory: TMenuItem
+        Caption = 'Results History...'
+        OnClick = mnuViewResultsHistoryClick
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      OnClick = mnuActClick
+      object mnuActChange: TMenuItem
+        Caption = '&Change...'
+        OnClick = mnuActChangeClick
+      end
+      object mnuActCopy: TMenuItem
+        Caption = 'Copy to &New Order...'
+        OnClick = mnuActCopyClick
+      end
+      object mnuActDC: TMenuItem
+        Caption = '&Discontinue / Cancel...'
+        OnClick = mnuActDCClick
+      end
+      object mnuActRel: TMenuItem
+        Caption = 'Release Delayed Orders'
+        Visible = False
+        OnClick = mnuActRelClick
+      end
+      object mnuActChgEvnt: TMenuItem
+        Caption = 'Change Release Event'
+        OnClick = mnuActChgEvntClick
+      end
+      object mnuActHold: TMenuItem
+        Caption = '&Hold...'
+        OnClick = mnuActHoldClick
+      end
+      object mnuActUnhold: TMenuItem
+        Caption = 'Re&lease Hold...'
+        OnClick = mnuActUnholdClick
+      end
+      object mnuActRenew: TMenuItem
+        Caption = 'Rene&w...'
+        OnClick = mnuActRenewClick
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+      end
+      object mnuActAlert: TMenuItem
+        Caption = '&Alert when Results...'
+        OnClick = mnuActAlertClick
+      end
+      object mnuActComplete: TMenuItem
+        Caption = 'Co&mplete...'
+        OnClick = mnuActCompleteClick
+      end
+      object mnuActFlag: TMenuItem
+        Caption = '&Flag...'
+        OnClick = mnuActFlagClick
+      end
+      object mnuActUnflag: TMenuItem
+        Caption = '&Unflag...'
+        OnClick = mnuActUnflagClick
+      end
+      object mnuActVerify: TMenuItem
+        Caption = '&Verify...'
+        OnClick = mnuActVerifyClick
+      end
+      object mnuActChartRev: TMenuItem
+        Caption = 'Char&t Review...'
+        OnClick = mnuActChartRevClick
+      end
+      object Z5: TMenuItem
+        Caption = '-'
+      end
+      object mnuActRelease: TMenuItem
+        Caption = 'R&elease without MD Signature...'
+        OnClick = mnuActReleaseClick
+      end
+      object mnuActOnChart: TMenuItem
+        Caption = 'Signature &On Chart...'
+        OnClick = mnuActOnChartClick
+      end
+      object mnuActSign: TMenuItem
+        Caption = 'Si&gn Selected...'
+        OnClick = mnuActSignClick
+      end
+    end
+    object mnuOpt: TMenuItem
+      Caption = '&Options'
+      GroupIndex = 5
+      OnClick = mnuOptClick
+      object mnuOptSaveQuick: TMenuItem
+        Caption = '&Save as Quick Order...'
+        OnClick = mnuOptSaveQuickClick
+      end
+      object mnuOptEditCommon: TMenuItem
+        Caption = '&Edit Common List...'
+        OnClick = mnuOptEditCommonClick
+      end
+    end
+  end
+  object popOrder: TPopupMenu
+    OnPopup = popOrderPopup
+    Left = 445
+    Top = 300
+    object popOrderDetail: TMenuItem
+      Caption = 'Detai&ls...'
+      OnClick = mnuViewDetailClick
+    end
+    object popOrderResult: TMenuItem
+      Caption = '&Results...'
+      OnClick = mnuViewResultClick
+    end
+    object popResultsHistory: TMenuItem
+      Caption = 'Results History...'
+      OnClick = mnuViewResultsHistoryClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object popOrderChange: TMenuItem
+      Tag = 1
+      Caption = '&Change...'
+      OnClick = mnuActChangeClick
+    end
+    object popOrderRel: TMenuItem
+      Caption = 'Release Delayed Orders'
+      Visible = False
+      OnClick = mnuActRelClick
+    end
+    object mnuChgEvnt: TMenuItem
+      Caption = 'Change Release Event'
+      OnClick = mnuActChgEvntClick
+    end
+    object popOrderCopy: TMenuItem
+      Tag = 1
+      Caption = 'Copy to &New Order...'
+      OnClick = mnuActCopyClick
+    end
+    object popOrderDC: TMenuItem
+      Tag = 1
+      Caption = '&Discontinue...'
+      OnClick = mnuActDCClick
+    end
+    object popOrderRenew: TMenuItem
+      Tag = 1
+      Caption = 'Rene&w...'
+      OnClick = mnuActRenewClick
+    end
+    object sepOrderVerify: TMenuItem
+      Caption = '-'
+    end
+    object popOrderVerify: TMenuItem
+      Tag = 2
+      Caption = '&Verify...'
+      OnClick = mnuActVerifyClick
+    end
+    object popOrderChartRev: TMenuItem
+      Tag = 2
+      Caption = 'Char&t Review'
+      OnClick = mnuActChartRevClick
+    end
+    object popOrderSign: TMenuItem
+      Tag = 1
+      Caption = '&Sign...'
+      OnClick = mnuActSignClick
+    end
+    object mnuOptimizeFields: TMenuItem
+      Caption = 'Adjust Column Size'
+      Visible = False
+      OnClick = mnuOptimizeFieldsClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrders.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrders.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrders.pas	(revision 1676)
@@ -0,0 +1,3480 @@
+unit fOrders;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, fHSplit, StdCtrls,
+  ExtCtrls, Menus, ORCtrls, ComCtrls, ORFn, rOrders, fODBase, uConst, uCore, uOrders,UBACore,
+  UBAGlobals, VA508AccessibilityManager, fBase508Form;
+
+type
+  TfrmOrders = class(TfrmHSplit)
+    mnuOrders: TMainMenu;
+    mnuAct: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActDC: TMenuItem;
+    mnuActHold: TMenuItem;
+    mnuActUnhold: TMenuItem;
+    mnuActRenew: TMenuItem;
+    Z4: TMenuItem;
+    mnuActFlag: TMenuItem;
+    mnuActUnflag: TMenuItem;
+    Z5: TMenuItem;
+    mnuActVerify: TMenuItem;
+    mnuActRelease: TMenuItem;
+    mnuActSign: TMenuItem;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    mnuViewActive: TMenuItem;
+    mnuViewExpiring: TMenuItem;
+    Z2: TMenuItem;
+    mnuViewCustom: TMenuItem;
+    Z3: TMenuItem;
+    mnuViewDetail: TMenuItem;
+    Z1: TMenuItem;
+    OROffsetLabel1: TOROffsetLabel;
+    hdrOrders: THeaderControl;
+    lstOrders: TCaptionListBox;
+    lblOrders: TOROffsetLabel;
+    lstSheets: TORListBox;
+    lstWrite: TORListBox;
+    mnuViewUnsigned: TMenuItem;
+    popOrder: TPopupMenu;
+    popOrderChange: TMenuItem;
+    popOrderDC: TMenuItem;
+    popOrderRenew: TMenuItem;
+    popOrderDetail: TMenuItem;
+    N1: TMenuItem;
+    mnuActCopy: TMenuItem;
+    mnuActAlert: TMenuItem;
+    mnuViewResult: TMenuItem;
+    mnuActOnChart: TMenuItem;
+    mnuActComplete: TMenuItem;
+    sepOrderVerify: TMenuItem;
+    popOrderVerify: TMenuItem;
+    popOrderResult: TMenuItem;
+    imgHide: TImage;
+    mnuOpt: TMenuItem;
+    mnuOptSaveQuick: TMenuItem;
+    mnuOptEditCommon: TMenuItem;
+    popOrderSign: TMenuItem;
+    popOrderCopy: TMenuItem;
+    mnuActChartRev: TMenuItem;
+    popOrderChartRev: TMenuItem;
+    Z6: TMenuItem;
+    mnuViewDfltSave: TMenuItem;
+    mnuViewDfltShow: TMenuItem;
+    mnuViewCurrent: TMenuItem;
+    mnuChartSurgery: TMenuItem;
+    mnuViewResultsHistory: TMenuItem;
+    popResultsHistory: TMenuItem;
+    btnDelayedOrder: TORAlignButton;
+    mnuActChgEvnt: TMenuItem;
+    mnuChgEvnt: TMenuItem;
+    mnuActRel: TMenuItem;
+    popOrderRel: TMenuItem;
+    EventRealeasedOrder1: TMenuItem;
+    lblWrite: TLabel;
+    sptVert: TSplitter;
+    mnuViewExpired: TMenuItem;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    mnuOptimizeFields: TMenuItem;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure lstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      TheRect: TRect; State: TOwnerDrawState);
+    procedure lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure mnuViewActiveClick(Sender: TObject);
+    procedure hdrOrdersSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure mnuViewCustomClick(Sender: TObject);
+    procedure mnuViewExpiringClick(Sender: TObject);
+    procedure mnuViewExpiredClick(Sender: TObject);
+    procedure mnuViewUnsignedClick(Sender: TObject);
+    procedure mnuViewDetailClick(Sender: TObject);
+    procedure lstOrdersDblClick(Sender: TObject);
+    procedure lstWriteClick(Sender: TObject);
+    procedure mnuActHoldClick(Sender: TObject);
+    procedure mnuActUnholdClick(Sender: TObject);
+    procedure mnuActDCClick(Sender: TObject);
+    procedure mnuActAlertClick(Sender: TObject);
+    procedure mnuActFlagClick(Sender: TObject);
+    procedure mnuActUnflagClick(Sender: TObject);
+    procedure mnuActSignClick(Sender: TObject);
+    procedure mnuActReleaseClick(Sender: TObject);
+    procedure mnuActOnChartClick(Sender: TObject);
+    procedure mnuActCompleteClick(Sender: TObject);
+    procedure mnuActVerifyClick(Sender: TObject);
+    procedure mnuViewResultClick(Sender: TObject);
+    procedure mnuActCommentClick(Sender: TObject);
+    procedure mnuOptSaveQuickClick(Sender: TObject);
+    procedure mnuOptEditCommonClick(Sender: TObject);
+    procedure mnuActCopyClick(Sender: TObject);
+    procedure mnuActChangeClick(Sender: TObject);
+    procedure mnuActRenewClick(Sender: TObject);
+    procedure pnlRightResize(Sender: TObject);
+    procedure lstSheetsClick(Sender: TObject);
+    procedure mnuActChartRevClick(Sender: TObject);
+    procedure mnuViewDfltShowClick(Sender: TObject);
+    procedure mnuViewDfltSaveClick(Sender: TObject);
+    procedure mnuViewCurrentClick(Sender: TObject);
+    procedure mnuViewResultsHistoryClick(Sender: TObject);
+    procedure btnDelayedOrderClick(Sender: TObject);
+    procedure mnuActChgEvntClick(Sender: TObject);
+    procedure mnuActRelClick(Sender: TObject);
+    procedure EventRealeasedOrder1Click(Sender: TObject);
+    procedure lblWriteMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure popOrderPopup(Sender: TObject);
+    procedure mnuViewClick(Sender: TObject);
+    procedure mnuActClick(Sender: TObject);
+    procedure mnuOptClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure hdrOrdersMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure hdrOrdersMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+    procedure mnuOptimizeFieldsClick(Sender: TObject);
+    procedure hdrOrdersSectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure sptHorzMoved(Sender: TObject);
+  private
+    { Private declarations }
+    OrderListClickProcessing : Boolean;
+    FDfltSort: Integer;
+    FCurrentView: TOrderView;
+    FCompress: boolean;
+    FFromDCRelease: boolean;
+    FSendDelayOrders: boolean;
+    FNewEvent: boolean;
+    FAskForCancel: boolean;
+    FNeedShowModal: boolean;
+    FOrderViewForActiveOrders: TOrderView;
+    FEventForCopyActiveOrders: TOrderDelayEvent;
+    FEventDefaultOrder      : string;
+    FIsDefaultDlg: boolean;
+    FHighlightFromMedsTab: integer;
+    FCalledFromWDO: boolean; //called from Write Delay Orders button
+    FEvtOrderList: TStringlist;
+    FEvtColWidth: integer;
+    FRightAfterWriteOrderBox : boolean;
+    FDontCheck: boolean;
+    FParentComplexOrderID: string;
+    FHighContrast2Mode: boolean;
+    function CanChangeOrderView: Boolean;
+    function GetEvtIFN(AnIndex: integer): string;
+    function DisplayDefaultDlgList(ADest: TORListBox; ADlgList: TStringList): boolean;
+    procedure AddToListBox(AnOrderList: TList);
+    procedure ExpandEventSection;
+    procedure CompressEventSection;
+    procedure ClearOrderSheets;
+    procedure InitOrderSheets;
+    procedure DfltViewForEvtDelay;
+    procedure MakeSelectedList(AList: TList);
+    function  NoneSelected(const ErrMsg: string): Boolean;
+    procedure ProcessNotifications;
+    procedure PositionTopOrder(DGroup: Integer);
+    procedure RedrawOrderList;
+    procedure RefreshOrderList(FromServer: Boolean; APtEvtID: string = '');
+    procedure RetrieveVisibleOrders(AnIndex: Integer);
+    procedure RemoveSelectedFromChanges(AList: TList);
+    procedure SetOrderView(AFilter, ADGroup: Integer; const AViewName: string; NotifSort: Boolean);
+    //procedure SetEvtIFN(var AnEvtIFN: integer);
+    procedure UseDefaultSort;
+    procedure SynchListToOrders;
+    procedure ActivateDeactiveRenew;
+    procedure ValidateSelected(const AnAction, WarningMsg, WarningTitle: string);
+    procedure ViewAlertedOrders(OrderIEN: string; Status: integer; DispGrp: string;
+          BySvc, InvDate: boolean; Title: string);
+    procedure UMDestroy(var Message: TMessage); message UM_DESTROY;
+    function GetStartStopText(StartTime: string; StopTime: string): string;
+    function GetOrderText(AnOrder: TOrder; Index: integer; Column: integer): string;
+    function MeasureColumnHeight(AnOrder: TOrder; Index: Integer; Column: integer):integer;
+    function GetPlainText(AnOrder: TOrder; index: integer):string;
+    //function PatientStatusChanged: boolean;
+    procedure UMEventOccur(var Message: TMessage); message UM_EVENTOCCUR;
+    function CheckOrderStatus: boolean;
+    procedure RightClickMessageHandler(var Msg: TMessage; var Handled: Boolean);
+  public
+    procedure setSectionWidths; //CQ6170
+    function getTotalSectionsWidth : integer; //CQ6170
+    function AllowContextChange(var WhyNot: string): Boolean; override;
+    function PlaceOrderForDefaultDialog(ADlgInfo: string; IsDefaultDialog: boolean; AEvent: TOrderDelayEvent): boolean;
+    function PtEvtCompleted(APtEvtID: integer; APtEvtName: string; FromMeds: boolean = False): boolean;
+    procedure RefreshToFirstItem;
+    procedure ChangesUpdate(APtEvtID: string);
+    procedure GroupChangesUpdate(GrpName: string);
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure InitOrderSheetsForEvtDelay;
+    procedure ResetOrderPage(AnEvent: TOrderDelayEvent; ADlgLst: TStringList; IsRealeaseNow: boolean);
+    procedure NotifyOrder(OrderAction: Integer; AnOrder: TOrder); override;
+    procedure SaveSignOrders;
+    procedure ClickLstSheet;
+    procedure RequestPrint; override;
+    procedure InitOrderSheets2(AnItem: string = '');
+    procedure SetFontSize( FontSize: integer); override;
+    property IsDefaultDlg: boolean      read FIsDefaultDlg       write FIsDefaultDlg;
+    property SendDelayOrders: Boolean   read FSendDelayOrders    write FSendDelayOrders;
+    property NewEvent: Boolean          read FNewEvent           write FNewEvent;
+    property NeedShowModal: Boolean     read FNeedShowModal      write FNeedShowModal;
+    property AskForCancel: Boolean      read FAskForCancel       write FAskForCancel;
+    property EventDefaultOrder: string  read FEventDefaultOrder  write FEventDefaultOrder;
+    property TheCurrentView: TOrderView read FCurrentView;
+    property HighlightFromMedsTab: integer read FHighlightFromMedsTab write FHighlightFromMedsTab;
+    property CalledFromWDO: boolean     read FCalledFromWDO;
+    property EvtOrderList: TStringlist  read FEvtOrderList       write FEvtOrderList;
+    property FromDCRelease: boolean     read FFromDCRelease      write FFromDCRelease;
+    property EvtColWidth: integer       read FEvtColWidth        write FEvtColWidth;
+    property DontCheck: boolean         read FDontCheck          write FDontCheck;
+    property ParentComplexOrderID: string       read FParentComplexOrderID        write FParentComplexOrderID;
+  end;
+
+type
+  arOrigSecWidths = array[0..9] of integer; //CQ6170
+
+var
+  frmOrders: TfrmOrders;
+
+  origWidths: arOrigSecWidths; //CQ6170
+
+implementation
+
+uses fFrame, fEncnt, fOrderVw, fRptBox, fLkUpLocation, fOrdersDC, fOrdersCV, fOrdersHold, fOrdersUnhold,
+     fOrdersAlert, fOrderFlag, fOrderUnflag, fOrdersSign, fOrdersRelease, fOrdersOnChart, fOrdersEvntRelease,
+     fOrdersComplete, fOrdersVerify, fOrderComment, fOrderSaveQuick, fOrdersRenew,fODReleaseEvent,
+     fOMNavA, rCore, fOCSession, fOrdersPrint, fOrdersTS, fEffectDate, fODActive, fODChild,
+     fOrdersCopy, fOMVerify, fODAuto, rODBase, uODBase, rMeds,fODValidateAction, fMeds, uInit, fBALocalDiagnoses,
+     fODConsult, fClinicWardMeds, fActivateDeactivate, VA2006Utils, rodMeds,
+     VA508AccessibilityRouter, VAUtils;
+
+{$R *.DFM}
+
+const
+  FROM_SELF        = False;
+  FROM_SERVER      = True;
+  OVS_CATINV       = 0;
+  OVS_CATFWD       = 1;
+  OVS_INVERSE      = 2;
+  OVS_FORWARD      = 3;
+  STS_ACTIVE       = 2;
+  STS_DISCONTINUED = 3;
+  STS_COMPLETE     = 4;
+  STS_EXPIRING     = 5;
+  STS_RECENT       = 6;
+  STS_UNVERIFIED   = 8;
+  STS_UNVER_NURSE  = 9;
+  STS_UNSIGNED     = 11;
+  STS_FLAGGED      = 12;
+  STS_HELD         = 18;
+  STS_NEW          = 19;
+  STS_CURRENT      = 23;
+  STS_EXPIRED      = 27;
+  FM_DATE_ONLY     = 7;
+  CT_ORDERS        =  4;       // chart tab - doctor's orders
+
+  TX_NO_HOLD    = CRLF + CRLF + '- cannot be placed on hold.' + CRLF + CRLF + 'Reason:  ';
+  TC_NO_HOLD    = 'Unable to Hold';
+  TX_NO_UNHOLD  = CRLF + CRLF + '- cannot be released from hold.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_UNHOLD  = 'Unable to Release from Hold';
+  TX_NO_DC      = CRLF + CRLF + '- cannot be discontinued.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_DC      = 'Unable to Discontinue';
+  TX_NO_CV      = CRLF + 'The release event cannot be changed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CV      = 'Unable to Change Release Event';
+  TX_NO_ALERT   = CRLF + CRLF + '- cannot be set to send an alert.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_ALERT   = 'Unable to Set Alert';
+  TX_NO_FLAG    = CRLF + CRLF + '- cannot be flagged.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_FLAG    = 'Unable to Flag Order';
+  TX_NO_UNFLAG  = CRLF + CRLF + '- cannot be unflagged.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_UNFLAG  = 'Unable to Unflag Order';
+  TX_NO_SIGN    = CRLF + CRLF + '- cannot be signed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_SIGN    = 'Unable to Sign Order';
+  TX_NO_REL     = CRLF + 'Cannot be released to the service(s).' + CRLF + CRLF + 'Reason: ';
+  TC_NO_REL     = 'Unable to be Released to Service';
+  TX_NO_CHART   = CRLF + CRLF + '- cannot be marked "Signed on Chart".' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CHART   = 'Unable to Release Orders';
+  TX_NO_CPLT    = CRLF + CRLF + '- cannot be completed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CPLT    = 'Unable to Complete';
+  TX_NO_VERIFY  = CRLF + CRLF + '- cannot be verified.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_VERIFY  = 'Unable to Verify';
+  TX_NO_CMNT    = CRLF + CRLF + '- cannot have comments edited.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CMNT    = 'Unable to Edit Comments';
+  TX_NO_RENEW   = CRLF + CRLF + '- cannot be changed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_RENEW   = 'Unable to Renew Order';
+  TX_LOC_PRINT  = 'The selected location will be used to determine where orders are printed.';
+  TX_PRINT_LOC  = 'A location must be selected to print orders.';
+  TX_REL_LOC    = 'A location must be selected to release orders.';
+  TX_CHART_LOC  = 'A location must be selected to mark orders "signed on chart".';
+  TX_SIGN_LOC   = 'A location must be selected to sign orders.';
+  TC_REQ_LOC    = 'Location Required';
+  TX_NOSEL      = 'No orders are highlighted.  Highlight the orders' + CRLF +
+                  'you wish to take action on.';
+  TX_NOSEL_SIGN = 'No orders are highlighted. Highlight orders you want to sign or' + CRLF +
+                  'use Review/Sign Changes (File menu) to sign all orders written' + CRLF +
+                  'in this session.';
+  TC_NOSEL      = 'No Orders Selected';
+  TX_NOCHG_VIEW = 'The view of orders may not be changed while an ordering dialog is' + CRLF +
+                  'active for an event-delayed order.';
+  TC_NOCHG_VIEW = 'Order View Restriction';
+  TX_DELAY1     = 'Now writing orders for ';
+  TC_DELAY      = 'Ordering Information';
+  TX_BAD_TYPE   = 'This item is a type that is not supported in the graphical interface.';
+  TC_BAD_TYPE   = 'Unsupported Ordering Item';
+  TC_VWSAVE     = 'Save Default Order View';
+  TX_VWSAVE1    = 'The current order view is: ' + CRLF + CRLF;
+  TX_VWSAVE2    = CRLF + CRLF + 'Do you wish to save this as your default view?';
+  TX_NO_COPY    = CRLF + CRLF + '- cannot be copied.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_COPY    = 'Unable to Copy Order';
+  TX_NO_CHANGE  = CRLF + CRLF + '- cannot be changed' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CHANGE  = 'Unable to Change Order';
+  TX_COMPLEX    = 'You can not take this action on a complex medication.' + #13 + 'You must enter a new order.';
+  TX_CMPTEVT = ' occurred since you started writing delayed orders. '
+    + 'The orders that were entered and signed have now been released. '
+    + 'Any unsigned orders will be released immediately upon signature. '
+    + #13#13
+    + 'To write new delayed orders for this event you need to click the write delayed orders button again and select the appropriate event. '
+    + 'Orders delayed to this same event will remain delayed until the event occurs again.'
+    + #13#13
+    + 'The Orders tab will now be refreshed and switched to the Active Orders view. '
+    + 'If you wish to continue to write active orders for this patient, '
+    + 'close this message window and continue as usual.';
+  TX_CMPTEVT_MEDSTAB = ' occurred since you started writing delayed orders. '
+    + 'The orders that were entered and signed have now been released. '
+    + 'Any unsigned orders will be released immediately upon signature. '
+    + #13#13
+    + 'To write new delayed orders for this event you need to click the write delayed orders button on the orders tab and select the appropriate event. '
+    + 'Orders delayed to this same event will remain delayed until the event occurs again.';
+
+var
+  uOrderList: TList;
+  uEvtDCList, uEvtRLList: TList;
+
+{ TPage common methods --------------------------------------------------------------------- }
+
+function TfrmOrders.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  case BOOLCHAR[frmFrame.CCOWContextChanging] of
+    '1': if ActiveOrdering then
+           begin
+             WhyNot := 'Orders in progress will be discarded.';
+             Result := False;
+           end;
+    '0': Result := CloseOrdering;  // call in uOrders, should move to fFrame
+  end;
+end;
+
+procedure TfrmOrders.ClearPtData;
+begin
+  inherited ClearPtData;
+  lstOrders.Clear;
+  ClearOrderSheets;
+  ClearOrders(uOrderList);
+  if uEvtDCList <> nil then
+    uEvtDCList.Clear;
+  if uEvtRLList <> nil then
+    uEvtRLList.Clear;
+  ClearFillerAppList;
+end;
+
+procedure TfrmOrders.DisplayPage;
+var
+  i: Integer;
+begin
+  inherited DisplayPage;
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+  frmFrame.mnuFilePrint.Tag := CT_ORDERS;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  if InitPage then
+  begin
+    // set visibility according to order role
+    mnuActComplete.Visible   := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK) or
+                                (User.OrderRole = OR_PHYSICIAN);
+    mnuActVerify.Visible     := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK);
+    popOrderVerify.Visible   := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK);
+    sepOrderVerify.Visible   := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK);
+    mnuActChartRev.Visible   := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK);
+    popOrderChartRev.Visible := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK);
+    mnuActRelease.Visible    :=  User.OrderRole = OR_NURSE;
+    mnuActOnChart.Visible    := (User.OrderRole = OR_NURSE) or (User.OrderRole = OR_CLERK);
+    mnuActSign.Visible       :=  User.OrderRole = OR_PHYSICIAN;
+    popOrderSign.Visible     :=  User.OrderRole = OR_PHYSICIAN;
+    mnuActRel.Visible        := False;
+    popOrderRel.Visible      := False;
+    // now set enabled/disabled according to parameters
+    // popup items that apply to ordering have tag>0
+    with mnuAct do
+      for i := 0 to Pred(Count) do
+        Items[i].Enabled := not User.NoOrdering;
+    with popOrder.Items do
+      for i := 0 to Pred(Count) do
+        if Items[i].Tag > 0 then Items[i].Enabled := not User.NoOrdering;
+    // set nurse verification actions (may be enabled when ordering disabled)
+    mnuActVerify.Enabled     := User.EnableVerify;
+    mnuActChartRev.Enabled   := User.EnableVerify;
+    popOrderVerify.Enabled   := User.EnableVerify;
+    popOrderChartRev.Enabled := User.EnableVerify;
+    if User.DisableHold then
+    begin
+      mnuActHold.Visible := False;
+      mnuActUnhold.Visible := False;
+    end;
+  end;
+  AskForCancel := true;
+  if InitPatient then                          // for both CC_INIT_PATIENT and CC_NOTIFICATION
+  begin
+    if not User.NoOrdering then LoadWriteOrders(lstWrite.Items) else lstWrite.Clear;
+    InitOrderSheets;
+  end;
+  case CallingContext of
+  CC_INIT_PATIENT: mnuViewDfltShowClick(Self); // when new patient but not doing notifications
+  CC_NOTIFICATION: ProcessNotifications;       // when new patient and doing notifications
+  end;
+end;
+
+procedure TfrmOrders.mnuChartTabClick(Sender: TObject);
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+procedure TfrmOrders.NotifyOrder(OrderAction: Integer; AnOrder: TOrder);
+var
+  OrderForList: TOrder;
+  IndexOfOrder, ReturnedType, CanSign, i: Integer;
+  j: integer;
+  AChildList: TStringlist;
+  CplxOrderID: string;
+  DCNewOrder: boolean;
+  DCChangeItem: TChangeItem;
+
+  procedure RemoveFromOrderList(ChildOrderID: string);
+  var
+   ij: integer;
+  begin
+    for ij := uOrderList.Count - 1 downto 0 do
+    begin
+      if TOrder(uOrderList[ij]).ID = ChildOrderID then
+        uOrderList.Remove(TOrder(uOrderList[ij]));
+    end;
+  end;
+
+begin
+//  if FCurrentView = nil then                                        {**REV**}
+//    begin                                                           {**REV**}
+//      FCurrentView := TOrderView.Create;                            {**REV**}
+//      with FCurrentView do                                          {**REV**}
+//       begin                                                        {**REV**}
+//        InvChrono := True;                                          {**REV**}
+//        ByService := True;                                          {**REV**}
+//       end;                                                         {**REV**}
+//    end;                                                            {**REV**}
+  if FCurrentView = nil then Exit;
+  case OrderAction of
+  ORDER_NEW:  if AnOrder.ID <> '' then
+              begin
+                OrderForList := TOrder.Create;
+                OrderForList.Assign(AnOrder);
+                uOrderList.Add(OrderForList);
+                FCompress := True;
+                RefreshOrderList(FROM_SELF);
+                //PositionTopOrder(AnOrder.DGroup);
+                PositionTopOrder(0);  // puts new orders on top
+                lstOrders.Invalidate;
+              end;
+  ORDER_DC:   begin
+                IndexOfOrder := -1;
+                with lstOrders do for i := 0 to Items.Count - 1 do
+                  if TOrder(Items.Objects[i]).ID = AnOrder.ID then IndexOfOrder := i;
+                if IndexOfOrder > -1
+                  then OrderForList := TOrder(lstOrders.Items.Objects[IndexOfOrder])
+                  else OrderForList := AnOrder;
+                if (Encounter.Provider = User.DUZ) and User.CanSignOrders
+                  then CanSign := CH_SIGN_YES
+                  else CanSign := CH_SIGN_NA;
+                DCNEwOrder := false;
+                if Changes.Orders.Count > 0 then
+                  begin
+                    for j := 0 to Changes.Orders.Count - 1 do
+                      begin
+                        DCChangeItem := TChangeItem(Changes.Orders.Items[j]);
+                        if DCChangeItem.ID = OrderForList.ID then
+                          begin
+                            if (Pos('DC', OrderForList.ActionOn) = 0) then
+                            DCNewOrder := True;
+                            //else DCNewOrder := False;
+                          end;
+                      end;
+                  end;
+                DCOrder(OrderForList, GetReqReason, DCNewOrder, ReturnedType);
+                Changes.Add(CH_ORD, OrderForList.ID, OrderForList.Text, '', CanSign);
+                FCompress := True;
+                SynchListToOrders;
+              end;
+  ORDER_EDIT: with lstOrders do
+              begin
+                IndexOfOrder := -1;
+                for i := 0 to Items.Count - 1 do
+                  if TOrder(Items.Objects[i]).ID = AnOrder.EditOf then IndexOfOrder := i;
+                if IndexOfOrder > -1 then
+                begin
+                  TOrder(Items.Objects[IndexOfOrder]).Assign(AnOrder);
+                end; {if IndexOfOrder}
+                //RedrawOrderList;  {redraw here appears to clear selected}
+              end; {with lstOrders}
+  ORDER_ACT:  begin
+                if IsComplexOrder(AnOrder.ID) then
+                begin
+                  RefreshOrderList(FROM_SERVER);
+                  exit;
+                end;
+                with lstOrders do
+                begin
+                  IndexOfOrder := -1;
+                  for i := 0 to Items.Count - 1 do
+                    if TOrder(Items.Objects[i]).ID = Piece(AnOrder.ActionOn, '=', 1) then IndexOfOrder := i;
+                  if (IndexOfOrder > -1) and (AnOrder <> Items.Objects[IndexOfOrder]) then
+                  begin
+                    TOrder(Items.Objects[IndexOfOrder]).Assign(AnOrder);
+                  end; {if IndexOfOrder}
+                  FCompress := True;
+                  RedrawOrderList;
+                end; {with lstOrders}
+              end; //PSI-COMPLEX
+  ORDER_CPLXRN: begin
+                  AChildList := TStringList.Create;
+                  CplxOrderID := Piece(AnOrder.ActionOn,'=',1);
+                  GetChildrenOfComplexOrder(CplxOrderID, Piece(CplxOrderID,';',2), AChildList);
+                  with lstOrders do
+                  begin
+                    for i := Items.Count-1 downto 0 do
+                    begin
+                      for j := 0 to AChildList.Count - 1 do
+                      begin
+                        if TOrder(Items.Objects[i]).ID = AChildList[j] then
+                        begin
+                          RemoveFromOrderList(AChildList[j]);
+                          Items.Objects[i].Free;
+                          Items.Delete(i);
+                          Break;
+                        end;
+                      end;
+                    end;
+                    Items.InsertObject(0,AnOrder.Text,AnOrder);
+                    Items[0] := GetPlainText(AnOrder,0);
+                    uOrderList.Insert(0,AnOrder);
+                  end;
+                  FCompress := True;
+                  RedrawOrderList;
+                  AChildList.Clear;
+                  AChildList.Free;
+                end;
+  ORDER_SIGN: begin
+                FCompress := True;
+                SaveSignOrders;  // sent when orders signed, AnOrder=nil
+              end;
+  end; {case}
+end;
+
+{ Form events ------------------------------------------------------------------------------ }
+
+procedure TfrmOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OrderListClickProcessing := false;
+  FixHeaderControlDelphi2006Bug(hdrOrders);
+  PageID             := CT_ORDERS;
+  uOrderList         := TList.Create;
+  uEvtDCList         := TList.Create;
+  uEvtRLList         := TList.Create;
+  FDfltSort          := OVS_CATINV;
+  FCompress     := False;
+  FFromDCRelease     := False;
+  FSendDelayOrders   := False;
+  FNewEvent          := False;
+  FNeedShowModal     := False;
+  FAskForCancel      := True;
+  FRightAfterWriteOrderBox := False;
+  FEventForCopyActiveOrders.EventType := #0;
+  FEventForCopyActiveOrders.EventIFN  := 0;
+  FHighlightFromMedsTab := 0;
+  FCalledFromWDO := False;
+  FEvtOrderList := TStringList.Create;
+  FEvtColWidth := 0;
+  FDontCheck := False;
+  FParentComplexOrderID := '';
+  // 508 black color scheme that causes problems 
+  FHighContrast2Mode := BlackColorScheme and (ColorToRGB(clInfoBk) <> ColorToRGB(clBlack));
+  AddMessageHandler(lstOrders, RightClickMessageHandler);
+end;
+
+procedure TfrmOrders.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  RemoveMessageHandler(lstOrders, RightClickMessageHandler);
+  ClearOrders(uOrderList);
+  uEvtDCList.Clear;
+  uEvtRLList.Clear;
+  ClearOrderSheets;
+  FEvtOrderList.Free;
+  uEvtDCList.Free;
+  uEvtRLList.Free;
+  uOrderList.Free;
+  if FOrderViewForActiveOrders <> nil then FOrderViewForActiveOrders := nil;
+  FEventForCopyActiveOrders.EventType := #0;
+  FEventForCopyActiveOrders.EventIFN  := 0;
+  FEventForCopyActiveOrders.EventName := '';
+end;
+
+procedure TfrmOrders.UMDestroy(var Message: TMessage);
+{ sent by ordering dialog when it is closing }
+begin
+  lstWrite.ItemIndex := -1;
+  //UnlockIfAble;  // - already in uOrders
+end;
+
+{ View menu events ------------------------------------------------------------------------- }
+
+procedure TfrmOrders.PositionTopOrder(DGroup: Integer);
+const
+  SORT_FWD     = 0;
+  SORT_REV     = 1;
+  SORT_GRP_FWD = 2;
+  SORT_GRP_REV = 3;
+var
+  i, Seq: Integer;
+  AnOrder: TOrder;
+begin
+  with lstOrders do
+  begin
+    case (Ord(FCurrentView.ByService) * 2) + Ord(FCurrentView.InvChrono) of
+    SORT_FWD: TopIndex := Items.Count - 1;
+    SORT_REV: TopIndex := 0;
+    SORT_GRP_FWD: begin
+                    Seq := SeqOfDGroup(DGroup);
+                    for i := Items.Count - 1 downto 0 do
+                    begin
+                      AnOrder := TOrder(Items.Objects[i]);
+                      if AnOrder.DGroupSeq <= Seq then break;
+                    end;
+                    TopIndex := i;
+                  end;
+    SORT_GRP_REV: begin
+                    Seq := SeqOfDGroup(DGroup);
+                    for i := 0 to Items.Count - 1 do
+                    begin
+                      AnOrder := TOrder(Items.Objects[i]);
+                      if AnOrder.DGroupSeq >= Seq then break;
+                    end;
+                    TopIndex := i;
+                  end;
+    end; {case}
+  end; {with}
+end;
+
+procedure TfrmOrders.RedrawOrderList;
+{ redraws the Orders list, compensates for changes in item height by re-adding everything }
+var
+  i, SaveTop: Integer;
+  AnOrder: TOrder;
+begin
+  with lstOrders do
+  begin
+    RedrawSuspend(Handle);
+    SaveTop := TopIndex;
+    Clear;
+    repaint;
+    for i := 0 to uOrderList.Count - 1 do
+    begin
+      AnOrder := TOrder(uOrderList.Items[i]);
+      if (AnOrder.OrderTime <= 0) then
+          Continue;
+      Items.AddObject(AnOrder.ID, AnOrder);
+      Items[i] := GetPlainText(AnOrder,i);
+    end;
+    TopIndex := SaveTop;
+    RedrawActivate(Handle);
+  end;
+end;
+
+procedure TfrmOrders.RefreshOrderList(FromServer: Boolean; APtEvtID: string);
+var
+  i: Integer;
+begin
+  with FCurrentView do
+  begin
+    if EventDelay.EventIFN > 0 then
+      FCompress := False;
+    RedrawSuspend(lstOrders.Handle);
+    lstOrders.Clear;
+    if FromServer then
+    begin
+      StatusText('Retrieving orders list...');
+      if not FFromDCRelease then
+        LoadOrdersAbbr(uOrderList, FCurrentView, APtEvtID)
+      else
+      begin
+        ClearOrders(uOrderList);
+        uEvtDCList.Clear;
+        uEvtRLList.Clear;
+        LoadOrdersAbbr(uEvtDCList,uEvtRLList,FCurrentView,APtEvtID);
+      end;
+    end;
+    if ((Length(APtEvtID)>0) or (FCurrentView.Filter in [15,16,17,24]) or  (FCurrentView.EventDelay.PtEventIFN>0))
+      and ((not FCompress) or (lstSheets.ItemIndex<0)) and (not FFromDCRelease) then ExpandEventSection
+    else CompressEventSection;
+    if not FFromDCRelease then
+    begin
+      if FRightAfterWriteOrderBox and (EventDelay.EventIFN>0) then
+      begin
+        SortOrders(uOrderList,False,True);
+        FRightAfterWriteOrderBox := False;
+      end else
+        SortOrders(uOrderList, ByService, InvChrono);
+      AddToListBox(uOrderList);
+    end;
+    if FFromDCRelease then
+    begin
+      if uEvtRLList.Count > 0 then
+      begin
+        SortOrders(uEvtRLList,True,True);
+        for i := 0 to uEvtRLList.Count - 1 do
+          uOrderList.Add(TOrder(uEvtRLList[i]));
+      end;
+      if uEvtDCList.Count > 0 then
+      begin
+        SortOrders(uEvtDCList,True,True);
+        for i := 0 to uEvtDCList.Count - 1 do
+          uOrderList.Add(TOrder(uEvtDCList[i]));   
+      end;
+      AddToListBox(uOrderList);
+    end;
+    RedrawActivate(lstOrders.Handle);
+    lblOrders.Caption := ViewName;
+    lstOrders.Caption := ViewName;
+    imgHide.Visible := not ((Filter in [1, 2]) and (DGroup = DGroupAll));
+    StatusText('');
+  end;
+end;
+
+procedure TfrmOrders.UseDefaultSort;
+begin
+  with FCurrentView do
+    case FDfltSort of
+    OVS_CATINV:  begin
+                   InvChrono := True;
+                   ByService := True;
+                 end;
+    OVS_CATFWD:  begin
+                   InvChrono := False;
+                   ByService := True;
+                 end;
+    OVS_INVERSE: begin
+                   InvChrono := True;
+                   ByService := False;
+                 end;
+    OVS_FORWARD: begin
+                   InvChrono := False;
+                   ByService := False;
+                 end;
+    end;
+end;
+
+function TfrmOrders.CanChangeOrderView: Boolean;
+{ Disallows changing view while doing delayed release orders. }
+begin
+  Result := True;
+  if (lstSheets.ItemIndex > 0) and ActiveOrdering then
+  begin
+    InfoBox(TX_NOCHG_VIEW, TC_NOCHG_VIEW, MB_OK);
+    Result := False;
+  end;
+end;
+
+procedure TfrmOrders.SetOrderView(AFilter, ADGroup: Integer; const AViewName: string;
+  NotifSort: Boolean);
+{ sets up a 'canned' order view, assumes the date range is never restricted }
+var
+  tmpDate: TDateTime;
+begin
+  if not CanChangeOrderView then Exit;
+  lstSheets.ItemIndex := 0;
+  FCurrentView := TOrderView(lstSheets.Items.Objects[0]);
+  if FCurrentView = nil then
+    FCurrentView := TOrderView.Create;
+  with FCurrentView do
+  begin
+    TimeFrom  := 0;
+    TimeThru  := 0;
+    if NotifSort then
+    begin
+      ByService := False;
+      InvChrono := True;
+      if AFilter = STS_RECENT then
+        begin
+          tmpDate  := Trunc(FMDateTimeToDateTime(StrToFMDateTime(Piece(Piece(Notifications.RecordID, U, 2), ';', 3))));
+          TimeFrom := DateTimeToFMDateTime(tmpDate - 5);
+          TimeThru := FMNow;
+        end;
+      if AFilter = STS_UNVERIFIED then
+        begin
+          if Patient.AdmitTime > 0 then
+            tmpDate := Trunc(FMDateTimeToDateTime(Patient.AdmitTime))
+          else
+            tmpdate := Trunc(FMDateTimeToDateTime(FMNow)) - 30;
+          TimeFrom := DateTimeToFMDateTime(tmpDate);
+          TimeThru := FMNow;
+        end;
+    end
+    else UseDefaultSort;
+    if AFilter = STS_EXPIRED then
+    begin
+      TimeFrom := ExpiredOrdersStartDT;
+      TimeThru := FMNow;
+    end;
+    Filter    := AFilter;
+    DGroup    := ADGroup;
+    CtxtTime  := 0;
+    TextView  := 0;
+    ViewName  := AViewName;
+    lstSheets.Items[0] := 'C;0^' + ViewName;
+    EventDelay.EventType := 'C';
+    EventDelay.Specialty := 0;
+    EventDelay.Effective := 0;
+  end;
+  RefreshOrderList(FROM_SERVER);
+end;
+
+procedure TfrmOrders.mnuViewActiveClick(Sender: TObject);
+begin
+  inherited;
+  SetOrderView(STS_ACTIVE, DGroupAll, 'Active Orders (includes Pending & Recent Activity) - ALL SERVICES', False);
+end;
+
+procedure TfrmOrders.mnuViewCurrentClick(Sender: TObject);
+begin
+  inherited;
+  SetOrderView(STS_CURRENT, DGroupAll, 'Current Orders (Active & Pending Status Only) - ALL SERVICES', False);
+end;
+
+procedure TfrmOrders.mnuViewExpiringClick(Sender: TObject);
+begin
+  inherited;
+  SetOrderView(STS_EXPIRING, DGroupAll, 'Expiring Orders - ALL SERVICES', False);
+end;
+
+procedure TfrmOrders.mnuViewExpiredClick(Sender: TObject);
+begin
+  inherited;
+  SetOrderView(STS_EXPIRED, DGroupAll, 'Recently Expired Orders - ALL SERVICES', False);
+end;
+
+procedure TfrmOrders.mnuViewUnsignedClick(Sender: TObject);
+begin
+  inherited;
+  SetOrderView(STS_UNSIGNED, DGroupAll, 'Unsigned Orders - ALL SERVICES', False);
+end;
+
+procedure TfrmOrders.mnuViewCustomClick(Sender: TObject);
+var
+  AnOrderView: TOrderView;
+begin
+  inherited;
+  if not CanChangeOrderView then Exit;
+  AnOrderView := TOrderView.Create;              //       - this starts fresh instead, since CPRS v22
+  try
+    AnOrderView.Assign(FCurrentView);              // RV - v27.1 - preload form with current view params
+  (*  AnOrderView.Filter    := STS_ACTIVE;                    - CQ #11261
+    AnOrderView.DGroup    := DGroupAll;
+    AnOrderView.ViewName  := 'All Services, Active';
+    AnOrderView.InvChrono := True;
+    AnOrderView.ByService := True;
+    AnOrderView.CtxtTime  := 0;
+    AnOrderView.TextView  := 0;
+    AnOrderView.EventDelay.EventType := 'C';
+    AnOrderView.EventDelay.Specialty := 0;
+    AnOrderView.EventDelay.Effective := 0;
+    AnOrderView.EventDelay.EventIFN  := 0;
+    AnOrderView.EventDelay.EventName := 'All Services, Active';*)
+    SelectOrderView(AnOrderView);
+    with AnOrderView do if Changed then
+    begin
+      FCurrentView.Assign(AnOrderView);
+      if FCurrentView.Filter in [15,16,17,24] then
+      begin
+        FCompress      := False;
+        mnuActRel.Visible   := True;
+        popOrderRel.Visible := True;
+      end else
+      begin
+        mnuActRel.Visible   := False;
+        popOrderRel.Visible := False;
+      end;
+
+      //lstSheets.ItemIndex := -1;
+      lstSheets.Items[0] := 'C;0^' + FCurrentView.ViewName;   // v27.5 - RV
+
+      lblWrite.Caption := 'Write Orders';
+      lstWrite.Clear;
+      lstWrite.Caption := lblWrite.Caption;
+      LoadWriteOrders(lstWrite.Items);
+      RefreshOrderList(FROM_SERVER);
+
+      if ByService then
+      begin
+        if InvChrono then FDfltSort := OVS_CATINV  else FDfltSort := OVS_CATFWD;
+      end else
+      begin
+        if InvChrono then FDfltSort := OVS_INVERSE else FDfltSort := OVS_FORWARD;
+      end;
+    end;
+  finally
+    AnOrderView.free;
+  end;
+end;
+
+procedure TfrmOrders.mnuViewDfltShowClick(Sender: TObject);
+begin
+  inherited;
+  if not CanChangeOrderView then Exit;
+  if HighlightFromMedsTab > 0 then
+    lstSheets.ItemIndex := lstSheets.SelectByIEN(HighlightFromMedsTab);
+  if lstSheets.ItemIndex < 0 then
+    lstSheets.ItemIndex := 0;
+  FCurrentView := TOrderView(lstSheets.Items.Objects[lstSheets.ItemIndex]);
+  LoadOrderViewDefault(TOrderView(lstSheets.Items.Objects[0]));
+  lstSheets.Items[0] := 'C;0^' + TOrderView(lstSheets.Items.Objects[0]).ViewName;
+  if lstSheets.ItemIndex > 0 then
+    lstSheetsClick(Application)
+  else
+    RefreshOrderList(FROM_SERVER);
+  if HighlightFromMedsTab > 0 then
+    HighlightFromMedsTab := 0;
+end;
+
+procedure TfrmOrders.mnuViewDfltSaveClick(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  with FCurrentView do
+  begin
+    x := Piece(Viewname, '(', 1) + CRLF;
+    if TimeFrom > 0 then x := x + 'From: ' + MakeRelativeDateTime(TimeFrom);
+    if TimeThru > 0 then x := x + '  Thru: ' + MakeRelativeDateTime(TimeThru);
+    if InvChrono
+      then x := x + CRLF + 'Sort order dates in reverse chronological order'
+      else x := x + CRLF + 'Sort order dates in chronological order';
+    if ByService
+      then x := x + CRLF + 'Group orders by service'
+      else x := x + CRLF + 'Don''t group orders by service';
+  end;
+  if InfoBox(TX_VWSAVE1 + x + TX_VWSAVE2, TC_VWSAVE, MB_YESNO) = IDYES
+    then SaveOrderViewDefault(FCurrentView);
+end;
+
+procedure TfrmOrders.mnuViewDetailClick(Sender: TObject);
+var
+  i,j,idx: Integer;
+  tmpList: TStringList;
+  BigOrderID: string;
+  AnOrderID: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  tmpList := TStringList.Create;
+  idx := 0;
+  try
+    with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+    begin
+      StatusText('Retrieving order details...');
+      BigOrderID := TOrder(Items.Objects[i]).ID;
+      AnOrderID := Piece(BigOrderID, ';', 1);
+      if StrToIntDef(AnOrderID,0) = 0 then
+        ShowMsg('Detail view is not available for selected order.')
+      else
+        begin
+          FastAssign(DetailOrder(BigOrderID), tmpList);
+          if ((TOrder(Items.Objects[i]).DGroupName = 'Inpt. Meds') or
+              (TOrder(Items.Objects[i]).DGroupName = 'Out. Meds') or
+              (TOrder(Items.Objects[i]).DGroupName = 'Clinic Orders') or
+              (TOrder(Items.Objects[i]).DGroupName = 'Infusion')) then
+            begin
+              tmpList.Add('');
+              tmpList.Add(StringOfChar('=', 74));
+              tmpList.Add('');
+              FastAddStrings(MedAdminHistory(AnOrderID), tmpList);
+            end;
+
+          if CheckOrderGroup(AnOrderID)=1 then  // if it's UD group
+          begin
+            for j := 0 to tmpList.Count - 1 do
+            begin
+              if Pos('PICK UP',UpperCase(tmpList[j]))>0 then
+              begin
+                idx := j;
+                Break;
+              end;
+            end;
+            if idx > 0 then
+              tmpList.Delete(idx);
+          end;
+          ReportBox(tmpList, 'Order Details - ' + BigOrderID, True);
+        end;
+      StatusText('');
+      if (frmFrame.TimedOut) or (frmFrame.CCOWDrivedChange) then Exit; //code added to correct access violation on timeout
+      Selected[i] := False;
+      end;
+  finally
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmOrders.mnuViewResultClick(Sender: TObject);
+var
+  i: Integer;
+  BigOrderID: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+  begin
+    StatusText('Retrieving order results...');
+    BigOrderID := TOrder(Items.Objects[i]).ID;
+    if Length(Piece(BigOrderID,';',1)) > 0 then
+      ReportBox(ResultOrder(BigOrderID), 'Order Results - ' + BigOrderID, True);
+    Selected[i] := False;
+    StatusText('');
+  end;
+end;
+
+procedure TfrmOrders.mnuViewResultsHistoryClick(Sender: TObject);
+var
+  i: Integer;
+  BigOrderID: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+  begin
+    StatusText('Retrieving order results...');
+    BigOrderID := TOrder(Items.Objects[i]).ID;
+    if Length(Piece(BigOrderID,';',1)) > 0 then
+      ReportBox(ResultOrderHistory(BigOrderID), 'Order Results History- ' + BigOrderID, True);
+    Selected[i] := False;
+    StatusText('');
+  end;
+end;
+
+{ lstSheets events ------------------------------------------------------------------------- }
+
+procedure TfrmOrders.ClearOrderSheets;
+{ delete all order sheets & associated TOrderView objects, set current view to nil }
+var
+  i: Integer;
+begin
+  with lstSheets do for i := 0 to Items.Count - 1 do TOrderView(Items.Objects[i]).Free;
+  lstSheets.Clear;
+  FCurrentView := nil;
+end;
+
+procedure TfrmOrders.InitOrderSheets;
+{ sets up list of order sheets based on what orders are on the server in delayed status for pt }
+var
+  i: Integer;
+  AnEventInfo: String;
+  AnOrderView: TOrderView;
+begin
+  ClearOrderSheets;
+  LoadOrderSheetsED(lstSheets.Items);
+  // the 1st item in lstSheets should always be the 'Current' view
+  if CharAt(lstSheets.Items[0], 1) <> 'C' then Exit;
+  AnOrderView := TOrderView.Create;
+  AnOrderView.Filter    := STS_ACTIVE;
+  AnOrderView.DGroup    := DGroupAll;
+  AnOrderView.ViewName  := 'All Services, Active';
+  AnOrderView.InvChrono := True;
+  AnOrderView.ByService := True;
+  AnOrderView.CtxtTime  := 0;
+  AnOrderView.TextView  := 0;
+  AnOrderView.EventDelay.EventType := 'C';
+  AnOrderView.EventDelay.Specialty := 0;
+  AnOrderView.EventDelay.Effective := 0;
+  AnOrderView.EventDelay.EventIFN  := 0;
+  AnOrderView.EventDelay.EventName := 'All Services, Active';
+  lstSheets.Items.Objects[0] := AnOrderView;
+  FCurrentView := AnOrderView;
+  FOrderViewForActiveOrders := AnOrderView;
+  // now setup the event-delayed views in lstSheets, each with its own TOrderView object
+  with lstSheets do for i := 1 to Items.Count - 1 do
+  begin
+    AnOrderView := TOrderView.Create;
+    AnOrderView.DGroup := DGroupAll;
+    AnEventInfo := EventInfo(Piece(Items[i],'^',1));
+    AnOrderView.EventDelay.EventType := CharAt(AnEventInfo, 1);
+    AnOrderView.EventDelay.EventIFN  := StrToInt(Piece(AnEventInfo,'^',2));
+    AnOrderView.EventDelay.EventName := Piece(AnEventInfo,'^',3);
+    AnOrderView.EventDelay.Specialty := 0;
+    AnOrderView.EventDelay.Effective := 0;
+    case AnOrderView.EventDelay.EventType of
+    'A': AnOrderView.Filter := 15;
+    'D': AnOrderView.Filter := 16;
+    'T': AnOrderView.Filter := 17;
+    end;
+    AnOrderView.ViewName  := DisplayText[i] + ' Orders';
+    AnOrderView.InvChrono := FCurrentView.InvChrono;
+    AnOrderView.ByService := FCurrentView.ByService;
+    AnOrderView.CtxtTime  := 0;
+    AnOrderView.TextView  := 0;
+    Items.Objects[i] := AnOrderView;
+  end; {for}
+  lblWrite.Caption := 'Write Orders';
+  lstWrite.Caption := lblWrite.Caption;
+end;
+
+procedure TfrmOrders.lstSheetsClick(Sender: TObject);
+const
+  TX_EVTDEL = 'There are no orders tied to this event, would you like to cancel it?';
+var
+  AnOrderView: TOrderView;
+  APtEvtId: string;
+begin
+  inherited;
+  if not CloseOrdering then Exit;
+  FCompress  := True;
+  if lstSheets.ItemIndex < 0 then Exit;
+  with lstSheets do
+  begin
+   AnOrderView := TOrderView(Items.Objects[ItemIndex]);
+   AnOrderView.EventDelay.PtEventIFN := StrToIntDef(Piece(Items[lstSheets.ItemIndex],'^',1),0);
+   if AnOrderView.EventDelay.PtEventIFN > 0 then
+    FCompress := False;
+  end;
+
+  if (FCurrentView <> nil) and (AnOrderView.EventDelay.EventIFN <> FCurrentView.EventDelay.EventIFN) and (FCurrentView.EventDelay.EventIFN > 0 ) then
+  begin
+    APtEvtID := IntToStr(FCurrentView.EventDelay.PtEventIFN);
+    if frmMeds.ActionOnMedsTab then
+      Exit;
+    if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+      Exit;
+    if (not FDontCheck) and DeleteEmptyEvt(APtEvtID, FCurrentView.EventDelay.EventName) then
+    begin
+      ChangesUpdate(APtEvtID);
+      FCompress := True;
+      InitOrderSheetsForEvtDelay;
+      lstSheets.ItemIndex := 0;
+      lstSheetsClick(self);
+      Exit;
+    end;
+  end;
+
+  if (FCurrentView = nil) or (AnOrderView <> FCurrentView) or ((AnOrderView=FcurrentView) and (FCurrentView.EventDelay.EventIFN>0)) then
+  begin
+    FCurrentView := AnOrderView;
+    if FCurrentView.EventDelay.EventIFN > 0 then
+    begin
+      FCompress := False;
+      lstWrite.Items.Clear;
+      lblWrite.Caption := 'Write ' + FCurrentView.ViewName;
+      lstWrite.Caption := lblWrite.Caption;
+      lstWrite.Items.Clear;
+      LoadWriteOrdersED(lstWrite.Items, IntToStr(AnOrderView.EventDelay.EventIFN));
+      if lstWrite.Items.Count < 1 then
+        LoadWriteOrders(lstWrite.Items);
+      RefreshOrderList(FROM_SERVER,Piece(lstSheets.Items[lstSheets.ItemIndex],'^',1));
+      mnuActRel.Visible   := True;
+      popOrderRel.Visible := True;
+      if (lstOrders.Items.Count = 0) and (not NewEvent) then
+      begin
+        if frmMeds.ActionOnMedsTab then
+           Exit;
+        if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+          Exit;
+        if PtEvtEmpty(Piece(lstSheets.Items[lstSheets.ItemIndex],'^',1)) then
+        begin
+          if (FAskForCancel) and ( InfoBox(TX_EVTDEL, 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES ) then
+          begin
+            DeletePtEvent(Piece(lstSheets.Items[lstSheets.ItemIndex],'^',1));
+            FCompress := True;
+            lstSheets.Items.Objects[lstSheets.ItemIndex].Free;
+            lstSheets.Items.Delete(lstSheets.ItemIndex);
+            FCurrentView := TOrderView.Create;
+            lstSheets.ItemIndex := 0;
+            lstSheetsClick(self);
+            Exit;
+          end;
+        end;
+      end;
+      if NewEvent then
+        NewEvent := False;
+    end
+    else
+    begin
+      NewEvent := False;
+      mnuActRel.Visible   := False;
+      popOrderRel.Visible := False;
+      lblWrite.Caption := 'Write Orders';
+      lstWrite.Caption := lblWrite.Caption;
+      LoadWriteOrders(lstWrite.Items);
+      RefreshOrderList(FROM_SERVER);
+    end;
+  end else
+  begin
+    mnuActRel.Visible   := False;
+    popOrderRel.Visible := False;
+    lblWrite.Caption := 'Write Orders';
+    lstWrite.Caption := lblWrite.Caption;
+    LoadWriteOrders(lstWrite.Items);
+    RefreshOrderList(FROM_SERVER);
+  end;
+  FCompress := True;
+end;
+
+{ lstOrders events ------------------------------------------------------------------------- }
+
+procedure TfrmOrders.RetrieveVisibleOrders(AnIndex: Integer);
+var
+  i: Integer;
+  tmplst: TList;
+  AnOrder: TOrder;
+begin
+  tmplst := TList.Create;
+  for i := AnIndex to AnIndex + 100 do
+  begin
+    if i >= uOrderList.Count then break;
+    AnOrder := TOrder(uOrderList.Items[i]);
+    if not AnOrder.Retrieved then tmplst.Add(AnOrder);
+  end;
+  RetrieveOrderFields(tmplst, FCurrentView.TextView, FCurrentView.CtxtTime);
+  tmplst.Free;
+end;
+
+procedure TfrmOrders.RightClickMessageHandler(var Msg: TMessage;
+  var Handled: Boolean);
+begin
+  if Msg.Msg = WM_RBUTTONUP then
+    lstOrders.RightClickSelect := (lstOrders.SelCount < 1);
+end;
+
+function TfrmOrders.GetPlainText(AnOrder: TOrder; index: integer):string;
+var
+  i: integer;
+  FirstColumnDisplayed: Integer;
+  x: string;
+begin
+  result := '';
+  if hdrOrders.Sections[0].Text = 'Event' then
+    FirstColumnDisplayed := 0
+  else
+    FirstColumnDisplayed := 1;
+  for i:= FirstColumnDisplayed to 9 do begin
+    x := GetOrderText(AnOrder, index, i);
+    if x <> '' then
+      result := result + hdrOrders.Sections[i].Text + ': ' + x + CRLF;
+  end;
+end;
+
+function TfrmOrders.MeasureColumnHeight(AnOrder: TOrder; Index: Integer; Column: integer):integer;
+var
+  ARect: TRect;
+  x: string;
+begin
+  x := GetOrderText(AnOrder, Index, Column);
+  ARect.Left := 0;
+  ARect.Top := 0;
+  ARect.Bottom := 0;
+  ARect.Right := hdrOrders.Sections[Column].Width -6;
+  Result := WrappedTextHeightByFont(lstOrders.Canvas,lstOrders.Font,x,ARect);
+end;
+
+procedure TfrmOrders.lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+  var AHeight: Integer);
+var
+  AnOrder: TOrder;
+  NewHeight: Integer;
+begin
+  NewHeight := AHeight;
+  with lstOrders do if Index < Items.Count then
+  begin
+    AnOrder := TOrder(uOrderList.Items[Index]);
+    if AnOrder <> nil then with AnOrder do
+    begin
+      if not AnOrder.Retrieved then RetrieveVisibleOrders(Index);
+      Canvas.Font.Style := [];
+      if Changes.Exist(CH_ORD, ID) then Canvas.Font.Style := [fsBold];
+    end;
+    {measure height of event delayed name}
+    if hdrOrders.Sections[0].Text = 'Event' then
+      NewHeight := HigherOf(AHeight, MeasureColumnHeight(AnOrder, Index, 0));
+    {measure height of order text}
+    NewHeight := HigherOf(NewHeight, MeasureColumnHeight(AnOrder, Index, 2));
+    {measure height of start/stop times}
+    NewHeight := HigherOf(NewHeight, MeasureColumnHeight(AnOrder, Index, 3));
+    if NewHeight > 255 then NewHeight := 255;  // This is maximum allowed by a Windows
+    if NewHeight <  13 then NewHeight := 13;
+  end;
+  AHeight := NewHeight;
+end;
+
+function TfrmOrders.GetStartStopText(StartTime: string; StopTime: string): string;
+var
+  y: string;
+begin
+  result := FormatFMDateTimeStr('mm/dd/yy hh:nn', StartTime);
+  if IsFMDateTime(StartTime) and (Length(StartTime) = FM_DATE_ONLY) then result := Piece(result, ' ', 1);
+  if Length(result) > 0 then result := 'Start: ' + result;
+  y := FormatFMDateTimeStr('mm/dd/yy hh:nn', StopTime);
+  if IsFMDateTime(StopTime)  and (Length(StopTime)  = FM_DATE_ONLY) then y := Piece(y, ' ', 1);
+  if Length(y) > 0 then result := result + CRLF + 'Stop: ' + y;
+end;
+
+function TfrmOrders.GetOrderText(AnOrder: TOrder; Index: integer; Column: integer): string;
+var
+  AReason:  TStringlist;
+  i: integer;
+begin
+  if AnOrder <> nil then with AnOrder do
+  begin
+    case Column of
+      0:
+      begin
+        result := EventName;
+        if (Index > 0) and (result = TOrder(lstOrders.Items.Objects[Index - 1]).EventName) then result := '';
+      end;
+      1:
+      begin
+        result := DGroupName;
+        if (Index > 0) and (result = TOrder(lstOrders.Items.Objects[Index - 1]).DGroupName) then result := '';
+      end;
+      2:
+      begin
+        result := Text;
+        if Flagged then
+        begin
+          if Notifications.Active then
+          begin
+            AReason := TStringList.Create;
+            try
+              result := result + crlf;
+              LoadFlagReason(AReason, ID);
+              for i := 0 to AReason.Count - 1 do
+                result :=  result + AReason[i] + CRLF;
+            finally
+              AReason.Free;
+            end;
+          end
+          else
+            result := result + '  *Flagged*';
+        end;
+      end;
+      3: result := GetStartStopText( StartTime, StopTime);
+      4:
+      begin
+        result := MixedCase(ProviderName);
+        result := Piece(result, ',', 1) + ',' + Copy(Piece(result, ',', 2), 1, 1);
+      end;
+      5: result := VerNurse;
+      6: result := VerClerk;
+      7: result := ChartRev;
+      8: result := NameOfStatus(Status);
+      9: result := MixedCase(Anorder.OrderLocName);
+      //begin AGP change 26.52 display all location for orders.
+        //result := MixedCase(Anorder.OrderLocName);
+        //if (Index > 0) and (result = TOrder(lstOrders.Items.Objects[Index - 1]).OrderLocName) then result := '';
+      //end;
+    end;
+  end;
+end;
+
+procedure TfrmOrders.lstOrdersDrawItem(Control: TWinControl; Index: Integer; TheRect: TRect;
+  State: TOwnerDrawState);
+var
+  i, RightSide: Integer;
+  FirstColumnDisplayed: Integer;
+  x: string;
+  ARect: TRect;
+  AnOrder: TOrder;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstOrders do
+  begin
+    ARect := TheRect;
+    if odSelected in State then
+    begin
+      Canvas.Brush.Color := clHighlight;
+      Canvas.Font.Color := clHighlightText
+    end;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    RightSide := -2;
+
+    for i := 0 to 9 do
+    begin
+      RightSide := RightSide + hdrOrders.Sections[i].Width;
+      Canvas.MoveTo(RightSide, ARect.Bottom - 1);
+      Canvas.LineTo(RightSide, ARect.Top);
+    end;
+
+    if Index < Items.Count then
+    begin
+      AnOrder := TOrder(Items.Objects[Index]);
+      if hdrOrders.Sections[0].Text = 'Event' then
+        FirstColumnDisplayed := 0
+      else
+        FirstColumnDisplayed := 1;
+      if AnOrder <> nil then with AnOrder do for i := FirstColumnDisplayed to 9 do
+      begin
+        if i > FirstColumnDisplayed then
+          ARect.Left := ARect.Right + 2
+        else
+          ARect.Left := 2;
+        ARect.Right := ARect.Left + hdrOrders.Sections[i].Width - 6;
+        x := GetOrderText(AnOrder, Index, i);
+        SaveColor := Canvas.Brush.Color;
+        if i = FirstColumnDisplayed then
+        begin
+          if Flagged then
+          begin
+            Canvas.Brush.Color := Get508CompliantColor(clRed);
+            Canvas.FillRect(ARect);
+          end;
+        end;
+        if i = 2 then
+        begin
+          Canvas.Font.Style := [];
+          if Changes.Exist(CH_ORD, AnOrder.ID) then Canvas.Font.Style := [fsBold];
+          if not (odSelected in State) and (AnOrder.Signature = OSS_UNSIGNED) then
+          begin
+            if FHighContrast2Mode then
+              Canvas.Font.Color := clBlue
+            else
+              Canvas.Font.Color := Get508CompliantColor(clBlue);
+          end;
+        end;
+        if (i = 2) or (i = 3) or (i = 0) then
+          DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK)
+        else DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX );
+        Canvas.Brush.Color := SaveColor;
+        ARect.Right := ARect.Right + 4;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmOrders.hdrOrdersSectionResize(HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  FEvtColWidth := hdrOrders.Sections[0].Width;
+  RedrawOrderList;
+  lstOrders.Invalidate;
+  pnlRight.Refresh;
+  pnlLeft.Refresh;
+end;
+
+procedure TfrmOrders.lstOrdersDblClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDetailClick(Self);
+end;
+
+{ Writing Orders }
+
+procedure TfrmOrders.lstWriteClick(Sender: TObject);
+{ ItemID = DlgIEN;FormID;DGroup;DlgType }
+var
+  Activated: Boolean;
+  NextIndex: Integer;
+begin
+  if OrderListClickProcessing then Exit;
+  OrderListClickProcessing := true;   //Make sure this gets set to false prior to exiting.
+  //if PatientStatusChanged then exit;
+  if BILLING_AWARE then //CQ5114
+     fODConsult.displayDXCode := ''; //CQ5114
+
+  inherited;
+  //frmFrame.UpdatePtInfoOnRefresh;
+  if not ActiveOrdering then SetConfirmEventDelay;
+  NextIndex := lstWrite.ItemIndex;
+  if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+  begin
+    OrderListClickProcessing := false;
+    Exit;
+  end;
+  if not ReadyForNewOrder(FCurrentView.EventDelay) then
+  begin
+    lstWrite.ItemIndex := RefNumFor(Self);
+    OrderListClickProcessing := false;
+    Exit;
+  end;
+
+  // don't write delayed orders for non-VA meds:
+  if (FCurrentView.EventDelay.EventIFN>0) and (Piece(lstWrite.ItemID,';',2) = '145') then
+    begin
+      InfoBox('Delayed orders cannot be written for Non-VA Medications.', 'Meds, Non-VA', MB_OK);
+      OrderListClickProcessing := false;
+      Exit;
+    end;
+
+  if (FCurrentView <> nil) and (FCurrentView.EventDelay.EventIFN>0) then
+    FRightAfterWriteOrderBox := True;
+  lstWrite.ItemIndex := NextIndex;  // (ReadyForNewOrder may reset ItemIndex to -1)
+  if FCurrentView <> nil then with FCurrentView.EventDelay do
+    if (EventType = 'D') and (Effective = 0) then
+      if not ObtainEffectiveDate(Effective) then
+      begin
+        lstWrite.ItemIndex := -1;
+        OrderListClickProcessing := false;
+        Exit;
+      end;
+  if frmFrame.CCOWDrivedChange then begin
+    OrderListClickProcessing := false;
+    Exit;
+  end;
+  PositionTopOrder(StrToIntDef(Piece(lstWrite.ItemID, ';', 3), 0));  // position Display Group
+  case CharAt(Piece(lstWrite.ItemID, ';', 4), 1) of
+  'A':      Activated := ActivateAction(     Piece(lstWrite.ItemID, ';', 1), Self,
+                                             lstWrite.ItemIndex);
+  'D', 'Q': Activated := ActivateOrderDialog(Piece(lstWrite.ItemID, ';', 1),
+                                             FCurrentView.EventDelay, Self, lstWrite.ItemIndex);
+  'H':      Activated := ActivateOrderHTML(  Piece(lstWrite.ItemID, ';', 1),
+                                             FCurrentView.EventDelay, Self, lstWrite.ItemIndex);
+  'M':      Activated := ActivateOrderMenu(  Piece(lstWrite.ItemID, ';', 1),
+                                             FCurrentView.EventDelay, Self, lstWrite.ItemIndex);
+  'O':      Activated := ActivateOrderSet(   Piece(lstWrite.ItemID, ';', 1),
+                                             FCurrentView.EventDelay, Self, lstWrite.ItemIndex);
+  else      Activated := not (InfoBox(TX_BAD_TYPE, TC_BAD_TYPE, MB_OK) = IDOK);
+  end; {case}
+  if not Activated then
+  begin
+    lstWrite.ItemIndex := -1;
+    FRightAfterWriteOrderBox := False;
+  end;
+  if (lstSheets.ItemIndex > -1) and (Pos('EVT',Piece(lstSheets.Items[lstSheets.ItemIndex],'^',1))>0) then
+  begin
+    InitOrderSheetsForEvtDelay;
+    lstSheets.ItemIndex := 0;
+    lstSheetsClick(Self);
+  end;
+  OrderListClickProcessing := false;
+  if (FCurrentView <> nil) and (FCurrentView.EventDelay.PtEventIFN>0) and
+    (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+end;
+
+procedure TfrmOrders.SaveSignOrders;
+var
+  SaveOrderID: string;
+  i: Integer;
+begin
+  // unlock if able??
+  if not PatientViewed then Exit;
+  if not frmFrame.ContextChanging then with lstOrders do
+  begin
+    if (TopIndex < Items.Count) and (TopIndex > -1)
+      then SaveOrderID := TOrder(Items.Objects[TopIndex]).ID
+      else SaveOrderID := '';
+    if lstSheets.ItemIndex > 0 then
+      RefreshOrderList(FROM_SERVER,Piece(lstSheets.Items[lstSheets.ItemIndex],'^',1))
+    else
+      RefreshOrderList(FROM_SERVER);
+    if Length(SaveOrderID) > 0 then for i := 0 to Items.Count - 1 do
+      if TOrder(Items.Objects[i]).ID = SaveOrderID then TopIndex := i;
+  end;
+end;
+
+{ Action menu events ----------------------------------------------------------------------- }
+
+procedure TfrmOrders.ValidateSelected(const AnAction, WarningMsg, WarningTitle: string);
+{ loop to validate action on each selected order, deselect if not valid }
+var
+  i: Integer;
+  AnOrder: TOrder;
+  ErrMsg, AParentID: string;
+  GoodList,BadList, CheckedList: TStringList;
+begin
+  GoodList := TStringList.Create;
+  BadList  := TStringList.Create;
+  CheckedList := TStringList.Create;
+  try
+    with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+    begin
+      AnOrder := TOrder(Items.Objects[i]);
+      if (AnAction = 'RN') and (PassDrugTest(StrtoINT(Piece(AnOrder.ID, ';',1)), 'E', True, True)=True) then
+        begin
+          ShowMsg('Cannot renew Clozapine orders.');
+          Selected[i] := false;
+        end;
+      if (AnAction = 'RN') and (AnOrder.Status=6) and (AnOrder.DGroupName = 'Inpt. Meds') and (Patient.inpatient) and (IsClinicLoc(Encounter.Location)) then
+         begin
+           Selected[i] := False;
+           MessageDlg('You cannot renew inpatient medication order on a clinic location for selected inpatient.', mtWarning, [mbOK], 0);
+         end;
+      if ((AnAction = 'RN') or (AnAction = 'EV')) and (AnOrder.EnteredInError = 0) then  //AGP Changes PSI-04053
+      begin
+        if not IsValidSchedule(AnOrder.ID) then
+        begin
+          if (AnAction = 'RN') then
+            ShowMsg('The order contains invalid schedule and can not be renewed.')
+          else if (AnAction = 'EV') then
+            ShowMsg('The order contains invalid schedule and can not be changed to event delayed order.');
+
+          Selected[i] := False;
+          Continue;
+        end;
+      end;
+      //AGP CHANGE ORDER ENTERED IN ERROR TO ALLOW SIGNATURE AND VERIFY ACTIONS 26.23
+      if ((AnOrder.EnteredInError = 1) and ((AnOrder.Status = 1) or (AnOrder.Status = 13)))  and ((AnAction <> 'ES') and (AnAction <> 'VR')) then
+         begin
+            InfoBox(AnOrder.Text + WarningMsg + 'This order has been mark as Entered in error.', WarningTitle, MB_OK);
+            Selected[i] := False;
+            Continue;
+         end;
+      if ((AnAction <> OA_RELEASE) and (AnOrder.EnteredInError = 0)) or (((AnOrder.EnteredInError = 1) and ((AnOrder.Status = 1) or (AnOrder.Status = 13))) and
+            (AnAction = 'ES')) then
+         ValidateOrderAction(AnOrder.ID, AnAction, ErrMsg)
+      //AGP END Changes
+        else ErrMsg := '';
+      if (Length(ErrMsg)>0) and (Pos('COMPLEX-PSI',ErrMsg)<1) then
+      begin
+        InfoBox(AnOrder.Text + WarningMsg + ErrMsg, WarningTitle, MB_OK);
+        Selected[i] := False;
+        Continue;
+      end;
+      if (Length(ErrMsg)>0) and IsFirstDoseNowOrder(AnOrder.ID) and (AnAction <> 'RL') then
+      begin
+        InfoBox(AnOrder.Text + WarningMsg + ErrMsg, WarningTitle, MB_OK);
+        Selected[i] := False;
+        Continue;
+      end;
+      if (Length(ErrMsg)>0) and ( (AnAction = OA_CHGEVT) or (AnAction = OA_EDREL) ) then
+      begin
+        InfoBox(AnOrder.Text + WarningMsg + ErrMsg, WarningTitle, MB_OK);
+        Selected[i] := False;
+        Continue;
+      end;
+      AParentID := '';
+      IsValidActionOnComplexOrder(AnOrder.ID, AnAction,TListBox(lstOrders),CheckedList,ErrMsg, AParentID);
+      TOrder(Items.Objects[i]).ParentID := AParentID;
+      if (Length(ErrMsg)=0) and (AnAction=OA_EDREL) then
+         begin
+           if (AnOrder.Signature = 2) and (not VerbTelPolicyOrder(AnOrder.ID)) then
+              begin
+                ErrMsg := 'Need to be signed first.';
+                Selected[i] := False;
+              end;
+         end;
+
+      if (AnAction = OA_CHGEVT) or (AnAction = OA_EDREL) then
+         begin
+           if Length(ErrMsg)>0 then
+              begin
+                Selected[i] := False;
+                Badlist.Add(AnOrder.Text + '^' + ErrMsg);
+              end
+           else
+             GoodList.Add(AnOrder.Text);
+         end;
+
+      if (Length(ErrMsg) > 0) and (AnAction <> OA_CHGEVT) and (AnAction <> OA_EDREL) then
+         begin
+           if Pos('COMPLEX-PSI',ErrMsg)>0 then ErrMsg := TX_COMPLEX;
+           InfoBox(AnOrder.Text + WarningMsg + ErrMsg, WarningTitle, MB_OK);
+           Selected[i] := False;
+         end;
+
+      if Selected[i] and (not OrderIsLocked(AnOrder.ID, AnAction)) then Selected[i] := False;
+
+    end; //with
+
+    if ((AnAction = OA_CHGEVT) or (AnAction = OA_EDREL)) then
+       begin
+        if (BadList.Count = 1) and (GoodList.Count < 1 ) then
+          InfoBox(Piece(BadList[0],'^',1) + WarningMsg + Piece(BadList[0],'^',2), WarningTitle, MB_OK);
+        if ((BadList.Count >= 1) and (GoodList.Count >= 1)) or ( BadList.Count > 1 )then
+          DisplayOrdersForAction(BadList,GoodList,AnAction);
+       end;
+  finally
+    GoodList.Free;
+    BadList.Free;
+    CheckedList.Free;
+  end;
+end;
+
+procedure TfrmOrders.MakeSelectedList(AList: TList);
+{ make a list of selected orders }
+var
+  i: Integer;
+begin
+  with lstOrders do for i := 0 to Items.Count - 1 do
+    if Selected[i] then AList.Add(Items.Objects[i]);
+end;
+
+function TfrmOrders.NoneSelected(const ErrMsg: string): Boolean;
+var
+  i: Integer;
+begin
+  // use if selcount
+  Result := True;
+  with lstOrders do for i := 0 to Items.Count - 1 do
+    if Selected[i] then
+    begin
+      Result := False;
+      Break;
+    end;
+  if Result then InfoBox(ErrMsg, TC_NOSEL, MB_OK);
+end;
+
+procedure TfrmOrders.RemoveSelectedFromChanges(AList: TList);
+{ remove from Changes orders that were signed or released }
+var
+  i: Integer;
+begin
+  with AList do for i := 0 to Count - 1 do
+    with TOrder(Items[i]) do Changes.Remove(CH_ORD, ID);
+end;
+
+procedure TfrmOrders.SynchListToOrders;
+{ make sure lstOrders now reflects the current state of orders }
+var
+  i: Integer;
+begin
+  with lstOrders do for i := 0 to Items.Count - 1 do
+  begin
+    Items[i] := GetPlainText(TOrder(Items.Objects[i]),i);
+    if Selected[i] then Selected[i] := False;
+  end;
+  lstOrders.Invalidate;
+end;
+
+procedure TfrmOrders.mnuActDCClick(Sender: TObject);
+{ discontinue/cancel/delete the selected orders (as appropriate for each order }
+var
+  DelEvt: boolean;
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if not (FCurrentView.EventDelay.EventIFN>0) then
+    if not EncounterPresent then Exit;                    // make sure have provider & location
+  if not LockedForOrdering then Exit;
+  if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+  SelectedList := TList.Create;
+  try
+    //if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_DC, TX_NO_DC, TC_NO_DC); // validate DC action on each order
+    ActivateDeactiveRenew;   //AGP 26.53 TURN OFF UNTIL FINAL DECISION CAN BE MADE
+    MakeSelectedList(SelectedList);                     // build list of orders that remain
+    // updating the Changes object happens in ExecuteDCOrders, based on individual order
+    if ExecuteDCOrders(SelectedList,DelEvt) then SynchListToOrders;
+    UpdateUnsignedOrderAlerts(Patient.DFN);
+    with Notifications do
+      if Active and (FollowUp = NF_ORDER_REQUIRES_ELEC_SIGNATURE) then
+        UnsignedOrderAlertFollowup(Piece(RecordID, U, 2));
+    UpdateExpiringMedAlerts(Patient.DFN);
+    UpdateUnverifiedMedAlerts(Patient.DFN);
+    UpdateUnverifiedOrderAlerts(Patient.DFN);
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActRelClick(Sender: TObject);
+var
+  SelectedList: TList;
+  ALocation: Integer;
+  AName: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL_SIGN) then Exit;
+  if not AuthorizedUser then Exit;
+  if not CanManualRelease then
+  begin
+    ShowMsg('You are not authorized to manual release delayed orders.');
+    Exit;
+  end;
+  if Encounter.Location = 0 then                         // location required for ORCSEND
+  begin
+    LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+    if ALocation > 0 then Encounter.Location := ALocation;
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.Location = 0 then
+  begin
+    InfoBox(TX_SIGN_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  if not LockedForOrdering then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_EDREL, TX_NO_REL, TC_NO_REL);  // validate realease action on each order
+    MakeSelectedList(SelectedList);
+    if SelectedList.Count=0 then
+      Exit;
+    //ExecuteReleaseOrderChecks(SelectedList);
+    if not ExecuteReleaseEventOrders(SelectedList) then
+      Exit;
+    UpdateExpiringMedAlerts(Patient.DFN);
+    UpdateUnverifiedMedAlerts(Patient.DFN);
+    UpdateUnverifiedOrderAlerts(Patient.DFN);
+    FCompress := True;
+    SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_SIGN, 0);
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActChgEvntClick(Sender: TObject);
+var
+  SelectedList :TList;
+  DoesDestEvtOccur: boolean;
+  DestPtEvtID: integer;
+  DestPtEvtName: string;
+begin
+  inherited;
+  if not EncounterPresentEDO then Exit;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if not LockedForOrdering then Exit;
+  //if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+  //  Exit;
+  DoesDestEvtOccur := False;
+  DestPtEvtID := 0;
+  DestPtEvtName := '';
+  SelectedList := TList.Create;
+  try
+    if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_CHGEVT, TX_NO_CV, TC_NO_CV);   // validate Change Event action on each order
+    MakeSelectedList(SelectedList);                     // build list of orders that remain
+    if ExecuteChangeEvt(SelectedList,DoesDestEvtOccur,DestPtEvtId,DestPtEvtName) then
+      SynchListToOrders
+    else
+      Exit;
+    UpdateUnsignedOrderAlerts(Patient.DFN);
+    with Notifications do
+      if Active and (FollowUp = NF_ORDER_REQUIRES_ELEC_SIGNATURE) then
+        UnsignedOrderAlertFollowup(Piece(RecordID, U, 2));
+    UpdateExpiringMedAlerts(Patient.DFN);
+    UpdateUnverifiedMedAlerts(Patient.DFN);
+    UpdateUnverifiedOrderAlerts(Patient.DFN);
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+    if DoesDestEvtOccur then
+      PtEvtCompleted(DestPtEvtID,DestPtEvtName);
+  end;
+end;
+
+procedure TfrmOrders.mnuActHoldClick(Sender: TObject);
+{ place the selected orders on hold, creates new orders }
+var
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if not EncounterPresent then Exit;                    // make sure have provider & location
+  if not LockedForOrdering then Exit;
+  if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+  SelectedList := TList.Create;
+  try
+    if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_HOLD, TX_NO_HOLD, TC_NO_HOLD);  // validate hold action on each order
+    MakeSelectedList(SelectedList);                     // build list of orders that remain
+    if ExecuteHoldOrders(SelectedList) then             // confirm & perform hold
+    begin
+      AddSelectedToChanges(SelectedList);               // send held orders to changes
+      SynchListToOrders;                                // ensure ID's in lstOrders are correct
+    end;
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActUnholdClick(Sender: TObject);
+{ release orders from hold, no signature required - no new orders created }
+var
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if not EncounterPresent then Exit;
+  if not LockedForOrdering then Exit;
+  SelectedList := TList.Create;
+  try
+    if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_UNHOLD, TX_NO_UNHOLD, TC_NO_UNHOLD);  // validate release hold action
+    MakeSelectedList(SelectedList);                           // build list of selected orders
+    if ExecuteUnholdOrders(SelectedList) then
+    begin
+      AddSelectedToChanges(SelectedList);
+      SynchListToOrders;
+    end;
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActRenewClick(Sender: TObject);
+{ renew the selected orders (as appropriate for each order }
+var
+  SelectedList: TList;
+  ParntOrder: TOrder;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if not EncounterPresent then Exit;                       // make sure have provider & location
+  if not LockedForOrdering then Exit;
+  SelectedList := TList.Create;
+  try
+    if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_RENEW, TX_NO_RENEW, TC_NO_RENEW);  // validate renew action for each
+    MakeSelectedList(SelectedList);                       // build list of orders that remain
+    if Length(FParentComplexOrderID)>0 then
+    begin
+      ParntOrder := GetOrderByIFN(FParentComplexOrderID);
+      if CharAt(ParntOrder.Text,1)='+' then
+        ParntOrder.Text := Copy(ParntOrder.Text,2,Length(ParntOrder.Text));
+      if Pos('First Dose NOW',ParntOrder.Text)>1 then
+        Delete(ParntOrder.text, Pos('First Dose NOW',ParntOrder.Text), Length('First Dose NOW'));
+      SelectedList.Add(ParntOrder);
+      FParentComplexOrderID := '';
+    end;
+    if ExecuteRenewOrders(SelectedList) then
+    begin
+      AddSelectedToChanges(SelectedList);  // should this happen in ExecuteRenewOrders?
+      SynchListToOrders;
+    end;
+    UpdateExpiringMedAlerts(Patient.DFN);
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActAlertClick(Sender: TObject);
+{ set selected orders to send alerts when results are available, - no new orders created }
+var
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_ALERT, TX_NO_ALERT, TC_NO_ALERT);     // validate release hold action
+    MakeSelectedList(SelectedList);                           // build list of selected orders
+    ExecuteAlertOrders(SelectedList);
+  finally
+    SelectedList.Free;
+  end;
+end;
+
+procedure TfrmOrders.mnuActFlagClick(Sender: TObject);
+var
+  i: Integer;
+  AnOrder: TOrder;
+  ErrMsg: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+  with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+  begin
+    AnOrder := TOrder(Items.Objects[i]);
+    ValidateOrderAction(AnOrder.ID, OA_FLAG, ErrMsg);
+    if Length(ErrMsg) > 0
+      then InfoBox(AnOrder.Text + TX_NO_FLAG + ErrMsg, TC_NO_FLAG, MB_OK)
+      else ExecuteFlagOrder(AnOrder);
+    Selected[i] := False;
+  end;
+  lstOrders.Invalidate;
+end;
+
+procedure TfrmOrders.mnuActUnflagClick(Sender: TObject);
+var
+  i: Integer;
+  AnOrder: TOrder;
+  ErrMsg: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+  begin
+    AnOrder := TOrder(Items.Objects[i]);
+    ValidateOrderAction(AnOrder.ID, OA_UNFLAG, ErrMsg);
+    if Length(ErrMsg) > 0
+      then InfoBox(AnOrder.Text + TX_NO_UNFLAG + ErrMsg, TC_NO_UNFLAG, MB_OK)
+      else ExecuteUnflagOrder(AnOrder);
+    Selected[i] := False;
+  end;
+  lstOrders.Invalidate;
+  if Notifications.Active then AutoUnflagAlertedOrders(Patient.DFN, Piece(Notifications.RecordID, U, 2));
+end;
+
+procedure TfrmOrders.mnuActCompleteClick(Sender: TObject);
+{ complete generic orders, no signature required - no new orders created }
+var
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_COMPLETE, TX_NO_CPLT, TC_NO_CPLT);    // validate completing of order
+    MakeSelectedList(SelectedList);                           // build list of selected orders
+    if ExecuteCompleteOrders(SelectedList) then SynchListToOrders;
+  finally
+    SelectedList.Free;
+  end;
+end;
+
+procedure TfrmOrders.mnuActVerifyClick(Sender: TObject);
+{ verify orders, signature required but no new orders created }
+var
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedToVerify then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_VERIFY, TX_NO_VERIFY, TC_NO_VERIFY);  // make sure order can be verified
+    MakeSelectedList(SelectedList);                           // build list of selected orders
+    if ExecuteVerifyOrders(SelectedList, False) then SynchListToOrders;
+  finally
+    SelectedList.Free;
+  end;
+end;
+
+procedure TfrmOrders.mnuActChartRevClick(Sender: TObject);
+var
+  SelectedList: TList;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedToVerify then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_CHART, TX_NO_VERIFY, TC_NO_VERIFY);   // make sure order can be verified
+    MakeSelectedList(SelectedList);                           // build list of selected orders
+    if ExecuteVerifyOrders(SelectedList, True) then SynchListToOrders;
+  finally
+    SelectedList.Free;
+  end;
+end;
+
+procedure TfrmOrders.mnuActCommentClick(Sender: TObject);
+{ loop thru selected orders, allowing ward comments to be edited for each }
+var
+  i: Integer;
+  AnOrder: TOrder;
+  ErrMsg: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+  with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+  begin
+    AnOrder := TOrder(Items.Objects[i]);
+    ValidateOrderAction(AnOrder.ID, OA_COMMENT, ErrMsg);
+    if Length(ErrMsg) > 0
+      then InfoBox(AnOrder.Text + TX_NO_CMNT + ErrMsg, TC_NO_CMNT, MB_OK)
+      else ExecuteWardComments(AnOrder);
+    Selected[i] := False;
+  end;
+end;
+
+procedure TfrmOrders.mnuActChangeClick(Sender: TObject);
+{ loop thru selected orders, present ordering dialog for each with defaults to selected order }
+var
+  i: Integer;
+  ChangeIFNList: TStringList;
+  ASourceOrderID : string;
+begin
+
+  inherited;
+  if not EncounterPresentEDO then exit;
+  ChangeIFNList := TStringList.Create;
+  try
+    if NoneSelected(TX_NOSEL) then Exit;
+    if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_CHANGE, TX_NO_CHANGE, TC_NO_CHANGE);
+    if (FCurrentView.EventDelay.PtEventIFN>0) and
+      PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName) then
+        Exit;
+    with lstOrders do for i := 0 to Items.Count - 1 do
+      if Selected[i] then
+      begin
+        ChangeIFNList.Add(TOrder(Items.Objects[i]).ID);
+        ASourceOrderID := TOrder(lstOrders.Items.Objects[i]).ID;
+      end;
+    if ChangeIFNList.Count > 0 then
+      ChangeOrders(ChangeIFNList, FCurrentView.EventDelay);
+    // do we need to deselect the orders?
+   finally
+    ChangeIFNList.Free;
+  end;
+  if frmFrame.TimedOut then Exit;
+  RedrawOrderList;
+end;
+
+procedure TfrmOrders.mnuActCopyClick(Sender: TObject);
+{ loop thru selected orders, present ordering dialog for each with defaults to selected order }
+var
+  ThePtEvtID: string;
+  i: Integer;
+  IsNewEvent, needVerify, NewOrderCreated: boolean;
+  CopyIFNList: TStringList;
+  DestPtEvtID: integer;
+  DestPtEvtName: string;
+  DoesDestEvtOccur: boolean;
+  TempEvent: TOrderDelayEvent;
+begin
+  inherited;
+  if not EncounterPresentEDO then Exit;
+  DestPtEvtID := 0;
+  DestPtEvtName := '';
+  DoesDestEvtOccur := False;
+  needVerify := True;
+  CopyIFNList := TStringList.Create;
+  try
+    if NoneSelected(TX_NOSEL) then Exit;
+    NewOrderCreated := False;
+    if CheckOrderStatus = True then Exit;
+    ValidateSelected(OA_COPY, TX_NO_COPY, TC_NO_COPY);
+    if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+      Exit;
+    with lstOrders do for i := 0 to Items.Count - 1 do
+      if Selected[i] then
+        CopyIFNList.Add(TOrder(Items.Objects[i]).ID);
+
+    IsNewEvent := False;
+    //if not ShowMsgOn(CopyIFNList.Count = 0, TX_NOSEL, TC_NOSEL) then
+    if CopyIFNList.Count > 0 then
+      if SetViewForCopy(IsNewEvent,DoesDestEvtOccur,DestPtEvtId,DestPtEvtName) then
+      begin
+        if DoesDestEvtOccur then
+        begin
+          TempEvent.TheParent := TParentEvent.Create;
+          TempEvent.EventIFN := 0;
+          TempEvent.PtEventIFN := 0;
+          TempEvent.EventType := #0;
+          CopyOrders(CopyIFNList, TempEvent, DoesDestEvtOccur, needVerify);
+          if ImmdCopyAct then
+            ImmdCopyAct := False;
+          PtEvtCompleted(DestPtEvtID,DestPtEvtName);
+          Exit;
+        end;
+        FCurrentView.EventDelay.EventName := DestPtEvtName;
+        if (FCurrentView.EventDelay.EventIFN > 0) and (FCurrentView.EventDelay.EventType <> 'D') then
+        begin
+          needVerify := False;
+          uAutoAC := True;
+        end;
+        TempEvent.EventName := DestPtEvtName;  //FCurrentView.EventDelay.EventName;
+        TempEvent.PtEventIFN := DestPtEvtId; //FCurrentView.EventDelay.PtEventIFN;
+        if (FCurrentView.EventDelay.EventType = 'D') or ((not Patient.InPatient) and (FCurrentView.EventDelay.EventType = 'T')) then
+        begin
+          if TransferOrders(CopyIFNList, FCurrentView.EventDelay, DoesDestEvtOccur, needVerify) then NewOrderCreated := True;
+        end
+        else if (not Patient.Inpatient) and (FCurrentView.EventDelay.EventType = 'A') then
+        begin
+          if TransferOrders(CopyIFNList, FCurrentView.EventDelay, DoesDestEvtOccur, needVerify) then NewOrderCreated := True;
+        end
+        else
+           begin
+             if CopyOrders(CopyIFNList, FCurrentView.EventDelay, DoesDestEvtOccur, needVerify) then
+              NewOrderCreated := True;
+           end;
+        if (not NewOrderCreated) and Assigned(FCurrentView) and (FCurrentView.EventDelay.EventIFN>0) then
+          if isExistedEvent(Patient.DFN,IntToStr(FCurrentView.EventDelay.EventIFN),ThePtEvtID) then
+          begin
+            if PtEvtEmpty(ThePtEvtID) then
+            begin
+              DeletePtEvent(ThePtEvtID);
+              ChangesUpdate(ThePtEvtID);
+              InitOrderSheetsForEvtDelay;
+              lstSheets.ItemIndex := 0;
+              lstSheetsClick(self);
+            end;
+          end;
+        if ImmdCopyAct then
+          ImmdCopyAct := False;
+        if DoesDestEvtOccur then
+          PtEvtCompleted(DestPtEvtId, DestPtEvtName);
+      end;
+   finally
+    uAutoAC := False;
+    CopyIFNList.Free;
+  end;
+
+end;
+
+procedure TfrmOrders.mnuActReleaseClick(Sender: TObject);
+{ release orders to services without a signature, do appropriate prints }
+var
+  SelectedList: TList;
+  ALocation: Integer;
+  AName: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if Encounter.Location = 0 then                         // location required for ORCSEND
+  begin
+    LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+    if ALocation > 0 then Encounter.Location := ALocation;
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.Location = 0 then
+  begin
+    InfoBox(TX_REL_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  if not LockedForOrdering then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_RELEASE, TX_NO_REL, TC_NO_REL);  // validate release action on each order
+    MakeSelectedList(SelectedList);                      // build list of orders that remain
+    ExecuteReleaseOrderChecks(SelectedList);             // call order checking
+    if not uInit.TimedOut then
+      if ExecuteReleaseOrders(SelectedList) then           // confirm, then perform release
+        RemoveSelectedFromChanges(SelectedList);           // remove released orders from Changes
+    //SaveSignOrders;
+    UpdateUnsignedOrderAlerts(Patient.DFN);
+    with Notifications do
+      if Active and (FollowUp = NF_ORDER_REQUIRES_ELEC_SIGNATURE) then
+        UnsignedOrderAlertFollowup(Piece(RecordID, U, 2));
+    UpdateExpiringMedAlerts(Patient.DFN);
+    UpdateUnverifiedMedAlerts(Patient.DFN);
+    UpdateUnverifiedOrderAlerts(Patient.DFN);
+    if not uInit.TimedOut then SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_SIGN, 0);
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActOnChartClick(Sender: TObject);
+{ mark orders orders as signed on chart, release to services, do appropriate prints }
+var
+  SelectedList: TList;
+  ALocation: Integer;
+  AName: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  if not AuthorizedUser then Exit;
+  if Encounter.Location = 0 then                         // location required for ORCSEND
+  begin
+    LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+    if ALocation > 0 then Encounter.Location := ALocation;
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.Location = 0 then
+  begin
+    InfoBox(TX_CHART_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  if not LockedForOrdering then Exit;
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_ONCHART, TX_NO_CHART, TC_NO_CHART);  // validate sign on chart for each
+    MakeSelectedList(SelectedList);                      // build list of orders that remain
+    ExecuteReleaseOrderChecks(SelectedList);             // call order checking
+    if not uInit.TimedOut then
+      if ExecuteOnChartOrders(SelectedList) then           // confirm, then perform release
+        RemoveSelectedFromChanges(SelectedList);           // remove released orders from Changes
+    UpdateUnsignedOrderAlerts(Patient.DFN);
+    with Notifications do
+      if Active and (FollowUp = NF_ORDER_REQUIRES_ELEC_SIGNATURE) then
+        UnsignedOrderAlertFollowup(Piece(RecordID, U, 2));
+    UpdateExpiringMedAlerts(Patient.DFN);
+    UpdateUnverifiedMedAlerts(Patient.DFN);
+    UpdateUnverifiedOrderAlerts(Patient.DFN);
+    if not uInit.TimedOut then SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_SIGN, 0);
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuActSignClick(Sender: TObject);
+{ obtain signature for orders, release them to services, do appropriate prints }
+var
+  SelectedList: TList;
+  ALocation: Integer;
+  AName: string;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL_SIGN) then Exit;
+  if not AuthorizedUser then Exit;
+  if (User.OrderRole <> 2) and (User.OrderRole <> 3) then
+  begin
+    ShowMsg('Sorry, You don''t have the permission to release selected orders manually');
+    Exit;
+  end;
+  if not (FCurrentView.EventDelay.EventIFN>0) then
+  begin
+    if Encounter.Location = 0 then                         // location required for ORCSEND
+    begin
+      LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+      if ALocation > 0 then Encounter.Location := ALocation;
+      frmFrame.DisplayEncounterText;
+    end;
+    if Encounter.Location = 0 then
+    begin
+      InfoBox(TX_SIGN_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  end;
+  if not LockedForOrdering then Exit;
+
+  if (FCurrentView.EventDelay.PtEventIFN>0) and (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+
+  SelectedList := TList.Create;
+  try
+    ValidateSelected(OA_SIGN, TX_NO_SIGN, TC_NO_SIGN);  // validate sign action on each order
+    MakeSelectedList(SelectedList);
+    {billing Aware}
+    if BILLING_AWARE then
+    begin
+       UBACore.rpcBuildSCIEList(SelectedList);   // build list of orders and Billable Status
+       UBACore.CompleteUnsignedBillingInfo(rpcGetUnsignedOrdersBillingData(OrderListSCEI) );
+    end;
+
+   {billing Aware}
+    ExecuteReleaseOrderChecks(SelectedList);            // call order checking
+    if not uInit.TimedOut then
+      if ExecuteSignOrders(SelectedList)                  // confirm, sign & release
+        then RemoveSelectedFromChanges(SelectedList);     // remove signed orders from Changes
+    UpdateUnsignedOrderAlerts(Patient.DFN);
+    with Notifications do
+      if Active and (FollowUp = NF_ORDER_REQUIRES_ELEC_SIGNATURE) then
+        UnsignedOrderAlertFollowup(Piece(RecordID, U, 2));
+      if Active then
+      begin
+        UpdateExpiringMedAlerts(Patient.DFN);
+        UpdateUnverifiedMedAlerts(Patient.DFN);
+        UpdateUnverifiedOrderAlerts(Patient.DFN);
+      end;
+    if not uInit.TimedOut then
+      begin
+        SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_SIGN, 0);
+        if lstSheets.ItemIndex < 0 then
+          lstSheets.ItemIndex := 0;
+      end;
+  finally
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmOrders.mnuOptSaveQuickClick(Sender: TObject);
+begin
+  inherited;
+  QuickOrderSave;
+end;
+
+procedure TfrmOrders.mnuOptEditCommonClick(Sender: TObject);
+begin
+  inherited;
+  QuickOrderListEdit;
+end;
+
+procedure TfrmOrders.ProcessNotifications;
+var
+  OrderIEN, ErrMsg: string;
+  BigOrderID: string;
+begin
+    //if not User.NoOrdering then LoadWriteOrders(lstWrite.Items) else lstWrite.Clear; {**KCM**}
+    OrderIEN := IntToStr(ExtractInteger(Notifications.AlertData));
+    case Notifications.FollowUp of
+      NF_FLAGGED_ORDERS                :
+        begin
+          ViewAlertedOrders('', STS_FLAGGED, '', False, True, 'All Services, Flagged');
+          AutoUnflagAlertedOrders(Patient.DFN, Piece(Notifications.RecordID, U, 2));
+        end;
+      NF_ORDER_REQUIRES_ELEC_SIGNATURE :
+        begin
+          ViewAlertedOrders('', STS_UNSIGNED, '', False, True, 'All Services, Unsigned');
+          UnsignedOrderAlertFollowup(Piece(Notifications.RecordID, U, 2));
+        end;
+      NF_IMAGING_REQUEST_CANCEL_HELD   :
+        if Pos('HELD', UpperCase(Notifications.Text)) > 0 then
+          begin
+            ViewAlertedOrders(OrderIEN, STS_HELD, 'IMAGING', False, True, 'Imaging, On Hold');
+            Notifications.Delete;
+          end
+        else
+          begin
+            ViewAlertedOrders(OrderIEN, STS_DISCONTINUED, 'IMAGING', False, True, 'Imaging, Cancelled');
+            Notifications.Delete;
+          end;
+      NF_SITE_FLAGGED_RESULTS       :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_COMPLETE, '', False, True, 'All Services, Site-Flagged');
+          with lstOrders do if Selected[ItemIndex] then
+          begin
+            BigOrderID := TOrder(Items.Objects[ItemIndex]).ID;
+            if Length(Piece(BigOrderID,';',1)) > 0 then
+            begin
+              ReportBox(ResultOrder(BigOrderID), 'Order Results - ' + BigOrderID, True);
+              Notifications.Delete;
+            end;
+          end;
+        end;
+      NF_ORDERER_FLAGGED_RESULTS       :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_COMPLETE, '', False, True, 'All Services, Orderer-Flagged');
+          with lstOrders do if Selected[ItemIndex] then
+          begin
+            BigOrderID := TOrder(Items.Objects[ItemIndex]).ID;
+            if Length(Piece(BigOrderID,';',1)) > 0 then
+            begin
+              ReportBox(ResultOrder(BigOrderID), 'Order Results - ' + BigOrderID, True);
+              Notifications.Delete;
+            end;
+          end;
+        end;
+      NF_ORDER_REQUIRES_COSIGNATURE    :
+        ViewAlertedOrders('', STS_UNSIGNED, '', False, True, 'All Services, Unsigned');
+      NF_LAB_ORDER_CANCELED            :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_DISCONTINUED, 'LABORATORY', False, True, 'Lab, Cancelled');
+          Notifications.Delete;
+        end;
+      NF_DNR_EXPIRING                  :
+        ViewAlertedOrders('', STS_EXPIRING, '', False, True, 'All Services, Expiring');
+      NF_MEDICATIONS_EXPIRING_INPT          :
+        begin
+          ViewAlertedOrders('', STS_EXPIRING, 'PHARMACY', False, True, 'Medications, Expiring');
+        end;
+      NF_MEDICATIONS_EXPIRING_OUTPT          :
+        begin
+          ViewAlertedOrders('', STS_EXPIRING, 'PHARMACY', False, True, 'Medications, Expiring');
+        end;
+      NF_UNVERIFIED_MEDICATION_ORDER   :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_UNVERIFIED, 'PHARMACY', False, True, 'Medications, Unverified');
+          if StrToIntDef(OrderIEN, 0) > 0 then    {**REV**}
+            begin       // Delete alert if user can't verify
+              ValidateOrderAction(OrderIEN, OA_VERIFY, ErrMsg);
+              if Pos('COMPLEX-PSI',ErrMsg)>0 then
+                ErrMsg := TX_COMPLEX;
+              if Length(ErrMsg) > 0 then Notifications.Delete;
+            end;
+          UpdateUnverifiedMedAlerts(Patient.DFN);
+        end;
+      NF_NEW_ORDER                     :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_RECENT, '',  False, True, 'All Services, Recent Activity');
+          Notifications.Delete;
+        end;
+      NF_UNVERIFIED_ORDER              :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_UNVERIFIED, '',  False, True, 'All Services, Unverified');
+          if StrToIntDef(OrderIEN, 0) > 0 then    {**REV**}
+            begin       // Delete alert if user can't verify
+              ValidateOrderAction(OrderIEN, OA_SIGN, ErrMsg);
+              if Pos('COMPLEX-PSI',ErrMsg)>0 then
+                ErrMsg := TX_COMPLEX;
+              if Length(ErrMsg) > 0 then Notifications.Delete;
+            end;
+          UpdateUnverifiedOrderAlerts(Patient.DFN);
+        end;
+      NF_FLAGGED_OI_RESULTS       :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_COMPLETE, '', False, True, 'All Services, Orderable Item Flagged');
+          with lstOrders do if Selected[ItemIndex] then
+          begin
+            BigOrderID := TOrder(Items.Objects[ItemIndex]).ID;
+            if Length(Piece(BigOrderID,';',1)) > 0 then
+            begin
+              ReportBox(ResultOrder(BigOrderID), 'Order Results - ' + BigOrderID, True);
+              Notifications.Delete;
+            end;
+          end;
+        end;
+      NF_DC_ORDER                      :
+        begin
+          ViewAlertedOrders(OrderIEN, STS_RECENT, '',  False, True, 'All Services, Recent Activity');
+          Notifications.Delete;
+        end;
+      NF_FLAGGED_OI_EXP_INPT           :
+        begin
+          ViewAlertedOrders('', STS_EXPIRING, '', False, True, 'All Services, Expiring');
+          UpdateExpiringFlaggedOIAlerts(Patient.DFN, NF_FLAGGED_OI_EXP_INPT);
+        end;
+      NF_FLAGGED_OI_EXP_OUTPT          :
+        begin
+          ViewAlertedOrders('', STS_EXPIRING, '', False, True, 'All Services, Expiring');
+          UpdateExpiringFlaggedOIAlerts(Patient.DFN, NF_FLAGGED_OI_EXP_OUTPT);
+        end;
+      NF_CONSULT_REQUEST_CANCEL_HOLD   :
+        begin
+          OrderIEN := GetConsultOrderNumber(Notifications.AlertData);
+          ViewAlertedOrders(OrderIEN, STS_DISCONTINUED, 'CONSULTS',  False, True, 'Consults, Cancelled');
+          with lstOrders do Selected[ItemIndex] := True;
+        end;
+    else mnuViewUnsignedClick(Self);
+    end;
+end;
+
+procedure TfrmOrders.ViewAlertedOrders(OrderIEN: string; Status: integer; DispGrp: string;
+          BySvc, InvDate: boolean; Title: string);  {**KCM**}
+var
+  i, ADGroup: integer;
+  DGroups: TStrings;
+begin
+  DGroups := TStringList.Create;
+  try
+    ADGroup := DGroupAll;
+    if Length(DispGrp) > 0 then
+      begin
+        ListDGroupAll(DGroups);
+        for i := 0 to DGroups.Count-1 do
+          if Piece(DGroups.Strings[i], U, 2) = DispGrp then
+            ADGroup := StrToIntDef(Piece(DGroups.Strings[i], U, 1),0);
+      end;
+  finally
+    DGroups.Free;
+  end;
+  SetOrderView(Status, ADGroup, Title, True);
+  with lstOrders do
+    begin
+      if Length(OrderIEN) > 0 then
+        begin
+          for i := 0 to Items.Count-1 do
+            if Piece(TOrder(Items.Objects[i]).ID, ';', 1) = OrderIEN then
+              begin
+                ItemIndex := i;
+                Selected[i] := True;
+                break;
+              end;
+        end
+      else for i := 0 to Items.Count-1 do
+        if Piece(TOrder(Items.Objects[i]).ID, ';', 1) <> '0' then Selected[i] := True;
+      if SelCount = 0 then Notifications.Delete;
+    end;
+end;
+
+procedure TfrmOrders.pnlRightResize(Sender: TObject);
+begin
+  inherited;
+  imgHide.Left := pnlRight.Width - 19;
+end;
+
+procedure TfrmOrders.RequestPrint;
+{ obtain print devices for selected orders, do appropriate prints }
+const
+  TX_NEW_LOC1   = 'The patient''s location has changed to ';
+  TX_NEW_LOC2   = '.' + CRLF + 'Should the orders be printed using the new location?';
+  TC_NEW_LOC    = 'New Patient Location';
+var
+  SelectedList: TStringList;
+  ALocation, i: Integer;
+  AName, ASvc, DeviceInfo: string;
+  Nature: char;
+  PrintIt: Boolean;
+begin
+  inherited;
+  if NoneSelected(TX_NOSEL) then Exit;
+  //if not AuthorizedUser then Exit;   removed in v17.1 (RV) SUX-0901-41044
+  SelectedList := TStringList.Create;
+  Nature := #0;
+  try
+    with lstOrders do for i := 0 to Items.Count - 1 do
+      if Selected[i] then SelectedList.Add(Piece(TOrder(Items.Objects[i]).ID, U, 1));
+    CurrentLocationForPatient(Patient.DFN, ALocation, AName, ASvc);
+    if (ALocation > 0) and (ALocation <> Encounter.Location) then
+    begin
+    //gary
+      Encounter.Location := frmClinicWardMeds.ClinicOrWardLocation(Alocation);
+   //   if InfoBox(TX_NEW_LOC1 + AName + TX_NEW_LOC2, TC_NEW_LOC, MB_YESNO) = IDYES
+   //     then Encounter.Location := ALocation;
+    end;
+    if Encounter.Location = 0
+      then Encounter.Location := CommonLocationForOrders(SelectedList);
+    if Encounter.Location = 0 then                      // location required for DEVINFO
+    begin
+      LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+      if ALocation > 0 then Encounter.Location := ALocation;
+    end;
+    frmFrame.DisplayEncounterText;
+    if Encounter.Location <> 0 then
+      begin
+        SetupOrdersPrint(SelectedList, DeviceInfo, Nature, False, PrintIt);
+        if PrintIt then ExecutePrintOrders(SelectedList, DeviceInfo);
+        SynchListToOrders;
+      end
+    else InfoBox(TX_PRINT_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);
+  finally
+    SelectedList.Free;
+  end;
+end;
+
+procedure TfrmOrders.btnDelayedOrderClick(Sender: TObject);
+const
+  TX_DELAYCAP = '  Delay release of new order(s) until';
+var
+  AnEvent: TOrderDelayEvent;
+  ADlgLst: TStringList;
+  IsRealeaseNow:   boolean;
+begin
+  inherited;
+  if not EncounterPresentEDO then Exit;
+  AnEvent.EventType := #0;
+  AnEvent.TheParent := TParentEvent.Create;
+  AnEvent.EventIFN := 0;
+  AnEvent.PtEventIFN := 0;
+  AnEvent.EventName  := '';
+  if not CloseOrdering then Exit;
+  FCalledFromWDO := True;
+  //frmFrame.UpdatePtInfoOnRefresh;
+  IsRealeaseNow  := False;
+  FCompress := True;    //treat as lstSheet click
+  ADlgLst := TStringList.Create;
+  //SetEvtIFN(AnEvent.EventIFN);
+  if ShowDelayedEventsTreatingSepecialty(TX_DELAYCAP,AnEvent,ADlgLst,IsRealeaseNow) then
+  begin
+    FEventForCopyActiveOrders := AnEvent;
+    FAskForCancel := False;
+    ResetOrderPage(AnEvent,ADlgLst, IsRealeaseNow);
+  end;
+  FCompress := False;
+  FCalledFromWDO := False;
+  if (FCurrentView <> nil) and (FCurrentView.EventDelay.PtEventIFN>0) and
+    (PtEvtCompleted(FCurrentView.EventDelay.PtEventIFN, FCurrentView.EventDelay.EventName)) then
+    Exit;
+end;
+
+procedure TfrmOrders.CompressEventSection;
+begin
+   hdrOrders.Sections[0].MaxWidth := 0;
+   hdrOrders.Sections[0].MinWidth := 0;
+   hdrOrders.Sections[0].Width    := 0;
+   hdrOrders.Sections[0].Text     := '';
+end;
+
+procedure TfrmOrders.ExpandEventSection;
+begin
+  hdrOrders.Sections[0].MaxWidth := 10000;
+  hdrOrders.Sections[0].MinWidth := 50;
+  if FEvtColWidth > 0 then
+    hdrOrders.Sections[0].Width    := EvtColWidth
+  else
+    hdrOrders.Sections[0].Width    := 65;
+  hdrOrders.Sections[0].Text     := 'Event';
+end;
+
+{procedure TfrmOrders.SetEvtIFN(var AnEvtIFN: integer);
+var
+  APtEvntID,AnEvtInfo: string;
+begin
+  if lstSheets.ItemIndex < 0 then
+    APtEvntID := Piece(lstSheets.Items[0],'^',1)
+  else
+    APtEvntID := Piece(lstSheets.Items[lstSheets.ItemIndex],'^',1);
+  if CharAt(APtEvntID,1) <> 'C' then
+  begin
+    if Pos('EVT',APtEvntID)>0 then
+      AnEvtIFN  := StrToIntDef(Piece(APtEvntID,';',1),0)
+    else
+    begin
+      AnEvtInfo := EventInfo(APtEvntID);
+      AnEvtIFN  := StrToIntDef(Piece(AnEvtInfo,'^',2),0);
+    end;
+  end else
+    AnEvtIFN := 0;
+end;}
+
+procedure TfrmOrders.InitOrderSheetsForEvtDelay;
+begin
+  InitOrderSheets;
+  DfltViewForEvtDelay;
+end;
+
+procedure TfrmOrders.DfltViewForEvtDelay;
+begin
+  inherited;
+  if not CanChangeOrderView then Exit;
+  lstSheets.ItemIndex := 0;
+  FCurrentView := TOrderView(lstSheets.Items.Objects[0]);
+  LoadOrderViewDefault(FCurrentView);
+  lstSheets.Items[0] := 'C;0^' + FCurrentView.ViewName;
+end;
+
+procedure TfrmOrders.EventRealeasedOrder1Click(Sender: TObject);
+var
+  AnOrderView: TOrderView;
+begin
+  inherited;
+  if not CanChangeOrderView then Exit;
+  AnOrderView := TOrderView.Create;
+  AnOrderView.Filter    := STS_ACTIVE;
+  AnOrderView.DGroup    := DGroupAll;
+  AnOrderView.ViewName  := 'All Services, Active';
+  AnOrderView.InvChrono := True;
+  AnOrderView.ByService := True;
+  AnOrderView.CtxtTime  := 0;
+  AnOrderView.TextView  := 0;
+  AnOrderView.EventDelay.EventType := 'C';
+  AnOrderView.EventDelay.Specialty := 0;
+  AnOrderView.EventDelay.Effective := 0;
+  AnOrderView.EventDelay.EventIFN  := 0;
+  AnOrderView.EventDelay.EventName := 'All Services, Active';
+  SelectEvtReleasedOrders(AnOrderView);
+  with AnOrderView do if Changed then
+  begin
+    mnuActRel.Visible   := False;
+    popOrderRel.Visible := False;
+    FCompress      := True;
+    lstSheets.ItemIndex := -1;
+    lblWrite.Caption := 'Write Orders';
+    lstWrite.Clear;
+    LoadWriteOrders(lstWrite.Items);
+    if AnOrderView.EventDelay.PtEventIFN > 0 then
+      RefreshOrderList(FROM_SERVER,IntToStr(AnOrderView.EventDelay.PtEventIFN));
+    lblOrders.Caption := AnOrderView.ViewName;
+    if ByService then
+    begin
+      if InvChrono then FDfltSort := OVS_CATINV  else FDfltSort := OVS_CATFWD;
+    end else
+    begin
+      if InvChrono then FDfltSort := OVS_INVERSE else FDfltSort := OVS_FORWARD;
+    end;
+  end;
+  if FFromDCRelease then
+    FFromDCRelease := False;
+end;
+
+procedure TfrmOrders.ResetOrderPage(AnEvent: TOrderDelayEvent; ADlgLst: TStringList; IsRealeaseNow: boolean);
+var
+  i,AnIndex,EFilter: integer;
+  APtEvtID: string;    // ptr to #100.2
+  theEvtID: string;    // ptr to #100.5
+  tmptPtEvtID: string;
+  AnOrderView: TOrderView;
+  AnDlgStr: string;
+begin
+  EFilter   := 0;
+  theEvtID := '';
+  AnDlgStr  := '';
+  IsDefaultDlg := False;
+  AnOrderView := TOrderView.Create;
+  if FCurrentView = nil then
+  begin
+    FCurrentView := TOrderView.Create;
+    with FCurrentView do
+    begin
+      InvChrono := True;
+      ByService := True;
+    end;
+  end;
+  if IsRealeaseNow then
+    lstSheets.ItemIndex := 0;
+  if AnEvent.EventIFN > 0 then with lstSheets do
+  begin
+    AnIndex := -1;
+    for i := 0 to Items.Count - 1 do
+    begin
+      theEvtID := GetEvtIFN(i);
+      if theEvtID = IntToStr(AnEvent.EventIFN) then
+      begin
+       AnIndex := i;
+       theEvtID := '';
+       Break;
+      end;
+      theEvtID := '';
+    end;
+    if AnIndex > -1 then
+    begin
+      NewEvent := False;
+      ItemIndex := AnIndex;
+      lstSheetsClick(Self);
+    end else
+    begin
+      NewEvent := True;
+      if TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 2 then
+      begin
+        SaveEvtForOrder(Patient.DFN, AnEvent.EventIFN, '');
+        AnEvent.IsNewEvent := False;
+        if (ADlgLst.Count > 0) and (Piece(ADlgLst[0],'^',2) <> 'SET') then
+          ADlgLst.Delete(0);
+      end;
+      if (TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 0) and (AnEvent.TheParent.ParentIFN > 0) then
+      begin
+        if ((ADlgLst.Count > 0) and (Piece(ADlgLst[0],'^',2) = 'SET')) or (ADlgLst.Count = 0 )then
+        begin
+          SaveEvtForOrder(Patient.DFN, AnEvent.TheParent.ParentIFN, '');
+          SaveEvtForOrder(Patient.DFN, AnEvent.EventIFN, '');
+          AnEvent.IsNewEvent := False;
+        end;
+      end;
+      if (TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 0) and (AnEvent.TheParent.ParentIFN = 0) then
+      begin
+        if ((ADlgLst.Count > 0) and (Piece(ADlgLst[0],'^',2) = 'SET')) or (ADlgLst.Count = 0 )then
+        begin
+          SaveEvtForOrder(Patient.DFN, AnEvent.EventIFN, '');
+          AnEvent.IsNewEvent := False;
+        end;
+      end;
+      if isExistedEvent(Patient.DFN,IntToStr(AnEvent.EventIFN), APtEvtID) then
+      begin
+        case AnEvent.EventType of
+          'A': EFilter := 15;
+          'D': EFilter := 16;
+          'T': EFilter := 17;
+        end;
+        AnOrderView.DGroup     := DGroupAll;
+        AnOrderView.Filter     := EFilter;
+        AnOrderView.EventDelay := AnEvent;
+        AnOrderView.CtxtTime  := -1;
+        AnOrderView.TextView  := 0;
+        AnOrderView.ViewName  := 'Delayed ' + AnEvent.EventName + ' Orders';
+        AnOrderView.InvChrono := FCurrentView.InvChrono;
+        AnOrderView.ByService := FCurrentView.ByService;
+        if ItemIndex >= 0 then
+          Items.InsertObject(ItemIndex+1, APtEvtID + U + AnOrderView.ViewName, AnOrderView)
+        else
+          Items.InsertObject(lstSheets.Items.Count, APtEvtID + U + AnOrderView.ViewName, AnOrderView);
+        ItemIndex := lstSheets.Items.IndexOfObject(AnOrderView);
+        FCurrentView := AnOrderView;
+        lblWrite.Caption := 'Write ' + FCurrentView.ViewName;
+        lstWrite.Caption := lblWrite.Caption;
+        ClickLstSheet;
+        NewEvent := True;
+        if ADlgLst.Count > 0 then
+          DisplayDefaultDlgList(lstWrite,ADlgLst)
+        else
+        begin
+          if DispOrdersForEvent(IntToStr(FEventForCopyActiveOrders.EventIFN)) then
+          begin
+            if IsExistedEvent(Patient.DFN,IntToStr(FEventForCopyActiveOrders.EventIFN),tmptPtEvtID) then
+            begin
+              FEventForCopyActiveOrders.PtEventIFN := StrToIntDef(tmptPtEvtID,0);
+              FEventForCopyActiveOrders.IsNewEvent := False
+            end;
+            CopyActiveOrdersToEvent(FOrderViewForActiveOrders, FEventForCopyActiveOrders);
+          end;
+          FEventForCopyActiveOrders.EventIFN := 0;
+        end;
+      end
+      else
+      begin
+        case AnEvent.EventType of
+          'A': EFilter := 15;
+          'D': EFilter := 16;
+          'T': EFilter := 17;
+        end;
+        if ItemIndex < 0 then
+          ItemIndex := 0;
+        IsDefaultDlg        := True;
+        AnOrderView.DGroup     := DGroupAll;
+        AnOrderView.Filter     := EFilter;
+        AnOrderView.EventDelay := AnEvent;
+        AnOrderView.CtxtTime  := -1;
+        AnOrderView.TextView  := 0;
+        AnOrderView.ViewName  := 'Delayed ' + AnEvent.EventName + ' Orders';
+        if FCurrentView <> nil then
+        begin
+          AnOrderView.InvChrono := FCurrentView.InvChrono;
+          AnOrderView.ByService := FCurrentView.ByService;
+        end;
+        Items.InsertObject(ItemIndex+1, IntToStr(AnEvent.EventIFN)+ ';EVT' + U + AnOrderView.ViewName, AnOrderView);
+        lstSheets.ItemIndex := lstSheets.Items.IndexOfObject(AnOrderView);
+        FCurrentView := AnOrderView;
+        lblWrite.Caption := 'Write ' + FCurrentView.ViewName;
+        lstWrite.Caption := lblWrite.Caption;
+        ClickLstSheet;
+        NewEvent := True;
+        if (NewEvent) and (ADlgLst.Count>0) then
+           DisplayDefaultDlgList(lstWrite,ADlgLst);
+      end;
+    end;
+  end else
+  begin
+   lblWrite.Caption := 'Write Orders';
+   lstWrite.Caption := lblWrite.Caption;
+   RefreshOrderList(FROM_SERVER);
+  end;
+end;
+
+function TfrmOrders.GetEvtIFN(AnIndex: integer): string;
+begin
+  if AnIndex >= lstSheets.Items.Count then
+  begin
+    Result := '';
+    exit;
+  end;
+  with lstSheets do
+  begin
+    if Piece(Piece(Items[AnIndex],';',2),'^',1)='EVT' then
+      Result := Piece(Items[AnIndex],';',1)
+    else
+      Result := GetEventIFN(Piece(Items[AnIndex], U, 1));
+  end;
+end;
+
+function TfrmOrders.PlaceOrderForDefaultDialog(ADlgInfo: string; IsDefaultDialog: boolean; AEvent: TOrderDelayEvent): boolean;
+{ ADlgInfo = DlgIEN;FormID;DGroup;DlgType }
+var
+  Activated: Boolean;
+  NextIndex,ix: Integer;
+  APtEvtIdA:   string;
+  TheEvent: TOrderDelayEvent;
+begin
+  inherited;
+  Result := False;
+
+  if FCurrentView = nil then
+  begin                                                  
+    FCurrentView := TOrderView.Create;                   
+    with FCurrentView do                                 
+    begin                                                
+      InvChrono := True;                                 
+      ByService := True;                                 
+    end;
+  end;
+
+  if AEvent.EventType = #0 then
+    TheEvent := FCurrentView.EventDelay
+  else
+    TheEvent := AEvent;
+  if not ActiveOrdering then SetConfirmEventDelay;
+  NextIndex := lstWrite.ItemIndex;
+  if not ReadyForNewOrder1(TheEvent) then
+  begin
+    lstWrite.ItemIndex := RefNumFor(Self);
+    Exit;
+  end;
+  if AEvent.EventType <> #0 then
+    lstWrite.ItemIndex := -1
+  else
+    lstWrite.ItemIndex := NextIndex;  // (ReadyForNewOrder may reset ItemIndex to -1)
+
+  with TheEvent do
+    if (EventType = 'D') and (Effective = 0) then
+      if not ObtainEffectiveDate(Effective) then
+      begin
+        lstWrite.ItemIndex := -1;
+        Exit;
+      end;
+  PositionTopOrder(StrToIntDef(Piece(ADlgInfo, ';', 3), 0));
+  case CharAt(Piece(ADlgInfo, ';', 4), 1) of
+  'A':      Activated := ActivateAction(     Piece(ADlgInfo, ';', 1), Self,
+                                             lstWrite.ItemIndex);
+  'D', 'Q': Activated := ActivateOrderDialog(Piece(ADlgInfo, ';', 1),
+                                             TheEvent, Self, lstWrite.ItemIndex);
+  'H':      Activated := ActivateOrderHTML(  Piece(ADlgInfo, ';', 1),
+                                             TheEvent, Self, lstWrite.ItemIndex);
+  'M':      Activated := ActivateOrderMenu(  Piece(ADlgInfo, ';', 1),
+                                             TheEvent, Self, lstWrite.ItemIndex);
+  'O':      Activated := ActivateOrderSet(   Piece(ADlgInfo, ';', 1),
+                                             TheEvent, Self, lstWrite.ItemIndex);
+  else      Activated := not (InfoBox(TX_BAD_TYPE, TC_BAD_TYPE, MB_OK) = IDOK);
+  end;
+  if (not Activated) and (IsDefaultDialog) then
+  begin
+    lstWrite.ItemIndex := -1;
+    ix := lstSheets.ItemIndex;
+    if lstSheets.ItemIndex < 0 then
+      Exit;
+    APtEvtIdA := Piece(lstSheets.Items[ix],'^',1);
+    if CharAt(APtEvtIdA,1) <> 'C' then
+    begin
+      if Pos('EVT',APtEvtIdA)>0 then
+      begin
+        lstSheets.Items.Objects[ix].Free;
+        lstSheets.Items.Delete(ix);
+        lstSheets.ItemIndex := 0;
+        lstSheetsClick(Self);
+        lblWrite.Caption := 'Write Orders';
+        lstWrite.Caption := lblWrite.Caption;
+        lblOrders.Caption := Piece(lstSheets.Items[0],U,2);
+        lstOrders.Caption := Piece(lstSheets.Items[0],U,2);
+        lstWrite.Clear;
+        LoadWriteOrders(lstWrite.Items);
+      end;
+    end;
+  end;
+  Result := Activated;
+end;
+
+function TfrmOrders.DisplayDefaultDlgList(ADest: TORListBox; ADlgList: TStringList): boolean;
+var
+  i,j: integer;
+  AnDlgStr: string;
+  AFillEvent: TOrderDelayEvent;
+  APtEvtID,tmpPtEvtID: string;
+begin
+  AFillEvent.EventType := #0;
+  AFillEvent.EventIFN  := 0;
+  AFillEvent.PtEventIFN := 0;
+  AFillEvent.TheParent := TParentEvent.Create;
+
+  Result := False;
+  for i := 0 to ADlgList.Count - 1 do
+  begin
+    if i = 0 then
+    begin
+      if AnsiCompareText('Set', Piece(ADlgList[i],'^',2)) = 0 then
+        IsDefaultDlg := False;
+    end;
+    if i > 0 then
+      IsDefaultDlg := False;
+
+    ADest.ItemIndex := -1;
+    for j := 0 to ADest.Items.Count - 1 do
+    begin
+      if Piece(ADest.Items[j],';',1)=Piece(ADlgList[i],'^',1) then
+      begin
+        ADest.ItemIndex := j;
+        break;
+      end;
+    end;
+
+    if ADest.ItemIndex < 0 then
+      AnDlgStr := GetDlgData(Piece(ADlgList[i],'^',1))
+    else
+      AnDlgStr := ADest.Items[ADest.ItemIndex];
+
+    if IsDefaultDlg then NeedShowModal := True else FNeedShowModal := False;
+    if not IsDefaultDlg then
+    begin
+      if FEventForCopyActiveOrders.EventIFN > 0 then
+      begin
+        if IsExistedEvent(Patient.DFN,IntToStr(FEventForCopyActiveOrders.EventIFN),tmpPtEvtID) then
+        begin
+          FEventForCopyActiveOrders.PtEventIFN := StrToIntDef(tmpPtEvtID,0);
+          FEventForCopyActiveOrders.IsNewEvent := False
+        end;
+        if DispOrdersForEvent(IntToStr(FEventForCopyActiveOrders.EventIFN)) then
+          CopyActiveOrdersToEvent(FOrderViewForActiveOrders, FEventForCopyActiveOrders);
+      end;
+      FEventForCopyActiveOrders.EventIFN := 0;
+    end;
+
+    if PlaceOrderForDefaultDialog(AnDlgStr,IsDefaultDlg, AFillEvent) then
+    begin
+      if isExistedEvent(Patient.DFN,IntToStr(FEventForCopyActiveOrders.EventIFN), APtEvtID) then
+      begin
+        FCurrentView.EventDelay.PtEventIFN := StrToIntDef(APtEvtID,0);
+        FCurrentView.EventDelay.IsNewEvent := False;
+      end;
+      if FEventForCopyActiveOrders.EventIFN > 0 then
+      begin
+        if IsExistedEvent(Patient.DFN,IntToStr(FEventForCopyActiveOrders.EventIFN),tmpPtEvtID) then
+        begin
+          FEventForCopyActiveOrders.PtEventIFN := StrToIntDef(tmpPtEvtID,0);
+          FEventForCopyActiveOrders.IsNewEvent := False
+        end;
+        if DispOrdersForEvent(IntToStr(FEventForCopyActiveOrders.EventIFN)) then
+          CopyActiveOrdersToEvent(FOrderViewForActiveOrders, FEventForCopyActiveOrders);
+      end;
+      {if isExistedEvent(Patient.DFN,IntToStr(FEventForCopyActiveOrders.EventIFN), APtEvtID) then
+      begin
+        FCurrentView.EventDelay.PtEventIFN := StrToIntDef(APtEvtID,0);
+        FCurrentView.EventDelay.IsNewEvent := False;
+      end;}
+      EventDefaultOrder := '';
+      FEventForCopyActiveOrders.EventIFN := 0;
+      Result := IsDefaultDlg
+    end
+    else break;
+  end;
+end;
+
+procedure TfrmOrders.ClickLstSheet;
+begin
+  FAskForCancel := False;
+  lstSheetsClick(Self);
+  FAskForCancel := True;
+end;
+
+procedure TfrmOrders.lblWriteMouseMove(Sender: TObject; Shift: TShiftState;
+  X, Y: Integer);
+begin
+  inherited;
+  lblWrite.Hint := lblWrite.Caption;
+end;
+
+procedure TfrmOrders.InitOrderSheets2(AnItem: string);
+var
+  i: Integer;
+begin
+  InitOrderSheets;
+  LoadOrderViewDefault(TOrderView(lstSheets.Items.Objects[0]));
+  lstSheets.Items[0] := 'C;0^' + TOrderView(lstSheets.Items.Objects[0]).ViewName;
+  if Length(AnItem)>0 then
+  begin
+      with lstSheets do for i := 0 to Items.Count - 1 do
+      begin
+        if AnsiCompareText(TOrderView(Items.Objects[i]).ViewName, AnItem)=0 then
+         begin
+           ItemIndex := i;
+           FCurrentView := TOrderView(lstSheets.Items.Objects[i]);
+           break;
+         end;
+      end;
+  end;
+  if lstSheets.ItemIndex < -1 then
+    lstSheets.ItemIndex := 0;
+  lstSheetsClick(Self);
+end;
+
+procedure TfrmOrders.SetFontSize( FontSize: integer);
+begin
+  inherited SetFontSize( FontSize );
+  RedrawOrderList;
+  mnuOptimizeFieldsClick(self);
+  lstSheets.Repaint;
+  lstWrite.Repaint;
+  btnDelayedOrder.Repaint;
+end;
+
+procedure TfrmOrders.popOrderPopup(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+  //frmFrame.UpdatePtInfoOnRefresh;
+end;
+
+procedure TfrmOrders.mnuViewClick(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+  //frmFrame.UpdatePtInfoOnRefresh;
+end;
+
+procedure TfrmOrders.mnuActClick(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+  //frmFrame.UpdatePtInfoOnRefresh;
+end;
+
+procedure TfrmOrders.mnuOptClick(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;  
+  //frmFrame.UpdatePtInfoOnRefresh;
+end;
+
+procedure TfrmOrders.AddToListBox(AnOrderList: TList);
+var
+  idx: integer;
+  AnOrder: TOrder;
+  i: integer;
+begin
+   with AnOrderList do for idx := 0 to Count - 1 do
+   begin
+     AnOrder := TOrder(Items[idx]);
+     if (AnOrder.OrderTime <= 0) then
+         Continue;
+     i := lstOrders.Items.AddObject(AnOrder.ID, AnOrder);
+     lstOrders.Items[i] := GetPlainText(AnOrder,i);
+   end;
+end;
+
+procedure TfrmOrders.ChangesUpdate(APtEvtID: string);
+var
+  jdx: integer;
+  APrtEvtId, tempEvtId,EvtOrderID: string;
+begin
+  APrtEvtId := TheParentPtEvt(APtEvtID);
+  if Length(APrtEvtId)>0 then
+    tempEvtId := APrtEvtId
+  else
+    tempEvtId := APtEvtID;
+  for jdx := EvtOrderList.Count - 1 downto 0 do
+    if AnsiCompareStr(Piece(EvtOrderList[jdx],'^',1),tempEvtID) = 0 then
+    begin
+      EvtOrderID := Piece(EvtOrderList[jdx],'^',2);
+      Changes.Remove(CH_ORD,EvtOrderID);
+      EvtOrderList.Delete(jdx);
+    end;
+end;
+
+function TfrmOrders.PtEvtCompleted(APtEvtID: integer; APtEvtName: string; FromMeds: boolean): boolean;
+begin
+  Result := False;
+  if IsCompletedPtEvt(APtEvtID) then
+  begin
+    if FromMeds then
+      InfoBox('The event "Delayed ' + APtEvtName + '" ' + TX_CMPTEVT_MEDSTAB, 'Warning', MB_OK or MB_ICONWARNING)
+    else
+      InfoBox('The event "Delayed ' + APtEvtName + '" ' + TX_CMPTEVT, 'Warning', MB_OK or MB_ICONWARNING);
+    GroupChangesUpdate('Delayed ' + APtEvtName);
+    InitOrderSheetsForEvtDelay;
+    lstSheets.ItemIndex := 0;
+    lstSheetsClick(self);
+    RefreshOrderList(True);
+    Result := True;
+  end;
+end;
+
+procedure TfrmOrders.RefreshToFirstItem;
+begin
+  InitOrderSheetsForEvtDelay;
+  lstSheets.ItemIndex := 0;
+  RefreshOrderList(True);
+end;
+
+procedure TfrmOrders.GroupChangesUpdate(GrpName: string);
+var
+  ji: integer;
+  theChangeItem: TChangeItem;
+begin
+  Changes.ChangeOrderGrp(GrpName,'');
+  for ji := 0 to Changes.Orders.Count - 1 do
+  begin
+    theChangeItem := TChangeItem(Changes.Orders.Items[ji]);
+    if AnsiCompareText(theChangeItem.GroupName,GrpName)=0 then
+      Changes.ReplaceODGrpName(theChangeItem.ID,'');
+  end;
+end;
+
+procedure TfrmOrders.UMEventOccur(var Message: TMessage);
+begin
+  InfoBox('The event "Delayed ' + FCurrentView.EventDelay.EventName + '" ' + TX_CMPTEVT, 'Warning', MB_OK or MB_ICONWARNING);
+  GroupChangesUpdate('Delayed '+ frmOrders.TheCurrentView.EventDelay.EventName);
+  InitOrderSheetsForEvtDelay;
+  lstSheets.ItemIndex := 0;
+  lstSheetsClick(self);
+  RefreshOrderList(True);
+end;
+
+procedure TfrmOrders.setSectionWidths;
+var
+  i: integer;
+begin
+  //CQ6170
+  for i := 0 to 9 do
+     origWidths[i] := hdrOrders.Sections[i].Width;
+  //end CQ6170
+end;
+
+function TfrmOrders.getTotalSectionsWidth : integer;
+var
+  i: integer;
+begin
+  //CQ6170
+  Result := 0;
+  for i := 0 to hdrOrders.Sections.Count - 1 do
+     Result := Result + hdrOrders.Sections[i].Width;
+  //end CQ6170
+end;
+
+procedure TfrmOrders.FormShow(Sender: TObject);
+begin
+  inherited;
+  //force horizontal scrollbar
+  //lstOrders.ScrollWidth := lstOrders.ClientWidth+1000; //CQ6170
+end;
+
+procedure TfrmOrders.hdrOrdersMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  i: integer;
+  totalSectionsWidth, originalwidth: integer;
+begin
+  inherited;
+  //CQ6170
+  totalSectionsWidth := getTotalSectionsWidth;
+  if totalSectionsWidth > lstOrders.Width - 5 then
+  begin
+    originalwidth := 0;
+    for i := 0 to hdrOrders.Sections.Count - 1 do
+      originalwidth := originalwidth + origWidths[i];
+    if originalwidth < totalSectionsWidth then
+    begin
+      for i := 0 to hdrOrders.Sections.Count - 1 do
+        hdrOrders.Sections[i].Width := origWidths[i];
+      lstOrders.Invalidate;
+    end;
+  end;
+  //end CQ6170
+end;
+
+procedure TfrmOrders.hdrOrdersMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  setSectionWidths; //CQ6170
+end;
+
+{function TfrmOrders.PatientStatusChanged: boolean;
+const
+
+  msgTxt1 = 'Patient status was changed from ';
+  msgTxt2 = 'CPRS needs to refresh patient information to display patient latest record.';
+   //GE CQ9537  - Change message text
+  msgTxt3 = 'Patient has been admitted. ';
+  msgTxt4 = CRLF + 'You will be prompted to sign your orders.  Any new orders subsequently' +
+            CRLF +'entered and signed will be directed to the inpatient staff.';
+var
+  PtSelect: TPtSelect;
+  IsInpatientNow: boolean;
+  ptSts: string;
+begin
+  result := False;
+  SelectPatient(Patient.DFN, PtSelect);
+  IsInpatientNow := Length(PtSelect.Location) > 0;
+  if Patient.Inpatient <> IsInpatientNow then
+  begin
+    if (not Patient.Inpatient) then   //GE CQ9537  - Change message text
+       MessageDlg(msgTxt3 + msgTxt4, mtWarning, [mbOK], 0)
+    else
+       begin
+          if Patient.Inpatient then ptSts := 'Inpatient to Outpatient.';
+          MessageDlg(msgTxt1 + ptSts + #13#10#13 + msgTxt2, mtWarning, [mbOK], 0);
+       end;
+    frmFrame.mnuFileRefreshClick(Application);
+    Result := True;
+  end;
+end;}
+
+function TfrmOrders.CheckOrderStatus: boolean;
+var
+i: integer;
+AnOrder: TOrder;
+OrderArray: TStringList;
+begin
+    Result := False;
+    OrderArray := TStringList.Create;
+    with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+    begin
+      AnOrder := TOrder(Items.Objects[i]);
+      OrderArray.Add(AnOrder.ID + U + InttoStr(AnOrder.Status));
+    end;
+    if (OrderArray <> nil) and (not DoesOrderStatusMatch(OrderArray)) then
+      begin
+        MessageDlg('The Order status has changed.' + #13#10#13 + 'CPRS needs to refresh patient information to display the correct order status', mtWarning, [mbOK], 0);
+        frmFrame.mnuFileRefreshClick(Application);
+        Result := True;
+      end;
+    ORderArray.Free;
+end;
+
+procedure TfrmOrders.ActivateDeactiveRenew;
+var
+  i: Integer;
+  AnOrder: TOrder;
+  tmpArr: TStringList;
+begin
+    tmpArr := TStringList.Create;
+    with lstOrders do for i := 0 to Items.Count - 1 do if Selected[i] then
+    begin
+      AnOrder := TOrder(Items.Objects[i]);
+      if AnOrder.Status = 5 then tmpArr.Add(AnOrder.ID);
+    end;
+    if tmpArr <> nil then frmActivateDeactive.fActivateDeactive(tmpArr);
+end;
+
+procedure TfrmOrders.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmOrders.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+procedure TfrmOrders.mnuOptimizeFieldsClick(Sender: TObject);
+var
+  totalSectionsWidth, unitvalue: integer;
+begin
+  totalSectionsWidth := pnlRight.Width - 3;
+  if totalSectionsWidth < 16 then exit;
+  unitvalue := round(totalSectionsWidth / 16);
+  with hdrOrders do
+  begin
+    Sections[1].Width := unitvalue;
+    Sections[2].Width := pnlRight.Width - (unitvalue * 10) - 5;
+    Sections[3].Width := unitvalue * 2;
+    Sections[4].Width := unitvalue * 2;
+    Sections[5].Width := unitvalue;
+    Sections[6].Width := unitvalue;
+    Sections[7].Width := unitvalue;
+    Sections[8].Width := unitvalue;
+    Sections[9].Width := unitvalue;
+  end;
+  hdrOrdersSectionResize(hdrOrders, hdrOrders.Sections[0]);
+  hdrOrders.Repaint;
+end;
+
+procedure TfrmOrders.hdrOrdersSectionClick(HeaderControl: THeaderControl;
+  Section: THeaderSection);
+begin
+  inherited;
+  //if Section = hdrOrders.Sections[1] then
+    mnuOptimizeFieldsClick(self);
+end;
+
+procedure TfrmOrders.sptHorzMoved(Sender: TObject);
+begin
+  inherited;
+  mnuOptimizeFieldsClick(self);
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmOrders);
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersAlert.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersAlert.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersAlert.dfm	(revision 1676)
@@ -0,0 +1,103 @@
+inherited frmAlertOrders: TfrmAlertOrders
+  Left = 374
+  Top = 193
+  Caption = 'Alert when Results Available'
+  ClientHeight = 251
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 278
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 297
+    Height = 13
+    Caption = 
+      'The following orders will send alerts when results are available' +
+      ' -'
+  end
+  object lblAlertRecipient: TLabel [1]
+    Left = 8
+    Top = 208
+    Width = 72
+    Height = 13
+    Caption = 'Alert Recipient:'
+  end
+  object lstOrders: TCaptionListBox [2]
+    Left = 8
+    Top = 22
+    Width = 411
+    Height = 176
+    ItemHeight = 13
+    TabOrder = 0
+    Caption = 
+      'The following orders will send alerts when results are available' +
+      ' -'
+  end
+  object cmdOK: TButton [3]
+    Left = 267
+    Top = 222
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 347
+    Top = 222
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  object cboAlertRecipient: TORComboBox [5]
+    Left = 7
+    Top = 226
+    Width = 226
+    Height = 21
+    HelpContext = 9102
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Alert Recipient'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    OnExit = cboOnExit
+    OnNeedData = cboAlertRecipientNeedData
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboAlertRecipient'
+        'Status = stsDefault')
+      (
+        'Component = frmAlertOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersAlert.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersAlert.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersAlert.pas	(revision 1676)
@@ -0,0 +1,113 @@
+unit fOrdersAlert;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmAlertOrders = class(TfrmAutoSz)
+    Label1: TLabel;
+    lstOrders: TCaptionListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblAlertRecipient: TLabel;
+    cboAlertRecipient: TORComboBox;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboAlertRecipientNeedData(Sender: TObject; const StartFrom: String; Direction, InsertAt: Integer);
+    procedure cboOnExit(Sender: TObject);
+
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteAlertOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, uCore, rCore;
+
+var
+    AlertRecip: Int64;
+    Provider: String;
+
+
+function ExecuteAlertOrders(SelectedList: TList): Boolean;
+var
+  frmAlertOrders: TfrmAlertOrders;
+  i: Integer;
+  AnOrder: TOrder;
+begin
+  Result := False;
+  if SelectedList.Count = 0 then Exit;
+  with SelectedList do
+     AnOrder := TOrder(Items[0]);    //use first order's provider
+     Provider := AnOrder.ProviderName;
+     AlertRecip := AnOrder.Provider;
+  frmAlertOrders := TfrmAlertOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmAlertOrders));
+    //AlertRecip := User.DUZ;
+    with SelectedList do for i := 0 to Count - 1 do
+       frmAlertOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmAlertOrders.ShowModal;
+    if frmAlertOrders.OKPressed then
+    begin
+      with SelectedList do for i := 0 to Count - 1 do AlertOrder(TOrder(Items[i]),AlertRecip);
+      Result := True;
+    end;
+  finally
+    frmAlertOrders.Release;
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  end;
+end;
+
+procedure TfrmAlertOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  cboAlertRecipient.InitLongList(Provider);
+  cboAlertRecipient.SelectByIEN(AlertRecip);
+end;
+
+procedure TfrmAlertOrders.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  cmdOK.SetFocus;     //make sure cbo exit events fire
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmAlertOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmAlertOrders.cboAlertRecipientNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboAlertRecipient.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmAlertOrders.cboOnExit(Sender: TObject);
+begin
+  with cboAlertRecipient do
+    if (ItemIndex = -1) or (Text = '') then
+    begin
+      AlertRecip := -1;
+      ItemIndex := -1;
+      Text := '';
+    end
+    else
+    begin
+      AlertRecip := ItemIEN;
+    end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCV.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCV.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCV.dfm	(revision 1676)
@@ -0,0 +1,113 @@
+inherited frmChgEvent: TfrmChgEvent
+  Left = 256
+  Top = 148
+  Caption = 'Change Release Event'
+  ClientHeight = 401
+  ClientWidth = 554
+  OldCreateOrder = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 562
+  ExplicitHeight = 428
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 554
+    Height = 38
+    Align = alTop
+    AutoSize = True
+    TabOrder = 0
+    object lblPtInfo: TLabel
+      Left = 1
+      Top = 1
+      Width = 3
+      Height = 36
+      Align = alTop
+      Color = clBtnFace
+      Constraints.MinHeight = 36
+      ParentColor = False
+      Layout = tlCenter
+    end
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 38
+    Width = 554
+    Height = 363
+    Align = alClient
+    TabOrder = 1
+    ExplicitHeight = 362
+    DesignSize = (
+      554
+      363)
+    object cboSpecialty: TORComboBox
+      Left = 12
+      Top = 8
+      Width = 443
+      Height = 344
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      Style = orcsSimple
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '9'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnChange = cboSpecialtyChange
+      OnDblClick = cboSpecialtyDblClick
+      CharsNeedMatch = 1
+    end
+    object btnCancel: TButton
+      Left = 466
+      Top = 331
+      Width = 75
+      Height = 20
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+    object btnAction: TButton
+      Left = 466
+      Top = 303
+      Width = 75
+      Height = 20
+      Anchors = [akRight, akBottom]
+      TabOrder = 2
+      Visible = False
+      OnClick = btnActionClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cboSpecialty'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnAction'
+        'Status = stsDefault')
+      (
+        'Component = frmChgEvent'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCV.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCV.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCV.pas	(revision 1676)
@@ -0,0 +1,444 @@
+unit fOrdersCV;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, ORFn, fAutoSZ, uOrders, rOrders,
+  VA508AccessibilityManager;
+
+type
+  TfrmChgEvent = class(TfrmAutoSz)
+    pnlTop: TPanel;
+    lblPtInfo: TLabel;
+    pnlBottom: TPanel;
+    cboSpecialty: TORComboBox;
+    btnCancel: TButton;
+    btnAction: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cboSpecialtyChange(Sender: TObject);
+    procedure btnActionClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure cboSpecialtyDblClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    { Private declarations }
+    FDefaultEvntIFN:   Integer;
+    FDefaultPtEvntIFN: Integer;
+    FCurrSpecialty    : string;
+    FDefaultIndex: String;
+    FOKPress: boolean;
+    FLastIndex: Integer;
+
+    procedure updateChanges(Const AnOrderIDList: TStringList; Const AnEventName: String);
+
+  public
+    { Public declarations }
+    procedure LoadSpecialtyList;
+    procedure Highlight(APtEvtID: string);
+    procedure FilterOutEmptyPtEvt;
+    property CurrSpecialty: string      read FCurrSpecialty     write FCurrSpecialty;
+    property DefaultIndex:   string    read FDefaultIndex      write FDefaultIndex;
+    property OKPress:        boolean    read FOKPress           write FOKPress;
+
+  end;
+
+function ExecuteChangeEvt(SelectedList: TList; var DoesDestEvtOccur: boolean;
+  var DestPtEvtID: integer; var DestPtEvtName: string): boolean;
+
+
+implementation
+
+{$R *.DFM}
+
+uses uCore, uConst, forders, fODChangeEvtDisp, rMisc;
+
+function ExecuteChangeEvt(SelectedList: TList; var DoesDestEvtOccur: boolean;
+  var DestPtEvtID: integer; var DestPtEvtName: string): boolean;
+const
+  CHANGE_CAP = 'The release event for the following orders will be changed to: ';
+  REMOVE_CAP = 'The release event will be deleted for the following orders: ';
+var
+  i: integer;
+  frmChgEvent : TfrmChgEvent;
+  AnOrder: TOrder;
+  AnOrderIDList: TStringList;
+  EvtInfo,AnEvtDlg: string;
+  AnEvent: TOrderDelayEvent;
+  ThePtEvtID, TheDefaultPtEvtID, TheDefaultEvtInfo, SpeCap: string;
+  IsNewEvent: boolean;
+  ExistedPtEvtId: integer;
+
+  function DisplayEvntDialog(AEvtDlg: String; AnEvent: TOrderDelayEvent): boolean;
+  var
+    DlgData: string;
+  begin
+    DlgData := GetDlgData(AEvtDlg);
+    frmOrders.NeedShowModal := True;
+    frmOrders.IsDefaultDlg := True;
+    Result := frmOrders.PlaceOrderForDefaultDialog(DlgData, True, AnEvent);
+    frmOrders.IsDefaultDlg := False;
+    frmOrders.NeedShowModal := False;
+  end;
+
+  function FindMatchedPtEvtID(EventName: string): integer;
+  var
+    cnt: integer;
+    viewName: string;
+  begin
+    Result := 0;
+    for cnt := 0 to frmOrders.lstSheets.Items.Count - 1 do
+    begin
+      viewName := Piece(frmOrders.lstSheets.Items[cnt],'^',2);
+      if AnsiCompareText(EventName,viewName)=0 then
+      begin
+        Result := StrToIntDef(Piece(frmOrders.lstSheets.Items[cnt],'^',1),0);
+        break;
+      end;
+    end;
+
+  end;
+begin
+  Result := False;
+  IsNewEvent := False;
+  AnEvent.EventType := #0;
+  AnEvent.EventIFN  := 0;
+  AnEvent.EventName := '';
+  AnEvent.Specialty := 0;
+  AnEvent.Effective := 0;
+  AnEvent.PtEventIFN := 0;
+  AnEvent.TheParent := TParentEvent.Create;
+  AnEvent.IsNewEvent := False;
+
+  if SelectedList.Count = 0 then Exit;
+  frmChgEvent := TfrmChgEvent.Create(Application);
+  SetFormPosition(frmChgEvent);
+  frmChgEvent.CurrSpecialty := Piece(GetCurrentSpec(Patient.DFN),'^',1);
+  if Length(frmChgEvent.CurrSpecialty)>0 then
+    SpeCap := #13 + '  The current treating specialty is ' + frmChgEvent.CurrSpecialty
+  else
+    SpeCap := #13 + '  No treating specialty is available.';
+  ResizeFormToFont(TForm(frmChgEvent));
+  SetFormPosition(frmChgEvent);
+  if Patient.Inpatient then
+    frmChgEvent.lblPtInfo.Caption := '   ' + Patient.Name + ' is currently admitted to ' + Encounter.LocationName + SpeCap
+  else
+    frmChgEvent.lblPtInfo.Caption := '   ' + Patient.Name + ' is currently at ' + Encounter.LocationName + SpeCap;
+  frmChgEvent.cboSpecialty.Caption := frmChgEvent.lblPtInfo.Caption;
+  ThePtEvtID := '';
+  AnOrder := TOrder(selectedList[0]);
+  TheDefaultPtEvtID := GetOrderPtEvtID(AnOrder.ID);
+  if Length(TheDefaultPtEvtID)>0 then
+  begin
+    frmChgEvent.FDefaultPtEvntIFN := StrToIntDef(TheDefaultPtEvtId,0);
+    TheDefaultEvtInfo := EventInfo(TheDefaultPtEvtID);
+    frmChgEvent.FDefaultEvntIFN := StrToIntDef(Piece(TheDefaultEvtInfo,'^',2),0);
+  end;
+  frmChgEvent.LoadSpecialtyList;
+  frmChgEvent.ShowModal;
+  if frmChgEvent.OKPress then
+  begin
+    if frmChgEvent.btnAction.Caption = 'Change' then
+    begin
+      AnOrderIDList := TStringList.Create;
+      for i := 0 to selectedList.Count - 1 do
+      begin
+        AnOrder := TOrder(selectedList[i]);
+        AnOrderIDList.Add(AnOrder.ID);
+      end;
+      EvtInfo := frmChgEvent.cboSpecialty.Items[frmChgEvent.cboSpecialty.ItemIndex];
+      AnEvent.EventType := CharAt(Piece(EvtInfo,'^',3),1);
+      AnEvent.EventIFN  := StrToInt64Def(Piece(EvtInfo,'^',1),0);
+      if StrToInt64Def(Piece(EvtInfo,'^',13),0) > 0 then
+      begin
+        AnEvent.TheParent.Assign(Piece(EvtInfo,'^',13));
+        AnEvent.EventType := AnEvent.TheParent.ParentType;
+      end;
+      AnEvent.EventName := Piece(EvtInfo,'^',9);
+      ExistedPtEvtId := FindMatchedPtEvtID('Delayed ' + AnEvent.EventName + ' Orders');
+      if (ExistedPtEvtId>0) and IsCompletedPtEvt(ExistedPtEvtId) then
+      begin
+        DoesDestEvtOccur := True;
+        DestPtEvtId := ExistedPtEvtId;
+        DestPtEvtName := AnEvent.EventName;
+        ChangeEvent(AnOrderIDList, '');
+        Result := True;
+        Exit;
+      end;
+
+      if Length(AnEvent.EventName) < 1 then
+        AnEvent.EventName := Piece(EvtInfo,'^',2);
+      AnEvent.Specialty := 0;
+      if TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 0 then
+      begin
+         IsNewEvent := True;
+         if AnEvent.TheParent.ParentIFN > 0 then
+         begin
+           if StrToIntDef(AnEvent.TheParent.ParentDlg,0)>0 then
+             AnEvtDlg := AnEvent.TheParent.ParentDlg;
+         end
+         else
+           AnEvtDlg := Piece(EvtInfo,'^',5);
+      end;
+      if (StrToIntDef(AnEvtDlg,0)>0) and (IsNewEvent) then
+         if not DisplayEvntDialog(AnEvtDlg, AnEvent) then
+         begin
+           frmOrders.lstSheets.ItemIndex := 0;
+           frmOrders.lstSheetsClick(nil);
+           Result := False;
+           Exit;
+         end;
+      if not isExistedEvent(Patient.DFN, IntToStr(AnEvent.EventIFN), ThePtEvtID) then
+      begin
+        if (AnEvent.TheParent.ParentIFN > 0) and (TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 0 )then
+          SaveEvtForOrder(Patient.DFN, AnEvent.TheParent.ParentIFN, '');
+        SaveEvtForOrder(Patient.DFN,AnEvent.EventIFN,'');
+        if isExistedEvent(Patient.DFN, IntToStr(AnEvent.EventIFN),ThePtEvtID) then
+        begin
+          AnEvent.IsNewEvent := False;
+          AnEvent.PtEventIFN := StrToIntDef(ThePtEvtID,0);
+        end;
+      end;
+      ChangeEvent(AnOrderIDList, ThePtEvtID);
+      frmChgEvent.updateChanges(AnOrderIDList,'Delayed ' + AnEvent.EventName);
+      frmChgEvent.Highlight(ThePtEvtID);
+      if frmOrders.lstSheets.ItemIndex >= 0 then
+        frmOrders.lstSheetsClick(Nil);
+    end else
+    begin
+      if not DispOrdersForEventChange(SelectedList, REMOVE_CAP) then exit;
+      AnOrderIDList := TStringList.Create;
+      for i := 0 to selectedList.Count - 1 do
+      begin
+        AnOrder := TOrder(selectedList[i]);
+        AnOrderIDList.Add(AnOrder.ID);
+      end;
+      ChangeEvent(AnOrderIDList,'');
+      frmChgEvent.updateChanges(AnOrderIDList,'');
+      frmChgEvent.FilterOutEmptyPtEvt;
+      frmOrders.InitOrderSheetsForEvtDelay;
+      frmOrders.lstSheets.ItemIndex := 0;
+      frmOrders.lstSheetsClick(Nil);
+    end;
+    Result := True;
+  end else
+    Result := False;
+end;
+
+{ TfrmChgEvent }
+
+procedure TfrmChgEvent.LoadSpecialtyList;
+var
+  i: integer;
+  tempStr: string;
+begin
+  inherited;
+  cboSpecialty.Items.Clear;
+  if Patient.Inpatient then
+  begin
+    ListSpecialtiesED(#0,cboSpecialty.Items);
+  end
+  else  ListSpecialtiesED('A',cboSpecialty.Items);
+  if FDefaultEvntIFN > 0 then
+  begin
+    for i := 0 to cboSpecialty.Items.Count - 1 do
+    begin
+      if Piece(cboSpecialty.Items[i],'^',1)=IntToStr(FDefaultEvntIFN) then
+      begin
+        tempStr := cboSpecialty.Items[i];
+        cboSpecialty.Items.Insert(0,tempStr);
+        cboSpecialty.Items.Insert(1,'^^^^^^^^__________________________________________________________________________________');
+        cboSpecialty.ItemIndex := 0;
+        FDefaultIndex := Piece(tempStr,'^',1);
+        btnAction.Visible := True;
+        btnAction.Caption := 'Remove';
+        break;
+      end;
+    end;
+    if cboSpecialty.ItemIndex < 0 then
+      btnAction.Visible := False;
+  end;
+end;
+
+procedure TfrmChgEvent.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FDefaultEvntIFN   := 0;
+  FDefaultPtEvntIFN := 0;
+  FCurrSpecialty    := '';
+  FDefaultIndex     := '';
+  FOKPress          := False;
+  FLastIndex        := 0;
+
+end;
+
+procedure TfrmChgEvent.cboSpecialtyChange(Sender: TObject);
+const
+  TX_MCHEVT1  = ' is already assigned to ';
+  TX_MCHEVT2  = #13 + 'Do you still want to write delayed orders?';
+var
+  AnEvtID, AnEvtType: string;
+  AnEvtName,ATsName: string;
+  i: integer;
+  NMRec : TNextMoveRec;
+ begin
+  inherited;
+   NextMove(NMRec, FLastIndex, cboSpecialty.ItemIndex); //Logic added for 508 1/31/03
+   FLastIndex := NMRec.LastIndex ;
+  if (cboSpecialty.text = '') or (cboSpecialty.ItemIndex = -1) then
+  begin
+    btnAction.visible := False;
+    btnAction.Caption := '';
+  end
+  else if (Piece(cboSpecialty.Items[cboSpecialty.ItemIndex],'^',1) <> FDefaultIndex) then
+  begin
+    btnAction.Visible := True;
+    btnAction.Caption := 'Change';
+  end
+  else
+  begin
+    btnAction.Visible := True;
+    btnAction.Caption := 'Remove';
+  end;
+  if cboSpecialty.ItemIndex >= 0 then
+  begin
+    AnEvtID   := Piece(cboSpecialty.Items[cboSpecialty.ItemIndex],'^',1);
+    AnEvtType := Piece(cboSpecialty.Items[cboSpecialty.ItemIndex],'^',3);
+    AnEvtName := Piece(cboSpecialty.Items[cboSpecialty.ItemIndex],'^',9)
+  end else
+  begin
+    AnEvtID   := '';
+    AnEvtType := '';
+    AnEvtName := '';
+  end;
+  ATsName := CurrSpecialty;
+  if (StrToIntDef(AnEvtID,0)>0) and (isMatchedEvent(Patient.DFN,AnEvtID,ATsName)) then
+  begin
+    if InfoBox(Patient.Name + TX_MCHEVT1 + CurrSpecialty + ' on ' + Encounter.LocationName + TX_MCHEVT2,
+        'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDOK then
+      btnActionClick(Self)
+   else
+   begin
+     if Length(FDefaultIndex) > 0 then
+     begin
+       for i := 0 to cboSpecialty.Items.Count - 1 do
+       begin
+         if Piece(cboSpecialty.items[i],'^',1)=FDefaultIndex then
+         begin
+           cboSpecialty.ItemIndex := cboSpecialty.ItemIndex + NMRec.NextStep; //Added this code for 508 compliance GRE 01/30/03
+           break;
+         end;
+       end;
+       btnAction.Caption := 'Remove';
+     end else
+     begin
+       cboSpecialty.ItemIndex := 0;
+       btnAction.Caption := 'Change';
+     end;
+   end;
+  end;
+end;
+
+procedure TfrmChgEvent.btnActionClick(Sender: TObject);
+const
+TX_REASON_REQ = 'A Delayed Event must be selected.';
+TX_REMOVE     = 'Are you sure you want to remove the release event from these orders?';
+TX_CHANGE     = 'Are you sure you want to change the release event for these orders?';
+
+begin
+  inherited;
+  if cboSpecialty.ItemIndex < 0 then
+  begin
+    InfoBox(TX_REASON_REQ, 'No Selection made', MB_OK);
+    Exit;
+  end;
+  OKPress := True;
+  Close;
+end;
+
+procedure TfrmChgEvent.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+procedure TfrmChgEvent.cboSpecialtyDblClick(Sender: TObject);
+begin
+  inherited;
+  if cboSpecialty.ItemIndex > -1 then
+    btnActionClick(Self);
+end;
+
+procedure TfrmChgEvent.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+  Action := caFree;
+end;
+
+procedure TfrmChgEvent.updateChanges(const AnOrderIDList: TStringList; const AnEventName: String);
+var
+  jx,TempSigSts: integer;
+  theChangeItem: TChangeItem;
+  TempText: string;
+begin
+  for jx := 0 to AnOrderIDList.Count - 1 do
+  begin
+    theChangeItem := Changes.Locate(CH_ORD,AnOrderIDList[jx]);
+    if theChangeItem = nil then
+    begin
+      TempText := RetrieveOrderText(AnOrderIDList[jx]);
+      Changes.Add(CH_ORD,AnOrderIDList[jx],TempText,AnEventName,1);
+    end
+    else
+    begin
+      TempText := theChangeItem.Text;
+      TempSigSts := theChangeItem.SignState;
+      Changes.Remove(CH_ORD,AnOrderIDList[jx]);
+      Changes.Add(CH_ORD,AnOrderIDList[jx],TempText, AnEventName, TempSigSts);
+    end;
+  end;
+  if FDefaultPtEvntIFN>0 then
+  begin
+    if PtEvtEmpty(IntToStr(FDefaultPtEvntIFN)) then
+    begin
+      DeletePtEvent(IntToStr(FDefaultPtEvntIFN));
+      frmOrders.ChangesUpdate(IntToStr(FDefaultPtEvntIFN));
+    end;
+  end;
+end;
+
+procedure TfrmChgEvent.Highlight(APtEvtID: string);
+var
+  jjj: integer;
+begin
+  FilterOutEmptyPtEvt;
+  frmOrders.InitOrderSheetsForEvtDelay;
+  for jjj := 0 to frmOrders.lstSheets.Items.Count - 1 do
+  begin
+    if Piece(frmOrders.lstSheets.Items[jjj],'^',1)=APtEvtID then
+    begin
+      frmOrders.lstSheets.ItemIndex := jjj;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmChgEvent.FilterOutEmptyPtEvt;
+var
+  TmpStr: string;
+  hhh: integer;
+  AaPtEvtList: TStringList;
+begin
+  AaPtEvtList := TStringList.Create;
+  LoadOrderSheetsED(AaPtEvtList);
+  for hhh := 0 to AaPtEvtList.Count - 1 do
+  begin
+    if StrToIntDef(Piece(AaPtEvtList[hhh],'^',1),0)>0 then
+    begin
+      if DeleteEmptyEvt(Piece(AaPtEvtList[hhh],'^',1),TmpStr, False) then
+        frmOrders.ChangesUpdate(Piece(AaPtEvtList[hhh],'^',1));
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersComplete.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersComplete.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersComplete.dfm	(revision 1676)
@@ -0,0 +1,82 @@
+inherited frmCompleteOrders: TfrmCompleteOrders
+  Left = 327
+  Top = 169
+  Caption = 'Complete Orders'
+  ClientHeight = 257
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 284
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 231
+    Height = 13
+    Caption = 'The following orders will be marked as complete -'
+  end
+  object lblESCode: TLabel [1]
+    Left = 8
+    Top = 214
+    Width = 123
+    Height = 13
+    Caption = 'Electronic Signature Code'
+  end
+  object lstOrders: TCaptionListBox [2]
+    Left = 8
+    Top = 22
+    Width = 411
+    Height = 176
+    ItemHeight = 13
+    TabOrder = 3
+    Caption = 'The following orders will be marked as complete -'
+  end
+  object cmdOK: TButton [3]
+    Left = 267
+    Top = 228
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 347
+    Top = 228
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object txtESCode: TCaptionEdit [5]
+    Left = 8
+    Top = 228
+    Width = 137
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 0
+    Caption = 'Electronic Signature Code'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = txtESCode'
+        'Status = stsDefault')
+      (
+        'Component = frmCompleteOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersComplete.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersComplete.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersComplete.pas	(revision 1676)
@@ -0,0 +1,95 @@
+unit fOrdersComplete;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmCompleteOrders = class(TfrmAutoSz)
+    Label1: TLabel;
+    lstOrders: TCaptionListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblESCode: TLabel;
+    txtESCode: TCaptionEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+    ESCode: string;
+  end;
+
+function ExecuteCompleteOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses Hash, rCore, rOrders;
+
+function ExecuteCompleteOrders(SelectedList: TList): Boolean;
+var
+  frmCompleteOrders: TfrmCompleteOrders;
+  i: Integer;
+begin
+  Result := False;
+  if SelectedList.Count = 0 then Exit;
+  frmCompleteOrders := TfrmCompleteOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmCompleteOrders));
+    with SelectedList do for i := 0 to Count - 1 do
+      frmCompleteOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmCompleteOrders.ShowModal;
+    if frmCompleteOrders.OKPressed then
+    begin
+      with SelectedList do
+        for i := 0 to Count - 1 do CompleteOrder(TOrder(Items[i]), frmCompleteOrders.ESCode);
+      Result := True;
+    end;
+  finally
+    frmCompleteOrders.Release;
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  end;
+end;
+
+procedure TfrmCompleteOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmCompleteOrders.cmdOKClick(Sender: TObject);
+const
+  TX_NO_CODE  = 'An electronic signature code must be entered to complete orders.';
+  TC_NO_CODE  = 'Electronic Signature Code Required';
+  TX_BAD_CODE = 'The electronic signature code entered is not valid.';
+  TC_BAD_CODE = 'Invalid Electronic Signature Code';
+begin
+  inherited;
+  if Length(txtESCode.Text) = 0 then
+  begin
+    InfoBox(TX_NO_CODE, TC_NO_CODE, MB_OK);
+    Exit;
+  end;
+  if not ValidESCode(txtESCode.Text) then
+  begin
+    InfoBox(TX_BAD_CODE, TC_BAD_CODE, MB_OK);
+    txtESCode.SetFocus;
+    txtESCode.SelectAll;
+    Exit;
+  end;
+  ESCode := Encrypt(txtESCode.Text);
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmCompleteOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCopy.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCopy.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCopy.dfm	(revision 1676)
@@ -0,0 +1,278 @@
+inherited frmCopyOrders: TfrmCopyOrders
+  Left = 319
+  Top = 139
+  Caption = 'Copy Orders'
+  ClientHeight = 419
+  ClientWidth = 441
+  Constraints.MinHeight = 100
+  Constraints.MinWidth = 330
+  OldCreateOrder = True
+  OnCreate = FormCreate
+  ExplicitWidth = 449
+  ExplicitHeight = 446
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlRadio: TPanel [0]
+    Left = 0
+    Top = 80
+    Width = 441
+    Height = 65
+    Align = alTop
+    TabOrder = 1
+    object GroupBox1: TGroupBox
+      Left = 1
+      Top = 1
+      Width = 439
+      Height = 63
+      Align = alClient
+      Constraints.MinHeight = 50
+      DragMode = dmAutomatic
+      TabOrder = 0
+      object radRelease: TRadioButton
+        Left = 12
+        Top = 15
+        Width = 318
+        Height = 20
+        Caption = '&Release copied orders immediately'
+        Checked = True
+        TabOrder = 0
+        TabStop = True
+        OnClick = radReleaseClick
+      end
+      object radEvtDelay: TRadioButton
+        Left = 12
+        Top = 37
+        Width = 320
+        Height = 20
+        Caption = '&Delay release of copied orders'
+        TabOrder = 1
+        OnClick = radEvtDelayClick
+      end
+      object cmdOK: TButton
+        Left = 345
+        Top = 14
+        Width = 72
+        Height = 19
+        Caption = 'OK'
+        Constraints.MaxWidth = 73
+        Default = True
+        TabOrder = 2
+        OnClick = cmdOKClick
+      end
+      object cmdCancel: TButton
+        Left = 345
+        Top = 38
+        Width = 72
+        Height = 18
+        Cancel = True
+        Caption = 'Cancel'
+        Constraints.MaxWidth = 73
+        TabOrder = 3
+        OnClick = cmdCancelClick
+      end
+    end
+  end
+  object pnlTop: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 441
+    Height = 80
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblPtInfo: TVA508StaticText
+      Name = 'lblPtInfo'
+      Left = 0
+      Top = 5
+      Width = 400
+      Height = 35
+      Alignment = taLeftJustify
+      AutoSize = True
+      Caption = ' '
+      Constraints.MinHeight = 15
+      TabOrder = 0
+      ShowAccelChar = True
+    end
+    object pnlInfo: TPanel
+      Left = 0
+      Top = 46
+      Width = 441
+      Height = 34
+      Align = alBottom
+      TabOrder = 1
+      object Image1: TImage
+        Left = 1
+        Top = 1
+        Width = 24
+        Height = 22
+        AutoSize = True
+        Enabled = False
+        Picture.Data = {
+          07544269746D61707E010000424D7E0100000000000076000000280000001800
+          000016000000010004000000000008010000C40E0000C40E0000100000000000
+          0000000000000000800000800000008080008000000080008000808000008080
+          8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+          FF008000000000000000000000080777777777777777777777700F7777777777
+          7777777777700F88888888888888888887700F88888888888888888887700F88
+          888808888888888887700F88888800888888888887700F8888880B0888888888
+          87700F8888880BB00008888887700F888800BBCCBBB0088887700F8880BBBCCC
+          CBBBB08887700F880BBBBBBBBBBBBB0887700F880BBBBBCCBBBBBB0887700F88
+          0BBBBBCCBBBBBB0887700F880BBBBBCCBBBBBB0887700F8880BBBBCCBBBBB088
+          87700F888800BBBBBBB0088887700F88888800000008888887700F8888888888
+          8888888887700F88888888888888888887700FFFFFFFFFFFFFFFFFFFFF708000
+          00000000000000000008}
+        Transparent = True
+      end
+      object lblInstruction2: TVA508StaticText
+        Name = 'lblInstruction2'
+        Left = 31
+        Top = 17
+        Width = 363
+        Height = 15
+        Alignment = taLeftJustify
+        Caption = 
+          'Use Transfer: if inpatient will move from one ward or treating t' +
+          'eam to another.'
+        TabOrder = 1
+        ShowAccelChar = True
+      end
+      object lblInstruction: TVA508StaticText
+        Name = 'lblInstruction'
+        Left = 31
+        Top = 1
+        Width = 329
+        Height = 15
+        Alignment = taLeftJustify
+        Caption = 
+          'Use Admit: if patient is newly admitted to the hospital or nursi' +
+          'ng home.'
+        TabOrder = 0
+        ShowAccelChar = True
+      end
+    end
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 145
+    Width = 441
+    Height = 274
+    Align = alClient
+    TabOrder = 2
+    ExplicitLeft = 8
+    ExplicitTop = 165
+    ExplicitWidth = 425
+    ExplicitHeight = 236
+    inline fraEvntDelayList: TfraEvntDelayList
+      Left = 1
+      Top = 1
+      Width = 439
+      Height = 272
+      Align = alBottom
+      AutoScroll = True
+      TabOrder = 0
+      TabStop = True
+      Visible = False
+      ExplicitTop = 145
+      ExplicitWidth = 441
+      ExplicitHeight = 274
+      inherited pnlDate: TPanel
+        Left = 334
+        Height = 272
+        ExplicitLeft = 336
+        ExplicitHeight = 274
+        inherited lblEffective: TLabel
+          Left = 451
+          Width = 71
+          ExplicitLeft = 451
+          ExplicitWidth = 71
+        end
+        inherited orDateBox: TORDateBox
+          Left = 451
+          ExplicitLeft = 451
+        end
+      end
+      inherited pnlList: TPanel
+        Width = 334
+        Height = 272
+        ExplicitWidth = 336
+        ExplicitHeight = 274
+        inherited lblEvntDelayList: TLabel
+          Width = 332
+          ExplicitWidth = 80
+        end
+        inherited mlstEvents: TORListBox
+          Width = 332
+          Height = 236
+          OnDblClick = cmdOKClick
+          OnChange = fraEvntDelayListmlstEventsChange
+          ExplicitWidth = 334
+          ExplicitHeight = 238
+        end
+        inherited edtSearch: TCaptionEdit
+          Width = 332
+          ExplicitWidth = 334
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlInfo'
+        'Status = stsDefault')
+      (
+        'Component = lblInstruction2'
+        'Status = stsDefault')
+      (
+        'Component = lblInstruction'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.pnlDate'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.orDateBox'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.pnlList'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.mlstEvents'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.edtSearch'
+        'Status = stsDefault')
+      (
+        'Component = pnlRadio'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = radRelease'
+        'Status = stsDefault')
+      (
+        'Component = radEvtDelay'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lblPtInfo'
+        'Status = stsDefault')
+      (
+        'Component = frmCopyOrders'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCopy.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCopy.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersCopy.pas	(revision 1676)
@@ -0,0 +1,351 @@
+unit fOrdersCopy;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, mEvntDelay, uCore, fODBase, UConst, fAutoSz, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmCopyOrders = class(TfrmBase508Form)
+    pnlInfo: TPanel;
+    fraEvntDelayList: TfraEvntDelayList;
+    pnlRadio: TPanel;
+    GroupBox1: TGroupBox;
+    radRelease: TRadioButton;
+    radEvtDelay: TRadioButton;
+    Image1: TImage;
+    lblInstruction2: TVA508StaticText;
+    lblInstruction: TVA508StaticText;
+    pnlTop: TPanel;
+    lblPtInfo: TVA508StaticText;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pnlBottom: TPanel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure radEvtDelayClick(Sender: TObject);
+    procedure radReleaseClick(Sender: TObject);
+    procedure fraEvntDelayListcboEvntListChange(Sender: TObject);
+    procedure UMStillDelay(var message: TMessage); message UM_STILLDELAY;
+    procedure fraEvntDelayListmlstEventsDblClick(Sender: TObject);
+    procedure fraEvntDelayListmlstEventsChange(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    OKPressed: Boolean;
+    procedure AdjustFormSize;
+  public
+  end;
+  
+function SetViewForCopy(var IsNewEvent: boolean; var DoesDestEvtOccur: boolean;
+  var DestPtEvtID: integer; var DestPtEvtName: string): Boolean;
+
+var
+  frmCopyOrders: TfrmCopyOrders;
+
+implementation
+{$R *.DFM}
+
+uses fOrders, fOrdersTS, ORFn, rOrders;
+
+function SetViewForCopy(var IsNewEvent: boolean; var DoesDestEvtOccur: boolean;
+  var DestPtEvtID: integer; var DestPtEvtName: string): Boolean;
+var
+  EvtInfo,APtEvtID, AnEvtDlg: string;
+  AnEvent: TOrderDelayEvent;
+  SpeCap, CurrTS: string;
+  ExistedPtEvtID: integer;
+
+  procedure Highlight(APtEvtID: string);
+  var
+    j: integer;
+  begin
+    frmOrders.InitOrderSheetsForEvtDelay;
+    for j := 0 to frmOrders.lstSheets.Items.Count - 1 do
+    begin
+      if Piece(frmOrders.lstSheets.Items[j],'^',1)=APtEvtID then
+      begin
+        frmOrders.lstSheets.ItemIndex := j;
+        break;
+      end;
+    end;
+  end;
+
+  function DisplayEvntDialog(AEvtDlg: String; AnEvent: TOrderDelayEvent): boolean;
+  var
+    DlgData: string;
+  begin
+    DlgData := GetDlgData(AEvtDlg);
+    frmOrders.NeedShowModal := True;
+    frmOrders.IsDefaultDlg := True;
+    Result := frmOrders.PlaceOrderForDefaultDialog(DlgData, True, AnEvent);
+    frmOrders.IsDefaultDlg := False;
+    frmOrders.NeedShowModal := False;
+  end;
+
+  function FindMatchedPtEvtID(EventName: string): integer;
+  var
+    cnt: integer;
+    viewName: string;
+  begin
+    Result := 0;
+    for cnt := 0 to frmOrders.lstSheets.Items.Count - 1 do
+    begin
+      viewName := Piece(frmOrders.lstSheets.Items[cnt],'^',2);
+      if AnsiCompareText(EventName,viewName)=0 then
+      begin
+        Result := StrToIntDef(Piece(frmOrders.lstSheets.Items[cnt],'^',1),0);
+        break;
+      end;
+    end;
+  end;
+
+begin
+  Result := False;
+  AnEvent.EventType := #0;
+  AnEvent.EventIFN  := 0;
+  AnEvent.EventName := '';
+  AnEvent.Specialty := 0;
+  AnEvent.Effective := 0;
+  AnEvent.PtEventIFN := 0;
+  AnEvent.TheParent := TParentEvent.Create;
+  AnEvent.IsNewEvent := False;
+
+  frmCopyOrders := TfrmCopyOrders.Create(Application);
+  try
+    ResizeAnchoredFormToFont(TForm(frmCopyOrders));
+    frmCopyOrders.AdjustFormSize;
+    CurrTS := Piece(GetCurrentSpec(Patient.DFN),'^',1);
+    if Length(CurrTS)>0 then
+      SpeCap := #13 + 'The current treating specialty is ' + CurrTS
+    else
+      SpeCap := #13 + 'No treating specialty is available.';
+    //ResizeFormToFont(TForm(frmCopyOrders));
+    if Patient.Inpatient then
+      frmCopyOrders.lblPtInfo.Caption := Patient.Name + ' is currently admitted to ' + Encounter.LocationName + SpeCap
+    else
+    begin
+      if (Encounter.Location > 0) then
+        frmCopyOrders.lblPtInfo.Caption := Patient.Name + ' is currently at ' + Encounter.LocationName + SpeCap
+      else
+        frmCopyOrders.lblPtInfo.Caption := Patient.Name + ' currently is an outpatient.'  + SpeCap;
+    end;
+    frmCopyOrders.AdjustFormSize;
+    frmCopyOrders.ShowModal;
+    if (frmCopyOrders.OKPressed) and (frmCopyOrders.radRelease.Checked) then
+    begin
+      frmOrders.lstSheets.ItemIndex := 0;
+      frmOrders.lstSheetsClick(Nil);
+      Result := True;
+    end;
+    if (frmCopyOrders.OKPressed) and (frmCopyOrders.radEvtDelay.Checked) then
+    begin
+      EvtInfo := frmCopyOrders.fraEvntDelayList.mlstEvents.Items[frmCopyOrders.fraEvntDelayList.mlstEvents.ItemIndex];
+      AnEvent.EventType := CharAt(Piece(EvtInfo,'^',3),1);
+      AnEvent.EventIFN  := StrToInt64Def(Piece(EvtInfo,'^',1),0);
+      if StrToInt64Def(Piece(EvtInfo,'^',13),0) > 0 then
+      begin
+        AnEvent.TheParent.Assign(Piece(EvtInfo,'^',13));
+        AnEvent.EventType := AnEvent.TheParent.ParentType;
+      end;
+      AnEvent.EventName := frmCopyOrders.fraEvntDelayList.mlstEvents.DisplayText[frmCopyOrders.fraEvntDelayList.mlstEvents.ItemIndex];
+      AnEvent.Specialty := 0;
+      if frmCopyOrders.fraEvntDelayList.orDateBox.Visible then
+        AnEvent.Effective := frmCopyOrders.fraEvntDelayList.orDateBox.FMDateTime
+      else
+        AnEvent.Effective := 0;
+      ExistedPtEvtID := FindMatchedPtEvtID('Delayed ' + AnEvent.EventName + ' Orders');
+      if (ExistedPtEvtId>0) and IsCompletedPtEvt(ExistedPtEvtId) then
+      begin
+        DoesDestEvtOccur := True;
+        DestPtEvtId := ExistedPtEvtId;
+        DestPtEvtName := AnEvent.EventName;
+        IsNewEvent := False;
+        Result := True;
+        Exit;
+      end;
+      IsNewEvent := False;
+      if TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 0 then
+      begin
+         IsNewEvent := True;
+         if AnEvent.TheParent.ParentIFN > 0 then
+         begin
+           if StrToIntDef(AnEvent.TheParent.ParentDlg,0)>0 then
+             AnEvtDlg := AnEvent.TheParent.ParentDlg;
+         end
+         else
+           AnEvtDlg := Piece(EvtInfo,'^',5);
+      end;
+      if (StrToIntDef(AnEvtDlg,0)>0) and (IsNewEvent) then
+         if not DisplayEvntDialog(AnEvtDlg, AnEvent) then
+         begin
+           frmOrders.lstSheets.ItemIndex := 0;
+           frmOrders.lstSheetsClick(nil);
+           Result := False;
+           Exit;
+         end;
+      if not isExistedEvent(Patient.DFN, IntToStr(AnEvent.EventIFN), APtEvtID) then
+      begin
+        IsNewEvent := True;
+        if (AnEvent.TheParent.ParentIFN > 0) and (TypeOfExistedEvent(Patient.DFN,AnEvent.EventIFN) = 0) then
+           SaveEvtForOrder(Patient.DFN,AnEvent.TheParent.ParentIFN,'');
+        SaveEvtForOrder(Patient.DFN,AnEvent.EventIFN,'');
+        if isExistedEvent(Patient.DFN, IntToStr(AnEvent.EventIFN),APtEvtID) then
+        begin
+          Highlight(APtEvtID);
+          AnEvent.IsNewEvent := False;
+          AnEvent.PtEventIFN := StrToIntDef(APtEvtID,0);
+        end;
+      end else
+      begin
+        Highlight(APtEvtID);
+        AnEvent.PtEventIFN := StrToIntDef(APtEvtID,0);
+        AnEvent.IsNewEvent := False;
+      end;
+      DestPtEvtId := AnEvent.PtEventIFN;
+      DestPtEvtName := AnEvent.EventName;
+      if (AnEvent.PtEventIFN >0) and IsCompletedPtEvt(AnEvent.PtEventIFN) then
+      begin
+        DoesDestEvtOccur := True;
+        IsNewEvent := False;
+        Result := True;
+        Exit;
+      end;
+      if frmOrders.lstSheets.ItemIndex > -1 then
+      begin
+        frmOrders.AskForCancel := False;
+        frmOrders.lstSheetsClick(nil);
+        frmOrders.AskForCancel := True;
+      end;
+      Result := True;
+    end;
+  finally
+    frmCopyOrders.fraEvntDelayList.ResetProperty;
+    frmCopyOrders.Release;
+  end;
+end;
+
+procedure TfrmCopyOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  radRelease.Checked := True;
+  OKPressed := False;
+  if not Patient.Inpatient then
+  begin
+    pnlInfo.Visible := False;
+  end;
+  AdjustFormSize;
+end;
+
+procedure TfrmCopyOrders.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  if (radEvtDelay.Checked) and (fraEvntDelayList.mlstEvents.ItemIndex < 0 ) then
+  begin
+    InfoBox('A release event must be selected.', 'No Selection Made', MB_OK);
+    Exit;
+  end;
+  if radRelease.Checked then
+  begin
+    ImmdCopyAct := True;
+    frmOrders.lstSheets.ItemIndex := 0;
+    frmOrders.lstSheetsClick(Self);
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmCopyOrders.AdjustFormSize;
+var
+  y: integer;
+begin
+  y := lblPtInfo.Height + 8; // allow for font changes
+  if pnlInfo.Visible then
+  begin
+    lblInstruction2.top := lblInstruction.Height; // allow for font change
+    pnlInfo.Height := lblInstruction2.top + lblInstruction2.Height;
+    inc(y,pnlInfo.Height);
+  end;
+  pnlTop.Height := y;
+  inc(y, pnlRadio.Height);
+  if fraEvntDelayList.Visible then
+  begin
+    inc(y, fraEvntDelayList.Height);
+  end;
+  VertScrollBar.Range := y;
+  ClientHeight := y;
+end;
+
+procedure TfrmCopyOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmCopyOrders.radEvtDelayClick(Sender: TObject);
+begin
+  inherited;
+  if radRelease.Checked then
+    radRelease.Checked  := False;
+  radEvtDelay.Checked := True;
+  fraEvntDelayList.Visible := True;
+  frmCopyOrders.fraEvntDelayList.UserDefaultEvent := StrToIntDef(GetDefaultEvt(IntToStr(User.DUZ)),0);
+  fraEvntDelayList.DisplayEvntDelayList;
+  AdjustFormSize;
+end;
+
+procedure TfrmCopyOrders.radReleaseClick(Sender: TObject);
+begin
+  inherited;
+  if radEvtDelay.Checked then
+    radEvtDelay.Checked := False;
+  radRelease.Checked  := True;
+  fraEvntDelayList.Visible := False;
+  AdjustFormSize;
+end;
+
+procedure TfrmCopyOrders.fraEvntDelayListcboEvntListChange(
+  Sender: TObject);
+begin
+  inherited;
+  fraEvntDelayList.IsForCpXfer := True;
+  fraEvntDelayList.mlstEventsChange(Sender);
+  if fraEvntDelayList.MatchedCancel then Close
+end;
+
+procedure TfrmCopyOrders.UMStillDelay(var message: TMessage);
+begin
+  CmdOKClick(Application);
+end;
+
+procedure TfrmCopyOrders.fraEvntDelayListmlstEventsDblClick(
+  Sender: TObject);
+begin
+  inherited;
+  if fraEvntDelayList.mlstEvents.ItemID > 0 then
+    cmdOKClick(Self);
+end;
+
+procedure TfrmCopyOrders.fraEvntDelayListmlstEventsChange(Sender: TObject);
+begin
+  fraEvntDelayList.mlstEventsChange(Sender);
+  if fraEvntDelayList.MatchedCancel then
+  begin
+    OKPressed := False;
+    Close;
+    Exit;
+  end;
+end;
+
+procedure TfrmCopyOrders.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then
+    cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersDC.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersDC.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersDC.dfm	(revision 1676)
@@ -0,0 +1,127 @@
+inherited frmDCOrders: TfrmDCOrders
+  Left = 316
+  Top = 226
+  Caption = 'Discontinue / Cancel Orders'
+  ClientHeight = 289
+  ClientWidth = 425
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 316
+  ExplicitTop = 226
+  ExplicitWidth = 433
+  ExplicitHeight = 323
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 425
+    Height = 13
+    Align = alTop
+    Caption = 'The following orders will be discontinued -'
+    WordWrap = True
+    ExplicitWidth = 196
+  end
+  object Panel1: TPanel [1]
+    Left = 0
+    Top = 13
+    Width = 425
+    Height = 188
+    Align = alClient
+    TabOrder = 0
+    object lstOrders: TCaptionListBox
+      Left = 1
+      Top = 1
+      Width = 423
+      Height = 186
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      ItemHeight = 13
+      TabOrder = 0
+      OnDrawItem = lstOrdersDrawItem
+      OnMeasureItem = lstOrdersMeasureItem
+      Caption = 'The following orders will be discontinued '
+    end
+  end
+  object Panel2: TPanel [2]
+    Left = 0
+    Top = 201
+    Width = 425
+    Height = 88
+    Align = alBottom
+    Constraints.MinHeight = 88
+    TabOrder = 1
+    DesignSize = (
+      425
+      88)
+    object lblReason: TLabel
+      Left = 1
+      Top = 1
+      Width = 423
+      Height = 13
+      Align = alTop
+      Caption = 'Reason for Discontinue (select one)'
+      ExplicitWidth = 169
+    end
+    object lstReason: TORListBox
+      Left = 3
+      Top = 19
+      Width = 218
+      Height = 60
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Reason for Discontinue (select one)'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object cmdOK: TButton
+      Left = 267
+      Top = 54
+      Width = 72
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      Default = True
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 347
+      Top = 54
+      Width = 72
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = lstReason'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmDCOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersDC.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersDC.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersDC.pas	(revision 1676)
@@ -0,0 +1,268 @@
+unit fOrdersDC;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, fBase508Form,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, ExtCtrls, ORNet, VA508AccessibilityManager;
+
+type
+  TfrmDCOrders = class(TfrmBase508Form)
+    Label1: TLabel;
+    Panel1: TPanel;
+    lstOrders: TCaptionListBox;
+    Panel2: TPanel;
+    lblReason: TLabel;
+    lstReason: TORListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure FormDestroy(Sender: TObject);
+    procedure unMarkedOrignalOrderDC(OrderArr: TStringList);
+  private
+    OKPressed: Boolean;
+    DCReason: Integer;
+    function MeasureColumnHeight(TheOrderText: string; Index: Integer):integer;
+  public
+    OrderIDArr: TStringList;
+  end;
+
+function ExecuteDCOrders(SelectedList: TList; var DelEvt: boolean): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, uCore, uConst, fOrders;
+
+function ExecuteDCOrders(SelectedList: TList; var DelEvt: boolean): Boolean;
+const
+  DCT_NEWORDER  = 1;
+  DCT_DELETION  = 2;
+  DCT_NEWSTATUS = 3;
+var
+  frmDCOrders: TfrmDCOrders;
+  AnOrder: TOrder;
+  i, j, CanSign, DCType: Integer;
+  NeedReason,NeedRefresh,OnCurrent, DCNewOrder: Boolean;
+  OriginalID,APtEvtID,APtEvtName,AnEvtInfo,tmpPtEvt:  string;
+  PtEvtList: TStringList;
+  DCChangeItem: TChangeItem;
+begin
+  Result := False;
+  DelEvt := False;
+  OnCurrent := False;
+  NeedRefresh := False;
+  DCNewOrder := false;
+  PtEvtList := TStringList.Create;
+  if SelectedList.Count = 0 then Exit;
+  frmDCOrders := TfrmDCOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmDCOrders));
+    NeedReason := False;
+    with SelectedList do for i := 0 to Count - 1 do
+    begin
+      AnOrder    := TOrder(Items[i]);
+      frmDCOrders.lstOrders.Items.Add(AnOrder.Text);
+      frmDCOrders.OrderIDArr.Add(AnOrder.ID);
+      if not ((AnOrder.Status = 11) and (AnOrder.Signature = 2)) then NeedReason := True;
+      if (NeedReason = True) and (AnOrder.Status = 10) and (AnOrder.Signature = 2) then  NeedReason := False;
+      
+    end;
+    if NeedReason then
+    begin
+      frmDCOrders.lblReason.Visible := True;
+      frmDCOrders.lstReason.Visible := True;
+    end else
+    begin
+      frmDCOrders.lblReason.Visible := False;
+      frmDCOrders.lstReason.Visible := False;
+    end;
+    frmDCOrders.ShowModal;
+    if frmDCOrders.OKPressed then
+    begin
+      if (Encounter.Provider = User.DUZ) and User.CanSignOrders
+        then CanSign := CH_SIGN_YES
+        else CanSign := CH_SIGN_NA;
+      with SelectedList do for i := 0 to Count - 1 do
+      begin
+        AnOrder := TOrder(Items[i]);
+        OriginalID := AnOrder.ID;
+        PtEvtList.Add(AnOrder.EventPtr + '^' + AnOrder.EventName);
+        if Changes.Orders.Count = 0 then DCNewOrder := false
+        else
+          begin
+            for j := 0 to Changes.Orders.Count - 1 do
+              begin
+                DCChangeItem := TChangeItem(Changes.Orders.Items[j]);
+                if DCChangeItem.ID = AnOrder.ID then
+                  begin
+                    if (Pos('DC', AnOrder.ActionOn) = 0) then
+                       DCNewOrder := True
+                    else DCNewOrder := False;
+                  end;
+              end;
+          end;
+        DCOrder(AnOrder, frmDCOrders.DCReason, DCNewOrder, DCType);
+        case DCType of
+        DCT_NEWORDER:  begin
+                         Changes.Add(CH_ORD, AnOrder.ID, AnOrder.Text, '', CanSign, AnOrder.ParentID, user.DUZ, AnOrder.DGroupName, True);
+                         AnOrder.ActionOn := OriginalID + '=DC';
+                       end;
+        DCT_DELETION:  begin
+                         Changes.Remove(CH_ORD, OriginalID);
+                         if (AnOrder.ID = '0') or (AnOrder.ID = '')
+                           then AnOrder.ActionOn := OriginalID + '=DL'    // delete order
+                           else AnOrder.ActionOn := OriginalID + '=CA';   // cancel action
+                          {else AnOrder.ActionOn := AnOrder.ID + '=CA';  - caused cancel from meds to not update orders}
+                         UnlockOrder(OriginalID);  // for deletion of unsigned DC
+                       end;
+        DCT_NEWSTATUS: begin
+                         AnOrder.ActionOn := OriginalID + '=DC';
+                         UnlockOrder(OriginalID);
+                       end;
+        else UnlockOrder(OriginalID);
+        end;
+        SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_ACT, Integer(AnOrder));
+      end;
+      if frmOrders.lstSheets.ItemIndex > -1 then
+        if CharAt(frmOrders.lstSheets.Items[frmOrders.lstSheets.ItemIndex],1)='C' then
+          OnCurrent := True;
+      if not OnCurrent then
+      begin
+        for i := 0 to PtEvtList.Count - 1 do
+        begin
+          if Length(PtEvtList[i])>1  then
+          begin
+            APtEvtID   := Piece(PtEvtList[i],'^',1);
+            APtEvtName := Piece(PtEvtList[i],'^',2);
+            AnEvtInfo := EventInfo(APtEvtID);
+            if isExistedEvent(Patient.DFN,Piece(AnEvtInfo,'^',2),tmpPtEvt) and (DeleteEmptyEvt(APtEvtID,APtEvtName,False)) then
+            begin
+              NeedRefresh := True;
+              frmOrders.ChangesUpdate(APtEvtID);
+            end;
+          end;
+        end;
+        if NeedRefresh then
+        begin
+          frmOrders.InitOrderSheetsForEvtDelay;
+          frmOrders.lstSheets.ItemIndex := 0;
+          frmOrders.lstSheetsClick(nil);
+          DelEvt := True;
+        end;
+      end;
+      Result := True;
+    end
+    else with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  finally
+    frmDCOrders.Release;
+  end;
+end;
+
+procedure TfrmDCOrders.FormCreate(Sender: TObject);
+var
+  DefaultIEN: Integer;
+begin
+  inherited;
+  OKPressed := False;
+  OrderIDArr := TStringList.Create;
+  ListDCReasons(lstReason.Items, DefaultIEN);
+  lstReason.SelectByIEN(DefaultIEN);
+  { the following commented out so that providers can enter DC reasons }
+//  if Encounter.Provider = User.DUZ then
+//  begin
+//    lblReason.Visible := False;
+//    lstReason.Visible := False;
+//  end;
+end;
+
+procedure TfrmDCOrders.cmdOKClick(Sender: TObject);
+const
+  TX_REASON_REQ = 'A reason for discontinue must be selected.';
+  TC_REASON_REQ = 'Missing Discontinue Reason';
+begin
+  inherited;
+  if (lstReason.Visible) and (not (lstReason.ItemIEN > 0)) then
+  begin
+    InfoBox(TX_REASON_REQ, TC_REASON_REQ, MB_OK);
+    Exit;
+  end;
+  OKPressed := True;
+  DCReason := lstReason.ItemIEN;
+  Close;
+end;
+
+procedure TfrmDCOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  unMarkedOrignalOrderDC(Self.OrderIDArr);
+  Close;
+end;
+
+procedure TfrmDCOrders.lstOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+begin
+  inherited;
+  x := '';
+  ARect := Rect;
+  with lstOrders do
+  begin
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(0, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := Items[Index];
+      DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+    end;
+  end;
+end;
+
+procedure TfrmDCOrders.lstOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  x:string;
+begin
+  inherited;
+  with lstOrders do if Index < Items.Count then
+  begin
+    x := Items[index];
+    AHeight := MeasureColumnHeight(x, Index);
+  end;
+end;
+
+function TfrmDCOrders.MeasureColumnHeight(TheOrderText: string;
+  Index: Integer): integer;
+var
+  ARect: TRect;
+begin
+  ARect.Left := 0;
+  ARect.Top := 0;
+  ARect.Bottom := 0;
+  ARect.Right := lstOrders.Width - 6;
+  Result := WrappedTextHeightByFont(lstOrders.Canvas,lstOrders.Font,TheOrderText,ARect);
+end;
+
+procedure TfrmDCOrders.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  if self.OrderIDArr <> nil then self.OrderIDArr.Free;
+end;
+
+procedure TfrmDCOrders.unMarkedOrignalOrderDC(OrderArr: TStringList);
+begin
+ CallV('ORWDX1 UNDCORIG', [OrderArr]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersEvntRelease.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersEvntRelease.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersEvntRelease.dfm	(revision 1676)
@@ -0,0 +1,222 @@
+inherited frmOrdersEvntRelease: TfrmOrdersEvntRelease
+  Left = 196
+  Top = 66
+  Caption = 'Auto DC/Release Event Orders'
+  ClientHeight = 328
+  ClientWidth = 443
+  OldCreateOrder = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitWidth = 451
+  ExplicitHeight = 355
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 443
+    Height = 85
+    Align = alTop
+    TabOrder = 0
+    object lblPtInfo: TStaticText
+      Left = 1
+      Top = 1
+      Width = 441
+      Height = 52
+      Align = alTop
+      AutoSize = False
+      TabOrder = 1
+    end
+    object Panel1: TPanel
+      Left = 1
+      Top = 53
+      Width = 441
+      Height = 31
+      Align = alClient
+      TabOrder = 0
+      object Panel2: TPanel
+        Left = 293
+        Top = 1
+        Width = 147
+        Height = 29
+        Align = alClient
+        TabOrder = 0
+        DesignSize = (
+          147
+          29)
+        object btnApply: TButton
+          Left = 80
+          Top = 4
+          Width = 63
+          Height = 21
+          Anchors = [akRight, akBottom]
+          Caption = 'Apply'
+          TabOrder = 2
+          OnClick = btnApplyClick
+          OnKeyDown = btnApplyKeyDown
+        end
+        object updown1: TUpDown
+          Left = 61
+          Top = 4
+          Width = 16
+          Height = 21
+          Anchors = [akRight, akBottom]
+          Associate = edtNumber
+          Min = 1
+          Max = 10000
+          Position = 5
+          TabOrder = 1
+          OnClick = updown1Click
+        end
+        object edtNumber: TEdit
+          Left = 5
+          Top = 4
+          Width = 56
+          Height = 21
+          Hint = 'Enter the number of events you would like to view'
+          Anchors = [akLeft, akTop, akRight, akBottom]
+          TabOrder = 0
+          Text = '5'
+          OnChange = edtNumberChange
+          OnClick = edtNumberClick
+          OnKeyDown = edtNumberKeyDown
+        end
+      end
+      object Panel3: TPanel
+        Left = 1
+        Top = 1
+        Width = 292
+        Height = 29
+        Align = alLeft
+        TabOrder = 1
+        object Label2: TLabel
+          Left = 1
+          Top = 1
+          Width = 244
+          Height = 13
+          Align = alTop
+          Caption = '  Enter the number of events you would like to view '
+          WordWrap = True
+        end
+        object Label3: TLabel
+          Left = 1
+          Top = 14
+          Width = 156
+          Height = 13
+          Align = alTop
+          Caption = '  (Input "ALL" to view all events):'
+        end
+      end
+    end
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 85
+    Width = 443
+    Height = 243
+    Align = alClient
+    TabOrder = 1
+    OnResize = pnlBottomResize
+    DesignSize = (
+      443
+      243)
+    object Label1: TLabel
+      Left = 1
+      Top = 1
+      Width = 441
+      Height = 28
+      Align = alTop
+      AutoSize = False
+      Caption = '  View orders released or discontinued by'
+      Layout = tlCenter
+    end
+    object btnOK: TButton
+      Left = 269
+      Top = 214
+      Width = 75
+      Height = 20
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 1
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 353
+      Top = 214
+      Width = 75
+      Height = 20
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = btnCancelClick
+    end
+    object grdEvtList: TCaptionStringGrid
+      Left = 1
+      Top = 29
+      Width = 441
+      Height = 166
+      Align = alTop
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      ColCount = 2
+      DefaultRowHeight = 22
+      FixedCols = 0
+      RowCount = 7
+      Options = [goFixedVertLine, goFixedHorzLine, goHorzLine, goRowSizing, goColSizing, goTabs, goRowSelect]
+      ScrollBars = ssVertical
+      TabOrder = 0
+      OnDblClick = grdEvtListDblClick
+      OnDrawCell = grdEvtListDrawCell
+      OnKeyPress = grdEvtListKeyPress
+      OnMouseDown = grdEvtListMouseDown
+      Caption = 'View orders released or discontinued by'
+      JustToTab = True
+      ColWidths = (
+        310
+        125)
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lblPtInfo'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = btnApply'
+        'Status = stsDefault')
+      (
+        'Component = updown1'
+        'Status = stsDefault')
+      (
+        'Component = edtNumber'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = grdEvtList'
+        'Status = stsDefault')
+      (
+        'Component = frmOrdersEvntRelease'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersEvntRelease.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersEvntRelease.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersEvntRelease.pas	(revision 1676)
@@ -0,0 +1,363 @@
+unit fOrdersEvntRelease;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs
+  ,ORFn, uCore, rOrders, fOrders, StdCtrls, ORCtrls, ExtCtrls, Grids,fAutoSz,
+  Spin, ComCtrls, VA508AccessibilityManager;
+
+type
+  TfrmOrdersEvntRelease = class(TfrmAutoSz)
+    pnlTop: TPanel;
+    lblPtInfo: TStaticText;
+    pnlBottom: TPanel;
+    Label1: TLabel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    grdEvtList: TCaptionStringGrid;
+    Panel1: TPanel;
+    Panel2: TPanel;
+    btnApply: TButton;
+    updown1: TUpDown;
+    edtNumber: TEdit;
+    Panel3: TPanel;
+    Label2: TLabel;
+    Label3: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure grdEvtListDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure grdEvtListMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure btnOKClick(Sender: TObject);
+    procedure grdEvtListKeyPress(Sender: TObject; var Key: Char);
+    procedure grdEvtListDblClick(Sender: TObject);
+    procedure pnlBottomResize(Sender: TObject);
+    procedure edtNumberChange(Sender: TObject);
+    procedure edtNumberKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnApplyClick(Sender: TObject);
+    procedure btnApplyKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure edtNumberClick(Sender: TObject);
+    procedure updown1Click(Sender: TObject; Button: TUDBtnType);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    { Private declarations }
+    FEvtList: TStringList;
+    FTotal: Integer;
+    FDGroup: Integer;
+    FViewName: string;
+    FPtEvt:      string;
+    FEvent:  TOrderDelayEvent;
+    fPreTxt: string;
+    FOkPressed:  Boolean;
+    procedure ShowEvents(NumOfEvts: integer);
+  public
+    { Public declarations }
+  end;
+
+  procedure SelectEvtReleasedOrders(var OrderView: TOrderView);
+
+implementation
+
+uses rMisc, VAUtils;
+
+{$R *.DFM}
+
+const
+   TAB = #9;
+
+procedure SelectEvtReleasedOrders(var OrderView: TOrderView);
+const
+  FROM_SERVER = TRUE;
+var
+  frmOrdersEvntRelease: TfrmOrdersEvntRelease;
+begin
+  frmOrdersEvntRelease := TfrmOrdersEvntRelease.Create(Application);
+  SetFormPosition(frmOrdersEvntRelease);
+  try
+    with frmOrdersEvntRelease do
+    begin
+      FDGroup    := OrderView.DGroup;
+      ShowModal;
+      if FOkPressed then
+      begin
+        frmOrders.FromDCRelease := True;
+        OrderView.Changed   := FOkPressed;
+        OrderView.DGroup    := FDGroup;
+        OrderView.CtxtTime  := 0;
+        OrderView.TextView  := 0;
+        OrderView.ViewName  := FViewName;
+        OrderView.EventDelay.PtEventIFN := StrToIntDef(FPtEvt,0);
+        if FEvent.PtEventIFN > 0 then OrderView.EventDelay := FEvent
+        else
+        begin
+          OrderView.EventDelay.EventType := 'C';
+          OrderView.EventDelay.Specialty := 0;
+          OrderView.EventDelay.Effective := 0;
+          OrderView.EventDelay.PtEventIFN := 0;
+        end;
+      end else
+        OrderView.Changed := False;
+    end;
+  finally
+    frmOrdersEvntRelease.FEvtList.Clear;
+    frmOrdersEvntRelease.Release;
+    frmOrdersEvntRelease.FOkPressed := False;
+  end;
+end;
+
+procedure TfrmOrdersEvntRelease.FormCreate(Sender: TObject);
+var
+  CurrTS: string;
+  SpeCap: string;
+  ATotal: integer;
+begin
+  CurrTS := Piece(GetCurrentSpec(Patient.DFN),'^',1);
+  if Length(CurrTS)>0 then
+    SpeCap := #13 + '  The current treating specialty is ' + CurrTS
+  else
+    SpeCap := #13 + '  No treating specialty is available.';
+  FPtEvt     := '';
+  FEvent.EventType := #0;
+  FEvent.EventIFN  := 0;
+  FEvent.EventName := '';
+  FEvent.PtEventIFN := 0;
+  FEvent.Specialty  := 0;
+  FEvent.Effective := 0;
+  FOkPressed := False;
+  FEvtList := TStringList.Create;
+  FTotal := 5;
+  edtNumber.Text := '5';
+  fPreTxt := edtNumber.Text;
+  if Patient.Inpatient then
+    lblPtInfo.Caption := '  ' + Patient.Name + ' is currently admitted to ' + Encounter.LocationName +  SpeCap
+  else
+  begin
+    if Encounter.Location > 0 then
+      lblPtInfo.Caption := '  ' + Patient.Name + ' is currently at ' + Encounter.LocationName +  SpeCap
+    else
+      lblPtInfo.Caption := '  ' + Patient.Name + ' currently is an outpatient. ' +  SpeCap;
+  end;
+  lblPtInfo.Top := (pnlTop.Height - lblPtInfo.Height) div 2;
+  grdEvtList.Cells[0,0] := 'Event Name';
+  grdEvtList.Cells[1,0] := 'Date/Time Occured';
+  SetPtEvtList(TStrings(fevtList),Patient.DFN, ATotal);
+end;
+
+procedure TfrmOrdersEvntRelease.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmOrdersEvntRelease.FormShow(Sender: TObject);
+begin
+  ShowEvents(fTotal);
+end;
+
+procedure TfrmOrdersEvntRelease.grdEvtListDrawCell(Sender: TObject; ACol,
+  ARow: Integer; Rect: TRect; State: TGridDrawState);
+begin
+ inherited;
+ grdEvtList.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,
+    Piece(grdEvtList.Cells[ACol, ARow], TAB, 1));
+end;
+
+procedure TfrmOrdersEvntRelease.grdEvtListMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  ACol, ARow: integer;
+  EvtInfo: string;
+begin
+  grdEvtList.MouseToCell(X,Y,ACol,ARow);
+  if ARow>0 then
+  begin
+    FPtEvt := Piece(grdEvtList.Cells[0,grdEvtList.Row],TAB,2);
+    if StrToIntDef(FPtEvt,0)>0 then
+      FEvent.PtEventIFN := StrToInt(FPtEvt);
+    EvtInfo := EventInfo(FPtEvt);
+    FEvent.EventIFN  := StrToIntDef( Piece(EvtInfo,'^',2),0);
+    if FEvent.EventIFN > 0 then
+    begin
+      FEvent.EventType := CharAt(Piece(EvtInfo,'^',1),1);
+      FEvent.EventName := Piece(EvtInfo,'^',3);
+    end;
+    FDGroup := DGroupAll;
+    FViewName := 'Patient event -- ' + Piece(grdEvtList.Cells[0,grdEvtList.Row],TAB,1)
+       + ' on ' + grdEvtList.Cells[1,grdEvtList.Row];
+  end;
+end;
+
+procedure TfrmOrdersEvntRelease.btnOKClick(Sender: TObject);
+var
+  EvtInfo: string;
+begin
+  if grdEvtList.Row < 1 then
+  begin
+    ShowMsg('You need to select an event first.');
+    FOkPressed := False;
+    Exit;
+  end
+  else
+  begin
+    if AnsiCompareText(grdEvtList.Cells[0,1],'No event order found') = 0 then
+    begin
+      FOKPressed := False;
+      Exit;
+    end;
+    if FPtEvt = '' then
+    begin
+     FPtEvt := Piece(grdEvtList.Cells[0,grdEvtList.Row],TAB,2);
+     if StrToIntDef(FPtEvt,0)>0 then
+       FEvent.PtEventIFN := StrToInt(FPtEvt);
+     EvtInfo := EventInfo(FPtEvt);
+     FEvent.EventIFN  := StrToIntDef( Piece(EvtInfo,'^',2),0);
+     if FEvent.EventIFN > 0 then
+     begin
+       FEvent.EventType := CharAt(Piece(EvtInfo,'^',1),1);
+       FEvent.EventName := Piece(EvtInfo,'^',3);
+     end;
+     FDGroup := DGroupAll;
+     FViewName := 'Patient event -- ' + Piece(grdEvtList.Cells[0,grdEvtList.Row],TAB,1)
+        + ' on ' + grdEvtList.Cells[1,grdEvtList.Row];
+     FOkPressed := True;
+     Close;
+    end else
+    begin
+     FOkPressed := True;
+     Close;
+    end;
+  end;
+end;
+
+procedure TfrmOrdersEvntRelease.grdEvtListKeyPress(Sender: TObject;
+  var Key: Char);
+var
+  EvtInfo: string;
+begin
+  if grdEvtList.Row > 0 then
+  begin
+    FPtEvt := Piece(grdEvtList.Cells[0,grdEvtList.Row],TAB,2);
+    if StrToIntDef(FPtEvt,0)>0 then
+      FEvent.PtEventIFN := StrToInt(FPtEvt);
+    EvtInfo := EventInfo(FPtEvt);
+    FEvent.EventIFN  := StrToIntDef( Piece(EvtInfo,'^',2),0);
+    if FEvent.EventIFN > 0 then
+    begin
+      FEvent.EventType := CharAt(Piece(EvtInfo,'^',1),1);
+      FEvent.EventName := Piece(EvtInfo,'^',3);
+    end;
+    FDGroup := DGroupAll;
+    FViewName := 'Released orders for event--Delayed ' + Piece(grdEvtList.Cells[0,grdEvtList.Row],TAB,1)
+      + ' on ' + grdEvtList.Cells[1,grdEvtList.Row];
+    if Key = #13 then btnOKClick(Self);
+  end;
+end;
+
+procedure TfrmOrdersEvntRelease.grdEvtListDblClick(Sender: TObject);
+begin
+  if grdEvtList.Row > 0 then
+    btnOKClick(Self);
+end;
+
+procedure TfrmOrdersEvntRelease.pnlBottomResize(Sender: TObject);
+begin
+  grdEvtList.ColWidths[0] := ( grdEvtList.Width div 3 ) * 2;
+  grdEvtList.ColWidths[1] := grdEvtList.Width - grdEvtList.ColWidths[0] - 4;
+end;
+
+procedure TfrmOrdersEvntRelease.ShowEvents(NumOfEvts: integer);
+var
+  temptot,idx,jdx: integer;
+begin
+  with grdEvtList do
+    for idx := 0 to ColCount - 1 do
+      for jdx:= 1 to RowCount - 1 do
+        begin
+          Cells[idx,jdx] := '';
+        end;
+  if NumOfEvts = 0 then  temptot := fevtList.Count
+  else temptot := NumOfEvts;
+  if temptot > fevtList.Count then
+     temptot := fevtList.Count;
+  grdEvtList.RowCount := temptot + 1;
+  if temptot = 0 then
+  begin
+    grdEvtList.RowCount := 2;
+    grdEvtList.Cells[0,1] := 'No event order found';
+    btnOK.Enabled := False;
+  end else
+  begin
+    for idx := 1 to grdEvtList.RowCount-1 do
+    begin
+      grdEvtList.Cells[0,idx] := Piece(fevtList[idx-1],'^',2)+ TAB + Piece(fevtList[idx-1],'^',1);
+      grdEvtList.Cells[1,idx] := FormatFMDateTime('mm/dd/yy hh:nn',StrToFloat(Piece(fevtList[idx-1],'^',3)));
+    end;
+  end;
+end;
+
+procedure TfrmOrdersEvntRelease.edtNumberChange(Sender: TObject);
+begin
+  inherited;
+  if (CharAt(edtNumber.Text,1)='A') or (CharAt(edtNumber.Text,1)='a') then
+  begin
+    edtNumber.Text := 'ALL';
+    edtNumber.SelectAll;
+    fTotal := 0;
+  end
+  else if (StrToIntDef(edtNumber.Text,0)=0) and (AnsiCompareText(edtNumber.Text,'all')<>0) then
+    edtNumber.Text := fPreTxt
+  else if StrToIntDef(edtNumber.Text,0)>0 then
+    fTotal := StrtoInt(edtNumber.Text);
+end;
+
+procedure TfrmOrdersEvntRelease.edtNumberKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  if Key=VK_RETURN then
+    btnApplyClick(Self);
+end;
+
+procedure TfrmOrdersEvntRelease.btnApplyClick(Sender: TObject);
+begin
+  inherited;
+  fPreTxt := edtNumber.Text;
+  ShowEvents(fTotal);
+end;
+
+procedure TfrmOrdersEvntRelease.btnApplyKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then
+    btnApplyClick(Self);
+end;
+
+procedure TfrmOrdersEvntRelease.edtNumberClick(Sender: TObject);
+begin
+  inherited;
+  edtNumber.SelectAll;
+end;
+
+procedure TfrmOrdersEvntRelease.updown1Click(Sender: TObject;
+  Button: TUDBtnType);
+begin
+  inherited;
+  fTotal := updown1.Position;
+  edtNumber.Text := IntToStr(updown1.Position);
+  btnApplyClick(Self);
+end;
+
+procedure TfrmOrdersEvntRelease.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+  Action := caFree;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersHold.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersHold.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersHold.dfm	(revision 1676)
@@ -0,0 +1,63 @@
+inherited frmHoldOrders: TfrmHoldOrders
+  Left = 386
+  Top = 413
+  Caption = 'Hold Orders'
+  ClientHeight = 243
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 270
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 206
+    Height = 13
+    Caption = 'The following orders will be placed on hold -'
+  end
+  object lstOrders: TCaptionListBox [1]
+    Left = 8
+    Top = 22
+    Width = 411
+    Height = 176
+    ItemHeight = 13
+    TabOrder = 0
+    Caption = 'The following orders will be placed on hold -'
+  end
+  object cmdOK: TButton [2]
+    Left = 267
+    Top = 214
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 347
+    Top = 214
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmHoldOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersHold.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersHold.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersHold.pas	(revision 1676)
@@ -0,0 +1,80 @@
+unit fOrdersHold;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmHoldOrders = class(TfrmAutoSz)
+    lstOrders: TCaptionListBox;
+    Label1: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteHoldOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, uConst, uCore;
+
+function ExecuteHoldOrders(SelectedList: TList): Boolean;
+var
+  frmHoldOrders: TfrmHoldOrders;
+  OriginalID: string;
+  i: Integer;
+begin
+  Result := False;
+  if SelectedList.Count = 0 then Exit;
+  frmHoldOrders := TfrmHoldOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmHoldOrders));
+    with SelectedList do for i := 0 to Count - 1 do
+      frmHoldOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmHoldOrders.ShowModal;
+    if frmHoldOrders.OKPressed then
+    begin
+      with SelectedList do for i := 0 to Count - 1 do
+      begin
+        OriginalID := TOrder(Items[i]).ID;
+        HoldOrder(TOrder(Items[i]));
+        TOrder(Items[i]).ActionOn := OriginalID + '=HD';
+        SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_ACT, Integer(Items[i]));
+      end;
+      Result := True;
+    end
+    else with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  finally
+    frmHoldOrders.Release;
+  end;
+end;
+
+procedure TfrmHoldOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmHoldOrders.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmHoldOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersOnChart.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersOnChart.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersOnChart.dfm	(revision 1676)
@@ -0,0 +1,106 @@
+inherited frmOnChartOrders: TfrmOnChartOrders
+  Left = 292
+  Top = 149
+  Caption = 'Signature on Chart'
+  ClientHeight = 341
+  ClientWidth = 462
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 470
+  ExplicitHeight = 368
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel2: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 462
+    Height = 305
+    Align = alClient
+    Constraints.MinHeight = 240
+    TabOrder = 0
+    OnResize = Panel2Resize
+    object Label1: TLabel
+      Left = 1
+      Top = 1
+      Width = 460
+      Height = 13
+      Align = alTop
+      Caption = 
+        'The following orders will be marked '#39'Signed on Chart'#39' and releas' +
+        'ed -'
+      Layout = tlBottom
+      ExplicitWidth = 318
+    end
+    object lstOrders: TCaptionListBox
+      Left = 1
+      Top = 18
+      Width = 460
+      Height = 285
+      Style = lbOwnerDrawVariable
+      Align = alCustom
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      ItemHeight = 13
+      ScrollWidth = 450
+      TabOrder = 0
+      OnDrawItem = lstOrdersDrawItem
+      OnMeasureItem = lstOrdersMeasureItem
+      Caption = 
+        'The following orders will be marked '#39'Signed on Chart'#39' and releas' +
+        'ed '
+    end
+  end
+  object Panel1: TPanel [1]
+    Left = 0
+    Top = 305
+    Width = 462
+    Height = 36
+    Align = alBottom
+    TabOrder = 1
+    DesignSize = (
+      462
+      36)
+    object cmdOK: TButton
+      Left = 299
+      Top = 9
+      Width = 72
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      Default = True
+      TabOrder = 0
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 379
+      Top = 9
+      Width = 72
+      Height = 21
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOnChartOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersOnChart.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersOnChart.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersOnChart.pas	(revision 1676)
@@ -0,0 +1,201 @@
+unit fOrdersOnChart;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmOnChartOrders = class(TfrmAutoSz)
+    Panel2: TPanel;
+    Label1: TLabel;
+    lstOrders: TCaptionListBox;
+    Panel1: TPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure lstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure Panel2Resize(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteOnChartOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rOrders, uConst, fOrdersPrint, uOrders, fFrame, UCore,
+  fClinicWardMeds, rODLab, fRptBox;
+
+const
+  TX_SAVERR1 = 'The error, ';
+  TX_SAVERR2 = ', occurred while trying to save:' + CRLF + CRLF;
+  TC_SAVERR  = 'Error Saving Order';
+
+function ExecuteOnChartOrders(SelectedList: TList): Boolean;
+var
+  frmOnChartOrders: TfrmOnChartOrders;
+  i, PrintLoc: Integer;
+  SignList: TStringList;
+  OrderText: string;
+  AList: TStringList;
+
+  function FindOrderText(const AnID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    with SelectedList do for i := 0 to Count - 1 do
+      with TOrder(Items[i]) do if ID = AnID then
+      begin
+        Result := Text;
+        Break;
+      end;
+  end;
+
+begin
+  Result := False;
+  PrintLoc := 0;
+  if SelectedList.Count = 0 then Exit;
+  frmOnChartOrders := TfrmOnChartOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmOnChartOrders));
+    with SelectedList do for i := 0 to Count - 1 do
+      frmOnChartOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmOnChartOrders.ShowModal;
+    if frmOnChartOrders.OKPressed then
+    begin
+      Result := True;
+      SignList := TStringList.Create;
+      try
+        with SelectedList do for i := 0 to Count - 1 do with TOrder(Items[i]) do
+          SignList.Add(ID + U + SS_ONCHART + U + RS_RELEASE + U + NO_WRITTEN);
+        StatusText('Sending Orders to Service(s)...');
+        if SignList.Count > 0 then SendOrders(SignList, '');
+
+         if (not frmFrame.TimedOut) then
+          begin
+             if IsValidIMOLoc(uCore.TempEncounterLoc,Patient.DFN) then
+                frmClinicWardMeds.ClinicOrWardLocation(SignList, uCore.TempEncounterLoc,uCore.TempEncounterLocName, PrintLoc)
+             else
+                if (IsValidIMOLoc(Encounter.Location,Patient.DFN)) and ((frmClinicWardMeds.rpcIsPatientOnWard(patient.DFN)) and (Patient.Inpatient = false)) then
+                   frmClinicWardMeds.ClinicOrWardLocation(SignList, Encounter.Location,Encounter.LocationName, PrintLoc);
+          end;
+          uCore.TempEncounterLoc := 0;
+          uCore.TempEncounterLocName := '';
+
+        with SignList do if Count > 0 then for i := 0 to Count - 1 do
+          begin
+            if Pos('E', Piece(SignList[i], U, 2)) > 0 then
+              begin
+                OrderText := FindOrderText(Piece(SignList[i], U, 1));
+                if Piece(SignList[i],U,4) = 'Invalid Pharmacy order number' then
+                InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText + CRLF + CRLF +
+                        'The changes to this order have not been saved.  You must contact Pharmacy to complete any action on this order.',
+                        TC_SAVERR, MB_OK)
+                else
+                InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText,
+                        TC_SAVERR, MB_OK);
+              end;
+          end;
+        StatusText('');
+          //  CQ 10226, PSI-05-048 - advise of auto-change from LC to WC on lab orders
+        AList := TStringList.Create;
+        try
+          CheckForChangeFromLCtoWCOnRelease(AList, Encounter.Location, SignList);
+          if AList.Text <> '' then
+            ReportBox(AList, 'Changed Orders', TRUE);
+        finally
+          AList.Free;
+        end;
+        PrintOrdersOnSignRelease(SignList, NO_WRITTEN, PrintLoc);
+//        SetupOrdersPrint(SignList, DeviceInfo, NO_WRITTEN, False, PrintIt);  //*KCM*
+//        if PrintIt then PrintOrdersOnReview(SignList, DeviceInfo);           //*KCM*
+      finally
+        SignList.Free;
+      end;
+    end; {if frmOnChartOrders.OKPressed}
+  finally
+    frmOnChartOrders.Release;
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  end;
+end;
+
+procedure TfrmOnChartOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmOnChartOrders.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmOnChartOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmOnChartOrders.lstOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  x: string;
+  ARect: TRect;
+begin
+  inherited;
+  with lstOrders do if Index < Items.Count then
+  begin
+    ARect := ItemRect(Index);
+    Canvas.FillRect(ARect);
+    x := FilteredString(Items[Index]);
+    AHeight := WrappedTextHeightByFont(Canvas, Font, x, ARect);
+    if AHeight <  13 then AHeight := 15;
+  end;
+end;
+
+procedure TfrmOnChartOrders.lstOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstOrders do
+  begin
+    ARect := Rect;
+    ARect.Left := ARect.Left + 2;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    SaveColor := Canvas.Brush.Color;
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := FilteredString(Items[Index]);
+      DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+      Canvas.Brush.Color := SaveColor;
+      ARect.Right := ARect.Right + 4;
+    end;
+  end;
+end;
+
+procedure TfrmOnChartOrders.Panel2Resize(Sender: TObject);
+begin
+  inherited;
+  lstOrders.Invalidate;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersPrint.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersPrint.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersPrint.dfm	(revision 1676)
@@ -0,0 +1,274 @@
+inherited frmOrdersPrint: TfrmOrdersPrint
+  Left = 353
+  Top = 194
+  Caption = 'Print orders'
+  ClientHeight = 288
+  ClientWidth = 356
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnKeyUp = FormKeyUp
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 356
+    Height = 288
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblDevice: TLabel
+      Left = 127
+      Top = 74
+      Width = 71
+      Height = 13
+      Caption = 'Print to device:'
+    end
+    object lblPartOne: TMemo
+      Left = 16
+      Top = 7
+      Width = 327
+      Height = 26
+      TabStop = False
+      BorderStyle = bsNone
+      Color = clBtnFace
+      Lines.Strings = (
+        
+          'One or more of the following prints are available for this set o' +
+          'f orders.  '
+        'Check those you desire and select a device, if necessary.  ')
+      ReadOnly = True
+      TabOrder = 14
+    end
+    object lblPart2: TMemo
+      Left = 17
+      Top = 40
+      Width = 323
+      Height = 26
+      TabStop = False
+      BorderStyle = bsNone
+      Color = clBtnFace
+      Lines.Strings = (
+        
+          'Highlighted items are configured to print automatically in all c' +
+          'ases for '
+        'this location.  Greyed out items are not available.')
+      ReadOnly = True
+      TabOrder = 15
+    end
+    object ckChartCopy: TCheckBox
+      Left = 17
+      Top = 95
+      Width = 97
+      Height = 17
+      Caption = 'Chart Copies'
+      TabOrder = 0
+      OnClick = ckChartCopyClick
+    end
+    object ckLabels: TCheckBox
+      Left = 17
+      Top = 131
+      Width = 97
+      Height = 17
+      Caption = 'Labels'
+      TabOrder = 3
+      OnClick = ckLabelsClick
+    end
+    object ckRequisitions: TCheckBox
+      Left = 17
+      Top = 170
+      Width = 97
+      Height = 17
+      Caption = 'Requisitions'
+      TabOrder = 6
+      OnClick = ckRequisitionsClick
+    end
+    object ckWorkCopy: TCheckBox
+      Left = 17
+      Top = 208
+      Width = 97
+      Height = 17
+      Caption = 'Work Copies'
+      TabOrder = 9
+      OnClick = ckWorkCopyClick
+    end
+    object lstChartDevice: TORListBox
+      Left = 127
+      Top = 93
+      Width = 121
+      Height = 21
+      ExtendedSelect = False
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ItemHeight = 13
+      ParentFont = False
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = DeviceListClick
+      Caption = 'Print to device:'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object lstLabelDevice: TORListBox
+      Left = 127
+      Top = 129
+      Width = 121
+      Height = 21
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = DeviceListClick
+      Caption = 'Print to device:'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object lstReqDevice: TORListBox
+      Left = 127
+      Top = 168
+      Width = 121
+      Height = 21
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 7
+      OnClick = DeviceListClick
+      Caption = 'Print to device:'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object lstWorkDevice: TORListBox
+      Left = 127
+      Top = 206
+      Width = 121
+      Height = 21
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 10
+      OnClick = DeviceListClick
+      Caption = 'Print to device:'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object cmdChart: TORAlignButton
+      Left = 266
+      Top = 93
+      Width = 75
+      Height = 21
+      Caption = 'Change'
+      TabOrder = 2
+      OnClick = cmdChartClick
+    end
+    object cmdLabels: TORAlignButton
+      Left = 266
+      Top = 129
+      Width = 75
+      Height = 21
+      Caption = 'Change'
+      TabOrder = 5
+      OnClick = cmdLabelsClick
+    end
+    object cmdReqs: TORAlignButton
+      Left = 266
+      Top = 168
+      Width = 75
+      Height = 21
+      Caption = 'Change'
+      TabOrder = 8
+      OnClick = cmdReqsClick
+    end
+    object cmdWork: TORAlignButton
+      Left = 266
+      Top = 206
+      Width = 75
+      Height = 21
+      Caption = 'Change'
+      TabOrder = 11
+      OnClick = cmdWorkClick
+    end
+    object cmdOK: TORAlignButton
+      Left = 7
+      Top = 253
+      Width = 160
+      Height = 21
+      Caption = 'Print All Checked Items'
+      TabOrder = 12
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TORAlignButton
+      Left = 188
+      Top = 253
+      Width = 160
+      Height = 21
+      Caption = 'Print Highlighted Items Only'
+      TabOrder = 13
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = lblPartOne'
+        'Status = stsDefault')
+      (
+        'Component = lblPart2'
+        'Status = stsDefault')
+      (
+        'Component = ckChartCopy'
+        'Status = stsDefault')
+      (
+        'Component = ckLabels'
+        'Status = stsDefault')
+      (
+        'Component = ckRequisitions'
+        'Status = stsDefault')
+      (
+        'Component = ckWorkCopy'
+        'Status = stsDefault')
+      (
+        'Component = lstChartDevice'
+        'Status = stsDefault')
+      (
+        'Component = lstLabelDevice'
+        'Status = stsDefault')
+      (
+        'Component = lstReqDevice'
+        'Status = stsDefault')
+      (
+        'Component = lstWorkDevice'
+        'Status = stsDefault')
+      (
+        'Component = cmdChart'
+        'Status = stsDefault')
+      (
+        'Component = cmdLabels'
+        'Status = stsDefault')
+      (
+        'Component = cmdReqs'
+        'Status = stsDefault')
+      (
+        'Component = cmdWork'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmOrdersPrint'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersPrint.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersPrint.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersPrint.pas	(revision 1676)
@@ -0,0 +1,337 @@
+unit fOrdersPrint;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORfn, ExtCtrls, rOrders, fFrame, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmOrdersPrint = class(TfrmBase508Form)
+    ckChartCopy: TCheckBox;
+    ckLabels: TCheckBox;
+    ckRequisitions: TCheckBox;
+    ckWorkCopy: TCheckBox;
+    lstChartDevice: TORListBox;
+    lstLabelDevice: TORListBox;
+    lstReqDevice: TORListBox;
+    lstWorkDevice: TORListBox;
+    cmdChart: TORAlignButton;
+    cmdLabels: TORAlignButton;
+    cmdReqs: TORAlignButton;
+    cmdWork: TORAlignButton;
+    cmdOK: TORAlignButton;
+    cmdCancel: TORAlignButton;
+    pnlBase: TORAutoPanel;
+    lblDevice: TLabel;
+    lblPartOne: TMemo;
+    lblPart2: TMemo;
+    procedure SetupControls(PrintParams: TPrintParams);
+    procedure cmdChartClick(Sender: TObject);
+    procedure cmdLabelsClick(Sender: TObject);
+    procedure cmdReqsClick(Sender: TObject);
+    procedure cmdWorkClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure ckChartCopyClick(Sender: TObject);
+    procedure ckLabelsClick(Sender: TObject);
+    procedure ckRequisitionsClick(Sender: TObject);
+    procedure ckWorkCopyClick(Sender: TObject);
+    procedure DeviceListClick(Sender: TObject);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FPrintIt: boolean;
+    FSelectAll: boolean;
+    FDevices: string;
+    FNature: char;
+    procedure SetupPrompting(CheckBox: TCheckBox; DeviceList: TORListBox; ChangeButton: TORAlignButton;
+              PromptParam: char; DeviceParam: string);
+  end;
+
+var
+  frmOrdersPrint: TfrmOrdersPrint;
+  PrintParams: TPrintParams;
+  AnyPrompts: boolean;
+  ResultList: TStringList;
+
+const
+  NO_WIN_PRINT = False;
+
+procedure SetupOrdersPrint(OrderList: TStringList; var DeviceInfo: string; Nature: Char; SelectAll: Boolean; var PrintIt: Boolean;
+                           PrintTitle: string = ''; PrintLoc: Integer = 0);
+
+implementation
+
+{$R *.DFM}
+
+uses
+  fDeviceSelect, uCore, ORNet, fOrders;
+
+procedure SetupOrdersPrint(OrderList: TStringList; var DeviceInfo: string; Nature: Char; SelectAll: Boolean; var PrintIt: Boolean;
+                           PrintTitle: string = ''; PrintLoc: Integer = 0);
+{displays device and copy selection form for printing orders, and returns a record of the selections}
+var
+  frmOrdersPrint: TfrmOrdersPrint;
+begin
+  frmOrdersPrint := TfrmOrdersPrint.Create(Application);
+  if PrintTitle <> '' then frmOrdersPrint.Caption := 'Print Orders for ' + PrintTitle;
+  try
+    frmFrame.CCOWBusy := True;
+    ResizeFormToFont(TForm(frmOrdersPrint));
+    with frmOrdersPrint do
+    begin
+      FSelectAll := SelectAll;
+      FPrintIt := False;
+      FNature := Nature;
+      if Nature = #0 then
+        begin
+          cmdCancel.Caption := 'Cancel Print';
+          lblPart2.Text := 'Greyed out items are not available.';
+        end;
+      OrderPrintDeviceInfo(OrderList, PrintParams, Nature, PrintLoc);
+      SetupControls(PrintParams);
+      if (PrintParams.AnyPrompts) {or FSelectAll} then ShowModal;
+      DeviceInfo := FDevices;
+      PrintIt := FPrintIt;
+    end;
+  finally
+    frmFrame.CCOWBusy := False;
+    frmOrdersPrint.Release;
+  end;
+end;
+
+procedure TfrmOrdersPrint.SetupControls(PrintParams: TPrintParams);
+begin
+  with PrintParams do
+    begin
+      SetupPrompting(ckChartCopy   , lstChartDevice, cmdChart , PromptForChartCopy   , ChartCopyDevice);
+      SetupPrompting(ckLabels      , lstLabelDevice, cmdLabels, PromptForLabels      , LabelDevice);
+      SetupPrompting(ckRequisitions, lstReqDevice,   cmdReqs  , PromptForRequisitions, RequisitionDevice);
+      SetupPrompting(ckWorkCopy    , lstWorkDevice,  cmdWork  , PromptForWorkCopy    , WorkCopyDevice);
+      FDevices := lstChartDevice.ItemID + U +
+                  lstLabelDevice.ItemID + U +
+                  lstReqDevice.ItemID   + U +
+                  lstWorkDevice.ItemID;
+      FPrintIt := not (FDevices = '^^^');
+    end;
+end;
+
+procedure TfrmOrdersPrint.SetupPrompting(CheckBox: TCheckBox; DeviceList: TORListBox; ChangeButton: TORAlignButton;
+                                         PromptParam: char; DeviceParam: string);
+{        0 - no prompts - copy is automatically generated.
+             checkbox checked   and disabled,   device defaulted and button disabled
+         1 - prompt for copy and ask which printer should be used.
+             checkbox unchecked and enabled,    device defaulted and button enabled
+         2 - prompt for copy and automatically print to the
+             printer defined in the XXXXX COPY PRINT DEVICE field.
+             checkbox unchecked and enabled,    device defaulted and button disabled
+         * - don't print.
+             checkbox unchecked and disabled,   device empty     and button disabled
+}
+begin
+    case PromptParam of
+      '0', #0: begin
+                 CheckBox.Checked := DeviceParam <> '';
+                 CheckBox.Enabled := False;
+                 DeviceList.Clear;
+                 if DeviceParam <> '' then
+                   begin
+                     DeviceList.Items.Add(DeviceParam);
+                     DeviceList.Font.Color := clGrayText;
+                     DeviceList.ItemIndex := 0;
+                     CheckBox.Font.Style := CheckBox.Font.Style + [fsBold];
+                     CheckBox.Font.Color := clInfoText;
+                     CheckBox.Color := clInfoBk;
+                   end
+                 else
+                   begin
+                     CheckBox.State   := cbUnchecked;
+                     CheckBox.Enabled := False;
+                   end;
+                 ChangeButton.Enabled := False;
+               end;
+      '1': begin
+             CheckBox.State   := cbUnchecked;
+             CheckBox.Enabled := True;
+             DeviceList.Clear;
+             if DeviceParam <> '' then DeviceList.Items.Add(DeviceParam);
+             ChangeButton.Enabled := False;
+           end;
+      '2': begin
+             CheckBox.State   := cbUnchecked;
+             CheckBox.Enabled := True;
+             DeviceList.Clear;
+             if DeviceParam <> '' then
+               DeviceList.Items.Add(DeviceParam)
+             else
+               begin
+                 CheckBox.State   := cbUnchecked;
+                 CheckBox.Enabled := False;
+               end;
+             ChangeButton.Enabled := False;
+           end;
+      '*': begin
+             CheckBox.State   := cbUnchecked;
+             CheckBox.Enabled := False;
+             DeviceList.Clear;
+             ChangeButton.Enabled := False;
+           end;
+    end;
+end;
+
+procedure TfrmOrdersPrint.cmdChartClick(Sender: TObject);
+var
+  x: string;
+begin
+  x := SelectDevice(Self, Encounter.Location, NO_WIN_PRINT,'');
+  if x <> '' then with lstChartDevice do
+    begin
+      Clear;
+      Items.Add(x);
+    end;
+end;
+
+procedure TfrmOrdersPrint.cmdLabelsClick(Sender: TObject);
+var
+  x: string;
+begin
+  x := SelectDevice(Self, Encounter.Location, NO_WIN_PRINT,'');
+  if x <> '' then with lstLabelDevice do
+    begin
+      Clear;
+      Items.Add(x);
+    end;
+end;
+
+procedure TfrmOrdersPrint.cmdReqsClick(Sender: TObject);
+var
+  x: string;
+begin
+  x := SelectDevice(Self, Encounter.Location, NO_WIN_PRINT,'');
+  if x <> '' then with lstReqDevice do
+    begin
+      Clear;
+      Items.Add(x);
+    end;
+end;
+
+procedure TfrmOrdersPrint.cmdWorkClick(Sender: TObject);
+var
+  x: string;
+begin
+  x := SelectDevice(Self, Encounter.Location, NO_WIN_PRINT,'');
+  if x <> '' then with lstWorkDevice do
+    begin
+      Clear;
+      Items.Add(x);
+    end;
+end;
+
+procedure TfrmOrdersPrint.cmdOKClick(Sender: TObject);
+const
+  TX_NO_SELECTION     = 'No copies were selected for printing.  Check a copy type, or Cancel.';
+  TX_NO_SELECTION_CAP = 'Nothing Selected!';
+begin
+  if not ckChartCopy.Checked    then lstChartDevice.ItemIndex := -1 else lstChartDevice.ItemIndex := 0;
+  if not ckLabels.Checked       then lstLabelDevice.ItemIndex := -1 else lstLabelDevice.ItemIndex := 0;
+  if not ckRequisitions.Checked then lstReqDevice.ItemIndex   := -1 else lstReqDevice.ItemIndex   := 0;
+  if not ckWorkCopy.Checked     then lstWorkDevice.ItemIndex  := -1 else lstWorkDevice.ItemIndex  := 0;
+  FDevices := Piece(lstChartDevice.ItemID, ';', 1) + U +
+              Piece(lstLabelDevice.ItemID, ';', 1) + U +
+              Piece(lstReqDevice.ItemID, ';', 1)   + U +
+              Piece(lstWorkDevice.ItemID, ';', 1);
+  if FDevices = '^^^' then
+    begin
+      FPrintIt := False;
+      InfoBox(TX_NO_SELECTION, TX_NO_SELECTION_CAP, MB_OK)
+    end
+  else
+    begin
+      FPrintIt := True;
+      Close;
+    end;
+end;
+
+procedure TfrmOrdersPrint.cmdCancelClick(Sender: TObject);
+//  Force autoprint of 'don't prompt' items, regardless of continue/cancel selection.
+begin
+  if FNature = #0 then FDevices := '^^^'
+  else with PrintParams do
+    begin
+      if (PromptForChartCopy = '0') or (PromptForChartCopy = #0) then
+        begin
+          if not ckChartCopy.Checked then lstChartDevice.ItemIndex := -1
+          else lstChartDevice.ItemIndex := 0;
+        end
+      else lstChartDevice.ItemIndex := -1;
+
+      if (PromptForLabels = '0') or (PromptForLabels = #0) then
+        begin
+          if not ckLabels.Checked then lstLabelDevice.ItemIndex := -1
+          else lstLabelDevice.ItemIndex := 0;
+        end
+      else lstLabelDevice.ItemIndex := -1;
+
+      if (PromptForRequisitions = '0') or (PromptForRequisitions = #0) then
+        begin
+          if not ckRequisitions.Checked then lstReqDevice.ItemIndex   := -1
+          else lstReqDevice.ItemIndex   := 0;
+        end
+      else lstReqDevice.ItemIndex   := -1;
+
+      if (PromptForWorkCopy = '0') or (PromptForWorkCopy = #0) then
+        begin
+          if not ckWorkCopy.Checked then lstWorkDevice.ItemIndex  := -1
+          else lstWorkDevice.ItemIndex  := 0;
+        end
+      else lstWorkDevice.ItemIndex  := -1;
+
+      FDevices := Piece(lstChartDevice.ItemID, ';', 1) + U +
+                  Piece(lstLabelDevice.ItemID, ';', 1) + U +
+                  Piece(lstReqDevice.ItemID, ';', 1)   + U +
+                  Piece(lstWorkDevice.ItemID, ';', 1);
+    end;
+
+  FPrintIt := (FDevices <> '^^^');
+  Close;
+end;
+
+procedure TfrmOrdersPrint.ckChartCopyClick(Sender: TObject);
+begin
+  cmdChart.Enabled := (ckChartCopy.Checked) and (PrintParams.PromptForChartCopy <> '2');
+end;
+
+procedure TfrmOrdersPrint.ckLabelsClick(Sender: TObject);
+begin
+  cmdLabels.Enabled := (ckLabels.Checked) and (PrintParams.PromptForLabels <> '2');
+end;
+
+procedure TfrmOrdersPrint.ckRequisitionsClick(Sender: TObject);
+begin
+  cmdReqs.Enabled := (ckRequisitions.Checked) and (PrintParams.PromptForRequisitions <> '2');
+end;
+
+procedure TfrmOrdersPrint.ckWorkCopyClick(Sender: TObject);
+begin
+  cmdWork.Enabled := (ckWorkCopy.Checked) and (PrintParams.PromptForWorkCopy <> '2');
+end;
+
+procedure TfrmOrdersPrint.DeviceListClick(Sender: TObject);
+begin
+  TORListBox(Sender).ItemIndex := -1;
+end;
+
+procedure TfrmOrdersPrint.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    Close;
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRefill.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRefill.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRefill.dfm	(revision 1676)
@@ -0,0 +1,135 @@
+inherited frmRefillOrders: TfrmRefillOrders
+  Left = 181
+  Top = 267
+  Caption = 'Refill Orders'
+  ClientHeight = 284
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitHeight = 311
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBottom: TPanel [0]
+    Left = 0
+    Top = 200
+    Width = 427
+    Height = 84
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    object cmdOK: TButton
+      Left = 234
+      Top = 40
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 0
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 314
+      Top = 40
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+    object grbPickUp: TGroupBox
+      Left = 42
+      Top = 5
+      Width = 136
+      Height = 75
+      Caption = ' Pick Up '
+      TabOrder = 2
+      object radWindow: TRadioButton
+        Left = 12
+        Top = 17
+        Width = 113
+        Height = 17
+        Caption = 'at &Window'
+        Checked = True
+        TabOrder = 0
+        TabStop = True
+      end
+      object radMail: TRadioButton
+        Left = 12
+        Top = 36
+        Width = 113
+        Height = 17
+        Caption = 'by &Mail'
+        TabOrder = 1
+      end
+      object radClinic: TRadioButton
+        Left = 12
+        Top = 55
+        Width = 113
+        Height = 17
+        Caption = 'in &Clinic'
+        TabOrder = 2
+      end
+    end
+  end
+  object pnlClient: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 427
+    Height = 200
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    object lblOrders: TLabel
+      Left = 0
+      Top = 0
+      Width = 181
+      Height = 13
+      Align = alTop
+      Caption = 'Request refills for the following orders -'
+    end
+    object lstOrders: TCaptionListBox
+      Left = 0
+      Top = 17
+      Width = 427
+      Height = 183
+      Align = alClient
+      ItemHeight = 13
+      TabOrder = 0
+      Caption = 'Request refills for the following orders '
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = grbPickUp'
+        'Status = stsDefault')
+      (
+        'Component = radWindow'
+        'Status = stsDefault')
+      (
+        'Component = radMail'
+        'Status = stsDefault')
+      (
+        'Component = radClinic'
+        'Status = stsDefault')
+      (
+        'Component = pnlClient'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = frmRefillOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRefill.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRefill.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRefill.pas	(revision 1676)
@@ -0,0 +1,128 @@
+unit fOrdersRefill;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmRefillOrders = class(TfrmAutoSz)
+    pnlBottom: TPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    grbPickUp: TGroupBox;
+    radWindow: TRadioButton;
+    radMail: TRadioButton;
+    radClinic: TRadioButton;
+    pnlClient: TPanel;
+    lstOrders: TCaptionListBox;
+    lblOrders: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+  private
+    OKPressed: Boolean;
+    PickupAt: string;
+  end;
+
+function ExecuteRefillOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, rMeds, uCore, uConst, rMisc;
+
+function ExecuteRefillOrders(SelectedList: TList): Boolean;
+var
+  frmRefillOrders: TfrmRefillOrders;
+  AnOrder: TOrder;
+  OriginalID: string;
+  i: Integer;
+begin
+  Result := False;
+  if SelectedList.Count = 0 then Exit;
+  frmRefillOrders := TfrmRefillOrders.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmRefillOrders);
+    frmRefillOrders.Left := (Screen.WorkAreaWidth - frmRefillOrders.Width) div 2;
+    frmRefillOrders.Top := (Screen.WorkAreaHeight - frmRefillOrders.Height) div 2;
+    with SelectedList do for i := 0 to Count - 1 do
+      frmRefillOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmRefillOrders.ShowModal;
+    if frmRefillOrders.OKPressed then
+    begin
+      StatusText('Requesting Refill...');
+      with SelectedList do for i := 0 to Count - 1 do
+      begin
+        AnOrder := TOrder(Items[i]);
+        OriginalID := AnOrder.ID;
+        Refill(OriginalID, frmRefillOrders.PickupAt);
+        AnOrder.ActionOn := OriginalID + '=RF';
+        SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_ACT, Integer(Items[i]));
+      end;
+      Result := True;
+      StatusText('');
+    end;
+  finally
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+    frmRefillOrders.Release;
+  end;
+end;
+
+procedure TfrmRefillOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  PickupAt := PickUpDefault;
+  if PickupAt = 'M' then
+    radMail.Checked := true
+  else
+  if PickupAt = 'C' then
+    radClinic.Checked := true
+  else
+  begin
+    PickupAt := 'W';
+    radWindow.Checked := true;
+  end;
+end;
+
+procedure TfrmRefillOrders.cmdOKClick(Sender: TObject);
+const
+  TX_LOCATION_REQ = 'A location for the refill must be selected.';
+  TC_LOCATION_REQ = 'Missing Refill Location';
+begin
+  inherited;
+  if not (radWindow.Checked or radMail.Checked or radClinic.Checked) then
+  begin
+    InfoBox(TX_LOCATION_REQ, TC_LOCATION_REQ, MB_OK);
+    Exit;
+  end;
+  OKPressed := True;
+  if radWindow.Checked then PickupAt := 'W'
+  else if radMail.Checked then PickupAt := 'M'
+  else PickupAt := 'C';
+  Close;
+end;
+
+procedure TfrmRefillOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmRefillOrders.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmRefillOrders.FormShow(Sender: TObject);
+begin
+  SetFormPosition(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRelease.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRelease.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRelease.dfm	(revision 1676)
@@ -0,0 +1,146 @@
+inherited frmReleaseOrders: TfrmReleaseOrders
+  Left = 318
+  Top = 186
+  Caption = 'Release Orders to Service(s)'
+  ClientHeight = 343
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 318
+  ExplicitTop = 186
+  ExplicitHeight = 377
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 427
+    Height = 296
+    Align = alClient
+    BevelOuter = bvNone
+    Caption = 'Panel1'
+    Constraints.MinHeight = 260
+    TabOrder = 0
+    OnResize = Panel1Resize
+    DesignSize = (
+      427
+      296)
+    object Label1: TLabel
+      Left = 0
+      Top = 0
+      Width = 427
+      Height = 13
+      Align = alTop
+      Caption = 'The following orders will be released -'
+      ExplicitWidth = 176
+    end
+    object lstOrders: TCaptionListBox
+      Left = 1
+      Top = 16
+      Width = 425
+      Height = 275
+      Style = lbOwnerDrawVariable
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      ItemHeight = 13
+      ScrollWidth = 415
+      TabOrder = 0
+      OnDrawItem = lstOrdersDrawItem
+      OnMeasureItem = lstOrdersMeasureItem
+      Caption = 'The following orders will be released '
+    end
+  end
+  object Panel2: TPanel [1]
+    Left = 0
+    Top = 296
+    Width = 427
+    Height = 47
+    Align = alBottom
+    TabOrder = 1
+    object grpRelease: TGroupBox
+      Left = 8
+      Top = 3
+      Width = 241
+      Height = 41
+      Caption = 'Nature of Orders'
+      TabOrder = 0
+      object radVerbal: TRadioButton
+        Left = 8
+        Top = 16
+        Width = 53
+        Height = 17
+        Caption = '&Verbal'
+        Checked = True
+        TabOrder = 0
+        TabStop = True
+      end
+      object radPhone: TRadioButton
+        Left = 80
+        Top = 16
+        Width = 77
+        Height = 17
+        Caption = '&Telephone'
+        TabOrder = 1
+      end
+      object radPolicy: TRadioButton
+        Left = 168
+        Top = 16
+        Width = 49
+        Height = 17
+        Caption = '&Policy'
+        TabOrder = 2
+      end
+    end
+    object cmdOK: TButton
+      Left = 267
+      Top = 19
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 347
+      Top = 19
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = grpRelease'
+        'Status = stsDefault')
+      (
+        'Component = radVerbal'
+        'Status = stsDefault')
+      (
+        'Component = radPhone'
+        'Status = stsDefault')
+      (
+        'Component = radPolicy'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmReleaseOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRelease.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRelease.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRelease.pas	(revision 1676)
@@ -0,0 +1,300 @@
+unit fOrdersRelease;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, ExtCtrls, UBACore, UBAGlobals,
+  VA508AccessibilityManager;
+
+type
+  TfrmReleaseOrders = class(TfrmAutoSz)
+    Panel1: TPanel;
+    lstOrders: TCaptionListBox;
+    Label1: TLabel;
+    Panel2: TPanel;
+    grpRelease: TGroupBox;
+    radVerbal: TRadioButton;
+    radPhone: TRadioButton;
+    radPolicy: TRadioButton;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure Panel1Resize(Sender: TObject);
+  private
+    FOrderList: TList;
+    FNature: Char;
+    FSigSts: Char;
+    OKPressed: Boolean;
+    ESCode: string;
+  end;
+
+function ExecuteReleaseOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses Hash, rCore, rOrders, uConst, fSignItem, fOrdersPrint, uCore, uOrders, fRptBox,
+  fFrame, fClinicWardMeds, rODLab;
+
+const
+  TX_SAVERR1 = 'The error, ';
+  TX_SAVERR2 = ', occurred while trying to save:' + CRLF + CRLF;
+  TC_SAVERR  = 'Error Saving Order';
+  TX_ES_REQ  = 'Enter your electronic signature to release these orders.';
+  TC_ES_REQ  = 'Electronic Signature';
+  TX_NO_REL  = CRLF + CRLF + '- cannot be released to the service(s).' + CRLF + CRLF + 'Reason: ';
+  TC_NO_REL  = 'Unable to Release Orders';
+
+function ExecuteReleaseOrders(SelectedList: TList): Boolean;
+var
+  frmReleaseOrders: TfrmReleaseOrders;
+  i, PrintLoc: Integer;
+  SignList: TStringList;
+  OrderText: string;
+  AnOrder: TOrder;
+  AList: TStringList;
+
+  function FindOrderText(const AnID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    with SelectedList do for i := 0 to Count - 1 do
+      with TOrder(Items[i]) do if ID = AnID then
+      begin
+        Result := Text;
+        Break;
+      end;
+  end;
+
+  function SignNotRequired: Boolean;
+  var
+    i: Integer;
+  begin
+    Result := True;
+    with SelectedList do for i := 0 to Pred(Count) do
+    begin
+      with TOrder(Items[i]) do if Signature <> OSS_NOT_REQUIRE then Result := False;
+    end;
+  end;
+
+
+begin
+  Result := False;
+  PrintLoc := 0;
+  if SelectedList.Count = 0 then Exit;
+  frmReleaseOrders := TfrmReleaseOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmReleaseOrders));
+    frmReleaseOrders.FOrderList := SelectedList;
+    with SelectedList do for i := 0 to Count - 1 do
+      frmReleaseOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    if SignNotRequired then frmReleaseOrders.grpRelease.Visible := False;
+    frmReleaseOrders.ShowModal;
+    if frmReleaseOrders.OKPressed then
+    begin
+      Result := True;
+      SignList := TStringList.Create;
+      try
+        with SelectedList, frmReleaseOrders do
+          for i := 0 to Count - 1 do
+          begin
+            AnOrder := TOrder(Items[i]);
+            SignList.Add(AnOrder.ID + U + FSigSts + U + RS_RELEASE + U + FNature);
+          end;
+        StatusText('Sending Orders to Service(s)...');
+        if SignList.Count > 0 then SendOrders(SignList, frmReleaseOrders.ESCode);
+
+        if (not frmFrame.TimedOut) then
+          begin
+             if IsValidIMOLoc(uCore.TempEncounterLoc,Patient.DFN) then
+                frmClinicWardMeds.ClinicOrWardLocation(SignList, uCore.TempEncounterLoc,uCore.TempEncounterLocName, PrintLoc)
+             else
+                if (IsValidIMOLoc(Encounter.Location,Patient.DFN)) and ((frmClinicWardMeds.rpcIsPatientOnWard(patient.DFN)) and (Patient.Inpatient = false)) then
+                   frmClinicWardMeds.ClinicOrWardLocation(SignList, Encounter.Location,Encounter.LocationName, PrintLoc);
+          end;
+          uCore.TempEncounterLoc := 0;
+          uCore.TempEncounterLocName := '';
+
+        //hds7591  Clinic/Ward movement.
+
+
+        with SignList do if Count > 0 then for i := 0 to Count - 1 do
+        begin
+          if Pos('E', Piece(SignList[i], U, 2)) > 0 then
+          begin
+            OrderText := FindOrderText(Piece(SignList[i], U, 1));
+                if Piece(SignList[i],U,4) = 'Invalid Pharmacy order number' then
+                InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText + CRLF + CRLF +
+                        'The changes to this order have not been saved.  You must contact Pharmacy to complete any action on this order.',
+                        TC_SAVERR, MB_OK)
+                else
+                InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText,
+                        TC_SAVERR, MB_OK);
+          end;
+          if Pos('R', Piece(SignList[i], U, 2)) > 0 then
+            NotifyOtherApps(NAE_ORDER, 'RL' + U + Piece(SignList[i], U, 1));
+        end;
+        StatusText('');
+          //  CQ 10226, PSI-05-048 - advise of auto-change from LC to WC on lab orders
+        AList := TStringList.Create;
+        try
+          CheckForChangeFromLCtoWCOnRelease(AList, Encounter.Location, SignList);
+          if AList.Text <> '' then
+            ReportBox(AList, 'Changed Orders', TRUE);
+        finally
+          AList.Free;
+        end;
+        PrintOrdersOnSignRelease(SignList, frmReleaseOrders.FNature, PrintLoc);
+//        SetupOrdersPrint(SignList, DeviceInfo, frmReleaseOrders.FNature, False, PrintIt); //*KCM*
+//        if PrintIt then PrintOrdersOnReview(SignList, DeviceInfo);                       //*KCM*
+      finally
+        SignList.Free;
+      end;
+ {BillingAware}
+  // HDS6435
+  // HDS00005143 - if cidc master sw is on and  BANurseConsultOrders.Count > 0 then
+  // save those orders with selected DX enteries.  Resulting in dx populated for provider.
+      if rpcGetBAMasterSwStatus then
+      begin
+         if  BANurseConsultOrders.Count > 0 then
+         begin
+            rpcSaveNurseConsultOrder(BANurseConsultOrders);
+            BANurseConsultOrders.Clear;
+         end;
+      end;
+{BillingAware}
+// HDS6435
+    end; {if frmReleaseOrders.OKPressed}
+      finally
+    frmReleaseOrders.Release;
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  end;
+end;
+
+procedure TfrmReleaseOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  ESCode := '';
+  if Encounter.Provider = User.DUZ then
+  begin
+    FNature := NO_POLICY;
+    radPolicy.Checked := True;
+  end else
+  begin
+    FNature := NO_VERBAL;
+    radVerbal.Checked := True;
+  end;
+  FSigSts := SS_UNSIGNED;
+end;
+
+procedure TfrmReleaseOrders.cmdOKClick(Sender: TObject);
+var
+  i: Integer;
+  AnErrMsg: string;
+  AnOrder: TOrder;
+begin
+  inherited;
+  // set up nature, signature status
+  if      radPhone.Checked  then FNature := NO_PHONE
+  else if radPolicy.Checked then FNature := NO_POLICY
+  else                           FNature := NO_VERBAL;
+  FSigSts := SS_UNSIGNED;
+  if not grpRelease.Visible then
+  begin
+    FNature := NO_PROVIDER;
+    FSigSts := SS_NOTREQD;
+  end;
+  if FNature = NO_POLICY then FSigSts := SS_ESIGNED;
+  // validate release of the orders with this nature of order
+  StatusText('Validating Release...');
+  AnErrMsg := '';
+  with FOrderList do for i := 0 to Count - 1 do
+  begin
+    AnOrder := TOrder(Items[i]);
+    ValidateOrderActionNature(AnOrder.ID, OA_RELEASE, FNature, AnErrMsg);
+    if Length(AnErrMsg) > 0 then
+    begin
+      if IsInvalidActionWarning(AnOrder.Text, AnOrder.ID) then Break;
+      InfoBox(AnOrder.Text + TX_NO_REL + AnErrMsg, TC_NO_REL, MB_OK);
+      Break;
+    end;
+  end;
+  StatusText('');
+  if Length(AnErrMsg) > 0 then Exit;
+  // get the signature code for releasing the orders
+  if grpRelease.Visible then
+  begin
+    SignatureForItem(Font.Size, TX_ES_REQ, TC_ES_REQ, ESCode);
+    if ESCode = '' then Exit;
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmReleaseOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmReleaseOrders.lstOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstOrders do
+  begin
+    ARect := Rect;
+    ARect.Left := ARect.Left + 2;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    SaveColor := Canvas.Brush.Color;
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := FilteredString(Items[Index]);
+      DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+      Canvas.Brush.Color := SaveColor;
+      ARect.Right := ARect.Right + 4;
+    end;
+  end;
+end;
+
+procedure TfrmReleaseOrders.lstOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  x: string;
+  ARect: TRect;
+begin
+  inherited;
+  with lstOrders do if Index < Items.Count then
+  begin
+    ARect := ItemRect(Index);
+    Canvas.FillRect(ARect);
+    x := FilteredString(Items[Index]);
+    AHeight := WrappedTextHeightByFont(Canvas, Font, x, ARect);
+    if AHeight <  13 then AHeight := 15;
+  end;
+end;
+
+procedure TfrmReleaseOrders.Panel1Resize(Sender: TObject);
+begin
+  inherited;
+  lstOrders.Invalidate;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRenew.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRenew.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRenew.dfm	(revision 1676)
@@ -0,0 +1,138 @@
+inherited frmRenewOrders: TfrmRenewOrders
+  Left = 434
+  Top = 232
+  HorzScrollBar.Tracking = True
+  HorzScrollBar.Visible = True
+  VertScrollBar.Tracking = True
+  Caption = 'Renew Orders'
+  ClientHeight = 416
+  ClientWidth = 592
+  Position = poScreenCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 600
+  ExplicitHeight = 443
+  PixelsPerInch = 96
+  TextHeight = 13
+  object hdrOrders: THeaderControl [0]
+    Left = 0
+    Top = 0
+    Width = 592
+    Height = 17
+    Constraints.MinHeight = 17
+    Sections = <
+      item
+        AutoSize = True
+        ImageIndex = -1
+        Text = 'Order to be Renewed'
+        Width = 296
+      end
+      item
+        AutoSize = True
+        ImageIndex = -1
+        Text = 'Start/Stop Time'
+        Width = 296
+      end>
+    OnSectionResize = hdrOrdersSectionResize
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 393
+    Width = 592
+    Height = 23
+    Align = alBottom
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    AutoSize = True
+    TabOrder = 2
+    DesignSize = (
+      592
+      23)
+    object cmdCancel: TButton
+      Left = 512
+      Top = 1
+      Width = 72
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      Constraints.MinHeight = 21
+      TabOrder = 0
+      OnClick = cmdCancelClick
+    end
+    object cmdOK: TButton
+      Left = 424
+      Top = 1
+      Width = 72
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      Constraints.MinHeight = 21
+      Default = True
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdChange: TButton
+      Left = 8
+      Top = 1
+      Width = 145
+      Height = 21
+      Caption = 'Change...'
+      Constraints.MinHeight = 21
+      Enabled = False
+      TabOrder = 2
+      OnClick = cmdChangeClick
+    end
+  end
+  object lstOrders: TCaptionListBox [2]
+    Left = 0
+    Top = 17
+    Width = 592
+    Height = 376
+    Style = lbOwnerDrawVariable
+    Align = alClient
+    Anchors = []
+    Color = clCream
+    Ctl3D = True
+    ExtendedSelect = False
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ItemHeight = 24
+    ParentCtl3D = False
+    ParentFont = False
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    OnClick = lstOrdersClick
+    OnDrawItem = lstOrdersDrawItem
+    OnMeasureItem = lstOrdersMeasureItem
+    HintOnItem = True
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = hdrOrders'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdChange'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = frmRenewOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRenew.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRenew.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersRenew.pas	(revision 1676)
@@ -0,0 +1,448 @@
+unit fOrdersRenew;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ComCtrls, uConst, rODMeds, uOrders, fOCAccept,
+  ExtCtrls, uODBase, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmRenewOrders = class(TfrmAutoSz)
+    hdrOrders: THeaderControl;
+    pnlBottom: TPanel;
+    cmdCancel: TButton;
+    cmdOK: TButton;
+    cmdChange: TButton;
+    lstOrders: TCaptionListBox;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var Height: Integer);
+    procedure lstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure lstOrdersClick(Sender: TObject);
+    procedure cmdChangeClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure hdrOrdersSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure FormResize(Sender: TObject);
+  private
+    OKPressed: Boolean;
+    OrderList: TList;
+    function MeasureColumnHeight(TheOrderText: string; Index: Integer; Column: integer):integer;
+    function AcceptOrderCheckOnRenew(const AnOrderID: string; var OCList: TStringList): boolean;
+  end;
+
+function ExecuteRenewOrders(var SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, fDateRange, fRenewOutMed, uCore, rCore, rMisc, UBAGlobals, 
+  VA2006Utils;
+
+const
+  TEXT_COLUMN = 0;
+  DATE_COLUMN = 1;
+  WORD_WRAPPED = True;
+
+  TC_START_STOP = 'Change Start/Stop Dates';
+  TX_START_STOP = 'Enter the start and stop times for this order.  Stop time is optional.';
+  TX_LBL_START  = 'Start Date/Time';
+  TX_LBL_STOP   = 'Stop Date/Time';
+  TX_NO_DEA     = 'Provider must have a DEA# or VA# to review this order';
+  TC_NO_DEA     = 'DEA# Required';
+  TC_ORDERCHECKS = 'Order Checks';
+
+function PickupText(const x: string): string;
+begin
+  case CharAt(x, 1) of
+  'C': Result := ' (administered in Clinic)';
+  'M': Result := ' (deliver by Mail)';
+  'W': Result := ' (pick up at Window)';
+  else Result := '';
+  end;
+end;
+
+function ExecuteRenewOrders(var SelectedList: TList): Boolean;
+const
+  TC_IMO_ERROR  = 'Inpatient medication order on outpatient authorization required';
+var
+  frmRenewOrders: TfrmRenewOrders;
+  RenewFields: TOrderRenewFields;
+  AnOrder, TheOrder: TOrder;
+  OriginalID, RNFillerID,x: string;
+  OrderableItemIen: integer;
+  TreatAsIMOOrder, IsAnIMOOrder: boolean;
+  PassDeaList: TList;
+  IsInpt: boolean;
+  i,j: Integer;
+  //m: integer; //BAPHII 1.3.2
+  PkgInfo:string;
+  PlainText,RnErrMsg: string;
+  TD: TFMDateTime;
+  OrchkList: TStringList;
+
+  function OrderForInpatient: Boolean;
+  begin
+    Result := Patient.Inpatient;
+  end;
+begin
+  Result := False;
+  IsAnIMOOrder := False;
+  RnErrMsg := '';
+
+  if SelectedList.Count = 0 then Exit;
+
+  PassDeaList := TList.Create;
+  OrchkList := TStringList.Create;
+  frmRenewOrders := TfrmRenewOrders.Create(Application);
+
+  try
+    frmRenewOrders.OrderList := SelectedList;
+    IsInpt := OrderForInpatient;
+
+    with frmRenewOrders.OrderList do
+    for j := 0 to Count - 1 do
+       begin
+         TheOrder := TOrder(Items[j]);
+         PkgInfo := GetPackageByOrderID(TheOrder.ID);
+
+         if Pos('PS',PkgInfo)=1 then
+            begin
+              OrderableItemIen := GetOrderableIen(TheOrder.ID);
+              
+              if DEACheckFailed(OrderableItemIen, IsInPt) then
+                 begin
+                   InfoBox(TX_NO_DEA + #13 + TheOrder.Text, TC_NO_DEA, MB_OK);
+                   UnlockOrder(TheOrder.ID);
+                 end
+              else PassDeaList.Add(frmRenewOrders.OrderList.Items[j]);
+            end
+         else
+           PassDeaList.Add(frmRenewOrders.OrderList.Items[j]);
+       end;
+
+    frmRenewOrders.OrderList.Clear;
+    frmRenewOrders.OrderList := PassDeaList;
+
+    for i := frmRenewOrders.OrderList.Count - 1 downto 0 do
+       begin
+         AnOrder := TOrder(frmRenewOrders.OrderList.Items[i]);
+         if not IMOActionValidation('RENEW^'+ AnOrder.ID,IsAnIMOOrder,RnErrMsg,'C') then
+            begin
+              frmRenewOrders.OrderList.Delete(i);
+              ShowMsgOn(Length(RnErrMsg) > 0, RnErrMsg, TC_IMO_ERROR);
+            end;
+         RnErrMsg := '';
+       end;
+
+    with frmRenewOrders.OrderList do
+     for i := 0 to Count - 1 do
+       begin
+         AnOrder := TOrder(Items[i]);
+         RenewFields := TOrderRenewFields.Create;
+         LoadRenewFields(RenewFields, AnOrder.ID);
+         RenewFields.NewText := AnOrder.Text + PickupText(RenewFields.Pickup);
+         AnOrder.LinkObject := RenewFields;
+         PlainText := '';
+
+         if RenewFields.NewText <> '' then
+           PlainText := PlainText + frmRenewOrders.hdrOrders.Sections[TEXT_COLUMN].Text + ': ' + RenewFields.NewText + CRLF;
+
+         if RenewFields.BaseType = OD_TEXTONLY then
+           with RenewFields do
+              PlainText := PlainText + 'Start: ' + StartTime + CRLF + 'Stop: ' + StopTime;
+
+         frmRenewOrders.lstOrders.Items.AddObject(PlainText, AnOrder);
+       end;
+
+    if frmRenewOrders.OrderList.Count < 1 then
+      frmRenewOrders.Close
+    else
+      frmRenewOrders.ShowModal;
+
+    if frmRenewOrders.OKPressed then
+       begin
+         with frmRenewOrders.OrderList do
+           for i := Count - 1 downto 0 do
+            begin
+              OrchkList.Clear;
+              AnOrder := TOrder(Items[i]);
+              OriginalID := AnOrder.ID;
+
+              //BAPHII 1.3.2 - Pick up source-order ID here
+             UBAGlobals.SourceOrderID := OriginalID; //BAPHII 1.3.2
+             UBAGlobals.CopyTreatmentFactorsDxsToRenewedOrder; //BAPHII 1.3.2
+
+              if CheckOrderGroup(OriginalID) = 1 then
+                RNFillerID := 'PSI'
+              else if CheckOrderGroup(OriginalID) = 2 then
+                RNFillerID := 'PSO';
+
+              if AddFillerAppID(RNFillerID) and OrderChecksEnabled then
+                 begin
+                   StatusText('Order Checking...');
+                   x := OrderChecksOnDisplay(RNFillerID);
+                   StatusText('');
+                   if Length(x) > 0 then InfoBox(x, TC_ORDERCHECKS, MB_OK);
+                 end;
+
+              TreatAsIMOOrder := False;
+
+              if not frmRenewOrders.AcceptOrderCheckOnRenew(AnOrder.ID,OrchkList) then
+              begin
+                frmRenewOrders.OrderList.Delete(i);
+                Continue;
+              end;
+
+              if IsIMOOrder(OriginalID) then               //IMO
+                 begin
+                   TD := FMToday;
+                   if IsValidIMOLoc(Encounter.Location, Patient.DFN) and (Encounter.DateTime > TD) then
+                     TreatAsIMOOrder := True;
+                   if Patient.Inpatient then TreatAsIMOOrder := True;
+                 end;
+
+              RenewFields := TOrderRenewFields(AnOrder.LinkObject);
+
+              //PSI-COMPLEX Start
+              if IsComplexOrder(OriginalID) then
+                 begin
+                   if TreatAsIMOOrder then
+                     RenewOrder(AnOrder, RenewFields,1,Encounter.DateTime,OrchkList)
+                   else
+                     RenewOrder(AnOrder, RenewFields,1,0,OrchkList);
+
+                   AnOrder.ActionOn := OriginalID + '=RN';
+                   SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_CPLXRN, Integer(AnOrder));
+                 end
+              //PSI-COMPLEX End
+              else
+                 begin
+                   if TreatAsIMOOrder then
+                     RenewOrder(AnOrder, RenewFields,0,Encounter.DateTime,OrchkList)
+                   else
+                     RenewOrder(AnOrder, RenewFields,0,0,OrchkList);
+
+                   AnOrder.ActionOn := OriginalID + '=RN';
+                   SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_ACT, Integer(AnOrder));
+                 end;
+            end;
+
+         Result := True;
+
+       end
+
+    else
+     with frmRenewOrders.OrderList do
+        for i := 0 to Count - 1 do
+           UnlockOrder(TOrder(Items[i]).ID);
+  finally
+    // free all the TOrderRenewFields that were created
+    SelectedList := frmRenewOrders.OrderList;
+
+    with frmRenewOrders.OrderList do for i := 0 to Count - 1 do
+       begin
+         AnOrder := TOrder(Items[i]);
+         RenewFields := TOrderRenewFields(AnOrder.LinkObject);
+         RenewFields.Free;
+         AnOrder.LinkObject := nil;
+       end;
+    frmRenewOrders.Release;
+  end;
+end;
+
+procedure TfrmRenewOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FixHeaderControlDelphi2006Bug(hdrOrders);
+  OKPressed := False;
+  ResizeFormToFont(Self);
+  SetFormPosition(Self);  
+end;
+
+procedure TfrmRenewOrders.FormResize(Sender: TObject);
+var
+i: integer;
+Height: integer;
+begin
+  inherited;
+  if lstorders.Count = 0 then exit;
+  for I := 0 to lstOrders.Count - 1 do
+    begin
+       Height := lstOrders.ItemRect(i).Bottom - lstOrders.ItemRect(i).Top;
+       lstOrdersMeasureItem(lstOrders,i,Height);
+       //ListGridDrawCell(lstOrders, hdrOrders, i, TEXT_COLUMN, x, WORD_WRAPPED);
+    end;
+end;
+
+procedure TfrmRenewOrders.lstOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var Height: Integer);
+var
+  x, tmp: string;
+  DateHeight, TextHeight: Integer;
+  AnOrder: TOrder;
+  RenewFields: TOrderRenewFields;
+begin
+  inherited;
+      AnOrder := TOrder(OrderList.Items[Index]);
+      if (AnOrder <> nil) then
+        begin
+          RenewFields := TOrderRenewFields(AnOrder.LinkObject);
+          with RenewFields do x := 'Start: ' + StartTime + CRLF + 'Stop: ' + StopTime;
+          //tmp := RenewFields.NewText;
+          tmp := LstOrders.Items.Strings[index];
+          TextHeight := MeasureColumnHeight(tmp,Index,TEXT_COLUMN);
+          DateHeight := MeasureColumnHeight(x, Index, DATE_COLUMN);
+          Height := HigherOf(TextHeight, DateHeight);
+          if Height > 255 then Height := 255;  //This is maximum allowed by a windows listbox item.
+        end
+end;
+
+procedure TfrmRenewOrders.lstOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  AnOrder: TOrder;
+  RenewFields: TOrderRenewFields;
+begin
+  inherited;
+  AnOrder := TOrder(lstOrders.Items.Objects[Index]);
+  if AnOrder <> nil then with AnOrder do
+  begin
+    RenewFields := TOrderRenewFields(AnOrder.LinkObject);
+    if RenewFields.BaseType = OD_TEXTONLY
+      then with RenewFields do x := 'Start: ' + StartTime + CRLF + 'Stop: ' + StopTime
+      else x := '';
+    ListGridDrawLines(lstOrders, hdrOrders, Index, State);
+    ListGridDrawCell(lstOrders, hdrOrders, Index, TEXT_COLUMN, RenewFields.NewText, WORD_WRAPPED);
+    ListGridDrawCell(lstOrders, hdrOrders, Index, DATE_COLUMN, x, WORD_WRAPPED);
+  end;
+end;
+
+procedure TfrmRenewOrders.lstOrdersClick(Sender: TObject);
+var
+  RenewFields: TOrderRenewFields;
+begin
+  inherited;
+  with lstOrders do
+  begin
+    if ItemIndex < 0 then Exit;
+    RenewFields := TOrderRenewFields(TOrder(Items.Objects[ItemIndex]).LinkObject);
+    case RenewFields.BaseType of
+    OD_MEDOUTPT: cmdChange.Caption := 'Change Refills/Pick Up...';
+    OD_TEXTONLY: cmdChange.Caption := 'Change Start/Stop...';
+    else         cmdChange.Caption := 'Change...';
+    end;
+    with RenewFields do if (BaseType = OD_MEDOUTPT) or (BaseType = OD_TEXTONLY)
+      then cmdChange.Enabled := True
+      else cmdChange.Enabled := False;
+  end;
+end;
+
+procedure TfrmRenewOrders.cmdChangeClick(Sender: TObject);
+var
+  StartPos: Integer;
+  x, NewComment, OldComment, OldRefills, OldPickup: string;
+  AnOrder: TOrder;
+  RenewFields: TOrderRenewFields;
+begin
+  inherited;
+  with lstOrders do
+  begin
+    if ItemIndex < 0 then Exit;
+    AnOrder := TOrder(Items.Objects[ItemIndex]);
+    RenewFields := TOrderRenewFields(AnOrder.LinkObject);
+    case RenewFields.BaseType of
+    OD_MEDOUTPT: with RenewFields do begin
+                   OldRefills := IntToStr(Refills) + ' refills';
+                   { reverse string to make sure getting last matching comment }
+                   OldComment := UpperCase(ReverseStr(Comments));
+                   OldPickup  := PickupText(Pickup);
+                   ExecuteRenewOutMed(Refills, Comments, Pickup, AnOrder);
+                   NewComment := UpperCase(ReverseStr(Comments));
+                   x := ReverseStr(NewText);
+                   StartPos := Pos(OldComment, UpperCase(x));
+                   if StartPos > 0
+                     then x := Copy(x, 1, StartPos - 1) + NewComment +
+                               Copy(x, StartPos + Length(OldComment), Length(x))
+                     else x := NewComment + x;
+                   NewText := ReverseStr(x);
+                   x := NewText;
+                   StartPos := Pos(OldRefills, x);
+                   if StartPos > 0
+                     then x := Copy(x, 1, StartPos - 1) + IntToStr(Refills) + ' refills' +
+                               Copy(x, StartPos + Length(OldRefills), Length(x))
+                     else x := x + ' ' + IntToStr(Refills) + ' refills';
+                   StartPos := Pos(OldPickup, x);
+                   if StartPos > 0
+                     then x := Copy(x, 1, StartPos - 1) + PickupText(Pickup) +
+                               Copy(x, StartPos + Length(OldPickup), Length(x))
+                     else x := x + PickupText(Pickup);
+                   NewText := x;
+                 end;
+    OD_TEXTONLY: with RenewFields do ExecuteDateRange(StartTime, StopTime, DT_FUTURE+DT_TIMEOPT,
+                   TC_START_STOP, TX_START_STOP, TX_LBL_START, TX_LBL_STOP);
+    end;
+  end;
+  lstOrders.Invalidate;
+end;
+
+procedure TfrmRenewOrders.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmRenewOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+function TfrmRenewOrders.MeasureColumnHeight(TheOrderText: string; Index,
+  Column: integer): integer;
+var
+  ARect: TRect;
+begin
+  ARect.Left := 0;
+  ARect.Top := 0;
+  ARect.Bottom := 0;
+  ARect.Right := hdrOrders.Sections[Column].Width -6;
+  Result := WrappedTextHeightByFont(lstOrders.Canvas,lstOrders.Font,TheOrderText,ARect);
+end;
+
+function TfrmRenewOrders.AcceptOrderCheckOnRenew(const AnOrderID: string;
+  var OCList: TStringList): boolean;
+var
+  OIInfo,FillerID: string;
+  AnOIList: TStringList;
+begin
+  AnOIList := TStringList.Create;
+  OIInfo := DataForOrderCheck(AnOrderID);
+  FillerID := Piece(OIInfo,'^',2);
+  AnOIList.Add(OIInfo);
+  OrderChecksOnAccept(OCList, FillerID, '', AnOIList, AnOrderID);
+  Result :=  AcceptOrderWithChecks(OCList);
+end;
+
+procedure TfrmRenewOrders.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmRenewOrders.hdrOrdersSectionResize(HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  lstOrders.Repaint; //CQ6367
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersSign.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersSign.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersSign.dfm	(revision 1676)
@@ -0,0 +1,367 @@
+inherited frmSignOrders: TfrmSignOrders
+  Left = 337
+  Top = 142
+  Caption = 'Sign Orders'
+  ClientHeight = 487
+  ClientWidth = 833
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnMouseDown = clstOrdersMouseDown
+  OnMouseMove = FormMouseMove
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitWidth = 841
+  ExplicitHeight = 514
+  DesignSize = (
+    833
+    487)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblESCode: TLabel [0]
+    Left = 8
+    Top = 449
+    Width = 123
+    Height = 13
+    Anchors = [akLeft, akBottom]
+    Caption = 'Electronic Signature Code'
+    ExplicitTop = 446
+  end
+  object laDiagnosis: TLabel [1]
+    Left = 184
+    Top = 185
+    Width = 46
+    Height = 13
+    Caption = 'Diagnosis'
+    Visible = False
+  end
+  object lblOrderList: TStaticText [2]
+    Left = 8
+    Top = 163
+    Width = 205
+    Height = 17
+    Caption = 'Signature will be Applied to Checked Items'
+    TabOrder = 3
+    TabStop = True
+  end
+  object cmdOK: TButton [3]
+    Left = 673
+    Top = 458
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 753
+    Top = 458
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object txtESCode: TCaptionEdit [5]
+    Left = 8
+    Top = 463
+    Width = 137
+    Height = 21
+    Anchors = [akLeft, akBottom]
+    PasswordChar = '*'
+    TabOrder = 0
+    Caption = 'Electronic Signature Code'
+  end
+  object clstOrders: TCaptionCheckListBox [6]
+    Left = 8
+    Top = 181
+    Width = 820
+    Height = 262
+    OnClickCheck = clstOrdersClickCheck
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ItemHeight = 16
+    ParentShowHint = False
+    PopupMenu = poBACopyPaste
+    ShowHint = True
+    Style = lbOwnerDrawVariable
+    TabOrder = 4
+    OnClick = clstOrdersClick
+    OnDrawItem = clstOrdersDrawItem
+    OnKeyUp = clstOrdersKeyUp
+    OnMeasureItem = clstOrdersMeasureItem
+    OnMouseDown = clstOrdersMouseDown
+    OnMouseMove = clstOrdersMouseMove
+    Caption = 'The following orders will be signed -'
+  end
+  object gbdxLookup: TGroupBox [7]
+    Left = 7
+    Top = 157
+    Width = 99
+    Height = 43
+    Caption = 'Lookup Diagnosis'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 8
+    TabStop = True
+    Visible = False
+    object buOrdersDiagnosis: TButton
+      Left = 7
+      Top = 16
+      Width = 86
+      Height = 21
+      Caption = '&Diagnosis'
+      Enabled = False
+      TabOrder = 0
+      OnClick = buOrdersDiagnosisClick
+    end
+  end
+  inline fraCoPay: TfraCoPayDesc [8]
+    Left = 0
+    Top = 0
+    Width = 833
+    Height = 157
+    Align = alTop
+    AutoSize = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 5
+    TabStop = True
+    Visible = False
+    ExplicitWidth = 833
+    inherited pnlRight: TPanel
+      Left = 545
+      ExplicitLeft = 545
+      inherited pnlMain: TPanel
+        inherited pnlHNC: TPanel
+          inherited lblHNC2: TVA508StaticText
+            Width = 129
+            ExplicitWidth = 129
+          end
+          inherited lblHNC: TVA508StaticText
+            Width = 31
+            ExplicitWidth = 31
+          end
+        end
+        inherited pnlMST: TPanel
+          inherited lblMST2: TVA508StaticText
+            Width = 25
+            ExplicitWidth = 25
+          end
+          inherited lblMST: TVA508StaticText
+            Width = 31
+            ExplicitWidth = 31
+          end
+        end
+        inherited pnlSWAC: TPanel
+          inherited lblSWAC2: TVA508StaticText
+            Width = 127
+            ExplicitWidth = 127
+          end
+          inherited lblSWAC: TVA508StaticText
+            Width = 40
+            ExplicitWidth = 40
+          end
+        end
+        inherited pnlIR: TPanel
+          inherited lblIR2: TVA508StaticText
+            Width = 133
+            ExplicitWidth = 133
+          end
+          inherited lblIR: TVA508StaticText
+            Width = 19
+            ExplicitWidth = 19
+          end
+        end
+        inherited pnlAO: TPanel
+          inherited lblAO2: TVA508StaticText
+            Width = 115
+            ExplicitWidth = 115
+          end
+          inherited lblAO: TVA508StaticText
+            Width = 23
+            ExplicitWidth = 23
+          end
+        end
+        inherited pnlCV: TPanel
+          inherited lblCV2: TVA508StaticText
+            Width = 142
+            ExplicitWidth = 142
+          end
+        end
+        inherited pnlSHD: TPanel
+          inherited lblSHAD: TVA508StaticText
+            Width = 33
+            ExplicitWidth = 33
+          end
+          inherited lblSHAD2: TVA508StaticText
+            Width = 159
+            ExplicitWidth = 159
+          end
+        end
+      end
+    end
+    inherited pnlSCandRD: TPanel
+      Width = 545
+      ExplicitWidth = 545
+      inherited lblSCDisplay: TLabel
+        Width = 545
+        ExplicitWidth = 311
+      end
+      inherited memSCDisplay: TCaptionMemo
+        Width = 545
+        ExplicitWidth = 545
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblOrderList'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = txtESCode'
+        'Status = stsDefault')
+      (
+        'Component = clstOrders'
+        'Status = stsDefault')
+      (
+        'Component = gbdxLookup'
+        'Status = stsDefault')
+      (
+        'Component = buOrdersDiagnosis'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblCaption'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlHNC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblHNC2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblHNC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlMST'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblMST2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblMST'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSWAC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSWAC2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSWAC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlIR'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblIR2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblIR'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlAO'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblAO2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblAO'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSC2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlCV'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblCV2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblCV'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSHD'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSHAD'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSHAD2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSCandRD'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.memSCDisplay'
+        'Status = stsDefault')
+      (
+        'Component = frmSignOrders'
+        'Status = stsDefault'))
+  end
+  object poBACopyPaste: TPopupMenu
+    Left = 344
+    Top = 296
+    object Copy1: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = Copy1Click
+    end
+    object Paste1: TMenuItem
+      Caption = '&Paste'
+      Enabled = False
+      ShortCut = 16470
+      OnClick = Paste1Click
+    end
+    object Diagnosis1: TMenuItem
+      Caption = '&Diagnosis...'
+      ShortCut = 32836
+      OnClick = buOrdersDiagnosisClick
+    end
+    object Exit1: TMenuItem
+      Caption = '&Exit'
+      ShortCut = 16453
+      OnClick = Exit1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersSign.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersSign.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersSign.pas	(revision 1676)
@@ -0,0 +1,1463 @@
+unit fOrdersSign;
+
+{.$define debug}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, AppEvnts, mCoPayDesc, XUDIGSIGSC_TLB,
+  ComCtrls, CheckLst, ExtCtrls, uConsults, UBAGlobals,UBACore, UBAMessages, UBAConst,
+  Menus, ORClasses, fBase508Form, fPrintLocation, VA508AccessibilityManager;
+
+type
+  TfrmSignOrders = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblESCode: TLabel;
+    txtESCode: TCaptionEdit;
+    clstOrders: TCaptionCheckListBox;
+    laDiagnosis: TLabel;
+    gbdxLookup: TGroupBox;
+    buOrdersDiagnosis: TButton;
+    poBACopyPaste: TPopupMenu;
+    Copy1: TMenuItem;
+    Paste1: TMenuItem; 
+    Diagnosis1: TMenuItem;
+    Exit1: TMenuItem;
+    lblOrderList: TStaticText;
+    fraCoPay: TfraCoPayDesc;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure clstOrdersDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+    procedure clstOrdersMeasureItem(Control: TWinControl; Index: Integer; var AHeight: Integer);
+    procedure clstOrdersClickCheck(Sender: TObject);
+    procedure clstOrdersMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+    procedure FormShow(Sender: TObject);
+    procedure buOrdersDiagnosisClick(Sender: TObject);
+    function IsSignatureRequired:boolean;
+    procedure Exit1Click(Sender: TObject);
+    procedure Copy1Click(Sender: TObject);
+    procedure Paste1Click(Sender: TObject); 
+    procedure clstOrdersMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure clstOrdersClick(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer); 
+    procedure fraCoPaylblHNCMouseMove(Sender: TObject; Shift: TShiftState;
+      X, Y: Integer);
+    procedure fraCoPayLabel23Enter(Sender: TObject);
+    procedure fraCoPayLabel23Exit(Sender: TObject);
+    procedure clstOrdersKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormResize(Sender: TObject);
+  private
+    OKPressed: Boolean;
+    ESCode: string;
+    FLastHintItem: integer;
+    FOldHintPause: integer;
+    FOldHintHidePause: integer;
+    function ItemsAreChecked: Boolean;
+    function GetNumberOfSelectedOrders : byte;
+    procedure ShowTreatmentFactorHints(var pHintText: string; var pCompName: TVA508StaticText); // 508
+    procedure SetItemTextToState;
+    procedure FormatListForScreenReader;
+  public
+    procedure SetCheckBoxStatus(thisOrderID: string);
+    function GetCheckBoxStatus(sourceOrderID : string) : string; overload; 
+    
+end;
+
+{Begin BillingAware}
+    TarRect = array[MIN_RECT..MAX_RECT] of TRect;
+
+  var
+    thisRect: TRect;
+    j: shortint;
+    ARect: TRect;
+    arRect: TarRect;
+    ProvDx:  TProvisionalDiagnosis;
+    FOSTFHintWndActive: boolean;
+    FOSTFhintWindow: THintWindow;
+    tempList : TList;
+
+{End BillingAware}
+
+{Forward} function ExecuteSignOrders(SelectedList: TList): Boolean;
+
+var
+  crypto: IXuDigSigS;
+  rectIndex: Integer;
+
+  {Begin BillingAware}
+    frmSignOrders: TfrmSignOrders;
+    chkBoxStatus: string;
+    srcOrderID: string;
+    targetOrderID: string;
+    tempStrList: TStringList;
+    srcDx: string;
+    tempBillableList :TStringList;
+    tempOrderList: TStringList;
+    copyOrderID: string;
+    srcIndex: integer;
+    CopyBuffer: TBADxRecord;
+  {End BillingAware}
+
+implementation
+
+{$R *.DFM}
+
+uses
+  Hash, rCore, rOrders, uConst, fOrdersPrint, uCore, uOrders, uSignItems, fOrders,
+  fPCELex, rPCE, fODConsult, fBALocalDiagnoses, fClinicWardMeds, fFrame, rODLab, fRptBox,
+  VAUtils;
+
+const
+  TX_SAVERR1 = 'The error, ';
+  TX_SAVERR2 = ', occurred while trying to save:' + CRLF + CRLF;
+  TC_SAVERR  = 'Error Saving Order';
+
+function TfrmSignOrders.GetNumberOfSelectedOrders : byte;
+{
+ - Return the number of orders in clstOrders that are currently selected.
+}
+var
+  i: integer;
+  numSelected: byte;
+begin
+  Result := 0;
+  if BILLING_AWARE then
+     begin
+      numSelected := 0;
+
+        try
+            for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
+                if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+                   Inc(numSelected);
+        except
+           on EListError do
+              begin
+              {$ifdef debug}Show508Message('EListError in frmSignOrders.GetNumberOfSelectedOrders()');{$endif}
+              raise;
+              end;
+        end;
+
+      Result := numSelected;
+     end;
+end;
+
+procedure TfrmSignOrders.SetCheckBoxStatus(thisOrderID: string);
+{
+ - Set the current GRID checkboxes status
+}
+begin
+  if BILLING_AWARE then
+     begin
+        uSignItems.uSigItems.SetSigItems(clstOrders, thisOrderID);
+     end;
+end;
+
+function TfrmSignOrders.GetCheckBoxStatus(sourceOrderID: string) : string;  //PASS IN ORDER ID - NOT GRID INDEX
+{
+- Obtain checkbox status for selected order - BY ORDER ID
+}
+var
+  itemsList: TStringList;
+  i: smallint;
+  thisOrderID: string;
+begin
+  Result := '';
+  itemsList := TStringList.Create;
+  itemsList.Clear;
+  itemsList := uSigItems.GetSigItems; //Get FItems list
+  if BILLING_AWARE then
+     begin
+        try
+           for i := 0 to itemsList.Count-1 do
+              begin
+              thisOrderID := Piece(itemsList[i],'^',1); //get the order ID
+              if thisOrderID = sourceOrderID then   //compare to order ID of source order
+                 begin
+                 Result := Piece(itemsList[i],U,4);  //return TF status'
+                 Break;
+                 end;
+              end;
+        except
+           on EListError do
+              begin
+              {$ifdef debug}Show508Message('EListError in frmSignOrders.GetCheckBoxStatus()');{$endif}
+              raise;
+              end;
+        end;
+     end;
+end;
+
+function ExecuteSignOrders(SelectedList: TList): Boolean;
+const
+  VERT_SPACING = 6;
+
+var
+  i, cidx,cnt, theSts, WardIEN: Integer;
+  ShrinkHeight: integer;
+  SignList: TStringList;
+  Obj: TOrder;
+  DigSigErr, DigStoreErr, ContainsIMOOrders, DoNotPrint: Boolean;
+  x, SigData, SigUser, SigDrugSch, SigDEA: string;
+  cSignature, cHashData, cCrlUrl, cErr, WardName: string;
+  cProvDUZ: Int64;
+  OrderText, ASvc: string;
+  PrintLoc: Integer;
+  AList, ClinicList, DCList, OrderPrintList, WardList: TStringList;
+  EncLocName, EncLocText: string;
+  EncLocIEN: integer;
+  EncDT: TFMDateTime;
+  EncVC: Char;
+
+  function FindOrderText(const AnID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    fOrdersSign.tempList := selectedList;
+    with SelectedList do for i := 0 to Count - 1 do
+      with TOrder(Items[i]) do if ID = AnID then
+      begin
+        Result := Text;
+        Break;
+      end;
+  end;
+
+  function SignNotRequired: Boolean;
+  var
+    i: Integer;
+  begin
+    Result := True;
+    tempList := SelectedList;
+    with SelectedList do for i := 0 to Pred(Count) do
+    begin
+      with TOrder(Items[i]) do if Signature <> OSS_NOT_REQUIRE then Result := False;
+    end;
+  end;
+
+  function DigitalSign: Boolean;
+  var
+    i: Integer;
+  begin
+    Result := False;
+
+    with SelectedList do for i := 0 to Pred(Count) do
+    begin
+      with TOrder(Items[i]) do if Copy(DigSigReq,1,1) = '2' then Result := True;
+    end;
+  end;
+
+begin
+  Result := False;
+  DigSigErr := True;
+  PrintLoc := 0;
+  EncLocIEN := 0;
+  DoNotPrint := False;
+  if SelectedList.Count = 0 then Exit;
+  if BILLING_AWARE then
+  begin
+     tempOrderList := TStringList.Create;
+     tempOrderList.Clear;
+  end;
+  frmSignOrders := TfrmSignOrders.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmSignOrders);
+    SigItems.ResetOrders;
+    with SelectedList do for i := 0 to Count - 1 do
+      begin
+        obj := TOrder(Items[i]);
+        cidx := frmSignOrders.clstOrders.Items.AddObject(Obj.Text,Obj);
+        SigItems.Add(CH_ORD,Obj.ID, cidx);
+        if BILLING_AWARE then
+           tempOrderList.Add(Obj.ID);
+        frmSignOrders.clstOrders.Checked[cidx] := TRUE;
+
+        if (TOrder(Items[i]).DGroupName) = NonVAMedGroup then
+           frmSignOrders.clstOrders.State[cidx] := cbGrayed ;
+      end;
+
+    if SigItems.UpdateListBox(frmSignOrders.clstOrders) then
+      frmSignOrders.fraCoPay.Visible := TRUE
+    else
+      begin
+
+      {Begin BillingAware}
+        if  BILLING_AWARE then
+           frmSignOrders.gbDxLookup.Visible := FALSE;
+       {End BillingAware}
+
+        with frmSignOrders do begin
+          ShrinkHeight := lblOrderList.Top - VERT_SPACING;
+          Height := Height - ShrinkHeight;
+          lblOrderList.Top := lblOrderList.Top - ShrinkHeight;
+          clstOrders.Top := clstOrders.Top - ShrinkHeight;
+          clstOrders.Height := clstOrders.Height + ShrinkHeight;
+        end;
+      end;
+
+    if GetPKISite and GetPKIUse and DigitalSign then //PKI setup for crypto card read
+      begin
+        try  //PKI object creation
+          crypto := CoXuDigSigS.Create;
+          crypto.GetCSP;
+          StatusText(crypto.Reason);
+          DigSigErr := False;
+        except
+          on  E: Exception do
+            begin
+              DigSigErr := True;
+            end;
+        end;
+      end;
+
+    if SignNotRequired then
+      begin
+        frmSignOrders.lblESCode.Visible := False;
+        frmSignOrders.txtESCode.Visible := False;
+      end;
+
+    if BILLING_AWARE then
+    begin
+     //  build list of orders that are not billable based on order type
+        UBAGlobals.NonBillableOrderList := rpcNonBillableOrders(tempOrderList);
+    end;
+
+      frmSignOrders.ShowModal;
+      if frmSignOrders.OKPressed then
+      begin
+        Result := True;
+        SignList := TStringList.Create;
+        ClinicList := TStringList.Create;
+        OrderPrintList := TStringList.Create;
+        WardList := TStringList.Create;
+        ContainsIMOOrders := false;
+        try
+          with SelectedList do for i := 0 to Count - 1 do with TOrder(Items[i]) do
+            begin
+              DigStoreErr := false;
+              if (DigSigErr = False) and (Copy(TOrder(Items[i]).DigSigReq,1,1) = '2') then
+                begin
+                  StatusText('Retrieving DIGITAL SIGNATURE');
+                  x := TOrder(Items[i]).ID;
+                  SigDrugSch := GetDrugSchedule(x);
+                  SigData := SetExternalText(x,SigDrugSch,User.DUZ);
+                  if Length(SigData) < 1 then
+                    begin
+                      ShowMsg(TOrder(SelectedList.Items[i]).Text + CRLF + CRLF + 'Digital Signature failed with reason: Unable to get required data from server');
+                      DigStoreErr := true;
+                    end;
+                  SigUser := piece(SigData,'^',18);
+                  SigDEA := piece(SigData,'^',20);
+                  cProvDUZ := User.DUZ;
+                  if DigStoreErr = false then
+                  try
+                    crypto.Reset;
+                    crypto.DEAsig := true;
+                    crypto.UsrName := SigUser;
+                    crypto.DrugSch := SigDrugSch;
+                    crypto.UsrNumber := SigDEA;
+                    crypto.DataBuffer := SigData;
+                    if crypto.Signdata = true then
+                      begin
+                        cSignature := crypto.Signature;
+                        cHashData := crypto.HashValue;
+                        cCrlUrl := crypto.CrlUrl;
+                      end
+                    else
+                      begin
+                        ShowMsg(TOrder(SelectedList.Items[i]).Text + CRLF + CRLF + 'Digital Signature failed with reason: '+ piece(Crypto.Reason, '^', 2));
+                        DigStoreErr := true;
+                      end;
+                  except
+                    on  E: Exception do
+                      begin
+                        ShowMsg(TOrder(SelectedList.Items[i]).Text + CRLF + CRLF + 'Crypto raised an error: '+ E.Message);
+                        DigStoreErr := true;
+                      end;
+                  end;  //except
+                  if DigStoreErr = true then //PKI
+                    begin
+                      //NoOp
+                    end
+                  else
+                    begin
+                      cErr := '';
+                      StoreDigitalSig(ID, cHashData, cProvDUZ, cSignature, cCrlUrl, cErr);
+                      cidx := frmSignOrders.clstOrders.Items.IndexOfObject(TOrder(Items[i]));
+                      if (cidx > -1 ) and (frmSignOrders.clstOrders.Checked[cidx]) and (cErr = '') then
+                      begin
+                        UpdateOrderDGIfNeeded(ID);
+                        SignList.Add(ID + U + SS_DIGSIG + U + RS_RELEASE + U + NO_PROVIDER);
+                        BAOrderList.Add(TOrder(Items[i]).ID);
+                      end;
+                    end;
+                end
+              else
+                begin
+                  if GetPKISite and (Copy(TOrder(SelectedList.Items[i]).DigSigReq,1,1) = '2') then
+                    begin
+                      ShowMsg('ORDER NOT SENT TO PHARMACY' + CRLF + CRLF + TOrder(SelectedList.Items[i]).Text + CRLF + CRLF +
+                        'This Schedule II medication cannot be electronically entered without a Digital Signature. ' +
+                        CRLF + 'Please discontinue/cancel this order and create a hand written order for manual processing, or digitally sign the order at a PKI-enabled workstation.');
+                    end
+                  else
+                    begin
+                      cidx := frmSignOrders.clstOrders.Items.IndexOfObject(TOrder(Items[i]));
+                      if TOrder(Items[i]).DGroupName = NonVAMedGroup  then  frmSignOrders.clstOrders.Checked[cidx] := True;    //Non VA MEDS
+                      if (cidx > -1 ) and (frmSignOrders.clstOrders.Checked[cidx]) then
+                      begin
+                        UpdateOrderDGIfNeeded(ID);
+                        SignList.Add(ID + U + SS_ESIGNED + U + RS_RELEASE + U + NO_PROVIDER);
+                      end;
+                    end;
+                end;
+            end;
+          StatusText('Sending Orders to Service(s)...');
+          if SignList.Count > 0 then
+          begin
+            //hds7591  Clinic/Ward movement.  Patient Admission IMO
+            if not frmFrame.TimedOut then
+            begin
+               if (Patient.Inpatient = True) and (Encounter.Location <> Patient.Location) then
+                   begin
+                     DCList := TStringList.Create;
+                     EncLocName := Encounter.LocationName;
+                     EncLocIEN  := Encounter.Location;
+                     EncLocText := Encounter.LocationText;
+                     EncDT := Encounter.DateTime;
+                     EncVC := Encounter.VisitCategory;
+                     for i := 0 to SelectedList.Count - 1 do
+                       begin
+                         cidx := frmSignOrders.clstOrders.Items.IndexOfObject(TOrder(SelectedList.Items[i]));
+                         if frmSignOrders.clstOrders.Checked[cidx] = false then continue;
+                         if TOrder(SelectedList.Items[i]).DGroupName = 'Clinic Orders' then ContainsIMOOrders := true;
+                         if TOrder(SelectedList.Items[i]).DGroupName = '' then continue;
+                         if TOrder(SelectedList.Items[i]).EventPtr <> '' then continue;
+                         if Pos('DC', TOrder(SelectedList.Items[i]).ActionOn) > 0 then
+                           begin
+                             DCList.Add(TOrder(SelectedList.Items[i]).ID);
+                             Continue;
+                           end;
+                         OrderPrintList.Add(TOrder(SelectedList.Items[i]).ID + ':' + TOrder(SelectedList.Items[i]).Text);
+                       end;
+                      if OrderPrintList.Count > 0 then
+                        begin
+                          frmPrintLocation.PrintLocation(OrderPrintList, EncLocIEN, EncLocName, EncLocText, EncDT, EncVC, ClinicList,
+                                                        WardList, WardIen,WardName, ContainsIMOOrders, true);
+                          fframe.frmFrame.OrderPrintForm := false;
+                        end
+                      else DoNotPrint := True;
+                      if (DCList <> nil) and (DCList.Count > 0) then
+                        begin
+                          for i := 0 to DCList.Count - 1 do
+                             WardList.Add(DCList.Strings[i]);
+                          if (WardIEN = 0) and (WardName = '') then
+                          CurrentLocationForPatient(Patient.DFN, WardIEN, WardName, ASvc);
+                        end;
+                      if DCList <> nil then DCList.Free;
+                   end;
+            end;
+            uCore.TempEncounterLoc := 0;
+            uCore.TempEncounterLocName := '';
+            //hds7591  Clinic/Ward movement  Patient Admission IMO
+
+            SigItems.SaveSettings; // Save CoPay FIRST!
+            SendOrders(SignList, frmSignOrders.ESCode);
+          end;
+
+            with SignList do if Count > 0 then for i := 0 to Count - 1 do
+            begin
+              if Pos('E', Piece(SignList[i], U, 2)) > 0 then
+                begin
+                  OrderText := FindOrderText(Piece(SignList[i], U, 1));
+                  if Piece(SignList[i],U,4) = 'Invalid Pharmacy order number' then
+                  InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText + CRLF + CRLF +
+                        'The changes to this order have not been saved.  You must contact Pharmacy to complete any action on this order.',
+                        TC_SAVERR, MB_OK)
+                  else
+                  InfoBox(TX_SAVERR1 + Piece(SignList[i], U, 4) + TX_SAVERR2 + OrderText,
+                        TC_SAVERR, MB_OK);
+                end;
+              if Pos('R', Piece(SignList[i], U, 2)) > 0 then
+                NotifyOtherApps(NAE_ORDER, 'RL' + U + Piece(SignList[i], U, 1));
+            end;
+          StatusText('');
+          for cnt := SignList.Count - 1 downto 0 do
+          begin
+              if Pos('E', Piece(SignList[cnt], U, 2)) > 0 then
+              begin
+                SignList.Delete(cnt);
+                Continue;
+              end;
+              theSts := GetOrderStatus(Piece(SignList[cnt],U,1));
+              if theSts = 10 then  SignList.Delete(cnt);  //signed delayed order should not be printed.
+          end;
+          //  CQ 10226, PSI-05-048 - advise of auto-change from LC to WC on lab orders
+          AList := TStringList.Create;
+          try
+            CheckForChangeFromLCtoWCOnRelease(AList, Encounter.Location, SignList);
+            if AList.Text <> '' then
+              ReportBox(AList, 'Changed Orders', TRUE);
+          finally
+            AList.Free;
+          end;
+          if(ClinicList.Count > 0) or (WardList.count > 0) then
+              PrintOrdersOnSignReleaseMult(SignList, CLinicList, WardList, NO_PROVIDER, EncLocIEN, WardIEN, EncLocName, wardName)
+            else if DoNotPrint = False then PrintOrdersOnSignRelease(SignList, NO_PROVIDER, PrintLoc);
+        finally
+          SignList.Free;
+          OrderPrintList.free;
+          WardList.free;
+          ClinicList.free;
+        end;
+      end; {if frmSignOrders.OKPressed}
+  finally
+    frmSignOrders.Free;
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  end;
+  crypto := nil;
+end;
+
+procedure TfrmSignOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FLastHintItem := -1;
+  OKPressed := False;
+  FOldHintPause := Application.HintPause;
+  Application.HintPause := 250;
+  FOldHintHidePause := Application.HintHidePause;
+  Application.HintHidePause := 30000;
+  tempList := TList.Create;
+
+  {Begin BillingAware}
+  //This is the DIAGNOSIS label above the Dx column
+  if  BILLING_AWARE then
+      begin
+        clstOrders.Height := 228;
+        clstOrders.Top :=  (gbdxLookup.top + 65);
+        gbDxLookup.Visible := TRUE;
+        lblOrderList.Top := (gbdxLookup.Top +  gbdxLookup.Height);
+        laDiagnosis.Top :=  lblOrderList.Top;
+        laDiagnosis.Left := 270;
+        laDiagnosis.Visible := TRUE;
+        rectIndex := 0;
+      end
+   else
+      begin
+         lblOrderList.Top := 158;
+         lblOrderList.Left := 8;
+     end;
+ {End BillingAware}
+
+end;
+
+function TfrmSignOrders.IsSignatureRequired:boolean;
+var
+   i: Integer;
+begin
+    Result := FALSE;
+
+    with tempList do for i := 0 to Pred(Count) do
+    begin
+      if frmSignOrders.clstOrders.Checked[i] then
+      begin
+      with TOrder(Items[i]) do if Signature <> OSS_NOT_REQUIRE then
+         Result := TRUE;
+      end;
+    end;
+end;
+
+procedure TfrmSignOrders.cmdOKClick(Sender: TObject);
+const
+  TX_NO_CODE  = 'An electronic signature code must be entered to sign orders.';
+  TC_NO_CODE  = 'Electronic Signature Code Required';
+  TX_BAD_CODE = 'The electronic signature code entered is not valid.';
+  TC_BAD_CODE = 'Invalid Electronic Signature Code';
+  TC_NO_DX   =  'Incomplete Diagnosis Entry';
+  TX_NO_DX   = 'A Diagnosis must be selected prior to signing any of the following order types:'
+                + CRLF + 'Lab, Radiology, Outpatient Medications, Prosthetics.';
+begin
+  inherited;
+
+  if txtESCode.Visible and (Length(txtESCode.Text) = 0) then
+  begin
+    InfoBox(TX_NO_CODE, TC_NO_CODE, MB_OK);
+    Exit;
+  end;
+
+  if txtESCode.Visible and not ValidESCode(txtESCode.Text) then
+  begin
+    InfoBox(TX_BAD_CODE, TC_BAD_CODE, MB_OK);
+    txtESCode.SetFocus;
+    txtESCode.SelectAll;
+    Exit;
+  end;
+
+{Begin BillingAware}
+  if  BILLING_AWARE then
+  begin
+    if SigItems.OK2SaveSettings then
+   
+      if Not UBACore.BADxEntered then   //  if Dx have been entered and OK is pressed
+         begin                     // billing data will be saved. otherwise error message!
+            InfoBox(TX_NO_DX, 'Sign Orders', MB_OK);
+            Exit;
+         end;
+    end;
+{End BillingAware}
+
+  if not SigItems.OK2SaveSettings then
+  begin
+    InfoBox(TX_Order_Error, 'Sign Orders', MB_OK);
+    Exit;
+  end;
+
+  if txtESCode.Visible then
+     ESCode := Encrypt(txtESCode.Text) else ESCode := '';
+     
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmSignOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmSignOrders.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  Application.HintPause := FOldHintPause;
+  Application.HintHidePause := FOldHintHidePause;
+  Crypto := nil;  //PKI object destroy
+end;
+
+procedure TfrmSignOrders.clstOrdersDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+{Begin BillingAware}
+  str: String;
+  tempID: string;
+  thisRec: UBAGlobals.TBADxRecord;
+ {End BillingAware}
+
+  X: string;
+  ARect: TRect;
+begin
+  inherited;
+  X := '';
+  ARect := Rect;
+
+{Begin BillingAware}
+  if  BILLING_AWARE then
+  begin
+     with clstOrders do
+     begin
+       if Index < Items.Count then
+       begin
+          Canvas.FillRect(ARect);
+          Canvas.Pen.Color := Get508CompliantColor(clSilver);
+          Canvas.MoveTo(ARect.Left, ARect.Bottom);
+          Canvas.LineTo(ARect.Right, ARect.Bottom);
+          x := FilteredString(Items[Index]);
+          ARect.Right := ARect.Right - 50;    //50 to 40
+          //Vertical column line
+          Canvas.MoveTo(ARect.Right, Rect.Top);
+          Canvas.LineTo(ARect.Right, Rect.Bottom);
+          //Adjust position of 'Diagnosis' column label for font size
+          laDiagnosis.Left := ARect.Right + 14;
+          if uSignItems.GetAllBtnLeftPos > 0 then
+             laDiagnosis.left := uSignItems.GetAllBtnLeftPos - (laDiagnosis.Width +5);
+              // ARect.Right below controls the right-hand side of the Dx Column
+              // Adjust ARect.Right in conjunction with procedure uSignItems.TSigItems.lbDrawItem(), because the
+              // two rectangles overlap each other.
+           if  BILLING_AWARE then
+           begin
+              arRect[Index] := Classes.Rect(ARect.Right+2, ARect.Top, ARect.Right + 108, ARect.Bottom);
+              Canvas.FillRect(arRect[Index]);
+           end;
+
+              //Win32 API - This call to DrawText draws the text of the ORDER - not the diagnosis code
+               DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+       if  BILLING_AWARE then
+         begin
+             if Assigned(UBAGlobals.tempDxList) then
+                begin
+                   tempID := TOrder(clstOrders.Items.Objects[Index]).ID;
+
+                if UBAGlobals.tempDxNodeExists(tempID) then
+                    begin
+                       thisRec := TBADxRecord.Create;
+                       UBAGlobals.GetBADxListForOrder(thisRec, tempID);
+                       str := Piece(thisRec.FBADxCode,'^',1);
+                       {v25 BA}
+                       str := Piece(str,':',1);
+                       DrawText(Canvas.handle, PChar(str), Length(str), arRect[Index], DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                       if Not UBACore.IsOrderBillable(tempID) then
+                       begin
+                            Canvas.Font.Color := clBlue;
+                            DrawText(Canvas.handle, PChar(NOT_APPLICABLE), Length(NOT_APPLICABLE), {Length(str),} arRect[Index], DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                       end;
+                    end
+                 else
+                    begin
+                      //   determine if order is billable, if NOT then insert NA in Dx field
+                     if Not UBACore.IsOrderBillable(tempID) then
+                        begin
+                            Canvas.Font.Color := clBlue;
+                            DrawText(Canvas.handle, PChar(NOT_APPLICABLE), Length(NOT_APPLICABLE), {Length(str),} arRect[Index], DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                        end;
+                    end;
+                end;
+            end;
+  
+        end;
+       end;
+  end
+  else
+     begin
+        X := '';
+        ARect := Rect;
+        with clstOrders do
+           begin
+             if Index < Items.Count then
+                begin
+                  Canvas.FillRect(ARect);
+                  Canvas.Pen.Color := Get508CompliantColor(clSilver);
+                  Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+                  Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+                  X := FilteredString(Items[Index]);
+                  DrawText(Canvas.handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                end;
+           end;
+     end;
+{End BillingAware}
+end;
+
+procedure TfrmSignOrders.clstOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  X: string;
+  ARect: TRect;
+begin
+  inherited;
+  AHeight := SigItemHeight;
+  with clstOrders do if Index < Items.Count then
+  begin
+    ARect := ItemRect(Index);
+    Canvas.FillRect(ARect);
+    x := FilteredString(Items[Index]);
+    AHeight := WrappedTextHeightByFont(Canvas, Font, x, ARect);
+    if AHeight > 255 then AHeight := 255;
+    //-------------------
+    {Bug fix-HDS00001627}
+    //if AHeight <  13 then AHeight := 13; {ORIG}
+    if AHeight <  13 then AHeight := 15;
+    //-------------------
+  end;
+end;
+
+procedure TfrmSignOrders.clstOrdersClickCheck(Sender: TObject);
+
+   procedure updateAllChilds(CheckedStatus: boolean; ParentOrderId: string);
+   var
+     idx: integer;
+   begin
+     for idx := 0 to clstOrders.Items.Count - 1 do
+        if TOrder(clstOrders.Items.Objects[idx]).ParentID = ParentOrderId then
+        begin
+           if clstOrders.Checked[idx] <> CheckedStatus then
+           begin
+              clstOrders.Checked[idx] := CheckedStatus;
+              SigItems.EnableSettings(idx, clstOrders.checked[Idx]);
+           end;
+        end;
+   end;
+
+begin
+  with clstOrders do
+  begin
+    if Length(TOrder(Items.Objects[ItemIndex]).ParentID)>0 then
+    begin
+      SigItems.EnableSettings(ItemIndex, checked[ItemIndex]);
+      updateAllChilds(checked[ItemIndex],TOrder(Items.Objects[ItemIndex]).ParentID);
+    end else
+      SigItems.EnableSettings(ItemIndex, checked[ItemIndex]);
+  end;
+  if ItemsAreChecked then
+  begin
+     lblESCode.Visible := IsSignatureRequired;
+     txtESCode.Visible := IsSignatureRequired
+  end
+  else
+  begin
+    lblESCode.Visible := ItemsAreChecked;
+    txtESCode.Visible := ItemsAreChecked;
+  end;
+end;
+
+function TfrmSignOrders.ItemsAreChecked: Boolean;
+{ return true if any items in the Review List are checked for applying signature }
+var
+  i: Integer;
+begin
+  Result := False;
+
+  with clstOrders do
+     for i := 0 to Items.Count - 1 do
+        if Checked[i] then
+           begin
+             Result := True;
+             break;
+           end;
+end;
+
+procedure TfrmSignOrders.clstOrdersMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+var
+  Itm: integer;
+{Begin BillingAware}
+  thisRec: UBAGlobals.TBADxRecord;
+  i: smallint;
+  thisOrderID: string;
+{End BillingAware}
+begin
+  inherited;
+  Itm := clstOrders.ItemAtPos(Point(X, Y), TRUE);
+  if (Itm >= 0) then
+  begin
+    if (Itm <> FLastHintItem) then
+    begin
+      Application.CancelHint;
+   {Begin BillingAware}
+    if  BILLING_AWARE then
+    begin
+       //Billing Awareness 'flyover' hint includes Dx code(s) when Dx code(s) have been assigned to an order
+           thisOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[Itm]).ID;
+
+           if UBAGlobals.tempDxNodeExists(thisOrderID) then
+                 begin
+                 if Assigned(tempDxList) then
+                 try
+                      for i := 0 to (tempDxList.Count - 1) do
+                         begin
+                           thisRec := TBADxRecord(tempDxList.Items[i]);
+
+                          if Assigned(thisRec) then
+                            if (thisRec.FOrderID = thisOrderID) then
+                                begin
+                                with thisRec do
+                                   begin
+                                      FBADxCode := StringReplace(thisrec.FBADxCode,'^',':',[rfReplaceAll]);
+                                      FBASecDx1 := StringReplace(thisrec.FBASecDx1,'^',':',[rfReplaceAll]);
+                                      FBASecDx2 := StringReplace(thisrec.FBASecDx2,'^',':',[rfReplaceAll]);;
+                                      FBASecDx3 := StringReplace(thisrec.FBASecDx3,'^',':',[rfReplaceAll]);
+                                   end;
+
+                                clstOrders.Hint := TrimRight(clstOrders.Items[Itm] + #13 +
+                                                             thisRec.FBADxCode + #13 + thisRec.FBASecDx1 + #13 + thisRec.FBASecDx2 + #13 + thisRec.FBASecDx3);
+                                end
+                          end
+                 except
+                    on EListError do
+                       begin
+                       {$ifdef debug}Show508Message('EListError in frmSignOrders.clstOrdersMouseMove()');{$endif}
+                       raise;
+                       end;
+                 end;
+
+                 end
+           else
+               clstOrders.Hint := TrimRight(clstOrders.Items[Itm]);
+  end;
+  {End BillingAware}
+    FLastHintItem := Itm;
+    Application.ActivateHint(Point(X, Y));
+   end;
+  end
+  else
+  begin
+    clstOrders.Hint := '';
+    FLastHintItem := -1;
+    Application.CancelHint;
+  end;
+end;
+
+procedure TfrmSignOrders.FormShow(Sender: TObject);
+begin
+{Begin BillingAware}
+
+  if (clstOrders.Top + clstOrders.Height) > (lblESCode.Top - 4) then
+      clstOrders.Height := lblESCode.Top - clstOrders.Top - 4;
+
+  //INITIALIZATIONS
+  Paste1.Enabled := false;
+  fOrdersSign.srcOrderID := '';
+  fOrdersSign.srcDx := '';
+  if txtESCode.Visible then
+     frmSignOrders.txtESCode.SetFocus;
+
+    if  BILLING_AWARE then
+       begin
+         //List to contain loading OrderID's
+        if not Assigned(UBAGlobals.OrderIDList) then
+           UBAGlobals.OrderIDList := TStringList.Create;
+
+        if  BILLING_AWARE then
+           clstOrders.Multiselect := true;
+
+         with fraCoPay do
+           begin
+            lblSC2.Caption := 'Service &Connected Condition';
+            lblCV2.Caption := 'Combat &Vet (Combat Related)';
+            lblAO2.Caption := 'Agent &Orange Exposure';
+            lblIR2.Caption := 'Ionizing &Radiation Exposure';
+            lblSWAC2.Caption := '&Environmental Contaminants';
+            lblMST2.Caption := '&MST';
+            lblHNC2.Caption := '&Head and/or Neck Cancer';
+            lblSHAD2.Caption := 'Shi&pboard Hazard and Defense';
+            lblSC2.ShowAccelChar := true;
+            lblCV2.ShowAccelChar := true;
+            lblAO2.ShowAccelChar := true;
+            lblIR2.ShowAccelChar := true;
+            lblSWAC2.ShowAccelChar := true;
+            lblMST2.ShowAccelChar := true;
+            lblHNC2.ShowAccelChar := true;
+            lblSHAD2.ShowAccelChar := true;
+           end;
+        end;  //BILLING_AWARE
+
+  clstOrders.TabOrder := 0; //CQ5057
+  FormatListForScreenReader;
+
+  //CQ5172
+  if clstOrders.Count = 1 then
+  begin
+     clstOrders.Selected[0] := true;
+     buOrdersDiagnosis.Enabled := True;
+     Diagnosis1.Enabled := True;
+     // if number of orders is 1 and order is billable select order and disable diagnosis button
+     if NOT UBACore.IsOrderBillable(TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[0]).ID) then
+     begin
+        buOrdersDiagnosis.Enabled := False;
+        Diagnosis1.Enabled := False;
+        clstOrders.Selected[0] := False;
+     end
+     else
+        if Piece(TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[0]).ID,';',2) = DISCONTINUED_ORDER then
+        begin
+           buOrdersDiagnosis.Enabled := False;
+           Diagnosis1.Enabled := False;
+        end;
+  end;
+ //end CQ5172
+end;
+
+ {Begin BillingAware}
+ //   New BA Button....
+procedure TfrmSignOrders.buOrdersDiagnosisClick(Sender: TObject);
+var
+  i: smallint;
+  thisOrderID: string;
+  match: boolean;
+  allBlank: boolean;
+  numSelected: smallint;
+begin
+{Begin BillingAware}
+
+  match := false;
+  allBlank := false;
+  if Assigned (orderIDList) then orderIDList.Clear;
+  if Assigned(UBAGlobals.PLFactorsIndexes) then UBAGlobals.PLFactorsIndexes.Clear;
+  if Assigned (BAtmpOrderList) then BAtmpOrderList.Clear;
+
+   try
+     // User has selected no orders to sign
+        for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
+           begin
+            if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+               begin
+               thisOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
+               orderIDList.Add(thisOrderID);
+               {BAV25 Code}
+               BAtmpOrderList.Add(TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).TEXT);
+               // stringlist holding index and stsFactors
+               UBAGlobals.PLFactorsIndexes.Add(IntToStr(i)+ U + GetCheckBoxStatus(thisOrderID) );  // store indexes and flags of selected orders
+               {BAV25 Code}
+               // Test for blank Dx on current grid item
+                if not (tempDxNodeExists(thisOrderID)) then
+                   if Assigned(UBAGlobals.globalDxRec) then
+                   InitializeNewDxRec(UBAGlobals.globalDxRec);
+               if (tempDxNodeExists(thisOrderID)) then
+               begin
+                   // Create UBAGlobals.globalDxRec with loaded fields
+                  if not Assigned(UBAGlobals.globalDxRec) then
+                     begin
+                        UBAGlobals.globalDxRec := UBAGlobals.TBADxRecord.Create;
+                        InitializeNewDxRec(UBAGlobals.globalDxRec);
+                        GetBADxListForOrder(UBAGlobals.globalDxRec, thisOrderID);
+                     end
+                 else
+                    GetBADxListForOrder(UBAGlobals.globalDxRec, thisOrderID);
+
+                 {$ifdef debug}
+                 with UBAGlobals.globalDxRec do
+                    //Show508Message('globalDxRec:'+#13+FOrderID+#13+FBADxCode+#13+FBASecDx1+#13+FBASecDx2+#13+FBASecDx3);
+                 {$endif}
+                  end;
+           end; //if
+        end; //for
+     except
+        on E: Exception  do
+           ShowMsg(E.ClassName+' error raised, with message : '+E.Message);
+   end;
+
+  numSelected  := CountSelectedOrders(UBAConst.F_ORDERS_SIGN);
+  
+  if numSelected = 0 then
+     begin
+     ShowMsg(UBAMessages.BA_NO_ORDERS_SELECTED);
+     Exit;
+     end
+  else
+     if numSelected = 1 then
+        match := true;
+
+  if (UBAGlobals.CompareOrderDx(UBAConst.F_ORDERS_SIGN)) then
+     match := true;
+
+
+  if UBAGlobals.AllSelectedDxBlank(UBAConst.F_ORDERS_SIGN) then
+     allBlank := true;
+
+  if ((match and allBlank) or (match and (not allBlank))) then  // All selected are blank or matching-not-blank
+        frmBALocalDiagnoses.Enter(UBAConst.F_ORDERS_SIGN, orderIDList)
+   else
+     begin
+     //Warning message
+     //If 'Yes' on warning message then open localDiagnosis
+     if (not allBlank) then
+         if MessageDlg(UBAMessages.BA_CONFIRM_DX_OVERWRITE, mtConfirmation, [mbYes, mbNo], 0) = mrNo then
+              Exit
+         else
+              if Assigned(UBAGlobals.globalDxRec) then
+                 InitializeNewDxRec(UBAGlobals.globalDxRec);
+              frmBALocalDiagnoses.Enter(UBAConst.F_ORDERS_SIGN, orderIDList);
+     end;
+ // TFactors come from FBALocalDiagnoses(Problem List Dx's Only).
+    if Length(UBAGlobals.TFactors) > 0 then
+    begin
+       UBACore.SetTreatmentFactors(UBAGlobals.TFactors);
+       SigItems.DisplayPlTreatmentFactors;
+    end;
+ {End BillingAware}
+ txtESCode.SetFocus;
+end;
+
+procedure TfrmSignOrders.Exit1Click(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmSignOrders.Copy1Click(Sender: TObject);
+{
+   - Copy contents of the 'source' order for copy/paste operation
+}
+var
+  i : byte;
+  numSelected: byte;
+  thisChangeItem: TChangeItem;
+begin
+   try
+     if BILLING_AWARE then
+        begin
+        Paste1.Enabled := true;
+
+         numSelected := GetNumberOfSelectedOrders;
+
+         if numSelected > 1 then
+           begin
+           ShowMsg('Only 1 order at a time may be selected for ''Copying''');
+           Exit;
+           end;
+
+         for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Items.Count-1 do
+             if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+               begin
+               thisChangeItem := TChangeItem.Create;
+               thisChangeItem := nil;
+               thisChangeItem := TChangeItem(clstOrders.Items.Objects[i]);
+               //Skip this one if it's a "header" on the grid
+                 if (thisChangeItem = nil) then //or (thisChangeItem.ItemType <> CH_ORD)) then
+                    begin
+                    FreeAndNil(thisChangeItem);
+                    Exit;
+                    end;
+
+               fOrdersSign.srcOrderID := TChangeItem(frmSignOrders.clstOrders.Items.Objects[i]).ID;
+
+               //Copy source order to COPY BUFFER and add it to the Dx List
+               CopyBuffer := TBADxRecord.Create;
+               InitializeNewDxRec(CopyBuffer);
+               GetBADxListForOrder(CopyBuffer, fOrdersSign.srcOrderID);
+               fOrdersSign.CopyBuffer.FOrderID := BUFFER_ORDER_ID;
+               UBAGlobals.tempDxList.Add(CopyBuffer);
+
+               //*************************************************************************
+               if (NOT UBACore.IsOrderBillable(fOrdersSign.srcOrderID) ) then //and
+               // added to allow copy to NON CIDC consult order the requires a DX. then
+                 begin
+                   ShowMsg(BA_NA_COPY_DISALLOWED);
+                   fOrdersSign.srcOrderID := '';
+                   Exit;
+                 end;
+               //*************************************************************************
+
+               fOrdersSign.srcIndex := clstOrders.ItemIndex;
+               fOrdersSign.chkBoxStatus := GetCheckBoxStatus(fOrdersSign.srcOrderID);
+               Break;
+               end;
+         end; //if BILLING_AWARE
+   except
+     on EListError do
+        begin
+          ShowMsg('EListError in frmSignOrders.Copy1Click()');
+        raise;
+        end;
+   end;
+end;
+
+procedure TfrmSignOrders.Paste1Click(Sender: TObject);
+{
+ - Populate 'target' orders of a copy/paste operation with contents of 'source' order
+}  
+var
+  i: byte;
+  newRec: TBADxRecord;
+begin
+  if BILLING_AWARE then
+     begin
+      if not Assigned(fOrdersSign.CopyBuffer) then //CQ5414
+        fOrdersSign.CopyBuffer := TBADxRecord.Create; //CQ5414
+
+     try
+         for i := 0 to clstOrders.Count - 1 do
+               begin
+               if (fOrdersSign.frmSignOrders.clstOrders.Selected[i]) then
+                 begin
+                   fOrdersSign.targetOrderID := TChangeItem(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).ID;
+
+                  if fOrdersSign.targetOrderID = fOrdersSign.srcOrderID then //disallow copying an order to itself
+                     Continue
+                  else
+                     begin
+                       fOrdersSign.CopyBuffer.FOrderID := BUFFER_ORDER_ID;
+
+                     //***************************************************************
+                     if Not UBACore.IsOrderBillable(targetOrderID) then
+                       begin
+                         ShowMsg(BA_NA_PASTE_DISALLOWED);
+                         fOrdersSign.targetOrderID := '';
+                         Continue;
+                       end;
+                     //***************************************************************
+
+                     newRec := TBADxRecord.Create;
+                     with newRec do
+                       begin
+                         FOrderID :=  fOrdersSign.targetOrderID;
+                         FBADxCode := CopyBuffer.FBADxCode;
+                         FBASecDx1 := CopyBuffer.FBASecDx1;
+                         FBASecDx2 := CopyBuffer.FBASecDx2;
+                         FBASecDx3 := CopyBuffer.FBASecDx3;
+                       end;
+
+                    tempDxList.Add(newRec);
+
+                    CopyTFCIToTargetOrder( fOrdersSign.targetOrderID, fOrdersSign.chkBoxStatus);
+                    SetCheckBoxStatus( fOrdersSign.targetOrderID);  //calls uSignItems.SetSigItems()
+                  end;
+                 end;
+               end;
+     except
+        on EListError do
+           begin
+             ShowMsg('EListError in frmSignOrders.Paste1Click()'+#13+'for i := 0 to clstOrders.Count - 1 do');
+           raise;
+           end;
+     end;
+         clstOrders.Refresh; //Update grid to show pasted Dx
+     end;
+end;
+
+procedure TfrmSignOrders.clstOrdersMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+{
+ - Open copy/paste popup menu.
+}
+var
+  ClientPoint: TPoint;
+  ScreenPoint: TPoint;
+begin
+  if not BILLING_AWARE then clstOrders.PopupMenu := nil;
+  
+  if BILLING_AWARE then
+     begin
+     try
+        if Button = mbRight then  //Right-click to open copy/paste popup menu
+           begin
+           //CQ3325
+           if fOrdersSign.frmSignOrders.clstOrders.Items.Count = 1 then
+              begin
+                Copy1.Enabled := false;
+                Paste1.Enabled := false
+              end
+           else
+              begin
+                Copy1.Enabled := true;
+              end;
+           //End CQ3325
+
+           if not frmSignOrders.clstOrders.Selected[clstOrders.ItemIndex] then
+              (Sender as TCheckListBox).Selected[clstOrders.ItemIndex] := true;
+
+           ClientPoint.X := X;
+           ClientPoint.Y := Y;
+           ScreenPoint := clstOrders.ClientToScreen(ClientPoint);
+           poBACopyPaste.Popup(ScreenPoint.X, ScreenPoint.Y);
+           end;
+     except
+        on EListError do
+           begin
+             ShowMsg('EListError in frmSignOrders.clstOrdersMouseDown()');
+           raise;
+           end;
+     end;
+     end;
+end;
+
+
+procedure TfrmSignOrders.clstOrdersClick(Sender: TObject);
+//If grid item is an order-able item, then enable the Diagnosis button
+// else disable the Diagnosis button.
+var
+  thisChangeItem: TChangeItem;
+  i: smallint;
+  thisOrderList: TStringList;
+begin
+  thisOrderList := TStringList.Create;
+
+ {Begin BillingAware}
+ if  BILLING_AWARE then
+ begin
+
+ if clstOrders.Items.Count > 1 then
+        copy1.Enabled := True
+     else
+        copy1.Enabled := False;
+
+     for i := 0 to clstOrders.Items.Count - 1 do
+        begin
+           if clstOrders.Selected[i] then
+              begin
+                thisChangeItem := TChangeItem(clstOrders.Items.Objects[i]);
+
+                //Disallow copying of a grid HEADER item on LEFT MOUSE CLICK
+              if thisChangeItem = nil then
+                 begin
+                   Copy1.Enabled := false;
+                   buOrdersDiagnosis.Enabled := false;
+                   Exit;
+                 end;
+
+              if (thisChangeItem <> nil) then //Blank row - not an order item
+                 begin
+                   thisOrderList.Clear;
+                   thisOrderList.Add(thisChangeItem.ID);
+
+                   if IsAllOrdersNA(thisOrderList) then
+                   begin
+                     Diagnosis1.Enabled := false;
+                     buOrdersDiagnosis.Enabled := false;
+                  end
+                 else
+                 begin
+                    Diagnosis1.Enabled := true;
+                    buOrdersDiagnosis.Enabled := true;
+                 end
+              end
+              else
+              begin
+                 buOrdersDiagnosis.Enabled := false;
+                 Diagnosis1.Enabled := False;
+                 Break;
+              end;
+           end;
+        end;
+
+  if Assigned(thisOrderList) then thisOrderList.Free;
+  end;        
+end;
+
+procedure TfrmSignOrders.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+var
+  j: integer; //CQ5054
+begin
+  inherited;
+  if FOSTFHintWndActive then
+  begin
+    FOSTFhintWindow.ReleaseHandle ;
+    FOSTFHintWndActive := False ;
+  end;
+
+  case Key of
+     67,99:  if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorSC,fraCoPay.lblSC2); //C,c
+     86,118: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorCV,fraCoPay.lblCV2); //V,v
+     79,111: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorAO,fraCoPay.lblAO2); //O,o
+     82,114: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorIR,fraCoPay.lblIR2); //R,r
+     65,97:  if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorEC,fraCoPay.lblSWAC2); //A,a
+     77,109: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorMST,fraCoPay.lblMST2); //M,m
+     78,110: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorHNC,fraCoPay.lblHNC2); //N,n
+     72,104: if (ssALT in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorSHAD,fraCopay.lblSHAD2); // H,h
+     //CQ5054
+     83,115: if (ssAlt in Shift) then
+          begin
+            for j := 0 to clstOrders.Items.Count-1 do
+                clstOrders.Selected[j] := false;
+            clstOrders.Selected[0] := true;
+            clstOrders.SetFocus;
+          end;
+     //end CQ5054
+  end;
+end;
+
+//BILLING AWARE Procedure
+procedure TfrmSignOrders.ShowTreatmentFactorHints(var pHintText: string; var pCompName: TVA508StaticText); // 508
+var
+ HRect: TRect;
+ thisRect: TRect;
+ x,y: integer;
+
+begin
+  try
+     if FOSTFhintWndActive then
+        begin
+          FOSTFhintWindow.ReleaseHandle;
+          FOSTFhintWndActive := False;
+        end;
+  except
+     on E: Exception do
+        begin
+        {$ifdef debug}Show508Message('Unhandled exception in procedure TfrmSignOrders.ShowTreatmentFactorHints()');{$endif}
+        raise;
+        end;
+  end;
+
+  try
+      FOSTFhintWindow := THintWindow.Create(frmSignOrders);
+      FOSTFhintWindow.Color := clInfoBk;
+      GetWindowRect(pCompName.Handle,thisRect);
+      x := thisRect.Left;
+      y := thisRect.Top;
+      hrect := FOSTFhintWindow.CalcHintRect(Screen.Width, pHintText,nil);
+      hrect.Left   := hrect.Left + X;
+      hrect.Right  := hrect.Right + X;
+      hrect.Top    := hrect.Top + Y;
+      hrect.Bottom := hrect.Bottom + Y;
+
+      fraCoPay.LabelCaptionsOn(not FOSTFHintWndActive);
+
+      FOSTFhintWindow.ActivateHint(hrect, pHintText);
+      FOSTFHintWndActive := True;
+  except
+     on E: Exception do
+        begin
+        {$ifdef debug}Show508Message('Unhandled exception in procedure TfrmSignOrders.ShowTreatmentFactorHints()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+procedure TfrmSignOrders.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+begin
+   try
+      if FOSTFhintWndActive then
+      begin
+         FOSTFhintWindow.ReleaseHandle;
+         FOSTFHintWndActive := False;
+         Application.ProcessMessages;
+      end;
+  except
+     on E: Exception do
+        begin
+        {$ifdef debug}Show508Message('Unhandled exception in procedure TfrmSignOrders.FormMouseMove()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+procedure TfrmSignOrders.FormResize(Sender: TObject);
+begin
+  inherited;
+  clstOrders.invalidate;
+end;
+
+procedure TfrmSignOrders.fraCoPaylblHNCMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+begin
+  fraCoPay.LabelCaptionsOn(not FOSTFHintWndActive)
+end;
+
+procedure TfrmSignOrders.fraCoPayLabel23Enter(Sender: TObject);
+begin
+    (Sender as TVA508StaticText).Font.Style := [fsBold];
+end;
+
+procedure TfrmSignOrders.fraCoPayLabel23Exit(Sender: TObject);
+begin
+    (Sender as TVA508StaticText).Font.Style := [];
+end;
+
+procedure TfrmSignOrders.SetItemTextToState;
+var
+  i : integer;
+begin
+  //The with statement below would cause access violations on other Delphi machines.
+  {  with clstOrders do
+    begin }
+  //Must use fully qualifying path includeing the unit... very wierd!
+
+  if fOrdersSign.frmSignOrders.clstOrders.Count < 1 then Exit;
+  for i := 0 to fOrdersSign.frmSignOrders.clstOrders.Count-1 do
+    if fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i] <> nil then //Not a Group Title
+    begin
+      if fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i] is TOrder then
+      if fOrdersSign.frmSignOrders.clstOrders.Checked[i] then
+        fOrdersSign.frmSignOrders.clstOrders.Items[i] := 'Checked '+TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).Text
+      else
+        fOrdersSign.frmSignOrders.clstOrders.Items[i] := 'Not Checked '+TOrder(fOrdersSign.frmSignOrders.clstOrders.Items.Objects[i]).Text;
+    end;
+  if fOrdersSign.frmSignOrders.clstOrders.ItemIndex >= 0 then
+    fOrdersSign.frmSignOrders.clstOrders.Selected[fOrdersSign.frmSignOrders.clstOrders.ItemIndex] := True;
+//    end;
+end;
+
+procedure TfrmSignOrders.clstOrdersKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (Key = VK_Space) then
+    FormatListForScreenReader
+end;
+
+procedure TfrmSignOrders.FormatListForScreenReader;
+begin
+  if ScreenReaderActive then
+    SetItemTextToState;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersTS.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersTS.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersTS.dfm	(revision 1676)
@@ -0,0 +1,264 @@
+inherited frmOrdersTS: TfrmOrdersTS
+  Left = 84
+  Top = 77
+  Caption = 'Release Orders'
+  ClientHeight = 351
+  ClientWidth = 456
+  Constraints.MinHeight = 365
+  Constraints.MinWidth = 310
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitLeft = 84
+  ExplicitTop = 77
+  ExplicitWidth = 464
+  ExplicitHeight = 385
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlMiddle: TPanel [0]
+    Left = 0
+    Top = 78
+    Width = 456
+    Height = 56
+    Align = alTop
+    Constraints.MinHeight = 45
+    TabOrder = 0
+    object grpChoice: TGroupBox
+      Left = 1
+      Top = 1
+      Width = 454
+      Height = 54
+      Align = alClient
+      Constraints.MinHeight = 45
+      TabOrder = 0
+      DesignSize = (
+        454
+        54)
+      object radReleaseNow: TRadioButton
+        Left = 20
+        Top = 13
+        Width = 333
+        Height = 17
+        Caption = '  &Release new orders immediately'
+        Enabled = False
+        TabOrder = 0
+        OnClick = radReleaseNowClick
+      end
+      object radDelayed: TRadioButton
+        Left = 20
+        Top = 29
+        Width = 329
+        Height = 21
+        Caption = '  &Delay release of new order(s) until'
+        TabOrder = 1
+        OnClick = radDelayedClick
+      end
+      object cmdOK: TButton
+        Left = 355
+        Top = 9
+        Width = 75
+        Height = 20
+        Anchors = [akRight, akBottom]
+        Caption = 'OK'
+        Default = True
+        TabOrder = 2
+        OnClick = cmdOKClick
+      end
+      object cmdCancel: TButton
+        Left = 355
+        Top = 31
+        Width = 75
+        Height = 20
+        Anchors = [akRight, akBottom]
+        Cancel = True
+        Caption = 'Cancel'
+        TabOrder = 3
+        OnClick = cmdCancelClick
+      end
+    end
+  end
+  object pnlTop: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 456
+    Height = 78
+    Align = alTop
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    AutoSize = True
+    BorderStyle = bsSingle
+    TabOrder = 1
+    object lblPtInfo: TLabel
+      Left = 1
+      Top = 1
+      Width = 3
+      Height = 34
+      Align = alTop
+      Color = clBtnFace
+      Constraints.MinHeight = 34
+      ParentColor = False
+      Layout = tlCenter
+    end
+    object pnldif: TPanel
+      Left = 1
+      Top = 35
+      Width = 450
+      Height = 38
+      Align = alTop
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      TabOrder = 0
+      object Image1: TImage
+        Left = 1
+        Top = 1
+        Width = 24
+        Height = 22
+        Align = alLeft
+        AutoSize = True
+        Enabled = False
+        Picture.Data = {
+          07544269746D61707E010000424D7E0100000000000076000000280000001800
+          000016000000010004000000000008010000C40E0000C40E0000100000000000
+          0000000000000000800000800000008080008000000080008000808000008080
+          8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+          FF008000000000000000000000080777777777777777777777700F7777777777
+          7777777777700F88888888888888888887700F88888888888888888887700F88
+          888808888888888887700F88888800888888888887700F8888880B0888888888
+          87700F8888880BB00008888887700F888800BBCCBBB0088887700F8880BBBCCC
+          CBBBB08887700F880BBBBBBBBBBBBB0887700F880BBBBBCCBBBBBB0887700F88
+          0BBBBBCCBBBBBB0887700F880BBBBBCCBBBBBB0887700F8880BBBBCCBBBBB088
+          87700F888800BBBBBBB0088887700F88888800000008888887700F8888888888
+          8888888887700F88888888888888888887700FFFFFFFFFFFFFFFFFFFFF708000
+          00000000000000000008}
+        Transparent = True
+        ExplicitHeight = 36
+      end
+      object Label1: TLabel
+        Left = 34
+        Top = 4
+        Width = 327
+        Height = 13
+        Caption = 
+          'Use Admit: if patient is newly admitted to the hospital or nursi' +
+          'ng home.'
+      end
+      object Label2: TLabel
+        Left = 34
+        Top = 21
+        Width = 361
+        Height = 13
+        Caption = 
+          'Use Transfer: if inpatient will move from one ward or treating t' +
+          'eam to another.'
+      end
+    end
+  end
+  object Panel1: TPanel [2]
+    Left = 0
+    Top = 134
+    Width = 456
+    Height = 217
+    Align = alClient
+    TabOrder = 2
+    inline fraEvntDelayList: TfraEvntDelayList
+      Left = 1
+      Top = 1
+      Width = 454
+      Height = 215
+      Align = alClient
+      AutoScroll = True
+      TabOrder = 0
+      TabStop = True
+      Visible = False
+      ExplicitLeft = 1
+      ExplicitTop = 1
+      ExplicitWidth = 454
+      ExplicitHeight = 215
+      inherited pnlDate: TPanel
+        Left = 349
+        Height = 215
+        ExplicitLeft = 349
+        ExplicitHeight = 215
+        inherited lblEffective: TLabel
+          Left = 453
+          Width = 71
+          ExplicitLeft = 453
+          ExplicitWidth = 71
+        end
+        inherited orDateBox: TORDateBox
+          Left = 453
+          ExplicitLeft = 453
+        end
+      end
+      inherited pnlList: TPanel
+        Width = 349
+        Height = 215
+        ExplicitWidth = 349
+        ExplicitHeight = 215
+        inherited lblEvntDelayList: TLabel
+          Width = 347
+          ExplicitWidth = 80
+        end
+        inherited mlstEvents: TORListBox
+          Width = 347
+          Height = 179
+          OnDblClick = cmdOKClick
+          ExplicitWidth = 347
+          ExplicitHeight = 179
+        end
+        inherited edtSearch: TCaptionEdit
+          Width = 347
+          ExplicitWidth = 347
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = grpChoice'
+        'Status = stsDefault')
+      (
+        'Component = radReleaseNow'
+        'Status = stsDefault')
+      (
+        'Component = radDelayed'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnldif'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.pnlDate'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.orDateBox'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.pnlList'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.mlstEvents'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.edtSearch'
+        'Status = stsDefault')
+      (
+        'Component = frmOrdersTS'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersTS.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersTS.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersTS.pas	(revision 1676)
@@ -0,0 +1,296 @@
+unit fOrdersTS;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORCtrls, ORFn, ExtCtrls, rOrders, ORDtTm, mEvntDelay,uConst,
+  VA508AccessibilityManager;
+
+type
+  TfrmOrdersTS = class(TfrmAutoSz)
+    pnlMiddle: TPanel;
+    pnlTop: TPanel;
+    lblPtInfo: TLabel;
+    grpChoice: TGroupBox;
+    radReleaseNow: TRadioButton;
+    radDelayed: TRadioButton;
+    pnldif: TPanel;
+    Image1: TImage;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    Label1: TLabel;
+    Label2: TLabel;
+    Panel1: TPanel;
+    fraEvntDelayList: TfraEvntDelayList;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure radDelayedClick(Sender: TObject);
+    procedure radReleaseNowClick(Sender: TObject);
+    procedure fraEvntDelayListcboEvntListChange(Sender: TObject);
+    procedure UMStillDelay(var message: TMessage); message UM_STILLDELAY;
+    procedure fraEvntDelayListmlstEventsDblClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure fraEvntDelayListmlstEventsChange(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    OKPressed: Boolean;
+    FResult  : Boolean;
+    FImmediatelyRelease: boolean;
+    FCurrSpecialty: string;
+    F1stClick: Boolean;
+  end;
+
+function ShowDelayedEventsTreatingSepecialty(const ARadCaption: string; var AnEvent: TOrderDelayEvent;
+ var ADlgLst: TStringlist; var ReleaseNow: boolean; AnLimitEvent: Char = #0): Boolean;
+
+var
+  frmOrdersTS: TfrmOrdersTS;
+
+implementation
+
+uses ucore,fOrders, rMisc;
+
+{$R *.DFM}
+
+const
+  TX_TRANSFER1= 'You selected the Transfer delayed event';
+  TX_TRANSFER = 'The release of orders entered ' +
+                'will be delayed until the patient is transferred to the ' +
+                'following specialty.';
+  TX_ADMIT1   = 'You selected the Admit delayed event';
+  TX_ADMIT    = 'The release of orders entered ' +
+                'will be delayed until the patient is admitted to the ' +
+                'following specialty.';
+  TX_XISTEVT1 = 'Delayed orders already exist for event Delayed ';
+  TX_XISTEVT2 = #13 + 'Do you want to view those orders?';
+  TX_MCHEVT1  = ' is already assigned to ';
+  TX_MCHEVT2  = #13 + 'Do you still want to write delayed orders?';
+
+
+function ShowDelayedEventsTreatingSepecialty(const ARadCaption: string; var AnEvent: TOrderDelayEvent;
+ var ADlgLst: TStringlist; var ReleaseNow: boolean; AnLimitEvent: Char = #0): Boolean;
+var
+  EvtInfo,speCap: string;
+begin
+  frmOrdersTS := TfrmOrdersTS.Create(Application);
+  frmOrdersTS.FCurrSpecialty := Piece(GetCurrentSpec(Patient.DFN),'^',1);
+  frmOrdersTS.fraEvntDelayList.UserDefaultEvent := StrToIntDef(GetDefaultEvt(IntToStr(User.DUZ)),0);
+  SetFormPosition(frmOrdersTS);
+  //frmOrdersTs.fraEvntDelayList.Top := frmOrdersTS.Height -
+  Result := frmOrdersTS.FResult;
+  if Length(ARadCapTion)>0 then
+    frmOrdersTS.radDelayed.Caption := ARadCaption;
+  try
+    ResizeFormToFont(TForm(frmOrdersTS));
+    if Length(frmOrdersTS.FCurrSpecialty)>0 then
+      SpeCap := #13 + 'The current treating specialty is ' + frmOrdersTS.FCurrSpecialty
+    else
+      SpeCap := #13 + 'No treating specialty is available.';
+    if Patient.Inpatient then
+      frmOrdersTS.lblPtInfo.Caption := Patient.Name + ' is currently admitted to ' + Encounter.LocationName + SpeCap
+    else
+    begin
+      if (EnCounter.Location > 0) then
+        frmOrdersTS.lblPtInfo.Caption := Patient.Name + ' is currently on ' + Encounter.LocationName + SpeCap
+      else
+        frmOrdersTS.lblPtInfo.Caption := Patient.Name + ' currently is an outpatient.' + SpeCap;
+    end;
+    if not (AnLimitEvent in ['A','D','T','M','O']) then
+      AnLimitEvent := #0;
+    frmOrdersTs.fraEvntDelayList.EvntLimit := AnLimitEvent;
+    if AnEvent.EventIFN > 0 then
+    begin
+      frmOrdersTS.fraEvntDelayList.DefaultEvent := AnEvent.EventIFN;
+      frmOrdersTS.radDelayed.Checked := True;
+    end else
+    begin
+      frmOrdersTS.radReleaseNow.Enabled := True;
+      frmOrdersTS.radReleaseNow.Checked := False;
+      frmOrdersTS.radDelayed.Checked    := False;
+    end;
+    frmOrdersTS.radDelayed.Checked := True;
+    frmOrdersTS.ShowModal;
+    if frmOrdersTS.FImmediatelyRelease then
+    begin
+      AnEvent.EventIFN  := 0;
+      AnEvent.EventName := '';
+      AnEvent.Specialty := 0;
+      AnEvent.Effective := 0;
+      ReleaseNow := frmOrdersTS.FImmediatelyRelease;
+      Result := frmOrdersTS.FResult;
+    end;
+    if (frmOrdersTS.OKPressed) and (frmOrdersTS.radDelayed.Checked) then
+    begin
+      EvtInfo := frmOrdersTS.fraEvntDelayList.mlstEvents.Items[frmOrdersTS.fraEvntDelayList.mlstEvents.ItemIndex];
+      AnEvent.EventType := CharAt(Piece(EvtInfo,'^',3),1);
+      AnEvent.EventIFN  := StrToInt64Def(Piece(EvtInfo,'^',1),0);
+      AnEvent.TheParent := TParentEvent.Create;
+      if StrToInt64Def(Piece(EvtInfo,'^',13),0) > 0 then
+      begin
+        AnEvent.TheParent.Assign(Piece(EvtInfo,'^',13));
+        if AnEvent.EventType = #0 then
+          AnEvent.EventType := AnEvent.TheParent.ParentType;
+      end;
+      AnEvent.EventName := frmOrdersTS.fraEvntDelayList.mlstEvents.DisplayText[frmOrdersTS.fraEvntDelayList.mlstEvents.ItemIndex];
+      AnEvent.Specialty := 0;
+      if frmOrdersTS.fraEvntDelayList.orDateBox.Visible then
+        AnEvent.Effective := frmOrdersTS.fraEvntDelayList.orDateBox.FMDateTime
+      else
+        AnEvent.Effective := 0;
+      ADlgLst.Clear;
+      if StrToIntDef(AnEvent.TheParent.ParentDlg,0)>0 then
+        ADlgLst.Add(AnEvent.TheParent.ParentDlg)
+      else if Length(Piece(EvtInfo,'^',5))>0 then
+        ADlgLst.Add(Piece(EvtInfo,'^',5));
+      if Length(Piece(EvtInfo,'^',6))>0 then
+        ADlgLst.Add(Piece(EvtInfo,'^',6)+ '^SET');
+      Result := frmOrdersTS.FResult;
+    end;
+  finally
+    frmOrdersTS.Release;
+    frmOrdersTS.FImmediatelyRelease := False;
+    frmOrdersTS.FCurrSpecialty := '';
+    frmOrdersTS.fraEvntDelayList.ResetProperty;
+  end;
+end;
+
+procedure TfrmOrdersTS.FormCreate(Sender: TObject);
+begin
+  inherited;
+  if not Patient.Inpatient then
+    pnldif.Visible  := False;
+  OKPressed           := False;
+  FResult             := False;
+  FImmediatelyRelease := False;
+  F1stClick           := True;
+  FCurrSpecialty      := '';
+end;
+
+procedure TfrmOrdersTS.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  if grpChoice.Tag = 0 then
+  begin
+    InfoBox('A release event has not been selected.', 'No Selection Made', MB_OK);
+    Exit;
+  end;
+  if( not (fraEvntDelayList.mlstEvents.ItemIndex >= 0) ) and (radDelayed.Checked) then
+  begin
+    InfoBox('A release event must be selected.', 'No Selection Made', MB_OK);
+    Exit;
+  end;
+  if (fraEvntDelayList.mlstEvents.ItemIndex >= 0) and F1stClick then
+  begin
+    fraEvntDelayList.CheckMatch;
+    if fraEvntDelayList.MatchedCancel then
+    begin
+      OKPressed := False;
+      Close;
+      Exit;
+    end;
+  end;
+  OKPressed := True;
+  FResult   := True;
+  Close;
+end;
+
+procedure TfrmOrdersTS.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FResult  := False;
+  Close;
+end;
+
+procedure TfrmOrdersTS.radDelayedClick(Sender: TObject);
+begin
+  inherited;
+  fraEvntDelayList.Visible := True;
+  fraEvntDelayList.DisplayEvntDelayList;
+  grpChoice.Tag := 1;
+end;
+
+procedure TfrmOrdersTS.radReleaseNowClick(Sender: TObject);
+begin
+  inherited;
+  grpChoice.Tag := 1;
+  if InfoBox('Would you like to close this window and return to the Orders Tab?',
+        'Confirmation', MB_OKCANCEL or MB_ICONQUESTION) = IDOK then
+  begin
+    FImmediatelyRelease := True;
+    FResult             := False;
+    Close;
+  end
+  else
+  begin
+    fraEvntDelayList.mlstEvents.Items.Clear;
+    FImmediatelyRelease   := False;
+    radReleaseNow.Checked := False;
+    radDelayed.Checked    := True;
+  end;
+end;
+
+procedure TfrmOrdersTS.fraEvntDelayListcboEvntListChange(Sender: TObject);
+begin
+  inherited;
+  fraEvntDelayList.mlstEventsChange(Sender);
+  F1stClick   := False;
+  if fraEvntDelayList.MatchedCancel then  Close
+end;
+
+procedure TfrmOrdersTS.UMStillDelay(var message: TMessage);
+begin
+  inherited;
+  if grpChoice.Tag = 0 then
+  begin
+    InfoBox('A release event has not been selected.', 'No Selection Made', MB_OK);
+    Exit;
+  end;
+  if(not (fraEvntDelayList.mlstEvents.ItemIndex >= 0)) and (radDelayed.Checked) then
+  begin
+    InfoBox('A release event must be selected.', 'No Selection Made', MB_OK);
+    Exit;
+  end;
+  OKPressed := True;
+  FResult   := True;
+  Close;
+end;
+
+procedure TfrmOrdersTS.fraEvntDelayListmlstEventsDblClick(Sender: TObject);
+begin
+  inherited;
+  if fraEvntDelayList.mlstEvents.ItemID > 0 then
+    cmdOKClick(Self);
+end;
+
+procedure TfrmOrdersTS.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+  Action := caFree;
+end;
+
+procedure TfrmOrdersTS.fraEvntDelayListmlstEventsChange(Sender: TObject);
+begin
+  inherited;
+  fraEvntDelayList.mlstEventsChange(Sender);
+  if fraEvntDelayList.MatchedCancel then
+  begin
+    OKPressed := False;
+    Close;
+    Exit;
+  end;
+end;
+
+procedure TfrmOrdersTS.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then
+     cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersUnhold.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersUnhold.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersUnhold.dfm	(revision 1676)
@@ -0,0 +1,63 @@
+inherited frmUnholdOrders: TfrmUnholdOrders
+  Left = 269
+  Top = 192
+  Caption = 'Release Orders from Hold'
+  ClientHeight = 243
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 270
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 222
+    Height = 13
+    Caption = 'The following orders will be released from hold -'
+  end
+  object lstOrders: TCaptionListBox [1]
+    Left = 8
+    Top = 22
+    Width = 411
+    Height = 176
+    ItemHeight = 13
+    TabOrder = 0
+    Caption = 'The following orders will be released from hold '
+  end
+  object cmdOK: TButton [2]
+    Left = 267
+    Top = 214
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 347
+    Top = 214
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmUnholdOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersUnhold.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersUnhold.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersUnhold.pas	(revision 1676)
@@ -0,0 +1,78 @@
+unit fOrdersUnhold;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmUnholdOrders = class(TfrmAutoSz)
+    Label1: TLabel;
+    lstOrders: TCaptionListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteUnholdOrders(SelectedList: TList): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rOrders, uConst, uCore;
+
+function ExecuteUnholdOrders(SelectedList: TList): Boolean;
+var
+  frmUnholdOrders: TfrmUnholdOrders;
+  OriginalID: string;
+  i: Integer;
+begin
+  Result := False;
+  if SelectedList.Count = 0 then Exit;
+  frmUnholdOrders := TfrmUnholdOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmUnholdOrders));
+    with SelectedList do for i := 0 to Count - 1 do
+      frmUnholdOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmUnholdOrders.ShowModal;
+    if frmUnholdOrders.OKPressed then
+    begin
+      with SelectedList do for i := 0 to Count - 1 do
+      begin
+        OriginalID := TOrder(Items[i]).ID;
+        ReleaseOrderHold(TOrder(Items[i]));
+      end;
+      Result := True;
+    end
+    else with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  finally
+    frmUnholdOrders.Release;
+  end;
+end;
+
+procedure TfrmUnholdOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmUnholdOrders.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmUnholdOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersVerify.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersVerify.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersVerify.dfm	(revision 1676)
@@ -0,0 +1,116 @@
+inherited frmVerifyOrders: TfrmVerifyOrders
+  Left = 341
+  Top = 182
+  Caption = 'Verify Orders'
+  ClientHeight = 340
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 367
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 427
+    Height = 293
+    Align = alClient
+    Constraints.MinHeight = 260
+    TabOrder = 1
+    OnResize = Panel1Resize
+    DesignSize = (
+      427
+      293)
+    object lblVerify: TLabel
+      Left = 1
+      Top = 1
+      Width = 425
+      Height = 13
+      Align = alTop
+      Caption = 'The following orders will be marked as verified -'
+      ExplicitWidth = 222
+    end
+    object lstOrders: TCaptionListBox
+      Left = 4
+      Top = 16
+      Width = 419
+      Height = 274
+      Style = lbOwnerDrawVariable
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      ItemHeight = 13
+      ScrollWidth = 409
+      TabOrder = 0
+      OnDrawItem = lstOrdersDrawItem
+      OnMeasureItem = lstOrdersMeasureItem
+      Caption = 'The following orders will be released from hold '
+    end
+  end
+  object Panel2: TPanel [1]
+    Left = 0
+    Top = 293
+    Width = 427
+    Height = 47
+    Align = alBottom
+    TabOrder = 0
+    object lblESCode: TLabel
+      Left = 8
+      Top = 4
+      Width = 123
+      Height = 13
+      Caption = 'Electronic Signature Code'
+    end
+    object txtESCode: TCaptionEdit
+      Left = 8
+      Top = 20
+      Width = 137
+      Height = 21
+      PasswordChar = '*'
+      TabOrder = 0
+      Caption = 'Electronic Signature Code'
+    end
+    object cmdOK: TButton
+      Left = 267
+      Top = 20
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 347
+      Top = 20
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = lstOrders'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = txtESCode'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmVerifyOrders'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersVerify.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersVerify.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOrdersVerify.pas	(revision 1676)
@@ -0,0 +1,166 @@
+unit fOrdersVerify;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmVerifyOrders = class(TfrmAutoSz)
+    Panel1: TPanel;
+    lblVerify: TLabel;
+    lstOrders: TCaptionListBox;
+    Panel2: TPanel;
+    lblESCode: TLabel;
+    txtESCode: TCaptionEdit;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstOrdersMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure lstOrdersDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure Panel1Resize(Sender: TObject);
+  private
+    OKPressed: Boolean;
+    ESCode: string;
+  end;
+
+function ExecuteVerifyOrders(SelectedList: TList; ChartReview: Boolean): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses Hash, rCore, rOrders;
+
+const
+  TX_CHART_REVIEW = 'The following orders will be marked as reviewed -';
+
+function ExecuteVerifyOrders(SelectedList: TList; ChartReview: Boolean): Boolean;
+var
+  frmVerifyOrders: TfrmVerifyOrders;
+  i: Integer;
+begin
+  Result := False;
+  if SelectedList.Count = 0 then Exit;
+  frmVerifyOrders := TfrmVerifyOrders.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmVerifyOrders));
+    if ChartReview then
+    begin
+      frmVerifyOrders.lblVerify.Caption := TX_CHART_REVIEW;
+      frmVerifyOrders.Caption := 'Chart Review';
+    end;
+    with SelectedList do for i := 0 to Count - 1 do
+      frmVerifyOrders.lstOrders.Items.Add(TOrder(Items[i]).Text);
+    frmVerifyOrders.ShowModal;
+    if frmVerifyOrders.OKPressed then
+    begin
+      with SelectedList do for i := 0 to Count - 1 do
+      begin
+        if ChartReview
+          then VerifyOrderChartReview(TOrder(Items[i]), frmVerifyOrders.ESCode)
+          else VerifyOrder(TOrder(Items[i]), frmVerifyOrders.ESCode);
+      end;
+      Result := True;
+    end;
+  finally
+    frmVerifyOrders.Release;
+    with SelectedList do for i := 0 to Count - 1 do UnlockOrder(TOrder(Items[i]).ID);
+  end;
+end;
+
+procedure TfrmVerifyOrders.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmVerifyOrders.cmdOKClick(Sender: TObject);
+const
+  TX_NO_CODE  = 'An electronic signature code must be entered to verify orders.';
+  TC_NO_CODE  = 'Electronic Signature Code Required';
+  TX_BAD_CODE = 'The electronic signature code entered is not valid.';
+  TC_BAD_CODE = 'Invalid Electronic Signature Code';
+begin
+  inherited;
+  if Length(txtESCode.Text) = 0 then
+  begin
+    InfoBox(TX_NO_CODE, TC_NO_CODE, MB_OK);
+    Exit;
+  end;
+  if not ValidESCode(txtESCode.Text) then
+  begin
+    InfoBox(TX_BAD_CODE, TC_BAD_CODE, MB_OK);
+    txtESCode.SetFocus;
+    txtESCode.SelectAll;
+    Exit;
+  end;
+  ESCode := Encrypt(txtESCode.Text);
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmVerifyOrders.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+
+
+procedure TfrmVerifyOrders.lstOrdersMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  x: string;
+  ARect: TRect;
+begin
+  inherited;
+  with lstOrders do if Index < Items.Count then
+  begin
+    ARect := ItemRect(Index);
+    Canvas.FillRect(ARect);
+    x := FilteredString(Items[Index]);
+    AHeight := WrappedTextHeightByFont(Canvas, Font, x, ARect);
+    if AHeight <  13 then AHeight := 15;
+  end;
+end;
+
+procedure TfrmVerifyOrders.lstOrdersDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  ARect: TRect;
+  SaveColor: TColor;
+begin
+  inherited;
+  with lstOrders do
+  begin
+    ARect := Rect;
+    ARect.Left := ARect.Left + 2;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    SaveColor := Canvas.Brush.Color;
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    if Index < Items.Count then
+    begin
+      x := FilteredString(Items[Index]);
+      DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+      Canvas.Brush.Color := SaveColor;
+      ARect.Right := ARect.Right + 4;
+    end;
+  end;
+end;
+
+procedure TfrmVerifyOrders.Panel1Resize(Sender: TObject);
+begin
+  inherited;
+  lstOrders.Invalidate;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOtherSchedule.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOtherSchedule.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOtherSchedule.dfm	(revision 1676)
@@ -0,0 +1,435 @@
+inherited frmOtherSchedule: TfrmOtherSchedule
+  Left = 544
+  Top = 262
+  Caption = 'Order with schedule '#39'OTHER'#39
+  ClientHeight = 362
+  ClientWidth = 592
+  Constraints.MinHeight = 70
+  Constraints.MinWidth = 280
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 600
+  ExplicitHeight = 389
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Splitter1: TSplitter [0]
+    Left = 0
+    Top = 82
+    Width = 592
+    Height = 8
+    Cursor = crVSplit
+    Align = alTop
+    Beveled = True
+    MinSize = 1
+    ExplicitWidth = 369
+  end
+  object Panel1: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 592
+    Height = 82
+    Align = alTop
+    BorderWidth = 3
+    TabOrder = 0
+    object Image1: TImage
+      Left = 4
+      Top = 4
+      Width = 48
+      Height = 74
+      Align = alLeft
+      AutoSize = True
+      Transparent = True
+    end
+    object memMessage: TMemo
+      Left = 52
+      Top = 4
+      Width = 536
+      Height = 74
+      Align = alClient
+      BevelInner = bvNone
+      BevelOuter = bvNone
+      Color = clBtnFace
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 0
+    end
+  end
+  object Panel3: TPanel [2]
+    Left = 0
+    Top = 90
+    Width = 592
+    Height = 272
+    Align = alClient
+    AutoSize = True
+    TabOrder = 1
+    object GroupBox1: TGroupBox
+      Left = 1
+      Top = 1
+      Width = 176
+      Height = 202
+      Align = alLeft
+      Caption = 'Select Days of Week'
+      TabOrder = 0
+      object cbo7: TCheckBox
+        Tag = 1
+        Left = 86
+        Top = 21
+        Width = 60
+        Height = 12
+        Caption = 'SUN'
+        TabOrder = 0
+        OnClick = cbo7Click
+      end
+      object cbo1: TCheckBox
+        Tag = 2
+        Left = 85
+        Top = 48
+        Width = 60
+        Height = 12
+        Caption = 'MON'
+        TabOrder = 1
+        OnClick = cbo1Click
+      end
+      object cbo2: TCheckBox
+        Tag = 3
+        Left = 85
+        Top = 75
+        Width = 60
+        Height = 12
+        Caption = 'TUE'
+        TabOrder = 2
+        OnClick = cbo2Click
+      end
+      object cbo3: TCheckBox
+        Tag = 4
+        Left = 85
+        Top = 102
+        Width = 60
+        Height = 12
+        Caption = 'WED'
+        TabOrder = 3
+        OnClick = cbo3Click
+      end
+      object cbo4: TCheckBox
+        Tag = 5
+        Left = 85
+        Top = 129
+        Width = 60
+        Height = 12
+        Caption = 'THU'
+        TabOrder = 4
+        OnClick = cbo4Click
+      end
+      object cbo5: TCheckBox
+        Tag = 6
+        Left = 85
+        Top = 156
+        Width = 60
+        Height = 12
+        Caption = 'FRI'
+        TabOrder = 5
+        OnClick = cbo5Click
+      end
+      object cbo6: TCheckBox
+        Tag = 7
+        Left = 85
+        Top = 183
+        Width = 60
+        Height = 12
+        Caption = 'SAT'
+        TabOrder = 6
+        OnClick = cbo6Click
+      end
+      object Button1: TButton
+        Left = 8
+        Top = 64
+        Width = 60
+        Height = 19
+        Caption = 'Everyday'
+        TabOrder = 7
+        OnClick = Button1Click
+      end
+    end
+    object GroupBox2: TGroupBox
+      Left = 180
+      Top = 1
+      Width = 188
+      Height = 202
+      Caption = 'Set Administration Time'
+      TabOrder = 1
+      object lstHour: TListBox
+        Left = 8
+        Top = 16
+        Width = 49
+        Height = 182
+        ItemHeight = 13
+        Items.Strings = (
+          '  0'
+          '  1'
+          '  2'
+          '  3'
+          '  4'
+          '  5'
+          '  6'
+          '  7'
+          '  8'
+          '  9'
+          '10'
+          '11'
+          '12 --'
+          '13'
+          '14'
+          '15'
+          '16'
+          '17'
+          '18'
+          '19'
+          '20'
+          '21'
+          '22'
+          '23')
+        TabOrder = 0
+        OnClick = lstHourClick
+      end
+      object lstMinute: TListBox
+        Left = 60
+        Top = 16
+        Width = 49
+        Height = 182
+        ItemHeight = 13
+        Items.Strings = (
+          ':00'
+          ':05'
+          ':10'
+          ':15'
+          ':20'
+          ':25'
+          ':30'
+          ':35'
+          ':40'
+          ':45'
+          ':50'
+          ':55')
+        TabOrder = 1
+        OnKeyDown = lstMinuteKeyDown
+        OnMouseUp = lstMinuteMouseUp
+      end
+      object btnRemove: TButton
+        Left = 118
+        Top = 94
+        Width = 60
+        Height = 19
+        Hint = 'Remove the selected time from the Day-of-Week schedule.'
+        Caption = 'Remove'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = btnRemoveClick
+      end
+      object btnAdd: TButton
+        Left = 118
+        Top = 64
+        Width = 60
+        Height = 19
+        Hint = 'Add the selected time to the Day-of-Week schedule'
+        Caption = 'Add'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        OnClick = btnAddClick
+      end
+    end
+    object Panel4: TPanel
+      Left = 1
+      Top = 203
+      Width = 590
+      Height = 68
+      Align = alBottom
+      TabOrder = 3
+      DesignSize = (
+        590
+        68)
+      object Label1: TLabel
+        Left = 6
+        Top = 16
+        Width = 51
+        Height = 13
+        Caption = 'Schedule :'
+      end
+      object btn0k1: TButton
+        Left = 427
+        Top = 43
+        Width = 75
+        Height = 20
+        Anchors = [akRight, akBottom]
+        Caption = 'OK'
+        TabOrder = 1
+        OnClick = btn0k1Click
+      end
+      object btnCancel: TButton
+        Left = 508
+        Top = 42
+        Width = 75
+        Height = 20
+        Anchors = [akRight, akBottom]
+        Caption = 'Cancel'
+        ModalResult = 2
+        TabOrder = 2
+        OnClick = btnCancelClick
+      end
+      object btnReset: TButton
+        Left = 8
+        Top = 43
+        Width = 75
+        Height = 20
+        Caption = 'Reset'
+        TabOrder = 3
+        OnClick = btnResetClick
+      end
+      object txtSchedule: TEdit
+        Left = 63
+        Top = 6
+        Width = 520
+        Height = 21
+        Color = clInfoBk
+        ReadOnly = True
+        TabOrder = 0
+      end
+    end
+    object GroupBox3: TGroupBox
+      Left = 374
+      Top = -2
+      Width = 211
+      Height = 202
+      Caption = 'Schedule'
+      TabOrder = 2
+      object NSScboSchedule: TORComboBox
+        Left = 5
+        Top = 16
+        Width = 121
+        Height = 180
+        Style = orcsSimple
+        AutoSelect = True
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = False
+        LookupPiece = 1
+        MaxLength = 0
+        Pieces = '1'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        CharsNeedMatch = 1
+        UniqueAutoComplete = True
+      end
+      object btnSchAdd: TButton
+        Left = 132
+        Top = 64
+        Width = 60
+        Height = 19
+        Caption = 'Add'
+        TabOrder = 1
+        OnClick = btnSchAddClick
+      end
+      object btnSchRemove: TButton
+        Left = 132
+        Top = 94
+        Width = 60
+        Height = 19
+        Caption = 'Remove'
+        TabOrder = 2
+        OnClick = btnSchRemoveClick
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = memMessage'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = cbo7'
+        'Status = stsDefault')
+      (
+        'Component = cbo1'
+        'Status = stsDefault')
+      (
+        'Component = cbo2'
+        'Status = stsDefault')
+      (
+        'Component = cbo3'
+        'Status = stsDefault')
+      (
+        'Component = cbo4'
+        'Status = stsDefault')
+      (
+        'Component = cbo5'
+        'Status = stsDefault')
+      (
+        'Component = cbo6'
+        'Status = stsDefault')
+      (
+        'Component = Button1'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox2'
+        'Status = stsDefault')
+      (
+        'Component = lstHour'
+        'Status = stsDefault')
+      (
+        'Component = lstMinute'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = Panel4'
+        'Status = stsDefault')
+      (
+        'Component = btn0k1'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnReset'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox3'
+        'Status = stsDefault')
+      (
+        'Component = NSScboSchedule'
+        'Status = stsDefault')
+      (
+        'Component = btnSchAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnSchRemove'
+        'Status = stsDefault')
+      (
+        'Component = frmOtherSchedule'
+        'Status = stsDefault')
+      (
+        'Component = txtSchedule'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOtherSchedule.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOtherSchedule.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/fOtherSchedule.pas	(revision 1676)
@@ -0,0 +1,711 @@
+unit fOtherSchedule;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Buttons, fAutoSz, rMisc, ORCtrls, rODMeds,
+  VA508AccessibilityManager, VAUtils;
+
+const
+  NSS_TXT = 'This order will not become active until a valid schedule is used.';
+
+type
+  TfrmOtherSchedule = class(TfrmAutoSz)
+    Panel1: TPanel;
+    Image1: TImage;
+    Panel3: TPanel;
+    GroupBox1: TGroupBox;
+    cbo7: TCheckBox;
+    cbo1: TCheckBox;
+    cbo2: TCheckBox;
+    cbo3: TCheckBox;
+    cbo4: TCheckBox;
+    cbo5: TCheckBox;
+    cbo6: TCheckBox;
+    GroupBox2: TGroupBox;
+    lstHour: TListBox;
+    lstMinute: TListBox;
+    Panel4: TPanel;
+    btn0k1: TButton;
+    btnCancel: TButton;
+    Label1: TLabel;
+    btnReset: TButton;
+    btnRemove: TButton;
+    memMessage: TMemo;
+    Splitter1: TSplitter;
+    btnAdd: TButton;
+    Button1: TButton;
+    GroupBox3: TGroupBox;
+    NSScboSchedule: TORComboBox;
+    btnSchAdd: TButton;
+    btnSchRemove: TButton;
+    txtSchedule: TEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btn0k1Click(Sender: TObject);
+    procedure cbo7Click(Sender: TObject);
+    procedure cbo1Click(Sender: TObject);
+    procedure cbo2Click(Sender: TObject);
+    procedure cbo3Click(Sender: TObject);
+    procedure cbo4Click(Sender: TObject);
+    procedure cbo5Click(Sender: TObject);
+    procedure cbo6Click(Sender: TObject);
+    procedure btnAddClick(Sender: TObject);
+    procedure btnResetClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure lstHourClick(Sender: TObject);
+    procedure txtScheduleChange(Sender: TObject);
+    procedure lstMinuteMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure lstMinuteKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure Button1Click(Sender: TObject);
+    procedure btnSchAddClick(Sender: TObject);
+    procedure btnSchRemoveClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+    FDaySchedule: array [1..7] of string;
+    FTimeSchedule: TStringList;
+    FSchedule: String;
+    FOtherSchedule: String;
+    FFromCheckBox: boolean;
+    FFromEditBox: boolean;
+    function GetSiteMessage: string;
+    procedure SetDaySchedule(Sender: TObject);
+    procedure SetTimeSchedule;
+    procedure SetScheduleSelection;
+    procedure UpdateOnFreeTextInput;
+    procedure EnabledTime(TF: boolean);
+    procedure EnabledSch(TF: boolean);
+    function CheckDay(ADayStr: string): string;
+    
+  public
+  end;
+
+function ShowOtherSchedule(var ASchedule: string): boolean;
+
+var
+   frmOtherSchedule: TfrmOtherSchedule;
+
+implementation
+
+uses ORFn, ORNet, rOrders;
+{$R *.dfm}
+
+function ShowOtherSchedule(var ASchedule: string):
+
+boolean;
+var
+
+  AdminTime, SchType: string;
+begin
+  Result := False;
+  try
+   ASchedule := '';
+   frmOtherSchedule := TfrmOtherSchedule.Create(Application);
+   ResizeFormToFont(TForm(frmOtherSchedule));
+   SetFormPosition(frmOtherSchedule);
+   if frmOtherSchedule.ShowModal = mrOK then
+   begin
+     ASchedule := UpperCase(frmOtherSchedule.FOtherSchedule);
+     if frmOtherSchedule.GroupBox3.Enabled = True then
+       begin
+         AdminTime := Piece(frmOtherSchedule.NSScboSchedule.Items.Strings[frmOtherSchedule.NSScboSchedule.itemindex],U,4);
+         schType := Piece(frmOtherSchedule.NSScboSchedule.Items.Strings[frmOtherSchedule.NSScboSchedule.itemindex],U,3);
+         ASchedule := ASchedule + U + AdminTime + U + schType;
+         //if (schType = 'P') or (schType = 'OC') then ASchedule := ASchedule + U + '1'
+         //else ASchedule := ASchedule + U + '0';
+       end
+     else if frmOtherSchedule.GroupBox2.Enabled = true then
+       begin
+         AdminTime := Piece(ASchedule,'@',2);
+         ASchedule := ASchedule + U + AdminTime + U + 'C';
+       end;
+     Result := True;
+   end;
+  except
+   ShowMsg('Error happen when building other schedule');
+  end;
+end;
+
+
+procedure TfrmOtherSchedule.FormCreate(Sender: TObject);
+var
+  i: integer;
+  nssMsg: string;
+begin
+  frmOtherSchedule := nil;
+  FFromCheckBox := False;
+  FFromEditBox := False;
+  image1.Picture.Icon.Handle := LoadIcon(0, IDI_WARNING);
+  for i := 1 to 7 do
+   FDaySchedule[i] := '';
+  FTimeSchedule := TStringlist.Create;
+  FSchedule := '';
+  FOtherSchedule := '';
+  nssMsg := GetSiteMessage;
+  if Length(nssMsg)< 1 then
+    nssMsg := NSS_TXT;
+  memMessage.Lines.Add(nssMsg);
+  LoadDOWSchedules(NSScboSchedule.Items);
+  if ScreenReaderActive = false then txtSchedule.TabStop := false;
+
+end;
+
+procedure TfrmOtherSchedule.FormDestroy(Sender: TObject);
+begin
+  inherited;
+    //FDaySchedule
+    FTimeSchedule.Free;
+    frmOtherSchedule := nil;
+    //FSchedule: String;
+    //FOtherSchedule: String;
+end;
+
+procedure TfrmOtherSchedule.btnCancelClick(Sender: TObject);
+begin
+  frmOtherSchedule.Release;
+end;
+
+procedure TfrmOtherSchedule.btn0k1Click(Sender: TObject);
+begin
+  if (cbo1.Checked = false) and (cbo2.Checked = false) and (cbo3.Checked = false) and (cbo4.Checked = false) and (cbo5.Checked = false) and
+    (cbo6.Checked = false) and (cbo7.Checked = false) then
+    begin
+      ShowMsg('A day of week must be selected!');
+      Exit;
+    end;
+  if Pos('@', self.txtSchedule.Text) = 0 then
+    begin
+      ShowMsg('An Administation Time or a schedule needs to be selected');
+      exit;
+    end;
+(*  if not IsValidSchStr(FOtherSchedule) then
+  begin
+    Show508Message('The schedule you entered is invalid!');
+    Exit;
+  end;  *)
+  modalResult := mrOK;
+end;
+
+procedure TfrmOtherSchedule.SetDaySchedule(Sender: TObject);
+var
+  i : integer;
+  TimePart, DayPart, Schedule: string;
+begin
+  with (Sender as TCheckBox) do
+  begin
+    try
+      if TCheckBox(Sender).Checked then
+        FDaySchedule[TCheckBox(Sender).Tag] := Copy(TCheckBox(Sender).Caption,0,2)
+      else
+        FDaySchedule[TCheckBox(Sender).Tag] := '';
+    except
+      ShowMsg('Error happened when building day schedule.');
+      Exit;
+    end;
+  end;
+
+  TimePart := '';
+  DayPart := '';
+  schedule := '';
+  if Self.GroupBox2.Enabled = True then
+    begin
+        for i := 0 to FTimeSchedule.Count - 1 do
+          begin
+            if i = 0 then TimePart := TimePart + FTimeSchedule[i]
+            else TimePart := TimePart + '-' + FTimeSchedule[i];
+          end;
+    end;
+  if (self.GroupBox3.Enabled = True) and (FSchedule <> '') then schedule := FSchedule;
+  for i := Low(FDaySchedule) to High(FDaySchedule) do
+  begin
+    if Length(FDaySchedule[i])>0 then
+    begin
+      if DayPart = '' then DayPart := FDaySchedule[i]
+      else DayPart := DayPart + '-' + FDaySchedule[i];
+    end;
+  end;
+  if Length(TimePart) > 0 then
+  begin
+    if Length(DayPart) > 0 then
+      FOtherSchedule := DayPart + '@' + TimePart
+    else if Length(DayPart) = 0 then
+      FOtherSchedule := TimePart;
+  end
+  else if Length(schedule) > 0 then
+    begin
+      if length(DayPart) > 0 then
+      FOtherSchedule := DayPart + '@' + Schedule
+    else if Length(DayPart) = 0 then
+      FOtherSchedule := Schedule;
+    end
+  else FOtherSchedule := DayPart;
+  txtSchedule.Text := FOtherSchedule;
+end;
+
+
+procedure TfrmOtherSchedule.SetScheduleSelection;
+var
+  i: integer;
+  DayPart: string;
+begin
+  DayPart := '';
+  for i := Low(FDaySchedule) to High(FDaySchedule) do
+  begin
+    if Length(FDaySchedule[i])>0 then
+    begin
+      if DayPart = '' then DayPart := FDaySchedule[i]
+      else DayPart := DayPart + '-' + FDaySchedule[i];
+    end;
+  end;
+  if Length(DayPart) > 0 then
+  begin
+    if FSchedule <> '' then
+      FOtherSchedule := DayPart + '@' + FSchedule
+    else
+      FOtherSchedule := DayPart;
+  end
+  else FOtherSchedule := FSchedule;
+  //if Length(APRN) > 0 then FOtherSchedule := FOtherSchedule;
+  txtSchedule.Text := FOtherSchedule;
+end;
+
+procedure TfrmOtherSchedule.SetTimeSchedule;
+var
+  i : integer;
+  TimePart, DayPart,APRN,ASearchTxt: string;
+begin
+  TimePart := '';
+  DayPart := '';
+  APRN := '';
+  ASearchTxt := UpperCase(txtSchedule.Text);
+  if StrPos(PChar(ASearchTxt),PChar('PRN')) <> nil then APRN := ' PRN'; //hds8326 retain PRN free text if data time entered
+  for i := 0 to FTimeSchedule.Count - 1 do
+  begin
+    if i = 0 then TimePart := TimePart + FTimeSchedule[i]
+    else TimePart := TimePart + '-' + FTimeSchedule[i];
+  end;
+  for i := Low(FDaySchedule) to High(FDaySchedule) do
+  begin
+    if Length(FDaySchedule[i])>0 then
+    begin
+      if DayPart = '' then DayPart := FDaySchedule[i]
+      else DayPart := DayPart + '-' + FDaySchedule[i];
+    end;
+  end;
+  if Length(DayPart) > 0 then
+  begin
+    if Length(TimePart) > 0 then
+      FOtherSchedule := DayPart + '@' + TimePart
+    else
+      FOtherSchedule := DayPart;
+  end
+  else FOtherSchedule := TimePart;
+  if Length(APRN) > 0 then FOtherSchedule := FOtherSchedule + APRN; //hds8326 retain PRN free text if data time entered
+  txtSchedule.Text := FOtherSchedule;
+end;
+
+procedure TfrmOtherSchedule.cbo7Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.cbo1Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.cbo2Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.cbo3Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.cbo4Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.cbo5Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.cbo6Click(Sender: TObject);
+begin
+  FFromCheckBox := True;
+  if not FFromEditBox then
+    SetDaySchedule(Sender);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.btnAddClick(Sender: TObject);
+var
+  hour, min: string;
+begin
+  if FSchedule <> '' then Exit;
+  if lstHour.ItemIndex < 0 then exit;
+  hour := lstHour.Items[lstHour.ItemIndex];
+  hour := Trim(Copy(hour,1,3));
+  if length(Trim(hour)) = 1 then
+    hour := '0' + Trim(hour);
+  if lstMinute.ItemIndex >= 0 then
+  begin
+    min := lstMinute.Items[lstMinute.itemIndex];
+    min := Copy(min,2,2);
+  end;
+  if min = '' then min := '00';
+  if (hour='00') and (min='00') then hour := '24';
+  if FTimeSchedule.IndexOf(hour)>=0 then
+  begin
+    FTimeSchedule[FTimeSchedule.IndexOf(hour)] := hour + min;
+  end;
+  if FTimeSchedule.IndexOf(hour+min) < 0 then
+    FTimeSchedule.Add(hour+min);
+  FTimeSchedule.Sort;
+  SetTimeSchedule;
+  if FTimeSchedule.Count > 0 then EnabledSch(False);
+end;
+
+procedure TfrmOtherSchedule.btnResetClick(Sender: TObject);
+var
+  i : integer;
+begin
+  cbo1.Checked := false;
+  cbo2.Checked := false;
+  cbo3.Checked:= false;
+  cbo4.Checked := false;
+  cbo5.Checked := false;
+  cbo6.Checked := false;
+  cbo7.Checked := false;
+  lstHour.ItemIndex := -1;
+  lstMinute.ItemIndex := -1;
+  NSScboSchedule.ItemIndex := -1;
+  for i := low(FDaySchedule) to high(FDaySchedule) do
+    FDaySchedule[i] := '';
+  FTimeSchedule.Clear;
+  FOtherSchedule := '';
+  txtSchedule.Text := '';
+  FSchedule := '';
+  EnabledTime(True);
+  EnabledSch(True);
+end;
+
+procedure TfrmOtherSchedule.btnSchAddClick(Sender: TObject);
+begin
+  inherited;
+  if self.NSScboSchedule.ItemIndex < 0 then Exit;
+  if FSchedule <> '' then
+    begin
+      infoBox('A Day-of-week schedule can only contain one schedule','Warning',MB_OK);
+      Exit;
+    end;
+  FSchedule := self.NSScboSchedule.Text;
+  SetScheduleSelection;
+  Self.NSScboSchedule.Enabled := False;
+  EnabledTime(False);
+end;
+
+procedure TfrmOtherSchedule.btnSchRemoveClick(Sender: TObject);
+begin
+  inherited;
+  if (FSchedule = '') or (self.NSScboSchedule.ItemIndex < 0) then exit;
+  if self.NSScboSchedule.Text <> FSchedule then exit;
+  Fschedule := '';
+  SetScheduleSelection;
+  self.NSScboSchedule.Enabled := True;
+  EnabledTime(True);
+end;
+
+procedure TfrmOtherSchedule.btnRemoveClick(Sender: TObject);
+var
+  hour, min: string;
+  idx : integer;
+begin
+  FFromCheckBox := True;
+  if lstHour.ItemIndex >= 0 then
+  begin
+    hour := lstHour.Items[lstHour.ItemIndex];
+    hour := Trim(Copy(hour,1,3));
+    if length(hour) = 1 then
+      hour := '0' + Trim(hour);
+  end;
+  if lstMinute.ItemIndex >= 0 then
+  begin
+    min := lstMinute.Items[lstMinute.itemIndex];
+    min := Copy(min,2,2);
+  end;
+  if min = '' then min := '00';
+  if (hour='00') and (min='00') then hour := '24';
+  idx := FTimeSchedule.IndexOf(hour+min);
+  if idx > -1 then
+    FTimeSchedule.Delete(idx);
+  FTimeSchedule.Sort;
+  SetTimeSchedule;
+  FFromCheckBox := False;
+  if FTimeSchedule.Count = 0 then EnabledSch(True);
+end;
+
+function TfrmOtherSchedule.GetSiteMessage: string;
+var
+  i: integer;
+  rstStr: string;
+begin
+  rstStr := '';
+  CallV('ORWNSS NSSMSG',[nil]);
+  for i := 0 to RPCBrokerV.Results.Count - 1 do
+    rstStr := rstStr + RPCBrokerV.Results[i];
+  Result := rstStr;
+end;
+
+procedure TfrmOtherSchedule.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  try
+    inherited;
+    SaveUserBounds(Self);
+    Action := caFree;
+  except
+    Action := caFree;
+  end;
+  //frmOtherSchedule := nil;
+end;
+
+procedure TfrmOtherSchedule.UpdateOnFreeTextInput;
+var
+  dayStr,timeStr: string;
+  dayList: TStringList;
+  i,Code,cnt : integer;
+  OrigSch: string;
+
+  procedure updateCheckbox(aDList: TStringList);
+  var
+    idx: integer;
+    x: string;
+  begin
+    for idx := aDList.Count - 1 downto 0 do
+    begin
+    // cq hds8326 PRN entered manually split PRN from DOW to retain last DOW
+      x := UpperCase(aDList.Strings[idx]); // added to properly process DOW when followed by a space "PRN".
+      if Piece(x,' ',2) = 'PRN' then
+         aDLIst.Strings[idx] := Piece(x,' ',1);
+    // cq hds8326
+      if ((CheckDay(aDList[idx]) = 'SUN') or (CheckDay(aDList[idx]) = 'SU')) then
+        begin
+          cbo7.Checked := true;
+          aDList[idx] := 'SU';
+          FDaySchedule[cbo7.tag] := 'SU';
+        end
+      else if ((CheckDay(aDList[idx]) = 'MON') or (CheckDay(aDList[idx]) = 'MO')) then
+        begin
+          cbo1.Checked := true;
+          aDList[idx] := 'MO';
+          FDaySchedule[cbo1.tag] := 'MO';
+        end
+      else if ((CheckDay(aDList[idx]) = 'TUE') or (CheckDay(aDList[idx]) = 'TU')) then
+        begin
+          cbo2.Checked := true;
+          aDList[idx] := 'TU';
+          FDaySchedule[cbo2.tag] := 'TU';
+        end
+      else if ((CheckDay(aDList[idx]) = 'WED') or (CheckDay(aDList[idx]) = 'WE')) then
+        begin
+          cbo3.Checked := true;
+          aDList[idx] := 'WE';
+          FDaySchedule[cbo3.tag] := 'WE';
+        end
+      else if ((CheckDay(aDList[idx]) = 'THU') or (CheckDay(aDList[idx]) = 'TH')) then
+        begin
+          cbo4.Checked := true;
+          aDList[idx] := 'TH';
+          FDaySchedule[cbo4.tag] := 'TH';
+        end
+      else if ((CheckDay(aDList[idx]) = 'FRI') or (CheckDay(aDList[idx]) = 'FR')) then
+        begin
+          cbo5.Checked := true;
+          aDList[idx] := 'FR';
+          FDaySchedule[cbo5.tag] := 'FR';
+        end
+      else if ((CheckDay(aDList[idx]) = 'SAT') or (CheckDay(aDList[idx]) = 'SA')) then
+        begin
+          cbo6.Checked := true;
+          aDList[idx] := 'SA';
+          FDaySchedule[cbo6.tag] := 'SA';
+        end
+      else aDList.Delete(idx);
+    end;
+  end;
+
+begin
+  inherited;
+  dayStr  := '';
+  timeStr := '';
+  if Length (txtSchedule.Text) = 0 then
+  begin
+    FOtherSchedule := '';
+    btnReset.Click;
+    Exit;
+  end;
+  OrigSch := txtSchedule.Text;
+  dayList  := TStringList.Create;
+  if Pos('@',txtSchedule.Text)>0 then
+  begin
+    dayStr  := Trim(Piece(txtSchedule.Text,'@',1));
+    timeStr := Trim(Piece(txtSchedule.Text,'@',2));
+  end  else
+  begin
+    Val(Piece(txtSchedule.Text,'-',1), i, Code);
+    if i = 0 then begin end;  // just to make compiler not give hint
+    if Code <> 0 then dayStr := Trim(txtSchedule.Text)
+    else timeStr := Trim(txtSchedule.Text);
+  end;
+  FTimeSchedule.Clear;
+  for cnt := Low(FDaySchedule) to High(FDaySchedule) do
+    FDaySchedule[cnt] := '';
+  PiecesToList(timeStr, '-', FTimeSchedule);
+  if Length(dayStr)>0 then
+  begin
+    PiecesToList(dayStr, '-', dayList);
+    cbo7.Checked := False;
+    cbo1.Checked := False;
+    cbo2.Checked := False;
+    cbo3.Checked := False;
+    cbo4.Checked := False;
+    cbo5.Checked := False;
+    cbo6.Checked := False;
+    updateCheckbox(dayList);
+  end;
+
+  FOtherSchedule := txtSchedule.Text;
+end;
+
+procedure TfrmOtherSchedule.lstHourClick(Sender: TObject);
+begin
+  inherited;
+  if lstMinute.ItemIndex = -1 then lstMinute.ItemIndex :=0;
+end;
+
+procedure TfrmOtherSchedule.txtScheduleChange(Sender: TObject);
+begin
+  inherited;
+  FFromEditBox := True;
+  if not FFromCheckBox then
+    UpdateOnFreeTextInput;
+  FFromEditBox := False;
+end;
+
+function TfrmOtherSchedule.CheckDay(ADayStr: string): string;
+var
+  lng: integer;
+begin
+  lng := Length(ADayStr);
+  if lng <2 then
+  begin
+    result := '';
+    Exit;
+  end;
+  if (lng < 7) and ( UpperCase(aDayStr)= Copy('SUNDAY',1,lng)) then
+    result := 'SU'
+  else if (lng < 7) and (UpperCase(aDayStr)= Copy('MONDAY',1,lng)) then
+    result := 'MO'
+  else if (lng < 8) and (UpperCase(aDayStr)= Copy('TUESDAY',1,lng)) then
+    result := 'TU'
+  else if (lng < 10) and (UpperCase(aDayStr)= Copy('WEDNESDAY',1,lng)) then
+    result := 'WE'
+  else if (lng < 9) and (UpperCase(aDayStr)= Copy('THURSDAY',1,lng)) then
+    result := 'TH'
+  else if (lng < 7) and (UpperCase(aDayStr)= Copy('FRIDAY',1,lng)) then
+    result := 'FR'
+  else if (lng < 9) and (UpperCase(aDayStr)= Copy('SATURDAY',1,lng)) then
+    result := 'SA'
+  else
+    result := '';
+end;
+
+procedure TfrmOtherSchedule.EnabledSch(TF: boolean);
+begin
+   self.GroupBox3.Enabled := TF;
+   self.NSScboSchedule.Enabled := TF;
+   self.btnSchAdd.Enabled := TF;
+   self.btnSchRemove.Enabled := TF;
+//   if TF = False then self.NSScboSchedule.Color := cl3DLight
+//   else self.NSScboSchedule.Color := clWindow;
+   if TF = False then self.NSScboSchedule.ItemIndex := -1;
+end;
+
+procedure TfrmOtherSchedule.EnabledTime(TF: boolean);
+begin
+  self.GroupBox2.Enabled := TF;
+  self.lstHour.Enabled := TF;
+  self.lstMinute.Enabled := TF;
+  self.btnAdd.Enabled := TF;
+  self.btnRemove.Enabled := TF;
+  if TF = False then
+    begin
+      self.lstHour.ItemIndex := -1;
+      self.lstMinute.ItemIndex := -1;
+    end;
+end;
+
+procedure TfrmOtherSchedule.lstMinuteMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  FFromCheckBox := True;
+  if lstHour.ItemIndex < 0 then Exit;
+  //btnAddClick(Self);
+  FFromCheckBox := False;
+end;
+
+procedure TfrmOtherSchedule.lstMinuteKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  if (Key=VK_RETURN) then
+  begin
+    FFromCheckBox := True;
+    if lstHour.ItemIndex < 0 then Exit;
+    //btnAddClick(Self);
+    FFromCheckBox := False;
+  end;
+end;
+
+procedure TfrmOtherSchedule.Button1Click(Sender: TObject);
+begin
+  inherited;
+   cbo1.Checked := true;
+   cbo2.Checked := true;
+   cbo3.Checked := true;
+   cbo4.Checked := true;
+   cbo5.Checked := true;
+   cbo6.Checked := true;
+   cbo7.Checked := true;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODAllergy.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODAllergy.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODAllergy.pas	(revision 1676)
@@ -0,0 +1,382 @@
+unit rODAllergy;
+
+{$O-}
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, TRPCB, dialogs, rMisc,fNotes ;
+
+type
+  TAllergyRec = record
+    Changed:             boolean;
+    IEN:                 Integer;
+    CausativeAgent:      string;
+    AllergyType:         string;
+    NatureOfReaction:    string;
+    SignsSymptoms:       TStringList;
+    Originator:          int64;
+    OriginatorName:      string;
+    Originated:          TFMDateTime;
+    Comments:            TStringList;
+    IDBandMarked:        TStringList;
+    ChartMarked:         TStringList;
+    Verifier:            int64;
+    VerifierName:        string;
+    Verified:            boolean;
+    VerifiedDateTime:    TFMDateTime;
+    EnteredInError:      boolean;
+    DateEnteredInError:  TFMDateTime;
+    UserEnteringInError: int64;
+    ErrorComments:       TStringList;
+    Observed_Historical: string;
+    Observations:        TStringList;
+    ReactionDate:        TFMDateTime;
+    Severity:            string;
+    NoKnownAllergies:    Boolean;
+    NewComments:         TStringList;
+  end;
+
+  TARTPatchInstalled = record
+    PatchInstalled: boolean;
+    PatchChecked: boolean;
+  end;
+
+  TGMRASiteParams = record
+    MarkIDBandFlag:              Boolean;
+    OriginatorCommentsRequired:  Boolean;
+    ErrorCommentsEnabled:        Boolean;
+    ParamsSet:                   Boolean;
+  end;
+
+  TARTClinUser = record
+    IsClinUser: boolean;
+    ReasonFailed: string;
+    AccessChecked: boolean;
+  end;
+
+function SearchForAllergies(StringToMatch: string): TStrings;
+function SubsetofSymptoms(const StartFrom: string; Direction: Integer): TStrings;
+function ODForAllergies: TStrings;
+function GetCWADInfo(const DFN: string): string;
+function SaveAllergy(EditRec: TAllergyRec): string;
+function LoadAllergyForEdit(AllergyIEN: integer): TAllergyRec;
+function SendARTBulletin(AFreeTextEntry: string; AComment: TStringList): string;
+function RPCEnterNKAForPatient: string;
+
+// site parameter functions
+function ARTPatchInstalled: boolean;
+function GetSiteParams: TGMRASiteParams;
+function MarkIDBand: boolean;
+function RequireOriginatorComments: boolean;
+function EnableErrorComments: boolean;
+function IsARTClinicalUser(var AMessage: string): boolean;
+function GetAllergyTitleText: string;
+
+implementation
+
+const
+  NO_YES: array[Boolean] of string = ('NO', 'YES');
+
+var
+  uARTPatchInstalled: TARTPatchInstalled;
+  uGMRASiteParams: TGMRASiteParams;
+  uARTClinUser: TARTClinUser;
+
+function ODForAllergies: TStrings;
+begin
+  CallV('ORWDAL32 DEF',[nil]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SearchForAllergies(StringToMatch: string): TStrings;
+begin
+  CallV('ORWDAL32 ALLERGY MATCH',[StringToMatch]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubsetofSymptoms(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  Callv('ORWDAL32 SYMPTOMS',[StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetCWADInfo(const DFN: string): string;
+begin
+  Result := sCallV('ORWPT CWAD',[DFN]);
+end;
+
+function LoadAllergyForEdit(AllergyIEN: integer): TAllergyRec;
+var
+  Dest: TStringList;
+  EditRec: TAllergyRec;
+  x: string;
+begin
+  Dest := TStringList.Create;
+  try
+    tCallV(Dest, 'ORWDAL32 LOAD FOR EDIT', [AllergyIEN]) ;
+    if Piece(RPCBrokerV.Results[0], U, 1) <> '-1' then
+    begin
+      with EditRec do
+        begin
+          Changed             := False;
+          IEN                 := AllergyIEN;
+          CausativeAgent      := ExtractDefault(Dest, 'CAUSATIVE AGENT');
+          AllergyType         := ExtractDefault(Dest, 'ALLERGY TYPE');
+          NatureOfReaction    := ExtractDefault(Dest, 'NATURE OF REACTION');
+          SignsSymptoms       := TStringList.Create;
+          ExtractItems(SignsSymptoms, Dest, 'SIGN/SYMPTOMS');
+          MixedCaseByPiece(SignsSymptoms, U, 4);
+          x                   := ExtractDefault(Dest, 'ORIGINATOR');
+          Originator          := StrToInt64Def(Piece(x, U, 1), 0);
+          OriginatorName      := Piece(x, U, 2);
+          Originated          := StrToFMDateTime(ExtractDefault(Dest, 'ORIGINATED'));
+          Comments            := TStringList.Create;
+          ExtractText(Comments, Dest, 'COMMENTS');
+          IDBandMarked        := TStringList.Create;
+          ExtractItems(IDBandMarked, Dest, 'ID BAND MARKED');
+          ChartMarked         := TStringList.Create;
+          ExtractItems(ChartMarked, Dest, 'CHART MARKED');
+          //x                   := ExtractDefault(Dest, 'VERIFIER');
+          //Verifier            := StrToInt64Def(Piece(x, U, 1), 0);
+          //VerifierName        := Piece(x, U, 2);
+          //x                   := ExtractDefault(Dest, 'VERIFIED');
+          //Verified            := Piece(x, U, 1) = 'YES';
+          //if Verified then
+          //  VerifiedDateTime  := StrToFMDateTime(Piece(x, U, 2));
+          x                   := ExtractDefault(Dest, 'ENTERED IN ERROR');
+          EnteredInError      := Piece(x, U, 1) = 'YES';
+          DateEnteredInError  := StrToFloatDef(Piece(x, U, 2), 0);
+          UserEnteringInError := StrToInt64Def(Piece(x, U, 3), 0);
+          ErrorComments       := TStringList.Create;
+          Observed_Historical := ExtractDefault(Dest, 'OBS/HIST');
+          Observations        := TStringList.Create;
+          ExtractText(Observations, Dest, 'OBSERVATIONS');
+          //ReactionDate        := StrToFMDateTime(Piece(ExtractDefault(Dest, 'REACTDT'), U, 3));
+          //Severity            := Piece(ExtractDefault(Dest, 'SEVERITY'), U, 3);
+          NoKnownAllergies    := (StrToIntDef(Piece(ExtractDefault(Dest, 'NKA'), U, 3), 0) > 0);
+          NewComments         := TStringList.Create;
+        end;
+    end
+    else
+      EditRec.IEN := -1;
+    Result := EditRec;
+  finally
+    Dest.Free;
+  end;
+end;
+
+function SaveAllergy(EditRec: TAllergyRec): string;
+var
+  i: integer;
+begin
+
+  with RPCBrokerV, EditRec do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWDAL32 SAVE ALLERGY';
+      Param[0].PType := literal;
+      Param[0].Value := IntToStr(IEN);
+      Param[1].PType := literal;
+      Param[1].Value := Patient.DFN;
+      Param[2].PType := list;
+      with Param[2] do
+        begin
+          if NoKnownAllergies then
+            Mult['"GMRANKA"']  := NO_YES[NoKnownAllergies];
+          if CausativeAgent <> '' then
+            Mult['"GMRAGNT"']  := CausativeAgent;
+          if AllergyType <> '' then
+            Mult['"GMRATYPE"'] := AllergyType ;
+          if NatureOfReaction <> '' then
+            Mult['"GMRANATR"'] := NatureOfReaction ;
+          if Originator > 0 then
+            Mult['"GMRAORIG"'] := IntToStr(Originator);
+          if Originated > 0 then
+            Mult['"GMRAORDT"'] := FloatToStr(Originated);
+          with SignsSymptoms do if Count > 0 then
+            begin
+              Mult['"GMRASYMP",0'] := IntToStr(Count);
+              for i := 0 to Count - 1 do
+                Mult['"GMRASYMP",' + IntToStr(i+1)] := Pieces(Strings[i], U, 1, 5);
+            end;
+          //if Verified then
+          //  Mult['"GMRAVER"']  := NO_YES[Verified];
+          //if Verifier > 0 then
+          //  Mult['"GMRAVERF"'] := IntToStr(Verifier);
+          //if VerifiedDateTime > 0 then
+          //  Mult['"GMRAVERD"'] := FloatToStr(VerifiedDateTime);
+          if EnteredInError then
+            begin
+              Mult['"GMRAERR"']  := NO_YES[EnteredInError];
+              Mult['"GMRAERRBY"']  := IntToStr(UserEnteringInError);
+              Mult['"GMRAERRDT"']  := FloatToStr(DateEnteredInError);
+              with ErrorComments do if Count > 0 then
+                begin
+                  Mult['"GMRAERRCMTS",0'] := IntToStr(Count);
+                  for i := 0 to Count - 1 do
+                    Mult['"GMRAERRCMTS",' + IntToStr(i+1)] := Strings[i];
+                end;
+
+            end ;
+          with ChartMarked do if Count > 0 then
+            begin
+              Mult['"GMRACHT",0'] := IntToStr(Count);
+              for i := 0 to Count - 1 do
+                Mult['"GMRACHT",' + IntToStr(i+1)] := Strings[i];
+            end;
+          with IDBandMarked do if Count > 0 then
+            begin
+              Mult['"GMRAIDBN",0'] := IntToStr(Count);
+              for i := 0 to Count - 1 do
+                Mult['"GMRAIDBN",' + IntToStr(i+1)] := Strings[i];
+            end;
+          if Length(Observed_Historical) > 0 then
+            Mult['"GMRAOBHX"'] :=  Observed_Historical;
+          if ReactionDate > 0 then
+            Mult['"GMRARDT"']  :=  FloatToStr(ReactionDate);
+          if Length(Severity) > 0 then
+            Mult['"GMRASEVR"'] :=  Severity;
+          with NewComments do if Count > 0 then
+            begin
+              Mult['"GMRACMTS",0'] := IntToStr(Count);
+              for i := 0 to Count - 1 do
+                Mult['"GMRACMTS",' + IntToStr(i+1)] := Strings[i];
+            end;
+        end;
+        CallBroker;
+        Result := Results[0];
+        // Include "Allergy Entered in Error" items require signature list.
+        //cq-8002  -piece 2 is Allergy Entered in Error (IEN)
+       // code added allowing v27 GUI changes to continue if M change is not released prior.
+       //cq-14842 -  add observed/drug allergies to the fReview/fSignOrders forms for signature.
+       if Length(Piece(Result,'^',2))> 0 then
+         Changes.Add(10, Piece(Result,'^',2), GetAllergyTitleText, '', 1)
+       else
+          exit;
+        end;
+end;
+
+function RPCEnterNKAForPatient: string;
+begin
+  with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWDAL32 SAVE ALLERGY';
+      Param[0].PType := literal;
+      Param[0].Value := '0';
+      Param[1].PType := literal;
+      Param[1].Value := Patient.DFN;
+      Param[2].PType := list;
+      with Param[2] do
+        Mult['"GMRANKA"']  := 'YES';
+      CallBroker;
+      Result := Results[0];
+    end;
+end;
+
+function SendARTBulletin(AFreeTextEntry: string; AComment: TStringList): string;
+var
+  i: integer;
+begin
+  with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWDAL32 SEND BULLETIN';
+      Param[0].PType := literal;
+      Param[0].Value := User.DUZ;
+      Param[1].PType := literal;
+      Param[1].Value := Patient.DFN;
+      Param[2].PType := literal;
+      Param[2].Value := AFreeTextEntry;
+      if AComment.Count > 0 then with Param[3] do
+        begin
+          PType := list;
+          for i := 0 to AComment.Count - 1 do
+            Mult[IntToStr(Succ(i)) + ',0'] := AComment[i];
+          Mult['0'] := '^^' + IntToStr(AComment.Count);
+        end;
+      CallBroker;
+      Result := Results[0];
+    end;
+end;
+
+// Site parameter functions
+
+function ARTPatchInstalled: boolean;
+begin
+  with uARTPatchInstalled do
+    if not PatchChecked then
+      begin
+        PatchInstalled := ServerHasPatch('GMRA*4.0*21');
+        PatchChecked := True;
+      end;
+  Result := uARTPatchInstalled.PatchInstalled;
+end;
+
+function GetSiteParams: TGMRASiteParams;
+var
+  x: string;
+begin
+  with uGMRASiteParams do
+    if not ParamsSet then
+      begin
+        x := sCallV('ORWDAL32 SITE PARAMS', [nil]);
+        MarkIDBandFlag := (Piece(x, U, 5) <> '0');
+        OriginatorCommentsRequired := (Piece(x, U, 4) = '1');
+        ErrorCommentsEnabled := (Piece(x, U, 11) = '1');
+        ParamsSet := True;
+      end;
+  Result := uGMRASiteParams;
+end;
+
+function MarkIDBand: boolean;
+begin
+  Result := GetSiteParams.MarkIDBandFlag;
+end;
+
+function RequireOriginatorComments: boolean;
+begin
+  Result := GetSiteParams.OriginatorCommentsRequired;
+end;
+
+function EnableErrorComments: boolean;
+begin
+  Result := GetSiteParams.ErrorCommentsEnabled;
+end;
+
+(*function IsARTClinicalUser(var AMessage: string): boolean;
+const
+  TX_NO_AUTH = 'You are not authorized to perform this action.' + CRLF +
+               'Either the ORES or ORELSE key is required.';
+begin
+  Result := (User.UserClass > UC_CLERK);     // User has ORES or ORELSE key
+  if not Result then AMessage := TX_NO_AUTH else AMessage := '';
+end;*)
+
+function IsARTClinicalUser(var AMessage: string): boolean;
+const
+  TX_NO_AUTH = 'You are not authorized to perform this action.' + CRLF;
+var
+  x: string;
+begin
+  with uARTClinUser do
+  begin
+    if not AccessChecked then
+      begin
+        x := sCallV('ORWDAL32 CLINUSER',[nil]);
+        IsClinUser := (Piece(x, U, 1) = '1');
+        if not IsClinUser then ReasonFailed := TX_NO_AUTH + Piece(x, U, 2) else ReasonFailed := '';
+        AccessChecked := True;
+      end;
+    Result   := IsClinUser;
+    AMessage := ReasonFailed ;
+  end;
+end;
+
+function GetAllergyTitleText: string;
+begin
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(floatToStr(FMToday))) +
+              '  ' + 'Adverse React/Allergy' + ', ' + Encounter.LocationName + ', ' + User.Name;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODBase.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODBase.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODBase.pas	(revision 1676)
@@ -0,0 +1,878 @@
+unit rODBase;
+
+interface                        
+
+uses SysUtils, Windows, Classes, ORNet, ORFn, uCore, uConst, rOrders;
+
+type
+  TPrompt = class
+    ID:        string;
+    IEN:       Integer;
+    Sequence:  Double;
+    FmtCode:   string;
+    Omit:      string;
+    Leading:   string;
+    Trailing:  string;
+    NewLine:   Boolean;
+    WrapWP:    Boolean;
+    Children:  string;
+    IsChild:   Boolean;
+  end;
+
+  TResponse = class
+    PromptIEN: Integer;
+    PromptID:  string;
+    Instance:  Integer;
+    IValue:    string;
+    EValue:    string;
+  end;
+
+  TDialogItem = class
+    ID:        string;
+    Required:  Boolean;
+    Hidden:    Boolean;
+    Prompt:    string;
+    DataType:  Char;
+    Domain:    string;
+    EDefault:  string;
+    IDefault:  string;
+    HelpText:  string;
+    CrossRef:  string;
+    ScreenRef: string;
+  end;
+
+  TDialogNames = record
+    Internal: string;
+    Display:  string;
+    BaseIEN:  Integer;
+    BaseName: string;
+  end;
+
+  TConstructOrder = record
+    DialogName: string;
+    LeadText:   string;
+    TrailText:  string;
+    DGroup:     Integer;
+    OrderItem:  Integer;
+    DelayEvent: Char;
+    PTEventPtr: String;  // ptr to #100.2
+    EventPtr:   String;  // ptr to #100.5
+    Specialty:  Integer;
+    Effective:  TFMDateTime;
+    LogTime:    TFMDateTime;
+    OCList: TStringList;
+    DigSig:       string;
+    ResponseList: TList;
+    IsIMODialog:  boolean;  //imo
+    IsEventDefaultOR: Integer;
+  end;
+
+  TPFSSActive = record
+    PFSSActive: boolean;
+    PFSSChecked: boolean;
+  end;
+
+{ General Calls }
+function AskAnotherOrder(ADialog: Integer): Boolean;
+function DisplayGroupByName(const AName: string): Integer;
+function DisplayGroupForDialog(const DialogName: string): Integer;
+procedure IdentifyDialog(var DialogNames: TDialogNames; ADialog: Integer);
+procedure LoadDialogDefinition(Dest: TList; const DialogName: string);
+procedure LoadOrderPrompting(Dest: TList; ADialog: Integer);
+//procedure LoadResponses(Dest: TList; const OrderID: string);
+procedure LoadResponses(Dest: TList; const OrderID: string; var HasObjects: boolean);
+procedure PutNewOrder(var AnOrder: TOrder; ConstructOrder: TConstructOrder; OrderSource: string);
+//procedure PutNewOrderAuto(var AnOrder: TOrder; ADialog: Integer); // no longer used
+function OIMessage(IEN: Integer): string;
+function OrderMenuStyle: Integer;
+function ResolveScreenRef(const ARef: string): string;
+function SubsetOfEntries(const StartFrom: string; Direction: Integer;
+  const XRef, GblRef, ScreenRef: string): TStrings;
+function SubSetOfOrderItems(const StartFrom: string; Direction: Integer;
+  const XRef: string): TStrings;
+function GetDefaultCopay(AnOrderID: string): String;
+procedure SetDefaultCoPayToNewOrder(AnOrderID, CoPayInfo:string);
+procedure ValidateNumericStr(const x, Dom: string; var ErrMsg: string);
+function IsPFSSActive: boolean;
+
+{ Quick Order Calls }
+//function DisplayNameForOD(const InternalName: string): string;
+function GetQuickName(const CRC: string): string;
+procedure LoadQuickListForOD(Dest: TStrings; DGroup: Integer);
+procedure SaveQuickListForOD(Src: TStrings;  DGroup: Integer);
+//procedure PutQuickName(DialogIEN: Integer; const DisplayName: string);
+procedure PutQuickOrder(var NewIEN: Integer; const CRC, DisplayName: string; DGroup: Integer;
+  ResponseList: TList);
+
+{ Medication Calls }
+function AmountsForIVFluid(AnIEN: Integer; FluidType: Char): string;
+procedure AppendMedRoutes(Dest: TStrings);
+procedure CheckAuthForMeds(var x: string);
+function DispenseMessage(AnIEN: Integer): string;
+procedure LookupRoute(const AName: string; var ID, Abbreviation: string);
+function MedIsSupply(AnIEN: Integer): Boolean;
+function QuantityMessage(AnIEN: Integer): string;
+function RequiresCopay(DispenseDrug: Integer): Boolean;
+procedure LoadFormularyAlt(AList: TStringList; AnIEN: Integer; PSType: Char);
+function MedTypeIsIV(AnIEN: Integer): Boolean;
+function ODForMedIn: TStrings;
+function OIForMedIn(AnIEN: Integer): TStrings;
+function ODForIVFluids: TStrings;
+function ODForMedOut: TStrings;
+function OIForMedOut(AnIEN: Integer): TStrings;
+function RatedDisabilities: string;
+//function ValidIVRate(const x: string): Boolean;
+procedure ValidateIVRate(var x: string);
+function ValidSchedule(const x: string; PSType: Char = 'I'): Integer;
+function ValidQuantity(const x: string): Boolean;
+
+{ Vitals Calls }
+function ODForVitals: TStrings;
+
+implementation
+
+uses TRPCB, uOrders, uODBase, fODBase;
+
+var
+  uLastDispenseIEN: Integer;
+  uLastDispenseMsg: string;
+  uLastQuantityMsg: string;
+  uMedRoutes: TStringList;
+  uPFSSActive: TPFSSActive;
+
+{ Common Internal Calls }
+
+procedure SetupORDIALOG(AParam: TParamRecord; ResponseList: TList; IsIV: boolean = False);
+const
+  MAX_STR_LEN = 74;
+var
+  i,j,ALine,odIdx,piIdx : Integer;
+  Subs, x, ODtxt, thePI: string;
+  WPStrings: TStringList;
+  IVDuration, IVDurVal: string;
+begin
+  piIdx := 0;
+  odIdx := 0;
+  IVDuration := '';
+  IVDurVal := '';
+  AParam.PType := list;
+  for j := 0 to ResponseList.Count - 1 do
+  begin
+    if TResponse(ResponseList.Items[j]).PromptID = 'SIG' then
+    begin
+      ODtxt := TResponse(ResponseList.Items[j]).EValue;
+      odIdx := j;
+    end;
+    if TResponse(ResponseList.Items[j]).PromptID = 'PI' then
+      thePI := TResponse(ResponseList.Items[j]).EValue;
+    if Length(Trim(thePI)) > 0 then
+      piIdx := Pos(thePI, ODtxt);
+    if piIdx > 0 then
+    begin
+      Delete(ODtxt,piIdx,Length(thePI));
+      TResponse(ResponseList.Items[odIdx]).EValue := ODtxt;
+    end;
+    if (IsIV and (TResponse(ResponseList.Items[j]).PromptID = 'DAYS')) then
+    begin
+      IVDuration := TResponse(ResponseList.Items[j]).EValue;
+      if (Length(IVDuration) > 1) then
+      begin
+        if (Pos('TOTAL',upperCase(IVDuration))>0) or (Pos('FOR',upperCase(IVDuration))>0) then continue;
+        if (Pos('H',upperCase(IVDuration))>0)  then
+        begin
+          IVDurVal := Copy(IVDuration,1,length(IVDuration)-1);
+          TResponse(ResponseList.Items[j]).IValue := 'for ' + IVDurVal + ' hours';
+        end
+        else if (Pos('D',upperCase(IVDuration))>0) then
+        begin
+          if Pos('DOSES', upperCase(IVDuration)) > 0 then
+            begin
+              IVDurVal := Copy(IVDuration, 1, length(IVDuration)-5);
+              TResponse(ResponseList.Items[j]).IValue := 'for a total of ' + IVDurVal + ' doses';
+            end
+          else
+            begin
+              IVDurVal := Copy(IVDuration,1,length(IVDuration)-1);
+              TResponse(ResponseList.Items[j]).IValue := 'for ' + IVDurVal + ' days';
+            end;
+        end
+        else if ((Pos('ML',upperCase(IVDuration))>0) or (Pos('CC',upperCase(IVDuration))>0)) then
+        begin
+          IVDurVal := Copy(IVDuration,1,length(IVDuration)-2);
+          TResponse(ResponseList.Items[j]).IValue := 'with total volume ' + IVDurVal + 'ml';
+        end
+        else if (Pos('L',upperCase(IVDuration))>0) then
+        begin
+          IVDurVal := Copy(IVDuration,0,length(IVDuration)-1);
+          TResponse(ResponseList.Items[j]).IValue := 'with total volume ' + IVDurVal + 'L';
+        end;
+      end;
+    end;
+  end;
+
+  with AParam, ResponseList do for i := 0 to Count - 1 do
+  begin
+    with TResponse(Items[i]) do
+    begin
+      Subs := IntToStr(PromptIEN) + ',' + IntToStr(Instance);
+      if IValue = TX_WPTYPE then
+      begin
+        WPStrings := TStringList.Create;
+        try
+          WPStrings.Text := EValue;
+          LimitStringLength(WPStrings, MAX_STR_LEN);
+          x := 'ORDIALOG("WP",' + Subs + ')';
+          Mult[Subs] := x;
+          for ALine := 0 to WPStrings.Count - 1 do
+          begin
+            x := '"WP",' + Subs + ',' + IntToStr(ALine+1) + ',0';
+            Mult[x] := WPStrings[ALine];
+          end; {for}
+        finally
+          WPStrings.Free;
+        end; {try}
+      end
+      else Mult[Subs] := IValue;
+    end; {with TResponse}
+  end; {with AParam}
+end;
+
+{ Quick Order Calls }
+
+//function DisplayNameForOD(const InternalName: string): string;
+//begin
+//  Result := sCallV('ORWDXQ DLGNAME', [InternalName]);
+//end;
+
+function GetQuickName(const CRC: string): string;
+begin
+  Result := sCallV('ORWDXQ GETQNAM', [CRC]);
+end;
+
+procedure LoadQuickListForOD(Dest: TStrings; DGroup: Integer);
+begin
+  CallV('ORWDXQ GETQLST', [DGroup]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure SaveQuickListForOD(Src: TStrings;  DGroup: Integer);
+begin
+  CallV('ORWDXQ PUTQLST', [DGroup, Src]);
+  // ignore return value for now
+end;
+
+//procedure PutQuickName(DialogIEN: Integer; const DisplayName: string);
+//begin
+//  CallV('ORWDXQ PUTQNAM', [DialogIEN, DisplayName]);
+//  // ignore return value for now
+//end;
+
+procedure PutQuickOrder(var NewIEN: Integer; const CRC, DisplayName: string; DGroup: Integer;
+  ResponseList: TList);
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORWDXQ DLGSAVE';
+    Param[0].PType := literal;
+    Param[0].Value := CRC;
+    Param[1].PType := literal;
+    Param[1].Value := DisplayName;
+    Param[2].PType := literal;
+    Param[2].Value := IntToStr(DGroup);
+    SetupORDIALOG(Param[3], ResponseList);
+    CallBroker;
+    if Results.Count = 0 then Exit;  // error creating order
+    NewIEN := StrToIntDef(Results[0], 0);
+  end;
+end;
+
+{ General Calls }
+
+function AskAnotherOrder(ADialog: Integer): Boolean;
+begin
+  Result := sCallV('ORWDX AGAIN', [ADialog]) = '1';
+end;
+
+function DisplayGroupByName(const AName: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDX DGNM', [AName]), 0);
+end;
+
+function DisplayGroupForDialog(const DialogName: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDX DGRP', [DialogName]),0);
+end;
+
+procedure IdentifyDialog(var DialogNames: TDialogNames; ADialog: Integer);
+var
+  x: string;
+begin
+  x := sCallV('ORWDXM DLGNAME', [ADialog]);
+  with DialogNames do
+  begin
+    Internal := Piece(x, U, 1);
+    Display  := Piece(x, U, 2);
+    BaseIEN  := StrToIntDef(Piece(x, U, 3), 0);
+    BaseName := Piece(x, U, 4);
+  end;
+end;
+
+procedure LoadDialogDefinition(Dest: TList; const DialogName: string);
+{ loads a list of TPrompt records
+  Pieces: PromptID[1]^PromptIEN[2]^FmtSeq[3]^Fmt[4]^Omit[5]^Lead[6]^Trail[7]^NwLn[8]^Wrap[9]^Children[10]^IsChild[11] }
+var
+  i: Integer;
+  APrompt: TPrompt;
+begin
+  CallV('ORWDX DLGDEF', [DialogName]);
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    APrompt := TPrompt.Create;
+    with APrompt do
+    begin
+      ID        := Piece(Results[i], U, 1);
+      IEN       := StrToIntDef(Piece(Results[i], U, 2), 0);
+      if Length(Piece(Results[i], U, 3)) > 0
+        then Sequence := StrToFloat(Piece(Results[i], U, 3))
+        else Sequence := 0;
+      FmtCode   := Piece(Results[i], U, 4);
+      Omit      := Piece(Results[i], U, 5);
+      Leading   := Piece(Results[i], U, 6);
+      Trailing  := Piece(Results[i], U, 7);
+      NewLine   := Piece(Results[i], U, 8) = '1';
+      WrapWP    := Piece(Results[i], U, 9) = '1';
+      Children  := Piece(Results[i], U, 10);
+      IsChild   := Piece(Results[i], U, 11) = '1';
+    end;
+    Dest.Add(APrompt);
+  end;
+end;
+
+procedure LoadOrderPrompting(Dest: TList; ADialog: Integer);
+// ID^REQ^HID^PROMPT^TYPE^DOMAIN^DEFAULT^IDFLT^HELP
+var
+  i: Integer;
+  DialogItem: TDialogItem;
+begin
+  CallV('ORWDXM PROMPTS', [ADialog]);
+  DialogItem := nil;
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    if CharAt(Results[i], 1) = '~' then
+    begin
+      DialogItem := TDialogItem.Create;                       // create a new dialog item
+      with DialogItem do
+      begin
+        Results[i] := Copy(Results[i], 2, Length(Results[i]));
+        ID         := Piece(Results[i], U, 1);
+        Required   := Piece(Results[i], U, 2) = '1';
+        Hidden     := Piece(Results[i], U, 3) = '1';
+        Prompt     := Piece(Results[i], U, 4);
+        DataType   := CharAt(Piece(Results[i], U, 5), 1);
+        Domain     := Piece(Results[i], U, 6);
+        EDefault   := Piece(Results[i], U, 7);
+        IDefault   := Piece(Results[i], U, 8);
+        HelpText   := Piece(Results[i], U, 9);
+        CrossRef   := Piece(Results[i], U, 10);
+        ScreenRef  := Piece(Results[i], U, 11);
+        if Hidden then DataType := 'H';                       // if hidden, use 'Hidden' type
+      end;
+      Dest.Add(DialogItem);
+    end;
+    if (CharAt(Results[i], 1) = 't') and (DialogItem <> nil) then  // use last DialogItem
+      with DialogItem do EDefault := EDefault + Copy(Results[i], 2, Length(Results[i])) + CRLF;
+  end;
+end;
+
+procedure ExtractToResponses(Dest: TList; var HasObjects: boolean);
+{ load a list with TResponse records, assumes source strings are in RPCBrokerV.Results }
+var
+  i: Integer;
+  AResponse: TResponse;
+  WPContainsObjects, TxContainsObjects: boolean;
+  TempBroker: TStrings;
+begin
+  i := 0;
+  HasObjects := FALSE;
+  TempBroker := TStringlist.Create;
+  FastAssign(RPCBrokerV.Results, TempBroker);
+  try
+  with TempBroker do while i < Count do
+  begin
+    if CharAt(Strings[i], 1) = '~' then
+    begin
+      AResponse := TResponse.Create;
+      with AResponse do
+      begin
+        PromptIEN := StrToIntDef(Piece(Copy(Strings[i], 2, 255), U, 1), 0);
+        Instance := StrToIntDef(Piece(Strings[i], U, 2), 0);
+        PromptID := Piece(Strings[i], U, 3);
+        Inc(i);
+        while (i < Count) and (CharAt(Strings[i], 1) <> '~') do
+        begin
+          if CharAt(Strings[i], 1) = 'i' then IValue := Copy(Strings[i], 2, 255);
+          if CharAt(Strings[i], 1) = 'e' then EValue := Copy(Strings[i], 2, 255);
+          if CharAt(Strings[i], 1) = 't' then
+          begin
+            if Length(EValue) > 0 then EValue := EValue + CRLF;
+            EValue := EValue + Copy(Strings[i], 2, 255);
+            IValue := TX_WPTYPE;  // signals that this is a word processing field
+          end;
+          Inc(i);
+        end; {while i}
+        if IValue <> TX_WPTYPE then ExpandOrderObjects(IValue, TxContainsObjects);
+        ExpandOrderObjects(EValue, WPContainsObjects);
+        HasObjects := HasObjects or WPContainsObjects or TxContainsObjects;
+        Dest.Add(AResponse);
+      end; {with AResponse}
+    end; {if CharAt}
+  end; {With RPCBrokerV}
+  finally
+    TempBroker.Free;
+  end;
+end;
+
+procedure LoadResponses(Dest: TList; const OrderID: string; var HasObjects: boolean);
+var
+Transfer: boolean;
+begin
+  if ((XferOuttoInOnMeds = True) or (XfInToOutNow = True)) and (CharAt(OrderID,1)='C') then Transfer := true
+  else Transfer := false;
+  CallV('ORWDX LOADRSP', [OrderID, Transfer]);
+  ExtractToResponses(Dest, HasObjects);
+end;
+
+procedure PutNewOrder(var AnOrder: TOrder; ConstructOrder: TConstructOrder; OrderSource: string);
+var
+  i: Integer;
+  x, y, z: string;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORWDX SAVE';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;  //*DFN*
+    Param[1].PType := literal;
+    Param[1].Value := IntToStr(Encounter.Provider);
+    Param[2].PType := literal;
+    (*if loc > 0 then Param[2].Value := IntToStr(Loc)
+    else Param[2].Value := IntToStr(Encounter.Location);*)
+    Param[2].Value := IntToStr(Encounter.Location);
+    Param[3].PType := literal;
+    Param[3].Value := ConstructOrder.DialogName;
+    Param[4].PType := literal;
+    Param[4].Value := IntToStr(ConstructOrder.DGroup);
+    Param[5].PType := literal;
+    Param[5].Value := IntToStr(ConstructOrder.OrderItem);
+    Param[6].PType := literal;
+    Param[6].Value := AnOrder.EditOf;        // null if new order, otherwise ORIFN of original
+    if (ConstructOrder.DGroup = IVDisp) then
+      SetupORDIALOG(Param[7], ConstructOrder.ResponseList, True)
+    else
+      SetupORDIALOG(Param[7], ConstructOrder.ResponseList);
+    if Length(ConstructOrder.LeadText)  > 0
+      then Param[7].Mult['"ORLEAD"']  := ConstructOrder.LeadText;
+    if Length(ConstructOrder.TrailText) > 0
+      then Param[7].Mult['"ORTRAIL"'] := ConstructOrder.TrailText;
+    Param[7].Mult['"ORCHECK"'] := IntToStr(ConstructOrder.OCList.Count);
+    with ConstructOrder do for i := 0 to OCList.Count - 1 do
+    begin
+      // put quotes around everything to prevent broker from choking
+      y := '"ORCHECK","' + Piece(OCList[i], U, 1) + '","' + Piece(OCList[i], U, 3) +
+        '","' + IntToStr(i+1) + '"';
+      Param[7].Mult[y] := Pieces(OCList[i], U, 2, 4);
+    end;
+    if ConstructOrder.DelayEvent in ['A','D','T','M','O'] then
+      Param[7].Mult['"OREVENT"'] := ConstructOrder.PTEventPtr;
+    if ConstructOrder.LogTime > 0
+      then Param[7].Mult['"ORSLOG"'] := FloatToStr(ConstructOrder.LogTime);
+    Param[7].Mult['"ORTS"'] := IntToStr(Patient.Specialty);  // pass in treating specialty for ORTS
+    Param[8].PType := literal;
+    Param[8].Value := ConstructOrder.DigSig;
+    if Constructorder.IsIMODialog then
+    begin
+      Param[9].PType := literal;                       //IMO
+      Param[9].Value := FloatToStr(Encounter.DateTime);
+    end else
+    begin
+      Param[9].PType := literal;                       //IMO
+      Param[9].Value := '';
+    end;
+    Param[10].PType := literal;
+    Param[10].Value := OrderSource;
+    Param[11].PType := literal;
+    Param[11].Value := IntToStr(Constructorder.IsEventDefaultOR);
+
+    CallBroker;
+    if Results.Count = 0 then Exit;          // error creating order
+    x := Results[0];
+    Results.Delete(0);
+    y := '';
+
+    while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+      begin
+        y := y + Copy(Results[0], 2, Length(Results[0])) + CRLF;
+        Results.Delete(0);
+      end;
+    if Length(y) > 0 then y := Copy(y, 1, Length(y) - 2);  // take off last CRLF
+    z := '';
+    if (Results.Count > 0) and (Results[0] = '|') then
+      begin
+        Results.Delete(0);
+        while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+          begin
+            z := z + Copy(Results[0], 2, Length(Results[0]));
+            Results.Delete(0);
+          end;
+      end;
+    SetOrderFields(AnOrder, x, y, z);
+  end;
+end;
+
+{ no longer used -
+procedure PutNewOrderAuto(var AnOrder: TOrder; ADialog: Integer);
+var
+  i: Integer;
+  y: string;
+begin
+  CallV('ORWDXM AUTOACK', [Patient.DFN, Encounter.Provider, Encounter.Location, ADialog]);
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    y := '';
+    for i := 1 to Results.Count - 1 do
+      y := y + Copy(Results[i], 2, Length(Results[i])) + CRLF;
+    if Length(y) > 0 then y := Copy(y, 1, Length(y) - 2);  // take off last CRLF
+    SetOrderFields(AnOrder, Results[0], y);
+  end;
+end;
+}
+
+function OIMessage(IEN: Integer): string;
+begin
+  CallV('ORWDX MSG', [IEN]);
+  with RPCBrokerV.Results do SetString(Result, GetText, Length(Text));
+end;
+
+function OrderMenuStyle: Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDXM MSTYLE', [nil]), 0);
+end;
+
+function ResolveScreenRef(const ARef: string): string;
+begin
+  Result := sCallV('ORWDXM RSCRN', [ARef]);
+end;
+
+function SubSetOfOrderItems(const StartFrom: string; Direction: Integer;
+  const XRef: string): TStrings;
+{ returns a pointer to a list of orderable items matching an S.xxx cross reference (for use in
+  a long list box) -  The return value is  a pointer to RPCBrokerV.Results, so the data must
+  be used BEFORE the next broker call! }
+begin
+  CallV('ORWDX ORDITM', [StartFrom, Direction, XRef]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetDefaultCopay(AnOrderID: string): String;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORWDPS4 CPLST';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;
+    Param[1].PType := list;
+    Param[1].Mult['1'] := AnOrderID;
+  end;
+  CallBroker;
+  if RPCBrokerV.Results.Count > 0 then
+    Result := RPCBrokerV.Results[0]
+  else
+    Result := '';
+end;
+
+procedure SetDefaultCoPayToNewOrder(AnOrderID, CoPayInfo:string);
+var
+  temp,CPExems: string;
+  CoPayValue: array [1..7] of Char;
+  i: integer;
+begin
+  // SC AO IR EC MST HNC CV
+  CoPayValue[1] := 'N';
+  CoPayValue[2] := 'N';
+  CoPayValue[3] := 'N';
+  CoPayValue[4] := 'N';
+  CoPayValue[5] := 'N';
+  CoPayValue[6] := 'N';
+  CoPayValue[7] := 'N';
+  temp := Pieces(CoPayInfo,'^',2,6);
+  i := 1;
+  while Length(Piece(temp,'^',i))>0 do
+  begin
+    if Piece(Piece(temp,'^',i),';',1) = 'SC' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[1] := 'C'
+      else
+        CopayValue[1] := 'U';
+    end;
+    if Piece(Piece(temp,'^',i),';',1) = 'AO' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[2] := 'C'
+      else
+        CopayValue[2] := 'U';
+    end;
+    if Piece(Piece(temp,'^',i),';',1) = 'IR' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[3] := 'C'
+      else
+        CopayValue[3] := 'U';
+    end;
+    if Piece(Piece(temp,'^',i),';',1) = 'EC' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[4] := 'C'
+      else
+        CopayValue[4] := 'U';
+    end;
+    if Piece(Piece(temp,'^',i),';',1) = 'MST' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[5] := 'C'
+      else
+        CopayValue[5] := 'U';
+    end;
+    if Piece(Piece(temp,'^',i),';',1) = 'HNC' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[6] := 'C'
+      else
+        CopayValue[6] := 'U';
+    end;
+    if Piece(Piece(temp,'^',i),';',1) = 'CV' then
+    begin
+      if Piece( Piece(temp,'^',i),';',2) = '1' then
+        CoPayValue[7] := 'C'
+      else
+        CopayValue[7] := 'U';
+    end;
+    i := i + 1;
+  end;
+  CPExems := CoPayValue[1] + CoPayValue[2] + CoPayValue[3] + CoPayValue[4]
+           + CoPayValue[5] + CoPayValue[6] + CoPayValue[7];
+  CPExems := AnOrderId + '^' + CPExems;
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORWDPS4 CPINFO';
+    Param[0].PType := list;
+    Param[0].Mult['1'] := CPExems;
+    CallBroker;
+  end;
+end;
+
+function SubsetOfEntries(const StartFrom: string; Direction: Integer;
+  const XRef, GblRef, ScreenRef: string): TStrings;
+{ returns a pointer to a list of file entries (for use in a long list box) -
+  The return value is  a pointer to RPCBrokerV.Results, so the data must
+  be used BEFORE the next broker call! }
+begin
+  CallV('ORWDOR LKSCRN', [StartFrom, Direction, XRef, GblRef, ScreenRef]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure ValidateNumericStr(const x, Dom: string; var ErrMsg: string);
+begin
+  ErrMsg := sCallV('ORWDOR VALNUM', [x, Dom]);
+  if ErrMsg = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+end;
+
+function IsPFSSActive: boolean;
+begin
+  with uPFSSActive do
+    if not PFSSChecked then
+      begin
+        PFSSActive := (sCallV('ORWPFSS IS PFSS ACTIVE?', [nil]) = '1');
+        PFSSChecked := True;
+      end;
+  Result := uPFSSActive.PFSSActive
+end;
+
+{ Medication Calls }
+
+procedure AppendMedRoutes(Dest: TStrings);
+var
+  i: Integer;
+  x: string;
+begin
+  if uMedRoutes = nil then
+  begin
+    CallV('ORWDPS32 ALLROUTE', [nil]);
+    with RPCBrokerV do
+    begin
+      uMedRoutes := TStringList.Create;
+      FastAssign(RPCBrokerV.Results, uMedRoutes);
+      for i := 0 to Results.Count - 1 do if Length(Piece(Results[i], U, 3)) > 0 then
+      begin
+        x := Piece(Results[i], U, 1) + U + Piece(Results[i], U, 3) +
+             ' (' + Piece(Results[i], U, 2) + ')' + U + Piece(Results[i], U, 3);
+        uMedRoutes.Add(x);
+      end; {if Length}
+      SortByPiece(uMedRoutes, U, 2);
+    end; {with RPCBrokerV}
+  end; {if uMedRoutes}
+  FastAddStrings(uMedRoutes, Dest);
+end;
+
+procedure CheckAuthForMeds(var x: string);
+begin
+  x := Piece(sCallV('ORWDPS32 AUTH', [Encounter.Provider]), U, 2);
+end;
+
+function DispenseMessage(AnIEN: Integer): string;
+var
+  x: string;
+begin
+  if AnIEN = uLastDispenseIEN then Result := uLastDispenseMsg else
+  begin
+    x := sCallV('ORWDPS32 DRUGMSG', [AnIEN]);
+    uLastDispenseIEN := AnIEN;
+    uLastDispenseMsg := Piece(x, U, 1);
+    uLastQuantityMsg := Piece(x, U, 2);
+    Result := uLastDispenseMsg;
+  end;
+end;
+
+function QuantityMessage(AnIEN: Integer): string;
+var
+  x: string;
+begin
+  if AnIEN = uLastDispenseIEN then Result := uLastQuantityMsg else
+  begin
+    x := sCallV('ORWDPS32 DRUGMSG', [AnIEN]);
+    uLastDispenseIEN := AnIEN;
+    uLastDispenseMsg := Piece(x, U, 1);
+    uLastQuantityMsg := Piece(x, U, 2);
+    Result := uLastQuantityMsg;
+  end;
+end;
+
+function RequiresCopay(DispenseDrug: Integer): Boolean;
+begin
+  Result := sCallV('ORWDPS32 SCSTS', [Patient.DFN, DispenseDrug]) = '1';
+end;
+
+procedure LoadFormularyAlt(AList: TStringList; AnIEN: Integer; PSType: Char);
+begin
+  CallV('ORWDPS32 FORMALT', [AnIEN, PSType]);
+  FastAssign(RPCBrokerV.Results, AList);
+end;
+
+procedure LookupRoute(const AName: string; var ID, Abbreviation: string);
+var
+  x: string;
+begin
+  x := sCallV('ORWDPS32 VALROUTE', [AName]);
+  ID := Piece(x, U, 1);
+  Abbreviation := Piece(x, U, 2);
+end;
+
+function MedIsSupply(AnIEN: Integer): Boolean;
+begin
+  Result := sCallV('ORWDPS32 ISSPLY', [AnIEN]) = '1';
+end;
+
+function MedTypeIsIV(AnIEN: Integer): Boolean;
+begin
+  Result := sCallV('ORWDPS32 MEDISIV', [AnIEN]) = '1';
+end;
+
+function ODForMedIn: TStrings;
+{ Returns init values for inpatient meds dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDPS32 DLGSLCT', [PST_UNIT_DOSE, patient.dfn, patient.location]);
+  Result := RPCBrokerV.Results;
+end;
+
+function ODForIVFluids: TStrings;
+{ Returns init values for IV Fluids dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDPS32 DLGSLCT', [PST_IV_FLUIDS, patient.dfn, patient.location]);
+  Result := RPCBrokerV.Results;
+end;
+
+function AmountsForIVFluid(AnIEN: Integer; FluidType: Char): string;
+begin
+  Result := sCallV('ORWDPS32 IVAMT', [AnIEN, FluidType]);
+end;
+
+function ODForMedOut: TStrings;
+{ Returns init values for outpatient meds dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDPS32 DLGSLCT', [PST_OUTPATIENT, patient.dfn, patient.location]);
+  Result := RPCBrokerV.Results;
+end;
+
+function OIForMedIn(AnIEN: Integer): TStrings;
+{ Returns init values for inpatient meds order item.  The results must be used immediately. }
+begin
+  CallV('ORWDPS32 OISLCT', [AnIEN, PST_UNIT_DOSE, Patient.DFN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function OIForMedOut(AnIEN: Integer): TStrings;
+{ Returns init values for outpatient meds order item.  The results must be used immediately. }
+begin
+  CallV('ORWDPS32 OISLCT', [AnIEN, PST_OUTPATIENT, Patient.DFN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function RatedDisabilities: string;
+{ Returns a list of rated disabilities, if any, for a patient }
+begin
+  CallV('ORWPCE SCDIS', [Patient.DFN]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+procedure ValidateIVRate(var x: string);
+begin
+  x := sCallV('ORWDPS32 VALRATE', [x]);
+end;
+
+//function ValidIVRate(const x: string): Boolean;
+//{ returns true if the text entered as the IV rate is valid }
+//begin
+//  Result := sCallV('ORWDPS32 VALRATE', [x]) = '1';
+//end;
+
+function ValidSchedule(const x: string; PSType: Char = 'I'): Integer;
+{ returns 1 if schedule is valid, 0 if schedule is not valid, -1 pharmacy routine not there }
+begin
+  Result := StrToIntDef(sCallV('ORWDPS32 VALSCH', [x, PSType]), -1);
+end;
+
+function ValidQuantity(const x: string): Boolean;
+{ returns true if the text entered as the quantity is valid }
+begin
+  Result := sCallV('ORWDPS32 VALQTY', [Trim(x)]) = '1';
+end;
+
+function ODForVitals: TStrings;
+{ Returns init values for vitals dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDOR VMSLCT', [nil]);
+  Result := RPCBrokerV.Results;
+end;
+
+initialization
+  uLastDispenseIEN := 0;
+  uLastDispenseMsg := '';
+
+finalization
+  if uMedRoutes <> nil then uMedRoutes.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODDiet.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODDiet.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODDiet.pas	(revision 1676)
@@ -0,0 +1,214 @@
+unit rODDiet;
+
+interface
+
+uses SysUtils, Windows, Classes, ORNet, ORFn, uCore, uConst, rOrders;
+
+type
+  TOutpatientPatchInstalled = record
+    PatchInstalled: boolean;
+    PatchChecked: boolean;
+  end;
+
+  TUserHasFHAUTHKey = record
+    UserHasKey: boolean;
+    KeyChecked: boolean;
+  end;
+
+  TDietParams = record
+    Tray: Boolean;
+    Cafeteria: Boolean;
+    DiningRm: Boolean;
+    Bagged: Boolean;
+    RegIEN: Integer;
+    NPOIEN: Integer;
+    EarlyIEN: string;
+    LateIEN: string;
+    CurTF:  string;
+    BTimes: string;
+    NTimes: string;
+    ETimes: string;
+    Alarms: string;
+    OPMaxDays: integer;
+    OPDefaultDiet: integer;
+  end;
+
+function CurrentDietText: string;
+function DietAttributes(OI: Integer): string;
+function ExpandedQuantity(Product, Strength: Integer; const Qty: string): string;
+procedure LoadDietParams(var DietParams: TDietParams; ALocation: string);
+procedure AppendTFProducts(Dest: TStrings);
+function SubSetOfDiets(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfOPDiets: TStrings;
+procedure OrderLateTray(NewOrder: TOrder; Meal: Char; const MealTime: string; Bagged: Boolean);
+function IsolationID: string;
+function CurrentIsolation: string;
+procedure LoadIsolations(Dest: TStrings);
+procedure LoadDietQuickList(Dest: TStrings; const GroupID: string);
+function DietDialogType(GroupIEN: Integer): Char;
+function OutpatientPatchInstalled: boolean;
+function UserHasFHAUTHKey: boolean;
+procedure GetCurrentRecurringOPMeals(Dest: TStrings; MealType: string = '');
+function OutpatientLocationConfigured(ALocation: string): boolean;
+
+
+implementation
+
+uses TRPCB, rMisc, rCore;
+
+var
+  uOutpatientPatchInstalled: TOutpatientPatchInstalled;
+  uUserHasFHAUTHKey: TUserHasFHAUTHKey;
+
+function DietAttributes(OI: Integer): string;
+begin
+  CallV('ORWDFH ATTR', [OI]);
+  Result := RPCBrokerV.Results[0];
+end;
+
+procedure LoadDietParams(var DietParams: TDietParams; ALocation: string);
+begin
+  CallV('ORWDFH PARAM', [Patient.DFN, ALocation]);
+  with RPCBrokerV, DietParams do
+  begin
+    if Results.Count > 0 then
+    begin
+      BTimes := Pieces(Results[0], U,  1,  6);
+      NTimes := Pieces(Results[0], U,  7, 12);
+      ETimes := Pieces(Results[0], U, 13, 18);
+    end;
+    if Results.Count > 1 then
+    begin
+      Alarms := Pieces(Results[1], U, 1, 6);
+      Bagged := Piece(Results[1], U, 10) = 'Y';
+    end;
+    if Results.Count > 2 then
+    begin
+      Tray      := Pos('T', Results[2]) > 0;
+      Cafeteria := Pos('C', Results[2]) > 0;
+      DiningRm  := Pos('D', Results[2]) > 0;
+      RegIEN    := StrToIntDef(Piece(Results[2], U, 2), 0);
+      NPOIEN    := StrToIntDef(Piece(Results[2], U, 3), 0);
+      EarlyIEN  := Piece(Results[2], U, 4);
+      LateIEN   := Piece(Results[2], U, 5);
+      CurTF     := Piece(Results[2], U, 6);
+    end;
+    if (not Tray) and (not Cafeteria) and (not DiningRm) then Tray := True;
+    if Results.Count > 3 then
+      OPMaxDays := StrToIntDef(Results[3], 30)
+    else
+      OPMaxDays := 30;
+    if Results.Count > 4 then
+      OPDefaultDiet := StrToIntDef(Results[4], 0)
+  end;
+end;
+
+function CurrentDietText: string;
+begin
+  CallV('ORWDFH TXT', [Patient.DFN]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+function CurrentTFText(const IENStr: string): string;
+begin
+end;
+
+procedure AppendTFProducts(Dest: TStrings);
+begin
+  CallV('ORWDFH TFPROD', [nil]);
+  FastAddStrings(RPCBrokerV.Results, Dest);
+end;
+
+function ExpandedQuantity(Product, Strength: Integer; const Qty: string): string;
+begin
+  Result := '';
+  if (Product = 0) or (Strength = 0) or (Length(Qty) = 0) then Exit;
+  Result := sCallV('ORWDFH QTY2CC', [Product, Strength, Qty]);
+end;
+
+function SubSetOfDiets(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of orderable items matching an S.xxx cross reference (for use in
+  a long list box) -  The return value is  a pointer to RPCBrokerV.Results, so the data must
+  be used BEFORE the next broker call! }
+begin
+  CallV('ORWDFH DIETS', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfOPDiets: TStrings;
+begin
+  CallV('ORWDFH OPDIETS', [nil]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure OrderLateTray(NewOrder: TOrder; Meal: Char; const MealTime: string; Bagged: Boolean);
+begin
+  CallV('ORWDFH ADDLATE', [Patient.DFN, Encounter.Provider, Encounter.Location, Meal, MealTime, Bagged]);
+  SetOrderFromResults(NewOrder);
+end;
+
+function IsolationID: string;
+begin
+  Result := sCallV('ORWDFH ISOIEN', [nil]);
+end;
+
+function CurrentIsolation: string;
+begin
+  Result := sCallV('ORWDFH CURISO', [Patient.DFN]);
+end;
+
+procedure LoadIsolations(Dest: TStrings);
+begin
+  CallV('ORWDFH ISOLIST', [nil]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadDietQuickList(Dest: TStrings; const GroupID: string);
+begin
+  CallV('ORWDXQ GETQLST', [GroupID, 'Q']);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function DietDialogType(GroupIEN: Integer): Char;
+begin
+  Result := CharAt(sCallV('ORWDFH FINDTYP', [GroupIEN]), 1);
+  if not (Result in ['A', 'D', 'E', 'N', 'P', 'T', 'M']) then Result := 'D';
+end;
+
+function OutpatientPatchInstalled: boolean;
+begin
+  with uOutpatientPatchInstalled do
+    if not PatchChecked then
+      begin
+        //PatchInstalled := True;
+        { TODO -oRich V. -cOutpatient Meals : Uncomment when available }
+        PatchInstalled := (PackageVersion('FH') >= '5.5');
+        PatchChecked := True;
+      end;
+  Result := uOutpatientPatchInstalled.PatchInstalled;
+end;
+
+function UserHasFHAUTHKey: boolean;
+begin
+  with uUserHasFHAUTHKey do
+    if not KeyChecked then
+      begin
+        UserHasKey := HasSecurityKey('FHAUTH');
+        KeyChecked := True;
+      end;
+  Result := uUserHasFHAUTHKey.UserHasKey;
+end;
+
+procedure GetCurrentRecurringOPMeals(Dest: TStrings; MealType: string = '');
+begin
+  CallV('ORWDFH CURRENT MEALS', [Patient.DFN, MealType]);
+  FastAssign(RPCBrokerV.Results, Dest);
+  MixedCaseList(Dest);
+end;
+
+function OutpatientLocationConfigured(ALocation: string): boolean;
+begin
+  Result := (sCallV('ORWDFH NFSLOC READY', [ALocation]) = '1');
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODLab.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODLab.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODLab.pas	(revision 1676)
@@ -0,0 +1,322 @@
+unit rODLab;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, TRPCB, dialogs ;
+
+     { Laboratory Ordering Calls }
+function  ODForLab(Location: integer; Division: integer = 0): TStrings;
+procedure LoadLabTestData(LoadData: TStringList; LabTestIEN: string) ;
+procedure LoadSamples(LoadList: TStringList) ;
+procedure LoadSpecimens(SpecimenList: TStringList) ;
+function  SubsetOfSpecimens(const StartFrom: string; Direction: Integer): TStrings;
+function  CalcStopDate(Text: string): string ;
+function  MaxDays(Location, Schedule: integer): integer;
+function  IsLabCollectTime(ADateTime: TFMDateTime; Location: integer): boolean;
+function  ImmediateCollectTimes: TStrings;
+function  LabCollectFutureDays(Location: integer; Division: integer = 0): integer;
+function  GetDefaultImmCollTime: TFMDateTime;
+function  ValidImmCollTime(CollTime: TFMDateTime): string;
+function  GetOneCollSamp(LRFSAMP: integer): TStrings;
+function  GetOneSpecimen(LRFSPEC: integer): string;
+procedure GetLabTimesForDate(Dest: TStrings; LabDate: TFMDateTime; Location: integer);
+function  GetLastCollectionTime: string;
+procedure GetPatientBBInfo(Dest: TStrings; PatientID: string; Loc: integer);
+procedure ListForQuickOrders(var AListIEN, ACount: Integer; const DGrpNm: string);
+procedure SubsetOfQuickOrders(Dest: TStringList; AListIEN, First, Last: Integer);
+procedure GetPatientBloodResults(Dest: TStrings; PatientID: string; ATests: TStringList);
+procedure GetPatientBloodResultsRaw(Dest: TStrings; PatientID: string; ATests: TStringList);
+function  StatAllowed(PatientID: string): boolean;
+procedure GetBloodComponents(Dest: TStrings);
+function  NursAdminSuppress: boolean;
+function  GetSubtype(TestName: string): string;
+function  TNSDaysBack: integer;
+procedure CheckForChangeFromLCtoWCOnAccept(Dest: TStrings; ALocation: integer; AStartDate, ACollType, ASchedule, ADuration: string);
+procedure CheckForChangeFromLCtoWCOnRelease(Dest: TStrings; ALocation: integer; OrderList: TStringList);
+function  GetLCtoWCInstructions(Alocation: integer): string;
+procedure FormatLCtoWCDisplayTextOnAccept(InputList, OutputList: TStrings);
+procedure FormatLCtoWCDisplayTextOnRelease(InputList, OutputList: TStrings);
+
+const
+  TX0 = 'The following Lab orders will be changed to Ward Collect:';
+  TX2 = 'Order Date' + #9 +#9 + 'Reason Changed to Ward Collect';
+  TX5 = 'Please contact the ward staff to insure the specimen is collected.';
+  TX6 = 'You can print this screen for reference.';
+  TX_BLANK = '';
+
+implementation
+
+uses  rODBase;
+
+procedure GetBloodComponents(Dest: TStrings);
+begin
+  tCallV(Dest, 'ORWDXVB COMPORD', []);
+end;
+
+function NursAdminSuppress: boolean;
+begin
+  Result := (StrToInt(sCallV('ORWDXVB NURSADMN',[nil])) < 1);
+end;
+
+function  StatAllowed(PatientID: string): boolean;
+begin
+  Result := (StrToInt(sCallV('ORWDXVB STATALOW',[PatientID])) > 0);
+end;
+
+procedure GetPatientBloodResultsRaw(Dest: TStrings; PatientID: string; ATests: TStringList);
+begin
+  tCallV(Dest, 'ORWDXVB RAW', [PatientID, ATests]);
+end;
+
+procedure GetPatientBloodResults(Dest: TStrings; PatientID: string; ATests: TStringList);
+begin
+  tCallV(Dest, 'ORWDXVB RESULTS', [PatientID, ATests]);
+end;
+
+procedure GetPatientBBInfo(Dest: TStrings; PatientID: string; Loc: integer);
+begin
+  tCallV(Dest, 'ORWDXVB GETALL', [PatientID, Loc]);
+end;
+
+function GetSubtype(TestName: string): string;
+begin
+  Result := sCallV('ORWDXVB SUBCHK', [TestName]);
+end;
+
+function TNSDaysBack: integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDXVB VBTNS', [nil]),3);
+end;
+
+procedure ListForQuickOrders(var AListIEN, ACount: Integer; const DGrpNm: string);
+begin
+  CallV('ORWUL QV4DG', [DGrpNm]);
+  AListIEN := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 1), 0);
+  ACount   := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 2), 0);
+end;
+
+procedure SubsetOfQuickOrders(Dest: TStringList; AListIEN, First, Last: Integer);
+var
+  i: Integer;
+begin
+ CallV('ORWUL QVSUB', [AListIEN,'','']);
+ for i := 0 to RPCBrokerV.Results.Count -1 do
+   Dest.Add(RPCBrokerV.Results[i]);
+end;
+
+function ODForLab(Location, Division: integer): TStrings;
+{ Returns init values for laboratory dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDLR32 DEF', [Location,Division]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure LoadLabTestData(LoadData: TStringList; LabTestIEN: string) ;
+begin
+    tCallV(LoadData, 'ORWDLR32 LOAD', [LabTestIEN]);
+end ;
+
+procedure LoadSamples(LoadList: TStringList) ;
+begin
+    tCallV(LoadList, 'ORWDLR32 ALLSAMP', [nil]);
+end ;
+
+function SubsetOfSpecimens(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  Callv('ORWDLR32 ALLSPEC',[StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end ;
+
+procedure LoadSpecimens(SpecimenList: TStringList) ;
+begin
+  tCallV(SpecimenList, 'ORWDLR32 ABBSPEC', [nil]);
+end ;
+
+function CalcStopDate(Text: string): string ;
+begin
+  Result := sCallV('ORWDLR32 STOP', [Text]);
+end ;
+
+function MaxDays(Location, Schedule: integer): integer;
+begin
+  Result := StrToInt(sCallV('ORWDLR32 MAXDAYS',[Location, Schedule]));
+end;
+
+function IsLabCollectTime(ADateTime: TFMDateTime; Location: integer): boolean;
+begin
+  Result := (StrToInt(sCallV('ORWDLR32 LAB COLL TIME',[ADateTime,Location])) > 0);
+end;
+
+function  LabCollectFutureDays(Location: integer; Division: integer): integer;
+begin
+  Result := StrToInt(sCallV('ORWDLR33 FUTURE LAB COLLECTS',[Location, Division]));
+end;
+
+function  ImmediateCollectTimes: TStrings;
+begin
+  CallV('ORWDLR32 IMMED COLLECT',[nil]);
+  Result := RPCBrokerV.Results;
+end;
+
+function  GetDefaultImmCollTime: TFMDateTime;
+begin
+  CallV('ORWDLR32 IC DEFAULT',[nil]);
+  Result := StrToFloat(Piece(RPCBrokerV.Results[0], U, 1));
+end;
+
+function  ValidImmCollTime(CollTime: TFMDateTime): string;
+begin
+  CallV('ORWDLR32 IC VALID',[CollTime]);
+  Result := RPCBrokerV.Results[0];
+end;
+
+function  GetOneCollSamp(LRFSAMP: integer): TStrings;
+begin
+  CallV('ORWDLR32 ONE SAMPLE', [LRFSAMP]);
+  Result := RPCBrokerV.Results;
+end;
+
+function  GetOneSpecimen(LRFSPEC: integer): string;
+begin
+  Result := sCallV('ORWDLR32 ONE SPECIMEN', [LRFSPEC]);
+end;
+
+function  GetLastCollectionTime: string;
+begin
+  Result := sCallV('ORWDLR33 LASTTIME', [nil]);
+end
+;
+procedure GetLabTimesForDate(Dest: TStrings; LabDate: TFMDateTime; Location: integer);
+var
+  Prefix: string;
+  i: integer;
+begin
+  CallV('ORWDLR32 GET LAB TIMES', [LabDate, Location]);
+  with Dest do
+    begin
+      Assign(RPCBrokerV.Results);
+      if (Count > 0) and (Piece(Strings[0], U, 1) <> '-1') then
+        for i := 0 to Count - 1 do
+          begin
+            if Strings[i] > '1159' then Prefix := 'PM Collection:  ' else Prefix := 'AM Collection:  ';
+            Strings[i] := Strings[i] + U + Prefix + Copy(Strings[i], 1, 2) + ':' + Copy(Strings[i], 3, 2);
+          end;
+    end;
+end;
+
+procedure CheckForChangeFromLCtoWCOnAccept(Dest: TStrings; ALocation: integer; AStartDate, ACollType, ASchedule, ADuration: string);
+var
+  AList: TStringList;
+begin
+  AList := TStringList.Create;
+  try
+    CallV('ORCDLR2 CHECK ONE LC TO WC', [ALocation, '', AStartDate, ACollType, ASchedule, ADuration]);
+    FastAssign(RPCBrokerV.Results, AList);
+    FormatLCtoWCDisplayTextOnAccept(AList, Dest);
+  finally
+    AList.Free;
+  end;
+end;
+
+procedure CheckForChangeFromLCtoWCOnRelease(Dest: TStrings; ALocation: integer; OrderList: TStringList);
+var
+  AList: TStringList;
+begin
+  AList := TStringList.Create;
+  try
+    CallV('ORCDLR2 CHECK ALL LC TO WC', [ALocation, OrderList]);
+    FastAssign(RPCBrokerV.Results, AList);
+    FormatLCtoWCDisplayTextOnRelease(AList, Dest);
+  finally
+    AList.Free;
+  end;
+end;
+
+procedure FormatLCtoWCDisplayTextOnAccept(InputList, OutputList: TStrings);
+var
+  i: integer;
+  x: string;
+begin
+  OutputList.Clear;
+  for i := InputList.Count - 1 downto 0 do
+    if Piece(InputList[i], U, 2) = '1' then InputList.Delete(i);
+  if InputList.Count > 0 then
+  begin
+    SetListFMDateTime('mmm dd, yyyy@hh:nn', TStringList(InputList), U, 1);
+    with OutputList do
+    begin
+      Add(TX0);
+      Add(TX_BLANK);
+      Add('Patient :' + #9 + Patient.Name);
+      Add('SSN     :' + #9 + Patient.SSN);
+      Add('Location:' + #9 + Encounter.LocationName + CRLF);
+      for i := 0 to InputList.Count - 1 do
+        Add(Piece(InputList[i], U, 1) + #9 + Piece(InputList[i], U, 3));
+      Add(TX_BLANK);
+      x := GetLCtoWCInstructions(Encounter.Location);
+      if x = '' then x := TX5;
+      Add(x);
+      Add(TX6);
+    end;
+  end;
+end;
+
+procedure FormatLCtoWCDisplayTextOnRelease(InputList, OutputList: TStrings);
+var
+  i, j, k, Changed: integer;
+  AList: TStringlist;
+  x: string;
+begin
+  OutputList.Clear;
+  Changed := StrToIntDef(ExtractDefault(InputList, 'COUNT'), 0);
+  if Changed > 0 then
+  begin
+    AList := TStringList.Create;
+    try
+      with OutputList do
+      begin
+        Add(TX0);
+        Add(TX_BLANK);
+        Add('Patient :' + #9 + Patient.Name);
+        Add('SSN     :' + #9 + Patient.SSN);
+        Add('Location:' + #9 + Encounter.LocationName);
+        for i := 1 to Changed do
+        begin
+          Add(TX_BLANK);
+          AList.Clear;
+          ExtractText(AList, InputList, 'ORDER_' + IntToStr(i));
+          Add('Order   :' + #9 + AList[0]);
+          k := Length(OutputList[Count-1]);
+          if AList.Count > 1 then
+            for j := 1 to AList.Count - 1 do
+            begin
+              Add(StringOfChar(' ', 9) + #9 + AList[j]);
+              k := HigherOf(k, Length(OutputList[Count - 1]));
+            end;
+          Add(StringOfChar('-', k + 4));
+          AList.Clear;
+          ExtractItems(AList, InputList, 'ORDER_' + IntToStr(i));
+          SetListFMDateTime('mmm dd, yyyy@hh:nn', AList, U, 1);
+          for j := 0 to AList.Count - 1 do
+            OutputList.Add(Piece(AList[j], U, 1) + #9 + Piece(AList[j], U, 3));
+        end;
+        Add(TX_BLANK);
+        x := GetLCtoWCInstructions(Encounter.Location);
+        if x = '' then x := TX5;
+        Add(x);
+        Add(TX6);
+      end;
+    finally
+      AList.Free;
+    end;
+  end;
+end;
+
+function GetLCtoWCInstructions(Alocation: integer): string;
+begin
+  Result := sCallV('ORWDLR33 LC TO WC', [Encounter.Location]);
+end;
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODMeds.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODMeds.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODMeds.pas	(revision 1676)
@@ -0,0 +1,471 @@
+unit rODMeds;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, uCore, uConst, Windows;
+
+type
+   TAdminTimeHelpText = record
+    HelpText: string;
+  end;
+
+  TInpatientClozapineText = record
+    dispText: string;
+  end;
+
+  TDrugHasMaxData = record
+    CaptureMaxData: boolean;
+    MaxSupply: integer;
+    MaxQuantity: integer;
+    MaxRefills: integer;
+  end;
+
+function DEACheckFailed(AnOI: Integer; ForInpatient: Boolean): Boolean;
+function DEACheckFailedForIVOnOutPatient(AnOI: Integer; AnOIType: Char): boolean;
+procedure ListForOrderable(var AListIEN, ACount: Integer; const DGrpNm: string);
+procedure SubsetOfOrderable(Dest: TStringList; Append: Boolean; ListIEN, First, Last: Integer);
+function IndexOfOrderable(ListIEN: Integer; From: string): Integer;
+procedure IsActivateOI(var AMsg: string; theOI: integer);
+procedure ListForQuickOrders(var AListIEN, ACount: Integer; const DGrpNm: string);
+procedure SubsetOfQuickOrders(Dest: TStringList; AListIEN, First, Last: Integer);
+function IndexOfQuickOrder(AListIEN: Integer; From: string): Integer;
+procedure LoadFormularyAltOI(AList: TStringList; AnIEN: Integer; ForInpatient: Boolean);
+procedure LoadFormularyAltDose(AList: TStringList; DispDrug, OI: Integer; ForInpatient: Boolean);
+procedure LoadAdminInfo(const Schedule: string; OrdItem: Integer; var StartText: string;
+  var AdminTime: TFMDateTime; var Duration: string; Admin: string = '');
+function GetAdminTime(const StartText, Schedule: string; OrdItem: Integer): TFMDateTime;
+procedure LoadSchedules(Dest: TStrings; IsInptDlg: boolean = False);
+procedure LoadDOWSchedules(Dest: TStrings);
+procedure LoadAllIVRoutes(Dest: TStrings);
+procedure LoadDosageFormIVRoutes(Dest: TStrings; OrderIDs: TStringList; Default: boolean);
+function QtyToDays(Quantity: Double;   const UnitsPerDose, Schedule, Duration, Drug: string): Integer;
+function DaysToQty(DaysSupply: Integer; const UnitsPerDose, Schedule, Duration, Drug: string): Integer;
+function DurToQty(DaysSupply: Integer; const UnitStr, SchedStr: string): Integer;
+function DefaultDays(const ADrug, UnitStr, SchedStr: string): Integer;
+function CalcMaxRefills(const Drug: string; Days, OrdItem: Integer; Discharge: Boolean): Integer;
+function ScheduleRequired(OrdItem: Integer; const ARoute, ADrug: string): Boolean;
+function ODForMedsIn: TStrings;
+function ODForMedsOut: TStrings;
+function OIForMed(AnIEN: Integer; ForInpatient: Boolean; HavePI: boolean = True; PKIActive: Boolean = False): TStrings;
+function GetPickupForLocation(const Loc: string): string;
+function QOHasRouteDefined(AQOID: integer): boolean;
+procedure CheckExistingPI(AOrderId: string; var APtI: string);
+function PassDrugTest(OI: integer; OrderType: string; InptOrder: boolean; CheckForClozapineOnly: boolean = false): boolean;
+function AdminTimeHelpText(): string;
+//function ValidateDaySupplyandQuantity(DaySupply, Quantity: integer): boolean;
+//function ValidateMaxQuantity(Quantity: integer): boolean;
+function ValidateDrugAutoAccept(tempDrug, tempUnit, tempSch, tempDur: string; OI, tempSupply, tempQuantity, tempRefills: integer): boolean;
+function ValidateDaySupplyandQuantityErrorMsg(DaySupply, quantity: integer): String;
+procedure ClearMaxData;
+function DifferentOrderLocations(ID: string; Loc: integer): boolean;
+function IsClozapineOrder: boolean;
+//function ValidateQuantityErrorMsg(Quantity: integer): String;
+function GetQOOrderableItem(DialogIEN: string): integer;
+
+
+implementation
+ var
+  uAdminTimeHelpText: TAdminTimeHelpText;
+  uDrugHasMaxData: TDrugHasMaxData;
+  uInpatientClozapineText : TInpatientClozapineText;
+
+function DEACheckFailed(AnOI: Integer; ForInpatient: Boolean): Boolean;
+var
+  PtType: Char;
+begin
+  if ForInpatient then PtType := 'I' else PtType := 'O';
+  Result := sCallV('ORWDPS1 FAILDEA', [AnOI, Encounter.Provider, PtType]) = '1';
+end;
+
+function DEACheckFailedForIVOnOutPatient(AnOI: Integer; AnOIType: Char): boolean;
+begin
+  Result := sCallV('ORWDPS1 IVDEA',[AnOI,AnOIType,Encounter.Provider]) = '1';
+end;
+
+procedure ListForOrderable(var AListIEN, ACount: Integer; const DGrpNm: string);
+begin
+  CallV('ORWUL FV4DG', [DGrpNm]);
+  AListIEN := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 1), 0);
+  ACount   := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 2), 0);
+end;
+
+procedure SubsetOfOrderable(Dest: TStringList; Append: Boolean; ListIEN, First, Last: Integer);
+var
+  i: Integer;
+begin
+  CallV('ORWUL FVSUB', [ListIEN, First+1, Last+1]);  // M side not 0-based
+  if Append then FastAddStrings(RPCBrokerV.Results, Dest) else
+  begin
+    for i := Pred(RPCBrokerV.Results.Count) downto 0 do Dest.Insert(0, RPCBrokerV.Results[i]);
+  end;
+end;
+
+function IndexOfOrderable(ListIEN: Integer; From: string): Integer;
+var
+  x: string;
+begin
+  Result := -1;
+  if From = '' then Exit;
+  // decrement last char & concat '~' for $ORDER on M side, limit string length
+  x := UpperCase(Copy(From, 1, 220));
+  x := Copy(x, 1, Length(x) - 1) + Pred(x[Length(x)]) + '~';
+  x := sCallV('ORWUL FVIDX', [ListIEN, x]);
+  // use Pred to make the index 0-based (first value = 1 on M side)
+  if CompareText(Copy(Piece(x, U, 2), 1, Length(From)), From) = 0
+    then Result := Pred(StrToIntDef(Piece(x, U, 1), 0));
+end;
+
+procedure IsActivateOI(var AMsg: string; theOI: integer);
+begin
+  AMsg := SCallV('ORWDXA ISACTOI', [theOI]);
+end;
+
+procedure ListForQuickOrders(var AListIEN, ACount: Integer; const DGrpNm: string);
+begin
+  CallV('ORWUL QV4DG', [DGrpNm]);
+  AListIEN := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 1), 0);
+  ACount   := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 2), 0);
+end;
+
+procedure SubsetOfQuickOrders(Dest: TStringList; AListIEN, First, Last: Integer);
+var
+  i: Integer;
+begin
+ CallV('ORWUL QVSUB', [AListIEN,'','']);
+ for i := 0 to RPCBrokerV.Results.Count -1 do
+   Dest.Add(RPCBrokerV.Results[i]);
+end;
+
+function IndexOfQuickOrder(AListIEN: Integer; From: string): Integer;
+var
+  x: string;
+begin
+  Result := -1;
+  if From = '' then Exit;
+  // decrement last char & concat '~' for $ORDER on M side, limit string length
+  x := UpperCase(Copy(From, 1, 220));
+  x := Copy(x, 1, Length(x) - 1) + Pred(x[Length(x)]) + '~';
+  x := sCallV('ORWUL QVIDX', [AListIEN, x]);
+  // use Pred to made the index 0-based (first value = 1 on M side)
+  if CompareText(Copy(Piece(x, U, 2), 1, Length(From)), From) = 0
+    then Result := Pred(StrToIntDef(Piece(x, U, 1), 0));
+end;
+
+procedure LoadFormularyAltOI(AList: TStringList; AnIEN: Integer; ForInpatient: Boolean);
+var
+  PtType: Char;
+begin
+  if ForInpatient then PtType := 'I' else PtType := 'O';
+  CallV('ORWDPS1 FORMALT', [AnIEN, PtType]);
+  FastAssign(RPCBrokerV.Results, AList);
+end;
+
+procedure LoadFormularyAltDose(AList: TStringList; DispDrug, OI: Integer; ForInpatient: Boolean);
+var
+  PtType: Char;
+begin
+  if ForInpatient then PtType := 'I' else PtType := 'O';
+  CallV('ORWDPS1 DOSEALT', [DispDrug, OI, PtType]);
+  FastAssign(RPCBrokerV.Results, AList);
+end;
+
+procedure LoadAdminInfo(const Schedule: string; OrdItem: Integer; var StartText: string;
+  var AdminTime: TFMDateTime; var Duration: string; Admin: string = '');
+var
+  x: string;
+begin
+  x := sCallV('ORWDPS2 ADMIN', [Patient.DFN, Schedule, OrdItem, Encounter.Location, Admin]);
+  StartText := Piece(x, U, 1);
+  AdminTime := MakeFMDateTime(Piece(x, U, 4));
+  Duration  := Piece(x, U, 3);
+end;
+
+function GetAdminTime(const StartText, Schedule: string; OrdItem: Integer): TFMDateTime;
+var
+  x: string;
+begin
+  x := sCallV('ORWDPS2 REQST', [Patient.DFN, Schedule, OrdItem, Encounter.Location, StartText]);
+  Result := MakeFMDateTime(x);
+end;
+
+procedure LoadSchedules(Dest: TStrings; IsInptDlg: boolean);
+begin
+  // if uMedSchedules = nil then CallV('ORWDPS ALLSCHD', [nil]); uMedSchedules.Assign(...);
+  CallV('ORWDPS1 SCHALL', [patient.dfn, patient.location]);
+  FastAssign(RPCBrokerV.Results, Dest);
+  If (Dest.IndexOfName('OTHER') < 0) and IsInptDlg then
+    Dest.Add('OTHER');
+end;
+
+procedure LoadAllIVRoutes(Dest: TStrings);
+begin
+  CallV('ORWDPS32 ALLIVRTE', []);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadDosageFormIVRoutes(Dest: TStrings; OrderIDs: TStringList; Default: boolean);
+begin
+  CallV('ORWDPS33 IVDOSFRM', [OrderIDs, Default, False]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+procedure LoadDOWSchedules(Dest: TStrings);
+begin
+  // if uMedSchedules = nil then CallV('ORWDPS ALLSCHD', [nil]); uMedSchedules.Assign(...);
+  CallV('ORWDPS1 DOWSCH', [patient.dfn, patient.location]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function QtyToDays(Quantity: Double;   const UnitsPerDose, Schedule, Duration, Drug: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDPS2 QTY2DAY',
+    [Quantity,   UnitsPerDose, Schedule, Duration, Patient.DFN, Drug]), 0);
+end;
+
+function DaysToQty(DaysSupply: Integer; const UnitsPerDose, Schedule, Duration, Drug: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDPS2 DAY2QTY',
+    [DaysSupply, UnitsPerDose, Schedule, Duration, Patient.DFN, Drug]), 0);
+  if uDrugHasMaxData.CaptureMaxData = True then uDrugHasMaxData.MaxQuantity := Result;
+end;
+
+function DurToQty(DaysSupply: Integer; const UnitStr, SchedStr: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDPS2 DAY2QTY', [DaysSupply, UnitStr, SchedStr]), 0);
+end;
+
+function DefaultDays(const ADrug, UnitStr, SchedStr: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDPS1 DFLTSPLY', [UnitStr, SchedStr, Patient.DFN, ADrug]), 0);
+  if uDrugHasMaxData.CaptureMaxData = True then uDrugHasMaxData.MaxSupply := Result;
+end;
+
+function CalcMaxRefills(const Drug: string; Days, OrdItem: Integer; Discharge: Boolean): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDPS2 MAXREF', [Patient.DFN, Drug, Days, OrdItem, Discharge]), 0);
+  if uDrugHasMaxData.CaptureMaxData = True then uDrugHasMaxData.MaxRefills := Result;
+end;
+
+function ScheduleRequired(OrdItem: Integer; const ARoute, ADrug: string): Boolean;
+begin
+  Result := sCallV('ORWDPS2 SCHREQ', [OrdItem, ARoute, ADrug]) = '1';
+end;
+
+function ODForMedsIn: TStrings;
+{ Returns init values for inpatient meds dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDPS1 ODSLCT', [PST_UNIT_DOSE, Patient.DFN, Encounter.Location]);
+  Result := RPCBrokerV.Results;
+end;
+
+function ODForMedsOut: TStrings;
+{ Returns init values for outpatient meds dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDPS1 ODSLCT', [PST_OUTPATIENT, Patient.DFN, Encounter.Location]);
+  Result := RPCBrokerV.Results;
+end;
+
+function OIForMed(AnIEN: Integer; ForInpatient: Boolean; HavePI: Boolean; PKIActive: Boolean): TStrings;
+var
+  PtType: Char;
+  NeedPI: Char;
+  IsPKIActive: Char;
+begin
+  if HavePI then NeedPI := 'Y' else NeedPI := 'N';
+  if ForInpatient then PtType := 'U' else PtType := 'O';
+  if PKIActive then IsPKIActive := 'Y' else IsPKIActive := 'N';
+  CallV('ORWDPS2 OISLCT', [AnIEN, PtType, Patient.DFN, NeedPI, IsPKIActive]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetPickupForLocation(const Loc: string): string;
+begin
+  Result := sCallV('ORWDPS1 LOCPICK',[Loc]);
+end;
+
+function QOHasRouteDefined(AQOID: integer): boolean;
+begin
+  Result := False;
+  if ( sCallV('ORWDPS1 HASROUTE',[AQOID])='1' ) then
+    Result := True;
+end;
+
+procedure CheckExistingPI(AOrderId: string; var APtI: string);
+begin
+  APtI := sCallV('ORWDPS2 CHKPI', [AOrderId]);
+end;
+
+function PassDrugTest(OI: integer; OrderType: string; InptOrder: boolean; CheckForClozapineOnly: boolean = false): boolean;
+var
+MessCap, MessText: string;
+i: integer;
+begin
+  result := false;
+  MessText := '';
+  uDrugHasMaxData.CaptureMaxData := false;
+  uDrugHasMaxData.MaxSupply := 0;
+  uDrugHasMaxData.MaxQuantity := 0;
+  uDrugHasMaxData.MaxRefills := 0;
+  CallV('ORALWORD ALLWORD', [Patient.DFN, OI, OrderType, Encounter.Provider]);
+  for i := 0 to RPCBrokerV.Results.Count -1 do
+    begin
+      if i = 0 then
+        begin
+          MessCap := Piece(RPCBrokerV.Results.strings[i],U,1);
+          if Piece(RPCBrokerV.Results.strings[i],U,2) = '1' then uDrugHasMaxData.CaptureMaxData := True;
+        end;
+      if i >0 then MessText := MessText + RPCBrokerV.Results.Strings[i] + CRLF;
+    end;
+  if CheckForClozapineOnly = True then
+    begin
+      Result := uDrugHasMaxData.CaptureMaxData = True;
+      Exit;
+    end;
+  if (MessText = '') and (MessCap = '') then
+    begin
+      Result := True;
+      if (InptOrder = true) and (uDrugHasMaxData.CaptureMaxData = true) then
+        begin
+          uDrugHasMaxData.CaptureMaxData := false;
+          if uInpatientClozapineText.dispText = '' then
+            begin
+              CallV('ORDDPAPI CLOZMSG', []);
+              for i := 0 to RPCBrokerV.Results.Count -1 do
+                 if i = 0 then uInpatientClozapineText.dispText := RPCBrokerV.Results.Strings[i]
+                 else uInpatientClozapineText.dispText := uInpatientClozapineText.dispText + CRLF + RPCBrokerV.Results.Strings[i];
+            end;
+          if uInpatientClozapineText.dispText <> '' then infoBox(uInpatientClozapineText.dispText, 'Inpatient Drug Warning', MB_OK);
+        end;
+      exit;
+    end;
+  infoBox(MessText, MessCap,MB_OK);
+end;
+
+function AdminTimeHelpText(): string;
+var
+i: integer;
+begin
+      if uAdminTimeHelpText.HelpText = '' then
+       begin
+          CallV('ORDDPAPI ADMTIME',[]);
+          for I := 0 to RPCBrokerV.Results.Count - 1 do
+            if I = 0 then uAdminTimeHelpText.HelpText := RPCBrokerV.Results.Strings[i]
+            else uAdminTimeHelpText.HelpText := uAdminTimeHelpText.HelpText + CRLF +RPCBrokerV.Results.Strings[i];
+       end;
+   Result := uAdminTimeHelpText.helpText
+end;
+
+function ValidateDrugAutoAccept(tempDrug, tempUnit, tempSch, tempDur: string; OI, tempSupply, tempQuantity, tempRefills: integer): boolean;
+var
+daySupply, Quantity, Refills: integer;
+begin
+  Result := True;
+  if uDrugHasMaxData.CaptureMaxData = false then exit;
+  daySupply := DefaultDays(tempDrug, tempUnit, tempSch);
+  if (tempSupply > daySupply) and (uDrugHasMaxData.MaxSupply > 0) then
+    begin
+      infoBox('For this medication Day Supply cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxSupply), 'Cannot Save Error', MB_OK);
+      Result := false;
+      uDrugHasMaxData.CaptureMaxData := false;
+      Exit;
+    end;
+  Quantity := DaysToQty(daySupply, tempUnit, tempSch, tempDur, tempDrug);
+  if (tempQuantity > Quantity) and (uDrugHasMaxData.MaxQuantity > 0) then
+    begin
+      infoBox('For this medication Quantity cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity), 'Cannot Save Error', MB_OK);
+      Result := false;
+      uDrugHasMaxData.CaptureMaxData := false;
+      Exit;
+    end;
+  Refills := CalcMaxRefills(tempDrug, daySupply, OI, false);
+  if tempRefills > Refills then
+    begin
+      infoBox('For this medication Quantity cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxRefills), 'Cannot Save Error', MB_OK);
+      Result := false;
+      uDrugHasMaxData.CaptureMaxData := false;
+      Exit;
+    end;
+end;
+
+function ValidateDaySupplyandQuantity(DaySupply, Quantity: integer): boolean;
+var
+str: string;
+begin
+  Result := True;
+  str := '';
+  if uDrugHasMaxData.CaptureMaxData = false then exit;
+  if (daySupply > uDrugHasMaxData.MaxSupply) and (uDrugHasMaxData.MaxSupply > 0) then
+    begin
+      str := 'For this medication Day Supply cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxSupply);
+      Result := false;
+    end;
+  if (Quantity > uDrugHasMaxData.MaxQuantity) and (uDrugHasMaxData.MaxQuantity > 0) then
+    begin
+      if str <> '' then str := str + CRLF + 'For this medication Day Supply cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity)
+      else str := 'For this medication Day Supply cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity);
+      result := false;
+    end;
+ if str <> '' then infoBox(str, 'Cannot Save Error', MB_OK);
+ //uDrugHasMaxData.CaptureMaxData := false;
+end;
+
+function ValidateMaxQuantity(Quantity: integer): boolean;
+begin
+  Result := True;
+  if uDrugHasMaxData.CaptureMaxData = false then exit;
+  if uDrugHasMaxData.MaxQuantity = 0 then exit;
+  if Quantity > uDrugHasMaxData.MaxQuantity then
+    begin
+      infoBox('For this medication Day Supply cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity), 'Cannot Save Error', MB_OK);
+      Result := false;
+    end;
+end;
+
+function ValidateDaySupplyandQuantityErrorMsg(DaySupply, quantity: integer): String;
+begin
+  Result := '';
+  if uDrugHasMaxData.CaptureMaxData = false then exit;
+  if (daySupply > uDrugHasMaxData.MaxSupply) and (uDrugHasMaxData.MaxSupply > 0) then
+    begin
+      Result := 'For this medication Day Supply cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxSupply);
+    end;
+  if (Quantity > uDrugHasMaxData.MaxQuantity) and (uDrugHasMaxData.MaxQuantity > 0) then
+    begin
+      if Result <> '' then Result := Result + CRLF + 'For this medication Quantity cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity)
+      else Result := 'For this medication Quantity cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity);
+    end;
+  //uDrugHasMaxData.CaptureMaxData := false;
+end;
+
+function ValidateQuantityErrorMsg(Quantity: integer): String;
+begin
+  Result := '';
+  if uDrugHasMaxData.CaptureMaxData = false then exit;
+  if uDrugHasMaxData.MaxQuantity = 0 then exit;
+  if Quantity > uDrugHasMaxData.MaxQuantity then
+    begin
+      Result := 'For this medication Quantity cannot be greater then ' + InttoStr(uDrugHasMaxData.MaxQuantity);
+    end;
+end;
+
+procedure ClearMaxData;
+begin
+  uDrugHasMaxData.CaptureMaxData := false;
+end;
+
+function DifferentOrderLocations(ID: string; Loc: integer): boolean;
+begin
+   Result := (sCallV('ORWDPS33 COMPLOC', [ID, Loc])='1');
+end;
+
+function IsClozapineOrder: boolean;
+begin
+   if uDrugHasMaxData.CaptureMaxData = true then result := true
+   else result := false;
+end;
+
+function GetQOOrderableItem(DialogIEN: string): integer;
+begin
+  Result := StrtoInt(SCallV('ORWDPS1 QOMEDALT',[DialogIEN]))
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODRad.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODRad.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rODRad.pas	(revision 1676)
@@ -0,0 +1,83 @@
+unit rODRad;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, TRPCB, dialogs ;
+
+     { Radiology Ordering Calls }
+function ODForRad(const PatientDFN, AnEventDiv: string; ImagingType: integer): TStrings;  //*DFN*
+function SubsetOfRadProcs(ImagingType: integer; const StartFrom: string; Direction: Integer): TStrings;
+function ImagingMessage(AnIEN: Integer): string;
+function PatientOnIsolationProcedures(const PatientDFN: string): boolean ;  //*DFN*
+function SubsetOfRadiologists: TStrings;
+function SubsetOfImagingTypes: TStrings;
+function SubsetOfRadSources(SrcType: string): TStrings;
+function LocationType(Location: integer): string;  
+function ReasonForStudyCarryOn: Boolean;
+
+implementation
+
+uses   rODBase;
+(*    fODBase, rODBase, fODRad;*)
+
+
+function ODForRad(const PatientDFN, AnEventDiv: string; ImagingType: integer): TStrings;  //*DFN*
+{ Returns init values for radiology dialog.  The results must be used immediately. }
+begin
+  CallV('ORWDRA32 DEF', [PatientDFN, AnEventDiv, ImagingType]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubsetOfRadProcs(ImagingType: integer; const StartFrom: string; Direction: Integer): TStrings;
+  // Needed separate call because of 'RA REQUIRE DETAILED' divisional parameter.
+  // Screens out 'Broad' procedures if parameter true.
+begin
+  Callv('ORWDRA32 RAORDITM',[StartFrom, Direction, ImagingType]);
+  Result := RPCBrokerV.Results;
+end ;
+
+function ImagingMessage(AnIEN: Integer): string;
+var
+   x: string ;
+   i: integer ;
+begin
+    CallV('ORWDRA32 PROCMSG', [AnIEN]);
+    for i := 0 to RPCBrokerV.Results.Count-1 do
+       x := x + RPCBrokerV.Results[i] + #13#10 ;
+    Result := x ;
+end;
+
+function PatientOnIsolationProcedures(const PatientDFN: string): boolean ;  //*DFN*
+begin
+  Result := (StrToInt(Piece(sCallV('ORWDRA32 ISOLATN', [PatientDFN]),U,1)) > 0) ;
+end ;
+
+function SubsetOfRadiologists: TStrings;
+begin
+  Callv('ORWDRA32 APPROVAL',['']);
+  Result := RPCBrokerV.Results ;
+end ;
+
+function SubsetOfImagingTypes: TStrings;
+begin
+  Callv('ORWDRA32 IMTYPSEL',['']);
+  Result := RPCBrokerV.Results ;
+end ;
+
+function SubsetOfRadSources(SrcType: string): TStrings;
+begin
+  Callv('ORWDRA32 RADSRC',[SrcType]);
+  Result := RPCBrokerV.Results ;
+end ;
+
+function LocationType(Location: integer): string;
+begin
+  Result := sCallV('ORWDRA32 LOCTYPE',[Location]);
+end;    
+
+function ReasonForStudyCarryOn: Boolean;
+begin
+  Result := sCallV('ORWDXM1 SVRPC',['']) = '1';
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rOrders.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rOrders.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/rOrders.pas	(revision 1676)
@@ -0,0 +1,2466 @@
+unit rOrders;
+{$OPTIMIZATION OFF}
+interface
+
+uses SysUtils, Classes, ORFn, ORNet, uCore, Dialogs, Controls;
+
+type
+  TOrder = class
+  public
+    ICD9Code:      string;
+    ID:           string;
+    DGroup:       Integer;
+    OrderTime:    TFMDateTime;
+    StartTime:    string;
+    StopTime:     string;
+    Status:       Integer;
+    Signature:    Integer;
+    VerNurse:     string;
+    VerClerk:     string;
+    ChartRev:     string;
+    Provider:     Int64;
+    ProviderName: string;
+    ProviderDEA:  string;
+    ProviderVa:   string;
+    DigSigReq:    string;
+    XMLText:      string;
+    Text:         string;
+    DGroupSeq:    Integer;
+    DGroupName:   string;
+    Flagged:      Boolean;
+    Retrieved:    Boolean;
+    EditOf:       string;
+    ActionOn:     string;
+    EventPtr:     string; //ptr to #100.2
+    EventName:    string; //Event name in #100.5
+    OrderLocIEN:  string; //imo
+    OrderLocName: string; //imo
+    ParentID    : string;
+    LinkObject:   TObject;
+    EnteredInError:     Integer; //AGP Changes 26.12 PSI-04-053
+    DCOriginalOrder: boolean;
+    procedure Assign(Source: TOrder);
+    procedure Clear;
+  end;
+
+  TParentEvent = class
+  public
+    ParentIFN:  integer;
+    ParentName: string;
+    ParentType: Char;
+    ParentDlg:  string;
+    constructor Create;
+    procedure Assign(AnEvtID: string);
+  end;
+
+  TOrderDelayEvent = record
+    EventType: Char;             // A=admit, T=transfer, D=discharge, C=current
+    TheParent: TParentEvent;     // Parent Event
+    EventIFN : Integer;          // Pointer to OE/RR EVENTS file (#100.5)
+    EventName: String;           // Event name from OR/RR EVENTS file (#100.5)
+    PtEventIFN: Integer;         // Patient event IFN ptr to #100.2
+    Specialty: Integer;          // pointer to facility treating specialty file
+    Effective: TFMDateTime;      // effective date/time (estimated start time)
+    IsNewEvent: Boolean;         // is new event for an patient
+  end;
+
+  TOrderDialogResolved = record
+    InputID: string;             // can be dialog IEN or '#ORIFN'
+    QuickLevel: Integer;         // 0=dialog,1=auto,2=verify,8=reject,9=cancel
+    ResponseID: string;          // DialogID + ';' + $H
+    DialogIEN: Integer;          // pointer to 101.41 for dialog (may be quick order IEN)
+    DialogType: Char;            // type of dialog (Q or D)
+    FormID: Integer;             // windows form to display
+    DisplayGroup: Integer;       // pointer to 100.98, display group for dialog
+    ShowText: string;            // text to show for verify or rejection
+    QOKeyVars: string;           // from entry action of quick order
+  end;
+
+  TNextMoveRec = record
+    NextStep:     Integer;
+    LastIndex:    Integer;
+  end;
+
+  TOrderMenu = class
+    IEN: Integer;
+    NumCols: Integer;
+    Title: string;
+    KeyVars: string;
+    MenuItems: TList; {of TOrderMenuItem}
+  end;
+
+  TOrderMenuItem = class
+    IEN: Integer;
+    Row: Integer;
+    Col: Integer;
+    DlgType: Char;
+    FormID: Integer;
+    AutoAck: Boolean;
+    ItemText: string;
+    Mnemonic: string;
+    Display: Integer;
+    Selected: Boolean;
+  end;
+
+  TSelectedOrder = class
+  public
+    Position: Integer;
+    Order: TOrder;
+  end;
+
+  TOrderRenewFields = class
+  public
+    BaseType:  Integer;
+    StartTime: string;
+    StopTime:  string;
+    Refills:   Integer;
+    Pickup:    string;
+    Comments:  string;
+    NewText:   string;
+  end;
+
+  TPrintParams = record
+    PromptForChartCopy    :  char;
+    ChartCopyDevice       :  string;
+    PromptForLabels       :  char;
+    LabelDevice           :  string;
+    PromptForRequisitions :  char;
+    RequisitionDevice     :  string;
+    PromptForWorkCopy     :  char;
+    WorkCopyDevice        :  string;
+    AnyPrompts            :  boolean;
+//    OrdersToPrint         :  TStringList; {*KCM*}
+  end;
+
+  TOrderView = class
+    Changed:    Boolean;                         // true when view has been modified
+    DGroup:     Integer;                         // display group (pointer value)
+    Filter:     Integer;                         // FLGS parameter passed to ORQ
+    InvChrono:  Boolean;                         // true for inverse chronological order
+    ByService:  Boolean;                         // true for grouping orders by service
+    TimeFrom:   TFMDateTime;                     // beginning time for orders in list
+    TimeThru:   TFMDateTime;                     // ending time for orders in list
+    CtxtTime:   TFMDateTime;                     // set by server, context hours begin time
+    TextView:   Integer;                         // set by server, 0 if mult views of same order
+    ViewName:   string;                          // display name for the view
+    EventDelay: TOrderDelayEvent;                // fields for event delay view
+  public
+    procedure Assign(Src: TOrderView);
+
+  end;
+
+{ Order List functions }
+function DetailOrder(const ID: string): TStrings;
+function ResultOrder(const ID: string): TStrings;
+function ResultOrderHistory(const ID: string): TStrings;
+function NameOfStatus(IEN: Integer): string;
+function GetOrderStatus(AnOrderId: string): integer;
+function ExpiredOrdersStartDT: TFMDateTime;
+procedure ClearOrders(AList: TList);
+procedure LoadOrders(Dest: TList; Filter, Groups: Integer);
+procedure LoadOrdersAbbr(Dest: TList; AView: TOrderView; APtEvtID: string); overload;
+procedure LoadOrdersAbbr(DestDC,DestRL: TList; AView: TOrderView; APtEvtID: string); overload;
+procedure LoadOrderSheets(Dest: TStrings);
+procedure LoadOrderSheetsED(Dest: TStrings);
+procedure LoadOrderViewDefault(AView: TOrderView);
+procedure LoadUnsignedOrders(IDList, HaveList: TStrings);
+procedure SaveOrderViewDefault(AView: TOrderView);
+procedure RetrieveOrderFields(OrderList: TList; ATextView: Integer; ACtxtTime: TFMDateTime);
+procedure SetOrderFields(AnOrder: TOrder; const x, y, z: string);
+procedure SetOrderFromResults(AnOrder: TOrder);
+procedure SortOrders(AList: TList; ByGroup, InvChron: Boolean);
+
+{ Display Group & List functions }
+function DGroupAll: Integer;
+function DGroupIEN(AName: string): Integer;
+procedure ListDGroupAll(Dest: TStrings);
+procedure ListSpecialties(Dest: TStrings);
+procedure ListSpecialtiesED(AType: Char; Dest: TStrings);
+procedure ListOrderFilters(Dest: TStrings);
+procedure ListOrderFiltersAll(Dest: TStrings);
+function NameOfDGroup(IEN: Integer): string;
+function ShortNameOfDGroup(IEN: Integer): string;
+function SeqOfDGroup(IEN: Integer): Integer;
+function CheckOrderGroup(AOrderID: string): integer;
+function CheckQOGroup(AQOId:string): Boolean;
+
+{ Write Orders }
+procedure BuildResponses(var ResolvedDialog: TOrderDialogResolved; const KeyVars: string;
+  AnEvent: TOrderDelayEvent; ForIMO: boolean = False);
+procedure ClearOrderRecall;
+function CommonLocationForOrders(OrderList: TStringList): Integer;
+function FormIDForDialog(IEN: Integer): Integer;
+function DlgIENForName(DlgName: string): Integer;
+procedure LoadOrderMenu(AnOrderMenu: TOrderMenu; AMenuIEN: Integer);
+procedure LoadOrderSet(SetItems: TStrings; AnIEN: Integer; var KeyVars, ACaption: string);
+procedure LoadWriteOrders(Dest: TStrings);
+procedure LoadWriteOrdersED(Dest: TStrings; EvtID: string);
+function OrderDisabledMessage(DlgIEN: Integer): string;
+procedure SendOrders(OrderList: TStringList; const ESCode: string);
+procedure SendReleaseOrders(OrderList: TStringList);
+procedure SendAndPrintOrders(OrderList, ErrList: TStrings; const ESCode: string; const DeviceInfo: string);
+procedure ExecutePrintOrders(SelectedList: TStringList; const DeviceInfo: string);
+procedure PrintOrdersOnReview(OrderList: TStringList; const DeviceInfo: string; PrintLoc: Integer = 0);  {*KCM*}
+procedure PrintServiceCopies(OrderList: TStringList; PrintLoc: Integer = 0);  {*REV*}
+procedure OrderPrintDeviceInfo(OrderList: TStringList; var PrintParams: TPrintParams; Nature: Char; PrintLoc: Integer = 0); {*KCM*}
+function UseNewMedDialogs: Boolean;
+
+{ Order Actions }
+function DialogForOrder(const ID: string): Integer;
+procedure LockPatient(var ErrMsg: string);
+procedure UnlockPatient;
+procedure LockOrder(OrderID: string; var ErrMsg: string);
+procedure UnlockOrder(OrderID: string);
+function FormIDForOrder(const ID: string): Integer;
+procedure ValidateOrderAction(const ID, Action: string; var ErrMsg: string);
+procedure ValidateOrderActionNature(const ID, Action, Nature: string; var ErrMsg: string);
+procedure IsLatestAction(const ID: string; var ErrList: TStringList);
+procedure ChangeOrder(AnOrder: TOrder; ResponseList: TList);
+procedure RenewOrder(AnOrder: TOrder; RenewFields: TOrderRenewFields; IsComplex: integer;
+  AnIMOOrderAppt: double; OCList: TStringList);
+procedure HoldOrder(AnOrder: TOrder);
+procedure ListDCReasons(Dest: TStrings; var DefaultIEN: Integer);
+function GetREQReason: Integer;
+procedure DCOrder(AnOrder: TOrder; AReason: Integer; NewOrder: boolean; var DCType: Integer);
+procedure ReleaseOrderHold(AnOrder: TOrder);
+procedure AlertOrder(AnOrder: TOrder; AlertRecip: Int64);
+procedure FlagOrder(AnOrder: TOrder; const FlagReason: string; AlertRecip: Int64);
+procedure UnflagOrder(AnOrder: TOrder; const AComment: string);
+procedure LoadFlagReason(Dest: TStrings; const ID: string);
+procedure LoadWardComments(Dest: TStrings; const ID: string);
+procedure PutWardComments(Src: TStrings; const ID: string; var ErrMsg: string);
+procedure CompleteOrder(AnOrder: TOrder; const ESCode: string);
+procedure VerifyOrder(AnOrder: TOrder; const ESCode: string);
+procedure VerifyOrderChartReview(AnOrder: TOrder; const ESCode: string);
+function GetOrderableIen(AnOrderId:string): integer;
+procedure StoreDigitalSig(AID, AHash: string; AProvider: Int64; ASig, ACrlUrl: string; var AError: string);
+procedure UpdateOrderDGIfNeeded(AnID: string);
+function CanEditSuchRenewedOrder(AnID: string; IsTxtOrder: integer): boolean;
+function IsPSOSupplyDlg(DlgID, QODlg: integer): boolean;
+procedure SaveChangesOnRenewOrder(var AnOrder: TOrder; AnID, TheRefills, ThePickup: string; IsTxtOrder: integer);
+function DoesOrderStatusMatch(OrderArray: TStringList): boolean;
+//function GetPromptandDeviceParameters(Location: integer; OrderList: TStringList; Nature: string): TPrintParams;
+
+{ Order Information }
+procedure LoadRenewFields(RenewFields: TOrderRenewFields; const ID: string);
+procedure GetChildrenOfComplexOrder(AnParentID,CurrAct: string; var ChildList: TStringList); //PSI-COMPLEX
+procedure LESValidationForChangedLabOrder(var RejectedReason: TStringList; AnOrderInfo: string);
+procedure ValidateComplexOrderAct(AnOrderID: string; var ErrMsg: string); //PSI-COMPLEX
+function IsRenewableComplexOrder(AnParentID: string): boolean; //PSI-COMPLEX
+function IsComplexOrder(AnOrderID: string): boolean; //PSI-COMPLEX
+function GetDlgData(ADlgID: string): string;
+function OrderIsReleased(const ID: string): Boolean;
+function TextForOrder(const ID: string): string;
+function GetConsultOrderNumber(ConsultIEN: string): string;
+function GetOrderByIFN(const ID: string): TOrder;
+function GetPackageByOrderID(const OrderID: string): string;
+function AnyOrdersRequireSignature(OrderList: TStringList): Boolean;
+function OrderRequiresSignature(const ID: string): Boolean;
+function OrderRequiresDigitalSignature(const ID: string): Boolean;
+function GetDrugSchedule(const ID: string): string;
+function GetExternalText(const ID: string): string;
+function SetExternalText(const ID: string; ADrugSch: string; AUser: Int64): string;
+function GetDEA(const ID: string): string;
+function GetDigitalSignature(const ID: string): string;
+function GetPKIUse: Boolean;
+function GetPKISite: Boolean;
+function DoesOIPIInSigForQO(AnQOID: integer): integer;
+function GetDispGroupForLES: string;
+function GetOrderPtEvtID(AnOrderID: string): string;
+function VerbTelPolicyOrder(AnOrderID: string): boolean;
+function ForIVandUD(AnOrderID: string): boolean;
+
+{Event Delay Enhancement}
+function DeleteEmptyEvt(APtEvntID: string; var APtEvntName: string; Ask: boolean = True): boolean;
+function DispOrdersForEvent(AEvtId: string): boolean;
+function EventInfo(APtEvtID: string): string; // ptr to #100.2
+function EventInfo1(AnEvtID: string): string; // ptr to #100.5
+function EventExist(APtDFN:string; AEvt: integer): integer;
+function CompleteEvt(APtEvntID: string; APtEvntName: string; Ask: boolean = True): boolean;
+function PtEvtEmpty(APtEvtID: string): Boolean;
+function GetEventIFN(const AEvntID: string): string;
+function GetEventName(const AEvntID: string): string;
+function GetEventLoc(const APtEvntID: string): string;
+function GetEventLoc1(const AnEvntID: string): string;
+function GetEventDiv(const APtEvntID: string): string;
+function GetEventDiv1(const AnEvntID: string): string;
+function GetCurrentSpec(const APtIFN: string): string;
+function GetDefaultEvt(const AProviderIFN: string): string;
+function isExistedEvent(const APtDFN: string; const AEvtID: string; var APtEvtID: string): Boolean;
+function TypeOfExistedEvent(APtDFN: string; AEvtID: Integer): Integer;
+function isMatchedEvent(const APtDFN: string; const AEvtID: string; var ATs: string): Boolean;
+function isDCedOrder(const AnOrderID: string): Boolean;
+function isOnholdMedOrder(AnOrderID: string): Boolean;
+function SetDefaultEvent(var AErrMsg: string; EvtID: string): Boolean;
+function GetEventPromptID: integer;
+function GetDefaultTSForEvt(AnEvtID: integer): string;
+function GetPromptIDs: string;
+function GetEventDefaultDlg(AEvtID: integer): string;
+function CanManualRelease: boolean;
+function TheParentPtEvt(APtEvt: string): string;
+function IsCompletedPtEvt(APtEvtID: integer): boolean;
+function IsPassEvt(APtEvtID: integer; APtEvtType: char): boolean;
+function IsPassEvt1(AnEvtID: integer; AnEvtType: char): boolean;
+procedure DeleteDefaultEvt;
+procedure TerminatePtEvt(APtEvtID: integer);
+procedure ChangeEvent(AnOrderList: TStringList; APtEvtId: string);
+procedure DeletePtEvent(APtEvtID: string);
+procedure SaveEvtForOrder(APtDFN: string; AEvt: integer; AnOrderID: string);
+procedure SetPtEvtList(Dest: TStrings; APtDFN: string; var ATotal: integer);
+procedure GetTSListForEvt(Dest: TStrings; AnEvtID:integer);
+procedure GetChildEvent(var AChildList: TStringList; APtEvtID: string);
+
+{ Order Checking }
+function FillerIDForDialog(IEN: Integer): string;
+function OrderChecksEnabled: Boolean;
+function OrderChecksOnDisplay(const FillerID: string): string;
+procedure OrderChecksOnAccept(ListOfChecks: TStringList; const FillerID, StartDtTm: string;
+  OIList: TStringList; DupORIFN: string);
+procedure OrderChecksOnDelay(ListOfChecks: TStringList; const FillerID, StartDtTm: string;
+  OIList: TStringList);
+procedure OrderChecksForSession(ListOfChecks, OrderList: TStringList);
+procedure SaveOrderChecksForSession(const AReason: string; ListOfChecks: TStringList);
+function DeleteCheckedOrder(const OrderID: string): Boolean;
+function DataForOrderCheck(const OrderID: string): string;
+
+{ Copay }
+procedure GetCoPay4Orders;
+procedure SaveCoPayStatus(AList: TStrings);
+
+{IMO: inpatient medication for outpatient}
+function IsValidIMOLoc(LocID: integer; PatientID: string): boolean;   //IMO
+function IsIMOOrder(OrderID: string): boolean;
+function IsInptQO(DlgID: integer): boolean;
+function IsIVQO(DlgID: integer): boolean;
+function IsClinicLoc(ALoc: integer): boolean;
+
+{None-standard Schedule} //nss
+function IsValidSchedule(AnOrderID: string): boolean; //NSS
+function IsValidQOSch(QOID: string): string; //NSS
+function IsValidSchStr(ASchStr: string): boolean;
+
+implementation
+
+uses Windows, rCore, uConst, TRPCB, ORCtrls, UBAGlobals, UBACore, VAUtils;
+
+var
+  uDGroupMap: TStringList;          // each string is DGroupIEN=Sequence^TopName^Name
+  uDGroupAll: Integer;
+  uOrderChecksOn: Char;
+
+{ TOrderView methods }
+
+procedure TOrderView.Assign(Src: TOrderView);
+begin
+  Self.Changed   := Src.Changed;
+  Self.DGroup    := Src.DGroup;
+  Self.Filter    := Src.Filter;
+  Self.InvChrono := Src.InvChrono;
+  Self.ByService := Src.ByService;
+  Self.TimeFrom  := Src.TimeFrom;
+  Self.TimeThru  := Src.TimeThru;
+  Self.CtxtTime  := Src.CtxtTime;
+  Self.TextView  := Src.TextView;
+  Self.ViewName  := Src.ViewName;
+  Self.EventDelay.EventIFN   := Src.EventDelay.EventIFN;
+  Self.EventDelay.EventName  := Src.EventDelay.EventName;
+  Self.EventDelay.EventType  := Src.EventDelay.EventType;
+  Self.EventDelay.Specialty  := Src.EventDelay.Specialty;
+  Self.EventDelay.Effective  := Src.EventDelay.Effective;
+end;
+
+{ TOrder methods }
+
+procedure TOrder.Assign(Source: TOrder);
+begin
+  ID           := Source.ID;
+  DGroup       := Source.DGroup;
+  OrderTime    := Source.OrderTime;
+  StartTime    := Source.StartTime;
+  StopTime     := Source.StopTime;
+  Status       := Source.Status;
+  Signature    := Source.Signature;
+  VerNurse     := Source.VerNurse;
+  VerClerk     := Source.VerClerk;
+  ChartRev     := Source.ChartRev;
+  Provider     := Source.Provider;
+  ProviderName := Source.ProviderName;
+  ProviderDEA  := Source.ProviderDEA;
+  ProviderVA   := Source.ProviderVA;
+  DigSigReq    := Source.DigSigReq;
+  XMLText      := Source.XMLText;
+  Text         := Source.Text;
+  DGroupSeq    := Source.DGroupSeq;
+  DGroupName   := Source.DGroupName;
+  Flagged      := Source.Flagged;
+  Retrieved    := Source.Retrieved;
+  EditOf       := Source.EditOf;
+  ActionOn     := Source.ActionOn;
+  EventPtr     := Source.EventPtr;
+  EventName    := Source.EventName;
+  OrderLocIEN  := Source.OrderLocIEN;
+  OrderLocName := Source.OrderLocName;
+  ParentID     := Source.ParentID;  
+  LinkObject   := Source.LinkObject;
+end;
+
+procedure TOrder.Clear;
+begin
+  ID           := '';
+  DGroup       := 0;
+  OrderTime    := 0;
+  StartTime    := '';
+  StopTime     := '';
+  Status       := 0;
+  Signature    := 0;
+  VerNurse     := '';
+  VerClerk     := '';
+  ChartRev     := '';
+  Provider     := 0;
+  ProviderName := '';
+  ProviderDEA  := '';
+  ProviderVA   :='';
+  DigSigReq    :='';
+  XMLText      := '';
+  Text         := '';
+  DGroupSeq    := 0;
+  DGroupName   := '';
+  Flagged      := False;
+  Retrieved    := False;
+  EditOf       := '';
+  ActionOn     := '';
+  OrderLocIEN  := '';         //imo
+  OrderLocName := '';         //imo
+  ParentID     := '';
+  LinkObject   := nil;
+end;
+
+{ Order List functions }
+
+function DetailOrder(const ID: string): TStrings;
+begin
+  CallV('ORQOR DETAIL', [ID, Patient.DFN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function ResultOrder(const ID: string): TStrings;
+begin
+  CallV('ORWOR RESULT', [Patient.DFN,ID,ID]);
+  Result := RPCBrokerV.Results;
+end;
+
+function ResultOrderHistory(const ID: string): TStrings;
+begin
+ CallV('ORWOR RESULT HISTORY', [Patient.DFN,ID,ID]);
+ Result := RPCBrokerV.Results;
+end;
+
+procedure LoadDGroupMap;
+begin
+  if uDGroupMap = nil then
+  begin
+    uDGroupMap := TStringList.Create;
+    tCallV(uDGroupMap, 'ORWORDG MAPSEQ', [nil]);
+  end;
+end;
+
+function NameOfStatus(IEN: Integer): string;
+begin
+  case IEN of
+     0: Result := 'error';
+     1: Result := 'discontinued';
+     2: Result := 'complete';
+     3: Result := 'hold';
+     4: Result := 'flagged';
+     5: Result := 'pending';
+     6: Result := 'active';
+     7: Result := 'expired';
+     8: Result := 'scheduled';
+     9: Result := 'partial results';
+    10: Result := 'delayed';
+    11: Result := 'unreleased';
+    12: Result := 'dc/edit';
+    13: Result := 'cancelled';
+    14: Result := 'lapsed';
+    15: Result := 'renewed';
+    97: Result := '';                  { null status, used for 'No Orders Found.' }
+    98: Result := 'new';
+    99: Result := 'no status';
+  end;
+end;
+
+function GetOrderStatus(AnOrderId: string): integer;
+begin
+  Result := StrToIntDef(SCallV('OREVNTX1 GETSTS',[AnOrderId]),0);
+end;
+
+function ExpiredOrdersStartDT: TFMDateTime;
+//Return FM date/time to begin search for expired orders
+begin
+  Result := MakeFMDateTime(sCallV('ORWOR EXPIRED', [nil]));
+end;
+
+function DispOrdersForEvent(AEvtId: string): boolean;
+var
+  theResult: integer;
+begin
+  Result := False;
+  theResult := StrToIntDef(SCallV('OREVNTX1 CPACT',[AEvtId]),0);
+  if theResult > 0 then
+    Result := True;
+end;
+
+function EventInfo(APtEvtID: string): string;
+begin
+  Result := SCallV('OREVNTX1 GTEVT', [APtEvtID]);
+end;
+
+function EventInfo1(AnEvtID: string): string;
+begin
+  Result := SCallV('OREVNTX1 GTEVT1', [AnEvtID]);
+end;
+
+function NameOfDGroup(IEN: Integer): string;
+begin
+  if uDGroupMap = nil then LoadDGroupMap;
+  Result := uDGroupMap.Values[IntToStr(IEN)];
+  Result := Piece(Result, U, 3);
+end;
+
+function ShortNameOfDGroup(IEN: Integer): string;
+begin
+  if uDGroupMap = nil then LoadDGroupMap;
+  Result := uDGroupMap.Values[IntToStr(IEN)];
+  Result := Piece(Result, U, 4);
+end;
+
+function SeqOfDGroup(IEN: Integer): Integer;
+var
+  x: string;
+begin
+  if uDGroupMap = nil then LoadDGroupMap;
+  x := uDGroupMap.Values[IntToStr(IEN)];
+  Result := StrToIntDef(Piece(x, U, 1), 0);
+end;
+
+function CheckOrderGroup(AOrderID: string): integer;
+begin
+  // Result = 1     Inpatient Medication Display Group;
+  // Result = 2     OutPatient Medication Display Group;
+  // Result = 0     None of In or Out patient display group;
+  Result := StrToInt(SCallV('ORWDPS2 CHKGRP',[AOrderID]));
+end;
+
+function CheckQOGroup(AQOId:string): Boolean;
+var
+  rst: integer;
+begin
+  rst := StrToInt(SCallV('ORWDPS2 QOGRP',[AQOId]));
+  Result := False;
+  if rst > 0 then
+    Result := True;
+end;
+
+function TopNameOfDGroup(IEN: Integer): string;
+begin
+  if uDGroupMap = nil then LoadDGroupMap;
+  Result := uDGroupMap.Values[IntToStr(IEN)];
+  Result := Piece(Result, U, 2);
+end;
+
+procedure ClearOrders(AList: TList);
+var
+  i: Integer;
+begin
+  with AList do for i := 0 to Count - 1 do with TOrder(Items[i]) do Free;
+  AList.Clear;
+end;
+
+procedure SetOrderFields(AnOrder: TOrder; const x, y, z: string);
+{           1   2    3     4      5     6   7   8   9    10    11    12    13    14     15     16  17    18    19     20
+{ Pieces: ~IFN^Grp^ActTm^StrtTm^StopTm^Sts^Sig^Nrs^Clk^PrvID^PrvNam^ActDA^Flag^DCType^ChrtRev^DEA#^VA#^DigSig^IMO^DCOrigOrder}
+begin
+  with AnOrder do
+  begin
+    Clear;
+    ID := Copy(Piece(x, U, 1), 2, Length(Piece(x, U, 1)));
+    DGroup := StrToIntDef(Piece(x, U, 2), 0);
+    OrderTime := MakeFMDateTime(Piece(x, U, 3));
+    StartTime := Piece(x, U, 4);
+    StopTime  := Piece(x, U, 5);
+    Status    := StrToIntDef(Piece(x, U, 6), 0);
+    Signature := StrToIntDef(Piece(x, U, 7), 0);
+    VerNurse  := Piece(x, U, 8);
+    VerClerk  := Piece(x, U, 9);
+    ChartRev  := Piece(x, U, 15);
+    Provider  := StrToInt64Def(Piece(x, U, 10), 0);
+    ProviderName := Piece(x, U, 11);
+    ProviderDEA  := Piece(x, U, 16);
+    ProviderVA   := Piece(x, U, 17);
+    DigSigReq    := Piece(x, U, 18);
+    Flagged   := Piece(x, U, 13) = '1';
+    Retrieved := True;
+    OrderLocIEN  := Piece(Piece(x,U,19),':',2);   //imo
+    if Piece(Piece(x,U,19),':',1) = '0;SC(' then OrderLocName := 'Unknown'
+    else OrderLocName := Piece(Piece(x,U,19),':',1);   //imo
+    Text := y;
+    XMLText := z;
+    DGroupSeq  := SeqOfDGroup(DGroup);
+    DGroupName := TopNameOfDGroup(DGroup);
+    //AGP Changes 26.15 PSI-04-063
+    if (pos('Entered in error',Text)>0) then AnOrder.EnteredInError := 1
+    else AnOrder.EnteredInError := 0;
+    //if DGroupName = 'Non-VA Meds' then Text := 'Non-VA  ' + Text;
+    if Piece(x,U,20) = '1' then DCOriginalOrder := True
+    else DCOriginalOrder := False;
+  end;
+end;
+
+procedure LoadOrders(Dest: TList; Filter, Groups: Integer);
+var
+  x, y, z: string;
+  AnOrder: TOrder;
+begin
+  ClearOrders(Dest);
+  if uDGroupMap = nil then LoadDGroupMap;  // to make sure broker not called while looping thru Results
+  CallV('ORWORR GET', [Patient.DFN, Filter, Groups]);
+  with RPCBrokerV do while Results.Count > 0 do
+  begin
+    x := Results[0];
+    Results.Delete(0);
+    if CharAt(x, 1) <> '~' then Continue;        // only happens if out of synch
+    y := '';
+    while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+    begin
+      y := y + Copy(Results[0], 2, Length(Results[0])) + CRLF;
+      Results.Delete(0);
+    end;
+    if Length(y) > 0 then y := Copy(y, 1, Length(y) - 2);  // take off last CRLF
+    z := '';
+    if (Results.Count > 0) and (Results[0] = '|') then
+      begin
+        Results.Delete(0);
+        while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+          begin
+            z := z + Copy(Results[0], 2, Length(Results[0]));
+            Results.Delete(0);
+          end;
+      end;
+    AnOrder := TOrder.Create;
+    SetOrderFields(AnOrder, x, y, z);
+    Dest.Add(AnOrder);
+  end;
+end;
+
+procedure LoadOrdersAbbr(Dest: TList; AView: TOrderView; APtEvtID: string);
+//Filter, Specialty, Groups: Integer; var TextView: Integer;
+//  var CtxtTime: TFMDateTime);
+var
+  i: Integer;
+  AnOrder: TOrder;
+  FilterTS: string;
+  AlertedUserOnly: boolean;
+begin
+  ClearOrders(Dest);
+  if uDGroupMap = nil then LoadDGroupMap;  // to make sure broker not called while looping thru Results
+  FilterTS := IntToStr(AView.Filter) + U + IntToStr(AView.EventDelay.Specialty);
+  AlertedUserOnly := (Notifications.Active and (AView.Filter = 12));
+  CallV('ORWORR AGET', [Patient.DFN, FilterTS, AView.DGroup, AView.TimeFrom, AView.TimeThru, APtEvtID, AlertedUserOnly]);
+  if ((Piece(RPCBrokerV.Results[0], U, 1) = '0') or (Piece(RPCBrokerV.Results[0], U, 1) = '')) and (AView.Filter = 5) then      // if no expiring orders found display expired orders)
+  begin
+    CallV('ORWORR AGET', [Patient.DFN, '27^0', AView.DGroup, ExpiredOrdersStartDT, FMNow, APtEvtID]);
+    AView.ViewName := 'Recently Expired Orders (No Expiring Orders Found) -' + Piece(AView.ViewName, '-', 2);
+  end;
+  {if (Piece(RPCBrokerV.Results[0], U, 1) = '0') or (Piece(RPCBrokerV.Results[0], U, 1) = '') then      // if no orders found (0 element is count)
+  begin
+    AnOrder := TOrder.Create;
+    with AnOrder do
+    begin
+      ID := '0';
+      DGroup := 0;
+      OrderTime := FMNow;
+      Status := 97;
+      Text := 'No orders found.';
+      Retrieved := True;
+    end;
+    Dest.Add(AnOrder);
+    Exit;
+  end;}
+  AView.TextView := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 2), 0);
+  AView.CtxtTime := MakeFMDateTime(Piece(RPCBrokerV.Results[0], U, 3));
+  with RPCBrokerV do for i := 1 to Results.Count - 1 do   // if orders found (skip 0 element)
+  begin
+    if (Piece(RPCBrokerV.Results[i], U, 1) = '0') or (Piece(RPCBrokerV.Results[i], U, 1) = '') then Continue;  
+    if (DelimCount(Results[i],U) = 2) then Continue;  
+    AnOrder := TOrder.Create;
+    with AnOrder do
+    begin
+      ID := Piece(Results[i], U, 1);
+      DGroup := StrToIntDef(Piece(Results[i], U, 2), 0);
+      OrderTime := MakeFMDateTime(Piece(Results[i], U, 3));
+      EventPtr  := Piece(Results[i],U,4);
+      EventName := Piece(Results[i],U,5);
+      DGroupSeq  := SeqOfDGroup(DGroup);
+    end;
+    Dest.Add(AnOrder);
+  end;
+end;
+
+procedure LoadOrdersAbbr(DestDC,DestRL: TList; AView: TOrderView; APtEvtID: string);
+var
+  i: Integer;
+  AnOrder: TOrder;
+  FilterTS: string;
+  DCStart: boolean;
+begin
+  DCStart := False;
+  if uDGroupMap = nil then LoadDGroupMap;
+  FilterTS := IntToStr(AView.Filter) + U + IntToStr(AView.EventDelay.Specialty);
+  CallV('ORWORR RGET', [Patient.DFN, FilterTS, AView.DGroup, AView.TimeFrom, AView.TimeThru, APtEvtID]);
+  if RPCBrokerV.Results[0] = '0' then   // if no orders found (0 element is count)
+  begin
+    AnOrder := TOrder.Create;
+    with AnOrder do
+    begin
+      ID := '0';
+      DGroup := 0;
+      OrderTime := FMNow;
+      Status := 97;
+      Text := 'No orders found.';
+      Retrieved := True;
+    end;
+    DestDC.Add(AnOrder);
+    Exit;
+  end;
+  AView.TextView := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 2), 0);
+  AView.CtxtTime := MakeFMDateTime(Piece(RPCBrokerV.Results[0], U, 3));
+  with RPCBrokerV do for i := 1 to Results.Count - 1 do   // if orders found (skip 0 element)
+  begin
+    if AnsiCompareText('DC START', Results[i]) = 0 then
+    begin
+      DCStart := True;
+      Continue;
+    end;
+    AnOrder := TOrder.Create;
+    with AnOrder do
+    begin
+      ID := Piece(Results[i], U, 1);
+      DGroup := StrToIntDef(Piece(Results[i], U, 2), 0);
+      OrderTime := MakeFMDateTime(Piece(Results[i], U, 3));
+      EventPtr  := Piece(Results[i],U,4);
+      EventName := Piece(Results[i],U,5);
+      DGroupSeq  := SeqOfDGroup(DGroup);
+    end;
+    if DCStart then
+      DestDC.Add(AnOrder)
+    else
+      DestRL.Add(AnOrder);
+  end;
+end;
+
+procedure LoadOrderSheets(Dest: TStrings);
+begin
+  CallV('ORWOR SHEETS', [Patient.DFN]);
+  MixedCaseByPiece(RPCBrokerV.Results, U, 2);
+  FastAssign(RPCBrokerV.Results, Dest);
+ end;
+
+procedure LoadOrderSheetsED(Dest: TStrings);
+var
+  i: integer;
+begin
+  CallV('OREVNTX PAT', [Patient.DFN]);
+  MixedCaseByPiece(RPCBrokerV.Results, U, 2);
+  Dest.Add('C;O^Current View');
+  if RPCBrokerV.Results.Count > 1 then
+  begin
+    RPCBrokerV.Results.Delete(0);
+    for i := 0 to RPCbrokerV.Results.Count - 1 do
+      RPCBrokerV.Results[i] := RPCBrokerV.Results[i] + ' Orders';
+    FastAddStrings(RPCBrokerV.Results, Dest);
+  end;
+end;
+
+procedure LoadOrderViewDefault(AView: TOrderView);
+var
+  x: string;
+begin
+  x := sCallV('ORWOR VWGET', [nil]);
+  with AView do
+  begin
+    Changed   := False;
+    DGroup    := StrToIntDef(Piece(x, ';', 4), 0);
+    Filter    := StrToIntDef(Piece(x, ';', 3), 0);
+    InvChrono := Piece(x, ';', 6) = 'R';
+    ByService := Piece(x, ';', 7) = '1';
+    TimeFrom  := StrToFloat(Piece(x, ';', 1));
+    TimeThru  := StrToFloat(Piece(x, ';', 2));
+    CtxtTime  := 0;
+    TextView  := 0;
+    ViewName  := Piece(x, ';', 8);
+    EventDelay.EventType := 'C';
+    EventDelay.Specialty := 0;
+    EventDelay.Effective := 0;
+  end;
+end;
+
+procedure LoadUnsignedOrders(IDList, HaveList: TStrings);
+var
+  i: Integer;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORWOR UNSIGN';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;
+    Param[1].PType := list;
+    Param[1].Mult['0'] := '';  // (to prevent broker from hanging if empty list)
+    for i := 0 to Pred(HaveList.Count) do Param[1].Mult['"' + HaveList[i] + '"'] := '';
+    CallBroker;
+    FastAssign(RPCBrokerV.Results,IDList);
+  end;
+end;
+
+procedure RetrieveOrderFields(OrderList: TList; ATextView: Integer; ACtxtTime: TFMDateTime);
+var
+  i, OrderIndex: Integer;
+  x, y, z: string;
+  AnOrder: TOrder;
+  IDList: TStringList;
+begin
+  IDList := TStringList.Create;
+  try
+    with OrderList do for i := 0 to Count - 1 do IDList.Add(TOrder(Items[i]).ID);
+    CallV('ORWORR GET4LST', [ATextView, ACtxtTime, IDList]);
+  finally
+    IDList.Free;
+  end;
+  OrderIndex := -1;
+  with RPCBrokerV do while Results.Count > 0 do
+  begin
+    Inc(OrderIndex);
+    if (OrderIndex >= OrderList.Count) then
+    begin
+      Results.Delete(0);
+      Continue;
+    end;
+    AnOrder := TOrder(OrderList.Items[OrderIndex]);
+    x := Results[0];
+    Results.Delete(0);
+    if CharAt(x, 1) <> '~' then Continue;                  // only happens if out of synch
+    if Piece(x, U, 1) <> '~' + AnOrder.ID then Continue;   // only happens if out of synch
+    y := '';
+    while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+    begin
+      y := y + Copy(Results[0], 2, Length(Results[0])) + CRLF;
+      Results.Delete(0);
+    end;
+    if Length(y) > 0 then y := Copy(y, 1, Length(y) - 2);  // take off last CRLF
+    z := '';
+    if (Results.Count > 0) and (Results[0] = '|') then
+      begin
+        Results.Delete(0);
+        while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+          begin
+            z := z + Copy(Results[0], 2, Length(Results[0]));
+            Results.Delete(0);
+          end;
+      end;
+    SetOrderFields(AnOrder, x, y, z);
+  end;
+end;
+
+procedure SaveOrderViewDefault(AView: TOrderView);
+var
+  x: string;
+begin
+  with AView do
+  begin
+    x := MakeRelativeDateTime(TimeFrom) + ';' +            // 1
+         MakeRelativeDateTime(TimeThru) + ';' +            // 2
+         IntToStr(Filter)               + ';' +            // 3
+         IntToStr(DGroup)               + ';;';            // 4, skip 5
+    if InvChrono then x := x + 'R;' else x := x + 'F;';    // 6
+    if ByService then x := x + '1'  else x := x + '0';     // 7
+    CallV('ORWOR VWSET', [x]);
+  end;
+end;
+
+{ MOVE THESE FUNCTIONS INTO UORDERS??? }
+
+{ < 0 if Item1 is less and Item2, 0 if they are equal and > 0 if Item1 is greater than Item2 }
+function InverseByGroup(Item1, Item2: Pointer): Integer;
+var
+  Order1, Order2: TOrder;
+  DSeq1, DSeq2, IFN1, IFN2: Integer;
+begin
+  Order1 := TOrder(Item1);
+  Order2 := TOrder(Item2);
+  if ( (Piece(Order1.ID, ';', 2) = '1') and (Changes.Exist(CH_ORD, Order1.ID)) )
+    and ( StrToIntDef(Order1.EventPtr,0) = 0 ) then
+      DSeq1 := 0
+    else DSeq1 := Order1.DGroupSeq;
+  if ((Piece(Order2.ID, ';', 2) = '1') and (Changes.Exist(CH_ORD, Order2.ID)))
+    and ( StrToIntDef(Order1.EventPtr,0) = 0 ) then
+      DSeq2 := 0
+    else DSeq2 := Order2.DGroupSeq;
+  if DSeq1 = DSeq2 then
+  begin
+    if Order1.OrderTime > Order2.OrderTime then Result := -1
+    else if Order1.OrderTime < Order2.OrderTime then Result := 1
+    else Result := 0;
+    if Result = 0 then
+    begin
+      IFN1 := StrToIntDef(Piece(Order1.ID, ';', 1), 0);
+      IFN2 := StrToIntDef(Piece(Order2.ID, ';', 1), 0);
+      if IFN1 < IFN2 then Result := -1;
+      if IFN1 > IFN2 then Result := 1;
+    end;
+  end
+  else if DSeq1 < DSeq2 then Result := -1
+  else Result := 1;
+end;
+
+function ForwardByGroup(Item1, Item2: Pointer): Integer;
+var
+  Order1, Order2: TOrder;
+  DSeq1, DSeq2, IFN1, IFN2: Integer;
+begin
+  Order1 := TOrder(Item1);
+  Order2 := TOrder(Item2);
+  if (Piece(Order1.ID, ';', 2) = '1') and (Changes.Exist(CH_ORD, Order1.ID))
+    then DSeq1 := 0
+    else DSeq1 := Order1.DGroupSeq;
+  if (Piece(Order2.ID, ';', 2) = '1') and (Changes.Exist(CH_ORD, Order2.ID))
+    then DSeq2 := 0
+    else DSeq2 := Order2.DGroupSeq;
+  if DSeq1 = DSeq2 then
+  begin
+    if Order1.OrderTime < Order2.OrderTime then Result := -1
+    else if Order1.OrderTime > Order2.OrderTime then Result := 1
+    else Result := 0;
+    if Result = 0 then
+    begin
+      IFN1 := StrToIntDef(Piece(Order1.ID, ';', 1), 0);
+      IFN2 := StrToIntDef(Piece(Order2.ID, ';', 1), 0);
+      if IFN1 < IFN2 then Result := -1;
+      if IFN1 > IFN2 then Result := 1;
+    end;
+  end
+  else if DSeq1 < DSeq2 then Result := -1
+  else Result := 1;
+end;
+
+function InverseChrono(Item1, Item2: Pointer): Integer;
+var
+  Order1, Order2: TOrder;
+  IFN1, IFN2: Integer;
+begin
+  Order1 := TOrder(Item1);
+  Order2 := TOrder(Item2);
+  if Order1.OrderTime > Order2.OrderTime then Result := -1
+  else if Order1.OrderTime < Order2.OrderTime then Result := 1
+  else Result := 0;
+  if Result = 0 then
+  begin
+    IFN1 := StrToIntDef(Piece(Order1.ID, ';', 1), 0);
+    IFN2 := StrToIntDef(Piece(Order2.ID, ';', 1), 0);
+    if IFN1 < IFN2 then Result := -1;
+    if IFN1 > IFN2 then Result := 1;
+  end;
+end;
+
+function ForwardChrono(Item1, Item2: Pointer): Integer;
+var
+  Order1, Order2: TOrder;
+  IFN1, IFN2: Integer;
+begin
+  Order1 := TOrder(Item1);
+  Order2 := TOrder(Item2);
+  if Order1.OrderTime < Order2.OrderTime then Result := -1
+  else if Order1.OrderTime > Order2.OrderTime then Result := 1
+  else Result := 0;
+  if Result = 0 then
+  begin
+    IFN1 := StrToIntDef(Piece(Order1.ID, ';', 1), 0);
+    IFN2 := StrToIntDef(Piece(Order2.ID, ';', 1), 0);
+    if IFN1 < IFN2 then Result := -1;
+    if IFN1 > IFN2 then Result := 1;
+  end;
+end;
+
+procedure SortOrders(AList: TList; ByGroup, InvChron: Boolean);
+begin
+  if ByGroup then
+  begin
+    if InvChron then AList.Sort(InverseByGroup) else AList.Sort(ForwardByGroup);
+  end else
+  begin
+    if InvChron then AList.Sort(InverseChrono)  else AList.Sort(ForwardChrono);
+  end;
+end;
+
+function DGroupAll: Integer;
+var
+  x: string;
+begin
+  if uDGroupAll = 0 then
+  begin
+    x := sCallV('ORWORDG IEN', ['ALL']);
+    uDGroupAll := StrToIntDef(x, 1);
+  end;
+  Result := uDGroupAll;
+end;
+
+function DGroupIEN(AName: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWORDG IEN', [AName]), 0);
+end;
+
+procedure ListDGroupAll(Dest: TStrings);
+begin
+  CallV('ORWORDG ALLTREE', [nil]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListSpecialties(Dest: TStrings);
+begin
+  CallV('ORWOR TSALL', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListSpecialtiesED(AType: Char; Dest: TStrings);
+var
+  i :integer;
+  Currloc: integer;
+  admitEvts: TStringList;
+  otherEvts: TStringList;
+  commonList: TStringList;
+  IsObservation: boolean;
+begin
+  if Encounter <> nil then
+    Currloc := Encounter.Location
+  else
+    Currloc := 0;
+  IsObservation := (Piece(GetCurrentSpec(Patient.DFN), U, 3) = '1');
+  commonList := TStringList.Create;
+  CallV('OREVNTX1 CMEVTS',[Currloc]);
+  //MixedCaseList(RPCBrokerV.Results);
+  if RPCBrokerV.Results.Count > 0 then with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    if AType = 'D' then
+    begin
+      if AType = Piece(Results[i],'^',3) then
+        commonList.Add(Results[i]);
+    end
+    else if AType = 'A' then
+    begin
+      if (Piece(Results[i],'^',3) = 'T') or (Piece(Results[i],'^',3) = 'D') then
+        Continue;
+      commonList.Add(Results[i]);
+    end
+    else if IsObservation then
+    begin
+      if (Piece(Results[i],'^',3) = 'T') then
+        Continue;
+      commonList.Add(Results[i]);
+    end
+    else
+    begin
+     if Length(Results[i])> 0 then
+      commonList.Add(Results[i]);
+    end;
+  end;
+  if commonList.Count > 0 then
+  begin
+    FastAddStrings(TStrings(commonList), Dest);
+    Dest.Add('^^^^^^^^___________________________________________________________________________________________');
+    Dest.Add(LLS_SPACE);
+  end;
+  if AType = #0 then
+  begin
+    admitEvts := TStringList.Create;
+    otherEvts := TSTringList.Create;
+    CallV('OREVNTX ACTIVE',['A']);
+    //MixedCaseList(RPCBrokerV.Results);
+    if RPCBrokerV.Results.Count > 0 then
+    begin
+      RPCBrokerV.Results.Delete(0);
+      FastAddStrings(RPCBrokerV.Results, admitEvts);
+    end;
+    if IsObservation then
+      CallV('OREVNTX ACTIVE',['O^M^D'])
+    else
+      CallV('OREVNTX ACTIVE',['T^O^M^D']);
+    //MixedCaseList(RPCBrokerV.Results);
+    if RPCBrokerV.Results.Count > 0 then
+    begin
+      RPCBrokerV.Results.Delete(0);
+      FastAddStrings(RPCBrokerV.Results, otherEvts);
+    end;
+    FastAddStrings(TStrings(otherEvts), Dest);
+    Dest.Add('^^^^^^^^_____________________________________________________________________________________________');
+    Dest.Add(LLS_SPACE);
+    FastAddStrings(TStrings(admitEvts), Dest);
+    admitEvts.Free;
+    otherEvts.Free;
+  end
+  else if AType = 'A' then
+  begin
+    CallV('OREVNTX ACTIVE',['A^O^M']);
+    //MixedCaseList(RPCBrokerV.Results);
+    if RPCBrokerV.Results.Count > 0 then
+      RPCBrokerV.Results.Delete(0);
+    FastAddStrings(RPCBrokerV.Results, Dest);
+  end
+  else
+  begin
+    CallV('OREVNTX ACTIVE',[AType]);
+    //MixedCaseList(RPCBrokerV.Results);
+    if RPCBrokerV.Results.Count > 0 then
+      RPCBrokerV.Results.Delete(0);
+    FastAddStrings(RPCBrokerV.Results, Dest);
+  end;
+end;
+
+procedure ListOrderFilters(Dest: TStrings);
+begin
+  CallV('ORWORDG REVSTS', [nil]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+
+procedure ListOrderFiltersAll(Dest: TStrings);
+begin
+  CallV('ORWORDG REVSTS', [nil]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+{ Write Orders }
+
+procedure BuildResponses(var ResolvedDialog: TOrderDialogResolved; const KeyVars: string;
+  AnEvent: TOrderDelayEvent; ForIMO: boolean);
+const
+  BoolChars: array[Boolean] of Char = ('0', '1');
+  RESERVED_PIECE = '';
+var
+  DelayEvent, x, TheOrder: string;
+  Idx, tmpOrderGroup, PickupIdx, ForIMOResponses: integer;
+  IfUDGrp: Boolean;
+  IfUDGrpForQO: Boolean;
+  temp: string;
+begin
+  ForIMOResponses := 0;
+  tmpOrderGroup := 0;
+  temp := '';
+  if ForIMO then ForIMOResponses := 1;
+  PickupIdx := 0;
+  IfUDGrp := False;
+  TheOrder := ResolvedDialog.InputID;
+  IfUDGrpForQO := CheckQOGroup(TheOrder);
+  if (CharAt(TheOrder,1) in ['C','T']) then
+  begin
+    Delete(TheOrder,1,1);
+    tmpOrderGroup := CheckOrderGroup(TheOrder);
+    if tmpOrderGroup = 1 then IfUDGrp := True else IfUDGrp := False;
+  end;
+  if (not IfUDGrp) and (AnEvent.EventType in ['A','T']) then
+    IfUDGrp := True;
+  //FLDS=DFN^LOC^ORNP^INPT^SEX^AGE^EVENT^SC%^^^Key Variables
+  if (Patient.Inpatient = true) and (tmpOrderGroup = 2) then temp := '0';
+  if temp <> '0' then temp := BoolChars[Patient.Inpatient];
+  with AnEvent do
+  begin
+    if isNewEvent then
+      DelayEvent := '0;'+ EventType + ';' + IntToStr(Specialty) + ';' + FloatToStr(Effective)
+    else
+      DelayEvent := IntToStr(AnEvent.PtEventIFN) + ';' + EventType + ';' + IntToStr(Specialty) + ';' + FloatToStr(Effective);
+  end;
+  x := Patient.DFN                  + U +   // 1
+       IntToStr(Encounter.Location) + U +   // 2
+       IntToStr(Encounter.Provider) + U +   // 3
+       BoolChars[Patient.Inpatient] + U +   // 4
+       Patient.Sex                  + U +   // 5
+       IntToStr(Patient.Age)        + U +   // 6
+       DelayEvent                   + U +   // 7 (for OREVENT)
+       IntToStr(Patient.SCPercent)  + U +   // 8
+       RESERVED_PIECE               + U +   // 9
+       RESERVED_PIECE               + U +   // 10
+       KeyVars;
+  CallV('ORWDXM1 BLDQRSP', [ResolvedDialog.InputID, x, ForIMOResponses, Encounter.Location]);
+  // LST(0)=QuickLevel^ResponseID(ORIT;$H)^Dialog^Type^FormID^DGrp
+  with RPCBrokerV do
+  begin
+    x := Results[0];
+    with ResolvedDialog do
+    begin
+      QuickLevel   := StrToIntDef(Piece(x, U, 1), 0);
+      ResponseID   := Piece(x, U, 2);
+      DialogIEN    := StrToIntDef(Piece(x, U, 3), 0);
+      DialogType   := CharAt(Piece(x, U, 4), 1);
+      FormID       := StrToIntDef(Piece(x, U, 5), 0);
+      DisplayGroup := StrToIntDef(Piece(x, U, 6), 0);
+      QOKeyVars    := Pieces(x, U, 7, 7 + MAX_KEYVARS);
+      Results.Delete(0);
+      if Results.Count > 0 then
+      begin
+        if (IfUDGrp) or (IfUDGrpForQO) then
+        begin
+          for Idx := 0 to Results.Count - 1 do
+          begin
+            if(Pos('PICK UP',UpperCase(Results[idx])) > 0) or (Pos('PICK-UP',UpperCase(Results[idx])) > 0) then
+            begin
+              PickupIdx := Idx;
+              Break;
+            end;
+          end;
+        end;
+        if PickupIdx > 0 then
+          Results.Delete(PickupIdx);
+        SetString(ShowText, Results.GetText, StrLen(Results.GetText));
+      end;
+    end;
+  end;
+end;
+
+procedure ClearOrderRecall;
+begin
+  CallV('ORWDXM2 CLRRCL', [nil]);
+end;
+
+function CommonLocationForOrders(OrderList: TStringList): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWD1 COMLOC', [OrderList]), 0);
+end;
+
+function FormIDForDialog(IEN: Integer): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDXM FORMID', [IEN]), 0);
+end;
+
+function DlgIENForName(DlgName: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('OREVNTX1 DLGIEN',[DlgName]),0);
+end;
+
+procedure LoadOrderMenu(AnOrderMenu: TOrderMenu; AMenuIEN: Integer);
+var
+  OrderMenuItem: TOrderMenuItem;
+  i: Integer;
+begin
+  CallV('ORWDXM MENU', [AMenuIEN]);
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    // Results[0] = Name^Cols^PathSwitch^^^LRFZX^LRFSAMP^LRFSPEC^LRFDATE^LRFURG^LRFSCH^PSJNPOC^
+    //              GMRCNOPD^GMRCNOAT^GMRCREAF^^^^^
+    AnOrderMenu.Title   := Piece(Results[0], U, 1);
+    AnOrderMenu.NumCols := StrToIntDef(Piece(Results[0], U, 2), 1);
+    AnOrderMenu.KeyVars := Pieces(Results[0], U, 6, 6 + MAX_KEYVARS);
+    for i := 1 to Results.Count - 1 do
+    begin
+      OrderMenuItem := TOrderMenuItem.Create;
+      with OrderMenuItem do
+      begin
+        Col      := StrToIntDef(Piece(Results[i], U, 1), 0) - 1;
+        Row      := StrToIntDef(Piece(Results[i], U, 2), 0) - 1;
+        DlgType  := CharAt(Piece(Results[i], U, 3), 1);
+        IEN      := StrToIntDef(Piece(Results[i], U, 4), 0);
+        FormID   := StrToIntDef(Piece(Results[i], U, 5), 0);
+        AutoAck  := Piece(Results[i], U, 6) = '1';
+        ItemText := Piece(Results[i], U, 7);
+        Mnemonic := Piece(Results[i], U, 8);
+        Display  := StrToIntDef(Piece(Results[i], U, 9), 0);
+      end; {with OrderItem}
+      AnOrderMenu.MenuItems.Add(OrderMenuItem);
+    end; {for i}
+  end; {with RPCBrokerV}
+end;
+
+procedure LoadOrderSet(SetItems: TStrings; AnIEN: Integer; var KeyVars, ACaption: string);
+var
+  x: string;
+begin
+  CallV('ORWDXM LOADSET', [AnIEN]);
+  KeyVars := '';
+  ACaption := '';
+  if RPCBrokerV.Results.Count > 0 then
+  begin
+    x := RPCBrokerV.Results[0];
+    ACaption := Piece(x, U, 1);
+    KeyVars  := Copy(x, Pos(U, x) + 1, Length(x));
+    RPCBrokerV.Results.Delete(0);
+  end;
+  FastAssign(RPCBrokerV.Results, SetItems);
+end;
+
+procedure LoadWriteOrders(Dest: TStrings);
+begin
+  CallV('ORWDX WRLST', [Encounter.Location]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadWriteOrdersED(Dest: TStrings; EvtID: string);
+begin
+  CallV('OREVNTX1 WRLSTED', [Encounter.Location,EvtID]);
+  if RPCBrokerV.Results.count > 0 then
+  begin
+    Dest.Clear;
+  FastAssign(RPCBrokerV.Results, Dest);
+  end
+end;
+
+function OrderDisabledMessage(DlgIEN: Integer): string;
+begin
+  Result := sCallV('ORWDX DISMSG', [DlgIEN]);
+end;
+
+procedure SendOrders(OrderList: TStringList; const ESCode: string);
+var
+  i: Integer;
+begin
+  { prepending the space to ESCode is temporary way to keep broker from crashing }
+  CallV('ORWDX SEND', [Patient.DFN, Encounter.Provider, Encounter.Location, ' ' + ESCode, OrderList]);
+  { this is a stop gap way to prevent an undesired error message when user chooses not to sign }
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+    if Piece(Results[i], U, 4) = 'This order requires a signature.'
+      then Results[i] := Piece(Results[i], U, 1);
+  OrderList.Clear;
+  FastAssign(RPCBrokerV.Results, OrderList);
+end;
+
+procedure SendReleaseOrders(OrderList: TStringList);
+var
+  loc: string;
+  CurrTS: Integer;
+  PtTS: string;
+begin
+  PtTS := Piece(GetCurrentSpec(Patient.DFN),'^',2);
+  CurrTS := StrToIntDef(PtTS,0);
+  Loc := IntToStr(Encounter.Location);
+  CallV('ORWDX SENDED',[OrderList,CurrTS,Loc]);
+  OrderList.Clear;
+  FastAssign(RPCBrokerV.Results, OrderList);
+end;
+
+procedure SendAndPrintOrders(OrderList, ErrList: TStrings; const ESCode: string; const DeviceInfo: string);
+var
+  i: Integer;
+begin
+  { prepending the space to ESCode is temporary way to keep broker from crashing }
+  CallV('ORWDX SENDP', [Patient.DFN, Encounter.Provider, Encounter.Location, ' ' + ESCode, DeviceInfo, OrderList]);
+  { this is a stop gap way to prevent an undesired error message when user chooses not to sign }
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+    if Piece(Results[i], U, 3) <> 'This order requires a signature.'
+      then ErrList.Add(Results[i]);
+end;
+
+procedure PrintOrdersOnReview(OrderList: TStringList; const DeviceInfo: string; PrintLoc: Integer = 0);
+var
+Loc: Integer;
+begin
+  if (PrintLoc > 0) and (PrintLoc <> Encounter.Location) then Loc := PrintLoc
+  else Loc := Encounter.Location;
+  CallV('ORWD1 RVPRINT',  [Loc, DeviceInfo, OrderList]);
+end;
+
+procedure PrintServiceCopies(OrderList: TStringList; PrintLoc: Integer = 0);  {*REV*}
+var
+Loc: Integer;
+begin
+  if (PrintLoc > 0) and (PrintLoc <> Encounter.Location) then Loc := PrintLoc
+  else Loc := Encounter.Location;
+  CallV('ORWD1 SVONLY',  [Loc, OrderList]);
+end;
+
+procedure ExecutePrintOrders(SelectedList: TStringList; const DeviceInfo: string);
+begin
+  CallV('ORWD1 PRINTGUI', [Encounter.Location, DeviceInfo, SelectedList]);
+end;
+
+{ Order Actions }
+
+function DialogForOrder(const ID: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDX DLGID', [ID]), 0);
+end;
+
+function FormIDForOrder(const ID: string): Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDX FORMID', [ID]), 0);
+end;
+
+procedure SetOrderFromResults(AnOrder: TOrder);
+var
+  x, y, z: string;
+begin
+  with RPCBrokerV do while Results.Count > 0 do
+  begin
+    x := Results[0];
+    Results.Delete(0);
+    if CharAt(x, 1) <> '~' then Continue;        // only happens if out of synch
+    y := '';
+    while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+    begin
+      y := y + Copy(Results[0], 2, Length(Results[0])) + CRLF;
+      Results.Delete(0);
+    end;
+    if Length(y) > 0 then y := Copy(y, 1, Length(y) - 2);  // take off last CRLF
+    z := '';
+    if (Results.Count > 0) and (Results[0] = '|') then
+      begin
+        Results.Delete(0);
+        while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+          begin
+            z := z + Copy(Results[0], 2, Length(Results[0])); //PKI Change
+            Results.Delete(0);
+          end;
+      end;
+    SetOrderFields(AnOrder, x, y, z);
+  end;
+end;
+
+procedure LockPatient(var ErrMsg: string);
+begin
+  ErrMsg := sCallV('ORWDX LOCK', [Patient.DFN]);
+  if Piece(ErrMsg, U, 1) = '1' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+end;
+
+procedure UnlockPatient;
+begin
+  sCallV('ORWDX UNLOCK', [Patient.DFN]);
+end;
+
+procedure LockOrder(OrderID: string; var ErrMsg: string);
+begin
+  ErrMsg := sCallV('ORWDX LOCK ORDER', [OrderID]);
+  if Piece(ErrMsg, U, 1) = '1' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+end;
+
+procedure UnlockOrder(OrderID: string);
+begin
+  sCallV('ORWDX UNLOCK ORDER', [OrderID]);
+end;
+
+procedure ValidateOrderAction(const ID, Action: string; var ErrMsg: string);
+begin
+  ErrMsg := sCallV('ORWDXA VALID', [ID, Action, Encounter.Provider]);
+end;
+
+procedure ValidateOrderActionNature(const ID, Action, Nature: string; var ErrMsg: string);
+begin
+  ErrMsg := sCallV('ORWDXA VALID', [ID, Action, Encounter.Provider, Nature]);
+end;
+
+procedure IsLatestAction(const ID: string; var ErrList: TStringList);
+begin
+  CallV('ORWOR ACTION TEXT',[ID]);
+  if RPCBrokerV.Results.Count > 0 then
+    FastAssign(RPCBrokerV.Results, Errlist);
+end;
+
+procedure ChangeOrder(AnOrder: TOrder; ResponseList: TList);
+begin
+end;
+
+procedure RenewOrder(AnOrder: TOrder; RenewFields: TOrderRenewFields; IsComplex: integer; AnIMOOrderAppt: double; OCList: TStringList);
+{ put RenewFields into tmplst[0]=BaseType^Start^Stop^Refills^Pickup, tmplst[n]=comments }
+var
+  tmplst: TStringList;
+  i: integer;
+  y: string;
+begin
+
+  tmplst := TStringList.Create;
+
+  {Begin Billing Aware}
+  UBAGlobals.SourceOrderID := AnOrder.ID;
+  {End Billing Aware}
+
+  try
+    with RenewFields do
+       begin
+       tmplst.SetText(PChar(Comments));
+       tmplst.Insert(0, IntToStr(BaseType) + U + StartTime + U + StopTime + U + IntToStr(Refills) + U + Pickup);
+       end;
+
+    with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'ORWDXR RENEW';
+      Param[0].PType := literal;
+      Param[0].Value := AnOrder.ID;
+      Param[1].PType := literal;
+      Param[1].Value := Patient.DFN;
+      Param[2].PType := literal;
+      Param[2].Value := IntToStr(Encounter.Provider);
+      Param[3].PType := literal;
+      Param[3].Value := IntToStr(Encounter.Location);
+      Param[4].PType := list;
+      for i := 0 to tmplst.Count - 1 do
+        Param[4].Mult[IntToStr(i+1)] := tmplst[i];
+      Param[4].Mult['"ORCHECK"'] := IntToStr(OCList.Count);
+      for i := 0 to OCList.Count - 1 do
+      begin
+      // put quotes around everything to prevent broker from choking
+      y := '"ORCHECK","' + Piece(OCList[i], U, 1) + '","' + Piece(OCList[i], U, 3) +
+        '","' + IntToStr(i+1) + '"';
+      Param[4].Mult[y] := Pieces(OCList[i], U, 2, 4);
+    end;
+    Param[5].PType := literal;
+    Param[5].Value := IntToStr(IsComplex);
+    Param[6].PType := literal;
+    Param[6].Value := FloatToStr(AnIMOOrderAppt);
+    CallBroker;
+    SetOrderFromResults(AnOrder);
+
+     {Begin Billing Aware}
+       UBAGlobals.TargetOrderID := AnOrder.ID; //the ID of the renewed order
+       UBAGlobals.CopyTreatmentFactorsDxsToRenewedOrder;
+     {End Billing Aware}
+
+  end;
+  finally
+    tmplst.Free;
+  end;
+end;
+
+procedure HoldOrder(AnOrder: TOrder);
+begin
+  CallV('ORWDXA HOLD', [AnOrder.ID, Encounter.Provider]);
+  SetOrderFromResults(AnOrder);
+end;
+
+procedure ReleaseOrderHold(AnOrder: TOrder);
+begin
+  CallV('ORWDXA UNHOLD', [AnOrder.ID, Encounter.Provider]);
+  SetOrderFromResults(AnOrder);
+end;
+
+procedure ListDCReasons(Dest: TStrings; var DefaultIEN: Integer);
+begin
+  CallV('ORWDX2 DCREASON', [nil]);
+  ExtractItems(Dest, RPCBrokerV.Results, 'DCReason');
+  //AGP Change 26.15 for PSI-04-63
+  //DefaultIEN := StrToIntDef(Piece(ExtractDefault(RPCBrokerV.Results, 'DCReason'), U, 1), 0);
+end;
+
+function GetREQReason: Integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDXA DCREQIEN', [nil]), 0);
+end;
+
+procedure DCOrder(AnOrder: TOrder; AReason: Integer; NewOrder: boolean; var DCType: Integer);
+var
+  AParentID, DCOrigOrder: string;
+begin
+  AParentID := AnOrder.ParentID;
+  if AnOrder.DCOriginalOrder = true then DCOrigOrder := '1'
+  else DCOrigOrder := '0';
+  CallV('ORWDXA DC', [AnOrder.ID, Encounter.Provider, Encounter.Location, AReason, DCOrigOrder, NewOrder]);
+  UBACore.DeleteDCOrdersFromCopiedList(AnOrder.ID);
+  DCType := StrToIntDef(Piece(RPCBrokerV.Results[0], U, 14), 0);
+  SetOrderFromResults(AnOrder);
+  AnOrder.ParentID := AParentID;
+end;
+
+procedure AlertOrder(AnOrder: TOrder; AlertRecip: Int64);
+begin
+  CallV('ORWDXA ALERT', [AnOrder.ID, AlertRecip]);
+  // don't worry about results
+end;
+
+procedure FlagOrder(AnOrder: TOrder; const FlagReason: string; AlertRecip: Int64);
+begin
+  CallV('ORWDXA FLAG', [AnOrder.ID, FlagReason, AlertRecip]);
+  SetOrderFromResults(AnOrder);
+end;
+
+procedure LoadFlagReason(Dest: TStrings; const ID: string);
+begin
+  CallV('ORWDXA FLAGTXT', [ID]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure UnflagOrder(AnOrder: TOrder; const AComment: string);
+begin
+  CallV('ORWDXA UNFLAG', [AnOrder.ID, AComment]);
+  SetOrderFromResults(AnOrder);
+end;
+
+procedure LoadWardComments(Dest: TStrings; const ID: string);
+begin
+  CallV('ORWDXA WCGET', [ID]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure PutWardComments(Src: TStrings; const ID: string; var ErrMsg: string);
+begin
+  ErrMsg := sCallV('ORWDXA WCPUT', [ID, Src]);
+end;
+
+procedure CompleteOrder(AnOrder: TOrder; const ESCode: string);
+begin
+  CallV('ORWDXA COMPLETE', [AnOrder.ID, ESCode]);
+  SetOrderFromResults(AnOrder);
+end;
+
+procedure VerifyOrder(AnOrder: TOrder; const ESCode: string);
+begin
+  CallV('ORWDXA VERIFY', [AnOrder.ID, ESCode]);
+  SetOrderFromResults(AnOrder);
+end;
+
+procedure VerifyOrderChartReview(AnOrder: TOrder; const ESCode: string);
+begin
+  CallV('ORWDXA VERIFY', [AnOrder.ID, ESCode, 'R']);
+  SetOrderFromResults(AnOrder);
+end;
+
+function GetOrderableIen(AnOrderId:string): integer;
+begin
+  Result := StrToIntDef(sCallV('ORWDXR GTORITM', [AnOrderId]),0);
+end;
+
+procedure StoreDigitalSig(AID, AHash: string; AProvider: Int64; ASig, ACrlUrl: string; var AError: string);
+var
+  len, ix: integer;
+  ASigAray: TStringList;
+begin
+  ASigAray := TStringList.Create;
+  ix := 1;
+  len := length(ASig);
+  while len >= ix do
+    begin
+        ASigAray.Add(copy(ASig, ix, 240));
+        inc(ix, 240);
+    end;   //while
+  try
+    CallV('ORWOR1 SIG', [AID, AHash, len, '100', AProvider, ASigAray, ACrlUrl]);
+    with RPCBrokerV do
+      if piece(Results[0],'^',1) = '-1' then
+        begin
+          ShowMsg('Storage of Digital Signature FAILED: ' + piece(Results[0],'^',2) + CRLF + CRLF +
+            'This error will prevent this order from being sent to the service for processing. Please cancel the order and try again.' + CRLF + CRLF +
+            'If this problem persists, then there is a problem in the CPRS PKI interface, and it needs to be reported through the proper channels, to the developer Cary Malmrose.');
+          AError := '1';
+        end;
+  finally
+    ASigAray.Free;
+  end;
+end;
+
+procedure UpdateOrderDGIfNeeded(AnID: string);
+var
+  NeedUpdate: boolean;
+  tmpDFN: string;
+begin
+  tmpDFN := Patient.DFN;
+  Patient.Clear;
+  Patient.DFN := tmpDFN;
+  NeedUpdate := SCallV('ORWDPS4 IPOD4OP', [AnID]) = '1';
+  if Patient.Inpatient and needUpdate then
+    SCallV('ORWDPS4 UPDTDG',[AnID]);
+end;
+
+function CanEditSuchRenewedOrder(AnID: string; IsTxtOrder: integer): boolean;
+begin
+  Result := SCallV('ORWDXR01 CANCHG',[AnID,IsTxtOrder]) = '1';
+end;
+
+function IsPSOSupplyDlg(DlgID, QODlg: integer): boolean;
+begin
+  Result := SCallV('ORWDXR01 ISSPLY',[DlgID,QODlg])='1';
+end;
+
+procedure SaveChangesOnRenewOrder(var AnOrder: TOrder; AnID, TheRefills, ThePickup: string; IsTxtOrder: integer);
+begin
+  SCallV('ORWDXR01 SAVCHG',[AnID,TheRefills,ThePickup,IsTxtOrder]);
+  SetOrderFromResults(AnOrder);
+end;
+
+function DoesOrderStatusMatch(OrderArray: TStringList): boolean;
+begin
+ Result := StrtoIntDef(SCallV('ORWDX1 ORDMATCH',[Patient.DFN, OrderArray]),0)=1;
+end;
+
+{ Order Information }
+
+function OrderIsReleased(const ID: string): Boolean;
+begin
+  Result := sCallV('ORWDXR ISREL', [ID]) = '1';
+end;
+
+procedure LoadRenewFields(RenewFields: TOrderRenewFields; const ID: string);
+var
+  i: Integer;
+begin
+  CallV('ORWDXR RNWFLDS', [ID]);
+  with RPCBrokerV, RenewFields do
+  begin
+    BaseType  := StrToIntDef(Piece(Results[0], U, 1), 0);
+    StartTime := Piece(Results[0], U, 2);
+    StopTime  := Piece(Results[0], U, 3);
+    Refills   := StrToIntDef(Piece(Results[0], U, 4), 0);
+    Pickup    := Piece(Results[0], U, 5);
+    Comments  := '';
+    for i := 1 to Results.Count - 1 do Comments := Comments + CRLF + Results[i];
+    if Copy(Comments, 1, 2) = CRLF then Delete(Comments, 1, 2);
+  end;
+end;
+
+procedure GetChildrenOfComplexOrder(AnParentID,CurrAct: string; var ChildList: TStringList); //PSI-COMPLEX
+var
+  i: integer;
+begin
+ CallV('ORWDXR ORCPLX',[AnParentID,CurrAct]);
+ if RPCBrokerV.Results.Count = 0 then Exit;
+ With RPCBrokerV do
+ begin
+   for i := 0 to Results.Count - 1 do
+   begin
+     if (Piece(Results[i],'^',1) <> 'E') and (Length(Results[i])>0) then
+       ChildList.Add(Results[i]);
+   end;
+ end;
+end;
+
+procedure LESValidationForChangedLabOrder(var RejectedReason: TStringList; AnOrderInfo: string);
+begin
+  CallV('ORWDPS5 LESAPI',[AnOrderInfo]);
+  if RPCBrokerV.Results.Count > 0 then
+    FastAssign(RPCBrokerV.Results, RejectedReason);
+end;
+
+procedure ChangeEvent(AnOrderList: TStringList; APtEvtId: string);
+begin
+  SCallV('OREVNTX1 CHGEVT', [APtEvtId,AnOrderList]);
+end;
+
+procedure DeletePtEvent(APtEvtID: string);
+begin
+  SCallV('OREVNTX1 DELPTEVT',[APtEvtID]);
+end;
+
+function IsRenewableComplexOrder(AnParentID: string): boolean; //PSI-COMPLEX
+var
+  rst: integer;
+begin
+  Result := False;
+  rst := StrToIntDef(SCallV('ORWDXR CANRN',[AnParentID]),0);
+  if rst>0 then
+    Result := True;
+end;
+
+function IsComplexOrder(AnOrderID: string): boolean; //PSI-COMPLEX
+var
+  rst: integer;
+begin
+  Result := False;
+  rst := StrToIntDef(SCallV('ORWDXR ISCPLX',[AnOrderID]),0);
+  if rst > 0 then
+    Result := True;
+end;
+
+procedure ValidateComplexOrderAct(AnOrderID: string; var ErrMsg: string); //PSI-COMPLEX
+begin
+  ErrMsg := SCallV('ORWDXA OFCPLX',[AnOrderID]);
+end;
+
+function GetDlgData(ADlgID: string): string;
+begin
+  Result := SCallV('OREVNTX1 GETDLG',[ADlgID]);
+end;
+
+function PtEvtEmpty(APtEvtID: string): Boolean;
+begin
+  Result := False;
+  if StrToIntDef(SCallV('OREVNTX1 EMPTY',[APtEvtID]),0)>0 then
+    Result := True;
+end;
+
+
+function TextForOrder(const ID: string): string;
+begin
+  CallV('ORWORR GETTXT', [ID]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+function GetConsultOrderNumber(ConsultIEN: string): string;
+begin
+  Result := sCallv('ORQQCN GET ORDER NUMBER',[ConsultIEN]);
+end;
+
+function GetOrderByIFN(const ID: string): TOrder;
+var
+  x, y, z: string;
+  AnOrder: TOrder;
+begin
+  AnOrder := TOrder.Create;
+  CallV('ORWORR GETBYIFN', [ID]);
+  with RPCBrokerV do while Results.Count > 0 do
+  begin
+    x := Results[0];
+    Results.Delete(0);
+    if CharAt(x, 1) <> '~' then Continue;        // only happens if out of synch
+    y := '';
+    while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+    begin
+      y := y + Copy(Results[0], 2, Length(Results[0])) + CRLF;
+      Results.Delete(0);
+    end;
+    if Length(y) > 0 then y := Copy(y, 1, Length(y) - 2);  // take off last CRLF
+    z := '';
+    if (Results.Count > 0) and (Results[0] = '|') then
+      begin
+        Results.Delete(0);
+        while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') and (CharAt(Results[0], 1) <> '|') do
+          begin
+            z := z + Copy(Results[0], 2, Length(Results[0])); //PKI Change
+            Results.Delete(0);
+          end;
+      end;
+    SetOrderFields(AnOrder, x, y, z);
+  end;
+  Result := AnOrder;
+end;
+
+function GetPackageByOrderID(const OrderID: string): string;
+begin
+  Result := SCallV('ORWDXR GETPKG',[OrderID]);
+end;
+
+function AnyOrdersRequireSignature(OrderList: TStringList): Boolean;
+begin
+  Result := sCallV('ORWD1 SIG4ANY', [OrderList]) = '1';
+end;
+
+function OrderRequiresSignature(const ID: string): Boolean;
+begin
+  Result := sCallV('ORWD1 SIG4ONE', [ID]) = '1';
+end;
+
+function OrderRequiresDigitalSignature(const ID: string): Boolean;
+begin
+  Result := sCallV('ORWOR1 CHKDIG', [ID]) = '1';
+end;
+
+function GetDrugSchedule(const ID: string): string;
+begin
+  Result := sCallV('ORWOR1 GETDSCH', [ID]);
+end;
+
+function GetExternalText(const ID: string): string;
+var
+  x,y: string;
+begin
+  CallV('ORWOR1 GETDTEXT', [ID]);
+  y := '';
+  with RPCBrokerV do while Results.Count > 0 do
+    begin
+      x := Results[0];
+      Results.Delete(0);
+      y := y + x;
+    end;
+  Result := y;
+end;
+
+function SetExternalText(const ID: string; ADrugSch: string; AUser: Int64): string;
+var
+  x,y: string;
+begin
+  CallV('ORWOR1 SETDTEXT', [ID, ADrugSch, AUser]);
+  y := '';
+  with RPCBrokerV do while Results.Count > 0 do
+    begin
+      x := Results[0];
+      Results.Delete(0);
+      y := y + x;
+    end;
+  Result := y;
+end;
+
+function GetDigitalSignature(const ID: string): string;
+begin
+  CallV('ORWORR GETDSIG', [ID]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+function GetDEA(const ID: string): string;
+begin
+  CallV('ORWORR GETDEA', [ID]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+function GetPKISite: Boolean;
+begin
+  Result := sCallV('ORWOR PKISITE', [nil]) = '1';
+end;
+
+function GetPKIUse: Boolean;
+begin
+  Result := sCallV('ORWOR PKIUSE', [nil]) = '1';
+end;
+
+function DoesOIPIInSigForQO(AnQOID: integer): integer;
+begin
+  Result := StrToIntDef(SCallV('ORWDPS1 HASOIPI',[AnQOID]),0);
+end;
+
+function GetDispGroupForLES: string;
+begin
+  Result := SCallV('ORWDPS5 LESGRP',[nil]);  
+end;
+
+function GetOrderPtEvtID(AnOrderID: string): string;
+begin
+  Result := SCallV('OREVNTX1 ODPTEVID',[AnOrderID]);
+end;
+
+function VerbTelPolicyOrder(AnOrderID: string): boolean;
+begin
+  Result := SCallV('ORWDPS5 ISVTP',[AnOrderID]) = '1';
+end;
+
+function ForIVandUD(AnOrderID: string): boolean;
+begin
+  Result := SCallV('ORWDPS4 ISUDIV',[AnOrderID]) = '1';
+end;
+
+function GetEventIFN(const AEvntID: string): string;
+begin
+  Result := sCallV('OREVNTX1 EVT',[AEvntID]);
+end;
+
+function GetEventName(const AEvntID: string): string;
+begin
+  Result := sCallV('OREVNTX1 NAME',[AEvntID]);
+end;
+
+function GetEventLoc(const APtEvntID: string): string;
+begin
+  Result := SCallV('OREVNTX1 LOC', [APtEvntID]);
+end;
+
+function GetEventLoc1(const AnEvntID: string): string;
+begin
+  Result := SCallV('OREVNTX1 LOC1', [AnEvntID]);
+end;
+
+function GetEventDiv(const APtEvntID: string): string;
+begin
+  Result := SCallV('OREVNTX1 DIV',[APtEvntID]);
+end;
+
+function GetEventDiv1(const AnEvntID: string): string;
+begin
+  Result := SCallV('OREVNTX1 DIV1',[AnEvntID]);
+end;
+
+function GetCurrentSpec(const APtIFN: string): string;
+begin
+  Result := SCallV('OREVNTX1 CURSPE', [APtIFN]);
+end;
+
+function GetDefaultEvt(const AProviderIFN: string): string;
+begin
+  Result := SCallV('OREVNTX1 DFLTEVT',[AProviderIFN]);
+end;
+
+procedure DeleteDefaultEvt;
+begin
+  SCallV('OREVNTX1 DELDFLT',[User.DUZ]);
+end;
+
+function isExistedEvent(const APtDFN: string; const AEvtID: string; var APtEvtID: string): Boolean;
+begin
+  Result := False;
+  APtEvtID := SCallV('OREVNTX1 EXISTS', [APtDFN,AEvtID]);
+  if StrToIntDef(APtEvtID,0) > 0 then
+   Result := True;
+end;
+
+function TypeOfExistedEvent(APtDFN: string; AEvtID: Integer): Integer;
+begin
+  Result := StrToIntDef(SCallV('OREVNTX1 TYPEXT', [APtDFN,AEvtID]),0);
+end;
+
+function isMatchedEvent(const APtDFN: string; const AEvtID: string; var ATs:string): Boolean;
+var
+  rst: string;
+begin
+  Result := False;
+  rst := SCallV('OREVNTX1 MATCH',[APtDFN,AEvtID]);
+  if StrToIntDef(Piece(rst,'^',1),0)>0 then
+  begin
+    ATs := Piece(rst,'^',2);
+    Result := True;
+  end;
+end;
+
+function isDCedOrder(const AnOrderID: string): Boolean;
+var
+  rst: string;
+begin
+  Result := False;
+  rst := SCAllV('OREVNTX1 ISDCOD',[AnOrderID]);
+  if STrToIntDef(rst,0)>0 then
+    Result := True;
+end;
+
+function isOnholdMedOrder(AnOrderID: string): Boolean;
+var
+  rst: string;
+begin
+  Result := False;
+  rst := SCAllV('OREVNTX1 ISHDORD',[AnOrderID]);
+  if StrToIntDef(rst,0)>0 then
+    Result := True;
+end;
+
+function SetDefaultEvent(var AErrMsg: string; EvtID: string): Boolean;
+begin
+  AErrMsg := SCallV('OREVNTX1 SETDFLT',[EvtID]);
+  Result := True;
+end;
+
+function GetEventPromptID: integer;
+var
+  evtPrompt: string;
+begin
+  evtPrompt := SCallV('OREVNTX1 PRMPTID',[nil]);
+  Result := StrToIntDef(evtPrompt,0);
+end;
+
+function GetDefaultTSForEvt(AnEvtID: integer): string;
+begin
+  Result := SCallV('OREVNTX1 DEFLTS',[AnEvtID]);
+end;
+
+function GetPromptIDs: string;
+begin
+  Result := SCallV('OREVNTX1 PROMPT IDS',[nil]);
+end;
+
+function GetEventDefaultDlg(AEvtID: integer): string;
+begin
+  Result := SCallV('OREVNTX1 DFLTDLG',[AEvtID]);
+end;
+
+function CanManualRelease: boolean;
+var
+  rst: integer;
+begin
+  Result := False;
+  rst := StrToIntDef(SCallV('OREVNTX1 AUTHMREL',[nil]),0);
+  if rst > 0 then
+    Result := True;
+end;
+
+function TheParentPtEvt(APtEvt: string): string;
+begin
+  Result := SCallV('OREVNTX1 HAVEPRT',[APtEvt]);
+end;
+
+function IsCompletedPtEvt(APtEvtID: integer): boolean;
+var
+  rst : integer;
+begin
+  Result := False;
+  rst := StrToIntDef(SCallV('OREVNTX1 COMP',[APtEvtID]),0);
+  if rst > 0 then
+    Result := True;
+end;
+
+function IsPassEvt(APtEvtID: integer; APtEvtType: char): boolean;
+var
+  rst: integer;
+begin
+  Result := False;
+  rst := StrToIntDef(SCallV('OREVNTX1 ISPASS',[APtEvtID, APtEvtType]),0);
+  if rst = 1 then
+    Result := True;
+end;
+
+function IsPassEvt1(AnEvtID: integer; AnEvtType: char): boolean;
+var
+  rst: integer;
+begin
+  Result := False;
+  rst := StrToIntDef(SCallV('OREVNTX1 ISPASS1',[AnEvtID, AnEvtType]),0);
+  if rst = 1 then
+    Result := True;
+end;
+
+procedure TerminatePtEvt(APtEvtID: integer);
+begin
+  SCallV('OREVNTX1 DONE',[APtEvtID]);
+end;
+
+procedure SetPtEvtList(Dest: TStrings; APtDFN: string; var ATotal: Integer);
+begin
+  CallV('OREVNTX LIST',[APtDFN]);
+  if RPCBrokerV.Results.Count > 0 then
+  begin
+    ATotal := StrToIntDef(RPCBrokerV.Results[0],0);
+    if ATotal > 0 then
+    begin
+      MixedCaseList( RPCBrokerV.Results );
+      RPCBrokerV.Results.Delete(0);
+      FastAssign(RPCBrokerV.Results, Dest);
+    end;
+  end;
+end;
+
+procedure GetTSListForEvt(Dest: TStrings; AnEvtID:integer);
+begin
+  CallV('OREVNTX1 MULTS',[AnEvtID]);
+  if RPCBrokerV.Results.Count > 0 then
+  begin
+    SortByPiece(TStringList(RPCBrokerV.Results),'^',2);
+    FastAssign(RPCBrokerV.Results, Dest);
+  end;
+end;
+
+procedure GetChildEvent(var AChildList: TStringList; APtEvtID: string);
+begin
+//
+end;
+
+function DeleteEmptyEvt(APtEvntID: string; var APtEvntName: string; Ask: boolean): boolean;
+const
+  TX_EVTDEL1 = 'There are no orders tied to ';
+  TX_EVTDEL2 = ', Would you like to cancel it?';
+begin
+  Result := false;
+  if APtEvntID = '0' then
+  begin
+    Result := True;
+    Exit;
+  end;
+  if PtEvtEmpty(APtEvntID) then
+  begin
+    if Length(APtEvntName)=0 then
+      APtEvntName := GetEventName(APtEvntID);
+    if Ask then
+    begin
+      if InfoBox(TX_EVTDEL1 + APtEvntName + TX_EVTDEL2, 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+      begin
+        DeletePtEvent(APtEvntID);
+        Result := True;
+      end;
+    end;
+    if not Ask then
+    begin
+      DeletePtEvent(APtEvntID);
+      Result := True;
+    end;
+
+  end;
+end;
+
+function CompleteEvt(APtEvntID: string; APtEvntName: string; Ask: boolean): boolean;
+const
+  TX_EVTFIN1 = 'All of the orders tied to ';
+  TX_EVTFIN2 = ' have been released to a service, ' + #13 + 'Would you like to terminate this event?';
+var
+  ThePtEvtName: string;
+begin
+  Result := false;
+  if APtEvntID = '0' then
+  begin
+    Result := True;
+    Exit;
+  end;
+  if PtEvtEmpty(APtEvntID) then
+  begin
+    if Length(APtEvntName)=0 then
+      ThePtEvtName := GetEventName(APtEvntID)
+    else
+      ThePtEvtName := APtEvntName;
+    if Ask then
+    begin
+      if InfoBox(TX_EVTFIN1 + ThePtEvtName + TX_EVTFIN2, 'Confirmation', MB_OKCANCEL or MB_ICONQUESTION) = IDOK then
+      begin
+        SCallV('OREVNTX1 DONE',[APtEvntID]);
+        Result := True;
+      end;
+    end else
+    begin
+      SCallV('OREVNTX1 DONE',[APtEvntID]);
+      Result := True;
+    end;
+  end;
+end;
+
+{ Order Checking }
+
+function FillerIDForDialog(IEN: Integer): string;
+begin
+  Result := sCallV('ORWDXC FILLID', [IEN]);
+end;
+
+function OrderChecksEnabled: Boolean;
+begin
+  if uOrderChecksOn = #0 then uOrderChecksOn := CharAt(sCallV('ORWDXC ON', [nil]), 1);
+  Result := uOrderChecksOn = 'E';
+end;
+
+function OrderChecksOnDisplay(const FillerID: string): string;
+begin
+  CallV('ORWDXC DISPLAY', [Patient.DFN, FillerID]);
+  with RPCBrokerV.Results do SetString(Result, GetText, Length(Text));
+end;
+
+procedure OrderChecksOnAccept(ListOfChecks: TStringList; const FillerID, StartDtTm: string;
+  OIList: TStringList; DupORIFN: string);
+begin
+  // don't pass OIList if no items, since broker pauses 5 seconds per order
+  if OIList.Count > 0
+    then CallV('ORWDXC ACCEPT', [Patient.DFN, FillerID, StartDtTm, Encounter.Location, OIList, DupORIFN])
+    else CallV('ORWDXC ACCEPT', [Patient.DFN, FillerID, StartDtTm, Encounter.Location]);
+  FastAssign(RPCBrokerV.Results, ListOfChecks);
+end;
+
+procedure OrderChecksOnDelay(ListOfChecks: TStringList; const FillerID, StartDtTm: string;
+  OIList: TStringList);
+begin
+  // don't pass OIList if no items, since broker pauses 5 seconds per order
+  if OIList.Count > 0
+    then CallV('ORWDXC DELAY', [Patient.DFN, FillerID, StartDtTm, Encounter.Location, OIList])
+    else CallV('ORWDXC DELAY', [Patient.DFN, FillerID, StartDtTm, Encounter.Location]);
+  FastAssign(RPCBrokerV.Results, ListOfChecks);
+end;
+
+procedure OrderChecksForSession(ListOfChecks, OrderList: TStringList);
+begin
+  CallV('ORWDXC SESSION', [Patient.DFN, OrderList]);
+  FastAssign(RPCBrokerV.Results, ListOfChecks);
+end;
+
+procedure SaveOrderChecksForSession(const AReason: string; ListOfChecks: TStringList);
+begin
+  CallV('ORWDXC SAVECHK', [Patient.DFN, AReason, ListOfChecks]);
+  { no result used currently }
+end;
+
+function DeleteCheckedOrder(const OrderID: string): Boolean;
+begin
+  Result := sCallV('ORWDXC DELORD', [OrderID]) = '1';
+end;
+
+function DataForOrderCheck(const OrderID: string): string;
+begin
+  Result := sCallV('ORWDXR01 OXDATA',[OrderID]);
+end;
+
+(*
+  TEMPORARILY COMMENTED OUT WHILE TESTING
+function GetPromptandDeviceParameters(Location: integer; OrderList: TStringList; Nature: string): TPrintParams;
+var
+  TempParams: TPrintParams;
+  x: string;
+begin
+  tempParams.OrdersToPrint := TStringList.Create;
+  try
+    CallV('ORWD1 PARAM', [Location, Nature, OrderList]);
+    x := RPCBrokerV.Results[0];
+    with TempParams do
+      begin
+        PromptForChartCopy    := CharAt(Piece(x, U, 1),1);
+        if Piece(x, U, 5) <> '' then
+          ChartCopyDevice     := Piece(Piece(x, U, 5),';',1) + '^' + Piece(Piece(x, U, 5),';',2);
+        PromptForLabels       := CharAt(Piece(x, U, 2),1);
+        if Piece(x, U, 6) <> '' then
+          LabelDevice         := Piece(Piece(x, U, 6),';',1) + '^' + Piece(Piece(x, U, 6),';',2);
+        PromptForRequisitions := CharAt(Piece(x, U, 3),1);
+        if Piece(x, U, 7) <> '' then
+          RequisitionDevice   := Piece(Piece(x, U, 7),';',1) + '^' + Piece(Piece(x, U, 7),';',2);
+        PromptForWorkCopy     := CharAt(Piece(x, U, 4),1);
+        if Piece(x, U, 8) <> '' then
+          WorkCopyDevice      := Piece(Piece(x, U, 8),';',1) + '^' + Piece(Piece(x, U, 8),';',2);
+        AnyPrompts            := ((PromptForChartCopy    in ['1','2']) or
+                                  (PromptForLabels       in ['1','2']) or
+                                  (PromptForRequisitions in ['1','2']) or
+                                  (PromptForWorkCopy     in ['1','2']));
+        RPCBrokerV.Results.Delete(0);
+        FastAssign(RPCBrokerV.Results, OrdersToPrint);
+      end;
+    Result := TempParams;
+  finally
+    tempParams.OrdersToPrint.Free;
+  end;
+end;
+*)
+
+procedure OrderPrintDeviceInfo(OrderList: TStringList; var PrintParams: TPrintParams; Nature: Char; PrintLoc: Integer = 0);
+var
+  x: string;
+begin
+  if Nature <> #0 then
+    begin
+       if PrintLoc > 0 then CallV('ORWD2 DEVINFO', [PrintLoc, Nature, OrderList])
+       else CallV('ORWD2 DEVINFO', [Encounter.Location, Nature, OrderList]);
+    end
+  else
+    begin
+      if PrintLoc > 0 then CallV('ORWD2 MANUAL', [PrintLoc, OrderList])
+      else CallV('ORWD2 MANUAL', [Encounter.Location, OrderList]);
+    end;
+  x := RPCBrokerV.Results[0];
+  FillChar(PrintParams, SizeOf(PrintParams), #0);
+  with PrintParams do
+  begin
+    PromptForChartCopy    := CharAt(Piece(x, U, 1),1);
+    if Piece(x, U, 5) <> '' then
+      ChartCopyDevice     := Piece(Piece(x, U, 5),';',1) + '^' + Piece(Piece(x, U, 5),';',2);
+    PromptForLabels       := CharAt(Piece(x, U, 2),1);
+    if Piece(x, U, 6) <> '' then
+      LabelDevice         := Piece(Piece(x, U, 6),';',1) + '^' + Piece(Piece(x, U, 6),';',2);
+    PromptForRequisitions := CharAt(Piece(x, U, 3),1);
+    if Piece(x, U, 7) <> '' then
+      RequisitionDevice   := Piece(Piece(x, U, 7),';',1) + '^' + Piece(Piece(x, U, 7),';',2);
+    PromptForWorkCopy     := CharAt(Piece(x, U, 4),1);
+    if Piece(x, U, 8) <> '' then
+    WorkCopyDevice      := Piece(Piece(x, U, 8),';',1) + '^' + Piece(Piece(x, U, 8),';',2);
+    AnyPrompts            := ((PromptForChartCopy    in ['1','2']) or
+                              (PromptForLabels       in ['1','2']) or
+                              (PromptForRequisitions in ['1','2']) or
+                              (PromptForWorkCopy     in ['1','2']));
+  end;
+  if Nature <> #0 then
+    begin
+      RPCBrokerV.Results.Delete(0);
+      OrderList.Clear;
+      FastAssign(RPCBrokerV.Results, OrderList);
+    end;
+end;
+
+procedure SaveEvtForOrder(APtDFN: string; AEvt: integer; AnOrderID: string);
+var
+  TheEventID: string;
+begin
+  TheEventID :=  SCallV('OREVNTX1 PUTEVNT',[APtDFN,IntToStr(AEvt),AnOrderID]);
+end;
+
+function EventExist(APtDFN:string; AEvt: integer): integer;
+var
+  AOutCome: string;
+begin
+  AOutCome := SCallV('OREVNTX1 EXISTS', [APtDFN,IntToStr(AEvt)]);
+  if AOutCome = '' then
+    Result := 0
+  else
+    Result := StrToInt(AOutCome);
+end;
+
+function UseNewMedDialogs: Boolean;
+begin
+  Result := sCallV('ORWDPS1 CHK94', [nil]) = '1';
+end;
+
+{ Copay }
+procedure GetCoPay4Orders;
+begin
+  RPCBrokerV.RemoteProcedure := 'ORWDPS4 CPLST';
+  RPCBrokerV.Param[0].PType := literal;
+  RPCBrokerV.Param[0].Value := Patient.DFN;
+  CallBroker;
+end;
+
+procedure SaveCoPayStatus(AList: TStrings);
+var
+  i: integer;
+
+begin
+  if AList.Count > 0 then
+  begin
+    RPCBrokerV.ClearParameters := True;
+    RPCBrokerV.RemoteProcedure := 'ORWDPS4 CPINFO';
+    RPCBrokerV.Param[0].PType := list;
+    for i := 0 to AList.Count-1 do
+      RPCBrokerV.Param[0].Mult[IntToStr(i+1)] := AList[i];
+    CallBroker;
+  end;
+end;
+
+
+
+function IsValidIMOLoc(LocID: integer; PatientID: string): boolean;   //IMO
+var
+  rst: string;
+begin
+  rst := SCallV('ORIMO IMOLOC',[LocID, PatientID]);
+  Result := StrToIntDef(rst,-1) > -1;
+end;
+
+function IsIMOOrder(OrderID: string): boolean;          //IMO
+begin
+  Result := SCallV('ORIMO IMOOD',[OrderId])='1';
+end;
+
+function IsInptQO(DlgID: integer): boolean;
+begin
+  Result := SCallV('ORWDXM3 ISUDQO', [DlgID]) = '1';
+end;
+
+function IsIVQO(DlgID: integer): boolean;
+begin
+  Result := SCallV('ORIMO ISIVQO', [DlgID]) = '1';
+end;
+
+function IsClinicLoc(ALoc: integer): boolean;
+begin
+  Result := SCallV('ORIMO ISCLOC', [ALoc]) = '1';
+end;
+
+function IsValidSchedule(AnOrderID: string): boolean; //nss
+begin
+  result := SCallV('ORWNSS VALSCH', [AnOrderID]) = '1';
+end;
+
+function IsValidQOSch(QOID: string): string;  //nss
+begin
+  Result := SCallV('ORWNSS QOSCH',[QOID]);
+end;
+
+function IsValidSchStr(ASchStr: string): boolean;
+begin
+  Result := SCallV('ORWNSS CHKSCH',[ASchStr]) = '1';
+end;
+
+{ TParentEvent }
+
+procedure TParentEvent.Assign(AnEvtID: string);
+var
+  evtInfo: string;
+begin
+// ORY = EVTTYPE_U_EVT_U_EVTNAME_U_EVTDISP_U_EVTDLG
+  evtInfo := EventInfo1(AnEvtID);
+  ParentIFN := StrToInt(AnEvtID);
+  if Length(Piece(evtInfo,'^',4)) < 1 then
+    ParentName := Piece(evtInfo,'^',3)
+  else
+    ParentName := Piece(evtInfo,'^',4);
+  ParentType := CharAt(Piece(evtInfo,'^',1),1);
+  ParentDlg := Piece(evtInfo,'^',5);
+end;
+
+constructor TParentEvent.Create;
+begin
+  ParentIFN  := 0;
+  ParentName := '';
+  ParentType := #0;
+  ParentDlg  := '0';
+end;
+
+initialization
+  uDGroupAll := 0;
+  uOrderChecksOn := #0;
+
+finalization
+  if uDGroupMap <> nil then uDGroupMap.Free;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/uODBase.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/uODBase.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/uODBase.pas	(revision 1676)
@@ -0,0 +1,297 @@
+unit uODBase;
+
+interface
+
+uses
+  Classes, ORFn, uConst;
+
+{ Order Checking }
+function AddFillerAppID(const AnID: string): Boolean;
+procedure ClearFillerAppList;
+
+{ Ordering Environment }
+procedure SetOrderFormIDOnCreate(AFormID: Integer);
+function OrderFormIDOnCreate: Integer;
+procedure SetOrderEventTypeOnCreate(AType: Char);
+function OrderEventTypeOnCreate: Char;
+procedure SetOrderEventIDOnCreate(AnEvtID: integer);
+function OrderEventIDOnCreate: integer;
+procedure SetOrderEventNameOnCreate(AnEvtNm: string);
+function OrderEventNameOnCreate: string;
+function GetKeyVars: string;
+procedure PopKeyVars(NumLevels: Integer = 1);
+procedure PushKeyVars(const NewVals: string);
+procedure ExpandOrderObjects(var Txt: string; var ContainsObjects: boolean; msg: string = '');
+procedure CheckForAutoDCDietOrders(EvtID: integer; DispGrp: integer; CurrentText: string;
+            var CancelText: string; Sender: TObject);
+
+implementation
+
+uses
+  dShared, Windows, rTemplates, SysUtils, StdCtrls, fOrders, rOrders;
+
+var
+  uOrderEventType: Char;
+  uOrderEventID: Integer;
+  uOrderEventName: string;
+  uOrderFormID: Integer;
+  uFillerAppID: TStringList;
+  uKeyVarList:  TStringList;
+
+{ Order Checking }
+
+function AddFillerAppID(const AnID: string): Boolean;
+begin
+  Result := False;
+  if uFillerAppID.IndexOf(AnID) < 0 then
+  begin
+    Result := True;
+    uFillerAppID.Add(AnID);
+  end;
+end;
+
+procedure ClearFillerAppList;
+begin
+  uFillerAppID.Clear;
+end;
+
+{ Ordering Environment }
+
+procedure SetOrderFormIDOnCreate(AFormID: Integer);
+begin
+  uOrderFormID := AFormID;
+end;
+
+function OrderFormIDOnCreate: Integer;
+begin
+  Result := uOrderFormID;
+end;
+
+procedure SetOrderEventTypeOnCreate(AType: Char);
+begin
+  uOrderEventType := AType;
+end;
+
+function OrderEventTypeOnCreate: Char;
+begin
+  Result := uOrderEventType;
+end;
+
+procedure SetOrderEventIDOnCreate(AnEvtID: Integer);
+begin
+  uOrderEventID := AnEvtID;
+end;
+
+procedure SetOrderEventNameOnCreate(AnEvtNm: string);
+begin
+  uOrderEventName := AnEvtNm;
+end;
+
+function OrderEventNameOnCreate: string;
+begin
+  Result := uOrderEventName;
+end;
+
+function OrderEventIDOnCreate: integer;
+begin
+  Result := uOrderEventID;
+end;
+
+function GetKeyVars: string;
+begin
+  Result := '';
+  with uKeyVarList do if Count > 0 then Result := Strings[Count - 1];
+end;
+
+procedure PopKeyVars(NumLevels: Integer = 1);
+begin
+  with uKeyVarList do while (NumLevels > 0) and (Count > 0) do
+  begin
+    Delete(Count - 1);
+    Dec(NumLevels);
+  end;
+end;
+
+procedure PushKeyVars(const NewVals: string);
+var
+  i: Integer;
+  x: string;
+begin
+  if uKeyVarList.Count > 0 then x := uKeyVarList[uKeyVarList.Count - 1] else x := '';
+  for i := 1 to MAX_KEYVARS do
+    if Piece(NewVals, U, i) <> '' then SetPiece(x, U, i, Piece(NewVals, U, i));
+  uKeyVarList.Add(x);
+end;
+
+procedure ExpandOrderObjects(var Txt: string; var ContainsObjects: boolean; msg: string = '');
+var
+  ObjList: TStringList;
+  Err: TStringList;
+  i, j, k, oLen: integer;
+  obj, ObjTxt: string;
+const
+  CRDelim = #13;
+  TC_BOILER_ERR  = 'Order Boilerplate Object Error';
+  TX_BOILER_ERR  = 'Contact IRM and inform them about this error.' + CRLF +
+                   'Make sure you give them the name of the quick' + CRLF +
+                   'order that you are processing.' ;
+begin
+  ObjList := TStringList.Create;
+  try
+    Err := nil;
+    if(not dmodShared.BoilerplateOK(Txt, CRDelim, ObjList, Err)) and (assigned(Err)) then
+    begin
+      try
+        Err.Add(CRLF + TX_BOILER_ERR);
+        InfoBox(Err.Text, TC_BOILER_ERR, MB_OK + MB_ICONERROR);
+      finally
+        Err.Free;
+      end;
+    end;
+    if(ObjList.Count > 0) then
+    begin
+      ContainsObjects := True;
+      GetTemplateText(ObjList);
+      i := 0;
+      while (i < ObjList.Count) do
+      begin
+        if(pos(ObjMarker, ObjList[i]) = 1) then
+        begin
+          obj := copy(ObjList[i], ObjMarkerLen+1, MaxInt);
+          if(obj = '') then break;
+          j := i + 1;
+          while (j < ObjList.Count) and (pos(ObjMarker, ObjList[j]) = 0) do
+            inc(j);
+          if((j - i) > 2) then
+          begin
+            ObjTxt := '';
+            for k := i+1 to j-1 do
+              ObjTxt := ObjTxt + #13 + ObjList[k];
+          end
+          else
+            ObjTxt := ObjList[i+1];
+          i := j;
+          obj := '|' + obj + '|';
+          oLen := length(obj);
+          repeat
+            j := pos(obj, Txt);
+            if(j > 0) then
+            begin
+              delete(Txt, j, OLen);
+              insert(ObjTxt, Txt, j);
+            end;
+          until(j = 0);
+        end
+        else
+          inc(i);
+      end
+    end;
+  finally
+    ObjList.Free;
+  end;
+end;
+
+// Check for diet orders that will be auto-DCd on release because of start/stop overlaps.
+// Moved here for visibility because it also needs to be checked on an auto-accept order.
+procedure CheckForAutoDCDietOrders(EvtID: integer; DispGrp: integer; CurrentText: string;
+            var CancelText: string; Sender: TObject);
+const
+  TX_CX_CUR = 'A new diet order will CANCEL and REPLACE this current diet now unless' + CRLF +
+              'you specify a start date for when the new diet should replace the current' + CRLF +
+              'diet:' + CRLF + CRLF;
+  TX_CX_FUT = 'A new diet order with no expiration date will CANCEL and REPLACE these diets:' + CRLF + CRLF;
+  TX_CX_DELAYED1 =  'There are other delayed diet orders for this release event:';
+  TX_CX_DELAYED2 =  'This new diet order may cancel and replace those other diets' + CRLF +
+                    'IMMEDIATELY ON RELEASE, unless you either:' + CRLF + CRLF +
+
+                    '1. Specify an expiration date/time for this order that will' + CRLF +
+                    '   be prior to the start date/time of those other orders; or' + CRLF + CRLF +
+
+                    '2. Specify a later start date/time for this order for when you' + CRLF +
+                    '   would like it to cancel and replace those other orders.';
+
+var
+  i: integer;
+  AStringList: TStringList;
+  AList: TList;
+  x, PtEvtIFN, PtEvtName: string;
+  //AResponse: TResponse;
+begin
+  if EvtID = 0 then   // check current and future released diets
+  begin
+    x := CurrentText;
+    if Piece(x, #13, 1) <> 'Current Diet:  ' then
+    begin
+      AStringList := TStringList.Create;
+      try
+        AStringList.Text := x;
+        CancelText := TX_CX_CUR + #9 + Piece(AStringList[0], ':', 1) + ':' + CRLF + CRLF
+                 + #9 + Copy(AStringList[0], 16, 99) + CRLF;
+        if AStringList.Count > 1 then
+        begin
+          CancelText := CancelText + CRLF + CRLF +
+                   TX_CX_FUT + #9 + Piece(AStringList[1], ':', 1) + ':' + CRLF + CRLF
+                   + #9 + Copy(AStringList[1], 22, 99) + CRLF;
+          if AStringList.Count > 2 then
+          for i := 2 to AStringList.Count - 1 do
+            CancelText := CancelText + #9 + TrimLeft(AStringList[i]) + CRLF;
+        end;
+      finally
+        AStringList.Free;
+      end;
+    end;
+  end 
+  else if Sender is TButton then     // delayed orders code here - on accept only
+  begin
+    //AResponse := Responses.FindResponseByName('STOP', 1);
+    //if (AResponse <> nil) and (AResponse.EValue <> '') then exit;
+    AList := TList.Create;
+    try
+      PtEvtIFN := IntToStr(frmOrders.TheCurrentView.EventDelay.PtEventIFN);
+      PtEvtName := frmOrders.TheCurrentView.EventDelay.EventName;
+      LoadOrdersAbbr(AList, frmOrders.TheCurrentView, PtEvtIFN);
+      for i := AList.Count - 1 downto 0 do
+      begin
+        if TOrder(Alist.Items[i]).DGroup <> DispGrp then
+        begin
+          TOrder(AList.Items[i]).Free;
+          AList.Delete(i);
+        end;
+      end;
+      if AList.Count > 0 then
+      begin
+        x := '';
+        RetrieveOrderFields(AList, 0, 0);
+        CancelText := TX_CX_DELAYED1 + CRLF + CRLF + 'Release event: ' + PtEvtName; 
+        for i := 0 to AList.Count - 1 do
+          with TOrder(AList.Items[i]) do
+          begin
+            x := x + #9 + Text + CRLF;
+(*            if StartTime <> '' then
+              x := #9 + x + 'Start:   ' + StartTime + CRLF
+            else
+              x := #9 + x + 'Ordered: ' + FormatFMDateTime('mmm dd,yyyy@hh:nn', OrderTime) + CRLF;*)
+          end;
+        CancelText := CancelText + CRLF + CRLF + x;
+        CancelText := CancelText + CRLF + CRLF + TX_CX_DELAYED2;
+      end;
+    finally
+      with AList do for i := 0 to Count - 1 do TOrder(Items[i]).Free;
+      AList.Free;
+    end;
+  end;
+end;
+
+
+initialization
+  uOrderEventType := #0;
+  uOrderFormID := 0;
+  uOrderEventName := '';
+  uFillerAppID := TStringList.Create;
+  uKeyVarList  := TStringList.Create;
+
+finalization
+  uFillerAppID.Free;
+  uKeyVarList.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/uOrders.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/uOrders.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Orders/uOrders.pas	(revision 1676)
@@ -0,0 +1,2024 @@
+unit uOrders;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Controls, Forms, uConst, rOrders, ORFn,
+  Dialogs, ORCtrls, stdCtrls, strUtils, fODBase, fODMedOIFA;
+
+type
+  EOrderDlgFail = class(Exception);
+
+  //FQOAltOI = record
+  //OI: integer;
+  //end;
+
+{ Ordering Environment }
+function AuthorizedUser: Boolean;
+function AuthorizedToVerify: Boolean;
+function EncounterPresent: Boolean;
+function EncounterPresentEDO: Boolean;
+function LockedForOrdering: Boolean;
+function IsValidActionOnComplexOrder(AnOrderID, AnAction: string;
+    AListBox: TListBox; var CheckedList: TStringList; var ErrMsg: string; var ParentOrderID: string): boolean;  //PSI-COMPLEX
+procedure UnlockIfAble;
+function OrderCanBeLocked(OrderID: string): Boolean;
+procedure UnlockOrderIfAble(OrderID: string);
+procedure AddSelectedToChanges(AList: TList);
+procedure ResetDialogProperties(const AnID: string; AnEvent: TOrderDelayEvent; var ResolvedDialog: TOrderDialogResolved);
+function IsInvalidActionWarning(const AnOrderText,AnOrderID: String): boolean;
+procedure InitialOrderVariables;
+
+{ Write Orders }
+function ActivateAction(const AnID: string; AnOwner: TComponent; ARefNum: Integer): Boolean;
+function ActivateOrderDialog(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer; ANeedVerify: boolean = True): Boolean;
+function RetrieveOrderText(AnOrderID: string): string;
+function ActivateOrderHTML(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer): Boolean;
+function ActivateOrderMenu(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer): Boolean;
+function ActivateOrderSet(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer): Boolean;
+function ActivateOrderList(AList: TStringList; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer; const KeyVarStr, ACaption: string): Boolean;
+function ActiveOrdering: Boolean;
+function CloseOrdering: Boolean;
+function ReadyForNewOrder(AnEvent: TOrderDelayEvent): Boolean;
+function ReadyForNewOrder1(AnEvent: TOrderDelayEvent): Boolean;
+function ChangeOrdersEvt(AnOrderID: string; AnEvent: TOrderDelayEvent): boolean;
+function CopyOrders(AList: TStringList; AnEvent: TOrderDelayEvent; var DoesEventOccur: boolean; ANeedVerify: boolean = True): boolean;
+function TransferOrders(AList: TStringList; AnEvent: TOrderDelayEvent; var DoesEventOccur: boolean; ANeedVerify: boolean = True): boolean;
+procedure SetConfirmEventDelay;
+procedure ChangeOrders(AList: TStringList; AnEvent: TOrderDelayEvent);
+procedure DestroyingOrderAction;
+procedure DestroyingOrderDialog;
+procedure DestroyingOrderHTML;
+procedure DestroyingOrderMenu;
+procedure DestroyingOrderSet;
+function OrderIsLocked(const AnOrderID, AnAction: string): Boolean;
+procedure PopLastMenu;
+procedure QuickOrderSave;
+procedure QuickOrderListEdit;
+function RefNumFor(AnOwner: TComponent): Integer;
+procedure PrintOrdersOnSignReleaseMult(OrderList, ClinicLst, WardLst: TStringList; Nature: Char; EncLoc, WardLoc: integer; EncLocName, WardLocName: string);
+procedure PrintOrdersOnSignRelease(OrderList: TStringList; Nature: Char; PrintLoc : Integer =0; PrintName: string = '');
+procedure SetFontSize( FontSize: integer);
+procedure NextMove(var NMRec: TNextMoveRec; LastIndex: Integer; NewIndex: Integer);
+//function GetQOAltOI: integer;
+
+{ Inpatient medication for Outpatient}
+function IsIMODialog(DlgID: integer): boolean;
+function AllowActionOnIMO(AnEvtTyp: char): boolean;
+function IMOActionValidation(AnId: string; var IsIMOOD: boolean; var x: string; AnEventType: char): boolean;
+
+
+var
+uAutoAc: Boolean;
+InptDisp : Integer;
+OutptDisp: Integer;
+MedsDisp : Integer;
+ClinDisp : Integer; //IMO
+NurDisp  : Integer;
+IVDisp   : Integer;
+CsltDisp : Integer;
+ProcDisp : Integer;
+ImgDisp  : Integer;
+DietDisp : Integer;
+NonVADisp: Integer;
+MedsInDlgIen  : Integer;
+MedsOutDlgIen : Integer;
+MedsNVADlgIen : Integer;
+MedsInDlgFormId  : Integer;
+MedsOutDlgFormId : Integer;
+MedsNVADlgFormID : Integer;
+MedsIVDlgIen: Integer;
+MedsIVDlgFormID: Integer;
+NSSchedule: boolean;
+OriginalMedsOutHeight: Integer;
+OriginalMedsInHeight: Integer;
+OriginalNonVAMedsHeight: Integer;
+PassDrugTstCall: boolean;
+
+implementation
+
+uses fODDiet, fODMisc, fODGen, fODMedIn, fODMedOut, fODText, fODConsult, fODProc, fODRad,
+     fODLab, fodBBank, fODMeds, fODMedIV, fODVitals, fODAuto, (*fODAllgy,*) fOMNavA, rCore, uCore, fFrame,
+     fEncnt, fEffectDate, fOMVerify, fOrderSaveQuick, fOMSet, rMisc, uODBase, rODMeds,
+     fLkUpLocation, fOrdersPrint, fOMAction, fARTAllgy, fOMHTML, fOrders, rODBase,
+     fODChild, fMeds, rMeds, rPCE, frptBox, fODMedNVA, fODChangeUnreleasedRenew, rODAllergy,
+     UBAGlobals, fClinicWardMeds, uTemplateFields, VAUtils;
+
+var
+  uPatientLocked: Boolean;
+  uKeepLock: Boolean;
+  uOrderAction: TfrmOMAction;
+  uOrderDialog: TfrmODBase;
+  uOrderHTML: TfrmOMHTML;
+  uOrderMenu: TfrmOMNavA;
+  uOrderSet: TfrmOMSet;
+  uLastConfirm: string;
+  uOrderSetTime: TFMDateTime;
+  uNewMedDialog: Integer;
+  //QOALTOI: FQOAltOI;
+
+const
+  TX_PROV_LOC   = 'A provider and location must be selected before entering orders.';
+  TC_PROV_LOC   = 'Incomplete Information';
+  TX_PROV_KEY   = 'The provider selected for this encounter must' + CRLF +
+                  'hold the PROVIDER key to enter orders.';
+  TC_PROV_KEY   = 'PROVIDER Key Required';
+  TX_NOKEY      = 'You do not have the keys required to take this action.';
+  TC_NOKEY      = 'Insufficient Authority';
+  TX_BADKEYS    = 'You have mutually exclusive order entry keys (ORES, ORELSE, or OREMAS).' +
+                   CRLF + 'This must be resolved before you can take actions on orders.';
+  TC_BADKEYS    = 'Multiple Keys';
+  TC_NO_LOCK    = 'Unable to Lock';
+  TC_DISABLED   = 'Item Disabled';
+  TX_DELAY      = 'Now writing orders for ';
+  TX_DELAY1     = CRLF + CRLF + '(To write orders for current release rather than delayed release,' + CRLF +
+                                 'close the next window and select Active Orders from the View Orders pane.)';
+  TC_DELAY      = 'Ordering Information';
+  TX_STOP_SET   = 'Do you want to stop entering the current set of orders?';
+  TC_STOP_SET   = 'Interupt order set';
+  TC_DLG_REJECT = 'Unable to Order';
+  TX_NOFORM     = 'This selection does not have an associated windows form.';
+  TC_NOFORM     = 'Missing Form ID';
+  TX_DLG_ERR    = 'Error in activating order dialog.';
+  TC_DLG_ERR    = 'Dialog Error';
+  TX_NO_SAVE_QO = 'An ordering dialog must be active to use this action.';
+  TC_NO_SAVE_QO = 'Save as Quick Order';
+  TX_NO_EDIT_QO = 'An ordering dialog must be active to use this action.';
+  TC_NO_EDIT_QO = 'Edit Common List';
+  TX_NO_QUICK   = 'This ordering dialog does not support quick orders.';
+  TC_NO_QUICK   = 'Save/Edit Quick Orders';
+  TX_CANT_SAVE_QO = 'This order contains TIU objects, which may result in patient-specific' + CRLF +
+                    'information being included in the order.  For this reason, it may not' + CRLF +
+                    'be saved as a personal quick order for later reuse.';
+  TX_NO_COPY    = CRLF + CRLF + '- cannot be copied.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_COPY    = 'Unable to Copy Order';
+  TX_NO_CHANGE  = CRLF + CRLF + '- cannot be changed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CHANGE  = 'Unable to Change Order';
+  TC_NO_XFER    = 'Unable to Transfer Order';
+  TC_NOLOCK     = 'Unable to Lock Order';
+  TX_ONHOLD     = 'The following order has been put on-hold, do you still want to continue?';
+  TX_COMPLEX    = 'You can not take this action on a complex medication.' + #13 + 'You must enter a new order.';
+  STEP_FORWARD  = 1;
+  STEP_BACK     = -1;
+  TX_NOINPT     = ': You cannot place inpatient medication orders from a clinic location for selected patient.';
+  TX_IMO_WARNING1 = 'You are ';
+  TX_IMO_WARNING2 = ' Clinic Orders. The New orders will be saved as Clinic Orders and MAY NOT be available in BCMA';
+
+
+function CreateOrderDialog(Sender: TComponent; FormID: integer; AnEvent: TOrderDelayEvent; ODEvtID: integer = 0): TfrmODBase;
+{ creates an order dialog based on the FormID and returns a pointer to it }
+type
+  TDialogClass = class of TfrmODBase;
+var
+  DialogClass: TDialogClass;
+begin
+  Result := nil;
+  // allows the FormCreate to check event under which dialog is created
+  if AnEvent.EventType in ['A','D','T','M','O'] then
+  begin
+   SetOrderEventTypeOnCreate(AnEvent.EventType);
+   SetOrderEventIDOnCreate(AnEvent.EventIFN);
+  end else
+  begin
+   SetOrderEventTypeOnCreate(#0);
+   SetOrderEventIDOnCreate(0);
+  end;
+  SetOrderFormIDOnCreate(FormID);  
+  // check to see if we should use the new med dialogs
+  if uNewMedDialog = 0 then
+  begin
+    if UseNewMedDialogs then uNewMedDialog := 1 else uNewMedDialog := -1;
+  end;
+  if (uNewMedDialog > 0) and ((FormID = OD_MEDOUTPT) or (FormID = OD_MEDINPT)) then
+      FormID := OD_MEDS;
+  // create the form for a given ordering dialog
+  case FormID of
+  OD_MEDIV:     DialogClass := TfrmODMedIV;
+  OD_MEDINPT:   DialogClass := TfrmODMedIn;
+  OD_MEDS:      DialogClass := TfrmODMeds;
+  OD_MEDOUTPT:  DialogClass := TfrmODMedOut;
+  OD_MEDNONVA:  DialogClass := TfrmODMedNVA;
+  OD_MISC:      DialogClass := TfrmODMisc;
+  OD_GENERIC:
+     begin
+      if ODEvtID>0 then
+       SetOrderEventIDOnCreate(ODEvtID);
+      DialogClass := TfrmODGen;
+     end;
+  OD_IMAGING:   DialogClass := TfrmODRad;
+  OD_DIET:      DialogClass := TfrmODDiet;
+  OD_LAB:       DialogClass := TfrmODLab;
+  OD_BB:        DialogClass := TfrmODBBank;
+  OD_CONSULT:   DialogClass := TfrmODCslt;
+  OD_PROCEDURE: DialogClass := TfrmODProc;
+  OD_TEXTONLY:  DialogClass := TfrmODText;
+  OD_VITALS:    DialogClass := TfrmODVitals;
+  //OD_ALLERGY:   DialogClass := TfrmODAllergy;
+  OD_AUTOACK:   DialogClass := TfrmODAuto;
+  else Exit;
+  end;
+  if Sender = nil then Sender := Application;
+  Result := DialogClass.Create(Sender);
+  if Result <> nil then Result.CallOnExit := DestroyingOrderDialog;
+  SetOrderEventTypeOnCreate(#0);
+  SetOrderEventIDOnCreate(0);
+  SetOrderFormIDOnCreate(0);
+end;
+
+function AuthorizedUser: Boolean;
+begin
+  Result := True;
+  if User.NoOrdering then Result := False;
+  if User.OrderRole = OR_BADKEYS then
+  begin
+    InfoBox(TX_BADKEYS, TC_BADKEYS, MB_OK);
+    Result := False;
+  end;
+end;
+
+function AuthorizedToVerify: Boolean;
+begin
+  Result := True;
+  if not User.EnableVerify then Result := False;
+  if User.OrderRole = OR_BADKEYS then
+  begin
+    InfoBox(TX_BADKEYS, TC_BADKEYS, MB_OK);
+    Result := False;
+  end;
+end;
+
+function EncounterPresent: Boolean;
+{ make sure a location and provider are selected, returns false if not }
+begin
+  Result := True;
+  if (Encounter.Provider > 0) and not PersonHasKey(Encounter.Provider, 'PROVIDER')
+    then InfoBox(TX_PROV_KEY, TC_PROV_KEY, MB_OK);
+  if (Encounter.Provider = 0) or (Encounter.Location = 0) or
+    ((Encounter.Provider > 0) and (not PersonHasKey(Encounter.Provider, 'PROVIDER'))) then
+  begin
+    // don't prompt provider if current user has ORES and is the provider
+    if (User.OrderRole = OR_PHYSICIAN) and (Encounter.Provider = User.DUZ) and (User.IsProvider)
+      then UpdateEncounter(NPF_SUPPRESS)
+      else UpdateEncounter(NPF_PROVIDER);
+    frmFrame.DisplayEncounterText;
+  end;
+  if (Encounter.Provider = 0) or (Encounter.Location = 0) then
+  begin
+    if not frmFrame.CCOWDrivedChange then   //jdccow
+      InfoBox(TX_PROV_LOC, TC_PROV_LOC, MB_OK or MB_ICONWARNING);  {!!!}
+    Result := False;
+  end;
+  if (Encounter.Provider > 0) and not PersonHasKey(Encounter.Provider, 'PROVIDER') then
+  begin
+    if not frmFrame.CCOWDrivedChange then   //jdccow
+      InfoBox(TX_PROV_KEY, TC_PROV_KEY, MB_OK);
+    Result := False;
+  end;
+end;
+
+function EncounterPresentEDO: Boolean;
+begin
+  Result := True;
+  if (Encounter.Provider > 0) and not PersonHasKey(Encounter.Provider, 'PROVIDER')
+    then InfoBox(TX_PROV_KEY, TC_PROV_KEY, MB_OK);
+  if (Encounter.Provider = 0) or
+    ((Encounter.Provider > 0) and (not PersonHasKey(Encounter.Provider, 'PROVIDER'))) then
+  begin
+    UpdateEncounter(NPF_PROVIDER);
+    frmFrame.DisplayEncounterText;
+  end;
+  if (Encounter.Provider = 0) then
+  begin
+    InfoBox(TX_PROV_LOC, TC_PROV_LOC, MB_OK or MB_ICONWARNING);  {!!!}
+    Result := False;
+  end;
+  if (Encounter.Provider > 0) and not PersonHasKey(Encounter.Provider, 'PROVIDER') then
+  begin
+    InfoBox(TX_PROV_KEY, TC_PROV_KEY, MB_OK);
+    Result := False;
+  end;
+end;
+
+function LockedForOrdering: Boolean;
+var
+  ErrMsg: string;
+begin
+  if uPatientLocked then Result := True else
+  begin
+    LockPatient(ErrMsg);
+    if ErrMsg = '' then
+    begin
+      Result := True;
+      uPatientLocked := True;
+      frmFrame.stsArea.Panels.Items[4].Text := 'LOCK';
+    end else
+    begin
+      Result := False;
+      InfoBox(ErrMsg, TC_NO_LOCK, MB_OK);
+    end;
+  end;
+end;
+
+procedure UnlockIfAble;
+begin
+  if (Changes.Orders.Count = 0) and not uKeepLock then
+  begin
+    UnlockPatient;
+    uPatientLocked := False;
+    frmFrame.stsArea.Panels.Items[4].Text := '';
+  end;
+end;
+
+function OrderCanBeLocked(OrderID: string): Boolean;
+var
+  ErrMsg: string;
+begin
+  LockOrder(OrderID, ErrMsg);
+  if ErrMsg = '' then
+  begin
+    Result := True;
+    frmFrame.stsArea.Panels.Items[4].Text := 'LOCK';
+  end else
+  begin
+    Result := False;
+    InfoBox(ErrMsg, TC_NO_LOCK, MB_OK);
+  end;
+end;
+
+procedure UnlockOrderIfAble(OrderID: string);
+begin
+  UnlockOrder(OrderID);
+  frmFrame.stsArea.Panels.Items[4].Text := '';
+end;
+
+procedure AddSelectedToChanges(AList: TList);
+{ update Changes with orders that were created by taking actions }
+var
+  i, CanSign: Integer;
+  AnOrder: TOrder;
+begin
+  if (Encounter.Provider = User.DUZ) and User.CanSignOrders
+    then CanSign := CH_SIGN_YES
+    else CanSign := CH_SIGN_NA;
+  with AList do for i := 0 to Count - 1 do
+  begin
+    AnOrder := TOrder(Items[i]);
+    with AnOrder do Changes.Add(CH_ORD, ID, Text, '', CanSign);
+    if (Length(AnOrder.ActionOn) > 0)
+      and not Changes.ExistForOrder(Piece(AnOrder.ActionOn, ';', 1))
+      then UnlockOrder(AnOrder.ActionOn);
+  end;
+end;
+
+procedure ResetDialogProperties(const AnID: string; AnEvent: TOrderDelayEvent; var ResolvedDialog: TOrderDialogResolved);
+begin
+  if StrToIntDef(AnID,0)>0 then
+    Exit;
+  if XfInToOutNow then
+  begin
+    ResolvedDialog.DisplayGroup := OutptDisp;
+    ResolvedDialog.DialogIEN    := MedsOutDlgIen;
+    ResolvedDialog.FormID       := MedsOutDlgFormID;
+    ResolvedDialog.QuickLevel   := 0;
+    Exit;
+  end;
+  //if ResolvedDialog.DisplayGroup in [MedsDisp, OutptDisp, InptDisp, NonVADisp, ClinDisp] then
+  if (ResolvedDialog.DisplayGroup = InptDisp) or
+    (ResolvedDialog.DisplayGroup = OutptDisp) or
+    (ResolvedDialog.DisplayGroup = MedsDisp) or
+    (ResolvedDialog.DisplayGroup =  NonVADisp) or
+    (ResolvedDialog.DisplayGroup =  ClinDisp) then
+  begin
+    if (AnEvent.EventType <> 'D') and (AnEvent.EventIFN > 0) then
+    begin
+      if (AnEvent.EventType = 'T') and IsPassEvt(AnEvent.PtEventIFN,'T') then
+      begin
+        ResolvedDialog.DisplayGroup := OutptDisp;
+        ResolvedDialog.DialogIEN    := MedsOutDlgIen;
+        ResolvedDialog.FormID       := MedsOutDlgFormID;
+        ResolvedDialog.QuickLevel   := 0;
+      end
+      else
+      begin
+        //AGP changes to handle IMO INV Dialog opening the unit dose dialog.
+        if (ResolvedDialog.DisplayGroup = ClinDisp) and (Resolveddialog.DialogIEN = MedsIVDlgIEN) and (ResolvedDialog.FormID = MedsIVDlgFormId) then
+          begin
+            ResolvedDialog.DisplayGroup := IVDisp;
+            ResolvedDialog.DialogIEN    := MedsIVDlgIen;
+            ResolvedDialog.FormID       := MedsIVDlgFormId;
+          end
+        else
+          begin
+            ResolvedDialog.DisplayGroup := InptDisp;
+            ResolvedDialog.DialogIEN    := MedsInDlgIen;
+            ResolvedDialog.FormID       := MedsInDlgFormId;
+          end;
+        if Length(ResolvedDialog.ShowText)>0 then
+          ResolvedDialog.QuickLevel   := 2;
+      end;
+    end
+    else if (AnEvent.EventType = 'D') and (AnEvent.EventIFN > 0) then
+    begin
+      ResolvedDialog.DisplayGroup := OutptDisp;
+      ResolvedDialog.DialogIEN    := MedsOutDlgIen;
+      ResolvedDialog.FormID       := MedsOutDlgFormID;
+      ResolvedDialog.QuickLevel   := 0;
+    end;
+
+    if XferOutToInOnMeds then
+    begin
+      ResolvedDialog.DisplayGroup := InptDisp;
+      ResolvedDialog.DialogIEN    := MedsInDlgIen;
+      ResolvedDialog.FormID       := MedsInDlgFormId;
+      ResolvedDialog.QuickLevel := 0;
+    end;
+  end;
+  if ResolvedDialog.DisplayGroup = IVDisp then
+  begin
+    if Length(ResolvedDialog.ShowText)>0 then
+      ResolvedDialog.QuickLevel   := 2;
+  end;
+  if (CharAt(AnID,1) = 'C') and (ResolvedDialog.DisplayGroup in [CsltDisp, ProcDisp]) then
+    ResolvedDialog.QuickLevel   := 0;  // CSV - force dialog, to validate ICD code being copied into new order {RV}
+end;
+
+function IsInvalidActionWarning(const AnOrderText,AnOrderID: String): boolean;
+var
+  AnErrLst, tmpList: TStringList;
+begin
+  Result := False;
+  AnErrlst := TStringList.Create;
+  IsLatestAction(AnOrderID,AnErrLst);
+  if AnErrLst.Count > 0 then
+  begin
+    tmpList := TStringList.Create;
+    PiecesToList(AnsiReplaceStr(AnOrderText,'#D#A','^'),'^',tmpList);
+    tmpList.Add(' ');
+    tmpList.Add('Cannot be released to service(s) because of the following happened action(s):');
+    tmpList.Add(' ');
+    FastAddStrings(TStrings(AnErrLst), tmpList);
+    ReportBox(tmpList,'Cannot be released to service(s)',False);
+    tmpList.Free;
+    AnErrLst.Free;
+    Result := True;
+  end;
+end;
+
+procedure InitialOrderVariables;
+begin
+  InptDisp := DisplayGroupByName('UD RX');
+  OutptDisp := DisplayGroupByName('O RX');
+  MedsDisp := DisplayGroupByName('RX');
+  IVDisp   := DisplayGroupByName('IV RX');
+  ClinDisp := DisplayGroupByName('C RX');
+  NurDisp  := DisplayGroupByName('NURS');
+  CsltDisp := DisplayGroupByName('CSLT');
+  ProcDisp := DisplayGroupByName('PROC');
+  ImgDisp  := DisplayGroupByName('XRAY');
+  DietDisp := DisplayGroupByName('DO');
+  NonVADisp := DisplayGroupByName('NV RX');
+  MedsInDlgIen  := DlgIENForName('PSJ OR PAT OE');
+  MedsOutDlgIen := DlgIENForName('PSO OERR');
+  MedsNVADlgIen := DlgIENForName('PSH OERR');
+  MedsIVDlgIen := DlgIENForName('PSJI OR PAT FLUID OE');
+  MedsInDlgFormId  := FormIDForDialog(MedsInDlgIen);
+  MedsOutDlgFormId := FormIDForDialog(MedsOutDlgIen);
+  MedsNVADlgFormID := FormIDForDialog(MedsNVADlgIen);
+  MedsIVDlgFormID := FormIDForDialog(MedsIVDlgIen);
+end;
+
+function IsValidActionOnComplexOrder(AnOrderID, AnAction: string;
+    AListBox: TListBox; var CheckedList: TStringList; var ErrMsg: string; var ParentOrderID: string): boolean;  //PSI-COMPLEX
+const
+  COMPLEX_SIGN  = 'You have requested to sign a medication order which was entered as part of a complex order.' +
+    'The following are the orders associated with the same complex order.';
+  COMPLEX_SIGN1 = ' Do you want to sign all of these orders?';
+
+  COMPLEX_DC  = 'You have requested to discontinue a medication order which was entered as part of a complex order.' +
+    ' The following are all of the associated orders.';
+  COMPLEX_DC1 =' Do you want to dicscontinue all of them?';
+
+  COMPLEX_HD  = 'You have requested to hold a medication order which was entered as part of a complex order.' +
+    ' The following are all of the associated orders.';
+  COMPLEX_HD1 = ' Do you want to hold all of them?';
+
+  COMPLEX_UNHD  = 'You have requested to release the hold of a medication order which was entered as part of a complex order.' +
+    ' The following are all of the associated orders.';
+  COMPLEX_UNHD1 = ' Do you want to release all of them?';
+
+  COMPLEX_RENEW = 'You can not take the renew action on a complex medication which has the following associated orders.';
+  COMPLEX_RENEW1 = ' You must enter a new order.';
+
+  COMPLEX_VERIFY ='You have requested to verify a medication order which was entered as part of a complex order.' +
+    ' The following are all of the associated orders.';
+  COMPLEX_VERIFY1 =' Do you want to verify all of them?';
+
+  COMPLEX_OTHER = 'You can not take this action on a complex medication which has the following associated orders.'
+    + ' You must enter a new order.';
+
+  COMPLEX_CANRENEW1 = 'The selected order for renew: ';
+  COMPLEX_CANRENEW2 = ' is a part of a complex order.';
+  COMPLEX_CANRENEW3 = 'The following whole complex order will be renewed.';
+var
+  CurrentActID, POrderTxt, AChildOrderTxt, CplxOrderMsg: string;
+  ChildList,ChildIdxList,ChildTxtList, CategoryList: TStringList;
+  ShowCancelButton: boolean;
+  procedure RetrieveOrderTextPSI(AOrderList: TStringList; var AODTextList, AnIdxList: TStringList;
+    TheAction: string; AParentID: string = '');
+  var
+    ix,jx: integer;
+    tempid: string;
+  begin
+    for ix := 0 to AOrderList.count - 1  do
+    begin
+      if AListBox.Name = 'lstOrders' then  with AListBox do
+      begin
+        for jx := 0 to Items.Count - 1 do
+          if TOrder(Items.Objects[jx]).ID = AOrderList[ix] then
+          begin
+            TOrder(Items.Objects[jx]).ParentID := AParentID;
+            if CategoryList.IndexOf(TheAction)>-1 then
+              Selected[jx] := True;
+            AODTextList.Add(TOrder(Items.Objects[jx]).ID + '^' + TOrder(Items.Objects[jx]).Text);
+            if AnIdxList.IndexOf(IntToStr(jx)) > -1 then
+              continue;
+            AnIdxList.Add(IntToStr(jx));
+          end;
+      end
+      else if (AListBox.Name = 'lstMedsOut' ) or (AListBox.Name = 'lstMedsIn')
+              or (AListBox.Name = 'lstMedsNonVA') then with AListBox do
+      begin
+         for jx := 0 to Items.Count - 1 do
+         begin
+          tempid := TMedListRec(AListBox.Items.Objects[jx]).OrderID;
+          if tempid = AOrderList[ix] then
+          begin
+            if CategoryList.IndexOf(TheAction)>-1 then
+              Selected[jx] := True;
+            AODTextList.Add(tempid + '^' + Items[jx]);
+            AnIdxList.Add(IntToStr(jx));
+          end;
+         end;
+      end;
+    end;
+  end;
+
+  procedure DeselectChild(AnIdxList: TStringList);
+  var
+    dix: integer;
+  begin
+    for dix := 0 to AnIdxList.Count - 1 do
+    begin
+      try
+       if StrToInt(AnIdxList[dix]) < AListBox.Items.Count then
+        AListBox.Selected[StrToInt(AnIdxList[dix])] := False;
+      except
+        // do nothing
+      end;
+    end;
+  end;
+
+  function MakeMessage(ErrMsg1,ErrMsg2,ErrMsg3: string): string;
+  begin
+    if Length(ErrMsg1)>0 then
+      Result := ErrMsg1 + ErrMsg2
+    else
+      Result := ErrMsg2 + ErrMsg3;
+  end;
+
+begin
+  Result := True;
+  if AnAction = OA_COPY then Exit;
+  CurrentActID := Piece(AnOrderID,';',2);
+  CplxOrderMsg := '';
+  CategoryList := TStringList.Create;
+  CategoryList.Add('DC');
+  CategoryList.Add('HD');
+  CategoryList.Add('RL');
+  CategoryList.Add('VR');
+  CategoryList.Add('ES');
+  ShowCancelButton := False;
+
+  if Length(ErrMsg)>0 then ErrMsg := ErrMsg + #13#13;
+  ValidateComplexOrderAct(AnOrderID,CplxOrderMsg);
+  if Pos('COMPLEX-PSI',CplxOrderMsg)>0 then
+  begin
+    ParentOrderID := Piece(CplxOrderMsg,'^',2);
+    if CheckedList.IndexOf(ParentOrderID) >= 0 then
+    begin
+      ErrMsg := '';
+      Exit;
+    end;
+    if CheckedList.Count = 0 then
+      CheckedList.Add(ParentOrderID)
+    else
+    begin
+      if CheckedList.IndexOf(ParentOrderID) < 0 then
+        CheckedList.Add(ParentOrderID);
+    end;
+    ChildList := TStringList.Create;
+    GetChildrenOfComplexOrder(ParentOrderID,CurrentActID,ChildList);
+    ChildtxtList := TStringList.Create;
+    ChildIdxList := TStringList.Create;
+    RetrieveOrderTextPSI(ChildList,ChildtxtList,ChildIdxList,AnAction,ParentOrderID);
+    if ChildtxtList.Count > 0 then
+    begin
+      if (AnAction = 'RN') or (AnAction = 'EV') then
+      begin
+        if not IsValidSchedule(ParentOrderID) then
+        begin
+          POrderTxt := RetrieveOrderText(ParentOrderID);
+          if CharAt(POrderTxt,1)='+' then
+            POrderTxt := Copy(POrderTxt,2,Length(POrderTxt));
+          if Pos('First Dose NOW',POrderTxt)>1 then
+            Delete(POrderTxt, Pos('First Dose NOW',POrderTxt), Length('First Dose Now'));
+          InfoBox('Invalid schedule!' + #13#13 + 'The selected order is a part of a complex order:' + #13
+            + POrderTxt + #13#13 + ' It contains an invalid schedule.',
+            'Warning', MB_OK or MB_ICONWARNING);
+          DeselectChild(ChildIdxList);
+          Result := False;
+          ErrMsg := '';
+          ChildtxtList.Free;
+          ChildList.Clear;
+          ChildList.Free;
+          CategoryList.Clear;
+          Exit;
+        end;
+      end;
+      if AnAction = OA_DC then
+      begin
+        if not ActionOnComplexOrder(ChildtxtList,MakeMessage(ErrMsg,COMPLEX_DC,COMPLEX_DC1),True) then
+        begin
+          DeselectChild(ChildIdxList);
+          Result := False;
+        end;
+      end
+      else if AnAction = OA_SIGN then
+      begin
+        if not ActionOnComplexOrder(ChildtxtList,MakeMessage(ErrMsg,COMPLEX_SIGN,COMPLEX_SIGN1),True) then
+        begin
+          DeselectChild(ChildIdxList);
+          Result := False;
+        end;
+      end
+      else if AnAction = OA_HOLD then
+      begin
+        if Length(ErrMsg) < 1 then ShowCancelButton := True;
+        if not ActionOnComplexOrder(ChildtxtList,MakeMessage(ErrMsg,COMPLEX_HD,COMPLEX_HD1),ShowCancelButton) then
+        begin
+          DeselectChild(ChildIdxList);
+          Result := False;
+        end;
+      end
+      else if AnAction = OA_UNHOLD then
+      begin
+        if Length(ErrMsg) < 1 then ShowCancelButton := True;
+        if not ActionOnComplexOrder(ChildtxtList,MakeMessage(ErrMsg,COMPLEX_UNHD,COMPLEX_UNHD1),ShowCancelButton) then
+        begin
+          DeselectChild(ChildIdxList);
+          Result := False;
+        end;
+      end
+      else if AnAction = OA_VERIFY then
+      begin
+        if Length(ErrMsg) < 1 then ShowCancelButton := True;
+        if not ActionOnComplexOrder(ChildtxtList,MakeMessage(ErrMsg,COMPLEX_VERIFY,COMPLEX_VERIFY1),ShowCancelButton) then
+        begin
+          DeselectChild(ChildIdxList);
+          Result := False;
+        end;
+      end
+      else if AnAction = OA_RENEW then
+      begin
+        if not IsRenewableComplexOrder(ParentOrderID) then
+        begin
+          if not ActionOnComplexOrder(ChildtxtList,MakeMessage(ErrMsg,COMPLEX_RENEW,COMPLEX_RENEW1),False) then
+          begin
+            DeselectChild(ChildIdxList);
+            Result := False;
+          end;
+        end
+        else
+        begin
+          POrderTxt := RetrieveOrderText(ParentOrderID);
+          if CharAt(POrderTxt,1)='+' then
+            POrderTxt := Copy(POrderTxt,2,Length(POrderTxt));
+          if Pos('First Dose NOW',POrderTxt)>1 then
+            Delete(POrderTxt, Pos('First Dose NOW',POrderTxt), Length('First Dose Now'));
+          AChildOrderTxt := RetrieveOrderText(AnOrderID);
+          if InfoBox(COMPLEX_CANRENEW1 + #13 + AChildOrderTxt
+            + COMPLEX_CANRENEW2 + #13#13
+            + COMPLEX_CANRENEW3 + #13 +  POrderTxt,
+            'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDOK then
+          begin
+            if AListBox.Name = 'lstOrders' then
+              frmOrders.ParentComplexOrderID := ParentOrderID;
+            if (AListBox.Name = 'lstMedsOut' ) or (AListBox.Name = 'lstMedsIn') then
+              frmMeds.ParentComplexOrderID := ParentOrderID;
+          end;
+          DeselectChild(ChildIdxList);
+        end;
+      end;
+    end;
+    ErrMsg := '';
+    ChildtxtList.Free;
+    ChildList.Clear;
+    ChildList.Free;
+  end;
+  CategoryList.Clear;
+end;
+
+{ Write New Orders }
+
+function ActivateAction(const AnID: string; AnOwner: TComponent; ARefNum: Integer): Boolean;
+// AnID: DlgIEN {;FormID;DGroup}
+type
+  TDialogClass = class of TfrmOMAction;
+var
+  DialogClass: TDialogClass;
+  AFormID: Integer;
+begin
+  Result := False;
+  AFormID := FormIDForDialog(StrToIntDef(Piece(AnID, ';', 1), 0));
+  if AFormID > 0 then
+  begin
+    case AFormID of
+      OM_ALLERGY:     if ARTPatchInstalled then
+                        DialogClass := TfrmARTAllergy
+                      else
+                        begin
+                          Result := False;
+                          Exit;
+                        end;
+      OM_HTML:        DialogClass := TfrmOMHTML;
+      999999:         DialogClass := TfrmOMAction;  // for testing!!!
+    else
+      Exit;
+    end;
+    if AnOwner = nil then AnOwner := Application;
+    uOrderAction := DialogClass.Create(AnOwner);
+    if (uOrderAction <> nil) (*and (not uOrderAction.AbortAction) *)then
+    begin
+      uOrderAction.CallOnExit := DestroyingOrderAction;
+      uOrderAction.RefNum := ARefNum;
+      uOrderAction.OrderDialog := StrToIntDef(Piece(AnID, ';', 1), 0);
+      Result := True;
+      if (not uOrderAction.AbortAction) then uOrderAction.ShowModal;
+    end;
+  end else
+  begin
+    //Show508Message('Order Dialogs of type "Action" are available in List Manager only.');
+    Result := False;
+  end;
+end;
+
+function ActivateOrderDialog(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer; ANeedVerify: boolean = True): Boolean;
+const
+  TX_NO_DEA     = 'Provider must have a DEA# or VA# to change this order';
+  TC_NO_DEA     = 'DEA# Required';
+  TC_IMO_ERROR  = 'Inpatient medication order on outpatient authorization required';
+  TX_EVTDEL_DIET_CONFLICT = 'Have you done either of the above?';
+  TC_EVTDEL_DIET_CONFLICT = 'Possible delayed order conflict';
+var
+  ResolvedDialog: TOrderDialogResolved;
+  x, EditedOrder, chkCopay, OrderID, PkgInfo,OrderPtEvtID,OrderEvtID,NssErr, tempUnit, tempSupply, tempDrug, tempSch: string;
+  temp,tempDur,tempQuantity, tempRefills: string;
+  i, ODItem, tempOI, ALTOI: integer;
+  DrugCheck, IsInpatient, IsAnIMOOrder, DrugTestDlgType: boolean;
+  IsPsoSupply,IsDischargeOrPass,IsPharmacyOrder,IsConsultOrder,ForIMO, IsNewOrder: boolean;
+  tmpResp: TResponse;
+  CxMsg: string;
+  AButton: TButton;
+begin
+  IsPsoSupply := False;
+  Result := False;
+  IsDischargeOrPass := False;
+  IsAnIMOOrder  := False;
+  ForIMO := False;
+  IsNewOrder := True;
+  PassDrugTstCall := False;
+  DrugCheck := false;
+  DrugTestDlgType := false;
+  //QOAltOI.OI := 0;
+  // double check environment before continuing with order
+  if uOrderDialog <> nil then uOrderDialog.Close; // then x := uOrderDialog.Name else x := '';
+  //if ShowMsgOn(uOrderDialog <> nil, TX_DLG_ERR + CRLF + x, TC_DLG_ERR) then Exit;
+  if CharAt(AnID, 1) = 'X' then
+  begin
+    IsNewOrder := False;
+   // if PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E')=false then Exit;
+    ValidateOrderAction(Copy(AnID, 2, Length(AnID)), OA_CHANGE,   x);
+    if ( Length(x)<1 ) and not (AnEvent.EventIFN > 0) then
+      ValidateComplexOrderAct(Copy(AnID, 2, Length(AnID)),x);
+    if (Pos('COMPLEX-PSI',x)>0) then
+      x := TX_COMPLEX;
+    if Length(x) > 0 then
+      x := RetrieveOrderText(Copy(AnID, 2, Length(AnID))) + #13#10 + x;
+    if ShowMsgOn(Length(x) > 0, x, TC_NO_CHANGE) then Exit;
+    DrugCheck := true;
+  end;
+  if CharAt(AnID, 1) = 'C' then
+  begin
+    IsNewOrder := False;
+    //if PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E')=false then Exit;
+    ValidateOrderAction(Copy(AnID, 2, Length(AnID)), OA_COPY,     x);
+    if Length(x) > 0 then
+      x := RetrieveOrderText(Copy(AnID, 2, Length(AnID))) + #13#10 + x;
+    if ShowMsgOn(Length(x) > 0, x, TC_NO_COPY) then Exit;
+    DrugCheck := true;
+ end;
+  if CharAt(AnID, 1) = 'T' then
+  begin
+    IsNewOrder := False;
+    if (XfInToOutNow = true) and (PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E', false)=false) then Exit;
+    if (XfInToOutNow = false) then
+      begin
+       if (XferOuttoInOnMeds = True) and (PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E', true)=false) then Exit;
+       if (XferOuttoInOnMeds = False) and (PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E', False)=false) then Exit;
+      end;
+    ValidateOrderAction(Copy(AnID, 2, Length(AnID)), OA_TRANSFER, x);
+    if Length(x) > 0 then
+      x := RetrieveOrderText(Copy(AnID, 2, Length(AnID))) + #13#10 + x;
+    if ShowMsgOn(Length(x) > 0, x, TC_NO_XFER) then Exit;
+  end;
+  if not IMOActionValidation(AnID, IsAnIMOOrder, x, AnEvent.EventType) then
+  begin
+    ShowMsgOn(Length(x) > 0, x, TC_IMO_ERROR);
+    Exit;
+  end;
+  if ( (StrToIntDef(AnId,0)>0) and (AnEvent.EventIFN <= 0) ) then
+    ForIMO := IsIMODialog(StrToInt(AnId))
+  else if ( (IsAnIMOOrder) and (AnEvent.EventIFN <= 0) ) then
+    ForIMO := True;
+  OrderPtEvtID := GetOrderPtEvtID(Copy(AnID, 2, Length(AnID)));
+  OrderEvtID := Piece(EventInfo(OrderPtEvtID),'^',2);
+  // evaluate order dialog, build response list & see what form should be presented
+  FillChar(ResolvedDialog, SizeOf(ResolvedDialog), #0);
+  ResolvedDialog.InputID := AnID;
+  BuildResponses(ResolvedDialog, GetKeyVars, AnEvent, ForIMO);
+  if (ResolvedDialog.DisplayGroup = InPtDisp) or (ResolvedDialog.DisplayGroup = ClinDisp) then DrugTestDlgType := true;
+  if (DrugCheck = true) and (ResolvedDialog.DisplayGroup = OutPtDisp) and
+  (PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E', false)=false) then Exit;
+  if (DrugCheck = true) and (DrugTestDlgType = true) and (PassDrugTest(StrtoINT(Copy(AnID, 2, Length(AnID)-3)), 'E', true)=false) then Exit;
+  if (IsNewOrder = True) and (ResolvedDialog.DialogType = 'Q') and
+     ((ResolvedDialog.DisplayGroup = OutptDisp) or (DrugTestDlgType = true)) then
+    begin
+      if (PassDrugTest(ResolvedDialog.DialogIEN, 'Q', DrugTestDlgType)=false) then Exit
+      else PassDrugTstCall := True;
+    end;
+  if (ForIMO and ( (ResolvedDialog.DialogIEN = MedsInDlgIen)
+    or (ResolvedDialog.DialogIEN = MedsIVDlgIen)) ) then
+    ResolvedDialog.DisplayGroup := ClinDisp;
+  ResetDialogProperties(AnID, AnEvent, ResolvedDialog);
+ {* AGP CHANGE 26.20 Remove restriction to allowed for ordering of inpatient medication for an inpatient from an outpatient location
+   //jd imo change
+   if (ResolvedDialog.DisplayGroup = InptDisp) and (Patient.Inpatient) and (AnEvent.EventIFN < 1) then
+   begin
+     if IsClinicLoc(Encounter.Location) then
+     begin
+       MessageDlg(TX_NOINPT, mtWarning, [mbOK], 0);
+       Exit;
+     end;
+   end;
+   //jd imo change end  *}
+   if (ResolvedDialog.DisplayGroup = InptDisp) or
+      (ResolvedDialog.DisplayGroup = OutptDisp) or
+      (ResolvedDialog.DisplayGroup = MedsDisp) or
+      (ResolvedDialog.DisplayGroup = IVDisp) or
+      (ResolvedDialog.DisplayGroup =  NonVADisp) or
+      (ResolvedDialog.DisplayGroup =  ClinDisp) then  IsPharmacyOrder := True
+   else
+      IsPharmacyOrder := False;
+   (*  IsPharmacyOrder := ResolvedDialog.DisplayGroup in [InptDisp, OutptDisp,
+        MedsDisp,IVDisp, NonVADisp, ClinDisp];*)   //v25.27 range check error - RV
+  IsConsultOrder := ResolvedDialog.DisplayGroup in [CsltDisp,ProcDisp];
+  if (uAutoAC) and (not (ResolvedDialog.QuickLevel in [QL_REJECT,QL_CANCEL]))
+    and (not IsPharmacyOrder) and (not IsConsultOrder) then
+    ResolvedDialog.QuickLevel := QL_AUTO;
+  if (ResolvedDialog.DialogType = 'Q')
+    and (ResolvedDialog.DisplayGroup = InptDisp) then
+  begin
+     NssErr := IsValidQOSch(ResolvedDialog.InputID);
+     if (Length(NssErr) > 1) then
+     begin
+       if (NssErr <> 'OTHER') and (NssErr <> 'schedule is not defined.') then
+         ShowMsg('The order contains invalid non-standard schedule.');
+       NSSchedule := True;
+       ResolvedDialog.QuickLevel := 0;
+     end;
+  end;
+  if ResolvedDialog.DisplayGroup = InptDisp then       //nss
+  begin
+    if (CharAt(AnID, 1) = 'C') or (CharAt(AnID, 1) = 'T') or (CharAt(AnID, 1) = 'X') then
+    begin
+      if not IsValidSchedule(Copy(AnID, 2, Length(AnID))) then
+      begin
+        ShowMsg('The order contains invalid non-standard schedule.');
+        NSSchedule := True;
+      end;
+    end;
+    if NSSchedule then ResolvedDialog.QuickLevel := 0;
+  end;
+ (* if (ResolvedDialog.DialogType = 'Q') and ((ResolvedDialog.FormID = OD_MEDINPT) or (ResolvedDialog.FormID = OD_MEDOUTPT)) then
+    begin
+      temp := '';
+      tempOI := GetQOOrderableItem(ResolvedDialog.InputID);
+      if tempOI >0 then
+        begin
+          ALTOI := tempOI;
+          CheckFormularyOI(AltOI,temp,True);
+          if ALTOI <> tempOI then
+            begin
+              ResolvedDialog.QuickLevel := 0;
+              QOAltOI.OI := ALTOI;
+            end;
+        end;
+    end; *)
+  //   ((ResolvedDialog.DisplayGroup = InptDisp) or (ResolvedDialog.DisplayGroup = OutptDisp) or (ResolvedDialog.DisplayGroup = MedsDisp)) then
+ //    ResolvedDialog.QuickLevel := 0;
+  with ResolvedDialog do if (QuickLevel = QL_VERIFY) and (HasTemplateField(ShowText)) then QuickLevel := QL_DIALOG;
+
+  // Check for potential conflicting auto-accept delayed-release diet orders (CQ #10946 - v27.36 - RV)
+  with ResolvedDialog do if (QuickLevel = QL_AUTO) and (DisplayGroup = DietDisp) and (AnEvent.EventType <> 'C') then
+  begin
+    AButton := TButton.Create(Application);
+    try
+      CheckForAutoDCDietOrders(AnEvent.EventIFN, DisplayGroup, '', CxMsg, AButton);
+      if CxMsg <> '' then
+      begin
+        if InfoBox(CxMsg + CRLF + CRLF + TX_EVTDEL_DIET_CONFLICT,
+           TC_EVTDEL_DIET_CONFLICT,
+           MB_ICONWARNING or MB_YESNO) = ID_NO
+           then QuickLevel := QL_DIALOG;
+      end;
+    finally
+      AButton.Free;
+    end;
+  end;
+
+  with ResolvedDialog do
+  begin
+    if QuickLevel = QL_REJECT then InfoBox(ShowText, TC_DLG_REJECT, MB_OK);
+    if (QuickLevel = QL_VERIFY) and (IsPharmacyOrder or ANeedVerify) then  ShowVerifyText(QuickLevel, ShowText, DisplayGroup=InptDisp);
+    if QuickLevel = QL_AUTO   then FormID := OD_AUTOACK;
+    if (QuickLevel = QL_REJECT) or (QuickLevel = QL_CANCEL) then Exit;
+    PushKeyVars(ResolvedDialog.QOKeyVars);
+  end;
+  if ShowMsgOn(not (ResolvedDialog.FormID > 0), TX_NOFORM, TC_NOFORM) then Exit;
+  with ResolvedDialog do if DialogType = 'X' then
+  begin
+    EditedOrder := Copy(Piece(ResponseID, '-', 1), 2, Length(ResponseID));
+  end
+  else EditedOrder := '';
+  if XfInToOutNow then
+  begin
+     //if Transfer an order to outpatient and release immediately
+     // then changing the Eventtype to 'C' instead of 'D'
+     IsDischargeOrPass := True;
+     AnEvent.EventType := 'C';
+     AnEvent.Effective := 0;
+  end;
+  uOrderDialog := CreateOrderDialog(AnOwner, ResolvedDialog.FormID, AnEvent, StrToIntDef(OrderEvtID,0));
+  uOrderDialog.IsSupply := IsPsoSupply;
+
+  {For copy, change, transfer actions on an None-IMO order, the new order should not be treated as IMO order
+   although the IMO criteria could be met. }
+  //if (uOrderDialog.IsIMO) and (CharAt(AnID, 1) in ['X','C','T']) then
+  if not uOrderDialog.IsIMO then
+    uOrderDialog.IsIMO := ForIMO;
+
+  if (ResolvedDialog.DialogType = 'Q') and (ResolvedDialog.DisplayGroup in [MedsDisp, OutptDisp, InptDisp]) then
+     begin
+       if DoesOIPIInSigForQO(StrToInt(ResolvedDialog.InputID))=1 then
+         uOrderDialog.IncludeOIPI := True
+       else
+         uOrderDialog.IncludeOIPI := False;
+     end;
+
+  if (uOrderDialog <> nil) and not uOrderDialog.Closing then with uOrderDialog do
+        begin
+          SetKeyVariables(GetKeyVars);
+
+          if IsDischargeOrPass then
+            EvtForPassDischarge  := 'D'
+          else
+            EvtForPassDischarge  := #0;
+
+          Responses.SetEventDelay(AnEvent);
+          Responses.LogTime := uOrderSetTime;
+          DisplayGroup := ResolvedDialog.DisplayGroup;  // used to pass ORTO
+          DialogIEN    := ResolvedDialog.DialogIEN;     // used to pass ORIT
+          RefNum := ARefNum;
+
+          case ResolvedDialog.DialogType of
+          'C': SetupDialog(ORDER_COPY,  ResolvedDialog.ResponseID);
+          'D': SetupDialog(ORDER_NEW,   '');
+          'X':
+                begin
+                   SetupDialog(ORDER_EDIT,  ResolvedDialog.ResponseID);
+                   OrderID := Copy(ResolvedDialog.ResponseID,2,Length(ResolvedDialog.ResponseID));
+                   IsInpatient := OrderForInpatient;
+                   ODItem := StrToIntDef(Responses.IValueFor('ORDERABLE', 1), 0);
+                   PkgInfo := '';
+                   if Length(OrderID)>0 then
+                     PkgInfo := GetPackageByOrderID(OrderID);
+                   if Pos('PS',PkgInfo)=1 then
+                   begin
+                     if DEACheckFailed(ODItem, IsInPatient) and (uOrderDialog.FillerID <> 'PSH') then
+                     begin
+                       InfoBox(TX_NO_DEA + #13 + Responses.OrderText, TC_NO_DEA, MB_OK);
+                       if (ResolvedDialog.DialogType = 'X') and not Changes.ExistForOrder(EditedOrder)
+                       then UnlockOrder(EditedOrder);
+                       uOrderDialog.Close;
+                       Exit;
+                     end;
+                   end;
+                end;
+          'Q':
+                begin
+                  if IsPSOSupplyDlg(ResolvedDialog.DialogIEN,1) then
+                    uOrderDialog.IsSupply := True;
+                  SetupDialog(ORDER_QUICK, ResolvedDialog.ResponseID);
+                end;
+          end;
+
+          if Assigned(uOrderDialog) then
+            with uOrderDialog do if AbortOrder then
+              begin
+                Close;
+                Exit;
+              end;
+
+          if CharAt(AnID, 1) = 'T' then
+             begin
+               if ARefNum = -2 then
+                 Responses.TransferOrder := '';
+               if ARefNum = -1 then
+                 Responses.TransferOrder := AnID;
+             end;
+
+          if CharAt(AnID,1) = 'C' then            ////////////////////////////////////////////////////////////////////////
+             begin
+               chkCopay := Copy(AnID,2,length(AnID)); //STRIP prepended C, T, or X from first position in order ID.
+               SetDefaultCoPay(chkCopay);
+             end;                                    ////////////////////////////////////////////////////////////////////////'
+
+          if IsConsultOrder and (CharAt(AnID,1) = 'C') then
+             begin
+               tmpResp := uOrderDialog.Responses.FindResponseByName('CODE', 1);
+               if (tmpResp <> nil) then
+                 begin
+                 if IsActiveICDCode(tmpResp.EValue) then
+                    ResolvedDialog.QuickLevel := QL_AUTO
+                 else
+                    ResolvedDialog.QuickLevel := QL_DIALOG;
+                 end
+               else
+                 ResolvedDialog.QuickLevel := QL_AUTO
+             end;
+
+          if ResolvedDialog.QuickLevel <> QL_AUTO then
+             begin
+               if CharAt(AnID, 1) in ['C','T','X'] then
+                  begin
+                  Position := poScreenCenter;
+                  FormStyle := fsNormal;
+                  ShowModal;
+                  Result := uOrderDialog.AcceptOK;
+                  end
+               else
+                  begin
+                    SetBounds(frmFrame.Left + 112, frmFrame.Top + frmFrame.Height - Height, Width, Height);
+                    SetFormPosition(uOrderDialog);
+                    FormStyle := fsStayOnTop;
+                    if frmOrders.NeedShowModal then
+                       begin
+                       ShowModal;
+                       Result := uOrderDialog.AcceptOK;
+                       uOrderDialog.Destroy;
+                       end
+                    else
+                       begin
+                       Show;
+                       Result := True;
+                       end;
+                 end;
+             end
+          else
+             begin
+             if uOrderDialog.DisplayGroup = OutptDisp then
+               begin
+                 tempUnit := '';
+                 tempSupply := '';
+                 tempDrug := '';
+                 tempSch := '';
+                 tempDur := '';
+                 tmpResp := uOrderDialog.Responses.FindResponseByName('SUPPLY', 1);
+                 if tmpResp = nil then tempSupply := '0'
+                 else tempSupply := tmpResp.EValue;
+                 tmpResp := uOrderDialog.Responses.FindResponseByName('QTY', 1);
+                 if tmpResp = nil then tempQuantity := '0'
+                 else tempQuantity := tmpResp.EValue;
+                 tmpResp := uOrderDialog.Responses.FindResponseByName('REFILLS', 1);
+                 if tmpResp = nil then tempRefills := '0'
+                 else tempRefills := tmpResp.EValue;
+                 tmpResp := uOrderDialog.Responses.FindResponseByName('ORDERABLE', 1);
+                 tempOI := StrToIntDef(tmpResp.IValue,0);
+                 i := uORderDialog.Responses.NextInstance('DOSE',0);
+                 while i > 0 do
+                   begin
+                      x := Piece(uOrderDialog.Responses.IValueFor('DOSE',i), '&', 3);
+                      tempUnit := tempUnit + X + U;
+                      x := uOrderDialog.Responses.IValueFor('SCHEDULE',i);
+                      tempSch := tempSch + x + U;
+                      x := uOrderDialog.Responses.IValueFor('DRUG', i);
+                      tempDrug := Piece(x, U, 1);
+                      i := Responses.NextInstance('DOSE', i);
+                      x := UORderDialog.Responses.IValueFor('DAYS', i);
+                      tempDur := tempDur + x + '~';
+                      x := uOrderDialog.Responses.IValueFor('CONJ', i);
+                      tempDur := tempDur + x + U;
+                   end;
+                 if ValidateDrugAutoAccept(tempDrug, tempUnit, tempSch, tempDur, tempOI, StrtoInt(tempSupply), StrtoInt(tempQuantity), StrtoInt(tempRefills)) = false then Exit;
+               end;
+             cmdAcceptClick(Application);  // auto-accept order
+             Result := uOrderDialog.AcceptOK;
+
+             //BAPHII 1.3.2
+             //Show508Message('DEBUG: About to copy BA CI''s to copied order from Order: '+AnID+'#13'+' in uOrders.ActivateOrderDialog()');
+
+             //End BAPHII 1.3.2
+
+             if Assigned(uOrderDialog) then
+               uOrderDialog.Destroy;
+             end;
+
+        end
+  else
+     begin
+       uOrderDialog.Release;
+       Result := False;
+     //Application.ProcessMessages;       // to allow dialog to finish closing
+     //Exit;                              // so result is not returned true
+     end;
+
+  if NSSchedule then
+    NSSchedule := False;
+
+  if (ResolvedDialog.DialogType = 'X') and not Changes.ExistForOrder(EditedOrder)
+    then UnlockOrder(EditedOrder);
+  //QOAltOI.OI := 0;
+end;
+
+function RetrieveOrderText(AnOrderID: string): string;
+var
+  OrdList: TList;
+  theOrder: TOrder;
+ // i: integer;
+begin
+ // if Assigned(OrdList) then
+ // begin
+ //    for i := 0 to pred(OrdList.Count) do
+ //       TObject(OrdList[i]).Free;
+  //   UBAGlobals.tempDxList := nil;
+ // end;
+  OrdList := TList.Create;
+  theOrder := TOrder.Create;
+  theOrder.ID := AnOrderID;
+  OrdList.Add(theOrder);
+  RetrieveOrderFields(OrdList, 0, 0);
+  Result := TOrder(OrdList.Items[0]).Text;
+  if Assigned(OrdList) then OrdList.Free; //CQ:7554
+end;
+
+function ActivateOrderHTML(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer): Boolean;
+var
+  DialogIEN: Integer;
+  x: string;
+  ASetList: TStringList;
+begin
+  Result := False;
+  DialogIEN := StrToIntDef(AnID, 0);
+  x := OrderDisabledMessage(DialogIEN);
+  if ShowMsgOn(Length(x) > 0, x, TC_DISABLED) then Exit;
+  if uOrderHTML = nil then
+  begin
+    uOrderHTML := TfrmOMHTML.Create(AnOwner);
+    with uOrderHTML do
+    begin
+      SetBounds(frmFrame.Left + 112, frmFrame.Top + frmFrame.Height - Height, Width, Height);
+      SetFormPosition(uOrderHTML);
+      FormStyle := fsStayOnTop;
+      SetEventDelay(AnEvent);
+    end;
+  end;
+  uOrderHTML.Dialog  := DialogIEN;
+  uOrderHTML.RefNum  := ARefNum;
+  uOrderHTML.OwnedBy := AnOwner;
+  uOrderHTML.ShowModal;
+  ASetList := TStringList.Create;
+  FastAssign(uOrderHTML.SetList, ASetList);
+  uOrderHTML.Release;
+  if ASetList.Count = 0 then Exit;
+  Result := ActivateOrderList(ASetList, AnEvent, AnOwner, ARefNum, '', '');
+end;
+
+function ActivateOrderMenu(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer): Boolean;
+var
+  MenuIEN: Integer;
+  x: string;
+begin
+  Result := False;
+  MenuIEN := StrToIntDef(AnID, 0);
+  x := OrderDisabledMessage(MenuIEN);
+  if ShowMsgOn(Length(x) > 0, x, TC_DISABLED) then Exit;
+  if uOrderMenu = nil then
+  begin
+    uOrderMenu := TfrmOMNavA.Create(AnOwner);
+    with uOrderMenu do
+    begin
+      SetBounds(frmFrame.Left + 112, frmFrame.Top + frmFrame.Height - Height, Width, Height);
+      SetFormPosition(uOrderMenu);
+      FormStyle := fsStayOnTop;
+      SetEventDelay(AnEvent);
+    end;
+  end;
+  uOrderMenu.SetNewMenu(MenuIEN, AnOwner, ARefNum);
+  if not uOrderMenu.Showing then uOrderMenu.Show else uOrderMenu.BringToFront;
+  Result := True;
+end;
+
+function ActivateOrderSet(const AnID: string; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer): Boolean;
+var
+  x, ACaption, KeyVarStr: string;
+  SetList: TStringList;
+  EvtDefaultDlg, PtEvtID: string;
+
+  function TakeoutDuplicateDlg(var AdlgList: TStringList; ANeedle: string): boolean;
+  var
+    i: integer;
+  begin
+    Result := False;
+    for i := 0 to AdlgList.Count - 1 do
+    begin
+      if Piece(AdlgList[i],'^',1)=ANeedle then
+      begin
+        ADlgList.Delete(i);
+        Result := True;
+        Break;
+      end;
+    end;
+  end;
+
+begin
+  Result := False;
+  x := OrderDisabledMessage(StrToIntDef(AnID, 0));
+  if ShowMsgOn(Length(x) > 0, x, TC_DISABLED) then Exit;
+  SetList := TStringList.Create;
+  try
+    if uOrderSetTime = 0 then uOrderSetTime := FMNow;
+    LoadOrderSet(SetList, StrToIntDef(AnID, 0), KeyVarStr, ACaption);
+    if (AnEvent.EventIFN>0) and isExistedEvent(Patient.DFN, IntToStr(AnEvent.EventIFN), PtEvtID) then
+    begin
+      EvtDefaultDlg := GetEventDefaultDlg(AnEvent.EventIFN);
+      while TakeoutDuplicateDlg(SetList,EvtDefaultDlg) do
+        TakeoutDuplicateDlg(SetList,EvtDefaultDlg);
+    end;
+    Result := ActivateOrderList(SetList, AnEvent, AnOwner, ARefNum, KeyVarStr, ACaption);
+  finally
+    SetList.Free;
+  end;
+end;
+
+function ActivateOrderList(AList: TStringList; AnEvent: TOrderDelayEvent;
+  AnOwner: TComponent; ARefNum: Integer; const KeyVarStr, ACaption: string): Boolean;
+var
+  InitialCall: Boolean;
+begin
+  InitialCall := False;
+  if uOrderSet = nil then
+  begin
+    uOrderSet := TfrmOMSet.Create(AnOwner);
+    uOrderSet.SetEventDelay(AnEvent);
+    uOrderSet.RefNum := ARefNum;
+    InitialCall := True;
+  end;
+  if InitialCall then with uOrderSet do
+  begin
+    if Length(ACaption) > 0 then Caption := ACaption;
+    SetBounds(frmFrame.Left, frmFrame.Top + frmFrame.Height - Height, Width, Height);
+    SetFormPosition(uOrderSet);
+    Show;
+  end;
+  uOrderSet.InsertList(AList, AnOwner, ARefNum, KeyVarStr, AnEvent.EventType);
+  Application.ProcessMessages;
+  Result := uOrderSet <> nil;
+end;
+
+function ActiveOrdering: Boolean;
+begin
+  if (uOrderDialog = nil) and (uOrderMenu = nil) and (uOrderSet = nil) and
+     (uOrderAction = nil) and (uOrderHTML = nil)
+    then Result := False
+    else Result := True;
+end;
+
+function CloseOrdering: Boolean;
+begin
+  Result := False;
+  { if an order set is being processed, see if want to interupt }
+  if uOrderSet <> nil then
+  begin
+    uOrderSet.Close;
+    Application.ProcessMessages;
+    if uOrderSet <> nil then Exit;
+  end;
+  { if another ordering dialog is showing, make sure it is closed first }
+  if uOrderDialog <> nil then
+  begin
+    uOrderDialog.Close;
+    Application.ProcessMessages;  // allow close to finish
+    if uOrderDialog <> nil then Exit;
+  end;
+  if uOrderHTML <> nil then
+  begin
+    uOrderHTML.Close;
+    Application.ProcessMessages;  // allow browser to close
+    Assert(uOrderHTML = nil);
+  end;
+  { close any open ordering menu }
+  if uOrderMenu <> nil then
+  begin
+    uOrderMenu.Close;
+    Application.ProcessMessages;  // allow menu to close
+    Assert(uOrderMenu = nil);
+  end;
+  if uOrderAction <> nil then
+  begin
+    uOrderAction.Close;
+    Application.ProcessMessages;
+    if uOrderAction <> nil then Exit;
+  end;
+  Result := True;
+end;
+
+function ReadyForNewOrder(AnEvent: TOrderDelayEvent): Boolean;
+var
+  x,tmpPtEvt: string;
+begin
+  Result := False;
+  { make sure a location and provider are selected before ordering }
+  if not AuthorizedUser then Exit;
+  if (not Patient.Inpatient) and (AnEvent.EventIFN > 0 ) then x := ''
+  else
+  begin
+    if not EncounterPresent then Exit;
+  end;
+  { then try to lock the patient (provider & encounter checked first to not leave lock) }
+  if not LockedForOrdering then Exit;
+  { make sure any current ordering process has completed, but don't drop patient lock }
+  uKeepLock := True;
+  if not CloseOrdering then Exit;
+  uKeepLock := False;
+  { get the delay event for this order (if applicable) }
+  if AnEvent.EventType in ['A','D','T','M','O'] then
+  begin
+    if (AnEvent.EventName = '') and (AnEvent.EventType <> 'D') then
+      Exit;
+    x := AnEvent.EventType + IntToStr(AnEvent.Specialty);
+    if (uLastConfirm <> x ) and (not XfInToOutNow) then
+    begin
+      uLastConfirm := x;
+      case AnEvent.EventType of
+      'A','M','O','T': x := AnEvent.EventName;
+      'D': x := 'Discharge';
+      end;
+      if isExistedEvent(Patient.DFN,IntToStr(AnEvent.EventIFN),tmpPtEvt) then
+        if PtEvtEmpty(tmpPtEvt)then
+          InfoBox(TX_DELAY + x + TX_DELAY1, TC_DELAY, MB_OK or MB_ICONWARNING);
+    end;
+  end
+  else uLastConfirm := '';
+  Result := True;
+end;
+
+function ReadyForNewOrder1(AnEvent: TOrderDelayEvent): Boolean;
+var
+  x: string;
+begin
+  Result := False;
+  { make sure a location and provider are selected before ordering }
+  if not AuthorizedUser then Exit;
+  if (not Patient.Inpatient) and (AnEvent.EventIFN > 0 ) then x := ''
+  else
+  begin
+    if not EncounterPresent then Exit;
+  end;
+  { then try to lock the patient (provider & encounter checked first to not leave lock) }
+  if not LockedForOrdering then Exit;
+  { make sure any current ordering process has completed, but don't drop patient lock }
+  uKeepLock := True;
+  if not CloseOrdering then Exit;
+  uKeepLock := False;
+  { get the delay event for this order (if applicable) }
+  if AnEvent.EventType in ['A','D','T','M','O'] then
+  begin
+    x := AnEvent.EventType + IntToStr(AnEvent.Specialty);
+    if (uLastConfirm <> x ) and (not XfInToOutNow) then
+    begin
+      uLastConfirm := x;
+      case AnEvent.EventType of
+      'A','M','T','O': x := AnEvent.EventName;
+      'D': x := AnEvent.EventName;  //'D': x := 'Discharge';
+      end;
+    end;
+  end
+  else uLastConfirm := '';
+  Result := True;
+end;
+
+procedure SetConfirmEventDelay;
+begin
+  uLastConfirm := '';
+end;
+
+procedure ChangeOrders(AList: TStringList; AnEvent: TOrderDelayEvent);
+var
+  i,txtOrder: Integer;
+  FieldsForEditRenewOrder: TOrderRenewFields;
+  param1, param2 : string;
+  OrSts: integer;
+  AnOrder: TOrder;
+begin
+  if uOrderDialog <> nil then
+  begin
+    uOrderDialog.Close;
+    Application.ProcessMessages;  // allow close to finish
+  end;
+
+  if not ActiveOrdering then      // allow change while entering new
+    if not ReadyForNewOrder(AnEvent) then Exit;
+  for i := 0 to AList.Count - 1 do
+  begin
+    //if it's for unreleased renewed orders, then go to fODChangeUnreleasedRenew and continue
+    txtOrder := 0;
+    FieldsForEditRenewOrder := TOrderRenewFields.Create;
+    LoadRenewFields(FieldsForEditRenewOrder, AList[i]);
+    if FieldsForEditRenewOrder.BaseType = OD_TEXTONLY then
+      txtOrder := 1;
+    if CanEditSuchRenewedOrder(AList[i], txtOrder) then
+    begin
+      param1 := '0';
+      if txtOrder = 0 then
+      begin
+        param1 := IntToStr(FieldsForEditRenewOrder.Refills);
+        param2 := FieldsForEditRenewOrder.Pickup;
+      end else if txtOrder = 1 then
+      begin
+        param1 := FieldsForEditRenewOrder.StartTime;
+        param2 := FieldsForEditRenewOrder.StopTime;
+      end;
+      UBAGlobals.SourceOrderID := AList[i]; //hds6265 added
+      ExecuteChangeRenewedOrder(AList[i], param1, param2, txtOrder);
+      AnOrder := TOrder.Create;
+      SaveChangesOnRenewOrder(AnOrder, AList[i], param1, param2, txtOrder);
+      AnOrder.ActionOn := AnOrder.ID + '=RN';
+      SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_ACT, Integer(AnOrder));
+      Application.ProcessMessages;
+      Continue;
+    end else FieldsForEditRenewOrder.Free;
+
+    OrSts := GetOrderStatus(AList[i]);
+    if ( AnsiCompareText(NameOfStatus(OrSts),'active') = 0 ) and (AnEvent.PtEventIFN > 0) then
+      EventDefaultOD := 1;
+    ActivateOrderDialog('X' + AList[i], AnEvent, Application, -1);  // X + ORIFN for change
+    if EventDefaultOD = 1 then
+      EventDefaultOD := 0;
+    Application.ProcessMessages;  // give uOrderDialog a chance to go back to nil
+    if BILLING_AWARE then //hds6265
+    begin              //hds6265
+      UBAGlobals.SourceOrderID := AList[i]; //hds6265
+      UBAGlobals.CopyTreatmentFactorsDxsToCopiedOrder(UBAGlobals.SourceOrderID,UBAGLobals.TargetOrderID); //hds6265
+    end;
+  end;
+  UnlockIfAble;
+end;
+
+function ChangeOrdersEvt(AnOrderID: string; AnEvent: TOrderDelayEvent): boolean;
+begin
+  Result := False;
+  if uOrderDialog <> nil then
+  begin
+    uOrderDialog.Close;
+    Application.ProcessMessages;
+  end;
+  if not ActiveOrdering then
+    if not ReadyForNewOrder(AnEvent) then Exit;
+  Result := ActivateOrderDialog('X' + AnOrderID, AnEvent, Application, -1);
+  Application.ProcessMessages;
+  UnlockIfAble;
+end;
+
+function CopyOrders(AList: TStringList; AnEvent: TOrderDelayEvent; var DoesEventOccur: boolean; ANeedVerify: boolean = True): boolean;
+var
+  i: Integer;
+  xx: string;
+  IsIMOOD,ForIVAlso: boolean;
+begin
+  Result := False;
+  if not ReadyForNewOrder(AnEvent) then Exit;              // no copy while entering new
+  for i := 0 to AList.Count - 1 do
+     begin
+       if (not DoesEventOccur) and (AnEvent.PtEventIFN>0) and IsCompletedPtEvt(AnEvent.PtEventIFN) then
+          begin
+            DoesEventOccur := True;
+            AnEvent.EventType := #0;
+            AnEvent.TheParent := TParentEvent.Create;
+            AnEvent.EventIFN  := 0;
+            AnEvent.EventName := '';
+            AnEvent.PtEventIFN := 0;
+          end;
+
+       if CheckOrderGroup(AList[i])=1 then IsUDGroup := True
+       else IsUDGroup := False;
+
+       if (AnEvent.EventIFN>0) and isOnholdMedOrder(AList[i]) then
+          begin
+            xx := RetrieveOrderText(AList[i]);
+            if InfoBox(TX_ONHOLD+#13#13+xx, 'Warning', MB_YESNO or MB_ICONWARNING) = IDNO then
+              Continue;
+          end;
+
+       DEASig := GetDrugSchedule(AList[i]);
+       ForIVAlso := ForIVandUD(AList[i]);
+       IsIMOOD := IsIMOOrder(AList[i]);
+       if (IsUDGroup) and (ImmdCopyAct) and (not Patient.Inpatient) and (AnEvent.EventType = 'C') and (not IsIMOOD) and (not ForIVAlso) then
+            XfInToOutNow := True;
+
+       OrderSource := 'C';
+
+       if ActivateOrderDialog('C' + AList[i], AnEvent, Application, -1, ANeedVerify) then
+         Result := True;
+
+       Application.ProcessMessages;  // give uOrderDialog a chance to go back to nil
+       OrderSource := '';
+
+       if (not DoesEventOccur) and (AnEvent.PtEventIFN>0) and IsCompletedPtEvt(AnEvent.PtEventIFN) then
+         DoesEventOccur := True;
+
+       if IsUDGroup then IsUDGroup := False;
+       if XfInToOutNOw then XfInToOutNow := False;
+
+       if BILLING_AWARE then
+       begin
+          UBAGlobals.SourceOrderID := AList[i]; //BAPHII 1.3.2
+          UBAGlobals.CopyTreatmentFactorsDxsToCopiedOrder(UBAGlobals.SourceOrderID,UBAGLobals.TargetOrderID);
+       end;
+     end; //for
+
+  UnlockIfAble;
+end;
+
+function TransferOrders(AList: TStringList; AnEvent: TOrderDelayEvent; var DoesEventOccur: boolean; ANeedVerify: boolean = True): boolean;
+var
+  i, CountOfTfOrders: Integer;
+  xx: string;
+  //DoesEventOccur: boolean;
+  //OccuredEvtID: integer;
+  //OccuredEvtName: string;
+begin
+  //DoesEventOccur := False;
+  //OccuredEvtID := 0;
+  Result := False;
+  if not ReadyForNewOrder(AnEvent) then Exit;              // no xfer while entering new
+  CountOfTfOrders := AList.Count;
+  for i := 0 to CountOfTfOrders - 1 do
+  begin
+    if (not DoesEventOccur) and (AnEvent.PtEventIFN>0) and IsCompletedPtEvt(AnEvent.PtEventIFN) then
+    begin
+      DoesEventOccur := True;
+      //OccuredEvtID := AnEvent.PtEventIFN;
+      //OccuredEvtName := AnEvent.EventName;
+      AnEvent.EventType := #0;
+      AnEvent.TheParent := TParentEvent.Create;
+      AnEvent.EventIFN  := 0;
+      AnEvent.EventName := '';
+      AnEvent.PtEventIFN := 0;
+    end;
+    if i = CountOfTfOrders - 1 then
+    begin
+      if (AnEvent.EventIFN>0) and isOnholdMedOrder(AList[i]) then
+      begin
+        xx := RetrieveOrderText(AList[i]);
+        if InfoBox(TX_ONHOLD+#13#13+xx, 'Warning', MB_YESNO or MB_ICONWARNING) = IDNO then
+          Continue;
+      end;
+      OrderSource := 'X';
+      if ActivateOrderDialog('T' + AList[i], AnEvent, Application, -2, ANeedVerify) then
+        Result := True;
+    end  else
+    begin
+      if (AnEvent.EventIFN>0) and isOnholdMedOrder(AList[i]) then
+      begin
+        xx := RetrieveOrderText(AList[i]);
+        if InfoBox(TX_ONHOLD+#13#13+xx, 'Warning', MB_YESNO or MB_ICONWARNING) = IDNO then
+          Continue;
+      end;
+      OrderSource := 'X';
+      if ActivateOrderDialog('T' + AList[i], AnEvent, Application, -1, ANeedVerify) then
+        Result := True;
+    end;
+    Application.ProcessMessages;  // give uOrderDialog a chance to go back to nil
+    OrderSource := '';
+    if (not DoesEventOccur) and (AnEvent.PtEventIFN>0) and IsCompletedPtEvt(AnEvent.PtEventIFN) then
+      DoesEventOccur := True;
+
+   UBAGlobals.SourceOrderID := AList[i];
+   UBAGlobals.CopyTreatmentFactorsDxsToCopiedOrder(UBAGlobals.SourceOrderID, UBAGLobals.TargetOrderID);
+
+  end;
+  UnlockIfAble;
+
+end;
+
+procedure DestroyingOrderAction;
+begin
+  uOrderAction := nil;
+  if not ActiveOrdering then
+  begin
+    ClearOrderRecall;
+    UnlockIfAble;
+  end;
+end;
+
+procedure DestroyingOrderDialog;
+begin
+  uOrderDialog := nil;
+  if not ActiveOrdering then
+  begin
+    ClearOrderRecall;
+    UnlockIfAble;
+  end;
+end;
+
+procedure DestroyingOrderHTML;
+begin
+  uOrderHTML := nil;
+  if not ActiveOrdering then
+  begin
+    ClearOrderRecall;
+    UnlockIfAble;
+  end;
+end;
+
+procedure DestroyingOrderMenu;
+begin
+  uOrderMenu := nil;
+  if not ActiveOrdering then
+  begin
+    ClearOrderRecall;
+    UnlockIfAble;
+  end;
+end;
+
+procedure DestroyingOrderSet;
+begin
+  uOrderSet := nil;
+  uOrderSetTime := 0;
+  if not ActiveOrdering then
+  begin
+    ClearOrderRecall;
+    UnlockIfAble;
+  end;
+end;
+
+function OrderIsLocked(const AnOrderID, AnAction: string): Boolean;
+var
+  ErrorMsg: string;
+begin
+  Result := True;
+  if (AnAction = OA_COPY) then
+    Exit;
+  if ((AnAction = OA_HOLD) or (AnAction = OA_UNHOLD) or (AnAction = OA_RENEW)  or
+      (AnAction = OA_DC) or (AnAction = OA_CHANGE)) and Changes.ExistForOrder(AnOrderID)
+      then Exit;
+  LockOrder(AnOrderID, ErrorMsg);
+  if Length(ErrorMsg) > 0 then
+  begin
+    Result := False;
+    InfoBox(ErrorMsg + CRLF + CRLF + TextForOrder(AnOrderID), TC_NOLOCK, MB_OK);
+  end;
+end;
+
+procedure PopLastMenu;
+{ always called from fOMSet }
+begin
+  if uOrderMenu <> nil then uOrderMenu.cmdDoneClick(uOrderSet);
+end;
+
+procedure QuickOrderSave;
+begin
+  // would be better to prompt for dialog
+  if uOrderDialog = nil then
+  begin
+    InfoBox(TX_NO_SAVE_QO, TC_NO_SAVE_QO, MB_OK);
+    Exit;
+  end;
+  with uOrderDialog do
+  begin
+    if not AllowQuickOrder then
+    begin
+      InfoBox(TX_NO_QUICK, TC_NO_QUICK, MB_OK);
+      Exit;
+    end;
+    if Responses.OrderContainsObjects then
+    begin
+      InfoBox(TX_CANT_SAVE_QO, TC_NO_QUICK, MB_ICONERROR or MB_OK);
+      Exit;
+    end;
+    SaveAsQuickOrder(Responses);
+  end;
+end;
+
+procedure QuickOrderListEdit;
+begin
+  // would be better to prompt for dialog
+  if uOrderDialog = nil then
+  begin
+    InfoBox(TX_NO_EDIT_QO, TC_NO_EDIT_QO, MB_OK);
+    Exit;
+  end;
+  with uOrderDialog do
+  begin
+    if not AllowQuickOrder then
+    begin
+      InfoBox(TX_NO_QUICK, TC_NO_QUICK, MB_OK);
+      Exit;
+    end;
+    EditCommonList(DisplayGroup);
+  end;
+end;
+
+function RefNumFor(AnOwner: TComponent): Integer;
+begin
+  if (uOrderDialog <> nil) and (uOrderDialog.Owner = AnOwner)
+    then Result := uOrderDialog.RefNum
+  else if (uOrderMenu <> nil) and (uOrderMenu.Owner = AnOwner)
+    then Result := uOrderMenu.RefNum
+  else if (uOrderHTML <> nil) and (uOrderHTML.Owner = AnOwner)
+    then Result := uOrderHTML.RefNum
+  else if (uOrderSet <> nil) and (uOrderSet.Owner = AnOwner)
+    then Result := uOrderSet.RefNum
+  else Result := -1;
+end;
+
+procedure PrintOrdersOnSignReleaseMult(OrderList, ClinicLst, WardLst: TStringList; Nature: Char; EncLoc, WardLoc: integer;
+EncLocName, WardLocName: string);
+var
+i,j: integer;
+tempOrder: string;
+tempOrderList: TStringList;
+begin
+  tempOrderList := TStringList.Create;
+  if (ClinicLst <> nil) and (ClinicLst.Count > 0) then
+    begin
+      for i := 0 to ClinicLst.Count - 1 do
+        begin
+          tempOrder := ClinicLst.Strings[i];
+          for j := 0 to OrderList.Count - 1 do
+            if Piece(OrderList.Strings[j], U,1) = tempOrder then tempOrderList.Add(OrderList.Strings[j]);
+        end;
+      if tempOrderList.Count > 0 then PrintOrdersOnSignRelease(tempOrderList, Nature, EncLoc, EncLocName);
+    end;
+  if (WardLst <> nil) and (WardLst.Count > 0) then
+    begin
+      if tempOrderList.Count > 0 then
+        begin
+          tempOrderList.Free;
+          tempOrderList := TStringList.Create;
+        end;
+      for i := 0 to WardLst.Count - 1 do
+        begin
+          tempOrder := WardLst.Strings[i];
+          for j := 0 to OrderList.Count - 1 do
+            if Piece(OrderList.Strings[j], U,1) = tempOrder then tempOrderList.Add(OrderList.Strings[j]);
+        end;
+      if tempOrderList.Count > 0 then PrintOrdersOnSignRelease(tempOrderList, Nature, WardLoc, WardLocName);
+    end;
+    tempOrderList.Free;
+end;
+
+procedure PrintOrdersOnSignRelease(OrderList: TStringList; Nature: Char; PrintLoc : Integer =0; PrintName: string = '');
+const
+  TX_NEW_LOC1   = 'The patient''s location has changed to ';
+  TX_NEW_LOC2   = '.' + CRLF + 'Should the orders be printed using the new location?';
+  TC_NEW_LOC    = 'New Patient Location';
+  TX_SIGN_LOC   = 'No location was selected.  Orders could not be printed!';
+  TC_REQ_LOC    = 'Orders Not Printed';
+  TX_LOC_PRINT  = 'The selected location will be used to determine where orders are printed.';
+var
+  ALocation: Integer;
+  AName, ASvc, DeviceInfo: string;
+  PrintIt: Boolean;
+begin
+  if PrintLoc = 0 then
+    begin
+      CurrentLocationForPatient(Patient.DFN, ALocation, AName, ASvc);
+      if (ALocation > 0) and (ALocation <> Encounter.Location) then
+        begin
+          if InfoBox(TX_NEW_LOC1 + AName + TX_NEW_LOC2, TC_NEW_LOC, MB_YESNO) = IDYES
+          then Encounter.Location := ALocation;
+        end;
+    end;
+  //else
+  //Encounter.Location := PrintLoc;
+  if PrintLoc = 0
+    then PrintLoc := CommonLocationForOrders(OrderList);
+  if (PrintLoc = 0) and (Encounter.Location > 0) then PrintLoc := Encounter.Location;
+  
+  if PrintLoc = 0 then                      // location required for DEVINFO
+  begin
+    LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+    if ALocation > 0 then
+      begin
+        PrintLoc := ALocation;
+        Encounter.Location := ALocation;
+      end;
+  end;
+  if printLoc = 0 then frmFrame.DisplayEncounterText;
+  if PrintLoc <> 0 then
+  begin
+    SetupOrdersPrint(OrderList, DeviceInfo, Nature, False, PrintIt, PrintName, PrintLoc);
+    if PrintIt then
+      PrintOrdersOnReview(OrderList, DeviceInfo, PrintLoc)
+    else
+      PrintServiceCopies(OrderList, PrintLoc);
+  end
+  else InfoBox(TX_SIGN_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);
+ (*   Encounter.Location := PrintLoc;
+  if Encounter.Location = 0
+    then Encounter.Location := CommonLocationForOrders(OrderList);
+  if Encounter.Location = 0 then                      // location required for DEVINFO
+  begin
+    LookupLocation(ALocation, AName, LOC_ALL, TX_LOC_PRINT);
+    if ALocation > 0 then Encounter.Location := ALocation;
+  end;
+  if printLoc = 0 then frmFrame.DisplayEncounterText;
+  if Encounter.Location <> 0 then
+  begin
+    SetupOrdersPrint(OrderList, DeviceInfo, Nature, False, PrintIt, PrintName);
+    if PrintIt then
+      PrintOrdersOnReview(OrderList, DeviceInfo)
+    else
+      PrintServiceCopies(OrderList);
+  end
+  else InfoBox(TX_SIGN_LOC, TC_REQ_LOC, MB_OK or MB_ICONWARNING);  *)
+end;
+
+procedure SetFontSize( FontSize: integer);
+begin
+  if uOrderDialog <> nil then
+    uOrderDialog.SetFontSize( FontSize);
+  if uOrderMenu <> nil then
+    uOrderMenu.ResizeFont;
+end;
+
+procedure NextMove(var NMRec: TNextMoveRec; LastIndex: Integer; NewIndex: Integer);
+begin
+   if LastIndex = 0 then
+      LastIndex  := NewIndex;
+   if (LastIndex - NewIndex) <= 0 then
+       NMRec.NextStep := STEP_FORWARD
+   else
+       NMRec.NextStep := STEP_BACK;
+   NMRec.LastIndex := NewIndex;
+end;
+
+(*function GetQOAltOI: integer;
+begin
+  Result := QOAltOI.OI;
+end; *)
+
+function IsIMODialog(DlgID: integer): boolean; //IMO
+var
+  IsInptDlg, IsIMOLocation: boolean;
+  Td: TFMDateTime;
+begin
+  result := False;
+  IsInptDlg := False;
+  Td := FMToday;
+  if ( (DlgID = MedsInDlgIen) or (DlgID = MedsIVDlgIen) or (IsInptQO(dlgId)) or (IsIVQO(dlgId))) then IsInptDlg := TRUE;
+  IsIMOLocation := IsValidIMOLoc(Encounter.Location,Patient.DFN);
+  if (IsInptDlg or IsInptQO(DlgID)) and (not Patient.Inpatient) and IsIMOLocation and (Encounter.DateTime > Td) then
+    result := True;
+end;
+
+function AllowActionOnIMO(AnEvtTyp: char): boolean;
+var
+  Td: TFMDateTime;
+begin
+  Result := False;
+  if (Patient.Inpatient) then
+  begin
+    Td := FMToday;
+    if IsValidIMOLoc(Encounter.Location,Patient.DFN) and (Encounter.DateTime > Td) then
+      Result := True;
+  end
+  else
+  begin
+    Td := FMToday;
+    if IsValidIMOLoc(Encounter.Location,Patient.DFN) and (Encounter.DateTime > Td) then
+      Result := True
+    else if AnEvtTyp in ['A','T'] then
+      Result := True;
+  end;
+end;
+
+function IMOActionValidation(AnId: string; var IsIMOOD: boolean; var x: string; AnEventType: char): boolean;
+var
+  actName: string;
+begin
+  // jd imo change
+  Result := True;
+  if CharAt(AnID, 1) in ['X','C'] then  // transfer IMO order doesn't need check
+  begin
+    IsIMOOD := IsIMOOrder(Copy(AnID, 2, Length(AnID)));
+    If IsIMOOD then
+    begin
+      if (not AllowActionOnIMO(AnEventType)) then
+      begin
+        if CharAt(AnID,1) = 'X' then actName := 'change';
+        if CharAt(AnID,1) = 'C' then actName := 'copy';
+        x := 'You cannot ' + actName + ' the clinical medication order.';
+        x := RetrieveOrderText(Copy(AnID, 2, Length(AnID))) + #13#13#10 + x;
+        UnlockOrder(Copy(AnID, 2, Length(AnID)));
+        result := False;
+      end
+      else
+      begin
+        if patient.Inpatient then
+        begin
+          if CharAt(AnID,1) = 'X' then actName := 'changing';
+          if CharAt(AnID,1) = 'C' then actName := 'copying';
+          if MessageDlg(TX_IMO_WARNING1 + actName +  TX_IMO_WARNING2 + #13#13#10 + x, mtWarning,[mbOK,mbCancel],0) = mrCancel then
+          begin
+            UnlockOrder(Copy(AnID, 2, Length(AnID)));
+            result := False;
+          end;
+        end;
+      end;
+    end;
+  end;
+  if Piece(AnId,'^',1)='RENEW' then
+  begin
+    IsIMOOD := IsIMOOrder(Piece(AnID,'^',2));
+    If IsIMOOD then
+    begin
+      if (not AllowActionOnIMO(AnEventType)) then
+      begin
+        x := 'You cannot renew the clinical medication order.';
+        x := RetrieveOrderText(Piece(AnID,'^',2)) + #13#13#10 + x;
+        UnlockOrder(Piece(AnID,'^',2));
+        result := False;
+      end
+      else
+      begin
+        if Patient.Inpatient then
+        begin
+          if MessageDlg(TX_IMO_WARNING1 + 'renewing' + TX_IMO_WARNING2, mtWarning,[mbOK,mbCancel],0) = mrCancel then
+          begin
+            UnlockOrder(Copy(AnID, 2, Length(AnID)));
+            result := False;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+initialization
+  uPatientLocked := False;
+  uKeepLock      := False;
+  uLastConfirm   := '';
+  uOrderSetTime  := 0;
+  uNewMedDialog  := 0;
+  uOrderAction   := nil;
+  uOrderDialog   := nil;
+  uOrderHTML     := nil;
+  uOrderMenu     := nil;
+  uOrderSet      := nil;
+  NSSchedule     := False;
+  OriginalMedsOutHeight   := 0;
+  OriginalMedsInHeight    := 0;
+  OriginalNonVAMedsHeight := 0;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/SizeListColumns.txt
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/SizeListColumns.txt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/SizeListColumns.txt	(revision 1676)
@@ -0,0 +1,4 @@
+frmMeds.hdrMedsIn=42,320,80,80,80
+frmMeds.hdrMedsNonVA=42,320,80,80
+frmMeds.hdrMedsOut=42,320,80,80,80,40
+frmOrders.hdrOrders=0,62,375,124,124,34,16,16,16,25
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fFindingTemplates.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fFindingTemplates.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fFindingTemplates.dfm	(revision 1676)
@@ -0,0 +1,67 @@
+object frmFindingTemplates: TfrmFindingTemplates
+  Left = 0
+  Top = 0
+  Cursor = crAppStart
+  BorderIcons = []
+  Caption = 'Finding Template'
+  ClientHeight = 127
+  ClientWidth = 229
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -16
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 19
+  object lblFind: TLabel
+    Left = 0
+    Top = 50
+    Width = 229
+    Height = 23
+    Align = alTop
+    Alignment = taCenter
+    Caption = 'Finding Template'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -19
+    Font.Name = 'Tahoma'
+    Font.Style = []
+    ParentFont = False
+    ExplicitWidth = 146
+  end
+  object Label2: TLabel
+    Left = 0
+    Top = 73
+    Width = 229
+    Height = 19
+    Align = alTop
+    Alignment = taCenter
+    Caption = '(This may take some time)'
+    ExplicitWidth = 190
+  end
+  object animSearch: TAnimate
+    Left = 0
+    Top = 0
+    Width = 229
+    Height = 50
+    Align = alTop
+    CommonAVI = aviFindFolder
+    StopFrame = 29
+  end
+  object btnCancel: TButton
+    Left = 80
+    Top = 98
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    Default = True
+    TabOrder = 1
+    OnClick = btnCancelClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fFindingTemplates.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fFindingTemplates.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fFindingTemplates.pas	(revision 1676)
@@ -0,0 +1,161 @@
+unit fFindingTemplates;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ComCtrls, DateUtils;
+
+type
+  TfrmFindingTemplates = class(TForm)
+    animSearch: TAnimate;
+    lblFind: TLabel;
+    Label2: TLabel;
+    btnCancel: TButton;
+    procedure FormShow(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+  private
+    FCanceled: boolean;
+    FSearchString: string;
+    FStarted: boolean;
+    FTree: TTreeView;
+    FStartNode: TTreeNode;
+    FCurrentNode :TTreeNode;
+    FIgnoreCase: boolean;
+    FWholeWords: boolean;
+    FFoundNode: TTreeNode;
+    FIsNext: boolean;
+    { Private declarations }
+    procedure Find;
+  public
+  end;
+
+function FindTemplate(SearchString: string; Tree: TTreeView; OwningForm: TForm;
+                      StartNode: TTreeNode; IsNext, IgnoreCase, WholeWords: boolean): TTreeNode;
+
+implementation
+
+uses uTemplates, VAUtils, ORNet;
+
+{$R *.dfm}
+
+const
+ // search for 1 second before showing dialog - note some loading may have already
+ // taken place before this call.
+  DELAY_TIME = 1000;
+  MESSAGE_TIME = 0;
+
+function FindTemplate(SearchString: string; Tree: TTreeView; OwningForm: TForm;
+                      StartNode: TTreeNode; IsNext, IgnoreCase, WholeWords: boolean): TTreeNode;
+var
+  frmFindingTemplates: TfrmFindingTemplates;
+  msg: string;
+begin
+  Result := nil;
+  if (SearchString = '') or (not assigned(Tree)) then exit;
+  frmFindingTemplates := TfrmFindingTemplates.Create(OwningForm);
+  try
+    with frmFindingTemplates do
+    begin
+      FSearchString := SearchString;
+      FTree := Tree;
+      FStartNode := StartNode;
+      FIgnoreCase := IgnoreCase;
+      FWholeWords := WholeWords;
+      FIsNext := IsNext;
+      if IsNext then
+        lblFind.Caption := 'Finding Next Template';
+      Find;
+      if assigned(FFoundNode) then
+      begin
+        Result := FFoundNode;
+      end
+      else
+      begin
+        if FCanceled then
+          msg := 'Find Canceled.'
+        else
+          msg := 'Text not Found.';
+        ShowMsg('Search Completed.  ' + msg,'Find Template Failed', smiError);
+      end;
+    end;
+  finally
+    frmFindingTemplates.Free;
+  end;
+end;
+
+procedure TfrmFindingTemplates.btnCancelClick(Sender: TObject);
+begin
+  FCanceled := True;
+  btnCancel.Enabled := False;
+end;
+
+procedure TfrmFindingTemplates.Find;
+var
+  Found : boolean;
+  Text: String;
+  WindowList: Pointer;
+  NeedToShow: boolean;
+  StartTime: TDateTime;
+begin
+  WindowList := nil;
+  NeedToShow := True;
+  StartTime := Now;
+  try
+    if(FIgnoreCase) then
+      FSearchString := UpperCase(FSearchString);
+    FCurrentNode := FStartNode;
+    Found := False;
+    if FIsNext and assigned(FCurrentNode) then
+    begin
+      FCurrentNode.Expand(False);
+      FCurrentNode := FCurrentNode.GetNext;
+    end;
+    while (not FCanceled) and (assigned(FCurrentNode) and (not Found)) do
+    begin
+      Application.ProcessMessages;
+      if not FCanceled then
+      begin
+        Text := FCurrentNode.Text;
+        if(FIgnoreCase) then
+          Text := UpperCase(Text);
+        Found := SearchMatch(FSearchString, Text, FWholeWords);
+        if(not Found) then
+        begin
+          FCurrentNode.Expand(False);
+          FCurrentNode := FCurrentNode.GetNext;
+        end;
+        if (not Found) and assigned(FCurrentNode) and NeedToShow then
+        begin
+          if MilliSecondsBetween(Now, StartTime) > DELAY_TIME then
+          begin
+            WindowList := DisableTaskWindows(0);
+            AppStartedCursorForm := Self;
+            Show;
+            NeedToShow := False;
+          end;
+        end;
+      end;
+    end;
+    if Found then
+      FFoundNode := FCurrentNode;
+  finally
+    if not NeedToShow then
+    begin
+      AppStartedCursorForm := nil;
+      EnableTaskWindows(WindowList);
+      Hide;
+    end;
+  end;
+end;
+
+procedure TfrmFindingTemplates.FormShow(Sender: TObject);
+begin
+  if not FStarted then
+  begin
+    FStarted := True;
+    animSearch.Active := True;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateAutoGen.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateAutoGen.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateAutoGen.dfm	(revision 1676)
@@ -0,0 +1,152 @@
+inherited frmTemplateAutoGen: TfrmTemplateAutoGen
+  Left = 361
+  Top = 230
+  ActiveControl = rgSource
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Generate Template'
+  ClientHeight = 213
+  ClientWidth = 415
+  Position = poScreenCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblTop: TMemo [0]
+    Left = 256
+    Top = 8
+    Width = 147
+    Height = 65
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Template generation creates a '
+      'new template, automatically '
+      'copying the template'#39's '
+      'boilerplate from an existing '
+      'source.')
+    TabOrder = 5
+  end
+  object lblSelect: TStaticText [1]
+    Left = 0
+    Top = 0
+    Width = 241
+    Height = 213
+    Align = alLeft
+    Alignment = taCenter
+    AutoSize = False
+    Caption = 'Select Source of Template Generation ...'
+    TabOrder = 6
+  end
+  object rgSource: TKeyClickRadioGroup [2]
+    Left = 256
+    Top = 88
+    Width = 153
+    Height = 81
+    Caption = ' Template Generate Source '
+    Items.Strings = (
+      '&Boilerplated Note Title'
+      '&Patient Data (Object)')
+    TabOrder = 2
+    TabStop = True
+    OnClick = rgSourceClick
+  end
+  object cbxObjects: TORComboBox [3]
+    Left = 0
+    Top = 0
+    Width = 249
+    Height = 213
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Patient Data'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '1'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    Visible = False
+    OnDblClick = cbxObjectsDblClick
+    CharsNeedMatch = 1
+  end
+  object btnOK: TButton [4]
+    Left = 257
+    Top = 190
+    Width = 75
+    Height = 21
+    Caption = '&OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 3
+  end
+  object btnCancel: TButton [5]
+    Left = 337
+    Top = 190
+    Width = 75
+    Height = 21
+    Cancel = True
+    Caption = '&Cancel'
+    ModalResult = 2
+    TabOrder = 4
+  end
+  object cbxTitles: TORComboBox [6]
+    Left = 0
+    Top = 0
+    Width = 249
+    Height = 213
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Choose Existing Template'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    Visible = False
+    OnDblClick = cbxTitlesDblClick
+    OnNeedData = cbxTitlesNeedData
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblTop'
+        'Status = stsDefault')
+      (
+        'Component = lblSelect'
+        'Status = stsDefault')
+      (
+        'Component = rgSource'
+        'Status = stsDefault')
+      (
+        'Component = cbxObjects'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = cbxTitles'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateAutoGen'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateAutoGen.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateAutoGen.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateAutoGen.pas	(revision 1676)
@@ -0,0 +1,154 @@
+unit fTemplateAutoGen;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmTemplateAutoGen = class(TfrmBase508Form)
+    rgSource: TKeyClickRadioGroup;
+    cbxObjects: TORComboBox;
+    btnOK: TButton;
+    btnCancel: TButton;
+    lblTop: TMemo;
+    cbxTitles: TORComboBox;
+    lblSelect: TStaticText;
+    procedure rgSourceClick(Sender: TObject);
+    procedure cbxTitlesNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbxTitlesDblClick(Sender: TObject);
+    procedure cbxObjectsDblClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    FTitlesDone: boolean;
+    FObjectsDone: boolean;
+  public
+    { Public declarations }
+  end;
+
+procedure GetAutoGenText(var AName, AText: string; InList: TStringList);
+
+implementation
+
+uses dShared, rTemplates, uTemplates;
+
+{$R *.DFM}
+
+var
+  PersObjects: TStringList;
+
+const
+  idxTitle = 0;
+  idxObject = 1;
+
+procedure GetAutoGenText(var AName, AText: string; InList: TStringList);
+var
+  frmTemplateAutoGen: TfrmTemplateAutoGen;
+
+begin
+  AName := '';
+  AText := '';
+  PersObjects := InList;
+  frmTemplateAutoGen := TfrmTemplateAutoGen.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmTemplateAutoGen);
+    with frmTemplateAutoGen do
+    begin
+      ShowModal;
+      if(ModalResult = mrOK) then
+      begin
+        if(rgSource.ItemIndex = idxTitle) then
+        begin
+          if(cbxTitles.ItemID <> '') then
+          begin
+            AName := MixedCase(cbxTitles.DisplayText[cbxTitles.ItemIndex]);
+            AText := GetTitleBoilerplate(cbxTitles.ItemID);
+          end;
+        end
+        else
+        if(rgSource.ItemIndex = idxObject) then
+        begin
+          if(cbxObjects.Text <> '') then
+          begin
+            AName := cbxObjects.Text;
+            AText := '|'+Piece(cbxObjects.Items[cbxObjects.ItemIndex],U,3)+'|'
+          end;
+        end;
+      end;
+    end;
+  finally
+    frmTemplateAutoGen.Free;
+  end;
+end;
+
+procedure TfrmTemplateAutoGen.rgSourceClick(Sender: TObject);
+var
+  idx,i: integer;
+  DoIt: boolean;
+
+begin
+  idx := rgSource.ItemIndex;
+  rgSource.TabStop := (idx < 0);
+  if(idx < 0) then exit;
+  if(idx = idxTitle) then
+  begin
+    cbxTitles.Visible := TRUE;
+    cbxObjects.Visible := FALSE;
+    if(not FTitlesDone) then
+    begin
+      cbxTitles.InitLongList('');
+      FTitlesDone := TRUE
+    end;
+    cbxTitles.SetFocus;
+  end
+  else
+  if(idx = idxObject) then
+  begin
+    cbxObjects.Visible := TRUE;
+    cbxTitles.Visible := FALSE;
+    if(not FObjectsDone) then
+    begin
+      DoIt := TRUE;                                        //10/31/01 S Monson-- Added
+      if (UserTemplateAccessLevel <> taEditor) then        //UserTemplateAccessLevel check and
+        if PersObjects.Count > 0 then                      //PersObjects modification of the list
+          begin                                            //in response to NOIS HUN-0701-22052
+          DoIt := FALSE;
+          for i := 0 to dmodShared.TIUObjects.Count-1 do
+            if PersObjects.IndexOf(Piece(dmodShared.TIUObjects[i],U,2)) >= 0 then
+              cbxObjects.Items.Add(dmodShared.TIUObjects[i]);
+          end;
+      if DoIt then
+        FastAssign(dmodShared.TIUObjects, cbxObjects.Items);
+      FObjectsDone := TRUE;
+    end;
+    cbxObjects.SetFocus;
+  end;
+end;
+
+procedure TfrmTemplateAutoGen.cbxTitlesNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cbxTitles.ForDataUse(SubSetOfBoilerplatedTitles(StartFrom, Direction));
+end;
+
+procedure TfrmTemplateAutoGen.cbxTitlesDblClick(Sender: TObject);
+begin
+  if(cbxTitles.ItemIndex >= 0) then
+    ModalResult := mrOK;
+end;
+
+procedure TfrmTemplateAutoGen.cbxObjectsDblClick(Sender: TObject);
+begin
+  if(cbxObjects.ItemIndex >= 0) then
+    ModalResult := mrOK;
+end;
+
+procedure TfrmTemplateAutoGen.FormShow(Sender: TObject);
+begin
+  //pre-select the first radio item
+  rgSource.ItemIndex := 0;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateDialog.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateDialog.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateDialog.dfm	(revision 1676)
@@ -0,0 +1,128 @@
+inherited frmTemplateDialog: TfrmTemplateDialog
+  Left = 268
+  Top = 155
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Text Dialog'
+  ClientHeight = 413
+  ClientWidth = 632
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnPaint = FormPaint
+  OnShow = FormShow
+  ExplicitWidth = 640
+  ExplicitHeight = 440
+  PixelsPerInch = 96
+  TextHeight = 13
+  object sbMain: TScrollBox [0]
+    Left = 0
+    Top = 0
+    Width = 632
+    Height = 375
+    VertScrollBar.Tracking = True
+    Align = alClient
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 0
+  end
+  object pnlBottom: TScrollBox [1]
+    Left = 0
+    Top = 375
+    Width = 632
+    Height = 38
+    Align = alBottom
+    TabOrder = 1
+    object lblFootnote: TStaticText
+      Left = 196
+      Top = 7
+      Width = 134
+      Height = 17
+      Alignment = taCenter
+      Caption = '* Indicates a Required Field'
+      TabOrder = 5
+    end
+    object btnCancel: TButton
+      Left = 551
+      Top = 3
+      Width = 75
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 4
+    end
+    object btnOK: TButton
+      Left = 472
+      Top = 3
+      Width = 75
+      Height = 21
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 3
+      OnClick = btnOKClick
+    end
+    object btnAll: TButton
+      Left = 6
+      Top = 3
+      Width = 75
+      Height = 21
+      Caption = 'All'
+      TabOrder = 0
+      OnClick = btnAllClick
+    end
+    object btnNone: TButton
+      Left = 86
+      Top = 3
+      Width = 75
+      Height = 21
+      Caption = 'None'
+      TabOrder = 1
+      OnClick = btnNoneClick
+    end
+    object btnPreview: TButton
+      Left = 360
+      Top = 3
+      Width = 75
+      Height = 21
+      Caption = 'Preview'
+      TabOrder = 2
+      OnClick = btnPreviewClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = sbMain'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = lblFootnote'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnAll'
+        'Status = stsDefault')
+      (
+        'Component = btnNone'
+        'Status = stsDefault')
+      (
+        'Component = btnPreview'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateDialog'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateDialog.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateDialog.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateDialog.pas	(revision 1676)
@@ -0,0 +1,835 @@
+unit fTemplateDialog;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, ORFn, AppEvnts, uTemplates, fBase508Form, uConst,
+  VA508AccessibilityManager;
+
+type
+  TfrmTemplateDialog = class(TfrmBase508Form)
+    sbMain: TScrollBox;
+    pnlBottom: TScrollBox;
+    btnCancel: TButton;
+    btnOK: TButton;
+    btnAll: TButton;
+    btnNone: TButton;
+    lblFootnote: TStaticText;
+    btnPreview: TButton;
+    procedure btnAllClick(Sender: TObject);
+    procedure btnNoneClick(Sender: TObject);
+    procedure FormPaint(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure btnOKClick(Sender: TObject);
+    procedure btnPreviewClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormShow(Sender: TObject);
+  private
+    FFirstBuild: boolean;
+    SL: TStrings;
+    BuildIdx: TStringList;
+    Entries: TStringList;
+    NoTextID: TStringList;
+    Index: string;
+    OneOnly: boolean;
+    Count: integer;
+    RepaintBuild: boolean;
+    FirstIndent: integer;
+    FBuilding: boolean;
+    FOldHintEvent: TShowHintEvent;
+    FMaxPnlWidth: integer;
+    FTabPos: integer;
+    FCheck4Required: boolean;
+    FSilent: boolean;
+    procedure SizeFormToCancelBtn();
+    procedure ChkAll(Chk: boolean);
+    procedure BuildCB(CBidx: integer; var Y: integer; FirstTime: boolean);
+    procedure ItemChecked(Sender: TObject);
+    procedure BuildAllControls;
+    procedure AppShowHint(var HintStr: string; var CanShow: Boolean;
+                          var HintInfo: THintInfo);
+    procedure FieldChanged(Sender: TObject);
+    procedure EntryDestroyed(Sender: TObject);
+    function GetObjectID( Control: TControl): string;
+    function GetParentID( Control: TControl): string;
+    function FindObjectByID( id: string): TControl;
+    function IsAncestor( OldID: string; NewID: string): boolean;
+    procedure ParentCBEnter(Sender: TObject);
+    procedure ParentCBExit(Sender: TObject);
+    procedure UMScreenReaderInit(var Message: TMessage); message UM_MISC;
+    procedure InitScreenReaderSetup;
+  public
+    property Silent: boolean read FSilent write FSilent ;
+  published
+  end;
+
+// Returns True if Cancel button is pressed
+function DoTemplateDialog(SL: TStrings; const CaptionText: string; PreviewMode: boolean = FALSE): boolean;
+procedure CheckBoilerplate4Fields(SL: TStrings; const CaptionText: string = ''; PreviewMode: boolean = FALSE); overload;
+procedure CheckBoilerplate4Fields(var AText: string; const CaptionText: string = ''; PreviewMode: boolean = FALSE); overload;
+
+var
+  frmTemplateDialog: TfrmTemplateDialog;
+
+implementation
+
+uses dShared, uTemplateFields, fRptBox, uInit, rMisc, uDlgComponents,
+  VA508AccessibilityRouter, VAUtils;
+
+{$R *.DFM}
+
+const
+  Gap = 4;
+  IndentGap = 18;
+
+
+procedure GetText(SL: TStrings; IncludeEmbeddedFields: Boolean);
+var
+  i, p1, p2: integer;
+  Txt, tmp: string;
+  Save, Hidden: boolean;
+  TmpCtrl: TStringList;
+
+begin
+  Txt := SL.Text;
+  SL.Clear;
+  TmpCtrl := TStringList.Create;
+  try
+    for i := 0 to frmTemplateDialog.sbMain.ControlCount-1 do
+      with frmTemplateDialog.sbMain do
+      begin
+        tmp := IntToStr(Controls[i].Tag);
+        tmp := StringOfChar('0', 7-length(tmp)) + tmp;
+        TmpCtrl.AddObject(tmp, Controls[i]);
+      end;
+    TmpCtrl.Sort;
+    for i := 0 to TmpCtrl.Count-1 do
+    begin
+      Save := FALSE;
+      if(TmpCtrl.Objects[i] is TORCheckBox) and (TORCheckBox(TmpCtrl.Objects[i]).Checked) then
+        Save := TRUE
+      else
+      if(frmTemplateDialog.OneOnly and (TmpCtrl.Objects[i] is TPanel)) then
+        Save := TRUE;
+      if(Save) then
+      begin
+        tmp := Piece(frmTemplateDialog.Index,U,TControl(TmpCtrl.Objects[i]).Tag);
+        p1 := StrToInt(Piece(tmp,'~',1));
+        p2 := StrToInt(Piece(tmp,'~',2));
+        Hidden := (copy(Piece(tmp,'~',3),2,1)=BOOLCHAR[TRUE]);
+        SL.Text := SL.Text + ResolveTemplateFields(Copy(Txt,p1,p2), FALSE, Hidden, IncludeEmbeddedFields);
+      end;
+    end;
+  finally
+    TmpCtrl.Free;
+  end;
+end;
+
+// Returns True if Cancel button is pressed
+function DoTemplateDialog(SL: TStrings; const CaptionText: string; PreviewMode: boolean = FALSE): boolean;
+var
+  i, j, idx, Indent: integer;
+  DlgProps, Txt: string;
+  DlgIDCounts: TStringList;
+  DlgInt: TIntStruc;
+  CancelDlg: Boolean;
+  CancelMsg: String;
+
+
+  procedure IncDlgID(var id: string); //Appends an item count in the form of id.0, id.1, id.2, etc
+  var                                 //based on what is in the StringList for id.
+    k: integer;
+
+  begin
+    k := DlgIDCounts.IndexOf(id);
+
+    if (k >= 0) then
+      begin
+      DlgInt := TIntStruc(DlgIDCounts.Objects[k]);
+      DlgInt.x := DlgInt.x + 1;
+      id := id + '.' + InttoStr(DlgInt.x);
+      end
+    else
+      begin
+      DlgInt := TIntStruc.Create;
+      DlgInt.x := 0;
+      DlgIDCounts.AddObject(id, DlgInt);
+      id := id + '.0';
+      end;
+
+  end;
+
+  procedure CountDlgProps(var DlgID: string);  //Updates the item and parent item id's with the count
+  var                                          // value id.0, id.1, id.2, id.3, etc.  The input dialog
+    x: integer;                                // id is in the form 'a;b;c;d', where c is the item id
+    id, pid: string;                           // and d is the parent item id
+
+  begin
+    id  := piece(DlgID,';',3);
+    pid := piece(DlgID,';',4);
+
+    if length(pid) > 0 then
+      x := DlgIDCounts.IndexOf(pid)
+    else
+      x := -1;
+
+    if (x >= 0) then
+      begin
+      DlgInt := TIntStruc(DlgIDCounts.Objects[x]);
+      pid := pid + '.' + InttoStr(DlgInt.x);
+      end;
+
+    if length(id) > 0 then
+      IncDlgID(id);
+
+    SetPiece(DlgID,';',3,id);
+    SetPiece(DlgID,';',4,pid);
+  end;
+
+begin
+  Result := FALSE;
+  CancelDlg := FALSE;
+  SetTemplateDialogCanceled(FALSE);
+  frmTemplateDialog := TfrmTemplateDialog.Create(Application);
+  try
+    DlgIDCounts := TStringList.Create;
+    DlgIDCounts.Sorted := TRUE;
+    DlgIDCounts.Duplicates := dupError;
+    frmTemplateDialog.Caption := CaptionText;
+    AssignFieldIDs(SL);
+    frmTemplateDialog.SL := SL;
+    frmTemplateDialog.Index := '';
+    Txt := SL.Text;
+    frmTemplateDialog.OneOnly := (DelimCount(Txt, ObjMarker) = 1);
+    frmTemplateDialog.Count := 0;
+    idx := 1;
+    frmTemplateDialog.FirstIndent := 99999;
+    repeat
+      i := pos(ObjMarker, Txt);
+      if(i > 1) then
+      begin
+        j := pos(DlgPropMarker, Txt);
+        if(j > 0) then
+          begin
+          DlgProps := copy(Txt, j + DlgPropMarkerLen, (i - j - DlgPropMarkerLen));
+          CountDlgProps(DlgProps);
+          end
+        else
+          begin
+          DlgProps := '';
+          j := i;
+          end;
+        inc(frmTemplateDialog.Count);
+        frmTemplateDialog.Index := frmTemplateDialog.Index +
+                                   IntToStr(idx)+'~'+IntToStr(j-1)+'~'+DlgProps+U;
+        inc(idx,i+ObjMarkerLen-1);
+        Indent := StrToIntDef(Piece(DlgProps, ';', 5),0);
+        if(frmTemplateDialog.FirstIndent > Indent) then
+          frmTemplateDialog.FirstIndent := Indent;
+      end;
+      if(i > 0) then
+        delete(txt, 1, i + ObjMarkerLen - 1);
+    until (i = 0);
+    if(frmTemplateDialog.Count > 0) then
+    begin
+      if(frmTemplateDialog.OneOnly) then
+      begin
+        frmTemplateDialog.btnNone.Visible := FALSE;
+        frmTemplateDialog.btnAll.Visible := FALSE;
+      end;
+      frmTemplateDialog.BuildAllControls;
+      repeat                      
+         frmTemplateDialog.ShowModal;
+         if(frmTemplateDialog.ModalResult = mrOK) then
+           GetText(SL, TRUE)     {TRUE = Include embedded fields}
+         else
+          if (not PreviewMode) and (not frmTemplateDialog.Silent) and (not uInit.TimedOut) then
+            begin
+              CancelMsg := 'If you cancel, your changes will not be saved.  Are you sure you want to cancel?';
+              if (InfoBox(CancelMsg, 'Cancel Dialog Processing', MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then 
+                begin
+                  SL.Clear;
+                  Result := TRUE;
+                  CancelDlg := TRUE;
+                end
+              else
+                CancelDlg := FALSE;
+            end
+          else
+            begin
+              SL.Clear;
+              Result := TRUE;
+              CancelDlg := TRUE;
+            end;
+      until CancelDlg or (frmTemplateDialog.ModalResult = mrOK)
+    end
+    else
+      SL.Clear;
+  finally
+    //frmTemplateDialog.Free;    v22.11e RV
+    frmTemplateDialog.Release;
+    //frmTemplateDialog := nil;  access violation source?  removed 7/28/03 RV
+    for i := 0 to DlgIDCounts.Count-1 do begin
+      DlgIDCounts.Objects[i].Free;
+    end;
+    DlgIDCounts.Free;
+  end;
+
+  if Result then
+    SetTemplateDialogCanceled(TRUE)
+  else
+  begin
+    SetTemplateDialogCanceled(FALSE);
+    CheckBoilerplate4Fields(SL, CaptionText, PreviewMode);
+  end;
+  
+end;
+
+procedure CheckBoilerplate4Fields(SL: TStrings; const CaptionText: string = ''; PreviewMode: boolean = FALSE);
+begin
+  while(HasTemplateField(SL.Text)) do
+  begin
+    if (BoilerplateTemplateFieldsOK(SL.Text)) then
+    begin
+      SL[SL.Count-1] := SL[SL.Count-1] + DlgPropMarker + '00100;0;-1;;0' + ObjMarker;
+      DoTemplateDialog(SL, CaptionText, PreviewMode);
+    end
+    else
+      SL.Clear;
+  end;
+  StripScreenReaderCodes(SL);
+end;
+
+procedure CheckBoilerplate4Fields(var AText: string; const CaptionText: string = ''; PreviewMode: boolean = FALSE);
+var
+  tmp: TStringList;
+
+begin
+  tmp := TStringList.Create;
+  try
+    tmp.text := AText;
+    CheckBoilerplate4Fields(tmp, CaptionText, PreviewMode);
+    AText := tmp.text;
+  finally
+    tmp.free;
+  end;
+end;
+
+procedure TfrmTemplateDialog.ChkAll(Chk: boolean);
+var
+  i: integer;
+
+begin
+  for i := 0 to sbMain.ControlCount-1 do
+  begin
+    if(sbMain.Controls[i] is TORCheckBox) then
+      TORCheckBox(sbMain.Controls[i]).Checked := Chk;
+  end;
+end;
+
+procedure TfrmTemplateDialog.btnAllClick(Sender: TObject);
+begin
+  ChkAll(TRUE);
+end;
+
+procedure TfrmTemplateDialog.btnNoneClick(Sender: TObject);
+begin
+  ChkAll(FALSE);
+end;
+
+function TfrmTemplateDialog.GetObjectID( Control: TControl): string;
+var
+  idx, idx2: integer;
+begin
+  result := '';
+  if Assigned(Control) then
+  begin
+    idx := Control.Tag;
+    if(idx > 0) then
+    begin
+      idx2 := BuildIdx.IndexOfObject(TObject(idx));
+      if idx2 >= 0 then
+        result := BuildIdx[idx2]
+      else
+        result := Piece(Piece(Piece(Index, U, idx),'~',3), ';', 3);
+    end;
+  end;
+end;
+
+function TfrmTemplateDialog.GetParentID( Control: TControl): string;
+var
+  idx: integer;
+begin
+  result := '';
+  if Assigned(Control) then
+  begin
+    idx := Control.Tag;
+    if(idx > 0) then
+      result := Piece(Piece(Piece(Index, U, idx),'~',3), ';', 4);
+  end;
+end;
+
+function TfrmTemplateDialog.FindObjectByID( id: string): TControl;
+var
+  i: integer;
+  ObjID: string;
+begin
+  result := nil;
+  if ID <> '' then
+  begin
+    for i := 0 to sbMain.ControlCount-1 do
+    begin
+      ObjID := GetObjectID(sbMain.Controls[i]);
+      if(ObjID = ID) then
+      begin
+        result := sbMain.Controls[i];
+        break;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateDialog.InitScreenReaderSetup;
+var
+  ctrl: TWinControl;
+  list: TList;
+begin
+  if ScreenReaderSystemActive then
+  begin
+    list := TList.Create;
+    try
+      sbMain.GetTabOrderList(list);
+      if list.Count > 0 then
+      begin
+        ctrl := TWinControl(list[0]);
+        PostMessage(Handle, UM_MISC, WParam(ctrl), 0);
+      end;
+    finally
+      list.free;
+    end;
+  end;
+end;
+
+function TfrmTemplateDialog.IsAncestor( OldID: string; NewID: string): boolean;
+begin
+  if (OldID = '') or (NewID = '') then
+    result := False
+  else if OldID = NewID then
+    result := True
+  else
+    result := IsAncestor(OldID, GetParentID(FindObjectByID(NewID)));
+end;
+
+procedure TfrmTemplateDialog.BuildCB(CBidx: integer; var Y: integer; FirstTime: boolean);
+var
+  bGap, Indent, i, idx, p1, p2: integer;
+  EID, ID, PID, DlgProps, tmp, txt, tmpID: string;
+  pctrl, ctrl: TControl;
+  pnl: TPanel;
+  KillCtrl, doHint, dsp, noTextParent: boolean;
+  Entry: TTemplateDialogEntry;
+//  StringIn, StringOut: string;
+  cb: TCPRSDialogParentCheckBox;
+
+  procedure NextTabCtrl(ACtrl: TControl);
+  begin
+    if(ACtrl is TWinControl) then
+    begin
+      inc(FTabPos);
+      TWinControl(ACtrl).TabOrder := FTabPos;
+    end;
+  end;
+
+begin
+  tmp := Piece(Index, U, CBidx);
+  p1 := StrToInt(Piece(tmp,'~',1));
+  p2 := StrToInt(Piece(tmp,'~',2));
+  DlgProps := Piece(tmp,'~',3);
+  ID := Piece(DlgProps, ';', 3);
+  PID := Piece(DlgProps, ';', 4);
+
+  ctrl := nil;
+  pctrl := nil;
+  if(PID <> '') then
+    noTextParent := (NoTextID.IndexOf(PID) < 0)
+  else
+    noTextParent := TRUE;
+  if not FirstTime then
+    ctrl := FindObjectByID(ID);
+  if noTextParent and (PID <> '') then
+    pctrl := FindObjectByID(PID);
+  if(PID = '') then
+    KillCtrl := FALSE
+  else
+  begin
+    if(assigned(pctrl)) then
+    begin
+      if(not (pctrl is TORCheckBox)) or
+        (copy(DlgProps,3,1) = BOOLCHAR[TRUE]) then // show if parent is unchecked
+        KillCtrl := FALSE
+      else
+        KillCtrl := (not TORCheckBox(pctrl).Checked);
+    end
+    else
+      KillCtrl := noTextParent;
+  end;
+  if KillCtrl then
+  begin
+    if(assigned(ctrl)) then
+    begin
+      if(ctrl is TORCheckBox) and (assigned(TORCheckBox(ctrl).Associate)) then
+        TORCheckBox(ctrl).Associate.Hide;
+      idx := BuildIdx.IndexOfObject(TObject(ctrl.Tag));
+      if idx >= 0 then
+        BuildIdx.delete(idx);
+      ctrl.Free;
+    end;
+    exit;
+  end;
+  tmp := copy(SL.Text, p1, p2);
+  if(copy(tmp, length(tmp)-1, 2) = CRLF) then
+    delete(tmp, length(tmp)-1, 2);
+  bGap := StrToIntDef(copy(DlgProps,5,1),0);
+  while bGap > 0 do
+  begin
+    if(copy(tmp, 1, 2) = CRLF) then
+    begin
+      delete(tmp, 1, 2);
+      dec(bGap);
+    end
+    else
+      bGap := 0;
+  end;
+  if(tmp = NoTextMarker) then
+  begin
+    if(NoTextID.IndexOf(ID) < 0) then
+      NoTextID.Add(ID);
+    exit;
+  end;
+  if(not assigned(ctrl)) then
+  begin
+    dsp := (copy(DlgProps,1,1)=BOOLCHAR[TRUE]);
+    EID := 'DLG' + IntToStr(CBIdx);
+    idx := Entries.IndexOf(EID);
+    doHint := FALSE;
+    txt := tmp;
+    if(idx < 0) then
+    begin
+      if(copy(DlgProps,2,1)=BOOLCHAR[TRUE]) then // First Line Only
+      begin
+        i := pos(CRLF, tmp);
+        if(i > 0) then
+        begin
+          dec(i);
+          if i > 70 then
+          begin
+            i := 71;
+            while (i > 0) and (tmp[i] <> ' ') do dec(i);
+            if i = 0 then
+              i := 70
+            else
+              dec(i);
+          end;
+          doHint := TRUE;
+          tmp := copy(tmp, 1, i) + ' ...';
+        end;
+      end;
+      Entry := GetDialogEntry(sbMain, EID, tmp);
+      Entry.AutoDestroyOnPanelFree := TRUE;
+      Entry.OnDestroy := EntryDestroyed;
+      Entries.AddObject(EID, Entry);
+    end
+    else
+      Entry := TTemplateDialogEntry(Entries.Objects[idx]);
+
+    if(dsp or OneOnly) then
+      cb := nil
+    else
+      cb := TCPRSDialogParentCheckBox.Create(Self);
+
+    pnl := Entry.GetPanel(FMaxPnlWidth, sbMain, cb);
+    pnl.Show;
+    if(doHint and (not pnl.ShowHint)) then
+    begin
+      pnl.ShowHint := TRUE;
+      Entry.Obj := pnl;
+      Entry.Text := txt;
+      pnl.hint := Entry.GetText;
+      Entry.OnChange := FieldChanged;
+    end;
+    if not assigned(cb) then
+      ctrl := pnl
+    else
+    begin
+      ctrl := cb;
+      ctrl.Parent := sbMain;
+
+      TORCheckbox(ctrl).OnEnter := frmTemplateDialog.ParentCBEnter;
+      TORCheckbox(ctrl).OnExit := frmTemplateDialog.ParentCBExit;
+
+      TORCheckBox(ctrl).Height := TORCheckBox(ctrl).Height + 5;
+      TORCheckBox(ctrl).Width := 17;
+
+    {Insert next line when focus fixed}
+    //  ctrl.Width := IndentGap;
+    {Remove next line when focus fixed}
+      TORCheckBox(ctrl).AutoSize := false;
+      TORCheckBox(ctrl).Associate := pnl;
+      pnl.Tag := Integer(ctrl);
+      tmpID := copy(ID, 1, (pos('.', ID) - 1)); {copy the ID without the decimal place}
+//      if Templates.IndexOf(tmpID) > -1 then
+//        StringIn := 'Sub-Template: ' + TTemplate(Templates.Objects[Templates.IndexOf(tmpID)]).PrintName
+//      else
+//        StringIn := 'Sub-Template:';
+//      StringOut := StringReplace(StringIn, '&', '&&', [rfReplaceAll]);
+//      TORCheckBox(ctrl).Caption := StringOut;
+      UpdateColorsFor508Compliance(ctrl);
+
+    end;
+    ctrl.Tag := CBIdx;
+
+    Indent := StrToIntDef(Piece(DlgProps, ';', 5),0) - FirstIndent;
+    if dsp then inc(Indent);
+    ctrl.Left := Gap + (Indent * IndentGap);
+    //ctrl.Width := sbMain.ClientWidth - Gap - ctrl.Left - ScrollBarWidth;
+    if(ctrl is TORCheckBox) then
+      pnl.Left := ctrl.Left + IndentGap;
+
+    if(ctrl is TORCheckBox) then with TORCheckBox(ctrl) do
+    begin
+      GroupIndex := StrToIntDef(Piece(DlgProps, ';', 2),0);
+      if(GroupIndex <> 0) then
+        RadioStyle := TRUE;
+      OnClick := ItemChecked;
+      StringData := DlgProps;
+    end;
+    if BuildIdx.IndexOfObject(TObject(CBIdx)) < 0 then
+      BuildIdx.AddObject(Piece(Piece(Piece(Index, U, CBIdx),'~',3), ';', 3), TObject(CBIdx));
+  end;
+  ctrl.Top := Y;
+  NextTabCtrl(ctrl);
+  if(ctrl is TORCheckBox) then
+  begin
+    TORCheckBox(ctrl).Associate.Top := Y;
+    NextTabCtrl(TORCheckBox(ctrl).Associate);
+    inc(Y, TORCheckBox(ctrl).Associate.Height+1);
+  end
+  else
+    inc(Y, ctrl.Height+1);
+end;
+
+procedure TfrmTemplateDialog.ParentCBEnter(Sender: TObject);
+begin
+  (Sender as TORCheckbox).FocusOnBox := true;
+end;
+
+procedure TfrmTemplateDialog.ParentCBExit(Sender: TObject);
+begin
+  (Sender as TORCheckbox).FocusOnBox := false;
+
+end;
+
+procedure TfrmTemplateDialog.ItemChecked(Sender: TObject);
+begin
+  if(copy(TORCheckBox(Sender).StringData,4,1) = '1') then
+  begin
+    RepaintBuild := TRUE;
+    Invalidate;
+  end;
+end;
+
+procedure TfrmTemplateDialog.BuildAllControls;
+var
+  i, Y: integer;
+  FirstTime: boolean;
+
+begin
+  if FBuilding then exit;
+  FBuilding := TRUE;
+  try
+    FTabPos := 0;
+    FirstTime := (sbMain.ControlCount = 0);
+    NoTextID.Clear;
+    Y := Gap - sbMain.VertScrollBar.Position;
+    for i := 1 to Count do
+      BuildCB(i, Y, FirstTime);
+    if ScreenReaderSystemActive then
+    begin
+      amgrMain.RefreshComponents;
+      Application.ProcessMessages;
+    end;
+  finally
+    FBuilding := FALSE;
+  end;
+end;
+
+procedure TfrmTemplateDialog.FormPaint(Sender: TObject);
+begin
+  if RepaintBuild then
+  begin
+    RepaintBuild := FALSE;
+    BuildAllControls;
+    InitScreenReaderSetup;
+  end;
+end;
+
+procedure TfrmTemplateDialog.FormShow(Sender: TObject);
+begin
+  inherited;
+  if FFirstBuild then
+  begin
+    FFirstBuild := FALSE;
+    InitScreenReaderSetup;
+  end;
+end;
+
+procedure TfrmTemplateDialog.FormCreate(Sender: TObject);
+begin
+  FFirstBuild := TRUE;
+  BuildIdx := TStringList.Create;
+  Entries := TStringList.Create;
+  NoTextID := TStringList.Create;
+  FOldHintEvent := Application.OnShowHint;
+  Application.OnShowHint := AppShowHint;
+  ResizeAnchoredFormToFont(Self);
+  FMaxPnlWidth := FontWidthPixel(sbMain.Font.Handle) * MAX_ENTRY_WIDTH; //AGP change Template Dialog to wrap at 80 instead of 74
+  SetFormPosition(Self);
+  SizeFormToCancelBtn();
+end;
+
+procedure TfrmTemplateDialog.AppShowHint(var HintStr: string;
+  var CanShow: Boolean; var HintInfo: THintInfo);
+const
+  HistHintDelay = 1200000; // 20 minutes
+
+begin
+//  if(HintInfo.HintControl.Parent = sbMain) then
+    HintInfo.HideTimeout := HistHintDelay;
+  if(assigned(FOldHintEvent)) then
+    FOldHintEvent(HintStr, CanShow, HintInfo);
+end;
+
+procedure TfrmTemplateDialog.FormDestroy(Sender: TObject);
+begin
+  //Application.OnShowHint := FOldHintEvent;   v22.11f - RV - moved to OnClose
+  NoTextID.Free;
+  FreeEntries(Entries);
+  Entries.Free;
+  BuildIdx.Free;
+end;
+
+procedure TfrmTemplateDialog.FieldChanged(Sender: TObject);
+begin
+  with TTemplateDialogEntry(Sender) do
+    TPanel(Obj).hint := GetText;
+end;
+
+procedure TfrmTemplateDialog.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+var
+  Txt, tmp: string;
+  i, p1, p2: integer;
+  Save: boolean;
+
+begin
+  CanClose := TRUE;
+  if FCheck4Required then
+  begin
+    FCheck4Required := FALSE;
+    Txt := SL.Text;
+    for i := 0 to sbMain.ControlCount-1 do
+    begin
+      Save := FALSE;
+      if(sbMain.Controls[i] is TORCheckBox) and
+        (TORCheckBox(sbMain.Controls[i]).Checked) then
+        Save := TRUE
+      else
+      if(OneOnly and (sbMain.Controls[i] is TPanel)) then
+        Save := TRUE;
+      if(Save) then
+      begin
+        tmp := Piece(Index,U,sbMain.Controls[i].Tag);
+        p1 := StrToInt(Piece(tmp,'~',1));
+        p2 := StrToInt(Piece(tmp,'~',2));
+        if AreTemplateFieldsRequired(Copy(Txt,p1,p2)) then
+          CanClose := FALSE;
+      end;
+      if not CanClose then
+      begin
+        ShowMsg(MissingFieldsTxt);
+        break;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateDialog.btnOKClick(Sender: TObject);
+begin
+  FCheck4Required := TRUE;
+end;
+
+procedure TfrmTemplateDialog.btnPreviewClick(Sender: TObject);
+var
+  TmpSL: TStringList;
+
+begin
+  TmpSL := TStringList.Create;
+  try
+    FastAssign(SL, TmpSL);
+    GetText(TmpSL, FALSE);  {FALSE = Do not include embedded fields}
+    StripScreenReaderCodes(TmpSL);
+    ReportBox(TmpSL, 'Dialog Preview', FALSE);
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+procedure TfrmTemplateDialog.EntryDestroyed(Sender: TObject);
+var
+  idx: integer;
+
+begin
+  idx := Entries.IndexOf(TTemplateDialogEntry(Sender).ID);
+  if idx >= 0 then
+    Entries.delete(idx);
+end;
+
+procedure TfrmTemplateDialog.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Application.OnShowHint := FOldHintEvent;
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmTemplateDialog.SizeFormToCancelBtn;
+const
+  RIGHT_MARGIN = 12;
+var
+  minWidth : integer;
+begin
+  minWidth := btnCancel.Left + btnCancel.Width + RIGHT_MARGIN;
+  if minWidth > Self.Width then
+    Self.Width := minWidth;
+end;
+
+procedure TfrmTemplateDialog.UMScreenReaderInit(var Message: TMessage);
+var
+  ctrl: TWinControl;
+  item: TVA508AccessibilityItem;
+begin
+  ctrl := TWinControl(Message.WParam);
+  // Refresh the accessibility manager entry -
+  // fixes bug where first focusable check boxes weren't working correctly  
+  if ctrl is TCPRSDialogParentCheckBox then
+  begin
+    item := amgrMain.AccessData.FindItem(ctrl, FALSE);
+    if assigned(item) then
+      item.free;
+    amgrMain.AccessData.EnsureItemExists(ctrl);
+  end;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateEditor.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateEditor.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateEditor.dfm	(revision 1676)
@@ -0,0 +1,2016 @@
+inherited frmTemplateEditor: TfrmTemplateEditor
+  Left = 321
+  Top = 119
+  HelpContext = 10000
+  ActiveControl = tvPersonal
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Template Editor'
+  ClientHeight = 450
+  ClientWidth = 740
+  Position = poScreenCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  ExplicitWidth = 748
+  ExplicitHeight = 477
+  PixelsPerInch = 96
+  TextHeight = 13
+  object splMain: TSplitter [0]
+    Left = 0
+    Top = 239
+    Width = 740
+    Height = 3
+    Cursor = crVSplit
+    Align = alTop
+    AutoSnap = False
+    Beveled = True
+    MinSize = 40
+    OnMoved = splMainMoved
+  end
+  object splNotes: TSplitter [1]
+    Left = 0
+    Top = 377
+    Width = 740
+    Height = 3
+    Cursor = crVSplit
+    Align = alBottom
+    AutoSnap = False
+    Beveled = True
+    Visible = False
+    OnMoved = splBoilMoved
+    ExplicitTop = 371
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 423
+    Width = 740
+    Height = 27
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 4
+    ExplicitTop = 416
+    DesignSize = (
+      740
+      27)
+    object btnApply: TButton
+      Left = 664
+      Top = 4
+      Width = 75
+      Height = 22
+      Anchors = [akTop, akRight]
+      Caption = 'Apply'
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 5
+      OnClick = btnApplyClick
+    end
+    object btnCancel: TButton
+      Left = 584
+      Top = 4
+      Width = 75
+      Height = 22
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 4
+      OnClick = btnCancelClick
+    end
+    object btnOK: TButton
+      Left = 504
+      Top = 4
+      Width = 75
+      Height = 22
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 3
+      OnClick = btnOKClick
+    end
+    object cbEditShared: TCheckBox
+      Left = 0
+      Top = 6
+      Width = 129
+      Height = 17
+      Caption = 'E&dit Shared Templates'
+      TabOrder = 0
+      OnClick = cbEditSharedClick
+    end
+    object cbNotes: TCheckBox
+      Left = 259
+      Top = 6
+      Width = 128
+      Height = 17
+      Hint = 
+        'Keep notes about a template that can be seen from the templates ' +
+        'drawer'
+      Caption = 'Sh&ow Template Notes'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = cbNotesClick
+    end
+    object cbEditUser: TCheckBox
+      Left = 132
+      Top = 6
+      Width = 123
+      Height = 17
+      Caption = 'E&dit User'#39's Templates'
+      TabOrder = 1
+      Visible = False
+      OnClick = cbEditSharedClick
+    end
+  end
+  object pnlBoilerplate: TPanel [3]
+    Left = 0
+    Top = 284
+    Width = 740
+    Height = 93
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 2
+    OnCanResize = pnlBoilerplateCanResize
+    OnResize = pnlBoilerplateResize
+    object splBoil: TSplitter
+      Left = 0
+      Top = 14
+      Width = 740
+      Height = 3
+      Cursor = crVSplit
+      Align = alTop
+      AutoSnap = False
+      Beveled = True
+      Visible = False
+      OnMoved = splBoilMoved
+      ExplicitTop = 43
+    end
+    object reBoil: TRichEdit
+      Left = 0
+      Top = 17
+      Width = 740
+      Height = 30
+      Align = alClient
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = []
+      Constraints.MinHeight = 30
+      ParentFont = False
+      PlainText = True
+      PopupMenu = popBoilerplate
+      ScrollBars = ssBoth
+      TabOrder = 1
+      WantTabs = True
+      OnChange = reBoilChange
+      OnKeyDown = reBoilKeyDown
+      OnKeyPress = reBoilKeyPress
+      OnKeyUp = reBoilKeyUp
+      OnResizeRequest = reResizeRequest
+      OnSelectionChange = reBoilSelectionChange
+      ExplicitTop = 14
+    end
+    object pnlGroupBP: TPanel
+      Left = 0
+      Top = 47
+      Width = 740
+      Height = 46
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 2
+      Visible = False
+      object lblGroupBP: TLabel
+        Left = 0
+        Top = 0
+        Width = 740
+        Height = 13
+        Align = alTop
+        Caption = 'Group Boilerplate'
+        ExplicitWidth = 81
+      end
+      object lblGroupRow: TLabel
+        Left = 264
+        Top = 0
+        Width = 23
+        Height = 13
+        Caption = 'Line:'
+      end
+      object lblGroupCol: TLabel
+        Left = 336
+        Top = 0
+        Width = 38
+        Height = 13
+        Caption = 'Column:'
+      end
+      object reGroupBP: TRichEdit
+        Left = 0
+        Top = 16
+        Width = 740
+        Height = 30
+        Align = alClient
+        Color = clCream
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Constraints.MinHeight = 30
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popGroup
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 0
+        WantReturns = False
+        OnSelectionChange = reGroupBPSelectionChange
+      end
+      object pnlGroupBPGap: TPanel
+        Left = 0
+        Top = 13
+        Width = 740
+        Height = 3
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 1
+      end
+    end
+    object pnlBP: TPanel
+      Left = 0
+      Top = 0
+      Width = 740
+      Height = 14
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblBoilerplate: TLabel
+        Left = 0
+        Top = 0
+        Width = 96
+        Height = 13
+        Caption = 'Template &Boilerplate'
+        FocusControl = reBoil
+      end
+      object lblBoilRow: TLabel
+        Left = 264
+        Top = 0
+        Width = 23
+        Height = 13
+        Caption = 'Line:'
+      end
+      object lblBoilCol: TLabel
+        Left = 336
+        Top = 0
+        Width = 38
+        Height = 13
+        Caption = 'Column:'
+        Color = clBtnFace
+        ParentColor = False
+      end
+      object cbLongLines: TCheckBox
+        Left = 120
+        Top = -2
+        Width = 105
+        Height = 17
+        Caption = 'Allow Lon&g Lines'
+        TabOrder = 0
+        OnClick = cbLongLinesClick
+      end
+    end
+  end
+  object pnlTop: TPanel [4]
+    Left = 0
+    Top = 0
+    Width = 740
+    Height = 239
+    Align = alTop
+    BevelOuter = bvNone
+    Constraints.MinHeight = 223
+    TabOrder = 0
+    object splMiddle: TSplitter
+      Left = 297
+      Top = 24
+      Height = 215
+      Align = alRight
+      AutoSnap = False
+      Beveled = True
+    end
+    object Bevel1: TBevel
+      Left = 0
+      Top = 22
+      Width = 740
+      Height = 2
+      Align = alTop
+      Shape = bsSpacer
+    end
+    object pnlRightTop: TPanel
+      Left = 300
+      Top = 24
+      Width = 440
+      Height = 215
+      Align = alRight
+      BevelOuter = bvNone
+      TabOrder = 2
+      object splProperties: TSplitter
+        Left = 216
+        Top = 0
+        Height = 215
+        Align = alRight
+        AutoSnap = False
+        Beveled = True
+      end
+      object pnlCopyBtns: TPanel
+        Left = 0
+        Top = 0
+        Width = 27
+        Height = 215
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 0
+        DesignSize = (
+          27
+          215)
+        object lblCopy: TLabel
+          Left = -3
+          Top = 82
+          Width = 30
+          Height = 13
+          Alignment = taCenter
+          Anchors = [akLeft, akTop, akRight]
+          AutoSize = False
+          Caption = 'Copy'
+          Enabled = False
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          Layout = tlCenter
+        end
+        object sbCopyRight: TBitBtn
+          Left = 1
+          Top = 125
+          Width = 23
+          Height = 23
+          Hint = 'Copy Shared Template into Personal Template List'
+          Enabled = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = sbCopyRightClick
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            8000008000000080800080000000800080008080000080808000C0C0C0000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+            1111111111111111111111111111111111111111111F11111111111111011111
+            11111111117FF1111111111111001111111111111177FF111111111111000111
+            1111111111777FF11111111111000011111111FFFF7777FF1111100000000001
+            111117777777777FF1111000000000001111177777777777FF11100000000000
+            01111777777777777F1110000000000001111777777777777111100000000000
+            1111177777777777111110000000000111111777777777711111111111000011
+            1111111111777711111111111100011111111111117771111111111111001111
+            1111111111771111111111111101111111111111117111111111}
+          NumGlyphs = 2
+        end
+        object sbCopyLeft: TBitBtn
+          Tag = 1
+          Left = 1
+          Top = 100
+          Width = 23
+          Height = 23
+          Hint = 'Copy Personal Template into Shared Template List'
+          Enabled = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = sbCopyLeftClick
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            8000008000000080800080000000800080008080000080808000C0C0C0000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+            11111111111111111111111111111111111111111111F1111111111111101111
+            111111111117F1111111111111001111111111111177F1111111111110001111
+            111111111777F1111111111100001111111111117777FFFFFF11111000000000
+            01111117777777777F1111000000000001111177777777777F11100000000000
+            01111777777777777F1110000000000001111777777777777F11110000000000
+            01111177777777777F1111100000000001111117777777777111111100001111
+            111111117777F1111111111110001111111111111777F1111111111111001111
+            111111111177F111111111111110111111111111111711111111}
+          NumGlyphs = 2
+        end
+      end
+      object pnlPersonal: TPanel
+        Left = 27
+        Top = 0
+        Width = 189
+        Height = 215
+        Align = alClient
+        BevelOuter = bvNone
+        Constraints.MinWidth = 100
+        TabOrder = 1
+        object lblPersonal: TLabel
+          Tag = 1
+          Left = 0
+          Top = 0
+          Width = 189
+          Height = 13
+          Align = alTop
+          Caption = '&Personal Templates'
+          FocusControl = tvPersonal
+          PopupMenu = popTemplates
+          ExplicitWidth = 93
+        end
+        object tvPersonal: TORTreeView
+          Tag = 1
+          Left = 0
+          Top = 53
+          Width = 189
+          Height = 138
+          Align = alClient
+          DragMode = dmAutomatic
+          Images = dmodShared.imgTemplates
+          Indent = 19
+          PopupMenu = popTemplates
+          RightClickSelect = True
+          TabOrder = 1
+          OnChange = tvTreeChange
+          OnDragDrop = tvTreeDragDrop
+          OnDragOver = tvTreeDragOver
+          OnEdited = tvTreeNodeEdited
+          OnEndDrag = tvTreeEndDrag
+          OnEnter = tvTreeEnter
+          OnExpanding = tvPersonalExpanding
+          OnGetImageIndex = tvTreeGetImageIndex
+          OnGetSelectedIndex = tvTreeGetSelectedIndex
+          OnKeyDown = tvTreeKeyDown
+          OnStartDrag = tvTreeStartDrag
+          Caption = 'Personal Templates'
+          NodePiece = 0
+          OnDragging = tvTreeDragging
+        end
+        object pnlPersonalBottom: TPanel
+          Left = 0
+          Top = 191
+          Width = 189
+          Height = 24
+          Align = alBottom
+          BevelOuter = bvNone
+          TabOrder = 2
+          DesignSize = (
+            189
+            24)
+          object sbPerUp: TBitBtn
+            Tag = 1
+            Left = 86
+            Top = 2
+            Width = 21
+            Height = 21
+            Hint = 'Move Personal Template Up'
+            Anchors = [akTop, akRight]
+            Enabled = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            OnClick = sbMoveUpClick
+            Glyph.Data = {
+              76010000424D7601000000000000760000002800000020000000100000000100
+              0400000000000001000000000000000000001000000010000000000000000000
+              8000008000000080800080000000800080008080000080808000C0C0C0000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+              1111111111111111111111111111111111111111111111111111111111111111
+              111111111FFFFFF1111111110000001111111111777777F11111111100000011
+              11111111777777F1111111110000001111111111777777F11111111100000011
+              11111111777777F1111111110000001111111FFF777777FFFFF1000000000000
+              0011777777777777771110000000000001111777777777777111110000000000
+              1111117777777777111111100000000111111117777777711111111100000011
+              1111111177777711111111111000011111111111177771111111111111001111
+              1111111111771111111111111111111111111111111111111111}
+            NumGlyphs = 2
+          end
+          object sbPerDown: TBitBtn
+            Tag = 1
+            Left = 109
+            Top = 2
+            Width = 21
+            Height = 21
+            Hint = 'Move Personal Template Down'
+            Anchors = [akTop, akRight]
+            Enabled = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 2
+            OnClick = sbMoveDownClick
+            Glyph.Data = {
+              76010000424D7601000000000000760000002800000020000000100000000100
+              0400000000000001000000000000000000001000000010000000000000000000
+              8000008000000080800080000000800080008080000080808000C0C0C0000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+              1111111111111111111111111111111111111111111111111111111111111111
+              11111111111FF1111111111111001111111111111177FF111111111110000111
+              1111111117777FF1111111110000001111111111777777FF1111111000000001
+              111111177777777FF1111100000000001111117777777777FF11100000000000
+              01111777777777777FF100000000000000117777777777777711111100000011
+              11111111777777F1111111110000001111111111777777F11111111100000011
+              11111111777777F1111111110000001111111111777777F11111111100000011
+              1111111177777711111111111111111111111111111111111111}
+            NumGlyphs = 2
+          end
+          object sbPerDelete: TBitBtn
+            Tag = 1
+            Left = 132
+            Top = 2
+            Width = 56
+            Height = 21
+            Hint = 'Delete Personal Template'
+            Anchors = [akTop, akRight]
+            Caption = 'Delete'
+            Enabled = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 3
+            OnClick = sbDeleteClick
+            Glyph.Data = {
+              76010000424D7601000000000000760000002800000020000000100000000100
+              0400000000000001000000000000000000001000000010000000000000000000
+              8000008000000080800080000000800080008080000080808000C0C0C0000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+              1111111111111111111111111111111111111111111111111111111111111111
+              111111FF11111111FF111001111111100111177FF11111177F11100011111100
+              01111777FF1111777111110001111000111111777FF117771111111000110001
+              1111111777FF7771111111110000001111111111777777111111111110000111
+              1111111117777F1111111111100001111111111117777FF11111111100000011
+              11111111777777FF1111111000110001111111177711777FF111110001111000
+              1111117771111777FF1110001111110001111777111111777111100111111110
+              0111177111111117711111111111111111111111111111111111}
+            Layout = blGlyphRight
+            NumGlyphs = 2
+          end
+          object cbPerHide: TCheckBox
+            Left = 0
+            Top = 4
+            Width = 83
+            Height = 17
+            Hint = 'Hide Inactive Personal Templates'
+            Anchors = [akLeft, akTop, akRight]
+            Caption = 'Hide &Inactive'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = cbPerHideClick
+          end
+        end
+        object pnlPersonalGap: TPanel
+          Tag = 1
+          Left = 0
+          Top = 13
+          Width = 189
+          Height = 2
+          Align = alTop
+          BevelOuter = bvNone
+          PopupMenu = popTemplates
+          TabOrder = 3
+        end
+        object pnlPerSearch: TPanel
+          Left = 0
+          Top = 15
+          Width = 189
+          Height = 38
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 0
+          OnResize = pnlPerSearchResize
+          DesignSize = (
+            189
+            38)
+          object btnPerFind: TORAlignButton
+            Tag = 1
+            Left = 134
+            Top = 0
+            Width = 55
+            Height = 21
+            Hint = 'Find Template'
+            Anchors = [akTop, akRight]
+            Caption = 'Find'
+            ParentShowHint = False
+            PopupMenu = popTemplates
+            ShowHint = True
+            TabOrder = 1
+            OnClick = btnFindClick
+          end
+          object edtPerSearch: TCaptionEdit
+            Tag = 1
+            Left = 0
+            Top = 0
+            Width = 134
+            Height = 21
+            Anchors = [akLeft, akTop, akRight]
+            TabOrder = 0
+            OnChange = edtSearchChange
+            OnEnter = edtPerSearchEnter
+            OnExit = edtPerSearchExit
+            Caption = 'Personal Templates'
+          end
+          object cbPerMatchCase: TCheckBox
+            Tag = 1
+            Left = 0
+            Top = 21
+            Width = 80
+            Height = 17
+            Caption = 'Match Case'
+            TabOrder = 2
+            OnClick = cbPerFindOptionClick
+          end
+          object cbPerWholeWords: TCheckBox
+            Tag = 1
+            Left = 80
+            Top = 21
+            Width = 109
+            Height = 17
+            Caption = 'Whole Words Only'
+            TabOrder = 3
+            OnClick = cbPerFindOptionClick
+          end
+        end
+      end
+      object pnlProperties: TPanel
+        Left = 219
+        Top = 0
+        Width = 221
+        Height = 215
+        Align = alRight
+        BevelOuter = bvNone
+        TabOrder = 2
+        OnResize = pnlPropertiesResize
+        object gbProperties: TGroupBox
+          Left = 0
+          Top = 0
+          Width = 221
+          Height = 215
+          Align = alClient
+          Caption = ' Template Properties '
+          Constraints.MinWidth = 100
+          TabOrder = 0
+          DesignSize = (
+            221
+            215)
+          object lblName: TLabel
+            Left = 5
+            Top = 18
+            Width = 31
+            Height = 13
+            Caption = 'Na&me:'
+            FocusControl = edtName
+          end
+          object lblLines: TLabel
+            Left = 43
+            Top = 186
+            Width = 110
+            Height = 27
+            Hint = 
+              'Indicates the number of blank lines to insert, in the group boil' +
+              'erplate, between each item'#39's boilerplate.'
+            Anchors = [akLeft, akTop, akRight, akBottom]
+            AutoSize = False
+            Caption = 'Number of Blank &Lines to insert between items'
+            FocusControl = edtGap
+            ParentShowHint = False
+            ShowHint = True
+            WordWrap = True
+          end
+          object lblType: TLabel
+            Left = 5
+            Top = 44
+            Width = 74
+            Height = 13
+            Caption = 'Template T&ype:'
+            FocusControl = cbxType
+          end
+          object lblRemDlg: TLabel
+            Left = 5
+            Top = 60
+            Width = 48
+            Height = 26
+            Alignment = taCenter
+            Caption = 'Reminder &Dialog:'
+            FocusControl = cbxRemDlgs
+            WordWrap = True
+          end
+          object cbExclude: TORCheckBox
+            Left = 5
+            Top = 143
+            Width = 73
+            Height = 42
+            Hint = 
+              'Removes this template'#39's boilerplate from the group'#39's boilerplate' +
+              '.'
+            Caption = 'E&xclude from Group Boilerplate'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 5
+            WordWrap = True
+            OnClick = cbExcludeClick
+            AutoSize = True
+          end
+          object cbActive: TCheckBox
+            Left = 5
+            Top = 86
+            Width = 61
+            Height = 17
+            Hint = 'Makes a template or folder active or inactive.'
+            Caption = 'A&ctive'
+            Checked = True
+            ParentShowHint = False
+            ShowHint = True
+            State = cbChecked
+            TabOrder = 3
+            OnClick = cbActiveClick
+          end
+          object edtGap: TCaptionEdit
+            Left = 5
+            Top = 190
+            Width = 20
+            Height = 21
+            Hint = 
+              'Indicates the number of blank lines to insert, in the group boil' +
+              'erplate, between each item'#39's boilerplate.'
+            MaxLength = 1
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 7
+            Text = '0'
+            OnChange = edtGapChange
+            OnKeyPress = edtGapKeyPress
+            Caption = 'Number of Blank Lines to insert between items'
+          end
+          object udGap: TUpDown
+            Left = 25
+            Top = 190
+            Width = 15
+            Height = 21
+            Hint = 
+              'Indicates the number of blank lines to insert, in the group boil' +
+              'erplate, between each item'#39's boilerplate.'
+            Associate = edtGap
+            Max = 3
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 8
+          end
+          object edtName: TCaptionEdit
+            Left = 38
+            Top = 15
+            Width = 177
+            Height = 21
+            Anchors = [akLeft, akTop, akRight]
+            MaxLength = 60
+            TabOrder = 0
+            OnChange = edtNameOldChange
+            OnExit = edtNameExit
+            Caption = 'Name'
+          end
+          object gbDialogProps: TGroupBox
+            Left = 89
+            Top = 87
+            Width = 126
+            Height = 95
+            Anchors = [akLeft, akTop, akRight]
+            Caption = 'Dialog Properties'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+            TabOrder = 6
+            object cbDisplayOnly: TCheckBox
+              Left = 6
+              Top = 15
+              Width = 82
+              Height = 17
+              Hint = 
+                'Template boilerplate is for dialog display only, and can not be ' +
+                'added to the note.'
+              Caption = 'Display Only'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              OnClick = cbDisplayOnlyClick
+            end
+            object cbOneItemOnly: TCheckBox
+              Left = 6
+              Top = 60
+              Width = 113
+              Height = 17
+              Hint = 'Allow only one child item to be selected at a time'
+              Caption = 'One Item Only'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 3
+              OnClick = cbOneItemOnlyClick
+            end
+            object cbFirstLine: TCheckBox
+              Left = 6
+              Top = 30
+              Width = 115
+              Height = 17
+              Hint = 
+                'Only show the first line of text in the dialog, but include the ' +
+                'entire template in the note'
+              Caption = 'Only Show First Line'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 1
+              OnClick = cbFirstLineClick
+            end
+            object cbHideDlgItems: TCheckBox
+              Left = 6
+              Top = 75
+              Width = 107
+              Height = 17
+              Hint = 'Hide child items when parent template is not selected'
+              Caption = 'Hide Dialog Items'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 4
+              OnClick = cbHideDlgItemsClick
+            end
+            object cbIndent: TCheckBox
+              Left = 6
+              Top = 45
+              Width = 117
+              Height = 17
+              Hint = 
+                'Indent child items in the dialog.  Text insertion remains unchan' +
+                'ged'
+              Caption = 'Indent Dialog Items'
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 2
+              OnClick = cbIndentClick
+            end
+          end
+          object cbHideItems: TORCheckBox
+            Left = 5
+            Top = 102
+            Width = 79
+            Height = 42
+            Hint = 'Hide child items from template drawer view'
+            Caption = 'Hide Items in Templates Dra&wer'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 4
+            WordWrap = True
+            OnClick = cbHideItemsClick
+            AutoSize = True
+          end
+          object cbxType: TCaptionComboBox
+            Left = 82
+            Top = 38
+            Width = 133
+            Height = 24
+            Style = csOwnerDrawFixed
+            Anchors = [akLeft, akTop, akRight]
+            ItemHeight = 18
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            OnChange = cbxTypeChange
+            OnDrawItem = cbxTypeDrawItem
+            Caption = 'Template Type'
+          end
+          object cbxRemDlgs: TORComboBox
+            Left = 54
+            Top = 64
+            Width = 161
+            Height = 21
+            Anchors = [akLeft, akTop, akRight]
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Reminder Dialog'
+            Color = clWindow
+            DropDownCount = 12
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = True
+            LongList = False
+            LookupPiece = 0
+            MaxLength = 0
+            Pieces = '2'
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 2
+            OnChange = cbxRemDlgsChange
+            CharsNeedMatch = 1
+          end
+          object cbLock: TORCheckBox
+            Left = 168
+            Top = 191
+            Width = 47
+            Height = 16
+            Caption = 'Lock'
+            TabOrder = 9
+            OnClick = cbLockClick
+          end
+        end
+      end
+    end
+    object pnlShared: TPanel
+      Left = 0
+      Top = 24
+      Width = 297
+      Height = 215
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      object lblShared: TLabel
+        Left = 0
+        Top = 0
+        Width = 297
+        Height = 13
+        Align = alTop
+        Caption = '&Shared Templates'
+        FocusControl = tvShared
+        PopupMenu = popTemplates
+        ExplicitWidth = 86
+      end
+      object tvShared: TORTreeView
+        Left = 0
+        Top = 53
+        Width = 297
+        Height = 138
+        Align = alClient
+        DragMode = dmAutomatic
+        Images = dmodShared.imgTemplates
+        Indent = 19
+        PopupMenu = popTemplates
+        RightClickSelect = True
+        TabOrder = 1
+        OnChange = tvTreeChange
+        OnDragDrop = tvTreeDragDrop
+        OnDragOver = tvTreeDragOver
+        OnEdited = tvTreeNodeEdited
+        OnEndDrag = tvTreeEndDrag
+        OnEnter = tvTreeEnter
+        OnExpanding = tvSharedExpanding
+        OnGetImageIndex = tvTreeGetImageIndex
+        OnGetSelectedIndex = tvTreeGetSelectedIndex
+        OnKeyDown = tvTreeKeyDown
+        OnStartDrag = tvTreeStartDrag
+        Caption = 'Shared Templates'
+        NodePiece = 0
+        OnDragging = tvTreeDragging
+      end
+      object pnlSharedBottom: TPanel
+        Left = 0
+        Top = 191
+        Width = 297
+        Height = 24
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 2
+        DesignSize = (
+          297
+          24)
+        object sbShUp: TBitBtn
+          Left = 194
+          Top = 2
+          Width = 21
+          Height = 21
+          Hint = 'Move Shared Template Up'
+          Anchors = [akTop, akRight]
+          Enabled = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = sbMoveUpClick
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            8000008000000080800080000000800080008080000080808000C0C0C0000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+            1111111111111111111111111111111111111111111111111111111111111111
+            111111111FFFFFF1111111110000001111111111777777F11111111100000011
+            11111111777777F1111111110000001111111111777777F11111111100000011
+            11111111777777F1111111110000001111111FFF777777FFFFF1000000000000
+            0011777777777777771110000000000001111777777777777111110000000000
+            1111117777777777111111100000000111111117777777711111111100000011
+            1111111177777711111111111000011111111111177771111111111111001111
+            1111111111771111111111111111111111111111111111111111}
+          NumGlyphs = 2
+        end
+        object sbShDown: TBitBtn
+          Left = 217
+          Top = 2
+          Width = 21
+          Height = 21
+          Hint = 'Move Shared Template Down'
+          Anchors = [akTop, akRight]
+          Enabled = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          OnClick = sbMoveDownClick
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            8000008000000080800080000000800080008080000080808000C0C0C0000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+            1111111111111111111111111111111111111111111111111111111111111111
+            11111111111FF1111111111111001111111111111177FF111111111110000111
+            1111111117777FF1111111110000001111111111777777FF1111111000000001
+            111111177777777FF1111100000000001111117777777777FF11100000000000
+            01111777777777777FF100000000000000117777777777777711111100000011
+            11111111777777F1111111110000001111111111777777F11111111100000011
+            11111111777777F1111111110000001111111111777777F11111111100000011
+            1111111177777711111111111111111111111111111111111111}
+          NumGlyphs = 2
+        end
+        object sbShDelete: TBitBtn
+          Left = 240
+          Top = 2
+          Width = 56
+          Height = 21
+          Hint = 'Delete Shared Template'
+          Anchors = [akTop, akRight]
+          Caption = 'Delete'
+          Enabled = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 3
+          OnClick = sbDeleteClick
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            8000008000000080800080000000800080008080000080808000C0C0C0000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+            1111111111111111111111111111111111111111111111111111111111111111
+            111111FF11111111FF111001111111100111177FF11111177F11100011111100
+            01111777FF1111777111110001111000111111777FF117771111111000110001
+            1111111777FF7771111111110000001111111111777777111111111110000111
+            1111111117777F1111111111100001111111111117777FF11111111100000011
+            11111111777777FF1111111000110001111111177711777FF111110001111000
+            1111117771111777FF1110001111110001111777111111777111100111111110
+            0111177111111117711111111111111111111111111111111111}
+          Layout = blGlyphRight
+          NumGlyphs = 2
+        end
+        object cbShHide: TCheckBox
+          Left = 0
+          Top = 4
+          Width = 191
+          Height = 17
+          Hint = 'Hide Inactive Shared Templates'
+          Anchors = [akLeft, akTop, akRight]
+          Caption = '&Hide Inactive'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = cbShHideClick
+        end
+      end
+      object pnlSharedGap: TPanel
+        Left = 0
+        Top = 13
+        Width = 297
+        Height = 2
+        Align = alTop
+        BevelOuter = bvNone
+        PopupMenu = popTemplates
+        TabOrder = 3
+      end
+      object pnlShSearch: TPanel
+        Left = 0
+        Top = 15
+        Width = 297
+        Height = 38
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        OnResize = pnlShSearchResize
+        DesignSize = (
+          297
+          38)
+        object btnShFind: TORAlignButton
+          Left = 242
+          Top = 0
+          Width = 55
+          Height = 21
+          Hint = 'Find Template'
+          Anchors = [akTop, akRight]
+          Caption = 'Find'
+          ParentShowHint = False
+          PopupMenu = popTemplates
+          ShowHint = True
+          TabOrder = 1
+          OnClick = btnFindClick
+        end
+        object edtShSearch: TCaptionEdit
+          Left = 0
+          Top = 0
+          Width = 242
+          Height = 21
+          Anchors = [akLeft, akTop, akRight]
+          TabOrder = 0
+          OnChange = edtSearchChange
+          OnEnter = edtShSearchEnter
+          OnExit = edtShSearchExit
+          Caption = 'Shared Templates'
+        end
+        object cbShMatchCase: TCheckBox
+          Left = 0
+          Top = 21
+          Width = 80
+          Height = 17
+          Caption = 'Match Case'
+          TabOrder = 2
+          OnClick = cbShFindOptionClick
+        end
+        object cbShWholeWords: TCheckBox
+          Left = 80
+          Top = 21
+          Width = 109
+          Height = 17
+          Caption = 'Whole Words Only'
+          TabOrder = 3
+          OnClick = cbShFindOptionClick
+        end
+      end
+    end
+    object pnlMenuBar: TPanel
+      Left = 0
+      Top = 0
+      Width = 740
+      Height = 22
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblPerOwner: TLabel
+        Left = 138
+        Top = 4
+        Width = 75
+        Height = 13
+        Caption = 'Personal &Owner'
+        FocusControl = cboOwner
+      end
+      object cboOwner: TORComboBox
+        Left = 219
+        Top = 0
+        Width = 190
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Personal Owner'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 0
+        MaxLength = 0
+        ParentShowHint = False
+        Pieces = '2'
+        ShowHint = True
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        OnChange = cboOwnerChange
+        OnNeedData = cboOwnerNeedData
+        CharsNeedMatch = 1
+      end
+      object btnNew: TORAlignButton
+        Left = 558
+        Top = 0
+        Width = 182
+        Height = 22
+        Align = alRight
+        Caption = '&New Template'
+        TabOrder = 2
+        OnClick = btnNewClick
+      end
+      object pnlMenu: TPanel
+        Left = 0
+        Top = 0
+        Width = 109
+        Height = 22
+        Align = alLeft
+        AutoSize = True
+        BevelInner = bvRaised
+        BevelOuter = bvNone
+        TabOrder = 0
+        object mbMain: TMenuBar
+          Left = 1
+          Top = 1
+          Width = 107
+          Height = 20
+          Align = alLeft
+          AutoSize = True
+          ButtonHeight = 21
+          ButtonWidth = 43
+          Caption = 'mbMain'
+          Menu = mnuMain
+          ShowCaptions = True
+          TabOrder = 0
+          OnResize = mbMainResize
+        end
+      end
+    end
+  end
+  object pnlNotes: TPanel [5]
+    Left = 0
+    Top = 380
+    Width = 740
+    Height = 43
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 3
+    Visible = False
+    object lblNotes: TLabel
+      Left = 0
+      Top = 0
+      Width = 740
+      Height = 13
+      Align = alTop
+      Caption = 'Template Notes:'
+      ExplicitWidth = 78
+    end
+    object reNotes: TRichEdit
+      Left = 0
+      Top = 13
+      Width = 740
+      Height = 30
+      Align = alClient
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = []
+      Constraints.MinHeight = 30
+      ParentFont = False
+      PlainText = True
+      PopupMenu = popNotes
+      ScrollBars = ssBoth
+      TabOrder = 0
+      WantTabs = True
+      OnChange = reNotesChange
+      OnKeyDown = reBoilKeyDown
+      OnKeyPress = reBoilKeyPress
+      OnKeyUp = reBoilKeyUp
+      OnResizeRequest = reResizeRequest
+    end
+  end
+  object pnlCOM: TPanel [6]
+    Left = 0
+    Top = 263
+    Width = 740
+    Height = 21
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object lblCOMParam: TLabel
+      Left = 283
+      Top = 0
+      Width = 77
+      Height = 21
+      Align = alLeft
+      Caption = '  Passed Value: '
+      Layout = tlCenter
+      ExplicitHeight = 13
+    end
+    object lblCOMObj: TLabel
+      Left = 0
+      Top = 0
+      Width = 67
+      Height = 21
+      Align = alLeft
+      Caption = ' COM Object: '
+      Layout = tlCenter
+      ExplicitHeight = 13
+    end
+    object edtCOMParam: TCaptionEdit
+      Left = 360
+      Top = 0
+      Width = 380
+      Height = 21
+      Align = alClient
+      TabOrder = 0
+      OnChange = edtCOMParamChange
+      Caption = 'Passed Value'
+    end
+    object cbxCOMObj: TORComboBox
+      Left = 67
+      Top = 0
+      Width = 216
+      Height = 21
+      Style = orcsDropDown
+      Align = alLeft
+      AutoSelect = True
+      Caption = 'COM Object'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      OnChange = cbxCOMObjChange
+      CharsNeedMatch = 1
+    end
+  end
+  object pnlLink: TPanel [7]
+    Left = 0
+    Top = 242
+    Width = 740
+    Height = 21
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 5
+    Visible = False
+    object lblLink: TLabel
+      Left = 0
+      Top = 0
+      Width = 138
+      Height = 21
+      Align = alLeft
+      Caption = ' Associated Consult Service: '
+      Layout = tlCenter
+      ExplicitHeight = 13
+    end
+    object cbxLink: TORComboBox
+      Left = 138
+      Top = 0
+      Width = 602
+      Height = 21
+      Style = orcsDropDown
+      Align = alClient
+      AutoSelect = True
+      Caption = ' Associated Consult Service'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = False
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      HideSynonyms = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '30,5000'
+      TabOrder = 0
+      TabStop = True
+      OnChange = cbxLinkChange
+      OnNeedData = cbxLinkNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnApply'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = cbEditShared'
+        'Status = stsDefault')
+      (
+        'Component = cbNotes'
+        'Status = stsDefault')
+      (
+        'Component = cbEditUser'
+        'Status = stsDefault')
+      (
+        'Component = pnlBoilerplate'
+        'Status = stsDefault')
+      (
+        'Component = reBoil'
+        'Label = lblBoilerplate'
+        'Status = stsOK')
+      (
+        'Component = pnlGroupBP'
+        'Status = stsDefault')
+      (
+        'Component = reGroupBP'
+        'Label = lblGroupBP'
+        'Status = stsOK')
+      (
+        'Component = pnlGroupBPGap'
+        'Status = stsDefault')
+      (
+        'Component = pnlBP'
+        'Status = stsDefault')
+      (
+        'Component = cbLongLines'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlCopyBtns'
+        'Status = stsDefault')
+      (
+        'Component = sbCopyRight'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = sbCopyLeft'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = pnlPersonal'
+        'Status = stsDefault')
+      (
+        'Component = tvPersonal'
+        'Status = stsDefault')
+      (
+        'Component = pnlPersonalBottom'
+        'Status = stsDefault')
+      (
+        'Component = sbPerUp'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = sbPerDown'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = sbPerDelete'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = cbPerHide'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = pnlPersonalGap'
+        'Status = stsDefault')
+      (
+        'Component = pnlPerSearch'
+        'Status = stsDefault')
+      (
+        'Component = btnPerFind'
+        'Text = Find Personal Template'
+        'Status = stsOK')
+      (
+        'Component = edtPerSearch'
+        'Status = stsDefault')
+      (
+        'Component = cbPerMatchCase'
+        'Status = stsDefault')
+      (
+        'Component = cbPerWholeWords'
+        'Status = stsDefault')
+      (
+        'Component = pnlProperties'
+        'Status = stsDefault')
+      (
+        'Component = gbProperties'
+        'Status = stsDefault')
+      (
+        'Component = cbExclude'
+        'Status = stsDefault')
+      (
+        'Component = cbActive'
+        'Status = stsDefault')
+      (
+        'Component = edtGap'
+        'Status = stsDefault')
+      (
+        'Component = udGap'
+        'Status = stsDefault')
+      (
+        'Component = edtName'
+        'Status = stsDefault')
+      (
+        'Component = gbDialogProps'
+        'Status = stsDefault')
+      (
+        'Component = cbDisplayOnly'
+        'Status = stsDefault')
+      (
+        'Component = cbOneItemOnly'
+        'Status = stsDefault')
+      (
+        'Component = cbFirstLine'
+        'Status = stsDefault')
+      (
+        'Component = cbHideDlgItems'
+        'Status = stsDefault')
+      (
+        'Component = cbIndent'
+        'Status = stsDefault')
+      (
+        'Component = cbHideItems'
+        'Status = stsDefault')
+      (
+        'Component = cbxType'
+        'Status = stsDefault')
+      (
+        'Component = cbxRemDlgs'
+        'Status = stsDefault')
+      (
+        'Component = cbLock'
+        'Status = stsDefault')
+      (
+        'Component = pnlShared'
+        'Status = stsDefault')
+      (
+        'Component = tvShared'
+        'Status = stsDefault')
+      (
+        'Component = pnlSharedBottom'
+        'Status = stsDefault')
+      (
+        'Component = sbShUp'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = sbShDown'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = sbShDelete'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = cbShHide'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = pnlSharedGap'
+        'Status = stsDefault')
+      (
+        'Component = pnlShSearch'
+        'Status = stsDefault')
+      (
+        'Component = btnShFind'
+        'Text = Find Shared Template'
+        'Status = stsOK')
+      (
+        'Component = edtShSearch'
+        'Status = stsDefault')
+      (
+        'Component = cbShMatchCase'
+        'Status = stsDefault')
+      (
+        'Component = cbShWholeWords'
+        'Status = stsDefault')
+      (
+        'Component = pnlMenuBar'
+        'Status = stsDefault')
+      (
+        'Component = cboOwner'
+        'Status = stsDefault')
+      (
+        'Component = btnNew'
+        'Status = stsDefault')
+      (
+        'Component = pnlMenu'
+        'Status = stsDefault')
+      (
+        'Component = mbMain'
+        'Status = stsDefault')
+      (
+        'Component = pnlNotes'
+        'Status = stsDefault')
+      (
+        'Component = reNotes'
+        'Label = lblNotes'
+        'Status = stsOK')
+      (
+        'Component = pnlCOM'
+        'Status = stsDefault')
+      (
+        'Component = edtCOMParam'
+        'Label = lblCOMParam'
+        'Status = stsOK')
+      (
+        'Component = cbxCOMObj'
+        'Property = Caption'
+        'Status = stsOK')
+      (
+        'Component = pnlLink'
+        'Status = stsDefault')
+      (
+        'Component = cbxLink'
+        'Label = lblLink'
+        'Status = stsOK')
+      (
+        'Component = frmTemplateEditor'
+        'Status = stsDefault'))
+  end
+  object popTemplates: TPopupMenu
+    OnPopup = popTemplatesPopup
+    Left = 56
+    Top = 96
+    object mnuNodeNew: TMenuItem
+      Caption = '&New Template'
+      OnClick = btnNewClick
+    end
+    object mnuNodeAutoGen: TMenuItem
+      Caption = '&Generate Template'
+      OnClick = mnuAutoGenClick
+    end
+    object mnuNodeCopy: TMenuItem
+      Caption = '&Copy Template'
+      OnClick = mnuNodeCopyClick
+    end
+    object mnuNodePaste: TMenuItem
+      Caption = '&Paste Template'
+      OnClick = mnuNodePasteClick
+    end
+    object mnuNodeDelete: TMenuItem
+      Caption = '&Delete Template'
+      OnClick = mnuNodeDeleteClick
+    end
+    object N15: TMenuItem
+      Caption = '-'
+    end
+    object mnuNodeSort: TMenuItem
+      Caption = 'Sort'
+      OnClick = mnuSortClick
+    end
+    object N6: TMenuItem
+      Caption = '-'
+    end
+    object mnuFindTemplates: TMenuItem
+      Caption = '&Find Templates'
+      OnClick = mnuFindTemplatesClick
+    end
+    object mnuCollapseTree: TMenuItem
+      Caption = 'Collapse &Tree'
+      OnClick = mnuCollapseTreeClick
+    end
+  end
+  object popBoilerplate: TPopupMenu
+    OnPopup = popBoilerplatePopup
+    Left = 88
+    Top = 332
+    object mnuBPUndo: TMenuItem
+      Caption = '&Undo'
+      ShortCut = 16474
+      OnClick = mnuBPUndoClick
+    end
+    object N8: TMenuItem
+      Caption = '-'
+    end
+    object mnuBPCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = mnuBPCutClick
+    end
+    object mnuBPCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = mnuBPCopyClick
+    end
+    object mnuBPPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = mnuBPPasteClick
+    end
+    object mnuBPSelectAll: TMenuItem
+      Caption = 'Select &All'
+      ShortCut = 16449
+      OnClick = mnuBPSelectAllClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object mnuBPInsertObject: TMenuItem
+      Caption = '&Insert Patient Data (Object)'
+      ShortCut = 16457
+      OnClick = mnuBPInsertObjectClick
+    end
+    object mnuBPInsertField: TMenuItem
+      Caption = 'Insert Template &Field'
+      ShortCut = 16454
+      OnClick = mnuBPInsertFieldClick
+    end
+    object mnuBPErrorCheck: TMenuItem
+      Caption = 'Check for &Errors'
+      ShortCut = 16453
+      OnClick = mnuBPErrorCheckClick
+    end
+    object mnuBPTry: TMenuItem
+      Caption = 'Preview/Print Template'
+      ShortCut = 16468
+      OnClick = mnuBPTryClick
+    end
+    object N7: TMenuItem
+      Caption = '-'
+    end
+    object mnuBPCheckGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      ShortCut = 16455
+      OnClick = mnuBPCheckGrammarClick
+    end
+    object mnuBPSpellCheck: TMenuItem
+      Caption = 'Check &Spelling'
+      ShortCut = 16467
+      OnClick = mnuBPSpellCheckClick
+    end
+  end
+  object tmrAutoScroll: TTimer
+    Enabled = False
+    Interval = 200
+    OnTimer = tmrAutoScrollTimer
+    Left = 96
+    Top = 96
+  end
+  object popGroup: TPopupMenu
+    OnPopup = popGroupPopup
+    Left = 8
+    Top = 325
+    object mnuGroupBPCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = mnuGroupBPCopyClick
+    end
+    object N4: TMenuItem
+      Caption = '-'
+    end
+    object mnuGroupBPSelectAll: TMenuItem
+      Caption = 'Select &All'
+      ShortCut = 16449
+      OnClick = mnuGroupBPSelectAllClick
+    end
+  end
+  object mnuMain: TMainMenu
+    Left = 16
+    Top = 104
+    object mnuEdit: TMenuItem
+      Caption = '&Edit'
+      OnClick = mnuEditClick
+      object mnuUndo: TMenuItem
+        Caption = '&Undo'
+        ShortCut = 16474
+        OnClick = mnuBPUndoClick
+      end
+      object N9: TMenuItem
+        Caption = '-'
+        ShortCut = 189
+      end
+      object mnuCut: TMenuItem
+        Caption = 'Cu&t'
+        ShortCut = 16472
+        OnClick = mnuBPCutClick
+      end
+      object mnuCopy: TMenuItem
+        Caption = '&Copy'
+        ShortCut = 16451
+        OnClick = mnuBPCopyClick
+      end
+      object mnuPaste: TMenuItem
+        Caption = '&Paste'
+        ShortCut = 16470
+        OnClick = mnuBPPasteClick
+      end
+      object mnuSelectAll: TMenuItem
+        Caption = 'Select &All'
+        ShortCut = 16449
+        OnClick = mnuBPSelectAllClick
+      end
+      object N11: TMenuItem
+        Caption = '-'
+      end
+      object mnuInsertObject: TMenuItem
+        Caption = '&Insert Patient Data (Object)'
+        ShortCut = 16457
+        OnClick = mnuBPInsertObjectClick
+      end
+      object mnuInsertField: TMenuItem
+        Caption = 'Insert Template &Field'
+        ShortCut = 16454
+        OnClick = mnuBPInsertFieldClick
+      end
+      object mnuErrorCheck: TMenuItem
+        Caption = 'Check for &Errors'
+        ShortCut = 16453
+        OnClick = mnuBPErrorCheckClick
+      end
+      object mnuTry: TMenuItem
+        Caption = 'Preview/Print Template'
+        ShortCut = 16468
+        OnClick = mnuBPTryClick
+      end
+      object N1: TMenuItem
+        Caption = '-'
+      end
+      object mnuCheckGrammar: TMenuItem
+        Caption = 'Check &Grammar'
+        ShortCut = 16455
+        OnClick = mnuBPCheckGrammarClick
+      end
+      object mnuSpellCheck: TMenuItem
+        Caption = 'Check &Spelling'
+        ShortCut = 16467
+        OnClick = mnuBPSpellCheckClick
+      end
+      object N13: TMenuItem
+        Caption = '-'
+      end
+      object mnuGroupBoilerplate: TMenuItem
+        Caption = 'Group &Boilerplate'
+        OnClick = mnuGroupBoilerplateClick
+        object mnuGroupCopy: TMenuItem
+          Caption = '&Copy'
+          OnClick = mnuGroupBPCopyClick
+        end
+        object mnuGroupSelectAll: TMenuItem
+          Caption = 'Select &All'
+          OnClick = mnuGroupBPSelectAllClick
+        end
+      end
+    end
+    object mnuTemplate: TMenuItem
+      Caption = '&Action'
+      OnClick = mnuTemplateClick
+      object mnuNewTemplate: TMenuItem
+        Caption = '&New Template'
+        OnClick = btnNewClick
+      end
+      object mnuAutoGen: TMenuItem
+        Caption = '&Generate Template'
+        OnClick = mnuAutoGenClick
+      end
+      object mnuTCopy: TMenuItem
+        Caption = '&Copy Template'
+        OnClick = mnuNodeCopyClick
+      end
+      object mnuTPaste: TMenuItem
+        Caption = '&Paste Template'
+        OnClick = mnuNodePasteClick
+      end
+      object mnuTDelete: TMenuItem
+        Caption = '&Delete Template'
+        OnClick = mnuNodeDeleteClick
+      end
+      object N12: TMenuItem
+        Caption = '-'
+      end
+      object mnuSort: TMenuItem
+        Caption = 'Sort'
+        OnClick = mnuSortClick
+      end
+      object N14: TMenuItem
+        Caption = '-'
+      end
+      object mnuFindShared: TMenuItem
+        Caption = 'Find &Shared Templates'
+        OnClick = mnuFindSharedClick
+      end
+      object mnuFindPersonal: TMenuItem
+        Caption = '&Find Personal Templates'
+        OnClick = mnuFindPersonalClick
+      end
+      object N3: TMenuItem
+        Caption = '-'
+      end
+      object mnuShCollapse: TMenuItem
+        Caption = 'Collapse Shared Tree'
+        OnClick = mnuShCollapseClick
+      end
+      object mnuPerCollapse: TMenuItem
+        Caption = 'Collapse Personal Tree'
+        OnClick = mnuPerCollapseClick
+      end
+    end
+    object mnuTools: TMenuItem
+      Caption = '&Tools'
+      OnClick = mnuToolsClick
+      object mnuEditTemplateFields: TMenuItem
+        Caption = 'Edit Template &Fields'
+        OnClick = mnuEditTemplateFieldsClick
+      end
+      object N16: TMenuItem
+        Caption = '-'
+      end
+      object mnuImportTemplate: TMenuItem
+        Caption = '&Import Template'
+        OnClick = mnuImportTemplateClick
+      end
+      object mnuExportTemplate: TMenuItem
+        Caption = '&Export Template'
+        OnClick = mnuExportTemplateClick
+      end
+      object N17: TMenuItem
+        Caption = '-'
+      end
+      object mnuRefresh: TMenuItem
+        Caption = '&Refresh Templates'
+        OnClick = mnuRefreshClick
+      end
+      object mnuTemplateIconLegend: TMenuItem
+        Caption = 'Template Icon Legend'
+        OnClick = mnuTemplateIconLegendClick
+      end
+    end
+  end
+  object popNotes: TPopupMenu
+    OnPopup = popNotesPopup
+    Left = 8
+    Top = 387
+    object mnuNotesUndo: TMenuItem
+      Caption = '&Undo'
+      ShortCut = 16474
+      OnClick = mnuNotesUndoClick
+    end
+    object MenuItem2: TMenuItem
+      Caption = '-'
+    end
+    object mnuNotesCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = mnuNotesCutClick
+    end
+    object mnuNotesCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = mnuNotesCopyClick
+    end
+    object mnuNotesPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = mnuNotesPasteClick
+    end
+    object MenuItem6: TMenuItem
+      Caption = '-'
+    end
+    object mnuNotesSelectAll: TMenuItem
+      Caption = 'Select &All'
+      ShortCut = 16449
+      OnClick = mnuNotesSelectAllClick
+    end
+    object MenuItem8: TMenuItem
+      Caption = '-'
+    end
+    object mnuNotesGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      ShortCut = 16455
+      OnClick = mnuNotesGrammarClick
+    end
+    object mnuNotesSpelling: TMenuItem
+      Caption = 'Check &Spelling'
+      ShortCut = 16467
+      OnClick = mnuNotesSpellingClick
+    end
+  end
+  object dlgImport: TOpenDialog
+    DefaultExt = 'txml'
+    Filter = 'Template Files|*.txml|XML Files|*.xml|All Files|*.*'
+    Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing]
+    Left = 16
+    Top = 136
+  end
+  object dlgExport: TSaveDialog
+    DefaultExt = 'txml'
+    Filter = 'Template Files|*.txml|XML Files|*.xml|All Files|*.*'
+    Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
+    Left = 56
+    Top = 136
+  end
+  object imgLblTemplates: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvPersonal
+      end
+      item
+        Component = tvShared
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblHealthFactorLabels
+    Left = 104
+    Top = 144
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateEditor.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateEditor.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateEditor.pas	(revision 1676)
@@ -0,0 +1,4210 @@
+unit fTemplateEditor;
+{The OwnerScan conditional compile varaible was created because there were too
+ many things that needed to be done to incorporate the viewing of other user's
+ personal templates by clinical coordinators.  These include:
+   Changing the Personal tree.
+   expanding entirely new personal list when personal list changes
+   when click on stop editing shared button, and personal is for someone else,
+     need to resync to personal list.
+
+HOT HEYS NOT YET ASSIGNED:
+JFKQRUVZ
+}
+{$DEFINE OwnerScan}
+{$UNDEF OwnerScan}
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ComCtrls, ORCtrls, Buttons, Mask, ORFn, ORNet,
+  uTemplates, Menus, ImgList, Clipbrd, ToolWin, MenuBar, TypInfo, MSXML_TLB, fBase508Form,
+  VA508AccessibilityManager, VA508ImageListLabeler;
+
+type
+  TTemplateTreeControl = (tcDel, tcUp, tcDown, tcLbl, tcCopy);
+  TTemplateTreeType = (ttShared, ttPersonal);
+
+  TfrmTemplateEditor = class(TfrmBase508Form)
+    splMain: TSplitter;
+    pnlBottom: TPanel;
+    btnApply: TButton;
+    btnCancel: TButton;
+    btnOK: TButton;
+    pnlBoilerplate: TPanel;
+    reBoil: TRichEdit;
+    pnlTop: TPanel;
+    pnlRightTop: TPanel;
+    splProperties: TSplitter;
+    pnlCopyBtns: TPanel;
+    sbCopyLeft: TBitBtn;
+    sbCopyRight: TBitBtn;
+    lblCopy: TLabel;
+    splMiddle: TSplitter;
+    pnlShared: TPanel;
+    lblShared: TLabel;
+    tvShared: TORTreeView;
+    pnlSharedBottom: TPanel;
+    sbShUp: TBitBtn;
+    sbShDown: TBitBtn;
+    sbShDelete: TBitBtn;
+    cbShHide: TCheckBox;
+    pnlSharedGap: TPanel;
+    pnlPersonal: TPanel;
+    lblPersonal: TLabel;
+    tvPersonal: TORTreeView;
+    pnlPersonalBottom: TPanel;
+    sbPerUp: TBitBtn;
+    sbPerDown: TBitBtn;
+    sbPerDelete: TBitBtn;
+    cbPerHide: TCheckBox;
+    pnlPersonalGap: TPanel;
+    popTemplates: TPopupMenu;
+    mnuCollapseTree: TMenuItem;
+    mnuFindTemplates: TMenuItem;
+    popBoilerplate: TPopupMenu;
+    mnuBPInsertObject: TMenuItem;
+    mnuBPErrorCheck: TMenuItem;
+    mnuBPSpellCheck: TMenuItem;
+    pnlGroupBP: TPanel;
+    reGroupBP: TRichEdit;
+    lblGroupBP: TLabel;
+    splBoil: TSplitter;
+    pnlGroupBPGap: TPanel;
+    tmrAutoScroll: TTimer;
+    popGroup: TPopupMenu;
+    mnuGroupBPCopy: TMenuItem;
+    mnuBPCut: TMenuItem;
+    N2: TMenuItem;
+    mnuBPCopy: TMenuItem;
+    mnuBPPaste: TMenuItem;
+    N4: TMenuItem;
+    mnuGroupBPSelectAll: TMenuItem;
+    mnuBPSelectAll: TMenuItem;
+    N6: TMenuItem;
+    mnuNodeCopy: TMenuItem;
+    mnuNodePaste: TMenuItem;
+    mnuNodeDelete: TMenuItem;
+    N8: TMenuItem;
+    mnuBPUndo: TMenuItem;
+    cbEditShared: TCheckBox;
+    pnlProperties: TPanel;
+    gbProperties: TGroupBox;
+    lblName: TLabel;
+    lblLines: TLabel;
+    cbExclude: TORCheckBox;
+    cbActive: TCheckBox;
+    edtGap: TCaptionEdit;
+    udGap: TUpDown;
+    edtName: TCaptionEdit;
+    mnuMain: TMainMenu;
+    mnuEdit: TMenuItem;
+    mnuUndo: TMenuItem;
+    N9: TMenuItem;
+    mnuCut: TMenuItem;
+    mnuCopy: TMenuItem;
+    mnuPaste: TMenuItem;
+    mnuSelectAll: TMenuItem;
+    N11: TMenuItem;
+    mnuInsertObject: TMenuItem;
+    mnuErrorCheck: TMenuItem;
+    mnuSpellCheck: TMenuItem;
+    N13: TMenuItem;
+    mnuGroupBoilerplate: TMenuItem;
+    mnuGroupCopy: TMenuItem;
+    mnuGroupSelectAll: TMenuItem;
+    mnuTemplate: TMenuItem;
+    mnuTCopy: TMenuItem;
+    mnuTPaste: TMenuItem;
+    mnuTDelete: TMenuItem;
+    N12: TMenuItem;
+    pnlShSearch: TPanel;
+    btnShFind: TORAlignButton;
+    edtShSearch: TCaptionEdit;
+    cbShMatchCase: TCheckBox;
+    cbShWholeWords: TCheckBox;
+    pnlPerSearch: TPanel;
+    btnPerFind: TORAlignButton;
+    edtPerSearch: TCaptionEdit;
+    cbPerMatchCase: TCheckBox;
+    cbPerWholeWords: TCheckBox;
+    mnuFindShared: TMenuItem;
+    mnuFindPersonal: TMenuItem;
+    N3: TMenuItem;
+    mnuShCollapse: TMenuItem;
+    mnuPerCollapse: TMenuItem;
+    pnlMenuBar: TPanel;
+    lblPerOwner: TLabel;
+    cboOwner: TORComboBox;
+    btnNew: TORAlignButton;
+    pnlMenu: TPanel;
+    mbMain: TMenuBar;
+    mnuNewTemplate: TMenuItem;
+    Bevel1: TBevel;
+    mnuNodeNew: TMenuItem;
+    mnuBPCheckGrammar: TMenuItem;
+    mnuCheckGrammar: TMenuItem;
+    N1: TMenuItem;
+    N7: TMenuItem;
+    N14: TMenuItem;
+    mnuSort: TMenuItem;
+    N15: TMenuItem;
+    mnuNodeSort: TMenuItem;
+    mnuTry: TMenuItem;
+    mnuBPTry: TMenuItem;
+    mnuAutoGen: TMenuItem;
+    mnuNodeAutoGen: TMenuItem;
+    pnlNotes: TPanel;
+    reNotes: TRichEdit;
+    splNotes: TSplitter;
+    lblNotes: TLabel;
+    popNotes: TPopupMenu;
+    mnuNotesUndo: TMenuItem;
+    MenuItem2: TMenuItem;
+    mnuNotesCut: TMenuItem;
+    mnuNotesCopy: TMenuItem;
+    mnuNotesPaste: TMenuItem;
+    MenuItem6: TMenuItem;
+    mnuNotesSelectAll: TMenuItem;
+    MenuItem8: TMenuItem;
+    mnuNotesGrammar: TMenuItem;
+    mnuNotesSpelling: TMenuItem;
+    cbNotes: TCheckBox;
+    gbDialogProps: TGroupBox;
+    cbDisplayOnly: TCheckBox;
+    cbOneItemOnly: TCheckBox;
+    cbHideItems: TORCheckBox;
+    cbFirstLine: TCheckBox;
+    cbHideDlgItems: TCheckBox;
+    cbIndent: TCheckBox;
+    mnuTools: TMenuItem;
+    mnuEditTemplateFields: TMenuItem;
+    N16: TMenuItem;
+    mnuImportTemplate: TMenuItem;
+    mnuExportTemplate: TMenuItem;
+    mnuBPInsertField: TMenuItem;
+    mnuInsertField: TMenuItem;
+    cbEditUser: TCheckBox;
+    dlgImport: TOpenDialog;
+    dlgExport: TSaveDialog;
+    cbxType: TCaptionComboBox;
+    lblType: TLabel;
+    cbxRemDlgs: TORComboBox;
+    lblRemDlg: TLabel;
+    N17: TMenuItem;
+    mnuTemplateIconLegend: TMenuItem;
+    pnlBP: TPanel;
+    lblBoilerplate: TLabel;
+    cbLongLines: TCheckBox;
+    cbLock: TORCheckBox;
+    mnuRefresh: TMenuItem;
+    lblBoilRow: TLabel;
+    lblGroupRow: TLabel;
+    lblBoilCol: TLabel;
+    lblGroupCol: TLabel;
+    pnlCOM: TPanel;
+    lblCOMParam: TLabel;
+    edtCOMParam: TCaptionEdit;
+    cbxCOMObj: TORComboBox;
+    lblCOMObj: TLabel;
+    pnlLink: TPanel;
+    cbxLink: TORComboBox;
+    lblLink: TLabel;
+    imgLblTemplates: TVA508ImageListLabeler;
+    procedure btnNewClick(Sender: TObject);
+    procedure btnApplyClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboOwnerNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboOwnerChange(Sender: TObject);
+    procedure tvPersonalExpanding(Sender: TObject; Node: TTreeNode;
+      var AllowExpansion: Boolean);
+    procedure tvSharedExpanding(Sender: TObject; Node: TTreeNode;
+      var AllowExpansion: Boolean);
+    procedure tvTreeGetImageIndex(Sender: TObject; Node: TTreeNode);
+    procedure tvTreeGetSelectedIndex(Sender: TObject; Node: TTreeNode);
+    procedure tvTreeChange(Sender: TObject; Node: TTreeNode);
+    procedure splMainMoved(Sender: TObject);
+    procedure pnlBoilerplateResize(Sender: TObject);
+    procedure edtNameOldChange(Sender: TObject);
+    procedure cbActiveClick(Sender: TObject);
+    procedure cbExcludeClick(Sender: TObject);
+    procedure edtGapChange(Sender: TObject);
+    procedure tvTreeEnter(Sender: TObject);
+    procedure tvTreeNodeEdited(Sender: TObject; Node: TTreeNode;
+      var S: String);
+    procedure cbShHideClick(Sender: TObject);
+    procedure cbPerHideClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure sbMoveUpClick(Sender: TObject);
+    procedure sbMoveDownClick(Sender: TObject);
+    procedure sbDeleteClick(Sender: TObject);
+    procedure tvTreeDragging(Sender: TObject; Node: TTreeNode;
+      var CanDrag: Boolean);
+    procedure tvTreeDragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
+    procedure tvTreeDragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure sbCopyLeftClick(Sender: TObject);
+    procedure sbCopyRightClick(Sender: TObject);
+    procedure reBoilChange(Sender: TObject);
+    procedure cbEditSharedClick(Sender: TObject);
+    procedure popTemplatesPopup(Sender: TObject);
+    procedure mnuCollapseTreeClick(Sender: TObject);
+    procedure mnuFindTemplatesClick(Sender: TObject);
+    procedure btnFindClick(Sender: TObject);
+    procedure edtSearchChange(Sender: TObject);
+    procedure edtShSearchEnter(Sender: TObject);
+    procedure edtShSearchExit(Sender: TObject);
+    procedure edtPerSearchEnter(Sender: TObject);
+    procedure edtPerSearchExit(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure mnuBPInsertObjectClick(Sender: TObject);
+    procedure mnuBPErrorCheckClick(Sender: TObject);
+    procedure popBoilerplatePopup(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure mnuBPSpellCheckClick(Sender: TObject);
+    procedure splBoilMoved(Sender: TObject);
+    procedure edtGapKeyPress(Sender: TObject; var Key: Char);
+    procedure edtNameExit(Sender: TObject);
+    procedure tmrAutoScrollTimer(Sender: TObject);
+    procedure tvTreeStartDrag(Sender: TObject;
+      var DragObject: TDragObject);
+    procedure tvTreeEndDrag(Sender, Target: TObject; X, Y: Integer);
+    procedure mnuGroupBPCopyClick(Sender: TObject);
+    procedure popGroupPopup(Sender: TObject);
+    procedure mnuBPCutClick(Sender: TObject);
+    procedure mnuBPCopyClick(Sender: TObject);
+    procedure mnuBPPasteClick(Sender: TObject);
+    procedure mnuGroupBPSelectAllClick(Sender: TObject);
+    procedure mnuBPSelectAllClick(Sender: TObject);
+    procedure mnuNodeDeleteClick(Sender: TObject);
+    procedure mnuNodeCopyClick(Sender: TObject);
+    procedure mnuNodePasteClick(Sender: TObject);
+    procedure mnuBPUndoClick(Sender: TObject);
+    procedure tvTreeKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure mnuEditClick(Sender: TObject);
+    procedure mnuGroupBoilerplateClick(Sender: TObject);
+    procedure cbShFindOptionClick(Sender: TObject);
+    procedure cbPerFindOptionClick(Sender: TObject);
+    procedure mnuTemplateClick(Sender: TObject);
+    procedure mnuFindSharedClick(Sender: TObject);
+    procedure mnuFindPersonalClick(Sender: TObject);
+    procedure mnuShCollapseClick(Sender: TObject);
+    procedure mnuPerCollapseClick(Sender: TObject);
+    procedure pnlShSearchResize(Sender: TObject);
+    procedure pnlPerSearchResize(Sender: TObject);
+    procedure pnlPropertiesResize(Sender: TObject);
+    procedure mbMainResize(Sender: TObject);
+    procedure mnuBPCheckGrammarClick(Sender: TObject);
+    procedure mnuSortClick(Sender: TObject);
+    procedure pnlBoilerplateCanResize(Sender: TObject; var NewWidth,
+      NewHeight: Integer; var Resize: Boolean);
+    procedure mnuBPTryClick(Sender: TObject);
+    procedure mnuAutoGenClick(Sender: TObject);
+    procedure reNotesChange(Sender: TObject);
+    procedure mnuNotesUndoClick(Sender: TObject);
+    procedure mnuNotesCutClick(Sender: TObject);
+    procedure mnuNotesCopyClick(Sender: TObject);
+    procedure mnuNotesPasteClick(Sender: TObject);
+    procedure mnuNotesSelectAllClick(Sender: TObject);
+    procedure mnuNotesGrammarClick(Sender: TObject);
+    procedure mnuNotesSpellingClick(Sender: TObject);
+    procedure popNotesPopup(Sender: TObject);
+    procedure cbNotesClick(Sender: TObject);
+    procedure cbDisplayOnlyClick(Sender: TObject);
+    procedure cbFirstLineClick(Sender: TObject);
+    procedure cbOneItemOnlyClick(Sender: TObject);
+    procedure cbHideDlgItemsClick(Sender: TObject);
+    procedure cbHideItemsClick(Sender: TObject);
+    procedure cbIndentClick(Sender: TObject);
+    procedure mnuToolsClick(Sender: TObject);
+    procedure mnuEditTemplateFieldsClick(Sender: TObject);
+    procedure mnuBPInsertFieldClick(Sender: TObject);
+    procedure mnuExportTemplateClick(Sender: TObject);
+    procedure mnuImportTemplateClick(Sender: TObject);
+    procedure cbxTypeDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure cbxTypeChange(Sender: TObject);
+    procedure cbxRemDlgsChange(Sender: TObject);
+    procedure mnuTemplateIconLegendClick(Sender: TObject);
+    procedure cbLongLinesClick(Sender: TObject);
+    procedure cbLockClick(Sender: TObject);
+    procedure mnuRefreshClick(Sender: TObject);
+    procedure reResizeRequest(Sender: TObject; Rect: TRect);
+    procedure reBoilSelectionChange(Sender: TObject);
+    procedure reGroupBPSelectionChange(Sender: TObject);
+    procedure cbxCOMObjChange(Sender: TObject);
+    procedure edtCOMParamChange(Sender: TObject);
+    procedure cbxLinkNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbxLinkChange(Sender: TObject);
+    procedure reBoilKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure reBoilKeyPress(Sender: TObject; var Key: Char);
+    procedure reBoilKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    FLastRect: TRect;
+    FForceContainer: boolean;
+    FSavePause: integer;
+    FCopyNode: TTreeNode;
+    FPasteNode: TTreeNode;
+    FCopying: boolean;
+    FDropNode: TTreeNode;
+    FDropInto: boolean;
+    FDragNode: TTreeNode;
+    FPersonalEmptyNodeCount: integer;
+    FSharedEmptyNodeCount: integer;
+//    FOldPersonalTemplate: TTemplate;
+    FCurrentPersonalUser: Int64;
+    FCanEditPersonal: boolean;
+    FCanEditShared: boolean;
+    FUpdating: boolean;
+    FCurTree: TTreeView;
+    FTreeControl: array[TTemplateTreeType, TTemplateTreeControl] of TControl;
+    FInternalHiddenExpand :boolean;
+    FFindShOn: boolean;
+    FFindShNext: boolean;
+    FLastFoundShNode: TTreeNode;
+    FFindPerOn: boolean;
+    FFindPerNext: boolean;
+    FLastFoundPerNode: TTreeNode;
+    FFirstShow: boolean;
+    FFocusName: boolean;
+    FOK2Close: boolean;
+    FBtnNewNode: TTreeNode;
+    FLastDropNode: TTreeNode;
+    FFromMainMenu: boolean;
+    FMainMenuTree: TTreeView;
+    FDragOverCount: integer;
+    FBPOK: boolean;
+    FImportingFromXML: boolean;
+    FXMLTemplateElement: IXMLDOMNode;
+    FXMLFieldElement: IXMLDOMNode;
+    FCanDoReminders: boolean;
+    FCanDoCOMObjects: boolean;
+    //FPersonalObjects: TStringList;
+    FShowingTemplate: TTemplate;
+    FConsultServices: TStringList;
+    FNavigatingTab: boolean;
+  protected
+    procedure UpdateXY(re: TRichEdit; lblX, lblY: TLabel);
+    function IsTemplateLocked(Node: TTreeNode): boolean;
+    procedure RefreshData;
+    procedure ShowTemplateType(Template: TTemplate);
+    procedure DisplayBoilerplate(Node: TTreeNode);
+    procedure NewPersonalUser(UsrIEN: Int64);
+    procedure HideControls;
+    procedure EnableControls(ok, Root: boolean);
+    procedure EnableNavControls;
+    procedure MoveCopyButtons;
+    procedure ShowInfo(Node: TTreeNode);
+    function ChangeTree(NewTree: TTreeView): boolean;
+    procedure Resync(const Templates: array of TTemplate);
+    function AllowMove(ADropNode, ADragNode: TTreeNode): boolean;
+    function CanClone(const Node: TTreeNode): boolean;
+    function Clone(Node: TTreeNode): boolean;
+    procedure SharedEditing;
+    function GetTree: TTreeView;
+    procedure SetFindNext(const Tree: TTreeView; const Value: boolean);
+    function ScanNames: boolean;
+    function PasteOK: boolean;
+    function AutoDel(Template: TTemplate): boolean;
+    procedure cbClick(Sender: TCheckBox; Index: integer);
+    procedure UpdateInsertsDialogs;
+    procedure AutoLongLines(Sender: TObject);
+    //procedure UpdatePersonalObjects;
+    procedure UpdateApply(Template: TTemplate);
+    procedure TemplateLocked(Sender: TObject);
+    procedure InitTrees;
+    procedure AdjustControls4FontChange;
+    procedure ShowGroupBoilerplate(Visible: boolean);
+    function GetLinkType(const ANode: TTreeNode): TTemplateLinkType;
+  end;
+
+procedure EditTemplates(Form: TForm; NewTemplate: boolean = FALSE; CopiedText: string = ''; Shared: boolean = FALSE);
+
+const
+  TemplateEditorSplitters = 'frmTempEditSplitters';
+  TemplateEditorSplitters2 = 'frmTempEditSplitters2';
+
+var
+  tmplEditorSplitterMiddle: integer = 0;
+  tmplEditorSplitterProperties: integer = 0;
+  tmplEditorSplitterMain: integer = 0;
+  tmplEditorSplitterBoil: integer = 0;
+  tmplEditorSplitterNotes: integer = 0;
+
+implementation
+
+{$R *.DFM}
+
+uses dShared, uCore, rTemplates, fTemplateObjects, uSpell, fTemplateView,
+  fTemplateAutoGen, fDrawers, fTemplateFieldEditor, fTemplateFields, XMLUtils,
+  fIconLegend, uReminders, uConst, rCore, rEventHooks, rConsults, VAUtils,
+  rMisc, fFindingTemplates;
+
+const
+  PropText = ' Template Properties ';
+//  GroupTag = 5;
+  BPDisplayOnlyFld  = 0;
+  BPFirstLineFld    = 1;
+  BPOneItemOnlyFld  = 2;
+  BPHideDlgItemsFld = 3;
+  BPHideItemsFld    = 4;
+  BPIndentFld       = 5;
+  BPLockFld         = 6;
+  NoIE5 = 'You must have Internet Explorer 5 or better installed to %s Templates';
+  NoIE5Header = 'Need Internet Explorer 5';
+  VK_A              = Ord('A');
+  VK_C              = Ord('C');
+  VK_E              = Ord('E');
+  VK_F              = Ord('F');
+  VK_G              = Ord('G');
+  VK_I              = Ord('I');
+  VK_S              = Ord('S');
+  VK_T              = Ord('T');
+  VK_V              = Ord('V');
+  VK_X              = Ord('X');
+  VK_Z              = Ord('Z');
+
+type
+  TTypeIndex = (tiTemplate, tiFolder, tiGroup, tiDialog, tiRemDlg, tiCOMObj);
+
+const
+  tiNone = TTypeIndex(-1);
+//  TypeTag: array[TTypeIndex] of integer = (7, 6, 8, -8, 7, 7);
+  ttDialog = TTemplateType(-ord(ttGroup));
+
+  TypeTag: array[TTypeIndex] of TTemplateType = (ttDoc, ttClass, ttGroup, ttDialog, ttDoc, ttDoc);
+  ForcedIdx: array[boolean, TTypeIndex] of integer = ((0,1,2,3,4,5),(-1,0,1,2,-1,-1));
+  IdxForced: array[boolean, 0..5] of TTypeIndex = ((tiTemplate, tiFolder, tiGroup, tiDialog, tiRemDlg, tiCOMObj),
+                                                   (tiFolder, tiGroup, tiDialog, tiNone, tiNone, tiNone));
+  iMessage = 'This template has one or more new fields, and you are not authorized to create new fields.  ' +
+             'If you continue, the program will import the new template without the new fields.  Do you wish ' +
+             'to do this?';
+  iMessage2 = 'The imported template fields had XML errors.  ';
+  iMessage3 = 'No Fields were imported.';
+
+var
+  frmTemplateObjects: TfrmTemplateObjects = nil;
+  frmTemplateFields: TfrmTemplateFields = nil;
+
+procedure EditTemplates(Form: TForm; NewTemplate: boolean = FALSE;
+                        CopiedText: string = ''; Shared: boolean = FALSE);
+var
+  frmTemplateEditor: TfrmTemplateEditor;
+  Drawers: TFrmDrawers;
+  ExpandStr, SelectStr: string;
+  SelNode: TTreeNode;
+  SelShared: boolean;
+
+begin
+  if(UserTemplateAccessLevel in [taReadOnly, taNone]) then exit;
+
+  ExpandStr := '';
+  SelectStr := '';
+  Drawers := nil;
+  if(not NewTemplate) and (CopiedText = '') then
+  begin
+    if Form is TfrmDrawers then
+      Drawers := TFrmDrawers(Form)
+    else
+    if IsPublishedProp(Form, DrawersProperty) then
+      Drawers := TFrmDrawers(GetOrdProp(Form, DrawersProperty));
+  end;
+
+  if assigned(Drawers) then
+  begin
+    ExpandStr := Drawers.tvTemplates.GetExpandedIDStr(1, ';');
+    SelectStr := Drawers.tvTemplates.GetNodeID(TORTreeNode(Drawers.tvTemplates.Selected),1,';');
+  end;
+
+  frmTemplateEditor := TfrmTemplateEditor.Create(Application);
+  try
+    with frmTemplateEditor do
+    begin
+      Font := Form.Font;
+      reBoil.Font.Size := Form.Font.Size;
+      reGroupBP.Font.Size := Form.Font.Size;
+      reNotes.Font.Size := Form.Font.Size;
+      dmodShared.ExpandTree(tvShared, ExpandStr, FSharedEmptyNodeCount);
+      SelNode := tvShared.FindPieceNode(SelectStr,1,';');
+      SelShared := assigned(SelNode);
+      dmodShared.ExpandTree(tvPersonal, ExpandStr, FPersonalEmptyNodeCount);
+      if not SelShared then
+        SelNode := tvPersonal.FindPieceNode(SelectStr,1,';');
+
+      if(SelShared and (not Shared)) then
+        Shared := TRUE;
+
+      if(Shared and (UserTemplateAccessLevel = taEditor)) then
+      begin
+        cbEditShared.Checked := TRUE;
+        ActiveControl := tvShared;
+        if SelShared then
+          tvShared.Selected := SelNode
+        else
+          tvShared.Selected := tvShared.Items.GetFirstNode;
+      end
+      else
+      if(not SelShared) and (assigned(SelNode)) then
+        tvPersonal.Selected := SelNode;
+      if(NewTemplate) then
+      begin
+        btnNewClick(frmTemplateEditor);
+        if(CopiedText <> '') then
+        begin
+          TTemplate(FBtnNewNode.Data).Boilerplate := CopiedText;
+          ShowInfo(FBtnNewNode);
+        end;
+      end;
+      ShowModal;
+    end;
+  finally
+    frmTemplateEditor.Free;
+  end;
+end;
+
+procedure TfrmTemplateEditor.btnNewClick(Sender: TObject);
+var
+  idx: integer;
+  Tmp, Owner: TTemplate;
+  Node, PNode: TTreeNode;
+  ownr: string;
+  ok: boolean;
+  ACheckBox: TCheckBox;
+
+begin
+  if((assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if(FCurTree = tvShared) and (FCanEditShared) then
+      ok := TRUE
+    else
+    if(FCurTree = tvPersonal) and (FCanEditPersonal) then
+      ok := TRUE
+    else
+      ok := FALSE;
+    if(ok) then
+    begin
+      Node := FCurTree.Selected;
+      PNode := Node;
+      if(TTemplate(Node.Data).RealType = ttDoc) then
+        PNode := Node.Parent;
+      if CanClone(PNode) then
+      begin
+        Clone(PNode);
+        Owner := TTemplate(PNode.Data);
+        if assigned(Owner) and Owner.CanModify then
+        begin
+          if Node = PNode then
+            idx := 0
+          else
+            idx := Owner.Items.IndexOf(Node.Data) + 1;
+          if(FCurTree = tvShared) then
+            begin
+              ownr := '';
+              ACheckBox := cbShHide;
+            end
+          else
+            begin
+              ownr := IntToStr(User.DUZ);
+              ACheckBox := cbPerHide;
+            end;
+          if FImportingFromXML then
+          begin
+            Tmp := TTemplate.CreateFromXML(FXMLTemplateElement, ownr);
+            ACheckBox.Checked := ACheckBox.Checked and Tmp.Active;
+          end
+          else
+          begin
+            Tmp := TTemplate.Create('0^T^A^'+NewTemplateName+'^^^'+ownr);
+            Tmp.BackupItems;
+            Templates.AddObject(Tmp.ID, Tmp);
+          end;
+          btnApply.Enabled := TRUE;
+          if(idx >= Owner.Items.Count) then
+            Owner.Items.Add(Tmp)
+          else
+            Owner.Items.Insert(idx, Tmp);
+          Resync([Owner]);
+          Node := FCurTree.Selected;
+          if(Node.Data <> Tmp) then
+          begin
+            if(TTemplate(Node.Data).RealType = ttDoc) then
+              Node := Node.GetNextSibling
+            else
+            begin
+              Node.Expand(FALSE);
+              Node := Node.GetFirstChild;
+            end;
+            FCurTree.Selected := Node;
+          end;
+          FBtnNewNode := Node;
+          if(FFirstShow) then
+            FFocusName := TRUE
+          else
+          begin
+            edtName.SetFocus;
+            edtName.SelectAll;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.btnApplyClick(Sender: TObject);
+begin
+  if(ScanNames) then
+  begin
+    SaveAllTemplates;
+    BtnApply.Enabled := BackupDiffers;
+    if not BtnApply.Enabled then
+      UnlockAllTemplates;
+  end;
+end;
+
+procedure TfrmTemplateEditor.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  //Now fix everything the resize messed up
+  lblLines.Width := cbLock.Left - lblLines.Left - 15;
+  sbPerDelete.Left := pnlPersonalBottom.ClientWidth - sbPerDelete.Width - 1;
+  sbPerDown.Left := sbPerDelete.Left - sbPerDown.Width - 2;
+  sbPerUp.Left := sbPerDown.Left - sbPerUp.Width - 2;
+  cbPerHide.Width := sbPerUp.Left - 3;
+  btnPerFind.Left := pnlPerSearch.ClientWidth - btnPerFind.Width;
+
+  FSavePause := Application.HintHidePause;
+  Application.HintHidePause := FSavePause*2;
+  if InteractiveRemindersActive then
+  begin
+    QuickCopy(GetTemplateAllowedReminderDialogs, cbxRemDlgs.Items);
+    FCanDoReminders := (cbxRemDlgs.Items.Count > 0);
+  end
+  else
+    FCanDoReminders := FALSE;
+
+  QuickCopy(GetAllActiveCOMObjects, cbxCOMObj.Items);
+  FCanDoCOMObjects := (cbxCOMObj.Items.Count > 0);
+
+  FUpdating := TRUE;
+  FFirstShow := TRUE;
+
+  FTreeControl[ttShared,   tcDel]  := sbShDelete;
+  FTreeControl[ttShared,   tcUp]   := sbShUp;
+  FTreeControl[ttShared,   tcDown] := sbShDown;
+  FTreeControl[ttShared,   tcLbl]  := lblCopy;
+  FTreeControl[ttShared,   tcCopy] := sbCopyRight;
+  FTreeControl[ttPersonal, tcDel]  := sbPerDelete;
+  FTreeControl[ttPersonal, tcUp]   := sbPerUp;
+  FTreeControl[ttPersonal, tcDown] := sbPerDown;
+  FTreeControl[ttPersonal, tcLbl]  := lblCopy;
+  FTreeControl[ttPersonal, tcCopy] := sbCopyLeft;
+  dmodShared.InEditor := TRUE;
+  dmodShared.OnTemplateLock := TemplateLocked;
+
+  gbProperties.Caption := PropText;
+  pnlShSearch.Visible := FALSE;
+  pnlPerSearch.Visible := FALSE;
+  FCanEditPersonal := TRUE;
+
+{ Don't mess with the order of the following commands! }
+  InitTrees;
+
+  tvPersonal.Selected := tvPersonal.Items.GetFirstNode;
+
+  ClearBackup;
+
+  cboOwner.SelText := MixedCase(User.Name);
+  NewPersonalUser(User.DUZ);
+
+  cbEditShared.Visible := (UserTemplateAccessLevel = taEditor);
+  FCanEditShared := FALSE;
+  SharedEditing;
+
+  HideControls;
+
+  lblCopy.AutoSize := TRUE;
+  lblCopy.AutoSize := FALSE; // resets height based on font
+  lblCopy.Width := pnlCopyBtns.Width + splMiddle.Width;
+  MoveCopyButtons;
+
+  cbShHide.Checked := TRUE;
+  cbPerHide.Checked := TRUE;
+
+  BtnApply.Enabled := BackupDiffers;
+  SetFormPosition(Self);
+end;
+
+procedure TfrmTemplateEditor.HideControls;
+begin
+  sbCopyRight.Visible := FCanEditPersonal;
+  if(not FCanEditPersonal) then
+    cbPerHide.Checked := TRUE;
+  cbPerHide.Visible := FCanEditPersonal;
+  sbPerDelete.Visible := FCanEditPersonal;
+  sbPerUp.Visible := FCanEditPersonal;
+  sbPerDown.Visible := FCanEditPersonal;
+  tvPersonal.ReadOnly := not FCanEditPersonal;
+  MoveCopyButtons;
+end;
+
+procedure TfrmTemplateEditor.cboOwnerNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+//  cboOwner.ForDataUse(SubSetOfTemplateOwners(StartFrom, Direction));
+end;
+
+procedure TfrmTemplateEditor.cboOwnerChange(Sender: TObject);
+begin
+  NewPersonalUser(cboOwner.ItemIEN);
+end;
+
+procedure TfrmTemplateEditor.NewPersonalUser(UsrIEN: Int64);
+var
+  NewEdit: boolean;
+
+begin
+  FCurrentPersonalUser := UsrIEN;
+  NewEdit := (FCurrentPersonalUser = User.DUZ);
+  if(FCanEditPersonal <> NewEdit) then
+  begin
+    FCanEditPersonal := NewEdit;
+    HideControls;
+  end;
+end;
+
+procedure TfrmTemplateEditor.tvPersonalExpanding(Sender: TObject;
+  Node: TTreeNode; var AllowExpansion: Boolean);
+begin
+  AllowExpansion := dmodShared.ExpandNode(tvPersonal, Node,
+                    FPersonalEmptyNodeCount, not cbPerHide.Checked);
+  if(AllowExpansion and FInternalHiddenExpand) then
+    AllowExpansion := FALSE;
+end;
+
+procedure TfrmTemplateEditor.tvSharedExpanding(Sender: TObject;
+  Node: TTreeNode; var AllowExpansion: Boolean);
+begin
+  AllowExpansion := dmodShared.ExpandNode(tvShared, Node,
+                    FSharedEmptyNodeCount, not cbShHide.Checked);
+  if(AllowExpansion and FInternalHiddenExpand) then
+    AllowExpansion := FALSE;
+end;
+
+procedure TfrmTemplateEditor.tvTreeGetImageIndex(Sender: TObject;
+  Node: TTreeNode);
+begin
+  Node.ImageIndex := dmodShared.ImgIdx(Node);
+end;
+
+procedure TfrmTemplateEditor.tvTreeGetSelectedIndex(Sender: TObject;
+  Node: TTreeNode);
+begin
+  Node.SelectedIndex := dmodShared.ImgIdx(Node);
+end;
+
+function TfrmTemplateEditor.IsTemplateLocked(Node: TTreeNode): boolean;
+var
+  Template: TTemplate;
+  
+begin
+  Result := FALSE;
+  if assigned(Node) then
+  begin
+    Template := TTemplate(Node.Data);
+    if Template.AutoLock then
+      Result := TRUE
+    else
+    if (Template.PersonalOwner = 0) then
+    begin
+      if RootTemplate.IsLocked then
+        Result := TRUE
+      else
+      begin
+        Result := TTemplate(Node.Data).IsLocked;
+        if (not Result) and assigned(Node.Parent) and
+           (TTemplate(Node.Parent).PersonalOwner = 0) then
+          Result := IsTemplateLocked(Node.Parent);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.tvTreeChange(Sender: TObject;
+  Node: TTreeNode);
+var
+  ok, Something: boolean;
+  Template: TTemplate;
+
+begin
+  ChangeTree(TTreeView(Sender));
+  Something := assigned(Node);
+  if Something then
+  begin
+    Template := TTemplate(Node.Data);
+    Something := assigned(Template);
+    if Something then
+    begin
+      if(Sender = tvPersonal) then
+      begin
+        ok := FCanEditPersonal;
+        if ok and (Template.PersonalOwner = 0) and IsTemplateLocked(Node) then
+          ok := FALSE;
+      end
+      else
+        ok := FCanEditShared;
+      EnableControls(ok, (Template.RealType in AllTemplateRootTypes));
+      ShowInfo(Node);
+    end;
+  end;
+  if not Something then
+  begin
+    gbProperties.Caption := PropText;
+    EnableControls(FALSE, FALSE);
+    ShowInfo(nil);
+  end;
+end;
+
+procedure TfrmTemplateEditor.EnableControls(ok, Root: boolean);
+begin
+  cbLock.Enabled := ok and (FCurTree = tvShared);
+  if(ok and Root) then
+  begin
+    ok := FALSE;
+    lblName.Enabled := TRUE;
+    edtName.Enabled := TRUE;
+    reNotes.ReadOnly := FALSE;
+  end
+  else
+  begin
+    lblName.Enabled := ok;
+    edtName.Enabled := ok;
+    reNotes.ReadOnly := not ok;
+  end;
+  lblNotes.Enabled := (not reNotes.ReadOnly);
+  UpdateReadOnlyColorScheme(reNotes, reNotes.ReadOnly);
+  cbxType.Enabled := ok;
+  lblType.Enabled := ok;
+  lblRemDlg.Enabled := ok;
+  cbxRemDlgs.Enabled := ok and FCanDoReminders;
+  cbActive.Enabled := ok;
+  cbExclude.Enabled := ok;
+  cbDisplayOnly.Enabled := ok;
+  cbFirstLine.Enabled := ok;
+  cbOneItemOnly.Enabled := ok;
+  cbHideDlgItems.Enabled := ok;
+  cbHideItems.Enabled := ok;
+  cbIndent.Enabled := ok;
+  edtGap.Enabled := ok;
+  udGap.Enabled := ok;
+  udGap.Invalidate;
+  lblLines.Enabled := ok;
+  reBoil.ReadOnly := not ok;
+  UpdateReadOnlyColorScheme(reBoil, not ok);
+  lblLink.Enabled := ok;
+  cbxLink.Enabled := ok;
+  ok := ok and FCanDoCOMObjects;
+  cbxCOMObj.Enabled := ok;
+  lblCOMObj.Enabled := ok;
+  edtCOMParam.Enabled := ok;
+  lblCOMParam.Enabled := ok;
+  UpdateInsertsDialogs;
+  EnableNavControls;
+end;
+
+procedure TfrmTemplateEditor.MoveCopyButtons;
+var
+  tmpHeight: integer;
+
+begin
+  tmpHeight := tvShared.Height;
+  dec(tmpHeight,lblCopy.Height);
+  if(sbCopyLeft.Visible) then
+    dec(tmpHeight, sbCopyLeft.Height+5);
+  if(sbCopyRight.Visible) then
+    dec(tmpHeight, sbCopyRight.Height+5);
+  tmpHeight := (tmpHeight div 2) + tvShared.Top;
+  lblCopy.Top := tmpHeight;
+  inc(tmpHeight,lblCopy.height+5);
+  if(sbCopyLeft.Visible) then
+  begin
+    sbCopyLeft.Top := tmpHeight;
+    inc(tmpHeight, sbCopyLeft.Height+5);
+  end;
+  if(sbCopyRight.Visible) then
+    sbCopyRight.Top := tmpHeight;
+end;
+
+procedure TfrmTemplateEditor.splMainMoved(Sender: TObject);
+begin
+  MoveCopyButtons;
+end;
+
+procedure TfrmTemplateEditor.ShowGroupBoilerplate(Visible: boolean);
+begin
+  pnlGroupBP.Visible := Visible;
+  splBoil.Visible := Visible;
+  if Visible then
+  begin
+    reBoil.Align := alTop;
+    pnlGroupBP.Align := alClient;
+    reBoil.Height := tmplEditorSplitterBoil;
+    splBoil.Top := pnlGroupBP.Top - splBoil.Height;
+  end
+  else
+  begin
+    pnlGroupBP.Align := alBottom;
+    reBoil.Align := alClient;
+  end;
+end;
+
+procedure TfrmTemplateEditor.ShowInfo(Node: TTreeNode);
+var
+  OldUpdating, ClearName, ClearRB, ClearAll: boolean;
+  Idx: TTypeIndex;
+  CanDoCOM: boolean;
+  lt: TTemplateLinkType;
+  lts: string;
+
+begin
+  OldUpdating := FUpdating;
+  FUpdating := TRUE;
+  try
+    if(assigned(Node)) then
+    begin
+      FShowingTemplate := TTemplate(Node.Data);
+      with FShowingTemplate do
+      begin
+        ClearName := FALSE;
+        ClearRB := FALSE;
+        ClearAll := FALSE;
+        ShowTemplateType(TTemplate(Node.Data));
+        lt := GetLinkType(Node);
+        if(lt = ltNone) or (IsReminderDialog and (not (lt in [ltNone, ltTitle]))) then
+          pnlLink.Visible := FALSE
+        else
+        begin
+          pnlLink.Visible := TRUE;
+          pnlLink.Tag := ord(lt);
+          case lt of
+            ltTitle:     lts := 'Title';
+            ltConsult:   lts := 'Consult Service';
+            ltProcedure: lts := 'Procedure';
+            else         lts := '';
+          end;
+          cbxLink.Clear;
+          if lt = ltConsult then
+          begin
+            cbxLink.LongList := FALSE;
+            if not assigned(FConsultServices) then
+            begin
+              FConsultServices := TStringList.Create;
+              FastAssign(LoadServiceListWithSynonyms(1), FConsultServices);
+              SortByPiece(FConsultServices, U, 2);
+            end;
+            FastAssign(FConsultServices, cbxLink.Items);
+          end
+          else
+          begin
+            cbxLink.LongList := TRUE;
+            cbxLink.HideSynonyms := TRUE;
+            cbxLink.InitLongList(LinkName);
+          end;
+          cbxLink.SelectByID(LinkIEN);
+          lblLink.Caption := ' Associated ' + lts + ': ';
+          cbxLink.Caption := lblLink.Caption;
+        end;
+
+        edtName.Text := PrintName;
+        reNotes.Lines.Text := Description;
+        if(PersonalOwner = 0) and (FCurTree = tvShared) and (cbEditShared.Checked) then
+        begin
+          cbLock.Checked := IsLocked;
+          if AutoLock then
+            cbLock.Enabled := FALSE;
+        end
+        else
+        begin
+          cbLock.Checked := IsTemplateLocked(Node);
+          cbLock.Enabled := FALSE;
+        end;
+        CanDoCom := FCanDoCOMObjects and (PersonalOwner = 0);
+        if(RealType in AllTemplateRootTypes) then
+        begin
+          ClearRB := TRUE;
+          ClearAll := TRUE;
+        end
+        else
+        begin
+          case RealType of
+            ttDoc: begin
+                     if IsReminderDialog then
+                       Idx := tiRemDlg
+                     else
+                     if IsCOMObject then
+                       Idx := tiCOMObj
+                     else
+                       Idx := tiTemplate;
+                   end;
+            ttGroup: begin
+                       if(Dialog) then
+                         Idx := tiDialog
+                       else
+                         Idx := tiGroup;
+                     end;
+            ttClass: Idx := tiFolder;
+            else Idx := tiNone;
+          end;
+          FForceContainer := ((RealType in [ttGroup, ttClass]) and (Children <> tcNone));
+          cbxType.Items.Clear;
+          if not FForceContainer then
+            cbxType.Items.Add('Template');
+          cbxType.Items.Add('Folder');
+          cbxType.Items.Add('Group Template');
+          cbxType.Items.Add('Dialog');
+          if (not FForceContainer) then
+          begin
+            if(FCanDoReminders or CanDoCOM) then
+              cbxType.Items.Add('Reminder Dialog');
+            if(CanDoCOM) then
+              cbxType.Items.Add('COM Object');
+          end;
+          cbxType.ItemIndex := ForcedIdx[FForceContainer, Idx];
+          if(Idx = tiRemDlg) and FCanDoReminders then
+            cbxRemDlgs.SelectByID(ReminderDialogIEN)
+          else
+          begin
+            lblRemDlg.Enabled := FALSE;
+            cbxRemDlgs.Enabled := FALSE;
+            cbxRemDlgs.ItemIndex := -1;
+          end;
+          if (Idx = tiCOMObj) and CanDoCOM then
+          begin
+            pnlCOM.Visible := TRUE;
+            cbxCOMObj.SelectByIEN(COMObject);
+            edtCOMParam.Text := COMParam;
+          end
+          else
+          begin
+            pnlCOM.Visible := FALSE;
+            cbxCOMObj.ItemIndex := -1;
+            edtCOMParam.Text := '';
+          end;
+          cbActive.Checked := Active;
+          if(RealType in [ttClass, ttGroup]) then
+            cbHideItems.Checked := HideItems
+          else
+          begin
+            cbHideItems.Checked := FALSE;
+            cbHideItems.Enabled := FALSE;
+          end;
+          if((RealType in [ttDoc, ttGroup]) and (assigned(Node.Parent)) and
+             (TTemplate(Node.Parent.Data).RealType = ttGroup) and
+             (not IsReminderDialog) and (not IsCOMObject)) then
+            cbExclude.Checked := Exclude
+          else
+          begin
+            cbExclude.Checked := FALSE;
+            cbExclude.Enabled := FALSE;
+          end;
+          if dmodShared.InDialog(Node) and (not IsReminderDialog) and (not IsCOMObject) then
+          begin
+            cbDisplayOnly.Checked := DisplayOnly;
+            cbFirstLine.Checked := FirstLine;
+          end
+          else
+          begin
+            cbDisplayOnly.Checked := FALSE;
+            cbDisplayOnly.Enabled := FALSE;
+            cbFirstLine.Checked := FALSE;
+            cbFirstLine.Enabled := FALSE;
+          end;
+          if(RealType in [ttGroup, ttClass]) and (Children <> tcNone) and
+            (dmodShared.InDialog(Node)) then
+          begin
+            cbOneItemOnly.Checked := OneItemOnly;
+            cbIndent.Checked := IndentItems;
+            if(RealType = ttGroup) and (Boilerplate <> '') then
+            begin
+              cbHideDlgItems.Checked := HideDlgItems;
+            end
+            else
+            begin
+              cbHideDlgItems.Checked := FALSE;
+              cbHideDlgItems.Enabled := FALSE;
+            end;
+          end
+          else
+          begin
+            cbOneItemOnly.Checked := FALSE;
+            cbOneItemOnly.Enabled := FALSE;
+            cbHideDlgItems.Checked := FALSE;
+            cbHideDlgItems.Enabled := FALSE;
+            cbIndent.Checked := FALSE;
+            cbIndent.Enabled := FALSE;
+          end;
+          if(RealType = ttGroup) then
+            edtGap.Text := IntToStr(Gap)
+          else
+          begin
+            edtGap.Text := '0';
+            edtGap.Enabled := FALSE;
+            udGap.Enabled := FALSE;
+            udGap.Invalidate;
+            lblLines.Enabled := FALSE;
+          end;
+          DisplayBoilerPlate(Node);
+        end;
+      end;
+    end
+    else
+    begin
+      ClearAll := TRUE;
+      ClearRB := TRUE;
+      ClearName := TRUE;
+      gbProperties.Caption := PropText;
+    end;
+    if(ClearName) then
+    begin
+      edtName.Text := '';
+      reNotes.Clear;
+    end;
+    if(ClearRB) then
+    begin
+      cbxType.ItemIndex := Ord(tiNone);
+    end;
+    if(ClearAll) then
+    begin
+      cbActive.Checked := FALSE;
+      cbExclude.Checked := FALSE;
+      cbDisplayOnly.Checked := FALSE;
+      cbFirstLine.Checked := FALSE;
+      cbOneItemOnly.Checked := FALSE;
+      cbHideDlgItems.Checked := FALSE;
+      cbHideItems.Checked := FALSE;
+      cbIndent.Checked := FALSE;
+      edtGap.Text := '0';
+      reBoil.Clear;
+      ShowGroupBoilerplate(False);
+      pnlBoilerplateResize(Self);
+      pnlCOM.Visible := FALSE;
+      pnlLink.Visible := FALSE;
+    end;
+    if cbDisplayOnly.Enabled  or
+       cbFirstLine.Enabled    or
+       cbIndent.Enabled       or
+       cbOneItemOnly.Enabled  or
+       cbHideDlgItems.Enabled then
+      gbDialogProps.Font.Color := clWindowText
+    else
+      gbDialogProps.Font.Color := clInactiveCaption;
+  finally
+    FUpdating := OldUpdating;
+  end;
+end;
+
+procedure TfrmTemplateEditor.pnlBoilerplateResize(Sender: TObject);
+var
+  Max: integer;
+
+begin
+  if(pnlGroupBP.Visible) and (pnlGroupBP.Height > (pnlBoilerplate.Height-29)) then
+  begin
+    pnlGroupBP.Height := pnlBoilerplate.Height-29;
+  end;
+  if cbLongLines.checked then
+    Max := 240
+  else
+    Max := MAX_ENTRY_WIDTH;
+  LimitEditWidth(reBoil, Max);
+  LimitEditWidth(reNotes, MAX_ENTRY_WIDTH);
+end;
+
+procedure TfrmTemplateEditor.edtNameOldChange(Sender: TObject);
+var
+  i: integer;
+  Template: TTemplate;
+  DoRefresh: boolean;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      DoRefresh := Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        Template.PrintName := edtName.Text;
+        UpdateApply(Template);
+        for i := 0 to Template.Nodes.Count-1 do
+          TTreeNode(Template.Nodes.Objects[i]).Text := Template.PrintName;
+        if(DoRefresh) then
+        begin
+          tvShared.Invalidate;
+          tvPersonal.Invalidate;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbActiveClick(Sender: TObject);
+var
+  i: integer;
+  Template: TTemplate;
+  Node: TTreeNode;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        Template.Active := cbActive.Checked;
+        UpdateApply(Template);
+        for i := 0 to Template.Nodes.Count-1 do
+        begin
+          Node := TTreeNode(Template.Nodes.Objects[i]);
+          Node.Cut := not Template.Active;
+        end;
+        if(FCurTree = tvShared) then
+        begin
+          cbPerHideClick(Sender);
+          cbShHideClick(Sender);
+        end
+        else
+        begin
+          cbShHideClick(Sender);
+          cbPerHideClick(Sender);
+        end;
+        tvTreeChange(FCurTree, FCurTree.Selected);
+        EnableNavControls;
+        if cbActive.CanFocus then
+          cbActive.SetFocus;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbExcludeClick(Sender: TObject);
+var
+  i: integer;
+  Template: TTemplate;
+  Node: TTreeNode;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        Template.Exclude := cbExclude.Checked;
+        UpdateApply(Template);
+        for i := 0 to Template.Nodes.Count-1 do
+        begin
+          Node := TTreeNode(Template.Nodes.Objects[i]);
+          Node.ImageIndex := dmodShared.ImgIdx(Node);
+          Node.SelectedIndex := dmodShared.ImgIdx(Node);
+        end;
+        tvShared.Invalidate;
+        tvPersonal.Invalidate;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.edtGapChange(Sender: TObject);
+var
+  DoRefresh: boolean;
+  Template: TTemplate;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      DoRefresh := Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        Template.Gap := StrToIntDef(edtGap.Text, 0);
+        UpdateApply(Template);
+        DisplayBoilerPlate(FCurTree.Selected);
+        if(DoRefresh) then
+        begin
+          tvShared.Invalidate;
+          tvPersonal.Invalidate;
+        end;
+      end;
+    end;
+  end;
+end;
+
+function TfrmTemplateEditor.ChangeTree(NewTree: TTreeView): boolean;
+var
+  i: TTemplateTreeControl;
+
+begin
+  Result := FALSE;
+  tvShared.HideSelection := TRUE;
+  tvPersonal.HideSelection := TRUE;
+  if(NewTree <> FCurTree) then
+  begin
+    Result := TRUE;
+    if(assigned(FCurTree)) then
+    begin
+      for i := low(TTemplateTreeControl) to high(TTemplateTreeControl) do
+        FTreeControl[TTemplateTreeType(FCurTree.Tag), i].Enabled := FALSE;
+    end;
+    FCurTree := NewTree;
+  end;
+  if(assigned(FCurTree)) then
+  begin
+    FCurTree.HideSelection := FALSE;
+    if(FCurTree = tvPersonal) and (Screen.ActiveControl = tvShared) then
+      tvPersonal.SetFocus
+    else
+    if(FCurTree = tvShared) and (Screen.ActiveControl = tvPersonal) then
+      tvShared.SetFocus;
+  end;
+end;
+
+procedure TfrmTemplateEditor.tvTreeEnter(Sender: TObject);
+begin
+  if((Sender is TTreeView) and (ChangeTree(TTreeView(Sender)))) then
+    tvTreeChange(Sender, TTreeView(Sender).Selected);
+end;
+
+procedure TfrmTemplateEditor.tvTreeNodeEdited(Sender: TObject;
+  Node: TTreeNode; var S: String);
+begin
+  FUpdating := TRUE;
+  try
+    edtName.Text := S;
+  finally
+    FUpdating := FALSE;
+  end;
+  edtNameOldChange(edtName);
+end;
+
+procedure TfrmTemplateEditor.cbShHideClick(Sender: TObject);
+var
+  Node: TTreeNode;
+
+begin
+  Node := tvShared.Items.GetFirstNode;
+  while assigned(Node) do
+  begin
+    dmodShared.Resync(Node, not cbShHide.Checked, FSharedEmptyNodeCount);
+    Node := Node.getNextSibling;
+  end;
+  tvTreeChange(tvShared, tvShared.Selected);
+  EnableNavControls;
+end;
+
+procedure TfrmTemplateEditor.cbPerHideClick(Sender: TObject);
+begin
+  dmodShared.Resync(tvPersonal.Items.GetFirstNode, not cbPerHide.Checked,
+                                                          FPersonalEmptyNodeCount);
+  tvTreeChange(tvPersonal, tvPersonal.Selected);
+  EnableNavControls;
+end;
+
+procedure TfrmTemplateEditor.DisplayBoilerplate(Node: TTreeNode);
+var
+  OldUpdating, ItemOK, BPOK, LongLines: boolean;
+  i: integer;
+  TmpSL: TStringList;
+
+begin
+  OldUpdating := FUpdating;
+  FUpdating := TRUE;
+  try
+    pnlBoilerplateResize(pnlBoilerplate);
+    reBoil.Clear;
+    ItemOK := FALSE;
+    BPOK := TRUE;
+    with Node, TTemplate(Node.Data) do
+    begin
+      if(RealType in [ttDoc, ttGroup]) then
+      begin
+        TmpSL := TStringList.Create;
+        try
+          if(RealType = ttGroup) and (not reBoil.ReadOnly) then
+          begin
+            ItemOK := TRUE;
+            TmpSL.Text := Boilerplate;
+            reGroupBP.Clear;
+            reGroupBP.SelText := FullBoilerplate;
+          end
+          else
+            TmpSL.Text := FullBoilerplate;
+          LongLines := FALSE;
+          for i := 0 to TmpSL.Count-1 do
+          begin
+            if length(TmpSL[i]) > MAX_ENTRY_WIDTH then
+            begin
+              LongLines := TRUE;
+              break;
+            end;
+          end;
+          cbLongLines.Checked := LongLines;
+          reBoil.SelText := TmpSL.Text;
+        finally
+          TmpSL.Free;
+        end;
+      end
+      else
+      begin
+        reBoil.ReadOnly := TRUE;
+        UpdateReadOnlyColorScheme(reBoil, TRUE);
+        UpdateInsertsDialogs;
+      end;
+      ShowGroupBoilerplate(ItemOK);
+      if(not ItemOK) and (IsReminderDialog or IsCOMObject) then
+        BPOK := FALSE;
+      pnlBoilerplateResize(Self);
+      pnlBoilerplate.Visible := BPOK;
+      lblBoilerplate.Visible := BPOK;
+      pnlCOM.Visible := (not BPOK) and IsCOMObject;
+    end;
+  finally
+    FUpdating := OldUpdating;
+  end;
+end;
+
+procedure TfrmTemplateEditor.FormDestroy(Sender: TObject);
+begin
+  KillObj(@FConsultServices);
+  Application.HintHidePause := FSavePause;
+  if(assigned(frmTemplateObjects)) then
+  begin
+    frmTemplateObjects.Free;
+    frmTemplateObjects := nil;
+  end;
+  if(assigned(frmTemplateFields)) then
+  begin
+    frmTemplateFields.Free;
+    frmTemplateFields := nil;
+  end;
+  //---------- CQ #8665 - RV --------
+  //KillObj(@FPersonalObjects);
+  if (assigned(uPersonalObjects)) then
+  begin
+    KillObj(@uPersonalObjects);
+    uPersonalObjects.Free;
+    uPersonalObjects := nil;
+  end;
+  // ----  end CQ #8665 -------------
+  dmodShared.OnTemplateLock := nil;
+  dmodShared.InEditor := FALSE;
+  RemoveAllNodes;
+  ClearBackup;
+  UnlockAllTemplates;
+  dmodShared.Reload;
+end;
+
+procedure TfrmTemplateEditor.sbMoveUpClick(Sender: TObject);
+var
+  idx: integer;
+  ChangeLevel: boolean;
+  ParentsParent, ParentNode, Node: TTreeNode;
+  NodeTemplate, ParentTemplate, Template: TTemplate;
+  Hide, First, ok: boolean;
+
+begin
+  if((assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+                              (assigned(FCurTree.Selected.Parent))) then
+  begin
+    Node := FCurTree.Selected;
+    NodeTemplate := TTemplate(Node.Data);
+    ParentNode := Node.Parent;
+    Template := TTemplate(ParentNode.Data);
+    idx := Template.Items.IndexOf(NodeTemplate);
+    ChangeLevel := (idx < 1);
+    if(not ChangeLevel) then
+    begin
+      if(TTemplateTreeType(TBitBtn(Sender).Tag) = ttShared) then
+        Hide := cbShHide.Checked
+      else
+        Hide := cbPerHide.Checked;
+      First := TRUE;
+      while(idx > 0) do
+      begin
+        if First then
+        begin
+          ok := FALSE;
+          First := FALSE;
+          if CanClone(ParentNode) then
+          begin
+            if(Clone(ParentNode)) then
+              Template := TTemplate(ParentNode.Data);
+            if Template.CanModify then
+              ok := TRUE;
+          end;
+        end
+        else
+          ok := TRUE;
+        if ok then
+        begin
+          Template.Items.Exchange(idx-1, idx);
+          if(Hide and (not TTemplate(Template.Items[idx]).Active)) then
+          begin
+            dec(idx);
+            ChangeLevel := (idx < 1);
+          end
+          else
+            idx := 0;
+        end
+        else
+          idx := 0;
+      end;
+    end;
+    if(ChangeLevel) then
+    begin
+      ParentsParent := ParentNode.Parent;
+      if(assigned(ParentsParent)) then
+      begin
+        ParentTemplate := TTemplate(ParentsParent.Data);
+        if(ParentTemplate.Items.IndexOf(NodeTemplate) >= 0) then
+          InfoBox(ParentsParent.Text + ' already contains the ' +
+            NodeTemplate.PrintName + ' template.',
+            'Error', MB_OK or MB_ICONERROR)
+        else
+        begin
+          if CanClone(ParentNode) then
+          begin
+            if(Clone(ParentNode)) then
+              Template := TTemplate(ParentNode.Data);
+            if Template.CanModify and CanClone(ParentsParent) then
+            begin
+              if(Clone(ParentsParent)) then
+                ParentTemplate := TTemplate(ParentsParent.Data);
+              if ParentTemplate.CanModify then
+              begin
+                Template.Items.Delete(idx);
+                idx := ParentTemplate.Items.IndexOf(Template);
+                if(idx >= 0) then
+                begin
+                  ParentTemplate.Items.Insert(idx, NodeTemplate);
+                  Resync([ParentTemplate, Template]);
+                  btnApply.Enabled := TRUE;
+                end;
+              end;
+            end;
+          end;
+        end;
+      end;
+    end
+    else
+    begin
+      Resync([Template]);
+      btnApply.Enabled := TRUE;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.sbMoveDownClick(Sender: TObject);
+var
+  max, idx: integer;
+  ChangeLevel: boolean;
+  ParentsParent, ParentNode, Node: TTreeNode;
+  NodeTemplate, ParentTemplate, Template: TTemplate;
+  Hide, First, ok: boolean;
+
+begin
+  if((assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+                              (assigned(FCurTree.Selected.Parent))) then
+  begin
+    Node := FCurTree.Selected;
+    NodeTemplate := TTemplate(Node.Data);
+    ParentNode := Node.Parent;
+    Template := TTemplate(ParentNode.Data);
+    idx := Template.Items.IndexOf(NodeTemplate);
+    max := Template.Items.Count-1;
+    ChangeLevel := (idx >= max);
+    if(not ChangeLevel) then
+    begin
+      if(TTemplateTreeType(TBitBtn(Sender).Tag) = ttShared) then
+        Hide := cbShHide.Checked
+      else
+        Hide := cbPerHide.Checked;
+      First := TRUE;
+      while(idx < max) do
+      begin
+        if First then
+        begin
+          ok := FALSE;
+          First := FALSE;
+          if CanClone(ParentNode) then
+          begin
+            if(Clone(ParentNode)) then
+              Template := TTemplate(ParentNode.Data);
+            if Template.CanModify then
+              ok := TRUE;
+          end;
+        end
+        else
+          ok := TRUE;
+        if ok then
+        begin
+          Template.Items.Exchange(idx, idx+1);
+          if(Hide and (not TTemplate(Template.Items[idx]).Active)) then
+          begin
+            inc(idx);
+            ChangeLevel := (idx >= max);
+          end
+          else
+            idx := max;
+        end
+        else
+          idx := max;
+      end;
+    end;
+    if(ChangeLevel) then
+    begin
+      ParentsParent := ParentNode.Parent;
+      if(assigned(ParentsParent)) then
+      begin
+        ParentTemplate := TTemplate(ParentsParent.Data);
+        if(ParentTemplate.Items.IndexOf(NodeTemplate) >= 0) then
+          InfoBox(ParentsParent.Text + ' already contains the ' +
+            NodeTemplate.PrintName + ' template.',
+            'Error', MB_OK or MB_ICONERROR)
+        else
+        begin
+          if CanClone(ParentNode) then
+          begin
+            if(Clone(ParentNode)) then
+              Template := TTemplate(ParentNode.Data);
+            if Template.CanModify and CanClone(ParentsParent) then
+            begin
+              if(Clone(ParentsParent)) then
+                ParentTemplate := TTemplate(ParentsParent.Data);
+              if ParentTemplate.CanModify then
+              begin
+                Template.Items.Delete(idx);
+                idx := ParentTemplate.Items.IndexOf(Template);
+                if(idx >= 0) then
+                begin
+                  if(idx = (ParentTemplate.Items.Count-1)) then
+                    ParentTemplate.Items.Add(NodeTemplate)
+                  else
+                    ParentTemplate.Items.Insert(idx+1, NodeTemplate);
+                  Resync([ParentTemplate, Template]);
+                  btnApply.Enabled := TRUE;
+                end;
+              end;
+            end;
+          end;
+        end;
+      end;
+    end
+    else
+    begin
+      Resync([Template]);
+      btnApply.Enabled := TRUE;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.sbDeleteClick(Sender: TObject);
+var
+  PNode, Node: TTreeNode;
+  Template, Parent: TTemplate;
+  DoIt: boolean;
+  Answer: Word;
+
+begin
+  if((assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+                              (assigned(FCurTree.Selected.Parent))) then
+  begin
+    Node := FCurTree.Selected;
+    Template := TTemplate(Node.Data);
+    PNode := Node.Parent;
+    Parent := TTemplate(PNode.Data);
+    if(AutoDel(Template)) then
+      DoIt := TRUE
+    else
+    if(Template.Active) and (cbActive.Checked) then
+    begin
+      DoIt := FALSE;
+      Answer := MessageDlg('Once you delete a template you may not be able to retrieve it.' + CRLF +
+                           'Rather than deleting, you may want to inactivate a template instead.' + CRLF +
+                           'You may inactivate this template by pressing the Ignore button now.' + CRLF +
+                           'Are you sure you want to delete the "' + Node.Text +
+                           '" Template?', mtConfirmation, [mbYes, mbNo, mbIgnore], 0);
+      if(Answer = mrYes) then
+        DoIt := TRUE
+      else
+      if(Answer = mrIgnore) then
+        cbActive.Checked := FALSE;
+    end
+    else
+      DoIt := InfoBox('Are you sure you want to delete the "' + Node.Text +
+              '" Template?', 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES;
+    if(DoIt and CanClone(PNode)) then
+    begin
+      if(Clone(PNode)) then
+        Parent := TTemplate(PNode.Data);
+      if assigned(Parent) and Parent.CanModify then
+      begin
+        btnApply.Enabled := TRUE;
+        Parent.RemoveChild(Template);
+        MarkDeleted(Template);
+        Resync([Parent]);
+        tvTreeChange(FCurTree, FCurTree.Selected);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.EnableNavControls;
+var
+  i: TTemplateTreeControl;
+  AllowUp, AllowDown, AllowSet: boolean;
+  Node: TTreeNode;
+  Tree: TTemplateTreeType;
+  Curok: boolean;
+  OldActiveControl: TControl;
+begin
+  if(Assigned(FCurTree)) then
+  begin
+    Tree := TTemplateTreeType(FCurTree.Tag);
+    Node := FCurTree.Selected;
+    if(Assigned(Node)) then
+      Curok := (TTemplate(Node.Data).RealType in [ttDoc, ttGroup, ttClass])
+    else
+      Curok := FALSE;
+    if(Curok) then
+    begin
+      OldActiveControl := ActiveControl;
+      FTreeControl[Tree, tcDel].Enabled := TRUE;
+      AllowSet := FALSE;
+      if(Node.Index > 0) then
+        AllowUp := TRUE
+      else
+      begin
+        AllowUp := AllowMove(Node.Parent.Parent, Node);
+        AllowSet := TRUE;
+      end;
+      FTreeControl[Tree, tcUp].Enabled := AllowUp;
+      AllowDown := AllowUp;
+      if(Node.Index < (Node.Parent.Count-1)) then
+        AllowDown := TRUE
+      else
+      begin
+        if(not AllowSet) then
+          AllowDown := AllowMove(Node.Parent.Parent, Node);
+      end;
+      FTreeControl[Tree, tcDown].Enabled := AllowDown;
+      if not AllowUp and (OldActiveControl = FTreeControl[Tree, tcUp]) then
+        (FTreeControl[Tree, tcDown] as TWinControl).SetFocus;
+      if not AllowDown and (OldActiveControl = FTreeControl[Tree, tcDown]) then
+        (FTreeControl[Tree, tcUp] as TWinControl).SetFocus;
+      FTreeControl[Tree, tcCopy].Enabled := FTreeControl[TTemplateTreeType(1-ord(Tree)), tcDel].Visible;
+      if(FTreeControl[Tree, tcCopy].Enabled) then
+      begin
+        if(Tree = ttShared) then
+          Node := tvPersonal.Selected
+        else
+          Node := tvShared.Selected;
+        if(assigned(Node)) then
+        begin
+          if(TTemplate(Node.Data).RealType = ttDoc) then
+            Node := Node.Parent;
+          FTreeControl[Tree, tcCopy].Enabled := AllowMove(Node, FCurTree.Selected);
+        end
+        else
+          FTreeControl[Tree, tcCopy].Enabled := FALSE;
+      end;
+      FTreeControl[Tree, tcLbl].Enabled := FTreeControl[Tree, tcCopy].Enabled;
+    end
+    else
+    begin
+      for i := low(TTemplateTreeControl) to high(TTemplateTreeControl) do
+        FTreeControl[Tree, i].Enabled := FALSE;
+    end;
+    if(FCurTree = tvShared) and (FCanEditShared) then
+      btnNew.Enabled := TRUE
+    else
+    if(FCurTree = tvPersonal) and (FCanEditPersonal) then
+      btnNew.Enabled := TRUE
+    else
+      btnNew.Enabled := FALSE;
+  end
+  else
+    btnNew.Enabled := FALSE;
+end;
+
+procedure TfrmTemplateEditor.tvTreeDragging(Sender: TObject;
+  Node: TTreeNode; var CanDrag: Boolean);
+
+begin
+  CanDrag := (TTemplate(Node.Data).RealType in [ttDoc, ttGroup, ttClass]);
+  if(CanDrag) then
+    FDragNode := Node
+  else
+    FDragNode := nil;
+end;
+
+procedure TfrmTemplateEditor.tvTreeDragOver(Sender, Source: TObject; X,
+  Y: Integer; State: TDragState; var Accept: Boolean);
+var
+  TmpNode: TTreeNode;
+  Tree: TTreeView;
+
+begin
+  FDropNode := nil;
+  Accept := FALSE;
+  if(Source is TTreeView) and (assigned(FDragNode)) then
+  begin
+    Tree := TTreeView(Sender);
+    FDropNode := Tree.GetNodeAt(X,Y);
+    if(((Tree = tvShared)   and (FCanEditShared)) or
+       ((Tree = tvPersonal) and (FCanEditPersonal))) then
+    begin
+      if(assigned(FDropNode)) then
+      begin
+        FDropInto := (TTemplate(FDropNode.Data).RealType in AllTemplateFolderTypes);
+        if(FDropInto) then
+          TmpNode := FDropNode
+        else
+          TmpNode := FDropNode.Parent;
+        Accept := AllowMove(TmpNode, FDragNode);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.tvTreeDragDrop(Sender, Source: TObject; X,
+  Y: Integer);
+var
+  Src, Template, Item: TTemplate;
+  SIdx, idx: integer;
+  TmpNode: TTreeNode;
+
+begin
+  if(assigned(FDragNode)) and (assigned(FDropNode)) and (FDragNode <> FDropNode) then
+  begin
+    Item := TTemplate(FDragNode.Data);
+    if(FDropInto) then
+    begin
+      TmpNode := FDropNode;
+      idx := 0;
+    end
+    else
+    begin
+      TmpNode := FDropNode.Parent;
+      idx := TTemplate(FDropNode.Parent.Data).Items.IndexOf(FDropNode.Data);
+    end;
+    if(AllowMove(TmpNode, FDragNode) and (idx >= 0)) then
+    begin
+      Template := TTemplate(TmpNode.Data);
+      if(Template <> FDragNode.Parent.Data) and
+        (Template.Items.IndexOf(Item) >= 0) then
+        InfoBox(Template.PrintName + ' already contains the ' +
+          Item.PrintName + ' template.',
+          'Error', MB_OK or MB_ICONERROR)
+      else
+      begin
+        Src := TTemplate(FDragNode.Parent.Data);
+        Sidx := Src.Items.IndexOf(Item);
+        if CanClone(TmpNode) then
+        begin
+          if(Clone(TmpNode)) then
+            Template := TTemplate(TmpNode.Data);
+          if assigned(Template) and Template.CanModify then
+          begin
+            if(Sidx >= 0) and (FDragNode.TreeView = FDropNode.TreeView) and
+              (not FCopying) then // if same tree delete source
+            begin
+              if CanClone(FDragNode.Parent) then
+              begin
+                if(Clone(FDragNode.Parent)) then
+                  Src := TTemplate(FDragNode.Parent.Data);
+                if assigned(Src) and Src.CanModify then
+                begin
+                  Src.Items.Delete(Sidx);
+                  if(Template = Src) then
+                    Src := nil;
+                end
+                else
+                  Src := nil;
+              end
+              else
+                Src := nil;
+            end
+            else
+              Src := nil;
+            if(idx > 0) then
+              idx := TTemplate(FDropNode.Parent.Data).Items.IndexOf(FDropNode.Data);
+            Template.Items.Insert(idx, Item);
+            if(TTreeView(FDropNode.TreeView) = tvShared) then
+            begin
+              Item.PersonalOwner := 0;
+              tvPersonal.Invalidate;
+            end;
+            TTreeView(FDragNode.TreeView).Selected := FDragNode;
+            TTreeView(FDragNode.TreeView).SetFocus;
+            Resync([Src, Template]);
+            btnApply.Enabled := TRUE;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.Resync(const Templates: array of TTemplate);
+var
+  i, j: integer;
+  NodeList: TStringList;
+  TemplateList: TStringList;
+  Node: TTreeNode;
+  tmpl: TTemplate;
+  NodeID: string;
+
+begin
+  NodeList := TStringList.Create;
+  try
+    TemplateList := TStringList.Create;
+    try
+      for i := low(Templates) to high(Templates) do
+      begin
+        tmpl := Templates[i];
+        if(assigned(tmpl)) then
+        begin
+          for j := 0 to tmpl.Nodes.Count-1 do
+          begin
+            Node := TTreeNode(tmpl.Nodes.Objects[j]);
+            if(NodeList.IndexOfObject(Node) < 0) then
+            begin
+              NodeID := IntToStr(Node.Level);
+              NodeID := copy('000',1,4-length(NodeID))+NodeID+U+tmpl.Nodes[j];
+              TemplateList.AddObject(NodeID,tmpl);
+              NodeList.AddObject(NodeId,Node);
+            end;
+          end;
+        end;
+      end;
+
+    { By Sorting by Node Level, we prevent a Resync
+      of nodes deeper within the heirchary }
+
+      NodeList.Sort;
+
+      for i := 0 to NodeList.Count-1 do
+      begin
+        NodeID := NodeList[i];
+        Node := TTreeNode(NodeList.Objects[i]);
+        j := TemplateList.IndexOf(NodeID);
+        if(j >= 0) then
+        begin
+          tmpl := TTemplate(TemplateList.Objects[j]);
+          NodeID := Piece(NodeID,U,2);
+          if(tmpl.Nodes.IndexOf(NodeID) >= 0) then
+          begin
+            if(Node.TreeView = tvShared) then
+              dmodShared.Resync(Node, not cbShHide.Checked, FSharedEmptyNodeCount)
+            else
+            if(Node.TreeView = tvPersonal) then
+              dmodShared.Resync(Node, not cbPerHide.Checked, FPersonalEmptyNodeCount);
+          end;
+        end;
+      end;
+    finally
+      TemplateList.Free;
+    end;
+  finally
+    NodeList.Free;
+  end;
+  EnableNavControls;
+  if((assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+    tvTreeChange(FCurTree, FCurTree.Selected)
+  else
+    tvPersonal.Selected := tvPersonal.Items.GetFirstNode;
+  FCopyNode := nil;
+end;
+
+procedure TfrmTemplateEditor.sbCopyLeftClick(Sender: TObject);
+begin
+  if(assigned(tvPersonal.Selected)) then
+  begin
+    if(not assigned(tvShared.Selected)) then
+      tvShared.Selected := tvShared.Items.GetFirstNode;
+    FDragNode := tvPersonal.Selected;
+    FDropNode := tvShared.Selected;
+    FDropInto := (TTemplate(FDropNode.Data).RealType in AllTemplateFolderTypes);
+    tvTreeDragDrop(tvPersonal, tvShared, 0,0);
+  end;
+end;
+
+procedure TfrmTemplateEditor.sbCopyRightClick(Sender: TObject);
+begin
+  if(assigned(tvShared.Selected)) then
+  begin
+    if(not assigned(tvPersonal.Selected)) then
+      tvPersonal.Selected := tvPersonal.Items.GetFirstNode;
+    FDragNode := tvShared.Selected;
+    FDropNode := tvPersonal.Selected;
+    FDropInto := (TTemplate(FDropNode.Data).RealType in AllTemplateFolderTypes);
+    tvTreeDragDrop(tvShared, tvPersonal, 0,0);
+  end;
+end;
+
+procedure TfrmTemplateEditor.AdjustControls4FontChange;
+var
+  x: integer;
+
+  procedure Adjust(Control: TWinControl);
+  begin
+    x := x - Control.Width - 2;
+    Control.Left := x;
+  end;
+
+begin
+  if FCanEditShared then
+  begin
+    x := pnlSharedBottom.Width;
+    Adjust(sbSHDelete);
+    Adjust(sbSHDown);
+    Adjust(sbSHUp);
+    cbSHHide.Width := x;
+  end;
+  x := pnlBottom.Width;
+  Adjust(btnApply);
+  Adjust(btnCancel);
+  Adjust(btnOK);
+  cbEditShared.Width := TextWidthByFont(cbEditShared.Font.Handle, cbEditShared.Caption) + 25;
+  cbNotes.Left := cbEditShared.Left + cbEditShared.Width + 60;
+  cbNotes.Width := TextWidthByFont(cbNotes.Font.Handle, cbNotes.Caption) + 25;
+end;
+
+function TfrmTemplateEditor.AllowMove(ADropNode, ADragNode: TTreeNode): boolean;
+var
+  i: integer;
+  TmpNode: TTreeNode;
+  DragTemplate, DropTemplate: TTemplate;
+
+begin
+  if(assigned(ADropNode) and assigned(ADragNode)) then
+  begin
+    DropTemplate := TTemplate(ADropNode.Data);
+    DragTemplate := TTemplate(ADragNode.Data);
+    if IsTemplateLocked(ADropNode) then
+      Result := FALSE
+    else
+      Result := (DragTemplate.RealType in [ttDoc, ttGroup, ttClass]);
+    if(Result) then
+    begin
+      if(FCopying) then
+      begin
+        if(DropTemplate.Items.IndexOf(DragTemplate) >= 0) then
+          Result := FALSE;
+      end
+      else
+      if((assigned(ADragNode.Parent)) and (ADropNode <> ADragNode.Parent) and
+         (DropTemplate.Items.IndexOf(DragTemplate) >= 0)) then
+        Result := FALSE;
+    end;
+    if(Result) then
+    begin
+      for i := 0 to DropTemplate.Nodes.Count-1 do
+      begin
+        TmpNode := TTreeNode(DropTemplate.Nodes.Objects[i]);
+        while (Result and (assigned(TmpNode.Parent))) do
+        begin
+          if(TmpNode.Data = DragTemplate) then
+            Result := FALSE
+          else
+            TmpNode := TmpNode.Parent;
+        end;
+        if(not Result) then break;
+      end;
+    end;
+  end
+  else
+    Result := FALSE;
+end;
+
+function TfrmTemplateEditor.Clone(Node: TTreeNode): boolean;
+var
+  idx: integer;
+  Prnt, OldT, NewT: TTemplate;
+  PNode: TTreeNode;
+  ok: boolean;
+
+begin
+  Result := FALSE;
+  if((assigned(Node)) and (TTreeView(Node.TreeView) = tvPersonal)) then
+  begin
+    OldT := TTemplate(Node.Data);
+    if(OldT.PersonalOwner <> User.DUZ) then
+    begin
+      PNode := Node.Parent;
+      Prnt := nil;
+      if (assigned(PNode)) then
+      begin
+        ok := CanClone(PNode);
+        if ok then
+        begin
+          Clone(PNode);
+          Prnt := TTemplate(PNode.Data);
+          ok := Prnt.CanModify;
+        end;
+      end
+      else
+        ok := TRUE;
+      if ok then
+      begin
+        BtnApply.Enabled := TRUE;
+        Result := TRUE;
+        NewT := OldT.Clone(User.DUZ);
+        OldT.RemoveNode(Node);
+        MarkDeleted(OldT);
+        Node.Data := NewT;
+        NewT.AddNode(Node);
+        if(assigned(Prnt)) then
+        begin
+          idx := Prnt.Items.IndexOf(OldT);
+          if(idx >= 0) then
+            Prnt.Items[idx] := NewT;
+        end;
+        tvPersonal.Invalidate;
+        ShowTemplateType(NewT);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.reBoilChange(Sender: TObject);
+var
+  DoInfo, DoRefresh: boolean;
+  TmpBPlate: string;
+  Template: TTemplate;
+  x: integer;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    Template := TTemplate(FCurTree.Selected.Data);
+    TmpBPlate := reBoil.Lines.Text;
+    if(Template.Boilerplate <> TmpBPlate) then
+    begin
+      if CanClone(FCurTree.Selected) then
+      begin
+        DoRefresh := Clone(FCurTree.Selected);
+        if(DoRefresh) then
+          Template := TTemplate(FCurTree.Selected.Data);
+        if assigned(Template) and Template.CanModify then
+        begin
+          DoInfo := FALSE;
+          if(Template.Boilerplate = '') or (TmpBPlate = '') then
+            DoInfo := TRUE;
+          Template.Boilerplate := TmpBPlate;
+          TTemplate(FCurTree.Selected.Data).Gap := StrToIntDef(edtGap.Text, 0);
+          if(Template.RealType = ttGroup) then
+          begin
+            reGroupBP.Text := Template.FullBoilerplate;
+          end;
+          if(DoRefresh) then
+          begin
+            tvShared.Invalidate;
+            tvPersonal.Invalidate;
+          end;
+          if(DoInfo) then
+          begin
+            x := reBoil.SelStart;
+            ShowInfo(FCurTree.Selected);
+            reBoil.SelStart := x;
+          end;
+        end;
+      end;
+      btnApply.Enabled := TRUE;
+//        reBoil.Lines.Text := Template.Boilerplate;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.SharedEditing;
+begin
+{$IFDEF OwnerScan}
+  lblPerOwner.Visible := FCanEditShared;
+  cboOwner.Visible := FCanEditShared;
+{$ELSE}
+  lblPerOwner.Visible := FALSE;
+  cboOwner.Visible := FALSE;
+{$ENDIF}
+  sbCopyLeft.Visible := FCanEditShared;
+  if(not FCanEditShared) then
+    cbShHide.Checked := TRUE;
+  cbShHide.Visible := FCanEditShared;
+  sbShDelete.Visible := FCanEditShared;
+  sbShUp.Visible := FCanEditShared;
+  sbShDown.Visible := FCanEditShared;
+  tvShared.ReadOnly := not FCanEditShared;
+  MoveCopyButtons;
+  tvTreeChange(FCurTree, FCurTree.Selected);
+  if FCanEditShared then
+    AdjustControls4FontChange;
+end;
+
+procedure TfrmTemplateEditor.cbEditSharedClick(Sender: TObject);
+begin
+  FCanEditShared := cbEditShared.Checked;
+  SharedEditing;
+end;
+
+procedure TfrmTemplateEditor.popTemplatesPopup(Sender: TObject);
+var
+  Tree: TTreeView;
+  Node: TTreeNode;
+  FindOn: boolean;
+  Txt: string;
+
+begin
+  FFromMainMenu := FALSE;
+  Tree := GetTree;
+  Node := Tree.Selected;
+  Tree.Selected := Node; // This line prevents selected from changing after menu closes
+  mnuCollapseTree.Enabled := dmodShared.NeedsCollapsing(Tree);
+  if(Tree = tvShared) then
+  begin
+    Txt := 'Shared';
+    FindOn := FFindShOn;
+    mnuNodeDelete.Enabled := ((sbShDelete.Visible) and (sbShDelete.Enabled));
+  end
+  else
+  begin
+    Txt := 'Personal';
+    FindOn := FFindPerOn;
+    mnuNodeDelete.Enabled := ((sbPerDelete.Visible) and (sbPerDelete.Enabled));
+  end;
+  mnuFindTemplates.Checked := FindOn;
+  mnuCollapseTree.Caption := 'Collapse '+Txt+' &Tree';
+  mnuFindTemplates.Caption := '&Find '+Txt+' Templates';
+
+  if(assigned(Tree) and assigned(Tree.Selected) and assigned(Tree.Selected.Data)) then
+  begin
+    mnuNodeCopy.Enabled := (TTemplate(Tree.Selected.Data).RealType in [ttDoc, ttGroup, ttClass]);
+    mnuNodeSort.Enabled := (TTemplate(Tree.Selected.Data).RealType in AllTemplateFolderTypes) and
+                           (Tree.Selected.HasChildren) and
+                           (Tree.Selected.GetFirstChild.GetNextSibling <> nil);
+  end
+  else
+  begin
+    mnuNodeCopy.Enabled := FALSE;
+    mnuNodeSort.Enabled := FALSE;
+  end;
+  FPasteNode := Tree.Selected;
+  mnuNodePaste.Enabled := PasteOK;
+  mnuNodeNew.Enabled := btnNew.Enabled;
+  mnuNodeAutoGen.Enabled := btnNew.Enabled;
+end;
+
+procedure TfrmTemplateEditor.mnuCollapseTreeClick(Sender: TObject);
+begin
+  if(GetTree = tvShared) then
+  begin
+    tvShared.Selected := tvShared.Items.GetFirstNode;
+    tvShared.FullCollapse;
+  end
+  else
+  begin
+    tvPersonal.Selected := tvShared.Items.GetFirstNode;
+    tvPersonal.FullCollapse;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuFindTemplatesClick(Sender: TObject);
+var
+  Tree: TTreeView;
+
+begin
+  Tree := GetTree;
+  if(Tree = tvShared) then
+  begin
+    FFindShOn := not FFindShOn;
+    pnlShSearch.Visible := FFindShOn;
+    if(FFindShOn) then
+    begin
+      edtShSearch.SetFocus;
+      btnShFind.Enabled := (edtShSearch.Text <> '');
+    end;
+  end
+  else
+  begin
+    FFindPerOn := not FFindPerOn;
+    pnlPerSearch.Visible := FFindPerOn;
+    if(FFindPerOn) then
+    begin
+      edtPerSearch.SetFocus;
+      btnPerFind.Enabled := (edtPerSearch.Text <> '');
+    end;
+  end;
+  SetFindNext(Tree, FALSE);
+end;
+
+procedure TfrmTemplateEditor.ShowTemplateType(Template: TTemplate);
+begin
+  if(Template.PersonalOwner > 0) then
+    gbProperties.Caption := 'Personal'
+  else
+    gbProperties.Caption := 'Shared';
+  gbProperties.Caption := gbProperties.Caption + PropText;
+end;
+
+function TfrmTemplateEditor.GetTree: TTreeView;
+begin
+  if(FFromMainMenu) then
+    Result := FMainMenuTree
+  else
+  begin
+    if(TTemplateTreeType(PopupComponent(popTemplates, popTemplates).Tag) = ttShared) then
+      Result := tvShared
+    else
+      Result := tvPersonal;
+  end;
+end;
+
+procedure TfrmTemplateEditor.btnFindClick(Sender: TObject);
+var
+  Found: TTreeNode;
+  edtSearch: TEdit;
+  IsNext: boolean;
+  FindNext: boolean;
+  FindWholeWords: boolean;
+  FindCase: boolean;
+  Tree: TTreeView;
+  LastFoundNode, TmpNode: TTreeNode;
+//  S1,S2: string;
+
+begin
+  if(TTemplateTreeType(TButton(Sender).Tag) = ttShared) then
+  begin
+    Tree := tvShared;
+    edtSearch := edtShSearch;
+    FindNext := FFindShNext;
+    FindWholeWords := cbShWholeWords.Checked;
+    FindCase := cbShMatchCase.Checked;
+    LastFoundNode := FLastFoundShNode;
+  end
+  else
+  begin
+    Tree := tvPersonal;
+    edtSearch := edtPerSearch;
+    FindNext := FFindPerNext;
+    FindWholeWords := cbPerWholeWords.Checked;
+    FindCase := cbPerMatchCase.Checked;
+    LastFoundNode := FLastFoundPerNode;
+  end;
+  if(edtSearch.text <> '') then
+  begin
+    IsNext := ((FindNext) and assigned (LastFoundNode));
+    if IsNext then
+    
+      TmpNode := LastFoundNode
+    else
+      TmpNode := Tree.Items.GetFirstNode;
+    FInternalHiddenExpand := TRUE;
+    try
+      Found := FindTemplate(edtSearch.Text, Tree, Self, TmpNode,
+                            IsNext, not FindCase, FindWholeWords);
+    finally
+      FInternalHiddenExpand := FALSE;
+    end;
+    if Assigned(Found) then
+    begin
+      Tree.Selected := Found;
+      if(Tree = tvShared) then
+        FLastFoundShNode := Found
+      else
+        FLastFoundPerNode := Found;
+      SetFindNext(Tree, TRUE);
+    end;
+  end;
+  edtSearch.SetFocus;
+end;
+
+procedure TfrmTemplateEditor.edtSearchChange(Sender: TObject);
+begin
+  if(TTemplateTreeType(TEdit(Sender).Tag) = ttShared) then
+  begin
+    btnShFind.Enabled := (edtShSearch.Text <> '');
+    SetFindNext(tvShared, FALSE);
+  end
+  else
+  begin
+    btnPerFind.Enabled := (edtPerSearch.Text <> '');
+    SetFindNext(tvPersonal, FALSE);
+  end;
+end;
+
+procedure TfrmTemplateEditor.SetFindNext(const Tree: TTreeView; const Value: boolean);
+begin
+  if(Tree = tvShared) then
+  begin
+    if(FFindShNext <> Value) then
+    begin
+      FFindShNext := Value;
+      if(FFindShNext) then btnShFind.Caption := 'Find Next'
+      else btnShFind.Caption := 'Find';
+    end;
+  end
+  else
+  begin
+    if(FFindPerNext <> Value) then
+    begin
+      FFindPerNext := Value;
+      if(FFindPerNext) then btnPerFind.Caption := 'Find Next'
+      else btnPerFind.Caption := 'Find';
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.edtShSearchEnter(Sender: TObject);
+begin
+  btnShFind.Default := TRUE;
+end;
+
+procedure TfrmTemplateEditor.edtShSearchExit(Sender: TObject);
+begin
+  btnShFind.Default := FALSE;
+end;
+
+procedure TfrmTemplateEditor.edtPerSearchEnter(Sender: TObject);
+begin
+  btnPerFind.Default := TRUE;
+end;
+
+procedure TfrmTemplateEditor.edtPerSearchExit(Sender: TObject);
+begin
+  btnPerFind.Default := FALSE;
+end;
+
+procedure TfrmTemplateEditor.btnOKClick(Sender: TObject);
+begin
+  if(ScanNames) then
+  begin
+    if(SaveAllTemplates) then
+    begin
+      FOK2Close := TRUE;
+      ModalResult := mrOK;
+    end
+    else
+      BtnApply.Enabled := BackupDiffers;
+  end;
+end;
+
+procedure TfrmTemplateEditor.FormShow(Sender: TObject);
+begin
+  if(FFirstShow) then
+  begin
+    FUpdating := FALSE;
+    FFirstShow := FALSE;
+    if(FFocusName) then
+    begin
+      edtName.SetFocus;
+      edtName.SelectAll;
+    end;
+    pnlBoilerplateResize(Self);
+    AdjustControls4FontChange;
+    MoveCopyButtons;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuBPInsertObjectClick(Sender: TObject);
+var
+  i: integer;
+  DoIt: boolean;
+
+begin
+  if(not assigned(frmTemplateObjects)) then
+  begin
+    dmodShared.LoadTIUObjects;
+    frmTemplateObjects := TfrmTemplateObjects.Create(Self);
+    DoIt := TRUE;
+    if (UserTemplateAccessLevel <> taEditor) then
+    begin
+      UpdatePersonalObjects;
+      if uPersonalObjects.Count > 0 then                                                  // -------- CQ #8665 - RV ------------
+      begin
+        DoIt := FALSE;
+        for i := 0 to dmodShared.TIUObjects.Count-1 do
+          if uPersonalObjects.IndexOf(Piece(dmodShared.TIUObjects[i],U,2)) >= 0 then      // -------- CQ #8665 - RV ------------
+            frmTemplateObjects.cboObjects.Items.Add(dmodShared.TIUObjects[i]);
+      end;
+    end;
+    if DoIt then
+      FastAssign(dmodShared.TIUObjects, frmTemplateObjects.cboObjects.Items);
+    frmTemplateObjects.Font := Font;
+    frmTemplateObjects.re := reBoil;
+    frmTemplateObjects.AutoLongLines := AutoLongLines;
+  end;
+  frmTemplateObjects.Show;
+end;
+
+procedure TfrmTemplateEditor.mnuBPErrorCheckClick(Sender: TObject);
+begin
+  FBPOK := FALSE;
+  if(reBoil.Lines.Count > 0) then
+  begin
+    if(dmodShared.TemplateOK(FCurTree.Selected.Data,'OK')) then
+    begin
+      TestBoilerplate(reBoil.Lines);
+      if(RPCBrokerV.Results.Count > 0) then
+        InfoBox('Boilerplate Contains Errors:'+CRLF+CRLF+
+          RPCBrokerV.Results.Text, 'Error', MB_OK or MB_ICONERROR)
+      else
+      begin
+        FBPOK := TRUE;
+        if(assigned(Sender)) then
+          InfoBox('No Errors Found in Boilerplate.', 'Information', MB_OK or MB_ICONINFORMATION);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.popBoilerplatePopup(Sender: TObject);
+var
+  tryOK, ok: boolean;
+
+begin
+  ok := not reBoil.ReadOnly;
+  mnuBPInsertObject.Enabled := ok;
+  mnuBPInsertField.Enabled := ok;
+
+  mnuBPPaste.Enabled := (ok and Clipboard.HasFormat(CF_TEXT));
+  if(ok) then
+    ok := (reBoil.Lines.Count > 0);
+  tryOK := (reBoil.Lines.Count > 0) or ((pnlGroupBP.Visible) and (reGroupBP.Lines.Count > 0));
+  mnuBPErrorCheck.Enabled := tryOK;
+  mnuBPTry.Enabled := tryOK;
+  mnuBPSpellCheck.Enabled := ok and SpellCheckAvailable;
+  mnuBPCheckGrammar.Enabled := ok and SpellCheckAvailable;
+
+  mnuBPCopy.Enabled := (reBoil.SelLength > 0);
+  mnuBPCut.Enabled := (ok and (reBoil.SelLength > 0));
+  mnuBPSelectAll.Enabled := (reBoil.Lines.Count > 0);
+  mnuBPUndo.Enabled := (reBoil.Perform(EM_CANUNDO, 0, 0) <> 0);
+end;
+
+function TfrmTemplateEditor.ScanNames: boolean;
+var
+  Errors: TList;
+  msg: string;
+  i: integer;
+  Node: TTreeNode;
+
+  procedure ScanTree(Tree: TTreeView);
+  begin
+    Node := Tree.Items.GetFirstNode;
+    while (assigned(Node)) do
+    begin
+      if(Node.Text <> EmptyNodeText) and (assigned(Node.Data)) then
+      begin
+        if(BadTemplateName(Node.Text)) then
+          Errors.Add(Node);
+      end;
+      Node := Node.GetNext;
+    end;
+  end;
+
+begin
+  Errors := TList.Create;
+  try
+    ScanTree(tvShared);
+    ScanTree(tvPersonal);
+    if(Errors.Count > 0) then
+    begin
+      if(Errors.Count > 1) then
+        msg := IntToStr(Errors.Count) + ' Templates have invalid names'
+      else
+        msg := 'Template has an invalid name';
+      msg := msg + ': ';
+      for i := 0 to Errors.Count-1 do
+      begin
+        if(i > 0) then msg := msg + ', ';
+        Node := TTreeNode(Errors[i]);
+        msg := msg + Node.Text;
+        Node.MakeVisible;
+      end;
+      msg := msg + '.' + BadNameText;
+      InfoBox(msg, 'Error', MB_OK or MB_ICONERROR);
+      TTreeView(Node.TreeView).Selected := TTreeNode(Errors[0]);
+    end;
+  finally
+    Result := (Errors.Count = 0);
+    Errors.Free;
+  end;
+end;
+
+procedure TfrmTemplateEditor.btnCancelClick(Sender: TObject);
+begin
+  FOK2Close := TRUE;
+end;
+
+procedure TfrmTemplateEditor.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmTemplateEditor.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+var
+  ans: word;
+
+begin
+  if(not FOK2Close) and (BackupDiffers) then
+  begin
+    ans := InfoBox('Save Changes?', 'Confirmation', MB_YESNOCANCEL or MB_ICONQUESTION);
+    if(ans = IDCANCEL) then
+      CanClose := FALSE
+    else
+    if(ans = IDYES) then
+    begin
+      CanClose := FALSE;
+      if(ScanNames) then
+      begin
+        if(SaveAllTemplates) then
+          CanClose := TRUE
+        else
+          BtnApply.Enabled := BackupDiffers;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuBPSpellCheckClick(Sender: TObject);
+begin
+  SpellCheckForControl(reBoil);
+end;
+
+procedure TfrmTemplateEditor.splBoilMoved(Sender: TObject);
+begin
+  if pnlBoilerplate.Visible and pnlGroupBP.Visible then
+    tmplEditorSplitterBoil := reBoil.Height;
+  if pnlNotes.Visible then
+    tmplEditorSplitterNotes := pnlNotes.Height;
+  pnlBoilerplateResize(Self);
+end;
+
+procedure TfrmTemplateEditor.edtGapKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if(not (Key in ['0','1','2','3'])) then Key := #0;
+end;
+
+procedure TfrmTemplateEditor.edtNameExit(Sender: TObject);
+var
+  Warn: boolean;
+
+begin
+  Warn := (ActiveControl <> btnCancel) and (BadTemplateName(edtName.Text));
+  if(Warn and ((ActiveControl = sbShDelete) or (ActiveControl = sbPerDelete))) then
+  begin
+    if((assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+      Warn := not AutoDel(TTemplate(FCurTree.Selected.Data));
+  end;
+  if(Warn) then
+  begin
+    InfoBox('Template has an invalid name: ' + edtName.Text + '.' + BadNameText, 'Error', MB_OK or MB_ICONERROR);
+    edtName.SetFocus;
+  end;
+end;
+
+procedure TfrmTemplateEditor.tmrAutoScrollTimer(Sender: TObject);
+const
+  EdgeScroll = 16;
+
+var
+  TopNode: TTreeNode;
+  Redraw: boolean;
+  TmpPt: TPoint;
+  ht: THitTests;
+  HPos, RMax: integer;
+
+begin
+  if(assigned(FDropNode)) then
+  begin
+    TopNode := FDropNode.TreeView.TopItem;
+    Redraw := FALSE;
+    TmpPt := FDropNode.TreeView.ScreenToClient(Mouse.CursorPos);
+    if(TopNode = FDropNode) and (TopNode <> TTreeView(FDropNode.TreeView).Items.GetFirstNode) then
+    begin
+      FDropNode.TreeView.TopItem := TopNode.GetPrevVisible;
+      Redraw := TRUE;
+    end
+    else
+    begin
+      RMax := FDropNode.TreeView.ClientHeight - EdgeScroll;
+      if((TmpPt.Y > RMax) and (FDropNode.GetNextVisible <> nil)) then
+      begin
+        TORTreeView(FDropNode.TreeView).VertScrollPos :=
+        TORTreeView(FDropNode.TreeView).VertScrollPos + 1;
+        Redraw := TRUE;
+      end;
+    end;
+    if(FLastDropNode <> FDropNode) then
+    begin
+      if((assigned(FDropNode)) and (FDropNode.GetNext = nil)) then
+        Redraw := TRUE
+      else
+      if((assigned(FLastDropNode)) and (FLastDropNode.GetNext = nil)) then
+        Redraw := TRUE;
+      FLastDropNode := FDropNode;
+      FDragOverCount := 0;
+    end
+    else
+    begin
+      if(FDropNode.HasChildren) and (not FDropNode.Expanded) then
+      begin
+        ht := FDropNode.TreeView.GetHitTestInfoAt(TmpPt.X, TmpPt.Y);
+        if(htOnButton in ht) then
+        begin
+          inc(FDragOverCount);
+          if(FDragOverCount > 4) then
+          begin
+            TopNode := FDropNode.TreeView.TopItem;
+            FDropNode.Expand(FALSE);
+            FDropNode.TreeView.TopItem := TopNode;
+            FDragOverCount := 0;
+            Redraw := TRUE;
+          end;
+        end
+        else
+          FDragOverCount := 0;
+      end;
+      if(not Redraw) then
+      begin
+        HPos := TORTreeView(FDropNode.TreeView).HorzScrollPos;
+        if(HPos > 0) and (TmpPt.X < EdgeScroll) then
+        begin
+          TORTreeView(FDropNode.TreeView).HorzScrollPos :=
+          TORTreeView(FDropNode.TreeView).HorzScrollPos - EdgeScroll;
+          Redraw := TRUE;
+        end
+        else
+        begin
+          RMax := FDropNode.TreeView.ClientWidth - EdgeScroll;
+          if(TmpPt.X > RMax) then
+          begin
+            TORTreeView(FDropNode.TreeView).HorzScrollPos :=
+            TORTreeView(FDropNode.TreeView).HorzScrollPos + EdgeScroll;
+            Redraw := TRUE;
+          end;
+        end;
+      end;
+    end;
+    if(Redraw) then
+    begin
+      TmpPt := Mouse.CursorPos; // Wiggling the mouse causes needed windows messages to fire
+      inc(TmpPt.X);
+      Mouse.CursorPos := TmpPt;
+      dec(TmpPt.X);
+      Mouse.CursorPos := TmpPt;
+      FDropNode.TreeView.Invalidate;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.tvTreeStartDrag(Sender: TObject;
+  var DragObject: TDragObject);
+begin
+  FDropNode := nil;
+  FLastDropNode := nil;
+  FDragOverCount := 0;
+  tmrAutoScroll.Enabled := TRUE;
+end;
+
+procedure TfrmTemplateEditor.tvTreeEndDrag(Sender, Target: TObject; X,
+  Y: Integer);
+begin
+  tmrAutoScroll.Enabled := FALSE;
+end;
+
+procedure TfrmTemplateEditor.mnuGroupBPCopyClick(Sender: TObject);
+begin
+  reGroupBP.CopyToClipboard;
+end;
+
+procedure TfrmTemplateEditor.popGroupPopup(Sender: TObject);
+begin
+  mnuGroupBPCopy.Enabled := (pnlGroupBP.Visible and (reGroupBP.SelLength > 0));
+  mnuGroupBPSelectAll.Enabled := (pnlGroupBP.Visible and (reGroupBP.Lines.Count > 0));
+end;
+
+procedure TfrmTemplateEditor.mnuBPCutClick(Sender: TObject);
+begin
+  reBoil.CutToClipboard;
+end;
+
+procedure TfrmTemplateEditor.mnuBPCopyClick(Sender: TObject);
+begin
+  reBoil.CopyToClipboard;
+end;
+
+procedure TfrmTemplateEditor.mnuBPPasteClick(Sender: TObject);
+begin
+  reBoil.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmTemplateEditor.mnuGroupBPSelectAllClick(Sender: TObject);
+begin
+  reGroupBP.SelectAll;
+end;
+
+procedure TfrmTemplateEditor.mnuBPSelectAllClick(Sender: TObject);
+begin
+  reBoil.SelectAll;
+end;
+
+procedure TfrmTemplateEditor.mnuNodeDeleteClick(Sender: TObject);
+begin
+  if(FCurTree = tvShared) and (sbShDelete.Visible) and (sbShDelete.Enabled) then
+    sbDeleteClick(sbShDelete)
+  else
+  if(FCurTree = tvPersonal) and (sbPerDelete.Visible) and (sbPerDelete.Enabled) then
+    sbDeleteClick(sbPerDelete);
+end;
+
+procedure TfrmTemplateEditor.mnuNodeCopyClick(Sender: TObject);
+begin
+  if(assigned(FCurTree)) then
+    FCopyNode := FCurTree.Selected
+  else
+    FCopyNode := nil;
+end;
+
+procedure TfrmTemplateEditor.mnuNodePasteClick(Sender: TObject);
+begin
+  if(PasteOK) then
+  begin
+    FDragNode := FCopyNode;
+    FDropNode := FPasteNode;
+    FDropInto := (TTemplate(FDropNode.Data).RealType in AllTemplateFolderTypes);
+    FCopying := TRUE;
+    try
+      tvTreeDragDrop(tvShared, tvPersonal, 0, 0);
+    finally
+      FCopying := FALSE;
+    end;
+  end;
+  FCopyNode := nil;
+end;
+
+function TfrmTemplateEditor.PasteOK: boolean;
+var
+  OldCopying: boolean;
+  Node: TTreeNode;
+
+begin
+  Result := assigned(FCopyNode) and assigned(FPasteNode);
+  if(Result) then
+    Result := (FTreeControl[TTemplateTreeType(FPasteNode.TreeView.Tag), tcDel].Visible);
+  if(Result) then
+  begin
+    OldCopying := FCopying;
+    FCopying := TRUE;
+    try
+      Node := FPasteNode;
+      if(TTemplate(Node.Data).RealType = ttDoc) then
+        Node := Node.Parent;
+      Result := AllowMove(Node, FCopyNode);
+    finally
+      FCopying := OldCopying;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuBPUndoClick(Sender: TObject);
+begin
+  reBoil.Perform(EM_UNDO, 0, 0);
+end;
+
+procedure TfrmTemplateEditor.tvTreeKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+
+  if(Key = VK_DELETE) then
+  begin
+    if(Sender = tvShared) then
+    begin
+      if(sbShDelete.Visible and sbShDelete.Enabled) then
+        sbDeleteClick(sbShDelete);
+    end
+    else
+    begin
+      if(sbPerDelete.Visible and sbPerDelete.Enabled) then
+        sbDeleteClick(sbPerDelete);
+    end;
+  end;
+   //Code Added to provide CTRL Key access for 508 compliance  GRE 3/03
+  if (ssCtrl in Shift) and (Key = VK_A) then
+      reBoil.SelectAll
+  else
+  if (ssCtrl in Shift) and (Key = VK_C) then
+      reBoil.CopyToClipboard
+  else
+  if (ssCtrl in Shift) and (Key = VK_E) then
+      mnuBPErrorCheckClick(Self)
+  else
+  if (ssCtrl in Shift) and (Key = VK_F) then
+      mnuBPInsertFieldClick(Self)
+  else
+  if (ssCtrl in Shift) and (Key = VK_G) then
+      GrammarCheckForControl(reBoil)
+  else
+  if (ssCtrl in Shift) and (Key = VK_I) then
+      mnuBPInsertObjectClick(Self)
+  else
+  if (ssCtrl in Shift) and (Key = VK_S) then
+      SpellCheckForControl(reBoil)
+  else
+  if (ssCtrl in Shift) and (Key = VK_T) then
+      mnuBPTryClick(Self)
+  else
+  if (ssCtrl in Shift) and (Key = VK_V) then
+      reBoil.SelText := Clipboard.AsText
+  else
+  if (ssCtrl in Shift) and (Key = VK_X) then
+      reBoil.CutToClipboard
+  else
+  if (ssCtrl in Shift) and (Key = VK_Z) then
+      reBoil.Perform(EM_UNDO, 0, 0);
+  //End of ---- Code Added to provide CTRL Key access for 508 compliance  GRE 3/03
+end;
+
+procedure TfrmTemplateEditor.mnuEditClick(Sender: TObject);
+var
+  tryOK, ok: boolean;
+
+begin
+  if pnlBoilerplate.Visible then
+  begin
+    ok := (not reBoil.ReadOnly);
+    mnuInsertObject.Enabled := ok;
+    mnuInsertField.Enabled := ok;
+    mnuPaste.Enabled := (ok and Clipboard.HasFormat(CF_TEXT));
+    if(ok) then
+      ok := (reBoil.Lines.Count > 0);
+    tryOK := (reBoil.Lines.Count > 0) or ((pnlGroupBP.Visible) and (reGroupBP.Lines.Count > 0));
+    mnuErrorCheck.Enabled := tryOK;
+    mnuTry.Enabled := tryOK;
+    mnuSpellCheck.Enabled := ok and SpellCheckAvailable;
+    mnuCheckGrammar.Enabled := ok and SpellCheckAvailable;
+
+    mnuCopy.Enabled := (reBoil.SelLength > 0);
+    mnuCut.Enabled := (ok and (reBoil.SelLength > 0));
+    mnuSelectAll.Enabled := (reBoil.Lines.Count > 0);
+    mnuUndo.Enabled := (reBoil.Perform(EM_CANUNDO, 0, 0) <> 0);
+    mnuGroupBoilerplate.Enabled := pnlGroupBP.Visible;
+  end
+  else
+  begin
+    mnuInsertObject.Enabled     := FALSE; 
+    mnuInsertField.Enabled      := FALSE;
+    mnuPaste.Enabled            := FALSE;
+    mnuErrorCheck.Enabled       := FALSE;
+    mnuTry.Enabled              := FALSE;
+    mnuSpellCheck.Enabled       := FALSE;
+    mnuCheckGrammar.Enabled     := FALSE;
+    mnuCopy.Enabled             := FALSE;
+    mnuCut.Enabled              := FALSE;
+    mnuSelectAll.Enabled        := FALSE;
+    mnuUndo.Enabled             := FALSE;
+    mnuGroupBoilerplate.Enabled := FALSE;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuGroupBoilerplateClick(Sender: TObject);
+begin
+  mnuGroupCopy.Enabled := (pnlGroupBP.Visible and (reGroupBP.SelLength > 0));
+  mnuGroupSelectAll.Enabled := (pnlGroupBP.Visible and (reGroupBP.Lines.Count > 0));
+end;
+
+procedure TfrmTemplateEditor.cbShFindOptionClick(Sender: TObject);
+begin
+  SetFindNext(tvShared, FALSE);
+  if(pnlShSearch.Visible) then edtShSearch.SetFocus;
+end;
+
+procedure TfrmTemplateEditor.cbPerFindOptionClick(Sender: TObject);
+begin
+  SetFindNext(tvPersonal, FALSE);
+  if(pnlPerSearch.Visible) then edtPerSearch.SetFocus;
+end;
+
+procedure TfrmTemplateEditor.mnuTemplateClick(Sender: TObject);
+var
+  Tree: TTreeView;
+
+begin
+  FFromMainMenu := TRUE;
+  Tree := FCurTree;
+  if(assigned(Tree) and assigned(Tree.Selected)) then
+  begin
+    if(Tree = tvShared) then
+      mnuTDelete.Enabled := ((sbShDelete.Visible) and (sbShDelete.Enabled))
+    else
+      mnuTDelete.Enabled := ((sbPerDelete.Visible) and (sbPerDelete.Enabled));
+    if(assigned(Tree) and assigned(Tree.Selected) and assigned(Tree.Selected.Data)) then
+    begin
+      mnuTCopy.Enabled := (TTemplate(Tree.Selected.Data).RealType in [ttDoc, ttGroup, ttClass]);
+      mnuSort.Enabled := (TTemplate(Tree.Selected.Data).RealType in AllTemplateFolderTypes) and
+                         (Tree.Selected.HasChildren) and
+                         (Tree.Selected.GetFirstChild.GetNextSibling <> nil);
+    end
+    else
+    begin
+      mnuTCopy.Enabled := FALSE;
+      mnuSort.Enabled := FALSE;
+    end;
+    FPasteNode := Tree.Selected;
+    mnuTPaste.Enabled := PasteOK;
+  end
+  else
+  begin
+    mnuTCopy.Enabled := FALSE;
+    mnuTPaste.Enabled := FALSE;
+    mnuTDelete.Enabled := FALSE;
+    mnuSort.Enabled := FALSE;
+  end;
+  mnuNewTemplate.Enabled := btnNew.Enabled;
+  mnuAutoGen.Enabled := btnNew.Enabled;
+  mnuFindShared.Checked := FFindShOn;
+  mnuFindPersonal.Checked := FFindPerOn;
+  mnuShCollapse.Enabled := dmodShared.NeedsCollapsing(tvShared);
+  mnuPerCollapse.Enabled := dmodShared.NeedsCollapsing(tvPersonal);
+end;
+
+procedure TfrmTemplateEditor.mnuFindSharedClick(Sender: TObject);
+begin
+  FMainMenuTree := tvShared;
+  mnuFindTemplatesClick(tvShared);
+end;
+
+procedure TfrmTemplateEditor.mnuFindPersonalClick(Sender: TObject);
+begin
+  FMainMenuTree := tvPersonal;
+  mnuFindTemplatesClick(tvPersonal);
+end;
+
+procedure TfrmTemplateEditor.mnuShCollapseClick(Sender: TObject);
+begin
+  FMainMenuTree := tvShared;
+  mnuCollapseTreeClick(tvShared);
+end;
+
+procedure TfrmTemplateEditor.mnuPerCollapseClick(Sender: TObject);
+begin
+  FMainMenuTree := tvPersonal;
+  mnuCollapseTreeClick(tvPersonal);
+end;
+
+procedure TfrmTemplateEditor.pnlShSearchResize(Sender: TObject);
+begin
+  if((cbShMatchCase.Width + cbShWholeWords.Width) > pnlShSearch.Width) then
+    cbShWholeWords.Left := cbShMatchCase.Width
+  else
+    cbShWholeWords.Left := pnlShSearch.Width - cbShWholeWords.Width;
+end;
+
+procedure TfrmTemplateEditor.pnlPerSearchResize(Sender: TObject);
+begin
+  if((cbPerMatchCase.Width + cbPerWholeWords.Width) > pnlPerSearch.Width) then
+    cbPerWholeWords.Left := cbPerMatchCase.Width
+  else
+    cbPerWholeWords.Left := pnlPerSearch.Width - cbPerWholeWords.Width;
+end;
+
+procedure TfrmTemplateEditor.pnlPropertiesResize(Sender: TObject);
+begin
+  btnNew.Width := pnlProperties.Width;
+end;
+
+procedure TfrmTemplateEditor.mbMainResize(Sender: TObject);
+begin
+  pnlMenu.Width := mbMain.Width + 4;
+  mbMain.Width := pnlMenu.Width - 3;
+end;
+
+procedure TfrmTemplateEditor.mnuBPCheckGrammarClick(Sender: TObject);
+begin
+  GrammarCheckForControl(reBoil);
+end;
+
+procedure TfrmTemplateEditor.mnuSortClick(Sender: TObject);
+var
+  Tree: TTreeView;
+
+begin
+  Tree := FCurTree;
+  if(assigned(Tree) and assigned(Tree.Selected) and Tree.Selected.HasChildren) then
+  begin
+    TTemplate(Tree.Selected.Data).SortChildren;
+    Resync([TTemplate(Tree.Selected.Data)]);
+    btnApply.Enabled := TRUE;
+  end;
+end;
+
+procedure TfrmTemplateEditor.pnlBoilerplateCanResize(Sender: TObject;
+  var NewWidth, NewHeight: Integer; var Resize: Boolean);
+begin
+  if(NewHeight < 40) then Resize := FALSE;
+end;
+
+function TfrmTemplateEditor.AutoDel(Template: TTemplate): boolean;
+begin
+  if(assigned(Template)) then
+    Result := (((Template.ID = '0') or (Template.ID = '')) and
+                (Template.PrintName = NewTemplateName) and
+                (Template.Boilerplate = ''))
+  else
+    Result := FALSE;            
+end;
+
+procedure TfrmTemplateEditor.mnuBPTryClick(Sender: TObject);
+var
+  R: TRect;
+  Move: boolean;
+  tmpl: TTemplate;
+  txt: String;
+
+begin
+  mnuBPErrorCheckClick(nil);
+  if(FBPOK) or (reBoil.Lines.Count = 0) then
+  begin
+    Move := assigned(frmTemplateView);
+    if(Move) then
+    begin
+      R := frmTemplateView.BoundsRect;
+      frmTemplateView.Free;
+      frmTemplateView := nil;
+    end;
+    tmpl := TTemplate(FCurTree.Selected.Data);
+    tmpl.TemplatePreviewMode := TRUE; // Prevents "Are you sure?" dialog when canceling
+    txt := tmpl.Text;
+    if(not tmpl.DialogAborted) then
+      ShowTemplateData(Self, tmpl.PrintName ,txt);
+    if(Move) then
+      frmTemplateView.BoundsRect := R;
+    tmpl.TemplatePreviewMode := FALSE;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuAutoGenClick(Sender: TObject);
+var
+  AName, AText: string;
+
+begin
+  dmodShared.LoadTIUObjects;
+  UpdatePersonalObjects;
+  GetAutoGenText(AName, AText, uPersonalObjects);   // -------- CQ #8665 - RV ------------
+  if(AName <> '') and (AText <> '') then
+  begin
+    btnNewClick(Self);
+    TTemplate(FBtnNewNode.Data).PrintName := AName;
+    TTemplate(FBtnNewNode.Data).Boilerplate := AText;
+    ShowInfo(FBtnNewNode);
+    edtNameOldChange(Self);
+  end;
+end;
+
+procedure TfrmTemplateEditor.reNotesChange(Sender: TObject);
+var
+  Template: TTemplate;
+  DoRefresh: boolean;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      DoRefresh := Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        Template.Description := reNotes.Lines.Text;
+        UpdateApply(Template);
+        if(DoRefresh) then
+        begin
+          tvShared.Invalidate;
+          tvPersonal.Invalidate;
+        end;
+      end;
+    end;
+    btnApply.Enabled := TRUE;
+//      reNotes.Lines.Text := Template.Description;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuNotesUndoClick(Sender: TObject);
+begin
+  reNotes.Perform(EM_UNDO, 0, 0);
+end;
+
+procedure TfrmTemplateEditor.mnuNotesCutClick(Sender: TObject);
+begin
+  reNotes.CutToClipboard;
+end;
+
+procedure TfrmTemplateEditor.mnuNotesCopyClick(Sender: TObject);
+begin
+  reNotes.CopyToClipboard;
+end;
+
+procedure TfrmTemplateEditor.mnuNotesPasteClick(Sender: TObject);
+begin
+  reNotes.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmTemplateEditor.mnuNotesSelectAllClick(Sender: TObject);
+begin
+  reNotes.SelectAll;
+end;
+
+procedure TfrmTemplateEditor.mnuNotesGrammarClick(Sender: TObject);
+begin
+  GrammarCheckForControl(reNotes);
+end;
+
+procedure TfrmTemplateEditor.mnuNotesSpellingClick(Sender: TObject);
+begin
+  SpellCheckForControl(reNotes);
+end;
+
+procedure TfrmTemplateEditor.popNotesPopup(Sender: TObject);
+var
+  ok: boolean;
+
+begin
+  ok := not reNotes.ReadOnly;
+  mnuNotesPaste.Enabled := (ok and Clipboard.HasFormat(CF_TEXT));
+  if(ok) then
+    ok := (reNotes.Lines.Count > 0);
+  mnuNotesSpelling.Enabled := ok and SpellCheckAvailable;
+  mnuNotesGrammar.Enabled := ok and SpellCheckAvailable;
+  mnuNotesCopy.Enabled := (reNotes.SelLength > 0);
+  mnuNotesCut.Enabled := (ok and (reNotes.SelLength > 0));
+  mnuNotesSelectAll.Enabled := (reNotes.Lines.Count > 0);
+  mnuNotesUndo.Enabled := (reNotes.Perform(EM_CANUNDO, 0, 0) <> 0);
+end;
+
+procedure TfrmTemplateEditor.cbNotesClick(Sender: TObject);
+begin
+  pnlNotes.Visible := cbNotes.Checked;
+  splNotes.Visible := cbNotes.Checked;
+  if cbNotes.Checked then
+  begin
+    pnlNotes.Height := tmplEditorSplitterNotes;
+    pnlNotes.Top := pnlBottom.Top - pnlNotes.Height;
+    splNotes.Top := pnlNotes.Top-3;
+  end;
+  pnlBoilerplateResize(Self);
+end;
+
+procedure TfrmTemplateEditor.cbDisplayOnlyClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPDisplayOnlyFld);
+end;
+
+procedure TfrmTemplateEditor.cbFirstLineClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPFirstLineFld);
+end;
+
+procedure TfrmTemplateEditor.cbOneItemOnlyClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPOneItemOnlyFld);
+end;
+
+procedure TfrmTemplateEditor.cbHideDlgItemsClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPHideDlgItemsFld);
+end;
+
+procedure TfrmTemplateEditor.cbHideItemsClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPHideItemsFld);
+end;
+
+procedure TfrmTemplateEditor.cbClick(Sender: TCheckBox; Index: integer);
+var
+  Template: TTemplate;
+  
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        case Index of
+          BPDisplayOnlyFld:   Template.DisplayOnly   := Sender.Checked;
+          BPFirstLineFld:     Template.FirstLine     := Sender.Checked;
+          BPOneItemOnlyFld:   Template.OneItemOnly   := Sender.Checked;
+          BPHideDlgItemsFld:  Template.HideDlgItems  := Sender.Checked;
+          BPHideItemsFld:     Template.HideItems     := Sender.Checked;
+          BPIndentFld:        Template.IndentItems   := Sender.Checked;
+          BPLockFld:          Template.Lock          := Sender.Checked;
+        end;
+        UpdateApply(Template);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbIndentClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPIndentFld);
+end;
+
+procedure TfrmTemplateEditor.mnuToolsClick(Sender: TObject);
+begin
+  mnuEditTemplateFields.Enabled := CanEditTemplateFields;
+  mnuImportTemplate.Enabled := btnNew.Enabled;
+  mnuExportTemplate.Enabled := (assigned(FCurTree) and assigned(FCurTree.Selected) and
+                                assigned(FCurTree.Selected.Data));
+end;
+
+procedure TfrmTemplateEditor.mnuEditTemplateFieldsClick(Sender: TObject);
+begin
+  if assigned(frmTemplateObjects) then
+    frmTemplateObjects.Hide;
+  if assigned(frmTemplateFields) then
+    frmTemplateFields.Hide;
+  if EditDialogFields and assigned(frmTemplateFields) then
+    FreeAndNil(frmTemplateFields);
+end;
+
+procedure TfrmTemplateEditor.mnuBPInsertFieldClick(Sender: TObject);
+begin
+  if(not assigned(frmTemplateFields)) then
+  begin
+    frmTemplateFields := TfrmTemplateFields.Create(Self);
+    frmTemplateFields.Font := Font;
+    frmTemplateFields.re := reBoil;
+    frmTemplateFields.AutoLongLines := AutoLongLines;
+  end;
+  frmTemplateFields.Show;
+end;
+
+procedure TfrmTemplateEditor.UpdateInsertsDialogs;
+begin
+  if assigned(frmTemplateObjects) then
+    frmTemplateObjects.UpdateStatus;
+  if assigned(frmTemplateFields) then
+    frmTemplateFields.UpdateStatus;
+end;
+
+procedure TfrmTemplateEditor.mnuExportTemplateClick(Sender: TObject);
+var
+  Tmpl, Flds: TStringList;
+  i: integer;
+  XMLDoc: IXMLDOMDocument;
+  err: boolean;
+
+begin
+  err := FALSE;
+  if(assigned(FCurTree) and assigned(FCurTree.Selected) and assigned(FCurTree.Selected.Data)) then
+  begin
+    dlgExport.FileName := ValidFileName(TTemplate(FCurTree.Selected.Data).PrintName);
+    if dlgExport.Execute then
+    begin
+      Tmpl := TStringList.Create;
+      try
+        Flds := TStringList.Create;
+        try
+          Tmpl.Add('<'+XMLHeader+'>');
+          if TTemplate(FCurTree.Selected.Data).CanExportXML(Tmpl, Flds, 2) then
+          begin
+            if (Flds.Count > 0) then begin
+              ExpandEmbeddedFields(Flds);
+              FastAssign(ExportTemplateFields(Flds), Flds);
+              for i := 0 to Flds.Count-1 do
+                Flds[i] := '  ' + Flds[i];
+              FastAddStrings(Flds, Tmpl);
+            end; {if}
+            Tmpl.Add('</'+XMLHeader+'>');
+            try
+              XMLDoc := CoDOMDocument.Create;
+              try
+                XMLDoc.preserveWhiteSpace := TRUE;
+                XMLDoc.LoadXML(Tmpl.Text);
+                XMLDoc.Save(dlgExport.FileName);
+              finally
+                XMLDoc := nil;
+              end;
+            except
+              InfoBox(Format(NoIE5, ['Export']), NoIE5Header, MB_OK);
+              err := TRUE;
+            end;
+            if not err then
+              InfoBox('Template ' + TTemplate(FCurTree.Selected.Data).PrintName +
+                      ' Exported.', 'Template Exported', MB_OK);
+          end;
+        finally
+          Flds.Free;
+        end;
+      finally
+        Tmpl.Free;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuImportTemplateClick(Sender: TObject);
+const
+  Filter1 = 'Template Files|*.txml';
+  WordFilter = '|Word Documents|*.doc;*.dot';
+  Filter2 = '|XML Files|*.xml|All Files|*.*';
+
+var
+  XMLDoc: IXMLDOMDocument;
+  RootElement: IXMLDOMElement;
+  ImportedTemplate: TTemplate;
+  AppData, Flds, ResultSet: TStringList;
+  tmp,j,p3: string;
+  err, ok, changes, xmlerr: boolean;
+  i: integer;
+  choice: word;
+
+  procedure ClearFields;
+  begin
+    Flds.Text := '';
+    ResultSet.Text := '';
+  end;
+
+begin
+  tmp := Filter1;
+  err := FALSE;
+  if WordImportActive then
+    tmp := tmp + WordFilter;
+  tmp := tmp + Filter2;
+  dlgImport.Filter := tmp;
+  if btnNew.Enabled and dlgImport.Execute then
+  begin
+    tmp := ExtractFileExt(dlgImport.FileName);
+    if(WordImportActive and ((CompareText(tmp,'.doc') = 0) or
+                             (CompareText(tmp,'.dot') = 0))) then
+      AppData := TStringList.Create
+    else
+      AppData := nil;
+    try
+      try
+        XMLDoc := CoDOMDocument.Create;
+      except
+        InfoBox(Format(NoIE5, ['Import']), NoIE5Header, MB_OK);
+        exit;
+      end;
+      try
+        if assigned(AppData) then
+        begin
+          try
+            ok := GetXMLFromWord(dlgImport.FileName, AppData);
+          except
+            ok := FALSE;
+            err := TRUE;
+          end;
+        end
+        else
+          ok := TRUE;
+        if ok and assigned(XMLDoc) then
+        begin
+          XMLDoc.preserveWhiteSpace := TRUE;
+          if assigned(AppData) then
+            XMLDoc.LoadXML(AppData.Text)
+          else
+            XMLDoc.Load(dlgImport.FileName);
+          RootElement := XMLDoc.DocumentElement;
+          if not assigned(RootElement) then
+            XMLImportError(0);
+          try
+            if(RootElement.tagName <> XMLHeader)then
+              XMLImportError(0)
+            else
+            begin
+              ImportedTemplate := nil;
+              FXMLTemplateElement := FindXMLElement(RootElement, XMLTemplateTag);
+              if assigned(FXMLTemplateElement) then
+              begin
+                FXMLFieldElement := FindXMLElement(RootElement, XMLTemplateFieldsTag);
+                if(assigned(FXMLFieldElement)) then
+                begin
+                  Flds := TStringList.Create;
+                  ResultSet := TStringList.Create;
+                  try
+                    Flds.Text := FXMLFieldElement.Get_XML;
+                    choice := IDOK;
+                    changes := FALSE;
+                    Application.ProcessMessages;
+                    if not BuildTemplateFields(Flds) then  //Calls RPC to transfer all field XML
+                      choice := IDCANCEL;                  //for processing
+                    Flds.Text := '';
+                    Application.ProcessMessages;
+                    if choice = IDOK then
+                      CheckTemplateFields(Flds);
+                    if Flds.Count > 0 then
+                      begin
+                        for i := 1 to Flds.Count do
+                          begin
+                          j := piece(Flds[i-1],U,2);
+                          if (j = '0') or (j = '2') then
+                            begin
+                              p3 := piece(Flds[i-1],U,3);
+                              if p3 = 'XML FORMAT ERROR' then
+                                choice := IDCANCEL;
+                              changes := TRUE;
+                              if j = '2' then begin
+                                j := Flds[i-1];
+                                SetPiece(j,U,2,'1');
+                                Flds[i-1] := j
+                              end;
+                            end;
+                          end;
+                      end
+                    else
+                      choice := IDCANCEL;
+                    if choice <> IDOK then
+                      InfoBox(iMessage2+iMessage3, 'Error', MB_OK or MB_ICONERROR)
+                    else
+                      if (not CanEditTemplateFields) AND
+                         changes {(there is at least one new field)} then
+                        begin
+                          choice := InfoBox(iMessage, 'Warning', MB_OKCANCEL or MB_ICONWARNING);
+                          Flds.Text := '';
+                        end;
+                    if choice <> IDCANCEL then
+                      begin
+                      FImportingFromXML := TRUE;
+                      try
+                        btnNewClick(Self);
+                        ImportedTemplate := TTemplate(FBtnNewNode.Data);
+                      finally
+                        FImportingFromXML := FALSE;
+                      end; {try}
+                      Application.ProcessMessages;
+                      if assigned(ImportedTemplate) and (Flds.Count > 0) then
+                        if not ImportLoadedFields(ResultSet) then begin
+                          InfoBox(iMessage2+iMessage3, 'Error', MB_OK or MB_ICONERROR);
+                          ClearFields;
+                          choice := IDCANCEL;
+                        end;//if
+                      if Flds.Count = 0 then
+                        choice := IDCANCEL;
+                      end {if choice <> mrCancel}
+                    else
+                      ClearFields;
+
+                    xmlerr := FALSE;
+                    if (Flds.Count > 0) and
+                       (ResultSet.Count > 0) and
+                       (Flds.Count = ResultSet.Count) then
+                      for i := 0 to Flds.Count-1 do begin
+                        if piece(ResultSet[i],U,2) = '0' then begin
+                          j := piece(Flds[i],U,1) + U + '0' + U + piece(ResultSet[i],U,3);
+                          Flds[i] := j;
+                        end
+                      end
+                    else
+                      xmlerr := TRUE;
+
+                    if xmlerr and (choice <> IDCANCEL) then begin
+                      InfoBox(iMessage2, 'Warning', MB_OK or MB_ICONWARNING);
+                      ClearFields;
+                    end;
+
+                    i := 0;
+                    while (i < Flds.Count) do begin
+                      if Piece(Flds[i], U, 2) <> '0' then
+                        Flds.Delete(i)
+                      else
+                        inc(i);
+                    end;//while
+                    if(Flds.Count > 0) then
+                    begin
+                      if assigned(frmTemplateFields) then
+                        FreeAndNil(frmTemplateFields);
+                      ImportedTemplate.UpdateImportedFieldNames(Flds);
+                      if not assigned(AppData) then
+                      begin
+                        for i := 0 to Flds.Count-1 do
+                          Flds[i] := '  Field "' + Piece(Flds[i],U,1) + '" has been renamed to "'+
+                                                   Piece(Flds[i],U,3) + '"';
+                        if Flds.Count = 1 then
+                          tmp := 'A template field has'
+                        else
+                          tmp := IntToStr(Flds.Count) + ' template fields have';
+                        Flds.Insert(0,tmp + ' been imported with the same name as');
+                        Flds.Insert(1,'existing template fields, but with different field definitions.');
+                        Flds.Insert(2,'These imported template fields have been renamed as follows:');
+                        Flds.Insert(3,'');
+                        InfoBox(Flds.Text, 'Information', MB_OK or MB_ICONINFORMATION);
+                      end;
+                    end;
+                  finally
+                    Flds.Free;
+                    ResultSet.Free;
+                  end;
+                end
+                else {There are no fields to consider...}
+                begin
+                  FImportingFromXML := TRUE;
+                  try
+                    btnNewClick(Self);
+                    ImportedTemplate := TTemplate(FBtnNewNode.Data);
+                  finally
+                    FImportingFromXML := FALSE;
+                  end; {try}
+                end;
+              end;
+              if assigned(ImportedTemplate) then
+                ShowInfo(FBtnNewNode);
+            end;
+          finally
+            RootElement := nil;
+          end;
+        end;
+      finally
+        XMLDoc := nil;
+      end;
+    finally
+      if assigned(AppData) then
+      begin
+        AppData.Free;
+        if err then
+          InfoBox('An error occured while Importing Word Document.  Make sure Word is closed and try again.','Import Error', MB_OK);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbxTypeDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  ImgIdx: integer;
+
+begin
+  cbxType.Canvas.FillRect(Rect);
+  case IdxForced[FForceContainer, Index] of
+    tiTemplate: ImgIdx := 4;
+    tiFolder:   ImgIdx := 3;
+    tiGroup:    ImgIdx := 5;
+    tiDialog:   ImgIdx := 23;
+    tiRemDlg:   ImgIdx := 27;
+    tiCOMObj:   ImgIdx := 28;
+    else
+      ImgIdx := ord(tiNone);
+  end;
+  if ImgIdx >= 0 then
+    dmodShared.imgTemplates.Draw(cbxType.Canvas, Rect.Left+1, Rect.Top+1, ImgIdx);
+  if Index >= 0 then
+    cbxType.Canvas.TextOut(Rect.Left+21, Rect.Top+2, cbxType.Items[Index]);
+end;
+
+procedure TfrmTemplateEditor.cbxTypeChange(Sender: TObject);
+var
+  i,tg: integer;
+  Template: TTemplate;
+  ttyp: TTemplateType;
+  Node: TTreeNode;
+  idx: TTypeIndex;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected))) then
+  begin
+    tg := cbxType.ItemIndex;
+    if tg >= 0 then
+    begin
+      if CanClone(FCurTree.Selected) then
+      begin
+        idx := IdxForced[FForceContainer, tg];
+        if(idx = tiRemDlg) and (not (GetLinkType(FCurTree.Selected) in [ltNone, ltTitle])) then
+        begin
+          FUpdating := TRUE;
+          try
+            cbxType.ItemIndex := ord(tiTemplate);
+          finally
+            FUpdating := FALSE;
+          end;
+          ShowMsg('Can not assign a Reminder Dialog to a Reason for Request');
+        end
+        else
+        begin
+          Clone(FCurTree.Selected);
+          Template := TTemplate(FCurTree.Selected.Data);
+          if assigned(Template) and Template.CanModify then
+          begin
+            ttyp := TypeTag[idx];
+            if(not FForceContainer) or (not (idx in [tiTemplate, tiRemDlg])) then
+            begin
+              if(ttyp = ttDialog) then
+              begin
+                Template.Dialog := TRUE;
+                ttyp := ttGroup;
+              end
+              else
+                Template.Dialog := FALSE;
+              Template.RealType := ttyp;
+              if(Template.RealType = ttDoc) and (idx = tiRemDlg) then
+                Template.IsReminderDialog := TRUE
+              else
+                Template.IsReminderDialog := FALSE;
+              if(Template.RealType = ttDoc) and (idx = tiCOMObj) then
+                Template.IsCOMObject := TRUE
+              else
+                Template.IsCOMObject := FALSE;
+              UpdateApply(Template);
+            end;
+            for i := 0 to Template.Nodes.Count-1 do
+            begin
+              Node := TTreeNode(Template.Nodes.Objects[i]);
+              Node.ImageIndex := dmodShared.ImgIdx(Node);
+              Node.SelectedIndex := dmodShared.ImgIdx(Node);
+            end;
+            tvShared.Invalidate;
+            tvPersonal.Invalidate;
+            Node := FCurTree.Selected;
+            tvTreeChange(TTreeView(Node.TreeView), Node);
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbxRemDlgsChange(Sender: TObject);
+var
+  Template: TTemplate;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+     FCanDoReminders) then
+  begin
+    if CanClone(FCurTree.Selected) then
+    begin
+      Clone(FCurTree.Selected);
+      Template := TTemplate(FCurTree.Selected.Data);
+      if assigned(Template) and Template.CanModify then
+      begin
+        if cbxRemDlgs.ItemIndex < 0 then
+          Template.ReminderDialog := ''
+        else
+          Template.ReminderDialog := cbxRemDlgs.Items[cbxRemDlgs.ItemIndex];
+        UpdateApply(Template);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.mnuTemplateIconLegendClick(Sender: TObject);
+begin
+  ShowIconLegend(ilTemplates, TRUE);
+end;
+
+procedure TfrmTemplateEditor.cbLongLinesClick(Sender: TObject);
+begin
+  pnlBoilerplateResize(Self);
+  pnlBoilerplateResize(Self); // Second Call is Needed!
+end;
+
+procedure TfrmTemplateEditor.AutoLongLines(Sender: TObject);
+begin
+  cbLongLines.Checked := TRUE;
+end;
+
+(*procedure TfrmTemplateEditor.UpdatePersonalObjects;
+var
+  i: integer;
+
+begin
+  if not assigned(FPersonalObjects) then
+  begin
+    FPersonalObjects := TStringList.Create;
+    GetAllowedPersonalObjects;
+    for i := 0 to RPCBrokerV.Results.Count-1 do
+      FPersonalObjects.Add(Piece(RPCBrokerV.Results[i],U,1));
+    FPersonalObjects.Sorted := TRUE;
+  end;
+end;*)
+
+(*function TfrmTemplateEditor.ModifyAllowed(const Node: TTreeNode): boolean;
+var
+  tmpl: TTemplate;
+
+  function GetFirstPersonalNode(Node: TTreeNode): TTreeNode;
+  begin
+    Result := Node;
+    if assigned(Node.Parent) and (TTemplate(Node.Data).PersonalOwner <> User.DUZ) then
+      Result := GetFirstPersonalNode(Node.Parent);
+  end;
+
+begin
+  if(assigned(Node)) then
+  begin
+    if (TTreeView(Node.TreeView) = tvPersonal) then
+      Result := TTemplate(GetFirstPersonalNode(Node).Data).CanModify
+    else
+      Result := TRUE;
+  end
+  else
+    Result := FALSE;
+  if Result then
+  begin
+    tmpl := TTemplate(Node.Data);
+    if (tmpl.PersonalOwner = 0) or (tmpl.PersonalOwner = User.DUZ) then
+      Result := tmpl.CanModify;
+  end;
+end;
+*)
+
+{ Returns TRUE if Cloning is not needed or if Cloning is needed and
+  the top personal Node in the tree is locked. }
+function TfrmTemplateEditor.CanClone(const Node: TTreeNode): boolean;
+var
+  Template: TTemplate;
+
+  function GetFirstPersonalNode(Node: TTreeNode): TTreeNode;
+  begin
+    Result := Node;
+    if assigned(Node.Parent) and (TTemplate(Node.Data).PersonalOwner <> User.DUZ) then
+      Result := GetFirstPersonalNode(Node.Parent);
+  end;
+
+begin
+  if(assigned(Node)) and assigned(Node.Data) then
+  begin
+    if (TTreeView(Node.TreeView) = tvPersonal) then
+    begin
+      Template := TTemplate(Node.Data);
+      if Template.IsCOMObject or (Template.FileLink <> '') then
+        Result := FALSE
+      else
+        Result := TTemplate(GetFirstPersonalNode(Node).Data).CanModify
+    end
+    else
+      Result := TRUE;
+  end
+  else
+    Result := FALSE;
+end;
+
+procedure TfrmTemplateEditor.UpdateApply(Template: TTemplate);
+begin
+  if(not btnApply.Enabled) then
+    btnApply.Enabled := Template.Changed;
+end;
+
+procedure TfrmTemplateEditor.TemplateLocked(Sender: TObject);
+begin
+  Resync([TTemplate(Sender)]);
+  ShowMsg(Format(TemplateLockedText, [TTemplate(Sender).PrintName]));
+end;
+
+procedure TfrmTemplateEditor.cbLockClick(Sender: TObject);
+begin
+  cbClick(TCheckBox(Sender), BPLockFLD);
+end;
+
+procedure TfrmTemplateEditor.mnuRefreshClick(Sender: TObject);
+begin
+  if btnApply.Enabled then
+  begin
+    if InfoBox('All changes must be saved before you can Refresh.  Save Changes?',
+        'Confirmation', MB_YESNO or MB_ICONQUESTION) <> IDYES then
+      exit;
+  end;
+  btnApplyClick(Sender);
+  if BtnApply.Enabled then
+    InfoBox('Save not completed - unable to refresh.', 'Error', MB_OK or MB_ICONERROR)
+  else
+    RefreshData;
+end;
+
+procedure TfrmTemplateEditor.RefreshData;
+var
+  exp1, exp2, s1, s2, t1, t2: string;
+  focus: TWinControl;
+
+begin
+  focus := FCurTree;
+  exp1 := tvShared.GetExpandedIDStr(1, ';');
+  exp2 := tvPersonal.GetExpandedIDStr(1, ';');
+  s1 := tvShared.GetNodeID(TORTreeNode(tvShared.Selected),1,';');
+  s2 := tvPersonal.GetNodeID(TORTreeNode(tvPersonal.Selected),1,';');
+  t1 := tvShared.GetNodeID(TORTreeNode(tvShared.TopItem),1,';');
+  t2 := tvPersonal.GetNodeID(TORTreeNode(tvPersonal.TopItem),1,';');
+  tvPersonal.Items.BeginUpdate;
+  try
+    tvShared.Items.BeginUpdate;
+    try
+      ReleaseTemplates;
+      tvPersonal.Items.Clear;
+      tvShared.Items.Clear;
+      InitTrees;
+      tvShared.SetExpandedIDStr(1, ';', exp1);
+      tvShared.TopItem := tvShared.FindPieceNode(t1,1,';');
+      tvShared.Selected := tvShared.FindPieceNode(s1,1,';');
+      tvPersonal.SetExpandedIDStr(1, ';', exp2);
+      tvPersonal.TopItem := tvPersonal.FindPieceNode(t2,1,';');
+      tvPersonal.Selected := tvPersonal.FindPieceNode(s2,1,';');
+    finally
+      tvShared.Items.EndUpdate;
+    end;
+  finally
+    tvPersonal.Items.EndUpdate;
+  end;
+  ActiveControl := focus;
+end;
+
+procedure TfrmTemplateEditor.InitTrees;
+begin
+  LoadTemplateData;
+  if(not assigned(RootTemplate)) then
+    SaveTemplate(AddTemplate('0^R^A^Shared Templates'),-1);
+  if(not assigned(MyTemplate)) then
+    AddTemplate('0^P^A^My Templates^^^'+IntToStr(User.DUZ));
+  dmodShared.AddTemplateNode(tvPersonal, FPersonalEmptyNodeCount, MyTemplate);
+  dmodShared.AddTemplateNode(tvShared, FSharedEmptyNodeCount, RootTemplate);
+  if (UserTemplateAccessLevel = taEditor) then
+  begin
+    if CanEditLinkType(ttTitles) then
+      dmodShared.AddTemplateNode(tvShared, FSharedEmptyNodeCount, TitlesTemplate);
+    if CanEditLinkType(ttConsults) then
+      dmodShared.AddTemplateNode(tvShared, FSharedEmptyNodeCount, ConsultsTemplate);
+    if CanEditLinkType(ttProcedures) then
+      dmodShared.AddTemplateNode(tvShared, FSharedEmptyNodeCount, ProceduresTemplate);
+  end;
+end;
+
+procedure TfrmTemplateEditor.reResizeRequest(Sender: TObject;
+  Rect: TRect);
+var
+  R: TRect;
+
+begin
+  R := TRichEdit(Sender).ClientRect;
+  if (FLastRect.Right <> R.Right) or
+     (FLastRect.Bottom <> R.Bottom) or
+     (FLastRect.Left <> R.Left) or
+     (FLastRect.Top <> R.Top) then
+  begin
+    FLastRect := R;
+    pnlBoilerplateResize(Self);
+  end;
+end;
+
+procedure TfrmTemplateEditor.reBoilSelectionChange(Sender: TObject);
+begin
+  UpdateXY(reBoil, lblBoilCol, lblBoilRow);
+end;
+
+procedure TfrmTemplateEditor.reGroupBPSelectionChange(Sender: TObject);
+begin
+  UpdateXY(reGroupBP, lblGroupCol, lblGroupRow);
+end;
+
+procedure TfrmTemplateEditor.UpdateXY(re: TRichEdit; lblX, lblY: TLabel);
+var
+  p: TPoint;
+
+begin
+  p := re.CaretPos;
+  lblY.Caption := 'Line: ' + inttostr(p.y + 1);
+  lblX.Caption := 'Column: ' + inttostr(p.x + 1);
+end;
+
+procedure TfrmTemplateEditor.cbxCOMObjChange(Sender: TObject);
+var
+  Template: TTemplate;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+     FCanDoCOMObjects and (FCurTree = tvShared)) then
+  begin
+    Template := TTemplate(FCurTree.Selected.Data);
+    if assigned(Template) and Template.CanModify then
+    begin
+      if cbxCOMObj.ItemIndex < 0 then
+        Template.COMObject := 0
+      else
+        Template.COMObject := cbxCOMObj.ItemID;
+      UpdateApply(Template);
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.edtCOMParamChange(Sender: TObject);
+var
+  Template: TTemplate;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+     FCanDoCOMObjects and (FCurTree = tvShared)) then
+  begin
+    Template := TTemplate(FCurTree.Selected.Data);
+    if assigned(Template) and Template.CanModify then
+    begin
+      Template.COMParam := edtCOMParam.Text;
+      UpdateApply(Template);
+    end;
+  end;
+end;
+
+function TfrmTemplateEditor.GetLinkType(const ANode: TTreeNode): TTemplateLinkType;
+var
+  Node: TTreeNode;
+
+begin
+  Result := ltNone;
+  if assigned(ANode) then
+  begin
+    if(not assigned(ANode.Data)) or (TTemplate(ANode.Data).RealType <> ttClass) then
+    begin
+      Node := ANode.Parent;
+      repeat
+        if assigned(Node) and assigned(Node.Data) then
+        begin
+          if (TTemplate(Node.Data).FileLink <> '') then
+            Node := nil
+          else
+          if (TTemplate(Node.Data).RealType in AllTemplateLinkTypes) then
+          begin
+            case TTemplate(Node.Data).RealType of
+              ttTitles:     Result := ltTitle;
+              ttConsults:   Result := ltConsult;
+              ttProcedures: Result := ltProcedure;
+            end;
+          end
+          else
+            Node := Node.Parent;
+        end
+        else
+          Node := nil;
+      until(Result <> ltNone) or (not assigned(Node));
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbxLinkNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+var
+  tmpSL: TStringList;
+  i: integer;
+  tmp: string;
+
+begin
+  tmpSL := TStringList.Create;
+  try
+    case TTemplateLinkType(pnlLink.Tag) of
+      ltTitle:     FastAssign(SubSetOfAllTitles(StartFrom, Direction), tmpSL);
+//      ltConsult:
+      ltProcedure:
+        begin
+          FastAssign(SubSetOfProcedures(StartFrom, Direction), tmpSL);
+          for i := 0 to tmpSL.Count-1 do
+          begin
+            tmp := tmpSL[i];
+            setpiece(tmp,U,1,piece(piece(tmp,U,4),';',1));
+            tmpSL[i] := tmp;
+          end;
+        end;
+    end;
+    cbxLink.ForDataUse(tmpSL);
+  finally
+    tmpSL.Free;
+  end;
+end;
+
+procedure TfrmTemplateEditor.cbxLinkChange(Sender: TObject);
+var
+  Template,LinkTemplate: TTemplate;
+  update: boolean;
+
+begin
+  if((not FUpdating) and (assigned(FCurTree)) and (assigned(FCurTree.Selected)) and
+     (FCurTree = tvShared)) then
+  begin
+    Template := TTemplate(FCurTree.Selected.Data);
+    if assigned(Template) and Template.CanModify then
+    begin
+      update := true;
+      if cbxLink.ItemIEN > 0 then
+      begin
+        LinkTemplate := GetLinkedTemplate(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag));
+        if (assigned(LinkTemplate) and (LinkTemplate <> Template)) then
+        begin
+          ShowMsg(GetLinkName(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag)) +
+                      ' is already assigned to another template.');
+          cbxLink.SelectByID(Template.LinkIEN);
+          update := False;
+        end
+        else
+        begin
+          Template.FileLink := ConvertFileLink(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag));
+          if Template.LinkName <> '' then
+            edtName.Text := copy(Template.LinkName,1,edtName.MaxLength);
+        end;
+      end
+      else
+        Template.FileLink := '';
+      if update then
+        UpdateApply(Template);
+    end;
+  end;
+end;
+
+procedure TfrmTemplateEditor.reBoilKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if FNavigatingTab then
+  begin
+    if ssShift in Shift then
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
+    else if ssCtrl	in Shift then
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+    FNavigatingTab := False;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmTemplateEditor.reBoilKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if FNavigatingTab then
+    Key := #0;  //Disable shift-tab processinend;
+end;
+
+procedure TfrmTemplateEditor.reBoilKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  //The navigating tab controls were inadvertantently adding tab characters
+  //This should fix it
+  FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
+  if FNavigatingTab then
+    Key := 0;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFieldEditor.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFieldEditor.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFieldEditor.dfm	(revision 1676)
@@ -0,0 +1,1106 @@
+inherited frmTemplateFieldEditor: TfrmTemplateFieldEditor
+  Left = 294
+  Top = 211
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Template Field Editor'
+  ClientHeight = 420
+  ClientWidth = 788
+  Position = poScreenCenter
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  ExplicitWidth = 796
+  ExplicitHeight = 454
+  PixelsPerInch = 96
+  TextHeight = 13
+  object splLeft: TSplitter [0]
+    Left = 429
+    Top = 25
+    Height = 366
+    Beveled = True
+    ExplicitLeft = 273
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 391
+    Width = 788
+    Height = 29
+    Align = alBottom
+    TabOrder = 2
+    DesignSize = (
+      788
+      29)
+    object lblReq: TStaticText
+      Left = 132
+      Top = 8
+      Width = 134
+      Height = 17
+      Caption = '* Indicates a Required Field'
+      TabOrder = 5
+    end
+    object btnOK: TButton
+      Left = 548
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 2
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 628
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 3
+      OnClick = btnCancelClick
+    end
+    object btnApply: TButton
+      Left = 708
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'Apply'
+      TabOrder = 4
+      OnClick = btnApplyClick
+    end
+    object btnPreview: TButton
+      Left = 435
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'Preview'
+      Enabled = False
+      TabOrder = 1
+      OnClick = btnPreviewClick
+    end
+    object cbHide: TCheckBox
+      Left = 6
+      Top = 6
+      Width = 115
+      Height = 17
+      Caption = 'Hide Inactive Fields'
+      Checked = True
+      State = cbChecked
+      TabOrder = 0
+      OnClick = cbHideClick
+    end
+  end
+  object pnlObjs: TPanel [2]
+    Left = 0
+    Top = 25
+    Width = 429
+    Height = 366
+    Align = alLeft
+    Caption = 'pnlObjs'
+    TabOrder = 0
+    OnResize = pnlObjsResize
+    object lblObjs: TLabel
+      Left = 1
+      Top = 1
+      Width = 427
+      Height = 13
+      Align = alTop
+      Caption = 'Template Fields'
+      ExplicitWidth = 74
+    end
+    object cbxObjs: TORComboBox
+      Left = 1
+      Top = 14
+      Width = 427
+      Height = 351
+      Style = orcsSimple
+      Align = alClient
+      AutoSelect = True
+      Caption = 'Template Fields'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2,3'
+      HideSynonyms = True
+      Sorted = False
+      SynonymChars = '<Inactive>'
+      TabPositions = '50,60,70,80,90'
+      TabOrder = 0
+      OnChange = cbxObjsChange
+      OnKeyDown = cbxObjsKeyDown
+      OnNeedData = cbxObjsNeedData
+      OnSynonymCheck = cbxObjsSynonymCheck
+      CharsNeedMatch = 1
+    end
+  end
+  object pnlRight: TPanel [3]
+    Left = 432
+    Top = 25
+    Width = 356
+    Height = 366
+    Align = alClient
+    Constraints.MinWidth = 356
+    TabOrder = 1
+    OnResize = FormResize
+    object splBottom: TSplitter
+      Left = 1
+      Top = 278
+      Width = 354
+      Height = 3
+      Cursor = crVSplit
+      Align = alBottom
+      Beveled = True
+    end
+    object pnlPreview: TPanel
+      Left = 1
+      Top = 281
+      Width = 354
+      Height = 84
+      Align = alBottom
+      TabOrder = 1
+      OnResize = FormResize
+      object lblNotes: TLabel
+        Left = 1
+        Top = 1
+        Width = 352
+        Height = 13
+        Align = alTop
+        Caption = 'Notes:'
+        ExplicitWidth = 31
+      end
+      object reNotes: TRichEdit
+        Left = 1
+        Top = 14
+        Width = 352
+        Height = 69
+        Align = alClient
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        PopupMenu = popText
+        ScrollBars = ssBoth
+        TabOrder = 0
+        WantTabs = True
+        OnChange = reNotesChange
+        OnEnter = edtpopControlEnter
+        OnKeyUp = reNotesKeyUp
+        OnResizeRequest = reItemsResizeRequest
+      end
+    end
+    object pnlObjInfo: TPanel
+      Left = 1
+      Top = 1
+      Width = 354
+      Height = 277
+      Align = alClient
+      TabOrder = 0
+      OnResize = FormResize
+      DesignSize = (
+        354
+        277)
+      object lblName: TLabel
+        Left = 4
+        Top = 8
+        Width = 31
+        Height = 13
+        Caption = 'Name:'
+      end
+      object lblS2: TLabel
+        Left = 4
+        Top = 75
+        Width = 23
+        Height = 13
+        Caption = 'lblS2'
+      end
+      object lblLM: TLabel
+        Left = 3
+        Top = 194
+        Width = 42
+        Height = 13
+        Hint = 'Text to replace template field when used in List Manager'
+        Anchors = [akLeft, akBottom]
+        Caption = 'LM Text:'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object lblS1: TLabel
+        Left = 4
+        Top = 53
+        Width = 23
+        Height = 13
+        Caption = 'lblS1'
+      end
+      object lblType: TLabel
+        Left = 4
+        Top = 32
+        Width = 27
+        Height = 13
+        Caption = 'Type:'
+      end
+      object lblTextLen: TLabel
+        Left = 255
+        Top = 31
+        Width = 45
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Text Len:'
+      end
+      object lblLength: TLabel
+        Left = 157
+        Top = 31
+        Width = 46
+        Height = 13
+        Anchors = [akTop, akRight]
+        Caption = 'Field Len:'
+      end
+      object lblS3: TLabel
+        Left = 4
+        Top = 97
+        Width = 23
+        Height = 13
+        Caption = 'lblS3'
+      end
+      object lblLine: TLabel
+        Left = 4
+        Top = 152
+        Width = 23
+        Height = 13
+        Caption = 'Line:'
+      end
+      object lblCol: TLabel
+        Left = 4
+        Top = 168
+        Width = 18
+        Height = 13
+        Caption = 'Col:'
+      end
+      object edtName: TCaptionEdit
+        Left = 50
+        Top = 4
+        Width = 300
+        Height = 22
+        Anchors = [akLeft, akTop, akRight]
+        CharCase = ecUpperCase
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        MaxLength = 60
+        ParentFont = False
+        PopupMenu = popText
+        TabOrder = 0
+        OnChange = edtNameChange
+        OnEnter = edtpopControlEnter
+        OnExit = edtNameExit
+        Caption = 'Name'
+      end
+      object edtLMText: TCaptionEdit
+        Left = 50
+        Top = 189
+        Width = 300
+        Height = 22
+        Hint = 'Text to replace template field when used in List Manager'
+        Anchors = [akLeft, akRight, akBottom]
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        MaxLength = 70
+        ParentFont = False
+        ParentShowHint = False
+        PopupMenu = popText
+        ShowHint = True
+        TabOrder = 7
+        OnChange = edtLMTextChange
+        OnEnter = edtpopControlEnter
+        Caption = 'LM Text'
+      end
+      object cbxType: TORComboBox
+        Left = 50
+        Top = 27
+        Width = 102
+        Height = 21
+        Anchors = [akLeft, akTop, akRight]
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Type'
+        Color = clWindow
+        DropDownCount = 11
+        Items.Strings = (
+          ''
+          'E^Edit Box'
+          'C^Combo Box'
+          'B^Button'
+          'X^Check Boxes'
+          'R^Radio Buttons'
+          'D^Date'
+          'N^Number'
+          'H^Hyperlink'
+          'W^Word Processing'
+          'T^Text')
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        OnChange = cbxTypeChange
+        CharsNeedMatch = 1
+      end
+      object edtTextLen: TCaptionEdit
+        Left = 309
+        Top = 27
+        Width = 26
+        Height = 21
+        Anchors = [akTop, akRight]
+        TabOrder = 4
+        Text = '0'
+        OnChange = edtTextLenChange
+        Caption = 'Text Length'
+      end
+      object udTextLen: TUpDown
+        Left = 335
+        Top = 27
+        Width = 15
+        Height = 21
+        Anchors = [akTop, akRight]
+        Associate = edtTextLen
+        Max = 240
+        TabOrder = 5
+      end
+      object pnlSwap: TPanel
+        Left = 50
+        Top = 49
+        Width = 300
+        Height = 140
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        BevelOuter = bvNone
+        TabOrder = 6
+        object edtDefault: TCaptionEdit
+          Left = 0
+          Top = 0
+          Width = 300
+          Height = 22
+          Align = alTop
+          Font.Charset = ANSI_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          MaxLength = 70
+          ParentFont = False
+          PopupMenu = popText
+          TabOrder = 2
+          OnChange = edtDefaultChange
+          OnEnter = edtpopControlEnter
+          OnExit = ControlExit
+          Caption = 'Default Value'
+        end
+        object pnlNum: TPanel
+          Left = 0
+          Top = 22
+          Width = 300
+          Height = 22
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 0
+          object lblMin: TLabel
+            Left = 53
+            Top = 4
+            Width = 20
+            Height = 13
+            Caption = 'Min:'
+          end
+          object lblInc: TLabel
+            Left = 207
+            Top = 4
+            Width = 50
+            Height = 13
+            Caption = 'Increment:'
+          end
+          object lblMaxVal: TLabel
+            Left = 129
+            Top = 4
+            Width = 23
+            Height = 13
+            Caption = 'Max:'
+          end
+          object udDefNum: TUpDown
+            Left = 34
+            Top = 0
+            Width = 15
+            Height = 21
+            Associate = edtDefNum
+            Min = -9999
+            Max = 9999
+            TabOrder = 1
+            Thousands = False
+          end
+          object edtDefNum: TCaptionEdit
+            Left = 0
+            Top = 0
+            Width = 34
+            Height = 21
+            TabOrder = 0
+            Text = '0'
+            OnChange = edtDefNumChange
+            Caption = 'Default Number'
+          end
+          object udMinVal: TUpDown
+            Left = 110
+            Top = 0
+            Width = 15
+            Height = 21
+            Associate = edtMinVal
+            Min = -9999
+            Max = 9999
+            TabOrder = 3
+            Thousands = False
+          end
+          object edtMinVal: TCaptionEdit
+            Left = 76
+            Top = 0
+            Width = 34
+            Height = 21
+            TabOrder = 2
+            Text = '0'
+            OnChange = edtMinValChange
+            Caption = 'Minimum'
+          end
+          object udInc: TUpDown
+            Left = 285
+            Top = 0
+            Width = 15
+            Height = 21
+            Associate = edtInc
+            Min = 1
+            Max = 999
+            Position = 1
+            TabOrder = 7
+          end
+          object edtInc: TCaptionEdit
+            Left = 259
+            Top = 0
+            Width = 26
+            Height = 21
+            TabOrder = 6
+            Text = '1'
+            OnChange = edtIncChange
+            Caption = 'Increment'
+          end
+          object edtMaxVal: TCaptionEdit
+            Left = 155
+            Top = 0
+            Width = 34
+            Height = 21
+            TabOrder = 4
+            Text = '0'
+            OnChange = edtMaxValChange
+            Caption = 'Maimum'
+          end
+          object udMaxVal: TUpDown
+            Left = 189
+            Top = 0
+            Width = 15
+            Height = 21
+            Associate = edtMaxVal
+            Min = -9999
+            Max = 9999
+            TabOrder = 5
+            Thousands = False
+          end
+        end
+        object edtURL: TCaptionEdit
+          Left = 0
+          Top = 66
+          Width = 300
+          Height = 22
+          Align = alTop
+          Font.Charset = ANSI_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          MaxLength = 240
+          ParentFont = False
+          PopupMenu = popText
+          TabOrder = 3
+          OnChange = edtURLChange
+          OnEnter = edtpopControlEnter
+          Caption = 'URL'
+        end
+        object reItems: TRichEdit
+          Left = 0
+          Top = 110
+          Width = 300
+          Height = 30
+          Align = alClient
+          Font.Charset = ANSI_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          ParentFont = False
+          PopupMenu = popText
+          ScrollBars = ssBoth
+          TabOrder = 5
+          WantTabs = True
+          OnChange = reItemsChange
+          OnEnter = edtpopControlEnter
+          OnExit = ControlExit
+          OnKeyUp = reNotesKeyUp
+          OnResizeRequest = reItemsResizeRequest
+          OnSelectionChange = reItemsSelectionChange
+        end
+        object cbxDefault: TORComboBox
+          Left = 0
+          Top = 44
+          Width = 300
+          Height = 22
+          Style = orcsDropDown
+          Align = alTop
+          AutoSelect = True
+          Caption = 'Default Selection'
+          Color = clWindow
+          DropDownCount = 8
+          Font.Charset = ANSI_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          ItemHeight = 14
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = False
+          LookupPiece = 0
+          MaxLength = 0
+          ParentFont = False
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 1
+          TabStop = True
+          OnChange = cbxDefaultChange
+          CharsNeedMatch = 1
+        end
+        object pnlDate: TPanel
+          Left = 0
+          Top = 88
+          Width = 300
+          Height = 22
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 4
+          DesignSize = (
+            300
+            22)
+          object lblDateType: TLabel
+            Left = 111
+            Top = 4
+            Width = 53
+            Height = 13
+            Anchors = [akTop, akRight]
+            Caption = 'Date Type:'
+          end
+          object edtDateDef: TCaptionEdit
+            Left = 0
+            Top = 0
+            Width = 106
+            Height = 21
+            Anchors = [akLeft, akTop, akRight]
+            MaxLength = 70
+            PopupMenu = popText
+            TabOrder = 0
+            OnChange = edtDefaultChange
+            OnEnter = edtpopControlEnter
+            Caption = 'Default Date'
+          end
+          object cbxDateType: TORComboBox
+            Left = 167
+            Top = 0
+            Width = 133
+            Height = 21
+            Anchors = [akTop, akRight]
+            Style = orcsDropDown
+            AutoSelect = True
+            Caption = 'Date Type'
+            Color = clWindow
+            DropDownCount = 8
+            Items.Strings = (
+              'D^Date'
+              'T^Date & Time'
+              'R^Date & Required Time'
+              'C^Combo Style'
+              'Y^Combo Year Only'
+              'M^Combo Year & Month')
+            ItemHeight = 13
+            ItemTipColor = clWindow
+            ItemTipEnable = True
+            ListItemsOnly = True
+            LongList = False
+            LookupPiece = 0
+            MaxLength = 0
+            Pieces = '2'
+            Sorted = False
+            SynonymChars = '<>'
+            TabOrder = 1
+            OnChange = cbxDateTypeChange
+            CharsNeedMatch = 1
+          end
+        end
+      end
+      object edtLen: TCaptionEdit
+        Left = 214
+        Top = 27
+        Width = 19
+        Height = 21
+        Anchors = [akTop, akRight]
+        TabOrder = 2
+        Text = '1'
+        OnChange = edtLenChange
+        Caption = 'Field Length'
+      end
+      object udLen: TUpDown
+        Left = 233
+        Top = 27
+        Width = 15
+        Height = 21
+        Anchors = [akTop, akRight]
+        Associate = edtLen
+        Min = 1
+        Max = 70
+        Position = 1
+        TabOrder = 3
+      end
+      object gbIndent: TGroupBox
+        Left = 232
+        Top = 213
+        Width = 118
+        Height = 59
+        Anchors = [akLeft, akBottom]
+        Caption = ' Indent '
+        TabOrder = 9
+        object lblIndent: TLabel
+          Left = 10
+          Top = 14
+          Width = 58
+          Height = 13
+          Caption = 'Indent Field:'
+        end
+        object lblPad: TLabel
+          Left = 10
+          Top = 37
+          Width = 57
+          Height = 13
+          Caption = 'Indent Text:'
+        end
+        object edtIndent: TCaptionEdit
+          Left = 72
+          Top = 10
+          Width = 21
+          Height = 21
+          TabOrder = 0
+          Text = '0'
+          OnChange = edtIndentChange
+          Caption = 'Indent Field'
+        end
+        object udIndent: TUpDown
+          Left = 93
+          Top = 10
+          Width = 15
+          Height = 21
+          Associate = edtIndent
+          Max = 30
+          TabOrder = 1
+          Thousands = False
+        end
+        object udPad: TUpDown
+          Left = 93
+          Top = 33
+          Width = 15
+          Height = 21
+          Associate = edtPad
+          Max = 30
+          TabOrder = 2
+          Thousands = False
+        end
+        object edtPad: TCaptionEdit
+          Left = 72
+          Top = 33
+          Width = 21
+          Height = 21
+          TabOrder = 3
+          Text = '0'
+          OnChange = edtPadChange
+          Caption = 'Indent Text'
+        end
+      end
+      object gbMisc: TGroupBox
+        Left = 10
+        Top = 213
+        Width = 207
+        Height = 59
+        Anchors = [akLeft, akBottom]
+        Caption = ' Miscellaneous '
+        TabOrder = 8
+        object cbActive: TCheckBox
+          Left = 6
+          Top = 14
+          Width = 67
+          Height = 17
+          BiDiMode = bdLeftToRight
+          Caption = 'Inactive'
+          ParentBiDiMode = False
+          TabOrder = 0
+          OnClick = cbActiveClick
+        end
+        object cbRequired: TCheckBox
+          Left = 6
+          Top = 37
+          Width = 67
+          Height = 17
+          Caption = 'Required'
+          TabOrder = 1
+          OnClick = cbRequiredClick
+        end
+        object cbSepLines: TCheckBox
+          Left = 83
+          Top = 14
+          Width = 99
+          Height = 17
+          Caption = 'Separate Lines'
+          TabOrder = 2
+          OnClick = cbSepLinesClick
+        end
+        object cbExclude: TCheckBox
+          Left = 83
+          Top = 37
+          Width = 118
+          Height = 17
+          Caption = 'Exclude From Note'
+          TabOrder = 3
+          OnClick = cbExcludeClick
+        end
+      end
+    end
+  end
+  object pnlTop: TPanel [4]
+    Left = 0
+    Top = 0
+    Width = 788
+    Height = 25
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 3
+    DesignSize = (
+      788
+      25)
+    object MenuBar1: TMenuBar
+      Left = 0
+      Top = 0
+      Width = 41
+      Height = 25
+      Align = alLeft
+      AutoSize = True
+      ButtonHeight = 21
+      ButtonWidth = 43
+      Caption = 'MenuBar1'
+      Menu = mnuMain
+      ShowCaptions = True
+      TabOrder = 0
+    end
+    object btnNew: TButton
+      Left = 711
+      Top = 2
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'New'
+      TabOrder = 3
+      OnClick = mnuNewClick
+    end
+    object btnCopy: TButton
+      Left = 632
+      Top = 2
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'Copy'
+      Enabled = False
+      TabOrder = 2
+      OnClick = mnuCopyClick
+    end
+    object btnDelete: TButton
+      Left = 553
+      Top = 2
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight, akBottom]
+      Caption = 'Delete'
+      Enabled = False
+      TabOrder = 1
+      OnClick = mnuDeleteClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = lblReq'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnApply'
+        'Status = stsDefault')
+      (
+        'Component = btnPreview'
+        'Status = stsDefault')
+      (
+        'Component = cbHide'
+        'Status = stsDefault')
+      (
+        'Component = pnlObjs'
+        'Status = stsDefault')
+      (
+        'Component = cbxObjs'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = pnlPreview'
+        'Status = stsDefault')
+      (
+        'Component = reNotes'
+        'Status = stsDefault')
+      (
+        'Component = pnlObjInfo'
+        'Status = stsDefault')
+      (
+        'Component = edtName'
+        'Status = stsDefault')
+      (
+        'Component = edtLMText'
+        'Status = stsDefault')
+      (
+        'Component = cbxType'
+        'Status = stsDefault')
+      (
+        'Component = edtTextLen'
+        'Status = stsDefault')
+      (
+        'Component = udTextLen'
+        'Status = stsDefault')
+      (
+        'Component = pnlSwap'
+        'Status = stsDefault')
+      (
+        'Component = edtDefault'
+        'Status = stsDefault')
+      (
+        'Component = pnlNum'
+        'Status = stsDefault')
+      (
+        'Component = udDefNum'
+        'Status = stsDefault')
+      (
+        'Component = edtDefNum'
+        'Status = stsDefault')
+      (
+        'Component = udMinVal'
+        'Status = stsDefault')
+      (
+        'Component = edtMinVal'
+        'Status = stsDefault')
+      (
+        'Component = udInc'
+        'Status = stsDefault')
+      (
+        'Component = edtInc'
+        'Status = stsDefault')
+      (
+        'Component = edtMaxVal'
+        'Status = stsDefault')
+      (
+        'Component = udMaxVal'
+        'Status = stsDefault')
+      (
+        'Component = edtURL'
+        'Status = stsDefault')
+      (
+        'Component = reItems'
+        'Status = stsDefault')
+      (
+        'Component = cbxDefault'
+        'Status = stsDefault')
+      (
+        'Component = pnlDate'
+        'Status = stsDefault')
+      (
+        'Component = edtDateDef'
+        'Status = stsDefault')
+      (
+        'Component = cbxDateType'
+        'Status = stsDefault')
+      (
+        'Component = edtLen'
+        'Status = stsDefault')
+      (
+        'Component = udLen'
+        'Status = stsDefault')
+      (
+        'Component = gbIndent'
+        'Status = stsDefault')
+      (
+        'Component = edtIndent'
+        'Status = stsDefault')
+      (
+        'Component = udIndent'
+        'Status = stsDefault')
+      (
+        'Component = udPad'
+        'Status = stsDefault')
+      (
+        'Component = edtPad'
+        'Status = stsDefault')
+      (
+        'Component = gbMisc'
+        'Status = stsDefault')
+      (
+        'Component = cbActive'
+        'Status = stsDefault')
+      (
+        'Component = cbRequired'
+        'Status = stsDefault')
+      (
+        'Component = cbSepLines'
+        'Status = stsDefault')
+      (
+        'Component = cbExclude'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = MenuBar1'
+        'Status = stsDefault')
+      (
+        'Component = btnNew'
+        'Status = stsDefault')
+      (
+        'Component = btnCopy'
+        'Status = stsDefault')
+      (
+        'Component = btnDelete'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateFieldEditor'
+        'Status = stsDefault'))
+  end
+  object mnuMain: TMainMenu
+    Left = 8
+    Top = 64
+    object mnuAction: TMenuItem
+      Caption = '&Action'
+      OnClick = mnuActionClick
+      object mnuNew: TMenuItem
+        Caption = '&New'
+        OnClick = mnuNewClick
+      end
+      object mnuCopy: TMenuItem
+        Caption = '&Copy'
+        OnClick = mnuCopyClick
+      end
+      object mnuDelete: TMenuItem
+        Caption = '&Delete'
+        OnClick = mnuDeleteClick
+      end
+      object mnuPreview: TMenuItem
+        Caption = '&Preview'
+        OnClick = btnPreviewClick
+      end
+    end
+  end
+  object popText: TPopupMenu
+    OnPopup = popTextPopup
+    Left = 339
+    Top = 204
+    object mnuBPUndo: TMenuItem
+      Caption = '&Undo'
+      ShortCut = 16474
+      OnClick = mnuBPUndoClick
+    end
+    object N8: TMenuItem
+      Caption = '-'
+    end
+    object mnuBPCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = mnuBPCutClick
+    end
+    object mnuBPCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = mnuBPCopyClick
+    end
+    object mnuBPPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = mnuBPPasteClick
+    end
+    object mnuBPSelectAll: TMenuItem
+      Caption = 'Select &All'
+      ShortCut = 16449
+      OnClick = mnuBPSelectAllClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object mnuBPCheckGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      ShortCut = 16455
+      OnClick = mnuBPCheckGrammarClick
+    end
+    object mnuBPSpellCheck: TMenuItem
+      Caption = 'Check &Spelling'
+      ShortCut = 16467
+      OnClick = mnuBPSpellCheckClick
+    end
+    object N14: TMenuItem
+      Caption = '-'
+    end
+    object mnuInsertTemplateField: TMenuItem
+      Caption = 'Insert Template &Field'
+      ShortCut = 16454
+      OnClick = mnuInsertTemplateFieldClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFieldEditor.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFieldEditor.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFieldEditor.pas	(revision 1676)
@@ -0,0 +1,1410 @@
+unit fTemplateFieldEditor;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, ExtCtrls, Menus, ComCtrls, uTemplateFields, ORFn,
+  ToolWin, MenuBar, ORClasses, ORDtTm, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmTemplateFieldEditor = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    pnlObjs: TPanel;
+    cbxObjs: TORComboBox;
+    lblObjs: TLabel;
+    splLeft: TSplitter;
+    pnlRight: TPanel;
+    pnlPreview: TPanel;
+    lblNotes: TLabel;
+    pnlObjInfo: TPanel;
+    lblName: TLabel;
+    lblS2: TLabel;
+    lblLM: TLabel;
+    edtName: TCaptionEdit;
+    splBottom: TSplitter;
+    lblS1: TLabel;
+    edtLMText: TCaptionEdit;
+    cbxType: TORComboBox;
+    lblType: TLabel;
+    reNotes: TRichEdit;
+    btnApply: TButton;
+    btnPreview: TButton;
+    mnuMain: TMainMenu;
+    mnuAction: TMenuItem;
+    mnuNew: TMenuItem;
+    mnuCopy: TMenuItem;
+    cbHide: TCheckBox;
+    pnlTop: TPanel;
+    MenuBar1: TMenuBar;
+    btnNew: TButton;
+    btnCopy: TButton;
+    mnuDelete: TMenuItem;
+    btnDelete: TButton;
+    mnuPreview: TMenuItem;
+    popText: TPopupMenu;
+    mnuBPUndo: TMenuItem;
+    N8: TMenuItem;
+    mnuBPCut: TMenuItem;
+    mnuBPCopy: TMenuItem;
+    mnuBPPaste: TMenuItem;
+    mnuBPSelectAll: TMenuItem;
+    N2: TMenuItem;
+    mnuBPCheckGrammar: TMenuItem;
+    mnuBPSpellCheck: TMenuItem;
+    lblTextLen: TLabel;
+    edtTextLen: TCaptionEdit;
+    udTextLen: TUpDown;
+    pnlSwap: TPanel;
+    edtDefault: TCaptionEdit;
+    pnlNum: TPanel;
+    edtURL: TCaptionEdit;
+    udDefNum: TUpDown;
+    edtDefNum: TCaptionEdit;
+    udMinVal: TUpDown;
+    edtMinVal: TCaptionEdit;
+    lblMin: TLabel;
+    udInc: TUpDown;
+    edtInc: TCaptionEdit;
+    lblInc: TLabel;
+    lblMaxVal: TLabel;
+    edtMaxVal: TCaptionEdit;
+    udMaxVal: TUpDown;
+    reItems: TRichEdit;
+    lblLength: TLabel;
+    edtLen: TCaptionEdit;
+    udLen: TUpDown;
+    cbxDefault: TORComboBox;
+    lblS3: TLabel;
+    gbIndent: TGroupBox;
+    lblIndent: TLabel;
+    edtIndent: TCaptionEdit;
+    udIndent: TUpDown;
+    udPad: TUpDown;
+    edtPad: TCaptionEdit;
+    lblPad: TLabel;
+    gbMisc: TGroupBox;
+    cbActive: TCheckBox;
+    cbRequired: TCheckBox;
+    cbSepLines: TCheckBox;
+    pnlDate: TPanel;
+    edtDateDef: TCaptionEdit;
+    cbxDateType: TORComboBox;
+    lblDateType: TLabel;
+    cbExclude: TCheckBox;
+    lblReq: TStaticText;
+    lblLine: TLabel;
+    lblCol: TLabel;
+    N14: TMenuItem;
+    mnuInsertTemplateField: TMenuItem;
+    procedure cbxObjsNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FormCreate(Sender: TObject);
+    procedure cbxObjsChange(Sender: TObject);
+    procedure edtNameChange(Sender: TObject);
+    procedure cbxTypeChange(Sender: TObject);
+    procedure edtLenChange(Sender: TObject);
+    procedure edtDefaultChange(Sender: TObject);
+    procedure cbxDefaultChange(Sender: TObject);
+    procedure edtLMTextChange(Sender: TObject);
+    procedure cbActiveClick(Sender: TObject);
+    procedure mnuNewClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure btnApplyClick(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure btnCancelClick(Sender: TObject);
+    procedure reItemsChange(Sender: TObject);
+    procedure cbHideClick(Sender: TObject);
+    procedure edtNameExit(Sender: TObject);
+    procedure mnuCopyClick(Sender: TObject);
+    procedure mnuDeleteClick(Sender: TObject);
+    procedure btnPreviewClick(Sender: TObject);
+    procedure mnuActionClick(Sender: TObject);
+    procedure cbRequiredClick(Sender: TObject);
+    procedure pnlObjsResize(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cbxObjsSynonymCheck(Sender: TObject; const Text: String;
+      var IsSynonym: Boolean);
+    procedure popTextPopup(Sender: TObject);
+    procedure mnuBPUndoClick(Sender: TObject);
+    procedure mnuBPCutClick(Sender: TObject);
+    procedure mnuBPCopyClick(Sender: TObject);
+    procedure mnuBPPasteClick(Sender: TObject);
+    procedure mnuBPSelectAllClick(Sender: TObject);
+    procedure mnuBPCheckGrammarClick(Sender: TObject);
+    procedure mnuBPSpellCheckClick(Sender: TObject);
+    procedure cbSepLinesClick(Sender: TObject);
+    procedure edtpopControlEnter(Sender: TObject);
+    procedure cbxObjsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure edtTextLenChange(Sender: TObject);
+    procedure edtDefNumChange(Sender: TObject);
+    procedure edtMinValChange(Sender: TObject);
+    procedure edtMaxValChange(Sender: TObject);
+    procedure edtIncChange(Sender: TObject);
+    procedure edtURLChange(Sender: TObject);
+    procedure edtPadChange(Sender: TObject);
+    procedure edtIndentChange(Sender: TObject);
+    procedure reNotesChange(Sender: TObject);
+    procedure cbxDateTypeChange(Sender: TObject);
+    procedure cbExcludeClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure reItemsResizeRequest(Sender: TObject; Rect: TRect);
+    procedure reItemsSelectionChange(Sender: TObject);
+    procedure mnuInsertTemplateFieldClick(Sender: TObject);
+    procedure ControlExit(Sender: TObject);
+    procedure reNotesKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    CopyFld, FFld: TTemplateField;
+    FUpdating: boolean;
+    FReloadChanges: boolean;
+    FChangesPending: boolean;
+    FDeleted: TORStringList;
+    FHideSynonyms: boolean;
+    FLastRect: TRect;
+    procedure UpdateControls;
+    procedure SyncItems(DoUpdate: boolean = TRUE);
+    function SaveChanges: boolean;
+    procedure ResetListEntry;
+    procedure VerifyName;
+    procedure EnableButtons;
+    procedure SetFld(const Value: TTemplateField);
+    procedure SetHideSynonyms(const Value: boolean);
+    function GetPopupControl: TCustomEdit;
+  public
+    { Public declarations }
+  end;
+
+function EditDialogFields: boolean;
+
+implementation
+
+uses rTemplates, fTemplateDialog, Clipbrd, uSpell, uConst,
+     fTemplateFields, VAUtils;
+
+{$R *.DFM}
+
+{ TfrmDlgObjEditor }
+
+var
+  frmTemplateFields: TfrmTemplateFields = nil;
+
+
+function EditDialogFields: boolean;
+var
+  frmTemplateFieldEditor: TfrmTemplateFieldEditor;
+
+begin
+  frmTemplateFieldEditor := TfrmTemplateFieldEditor.Create(Application);
+  try
+    frmTemplateFieldEditor.ShowModal;
+    Result := frmTemplateFieldEditor.FReloadChanges;
+  finally
+    frmTemplateFieldEditor.Free;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.UpdateControls;
+const
+  DefTxt = 'Default:';
+
+var
+  ok, edt, txt, tmp: boolean;
+  Y, idx, Max: integer;
+  wpTxt: string;
+
+  procedure SetLbl(const Text: string);
+  var
+    lbl: TLabel;
+
+  begin
+    inc(idx);
+    case idx of
+      1: lbl := lblS1;
+      2: lbl := lblS2;
+      3: lbl := lblS3;
+      else
+         lbl := nil;
+    end;
+    if assigned(lbl) then
+      lbl.Caption := Text;
+  end;
+
+  procedure SetY(Control: TControl; const Text: string);
+  begin
+    if (Control.Visible) then
+    begin
+      Control.Top := Y;
+      inc(Y, Control.Height);
+      SetLbl(Text);
+    end;
+  end;
+
+begin
+  if(not FUpdating) then
+  begin
+    FUpdating := TRUE;
+    try
+      Y := 0;
+      idx := 0;
+      ok := assigned(FFld);
+      if(ok) then
+      begin
+        edt := (FFld.FldType in EditLenTypes);
+        txt := (FFld.FldType in EditDfltTypes);
+      end
+      else
+      begin
+        edt := FALSE;
+        txt := FALSE;
+      end;
+      lblName.Enabled := ok;
+      edtName.Enabled := ok;
+      lblType.Enabled := ok;
+      cbxType.Enabled := ok;
+      lblLM.Enabled := ok;
+      edtLMText.Enabled := ok;
+      cbActive.Enabled := ok;
+
+      gbMisc.Enabled := ok;
+      lblNotes.Enabled := ok;
+      reNotes.Enabled := ok;
+      if(ok) then
+      begin
+        edtName.Text := FFld.FldName;
+        cbxType.ItemIndex := ord(FFld.FldType);
+        edtLMText.Text := FFld.LMText;
+        cbActive.Checked := FFld.Inactive;
+        reNotes.Lines.Text := FFld.Notes;
+      end
+      else
+      begin
+        edtName.Text := '';
+        cbxType.ItemIndex := -1;
+        edtLMText.Text := '';
+        cbActive.Checked := FALSE;
+        reNotes.Clear;
+      end;
+
+      tmp := ok and (not (FFld.FldType in NoRequired));
+      cbRequired.Enabled := tmp;
+      if tmp then
+        cbRequired.Checked := FFld.Required
+      else
+        cbRequired.Checked := FALSE;
+
+      pnlSwap.DisableAlign;
+      try
+        tmp := ok and (FFld.FldType in SepLinesTypes);
+        cbSepLines.Enabled := tmp;
+        if tmp then
+          cbSepLines.Checked := FFld.SepLines
+        else
+          cbSepLines.Checked := FALSE;
+
+        tmp := ok and (FFld.FldType in ExcludeText);
+        cbExclude.Enabled := tmp;
+        if tmp then
+          cbExclude.Checked := FFld.SepLines
+        else
+          cbExclude.Checked := FALSE;
+
+        lblLength.Enabled := edt;
+        if ok and (FFld.FldType = dftWP) then
+        begin
+          lblTextLen.Caption := 'Num Lines:';
+          udLen.Min := 5;
+          udLen.Max := 74;
+          udTextLen.Min := 2;
+          udTextLen.Max := MaxTFWPLines;
+        end
+        else
+        begin
+          udLen.Min := 1;
+          udLen.Max := 70;
+          udTextLen.Min := 0;
+          udTextLen.Max := 240;
+          lblTextLen.Caption := 'Text Len:';
+        end;
+
+        lblTextLen.Enabled := edt;
+        edtTextLen.Enabled := edt;
+        udTextLen.Enabled := edt;
+        edtLen.Enabled := edt;
+        udLen.Enabled := edt;
+
+        edtDefault.Visible := txt;
+        SetY(edtDefault, DefTxt);
+        Max := MaxTFEdtLen;
+
+        if(edt) then
+        begin
+          udLen.Associate := edtLen;
+          udLen.Position := FFld.MaxLen;
+          udTextLen.Associate := edtTextLen;
+          udTextLen.Position := FFld.TextLen;
+          if txt then
+            Max := FFld.MaxLen;
+        end
+        else
+        begin
+          udLen.Associate := nil;
+          edtLen.Text := '';
+          udTextLen.Associate := nil;
+          edtTextLen.Text := '';
+        end;
+
+        if txt then
+        begin
+          edtDefault.MaxLength := Max;
+          edtDefault.Text := copy(FFld.EditDefault, 1, Max);
+        end;
+
+        gbIndent.Enabled := ok;
+        lblIndent.Enabled := ok;
+        edtIndent.Enabled := ok;
+        udIndent.Enabled := ok;
+        if ok then
+        begin
+          udIndent.Associate := edtIndent;
+          udIndent.Position := FFld.Indent;
+        end
+        else
+        begin
+          udIndent.Associate := nil;
+          edtIndent.Text := '';
+        end;
+
+        tmp := ok and (not cbExclude.Checked);
+        lblPad.Enabled := tmp;
+        edtPad.Enabled := tmp;
+        udPad.Enabled := tmp;
+        if tmp then
+        begin
+          udPad.Associate := edtPad;
+          udPad.Position := FFld.Pad;
+        end
+        else
+        begin
+          udPad.Associate := nil;
+          edtPad.Text := '';
+        end;
+
+        tmp := ok and (FFld.FldType = dftNumber);
+        pnlNum.Visible := tmp;
+        SetY(pnlNum, DefTxt);
+        if tmp then
+        begin
+          udDefNum.Position := StrToIntDef(FFld.EditDefault, 0);
+          udMinVal.Position := FFld.MinVal;
+          udMaxVal.Position := FFld.MaxVal;
+          udInc.Position := FFld.Increment;
+        end;
+
+        tmp := ok and (FFld.FldType = dftDate);
+        pnlDate.Visible := tmp;
+        SetY(pnlDate, DefTxt);
+        if tmp then
+        begin
+          edtDateDef.Text := FFld.EditDefault;
+          cbxDateType.SelectByID(TemplateFieldDateCodes[FFld.DateType]);
+        end;
+
+        tmp := ok and (FFld.FldType in ItemDfltTypes);
+        cbxDefault.Visible := tmp;
+        SetY(cbxDefault, DefTxt);
+
+        tmp := ok and (FFld.FldType = dftHyperlink);
+        edtURL.Visible := tmp;
+        SetY(edtURL, 'Address:');
+        if tmp then
+          edtURL.Text := FFld.URL;
+
+        tmp := ok and (FFld.FldType in FldItemTypes);
+        reItems.Visible := tmp;
+        lblLine.Visible := tmp;
+        lblCol.Visible := tmp;
+        if tmp then
+        begin
+          if FFld.FldType = dftWP then
+            wpTxt := DefTxt
+          else
+            wpTxt := 'Items:';
+        end
+        else
+          wpTxt := '';
+        SetY(reItems, wpTxt);
+        if tmp then
+          reItems.Lines.Text := FFld.Items
+        else
+          reItems.Clear;
+      finally
+        pnlSwap.EnableAlign;
+      end;
+
+      SetLbl('');
+      SetLbl('');
+      SetLbl('');
+      SyncItems(FALSE);
+      FormResize(Self);
+    finally
+      FUpdating := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.SyncItems(DoUpdate: boolean = TRUE);
+var
+  i, idx, Siz, Max1, Max2: integer;
+  ChangeSizes: boolean;
+
+begin
+  if DoUpdate and FUpdating then
+    exit;
+  Max1 := 0;
+  Max2 := 0;
+  ChangeSizes := FALSE;
+  FUpdating := TRUE;
+  try
+    QuickCopy(reItems, cbxDefault);
+    idx := -1;
+    if(assigned(FFld)) and reItems.Visible and cbxDefault.Visible then
+    begin
+      ChangeSizes := TRUE;
+      for i := 0 to reItems.Lines.Count-1 do
+      begin
+        Siz := length(StripEmbedded(reItems.Lines[i]));
+        if Max1 < Siz then
+          Max1 := Siz;
+        if(idx < 0) and (FFld.ItemDefault = reItems.Lines[i]) then
+          idx := i;
+      end;
+      Max2 := Max1;
+      if Max1 > MaxTFEdtLen then
+        Max1 := MaxTFEdtLen;
+    end;
+    cbxDefault.ItemIndex := idx;
+  finally
+    FUpdating := FALSE;
+  end;
+  if ChangeSizes and DoUpdate then
+  begin
+    udLen.Position := Max1;
+    if (not udTextLen.Enabled) or
+       ((udTextLen.Position > 0) and (udTextLen.Position < Max2)) then
+      udTextLen.Position := Max2;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxObjsNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+var
+  tmp: TORStringList;
+  i, idx: integer;
+
+begin
+  tmp := TORStringList.Create;
+  try
+    FastAssign(SubSetOfTemplateFields(StartFrom, Direction), tmp);
+    for i := 0 to FDeleted.Count-1 do
+    begin
+      idx := tmp.IndexOfPiece(Piece(FDeleted[i],U,1), U, 1);
+      if(idx >= 0) then
+        tmp.delete(idx);
+    end;
+    ConvertCodes2Text(tmp, FALSE);
+    cbxObjs.ForDataUse(tmp);
+  finally
+    tmp.Free;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.FormCreate(Sender: TObject);
+var
+  i: integer;
+  Child: TControl;
+  Overage: integer;
+begin
+  FDeleted := TORStringList.Create;
+  FHideSynonyms := TRUE;
+  cbxObjs.InitLongList('');
+  cbxObjs.ItemHeight := 15;
+  UpdateControls;
+  ResizeAnchoredFormToFont(self);
+  //ResizeAnchoredFormToFont does the pnlObjInfo panel wrong.  So we fix it here.
+  gbMisc.Top := pnlObjInfo.ClientHeight - gbMisc.Height - 5;
+  gbIndent.Top := gbMisc.Top;
+  edtLMText.Top := gbMisc.Top - edtLMText.Height - 2;
+  lblLM.Top := edtLMText.Top + 5;
+  pnlSwap.Height := lblLM.Top - pnlSwap.Top;
+  Overage := edtName.Left + edtName.Width - pnlObjInfo.ClientWidth - 4;
+  for i := 0 to pnlObjInfo.ControlCount-1 do begin
+    Child := pnlObjInfo.Controls[i];
+    if (akRight in Child.Anchors) then begin
+      if (akLeft in Child.Anchors) then
+        Child.Width := Child.Width - Overage
+      else
+        Child.Left := Child.Left - Overage;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxObjsChange(Sender: TObject);
+begin
+  if(cbxObjs.ItemIEN <> 0) then
+    SetFld(GetTemplateField(cbxObjs.ItemID, TRUE))
+  else
+    SetFld(nil);
+  UpdateControls;
+end;
+
+procedure TfrmTemplateFieldEditor.edtNameChange(Sender: TObject);
+var
+  ok: boolean;
+
+begin
+  if(not FUpdating) and (assigned(FFld)) then
+  begin
+    if (not FFld.NameChanged) and (not FFld.NewField) then
+    begin
+      ok := InfoBox('*** WARNING ***' + CRLF + CRLF +
+        'This template field has been saved, and may have been used in one or more' + CRLF +
+        'boilerplates.  Boilerplates can be found in templates, titles, reasons for request' + CRLF +
+        'and reminder dialogs.  Renaming this template field will cause any boilerplates' + CRLF +
+        'that use it to no longer function correctly.' + CRLF + CRLF +
+        'Are you sure you want to rename the ' + FFld.FldName + ' template field?',
+        'Warning', MB_YESNO or MB_ICONWARNING) = IDYES;
+      if ok then
+        InfoBox('Template field will be renamed when OK or Apply is pressed.', 'Information', MB_OK or MB_ICONINFORMATION)
+      else
+      begin
+        FUpdating := TRUE;
+        try
+          edtName.Text := FFld.FldName;
+        finally
+          FUpdating := FALSE;
+        end;
+      end;
+    end
+    else
+      ok := TRUE;
+    if ok then
+    begin
+      FFld.FldName := edtName.Text;
+      edtName.Text := FFld.FldName;
+      FChangesPending := TRUE;
+      ResetListEntry;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxTypeChange(Sender: TObject);
+begin
+  if(not FUpdating) and (assigned(FFld)) then
+  begin
+    if(cbxType.ItemIndex < 0) then
+    begin
+      FUpdating := TRUE;
+      try
+        cbxType.ItemIndex := 0;
+      finally
+        FUpdating := FALSE;
+      end;
+    end;
+    FFld.FldType := TTemplateFieldType(cbxType.ItemIndex);
+  end;
+  EnableButtons;
+  UpdateControls;
+end;
+
+procedure TfrmTemplateFieldEditor.edtLenChange(Sender: TObject);
+var
+  v: integer;
+  ok: boolean;
+
+begin
+  EnsureText(edtLen, udLen);
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType in (EditLenTypes))) then
+  begin
+    EnsureText(edtLen, udLen);
+    FFld.MaxLen := udLen.Position;
+    udLen.Position := FFld.MaxLen;
+    if edtDefault.Visible then
+    begin
+      edtDefault.MaxLength := FFld.MaxLen;
+      edtDefault.Text := copy(edtDefault.Text,1,FFld.MaxLen);
+    end;
+    case FFLd.FldType of
+      dftEditBox:  ok := TRUE;
+      dftComboBox: ok := (udTextLen.Position > 0);
+      else         ok := FALSE;
+    end;
+    if ok then
+    begin
+      v := udLen.Position;
+      if udTextLen.Position < v then
+        udTextLen.Position := v;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtDefaultChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType in EditDfltType2)) then
+  begin
+    FFld.EditDefault := TEdit(Sender).Text;
+    TEdit(Sender).Text := FFld.EditDefault;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxDefaultChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType in ItemDfltTypes)) then
+  begin
+    FFld.ItemDefault := cbxDefault.Text;
+    SyncItems;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtLMTextChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.LMText := edtLMText.Text;
+    edtLMText.Text := FFld.LMText;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbActiveClick(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.Inactive := cbActive.Checked;
+    cbActive.Checked := FFld.Inactive;
+    FChangesPending := TRUE;
+    //ResetListEntry;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuNewClick(Sender: TObject);
+begin
+  SetFld(TTemplateField.Create(nil));
+  if(assigned(FFld)) then
+  begin
+    FChangesPending := TRUE;
+    if cbxObjs.ShortCount = 0 then
+    begin
+      cbxObjs.Items.Insert(0,LLS_LINE);
+      cbxObjs.Items.Insert(1,'');
+    end;
+    if(assigned(CopyFld)) then
+      FFld.Assign(CopyFld);
+    cbxObjs.Items.Insert(0,FFld.ID + U + FFld.FldName);
+    cbxObjs.SelectByID(FFld.ID);
+    cbxObjsChange(nil);
+    if(assigned(FFld)) then
+      edtName.SetFocus;
+  end
+  else
+    UpdateControls;
+end;
+
+procedure TfrmTemplateFieldEditor.btnOKClick(Sender: TObject);
+begin
+  SaveChanges;
+end;
+
+procedure TfrmTemplateFieldEditor.btnApplyClick(Sender: TObject);
+var
+  tmp: string;
+begin
+  SaveChanges;
+  cbxObjs.Clear;
+  if assigned(FFld) then
+    tmp := FFld.FldName
+  else
+    tmp := '';
+  cbxObjs.InitLongList(tmp);
+  cbxObjs.ItemIndex := 0;
+  cbxObjsChange(cbxObjs);
+end;
+
+procedure TfrmTemplateFieldEditor.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+var
+  ans: word;
+
+begin
+  if(AnyTemplateFieldsModified) then
+  begin
+    ans := InfoBox('Save Changes?', 'Confirmation', MB_YESNOCANCEL or MB_ICONQUESTION);
+    if(ans = IDCANCEL) then
+      CanClose := FALSE
+    else
+    if(ans = IDYES) then
+      CanClose := SaveChanges;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.btnCancelClick(Sender: TObject);
+var
+  i: integer;
+
+begin
+  for i := 0 to FDeleted.Count-1 do
+    UnlockTemplateField(Piece(FDeleted[i],U,1));
+  FDeleted.Clear;
+  ClearModifiedTemplateFields;
+end;
+
+function TfrmTemplateFieldEditor.SaveChanges: boolean;
+var
+  ans: word;
+  Errors: string;
+  i: integer;
+
+begin
+  for i := 0 to FDeleted.Count-1 do
+    DeleteTemplateField(Piece(FDeleted[i],U,1));
+  FDeleted.Clear;
+  Result := TRUE;
+  Errors := SaveTemplateFieldErrors;
+  if(Errors <> '') then
+  begin
+    ans := InfoBox(Errors + CRLF + CRLF + 'Cancel changes to these Template Fields?',
+      'Confirmation', MB_YESNO or MB_ICONQUESTION);
+    if(ans = IDYES) then
+      ClearModifiedTemplateFields
+    else
+      Result := FALSE;
+  end;
+  if(FChangesPending) then
+    FReloadChanges := TRUE;
+end;
+
+procedure TfrmTemplateFieldEditor.reItemsChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType in FldItemTypes)) then
+  begin
+    FFld.Items := reItems.Lines.Text;
+    SyncItems;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbHideClick(Sender: TObject);
+begin
+  SetHideSynonyms(cbHide.Checked);
+end;
+
+procedure TfrmTemplateFieldEditor.edtNameExit(Sender: TObject);
+begin
+  if (ActiveControl <> btnCancel) and (ActiveControl <> btnDelete) then
+    VerifyName;
+end;
+
+procedure TfrmTemplateFieldEditor.VerifyName;
+var
+  bad: boolean;
+
+begin
+  if assigned(FFld) then
+  begin
+    if FDeleted.IndexOfPiece(FFld.FldName, U, 2) >= 0 then
+    begin
+      ShowMsg('Template field can not be named the same as a deleted' + CRLF +
+                  'field until OK or Apply has been pressed.');
+      bad := TRUE;
+    end
+    else
+      bad := TemplateFieldNameProblem(FFld);
+    if bad then
+      edtName.SetFocus;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuCopyClick(Sender: TObject);
+begin
+  if assigned(FFld) then
+  begin
+    CopyFld := FFld;
+    try
+      mnuNewClick(nil);
+    finally
+      CopyFld := nil;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.SetFld(const Value: TTemplateField);
+begin
+  FFld := Value;
+  EnableButtons;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuDeleteClick(Sender: TObject);
+var
+  idx: integer;
+  ok: boolean;
+  Answer: word;
+  txt: string;
+  btns: TMsgDlgButtons;
+
+begin
+  if assigned(FFld) then
+  begin
+    ok := (FFld.NewField);
+    if not ok then
+    begin
+      btns := [mbYes, mbNo];
+      if FFld.Inactive then
+        txt := ''
+      else
+      begin
+        txt := '  Rather than deleting, you may want' + CRLF +
+               'to inactivate this template field instead.  You may inactivate this template by' + CRLF +
+               'pressing the Ignore button now.';
+        include(btns, mbIgnore);
+      end;
+      Answer := MessageDlg('*** WARNING ***' + CRLF + CRLF +
+                    'This template field has been saved, and may have been used in one or more' + CRLF +
+                    'boilerplates.  Boilerplates can be found in templates, titles, reasons for request' + CRLF +
+                    'and reminder dialogs.  Deleting this template field will cause any boilerplates' + CRLF +
+                    'that use it to no longer function correctly.' + txt + CRLF + CRLF +
+                    'Are you sure you want to delete the ' + FFld.FldName + ' template field?',
+                     mtWarning, btns, 0);
+      ok := (Answer = mrYes);
+      if(Answer = mrIgnore) then
+        cbActive.Checked := TRUE;
+    end;
+    if ok then
+    begin
+      if(FFld.NewField or FFld.CanModify) then
+      begin
+        if FFld.NewField then
+        begin
+          idx := cbxObjs.ItemIndex;
+          cbxObjs.ItemIndex := -1;
+          cbxObjs.Items.Delete(idx);
+          if cbxObjs.Items[0] = LLS_LINE then
+          begin
+            cbxObjs.Items.Delete(1);
+            cbxObjs.Items.Delete(0);
+          end;
+        end
+        else
+        begin
+          FDeleted.Add(FFld.ID + U + FFld.FldName);
+          cbxObjs.ItemIndex := -1;
+        end;
+      end;
+      FFld.Free;
+      SetFld(nil);
+      UpdateControls;
+      cbxObjs.InitLongList('');
+      FChangesPending := TRUE;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.ResetListEntry;
+var
+  txt: string;
+
+begin
+  if(assigned(FFld) and FFld.NewField and (cbxObjs.ItemIndex >= 0)) then
+  begin
+    txt := FFld.ID + U + FFld.FldName;
+    //if(FFld.Inactive) then
+      //txt := txt + ' <Inactive>';
+    cbxObjs.Items[cbxObjs.ItemIndex] := txt;
+    cbxObjs.ItemIndex := cbxObjs.ItemIndex;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.btnPreviewClick(Sender: TObject);
+var
+  TmpSL: TStringList;
+
+begin
+  if(assigned(FFld)) then
+  begin
+    TmpSL := TStringList.Create;
+    try
+      TmpSL.Add(TemplateFieldBeginSignature + FFld.FldName + TemplateFieldEndSignature);
+      CheckBoilerplate4Fields(TmpSL, 'Preview Template Field: ' + FFld.FldName, TRUE);
+    finally
+      TmpSL.Free;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.EnableButtons;
+begin
+  btnCopy.Enabled := assigned(FFld);
+  mnuCopy.Enabled := btnCopy.Enabled;
+  btnDelete.Enabled := btnCopy.Enabled; // (assigned(FFld) and FFld.NewField);
+  mnuDelete.Enabled := btnDelete.Enabled;
+  btnPreview.Enabled := assigned(FFld) and (FFld.FldType <> dftUnknown);
+  mnuPreview.Enabled := btnPreview.Enabled;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuActionClick(Sender: TObject);
+begin
+  EnableButtons;
+end;
+
+procedure TfrmTemplateFieldEditor.cbRequiredClick(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.Required := cbRequired.Checked;
+    cbRequired.Checked := FFld.Required;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.pnlObjsResize(Sender: TObject);
+begin
+  btnPreview.Left := pnlRight.Left;
+end;
+
+procedure TfrmTemplateFieldEditor.FormDestroy(Sender: TObject);
+begin
+  FDeleted.Free;
+  if(assigned(frmTemplateFields)) then begin
+    frmTemplateFields.FRee;
+    frmTemplateFields := nil;
+  end; {if}
+
+end;
+
+procedure TfrmTemplateFieldEditor.SetHideSynonyms(const Value: boolean);
+begin
+  FHideSynonyms := Value;
+  cbxObjs.HideSynonyms := FALSE; // Refresh Display
+  cbxObjs.HideSynonyms := TRUE;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxObjsSynonymCheck(Sender: TObject;
+  const Text: String; var IsSynonym: Boolean);
+begin
+  if not FHideSynonyms then
+    IsSynonym := FALSE;
+  if(FDeleted.Count > 0) and (FDeleted.IndexOfPiece(Text,U,2) >= 0) then
+    IsSynonym := TRUE;
+end;
+
+procedure TfrmTemplateFieldEditor.popTextPopup(Sender: TObject);
+var
+  HasText, CanEdit, isre: boolean;
+  ce: TCustomEdit;
+  ShowTempField: boolean;
+
+begin
+  ce := GetPopupControl;
+  if assigned(ce) then
+  begin
+    isre := (ce is TRichEdit);
+    CanEdit := (not TORExposedCustomEdit(ce).ReadOnly);
+    mnuBPUndo.Enabled := (CanEdit and (ce.Perform(EM_CANUNDO, 0, 0) <> 0));
+    if isre then
+      HasText := (TRichEdit(ce).Lines.Count > 0)
+    else
+      HasText := (Text <> '');
+    mnuBPSelectAll.Enabled := HasText;
+    mnuBPCopy.Enabled := HasText and (ce.SelLength > 0);
+    mnuBPPaste.Enabled := (CanEdit and Clipboard.HasFormat(CF_TEXT));
+    mnuBPCut.Enabled := (CanEdit and HasText and (ce.SelLength > 0));
+    ShowTempField := FALSE;
+    if CanEdit then
+      if (not assigned(frmTemplateFields)) or
+         (assigned(frmTemplateFields) and not frmTemplateFields.Visible) then
+        if (ce = reItems) or
+           (ce = edtDefault) then
+          ShowTempField := TRUE;
+    mnuInsertTemplateField.Enabled := ShowTempField;
+  end
+  else
+  begin
+    isre := FALSE;
+    HasText := FALSE;
+    CanEdit := FALSE;
+    mnuBPPaste.Enabled := FALSE;
+    mnuBPCopy.Enabled := FALSE;
+    mnuBPCut.Enabled := FALSE;
+    mnuBPSelectAll.Enabled := FALSE;
+    mnuBPUndo.Enabled := FALSE;
+    mnuInsertTemplateField.Enabled := FALSE;
+  end;
+
+  mnuBPSpellCheck.Visible := isre;
+  mnuBPCheckGrammar.Visible := isre;
+
+  if isre and HasText and CanEdit then
+  begin
+    mnuBPSpellCheck.Enabled   := SpellCheckAvailable;
+    mnuBPCheckGrammar.Enabled := SpellCheckAvailable;
+  end
+  else
+  begin
+    mnuBPSpellCheck.Enabled   := FALSE;
+    mnuBPCheckGrammar.Enabled := FALSE;
+  end;
+end;
+
+function TfrmTemplateFieldEditor.GetPopupControl: TCustomEdit;
+begin
+  if assigned(popText.PopupComponent) and (popText.PopupComponent is TCustomEdit) then
+    Result := TCustomEdit(popText.PopupComponent)
+  else
+    Result := nil;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPUndoClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+
+begin
+  ce := GetPopupControl;
+  if assigned(ce) then
+    ce.Perform(EM_UNDO, 0, 0);
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPCutClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+  
+begin
+  ce := GetPopupControl;
+  if assigned(ce) then
+    ce.CutToClipboard;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPCopyClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+  
+begin
+  ce := GetPopupControl;
+  if assigned(ce) then
+    ce.CopyToClipboard;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPPasteClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+  
+begin
+  ce := GetPopupControl;
+  if assigned(ce) then
+    ce.SelText := Clipboard.AsText;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPSelectAllClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+
+begin
+  ce := GetPopupControl;
+  if assigned(ce) then
+    ce.SelectAll;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPCheckGrammarClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+
+begin
+  ce := GetPopupControl;
+  if(assigned(ce) and (ce is TRichEdit)) then
+    GrammarCheckForControl(TRichEdit(ce));
+end;
+
+procedure TfrmTemplateFieldEditor.mnuBPSpellCheckClick(Sender: TObject);
+var
+  ce: TCustomEdit;
+
+begin
+  ce := GetPopupControl;
+  if(assigned(ce) and (ce is TRichEdit)) then
+    SpellCheckForControl(TRichEdit(ce));
+end;
+
+procedure TfrmTemplateFieldEditor.cbSepLinesClick(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.SepLines := cbSepLines.Checked;
+    cbSepLines.Checked := FFld.SepLines;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtpopControlEnter(Sender: TObject);
+begin
+  popText.PopupComponent := TComponent(Sender);
+  if assigned(frmTemplateFields) then
+    begin
+    if ((Sender = reItems) or (Sender = edtDefault)) then
+      begin
+      frmTemplateFields.btnInsert.Enabled := TRUE;
+      if Sender = reItems then
+        frmTemplateFields.re := reItems
+      else
+        frmTemplateFields.re := edtDefault;
+      end
+    else
+      frmTemplateFields.btnInsert.Enabled := FALSE;
+    end;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxObjsKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if(Key = VK_DELETE) and btnDelete.Enabled then
+    mnuDeleteClick(btnDelete);
+end;
+
+procedure TfrmTemplateFieldEditor.edtTextLenChange(Sender: TObject);
+var
+  v: integer;
+
+begin
+  EnsureText(edtTextLen, udTextLen);
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType in EditLenTypes)) then
+  begin
+    FFld.TextLen := udTextLen.Position;
+    udTextLen.Position := FFld.TextLen;
+    if FFld.FldType = dftEditBox then
+    begin
+      v := udTextLen.Position;
+      if udLen.Position > v then
+        udLen.Position := v;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtDefNumChange(Sender: TObject);
+var
+  v: integer;
+
+begin
+  EnsureText(edtDefNum, udDefNum);
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType = dftNumber)) then
+  begin
+    FFld.EditDefault := IntToStr(udDefNum.Position);
+    udDefNum.Position := StrToIntDef(FFld.EditDefault, 0);
+    v := udDefNum.Position;
+    if udMinVal.Position > v then
+      udMinVal.Position := v;
+    if udMaxVal.Position < v then
+      udMaxVal.Position := v;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtMinValChange(Sender: TObject);
+var
+  v: integer;
+
+begin
+  EnsureText(edtMinVal, udMinVal);
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType = dftNumber)) then
+  begin
+    FFld.MinVal := udMinVal.Position;
+    udMinVal.Position := FFld.MinVal;
+    v := udMinVal.Position;
+    if udDefNum.Position < v then
+      udDefNum.Position := v;
+    if udMaxVal.Position < v then
+      udMaxVal.Position := v;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtMaxValChange(Sender: TObject);
+var
+  v: integer;
+
+begin
+  EnsureText(edtMaxVal, udMaxVal);
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType = dftNumber)) then
+  begin
+    FFld.MaxVal := udMaxVal.Position;
+    udMaxVal.Position := FFld.MaxVal;
+    v := udMaxVal.Position;
+    if udDefNum.Position > v then
+      udDefNum.Position := v;
+    if udMinVal.Position > v then
+      udMinVal.Position := v;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtIncChange(Sender: TObject);
+begin
+  EnsureText(edtInc, udInc);
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType = dftNumber)) then
+  begin
+    FFld.Increment := udInc.Position;
+    udInc.Position := FFld.Increment;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtURLChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType = dftHyperlink)) then
+  begin
+    FFld.URL := edtURL.Text;
+    edtURL.Text := FFld.URL;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtPadChange(Sender: TObject);
+begin
+  EnsureText(edtPad, udPad);
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.Pad := udPad.Position;
+    udPad.Position := FFld.Pad;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.edtIndentChange(Sender: TObject);
+begin
+  EnsureText(edtIndent, udIndent);
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.Indent := udIndent.Position;
+    udIndent.Position := FFld.Indent;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.reNotesChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld)) and FFld.CanModify) then
+    FFld.Notes := reNotes.Lines.Text;
+end;
+
+procedure TfrmTemplateFieldEditor.cbxDateTypeChange(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld)) and (FFld.FldType = dftDate)) then
+  begin
+    if cbxDateType.ItemIndex >= 0 then
+      FFld.DateType := TTmplFldDateType(cbxDateType.ItemIndex + 1)
+    else
+      FFld.DateType := dtDate;
+    cbxDateType.SelectByID(TemplateFieldDateCodes[FFld.DateType]);
+  end;
+
+end;
+
+procedure TfrmTemplateFieldEditor.cbExcludeClick(Sender: TObject);
+begin
+  if((not FUpdating) and (assigned(FFld))) then
+  begin
+    FFld.SepLines := cbExclude.Checked;
+    cbExclude.Checked := FFld.SepLines;
+    UpdateControls;
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.FormResize(Sender: TObject);
+begin
+  LimitEditWidth(reItems, 240);
+  LimitEditWidth(reNotes, MAX_ENTRY_WIDTH);
+end;
+
+procedure TfrmTemplateFieldEditor.reItemsResizeRequest(Sender: TObject;
+  Rect: TRect);
+var
+  R: TRect;
+
+begin
+  R := TRichEdit(Sender).ClientRect;
+  if (FLastRect.Right <> R.Right) or
+     (FLastRect.Bottom <> R.Bottom) or
+     (FLastRect.Left <> R.Left) or
+     (FLastRect.Top <> R.Top) then
+  begin
+    FLastRect := R;
+    FormResize(Self);
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.reItemsSelectionChange(Sender: TObject);
+var
+  p: TPoint;
+
+begin
+  if lblLine.Visible then
+  begin
+    p := reItems.CaretPos;
+    lblLine.Caption := 'Line: ' + inttostr(p.y + 1);
+    lblCol.Caption  := 'Col: ' + inttostr(p.x + 1);
+  end;
+end;
+
+procedure TfrmTemplateFieldEditor.mnuInsertTemplateFieldClick(Sender: TObject);
+var
+  iCon: TCustomEdit;
+  ShowButton: boolean;
+begin
+  iCon := GetPopupControl;
+  if iCon <> nil then
+    begin
+    if iCon.Name <> ActiveControl.Name then
+      begin
+      ActiveControl := iCon;
+      iCon.SelStart := iCon.SelLength;
+      end;
+    if (not assigned(frmTemplateFields)) then
+      begin
+      frmTemplateFields := TfrmTemplateFields.Create(Self);
+      frmTemplateFields.Font := Font;
+      end;
+    ShowButton := False;
+    if iCon = reItems then
+      begin
+      frmTemplateFields.re := reItems;
+      ShowButton := TRUE;
+      end
+    else if iCon = edtDefault then
+      begin
+      frmTemplateFields.re := edtDefault;
+      ShowButton := TRUE;
+      end;
+    frmTemplateFields.btnInsert.Enabled := ShowButton;
+
+    frmTemplateFields.Show;
+    end
+
+end;
+
+procedure TfrmTemplateFieldEditor.ControlExit(Sender: TObject);
+begin
+  if assigned(frmTemplateFields) then
+    frmTemplateFields.btnInsert.Enabled := FALSE;
+end;
+
+procedure TfrmTemplateFieldEditor.reNotesKeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFields.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFields.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFields.dfm	(revision 1676)
@@ -0,0 +1,255 @@
+inherited frmTemplateFields: TfrmTemplateFields
+  Left = 212
+  Top = 155
+  Caption = 'Insert Template Field'
+  ClientHeight = 319
+  ClientWidth = 450
+  FormStyle = fsStayOnTop
+  Position = poOwnerFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitWidth = 458
+  ExplicitHeight = 346
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBottom: TPanel [0]
+    Left = 0
+    Top = 226
+    Width = 450
+    Height = 28
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      450
+      28)
+    object btnCancel: TButton
+      Left = 371
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = '&Done'
+      ModalResult = 2
+      TabOrder = 3
+      OnClick = btnCancelClick
+    end
+    object btnInsert: TButton
+      Left = 291
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '&Insert Field'
+      Default = True
+      ModalResult = 4
+      TabOrder = 2
+      OnClick = btnInsertClick
+    end
+    object btnPreview: TButton
+      Left = 211
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '&Preview'
+      Enabled = False
+      TabOrder = 1
+      OnClick = btnPreviewClick
+    end
+    object lblReq: TVA508StaticText
+      Name = 'lblReq'
+      AlignWithMargins = True
+      Left = 10
+      Top = 12
+      Width = 132
+      Height = 15
+      Alignment = taLeftJustify
+      Anchors = [akLeft, akBottom]
+      Caption = '* Indicates a Required Field'
+      TabOrder = 0
+      ShowAccelChar = True
+    end
+  end
+  object cboObjects: TORComboBox [1]
+    Left = 0
+    Top = 0
+    Width = 450
+    Height = 226
+    Style = orcsSimple
+    Align = alClient
+    AutoSelect = True
+    Caption = 'Template Field'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2,3'
+    HideSynonyms = True
+    Sorted = False
+    SynonymChars = '<Inactive>'
+    TabPositions = '50,60,70,80,90'
+    TabOrder = 0
+    TabStop = True
+    OnChange = cboObjectsChange
+    OnDblClick = cboObjectsDblClick
+    OnNeedData = cboObjectsNeedData
+    CharsNeedMatch = 1
+  end
+  object pnlBottomSR: TPanel [2]
+    Left = 0
+    Top = 254
+    Width = 450
+    Height = 65
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    object lblSRCont2: TVA508StaticText
+      Name = 'lblSRCont2'
+      AlignWithMargins = True
+      Left = 24
+      Top = 45
+      Width = 423
+      Height = 15
+      Margins.Left = 24
+      Margins.Top = 0
+      Margins.Bottom = 0
+      Align = alTop
+      Alignment = taLeftJustify
+      Caption = 
+        'speaking text that follows the template field, when the field re' +
+        'ceives focus.'
+      TabOrder = 3
+      ShowAccelChar = True
+    end
+    object lblSRCont1: TVA508StaticText
+      Name = 'lblSRCont1'
+      AlignWithMargins = True
+      Left = 10
+      Top = 30
+      Width = 437
+      Height = 15
+      Margins.Left = 10
+      Margins.Top = 0
+      Margins.Bottom = 0
+      Align = alTop
+      Alignment = taLeftJustify
+      Caption = 
+        '*** Place this code after a template field to allow the screen r' +
+        'eader to continue'
+      TabOrder = 2
+      ShowAccelChar = True
+    end
+    object lblSRStop: TVA508StaticText
+      Name = 'lblSRStop'
+      AlignWithMargins = True
+      Left = 10
+      Top = 15
+      Width = 437
+      Height = 15
+      Margins.Left = 10
+      Margins.Top = 0
+      Margins.Bottom = 0
+      Align = alTop
+      Alignment = taLeftJustify
+      Caption = '** Screen reader will stop speaking at this point'
+      TabOrder = 1
+      ShowAccelChar = True
+    end
+    object pnlSRIntro: TPanel
+      Left = 0
+      Top = 0
+      Width = 450
+      Height = 15
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblSRIntro1: TVA508StaticText
+        Name = 'lblSRIntro1'
+        AlignWithMargins = True
+        Left = 10
+        Top = 0
+        Width = 127
+        Height = 15
+        Margins.Left = 10
+        Margins.Top = 0
+        Margins.Bottom = 0
+        Align = alLeft
+        Alignment = taLeftJustify
+        Caption = 'Screen Reader Codes'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 0
+        ShowAccelChar = True
+      end
+      object lblSRIntro2: TVA508StaticText
+        Name = 'lblSRIntro2'
+        Left = 140
+        Top = 0
+        Width = 310
+        Height = 15
+        Align = alClient
+        Alignment = taLeftJustify
+        Caption = '(make templates user friendly for those using screen readers)'
+        TabOrder = 1
+        ShowAccelChar = True
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnInsert'
+        'Status = stsDefault')
+      (
+        'Component = btnPreview'
+        'Status = stsDefault')
+      (
+        'Component = cboObjects'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateFields'
+        'Status = stsDefault')
+      (
+        'Component = lblReq'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottomSR'
+        'Status = stsDefault')
+      (
+        'Component = lblSRCont2'
+        'Status = stsDefault')
+      (
+        'Component = lblSRCont1'
+        'Status = stsDefault')
+      (
+        'Component = lblSRStop'
+        'Status = stsDefault')
+      (
+        'Component = pnlSRIntro'
+        'Status = stsDefault')
+      (
+        'Component = lblSRIntro1'
+        'Status = stsDefault')
+      (
+        'Component = lblSRIntro2'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFields.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFields.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateFields.pas	(revision 1676)
@@ -0,0 +1,227 @@
+unit fTemplateFields;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, ComCtrls, StdCtrls, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmTemplateFields = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    btnCancel: TButton;
+    cboObjects: TORComboBox;
+    btnInsert: TButton;
+    btnPreview: TButton;
+    lblReq: TVA508StaticText;
+    pnlBottomSR: TPanel;
+    lblSRCont2: TVA508StaticText;
+    lblSRCont1: TVA508StaticText;
+    lblSRStop: TVA508StaticText;
+    pnlSRIntro: TPanel;
+    lblSRIntro1: TVA508StaticText;
+    lblSRIntro2: TVA508StaticText;
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboObjectsNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboObjectsDblClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure btnInsertClick(Sender: TObject);
+    procedure btnPreviewClick(Sender: TObject);
+    procedure cboObjectsChange(Sender: TObject);
+  private
+{    Fre: TRichEdit;}
+    Fre: TCustomEdit;
+    FInsertAllowed: boolean;
+    FInitialized: boolean;
+    FAutoLongLines: TNotifyEvent;
+    procedure InsertField;
+{    procedure Setre(const Value: TRichEdit);}
+    procedure Setre(const Value: TCustomEdit);
+    function ValidPreview: boolean;
+    function ValidInsert: boolean;
+  public
+    procedure UpdateStatus;
+{    property re: TRichEdit read Fre write Setre;}
+    property re: TCustomEdit read Fre write Setre;
+    property AutoLongLines: TNotifyEvent read FAutoLongLines write FAutoLongLines;
+  end;
+
+implementation
+
+uses
+  ORFn, rTemplates, uTemplateFields, fTemplateDialog, ORClasses;
+
+{$R *.DFM}
+
+procedure TfrmTemplateFields.FormShow(Sender: TObject);
+var
+  i: integer;
+begin
+  if not FInitialized then
+  begin
+    with cboObjects do
+    begin
+      for i := low(ScreenReaderCodeLines) to high(ScreenReaderCodeLines) do
+        Items.Add(ScreenReaderCodeLines[i]);
+      InsertSeparator;
+      InitLongList('');
+    end;
+    FInitialized := TRUE;
+  end;
+  cboObjects.SelectAll;
+  cboObjects.SetFocus;
+end;
+
+procedure TfrmTemplateFields.FormCreate(Sender: TObject);
+begin
+  ResizeFormToFont(self);
+  cboObjects.ItemHeight := lblReq.Height - 1;
+  FInsertAllowed := TRUE;
+  lblReq.Top := (pnlBottom.Height - lblReq.Height);
+  pnlSRIntro.Height := lblSRStop.Height;
+  pnlBottomSR.Height := lblSRCont1.Height * 4 + 5;
+end;
+
+procedure TfrmTemplateFields.cboObjectsNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+var
+  tmp: TStrings;
+
+begin
+  tmp := SubSetOfTemplateFields(StartFrom, Direction);
+  ConvertCodes2Text(tmp, FALSE);
+  cboObjects.ForDataUse(tmp);
+end;
+
+procedure TfrmTemplateFields.InsertField;
+var
+  cnt: integer;
+  p1, p2: string;
+  check: boolean;
+  i: integer;
+
+begin
+  p1 := Piece(cboObjects.Items[cboObjects.ItemIndex],U,1);
+  if p1 = '' then exit;
+  if assigned(Fre) and (not TORExposedCustomEdit(Fre).ReadOnly) and (cboObjects.ItemIndex >= 0) then
+  begin
+    if Fre is TRichEdit then
+      cnt := TRichEdit(FRe).Lines.Count
+    else
+      cnt := 0;
+    if StrToIntDef(p1, 0) < 0 then
+    begin
+      check := true;
+      for i := low(ScreenReaderCodeIDs) to high(ScreenReaderCodeIDs) do
+      begin
+        if p1 = ScreenReaderCodeIDs[i] then
+        begin
+          p2 := ScreenReaderCodes[i];
+          check := FALSE;
+          break;
+        end;
+      end;
+    end
+    else
+      check := TRUE;
+    if check then
+      p2 := TemplateFieldBeginSignature + Piece(cboObjects.Items[cboObjects.ItemIndex],U,2) +
+            TemplateFieldEndSignature;
+    Fre.SelText := p2;
+    if Fre is TRichEdit then
+      if(assigned(FAutoLongLines) and (cnt <> TRichEdit(FRe).Lines.Count)) then
+        FAutoLongLines(Self);
+  end;
+end;
+
+procedure TfrmTemplateFields.cboObjectsDblClick(Sender: TObject);
+begin
+  if ValidInsert then
+    InsertField;
+end;
+
+procedure TfrmTemplateFields.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmTemplateFields.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Action := caHide;
+end;
+
+procedure TfrmTemplateFields.Setre(const Value: TCustomEdit);
+begin
+  Fre := Value;
+  UpdateStatus;
+end;
+
+procedure TfrmTemplateFields.UpdateStatus;
+begin
+  FInsertAllowed := (not TORExposedCustomEdit(re).ReadOnly);
+  btnInsert.Enabled := ValidInsert and FInsertAllowed;
+end;
+
+function TfrmTemplateFields.ValidInsert: boolean;
+begin
+  Result := (cboObjects.ItemIndex >= 0);
+  if Result then
+    Result := (Piece(cboObjects.Items[cboObjects.ItemIndex],U,1) <> '');
+end;
+
+function TfrmTemplateFields.ValidPreview: boolean;
+var
+  i: integer;
+  code: string;
+begin
+  Result := ValidInsert;
+  if Result then
+  begin
+    code := Piece(cboObjects.Items[cboObjects.ItemIndex],U,1);
+    for I := low(ScreenReaderCodeIDs) to high(ScreenReaderCodeIDs) do
+    begin
+      if code = ScreenReaderCodeIDs[i] then
+      begin
+        Result := FALSE;
+        break;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFields.btnInsertClick(Sender: TObject);
+begin
+  if ValidInsert then
+    InsertField;
+end;
+
+procedure TfrmTemplateFields.btnPreviewClick(Sender: TObject);
+var
+  tmp, txt: string;
+
+
+begin
+  if(cboObjects.ItemIndex >= 0) then
+  begin
+    FormStyle := fsNormal;
+    try
+      txt := Piece(cboObjects.Items[cboObjects.ItemIndex],U,2);
+      tmp := TemplateFieldBeginSignature + txt + TemplateFieldEndSignature;
+      CheckBoilerplate4Fields(tmp, 'Preview Template Field: ' + txt, TRUE);
+    finally
+      FormStyle := fsStayOnTop;
+    end;
+  end;
+end;
+
+procedure TfrmTemplateFields.cboObjectsChange(Sender: TObject);
+begin
+  btnPreview.Enabled := ValidPreview;
+  btnInsert.Enabled := ValidInsert and FInsertAllowed;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateImport.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateImport.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateImport.dfm	(revision 1676)
@@ -0,0 +1,74 @@
+inherited frmTemplateImport: TfrmTemplateImport
+  Left = 273
+  Top = 195
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Importing Word Document'
+  ClientHeight = 132
+  ClientWidth = 288
+  FormStyle = fsStayOnTop
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object gaugeImport: TGauge [0]
+    Left = 8
+    Top = 82
+    Width = 272
+    Height = 21
+    BackColor = clHighlightText
+    ForeColor = clHighlight
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clCaptionText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    Progress = 0
+  end
+  object lblImporting: TStaticText [1]
+    Left = 8
+    Top = 4
+    Width = 272
+    Height = 13
+    AutoSize = False
+    Caption = 'Importing '
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+  end
+  object animImport: TAnimate [2]
+    Left = 8
+    Top = 20
+    Width = 272
+    Height = 60
+    Active = True
+    CommonAVI = aviCopyFile
+    StopFrame = 20
+  end
+  object btnCancel: TButton [3]
+    Left = 106
+    Top = 106
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = '&Cancel'
+    Default = True
+    TabOrder = 1
+    OnClick = btnCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblImporting'
+        'Status = stsDefault')
+      (
+        'Component = animImport'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateImport'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateImport.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateImport.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateImport.pas	(revision 1676)
@@ -0,0 +1,82 @@
+unit fTemplateImport;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  Gauges, StdCtrls, ComCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmTemplateImport = class(TfrmBase508Form)
+    animImport: TAnimate;
+    btnCancel: TButton;
+    lblImporting: TStaticText;
+    gaugeImport: TGauge;
+    procedure btnCancelClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure StartImportMessage(AFileName: string; MaxCount: integer);
+function UpdateImportMessage(CurrentCount: integer): boolean;
+procedure StopImportMessage;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  ORFn;
+
+var
+  frmTemplateImport: TfrmTemplateImport = nil;
+
+procedure StartImportMessage(AFileName: string; MaxCount: integer);
+begin
+  if not assigned(frmTemplateImport) then
+  begin
+    frmTemplateImport := TfrmTemplateImport.Create(Application);
+    ResizeAnchoredFormToFont(frmTemplateImport);
+    with frmTemplateImport do
+    begin
+      lblImporting.Caption := lblImporting.Caption + AFileName;
+      lblImporting.Hint := lblImporting.Caption;
+      gaugeImport.MaxValue := MaxCount;
+      Show;
+      Application.ProcessMessages;
+    end;
+  end;
+end;
+
+function UpdateImportMessage(CurrentCount: integer): boolean;
+begin
+  if assigned(frmTemplateImport) then
+  begin
+    Result := (not frmTemplateImport.btnCancel.Enabled);
+    if not Result then
+    begin
+      frmTemplateImport.gaugeImport.Progress := CurrentCount;
+      Application.ProcessMessages;
+    end;  
+  end
+  else
+    Result := TRUE;
+end;
+
+procedure StopImportMessage;
+begin
+  if assigned(frmTemplateImport) then
+    FreeAndNil(frmTemplateImport);
+end;
+
+
+procedure TfrmTemplateImport.btnCancelClick(Sender: TObject);
+begin
+  lblImporting.Caption := 'Canceling...';
+  btnCancel.Enabled := FALSE;
+  Application.ProcessMessages;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateObjects.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateObjects.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateObjects.dfm	(revision 1676)
@@ -0,0 +1,110 @@
+inherited frmTemplateObjects: TfrmTemplateObjects
+  Left = 215
+  Top = 343
+  ActiveControl = cboObjects
+  Caption = 'Insert Patient Data (Object)'
+  ClientHeight = 273
+  ClientWidth = 239
+  FormStyle = fsStayOnTop
+  Position = poOwnerFormCenter
+  OnClose = FormClose
+  OnShow = FormShow
+  ExplicitWidth = 247
+  ExplicitHeight = 300
+  PixelsPerInch = 96
+  TextHeight = 13
+  object cboObjects: TORComboBox [0]
+    Left = 0
+    Top = 0
+    Width = 239
+    Height = 246
+    Style = orcsSimple
+    Align = alClient
+    AutoSelect = True
+    Caption = 'Patient Data'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '1'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnDblClick = cboObjectsDblClick
+    CharsNeedMatch = 1
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 246
+    Width = 239
+    Height = 27
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      239
+      27)
+    object btnCancel: TButton
+      Left = 162
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = '&Done'
+      ModalResult = 2
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+    object btnInsert: TButton
+      Left = 82
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '&Insert Object'
+      Default = True
+      ModalResult = 4
+      TabOrder = 0
+      OnClick = btnInsertClick
+    end
+    object btnRefresh: TButton
+      Left = 2
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '&Refresh'
+      Default = True
+      ModalResult = 4
+      TabOrder = 2
+      OnClick = btnRefreshClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboObjects'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnInsert'
+        'Status = stsDefault')
+      (
+        'Component = btnRefresh'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateObjects'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateObjects.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateObjects.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateObjects.pas	(revision 1676)
@@ -0,0 +1,119 @@
+unit fTemplateObjects;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, ExtCtrls, ComCtrls, ORFn, dShared, uTemplates, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmTemplateObjects = class(TfrmBase508Form)
+    cboObjects: TORComboBox;
+    pnlBottom: TPanel;
+    btnCancel: TButton;
+    btnInsert: TButton;
+    btnRefresh: TButton;
+    procedure FormShow(Sender: TObject);
+    procedure btnInsertClick(Sender: TObject);
+    procedure cboObjectsDblClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnRefreshClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    Fre: TRichEdit;
+    FAutoLongLines: TNotifyEvent;
+    procedure InsertObject;
+    procedure Setre(const Value: TRichEdit);
+  public
+    procedure UpdateStatus;
+    property re: TRichEdit read Fre write Setre;
+    property AutoLongLines: TNotifyEvent read FAutoLongLines write FAutoLongLines;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmTemplateObjects.FormShow(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  //ResizeAnchoredFormToFont doesn't work right on the button positions for some reason.
+  btnCancel.Left := pnlBottom.ClientWidth - btnCancel.Width;
+  btnInsert.Left := btnCancel.Left - btnInsert.Width - 5;
+  btnRefresh.Left := btnInsert.Left - btnRefresh.Width - 5;
+  cboObjects.SelectAll;
+  cboObjects.SetFocus;
+end;
+
+procedure TfrmTemplateObjects.btnInsertClick(Sender: TObject);
+begin
+  InsertObject;
+end;
+
+procedure TfrmTemplateObjects.InsertObject;
+var
+  cnt: integer;
+
+begin
+  if(not Fre.ReadOnly) and (cboObjects.ItemIndex >= 0) then
+  begin
+    cnt := Fre.Lines.Count;
+    Fre.SelText := '|'+Piece(cboObjects.Items[cboObjects.ItemIndex],U,3)+'|';
+    if(assigned(FAutoLongLines) and (cnt <> FRe.Lines.Count)) then
+      FAutoLongLines(Self);
+  end;
+end;
+
+procedure TfrmTemplateObjects.cboObjectsDblClick(Sender: TObject);
+begin
+  InsertObject;
+end;
+
+procedure TfrmTemplateObjects.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmTemplateObjects.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Action := caHide;
+end;
+
+procedure TfrmTemplateObjects.Setre(const Value: TRichEdit);
+begin
+  Fre := Value;
+  UpdateStatus;
+end;
+
+procedure TfrmTemplateObjects.UpdateStatus;
+begin
+  btnInsert.Enabled := (not re.ReadOnly);
+end;
+
+procedure TfrmTemplateObjects.btnRefreshClick(Sender: TObject);
+var
+  i: integer;
+  DoIt: boolean;
+begin
+  cboObjects.Clear;
+  dmodShared.RefreshObject := true;
+  dmodShared.LoadTIUObjects;
+  //---------- CQ #8665 - RV ----------------
+  DoIt := TRUE;
+  UpdatePersonalObjects;
+  if uPersonalObjects.Count > 0 then
+  begin
+    DoIt := FALSE;
+    for i := 0 to dmodShared.TIUObjects.Count-1 do
+      if uPersonalObjects.IndexOf(Piece(dmodShared.TIUObjects[i],U,2)) >= 0 then
+        cboObjects.Items.Add(dmodShared.TIUObjects[i]);
+  end;
+  if DoIt then
+  //---------- end CQ #8665 ------------------
+    cboObjects.Items.Assign(dmodShared.TIUObjects);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateView.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateView.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateView.dfm	(revision 1676)
@@ -0,0 +1,118 @@
+inherited frmTemplateView: TfrmTemplateView
+  Left = 257
+  Top = 105
+  Caption = 'View Template'
+  ClientHeight = 343
+  ClientWidth = 568
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 576
+  ExplicitHeight = 370
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBottom: TPanel [0]
+    Left = 0
+    Top = 313
+    Width = 568
+    Height = 30
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      568
+      30)
+    object btnClose: TButton
+      Left = 492
+      Top = 6
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Close'
+      Default = True
+      TabOrder = 2
+      OnClick = btnCloseClick
+    end
+    object cbStayOnTop: TCheckBox
+      Left = 0
+      Top = 8
+      Width = 77
+      Height = 17
+      Caption = 'Stay on Top'
+      TabOrder = 0
+      OnClick = cbStayOnTopClick
+    end
+    object btnPrint: TButton
+      Left = 412
+      Top = 6
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = 'Print'
+      TabOrder = 1
+      OnClick = btnPrintClick
+    end
+  end
+  object reMain: TRichEdit [1]
+    Left = 0
+    Top = 0
+    Width = 568
+    Height = 313
+    Align = alClient
+    Color = clCream
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    HideSelection = False
+    ParentFont = False
+    PopupMenu = popView
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 0
+    WantReturns = False
+    WordWrap = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = cbStayOnTop'
+        'Status = stsDefault')
+      (
+        'Component = btnPrint'
+        'Status = stsDefault')
+      (
+        'Component = reMain'
+        'Status = stsDefault')
+      (
+        'Component = frmTemplateView'
+        'Status = stsDefault'))
+  end
+  object popView: TPopupMenu
+    OnPopup = popViewPopup
+    Left = 24
+    Top = 24
+    object Copy1: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = Copy1Click
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object SelectAll1: TMenuItem
+      Caption = 'Select &All'
+      ShortCut = 16449
+      OnClick = SelectAll1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateView.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateView.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/fTemplateView.pas	(revision 1676)
@@ -0,0 +1,137 @@
+unit fTemplateView;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ComCtrls, ExtCtrls, Menus, ORFn, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmTemplateView = class(TfrmBase508Form)
+    pnlBottom: TPanel;
+    reMain: TRichEdit;
+    btnClose: TButton;
+    cbStayOnTop: TCheckBox;
+    popView: TPopupMenu;
+    Copy1: TMenuItem;
+    N1: TMenuItem;
+    SelectAll1: TMenuItem;
+    btnPrint: TButton;
+    procedure btnCloseClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cbStayOnTopClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure popViewPopup(Sender: TObject);
+    procedure Copy1Click(Sender: TObject);
+    procedure SelectAll1Click(Sender: TObject);
+    procedure btnPrintClick(Sender: TObject);
+    procedure AlignButtons();
+    procedure FormCreate(Sender: TObject);
+  private
+  end;
+
+procedure ShowTemplateData(Form: TForm; const Title, Text: string);
+
+var
+  frmTemplateView: TfrmTemplateView = nil;
+
+implementation
+
+uses fTemplateDialog, fRptBox, rMisc;
+
+{$R *.DFM}
+
+var
+  LastStayOnTop: boolean = FALSE;
+
+procedure ShowTemplateData(Form: TForm; const Title, Text: string);
+var
+  Cnt: integer;
+
+begin
+  if(not assigned(frmTemplateView)) then
+    frmTemplateView := TfrmTemplateView.Create(Application);
+  //Quick fix to work around glich in resize algorithm
+  frmTemplateView.AlignButtons();
+  frmTemplateView.reMain.Lines.Clear;
+  frmTemplateView.Caption := 'Template: ' + Title;
+  frmTemplateView.reMain.Lines.Text := Text;
+  Cnt := frmTemplateView.reMain.Lines.Count;
+  CheckBoilerplate4Fields(frmTemplateView.reMain.Lines, frmTemplateView.Caption, TRUE);
+  if (Cnt > 0) and (frmTemplateView.reMain.Lines.Count = 0) then
+    frmTemplateView.Close
+  else
+  begin
+    frmTemplateView.cbStayOnTop.Checked := LastStayOnTop;
+    frmTemplateView.ActiveControl := frmTemplateView.btnClose;
+    frmTemplateView.Show;
+    Application.ProcessMessages;
+    SendMessage(frmTemplateView.reMain.Handle, EM_LINESCROLL, 0, -1 * frmTemplateView.reMain.Lines.Count);
+  end;
+end;
+
+procedure TfrmTemplateView.btnCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmTemplateView.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(frmTemplateView);
+  Action := caFree;
+end;
+
+procedure TfrmTemplateView.FormCreate(Sender: TObject);
+begin
+  inherited;
+  ResizeAnchoredFormToFont(Self);
+  SetFormPosition(Self);
+end;
+
+procedure TfrmTemplateView.cbStayOnTopClick(Sender: TObject);
+begin
+  if(cbStayOnTop.Checked) then
+    FormStyle := fsStayOnTop
+  else
+    FormStyle := fsNormal;
+  if(LastStayOnTop <> cbStayOnTop.Checked) then
+    LastStayOnTop := cbStayOnTop.Checked;
+end;
+
+procedure TfrmTemplateView.FormDestroy(Sender: TObject);
+begin
+  frmTemplateView := nil;
+end;
+
+procedure TfrmTemplateView.popViewPopup(Sender: TObject);
+begin
+  Copy1.Enabled := (reMain.SelLength > 0);
+  SelectAll1.Enabled := (reMain.Lines.Count > 0);
+end;
+
+procedure TfrmTemplateView.Copy1Click(Sender: TObject);
+begin
+  reMain.CopyToClipboard;
+end;
+
+procedure TfrmTemplateView.SelectAll1Click(Sender: TObject);
+begin
+  reMain.SelectAll;
+end;
+
+procedure TfrmTemplateView.btnPrintClick(Sender: TObject);
+begin
+  PrintStrings(Self, reMain.Lines, Caption, 'End of template');
+end;
+
+procedure TfrmTemplateView.AlignButtons;
+Const
+  BtnSpace = 8;
+begin
+  btnClose.Left := frmTemplateView.Width - btnClose.Width - BtnSpace;
+  btnPrint.Left := btnClose.Left - BtnSpace - btnPrint.Width;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/mTemplateFieldButton.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/mTemplateFieldButton.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/mTemplateFieldButton.dfm	(revision 1676)
@@ -0,0 +1,56 @@
+object fraTemplateFieldButton: TfraTemplateFieldButton
+  Left = 0
+  Top = 0
+  Width = 136
+  Height = 14
+  AutoScroll = True
+  Font.Charset = ANSI_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Courier New'
+  Font.Style = []
+  ParentFont = False
+  TabOrder = 0
+  TabStop = True
+  OnEnter = FrameEnter
+  OnExit = FrameExit
+  object pnlBtn: TPanel
+    Left = 0
+    Top = 0
+    Width = 136
+    Height = 14
+    Align = alClient
+    TabOrder = 0
+    OnExit = FrameExit
+    OnMouseDown = pnlBtnMouseDown
+    OnMouseUp = pnlBtnMouseUp
+    DesignSize = (
+      136
+      14)
+    object lblText: TLabel
+      Left = 2
+      Top = -1
+      Width = 132
+      Height = 14
+      Alignment = taCenter
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      AutoSize = False
+      Transparent = True
+      Layout = tlCenter
+      OnMouseDown = pnlBtnMouseDown
+      OnMouseUp = pnlBtnMouseUp
+      ExplicitWidth = 105
+    end
+    object pbFocus: TPaintBox
+      Left = 1
+      Top = 1
+      Width = 134
+      Height = 12
+      Align = alClient
+      OnMouseDown = pnlBtnMouseDown
+      OnMouseUp = pnlBtnMouseUp
+      OnPaint = pbFocusPaint
+      ExplicitWidth = 107
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/mTemplateFieldButton.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/mTemplateFieldButton.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/mTemplateFieldButton.pas	(revision 1676)
@@ -0,0 +1,165 @@
+unit mTemplateFieldButton;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, uDlgComponents, VA508AccessibilityManager;
+
+type
+  TfraTemplateFieldButton = class(TFrame, ICPRSDialogComponent)
+    pnlBtn: TPanel;
+    lblText: TLabel;
+    pbFocus: TPaintBox;
+    procedure pnlBtnMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlBtnMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure FrameEnter(Sender: TObject);
+    procedure FrameExit(Sender: TObject);
+    procedure pbFocusPaint(Sender: TObject);
+  private
+    FCPRSDialogData: ICPRSDialogComponent;
+    FBtnDown: boolean;
+    FItems: TStringList;
+    FOnChange: TNotifyEvent;
+    procedure ButtonKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure ButtonKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
+    function GetButtonText: string;
+    procedure SetButtonText(const Value: string);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property ButtonText: string read GetButtonText write SetButtonText;
+    property Items: TStringList read FItems;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogData implements ICPRSDialogComponent;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  ORFn, VA508AccessibilityRouter;
+
+procedure TfraTemplateFieldButton.pnlBtnMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+var
+  txt: string;
+  i, idx: integer;
+
+begin
+  if(not FBtnDown) then
+  begin
+    FBtnDown := TRUE;
+    pnlBtn.BevelOuter := bvLowered;
+    if(FItems.Count > 0) then
+    begin
+      txt := ButtonText;
+      idx := FItems.Count-1;
+      for i := 0 to FItems.Count-1 do
+      begin
+        if(txt = FItems[i]) then
+        begin
+          idx := i;
+          break;
+        end;
+      end;
+      inc(idx);
+      if(idx >= FItems.Count) then
+        idx := 0;
+      ButtonText := FItems[idx];
+      if ScreenReaderSystemActive then
+      begin
+        txt := FItems[idx];
+        if Trim(txt) = '' then
+          txt := 'blank';
+        GetScreenReader.Speak(txt);
+      end;
+      if assigned(FOnChange) then
+        FOnChange(Self);
+    end;
+    SetFocus;
+  end;
+end;
+
+procedure TfraTemplateFieldButton.pnlBtnMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if(FBtnDown) then
+  begin
+    FBtnDown := FALSE;
+    pnlBtn.BevelOuter := bvRaised;
+  end;
+end;
+
+type
+  TWinControlFriend = class(TWinControl);
+  
+procedure TfraTemplateFieldButton.FrameEnter(Sender: TObject);
+begin
+  pbFocus.Invalidate;
+end;
+
+procedure TfraTemplateFieldButton.FrameExit(Sender: TObject);
+begin
+  pbFocus.Invalidate;
+end;
+
+constructor TfraTemplateFieldButton.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  TabStop := TRUE;
+  FItems := TStringList.Create;
+  OnKeyDown := ButtonKeyDown;
+  OnKeyUp := ButtonKeyUp;
+  Font.Size := MainFontSize;
+  FCPRSDialogData := TCPRSDialogComponent.Create(Self, 'multi value button');
+end;
+
+procedure TfraTemplateFieldButton.ButtonKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_SPACE then
+    pnlBtnMouseDown(Sender, mbLeft, [], 0, 0);
+end;
+
+procedure TfraTemplateFieldButton.ButtonKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  pnlBtnMouseUp(Sender, mbLeft, [], 0, 0);
+end;
+
+function TfraTemplateFieldButton.GetButtonText: string;
+begin
+  Result := lblText.Caption;
+end;
+
+procedure TfraTemplateFieldButton.SetButtonText(const Value: string);
+begin
+  lblText.Caption := Value;
+end;
+
+procedure TfraTemplateFieldButton.pbFocusPaint(Sender: TObject);
+var
+  R: TRect;
+begin
+  if(Focused) then
+  begin
+    R := Rect(1, 0, pnlBtn.Width - 3, pnlBtn.Height-2);
+    pbFocus.Canvas.DrawFocusRect(R);
+  end;
+end;
+
+destructor TfraTemplateFieldButton.Destroy;
+begin
+  FItems.Free;
+  FCPRSDialogData := nil;
+  inherited;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfraTemplateFieldButton);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/rTemplates.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/rTemplates.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/rTemplates.pas	(revision 1676)
@@ -0,0 +1,456 @@
+unit rTemplates;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, uConst, TRPCB, uTIU;
+
+{ Templates }
+procedure GetTemplateRoots;
+function IsUserTemplateEditor(TemplateID: string; UserID :Int64): boolean;
+procedure GetTemplateChildren(ID: string);
+procedure GetTemplateBoilerplate(ID: string);
+procedure GetTemplateText(BoilerPlate: TStrings);
+function IsTemplateEditor(ID: string): boolean;
+//function SubSetOfTemplateOwners(const StartFrom: string; Direction: Integer): TStrings;
+function UpdateTemplate(ID: string; Fields: TStrings): string;
+procedure UpdateChildren(ID: string; Children: TStrings);
+procedure DeleteTemplates(DelList: TStrings);
+procedure GetObjectList;
+procedure GetAllowedPersonalObjects;
+procedure TestBoilerplate(BoilerPlate: TStrings);
+function GetTemplateAccess(ID: string): integer;
+function SubSetOfBoilerplatedTitles(const StartFrom: string; Direction: Integer): TStrings;
+function GetTitleBoilerplate(TitleIEN: string): string;
+function GetUserTemplateDefaults(LoadFromServer: boolean = FALSE): string;
+procedure SetUserTemplateDefaults(Value: string; PieceNum: integer);
+procedure SaveUserTemplateDefaults;
+procedure LoadTemplateDescription(TemplateIEN: string);
+function GetTemplateAllowedReminderDialogs: TStrings;
+function IsRemDlgAllowed(RemDlgIEN: string): integer;
+function LockTemplate(const ID: string): boolean; // returns true if successful
+procedure UnlockTemplate(const ID: string);
+function GetLinkedTemplateData(const Link: string): string;
+function SubSetOfAllTitles(const StartFrom: string; Direction: Integer): TStrings;
+
+{ Template Fields }
+function SubSetOfTemplateFields(const StartFrom: string; Direction: Integer): TStrings;
+function LoadTemplateField(const DlgFld: string): TStrings;
+function LoadTemplateFieldByIEN(const DlgFld: string): TStrings;
+function CanEditTemplateFields: boolean;
+function UpdateTemplateField(const ID: string; Fields: TStrings): string;
+function LockTemplateField(const ID: string): boolean;
+procedure UnlockTemplateField(const ID: string);
+procedure DeleteTemplateField(const ID: string);
+function ExportTemplateFields(FldList: TStrings): TStrings;
+function ImportTemplateFields(FldList: TStrings): TStrings;
+function IsTemplateFieldNameUnique(const FldName, IEN: string): boolean;
+procedure Convert2LMText(Text: TStringList);
+procedure CheckTemplateFields(ResultString: TStrings);
+function BuildTemplateFields(XMLString: TStrings): boolean;
+function ImportLoadedFields(ResultSet: TStrings): boolean;
+
+implementation
+var
+  uUserTemplateDefaults: string = '';
+  uCanEditDlgFldChecked: boolean = FALSE;
+  uCanEditDlgFlds: boolean;
+
+{ Template RPCs -------------------------------------------------------------- }
+
+procedure GetTemplateRoots;
+begin
+  CallV('TIU TEMPLATE GETROOTS', [User.DUZ]);
+end;
+
+function IsUserTemplateEditor(TemplateID: string; UserID :Int64): boolean;
+begin
+  if StrToIntDef(TemplateID,0) > 0 then
+    Result := (Piece(sCallV('TIU TEMPLATE ISEDITOR', [TemplateID, UserID]),U,1) = '1')
+  else
+    Result := FALSE;
+end;
+
+procedure GetTemplateChildren(ID: string);
+begin
+  if(ID = '') or (ID = '0') then
+    RPCBrokerV.Results.Clear
+  else
+    CallV('TIU TEMPLATE GETITEMS', [ID]);
+end;
+
+procedure GetTemplateBoilerplate(ID: string);
+begin
+  if(ID = '') or (ID = '0') then
+    RPCBrokerV.Results.Clear
+  else
+    CallV('TIU TEMPLATE GETBOIL', [ID]);
+end;
+
+procedure GetTemplateText(BoilerPlate: TStrings);
+var
+  i: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU TEMPLATE GETTEXT';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;
+    Param[1].PType := literal;
+    Param[1].Value := Encounter.VisitStr;
+    Param[2].PType := list;
+    for i := 0 to BoilerPlate.Count-1 do
+      Param[2].Mult[IntToStr(i+1)+',0'] := BoilerPlate[i];
+    CallBroker;
+    RPCBrokerV.Results.Delete(0);
+    FastAssign(RPCBrokerV.Results, BoilerPlate);
+    RPCBrokerV.Results.Clear;
+  end;
+end;
+
+function IsTemplateEditor(ID: string): boolean;
+begin
+  Result := (sCallV('TIU TEMPLATE ISEDITOR', [ID, User.DUZ]) = '1');
+end;
+
+//function SubSetOfTemplateOwners(const StartFrom: string; Direction: Integer): TStrings;
+//begin
+//  CallV('TIU TEMPLATE LISTOWNR', [StartFrom, Direction]);
+//  MixedCaseList(RPCBrokerV.Results);
+//  Result := RPCBrokerV.Results;
+//end;
+
+function UpdateTIURec(RPC, ID: string; Fields: TStrings): string;
+var
+  i, j: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := RPC;
+    Param[0].PType := literal;
+    Param[0].Value := ID;
+    Param[1].PType := list;
+    for i := 0 to Fields.Count-1 do
+    begin
+      j := pos('=',Fields[i]);
+      if(j > 0) then
+        Param[1].Mult[Fields.Names[i]] := copy(Fields[i],j+1,MaxInt);
+    end;
+    CallBroker;
+    Result := RPCBrokerV.Results[0];
+  end;
+end;
+
+function UpdateTemplate(ID: string; Fields: TStrings): string;
+begin
+  Result := UpdateTIURec('TIU TEMPLATE CREATE/MODIFY', ID, Fields);
+end;
+
+procedure UpdateChildren(ID: string; Children: TStrings);
+var
+  i: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU TEMPLATE SET ITEMS';
+    Param[0].PType := literal;
+    Param[0].Value := ID;
+    Param[1].PType := list;
+    for i := 0 to Children.Count-1 do
+      Param[1].Mult[IntToStr(i+1)] := Children[i];
+    CallBroker;
+  end;
+end;
+
+procedure DeleteTemplates(DelList: TStrings);
+var
+  i: integer;
+
+begin
+  if(DelList.Count > 0) then
+  begin
+    with RPCBrokerV do
+    begin
+      ClearParameters := True;
+      RemoteProcedure := 'TIU TEMPLATE DELETE';
+      Param[0].PType := list;
+      for i := 0 to DelList.Count-1 do
+        Param[0].Mult[IntToStr(i+1)] := DelList[i];
+      CallBroker;
+    end;
+  end;
+end;
+
+procedure GetObjectList;
+begin
+  CallV('TIU GET LIST OF OBJECTS', []);
+end;
+
+procedure GetAllowedPersonalObjects;
+begin
+  CallV('TIU TEMPLATE PERSONAL OBJECTS', []);
+end;
+
+procedure TestBoilerplate(BoilerPlate: TStrings);
+var
+  i: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU TEMPLATE CHECK BOILERPLATE';
+    Param[0].PType := list;
+    for i := 0 to BoilerPlate.Count-1 do
+      Param[0].Mult['2,'+IntToStr(i+1)+',0'] := BoilerPlate[i];
+    CallBroker;
+  end;
+end;
+
+function GetTemplateAccess(ID: string): integer;
+begin
+  Result := StrToIntDef(sCallV('TIU TEMPLATE ACCESS LEVEL', [ID, User.DUZ, Encounter.Location]), 0);
+end;
+
+function SubSetOfBoilerplatedTitles(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('TIU LONG LIST BOILERPLATED', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetTitleBoilerplate(TitleIEN: string): string;
+begin
+  CallV('TIU GET BOILERPLATE', [TitleIEN]);
+  Result := RPCBrokerV.Results.Text;
+end;
+
+function GetUserTemplateDefaults(LoadFromServer: boolean = FALSE): string;
+begin
+  if(LoadFromServer) then
+  uUserTemplateDefaults := sCallV('TIU TEMPLATE GET DEFAULTS', []);
+  Result := uUserTemplateDefaults;
+end;
+
+procedure SetUserTemplateDefaults(Value: string; PieceNum: integer);
+begin
+  SetPiece(uUserTemplateDefaults, '/', PieceNum, Value);
+end;
+
+procedure SaveUserTemplateDefaults;
+begin
+  CallV('TIU TEMPLATE SET DEFAULTS', [uUserTemplateDefaults]);
+end;
+
+procedure LoadTemplateDescription(TemplateIEN: string);
+begin
+  CallV('TIU TEMPLATE GET DESCRIPTION', [TemplateIEN]);
+end;
+
+function GetTemplateAllowedReminderDialogs: TStrings;
+var
+  TmpList: TStringList;
+
+begin
+  CallV('TIU REMINDER DIALOGS', []);
+  TmpList := TStringList.Create;
+  try
+    FastAssign(RPCBrokerV.Results, TmpList);
+    SortByPiece(TmpList, U, 2);
+    MixedCaseList(TmpList);
+    FastAssign(TmpList, RPCBrokerV.Results);
+  finally
+    TmpList.Free;
+  end;
+  Result := RPCBrokerV.Results;
+end;
+
+function IsRemDlgAllowed(RemDlgIEN: string): integer;
+// -1 = inactive or deleted, 0 = not in Param, 1 = allowed
+begin
+  Result := StrToIntDef(sCallV('TIU REM DLG OK AS TEMPLATE', [RemDlgIEN]),-1);
+end;
+
+function LockTemplate(const ID: string): boolean; // returns true if successful
+begin
+  Result := (sCallV('TIU TEMPLATE LOCK', [ID]) = '1')
+end;
+
+procedure UnlockTemplate(const ID: string);
+begin
+  CallV('TIU TEMPLATE UNLOCK', [ID]);
+end;
+
+function GetLinkedTemplateData(const Link: string): string;
+begin
+  Result := sCallV('TIU TEMPLATE GETLINK', [Link]);
+end;
+
+function SubSetOfAllTitles(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('TIU TEMPLATE ALL TITLES', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+{ Template Fields }
+
+function SubSetOfTemplateFields(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('TIU FIELD LIST', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function LoadTemplateField(const DlgFld: string): TStrings;
+begin
+  CallV('TIU FIELD LOAD', [DlgFld]);
+  Result := RPCBrokerV.Results;
+end;
+
+function LoadTemplateFieldByIEN(const DlgFld: string): TStrings;
+begin
+  CallV('TIU FIELD LOAD BY IEN', [DlgFld]);
+  Result := RPCBrokerV.Results;
+end;
+
+function CanEditTemplateFields: boolean;
+begin
+  if(not uCanEditDlgFldChecked) then
+  begin
+    uCanEditDlgFldChecked := TRUE;
+    uCanEditDlgFlds := sCallV('TIU FIELD CAN EDIT', []) = '1';
+  end;
+  Result := uCanEditDlgFlds;
+end;
+
+function UpdateTemplateField(const ID: string; Fields: TStrings): string;
+begin
+  Result := UpdateTIURec('TIU FIELD SAVE', ID, Fields);
+end;
+
+function LockTemplateField(const ID: string): boolean; // returns true if successful
+begin
+  Result := (sCallV('TIU FIELD LOCK', [ID]) = '1')
+end;
+
+procedure UnlockTemplateField(const ID: string);
+begin
+  CallV('TIU FIELD UNLOCK', [ID]);
+end;
+
+procedure DeleteTemplateField(const ID: string);
+begin
+  CallV('TIU FIELD DELETE', [ID]);
+end;
+
+function CallImportExportTemplateFields(FldList: TStrings; RPCName: string): TStrings;
+var
+  i: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := RPCName;
+    Param[0].PType := list;
+    for i := 0 to FldList.Count-1 do
+      Param[0].Mult[IntToStr(i+1)] := FldList[i];
+    CallBroker;
+  end;
+  Result := RPCBrokerV.Results;
+end;
+
+function ExportTemplateFields(FldList: TStrings): TStrings;
+begin
+  Result := CallImportExportTemplateFields(FldList, 'TIU FIELD EXPORT');
+end;
+
+function ImportTemplateFields(FldList: TStrings): TStrings;
+begin
+  Result := CallImportExportTemplateFields(FldList, 'TIU FIELD IMPORT');
+end;
+
+procedure CheckTemplateFields(ResultString: TStrings);
+begin
+  CallV('TIU FIELD CHECK',[nil]);
+  FastAssign(RPCBrokerV.Results, ResultString);
+end;
+
+function IsTemplateFieldNameUnique(const FldName, IEN: string): boolean;
+begin
+  Result := sCallV('TIU FIELD NAME IS UNIQUE', [FldName, IEN]) = '1';
+end;
+
+procedure Convert2LMText(Text: TStringList);
+var
+  i: integer;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU FIELD DOLMTEXT';
+    Param[0].PType := list;
+    for i := 0 to Text.Count-1 do
+      Param[0].Mult[IntToStr(i+1)+',0'] := Text[i];
+    CallBroker;
+  end;
+  FastAssign(RPCBrokerV.Results, Text);
+end;
+
+function BuildTemplateFields(XMLString: TStrings): boolean;   //Simply builds XML fields on the server
+var                                                           //in chunks.
+  i,j,p1: integer;
+  ok: boolean;
+
+  procedure reset_broker;
+  begin
+    with RPCBrokerV do begin
+      ClearParameters := True;
+      RemoteProcedure := 'TIU FIELD LIST ADD';
+      Param[0].PType := list;
+    end;
+  end;
+
+begin
+  ok := TRUE;
+  with RPCBrokerV do
+  begin
+    reset_broker;
+    j := 1;
+    for i := 0 to XMLString.Count-1 do begin
+      p1 := pos('<FIELD NAME="',XMLString[i]);
+      if (p1 > 0) and (pos('">',copy(XMLString[i],p1+13,maxint)) > 0) then begin
+        j := j + 1;
+        if (j > 50) then begin
+          j := 1;
+          CallBroker;
+          if pos('1',Results[0]) = 0 then begin
+            ok := FALSE;
+            break;
+          end;//if
+          reset_broker;
+        end;//if
+      end;//if
+      Param[0].Mult[IntToStr(i+1)] := XMLString[i];
+    end;//for
+    if ok then begin
+      CallBroker;
+      if pos('1',Results[0]) = 0 then ok := FALSE;
+    end;//if
+  end;
+  Result := ok;
+end;
+
+function ImportLoadedFields(ResultSet: TStrings): boolean;
+begin
+  Result := TRUE;
+  CallV('TIU FIELD LIST IMPORT',[nil]);
+  FastAssign(RPCBrokerV.Results, ResultSet);
+  if ResultSet.Count < 1 then
+    Result := FALSE;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/uTemplateFields.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/uTemplateFields.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/uTemplateFields.pas	(revision 1676)
@@ -0,0 +1,2555 @@
+unit uTemplateFields;
+
+interface
+
+uses
+  Forms, SysUtils, Classes, Dialogs, StdCtrls, ExtCtrls, Controls, Contnrs,
+  Graphics, ORClasses, ComCtrls, ORDtTm, uDlgComponents, TypInfo, ORFn, StrUtils;
+
+type
+  TTemplateFieldType = (dftUnknown, dftEditBox, dftComboBox, dftButton, dftCheckBoxes,
+    dftRadioButtons, dftDate, dftNumber, dftHyperlink, dftWP, dftText,
+// keep dftScreenReader as last entry - users can not create this type of field
+    dftScreenReader);
+
+  TTmplFldDateType = (dtUnknown, dtDate, dtDateTime, dtDateReqTime,
+                                 dtCombo, dtYear, dtYearMonth);
+
+const
+  FldItemTypes  = [dftComboBox, dftButton, dftCheckBoxes, dftRadioButtons, dftWP, dftText];
+  SepLinesTypes = [dftCheckBoxes, dftRadioButtons];
+  EditLenTypes  = [dftEditBox, dftComboBox, dftWP];
+  EditDfltTypes = [dftEditBox, dftHyperlink];
+  EditDfltType2 = [dftEditBox, dftHyperlink, dftDate];
+  ItemDfltTypes = [dftComboBox, dftButton, dftCheckBoxes, dftRadioButtons];
+  NoRequired    = [dftHyperlink, dftText];
+  ExcludeText   = [dftHyperlink, dftText];
+  DateComboTypes = [dtCombo, dtYear, dtYearMonth];
+
+type
+  TTemplateDialogEntry = class(TObject)
+  private
+    FID: string;
+    FFont: TFont;
+    FPanel: TDlgFieldPanel;
+    FControls: TStringList;
+    FIndents: TStringList;
+    FFirstBuild: boolean;
+    FOnChange: TNotifyEvent;
+    FText: string;
+    FInternalID: string;
+    FObj: TObject;
+    FFieldValues: string;
+    FUpdating: boolean;
+    FAutoDestroyOnPanelFree: boolean;
+    FPanelDying: boolean;
+    FOnDestroy: TNotifyEvent;
+    procedure KillLabels;
+    function GetFieldValues: string;
+    procedure SetFieldValues(const Value: string);
+    procedure SetAutoDestroyOnPanelFree(const Value: boolean);
+    function StripCode(var txt: string; code: char): boolean;
+  protected
+    procedure UpDownChange(Sender: TObject);
+    procedure DoChange(Sender: TObject);
+    function GetControlText(CtrlID: integer; NoCommas: boolean;
+                            var FoundEntry: boolean; AutoWrap: boolean;
+                            emField: string = ''): string;
+    procedure SetControlText(CtrlID: integer; AText: string);
+  public
+    constructor Create(AParent: TWinControl; AID, Text: string);
+    destructor Destroy; override;
+    function GetPanel(MaxLen: integer; AParent: TWinControl;
+                      OwningCheckBox: TCPRSDialogParentCheckBox): TDlgFieldPanel;
+    function GetText: string;
+    property Text: string read FText write FText;
+    property InternalID: string read FInternalID write FInternalID;
+    property ID: string read FID;
+    property Obj: TObject read FObj write FObj;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
+    property FieldValues: string read GetFieldValues write SetFieldValues;
+    property AutoDestroyOnPanelFree: boolean read FAutoDestroyOnPanelFree
+                                             write SetAutoDestroyOnPanelFree;
+  end;
+
+  TTemplateField = class(TObject)
+  private
+    FMaxLen: integer;
+    FFldName: string;
+    FNameChanged: boolean;
+    FLMText: string;
+    FEditDefault: string;
+    FNotes: string;
+    FItems: string;
+    FInactive: boolean;
+    FItemDefault: string;
+    FFldType: TTemplateFieldType;
+    FRequired: boolean;
+    FSepLines: boolean;
+    FTextLen: integer;
+    FIndent: integer;
+    FPad: integer;
+    FMinVal: integer;
+    FMaxVal: integer;
+    FIncrement: integer;
+    FURL: string;
+    FDateType: TTmplFldDateType;
+    FModified: boolean;
+    FID: string;
+    FLocked: boolean;
+    procedure SetEditDefault(const Value: string);
+    procedure SetFldName(const Value: string);
+    procedure SetFldType(const Value: TTemplateFieldType);
+    procedure SetInactive(const Value: boolean);
+    procedure SetRequired(const Value: boolean);
+    procedure SetSepLines(const Value: boolean);
+    procedure SetItemDefault(const Value: string);
+    procedure SetItems(const Value: string);
+    procedure SetLMText(const Value: string);
+    procedure SetMaxLen(const Value: integer);
+    procedure SetNotes(const Value: string);
+    procedure SetID(const Value: string);
+    procedure SetIncrement(const Value: integer);
+    procedure SetIndent(const Value: integer);
+    procedure SetMaxVal(const Value: integer);
+    procedure SetMinVal(const Value: integer);
+    procedure SetPad(const Value: integer);
+    procedure SetTextLen(const Value: integer);
+    procedure SetURL(const Value: string);
+    function GetTemplateFieldDefault: string;
+    procedure CreateDialogControls(Entry: TTemplateDialogEntry;
+                                   var Index: Integer; CtrlID: integer);
+    function SaveError: string;
+    function Width: integer;
+    function GetRequired: boolean;
+    procedure SetDateType(const Value: TTmplFldDateType);
+  public
+    constructor Create(AData: TStrings);
+    destructor Destroy; override;
+    procedure Assign(AFld: TTemplateField);
+    function NewField: boolean;
+    function CanModify: boolean;
+    property ID: string read FID write SetID;
+    property FldName: string read FFldName write SetFldName;
+    property NameChanged: boolean read FNameChanged;
+    property FldType: TTemplateFieldType read FFldType write SetFldType;
+    property MaxLen: integer read FMaxLen write SetMaxLen;
+    property EditDefault: string read FEditDefault write SetEditDefault;
+    property Items: string read FItems write SetItems;
+    property ItemDefault: string read FItemDefault write SetItemDefault;
+    property LMText: string read FLMText write SetLMText;
+    property Inactive: boolean read FInactive write SetInactive;
+    property Required: boolean read GetRequired write SetRequired;
+    property SepLines: boolean read FSepLines write SetSepLines;
+    property TextLen: integer read FTextLen write SetTextLen;
+    property Indent: integer read FIndent write SetIndent;
+    property Pad: integer read FPad write SetPad;
+    property MinVal: integer read FMinVal write SetMinVal;
+    property MaxVal: integer read FMaxVal write SetMaxVal;
+    property Increment: integer read FIncrement write SetIncrement;
+    property URL: string read FURL write SetURL;
+    property DateType: TTmplFldDateType read FDateType write SetDateType;
+    property Notes: string read FNotes write SetNotes;
+    property TemplateFieldDefault: string read GetTemplateFieldDefault;
+  end;
+
+  TIntStruc = class(TObject)
+  public
+    x: integer;
+  end;
+
+function GetDialogEntry(AParent: TWinControl; AID, AText: string): TTemplateDialogEntry;
+procedure FreeEntries(SL: TStrings);
+procedure AssignFieldIDs(var Txt: string); overload;
+procedure AssignFieldIDs(SL: TStrings); overload;
+function ResolveTemplateFields(Text: string; AutoWrap: boolean; Hidden: boolean = FALSE; IncludeEmbedded: boolean = FALSE): string;
+function AreTemplateFieldsRequired(const Text: string; FldValues: TORStringList =  nil): boolean;
+function HasTemplateField(txt: string): boolean;
+
+function GetTemplateField(ATemplateField: string; ByIEN: boolean): TTemplateField;
+function TemplateFieldNameProblem(Fld: TTemplateField): boolean;
+function SaveTemplateFieldErrors: string;
+procedure ClearModifiedTemplateFields;
+function AnyTemplateFieldsModified: boolean;
+procedure ListTemplateFields(const AText: string; AList: TStrings; ListErrors: boolean = FALSE);
+function BoilerplateTemplateFieldsOK(const AText: string; Msg: string = ''): boolean;
+procedure EnsureText(edt: TEdit; ud: TUpDown);
+procedure ConvertCodes2Text(sl: TStrings; Short: boolean);
+function StripEmbedded(iItems: string): string;
+procedure StripScreenReaderCodes(var Text: string); overload;
+procedure StripScreenReaderCodes(SL: TStrings); overload;
+function HasScreenReaderBreakCodes(SL: TStrings): boolean;
+
+const
+  TemplateFieldSignature = '{FLD';
+  TemplateFieldBeginSignature = TemplateFieldSignature + ':';
+  TemplateFieldEndSignature = '}';
+  ScreenReaderCodeSignature = '{SR-';
+  ScreenReaderCodeType = '  Screen Reader Code';
+  ScreenReaderCodeCount = 2;
+  ScreenReaderShownCount = 1;
+  ScreenReaderStopCode = ScreenReaderCodeSignature + 'STOP' + TemplateFieldEndSignature;
+  ScreenReaderStopCodeLen = Length(ScreenReaderStopCode);
+  ScreenReaderStopCodeID = '-43';
+  ScreenReaderStopName = 'SCREEN READER STOP CODE **';
+  ScreenReaderStopCodeLine = ScreenReaderStopCodeID + U + ScreenReaderStopName + U + ScreenReaderCodeType;
+  ScreenReaderContinueCode = ScreenReaderCodeSignature + 'CONT' + TemplateFieldEndSignature;
+  ScreenReaderContinueCodeLen = Length(ScreenReaderContinueCode);
+  ScreenReaderContinueCodeOld = ScreenReaderCodeSignature + 'CONTINUE' + TemplateFieldEndSignature;
+  ScreenReaderContinueCodeOldLen = Length(ScreenReaderContinueCodeOld);
+  ScreenReaderContinueCodeID = '-44';
+  ScreenReaderContinueCodeName = 'SCREEN READER CONTINUE CODE ***';
+  ScreenReaderContinueCodeLine = ScreenReaderContinueCodeID + U + ScreenReaderContinueCodeName + U + ScreenReaderCodeType;
+  MissingFieldsTxt = 'One or more required fields must still be entered.';
+
+  ScreenReaderCodes:     array[0..ScreenReaderCodeCount] of string  =
+      (ScreenReaderStopCode, ScreenReaderContinueCode, ScreenReaderContinueCodeOld);
+  ScreenReaderCodeLens:  array[0..ScreenReaderCodeCount] of integer =
+      (ScreenReaderStopCodeLen, ScreenReaderContinueCodeLen, ScreenReaderContinueCodeOldLen);
+  ScreenReaderCodeIDs:   array[0..ScreenReaderShownCount] of string  =
+      (ScreenReaderStopCodeID, ScreenReaderContinueCodeID);
+  ScreenReaderCodeLines: array[0..ScreenReaderShownCount] of string  =
+      (ScreenReaderStopCodeLine, ScreenReaderContinueCodeLine); 
+
+  TemplateFieldTypeCodes: array[TTemplateFieldType] of string[1] =
+                         {  dftUnknown      } ('',
+                         {  dftEditBox      }  'E',
+                         {  dftComboBox     }  'C',
+                         {  dftButton       }  'B',
+                         {  dftCheckBoxes   }  'X',
+                         {  dftRadioButtons }  'R',
+                         {  dftDate         }  'D',
+                         {  dftNumber       }  'N',
+                         {  dftHyperlink    }  'H',
+                         {  dftWP           }  'W',
+                         {  dftText         }  'T',
+                         {  dftScreenReader }  'S');
+
+  TemplateFieldTypeDesc: array[TTemplateFieldType, boolean] of string =
+                         {  dftUnknown      } (('',''),
+                         {  dftEditBox      }  ('Edit Box',           'Edit'),
+                         {  dftComboBox     }  ('Combo Box',          'Combo'),
+                         {  dftButton       }  ('Button',             'Button'),
+                         {  dftCheckBoxes   }  ('Check Boxes',        'Check'),
+                         {  dftRadioButtons }  ('Radio Buttons',      'Radio'),
+                         {  dftDate         }  ('Date',               'Date'),
+                         {  dftNumber       }  ('Number',             'Num'),
+                         {  dftHyperlink    }  ('Hyperlink',          'Link'),
+                         {  dftWP           }  ('Word Processing',    'WP'),
+                         {  dftText         }  ('Display Text',       'Text'),
+                         {  dftScreenReader }  ('Screen Reader Stop', 'SRStop'));
+
+  TemplateDateTypeDesc: array[TTmplFldDateType, boolean] of string =
+                         { dtUnknown        } (('',''),
+                         { dtDate           }  ('Date',           'Date'),
+                         { dtDateTime       }  ('Date & Time',    'Time'),
+                         { dtDateReqTime    }  ('Date & Req Time','R.Time'),
+                         { dtCombo          }  ('Date Combo',     'C.Date'),
+                         { dtYear           }  ('Year',           'Year'),
+                         { dtYearMonth      }  ('Year & Month',   'Month'));
+
+  FldNames: array[TTemplateFieldType] of string =
+                   { dftUnknown      }  ('',
+                   { dftEditBox      }  'EDIT',
+                   { dftComboBox     }  'LIST',
+                   { dftButton       }  'BTTN',
+                   { dftCheckBoxes   }  'CBOX',
+                   { dftRadioButtons }  'RBTN',
+                   { dftDate         }  'DATE',
+                   { dftNumber       }  'NUMB',
+                   { dftHyperlink    }  'LINK',
+                   { dftWP           }  'WRDP',
+                   { dftTExt         }  'TEXT',
+                   { dftScreenReader }  'SRST');
+
+  TemplateFieldDateCodes: array[TTmplFldDateType] of string[1] =
+                         { dtUnknown        } ('',
+                         { dtDate           }  'D',
+                         { dtDateTime       }  'T',
+                         { dtDateReqTime    }  'R',
+                         { dtCombo          }  'C',
+                         { dtYear           }  'Y',
+                         { dtYearMonth      }  'M');
+
+  MaxTFWPLines = 20;
+  MaxTFEdtLen = 70;
+  
+implementation
+
+uses
+  rTemplates, ORCtrls, mTemplateFieldButton, dShared, uConst, uCore, rCore, Windows,
+  VAUtils, VA508AccessibilityManager, VA508AccessibilityRouter;
+
+const
+  NewTemplateField = 'NEW TEMPLATE FIELD';
+  TemplateFieldSignatureLen = length(TemplateFieldBeginSignature);
+  TemplateFieldSignatureEndLen = length(TemplateFieldEndSignature);
+
+var
+  uTmplFlds: TList = nil;
+  uEntries: TStringList = nil;
+
+  uNewTemplateFieldIDCnt: longint = 0;
+  uRadioGroupIndex: integer = 0;
+
+  uInternalFieldIDCount: integer = 0;
+
+const
+  FieldIDDelim = '`';
+  FieldIDLen = 6;
+  NewLine = 'NL';
+
+function GetNewFieldID: string;
+begin
+  inc(uInternalFieldIDCount);
+  Result := IntToStr(uInternalFieldIDCount);
+  Result := FieldIDDelim +
+            copy(StringOfChar('0', FieldIDLen-2) + Result, length(Result), FieldIDLen-1);
+end;
+
+function GetDialogEntry(AParent: TWinControl; AID, AText: string): TTemplateDialogEntry;
+var
+  idx: integer;
+
+begin
+  Result := nil;
+  if AID = '' then exit;
+  if(not assigned(uEntries)) then
+    uEntries := TStringList.Create;
+  idx := uEntries.IndexOf(AID);
+  if(idx < 0) then
+  begin
+    Result := TTemplateDialogEntry.Create(AParent, AID, AText);
+    uEntries.AddObject(AID, Result);
+  end
+  else
+    Result := TTemplateDialogEntry(uEntries.Objects[idx]);
+end;
+
+procedure FreeEntries(SL: TStrings);
+var
+  i, idx, cnt: integer;
+
+begin
+  if(assigned(uEntries)) then
+  begin
+    for i := SL.Count-1 downto 0 do
+    begin
+      idx := uEntries.IndexOf(SL[i]);
+      if(idx >= 0) then
+      begin
+        cnt := uEntries.Count;
+        if(assigned(uEntries.Objects[idx])) then
+        begin
+          TTemplateDialogEntry(uEntries.Objects[idx]).AutoDestroyOnPanelFree := FALSE;
+          uEntries.Objects[idx].Free;
+        end;
+        if cnt = uEntries.Count then
+          uEntries.Delete(idx);
+      end;
+    end;
+    if(uEntries.Count = 0) then
+      uInternalFieldIDCount := 0;
+  end;
+end;
+
+procedure AssignFieldIDs(var Txt: string);
+var
+  i: integer;
+
+begin
+  i := 0;
+  while (i < length(Txt)) do
+  begin
+    inc(i);
+    if(copy(Txt,i,TemplateFieldSignatureLen) = TemplateFieldBeginSignature) then
+    begin
+      inc(i,TemplateFieldSignatureLen);
+      if(i < length(Txt)) and (copy(Txt,i,1) <> FieldIDDelim) then
+      begin
+        insert(GetNewFieldID, Txt, i);
+        inc(i, FieldIDLen);
+      end;
+    end;
+  end;
+end;
+
+procedure AssignFieldIDs(SL: TStrings);
+var
+  i: integer;
+  txt: string;
+
+begin
+  for i := 0 to SL.Count-1 do
+  begin
+    txt := SL[i];
+    AssignFieldIDs(txt);
+    SL[i] := txt;
+  end;
+end;
+
+procedure WordWrapText(var Txt: string);
+var
+  TmpSL: TStringList;
+  i: integer;
+
+  function WrappedText(const Str: string): string;
+  var
+    i, i2, j, k: integer;
+    Temp: string;
+
+  begin
+    Temp := Str;
+    Result := '';
+    i2 := 0;
+
+    repeat
+      i := pos(TemplateFieldBeginSignature, Temp);
+
+      if i>0 then
+        j := pos(TemplateFieldEndSignature, copy(Temp, i, MaxInt))
+      else
+        j := 0;
+
+      if (j > 0) then
+        begin
+        i2 := pos(TemplateFieldBeginSignature, copy(Temp, i+TemplateFieldSignatureLen, MaxInt));
+        if (i2 = 0) then
+          i2 := MaxInt
+        else
+          i2 := i + TemplateFieldSignatureLen + i2 - 1;
+        end;
+
+      if (i>0) and (j=0) then
+        i := 0;
+
+      if (i>0) and (j>0) then
+        if (j > i2) then
+          begin
+          Result := Result + copy(Temp, 1, i2-1);
+          delete(Temp, 1, i2-1);
+          end
+        else
+          begin
+          for k := (i+TemplateFieldSignatureLen) to (i+j-2) do
+            if Temp[k]=' ' then
+              Temp[k]:= #1;
+          i := i + j - 1;
+          Result := Result + copy(Temp,1,i);
+          delete(Temp,1,i);
+          end;
+
+    until (i = 0);
+
+    Result := Result + Temp;
+    Result := WrapText(Result, #13#10, [' '], MAX_ENTRY_WIDTH);
+    repeat
+      i := pos(#1, Result);
+      if i > 0 then
+        Result[i] := ' ';
+    until i = 0;
+  end;
+
+begin
+  if length(Txt) > MAX_ENTRY_WIDTH then
+  begin
+    TmpSL := TStringList.Create;
+    try
+      TmpSL.Text := Txt;
+      Txt := '';
+      for i := 0 to TmpSL.Count-1 do
+      begin
+        if Txt <> '' then
+          Txt := Txt + CRLF;
+        Txt := Txt + WrappedText(TmpSL[i]);
+      end;
+    finally
+      TmpSL.Free;
+    end;
+  end;
+end;
+
+function ResolveTemplateFields(Text: string;
+                               AutoWrap: boolean;
+                               Hidden: boolean = FALSE;
+                               IncludeEmbedded: boolean = FALSE): string;
+var
+  flen, CtrlID, i, j: integer;
+  Entry: TTemplateDialogEntry;
+  iField, Temp, NewTxt, Fld: string;
+  FoundEntry: boolean;
+  TmplFld: TTemplateField;
+
+  procedure AddNewTxt;
+  begin
+    if(NewTxt <> '') then
+    begin
+      insert(StringOfChar('x',length(NewTxt)), Temp, i);
+      insert(NewTxt, Result, i);
+      inc(i, length(NewTxt));
+    end;
+  end;
+
+begin
+  if(not assigned(uEntries)) then
+    uEntries := TStringList.Create;
+  Result := Text;
+  Temp := Text; // Use Temp to allow template fields to contain other template field references
+  repeat
+    i := pos(TemplateFieldBeginSignature, Temp);
+    if(i > 0) then
+    begin
+      CtrlID := 0;
+      if(copy(Temp, i + TemplateFieldSignatureLen, 1) = FieldIDDelim) then
+      begin
+        CtrlID := StrToIntDef(copy(Temp, i + TemplateFieldSignatureLen + 1, FieldIDLen-1), 0);
+        delete(Temp,i + TemplateFieldSignatureLen, FieldIDLen);
+        delete(Result,i + TemplateFieldSignatureLen, FieldIDLen);
+      end;
+      j := pos(TemplateFieldEndSignature, copy(Temp, i + TemplateFieldSignatureLen, MaxInt));
+      Fld := '';
+      if(j > 0) then
+      begin
+        inc(j, i + TemplateFieldSignatureLen - 1);
+        flen := j - i - TemplateFieldSignatureLen;
+        Fld := copy(Temp,i + TemplateFieldSignatureLen, flen);
+        delete(Temp,i,flen + TemplateFieldSignatureLen + 1);
+        delete(Result,i,flen + TemplateFieldSignatureLen + 1);
+      end
+      else
+      begin
+        delete(Temp,i,TemplateFieldSignatureLen);
+        delete(Result,i,TemplateFieldSignatureLen);
+      end;
+      if(CtrlID > 0) then
+      begin
+        FoundEntry := FALSE;
+        for j := 0 to uEntries.Count-1 do
+        begin
+          Entry := TTemplateDialogEntry(uEntries.Objects[j]);
+          if(assigned(Entry)) then
+          begin
+            if IncludeEmbedded then
+              iField := Fld
+            else
+              iField := '';
+            NewTxt := Entry.GetControlText(CtrlID, FALSE, FoundEntry, AutoWrap, iField);
+            TmplFld := GetTemplateField(Fld, FALSE);
+            if (assigned(TmplFld)) and (TmplFld.DateType in DateComboTypes) then {if this is a TORDateBox}
+               NewTxt := Piece(NewTxt,':',1);          {we only want the first piece of NewTxt}
+            AddNewTxt;
+          end;
+          if FoundEntry then break;
+        end;
+        if Hidden and (not FoundEntry) and (Fld <> '') then
+        begin
+          NewTxt := TemplateFieldBeginSignature + Fld + TemplateFieldEndSignature;
+          AddNewTxt;
+        end;
+      end;
+    end;
+  until(i = 0);
+  if not AutoWrap then
+    WordWrapText(Result);
+end;
+
+function AreTemplateFieldsRequired(const Text: string; FldValues: TORStringList =  nil): boolean;
+var
+  flen, CtrlID, i, j: integer;
+  Entry: TTemplateDialogEntry;
+  Fld: TTemplateField;
+  Temp, NewTxt, FldName: string;
+  FoundEntry: boolean;
+
+begin
+  if(not assigned(uEntries)) then
+    uEntries := TStringList.Create;
+  Temp := Text;
+  Result := FALSE;
+  repeat
+    i := pos(TemplateFieldBeginSignature, Temp);
+    if(i > 0) then
+    begin
+      CtrlID := 0;
+      if(copy(Temp, i + TemplateFieldSignatureLen, 1) = FieldIDDelim) then
+      begin
+        CtrlID := StrToIntDef(copy(Temp, i + TemplateFieldSignatureLen + 1, FieldIDLen-1), 0);
+        delete(Temp,i + TemplateFieldSignatureLen, FieldIDLen);
+      end;
+      j := pos(TemplateFieldEndSignature, copy(Temp, i + TemplateFieldSignatureLen, MaxInt));
+      if(j > 0) then
+      begin
+        inc(j, i + TemplateFieldSignatureLen - 1);
+        flen := j - i - TemplateFieldSignatureLen;
+        FldName := copy(Temp, i + TemplateFieldSignatureLen, flen);
+        Fld := GetTemplateField(FldName, FALSE);
+        delete(Temp,i,flen + TemplateFieldSignatureLen + 1);
+      end
+      else
+      begin
+        delete(Temp,i,TemplateFieldSignatureLen);
+        Fld := nil;
+      end;
+      if(CtrlID > 0) and (assigned(Fld)) and (Fld.Required) then
+      begin
+        FoundEntry := FALSE;
+        for j := 0 to uEntries.Count-1 do
+        begin
+          Entry := TTemplateDialogEntry(uEntries.Objects[j]);
+          if(assigned(Entry)) then
+          begin
+            NewTxt := Entry.GetControlText(CtrlID, TRUE, FoundEntry, FALSE);
+            if FoundEntry and (NewTxt = '') then
+              Result := TRUE;
+          end;
+          if FoundEntry then break;
+        end;
+        if (not FoundEntry) and assigned(FldValues) then
+        begin
+          j := FldValues.IndexOfPiece(IntToStr(CtrlID));
+          if(j < 0) or (Piece(FldValues[j],U,2) = '') then
+            Result := TRUE;
+        end;
+      end;
+    end;
+  until((i = 0) or Result);
+end;
+
+function HasTemplateField(txt: string): boolean;
+begin
+  Result := (pos(TemplateFieldBeginSignature, txt) > 0);
+end;
+
+function GetTemplateField(ATemplateField: string; ByIEN: boolean): TTemplateField;
+var
+  i, idx: integer;
+  AData: TStrings;
+
+begin
+  Result := nil;
+  if(not assigned(uTmplFlds)) then
+    uTmplFlds := TList.Create;
+  idx := -1;
+  for i := 0 to uTmplFlds.Count-1 do
+  begin
+    if(ByIEN) then
+    begin
+      if(TTemplateField(uTmplFlds[i]).FID = ATemplateField) then
+      begin
+        idx := i;
+        break;
+      end;
+    end
+    else
+    begin
+      if(TTemplateField(uTmplFlds[i]).FFldName = ATemplateField) then
+      begin
+        idx := i;
+        break;
+      end;
+    end;
+  end;
+  if(idx < 0) then
+  begin
+    if(ByIEN) then
+      AData := LoadTemplateFieldByIEN(ATemplateField)
+    else
+      AData := LoadTemplateField(ATemplateField);
+    if(AData.Count > 1) then
+      Result := TTemplateField.Create(AData);
+  end
+  else
+    Result := TTemplateField(uTmplFlds[idx]);
+end;
+
+function TemplateFieldNameProblem(Fld: TTemplateField): boolean;
+const
+  DUPFLD = 'Field Name is not unique';
+
+var
+  i: integer;
+  msg: string;
+
+begin
+  msg := '';
+  if(Fld.FldName = NewTemplateField) then
+    msg := 'Field Name can not be ' + NewTemplateField
+  else
+  if(length(Fld.FldName) < 3) then
+    msg := 'Field Name must be at least three characters in length'
+  else
+  if(not (Fld.FldName[1] in ['A'..'Z','0'..'9'])) then
+    msg := 'First Field Name character must be "A" - "Z", or "0" - "9"'
+  else
+  if(assigned(uTmplFlds)) then
+  begin
+    for i := 0 to uTmplFlds.Count-1 do
+    begin
+      if(Fld <> uTmplFlds[i]) and
+        (CompareText(TTemplateField(uTmplFlds[i]).FFldName, Fld.FFldName) = 0) then
+      begin
+        msg := DUPFLD;
+        break;
+      end;
+    end;
+  end;
+  if(msg = '') and (not IsTemplateFieldNameUnique(Fld.FFldName, Fld.ID)) then
+    msg := DUPFLD;
+  Result := (msg <> '');
+  if(Result) then
+    ShowMsg(msg);
+end;
+
+function SaveTemplateFieldErrors: string;
+var
+  i: integer;
+  Errors: TStringList;
+  Fld: TTemplateField;
+  msg: string;
+
+begin
+  Result := '';
+  if(assigned(uTmplFlds)) then
+  begin
+    Errors := nil;
+    try
+      for i := 0 to uTmplFlds.Count-1 do
+      begin
+        Fld := TTemplateField(uTmplFlds[i]);
+        if(Fld.FModified) then
+        begin
+          msg := Fld.SaveError;
+          if(msg <> '') then
+          begin
+            if(not assigned(Errors)) then
+            begin
+              Errors := TStringList.Create;
+              Errors.Add('The following template field save errors have occurred:');
+              Errors.Add('');
+            end;
+            Errors.Add('  ' + Fld.FldName + ': ' + msg);
+          end;
+        end;
+      end;
+    finally
+      if(assigned(Errors)) then
+      begin
+        Result := Errors.Text;
+        Errors.Free;
+      end;
+    end;
+  end;
+end;
+
+procedure ClearModifiedTemplateFields;
+var
+  i: integer;
+  Fld: TTemplateField;
+
+begin
+  if(assigned(uTmplFlds)) then
+  begin
+    for i := uTmplFlds.Count-1 downto 0 do
+    begin
+      Fld := TTemplateField(uTmplFlds[i]);
+      if(assigned(Fld)) and (Fld.FModified) then
+      begin
+        if Fld.FLocked then
+          UnlockTemplateField(Fld.FID);
+        Fld.Free;
+      end;
+    end;
+  end;
+end;
+
+function AnyTemplateFieldsModified: boolean;
+var
+  i: integer;
+
+begin
+  Result := FALSE;
+  if(assigned(uTmplFlds)) then
+  begin
+    for i := 0 to uTmplFlds.Count-1 do
+    begin
+      if(TTemplateField(uTmplFlds[i]).FModified) then
+      begin
+        Result := TRUE;
+        break;
+      end;
+    end;
+  end;
+end;
+
+procedure ListTemplateFields(const AText: string; AList: TStrings; ListErrors: boolean = FALSE);
+var
+  i, j, k, flen, BadCount: integer;
+  flddesc, tmp, fld: string;
+  TmpList: TStringList;
+  InactiveList: TStringList;
+  FldObj: TTemplateField;
+
+begin
+  if(AText = '') then exit;
+  BadCount := 0;
+  InactiveList := TStringList.Create;
+  try
+    TmpList := TStringList.Create;
+    try
+      TmpList.Text := AText;
+      for k := 0 to TmpList.Count-1 do
+      begin
+        tmp := TmpList[k];
+        repeat
+          i := pos(TemplateFieldBeginSignature, tmp);
+          if(i > 0) then
+          begin
+            fld := '';
+            j := pos(TemplateFieldEndSignature, copy(tmp, i + TemplateFieldSignatureLen, MaxInt));
+            if(j > 0) then
+            begin
+              inc(j, i + TemplateFieldSignatureLen - 1);
+              flen := j - i - TemplateFieldSignatureLen;
+              fld := copy(tmp,i + TemplateFieldSignatureLen, flen);
+              delete(tmp, i, flen + TemplateFieldSignatureLen + 1);
+            end
+            else
+            begin
+              delete(tmp,i,TemplateFieldSignatureLen);
+              inc(BadCount);
+            end;
+            if(fld <> '') then
+            begin
+              if ListErrors then
+              begin
+                FldObj := GetTemplateField(fld, FALSE);
+                if assigned(FldObj) then
+                begin
+                  if FldObj.Inactive then
+                    InactiveList.Add('  "' + fld + '"');
+                  flddesc := '';
+                end
+                else
+                  flddesc := '  "' + fld + '"';
+              end
+              else
+                flddesc := fld;
+              if(flddesc <> '') and (AList.IndexOf(flddesc) < 0) then
+                AList.Add(flddesc)
+            end;
+          end;
+        until (i = 0);
+      end;
+    finally
+      TmpList.Free;
+    end;
+    if ListErrors then
+    begin
+      if(AList.Count > 0) then
+        AList.Insert(0, 'The following template fields were not found:');
+      if (BadCount > 0) then
+      begin
+        if(BadCount = 1) then
+          tmp := 'A template field marker "' + TemplateFieldBeginSignature +
+                 '" was found without a'
+        else
+          tmp := IntToStr(BadCount) + ' template field markers "' + TemplateFieldBeginSignature +
+                 '" were found without';
+        if(AList.Count > 0) then
+          AList.Add('');
+        AList.Add(tmp + ' matching "' + TemplateFieldEndSignature + '"');
+      end;
+      if(InactiveList.Count > 0) then
+      begin
+        if(AList.Count > 0) then
+          AList.Add('');
+        AList.Add('The following inactive template fields were found:');
+        FastAddStrings(InactiveList, AList);
+      end;
+      if(AList.Count > 0) then
+      begin
+        AList.Insert(0, 'Text contains template field errors:');
+        AList.Insert(1, '');
+      end;
+    end;
+  finally
+    InactiveList.Free;
+  end;
+end;
+
+function BoilerplateTemplateFieldsOK(const AText: string; Msg: string = ''): boolean;
+var
+  Errors: TStringList;
+  btns: TMsgDlgButtons;
+
+begin
+  Result := TRUE;
+  Errors := TStringList.Create;
+  try
+    ListTemplateFields(AText, Errors, TRUE);
+    if(Errors.Count > 0) then
+    begin
+      if(Msg = 'OK') then
+        btns := [mbOK]
+      else
+      begin
+        btns := [mbAbort, mbIgnore];
+        Errors.Add('');
+        if(Msg = '') then
+          Msg := 'text insertion';
+        Errors.Add('Do you want to Abort ' + Msg + ', or Ignore the error and continue?');
+      end;
+      Result := (MessageDlg(Errors.Text, mtError, btns, 0) = mrIgnore);
+    end;
+  finally
+    Errors.Free;
+  end;
+end;
+
+procedure EnsureText(edt: TEdit; ud: TUpDown);
+var
+  v: integer;
+  s: string;
+
+begin
+  if assigned(ud.Associate) then
+  begin
+    v := StrToIntDef(edt.Text, ud.Position);
+    if (v < ud.Min) or (v > ud.Max) then
+      v := ud.Position;
+    s := IntToStr(v);
+    if edt.Text <> s then
+      edt.Text := s;
+  end;
+  edt.SelStart := edt.GetTextLen;    
+end;
+
+function TemplateFieldCode2Field(const Code: string): TTemplateFieldType;
+var
+  typ: TTemplateFieldType;
+
+begin
+  Result := dftUnknown;
+  for typ := low(TTemplateFieldType) to high(TTemplateFieldType) do
+    if Code = TemplateFieldTypeCodes[typ] then
+    begin
+      Result := typ;
+      break;
+    end;
+end;
+
+function TemplateDateCode2DateType(const Code: string): TTmplFldDateType;
+var
+  typ: TTmplFldDateType;
+
+begin
+  Result := dtUnknown;
+  for typ := low(TTmplFldDateType) to high(TTmplFldDateType) do
+    if Code = TemplateFieldDateCodes[typ] then
+    begin
+      Result := typ;
+      break;
+    end;
+end;
+
+procedure ConvertCodes2Text(sl: TStrings; Short: boolean);
+var
+  i: integer;
+  tmp, output: string;
+  ftype: TTemplateFieldType;
+  dtype: TTmplFldDateType;
+
+begin
+  for i := 0 to sl.Count-1 do
+  begin
+    tmp := sl[i];
+    if piece(tmp,U,4) = BOOLCHAR[TRUE] then
+      output := '* '
+    else
+      output := '  ';
+    ftype := TemplateFieldCode2Field(Piece(tmp, U, 3));
+    if ftype = dftDate then
+    begin
+      dtype := TemplateDateCode2DateType(Piece(tmp, U, 5));
+      output := output + TemplateDateTypeDesc[dtype, short];
+    end
+    else
+      output := output + TemplateFieldTypeDesc[ftype, short];
+    SetPiece(tmp, U, 3, output);
+    sl[i] := tmp;
+  end;
+end;
+
+{ TTemplateField }
+
+constructor TTemplateField.Create(AData: TStrings);
+var
+  tmp, p1: string;
+  AFID, i,idx,cnt: integer;
+
+begin
+  AFID := 0;
+  if(assigned(AData)) then
+  begin
+    if AData.Count > 0 then
+      AFID := StrToIntDef(AData[0],0);
+    if(AFID > 0) and (AData.Count > 1) then
+    begin
+      FID := IntToStr(AFID);
+      FFldName := Piece(AData[1],U,1);
+      FFldType := TemplateFieldCode2Field(Piece(AData[1],U,2));
+      FInactive := (Piece(AData[1],U,3) = '1');
+      FMaxLen := StrToIntDef(Piece(AData[1],U,4),0);
+      FEditDefault := Piece(AData[1],U,5);
+      FLMText := Piece(AData[1],U,6);
+      idx := StrToIntDef(Piece(AData[1],U,7),0);
+      cnt := 0;
+      for i := 2 to AData.Count-1 do
+      begin
+        tmp := AData[i];
+        p1 := Piece(tmp,U,1);
+        tmp := Piece(tmp,U,2);
+        if(p1 = 'D') then
+          FNotes := FNotes + tmp + CRLF
+        else
+        if(p1 = 'U') then
+          FURL := tmp
+        else
+        if(p1 = 'I') then
+        begin
+          inc(cnt);
+          FItems := FItems + tmp + CRLF;
+          if(cnt=idx) then
+            FItemDefault := tmp;
+        end;
+      end;
+      FRequired  := (Piece(AData[1],U,8) = '1');
+      FSepLines  := (Piece(AData[1],U,9) = '1');
+      FTextLen   := StrToIntDef(Piece(AData[1],U,10),0);
+      FIndent    := StrToIntDef(Piece(AData[1],U,11),0);
+      FPad       := StrToIntDef(Piece(AData[1],U,12),0);
+      FMinVal    := StrToIntDef(Piece(AData[1],U,13),0);
+      FMaxVal    := StrToIntDef(Piece(AData[1],U,14),0);
+      FIncrement := StrToIntDef(Piece(AData[1],U,15),0);
+      FDateType  := TemplateDateCode2DateType(Piece(AData[1],U,16));
+      FModified  := FALSE;
+      FNameChanged := FALSE;
+    end;
+  end;
+  if(AFID = 0) then
+  begin
+    inc(uNewTemplateFieldIDCnt);
+    FID := IntToStr(-uNewTemplateFieldIDCnt);
+    FFldName := NewTemplateField;
+    FModified := TRUE;
+  end;
+  if(not assigned(uTmplFlds)) then
+    uTmplFlds := TList.Create;
+  uTmplFlds.Add(Self);
+end;
+
+function TTemplateField.GetTemplateFieldDefault: string;
+begin
+    case FFldType of
+      dftEditBox, dftNumber:  Result := FEditDefault;
+
+      dftComboBox,
+      dftButton,
+      dftCheckBoxes,          {Clear out embedded fields}
+      dftRadioButtons:        Result := StripEmbedded(FItemDefault);
+
+      dftDate:                if FEditDefault <> '' then Result := FEditDefault;
+
+      dftHyperlink, dftText:  if FEditDefault <> '' then
+                                 Result := StripEmbedded(FEditDefault)
+                              else
+                                 Result := URL;
+
+      dftWP:                  Result := Items;
+    end;
+end;
+
+procedure TTemplateField.CreateDialogControls(Entry: TTemplateDialogEntry;
+                                     var Index: Integer; CtrlID: integer);
+
+var
+  i, Aht, w, tmp, AWdth: integer;
+  STmp: string;
+  TmpSL: TStringList;
+  edt: TEdit;
+  cbo: TORComboBox;
+  cb: TORCheckBox;
+  btn: TfraTemplateFieldButton;
+  dbox: TORDateBox;
+  dcbo: TORDateCombo;
+  lbl: TCPRSTemplateFieldLabel;
+  re: TRichEdit;
+  pnl: TCPRSDialogNumber;
+  DefDate: TFMDateTime;
+  ctrl: TControl;
+
+  function wdth: integer;
+  begin
+    if(Awdth < 0) then
+      Awdth := FontWidthPixel(Entry.FFont.Handle);
+    Result := Awdth;
+  end;
+
+  function ht: integer;
+  begin
+    if(Aht < 0) then
+      Aht := FontHeightPixel(Entry.FFont.Handle);
+    Result := Aht;
+  end;
+
+  procedure UpdateIndents(AControl: TControl);
+  var
+    idx: integer;
+
+  begin
+    if (FIndent > 0) or (FPad > 0) then
+    begin
+      idx := Entry.FIndents.IndexOfObject(AControl);
+      if idx < 0 then
+        Entry.FIndents.AddObject(IntToStr(FIndent * wdth) + U + IntToStr(FPad), AControl);
+    end;
+  end;
+
+begin
+  if(not FInactive) and (FFldType <> dftUnknown) then
+  begin
+    AWdth := -1;
+    Aht := -1;
+    ctrl := nil;
+
+    case FFldType of
+      dftEditBox:
+        begin
+          edt := TCPRSDialogFieldEdit.Create(nil);
+          (edt as ICPRSDialogComponent).RequiredField := Required;
+          edt.Parent := Entry.FPanel;
+          edt.BorderStyle := bsNone;
+          edt.Height := ht;
+          edt.Width := (wdth * Width + 4);
+          if FTextLen > 0 then
+            edt.MaxLength := FTextLen
+          else
+            edt.MaxLength := FMaxLen;
+          edt.Text := FEditDefault;
+          edt.Tag := CtrlID;
+          edt.OnChange := Entry.DoChange;
+          UpdateColorsFor508Compliance(edt, TRUE);
+          ctrl := edt;
+        end;
+
+      dftComboBox:
+        begin
+          cbo := TCPRSDialogComboBox.Create(nil);
+          (cbo as ICPRSDialogComponent).RequiredField := Required;
+          cbo.Parent := Entry.FPanel;
+          cbo.TemplateField := TRUE;
+          w := Width;
+          cbo.MaxLength := w;
+          if FTextLen > 0 then
+            cbo.MaxLength := FTextLen
+          else
+            cbo.ListItemsOnly := TRUE;
+          {Clear out embedded fields}
+          cbo.Items.Text := StripEmbedded(Items);
+          cbo.SelectByID(StripEmbedded(FItemDefault));
+          cbo.Tag := CtrlID;
+          cbo.OnClick := Entry.DoChange;
+
+          if cbo.Items.Count > 12 then
+          begin
+            cbo.Width := (wdth * w) + ScrollBarWidth + 8;
+            cbo.DropDownCount := 12;
+          end
+          else
+          begin
+            cbo.Width := (wdth * w) + 18;
+            cbo.DropDownCount := cbo.Items.Count;
+          end;
+          UpdateColorsFor508Compliance(cbo, TRUE);
+          ctrl := cbo;
+        end;
+
+      dftButton:
+        begin
+          btn := TfraTemplateFieldButton.Create(nil);
+          (btn as ICPRSDialogComponent).RequiredField := Required;
+          btn.Parent := Entry.FPanel;
+          {Clear out embedded fields}
+          btn.Items.Text := StripEmbedded(Items);
+          btn.ButtonText := StripEmbedded(FItemDefault);
+          btn.Height := ht;
+          btn.Width := (wdth * Width) + 6;
+          btn.Tag := CtrlID;
+          btn.OnChange := Entry.DoChange;
+          UpdateColorsFor508Compliance(btn);
+          ctrl := btn;
+        end;
+
+      dftCheckBoxes, dftRadioButtons:
+        begin
+          if FFldType = dftRadioButtons then
+            inc(uRadioGroupIndex);
+          TmpSL := TStringList.Create;
+          try
+            {Clear out embedded fields}
+            TmpSL.Text := StripEmbedded(Items);
+            for i := 0 to TmpSL.Count-1 do
+            begin
+              cb := TCPRSDialogCheckBox.Create(nil);
+              if i = 0 then
+                (cb as ICPRSDialogComponent).RequiredField := Required;
+              cb.Parent := Entry.FPanel;
+              cb.Caption := TmpSL[i];
+              cb.AutoSize := TRUE;
+              cb.AutoAdjustSize;
+  //              cb.AutoSize := FALSE;
+  //              cb.Height := ht;
+              if FFldType = dftRadioButtons then
+              begin
+                cb.GroupIndex := uRadioGroupIndex;
+                cb.RadioStyle := TRUE;
+              end;
+              if(TmpSL[i] = StripEmbedded(FItemDefault)) then
+                cb.Checked := TRUE;
+              cb.Tag := CtrlID;
+              if FSepLines and (FFldType in SepLinesTypes) then
+                cb.StringData := NewLine;
+              cb.OnClick := Entry.DoChange;
+              UpdateColorsFor508Compliance(cb);
+              inc(Index);
+              Entry.FControls.InsertObject(Index, '', cb);
+              if (i=0) or FSepLines then
+                UpdateIndents(cb);
+            end;
+          finally
+            TmpSL.Free;
+          end;
+        end;
+
+      dftDate:
+        begin
+          if FEditDefault <> '' then
+            DefDate := StrToFMDateTime(FEditDefault)
+          else
+            DefDate := 0;
+          if FDateType in DateComboTypes then
+          begin
+            dcbo := TCPRSDialogDateCombo.Create(nil);
+            (dcbo as ICPRSDialogComponent).RequiredField := Required;
+            dcbo.Parent := Entry.FPanel;
+            dcbo.Tag := CtrlID;
+            dcbo.IncludeBtn := (FDateType = dtCombo);
+            dcbo.IncludeDay := (FDateType = dtCombo);
+            dcbo.IncludeMonth := (FDateType <> dtYear);
+            dcbo.FMDate := DefDate;
+            dcbo.TemplateField := TRUE;
+            dcbo.OnChange := Entry.DoChange;
+            UpdateColorsFor508Compliance(dcbo, TRUE);
+            ctrl := dcbo;
+          end
+          else
+          begin
+            dbox := TCPRSDialogDateBox.Create(nil);
+            (dbox as ICPRSDialogComponent).RequiredField := Required;
+            dbox.Parent := Entry.FPanel;
+            dbox.Tag := CtrlID;
+            dbox.DateOnly := (FDateType = dtDate);
+            dbox.RequireTime := (FDateType = dtDateReqTime);
+            dbox.TemplateField := TRUE;
+            dbox.FMDateTime := DefDate;
+            if (FDateType = dtDate) then
+              tmp := 11
+            else
+              tmp := 17;
+            dbox.Width := (wdth * tmp) + 18;
+            dbox.OnChange := Entry.DoChange;
+            UpdateColorsFor508Compliance(dbox, TRUE);
+            ctrl := dbox;
+          end;
+        end;
+
+      dftNumber:
+        begin
+          pnl := TCPRSDialogNumber.CreatePanel(nil);
+          (pnl as ICPRSDialogComponent).RequiredField := Required;
+          pnl.Parent := Entry.FPanel;
+          pnl.BevelOuter := bvNone;
+          pnl.Tag := CtrlID;
+          pnl.Edit.Height := ht;
+          pnl.Edit.Width := (wdth * 5 + 4);
+          pnl.UpDown.Min := MinVal;
+          pnl.UpDown.Max := MaxVal;
+          pnl.UpDown.Min := MinVal; // Both ud.Min settings are needeed!
+          i := Increment;
+          if i < 1 then i := 1;
+          pnl.UpDown.Increment := i;
+          pnl.UpDown.Position := StrToIntDef(EditDefault, 0);
+          pnl.Edit.OnChange := Entry.UpDownChange;
+          pnl.Height := pnl.Edit.Height;
+          pnl.Width := pnl.Edit.Width + pnl.UpDown.Width;
+          UpdateColorsFor508Compliance(pnl, TRUE);
+          ctrl := pnl;
+        end;
+
+      dftHyperlink, dftText:
+        begin
+          if (FFldType = dftHyperlink) and User.WebAccess then
+            lbl := TCPRSDialogHyperlinkLabel.Create(nil)
+          else
+            lbl := TCPRSTemplateFieldLabel.Create(nil);
+          lbl.Parent := Entry.FPanel;
+          lbl.ShowAccelChar := FALSE;
+          lbl.Exclude := FSepLines;
+          if (FFldType = dftHyperlink) then
+          begin
+            if FEditDefault <> '' then
+              lbl.Caption := StripEmbedded(FEditDefault)
+            else
+              lbl.Caption := URL;
+          end
+          else
+          begin
+            STmp := StripEmbedded(Items);
+            if copy(STmp,length(STmp)-1,2) = CRLF then
+              delete(STmp,length(STmp)-1,2);
+            lbl.Caption := STmp;
+          end;
+          if lbl is TCPRSDialogHyperlinkLabel then
+            TCPRSDialogHyperlinkLabel(lbl).Init(FURL);
+          lbl.Tag := CtrlID;
+          UpdateColorsFor508Compliance(lbl);
+          ctrl := lbl;
+        end;
+
+      dftWP:
+        begin
+          re := TCPRSDialogRichEdit.Create(nil);
+          (re as ICPRSDialogComponent).RequiredField := Required;
+          re.Parent := Entry.FPanel;
+          re.Tag := CtrlID;
+          tmp := FMaxLen;
+          if tmp < 5 then
+            tmp := 5;
+          re.Width := wdth * tmp;
+          tmp := FTextLen;
+          if tmp < 2 then
+            tmp := 2
+          else
+          if tmp > MaxTFWPLines then
+            tmp := MaxTFWPLines;
+          re.Height := ht * tmp;
+          re.BorderStyle := bsNone;
+          re.ScrollBars := ssVertical;
+          re.Lines.Text := Items;
+          re.OnChange := Entry.DoChange;
+          UpdateColorsFor508Compliance(re, TRUE);
+          ctrl := re;
+        end;
+    end;
+    if assigned(ctrl) then
+    begin
+      inc(Index);
+      Entry.FControls.InsertObject(Index, '', ctrl);
+      UpdateIndents(ctrl);
+    end;
+  end;
+end;
+
+function TTemplateField.CanModify: boolean;
+begin
+  if((not FModified) and (not FLocked) and (StrToIntDef(FID,0) > 0)) then
+  begin
+    FLocked := LockTemplateField(FID);
+    Result := FLocked;
+    if(not FLocked) then
+      ShowMsg('Template Field ' + FFldName + ' is currently being edited by another user.');
+  end
+  else
+    Result := TRUE;
+  if(Result) then FModified := TRUE;
+end;
+
+procedure TTemplateField.SetEditDefault(const Value: string);
+begin
+  if(FEditDefault <> Value) and CanModify then
+    FEditDefault := Value;
+end;
+
+procedure TTemplateField.SetFldName(const Value: string);
+begin
+  if(FFldName <> Value) and CanModify then
+  begin
+    FFldName := Value;
+    FNameChanged := TRUE;
+  end;
+end;
+
+procedure TTemplateField.SetFldType(const Value: TTemplateFieldType);
+begin
+  if(FFldType <> Value) and CanModify then
+  begin
+    FFldType := Value;
+    if(Value = dftEditBox) then
+    begin
+      if (FMaxLen < 1) then
+        FMaxLen := 1;
+      if FTextLen < FMaxLen then
+        FTextLen := FMaxLen;
+    end
+    else
+    if(Value = dftHyperlink) and (FURL = '') then
+      FURL := 'http://'
+    else
+    if(Value = dftComboBox) and (FMaxLen < 1) then
+    begin
+      FMaxLen := Width;
+      if FMaxLen < 1 then
+        FMaxLen := 1;
+    end
+    else
+    if(Value = dftWP) then
+    begin
+      if (FMaxLen = 0) then
+        FMaxLen := MAX_ENTRY_WIDTH
+      else
+      if (FMaxLen < 5) then
+          FMaxLen := 5;
+      if FTextLen < 2 then
+        FTextLen := 2;
+    end
+    else
+    if(Value = dftDate) and (FDateType = dtUnknown) then
+      FDateType := dtDate;
+  end;
+end;
+
+procedure TTemplateField.SetID(const Value: string);
+begin
+//  if(FID <> Value) and CanModify then
+    FID := Value;
+end;
+
+procedure TTemplateField.SetInactive(const Value: boolean);
+begin
+  if(FInactive <> Value) and CanModify then
+    FInactive := Value;
+end;
+
+procedure TTemplateField.SetItemDefault(const Value: string);
+begin
+  if(FItemDefault <> Value) and CanModify then
+    FItemDefault := Value;
+end;
+
+procedure TTemplateField.SetItems(const Value: string);
+begin
+  if(FItems <> Value) and CanModify then
+    FItems := Value;
+end;
+
+procedure TTemplateField.SetLMText(const Value: string);
+begin
+  if(FLMText <> Value) and CanModify then
+    FLMText := Value;
+end;
+
+procedure TTemplateField.SetMaxLen(const Value: integer);
+begin
+  if(FMaxLen <> Value) and CanModify then
+    FMaxLen := Value;
+end;
+
+procedure TTemplateField.SetNotes(const Value: string);
+begin
+  if(FNotes <> Value) and CanModify then
+    FNotes := Value;
+end;
+
+function TTemplateField.SaveError: string;
+var
+  TmpSL, FldSL: TStringList;
+  AID,Res: string;
+  idx, i: integer;
+  IEN64: Int64;
+  NewRec: boolean;
+
+begin
+  if(FFldName = NewTemplateField) then
+  begin
+    Result := 'Template Field can not be named "' + NewTemplateField + '"';
+    exit;
+  end;
+  Result := '';
+  NewRec := (StrToIntDef(FID,0) < 0);
+  if(FModified or NewRec) then
+  begin
+    TmpSL := TStringList.Create;
+    try
+      FldSL := TStringList.Create;
+      try
+        if(StrToIntDef(FID,0) > 0) then
+          AID := FID
+        else
+          AID := '0';
+        FldSL.Add('.01='+FFldName);
+        FldSL.Add('.02='+TemplateFieldTypeCodes[FFldType]);
+        FldSL.Add('.03='+BOOLCHAR[FInactive]);
+        FldSL.Add('.04='+IntToStr(FMaxLen));
+        FldSL.Add('.05='+FEditDefault);
+        FldSL.Add('.06='+FLMText);
+        idx := -1;
+        if(FItems <> '') and (FItemDefault <> '') then
+        begin
+          TmpSL.Text := FItems;
+          for i := 0 to TmpSL.Count-1 do
+            if(FItemDefault = TmpSL[i]) then
+            begin
+              idx := i;
+              break;
+            end;
+        end;
+        FldSL.Add('.07='+IntToStr(Idx+1));
+        FldSL.Add('.08='+BOOLCHAR[fRequired]);
+        FldSL.Add('.09='+BOOLCHAR[fSepLines]);
+        FldSL.Add('.1=' +IntToStr(FTextLen));
+        FldSL.Add('.11='+IntToStr(FIndent));
+        FldSL.Add('.12='+IntToStr(FPad));
+        FldSL.Add('.13='+IntToStr(FMinVal));
+        FldSL.Add('.14='+IntToStr(FMaxVal));
+        FldSL.Add('.15='+IntToStr(FIncrement));
+        if FDateType = dtUnknown then
+          FldSL.Add('.16=@')
+        else
+          FldSL.Add('.16='+TemplateFieldDateCodes[FDateType]);
+
+        if FURL='' then
+          FldSL.Add('3=@')
+        else
+          FldSL.Add('3='+FURL);
+
+        if(FNotes <> '') or (not NewRec) then
+        begin
+          if(FNotes = '') then
+            FldSL.Add('2,1=@')
+          else
+          begin
+            TmpSL.Text := FNotes;
+            for i := 0 to TmpSL.Count-1 do
+              FldSL.Add('2,'+IntToStr(i+1)+',0='+TmpSL[i]);
+          end;
+        end;
+        if((FItems <> '') or (not NewRec)) then
+        begin
+          if(FItems = '') then
+            FldSL.Add('10,1=@')
+          else
+          begin
+            TmpSL.Text := FItems;
+            for i := 0 to TmpSL.Count-1 do
+              FldSL.Add('10,'+IntToStr(i+1)+',0='+TmpSL[i]);
+          end;
+        end;
+
+        Res := UpdateTemplateField(AID, FldSL);
+        IEN64 := StrToInt64Def(Piece(Res,U,1),0);
+        if(IEN64 > 0) then
+        begin
+          if(NewRec) then
+            FID := IntToStr(IEN64)
+          else
+            UnlockTemplateField(FID);
+          FModified := FALSE;
+          FNameChanged := FALSE;
+          FLocked := FALSE;
+        end
+        else
+          Result := Piece(Res, U, 2);
+      finally
+        FldSL.Free;
+      end;
+    finally
+      TmpSL.Free;
+    end;
+  end;
+end;
+
+procedure TTemplateField.Assign(AFld: TTemplateField);
+begin
+  FMaxLen        := AFld.FMaxLen;
+  FFldName       := AFld.FFldName;
+  FLMText        := AFld.FLMText;
+  FEditDefault   := AFld.FEditDefault;
+  FNotes         := AFld.FNotes;
+  FItems         := AFld.FItems;
+  FInactive      := AFld.FInactive;
+  FItemDefault   := AFld.FItemDefault;
+  FFldType       := AFld.FFldType;
+  FRequired      := AFld.FRequired;
+  FSepLines      := AFld.FSepLines;
+  FTextLen       := AFld.FTextLen;
+  FIndent        := AFld.FIndent;
+  FPad           := AFld.FPad;
+  FMinVal        := AFld.FMinVal;
+  FMaxVal        := AFld.FMaxVal;
+  FIncrement     := AFld.FIncrement;
+  FDateType      := AFld.FDateType;
+  FURL           := AFld.FURL;
+end;
+
+function TTemplateField.Width: integer;
+var
+  i, ilen: integer;
+  TmpSL: TStringList;
+
+begin
+  if(FFldType = dftEditBox) then
+    Result := FMaxLen
+  else
+  begin
+    if FMaxLen > 0 then
+      Result := FMaxLen
+    else
+    begin
+      Result := -1;
+      TmpSL := TStringList.Create;
+      try
+        TmpSL.Text := StripEmbedded(FItems);
+        for i := 0 to TmpSL.Count-1 do
+        begin
+          ilen := length(TmpSL[i]);
+          if(Result < ilen) then
+            Result := ilen;
+        end;
+      finally
+        TmpSL.Free;
+      end;
+    end;
+  end;
+  if Result > MaxTFEdtLen then
+    Result := MaxTFEdtLen;
+end;
+
+destructor TTemplateField.Destroy;
+begin
+  uTmplFlds.Remove(Self);
+  inherited;
+end;
+
+procedure TTemplateField.SetRequired(const Value: boolean);
+begin
+  if(FRequired <> Value) and CanModify then
+    FRequired := Value;
+end;
+
+function TTemplateField.NewField: boolean;
+begin
+  Result := (StrToIntDef(FID,0) <= 0);
+end;
+
+procedure TTemplateField.SetSepLines(const Value: boolean);
+begin
+  if(FSepLines <> Value) and CanModify then
+    FSepLines := Value
+end;
+
+procedure TTemplateField.SetIncrement(const Value: integer);
+begin
+  if(FIncrement <> Value) and CanModify then
+    FIncrement := Value;
+end;
+
+procedure TTemplateField.SetIndent(const Value: integer);
+begin
+  if(FIndent <> Value) and CanModify then
+    FIndent := Value;
+end;
+
+procedure TTemplateField.SetMaxVal(const Value: integer);
+begin
+  if(FMaxVal <> Value) and CanModify then
+    FMaxVal := Value;
+end;
+
+procedure TTemplateField.SetMinVal(const Value: integer);
+begin
+  if(FMinVal <> Value) and CanModify then
+    FMinVal := Value;
+end;
+
+procedure TTemplateField.SetPad(const Value: integer);
+begin
+  if(FPad <> Value) and CanModify then
+    FPad := Value;
+end;
+
+procedure TTemplateField.SetTextLen(const Value: integer);
+begin
+  if(FTextLen <> Value) and CanModify then
+    FTextLen := Value;
+end;
+
+procedure TTemplateField.SetURL(const Value: string);
+begin
+  if(FURL <> Value) and CanModify then
+    FURL := Value;
+end;
+
+function TTemplateField.GetRequired: boolean;
+begin
+  if FFldType in NoRequired then
+    Result := FALSE
+  else
+    Result := FRequired;
+end;
+
+procedure TTemplateField.SetDateType(const Value: TTmplFldDateType);
+begin
+  if(FDateType <> Value) and CanModify then
+    FDateType := Value;
+end;
+
+{ TTemplateDialogEntry }
+const
+  EOL_MARKER = #182;
+  SR_BREAK   = #186;
+
+procedure PanelDestroy(AData: Pointer; Sender: TObject);
+var
+  idx: integer;
+  dlg: TTemplateDialogEntry;
+
+begin
+  dlg := TTemplateDialogEntry(AData);
+  idx := uEntries.IndexOf(dlg.FID);
+  if(idx >= 0) then
+    uEntries.Delete(idx);
+  dlg.FPanelDying := TRUE;
+  dlg.Free;
+end;
+
+constructor TTemplateDialogEntry.Create(AParent: TWinControl; AID, Text: string);
+var
+  CtrlID, idx, i, j, flen: integer;
+  txt, FldName: string;
+  Fld: TTemplateField;
+
+begin
+  FID := AID;
+  FText := Text;
+  FControls := TStringList.Create;
+  FIndents := TStringList.Create;
+  FFont := TFont.Create;
+  FFont.Assign(TORExposedControl(AParent).Font);
+  FControls.Text := Text;
+  if(FControls.Count > 1) then
+  begin
+    for i := 1 to FControls.Count-1 do
+      FControls[i] := EOL_MARKER + FControls[i];
+    if not ScreenReaderSystemActive then
+      StripScreenReaderCodes(FControls);
+  end;
+  FFirstBuild := TRUE;
+  FPanel := TDlgFieldPanel.Create(AParent.Owner);
+  FPanel.Parent := AParent;
+  FPanel.BevelOuter := bvNone;
+  FPanel.Caption := '';
+  FPanel.Font.Assign(FFont);
+  UpdateColorsFor508Compliance(FPanel, TRUE);
+  idx := 0;
+  while (idx < FControls.Count) do
+  begin
+    txt := FControls[idx];
+    i := pos(TemplateFieldBeginSignature, txt);
+    if(i > 0) then
+    begin
+      if(copy(txt, i + TemplateFieldSignatureLen, 1) = FieldIDDelim) then
+      begin
+        CtrlID := StrToIntDef(copy(txt, i + TemplateFieldSignatureLen + 1, FieldIDLen-1), 0);
+        delete(txt,i + TemplateFieldSignatureLen, FieldIDLen);
+      end
+      else
+        CtrlID := 0;
+      j := pos(TemplateFieldEndSignature, copy(txt, i + TemplateFieldSignatureLen, MaxInt));
+      if(j > 0) then
+      begin
+        inc(j, i + TemplateFieldSignatureLen - 1);
+        flen := j - i - TemplateFieldSignatureLen;
+        FldName := copy(txt, i + TemplateFieldSignatureLen, flen);
+        Fld := GetTemplateField(FldName, FALSE);
+        delete(txt,i,flen + TemplateFieldSignatureLen + 1);
+        if(assigned(Fld)) then
+        begin
+          FControls[idx] := copy(txt,1,i-1);
+          if(Fld.Required) then
+          begin
+            if ScreenReaderSystemActive then
+            begin
+              if Fld.FFldType in [dftCheckBoxes, dftRadioButtons] then
+                FControls[idx] := FControls[idx] + ScreenReaderStopCode;
+            end;
+            FControls[idx] := FControls[idx] + '*';
+          end;
+          Fld.CreateDialogControls(Self, idx, CtrlID);
+          FControls.Insert(idx+1,copy(txt,i,MaxInt));
+        end
+        else
+        begin
+          FControls[idx] := txt;
+          dec(idx);
+        end;
+      end
+      else
+      begin
+        delete(txt,i,TemplateFieldSignatureLen);
+        FControls[idx] := txt;
+        dec(idx);
+      end;
+    end;
+    inc(idx);
+  end;
+  if ScreenReaderSystemActive then
+  begin
+    idx := 0;
+    while (idx < FControls.Count) do
+    begin
+      txt := FControls[idx];
+      i := pos(ScreenReaderStopCode, txt);
+      if i > 0 then
+      begin
+        FControls[idx] := copy(txt, 1, i-1);
+        txt := copy(txt, i + ScreenReaderStopCodeLen, MaxInt);
+        FControls.Insert(idx+1, SR_BREAK + txt);
+      end;
+      inc(idx);
+    end;
+  end;
+end;
+
+destructor TTemplateDialogEntry.Destroy;
+begin
+  if assigned(FOnDestroy) then
+    FOnDestroy(Self);
+  KillLabels;
+  KillObj(@FControls, TRUE);
+  if FPanelDying then
+    FPanel := nil
+  else
+    FreeAndNil(FPanel);
+  FreeAndNil(FFont);
+  FreeAndNil(FIndents);
+  inherited;
+end;
+
+procedure TTemplateDialogEntry.DoChange(Sender: TObject);
+begin
+  if (not FUpdating) and assigned(FOnChange) then
+    FOnChange(Self);
+end;
+
+function TTemplateDialogEntry.GetControlText(CtrlID: integer; NoCommas: boolean;
+                            var FoundEntry: boolean; AutoWrap: boolean;
+                            emField: string = ''): string;
+var
+  x, i, j, ind, idx: integer;
+  Ctrl: TControl;
+  Done: boolean;
+  iString: string;
+  iField: TTemplateField;
+  iTemp: TStringList;
+
+  function GetOriginalItem(istr: string): string;
+  begin
+    Result := '';
+    if emField <> '' then
+      begin
+        iField := GetTemplateField(emField,FALSE);
+        iTemp := nil;
+        if ifield <> nil then
+          try
+            iTemp := TStringList.Create;
+            iTemp.Text := StripEmbedded(iField.Items);
+            x := iTemp.IndexOf(istr);
+            if x >= 0 then
+              begin
+              iTemp.Text := iField.Items;
+              Result := iTemp.Strings[x];
+              end;
+          finally
+            iTemp.Free;
+          end;
+      end;
+  end;
+
+
+begin
+  Result := '';
+  Done := FALSE;
+  ind := -1;
+  for i := 0 to FControls.Count-1 do
+  begin
+    Ctrl := TControl(FControls.Objects[i]);
+    if(assigned(Ctrl)) and (Ctrl.Tag = CtrlID) then
+    begin
+      FoundEntry := TRUE;
+      Done := TRUE;
+      if ind < 0 then
+      begin
+        idx := FIndents.IndexOfObject(Ctrl);
+        if idx >= 0 then
+          ind := StrToIntDef(Piece(FIndents[idx], U, 2), 0)
+        else
+          ind := 0;
+      end;
+      if(Ctrl is TCPRSTemplateFieldLabel) then
+      begin
+        if not TCPRSTemplateFieldLabel(Ctrl).Exclude then begin
+          if emField <> '' then begin
+            iField := GetTemplateField(emField,FALSE);
+            case iField.FldType of
+              dftHyperlink: if iField.EditDefault <> '' then
+                              Result := iField.EditDefault
+                            else
+                              Result := iField.URL;
+              dftText:      begin
+                              iString := iField.Items;
+                              if copy(iString,length(iString)-1,2) = CRLF then
+                                delete(iString,length(iString)-1,2);
+                              Result := iString;
+                            end;
+            else {case}
+              Result := TCPRSTemplateFieldLabel(Ctrl).Caption
+            end; {case iField.FldType}
+            end {if emField}
+          else
+            Result := TCPRSTemplateFieldLabel(Ctrl).Caption;
+        end;
+      end
+      else
+      if(Ctrl is TEdit) then
+        Result := TEdit(Ctrl).Text
+      else
+      if(Ctrl is TORComboBox) then begin
+        Result := TORComboBox(Ctrl).Text;
+        iString := GetOriginalItem(Result);
+        if iString <> '' then
+          Result := iString;
+        end
+      else
+      if(Ctrl is TORDateCombo) then
+        Result := TORDateCombo(Ctrl).Text + ':' + FloatToStr(TORDateCombo(Ctrl).FMDate)
+      else
+      if(Ctrl is TORDateBox) then
+        Result := TORDateBox(Ctrl).Text
+      else
+      if(Ctrl is TRichEdit) then
+      begin
+        if((ind = 0) and (not AutoWrap)) then
+          Result := TRichEdit(Ctrl).Lines.Text
+        else
+        begin
+          for j := 0 to TRichEdit(Ctrl).Lines.Count-1 do
+          begin
+            if AutoWrap then
+            begin
+              if(Result <> '') then
+                Result := Result + ' ';
+              Result := Result + TRichEdit(Ctrl).Lines[j];
+            end
+            else
+            begin
+              if(Result <> '') then
+                Result := Result + CRLF;
+              Result := Result + StringOfChar(' ', ind) + TRichEdit(Ctrl).Lines[j];
+            end;
+          end;
+          ind := 0;
+        end;
+      end
+      else
+      if(Ctrl is TORCheckBox) then
+      begin
+        Done := FALSE;
+        if(TORCheckBox(Ctrl).Checked) then
+        begin
+          if(Result <> '') then
+          begin
+            if NoCommas then
+              Result := Result + '|'
+            else
+              Result := Result + ', ';
+          end;
+          iString := GetOriginalItem(TORCheckBox(Ctrl).Caption);
+          if iString <> '' then
+            Result := Result + iString
+          else
+            Result := Result + TORCheckBox(Ctrl).Caption;
+        end;
+      end
+      else
+      if(Ctrl is TfraTemplateFieldButton) then
+        begin
+          Result := TfraTemplateFieldButton(Ctrl).ButtonText;
+          iString := GetOriginalItem(Result);
+          if iString <> '' then
+            Result := iString;
+        end
+      else
+      if(Ctrl is TPanel) then
+      begin
+        for j := 0 to Ctrl.ComponentCount-1 do
+          if Ctrl.Components[j] is TUpDown then
+          begin
+            Result := IntToStr(TUpDown(Ctrl.Components[j]).Position);
+            break;
+          end;
+      end;
+    end;
+    if Done then break;
+  end;
+  if (ind > 0) and (not NoCommas) then
+    Result := StringOfChar(' ', ind) + Result;
+end;
+
+function TTemplateDialogEntry.GetFieldValues: string;
+var
+  i: integer;
+  Ctrl: TControl;
+  CtrlID: integer;
+  TmpIDs: TList;
+  TmpSL: TStringList;
+  Dummy: boolean;
+
+begin
+  Result := '';
+  TmpIDs := TList.Create;
+  try
+    TmpSL := TStringList.Create;
+    try
+      for i := 0 to FControls.Count-1 do
+      begin
+        Ctrl := TControl(FControls.Objects[i]);
+        if(assigned(Ctrl)) then
+        begin
+          CtrlID := Ctrl.Tag;
+          if(TmpIDs.IndexOf(Pointer(CtrlID)) < 0) then
+          begin
+            TmpSL.Add(IntToStr(CtrlID) + U + GetControlText(CtrlID, TRUE, Dummy, FALSE));
+            TmpIDs.Add(Pointer(CtrlID));
+          end;
+        end;
+      end;
+      Result := TmpSL.CommaText;
+    finally
+      TmpSL.Free;
+    end;
+  finally
+    TmpIDs.Free;
+  end;
+end;
+
+function TTemplateDialogEntry.GetPanel(MaxLen: integer; AParent: TWinControl;
+                                       OwningCheckBox: TCPRSDialogParentCheckBox): TDlgFieldPanel;
+var
+  i, x, y, cnt, idx, ind, yinc, ybase, MaxX: integer;
+  MaxTextLen: integer;  {Max num of chars per line in pixels}
+  MaxChars: integer;    {Max num of chars per line}
+  txt: string;
+  ctrl: TControl;
+  LastLineBlank: boolean;
+  sLbl: TCPRSDialogStaticLabel;
+  nLbl: TVA508ChainedLabel;
+  sLblHeight: integer;
+  TabOrdr: integer;
+
+const
+  FOCUS_RECT_MARGIN = 2; {The margin around the panel so the label won't
+                        overlay the focus rect on its parent panel.}
+
+  procedure Add2TabOrder(ctrl: TWinControl);
+  begin
+    ctrl.TabOrder := TabOrdr;
+    inc(TabOrdr);
+  end;
+
+  function StripSRCode(var txt: string; code: string; len: integer): integer;
+  begin
+    Result := pos(code, txt);
+    if Result > 0 then
+    begin
+      delete(txt,Result,len);
+      dec(Result);
+    end
+    else
+      Result := -1;
+  end;
+
+  procedure DoLabel(Atxt: string);
+  var
+    ctrl: TControl;
+    tempLbl: TVA508ChainedLabel;
+
+  begin
+    if ScreenReaderSystemActive then
+    begin
+      if assigned(sLbl) then
+      begin
+        tempLbl := TVA508ChainedLabel.Create(nil);
+        if assigned(nLbl) then
+          nLbl.NextLabel := tempLbl
+        else
+          sLbl.NextLabel := tempLbl;
+        nLbl := tempLbl;
+        ctrl := nLbl;
+      end
+      else
+      begin
+        sLbl := TCPRSDialogStaticLabel.Create(nil);
+        ctrl := sLbl;
+      end;
+    end
+    else
+      ctrl := TLabel.Create(nil);
+    SetOrdProp(ctrl, ShowAccelCharProperty, ord(FALSE));
+    SetStrProp(ctrl, CaptionProperty, Atxt);
+    ctrl.Parent := FPanel;
+    ctrl.Left := x;
+    ctrl.Top := y;
+    if ctrl = sLbl then
+    begin
+      Add2TabOrder(sLbl);
+      sLbl.Height := sLblHeight;
+      ScreenReaderSystem_CurrentLabel(sLbl);
+    end;
+    if ScreenReaderSystemActive then
+      ScreenReaderSystem_AddText(Atxt);
+    UpdateColorsFor508Compliance(ctrl);
+    inc(x, ctrl.Width);
+  end;
+
+  procedure Init;
+  var
+    lbl : TLabel;
+  begin
+    if(FFirstBuild) then
+      FFirstBuild := FALSE
+    else
+      KillLabels;
+    y := FOCUS_RECT_MARGIN; {placement of labels on panel so they don't cover the}
+    x := FOCUS_RECT_MARGIN; {focus rectangle}
+    MaxX := 0;
+    //ybase := FontHeightPixel(FFont.Handle) + 1 + (FOCUS_RECT_MARGIN * 2);  AGP commentout line for
+                                                                           //reminder spacing
+    ybase := FontHeightPixel(FFont.Handle) + 2;
+    yinc := ybase;
+    LastLineBlank := FALSE;
+    sLbl := nil;
+    nLbl := nil;
+    TabOrdr := 0;
+    if ScreenReaderSystemActive then
+    begin
+      ScreenReaderSystem_CurrentCheckBox(OwningCheckBox);
+      lbl := TLabel.Create(nil);
+      try
+        lbl.Parent := FPanel;
+        sLblHeight := lbl.Height + 2;
+      finally
+        lbl.Free;
+      end;
+
+    end;
+  end;
+
+  procedure Text508Work;
+  var
+    ContinueCode: boolean;
+  begin
+    if StripCode(txt, SR_BREAK) then
+    begin
+      ScreenReaderSystem_Stop;
+      nLbl := nil;
+      sLbl := nil;
+    end;
+
+    ContinueCode := FALSE;
+    while StripSRCode(txt, ScreenReaderContinueCode, ScreenReaderContinueCodeLen) >= 0 do
+      ContinueCode := TRUE;
+    while StripSRCode(txt, ScreenReaderContinueCodeOld, ScreenReaderContinueCodeOldLen) >= 0 do
+      ContinueCode := TRUE;
+    if ContinueCode then
+      ScreenReaderSystem_Continue;
+  end;
+
+  procedure Ctrl508Work(ctrl: TControl);
+  var
+    lbl: TCPRSTemplateFieldLabel;
+  begin
+    if (Ctrl is TCPRSTemplateFieldLabel) and (not (Ctrl is TCPRSDialogHyperlinkLabel)) then
+    begin
+      lbl := Ctrl as TCPRSTemplateFieldLabel;
+      if trim(lbl.Caption) <> '' then
+      begin
+        ScreenReaderSystem_CurrentLabel(lbl);
+        ScreenReaderSystem_AddText(lbl.Caption);
+      end
+      else
+      begin
+        lbl.TabStop := FALSE;
+        ScreenReaderSystem_Stop;
+      end;
+    end
+    else
+    begin
+      if ctrl is TWinControl then
+        Add2TabOrder(TWinControl(ctrl));
+      if Supports(ctrl, ICPRSDialogComponent) then
+        ScreenReaderSystem_CurrentComponent(ctrl as ICPRSDialogComponent);
+    end;
+    sLbl := nil;
+    nLbl := nil;
+  end;
+
+  procedure NextLine;
+  begin
+    if(MaxX < x) then
+      MaxX := x;
+    x := FOCUS_RECT_MARGIN;  {leave two pixels on the left for the Focus Rect}
+    inc(y, yinc);
+    yinc := ybase;
+  end;
+
+begin
+  MaxTextLen := MaxLen - (FOCUS_RECT_MARGIN * 2);{save room for the focus rectangle on the panel}
+  if(FFirstBuild or (FPanel.Width <> MaxLen)) then
+  begin
+    Init;
+    for i := 0 to FControls.Count-1 do
+    begin
+      txt := FControls[i];
+      if ScreenReaderSystemActive then
+        Text508Work;
+      if StripCode(txt,EOL_MARKER) then
+      begin
+        if((x <> 0) or LastLineBlank) then
+          NextLine;
+        LastLineBlank := (txt = '');
+      end;
+      if(txt <> '') then
+      begin
+        while(txt <> '') do
+        begin
+          cnt := NumCharsFitInWidth(FFont.Handle, txt, MaxTextLen-x);
+          MaxChars := cnt;
+          if(cnt >= length(txt)) then
+          begin
+            DoLabel(txt);
+            txt := '';
+          end
+          else
+          if(cnt < 1) then
+            NextLine
+          else
+          begin
+            repeat
+              if(txt[cnt+1] = ' ') then
+              begin
+                DoLabel(copy(txt,1,cnt));
+                NextLine;
+                txt := copy(txt, cnt + 1, MaxInt);
+                break;
+              end
+              else
+                dec(cnt);
+            until(cnt = 0);
+            if(cnt = 0) then
+            begin
+              if(x = FOCUS_RECT_MARGIN) then {If x is at the far left margin...}
+              begin
+                DoLabel(Copy(txt,1,MaxChars));
+                NextLine;
+                txt := copy(txt, MaxChars + 1, MaxInt);
+              end
+              else
+                NextLine;
+            end;
+          end;
+        end;
+      end
+      else
+      begin
+        ctrl := TControl(FControls.Objects[i]);
+        if(assigned(ctrl)) then
+        begin
+          if ScreenReaderSystemActive then
+            Ctrl508Work(ctrl);
+          idx := FIndents.IndexOfObject(Ctrl);
+          if idx >= 0 then
+            ind := StrToIntDef(Piece(FIndents[idx], U, 1), 0)
+          else
+            ind := 0;
+          if(x > 0) then
+          begin
+            if (x < MaxLen) and (Ctrl is TORCheckBox) and (TORCheckBox(Ctrl).StringData = NewLine) then
+              x := MaxLen;
+            if((ctrl.Width + x + ind) > MaxLen) then
+              NextLine;
+          end;
+          inc(x,ind);
+          Ctrl.Left := x;
+          Ctrl.Top := y;
+          inc(x, Ctrl.Width + 4);
+          if yinc <= Ctrl.Height then
+            yinc := Ctrl.Height + 2;
+          if (x < MaxLen) and ((Ctrl is TRichEdit) or
+             ((Ctrl is TLabel) and (pos(CRLF, TLabel(Ctrl).Caption) > 0))) then
+            x := MaxLen;
+        end;
+      end;
+    end;
+    NextLine;
+    FPanel.Height := (y-1) + (FOCUS_RECT_MARGIN * 2); //AGP added Focus_rect_margin for Reminder spacing
+    FPanel.Width := MaxX + FOCUS_RECT_MARGIN;
+  end;
+  if(FFieldValues <> '') then
+    SetFieldValues(FFieldValues);
+  if ScreenReaderSystemActive then
+    ScreenReaderSystem_Stop;
+  Result := FPanel;
+end;
+
+function TTemplateDialogEntry.GetText: string;
+begin
+  Result := ResolveTemplateFields(FText, FALSE);
+end;
+
+procedure TTemplateDialogEntry.KillLabels;
+var
+  i, idx: integer;
+  obj: TObject;
+  max: integer;
+
+begin
+  if(assigned(FPanel)) then
+  begin
+    max := FPanel.ControlCount-1;
+    for i := max downto 0 do
+    begin
+// deleting TVA508StaticText can delete several TVA508ChainedLabel components
+      if i < FPanel.ControlCount then
+      begin
+        obj := FPanel.Controls[i];
+        if (not (obj is TVA508ChainedLabel)) and
+           ((obj is TLabel) or (obj is TVA508StaticText)) then
+        begin
+          idx := FControls.IndexOfObject(obj);
+          if idx < 0 then
+            obj.Free;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TTemplateDialogEntry.SetAutoDestroyOnPanelFree(
+  const Value: boolean);
+var
+  M: TMethod;
+
+begin
+  FAutoDestroyOnPanelFree := Value;
+  if(Value) then
+  begin
+    M.Data := Self;
+    M.Code := @PanelDestroy;
+    FPanel.OnDestroy := TNotifyEvent(M);
+  end
+  else
+    FPanel.OnDestroy := nil;
+end;
+
+procedure TTemplateDialogEntry.SetControlText(CtrlID: integer; AText: string);
+var
+  cnt, i, j: integer;
+  Ctrl: TControl;
+  Done: boolean;
+
+begin
+  FUpdating := TRUE;
+  try
+    Done := FALSE;
+    cnt := 0;
+    for i := 0 to FControls.Count-1 do
+    begin
+      Ctrl := TControl(FControls.Objects[i]);
+      if(assigned(Ctrl)) and (Ctrl.Tag = CtrlID) then
+      begin
+        Done := TRUE;
+        if(Ctrl is TLabel) then
+          TLabel(Ctrl).Caption := AText
+        else
+        if(Ctrl is TEdit) then
+          TEdit(Ctrl).Text := AText
+        else
+        if(Ctrl is TORComboBox) then
+          TORComboBox(Ctrl).SelectByID(AText)
+        else
+        if(Ctrl is TRichEdit) then
+          TRichEdit(Ctrl).Lines.Text := AText
+        else
+        if(Ctrl is TORDateCombo) then
+          TORDateCombo(Ctrl).FMDate := MakeFMDateTime(piece(AText,':',2))
+        else
+        if(Ctrl is TORDateBox) then
+          TORDateBox(Ctrl).Text := AText
+        else
+        if(Ctrl is TORCheckBox) then
+        begin
+          Done := FALSE;
+          TORCheckBox(Ctrl).Checked := FALSE;        //<-PSI-06-170-ADDED THIS LINE - v27.23 - RV
+          if(cnt = 0) then
+            cnt := DelimCount(AText, '|') + 1;
+          for j := 1 to cnt do
+          begin
+            if(TORCheckBox(Ctrl).Caption = piece(AText,'|',j)) then
+              TORCheckBox(Ctrl).Checked := TRUE;
+          end;
+        end
+        else
+        if(Ctrl is TfraTemplateFieldButton) then
+          TfraTemplateFieldButton(Ctrl).ButtonText := AText
+        else
+        if(Ctrl is TPanel) then
+        begin
+          for j := 0 to Ctrl.ComponentCount-1 do
+            if Ctrl.Components[j] is TUpDown then
+            begin
+              TUpDown(Ctrl.Components[j]).Position := StrToIntDef(AText,0);
+              break;
+            end;
+        end;
+      end;
+      if Done then break;
+    end;
+  finally
+    FUpdating := FALSE;
+  end;
+end;
+
+procedure TTemplateDialogEntry.SetFieldValues(const Value: string);
+var
+  i: integer;
+  TmpSL: TStringList;
+
+begin
+  FFieldValues := Value;
+  TmpSL := TStringList.Create;
+  try
+    TmpSL.CommaText := Value;
+    for i := 0 to TmpSL.Count-1 do
+      SetControlText(StrToIntDef(Piece(TmpSL[i], U, 1), 0), Piece(TmpSL[i], U, 2));
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+function TTemplateDialogEntry.StripCode(var txt: string; code: char): boolean;
+var
+  p: integer;
+begin
+  p := pos(code, txt);
+  Result := (p > 0);
+  if Result then
+  begin
+    while p > 0 do
+    begin
+      delete(txt, p, 1);
+      p := pos(code, txt);
+    end;
+  end;
+end;
+
+procedure TTemplateDialogEntry.UpDownChange(Sender: TObject);
+begin
+  EnsureText(TEdit(Sender), TUpDown(TEdit(Sender).Tag));
+  DoChange(Sender);
+end;
+
+function StripEmbedded(iItems: string): string;
+{7/26/01    S Monson
+            Returns the field will all embedded fields removed}
+var
+  p1, p2, icur: integer;
+Begin
+  p1 := pos(TemplateFieldBeginSignature,iItems);
+  icur := 0;
+  while p1 > 0 do
+    begin
+      p2 := pos(TemplateFieldEndSignature,copy(iItems,icur+p1+TemplateFieldSignatureLen,maxint));
+      if  p2 > 0 then
+        begin
+          delete(iItems,p1+icur,TemplateFieldSignatureLen+p2+TemplateFieldSignatureEndLen-1);
+          icur := icur + p1 - 1;
+          p1 := pos(TemplateFieldBeginSignature,copy(iItems,icur+1,maxint));
+        end
+      else
+        p1 := 0;
+    end;
+  Result := iItems;
+end;
+
+procedure StripScreenReaderCodes(var Text: string);
+var
+  p, j: integer;
+begin
+  for j := low(ScreenReaderCodes) to high(ScreenReaderCodes) do
+  begin
+    p := 1;
+    while (p > 0) do
+    begin
+      p := posex(ScreenReaderCodes[j], Text, p);
+      if p > 0 then
+        delete(Text, p, ScreenReaderCodeLens[j]);
+    end;
+  end;
+end;
+
+procedure StripScreenReaderCodes(SL: TStrings);
+var
+  temp: string;
+  i: integer;
+
+begin
+  for i := 0 to SL.Count - 1 do
+  begin
+    temp := SL[i];
+    StripScreenReaderCodes(temp);
+    SL[i] := temp;
+  end;
+end;
+
+function HasScreenReaderBreakCodes(SL: TStrings): boolean;
+var
+  i: integer;
+
+begin
+  Result := TRUE;
+  for i := 0 to SL.Count - 1 do
+  begin
+    if pos(ScreenReaderCodeSignature, SL[i]) > 0 then
+      exit;
+  end;
+  Result := FALSE;
+end;
+
+initialization
+
+finalization
+  KillObj(@uTmplFlds, TRUE);
+  KillObj(@uEntries, TRUE);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/uTemplates.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/uTemplates.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Templates/uTemplates.pas	(revision 1676)
@@ -0,0 +1,2947 @@
+unit uTemplates;
+
+{$O-}
+
+interface
+uses
+  Classes, Controls, SysUtils, Forms, ORFn, ORNet, Dialogs, MSXML_TLB, uTIU, uDCSumm, Variants;
+
+type
+  TTemplateType = (ttNone, ttMyRoot, ttRoot, ttTitles, ttConsults, ttProcedures,
+                   ttClass, ttDoc, ttGroup, ttDocEx, ttGroupEx);
+  TTemplateLinkTypes = ttTitles..ttProcedures;
+
+const
+  AllTemplateLinkTypes = [ttTitles..ttProcedures];
+  AllTemplateRootTypes = [ttMyRoot, ttRoot, ttTitles, ttConsults, ttProcedures];
+  AllTemplateTrueTypes = AllTemplateRootTypes + [ttNone, ttClass];
+  AllTemplateFolderTypes = AllTemplateRootTypes + [ttGroup, ttClass];
+
+type
+  TTemplateChildren = (tcNone, tcActive, tcInactive, tcBoth);
+  TTemplateAccess = (taAll, taReadOnly, taNone, taEditor);
+  TTemplateLinkType = (ltNone, ltTitle, ltConsult, ltProcedure);
+
+  TTemplateBackup = record
+    BPrintName: string;
+    BGap: integer;
+    BRealType: TTemplateType;
+    BActive: boolean;
+    BDisplayOnly: boolean;
+    BFirstLine: boolean;
+    BOneItemOnly: boolean;
+    BHideDlgItems: boolean;
+    BHideItems: boolean;
+    BIndentItems: boolean;
+    BExclude: boolean;
+    BDialog: boolean;
+    BPersonalOwner: Int64;
+    BBoilerPlate: string;
+    BItemIENs: string;
+    BDescription: string;
+    BReminderDialog: string;
+    BLock: boolean;
+    BCOMObject: integer;
+    BCOMParam: string;
+    BFileLink: string;
+
+    SavedPrintName: boolean;
+    SavedGap: boolean;
+    SavedRealType: boolean;
+    SavedActive: boolean;
+    SavedDisplayOnly: boolean;
+    SavedFirstLine: boolean;
+    SavedOneItemOnly: boolean;
+    SavedHideDlgItems: boolean;
+    SavedHideItems: boolean;
+    SavedIndentItems: boolean;
+    SavedExclude: boolean;
+    SavedDialog: boolean;
+    SavedPersonalOwner: boolean;
+    SavedBoilerPlate: boolean;
+    SavedItemIENs: boolean;
+    SavedDescription: boolean;
+    SavedReminderDialog: boolean;
+    SavedLock: boolean;
+    SavedCOMObject: boolean;
+    SavedCOMParam: boolean;
+    SavedFileLink: boolean;
+  end;
+
+  TTemplate = class(TObject)
+  private
+    FDescriptionLoaded: boolean;  // Template Notes Loaded Flag
+    FDescription: string;         // Template Notes
+    FCreatingChildren: boolean;   // Flag used to prevent infinite recursion
+    FExclude: boolean;            // Exclude from group boilerplate
+    FActive: boolean;
+    FDisplayOnly: boolean;        // Suppresses checkbox in dialog - no PN text
+    FFirstLine: boolean;          // Display only the first line in a dialog box
+    FOneItemOnly: boolean;        // Allow only one Child Item to be selected in dialog
+    FHideDlgItems: boolean;       // Hide Child Items when not checked
+    FHideItems: boolean;          // Hide items in Templates Drawer Tree
+    FIndentItems: boolean;        // Indent Items in dialog only
+    FLock: boolean;               // Locks Shared Templates
+    FDialog: boolean;             // Determines if Group is a Dialog
+    FBoilerPlateLoaded: boolean;  // Boilerplate Loaded Flag
+    FBoilerplate: string;         // Boilerplate
+    FID: string;                  // Template IEN
+    FPrintName: string;           // Template Name
+    FItems: TList;                // Holds pointers to children templates
+    FNodes: TStringList;          // Holds tree nodes that reference the template
+                                  // string value is tmp index used for syncing
+    FRealType: TTemplateType;     // Real Template Type (from the template file)
+    FGap: integer;                // Number of blank lines to insert between items
+    FChildren: TTemplateChildren; // flag indicating the active status of children
+    FPersonalOwner: Int64;        // owner DUZ
+    FExpanded: boolean;           // Indicates children have been read from server
+    FTag: longint;                // Used internally for syncing
+    FLastTagIndex: longint;       // Used internally for syncing
+    FBkup: TTemplateBackup;       // Backup values to determine what needs to be saved
+    FLastDlgCnt: longint;
+    FLastUniqueID: longint;
+    FDialogAborted: boolean;      // Flag indicating Cancel was pressed on the dialog
+    FReminderDialog: string;      // Reminder Dialog IEN ^ Reminder Dialog Name
+    FIsReminderDialog: boolean;   // Flag used internally for setting Type
+    FIsCOMObject: boolean;        // Flag used internally for setting Type
+    FLocked: boolean;             // Flag Indicating Template is locked
+    FCOMObject: integer;          // COM Object IEN
+    FCOMParam: string;            // Param to pass to COM Object
+    FFileLink: string;            // Used to link templates to Titles and Reasons for Request
+    FLinkName: string;
+    FCloning: boolean;            // Flag used to prevent locking during the cloning process
+    FPreviewMode:  boolean;       // Flag to prevent "Are you sure you want to cancel?" dialog when previewing
+  protected
+    function TrueClone: TTemplate;
+    function GetItems: TList;
+    function GetTemplateType: TTemplateType;
+    function GetBoilerplate: string;
+    function GetChildren: TTemplateChildren;
+    procedure SetTemplateType(const Value: TTemplateType);
+    procedure SetBoilerplate(Value: string);
+    function GetText: string;
+    procedure SetPersonalOwner(Value: Int64);
+    procedure SetActive(const Value: boolean);
+    procedure SetDisplayOnly(const Value: boolean);
+    procedure SetFirstLine(const Value: boolean);
+    procedure SetOneItemOnly(const Value: boolean);
+    procedure SetHideDlgItems(const Value: boolean);
+    procedure SetHideItems(const Value: boolean);
+    procedure SetIndentItems(const Value: boolean);
+    procedure SetLock(const Value: boolean);
+    procedure SetExclude(const Value: boolean);
+    procedure SetDialog(const Value: boolean);
+    procedure SetGap(const Value: integer);
+    procedure SetPrintName(const Value: string);
+    procedure SetRealType(const Value: TTemplateType);
+    procedure ClearBackup(ClearItemIENs: boolean = TRUE);
+    procedure SetDescription(const Value: string);
+    function GetDescription: string;
+    function GetDialogAborted: boolean;
+    procedure SetReminderDialog(const Value: string);     // Reminder Dialog IEN
+    procedure SetCOMObject(const Value: integer);
+    procedure SetCOMParam(const Value: string);
+    procedure AssignFileLink(const Value: string; Force: boolean);
+    procedure SetFileLink(const Value: string);
+    function ValidID: boolean;
+  public
+    constructor Create(DataString: string);
+    class function CreateFromXML(Element: IXMLDOMNode; Owner: string): TTemplate;
+    destructor Destroy; override;
+    function CanModify: boolean;
+    procedure Unlock;
+    procedure AddNode(Node: Pointer);
+    procedure RemoveNode(Node: Pointer);
+    procedure AddChild(Child: TTemplate);
+    procedure RemoveChild(Child: TTemplate);
+    function Clone(Owner: Int64): TTemplate;
+    function ItemBoilerplate: string;
+    function FullBoilerplate: string;
+    function ItemIENs: string;
+    procedure BackupItems;
+    procedure SortChildren;
+    function Changed: boolean;
+    function DialogProperties(Parent: TTemplate = nil): string;
+    function DlgID: string;
+    function IsDialog: boolean;
+    function CanExportXML(Data, Fields: TStringList; IndentLevel: integer = 0): boolean;
+    function ReminderDialogIEN: string;
+    function ReminderDialogName: string;
+    function ReminderWipe: string; //AGP Change 24.8
+    function IsLocked: boolean;
+    procedure UpdateImportedFieldNames(List: TStrings);
+    //function COMObjectText(const DefText: string = ''; DocInfo: string = ''): string;
+    function COMObjectText(DefText: string; var DocInfo: string): string;
+    function AutoLock: boolean;
+    function LinkType: TTemplateLinkType;
+    function LinkIEN: string;
+    function LinkName: string;
+    procedure ExecuteReminderDialog(OwningForm: TForm); 
+    property Nodes: TStringList read FNodes;
+    property ID: string read FID;
+    property PrintName: string read FPrintName write SetPrintName;
+    property RealType: TTemplateType read FRealType write SetRealType;
+    property TemplateType: TTemplateType read GetTemplateType write SetTemplateType;
+    property Active: boolean read FActive write SetActive;
+    property DisplayOnly: boolean read FDisplayOnly write SetDisplayOnly;
+    property FirstLine: boolean read FFirstLine write SetFirstLine;
+    property OneItemOnly: boolean read FOneItemOnly write SetOneItemOnly;
+    property HideDlgItems: boolean read FHideDlgItems write SetHideDlgItems;
+    property HideItems: boolean read FHideItems write SetHideItems;
+    property IndentItems: boolean read FIndentItems write SetIndentItems;
+    property Lock: boolean read FLock write SetLock;
+    property Exclude: boolean read FExclude write SetExclude;
+    property Dialog: boolean read FDialog write SetDialog;
+    property Boilerplate: string read GetBoilerplate write SetBoilerplate;
+    property Children: TTemplateChildren read GetChildren;
+    property Items: TList read GetItems;
+    property Gap: integer read FGap write SetGap;
+    property Description: string read GetDescription write SetDescription;
+    property Text: string read GetText;
+    property PersonalOwner: Int64 read FPersonalOwner write SetPersonalOwner;
+    property Expanded: boolean read FExpanded write FExpanded;
+    property Tag: longint read FTag write FTag;
+    property LastTagIndex: longint read FLastTagIndex write FLastTagIndex;
+    property DialogAborted: boolean read GetDialogAborted;
+    property ReminderDialog: string read FReminderDialog write SetReminderDialog;
+    property IsReminderDialog: boolean read FIsReminderDialog write FIsReminderDialog;
+    property IsCOMObject: boolean read FIsCOMObject write FIsCOMObject;
+    property Locked: boolean read FLocked;
+    property COMObject: integer read FCOMObject write SetCOMObject;
+    property COMParam: string read FCOMParam write SetCOMParam;
+    property FileLink: string read FFileLink write SetFileLink;
+    property TemplatePreviewMode: boolean read FPreviewMode write FPreviewMode;
+  end;
+
+function SearchMatch(const SubStr, Str: string; const WholeWordsOnly: boolean): boolean;
+function UserTemplateAccessLevel: TTemplateAccess;
+function AddTemplate(DataString: string; Owner: TTemplate = nil): TTemplate;
+procedure LoadTemplateData;
+procedure ExpandTemplate(tmpl: TTemplate);
+procedure ReleaseTemplates;
+procedure RemoveAllNodes;
+function CanEditLinkType(LinkType: TTemplateLinkTypes): boolean;
+function GetLinkedTemplate(IEN: string; LType: TTemplateLinkType): TTemplate;
+function ConvertFileLink(IEN: string; LType: TTemplateLinkType): string;
+function GetLinkName(IEN: string; LType: TTemplateLinkType): string;
+
+function BackupDiffers: boolean;
+procedure SaveTemplate(Template: TTemplate; Idx: integer; ErrorList: TStrings = nil);
+function SaveAllTemplates: boolean;
+procedure ClearBackup;
+procedure MarkDeleted(Template: TTemplate);
+function BadTemplateName(Text: string): boolean;
+procedure WordImportError(msg: string);
+procedure XMLImportError(Result: HResult);
+procedure XMLImportCheck(Result: HResult);
+function GetXMLFromWord(const AFileName: string; Data: TStrings): boolean;
+function WordImportActive: boolean;
+procedure UnlockAllTemplates;
+function DisplayGroupToLinkType(DGroup: integer): TTemplateLinkType;
+
+(*procedure ExecuteTemplateOrBoilerPlate(SL: TStrings; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; const CaptionText: string = ''; DocInfo: string = ''); overload;
+procedure ExecuteTemplateOrBoilerPlate(var AText: string; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; const CaptionText: string = ''; DocInfo: string = ''); overload;*)
+procedure ExecuteTemplateOrBoilerPlate(SL: TStrings; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; CaptionText: string; var DocInfo: string); overload;
+procedure ExecuteTemplateOrBoilerPlate(var AText: string; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; CaptionText: string; var DocInfo: string); overload;
+
+procedure ExpandEmbeddedFields(flds: TStringList);
+function MakeXMLParamTIU(ANoteID: string; ANoteRec: TEditNoteRec): string;  overload;
+function MakeXMLParamTIU(ADCSummID: string; ADCSummRec: TEditDCSummRec): string;  overload;
+function GetXMLParamReturnValueTIU(DocInfo, ParamTag: string): string;
+procedure UpdatePersonalObjects;
+procedure SetTemplateDialogCanceled(value: Boolean);
+function WasTemplateDialogCanceled: Boolean;
+procedure SetTemplateBPHasObjects(value: Boolean);
+function TemplateBPHasObjects: Boolean;
+
+const
+  EmptyNodeText = '<^Empty Node^>';
+  NewTemplateName = 'New Template';
+  FirstRealTemplateType = ttMyRoot;
+  LastRealTemplateType = ttGroup;
+  TemplateTypeCodes: array[FirstRealTemplateType..LastRealTemplateType] of string[2] =
+                                                                  ('P','R','TF','CF','OF','C','T','G');
+  BadNameText = CRLF + CRLF + 'Valid Template names must start with an alphanumber '+
+                'character, and be at least 3 characters in length.' + CRLF +
+                'In addition, no template can be named "' + NewTemplateName+'".';
+
+  TemplateLockedText = 'Template %s is currently being edited by another user.';
+
+  XMLTemplateTag = 'TEMPLATE';
+  XMLTemplateFieldsTag = 'TEMPLATE_FIELDS';
+  XMLHeader = 'CPRS_TEMPLATE';
+
+var
+  Templates: TStringList = nil;
+  RootTemplate: TTemplate = nil;
+  MyTemplate: TTemplate = nil;
+  TitlesTemplate: TTemplate = nil;
+  ConsultsTemplate: TTemplate = nil;
+  ProceduresTemplate: TTemplate = nil;
+  uPersonalObjects: TStringList = nil;   // -------- CQ #8665 - RV ------------
+
+implementation
+
+uses
+  Windows, rTemplates, uCore, dShared, fTemplateDialog, ActiveX, ComObj, uTemplateFields,
+  XMLUtils, fTemplateImport, uSpell, rCore, uConst, ORCtrls, uEventHooks,
+  fReminderDialog, rODBase
+  {$IFDEF VER140}
+  , Word97;
+  {$ELSE}
+  , WordXP, VAUtils;
+  {$ENDIF}
+
+const
+  MaxSeq = 999999;
+  sLoading = 'Loading Template Information...';
+
+type
+  ETemplateError = class(Exception);
+  ETemplateImportError = class(Exception);
+  ETemplateXMLImportError = class(EOleSysError);
+
+var
+  TemplateAccessLevelChecked: boolean = FALSE;
+  TemplateAccessLevelValue: TTemplateAccess;
+  LastTemplateLocation: integer = 0;
+  TempSL: TStringList = nil;
+  Deleted: TStringList = nil;
+  NodeCount: longint = 0; // Used by FNodes to prevent access violations in a Resync
+
+  GettingDialogText: boolean = FALSE;
+  uIndentLevel: integer;
+  uDlgCount: longint = 0;  // Used for dialogs on unsaved templates
+  uUniqueIDNum: longint = 0; // Used for dialogs on unsaved templates
+  uCanEditLinkTypeResults: string = '';
+  uTemplateDataLoaded: boolean = FALSE;
+  uDGroupConsults: integer = 0;
+  uDGroupProcedures: integer = 0;
+  uTemplateDialogCanceled: Boolean = FALSE;
+  uTemplateBPHasObjects: Boolean = FALSE;
+
+type
+  TTemplateExportField = (efName, efBlankLines, efType, efStatus, efExclude, efDialog,
+                          efDisplayOnly, efFirstLine, efOneItemOnly, efHideDialogItems,
+                          efHideTreeItems, efIndentItems, efBoilerplate, efDescription,
+                          efItems, efLock);
+
+const
+  TemplateActiveCode: array[boolean] of string[1] = ('I','A');
+  TemplateExportTag: array[TTemplateExportField] of string = // From Field Names in File 8927
+                {  efName            }  ('NAME',
+                {  efBlankLines      }   'BLANK_LINES',
+                {  efType            }   'TYPE',
+                {  efStatus          }   'STATUS',
+                {  efExclude         }   'EXCLUDE_FROM_GROUP_BOILERPLATE',
+                {  efDialog          }   'DIALOG',
+                {  efDisplayOnly     }   'DISPLAY_ONLY',
+                {  efFirstLine       }   'FIRST_LINE',
+                {  efOneItemOnly     }   'ONE_ITEM_ONLY',
+                {  efHideDialogItems }   'HIDE_DIALOG_ITEMS',
+                {  efHideTreeItems   }   'HIDE_TREE_ITEMS',
+                {  efIndentItems     }   'INDENT_ITEMS',
+                {  efBoilerplate     }   'BOILERPLATE_TEXT',
+                {  efDescription     }   'DESCRIPTION',
+                {  efItems           }   'ITEMS',
+                {  efLock            }   'LOCK');
+
+  ExportPieces:array[TTemplateExportField] of integer =
+                {  efName            }  (4,
+                {  efBlankLines      }   6,
+                {  efType            }   2,
+                {  efStatus          }   3,
+                {  efExclude         }   5,
+                {  efDialog          }   9,
+                {  efDisplayOnly     }   10,
+                {  efFirstLine       }   11,
+                {  efOneItemOnly     }   12,
+                {  efHideDialogItems }   13,
+                {  efHideTreeItems   }   14,
+                {  efIndentItems     }   15,
+                {  efBoilerplate     }   0,
+                {  efDescription     }   0,
+                {  efItems           }   0,
+                {  efLock            }   18);
+
+  XMLErrorMessage = 'Error Importing Template.  File does not contain Template ' +
+                    'information or may be corrupted.';
+
+  WordErrorMessage = 'Error Importing Word Document.';
+
+type
+  TTemplateFieldExportField = (tfName, tfType, tfLength, tfDefault, tfDefIdx, tfDesc,
+                               tfItems, tfDateType, tfTextLen, tfMinVal, tfMaxVal);
+
+const
+  TemplateFieldExportTag: array[TTemplateFieldExportField] of string = // From Field Names in File 8927.1
+                  { tfName     }  ('NAME',
+                  { tfType     }   'TYPE',
+                  { tfLength   }   'LENGTH',
+                  { tfDefault  }   'DEFAULT_TEXT',
+                  { tfDefIdx   }   'DEFAULT_INDEX',
+                  { tfDesc     }   'DESCRIPTION',
+                  { tfItems    }   'ITEMS',
+                  { tfDateType }   'DATE_TYPE',
+                  { tfTextLen  }   'MAX_LENGTH',
+                  { tfMinVal   }   'MIN_VALUE',
+                  { tfMaxVal   }   'MAX_VALUE');
+
+  XMLFieldTag = 'FIELD';
+
+  LinkGlobal: array[TTemplateLinkType] of string =
+                   { ltNone      } ('',
+                   { ltTitle     }  ';TIU(8925.1,',
+                   { ltConsult   }  ';GMR(123.5,',
+                   { ltProcedure }  ';GMR(123.3,');
+
+  LinkPassCode: array[TTemplateLinkType] of string =
+                   { ltNone      } ('',
+                   { ltTitle     }  'T',
+                   { ltConsult   }  'C',
+                   { ltProcedure }  'P');
+
+function DlgText(const txt: string; DlgProps: string): string;
+var
+  i, j: integer;
+
+begin
+  Result := txt;
+  if GettingDialogText then
+  begin
+    if (Result = '') then
+      Result := NoTextMarker;
+    i := pos(DlgPropMarker, Result);
+    j := pos(ObjMarker, Result);
+    if(i > 0) and (j > 0) then
+      delete(Result, i, j - i + ObjMarkerLen)
+    else
+      i := length(Result) + 1;
+    insert(DlgPropMarker + DlgProps + ObjMarker, Result, i);
+  end;
+end;
+
+function SearchMatch(const SubStr, Str: string; const WholeWordsOnly: boolean): boolean;
+const
+  AlphaNumeric = ['A'..'Z','a'..'z','0'..'9'];
+
+var
+  i, j: integer;
+
+begin
+  i := pos(SubStr,Str);
+  if(i > 0) then
+  begin
+    Result := TRUE;
+    if(WholeWordsOnly) then
+    begin
+      if((i > 1) and (Str[i-1] in AlphaNumeric)) then
+        Result := FALSE
+      else
+      begin
+        j := length(SubStr);
+        if((i+j) <= length(Str)) then
+          Result := (not (Str[i+j] in AlphaNumeric));
+      end;
+    end;
+  end
+  else
+    Result := FALSE;
+end;
+
+function UserTemplateAccessLevel: TTemplateAccess;
+var
+  i: integer;
+
+begin
+  if(TemplateAccessLevelChecked and
+    (LastTemplateLocation = Encounter.Location)) then
+    Result := TemplateAccessLevelValue
+  else
+  begin
+    TemplateAccessLevelChecked := FALSE;
+    LastTemplateLocation := 0;
+    if(not assigned(RootTemplate)) then
+    begin
+      Result := taAll;
+      GetTemplateRoots;
+      for i := 0 to RPCBrokerV.Results.Count-1 do
+      begin
+        if(Piece(RPCBrokerV.Results[i],U,2)=TemplateTypeCodes[ttRoot]) then
+        begin
+          Result := TTemplateAccess(GetTemplateAccess(Piece(RPCBrokerV.Results[i],U,1)));
+          LastTemplateLocation := Encounter.Location;
+          TemplateAccessLevelChecked := TRUE;
+          TemplateAccessLevelValue := Result;
+          Break;
+        end;
+      end;
+    end
+    else
+    begin
+      Result := TTemplateAccess(GetTemplateAccess(RootTemplate.ID));
+      LastTemplateLocation := Encounter.Location;
+      TemplateAccessLevelChecked := TRUE;
+      TemplateAccessLevelValue := Result;
+    end;
+  end;
+end;
+
+function AddTemplate(DataString: string; Owner: TTemplate = nil): TTemplate;
+var
+  idx: integer;
+  id: string;
+  tmpl: TTemplate;
+
+begin
+  id := Piece(DataString, U, 1);
+  if(id = '') or (id = '0') then
+    idx := -1
+  else
+    idx := Templates.IndexOf(id);
+  if(idx < 0) then
+  begin
+    tmpl := TTemplate.Create(DataString);
+    Templates.AddObject(id, tmpl);
+    if(tmpl.Active) then
+    begin
+           if (tmpl.RealType = ttRoot) then
+        RootTemplate := tmpl
+      else if (tmpl.RealType = ttTitles) then
+        TitlesTemplate := tmpl
+      else if (tmpl.RealType = ttConsults) then
+        ConsultsTemplate := tmpl
+      else if (tmpl.RealType = ttProcedures) then
+        ProceduresTemplate := tmpl
+      else if(tmpl.RealType = ttMyRoot) then
+        MyTemplate := tmpl;
+    end;
+  end
+  else
+    tmpl := TTemplate(Templates.Objects[idx]);
+  if(assigned(Owner)) and (assigned(tmpl)) then
+    Owner.AddChild(tmpl);
+  Result := tmpl;
+end;
+
+procedure LoadTemplateData;
+var
+  i: integer;
+  TmpSL: TStringList;
+
+begin
+  if(not uTemplateDataLoaded) then
+  begin
+    StatusText(sLoading);
+    try
+      if(not assigned(Templates)) then
+        Templates := TStringList.Create;
+      TmpSL := TStringList.Create;
+      try
+        GetTemplateRoots;
+        FastAssign(RPCBrokerV.Results, TmpSL);
+        for i := 0 to TmpSL.Count-1 do
+          AddTemplate(TmpSL[i]);
+        uTemplateDataLoaded := TRUE;
+      finally
+        TmpSL.Free;
+      end;
+    finally
+      StatusText('');
+    end;
+  end;
+end;
+
+procedure ExpandTemplate(tmpl: TTemplate);
+var
+  i: integer;
+  TmpSL: TStringList;
+
+begin
+  if(not tmpl.Expanded) then
+  begin
+    if(tmpl.Children <> tcNone) then
+    begin
+      StatusText(sLoading);
+      try
+        TmpSL := TStringList.Create;
+        try
+          GetTemplateChildren(tmpl.FID);
+          FastAssign(RPCBrokerV.Results, TmpSL);
+          for i := 0 to TmpSL.Count-1 do
+            AddTemplate(TmpSL[i], tmpl);
+        finally
+          TmpSL.Free;
+        end;
+      finally
+        StatusText('');
+      end;
+    end;
+    tmpl.Expanded := TRUE;
+    with tmpl,tmpl.FBkup do
+    begin
+      BItemIENs := ItemIENs;
+      SavedItemIENs := TRUE;
+    end;
+  end;
+end;
+
+procedure ReleaseTemplates;
+var
+  i: integer;
+
+begin
+  if(assigned(Templates)) then
+  begin
+    for i := 0 to Templates.Count-1 do
+      TTemplate(Templates.Objects[i]).Free;
+    Templates.Free;
+    Templates := nil;
+    uTemplateDataLoaded := FALSE;
+  end;
+  ClearBackup;
+  if(assigned(TempSL)) then
+  begin
+    TempSL.Free;
+    TempSL := nil;
+  end;
+  // -------- CQ #8665 - RV ------------
+  if (assigned(uPersonalObjects)) then
+  begin
+    KillObj(@uPersonalObjects);
+    uPersonalObjects.Free;
+    uPersonalObjects := nil;
+  end;
+  // ------end CQ #8665 ------------
+  if(assigned(Deleted)) then
+  begin
+    Deleted.Clear;
+    Deleted := nil;
+  end;
+  RootTemplate := nil;
+  MyTemplate := nil;
+  TitlesTemplate := nil;
+  ConsultsTemplate := nil;
+  ProceduresTemplate := nil;
+end;
+
+procedure RemoveAllNodes;
+var
+  i: integer;
+
+begin
+  if(assigned(Templates)) then
+  begin
+    for i := 0 to Templates.Count-1 do
+      TTemplate(Templates.Objects[i]).FNodes.Clear;
+  end;
+end;
+
+function CanEditLinkType(LinkType: TTemplateLinkTypes): boolean;
+
+  function CanEditType(Template: TTemplate): boolean;
+  begin
+    if not assigned(Template) then
+      Result := FALSE
+    else
+    if pos(Char(ord(LinkType)+ord('0')), uCanEditLinkTypeResults) > 0 then
+      Result := (pos(Char(ord(LinkType)+ord('A')), uCanEditLinkTypeResults) > 0)
+    else
+    begin
+      Result := IsUserTemplateEditor(Template.ID, User.DUZ);
+      uCanEditLinkTypeResults := uCanEditLinkTypeResults + Char(ord(LinkType)+ord('0'));
+      if Result then
+        uCanEditLinkTypeResults := uCanEditLinkTypeResults + Char(ord(LinkType)+ord('A'));
+    end;
+  end;
+
+begin
+  case LinkType of
+    ttTitles:     Result := CanEditType(TitlesTemplate);
+    ttConsults:   Result := CanEditType(ConsultsTemplate);
+    ttProcedures: Result := CanEditType(ProceduresTemplate);
+    else          Result := FALSE;
+  end;
+end;
+
+function GetLinkedTemplate(IEN: string; LType: TTemplateLinkType): TTemplate;
+var
+  idx: integer;
+  Data, ALink: string;
+
+begin
+  Result := nil;
+  if LType <> ltNone then
+  begin
+    if(not assigned(Templates)) then
+      Templates := TStringList.Create;
+    ALink := IEN + LinkGlobal[LType];
+    for idx := 0 to Templates.Count-1 do
+    begin
+      if ALink = TTemplate(Templates.Objects[idx]).FFileLink then
+      begin
+        Result := TTemplate(Templates.Objects[idx]);
+        break;
+      end;
+    end;
+    if not assigned(Result) then
+    begin
+      Data := GetLinkedTemplateData(ALink);
+      if Data <> '' then
+        Result := AddTemplate(Data);
+    end;
+  end;
+end;
+
+function ConvertFileLink(IEN: string; LType: TTemplateLinkType): string;
+begin
+  if(LType = ltNone) or (IEN = '') or (StrToIntDef(IEN,0) = 0) then
+    Result := ''
+  else
+    Result := IEN + LinkGlobal[LType];
+end;
+
+function GetLinkName(IEN: string; LType: TTemplateLinkType): string;
+var
+  IEN64: Int64;
+
+begin
+  IEN64 := StrToInt64Def(IEN,0);
+  case LType of
+    ltTitle:     Result := ExternalName(IEN64,8925.1);
+    ltConsult:   Result := ExternalName(IEN64,123.5);
+    ltProcedure: Result := ExternalName(IEN64,123.3);
+    else         Result := '';
+  end;
+end;
+
+function BackupDiffers: boolean;
+var
+  i: integer;
+
+begin
+  Result := FALSE;
+  if(assigned(Templates)) then
+  begin
+    for i := 0 to Templates.Count-1 do
+    begin
+      if(TTemplate(Templates.Objects[i]).Changed) then
+      begin
+        Result := TRUE;
+        exit;
+      end;
+    end;
+  end;
+end;
+
+procedure DisplayErrors(Errors: TStringList; SingleError: string = '');
+begin
+  if(assigned(Errors)) then
+    ShowMsg(Errors.text)
+  else
+    ShowMsg(SingleError);
+end;
+
+
+procedure SaveTemplate(Template: TTemplate; Idx: integer; ErrorList: TStrings = nil);
+var
+  i: integer;
+  ID, Tmp: string;
+  NoCheck: boolean;
+  DescSL: TStringList;
+
+begin
+{ Removed because this may be a bug??? - what if it's hidden? -
+  better to save and delete than miss it
+//Don't save new templates that have been deleted
+  if(((Template.ID = '0') or (Template.ID = '')) and
+     (Template.Nodes.Count = 0)) then exit;
+}
+  if(not Template.Changed) then
+  begin
+    Template.Unlock;
+    exit;
+  end;
+
+  if(not assigned(TempSL)) then
+    TempSL := TStringList.Create;
+  TempSL.Clear;
+  ID := Template.ID;
+
+  NoCheck := (ID = '0') or (ID = '');
+
+  with Template,Template.FBkup do
+  begin
+    if(NoCheck or (SavedBoilerplate and (BBoilerplate <> Boilerplate))) then
+    begin
+      TempSL.Text := BoilerPlate;
+      if(TempSL.Count > 0) then
+      begin
+        for i := 0 to TempSL.Count-1 do
+          TempSL[i] := '2,'+IntToStr(i+1)+',0='+TempSL[i];
+      end
+      else
+        TempSL.Add('2,1=@');
+    end;
+
+    if(NoCheck or (SavedPrintName and (BPrintName <> PrintName))) then
+      TempSL.Add('.01='+PrintName);
+
+    if(NoCheck or (SavedGap and (BGap <> Gap))) then
+    begin
+      if Gap = 0 then
+        TempSL.Add('.02=@')
+      else
+        TempSL.Add('.02='+IntToStr(Gap));
+    end;
+
+    if(NoCheck or (SavedRealType and (BRealType <> RealType))) then
+      TempSL.Add('.03='+TemplateTypeCodes[RealType]);
+
+    if(NoCheck or (SavedActive and (BActive <> Active))) then
+      TempSL.Add('.04='+TemplateActiveCode[Active]);
+
+    if(NoCheck or (SavedExclude and (BExclude <> FExclude))) then
+      TempSL.Add('.05='+BOOLCHAR[Exclude]);
+
+    if(NoCheck or (SavedDialog and (BDialog <> FDialog))) then
+      TempSL.Add('.08='+BOOLCHAR[Dialog]);
+
+    if(NoCheck or (SavedDisplayOnly and (BDisplayOnly <> DisplayOnly))) then
+      TempSL.Add('.09='+BOOLCHAR[DisplayOnly]);
+
+    if(NoCheck or (SavedFirstLine and (BFirstLine <> FirstLine))) then
+      TempSL.Add('.1='+BOOLCHAR[FirstLine]);
+
+    if(NoCheck or (SavedOneItemOnly and (BOneItemOnly <> OneItemOnly))) then
+      TempSL.Add('.11='+BOOLCHAR[OneItemOnly]);
+
+    if(NoCheck or (SavedHideDlgItems and (BHideDlgItems <> HideDlgItems))) then
+      TempSL.Add('.12='+BOOLCHAR[HideDlgItems]);
+
+    if(NoCheck or (SavedHideItems and (BHideItems <> HideItems))) then
+      TempSL.Add('.13='+BOOLCHAR[HideItems]);
+
+    if(NoCheck or (SavedIndentItems and (BIndentItems <> IndentItems))) then
+      TempSL.Add('.14='+BOOLCHAR[IndentItems]);
+
+    if(NoCheck or (SavedReminderDialog and (BReminderDialog <> ReminderDialog))) then
+    begin
+      if ReminderDialogIEN = '' then
+        TempSL.Add('.15=@')
+      else
+        TempSL.Add('.15='+ReminderDialogIEN);
+    end;
+
+    if(NoCheck or (SavedLock and (BLock <> Lock))) then
+      TempSL.Add('.16='+BOOLCHAR[Lock]);
+
+    if(NoCheck or (SavedCOMObject and (BCOMObject <> COMObject))) then
+    begin
+      if COMObject = 0 then
+        TempSL.Add('.17=@')
+      else
+        TempSL.Add('.17='+IntToStr(COMObject));
+    end;
+
+    if(NoCheck or (SavedCOMParam and (BCOMParam <> COMParam))) then
+    begin
+      if COMParam = '' then
+        TempSL.Add('.18=@')
+      else
+        TempSL.Add('.18=' + COMParam);
+    end;
+
+    if(NoCheck or (SavedFileLink and (BFileLink <> FileLink))) then
+    begin
+      if FileLink = '' then
+        TempSL.Add('.19=@')
+      else
+        TempSL.Add('.19=' + FileLink);
+    end;
+
+    if(NoCheck or (SavedPersonalOwner and (BPersonalOwner <> PersonalOwner))) then
+    begin
+      if(PersonalOwner = 0) then
+        Tmp := ''
+      else
+        Tmp := IntToStr(PersonalOwner);
+      TempSL.Add('.06='+Tmp);
+    end;
+
+    if(NoCheck or (SavedDescription and (BDescription <> Description))) then
+    begin
+      DescSL := TStringList.Create;
+      try
+        DescSL.Text := Description;
+        if(DescSL.Count > 0) then
+        begin
+          for i := 0 to DescSL.Count-1 do
+            DescSL[i] := '5,'+IntToStr(i+1)+',0='+DescSL[i];
+        end
+        else
+          DescSL.Add('5,1=@');
+        FastAddStrings(DescSL, TempSL)
+      finally
+        DescSL.Free;
+      end;
+    end;
+    
+  end;
+    
+  if(TempSL.Count > 0) then
+  begin
+    Tmp := UpdateTemplate(ID, TempSL);
+    if(Piece(Tmp,U,1) = '0') then
+    begin
+      Tmp := 'Error Saving ' + Template.PrintName + ' ' + ID + '=' + Tmp;
+      if(Assigned(ErrorList)) then
+        ErrorList.Add(Tmp)
+      else
+        DisplayErrors(nil, Tmp);
+    end
+    else
+    begin
+      if(((ID = '') or (ID = '0')) and (Tmp <> ID)) then
+      begin
+        if(idx < 0) then
+          idx := Templates.IndexOfObject(Template);
+        Template.FID := Tmp;
+        Templates[idx] := Tmp;
+        if assigned(Template.FNodes) then
+        begin
+          for i := 0 to Template.FNodes.Count-1 do
+            TORTreeNode(Template.FNodes.Objects[i]).StringData := Template.ID + U + Template.PrintName;
+        end;
+      end;
+      Template.ClearBackup(FALSE);
+      if NoCheck then with Template.FBkup do
+      begin
+        BItemIENs := '';
+        SavedItemIENs := TRUE;
+      end;
+    end;
+  end;
+end;
+
+function SaveAllTemplates: boolean;
+var
+  i, k: integer;
+  New: TTemplate;
+  Errors: TStringList;
+  First, ChildErr: boolean;
+
+begin
+  Errors := TStringList.Create;
+  try
+    if(assigned(Templates)) then
+    begin
+      if(not assigned(TempSL)) then
+        TempSL := TStringList.Create;
+      for i := 0 to Templates.Count-1 do
+        SaveTemplate(TTemplate(Templates.Objects[i]), i, Errors);
+      First := TRUE;
+      if(Errors.Count > 0) then
+        Errors.Insert(0,'Errors Encountered Saving Templates:');
+      for i := 0 to Templates.Count-1 do
+      begin
+        New := TTemplate(Templates.Objects[i]);
+        with New.FBkup do
+        if(SavedItemIENs and (BItemIENs <> New.ItemIENs)) then
+        begin
+          TempSL.Clear;
+          for k := 0 to New.Items.Count-1 do
+            TempSL.Add(TTemplate(New.Items[k]).FID);
+          UpdateChildren(New.ID, TempSL);
+          ChildErr := FALSE;
+          for k := 0 to RPCBrokerV.Results.Count-1 do
+          begin
+            if(RPCBrokerV.Results[k] <> IntToStr(k+1)) then
+            begin
+              if(First) then
+              begin
+                Errors.Add('Errors Encountered Saving Children:');
+                First := FALSE;
+              end;
+              Errors.Add(New.ID+' Item #'+IntToStr(k+1)+'('+
+                     TTemplate(New.Items[k]).FID+')'+'='+RPCBrokerV.Results[k]);
+              ChildErr := TRUE;
+            end;
+          end;
+          if(not ChildErr) then
+            BItemIENs := New.ItemIENs;
+        end;
+        New.Unlock;
+      end;
+      if(assigned(Deleted)) and (Deleted.Count > 0) then
+      begin
+        DeleteTemplates(Deleted);
+        Deleted.Clear;
+      end;
+      if(Errors.Count > 0) then
+        DisplayErrors(Errors);
+    end;
+  finally
+    Result := (Errors.Count = 0);
+    Errors.Free;
+  end;
+end;
+
+procedure ClearBackup;
+var
+  i: integer;
+
+begin
+  if(assigned(Templates)) then
+  begin
+    for i := 0 to Templates.Count-1 do
+      TTemplate(Templates.Objects[i]).ClearBackup;
+  end;
+end;
+
+procedure MarkDeleted(Template: TTemplate);
+var
+  i, idx: integer;
+
+begin
+  if(Template.ValidID) then
+  begin
+    if(not assigned(Deleted)) then
+      Deleted := TStringList.Create;
+    idx := Deleted.IndexOf(Template.ID);
+    if(idx < 0) then
+      Deleted.Add(Template.ID);
+  end;
+  Template.FileLink := '';
+  Template.GetItems;
+  for i := 0 to Template.FItems.Count-1 do
+    MarkDeleted(TTemplate(Template.FItems[i]));
+end;
+
+function BadTemplateName(Text: string): boolean;
+begin
+  Result := FALSE;
+  if(Text = NewTemplateName) or (length(Text) < 3) then
+    Result := TRUE
+  else
+  if(not (Text[1] in ['a'..'z','A'..'Z','0'..'9'])) then
+    Result := TRUE;
+end;
+
+procedure WordImportError(msg: string);
+begin
+  raise ETemplateImportError.Create(WordErrorMessage + CRLF + msg);
+end;
+
+procedure XMLImportError(Result: HResult);
+begin
+  raise ETemplateXMLImportError.Create(XMLErrorMessage, Result, 0);
+end;
+
+procedure XMLImportCheck(Result: HResult);
+begin
+  if not Succeeded(Result) then
+    XMLImportError(Result);
+end;
+
+procedure AddXMLData(Data: TStrings; const Pad: string; FldType: TTemplateExportField; const Value, DefValue: string);
+begin
+  if(Value <> '') and (Value <> DefValue) then
+    Data.Add(Pad + '  <' + TemplateExportTag[FldType] + '>' + Text2XML(Value) +
+                    '</' + TemplateExportTag[FldType] + '>');
+end;
+
+procedure AddXMLBool(Data: TStrings; const Pad: string; FldType: TTemplateExportField; const Value: boolean);
+begin
+  AddXMLData(Data, Pad, FldType, BOOLCHAR[Value], BOOLCHAR[FALSE]);
+end;
+
+procedure AddXMLList(Data, Fields: TStrings; const Pad: string; FldType: TTemplateExportField; Const Txt: string);
+var
+  i: integer;
+  TmpSL: TStrings;
+
+begin
+  if(Txt <> '') then
+  begin
+    TmpSL := TStringList.Create;
+    try
+      TmpSL.Text := Txt;
+      Data.Add(Pad + '  <' + TemplateExportTag[FldType] + '>');
+      for i := 0 to TmpSL.Count-1 do
+        Data.Add(Pad + '    <p>' + Text2XML(TmpSL[i]) + '</p>');
+      Data.Add(Pad + '  </' + TemplateExportTag[FldType] + '>');
+    finally
+      TmpSL.Free;
+    end;
+    if assigned(Fields) then
+      ListTemplateFields(Txt, Fields);
+  end;
+end;
+
+function GetXMLFromWord(const AFileName: string; Data: TStrings): boolean;
+var
+  itmp, itmp2, itmp3, i, j: integer;
+  WDoc: TWordDocument;
+  WasVis: boolean;
+  WApp: TWordApplication;
+  Boiler: string;
+  FldCache, Fields, PendingAdd: TStringList;
+  OldCur: TCursor;
+  idx, TmpVar, RangeStart, RangeEnd: oleVariant;
+  ddTotal, ffTotal, ffStartCur, ffEndCur, ffEndLast : integer;
+  ffRange, textRange: Range;
+  tmp, TemplateName, fName: string;
+  tmpType, tfIdx: TTemplateFieldType;
+  tmpDate: TTmplFldDateType;
+
+  tfCount: array[TTemplateFieldType] of integer;
+
+  procedure AddBoiler(txt: string);
+  var
+    i: integer;
+    c: char;
+    tmp: string;
+
+  begin
+    tmp := '';
+    for i := 1 to length(txt) do
+    begin
+      c := txt[i];
+      if (c > #31) or (c = #13) or (c = #10) then
+        tmp := tmp + c;
+    end;
+    Boiler := Boiler + tmp;
+  end;
+
+  procedure AddField(Typ: TTemplateFieldExportField; Value: string; Pending: boolean = FALSE);
+  var
+    sl: TStringList;
+
+  begin
+    if Pending then
+      sl := PendingAdd
+    else
+      sl := Fields;
+    sl.Add('<' + TemplateFieldExportTag[Typ] + '>' + Text2XML(Value) +
+                    '</' + TemplateFieldExportTag[Typ] + '>');
+  end;
+
+  procedure AddFieldHeader(FldType: TTemplateFieldType; First: boolean);
+  var
+    tmp: string;
+
+  begin
+    tmp := '<';
+    if not First then
+      tmp := tmp + '/';
+    tmp := tmp + XMLFieldTag;
+    if First then
+    begin
+      fname := 'WORDFLD_' + FldNames[FldType] + '_';
+      tfIdx := FldType;
+      tmp := tmp + ' ' + TemplateFieldExportTag[tfName] + '="' + Text2XML(fname);
+    end;
+    if not First then
+      tmp := tmp + '>';
+    Fields.Add(tmp);
+    if First then
+      AddField(tfType, TemplateFieldTypeCodes[FldType]);
+  end;
+
+  procedure WordWrap(var Str: string);
+  var
+    TmpSL: TStringList;
+    i: integer;
+
+  begin
+    TmpSL := TStringList.Create;
+    try
+      TmpSL.Text := Str;
+      Str := '';
+      for i := 0 to TmpSL.Count-1 do
+      begin
+        if Str <> '' then
+          Str := Str + CRLF;
+        Str := Str + WrapText(TmpSL[i], #13#10, [' ','-'], MAX_ENTRY_WIDTH);
+      end;
+    finally
+      TmpSL.Free;
+    end;
+  end;
+
+begin
+  for tfIdx := low(TTemplateFieldType) to high(TTemplateFieldType) do
+    tfCount[tfIdx] := 1;
+  TemplateName := ExtractFileName(AFileName);
+  Result := TRUE;
+  try
+    OldCur := Screen.Cursor;
+    Screen.Cursor := crAppStart;
+    try
+      WApp := TWordApplication.Create(nil);
+      try
+        WasVis := WApp.Visible;
+        WApp.Visible := FALSE;
+        try
+          WDoc := TWordDocument.Create(nil);
+          try
+            try
+              WApp.Connect;
+              TmpVar := AFileName;
+              {$IFDEF VER140}
+              WDoc.ConnectTo(WApp.Documents.Add(TmpVar, EmptyParam));
+              {$ELSE}
+              WDoc.ConnectTo(WApp.Documents.Add(TmpVar, EmptyParam, EmptyParam, EmptyParam));
+              {$ENDIF}
+              ffTotal := WDoc.FormFields.Count;
+
+              if ffTotal > 3 then
+                StartImportMessage(TemplateName, ffTotal+1);
+
+              if WDoc.ProtectionType <> wdNoProtection then
+                WDoc.Unprotect;
+
+              Data.Add('<'+XMLHeader+'>');
+
+              tmp := ExtractFileExt(TemplateName);
+              if tmp <> '' then
+              begin
+                i := pos(tmp,TemplateName);
+                if i > 0 then
+                  delete(TemplateName, i, length(tmp));
+              end;
+              TemplateName := copy(TemplateName, 1, 60);
+
+              if BadTemplateName(TemplateName) then
+              begin
+                tmp := copy('WordDoc ' + TemplateName, 1, 60);
+                if BadTemplateName(TemplateName) then
+                  tmp := 'Imported Word Document'
+                else
+                  tmp := TemplateName;
+              end
+              else
+                tmp := TemplateName;
+              Data.Add('<' + XMLTemplateTag + ' ' + TemplateExportTag[efName] + '="' + Text2XML(tmp) + '">');
+              AddXMLData(Data, '', efType, TemplateTypeCodes[ttDoc], '');
+              AddXMLData(Data, '', efStatus, TemplateActiveCode[TRUE], '');
+
+              Boiler := '';
+              Fields := TStringList.Create;
+              try
+                FldCache := TStringList.Create;
+                try
+                  PendingAdd := TStringList.Create;
+                  try
+                    ffEndCur := 0;
+
+                    for i := 1 to ffTotal do
+                    begin
+                      if UpdateImportMessage(i) then
+                      begin
+                        Result := FALSE;
+                        Data.Clear;
+                        break;
+                      end;
+                      idx := i;
+                      ffEndLast := ffEndCur;
+                      ffRange := WDoc.FormFields.Item(idx).Range;
+                      ffStartCur := ffRange.Start;
+                      ffEndCur := ffRange.End_;
+
+                      // Assign working start range for text collection:
+                      if i = 1 then
+                        rangeStart := 0 // Before first FormField, use start of document.
+                      else
+                        rangeStart := ffEndLast; // Start of new range is end of the last FormField range.
+
+                      // Assign working end range for text collection:
+                      rangeEnd := ffStartCur; // End of new range is start of current FormField range.
+
+                      // Collect text in the range:
+                      textRange := WDoc.Range(rangeStart, rangeEnd);
+                      textRange.Select;
+
+                      AddBoiler(TextRange.text);
+                      tfIdx := dftUnknown;
+                      fname := '';
+                      case WDoc.FormFields.Item(idx).type_ of
+                        wdFieldFormTextInput:
+                          begin
+                            itmp3 := WDoc.FormFields.Item(idx).TextInput.Type_;
+                            case itmp3 of
+                              wdNumberText: tmpType := dftNumber;
+                              wdDateText, wdCurrentDateText, wdCurrentTimeText: tmpType := dftDate;
+                              else tmpType := dftEditBox;
+                            end;
+                            AddFieldHeader(tmpType, TRUE);
+                            tmpDate := dtUnknown;
+                            tmp := WDoc.FormFields.Item(idx).TextInput.Default;
+                            case itmp3 of
+                              wdNumberText:
+                                begin
+                                  AddField(tfMinVal, IntToStr(-9999), TRUE);
+                                  AddField(tfMaxVal, IntToStr(9999), TRUE);
+                                end;
+
+                              wdDateText: tmpDate := dtDate;
+                              wdCurrentDateText:
+                                begin
+                                  tmpDate := dtDate;
+                                  if tmp = '' then
+                                    tmp := 'T';
+                                end;
+                              wdCurrentTimeText:
+                                begin
+                                  tmpDate := dtDateTime;
+                                  if tmp = '' then
+                                    tmp := 'NOW';
+                                end;
+                              else
+                                begin
+                                  itmp2 := WDoc.FormFields.Item(idx).TextInput.Width;
+                                  itmp := itmp2;
+                                  if (itmp < 1) then
+                                  begin
+                                    itmp := length(tmp);
+                                    if itmp < 10 then
+                                      itmp := 10
+                                    else
+                                    if itmp > 70 then
+                                      itmp := 70;
+                                    itmp2 := 240;
+                                  end
+                                  else
+                                  begin
+                                    if (itmp > 70) then
+                                      itmp := 70;
+                                    if (itmp2 > 240) then
+                                      itmp2 := 240;
+                                  end;
+                                  AddField(tfLength, IntToStr(itmp));
+                                  AddField(tfTextLen, IntToStr(itmp2), TRUE);
+                                end;
+                            end;
+                            if tmpDate <> dtUnknown then
+                              AddField(tfDateType, TemplateFieldDateCodes[tmpDate], TRUE);
+                            if tmp <> '' then
+                              AddField(tfDefault, tmp);
+                            FastAddStrings(PendingAdd, Fields);
+                            PendingAdd.Clear;
+                            AddFieldHeader(tmpType, FALSE);
+                          end;
+
+                        wdFieldFormCheckBox:
+                          begin
+                            AddFieldHeader(dftButton, TRUE);
+                            itmp := ord(boolean(WDoc.FormFields.Item(idx).CheckBox.Default))+1;
+                            AddField(tfDefIdx, IntToStr(itmp));
+                            Fields.Add('<' + TemplateFieldExportTag[tfItems] + '>');
+                            Fields.Add('<p>' + Text2XML('[ ]') + '</p>');
+                            Fields.Add('<p>' + Text2XML('[X]') + '</p>');
+                            Fields.Add('</' + TemplateFieldExportTag[tfItems] + '>');
+                            AddFieldHeader(dftButton, FALSE);
+                          end;
+
+                        wdFieldFormDropDown:
+                          begin
+                            ddTotal := WDoc.FormFields.Item(Idx).DropDown.ListEntries.Count;
+                            if(ddTotal > 0)then
+                            begin
+                              AddFieldHeader(dftComboBox, TRUE);
+                              itmp := WDoc.FormFields.Item(idx).DropDown.Default;
+                              if itmp > 0 then
+                                AddField(tfDefIdx, IntToStr(itmp));
+
+                              Fields.Add('<' + TemplateFieldExportTag[tfItems] + '>');
+                              for j := 1 to ddTotal do
+                              begin
+                                TmpVar := j;
+                                tmp := WDoc.FormFields.Item(Idx).DropDown.ListEntries.Item(TmpVar).Name;
+                                Fields.Add('<p>' + Text2XML(tmp) + '</p>');
+                              end;
+                              Fields.Add('</' + TemplateFieldExportTag[tfItems] + '>');
+                              AddFieldHeader(dftComboBox, FALSE);
+                            end;
+                          end;
+                      end;
+                      if (Fields.Count > 0) then
+                      begin
+                        if tfIdx <> dftUnknown then
+                        begin
+                          tmp := Fields.CommaText;
+                          j := FldCache.IndexOf(tmp);
+                          if j < 0 then
+                          begin
+                            FldCache.AddObject(tmp, TObject(tfCount[tfIdx]));
+                            j := tfCount[tfIdx];
+                            inc(tfCount[tfIdx]);
+                          end
+                          else
+                            j := Integer(FldCache.Objects[j]);
+                          Boiler := Boiler + TemplateFieldBeginSignature + fname + IntToStr(j) + TemplateFieldEndSignature;
+                        end;
+                        Fields.Clear;
+                      end;
+                    end;
+                    if Result then
+                    begin
+                      rangeStart := ffEndCur; // Start of new range is end of last FormField range.
+                      rangeEnd := WDoc.Range.End_; // After last FormField, use end of document.
+
+                      // Collect text in trailing range:
+                      textRange := WDoc.Range(rangeStart, rangeEnd);
+                      textRange.Select;
+
+                      AddBoiler(TextRange.text);
+
+                      WordWrap(Boiler);
+
+                      AddXMLList(Data, nil, '', efBoilerplate, Boiler);
+
+                      tmp := WrapText('Imported on ' + FormatFMDateTime('mmm dd yyyy hh:nn', FMNow) +
+                                      ' from Word Document: ' + AFileName, #13#10, [' '], MAX_ENTRY_WIDTH);
+
+                      AddXMLList(Data, nil, '', efDescription, tmp);
+
+                      Data.Add('</' + XMLTemplateTag + '>');
+                      if FldCache.Count > 0 then
+                      begin
+                        Data.Add('<' + XMLTemplateFieldsTag + '>');
+                        for i := 0 to FldCache.Count-1 do
+                        begin
+                          Fields.Clear;
+                          Fields.CommaText := FldCache[i];
+                          if Fields.Count > 0 then
+                          begin
+                            Fields[0] := Fields[0] + IntToStr(Integer(FldCache.Objects[i])) + '">';
+                            FastAddStrings(Fields, Data);
+                          end;
+                        end;
+                        Data.Add('</' + XMLTemplateFieldsTag + '>');
+                      end;
+
+                      Data.Add('</'+XMLHeader+'>');
+                      UpdateImportMessage(ffTotal+1);
+                    end;
+                  finally
+                    PendingAdd.Free;
+                  end;
+                finally
+                  FldCache.Free;
+                end;
+              finally
+                Fields.Free;
+              end;
+
+            except
+              on E:Exception do
+                WordImportError(E.Message);
+            end;
+          finally
+            TmpVar := wdDoNotSaveChanges;
+            WDoc.Close(TmpVar);
+            WDoc.Free;
+          end;
+        finally
+          WApp.Visible := WasVis;
+        end;
+      finally
+        WApp.Disconnect;
+        WApp.Free;
+      end;
+    finally
+      Screen.Cursor := OldCur;
+    end;
+  finally
+    StopImportMessage;
+  end;
+  if not Result then
+    InfoBox('Importing Word Document Canceled.','Import Canceled', MB_OK);
+end;
+
+function WordImportActive: boolean;
+begin
+  Result := True;
+  //Result := SpellCheckAvailable;   spell check disabled in v19.16
+end;
+
+procedure UnlockAllTemplates;
+var
+  i: integer;
+
+begin
+  if(assigned(Templates)) then
+  begin
+    for i := 0 to Templates.Count-1 do
+      TTemplate(Templates.Objects[i]).Unlock;
+  end;
+end;
+
+function DisplayGroupToLinkType(DGroup: integer): TTemplateLinkType;
+begin
+  Result := ltNone;
+  if DGroup <> 0 then
+  begin
+    if uDGroupConsults = 0 then
+      uDGroupConsults := DisplayGroupByName('CONSULTS');
+    if uDGroupProcedures = 0 then
+      uDGroupProcedures := DisplayGroupByName('PROCEDURES');
+    if DGroup = uDGroupConsults then
+      Result := ltConsult
+    else
+    if DGroup = uDGroupProcedures then
+      Result := ltProcedure;
+  end;
+end;
+
+(*procedure ExecuteTemplateOrBoilerPlate(SL: TStrings; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; const CaptionText: string = ''; DocInfo: string = '');*)
+procedure ExecuteTemplateOrBoilerPlate(SL: TStrings; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; CaptionText: string; var DocInfo: string);
+
+var
+  Template: TTemplate;
+  txt: string;
+
+begin
+  SetTemplateDialogCanceled(FALSE);
+  SetTemplateBPHasObjects(FALSE);
+  Template := GetLinkedTemplate(IntToStr(IEN), LType);
+  if assigned(Template) then
+  begin
+    if Template.IsReminderDialog then
+    begin
+      Template.ExecuteReminderDialog(OwningForm);
+      DocInfo := '';
+    end
+    else
+    begin
+      if Template.IsCOMObject then
+        txt := Template.COMObjectText(SL.Text, DocInfo)
+      else
+        begin
+          txt := Template.Text;
+          DocInfo := '';
+        end;
+      if(txt <> '') then
+      begin
+        CheckBoilerplate4Fields(txt, CaptionText);
+        SL.Text := txt;
+      end;
+    end;
+  end
+  else
+  begin
+    txt := SL.Text;
+    CheckBoilerplate4Fields(txt, CaptionText);
+    DocInfo := '';
+    SL.Text := txt;
+  end;
+end;
+
+(*procedure ExecuteTemplateOrBoilerPlate(var AText: string; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; const CaptionText: string = ''; DocInfo: string = '');*)
+procedure ExecuteTemplateOrBoilerPlate(var AText: string; IEN: Integer; LType: TTemplateLinkType;
+                                       OwningForm: TForm; CaptionText: string; var DocInfo: string);
+
+var
+  tmp: TStringList;
+
+begin
+  tmp := TStringList.Create;
+  try
+    tmp.text := AText;
+    ExecuteTemplateOrBoilerPlate(tmp, IEN, LType, OwningForm, CaptionText, DocInfo);
+    AText := tmp.text;
+  finally
+    tmp.free;
+  end;
+end;
+
+{ TTemplate }
+
+constructor TTemplate.Create(DataString: string);
+var
+  i: TTemplateType;
+  Code: string[2];
+
+begin
+  FCloning := TRUE;
+  try
+    FNodes := TStringList.Create;
+    FID := Piece(DataString, U, 1);
+    Code := Piece(DataString, U, 2);
+    FRealType := ttNone;
+    for i := FirstRealTemplateType to LastRealTemplateType do
+    begin
+      if(TemplateTypeCodes[i] = Code) then
+      begin
+        FRealType := i;
+        break;
+      end;
+    end;
+    if FRealType = ttNone then
+      raise ETemplateError.Create('Template has invalid Type Code of "' + Code + '"');
+    FActive := (Piece(DataString, U, 3) = TemplateActiveCode[TRUE]);
+    FPrintName := Piece(DataString, U, 4);
+    FExclude := (Piece(DataString, U, 5) = '1');
+    FDialog :=  (Piece(DataString, U, 9) = '1');
+    FDisplayOnly := (Piece(DataString, U, 10) = '1');
+    FFirstLine := (Piece(DataString, U, 11) = '1');
+    FOneItemOnly := (Piece(DataString, U, 12) = '1');
+    FHideDlgItems := (Piece(DataString, U, 13) = '1');
+    FHideItems := (Piece(DataString, U, 14) = '1');
+    FIndentItems := (Piece(DataString, U, 15) = '1');
+    FLock := (Piece(DataString, U, 18) = '1');
+    FReminderDialog := Pieces(DataString, U, 16, 17);
+    FReminderDialog := FReminderDialog + U + Piece(DataString, U, 25); //AGP CHANGE 24.8
+    FIsReminderDialog := (ReminderDialogIEN <> '');
+    FCOMObject := StrToIntDef(Piece(DataString, U, 19), 0);
+    FCOMParam := Piece(DataString, U, 20);
+    FFileLink := Piece(DataString, U, 21);
+    FIsCOMObject := (FCOMObject > 0);
+    FGap := StrToIntDef(Piece(DataString, U, 6),0);
+    FPersonalOwner := StrToInt64Def(Piece(DataString, U, 7),0);
+    case StrToIntDef(Piece(DataString, U, 8),0) of
+      1: FChildren := tcActive;
+      2: FChildren := tcInactive;
+      3: FChildren := tcBoth;
+      else FChildren := tcNone;
+    end;
+    FLocked := FALSE;
+  finally
+    FCloning := FALSE;
+  end;
+end;
+
+class function TTemplate.CreateFromXML(Element: IXMLDOMNode; Owner: string): TTemplate;
+var
+  DataStr: string;
+  Children, Items: IXMLDOMNodeList;
+  Child, Item: IXMLDOMNode;
+  i, j, count, ItemCount: integer;
+  fld: TTemplateExportField;
+  ETag: string;
+
+begin
+  DataStr := '0';
+  SetPiece(DataStr, U, 4, FindXMLAttributeValue(Element, TemplateExportTag[efName]));
+  SetPiece(DataStr, U, 7, Owner);
+  Children := Element.Get_childNodes;
+  try
+    if assigned(Children) then
+    begin
+      count := Children.Length;
+      for i := 0 to Count - 1 do
+      begin
+        Child := Children.Item[i];
+        ETag := Child.NodeName;
+        for fld := low(TTemplateExportField) to high(TTemplateExportField) do
+        begin
+          if(ExportPieces[fld] > 0) and (CompareText(ETag, TemplateExportTag[fld]) = 0) then
+            SetPiece(DataStr, U, ExportPieces[fld], Child.Get_Text);
+        end;
+      end;
+    end
+    else
+      Count := 0;
+    Result := Create(DataStr);
+    Result.FCloning := TRUE;
+    try
+      if assigned(Children) then
+      begin
+        for i := 0 to Count - 1 do
+        begin
+          Child := Children.Item[i];
+          ETag := Child.NodeName;
+          for fld := low(TTemplateExportField) to high(TTemplateExportField) do
+          begin
+            if(ExportPieces[fld] = 0) and (CompareText(ETag, TemplateExportTag[fld]) = 0) then
+            begin
+              case fld of
+                efBoilerplate: Result.SetBoilerplate(GetXMLWPText(Child));
+                efDescription: Result.SetDescription(GetXMLWPText(Child));
+                efItems:
+                  begin
+                    Result.GetItems;
+                    Items := Child.Get_childNodes;
+                    if assigned(Items) then
+                    begin
+                      ItemCount := Items.Length;
+                      for j := 0 to ItemCount - 1 do
+                      begin
+                        Item := Items.Item[j];
+                        if(CompareText(Item.NodeName, XMLTemplateTag) = 0) then
+                          Result.FItems.Add(CreateFromXML(Item, Owner));
+                      end;
+                    end;
+                  end;
+              end;
+            end;
+          end;
+        end;
+      end;
+    finally
+      Result.FCloning := FALSE;
+    end;
+  finally
+    Children := nil;
+  end;
+  Result.BackupItems;
+  Templates.AddObject(Result.ID, Result);
+end;
+
+destructor TTemplate.Destroy;
+begin
+  Unlock;
+  FNodes.Free;
+  if(assigned(FItems)) then FItems.Free;
+  inherited;
+end;
+
+procedure TTemplate.AddChild(Child: TTemplate);
+begin
+  GetItems;
+  if(FItems.IndexOf(Child) < 0) then
+    FItems.Add(Child);
+end;
+
+procedure TTemplate.RemoveChild(Child: TTemplate);
+var
+  idx: integer;
+
+begin
+  GetItems;
+  idx := FItems.IndexOf(Child);
+  if(idx >= 0) and CanModify then
+    FItems.delete(idx);
+end;
+
+function TTemplate.GetItems: TList;
+begin
+  if(not assigned(FItems)) then
+  begin
+    FItems := TList.Create;
+    FCreatingChildren := TRUE;
+    try
+      ExpandTemplate(Self);
+    finally
+      FCreatingChildren := FALSE;
+    end;
+  end;
+  Result := FItems;
+end;
+
+function TTemplate.GetTemplateType: TTemplateType;
+begin
+  Result := FRealType;
+  if(Result in [ttDoc, ttGroup]) and (FExclude) then
+  begin
+    case (Result) of
+      ttDoc:   Result := ttDocEx;
+      ttGroup: Result := ttGroupEx;
+    end;
+  end;
+end;
+
+function TTemplate.GetChildren: TTemplateChildren;
+var
+  i: integer;
+
+begin
+  if((assigned(FItems)) and (not FCreatingChildren)) then
+  begin
+    Result := tcNone;
+    for i := 0 to FItems.Count-1 do
+    begin
+      if(TTemplate(FItems[i]).Active) then
+        Result := TTemplateChildren(ord(Result) or ord(tcActive))
+      else
+        Result := TTemplateChildren(ord(Result) or ord(tcInactive));
+      if(Result = tcBoth) then break;
+    end;
+  end
+  else
+    Result := FChildren;
+end;
+
+procedure TTemplate.SetTemplateType(const Value: TTemplateType);
+begin
+  if(GetTemplateType <> Value) and CanModify then
+  begin
+    if(Value in AllTemplateTrueTypes) then
+      SetRealType(Value)
+    else
+    begin
+      case Value of
+        ttDoc:     begin SetExclude(FALSE); SetRealType(ttDoc);   end;
+        ttGroup:   begin SetExclude(FALSE); SetRealType(ttGroup); end;
+        ttDocEx:   begin SetExclude(TRUE);  SetRealType(ttDoc);   end;
+        ttGroupEx: begin SetExclude(TRUE);  SetRealType(ttGroup); end;
+      end;
+    end;
+  end;
+end;
+
+function TTemplate.GetBoilerplate: string;
+begin
+  Result := '';
+  if FIsReminderDialog or FIsCOMObject then exit;
+  if(RealType in [ttDoc, ttGroup]) then
+  begin
+    if(not FBoilerPlateLoaded) then
+    begin
+      StatusText('Loading Template Boilerplate...');
+      try
+        GetTemplateBoilerplate(FID);
+        FBoilerplate := RPCBrokerV.Results.Text;
+        FBoilerPlateLoaded := TRUE;
+      finally
+        StatusText('');
+      end;
+    end;
+    Result := FBoilerplate;
+  end;
+end;
+
+{ Returns the cumulative boilerplate of a groups items }
+function TTemplate.ItemBoilerplate: string;
+var
+  i, j: integer;
+  Template: TTemplate;
+  GapStr: string;
+
+begin
+  Result := '';
+  if FIsReminderDialog or FIsCOMObject then exit;
+  if(RealType = ttGroup) then
+  begin
+    GetItems;
+    GapStr := '';
+    if(FGap > 0) then
+    begin
+      for j := 1 to FGap do
+        GapStr := GapStr + CRLF;
+    end;
+    if(IndentItems) then
+      inc(uIndentLevel);
+    try
+      for i := 0 to FItems.Count-1 do
+      begin
+        Template := TTemplate(FItems[i]);
+        if(Template.Active and (Template.TemplateType in [ttDoc, ttGroup])) then
+        begin
+          if i > 0 then
+            Result := Result + GapStr;
+          Result := Result + DlgText(TTemplate(FItems[i]).FullBoilerplate,
+                                     TTemplate(FItems[i]).DialogProperties(Self));
+        end;
+      end;
+    finally
+      if(IndentItems) then
+        dec(uIndentLevel);
+    end;
+  end;
+end;
+
+{returns the complete boilerplate, including a group's items }
+function TTemplate.FullBoilerplate: string;
+var
+  Itm: string;
+begin
+  Result := GetBoilerplate;
+  if FIsReminderDialog or FIsCOMObject then exit;
+  Itm := ItemBoilerplate;
+  if(Result <> '') and (Itm <> '') and (copy(Result,length(Result)-1,2) <> CRLF) then
+    Result := Result + CRLF;
+  Result := DlgText(Result, DialogProperties) + Itm;
+end;
+
+{Sets the items boilerplate - does not affect children boilerplates of a group }
+procedure TTemplate.SetBoilerplate(Value: string);
+begin
+  if(FBoilerplate <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(FBoilerPlateLoaded and (not SavedBoilerplate) and ValidID) then
+      begin
+        BBoilerplate := FBoilerplate;
+        SavedBoilerplate := TRUE;
+      end;
+    end;
+    FBoilerplate := Value;
+  end;
+  FBoilerPlateLoaded := TRUE;
+end;
+
+{Gets the object-expanded boilerplated text}
+function TTemplate.GetText: string;
+var
+  OldGettingDialogText: boolean;
+  TmpSL: TStringList;
+
+begin
+  Result := '';
+  if FIsReminderDialog or FIsCOMObject then exit;
+  TmpSL := TStringList.Create;
+  try
+    StatusText('Expanding Boilerplate Text...');
+    try
+      OldGettingDialogText := GettingDialogText;
+      if(IsDialog) then
+      begin
+        GettingDialogText := TRUE;
+        inc(uDlgCount);
+        if not OldGettingDialogText then
+          uIndentLevel := 0;
+      end;
+      try
+        TmpSL.Text := FullBoilerPlate;
+        if Pos('|', TmpSL.Text) > 0 then SetTemplateBPHasObjects(TRUE);
+      finally
+        if(IsDialog) then
+          GettingDialogText := OldGettingDialogText;
+      end;
+      GetTemplateText(TmpSL);
+      if(IsDialog) then
+        FDialogAborted := DoTemplateDialog(TmpSL, 'Template: ' + FPrintName, TemplatePreviewMode);
+      Result := TmpSL.Text;
+    finally
+      StatusText('');
+    end;
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+procedure TTemplate.SetPersonalOwner(Value: Int64);
+var
+  i: integer;
+  ok: boolean;
+
+begin
+  if(FPersonalOwner <> Value) then
+  begin
+    ok := CanModify;
+    if ok then
+    begin
+      with FBkup do
+      begin
+        if(not SavedPersonalOwner) and ValidID then
+        begin
+          BPersonalOwner := FPersonalOwner;
+          SavedPersonalOwner := TRUE;
+        end;
+      end;
+      FPersonalOwner := Value;
+    end;
+  end
+  else
+    ok := TRUE;
+  if ok and (Value = 0) then // No Shared Template can have personal items within it.
+  begin
+    GetItems;
+    for i := 0 to FItems.Count-1 do
+      TTemplate(FItems[i]).SetPersonalOwner(0);
+  end;
+end;
+
+procedure TTemplate.AddNode(Node: Pointer);
+begin
+  if(dmodShared.InEditor) and (FNodes.IndexOfObject(Node) < 0) then
+  begin
+    inc(NodeCount);
+    FNodes.AddObject(IntToStr(NodeCount),Node);
+  end;
+end;
+
+procedure TTemplate.RemoveNode(Node: Pointer);
+var
+  idx: integer;
+
+begin
+  if(dmodShared.InEditor) then
+  begin
+    idx := FNodes.IndexOfObject(Node);
+    if(idx >= 0) then FNodes.Delete(idx);
+  end;
+end;
+
+{ Creates a new Template that looks like the old one, but with a new Owner  }
+{ - an example of where this is needed:  when a shared template in a user's }
+{   personal folder is modified, we need to create a copy of the shared     }
+{   template, make it a personal template, and make the changes to the copy }
+function TTemplate.Clone(Owner: Int64): TTemplate;
+var
+  i: integer;
+
+begin
+  Result := Self;
+  if(FPersonalOwner <> Owner) and (RealType in [ttDoc, ttGroup, ttClass]) then
+  begin
+    Result := TrueClone;
+    Result.FCloning := TRUE;
+    try
+      Result.FID := '0';
+      GetItems;
+      Result.FPersonalOwner := Owner;
+      Result.Expanded := TRUE;
+      Result.GetItems;
+      for i := 0 to Items.Count-1 do
+        Result.Items.Add(Items[i]);
+      Result.BackupItems;
+      Templates.AddObject(Result.ID, Result);
+    finally
+      Result.FCloning := FALSE;
+    end;
+  end;
+end;
+
+{ Creates a duplicate Template - used for backups and comparrisons }
+function TTemplate.TrueClone: TTemplate;
+var
+  Code, DataStr: string;
+
+begin
+  DataStr := ID+U+TemplateTypeCodes[RealType]+U+TemplateActiveCode[Active]+U+PrintName+U;
+  if(Exclude) then
+    DataStr := DataStr + '1'
+  else
+    DataStr := DataStr + '0';
+  case GetChildren of
+    tcActive:    Code := '1';
+    tcInactive:  Code := '2';
+    tcBoth:      Code := '3';
+    else         Code := '0';
+  end;
+  DataStr := DataStr + U + IntToStr(Gap) + U + IntToStr(PersonalOwner) + U + Code + U +
+             BOOLCHAR[Dialog] + U +
+             BOOLCHAR[DisplayOnly] + U +
+             BOOLCHAR[FirstLine] + U +
+             BOOLCHAR[OneItemOnly] + U +
+             BOOLCHAR[HideDlgItems] + U +
+             BOOLCHAR[HideItems] + U +
+             BOOLCHAR[IndentItems] + U +
+             FReminderDialog;
+  SetPiece(DataStr,U,18,BOOLCHAR[Lock]);
+  SetPiece(DataStr,U,19,IntToStr(COMObject));
+  SetPiece(DataStr,U,20,COMParam);
+  SetPiece(DataStr,U,21,FileLink);
+  Result := TTemplate.Create(DataStr);
+  Result.FCloning := TRUE;
+  try
+    Result.SetBoilerplate(GetBoilerplate);
+    Result.SetDescription(GetDescription);
+  finally
+    Result.FCloning := FALSE;
+  end;
+end;
+
+function TTemplate.ItemIENs: string;
+var
+  i: integer;
+
+begin
+  GetItems;
+  Result := '';
+  for i := 0 to FItems.Count-1 do
+    Result := Result + TTemplate(FItems[i]).FID+',';
+end;
+
+function TemplateChildrenCompare(Item1, Item2: Pointer): Integer;
+begin
+  Result := CompareText(TTemplate(Item1).PrintName,TTemplate(Item2).PrintName);
+end;
+
+procedure TTemplate.SortChildren;
+begin
+  GetItems;
+  if (FItems.Count > 1) and CanModify then
+    FItems.Sort(TemplateChildrenCompare);
+end;
+
+procedure TTemplate.BackupItems;
+begin
+  with FBkup do
+  begin
+    if((not SavedItemIENs) and assigned(FItems)) then
+    begin
+      BItemIENs := ItemIENs;
+      SavedItemIENs := TRUE;
+    end;
+  end;
+end;
+
+procedure TTemplate.SetActive(const Value: boolean);
+begin
+  if(FActive <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedActive) and ValidID then
+      begin
+        BActive := FActive;
+        SavedActive := TRUE;
+      end;
+    end;
+    FActive := Value;
+  end;
+end;
+
+procedure TTemplate.SetExclude(const Value: boolean);
+begin
+  if(FExclude <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedExclude) and ValidID then
+      begin
+        BExclude := FExclude;
+        SavedExclude := TRUE;
+      end;
+    end;
+    FExclude := Value;
+  end;
+end;
+
+procedure TTemplate.SetDialog(const Value: boolean);
+begin
+  if(FDialog <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedDialog) and ValidID then
+      begin
+        BDialog := FDialog;
+        SavedDialog := TRUE;
+      end;
+    end;
+    FDialog := Value;
+  end;
+end;
+
+procedure TTemplate.SetGap(const Value: integer);
+begin
+  if(FGap <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedGap) and ValidID then
+      begin
+        BGap := FGap;
+        SavedGap := TRUE;
+      end;
+    end;
+    FGap := Value;
+  end;
+end;
+
+procedure TTemplate.SetPrintName(const Value: string);
+begin
+  if(FPrintName <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedPrintName) and ValidID then
+      begin
+        BPrintName := FPrintName;
+        SavedPrintName := TRUE;
+      end;
+    end;
+    FPrintName := Value;
+  end;
+end;
+
+procedure TTemplate.SetRealType(const Value: TTemplateType);
+begin
+  if(FRealType <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedRealType) and ValidID then
+      begin
+        BRealType := FRealType;
+        SavedRealType := TRUE;
+      end;
+    end;
+    FRealType := Value;
+    if(FFileLink <> '') and (not (FRealType in [ttDoc, ttGroup])) then
+      SetFileLink('');
+  end;
+end;
+
+procedure TTemplate.ClearBackup(ClearItemIENs: boolean = TRUE);
+begin
+  with FBkup do
+  begin
+    SavedPrintName := FALSE;
+    SavedGap := FALSE;
+    SavedRealType := FALSE;
+    SavedActive := FALSE;
+    SavedDisplayOnly := FALSE;
+    SavedFirstLine := FALSE;
+    SavedOneItemOnly := FALSE;
+    SavedHideDlgItems := FALSE;
+    SavedHideItems := FALSE;
+    SavedIndentItems := FALSE;
+    SavedLock := FALSE;
+    SavedExclude := FALSE;
+    SavedDialog := FALSE;
+    SavedPersonalOwner := FALSE;
+    SavedBoilerPlate := FALSE;
+    SavedDescription := FALSE;
+    SavedReminderDialog := FALSE;
+    SavedCOMObject := FALSE;
+    SavedCOMParam := FALSE;
+    SavedFileLink := FALSE;
+    if(ClearItemIENs) then
+    begin
+      if(FExpanded) then
+      begin
+        BItemIENs := ItemIENs;
+        SavedItemIENs := TRUE;
+      end
+      else
+        SavedItemIENs := FALSE;
+    end;
+  end;
+end;
+
+function TTemplate.Changed: boolean;
+begin
+  Result := not ValidID;
+  with FBkup do
+  begin
+    if(not Result) and (SavedPrintName)      then Result := (BPrintName      <> FPrintName);
+    if(not Result) and (SavedGap)            then Result := (BGap            <> FGap);
+    if(not Result) and (SavedRealType)       then Result := (BRealType       <> FRealType);
+    if(not Result) and (SavedActive)         then Result := (BActive         <> FActive);
+    if(not Result) and (SavedDisplayOnly)    then Result := (BDisplayOnly    <> FDisplayOnly);
+    if(not Result) and (SavedFirstLine)      then Result := (BFirstLine      <> FFirstLine);
+    if(not Result) and (SavedOneItemOnly)    then Result := (BOneItemOnly    <> FOneItemOnly);
+    if(not Result) and (SavedHideDlgItems)   then Result := (BHideDlgItems   <> FHideDlgItems);
+    if(not Result) and (SavedHideItems)      then Result := (BHideItems      <> FHideItems);
+    if(not Result) and (SavedIndentItems)    then Result := (BIndentItems    <> FIndentItems);
+    if(not Result) and (SavedLock)           then Result := (BLock           <> FLock);
+    if(not Result) and (SavedExclude)        then Result := (BExclude        <> FExclude);
+    if(not Result) and (SavedDialog)         then Result := (BDialog         <> FDialog);
+    if(not Result) and (SavedPersonalOwner)  then Result := (BPersonalOwner  <> FPersonalOwner);
+    if(not Result) and (SavedReminderDialog) then Result := (BReminderDialog <> FReminderDialog);
+    if(not Result) and (SavedCOMObject)      then Result := (BCOMObject      <> FCOMObject);
+    if(not Result) and (SavedCOMParam)       then Result := (BCOMParam       <> FCOMParam);
+    if(not Result) and (SavedFileLink)       then Result := (BFileLink       <> FFileLink);
+    if(not Result) and (SavedBoilerplate)    then Result := (BBoilerplate    <> FBoilerplate);
+    if(not Result) and (SavedDescription)    then Result := (BDescription    <> FDescription);
+    if(not Result) and (SavedItemIENs)       then Result := (BItemIENs       <> ItemIENs); // Keep last
+  end;
+end;
+
+procedure TTemplate.SetDescription(const Value: string);
+begin
+  if(FDescription <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(FDescriptionLoaded and (not SavedDescription) and ValidID) then
+      begin
+        BDescription := FDescription;
+        SavedDescription := TRUE;
+      end;
+    end;
+    FDescription := Value;
+  end;
+  FDescriptionLoaded := TRUE;
+end;
+
+function TTemplate.GetDescription: string;
+begin
+  if(not FDescriptionLoaded) then
+  begin
+    StatusText('Loading Template Boilerplate...');
+    try
+      LoadTemplateDescription(FID);
+      FDescription := RPCBrokerV.Results.Text;
+    finally
+      StatusText('');
+    end;
+    FDescriptionLoaded := TRUE;
+  end;
+  Result := FDescription;
+end;
+
+procedure TTemplate.SetDisplayOnly(const Value: boolean);
+begin
+  if(FDisplayOnly <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedDisplayOnly) and ValidID then
+      begin
+        BDisplayOnly := FDisplayOnly;
+        SavedDisplayOnly := TRUE;
+      end;
+    end;
+    FDisplayOnly := Value;
+  end;
+end;
+
+procedure TTemplate.SetFirstLine(const Value: boolean);
+begin
+  if(FFirstLine <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedFirstLine) and ValidID then
+      begin
+        BFirstLine := FFirstLine;
+        SavedFirstLine := TRUE;
+      end;
+    end;
+    FFirstLine := Value;
+  end;
+end;
+
+procedure TTemplate.SetHideItems(const Value: boolean);
+begin
+  if(FHideItems <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedHideItems) and ValidID then
+      begin
+        BHideItems := FHideItems;
+        SavedHideItems := TRUE;
+      end;
+    end;
+    FHideItems := Value;
+  end;
+end;
+
+procedure TTemplate.SetIndentItems(const Value: boolean);
+begin
+  if(FIndentItems <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedIndentItems) and ValidID then
+      begin
+        BIndentItems := FIndentItems;
+        SavedIndentItems := TRUE;
+      end;
+    end;
+    FIndentItems := Value;
+  end;
+end;
+
+procedure TTemplate.SetOneItemOnly(const Value: boolean);
+begin
+  if(FOneItemOnly <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedOneItemOnly) and ValidID then
+      begin
+        BOneItemOnly := FOneItemOnly;
+        SavedOneItemOnly := TRUE;
+      end;
+    end;
+    FOneItemOnly := Value;
+  end;
+end;
+
+procedure TTemplate.SetHideDlgItems(const Value: boolean);
+begin
+  if(FHideDlgItems <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedHideDlgItems) and ValidID then
+      begin
+        BHideDlgItems := FHideDlgItems;
+        SavedHideDlgItems := TRUE;
+      end;
+    end;
+    FHideDlgItems := Value;
+  end;
+end;
+
+function TTemplate.DlgID: string;
+begin
+  Result := IntToStr(StrToIntDef(FID, 0));
+  if(Result = '0') then
+  begin
+    if(FLastDlgCnt <> uDlgCount) then
+    begin
+      FLastDlgCnt := uDlgCount;
+      inc(uUniqueIDNum);
+      FLastUniqueID := uUniqueIDNum;
+    end;
+    Result := '-' + inttostr(FLastUniqueID);
+  end;
+end;
+
+function TTemplate.DialogProperties(Parent: TTemplate = nil): string;
+var
+  Show, ToggleItems: boolean;
+  bGap: integer;
+  GroupIdx: string;
+
+begin
+  GroupIdx := '0';
+  bGap := 0;
+  if(assigned(parent)) then
+  begin
+    Show := ((not Parent.HideDlgItems) or (Parent.Boilerplate = ''));
+//    if(Parent.Boilerplate <> '') and (Parent.OneItemOnly) then
+    if(Parent.OneItemOnly) then
+      GroupIdx := Parent.DlgID;
+    if(Parent.RealType = ttGroup) then
+      bGap := Parent.Gap;
+  end
+  else
+    Show := TRUE;
+
+  ToggleItems := ((HideDlgItems) and (Boilerplate <> ''));
+
+  Result := BOOLCHAR[DisplayOnly] +
+            BOOLCHAR[FirstLine] +
+            BOOLCHAR[Show] +
+            BOOLCHAR[ToggleItems] +
+            IntToStr(bGap) +  // Depends on Gap being 1 character in length
+            ';' + GroupIdx + ';' + DlgID;
+  if(assigned(Parent)) then
+    SetPiece(Result, ';', 4, Parent.DlgID);
+  SetPiece(Result,';',5, inttostr(uIndentLevel));
+end;
+
+function TTemplate.GetDialogAborted: boolean;
+begin
+  Result := FDialogAborted;
+  FDialogAborted := FALSE;
+end;
+
+function TTemplate.IsDialog: boolean;
+begin
+  Result := (FDialog and (FRealType = ttGroup));
+end;
+
+function TTemplate.CanExportXML(Data, Fields: TStringList; IndentLevel: integer = 0): boolean;
+var
+  Pad, Tmp: string;
+  i: integer;
+
+begin
+  if BadTemplateName(PrintName) then
+  begin
+    InfoBox('Can not export template.' + CRLF + 'Template has an invalid name: ' +
+      PrintName + '.' + BadNameText, 'Error', MB_OK or MB_ICONERROR);
+    Result := FALSE;
+    exit;
+  end;
+  Result := TRUE;
+  Pad := StringOfChar(' ',IndentLevel);
+  Data.Add(Pad + '<' + XMLTemplateTag + ' ' + TemplateExportTag[efName] + '="' + Text2XML(PrintName) + '">');
+  AddXMLData(Data, Pad, efBlankLines, IntToStr(Gap), '0');
+  if(RealType in AllTemplateRootTypes) then
+    Tmp := TemplateTypeCodes[ttClass]
+  else
+    Tmp := TemplateTypeCodes[RealType];
+  AddXMLData(Data, Pad, efType, Tmp, '');
+  AddXMLData(Data, Pad, efStatus, TemplateActiveCode[Active], '');
+  AddXMLBool(Data, Pad, efExclude, Exclude);
+  AddXMLBool(Data, Pad, efDialog, Dialog);
+  AddXMLBool(Data, Pad, efDisplayOnly, DisplayOnly);
+  AddXMLBool(Data, Pad, efFirstLine, FirstLine);
+  AddXMLBool(Data, Pad, efOneItemOnly, OneItemOnly);
+  AddXMLBool(Data, Pad, efHideDialogItems, HideDlgItems);
+  AddXMLBool(Data, Pad, efHideTreeItems, HideItems);
+  AddXMLBool(Data, Pad, efIndentItems, IndentItems);
+  AddXMLBool(Data, Pad, efLock, Lock);
+  AddXMLList(Data, Fields, Pad, efBoilerplate, GetBoilerplate);
+  AddXMLList(Data, Fields, Pad, efDescription, GetDescription);
+  GetItems;
+  if(FItems.Count > 0) then
+  begin
+    Data.Add(Pad + '  <' + TemplateExportTag[efItems] + '>');
+    for i := 0 to FItems.Count-1 do
+    begin
+      Result := TTemplate(FItems[i]).CanExportXML(Data, Fields, IndentLevel + 4);
+      if(not Result) then exit;
+    end;
+    Data.Add(Pad + '  </' + TemplateExportTag[efItems] + '>');
+  end;
+  Data.Add(Pad + '</' + XMLTemplateTag + '>');
+end;
+
+procedure TTemplate.UpdateImportedFieldNames(List: TStrings);
+const
+  SafeCode = #1 + '^@^' + #2;
+  SafeCodeLen = length(SafeCode); 
+
+var
+  i, p, l1: integer;
+  Tag1, Tag2, tmp: string;
+  First, ok: boolean;
+
+begin
+  GetBoilerplate;
+  ok := TRUE;
+  First := TRUE;
+  for i := 0 to List.Count-1 do
+  begin
+    if(Piece(List[i],U,2) = '0') then
+    begin
+      Tag1 := TemplateFieldBeginSignature + Piece(List[i],U,1) + TemplateFieldEndSignature;
+      Tag2 := TemplateFieldBeginSignature + SafeCode + Piece(List[i],U,3) + TemplateFieldEndSignature;
+      l1 := length(Tag1);
+      repeat
+        p := pos(Tag1, FBoilerplate);
+        if(p > 0) then
+        begin
+          if First then
+          begin
+            ok := CanModify;
+            First := FALSE;
+          end;
+          if ok then
+          begin
+            tmp := copy(FBoilerplate,1,p-1) + Tag2 + copy(FBoilerplate,p+l1, MaxInt);
+            FBoilerplate := tmp;
+          end
+          else
+            p := 0;
+        end;
+      until (p = 0);
+    end;
+    if not ok then break;
+  end;
+  if ok then
+  begin
+    repeat
+      p := pos(SafeCode, FBoilerplate);
+      if(p > 0) then
+        delete(FBoilerplate, p, SafeCodeLen);
+    until (p = 0);
+    GetItems;
+    for i := 0 to FItems.Count-1 do
+      TTemplate(FItems[i]).UpdateImportedFieldNames(List);
+  end;
+end;
+
+procedure TTemplate.SetReminderDialog(const Value: string);
+begin
+  if(FReminderDialog <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedReminderDialog) and ValidID then
+      begin
+        BReminderDialog := FReminderDialog;
+        SavedReminderDialog := TRUE;
+      end;
+    end;
+    FReminderDialog := Value;
+    FIsReminderDialog := (ReminderDialogIEN <> '');
+    if FIsReminderDialog and (not (LinkType in [ltNone, ltTitle])) then
+      SetFileLink('');
+  end;
+end;
+
+function TTemplate.ReminderDialogIEN: string;
+begin
+  Result := Piece(FReminderDialog,U,1);
+  if Result = '0' then
+    Result := '';
+end;
+
+function TTemplate.ReminderDialogName: string;
+begin
+  Result := Piece(FReminderDialog,U,2);
+end;
+
+function TTemplate.CanModify: boolean;
+begin
+  if(not FLocked) and ValidID and (not FCloning) then
+  begin
+    FLocked := LockTemplate(FID);
+    Result := FLocked;
+    if(not FLocked) then
+    begin
+      if(assigned(dmodShared.OnTemplateLock)) then
+        dmodShared.OnTemplateLock(Self)
+      else
+        ShowMsg(Format(TemplateLockedText, [FPrintName]));
+    end;
+  end
+  else
+    Result := TRUE;
+end;
+
+function TTemplate.ValidID: boolean;
+begin
+  Result := ((FID <> '0') and (FID <> ''));
+end;
+
+procedure TTemplate.Unlock;
+begin
+  if FLocked and ValidID then
+  begin
+    UnlockTemplate(FID);
+    FLocked := FALSE;
+  end;
+end;
+
+procedure TTemplate.SetLock(const Value: boolean);
+begin
+  if(FLock <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedLock) and ValidID then
+      begin
+        BLock := FLock;
+        SavedLock := TRUE;
+      end;
+    end;
+    FLock := Value;
+  end;
+end;
+
+function TTemplate.IsLocked: boolean;
+begin
+  Result := (FLock and (FPersonalOwner = 0)) or AutoLock;
+end;
+
+procedure TTemplate.SetCOMObject(const Value: integer);
+begin
+  if(FCOMObject <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedCOMObject) and ValidID then
+      begin
+        BCOMObject := FCOMObject;
+        SavedCOMObject := TRUE;
+      end;
+    end;
+    FCOMObject := Value;
+    FIsCOMObject := (FCOMObject > 0);
+  end;
+end;
+
+procedure TTemplate.SetCOMParam(const Value: string);
+begin
+  if(FCOMParam <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedCOMParam) and ValidID then
+      begin
+        BCOMParam := FCOMParam;
+        SavedCOMParam := TRUE;
+      end;
+    end;
+    FCOMParam := Value;
+  end;
+end;
+
+procedure TTemplate.AssignFileLink(const Value: string; Force: boolean);
+var
+  i: integer;
+  DoItems: boolean;
+
+begin
+  DoItems := Force;
+  if(FFileLink <> Value) and CanModify then
+  begin
+    with FBkup do
+    begin
+      if(not SavedFileLink) and ValidID then
+      begin
+        BFileLink := FFileLink;
+        SavedFileLink := TRUE;
+      end;
+    end;
+    FFileLink := Value;
+    FLinkName := '';
+    if (not (LinkType in [ltNone, ltTitle])) then
+      SetReminderDialog('');
+    if not DoItems then
+      DoItems := (FFileLink <> '');
+  end;
+  if DoItems then
+  begin
+    GetItems;
+    for i := 0 to FItems.Count-1 do
+      TTemplate(FItems[i]).AssignFileLink('', TRUE);
+  end;
+end;
+
+procedure TTemplate.SetFileLink(const Value: string);
+begin
+  AssignFileLink(Value, FALSE);
+end;
+
+//function TTemplate.COMObjectText(const DefText: string = ''; DocInfo: string = ''): string;
+function TTemplate.COMObjectText(DefText: string; var DocInfo: string): string;
+var
+  p2: string;
+
+begin
+  Result := '';
+  if (FCOMObject > 0) then
+  begin
+    p2 := '';
+    if (LinkType <> ltNone) and (LinkIEN <> '') then
+      p2 := LinkPassCode[LinkType] + '=' + LinkIEN;
+    Result := DefText;
+    GetCOMObjectText(FCOMObject, p2, FCOMParam, Result, DocInfo);
+  end;
+end;
+
+function TTemplate.AutoLock: boolean;
+begin
+  Result := FIsCOMObject;
+  if (not Result) and (not (RealType in AllTemplateLinkTypes)) and (LinkType <> ltNone) then
+      Result := TRUE;
+end;
+
+function TTemplate.LinkType: TTemplateLinkType;
+var
+  idx: TTemplateLinkType;
+
+begin
+  Result := ltNone;
+  case FRealType of
+    ttTitles:     Result := ltTitle;
+    ttConsults:   Result := ltConsult;
+    ttProcedures: Result := ltProcedure;
+    else
+      begin
+        for idx := succ(low(TTemplateLinkType)) to high(TTemplateLinkType) do
+        begin
+          if pos(LinkGlobal[idx], FFileLink) > 0 then
+          begin
+            Result := idx;
+            break;
+          end;
+        end;
+      end;
+  end;
+end;
+
+function TTemplate.LinkIEN: string;
+begin
+  Result := piece(FFileLink,';',1);
+end;
+
+function TTemplate.LinkName: string;
+begin
+  if FLinkName = '' then
+    FLinkName := GetLinkName(LinkIEN, LinkType);
+  Result := FLinkName;
+end;
+
+procedure TTemplate.ExecuteReminderDialog(OwningForm: TForm);
+var
+  sts: integer;
+  txt: string;
+
+begin
+  sts := IsRemDlgAllowed(ReminderDialogIEN);
+  txt := '';
+  if sts < 0 then
+    txt := 'Reminder Dialog has been Deleted or Deactivated.'
+  else
+  if sts = 0 then
+    txt := 'You are not Authorized to use this Reminder Dialog in a Template'
+  else
+    ViewRemDlgTemplateFromForm(OwningForm, Self, TRUE, TRUE);
+  if txt <> '' then
+    InfoBox(txt,'Can not use Reminder Dialog', MB_OK or MB_ICONERROR);
+end;
+
+procedure ExpandEmbeddedFields(flds: TStringList);
+{07/26/01  S Monson    Procedure to take a list of fields and expand it with any
+                       embedded fields.  Handles embedded field loops
+                       (self referencing loops.)}
+var
+  i,pos1,pos2: integer;
+  ifield: TTemplateField;
+  estring,next: string;
+begin
+  if flds.count < 1 then
+    Exit;
+  i := 0;
+  repeat
+    ifield := GetTemplateField(flds[i],False);
+    if ifield <> nil then
+      begin
+        estring := '';
+        case ifield.FldType of
+          dftText,dftComboBox,dftButton,
+          dftCheckBoxes,dftRadioButtons: estring := ifield.items;
+          dftHyperlink: estring := ifield.EditDefault;
+        end;
+        while (estring <> '') do
+          begin
+            pos1 := pos(TemplateFieldBeginSignature,estring);
+            if pos1 > 0 then
+              begin
+                estring := copy(estring,(pos1 + length(TemplateFieldBeginSignature)),maxint);
+                pos2 := pos(TemplateFieldEndSignature,estring);
+                if pos2 > 0 then
+                  begin
+                    next := copy(estring,1,pos2-1);
+                    delete(estring,1,pos2-1+length(TemplateFieldEndSignature));
+                    if flds.IndexOf(next) < 0 then
+                      flds.add(next);
+                  end
+                else
+                  estring := '';
+              end
+            else
+              estring := '';
+          end;
+        inc(i);
+      end
+    else
+      flds.Delete(i);
+  until (i > flds.count-1);
+end;
+
+function MakeXMLParamTIU(ANoteID: string; ANoteRec: TEditNoteRec): string;
+var
+  tmpList: TStringList;
+begin
+  tmpList := TStringList.Create;
+  try
+    tmpList.Add('<TIU_DOC>');
+    tmpList.Add('  <DOC_IEN>' + ANoteID + '</DOC_IEN>');
+    tmpList.Add('  <AUTHOR_IEN>' + IntToStr(ANoteRec.Author) + '</AUTHOR_IEN>');
+    tmpList.Add('  <AUTHOR_NAME>' + ExternalName(ANoteRec.Author, 200) + '</AUTHOR_NAME>');
+    tmpList.Add('</TIU_DOC>');
+  finally
+    Result := tmpList.Text;
+    tmpList.Free;
+  end;
+end;
+
+function MakeXMLParamTIU(ADCSummID: string; ADCSummRec: TEditDCSummRec): string;
+var
+  tmpList: TStringList;
+begin
+  tmpList := TStringList.Create;
+  try
+    tmpList.Add('<TIU_DOC>');
+    tmpList.Add('  <DOC_IEN>' + ADCSummID + '</DOC_IEN>');
+    tmpList.Add('  <AUTHOR_IEN>' + IntToStr(ADCSummRec.Dictator) + '</AUTHOR_IEN>');
+    tmpList.Add('  <AUTHOR_NAME>' + ExternalName(ADCSummRec.Dictator, 200) + '</AUTHOR_NAME>');
+    tmpList.Add('</TIU_DOC>');
+  finally
+    Result := tmpList.Text;
+    tmpList.Free;
+  end;
+end;
+
+function GetXMLParamReturnValueTIU(DocInfo, ParamTag: string): string;
+var
+  XMLDoc: IXMLDOMDocument;
+  RootElement: IXMLDOMElement;
+  TagElement: IXMLDOMNode;
+const
+  NoIE5 = 'You must have Internet Explorer 5 or better installed to %s Templates';
+  NoIE5Header = 'Need Internet Explorer 5';
+  TIUHeader = 'TIU_DOC';
+begin
+//  After ExecuteTemplateOrBoilerPlate, DocInfo parameter may contain return value of AUTHOR.
+//  Call this function at that point to get the value from the XML formatted parameter that's returned.
+  Result := '';
+  try
+    XMLDoc := CoDOMDocument.Create;
+  except
+    InfoBox(Format(NoIE5, ['use COM']), NoIE5Header, MB_OK);
+    exit;
+  end;
+  try
+    if assigned(XMLDoc) then
+    begin
+      XMLDoc.preserveWhiteSpace := TRUE;
+      if DocInfo <> '' then
+        XMLDoc.LoadXML(DocInfo);
+      RootElement := XMLDoc.DocumentElement;
+      if not assigned(RootElement) then exit;
+      try
+        if(RootElement.tagName <> TIUHeader) then exit
+        else
+          begin
+            TagElement := FindXMLElement(RootElement, ParamTag);
+            if assigned(TagElement) then
+              Result := TagElement.Text
+            else Result := '';
+          end;
+      finally
+        TagElement := nil;
+        RootElement := nil;
+      end;
+    end;
+  finally
+    XMLDoc := nil;
+  end;
+end;
+
+function TTemplate.ReminderWipe: string;
+begin
+   Result := Piece(FReminderDialog,U,3);
+end;
+
+// -------- CQ #8665 - RV ------------
+procedure UpdatePersonalObjects;
+var
+  i: integer;
+begin
+  if not assigned(uPersonalObjects) then
+  begin
+    uPersonalObjects := TStringList.Create;
+    GetAllowedPersonalObjects;
+    for i := 0 to RPCBrokerV.Results.Count-1 do
+      uPersonalObjects.Add(Piece(RPCBrokerV.Results[i],U,1));
+    uPersonalObjects.Sorted := TRUE;
+  end;
+end;
+// -----end CQ #8665 ------------
+
+
+procedure SetTemplateDialogCanceled(value: Boolean);
+begin
+  uTemplateDialogCanceled := value;
+end;  
+
+function WasTemplateDialogCanceled: Boolean;
+begin
+  Result := uTemplateDialogCanceled;
+end;
+
+procedure SetTemplateBPHasObjects(value: Boolean);
+begin
+  uTemplateBPHasObjects := value;
+end;  
+
+function TemplateBPHasObjects: Boolean;
+begin
+  Result := uTemplateBPHasObjects;
+end;
+
+initialization
+
+finalization
+  ReleaseTemplates;
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/VERGENCECONTEXTORLib_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/VERGENCECONTEXTORLib_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/VERGENCECONTEXTORLib_TLB.pas	(revision 1676)
@@ -0,0 +1,1749 @@
+unit VERGENCECONTEXTORLib_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.88.1.0.1.0  $
+// File generated on 2/9/2004 9:12:53 AM from Type Library described below.
+
+// *************************************************************************//
+// NOTE:                                                                      
+// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
+// which return objects that may need to be explicitly created via a function 
+// call prior to any access via the property. These items have been disabled  
+// in order to prevent accidental use from within the object inspector. You   
+// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
+// removing them from the $IFDEF blocks. However, such items must still be    
+// programmatically created via a method of the appropriate CoClass before    
+// they can be used.                                                          
+// ************************************************************************ //
+// Type Lib: D:\Development\BDK32_p40\Source\VergenceContextor.dll (1)
+// IID\LCID: {30AFBABD-5FD3-11D3-8727-0060B0B5E137}\0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// Errors:
+//   Hint: Member 'Set' of 'IResponseDialogAccessor' changed to 'Set_'
+//   Error creating palette bitmap of (TContextor) : Invalid GUID format
+//   Error creating palette bitmap of (TContextItemCollection) : Invalid GUID format
+//   Error creating palette bitmap of (TContextItem) : Invalid GUID format
+//   Error creating palette bitmap of (TResponseDialog) : Invalid GUID format
+//   Error creating palette bitmap of (TContextorParticipant) : Invalid GUID format
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+interface
+
+uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  VERGENCECONTEXTORLibMajorVersion = 1;
+  VERGENCECONTEXTORLibMinorVersion = 0;
+
+  LIBID_VERGENCECONTEXTORLib: TGUID = '{30AFBABD-5FD3-11D3-8727-0060B0B5E137}';
+
+  DIID__IContextChangesSink: TGUID = '{6BED8971-B3DD-11D3-8736-0060B0B5E137}';
+  IID_IContextor: TGUID = '{8D879F5D-5FE6-11D3-8727-0060B0B5E137}';
+  IID_IContextParticipant: TGUID = '{3E3DD272-998E-11D0-808D-00A0240943E4}';
+  IID_IContextItemCollection: TGUID = '{AC4C0271-615A-11D3-84B5-0000861FDD4F}';
+  IID_IContextItem: TGUID = '{AC4C0273-615A-11D3-84B5-0000861FDD4F}';
+  IID_IResponseContextChange: TGUID = '{CBC6D968-9F6D-416A-8AA7-99172E588DF0}';
+  IID_IResponseDialogAccessor: TGUID = '{86592071-F3BA-11D3-8181-005004A0F801}';
+  IID_IContextChangesSink: TGUID = '{0B437E31-620E-11D3-84B6-0000861FDD4F}';
+  IID_IResponseDialog: TGUID = '{9D33ECF1-8277-11D3-8525-0000861FDD4F}';
+  CLASS_Contextor: TGUID = '{D5C9CC98-5FDB-11D3-8727-0060B0B5E137}';
+  CLASS_ContextorControl: TGUID = '{8778ACF7-5CA9-11D3-8727-0060B0B5E137}';
+  CLASS_ContextItemCollection: TGUID = '{AC4C0272-615A-11D3-84B5-0000861FDD4F}';
+  CLASS_ContextItem: TGUID = '{AC4C0274-615A-11D3-84B5-0000861FDD4F}';
+  CLASS_ResponseDialog: TGUID = '{9D33ECF2-8277-11D3-8525-0000861FDD4F}';
+  IID_ISetHook: TGUID = '{8D879FDD-5FE6-11D3-8727-0060B0B5E137}';
+  CLASS_ContextorParticipant: TGUID = '{4BA034A2-D0FA-11D3-818B-0050049598B2}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum __MIDL___MIDL_itf_VergenceContextor_0000_0002
+type
+  __MIDL___MIDL_itf_VergenceContextor_0000_0002 = TOleEnum;
+const
+  CsNotRunning = $00000001;
+  CsParticipating = $00000002;
+  CsSuspended = $00000003;
+
+// Constants for enum __MIDL___MIDL_itf_VergenceContextor_0000_0001
+type
+  __MIDL___MIDL_itf_VergenceContextor_0000_0001 = TOleEnum;
+const
+  ApNone = $00000001;
+  ApGet = $00000002;
+  ApSet = $00000003;
+
+// Constants for enum __MIDL___MIDL_itf_VergenceContextor_0000_0003
+type
+  __MIDL___MIDL_itf_VergenceContextor_0000_0003 = TOleEnum;
+const
+  UrCommit = $00000001;
+  UrCancel = $00000002;
+  UrBreak = $00000003;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  _IContextChangesSink = dispinterface;
+  IContextor = interface;
+  IContextorDisp = dispinterface;
+  IContextParticipant = interface;
+  IContextParticipantDisp = dispinterface;
+  IContextItemCollection = interface;
+  IContextItemCollectionDisp = dispinterface;
+  IContextItem = interface;
+  IContextItemDisp = dispinterface;
+  IResponseContextChange = interface;
+  IResponseContextChangeDisp = dispinterface;
+  IResponseDialogAccessor = interface;
+  IResponseDialogAccessorDisp = dispinterface;
+  IContextChangesSink = interface;
+  IContextChangesSinkDisp = dispinterface;
+  IResponseDialog = interface;
+  IResponseDialogDisp = dispinterface;
+  ISetHook = interface;
+  ISetHookDisp = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  Contextor = IContextor;
+  ContextorControl = IContextor;
+  ContextItemCollection = IContextItemCollection;
+  ContextItem = IContextItem;
+  ResponseDialog = IResponseDialog;
+  ContextorParticipant = IContextParticipant;
+
+
+// *********************************************************************//
+// Declaration of structures, unions and aliases.                         
+// *********************************************************************//
+
+  ContextorState = __MIDL___MIDL_itf_VergenceContextor_0000_0002; 
+  AccessPrivilege = __MIDL___MIDL_itf_VergenceContextor_0000_0001; 
+  UserResponse = __MIDL___MIDL_itf_VergenceContextor_0000_0003; 
+
+// *********************************************************************//
+// DispIntf:  _IContextChangesSink
+// Flags:     (4096) Dispatchable
+// GUID:      {6BED8971-B3DD-11D3-8736-0060B0B5E137}
+// *********************************************************************//
+  _IContextChangesSink = dispinterface
+    ['{6BED8971-B3DD-11D3-8736-0060B0B5E137}']
+    procedure Pending(const aContextItemCollection: IDispatch); dispid 1;
+    procedure Committed; dispid 2;
+    procedure Canceled; dispid 3;
+  end;
+
+// *********************************************************************//
+// Interface: IContextor
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {8D879F5D-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  IContextor = interface(IDispatch)
+    ['{8D879F5D-5FE6-11D3-8727-0060B0B5E137}']
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString); safecall;
+    procedure Suspend; safecall;
+    procedure Resume; safecall;
+    function  Get_State: ContextorState; safecall;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege; safecall;
+    function  Get_CurrentContext: IContextItemCollection; safecall;
+    procedure StartContextChange; safecall;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse; safecall;
+    procedure SetSurveyResponse(const reason: WideString); safecall;
+    function  Get_NotificationFilter: WideString; safecall;
+    procedure Set_NotificationFilter(const filter: WideString); safecall;
+    function  Get_Name: WideString; safecall;
+    property State: ContextorState read Get_State;
+    property CurrentContext: IContextItemCollection read Get_CurrentContext;
+    property NotificationFilter: WideString read Get_NotificationFilter write Set_NotificationFilter;
+    property Name: WideString read Get_Name;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextorDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {8D879F5D-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  IContextorDisp = dispinterface
+    ['{8D879F5D-5FE6-11D3-8727-0060B0B5E137}']
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString); dispid 1;
+    procedure Suspend; dispid 2;
+    procedure Resume; dispid 3;
+    property State: ContextorState readonly dispid 4;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege; dispid 5;
+    property CurrentContext: IContextItemCollection readonly dispid 6;
+    procedure StartContextChange; dispid 7;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse; dispid 8;
+    procedure SetSurveyResponse(const reason: WideString); dispid 9;
+    property NotificationFilter: WideString dispid 10;
+    property Name: WideString readonly dispid 11;
+  end;
+
+// *********************************************************************//
+// Interface: IContextParticipant
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {3E3DD272-998E-11D0-808D-00A0240943E4}
+// *********************************************************************//
+  IContextParticipant = interface(IDispatch)
+    ['{3E3DD272-998E-11D0-808D-00A0240943E4}']
+    function  ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString; safecall;
+    procedure ContextChangesAccepted(contextCoupon: Integer); safecall;
+    procedure ContextChangesCanceled(contextCoupon: Integer); safecall;
+    procedure CommonContextTerminated; safecall;
+    procedure Ping; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextParticipantDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {3E3DD272-998E-11D0-808D-00A0240943E4}
+// *********************************************************************//
+  IContextParticipantDisp = dispinterface
+    ['{3E3DD272-998E-11D0-808D-00A0240943E4}']
+    function  ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString; dispid 1610743808;
+    procedure ContextChangesAccepted(contextCoupon: Integer); dispid 1610743809;
+    procedure ContextChangesCanceled(contextCoupon: Integer); dispid 1610743810;
+    procedure CommonContextTerminated; dispid 1610743811;
+    procedure Ping; dispid 1610743812;
+  end;
+
+// *********************************************************************//
+// Interface: IContextItemCollection
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0271-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItemCollection = interface(IDispatch)
+    ['{AC4C0271-615A-11D3-84B5-0000861FDD4F}']
+    function  Count: Integer; safecall;
+    procedure Add(const aContextItem: IContextItem); safecall;
+    procedure Remove(const contextItemName: WideString); safecall;
+    procedure RemoveAll; safecall;
+    function  Present(key: OleVariant): IContextItem; safecall;
+    function  Get__NewEnum: IUnknown; safecall;
+    function  Item(key: OleVariant): IContextItem; safecall;
+    property _NewEnum: IUnknown read Get__NewEnum;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextItemCollectionDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0271-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItemCollectionDisp = dispinterface
+    ['{AC4C0271-615A-11D3-84B5-0000861FDD4F}']
+    function  Count: Integer; dispid 1;
+    procedure Add(const aContextItem: IContextItem); dispid 2;
+    procedure Remove(const contextItemName: WideString); dispid 3;
+    procedure RemoveAll; dispid 4;
+    function  Present(key: OleVariant): IContextItem; dispid 5;
+    property _NewEnum: IUnknown readonly dispid -4;
+    function  Item(key: OleVariant): IContextItem; dispid 0;
+  end;
+
+// *********************************************************************//
+// Interface: IContextItem
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0273-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItem = interface(IDispatch)
+    ['{AC4C0273-615A-11D3-84B5-0000861FDD4F}']
+    function  Get_Subject: WideString; safecall;
+    procedure Set_Subject(const pVal: WideString); safecall;
+    function  Get_Role: WideString; safecall;
+    procedure Set_Role(const pVal: WideString); safecall;
+    function  Get_Prefix: WideString; safecall;
+    procedure Set_Prefix(const pVal: WideString); safecall;
+    function  Get_Suffix: WideString; safecall;
+    procedure Set_Suffix(const pVal: WideString); safecall;
+    function  Get_Name: WideString; safecall;
+    procedure Set_Name(const pVal: WideString); safecall;
+    function  Get_Value: WideString; safecall;
+    procedure Set_Value(const pVal: WideString); safecall;
+    function  Clone: IContextItem; safecall;
+    property Subject: WideString read Get_Subject write Set_Subject;
+    property Role: WideString read Get_Role write Set_Role;
+    property Prefix: WideString read Get_Prefix write Set_Prefix;
+    property Suffix: WideString read Get_Suffix write Set_Suffix;
+    property Name: WideString read Get_Name write Set_Name;
+    property Value: WideString read Get_Value write Set_Value;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextItemDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {AC4C0273-615A-11D3-84B5-0000861FDD4F}
+// *********************************************************************//
+  IContextItemDisp = dispinterface
+    ['{AC4C0273-615A-11D3-84B5-0000861FDD4F}']
+    property Subject: WideString dispid 1;
+    property Role: WideString dispid 2;
+    property Prefix: WideString dispid 3;
+    property Suffix: WideString dispid 4;
+    property Name: WideString dispid 5;
+    property Value: WideString dispid 6;
+    function  Clone: IContextItem; dispid 7;
+  end;
+
+// *********************************************************************//
+// Interface: IResponseContextChange
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {CBC6D968-9F6D-416A-8AA7-99172E588DF0}
+// *********************************************************************//
+  IResponseContextChange = interface(IDispatch)
+    ['{CBC6D968-9F6D-416A-8AA7-99172E588DF0}']
+    procedure StartResponseContextChange; safecall;
+    function  EndResponseContextChange(commit: WordBool; 
+                                       const aContextItemCollection: IContextItemCollection; 
+                                       var noContinue: WordBool): OleVariant; safecall;
+    procedure CommitContextChange; safecall;
+    procedure CancelContextChange; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IResponseContextChangeDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {CBC6D968-9F6D-416A-8AA7-99172E588DF0}
+// *********************************************************************//
+  IResponseContextChangeDisp = dispinterface
+    ['{CBC6D968-9F6D-416A-8AA7-99172E588DF0}']
+    procedure StartResponseContextChange; dispid 1;
+    function  EndResponseContextChange(commit: WordBool; 
+                                       const aContextItemCollection: IContextItemCollection; 
+                                       var noContinue: WordBool): OleVariant; dispid 2;
+    procedure CommitContextChange; dispid 3;
+    procedure CancelContextChange; dispid 4;
+  end;
+
+// *********************************************************************//
+// Interface: IResponseDialogAccessor
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {86592071-F3BA-11D3-8181-005004A0F801}
+// *********************************************************************//
+  IResponseDialogAccessor = interface(IDispatch)
+    ['{86592071-F3BA-11D3-8181-005004A0F801}']
+    procedure Reset; safecall;
+    procedure Set_(const aResponseDialog: IResponseDialog); safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IResponseDialogAccessorDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {86592071-F3BA-11D3-8181-005004A0F801}
+// *********************************************************************//
+  IResponseDialogAccessorDisp = dispinterface
+    ['{86592071-F3BA-11D3-8181-005004A0F801}']
+    procedure Reset; dispid 1;
+    procedure Set_(const aResponseDialog: IResponseDialog); dispid 2;
+  end;
+
+// *********************************************************************//
+// Interface: IContextChangesSink
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {0B437E31-620E-11D3-84B6-0000861FDD4F}
+// *********************************************************************//
+  IContextChangesSink = interface(IDispatch)
+    ['{0B437E31-620E-11D3-84B6-0000861FDD4F}']
+    procedure Pending(const aContextItemCollection: IDispatch); safecall;
+    procedure Committed; safecall;
+    procedure Canceled; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IContextChangesSinkDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {0B437E31-620E-11D3-84B6-0000861FDD4F}
+// *********************************************************************//
+  IContextChangesSinkDisp = dispinterface
+    ['{0B437E31-620E-11D3-84B6-0000861FDD4F}']
+    procedure Pending(const aContextItemCollection: IDispatch); dispid 1;
+    procedure Committed; dispid 2;
+    procedure Canceled; dispid 3;
+  end;
+
+// *********************************************************************//
+// Interface: IResponseDialog
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {9D33ECF1-8277-11D3-8525-0000861FDD4F}
+// *********************************************************************//
+  IResponseDialog = interface(IDispatch)
+    ['{9D33ECF1-8277-11D3-8525-0000861FDD4F}']
+    function  ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IResponseDialogDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {9D33ECF1-8277-11D3-8525-0000861FDD4F}
+// *********************************************************************//
+  IResponseDialogDisp = dispinterface
+    ['{9D33ECF1-8277-11D3-8525-0000861FDD4F}']
+    function  ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse; dispid 1;
+  end;
+
+// *********************************************************************//
+// Interface: ISetHook
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {8D879FDD-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  ISetHook = interface(IDispatch)
+    ['{8D879FDD-5FE6-11D3-8727-0060B0B5E137}']
+    procedure SetParticipant(const aContextParticipant: IContextParticipant); safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  ISetHookDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {8D879FDD-5FE6-11D3-8727-0060B0B5E137}
+// *********************************************************************//
+  ISetHookDisp = dispinterface
+    ['{8D879FDD-5FE6-11D3-8727-0060B0B5E137}']
+    procedure SetParticipant(const aContextParticipant: IContextParticipant); dispid 1;
+  end;
+
+// *********************************************************************//
+// The Class CoContextor provides a Create and CreateRemote method to          
+// create instances of the default interface IContextor exposed by              
+// the CoClass Contextor. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextor = class
+    class function Create: IContextor;
+    class function CreateRemote(const MachineName: string): IContextor;
+  end;
+
+  TContextorPending = procedure(Sender: TObject; var aContextItemCollection: OleVariant) of object;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextor
+// Help String      : Vergence Contextor
+// Default Interface: IContextor
+// Def. Intf. DISP? : No
+// Event   Interface: _IContextChangesSink
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextorProperties= class;
+{$ENDIF}
+  TContextor = class(TOleServer)
+  private
+    FOnPending: TContextorPending;
+    FOnCommitted: TNotifyEvent;
+    FOnCanceled: TNotifyEvent;
+    FIntf:        IContextor;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextorProperties;
+    function      GetServerProperties: TContextorProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextor;
+  protected
+    procedure InitServerData; override;
+    procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
+    function  Get_State: ContextorState;
+    function  Get_CurrentContext: IContextItemCollection;
+    function  Get_NotificationFilter: WideString;
+    procedure Set_NotificationFilter(const filter: WideString);
+    function  Get_Name: WideString;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextor);
+    procedure Disconnect; override;
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString);
+    procedure Suspend;
+    procedure Resume;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege;
+    procedure StartContextChange;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse;
+    procedure SetSurveyResponse(const reason: WideString);
+    property  DefaultInterface: IContextor read GetDefaultInterface;
+    property State: ContextorState read Get_State;
+    property CurrentContext: IContextItemCollection read Get_CurrentContext;
+    property Name: WideString read Get_Name;
+    property NotificationFilter: WideString read Get_NotificationFilter write Set_NotificationFilter;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextorProperties read GetServerProperties;
+{$ENDIF}
+    property OnPending: TContextorPending read FOnPending write FOnPending;
+    property OnCommitted: TNotifyEvent read FOnCommitted write FOnCommitted;
+    property OnCanceled: TNotifyEvent read FOnCanceled write FOnCanceled;
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextor
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextorProperties = class(TPersistent)
+  private
+    FServer:    TContextor;
+    function    GetDefaultInterface: IContextor;
+    constructor Create(AServer: TContextor);
+  protected
+    function  Get_State: ContextorState;
+    function  Get_CurrentContext: IContextItemCollection;
+    function  Get_NotificationFilter: WideString;
+    procedure Set_NotificationFilter(const filter: WideString);
+    function  Get_Name: WideString;
+  public
+    property DefaultInterface: IContextor read GetDefaultInterface;
+  published
+    property NotificationFilter: WideString read Get_NotificationFilter write Set_NotificationFilter;
+  end;
+{$ENDIF}
+
+
+
+// *********************************************************************//
+// OLE Control Proxy class declaration
+// Control Name     : TContextorControl
+// Help String      : Vergence ContextorControl
+// Default Interface: IContextor
+// Def. Intf. DISP? : No
+// Event   Interface: _IContextChangesSink
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+  TContextorControlPending = procedure(Sender: TObject; const aContextItemCollection: IDispatch) of object;
+
+  TContextorControl = class(TOleControl)
+  private
+    FOnPending: TContextorControlPending;
+    FOnCommitted: TNotifyEvent;
+    FOnCanceled: TNotifyEvent;
+    FIntf: IContextor;
+    function  GetControlInterface: IContextor;
+  protected
+    procedure CreateControl;
+    procedure InitControlData; override;
+    function  Get_CurrentContext: IContextItemCollection;
+  public
+    procedure Run(const applicationLabel: WideString; const passcode: WideString; survey: WordBool; 
+                  const initialNotificationFilter: WideString);
+    procedure Suspend;
+    procedure Resume;
+    function  GetPrivilege(const subj: WideString): AccessPrivilege;
+    procedure StartContextChange;
+    function  EndContextChange(commit: WordBool; 
+                               const aContextItemCollection: IContextItemCollection): UserResponse;
+    procedure SetSurveyResponse(const reason: WideString);
+    property  ControlInterface: IContextor read GetControlInterface;
+    property  DefaultInterface: IContextor read GetControlInterface;
+    property State: TOleEnum index 4 read GetTOleEnumProp;
+    property CurrentContext: IContextItemCollection read Get_CurrentContext;
+    property Name: WideString index 11 read GetWideStringProp;
+  published
+    property NotificationFilter: WideString index 10 read GetWideStringProp write SetWideStringProp stored False;
+    property OnPending: TContextorControlPending read FOnPending write FOnPending;
+    property OnCommitted: TNotifyEvent read FOnCommitted write FOnCommitted;
+    property OnCanceled: TNotifyEvent read FOnCanceled write FOnCanceled;
+  end;
+
+// *********************************************************************//
+// The Class CoContextItemCollection provides a Create and CreateRemote method to          
+// create instances of the default interface IContextItemCollection exposed by              
+// the CoClass ContextItemCollection. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextItemCollection = class
+    class function Create: IContextItemCollection;
+    class function CreateRemote(const MachineName: string): IContextItemCollection;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextItemCollection
+// Help String      : Vergence ContextItemCollection
+// Default Interface: IContextItemCollection
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextItemCollectionProperties= class;
+{$ENDIF}
+  TContextItemCollection = class(TOleServer)
+  private
+    FIntf:        IContextItemCollection;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextItemCollectionProperties;
+    function      GetServerProperties: TContextItemCollectionProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextItemCollection;
+  protected
+    procedure InitServerData; override;
+    function  Get__NewEnum: IUnknown;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextItemCollection);
+    procedure Disconnect; override;
+    function  Count: Integer;
+    procedure Add(const aContextItem: IContextItem);
+    procedure Remove(const contextItemName: WideString);
+    procedure RemoveAll;
+    function  Present(key: OleVariant): IContextItem;
+    function  Item(key: OleVariant): IContextItem;
+    property  DefaultInterface: IContextItemCollection read GetDefaultInterface;
+    property _NewEnum: IUnknown read Get__NewEnum;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextItemCollectionProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextItemCollection
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextItemCollectionProperties = class(TPersistent)
+  private
+    FServer:    TContextItemCollection;
+    function    GetDefaultInterface: IContextItemCollection;
+    constructor Create(AServer: TContextItemCollection);
+  protected
+    function  Get__NewEnum: IUnknown;
+  public
+    property DefaultInterface: IContextItemCollection read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoContextItem provides a Create and CreateRemote method to          
+// create instances of the default interface IContextItem exposed by              
+// the CoClass ContextItem. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextItem = class
+    class function Create: IContextItem;
+    class function CreateRemote(const MachineName: string): IContextItem;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextItem
+// Help String      : Vergence ContextItem
+// Default Interface: IContextItem
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextItemProperties= class;
+{$ENDIF}
+  TContextItem = class(TOleServer)
+  private
+    FIntf:        IContextItem;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextItemProperties;
+    function      GetServerProperties: TContextItemProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextItem;
+  protected
+    procedure InitServerData; override;
+    function  Get_Subject: WideString;
+    procedure Set_Subject(const pVal: WideString);
+    function  Get_Role: WideString;
+    procedure Set_Role(const pVal: WideString);
+    function  Get_Prefix: WideString;
+    procedure Set_Prefix(const pVal: WideString);
+    function  Get_Suffix: WideString;
+    procedure Set_Suffix(const pVal: WideString);
+    function  Get_Name: WideString;
+    procedure Set_Name(const pVal: WideString);
+    function  Get_Value: WideString;
+    procedure Set_Value(const pVal: WideString);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextItem);
+    procedure Disconnect; override;
+    function  Clone: IContextItem;
+    property  DefaultInterface: IContextItem read GetDefaultInterface;
+    property Subject: WideString read Get_Subject write Set_Subject;
+    property Role: WideString read Get_Role write Set_Role;
+    property Prefix: WideString read Get_Prefix write Set_Prefix;
+    property Suffix: WideString read Get_Suffix write Set_Suffix;
+    property Name: WideString read Get_Name write Set_Name;
+    property Value: WideString read Get_Value write Set_Value;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextItemProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextItem
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextItemProperties = class(TPersistent)
+  private
+    FServer:    TContextItem;
+    function    GetDefaultInterface: IContextItem;
+    constructor Create(AServer: TContextItem);
+  protected
+    function  Get_Subject: WideString;
+    procedure Set_Subject(const pVal: WideString);
+    function  Get_Role: WideString;
+    procedure Set_Role(const pVal: WideString);
+    function  Get_Prefix: WideString;
+    procedure Set_Prefix(const pVal: WideString);
+    function  Get_Suffix: WideString;
+    procedure Set_Suffix(const pVal: WideString);
+    function  Get_Name: WideString;
+    procedure Set_Name(const pVal: WideString);
+    function  Get_Value: WideString;
+    procedure Set_Value(const pVal: WideString);
+  public
+    property DefaultInterface: IContextItem read GetDefaultInterface;
+  published
+    property Subject: WideString read Get_Subject write Set_Subject;
+    property Role: WideString read Get_Role write Set_Role;
+    property Prefix: WideString read Get_Prefix write Set_Prefix;
+    property Suffix: WideString read Get_Suffix write Set_Suffix;
+    property Name: WideString read Get_Name write Set_Name;
+    property Value: WideString read Get_Value write Set_Value;
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoResponseDialog provides a Create and CreateRemote method to          
+// create instances of the default interface IResponseDialog exposed by              
+// the CoClass ResponseDialog. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoResponseDialog = class
+    class function Create: IResponseDialog;
+    class function CreateRemote(const MachineName: string): IResponseDialog;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TResponseDialog
+// Help String      : Vergence ResponseDialog
+// Default Interface: IResponseDialog
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TResponseDialogProperties= class;
+{$ENDIF}
+  TResponseDialog = class(TOleServer)
+  private
+    FIntf:        IResponseDialog;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TResponseDialogProperties;
+    function      GetServerProperties: TResponseDialogProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IResponseDialog;
+  protected
+    procedure InitServerData; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IResponseDialog);
+    procedure Disconnect; override;
+    function  ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse;
+    property  DefaultInterface: IResponseDialog read GetDefaultInterface;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TResponseDialogProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TResponseDialog
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TResponseDialogProperties = class(TPersistent)
+  private
+    FServer:    TResponseDialog;
+    function    GetDefaultInterface: IResponseDialog;
+    constructor Create(AServer: TResponseDialog);
+  protected
+  public
+    property DefaultInterface: IResponseDialog read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoContextorParticipant provides a Create and CreateRemote method to          
+// create instances of the default interface IContextParticipant exposed by              
+// the CoClass ContextorParticipant. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoContextorParticipant = class
+    class function Create: IContextParticipant;
+    class function CreateRemote(const MachineName: string): IContextParticipant;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TContextorParticipant
+// Help String      : ContextorParticipant Class
+// Default Interface: IContextParticipant
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TContextorParticipantProperties= class;
+{$ENDIF}
+  TContextorParticipant = class(TOleServer)
+  private
+    FIntf:        IContextParticipant;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TContextorParticipantProperties;
+    function      GetServerProperties: TContextorParticipantProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IContextParticipant;
+  protected
+    procedure InitServerData; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IContextParticipant);
+    procedure Disconnect; override;
+    function  ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString;
+    procedure ContextChangesAccepted(contextCoupon: Integer);
+    procedure ContextChangesCanceled(contextCoupon: Integer);
+    procedure CommonContextTerminated;
+    procedure Ping;
+    property  DefaultInterface: IContextParticipant read GetDefaultInterface;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TContextorParticipantProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TContextorParticipant
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TContextorParticipantProperties = class(TPersistent)
+  private
+    FServer:    TContextorParticipant;
+    function    GetDefaultInterface: IContextParticipant;
+    constructor Create(AServer: TContextorParticipant);
+  protected
+  public
+    property DefaultInterface: IContextParticipant read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+{
+procedure Register;
+}
+implementation
+
+uses ComObj;
+
+class function CoContextor.Create: IContextor;
+begin
+  Result := CreateComObject(CLASS_Contextor) as IContextor;
+end;
+
+class function CoContextor.CreateRemote(const MachineName: string): IContextor;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_Contextor) as IContextor;
+end;
+
+procedure TContextor.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{D5C9CC98-5FDB-11D3-8727-0060B0B5E137}';
+    IntfIID:   '{8D879F5D-5FE6-11D3-8727-0060B0B5E137}';
+    EventIID:  '{6BED8971-B3DD-11D3-8736-0060B0B5E137}';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextor.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    ConnectEvents(punk);
+    Fintf:= punk as IContextor;
+  end;
+end;
+
+procedure TContextor.ConnectTo(svrIntf: IContextor);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+  ConnectEvents(FIntf);
+end;
+
+procedure TContextor.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    DisconnectEvents(FIntf);
+    FIntf := nil;
+  end;
+end;
+
+function TContextor.GetDefaultInterface: IContextor;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextor.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextorProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextor.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextor.GetServerProperties: TContextorProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+procedure TContextor.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
+begin
+  case DispID of
+    -1: Exit;  // DISPID_UNKNOWN
+   1: if Assigned(FOnPending) then
+            FOnPending(Self, Params[0] {const IDispatch});
+   2: if Assigned(FOnCommitted) then
+            FOnCommitted(Self);
+   3: if Assigned(FOnCanceled) then
+            FOnCanceled(Self);
+  end; {case DispID}
+end;
+
+function  TContextor.Get_State: ContextorState;
+begin
+  Result := DefaultInterface.Get_State;
+end;
+
+function  TContextor.Get_CurrentContext: IContextItemCollection;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TContextor.Get_NotificationFilter: WideString;
+begin
+  Result := DefaultInterface.Get_NotificationFilter;
+end;
+
+procedure TContextor.Set_NotificationFilter(const filter: WideString);
+begin
+  DefaultInterface.Set_NotificationFilter(filter);
+end;
+
+function  TContextor.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+procedure TContextor.Run(const applicationLabel: WideString; const passcode: WideString; 
+                         survey: WordBool; const initialNotificationFilter: WideString);
+begin
+  DefaultInterface.Run(applicationLabel, passcode, survey, initialNotificationFilter);
+end;
+
+procedure TContextor.Suspend;
+begin
+  DefaultInterface.Suspend;
+end;
+
+procedure TContextor.Resume;
+begin
+  DefaultInterface.Resume;
+end;
+
+function  TContextor.GetPrivilege(const subj: WideString): AccessPrivilege;
+begin
+  Result := DefaultInterface.GetPrivilege(subj);
+end;
+
+procedure TContextor.StartContextChange;
+begin
+  DefaultInterface.StartContextChange;
+end;
+
+function  TContextor.EndContextChange(commit: WordBool; 
+                                      const aContextItemCollection: IContextItemCollection): UserResponse;
+begin
+  Result := DefaultInterface.EndContextChange(commit, aContextItemCollection);
+end;
+
+procedure TContextor.SetSurveyResponse(const reason: WideString);
+begin
+  DefaultInterface.SetSurveyResponse(reason);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextorProperties.Create(AServer: TContextor);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextorProperties.GetDefaultInterface: IContextor;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TContextorProperties.Get_State: ContextorState;
+begin
+  Result := DefaultInterface.Get_State;
+end;
+
+function  TContextorProperties.Get_CurrentContext: IContextItemCollection;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+function  TContextorProperties.Get_NotificationFilter: WideString;
+begin
+  Result := DefaultInterface.Get_NotificationFilter;
+end;
+
+procedure TContextorProperties.Set_NotificationFilter(const filter: WideString);
+begin
+  DefaultInterface.Set_NotificationFilter(filter);
+end;
+
+function  TContextorProperties.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+{$ENDIF}
+
+procedure TContextorControl.InitControlData;
+const
+  CEventDispIDs: array [0..2] of DWORD = (
+    $00000001, $00000002, $00000003);
+  CControlData: TControlData2 = (
+    ClassID: '{8778ACF7-5CA9-11D3-8727-0060B0B5E137}';
+    EventIID: '{6BED8971-B3DD-11D3-8736-0060B0B5E137}';
+    EventCount: 3;
+    EventDispIDs: @CEventDispIDs;
+    LicenseKey: nil (*HR:$80004002*);
+    Flags: $00000000;
+    Version: 401);
+begin
+  ControlData := @CControlData;
+  TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnPending) - Cardinal(Self);
+end;
+
+procedure TContextorControl.CreateControl;
+
+  procedure DoCreate;
+  begin
+    FIntf := IUnknown(OleObject) as IContextor;
+  end;
+
+begin
+  if FIntf = nil then DoCreate;
+end;
+
+function TContextorControl.GetControlInterface: IContextor;
+begin
+  CreateControl;
+  Result := FIntf;
+end;
+
+function  TContextorControl.Get_CurrentContext: IContextItemCollection;
+begin
+  Result := DefaultInterface.Get_CurrentContext;
+end;
+
+procedure TContextorControl.Run(const applicationLabel: WideString; const passcode: WideString; 
+                                survey: WordBool; const initialNotificationFilter: WideString);
+begin
+  DefaultInterface.Run(applicationLabel, passcode, survey, initialNotificationFilter);
+end;
+
+procedure TContextorControl.Suspend;
+begin
+  DefaultInterface.Suspend;
+end;
+
+procedure TContextorControl.Resume;
+begin
+  DefaultInterface.Resume;
+end;
+
+function  TContextorControl.GetPrivilege(const subj: WideString): AccessPrivilege;
+begin
+  Result := DefaultInterface.GetPrivilege(subj);
+end;
+
+procedure TContextorControl.StartContextChange;
+begin
+  DefaultInterface.StartContextChange;
+end;
+
+function  TContextorControl.EndContextChange(commit: WordBool; 
+                                             const aContextItemCollection: IContextItemCollection): UserResponse;
+begin
+  Result := DefaultInterface.EndContextChange(commit, aContextItemCollection);
+end;
+
+procedure TContextorControl.SetSurveyResponse(const reason: WideString);
+begin
+  DefaultInterface.SetSurveyResponse(reason);
+end;
+
+class function CoContextItemCollection.Create: IContextItemCollection;
+begin
+  Result := CreateComObject(CLASS_ContextItemCollection) as IContextItemCollection;
+end;
+
+class function CoContextItemCollection.CreateRemote(const MachineName: string): IContextItemCollection;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ContextItemCollection) as IContextItemCollection;
+end;
+
+procedure TContextItemCollection.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{AC4C0272-615A-11D3-84B5-0000861FDD4F}';
+    IntfIID:   '{AC4C0271-615A-11D3-84B5-0000861FDD4F}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextItemCollection.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IContextItemCollection;
+  end;
+end;
+
+procedure TContextItemCollection.ConnectTo(svrIntf: IContextItemCollection);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TContextItemCollection.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TContextItemCollection.GetDefaultInterface: IContextItemCollection;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextItemCollection.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextItemCollectionProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextItemCollection.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextItemCollection.GetServerProperties: TContextItemCollectionProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TContextItemCollection.Get__NewEnum: IUnknown;
+begin
+  Result := DefaultInterface.Get__NewEnum;
+end;
+
+function  TContextItemCollection.Count: Integer;
+begin
+  Result := DefaultInterface.Count;
+end;
+
+procedure TContextItemCollection.Add(const aContextItem: IContextItem);
+begin
+  DefaultInterface.Add(aContextItem);
+end;
+
+procedure TContextItemCollection.Remove(const contextItemName: WideString);
+begin
+  DefaultInterface.Remove(contextItemName);
+end;
+
+procedure TContextItemCollection.RemoveAll;
+begin
+  DefaultInterface.RemoveAll;
+end;
+
+function  TContextItemCollection.Present(key: OleVariant): IContextItem;
+begin
+  Result := DefaultInterface.Present(key);
+end;
+
+function  TContextItemCollection.Item(key: OleVariant): IContextItem;
+begin
+  Result := DefaultInterface.Item(key);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextItemCollectionProperties.Create(AServer: TContextItemCollection);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextItemCollectionProperties.GetDefaultInterface: IContextItemCollection;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TContextItemCollectionProperties.Get__NewEnum: IUnknown;
+begin
+  Result := DefaultInterface.Get__NewEnum;
+end;
+
+{$ENDIF}
+
+class function CoContextItem.Create: IContextItem;
+begin
+  Result := CreateComObject(CLASS_ContextItem) as IContextItem;
+end;
+
+class function CoContextItem.CreateRemote(const MachineName: string): IContextItem;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ContextItem) as IContextItem;
+end;
+
+procedure TContextItem.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{AC4C0274-615A-11D3-84B5-0000861FDD4F}';
+    IntfIID:   '{AC4C0273-615A-11D3-84B5-0000861FDD4F}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextItem.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IContextItem;
+  end;
+end;
+
+procedure TContextItem.ConnectTo(svrIntf: IContextItem);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TContextItem.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TContextItem.GetDefaultInterface: IContextItem;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextItem.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextItemProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextItem.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextItem.GetServerProperties: TContextItemProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TContextItem.Get_Subject: WideString;
+begin
+  Result := DefaultInterface.Get_Subject;
+end;
+
+procedure TContextItem.Set_Subject(const pVal: WideString);
+begin
+  DefaultInterface.Set_Subject(pVal);
+end;
+
+function  TContextItem.Get_Role: WideString;
+begin
+  Result := DefaultInterface.Get_Role;
+end;
+
+procedure TContextItem.Set_Role(const pVal: WideString);
+begin
+  DefaultInterface.Set_Role(pVal);
+end;
+
+function  TContextItem.Get_Prefix: WideString;
+begin
+  Result := DefaultInterface.Get_Prefix;
+end;
+
+procedure TContextItem.Set_Prefix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Prefix(pVal);
+end;
+
+function  TContextItem.Get_Suffix: WideString;
+begin
+  Result := DefaultInterface.Get_Suffix;
+end;
+
+procedure TContextItem.Set_Suffix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Suffix(pVal);
+end;
+
+function  TContextItem.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+procedure TContextItem.Set_Name(const pVal: WideString);
+begin
+  DefaultInterface.Set_Name(pVal);
+end;
+
+function  TContextItem.Get_Value: WideString;
+begin
+  Result := DefaultInterface.Get_Value;
+end;
+
+procedure TContextItem.Set_Value(const pVal: WideString);
+begin
+  DefaultInterface.Set_Value(pVal);
+end;
+
+function  TContextItem.Clone: IContextItem;
+begin
+  Result := DefaultInterface.Clone;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextItemProperties.Create(AServer: TContextItem);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextItemProperties.GetDefaultInterface: IContextItem;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TContextItemProperties.Get_Subject: WideString;
+begin
+  Result := DefaultInterface.Get_Subject;
+end;
+
+procedure TContextItemProperties.Set_Subject(const pVal: WideString);
+begin
+  DefaultInterface.Set_Subject(pVal);
+end;
+
+function  TContextItemProperties.Get_Role: WideString;
+begin
+  Result := DefaultInterface.Get_Role;
+end;
+
+procedure TContextItemProperties.Set_Role(const pVal: WideString);
+begin
+  DefaultInterface.Set_Role(pVal);
+end;
+
+function  TContextItemProperties.Get_Prefix: WideString;
+begin
+  Result := DefaultInterface.Get_Prefix;
+end;
+
+procedure TContextItemProperties.Set_Prefix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Prefix(pVal);
+end;
+
+function  TContextItemProperties.Get_Suffix: WideString;
+begin
+  Result := DefaultInterface.Get_Suffix;
+end;
+
+procedure TContextItemProperties.Set_Suffix(const pVal: WideString);
+begin
+  DefaultInterface.Set_Suffix(pVal);
+end;
+
+function  TContextItemProperties.Get_Name: WideString;
+begin
+  Result := DefaultInterface.Get_Name;
+end;
+
+procedure TContextItemProperties.Set_Name(const pVal: WideString);
+begin
+  DefaultInterface.Set_Name(pVal);
+end;
+
+function  TContextItemProperties.Get_Value: WideString;
+begin
+  Result := DefaultInterface.Get_Value;
+end;
+
+procedure TContextItemProperties.Set_Value(const pVal: WideString);
+begin
+  DefaultInterface.Set_Value(pVal);
+end;
+
+{$ENDIF}
+
+class function CoResponseDialog.Create: IResponseDialog;
+begin
+  Result := CreateComObject(CLASS_ResponseDialog) as IResponseDialog;
+end;
+
+class function CoResponseDialog.CreateRemote(const MachineName: string): IResponseDialog;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ResponseDialog) as IResponseDialog;
+end;
+
+procedure TResponseDialog.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{9D33ECF2-8277-11D3-8525-0000861FDD4F}';
+    IntfIID:   '{9D33ECF1-8277-11D3-8525-0000861FDD4F}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TResponseDialog.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IResponseDialog;
+  end;
+end;
+
+procedure TResponseDialog.ConnectTo(svrIntf: IResponseDialog);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TResponseDialog.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TResponseDialog.GetDefaultInterface: IResponseDialog;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TResponseDialog.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TResponseDialogProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TResponseDialog.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TResponseDialog.GetServerProperties: TResponseDialogProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TResponseDialog.ProcessSurveyResults(responses: OleVariant; noContinue: WordBool): UserResponse;
+begin
+  Result := DefaultInterface.ProcessSurveyResults(responses, noContinue);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TResponseDialogProperties.Create(AServer: TResponseDialog);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TResponseDialogProperties.GetDefaultInterface: IResponseDialog;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+{$ENDIF}
+
+class function CoContextorParticipant.Create: IContextParticipant;
+begin
+  Result := CreateComObject(CLASS_ContextorParticipant) as IContextParticipant;
+end;
+
+class function CoContextorParticipant.CreateRemote(const MachineName: string): IContextParticipant;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_ContextorParticipant) as IContextParticipant;
+end;
+
+procedure TContextorParticipant.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{4BA034A2-D0FA-11D3-818B-0050049598B2}';
+    IntfIID:   '{3E3DD272-998E-11D0-808D-00A0240943E4}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TContextorParticipant.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IContextParticipant;
+  end;
+end;
+
+procedure TContextorParticipant.ConnectTo(svrIntf: IContextParticipant);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TContextorParticipant.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TContextorParticipant.GetDefaultInterface: IContextParticipant;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TContextorParticipant.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TContextorParticipantProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TContextorParticipant.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TContextorParticipant.GetServerProperties: TContextorParticipantProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TContextorParticipant.ContextChangesPending(contextCoupon: Integer; var reason: WideString): WideString;
+begin
+  Result := DefaultInterface.ContextChangesPending(contextCoupon, reason);
+end;
+
+procedure TContextorParticipant.ContextChangesAccepted(contextCoupon: Integer);
+begin
+  DefaultInterface.ContextChangesAccepted(contextCoupon);
+end;
+
+procedure TContextorParticipant.ContextChangesCanceled(contextCoupon: Integer);
+begin
+  DefaultInterface.ContextChangesCanceled(contextCoupon);
+end;
+
+procedure TContextorParticipant.CommonContextTerminated;
+begin
+  DefaultInterface.CommonContextTerminated;
+end;
+
+procedure TContextorParticipant.Ping;
+begin
+  DefaultInterface.Ping;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TContextorParticipantProperties.Create(AServer: TContextorParticipant);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TContextorParticipantProperties.GetDefaultInterface: IContextParticipant;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+{$ENDIF}
+{
+procedure Register;
+begin
+  RegisterComponents('Kernel',[TContextorControl]);
+  RegisterComponents('Kernel',[TContextor, TContextItemCollection, TContextItem, TResponseDialog,
+    TContextorParticipant]);
+end;
+}
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/fVitalsDate.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/fVitalsDate.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/fVitalsDate.dfm	(revision 1676)
@@ -0,0 +1,84 @@
+inherited frmVitalsDate: TfrmVitalsDate
+  Left = 193
+  Top = 381
+  Caption = 'Vitals Date & Time'
+  ClientHeight = 60
+  ClientWidth = 355
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 363
+  ExplicitHeight = 87
+  DesignSize = (
+    355
+    60)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 8
+    Top = 12
+    Width = 151
+    Height = 13
+    Caption = 'Enter Vital Entry Date and Time:'
+  end
+  object dteVitals: TORDateBox [1]
+    Tag = 11
+    Left = 167
+    Top = 8
+    Width = 133
+    Height = 21
+    TabOrder = 0
+    DateOnly = False
+    RequireTime = True
+    Caption = 'Enter Vital Entry Date and Time:'
+  end
+  object btnOK: TButton [2]
+    Left = 195
+    Top = 36
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = '&OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 2
+  end
+  object btnCancel: TButton [3]
+    Left = 275
+    Top = 36
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = '&Cancel'
+    ModalResult = 2
+    TabOrder = 3
+  end
+  object btnNow: TButton [4]
+    Left = 307
+    Top = 8
+    Width = 43
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = 'NOW'
+    TabOrder = 1
+    OnClick = btnNowClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = dteVitals'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnNow'
+        'Status = stsDefault')
+      (
+        'Component = frmVitalsDate'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/fVitalsDate.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/fVitalsDate.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/fVitalsDate.pas	(revision 1676)
@@ -0,0 +1,44 @@
+unit fVitalsDate;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORDtTm, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmVitalsDate = class(TfrmBase508Form)
+    dteVitals: TORDateBox;
+    Label1: TLabel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    btnNow: TButton;
+    procedure btnNowClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmVitalsDate: TfrmVitalsDate;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  ORFn;
+  
+procedure TfrmVitalsDate.btnNowClick(Sender: TObject);
+begin
+  dteVitals.Text := 'NOW';
+end;
+
+procedure TfrmVitalsDate.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/rVitals.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/rVitals.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/rVitals.pas	(revision 1676)
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////////////////////////
+//Modifed: 9/18/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Changed function ValAndStoreVitals to return the string indicating the value
+//   that failed.
+////////////////////////////////////////////////////////////////////////////////
+
+unit rVitals;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn;
+
+procedure SaveVitals(VitalList: TStringList);
+Procedure GetLastVital(Dest: TStrings; const PatientID: string);  //*DFN*
+function VerifyVital(typ,rte,unt: String):boolean;
+function ValAndStoreVitals(VitalList: TStringList):string;      //9/18/98
+Procedure GetVitalFromNoteIEN(Dest: TStrings; const PatientID: string; NoteIEN: Integer);  //*DFN*
+Procedure GetVitalsFromEncDateTime(Dest: TStrings; const PatientID: string; datetime: TFMDateTime);  //*DFN*
+procedure LoadUserVitalPreferences;
+procedure SaveUserVitalPreferences;
+function GetVList(Loc: integer): TStringList;
+
+var
+  uVitalsMetric: boolean = FALSE;
+  uVitCVPmmHg: boolean = FALSE;
+
+implementation
+
+var
+  uOldVitalsMetric: boolean = FALSE;
+  uOldVitCVPmmHg: boolean = FALSE;
+  uVitalList: TStringList = nil;
+  uLastVitalLoc: integer = -1;
+
+procedure SaveVitals(VitalList: TStringList);
+begin
+  CallV('ORWVITALS SAVE', [VitalList]);
+end;
+
+procedure GetLastVital(Dest: TStrings; const PatientID: string);  //*DFN*
+var
+  IDString: String;
+begin
+  IDString := patientid;  //*DFN*
+  CallV('ORQQVI VITALS', [IDString]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function VerifyVital(typ,rte,unt: String):boolean;
+begin
+  result := False;
+  CallV('ORQQVI2 VITALS RATE CHECK',[typ,rte,unt]);
+  if RPCBrokerV.results[0] = '1' then
+    result := True;
+end;
+
+
+////////////////////////////////////////////////////////////////////////////////
+//Modifed: 9/18/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Changed function ValAndStoreVitals to return the string indicating the value
+//   that failed.
+////////////////////////////////////////////////////////////////////////////////
+function ValAndStoreVitals(VitalList: TStringList):string;
+begin
+  CallV('ORQQVI2 VITALS VAL & STORE',[VitalList]);
+  if RPCBrokerV.results[0] >= '0' then
+    result := 'True'  //stored ok
+  else
+    result := Piece(RPCBrokerV.results[1],U,2) + ': '+Piece(RPCBrokerV.results[1],U,3)+' Value: '+
+      Piece(RPCBrokerV.results[1],U,4);
+end;
+
+Procedure GetVitalFromNoteIEN(Dest: TStrings; const PatientID: string; NoteIEN: Integer);  //*DFN*
+var
+  NoteIENStr,IDString: String;
+begin
+  IDString := patientid;  //*DFN*
+  NoteIENStr := IntToStr(NoteIen);
+  CallV('ORQQVI NOTEVIT', [IDString, NoteIENStr]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+Procedure GetVitalsFromEncDateTime(Dest: TStrings; const PatientID: string; DateTime: TFMDateTime);  //*DFN*
+var
+  EncDate,IDString: String;
+begin
+  IDString := patientid;  //*DFN*
+  EncDate := FloatToStr(DateTime);
+  CallV('ORQQVI VITALS', [IDString, EncDate]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadUserVitalPreferences;
+var
+  Tmp: string;
+begin
+  Tmp := sCallV('ORQQVI3 GETVPREF', []);
+  uVitalsMetric := (Piece(Tmp,U,1) = '1');
+  uVitCVPmmHg   := (Piece(Tmp,U,2) = '1');
+  uOldVitalsMetric := uVitalsMetric;
+  uOldVitCVPmmHg := uVitCVPmmHg;
+end;
+
+procedure SaveUserVitalPreferences;
+var
+  P1, P2: string;
+
+begin
+  // Don't same same value loaded, since saving is at user level,
+  //                     and loading may be at a different level
+  if(uOldVitalsMetric = uVitalsMetric) then P1 := '' else P1 := BOOLCHAR[uVitalsMetric];
+  if(uOldVitCVPmmHg   = uVitCVPmmHg)   then P2 := '' else P2 := BOOLCHAR[uVitCVPmmHg];
+  CallV('ORQQVI3 SETVPREF', [P1, P2]);
+end;
+
+function GetVList(Loc: integer): TStringList;
+var
+  GetList: boolean;
+
+begin
+  GetList := TRUE;
+  if not assigned(uVitalList) then
+    uVitalList := TStringList.Create
+  else
+  if Loc = uLastVitalLoc then
+    GetList := FALSE;
+  if(GetList) then
+  begin
+    uLastVitalLoc := Loc;
+    CallV('ORQQVI3 GETVLIST', [Loc]);
+    if(RPCBrokerV.Results.Count > 0) then
+      RPCBrokerV.Results.Delete(0);
+    FastAssign(RPCBrokerV.Results, uVitalList);
+  end;
+  Result := uVitalList;
+end;
+
+initialization
+
+finalization
+  KillObj(@uVitalList);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/uVitals.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/uVitals.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Vitals/uVitals.pas	(revision 1676)
@@ -0,0 +1,690 @@
+unit uVitals;
+{ Old class TVital currently not used - commented out at bottom of unit }
+
+interface
+
+uses
+  SysUtils, Dialogs, Controls, Windows, Classes, ORClasses, ORCtrls, ORFn, Forms
+  , TRPCB
+  ;
+
+const
+  NoVitalOverrideValue = '^None^';
+
+type
+  TVitalType = (vtUnknown, vtTemp, vtPulse, vtResp, vtBP, vtHeight, vtWeight, vtPain,
+                vtPO2, vtCVP, vtCircum);
+  TValidVitalTypes = vtTemp..vtCircum;
+
+procedure InitPainCombo(cboPain: TORComboBox);
+procedure ConvertVital(VType: TVitalType; var VValue, VUnit: string);
+function GetVitalStr(VType: TVitalType; rte, unt, UserStr, DateStr: string): string;
+function GetVitalUser: string;
+procedure AssignVitals2List(List: TStrings; ADateTime: TFMDateTime;
+                       ALocation, ABP, ATemp, ATempUnits,
+                       AResp, APulse, AHeight, AHeightUnits,
+                       AWeight, AWeightUnits, APain: string);
+function VitalInvalid(VitalControl: TControl; UnitsControl: TControl = nil;
+                      OverrideValue: string = NoVitalOverrideValue): boolean;
+function VitalControlTag(VType: TVitalType; UnitControl: boolean = FALSE): integer;
+function ConvertHeight2Inches(Ht: string): string;
+function FormatVitalForNote(VitalStr: string):String;
+function ConvertVitalData(const Value: string; VitalType: TVitalType; UnitType: string = ''): string;
+procedure VitalsFrameCreated(Frame: TFrame);
+function ValidVitalsDate(var ADate: TFMDateTime; SkipFirst: boolean = FALSE; Show: boolean = true): boolean;
+function IsNumericWeight(const x: string): Boolean;
+procedure CloseVitalsDLL;
+
+const
+  VitalPCECodes: array[TValidVitalTypes] of string =
+                                        { vtTemp      } ('TMP',
+                                        { vtPulse     }  'PU',
+                                        { vtResp      }  'RS',
+                                        { vtBP        }  'BP',
+                                        { vtHeight    }  'HT',
+                                        { vtWeight    }  'WT',
+                                        { vtPain      }  'PN',
+                                        { vtPO2       }  'PO2',
+                                        { vtCVP       }  'CVP',
+                                        { vtCircum    }  'CG');
+
+
+  VitalCodes: array[TValidVitalTypes] of string =
+                                        { vtTemp      } ('T',
+                                        { vtPulse     }  'P',
+                                        { vtResp      }  'R',
+                                        { vtBP        }  'BP',
+                                        { vtHeight    }  'HT',
+                                        { vtWeight    }  'WT',
+                                        { vtPain      }  'PN',
+                                        { vtPO2       }  'PO2',
+                                        { vtCVP       }  'CVP',
+                                        { vtCircum    }  'CG');
+
+  TAG_VITTEMP    = 2;
+  TAG_VITPULSE   = 4;
+  TAG_VITRESP    = 3;
+  TAG_VITBP      = 1;
+  TAG_VITHEIGHT  = 5;
+  TAG_VITWEIGHT  = 6;
+  TAG_VITTEMPUNIT= 7;
+  TAG_VITHTUNIT  = 8;
+  TAG_VITWTUNIT  = 9;
+  TAG_VITPAIN    = 10;
+  TAG_VITDATE    = 11;
+
+  VitalDateStr     = 'VST^DT^';
+  VitalPatientStr  = 'VST^PT^';
+  VitalLocationStr = 'VST^HL^';
+
+  GMV_CONTEXT = 'OR CPRS GUI CHART';
+  GMV_APP_SIGNATURE = 'CPRS';
+  GMV_DEFAULT_TEMPLATE = '';
+
+type
+  VitalTags = TAG_VITBP..TAG_VITPAIN;
+
+  TGMV_VitalsEnterForm = function(
+        aBroker:TRPCBroker;
+        aPatient, aLocation, aTemplate,aSignature:String;
+        aDateTime:TDateTime): TCustomForm; stdcall;
+
+  TGMV_VitalsEnterDLG = function(
+        aBroker:TRPCBroker;
+        aDFN, aLocation, aTemplate,aSignature:String;
+        aDateTime:TDateTime;
+        aName,anInfo:String): Integer; stdcall;
+
+  TGFM_VitalsViewDLG = function(
+        aBroker:TRPCBroker;
+        aDFN, aLocation,
+        DateStart, DateStop,
+        aSignature,
+        aContextIn,aContextOut,
+        aName,anInfo,aHospitalName:String): Integer; stdcall;
+
+  TGMV_VitalsViewForm = function(
+        aBroker:TRPCBroker;
+        aDFN, aLocation,
+        DateStart, DateStop,
+        aSignature,
+        aContextIn,aContextOut,
+        aName,anInfo,
+        aDynamicParameter {HospitolName^Vital Type Abbreviation} :String): TCustomForm; stdcall;
+
+  TGMV_LatestVitalsList = function (
+        aBroker:TRPCBroker;
+        aDFN,
+        aDelim:String;
+        bSilent:Boolean
+        ): TStringList; stdcall;
+
+  TGMV_VitalsExit = Procedure;
+
+var
+  VitalsDLLHandle : THandle = 0;
+//  DLLForceClose : Boolean = False;  // jm - removed as part of timeout fix
+
+
+const
+  VitalTagSet = [TAG_VITBP..TAG_VITPAIN];
+  VitalDateTagSet = [TAG_VITBP..TAG_VITDATE];
+
+  VitalTagCodes: array[VitalTags] of TVitalType =
+                            { TAG_VITBP         } (vtBP,
+                            { TAG_VITTEMP       }  vtTemp,
+                            { TAG_VITRESP       }  vtResp,
+                            { TAG_VITPULSE      }  vtPulse,
+                            { TAG_VITHEIGHT     }  vtHeight,
+                            { TAG_VITWEIGHT     }  vtWeight,
+                            { TAG_VITTEMPUNIT   }  vtTemp,
+                            { TAG_VITHTUNIT     }  vtHeight,
+                            { TAG_VITWTUNIT     }  vtWeight,
+                            { TAG_VITPAIN       }  vtPain);
+
+  VitalDesc: array[TVitalType] of string =
+                                  { vtUnknown   } ('Unknown',
+                                  { vtTemp      }  'Temperature',
+                                  { vtPulse     }  'Pulse',
+                                  { vtResp      }  'Respiration',
+                                  { vtBP        }  'Blood Pressure',
+                                  { vtHeight    }  'Height',
+                                  { vtWeight    }  'Weight',
+                                  { vtPain      }  'Pain Score',
+                                  { vtPO2       }  'Pulse Oximetry',
+                                  { vtCVP       }  'Central Venous Pressure',
+                                  { vtCircum    }  'Circumference/Girth');
+
+  VitalFormatedDesc: array[TValidVitalTypes] of string =
+                                  { vtTemp      } ('Temperature ',
+                                  { vtPulse     }  'Pulse       ',
+                                  { vtResp      }  'Resp        ',
+                                  { vtBP        }  'Blood Press. ',
+                                  { vtHeight    }  'Height      ',
+                                  { vtWeight    }  'Weight      ',
+                                  { vtPain      }  'Pain Scale. ',
+                                  { vtPO2       }  'Pulse Ox.   ',
+                                  { vtCVP       }  'Cnt Vns Pres ',
+                                  { vtCircum    }  'Circum/Girth ');
+  vnumType  = 2;
+  vnumValue = 3;
+  vnumDate  = 4;
+
+implementation
+
+uses
+  uCore, rCore, rVitals, Contnrs, fVitalsDate, VAUtils;
+  
+var
+  uVitalFrames: TComponentList = nil;
+
+procedure CloseVitalsDLL;
+var
+  VitalsExit : TGMV_VitalsExit;
+begin
+  if VitalsDLLHandle <> 0 then
+  begin
+    @VitalsExit := GetProcAddress(VitalsDLLHandle,PChar('GMV_VitalsExit'));
+    if assigned(VitalsExit) then
+      VitalsExit();
+    FreeLibrary(VitalsDLLHandle);
+    VitalsDLLHandle := 0;
+//    DLLForceClose := True;   // jm - removed as part of timeout fix
+  end;
+end;
+
+function VitalErrorText(VType: TVitalType): string;
+begin
+  case VType of
+    vtTemp, vtHeight, vtWeight:
+      Result := '- check rate and unit.';
+    else
+      Result := 'reading entered.';
+  end;
+  Result := 'Invalid ' + VitalDesc[VType] + ' ' + Result;
+end;
+
+procedure InitPainCombo(cboPain: TORComboBox);
+begin
+  cboPain.Items.Clear;
+  cboPain.Items.Add('0^  - no pain');
+  cboPain.Items.Add('1^  - slightly uncomfortable');
+  cboPain.Items.Add('2^');
+  cboPain.Items.Add('3^');
+  cboPain.Items.Add('4^');
+  cboPain.Items.Add('5^');
+  cboPain.Items.Add('6^');
+  cboPain.Items.Add('7^');
+  cboPain.Items.Add('8^');
+  cboPain.Items.Add('9^');
+  cboPain.Items.Add('10^  - worst imaginable');
+  cboPain.Items.Add('99^ - unable to respond');
+end;
+
+procedure ConvertVital(VType: TVitalType; var VValue, VUnit: string);
+begin
+  case VType of
+    vtTemp:     if(VUnit = 'C') then  //if metric, convert to standard
+                begin
+                  if StrToFloat(VValue) > 0 then
+                    //VValue := FloatToStr(StrToFloat(VValue) * 9.0 / 5.0 +32.0);
+                    VValue := FloatToStr(Round((StrToFloat(VValue) * 9.0 / 5.0 +32.0)*100)/100);
+                  VUnit := 'F';
+                end;
+                
+    vtHeight:   if VUnit = 'CM' then
+                begin
+                  if StrToFloat(VValue) > 0 then
+                    //VValue := FloatToStr(StrtoFloat(VValue) / 2.54);
+                    VValue := FloatToStr(Round((StrtoFloat(VValue) / 2.54)*1000)/1000);
+                  VUnit := 'IN';
+                end;
+
+    vtWeight:   if VUnit = 'KG' then
+                begin
+                  if StrToFloat(VValue) > 0 then
+                    //VValue := FloatToStr(StrtoFloat(VValue) * 2.2046);
+                    //
+                    // the vitals package uses 2.2 (not 2.2046), so the GUI needs to use the
+                    // same so conversions back & forth don't lead to errors
+                    // this probably shouldn't even be done here - it should be done by the
+                    // vitals package - KCM
+                    //
+                    VValue := FloatToStr(Round(StrtoFloat(VValue) * 2.2{046} *1000)/1000);
+                  VUnit := 'LB';
+                end;
+  end;
+end;
+
+function GetVitalStr(VType: TVitalType; rte, unt, UserStr, DateStr: string): string;
+begin
+  Result := '';
+  ConvertVital(VType, rte, unt);
+  if rte <> '' then
+  begin
+    if(VType = vtPain) then unt := U;
+    Result := 'VIT'+U+VitalPCECodes[VType]+U+U+U+rte+U+UserStr+U+unt+U+DateStr;
+  end;
+end;
+
+function GetVitalUser: string;
+var
+  UserID: Int64;
+
+begin
+  UserID := Encounter.Provider;
+  if UserID <= 0 then
+    UserID := User.DUZ;
+  Result := IntToStr(UserID);
+end;
+
+procedure AssignVitals2List(List: TStrings; ADateTime: TFMDateTime;
+                       ALocation, ABP, ATemp, ATempUnits,
+                       AResp, APulse, AHeight, AHeightUnits,
+                       AWeight, AWeightUnits, APain: string);
+var
+  UserStr, DateStr: string;
+
+  procedure AddVital(VType: TVitalType; ARte: string; AUnit: string = '');
+  var
+    VStr: string;
+
+  begin
+    VStr := GetVitalStr(VType, ARte, AUnit, UserStr, DateStr);
+    if(VStr <> '') then
+      List.Add(VStr);
+  end;
+
+begin
+  with List do
+  begin
+    UserStr := GetVitalUser;
+    DateStr := FloatToStr(ADateTime);
+    clear;
+
+    Add(VitalDateStr     + DateStr);
+    Add(VitalPatientStr  + Patient.DFN);       // encounter Patient  //*DFN*
+    Add(VitalLocationStr + ALocation);
+    AddVital(vtBP,     ABP);                   // Blood Pressure
+    AddVital(vtTemp,   ATemp, ATempUnits);     // Temperature
+    AddVital(vtResp,   AResp);                 // Resp
+    AddVital(vtPulse,  APulse);                // Pulse
+    AddVital(vtHeight, AHeight, AHeightUnits); // Height
+    AddVital(vtWeight, AWeight, AWeightUnits); // Weight
+    AddVital(vtPain,   APain);                 // Pain
+  end;
+end;
+
+function VitalInvalid(VitalControl: TControl; UnitsControl: TControl = nil;
+                       OverrideValue: string = NoVitalOverrideValue): boolean;
+var
+  rte, unt: string;
+  Tag: integer;
+  VType: TVitalType;
+
+begin
+  Tag := -1;
+
+  if(OverrideValue = NoVitalOverrideValue) then
+  begin
+    if(assigned(VitalControl)) then
+    begin
+      rte := TORExposedControl(VitalControl).Text;
+      Tag := VitalControl.Tag;
+    end
+    else
+      rte := '';
+  end
+  else
+  begin
+    rte := OverrideValue;
+    if(assigned(VitalControl)) then
+      Tag := VitalControl.Tag;
+  end;
+
+  if(assigned(UnitsControl)) then
+  begin
+    unt := TORExposedControl(UnitsControl).Text;
+    if(Tag < 0) then
+      Tag := UnitsControl.Tag;
+  end
+  else
+    unt := '';
+
+  if(Tag >= low(VitalTags)) and (Tag <= high(VitalTags)) then
+    VType := VitalTagCodes[Tag]
+  else
+    VType := vtUnknown;
+ //pain does not need to be validated because the combo box limits the selection.
+  if(VType = vtPain) then
+    Result := FALSE
+  else
+  begin
+    Result := TRUE;
+    if(VType <> vtUnknown) then
+    begin
+      if (rte = '') then
+        Result := FALSE
+      else
+      if (VerifyVital(VitalPCECodes[VType],rte,unt) = True) then
+        Result := FALSE;
+    end;
+  end;
+  //  GRE 2/12/03 added to disallow user entering "lb" with weight NOIS MWV-0103-22037
+  if VType = vtWeight then
+  begin
+     if (IsNumericWeight(rte) = FALSE) then
+         Result := True;
+  end;
+  if(Result) then
+    ShowMsg(VitalErrorText(VType));
+end;
+
+function VitalControlTag(VType: TVitalType; UnitControl: boolean = FALSE): integer;
+var
+  i,cnt: integer;
+
+begin
+  if UnitControl then
+    cnt := 0
+  else
+    cnt := 1;
+  Result := -1;
+  for i := low(VitalTags) to high(VitalTags) do
+  begin
+    if(VitalTagCodes[i] = VType) then
+    begin
+      inc(cnt);
+      if(cnt = 2) then
+      begin
+        Result := i;
+        break;
+      end;
+    end;
+  end;
+end;
+
+function ConvertHeight2Inches(Ht: string): string;
+var
+ c: char;
+ i: integer; //counter
+ inchstr,feetstr : string;
+ feet: boolean;
+ v: double;
+
+begin
+  feet := False;
+  result := '';
+  feetstr := '';
+  inchstr := '';
+
+  // check for feet
+  for i := 1 to (length(Ht)) do
+  begin
+    c := Ht[i];
+    if (c = '''') then feet := True;
+  end;
+
+  if (feet = True) then
+  begin
+    i := 1;
+    while (Ht[i] <> '''') do
+    begin
+      if (Ht[i] in ['0'..'9']) or (Ht[i] = '.') then
+        feetstr := feetstr + Ht[i];
+      inc(i);
+    end;
+    while (i <= length(Ht)) and (Ht[i] <> '"') and
+     (Ht[i] <> '') do
+      begin
+      if (Ht[i] in ['0'..'9']) or (Ht[i] = '.') then
+        inchstr := inchstr + Ht[i];
+        inc(i);
+      end;
+    v := 0;
+    if (feetstr <> '') then
+      v := v + (StrTofloat(feetstr)*12);
+    if(inchstr <> '') then
+      v := v + StrToFloat(inchstr);
+    result := floatToStr(v);
+    //add here to convert to CM if CM is the unit
+
+  end
+  else //no feet
+  begin
+    for i := 1 to (length(Ht)) do
+    begin
+      c := Ht[i]; //first character
+      if (c in ['0'..'9']) or (c = '.') then
+        result := result + c;
+      if (c = '"') then break;
+    end;
+  end;
+end;
+
+{
+1215^T^98.6^2991108.11^98.6 F^(37.0 C)
+1217^P^70^2991108.11^70
+1216^R^18^2991108.11^18
+1214^BP^120/70^2991108.11^120/70
+1218^HT^70^2991108.11^70 in^(177.8 cm)
+1219^WT^200^2991108.11^200 lb^(90.0 kg)
+1220^PN^1^2991108.11^1
+}
+  //format string as it should appear on the PCE panel.
+function FormatVitalForNote(VitalStr: string):String;
+var
+  Code, Value: string;
+  v: TVitalType;
+
+begin
+  Code := UpperCase(Piece(VitalStr, U, vnumType));
+  for v := low(TValidVitalTypes) to high(TValidVitalTypes) do
+  begin
+    if(Code = VitalCodes[v]) then
+    begin
+      Value := ConvertVitalData(Piece(VitalStr, U, vnumValue), v);
+      if(v = vtPain) and (Value = '99') then
+        Value := 'Unable to respond.';
+      Result := VitalFormatedDesc[v] + Value + '    ' +
+      FormatFmDateTime('mmm dd,yyyy hh:nn',(StrToFloat(Piece(VitalStr, U, vnumDate))));
+    end
+  end;
+end;
+
+function ConvertVitalData(const Value: string; VitalType: TVitalType; UnitType: string = ''): string;
+var
+  dbl: Double;
+
+begin
+  Result := Value;
+  if(VitalType in [vtTemp, vtHeight, vtWeight]) then
+  begin
+    try
+      dbl := StrToFloat(Value);
+    except
+      on EConvertError do
+        dbl := 0
+      else
+        raise;
+    end;
+    if(dbl <> 0) then
+    begin
+      UnitType := UpperCase(UnitType);
+      case VitalType of
+        vtTemp:
+          begin
+            if(UnitType = 'C') then
+            begin
+              dbl := dbl * (9/5);
+              dbl := dbl + 32;
+              dbl := round(dbl * 10) / 10;
+              Result := FloatToStr(dbl) + ' F (' + Result + ' C)';
+            end
+            else
+            begin
+              dbl := dbl - 32;
+              dbl := dbl * (5/9);
+              dbl := round(dbl * 10) / 10;
+              Result := Result + ' F (' + FloatToStr(dbl) + ' C)';
+            end;
+          end;
+
+        vtHeight:
+          begin
+            if(UnitType = 'CM') then
+            begin
+              dbl := dbl / 2.54;
+              dbl := round(dbl * 10) / 10;
+              Result := FloatToStr(dbl) + ' in [' + Result + ' cm)';
+            end
+            else
+            begin
+              dbl := dbl * 2.54;
+              dbl := round(dbl * 10) / 10;
+              Result := Result + ' in [' + FloatToStr(dbl) + ' cm)';
+            end;
+          end;
+
+        vtWeight:
+          begin
+            if(UnitType = 'KG') then
+            begin
+              dbl := dbl * 2.2;
+              dbl := round(dbl * 10) / 10;
+              Result := FloatToStr(dbl) + ' lb (' + Result + ' kg)';
+            end
+            else
+            begin
+              dbl := dbl / 2.2;
+              dbl := round(dbl * 10) / 10;
+              Result := Result + ' lb (' + FloatToStr(dbl) + ' kg)';
+            end;
+          end;
+      end;
+    end;
+  end;
+end;
+
+procedure VitalsFrameCreated(Frame: TFrame);
+begin
+  if not assigned(uVitalFrames) then
+    uVitalFrames := TComponentList.Create(FALSE);
+  uVitalFrames.Add(Frame);
+end;
+
+function ValidVitalsDate(var ADate: TFMDateTime; SkipFirst: boolean = FALSE; Show: boolean = true): boolean;   //AGP Change 26.1
+var
+  frmVitalsDate: TfrmVitalsDate;
+  ok: boolean;
+
+begin
+  Result := TRUE;
+  while (Result and (SkipFirst or (ADate > FMNow))) do
+  begin
+    if(SkipFirst) then
+    begin
+      ok := TRUE;
+      SkipFirst := FALSE;
+    end
+    else
+    ok := (InfoBox('Vital sign Date/Time entered (' + FormatFMDateTime('mmm dd yyyy hh:nn', ADate) +
+            ') cannot be in the future.' + CRLF +
+            'If you do not change the entered date/time vitals information will be lost.' + CRLF +
+            'Do you want to enter a new Date/Time?',
+            'Invalid Vital Entry Date/Time',
+            MB_YESNO + MB_ICONWARNING) = ID_YES);
+    if ok then
+    begin
+      frmVitalsDate := TfrmVitalsDate.Create(Application);
+      try
+        frmVitalsDate.dteVitals.FMDateTime := ADate;
+        frmVitalsDate.btnNow.Visible := Show; //AGP Change 26.1
+        if frmVitalsDate.ShowModal = mrOK then
+          ADate := frmVitalsDate.dteVitals.FMDateTime;
+      finally
+        frmVitalsDate.Free;
+      end;
+    end
+    else
+      Result := FALSE;
+  end;
+end;
+
+function IsNumericWeight(const x: string): Boolean;
+var
+    i: Integer;
+begin
+  Result := True;
+  for i := 1 to Length(x) do if not (x[i] in ['0'..'9','.']) then Result := False;
+end;
+(* Old class currently not used
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses SysUtils, Classes;
+
+type
+  TVital = class(TObject)
+  {class for vital}
+  Private
+    Fsend:   Boolean;  //do we need this?
+  public
+    Typ:      String;      //type
+    Value:    Single;
+    Unt:      String;      //unit
+    Provider: Integer;
+    procedure Assign(Src: TVital);  //will we need assign?
+    procedure Clear;
+    procedure SetFromString(const x: string);
+    function DelimitedStr: string;
+  end;
+
+
+implementation
+
+uses ORFn, fPCEEdit, uPCE;
+
+Procedure TVital.Assign(Src: TVital);
+{assigns the values from one vital to another}
+begin
+  Fsend    := Src.Fsend;
+  Typ      := Src.Typ;
+  Value    := Src.Value;
+  Unt      := Src.Unt;
+  provider := Src.Provider;
+end;
+
+procedure Tvital.Clear;
+{clear all fields}
+begin
+  Fsend := False;
+  Typ   := '';
+  Value := 0.0;
+  Unt   := '';  //will default to Inches/LBs/Farenheit on M side,
+                //depending on the Type
+  //Provider := UProvider;
+end;
+
+Procedure TVital.SetFromString(const X: string);
+begin
+  Typ      := Piece(x, U, 2);
+  Value    := StrToFloat(Piece(x, U, 5));
+  Provider := StrToInt(Piece(x, U, 6));
+  Unt      := Piece(x, U, 7);
+end;
+
+function TVital.DelimitedStr: string;
+begin
+  Result := 'VIT' + U + Typ + U + U + U + FloatToStr(Value) + U +
+    IntToStr(Provider) + U + Unt;
+end;
+*)
+
+initialization
+
+finalization
+  KillObj(@uVitalFrames);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/Window-Eyes Support Files/CPRSCHAR.we
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/Window-Eyes Support Files/CPRSCHAR.we	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/Window-Eyes Support Files/CPRSCHAR.we	(revision 1676)
@@ -0,0 +1,2 @@
+[Reclass on Create]
+TCaptionCheckListBox=list box
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/XuDigSigSC_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/XuDigSigSC_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/XuDigSigSC_TLB.pas	(revision 1676)
@@ -0,0 +1,150 @@
+unit XuDigSigSC_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.130.1.0.1.0.1.6  $
+// File generated on 6/12/2003 4:03:57 PM from Type Library described below.
+
+// ************************************************************************  //
+// Type Lib: C:\Projects\CryptoAPI2\SignCOM\XuDigSigSC.tlb (1)
+// LIBID: {37B1AC3C-8CFB-41C2-951B-D1BCBD90DBBE}
+// LCID: 0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+{$WARN SYMBOL_PLATFORM OFF}
+{$WRITEABLECONST ON}
+{$VARPROPSETTER ON}
+interface
+
+uses Windows, ActiveX, Classes, Graphics, StdVCL, Variants;
+  
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  XuDigSigSCMajorVersion = 1;
+  XuDigSigSCMinorVersion = 1;
+
+  LIBID_XuDigSigSC: TGUID = '{37B1AC3C-8CFB-41C2-951B-D1BCBD90DBBE}';
+
+  IID_IXuDigSigS: TGUID = '{4F007CD0-ED3A-4022-AC5F-01D8494B02CF}';
+  CLASS_XuDigSigS: TGUID = '{12037083-5899-495D-818D-BF4EC57C42C7}';
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  IXuDigSigS = interface;
+  IXuDigSigSDisp = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  XuDigSigS = IXuDigSigS;
+
+
+// *********************************************************************//
+// Interface: IXuDigSigS
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {4F007CD0-ED3A-4022-AC5F-01D8494B02CF}
+// *********************************************************************//
+  IXuDigSigS = interface(IDispatch)
+    ['{4F007CD0-ED3A-4022-AC5F-01D8494B02CF}']
+    procedure Set_DataBuffer(const Param1: WideString); safecall;
+    procedure Set_UsrNumber(const Param1: WideString); safecall;
+    function Get_DEAsig: WordBool; safecall;
+    procedure Set_DEAsig(Value: WordBool); safecall;
+    function Get_DEAInfo: WideString; safecall;
+    function Get_HashValue: WideString; safecall;
+    function Get_Signature: WideString; safecall;
+    procedure Set_DrugSch(const Param1: WideString); safecall;
+    function Signdata: WordBool; safecall;
+    function Get_Reason: WideString; safecall;
+    procedure Set_UsrName(const Param1: WideString); safecall;
+    function Get_CrlUrl: WideString; safecall;
+    procedure Reset; safecall;
+    procedure GetCSP; safecall;
+    function Get_SubReason: WideString; safecall;
+    property DataBuffer: WideString write Set_DataBuffer;
+    property UsrNumber: WideString write Set_UsrNumber;
+    property DEAsig: WordBool read Get_DEAsig write Set_DEAsig;
+    property DEAInfo: WideString read Get_DEAInfo;
+    property HashValue: WideString read Get_HashValue;
+    property Signature: WideString read Get_Signature;
+    property DrugSch: WideString write Set_DrugSch;
+    property Reason: WideString read Get_Reason;
+    property UsrName: WideString write Set_UsrName;
+    property CrlUrl: WideString read Get_CrlUrl;
+    property SubReason: WideString read Get_SubReason;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXuDigSigSDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {4F007CD0-ED3A-4022-AC5F-01D8494B02CF}
+// *********************************************************************//
+  IXuDigSigSDisp = dispinterface
+    ['{4F007CD0-ED3A-4022-AC5F-01D8494B02CF}']
+    property DataBuffer: WideString writeonly dispid 1;
+    property UsrNumber: WideString writeonly dispid 2;
+    property DEAsig: WordBool dispid 3;
+    property DEAInfo: WideString readonly dispid 4;
+    property HashValue: WideString readonly dispid 5;
+    property Signature: WideString readonly dispid 6;
+    property DrugSch: WideString writeonly dispid 7;
+    function Signdata: WordBool; dispid 8;
+    property Reason: WideString readonly dispid 9;
+    property UsrName: WideString writeonly dispid 10;
+    property CrlUrl: WideString readonly dispid 11;
+    procedure Reset; dispid 12;
+    procedure GetCSP; dispid 13;
+    property SubReason: WideString readonly dispid 14;
+  end;
+
+// *********************************************************************//
+// The Class CoXuDigSigS provides a Create and CreateRemote method to          
+// create instances of the default interface IXuDigSigS exposed by              
+// the CoClass XuDigSigS. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoXuDigSigS = class
+    class function Create: IXuDigSigS;
+    class function CreateRemote(const MachineName: string): IXuDigSigS;
+  end;
+
+implementation
+
+uses ComObj;
+
+class function CoXuDigSigS.Create: IXuDigSigS;
+begin
+  Result := CreateComObject(CLASS_XuDigSigS) as IXuDigSigS;
+end;
+
+class function CoXuDigSigS.CreateRemote(const MachineName: string): IXuDigSigS;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_XuDigSigS) as IXuDigSigS;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/dShared.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/dShared.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/dShared.dfm	(revision 1676)
@@ -0,0 +1,5485 @@
+object dmodShared: TdmodShared
+  OldCreateOrder = False
+  OnCreate = dmodSharedCreate
+  OnDestroy = dmodSharedDestroy
+  Left = 50
+  Top = 159
+  Height = 479
+  Width = 439
+  object imgTemplates: TImageList
+    BkColor = clWhite
+    AllocBy = 6
+    Left = 24
+    Top = 16
+    Bitmap = {
+      494C01011E002200040010001000FFFFFF00FF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000009000000001002000000000000090
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000FF000000FF000000FF000000FF00000000000000
+      0000000000000000000000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0084848400C6C6C600C6C6
+      C6000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF00C6C6C600C6C6C60000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00C6C6C60000000000FFFFFF00FFFFFF0084848400C6C6C6000000
+      FF000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF00C6C6C60000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600FFFF
+      FF00C6C6C60000008400FFFFFF00FFFFFF00FFFFFF00C6C6C600FFFFFF00FFFF
+      FF00FFFFFF00C6C6C60000000000FFFFFF00FFFFFF00848484000000FF000000
+      FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF00C6C6C600FFFFFF00FFFF
+      FF000000FF000000FF0000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600FFFF
+      FF00000084000000FF0000008400FFFFFF00FFFFFF00FF000000FF000000C6C6
+      C600FFFFFF00C6C6C60000000000FFFFFF00FFFFFF00848484000000FF000000
+      FF00FFFFFF000000FF000000FF00FFFFFF00FFFFFF00FF000000FF000000C6C6
+      C6000000FF000000FF0000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600FFFF
+      FF000000FF0000FFFF0000008400FFFFFF00FFFFFF00FFFF0000FF000000FF00
+      0000FFFFFF00C6C6C60000000000FFFFFF00FFFFFF000000FF000000FF00FFFF
+      FF000000FF00FFFFFF000000FF000000FF00FFFFFF00FFFF0000FF000000FF00
+      0000FFFFFF000000FF000000FF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF000000FF0000008400FFFFFF00FFFFFF00FF000000FFFFFF00FFFF
+      FF00FFFFFF00C6C6C60000000000FFFFFF00FFFFFF000000FF000000FF00FFFF
+      FF00FFFFFF000000FF00FFFFFF000000FF000000FF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000FF000000FF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00C6C6C60000000000FFFFFF00FFFFFF000000FF000000FF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF00FFFFFF00FFFF
+      FF00FFFFFF000000FF000000FF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00848484000000FF000000
+      FF00C6C6C600C6C6C600C6C6C600C6C6C600FFFFFF000000FF000000FF00C6C6
+      C6000000FF000000FF0000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C6008400
+      0000840000008400000084000000840000008400000000000000000000000000
+      000000000000C6C6C60000000000FFFFFF00FFFFFF00848484000000FF000000
+      FF008400000084000000840000008400000084000000FFFFFF000000FF000000
+      FF000000FF000000FF0000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C6008400
+      00008400000084000000840000008400000084000000FFFFFF0000000000FFFF
+      FF0000000000C6C6C60000000000FFFFFF00FFFFFF0084848400C6C6C6000000
+      FF000000FF0084000000840000008400000084000000FFFFFF00FFFFFF000000
+      FF000000FF00C6C6C60000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0084848400C6C6C600C6C6
+      C6000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF00C6C6C600C6C6C60000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400848484008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      8400848484008484840000000000FFFFFF00FFFFFF0084848400848484008484
+      840084848400848484000000FF000000FF000000FF000000FF00848484008484
+      8400848484008484840000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484840084848400C6C6
+      C600FFFFFF008484840084848400000000000084840000FFFF0000FFFF0000FF
+      FF0000FFFF0000FFFF000084840000000000FFFFFF008484840084848400C6C6
+      C600FFFFFF0084848400848484000000000000FFFF0000FFFF0000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
+      84008484840084848400C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF008484
+      84008484840084848400C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      00000000000000000000000000000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF00000000000000000000000000FFFFFF00FFFFFF00848484008484
+      8400C6C6C600C6C6C600FFFFFF0000000000C6C6C6008484840000000000C6C6
+      C600C6C6C60000000000C6C6C60000000000FFFFFF00FFFFFF00848484008484
+      8400C6C6C600C6C6C600FFFFFF0000000000C6C6C6008484840000000000C6C6
+      C600C6C6C60000000000C6C6C6000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000008484
+      8400848484008484840084848400000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000008484840000000000FFFFFF00FFFFFF0084848400C6C6
+      C600C6C6C60084848400C6C6C60000000000C6C6C60000000000000000000000
+      0000C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF0084848400C6C6
+      C600C6C6C60084848400C6C6C60000000000C6C6C60000000000000000000000
+      0000C6C6C600C6C6C600C6C6C600000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000008484
+      84008484840084848400848484000000000000000000FFFFFF0000FFFF000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF0084848400FFFFFF00C6C6
+      C600FFFFFF00C6C6C6008484840000000000C6C6C600C6C6C600C6C6C6000000
+      0000C6C6C60000000000C6C6C60000000000FFFFFF0084848400FFFFFF00C6C6
+      C600FFFFFF00C6C6C6008484840000000000C6C6C600C6C6C600C6C6C6000000
+      0000C6C6C60000000000C6C6C6000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000008484
+      8400000000000000000084848400000000000000000000FFFF00FFFFFF000000
+      0000848484008484840000000000848484008484840000000000848484000000
+      000000000000000000008484840000000000FFFFFF0084848400FFFFFF008484
+      8400C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0084848400FFFFFF008484
+      8400C6C6C600C6C6C600C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      84008484840084848400848484000000000000000000FFFFFF0000FFFF000000
+      0000848484000000000000000000000000008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF0084848400C6C6C600FFFF
+      FF00C6C6C600C6C6C600FFFFFF000000000084000000FF000000FF000000FF00
+      0000FF000000FF0000008400000000000000FFFFFF0084848400C6C6C600FFFF
+      FF00C6C6C600C6C6C600FFFFFF0000000000FF000000FF000000FF000000FF00
+      0000FF000000FF000000FF00000000000000FFFFFF0000000000FFFFFF000000
+      0000848484008484840084848400848484008484840084848400848484000000
+      000000000000848484008484840000000000FFFFFF0000000000FFFFFF000000
+      0000848484008484840084848400000000008484840000000000000000000000
+      000000000000848484008484840000000000FFFFFF00FFFFFF0084848400FFFF
+      FF00FFFFFF0084848400C6C6C600C6C6C6000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF0084848400FFFF
+      FF00FFFFFF0084848400C6C6C600000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0084848400000000000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF0084848400000000000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00848484008484
+      8400FFFFFF00FFFFFF00C6C6C60084848400C6C6C600C6C6C600C6C6C6008484
+      840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484008484
+      8400FFFFFF00FFFFFF00C6C6C60084848400C6C6C600C6C6C600C6C6C6008484
+      840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840000000000848484008484840000000000000000008484
+      840000000000000000008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840000000000848484008484840000000000000000008484
+      8400000000000000000084848400000000008484840084848400848484008484
+      840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484008484
+      8400848484008484840084848400FFFFFF008484840084848400848484008484
+      840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484008484
+      8400848484008484840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000848484000000000000000000000000008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484000000000000000000000000008484840084848400848484008484
+      84008484840084848400848484000000000084848400FFFFFF00C6C6C600C6C6
+      C60084848400848484008484840084848400848484008484840084848400C6C6
+      C600C6C6C600C6C6C60084848400FFFFFF0084848400FFFFFF00C6C6C600C6C6
+      C60084848400848484008484840084848400848484008484840084848400C6C6
+      C600C6C6C600C6C6C60084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400000000008484840000000000848484000000
+      000000000000000000008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400000000008484840000000000848484000000
+      00000000000000000000848484000000000084848400C6C6C600FFFFFF00C6C6
+      C600C6C6C600C6C6C600848484008484840084848400C6C6C600FFFFFF00C6C6
+      C600C6C6C600C6C6C60084848400FFFFFF0084848400C6C6C600FFFFFF00C6C6
+      C600C6C6C600C6C6C600848484008484840084848400C6C6C600FFFFFF00C6C6
+      C600C6C6C600C6C6C60084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF0084848400FFFFFF0084848400FFFFFF0084848400C6C6C600FFFF
+      FF00FFFFFF0084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000840000008400000084000000840000008400000084000000840000008400
+      000084000000840000008400000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000840000008400000084000000840000008400000084000000840000008400
+      000084000000840000008400000000000000FFFFFF00FFFFFF00848484008484
+      840084848400FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00848484008484
+      840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484008484
+      840084848400FFFFFF00FFFFFF0084848400FFFFFF00FFFFFF00848484008484
+      840084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00848484008484840084848400FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00848484008484840084848400FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      0000000000000000000000000000FFFFFF0000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF000000000000000000FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      00000000000000000000000000000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000008484
+      8400848484008484840084848400000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000848484000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000C6C6C600000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000008484
+      84008484840084848400848484000000000000000000FFFFFF0000FFFF000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      8400848484008484840084848400000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000008484
+      8400000000000000000084848400000000000000000000FFFF00FFFFFF000000
+      0000848484008484840000000000848484008484840000000000848484000000
+      00000000000000000000848484000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C6000000000000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000C6C6C6008484840000000000C6C6C600C6C6C60000000000C6C6C6000000
+      00000000000000000000C6C6C600000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      84008484840084848400848484000000000000000000FFFFFF0000FFFF000000
+      0000848484000000000000000000000000008484840084848400848484008484
+      8400848484008484840084848400000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0000000000FFFFFF000000
+      0000848484008484840084848400848484008484840084848400848484000000
+      000000000000848484008484840000000000FFFFFF0000000000FFFFFF000000
+      0000848484008484840084848400000000008484840000000000000000000000
+      000000000000848484008484840000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000
+      000000000000C6C6C600C6C6C60000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C60000000000C6C6C60000000000000000000000
+      000000000000C6C6C600C6C6C60000000000FFFFFF0084848400000000000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF0084848400000000000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF0084848400000000000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0084848400000000000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840000000000848484008484840000000000000000008484
+      840000000000000000008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840000000000848484008484840000000000000000008484
+      840000000000000000008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6008484840000000000C6C6C600C6C6C6000000000000000000C6C6
+      C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6008484840000000000C6C6C600C6C6C6000000000000000000C6C6
+      C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484000000000000000000000000008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484000000000000000000000000008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400000000008484840000000000848484000000
+      000000000000000000008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400000000008484840000000000848484000000
+      000000000000000000008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C6000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C6000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      840084848400848484008484840000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000840000008400000084000000840000008400000084000000840000008400
+      000084000000840000008400000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000840000008400000084000000840000008400000084000000840000008400
+      000084000000840000008400000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF000000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF000000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      0000000000000000000000000000FFFFFF0000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF000000000000000000FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C600C6C6C600C6C6C60084848400000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000008484840000000000FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C6000000000000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000C6C6C6008484840000000000C6C6C600C6C6C60000000000C6C6C6000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF000000000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF00C6C6C60000FFFF0000000000FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000
+      000000000000C6C6C600C6C6C60000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C60000000000C6C6C60000000000000000000000
+      000000000000C6C6C600C6C6C60000000000FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400000000000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0084848400000000000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6008484840000000000C6C6C600C6C6C6000000000000000000C6C6
+      C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6008484840000000000C6C6C600C6C6C6000000000000000000C6C6
+      C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C6000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C60000000000C6C6C60000000000C6C6C6000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000084000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF000000FF0000008400000000000000FFFFFF00FFFFFF00FFFFFF000000
+      000084000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF000000FF0000008400000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000000000000000000000000000000000000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000000000000000000000000000C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000000000000000
+      00000000000000000000C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000000000000000000000000000C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0000000000FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000000000000000
+      00000000000000000000C6C6C60000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000000000000000
+      00000000000000000000C6C6C60000000000FFFFFF0084848400000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000C6C6C6000000000000000000C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400000000000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0084848400000000000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF000000000000000000FFFF
+      FF000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C6000000000000000000C6C6
+      C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C6000000000000000000C6C6
+      C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6000000000000000000C6C6C600000000000000000000000000C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C600000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C600000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000FFFFFF00000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000C6C6C600000000000000000000FFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000000000000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C6000000000000000000FFFFFF0000FFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000000000000000
+      00000000000000000000C6C6C60000000000FFFFFF0000000000FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000000000000000
+      00000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF0084848400000000000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF0084848400000000000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000FFFFFF000000000000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C6000000000000000000C6C6
+      C60000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C6000000000000000000C6C6
+      C60000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF000000000000000000FFFF
+      FF000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF000000000000000000FFFFFF00000000000000000000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C6000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C600C6C6C600C6C6C600C6C6
+      C6000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C600000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000C6C6C600000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000000000000000000000000000C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000FFFFFF00000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000000000000000000000000000C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      00000000000000000000FFFFFF00000000000000000000FFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000000000000000000000000000C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0084848400000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6
+      C60000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF000000000000000000FFFF
+      FF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF000000000000000000FFFF
+      FF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C6000000000000000000C6C6C600C6C6C60000000000C6C6C6000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDBD
+      BD0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDBD
+      BD0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000BDBDBD0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000BDBDBD0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      84000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000008484000084
+      84000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FF
+      FF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF000000
+      0000000000000000000000FFFF0000000000BDBDBD0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      000000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBD
+      BD0000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF0000000000BDBDBD0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF000000000000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FF
+      FF00BDBDBD0000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      0000000000000000000000000000000000007B7B7B0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF007B7B7B007B7B7B0000000000008484000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B
+      7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000007B7B
+      7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007B7B
+      7B00000000000000000000000000000000007B7B7B00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      00000000000000FFFF000084840000FFFF000084840000FFFF00008484000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000084840000FFFF000084840000FFFF000084840000FFFF000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007B7B7B000000
+      00000000000000000000000000007B7B7B00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000000000000084840000FFFF000084840000FFFF000084
+      84000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00000000000000000000FFFF000084840000FFFF000084840000FF
+      FF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF007B7B7B00000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF007B7B7B00000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00424D3E000000000000003E000000
+      2800000040000000900000000100010000000000800400000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFFFFF00000000FFFFFFFF00000000
+      800180010000000080018001000000009FF980010000000093B980B100000000
+      9189800100000000918980010000000099B98001000000009FF9800100000000
+      8001800100000000800180010000000080518001000000008001800100000000
+      8001800100000000FFFFFFFF00000000801F801FFF01FE002A9F000F88008800
+      555F0007E000E0002A804000C200C20055402000C000C0002A804000A800A800
+      55402000A000A0000000400092009200A000A000D801D80080008000CC07CC07
+      E000E00007C107C1E000E00040014001E000E00020212021E000E0009A9B9A9B
+      E000E000C6C7C6C7E000E000FC7FFC7F801F801F801F801F2A9F000F2A9F000F
+      555F0007555F00072A8140012A80400055402000554020002A8040002A804000
+      55402000554020000000400000004000A000A000A000A0008000800080008000
+      E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
+      E000E000E000E000F001F001E000E000FFFFFFFF801F801FFFFFFFFF2A9F000F
+      FFFFFFFF555F0007C007FFFF2A814001CAA7800F55402000D55780072A804000
+      CAA7A00355402000D557900100004000CAA7A800A000A000D557954F80008000
+      C007AAAFE000E000EA7F940FE000E000E07FCAFFE000E000FFFFC0FFE000E000
+      FFFFFFFFE000E000FFFFFFFFF001F001801FFFFF801F801F0000E0072A9F0000
+      0006E007554000004002E0072A8040002002E007554020004AFEE0072A804000
+      2A82E007554020004AFEE00700004000AA82E007A000A0008AFEE00780008000
+      EA92E007E000E000EAFEE007E000E000EAFEE007E000E000EA00E007E000E000
+      E803FFFFE003E003E00FFFFFE00FE00F801F801FFFFF801F2A9F0000E0072A9F
+      55400000EFF755402A804000E8772A9E55402000EFF755422A804000E8172A9E
+      55402000EFF7554200004000E817003EA000A000EFF7AA8280008000E8978AFE
+      E000E000EFF7EA92E001E001E917EAFEE003E003EFF7EAFEE007E007E007EA00
+      E01FE01FFFFFE803E07FE07FFFFFE00FFFFF801F801FFFFFE0072A9F0000E007
+      EFF755400006E007E8772A9E4002E007EFF755422002E007E8172A9E4AFEE007
+      EFF755422A82E007E817003E4AFEE007EFF7AA82AA82E007E8F78AFE8AFEE007
+      EF87EA90EA90E007E9AFEAF5EAF5E00FEF9FEAF3EAF3E01FE03FEA07EA07E03F
+      FFFFE81FE81FFFFFFFFFE07FE07FFFFFC01FC01FFFFFFFFFC00FC00FFFFFFFFF
+      E007E007FFFFFFFFE003E003E007FFFFE0038003CAA7C00FE0078007D5578007
+      E0078007CAA7A003E0078007D5579001E0078007CAA7A801E0078007D557954F
+      E007EE07C00FAAAFC007C007EA7F951FC007C007E07FCAFFE007E007FFFFC0FF
+      F803F803FFFFFFFFFC03FC03FFFFFFFF00000000000000000000000000000000
+      000000000000}
+  end
+  object imgReminders: TImageList
+    BkColor = clWhite
+    AllocBy = 6
+    Width = 20
+    Left = 28
+    Top = 80
+    Bitmap = {
+      494C010108000900040014001000FFFFFF00FF10FFFFFFFFFFFFFFFF424D3600
+      000000000000360000002800000050000000300000000100200000000000003C
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000008484840084848400848484008484840084848400000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848400008484
+      00008484000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000FFFF0000FFFF00FFFFFF00FFFFFF0000FFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484
+      840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00C6C6C600848484008484
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848400008484
+      00008484000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848484008484
+      84008484840084848400848484008484840000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000084848400FFFFFF000000FF0000000000FFFFFF008484
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FFFFFF008484
+      84008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000C6C6C600FFFFFF000000FF000000FF0000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000084848400FFFF
+      FF00FF000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000000FFFF
+      FF008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848400008484
+      00008484000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      0000C6C6C6000000000000000000C6C6C60000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF000000FF000000FF000000FF0000000000FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00C6C6C6008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848400008484
+      00008484000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00848484000000FF000000FF000000FF000000FF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848400008484
+      0000848400008484000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000840000008400
+      00008400000084000000840000008400000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00848484000000FF000000FF00000000000000FF000000FF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000084848400FFFFFF000000
+      00000000000000000000000000000000FF00FFFFFF00FFFFFF00FFFFFF00FF00
+      0000FFFFFF008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484
+      000084840000848400008484000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000FF000000FF0000000000FFFFFF00FFFFFF00848484000000FF000000
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      00008484000084840000848400008484000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000FF000000
+      FF0000000000FFFFFF00FFFFFF00FFFFFF000000000084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+      FF00C6C6C6008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000FFFFFF00FFFF
+      FF000000000084840000848400008484000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF0000000000FFFFFF00FFFFFF00FFFFFF000000000084848400FFFF
+      FF00FF000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000848400008484000084840000000000000000
+      00000000000084840000848400008484000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
+      84000000FF0000000000FFFFFF00FFFFFF00FFFFFF0000000000848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FFFFFF008484
+      84008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000848400008484000084840000848400008484
+      00008484000084840000848400008484000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00848484000000FF0000000000FFFFFF00FFFFFF00FFFFFF00000000008484
+      840084848400C6C6C600FFFFFF00FF000000FFFFFF00C6C6C600848484008484
+      840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000848400008484000084840000848400008484
+      00008484000084840000848400008484000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00848484000000FF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000008484840084848400848484008484840084848400000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000084840000848400008484
+      000084840000848400000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      8400FFFFFF000000000000000000000000000000000000000000FFFFFF000000
+      84000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00000000000000000084840000FFFFFF0000000000000000000000
+      00000000000000000000FFFFFF00848400000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000084000000
+      000000000000000000000000FF00000000000000FF0000000000000000000000
+      000000008400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0084840000000000000000000000000000FFFF00000000
+      0000FFFF000000000000000000000000000084840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      00000000FF00C6C6C600FFFFFF0000000000FFFFFF00C6C6C6000000FF000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF000000000000000000FFFF0000C6C6C600FFFFFF000000
+      0000FFFFFF00C6C6C600FFFF00000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400000000000000
+      FF00C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      FF000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000FFFF0000C6C6C60000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000C6C6C600FFFF00000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00000000000000000000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF0000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFF0000FFFF0000FFFFFF00FFFFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFF0000FFFF000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000FFFF00C6C6C60000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000FF000000
+      0000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00000000000000
+      00000000FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFF000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF000000000000000000FFFF000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF00000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF000000000000FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFF0000FFFF0000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFF0000FFFF000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000084848400000000000000
+      FF00C6C6C60000000000FFFFFF0000000000FFFFFF0000000000C6C6C6000000
+      FF00000000008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000FFFF0000C6C6C60000000000FFFFFF000000
+      0000FFFFFF0000000000C6C6C600FFFF00000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF0000FFFF00000000000000
+      00000000FF00C6C6C600FFFFFF0000000000FFFFFF00C6C6C6000000FF000000
+      00000000000000FFFF0000FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF000000000000000000FFFF0000C6C6C600FFFFFF000000
+      0000FFFFFF00C6C6C600FFFF00000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFF0000FFFF0000FFFF
+      0000FFFF0000FFFF00000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6C6008484
+      840000000000000000000000000000000000000000000000000000000000C6C6
+      C600848484008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000C6C6C600C6C6C600848484000000000000000000000000000000
+      0000000000000000000000000000C6C6C600848484008484840000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6C600C6C6
+      C600C6C6C60084848400848484000000000084848400C6C6C600C6C6C600C6C6
+      C600C6C6C6008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000C6C6C600C6C6C600C6C6C600C6C6C60084848400848484000000
+      000084848400C6C6C600C6C6C600C6C6C600C6C6C6008484840000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
+      84000000000000000000000000000000000084848400FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00848484000000000000000000000000000000
+      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF000000000084848400C6C6
+      C600C6C6C600000000000000000000FFFF000000000000000000C6C6C600C6C6
+      C600848484000000000000FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000084848400C6C6C600C6C6C60000000000848484000000
+      00008484840000000000C6C6C600C6C6C6008484840000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00848484000000
+      00000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000
+      000084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00848484000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00000000000000000084848400FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF0000FFFF000000000000FFFF000000000000FFFF000000000000FFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000000000FFFFFF0000FFFF000000000000FFFF00FFFFFF000000000000FF
+      FF0000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00424D3E000000000000003E000000
+      2800000050000000300000000100010000000000400200000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000F83FFFC7FFFF807FF8070000E00FFF83
+      FFFF807FF8070000C387FF83FFFF807FF80700008EE3FFC7FFFF807FF8070000
+      97D3FF83FFFF807FF80700001FF1FF83FFFF807FF80700003FF9FF81FFFF807F
+      F007000020E9FFC0FFFF807FE00300003F79FFE07FFFFFFFF18300001FB1FE30
+      7FFFFFFFFFC1000097F3FC007FFFFFFFFFC100008EE3FC007FFFFFFFFFE00000
+      C287FC007FFFFFFFFFF00000E00FFE00FFFFFFFFFFF80000F83FFF83FFFFFFFF
+      FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF8823F8823F0000FFFFFFFF
+      FFC007FC007F0000FFFFFFFFFFC287FC287F0000E007FE007F8383F8383F0000
+      CAA7FC003F8FE3F8DE3F0000D557FD001F88C3F8EC3F0000CAA7FC800F0EE1F8
+      EE3F0000D557FD400F0281F8283F0000CAA7FCAA7F0281FC287F0000D557FD55
+      7F0001F0001F0000C00FFCA8FF0001F0001F0000EA7FFE57FF0001F0001F0000
+      E07FFE07FF0001F8003F0000FFFFFFFFFF4005FC6C7F0000FFFFFFFFFFC007FF
+      C7FF0000FFFFFFFFFF8443FFFFFF000000000000000000000000000000000000
+      000000000000}
+  end
+  object imgNotes: TImageList
+    Left = 22
+    Top = 144
+    Bitmap = {
+      494C01010F001300040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000005000000001002000000000000050
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      000000000000000000008484840084848400FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000848484008484840000000000000000000000000000000000FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000848484000000000000000000FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840000000000000000000000000000000000FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000084848400848484000000000000000000FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000084848400848484000000000000000000FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840000000000000000000000000000000000FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000848484000000000000000000FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000848484008484840000000000000000000000000000000000FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000008484840084848400FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000084848400848484008484840084848400848484008484840084848400FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000084848400FFFFFF0000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF000000000000FFFF00C6C6C60000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000FFFFFF000000
+      000000FFFF00C6C6C60000FFFF0000000000000000000000000000000000C6C6
+      C60000FFFF000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF000000000000FFFF00C6C6C60000FFFF00C6C6C60000000000C6C6C60000FF
+      FF00C6C6C60000FFFF0000000000000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF000000000000000000FFFFFF00FFFF
+      FF0000000000FFFFFF0000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000FFFFFF00FFFFFF0000000000FFFFFF000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000848484000000
+      0000000000000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+      00000000000000000000FFFFFF000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000FF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF000000000000FFFF00FFFFFF0000FFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+      00000000000000000000FFFFFF000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00000000000000000000000000000000000000000000000000FFFFFF000000
+      000000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBD
+      BD0000FFFF0000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF000000000000000000000000000000000000000000FFFFFF0000FF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF000000000000FFFF00BDBDBD0000FFFF00BDBDBD0000FFFF00BDBDBD0000FF
+      FF00BDBDBD0000FFFF000000000000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF000000000000FFFF00FFFFFF0000FFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00000000000000000000000000FFFF
+      FF000000000000000000FFFFFF000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF000000000000000000FFFFFF000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B00000000000000000000000000000000007B7B7B0000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400000000000000000000000000000000008484840000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000007B7B7B000000
+      00000000000000000000000000007B7B7B000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDBD
+      BD00000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDBD
+      BD00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000BDBDBD000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000BDBDBD000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF000000
+      0000000000000000000000FFFF0000000000BDBDBD0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF0000000000BDBDBD0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000007B7B7B0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000FFFFFF000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF007B7B7B007B7B7B0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000FFFFFF00000000000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B00000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000FFFF0000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF000084840000FFFF000084840000FFFF00008484000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000084840000FFFF000084840000FFFF000084840000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000084840000FFFF000084840000FFFF000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000FFFF000084840000FFFF000084840000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000500000000100010000000000800200000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFFFFFFFFF0000FFFFFFFFFFFF0000
+      FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFE7FFFFF0000F00FFC3FFFFF0000
+      F3CFFDBFFFFF0000FBDFF99FFFFF0000F99FFBDFFFFF0000FDBFF3CFFFFF0000
+      FC3FF00FFFFF0000FE7FFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000
+      FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFC00FFFFFFFFE007FC00E007
+      FFFFE0070000E007FFFFE0070000E007C00FE0070000E0078007E0070000E007
+      8003E0070000E0078001E0070000E0078001E0070000E007800FE0070000E007
+      800FE0070001E007801FE00F0003E007C0FFE01F0007E007C0FFE03F007FE007
+      FFFFFFFF007FFFFFFFFFFFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFF
+      0000FFFFFFFFFFFF0000E007FFFFE0070000C007C00FC0070000C0078007C007
+      0000C0078003C0070000C0078001C0070000C0078001C0070000C007800FC007
+      0000C00F800FC00F0000E07F801FE07F0000E07FC0FFE07F007FFFFFC0FFFFFF
+      007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFC01FC01FFFFFBFFFC00FC00FE007
+      B049E007E007E007807FE003E003E007B07FE0038003E007B9FFE0078007E007
+      BFFFE0078007E007B049E0078007E007807FE0078007E007B07FE0078007E007
+      B9FFE007E007E007BFFFC007C007E007048FC007C007E00707FFE007E007E007
+      07FFF803F803FFFF9FFFFC03FC03FFFF00000000000000000000000000000000
+      000000000000}
+  end
+  object imgImages: TImageList
+    Left = 24
+    Top = 202
+    Bitmap = {
+      494C010106000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000003000000001002000000000000030
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000000000000000000000000000000000000000000000000000000000000000
+      FF000000FF008484840084848400848484008484840084848400848484008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000000000000000000000000000000000000000000000000000000000000000
+      FF000000FF000000FF0084848400848484008484840084848400848484008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FF0000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000FF000000FF0084848400848484008484840084848400C6C6C600C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000FF000000FF000000FF0000000000C6C6C600C6C6C600C6C6C600C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF00C6C6C600C6C6C600C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000C6C6C600C6C6C600C6C6C6000000FF000000FF00C6C6C600C6C6C6000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400C6C6C6000000000000FFFF00FFFF000000000000FFFF000000000000FFFF
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000C6C6C60000000000C6C6C6000000FF000000FF000000FF0000000000C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400C6C6C60000FFFF0000000000C6C6C600FFFF000000000000FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000C6C6C600C6C6C60000000000C6C6C6000000FF000000FF000000FF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840000000000C6C6C600C6C6C600FFFF000000000000FFFF000000000000FFFF
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000C6C6C600C6C6C600C6C6C600000000000000FF000000FF000000
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFF000000000000FFFF000000000000FFFF000000000000FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000C6C6C60000000000C6C6C60000000000C6C6C60000000000C6C6C6000000
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      8400848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000084848400FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF000000FF00000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000084848400FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF0000000000000000000000000000000000000000000000000000008484
+      84000000000084848400FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF000000FF00000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000000000000000000000000000000000000000000000000000848484000000
+      000084848400FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      0000FF0000000000000000000000000000000000000000000000000000008484
+      8400FF00000084848400FF000000FF000000FF000000FF000000FF000000FF00
+      0000008400000084000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
+      000000000000000000000000000000000000000000000000000084848400FF00
+      000084848400FF000000FF000000FF000000FF000000FF000000FF0000000084
+      0000008400000000000000000000000000000000000084848400000000008484
+      8400FF00000084848400FFFF000000000000FFFF000000000000008400000084
+      0000008400000084000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FF000000FF000000FF000000FF000000FF000000FF000000008400000084
+      000000000000000000000000000000000000000000000000000084848400FF00
+      000084848400FFFF000000000000FFFF00000000000000840000008400000084
+      0000008400000000000000000000000000000000000084848400FF0000008484
+      8400FF0000008484840000000000FFFF000000000000FFFF000000000000FFFF
+      0000008400000084000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFF000000000000FFFF0000000000000084000000840000008400000084
+      000000000000000000000000000000000000000000000000000084848400FF00
+      00008484840000000000FFFF000000000000FFFF000000000000FFFF00000084
+      0000008400000000000000000000000000000000000084848400FF0000008484
+      8400FFFF000084848400FFFF0000C6C6C600C6C6C60000000000FFFF00000000
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840000000000FFFF000000000000FFFF000000000000FFFF0000008400000084
+      000000000000000000000000000000000000000000000000000084848400FFFF
+      000084848400FFFF0000C6C6C600C6C6C60000000000FFFF000000000000FFFF
+      0000000000000000000000000000000000000000000084848400FF0000008484
+      84000000000084848400C6C6C6000000000000FFFF00C6C6C60000000000FFFF
+      000000000000FFFF000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFF0000C6C6C600C6C6C60000000000FFFF000000000000FFFF00000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      000084848400C6C6C6000000000000FFFF00C6C6C60000000000FFFF00000000
+      0000FFFF00000000000000000000000000000000000084848400FFFF00008484
+      8400FFFF000084848400C6C6C60000FFFF0000000000C6C6C600FFFF00000000
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400C6C6C6000000000000FFFF00C6C6C60000000000FFFF000000000000FFFF
+      000000000000000000000000000000000000000000000000000084848400FFFF
+      000084848400C6C6C60000FFFF0000000000C6C6C600FFFF000000000000FFFF
+      0000000000000000000000000000000000000000000084848400000000008484
+      8400C6C6C6008484840000000000C6C6C600C6C6C600FFFF000000000000FFFF
+      000000000000FFFF000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400C6C6C60000FFFF0000000000C6C6C600FFFF000000000000FFFF00000000
+      000000000000000000000000000000000000000000000000000084848400C6C6
+      C6008484840000000000C6C6C600C6C6C600FFFF000000000000FFFF00000000
+      0000FFFF00000000000000000000000000000000000084848400FFFF00008484
+      8400C6C6C60084848400FFFF000000000000FFFF000000000000FFFF00000000
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840000000000C6C6C600C6C6C600FFFF000000000000FFFF000000000000FFFF
+      000000000000000000000000000000000000000000000000000084848400C6C6
+      C60084848400FFFF000000000000FFFF000000000000FFFF000000000000FFFF
+      0000000000000000000000000000000000000000000084848400C6C6C6008484
+      8400000000008484840084848400848484008484840084848400848484008484
+      8400848484008484840084848400000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFF000000000000FFFF000000000000FFFF000000000000FFFF00000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      0000848484008484840084848400848484008484840084848400848484008484
+      8400848484008484840000000000000000000000000084848400C6C6C6008484
+      8400FFFF000000000000FFFF000000000000FFFF000000000000FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      840084848400000000000000000000000000000000000000000084848400FFFF
+      000000000000FFFF000000000000FFFF000000000000FFFF0000000000000000
+      0000000000000000000000000000000000000000000084848400000000008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      8400848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      8400000000000000000000000000000000000000000084848400FFFF00000000
+      0000FFFF000000000000FFFF000000000000FFFF000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400848484008484
+      8400848484008484840084848400848484008484840084848400848484000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000300000000100010000000000800100000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFFFFF00000000FFFFFFFF00000000
+      E007E00700000000E007E00700000000E00FE00700000000E7F7E00700000000
+      E003E10700000000E803E80700000000E7F7E01700000000E4AFE42700000000
+      E257E21700000000E8A7E88700000000E557E54700000000E007E00700000000
+      FFFFFFFF00000000FFFFFFFF00000000FFFFFFFFFFFFF801FFFFFFFFF003F801
+      FFFFE007F003E001FFFFE007C003E001FFFFE007C0038141FFFFE007C28382A1
+      FFFFE507C5438055FFFFEA87C0AB8929FFFFE157D2538095FFFFE4A7C12BA229
+      FFFFE257C4538155FFFFE8A7C2AB8801FFFFE557D0038557FFFFE007CAAFA007
+      FFFFFFFFC00F955FFFFFFFFFFFFF801F00000000000000000000000000000000
+      000000000000}
+  end
+  object imgReminders2: TImageList
+    Width = 32
+    Left = 200
+    Top = 80
+    Bitmap = {
+      494C01010A000E00040020001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000800000004000000001002000000000000080
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF000000000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF00C6C6C60000FFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF000000000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF00C6C6C60000FFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      0000000000000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      0000000000000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840084848400848484008484840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840084848400848484008484840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00C6C6C600848484008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840084848400C6C6C600FFFFFF00FFFFFF00FFFFFF00C6C6C600848484008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FFFFFF008484
+      8400848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FFFFFF008484
+      8400848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000084848400FFFF
+      FF00FF000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000000FFFF
+      FF00848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000084848400FFFF
+      FF00FF000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF000000FFFF
+      FF00848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF000000
+      00000000000000000000000000000000FF00FFFFFF00FFFFFF00FFFFFF00FF00
+      0000FFFFFF008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF000000
+      00000000000000000000000000000000FF00FFFFFF00FFFFFF00FFFFFF00FF00
+      0000FFFFFF008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+      FF00C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400C6C6C600FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFF
+      FF00C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000084848400FFFF
+      FF00FF000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000084848400FFFF
+      FF00FF000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FFFFFF008484
+      8400848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FF000000FFFFFF00FFFFFF00FFFFFF008484
+      8400848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840084848400C6C6C600FFFFFF00FF000000FFFFFF00C6C6C600848484008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840084848400C6C6C600FFFFFF00FF000000FFFFFF00C6C6C600848484008484
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840084848400848484008484840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840084848400848484008484840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      8400000000000000000000000000000000000000000000000000000000000000
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      8400000000000000000000000000000000000000000000000000000000000000
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      0000000000000000000000000000000000000000000000000000000000008484
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      0000000000000000000000000000000000000000000000000000000000008484
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000084000000
+      000000000000000000000000FF00000000000000FF0000000000000000000000
+      0000000084000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000084000000
+      000000000000000000000000FF00000000000000FF0000000000000000000000
+      0000000084000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848400000000
+      00000000000000000000FFFF000000000000FFFF000000000000000000000000
+      0000848400000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848400000000
+      00000000000000000000FFFF000000000000FFFF000000000000000000000000
+      0000848400000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000FF00C6C6C600FFFFFF0000000000FFFFFF00C6C6C6000000FF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000FF00C6C6C600FFFFFF0000000000FFFFFF00C6C6C6000000FF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFF0000C6C6C600FFFFFF0000000000FFFFFF00C6C6C600FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFF0000C6C6C600FFFFFF0000000000FFFFFF00C6C6C600FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400000000000000
+      FF00C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      FF00000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400000000000000
+      FF00C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      FF00000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000008484840000000000FFFF
+      0000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600FFFF
+      0000000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000008484840000000000FFFF
+      0000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600FFFF
+      0000000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000FF000000
+      0000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00000000000000
+      00000000FF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000FF000000
+      0000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00000000000000
+      00000000FF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFF00000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00000000000000
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFF00000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00000000000000
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF00000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF000000000000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF00000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF000000000000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      0000FFFF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400000000000000
+      FF00C6C6C60000000000FFFFFF0000000000FFFFFF0000000000C6C6C6000000
+      FF00000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400000000000000
+      FF00C6C6C60000000000FFFFFF0000000000FFFFFF0000000000C6C6C6000000
+      FF00000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000008484840000000000FFFF
+      0000C6C6C60000000000FFFFFF0000000000FFFFFF0000000000C6C6C600FFFF
+      0000000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000008484840000000000FFFF
+      0000C6C6C60000000000FFFFFF0000000000FFFFFF0000000000C6C6C600FFFF
+      0000000000008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000FFFF00000000000000
+      00000000FF00C6C6C600FFFFFF0000000000FFFFFF00C6C6C6000000FF000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000FFFF00000000000000
+      00000000FF00C6C6C600FFFFFF0000000000FFFFFF00C6C6C6000000FF000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFF0000C6C6C600FFFFFF0000000000FFFFFF00C6C6C600FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFF0000C6C6C600FFFFFF0000000000FFFFFF00C6C6C600FFFF00000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C6008484
+      840000000000000000000000000000000000000000000000000000000000C6C6
+      C600848484008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C6008484
+      840000000000000000000000000000000000000000000000000000000000C6C6
+      C600848484008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C6008484
+      840000000000000000000000000000000000000000000000000000000000C6C6
+      C600848484008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C6008484
+      840000000000000000000000000000000000000000000000000000000000C6C6
+      C600848484008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C600C6C6
+      C600C6C6C60084848400848484000000000084848400C6C6C600C6C6C600C6C6
+      C600C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C600C6C6
+      C600C6C6C60084848400848484000000000084848400C6C6C600C6C6C600C6C6
+      C600C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C600C6C6
+      C600C6C6C60084848400848484000000000084848400C6C6C600C6C6C600C6C6
+      C600C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000C6C6C600C6C6C600C6C6
+      C600C6C6C60084848400848484000000000084848400C6C6C600C6C6C600C6C6
+      C600C6C6C6008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF000000000084848400C6C6
+      C600C6C6C600000000000000000000FFFF000000000000000000C6C6C600C6C6
+      C600848484000000000000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF000000000084848400C6C6
+      C600C6C6C600000000000000000000FFFF000000000000000000C6C6C600C6C6
+      C600848484000000000000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000084848400C6C6
+      C600C6C6C6000000000084848400000000008484840000000000C6C6C600C6C6
+      C600848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000084848400C6C6
+      C600C6C6C6000000000084848400000000008484840000000000C6C6C600C6C6
+      C600848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      00000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000
+      0000848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      00000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000
+      0000848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000848484000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF0000FFFF000000000000FFFF000000000000FFFF000000000000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF0000FFFF000000000000FFFF000000000000FFFF000000000000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF00000000000000000000FFFF000000000000FFFF00000000000000000000FF
+      FF0000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF00000000000000000000FFFF000000000000FFFF00000000000000000000FF
+      FF0000FFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000080000000400000000100010000000000000400000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000
+      FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF0000000000000000
+      FFFFFFFFFFFFFFFF0000000000000000FFFFC00FFDFFC00F0000000000000000
+      FFFF8007F8FF80070000000000000000FFFF8003F07F80030000000000000000
+      FFFF8001F23F80010000000000000000FFFF8001F71F80010000000000000000
+      FFFF800FFF9F800F0000000000000000FFFF800FFFDF800F0000000000000000
+      FFFF801FFFFF801F0000000000000000FFFFC0FFFFFFC0FF0000000000000000
+      FFFFC0FFFFFFC0FF0000000000000000FFFFFFFFFFFFFFFF0000000000000000
+      FFFFFFFFFFFFFFFF0000000000000000FFFFF83FFFFFF83FFFFFFFFFFFFFFFFF
+      FFFFE00FFFFFE00FFFFFFFFFFFFFFFFFFFFFC007FFFFC007FFFFFFFFFFFFFFFF
+      FFFF8003FFFF8003FFFFFFFFFFFFFFFFFFFF8003FDFF8003FFFFFFFFFDFFFFFF
+      FFFF0001F8FF0001FFFFFFFFF8FFFFFFFFFF0001F07F0001FFFFFFFFF07FFFFF
+      FFFF0001F23F0001FFFFFFFFF23FFFFFFFFF0001F71F0001FFFFFFFFF71FFFFF
+      FFFF0001FF9F0001FFFFFFFFFF9FFFFFFFFF8003FFDF8003FFFFFFFFFFDFFFFF
+      FFFF8003FFFF8003FFFFFFFFFFFFFFFFFFFFC007FFFFC007FFFFFFFFFFFFFFFF
+      FFFFE00FFFFFE00FFFFFFFFFFFFFFFFFFFFFF83FFFFFF83FFFFFFFFFFFFFFFFF
+      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8823FFFF8823FFFF8823FFFF8823
+      FFFFC007FFFFC007FFFFC007FFFFC007FFFFC007FFFFC007FFFFC007FFFFC007
+      FFFF8003FFFF8003FFFF8003FFFF8003FFFF8003FDFF8003FFFF8003FDFF8003
+      FFFF8003F8FF8003FFFF8003F8FF8003FFFF0001F07F0001FFFF8003F07F8003
+      FFFF0001F23F0001FFFF8003F23F8003FFFF0001F71F0001FFFFC007F71FC007
+      FFFF0001FF9F0001FFFF0001FF9F0001FFFF0001FFDF0001FFFF0001FFDF0001
+      FFFF0001FFFF0001FFFF0001FFFF0001FFFF0001FFFF0001FFFF8003FFFF8003
+      FFFF4005FFFF4005FFFFC6C7FFFFC6C7FFFFC007FFFFC007FFFFFC7FFFFFFC7F
+      FFFF8443FFFF8443FFFFFFFFFFFFFFFF00000000000000000000000000000000
+      000000000000}
+  end
+  object imgConsults: TImageList
+    Left = 24
+    Top = 266
+    Bitmap = {
+      494C010109000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000004000000001002000000000000040
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000006B2108006B21
+      08006B2108006B2108006B2108006B2108000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000006B2108006B21
+      08006B2108006B2108006B2108006B2108000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00006B2108006B21080000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FF008400000000000000000000000000
+      00006B2108006B21080000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000084840000840084008484840000000000000000000000
+      00006B2108006B21080000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFF00000000FF00C6C6C60000000000000000000000
+      00006B2108006B21080000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000C6C6C6000000840084848400000000006B2108006B21
+      08006B2108006B2108006B2108006B2108000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840000000000C6C6C60000000000000000006B2108006B21
+      08006B2108006B2108006B2108006B2108000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000840000008484000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000C6C6C6000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      84008484000084840000C6C6C600C6C6C600C6C6C6008400000084840000C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084840000848400008484
+      0000848400008484000084840000C6C6C6008484000084840000848400008484
+      0000848400008484000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840084840000848400008484
+      0000848400008484000084000000C6C6C6008484000084840000848400008484
+      0000848400008484000084848400000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000848400008484000000000000848400000000000084840000848400000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000C6C6C60000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF000000FF000000
+      FF000000FF000000FF000000FF000000FF00000000000000FF000000FF000000
+      FF000000FF000000FF000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFF00006B2108006B2108006B2108006B2108006B2108006B21
+      0800000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840000000000000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      0000000000000000000000000000000000000000FF0084000000000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000FF0084000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000006B2108006B2108006B2108006B2108006B2108006B21
+      0800000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000848484000000000084848400000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      0000000000000000000000000000848400008400840084848400000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000848400008400840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFF0000FFFF0000FFFF00006B2108006B210800FFFF0000FFFF
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000C6C6C60084848400C6C6C600000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      0000000000000000000000000000FFFF00000000FF00C6C6C600000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000FFFF00000000FF00C6C6C600000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B007B7B7B006B2108006B210800000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000C6C6C6000000000084848400000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      0000000000000000000000000000C6C6C6000000840084848400000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000C6C6C6000000840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFF0000FFFF0000FFFF00006B2108006B210800FFFF0000FFFF
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000008484840000000000C6C6C60000000000000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      000000000000000000008484840000000000C6C6C60000000000000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      000000000000000000008484840000000000C6C6C60000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B00000000006B2108006B2108007B7B7B000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      0000000000000000000000000000000000008400000084840000000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000000000008400000084840000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFF00006B2108006B2108006B2108006B2108006B2108006B21
+      0800000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000C6C6C60000000000000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      000000000000000000000000000000000000C6C6C60000000000000000000000
+      000000000000000000000000FF00000000000000000000000000000000000000
+      000000000000000000000000000000000000C6C6C60000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000006B2108006B2108006B2108006B2108006B2108006B21
+      0800000000000000000000000000000000000000000000000000000000000000
+      0000848484008484840084848400C6C6C600C6C6C600C6C6C600000000008484
+      8400C6C6C600000000000000000000000000000000000000FF00000000000000
+      0000848484008484000084840000C6C6C600C6C6C600C6C6C600840000008484
+      0000C6C6C600000000000000FF00000000000000000000000000000000000000
+      0000848484008484000084840000C6C6C600C6C6C600C6C6C600840000008484
+      0000C6C6C6000000000000000000000000000000000000000000000000000000
+      000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000000000000000000000000000000000000000000000000000848484008484
+      840084848400848484008484840084848400C6C6C60084848400848484008484
+      840084848400848484008484840000000000000000000000FF00848400008484
+      000084840000848400008484000084840000C6C6C60084840000848400008484
+      0000848400008484000084840000000000000000000000000000848400008484
+      000084840000848400008484000084840000C6C6C60084840000848400008484
+      0000848400008484000084840000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400848484008484
+      840084848400848484008484840000000000C6C6C60084848400848484008484
+      8400848484008484840084848400C6C6C6000000000084848400848400008484
+      000084840000848400008484000084000000C6C6C60084840000848400008484
+      0000848400008484000084840000848484000000000084848400848400008484
+      000084840000848400008484000084000000C6C6C60084840000848400008484
+      0000848400008484000084840000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008484840084848400000000008484840000000000848484008484
+      840000000000000000000000000000000000000000000000FF00000000000000
+      0000000000008484000084840000000000008484000000000000848400008484
+      000000000000000000000000FF00000000000000000000000000000000000000
+      0000000000008484000084840000000000008484000000000000848400008484
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B00000000007B7B7B00000000007B7B7B00000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF000000FF000000
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF000000FF000000FF000000FF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B00000000007B7B7B00000000007B7B7B00000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000BDBDBD000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDBD
+      BD00000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000BDBD
+      BD00000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000BDBDBD000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000BDBDBD000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFFFF007B7B7B007B7B7B007B7B7B00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF000000
+      0000000000000000000000FFFF0000000000BDBDBD0000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF0000000000BDBDBD0000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFFFF007B7B7B00FFFFFF007B7B7B007B7B7B007B7B7B00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000007B7B7B0000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFFFF007B7B7B007B7B7B00FFFFFF007B7B7B00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF007B7B7B007B7B7B0000000000008484000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      8400000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B00000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B007B7B7B00000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF000000
+      000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
+      FF00000000000000000000000000000000000000000000FFFF0000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF000084840000FFFF000084840000FFFF00008484000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000084840000FFFF000084840000FFFF000084840000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B00000000007B7B7B00000000007B7B7B00000000007B7B
+      7B00000000000000000000000000000000000000000000FFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000084840000FFFF000084840000FFFF000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000FFFF000084840000FFFF000084840000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B00000000007B7B7B00000000007B7B7B00000000007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000400000000100010000000000000200000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FEC0000000000000FEC0000000000000
+      FEF3000000000000FC73000000000000FC73000000000000FC73000000000000
+      FC40000000000000FAC0000000000000FC7F000000000000FABF000000000000
+      E00F00000000000080030000000000000001000000000000F29F000000000000
+      FFFF000000000000FFFF000000000000FF7FFF7FFF7FF007FF7F8001FF7FCFFB
+      FF7FBF7DFF7FA80BFE3FBE3DFE3FAC0BFE3FBE3DFE3FA80BFE3FBE3DFE3FAC3B
+      FE3FBE3DFE3FA80BFD7FBD7DFD7FAD1BFE3FBE3DFE3FA80BFD5FBD5DFD5FAC0B
+      F007B005F007A80BC0018001C001AFFB800080008000A553F94FB94DF94FB007
+      FFFF8001FFFFD007FFFFFFFFFFFFEAAFBFFFC01FC01FF007BFFFC00FC00FC003
+      B049E007E0078003807FE003E0038003B07FE00380038003B9FFE00780078003
+      BFFFE00780078003B049E00780078003807FE00780078003B07FE00780078003
+      B9FFE007E0078003BFFFC007C0078003048FC007C007800307FFE007E007B007
+      07FFF803F803D0079FFFFC03FC03EAAF00000000000000000000000000000000
+      000000000000}
+  end
+  object imgSurgery: TImageList
+    Left = 29
+    Top = 329
+    Bitmap = {
+      494C01010D000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000004000000001002000000000000040
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF0000000000FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF000000000000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      000000FFFF00FFFFFF0000000000000000000000000000FFFF00FFFFFF0000FF
+      FF000000000000FFFF00FFFFFF0000FFFF000000000000000000FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000000000FFFFFF000000
+      0000FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF0000FFFF000000000000FFFF000000000000FFFF00FFFF
+      FF000000000000000000FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF000000000000FFFF00FFFFFF0000000000FFFFFF0000FFFF000000
+      000000FFFF00FFFFFF0000000000000000000000000000FFFF00FFFFFF0000FF
+      FF000000000000FFFF000000000000FFFF00FFFFFF0000000000FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000000000FFFFFF0000000000FFFFFF0000FFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF00000000000000000000FFFF00FFFFFF0000FFFF000000000000FFFF00FFFF
+      FF000000000000000000FFFFFF000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF000000000000000000FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      000000FFFF00FFFFFF0000000000000000000000000000FFFF00FFFFFF0000FF
+      FF000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00000000000000000000000000FFFF
+      FF000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF000000000000000000FFFFFF000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF000000000000000000FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000000000000000000000000000000000000000000000FFFF00C6C6
+      C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF0000000000000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF00000000000000000000000000000000000000000000FFFF000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF0000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000000000000000000000000000FFFF00FFFFFF0000FF
+      FF000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF000000000000FFFF00FFFFFF0000FFFF000000000000FF
+      FF00FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF000000
+      000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFF
+      FF000000000000000000FFFFFF00000000000000000000FFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      000000FFFF00FFFFFF0000000000000000000000000000FFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF
+      FF0000000000FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FFFF00FFFF
+      FF000000000000000000FFFFFF00000000000000000000FFFF00FFFFFF000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      000000FFFF00FFFFFF0000000000000000000000000000FFFF00FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF000000000000000000FFFFFF0000FFFF000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000000000000000000000000000FFFF
+      FF000000000000000000000000000000000000000000000000000000000000FF
+      FF00FFFFFF0000FFFF000000000000FFFF00FFFFFF0000FFFF000000000000FF
+      FF00FFFFFF0000FFFF00000000000000000000000000FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF000000000000000000FFFFFF00000000000000000000000000FFFFFF000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000000000000000000000000000000000000000000000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF0000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00000000000000000084848400000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00000000000000000000000000FFFFFF000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF0000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF000000000000000000FFFFFF00000000000000000000000000FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF0000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C6000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000C6C6C6000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000C6C6
+      C600000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000C6C6C6000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000000
+      0000C6C6C6000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF000000
+      0000000000000000000000FFFF0000000000C6C6C60000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF0000000000C6C6C60000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000000000000000000000000000FFFF0000000000008484000084
+      840000000000000000000000000000000000000000000000000000FFFF0000FF
+      FF0000FFFF0000FFFF0000FFFF00000000000000000000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF0000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00848484008484840000000000008484000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400848484008484840084848400848484008484840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400848484008484840084848400848484008484840084848400000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF0000FFFF0000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FFFF000084840000FFFF000084840000FFFF00008484000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000084840000FFFF000084840000FFFF000084840000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FFFF0000FFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000084840000FFFF000084840000FFFF000084
+      8400000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000FFFF000084840000FFFF000084840000FF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000084848400000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000084848400000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000400000000100010000000000000200000000000000000000
+      000000000000000000000000FFFFFF00801F0000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000080000000000000008000000000000000
+      E000000000000000E000000000000000E000000000000000E000000000000000
+      E000000000000000E07F000000000000FC00FFFFFFFF8007FC00E007C0010007
+      0000E007C00100000000E007C00100000000E007C00100000000E007C0010000
+      0000E007C00100000000E007C00100000000E007C00100000000E007C0010000
+      0000E007C001E0000000E007E07FE0010000E007E07FE003007FE007FFFFE007
+      007FFFFFFFFFE01FFFFFFFFFFFFFE07FFFFF8007801FFFFFC00100070000E007
+      C00100000000E007C00100000000E007C00100000000E007C00100000000E007
+      C00100000000E007C00100000000E007C00100008000E007C00100008000E007
+      C001E000E000E007E07FE001E000E007E07FE003E000E007FFFFE007E000E007
+      FFFFE01FE000FFFFFFFFE07FE07FFFFFFFFFBFFFC01FC01FFFFFBFFFC00FC00F
+      FFFFB049E007E007FFFF807FE003E003FFFFB07FE0038003FFFFB9FFE0078007
+      FFFFBFFFE0078007FFFFB049E0078007FFFF807FE0078007FFFFB07FE0078007
+      FFFFB9FFE007E007FFFFBFFFC007C007FFFF048FC007C007FFFF07FFE007E007
+      FFFF07FFF803F803FFFF9FFFFC03FC0300000000000000000000000000000000
+      000000000000}
+  end
+  object imgLblReminders: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgReminders
+    Labels = <
+      item
+        Caption = 'Reminder Category'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Category'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Due Reminder'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Applicable Reminder'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Not Applicable Reminder'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Unevaluated Reminder'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'With Dialog'
+        ImageIndex = 6
+        OverlayIndex = 0
+      end
+      item
+        Caption = 'With Processed Dialog'
+        ImageIndex = 7
+        OverlayIndex = 1
+      end>
+    Left = 112
+    Top = 80
+  end
+  object imgLblHealthFactorLabels: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgTemplates
+    Labels = <
+      item
+        Caption = 'Template Root'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Root'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Category'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Category'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Personal Template'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template'
+        ImageIndex = 6
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Personal Template *'
+        ImageIndex = 7
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template *'
+        ImageIndex = 8
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template *'
+        ImageIndex = 9
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Shared Template'
+        ImageIndex = 10
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template'
+        ImageIndex = 11
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template'
+        ImageIndex = 12
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Shared Template *'
+        ImageIndex = 13
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template *'
+        ImageIndex = 14
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Group Template *'
+        ImageIndex = 15
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Folder'
+        ImageIndex = 16
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Folder'
+        ImageIndex = 17
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog'
+        ImageIndex = 18
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog'
+        ImageIndex = 19
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog *'
+        ImageIndex = 20
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog *'
+        ImageIndex = 21
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog'
+        ImageIndex = 22
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog'
+        ImageIndex = 23
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog *'
+        ImageIndex = 24
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Template Dialog *'
+        ImageIndex = 25
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Dialog'
+        ImageIndex = 26
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Dialog'
+        ImageIndex = 27
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'COM Object Template'
+        ImageIndex = 28
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'COM Object Template not installed'
+        ImageIndex = 29
+        OverlayIndex = -1
+      end>
+    Left = 136
+    Top = 16
+  end
+  object imgLblNotes: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgNotes
+    Labels = <
+      item
+        Caption = 'Top Grouping'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Note'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Note with Addenda'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interdisciplanary Note'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interdisciplanary Note'
+        ImageIndex = 6
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interdisciplanary Note with Addenda'
+        ImageIndex = 7
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interdisciplanary Note with Addenda'
+        ImageIndex = 8
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interdisciplanary entry'
+        ImageIndex = 9
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interdisciplanary entry with addenda'
+        ImageIndex = 10
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Addendum'
+        ImageIndex = 11
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 12
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 13
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 14
+        OverlayIndex = -1
+      end>
+    Left = 120
+    Top = 144
+  end
+  object imgLblImages: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgNotes
+    Labels = <
+      item
+        Caption = 'Top Grouping'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Document'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Document with Addenda'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Folder'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Folder'
+        ImageIndex = 6
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Folder Plus'
+        ImageIndex = 7
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Folder Plus'
+        ImageIndex = 8
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Entry'
+        ImageIndex = 9
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Entry with Addenda'
+        ImageIndex = 10
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Addendum'
+        ImageIndex = 11
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 12
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 13
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 14
+        OverlayIndex = -1
+      end>
+    Left = 112
+    Top = 208
+  end
+  object imgLblConsults: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgConsults
+    Labels = <
+      item
+        Caption = 'Top Grouping'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Consult request'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Procedure Request'
+        ImageIndex = 6
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interfacility Consult Request'
+        ImageIndex = 7
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Interfacility Procedure'
+        ImageIndex = 8
+        OverlayIndex = -1
+      end>
+    Left = 128
+    Top = 272
+  end
+  object imgLblSurgery: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgSurgery
+    Labels = <
+      item
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Top Grouping'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Subgrouping'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'OR Case no attached reports'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'OR case attached reports'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'OR case attached reports'
+        ImageIndex = 6
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Report'
+        ImageIndex = 7
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Report with Addenda'
+        ImageIndex = 8
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Addendum'
+        ImageIndex = 9
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Non-OR case without attached reports'
+        ImageIndex = 10
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Non-OR case with attached report'
+        ImageIndex = 11
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Non-OR case with attached report'
+        ImageIndex = 12
+        OverlayIndex = -1
+      end>
+    Left = 120
+    Top = 328
+  end
+  object imgLblReminders2: TVA508ImageListLabeler
+    Components = <>
+    ImageList = imgReminders2
+    Labels = <
+      item
+        Caption = 'Reminder Due'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Due Check'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Applicable'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Applicable Check'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Not Applicable'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Not Applicable Check'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end
+      item
+        ImageIndex = 6
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Check'
+        ImageIndex = 7
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Category'
+        ImageIndex = 8
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Reminder Category Check'
+        ImageIndex = 9
+        OverlayIndex = -1
+      end>
+    Left = 288
+    Top = 80
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/dShared.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/dShared.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/dShared.pas	(revision 1676)
@@ -0,0 +1,895 @@
+unit dShared;
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ComCtrls, ImgList, uTemplates, ORFn, ORNet, ExtCtrls, ORCtrls, Richedit,
+  VA508ImageListLabeler;
+
+type
+  TdmodShared = class(TDataModule)
+    imgTemplates: TImageList;
+    imgReminders: TImageList;
+    imgNotes: TImageList;
+    imgImages: TImageList;
+    imgReminders2: TImageList;
+    imgConsults: TImageList;
+    imgSurgery: TImageList;
+    imgLblReminders: TVA508ImageListLabeler;
+    imgLblHealthFactorLabels: TVA508ImageListLabeler;
+    imgLblNotes: TVA508ImageListLabeler;
+    imgLblImages: TVA508ImageListLabeler;
+    imgLblConsults: TVA508ImageListLabeler;
+    imgLblSurgery: TVA508ImageListLabeler;
+    imgLblReminders2: TVA508ImageListLabeler;
+    procedure dmodSharedCreate(Sender: TObject);
+    procedure dmodSharedDestroy(Sender: TObject);
+  private
+    FTIUObjects: TStringList;
+    FInEditor: boolean;
+    FOnTemplateLock: TNotifyEvent;
+    FTagIndex: longint;
+    FDrawerTrees: TList;
+    FRefreshObject: boolean;
+  protected
+    procedure EncounterLocationChanged(Sender: TObject);
+  public
+    function ImgIdx(Node: TTreeNode): integer;
+    procedure AddTemplateNode(Tree: TTreeView; var EmptyCount: integer;
+                              const tmpl: TTemplate; AllowInactive: boolean = FALSE;
+                              const Owner: TTreeNode = nil);
+    function ExpandNode(Tree: TTreeView; Node: TTreeNode;
+              var EmptyCount: integer; AllowInactive: boolean = FALSE): boolean;
+    procedure Resync(SyncNode: TTreeNode; AllowInactive: boolean;
+                                var EmptyCount: integer);
+    procedure AddDrawerTree(DrawerForm: TForm);
+    procedure RemoveDrawerTree(DrawerForm: TForm);
+    procedure Reload;
+    procedure LoadTIUObjects;
+    function BoilerplateOK(const Txt, CRDelim: string; ObjList: TStringList;
+                                                       var Err: TStringList): boolean;
+    function TemplateOK(tmpl: TTemplate; Msg: string = ''): boolean;
+    function NeedsCollapsing(Tree: TTreeView): boolean;
+    procedure SelectNode(Tree: TORTreeView; GotoNodeID: string; var EmptyCount: integer);
+    procedure ExpandTree(Tree: TORTreeView; ExpandString: string; var EmptyCount: integer;
+                         AllowInactive: boolean = FALSE);
+    function InDialog(Node: TTreeNode): boolean;
+    property InEditor: boolean read FInEditor write FInEditor;
+    property OnTemplateLock: TNotifyEvent read FOnTemplateLock write FOnTemplateLock;
+    property TIUObjects: TStringList read FTIUObjects;
+    property RefreshObject: boolean read FRefreshObject write FRefreshObject;
+    procedure FindRichEditText(AFindDialog: TFindDialog; ARichEdit: TRichEdit);
+    procedure ReplaceRichEditText(AReplaceDialog: TReplaceDialog; ARichEdit: TRichEdit);
+  end;
+
+var
+  dmodShared: TdmodShared;
+
+const
+  ObjMarker = '^@@^';
+  ObjMarkerLen = length(ObjMarker);
+  DlgPropMarker = '^@=';
+  DlgPropMarkerLen = length(DlgPropMarker);
+  NoTextMarker = '<@>';
+
+implementation
+
+uses fDrawers, rTemplates, uCore, uTemplateFields, uEventHooks, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+const
+  TemplateImageIdx: array[TTemplateType, Boolean, Boolean] of integer =
+                          //    Personal       Shared
+                          //  Closed  Open   Closed  Open
+                          (((    0,    0), (    0,    0)),  //  ttNone,
+                           ((    0,    1), (    0,    1)),  //  ttMyRoot
+                           ((    0,    1), (    0,    1)),  //  ttRoot
+                           ((    0,    1), (    0,    1)),  //  ttTitles
+                           ((    0,    1), (    0,    1)),  //  ttConsults
+                           ((    0,    1), (    0,    1)),  //  ttProcedures
+                           ((    2,    3), (   16,   17)),  //  ttClass
+                           ((    4,    4), (   10,   10)),  //  ttDoc
+                           ((    5,    6), (   11,   12)),  //  ttGroup
+                           ((    7,    7), (   13,   13)),  //  ttDocEx
+                           ((    8,    9), (   14,   15))); //  ttGroupEx
+
+  DialogConvMax = 7;
+  DialogImageXRef: array[0..DialogConvMax, Boolean] of integer =
+                           ((5,18), (6,19),
+                            (8,20), (9,21),
+                            (11,22),(12,23),
+                            (14,24),(15,25));
+                            
+  RemDlgIdx: array[boolean] of integer = (26, 27);
+  COMObjIdx: array[boolean] of integer = (29, 28);
+
+function TdmodShared.ImgIdx(Node: TTreeNode): integer;
+var
+  Typ: TTemplateType;
+  i: integer;
+
+begin
+  Result := -1;
+  if(assigned(Node.Data)) then
+  begin
+    with TTemplate(Node.Data) do
+    begin
+      if (RealType = ttDoc) and (IsReminderDialog) then
+        Result := RemDlgIdx[(PersonalOwner <= 0)]
+      else
+      if (RealType = ttDoc) and (IsCOMObject) then
+        Result := COMObjIdx[COMObjectOK(COMObject)]
+      else
+      begin
+        Typ := TemplateType;
+        if(Exclude and (Typ in [ttDocEx, ttGroupEx])) then
+        begin
+          if(not assigned(Node.Parent)) or (TTemplate(Node.Parent.Data).RealType <> ttGroup) then
+          begin
+            case Typ of
+              ttDocEx: Typ := ttDoc;
+              ttGroupEx: Typ := ttGroup;
+            end;
+          end;
+        end;
+        Result := TemplateImageIdx[Typ, (PersonalOwner <= 0),
+                  (Node.Expanded and Node.HasChildren)];
+        if(Dialog and (Typ in [ttGroup, ttGroupEx])) then
+        begin
+          for i := 0 to DialogConvMax do
+          begin
+            if(Result = DialogImageXRef[i, FALSE]) then
+            begin
+              Result := DialogImageXRef[i, TRUE];
+              break;
+            end;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TdmodShared.AddTemplateNode(Tree: TTreeView; var EmptyCount: integer;
+                              const tmpl: TTemplate; AllowInactive: boolean = FALSE;
+                              const Owner: TTreeNode = nil);
+var
+  Cur, Next: TTreeNode;
+  Done: boolean;
+  NewNode: TTreeNode;
+
+  procedure AddChildObject(Owner: TTreeNode);
+  begin
+    NewNode := Tree.Items.AddChildObject(Owner, tmpl.PrintName, tmpl);
+    TORTreeNode(NewNode).StringData := tmpl.ID + U + tmpl.PrintName;
+    NewNode.Cut := not tmpl.Active;
+    tmpl.AddNode(NewNode);
+    Done := TRUE;
+  end;
+
+begin
+  if((assigned(tmpl)) and ((tmpl.Active) or AllowInactive)) then
+  begin
+    Done := FALSE;
+    NewNode := nil;
+    if(assigned(Owner)) then
+    begin
+      Cur := Owner.GetFirstChild;
+      if(not assigned(Cur)) then
+        AddChildObject(Owner);
+    end
+    else
+    begin
+      Cur := Tree.Items.GetFirstNode;
+      if(not assigned(Cur)) then
+        AddChildObject(nil);
+    end;
+    if(not Done) then
+    begin
+      repeat
+        if(Cur.Data = tmpl) then
+          Done := TRUE
+        else
+        begin
+          Next := Cur.GetNextSibling;
+          if(assigned(Next)) then
+            Cur := Next
+          else
+            AddChildObject(Owner);
+        end;
+      until Done;
+    end;
+    if(assigned(NewNode) and (InEditor or (not tmpl.HideItems)) and 
+                             ((tmpl.Children in [tcActive, tcBoth]) or
+                             ((tmpl.Children <> tcNone) and AllowInactive))) then
+    begin
+      Tree.Items.AddChild(NewNode, EmptyNodeText);
+      inc(EmptyCount);
+    end;
+  end;
+end;
+
+function TdmodShared.ExpandNode(Tree: TTreeView; Node: TTreeNode;
+              var EmptyCount: integer; AllowInactive: boolean = FALSE): boolean;
+
+var
+  TmpNode: TTreeNode;
+  tmpl: TTemplate;
+  i :integer;
+
+begin
+  TmpNode := Node.GetFirstChild;
+  Result := TRUE;
+  if((assigned(TmpNode)) and (TmpNode.Text = EmptyNodeText)) then
+  begin
+    TmpNode.Delete;
+    dec(EmptyCount);
+    tmpl := TTemplate(Node.Data);
+    ExpandTemplate(tmpl);
+    for i := 0 to tmpl.Items.Count-1 do
+      AddTemplateNode(Tree, EmptyCount, TTemplate(tmpl.Items[i]),
+                      AllowInactive, Node);
+    if((tmpl.Children = tcNone) or ((not AllowInactive) and (tmpl.Children = tcInactive))) then
+      Result := FALSE;
+  end;
+end;
+
+procedure TdmodShared.Resync(SyncNode: TTreeNode; AllowInactive: boolean;
+                                var EmptyCount: integer);
+var
+  FromGet: boolean;
+  IDCount, SyncLevel, i: integer;
+  SyncExpanded: boolean;
+  //SelNode,
+  Node: TTreeNode;
+  Template: TTemplate;
+  IDSort, CurExp: TStringList;
+  SelID, TopID: string;
+  DoSel, DoTop: boolean;
+  Tree: TTreeView;
+  First: boolean;
+  TagCount: longint;
+
+  function InSyncNode(Node: TTreeNode): boolean;
+  var
+    TmpNode: TTreeNode;
+
+  begin
+    Result := FALSE;
+    TmpNode := Node;
+    while((not Result) and assigned(TmpNode)) do
+    begin
+      if(TmpNode = SyncNode) then
+        Result := TRUE
+      else
+        TmpNode := TmpNode.Parent;
+    end;
+  end;
+
+  function GetID(Node: TTreeNode): string;
+  var
+    tmpl: TTemplate;
+    IDX: string;
+    
+  begin
+    inc(IDCount);
+    Result := '';
+    if(assigned(Node) and assigned(Node.Data)) then
+    begin
+      tmpl := TTemplate(Node.Data);
+      if((tmpl.ID = '') or (tmpl.ID = '0')) then
+      begin
+        if(tmpl.LastTagIndex <> FTagIndex) then
+        begin
+          tmpl.LastTagIndex := FTagIndex;
+          inc(TagCount);
+          tmpl.tag := TagCount;
+        end;
+        IDX := '<'+IntToStr(tmpl.Tag)+'>';
+      end
+      else
+        IDX := tmpl.ID;
+      if(Node <> SyncNode) and (assigned(Node.Parent)) then
+        Result := U + GetID(Node.Parent);
+      Result := IDX + Result;
+    end;
+    dec(IDCount);
+    if((not FromGet) and (IDCount = 0) and (Result <> '')) then
+      Result := IntToStr(Node.AbsoluteIndex) + U + Result;
+  end;
+
+  function GetNode(ID: string): TTreeNode;
+  var
+    idx, i :integer;
+    TrueID, TmpStr: string;
+    TmpNode: TTreeNode;
+
+  begin
+    Result := nil;
+    if(ID <> '') then
+    begin
+      idx := StrToIntDef(Piece(ID,U,1),0);
+      i := pos(U,ID);
+      if(i > 0) then
+      begin
+        delete(ID,1,i);
+        FromGet := TRUE;
+        try
+          TmpNode := SyncNode.GetFirstChild;
+          while ((not assigned(Result)) and (assigned(TmpNode)) and
+                 (TmpNode.Level > SyncLevel)) do
+          begin
+            if(GetID(TmpNode) = ID) then
+              Result := TmpNode
+            else
+              TmpNode := TmpNode.GetNext;
+          end;
+          if(not assigned(Result)) then
+          begin
+            TrueID := piece(ID,U,1);
+            TmpNode := SyncNode.GetFirstChild;
+            while ((not assigned(Result)) and (assigned(TmpNode)) and
+                   (TmpNode.Level > SyncLevel)) do
+            begin
+              if(assigned(TmpNode.Data) and (TTemplate(TmpNode.Data).ID = TrueID)) then
+              begin
+                TmpStr := IntToStr(abs(idx-TmpNode.AbsoluteIndex));
+                TmpStr := copy('000000',1,7-length(TmpStr))+TmpStr;
+                IDSort.AddObject(TmpStr,TmpNode);
+              end;
+              TmpNode := TmpNode.GetNext;
+            end;
+            if(IDSort.Count > 0) then
+            begin
+              IDSort.Sort;
+              Result := TTreeNode(IDSort.Objects[0]);
+              IDSort.Clear;
+            end;
+          end;
+        finally
+          FromGet := FALSE;
+        end;
+      end;
+    end;
+  end;
+
+  procedure BuildNodes(tmpl: TTemplate; Owner: TTreeNode);
+  var
+    i: integer;
+    TmpNode: TTreeNode;
+
+  begin
+    if(tmpl.Active or AllowInactive) then
+    begin
+      if(First) then
+      begin
+        First := FALSE;
+        TmpNode := Owner;
+      end
+      else
+      begin
+        TmpNode := Tree.Items.AddChildObject(Owner, tmpl.PrintName, tmpl);
+        TORTreeNode(TmpNode).StringData := tmpl.ID + U + tmpl.PrintName;
+        TmpNode.Cut := not tmpl.Active;
+        tmpl.AddNode(TmpNode);
+      end;
+      if(tmpl.Expanded) then
+      begin
+        for i := 0 to tmpl.Items.Count-1 do
+          BuildNodes(TTemplate(tmpl.Items[i]), TmpNode);
+      end
+      else
+      if(InEditor or (not tmpl.HideItems)) and
+         ((tmpl.Children in [tcActive, tcBoth]) or
+         (AllowInactive and (tmpl.Children = tcInactive))) then
+      begin
+        Tree.Items.AddChild(TmpNode, EmptyNodeText);
+        inc(EmptyCount);
+      end;
+    end;
+  end;
+
+begin
+  if(assigned(SyncNode)) then
+  begin
+    TagCount := 0;
+    inc(FTagIndex);
+    Tree := TTreeView(SyncNode.TreeView);
+    Tree.Items.BeginUpdate;
+    try
+      SyncExpanded := SyncNode.Expanded;
+      Template := TTemplate(SyncNode.Data);
+      SyncLevel := SyncNode.Level;
+      FromGet := FALSE;
+      IDCount := 0;
+      IDSort := TStringList.Create;
+      try
+      {-- Get the Current State of the tree --}
+        CurExp := TStringList.Create;
+        try
+          Node := Tree.TopItem;
+          DoTop := InSyncNode(Node);
+          if(DoTop) then
+            TopID := GetID(Node);
+
+          Node := Tree.Selected;
+          DoSel := InSyncNode(Node);
+          if(DoSel) then
+            SelID := GetID(Node);
+
+          Node := SyncNode.GetFirstChild;
+          while ((assigned(Node)) and (Node.Level > SyncLevel)) do
+          begin
+            if(Node.Text = EmptyNodeText) then
+              dec(EmptyCount)
+            else
+            if(Node.Expanded) then
+              CurExp.Add(GetID(Node));
+            if(assigned(Node.Data)) then
+              TTemplate(Node.Data).RemoveNode(Node);
+            Node := Node.GetNext;
+          end;
+
+        {-- Recursively Rebuild the Tree --}
+          SyncNode.DeleteChildren;
+          First := TRUE;
+          BuildNodes(Template, SyncNode);
+
+        {-- Attempt to restore Tree to it's former State --}
+          SyncNode.Expanded := SyncExpanded;
+          for i := 0 to CurExp.Count-1 do
+          begin
+            Node := GetNode(CurExp[i]);
+            if(assigned(Node)) then
+              Node.Expand(FALSE);
+          end;
+
+          if(DoTop) and (TopID <> '') then
+          begin
+            Node := GetNode(TopID);
+            if(assigned(Node)) then
+              Tree.TopItem := Node;
+          end;
+
+          if(DoSel) and (SelID <> '') then
+          begin
+            Node := GetNode(SelID);
+            if(assigned(Node)) then
+            begin
+              Tree.Selected := Node;
+              Node.MakeVisible;
+            end;
+          end;
+
+        finally
+          CurExp.Free;
+        end;
+
+      finally
+        IDSort.Free;
+      end;
+
+    finally
+      Tree.Items.EndUpdate;
+    end;
+  end;
+end;
+
+
+procedure TdmodShared.dmodSharedCreate(Sender: TObject);
+begin
+  FDrawerTrees := TList.Create;
+  imgReminders.Overlay(6,0);
+  imgReminders.Overlay(7,1);
+  imgReminders2.Overlay(4,0);
+end;
+
+procedure TdmodShared.dmodSharedDestroy(Sender: TObject);
+begin
+  KillObj(@FDrawerTrees);
+  KillObj(@FTIUObjects);
+end;
+
+procedure TdmodShared.AddDrawerTree(DrawerForm: TForm);
+begin
+  if(assigned(FDrawerTrees)) and (FDrawerTrees.IndexOf(DrawerForm) < 0) then
+    FDrawerTrees.Add(DrawerForm);
+  Encounter.Notifier.NotifyWhenChanged(EncounterLocationChanged);
+end;
+
+procedure TdmodShared.RemoveDrawerTree(DrawerForm: TForm);
+var
+  idx: integer;
+
+begin
+  if(assigned(FDrawerTrees)) then
+  begin
+    idx := FDrawerTrees.IndexOf(DrawerForm);
+    if(idx >= 0) then
+      FDrawerTrees.Delete(idx);
+  end;
+end;
+
+procedure TdmodShared.Reload;
+var
+  i: integer;
+
+begin
+  if(assigned(FDrawerTrees)) then
+  begin
+    ReleaseTemplates;
+    for i := 0 to FDrawerTrees.Count-1 do
+      TfrmDrawers(FDrawerTrees[i]).ExternalReloadTemplates;
+  end;
+end;
+
+procedure TdmodShared.LoadTIUObjects;
+var
+  i: integer;
+
+begin
+  if(not assigned(FTIUObjects)) or (FRefreshObject = true)  then
+  begin
+    if(not assigned(FTIUObjects)) then
+      FTIUObjects := TStringList.Create;
+    FTIUObjects.Clear;
+    GetObjectList;
+    for i := 0 to RPCBrokerV.Results.Count-1 do
+      FTIUObjects.Add(MixedCase(Piece(RPCBrokerV.Results[i],U,2))+U+RPCBrokerV.Results[i]);
+    FTIUObjects.Sort;
+    FRefreshObject := False;
+   end;
+end;
+
+function TdmodShared.NeedsCollapsing(Tree: TTreeView): boolean;
+var
+  Node: TTreeNode;
+
+begin
+  Result := FALSE;
+  if(assigned(Tree)) then
+  begin
+    Node := Tree.Items.GetFirstNode;
+    while((not Result) and assigned(Node)) do
+    begin
+      Result := Node.Expanded;
+      Node := Node.GetNextSibling;
+    end;
+  end;
+end;
+
+function TdmodShared.BoilerplateOK(const Txt, CRDelim: string; ObjList: TStringList;
+                                                               var Err: TStringList): boolean;
+var
+  cnt, i, j, p: integer;
+  tmp,obj: string;
+  BadObj, ok: boolean;
+
+  procedure AddErr(Amsg: string);
+  begin
+    if(not assigned(Err)) then
+      Err := TStringList.Create;
+    Err.Add(Amsg)
+  end;
+
+  function ErrCount: integer;
+  begin
+    if(Assigned(Err)) then
+      Result := Err.Count
+    else
+      Result := 0;
+  end;
+
+begin
+  if(assigned(ObjList)) then
+    ObjList.Clear;
+  cnt := ErrCount;
+  tmp := Txt;
+  BadObj := FALSE;
+  repeat
+    i := pos('|',tmp);
+    if(i > 0) then
+    begin
+      delete(tmp,1,i);
+      j := pos('|',tmp);
+      if(j = 0) then
+      begin
+        AddErr('Unpaired "|" in Boilerplate');
+        continue;
+      end;
+      obj := copy(tmp,1,j-1);
+      delete(tmp,1,j);
+      if(obj = '') then
+      begin
+        AddErr('Brackets "||" are there, but there''s no name inside it.');
+        continue;
+      end;
+      j := pos(CRDelim, obj);
+      if(j > 0) then
+      begin
+        AddErr('Object "'+copy(obj,1,j-1)+'" split between lines');
+        continue;
+      end;
+      LoadTIUObjects;
+      ok := FALSE;
+      for j := 0 to FTIUObjects.Count-1 do
+      begin
+        for p := 3 to 5 do
+        begin
+          if(obj = piece(FTIUObjects[j],U,p)) then
+          begin
+            ok := TRUE;
+            if(assigned(ObjList)) and (ObjList.IndexOf(ObjMarker + obj) < 0) then
+            begin
+              ObjList.Add(ObjMarker + obj);
+              ObjList.Add('|' + obj + '|');
+            end;
+            break;
+          end;
+        end;
+        if(ok) then break;
+      end;
+      if(not ok) then
+      begin
+        AddErr('Object "'+obj+'" not found.');
+        BadObj := TRUE;
+      end;
+    end;
+  until(i=0);
+  Result := (cnt = ErrCount);
+  if(not Result) then
+  begin
+    Err.Insert(0,'Boilerplate Contains Errors:'); 
+    Err.Insert(1,'');
+    if(BadObj) then
+    begin
+      Err.Add('');
+      Err.Add('Use UPPERCASE and object''s exact NAME, PRINT NAME, or ABBREVIATION');
+      Err.Add('Any of these may have changed since an object was embedded.');
+    end;
+  end;
+  if(assigned(ObjList) and (ObjList.Count > 0)) then
+    ObjList.Add(ObjMarker);
+end;
+
+function TdmodShared.TemplateOK(tmpl: TTemplate; Msg: string = ''): boolean;
+var
+  Err: TStringList;
+  btns: TMsgDlgButtons;
+
+begin
+  Err := nil;
+  try
+    Result := BoilerplateOK(tmpl.FullBoilerplate, #13, nil, Err);
+    if(not Result) then
+    begin
+      if(Msg = 'OK') then
+        btns := [mbOK]
+      else
+      begin
+        btns := [mbAbort, mbIgnore];
+        Err.Add('');
+        if(Msg = '') then
+          Msg := 'template insertion';
+        Err.Add('Do you want to Abort '+Msg+', or Ignore the error and continue?');
+      end;
+      Result := (MessageDlg(Err.Text, mtError, btns, 0) = mrIgnore);
+    end;
+  finally
+    if(assigned(Err)) then
+      Err.Free;
+  end;
+  if Result then
+    Result := BoilerplateTemplateFieldsOK(tmpl.FullBoilerplate, Msg);
+end;
+
+procedure TdmodShared.EncounterLocationChanged(Sender: TObject);
+var
+  i: integer;
+
+begin
+  if(assigned(FDrawerTrees)) then
+  begin
+    for i:= 0 to FDrawerTrees.count-1 do
+      TfrmDrawers(FDrawerTrees[i]).UpdatePersonalTemplates;
+  end;
+end;
+
+procedure TdmodShared.SelectNode(Tree: TORTreeView; GotoNodeID: string; var EmptyCount: integer);
+var
+  i, j: integer;
+  IEN, PIEN: string;
+  Node: TORTreeNode;
+
+  function FindNode(StartNode: TORTreeNode): TORTreeNode;
+  begin
+    Result := nil;
+    while assigned(StartNode) do
+    begin
+      if(Piece(StartNode.StringData, U ,1) = IEN) then
+      begin
+        Result := StartNode;
+        exit;
+      end;
+      StartNode := TORTreeNode(StartNode.GetNextSibling);
+    end;
+  end;
+
+begin
+  if(GotoNodeID <> '') then
+  begin
+    i := 1;
+    for j := 1 to length(GotoNodeID) do
+      if(GotoNodeID[j] = ';') then inc(i);
+    PIEN := '';
+    Node := TORTreeNode(Tree.Items.GetFirstNode);
+    repeat
+      IEN := piece(GotoNodeID, ';', i);
+      if(IEN <> '') then
+      begin
+        Node := FindNode(Node);
+        if(assigned(Node)) then
+        begin
+          if(PIEN <> '') then
+            PIEN := ';' + PIEN;
+          PIEN := IEN + PIEN;
+          if(PIEN = GotoNodeID) then
+          begin
+            Node.EnsureVisible;
+            Tree.Selected := Node;
+            IEN := '';
+          end
+          else
+          begin
+            dmodShared.ExpandNode(Tree, Node, EmptyCount);
+            Node := TORTreeNode(Node.GetFirstChild);
+            if(assigned(Node)) then
+              dec(i)
+            else
+              IEN := '';
+          end;
+        end
+        else
+          IEN := '';
+      end;
+    until (i < 1) or (IEN = '');
+  end;
+end;
+
+function TdmodShared.InDialog(Node: TTreeNode): boolean;
+begin
+  Result := FALSE;
+  while assigned(Node) and (not Result) do
+  begin
+    if TTemplate(Node.Data).IsDialog then
+      Result := TRUE
+    else
+      Node := Node.Parent;
+  end;
+end;
+
+procedure TdmodShared.ExpandTree(Tree: TORTreeView; ExpandString: string;
+  var EmptyCount: integer; AllowInactive: boolean = FALSE);
+
+var
+  NStr: string;
+  i: integer;
+  Node: TTreeNode;
+
+begin
+  Tree.Items.BeginUpdate;
+  try
+    i := 1;
+    repeat
+      NStr := piece(ExpandString,U,i);
+      if(NStr <> '') then
+      begin
+        inc(i);
+        Node := Tree.FindPieceNode(NStr, 1, ';');
+        if assigned(Node) then
+        begin
+          ExpandNode(Tree, Node, EmptyCount, AllowInactive);
+          Node.Expand(False);
+        end;
+      end;
+    until(NStr = '');
+  finally
+    Tree.Items.EndUpdate;
+  end;
+end;
+
+procedure TdmodShared.FindRichEditText(AFindDialog: TFindDialog; ARichEdit: TRichEdit);
+const
+  TX_NOMATCH = 'The text was not found';
+  TC_NOMATCH = 'No more matches';
+var
+  FoundAt, FoundLine, TopLine, BottomLine: LongInt;
+  StartPos, ToEnd, CharPos: Integer;
+  SearchOpts: TSearchTypes;
+begin
+  SearchOpts := [];
+  with ARichEdit do
+  begin
+    { begin the search after the current selection if there is one }
+    { otherwise, begin at the start of the text }
+    if SelStart <> 0 then
+      StartPos := SelStart + SelLength
+    else
+      StartPos := 0;
+    { ToEnd is the length from StartPos to the end of the text in the rich edit control }
+    ToEnd := Length(Text) - StartPos;
+    if frMatchCase in AFindDialog.Options then Include(SearchOpts, stMatchCase);
+    if frWholeWord in AFindDialog.Options then Include(SearchOpts, stWholeWord);
+    FoundAt := FindText(AFindDialog.FindText, StartPos, ToEnd, SearchOpts);
+    if FoundAt <> -1 then
+    begin
+      SetFocus;
+      TopLine := SendMessage(Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+      BottomLine := TopLine + (Height div FontHeightPixel(Font.Handle));
+      FoundLine := SendMessage(Handle, EM_EXLINEFROMCHAR, 0, FoundAt);
+      if (FoundLine + 10) > BottomLine then
+        SendMessage(Handle, EM_LINESCROLL, 0, FoundLine - BottomLine + 10);
+      CharPos := Pos(AFindDialog.FindText, Lines[FoundLine]);
+      SendMessage(ARichEdit.Handle, EM_LINESCROLL, CharPos, 0);
+      SelStart := FoundAt;
+      SelLength := Length(AFindDialog.FindText);
+    end
+    else
+    begin
+      if not (frReplaceAll in AFindDialog.Options) then InfoBox(TX_NOMATCH, TC_NOMATCH, MB_OK);
+      SelStart := 0;
+      SelLength := 0;
+      //AFindDialog.CloseDialog;
+    end;
+  end;
+end;
+
+procedure TdmodShared.ReplaceRichEditText(AReplaceDialog: TReplaceDialog; ARichEdit: TRichEdit);
+const
+  TC_COMPLETE  = 'Replacement Complete';
+  TX_COMPLETE1 = 'CPRS has finished searching the document.  ' + CRLF;
+  TX_COMPLETE2 = ' replacements were made.';
+var
+  Replacements: integer;
+  NewStart: integer;
+begin
+  Replacements := 0;
+  if (frReplace in AReplaceDialog.Options) then
+    begin
+      if ARichEdit.SelLength > 0 then
+        begin
+          NewStart := ARichEdit.SelStart + Length(AReplaceDialog.ReplaceText);
+          ARichEdit.SelText := AReplaceDialog.ReplaceText;
+          ARichEdit.SelStart := NewStart;
+          //Replacements := Replacements + 1;
+        end;
+      FindRichEditText(AReplaceDialog, ARichEdit);
+    end
+  else if (frReplaceAll in AReplaceDialog.Options) then
+    begin
+      repeat
+        if ARichEdit.SelLength > 0 then
+          begin
+            NewStart := ARichEdit.SelStart + Length(AReplaceDialog.ReplaceText);
+            ARichEdit.SelText := AReplaceDialog.ReplaceText;
+            ARichEdit.SelStart := NewStart;
+            Replacements := Replacements + 1;
+          end;
+        FindRichEditText(AReplaceDialog, ARichEdit);
+      until ARichEdit.SelLength = 0;
+      InfoBox(TX_COMPLETE1 + IntToStr(Replacements) + TX_COMPLETE2, TC_COMPLETE, MB_OK);
+    end
+  else
+    FindRichEditText(AReplaceDialog, ARichEdit);
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TdmodShared);
+
+end.
+
+
+
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTAllgy.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTAllgy.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTAllgy.dfm	(revision 1676)
@@ -0,0 +1,722 @@
+inherited frmARTAllergy: TfrmARTAllergy
+  Tag = 1105
+  Left = 339
+  Top = 266
+  Caption = 'Enter Allergy or Adverse Reaction'
+  ClientHeight = 438
+  ClientWidth = 553
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  ExplicitWidth = 561
+  ExplicitHeight = 472
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 553
+    Height = 438
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblAllergyType: TOROffsetLabel
+      Left = 38
+      Top = 403
+      Width = 63
+      Height = 15
+      Caption = 'Allergy Type:'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      Visible = False
+      WordWrap = False
+    end
+    object cmdOK: TButton
+      Left = 380
+      Top = 403
+      Width = 72
+      Height = 21
+      Caption = '&OK'
+      TabOrder = 1
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 459
+      Top = 403
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = '&Cancel'
+      TabOrder = 2
+      OnClick = cmdCancelClick
+    end
+    object pgAllergy: TPageControl
+      Left = 4
+      Top = 17
+      Width = 529
+      Height = 371
+      ActivePage = tabGeneral
+      MultiLine = True
+      TabOrder = 0
+      object tabGeneral: TTabSheet
+        Caption = 'General'
+        object lblAgent: TOROffsetLabel
+          Left = 7
+          Top = 44
+          Width = 82
+          Height = 15
+          Caption = 'Causative agent:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object btnAgent: TSpeedButton
+          Left = 175
+          Top = 62
+          Width = 19
+          Height = 19
+          Caption = '...'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          OnClick = btnAgentClick
+        end
+        object lblOriginator: TOROffsetLabel
+          Left = 202
+          Top = 1
+          Width = 50
+          Height = 15
+          Caption = 'Originator:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblOriginateDate: TOROffsetLabel
+          Left = 202
+          Top = 44
+          Width = 81
+          Height = 15
+          Caption = 'Origination Date:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object Bevel1: TBevel
+          Left = 7
+          Top = 299
+          Width = 502
+          Height = 36
+        end
+        object lblSymptoms: TOROffsetLabel
+          Left = 7
+          Top = 127
+          Width = 84
+          Height = 15
+          Caption = 'Signs/Symptoms:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblSelectedSymptoms: TOROffsetLabel
+          Left = 147
+          Top = 127
+          Width = 98
+          Height = 15
+          Caption = 'Selected Symptoms:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblSeverity: TOROffsetLabel
+          Left = 362
+          Top = 81
+          Width = 43
+          Height = 15
+          Caption = 'Severity:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblObservedDate: TOROffsetLabel
+          Left = 362
+          Top = 44
+          Width = 102
+          Height = 15
+          Caption = 'Reaction Date/Time:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblComments: TOROffsetLabel
+          Left = 295
+          Top = 127
+          Width = 54
+          Height = 15
+          Caption = 'Comments:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblNatureOfReaction: TOROffsetLabel
+          Left = 7
+          Top = 82
+          Width = 95
+          Height = 15
+          Caption = 'Nature of Reaction:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object ckNoKnownAllergies: TCheckBox
+          Left = 7
+          Top = 3
+          Width = 119
+          Height = 17
+          Caption = '&No Known Allergies'
+          TabOrder = 0
+          OnClick = ckNoKnownAllergiesClick
+        end
+        object btnCurrent: TButton
+          Left = 7
+          Top = 24
+          Width = 114
+          Height = 21
+          Caption = '&Active Allergies'
+          TabOrder = 1
+          OnClick = btnCurrentClick
+        end
+        object lstAllergy: TORListBox
+          Left = 7
+          Top = 61
+          Width = 166
+          Height = 21
+          Color = clBtnFace
+          ExtendedSelect = False
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          OnClick = lstAllergyClick
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2'
+          OnChange = ControlChange
+        end
+        object cboOriginator: TORComboBox
+          Left = 202
+          Top = 16
+          Width = 139
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Color = clBtnFace
+          DropDownCount = 8
+          Enabled = False
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clInactiveCaption
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = True
+          LookupPiece = 2
+          MaxLength = 0
+          ParentFont = False
+          ParentShowHint = False
+          Pieces = '2,3'
+          ShowHint = False
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 4
+          OnChange = ControlChange
+          OnNeedData = cboOriginatorNeedData
+          CharsNeedMatch = 1
+        end
+        object calOriginated: TORDateBox
+          Left = 202
+          Top = 61
+          Width = 140
+          Height = 21
+          Color = clBtnFace
+          Enabled = False
+          TabOrder = 5
+          OnChange = ControlChange
+          DateOnly = False
+          RequireTime = False
+        end
+        object ckChartMarked: TCheckBox
+          Left = 294
+          Top = 307
+          Width = 113
+          Height = 17
+          Caption = '&Marked On Chart'
+          Checked = True
+          State = cbChecked
+          TabOrder = 18
+          Visible = False
+          OnClick = ControlChange
+        end
+        object ckIDBand: TCheckBox
+          Left = 122
+          Top = 307
+          Width = 97
+          Height = 17
+          Caption = '&ID Band Marked'
+          TabOrder = 17
+          OnClick = ControlChange
+        end
+        object cboSymptoms: TORComboBox
+          Left = 7
+          Top = 141
+          Width = 135
+          Height = 152
+          Style = orcsSimple
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = True
+          LookupPiece = 0
+          MaxLength = 0
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 11
+          OnKeyDown = cboSymptomsKeyDown
+          OnMouseClick = cboSymptomsMouseClick
+          OnNeedData = cboSymptomsNeedData
+          CharsNeedMatch = 1
+        end
+        object lstSelectedSymptoms: TORListBox
+          Left = 147
+          Top = 141
+          Width = 136
+          Height = 122
+          ExtendedSelect = False
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 12
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2,4'
+          OnChange = lstSelectedSymptomsChange
+        end
+        object btnDateTime: TButton
+          Left = 154
+          Top = 270
+          Width = 62
+          Height = 21
+          Caption = '&Date/Time'
+          TabOrder = 13
+          OnClick = btnDateTimeClick
+        end
+        object btnRemove: TButton
+          Left = 223
+          Top = 270
+          Width = 57
+          Height = 21
+          Caption = '&Remove'
+          TabOrder = 14
+          OnClick = btnRemoveClick
+        end
+        object grpObsHist: TRadioGroup
+          Left = 362
+          Top = 2
+          Width = 147
+          Height = 38
+          Columns = 2
+          Ctl3D = True
+          Items.Strings = (
+            'O&bserved'
+            '&Historical')
+          ParentCtl3D = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 7
+          OnClick = grpObsHistClick
+        end
+        object cboSeverity: TORComboBox
+          Left = 362
+          Top = 96
+          Width = 127
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = False
+          LookupPiece = 0
+          MaxLength = 0
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 9
+          OnChange = ControlChange
+          OnExit = ControlChange
+          CharsNeedMatch = 1
+        end
+        object calObservedDate: TORDateBox
+          Left = 362
+          Top = 61
+          Width = 145
+          Height = 21
+          TabOrder = 8
+          OnChange = ControlChange
+          DateOnly = False
+          RequireTime = False
+        end
+        object cmdPrevObs: TButton
+          Left = 202
+          Top = 96
+          Width = 140
+          Height = 21
+          Caption = 'View &Previous Observations'
+          TabOrder = 6
+          OnClick = cmdPrevObsClick
+        end
+        object memComments: TRichEdit
+          Left = 294
+          Top = 141
+          Width = 213
+          Height = 112
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          ParentFont = False
+          ScrollBars = ssVertical
+          TabOrder = 15
+          OnExit = memCommentsExit
+        end
+        object cmdPrevCmts: TButton
+          Left = 322
+          Top = 270
+          Width = 157
+          Height = 21
+          Caption = '&View Previous Comments'
+          TabOrder = 16
+          OnClick = cmdPrevCmtsClick
+        end
+        object cboNatureOfReaction: TORComboBox
+          Left = 7
+          Top = 96
+          Width = 190
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = False
+          LookupPiece = 0
+          MaxLength = 0
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 3
+          OnChange = ControlChange
+          CharsNeedMatch = 1
+        end
+        object btnSevHelp: TORAlignButton
+          Left = 489
+          Top = 96
+          Width = 21
+          Height = 21
+          Caption = '&?'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          TabOrder = 10
+          OnClick = btnSevHelpClick
+        end
+      end
+      object tabVerify: TTabSheet
+        Caption = 'Verify'
+        ImageIndex = 3
+        object lblVerifier: TOROffsetLabel
+          Left = 99
+          Top = 51
+          Width = 55
+          Height = 15
+          Caption = 'Verified By:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object lblVerifyDate: TOROffsetLabel
+          Left = 99
+          Top = 108
+          Width = 66
+          Height = 15
+          Caption = 'Date Verified:'
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 2
+          WordWrap = False
+        end
+        object ckVerified: TCheckBox
+          Left = 99
+          Top = 18
+          Width = 69
+          Height = 17
+          Caption = '&Verified'
+          TabOrder = 0
+          OnClick = ControlChange
+        end
+        object cboVerifier: TORComboBox
+          Left = 99
+          Top = 65
+          Width = 138
+          Height = 21
+          Style = orcsDropDown
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = True
+          LookupPiece = 2
+          MaxLength = 0
+          Pieces = '2,3'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 1
+          OnChange = ControlChange
+          OnNeedData = cboVerifierNeedData
+          CharsNeedMatch = 1
+        end
+        object calVerifyDate: TORDateBox
+          Left = 99
+          Top = 124
+          Width = 137
+          Height = 21
+          TabOrder = 2
+          OnChange = ControlChange
+          DateOnly = False
+          RequireTime = False
+        end
+      end
+      object tabEnteredInError: TTabSheet
+        Caption = 'Entered In Error'
+        ImageIndex = 2
+        object lblErrCmts: TLabel
+          Left = 7
+          Top = 12
+          Width = 98
+          Height = 13
+          Caption = 'Comments (optional):'
+        end
+        object lblEnteredInError: TLabel
+          Left = 0
+          Top = 330
+          Width = 521
+          Height = 13
+          Align = alBottom
+          Alignment = taCenter
+          Caption = 'EnteredInError'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          ExplicitWidth = 83
+        end
+        object ckEnteredInError: TCheckBox
+          Left = 286
+          Top = 5
+          Width = 203
+          Height = 17
+          Caption = '&Mark this allergy as "Entered In Error"'
+          TabOrder = 0
+          Visible = False
+          OnClick = ControlChange
+        end
+        object memErrCmts: TRichEdit
+          Left = 6
+          Top = 27
+          Width = 506
+          Height = 263
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'Courier New'
+          Font.Style = []
+          ParentFont = False
+          ScrollBars = ssVertical
+          TabOrder = 1
+          OnExit = memCommentsExit
+        end
+      end
+    end
+    object cboAllergyType: TORComboBox
+      Left = 38
+      Top = 418
+      Width = 190
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Color = clBtnFace
+      DropDownCount = 8
+      Enabled = False
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 3
+      Visible = False
+      OnChange = ControlChange
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pgAllergy'
+        'Status = stsDefault')
+      (
+        'Component = tabGeneral'
+        'Status = stsDefault')
+      (
+        'Component = ckNoKnownAllergies'
+        'Status = stsDefault')
+      (
+        'Component = btnCurrent'
+        'Status = stsDefault')
+      (
+        'Component = lstAllergy'
+        'Status = stsDefault')
+      (
+        'Component = cboOriginator'
+        'Status = stsDefault')
+      (
+        'Component = calOriginated'
+        'Status = stsDefault')
+      (
+        'Component = ckChartMarked'
+        'Status = stsDefault')
+      (
+        'Component = ckIDBand'
+        'Status = stsDefault')
+      (
+        'Component = cboSymptoms'
+        'Status = stsDefault')
+      (
+        'Component = lstSelectedSymptoms'
+        'Status = stsDefault')
+      (
+        'Component = btnDateTime'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = grpObsHist'
+        'Status = stsDefault')
+      (
+        'Component = cboSeverity'
+        'Status = stsDefault')
+      (
+        'Component = calObservedDate'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrevObs'
+        'Status = stsDefault')
+      (
+        'Component = memComments'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrevCmts'
+        'Status = stsDefault')
+      (
+        'Component = cboNatureOfReaction'
+        'Status = stsDefault')
+      (
+        'Component = btnSevHelp'
+        'Status = stsDefault')
+      (
+        'Component = tabVerify'
+        'Status = stsDefault')
+      (
+        'Component = ckVerified'
+        'Status = stsDefault')
+      (
+        'Component = cboVerifier'
+        'Status = stsDefault')
+      (
+        'Component = calVerifyDate'
+        'Status = stsDefault')
+      (
+        'Component = tabEnteredInError'
+        'Status = stsDefault')
+      (
+        'Component = ckEnteredInError'
+        'Status = stsDefault')
+      (
+        'Component = memErrCmts'
+        'Status = stsDefault')
+      (
+        'Component = cboAllergyType'
+        'Status = stsDefault')
+      (
+        'Component = frmARTAllergy'
+        'Status = stsDefault'))
+  end
+  object dlgReactionDateTime: TORDateTimeDlg
+    FMDateTime = 2981202.000000000000000000
+    DateOnly = False
+    RequireTime = False
+    Left = 5
+    Top = 400
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTAllgy.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTAllgy.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTAllgy.pas	(revision 1676)
@@ -0,0 +1,1116 @@
+unit fARTAllgy;
+
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, ORCtrls, ORfn, ExtCtrls, ComCtrls, uConst,
+  Menus, ORDtTm, Buttons, fODBase, fAutoSz, fOMAction, rODAllergy,
+  VA508AccessibilityManager;
+
+type
+  TfrmARTAllergy = class(TfrmOMAction)
+    pnlBase: TORAutoPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pgAllergy: TPageControl;
+    tabGeneral: TTabSheet;
+    tabVerify: TTabSheet;
+    ckNoKnownAllergies: TCheckBox;
+    btnCurrent: TButton;
+    lblAgent: TOROffsetLabel;
+    lstAllergy: TORListBox;
+    btnAgent: TSpeedButton;
+    lblOriginator: TOROffsetLabel;
+    cboOriginator: TORComboBox;
+    lblOriginateDate: TOROffsetLabel;
+    calOriginated: TORDateBox;
+    ckChartMarked: TCheckBox;
+    ckIDBand: TCheckBox;
+    lblVerifier: TOROffsetLabel;
+    ckVerified: TCheckBox;
+    cboVerifier: TORComboBox;
+    calVerifyDate: TORDateBox;
+    lblVerifyDate: TOROffsetLabel;
+    dlgReactionDateTime: TORDateTimeDlg;
+    Bevel1: TBevel;
+    lblSymptoms: TOROffsetLabel;
+    cboSymptoms: TORComboBox;
+    lblSelectedSymptoms: TOROffsetLabel;
+    lstSelectedSymptoms: TORListBox;
+    btnDateTime: TButton;
+    btnRemove: TButton;
+    grpObsHist: TRadioGroup;
+    lblSeverity: TOROffsetLabel;
+    cboSeverity: TORComboBox;
+    lblObservedDate: TOROffsetLabel;
+    calObservedDate: TORDateBox;
+    cmdPrevObs: TButton;
+    lblComments: TOROffsetLabel;
+    memComments: TRichEdit;
+    cmdPrevCmts: TButton;
+    tabEnteredInError: TTabSheet;
+    ckEnteredInError: TCheckBox;
+    memErrCmts: TRichEdit;
+    lblErrCmts: TLabel;
+    lblEnteredInError: TLabel;
+    lblAllergyType: TOROffsetLabel;
+    cboAllergyType: TORComboBox;
+    cboNatureOfReaction: TORComboBox;
+    lblNatureOfReaction: TOROffsetLabel;
+    btnSevHelp: TORAlignButton;
+    procedure btnAgentClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject); 
+    procedure cboOriginatorNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboSymptomsNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure lstAllergySelect(Sender: TObject);
+    procedure grpObsHistClick(Sender: TObject);
+    procedure ControlChange(Sender: TObject);
+    procedure memCommentsExit(Sender: TObject);
+    procedure cboSymptomsClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure ckNoKnownAllergiesClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure btnCurrentClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure lstAllergyClick(Sender: TObject);
+    procedure btnDateTimeClick(Sender: TObject);
+    procedure cboSymptomsMouseClick(Sender: TObject);
+    procedure cboSymptomsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdPrevCmtsClick(Sender: TObject);
+    procedure cmdPrevObsClick(Sender: TObject);
+    procedure lstSelectedSymptomsChange(Sender: TObject);
+    procedure cboVerifierNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure btnSevHelpClick(Sender: TObject);
+  private
+    FLastAllergyID: string;
+    FEditAllergyIEN: integer;
+    FNKAOrder: boolean;
+    FChanged: Boolean;
+    FOldHintPause : integer;
+  protected
+    procedure EnableDisableControls(EnabledStatus: boolean);
+    procedure InitDialog; override;
+    procedure Validate(var AnErrMsg: string);
+    function  ValidSave: Boolean;
+    procedure SetupDialog;
+    procedure SetupVerifyFields(ARec: TAllergyRec);
+    procedure SetUpEnteredInErrorFields(ARec: TAllergyRec);
+  end;
+
+function EnterEditAllergy(AllergyIEN: integer; AddNew, MarkAsEnteredInError: boolean): boolean;
+function MarkEnteredInError(AllergyIEN: integer): boolean;
+function EnterNKAForPatient: boolean;
+
+var
+  AllergyList: TStringList;
+  OldRec, NewRec: TAllergyRec;
+  Defaults: TStringList;
+  Changing: Boolean;
+  uAddingNew: boolean = FALSE;
+  uEditing: Boolean = FALSE;
+  uEnteredInError: Boolean = FALSE;
+  uUserCanVerify: boolean = FALSE;
+  uDeletedSymptoms: TStringList;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rODBase, uCore, rCore, rCover, fAllgyFind, fPtCWAD, fRptBox;
+
+const
+  TX_NO_ALLERGY       = 'A causative agent must be specified.'    ;
+  TX_NO_ALLGYTYPE     = 'An allergy type must be entered for this causative agent.'  ;
+  TX_NO_NATURE_OF_REACTION = 'A Nature of Reaction must be entered for this causative agent.'  ;
+  TX_NO_SYMPTOMS      = 'Symptoms must be selected for this observed allergy and reaction.';
+  TX_NO_OBSERVER      = 'An observer must be selected for this allergy and reaction .';
+  TX_NO_ORIGINATOR    = 'An originator must be selected for this allergy and reaction .';
+  TX_NO_FUTURE_DATES  = 'Reaction dates in the future are not allowed.';
+  TX_BAD_OBS_DATE     = 'Observation date must be in the format m/d/y or m/y or y, or T-d.';
+  TX_MISSING_OBS_DATE = 'Observation date is required for observed reactions.';
+  TX_MISSING_OBS_HIST = 'You must select either OBSERVED or HISTORICAL for this reaction.';
+  TX_BAD_VER_DATE     = 'Verify date must be in the format m/d/y or m/y or y, or T-d.';
+  TX_BAD_ORIG_DATE    = 'Origination date must be in the format m/d/y or m/y or y, or T-d.';
+  TX_NO_FUTURE_ORIG_DATES  = 'An origination date in the future is not allowed.';
+  TX_MISSING_ORIG_DATE  = 'Origination date is required.';
+  TX_CAP_FUTURE       = 'Invalid date';
+  TX_NO_SAVE     = 'This item cannot be saved for the following reason(s):' + CRLF + CRLF;
+  TX_NO_SAVE_CAP = 'Unable to Save Allergy/Adverse Reaction';
+  TX_SAVE_ERR    = 'Unexpected error - it was not possible to save this request.';
+  TX_CAP_EDITING = 'Edit Allergy/Adverse Reaction';
+  TX_STS_EDITING = 'Loading Allergy/Adverse Reaction for Edit';
+  TX_CAP_ERROR   = 'Mark Allergy/Adverse Reaction Entered In Error';
+  TX_STS_ERROR   = 'Loading Allergy/Adverse Reaction';
+  TX_ORIG_CMTS_REQD = 'Comments are required for ''Observed'' reactions.';
+  TX_EDIT_ERROR = 'Unable to load record for editing';
+  TC_EDIT_ERROR = 'Error Encountered';
+  TX_NKA_SUCCESS = 'Patient''s record has been updated.';
+  TC_NKA_SUCCESS = 'No Known Allergies';
+  TX_OBHX_HINT =   'OBSERVED: directly observed or occurring while the patient was' + CRLF +
+                   'on the suspected causative agent.  Use for new information about' + CRLF +
+                   'an allergy/adverse reaction and for recent reactions caused by' + CRLF +
+                   'VA-prescribed medications.' + CRLF + CRLF +
+                   'HISTORICAL: reported by the patient as occurring in the past;' + CRLF +
+                   'no longer requires intervention' ;
+
+ NEW_ALLERGY = True;
+ ENTERED_IN_ERROR = True;
+
+function EnterNKAForPatient: boolean;
+var
+  x: string;
+begin
+  x := RPCEnterNKAForPatient;
+  if not (Piece(x, U, 1) = '0') then
+    InfoBox(Piece(x, U, 2), TC_EDIT_ERROR, MB_ICONERROR or MB_OK)
+  else
+    InfoBox(TX_NKA_SUCCESS, TC_NKA_SUCCESS, MB_ICONINFORMATION or MB_OK);
+  Result := (Piece(x, U, 1) = '0');
+end;
+
+function MarkEnteredInError(AllergyIEN: integer): boolean;
+begin
+  Result := EnterEditAllergy(AllergyIEN, not NEW_ALLERGY, ENTERED_IN_ERROR);
+end;
+
+function EnterEditAllergy(AllergyIEN: integer; AddNew, MarkAsEnteredInError: boolean): boolean;
+var
+  frmARTAllergy: TfrmARTAllergy;
+  Allergy: string;
+begin
+  uAddingNew := AddNew;
+  uEditing := (not AddNew) and (not MarkAsEnteredInError);
+  uEnteredInError := MarkAsEnteredInError;
+  Result := False;
+  frmARTAllergy := TfrmARTAllergy.Create(Application);
+  if frmARTAllergy.AbortAction then exit;
+  with frmARTAllergy do
+    try
+      ResizeFormToFont(TForm(frmARTAllergy));
+      FChanged     := False;
+      Changing := True;
+      if uEditing then
+        begin
+          frmARTAllergy.Caption := TX_CAP_EDITING;
+          FEditAllergyIEN := AllergyIEN;
+          if FEditAllergyIEN = 0 then exit;
+          StatusText(TX_STS_EDITING);
+          OldRec := LoadAllergyForEdit(FEditAllergyIEN);
+          NewRec.IEN := OldRec.IEN;
+          SetupDialog;
+        end
+      else if uEnteredInError then
+        begin
+          frmARTAllergy.Caption := TX_CAP_ERROR;
+          FEditAllergyIEN := AllergyIEN;
+          if FEditAllergyIEN = 0 then exit;
+          StatusText(TX_STS_ERROR);
+          OldRec := LoadAllergyForEdit(FEditAllergyIEN);
+          NewRec.IEN := OldRec.IEN;
+          SetupDialog;
+        end
+      else if uAddingNew then
+        begin
+          SetupVerifyFields(NewRec);
+          SetupEnteredInErrorFields(NewRec);
+          AllergyLookup(Allergy, ckNoKnownAllergies.Enabled);
+          if Piece(Allergy, U, 1) = '-1' then
+            begin
+              ckNoKnownAllergies.Checked := True;
+              Result := EnterNKAForPatient;
+              Exit;
+            end
+          else if Allergy <> '' then
+            begin
+              lstAllergy.Clear;
+              lstAllergy.Items.Add(Allergy);
+              cboAllergyType.SelectByID(Piece(Allergy, U, 4));
+            end
+          else
+            begin
+              Result := False;
+              Close;
+              exit;
+            end;
+          calOriginated.FMDateTime := FMNow;
+          Changing := False;
+          ControlChange(lstAllergy);
+        end;
+      StatusText('');
+      if OldRec.IEN = -1 then
+      begin
+        Result := False;
+        Close;
+        Exit;
+      end;
+      ShowModal;
+      Result := FChanged;
+    finally
+      uAddingNew := FALSE;
+      uEditing := FALSE;
+      uEnteredInError := FALSE;
+      uUserCanVerify := FALSE;
+      frmARTAllergy.Release;
+    end;
+end;
+
+procedure TfrmARTAllergy.FormCreate(Sender: TObject);
+begin
+  inherited;       // what to do here?  How to set up dialog defaults without order dialog to supply prompts?
+  Changing := True;
+  AbortAction := False;
+  AllergyList := TStringList.Create;
+  uDeletedSymptoms := TStringList.Create;
+  FillChar(OldRec, SizeOf(OldRec), 0);
+  FillChar(NewRec, SizeOf(NewRec), 0);
+  with NewRec do
+    begin
+      SignsSymptoms  := TStringList.Create ;
+      IDBandMarked   := TStringList.Create;
+      ChartMarked    := TStringList.Create;
+      Observations   := TStringList.Create;
+      Comments       := TStringList.Create ;
+      NewComments    := TStringList.Create ;
+      ErrorComments  := TStringList.Create ;
+    end;
+  Defaults    := TStringList.Create;
+  StatusText('Loading Default Values');
+  uUserCanVerify := FALSE;  //HasSecurityKey('GMRA-ALLERGY VERIFY');
+  FastAssign(ODForAllergies, Defaults);
+  StatusText('Initializing Long List');
+  ExtractItems(cboSymptoms.Items, Defaults, 'Top Ten');
+  cboSymptoms.InsertSeparator;
+  cboSymptoms.InitLongList('');
+  cboOriginator.InitLongList(User.Name) ;
+  cboOriginator.SelectByIEN(User.DUZ);
+  pgAllergy.ActivePage := tabGeneral;
+  InitDialog;
+  Changing := False;
+  if AbortAction then
+  begin
+    Close;
+    Exit;
+  end;
+end;
+
+procedure TfrmARTAllergy.InitDialog;
+var
+  Allergy: string;
+  //ErrMsg: string;
+begin
+  inherited;
+  // since this only allows entry of new allergies, key check is irrelevant, eff. v26.12
+(*  if not IsARTClinicalUser(ErrMsg) then
+  begin
+    InfoBox(ErrMsg, 'No Authorization', MB_ICONWARNING or MB_OK);
+    AbortAction := True;
+    Close;
+    Exit;
+  end;*)
+  Changing := True;
+  FOldHintPause := Application.HintHidePause;
+  Application.HintHidePause := 15000;
+  ExtractItems(cboAllergyType.Items, Defaults, 'Allergy Types');
+  ExtractItems(cboSeverity.Items, Defaults, 'Severity');
+  ExtractItems(cboNatureOfReaction.Items, Defaults, 'Nature of Reaction');
+  lstAllergy.Items.Add('-1^Click button to search ---->');
+  grpObsHist.ItemIndex := -1;         // CQ 11775 - v27.10 - RV (was '1')
+  calObservedDate.Text := '';
+  cboSeverity.ItemIndex := -1;
+  cboSeverity.Visible := False;
+  lblSeverity.Visible := False;
+  btnSevHelp.Visible := False;
+  calObservedDate.Visible := False;
+  lblObservedDate.Visible := False;
+  cboSymptoms.ItemIndex := -1;
+  memComments.Clear;
+  cmdPrevCmts.Visible := (uEditing and (OldRec.Comments <> nil) and (OldRec.Comments.Text <> ''));
+  cmdPrevObs.Visible := (uEditing and (OldRec.Observations <> nil) and (OldRec.Observations.Text <> ''));
+  btnAgent.Enabled := (not uEditing) and (not uEnteredInError);
+  ckEnteredInError.Enabled := uEditing or uEnteredInError;
+  grpObsHist.Enabled := (not uEditing) and (not uEnteredInError);
+  grpObsHist.Hint := TX_OBHX_HINT;
+  grpObsHist.ShowHint := grpObsHist.Enabled;
+  ckIDBand.Enabled := Patient.Inpatient and MarkIDBand;
+  ckChartMarked.Checked := ckChartMarked.Checked or uAddingNew;
+  ListAllergies(AllergyList);
+  with AllergyList do
+    if Count > 0 then
+      begin
+        if (Piece(Strings[0], U, 1) = '') and (Piece(Strings[0], U, 2) <> 'No Known Allergies') then
+          ckNoKnownAllergies.Enabled := True
+        else
+          begin
+            ckNoKnownAllergies.Enabled := False;
+            btnCurrent.Enabled := True;
+          end;
+      end
+    else
+      begin
+        btnCurrent.Enabled := False;
+        ckNoKnownAllergies.Enabled := True;
+      end;
+  if (not uEditing) and (not uEnteredInError) and (not uAddingNew) then
+    begin
+      SetupVerifyFields(NewRec);
+      SetupEnteredInErrorFields(NewRec);
+      AllergyLookup(Allergy, ckNoKnownAllergies.Enabled);
+      if Piece(Allergy, U, 1) = '-1' then
+        begin
+          ckNoKnownAllergies.Checked := True;
+          //Exit;
+        end
+      else if Allergy <> '' then
+        begin
+          lstAllergy.Clear;
+          lstAllergy.Items.Add(Allergy);
+          cboAllergyType.SelectByID(Piece(Allergy, U, 4));
+        end
+      else
+        begin
+          AbortAction := True;
+          Close;
+          exit;
+        end;
+      calOriginated.FMDateTime := FMNow;
+    end;
+  StatusText('');
+  Changing := False;
+  ControlChange(lstAllergy);
+end;
+
+procedure TfrmARTAllergy.SetupDialog;
+begin
+  if AbortAction then exit;
+  if OldRec.IEN = -1 then
+  begin
+    InfoBox(TX_EDIT_ERROR, TC_EDIT_ERROR, MB_ICONERROR or MB_OK);
+    Exit;
+  end;
+  if uEditing then with OldRec do
+    begin
+      Changing := True;
+      ckNoKnownAllergies.Checked := NoKnownAllergies;
+      btnAgent.Enabled := FALSE;  //not Verified;
+      lstAllergy.Items.Clear;
+      lstAllergy.Items.Insert(0, U + CausativeAgent);
+      lstAllergy.ItemIndex := 0;
+      lstAllergySelect(Self);
+      cboAllergyType.SelectByID(Piece(AllergyType, U, 1));
+      cboNatureOfReaction.SelectByID(Piece(NatureOfReaction, U, 1));
+      FastAssign(SignsSymptoms, lstSelectedSymptoms.Items);
+      calOriginated.FMDateTime := Originated;
+      cboOriginator.InitLongList(OriginatorName);
+      cboOriginator.SelectByIEN(Originator);
+      { TODO -oRich V. -cART/Allergy : Change to calendar entry fields and prior entries button? }
+      ckIDBand.Checked := IDBandMarked.Count > 0;
+      ckChartMarked.Checked := ChartMarked.Count > 0;
+      if Piece(Observed_Historical, U, 1) <> '' then
+        case UpperCase(Piece(Observed_Historical, U, 1))[1] of
+          'O': grpObsHist.ItemIndex := 0;
+          'H': grpObsHist.ItemIndex := 1;
+        end
+      else grpObsHist.ItemIndex := -1;
+      calObservedDate.FMDateTime := ReactionDate;
+      cmdPrevObs.Enabled := (OldRec.Observations.Text <> '');
+      cboSeverity.SelectByID(Piece(Severity, U, 1));
+      cmdPrevCmts.Enabled := Comments.Text <> '';
+      SetupVerifyFields(OldRec);
+      SetUpEnteredInErrorFields(OldRec);
+      Changing := False;
+      ControlChange(Self);
+    end
+  else if uEnteredInError then with OldRec do
+    begin
+      Changing := True;
+      SetupVerifyFields(OldRec);
+      SetUpEnteredInErrorFields(OldRec);
+      Changing := False;
+    end;
+end;
+
+procedure TfrmARTAllergy.Validate(var AnErrMsg: string);
+var
+  tmpDate: TFMDateTime;
+
+  procedure SetError(const x: string);
+  begin
+    if Length(AnErrMsg) > 0 then AnErrMsg := AnErrMsg + CRLF;
+    AnErrMsg := AnErrMsg + x;
+  end;
+
+begin
+  AnErrMsg := '';
+  if tabEnteredInError.TabVisible then exit;
+  if not ckNoKnownAllergies.Checked then
+    begin
+      if lstAllergy.Items.Count = 0 then SetError(TX_NO_ALLERGY)
+      else if (Length(lstAllergy.DisplayText[0]) = 0) or
+         (Piece(lstAllergy.Items[0], U, 1) = '-1') then SetError(TX_NO_ALLERGY);
+      if (grpObsHist.ItemIndex = -1) then
+        SetError(TX_MISSING_OBS_HIST);
+      if (grpObsHist.ItemIndex = 0) then
+        begin
+          if (lstSelectedSymptoms.Items.Count = 0)   then SetError(TX_NO_SYMPTOMS);
+          if (grpObsHist.Enabled) and RequireOriginatorComments and (not ContainsVisibleChar(memComments.Text))  then
+            SetError(TX_ORIG_CMTS_REQD);
+          if (grpObsHist.Enabled) and (calObservedDate.Text = '')  then
+            SetError(TX_MISSING_OBS_DATE);
+        end;
+      if cboAllergyType.ItemID = ''           then SetError(TX_NO_ALLGYTYPE);
+      with cboNatureOfReaction do
+        if (ItemID = '') or (ItemIndex < 0) or (Text = '')   then
+          SetError(TX_NO_NATURE_OF_REACTION)
+        else
+          NewRec.NatureOfReaction := ItemID + U + Text;
+    end;
+  if (cboOriginator.ItemIEN = 0) or (cboOriginator.Text = '')  then SetError(TX_NO_ORIGINATOR);
+  with NewRec do
+  begin
+    if calObservedDate.Text <> '' then
+      begin
+        tmpDate := ValidDateTimeStr(calObservedDate.Text, 'TS');
+        if tmpDate > 0 then
+          begin
+            if tmpDate > FMNow then  SetError(TX_NO_FUTURE_DATES)
+            else ReactionDate := tmpDate;
+          end
+        else
+          begin
+            SetError(TX_BAD_OBS_DATE);
+            pgAllergy.ActivePage := tabGeneral;
+          end;
+      end;
+    if tabVerify.TabVisible then
+      if calVerifyDate.Text <> '' then
+        begin
+          tmpDate := ValidDateTimeStr(calVerifyDate.Text, 'TS');
+          if tmpDate > 0 then VerifiedDateTime := tmpDate
+          else
+            begin
+              SetError(TX_BAD_VER_DATE);
+              pgAllergy.ActivePage := tabVerify;
+            end;
+        end;
+    if calOriginated.Text <> '' then
+      begin
+        tmpDate := ValidDateTimeStr(calOriginated.Text, 'TS');
+        if tmpDate > 0 then
+          begin
+            if tmpDate > FMNow then  SetError(TX_NO_FUTURE_ORIG_DATES)
+            else Originated := tmpDate;
+          end
+        else
+          begin
+            SetError(TX_BAD_ORIG_DATE);
+            pgAllergy.ActivePage := tabGeneral;
+          end;
+      end
+    else
+      begin
+        SetError(TX_MISSING_ORIG_DATE);
+        pgAllergy.ActivePage := tabGeneral;
+      end;
+  end;
+end;
+
+procedure TfrmARTAllergy.cboOriginatorNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboOriginator.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmARTAllergy.cboSymptomsNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboSymptoms.ForDataUse(SubSetOfSymptoms(StartFrom, Direction));
+end;
+
+procedure TfrmARTAllergy.grpObsHistClick(Sender: TObject);
+begin
+  inherited;
+  Changing := True;
+  cboSeverity.ItemIndex := -1;
+  case grpObsHist.ItemIndex of
+    0:  begin
+          cboSeverity.Visible := True;
+          lblSeverity.Visible := True;
+          btnSevHelp.Visible := True;
+          calObservedDate.Visible := True;
+          lblObservedDate.Visible := True;
+          calObservedDate.FMDateTime := FMToday;
+        end;
+    1:  begin
+          cboSeverity.Visible := False;
+          lblSeverity.Visible := False;
+          btnSevHelp.Visible := False;
+          calObservedDate.Visible := False;
+          lblObservedDate.Visible := False;
+        end;
+  end;
+  Changing := False;
+  ControlChange(Self);
+end;
+
+procedure TfrmARTAllergy.ControlChange(Sender: TObject);
+var
+  MyFMNow: TFMDateTime;
+  i: integer;
+  SourceGlobalRoot, x: string;
+begin
+  inherited;
+  if Changing then Exit;
+  MyFMNow := FMNow;
+  with NewRec do
+    begin
+      if (not uEditing) and (not uEnteredInError) then IEN := 0;
+      if ckNoKnownAllergies.Checked then
+        begin
+          with cboOriginator do if ItemIEN > 0 then
+            begin
+              Originator := ItemIEN;
+              OriginatorName := Text;
+            end;
+          NoKnownAllergies := True;
+        end
+      else if tabEnteredInError.TabVisible then
+        begin
+          EnteredInError := ckEnteredInError.Checked;
+          if EnteredInError then
+            begin
+              DateEnteredInError := MyFMNow;                               {***}
+              UserEnteringInError := User.DUZ;
+              with memErrCmts do if GetTextLen > 0 then QuickCopy(memErrCmts, ErrorComments);
+            end;
+        end
+      else
+        with lstAllergy do if (Items.Count > 0) then
+          if (Piece(Items[0], U, 1) <>  '-1') and (Length(DisplayText[0]) > 0) then
+            begin
+              SourceGlobalRoot := Piece(Piece(Items[0], U, 3), ',', 1) + ',';
+              if Pos('PSDRUG', SourceGlobalRoot) > 0 then
+                SourceGlobalRoot := Piece(SourceGlobalRoot, '"', 1);
+              x := Piece(Items[0], U, 2);
+              if ((Pos('GMRD', SourceGlobalRoot) > 0) or (Pos('PSDRUG', SourceGlobalRoot) > 0))
+                  and (Pos('<', x) > 0) then
+                    x := Copy(x, 1, Length(Piece(x, '<', 1)) - 1);
+                    //x := Trim(Piece(x, '<', 1));
+              CausativeAgent := x + U + Piece(Items[0], U, 1) + ';' + SourceGlobalRoot;
+              with cboAllergyType do
+                if ItemID <> '' then
+                  AllergyType := ItemID + U + Text;
+              with cboNatureOfReaction do
+                if ItemID <> '' then
+                  NatureOfReaction := ItemID + U + Text;
+              with cboOriginator do
+                if ItemIEN > 0 then
+                  begin
+                    Originator := ItemIEN;
+                    OriginatorName := Text;
+                  end;
+              SignsSymptoms.Clear;
+              for i := 0 to uDeletedSymptoms.Count - 1 do
+                SignsSymptoms.Add(uDeletedSymptoms[i]);
+              with lstSelectedSymptoms do
+                for i := 0 to Items.Count - 1 do
+                  SignsSymptoms.Add(Items[i]);
+              if tabVerify.TabVisible then
+                begin
+                  Verified := ckVerified.Checked;
+                  with cboVerifier do
+                    if ItemIEN > 0 then
+                      begin
+                        Verifier := ItemIEN;
+                        VerifierName := Text;
+                      end;
+                end;
+              NewRec.ChartMarked.Clear;
+              if ckChartMarked.Checked then
+                ChartMarked.Add(FloatToStr(MyFMNow));
+              NewRec.IDBandMarked.Clear;
+              if ckIDBand.Checked then
+                IDBandMarked.Add(FloatToStr(MyFMNow));
+              with grpObsHist do
+                if ItemIndex   > -1 then
+                  begin
+                    if ItemIndex = 0 then
+                      Observed_Historical := 'o^OBSERVED'
+                    else
+                      Observed_Historical := 'h^HISTORICAL';
+                  end;
+(*              tmpDate := ValidDateTimeStr(calObservedDate.Text, 'TS');       {***}
+              if tmpDate > 0 then ReactionDate := tmpDate;*)
+              with cboSeverity do
+                if (ItemID <> '') and (Text <> '') then
+                  Severity := ItemID
+                else
+                  Severity := '';
+              with memComments do
+                if GetTextLen > 0 then
+                  QuickCopy(memComments, NewComments);
+            end;
+    end;
+end;
+
+procedure TfrmARTAllergy.lstAllergySelect(Sender: TObject);
+begin
+  inherited;
+  with lstAllergy do
+    begin
+      if Items.Count = 0 then
+        Exit
+      else if Piece(Items[0], U, 1) = '-1' then
+        Exit;
+      if Piece(Items[0], U, 1) <> FLastAllergyID then
+        FLastAllergyID := Piece(Items[0], U, 1)
+      else
+        Exit;
+      Changing := True;
+      //if Sender <> Self then FillChar(NewRec, SizeOf(NewRec), 0);       // Sender=Self when called from SetupDialog
+      Changing := False;
+    end;
+  ControlChange(Self) ;
+end;
+
+procedure TfrmARTAllergy.memCommentsExit(Sender: TObject);
+var
+  AStringList: TStringList;
+begin
+  inherited;
+  AStringList := TStringList.Create;
+  try
+    QuickCopy(memComments, AStringList);
+    LimitStringLength(AStringList, 74);
+    QuickCopy(AstringList, memComments);
+    ControlChange(Self);
+  finally
+    AStringList.Free;
+  end;
+end;
+
+procedure TfrmARTAllergy.btnAgentClick(Sender: TObject);
+var
+  Allergy: string;
+begin
+  inherited;
+  AllergyLookup(Allergy, ckNoKnownAllergies.Enabled);
+  if Piece(Allergy, U, 1) = '-1' then
+    ckNoKnownAllergies.Checked := True
+  else if Allergy <> '' then
+    begin
+      lstAllergy.Clear;
+      lstAllergy.Items.Add(Allergy);
+      cboAllergyType.SelectByID(Piece(Allergy, U, 4));
+    end
+  else
+    begin
+      Close;
+      exit;
+    end;
+  ControlChange(lstAllergy);
+end;
+
+procedure TfrmARTAllergy.cboSymptomsClick(Sender: TObject);
+begin
+  inherited;
+  if cboSymptoms.ItemIndex < 0 then exit;
+  Changing := True;
+  if lstSelectedSymptoms.SelectByID(cboSymptoms.ItemID) > -1 then exit;
+  with lstSelectedSymptoms do
+    begin
+      Items.Add(cboSymptoms.Items[cboSymptoms.ItemIndex]);
+      SelectByID(cboSymptoms.ItemID);
+    end;
+  Changing := False;
+  ControlChange(Self)
+end;
+
+procedure TfrmARTAllergy.FormDestroy(Sender: TObject);
+begin
+  OldRec.SignsSymptoms.Free;
+  OldRec.IDBandMarked.Free;
+  OldRec.ChartMarked.Free;
+  OldRec.Observations.Free;
+  OldRec.Comments.Free;
+  OldRec.NewComments.Free;
+  OldRec.ErrorComments.Free;
+  NewRec.SignsSymptoms.Free;
+  NewRec.IDBandMarked.Free;
+  NewRec.ChartMarked.Free;
+  NewRec.Observations.Free;
+  NewRec.Comments.Free;
+  NewRec.NewComments.Free;
+  NewRec.ErrorComments.Free;
+  Defaults.Free;
+  uDeletedSymptoms.Free;
+  AllergyList.Free;
+  inherited;
+end;
+
+procedure TfrmARTAllergy.ckNoKnownAllergiesClick(Sender: TObject);
+begin
+  inherited;
+  Changing := True;
+  FNKAOrder := ckNoKnownAllergies.Checked;
+  EnableDisableControls(not FNKAOrder);
+  Changing := False;
+  ControlChange(Self);
+end;
+
+procedure TfrmARTAllergy.EnableDisableControls(EnabledStatus: boolean);
+begin
+   //InitDialog;
+   with pgAllergy do
+     begin
+       tabVerify.TabVisible         := FALSE;    //EnabledStatus;    per Dave, leave out for now.
+       tabEnteredInError.TabVisible := uEnteredInError;
+       tabGeneral.TabVisible        := not uEnteredInError;
+     end;
+   btnAgent.Enabled                := EnabledStatus;
+   cboAllergyType.Enabled          := EnabledStatus;
+   cboNatureOfReaction.Enabled     := EnabledStatus;
+   lblAllergyType.Enabled          := EnabledStatus;
+   lblAgent.Enabled                := EnabledStatus;
+   lblSymptoms.Enabled             := EnabledStatus;
+   lblSelectedSymptoms.Enabled     := EnabledStatus;
+   grpObsHist.Enabled              := EnabledStatus;
+   memComments.Enabled             := EnabledStatus;
+   lblComments.Enabled             := EnabledStatus;
+   lstSelectedSymptoms.Enabled     := EnabledStatus;
+   lblObservedDate.Enabled         := EnabledStatus;
+   calObservedDate.Enabled         := EnabledStatus;
+   lblSeverity.Enabled             := EnabledStatus;
+   cboSeverity.Enabled             := EnabledStatus;
+   btnSevHelp.Enabled              := EnabledStatus;
+   lstAllergy.Enabled              := EnabledStatus;
+   cboSymptoms.Enabled             := EnabledStatus;
+   btnDateTime.Enabled             := EnabledStatus;
+end;
+
+procedure TfrmARTAllergy.cmdOKClick(Sender: TObject);
+const
+  TX_ENTERED_IN_ERROR = 'Mark this entry as ''Entered in Error''?';
+  TC_ENTERED_IN_ERROR = 'Are you sure?';
+var
+  Saved: string;
+begin
+  if ValidSave then
+    begin
+      if uEnteredInError then
+        if not (InfoBox(TX_ENTERED_IN_ERROR, TC_ENTERED_IN_ERROR, MB_YESNO or MB_ICONQUESTION) = ID_YES) then
+          begin
+            FChanged := False;
+            Close;
+            Exit;
+          end;
+      Saved := SaveAllergy(NewRec);
+      FChanged := (Piece(Saved, U, 1) = '0');
+      if not FChanged then
+        InfoBox(TX_NO_SAVE + Piece(Saved, U, 2), TX_NO_SAVE_CAP, MB_OK)
+      else
+        begin
+          SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_SIGN, 0);
+          Application.ProcessMessages;
+        end;
+      Close;
+    end;
+end;
+
+function TfrmARTAllergy.ValidSave: Boolean;
+var
+  ErrMsg: string;
+begin
+  Result := True;
+  Validate(ErrMsg);
+  if Length(ErrMsg) > 0 then
+  begin
+    InfoBox(TX_NO_SAVE + ErrMsg, TX_NO_SAVE_CAP, MB_OK);
+    Result := False;
+  end;
+end;
+
+procedure TfrmARTAllergy.btnCurrentClick(Sender: TObject);
+const
+  VIEW_CURRENT = 'Current Allergies/Adverse Reactions for ';
+begin
+  inherited;
+  ReportBox(DetailPosting('A'), VIEW_CURRENT + Patient.Name, True)
+end;
+
+procedure TfrmARTAllergy.btnRemoveClick(Sender: TObject);
+var
+  i: integer;
+  x: string;
+begin
+  inherited;
+  Changing := True;
+  with lstSelectedSymptoms do
+    begin
+      if (Items.Count = 0) or (ItemIndex = -1) then exit;
+      i := ItemIndex;
+      if uEditing then
+      begin
+        if OldRec.SignsSymptoms.IndexOf(Items[ItemIndex]) > -1 then
+          begin
+            x := Items[i];
+            SetPiece(x, U, 5, '@');
+            uDeletedSymptoms.Add(x);
+          end;
+      end;
+      Items.Delete(ItemIndex);
+      ItemIndex := i - 1;
+      if (Items.Count > 0) and (ItemIndex = -1) then ItemIndex := 0;
+    end;
+  Changing := False;
+  ControlChange(btnRemove);
+end;
+
+procedure TfrmARTAllergy.lstAllergyClick(Sender: TObject);
+begin
+  inherited;
+  lstAllergy.ItemIndex := -1;
+end;
+
+procedure TfrmARTAllergy.btnDateTimeClick(Sender: TObject);
+var
+  AFMDateTime: TFMDateTime;
+  x: string;
+begin
+  inherited;
+  Changing := True;
+  with lstSelectedSymptoms do
+    begin
+      if (Items.Count = 0) or (ItemIndex = -1) then exit;
+      AFMDateTime := MakeFMDateTime(Piece(Items[ItemIndex], U, 3));
+      if AFMDateTime > 0 then
+        dlgReactionDateTime.FMDateTime := AFMDateTime
+      else
+        dlgReactionDateTime.FMDateTime := FMNow;
+      if not dlgReactionDateTime.Execute then exit;
+      if dlgReactionDateTime.FMDateTime > FMNow then
+        InfoBox(TX_NO_FUTURE_DATES, TX_CAP_FUTURE, MB_OK)
+      else
+        begin
+          x := Items[ItemIndex];
+          x := ORFn.Pieces(x, U, 1, 2) + U + FloatToStr(dlgReactionDateTime.FMDateTime) + U +
+                            FormatFMDateTime('mmm dd,yyyy@hh:nn', dlgReactionDateTime.FMDateTime);
+          Items[ItemIndex] := x;
+        end;
+    end;
+  Changing := False;
+  ControlChange(btnDateTime);
+end;
+
+procedure TfrmARTAllergy.cboSymptomsMouseClick(Sender: TObject);
+const
+  TC_SS_MAX = 'Too many signs/symptoms';
+  TX_SS_MAX = 'A maximum of 38 signs/symptoms may be selected.';
+var
+  x: string;
+begin
+  inherited;
+  with cboSymptoms do if (ItemIndex < 0) or (Text = '') or (ItemID = '') then exit;
+  if (lstSelectedSymptoms.SelectByID(cboSymptoms.ItemID) > -1) or
+     (lstSelectedSymptoms.Items.IndexOf(cboSymptoms.Text) > -1) then exit;
+  if (lstSelectedSymptoms.Count + 1) > 38 then
+  begin
+    InfoBox(TX_SS_MAX, TC_SS_MAX, MB_ICONERROR or MB_OK);
+    exit;
+  end;
+  Changing := True;
+  if cboSymptoms.ItemIndex > -1 then
+    begin
+      with cboSymptoms do
+        if Piece(Items[ItemIndex], U, 3) <> '' then
+          x := ItemID + U + Piece(Items[ItemIndex], U, 3)
+        else
+          x := ItemID + U + Piece(Items[ItemIndex], U, 2);
+      with lstSelectedSymptoms do
+        begin
+          Items.Add(x);
+          SelectByID(cboSymptoms.ItemID);
+        end;
+    end ;
+(*  else                             Free-text entries no longer allowed.
+    with lstSelectedSymptoms do
+      begin
+        Items.Add('FT' + U + cboSymptoms.Text);
+        ItemIndex := Items.Count - 1;
+      end;*)
+  Changing := False;
+  ControlChange(Self)
+end;
+
+procedure TfrmARTAllergy.cboSymptomsKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then cboSymptomsMouseClick(Self);
+end;
+
+procedure TfrmARTAllergy.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := False;
+  Close;
+end;
+
+procedure TfrmARTAllergy.cmdPrevCmtsClick(Sender: TObject);
+const
+  CMT_CAPTION = 'View previous comments';
+begin
+  inherited;
+  ReportBox(OldRec.Comments, CMT_CAPTION, False);
+end;
+
+procedure TfrmARTAllergy.cmdPrevObsClick(Sender: TObject);
+const
+  OBS_CAPTION = 'View previous observations';
+begin
+  inherited;
+  ReportBox(OldRec.Observations, OBS_CAPTION, False);
+end;
+
+procedure TfrmARTAllergy.lstSelectedSymptomsChange(Sender: TObject);
+begin
+  inherited;
+  with lstSelectedSymptoms do
+    begin
+      btnDateTime.Enabled := (ItemIndex <> -1);
+      btnRemove.Enabled := btnDateTime.Enabled;
+    end;
+  //ControlChange(Self);
+end;
+
+procedure TfrmARTAllergy.cboVerifierNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboVerifier.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmARTAllergy.SetupVerifyFields(ARec: TAllergyRec);
+var
+  CanBeVerified: boolean;
+begin
+  tabVerify.TabVisible := False;     // FOR NOW
+  if not tabVerify.TabVisible then exit;
+  if not uUserCanVerify then
+    begin
+      tabVerify.TabVisible := False;
+      exit;
+    end;
+  Changing := True;
+  with ARec do
+    begin
+      ckVerified.Checked := Verified;
+      CanBeVerified := (not Verified) and uUserCanVerify;
+      if CanBeVerified then
+        begin
+          cboVerifier.InitLongList(User.Name);
+          cboVerifier.SelectByIEN(User.DUZ);
+          cboVerifier.Font.Color := clWindowText;
+          calVerifyDate.FMDateTime := FMNow;
+        end
+      else
+        begin
+          cboVerifier.InitLongList(VerifierName);
+          cboVerifier.SelectByIEN(Verifier);
+          cboVerifier.Font.Color := clGrayText;
+          calVerifyDate.FMDateTime := VerifiedDateTime;
+        end;
+      cboVerifier.Enabled   := CanBeVerified;
+      calVerifyDate.Enabled := CanBeVerified;
+      ckVerified.Enabled    := CanBeVerified;
+      lblVerifier.Enabled   := CanBeVerified;
+      lblVerifyDate.Enabled := CanBeVerified;
+    end;
+  Changing := False;
+  ControlChange(ckVerified);
+end;
+
+procedure TfrmARTAllergy.SetUpEnteredInErrorFields(ARec: TAllergyRec);
+const
+  TC_ERR_CMTS_OPTIONAL = 'Comments (optional)';
+  TC_ERR_CMTS_DISABLED = 'Comments (disabled)';
+  TX_ENTERED_IN_ERROR1 = 'Clicking ''OK'' will mark ';
+  TX_ENTERED_IN_ERROR2 = ' as ''Entered in Error''.';
+
+begin
+  tabEnteredInError.TabVisible := uEnteredInError;
+  tabGeneral.TabVisible        := not uEnteredInError;
+  tabVerify.TabVisible         := FALSE; // not uEnteredInError;
+  Changing := True;
+  ckEnteredInError.Checked := uEnteredInError;
+  if uEnteredInError then
+    begin
+      lblEnteredInError.Caption := TX_ENTERED_IN_ERROR1 + UpperCase(OldRec.CausativeAgent) + TX_ENTERED_IN_ERROR2;
+      if EnableErrorComments then
+        begin
+          memErrCmts.Enabled := True;
+          memErrCmts.Color := clWindow;
+          lblErrCmts.Enabled := True;
+          lblErrCmts.Caption := TC_ERR_CMTS_OPTIONAL;
+          ActiveControl := memErrCmts;
+        end
+      else
+        begin
+          memErrCmts.Enabled := False;
+          memErrCmts.Color := clBtnFace;
+          lblErrCmts.Enabled := False;
+          lblErrCmts.Caption := TC_ERR_CMTS_DISABLED;
+          ActiveControl := cmdOK;
+        end;
+    end;
+  Changing := False;
+  ControlChange(ckEnteredInError);
+end;
+
+
+procedure TfrmARTAllergy.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  uEditing := False;
+  uEnteredInError := False;
+  uAddingNew := False;
+  Application.HintHidePause := FOldHintPause;
+  Action  := caFree;
+end;
+
+procedure TfrmARTAllergy.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+begin
+  inherited;
+  if AbortAction then exit;
+end;
+
+procedure TfrmARTAllergy.btnSevHelpClick(Sender: TObject);
+const
+  TX_SEV_DEFINITION = 'MILD - Requires minimal therapeutic intervention '+#13+#10+
+                     'such as discontinuation of drug(s)'+#13+#10+''+#13+#10+
+                     'MODERATE - Requires active treatment of adverse reaction, '+#13+#10+
+                     'or further testing or evaluation to assess extent of non-serious'+#13+#10+
+                     'outcome (see SEVERE for definition of serious).'+#13+#10+''+#13+#10+
+                     'SEVERE - Includes any serious outcome, resulting in life- or'+#13+#10+
+                     'organ-threatening situation or death, significant or permanent'+#13+#10+
+                     'disability, requiring intervention to prevent permanent impairment '+#13+#10+
+                     'or damage, or requiring/prolonging hospitalization.';
+  TC_SEV_CAPTION   = 'Severity Levels';
+begin
+  inherited;
+  InfoBox(TX_SEV_DEFINITION, TC_SEV_CAPTION, MB_ICONINFORMATION or MB_OK);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTFreeTextMsg.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTFreeTextMsg.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTFreeTextMsg.dfm	(revision 1676)
@@ -0,0 +1,95 @@
+inherited frmARTFreeTextMsg: TfrmARTFreeTextMsg
+  Left = 426
+  Top = 266
+  Caption = 'Enter Optional Comments'
+  ClientHeight = 332
+  ClientWidth = 386
+  Constraints.MinHeight = 180
+  Constraints.MinWidth = 394
+  Position = poMainFormCenter
+  ExplicitWidth = 394
+  ExplicitHeight = 366
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlText: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 386
+    Height = 133
+    Align = alTop
+    BevelOuter = bvNone
+    Constraints.MinHeight = 133
+    TabOrder = 0
+    object lblText: TLabel
+      Left = 17
+      Top = 7
+      Width = 3
+      Height = 13
+    end
+    object lblComments: TOROffsetLabel
+      Left = 2
+      Top = 118
+      Width = 100
+      Height = 15
+      Caption = 'Comments (optional):'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+  end
+  object pnlButton: TORAutoPanel [1]
+    Left = 0
+    Top = 294
+    Width = 386
+    Height = 38
+    Align = alBottom
+    BevelOuter = bvNone
+    Constraints.MinHeight = 38
+    TabOrder = 2
+    object cmdContinue: TButton
+      Left = 155
+      Top = 9
+      Width = 75
+      Height = 21
+      Caption = '&Continue'
+      Constraints.MinHeight = 21
+      TabOrder = 0
+      OnClick = cmdContinueClick
+    end
+  end
+  object memFreeText: TCaptionRichEdit [2]
+    Left = 0
+    Top = 133
+    Width = 386
+    Height = 161
+    Align = alClient
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    PlainText = True
+    TabOrder = 1
+    Caption = 'Additional comments:'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlText'
+        'Status = stsDefault')
+      (
+        'Component = pnlButton'
+        'Status = stsDefault')
+      (
+        'Component = cmdContinue'
+        'Status = stsDefault')
+      (
+        'Component = memFreeText'
+        'Status = stsDefault')
+      (
+        'Component = frmARTFreeTextMsg'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTFreeTextMsg.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTFreeTextMsg.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fARTFreeTextMsg.pas	(revision 1676)
@@ -0,0 +1,75 @@
+unit fARTFreeTextMsg;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ComCtrls, ORFn, ExtCtrls, ORCtrls,
+  VA508AccessibilityManager;
+
+type
+  TfrmARTFreeTextMsg = class(TfrmAutoSz)
+    pnlText: TORAutoPanel;
+    pnlButton: TORAutoPanel;
+    cmdContinue: TButton;
+    lblText: TLabel;
+    memFreeText: TCaptionRichEdit;
+    lblComments: TOROffsetLabel;
+    procedure cmdContinueClick(Sender: TObject);
+  private
+    FContinue: boolean;
+  public
+  end;
+
+  const
+    LABEL_TEXT = 'You may now add any comments you may have to the message that' + CRLF +
+                 'is going to be sent with the request to add this reactant.' + CRLF + CRLF +
+
+                 'You may want to add things like sign/symptoms, observed or historical, etc.,' + CRLF +
+                 'that may be useful to the reviewer.' + CRLF + CRLF +
+
+                 'Already included are the entry you attempted, the patient you attempted to' + CRLF +
+                 'enter it for, and your name, title, and contact information.';
+
+  var
+    tmpList: TStringList;
+
+  procedure GetFreeTextARTComment(var AFreeTextComment: TStringList; var OKtoContinue: boolean);
+
+implementation
+
+{$R *.dfm}
+
+procedure GetFreeTextARTComment(var AFreeTextComment: TStringList; var OKtoContinue: boolean);
+var
+  frmARTFreeTextMsg: TfrmARTFreeTextMsg;
+begin
+  frmARTFreeTextMsg := TfrmARTFreeTextMsg.Create(Application);
+  tmpList := TStringList.Create;
+  try
+    with frmARTFreeTextMsg do
+    begin
+      FContinue := OKtoContinue;
+      tmpList.Text := '';
+      lblText.Caption := LABEL_TEXT;
+      ResizeFormToFont(TForm(frmARTFreeTextMsg));
+      ActiveControl := memFreeText;
+      frmARTFreeTextMsg.ShowModal;
+      OKtoContinue := FContinue;
+      FastAssign(tmpList, AFreeTextComment);
+    end;
+  finally
+    tmpList.Free;
+    frmARTFreeTextMsg.Release;
+  end;
+end;
+
+procedure TfrmARTFreeTextMsg.cmdContinueClick(Sender: TObject);
+begin
+  inherited;
+  tmpList.Assign(memFreeText.Lines);
+  FContinue := True;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAResize.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAResize.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAResize.dfm	(revision 1676)
@@ -0,0 +1,15 @@
+inherited frmAutoResize: TfrmAutoResize
+  Left = 276
+  Top = 383
+  Caption = 'Basic Auto-Resize Page'
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = frmAutoResize'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAResize.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAResize.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAResize.pas	(revision 1676)
@@ -0,0 +1,103 @@
+unit fAResize;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
+  fPage, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmAutoResize = class(TfrmPage)
+    procedure FormDestroy(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+  private
+    FSizes: TList;
+  protected
+    procedure Loaded; override;
+  end;
+
+var
+  frmAutoResize: TfrmAutoResize;
+
+implementation
+
+uses VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+type
+  TSizeRatio = class         // records relative sizes and positions for resizing logic
+    CLeft: Extended;
+    CTop: Extended;
+    CWidth: Extended;
+    CHeight: Extended;
+    constructor Create(ALeft, ATop, AWidth, AHeight: Extended);
+  end;
+
+{ TSizeRatio methods }
+
+constructor TSizeRatio.Create(ALeft, ATop, AWidth, AHeight: Extended);
+begin
+  CLeft := ALeft; CTop := ATop; CWidth := AWidth; CHeight := AHeight;
+end;
+
+{ TfrmAutoResize methods }
+
+procedure TfrmAutoResize.Loaded;
+{ record initial size & position info for resizing logic }
+var
+  SizeRatio: TSizeRatio;
+  i,H,W: Integer;
+begin
+  FSizes := TList.Create;
+  H := ClientHeight;
+  W := ClientWidth;
+  for i := 0 to ControlCount - 1 do with Controls[i] do
+  begin
+    SizeRatio := TSizeRatio.Create(Left/W, Top/H, Width/W, Height/H);
+    FSizes.Add(SizeRatio);
+  end;
+  inherited Loaded;
+end;
+
+procedure TfrmAutoResize.FormResize(Sender: TObject);
+{ resize child controls using their design time proportions }
+var
+  SizeRatio: TSizeRatio;
+  i,H,W: Integer;
+begin
+  inherited;
+  H := Height;
+  W := Width;
+  with FSizes do for i := 0 to ControlCount - 1 do
+  begin
+    SizeRatio := Items[i];
+    with SizeRatio do
+      if Controls[i] is TLabel then with Controls[i] do
+        SetBounds(Round(CLeft*W), Round(CTop*H), Width, Height)
+      else
+        Controls[i].SetBounds(Round(CLeft*W), Round(CTop*H), Round(CWidth*W), Round(CHeight*H));
+  end; {with FSizes}
+end;
+
+procedure TfrmAutoResize.FormDestroy(Sender: TObject);
+{ destroy objects used to record size and position information for controls }
+var
+  SizeRatio: TSizeRatio;
+  i: Integer;
+begin
+  inherited;
+  with FSizes do for i := 0 to Count-1 do
+  begin
+    SizeRatio := Items[i];
+    SizeRatio.Free;
+  end;
+  FSizes.Free;
+end;
+
+
+initialization
+  SpecifyFormIsNotADialog(TfrmAutoResize);
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAbout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAbout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAbout.dfm	(revision 1676)
@@ -0,0 +1,1733 @@
+inherited frmAbout: TfrmAbout
+  Left = 61
+  Top = 137
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'About CPRS'
+  ClientHeight = 487
+  ClientWidth = 337
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 61
+  ExplicitTop = 137
+  ExplicitWidth = 345
+  ExplicitHeight = 521
+  PixelsPerInch = 96
+  TextHeight = 13
+  object bvlBottom: TBevel [0]
+    Left = 6
+    Top = 288
+    Width = 328
+    Height = 47
+  end
+  object bvl508Disclaimer: TBevel [1]
+    Left = 6
+    Top = 338
+    Width = 326
+    Height = 121
+  end
+  object lblProductName: TStaticText [2]
+    Left = 6
+    Top = 197
+    Width = 79
+    Height = 17
+    Caption = 'lblProductName'
+    TabOrder = 1
+    TabStop = True
+  end
+  object lblFileVersion: TStaticText [3]
+    Left = 193
+    Top = 197
+    Width = 65
+    Height = 17
+    Caption = 'lblFileVersion'
+    TabOrder = 2
+    TabStop = True
+  end
+  object lblCompanyName: TStaticText [4]
+    Left = 6
+    Top = 214
+    Width = 86
+    Height = 17
+    Caption = 'lblCompanyName'
+    TabOrder = 3
+    TabStop = True
+  end
+  object lblComments: TStaticText [5]
+    Left = 193
+    Top = 232
+    Width = 63
+    Height = 17
+    Caption = 'lblComments'
+    TabOrder = 5
+    TabStop = True
+  end
+  object lblCRC: TStaticText [6]
+    Left = 6
+    Top = 266
+    Width = 36
+    Height = 17
+    Caption = 'lblCRC'
+    TabOrder = 8
+    TabStop = True
+  end
+  object lblLegalCopyright: TMemo [7]
+    Left = 8
+    Top = 289
+    Width = 322
+    Height = 44
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'lblLegalCopyright')
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 9
+  end
+  object lblFileDescription: TStaticText [8]
+    Left = 6
+    Top = 249
+    Width = 83
+    Height = 17
+    Caption = 'lblFileDescription'
+    TabOrder = 6
+    TabStop = True
+  end
+  object lblInternalName: TStaticText [9]
+    Left = 193
+    Top = 249
+    Width = 77
+    Height = 17
+    Caption = 'lblInternalName'
+    TabOrder = 7
+    TabStop = True
+  end
+  object lblOriginalFileName: TStaticText [10]
+    Left = 6
+    Top = 232
+    Width = 93
+    Height = 17
+    Caption = 'lblOriginalFileName'
+    TabOrder = 4
+    TabStop = True
+  end
+  object Panel1: TPanel [11]
+    Left = 6
+    Top = 6
+    Width = 325
+    Height = 183
+    BevelInner = bvLowered
+    BevelWidth = 3
+    BorderWidth = 6
+    Caption = 'Panel1'
+    TabOrder = 0
+    object Image1: TImage
+      Left = 13
+      Top = 12
+      Width = 300
+      Height = 159
+      Picture.Data = {
+        07544269746D61708ABE0000424D8ABE00000000000036040000280000002C01
+        00009F000000010008000000000054BA00000000000000000000000100000001
+        0000B1B0C5003222D000A8A5C700301FC1002412A700A199D200AEA8D500B4AE
+        D900BEBAD9002101C6001D01AC002301CB002101C3002101C1002101BE003010
+        C1003010BF004121CF005134CF007A68CD001F0293001A027400120350003811
+        D0002F0FB9003F1FC100391DAD009283CF00C5BAEF00C4BFD8006548CF00A99B
+        DB003101C5002F01C1002F01BF002C01B4002901A500DFDBEB003F11C100390F
+        AD00D3D1D300CBC8C800CDCBCB00BAB5B400BEBBB900B7B5B300D5D3D1009E61
+        2000B2997E00914F01008F4F0100915102009F5F1100C0B6AA00D2CDC7008F51
+        0100A06F2F00AA7D4300B3916500BEA68700B2A49200CDC5BB00C4B39B00915F
+        10009F6F2100CBC0AF00B6AFA400C5C1BA00BFBBB400D1CFCB00C9C7C300ABA9
+        A400CFCBBD00D3D3CD00ADADA900D3D3D000D5D5D300BDBDBB00B1B7B100C5CB
+        C500D3D5D300C3C5C300CBD7D100D1D7D500CDD5D30001FFFF0003FFFF0005F1
+        F1000DF9F90011FBFC0017F2F30027F4F5003AEDEE0050E5E6008EE1E100ADE9
+        E900A9DADA00ADC5C500BAD3D300A6BBBB00B4C9C900949F9F00D0DDDD00CAD6
+        D600BBC6C600B3BEBE00BFC9C900ADB6B600C6CFCF00C9D1D100D1D8D800CFD6
+        D600CCD3D300C7CCCC00AAAEAE00D3D7D700D1D5D50034353500D6D9D900A3A5
+        A50054555500E6E8E800E0E2E200D3D5D500D1D3D300CFD1D100CDCFCF00CBCD
+        CD00C9CBCB00C3C5C500BDBFBF00BBBDBD00B7B9B900B3B5B500717272005C5D
+        5D0057585800D5D6D600C8C9C900C5C6C600BFC0C000B5B6B600B2B3B300B0B1
+        B100A9AAAA00A1A2A200989999008D8E8E008788880001FAFF0028E3E90069DB
+        DE0001F2FF0072B9BD008DCFD300C2D7D8009CA7A800A2ADAE00C5D2D300C1CC
+        CD0001E6FF0008DEF6008D979800B0BABB00A8B2B300B7C1C20009D1EF00B0CE
+        D20001D9FF004BB0C10008D0F8000BC5E900BEC3C40001CCFF0001D0FF00579A
+        A900537B850001C9FF0009C3F60010BAE9002FB8DB002F8CA5002C5E6C003775
+        860004BCF20016A4CF001085AF009EB1B8003D404100D9DCDD00CBD7DC007080
+        8800D1D5D8000B559300B6C2CC006F757A00ADB9C4007F8890000C5FAD001775
+        D300C1CBD500C9D0D70045474900505152004C4D4E0060616200D3D5D700797A
+        7B0066676800A6A7A8009D9E9F009293940080818200C1C2C3004D596600AAB3
+        BE00CFD2D6006B6C6E00D4DAE900858CA000BFC3CE00AAABAE00D2D3D600CCCD
+        D000122A8300989AA800D3D4DB002635C2009A9DB600B4B5BE00AFB0B900C4C5
+        CE00BEBFC800BBBCC500C8C9D10093949F00A9AAB6009E9FA900A5A6B0001C21
+        C600B7B7CE00CACAD600B8B8C200CECED800C8C8CC00D1D1D300BDBDBF00BABA
+        BB00D3D3D300D1D1D100CFCFCF00CDCDCD00CBCBCB00C7C7C700BDBDBD00AEAE
+        AE007B7B7B7B7B7B7B7B7B7B7B7B8AD5FD80808080808A8C85909090909090DD
+        8DD57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8A838FD1
+        D190909090858280806D6D9F9F6A69A46BA56D535353535353535353537B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B536D9F9F9F9F9F6A6A6A6A6A686868686A
+        717B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C5050507C8082F7828AF7DD
+        91D291D2D2908E83828282828C7F89897F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B73706A686868A569A49C6593C5C5C5C5C5C593939277
+        FF8F8F8F8E858D8C804CF88AFD8B8283696A6A6868686868686A9E67676F7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7F7F7E7D7D7D7F8080D58282E8DCEADCDC
+        DCDCEAEAF4E9F2F2E9E7EAEAD8DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        DED8D8D8D8D8D8D8F4E5D7D7C4DCDCDCDCC8D8737B7B735470706A6A6D747B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B53547070
+        70709FA5C4C4C4636363636363C4C2C86F73737373D8747B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7D7D7071696969A5A5A5A5A5689F6C6C686A6D54
+        73737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507E8A8C
+        8472DDDDDDDD90919293929190DDDDFF8DFE8C8C8CD5F7FFDDDDDDE6D7C2C4BB
+        BBBBBBBBBBBBD7C4A59FD8737373C0737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7D7E7E7E7E7E7E7E7E7E7E7D7C7B7B7BC3C3D4C5A29C
+        726B696A70507B7B7B507C7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7DFD81818181818B8A71807F7E7E80
+        8C848F838A7E7C50505050507B7B7B7B7B50507B7B7B7B7B7B7B7B7B7C808080
+        807F7C505089897B7B7B737B7B507C7D505050505050507E8080808A8080807F
+        7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFD4DF74D828C82828C515183
+        E5E9E9E5E6E6E5E9EAD8EAEAE7E7E7DCE8E8E8EAD87B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74747474745373737373
+        737373737B7B93D3D29085FD7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B746DA56B9D6565
+        6565659C9D9D9D9D9D9C9C908F827F7C50507B7B7B7B7B7B7B7C7C7D8A83858E
+        8E8E8E8D8C8A7C7C7C808AD5844D8D8D8A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B507C7C5050507B7B7B50507B7B7B6E53735353709F9F9F9F
+        9F9F9FA5A3A36B9D9CEDEDEDEEE6E8DFDE7DDFDFEAE8E5E5E6ECECE5D5FD5185
+        90D2D3D3D3926565659C9DA46BA5A5A5A5A5A59F6F7B7B7B7B7B7B7470707053
+        737373737373737474747474546C71707B7B7D51848585858585F751FD5151FD
+        7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B746D6A686868686868807F7E7E7D7B7B7B7B7B7B7B7B7B7B
+        7C80FD83858E90D29394CF86D9D986CFD49494D3D27791D190FF8D8482D5F4EA
+        EAEAEAEAF4E9F2F2E5ECEEEEEEEEECE6E87D7B7B7B7D7E7F7F7C7C7C7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B746D67737B73679E9E9E9E9E9E6A689F9FA56B9D9DFF8F8F8E8381838E8F
+        8FFFDDDDDD90FFF78B7E7E7F8A8C8D858DD56A6861616164626262626262629B
+        676E7373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C
+        507B7B7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7BDE7DDFDFDFDFEADCF2E5E5E5E5E5E5E8F1E2
+        E27B7B7B7B7B7B7B7C7F7FD58FD17777777791D2D393D4CF8686CFD4939291DD
+        8DD5D5515151518B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7C7E7F80FD8DDD90858B8A82848D8D8D8483848D848D72
+        77777284838E8F8E85FF7792929292929292D2908E6B9D9D9DA4A4A46B696A6A
+        A56BA4A3A5A5A5A5687F7C505050507F8C8CD57E7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7BD9CFD4939291FF827F507B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7474747474
+        74746D68686868A5A59F6CBEBE747B7B7B7B7B7B746C74737474747474747474
+        7169A49C65A2A29277FFFF9090DDDDDDDDDDDD72837F7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C2A808AD58D90D2D3659CA4
+        6BA4A4A4A4A46B6969696969686C747B7B7B7B7B7B7B7B7D7F518C8472DD72FF
+        FF90777777D1D1D1D18F828BF6858E838A8080807F7B7B7B7B7B7B7DD58C8CD5
+        7C7B7B7BD8DFDFDFE7E8E8E8E8E8DF7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD494D3D2908D8A7C7B7B
+        7B7B7B7B7B7B7B7B73537B7B746F7070707070507C7C7C7B7B7B507C507B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BE2E2F1F1EAD8DE7B7B7B7B7B
+        DEF37B7B7B7B7B7B7B7B7B7B7B7B7BFD838E8E85F7F7F78D8D856BA4A4A4A4A4
+        696A6F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B50
+        7C7E7E7E80828E90D2D2D18F8E8E8F8F8F8F8EF7838383838C7F7B7B7B7B7B7B
+        7B7B7B7B749FC2C4ECECECECEC9D9CEDEDEDEDEDEDEEE6E8E8E9828A8A808080
+        807C7B7B7B7B7B7C8A8A8A8A7B7B7B7B7B7F8080FD808A8A8AD5D57D7F80807F
+        80807F7F507B5080D580808080807F7D507B7B50706AA3A5AC6A6D537B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8F3DCE5EEEDE1EDE1EBEB
+        93D4CFCFCFCFC3C3CFD49392D18F825151517F7C7B7B7B7B7B7B7B7B7B7B7B7B
+        7B507F828E8E8E8EF782828F90D1908F858DD57F7E7D7B7B7B7B7B505050507B
+        7B7B7BCEC0C0C9C2C4C4C4C4C4C2C9D86FC0C0C06F6F6D6C6C6D54545470719F
+        9F9F6A696BA4A4A46B699F7D7FFDFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B74676774746D6D6CA56969A5A569A36B6B6BA472
+        8F8F8F8F8E4DFD807C7B7B7B7B7B7B7B7D8A807D7B7B7B7B7B7B7D7FFD818181
+        FD8A7D7B7B7B7B7C7FD5D5D58C8C807E7C507C7F51D58284838C7E7C507E7E7C
+        507B7B7B7B7BF3F1EAEADFDEDEDEDE6F737373D89F9F9F9FC86C70737B7B7B73
+        549F6A807F7F7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDF
+        DC00ECE1E1EBDBDBDBDBDBDBC5BFBFD4D4D4D4C5D39291FF827F507B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7E8B82518168A5A5A5A5A5A5A5A5
+        A5A56A7073737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7473737373747C
+        7B7B7B7B7B7B7B507C7E8080808080FD8384838282D57E7C7D7F7E7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7C507B5050507B7B7B7B7B50507C7E7E507B7B7B7B
+        7B7B7D7D7D7D7E7E7E8B838F90D2D292D2D1D19085FD80FD82F7F785FF858C80
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8A8A8A6A6A6C9E7070709E
+        6C68A5A3A369689EBE66666E7B7B7B7B73735353537B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B50507B508BD58C848F8D838383828282828383828CD5817C7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B735370A5
+        6BA3A36BA4A4A4A49D9C65A2A2A2A29277D18F8C7D507C706CA56BA4A4A4696A
+        6A686868686868686868698D817D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B735373737373737B7B7B
+        7B7B7353535353737B7B7B7B7B7F8383D58181FD7F818C838472919292919177
+        FF82F7FFDDDDDDDD90DD858D827F507B50507C7C7C507B7B7B7B7B7B7B7B7B7B
+        7E82838384E6E6E6E6E6E6E6E6E6E6ECECECECF2DCC9DECE7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7D7E7E7E7E7E7E7E7F518ED191D1D1D1D1907272A4A4A4A4
+        A4A4A4A4A4A36A705373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B80D58A8A8A717C7C7D7FD585729090909090DD8584
+        8C84FF919294D4CFCFCF94D3D3D3D3D3949494D3D3D2D292D29085D5F47D7C7C
+        7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747070737B7B7B
+        7B7B7B7B7B7B536C6C7EFA507B7B7B507C7C7C7C7C7F7F7F7F7E507B70707070
+        707074746DAC6B6B6BA5A56B9C6565A29394D4D4D4D494939277EEEEEEEEECE5
+        E8F1DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7353535353537474
+        7474537B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5081
+        D5D5D5D5807B7B7B7E8080807F7E7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7D7B7B7B7B507C7C7B676767669E68
+        69A49C9C656565DBDBDBDBDBDBC5BFC3D0CDD0D9D9C3BFC5DBDBDBDBC5BFBFC5
+        C5DBDBDBDBE1E4EEEC00E5E5E5E5E5D57D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D7F7F7C7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B50507B7B7B5050505050505050507B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B508A8DDD7777DD729091D394D4CFCF8686
+        8686CF94D3D2D18F8F8F8F8FF7FD7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7DFD8A8A51D58C8C8C8C8A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B536D6A68686A9F616161616363696A6AA3A49DA4A36A70706C70507B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B6FC8C2C4BBE4E4E4E4DBDBE19C6565E1E1DBC5C5C5C5D4D493D3
+        92929291D1D1D1FF8F77D29CA4A3A3A3A3A3A369A5696B9D9C9C9C9D9DA3AC80
+        7F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFD4D
+        8582FDFDFD807C7B7B7B507F7F7F7F7F8080E7DE7B7B7B7BDEF3F3F3F3DE7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D8AFD
+        7E7D7D7D7E5185FF8F85858E8F90919190FF8F8F8F8FD1D2D2D18F858482828E
+        908F827F7E7E7E7F8A82FD8A8A808AF7909190854D4D8D8585858585F7FD807D
+        7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7F8283828A7D7D7D8A8A8A8A8A808A
+        6A6969689E737B73679E707054545474747474747B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747C7C7C7D7D7E7E7D7D8B
+        8D8D8590D2D2778F84D5D5F78D8D8D848484F7512A5184D57E7D7D7E8B51FD7E
+        7C7C8A838E8F8F8F8E838A8080807C7B7B7B7B735470737B7B7B7B7B7B7B7370
+        719F9F9F9F6AA5817E7DFD859090FF8F8F8ED57E50507DD5FE825151824D827E
+        7B7B7B7B7B7B7B7BF87C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B737353747B7B7B7B7B7B7B7B8AFE858EFFD1D2D2EEEEEE
+        EEEEEEE193C5C5EBEBEDEEEEEDEDECE9F4F4D5F68DDDDDDDFF8E858ED1D2D2D1
+        8F8E8F8F8F8F8F9090858DD5807C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7C2A8080808080808A82838C8A7D7DD58FD1D2D2D190DDDDDDDDDD72
+        8F82D582D57E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFD51518BFDFD828FD1D1D1D1D17777D1
+        FF7792778F8E8EDD91D2908DD5808A8C8D8D8DF7827F507B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7C8A8DFFFFFFDDDDDDFFF7FD8A8A8A8CD5D5D58A7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7E828FFFFFDD919292D277DDDDD1E1EBD3D3E1EEE6E8EAEAEADFDE7BCEF3F3
+        08F008F1EADCF0F0D7E4EDE4E4E4E4E4EEEE8F908FF74D8C8A7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7E7F7F7F7F7FD58D8D8D8DDD9192
+        93949494D3D2D1D1D1D19085817D7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8A82858E
+        8E8E90D2D3D3D2D2EBD393939394D4C5D3E1EEEEEDEDEEE6E8EADFDF7D7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D8A828282824D8D8D8484848D8E8D84
+        84D57E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B735353537B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFDF78EECECECECECDDDD8F8F
+        8E8E8E8E85FD7D7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B8AFE4D4DF78FD1919191919177DDFFFFFF8FF78B7C7B7B7B507B7B7B
+        7B7B7B7B7B7B7B7B7B7B50507B7B74747B7B7B7B7B74745454545454546C6C6C
+        6C6D7D7D6D6C6AA3A49D9C9C9C9C9C9C9C9DA3A3A36B6B6B848482807E7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B808A
+        8A8A807D7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C
+        8CE5E6ECECECECD7D7D7ECECECECE4E4E4ECF0F1C07B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F828484848ED191D277D1D1D1D1D291
+        77D1FF4D7E7B7B7B7D7E507B7B7B7B7B7B7B7B7B7B7C808C83F7848C807C7C7C
+        808472D1D1777777D177EEEEECE6E6E6ECEEE1D3EBEBE1EDE1EDEDEDEEE5828C
+        8C8C8C8CD58A7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7D719F9F6C70C9C9C9C9C9C0737373737B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507B7B7B7B7B5050507C7FD5
+        8282D57F507B7B7B7B7B50808D856B6BA46B69686A68A569A3A49C9C9CA4699F
+        747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDEDE
+        DEEAE8828EDD9090D17792D39393D3D2D18F8E8E8EF77E7C7B7B7B7B7B7B7B7B
+        73706D6D6D6D6D6D6D7070706D6AA5A56AD582FD7E7E81838282828282F78FD1
+        908F8E8EDD8EF7F783E8EAEAEAEAEAEAE7E8E77DD8D8D8D87B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C80AC6A6D6D6D6D6D70537373737373
+        7373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        505050507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8
+        E7F1F1EAEAE7E8E9E9E8E9E5E6E6E5E98B7E7C7B7B7B7B7C7F7F7C7C7F8A807C
+        7C7E80D5848E8E8E8E858280507B7B7B7B7BCF94D3D2D18E517D7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D7F8A82FF9192D3D3D39292929292
+        9291FF82807E7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B507C7D80808080808AFDFD8A80FA8A8B8CA569A5A5A56868686861BB9C9C
+        9C9C65659C6369A5686D74706D6D6C6C7D7C7C7C7C7C7B7B7B7B7B7B7D8C82FD
+        80807C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7353737B7B7B
+        7B7353535353537474746F6D686A828DFF90D2D2D2D1D17777777777D1D1D18E
+        FD7D7B7B7B7B7B7B7B7B7B7B7B89897C8A8C82828282D5518B7F7F7E7B7B86CF
+        94D39172848B7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7D7E7E7E7E7E7E7E81D5FD7D7C50505050507B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7ED5D5
+        D5D5D58A7054547071836B6B6BA49D9C726B8484827F747D7E7FD5F7D5818181
+        FD8A7D7D7D7D7D7D7F51517F7E7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B5353535353747C7C7C7C7C7C7C7C507B7B53705453546C
+        71716C7054709F69A472727272728ED57F7E507B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7BDEDFE7E7E7E7E7E7E7DCE8E5E6E5E58FDD919293
+        D3929394D4D4D4D4D49494D3D29177FF8ED57E5050505050745454547070706D
+        6D6D6D6D6D6C6C6C7474D6CDC3BFC5A29CA4619F9E9E9E9E9E9E6F7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B73736E6E6E736E6F6F7373737373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B677453746D6462626262646464646161616162676E6E
+        6E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B53709F9F9F9F9F9F9F9F9F
+        9F9F6A6C6D6D6CACD5807F808080807F7F80828E8F8E8E8E8E85827D7B507C7D
+        7E7E7E7F807F507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C507B7B7C7F
+        80D5F7FFDD8585DD9192D3D392D2D394D4D494939392D290FFFFFFF7828A8051
+        8B7C7B7B7B7B7B7B7B7B7B7B7B7C7FD58C8D727792D388D086D49392778F8280
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B5050507C7FD5D5D5D5807E7F7E7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B536D6D6D6D6D
+        6D6D6D6D6C6C6C6D6F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B745353535367679E9E9E6C68A3A3A3A3A3A3A3AC8B8B8B8B8BFD8A8AFE8E
+        8E83FD808A8A7F7B7B7B7B7B736666679F6A5453747467676F6F74747474747B
+        7B7B7B7B7B7B7B7B7B7B7BF9FA2A8A82828C8C838EFFFFFF8EF783F7838B7D50
+        7B7B7B7B7B7B7B7B7B7B7B7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B88CD86CF94D391DD848B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF3
+        EAF3D8CE7BCECECECECECEDEDFDFDFEAE8E8EAF57D7E8B8B8B5184FFDDDDFF8D
+        8CD5D5807E7F7FFD81FE8FFFFFFF8280808A8AFDFDFDFDFD8A7D7C7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F8C8D85857291D394949493D3
+        92D2D2D2D2D291908DFE859072696A6D9F6A6A6D74745353536767676A69A56A
+        807F7F7E50897B7B7B7E7C7C7C7C7C7B50507C7C7C8083FF9192A29393A2A293
+        D4D4D4D494A265D29D6BA56C747B7B7B7B7D7170746D6AA5A5A5ACA5A5A5A5A5
+        A5A5AC6D747B7B7B7B7B7B7B7B7B7887CDCDCDD9CF94D391FFF7FD82A3A3A571
+        6C6C6D6C6F737B7B7B7B7B7B7B737B7B7B7BDECECECED88A828383F78E8F85F7
+        8ED191D2D1907791D2D2918E82D5518A7FFD83FFDDDD90919177DD8F8F8FFFD1
+        77777777778F827E7B7B7B7B7B7B7B50507C7D7E7F7F808080808080807F7F7E
+        7D7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7BDEF4E9F2F2F2F2F2F2E9F2E8EA7D7E7F7F8080808080808A8A807F7E7E7D8C
+        8DDDDD858E90D2D3939392D1FF9091D2D2D291908E84FF919291DD848484848F
+        8FF78C83838282828D72728DD57F7F7F7E7E7E7C507C808A8A8AFD80807F80FD
+        814DF7848D8D8DFFFF8E8D828CD5517E7C745074737B7B7B7B7B7B7B7B7DD5D5
+        51D58C8C8C8C828483838383838E827E7B7B7B7B7B7B7B7B7B7BCFD4D4D4D4D4
+        949291DD858D8D8D858E727272FF8E8FA36A7053737373537373536F9F6969A5
+        68A5A36B72DDDDDD9090D1D177919291D18E84F78D828C818BFD8A7F7E7E7C7C
+        D8DEDEC0E2CECED8F3F3F3DCE9F2F2F2E9DCEA7B7B7B7B7B7B7B7B507C7E80FD
+        8B8151818BFD8A8A8A7F7E7D8976BDBD76767689897B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7E828F8F8F8F85F78EFFFFFFFFFFFF8F8D8DF7F78C8B8B815181
+        8BFD8A8B828DF7F68C518181D58CD58A8A8B838E90908D807C7C7C7C7C7D7D7E
+        8080D5F7DDD18F828BFDFD8B8C84FEFEF7FE828C51518CD57C7B7B7B7B7B7B7B
+        7B507E8BFD8BF7D192D39292D3939494949494949392778F8E8D8C7C7B7B8989
+        898976738989897B7C7E8B8B8B8B51518B8B8B8B507B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7DD58C8C8CD58CAC816D7B
+        7B7B7B7B7B7B7B7B7B7D8A8A8AFD82834D4DF7F7F78D8EFF90D1D2D277FF8D85
+        8F8F7290909090728F8E848251807E7476BDBDBD7C8283F7848484848484F780
+        7F7F7F7F7E507B7C7E7F81828383828C8B8BFD8BFD7F7D767A7979797ABD7689
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808A8A7D7B7B7B7B7B7B7B7B
+        7B7B7B7DFDF78283838382D58181E9ECEEEEECE6F2E9E8DCF1F3F1F1EAEAEA7D
+        F97B7B7B7B7B7B7B7B507C7F8A5183F783828C8B8BFD8B8BFD8A7E89BD7A7A7A
+        7A76FBFC7B7B7B7B7B7B7B507C7C7E808BD582F783F784848DD1D29292D3D393
+        D3D39292D291D1F7D5FD7F7D508989767C8084FF90909C9C9C9C65659C9C9C9D
+        6BAC6D7070745353709F82FF7792929394CF7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B736E6E6E6666666666666E6E6E6E737B7B7B7B7B748AD5D5D58C8C8282FEF7
+        8D8F90779177919177D2D394D4CF86D9D0D0D0D986CFD4939277FFF7817E7BBD
+        BD6E6F546D70706D6D6D6D6D6D6D6D6D70507B7C8081838E909077D1D1D1D177
+        D17284FD897A797A7A76DFE8E8E9F2E6EDEDEDEDEDEDEEECE9DFDEDEDE747B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8081838E909077D1D1D1D2929292D290
+        84F4F480F481F68D85858D82F47B7B7B7B7B7B7B7B7C7EFDD5847290D190D190
+        D1D17791D2778F82807B767C7E8051517F7D7C507B50507C7E8A8182F78D8E8F
+        72907792D394CF86D0CDCD878787CDD0D986CFCFD494939291D1909090907792
+        92929292D3D3939494D3D291DD83807D80808A8A836B9C6593C5D4BFBFBF7B7B
+        7B7B7B7B7B7B7B7B7B7B7C7C7B7B7B7B7B50505050505050747070507B7B7B7B
+        5080F78D83FEFE4DF7848D8FDDD1D2D39494D4CF86CDCDCDCDCD8787877878CB
+        CCCACACA88D0CF94929084FD7C76BDBDBD767689897B7B7B7B7B7B7B7B7B7B7E
+        FD828E9293D486D0D0CDCD87CD869492847E737676536D6A6869A49CA2A2A2A2
+        A2A292778FF7F7F7F7817E7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7EFD828E92
+        93D486D0D0CDCD87CD869492DDE5E9E9E9E6ECEEEEEEEEEC00E7D8D8D8D8DE7B
+        7B7C80D584D1D394CF86D0D0CDCD87CDD0CFD390D57476767B7B7B7B7B7B7B7B
+        507C7D808B8C848EDD77D2D394CFD9CDCDCDCD878787878888787878CBCBCCCC
+        88D0CFD4939291DD85FE8C8C8282F7F7F7F78DFFD1D18E817D7B7B7B706AA363
+        BBBB99999999A9A9A9977B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7470707474747B7B7B6D686969848D8D8EDDD177D191929486CD8888
+        87CDCDCDD0CDCDCD878888CBCCCABCBCBCBCBCBCCBD0D49290F7FD7E7C7D7D80
+        817E507B7B7B7B7DFD5151838DFFD2D4D0CDD9D9D0CD878878CBCB86928DD58B
+        7C7B53709F6AA39D65A2D3D392D2D2D2D2D2929292D2DD85D5FD80807F7F7E7E
+        7F51828282D57FFD83859194D0CD86D9D0CD878878CB88CFD284D58A7C7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7DFD838F92CFCDD986D9D0CD88787878CBD9D3
+        FF8C8B807C7B7B7B7B7B7B507C7E8BD5848FD1D2D3D486CDD0D0D0D0D0CDCDCD
+        CDCD8787887878CBCBCBCCCCCACACACC8786D4D3D18DD57F7D7C7D7E7E7F7F80
+        8A807C7B7B7B7B7B7B7B7B7B7B74746D6C9F9F9F9F9E7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B08F17D7E7E7E7D507B507E8C848C8BFDD5
+        4D8590D1D2D3CFCDD986D9D0CDD0D0CDB0B5B5B9B9B2B1B1B1B1B9B9BAB7B6BC
+        7575CCD0CF93D2FF8DF78D848C80897B7B7B7B7B7BF8F98AD58390D4D0CFD4CF
+        86D0CD8878CBCC78D4D272D57D7B7B7B7B7B7B7B7B7D81E5F2F2F2E5E5E5ECEE
+        EEEEECECECE6E5F2E8D87B7B7B508A8A8A807B7F51F7D1D4D0CFD4CF86D0CD88
+        78CBCC8894918EFD7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7E81F79094CD86
+        D4CF86D9CD87787878CB87D4918F8C7F7C7B7B7B7B7B507C7F8B828590D293CF
+        CDD986868686D9D9D0D0B0B5B5B9B9B9B1B1B1B1B1B3B9B9B5B5B6CABCBCCBD0
+        CF92728380747676767689897B7B7B7B7B7B7B7B7B7B7B7B7B7B7CD58DDD9192
+        94D47B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDE1213D87B7B
+        7B7B7B7B7B7B7B7C7D7D80D5F7FF91D3D4D0D986CFCFCFD9B0B5B9B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B9B5CABC78D9CF94D391908582517C7C7C7C7C7C
+        7D808B838282778686D4B1B1B1B1B1B1B1B1B1B1B1B1B1977D7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7D8A8C8C8C8C8C8C8C8C817C7B507FAC689F9F6C5380
+        5182778686D4B1B1B1B1B1B1B1B1B1B1B1B1B19A7C7B7B7B7B7B7B7B5050507E
+        7F7F7F7C507F839093CDCC88B0B1B1B1B1B1B1B1B1B1B1B1B1B1B1967C7B7B7B
+        7B507C7F81F7FF91D3D4CDD986CFCFCF86C3B5B9B3B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B9B5B6BCCCD0D492FF8C7E7B89897689897B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7F828FD19293947B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7BDE12211B7B7B7B7B7B7B7B7B7B507C7F81F772D29386D086CFD4
+        D4D4AFB4B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B9B7CACD86
+        94659D6B69A5A5A5A5A5A5A3A36A6D71818CD1D0D9CFB1B1B1B1B1B1B1B1B1B1
+        B1B1B1977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B707070706D6D6D6D
+        6D6D706C6869689E9E9E6F71818CD1D0D9CFB1B1B1B1B1B1B1B1B1B1B1B1B19A
+        7C7B7B7B7B7B7B7B7B7B7B8A8CFEFE8C828D90D2D4CBCCCCB5B1B1B1B1B1B1B1
+        B1B1B1B1B1B1A05C7D7B7B7B507C7F81F772D29486D086CFD4D4CFAFB4B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B3B775BC87CF92FF51
+        7F7F7C7B507C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B94D39292D290
+        8E828282807C7C7C7C7B7B7B7B507C507B7BF312210F1F7B7B7B7B7B7B7B507C
+        7F5184729294D0D9CFD494D4AFB3B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B3B687CF92FF8C8A7E8A8A8A8A8A8A8A7B7B808B8BD1D0
+        D086B1B1B1B1B1B1B1B1B1B1B1B1AD977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        507C7C7C7E7E7E7FD584858585858EDD9191908E858585DD90D19388CD86B1B1
+        B1B1B1B1B1B1B1B1B1B1AE9A7C7B7B7B7B7B7B7B7B7B7B7D5182828484FFD177
+        9478CB78B9B1B1B1B1B1B1B1B1B1B1B1A8555DFC507B7B507C7F8BF7DD92D4CD
+        CDD986CFCFAFB3B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B8BACA878694D2DD8D8A7C7C7FD5807F7E507B7B7B7B507C7C7B7B
+        7B7B7B7B7B7B74746D68696969696BECD7C4C4C4C4C2DCC8DCC4C4C4C2C91D11
+        0D210F077B7B7B7B7B507C7E8BF7DD92D4CD86D49494C5B4B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B9CDCF928ED57F7070
+        70707070706F73808AFDD1CDCDD0B1B1B1B1B1B1B1B1B1B1B1AEA0977D7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7C7E8A802A2A2A2A808C8E9090909090909090DDDD
+        90909091919194CB78CDB1B1B1B1B1B1B1B1B1B1B1A8989A7C7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B507CFDD583D2CDD0D9B3B1B1B1B1B1B1B1B1B1B1A0555B7CF8
+        7B7B7B7C7E518477D3CF88CDD98686B0B4B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B8B5D093D1838B7D507B7C8A8A
+        8AFD8A8A8A8AFD8285DD77D292D2D292D3D37B7B7BDED8F1F1F1EAEAEAEAEAEA
+        EAF1F17B7BD8E8F2F2ACDC19210D2111F081FDFD8B818C838472D294CD86D494
+        93AFB2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B8B7D4D28D8B7E507B7B7B7B7B7B7B808AFDD1CD87CDB1B1B1B1B1B1
+        B1B1B1B1A09555A9E6F2F2F2F2E9D5FD7D7B7B7B7DD58E8F8F84D5807F7F7F80
+        82858EF78282828CFDFAFA8B4DF7F78F8FFFD3787888B1B1B1B1B1B1B1B1B1AD
+        A095559A6D6D6D6D70537B7B7B7B7B7B7B7373737CFD818392CDD0D0B1B1B1B1
+        B1B1B1B1B1AE98555597D54D4DF78EFFD1D293CFCDCA78D08686B5B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B9C3D3FFD57F7C7B7C80A5696B6B6B6B6B6B6BA4A4729D726B69A56A6D7B7B
+        7B7B7BF48A807F7E7E7E7E7E7E7E7E7B7B7C8AFDFD800821220D212113D87B7B
+        507D8A828FD294CD86D49493A9B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8A8A8A8
+        A8A8A8AEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B59477F78A7C507B7B7B7B7B7B80
+        8A8B77878888B1B1B1B1B1B1B1B1A895555555978C7E7DF57C7C706F537B7B7B
+        7B6F6D9F9F9F9F9E9E9E706D6AA58C7F7C7C7C7F7E507C7FF784848FFFFF9378
+        CBCCB1B1B1B1B1B1B1B1A855555555998F9090908E817C7B7B7B7B7B7B7B7B7B
+        7CFD8183D387CDB0B1B1B1B1B1B1B1B1A0555555559A7C7C507C8B849091D3CF
+        8887D986CFB4B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8A098989895959898A0A0A8
+        A8ADB1B1B1B1B1B1B1B1B1B1B1B1B3BFD28DFD7D507B7D828ED1D17272727272
+        72728F8F8F8E8E8D8C7F939291909090858C80F84CF8F8F8F8F84C7B7B7DD5D5
+        D551070D21210E2121137B507C7FD5857793D086D49493B4B1B1B1B1B1B1B1B1
+        B1B1B1AEA8A095555555555555559598A0A8A8AEB1B1B1B1B1B1B1B1B1B1B1B5
+        93DD8C7F7C7B7B7B7B7B7B808A8B7787CBCBB1B1B1B1B1B1B1AE985555555597
+        827F7D50737353737B7B7B7B7B7B7373737373737373737B7B7B7B7B7B7B7353
+        747B7B7BF8F8F88AFD8B91877878B1B1B1B1B1B1B1A895555555559991929292
+        D2D1858A7D7D7D7D7B7B7B7B7C8A8BF7938887B7B1B1B1B1B1B1B1A855555555
+        559A6A9F6D6D6C69729CA286CDCF9493B4B1B1B1B1B1B1B1B1B1B1B1A8985555
+        55555555555555555555559598A0A0A8AEB1B1B1B1B1B1B1B1B1B1B2AF908C7F
+        7C746C69A49C65656565656565659C909090908F8D8C949392929291DD8DD551
+        D54DF7F7F7F78CD58C82828CD58007210E210D2121211B7C7E8BF790D386D9D4
+        9493B4B1B1B1B1B1B1B1B1B1B1AEA0955555555555555555555555559598A0A8
+        A8ADB1B1B1B1B1B1B1B1B1B1AF92858B7D507B7B7B7B7B808A8B77877878B1B1
+        B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7D8080808C82F7D378CCCAB1B1B1B1B1B1
+        B1A89555555555AFEB939393EBD2908E8D85DD77919C65659C9D639DBFCBCBB7
+        B1B1B1B1B1B1B1A85555555555D2D1D1DD8F8D8F909194CD869493A9B1B1B1B1
+        B1B1B1B1B1ADA09555555555555555555555555555555555559598A0A8A8AEB1
+        B1B1B1B1B1B1B1B1B3A285FD7C7CAC8590D2A2A2A2A2A2A2A2D29D8E8585858D
+        84D57B7B7B7B7D7D7D7C7C7C7C7C7C7C6D6A6A6AA3A36A6D6D701B2121210D22
+        0D21101F808C8FD2D4D0CF9493A9B1B1B1B1B1B1B1B1B1AEA095555555555555
+        55555555555555559598A0A0A8AEAEB1B1B1B1B1B1B1B1B1B1AF77827F7C7B7B
+        7B7B7B808A8B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F848D8D8D6B6B72
+        9D9D94CBCCCCB1B1B1B1B1B1B1A895555555559AD5828E9090DD8DF7F7F7F785
+        72909191908F838FCFCCCBB5B1B1B1B1B1B1B1A8555555555593929292D3D3D3
+        93CF8787D0CFAFB1B1B1B1B1B1B1B1B1A8955555555555555555555555555555
+        55555555559598A0A0A8AEAEB1B1B1B1B1B1B1B1B1B490D57D6F9E6461616161
+        61616161616164626262626267667B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B
+        737B737B7B7B1E0D210E210D21210E11F284D193D086CF86AFB1B1B1B1B1B1B1
+        B1B1A898555555555555555555555555555555559598A0A8A8AEAEADB1B1B1B1
+        B1B1B1B1B1B2DB8F817D507B7B7B7B808A8B77877878B1B1B1B1B1B1B1AE9855
+        555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808A7F7C
+        7B7B7B7B7C80FD8C8C82828D858492877878B1B1B1B1B1B1B1A895555555559A
+        7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D8A8A84947888B5B1B1B1B1B1B1B1A8
+        5555555555F751D58E91D3D393CF88D986BFB3B1B1B1B1B1B1B1ADA055555555
+        555555555555555555555555555555555598A0A0A8AEAEADB1B1B1B1B1B1B1B1
+        B1B199F77F507B7B7B7B7B736E6E6E6E6E6E6E737373735373737B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1E210D21210D220E220A198FD2CF
+        D986CFBFB2B1B1B1B1B1B1B1B1A898555555555555555555555A5C5C96965555
+        98A0A8A8AEB1B1B1B1B1B1B1B1B1B1B1B1B1B477827F7C7B7B7B7B808A8B7787
+        7878B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7D7D7C7D7F8080
+        80807F7F7F80828E8F8F827E7B7B7B7B7B7B7B5050507C8AFD8177877878B1B1
+        B1B1B1B1B1A895555555559A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D808A84
+        947878B5B1B1B1B1B1B1B1A85555555555807B7B50FE77D2D3CFCD86CFA9B1B1
+        B1B1B1B1B1ADA05555555555555555555A5DA999999A9A9A9A97975D5A98A0A8
+        AEB1B1B1B1B1B1B1B1B1B1B1B1B1B38EFD7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B537070546F74535353535353535353747474DE1E0E
+        210D220D21220E23041E9488CDD0D0B9B1B1B1B1B1B1B1B1A898555555555555
+        55595D5E7F7F716AAC69A49CA9B4AEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A9
+        8FD57F7E7D7D7D808A8B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B
+        7B74DF8C858F84ACD5ACACACACD58A80807D7C7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B808A8B77877878B1B1B1B1B1B1B1A89555555555999D7272A4A36A7054
+        5474737B7B7B7B7B7D8A8A84947878B5B1B1B1B1B1B1B1A85555555555807B7B
+        7F8F92D293CDCDD0C3B2B1B1B1B1B1B1B1A05555555555565596A9A292929190
+        84FD7E7E7F8A51837265AFB3B1B1B1B1B1B1B1B1B1ADAEA8A8AEAE99517C7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD4C5A2A2A2A2A2659CA4A3A56A9F
+        9E9F9F9F9F9F8AD582F21221210D21210E2223230A14D687D9C3AFB1B1B1B1B1
+        B1B1B1A89855555555565659979B50507B7B507C7C7EFD82FF92BFB9B1B1B1B1
+        B1B1B1B1B1B1ADADB1B1B1B2C5A2659C9C9C9C9C9C9D9378CBCBB1B1B1B1B1B1
+        B1AE9855555555977DCEE2F3C9C9C9C9C9C9C9C8C8C8C8C8C8C9C9C9D8DE7B7B
+        7B7B7B7B7B7B7B7B7B7B7B50507B7B808A8B778778CBB1B1B1B1B1B1B1A89555
+        5555559972FFFFFF8E827F7B7B7B7B7B7B507B7B7D8A8A8DD47878B5B1B1B1B1
+        B1B1B1A85555555555D190EEE193C3CFD9CC8888B5B1B1B1B1B1B1B1A8555555
+        5555565997FDFC7B7B7B7B7B7B7B7B7B507C7D7FD5FFD3D9B6B3B1B1B1B1B1B1
+        B1ADA8A8A0A8A8968C7E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B81FD
+        7F7E7D7D807F7E7D80D5817F7D7E7E7E7E7F7F82FFEE11210D22210D220E230A
+        241416D6C3CFB3B1B1B1B1B1B1B1AEA05555555556565B62507B7B7B7B7B7B7B
+        507C7D7FD58F92CFB7B8B1B1B1B1B1B1B1B1ADAEAEAEADB1A99084D581818183
+        848ED378CCCCB1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7C
+        7F7C7C7C7C507B7B7B7B7B7B7B7B7B7C7C7C7E7E7E7E7E7FD54D8D8F8EFF93CB
+        CACAB1B1B1B1B1B1B1A895555555559991919177DDF78B7B7B7B7B7B7B7C7C50
+        7E8A8B85CF7878B5B1B1B1B1B1B1B1A855555555559DA3A569A4A2D294CDD0D0
+        B3B1B1B1B1B1B1AD9855555555565BBB90DD8D807C7B7B7B7B7B7B7B7B7B507C
+        808491D478BCB9B1B1B1B1B1B1B1A8A0A098A098617E7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7BD4939291FF84D57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        FDF0110E210D21220E22230A14151615C3AFB1B1B1B1B1B1B1B1A85555555556
+        565D9B507B7B7B7B7B7F82FF77656565A2C5BFD0CCB6B8B1B1B1B1B1B1B1ADAE
+        A8A8A8AEAAA4817C7B7B7B80E7F0EB88CCCCB1B1B1B1B1B1B1AE985555555597
+        7D7B7B7B7B7B7B7B7B7B7B507C507B7B7B7B7B7B7B7B7B7B7B7B7CD58C8C8BFA
+        F9F9F9F9F9FA7E8B51D5D288CBCCB1B1B1B1B1B1B1A89555555555AFD4D4CFD4
+        94EBEDEE8F8F8F8E8569686C7F8B51FFCF7888B5B1B1B1B1B1B1B1A855555555
+        558A8080818DD18E948887D6B1B1B1B1B1B1B1A0555555555658659292D2EEE5
+        DCF4E7E8E9E8E8E8E8E8EAEAE5EDD3C38875BCB8B1B1B1B1B1B1AEA098959595
+        977F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B86D49392D18E8C7C7B7B
+        7B7B7B7B7B7B7B7B7B7B7B507F020F210D21210D22230A241415161515B3B1B1
+        B1B1B1B1B1A89855555555565B9B507B7B7B7B7B746DA56B9D65A2C5C5C5BFD9
+        88BCBCB8B1B1B1B1B1B1B1AEA8A8A8A8A8A98C7E507B7B80D5F79288CCCCB1B1
+        B1B1B1B1B1AE9855555555977F7C7C7C7C7C7C7C7C7C7C7C7C5050507B7B7B7B
+        7B7B7B7B7BDED8E8E5ECE68D848484F7D55151F7848D9278CCCCB1B1B1B1B1B1
+        B1A89555555555AFD4CFCFCFD4949494949493D392D2908F729085D1D98888B5
+        B1B1B1B1B1B1B1A055555555557F7B7B7E8C8481918688B5B1B1B1B1B1AE9855
+        55555555569992D394D3D290DDDDFF8E8D83F68383838C81838F9194877575BA
+        B1B1B1B1B1B1AEA0955555555D7F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B86D49392D18E8C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0621210D220D22
+        220A240A14161515E0B1B1B1B1B1B1B1ADA05555555556599E507B7B7B7B7B7B
+        7B7B7C7D7F8C8590D177D293CF8875C1B1B1B1B1B1B1AEA8A0989898A096827F
+        7470AC9D6565D4CABCBCB1B1B1B1B1B1B1AE9855555555978C81818181818080
+        8080807F8A807E7E7D7C7C7C7C7C507C80818283F78F8F8EF74DFE8B7B7B7B80
+        8A8B77877878B1B1B1B1B1B1B1A8955555555599EEEDEBEBEDEEEEEDEB929177
+        D2D2D2D292D393D4887878B5B1B1B1B1B1B1B1A055555555557E7B7B7ED58C7D
+        8E93D0B5B1B1B1B1AE555555555555565C838FD1D2D18E838282828C8A7F80D5
+        8C8C82D5818DD2D487BCBCB6B1B1B1B1B1B1ADA0555555559669705353535370
+        7070707C50507B7B7B7B7B7B7B7BC3CFC5EBEDE6E97D7B7B7B7B7B7B7B7B7B7B
+        7B7B7C7E7E06210E210D21210E230A2415161515C7B1B1B1B1B1B1B1A8985555
+        5555565E507B7B7B7B7B7B7BD8EAE8E9E5ECEDEBEBEBD394C3CDCA75B9B1B1B1
+        B1AEA0955555555555559A7F7D8C8E919292CFCABCBCB1B1B1B1B1B1B1AE9855
+        555555A990FFFFFFFF8C8080808080807F7F7E7D7D74508974897C808DFFDDDD
+        DD9090DD8E8585848A7C7B808A8B77877878B1B1B1B1B1B1B1A895555555559A
+        7C7B50507B7B7B50D5F7F784848D8D8FD1D292D4878788B9B1B1B1B1B1B1ADA0
+        55555555557E7B7B7DFD807A8072D3B4B1B1B1B1955555555555565697646464
+        64629E9B9B9B9B677B7B7B50507C7D80D585D19487CACCCCB1B1B1B1B1B1ADA0
+        555555555AA5676666535353535353737373737B7B7B7B7B7B7BD0D9CF949392
+        77FF82807F7F808080808AFDD58ED1D2D2130D2121220D220E23241415161515
+        B8B1B1B1B1B1B1B1A855555555555C7C7B7B7B7B7B7C8082FF90D2D3D3929292
+        9191D29294C387CAB6B1B1B1B1A055555555555555555D719F69A465C5C5D075
+        7575B1B1B1B1B1B1B1AE9855555555A9949393939285828282828CD5518B8A80
+        7D7C7476BDBDBD76F3E9E9F2F2F2F2F2E9E9E9E9E8DFDEFDF2E5D2877878B1B1
+        B1B1B1B1B1A895555555559AFD8080808080808081F784848D8D8EFF91D29286
+        D0D0CDB9B1B1B1B1B1B1AE98555555555C7D7B7B7C7F7479BDFD8FB4B1B1B1A0
+        555555555555565661828282828A7E7D7D7D7D7E7D7C7C7D7E80818272D3D4D0
+        CACCCCCAB1B1B1B1B1B1B1A05555555555827F89897B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7D7C7C7C7EFDFD8A808A847277919191929292D3D393931E220D
+        210D210E23230A14151616E0B1B1B1B1B1B1B1AEA055555555555E507B7B7B7B
+        7BDEDFEAE9E6EDEBEBE1E1E1EDEEEEEDD293C3D088B3B1B1B1A0555555555555
+        55555BC2C4C4BBE1DBA2BFCABCBCB1B1B1B1B1B1B1AEA055555555B587CDCDCD
+        8693939393D3D3D392D291D1FF8D8CFD7D89BDBDBDBDBD767689897B7B7B7B7B
+        7B7B7B808A8B77877878B1B1B1B1B1B1B1A89555555555998E8D8D8D8D518A8A
+        8A8A8AFD8B81828D72919386CFC3D9B3B1B1B1B1B1B1AE985555555596696A6D
+        6D6D89797A7E84B1B1B1A8555555555555555656FF8D8D8DFF90D1919191D2ED
+        E1E1EDEE9CEDE1EBA2BFD9CC788888D6B1B1B1B1B1B1B1A0555555555584F7D5
+        517F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B736CA56B72
+        A4A3A3A37277D292D21E0D21220D21220A232414161616C6B1B1B1B1B1B1B1A8
+        95555555555B7C7B7B7B7B7B7B7B7B7B7B7B748B81818181F47DDE76897F8D91
+        D3A9B1B1A8985555555555555555559E6C6C6CA5A46BA278CBCBB1B1B1B1B1B1
+        B1AEA095559598B5757575BCCACB7878787878CB7888CDD086D493D2DDF78A7C
+        76BDBDBD767689897B7B7B7B7B7B7B808A8B77877878B1B1B1B1B1B1B1A89555
+        555555AFCFD49393D2A3A5ACA3A49D6B6BA4FF90929486D4D4D4BFB1B1B1B1B1
+        B1B1A855555555555D8C8A7F7C7C7679BD7FD597979797979797979797979797
+        7D7D7D7D8184FFDD909192D3D3D392D29292D393D4D988D0D9CFCFAFB1B1B1B1
+        B1B1ADA055555555557E8B8BFDFDFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B508084DD90D1D18F838B8BF7FFDDDDFF1E0D210D21210E23230A14
+        161616B9B1B1B1B1B1B1B1A855555555555E507B7B7B7B7B7B5374747474546A
+        8A8A8A80F94C4C89BD768A848FBBB1B1A0555555555555555556555E51D5D584
+        DD8ED378CB78B1B1B1B1B1B1B1AEA89898A0A8B7757575BCCCCB787878787878
+        78CBCBCBCCCCCBCDCF939185817E767676767689897B7B7B7B7B7B808A8B7788
+        CCCAB1B1B1B1B1B1B1A89855555555B7CB88CDD094D2D29165A2A265D393D4CF
+        D0D9CF949393A9B1B1B1B1B1B1B1A05555555555977C50507B50897ABD7C7D7D
+        7D7D7D7D7D7D7D7C7C7C50507C7C7E7F8A8B81D58C82838384848D8E7291D394
+        D9D0CFD49493C5B3B1B1B1B1B1B1ADA05555555555D7D7D7C4C4C4C4DCDF507B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7D7E7E7E8A8D90D2D2D2D2908E858FD1929292
+        ED1221220D210E220A0A2415161616B1B1B1B1B1B1B1ADA055555555556A7E50
+        7B7B507D7E8083848484848D8D8D8D8D8484F78CFD8080FD81D5979797979797
+        979797979797975E507B7B80838B77877878B1B1B1B1B1B1B1ADA8A0A8AEB1BA
+        B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7CCCCCACABC78D994D28E817E73898976
+        897B7B7B7B7B7B808A8B7787CBCBB1B1B1B1B1B1B1AE9855555598B67575BCBC
+        CB8887878787878878788887CD86D49493DBB1B1B1B1B1B1B1AE985555555555
+        5E507B7B7B7B7BBD767B7B7B7B7B7B7B7B7B7B507C7C7E7F8A818CF78D8D8383
+        F7848D8E72779293D4D9CDD0D986CFD494C5B3B1B1B1B1B1B1B1AE9855555555
+        5BDC7E7D7C7C7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B80FE8E
+        FFFFFFFFFF8FEEEDEB93C593E112210D210D2122242324151616E0B1B1B1B1B1
+        B1B1AE98555555555B686A6D7473737B7B746D6C6C6C71A58D4DFE4D4DF74D8B
+        FC7E8AFDFD7D7D7D7D7D7D7D7D7D7C7C7C5050505050508A838B77877878B1B1
+        B1B1B1B1B1B1AEA8AEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B3B9
+        B5B6BC88869377848B7D7C7B897B7B7B7B7B7B808A8B77877878B1B1B1B1B1B1
+        B1AEA09898A0A8B6757575BCCC78787878787878788887CDD086CF94AFB2B1B1
+        B1B1B1B1ADA05555555555559B5470707070706F7070707070707053747C7C7E
+        808BD5F785FFD177728E858FDD919293CF86CDCDCDD0D0D98686C3CFAFB2B1B1
+        B1B1B1B1B1B1A855555555555C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7BFD4D8F90909090909090D1777791770219210D22210D22
+        0A230A151616C1B1B1B1B1B1B1B1AE95555555555D8C807C7B7B7B7B7B7B7B7B
+        7B7B7B7D8C8C8CF78D7272848383F784F7807F7F7F7F7E7B7B7B7B7B7B7B7B7B
+        5050508A8C5177877878B1B1B1B1B1B1B1B1AEAEADB1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B3B7CCD0949185E9E7DF7DDEDEDFE8E5E6DD
+        EEEE94CBCCCBB1B1B1B1B1B1B1AEA8A0A0AEB1B67575BCCACC78787878787878
+        78888887B0B0A9B3B1B1B1B1B1B1B1B1A05555555555555C506F9F9F9F9F9F9F
+        6D6D70707070707C7D7FFD8C848F90D29292D291D292D3D4CFD0CDCDCDCDD0D0
+        D0D9D9D986B0A9B2B1B1B1B1B1B1B1B1B1AEA0555555555597507B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B939292929277727272728584848484848484
+        848572DDE6190D21210D210E242314151616C6B1B1B1B1B1B1B1A85555555555
+        978C8A7C7B7B7B7B7B7B7B7B7B7B7BDEDFDFDEDEC9DCDCC9C9C9C9C9C9747474
+        7070747B7B7B7B7B7B7B7B7B7B7B7B80D58B77877878B1B1B1B1B1B1B1B1ADAD
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B8B5D094
+        778E8CFD8A7F7F808A8B828E8FFF93CBCCCCB1B1B1B1B1B1B1ADA8A8AEB1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A855555555
+        5556565E5474676767679E67537B7B7B507C7D7F8B828E90D2D3D3D3D3D394CF
+        86CDCDCDCDCDD0D0D0D0D0D0D0B0B5B9B2B1B1B1B1B1B1B1B1B1B1B1B1A85555
+        5555555560507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B93A29C9D9D63
+        619F62676E737B7B7B7B7B7B7B736F6A0521210E21210E230A2324151616BAB1
+        B1B1B1B1B1B1A855555555559A8A7F7F7E7E7C505050507C7C7C7C7C7B7B7B7B
+        7B7B7B7B89897B7B7B7B7B7B7D7E7C50505050507B7B5050507B7B805182A278
+        CBCBB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B9B09390845181F47F7F7F8AF6DDD1D194CCCACAB1B1
+        B1B1B1B1B1B1AEAEADB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1AE985555555556565C8F85828A8A8AD583D57D7B7B507DFD848F
+        9077D2D2929394CFD9CDCDD0D0D0D0D0D0D0D0D0D9B0B5B9B2B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1A89855555555555B7C7B7B507E7F7F7F7F7F7F7F7F7F7F7E
+        7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B736D05210D21
+        210D210E242314161616B9B1B1B1B1B1B1B1A855555555557F7B7B7B7B7B7B7B
+        7B7B7B507E7F7F7F7D7B7B7B7B7B737373746D6C6C6C6D54537373737373737B
+        507C7C7C507B7B808BD5D3CCCACAB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B8B092A4A5C2C8C8C8
+        C8C2C49D9CEDD4CABCBCB1B1B1B1B1B1B1B1ADADB1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A05555555555565A65A2659D6BA3
+        A36969A569A3A3A4D293D4D4D4CFCF86D088CB78888887D0D0D0D0D0B0B5B9B3
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A8985555555555555E507B7FF7
+        FFDDDDDDDDDDDDDDDDDDDDFF84D5518B7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B5080838F901B0D22210D2221230A2314161616B9B1B1B1B1B1B1B1A055
+        555555557F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B80FD8BD278CCCAB1B1B1B1B1B1
+        B1B1B1B1B1ADADADAEAEAEADADADADADADADADB1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B2BFA29D63A79BBE669BA7BBBB9CBFCABCBCB1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A89855
+        555555555CBB72908F83818B8B8A8A7D7E7F80518D77929394D486CDD986D9D9
+        D9D9D0D0B0B5B9B2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA095
+        5555555556565B7C7B7B7CD54D4D4D4D4D4D824DF7848D8D8CFDFD8B7E507B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7DE8E6ECEE1321210D210D210E240A1416
+        1616B8B1B1B1B1B1B1ADA055555555A6F07C7D8A8283848EFF90D172FFFF7792
+        9277D1D1D1D1D1FF85858E8E8E82D5D5D5817E7B7B7B7B7B7B7B7D7D7D7C5080
+        8A8B778778CBB1B1B1B1B1B1B1B1B1AEA8A8A098955555555555555555555555
+        9598A0A0A8AEADB1B1B1B1B1B1B1B1B1B1B2DBDD8271747B7B7B7B8A69A494CC
+        CACAB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1ADA8955555555AA9DD826869A3A3A3A3A3A3A3A3A4A47290
+        D1D2D3D486CD8686CFCFCF86BFB5B9B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1AEA898555555555556565960507B7B7B8A8283F7848D848284
+        FF919293D4CFD9CD888891908FD57F7C7B7B7B7B7B7B7B7B7B7B7B7B7B507EDF
+        1E210D22210D22230A2314161616B1B1B1B1B1B1B1ADA055555555B319DC68A5
+        6969696969696B6B83F7DDD292EBEDEDEDEDEEEDEB93C5D4C3D4D4D4D4D493EB
+        EEDDFFFFFF7777FF8DD57C808A8B77877878B1B1B1B1B1B1B1B1AEA8A0985555
+        55555555555555555555555555555598A0A0A8AEADB1B1B1B1B1B1B1B1B1B3D4
+        659C9DA36A6D9F63BB9DD4CABCBCB1B1B1B1B1B1B1B1B1B1B1B1ADADADB1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8985555B5CCD09465EDED
+        EDE1E1E1E1E1E1E1E1E1EDD1D19294D0D9CFCFD4D4BFAFB3B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8A0955555555555555656565E7453
+        74706DA56B9D65A29494A29394CF86CD78CABC7575757B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B507FD5F7F71E220D210D21210E240A14161616B1B1B1B1B1B1
+        B1ADA055555555B32313D87C7C7C7C7D7F547B7B7B7B7B7CD5A5C2C2C2C2C4BB
+        9DE1A2C5BFBFBFBFBFBFC5EBEDEEFFFFFFD1FFF78C8A7B808A8B77877878B1B1
+        B1B1B1B1B1B1AEA0985555555555555555555555555555555555559598A0A8A8
+        AEADB1B1B1B1B1B1B1B1B1A9A29C9D8F8E8E8ED1D2D2CFBCBCBCB1B1B1B1B1B1
+        B1B1ADAEA8A8A09895555555555555555555555555555555959898A0A8A8AEAE
+        AEA8A0985557B9D6D99492908E8D8D8D8D8DF78C8B51837292D4CD86CF9494C5
+        A9B2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA8A89895555555
+        55555555555656589AF7518B8B7F7C7C8084DDD2D3D3D2D2D2D394CF86D087CB
+        CABC7B7B7B7B7B7B7B7B7B7B5050507B7B7B7B7B7B7C7C7D1221210E21210E23
+        242314161616B1B1B1B1B1B1B1ADA055555555B30E221B7B7B7B7B73536F6F6E
+        7373706AA5A3A3A3A3A49D65656565A2C5D4D4D4CFD49392D277D1D1D1D18FF7
+        8382818283849288CBCBB1B1B1B1B1B1B1ADA898555555555555555555555555
+        5555555555555595A0A8A8AEADB1B1B1B1B1B1B1B1B1B1B2DBD290FFFFFFFFD2
+        D291D4CCBCBCB1B1B1B1B1B1B1B1AEA8A0955555555555555555555555555555
+        555555555555559598A0A8A8A8A8A8A0A0A0A8B2B5D994927790FFFFFFFFFE8A
+        8A8C8FD2D4CD86D49494AFB2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        AEA8A0A095555555555555555555555555565B9A68FD7D7C7C7B7B7B7B7B7B6F
+        6C6C546F9E9E62626262646464617B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7BD8120D210D210D210E240E24161616B1B1B1B1B1B1B1ADA055555555B3
+        23220F1F7B7B7B7B7B7B7B7B7B508B517F7E7E7E7FD584FF7272DD91D3939393
+        93D3D2D19191919191EDEEECE6ECEEEDEDEDD4CCCACAB1B1B1B1B1B1B1ADA055
+        5555555555555555555555555555555555555598A0A8B1B1B1B1B1B1B1B1ADAE
+        AEAEADADB4F77F507B7B7B808A8B778778CBB1B1B1B1B1B1B1ADA8A095555555
+        555555555555555555555555555555555555555598A0A8A8A8A8A8A8A8AEB1B1
+        B1B99390827F7C7C7C507C7E518DD193D086D49493B4B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1AEA8A0989555555555555555555555555555555558978282
+        8384A5A5A5AC6D74737B7B7B7B7B7B73665F5F5F5F5F5F5E5E5E7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF119210D21220D21230A2314151616B1B1
+        B1B1B1B1B1B1A055555555B30A220D26F07E7E7E7FD583828F77929291DDFFFF
+        FFDDDD909090D1D2D39392D2908DD57E2A51D5D5D5D5D5515151518A8A8B7787
+        7878B1B1B1B1B1B1B1AEA055555555978B8080808080808A8B81AC696BBB99A9
+        ABB1B1B1B1B1B1B1B1B1B1AEA8A8A8A8AA63FD7C7B7B7B808A8B77877878B1B1
+        B1B1B1B1B1ADA898555555555555555555555555555555555555555555555555
+        98A0A8AEAEAEAEAEB1B1B1B1B1B1B4928DFD7C7B7B507C8A828F9286D9CF94C5
+        B4B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA8A8A098555555555555555555555555
+        5555555555555A97A3848484848D848484848C7F507B7B7B7B7B7B7B7B6DACA3
+        9D9CA2C5BFC37B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B08110E2121
+        0D21210E232224151616B3B1B1B1B1B1B1B1A855555555A623220D22111D6D6D
+        6D6AA5F2E6EEE1EBEDEEE6E5E5E5E5E5E5E5E5ECEDEDD2D277FF827F7FFD5151
+        D5828E8F8F8F8E84D58B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B
+        7B7B7B7B50507C7D80D5FFD386B7B8B1B1B1B1B1B1B1B1AEA8A0A0A0A899817C
+        7B7B7B80FD8B77877878B1B1B1B1B1B1B1AEA055555555555555555555555555
+        555555555555555555555598A0A8ADB1B1B1B1B1B1B1B1B1B1B1B1A9DDD57E50
+        7B507E51F79093CDCFD494B4B1B1B1B1B1B1B1B1B1B1B1B1A8A8A09555555555
+        555555555555555555555555555555595D6028F8F8F8F8F8F8F8F8F8F87B7B7B
+        7B7B7B7B7B7B7B7B7B7FF790D2D3D4CFD9CD7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B070F210D220D210D220A220A151616B9B1B1B1B1B1B1B1A895
+        555555550A22210D2113E88C8C8385FF8F8FFFD1FF8EF6FD7D7C7C7C7C7C7C7D
+        7E7E7E7D7D7D7D7D7D7D7C7C7C5050507B7BF58A8A8B77877878B1B1B1B1B1B1
+        B1AE9855555555978C81818181818A8282D57F7E8A84D29386CB75B9B1B1B1B1
+        B1B1B1ADA8A0A0A0A096D57D7B7B7B808B8B77877878B1B1B1B1B1B1B1AE9855
+        5555559AFD808080808080808080808A8AFD8BD583A499A9B9ADB1B1B1B1B1B1
+        B1B1B1B1B1B1B1B199F77F507B7C80828D77CFD0C3C3A9B1B1B1B1B1B1B1B1B1
+        B1AEA09855555555555555555555555555555555555555555C97607C50507B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507F82FF919293D47B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0521210D21210E21220A222415
+        1616B9B1B1B1B1B1B1B1A89855555555240E22220D0F13FFFFFFDD90DDFFFFFF
+        8F8E4DFD7B7B7B507C7D7E808AFD8A8A8A808080807F7E7D7C8989768976737F
+        8A8B77877878B1B1B1B1B1B1B1AE985555555597E7EAEAEAEAE8E6EEEEECE8F4
+        DCD79CEBD48775BCB1B1B1B1B1B1B1B1A8A098989898BB83826B83D583829278
+        CCCCB1B1B1B1B1B1B1A898555555559A7C73737B7B7B7B7B7B7B7B7B50507C7D
+        7F818592CFD6B9B1B1B1B1B1B1B1B1B1B1B1B1B1B38EFD7C7B7CFD848E92D086
+        CFBFB2B1B1B1B1B1B1B1B1AEA098555555555555555555555555555555555559
+        5C975E7C7C50507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7BD277FF838A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1B
+        210D220D21210D22230E23151616C6B1B1B1B1B1B1B1A89855555555E30E220D
+        21210FDB9494949493D391909090907284807C7C7D7F8B518C8CD581FD8A808A
+        807E7C89BD7A7A7ABD76767F8A8B77877878B1B1B1B1B1B1B1AE985555555597
+        7D7B7B7B7B7B7B7D7D7C7B7B7B7C8A84D2CFCA75B7B1B1B1B1B1B1B1A8A09555
+        5555A9C5BFBFBFBFBFBFD0BC75BCB1B1B1B1B1B1B1A8955555555599D57F7C7B
+        7B7B7B7B7B7B7B7B7B7B7B507C7ED57293CD75BAB1B1B1B1B1B1B1B1ADADADAD
+        AD99517C7C8A84DD9093CD86CFA9B1B1B1B1B1B1B1B1A8A05555555555555555
+        555555555555555B5D5E627C7C7C7C7D7E7E7E7F7F7F7F7F7E7E7E7D7C7C507B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B1B0D2121210D21220E230D23141616C1B1B1B1B1B1
+        B1B1AEA055555555C7230E22220D210FE4D1D1779C72A3A3A4A4A4A46B696C6D
+        7F81828D8E8E8584F7F7F784848C8A7C7A7979797ABD7680FD8B77877878B1B1
+        B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7E8291CFCB75
+        CAB1B1B1B1B1B1B1AEA095555555A992D394D4D4CFCFD0BCBCBCB1B1B1B1B1B1
+        B1A895555555559A8B828D8481FDFDFD8A7D7B507C7B7B7B7B7C8A8D9286CA75
+        B9B1B1B1B1B1B1B1AEA8A8A8A896827E7FE5EEE1EBCFCD8686B3B1B1B1B1B1B1
+        B1A8985555555555555555555555555C975E9E7D7D7D7D7D818E7285F7F783F7
+        F7F7F7848382D58A7C897676767689897B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B13210E210D220D210E
+        23210E141616E0B1B1B1B1B1B1B1AEA095555555C724230E21210D2211087E81
+        82F6F6848585858E85F6838F77D2D2D39494CFCFD4D4D4D4949393D28F8C7DBD
+        BD767B808B8B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7E8C8F9387BCBCB3B1B1B1B1B1B1ADA055555555969394CF86D9
+        D0D078757575B1B1B1B1B1B1B1A895555555559AF2E6EEEEEEEEEEEEEEE6F2F7
+        84D5802A2AFC8BF7D2CFCC75B6B1B1B1B1B1B1B1AEA0A0A0A0A0617E7B6C699D
+        72D4D0D9B0B1B1B1B1B1B1B1AEA05555555555555555595C975E7C7C50507B7B
+        7B7B507C7F8BA3727277D2A2A2A2919C9DA4A56A6C6D6D6D7073767B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7C1E0D210D21210D2121220D220A151616B1B1B1B1B1B1B1ADA898555595
+        A60A230E220E210D211EF37DDFDFDFEAEAEAEAE8DCDCF0ECE1EBC5C3D087D0D0
+        D0CD87887887D9949C69AC9F7C7B7B80518B77877878B1B1B1B1B1B1B1AE9855
+        555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7D8A8CD2D0CACAB9B1B1B1B1B1B1
+        ADA0555555559691D1D2D3D48686877575BCB1B1B1B1B1B1B1A895555555559A
+        9F9F9F9F6C6C9F9F9F6CDF8B8382FD80808051F777D4CB75BCB8B1B1B1B1B1B1
+        AEA098959595977F7C818E77DDCFCDD0B5B1B1B1B1B1B1B1A855555555555659
+        5D607C7C50507B7B7B7B7B7B7B7B507E8B849293D4CFD49493D392D392919085
+        8CD581807C767B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7C7ED5120D21210E21210E210E21210A151616B8
+        B1B1B1B1B1B1B1A8A09895989804240E22220D210D22137B7B7B7B7B7B7B7B7B
+        507D84D19293C38887D0D9D9CD88CCCACABC7578D9CFD4C5C5D4CFC3D9C3CD75
+        7575B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7D8A
+        D577D9CCCCB5B1B1B1B1B1B1B1A05555555555917791D293CFCF87757575B1B1
+        B1B1B1B1B1A89555555555AF659DA3689F6A68A5A5A5A3A36B6B6B696969A372
+        9C9488BCBCB9B1B1B1B1B1B1AEA0955555555DFD7F818ED27786CDCDB9B1B1B1
+        B1B1B1AE9855555555565B6250507B7B7B7B7B7B7B7B7B7B7B7B7C8A8377D486
+        8686D9D9D0CDCDCDD08694D2FF8EF7D5E7DFDEDE7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B736F6F6F676767676767676D6D6AA3A4A4A3A3F21222210D21
+        0D210D21220C2123141616BAB1B1B1B1B1B1B1AEA0989898A0C62423220E2222
+        210D0F1B7B7B7B7B7B7B7B7B507EA39CA2D4CDCDC3CFB5B5B5B5B5B5B5B5B7B5
+        B5B5A9AF94CF86D9CDD9CDBC7575B1B1B1B1B1B1B1AE9855555555977D7B7B7B
+        7B7B7B7B7B7B7B7B7B507E8B8C77D9CBCBB5B1B1B1B1B1B1B1A055555555557F
+        507E7ED5FF8E93CCCACAB1B1B1B1B1B1B1A89555555555998F83FD7E80D58282
+        828C8CFDFD838E8E8F8FDDDD779488BCCAB5B1B1B1B1B1B1ADA0555555555C7F
+        7B7F8477908687CDB9B1B1B1B1B1B1A895555555555B7C507B7B7B7B7B7B7B7B
+        7B7B7B7B7B507ED58FD294D988788878CBCCCACACACACD94D18E8D83FDFD8A7F
+        7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7E7F8181ACF78484848484A49D6B
+        A568686A706FF3110D21210E21210E210E210C23141516C1B1B1B1B1B1B1B1AD
+        A8A0A0A0A8B814240A220E220D212119077B7C7B7B7B7B507D8A83D1938688D0
+        86AFB1B1B1B1B1B1B1B1B1B1B1B1B1A994D486D087D9CDBC7575B1B1B1B1B1B1
+        B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B507C8AD5F7D2CD8888B5B1B1
+        B1B1B1B1B1A055555555557E7D7D7D8B85D577877878B1B1B1B1B1B1B1A89555
+        5555559A7D7F7F8B51D5D5D57F7C7C507CD58DDD91919292929478CACCB5B1B1
+        B1B1B1B1ADA0555555555A7F7B7FF79190868887B9B1B1B1B1B1B1A855555555
+        55A7507B7B7B7B7B7B7B7B7B7B7B7B7B507C8A838E7794CD86CF86D9CD8778CB
+        CBCCCBCFD29084ACA5A36B696A70537373737373737373737373737B7B7B7474
+        7474746D6C6C6C6C71A5A56A6D6D6D6D507B0811210E210D210D21210D21200E
+        24151616B1B1B1B1B1B1B1B1A8A8A0A0A8AEE01424230E22220E212119F17B7B
+        7B507C7D808C8E779387D086CFB4B1B1B1B1B1B1B1B1B1B1B1B1A89ADFDFDCEE
+        EBE1C5CBCCCCB1B1B1B1B1B1B1AE9855555555978A7F808A8282828A7F7C5050
+        7C7ED584FF938787CDB5B1B1B1B1B1B1ADA055555555557E7B7B7B80848B7787
+        7878B1B1B1B1B1B1B1A895555555559A7C7B7BF9F9F97D7C7B7B7B7B7B7F8A8B
+        518C8DDD7293888787B5B1B1B1B1B1B1ADA055555555557F7B7E839190867888
+        B1B1B1B1B1B1B1A0555555555CFD7C507B7B7B7B7B7B7B7B7B5353747C7F8184
+        72D38686CFBFB4B9B9B9B9B9B9B9B9B9B4B4B47E7C8A8C807C7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0826
+        0D21210E21210E21210D200C23141616B9B1B1B1B1B1B1B1AEA8A8A8A8ADB915
+        1424230A220E210D211ED8507C7D7F8B8C8E77D3CFD9CFD4C5B2B1B1B1B1B1B1
+        B1B1B1B1AE98559B7B7B7B80845177877878B1B1B1B1B1B1B1AE985555555597
+        FF8E8EF7F7F7F74D827F7E7E8A828E90D2CFD0D0D0B9B1B1B1B1B1B1ADA05555
+        55555A7D7B7B7B80848B77877878B1B1B1B1B1B1B1A895555555559AFD8C8E8E
+        8E8FA469716D7D7C6D9F6A68A5A3729091CFCDD0CDB5B1B1B1B1B1B1ADA05555
+        5555557E7B7E8277FFCF7878B1B1B1B1B1B1B1A05555555597838A7D7C507B7B
+        7B73C0C0D86D9F6A6869A49CA2CFD0CF94AFB1B1B1B1B1B1B1B1B1B1B1B1967C
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B070F21210D21210D210D210D20200E241516C1B1B1B1
+        B1B1B1B1ADAEA8A8AEB1B1C6151414240A23220E222213808A518C848F91D3D4
+        86D49494A9B1B1B1B1B1B1B1B1B1B1A055555B7C7B7B7B80848B7787CBCBB1B1
+        B1B1B1B1B1AE9855555555A977D18FF7828251D5D58CF7E6EEEB9394C3CD8686
+        86B3B1B1B1B1B1B1AE98555555555C7C7B7B7B80848B7787CBCBB1B1B1B1B1B1
+        B1A89555555555AFCFCF9493D3D3929172858482818B83848E90919193D08686
+        86B9B1B1B1B1B1B1ADA055555555557D7B7DD5908594CBCBB8B1B1B1B1B1B1A0
+        55555555A990F7518A7F7D7C7C7C7C7D7E7E80FDAC8472D293D0CFD493A9B1B1
+        B1B1B1B1B1B1B1B1B1A85C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507F1B210D220D220D212221
+        0D210C202224151616B1B1B1B1B1B1B1B1AEA8A8AEB1B1B8E015151414142323
+        0E23181BD582848F77D3CF86D49493C5B2B1B1B1B1B1B1B1B1A8555555555D50
+        7B7B7B80838B7787CBCBB1B1B1B1B1B1B1AE9855555555A9D1DDFFFFFF8C8080
+        FD8BD5828D909294D9CFCFCFBFB1B1B1B1B1B1B1A855555555555D7C7B7B7B80
+        838B9178CACAB1B1B1B1B1B1B1A89555555555AFCF86CF9493659C9DA49D9C9C
+        9C9C6565A2C5CF8688CDD0D0D0B1B1B1B1B1B1B1AE98555555555B7C7B7C8B8F
+        F7D3CBCCB9B1B1B1B1B1B1A895555555B493D2FF8D838C807E7F7F8A8B81D582
+        8D72D29386CFD49493B3B1B1B1B1B1B1B1B1B1B1A0555D507B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B501B0D21210D21210D210D21212109200A141516BAB1B1B1B1B1B1B1ADAEAE
+        ADB1B1B1B91616151515140A24240A041B85DDD294D986D4949393B4B1B1B1B1
+        B1B1B1AD985555555555A77E7E7D7B80828B77877878B1B1B1B1B1B1B1AE9855
+        555555A99493939392858283F7848EDD9193CFD9CF9494D4A9B1B1B1B1B1B1B1
+        A8555555555597F5DFF4DCF2E6E5D3CBCACAB1B1B1B1B1B1B1A89855555555AF
+        939393939184828C8C82A49C6565A2A294CFCDCC7887CDCDB5B1B1B1B1B1B1B1
+        A855555555555C7C7B7C8A848CD2CDCAB9B1B1B1B1B1B1A898959598A1D0CF93
+        929172D58A718AFD818C828D90D294D9CF949493A9B1B1B1B1B1B1B1B1B1A855
+        55555E507B7B7B7C7D7D7D7D7D7D7D7D7E7E7F7FFC8A8A8A7D7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B13210D22210D22210D220D210D20200E2415
+        1616B1B1B1B1B1B1B1B1ADADADB1B1B1B1B91616161615151514141414D4CFD0
+        CDD0D9CFD494B4B1B1B1B1B1B1B1ADA055555555555C507B7B7B7B808C8B7787
+        7878B1B1B1B1B1B1B1AEA055555555B587878787869493939394D486D087D086
+        D49494DBB1B1B1B1B1B1B1AEA055555555555E507B7B7B808C8B77877878B1B1
+        B1B1B1B1B1A89855555555B7CDCDCDD0CF93939393939494D4CFC3D9CD7888D0
+        86D4D4BFB2B1B1B1B1B1B1B1A85555555555976DC9C99FE5689D86CAB5B1B1B1
+        B1B1B1AEA0A0A0A8AEB5CBD086CF9391728E8D8D8E7277929486D086D49493DB
+        B2B1B1B1B1B1B1B1AE9555555555627B7B7D51858E8E8F8F8F8F8F8FD192D393
+        D4CFD9CDCDCD7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1E0D21210D21
+        210D21210D21210C200C23141516BAB1B1B1B1B1B1B1B1ADB1B1B1B1B1B1B8E0
+        1616161616161616161687CDD986CFCFC5B4B1B1B1B1B1B1B1B1A85555555555
+        555E507B7B7B7B80818B77877878B1B1B1B1B1B1B1AEA095559598B775757575
+        75BCBCBCCACACCCB87CDD0C3D494DBB2B1B1B1B1B1B1B1A89555555555597C7B
+        7B7B7B80518B77877878B1B1B1B1B1B1B1AEA0555595A0B6757575BCCACB7878
+        78787878CBCCCC7887CDD9CFD494DBB3B1B1B1B1B1B1B1AE9855555555555E50
+        7B507D8B7EF794CBB6B1B1B1B1B1B1ADA8A8A8ADB1B8B675CACC87D9CFD494D4
+        D4CFD987CDD086CFCFD4BFB3B1B1B1B1B1B1B1A855555555555B7C7B7B7B7B7B
+        7B7B7B7E7E7E7D7E8B84DD91D394CFD9CD887B7B7B7B7B7B507D7E7E7E7D7C7C
+        7C7C507B7B7B12210E210D220D210E21210D210D20200E24141616B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1BA16161616161616161616D0D986CFAFB3B1B1B1
+        B1B1B1B1B1A89855555555555C507B7B7B7B7B808B8B77877878B1B1B1B1B1B1
+        B1AEA89898A0A8B7757575BCCCCBCBCBCBCCCCCB888787D0B0B4B1B1B1B1B1B1
+        B1B1ADA055555555555C507B7B7C8A8D8F85D2877878B1B1B1B1B1B1B1AEA098
+        98A0AEB6757575BCCC787878787878787878788887CDD986CFAFB2B1B1B1B1B1
+        B1B1B1A85555555555597C7B7B7B7C7F7B8B92D0BCB8B1B1B1B1B1B1AEA8AEB1
+        B1B1B8B77575BCBCCACACCCB788887CDD0D986CFD4AFB2B1B1B1B1B1B1B1AE98
+        555555555597507B7B7B7B7373537068A5686A6A68A39D65A2C5C3D9CD788484
+        8484859091D2D2D2D2D291D18FD57E7B7BF3120D21210D21210D210D220D2121
+        2009200A141516C1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1BAC116161616
+        161616CAB0A9B3B1B1B1B1B1B1B1B1B1AE985555555556565E74DEDEDEDEDE80
+        FD8B77877878B1B1B1B1B1B1B1ADA8A0A8AEB1BAB6B6B6B6B7B7B7B7B7B7B7B7
+        B0B5B9B3B1B1B1B1B1B1B1B1B1B1A895555555555599929190DDDD908FF7D288
+        7878B1B1B1B1B1B1B1ADA8A0A8ADB1B7B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7
+        B7B0B5B9B2B1B1B1B1B1B1B1B1B1AE9855555555555D745353536D71737DFFD4
+        CCBAB1B1B1B1B1B1ADAEADB1B1B1B1B1B9B7BCBCCACACCCB788887CDD0D9C3AF
+        B4B1B1B1B1B1B1B1B1B1A05555555555599E7B7B7B7B7B7B73669E686969696B
+        9D65A2C5D4BFC3D087787B7B7B7B7B7B50505050507E7E7E7B7B7B7B7BF31122
+        0D21220D2122210D21210D210C20200E24141516B9B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B8B9B9B9B9B8B1B1B1B1B1B1B1B1B1B1B1B1AEA0555555
+        5556565D7474676767709E6869A3A278CB78B1B1B1B1B1B1B1B1AEA8AEB1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AE985555555555
+        5A92D2D1DD8F8EDD858C91887878B1B1B1B1B1B1B1ADA8A8AEB1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA05555555555
+        555E6D6868686B72858ED2CF88BCB1B1B1B1B1B1B1ADB1B1B1B1B1B1B1B1B1B9
+        B5B5B7B7B7B7B7B5B5B9B1B1B1B1B1B1B1B1B1B1B1A855555555555597746D6D
+        6D6D6D6CA569A3A49DA4698383F7848D8DFD7D7D7E7F7B7B7B7B7B7B7B7B7B7B
+        73746C6C7074737373F1110D210D21210D210D21210E210D212109210E241415
+        15B8B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1AE985555555556565B9E50507D7E7F8C8E91D292D4CABCCAB1B1
+        B1B1B1B1B1B1AEAEADB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1AEA0555555555555977FF4EAE7EAEAF2F2E8E178CCCBB1B1B1B1B1B1
+        B1B1AEAEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1ADA85555555555555C507B7D7D7ED58D8383FFD3D9CABAB1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        A85555555556565A6281858E8E8E8E8FD1777791777284D5D5D5D5D57F7C7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B508080807F7F7F7F070F21210E210D220D210E
+        21210D21210C2021220A241415E0B1B1B1B1B1B1ADADADB1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A8985555555556565960507B7B7B7B
+        7B7B7B8BD5D5D288CCCBB1B1B1B1B1B1B1B1ADADB1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA05555555556565B7C7B7B7B7B7B7BF1
+        EAE7E178CCCCB1B1B1B1B1B1B1B1ADB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA0555555555556566082E6E5F2E6EEE1
+        EDEDE193D988CAB8B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1A0555555555656565E507B7B7B7B7B7B7B7B7E8BFD
+        7EF9F84C4C4C4C4C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7E82828CD5D5D5
+        D5020F210D210D2121210D21210D210E0D210C200D220A241415C1B1B1B1B1B1
+        B1AEAEAEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA0555555
+        555556565960507B7B7B7B7B7B7B7B808A8B7787CBCCB1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA89855555555
+        56565660507B7B7B7B7B7B8AFD8192CBCACAB1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A89855555555
+        555656978C828CFD7DEAE8E9E8E8E8E6E1C5C3B5B1B1B1B1B1B1ADADB1B1B1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AE98555555555656569750
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7E7E7E7E7E7F
+        E8E9E6EEEDEDEDEEE5E9E8E8E81B210D2221210E210D22210D22212121210D21
+        210E23230A1415C1B1B1B1B1B1AEA8A8A8AEADB1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1B1B1AEA05555555555555656595E507B7B7B7B7B7B7B7B7B808080D1D0
+        78CBB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1AEA09855555555555656565E507B7B7B7B7B7B7B808080D1CDCBCBB1B1
+        B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+        B1B1B1AEA89855555555555556565C6A6A6A6A6A9F6D6D6D706F8184D192D3D4
+        B5B1B1B1B1B1AEA8AEAEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AE
+        A055555555555656565D507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7BD5D5D5D5D5D58C8C838F77D292D2DD848A80801B21210D210D21
+        0D21210D210D210D220D21210C210E230A241414E0B8B1B1B1ADA8A8A8A8A8A8
+        A8AEB1B1B1B1B1B1B1B1B1B1B1ADA8A098555555555555555656589A07070706
+        07070707070707060606E4D9CACAB1B1B1B1B1B1A8A8A8A8A8A8A8A8A8AEAEAE
+        ADADADADADADADAEAEAEA8A8A0A0985555555555555556565697070707070707
+        070707060606E4D9CACAB1B1B1B1B1B1A8A8A8A8A8A8A8A8AEAEAEAEADADADAD
+        ADADADADADADADADAEAEA8A8A0A098555555555555555556565B060606060606
+        060707070707070702698FD294B9B1B1B1B1AEA8A8A0A8A8AEB1B1B1B1B1B1B1
+        B1B1B1B1B1B1B1B1AEA0985555555555555656565D507B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C7C7C7C7C7C7C7C8084DDDD85
+        FD7D7B7B7B130D21220D210E21210E21210E21210D210D21210C2122220A2324
+        14E0B3B1B1B1AEA8A0A0989898A0A0A0A0A8A8A8A8A0A0989555555555555555
+        5555555656B303100F0F0F0F0F0F0F0F0F0F0F18180F04151616B1B1B1B1B1A0
+        5555555555555555555555555555555555555555555555555555555555555555
+        55555656C7100F0F0F0F0F0F0F0F0F18180F04151616B1B1B1B1B1A055555555
+        5555555555555555555555555555555555555555555555555555555555555555
+        55555656B303100F0F0F0F0F0F0F0F0F0F0F0F0F1005D58DD1D3A9B1B1B1ADA8
+        A0A098989898A0A0A8A8A8AEAEAEA8A8A0A09855555555555555555555565697
+        E8DF7B7B7B7B7B7B7B7B7B7C7D7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1321210D2121210D210D210D21210D
+        220D21210D210D220E220E230A2414C6B8B1AEA8A0A098955555555555555555
+        55555555555555555555555555555559C70E22220D2122210D2122210D210D22
+        220922141516B1B1B1B1AE555555555555555555555555555555555555555555
+        5555555555555555555555555556A1E30E21210E2121220D21220D2222092214
+        1516B1B1B1B1AE55555555555555555555555555555555555555555555555555
+        555555555555555555555555555556C72222220D2121220D2121210D22210C21
+        2122DFFD828F91AFB2B1B1A8A8A0989555555555555555555555555555555555
+        5555555555555555565AAF9494D3D290F7807E8AFD51F7F7FD7E7D7D7D7D7B7B
+        7B7B7B7B7B7B7B7B7B7BD4D4D494D3D29085FD7D7B7B7B7B7B7B7B7B7B120D22
+        210D220D21220D21220D21210D21220D2121210D21220E22230A242404C7AEA8
+        A8A09895555555555555555555555555555555555555555555555D621B21210D
+        210D210D210D210D21210D220C200B231414B1B1B1B1A0555555555555555555
+        55555555555555555555555555555555555555555555555598C70F220D210D21
+        0D210D210D210D220C200B231414B1B1B1B1A055555555555555555555555555
+        55555555555555555555555555555555555555555555555555B9EF220D210D21
+        0D210D210E210D210D210D210D221B7D7F81838F9CA9ADA8A8A0989555555555
+        5555555555555555555555555555555555555558979CD2D1FF4DFD7C7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B86CFD4D4D494939277D1
+        D1FF828A80808080F4120D210D210D21210D21210D210D22210D210D210E210D
+        220D22220E220E230A2404C7AAA0989555555555555555555555555555555555
+        555555585D625050F11217261719172601260317032603171917110F1A04B1B1
+        B1A8555555555555555555555555555555555555555555555555555555555555
+        5555A6C7E3170F012617190F1703170326012603170117012704B1B1B1A85555
+        5555555555555555555555555555555555555555555555555555555555555555
+        5555A1C701032601260F110F26012617110F111719171917110F11DE7C7E8081
+        828DBBA9A1A0989555555555555555555555555555555555555555555558979C
+        9192D393D3D2D1D190DD8F8582D551807C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7F7F7E7E51848FFF8F8F8F8F8FE611210D22210D220D21220D
+        21210D210D22210D21210D2121210D22220E22181823230A24C6B9A055555555
+        555555555555555555555555A1B9C722027F507B7BDEF1F1F1F1F1F1F1F1F1F3
+        F3F3F3F3E22525F3E9E5B1B1A898555555555555555555555555555555555555
+        5555555555555555555B5C5D97A7F2E6EEEDEBEBEBEBEDECE6E5F2F2F2F2F2F2
+        E7DA25F3E9E5B1B1A89855555555555555555555555555555555555555555555
+        55555555555555555596965D97BBE6E6E6E6E6E9E7EAEAEAE7F1F1F3F3F3F3F3
+        F3F3F3F3F3F3F37B50507C7D7F8A518284995D5A555555555555555555555555
+        5555555555555A5D9A8C84FFD1929394D49494949494D4D4D4D49392778F8451
+        7E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B536C9F9F6A69A49C65D2D2D2D2D2
+        EE110E21210D21210D210D210E21210E21210D22210D220D210E210D21220D1E
+        12100E230E23230AE3C7C7B3B3A155555555A6B3B9C7C7EF22220E210F008E8E
+        85F78E8F8F8E858D84848D848A7C7C7CBD7A7A897F7F8080808080818D8E8E85
+        858585858585858E8D828C8CFD8080807F7F7F7E7D7C7C50507D824DF78DFFFF
+        FFFFFF85FD7D7C7C7C7C7C7CBD7A7A897F7F8080808080808080808080808080
+        808080808080808080808080808080807F80F7858F8E858D8D8D84FF77929292
+        92D39393D39277728F8F8F8F8F8F8E8C7F507B7B7B7B7B50507C7D7E7182A49D
+        BB99975D96965A5555555558965C5D975E627C7C8C8D729090D1779292929292
+        919192D3D392778F817D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8C
+        8282838ED192939291D1D1D1021121210D220D2122210D21210D210D210D2121
+        0D21210D21210D210D2121131F1E22220E220E220E23230E23230E23220E220E
+        220E220D220D21210D19E1EBEBEBEBEBEBEDECE5E9E9E5E6F2D5517F7C7A7A76
+        7B7D7B7B7B7F82FF909090FFFFFFFFFFFFFFFF90FFF74D4D817D7B7B507E807F
+        7E7E7E7E80828F848282F7F7F7F782807C7B7B7B7B7B7B7B767A7A767B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73D8C9C9C9C99EC8DCC2C2
+        C2C2C8C8C8C9BE679F8C828D6BA4A46B6BA3A3696969696969696971747B7B7B
+        7B7B7B7B7B7B7B50507C7C7D7E7E7F7F7F7F7F7F7F7F7E7E7D7C7C50507B7B53
+        6DACA569696969A49D9C9C9CA4A3F7848483828A7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B507F828F8F8FFF90919291FF8DF782060F0D220D21210D
+        210E21210E210D2221220D210E210D21220D220D21210D13251F11210D212121
+        210D21220D220D210E210D2221210E2121210D210D2113A49D9D9D9D9DA4A369
+        696968FDF54C4C7B7676767B7B7B7B7B7B7DFE8EDD90D1D2929292929292D2D3
+        92D2D2D29172A36A6C6A6A6D7474BEBEBE6770747B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7676767B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7D82848D8D8D8FD177777777D18F8E8E8E85858E8FFF909090DD8E838C8C8C
+        8C8C8C8C8C8CD57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74679E6C68646161616161646464646464
+        6A676E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF5F5F5F5F57D7E7B
+        7B7B7B7B1F0F210D210D21210D210D210D21210D210D21210D21220D21210D21
+        220D21137B7B070F210D220D210E210D2121210D2121210D210D210D210E2122
+        0D210F1B8D85858585858D8EDD90858C8A2A7E7C50767B7B7B7B7B7B7B7D8282
+        8BFD828585838383838385ECEE72DDFF2DFE4629DFF37B7B7B7BDADADADA737B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B89767B7B7B7B7B7B7B7B7B7B7B7B7B7D
+        818C8C848E8FD1D1D1908F83838485858E85F68B8B81818A7E7D7B7B7B7B7B7B
+        7B7D8A82F7F7F7827F7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7C7C7C7C7D808B807D507B7B7B7B7B7B7B7B7B7B7B7F8C8D90
+        90D1D17777777777777777777790858B7D7B7B7B7B7B7B507FD58E90D2927B7B
+        7B7B7BDEF3F3F3F3F3F3F3DE7B7B7B7B1B210D22210E210E21210E21210E210D
+        22210D22210D210D210D22210D210D1E7B7B7B1B21210D21210D21210D210E21
+        0D220D210E21210E21210D21210E210F0750505050507C8A8DFF2B3535354343
+        467C7C7C7C7C7C7D818EA4696A6D6D6D6E666666665235303A38382F342F2F2F
+        38383A3B3E3DC8DCC2E7DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B897B7B7B
+        7B7B3639393939393B4C7B8AFE85A4E41E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
+        1E13D87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1B1E1E1E1E1E1E
+        1E1E1E1E13087B7B74737374709E9E9E9E9F64636363636363BB63A56A9F7170
+        747B7B7B7B7B7B507F828FD1777792D3D3D3D3939393939393D3E1EEE6DC7D7B
+        7B7B7B7B7B7B7B7B7B7B7B736EBE67679B9B9B9B9B9B9B676FC06F70130D210D
+        21210D210D21210D2121210D210D210D21220D21210D210D21220D127B7B7BF3
+        1E0D210E21210D22210D21210D21210D210D21210D220D210D2121210FF17B7B
+        7B7B7B7B6FD874393F343F342F3E7FD5F7F7848F779291DD8DF7F78351FDFD46
+        3A2F3F31323132313231323132313231313F383935297E7C7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3931323132313E7B7EFDF2E5EC130F0D21
+        21210D21210D210D22210D21210D11F37B7B7B7B7B7B7B7B7B7B7B7B7B7B737B
+        7B7B7B7B7B1F0D0D21210E210D21210D21117B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDFDFDFEADC
+        E8E8E8E8DCE77D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B666666BEBEBEBEBEBEBE
+        BEBEBEBEBEBEBEC913210D21210D2122210D220D210E210D22210D22210D2121
+        0E21210E210D21127B7B7B7B1D1921210D22210D210D210E21220D210E21210E
+        210D2121210E210D2211F37B7B7B7B7BC0CE7B493F323132313F367BF8F8F87E
+        51848483518B8B8B807C482F3132313231323132313231323132313231323132
+        333439417B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C2F323132
+        313F417B7C808A8C8EE4110D220D210E210E21210D21210D22210D26057C7070
+        6D6D6D6D6D68696969A56C6F7B7B7B7B7B7B2122210D210D21220D21210DF37B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1221220D22210D210D21210D
+        21210D21210D21210D21220D210D2121210D21127B7B7B7B7B050D210D210D21
+        220D21210D210D21210D21210D210E210D21210D212113E7FDFDF4F57B7B7B7B
+        41323132313234507C5050706A69A3A3A3A3A3A3684F40313231323132313231
+        323132313231323132313231323132332F3B858FFF908F8F8F8ED57F7E7E7E7E
+        7E7D7B7B7B7B7B7B3634313231323449706C6C6CA56BEC1E0D21210D21210D22
+        0D210E210D21220D0F1BD584FF7272729091D2D2D29190848A7E7C505050130D
+        210E21210D210D210E21077B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B73706D6D7074537B7B7B7B7B7B7B7B7B73737B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        120D210D210D220D21210D22210D220D210E210D220D210D21210D220D222112
+        7B7B7B7B7B7B1321210D22210D21210D210D22210D22210D22210D21210D2122
+        0D210E13FF8F8FF77E7B7B7B7B3E3132323132347C7B7B7B7B7B7B7B7B7B7353
+        533E3231323132313231313231333F3F343F343F3F3F3331323231323132333B
+        8CFD7D7C7C7C507B7B7B7B50507B7B7B7B7B7B7B7E413F313231322F47777790
+        91D393921B0F0D21210E2121210D210D21210D210D211181848D8D8D8EFF90D1
+        D1D190858C8C8C8282828B212121210E21210E21212111DE7B7B7B7B7B7BDEDE
+        DEDEDEDEDEDEDEDEDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDEDEDEDE
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B507C7C7C7C7C7C7C7B7BF311210E21210D21210E210D210D21210D21210D21
+        210D22210D22210D210D21127B7B7B7B7B7BF11121210D21220D210E21210D21
+        0D210D210D21220D21220D210D21210F1FFAF9F87B7B7B7B7B7B3A3131323132
+        3A7B7B7B7B7B7B7B7B7B7B7B7B3B313231323132313233403B364C7B7B7B7B7B
+        4C49413B402F33323132313240487B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        50503B3F323132313AF78D8385DD908F8E0219210D210D210E2121220D220D21
+        210D2211EE9191908E6969696969696A6D6AA56B6B6B6B120E210D210D21210D
+        220D21EC9C9C9D6B6B6B9DA4A4A4A4A46BA3F7F682817D7B7B7B5050507B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B746D68A5A5A5A5696B69A5E9190D21210D21220D
+        21210D2221210E21210E21210E21210D210D21210D2221127B7B7B7B7B7B7B08
+        0F0E210D210D2121210E2121220D21220D210D210D210D2121220D210F085050
+        505050505050502F32313231323E747B7B7B7B7B7B7B7B7B4C39323132313231
+        32343B4C7B7B7D518F90D1D1D1EEE6E8EA2A3E393432313231333A2E7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3A33323132313B7B7B7B7B74747474D813
+        0F21220D21210D210D2121220D210D210FE48F8F8E838B8A8A8A8A8A8AFD8B8C
+        7E7D7D1D0D21210D21220D210D21211B8F7272FFFF7277D2EBEBEBEBEBEBEDEE
+        EEECECE5E77DD87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7C8A8372779293D4CF7B7B507E7F7E7EFDFD8A808A828E
+        909090EE11210E210D210D210D22210D210D210D210D210D210D21210E210D21
+        0D210D127B7B7B7B7B7B7B7B0521210E21210E210D210D210D210D2121220D21
+        210E210D210D21210D11F17B7B7B7B7B7B7B7B493F323132313F8CFD7D7C7C7C
+        7C7C7C7C7C3E3132313231323F3E7B7B7B7B7B7B507C7C7D8A83E9DCF1F3F3F3
+        433A3F313231323936DEDEDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4939313231
+        323F417B7B7B7B7B7B7B7B7B05110D21210E21210D210D21210E21210E0F1B6B
+        6BA36A6C6A6AA56B72FF8D8A7C7B7B7B0F0D210E210D21220D210D12DE7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73706A6B9D6593D4C3D0879494
+        949494D392D18F4D8BFD4D8FD19177E4260D2121220D21220D210D210D21220D
+        2122210D22210E21210D22210D22210FDE7B7B7B7B7B7B7BD81E0D21210D210D
+        2122210D2221210E210D21220D21210E21210E21210D1EF57C5050505050507B
+        4131313231322F2E7B7B7B7B7B7B7B7B7B41313231323132382E7B7B7B7B7B7B
+        7B7B7B7B7B7B736666666666BE9F4439333231322F3E6D6A8181FDFDFDFDFD8A
+        7D7B7D7E7E7FFD51432F313231322F487B7B7B7B7B7B7B7B7BF11E0E210D210D
+        220D21220D210D210D210F121F0707070707070602020207070707070F212121
+        0D21210D210E2121F17B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7C6D7171717171717171719F9F70707054737B7B
+        736F6CA56B9D65A2C5BFCB8887D08686CFD493D2908FDDD1D292D2E40F210D21
+        0D210D2121210E21210E21210D210D21210D210D21210D21210D2121DE7B7B7B
+        7B7B7B7B7BF1190D210E21210D210D210D210D21210D210D210D21210D210D21
+        0E21211BDF7B7B7B7B7B7B7B7B3B32313231323A7B7B7B7B7B7B7B7B7B362F32
+        31323132397B7B7B7B737B7B7B7B7B7B7BD8EADCDCDCDCE7D8DEDE283B3F3231
+        323F3E7B7B7B7B7B7B7B7B7B7B7B7B7B7B89505050413F3131323138497B7B7B
+        7B7B7B7B7B7BD8130F210D22210D210D21210E21210D22210E210D21210D210D
+        210D210D210D22210D210E21210E21210D21210D1F7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B50505050507B7B7B7B7B7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B536E66665F5F5F5E5E5E97CC88CDD0D986CFD49392
+        91DD8E858EDD8E1B0F21220D2122210D220D21210D210D210D21220D210D2122
+        0D22210D220D210EDE7B7B7B7B7B7B7B7B7B070F21210D210D22210D2221210E
+        210E21210E21220D210E2121210D210F057C7C7C7C7C7C507B7B3A3231323132
+        3B7B7B7B7B7B7B7B7B7B3B323132313238536767676767676F6D6A69A36B6B6B
+        6B6B848C7C7B7B7B7B3E3F3132313F3B4C7B7B7B7B7B7B7B7B7B7B7373737373
+        536F3E3F323132313A6861649F6F7373737373C0060F21210D21210D220D2121
+        0D21210D210D22210D220D21220D21220D21210D210D21210D21210E21210E21
+        12DE7B7B7B50505050507C807F7F808A8AD5D5D5D5D58C8282828C8C8C8C8A7C
+        7B7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B73D8D8C9C9C9C9C9C9D8D89EC8C89E6D6D701E0D210D210D210D21210D220D
+        2122210D22210D21210E210D210D210D21210D21D87B7B7B7B7B7B7B7B7BDE13
+        0D22210E210D210D210D210D21210D21210D21210D210D220D21220D1907507B
+        7B7B7B507E51463F3132313233417B7B7B7B7B7B7B7B482F323132313F417C7F
+        7F7F8AD58C8283838383838383834DD57C7B7B7B7B7B3E313132313F3B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C3A32313231333B7C7C7C7B7B7B7B7B7B7B
+        7BF3190D210D2221210D210E21220D2121210D21210D210D21210D21210E210E
+        21220D210E210D210D21210D0F1D7EFDFD6869696969A36B69A5A5A56A6D6D9F
+        64646163A46B69A5A5A5A56A6C9F9F6D706F737373737B7B7B7B7B7B7B7B7B7B
+        73C0C9C9C9D8DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D5050507B1E
+        210D22210D21210E210D21210D210D210D0D21220D21210D210E2121220D210E
+        DE7B747474747474747474D811210D21210D22210D220D21220D210E21210E21
+        0D22210D21210D210D19F17B7B7B7B7B7B7BF94931323132313F367B7B7B7B7B
+        7B7B7B3E32313231323A7B7B7B7B7DFD51515151D5D5D5D5D5D5817F7B7B7B7B
+        7B7B4C3B323132313F3E7B7B7B7B7B7B7B7ED58282D57F7C7B7B7B2E39323132
+        313F3E7B7B7B7B7B7B7B7B7B7B7B7B1B21210D210D22210D210D210E210D2221
+        0D220D21220D210E21210D21210D210D21210D21220D210D211B77917777EDE1
+        EDEDEDEEE5E9E8DCDE7B7B7B7B7BEAE9E9E981FD8B818B8A8A8A8A8A8A7F7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7373C0C8C8C8C8C8C8C8C8C8C8C8C87B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B1E0D210D21220D21210D220D21220D212221210D21
+        0D220D2121210D210D21210DDF8083F7F7F7F7F783D55151000D210D2121210D
+        2121210D21210D210D210D21210D210E210D222121211ED87B7B7B7C7F8AD58A
+        3531323132312F2A7F7F7F7F7C7B7B2E3932313231343D7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B492F323132312F367B507F808080FD8CF6
+        F6F68C8A7D7B7C7D3640323132312F3D8184D581818181FDFD807D7CF00F2121
+        0D210D22210D21210D210D210D21210D21210D210D21210D21210D220D21220D
+        21210E210D12C3D9C3D4C5C5A2659C9C6BA59F677B7B7B7B7B7CD5F2E6ECE6E5
+        E6EEECE5E5E5E5E5F2F2E8E8E77D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B120D22210D210D220D
+        2121210D210D210D210D22210D2121210D210E21210E210DD87C7D7D7D7D7D7D
+        7D7C7C7C7C1B0D220D220D210E210D22210D22210D2221210E21210D21210D21
+        0D2121137D7D7EFDD5D5D5D5823A3331323132397F7F7F7F7E7D7C7B2E41413B
+        3A3A3E2E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3A313231
+        3231397B7BF1DCE8E8E8E8E8E8E8E8E5E5E58EDD903C3F323132314047929292
+        92929277FF827E507BD811210E2121210D21210D21220D2122210D220D21210E
+        21220D22210E2121210D210D210D21212221BFD986CFD494D391DD8D8A7C7B53
+        706D6D6F6F709F6AA5A5686AA5D7D7C4C4C4C4E9EADFDF7DDE7B7B7B7B7BDFE7
+        7D7B7B7B7B507E7F7F7F7F7F7F7F7F7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7BDE11210D2122210D21210E210D22210D21220D210D21220D210E210D210D
+        21210D22D87B7B7B7B7B7B7B7B7B7B7B7B7B1121210D210D21210D210D210D21
+        210D210D210D22210D22210D220D2121137B7B7B7B7B7B7B7B7B393132313132
+        3B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B6E6E6E6E3032313231323F3EC9C2E5E5E5E5E5F2F68C8C8DFFDD90D1
+        9090303132313231392C8484848D84D57C7B7B7B7B7B7B1B0F0D220D21220D22
+        0D21210D210D2121210E0D210D0D210D0D210D220D2122210D220D210D2113D3
+        D3EBEDECE5DCF3E27B7B7BC0C8DCC2C86F53737353537373535353535353747B
+        7B7B7B7B7B7B7B7B7B7BDEF1F1F3F3F3F3F3F1F1F1F1F1F1F1F1F37B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7BF1110E210D210D21220D210D21210E21210D
+        210D22210D210D2122210D21220D210D087B7B7B7B7B7B7B7B7B7B7B7B7BF30F
+        0D2121220D21220D210E21210E210D2221210D210D210D2121210E210F077B7B
+        7B7B7B7B7B7B4C393132323132417B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C
+        7C7C7F808A8C838A7D7B7D7E7D507474747C6A81393132313231322F82858EF7
+        F7F7F7848DF7D551D5F78E8E84F7F73033323132313A2A7F7FFD51FD807C7473
+        7B737B7B071121210D210D21210D220D21220D210F111212121212121212110F
+        210D210D210D210E212112CFCFD49392D1858C807C7C7C7C7F7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6F9E9F9E676767676767
+        67676767747474737B7B94D3D2908ED57E7B7B7B7B7B7B7B7B7BF1110D21220D
+        210D210D22210D21210D220D21210D21220D210D0D21220D210D22211D7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B070D210D210D210D2121210D21210D210D210E2122
+        0D21220D210D21210D19F17B7B7B7B7B7B7B7B362F313132313F367B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B7B7B74513A
+        323132313231322F4E9C9CD1D1D1D2D393D3D29085858E8E8585852D39313231
+        323F3E7B7B7B7B7B7B7B7B7B7B7B7B7B7BF3130F210D220D21210D21210D2121
+        12F36E6E6E9E61639D9C651121220D212221210D210D0FC3D9C3D4C5A2659D6B
+        A3A3A38484D57E7B7B7B7B7B7B7B7B7B7B7DDF6A6A69A3699FD86FD86D6D6C9F
+        69A4A4A4A469A5D5518A808080807F7E7B7B7B7B7B7B88CD86D4949392D1858A
+        7C7C7B7B7B7B081921210D21210D2121210D210D210D2121210D210D210D2121
+        21210D210D21210D087B7B7B7B7B7B7B7B7B7B7B7B7B7B7B130E21210D22210D
+        220D210E21210E210D21210D21210D210D21210D222111F37B7B7B7B7B7B7B7B
+        413F323132312F497B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B4C493B2F32313231323132313F2D9091919191D2D393D3D290
+        858D8D8D8D8D858F443831323132343D7B7B7B7B7B7B7B7B7B7B7B7B5353731F
+        192121210D220D210E210D2221121D737B7B6F6D7E7E801B0F210D210D210D21
+        220D21DB94D4D4D4CFCFCF9493939394949393D392D3D3D3D3D2D2EDEDEBDBC5
+        C5C5C5DBEBE4E4E4E4E4E1DBDBC5DBEBEDEC85F6F6848D8D8D84D57D507B7B7B
+        7B7BD494D391DD8ED57D7B7B7B7B7B7B7B7B1F0F210E210E21220D220D22210E
+        21220D220D22210E21220D220D22210E21220D211D7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7BDE110D22210D21210D21210D210D2121220D21210D22210D22210E21
+        0D2121137B7B7B7B7B7B7B7B7B3B33323132313A4C7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B2E363B3833323132313231323132313F
+        367C7D7D7D7D8A8DFF6BA56D7453535374747474743D3F3131323140497B7B7B
+        7B7B7B7B7B7B7C6A6A6A6A6AF01E0F21210D21210D21210D21211108737B7B7B
+        7B7B7BE21721220D210E210D21210D12D29394D4D4D4D4D4D4D4D493929177D1
+        9090FF8F8E517D7B7B7D719F9F9F9F9F6C6DC9C9DCF002E4E4E4E4E402C4F0F0
+        F0F0F0F0F0DCEADE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B050F
+        21210D21210D210D21210D21210D210D21210D21210D210D21210D21210D210D
+        087B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B080F0D21210D22210D22210D22210D
+        210D210E21210D210D210D21210D210F1B7B7B7B7B7B7B7B7B7B3A3F32313231
+        3B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7F7F7F7F7F80828E423C3940333132
+        31323132313231323132312F4C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B3E3F32323132392E7B7B7B7B7B7B7B507F848E8F8F8F8FE6130F0D21210E
+        21210E210D22212605E27B7B7B7B7B7B1E0F0D2121210D21210E210FE4779293
+        9393939393939392D18E82FD7E7D7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7BDEDEDEDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B13210D210D210D210D210D210D210D210D210D210D21
+        0D210D210D210D210D210D21086C6C54747B7B7B7B7B7B7B7B7B7B7B7B7B1B0D
+        220D210D210D210D210D21220D21210D210E21210E21210D21220D210F1F7474
+        5454737B7B7B2E39323132313F417B7B7B7B7B7B7B7B7B7B7B7B7CFD8D8E8E8E
+        8E8D353C383F313231323132313231323132313231323F3D7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C3B313132313F3A7B74537474747B7B7B6D
+        6C6C6C6C6C6CA505190D0D21210D21210D210D210F13E27B7B7B7B7B080F210D
+        220D210E21210D211B8E90D2D2D2D2D2D2D2D2D18EFEFD8A8B6A6A6A6C6D747B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B071E1E1E1E1E1E1E1E1E
+        1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1BE6D191D190D1D2D2
+        929190DDDDDDDDFFFFFF8E1E0D210D2122210E210D22210D210D22210D21210D
+        21210E210D21210E210FE6828B8A7B7B7B7B7B362F313231322F485050505050
+        7B7B7B7C7E80828FDDDDDDDD423A343231323132313132313231323132313231
+        32343D7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7D7D7D7D7B7B7B2E3A323132
+        313F3E7B7B7B507C5050507E8083F7848483858FEE1E210E210D220D210E2121
+        0D211EE27B7B7B7B8912210D21210D21210D212112E78BD583F7F783D58181FD
+        8A8080D5D58C84848484838C8080808080828383838280507B7B7B7B7D7E7E7E
+        7E7E7E7E7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5050
+        7B7B7B7B507B7B507C7FD58FD1D292929277FF7272726B6B9D9CA2A2A2659C9D
+        72A3A3A49C65A2A29292939394D3D2D2D2D2D2D1FFFF8FF20D21210D210D2121
+        210D21210E210D210E210D220D21210D220D21210D2119A46BA369717D7D80FD
+        353F313231323946824D4DF785828AD5D5D5E8E8E8DCE73E2F31323132313231
+        32313231323132313232312F3E2E7B7B7B7B7B7B7B7B7B7B507E828FFFFFFFFF
+        DDD19191FF827F7C452F323132313F3D7B507C2A7E7B7B7B7B8A51F78F9090D1
+        D2D2130F0D21210D21210D2221212112F37B7B7B7B1B0F210E21210E21210E21
+        0F0269696969A56C747B7B7B7B7B7B7B7BDEDFDFDFDFDFDFDFDFDFDFEAE8E9E9
+        E9E8EA7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B746C71547B7B7471808AD58C82838F77929394939277D1
+        D1D1D1DD8F8FFF72DDDDFF8451507B7B7B505050507C51D5848E8FFF909090DD
+        DDDDDDFF1B210E210D21210E210D220D121E260D2121210D21210D0F1E1B0D21
+        210E21128A7B7B7B7B7B7B7B7E3C3F323132313A479292929394949494949493
+        D392473F31323132313231313232313231323132343E487E7C7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7D8C82824DF784859077DD8DD58B8B433F323132312F497D7F7F
+        7E7B7B7B7B7ED58FFFFF8EFF909192DB17220D21220D210D210E212119ECD2D2
+        92ED1121210D210D210D210D2113777283807C507B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B508A8DFF8FF7D58080806AA5
+        A5A5696B9D65A294A2659D6B6B6B6B69A5ACD58D909191DD8D80507B7B7B7B7B
+        7B502A2A80FD807F7D7B7B7B7C7D7D7D7D11210D220D21210D212121211BF305
+        190D210D210D190673080E210D212121137B7B7B7B7B7D8185DD3A3132323131
+        94CF868686D9D0D0D0D986CFCFCFD43132313231323132323131323231393C8F
+        827F7C7C50507B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C808DDD7792A2A2659C9C
+        9C9C3C32313232312FA3696A6D737B7B7B7B7B7CFCFC7E2828F4828FEE110D21
+        0D2122210D210D210D0FE465659C1E0F0E2121220D21220D2112E7FD7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7C51D58C8CD57F7C7B7B7B505050507C7C507DFD7D7B7B7B7B7B7B7B7B7B7B7C
+        80FDFD8A8A7F7C7B7B7B507C7C7C2A2A2A7E7B7B7B7B7B7B7B7B7B7B7B7B0F21
+        0D21210D220D210E210F087B7308120F0F121D7B7BF30D21210D22210D05EAF4
+        E8F2ECEDEDE19239313132313394CFCFCFD9CDCDD9D9CFCFCFD4393231323132
+        3132313133403E2980807F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B8B82D551518B8051F78D8D843032313132312F90728D83838FD1D17272
+        EEEEEEECECEEEEEDEEE61B0F210D210D21210D22210D22067B7B1D11210D210D
+        210D210D210F077B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDEDE7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7BF8F8F8F8F97B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507E7E7E7E7E2A2A507B
+        7B7B7B7B7B7B7B7B7B7B1D0F210E21210D21210D210D121D7C5050F107D5FD7D
+        7DEA0D220D210D210D21008D858EDD909090D2D22F313231322F9291919192D3
+        92929177DD8D30313132313231323339367B7B7B7B7B7B7B7B7B7B7B7B7B507C
+        7C7D7D7C507C7FD5828282828282838585828A7F7F7FD58D729DA46939323231
+        313230D7C2C26163BBBBBB61A762C8C8C8C8C8C8676E6E0826210D210E21210D
+        2121210D1F73891221210E21210E21210D211B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8DFDCE8E8E8E9E9E9D55151D5848F8D
+        828A7F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7BF87B7B7BF8808A7D7B7B7B7B7B7B7B7B7B7B7B50130F210D210D220D21
+        22210D1E008D8D8DFFD1908E858E21210D22210D22210FF480808A807D7C7B7D
+        412F31323132404482FDACA5A5A5ACAC6A6A46333231323132313E7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7DD5828282D58A2A8AD58C8C8C8C8C82696B6BA36A70
+        5454706D6AA3A368AC2F31323231323D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7BD81E0F0D21210D220D210D220D131C13260D21210D21210D222112D8
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C
+        7C7C7C7C7C7C7C7C7C8A8DFF728F8F838A7C7B7B7B7B7B7B7B7B7CFD838A7C7B
+        7B7B7B7B7CDFEAEAEADFDFDFDFE8E9E9DCE7E7DCF2E5E5E9F47D7C7DFDF2ECEE
+        E1EBEBEB112121220D21210D210D210D1ED4D49493D3D2908F8D120D210D2121
+        0D21211E7B7B7B7B7B7B7B7B7B3E3332313231394C7B7B7B7B7B7B7B7B7B7B2F
+        3132313231324C7B7B535353535353535373737B7B7CFD8E90D1D18F82FD8AFD
+        FDFDFDFDFDFDFD8B8A7B7B7B7B7B7B7B7B7B7B7B7B363F313132313F497B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B050F210D2121210E2121210D121B
+        110D220D21210E210D210F077C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5050505050507C7FD582828E8F8E8EDD
+        9192939494D47B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B53747474546C6A6D6F70
+        6D6A6AA3A3A36B9D9C77728F8F8F85D580D58482828A7F7C7C80828A7D7C7C7D
+        8A848FFF8EF7D5F78FDD90D1D2D2D2D3EB19210D21210D220D21210F13EB9494
+        D3D2908E85DD021311210E210D210E211B7B7B7B7B7B7B7B7B4C3B3132313233
+        3A4C7B7B7B7B7B7B7B7B7B3D3F3231323132497B7B7B50505050505050507B7B
+        7B7F82DD91929291FF2B442C2C2CF784848484827F7B7B7B7B7B7B7B7B7B7B7B
+        7B7B413332313231402E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1D
+        12210E210D210D210E2121110F21210D220D210D21210E1B8383828A808AF7FF
+        DDDDDDFF8FFFFFFFFFFF827F507B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDFDFE7E7
+        E7E7DCD5FE8C828282FD507B7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B747054535353746D6C6C6D6D6C6C6D6D6D6D747B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7BF8F9FA7EFAFAFA2AFD68686969686868050F21
+        0E210D21210E0F13E56B84F7D58BFD8AFD82858500131121220D210D0F077B7B
+        7B7B7B7B7B7B2E3A31323132343E7B7B7B7B7B7B7B7B7B7B3A33323132313E7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7E7E7D7D342F2F2F4039457C7C7C7C
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3A32313231323A807F7E7E7E7D7D7D7D7D
+        7D7D7E7E7C507B7B7B7B7B7BF3130D210E21210D210D220D210D2121210D2122
+        0D210D12C2A3A46B8F8FD1777777777777D2D29292D2908D80507B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B737373CE7FFD818A6A6868686A6A6A6A686D74747B7B
+        7B7B7B7B7B7B7B7B7B7B7B7D7D7D7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B50507C7C7C7C7C7C7C7E7FD5848E728E
+        8D4D828A7D7C898989731321210D21210D1113E27B507C7C7C7C7C7C7C7D8A84
+        8DF71C13112121210D0F1D7B7B7B7B7B7B7B7B4939313231322F417B7B7B7B7B
+        7B7B7B7B4C393332313234487B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B413331323132394C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C39323132
+        3132308EF74D8C8BFDFDFDFDFD51F78F90D1DDF77F7B7B7B5074070F21210D21
+        0E21210D21220D210D22210D210D212605EDEBDBEBE1E1E1E1E1E1E1E1E1E1E1
+        E1EEE6E9E77B7B7B7B7B7B7B7B7B7B7B7B7B74C0C0C0BEBEBEBEC8C2DCC8C2C4
+        BB9CE1DBC5C5C594CF867BD8F4F4F4F4F4F4F4F4E7F2ECEDED9DD7D7C4686C54
+        737373737373737353737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7353709E9F6A
+        6A6A6A6A6A9F6AA56B9D656577DDFF84D57E7C505050D81121210D2219131CE2
+        E2E2E2E2737B7B7B7B7B89DEF3F1071F1312210D222111D87B7B7B7B7B7B7B7B
+        483F3132313240367B7B7B7B7B7B7B7B7B492F323132312F367B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B3F32313231323E7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B737033323132313F4272728584848484F78D7291D292D392D1
+        8F8281D54D4D85EC11220D21210D21220D21210D210D210E21210E2113929394
+        94949393939393D3D277D2D3D3D2DDFF8E8C7E7B5050507C7F7F80FD84DD908F
+        8E8E85828A80FD828C8C828C8B8B7F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B737B7B7B7B7B7B737B7B
+        53535353706C6C6A6A6AA5A5A5A5A5A5A56A9F9F9F6869A5716D6D70507B7B7B
+        7B7B7B08190E21210F111212121212121E067C7C7C7C061212111119110F2121
+        210D211EDF7E7F7F7F7F7F80D53E3132313231392E7B7B7B7B7B507B7B7BF939
+        313231322F35F78E8F8F8E827F507B7B7B7B7B7B7B7B7B7B7B7B3A3332313231
+        3F2E7C7C7C7C7C7C7C7B7B7B7B7B7C6D6D6D6D6A9F3632313231322F6C9F9F6A
+        6A9F675471696BA49C65659177D1D1D1D1FFDD77771321210D220D210D210E21
+        220D2121210D210D12EE92D29191919191919177FFF7F78DF7807C7C7DDE7BE2
+        F1F1F1EAE8E8E5ECEDEBEBEBEBEBEBEDEC858D8DF68C8CD58A7F7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D7D7E7F7F
+        8A8C8282828282828283F7F78DA3A568696B6B6B6B6969696969696969A56A67
+        737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1321210D210D220D21210D212119077C
+        2ADF1B220D21220D21210D220D210E211B7C7FD582F78D858F8F303132313231
+        3A828A818590FF8D8484F7E539313231323430ECECE6E6E9EA7B7B7B7B7B7B7B
+        7B7B7B73737B3B3332313231323DDADADA737B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B3E3132313231404C7B7B7B7B7B7B507C7C7B7C7D7D7C7B7B7B7B7B7B7B7B
+        7B7B1F21210D21220D21210D21210E210D220D210F077B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B507E7F7F7F7F7FF4E9ECEEEDEDEDEDEEE6F2E9F2E5
+        E8E8E8E8E8E8DF7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B808C8283838383828C8C8C4D858F8F8FA4A4A4A36969
+        A4A4A4A4A4A4A4A4A46B696A6C6D7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B1E0D22
+        210D21210E21220D21211108507B130D21210D21210E21210D21210E21077B7B
+        7B507F82FF91D239323132313F3A86D0CD88CBCBCBCB88CD863932313231322F
+        30D1FF827F507B7B7B7B7B7B7B7B7B7B7B7C3931323132313239828C8C8DDD91
+        91919177FF8DF7F7F7F78DFFF78A803931323132313A7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF31722210D21210D210E21210D21212121
+        0D137B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7DD58C8C8C8C8C8C8C8A807F7F7F7C7C7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73706AACA5A5A5A56A8080
+        FDFE8FEEEEEEE1E1EDE6F2F2ECEEEDEEEEEEEEEEEEE6E58DFFFF8D8D8D8DF7D5
+        7F507B7B7B7B7B7B7BF1110D21220D210D210D210E210D121D7313210D220D21
+        0D210D22210D2121210F1D7B7B7B7B7B7C818C4D34313231323F929394949494
+        94D4D49492913C2F32313132313F3B2E7B7B7B7C7C7B7B7B7B507C7C7F3B3132
+        31323132313891909091D3939494949493D3D3D3D3D3D3D3D290DDFF2F313231
+        32313E492E2E2E2E2E2E2EF82E2E502E2E2E4C7B7B7B7B7B7B7B7B7B7B130F21
+        0D21220D210D210E210D220D2112D87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8B4DF7F7F7F7F74DFE
+        8C8C8CD5D5D57B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B747C8A8A8A808A8C8E90D2D2D2D393939291919293939292929292
+        91FF8D4D4D4DFE83858E8583D5807F7F7F7F7F7F808A1F0F210D21210D21210D
+        21210D21121F130D21210D21210D21210D210D210D2119F37B7B7BD8F4E8E5E5
+        2B3F323132313FF6E88A7D7D8A8D8E854DD551433A3F3231313231323430424A
+        4A8E517E7F81D5352F323132313231323138EED7C4C4C4D7A43A323132313231
+        3231323132313231323132313231323132313231323131313131313131313448
+        5353737B7B7B7B7B7B7B071921210D21210E21210D210D21210F068181FDFD80
+        507B7B7B7B50507C8082F7D57F7B7B7B7B7B7B7B7B7B7B7EFD7F7F8A7D7B7B7B
+        7B7E82FF91D2D2D2D2919085FE8CD5FD8A8AF1F3F3D8DEDEDEDE747B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B706D6AA5696969696BA472A46B6B6B
+        6BA3A5A5848D8DD57F7E7E7E7D507DD58C8C8269A3636964649B9B9B9B9B9B9B
+        6261611B21210D21220D22210E21220D211912210E21220D22210E21220D2221
+        0E210D13D87B7B7B7B7B7B7B7B4133323132312F7B7B7B7B7B7B7B7BF9FA8A4D
+        8D42393F32313231323132313231323132313231323132313231323132398383
+        8C8A808080462F32313231323132313231323132313231323132313231323132
+        32323232323232323232322F69699F747B7B7B7B7B7B7BF3130F0D210D21210D
+        2221210D220D139C9C726B69716D6D6D6D6C6A6884FFFF8DD5507B7B7B7B7B7B
+        7B7B7B7F51517F7C7B7B7B7B7B7B7C818E90D1D1D1D19085FE8C8CD5D5D51E1E
+        1313DBDBDBE1E4EE8F827E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C
+        80828484848D8D8D8D8484848484F7848484F7517C7B7B7B7B7B7CD58C8C8C8C
+        8282AC8A7F73767676767353708A8AF11E220D210D210D21210D21210D21210D
+        21210D21210D21210D21210D2121210D1B7B7B7B7B7B7B7B7B7B3B3132313231
+        397B7B7B7B7CFD8D85858EFF85FEFE42393F3132313231323132313231323132
+        31323132313231323F3D7B7B7B7B7B7B7B7B362F313231323132313231323132
+        3132313231323132313132313131313131313131313131313877728D8C7F507B
+        7B507C7F8C1B260D21210E210D210D210D21119393D2D18EF7F7F784A3A3686C
+        706C9F9F6C537B73549E9F9F9E6F6E6666667B7B7B7B7B7B7B7B7B74747D8AFD
+        FDFDFD8A808080808080ECE6E6E6E6E6E6E585858D8CF47B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B507E7E7E7E7E7D7D7D7D7D7E7EDF6C9E9E9E67
+        537B7B7B7B7B53706D6D6D6D6D6D6D70705373737353706AA5A5A56802112122
+        210D210D0D210D0D210D0D210D0D210D0D210D0D210D0D210D0D210D0F1F7B7B
+        7B7B7B7B7B50503931323132313C828282FFD191919190858A7C7C8A4D353038
+        33313231323132313231323132313231323132343E737B7B7B7B7B7373737341
+        3F32313231323132313231323132313231323132323232323232323232323232
+        32323232333AA4A46B696A70706D6D6D6D6CF011210D210D210D210D210D0FDB
+        D3D2D1909192D39394D3D290DD9091919190727277929292778E8C7E7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6A6A6A6A6AC4D7EC9CEB
+        DBDBDBDBE1E4E4EC000000ECECECECE5E8EAD87B7BD8D8D8EAE5D7D7D7D7D7C4
+        A5A5A5A5C4C4C461649E6E73737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7C7F7D7F7D80050F210D22212221222122212221222122212221222122
+        21222122212221222126087B7B7B7B7B7D7D50492F32313231323D7C7C7D7D7E
+        FD82FD7C7B7B7B7B7B7B7B4B3D3E392F313231323132313231323132313F3A48
+        7B7B7B7B7B7B7B7B7B7B7B7B3E2F402F2F402F2F402F2F402F2F402F2F402F38
+        393939393939393939393939393939393939D4CFCF9493D2D190728D8C8A51E8
+        1B1E1E1E1E1E1E1E1E1E1EE4FFF7FDFD8DDDD1D29292D291919191919177FF8D
+        8D858DF78A7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B746A838FD1777777777777D190D1D177779177FFF78B7B7B
+        7B7B7B7B7B7B7BCECE737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C507C7C1B111111111111111111
+        111111111111111111111111111111111111111111111ED87B7B7B7B7B7B7B7B
+        2E36363636362E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73734C2E36413E39
+        3940402F4039393E3D497B7B7B7B7B7B7B7B7B7B7B7B7B7B7B2E2E2E2E2E2E2E
+        2E2E2E2E2E2E2E2E2E2E2E4C4C7BF5FD8DFF9192D3D4CFCFCFCF86D087787888
+        CDD9CF94D392779085D58A8080807B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F828FFFFF779293939393
+        93939393939277FF827E7B7B7B7B736E6E6E6E6F9F646161616161639D9DA48E
+        FFD1D1D1D2D3D3D29085F7F78FD19CA46BA47272A4A369AC6A6C6AA5A5A569A3
+        A56C7D7F7E507B7B7B50D8D87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7BDE7BDE7BDE7BDE7BF5F4FD8B84FDF57BDE7BDE7BDE7BDE7BDE7BDE7BDE
+        7BDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B4C4C4C4C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7C7F808C858E8E8E8E8585858584E9F2F2F2E9F47DDFE8F2E9E9E6EE
+        E1D394C594D3D393D4D4D4CFCFD4939292D2D190858C8A8080807C7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7C80828D8D8ED19293939393939494949392778F4DFD7B7B7B7B8686CFD493D3
+        92D277728D8D727791908EF78590908FFFD1D1D1908E85858E8F8F8E84858584
+        817D7D8A838C8DDD919191D29177DD854DD5D5D551517F7C7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737373737373537474747474
+        7B7B507C7B7B7B7B7C7D808A8A807F7F7F7F7F7F7F7E7C7F82FF8FD57F7D507D
+        7F7F7F808A836B6BA49C659C6BA59FC2D7D7D7C4C4A5A5C2C2C9D8DEDE7B7BDE
+        DEDEDE7B7B7B507E7E7E7F82F784858585F78A7E7E518590D2D2D18F8E8E8D81
+        8A807FD5D5D5807F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C80F7FFDDDD909192929292D18F82
+        51FD8A8A807D8181FDFDD5D5D5D5518BFDFD51848FFF854D4DF7F74D4D4D4D82
+        828C8C8C8C8C8A7D7B7B7B7B7B7B7B7BF9F9FDF7FFDDDDDDDDDDFFFF8EF7518A
+        F9F87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B5080F784848D858D8D858D817E8A81F785DD90DD8DD57D7C7C7C50
+        7C7C808C8E909085FED5FD8C8DFF9091D2D394CFD4D4D4949291909090909085
+        F68B807D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7D7D7D7D7D7C7B7B7B7B7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D51D5D5D58C8C8C828D
+        8E728E858D8D8D8D848251802A2A7C7C7C7C507B7B7B7B7B7B7B7B7B7D7E7F82
+        DD779191919191919177FF8DD5517E7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8A828385DD9090909090DD9090
+        8F8E8E8E8EFE8A7B7B7B7B7B7B7B8AFE858F854D8C8CD58CFE848F9091929394
+        939277FF8D8585858585858D8DD580FDFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B50706D6D6CA5A5A5A5696969696968686868686A6C707C7C7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B8A51515151D54DF7F7F74D8CFD8A807C7B7C7F7C
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74
+        6A6868A3A49D9D9D9D9D9C9C9DA3A3A3A384837E507C7C7C7D81858E8F8E8382
+        828282828284729192D2D2778F4D51FD8AFDFDFDFDFDFDFD8A507B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7D8A8BD58D8585858DD5D5D5D5D5D5D5817E507B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73709E6262626262626161616163
+        6363636369696A70507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B808C8C8C8C8C8282
+        828282828CD58A80806AA56A70537353535353706D6D6D6D6D6D70537B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7C7E7F7F80828D82807C7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B5080836B9D9D9D9D9D9D65A2A2659CA4A49C65A29C
+        A4A3F7F76B9D9D9D9D6BA56A6A6A68686D6F549F6969A5717C507D7E7E7E7E7F
+        9F9F9F9F9F6C7473737373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C
+        7C7C7C7C7C7C7E7D7E7C7C7C7C7C7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8DE7B7B7B7B7B7B7B7B7B7B7B7B
+        7B746F6C696BA3A3A3A36969696969A3A3A36969A58CD57D7B7B7B7B7B7B7B7C
+        7F7F7F7F80807F7B7B7B7B7B7B7C7E802A2A507B7B7B7B7B7B7B7B7B507F8282
+        807C7B7B7B505050507C7C507B7B7B7B7B7B7B7B7B7B7B7B7BDED8D8D8D8D8D8
+        D8F4E5ECE6E6E6E6E6E6E5DC7D7B7B7B7D82838382FD7B7B7B7B6666737B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7DF4E7F47E7DFDD5D5D5D5D5D5D5D5D5D5D57F507B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDFE8E6E6E6E6E6E6E6E6E5E8
+        E7E77B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B50507B7B7B7B7B7B7C8AE5E6EEEDEDEDEDEDEEECECECEEEDEDEDEDEE
+        E5E88A7C7B7B7B7B7B7B7B507C507B7B7D7F7F7E7D7E7F7F7F7D8A80802A7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C7D7C7D7D7FFD7D7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808080
+        807F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7BC0C9C9C9706CA56B6B6B6BA4A4A4A4A46B699F7D7B
+        7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8AFDFDFDFDFDFDFDFD
+        8B8BFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7C7E8B8151D58C82828B8B817C7C7C7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B50808DFFDDDD9090D1
+        D2D291908FDD90D29292D2D18EF6FD7D7D7D7C507B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7C7F807F7F7F7F7F7F7F7F7F7F7E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7C7FACA3A49C9C9DA4A4A4A4A4A4A4A4A4A46B69A59F7D7B7B7B7B7B7B7B
+        7B7B7B7B5050505050507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7D8A7D7D7D7D7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7E718181818181D5D584848D8D8B7E6D6C6D6F737B7B74747474745353
+        7B7B7B7353537B7B7B7B7B7B7B7B7B507ED585909192939394D4848D8D8D8D8D
+        8D8D8D8D8D8DD57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7C7C7C7C7C7D8AD5F7F74D4DF78DDD91919177DDFF8F8F8F8F85D5
+        8A80807F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808C8C8CD57D7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D7D7D8A8AFDFD8B8B5151D5
+        AC9F9F9F6C707054737B7B7B7B7B7B73666666737B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6EBEBEBEBEBE67679F6469A4A4636161
+        6163BB9D77919C65659C9D9D6BA36A6D6D6AA561649F676F737B7B7B7B7B7B7B
+        7B7B7B7B7B7B7D8082F7F7F7F78D8D8D8D8D80507B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7F7F80D5828FD1
+        9292929292929292929291FF8D8CD5D57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7D7F7F7F7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7BDEF5F4FDD5FE8D8F90919191919191929277FF8E8E8E8EA4A3696A6C70
+        537B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7C8A818C7E7C7C7E818DDDDDDDDD9090DD728D8C7F7B7B507C7C
+        7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D8A8A807B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7D7D7D7D7D7E7E7F518BFD8A8080807C507B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7BC0F1DCF0F00000E58D9091D2D27777D1D1D177D1
+        8E828BFDFD8B818A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEF37B7B7B7B7B7B7B7B7B7B
+        7B7BF3F1E7EA7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7353737373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7C7D7D7D7D7D7EFD8B8B8B8B8B8BFDF480DF707074747474746F6D
+        7169A4A4A4A46BA369696982FD802A2A2A7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73BDBDBDBDBD737373
+        737373737373737B7B7B7B7B7B7CD584DD9090907791919191D292D393939291
+        FF827F507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B735353535353737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B507FF79091D2D2D2D2D2D2D2D2D2D2D2D290
+        858C807B7B7B7B7B7B7B7B7B7B7D828383838382828282D5802A2A2A2A7C7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F82F7F7F7F7F7
+        F7F7F7F7F7F7F7827F507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+        7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8C8ED1D29292
+        929293939393D4CF86CFD49392D1858A7C7B7B7B7B7B}
+    end
+  end
+  object cmdOK: TButton [12]
+    Left = 261
+    Top = 466
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 11
+  end
+  object lbl508Notice: TMemo [13]
+    Left = 8
+    Top = 341
+    Width = 327
+    Height = 118
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'VHA'#39's Office of Information, System Design & Development staff '
+      'have made every effort during the design, development and '
+      
+        'testing of this application to ensure full accessibility to all ' +
+        'users in '
+      'compliance with Section 508 of the Rehabilitation Act of 1973, '
+      'as amended.  Please send any comments, questions or concerns '
+      'regarding the accessibility of this application to '
+      'EMAIL ADDRESS:vhaoihdisection508@va.gov')
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 10
+    WantReturns = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblProductName'
+        'Status = stsDefault')
+      (
+        'Component = lblFileVersion'
+        'Status = stsDefault')
+      (
+        'Component = lblCompanyName'
+        'Status = stsDefault')
+      (
+        'Component = lblComments'
+        'Status = stsDefault')
+      (
+        'Component = lblCRC'
+        'Status = stsDefault')
+      (
+        'Component = lblLegalCopyright'
+        'Status = stsDefault')
+      (
+        'Component = lblFileDescription'
+        'Status = stsDefault')
+      (
+        'Component = lblInternalName'
+        'Status = stsDefault')
+      (
+        'Component = lblOriginalFileName'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = lbl508Notice'
+        'Status = stsDefault')
+      (
+        'Component = frmAbout'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAbout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAbout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAbout.pas	(revision 1676)
@@ -0,0 +1,73 @@
+unit fAbout;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmAbout = class(TfrmAutoSz)
+    Panel1: TPanel;
+    Image1: TImage;
+    cmdOK: TButton;
+    lblProductName: TStaticText;
+    lblFileVersion: TStaticText;
+    lblCompanyName: TStaticText;
+    lblComments: TStaticText;
+    lblCRC: TStaticText;
+    lblLegalCopyright: TMemo;
+    bvlBottom: TBevel;
+    lblFileDescription: TStaticText;
+    lblInternalName: TStaticText;
+    lblOriginalFileName: TStaticText;
+    bvl508Disclaimer: TBevel;
+    lbl508Notice: TMemo;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure ShowAbout;
+
+implementation
+
+{$R *.DFM}
+
+uses VAUtils, ORFn;
+
+procedure ShowAbout;
+var
+  frmAbout: TfrmAbout;
+begin
+  frmAbout := TfrmAbout.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmAbout));
+    frmAbout.lblLegalCopyright.SelStart := 0;
+    frmAbout.lblLegalCopyright.SelLength := 0;
+    frmAbout.lbl508Notice.SelStart := 0;
+    frmAbout.lbl508Notice.SelLength := 0;
+    frmAbout.ShowModal;
+  finally
+    frmAbout.Release;
+  end;
+end;
+
+procedure TfrmAbout.FormCreate(Sender: TObject);
+begin
+  inherited;
+  lblCompanyName.Caption        := 'Developed for ' + 'VOE VWPT Patient Enhanced Lookup Version 1.6b';  //vw
+  //lblCompanyName.Caption        := 'Developed by the ' + FileVersionValue(Application.ExeName, FILE_VER_COMPANYNAME);
+  lblFileDescription.Caption    := 'Compiled ' + FileVersionValue(Application.ExeName, FILE_VER_FILEDESCRIPTION);  //date
+  lblFileVersion.Caption        := FileVersionValue(Application.ExeName, FILE_VER_FILEVERSION);
+  lblInternalName.Caption       := FileVersionValue(Application.ExeName, FILE_VER_INTERNALNAME);
+  lblLegalCopyright.Text        := FileVersionValue(Application.ExeName, FILE_VER_LEGALCOPYRIGHT);
+  lblOriginalFileName.Caption   := FileVersionValue(Application.ExeName, FILE_VER_ORIGINALFILENAME);  //patch
+  lblProductName.Caption        := FileVersionValue(Application.ExeName, FILE_VER_PRODUCTNAME);
+  lblComments.Caption           := FileVersionValue(Application.ExeName, FILE_VER_COMMENTS);  // version comment
+  lblCRC.Caption                := 'CRC: ' + IntToHex(CRCForFile(Application.ExeName), 8);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fActivateDeactivate.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fActivateDeactivate.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fActivateDeactivate.dfm	(revision 1676)
@@ -0,0 +1,75 @@
+inherited frmActivateDeactive: TfrmActivateDeactive
+  Left = 293
+  Top = 317
+  BorderIcons = []
+  Caption = 'Renew Order'
+  ClientHeight = 185
+  ClientWidth = 569
+  OldCreateOrder = False
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  DesignSize = (
+    569
+    185)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object TActivate: TButton [0]
+    Left = 206
+    Top = 157
+    Width = 106
+    Height = 25
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Caption = 'DC Pending Order'
+    TabOrder = 2
+    OnClick = TActivateClick
+  end
+  object TDeactive: TButton [1]
+    Left = 132
+    Top = 157
+    Width = 63
+    Height = 25
+    Caption = 'DC BOTH'
+    TabOrder = 1
+    OnClick = TDeactiveClick
+  end
+  object Memo1: TMemo [2]
+    Left = 0
+    Top = 0
+    Width = 569
+    Height = 145
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Memo1')
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 0
+  end
+  object TCancel: TButton [3]
+    Left = 324
+    Top = 157
+    Width = 137
+    Height = 25
+    Caption = 'Cancel-No Action Taken'
+    TabOrder = 3
+    OnClick = TCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = TActivate'
+        'Status = stsDefault')
+      (
+        'Component = TDeactive'
+        'Status = stsDefault')
+      (
+        'Component = Memo1'
+        'Status = stsDefault')
+      (
+        'Component = TCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmActivateDeactive'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fActivateDeactivate.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fActivateDeactivate.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fActivateDeactivate.pas	(revision 1676)
@@ -0,0 +1,171 @@
+unit fActivateDeactivate;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ExtCtrls, ORCtrls,ORFn, rCore, uCore, oRNet, Math, fOrders, ORClasses, rOrders,
+  fMeds, rMeds, VA508AccessibilityManager;
+
+type
+  TfrmActivateDeactive = class(TfrmAutoSz)
+    TActivate: TButton;
+    TDeactive: TButton;
+    Memo1: TMemo;
+    TCancel: TButton;
+    procedure TActivateClick(Sender: TObject);
+    procedure TDeactiveClick(Sender: TObject);
+    procedure TCancelClick(Sender: TObject);
+  private
+    { Private declarations }
+    procedure GetOriginalOrders(OrderID: TStringList; var OriginalOrder: TORStringList);
+    procedure DCOriginalOrder(OrderID: string);
+    procedure BuildForm(Str1: String);
+    function PromptForm(Text: String): String;
+  public
+     { Public declarations }
+
+    procedure fActivateDeactive(OrderID: TStringList); overload;
+    procedure fActivateDeactive(OrderID: TStringList; AList: TListBox); overload;
+  end;
+
+var
+  frmActivateDeactive: TfrmActivateDeactive;
+  Act: Boolean;
+  Deact: Boolean;
+  CancelProcess: Boolean;
+
+implementation
+
+{$R *.dfm}
+
+{ TfrmActivateDeactive }
+
+procedure TfrmActivateDeactive.BuildForm(Str1: String);
+var
+ str: string;
+begin
+  with frmActivateDeactive do
+     begin
+        str := 'This order is in a pending status.  If this pending order is discontinued, the original order will still be active.';
+        str := str + CRLF + CRLF + str1;
+        str := str + CRLF + CRLF + 'Click:';
+        str := str + CRLF + '     "DC BOTH" to discontinue both orders ';
+        str := str + CRLF + '     "DC Pending Order" to discontinue only the pending order and return the original order back to an active status ';
+        str := str + CRLF + '     "Cancel - No Action Taken" to stop the discontinue process ';
+        Memo1.ReadOnly := False;
+        Memo1.Text := str;
+        Memo1.ReadOnly := True;
+     end;
+    ResizeAnchoredFormToFont(frmActivateDeactive);
+    frmActivateDeactive.ShowModal;
+    frmActivateDeactive.Release;
+end;
+
+procedure TfrmActivateDeactive.fActivateDeactive(OrderID: TStringList);
+var
+i,Pos: integer;
+tmpArr: TORStringList;
+ActDeact: string;
+AnOrder: TOrder;
+begin
+  //called from order tab
+  tmpArr := TORStringList.Create;
+  GetOriginalOrders(OrderID,tmpArr);
+      with forders.frmOrders.lstOrders do for i := 0 to items.Count-1 do if Selected[i] then
+        begin
+          AnOrder := TOrder(Items.Objects[i]);
+          Pos := tmpArr.IndexOfPiece(AnOrder.ID,U,1);
+          if Pos > -1 then
+            begin
+              ActDeact := PromptForm(AnOrder.Text);
+              if ActDeact = 'D' then AnOrder.DCOriginalOrder := True;
+              if ActDeact = 'A' then AnOrder.DCOriginalOrder := False;
+              if ActDeact = 'C' then Selected[i] := False;
+            end;
+        end;
+end;
+
+procedure TfrmActivateDeactive.fActivateDeactive(OrderID: TStringList; AList: TListBox);
+var
+i,Pos: integer;
+tmpArr: TORStringList;
+ActDeact: String;
+AMed: TMedListRec;
+AnOrder: TOrder;
+begin
+  //called from Med tab
+  tmpArr := TORStringList.Create;
+  GetOriginalOrders(OrderID,tmpArr);
+  AnOrder := TOrder.Create;
+     with AList do for i := 0 to items.Count-1 do if Selected[i] then
+        begin
+          AMed := TMedListRec(Items.Objects[i]);
+          if AMed = nil then Continue;
+          Pos := tmpArr.IndexOfPiece(AMed.OrderID,U,1);
+          if Pos > -1 then
+            begin
+              ActDeact := PromptForm(Alist.Items.Strings[i]);
+              if ActDeact = 'D' then
+                begin
+                  AnOrder := GetOrderByIFN(Piece(tmpArr.Strings[Pos],U,1));
+                  DCOriginalOrder(AnOrder.ID);
+                  //AnOrder.DCOriginalOrder := True;
+                end;
+              if ActDeact = 'A' then AnOrder.DCOriginalOrder := False;
+              if ActDeact = 'C' then Selected[i] := False;
+            end;
+        end;
+end;
+
+procedure TfrmActivateDeactive.GetOriginalOrders(OrderID: TStringList; var OriginalOrder: TORStringList);
+var
+i: integer;
+begin
+  CallV('ORWDX1 DCREN', [OrderID]);
+  for i := 0 to RPCBrokerV.Results.Count-1 do
+    OriginalOrder.Add(RPCBrokerV.Results.Strings[i]);
+end;
+
+function TfrmActivateDeactive.PromptForm(Text: String): String;
+begin
+  frmActivateDeactive := TfrmActivateDeactive.create(Application);
+  BuildForm(Text);
+  if Deact = True then Result := 'D';
+  if Act = True then Result := 'A';
+  if CancelProcess = True then Result := 'C';
+end;
+
+procedure TfrmActivateDeactive.TActivateClick(Sender: TObject);
+begin
+  inherited;
+   Act := True;
+   Deact := False;
+   CancelProcess := False;
+   frmActivateDeactive.Close;
+end;
+
+procedure TfrmActivateDeactive.TDeactiveClick(Sender: TObject);
+begin
+  inherited;
+   Act := False;
+   Deact := True;
+   CancelProcess := False;
+   frmActivateDeactive.Close;
+end;
+
+procedure TfrmActivateDeactive.TCancelClick(Sender: TObject);
+begin
+  inherited;
+  Act := False;
+  Deact := False;
+  CancelProcess := True;
+  frmActivateDeactive.Close;
+end;
+
+procedure TfrmActivateDeactive.DCOriginalOrder(OrderID: string);
+begin
+ CallV('ORWDX1 DCORIG', [OrderID]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAddlSigners.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAddlSigners.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAddlSigners.dfm	(revision 1676)
@@ -0,0 +1,270 @@
+inherited frmAddlSigners: TfrmAddlSigners
+  Left = 275
+  Top = 164
+  BorderStyle = bsDialog
+  Caption = 'Identify Additional Signers'
+  ClientHeight = 364
+  ClientWidth = 443
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 449
+  ExplicitHeight = 396
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 443
+    Height = 364
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object pnlButtons: TORAutoPanel
+      Left = 0
+      Top = 311
+      Width = 443
+      Height = 53
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 2
+      object cmdOK: TButton
+        Left = 125
+        Top = 14
+        Width = 75
+        Height = 25
+        Caption = '&OK'
+        TabOrder = 0
+        OnClick = cmdOKClick
+      end
+      object cmdCancel: TButton
+        Left = 215
+        Top = 14
+        Width = 75
+        Height = 25
+        Cancel = True
+        Caption = '&Cancel'
+        TabOrder = 1
+        OnClick = cmdCancelClick
+      end
+    end
+    object pnlAdditional: TORAutoPanel
+      Left = 0
+      Top = 70
+      Width = 443
+      Height = 241
+      Align = alClient
+      TabOrder = 1
+      object SrcLabel: TLabel
+        Left = 11
+        Top = 15
+        Width = 175
+        Height = 16
+        AutoSize = False
+        Caption = 'Select or enter additional signers'
+      end
+      object DstLabel: TLabel
+        Left = 266
+        Top = 15
+        Width = 145
+        Height = 16
+        AutoSize = False
+        Caption = 'Current additional signers'
+      end
+      object cboSrcList: TORComboBox
+        Left = 11
+        Top = 33
+        Width = 174
+        Height = 185
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Select or enter additional signers'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 2
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        TabStop = True
+        OnChange = cboSrcListChange
+        OnClick = cboSrcListClick
+        OnKeyDown = cboSrcListKeyDown
+        OnMouseClick = cboSrcListMouseClick
+        OnNeedData = NewPersonNeedData
+        CharsNeedMatch = 1
+      end
+      object DstList: TORListBox
+        Left = 266
+        Top = 37
+        Width = 170
+        Height = 185
+        ItemHeight = 13
+        MultiSelect = True
+        ParentShowHint = False
+        ShowHint = True
+        Sorted = True
+        TabOrder = 2
+        OnClick = DstListChange
+        Caption = 'Current additional signers'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+        OnChange = DstListChange
+      end
+      object btnRemoveSigners: TButton
+        Left = 189
+        Top = 108
+        Width = 71
+        Height = 25
+        Caption = '&Remove'
+        Enabled = False
+        TabOrder = 3
+        OnClick = btnRemoveSignersClick
+      end
+      object btnAddSigners: TButton
+        Left = 189
+        Top = 77
+        Width = 71
+        Height = 25
+        Caption = '&Add'
+        Enabled = False
+        TabOrder = 1
+        OnClick = btnAddSignersClick
+      end
+      object btnRemoveAllSigners: TButton
+        Left = 189
+        Top = 139
+        Width = 71
+        Height = 25
+        Caption = 'R&emove All'
+        Enabled = False
+        TabOrder = 4
+        OnClick = btnRemoveAllSignersClick
+      end
+    end
+    object pnlTop: TORAutoPanel
+      Left = 0
+      Top = 0
+      Width = 443
+      Height = 70
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblAuthor: TOROffsetLabel
+        Left = 12
+        Top = 9
+        Width = 97
+        Height = 15
+        Caption = 'Author (not editable)'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+      end
+      object lblCosigner: TOROffsetLabel
+        Left = 246
+        Top = 6
+        Width = 155
+        Height = 15
+        Caption = 'Expected Cosigner (not editable)'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+      end
+      object cboCosigner: TORComboBox
+        Left = 246
+        Top = 27
+        Width = 174
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'object lblCosigner: TOROffsetLabel'
+        Color = clCream
+        DropDownCount = 8
+        Enabled = False
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2,3'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        TabStop = True
+        OnChange = cboCosignerChange
+        OnExit = cboCosignerExit
+        OnNeedData = cboCosignerNeedData
+        CharsNeedMatch = 1
+      end
+      object txtAuthor: TCaptionEdit
+        Left = 14
+        Top = 27
+        Width = 178
+        Height = 21
+        TabStop = False
+        AutoSize = False
+        Color = clCream
+        ReadOnly = True
+        TabOrder = 0
+        Caption = 'Author (not editable)'
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlButtons'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlAdditional'
+        'Status = stsDefault')
+      (
+        'Component = cboSrcList'
+        'Status = stsDefault')
+      (
+        'Component = DstList'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveSigners'
+        'Status = stsDefault')
+      (
+        'Component = btnAddSigners'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = cboCosigner'
+        'Status = stsDefault')
+      (
+        'Component = txtAuthor'
+        'Status = stsDefault')
+      (
+        'Component = frmAddlSigners'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAllSigners'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAddlSigners.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAddlSigners.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAddlSigners.pas	(revision 1676)
@@ -0,0 +1,360 @@
+unit fAddlSigners;
+
+interface
+
+uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
+  Buttons, ORCtrls, ORfn, ExtCtrls, FNoteProps, Dialogs, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmAddlSigners = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboSrcList: TORComboBox;
+    DstList: TORListBox;
+    SrcLabel: TLabel;
+    DstLabel: TLabel;
+    pnlBase: TPanel;
+    btnRemoveSigners: TButton;
+    lblAuthor: TOROffsetLabel;
+    cboCosigner: TORComboBox;
+    lblCosigner: TOROffsetLabel;
+    txtAuthor: TCaptionEdit;
+    pnlAdditional: TORAutoPanel;
+    pnlButtons: TORAutoPanel;
+    pnlTop: TORAutoPanel;
+    btnAddSigners: TButton;
+    btnRemoveAllSigners: TButton;
+    procedure btnAddSignersClick(Sender: TObject);
+    procedure NewPersonNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboSrcListMouseClick(Sender: TObject);
+    procedure btnRemoveSignersClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cboCosignerChange(Sender: TObject);
+    procedure cboSrcListKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure cboCosignerNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboCosignerExit(Sender: TObject);
+    procedure cboSrcListClick(Sender: TObject);
+    procedure DstListChange(Sender: TObject);
+    procedure btnRemoveAllSignersClick(Sender: TObject);
+    procedure cboSrcListChange(Sender: TObject);
+  private
+    FSigners: TStringList ;
+    FCosigner: int64;
+    FExclusions: TStringList;
+    FSigAction: integer;
+    FChanged: Boolean;
+    FNoteIEN: integer;
+    FRefDate: TFMDateTime;
+    FToday: string;
+    FTabID: integer;
+    function CosignerOK: Boolean;
+    
+  end;
+
+TSignerList = record
+    Changed: Boolean;
+    Signers: TStringList ;
+    Cosigner: int64;
+  end;
+
+procedure SelectAdditionalSigners(FontSize, NoteIEN, SigAction: Integer; Exclusions: TStrings;
+          var SignerList: TSignerList; TabID: integer; ARefDate: TFMDateTime) ;
+
+const
+  SG_ADDITIONAL = 1;
+  SG_COSIGNER   = 2;
+  SG_BOTH       = 3;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rCore, uCore, rTIU, uConst, rPCE, fDCSumm;
+
+const
+  TX_SIGNER_CAP = 'Error adding signers';
+  TX_SIGNER_TEXT = 'Select signers or press Cancel.';
+  TX_BAD_SIGNER = 'Cannot select author, user, expected signer, or expected cosigner' ;
+  TX_DUP_SIGNER = 'You have already selected that additional signer';
+  TX_NO_COSIGNER = ' is not authorized to cosign this document.';
+  TX_NO_COSIGNER_CAP = 'Invalid Cosigner';
+  TX_NO_DELETE = 'A cosigner is required';
+  TX_NO_DELETE_CAP = 'No cosigner selected';
+
+
+procedure SelectAdditionalSigners(FontSize, NoteIEN, SigAction: Integer; Exclusions: TStrings;
+          var SignerList: TSignerList; TabID: integer; ARefDate: TFMDateTime) ;
+{ displays additional signer form for notes and returns a record of the selection }
+var
+  frmAddlSigners: TfrmAddlSigners;
+  W, H, i: Integer;
+begin
+  frmAddlSigners := TfrmAddlSigners.Create(Application);
+  try
+    with frmAddlSigners do
+    begin
+      FTabID := TabID;
+      FSigAction := SigAction;
+      FNoteIEN := NoteIEN;
+      FRefDate := ARefDate;
+      FastAssign(Exclusions, FExclusions);
+      FToday := FloatToStr(FMToday);
+      if FSigAction = SG_COSIGNER then
+        begin
+          pnlAdditional.Visible := False;
+          Height := Height - pnlAdditional.Height;
+        end;
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      with FExclusions do for i := 0 to Count-1 do
+        begin
+          if Piece(Strings[i],U,3) = 'Author' then txtAuthor.Text := Piece(Strings[i], U, 2)
+          else if Piece(Strings[i],U,3) = 'Expected Cosigner' then
+            begin
+              cboCosigner.Items.Add(Strings[i]);
+              cboCosigner.ItemIndex := 0;
+            end
+          else
+          begin
+            DstList.Items.Add(Strings[i]);
+            btnRemoveAllSigners.Enabled := DstList.Items.Count > 0;
+          end;
+        end;
+
+      if (SigAction = SG_COSIGNER) or (SigAction = SG_BOTH) then
+        begin
+          lblCosigner.Caption := 'Expected cosigner';
+          cboCosigner.Caption := 'Expected cosigner';
+          cboCosigner.Color := clWindow;
+          cboCosigner.Enabled := True;
+          cboCosigner.InitLongList('');
+        end;
+      if (SigAction = SG_ADDITIONAL) or (SigAction = SG_BOTH) then
+        cboSrcList.InitLongList('');
+      FChanged := False;
+      ShowModal;
+      with SignerList do
+        begin
+          Signers := TStringList.Create;
+          FastAssign(FSigners, Signers);
+          Cosigner := FCosigner;
+          Changed := FChanged ;
+        end ;
+    end; {with frmAddlSigners}
+  finally
+    frmAddlSigners.Release;
+  end;
+end;
+
+procedure TfrmAddlSigners.NewPersonNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  TORComboBox(Sender).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmAddlSigners.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmAddlSigners.cmdOKClick(Sender: TObject);
+var
+  i: integer;
+begin
+  FChanged := False;
+  if (FSigAction = SG_ADDITIONAL) and ((DstList.Items.Count = 0) and (FSigners.Count = 0)) then
+  begin
+    InfoBox(TX_SIGNER_TEXT, TX_SIGNER_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  if not CosignerOK then Exit;
+  FChanged := True;
+  FCosigner := cboCosigner.ItemIEN;
+  for i := 0 to DstList.Items.Count-1 do
+    begin
+      if fExclusions.IndexOf(DstList.Items[i]) < 0 then FSigners.Add(DstList.Items[i]);
+    end;
+  Close;
+end;
+
+procedure TfrmAddlSigners.cboSrcListMouseClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if cboSrcList.ItemIndex = -1 then exit;
+  if (DstList.SelectByID(cboSrcList.ItemID) <> -1) then
+    begin
+      InfoBox(TX_DUP_SIGNER, TX_SIGNER_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  for i := 0 to FExclusions.Count-1 do
+    if (Piece(FExclusions.Strings[i],U,1) = cboSrcList.ItemID) then
+      begin
+        InfoBox(TX_BAD_SIGNER, TX_SIGNER_CAP, MB_OK or MB_ICONWARNING);
+        Exit;
+      end;
+  DstList.Items.Add(cboSrcList.Items[cboSrcList.Itemindex]) ;
+  btnRemoveSigners.Enabled := DstList.SelCount > 0;
+  btnRemoveAllSigners.Enabled := DstList.Items.Count > 0;
+   
+end;
+
+procedure TfrmAddlSigners.btnRemoveAllSignersClick(Sender: TObject);
+begin
+  inherited;
+  DstList.SelectAll;
+  btnRemoveSignersClick(self);
+end;
+
+procedure TfrmAddlSigners.btnRemoveSignersClick(Sender: TObject);
+var
+  i,j: integer;
+begin
+  with DstList do
+    begin
+      if ItemIndex = -1 then exit ;
+      for i := Items.Count-1 downto 0 do
+        if Selected[i] then
+          begin
+            j := FExclusions.IndexOf(Items[i]);
+            FSigners.Add(ORFn.Pieces(Items[i], U, 1, 2) + '^REMOVE');
+            if j > -1 then FExclusions.Delete(j);
+            Items.Delete(i) ;
+          end;
+    end;
+end;
+
+procedure TfrmAddlSigners.btnAddSignersClick(Sender: TObject);
+begin
+  inherited;
+  cboSrcListMouseClick(btnAddSigners);
+end;
+
+procedure TfrmAddlSigners.cboCosignerChange(Sender: TObject);
+var
+  i: integer;
+begin
+  with cboCosigner do
+  begin
+    if UserInactive(ItemID) then
+      if (InfoBox(fNoteProps.TX_USER_INACTIVE, TC_INACTIVE_USER, MB_OKCANCEL)= IDCANCEL) then exit;
+    if not CosignerOK then Exit;
+    i := DstList.SelectByID(ItemID);
+    if i > -1 then
+    begin
+      DstList.Items.Delete(i);
+      FSigners.Add(ORFn.Pieces(Items[ItemIndex], U, 1, 2) + '^REMOVE');
+    end;
+    for i := 0 to FExclusions.Count - 1 do
+      if (Piece(FExclusions.Strings[i],U,3) = 'Expected Cosigner') then
+        FExclusions.Strings[i] := ORFn.Pieces(Items[ItemIndex], U, 1, 2) + '^Expected Cosigner';
+  end;
+end;
+
+procedure TfrmAddlSigners.FormCreate(Sender: TObject);
+begin
+  FSigners := TStringList.Create;
+  FExclusions := TStringList.Create;
+end;
+
+procedure TfrmAddlSigners.FormDestroy(Sender: TObject);
+begin
+  FSigners.Free;
+  FExclusions.Free;
+end;
+
+procedure TfrmAddlSigners.DstListChange(Sender: TObject);
+begin
+  inherited;
+if DstList.SelCount = 1 then
+    if Piece(DstList.Items[0], '^', 1) = '' then
+    begin
+      btnRemoveSigners.Enabled := false;
+      btnRemoveAllSigners.Enabled := false;
+      exit;
+    end;
+  btnRemoveSigners.Enabled := DstList.SelCount > 0;
+  btnRemoveAllSigners.Enabled := DstList.Items.Count > 0;
+end;
+
+procedure TfrmAddlSigners.cboSrcListKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_RETURN then cboSrcListMouseClick(Self);
+end;
+
+function TfrmAddlSigners.CosignerOK: Boolean;
+begin
+  Result := False;
+  if not cboCosigner.Enabled then
+    begin
+      Result := True;
+      Exit;
+    end;
+  if cboCosigner.ItemIndex < 0 then
+    begin
+      InfoBox(TX_NO_DELETE, TX_NO_DELETE_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  case FTabID of
+    CT_NOTES, CT_CONSULTS:
+      if (not CanCosign(TitleForNote(FNoteIEN), 0, cboCosigner.ItemIEN, FRefDate)) then
+        begin
+          InfoBox(cboCosigner.Text + TX_NO_COSIGNER, TX_NO_COSIGNER_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+        end;
+    CT_DCSUMM:
+      if not IsUserAProvider(cboCosigner.ItemIEN, FMNow) then
+        begin
+          InfoBox(cboCosigner.Text + TX_NO_COSIGNER, TX_NO_COSIGNER_CAP, MB_OK or MB_ICONWARNING);
+          Exit;
+        end;
+  end;
+  Result := True;
+end;
+
+procedure TfrmAddlSigners.cboCosignerNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  case FTabID of
+    CT_NOTES:     TORComboBox(Sender).ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction, FToday));
+    CT_CONSULTS:  TORComboBox(Sender).ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction, FToday));
+    //CQ #17218 - Updated to properly filter co-signers - JCS
+    //CT_DCSUMM:    TORComboBox(Sender).ForDataUse(SubSetOfProviders(StartFrom, Direction));
+    CT_DCSUMM: (Sender as TORComboBox).ForDataUse(SubSetOfCosigners(StartFrom, Direction,
+        FMToday, 0, frmDCSumm.lstSumms.ItemIEN));
+
+  end;
+end;
+
+procedure TfrmAddlSigners.cboCosignerExit(Sender: TObject);
+begin
+  with cboCosigner do if Text = '' then ItemIndex := -1;
+end;
+
+procedure TfrmAddlSigners.cboSrcListChange(Sender: TObject);
+begin
+  inherited;
+btnAddSigners.Enabled := CboSrcList.ItemIndex > -1;
+end;
+
+procedure TfrmAddlSigners.cboSrcListClick(Sender: TObject);
+begin
+  if UserInactive(cboSrcList.ItemID) then
+    if (InfoBox(fNoteProps.TX_USER_INACTIVE, TC_INACTIVE_USER, MB_OKCANCEL)= IDCANCEL) then exit;
+
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAlertForward.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAlertForward.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAlertForward.dfm	(revision 1676)
@@ -0,0 +1,200 @@
+inherited frmAlertForward: TfrmAlertForward
+  Left = 297
+  Top = 206
+  BorderStyle = bsDialog
+  Caption = 'Forward Alert'
+  ClientHeight = 381
+  ClientWidth = 387
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 393
+  ExplicitHeight = 406
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 387
+    Height = 381
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object SrcLabel: TLabel
+      Left = 12
+      Top = 120
+      Width = 144
+      Height = 30
+      AutoSize = False
+      Caption = 'Select one or more names to receive forwarded alert'
+      WordWrap = True
+    end
+    object DstLabel: TLabel
+      Left = 231
+      Top = 133
+      Width = 145
+      Height = 16
+      AutoSize = False
+      Caption = 'Currently selected recipients'
+    end
+    object Label1: TLabel
+      Left = 12
+      Top = 47
+      Width = 44
+      Height = 13
+      Caption = 'Comment'
+    end
+    object cmdOK: TButton
+      Left = 105
+      Top = 349
+      Width = 75
+      Height = 25
+      Caption = '&OK'
+      TabOrder = 7
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 193
+      Top = 349
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = '&Cancel'
+      TabOrder = 8
+      OnClick = cmdCancelClick
+    end
+    object cboSrcList: TORComboBox
+      Left = 12
+      Top = 156
+      Width = 144
+      Height = 185
+      Style = orcsSimple
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2,3'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnChange = cboSrcListChange
+      OnKeyDown = cboSrcListKeyDown
+      OnMouseClick = cboSrcListMouseClick
+      OnNeedData = cboSrcListNeedData
+      CharsNeedMatch = 1
+    end
+    object DstList: TORListBox
+      Left = 231
+      Top = 155
+      Width = 144
+      Height = 185
+      ItemHeight = 13
+      MultiSelect = True
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = DstListChange
+      Caption = 'Currently selected recipients'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+      OnChange = DstListChange
+    end
+    object memAlert: TMemo
+      Left = 12
+      Top = 8
+      Width = 363
+      Height = 33
+      TabStop = False
+      Color = clBtnFace
+      Lines.Strings = (
+        'memAlert')
+      ReadOnly = True
+      TabOrder = 0
+      WantReturns = False
+    end
+    object memComment: TMemo
+      Left = 12
+      Top = 64
+      Width = 363
+      Height = 49
+      MaxLength = 180
+      ScrollBars = ssVertical
+      TabOrder = 1
+    end
+    object btnAddAlert: TButton
+      Left = 162
+      Top = 200
+      Width = 63
+      Height = 25
+      Caption = '&Add'
+      TabOrder = 3
+      OnClick = btnAddAlertClick
+    end
+    object btnRemoveAlertFwrd: TButton
+      Left = 162
+      Top = 231
+      Width = 63
+      Height = 25
+      Caption = '&Remove'
+      Enabled = False
+      TabOrder = 5
+      OnClick = btnRemoveAlertFwrdClick
+    end
+    object btnRemoveAllAlertFwrd: TButton
+      Left = 162
+      Top = 262
+      Width = 63
+      Height = 25
+      Caption = 'R&emove All'
+      Enabled = False
+      TabOrder = 6
+      OnClick = btnRemoveAllAlertFwrdClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 56
+    Top = 72
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboSrcList'
+        'Label = SrcLabel'
+        'Status = stsOK')
+      (
+        'Component = DstList'
+        'Status = stsDefault')
+      (
+        'Component = memAlert'
+        'Status = stsDefault')
+      (
+        'Component = memComment'
+        'Status = stsDefault')
+      (
+        'Component = btnAddAlert'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAlertFwrd'
+        'Status = stsDefault')
+      (
+        'Component = frmAlertForward'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAllAlertFwrd'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAlertForward.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAlertForward.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAlertForward.pas	(revision 1676)
@@ -0,0 +1,198 @@
+unit fAlertForward;
+
+interface
+
+uses Windows, Messages, SysUtils, Classes, Graphics, Forms, Controls,
+  Dialogs, StdCtrls, Buttons, ORCtrls, ORfn, ExtCtrls, fAutoSz, ComCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmAlertForward = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboSrcList: TORComboBox;
+    DstList: TORListBox;
+    SrcLabel: TLabel;
+    DstLabel: TLabel;
+    pnlBase: TORAutoPanel;
+    memAlert: TMemo;
+    Label1: TLabel;
+    memComment: TMemo;
+    btnAddAlert: TButton;
+    btnRemoveAlertFwrd: TButton;
+    btnRemoveAllAlertFwrd: TButton;
+    procedure btnRemoveAlertFwrdClick(Sender: TObject);
+    procedure btnAddAlertClick(Sender: TObject);
+    procedure cboSrcListNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboSrcListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure cboSrcListMouseClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboSrcListChange(Sender: TObject);
+    procedure DstListChange(Sender: TObject);
+    procedure btnRemoveAllAlertFwrdClick(Sender: TObject);
+  private
+    RemovingAll: boolean;
+  end;
+
+function ForwardAlertTo(Alert: String): Boolean;
+
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, VA508AccessibilityRouter;
+
+const
+    TX_DUP_RECIP = 'You have already selected that recipient.';
+    TX_RECIP_CAP = 'Error adding recipient';
+
+var  XQAID: string;
+
+function ForwardAlertTo(Alert: String): Boolean;
+var
+  frmAlertForward: TfrmAlertForward;
+begin
+  frmAlertForward := TfrmAlertForward.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmAlertForward);
+    with frmAlertForward do
+    begin
+      memAlert.SetTextBuf(PChar(Piece(Alert, U, 2)));
+      XQAID := Piece(Alert, U, 1);
+      ShowModal;
+    end;
+  finally
+    frmAlertForward.Release;
+    Result := True;
+  end;
+end;
+
+procedure TfrmAlertForward.FormCreate(Sender: TObject);
+begin
+  inherited;
+  if ScreenReaderSystemActive then
+    memAlert.TabStop := TRUE;
+  cboSrcList.InitLongList('');  
+end;
+
+procedure TfrmAlertForward.cboSrcListNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmAlertForward.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmAlertForward.cmdOKClick(Sender: TObject);
+var
+  i: integer ;
+  Recip: string;
+begin
+
+  for i := 0 to DstList.Items.Count-1 do
+  begin
+    Recip := Piece(DstList.Items[i], U, 1);
+    memComment.Text := StringReplace(memComment.Text, CRLF, ' ', [rfReplaceAll]);
+    ForwardAlert(XQAID, Recip, 'A', memComment.Text);
+  end;
+  Close;
+end;
+
+procedure TfrmAlertForward.DstListChange(Sender: TObject);
+var
+  HasFocus: boolean;
+begin
+  inherited;
+  if DstList.SelCount = 1 then
+    if Piece(DstList.Items[0], '^', 1) = '' then
+    begin
+      btnRemoveAlertFwrd.Enabled := false;
+      btnRemoveAllAlertFwrd.Enabled := false;
+      exit;
+    end;
+  HasFocus := btnRemoveAlertFwrd.Focused;
+  if Not HasFocus then
+    HasFocus := btnRemoveAllAlertFwrd.Focused;
+  btnRemoveAlertFwrd.Enabled := DstList.SelCount > 0;
+  btnRemoveAllAlertFwrd.Enabled := DstList.Items.Count > 0;
+  if HasFocus and (DstList.SelCount = 0) then
+    btnAddAlert.SetFocus; 
+end;
+
+procedure TfrmAlertForward.btnAddAlertClick(Sender: TObject);
+begin
+  inherited;
+  cboSrcListMouseClick(btnAddAlert);
+end;
+
+procedure TfrmAlertForward.btnRemoveAlertFwrdClick(Sender: TObject);
+var
+  i: integer;
+begin
+  with DstList do
+    begin
+      if ItemIndex = -1 then exit ;
+      for i := Items.Count-1 downto 0 do
+        if Selected[i] then
+        begin
+          if ScreenReaderSystemActive and (not RemovingAll) then
+            GetScreenReader.Speak(Piece(DstList.Items[i],U,2) +
+            ' Removed from ' + DstLabel.Caption);
+          Items.Delete(i) ;
+        end;
+    end;
+end;
+
+procedure TfrmAlertForward.btnRemoveAllAlertFwrdClick(Sender: TObject);
+begin
+  inherited;
+  DstList.SelectAll;
+  RemovingAll := TRUE;
+  try
+    btnRemoveAlertFwrdClick(self);
+    if ScreenReaderSystemActive then
+      GetScreenReader.Speak(DstLabel.Caption + ' Cleared');
+  finally
+    RemovingAll := FALSE;
+  end;
+end;
+
+procedure TfrmAlertForward.cboSrcListChange(Sender: TObject);
+begin
+  inherited;
+  btnAddAlert.Enabled := CboSrcList.ItemIndex > -1;
+end;
+
+procedure TfrmAlertForward.cboSrcListKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_RETURN then
+  begin
+     cboSrcListMouseClick(Self);
+  end;
+end;
+
+procedure TfrmAlertForward.cboSrcListMouseClick(Sender: TObject);
+begin
+  if cboSrcList.ItemIndex = -1 then exit;
+  if (DstList.SelectByID(cboSrcList.ItemID) <> -1) then
+    begin
+      InfoBox(TX_DUP_RECIP, TX_RECIP_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  DstList.Items.Add(cboSrcList.Items[cboSrcList.Itemindex]);
+  if ScreenReaderSystemActive then
+    GetScreenReader.Speak(Piece(cboSrcList.Items[cboSrcList.Itemindex],U,2) +
+      ' Added to ' + DstLabel.Caption);
+  btnRemoveAlertFwrd.Enabled := DstList.SelCount > 0;
+  btnRemoveAllAlertFwrd.Enabled := DstList.Items.Count > 0;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyBox.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyBox.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyBox.dfm	(revision 1676)
@@ -0,0 +1,89 @@
+inherited frmAllgyBox: TfrmAllgyBox
+  Left = 487
+  Top = 242
+  Caption = 'frmAllgyBox'
+  ClientWidth = 449
+  Constraints.MinWidth = 457
+  Position = poMainFormCenter
+  ExplicitWidth = 457
+  ExplicitHeight = 355
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited memReport: TRichEdit
+    Width = 449
+    ExplicitWidth = 449
+  end
+  inherited pnlButton: TPanel
+    Width = 449
+    ExplicitWidth = 449
+    inherited cmdPrint: TButton
+      Left = 293
+      Anchors = [akTop, akRight]
+      Caption = '&Print'
+      TabOrder = 3
+      ExplicitLeft = 293
+    end
+    inherited cmdClose: TButton
+      Left = 373
+      Anchors = [akTop, akRight]
+      Caption = '&Close'
+      TabOrder = 4
+      ExplicitLeft = 373
+    end
+    object cmdEdit: TButton
+      Left = 98
+      Top = 0
+      Width = 90
+      Height = 21
+      Caption = 'E&dit'
+      TabOrder = 1
+      Visible = False
+      OnClick = cmdEditClick
+    end
+    object cmdAdd: TButton
+      Left = 2
+      Top = 0
+      Width = 90
+      Height = 21
+      Caption = '&Add New'
+      TabOrder = 0
+      OnClick = cmdAddClick
+    end
+    object cmdInError: TButton
+      Left = 195
+      Top = 0
+      Width = 90
+      Height = 21
+      Caption = '&Entered in Error'
+      TabOrder = 2
+      OnClick = cmdInErrorClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdEdit'
+        'Status = stsDefault')
+      (
+        'Component = cmdAdd'
+        'Status = stsDefault')
+      (
+        'Component = cmdInError'
+        'Status = stsDefault')
+      (
+        'Component = memReport'
+        'Status = stsDefault')
+      (
+        'Component = pnlButton'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrint'
+        'Status = stsDefault')
+      (
+        'Component = cmdClose'
+        'Status = stsDefault')
+      (
+        'Component = frmAllgyBox'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyBox.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyBox.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyBox.pas	(revision 1676)
@@ -0,0 +1,176 @@
+unit fAllgyBox;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fRptBox, StdCtrls, ExtCtrls, ComCtrls, fARTAllgy, ORFn,
+  VA508AccessibilityManager;
+
+type
+  TfrmAllgyBox = class(TfrmReportBox)
+    cmdEdit: TButton;
+    cmdAdd: TButton;
+    cmdInError: TButton;
+    procedure cmdAddClick(Sender: TObject);
+    procedure cmdEditClick(Sender: TObject);
+    procedure cmdInErrorClick(Sender: TObject);
+  private
+    { Private declarations }
+    FAllergyIEN: integer;
+    procedure RefreshText;
+  public
+    { Public declarations }
+  end;
+
+procedure AllergyBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean; AllergyIEN: integer);
+
+var
+  frmAllgyBox: TfrmAllgyBox;
+
+implementation
+
+{$R *.dfm}
+
+uses rCover, fCover, rODAllergy;
+
+const
+  NEW_ALLERGY = True;
+  ENTERED_IN_ERROR = True;
+
+function CreateAllergyBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean): TfrmAllgyBox;
+var
+  i, AWidth, MaxWidth, AHeight: Integer;
+  Rect: TRect;
+  // %$@# buttons!
+  BtnArray: array of TButton;
+  BtnRight: array of integer;
+  BtnLeft:  array of integer;
+  j, k: integer;
+  x: string;
+begin
+  Result := TfrmAllgyBox.Create(Application);
+  try
+    with Result do
+    begin
+      k := 0;
+      with pnlButton do for j := 0 to ControlCount - 1 do
+        if Controls[j] is TButton then
+          begin
+            SetLength(BtnArray, k+1);
+            SetLength(BtnRight, k+1);
+            BtnArray[j] := TButton(Controls[j]);
+            BtnRight[j] := ResizeWidth(Font, MainFont, BtnArray[j].Width - BtnArray[j].Width - BtnArray[j].Left);
+            k := k + 1;
+          end;
+      MaxWidth := 350;
+      for i := 0 to ReportText.Count - 1 do
+      begin
+        AWidth := lblFontTest.Canvas.TextWidth(ReportText[i]);
+        if AWidth > MaxWidth then MaxWidth := AWidth;
+      end;
+      MaxWidth := MaxWidth + GetSystemMetrics(SM_CXVSCROLL);
+      AHeight := (ReportText.Count * (lblFontTest.Height + 2)) + pnlbutton.Height;
+      AHeight := HigherOf(AHeight, 250);
+      if AHeight > (Screen.Height - 80) then AHeight := Screen.Height - 80;
+      if MaxWidth > Screen.Width then MaxWidth := Screen.Width;
+      ClientWidth := MaxWidth;
+      ClientHeight := AHeight;
+      Rect := BoundsRect;
+      ForceInsideWorkArea(Rect);
+      BoundsRect := Rect;
+      ResizeAnchoredFormToFont(Result);
+
+      //CQ6889 - force Print & Close buttons to bottom right of form regardless of selected font size
+      cmdClose.Left := (pnlButton.Left+pnlButton.Width)-cmdClose.Width;
+      cmdPrint.Left := (cmdClose.Left-cmdPrint.Width) - 1;
+      //end CQ6889
+
+      Constraints.MinWidth := cmdAdd.Width + cmdEdit.Width + cmdInError.Width + cmdPrint.Width + cmdClose.Width + 20;
+      Constraints.MinHeight := 2*pnlButton.Height + memReport.Height;
+      cmdAdd.Left := 1;
+      cmdEdit.Left := (cmdAdd.Left + cmdAdd.Width) + 1;
+      cmdInError.Left := (cmdEdit.Left + cmdEdit.Width) + 1;
+
+      SetLength(BtnLeft, k);
+      for j := 0 to k - 1 do
+        BtnLeft[j] := pnlButton.Width - BtnArray[j].Width - BtnRight[j];
+      QuickCopy(ReportText, memReport);
+      for i := 1 to Length(ReportTitle) do if ReportTitle[i] = #9 then ReportTitle[i] := ' ';
+      Caption := ReportTitle;
+      memReport.SelStart := 0;
+      cmdPrint.Visible := AllowPrint;
+      cmdAdd.Enabled := True;  //IsARTClinicalUser(x);   v26.12
+      cmdEdit.Enabled := IsARTClinicalUser(x);  
+      cmdInError.Enabled := IsARTClinicalUser(x);
+    end;
+  except
+    KillObj(@Result);
+    raise;
+  end;
+end;
+
+procedure AllergyBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean; AllergyIEN: integer);
+begin
+  frmAllgyBox := CreateAllergyBox(ReportText, ReportTitle, AllowPrint);
+  try
+    with frmAllgyBox do
+    begin
+      FAllergyIEN := AllergyIEN;
+      if not ContainsVisibleChar(memReport.Text) then RefreshText;
+      ShowModal;
+    end;
+  finally
+    frmAllgyBox.Release;
+  end;
+end;
+
+procedure TfrmAllgyBox.cmdAddClick(Sender: TObject);
+var
+  Changed: boolean;
+begin
+  inherited;
+  Visible := False;
+  Changed := EnterEditAllergy(0, NEW_ALLERGY, not ENTERED_IN_ERROR);
+  if not Changed then
+    Close
+  else
+    begin
+      frmCover.UpdateAllergiesList;
+      Close;
+    end
+end;
+
+procedure TfrmAllgyBox.cmdEditClick(Sender: TObject);
+var
+  Changed: boolean;
+begin
+  inherited;
+  Visible := False;
+  Changed := EnterEditAllergy(FAllergyIEN, not NEW_ALLERGY, not ENTERED_IN_ERROR);
+  if Changed then RefreshText;
+  Visible := True;
+end;
+
+procedure TfrmAllgyBox.cmdInErrorClick(Sender: TObject);
+var
+  Changed: boolean;
+begin
+  inherited;
+  Visible := False;
+  Changed := MarkEnteredInError(FAllergyIEN);
+  if Changed then
+    begin
+      frmCover.UpdateAllergiesList;
+      Close;
+    end
+  else Visible := True;
+end;
+
+procedure TfrmAllgyBox.RefreshText;
+begin
+  memReport.Clear;
+  QuickCopy(DetailAllergy(FAllergyIEN), memReport);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyFind.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyFind.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyFind.dfm	(revision 1676)
@@ -0,0 +1,327 @@
+inherited frmAllgyFind: TfrmAllgyFind
+  Left = 408
+  Top = 234
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Causative Agent Lookup'
+  ClientHeight = 472
+  ClientWidth = 445
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 408
+  ExplicitTop = 234
+  ExplicitWidth = 453
+  ExplicitHeight = 506
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSearch: TLabel [0]
+    Left = 0
+    Top = 0
+    Width = 445
+    Height = 25
+    Align = alTop
+    AutoSize = False
+    Caption = 'Enter causative agent for Allergy or Adverse Drug Reaction:'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    Layout = tlBottom
+  end
+  object lblSelect: TLabel [1]
+    Left = 5
+    Top = 124
+    Width = 152
+    Height = 13
+    Caption = 'Select one of the following items'
+    Visible = False
+  end
+  object lblDetail: TLabel [2]
+    Left = 0
+    Top = 25
+    Width = 445
+    Height = 39
+    Align = alTop
+    AutoSize = False
+    Caption = 
+      '(Enter the FIRST FEW LETTERS of the causative agent (minimum of ' +
+      '3) to allow for a comprehensive search. Only one reactant may be' +
+      ' entered at a time)'
+    Layout = tlBottom
+    WordWrap = True
+  end
+  object lblSearchCaption: TLabel [3]
+    Left = 6
+    Top = 73
+    Width = 52
+    Height = 13
+    Caption = 'Search for:'
+  end
+  object txtSearch: TCaptionEdit [4]
+    Left = 4
+    Top = 88
+    Width = 331
+    Height = 21
+    TabOrder = 0
+    OnChange = txtSearchChange
+    Caption = 
+      'Enter causative agent for Allergy or Adverse Drug Reaction (Ente' +
+      'r at least 3 characters)'
+  end
+  object cmdSearch: TButton [5]
+    Left = 362
+    Top = 88
+    Width = 75
+    Height = 21
+    Caption = '&Search'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdSearchClick
+  end
+  object cmdOK: TButton [6]
+    Left = 263
+    Top = 422
+    Width = 75
+    Height = 22
+    Caption = '&OK'
+    TabOrder = 4
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [7]
+    Left = 345
+    Top = 422
+    Width = 75
+    Height = 22
+    Cancel = True
+    Caption = '&Cancel'
+    TabOrder = 5
+    OnClick = cmdCancelClick
+  end
+  object stsFound: TStatusBar [8]
+    Left = 0
+    Top = 453
+    Width = 445
+    Height = 19
+    Panels = <>
+    SimplePanel = True
+  end
+  object ckNoKnownAllergies: TCheckBox [9]
+    Left = 320
+    Top = 118
+    Width = 119
+    Height = 17
+    Caption = '&No Known Allergies'
+    TabOrder = 3
+    OnClick = ckNoKnownAllergiesClick
+  end
+  object tvAgent: TORTreeView [10]
+    Left = 2
+    Top = 138
+    Width = 437
+    Height = 270
+    HideSelection = False
+    Indent = 19
+    ReadOnly = True
+    StateImages = imTree
+    TabOrder = 2
+    OnDblClick = tvAgentDblClick
+    Caption = 'Select from one of the following items'
+    NodePiece = 0
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtSearch'
+        'Status = stsDefault')
+      (
+        'Component = cmdSearch'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = stsFound'
+        'Status = stsDefault')
+      (
+        'Component = ckNoKnownAllergies'
+        'Status = stsDefault')
+      (
+        'Component = tvAgent'
+        'Status = stsDefault')
+      (
+        'Component = frmAllgyFind'
+        'Status = stsDefault'))
+  end
+  object imTree: TImageList
+    Left = 396
+    Top = 150
+    Bitmap = {
+      494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000001000000001002000000000000010
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FF000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000007B7B7B007B7B
+      7B007B7B7B00FFFFFF00FFFFFF00000000007B7B7B00FFFFFF00FFFFFF000000
+      00007B7B7B007B7B7B007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FF000000FF000000FF0000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B007B7B7B007B7B7B00FFFFFF007B7B7B007B7B7B007B7B7B00FFFFFF007B7B
+      7B007B7B7B007B7B7B0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000FF000000FF000000FF0000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00007B7B7B007B7B7B007B7B7B00FFFFFF007B7B7B00000000007B7B7B007B7B
+      7B007B7B7B000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000000000FF
+      000000FF000000FF000000FF000000FF00000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B007B7B7B007B7B7B00000000007B7B7B007B7B7B007B7B
+      7B00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FF000000FF
+      000000FF000000FF000000FF000000FF00000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000007B7B7B00000000007B7B7B00FFFFFF007B7B7B000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000008484840000FF000000FF
+      0000000000000000000000FF000000FF000000FF000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000007B7B7B007B7B7B007B7B7B00FFFFFF00FFFF
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840000FF0000000000000000
+      000000000000000000000000000000FF000000FF000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000007B7B7B007B7B7B007B7B7B0000000000FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000FF000000FF000000FF0000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000007B7B7B00000000007B7B7B007B7B7B007B7B7B00000000007B7B
+      7B00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FF000000FF0000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00007B7B7B007B7B7B00000000007B7B7B007B7B7B007B7B7B00000000007B7B
+      7B007B7B7B00FFFFFF00FFFFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000FF000000FF00000000
+      0000000000000000000000000000000000000000000000000000000000007B7B
+      7B007B7B7B007B7B7B00000000007B7B7B007B7B7B007B7B7B00FFFFFF007B7B
+      7B007B7B7B007B7B7B00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000008484840000FF
+      00000000000000000000000000000000000000000000000000007B7B7B007B7B
+      7B007B7B7B000000000000000000000000007B7B7B0000000000000000000000
+      00007B7B7B007B7B7B007B7B7B00000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      840000FF00000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000FF000000FF0000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000100000000100010000000000800000000000000000000000
+      000000000000000000000000FFFFFF00FFFFFFFFFFFF0000FFFFFFFFE3380000
+      FFFFF9FFC1110000FFFFF0FFE0030000FFFFF0FFF0470000FFFFE07FF88F0000
+      FFFFC07FFD1F0000FFFF843FFE0F0000FFFF1E3FFE270000FFFFFE1FFA230000
+      FFFFFF1FF2210000FFFFFF8FE2000000FFFFFFC7C7710000FFFFFFE3FFFF0000
+      FFFFFFF8FFFF0000FFFFFFFFFFFF000000000000000000000000000000000000
+      000000000000}
+  end
+  object imgLblAllgyFindTree: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvAgent
+      end>
+    ImageList = imTree
+    Labels = <
+      item
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Check'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Greyed X and Exclaimation'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end>
+    Left = 400
+    Top = 192
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyFind.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyFind.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAllgyFind.pas	(revision 1676)
@@ -0,0 +1,356 @@
+unit fAllgyFind;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, ComCtrls, ImgList, VA508AccessibilityManager,
+  VA508ImageListLabeler;
+
+type
+  TfrmAllgyFind = class(TfrmAutoSz)
+    txtSearch: TCaptionEdit;
+    cmdSearch: TButton;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblSearch: TLabel;
+    lblSelect: TLabel;
+    stsFound: TStatusBar;
+    ckNoKnownAllergies: TCheckBox;
+    tvAgent: TORTreeView;
+    imTree: TImageList;
+    lblDetail: TLabel;
+    lblSearchCaption: TLabel;
+    imgLblAllgyFindTree: TVA508ImageListLabeler;
+    procedure cmdSearchClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure txtSearchChange(Sender: TObject);
+    procedure BuildAgentTree(AgentList: TStrings; const Parent: string; Node: TORTreeNode);
+    procedure ckNoKnownAllergiesClick(Sender: TObject);
+    procedure tvAgentDblClick(Sender: TObject);
+  private
+    FAllergy: string   ;
+    FExpanded : boolean;
+  end;
+
+procedure AllergyLookup(var Allergy: string; NKAEnabled: boolean);
+
+implementation
+
+{$R *.DFM}
+
+uses rODAllergy, fARTFreeTextMsg;
+
+const
+  IMG_MATCHES_FOUND = 1;
+  IMG_NO_MATCHES    = 2;
+
+  TX_3_CHAR     = 'Enter at least 3 characters for a search.';
+  ST_SEARCHING  = 'Searching for allergies...';
+  ST_FOUND      = 'Select from the matching entries on the list, or search again.';
+  ST_NONE_FOUND = 'No matching items were found.';
+  TC_FREE_TEXT  = 'Causative Agent Not On File - No Matches for ';
+(*  TX_FREE_TEXT  = 'Would you like to request that this term be added to' + #13#10 +
+                  'the list of available allergies?' + #13#10 + #13#10 +
+                  '"YES" will send a bulletin to request addition of your' + #13#10 +
+                  'entry to the ALLERGY file for future use, since '   + #13#10 +
+                  'free-text entries for a patient are not allowed.' + #13#10 + #13#10 +
+                  '"NO" will allow you to enter another search term.  Please' + #13#10 +
+                  'check your spelling, try alternate spellings or a trade name,' + #13#10 +
+                  'or contact your allergy coordinator for assistance.' + #13#10 + #13#10 +
+                  '"CANCEL" will abort this entry process completely.';*)
+  // NEW TEXT SUBSTITUTED IN V26.50 - RV
+  TX_FREE_TEXT  = 'The agent you typed was not found in the database.'  + CRLF +
+                  'Consider the common causes of search failure:'       + CRLF +
+                  '      Misspellings'                                  + CRLF +
+	          '      Typing more than one agent in a single entry ' + CRLF +
+	          '      Typing "No known allergies"'                   + CRLF +
+                   CRLF +
+                   'Select "NO" to attempt the search again.  Carefully check your spelling,'+ CRLF +
+                   'try an alternate spelling, a trade name, a generic name or just entering' + CRLF +
+                   'the first few characters (minimum of 3).  Enter only one allergy at a time.' + CRLF +
+                   'Use the "No Known Allergies" check box to mark a patient as NKA.' + CRLF +
+                   CRLF +
+                   'Select "YES" to send a bulletin to the allergy coordinator to request assistance.'  + CRLF +
+                   'Only do this if you''ve tried alternate methods of finding the causative agent'  + CRLF +
+                   'and have been unsuccessful.'  + CRLF +
+                   CRLF +
+                  'Select "CANCEL" to abort this entry process.';
+
+  TX_BULLETIN   = 'Bulletin has been sent.' + CRLF +
+                  'NOTE: This reactant was NOT added for this patient.';
+  TC_BULLETIN_ERROR = 'Unable to Send Bulletin';
+  TX_BULLETIN_ERROR = 'Free text entries are no longer allowed.' + #13#10 +
+                      'Please contact your allergy coordinator if you need assistance.';
+var
+  uFileCount: integer;
+
+procedure AllergyLookup(var Allergy: string; NKAEnabled: boolean);
+var
+  frmAllgyFind: TfrmAllgyFind;
+begin
+  frmAllgyFind := TfrmAllgyFind.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmAllgyFind));
+    frmAllgyFind.ckNoKnownAllergies.Enabled := NKAEnabled;
+    frmAllgyFind.ShowModal;
+    Allergy := frmAllgyFind.FAllergy;
+  finally
+    frmAllgyFind.Release;
+  end;
+end;
+
+procedure TfrmAllgyFind.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FAllergy := '';
+  cmdOK.Enabled := False;
+end;
+
+procedure TfrmAllgyFind.txtSearchChange(Sender: TObject);
+begin
+  inherited;
+  cmdSearch.Default := True;
+  cmdOK.Default := False;
+  cmdOK.Enabled := False;
+end;
+
+procedure TfrmAllgyFind.cmdSearchClick(Sender: TObject);
+var
+  AList: TStringlist;
+  tmpNode1: TORTreeNode;
+  i: integer;
+begin
+  inherited;
+  if Length(txtSearch.Text) < 3 then
+    begin
+      InfoBox(TX_3_CHAR, 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end;
+  StatusText(ST_SEARCHING);
+  FExpanded := False;
+  AList := TStringList.Create;
+  try
+    if tvAgent.Items <> nil then tvAgent.Items.Clear;
+    FastAssign(SearchForAllergies(UpperCase(txtSearch.Text)), AList);
+    uFileCount := 0;
+    for i := 0 to AList.Count - 1 do
+      if Piece(AList[i], U, 5) = 'TOP' then uFileCount := uFileCount + 1;
+    if AList.Count = uFileCount  then
+    begin
+      lblSelect.Visible := False;
+      txtSearch.SetFocus;
+      txtSearch.SelectAll;
+      cmdOK.Default := False;
+      cmdSearch.Default := True;
+      stsFound.SimpleText := ST_NONE_FOUND;
+      cmdOKClick(Self);
+    end else
+    begin
+      //if tvAgent.Items <> nil then tvAgent.Items.Clear;
+      AList.Insert(0, 'TOP^' + IntToStr(Alist.Count - uFileCount) + ' matches found.^^^0^+');
+      AList.Add('FREETEXT^Add new free-text allergy^^^TOP^+');
+      AList.Add('^' + UpperCase(txtSearch.Text) + '^^^FREETEXT^');
+      BuildAgentTree(AList, '0', nil);
+      tmpNode1 := TORTreeNode(tvAgent.Items.getFirstNode);
+      tmpNode1.Expand(False);
+      tmpNode1 := TORTreeNode(tmpNode1.GetFirstChild);
+      if tmpNode1.HasChildren then
+        begin
+          tmpNode1.Text := tmpNode1.Text + '  (' + IntToStr(tmpNode1.Count) + ')';
+          tmpNode1.Bold := True;
+          tmpNode1.StateIndex := IMG_MATCHES_FOUND;
+          tmpNode1.Expand(True);
+          FExpanded := True;
+        end
+      else
+        begin
+          tmpNode1.Text := tmpNode1.Text + '  (no matches)';
+          tmpNode1.StateIndex := IMG_NO_MATCHES;
+        end;
+      while tmpNode1 <> nil do
+        begin
+           tmpNode1 := TORTreeNode(tmpNode1.GetNextSibling);
+           if tmpNode1 <> nil then
+             if tmpNode1.HasChildren then
+               begin
+                 tmpNode1.Text := tmpNode1.Text + '  (' + IntToStr(tmpNode1.Count) + ')';
+                 tmpNode1.StateIndex := IMG_MATCHES_FOUND;
+                 if not FExpanded then
+                   begin
+                     tmpNode1.Bold := True;
+                     tmpNode1.Expand(True);
+                     FExpanded := True;
+                   end;
+               end
+            else
+              begin
+                tmpNode1.StateIndex := IMG_NO_MATCHES;
+                tmpNode1.Text := tmpNode1.Text + '  (no matches)';
+              end;
+        end;
+      lblSelect.Visible := True;
+      tvAgent.SetFocus;
+      cmdSearch.Default := False;
+      cmdOK.Enabled := True;
+      stsFound.SimpleText := ST_FOUND;
+    end;
+  finally
+    AList.Free;
+    StatusText('');
+  end;
+end;
+
+procedure TfrmAllgyFind.cmdOKClick(Sender: TObject);
+var
+  x, AGlobal: string;
+  tmpList: TStringList;
+  OKtoContinue: boolean ;
+begin
+  inherited;
+  if ckNoKnownAllergies.Checked then
+    begin
+      FAllergy := '-1^No Known Allergy^';
+      Close;
+    end
+  else if (txtSearch.Text = '') and ((tvAgent.Selected = nil) or (tvAgent.Items.Count = uFileCount)) then
+    {bail out - no search term present, and (no items currently in tree or none selected)}
+    begin
+      FAllergy := '';
+      Exit ;
+    end
+  else if ((tvAgent.Selected = nil) or
+           (tvAgent.Items.Count = uFileCount) or
+           (Piece(TORTreeNode(tvAgent.Selected).StringData, U, 5) = 'FREETEXT')) then
+    {entry of free text agent - retry, send bulletin, or abort entry}
+    begin
+      FAllergy := '';
+      case InfoBox(TX_FREE_TEXT, TC_FREE_TEXT + UpperCase(txtSearch.Text), MB_YESNOCANCEL or MB_DEFBUTTON2 or MB_ICONQUESTION)of
+        ID_YES   :  // send bulletin and abort free-text entry
+                    begin
+                      tmpList := TStringList.Create;
+                      try
+                        OKtoContinue := False;
+                        GetFreeTextARTComment(tmpList, OKtoContinue);
+                        if not OKtoContinue then
+                        begin
+                          stsFound.SimpleText := '';
+                          txtSearch.SetFocus;
+                          Exit;
+                        end;
+                        x := SendARTBulletin(UpperCase(txtSearch.Text), tmpList);
+                        if Piece(x, U, 1) = '-1' then
+                          InfoBox(TX_BULLETIN_ERROR, TC_BULLETIN_ERROR, MB_OK or MB_ICONWARNING)
+                        else if Piece(x, U, 1) = '1' then
+                          InfoBox(TX_BULLETIN, 'Information', MB_OK or MB_ICONINFORMATION)
+                        else
+                          InfoBox(Piece(x, U, 2), TC_BULLETIN_ERROR, MB_OK or MB_ICONWARNING);
+                      finally
+                        tmpList.Free;
+                      end;
+                      Close;
+                    end;
+        ID_NO    :  // clear status message, and allow repeat search
+                    begin
+                      stsFound.SimpleText := '';
+                      txtSearch.SetFocus;
+                      Exit;
+                    end;
+        ID_CANCEL:  // abort entry and return to order menu or whatever
+                    Close;
+      end;
+    end
+  else if Piece(TORTreeNode(tvAgent.Selected).StringData, U, 6) = '+' then
+    {bail out - tree grouper selected}
+    begin
+      FAllergy := '';
+      Exit;
+    end
+  else
+    {matching item selected}
+    begin
+      FAllergy := TORTreeNode(tvAgent.Selected).StringData;
+      x := Piece(FAllergy, U, 2);
+      AGlobal := Piece(FAllergy, U, 3);
+      if ((Pos('GMRD', AGlobal) > 0) or (Pos('PSDRUG', AGlobal) > 0)) and (Pos('<', x) > 0) then
+        //x := Trim(Piece(x, '<', 1));
+        x := Copy(x, 1, Length(Piece(x, '<', 1)) - 1);
+      SetPiece(FAllergy, U, 2, x);
+      Close;
+    end;
+end;
+
+procedure TfrmAllgyFind.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FAllergy := '';
+  Close;
+end;
+
+procedure TfrmAllgyFind.ckNoKnownAllergiesClick(Sender: TObject);
+begin
+  inherited;
+  with ckNoKnownAllergies do
+    begin
+      txtSearch.Enabled := not Checked;
+      cmdSearch.Enabled := not Checked;
+      lblSearch.Enabled := not Checked;
+      lblSelect.Enabled := not Checked;
+      tvAgent.Enabled   := not Checked;
+      cmdOK.Enabled := Checked;
+    end;
+end;
+
+procedure TfrmAllgyFind.BuildAgentTree(AgentList: TStrings; const Parent: string; Node: TORTreeNode);
+var
+  MyID, MyParent, Name: string;
+  i: Integer;
+  ChildNode, tmpNode: TORTreeNode;
+  HasChildren, Found: Boolean;
+begin
+  tvAgent.Items.BeginUpdate;
+  with AgentList do for i := 0 to Count - 1 do
+    begin
+      Found := False;
+      MyParent := Piece(Strings[i], U, 5);
+      if (MyParent = Parent) then
+        begin
+          MyID := Piece(Strings[i], U, 1);
+          Name := Piece(Strings[i], U, 2);
+          HasChildren := Piece(Strings[i], U, 6) = '+';
+          if Node <> nil then
+            begin
+              if Node.HasChildren then
+                begin
+                  tmpNode := TORTreeNode(Node.GetFirstChild);
+                  while tmpNode <> nil do
+                    begin
+                      if tmpNode.Text = Piece(Strings[i], U, 2) then Found := True;
+                      tmpNode := TORTreeNode(Node.GetNextChild(tmpNode));
+                    end;
+                end
+              else
+                Node.StateIndex := 0;
+            end;
+          if Found then
+            Continue
+          else
+            begin
+              ChildNode := TORTreeNode(tvAgent.Items.AddChild(Node, Name));
+              ChildNode.StringData := AgentList[i];
+              if HasChildren then BuildAgentTree(AgentList, MyID, ChildNode);
+            end;
+        end;
+    end;
+  tvAgent.Items.EndUpdate;
+end;
+ 
+procedure TfrmAllgyFind.tvAgentDblClick(Sender: TObject);
+begin
+  inherited;
+  cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAutoSz.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAutoSz.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAutoSz.dfm	(revision 1676)
@@ -0,0 +1,22 @@
+inherited frmAutoSz: TfrmAutoSz
+  Left = 226
+  Top = 373
+  HorzScrollBar.Visible = False
+  VertScrollBar.Visible = False
+  Caption = 'frmAutoSz'
+  ClientHeight = 273
+  ClientWidth = 427
+  OldCreateOrder = True
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  ExplicitWidth = 435
+  ExplicitHeight = 300
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = frmAutoSz'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAutoSz.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAutoSz.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fAutoSz.pas	(revision 1676)
@@ -0,0 +1,129 @@
+unit fAutoSz;
+{ provides the basic mechanism to resize all the controls on a form when the form size is
+  changed.  Differs from frmAResize in that this one descends directly from TForm, rather
+  than TPage }
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmAutoSz = class(TfrmBase508Form)
+    procedure FormResize(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+    FSizes: TList;
+    FAutoSizeDisabled: Boolean;
+  protected
+    procedure Loaded; override;
+    property AutoSizeDisabled: Boolean read FAutoSizeDisabled write FAutoSizeDisabled;
+  public
+  end;
+
+var
+  frmAutoSz: TfrmAutoSz;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  ORfn, VA508AccessibilityRouter;
+type
+  TSizeRatio = class         // records relative sizes and positions for resizing logic
+    FControl: TControl;
+    FLeft: Extended;
+    FTop: Extended;
+    FWidth: Extended;
+    FHeight: Extended;
+    constructor Create(AControl: TControl; W, H: Integer);
+  end;
+
+{ TSizeRatio methods }
+
+constructor TSizeRatio.Create(AControl: TControl; W, H: Integer);
+begin
+  FControl := AControl;
+  with AControl do
+  begin
+    FLeft   := Left   / W;
+    FTop    := Top    / H;
+    FWidth  := Width  / W;
+    FHeight := Height / H;
+  end;
+end;
+
+{ TfrmAutoSz methods }
+
+procedure TfrmAutoSz.Loaded;
+{ record initial size & position info for resizing logic }
+var
+  SizeRatio: TSizeRatio;
+  i,W,H: Integer;
+  Control: TControl;
+begin
+  inherited Loaded;
+  FSizes := TList.Create;
+  if AutoSizeDisabled then Exit;
+  W := ClientWidth;
+  H := ClientHeight;
+  for i := 0 to ComponentCount - 1 do if Components[i] is TControl then
+  begin
+    Control := TControl(Components[i]);
+    W := HigherOf(W, Control.Left + Control.Width);
+    H := HigherOf(H, Control.Top + Control.Height);
+  end;
+  ClientHeight := H;
+  ClientWidth := W;
+  for i := 0 to ComponentCount - 1 do if Components[i] is TControl then
+  begin
+    SizeRatio := TSizeRatio.Create(TControl(Components[i]), W, H);
+    FSizes.Add(SizeRatio);
+  end;
+end;
+
+procedure TfrmAutoSz.FormResize(Sender: TObject);
+{ resize child controls using their design time proportions }
+var
+  SizeRatio: TSizeRatio;
+  i, W, H: Integer;
+begin
+  inherited;
+  if AutoSizeDisabled then Exit;
+  W := HigherOf(ClientWidth, HorzScrollBar.Range);
+  H := HigherOf(ClientHeight, VertScrollBar.Range);
+  with FSizes do for i := 0 to Count - 1 do
+  begin
+    SizeRatio := Items[i];
+    with SizeRatio do
+      if ((FControl is TLabel) and TLabel(FControl).AutoSize) or ((FControl is TStaticText) and TStaticText(FControl).AutoSize) then
+      begin
+        FControl.Left := Round(FLeft*W);
+        FControl.Top  := Round(FTop*H);
+      end
+      else FControl.SetBounds(Round(FLeft*W), Round(FTop*H), Round(FWidth*W), Round(FHeight*H));
+  end; {with FSizes}
+end;
+
+procedure TfrmAutoSz.FormDestroy(Sender: TObject);
+{ destroy objects used to record size and position information for controls }
+var
+  SizeRatio: TSizeRatio;
+  i: Integer;
+begin
+  inherited;
+  if FSizes <> nil then with FSizes do for i := 0 to Count-1 do
+  begin
+    SizeRatio := Items[i];
+    SizeRatio.Free;
+  end;
+  FSizes.Free;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmAutoSz);
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fBase508Form.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fBase508Form.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fBase508Form.dfm	(revision 1676)
@@ -0,0 +1,24 @@
+object frmBase508Form: TfrmBase508Form
+  Left = 194
+  Top = 109
+  Caption = 'frmBase508Form'
+  ClientHeight = 135
+  ClientWidth = 197
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  KeyPreview = True
+  OldCreateOrder = False
+  OnKeyDown = FormKeyDown
+  PixelsPerInch = 96
+  TextHeight = 13
+  object amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = frmBase508Form'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fBase508Form.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fBase508Form.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fBase508Form.pas	(revision 1676)
@@ -0,0 +1,283 @@
+unit fBase508Form;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ExtCtrls, VA508AccessibilityManager, OR2006Compatibility, uConst;
+
+type
+  TAccessibilityAction = (aaColorConversion, aaTitleBarHeightAdjustment,
+                          aaFixTabStopArrowNavigationBug);
+  TAccessibilityActions = set of TAccessibilityAction;
+
+  TfrmBase508Form = class(Tfrm2006Compatibility)
+    amgrMain: TVA508AccessibilityManager;
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FLoadedCalled: boolean;
+    FDefaultButton: TButton;
+    FActions: TAccessibilityActions;
+    FUnfocusableControlPtr: TMethod;
+    procedure AdjustForTitleBarHeightChanges;
+    function GetDefaultButton(OwnerComponent: TComponent) : TButton;
+    procedure ClickDefaultButton;
+    procedure SetDefaultButton(const Value: TButton);
+    procedure ModifyUnfocusableControl(Control: TWinControl; Attach: boolean);
+    procedure UM508(var Message: TMessage); message UM_508;
+  protected
+    procedure Activate; override;
+    procedure Loaded; override;
+    procedure SetParent(AParent: TWinControl); override;
+    procedure Notification(AComponent: TComponent;
+      Operation: TOperation); override;
+    procedure UpdateAccessabilityActions(var Actions: TAccessibilityActions); virtual;
+  public
+    constructor Create(AOwner: TComponent); override;
+    property DefaultButton : TButton read FDefaultButton write SetDefaultButton;
+  end;
+
+var
+  Last508KeyCode: LongInt = 0;
+
+procedure UnfocusableControlEnter(Self, Sender: TObject);
+
+implementation
+
+uses ORFn, VA508AccessibilityRouter, VAUtils;
+
+{$R *.dfm}
+
+const
+  MSG_508_CODE_TITLE_BAR = 1;
+
+type
+  TFriendWinControl = class(TWinControl);
+
+procedure UnfocusableControlEnter(Self, Sender: TObject);
+var
+  ctrl: TWinControl;
+begin
+  if (Last508KeyCode = VK_UP) or (Last508KeyCode = VK_LEFT) then
+  begin
+    ctrl := TWinControl(Sender);
+    ctrl := TFriendWinControl(ctrl.Parent).FindNextControl(ctrl, FALSE, TRUE, FALSE);
+    if assigned(ctrl) and (ctrl <> Sender) then
+      ctrl.SetFocus;
+    Last508KeyCode := 0;
+  end
+  else
+  if (Last508KeyCode = VK_DOWN) or (Last508KeyCode = VK_RIGHT) then
+  begin
+    keybd_event(VK_TAB,0,0,0);
+    keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
+    Last508KeyCode := 0;
+  end;
+end;
+
+{ TfrmBase508Form }
+
+// All forms in CPRS should be a descendant of this form, even those that are programatically
+// made children of other forms.
+procedure TfrmBase508Form.Activate;
+begin
+  Last508KeyCode := 0;
+  inherited;
+end;
+
+procedure TfrmBase508Form.AdjustForTitleBarHeightChanges;
+var
+  OldResize: TNotifyEvent;
+begin
+  if parent <> nil then exit;
+  OldResize := OnResize;
+  try
+    OnResize := nil;
+    AdjustForWindowsXPStyleTitleBar(Self);
+  finally
+    OnResize := OldResize;
+  end;
+end;
+
+procedure TfrmBase508Form.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (Key = VK_RETURN) and (ssCtrl in Shift) then begin
+    ClickDefaultButton;
+    Key := 0;
+  end;
+end;
+
+procedure TfrmBase508Form.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited Notification(AComponent, Operation);
+  if FLoadedCalled and (aaFixTabStopArrowNavigationBug in FActions) and (AComponent is TWinControl) then
+  begin
+    ModifyUnfocusableControl(TWinControl(AComponent), Operation = opInsert);
+  end;
+end;
+
+function TfrmBase508Form.GetDefaultButton(ownerComponent: TComponent): TButton;
+var
+  i : integer;
+begin
+  Result := nil;
+  with ownerComponent do begin
+    for i := 0 to ComponentCount - 1 do begin
+      if Components[i] is TButton then begin
+        if TButton(Components[i]).Default then
+          Result := TButton(Components[i]);
+      end
+      else if Components[i] is TFrame then
+        Result := GetDefaultButton(Components[i]);
+      if Assigned(Result) then
+        Break;
+    end;
+  end;
+end;
+
+procedure TfrmBase508Form.Loaded;
+begin
+  inherited Loaded;
+  FLoadedCalled := TRUE;
+end;
+
+procedure TfrmBase508Form.ModifyUnfocusableControl(Control: TWinControl; Attach: boolean);
+var
+  wc: TFriendWinControl;
+begin
+  if (Control is TPanel) or (Control is TCustomGroupBox) then
+  begin
+    wc := TFriendWinControl(Control);
+    if not wc.TabStop then
+    begin
+      if not assigned(wc.OnEnter) then
+      begin
+        if Attach then        
+          wc.OnEnter := TNotifyEvent(FUnfocusableControlPtr);
+      end
+      else
+      begin
+        if (not Attach) and (TMethod(wc.OnEnter).Code = FUnfocusableControlPtr.Code) then
+          wc.OnEnter := nil;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmBase508Form.SetDefaultButton(const Value: TButton);
+begin
+  FDefaultButton := Value;
+end;
+
+procedure TfrmBase508Form.SetParent(AParent: TWinControl);
+begin
+  inherited SetParent(AParent);
+  if assigned(AParent) then
+    AutoScroll := False;
+end;
+
+// to prevent a 508 feature from taking place, remove that feature's flag form the Actions set
+// in an override of the UpdateAccessabilityActions proc.
+procedure TfrmBase508Form.UM508(var Message: TMessage);
+begin
+  case Message.WParam of
+    MSG_508_CODE_TITLE_BAR: AdjustForTitleBarHeightChanges;        
+  end;
+end;
+
+procedure TfrmBase508Form.UpdateAccessabilityActions(var Actions: TAccessibilityActions);
+begin
+end;
+
+type
+  TExposedBtn = class(TButton);
+
+procedure TfrmBase508Form.ClickDefaultButton;
+var
+  tempDefaultBtn: TButton;
+begin
+  if Assigned(DefaultButton) then
+    tempDefaultBtn := DefaultButton
+  else
+    tempDefaultBtn := GetDefaultButton(Self);
+  if Assigned(tempDefaultBtn) then
+    if tempDefaultBtn.Visible then
+      TExposedBtn(tempDefaultBtn).Click;
+end;
+
+constructor TfrmBase508Form.Create(AOwner: TComponent);
+
+  procedure AdjustControls(Control: TWinControl);
+  var
+    i: integer;
+    wc: TWinControl;
+  begin
+    for I := 0 to Control.ControlCount-1 do
+    begin
+      if Control.Controls[i] is TWinControl then
+      begin
+        wc := TWinControl(Control.Controls[i]);
+        if not wc.TabStop then
+          ModifyUnfocusableControl(wc, TRUE);
+        AdjustControls(wc);
+      end;
+    end;
+  end;
+
+begin
+  inherited Create(AOwner);
+  if not assigned(Parent) then  
+    AutoScroll := True;
+  FActions := [aaColorConversion, aaTitleBarHeightAdjustment, aaFixTabStopArrowNavigationBug];
+  UpdateAccessabilityActions(FActions);
+  if aaColorConversion in FActions then
+    UpdateColorsFor508Compliance(Self);
+
+  if aaTitleBarHeightAdjustment in FActions then
+    PostMessage(Handle, UM_508, MSG_508_CODE_TITLE_BAR, 0);
+
+  if aaFixTabStopArrowNavigationBug in FActions then
+  begin
+    FUnfocusableControlPtr.Code := @UnfocusableControlEnter;
+    FUnfocusableControlPtr.Data := nil;
+    AdjustControls(Self);
+  end;
+  Last508KeyCode := 0;
+end;
+
+const
+  KEY_MASK = $20000000; // ignore Alt keys
+var
+  KeyMonitorHook: HHOOK;
+  MouseMonitorHook: HHOOK;
+
+function KeyMonitorProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; StdCall;
+begin
+  if (code = HC_ACTION) and ((lParam and KEY_MASK) = 0) then
+    Last508KeyCode := wParam;
+  Result := CallNextHookEx(KeyMonitorHook, Code, wParam, lParam);
+end;
+
+// if mouse click clear last key code
+function MouseMonitorProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; StdCall;
+begin
+  if (Code = HC_ACTION) and (wParam > WM_MOUSEFIRST) and (wParam <= WM_MOUSELAST) then
+    Last508KeyCode := 0;
+  Result := CallNextHookEx(MouseMonitorHook, Code, wParam, lParam);
+end;
+
+initialization
+  KeyMonitorHook   := SetWindowsHookEx(WH_KEYBOARD, KeyMonitorProc,   0, GetCurrentThreadID);
+  MouseMonitorHook := SetWindowsHookEx(WH_MOUSE,    MouseMonitorProc, 0, GetCurrentThreadID);
+
+  SpecifyFormIsNotADialog(TfrmBase508Form);
+  SpecifyFormIsNotADialog(Tfrm2006Compatibility);
+
+finalization
+  UnhookWindowsHookEx(KeyMonitorHook);
+  UnhookWindowsHookEx(MouseMonitorHook);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fClinicWardMeds.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fClinicWardMeds.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fClinicWardMeds.dfm	(revision 1676)
@@ -0,0 +1,77 @@
+inherited frmClinicWardMeds: TfrmClinicWardMeds
+  Left = 523
+  Top = 389
+  BorderIcons = []
+  Caption = 'Patient Location'
+  ClientHeight = 95
+  ClientWidth = 298
+  ExplicitWidth = 306
+  ExplicitHeight = 122
+  PixelsPerInch = 96
+  TextHeight = 13
+  object stxtLine3: TStaticText [0]
+    Left = 16
+    Top = 35
+    Width = 29
+    Height = 17
+    Caption = 'line 3'
+    TabOrder = 0
+  end
+  object stxtLine2: TStaticText [1]
+    Left = 16
+    Top = 20
+    Width = 29
+    Height = 17
+    Caption = 'line 2'
+    TabOrder = 1
+  end
+  object stxtLine1: TStaticText [2]
+    Left = 16
+    Top = 5
+    Width = 29
+    Height = 17
+    Caption = 'line 1'
+    TabOrder = 2
+  end
+  object btnClinic: TButton [3]
+    Left = 31
+    Top = 62
+    Width = 58
+    Height = 24
+    Anchors = [akLeft, akBottom]
+    BiDiMode = bdLeftToRight
+    ParentBiDiMode = False
+    TabOrder = 3
+    OnClick = btnClinicClick
+  end
+  object btnWard: TButton [4]
+    Left = 159
+    Top = 62
+    Width = 58
+    Height = 24
+    Anchors = [akLeft, akBottom]
+    TabOrder = 4
+    OnClick = btnWardClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = stxtLine3'
+        'Status = stsDefault')
+      (
+        'Component = stxtLine2'
+        'Status = stsDefault')
+      (
+        'Component = stxtLine1'
+        'Status = stsDefault')
+      (
+        'Component = btnClinic'
+        'Status = stsDefault')
+      (
+        'Component = btnWard'
+        'Status = stsDefault')
+      (
+        'Component = frmClinicWardMeds'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fClinicWardMeds.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fClinicWardMeds.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fClinicWardMeds.pas	(revision 1676)
@@ -0,0 +1,192 @@
+unit fClinicWardMeds;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ExtCtrls, ORCtrls,ORFn, rCore, uCore, oRNet, Math,
+  VA508AccessibilityManager;
+
+type
+  TfrmClinicWardMeds = class(TfrmAutoSz)
+    stxtLine3: TStaticText;
+    stxtLine2: TStaticText;
+    stxtLine1: TStaticText;
+    btnClinic: TButton;
+    btnWard: TButton;
+    procedure btnClinicClick(Sender: TObject);
+    procedure btnWardClick(Sender: TObject);
+
+  private
+    { Private declarations }
+    procedure StartLocationCheck;
+    procedure rpcChangeOrderLocation(pOrderList:TStringList);
+    procedure BuildMessage(MsgSw:string);
+    function  BuildOrderLocList(pOrderList:TStringList; pLocation:integer):TStringList;
+
+  public
+    { Public declarations }
+    // passes order list and selected locations to rpc to be saved with order.
+    procedure ClinicOrWardLocation(pOrderList:TStringList; pEncounterLoc: integer; pEncounterLocName: string; var RetLoc: integer); overload;
+    // returns Location selected by user.
+    function  ClinicOrWardLocation(pEncounterLoc: integer):integer;overLoad;
+    function  rpcIsPatientOnWard(Patient: string): boolean;
+    function  SelectPrintLocation(pEncounterLoc:integer):integer;
+  end;
+
+var
+  frmClinicWardMeds: TfrmClinicWardMeds;
+  ALocation,AWardLoc, AClinicLoc : integer;
+  ASelectedLoc: integer;
+  AName, ASvc, AWardName, AClinicName: string;
+  AOrderLocList: TStringList;
+  AMsgSw: string;
+
+const
+  LOCATION_CHANGE_1 = 'This patient is currently admitted to ward';
+  LOCATION_CHANGE_2 = 'These orders are written at clinic';
+  LOCATION_CHANGE_3 = 'Where do you want the orders administered?';
+   //GE CQ9537  - Message text
+  PRINT_LOCATION_1 = 'The patient has been admitted to Ward ';
+  PRINT_LOCATION_2 =  'Should the orders be printed using the new location?';
+  LOC_PRINT_MSG    = 'P';
+  LOC_MSG          = 'L';
+
+implementation
+
+uses fFrame;
+
+{$R *.dfm}
+
+//entry point
+function  TfrmClinicWardMeds.ClinicOrWardLocation(pEncounterLoc:integer):integer;
+begin
+  // Patient's current location
+   AClinicLoc  := pEncounterLoc;
+   AClinicName := Encounter.LocationName;
+   AMsgSw := LOC_MSG;
+   StartLocationCheck;
+   Result := ASelectedLoc;
+   frmClinicWardMeds.Close;
+end;
+
+//entry point
+procedure TfrmClinicWardMeds.ClinicOrWardLocation(pOrderList:TStringList;pEncounterLoc:integer;pEncounterLocName:string; var RetLoc: integer);
+begin
+  AClinicLoc        := pEncounterLoc;
+  AClinicName       := pEncounterLocName;
+  AOrderLocList     := TStringList.create;
+  AOrderLocList.Clear;
+  AMsgSw := LOC_MSG;
+  StartLocationCheck;
+  if pOrderList.Count > 0 then
+     begin
+       rpcChangeOrderLocation(BuildOrderLocList(pOrderList, ASelectedLoc));
+       RetLoc := ASelectedLoc
+     end;
+  if Assigned(AOrderLocList) then FreeAndNil(AOrderLocList);
+  frmClinicWardMeds.Close;
+end;
+
+// returns button selected by user - ward or clinic.  print location
+//entry point  -
+function  TfrmClinicWardMeds.SelectPrintLocation(pEncounterLoc:integer):integer;
+begin
+   AClinicLoc        := pEncounterLoc;
+   AMsgSw            := LOC_PRINT_MSG;
+   StartLocationCheck;
+   Result := ASelectedLoc;
+   frmClinicWardMeds.Close;
+end;
+
+procedure TfrmClinicWardMeds.StartLocationCheck;
+begin
+
+  frmClinicWardMeds := TfrmClinicWardMeds.Create(Application);
+ // ResizeFormToFont(TForm(frmClinicWardMeds));
+  CurrentLocationForPatient(Patient.DFN, ALocation, AName, ASvc);
+  AWardLoc := ALocation; //current location
+  AWardName := AName; // current location name
+  if AMsgSW = LOC_PRINT_MSG then BuildMessage(AMsgSw)
+  else
+     if (ALocation > 0) and (ALocation <> AClinicLoc) then BuildMessage(AMsgSw); //Location has changed, patient admitted
+end;
+
+procedure TfrmClinicWardMeds.btnClinicClick(Sender: TObject);
+begin
+  inherited;
+  ASelectedLoc := AClinicLoc;
+  frmClinicWardMeds.Close;
+end;
+
+procedure TfrmClinicWardMeds.btnWardClick(Sender: TObject);
+begin
+  inherited;
+   ASelectedLoc := AWardLoc;
+   frmClinicWardMeds.Close;
+end;
+
+procedure TfrmClinicWardMeds.BuildMessage(MsgSw:string);
+var
+ ALine1Len, ALine2Len, ALine3Len, ALongLine: integer;
+begin
+    with frmClinicWardMeds do
+    begin
+       btnWard.Caption   := 'Ward';
+       btnClinic.Caption := 'Clinic';
+       // message text
+       if MsgSw = LOC_MSG then
+       begin
+          //AClinicName := 'this is my long test clinic Name';
+          stxtLine1.Caption := LOCATION_CHANGE_1 + ' :' + AWardName;
+          stxtLine2.Caption := LOCATION_CHANGE_2+ ' :' + AClinicName;
+          stxtLine3.Caption := LOCATION_CHANGE_3;
+       end
+       else
+          begin
+              stxtLine1.Caption := PRINT_LOCATION_1 + ':' + AWardName;
+              stxtLine2.Caption := PRINT_LOCATION_2;
+              stxtLine3.Caption := '';
+          end;
+    stxtLine2.Left := stxtLine1.left;
+    stxtLine3.Left := stxtLine1.left;
+    ALine1Len := TextWidthByFont(frmClinicWardMeds.stxtLine1.Font.Handle, frmClinicWardMeds.stxtLine1.Caption);
+    ALine2Len := TextWidthByFont(frmClinicWardMeds.stxtLine2.Font.Handle, frmClinicWardMeds.stxtLine2.Caption);
+    ALine3Len := TextWidthByFont(frmClinicWardMeds.stxtLine3.Font.Handle, frmClinicWardMeds.stxtLine3.Caption)+25;
+    ALongLine := Max(ALine1Len,ALine2Len);
+    ALongLine := Max(ALine3Len,ALongLine);
+    frmClinicWardMeds.Width := (ALongLine + frmClinicWardMeds.stxtLine1.Left + 15);
+    end;
+    frmClinicWardMeds.ShowModal;
+    frmClinicWardMeds.Release;
+
+end;
+
+function  TfrmClinicWardMeds.BuildOrderLocList(pOrderList:TStringList; pLocation:integer):TStringList;
+var i:integer;
+    AOrderLoc: string;
+begin
+   AOrderLocList.clear;
+   for i := 0 to pOrderList.Count -1 do
+   begin
+      AOrderLoc := Piece(pOrderList.Strings[i],U,1) + U + IntToStr(pLocation);
+      AOrderLocList.Add(AOrderLoc);
+   end;
+   Result := AOrderLocList; //return value
+end;
+
+procedure TfrmClinicWardMeds.rpcChangeOrderLocation(pOrderList:TStringList);
+begin
+// OrderIEN^Location^1  -- used to alter location if ward is selected RPC expected third value to determine if
+//order is an IMO order. If it is being called from here assumed IMO order.
+
+   CallV('ORWDX CHANGE',[pOrderList, Patient.DFN, '1']);
+end;
+
+function TfrmClinicWardMeds.rpcIsPatientOnWard(Patient: string): boolean;
+begin
+  result := sCallV('ORWDX1 PATWARD',[Patient]) = '1';
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fCover.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fCover.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fCover.dfm	(revision 1676)
@@ -0,0 +1,633 @@
+inherited frmCover: TfrmCover
+  Left = 256
+  Top = 280
+  HelpContext = 1000
+  BorderIcons = []
+  Caption = 'Cover Sheet'
+  HelpFile = 'overvw'
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 640
+    Height = 356
+    Align = alClient
+    BevelOuter = bvNone
+    Constraints.MinHeight = 10
+    TabOrder = 0
+    object sptBottom: TSplitter
+      Left = 0
+      Top = 237
+      Width = 640
+      Height = 5
+      Cursor = crVSplit
+      Align = alBottom
+      Constraints.MinHeight = 5
+      OnCanResize = sptBottomCanResize
+    end
+    object pnlNotTheBottom: TPanel
+      Left = 0
+      Top = 0
+      Width = 640
+      Height = 237
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object sptTop: TSplitter
+        Left = 0
+        Top = 120
+        Width = 640
+        Height = 5
+        Cursor = crVSplit
+        Align = alTop
+        Constraints.MinHeight = 5
+        OnCanResize = sptTopCanResize
+      end
+      object pnlTop: TPanel
+        Left = 0
+        Top = 0
+        Width = 640
+        Height = 120
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object spt_2: TSplitter
+          Left = 424
+          Top = 0
+          Width = 5
+          Height = 120
+          Align = alRight
+          Constraints.MinWidth = 5
+          OnCanResize = spt_2CanResize
+        end
+        object pnl_not3: TPanel
+          Left = 0
+          Top = 0
+          Width = 424
+          Height = 120
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 0
+          object spt_1: TSplitter
+            Left = 211
+            Top = 0
+            Width = 5
+            Height = 120
+            Color = clBtnFace
+            Constraints.MinWidth = 5
+            ParentColor = False
+            OnCanResize = spt_1CanResize
+          end
+          object pnl_1: TPanel
+            Left = 0
+            Top = 0
+            Width = 211
+            Height = 120
+            Align = alLeft
+            BevelOuter = bvNone
+            TabOrder = 0
+            Visible = False
+            object lbl_1: TOROffsetLabel
+              Left = 0
+              Top = 0
+              Width = 211
+              Height = 19
+              Align = alTop
+              Caption = ' '
+              HorzOffset = 2
+              Transparent = False
+              VertOffset = 6
+              WordWrap = False
+            end
+            object lst_1: TORListBox
+              Tag = 10
+              Left = 0
+              Top = 19
+              Width = 211
+              Height = 101
+              Align = alClient
+              Ctl3D = True
+              ItemHeight = 13
+              ParentCtl3D = False
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              OnClick = CoverItemClick
+              OnExit = CoverItemExit
+              ItemTipColor = clWindow
+              LongList = False
+              TabPositions = '2,3'
+            end
+          end
+          object pnl_2: TPanel
+            Left = 216
+            Top = 0
+            Width = 208
+            Height = 120
+            Align = alClient
+            BevelOuter = bvNone
+            TabOrder = 1
+            Visible = False
+            object lbl_2: TOROffsetLabel
+              Left = 0
+              Top = 0
+              Width = 208
+              Height = 19
+              Align = alTop
+              Caption = ' '
+              HorzOffset = 2
+              Transparent = False
+              VertOffset = 6
+              WordWrap = False
+            end
+            object lst_2: TORListBox
+              Tag = 20
+              Left = 0
+              Top = 19
+              Width = 208
+              Height = 101
+              Align = alClient
+              Ctl3D = True
+              ItemHeight = 13
+              ParentCtl3D = False
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              OnClick = CoverItemClick
+              OnExit = CoverItemExit
+              ItemTipColor = clWindow
+              LongList = False
+            end
+          end
+        end
+        object pnl_3: TPanel
+          Left = 429
+          Top = 0
+          Width = 211
+          Height = 120
+          Align = alRight
+          BevelOuter = bvNone
+          TabOrder = 1
+          Visible = False
+          object lbl_3: TOROffsetLabel
+            Left = 0
+            Top = 57
+            Width = 211
+            Height = 19
+            Align = alTop
+            Caption = ' '
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 6
+            WordWrap = False
+          end
+          object sptFlag: TSplitter
+            Left = 0
+            Top = 52
+            Width = 211
+            Height = 5
+            Cursor = crVSplit
+            Align = alTop
+            Beveled = True
+            Constraints.MinHeight = 5
+          end
+          object pnlFlag: TPanel
+            Left = 0
+            Top = 0
+            Width = 211
+            Height = 52
+            Align = alTop
+            Constraints.MinHeight = 40
+            TabOrder = 0
+            object lblFlag: TOROffsetLabel
+              Left = 1
+              Top = 1
+              Width = 209
+              Height = 15
+              Align = alTop
+              Caption = 'Patient Record Flags'
+              HorzOffset = 2
+              Transparent = False
+              VertOffset = 2
+              WordWrap = False
+            end
+            object lstFlag: TORListBox
+              Left = 1
+              Top = 16
+              Width = 209
+              Height = 35
+              Align = alClient
+              Font.Charset = DEFAULT_CHARSET
+              Font.Color = clMaroon
+              Font.Height = -11
+              Font.Name = 'MS Sans Serif'
+              Font.Style = []
+              ItemHeight = 13
+              ParentFont = False
+              ParentShowHint = False
+              ShowHint = True
+              TabOrder = 0
+              OnClick = lstFlagClick
+              OnKeyDown = lstFlagKeyDown
+              ItemTipColor = clWindow
+              LongList = False
+              Pieces = '2'
+            end
+          end
+          object lst_3: TORListBox
+            Tag = 30
+            Left = 0
+            Top = 76
+            Width = 211
+            Height = 44
+            Align = alClient
+            Ctl3D = True
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clMaroon
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ItemHeight = 13
+            ParentCtl3D = False
+            ParentFont = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            OnClick = CoverItemClick
+            OnExit = CoverItemExit
+            ItemTipColor = clWindow
+            LongList = False
+            TabPositions = '20'
+          end
+        end
+      end
+      object pnlMiddle: TPanel
+        Left = 0
+        Top = 125
+        Width = 640
+        Height = 112
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        object spt_3: TSplitter
+          Left = 318
+          Top = 0
+          Width = 5
+          Height = 112
+          Constraints.MinWidth = 5
+          OnCanResize = spt_3CanResize
+        end
+        object pnl_4: TPanel
+          Left = 0
+          Top = 0
+          Width = 318
+          Height = 112
+          Align = alLeft
+          BevelOuter = bvNone
+          TabOrder = 0
+          Visible = False
+          object lbl_4: TOROffsetLabel
+            Left = 0
+            Top = 0
+            Width = 318
+            Height = 13
+            Align = alTop
+            Caption = ' '
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 0
+            WordWrap = False
+          end
+          object lst_4: TORListBox
+            Tag = 40
+            Left = 0
+            Top = 13
+            Width = 318
+            Height = 99
+            Align = alClient
+            Ctl3D = True
+            ItemHeight = 13
+            ParentCtl3D = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = CoverItemClick
+            OnExit = CoverItemExit
+            ItemTipColor = clWindow
+            LongList = False
+            TabPositions = '35'
+          end
+        end
+        object pnl_5: TPanel
+          Left = 323
+          Top = 0
+          Width = 317
+          Height = 112
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 1
+          Visible = False
+          object lbl_5: TOROffsetLabel
+            Left = 0
+            Top = 0
+            Width = 317
+            Height = 13
+            Align = alTop
+            Caption = ' '
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 0
+            WordWrap = False
+          end
+          object lst_5: TORListBox
+            Tag = 50
+            Left = 0
+            Top = 13
+            Width = 317
+            Height = 99
+            Align = alClient
+            Ctl3D = True
+            ItemHeight = 13
+            ParentCtl3D = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = CoverItemClick
+            OnExit = CoverItemExit
+            ItemTipColor = clWindow
+            LongList = False
+            TabPositions = '34,44'
+          end
+        end
+      end
+    end
+    object pnlBottom: TPanel
+      Left = 0
+      Top = 242
+      Width = 640
+      Height = 114
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 1
+      object spt_5: TSplitter
+        Left = 380
+        Top = 0
+        Width = 5
+        Height = 114
+        Align = alRight
+        Constraints.MinWidth = 5
+        OnCanResize = spt_5CanResize
+      end
+      object pnl_not8: TPanel
+        Left = 0
+        Top = 0
+        Width = 380
+        Height = 114
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 0
+        object spt_4: TSplitter
+          Left = 255
+          Top = 0
+          Width = 5
+          Height = 114
+          Constraints.MinWidth = 5
+          OnCanResize = spt_4CanResize
+        end
+        object pnl_6: TPanel
+          Left = 0
+          Top = 0
+          Width = 255
+          Height = 114
+          Align = alLeft
+          BevelOuter = bvNone
+          TabOrder = 0
+          Visible = False
+          object lbl_6: TOROffsetLabel
+            Left = 0
+            Top = 0
+            Width = 255
+            Height = 13
+            Align = alTop
+            Caption = ' '
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 0
+            WordWrap = False
+          end
+          object lst_6: TORListBox
+            Tag = 60
+            Left = 0
+            Top = 13
+            Width = 255
+            Height = 101
+            Align = alClient
+            Ctl3D = True
+            ItemHeight = 13
+            ParentCtl3D = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = CoverItemClick
+            OnExit = CoverItemExit
+            ItemTipColor = clWindow
+            LongList = False
+            TabPositions = '34'
+          end
+        end
+        object pnl_7: TPanel
+          Left = 260
+          Top = 0
+          Width = 120
+          Height = 114
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 1
+          Visible = False
+          object lbl_7: TOROffsetLabel
+            Left = 0
+            Top = 0
+            Width = 120
+            Height = 13
+            Align = alTop
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 0
+            WordWrap = False
+          end
+          object lst_7: TORListBox
+            Tag = 70
+            Left = 0
+            Top = 13
+            Width = 120
+            Height = 101
+            Align = alClient
+            Ctl3D = True
+            ItemHeight = 13
+            ParentCtl3D = False
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = CoverItemClick
+            OnExit = CoverItemExit
+            ItemTipColor = clWindow
+            LongList = False
+            TabPositions = '4,13,15,24'
+          end
+        end
+      end
+      object pnl_8: TPanel
+        Left = 385
+        Top = 0
+        Width = 255
+        Height = 114
+        Align = alRight
+        BevelOuter = bvNone
+        TabOrder = 1
+        Visible = False
+        object lbl_8: TOROffsetLabel
+          Left = 0
+          Top = 0
+          Width = 255
+          Height = 13
+          Align = alTop
+          HorzOffset = 2
+          Transparent = False
+          VertOffset = 0
+          WordWrap = False
+        end
+        object lst_8: TORListBox
+          Tag = 80
+          Left = 0
+          Top = 13
+          Width = 255
+          Height = 101
+          Align = alClient
+          Ctl3D = True
+          ItemHeight = 13
+          ParentCtl3D = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = CoverItemClick
+          OnExit = CoverItemExit
+          ItemTipColor = clWindow
+          LongList = False
+          TabPositions = '15,35'
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlNotTheBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnl_not3'
+        'Status = stsDefault')
+      (
+        'Component = pnl_1'
+        'Status = stsDefault')
+      (
+        'Component = lst_1'
+        'Status = stsDefault')
+      (
+        'Component = pnl_2'
+        'Status = stsDefault')
+      (
+        'Component = lst_2'
+        'Status = stsDefault')
+      (
+        'Component = pnl_3'
+        'Status = stsDefault')
+      (
+        'Component = pnlFlag'
+        'Status = stsDefault')
+      (
+        'Component = lstFlag'
+        'Status = stsDefault')
+      (
+        'Component = lst_3'
+        'Status = stsDefault')
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = pnl_4'
+        'Status = stsDefault')
+      (
+        'Component = lst_4'
+        'Status = stsDefault')
+      (
+        'Component = pnl_5'
+        'Status = stsDefault')
+      (
+        'Component = lst_5'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnl_not8'
+        'Status = stsDefault')
+      (
+        'Component = pnl_6'
+        'Status = stsDefault')
+      (
+        'Component = lst_6'
+        'Status = stsDefault')
+      (
+        'Component = pnl_7'
+        'Status = stsDefault')
+      (
+        'Component = lst_7'
+        'Status = stsDefault')
+      (
+        'Component = pnl_8'
+        'Status = stsDefault')
+      (
+        'Component = lst_8'
+        'Status = stsDefault')
+      (
+        'Component = frmCover'
+        'Status = stsDefault'))
+  end
+  object timPoll: TTimer
+    Enabled = False
+    Interval = 2600
+    OnTimer = timPollTimer
+    Left = 20
+    Top = 32
+  end
+  object popMenuAllergies: TPopupMenu
+    OnPopup = popMenuAllergiesPopup
+    Left = 283
+    Top = 46
+    object popNewAllergy: TMenuItem
+      Caption = 'Enter new allergy'
+      OnClick = popNewAllergyClick
+    end
+    object popEditAllergy: TMenuItem
+      Caption = 'Edit selected allergy'
+      Visible = False
+      OnClick = popEditAllergyClick
+    end
+    object popEnteredInError: TMenuItem
+      Caption = 'Mark selected allergy as entered in error'
+      OnClick = popEnteredInErrorClick
+    end
+    object popNKA: TMenuItem
+      Caption = 'Mark patient as having "No Known Allergies" (NKA)'
+      OnClick = popNKAClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fCover.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fCover.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fCover.pas	(revision 1676)
@@ -0,0 +1,1003 @@
+unit fCover;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPage, StdCtrls, ORCtrls, ExtCtrls, rOrders, ORClasses, Menus, rCover, fAllgyBox,
+  VA508AccessibilityManager, fBase508Form; {REV}
+
+type
+  TfrmCover = class(TfrmPage)
+    pnlBase: TPanel;
+    pnlTop: TPanel;
+    pnlNotTheBottom: TPanel;
+    pnlMiddle: TPanel;
+    pnlBottom: TPanel;
+    sptTop: TSplitter;
+    sptBottom: TSplitter;
+    pnl_Not3: TPanel;
+    pnl_Not8: TPanel;
+    pnl_4: TPanel;
+    pnl_5: TPanel;
+    pnl_6: TPanel;
+    pnl_7: TPanel;
+    pnl_8: TPanel;
+    spt_3: TSplitter;
+    spt_4: TSplitter;
+    spt_5: TSplitter;
+    pnl_1: TPanel;
+    pnl_2: TPanel;
+    pnl_3: TPanel;
+    spt_1: TSplitter;
+    spt_2: TSplitter;
+    lbl_1: TOROffsetLabel;
+    lbl_2: TOROffsetLabel;
+    lbl_4: TOROffsetLabel;
+    lbl_5: TOROffsetLabel;
+    lbl_6: TOROffsetLabel;
+    lbl_7: TOROffsetLabel;
+    lbl_8: TOROffsetLabel;
+    lst_1: TORListBox;
+    lst_2: TORListBox;
+    lst_4: TORListBox;
+    lst_5: TORListBox;
+    lst_6: TORListBox;
+    lst_7: TORListBox;
+    lst_8: TORListBox;
+    timPoll: TTimer;
+    popMenuAllergies: TPopupMenu;
+    popNewAllergy: TMenuItem;
+    popNKA: TMenuItem;
+    popEditAllergy: TMenuItem;
+    popEnteredInError: TMenuItem;
+    pnlFlag: TPanel;
+    lstFlag: TORListBox;
+    lblFlag: TOROffsetLabel;
+    lbl_3: TOROffsetLabel;
+    lst_3: TORListBox;
+    sptFlag: TSplitter;
+    procedure CoverItemClick(Sender: TObject);
+    procedure timPollTimer(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure RemContextPopup(Sender: TObject; MousePos: TPoint;
+      var Handled: Boolean);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure sptBottomCanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure sptTopCanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure spt_1CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure spt_2CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure spt_3CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure spt_4CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure spt_5CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure popMenuAllergiesPopup(Sender: TObject);
+    procedure popNewAllergyClick(Sender: TObject);
+    procedure popNKAClick(Sender: TObject);
+    procedure popEditAllergyClick(Sender: TObject);
+    procedure popEnteredInErrorClick(Sender: TObject);
+    procedure CoverItemExit(Sender: TObject);
+    procedure lstFlagClick(Sender: TObject);
+    procedure lstFlagKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FCoverList: TCoverSheetList;
+    popReminders: TORPopupMenu;
+    FLoadingForDFN: string;  //*DFN*
+    procedure RemindersChange(Sender: TObject);
+    procedure GetPatientFlag;
+    procedure LoadList(const StsTxt: string; ListCtrl: TObject;
+      ARpc: String; ACase, AInvert: Boolean; ADatePiece: integer; ADateFormat, AParam1, AID, ADetail: String; Reminders: boolean = FALSE);
+  public
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure SetFontSize(NewFontSize: Integer); override;
+    procedure NotifyOrder(OrderAction: Integer; AnOrder: TOrder); override;       {REV}
+    procedure UpdateAllergiesList;
+    procedure UpdateVAAButton;
+  end;
+
+var
+  frmCover: TfrmCover;
+  VAAFlag: TStringList;
+  MHVFlag: TStringList;
+  VAA_DFN: string;
+  PtIsVAA: boolean;
+  PtIsMHV: boolean;  
+
+const
+  CoverSplitters1 = 'frmCoverSplitters1';
+  CoverSplitters2 = 'frmCoverSplitters2';
+
+implementation
+
+{$R *.DFM}
+
+uses ORNet, ORFn, fRptBox, fVitals, fvit, fFrame, uCore, TRPCB, uConst, uInit,
+  uReminders, rReminders, fARTAllgy, uOrPtf, fPatientFlagMulti, rODAllergy, rMisc,
+  VA508AccessibilityRouter;
+
+const
+  TAG_PROB = 10;
+  TAG_ALLG = 20;
+  TAG_POST = 30;
+  TAG_MEDS = 40;
+  TAG_RMND = 50;
+  TAG_LABS = 60;
+  TAG_VITL = 70;
+  TAG_VSIT = 80;
+  RemID    = '50';
+
+  TX_INACTIVE_CODE = 'This problem references an ICD code that is not currently active.' + #13#10 +
+                     'Please correct this code using the ''Problems'' tab.';
+  TC_INACTIVE_CODE = 'Inactive ICD code';
+
+var
+  uIPAddress: string;
+  uARTCoverSheetParams: string;
+
+procedure TfrmCover.ClearPtData;
+{ clears all lists displayed on the cover sheet }
+begin
+  timPoll.Enabled := False;
+  if Length(FLoadingForDFN) > 0 then StopCoverSheet(FLoadingForDFN, uIPAddress, frmFrame.Handle);  //*DFN*
+  FLoadingForDFN := '';  //*DFN*
+  inherited ClearPtData;
+  lst_1.Clear;
+  lst_2.Clear;
+  lst_3.Clear;
+  lst_4.Clear;
+  lst_5.Clear;
+  lst_6.Clear;
+  lst_7.Clear;
+  lst_8.Clear;
+  pnl_1.Visible := false;
+  pnl_2.Visible := false;
+  pnl_3.Visible := false;
+  pnl_4.Visible := false;
+  pnl_5.Visible := false;
+  pnl_6.Visible := false;
+  pnl_7.Visible := false;
+  pnl_8.Visible := false;
+end;
+
+procedure TfrmCover.LoadList(const StsTxt: string; ListCtrl: TObject;
+  ARpc: String; ACase, AInvert: Boolean; ADatePiece: integer; ADateFormat, AParam1, AID, ADetail: String; Reminders: boolean = FALSE);
+begin
+  StatusText(StsTxt);
+  if(ListCtrl is TORListBox) then
+  begin
+    ListGeneric((ListCtrl as TORListBox).Items, ARpc, ACase, AInvert, ADatePiece, ADateFormat, AParam1, ADetail, AID);
+    if((ListCtrl as TORListBox).Items.Count = 0) then
+      (ListCtrl as TORListBox).Items.Add(NoDataText(Reminders));
+  end
+  else
+  begin
+    ListGeneric(ListCtrl as TStrings, ARpc, ACase, AInvert, ADatePiece, ADateFormat, AParam1, ADetail, AID);
+    if((ListCtrl as TStrings).Count = 0) then
+      (ListCtrl as TStrings).Add(NoDataText(Reminders));
+  end;
+  StatusText('');
+end;
+
+procedure TfrmCover.DisplayPage;
+{ loads the cover sheet lists if the patient has just been selected }
+var
+  DontDo, ForeGround: string;
+  WaitCount: Integer;
+  RemSL: TStringList;
+  uCoverSheetList: TStringList;
+  i, iRem: Integer;
+  aIFN, aRPC, aCase, aInvert, aDatePiece, aDateFormat, aTextColor, aStatus, aParam1, aID, aQualifier, aTabPos, aName, aPiece, aDetail, x: string;
+  bCase, bInvert: Boolean;
+  iDatePiece: Integer;
+
+(*  procedure LoadList(const StsTxt: string; ListCtrl: TObject;
+    ARpc: String; ACase, AInvert: Boolean; ADatePiece: integer; ADateFormat, AParam1, AID, ADetail: String; Reminders: boolean = FALSE);
+  begin
+    StatusText(StsTxt);
+    if(ListCtrl is TORListBox) then
+    begin
+      ListGeneric((ListCtrl as TORListBox).Items, ARpc, ACase, AInvert, ADatePiece, ADateFormat, AParam1, ADetail, AID);
+      if((ListCtrl as TORListBox).Items.Count = 0) then
+        (ListCtrl as TORListBox).Items.Add(NoDataText(Reminders));
+    end
+    else
+    begin
+      ListGeneric(ListCtrl as TStrings, ARpc, ACase, AInvert, ADatePiece, ADateFormat, AParam1, ADetail, AID);
+      if((ListCtrl as TStrings).Count = 0) then
+        (ListCtrl as TStrings).Add(NoDataText(Reminders));
+    end;
+    StatusText('');
+  end;*)
+
+  procedure WaitList(ListCtrl: TORListBox);
+  begin
+    ListCtrl.Clear;
+    Inc(WaitCount);
+    ListCtrl.Items.Add('0^Retrieving in background...');
+    ListCtrl.Repaint;
+  end;
+
+begin
+  inherited DisplayPage;
+  iRem := -1;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  if InitPage then
+    uIPAddress := DottedIPStr;
+  if InitPatient then
+    begin
+      WaitCount := 0;
+      if InteractiveRemindersActive then
+      begin
+        if(InitialRemindersLoaded) then
+        begin
+          DontDo := RemID+';';
+          NotifyWhenRemindersChange(RemindersChange);
+        end
+        else
+        begin
+          DontDo := '';
+          RemoveNotifyRemindersChange(RemindersChange);
+        end;
+      end;
+      ForeGround := StartCoverSheet(uIPAddress, frmFrame.Handle,
+                    DontDo, InteractiveRemindersActive);
+      uCoverSheetList := TStringList.Create;
+      LoadCoverSheetList(uCoverSheetList);
+      for i := 0 to uCoverSheetList.Count - 1 do
+        begin
+          x := uCoverSheetList[i];
+          aName := Piece(x,'^',2);
+          aRPC := Piece(x,'^',6);
+          aCase := Piece(x,'^',7);
+          aInvert := Piece(x,'^',8);
+          aDatePiece := Piece(x,'^',11);
+          aDateFormat := Piece(x,'^',10);
+          aTextColor := Piece(x,'^',9);
+          aStatus := 'Searching for ' + Piece(x,'^',2) + '...';
+          aParam1 := Piece(x,'^',12);
+          aID := Piece(x,'^',1);         //TAG_PROB, TAG_RMND, ETC.
+          aQualifier := Piece(x,'^',13);
+          aTabPos := Piece(x,'^',14);
+          aPiece := Piece(x,'^',15);
+          aDetail := Piece(x,'^',16);
+          aIFN := Piece(x,'^',17);
+          bCase := FALSE;
+          bInvert := FALSE;
+          iDatePiece := 0;
+          if aCase = '1' then bCase := TRUE;
+          if aInvert = '1' then bInvert := TRUE;
+          if Length(aDatePiece) > 0 then iDatePiece := StrToInt(aDatePiece);
+          if Length(aTextColor) > 0 then aTextColor := 'cl' + aTextColor;
+          // Assign properties to components
+          FCoverList.CVlbl(i).Caption := aName;
+          FCoverList.CVlst(i).Caption := aName;
+          if Length(aTabPos) > 0 then FCoverList.CVlst(i).TabPositions := aTabPos;
+          if Length(aTextColor) > 0 then FCoverList.CVlst(i).Font.Color :=
+                                            Get508CompliantColor(StringToColor(aTextColor));
+          if Length(aPiece) > 0 then FCoverList.CVlst(i).Pieces := aPiece;
+          FCoverList.CVlst(i).Tag := StrToInt(aID);
+          if(aID <> RemID) then
+          begin
+            if((aID = '20') or (Pos(aID + ';', ForeGround) > 0)) then
+              LoadList(aStatus, FCoverList.CVlst(i), aRpc, bCase, bInvert, iDatePiece, aDateFormat, aParam1, aID, aDetail)
+            else
+              Waitlist(FCoverList.CVlst(i));
+            if (aID = '20') and ARTPatchInstalled then with FCoverList.CVlst(i) do
+              begin
+                uARTCoverSheetParams := x;
+                PopupMenu := popMenuAllergies;
+                RightClickSelect := True;
+                popMenuAllergies.PopupComponent := FCoverList.CVlst(i);
+              end;
+          end;
+          FCoverList.CVpln(i).Visible := true;
+          if aID = RemID then
+            begin
+              FCoverList.CVLst(i).OnContextPopup := RemContextPopup;
+              FCoverList.CVlst(i).RightClickSelect := True;
+              iRem := FCoverList.CVlst(i).ComponentIndex;
+              if InteractiveRemindersActive then
+                begin
+                  if(InitialRemindersLoaded) then
+                    CoverSheetRemindersInBackground := FALSE
+                  else
+                    begin
+                      InitialRemindersLoaded := TRUE;
+                      CoverSheetRemindersInBackground := (Pos(aID + ';', ForeGround) = 0);
+                      if(not CoverSheetRemindersInBackground) then
+                        begin
+                          //InitialRemindersLoaded := TRUE;
+                          RemSL := TStringList.Create;
+                          try
+                            LoadList(aStatus, RemSL, aRpc, bCase, bInvert, iDatePiece, aDateFormat, aParam1, aID, aDetail);
+                            RemindersEvaluated(RemSL);
+                          finally;
+                            RemSL.Free;
+                          end;
+                          NotifyWhenRemindersChange(RemindersChange);
+                        end
+                      else
+                          Waitlist(FCoverList.CVlst(i));
+                    end;
+                end
+              else
+                if Pos(aID + ';', ForeGround) > 0 then
+                    LoadList(aStatus, FCoverList.CVlst(i), aRpc, bCase, bInvert, iDatePiece, aDateFormat, aParam1, aID, aDetail, TRUE)
+                else
+                    Waitlist(FCoverList.CVlst(i));
+              if WaitCount > 0 then
+                begin
+                  FLoadingForDFN := Patient.DFN;
+                  timPoll.Enabled := True;
+                end
+              else FLoadingForDFN := '';  //*DFN*
+              if InteractiveRemindersActive then
+                begin
+                  RemindersStarted := TRUE;
+                  LoadReminderData(CoverSheetRemindersInBackground);
+                end;
+            end;
+          if WaitCount > 0 then
+            begin
+              FLoadingForDFN := Patient.DFN;
+              timPoll.Enabled := True;
+            end
+          else FLoadingForDFN := '';  //*DFN*
+        end;
+      FocusFirstControl;
+      spt_2.Left := pnl_Not3.Left + pnl_Not3.Width;
+      spt_5.Left := pnl_Not8.Left + pnl_Not8.Width;
+      GetPatientFlag;
+    end;
+  if InitPage then
+    begin
+      popReminders := TORPopupMenu.Create(Self);
+      if InteractiveRemindersActive then
+        begin
+          SetReminderPopupCoverRoutine(popReminders);
+          if iRem > -1 then
+            (frmCover.Components[iRem] as TORListBox).PopupMenu := popReminders;
+        end
+      else
+        begin
+          if iRem > -1 then
+            begin
+              (frmCover.Components[iRem] as TORListBox).RightClickSelect := FALSE;
+              (frmCover.Components[iRem] as TORListBox).OnMouseUp := nil;
+            end;
+        end;
+    end;
+end;
+
+procedure TfrmCover.SetFontSize(NewFontSize: Integer);
+var
+  i: integer;
+begin
+  inherited;
+  with frmCover do
+          for i := ComponentCount - 1 downto 0 do
+            begin
+              if Components[i] is TORListBox then
+                begin
+                  case Components[i].Tag of
+                    30: (Components[i] as TORListBox).Font.Size := NewFontSize;
+                  end;
+                end;
+            end;
+end;
+
+procedure TfrmCover.CoverItemClick(Sender: TObject);
+{ displays details for an item that has been clicked on the cover sheet }
+var
+  i: integer;
+  aDetail: string;
+begin
+  inherited;
+  with TORListBox(Sender) do
+  begin
+    aDetail := Uppercase(Piece(TORListBox(Sender).Items[TORListBox(Sender).ItemIndex],'^',12));
+    case Tag of
+     TAG_PROB:
+             if ItemIEN > 0  then
+               begin
+                 i := ItemIndex;
+                 if Piece(Items[ItemIndex], U, 13) = '#' then
+                   InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+                 ItemIndex := i;
+                 ReportBox(DetailGeneric(ItemIEN, ItemID, aDetail), DisplayText[ItemIndex], True);
+               end;
+     TAG_ALLG:
+{ TODO -oRich V. -cART/Allergy : What to do about NKA only via right-click menu?  Add here? }
+             if ItemIEN > 0 then
+               begin
+                 if ARTPatchInstalled then
+                   AllergyBox(DetailGeneric(ItemIEN, ItemID, aDetail), DisplayText[ItemIndex], True, ItemIEN)
+                 else
+                   ReportBox(DetailGeneric(ItemIEN, ItemID, aDetail), DisplayText[ItemIndex], True);
+               end;
+     TAG_POST:
+             if DisplayText[ItemIndex] = 'Allergies' then
+               ReportBox(DetailPosting('A'), DisplayText[ItemIndex], True)
+             else if ItemID <> '' then
+               begin
+                 NotifyOtherApps(NAE_REPORT, 'TIU^' + ItemID);
+                 ReportBox(DetailPosting(ItemID), DisplayText[ItemIndex], True);
+               end;
+     TAG_MEDS:
+             if (ItemID <> '') and (ItemID <> '0') then
+               ReportBox(DetailMed(ItemID), DisplayText[ItemIndex], True);
+     TAG_RMND:
+             if ItemIEN > 0  then
+               ReportBox(DetailReminder(ItemIEN), ClinMaintText + ': ' + DisplayText[ItemIndex], True);
+     TAG_LABS:
+             if (ItemID <> '') and (Piece(ItemID,';',1) <> '0') and (not ContainsAlpha(Piece(ItemID,';',1))) then
+               ReportBox(DetailGeneric(ItemIEN, ItemID, aDetail), DisplayText[ItemIndex], True);
+     TAG_VITL:
+             if ItemID <> '' then
+               begin
+//                 frmFrame.DLLActive := True;
+                 SelectVitals(Piece(DisplayText[ItemIndex],Char(9),1)); //Char(9) = Tab Character
+//                 frmFrame.DLLActive := False;
+                 ClearPtData;
+                 DisplayPage;
+               end;
+
+     TAG_VSIT:
+             if (ItemID <> '') and (ItemID <> '0') then
+               ReportBox(DetailGeneric(ItemIEN, ItemID, aDetail), DisplayText[ItemIndex], True);
+    else
+      //don't try to display a detail report
+    end;
+    if uInit.TimedOut then                       // Fix for CQ: 8011
+      Abort
+    else
+      ItemIndex := -1;
+  end;
+end;
+
+procedure TfrmCover.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  timPoll.Enabled := False;
+  if Length(FLoadingForDFN) > 0 then StopCoverSheet(FLoadingForDFN, uIPAddress, frmFrame.Handle);  //*DFN*
+  FLoadingForDFN := '';  //*DFN*
+end;
+
+procedure TfrmCover.timPollTimer(Sender: TObject);
+const
+  RemUnchanged = '[{^Reminders @ @ @ Unchanged^]}';
+
+var
+  Done: Boolean;
+  ReminderSL: TStringList;
+  ProbSL, PostSL, MedsSL, RemSL, LabsSL, VitSL, VisitSL: TStringList;
+  i, iProb, iPost, iMeds, iRem, iLabs, iVit, iVisit: integer;
+begin
+  inherited;
+  iProb := -1;
+  iPost := -1;
+  iMeds := -1;
+  iRem := -1;
+  iLabs := -1;
+  iVit := -1;
+  iVisit := -1;
+  with frmCover do
+    for i := ComponentCount - 1 downto 0 do
+      begin
+        if Components[i] is TORListBox then
+          begin
+            case Components[i].Tag of
+              TAG_PROB: iProb := i;
+              TAG_POST: iPost := i;
+              TAG_MEDS: iMeds := i;
+              TAG_RMND: iRem := i;
+              TAG_LABS: iLabs := i;
+              TAG_VITL: iVit := i;
+              TAG_VSIT: iVisit := i;
+            end;
+          end;
+      end;
+  ProbSL := TStringList.Create;
+  PostSL := TStringList.Create;
+  MedsSL := TStringList.Create;
+  RemSL := TStringList.Create;
+  LabsSL := TStringList.Create;
+  VitSL := TStringList.Create;
+  VisitSL := TStringList.Create;
+  if InteractiveRemindersActive then
+  begin
+    ReminderSL := TStringList.Create;
+    try
+      ReminderSL.Add(RemUnchanged);
+      ListAllBackGround(Done, ProbSL, PostSL, MedsSL, ReminderSL, LabsSL, VitSL, VisitSL, uIPAddress, frmFrame.Handle);
+      if (iProb > -1) and (ProbSL.Count > 0) then FastAssign(ProbSL, (Components[iProb] as TORListBox).Items);
+      if (iPost > -1) and (PostSL.Count > 0) then FastAssign(PostSL, (Components[iPost] as TORListBox).Items);
+      if (iMeds > -1) and (MedsSL.Count > 0) then FastAssign(MedsSL, (Components[iMeds] as TORListBox).Items);
+      if (iLabs > -1) and (LabsSL.Count > 0) then FastAssign(LabsSL, (Components[iLabs] as TORListBox).Items);
+      if (iVit > -1) and (VitSL.Count > 0) then FastAssign(VitSL, (Components[iVit] as TORListBox).Items);
+      if (iVisit > -1) and (VisitSL.Count > 0) then FastAssign(VisitSL, (Components[iVisit] as TORListBox).Items);
+      // since this RPC is connected to a timer, clear the results each time to make sure that
+      // the results aren't passed to another RPC in the case that there is an error
+      RPCBrokerV.ClearResults := True;
+      if Done then
+      begin
+        timPoll.Enabled := False;
+        FLoadingForDFN := '';  //*DFN*
+      end;
+      if(not InitialRemindersLoaded) and
+        (ReminderSL.Count <> 1) or (ReminderSL[0] <> RemUnchanged) then
+      begin
+        CoverSheetRemindersInBackground := FALSE;
+//        InitialRemindersLoaded := TRUE;
+        RemindersEvaluated(ReminderSL);
+        NotifyWhenRemindersChange(RemindersChange);
+      end;
+    finally
+      ReminderSL.Free;
+    end;
+  end
+  else
+  begin
+    ListAllBackGround(Done, ProbSL, PostSL, MedsSL, RemSL, LabsSL, VitSL, VisitSL, uIPAddress, frmFrame.Handle);
+    if (iProb > -1) and (ProbSL.Count > 0) then FastAssign(ProbSL, (Components[iProb] as TORListBox).Items);
+    if (iPost > -1) and (PostSL.Count > 0) then FastAssign(PostSL, (Components[iPost] as TORListBox).Items);
+    if (iMeds > -1) and (MedsSL.Count > 0) then FastAssign(MedsSL, (Components[iMeds] as TORListBox).Items);
+    if (iRem > -1) and (RemSL.Count > 0) then FastAssign(RemSL, (Components[iRem] as TORListBox).Items);
+    if (iLabs > -1) and (LabsSL.Count > 0) then FastAssign(LabsSL, (Components[iLabs] as TORListBox).Items);
+    if (iVit > -1) and (VitSL.Count > 0) then FastAssign(VitSL, (Components[iVit] as TORListBox).Items);
+    if (iVisit > -1) and (VisitSL.Count > 0) then FastAssign(VisitSL, (Components[iVisit] as TORListBox).Items);
+    // since this RPC is connected to a timer, clear the results each time to make sure that
+    // the results aren't passed to another RPC in the case that there is an error
+    RPCBrokerV.ClearResults := True;
+    if Done then
+    begin
+      timPoll.Enabled := False;
+      FLoadingForDFN := '';  //*DFN*
+    end;
+  end;
+  ProbSL.Free;
+  PostSL.Free;
+  MedsSL.Free;
+  RemSL.Free;
+  LabsSL.Free;
+  VitSL.Free;
+  VisitSL.Free;
+end;
+
+procedure TfrmCover.NotifyOrder(OrderAction: Integer; AnOrder: TOrder);    {REV}
+var
+  i: integer;
+begin
+  case OrderAction of
+  ORDER_SIGN:
+    begin
+      with frmCover do
+          for i := ComponentCount - 1 downto 0 do
+            begin
+              if Components[i] is TORListBox then
+                begin
+                  case Components[i].Tag of
+                    20: UpdateAllergiesList;
+                    30: ListPostings((Components[i] as TORListBox).Items);
+                  end;
+                end;
+            end;
+    end;
+  end;
+end;
+
+procedure TfrmCover.RemindersChange(Sender: TObject);
+var
+  i: integer;
+  tmp: string;
+  lb: TORListBox;
+
+begin
+  lb := nil;
+  with frmCover do
+    for i := ComponentCount - 1 downto 0 do
+    begin
+      if (Components[i] is TORListBox) and (Components[i].Tag = TAG_RMND) then
+      begin
+        lb := (Components[i] as TORListBox);
+        break;
+      end;
+    end;
+  if assigned(lb) then
+  begin
+    lb.Clear;
+   //i := -1;
+    //AGP Change 26.8 this changes allowed Reminders to display on the coversheet
+    //even if they had an error on evaluation
+    for i := 0 to ActiveReminders.Count-1 do
+      begin
+        if Piece(ActiveReminders.Strings[i],U,6)='1' then
+           begin
+             tmp := ActiveReminders[i];
+             SetPiece(tmp, U, 3, FormatFMDateTimeStr('mmm dd,yy', Piece(tmp, U, 3)));
+             lb.Items.Add(tmp);
+           end;
+        if Piece(ActiveReminders.Strings[i],U,6)='3' then
+           begin
+             tmp := ActiveReminders[i];
+             SetPiece(tmp, U, 3, 'Error');
+             lb.Items.Add(tmp);
+           end;
+        if Piece(ActiveReminders.Strings[i],U,6)='4' then
+           begin
+             tmp := ActiveReminders[i];
+             SetPiece(tmp, U, 3, 'CNBD');
+             lb.Items.Add(tmp);
+           end;
+      end;
+      //AGP End Change for 26.8
+    if(RemindersEvaluatingInBackground) then
+      lb.Items.Insert(0,'0^Evaluating Reminders...')
+    else
+    if(lb.Items.Count = 0) and (RemindersStarted) then
+      lb.Items.Add(NoDataText(TRUE));
+  end;
+end;
+
+Procedure TfrmCover.RemContextPopup(Sender: TObject;
+  MousePos: TPoint; var Handled: Boolean);
+var
+  idx: integer;
+  i, iRem: integer;
+begin
+  inherited;
+  Handled := TRUE;
+  iRem := -1;
+  with frmCover do
+    for i := ComponentCount - 1 downto 0 do
+      begin
+        if Components[i] is TORListBox then
+          begin
+            case Components[i].Tag of
+              TAG_RMND: iRem := i;
+            end;
+          end;
+      end;
+  if iRem > -1 then
+    if ((frmCover.Components[iRem] as TORListBox).ItemIndex >= 0) then
+      begin
+        idx := StrToIntDef(Piece((frmCover.Components[iRem] as TORListBox).Items[(frmCover.Components[iRem] as TORListBox).ItemIndex],U,1),0);
+        if(idx <> 0) then
+        begin
+          popReminders.Data := RemCode + (frmCover.Components[iRem] as TORListBox).Items[(frmCover.Components[iRem] as TORListBox).ItemIndex];
+          Handled := FALSE;
+        end;
+      end;
+end;
+
+procedure TfrmCover.FormCreate(Sender: TObject);
+begin
+  inherited;
+  PageID := CT_COVER;
+  FCoverList := TCoverSheetList.Create;
+  FCoverList.Add(pnl_1, lbl_1, lst_1);
+  FCoverList.Add(pnl_2, lbl_2, lst_2);
+  FCoverList.Add(pnl_3, lbl_3, lst_3);
+  FCoverList.Add(pnl_4, lbl_4, lst_4);
+  FCoverList.Add(pnl_5, lbl_5, lst_5);
+  FCoverList.Add(pnl_6, lbl_6, lst_6);
+  FCoverList.Add(pnl_7, lbl_7, lst_7);
+  FCoverList.Add(pnl_8, lbl_8, lst_8);
+end;
+
+procedure TfrmCover.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  FCoverList.Free;
+end;
+
+procedure TfrmCover.sptBottomCanResize(Sender: TObject;
+  var NewSize: Integer; var Accept: Boolean);
+begin
+  inherited;
+    if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.sptTopCanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+    if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.spt_1CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.spt_2CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.spt_3CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.spt_4CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.spt_5CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 50 then
+      Newsize := 50;
+end;
+
+procedure TfrmCover.popMenuAllergiesPopup(Sender: TObject);
+const
+  NO_ASSESSMENT = 'No Allergy Assessment';
+var
+  AListBox: TORListBox;
+  x: string;
+begin
+  inherited;
+  AListBox := (popMenuAllergies.PopupComponent as TORListBox);
+  popEditAllergy.Enabled := (AListBox.ItemIEN > 0) and IsARTClinicalUser(x);
+  popEnteredInError.Enabled := (AListBox.ItemIEN > 0) and IsARTClinicalUser(x);
+  popNKA.Enabled := (AListBox.Items.Count = 1) and
+                    (Piece(AListBox.Items[0], U, 2) = NO_ASSESSMENT);
+                    //and  IsARTClinicalUser(x);           v26.12
+  popNewAllergy.Enabled := True;  //IsARTClinicalUser(x);  v26.12
+end;
+
+procedure TfrmCover.popNewAllergyClick(Sender: TObject);
+const
+  NEW_ALLERGY = True;
+  ENTERED_IN_ERROR = True;
+var
+  Changed: boolean;
+begin
+  inherited;
+  Changed := EnterEditAllergy(0, NEW_ALLERGY, not ENTERED_IN_ERROR);
+  if Changed then UpdateAllergiesList;
+end;
+
+procedure TfrmCover.popNKAClick(Sender: TObject);
+var
+  Changed: boolean;
+begin
+  inherited;
+  Changed := EnterNKAForPatient;
+  if Changed then UpdateAllergiesList;
+end;
+
+procedure TfrmCover.popEditAllergyClick(Sender: TObject);
+const
+  NEW_ALLERGY = True;
+  ENTERED_IN_ERROR = True;
+begin
+  inherited;
+  EnterEditAllergy((popMenuAllergies.PopupComponent as TORListBox).ItemIEN, not NEW_ALLERGY, not ENTERED_IN_ERROR);
+end;
+
+procedure TfrmCover.popEnteredInErrorClick(Sender: TObject);
+var
+  Changed: boolean;
+begin
+  inherited;
+  Changed := MarkEnteredInError((popMenuAllergies.PopupComponent as TORListBox).ItemIEN);
+  if Changed then UpdateAllergiesList;
+end;
+
+procedure TfrmCover.UpdateAllergiesList;
+var
+  bCase, bInvert: boolean;
+  iDatePiece: integer ;
+  x, aRPC, aDateFormat, aParam1, aID, aDetail, aStatus, aName, aCase, aInvert, aDatePiece, aTextColor, aQualifier, aTabPos, aPiece, aIFN: string;
+begin
+  x := uARTCoverSheetParams;
+  if x = '' then exit;
+  aName := Piece(x,'^',2);
+  aRPC := Piece(x,'^',6);
+  aCase := Piece(x,'^',7);
+  aInvert := Piece(x,'^',8);
+  aDatePiece := Piece(x,'^',11);
+  aDateFormat := Piece(x,'^',10);
+  aTextColor := Piece(x,'^',9);
+  aStatus := 'Searching for ' + Piece(x,'^',2) + '...';
+  aParam1 := Piece(x,'^',12);
+  aID := Piece(x,'^',1);         //TAG_PROB, TAG_RMND, ETC.
+  aQualifier := Piece(x,'^',13);
+  aTabPos := Piece(x,'^',14);
+  aPiece := Piece(x,'^',15);
+  aDetail := Piece(x,'^',16);
+  aIFN := Piece(x,'^',17);
+  bCase := FALSE;
+  bInvert := FALSE;
+  iDatePiece := 0;
+  if aCase = '1' then bCase := TRUE;
+  if aInvert = '1' then bInvert := TRUE;
+  if Length(aDatePiece) > 0 then iDatePiece := StrToInt(aDatePiece);
+  if Length(aTextColor) > 0 then aTextColor := 'cl' + aTextColor;
+  // Assign properties to components
+  if Length(aTabPos) > 0 then (popMenuAllergies.PopupComponent as TORListBox).TabPositions := aTabPos;
+  if Length(aTextColor) > 0 then (popMenuAllergies.PopupComponent as TORListBox).Font.Color :=
+                                                      Get508CompliantColor(StringToColor(aTextColor));
+  if Length(aPiece) > 0 then (popMenuAllergies.PopupComponent as TORListBox).Pieces := aPiece;
+  (popMenuAllergies.PopupComponent as TORListBox).Tag := StrToInt(aID);
+  LoadList(aStatus, (popMenuAllergies.PopupComponent as TORListBox), aRpc, bCase, bInvert, iDatePiece, aDateFormat, aParam1, aID, aDetail);
+  with frmFrame do
+    begin
+      lblPtCWAD.Caption := GetCWADInfo(Patient.DFN);
+      if Length(lblPtCWAD.Caption) > 0
+        then lblPtPostings.Caption := 'Postings'
+        else lblPtPostings.Caption := 'No Postings';
+      pnlPostings.Caption := lblPtPostings.Caption + ' ' + lblPtCWAD.Caption;
+    end;
+end;
+
+procedure TfrmCover.CoverItemExit(Sender: TObject);
+begin
+  with Sender as TORListBox do
+    Selected[ItemIndex] := False;
+  inherited;
+end;
+
+procedure TfrmCover.GetPatientFlag;
+begin
+  pnlFlag.Visible := HasFlag;
+  sptFlag.Visible := HasFlag;
+  FastAssign(FlagList, lstFlag.Items);
+end;
+
+procedure TfrmCover.lstFlagClick(Sender: TObject);
+begin
+  if lstFlag.ItemIndex >= 0 then
+    ShowFlags(lstFlag.ItemID);
+  lstFlag.ItemIndex := -1;
+end;
+
+procedure TfrmCover.lstFlagKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then
+    lstFlagClick(Self);
+end;
+
+procedure TfrmCover.UpdateVAAButton;
+const
+  MHVLabelOrigTop = 3;
+  PtInsLabelOrigTop = 27;
+//var
+//  PtIsVAA: boolean;
+//  PtIsMHV: boolean;
+begin
+//VAA & MHV
+  PtIsVAA := false;
+  PtIsMHV := false;
+
+  VAAFlag := TStringList.Create;
+  MHVFlag := TStringList.Create;
+  VAA_DFN := Patient.DFN;
+  tCallV(VAAFlag, 'ORVAA VAA', [VAA_DFN]);
+  tCallV(MHVFlag, 'ORWMHV MHV', [VAA_DFN]);
+  if VAAFlag[0] <> '0' then
+     begin
+     PtIsVAA := true;
+
+     with frmFrame do
+        begin
+        laVAA2.Caption := Piece(VAAFlag[0], '^', 1);
+        laVAA2.Hint := Piece(VAAFlag[0], '^', 2); //CQ7626 was piece '6'
+        end;
+     end
+  else
+     begin
+     with frmFrame do
+        begin
+        laVAA2.Caption := #0;
+        laVAA2.Hint := 'No active insurance'; //CQ7626 added this line
+        end;
+     end;
+
+  //MHV flag
+  if MHVFlag[0] <> '0' then
+     begin
+     PtIsMHV := true;
+
+      with frmFrame do
+        begin
+         laMHV.Caption := Piece(MHVFlag[0], '^', 1);
+         laMHV.Hint := Piece(MHVFlag[0], '^', 2);
+
+         if VAAFlag[0] = '0' then
+           laMHV.Caption := 'MHV';
+        end;
+     end
+  else
+     begin
+     with frmFrame do
+        begin
+        laMHV.Caption := #0;
+        laMHV.Hint := 'No MyHealthyVet data'; //CQ7626 added this line
+        end;
+     end;
+
+  with frmFrame do
+     begin
+     //Modified this 'with' section for CQ7783
+     paVAA.Hide; //Start by hiding it.  Show it only if one of the conditions below is true, else it stays invisible.
+     paVAA.Height := pnlPrimaryCare.Height;
+
+     if ((PtIsVAA and PtIsMHV)) then  //CQ7411 - this line
+        begin
+        laMHV.Top := paVAA.Top;
+        laMHV.Width := paVAA.Width - 1;
+        laMHV.Height := (paVAA.ClientHeight div 2) - 1;
+        laMHV.Visible := true;
+
+        laVAA2.Top := laMHV.Top + laMHV.Height + 1;
+        laVAA2.Width := paVAA.Width - 1;
+        laVAA2.Height := (paVAA.ClientHeight div 2);
+        laVAA2.Visible := true;
+
+        paVAA.Show;
+        end
+     else
+        if ((PtIsMHV and (not PtIsVAA))) then
+           begin
+           laMHV.Top := paVAA.Top;
+           paVAA.Height := pnlPrimaryCare.Height;
+           laMHV.Height := paVAA.ClientHeight - 1;
+           laMHV.Visible := true;
+           laVAA2.Visible  := false;
+           paVAA.Show;
+           end
+     else
+        if ((PtIsVAA and (not PtIsMHV))) then
+           begin
+           laVAA2.Top := paVAA.Top;
+           paVAA.Height := pnlPrimaryCare.Height-2;
+           laVAA2.Height := paVAA.ClientHeight - 1;
+           laVAA2.Width := paVAA.Width - 1;
+           laVAA2.Visible := true;
+           laMHV.Visible := false;
+
+           paVAA.Show;
+           end;
+  end; //with
+//end VAA & MHV
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmCover);
+
+finalization
+  if Assigned(fCover.VAAFlag) then fCover.VAAFlag.Free; //VAA
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSumm.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSumm.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSumm.dfm	(revision 1676)
@@ -0,0 +1,1014 @@
+inherited frmDCSumm: TfrmDCSumm
+  Left = 1291
+  Top = 197
+  HelpContext = 7000
+  Caption = 'Discharge Summary Page'
+  ClientHeight = 382
+  ClientWidth = 679
+  HelpFile = 'overvw'
+  Menu = mnuSumms
+  OnDestroy = FormDestroy
+  ExplicitWidth = 687
+  ExplicitHeight = 428
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 377
+    Width = 679
+    ExplicitTop = 358
+    ExplicitWidth = 679
+  end
+  inherited sptHorz: TSplitter
+    Left = 64
+    Width = 3
+    Height = 377
+    OnCanResize = sptHorzCanResize
+    ExplicitLeft = 64
+    ExplicitWidth = 3
+    ExplicitHeight = 358
+  end
+  inherited pnlLeft: TPanel
+    Width = 64
+    Height = 377
+    ExplicitWidth = 64
+    ExplicitHeight = 377
+    object lblSumms: TOROffsetLabel
+      Left = 0
+      Top = 0
+      Width = 64
+      Height = 19
+      Align = alTop
+      Caption = 'Last 100 Summaries'
+      HorzOffset = 2
+      ParentShowHint = False
+      ShowHint = True
+      Transparent = True
+      VertOffset = 6
+      WordWrap = False
+    end
+    object lblSpace1: TLabel
+      Left = 0
+      Top = 353
+      Width = 64
+      Height = 3
+      Align = alBottom
+      AutoSize = False
+      Caption = ' '
+      ExplicitTop = 334
+    end
+    object cmdNewSumm: TORAlignButton
+      Left = 0
+      Top = 332
+      Width = 64
+      Height = 21
+      Align = alBottom
+      Caption = 'New Summary'
+      TabOrder = 1
+      OnClick = cmdNewSummClick
+    end
+    object cmdPCE: TORAlignButton
+      Left = 0
+      Top = 356
+      Width = 64
+      Height = 21
+      Align = alBottom
+      Caption = 'Encounter'
+      TabOrder = 2
+      Visible = False
+      OnClick = cmdPCEClick
+    end
+    object pnlDrawers: TPanel
+      Left = 0
+      Top = 19
+      Width = 64
+      Height = 313
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object splDrawers: TSplitter
+        Left = 0
+        Top = 310
+        Width = 64
+        Height = 3
+        Cursor = crVSplit
+        Align = alBottom
+        ExplicitTop = 291
+      end
+      object lstSumms: TORListBox
+        Left = 0
+        Top = 0
+        Width = 64
+        Height = 33
+        TabStop = False
+        Ctl3D = True
+        ItemHeight = 13
+        ParentCtl3D = False
+        ParentShowHint = False
+        PopupMenu = popSummList
+        ShowHint = True
+        TabOrder = 0
+        Visible = False
+        OnClick = lstSummsClick
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3'
+        TabPositions = '10,20'
+      end
+      object tvSumms: TORTreeView
+        Left = 0
+        Top = 0
+        Width = 64
+        Height = 310
+        Align = alClient
+        Constraints.MinWidth = 30
+        HideSelection = False
+        Images = dmodShared.imgNotes
+        Indent = 19
+        PopupMenu = popSummList
+        ReadOnly = True
+        StateImages = dmodShared.imgImages
+        TabOrder = 1
+        OnChange = tvSummsChange
+        OnClick = tvSummsClick
+        OnCollapsed = tvSummsCollapsed
+        OnDragDrop = tvSummsDragDrop
+        OnDragOver = tvSummsDragOver
+        OnExpanded = tvSummsExpanded
+        OnStartDrag = tvSummsStartDrag
+        Caption = 'Last 100 Summaries'
+        NodePiece = 0
+        ShortNodeCaptions = True
+      end
+    end
+  end
+  inherited pnlRight: TPanel
+    Left = 67
+    Width = 612
+    Height = 377
+    ExplicitLeft = 67
+    ExplicitWidth = 612
+    ExplicitHeight = 377
+    object sptVert: TSplitter
+      Left = 0
+      Top = 328
+      Width = 612
+      Height = 4
+      Cursor = crVSplit
+      Align = alBottom
+      ExplicitTop = 309
+    end
+    object memPCEShow: TRichEdit
+      Left = 0
+      Top = 332
+      Width = 612
+      Height = 45
+      Align = alBottom
+      Color = clCream
+      Lines.Strings = (
+        '<No encounter information entered>')
+      PlainText = True
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 2
+      WantReturns = False
+      WordWrap = False
+    end
+    object pnlWrite: TPanel
+      Left = 0
+      Top = 0
+      Width = 612
+      Height = 328
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      Visible = False
+      OnResize = pnlWriteResize
+      object memNewSumm: TRichEdit
+        Left = 0
+        Top = 52
+        Width = 612
+        Height = 276
+        Align = alClient
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popSummMemo
+        ScrollBars = ssVertical
+        TabOrder = 1
+        WantTabs = True
+        OnChange = memNewSummChange
+        OnKeyUp = memNewSummKeyUp
+      end
+      object pnlFields: TORAutoPanel
+        Left = 0
+        Top = 0
+        Width = 612
+        Height = 52
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        DesignSize = (
+          612
+          52)
+        object bvlNewTitle: TBevel
+          Left = 5
+          Top = 5
+          Width = 102
+          Height = 15
+        end
+        object lblNewTitle: TStaticText
+          Left = 6
+          Top = 6
+          Width = 104
+          Height = 17
+          Hint = 'Press "Change..." to select a different title.'
+          Caption = ' Discharge Summary '
+          Color = clCream
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentColor = False
+          ParentFont = False
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 1
+        end
+        object lblVisit: TStaticText
+          Left = 6
+          Top = 21
+          Width = 123
+          Height = 17
+          Caption = 'Adm: 10/20/99   2BMED'
+          ShowAccelChar = False
+          TabOrder = 2
+        end
+        object lblRefDate: TStaticText
+          Left = 237
+          Top = 6
+          Width = 101
+          Height = 17
+          Hint = 'Press "Change..." to change date/time of summary.'
+          Alignment = taCenter
+          Caption = 'Oct 20,1999@15:30'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 3
+        end
+        object lblCosigner: TStaticText
+          Left = 307
+          Top = 21
+          Width = 199
+          Height = 13
+          Hint = 'Press "Change..." to select a different attending.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          AutoSize = False
+          Caption = 'Attending: Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 4
+        end
+        object lblDictator: TStaticText
+          Left = 402
+          Top = 6
+          Width = 152
+          Height = 17
+          Hint = 'Press "Change..." to select a different author.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          Caption = 'Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 5
+        end
+        object lblDischarge: TStaticText
+          Left = 6
+          Top = 34
+          Width = 71
+          Height = 17
+          Caption = 'Dis: 03/20/00'
+          ShowAccelChar = False
+          TabOrder = 6
+        end
+        object cmdChange: TButton
+          Left = 554
+          Top = 10
+          Width = 58
+          Height = 21
+          Anchors = [akTop, akRight]
+          Caption = 'Change...'
+          TabOrder = 0
+          OnClick = cmdChangeClick
+        end
+      end
+    end
+    object pnlRead: TPanel
+      Left = 0
+      Top = 0
+      Width = 612
+      Height = 328
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblTitle: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 612
+        Height = 19
+        Hint = 'No Discharge Summaries Found'
+        Align = alTop
+        Caption = 'No Discharge Summaries Found'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        HorzOffset = 2
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object sptList: TSplitter
+        Left = 0
+        Top = 113
+        Width = 612
+        Height = 3
+        Cursor = crVSplit
+        Align = alTop
+      end
+      object memSumm: TRichEdit
+        Left = 0
+        Top = 116
+        Width = 612
+        Height = 212
+        Align = alClient
+        Color = clCream
+        Ctl3D = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Lines.Strings = (
+          
+            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRUSTVWXYZabcdefghijkl' +
+            'mnopqrstuvwxyz12')
+        ParentCtl3D = False
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popSummMemo
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 0
+        WantReturns = False
+        WordWrap = False
+      end
+      object lvSumms: TCaptionListView
+        Left = 0
+        Top = 19
+        Width = 612
+        Height = 94
+        Align = alTop
+        Columns = <
+          item
+            Caption = 'Date'
+            Width = 100
+          end
+          item
+            AutoSize = True
+            Caption = 'Title'
+          end
+          item
+            AutoSize = True
+            Caption = 'Subject'
+          end
+          item
+            AutoSize = True
+            Caption = 'Author'
+          end
+          item
+            AutoSize = True
+            Caption = 'Location'
+          end
+          item
+            Caption = 'fmdate'
+            Width = 0
+          end
+          item
+            Caption = 'TIUDA'
+            Width = 0
+          end>
+        Constraints.MinHeight = 50
+        HideSelection = False
+        ReadOnly = True
+        RowSelect = True
+        SmallImages = dmodShared.imgNotes
+        StateImages = dmodShared.imgImages
+        TabOrder = 1
+        ViewStyle = vsReport
+        Visible = False
+        OnColumnClick = lvSummsColumnClick
+        OnCompare = lvSummsCompare
+        OnResize = lvSummsResize
+        OnSelectItem = lvSummsSelectItem
+        Caption = 'No Discharge Summaries Found'
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdNewSumm'
+        'Status = stsDefault')
+      (
+        'Component = cmdPCE'
+        'Status = stsDefault')
+      (
+        'Component = pnlDrawers'
+        'Status = stsDefault')
+      (
+        'Component = lstSumms'
+        'Status = stsDefault')
+      (
+        'Component = tvSumms'
+        'Status = stsDefault')
+      (
+        'Component = memPCEShow'
+        'Status = stsDefault')
+      (
+        'Component = pnlWrite'
+        'Status = stsDefault')
+      (
+        'Component = memNewSumm'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = lblNewTitle'
+        'Status = stsDefault')
+      (
+        'Component = lblVisit'
+        'Status = stsDefault')
+      (
+        'Component = lblRefDate'
+        'Status = stsDefault')
+      (
+        'Component = lblCosigner'
+        'Status = stsDefault')
+      (
+        'Component = lblDictator'
+        'Status = stsDefault')
+      (
+        'Component = lblDischarge'
+        'Status = stsDefault')
+      (
+        'Component = cmdChange'
+        'Status = stsDefault')
+      (
+        'Component = pnlRead'
+        'Status = stsDefault')
+      (
+        'Component = memSumm'
+        'Status = stsDefault')
+      (
+        'Component = lvSumms'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmDCSumm'
+        'Status = stsDefault'))
+  end
+  object mnuSumms: TMainMenu
+    Left = 596
+    Top = 305
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSumms: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewAll: TMenuItem
+        Tag = 1
+        Caption = '&Signed Summaries (All)'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByAuthor: TMenuItem
+        Tag = 4
+        Caption = 'Signed Summaries by &Author'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByDate: TMenuItem
+        Tag = 5
+        Caption = 'Signed Summaries by Date &Range'
+        OnClick = mnuViewClick
+      end
+      object mnuViewUncosigned: TMenuItem
+        Tag = 3
+        Caption = 'Un&cosigned Summaries'
+        OnClick = mnuViewClick
+      end
+      object mnuViewUnsigned: TMenuItem
+        Tag = 2
+        Caption = '&Unsigned Summaries'
+        OnClick = mnuViewClick
+      end
+      object mnuViewCustom: TMenuItem
+        Tag = 6
+        Caption = 'Custo&m View'
+        OnClick = mnuViewClick
+      end
+      object N1: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewSaveAsDefault: TMenuItem
+        Caption = 'Sa&ve as Default View'
+        OnClick = mnuViewSaveAsDefaultClick
+      end
+      object mnuViewReturnToDefault: TMenuItem
+        Caption = 'Return to De&fault View'
+        OnClick = mnuViewReturntoDefaultClick
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewDetail: TMenuItem
+        Caption = '&Details'
+        OnClick = mnuViewDetailClick
+      end
+      object N7: TMenuItem
+        Caption = '-'
+      end
+      object mnuIconLegend: TMenuItem
+        Caption = 'Icon Legend'
+        OnClick = mnuIconLegendClick
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      object mnuActNew: TMenuItem
+        Caption = '&New Discharge Summary...'
+        Hint = 'Creates a new Discharge Summary'
+        ShortCut = 24654
+        OnClick = mnuActNewClick
+      end
+      object mnuActAddend: TMenuItem
+        Caption = '&Make Addendum...'
+        Hint = 'Makes an addendum for the currently selected Discharge Summary'
+        ShortCut = 24653
+        OnClick = mnuActAddendClick
+      end
+      object mnuActAddIDEntry: TMenuItem
+        Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+        OnClick = mnuActAddIDEntryClick
+      end
+      object mnuActAttachtoIDParent: TMenuItem
+        Caption = 'A&ttach to Interdisciplinary Note'
+        OnClick = mnuActAttachtoIDParentClick
+      end
+      object mnuActDetachFromIDParent: TMenuItem
+        Caption = 'Detac&h from Interdisciplinary Note'
+        OnClick = mnuActDetachFromIDParentClick
+      end
+      object Z2: TMenuItem
+        Caption = '-'
+      end
+      object mnuActChange: TMenuItem
+        Caption = '&Change Title...'
+        ShortCut = 24643
+        OnClick = mnuActChangeClick
+      end
+      object mnuActLoadBoiler: TMenuItem
+        Caption = 'Reload &Boilerplate Text'
+        OnClick = mnuActLoadBoilerClick
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+      end
+      object mnuActSignList: TMenuItem
+        Caption = 'Add to Signature &List'
+        Hint = 
+          'Adds the currently displayed Discharge Summary to list of things' +
+          ' to be signed'
+        OnClick = mnuActSignListClick
+      end
+      object mnuActDelete: TMenuItem
+        Caption = '&Delete Discharge Summary...'
+        ShortCut = 24644
+        OnClick = mnuActDeleteClick
+      end
+      object mnuActEdit: TMenuItem
+        Caption = '&Edit Discharge Summary...'
+        ShortCut = 24645
+        OnClick = mnuActEditClick
+      end
+      object mnuActSave: TMenuItem
+        Caption = 'S&ave without Signature'
+        Hint = 'Saves the Discharge Summary that is being edited'
+        ShortCut = 24641
+        OnClick = mnuActSaveClick
+      end
+      object mnuActSign: TMenuItem
+        Caption = 'Si&gn Discharge Summary Now...'
+        ShortCut = 24647
+        OnClick = mnuActSignClick
+      end
+      object mnuActIdentifyAddlSigners: TMenuItem
+        Caption = '&Identify Additional Signers'
+        OnClick = mnuActIdentifyAddlSignersClick
+      end
+    end
+    object mnuOptions: TMenuItem
+      Caption = '&Options'
+      GroupIndex = 4
+      OnClick = mnuOptionsClick
+      object mnuEditTemplates: TMenuItem
+        Caption = 'Edit &Templates...'
+        OnClick = mnuEditTemplatesClick
+      end
+      object mnuNewTemplate: TMenuItem
+        Caption = 'Create &New Template...'
+        OnClick = mnuNewTemplateClick
+      end
+      object N3: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditSharedTemplates: TMenuItem
+        Caption = 'Edit &Shared Templates...'
+        OnClick = mnuEditSharedTemplatesClick
+      end
+      object mnuNewSharedTemplate: TMenuItem
+        Caption = '&Create New Shared Template...'
+        OnClick = mnuNewSharedTemplateClick
+      end
+      object N4: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditDialgFields: TMenuItem
+        Caption = 'Edit Template &Fields'
+        OnClick = mnuEditDialgFieldsClick
+      end
+    end
+  end
+  object popSummMemo: TPopupMenu
+    OnPopup = popSummMemoPopup
+    Left = 539
+    Top = 304
+    object popSummMemoCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popSummMemoCutClick
+    end
+    object popSummMemoCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popSummMemoCopyClick
+    end
+    object popSummMemoPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popSummMemoPasteClick
+    end
+    object popSummMemoPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popSummMemoPasteClick
+    end
+    object popSummMemoReformat: TMenuItem
+      Caption = 'Re&format Paragraph'
+      ShortCut = 24658
+      OnClick = popSummMemoReformatClick
+    end
+    object popSummMemoSaveContinue: TMenuItem
+      Caption = 'Save && Continue Editing'
+      ShortCut = 24659
+      Visible = False
+      OnClick = popSummMemoSaveContinueClick
+    end
+    object Z11: TMenuItem
+      Caption = '-'
+    end
+    object popSummMemoFind: TMenuItem
+      Caption = '&Find in Selected Summary'
+      OnClick = popSummMemoFindClick
+    end
+    object popSummMemoReplace: TMenuItem
+      Caption = '&Replace Text'
+      OnClick = popSummMemoReplaceClick
+    end
+    object N8: TMenuItem
+      Caption = '-'
+    end
+    object popSummMemoGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      OnClick = popSummMemoGrammarClick
+    end
+    object popSummMemoSpell: TMenuItem
+      Caption = 'C&heck Spelling'
+      OnClick = popSummMemoSpellClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object popSummMemoTemplate: TMenuItem
+      Caption = 'Copy Into New &Template'
+      OnClick = popSummMemoTemplateClick
+    end
+    object Z10: TMenuItem
+      Caption = '-'
+    end
+    object popSummMemoSignList: TMenuItem
+      Caption = 'Add to Signature &List'
+      OnClick = mnuActSignListClick
+    end
+    object popSummMemoDelete: TMenuItem
+      Caption = '&Delete Discharge Summary...'
+      OnClick = mnuActDeleteClick
+    end
+    object popSummMemoEdit: TMenuItem
+      Caption = '&Edit Discharge Summary...'
+      OnClick = mnuActEditClick
+    end
+    object popSummMemoAddend: TMenuItem
+      Caption = '&Make Addendum...'
+      OnClick = mnuActAddendClick
+    end
+    object popSummMemoSave: TMenuItem
+      Caption = 'S&ave without Signature'
+      OnClick = mnuActSaveClick
+    end
+    object popSummMemoSign: TMenuItem
+      Caption = '&Sign Discharge Summary Now...'
+      OnClick = mnuActSignClick
+    end
+    object popSummMemoAddlSign: TMenuItem
+      Caption = '&Identify Additional Signers'
+      OnClick = popSummMemoAddlSignClick
+    end
+    object N9: TMenuItem
+      Caption = '-'
+    end
+    object popSummMemoPreview: TMenuItem
+      Caption = 'Previe&w/Print Current Template'
+      ShortCut = 16471
+      OnClick = popSummMemoPreviewClick
+    end
+    object popSummMemoInsTemplate: TMenuItem
+      Caption = 'Insert Current Template'
+      ShortCut = 16429
+      OnClick = popSummMemoInsTemplateClick
+    end
+    object popSummMemoEncounter: TMenuItem
+      Caption = 'Edit Encounter Information'
+      ShortCut = 16453
+      OnClick = cmdPCEClick
+    end
+  end
+  object popSummList: TPopupMenu
+    OnPopup = popSummListPopup
+    Left = 500
+    Top = 304
+    object popSummListAll: TMenuItem
+      Tag = 1
+      Caption = '&Signed Discharge Summaries (All)'
+      OnClick = mnuViewClick
+    end
+    object popSummListByAuthor: TMenuItem
+      Tag = 4
+      Caption = 'Signed Discharge Summaries by &Author'
+      OnClick = mnuViewClick
+    end
+    object popSummListByDate: TMenuItem
+      Tag = 5
+      Caption = 'Signed Discharge Summaries by Date &Range'
+      OnClick = mnuViewClick
+    end
+    object popSummListUncosigned: TMenuItem
+      Tag = 3
+      Caption = 'Un&cosigned Discharge Summaries'
+      OnClick = mnuViewClick
+    end
+    object popSummListUnsigned: TMenuItem
+      Tag = 2
+      Caption = '&Unsigned Discharge Summaries'
+      OnClick = mnuViewClick
+    end
+    object popSummListCustom: TMenuItem
+      Tag = 6
+      Caption = 'Cus&tom View'
+      OnClick = mnuViewClick
+    end
+    object N5: TMenuItem
+      Caption = '-'
+    end
+    object popSummListExpandSelected: TMenuItem
+      Caption = '&Expand Selected'
+      OnClick = popSummListExpandSelectedClick
+    end
+    object popSummListExpandAll: TMenuItem
+      Caption = 'E&xpand All'
+      OnClick = popSummListExpandAllClick
+    end
+    object popSummListCollapseSelected: TMenuItem
+      Caption = 'C&ollapse Selected'
+      OnClick = popSummListCollapseSelectedClick
+    end
+    object popSummListCollapseAll: TMenuItem
+      Caption = 'Co&llapse All'
+      OnClick = popSummListCollapseAllClick
+    end
+    object N6: TMenuItem
+      Caption = '-'
+    end
+    object popSummListAddIDEntry: TMenuItem
+      Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+      OnClick = mnuActAddIDEntryClick
+    end
+    object popSummListAttachtoIDParent: TMenuItem
+      Caption = 'A&ttach to Interdisciplinary Note'
+      OnClick = mnuActAttachtoIDParentClick
+    end
+    object popSummListDetachFromIDParent: TMenuItem
+      Caption = 'Detac&h from Interdisciplinary Note'
+      OnClick = mnuActDetachFromIDParentClick
+    end
+  end
+  object timAutoSave: TTimer
+    Enabled = False
+    Interval = 300000
+    OnTimer = timAutoSaveTimer
+    Left = 560
+    Top = 61
+  end
+  object dlgFindText: TFindDialog
+    Options = [frDown, frHideUpDown]
+    OnFind = dlgFindTextFind
+    Left = 452
+    Top = 312
+  end
+  object dlgReplaceText: TReplaceDialog
+    OnFind = dlgReplaceTextFind
+    OnReplace = dlgReplaceTextReplace
+    Left = 409
+    Top = 313
+  end
+  object imgLblNotes: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = lvSumms
+      end
+      item
+        Component = tvSumms
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblNotes
+    Left = 16
+    Top = 171
+  end
+  object imgLblImages: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = lvSumms
+      end
+      item
+        Component = tvSumms
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblImages
+    Left = 16
+    Top = 203
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSumm.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSumm.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSumm.pas	(revision 1676)
@@ -0,0 +1,3270 @@
+unit fDCSumm;
+
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fHSplit, StdCtrls, ExtCtrls, Menus, ComCtrls, ORCtrls, ORFn, uConst, ORDtTm,
+  uPCE, ORClasses, fDrawers, rDCSumm, uDocTree, uDCSumm, uTIU, fPrintList,
+  VA508AccessibilityManager, fBase508Form, VA508ImageListLabeler;
+
+type
+  TfrmDCSumm = class(TfrmHSplit)
+    mnuSumms: TMainMenu;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartSumms: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    Z1: TMenuItem;
+    mnuViewDetail: TMenuItem;
+    mnuAct: TMenuItem;
+    mnuActNew: TMenuItem;
+    Z2: TMenuItem;
+    mnuActSave: TMenuItem;
+    mnuActDelete: TMenuItem;
+    mnuActEdit: TMenuItem;
+    mnuActSign: TMenuItem;
+    mnuActAddend: TMenuItem;
+    lblSumms: TOROffsetLabel;
+    pnlRead: TPanel;
+    lblTitle: TOROffsetLabel;
+    memSumm: TRichEdit;
+    pnlWrite: TPanel;
+    memNewSumm: TRichEdit;
+    Z3: TMenuItem;
+    mnuViewAll: TMenuItem;
+    mnuViewByAuthor: TMenuItem;
+    mnuViewByDate: TMenuItem;
+    mnuViewUncosigned: TMenuItem;
+    mnuViewUnsigned: TMenuItem;
+    mnuActSignList: TMenuItem;
+    cmdNewSumm: TORAlignButton;
+    lblSpace1: TLabel;
+    cmdPCE: TORAlignButton;
+    popSummMemo: TPopupMenu;
+    popSummMemoCut: TMenuItem;
+    popSummMemoCopy: TMenuItem;
+    popSummMemoPaste: TMenuItem;
+    Z10: TMenuItem;
+    popSummMemoSignList: TMenuItem;
+    popSummMemoDelete: TMenuItem;
+    popSummMemoEdit: TMenuItem;
+    popSummMemoSave: TMenuItem;
+    popSummMemoSign: TMenuItem;
+    popSummList: TPopupMenu;
+    popSummListAll: TMenuItem;
+    popSummListByAuthor: TMenuItem;
+    popSummListByDate: TMenuItem;
+    popSummListUncosigned: TMenuItem;
+    popSummListUnsigned: TMenuItem;
+    pnlFields: TORAutoPanel;
+    sptVert: TSplitter;
+    memPCEShow: TRichEdit;
+    mnuActIdentifyAddlSigners: TMenuItem;
+    popSummMemoAddlSign: TMenuItem;
+    Z11: TMenuItem;
+    popSummMemoSpell: TMenuItem;
+    popSummMemoGrammar: TMenuItem;
+    mnuViewCustom: TMenuItem;
+    N1: TMenuItem;
+    mnuViewSaveAsDefault: TMenuItem;
+    mnuViewReturnToDefault: TMenuItem;
+    pnlDrawers: TPanel;
+    lstSumms: TORListBox;
+    N2: TMenuItem;
+    popSummMemoTemplate: TMenuItem;
+    mnuOptions: TMenuItem;
+    mnuEditTemplates: TMenuItem;
+    mnuNewTemplate: TMenuItem;
+    splDrawers: TSplitter;
+    N3: TMenuItem;
+    mnuEditSharedTemplates: TMenuItem;
+    mnuNewSharedTemplate: TMenuItem;
+    timAutoSave: TTimer;
+    cmdChange: TButton;
+    lblNewTitle: TStaticText;
+    lblVisit: TStaticText;
+    lblRefDate: TStaticText;
+    lblCosigner: TStaticText;
+    lblDictator: TStaticText;
+    lblDischarge: TStaticText;
+    popSummMemoPaste2: TMenuItem;
+    popSummMemoReformat: TMenuItem;
+    Z4: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActLoadBoiler: TMenuItem;
+    bvlNewTitle: TBevel;
+    popSummMemoSaveContinue: TMenuItem;
+    N4: TMenuItem;
+    mnuEditDialgFields: TMenuItem;
+    lvSumms: TCaptionListView;
+    sptList: TSplitter;
+    N5: TMenuItem;
+    popSummListExpandSelected: TMenuItem;
+    popSummListExpandAll: TMenuItem;
+    popSummListCollapseSelected: TMenuItem;
+    popSummListCollapseAll: TMenuItem;
+    tvSumms: TORTreeView;
+    popSummListCustom: TMenuItem;
+    N6: TMenuItem;
+    popSummListDetachFromIDParent: TMenuItem;
+    mnuActDetachFromIDParent: TMenuItem;
+    popSummListAddIDEntry: TMenuItem;
+    mnuActAddIDEntry: TMenuItem;
+    N7: TMenuItem;
+    mnuIconLegend: TMenuItem;
+    dlgFindText: TFindDialog;
+    popSummMemoFind: TMenuItem;
+    dlgReplaceText: TReplaceDialog;
+    N8: TMenuItem;
+    popSummMemoReplace: TMenuItem;
+    mnuChartSurgery: TMenuItem;
+    mnuActAttachtoIDParent: TMenuItem;
+    popSummListAttachtoIDParent: TMenuItem;
+    popSummMemoAddend: TMenuItem;
+    N9: TMenuItem;
+    popSummMemoPreview: TMenuItem;
+    popSummMemoInsTemplate: TMenuItem;
+    popSummMemoEncounter: TMenuItem;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    imgLblNotes: TVA508ImageListLabeler;
+    imgLblImages: TVA508ImageListLabeler;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure lstSummsClick(Sender: TObject);
+    procedure pnlRightResize(Sender: TObject);
+    procedure cmdNewSummClick(Sender: TObject);
+    procedure memNewSummChange(Sender: TObject);
+    procedure mnuActNewClick(Sender: TObject);
+    procedure mnuActAddIDEntryClick(Sender: TObject);
+    procedure mnuActSaveClick(Sender: TObject);
+    procedure mnuViewClick(Sender: TObject);
+    procedure mnuActAddendClick(Sender: TObject);
+    procedure mnuActDetachFromIDParentClick(Sender: TObject);
+    procedure mnuActSignListClick(Sender: TObject);
+    procedure mnuActDeleteClick(Sender: TObject);
+    procedure mnuActEditClick(Sender: TObject);
+    procedure mnuActSignClick(Sender: TObject);
+    procedure cmdOrdersClick(Sender: TObject);
+    procedure cmdPCEClick(Sender: TObject);
+    procedure popSummMemoCutClick(Sender: TObject);
+    procedure popSummMemoCopyClick(Sender: TObject);
+    procedure popSummMemoPasteClick(Sender: TObject);
+    procedure popSummMemoPopup(Sender: TObject);
+    procedure pnlWriteResize(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure mnuViewDetailClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure mnuActIdentifyAddlSignersClick(Sender: TObject);
+    procedure popSummMemoAddlSignClick(Sender: TObject);
+    procedure popSummMemoSpellClick(Sender: TObject);
+    procedure popSummMemoGrammarClick(Sender: TObject);
+    procedure mnuViewSaveAsDefaultClick(Sender: TObject);
+    procedure mnuViewReturntoDefaultClick(Sender: TObject);
+    procedure popSummMemoTemplateClick(Sender: TObject);
+    procedure mnuNewTemplateClick(Sender: TObject);
+    procedure mnuEditTemplatesClick(Sender: TObject);
+    procedure mnuOptionsClick(Sender: TObject);
+    procedure mnuEditSharedTemplatesClick(Sender: TObject);
+    procedure mnuNewSharedTemplateClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure timAutoSaveTimer(Sender: TObject);
+    procedure cmdChangeClick(Sender: TObject);
+    procedure popSummMemoReformatClick(Sender: TObject);
+    procedure mnuActChangeClick(Sender: TObject);
+    procedure mnuActLoadBoilerClick(Sender: TObject);
+    procedure popSummMemoSaveContinueClick(Sender: TObject);
+    procedure mnuEditDialgFieldsClick(Sender: TObject);
+    procedure tvSummsChange(Sender: TObject; Node: TTreeNode);
+    procedure tvSummsClick(Sender: TObject);
+    procedure tvSummsCollapsed(Sender: TObject; Node: TTreeNode);
+    procedure tvSummsExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvSummsStartDrag(Sender: TObject;
+      var DragObject: TDragObject);
+    procedure tvSummsDragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure tvSummsDragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
+    procedure lvSummsColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvSummsCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+    procedure lvSummsSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
+    procedure popSummListExpandAllClick(Sender: TObject);
+    procedure popSummListCollapseAllClick(Sender: TObject);
+    procedure popSummListExpandSelectedClick(Sender: TObject);
+    procedure popSummListCollapseSelectedClick(Sender: TObject);
+    procedure popSummListPopup(Sender: TObject);
+    procedure lvSummsResize(Sender: TObject);
+    procedure mnuIconLegendClick(Sender: TObject);
+    procedure popSummMemoFindClick(Sender: TObject);
+    procedure dlgFindTextFind(Sender: TObject);
+    procedure dlgReplaceTextReplace(Sender: TObject);
+    procedure dlgReplaceTextFind(Sender: TObject);
+    procedure popSummMemoReplaceClick(Sender: TObject);
+    procedure mnuActAttachtoIDParentClick(Sender: TObject);
+    procedure memNewSummKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure sptHorzCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
+    procedure popSummMemoPreviewClick(Sender: TObject);
+    procedure popSummMemoInsTemplateClick(Sender: TObject);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+  private
+    FEditingIndex: Integer;                      // index of Summary being currently edited
+    FChanged: Boolean;                           // true if any text has changed in the Summary
+    FEditCtrl: TCustomEdit;
+    FDischargeDate: TFMDateTime;
+    FSilent: Boolean;
+    FCurrentContext: TTIUContext;
+    FDefaultContext: TTIUContext;
+    FImageFlag: TBitmap;
+    FEditDCSumm: TEditDCSummRec;
+    FShowAdmissions: Boolean;
+    FVerifySummTitle: Integer;
+    FDocList: TStringList;
+    FConfirmed: boolean;
+    FDeleted: boolean;
+    FLastSummID: string;
+    function NoSummSelected : Boolean;
+    procedure ClearEditControls;
+    function StartNewEdit(NewNoteType: integer): Boolean;
+    procedure DoAutoSave(Suppress: integer = 1);
+    function LacksRequiredForCreate: Boolean;
+    function GetTitleText(AnIndex: Integer): string;
+    //function MakeTitleText(IsAddendum: Boolean = False): string;
+    procedure SetEditingIndex(const Value: Integer);
+    procedure DisplayPCE;
+    function  LockSumm(AnIEN: Int64): Boolean;
+    procedure InsertAddendum;
+    procedure InsertNewSumm(IsIDChild: boolean; AnIDParent: integer);
+    procedure LoadForEdit(PreserveValues: Boolean);
+    procedure RemovePCEFromChanges(IEN: Int64; AVisitStr: string = '');
+    procedure SaveEditedSumm(var Saved: Boolean);
+    procedure SaveCurrentSumm(var Saved: Boolean);
+    procedure ShowPCEControls(ShouldShow: Boolean);
+    function  TitleText(AnIndex: Integer): string;
+    procedure ProcessNotifications;
+    procedure SetViewContext(AContext: TTIUContext);
+    function GetDrawers: TFrmDrawers;
+    property EditingIndex: Integer read FEditingIndex write SetEditingIndex;
+    function VerifySummTitle: Boolean;
+    //  added for treeview - see also uDocTree.pas
+    procedure LoadSumms;
+    procedure UpdateTreeView(DocList: TStringList; Tree: TORTreeView);
+    procedure  EnableDisableIDNotes;
+    procedure DoAttachIDChild(AChild, AParent: TORTreeNode);
+    function SetSummTreeLabel(AContext: TTIUContext): string;
+  public
+    function  AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure RequestPrint; override;
+    procedure RequestMultiplePrint(AForm: TfrmPrintList);
+    procedure SetFontSize(NewFontSize: Integer); override;
+    procedure SaveSignItem(const ItemID, ESCode: string);
+    procedure LstSummsToPrint;
+  published
+    property Drawers: TFrmDrawers read GetDrawers; // Keep Drawers published
+  end;
+
+var
+  frmDCSumm: TfrmDCSumm;
+
+implementation
+
+{$R *.DFM}
+
+uses fFrame, fVisit, fEncnt, rCore, uCore, fNoteBA, fNoteBD, fSignItem, fEncounterFrame,
+     rPCE, Clipbrd, fNotePrt, fAddlSigners, fNoteDR, uSpell, rVitals, fTIUView,
+     fTemplateEditor, rTIU, fDCSummProps, fNotesBP, fTemplateFieldEditor, uTemplates,
+     fReminderDialog, dShared, rTemplates, fIconLegend, fNoteIDParents,
+     fTemplateDialog, uVA508CPRSCompatibility, VA508AccessibilityRouter;
+
+const
+  NA_CREATE     = 0;                             // New Summ action - create new Summ
+  NA_SHOW       = 1;                             // New Summ action - show current
+  NA_SAVECREATE = 2;                             // New Summ action - save current then create
+
+  TYP_DC_SUMM = 244;
+  DC_NEW_SUMM = -50;                             // Holder IEN for a new Summary
+  DC_ADDENDUM = -60;                             // Holder IEN for a new addendum
+
+  DC_ACT_NEW_SUMM  = 2;
+  DC_ACT_ADDENDUM  = 3;
+  DC_ACT_EDIT_SUMM = 4;
+  DC_ACT_ID_ENTRY  = 5;
+ 
+  TX_NEED_VISIT = 'A visit is required before creating a new Discharge Summary.';
+  TX_NO_VISIT   = 'Insufficient Visit Information';
+  TX_BOILERPLT  = 'You have modified the text of this Discharge Summary.  Changing the title will' +
+                  ' discard the Discharge Summary text.' + CRLF + 'Do you wish to continue?';
+  TX_NEWTITLE   = 'Change Discharge Summary Title';
+  TX_REQD_SUMM  = 'The following information is required to save a Discharge Summary - ' + CRLF;
+  TX_REQD_ADDM  = 'The following information is required to save an addendum - ' + CRLF;
+  TX_REQD_COSIG = CRLF + 'Attending Physician';
+  TX_REQ2       = CRLF + CRLF +
+                  'It is recommended that these fields be entered before continuing' + CRLF +
+                  'to prevent losing the summary should the application time out.';
+  TX_CREATE_ERR = 'Error Creating Summary';
+  TX_UPDATE_ERR = 'Error Updating Summary';
+  TX_NO_NOTE    = 'No Discharge Summary is currently being edited';
+  TX_SAVE_NOTE  = 'Save Discharge Summary';
+  TX_ADDEND_NO  = 'Cannot make an addendum to a Summary that is being edited';
+  TX_DEL_OK     = CRLF + CRLF + 'Delete this Discharge Summary?';
+  TX_DEL_ERR    = 'Unable to Delete Summary';
+  TX_SIGN       = 'Sign Summary';
+  TX_COSIGN     = 'Cosign Summary';
+  TX_SIGN_ERR   = 'Unable to Sign Summary';
+
+  TX_NOSUMM     = 'No Discharge Summary is currently selected.';
+  TX_NOSUMM_CAP = 'No Summary Selected';
+  TX_NOPRT_NEW  = 'This Discharge Summary may not be printed until it is saved';
+  TX_NOPRT_NEW_CAP = 'Save Discharge Summary';
+  TX_NOT_INPATIENT = 'Discharge Summaries are only applicable to hospital admissions.';
+  TX_NO_ADMISSION_CAP  = 'No hospital admission was selected';
+  TX_NO_ALERT   = 'There is insufficient information to process this alert.' + CRLF +
+                  'Either the alert has already been deleted, or it contained invalid data.' + CRLF + CRLF +
+                  'Click the NEXT button if you wish to continue processing more alerts.';
+  TX_CAP_NO_ALERT = 'Unable to Process Alert';
+  TX_NO_FUTURE_DT = 'A Reference Date/Time in the future is not allowed.';
+  TX_RELEASE      = 'Do you want to release this summary from DRAFT mode to UNSIGNED' + CRLF +
+                    'status? This does not release the summary as the official,' + CRLF +
+                    'completed Discharge Summary until it is COSIGNED.';
+                    //'Do you want to release this discharge summary?';
+  TC_RELEASE      = 'Release Document';
+  TX_NEW_SAVE1    = 'You are currently editing:' + CRLF + CRLF;
+  TX_NEW_SAVE2    = CRLF + CRLF + 'Do you wish to save this summary and begin a new one?';
+  TX_NEW_SAVE3    = CRLF + CRLF + 'Do you wish to save this summary and begin a new addendum?';
+  TX_NEW_SAVE4    = CRLF + CRLF + 'Do you wish to save this summary and edit the one selected?';
+  TX_NEW_SAVE5    = CRLF + CRLF + 'Do you wish to save this summary and begin a new Interdisciplinary entry?';
+  TC_NEW_SAVE2    = 'Create New Summary';
+  TC_NEW_SAVE3    = 'Create New Addendum';
+  TC_NEW_SAVE4    = 'Edit Different Summary';
+  TC_NEW_SAVE5    = 'Create New Interdisciplinary Entry';
+  TC_NO_LOCK      = 'Unable to Lock Summary';
+  TX_EMPTY_SUMM   = CRLF + CRLF + 'This discharge summary contains no text and will not be saved.' + CRLF +
+                    'Do you wish to delete this discharge summary?';
+  TC_EMPTY_SUMM   = 'Empty Note';
+  TX_EMPTY_SUMM1   = 'This document contains no text and can not be signed.';
+  TX_ABSAVE       = 'It appears the session terminated abnormally when this' + CRLF +
+                    'note was last edited. Some text may not have been saved.' + CRLF + CRLF +
+                    'Do you wish to continue and sign the note?';
+  TC_ABSAVE       = 'Possible Missing Text';
+  TX_NO_BOIL      = 'There is no boilerplate text associated with this title.';
+  TC_NO_BOIL      = 'Load Boilerplate Text';
+  TX_BLR_CLEAR    = 'Do you want to clear the previously loaded boilerplate text?';
+  TC_BLR_CLEAR    = 'Clear Previous Boilerplate Text';
+  TX_MISSING_FIELDS = 'This document can not be saved.  An ATTENDING must first be entered.';
+  TC_MISSING_FIELDS = 'Unable to save';
+  TX_DETACH_CNF     = 'Confirm Detachment';
+  TX_DETACH_FAILURE = 'Detach failed';
+  TX_RETRACT_CAP    = 'Retraction Notice';
+  TX_RETRACT        = 'This document will now be RETRACTED.  As Such, it has been removed' +CRLF +
+                      ' from public view, and from typical Releases of Information,' +CRLF +
+                      ' but will remain indefinitely discoverable to HIMS.' +CRLF +CRLF;
+  TX_AUTH_SIGNED    = 'Author has not signed, are you SURE you want to sign.' +CRLF;
+
+var
+  uPCEShow, uPCEEdit:  TPCEData;
+  ViewContext: Integer;
+  frmDrawers: TfrmDrawers;
+  uDCSummContext: TTIUContext;
+  ColumnToSort: Integer;
+  ColumnSortForward: Boolean;
+  uChanging: Boolean;
+  uIDNotesActive: Boolean;
+
+{ TPage common methods --------------------------------------------------------------------- }
+
+function TfrmDCSumm.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  dlgFindText.CloseDialog;
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  if Assigned(frmTemplateDialog) then
+    if Screen.ActiveForm = frmTemplateDialog then
+    //if (fsModal in frmTemplateDialog.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'A template in progress will be aborted.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmTemplateDialog.Silent := True;
+                 frmTemplateDialog.ModalResult := mrCancel;
+               end;
+           end;
+    end;
+  if EditingIndex <> -1 then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+    '1': begin
+             if memNewSumm.GetTextLen > 0 then
+               WhyNot := WhyNot + 'A discharge summary in progress will be saved as unsigned.  '
+             else
+               WhyNot := WhyNot + 'An empty discharge summary in progress will be deleted.  ';
+           Result := False;
+         end;
+    '0': begin
+           if WhyNot = 'COMMIT' then FSilent := True;
+           SaveCurrentSumm(Result);
+         end;
+  end;
+  if Assigned(frmEncounterFrame) then
+    if Screen.ActiveForm = frmEncounterFrame then
+    //if (fsModal in frmEncounterFrame.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := WhyNot + 'Encounter information being edited will not be saved';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmEncounterFrame.Abort := False;
+                 frmEncounterFrame.Cancel := True;
+               end;
+           end;
+    end;
+end;
+
+procedure TfrmDCSumm.LstSummsToPrint;
+var
+  AParentID: string;
+  SavedDocID: string;
+  Saved: boolean;
+begin
+  inherited;
+  if lstSumms.ItemIEN = 0 then exit;
+  SavedDocID := lstSumms.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+    LoadSumms;
+    with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if tvSumms.Selected = nil then exit;
+  AParentID := frmPrintList.SelectParentFromList(tvSumms,CT_DCSUMM);
+  if AParentID = '' then exit;
+  with tvSumms do Selected := FindPieceNode(AParentID, 1, U, Items.GetFirstNode);
+end;
+
+procedure TfrmDCSumm.ClearPtData;
+{ clear all controls that contain patient specific information }
+begin
+  inherited ClearPtData;
+  ClearEditControls;
+  uChanging := True;
+  tvSumms.Items.BeginUpdate;
+  KillDocTreeObjects(tvSumms);
+  tvSumms.Items.Clear;
+  tvSumms.Items.EndUpdate;
+  uChanging := False;
+  lstSumms.Clear;
+  memSumm.Clear;
+  memPCEShow.Clear;
+  uPCEShow.Clear;
+  uPCEEdit.Clear;
+  frmDrawers.ResetTemplates;
+end;
+
+procedure TfrmDCSumm.DisplayPage;
+{ causes page to be visible and conditionally executes initialization code }
+begin
+  inherited DisplayPage;
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+  frmFrame.mnuFilePrint.Tag := CT_DCSUMM;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  frmFrame.mnuFilePrintSelectedItems.Enabled := True;
+  if InitPage then
+  begin
+    EnableDisableIDNotes;
+    FDefaultContext := GetCurrentDCSummContext;
+    FCurrentContext := FDefaultContext;
+    popSummMemoSpell.Visible   := SpellCheckAvailable;
+    popSummMemoGrammar.Visible := popSummMemoSpell.Visible;
+    Z11.Visible                := popSummMemoSpell.Visible;
+    timAutoSave.Interval := User.AutoSave * 1000;  // convert seconds to milliseconds
+    SetEqualTabStops(memNewSumm);
+  end;
+  // to indent the right margin need to set Paragraph.RightIndent for each paragraph?
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+    begin
+      SetViewContext(FDefaultContext);
+    end;
+  case CallingContext of
+    CC_INIT_PATIENT: if not InitPatient then
+                       begin
+                         SetViewContext(FDefaultContext);
+                       end;
+  CC_NOTIFICATION: ProcessNotifications;
+  end;
+end;
+
+procedure TfrmDCSumm.RequestPrint;
+var
+  Saved: Boolean;
+begin
+  with lstSumms do
+  begin
+    if ItemIndex = EditingIndex then  
+    //if ItemIEN < 0 then
+    begin
+      SaveCurrentSumm(Saved);
+      if not Saved then Exit;
+    end;
+    if ItemIEN > 0 then PrintNote(ItemIEN, MakeDCSummDisplayText(Items[ItemIndex])) else
+    begin
+      if ItemIEN = 0 then InfoBox(TX_NO_NOTE, TX_NOSUMM_CAP, MB_OK);
+      if ItemIEN < 0 then InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+    end;
+  end;
+end;
+
+{for printing multiple notes}
+procedure TfrmDCSumm.RequestMultiplePrint(AForm: TfrmPrintList);
+var
+  NoteIEN: int64;
+  i: integer;
+begin
+  with AForm.lbIDParents do
+  for i := 0 to Items.Count - 1 do
+  if Selected[i] then
+  begin
+    NoteIEN := StrToInt64def(Piece(Items[i], U, 1), 0);
+    if NoteIEN > 0 then PrintNote(NoteIEN, DisplayText[i], TRUE)
+    else if NoteIEN = 0 then InfoBox(TX_NO_NOTE, TX_NOSUMM_CAP, MB_OK)
+    else InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+  end;
+end;
+
+procedure TfrmDCSumm.SetFontSize(NewFontSize: Integer);
+{ adjusts the font size of any controls that don't have ParentFont = True }
+begin
+  inherited SetFontSize(NewFontSize);
+  memSumm.Font.Size := NewFontSize;
+  memNewSumm.Font.Size := NewFontSize;
+  lblTitle.Font.Size := NewFontSize;
+  frmDrawers.Font.Size := NewFontSize;
+  SetEqualTabStops(memNewSumm);
+  // adjust heights of pnlAction, pnlFields, and lstEncntShow
+end;
+
+procedure TfrmDCSumm.mnuChartTabClick(Sender: TObject);
+{ reroute to Chart Tab menu of the parent form: frmFrame }
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+{ General procedures ----------------------------------------------------------------------- }
+
+procedure TfrmDCSumm.ClearEditControls;
+{ resets controls used for entering a new Discharge Summary }
+begin
+  // clear FEditDCSumm (should FEditDCSumm be an object with a clear method?)
+  with FEditDCSumm do
+  begin
+    DocType              := 0;
+    EditIEN              := 0;
+    Title                := 0;
+    TitleName            := '';
+    AdmitDateTime        := 0;
+    DischargeDateTime    := 0;
+    DictDateTime         := 0;
+    Dictator             := 0;
+    DictatorName         := '';
+    Cosigner             := 0;
+    CosignerName         := '';
+    Transcriptionist     := 0;
+    TranscriptionistName := '';
+    Attending            := 0;
+    AttendingName        := '';
+    Urgency              := '';
+    UrgencyName          := '';
+    Location             := 0;
+    LocationName         := '';
+    Addend               := 0;
+    VisitStr             := '';
+    {LastCosigner & LastCosignerName aren't cleared because they're used as default for next note.}
+    Lines                := nil;
+  end;
+  // clear the editing controls (also clear the new labels?)
+  memNewSumm.Clear;
+  timAutoSave.Enabled := False;
+  // clear the PCE object for editing
+  uPCEEdit.Clear;
+  // set the tracking variables to initial state
+  EditingIndex := -1;
+  FChanged := False;
+end;
+
+procedure TfrmDCSumm.ShowPCEControls(ShouldShow: Boolean);
+begin
+  sptVert.Visible    := ShouldShow;
+  memPCEShow.Visible := ShouldShow;
+  if(ShouldShow) then
+    sptVert.Top := memPCEShow.Top - sptVert.Height;
+  memSumm.Invalidate;
+end;
+
+procedure TfrmDCSumm.DisplayPCE;
+{ displays PCE information if appropriate & enables/disabled editing of PCE data }
+var
+  VitalStr:   TStringlist;
+  NoPCE:      boolean;
+  ActionSts: TActionRec;
+
+begin
+  memPCEShow.Clear;
+  with lstSumms do if ItemIndex = EditingIndex then
+  begin
+    with uPCEEdit do
+    begin
+      AddStrData(memPCEShow.Lines);
+      NoPCE := (memPCEShow.Lines.Count = 0);
+      VitalStr  := TStringList.create;
+      try
+        GetVitalsFromDate(VitalStr, uPCEEdit);
+        AddVitalData(VitalStr, memPCEShow.Lines);
+      finally
+        VitalStr.free;
+      end;
+      cmdPCE.Enabled := CanEditPCE(uPCEEdit);
+      ShowPCEControls(cmdPCE.Enabled or (memPCEShow.Lines.Count > 0));
+      if(NoPCE and memPCEShow.Visible) then
+        memPCEShow.Lines.Insert(0, TX_NOPCE);
+
+      frmDrawers.DisplayDrawers(TRUE, [odTemplates],[odTemplates]);
+      cmdNewSumm.Visible := FALSE;
+      lblSpace1.Top := cmdPCE.Top - lblSpace1.Height;
+    end;
+  end else
+  begin
+    cmdPCE.Enabled := False;
+
+    frmDrawers.DisplayDrawers(FALSE);
+    cmdNewSumm.Visible := TRUE;
+    lblSpace1.Top := cmdNewSumm.Top - lblSpace1.Height;
+
+    ActOnDocument(ActionSts, lstSumms.ItemIEN, 'VIEW');
+    if ActionSts.Success then
+    begin
+      StatusText('Retrieving encounter information...');
+      with uPCEShow do
+      begin
+        NoteDateTime := MakeFMDateTime(Piece(lstSumms.Items[lstSumms.ItemIndex], U, 3));
+        PCEForNote(lstSumms.ItemIEN, uPCEEdit);
+        AddStrData(memPCEShow.Lines);
+        NoPCE := (memPCEShow.Lines.Count = 0);
+        VitalStr  := TStringList.create;
+        try
+          GetVitalsFromNote(VitalStr, uPCEShow, lstSumms.ItemIEN);
+          AddVitalData(VitalStr, memPCEShow.Lines);
+        finally
+          VitalStr.free;
+        end;
+        ShowPCEControls(memPCEShow.Lines.Count > 0);
+        if(NoPCE and memPCEShow.Visible) then
+          memPCEShow.Lines.Insert(0, TX_NOPCE);
+      end;
+      StatusText('');
+    end
+    else
+      ShowPCEControls(FALSE);
+  end; {if ItemIndex}
+  memPCEShow.SelStart := 0;
+  popSummMemoEncounter.Enabled := cmdPCE.Enabled;
+end;
+
+procedure TfrmDCSumm.InsertNewSumm(IsIDChild: boolean; AnIDParent: integer);
+{ creates the editing context for a new Discharge Summary & inserts stub into top of view list}
+const
+  USE_CURRENT_VISITSTR = -2;
+var
+  EnableAutosave, HaveRequired, Saved: Boolean;
+  CreatedSumm: TCreatedDoc;
+  ListItemForEdit: string;
+  TmpBoilerPlate: TStringList;
+  tmpNode: TTreeNode;
+  x, WhyNot: string;
+  DocInfo: string;
+begin
+  EnableAutosave := FALSE;
+  TmpBoilerPlate := nil;
+  try
+    ClearEditControls;
+    FShowAdmissions := True;
+    FillChar(FEditDCSumm, SizeOf(FEditDCSumm), 0);  //v15.7
+    with FEditDCSumm do
+    begin
+      EditIEN               := 0;
+      DocType               := TYP_DC_SUMM;
+      Title                 := DfltDCSummTitle;
+      TitleName             := DfltDCSummTitleName;
+      if IsIDChild and (not CanTitleBeIDChild(Title, WhyNot)) then
+        begin
+          Title := 0;
+          TitleName := '';
+        end;
+      DictDateTime          := FMNow;
+      Dictator              := User.DUZ;
+      DictatorName          := User.Name;
+      if IsIDChild then
+        IDParent            := AnIDParent
+      else
+        IDParent   := 0;
+    end;
+    // check to see if interaction necessary to get required fields
+    if LacksRequiredForCreate or VerifySummTitle
+      then HaveRequired := ExecuteDCSummProperties(FEditDCSumm, ListItemForEdit, FShowAdmissions, IsIDChild)
+      else HaveRequired := True;
+    if HaveRequired then
+    begin
+      if ListItemForEdit <> '' then
+        begin
+          lstSumms.ItemIndex := -1;
+          lstSumms.SelectByID(Piece(ListItemForEdit, U, 1));
+          if lstSumms.ItemIndex < 0 then
+            begin
+              lstSumms.Items.Insert(0, ListItemForEdit);
+              lstSumms.ItemIndex := 0;
+            end;
+          if lstSumms.ItemIndex = EditingIndex then Exit;
+          if EditingIndex > -1 then
+            begin
+              if InfoBox(TX_NEW_SAVE1 + MakeDCSummDisplayText(lstSumms.Items[EditingIndex]) + TX_NEW_SAVE2,
+                         TC_NEW_SAVE2, MB_YESNO) = IDNO then exit
+              else
+                begin
+                  SaveCurrentSumm(Saved);
+                  if not Saved then exit;
+                end;
+            end;
+          //if not StartNewEdit then Exit;
+          lstSummsClick(Self);
+          LoadForEdit(True);
+          Exit;
+        end
+      else
+        begin
+          // set up uPCEEdit for entry of new note
+          uPCEEdit.UseEncounter := True;
+          uPCEEdit.NoteDateTime := FEditDCSumm.DischargeDateTime;
+          uPCEEdit.PCEForNote(USE_CURRENT_VISITSTR, uPCEShow);
+          FEditDCSumm.NeedCPT  := uPCEEdit.CPTRequired;
+           // create the note
+          PutNewDCSumm(CreatedSumm, FEditDCSumm);
+          uPCEEdit.NoteIEN := CreatedSumm.IEN;
+          if CreatedSumm.IEN > 0 then LockDocument(CreatedSumm.IEN, CreatedSumm.ErrorText);
+          if CreatedSumm.ErrorText = '' then
+          begin
+            //x := $$RESOLVE^TIUSRVLO formatted string
+            //7348^Discharge Summary^3000913^NERD, YOURA  (N0165)^1329;Rich Vertigan;VERTIGAN,RICH^8E REHAB MED^unverified^Adm: 11/05/98;2981105.095547^        ;^^0^^^2
+            with FEditDCSumm do
+              begin
+                x := IntToStr(CreatedSumm.IEN) + U + TitleName + U + FloatToStr(DischargeDateTime) + U +
+                     Patient.Name + U + IntToStr(Dictator) + ';' + DictatorName + U + LocationName + U + 'new' + U +
+                     'Adm: ' + FormatFMDateTime('mmm dd,yyyy', AdmitDateTime) + ';' + FloatToStr(AdmitDateTime) + U +
+                     'Dis: ' + FormatFMDateTime('mmm dd,yyyy', DischargeDateTime) + ';' + FloatToStr(DischargeDateTime) +
+                     U + U + U + U + U + U;
+              end;
+            lstSumms.Items.Insert(0, x);
+            uChanging := True;
+            tvSumms.Items.BeginUpdate;
+            if IsIDChild then
+              begin
+                tmpNode := tvSumms.FindPieceNode(IntToStr(AnIDParent), 1, U, tvSumms.Items.GetFirstNode);
+                tmpNode.ImageIndex := IMG_IDNOTE_OPEN;
+                tmpNode.SelectedIndex := IMG_IDNOTE_OPEN;
+                tmpNode := tvSumms.Items.AddChildObjectFirst(tmpNode, MakeDCSummDisplayText(x), MakeDCSummTreeObject(x));
+                tmpNode.ImageIndex := IMG_ID_CHILD;
+                tmpNode.SelectedIndex := IMG_ID_CHILD;
+              end
+            else
+              begin
+                tmpNode := tvSumms.Items.AddObjectFirst(tvSumms.Items.GetFirstNode, 'New Summary in Progress',
+                                                        MakeDCSummTreeObject('NEW^New Summary in Progress^^^^^^^^^^^%^0'));
+                TORTreeNode(tmpNode).StringData := 'NEW^New Summary in Progress^^^^^^^^^^^%^0';
+                tmpNode.ImageIndex := IMG_TOP_LEVEL;
+                tmpNode := tvSumms.Items.AddChildObjectFirst(tmpNode, MakeDCSummDisplayText(x), MakeDCSummTreeObject(x));
+                tmpNode.ImageIndex := IMG_SINGLE;
+                tmpNode.SelectedIndex := IMG_SINGLE;
+              end;
+            TORTreeNode(tmpNode).StringData := x;
+            tvSumms.Selected := tmpNode;
+            tvSumms.Items.EndUpdate;
+            uChanging := False;
+            Changes.Add(CH_SUM, IntToStr(CreatedSumm.IEN), GetTitleText(0), '', CH_SIGN_YES);
+            lstSumms.ItemIndex := 0;
+            EditingIndex := 0;
+            if not assigned(TmpBoilerPlate) then
+              TmpBoilerPlate := TStringList.Create;
+            LoadBoilerPlate(TmpBoilerPlate, FEditDCSumm.Title);
+            FChanged := False;
+            cmdChangeClick(Self); // will set captions, sign state for Changes
+            lstSummsClick(Self);  // will make pnlWrite visible
+            if timAutoSave.Interval <> 0 then EnableAutosave := TRUE;
+            memNewSumm.SetFocus;
+          end else
+          begin
+            InfoBox(CreatedSumm.ErrorText, TX_CREATE_ERR, MB_OK);
+            HaveRequired := False;
+          end; {if CreatedSumm.IEN}
+        end; {loaded for edit}
+    end; {if HaveRequired}
+    if not HaveRequired then ClearEditControls;
+  finally
+    if assigned(TmpBoilerPlate) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(CreatedSumm.IEN), FEditDCSumm);
+      ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditDCSumm.Title, ltTitle, Self, 'Title: ' + FEditDCSumm.TitleName, DocInfo);
+      QuickCopyWith508Msg(TmpBoilerPlate, memNewSumm);
+      TmpBoilerPlate.Free;
+    end;
+    if EnableAutosave then // Don't enable autosave until after dialog fields have been resolved
+      timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmDCSumm.InsertAddendum;
+{ sets up fields of pnlWrite to write an addendum for the selected Summary}
+const
+  AS_ADDENDUM = True;
+  IS_ID_CHILD = False;
+var
+  HaveRequired: Boolean;
+  CreatedSumm: TCreatedDoc;
+  ListItemForEdit: string;
+  tmpNode: TTreeNode;
+  x: string;
+begin
+  ClearEditControls;
+  FShowAdmissions := False;
+  with FEditDCSumm do
+  begin
+    DocType          := TYP_ADDENDUM;
+    Title            := TitleForNote(lstSumms.ItemIEN);
+    TitleName        := Piece(lstSumms.Items[lstSumms.ItemIndex], U, 2);
+    if Copy(TitleName,1,1) = '+' then TitleName := Copy(TitleName, 3, 199);
+    DictDateTime     := FMNow;
+    Dictator         := User.DUZ;
+    DictatorName     := User.Name;
+    Addend           := lstSumms.ItemIEN;
+  end;
+  // check to see if interaction necessary to get required fields
+  if LacksRequiredForCreate
+    then HaveRequired := ExecuteDCSummProperties(FEditDCSumm, ListItemForEdit, FShowAdmissions, IS_ID_CHILD)
+    else HaveRequired := True;
+  if HaveRequired then
+  begin
+    with FEditDCSumm do
+      begin
+        uPCEEdit.NoteDateTime := DischargeDateTime;
+        uPCEEdit.PCEForNote(Addend, uPCEShow);
+        Location     := uPCEEdit.Location;
+        LocationName := ExternalName(uPCEEdit.Location, 44);
+        AdmitDateTime    := uPCEEdit.DateTime;
+        DischargeDateTime := StrToFMDateTime(GetDischargeDate(Patient.DFN, FloatToStr(AdmitDateTime)));
+        if DischargeDateTime <= 0 then DischargeDateTime := FMNow;
+      end;
+    PutDCAddendum(CreatedSumm, FEditDCSumm, FEditDCSumm.Addend);
+    uPCEEdit.NoteIEN := CreatedSumm.IEN;
+    if CreatedSumm.IEN > 0 then LockDocument(CreatedSumm.IEN, CreatedSumm.ErrorText);
+    if CreatedSumm.ErrorText = '' then
+    begin
+      with FEditDCSumm do
+        begin
+          x := IntToStr(CreatedSumm.IEN) + U + 'Addendum to ' + TitleName + U + FloatToStr(DischargeDateTime) + U +
+               Patient.Name + U + IntToStr(Dictator) + ';' + DictatorName + U + LocationName + U + 'new' + U +
+               'Adm: ' + FormatFMDateTime('mmm dd,yyyy', AdmitDateTime) + ';' + FloatToStr(AdmitDateTime) + U +
+               'Dis: ' + FormatFMDateTime('mmm dd,yyyy', DischargeDateTime) + ';' + FloatToStr(DischargeDateTime) +
+               U + U + U + U + U + U;
+        end;
+      lstSumms.Items.Insert(0, x);
+      uChanging := True;
+      tvSumms.Items.BeginUpdate;
+      tmpNode := tvSumms.Items.AddObjectFirst(tvSumms.Items.GetFirstNode, 'New Addendum in Progress',
+                                              MakeDCSummTreeObject('ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_TOP_LEVEL;
+      tmpNode := tvSumms.Items.AddChildObjectFirst(tmpNode, MakeDCSummDisplayText(x), MakeDCSummTreeObject(x));
+      TORTreeNode(tmpNode).StringData := x;
+      tmpNode.ImageIndex := IMG_ADDENDUM;
+      tmpNode.SelectedIndex := IMG_ADDENDUM;
+      tvSumms.Selected := tmpNode;
+      tvSumms.Items.EndUpdate;
+      uChanging := False;
+      Changes.Add(CH_SUM, IntToStr(CreatedSumm.IEN), GetTitleText(0), '', CH_SIGN_YES);
+      lstSumms.ItemIndex := 0;
+      EditingIndex := 0;
+      cmdChangeClick(Self); // will set captions, sign state for Changes
+      lstSummsClick(Self);  // will make pnlWrite visible
+      if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+      memNewSumm.SetFocus;
+    end else
+    begin
+      InfoBox(CreatedSumm.ErrorText, TX_CREATE_ERR, MB_OK);
+      HaveRequired := False;
+    end; {if CreatedNote.IEN}
+  end; {if HaveRequired}
+  if not HaveRequired then ClearEditControls;
+end;
+
+procedure TfrmDCSumm.LoadForEdit(PreserveValues: Boolean);
+{ retrieves an existing Summ and places the data in the fields of pnlWrite }
+var
+  tmpNode: TTreeNode;
+  x: string;
+begin
+  if not PreserveValues then ClearEditControls;
+  if not LockSumm(lstSumms.ItemIEN) then Exit;
+  EditingIndex := lstSumms.ItemIndex;
+  Changes.Add(CH_SUM, lstSumms.ItemID, GetTitleText(EditingIndex), '', CH_SIGN_YES);
+  if not PreserveValues then GetDCSummForEdit(FEditDCSumm, lstSumms.ItemIEN);
+  if FEditDCSumm.Lines <> nil then memNewSumm.Lines.Assign(FEditDCSumm.Lines);
+  FChanged := False;
+  if FEditDCSumm.Title = TYP_ADDENDUM then
+  begin
+    FEditDCSumm.DocType := TYP_ADDENDUM;
+    FEditDCSumm.TitleName := Piece(lstSumms.Items[lstSumms.ItemIndex], U, 2);
+    if Copy(FEditDCSumm.TitleName,1,1) = '+' then FEditDCSumm.TitleName := Copy(FEditDCSumm.TitleName, 3, 199);
+    if CompareText(Copy(FEditDCSumm.TitleName, 1, 8), 'Addendum') <> 0
+      then FEditDCSumm.TitleName := FEditDCSumm.TitleName + 'Addendum to ';
+  end;
+
+  uChanging := True;
+  tvSumms.Items.BeginUpdate;
+  tmpNode := tvSumms.FindPieceNode('EDIT', 1, U, nil);
+  if tmpNode = nil then
+    begin
+      tmpNode := tvSumms.Items.AddObjectFirst(tvSumms.Items.GetFirstNode, 'Summary being edited',
+                                              MakeDCSummTreeObject('EDIT^Summary being edited^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'EDIT^Summary being edited^^^^^^^^^^^%^0';
+    end
+  else
+    tmpNode.DeleteChildren;
+  x := lstSumms.Items[lstSumms.ItemIndex];
+  tmpNode.ImageIndex := IMG_TOP_LEVEL;
+  tmpNode := tvSumms.Items.AddChildObjectFirst(tmpNode, MakeDCSummDisplayText(x), MakeDCSummTreeObject(x));
+  TORTreeNode(tmpNode).StringData := x;
+  if CompareText(Copy(FEditDCSumm.TitleName, 1, 8), 'Addendum') <> 0 then
+    tmpNode.ImageIndex := IMG_SINGLE
+  else
+    tmpNode.ImageIndex := IMG_ADDENDUM;
+  tmpNode.SelectedIndex := tmpNode.ImageIndex;
+  tvSumms.Selected := tmpNode;
+  tvSumms.Items.EndUpdate;
+  uChanging := False;
+
+  uPCEEdit.NoteDateTime := MakeFMDateTime(Piece(lstSumms.Items[lstSumms.ItemIndex], U, 3));
+  uPCEEdit.PCEForNote(lstSumms.ItemIEN, uPCEShow);
+  FEditDCSumm.NeedCPT := uPCEEdit.CPTRequired;
+  cmdChangeClick(Self); // will set captions, sign state for Changes
+  lstSummsClick(Self);  // will make pnlWrite visible
+  if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+  memNewSumm.SetFocus;
+end;
+
+function TfrmDCSumm.TitleText(AnIndex: Integer): string;
+{ returns non-tabbed text for the title of a Summ given the ItemIndex in lstSumms }
+begin
+  with lstSumms do
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(Items[AnIndex], U, 3))) +
+              ' ' + Piece(Items[AnIndex], U, 2);
+end;
+
+procedure TfrmDCSumm.SaveEditedSumm(var Saved: Boolean);
+{ validates fields and sends the updated Summ to the server }
+var
+  UpdatedSumm: TCreatedDoc;
+  x: string;
+begin
+  Saved := False;
+  if (memNewSumm.GetTextLen = 0) or (not ContainsVisibleChar(memNewSumm.Text)) then
+  begin
+    lstSumms.ItemIndex := EditingIndex;
+    x := lstSumms.ItemID;
+    uChanging := True;
+    tvSumms.Selected := tvSumms.FindPieceNode(x, 1, U, tvSumms.Items.GetFirstNode);
+    uChanging := False;
+    tvSummsChange(Self, tvSumms.Selected);
+    if FSilent or
+       ((not FSilent) and
+      (InfoBox(GetTitleText(EditingIndex) + TX_EMPTY_SUMM, TC_EMPTY_SUMM, MB_YESNO) = IDYES))
+    then
+    begin
+      FConfirmed := True;
+      mnuActDeleteClick(Self);
+      Saved := True;
+      FDeleted := True;
+    end
+    else
+      FConfirmed := False;
+    Exit;
+  end;
+  //ExpandTabsFilter(memNewSumm.Lines, TAB_STOP_CHARS);
+  with FEditDCSumm do
+    begin
+      if (Attending = 0) and (not FSilent) then
+        begin
+          InfoBox(TX_MISSING_FIELDS, TC_MISSING_FIELDS,MB_OK);
+          cmdChangeClick(mnuActSave);
+          Exit;
+        end;
+      NeedCPT            := uPCEEdit.CPTRequired;     {*RAB*}
+      Lines              := memNewSumm.Lines;
+      if RequireMASVerification(lstSumms.GetIEN(EditingIndex), TYP_DC_SUMM) then
+         Status := TIU_ST_UNVER;
+      (*if (User.DUZ <> Dictator) and (User.DUZ <> Attending) and*)   //ALL USERS??
+      if RequireRelease(lstSumms.GetIEN(EditingIndex), TYP_DC_SUMM) then
+        begin
+          if not FSilent then
+            begin
+              if InfoBox(TX_RELEASE, TC_RELEASE, MB_YESNO) = IDNO then
+                Status := TIU_ST_UNREL;
+            end
+          else          // always save as unreleased on timeout
+            Status := TIU_ST_UNREL;
+        end;
+    end;
+  timAutoSave.Enabled := False;
+  try
+    PutEditedDCSumm(UpdatedSumm, FEditDCSumm, lstSumms.GetIEN(EditingIndex));
+  finally
+    timAutoSave.Enabled := True;
+  end;
+  if UpdatedSumm.IEN > 0 then
+  begin
+    if (FEditDCSumm.Status in [TIU_ST_UNREL, TIU_ST_UNVER]) then
+      begin
+        Changes.Remove(CH_SUM, IntToStr(UpdatedSumm.IEN)); // DON'T REPROMPT ON PATIENT CHANGE
+        UnlockDocument(UpdatedSumm.IEN);                   // Unlock only if UNRELEASED or UNVERIFIED
+      end;
+    // otherwise, there's no unlocking here since the note is still in Changes after a save
+    if lstSumms.ItemIndex = EditingIndex then
+    begin
+      EditingIndex := -1;
+      lstSummsClick(Self);
+    end;
+    EditingIndex := -1; // make sure EditingIndex reset even if not viewing edited note
+    Saved := True;
+    FChanged := False;
+  end else
+  begin
+    if not FSilent then
+      InfoBox(TX_SAVE_ERROR1 + UpdatedSumm.ErrorText + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  end;
+end;
+
+procedure TfrmDCSumm.SaveCurrentSumm(var Saved: Boolean);
+{ called whenever a Summ should be saved - uses IEN to call appropriate save logic }
+begin
+  if EditingIndex < 0 then Exit;
+  SaveEditedSumm(Saved);
+end;
+
+{ Form events ------------------------------------------------------------------------------ }
+
+procedure TfrmDCSumm.pnlRightResize(Sender: TObject);
+{ memSumm (TRichEdit) doesn't repaint appropriately unless its parent panel is refreshed }
+begin
+  inherited;
+  pnlRight.Refresh;
+  memSumm.Repaint;
+end;
+
+procedure TfrmDCSumm.pnlWriteResize(Sender: TObject);
+const
+  LEFT_MARGIN = 4;
+begin
+  inherited;
+  LimitEditWidth(memNewSumm, MAX_ENTRY_WIDTH - 1);
+  memNewSumm.Constraints.MinWidth := TextWidthByFont(memNewSumm.Font.Handle, StringOfChar('X', MAX_ENTRY_WIDTH)) + (LEFT_MARGIN * 2) + ScrollBarWidth;
+  pnlLeft.Width := self.ClientWidth - pnlWrite.Width - sptHorz.Width;
+end;
+
+{ Left panel (selector) events ------------------------------------------------------------- }
+
+procedure TfrmDCSumm.lstSummsClick(Sender: TObject);
+{ loads the text for the selected Summ or displays the editing panel for the selected Summ }
+var
+  x: string;
+begin
+  inherited;
+  with lstSumms do if ItemIndex = -1 then Exit
+  else if ItemIndex = EditingIndex then
+  begin
+    pnlWrite.Visible := True;
+    pnlRead.Visible := False;
+    mnuViewDetail.Enabled := False;
+    mnuActChange.Enabled     := True;
+    mnuActLoadBoiler.Enabled := True;
+  end else
+  begin
+    StatusText('Retrieving selected Discharge Summary...');
+    Screen.Cursor := crHourGlass;
+    pnlRead.Visible := True;
+    pnlWrite.Visible := False;
+    lblTitle.Caption := MakeDCSummDisplayText(Items[ItemIndex]);
+    lvSumms.Caption := lblTitle.Caption;
+    lblTitle.Hint := lblTitle.Caption;
+    //lblTitle.Caption := Piece(DisplayText[ItemIndex], #9, 1) + '  ' + Piece(DisplayText[ItemIndex], #9, 2);
+    LoadDocumentText(memSumm.Lines, ItemIEN);
+    memSumm.SelStart := 0;
+    mnuViewDetail.Enabled := True;
+    mnuViewDetail.Checked    := False;
+    mnuActChange.Enabled     := False;
+    mnuActLoadBoiler.Enabled := False;
+    Screen.Cursor := crDefault;
+    StatusText('');
+  end;
+  DisplayPCE;
+  pnlRight.Refresh;
+  memNewSumm.Repaint;
+  memSumm.Repaint;
+  x := 'TIU^' + lstSumms.ItemID;
+  SetPiece(x, U, 10, Piece(lstSumms.Items[lstSumms.ItemIndex], U, 11));
+  NotifyOtherApps(NAE_REPORT, x);
+end;
+
+procedure TfrmDCSumm.cmdNewSummClick(Sender: TObject);
+{ maps 'New Summ' button to the New Discharge Summary menu item }
+begin
+  inherited;
+  mnuActNewClick(Self);
+end;
+
+procedure TfrmDCSumm.cmdPCEClick(Sender: TObject);
+begin
+  inherited;
+  cmdPCE.Enabled := False;
+  UpdatePCE(uPCEEdit);
+  cmdPCE.Enabled := True;
+  if frmFrame.Closing then exit;
+  DisplayPCE;
+end;
+
+procedure TfrmDCSumm.cmdOrdersClick(Sender: TObject);
+begin
+  inherited;
+  { call add orders here }
+end;
+
+{ Right panel (editor) events -------------------------------------------------------------- }
+
+procedure TfrmDCSumm.memNewSummChange(Sender: TObject);
+{ sets FChanged to record that the Summ has really been edited }
+begin
+  inherited;
+  FChanged := True;
+end;
+
+{ View menu events ------------------------------------------------------------------------- }
+
+procedure TfrmDCSumm.mnuViewClick(Sender: TObject);
+{ changes the list of Summs available for viewing }
+var
+  AuthCtxt: TAuthorContext;
+  DateRange: TNoteDateRange;
+  Saved: Boolean;
+begin
+  inherited;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+  end;
+  FLastSummID := lstSumms.ItemID;
+  StatusText('Retrieving Discharge Summary list...');
+  mnuViewDetail.Checked := False;
+  if Sender is TMenuItem then ViewContext := TMenuItem(Sender).Tag
+    else if FCurrentContext.Status <> '' then ViewContext := NC_CUSTOM
+    else ViewContext := NC_RECENT;
+  case ViewContext of
+  NC_RECENT:     begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblSumms.Caption := 'Last ' + IntToStr(ReturnMaxDCSumms) + ' Summaries';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   FCurrentContext.MaxDocs := ReturnMaxDCSumms;
+                   LoadSumms;
+                 end;
+  NC_ALL:        begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblSumms.Caption := 'All Signed Summaries';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   LoadSumms;
+                 end;
+  NC_UNSIGNED:   begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblSumms.Caption := 'Unsigned Summaries';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   LoadSumms;
+                 end;
+  NC_UNCOSIGNED: begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblSumms.Caption := 'Uncosigned Summaries';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   LoadSumms;
+                 end;
+  NC_BY_AUTHOR:  begin
+                   SelectAuthor(Font.Size, FCurrentContext, AuthCtxt);
+                   with AuthCtxt do if Changed then
+                   begin
+                     FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                     lblSumms.Caption := AuthorName + ': Signed Summaries';
+                     FCurrentContext.Status := IntToStr(NC_BY_AUTHOR);
+                     FCurrentContext.Author := Author;
+                     FCurrentContext.TreeAscending := Ascending;
+                     LoadSumms;
+                   end;
+                 end;
+  NC_BY_DATE:    begin
+                   SelectNoteDateRange(Font.Size, FCurrentContext, DateRange);
+                   with DateRange do if Changed then
+                   begin
+                     FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                     lblSumms.Caption := FormatFMDateTime('mmm dd,yy', FMBeginDate) + ' to ' +
+                                         FormatFMDateTime('mmm dd,yy', FMEndDate) + ': Signed Summaries';
+                     FCurrentContext.BeginDate     := BeginDate;
+                     FCurrentContext.EndDate       := EndDate;
+                     FCurrentContext.FMBeginDate   := FMBeginDate;
+                     FCurrentContext.FMEndDate     := FMEndDate;
+                     FCurrentContext.TreeAscending := Ascending;
+                     FCurrentContext.Status := IntToStr(NC_BY_DATE);
+                     LoadSumms;
+                   end;
+                 end;
+  NC_CUSTOM:     begin
+                   if Sender is TMenuItem then
+                     begin
+                       SelectTIUView(Font.Size, True, FCurrentContext, uDCSummContext);
+                       //lblSumms.Caption := 'Custom List';
+                     end;
+                   with uDCSummContext do if Changed then
+                   begin
+                     //if not (Sender is TMenuItem) then lblSumms.Caption := 'Default List';
+                     //if MaxDocs = 0 then MaxDocs := ReturnMaxNotes;
+                     FCurrentContext.BeginDate     := BeginDate;
+                     FCurrentContext.EndDate       := EndDate;
+                     FCurrentContext.FMBeginDate   := FMBeginDate;
+                     FCurrentContext.FMEndDate     := FMEndDate;
+                     FCurrentContext.Status        := Status;
+                     FCurrentContext.Author        := Author;
+                     FCurrentContext.MaxDocs       := MaxDocs;
+                     FCurrentContext.ShowSubject   := ShowSubject;
+                     // NEW PREFERENCES:
+                     FCurrentContext.SortBy        := SortBy;
+                     FCurrentContext.ListAscending := ListAscending;
+                     FCurrentContext.GroupBy       := GroupBy;
+                     FCurrentContext.TreeAscending := TreeAscending;
+                     FCurrentContext.SearchField   := SearchField;
+                     FCurrentContext.Keyword       := Keyword;
+                     FCurrentContext.Filtered      := Filtered;
+                     LoadSumms;
+                   end;
+                 end;
+  end; {case}
+  lblSumms.Caption := SetSummTreeLabel(FCurrentContext);
+  lblSumms.hint := lblSumms.Caption;
+  tvSumms.Caption := lblSumms.Caption;
+  StatusText('');
+end;
+
+{ Action menu events ----------------------------------------------------------------------- }
+
+function TfrmDCSumm.StartNewEdit(NewNoteType: integer): Boolean;
+{ if currently editing a note, returns TRUE if the user wants to start a new one }
+var
+  Saved: Boolean;
+  Msg, CapMsg: string;
+begin
+  Result := True;
+  if EditingIndex > -1 then
+  begin
+    case NewNoteType of
+      DC_ACT_ADDENDUM:  begin
+                          Msg := TX_NEW_SAVE1 + MakeDCSummDisplayText(lstSumms.Items[EditingIndex]) + TX_NEW_SAVE3;
+                          CapMsg := TC_NEW_SAVE3;
+                        end;
+      DC_ACT_EDIT_SUMM: begin
+                          Msg := TX_NEW_SAVE1 + MakeDCSummDisplayText(lstSumms.Items[EditingIndex]) + TX_NEW_SAVE4;
+                          CapMsg := TC_NEW_SAVE4;
+                        end;
+      DC_ACT_ID_ENTRY:  begin
+                          Msg := TX_NEW_SAVE1 + MakeDCSummDisplayText(lstSumms.Items[EditingIndex]) + TX_NEW_SAVE5;
+                          CapMsg := TC_NEW_SAVE5;
+                        end;
+    else
+      begin
+        Msg := TX_NEW_SAVE1 + MakeDCSummDisplayText(lstSumms.Items[EditingIndex]) + TX_NEW_SAVE2;
+        CapMsg := TC_NEW_SAVE2;
+      end;
+    end;
+
+    if InfoBox(Msg, CapMsg, MB_YESNO) = IDNO then Result := False
+    else
+      begin
+        SaveCurrentSumm(Saved);
+        if not Saved then Result := False else LoadSumms;
+      end;
+  end;
+end;
+
+procedure TfrmDCSumm.mnuActNewClick(Sender: TObject);
+const
+  IS_ID_CHILD = False;
+{ switches to current new Summ or creates a new Summ if none is being edited already }
+begin
+  inherited;
+  if not StartNewEdit(DC_ACT_NEW_SUMM) then Exit;
+  //LoadSumms;
+  // a visit (time & location) need not be available before creating the summary,
+  // since an admission will be prompted for to link the summary to.  (REV - v14d)
+(*  if Encounter.NeedVisit then
+  begin
+    UpdateVisit(Font.Size);
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.NeedVisit then
+  begin
+    InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;*)
+
+  InsertNewSumm(IS_ID_CHILD, 0);
+end;
+
+procedure TfrmDCSumm.mnuActAddIDEntryClick(Sender: TObject);
+const
+  IS_ID_CHILD = True;
+var
+  AnIDParent: integer;
+{ switches to current new note or creates a new note if none is being edited already }
+begin
+  inherited;
+  AnIDParent := lstSumms.ItemIEN;
+  if not StartNewEdit(DC_ACT_ID_ENTRY) then Exit;
+  //LoadSumms;
+  with tvSumms do Selected := FindPieceNode(IntToStr(AnIDParent), U, Items.GetFirstNode);
+  // make sure a visit (time & location) is available before creating the note
+  if Encounter.NeedVisit then
+  begin
+    UpdateVisit(Font.Size, DfltTIULocation);
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.NeedVisit then
+  begin
+    InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  InsertNewSumm(IS_ID_CHILD, AnIDParent);
+end;
+
+procedure TfrmDCSumm.mnuActAddendClick(Sender: TObject);
+{ make an addendum to an existing Summ }
+var
+  ActionSts: TActionRec;
+  ASummID: string;
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  ASummID := lstSumms.ItemID;
+  if not StartNewEdit(DC_ACT_ADDENDUM) then Exit;
+  //LoadSumms;
+  with tvSumms do Selected := FindPieceNode(ASummID, 1, U, Items.GetFirstNode);
+  if lstSumms.ItemIndex = EditingIndex then
+  begin
+    InfoBox(TX_ADDEND_NO, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  ActOnDCDocument(ActionSts, lstSumms.ItemIEN, 'MAKE ADDENDUM');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  with lstSumms do if TitleForNote(ItemIEN) = TYP_ADDENDUM then    //v17.5  RV
+  //with lstSumms do if Copy(Piece(Items[ItemIndex], U, 2), 1, 8) = 'Addendum' then
+  begin
+    InfoBox(TX_ADDEND_AD, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  FEditDCSumm.DischargeDateTime := FMNow;
+  InsertAddendum;
+end;
+
+procedure TfrmDCSumm.mnuActDetachFromIDParentClick(Sender: TObject);
+var
+  DocID, WhyNot: string;
+  Saved: boolean;
+  SavedDocID: string;
+begin
+  if lstSumms.ItemIEN = 0 then exit;
+  SavedDocID := lstSumms.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+    LoadSumms;
+    with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if not CanBeAttached(PDocTreeObject(tvSumms.Selected.Data)^.DocID, WhyNot) then
+    begin
+      WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+      WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+      InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+      Exit;
+    end;
+  if (InfoBox('DETACH:   ' + tvSumms.Selected.Text + CRLF +  CRLF +
+              '  FROM:   ' + tvSumms.Selected.Parent.Text + CRLF + CRLF +
+              'Are you sure?', TX_DETACH_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES)
+      then Exit;
+  DocID := PDocTreeObject(tvSumms.Selected.Data)^.DocID;
+  SavedDocID := PDocTreeObject(tvSumms.Selected.Parent.Data)^.DocID;
+  if DetachEntryFromParent(DocID, WhyNot) then
+    begin
+      LoadSumms;
+      with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+      if tvSumms.Selected <> nil then tvSumms.Selected.Expand(False);
+    end
+  else
+    begin
+      WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+      WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+      InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+    end;
+end;
+
+
+procedure TfrmDCSumm.mnuActSignListClick(Sender: TObject);
+{ add the Summ to the Encounter object, see mnuActSignClick - copied}
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  ActionType, SignTitle: string;
+  ActionSts: TActionRec;
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  if lstSumms.ItemIndex = EditingIndex then Exit;  // already in signature list
+  if not NoteHasText(lstSumms.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_SUMM1, TC_EMPTY_SUMM, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstSumms.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstSumms.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  ActOnDCDocument(ActionSts, lstSumms.ItemIEN, ActionType);
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LockSumm(lstSumms.ItemIEN);
+  with lstSumms do Changes.Add(CH_SUM, ItemID, TitleText(ItemIndex), '', CH_SIGN_YES);
+end;
+
+procedure TfrmDCSumm.RemovePCEFromChanges(IEN: Int64; AVisitStr: string = '');
+begin
+  if IEN = DC_ADDENDUM then Exit;  // no PCE information entered for an addendum
+  // do we need to call DeletePCE(AVisitStr), as was done with NT_NEW_NOTE (ien=-10)???
+  if AVisitStr = '' then AVisitStr := VisitStrForNote(IEN);
+  Changes.Remove(CH_PCE, 'V' + AVisitStr);
+  Changes.Remove(CH_PCE, 'P' + AVisitStr);
+  Changes.Remove(CH_PCE, 'D' + AVisitStr);
+  Changes.Remove(CH_PCE, 'I' + AVisitStr);
+  Changes.Remove(CH_PCE, 'S' + AVisitStr);
+  Changes.Remove(CH_PCE, 'A' + AVisitStr);
+  Changes.Remove(CH_PCE, 'H' + AVisitStr);
+  Changes.Remove(CH_PCE, 'E' + AVisitStr);
+  Changes.Remove(CH_PCE, 'T' + AVisitStr);
+end;
+
+
+procedure TfrmDCSumm.mnuActDeleteClick(Sender: TObject);
+{ delete the selected progress note & remove from the Encounter object if necessary }
+var
+  DeleteSts, ActionSts: TActionRec;
+  ReasonForDelete, AVisitStr, SavedDocID: string;
+  Saved: boolean;
+  SavedDocIEN: integer;
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  ActOnDocument(ActionSts, lstSumms.ItemIEN, 'DELETE RECORD');
+  if ShowMsgOn(not ActionSts.Success, ActionSts.Reason, TX_IN_AUTH) then Exit;
+  ReasonForDelete := SelectDeleteReason(lstSumms.ItemIEN);
+  if ReasonForDelete = DR_CANCEL then Exit;
+  // suppress prompt for deletion when called from SaveEditedNote (Sender = Self)
+  if (Sender <> Self) and (InfoBox(MakeDCSummDisplayText(lstSumms.Items[lstSumms.ItemIndex]) + TX_DEL_OK,
+    TX_DEL_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES) then Exit;
+  // do the appropriate locking
+  if not LockSumm(lstSumms.ItemIEN) then Exit;
+    // retraction notification message
+  if JustifyDocumentDelete(lstSumms.ItemIEN) then
+     InfoBox(TX_RETRACT, TX_RETRACT_CAP, MB_OK);
+  SavedDocID := lstSumms.ItemID;
+  SavedDocIEN := lstSumms.ItemIEN;
+  if (EditingIndex > -1) and (not FConfirmed) and (lstSumms.ItemIndex <> EditingIndex) and (memNewSumm.GetTextLen > 0) then
+    begin
+      SaveCurrentSumm(Saved);
+      if not Saved then Exit;
+    end;
+  EditingIndex := -1;
+  FConfirmed := False;
+(*  if Saved then
+    begin
+      EditingIndex := -1;
+      mnuViewClick(Self);
+      with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+   end;*)
+  // remove the note
+  DeleteSts.Success := True;
+  AVisitStr := VisitStrForNote(SavedDocIEN);
+  RemovePCEFromChanges(SavedDocIEN, AVisitStr);
+  if (SavedDocIEN > 0) and (lstSumms.ItemIEN = SavedDocIEN) then DeleteDocument(DeleteSts, SavedDocIEN, ReasonForDelete);
+  if not Changes.Exist(CH_SUM, SavedDocID) then UnlockDocument(SavedDocIEN);
+  Changes.Remove(CH_SUM, SavedDocID);  // this will unlock the document if in Changes
+  // reset the display now that the note is gone
+  if DeleteSts.Success then
+  begin
+    DeletePCE(AVisitStr);  // removes PCE data if this was the only note pointing to it
+    ClearEditControls;
+    //ClearPtData;   WRONG - fixed in v15.10 - RV
+    LoadSumms;
+(*    with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    if tvSumms.Selected <> nil then tvSummsChange(Self, tvSumms.Selected) else
+    begin*)
+      pnlWrite.Visible := False;
+      pnlRead.Visible := True;
+      UpdateReminderFinish;
+      ShowPCEControls(False);
+      frmDrawers.DisplayDrawers(FALSE);
+      cmdNewSumm.Visible := TRUE;
+      cmdPCE.Visible := FALSE;
+      popSummMemoEncounter.Visible := cmdPCE.Visible;
+      lblSpace1.Top := cmdNewSumm.Top - lblSpace1.Height;
+//    end; {if ItemIndex}
+  end {if DeleteSts}
+  else InfoBox(DeleteSts.Reason, TX_DEL_ERR, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmDCSumm.mnuActEditClick(Sender: TObject);
+{ load the selected Discharge Summary for editing }
+var
+  ActionSts: TActionRec;
+  ASummID: string;
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  if lstSumms.ItemIndex = EditingIndex then Exit;
+  ASummID := lstSumms.ItemID;
+  if not StartNewEdit(DC_ACT_EDIT_SUMM) then Exit;
+  //LoadSumms;
+  with tvSumms do Selected := FindPieceNode(ASummID, 1, U, Items.GetFirstNode);
+  ActOnDCDocument(ActionSts, lstSumms.ItemIEN, 'EDIT RECORD');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LoadForEdit(False);
+end;
+
+procedure TfrmDCSumm.mnuActSaveClick(Sender: TObject);
+{ saves the Summ that is currently being edited }
+var
+  Saved: Boolean;
+  SavedDocID: string;
+begin
+  inherited;
+  if EditingIndex > -1 then
+    begin
+      SavedDocID := Piece(lstSumms.Items[EditingIndex], U, 1);
+      FLastSummID := SavedDocID;
+      SaveCurrentSumm(Saved);
+      if Saved and (EditingIndex < 0) and (not FDeleted) then
+      //if Saved then
+        begin
+          LoadSumms;
+          with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+       end;
+    end
+    else InfoBox(TX_NO_NOTE, TX_SAVE_NOTE, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmDCSumm.mnuActSignClick(Sender: TObject);
+{ sign the currently selected Summ, save first if necessary }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  Saved, SummUnlocked: Boolean;
+  ActionType, ESCode, SignTitle: string;
+  ActionSts, SignSts: TActionRec;
+  OK: boolean;
+  SavedDocID, tmpItem: string;
+  EditingID: string;                                         //v22.12 - RV
+  tmpNode: TTreeNode;
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+(*  if lstSumms.ItemIndex = EditingIndex then                //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentSumm(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+    tmpItem := lstSumms.Items[EditingIndex];                 //v22.12 - RV
+  SavedDocID := lstSumms.ItemID;*)                           //v22.12 - RV
+  SavedDocID := lstSumms.ItemID;                             //v22.12 - RV
+  FLastSummID := SavedDocID;                                 //v22.12 - RV
+  if lstSumms.ItemIndex = EditingIndex then                  //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentSumm(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    tmpItem := lstSumms.Items[EditingIndex];                 //v22.12 - RV
+    EditingID := Piece(tmpItem, U, 1);                       //v22.12 - RV
+  end;                                                       //v22.12 - RV
+  if not NoteHasText(lstSumms.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_SUMM1, TC_EMPTY_SUMM, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstSumms.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstSumms.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  if not LockSumm(lstSumms.ItemIEN) then Exit;
+  // no exits after things are locked
+  SummUnlocked := False;
+  ActOnDCDocument(ActionSts, lstSumms.ItemIEN, ActionType);
+  if ActionSts.Success then
+  begin
+    OK := IsOK2Sign(uPCEShow, lstSumms.ItemIEN);
+    if frmFrame.Closing then exit;
+    if(uPCEShow.Updated) then
+    begin
+      uPCEShow.CopyPCEData(uPCEEdit);
+      uPCEShow.Updated := FALSE;
+      lstSummsClick(Self);
+    end;
+    if not AuthorSignedDocument(lstSumms.ItemIEN) then
+    begin
+      if (InfoBox(TX_AUTH_SIGNED +
+          GetTitleText(lstSumms.ItemIndex),TX_SIGN ,MB_YESNO)= ID_NO) then exit;
+    end;
+    if(OK) then
+    begin                                       
+      with lstSumms do SignatureForItem(Font.Size, MakeDCSummDisplayText(Items[ItemIndex]), SignTitle, ESCode);
+      if Length(ESCode) > 0 then
+      begin
+        SignDCDocument(SignSts, lstSumms.ItemIEN, ESCode);
+        RemovePCEFromChanges(lstSumms.ItemIEN);
+        SummUnlocked := Changes.Exist(CH_SUM, lstSumms.ItemID);
+        Changes.Remove(CH_SUM, lstSumms.ItemID);
+        if SignSts.Success
+          then lstSummsClick(Self)
+          else InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end  {if Length(ESCode)}
+      else
+        SummUnlocked := Changes.Exist(CH_SUM, lstSumms.ItemID);
+    end;
+  end
+  else InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+  if not SummUnlocked then UnlockDocument(lstSumms.ItemIEN);
+  //SetViewContext(FCurrentContext);  //v22.12 - RV
+  LoadSumms;                          //v22.12 - RV
+  //if EditingIndex > -1 then         //v22.12 - RV
+  if (EditingID <> '') then           //v22.12 - RV
+    begin
+      lstSumms.Items.Insert(0, tmpItem);
+      tmpNode := tvSumms.Items.AddObjectFirst(tvSumms.Items.GetFirstNode, 'Summary being edited',
+                 MakeDCSummTreeObject('EDIT^Summary being edited^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'EDIT^Summary being edited^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_TOP_LEVEL;
+      tmpNode := tvSumms.Items.AddChildObjectFirst(tmpNode, MakeDCSummDisplayText(tmpItem), MakeDCSummTreeObject(tmpItem));
+      TORTreeNode(tmpNode).StringData := tmpItem;
+      SetTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentContext, CT_DCSUMM);
+      EditingIndex := lstSumms.SelectByID(EditingID);                 //v22.12 - RV
+    end;
+  //with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);  //v22.12 - RV
+  with tvSumms do                                                                  //v22.12 - RV
+  begin                                                                            //v22.12 - RV
+    Selected := FindPieceNode(FLastSummID, U, Items.GetFirstNode);                 //v22.12 - RV
+    if Selected <> nil then tvSummsChange(Self, Selected);                         //v22.12 - RV
+  end;                                                                             //v22.12 - RV
+end;
+
+procedure TfrmDCSumm.SaveSignItem(const ItemID, ESCode: string);
+{ saves and optionally signs a Discharge Summary or addendum }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  AnIndex, IEN, i: Integer;
+  Saved, ContinueSign: Boolean;   {*RAB* 8/26/99}
+  ActionSts, SignSts: TActionRec;
+  APCEObject: TPCEData;
+  OK: boolean;
+  ActionType, SignTitle: string;
+begin
+  AnIndex := -1;
+  IEN := StrToIntDef(ItemID, 0);
+  if IEN = 0 then Exit;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then FSilent := True;
+  with lstSumms do for i := 0 to Items.Count - 1 do if lstSumms.GetIEN(i) = IEN then
+  begin
+    AnIndex := i;
+    break;
+  end;
+  if (AnIndex > -1) and (AnIndex = EditingIndex) then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+    if FDeleted then
+      begin
+        FDeleted := False;
+        Exit;
+      end;
+    AnIndex := lstSumms.SelectByIEN(IEN);
+    //IEN := lstNotes.GetIEN(AnIndex);                    // saving will change IEN
+  end;
+  if Length(ESCode) > 0 then
+  begin
+    if CosignDocument(IEN) then
+    begin
+      SignTitle := TX_COSIGN;
+      ActionType := SIG_COSIGN;
+    end else
+    begin
+      SignTitle := TX_SIGN;
+      ActionType := SIG_SIGN;
+    end;
+    ActOnDocument(ActionSts, IEN, ActionType);
+    if not ActionSts.Success then
+      begin
+        InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+        ContinueSign := False;
+      end
+    else if not NoteHasText(IEN) then
+      begin
+        InfoBox(TX_EMPTY_SUMM1, TC_EMPTY_SUMM, MB_OK or MB_ICONERROR);
+        ContinueSign := False;
+      end
+    else if not LastSaveClean(IEN) and
+      (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES)
+       then ContinueSign := False
+    else ContinueSign := True;
+    if ContinueSign then
+    begin
+      if (AnIndex >= 0) and (AnIndex = lstSumms.ItemIndex) then
+        APCEObject := uPCEShow
+      else
+        APCEObject := nil;
+      OK := IsOK2Sign(APCEObject, IEN);
+      if frmFrame.Closing then exit;
+      if(assigned(APCEObject)) and (uPCEShow.Updated) then
+      begin
+        uPCEShow.CopyPCEData(uPCEEdit);
+        uPCEShow.Updated := FALSE;
+        lstSummsClick(Self);
+      end
+      else
+        uPCEEdit.Clear;
+      if(OK) then
+      begin
+        SignDocument(SignSts, IEN, ESCode);
+        if not SignSts.Success then InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end; {if OK}
+    end; {if ContinueSign}
+  end; {if Length(ESCode)}
+
+  if (AnIndex = lstSumms.ItemIndex) and (not frmFrame.ContextChanging) then
+    begin
+      LoadSumms;
+      with tvSumms do Selected := FindPieceNode(IntToStr(IEN), U, Items.GetFirstNode);
+    end;
+end;
+
+procedure TfrmDCSumm.popSummMemoPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popSummMemo) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popSummMemo))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popSummMemoCut.Enabled      := FEditCtrl.SelLength > 0;
+    popSummMemoCopy.Enabled     := popSummMemoCut.Enabled;
+    popSummMemoPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+    popSummMemoTemplate.Enabled := frmDrawers.CanEditTemplates and popSummMemoCut.Enabled;
+    popSummMemoFind.Enabled     := FEditCtrl.GetTextLen > 0;
+  end else
+  begin
+    popSummMemoCut.Enabled      := False;
+    popSummMemoCopy.Enabled     := False;
+    popSummMemoPaste.Enabled    := False;
+    popSummMemoTemplate.Enabled := False;
+  end;
+  if pnlWrite.Visible then
+  begin
+    popSummMemoSpell.Enabled   := True;
+    popSummMemoGrammar.Enabled := True;
+    popSummMemoReformat.Enabled := True;
+    popSummMemoReplace.Enabled  := (FEditCtrl.GetTextLen > 0);
+    popSummMemoPreview.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+    popSummMemoInsTemplate.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+  end else
+  begin
+    popSummMemoSpell.Enabled   := False;
+    popSummMemoGrammar.Enabled := False;
+    popSummMemoReformat.Enabled := False;
+    popSummMemoReplace.Enabled := False;
+    popSummMemoPreview.Enabled  := False;
+    popSummMemoInsTemplate.Enabled  := False;
+  end;
+end;
+
+procedure TfrmDCSumm.popSummMemoCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmDCSumm.popSummMemoCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmDCSumm.popSummMemoPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText; {*KCM*}
+  //FEditCtrl.PasteFromClipboard;        // use AsText to prevent formatting
+end;
+
+procedure TfrmDCSumm.popSummMemoReformatClick(Sender: TObject);
+begin
+  inherited;
+  if Screen.ActiveControl <> memNewSumm then Exit;
+  ReformatMemoParagraph(memNewSumm);
+end;
+
+procedure TfrmDCSumm.popSummMemoFindClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popSummMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgFindText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmDCSumm.dlgFindTextFind(Sender: TObject);
+begin
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popSummMemo.PopupComponent));
+end;
+
+procedure TfrmDCSumm.popSummMemoReplaceClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popSummMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgReplaceText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      ReplaceText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmDCSumm.dlgReplaceTextReplace(Sender: TObject);
+begin
+  inherited;
+  dmodShared.ReplaceRichEditText(dlgReplaceText, TRichEdit(popSummMemo.PopupComponent));
+end;
+
+procedure TfrmDCSumm.dlgReplaceTextFind(Sender: TObject);
+begin
+  inherited;
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popSummMemo.PopupComponent));
+end;
+
+procedure TfrmDCSumm.popSummMemoSpellClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    SpellCheckForControl(memNewSumm);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmDCSumm.popSummMemoGrammarClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    GrammarCheckForControl(memNewSumm);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmDCSumm.FormCreate(Sender: TObject);
+begin
+  inherited;
+  PageID := CT_DCSUMM;
+  FDischargeDate := FMNow;
+  EditingIndex := -1;
+  FEditDCSumm.LastCosigner := 0;
+  FEditDCSumm.LastCosignerName := '';
+  FLastSummID := '';
+  frmDrawers := TfrmDrawers.CreateDrawers(Self, pnlDrawers, [],[]);
+  frmDrawers.Align := alBottom;
+  frmDrawers.RichEditControl := memNewSumm;
+  frmDrawers.Splitter := splDrawers;
+  frmDrawers.DefTempPiece := 3;
+  FImageFlag := TBitmap.Create;
+  FDocList := TStringList.Create;
+end;
+
+procedure TfrmDCSumm.mnuViewDetailClick(Sender: TObject);
+begin
+  inherited;
+  if lstSumms.ItemIEN <= 0 then Exit;
+  mnuViewDetail.Checked := not mnuViewDetail.Checked;
+  if mnuViewDetail.Checked then
+    begin
+      StatusText('Retrieving discharge summary details...');
+      Screen.Cursor := crHourGlass;
+      LoadDetailText(memSumm.Lines, lstSumms.ItemIEN);
+      Screen.Cursor := crDefault;
+      StatusText('');
+      memSumm.SelStart := 0;
+      memSumm.Repaint;
+    end
+  else
+    lstSummsClick(Self);
+  SendMessage(memSumm.Handle, WM_VSCROLL, SB_TOP, 0);
+end;
+
+procedure TfrmDCSumm.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  Saved: Boolean;
+  IEN: Int64;
+  ErrMsg: string;
+  DeleteSts: TActionRec;
+begin
+  inherited;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then
+  begin
+    FSilent := True;
+    if memNewSumm.GetTextLen > 0 then SaveCurrentSumm(Saved)
+    else
+    begin
+      IEN := lstSumms.GetIEN(EditingIndex);
+      if not LastSaveClean(IEN) then             // means note hasn't been committed yet
+      begin
+        LockDocument(IEN, ErrMsg);
+        if ErrMsg = '' then
+        begin
+          DeleteDocument(DeleteSts, IEN, '');
+          UnlockDocument(IEN);
+        end; {if ErrMsg}
+      end; {if not LastSaveClean}
+    end; {else}
+  end; {if frmFrame}
+end;
+
+procedure TfrmDCSumm.mnuActIdentifyAddlSignersClick(Sender: TObject);
+var
+  Exclusions: TStrings;
+  Saved, x, y: boolean;
+  SignerList: TSignerList;
+  ActionSts: TActionRec;
+  SigAction: integer;
+  SavedDocID: string;
+  ARefDate: TFMDateTime;
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  if lstSumms.ItemIndex = EditingIndex then
+    begin
+      SaveCurrentSumm(Saved);
+      if not Saved then Exit;
+      LoadSumms;
+      with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    end;
+  x := CanChangeCosigner(lstSumms.ItemIEN);
+  ActOnDocument(ActionSts, lstSumms.ItemIEN, 'IDENTIFY SIGNERS');
+  y := ActionSts.Success;
+  if x and not y then
+    begin
+      if InfoBox(ActionSts.Reason + CRLF + CRLF +
+                 'Would you like to change the cosigner?',
+                 TX_IN_AUTH, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES then
+    	SigAction := SG_COSIGNER
+      else
+	Exit;
+    end
+  else if y and not x then SigAction := SG_ADDITIONAL
+  else if x and y then SigAction := SG_BOTH
+  else
+    begin
+      InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+      Exit;
+    end;
+
+//  NEED TO PREVENT CHANGE OF COSIGNER ON DC SUMMARIES?
+{  if y then SigAction := SG_ADDITIONAL
+    else
+    begin
+      InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+      Exit;
+    end;  }
+
+  Exclusions := GetCurrentSigners(lstSumms.ItemIEN);
+  ARefDate := ExtractFloat(Piece(Piece(lstSumms.Items[lstSumms.ItemIndex], U, 9), ';', 2));
+  if ARefDate = 0 then        //no discharge date, so use note date
+    ARefDate := StrToFloat(Piece(lstSumms.Items[lstSumms.ItemIndex], U, 3));
+  SelectAdditionalSigners(Font.Size, lstSumms.ItemIEN, SigAction, Exclusions, SignerList, CT_DCSUMM, ARefDate);
+  with SignerList do
+    begin
+      case SigAction of
+        SG_ADDITIONAL:  if Changed and (Signers <> nil) and (Signers.Count > 0) then
+                          UpdateAdditionalSigners(lstSumms.ItemIEN, Signers);
+        SG_COSIGNER:    if Changed then ChangeAttending(lstSumms.ItemIEN, Cosigner);
+        SG_BOTH:        if Changed then
+                          begin
+                            if (Signers <> nil) and (Signers.Count > 0) then
+                              UpdateAdditionalSigners(lstSumms.ItemIEN, Signers);
+                            ChangeAttending(lstSumms.ItemIEN, Cosigner);
+                          end;
+      end;
+      lstSummsClick(Self);
+    end;
+end;
+
+procedure TfrmDCSumm.popSummMemoAddlSignClick(Sender: TObject);
+begin
+  inherited;
+  mnuActIdentifyAddlSignersClick(Self);
+end;
+
+procedure TfrmDCSumm.ProcessNotifications;
+var
+  x: string;
+  Saved: boolean;
+  tmpNode: TTreeNode;
+  AnObject: PDocTreeObject;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+  end;
+  lblSumms.Caption := Notifications.Text;
+  tvSumms.Caption := Notifications.Text;
+  EditingIndex := -1;
+  lstSumms.Enabled := True ;
+  pnlRead.BringToFront ;
+  x := Notifications.AlertData;
+  //x := MakeDCSummListItem(Notifications.AlertData);
+  if StrToIntDef(Piece(x, U, 1), 0) = 0 then
+    begin
+      InfoBox(TX_NO_ALERT, TX_CAP_NO_ALERT, MB_OK);
+      Exit;
+    end;
+  uChanging := True;
+  tvSumms.Items.BeginUpdate;
+  lstSumms.Clear;
+  KillDocTreeObjects(tvSumms);
+  tvSumms.Items.Clear;
+  lstSumms.Items.Add(x);
+  AnObject := MakeDCSummTreeObject('ALERT^Alerted Note^^^^^^^^^^^%^0');
+  tmpNode := tvSumms.Items.AddObjectFirst(tvSumms.Items.GetFirstNode, AnObject.NodeText, AnObject);
+  TORTreeNode(tmpNode).StringData := 'ALERT^Alerted Note^^^^^^^^^^^%^0';
+  tmpNode.ImageIndex := IMG_TOP_LEVEL;
+  AnObject := MakeDCSummTreeObject(x);
+  tmpNode := tvSumms.Items.AddChildObjectFirst(tmpNode, AnObject.NodeText, AnObject);
+  TORTreeNode(tmpNode).StringData := x;
+  SetTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentContext, CT_DCSUMM);
+  tvSumms.Selected := tmpNode;
+  tvSumms.Items.EndUpdate;
+  uChanging := False;
+  tvSummsChange(Self, tvSumms.Selected);
+  case Notifications.Followup of
+    NF_DCSUMM_UNSIGNED_NOTE:   ;  //Automatically deleted by sig action!!!
+  end;
+  if Copy(Piece(Notifications.RecordID, U, 2), 1, 6) = 'TIUADD' then Notifications.Delete;
+  if Copy(Piece(Notifications.RecordID, U, 2), 1, 5) = 'TIUID' then Notifications.Delete;
+end;
+
+procedure TfrmDCSumm.SetViewContext(AContext: TTIUContext);
+var
+  Saved: boolean;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+  end;
+  EditingIndex := -1;
+  tvSumms.Enabled := True ;
+  pnlRead.BringToFront ;
+  if FCurrentContext.Status <> '' then with uDCSummContext do
+    begin
+      BeginDate      := FCurrentContext.BeginDate;
+      EndDate        := FCurrentContext.EndDate;
+      FMBeginDate    := FCurrentContext.FMBeginDate;
+      FMEndDate      := FCurrentContext.FMEndDate;
+      Status         := FCurrentContext.Status;
+      Author         := FCurrentContext.Author;
+      MaxDocs        := FCurrentContext.MaxDocs;
+      ShowSubject    := FCurrentContext.ShowSubject;
+      GroupBy        := FCurrentContext.GroupBy;
+      SortBy         := FCurrentContext.SortBy;
+      ListAscending  := FCurrentContext.ListAscending;
+      TreeAscending  := FCurrentContext.TreeAscending;
+      Keyword        := FCurrentContext.Keyword;
+      SearchField    := FCurrentContext.SearchField;
+      Filtered       := FCurrentContext.Filtered;
+      Changed        := True;
+      mnuViewClick(Self);
+    end
+  else
+    begin
+      ViewContext := NC_RECENT ;
+      mnuViewClick(Self);
+    end;
+end;
+
+procedure TfrmDCSumm.mnuViewSaveAsDefaultClick(Sender: TObject);
+const
+  TX_NO_MAX =  'You have not specified a maximum number of summaries to be returned.' + CRLF +
+               'If you save this preference, the result will be that ALL summaries for every' + CRLF +
+               'patient will be saved as your default view.' + CRLF + CRLF +
+               'For patients with large numbers of summaries, this could result in some lengthy' + CRLF +
+               'delays in loading the list of summaries.' + CRLF + CRLF +
+               'Are you sure you mean to do this?';
+  TX_REPLACE = 'Replace current defaults?';
+begin
+  inherited;
+  if FCurrentContext.MaxDocs = 0 then
+     if InfoBox(TX_NO_MAX,'Warning', MB_YESNO or MB_ICONWARNING) = IDNO then
+       begin
+         mnuViewClick(mnuViewCustom);
+         Exit;
+       end;
+  if InfoBox(TX_REPLACE,'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      SaveCurrentDCSummContext(FCurrentContext);
+      FDefaultContext := FCurrentContext;
+      //lblSumms.Caption := 'Default List';
+    end;
+end;
+
+procedure TfrmDCSumm.mnuViewReturntoDefaultClick(Sender: TObject);
+begin
+  inherited;
+  SetViewContext(FDefaultContext);
+end;
+
+procedure TfrmDCSumm.popSummMemoTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, True, FEditCtrl.SelText);
+end;
+
+procedure TfrmDCSumm.popSummListPopup(Sender: TObject);
+begin
+  inherited;
+  N5.Visible                          := (popSummList.PopupComponent is TORTreeView);
+  popSummListExpandAll.Visible        := N5.Visible;
+  popSummListExpandSelected.Visible   := N5.Visible;
+  popSummListCollapseAll.Visible      := N5.Visible;
+  popSummListCollapseSelected.Visible := N5.Visible;
+end;
+
+procedure TfrmDCSumm.popSummListExpandAllClick(Sender: TObject);
+begin
+  inherited;
+  tvSumms.FullExpand;
+end;
+
+procedure TfrmDCSumm.popSummListCollapseAllClick(Sender: TObject);
+begin
+  inherited;
+  tvSumms.Selected := nil;
+  lvSumms.Items.Clear;
+  memSumm.Clear;
+  tvSumms.FullCollapse;
+  tvSumms.Selected := tvSumms.TopItem;
+end;
+
+procedure TfrmDCSumm.popSummListExpandSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if tvSumms.Selected = nil then exit;
+  with tvSumms.Selected do if HasChildren then Expand(True);
+end;
+
+procedure TfrmDCSumm.popSummListCollapseSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if tvSumms.Selected = nil then exit;
+  with tvSumms.Selected do if HasChildren then Collapse(True);
+end;
+
+procedure TfrmDCSumm.mnuNewTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, True);
+end;
+
+procedure TfrmDCSumm.mnuEditTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self);
+end;
+
+procedure TfrmDCSumm.mnuOptionsClick(Sender: TObject);
+begin
+  inherited;
+  mnuEditTemplates.Enabled := frmDrawers.CanEditTemplates;
+  mnuNewTemplate.Enabled := frmDrawers.CanEditTemplates;
+  mnuEditSharedTemplates.Enabled := frmDrawers.CanEditShared;
+  mnuNewSharedTemplate.Enabled := frmDrawers.CanEditShared;
+  mnuEditDialgFields.Enabled := CanEditTemplateFields;
+end;         
+
+procedure TfrmDCSumm.mnuEditSharedTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, FALSE, '', TRUE);
+end;
+
+procedure TfrmDCSumm.mnuNewSharedTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE, '', TRUE);
+end;
+
+procedure TfrmDCSumm.FormDestroy(Sender: TObject);
+begin
+  FImageFlag.Free;
+  FDocList.Free;
+  KillDocTreeObjects(tvSumms);
+  inherited;
+end;
+
+function TfrmDCSumm.GetDrawers: TFrmDrawers;
+begin
+  Result := frmDrawers;
+end;
+
+procedure TfrmDCSumm.SetEditingIndex(const Value: Integer);
+begin
+  FEditingIndex := Value;
+end;
+
+(*function TfrmDCSumm.MakeTitleText(IsAddendum: Boolean = False): string;
+{ returns display text for list box based on FEditNote }
+begin
+  Result := FormatFMDateTime('mmm dd,yy', FEditDCSumm.DischargeDateTime) + U;
+  if IsAddendum and (CompareText(Copy(FEditDCSumm.TitleName, 1, 8), 'Addendum') <> 0)
+    then Result := Result + 'Addendum to ';
+  Result := Result + FEditDCSumm.TitleName + ', ' + FEditDCSumm.LocationName + ', ' +
+            FEditDCSumm.DictatorName;
+end;*)
+
+function TfrmDCSumm.LacksRequiredForCreate: Boolean;
+{ determines if the fields required to create the note are present }
+var
+  CurTitle: Integer;
+  ADateTime:  TFMDateTime;
+begin
+  Result := False;
+  with FEditDCSumm do
+  begin
+    if Title <= 0    then Result := True;
+    if Dictator <= 0   then Result := True;
+    if AdmitDateTime <= 0 then Result := True;
+    if DischargeDateTime > 0 then
+      ADateTime := DischargeDateTime
+    else
+      ADateTime := DictDateTime;
+    if (DocType = TYP_ADDENDUM) then
+    begin
+      if AskCosignerForDocument(Addend, Dictator, ADateTime) and (Cosigner <= 0) then Result := True;
+    end else
+    begin
+      if Title > 0 then CurTitle := Title else CurTitle := DocType;
+      if AskCosignerForTitle(CurTitle, Dictator, ADateTime) and (Cosigner <= 0) then Result := True;
+    end;
+  end;
+end;
+
+function TfrmDCSumm.VerifySummTitle: Boolean;
+const
+  VNT_UNKNOWN = 0;
+  VNT_NO      = 1;
+  VNT_YES     = 2;
+var
+  AParam: string;
+begin
+  if FVerifySummTitle = VNT_UNKNOWN then
+  begin
+    AParam := GetUserParam('ORWOR VERIFY NOTE TITLE');
+    if AParam = '1' then FVerifySummTitle := VNT_YES else FVerifySummTitle := VNT_NO;
+  end;
+  Result := FVerifySummTitle = VNT_YES;
+end;
+
+function TfrmDCSumm.LockSumm(AnIEN: Int64): Boolean;
+{ returns true if summ successfully locked }
+var
+  LockMsg: string;
+begin
+  Result := True;
+  if Changes.Exist(CH_SUM, IntToStr(AnIEN)) then Exit;  // already locked
+  LockDocument(AnIEN, LockMsg);
+  if LockMsg <> '' then
+    begin
+      Result := False;
+      InfoBox(LockMsg, TC_NO_LOCK, MB_OK);
+    end;
+end;
+
+procedure TfrmDCSumm.DoAutoSave(Suppress: integer = 1);
+var
+  ErrMsg: string;
+begin
+  if fFrame.frmFrame.DLLActive = True then Exit;  
+  if (EditingIndex > -1) and FChanged then
+  begin
+    StatusText('Autosaving note...');
+    //PutTextOnly(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex));
+    timAutoSave.Enabled := False;
+    try
+      SetText(ErrMsg, memNewSumm.Lines, lstSumms.GetIEN(EditingIndex), Suppress);
+    finally
+      timAutoSave.Enabled := True;
+    end;
+    FChanged := False;
+    StatusText('');
+  end;
+  if ErrMsg <> '' then
+    InfoBox(TX_SAVE_ERROR1 + ErrMsg + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  //Assert(ErrMsg = '', 'AutoSave: ' + ErrMsg);
+end;
+
+procedure TfrmDCSumm.timAutoSaveTimer(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave;
+end;
+
+function TfrmDCSumm.GetTitleText(AnIndex: Integer): string;
+{ returns non-tabbed text for the title of a note given the ItemIndex in lstSumms }
+begin
+  with lstSumms do
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(Items[AnIndex], U, 3))) +
+              '  ' + Piece(Items[AnIndex], U, 2) + ', ' + Piece(Items[AnIndex], U, 6) + ', ' +
+              Piece(Piece(Items[AnIndex], U, 5), ';', 2)
+end;
+
+procedure TfrmDCSumm.cmdChangeClick(Sender: TObject);
+var
+  LastTitle: Integer;
+  OKPressed, IsIDChild: Boolean;
+  x: string;
+  ListItemForEdit: string;
+begin
+  inherited;
+  IsIDChild := uIDNotesActive and (FEditDCSumm.IDParent > 0);
+  LastTitle   := FEditDCSumm.Title;
+  if Sender <> Self then
+    begin
+      FShowAdmissions := False;
+      OKPressed := ExecuteDCSummProperties(FEditDCSumm, ListItemForEdit, FShowAdmissions, IsIDChild);
+    end
+  else
+    OKPressed := True;
+  if not OKPressed then Exit;
+  // update display fields & uPCEEdit
+  lblNewTitle.Caption := ' ' + FEditDCSumm.TitleName + ' ';
+  if (FEditDCSumm.Addend > 0)  and (CompareText(Copy(lblNewTitle.Caption, 2, 8), 'Addendum') <> 0) then
+    lblNewTitle.Caption := 'Addendum to: ' + lblNewTitle.Caption;
+  with lblNewTitle do bvlNewTitle.SetBounds(Left - 1, Top - 1, Width + 2, Height + 2);
+  lblRefDate.Caption := FormatFMDateTime('mmm dd,yyyy@hh:nn', FEditDCSumm.DischargeDateTime);
+  lblDictator.Caption  := FEditDCSumm.DictatorName;
+  x := 'Adm: ' + FormatFMDateTime('mm/dd/yy', FEditDCSumm.AdmitDateTime) + '  ' + FEditDCSumm.LocationName;
+  lblVisit.Caption   := x;
+  x := '  Dis: ' + FormatFMDateTime('mm/dd/yy', FEditDCSumm.DischargeDateTime);
+  lblDischarge.Caption := x;
+  if Length(FEditDCSumm.AttendingName) > 0
+    then lblCosigner.Caption := 'Attending: ' + FEditDCSumm.AttendingName
+    else lblCosigner.Caption := '';
+  uPCEEdit.NoteTitle  := FEditDCSumm.Title;
+  // modify signature requirements if author or cosigner changed
+  if (User.DUZ <> FEditDCSumm.Dictator) and (User.DUZ <> FEditDCSumm.Attending)
+    then Changes.ReplaceSignState(CH_SUM, lstSumms.ItemID, CH_SIGN_NA)
+    else Changes.ReplaceSignState(CH_SUM, lstSumms.ItemID, CH_SIGN_YES);
+  x := lstSumms.Items[EditingIndex];
+  SetPiece(x, U, 2, lblNewTitle.Caption);
+  SetPiece(x, U, 3, FloatToStr(FEditDCSumm.DischargeDateTime));
+  tvSumms.Selected.Text := MakeDCSummDisplayText(x);
+  TORTreeNode(tvSumms.Selected).StringData := x;
+  lstSumms.Items[EditingIndex] := x;
+  Changes.ReplaceText(CH_SUM, lstSumms.ItemID, GetTitleText(EditingIndex));
+  if LastTitle <> FEditDCSumm.Title then mnuActLoadBoilerClick(Self);
+end;
+
+procedure TfrmDCSumm.mnuActChangeClick(Sender: TObject);
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  if (FEditingIndex < 0) or (lstSumms.ItemIndex <> FEditingIndex) then Exit;
+  cmdChangeClick(Sender);
+end;
+
+procedure TfrmDCSumm.mnuActLoadBoilerClick(Sender: TObject);
+var
+  NoteEmpty: Boolean;
+  BoilerText: TStringList;
+  DocInfo: string;
+
+  procedure AssignBoilerText;
+  begin
+    ExecuteTemplateOrBoilerPlate(BoilerText, FEditDCSumm.Title, ltTitle, Self, 'Title: ' + FEditDCSumm.TitleName, DocInfo);
+    QuickCopyWith508Msg(BoilerText, memNewSumm);
+    FChanged := False;
+  end;
+
+begin
+  inherited;
+  if NoSummSelected() then Exit;
+  if (FEditingIndex < 0) or (lstSumms.ItemIndex <> FEditingIndex) then Exit;
+  BoilerText := TStringList.Create;
+  try
+    NoteEmpty := memNewSumm.Text = '';
+    LoadBoilerPlate(BoilerText, FEditDCSumm.Title);
+    if (BoilerText.Text <> '') or
+       assigned(GetLinkedTemplate(IntToStr(FEditDCSumm.Title), ltTitle)) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(lstSumms.ItemIEN), FEditDCSumm);
+      if NoteEmpty then AssignBoilerText else
+      begin
+        case QueryBoilerPlate(BoilerText) of
+        0:  { do nothing } ;                         // ignore
+        1: begin
+             ExecuteTemplateOrBoilerPlate(BoilerText, FEditDCSumm.Title, ltTitle, Self, 'Title: ' + FEditDCSumm.TitleName, DocInfo);
+             QuickAddWith508Msg(BoilerText, memNewSumm);  // append
+           end;
+        2: AssignBoilerText                          // replace
+        end;
+      end;
+    end else
+    begin
+      if Sender = mnuActLoadBoiler
+        then InfoBox(TX_NO_BOIL, TC_NO_BOIL, MB_OK)
+        else
+        begin
+          if not NoteEmpty then
+            if not FChanged and (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
+              then memNewSumm.Lines.Clear;
+        end;
+    end; {if BoilerText.Text <> ''}
+  finally
+    BoilerText.Free;
+  end;
+end;
+
+procedure TfrmDCSumm.popSummMemoSaveContinueClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := True;
+  DoAutoSave;
+end;
+
+procedure TfrmDCSumm.mnuEditDialgFieldsClick(Sender: TObject);
+begin
+  inherited;
+  EditDialogFields;
+end;
+
+//===================  Added for sort/search enhancements ======================
+procedure TfrmDCSumm.LoadSumms;
+var
+  tmpList: TStringList;
+  ANode: TORTreeNode;
+
+begin
+  tmpList := TStringList.Create;
+  try
+    FDocList.Clear;
+    uChanging := True;
+    RedrawSuspend(memSumm.Handle);
+    RedrawSuspend(lvSumms.Handle);
+    tvSumms.Items.BeginUpdate;
+    lstSumms.Items.Clear;
+    KillDocTreeObjects(tvSumms);
+    tvSumms.Items.Clear;
+    tvSumms.Items.EndUpdate;
+    lvSumms.Items.Clear;
+    memSumm.Clear;
+    memSumm.Invalidate;
+    lblTitle.Caption := '';
+    lvSumms.Caption := lblTitle.Caption;
+    lblTitle.Hint := lblTitle.Caption;
+    with FCurrentContext do
+      begin
+        if Status <> IntToStr(NC_UNSIGNED) then
+          begin
+            ListSummsForTree(tmpList, NC_UNSIGNED, 0, 0, 0, 0, TreeAscending);
+            if tmpList.Count > 0 then
+              begin
+                CreateListItemsForDocumentTree(FDocList, tmpList, NC_UNSIGNED, GroupBy, TreeAscending, CT_DCSUMM);
+                UpdateTreeView(FDocList, tvSumms);
+              end;
+            tmpList.Clear;
+            FDocList.Clear;
+          end;
+        if Status <> IntToStr(NC_UNCOSIGNED) then
+          begin
+            ListSummsForTree(tmpList, NC_UNCOSIGNED, 0, 0, 0, 0, TreeAscending);
+            if tmpList.Count > 0 then
+              begin
+                CreateListItemsForDocumentTree(FDocList, tmpList, NC_UNCOSIGNED, GroupBy, TreeAscending, CT_DCSUMM);
+                UpdateTreeView(FDocList, tvSumms);
+              end;
+            tmpList.Clear;
+            FDocList.Clear;
+          end;
+        ListSummsForTree(tmpList, StrToIntDef(Status, 0), FMBeginDate, FMEndDate, Author, MaxDocs, TreeAscending);
+        CreateListItemsForDocumentTree(FDocList, tmpList, StrToIntDef(Status, 0), GroupBy, TreeAscending, CT_DCSUMM);
+        UpdateTreeView(FDocList, tvSumms);
+      end;
+    with tvSumms do
+      begin
+        uChanging := True;
+        tvSumms.Items.BeginUpdate;
+        RemoveParentsWithNoChildren(tvSumms, FCurrentContext);   // moved TO here in v15.9  (RV)
+        if FLastSummID <> '' then
+          Selected := FindPieceNode(FLastSummID, 1, U, nil);
+        if Selected = nil then
+          begin
+            if (FCurrentContext.GroupBy <> '') or (FCurrentContext.Filtered) then
+              begin
+                ANode := TORTreeNode(Items.GetFirstNode);
+                while ANode <> nil do
+                  begin
+                    ANode.Expand(False);
+                    Selected := ANode;
+                    ANode := TORTreeNode(ANode.GetNextSibling);
+                  end;
+              end
+            else
+              begin
+                ANode := tvSumms.FindPieceNode(FCurrentContext.Status, 1, U, nil);
+                if ANode <> nil then ANode.Expand(False);
+                ANode := tvSumms.FindPieceNode(IntToStr(NC_UNSIGNED), 1, U, nil);
+                if ANode = nil then
+                  ANode := tvSumms.FindPieceNode(IntToStr(NC_UNCOSIGNED), 1, U, nil);
+                if ANode = nil then
+                  ANode := tvSumms.FindPieceNode(FCurrentContext.Status, 1, U, nil);
+                if ANode <> nil then
+                  begin
+                    if ANode.getFirstChild <> nil then
+                      Selected := ANode.getFirstChild
+                    else
+                      Selected := ANode;
+                  end;
+              end;
+          end;
+        memSumm.Clear;
+        with lvSumms do
+          begin
+            Selected := nil;
+            if FCurrentContext.SortBy <> '' then
+              ColumnToSort := Pos(FCurrentContext.SortBy, 'RDSAL') - 1;
+            if not FCurrentContext.ShowSubject then
+              begin
+                Columns[1].Width := 2 * (Width div 5);
+                Columns[2].Width := 0;
+              end
+            else
+              begin
+                Columns[1].Width := Width div 5;
+                Columns[2].Width := Columns[1].Width;
+              end;
+          end;
+        //RemoveParentsWithNoChildren(tvSumms, FCurrentContext);  //moved FROM here in v15.9  (RV)
+        tvSumms.Items.EndUpdate;
+        uChanging := False;
+        SendMessage(tvSumms.Handle, WM_VSCROLL, SB_TOP, 0);
+        if Selected <> nil then tvSummsChange(Self, Selected);
+      end;
+  finally
+    RedrawActivate(memSumm.Handle);
+    RedrawActivate(lvSumms.Handle);
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmDCSumm.UpdateTreeView(DocList: TStringList; Tree: TORTreeView);
+begin
+  with Tree do
+    begin
+      uChanging := True;
+      Items.BeginUpdate;
+      FastAddStrings(DocList, lstSumms.Items);
+      BuildDocumentTree(DocList, '0', Tree, nil, FCurrentContext, CT_DCSUMM);
+      Items.EndUpdate;
+      uChanging := False;
+    end;
+end;
+
+procedure TfrmDCSumm.tvSummsChange(Sender: TObject; Node: TTreeNode);
+var
+  x, MySearch, MyNodeID: string;
+  i: integer;
+  WhyNot: string;
+begin
+  if uChanging then Exit;
+  //This gives the change a chance to occur when keyboarding, so that WindowEyes
+  //doesn't use the old value.
+  Application.ProcessMessages;
+  with tvSumms do
+    begin
+      memSumm.Clear;
+      if Selected = nil then Exit;
+      if uIDNotesActive then
+        begin
+          mnuActDetachFromIDParent.Enabled := (Selected.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD]);
+          popSummListDetachFromIDParent.Enabled := (Selected.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD]);
+          if (Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT, IMG_ID_CHILD, IMG_ID_CHILD_ADD]) then
+            mnuActAttachtoIDParent.Enabled := CanBeAttached(PDocTreeObject(Selected.Data)^.DocID, WhyNot)
+          else
+            mnuActAttachtoIDParent.Enabled := False;
+          popSummListAttachtoIDParent.Enabled := mnuActAttachtoIDParent.Enabled;
+          if (Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                      IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT,
+                                      IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT]) then
+            mnuActAddIDEntry.Enabled := CanReceiveAttachment(PDocTreeObject(Selected.Data)^.DocID, WhyNot)
+          else
+            mnuActAddIDEntry.Enabled := False;
+          popSummListAddIDEntry.Enabled := mnuActAddIDEntry.Enabled
+        end;
+      RedrawSuspend(lvSumms.Handle);
+      RedrawSuspend(memSumm.Handle);
+      popSummListExpandSelected.Enabled := Selected.HasChildren;
+      popSummListCollapseSelected.Enabled := Selected.HasChildren;
+      x := TORTreeNode(Selected).StringData;
+      if (Selected.ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+        begin
+          lvSumms.Visible := True;
+          lvSumms.Items.Clear;
+          lvSumms.Height := (2 * lvSumms.Parent.Height) div 5;
+          with lblTitle do
+            begin
+              Caption := Trim(Selected.Text);
+              if (FCurrentContext.SearchField <> '') and (FCurrentContext.Filtered) then
+                begin
+                  case FCurrentContext.SearchField[1] of
+                    'T': MySearch := 'TITLE';
+                    'S': MySearch := 'SUBJECT';
+                    'B': MySearch := 'TITLE or SUBJECT';
+                  end;
+                  Caption := Caption + ' where ' + MySearch + ' contains "' + UpperCase(FCurrentContext.Keyword) + '"';
+                end;
+              Hint := Caption;
+              lvSumms.Caption := Caption;
+            end;
+
+          if Selected.ImageIndex = IMG_TOP_LEVEL then
+            MyNodeID := Piece(TORTreeNode(Selected).StringData, U, 1)
+          else if Selected.Parent.ImageIndex = IMG_TOP_LEVEL then
+            MyNodeID := Piece(TORTreeNode(Selected.Parent).StringData, U, 1)
+          else if Selected.Parent.Parent.ImageIndex = IMG_TOP_LEVEL then
+            MyNodeID := Piece(TORTreeNode(Selected.Parent.Parent).StringData, U, 1);
+
+          uChanging := True;
+          TraverseTree(tvSumms, lvSumms, Selected.GetFirstChild, MyNodeID, FCurrentContext);
+          with lvSumms do
+            begin
+              for i := 0 to Columns.Count - 1 do
+                Columns[i].ImageIndex := IMG_NONE;
+              ColumnSortForward := FCurrentContext.ListAscending;
+              if ColumnToSort = 5 then ColumnToSort := 0;
+              if ColumnSortForward then
+                Columns[ColumnToSort].ImageIndex := IMG_ASCENDING
+              else
+                Columns[ColumnToSort].ImageIndex := IMG_DESCENDING;
+              if ColumnToSort = 0 then ColumnToSort := 5;
+              AlphaSort;
+              Columns[5].Width := 0;
+              Columns[6].Width := 0;
+            end;
+          uChanging := False;
+          with lvSumms do
+            if Items.Count > 0 then
+              begin
+                Selected := Items[0];
+                lvSummsSelectItem(Self, Selected, True);
+              end
+            else
+              begin
+                Selected := nil;
+                lstSumms.ItemIndex := -1;
+                memPCEShow.Clear;
+                ShowPCEControls(False);
+              end;
+          pnlWrite.Visible := False;
+          pnlRead.Visible := True;
+(*          UpdateReminderFinish;
+          ShowPCEControls(False);
+          frmDrawers.DisplayDrawers(FALSE);
+          cmdNewSumm.Visible := TRUE;
+          cmdPCE.Visible := FALSE;
+          lblSpace1.Top := cmdNewSumm.Top - lblSpace1.Height;*)
+          //memSumm.Clear;
+        end
+      else if StrToIntDef(Piece(x, U, 1), 0) > 0 then
+        begin
+          memSumm.Clear;
+          lvSumms.Visible := False;
+          lstSumms.SelectByID(Piece(x, U, 1));
+          lstSummsClick(Self);
+          SendMessage(memSumm.Handle, WM_VSCROLL, SB_TOP, 0);
+        end;
+      SendMessage(tvSumms.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+      RedrawActivate(lvSumms.Handle);
+      RedrawActivate(memSumm.Handle);
+    end;
+end;
+
+procedure TfrmDCSumm.tvSummsCollapsed(Sender: TObject; Node: TTreeNode);
+begin
+  with Node do
+    begin
+      if (ImageIndex in [IMG_GROUP_OPEN, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_OPEN]) then
+        ImageIndex := ImageIndex - 1;
+      if (SelectedIndex in [IMG_GROUP_OPEN, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_OPEN]) then
+        SelectedIndex := SelectedIndex - 1;
+    end;
+end;
+
+procedure TfrmDCSumm.tvSummsExpanded(Sender: TObject; Node: TTreeNode);
+
+  function SortByTitle(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+  begin
+    { Within an ID parent node, sorts in ascending order by title
+    BUT - addenda to parent document are always at the top of the sort, in date order}
+    if (Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum') and
+       (Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum') then
+      begin
+        Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end
+    else if Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := -1
+    else if Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := 1
+    else
+      begin
+        if Data = 0 then
+          Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocTitle),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocTitle))
+        else
+          Result := -AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocTitle),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocTitle));
+      end
+  end;
+
+  function SortByDate(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+  begin
+    { Within an ID parent node, sorts in ascending order by document date
+    BUT - addenda to parent document are always at the top of the sort, in date order}
+    if (Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum') and
+       (Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum') then
+      begin
+        Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end
+    else if Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := -1
+    else if Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := 1
+    else
+      begin
+        if Data = 0 then
+          Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocFMDate))
+        else
+          Result := -AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end;
+  end;
+
+begin
+  with Node do
+    begin
+      if Assigned(Data) then
+        if (Pos('<', PDocTreeObject(Data)^.DocHasChildren) > 0) then
+          begin
+            if (PDocTreeObject(Node.Data)^.OrderByTitle) then
+              CustomSort(@SortByTitle, 0)
+            else
+              CustomSort(@SortByDate, 0);
+          end;
+      if (ImageIndex in [IMG_GROUP_SHUT, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_SHUT]) then
+        ImageIndex := ImageIndex + 1;
+      if (SelectedIndex in [IMG_GROUP_SHUT, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_SHUT]) then
+        SelectedIndex := SelectedIndex + 1;
+    end;
+end;
+
+procedure TfrmDCSumm.tvSummsClick(Sender: TObject);
+begin
+(*  if tvSumms.Selected = nil then exit;
+  if (tvSumms.Selected.ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+    begin
+      uChanging := True;
+      lvSumms.Selected := nil;
+      uChanging := False;
+      memSumm.Clear;
+    end;*)
+end;
+
+procedure TfrmDCSumm.tvSummsDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
+var
+  AnItem: TORTreeNode;
+begin
+  Accept := False;
+  if not uIDNotesActive then exit;
+  AnItem := TORTreeNode(tvSumms.GetNodeAt(X, Y));
+  if (AnItem = nil) or (AnItem.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) then Exit;
+  with tvSumms.Selected do
+    if (ImageIndex in [IMG_SINGLE, IMG_PARENT, IMG_ID_CHILD, IMG_ID_CHILD_ADD]) then
+      Accept := (AnItem.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                       IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT,
+                                       IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT])
+    else if (ImageIndex in [IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT]) then
+      Accept := (AnItem.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL])
+    else if (ImageIndex in [IMG_ADDENDUM, IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) then
+      Accept := False;
+end;
+
+procedure TfrmDCSumm.tvSummsDragDrop(Sender, Source: TObject; X, Y: Integer);
+var
+  HT: THitTests;
+  Saved: boolean;
+  ADestNode: TORTreeNode;
+begin
+  if not uIDNotesActive then
+    begin
+      CancelDrag;
+      exit;
+    end;
+  if tvSumms.Selected = nil then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+  end;
+  HT := tvSumms.GetHitTestInfoAt(X, Y);
+  ADestNode := TORTreeNode(tvSumms.GetNodeAt(X, Y));
+  DoAttachIDChild(TORTreeNode(tvSumms.Selected), ADestNode);
+end;
+
+procedure TfrmDCSumm.tvSummsStartDrag(Sender: TObject;
+  var DragObject: TDragObject);
+const
+  TX_CAP_NO_DRAG = 'Item cannot be moved';
+  var
+  WhyNot: string;
+  Saved: boolean;
+begin
+  if (tvSumms.Selected.ImageIndex in [IMG_ADDENDUM, IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) or
+     (not uIDNotesActive) or
+     (lstSumms.ItemIEN = 0) then
+    begin
+      CancelDrag;
+      Exit;
+    end;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+  end;
+  if not CanBeAttached(PDocTreeObject(tvSumms.Selected.Data)^.DocID, WhyNot) then
+    begin
+      InfoBox(WhyNot, TX_CAP_NO_DRAG, MB_OK);
+      CancelDrag;
+    end;
+end;
+
+procedure TfrmDCSumm.lvSummsColumnClick(Sender: TObject; Column: TListColumn);
+var
+  i, ClickedColumn: Integer;
+begin
+  if Column.Index = 0 then ClickedColumn := 5 else ClickedColumn := Column.Index;
+  if ClickedColumn = ColumnToSort then
+    ColumnSortForward := not ColumnSortForward
+  else
+    ColumnSortForward := True;
+  for i := 0 to lvSumms.Columns.Count - 1 do
+    lvSumms.Columns[i].ImageIndex := IMG_NONE;
+  if ColumnSortForward then lvSumms.Columns[Column.Index].ImageIndex := IMG_ASCENDING
+  else lvSumms.Columns[Column.Index].ImageIndex := IMG_DESCENDING;
+  ColumnToSort := ClickedColumn;
+  case ColumnToSort of
+    5:  FCurrentContext.SortBy := 'R';
+    1:  FCurrentContext.SortBy := 'D';
+    2:  FCurrentContext.SortBy := 'S';
+    3:  FCurrentContext.SortBy := 'A';
+    4:  FCurrentContext.SortBy := 'L';
+  else
+    FCurrentContext.SortBy := 'R';
+  end;
+  FCurrentContext.ListAscending := ColumnSortForward;
+  (Sender as TCustomListView).AlphaSort;
+  //with lvSumms do if Selected <> nil then Scroll(0,  Selected.Top - TopItem.Top);
+end;
+
+procedure TfrmDCSumm.lvSummsCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+var
+  ix: Integer;
+begin
+  if ColumnToSort = 0 then
+    Compare := CompareText(Item1.Caption,Item2.Caption)
+  else begin
+   ix := ColumnToSort - 1;
+   Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
+  end;
+  if not ColumnSortForward then Compare := -Compare;
+end;
+
+procedure TfrmDCSumm.lvSummsSelectItem(Sender: TObject; Item: TListItem;
+  Selected: Boolean);
+begin
+  if uChanging or (not Selected) then Exit;
+  with lvSumms do
+    begin
+      StatusText('Retrieving selected discharge summary...');
+      lstSumms.SelectByID(Item.SubItems[5]);
+      lstSummsClick(Self);
+      SendMessage(memSumm.Handle, WM_VSCROLL, SB_TOP, 0);
+    end;
+end;
+
+procedure TfrmDCSumm.lvSummsResize(Sender: TObject);
+begin
+  inherited;
+  with lvSumms do
+    begin
+      if not FCurrentContext.ShowSubject then
+        begin
+          Columns[1].Width := 2 * (Width div 5);
+          Columns[2].Width := 0;
+        end
+      else
+        begin
+          Columns[1].Width := Width div 5;
+          Columns[2].Width := Columns[1].Width;
+        end;
+    end;
+end;
+
+procedure TfrmDCSumm.EnableDisableIDNotes;
+begin
+  uIDNotesActive := False; // := IDNotesInstalled;       Not yet on this tab
+  mnuActDetachFromIDParent.Visible := uIDNotesActive;
+  popSummListDetachFromIDParent.Visible := uIDNotesActive;
+  mnuActAddIDEntry.Visible := uIDNotesActive;
+  popSummListAddIDEntry.Visible := uIDNotesActive;
+  mnuActAttachtoIDParent.Visible := uIDNotesActive;
+  popSummListAttachtoIDParent.Visible := uIDNotesActive;
+  if uIDNotesActive then
+    tvSumms.DragMode := dmAutomatic
+  else
+    tvSumms.DragMode := dmManual;
+end;
+
+procedure TfrmDCSumm.mnuIconLegendClick(Sender: TObject);
+begin
+  inherited;
+  ShowIconLegend(ilNotes);
+end;
+
+procedure TfrmDCSumm.mnuActAttachtoIDParentClick(Sender: TObject);
+var
+  AChildNode: TORTreeNode;
+  AParentID: string;
+  SavedDocID: string;
+  Saved: boolean;
+begin
+  inherited;
+  if not uIDNotesActive then exit;
+  if lstSumms.ItemIEN = 0 then exit;
+  SavedDocID := lstSumms.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentSumm(Saved);
+    if not Saved then Exit;
+    LoadSumms;
+    with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if tvSumms.Selected = nil then exit;
+  AChildNode := TORTreeNode(tvSumms.Selected);
+  AParentID := SelectParentNodeFromList(tvSumms);
+  if AParentID = '' then exit;
+  with tvSumms do Selected := FindPieceNode(AParentID, 1, U, Items.GetFirstNode);
+  DoAttachIDChild(AChildNode, TORTreeNode(tvSumms.Selected));
+end;
+
+procedure TfrmDCSumm.DoAttachIDChild(AChild, AParent: TORTreeNode);
+const
+  TX_ATTACH_CNF     = 'Confirm Attachment';
+  TX_ATTACH_FAILURE = 'Attachment failed';
+var
+  ErrMsg, WhyNot: string;
+  SavedDocID: string;
+begin
+  if (AChild = nil) or (AParent = nil) then exit;
+  ErrMsg := '';
+  if not CanBeAttached(PDocTreeObject(AChild.Data)^.DocID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot + CRLF + CRLF;
+  if not CanReceiveAttachment(PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot;
+  if ErrMsg <> '' then
+    begin
+      InfoBox(ErrMsg, TX_ATTACH_FAILURE, MB_OK);
+      Exit;
+    end
+  else
+    begin
+      WhyNot := '';
+      if (InfoBox('ATTACH:   ' + AChild.Text + CRLF + CRLF +
+                  '    TO:   ' + AParent.Text + CRLF + CRLF +
+                  'Are you sure?', TX_ATTACH_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES)
+          then Exit;
+      SavedDocID := PDocTreeObject(AParent.Data)^.DocID;
+    end;
+  if AChild.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD] then
+    begin
+      if DetachEntryFromParent(PDocTreeObject(AChild.Data)^.DocID, WhyNot) then
+        begin
+          if AttachEntryToParent(PDocTreeObject(AChild.Data)^.DocID, PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+            begin
+              LoadSumms;
+              with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+              if tvSumms.Selected <> nil then tvSumms.Selected.Expand(False);
+            end
+          else
+            InfoBox(WhyNot, TX_ATTACH_FAILURE, MB_OK);
+        end
+      else
+        begin
+          WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+          WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+          InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+          Exit;
+        end;
+    end
+  else
+    begin
+      if AttachEntryToParent(PDocTreeObject(AChild.Data)^.DocID, PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+        begin
+          LoadSumms;
+          with tvSumms do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+          if tvSumms.Selected <> nil then tvSumms.Selected.Expand(False);
+        end
+      else
+        InfoBox(WhyNot, TX_ATTACH_FAILURE, MB_OK);
+   end;
+end;
+
+function TfrmDCSumm.SetSummTreeLabel(AContext: TTIUContext): string;
+var
+  x: string;
+
+  function SetDateRangeText(AContext: TTIUContext): string;
+  var
+    x1: string;
+  begin
+    with AContext do
+      if BeginDate <> '' then
+        begin
+          x1 := ' from ' + UpperCase(BeginDate);
+          if EndDate <> '' then x1 := x1 + ' to ' + UpperCase(EndDate)
+          else x1 := x1 + ' to TODAY';
+        end;
+    Result := x1;
+  end;
+
+begin
+  with AContext do
+    begin
+      if MaxDocs > 0 then x := 'Last ' + IntToStr(MaxDocs) + ' ' else x := 'All ';
+      case StrToIntDef(Status, 0) of
+        NC_ALL        : x := x + 'Signed Summaries';
+        NC_UNSIGNED   : begin
+                          x := x + 'Unsigned Summaries for ';
+                          if Author > 0 then x := x + ExternalName(Author, 200)
+                          else x := x + User.Name;
+                          x := x + SetDateRangeText(AContext);
+                        end;
+        NC_UNCOSIGNED : begin
+                          x := x + 'Uncosigned Summaries for ';
+                          if Author > 0 then x := x + ExternalName(Author, 200)
+                          else x := x + User.Name;
+                          x := x + SetDateRangeText(AContext);
+                        end;
+        NC_BY_AUTHOR  : x := x + 'Signed Summaries for ' + ExternalName(Author, 200) + SetDateRangeText(AContext);
+        NC_BY_DATE    : x := x + 'Signed Summaries ' + SetDateRangeText(AContext);
+      else
+        x := 'Custom List';
+      end;
+    end;
+  Result := x;
+end;
+
+procedure TfrmDCSumm.memNewSummKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmDCSumm.sptHorzCanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if pnlWrite.Visible then
+     if NewSize > frmDCSumm.ClientWidth - memNewSumm.Constraints.MinWidth - sptHorz.Width then
+        NewSize := frmDCSumm.ClientWidth - memNewSumm.Constraints.MinWidth - sptHorz.Width;
+end;
+
+procedure TfrmDCSumm.popSummMemoPreviewClick(Sender: TObject);
+begin
+  frmDrawers.mnuPreviewTemplateClick(Sender);
+end;
+
+procedure TfrmDCSumm.popSummMemoInsTemplateClick(Sender: TObject);
+begin
+  frmDrawers.mnuInsertTemplateClick(Sender);
+end;
+
+
+{Returns True & Displays a Message if Currently No D/C Summary is Selected,
+ Otherwise returns false and does not display a message.}
+function TfrmDCSumm.NoSummSelected: Boolean;
+begin
+  if lstSumms.ItemIEN <= 0 then
+  begin
+    InfoBox(TX_NOSUMM,TX_NOSUMM_CAP,MB_OK or MB_ICONWARNING);
+    Result := true;
+  end
+  else
+    Result := false;
+end;
+
+procedure TfrmDCSumm.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmDCSumm.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmDCSumm);
+  uPCEEdit := TPCEData.Create;
+  uPCEShow := TPCEData.Create;
+
+finalization
+  uPCEEdit.Free;
+  uPCEShow.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSummProps.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSummProps.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSummProps.dfm	(revision 1676)
@@ -0,0 +1,403 @@
+inherited frmDCSummProperties: TfrmDCSummProperties
+  Left = 298
+  Top = 186
+  BorderIcons = []
+  Caption = 'Discharge Summary Properties'
+  ClientHeight = 437
+  ClientWidth = 498
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnShow = FormShow
+  ExplicitWidth = 506
+  ExplicitHeight = 471
+  PixelsPerInch = 96
+  TextHeight = 13
+  object bvlConsult: TBevel [0]
+    Tag = 1
+    Left = 6
+    Top = 119
+    Width = 483
+    Height = 2
+  end
+  object pnlFields: TORAutoPanel [1]
+    Left = 0
+    Top = 0
+    Width = 498
+    Height = 218
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblNewTitle: TLabel
+      Left = 7
+      Top = 15
+      Width = 120
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Discharge Summary Title:'
+    end
+    object lblDateTime: TLabel
+      Left = 28
+      Top = 141
+      Width = 99
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Dictation Date/Time:'
+    end
+    object lblAuthor: TLabel
+      Left = 51
+      Top = 167
+      Width = 76
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Author/Dictator:'
+    end
+    object lblCosigner: TLabel
+      Left = 31
+      Top = 194
+      Width = 96
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Attending Physician:'
+    end
+    object cboNewTitle: TORComboBox
+      Left = 148
+      Top = 11
+      Width = 347
+      Height = 118
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Discharge Summary Title:'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnChange = cboNewTitleChange
+      OnDblClick = cboNewTitleDblClick
+      OnDropDownClose = cboNewTitleDropDownClose
+      OnEnter = cboNewTitleEnter
+      OnExit = cboNewTitleExit
+      OnMouseClick = cboNewTitleMouseClick
+      OnNeedData = cboNewTitleNeedData
+      CharsNeedMatch = 1
+    end
+    object calSumm: TORDateBox
+      Left = 148
+      Top = 138
+      Width = 140
+      Height = 21
+      TabOrder = 1
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Dictation Date/Time:'
+    end
+    object cboAuthor: TORComboBox
+      Left = 148
+      Top = 164
+      Width = 239
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Author/Dictator:'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,3'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnEnter = cboAuthorEnter
+      OnExit = cboAuthorExit
+      OnMouseClick = cboAuthorMouseClick
+      OnNeedData = cboAuthorNeedData
+      CharsNeedMatch = 1
+    end
+    object cboAttending: TORComboBox
+      Left = 148
+      Top = 191
+      Width = 239
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Attending Physician:'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,3'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 3
+      OnExit = cboAttendingExit
+      OnNeedData = cboAttendingNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdOK: TButton
+      Left = 411
+      Top = 165
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 4
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 411
+      Top = 190
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 5
+      OnClick = cmdCancelClick
+    end
+  end
+  object pnlTranscription: TORAutoPanel [2]
+    Left = 0
+    Top = 218
+    Width = 498
+    Height = 63
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object lblTranscriptionist: TLabel
+      Left = 53
+      Top = 13
+      Width = 71
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Transcriptionist'
+    end
+    object lblUrgency: TLabel
+      Left = 84
+      Top = 38
+      Width = 40
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Urgency'
+    end
+    object cboTranscriptionist: TORComboBox
+      Left = 148
+      Top = 7
+      Width = 239
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Transcriptionist'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,3'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnNeedData = cboAuthorNeedData
+      CharsNeedMatch = 1
+    end
+    object cboUrgency: TORComboBox
+      Left = 148
+      Top = 37
+      Width = 121
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Urgency'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      CharsNeedMatch = 1
+    end
+  end
+  object pnlAdmissions: TORAutoPanel [3]
+    Left = 0
+    Top = 327
+    Width = 498
+    Height = 110
+    Align = alClient
+    AutoSize = True
+    BevelOuter = bvNone
+    TabOrder = 2
+    Visible = False
+    object lstAdmissions: TORListBox
+      Left = 0
+      Top = 0
+      Width = 498
+      Height = 110
+      Align = alClient
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Associated Admission'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '3,5,4,9'
+      TabPositions = '20'
+      OnChange = lstAdmissionsChange
+    end
+  end
+  object pnlLabels: TORAutoPanel [4]
+    Left = 0
+    Top = 281
+    Width = 498
+    Height = 46
+    Align = alTop
+    AutoSize = True
+    BevelOuter = bvNone
+    TabOrder = 3
+    Visible = False
+    DesignSize = (
+      498
+      46)
+    object lblLocation: TLabel
+      Left = 1
+      Top = 33
+      Width = 41
+      Height = 13
+      Caption = 'Location'
+    end
+    object lblDate: TLabel
+      Left = 133
+      Top = 33
+      Width = 73
+      Height = 13
+      Caption = 'Admission Date'
+    end
+    object lblType: TLabel
+      Left = 249
+      Top = 33
+      Width = 24
+      Height = 13
+      Caption = 'Type'
+    end
+    object lblSummStatus: TLabel
+      Left = 336
+      Top = 33
+      Width = 127
+      Height = 13
+      Caption = 'Discharge Summary Status'
+    end
+    object lblDCSumm1: TStaticText
+      Tag = 1
+      Left = 81
+      Top = 0
+      Width = 300
+      Height = 17
+      Anchors = []
+      Caption = 'This discharge summary must be associated with an admission.'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 0
+    end
+    object lblDCSumm2: TStaticText
+      Tag = 1
+      Left = 120
+      Top = 14
+      Width = 207
+      Height = 17
+      Anchors = []
+      Caption = 'Select one of the following or press cancel.'
+      TabOrder = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = cboNewTitle'
+        'Status = stsDefault')
+      (
+        'Component = calSumm'
+        'Status = stsDefault')
+      (
+        'Component = cboAuthor'
+        'Status = stsDefault')
+      (
+        'Component = cboAttending'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlTranscription'
+        'Status = stsDefault')
+      (
+        'Component = cboTranscriptionist'
+        'Status = stsDefault')
+      (
+        'Component = cboUrgency'
+        'Status = stsDefault')
+      (
+        'Component = pnlAdmissions'
+        'Status = stsDefault')
+      (
+        'Component = lstAdmissions'
+        'Status = stsDefault')
+      (
+        'Component = pnlLabels'
+        'Status = stsDefault')
+      (
+        'Component = lblDCSumm1'
+        'Status = stsDefault')
+      (
+        'Component = lblDCSumm2'
+        'Status = stsDefault')
+      (
+        'Component = frmDCSummProperties'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSummProps.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSummProps.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDCSummProps.pas	(revision 1676)
@@ -0,0 +1,576 @@
+unit fDCSummProps;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORDtTm, ORCtrls, ExtCtrls, uConst, rTIU, rDCSumm, uDocTree, uDCSumm,
+  uTIU, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmDCSummProperties = class(TfrmBase508Form)
+    bvlConsult: TBevel;
+    pnlFields: TORAutoPanel;
+    lblNewTitle: TLabel;
+    lblDateTime: TLabel;
+    lblAuthor: TLabel;
+    lblCosigner: TLabel;
+    cboNewTitle: TORComboBox;
+    calSumm: TORDateBox;
+    cboAuthor: TORComboBox;
+    cboAttending: TORComboBox;
+    pnlTranscription: TORAutoPanel;
+    lblTranscriptionist: TLabel;
+    lblUrgency: TLabel;
+    cboTranscriptionist: TORComboBox;
+    cboUrgency: TORComboBox;
+    pnlAdmissions: TORAutoPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pnlLabels: TORAutoPanel;
+    lblDCSumm1: TStaticText;
+    lblDCSumm2: TStaticText;
+    lblLocation: TLabel;
+    lblDate: TLabel;
+    lblType: TLabel;
+    lblSummStatus: TLabel;
+    lstAdmissions: TORListBox;
+    procedure FormShow(Sender: TObject);
+    procedure cboNewTitleNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboAuthorNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboAttendingNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboNewTitleExit(Sender: TObject);
+    procedure cboNewTitleMouseClick(Sender: TObject);
+    procedure cboNewTitleEnter(Sender: TObject);
+    procedure cboAttendingExit(Sender: TObject);
+    procedure cboAuthorExit(Sender: TObject);
+    procedure cboAuthorMouseClick(Sender: TObject);
+    procedure cboAuthorEnter(Sender: TObject);
+    procedure cboNewTitleDropDownClose(Sender: TObject);
+    procedure lstAdmissionsChange(Sender: TObject);
+    procedure cboNewTitleDblClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cboNewTitleChange(Sender: TObject);
+  private
+    FCosignIEN: Int64;      // store cosigner that was passed in
+    FCosignName: string;    // store cosigner that was passed in
+    FDocType: Integer;      // store document type that was passed in
+    FAddend: Integer;       // store IEN of note being addended (if make addendum)
+    FLastAuthor: Int64;     // set by mouseclick to avoid redundant call on exit
+    FLastTitle: Integer;    // set by mouseclick to avoid redundant call on exit
+    FAdmitDateTime: string  ;
+    FLocation: integer;
+    FLocationName: string;
+    FVisitStr: string;
+    FEditIEN: integer;
+    //FFixCursor: Boolean;    // to fix the problem where the list box is an I-bar
+    FLastCosigner: Int64;      // holds cosigner from previous note (for defaulting)
+    FLastCosignerName: string; // holds cosigner from previous note (for defaulting)
+    FShowAdmissions: Boolean;
+    FIDNoteTitlesOnly: boolean;
+    procedure SetCosignerRequired;
+    procedure ShowAdmissionList;
+    procedure UMDelayEvent(var Message: TMessage); message UM_DELAYEVENT;
+  public
+    { Public declarations }
+  end;
+
+function ExecuteDCSummProperties(var ASumm: TEditDCSummRec; var ListBoxItem: string; ShowAdmissions, IDNoteTitlesOnly: boolean): Boolean;
+
+var
+  EditLines: TStringList;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, uCore, rCore, uPCE, rPCE, rMisc;
+{ Initial values in ASumm
+
+                  Title  Type    Author  DateTime  Cosigner  Location  Consult  NeedCPT
+     New DCSumm    dflt   244      DUZ      NOW      dflt      Encnt      0        ?
+    Edit DCSumm    ien    244      ien     DtTm       ien       ien      ien      fld
+  Addend DCSumm    ien     81      DUZ      NOW        0        N/A      N/A?      no
+
+  New Summ - setup as much as possible, then call ExecuteDCSummProperties if necessary.
+
+}
+
+const
+  TC_REQ_FIELDS   = 'Required Information';
+  TX_REQ_TITLE    = CRLF + 'A title must be selected.';
+  TX_REQ_AUTHOR   = CRLF + 'The author of the note must be identified.';
+  TX_REQ_REFDATE  = CRLF + 'A valid date/time for the note must be entered.';
+  TX_REQ_COSIGNER = CRLF + 'An attending must be identified.';
+  TX_NO_FUTURE    = CRLF + 'A reference date/time in the future is not allowed.';
+  TX_COS_SELF     = CRLF + 'You cannot make yourself a cosigner.';
+  TX_COS_AUTH     = CRLF + ' is not authorized to cosign this document.';
+  TX_BAD_ADMISSION = CRLF + 'Admission information is missing or invalid.';
+  TX_NO_ADMISSION  = CRLF + 'An admission must be selected';
+  TX_NO_MORE_SUMMS = CRLF + 'Only one discharge summary may be written for each admission.';
+  TC_NO_EDIT       = 'Unable to Edit';
+  TC_EDIT_EXISTING = 'Unsigned document in progress';
+  TX_EDIT_EXISTING = 'Would you like to continue editing the existing unsigned summary for this admission?';
+
+function ExecuteDCSummProperties(var ASumm: TEditDCSummRec; var ListBoxItem: string; ShowAdmissions, IDNoteTitlesOnly: boolean): Boolean;
+var
+  frmDCSummProperties: TfrmDCSummProperties;
+  x: string;
+begin
+  frmDCSummProperties := TfrmDCSummProperties.Create(Application);
+  EditLines := TStringList.Create;
+  try
+    ResizeAnchoredFormToFont(frmDCSummProperties);
+    with frmDCSummProperties do
+    begin
+      // setup common fields (title, reference date, author)
+      FShowAdmissions := ShowAdmissions;
+      FIDNoteTitlesOnly := IDNoteTitlesOnly;
+      pnlTranscription.Visible := False;    {was never used on old form}
+      if not pnlTranscription.Visible then
+        begin
+          Height := Height - pnlTranscription.Height;
+          Top := Top  - pnlTranscription.Height;
+        end;
+//      Height := Height - pnlAdmissions.Height - pnlLabels.Height;
+      if ASumm.DocType <> TYP_ADDENDUM then
+        begin
+          cboNewTitle.InitLongList('');
+          ListDCSummTitlesShort(cboNewTitle.Items);
+        end
+      else //if addendum
+        cboNewTitle.Items.Insert(0, IntToStr(ASumm.Title) + U + ASumm.TitleName);
+      if ASumm.Title > 0 then cboNewTitle.SelectByIEN(ASumm.Title);
+      if (ASumm.Title > 0) and (cboNewTitle.ItemIndex < 0)
+        then cboNewTitle.SetExactByIEN(ASumm.Title, ASumm.TitleName);
+      cboAuthor.InitLongList(ASumm.DictatorName);
+      if ASumm.Dictator > 0 then cboAuthor.SelectByIEN(ASumm.Dictator);
+      FastAssign(LoadDCUrgencies, cboUrgency.Items);
+      cboUrgency.SelectByID('R');
+      if Asumm.Attending = 0 then
+        begin
+          ASumm.Attending  := FLastCosigner;
+          ASumm.AttendingName := FLastCosignerName;
+        end;
+      calSumm.FMDateTime := ASumm.DictDateTime;
+      if FShowAdmissions then ShowAdmissionList;
+      FAddend     := ASumm.Addend;
+      FDocType    := ASumm.DocType;
+      FLastCosigner     := ASumm.LastCosigner;
+      FLastCosignerName := ASumm.LastCosignerName;
+      FEditIEN    := 0;
+      cboAttending.InitLongList(ASumm.AttendingName);
+      if ASumm.Attending > 0 then cboAttending.SelectByIEN(ASumm.Attending);
+      // restrict edit of title if addendum
+      if FDocType = TYP_ADDENDUM then
+      begin
+        lblNewTitle.Caption := 'Addendum to:';
+        cboNewTitle.Caption := 'Addendum to:';
+        cboNewTitle.Enabled := False;
+        cboNewTitle.Color   := clBtnFace;
+      end;
+      Result := ShowModal = idOK;                // display the form
+      if Result then with ASumm do
+        begin
+          if FDocType <> TYP_ADDENDUM then
+          begin
+            Title := cboNewTitle.ItemIEN;
+            TitleName := PrintNameForTitle(Title);
+          end;
+          Urgency           := cboUrgency.ItemID;
+          DictDateTime      := calSumm.FMDateTime;
+          Dictator          := cboAuthor.ItemIEN;
+          DictatorName      := Piece(cboAuthor.Items[cboAuthor.ItemIndex], U, 2);
+          Attending         := cboAttending.ItemIEN;
+          AttendingName     := Piece(cboAttending.Items[cboAttending.ItemIndex], U, 2);
+          if Attending = Dictator then Cosigner := 0 else
+            begin
+              Cosigner      := cboAttending.ItemIEN;
+              CosignerName  := Piece(cboAttending.Items[cboAttending.ItemIndex], U, 2);
+              // The LastCosigner fields are used to default the cosigner in subsequent notes.
+              // These fields are not reset with new notes & not passed into TIU.
+              LastCosigner :=  Cosigner;
+              LastCosignerName := CosignerName;
+            end;
+          Transcriptionist  := cboTranscriptionist.ItemIEN;
+          if FShowAdmissions then
+            begin
+              AdmitDateTime   := StrToFMDateTime(FAdmitDateTime);
+              DischargeDateTime := StrToFMDateTime(GetDischargeDate(Patient.DFN, FAdmitDateTime));
+              if DischargeDateTime <= 0 then DischargeDateTime := FMNow;
+              Location          := FLocation;
+              LocationName      := FLocationName;
+              VisitStr          := IntToStr(Location) + ';' + FloatToStr(AdmitDateTime) + ';H' ;
+            end;
+          EditIEN           := FEditIEN;
+          if FEditIEN > 0 then
+            begin
+              x := GetTIUListItem(FEditIEN);
+              ListBoxItem := x;
+              if Lines = nil then Lines := TStringList.Create;
+              FastAssign(EditLines, Lines);
+            end
+          else
+            begin
+              ListBoxItem := '';
+            end;
+        end;
+          // The following fields in TEditDCSummRec are not set:
+          //   DocType, NeedCPT, Lines (unless editing an existing summary)
+    end;
+  finally
+    EditLines.Free;
+    frmDCSummProperties.Release;
+  end;
+end;
+
+{ Form events }
+
+procedure TfrmDCSummProperties.FormShow(Sender: TObject);
+begin
+  SetFormPosition(Self);
+  //if cboNewTitle.Text = '' then PostMessage(Handle, UM_DELAYEVENT, 0, 0);
+end;
+
+procedure TfrmDCSummProperties.UMDelayEvent(var Message: TMessage);
+{ let the window finish displaying before dropping list box, otherwise listbox drop
+  in the design position rather then new windows position (ORCtrls bug?) }
+begin
+(*  Screen.Cursor := crArrow;
+  FFixCursor := TRUE;
+  cboNewTitle.DroppedDown := True;
+  lblDateTime.Visible := False;
+  lblAuthor.Visible   := False;
+  lblCosigner.Visible := False;*)
+end;
+
+{ General calls }
+
+procedure TfrmDCSummProperties.SetCosignerRequired;
+{ called initially & whenever title or author changes }
+begin
+(*  if FDocType = TYP_ADDENDUM then
+  begin
+    lblCosigner.Visible := AskCosignerForDocument(FAddend, cboAuthor.ItemIEN)
+  end else
+  begin
+    if cboNewTitle.ItemIEN = 0
+      then lblCosigner.Visible := AskCosignerForTitle(FDocType,            cboAuthor.ItemIEN)
+      else lblCosigner.Visible := AskCosignerForTitle(cboNewTitle.ItemIEN, cboAuthor.ItemIEN);
+  end;*)
+  lblCosigner.Visible := True;
+  cboAttending.Visible := lblCosigner.Visible;
+end;
+
+procedure TfrmDCSummProperties.ShowAdmissionList;
+var
+  i, Status: integer;
+  x: string;
+begin
+  with lstAdmissions do
+    begin
+      ListAdmitAll(Items, Patient.DFN);
+      if Items.Count > 0 then
+        begin
+          for i := 0 to Items.Count-1 do
+            begin
+              x := Items[i];
+              SetPiece(x, '^', 8, FormatFMDateTimeStr('mmm dd,yyyy  hh:nn', Piece(Items[i],U,1)));
+              Status := StrToIntDef(Piece(Items[i],U,7),0);
+              case Status of
+                0: x := x + '^None on file';
+                1: x := x + '^Completed';
+                2: x := x + '^Unsigned';
+              end;
+              Items[i] := x;
+            end;
+        end
+      else
+        FAdmitDateTime := '-1^No admissions were found for this patient.';
+    end;
+end;
+
+{ cboNewTitle events }
+
+procedure TfrmDCSummProperties.cboNewTitleNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  cboNewTitle.ForDataUse(SubSetOfDCSummTitles(StartFrom, Direction, FIDNoteTitlesOnly));
+end;
+
+procedure TfrmDCSummProperties.cboNewTitleEnter(Sender: TObject);
+begin
+  FLastTitle := 0;
+end;
+
+procedure TfrmDCSummProperties.cboNewTitleMouseClick(Sender: TObject);
+begin
+  with cboNewTitle do
+    if (ItemIEN > 0) and (ItemIEN = FLastTitle) then Exit
+    else if ItemIEN = 0 then
+      begin
+        if FLastTitle > 0 then SelectByIEN(FLastTitle)
+        else ItemIndex := -1;
+        Exit;
+      end;
+  SetCosignerRequired;
+  if FShowAdmissions and (not pnlAdmissions.Visible) then
+    begin
+//      Height := Height + pnlAdmissions.Height + pnlLabels.Height;
+      pnlAdmissions.Visible := True;
+      pnlLabels.Visible := True;
+    end;
+  FLastTitle := cboNewTitle.ItemIEN;
+end;
+
+procedure TfrmDCSummProperties.cboNewTitleExit(Sender: TObject);
+begin
+  if cboNewTitle.ItemIEN <> FLastTitle then cboNewTitleMouseClick(Self);
+end;
+
+{ cboAuthor & cboAttending events }
+
+procedure TfrmDCSummProperties.cboAuthorNeedData(Sender: TObject; const StartFrom: String;
+  Direction, InsertAt: Integer);
+begin
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmDCSummProperties.cboAttendingNeedData(Sender: TObject; const StartFrom: String;
+  Direction, InsertAt: Integer);
+var TitleIEN: Int64;
+begin
+//  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+
+// CQ#11666
+//  (Sender as TORComboBox).ForDataUse(SubSetOfCosigners(StartFrom, Direction,
+//        FMToday, cboNewTitle.ItemIEN, FDocType));
+
+// CQ #17218 - Updated to properly filter co-signers - JCS
+  TitleIEN := cboNewTitle.ItemIEN;
+  if TitleIEN = 0 then TitleIEN := FDocType;
+
+  (Sender as TORComboBox).ForDataUse(SubSetOfCosigners(StartFrom, Direction,
+        FMToday, TitleIEN, 0));
+end;
+
+procedure TfrmDCSummProperties.cboAuthorEnter(Sender: TObject);
+begin
+  FLastAuthor := 0;
+end;
+
+procedure TfrmDCSummProperties.cboAuthorMouseClick(Sender: TObject);
+begin
+  SetCosignerRequired;
+  FLastAuthor := cboAuthor.ItemIEN;
+end;
+
+procedure TfrmDCSummProperties.cboAuthorExit(Sender: TObject);
+begin
+  if cboAuthor.ItemIEN <> FLastAuthor then cboAuthorMouseClick(Self);
+end;
+
+procedure TfrmDCSummProperties.cboAttendingExit(Sender: TObject);
+{ make sure FCosign fields stay up to date in case SetCosigner gets called again }
+begin
+  with cboAttending do if Text = '' then ItemIndex := -1;
+  if cboAttending.ItemIndex < 0 then
+  begin
+    FCosignIEN := 0;
+    FCosignName := '';
+  end
+  else
+  begin
+    FCosignIEN := cboAttending.ItemIEN;
+    FCosignName := Piece(cboAttending.Items[cboAttending.ItemIndex], U, 2);
+  end;
+end;
+
+{ Command Button events }
+
+procedure TfrmDCSummProperties.cmdOKClick(Sender: TObject);
+var
+  ErrMsg, x, WhyNot: string;
+begin
+  cmdOK.SetFocus;                                // make sure cbo exit events fire
+  Application.ProcessMessages;
+  SetCosignerRequired;
+  ErrMsg := '';
+  if cboNewTitle.ItemIEN = 0 then
+    ErrMsg := ErrMsg + TX_REQ_TITLE
+  else if FIDNoteTitlesOnly and (not CanTitleBeIDChild(cboNewTitle.ItemIEN, WhyNot)) then
+    ErrMsg := ErrMsg + CRLF + WhyNot;
+  if cboAuthor.ItemIEN = 0   then ErrMsg := ErrMsg + TX_REQ_AUTHOR;
+  if not calSumm.IsValid     then ErrMsg := ErrMsg + TX_REQ_REFDATE;
+  if calSumm.IsValid and (calSumm.FMDateTime > FMNow)    then ErrMsg := ErrMsg + TX_NO_FUTURE;
+  if cboAttending.Visible and (cboAttending.ItemIEN = 0)   then ErrMsg := ErrMsg + TX_REQ_COSIGNER;
+  //if cboAttending.ItemIEN = User.DUZ                      then ErrMsg := TX_COS_SELF;
+
+// --------------------------------- REPLACED THIS BLOCK IN V27.37-----------------------------------------------
+/// if (cboAttending.ItemIEN > 0) and not IsUserAProvider(cboAttending.ItemIEN, FMNow) then
+//  //if (cboAttending.ItemIEN > 0) and not CanCosign(cboNewTitle.ItemIEN, FDocType, cboAttending.ItemIEN) then
+//   ErrMsg := cboAttending.Text + TX_COS_AUTH;
+// ------------------------------------ NEW CODE FOLLOWS --------------------------------------------------------
+  if (cboAttending.ItemIEN > 0) then
+     if ((not IsUserAUSRProvider(cboAttending.ItemIEN, FMNow)) or
+        (not CanCosign(cboNewTitle.ItemIEN, FDocType, cboAttending.ItemIEN, calSumm.FMDateTime))) then
+     ErrMsg := cboAttending.Text + TX_COS_AUTH;
+// -----------------------------------END OF NEW REPLACEMENT CODE -----------------------------------------------
+
+  if pnlAdmissions.Visible then
+  with lstAdmissions do
+  begin
+    if ItemIndex < 0 then
+      ErrMsg := TX_NO_ADMISSION
+    else if (Piece(x, U, 7) = '1') then
+      begin
+        x := Items[ItemIndex];
+        FVisitStr := Piece(x, U, 2) + ';' + Piece(x, U, 1) + ';H';
+        if (OneNotePerVisit(cboNewTitle.ItemIEN, Patient.DFN, FVisitStr)) then
+          begin
+            FEditIEN := 0;
+            InfoBox(TX_NO_MORE_SUMMS, TC_NO_EDIT, MB_OK);
+            lstAdmissions.ItemIndex := -1;
+          end;
+      end
+    else
+      begin
+        x := Items[ItemIndex];
+        FAdmitDateTime := Piece(x,U,1);
+        FLocation := StrToIntDef(Piece(x, U, 2), 0);
+        if (MakeFMDateTime(FAdmitDateTime)= -1) or (FLocation = 0)  then
+          ErrMsg := TX_BAD_ADMISSION
+        else
+          FLocationName := ExternalName(FLocation, 44);
+      end;
+  end;
+
+  if ShowMsgOn(Length(ErrMsg) > 0, ErrMsg, TC_REQ_FIELDS)
+    then Exit
+    else ModalResult := mrOK;
+end;
+
+procedure TfrmDCSummProperties.cmdCancelClick(Sender: TObject);
+begin
+  ModalResult := mrCancel;
+  Close;
+end;
+
+procedure TfrmDCSummProperties.cboNewTitleDropDownClose(Sender: TObject);
+begin
+(*  if FFixCursor then
+  begin
+    Screen.Cursor := crDefault;
+    FFixCursor := FALSE;
+  end;
+  lblDateTime.Visible := True;
+  lblAuthor.Visible   := True;
+  lblCosigner.Visible := True;*)
+end;
+
+procedure TfrmDCSummProperties.lstAdmissionsChange(Sender: TObject);
+var
+  x: string;
+  AnEditSumm: TEditDCSummRec;
+  ActionSts: TActionRec;
+begin
+  if lstAdmissions.ItemIndex < 0 then Exit;
+  x := lstAdmissions.Items[lstAdmissions.ItemIndex];
+  if (StrToIntDef(Piece(x, U, 7), 0) = 2) then
+    begin
+      { Prompt for edit first - proceed as below if yes, else proceed as if '1'}
+      if InfoBox(TX_EDIT_EXISTING, TC_EDIT_EXISTING, MB_YESNO) = MRYES then
+      begin
+        FillChar(AnEditSumm, SizeOf(AnEditSumm), 0);
+        FEditIEN := StrToInt(Piece(x,U,6));
+        ActOnDCDocument(ActionSts, FEditIEN, 'EDIT RECORD');
+        if not ActionSts.Success then
+        begin
+          InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+          lstAdmissions.ItemIndex := -1;
+          Exit;
+        end;
+        GetDCSummForEdit(AnEditSumm, FEditIEN);
+        EditLines.Assign(AnEditSumm.Lines);
+        cboNewTitle.InitLongList(AnEditSumm.TitleName);
+        ListDCSummTitlesShort(cboNewTitle.Items);
+        if AnEditSumm.Title > 0 then cboNewTitle.SelectByIEN(AnEditSumm.Title);
+        cboAuthor.InitLongList(AnEditSumm.DictatorName);
+        if AnEditSumm.Dictator > 0 then cboAuthor.SelectByIEN(AnEditSumm.Dictator);
+        FastAssign(LoadDCUrgencies, cboUrgency.Items);
+        cboUrgency.SelectByID('R');
+        cboAttending.InitLongList(AnEditSumm.AttendingName);
+        if AnEditSumm.Attending > 0 then cboAttending.SelectByIEN(AnEditSumm.Attending);
+        calSumm.FMDateTime := AnEditSumm.DictDateTime;
+      end
+      else // if user answers NO to edit existing document, can new one be created?
+        begin
+          FVisitStr := Piece(x, U, 2) + ';' + Piece(x, U, 1) + ';H';
+          if (OneNotePerVisit(cboNewTitle.ItemIEN, Patient.DFN, FVisitStr)) then
+          begin
+            FEditIEN := 0;
+            InfoBox(TX_NO_MORE_SUMMS, TC_NO_EDIT, MB_OK);
+            lstAdmissions.ItemIndex := -1;
+          end;
+        end;
+    end
+  else if Piece(x, U, 7) = '1' then
+    begin
+      FVisitStr := Piece(x, U, 2) + ';' + Piece(x, U, 1) + ';H';
+      if (OneNotePerVisit(cboNewTitle.ItemIEN, Patient.DFN, FVisitStr)) then
+      begin
+        FEditIEN := 0;
+        InfoBox(TX_NO_MORE_SUMMS, TC_NO_EDIT, MB_OK);
+        lstAdmissions.ItemIndex := -1;
+      end;
+    end
+  else
+    begin
+      FEditIEN := 0;
+(*      cboNewTitle.ItemIndex := -1;
+      cboAttending.ItemIndex := -1;
+      calSumm.FMDateTime := FMNow;*)
+    end;
+end;
+
+procedure TfrmDCSummProperties.cboNewTitleChange(Sender: TObject);
+var
+  IEN: Int64;
+  name: string;
+  Index: Integer;
+
+begin
+  inherited;
+  index := cboAttending.ItemIndex;
+  if index >= 0 then
+  begin
+    IEN := cboAttending.ItemIEN;
+    name := cboAttending.DisplayText[index];
+  end
+  else
+  begin
+    name := '';
+    IEN := 0;
+  end;
+  cboAttending.InitLongList(name);
+  if index >= 0 then
+    cboAttending.SelectByIEN(IEN);
+end;
+
+procedure TfrmDCSummProperties.cboNewTitleDblClick(Sender: TObject);
+begin
+  cmdOKClick(Self);
+end;
+
+procedure TfrmDCSummProperties.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDateRange.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDateRange.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDateRange.dfm	(revision 1676)
@@ -0,0 +1,97 @@
+inherited frmDateRange: TfrmDateRange
+  Left = 460
+  Top = 262
+  Caption = 'Date Range'
+  ClientHeight = 132
+  ClientWidth = 274
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 282
+  ExplicitHeight = 159
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblStart: TLabel [0]
+    Left = 8
+    Top = 44
+    Width = 53
+    Height = 13
+    Caption = 'Begin Date'
+  end
+  object lblStop: TLabel [1]
+    Left = 145
+    Top = 44
+    Width = 45
+    Height = 13
+    Caption = 'End Date'
+  end
+  object lblInstruct: TOROffsetLabel [2]
+    Left = 0
+    Top = 0
+    Width = 274
+    Height = 37
+    Align = alTop
+    Caption = 'Select a date range -'
+    HorzOffset = 8
+    Transparent = False
+    VertOffset = 8
+    WordWrap = True
+  end
+  object txtStart: TORDateBox [3]
+    Left = 8
+    Top = 58
+    Width = 121
+    Height = 21
+    TabOrder = 0
+    DateOnly = False
+    RequireTime = False
+    Caption = 'Begin Date'
+  end
+  object txtStop: TORDateBox [4]
+    Left = 145
+    Top = 58
+    Width = 121
+    Height = 21
+    TabOrder = 1
+    DateOnly = False
+    RequireTime = False
+    Caption = 'End Date'
+  end
+  object cmdOK: TButton [5]
+    Left = 114
+    Top = 103
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [6]
+    Left = 194
+    Top = 103
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtStart'
+        'Status = stsDefault')
+      (
+        'Component = txtStop'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmDateRange'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDateRange.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDateRange.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDateRange.pas	(revision 1676)
@@ -0,0 +1,118 @@
+unit fDateRange;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORCtrls, StdCtrls, ORFn, ORDtTm, VA508AccessibilityManager;
+
+type
+  TfrmDateRange = class(TfrmAutoSz)
+    txtStart: TORDateBox;
+    txtStop: TORDateBox;
+    lblStart: TLabel;
+    lblStop: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblInstruct: TOROffsetLabel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    OKPressed: Boolean;
+    Flags: string;
+  end;
+
+function ExecuteDateRange(var Start, Stop: string; const AFlag, ATitle, Instruct,
+  StartLabel, StopLabel: string): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore;
+
+const
+  TX_INVALID_DATE = 'The date/time entered could not be validated.';
+  TC_INVALID_DATE = 'Unable to interpret date/time entry.';
+
+function ExecuteDateRange(var Start, Stop: string; const AFlag, ATitle, Instruct,
+  StartLabel, StopLabel: string): Boolean;
+var
+  frmDateRange: TfrmDateRange;
+begin
+  Result := False;
+  frmDateRange := TfrmDateRange.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmDateRange));
+    with frmDateRange do
+    begin
+      if Flags      <> '' then Flags := AFlag;
+      if ATitle     <> '' then Caption := ATitle;
+      if Instruct   <> '' then lblInstruct.Caption := Instruct;
+      if StartLabel <> '' then lblStart.Caption := StartLabel;
+      if StopLabel  <> '' then lblStop.Caption := StopLabel;
+      txtStart.Text := Start;
+      txtStop.Text  := Stop;
+      ShowModal;
+      if OKPressed then
+      begin
+        Start := txtStart.Text;
+        Stop  := txtStop.Text;
+        Result := True;
+      end;
+    end;
+  finally
+    frmDateRange.Release;
+  end;
+end;
+
+procedure TfrmDateRange.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmDateRange.cmdOKClick(Sender: TObject);
+const
+  TX_BAD_START   = 'The start date is not valid.';
+  TX_BAD_STOP    = 'The stop date is not valid.';
+  TX_STOPSTART   = 'The stop date must be after the start date.';
+var
+  x, ErrMsg: string;
+begin
+  inherited;
+  ErrMsg := '';
+  txtStart.Validate(x);
+  if Length(x) > 0   then ErrMsg := ErrMsg + TX_BAD_START + CRLF;
+  with txtStop do
+  begin
+    Validate(x);
+    if Length(x) > 0 then ErrMsg := ErrMsg + TX_BAD_STOP + CRLF;
+    if (Length(Text) > 0) and (FMDateTime <= txtStart.FMDateTime)
+                     then ErrMsg := ErrMsg + TX_STOPSTART;
+  end;
+  if Length(ErrMsg) > 0 then
+  begin
+    InfoBox(ErrMsg, TC_INVALID_DATE, MB_OK);
+    Exit;
+  end;
+
+//  if ((Length(txtStart.Text) > 0) and (ValidDateTimeStr(txtStart.Text, Flags) < 0))
+//  or ((Length(txtStop.Text)  > 0) and (ValidDateTimeStr(txtStop.Text, Flags)  < 0)) then
+//  begin
+//    InfoBox(TX_INVALID_DATE, TC_INVALID_DATE, MB_OK);
+//    Exit;
+//  end;
+
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmDateRange.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDefaultEvent.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDefaultEvent.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDefaultEvent.dfm	(revision 1676)
@@ -0,0 +1,107 @@
+inherited frmDefaultEvent: TfrmDefaultEvent
+  Left = 311
+  Top = 193
+  BorderStyle = bsSingle
+  Caption = 'Set/Change Default Release Event'
+  ClientHeight = 317
+  ClientWidth = 394
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 394
+    Height = 25
+    Align = alTop
+    TabOrder = 0
+    object lblCaption: TLabel
+      Left = 1
+      Top = 1
+      Width = 363
+      Height = 13
+      Align = alClient
+      Caption = 
+        ' Select an event from the following list as your personal defaul' +
+        't release event:'
+      WordWrap = True
+    end
+  end
+  object cboEvents: TORComboBox [1]
+    Left = 0
+    Top = 25
+    Width = 394
+    Height = 261
+    Style = orcsSimple
+    Align = alClient
+    AutoSelect = False
+    Caption = 
+      ' Select an event from the following list as your personal defaul' +
+      't release event:'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '9'
+    ShowHint = True
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 1
+    CheckEntireLine = True
+    CharsNeedMatch = 1
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 286
+    Width = 394
+    Height = 31
+    Align = alBottom
+    TabOrder = 2
+    object btnOK: TButton
+      Left = 212
+      Top = 6
+      Width = 75
+      Height = 20
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 296
+      Top = 6
+      Width = 75
+      Height = 20
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = cboEvents'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmDefaultEvent'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDefaultEvent.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDefaultEvent.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDefaultEvent.pas	(revision 1676)
@@ -0,0 +1,131 @@
+unit fDefaultEvent;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, rOrders, ORFn, uCore, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmDefaultEvent = class(TfrmBase508Form)
+    pnlTop: TPanel;
+    lblCaption: TLabel;
+    cboEvents: TORComboBox;
+    pnlBottom: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+  private
+    OKPressed: boolean;
+    FDefaultEvtName:    string;
+    FPreDefaultEvtID:   string;
+    FPreDefaultEvtName: string;
+  public
+    { Public declarations }
+  end;
+
+function ExcueteDefaultEvntSetting: string;
+
+var
+  frmDefaultEvent: TfrmDefaultEvent;
+
+implementation
+
+uses VAUtils;
+
+{$R *.DFM}
+
+function ExcueteDefaultEvntSetting: string;
+var
+  frmDefaultEvent: TfrmDefaultEvent;
+begin
+  frmDefaultEvent := TfrmDefaultEvent.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmDefaultEvent);
+    frmDefaultEvent.ShowModal;
+    Result := frmDefaultEvent.FDefaultEvtName;
+  finally
+    frmDefaultEvent.Free;
+  end;
+end;
+
+procedure TfrmDefaultEvent.btnCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmDefaultEvent.FormCreate(Sender: TObject);
+var
+  i : integer;
+begin
+  FPreDefaultEvtID    := '';
+  FPreDefaultEvtName  := '';
+  FDefaultEvtName     := '';
+  FPreDefaultEvtID := GetDefaultEvt(IntToStr(User.DUZ));
+  ListSpecialtiesED(#0,cboEvents.Items);
+  with cboEvents do
+  begin
+    for i := 0 to Items.Count - 1 do
+    begin
+      if FPreDefaultEvtID = Piece(Items[i],'^',1) then
+      begin
+        ItemIndex := i;
+        FPreDefaultEvtName := Piece(Items[i],'^',9);
+        if Length(FPreDefaultEvtName)<1 then
+          FPreDefaultEvtName := Piece(Items[i],'^',2);
+        break;
+      end;
+    end;
+  end;
+  OKPressed := False;
+end;
+
+procedure TfrmDefaultEvent.btnOKClick(Sender: TObject);
+const
+  TXT_1 = 'Would you like to change the default event from "';
+  TXT_2 = '" to "';
+  TXT_3 = 'Would you like set your default event to "';
+var
+  errMsg: string;
+begin
+  if cboEvents.ItemIndex < 0 then
+  begin
+    ShowMsg('You have to select an event first!');
+    Exit;
+  end;
+  if (Piece(cboEvents.Items[cboEvents.ItemIndex],'^',1) <> FPreDefaultEvtID) and ( Length(FPreDefaultEvtID)>0 )then
+  begin
+    if InfoBox(TXT_1 + FPreDefaultEvtName + TXT_2 + cboEvents.Text + '"?','Warning', MB_OKCANCEL or MB_ICONWARNING) = IDOK then
+    begin
+      errMsg := '';
+      SetDefaultEvent(errMsg, Piece(cboEvents.Items[cboEvents.ItemIndex],'^',1));
+      if length(errMsg)>0 then
+        ShowMsg(errMsg)
+      else
+        ShowMsg('The default release event "' + cboEvents.Text + '" has been set successfully!');
+      FDefaultEvtName := cboEvents.Text;
+      OKPressed := True;
+      Close;
+    end;
+  end
+  else if (Piece(cboEvents.Items[cboEvents.ItemIndex],'^',1) <> FPreDefaultEvtID) and ( Length(FPreDefaultEvtID)=0 )then
+  begin
+    if InfoBox(TXT_3 + cboEvents.Text + '"?','Warning', MB_OKCANCEL or MB_ICONWARNING) = IDOK then
+    begin
+      errMsg := '';
+      SetDefaultEvent(errMsg, Piece(cboEvents.Items[cboEvents.ItemIndex],'^',1));
+      if length(errMsg)>0 then
+        ShowMsg(errMsg)
+      else
+        ShowMsg('The default release event "' + cboEvents.Text + '" has been set successfully!');
+     FDefaultEvtName := cboEvents.Text;
+     OKPressed := True;
+     Close;
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDeviceSelect.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDeviceSelect.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDeviceSelect.dfm	(revision 1676)
@@ -0,0 +1,165 @@
+inherited frmDeviceSelect: TfrmDeviceSelect
+  Left = 378
+  Top = 340
+  Caption = 'Orders Print Device Selection'
+  ClientHeight = 235
+  ClientWidth = 415
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  ExplicitWidth = 423
+  ExplicitHeight = 262
+  PixelsPerInch = 96
+  TextHeight = 13
+  object grpDevice: TGroupBox [0]
+    Left = 0
+    Top = 0
+    Width = 415
+    Height = 194
+    Align = alClient
+    Caption = 'Device'
+    TabOrder = 0
+    object cboDevice: TORComboBox
+      Left = 2
+      Top = 15
+      Width = 411
+      Height = 145
+      Style = orcsSimple
+      Align = alClient
+      AutoSelect = True
+      Caption = 'Device'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,4'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '30'
+      TabOrder = 0
+      OnChange = cboDeviceChange
+      OnNeedData = cboDeviceNeedData
+      CharsNeedMatch = 1
+    end
+    object pnlGBBottom: TPanel
+      Left = 2
+      Top = 160
+      Width = 411
+      Height = 32
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 1
+      object lblMargin: TLabel
+        Left = 8
+        Top = 12
+        Width = 60
+        Height = 13
+        Caption = 'Right Margin'
+      end
+      object lblLength: TLabel
+        Left = 120
+        Top = 12
+        Width = 61
+        Height = 13
+        Caption = 'Page Length'
+      end
+      object txtRightMargin: TMaskEdit
+        Left = 72
+        Top = 6
+        Width = 33
+        Height = 19
+        AutoSize = False
+        EditMask = '99999;0; '
+        MaxLength = 5
+        TabOrder = 0
+      end
+      object txtPageLength: TMaskEdit
+        Left = 184
+        Top = 6
+        Width = 34
+        Height = 19
+        AutoSize = False
+        EditMask = '99999;0; '
+        MaxLength = 5
+        TabOrder = 1
+      end
+    end
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 194
+    Width = 415
+    Height = 41
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    object cmdOK: TButton
+      Left = 257
+      Top = 11
+      Width = 72
+      Height = 22
+      Caption = 'OK'
+      Default = True
+      TabOrder = 0
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 337
+      Top = 11
+      Width = 72
+      Height = 22
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+    object chkDefault: TCheckBox
+      Left = 12
+      Top = 16
+      Width = 163
+      Height = 17
+      Caption = 'Save as user'#39's default printer'
+      TabOrder = 2
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = grpDevice'
+        'Status = stsDefault')
+      (
+        'Component = cboDevice'
+        'Status = stsDefault')
+      (
+        'Component = pnlGBBottom'
+        'Status = stsDefault')
+      (
+        'Component = txtRightMargin'
+        'Status = stsDefault')
+      (
+        'Component = txtPageLength'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = chkDefault'
+        'Status = stsDefault')
+      (
+        'Component = frmDeviceSelect'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDeviceSelect.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDeviceSelect.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDeviceSelect.pas	(revision 1676)
@@ -0,0 +1,162 @@
+unit fDeviceSelect;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, fAutoSz, ORCtrls, ORNet, Mask, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmDeviceSelect = class(TfrmAutoSz)
+    grpDevice: TGroupBox;
+    cboDevice: TORComboBox;
+    pnlBottom: TPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    chkDefault: TCheckBox;
+    pnlGBBottom: TPanel;
+    lblMargin: TLabel;
+    txtRightMargin: TMaskEdit;
+    lblLength: TLabel;
+    txtPageLength: TMaskEdit;
+    procedure cboDeviceChange(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboDeviceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+  private
+    FWinPrint: Boolean;
+  end;
+
+var
+  frmDeviceSelect: TfrmDeviceSelect;
+  ADevice: string;
+
+function SelectDevice(Sender: TObject; ALocation: integer; AllowWindowsPrinter: boolean; ACaption: String): string ;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rCore, uCore, rReports, Printers, fFrame, rMisc;
+
+const
+  TX_NODEVICE = 'A device must be selected to print, or press ''Cancel'' to not print.';
+  TX_NODEVICE_CAP = 'Device Not Selected';
+  TX_ERR_CAP = 'Print Error';
+
+function SelectDevice(Sender: TObject; ALocation: integer; AllowWindowsPrinter: boolean; ACaption: String): string ;
+{ displays a form that prompts for a device}
+var
+  frmDeviceSelect: TfrmDeviceSelect;
+  DefPrt: string;
+begin
+  frmDeviceSelect := TfrmDeviceSelect.Create(Application);
+  try
+    with frmDeviceSelect do
+      begin
+        FWinPrint := AllowWindowsPrinter;
+        with cboDevice do
+          begin
+            if (FWinPrint) and (Printer.Printers.Count > 0) then
+              begin
+                Items.Add('WIN;Windows Printer^Windows Printer');
+                Items.Add('^--------------------VistA Printers----------------------');
+              end;
+          end;
+        if Sender <> frmFrame then
+          begin
+            DefPrt := User.CurrentPrinter;
+            if DefPrt = '' then DefPrt := GetDefaultPrinter(User.Duz, Encounter.Location);
+            if DefPrt <> '' then
+              begin
+                if (not FWinPrint) then
+                  begin
+                    if (DefPrt <> 'WIN;Windows Printer') then
+                      begin
+                        cboDevice.InitLongList(Piece(DefPrt, ';', 2));
+                        cboDevice.SelectByID(DefPrt);
+                      end
+                    else
+                      cboDevice.InitLongList('');
+                  end
+                else if FWinprint then
+                  begin
+                    cboDevice.InitLongList(Piece(DefPrt, ';', 2));
+                    cboDevice.SelectByID(DefPrt);
+                  end;
+                  end
+              else
+              begin
+                cboDevice.InitLongList('');
+              end;
+           if ACaption<>'' then frmDeviceSelect.Caption:=ACaption;
+          end
+         else
+          begin
+            frmDeviceSelect.Caption := 'Print Device Selection';
+            cboDevice.InitLongList('');
+          end;
+        ShowModal;
+        Result := ADevice;
+        //Result := Piece(ADevice, ';', 1) + U + Piece(ADevice, U, 2);
+      end;
+  finally
+    frmDeviceSelect.Release;
+  end;
+end;
+
+procedure TfrmDeviceSelect.cboDeviceChange(Sender: TObject);
+begin
+inherited;
+  with cboDevice do if ItemIndex > -1 then
+  begin
+    txtRightMargin.Text := Piece(Items[ItemIndex], '^', 4);
+    txtPageLength.Text := Piece(Items[ItemIndex], '^', 5);
+  end;
+end;
+
+procedure TfrmDeviceSelect.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  if cboDevice.ItemID = '' then
+  begin
+    InfoBox(TX_NODEVICE, TX_NODEVICE_CAP, MB_OK);
+    Exit;
+  end;
+  ADevice := cboDevice.Items[cboDevice.ItemIndex];
+  if chkDefault.Checked then SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
+  Close;
+end;
+
+procedure TfrmDeviceSelect.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  ADevice := '';
+  Close;
+end;
+
+procedure TfrmDeviceSelect.cboDeviceNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboDevice.ForDataUse(SubsetOfDevices(StartFrom, Direction));
+end;
+
+procedure TfrmDeviceSelect.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmDeviceSelect.FormCreate(Sender: TObject);
+begin
+  inherited;
+  ResizeFormToFont(Self);
+  SetFormPosition(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDrawers.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDrawers.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDrawers.dfm	(revision 1676)
@@ -0,0 +1,492 @@
+inherited frmDrawers: TfrmDrawers
+  Left = 285
+  Top = 335
+  BorderStyle = bsNone
+  Caption = 'frmDrawers'
+  ClientHeight = 365
+  ClientWidth = 189
+  OnCanResize = FormCanResize
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  ExplicitLeft = 285
+  ExplicitTop = 335
+  ExplicitWidth = 197
+  ExplicitHeight = 399
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlRemindersButton: TKeyClickPanel [0]
+    Left = 0
+    Top = 193
+    Width = 189
+    Height = 22
+    Align = alTop
+    BevelOuter = bvNone
+    Caption = 'Reminders'
+    TabOrder = 4
+    TabStop = True
+    OnClick = sbRemindersClick
+    OnEnter = pnlTemplatesButtonEnter
+    OnExit = pnlTemplatesButtonExit
+    object sbReminders: TORAlignSpeedButton
+      Left = 0
+      Top = 0
+      Width = 189
+      Height = 22
+      Align = alClient
+      AllowAllUp = True
+      GroupIndex = 1
+      Caption = 'Reminders'
+      Glyph.Data = {
+        3E010000424D3E010000000000007600000028000000280000000A0000000100
+        040000000000C800000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
+        888888888888888888888888888888887788888888FF88888888FF88888888FF
+        88888888F7888888887F888888887F888888880F8888888F877888888778F888
+        888788F888888078F888888F887888888788F888888788F888888078F88888F8
+        8877888877888F888878888F888807888F8888F88887888878888F888878888F
+        888807888F888F8888877887788888F887888888F880788888F88FFFFFFF7887
+        777777F887777777F880000000F8888888888888888888888888888888888888
+        8888}
+      Margin = 60
+      NumGlyphs = 4
+      Spacing = 2
+      OnClick = sbRemindersClick
+      OnResize = sbResize
+    end
+  end
+  object pnlEncounterButton: TKeyClickPanel [1]
+    Left = 0
+    Top = 107
+    Width = 189
+    Height = 22
+    Align = alTop
+    BevelOuter = bvNone
+    Caption = 'Encounter'
+    TabOrder = 2
+    TabStop = True
+    OnClick = sbEncounterClick
+    OnEnter = pnlTemplatesButtonEnter
+    OnExit = pnlTemplatesButtonExit
+    object sbEncounter: TORAlignSpeedButton
+      Left = 0
+      Top = 0
+      Width = 189
+      Height = 22
+      Align = alClient
+      AllowAllUp = True
+      GroupIndex = 1
+      Caption = 'Encounter'
+      Glyph.Data = {
+        3E010000424D3E010000000000007600000028000000280000000A0000000100
+        040000000000C800000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
+        888888888888888888888888888888887788888888FF88888888FF88888888FF
+        88888888F7888888887F888888887F888888880F8888888F877888888778F888
+        888788F888888078F888888F887888888788F888888788F888888078F88888F8
+        8877888877888F888878888F888807888F8888F88887888878888F888878888F
+        888807888F888F8888877887788888F887888888F880788888F88FFFFFFF7887
+        777777F887777777F880000000F8888888888888888888888888888888888888
+        8888}
+      Margin = 60
+      NumGlyphs = 4
+      Spacing = 2
+      OnClick = sbEncounterClick
+      OnResize = sbResize
+    end
+  end
+  object pnlTemplatesButton: TKeyClickPanel [2]
+    Left = 0
+    Top = 0
+    Width = 189
+    Height = 22
+    Align = alTop
+    BevelOuter = bvNone
+    Caption = 'Templates'
+    TabOrder = 0
+    TabStop = True
+    OnClick = sbTemplatesClick
+    OnEnter = pnlTemplatesButtonEnter
+    OnExit = pnlTemplatesButtonExit
+    object sbTemplates: TORAlignSpeedButton
+      Left = 0
+      Top = 0
+      Width = 189
+      Height = 22
+      Align = alClient
+      AllowAllUp = True
+      GroupIndex = 1
+      Caption = 'Templates'
+      Glyph.Data = {
+        3E010000424D3E010000000000007600000028000000280000000A0000000100
+        040000000000C800000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
+        888888888888888888888888888888887788888888FF88888888FF88888888FF
+        88888888F7888888887F888888887F888888880F8888888F877888888778F888
+        888788F888888078F888888F887888888788F888888788F888888078F88888F8
+        8877888877888F888878888F888807888F8888F88887888878888F888878888F
+        888807888F888F8888877887788888F887888888F880788888F88FFFFFFF7887
+        777777F887777777F880000000F8888888888888888888888888888888888888
+        8888}
+      Margin = 60
+      NumGlyphs = 4
+      PopupMenu = popTemplates
+      Spacing = 2
+      OnClick = sbTemplatesClick
+      OnResize = sbResize
+      ExplicitTop = -6
+    end
+  end
+  object pnlOrdersButton: TKeyClickPanel [3]
+    Left = 0
+    Top = 279
+    Width = 189
+    Height = 22
+    Align = alTop
+    BevelOuter = bvNone
+    Caption = 'Orders'
+    TabOrder = 6
+    TabStop = True
+    OnClick = sbOrdersClick
+    OnEnter = pnlTemplatesButtonEnter
+    OnExit = pnlTemplatesButtonExit
+    object sbOrders: TORAlignSpeedButton
+      Left = 0
+      Top = 0
+      Width = 189
+      Height = 22
+      Align = alClient
+      AllowAllUp = True
+      GroupIndex = 1
+      Caption = 'Orders'
+      Glyph.Data = {
+        3E010000424D3E010000000000007600000028000000280000000A0000000100
+        040000000000C800000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
+        888888888888888888888888888888887788888888FF88888888FF88888888FF
+        88888888F7888888887F888888887F888888880F8888888F877888888778F888
+        888788F888888078F888888F887888888788F888888788F888888078F88888F8
+        8877888877888F888878888F888807888F8888F88887888878888F888878888F
+        888807888F888F8888877887788888F887888888F880788888F88FFFFFFF7887
+        777777F887777777F880000000F8888888888888888888888888888888888888
+        8888}
+      Margin = 60
+      NumGlyphs = 4
+      Spacing = 11
+      OnClick = sbOrdersClick
+      OnResize = sbResize
+    end
+  end
+  object lbOrders: TORListBox [4]
+    Left = 0
+    Top = 301
+    Width = 189
+    Height = 64
+    Align = alTop
+    ItemHeight = 13
+    Items.Strings = (
+      'Orders')
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 7
+    Visible = False
+    Caption = 'Orders'
+    ItemTipColor = clWindow
+    LongList = False
+  end
+  object lbEncounter: TORListBox [5]
+    Left = 0
+    Top = 129
+    Width = 189
+    Height = 64
+    Align = alTop
+    ItemHeight = 13
+    Items.Strings = (
+      'Encounter')
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 3
+    Visible = False
+    Caption = 'Encounter'
+    ItemTipColor = clWindow
+    LongList = False
+  end
+  object pnlTemplates: TPanel [6]
+    Left = 0
+    Top = 22
+    Width = 189
+    Height = 85
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object tvTemplates: TORTreeView
+      Left = 0
+      Top = 38
+      Width = 189
+      Height = 47
+      Align = alClient
+      DragMode = dmAutomatic
+      HideSelection = False
+      Images = dmodShared.imgTemplates
+      Indent = 19
+      ParentShowHint = False
+      PopupMenu = popTemplates
+      ReadOnly = True
+      RightClickSelect = True
+      ShowHint = False
+      TabOrder = 1
+      OnClick = tvTemplatesClick
+      OnCollapsing = tvTemplatesCollapsing
+      OnDblClick = tvTemplatesDblClick
+      OnExpanding = tvTemplatesExpanding
+      OnGetImageIndex = tvTemplatesGetImageIndex
+      OnGetSelectedIndex = tvTemplatesGetSelectedIndex
+      OnKeyDown = tvTemplatesKeyDown
+      OnKeyUp = tvTemplatesKeyUp
+      Caption = 'Templates'
+      NodePiece = 2
+      OnDragging = tvTemplatesDragging
+    end
+    object pnlTemplateSearch: TPanel
+      Left = 0
+      Top = 0
+      Width = 189
+      Height = 38
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      OnResize = pnlTemplateSearchResize
+      DesignSize = (
+        189
+        38)
+      object btnFind: TORAlignButton
+        Left = 134
+        Top = 0
+        Width = 55
+        Height = 21
+        Hint = 'Find Template'
+        Anchors = [akTop, akRight]
+        Caption = 'Find'
+        ParentShowHint = False
+        PopupMenu = popTemplates
+        ShowHint = True
+        TabOrder = 1
+        OnClick = btnFindClick
+      end
+      object edtSearch: TCaptionEdit
+        Left = 0
+        Top = 0
+        Width = 134
+        Height = 21
+        Anchors = [akLeft, akTop, akRight]
+        TabOrder = 0
+        OnChange = edtSearchChange
+        OnEnter = edtSearchEnter
+        OnExit = edtSearchExit
+        Caption = 'Text to find'
+      end
+      object cbMatchCase: TCheckBox
+        Left = 0
+        Top = 21
+        Width = 80
+        Height = 17
+        Caption = 'Match Case'
+        TabOrder = 2
+        OnClick = cbFindOptionClick
+      end
+      object cbWholeWords: TCheckBox
+        Left = 80
+        Top = 21
+        Width = 109
+        Height = 17
+        Caption = 'Whole Words Only'
+        TabOrder = 3
+        OnClick = cbFindOptionClick
+      end
+    end
+  end
+  object tvReminders: TORTreeView [7]
+    Left = 0
+    Top = 215
+    Width = 189
+    Height = 64
+    HelpContext = 11300
+    Align = alTop
+    HideSelection = False
+    Images = dmodShared.imgReminders
+    Indent = 23
+    ReadOnly = True
+    RightClickSelect = True
+    StateImages = dmodShared.imgReminders
+    TabOrder = 5
+    OnCollapsed = tvRemindersCurListChanged
+    OnExpanded = tvRemindersCurListChanged
+    OnKeyDown = tvRemindersKeyDown
+    OnMouseUp = tvRemindersMouseUp
+    Caption = 'Reminders'
+    NodePiece = 0
+    OnNodeCaptioning = tvRemindersNodeCaptioning
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 72
+    Top = 72
+    Data = (
+      (
+        'Component = pnlRemindersButton'
+        'Status = stsDefault')
+      (
+        'Component = pnlEncounterButton'
+        'Status = stsDefault')
+      (
+        'Component = pnlTemplatesButton'
+        'Status = stsDefault')
+      (
+        'Component = pnlOrdersButton'
+        'Status = stsDefault')
+      (
+        'Component = lbOrders'
+        'Status = stsDefault')
+      (
+        'Component = lbEncounter'
+        'Status = stsDefault')
+      (
+        'Component = pnlTemplates'
+        'Status = stsDefault')
+      (
+        'Component = tvTemplates'
+        'Status = stsDefault')
+      (
+        'Component = pnlTemplateSearch'
+        'Status = stsDefault')
+      (
+        'Component = btnFind'
+        'Status = stsDefault')
+      (
+        'Component = edtSearch'
+        'Status = stsDefault')
+      (
+        'Component = cbMatchCase'
+        'Status = stsDefault')
+      (
+        'Component = cbWholeWords'
+        'Status = stsDefault')
+      (
+        'Component = tvReminders'
+        'Status = stsDefault')
+      (
+        'Component = frmDrawers'
+        'Status = stsDefault'))
+  end
+  object popTemplates: TPopupMenu
+    OnPopup = popTemplatesPopup
+    Left = 8
+    Top = 70
+    object mnuCopyTemplate: TMenuItem
+      Caption = 'Copy Template Text'
+      ShortCut = 16451
+      OnClick = mnuCopyTemplateClick
+    end
+    object mnuInsertTemplate: TMenuItem
+      Caption = '&Insert Template'
+      ShortCut = 16429
+      OnClick = mnuInsertTemplateClick
+    end
+    object mnuPreviewTemplate: TMenuItem
+      Caption = '&Preview/Print Template'
+      ShortCut = 16471
+      OnClick = mnuPreviewTemplateClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object mnuGotoDefault: TMenuItem
+      Caption = '&Goto Default'
+      ShortCut = 16455
+      OnClick = mnuGotoDefaultClick
+    end
+    object mnuDefault: TMenuItem
+      Caption = '&Mark as Default'
+      ShortCut = 16416
+      OnClick = mnuDefaultClick
+    end
+    object N3: TMenuItem
+      Caption = '-'
+    end
+    object mnuViewNotes: TMenuItem
+      Caption = '&View Template Notes'
+      ShortCut = 16470
+      OnClick = mnuViewNotesClick
+    end
+    object N4: TMenuItem
+      Caption = '-'
+    end
+    object mnuFindTemplates: TMenuItem
+      Caption = '&Find Templates'
+      ShortCut = 16454
+      OnClick = mnuFindTemplatesClick
+    end
+    object mnuCollapseTree: TMenuItem
+      Caption = '&Collapse Tree'
+      OnClick = mnuCollapseTreeClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object mnuEditTemplates: TMenuItem
+      Caption = '&Edit Templates'
+      OnClick = mnuEditTemplatesClick
+    end
+    object mnuNewTemplate: TMenuItem
+      Caption = 'Create &New Template'
+      OnClick = mnuNewTemplateClick
+    end
+    object N5: TMenuItem
+      Caption = '-'
+    end
+    object mnuViewTemplateIconLegend: TMenuItem
+      Caption = 'Template Icon Legend'
+      OnClick = mnuViewTemplateIconLegendClick
+    end
+  end
+  object fldAccessTemplates: TVA508ComponentAccessibility
+    Component = pnlTemplatesButton
+    OnStateQuery = fldAccessTemplatesStateQuery
+    OnInstructionsQuery = fldAccessTemplatesInstructionsQuery
+    ComponentName = 'Drawer'
+    Left = 104
+    Top = 72
+  end
+  object fldAccessReminders: TVA508ComponentAccessibility
+    Component = pnlRemindersButton
+    OnStateQuery = fldAccessRemindersStateQuery
+    OnInstructionsQuery = fldAccessRemindersInstructionsQuery
+    ComponentName = 'Drawer'
+    Left = 128
+    Top = 232
+  end
+  object imgLblReminders: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvReminders
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblReminders
+    Left = 96
+    Top = 232
+  end
+  object imgLblTemplates: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvTemplates
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblHealthFactorLabels
+    Left = 136
+    Top = 72
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDrawers.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDrawers.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDrawers.pas	(revision 1676)
@@ -0,0 +1,1584 @@
+unit fDrawers;
+{
+bugs noticed:
+  if delete only note (currently editing) then drawers and encounter button still enabled
+}
+//vw mod for template callup. Checks in test  4/15/07
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, Buttons, ORCtrls, ComCtrls, ImgList, uTemplates,
+  Menus, ORClasses, ORFn, fBase508Form, VA508AccessibilityManager,
+  VA508ImageListLabeler;
+
+type
+  TDrawer = (odNone, odTemplates, odEncounter, odReminders, odOrders);
+  TDrawers = set of TDrawer;
+
+  TfrmDrawers = class(TfrmBase508Form)
+    lbOrders: TORListBox;
+    sbOrders: TORAlignSpeedButton;
+    sbReminders: TORAlignSpeedButton;
+    sbEncounter: TORAlignSpeedButton;
+    sbTemplates: TORAlignSpeedButton;
+    pnlOrdersButton: TKeyClickPanel;
+    pnlRemindersButton: TKeyClickPanel;
+    pnlEncounterButton: TKeyClickPanel;
+    pnlTemplatesButton: TKeyClickPanel;
+    lbEncounter: TORListBox;
+    popTemplates: TPopupMenu;
+    mnuPreviewTemplate: TMenuItem;
+    pnlTemplates: TPanel;
+    tvTemplates: TORTreeView;
+    N1: TMenuItem;
+    mnuCollapseTree: TMenuItem;
+    N2: TMenuItem;
+    mnuEditTemplates: TMenuItem;
+    pnlTemplateSearch: TPanel;
+    btnFind: TORAlignButton;
+    edtSearch: TCaptionEdit;
+    mnuFindTemplates: TMenuItem;
+    mnuNewTemplate: TMenuItem;
+    cbMatchCase: TCheckBox;
+    cbWholeWords: TCheckBox;
+    mnuInsertTemplate: TMenuItem;
+    tvReminders: TORTreeView;
+    mnuDefault: TMenuItem;
+    N3: TMenuItem;
+    mnuGotoDefault: TMenuItem;
+    N4: TMenuItem;
+    mnuViewNotes: TMenuItem;
+    mnuCopyTemplate: TMenuItem;
+    N5: TMenuItem;
+    mnuViewTemplateIconLegend: TMenuItem;
+    fldAccessTemplates: TVA508ComponentAccessibility;
+    fldAccessReminders: TVA508ComponentAccessibility;
+    imgLblReminders: TVA508ImageListLabeler;
+    imgLblTemplates: TVA508ImageListLabeler;
+    procedure FormCanResize(Sender: TObject; var NewWidth,
+      NewHeight: Integer; var Resize: Boolean);
+    procedure FormResize(Sender: TObject);
+    procedure sbTemplatesClick(Sender: TObject);
+    procedure sbEncounterClick(Sender: TObject);
+    procedure sbRemindersClick(Sender: TObject);
+    procedure sbOrdersClick(Sender: TObject);
+    procedure sbResize(Sender: TObject);
+    procedure tvTemplatesGetImageIndex(Sender: TObject; Node: TTreeNode);
+    procedure tvTemplatesGetSelectedIndex(Sender: TObject;
+      Node: TTreeNode);
+    procedure tvTemplatesExpanding(Sender: TObject; Node: TTreeNode;
+      var AllowExpansion: Boolean);
+    procedure tvTemplatesClick(Sender: TObject);
+    procedure tvTemplatesDblClick(Sender: TObject);
+    procedure tvTemplatesCollapsing(Sender: TObject; Node: TTreeNode;
+      var AllowCollapse: Boolean);
+    procedure tvTemplatesKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure tvTemplatesKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure popTemplatesPopup(Sender: TObject);
+    procedure mnuPreviewTemplateClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure mnuCollapseTreeClick(Sender: TObject);
+    procedure btnFindClick(Sender: TObject);
+    procedure edtSearchChange(Sender: TObject);
+    procedure ToggleMenuItem(Sender: TObject);
+    procedure edtSearchEnter(Sender: TObject);
+    procedure edtSearchExit(Sender: TObject);
+    procedure mnuFindTemplatesClick(Sender: TObject);
+    procedure tvTemplatesDragging(Sender: TObject; Node: TTreeNode;
+      var CanDrag: Boolean);
+    procedure mnuEditTemplatesClick(Sender: TObject);
+    procedure mnuNewTemplateClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure pnlTemplateSearchResize(Sender: TObject);
+    procedure cbFindOptionClick(Sender: TObject);
+    procedure mnuInsertTemplateClick(Sender: TObject);
+    procedure tvRemindersMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure tvRemindersCurListChanged(Sender: TObject; Node: TTreeNode);
+    procedure mnuDefaultClick(Sender: TObject);
+    procedure mnuGotoDefaultClick(Sender: TObject);
+    procedure mnuViewNotesClick(Sender: TObject);
+    procedure mnuCopyTemplateClick(Sender: TObject);
+    procedure mnuViewTemplateIconLegendClick(Sender: TObject);
+    procedure pnlTemplatesButtonEnter(Sender: TObject);
+    procedure pnlTemplatesButtonExit(Sender: TObject);
+    procedure tvRemindersKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure tvRemindersNodeCaptioning(Sender: TObject;
+      var Caption: String);
+    procedure fldAccessTemplatesStateQuery(Sender: TObject; var Text: string);
+    procedure fldAccessTemplatesInstructionsQuery(Sender: TObject;
+      var Text: string);
+    procedure fldAccessRemindersInstructionsQuery(Sender: TObject;
+      var Text: string);
+    procedure fldAccessRemindersStateQuery(Sender: TObject; var Text: string);
+  private
+    FOpenToNode: string;
+    FOldMouseUp: TMouseEvent;
+    FEmptyNodeCount: integer;
+    FOldDragDrop: TDragDropEvent;
+    FOldDragOver: TDragOverEvent;
+    FOldFontChanged: TNotifyEvent;
+    FTextIconWidth: integer;
+    FInternalResize: integer;
+    FHoldResize: integer;
+    FOpenDrawer: TDrawer;
+    FLastOpenSize: integer;
+    FButtonHeights: integer;
+    FInternalExpand :boolean;
+    FInternalHiddenExpand :boolean;
+    FAsk :boolean;
+    FAskExp :boolean;
+    FAskNode :TTreeNode;
+    FDragNode :TTreeNode;
+    FClickOccurred: boolean;
+    FRichEditControl: TRichEdit;
+    FFindNext: boolean;
+    FLastFoundNode: TTreeNode;
+    FSplitter: TSplitter;
+    FOldCanResize: TCanResizeEvent;
+    FSplitterActive: boolean;
+    FHasPersonalTemplates: boolean;
+    FRemNotifyList: TORNotifyList;
+    FDefTempPiece: integer;
+    FNewNoteButton: TButton;
+    FCurrentVisibleDrawers: TDrawers;
+    FCurrentEnabledDrawers: TDrawers;
+    function GetAlign: TAlign;
+    procedure SetAlign(const Value: TAlign);
+    function MinDrawerControlHeight: integer;
+    procedure DisableArrowKeyMove(Sender: TObject);
+  protected
+    procedure PositionToReminder(Sender: TObject);
+    procedure RemindersChanged(Sender: TObject);
+    procedure SetFindNext(const Value: boolean);
+    procedure ReloadTemplates;
+    procedure SetRichEditControl(const Value: TRichEdit);
+    procedure CheckAsk;
+    procedure FontChanged(Sender: TObject);
+    procedure InitButtons;
+    procedure StartInternalResize;
+    procedure EndInternalResize;
+    procedure ResizeToVisible;
+    function ButtonHeights: integer;
+    procedure GetDrawerControls(Drawer: TDrawer;
+                                var Btn: TORAlignSpeedButton;
+                                var Ctrl: TWinControl);
+    procedure AddTemplateNode(const tmpl: TTemplate; const Owner: TTreeNode = nil);
+    procedure MoveCaret(X, Y: integer);
+    procedure NewRECDragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure NewRECDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
+                             var Accept: Boolean);
+    procedure InsertText;
+    procedure SetSplitter(const Value: TSplitter);
+    procedure SplitterCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
+    procedure SetSplitterActive(Active: boolean);
+    function EnableDrawer(Drawer: TDrawer; EnableIt: boolean): boolean;
+    function InsertOK(Ask: boolean): boolean;
+    procedure OpenToNode(Path: string = '');
+    property FindNext: boolean read FFindNext write SetFindNext;
+  public
+    constructor CreateDrawers(AOwner: TComponent; AParent: TWinControl;
+                              VisibleDrawers, EnabledDrawers: TDrawers);
+    procedure ExternalReloadTemplates;
+    procedure OpenDrawer(Drawer: TDrawer);
+    procedure ToggleDrawer(Drawer: TDrawer);
+    procedure ShowDrawers(Drawers: TDrawers);
+    procedure EnableDrawers(Drawers: TDrawers);
+    procedure DisplayDrawers(Show: Boolean); overload;
+    procedure DisplayDrawers(Show: Boolean; AEnable, ADisplay: TDrawers); overload;
+    function CanEditTemplates: boolean;
+    function CanEditShared: boolean;
+    procedure UpdatePersonalTemplates;
+    procedure NotifyWhenRemTreeChanges(Proc: TNotifyEvent);
+    procedure RemoveNotifyWhenRemTreeChanges(Proc: TNotifyEvent);
+    procedure ResetTemplates;
+    property RichEditControl: TRichEdit read FRichEditControl write SetRichEditControl;
+    property NewNoteButton: TButton read FNewNoteButton write FNewNoteButton;
+    property Splitter: TSplitter read FSplitter write SetSplitter;
+    property HasPersonalTemplates: boolean read FHasPersonalTemplates;
+    property LastOpenSize: integer read FLastOpenSize write FLastOpenSize;
+    property DefTempPiece: integer read FDefTempPiece write FDefTempPiece;
+    property TheOpenDrawer: TDrawer read FOpenDrawer;
+  published
+    property Align: TAlign read GetAlign write SetAlign;
+  end;
+
+{ There is a different instance of frmDrawers on each tab, so make the
+  frmDrawers variable local to each tab, do not use this global var! }
+//var
+  //frmDrawers: TfrmDrawers;
+
+const
+  DrawerSplitters = 'frmDrawersSplitters';
+
+implementation
+
+uses fTemplateView, uCore, rTemplates, fTemplateEditor, dShared, uReminders,
+  fReminderDialog, RichEdit, fRptBox, Clipbrd, fTemplateDialog, fIconLegend,
+  VA508AccessibilityRouter, uVA508CPRSCompatibility, VAUtils, fFindingTemplates;
+
+{$R *.DFM}
+
+const
+  BaseMinDrawerControlHeight = 24;
+  FindNextText = 'Find Next';
+
+function TfrmDrawers.MinDrawerControlHeight: integer;
+begin
+  result := ResizeHeight( BaseFont, MainFont, BaseMinDrawerControlHeight);
+end;
+
+procedure TfrmDrawers.ResizeToVisible;
+var
+  NewHeight: integer;
+  od: TDrawer;
+  Button: TORAlignSpeedButton;
+  WinCtrl: TWinControl;
+
+  procedure AllCtrls(AAlign: TAlign);
+  var
+    od: TDrawer;
+
+  begin
+    Parent.DisableAlign;
+    try
+      for od := succ(low(TDrawer)) to high(TDrawer) do
+      begin
+        GetDrawerControls(od, Button, WinCtrl);
+        Button.Parent.Align := AAlign;
+        WinCtrl.Align := AAlign;
+      end;
+    finally
+      Parent.EnableAlign;
+    end;
+  end;
+
+begin
+  if((FHoldResize = 0) and Visible) then
+  begin
+    FButtonHeights := -1; //Force re-calculate
+    NewHeight := 0;
+    AllCtrls(alNone);
+    for od := succ(low(TDrawer)) to high(TDrawer) do
+    begin
+      GetDrawerControls(od, Button, WinCtrl);
+      if(Button.Parent.Visible) then
+      begin
+        Button.Parent.Top := NewHeight;
+        inc(NewHeight, Button.Parent.Height);
+        WinCtrl.Top := NewHeight;
+        if(WinCtrl.Visible) then
+        begin
+          if(FLastOpenSize < 10) or (FLastOpenSize > (Parent.Height - 20)) then
+          begin
+            FLastOpenSize := (Parent.Height div 4) * 3;
+            dec(FLastOpenSize, ButtonHeights);
+            if(FLastOpenSize < MinDrawerControlHeight) then
+              FLastOpenSize := MinDrawerControlHeight;
+          end;
+          inc(NewHeight, FLastOpenSize);
+          WinCtrl.Height := FLastOpenSize;
+        end
+        else
+          WinCtrl.Height := 0;
+      end;
+    end;
+    AllCtrls(alTop);
+    StartInternalResize;
+    try
+      ClientHeight := NewHeight
+    finally
+      EndInternalResize;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.FormCanResize(Sender: TObject; var NewWidth,
+  NewHeight: Integer; var Resize: Boolean);
+var
+  od: TDrawer;
+  Btn: TORAlignSpeedButton;
+  Ctrl: TWinControl;
+  IsVisible: boolean;
+
+begin
+  if(FInternalResize = 0) then
+  begin
+    IsVisible := FALSE;
+    for od := succ(low(TDrawer)) to high(TDrawer) do
+    begin
+      GetDrawerControls(od, Btn, Ctrl);
+      if(Ctrl.Visible) then
+      begin
+        IsVisible := TRUE;
+        break;
+      end;
+    end;
+    if(not IsVisible) then
+      NewHeight := ButtonHeights;
+  end;
+end;
+
+function TfrmDrawers.ButtonHeights: integer;
+begin
+  if(FButtonHeights < 0) then
+  begin
+    FButtonHeights := 0;
+    if(pnlOrdersButton.Visible) then
+      inc(FButtonHeights, sbOrders.Height);
+    if(pnlRemindersButton.Visible) then
+      inc(FButtonHeights, sbReminders.Height);
+    if(pnlEncounterButton.Visible) then
+      inc(FButtonHeights, sbEncounter.Height);
+    if(pnlTemplatesButton.Visible) then
+      inc(FButtonHeights, sbTemplates.Height);
+  end;
+  Result := FButtonHeights;
+end;
+
+procedure TfrmDrawers.ShowDrawers(Drawers: TDrawers);
+var
+  od: TDrawer;
+  Btn: TORAlignSpeedButton;
+  Ctrl: TWinControl;
+  SaveLOS: integer;
+
+begin
+  if(FCurrentVisibleDrawers = []) or (Drawers <> FCurrentVisibleDrawers) then
+  begin
+    FCurrentVisibleDrawers := Drawers;
+    SaveLOS := FLastOpenSize;
+    OpenDrawer(odNone);
+    for od := succ(low(TDrawer)) to high(TDrawer) do
+    begin
+      GetDrawerControls(od, Btn, Ctrl);
+      Btn.Parent.Visible := (od in Drawers);
+      Ctrl.Visible := FALSE;
+      Ctrl.Height := 0;
+    end;
+    FButtonHeights := -1;
+    FLastOpenSize := SaveLOS;
+    ResizeToVisible;
+    if(odReminders in Drawers) then
+    begin
+      NotifyWhenRemindersChange(RemindersChanged);
+      NotifyWhenProcessingReminderChanges(PositionToReminder);
+    end
+    else
+    begin
+      RemoveNotifyRemindersChange(RemindersChanged);
+      RemoveNotifyWhenProcessingReminderChanges(PositionToReminder);
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.OpenDrawer(Drawer: TDrawer);
+var
+  Btn: TORAlignSpeedButton;
+  Ctrl: TWinControl;
+
+begin
+  if(FOpenDrawer <> Drawer) then
+  begin
+    StartInternalResize;
+    try
+      if(FOpenDrawer <> odNone) then
+      begin
+        GetDrawerControls(FOpenDrawer, Btn, Ctrl);
+        Btn.Down := FALSE;
+        with Btn.Parent as TPanel do
+          if BevelOuter = bvLowered then
+            BevelOuter := bvRaised;
+        Ctrl.Visible := FALSE;
+        Ctrl.Height := 0;
+      end;
+      if(Drawer = odNone) then
+      begin
+        FOpenDrawer := Drawer;
+        SetSplitterActive(FALSE);
+      end
+      else
+      begin
+        GetDrawerControls(Drawer, Btn, Ctrl);
+        if(Btn.Parent.Visible) and (Btn.Enabled) then
+        begin
+          SetSplitterActive(TRUE);
+          Btn.Down := TRUE;
+          with Btn.Parent as TPanel do
+            if BevelOuter = bvRaised then
+              BevelOuter := bvLowered;
+          Ctrl.Visible := TRUE;
+          FOpenDrawer := Drawer;
+        end
+        else
+          SetSplitterActive(FALSE);
+      end;
+    finally
+      EndInternalResize;
+    end;
+    ResizeToVisible;
+  end;
+end;
+
+procedure TfrmDrawers.GetDrawerControls(Drawer: TDrawer;
+  var Btn: TORAlignSpeedButton; var Ctrl: TWinControl);
+begin
+  case Drawer of
+    odTemplates:
+      begin
+        Btn  := sbTemplates;
+        Ctrl := pnlTemplates;
+      end;
+
+    odEncounter:
+      begin
+        Btn  := sbEncounter;
+        Ctrl := lbEncounter;
+      end;
+
+    odReminders:
+      begin
+        Btn  := sbReminders;
+        Ctrl := tvReminders;
+      end;
+
+    odOrders:
+      begin
+        Btn  := sbOrders;
+        Ctrl := lbOrders;
+      end;
+
+    else
+      begin
+        Btn  := nil;
+        Ctrl := nil;
+      end;
+  end;
+end;
+
+constructor TfrmDrawers.CreateDrawers(AOwner: TComponent; AParent: TWinControl;
+                VisibleDrawers, EnabledDrawers: TDrawers);
+begin
+  FInternalResize := 0;
+  StartInternalResize;
+  try
+    Create(AOwner);
+    FButtonHeights := -1;
+    FLastOpenSize := 0;
+    FOpenDrawer := odNone;
+    Parent := AParent;
+    Align := alBottom;
+    FOldFontChanged := Font.OnChange;
+    Font.OnChange := FontChanged;
+    InitButtons;
+    ShowDrawers(VisibleDrawers);
+    EnableDrawers(EnabledDrawers);
+    Show;
+  finally
+    EndInternalResize;
+  end;
+end;
+
+function TfrmDrawers.EnableDrawer(Drawer: TDrawer; EnableIt: boolean): boolean;
+var
+  Btn: TORAlignSpeedButton;
+  Ctrl: TWinControl;
+
+begin
+  inc(FHoldResize);
+  try
+    GetDrawerControls(Drawer, Btn, Ctrl);
+    Btn.Parent.Enabled := EnableIt;
+    if(Drawer = FOpenDrawer) and (not Btn.Parent.Enabled) then
+      OpenDrawer(odNone);
+  finally
+    dec(FHoldResize);
+  end;
+  ResizeToVisible;
+  Result := EnableIt;
+end;
+
+procedure TfrmDrawers.EnableDrawers(Drawers: TDrawers);
+var
+  od: TDrawer;
+
+begin
+  if(FCurrentEnabledDrawers = []) or (Drawers <> FCurrentEnabledDrawers) then
+  begin
+    FCurrentEnabledDrawers := Drawers;
+    inc(FHoldResize);
+    try
+      for od := succ(low(TDrawer)) to high(TDrawer) do
+        EnableDrawer(od, (od in Drawers));
+    finally
+      dec(FHoldResize);
+    end;
+    ResizeToVisible;
+  end;
+end;
+
+procedure TfrmDrawers.FormResize(Sender: TObject);
+begin
+  if(FInternalResize = 0) and (FOpenDrawer <> odNone) then
+  begin
+    FLastOpenSize := Height;
+    dec(FLastOpenSize, ButtonHeights);
+    if(FLastOpenSize < MinDrawerControlHeight) then
+      FLastOpenSize := MinDrawerControlHeight;
+    ResizeToVisible;
+  end;
+end;
+
+procedure TfrmDrawers.sbTemplatesClick(Sender: TObject);
+begin
+  if(FOpenDrawer <> odTemplates) then
+  begin
+    ReloadTemplates;
+    btnFind.Enabled := (edtSearch.Text <> '');
+    pnlTemplateSearch.Visible := mnuFindTemplates.Checked;
+  end;
+  ToggleDrawer(odTemplates);
+  if ScreenReaderActive then
+    pnlTemplatesButton.SetFocus;
+end;
+
+procedure TfrmDrawers.sbEncounterClick(Sender: TObject);
+begin
+  ToggleDrawer(odEncounter);
+end;
+
+procedure TfrmDrawers.sbRemindersClick(Sender: TObject);
+begin
+  if(InitialRemindersLoaded) then
+    ToggleDrawer(odReminders)
+  else
+  begin
+    StartupReminders;
+    if(GetReminderStatus = rsNone) then
+    begin
+      EnableDrawer(odReminders, FALSE);
+      sbReminders.Down := FALSE;
+      with sbReminders.Parent as TPanel do
+        if BevelOuter = bvLowered then
+          BevelOuter := bvRaised;
+    end
+    else
+      ToggleDrawer(odReminders)
+  end;
+  if ScreenReaderActive then
+    pnlRemindersButton.SetFocus;
+end;
+
+procedure TfrmDrawers.sbOrdersClick(Sender: TObject);
+begin
+  ToggleDrawer(odOrders);
+end;
+
+procedure TfrmDrawers.ToggleDrawer(Drawer: TDrawer);
+begin
+  if(Drawer = FOpenDrawer) then
+    OpenDrawer(odNone)
+  else
+    OpenDrawer(Drawer);
+end;
+
+procedure TfrmDrawers.EndInternalResize;
+begin
+  if(FInternalResize > 0) then dec(FInternalResize);
+end;
+
+procedure TfrmDrawers.StartInternalResize;
+begin
+  inc(FInternalResize);
+end;
+
+procedure TfrmDrawers.sbResize(Sender: TObject);
+var
+  Button: TORAlignSpeedButton;
+  Mar: integer; // Mar Needed because you can't assign Margin a negative value
+
+begin
+  Button := (Sender as TORAlignSpeedButton);
+  Mar := (Button.Width - FTextIconWidth) div 2;
+  if(Mar < 0) then
+    Mar := 0;
+  Button.Margin := Mar;
+end;
+
+procedure TfrmDrawers.InitButtons;
+var
+  od: TDrawer;
+  Btn: TORAlignSpeedButton;
+  Ctrl: TWinControl;
+  TmpWidth: integer;
+  TmpHeight: integer;
+  MaxHeight: integer;
+
+begin
+  StartInternalResize;
+  try
+    FTextIconWidth := 0;
+    MaxHeight := 0;
+    for od := succ(low(TDrawer)) to high(TDrawer) do
+    begin
+      GetDrawerControls(od, Btn, Ctrl);
+      TmpWidth := Canvas.TextWidth(Btn.Caption) + Btn.Spacing +
+                  (Btn.Glyph.Width div Btn.NumGlyphs) + 4;
+      if(TmpWidth > FTextIconWidth) then
+        FTextIconWidth := TmpWidth;
+      TmpHeight := Canvas.TextHeight(Btn.Caption) + 9;
+      if(TmpHeight > MaxHeight) then
+        MaxHeight := TmpHeight;
+    end;
+    if(MaxHeight > 0) then
+    begin
+      for od := succ(low(TDrawer)) to high(TDrawer) do
+      begin
+        GetDrawerControls(od, Btn, Ctrl);
+        Btn.Parent.Height := MaxHeight;
+      end;
+    end;
+    Constraints.MinWidth := FTextIconWidth;
+  finally
+    EndInternalResize;
+  end;
+  ResizeToVisible;
+end;
+
+procedure TfrmDrawers.FontChanged(Sender: TObject);
+var
+  Ht: integer;
+
+begin
+  if(assigned(FOldFontChanged)) then
+    FOldFontChanged(Sender);
+  if(FInternalResize = 0) then
+  begin
+    InitButtons;
+    ResizeToVisible;
+    btnFind.Width := Canvas.TextWidth(FindNextText) + 10;
+    btnFind.Height := edtSearch.Height;
+    btnFind.Left := pnlTemplateSearch.Width - btnFind.Width;
+    edtSearch.Width := pnlTemplateSearch.Width - btnFind.Width;
+    cbMatchCase.Width := Canvas.TextWidth(cbMatchCase.Caption)+23;
+    cbWholeWords.Width := Canvas.TextWidth(cbWholeWords.Caption)+23;
+    Ht := Canvas.TextHeight(cbMatchCase.Caption);
+    if(Ht < 17) then Ht := 17;
+    pnlTemplateSearch.Height := edtSearch.Height + Ht;
+    cbMatchCase.Height := Ht;
+    cbWholeWords.Height := Ht;
+    cbMatchCase.Top := edtSearch.Height;
+    cbWholeWords.Top := edtSearch.Height;
+    pnlTemplateSearchResize(Sender);
+  end;
+end;
+
+procedure TfrmDrawers.AddTemplateNode(const tmpl: TTemplate; const Owner: TTreeNode = nil);
+begin
+  dmodShared.AddTemplateNode(tvTemplates, FEmptyNodeCount, tmpl, FALSE, Owner);
+end;
+
+procedure TfrmDrawers.tvTemplatesGetImageIndex(Sender: TObject;
+  Node: TTreeNode);
+
+begin
+  Node.ImageIndex := dmodShared.ImgIdx(Node);
+end;
+
+procedure TfrmDrawers.tvTemplatesGetSelectedIndex(Sender: TObject;
+  Node: TTreeNode);
+begin
+//vw mod for template callup. Checks in test
+
+   //Application.MessageBox(PChar('Node='+IntToStr(Node.Index)+' tvtemplates.VertScrollPos='+IntToStr(tvTemplates.VertScrollPos)),PChar(Application.Title),MB_ICONINFORMATION);
+    sbTemplates.Caption := 'Templates '+ 'Node='+IntToStr(Node.Index)+' VertScrollPos='+IntToStr(tvTemplates.VertScrollPos) ;
+//end vw mod
+  Node.SelectedIndex := dmodShared.ImgIdx(Node);
+end;
+
+procedure TfrmDrawers.tvTemplatesExpanding(Sender: TObject;
+  Node: TTreeNode; var AllowExpansion: Boolean);
+begin
+  if(assigned(Node)) then
+  begin
+    if(Dragging) then EndDrag(FALSE);
+    if(not FInternalExpand) then
+    begin
+      if(TTemplate(Node.Data).RealType = ttGroup) then
+      begin
+        FAsk := TRUE;
+        FAskExp := TRUE;
+        AllowExpansion := FALSE;
+        FAskNode := Node;
+      end;
+    end;
+    if(AllowExpansion) then
+    begin
+      FClickOccurred := FALSE;
+      AllowExpansion := dmodShared.ExpandNode(tvTemplates, Node, FEmptyNodeCount);
+      if(FInternalHiddenExpand) then AllowExpansion := FALSE;
+    end;
+  end;
+  //vw mod for template callup. Checks in test
+
+   //Application.MessageBox(PChar('Node='+IntToStr(Node.Index)+' tvtemplates.VertScrollPos='+IntToStr(tvTemplates.VertScrollPos)),PChar(Application.Title),MB_ICONINFORMATION);
+    sbTemplates.Caption := 'Templates '+ 'Node='+IntToStr(Node.Index)+' VertScrollPos='+IntToStr(tvTemplates.VertScrollPos) ;
+  //end vw mod
+end;
+
+procedure TfrmDrawers.CheckAsk;
+begin
+  if(FAsk) then
+  begin
+    FAsk := FALSE;
+    FInternalExpand := TRUE;
+    try
+      if(FAskExp) then
+        FAskNode.Expand(FALSE)
+      else
+        FAskNode.Collapse(FALSE);
+    finally
+      FInternalExpand := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.tvTemplatesClick(Sender: TObject);
+begin
+  FClickOccurred := TRUE;
+  CheckAsk;
+end;
+
+procedure TfrmDrawers.tvTemplatesDblClick(Sender: TObject);
+begin
+  if(not FClickOccurred) then CheckAsk
+  else
+  begin
+    FAsk := FALSE;
+    if((assigned(tvTemplates.Selected)) and
+       (TTemplate(tvTemplates.Selected.Data).RealType in [ttDoc, ttGroup])) then
+      InsertText;
+  end;
+end;
+
+procedure TfrmDrawers.tvTemplatesCollapsing(Sender: TObject;
+  Node: TTreeNode; var AllowCollapse: Boolean);
+begin
+  if(assigned(Node)) then
+  begin
+    if(Dragging) then EndDrag(FALSE);
+    if(not FInternalExpand) then
+    begin
+      if(TTemplate(Node.Data).RealType = ttGroup) then
+      begin
+        FAsk := TRUE;
+        FAskExp := FALSE;
+        AllowCollapse := FALSE;
+        FAskNode := Node;
+      end;
+    end;
+    if(AllowCollapse) then
+      FClickOccurred := FALSE;
+  end;
+  //vw mod for template callup. Checks in test
+
+   //Application.MessageBox(PChar('Node='+IntToStr(Node.Index)+' tvtemplates.VertScrollPos='+IntToStr(tvTemplates.VertScrollPos)),PChar(Application.Title),MB_ICONINFORMATION);
+    sbTemplates.Caption := 'Templates '+ 'Node='+IntToStr(Node.Index)+' VertScrollPos='+IntToStr(tvTemplates.VertScrollPos) ;
+  //end vw mod
+end;
+
+procedure TfrmDrawers.tvTemplatesKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  CheckAsk;
+  case Key of
+  VK_SPACE, VK_RETURN:
+    begin
+      InsertText;
+      Key := 0;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.tvTemplatesKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  CheckAsk;
+end;
+
+procedure TfrmDrawers.SetRichEditControl(const Value: TRichEdit);
+begin
+  if(FRichEditControl <> Value) then
+  begin
+    if(assigned(FRichEditControl)) then
+    begin
+      FRichEditControl.OnDragDrop := FOldDragDrop;
+      FRichEditControl.OnDragOver := FOldDragOver;
+    end;
+    FRichEditControl := Value;
+    if(assigned(FRichEditControl)) then
+    begin
+      FOldDragDrop := FRichEditControl.OnDragDrop;
+      FOldDragOver := FRichEditControl.OnDragOver;
+      FRichEditControl.OnDragDrop := NewRECDragDrop;
+      FRichEditControl.OnDragOver := NewRECDragOver;
+    end;
+  end;
+end;
+
+
+procedure TfrmDrawers.MoveCaret(X, Y: integer);
+var
+  pt: TPoint;
+
+begin
+  FRichEditControl.SetFocus;
+  pt := Point(x, y);
+  FRichEditControl.SelStart := FRichEditControl.Perform(EM_CHARFROMPOS,0,LParam(@pt));
+end;
+
+
+procedure TfrmDrawers.NewRECDragDrop(Sender, Source: TObject; X,
+  Y: Integer);
+begin
+  if(Source = tvTemplates) then
+  begin
+    MoveCaret(X, Y);
+    InsertText;
+  end
+  else
+  if(assigned(FOldDragDrop)) then
+    FOldDragDrop(Sender, Source, X, Y);
+end;
+
+procedure TfrmDrawers.NewRECDragOver(Sender, Source: TObject; X,
+  Y: Integer; State: TDragState; var Accept: Boolean);
+
+begin
+  Accept := FALSE;
+  if(Source = tvTemplates) then
+  begin
+    if(assigned(FDragNode)) and (TTemplate(FDragNode.Data).RealType in [ttDoc, ttGroup]) then
+    begin
+      Accept := TRUE;
+      MoveCaret(X, Y);
+    end;
+  end
+  else
+  if(assigned(FOldDragOver)) then
+    FOldDragOver(Sender, Source, X, Y, State, Accept);
+end;
+
+procedure TfrmDrawers.InsertText;
+var
+  BeforeLine, AfterTop: integer;
+  txt, DocInfo: string;
+  Template: TTemplate;
+
+begin
+  DocInfo := '';
+  if InsertOK(TRUE) and (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then
+  begin
+    Template := TTemplate(tvTemplates.Selected.Data);
+    Template.TemplatePreviewMode := FALSE;
+    if Template.IsReminderDialog then
+      Template.ExecuteReminderDialog(TForm(Owner))
+    else
+    begin
+      if Template.IsCOMObject then
+        txt := Template.COMObjectText('', DocInfo)
+      else
+        txt := Template.Text;
+      if(txt <> '') then
+      begin
+        CheckBoilerplate4Fields(txt, 'Template: ' + Template.PrintName);
+        if txt <> '' then
+        begin
+          BeforeLine := SendMessage(FRichEditControl.Handle, EM_EXLINEFROMCHAR, 0, FRichEditControl.SelStart);
+          FRichEditControl.SelText := txt;
+          FRichEditControl.SetFocus;
+          SendMessage(FRichEditControl.Handle, EM_SCROLLCARET, 0, 0);
+          AfterTop := SendMessage(FRichEditControl.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+          SendMessage(FRichEditControl.Handle, EM_LINESCROLL, 0, -1 * (AfterTop - BeforeLine));
+          SpeakTextInserted;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.popTemplatesPopup(Sender: TObject);
+var
+  Node: TTreeNode;
+  ok, ok2, NodeFound: boolean;
+  Def: string;
+
+begin
+  ok := FALSE;
+  ok2 := FALSE;
+  if(FOpenDrawer = odTemplates) then
+  begin
+    Node := tvTemplates.Selected;
+    tvTemplates.Selected := Node; // This line prevents selected from changing after menu closes
+    NodeFound := (assigned(Node));
+    if(NodeFound) then
+    begin
+      with TTemplate(Node.Data) do
+      begin
+        ok := (RealType in [ttDoc, ttGroup]);
+        ok2 := ok and (not IsReminderDialog) and (not IsCOMObject);
+      end;
+    end;
+    Def := Piece(GetUserTemplateDefaults, '/', FDefTempPiece);
+    mnuGotoDefault.Enabled := (Def <> '');
+    mnuViewNotes.Enabled := NodeFound and (TTemplate(Node.Data).Description <> '');
+    mnuDefault.Enabled := NodeFound;
+    mnuDefault.Checked := NodeFound and (tvTemplates.GetNodeID(TORTreeNode(Node), 1, ';') = Def);
+  end
+  else
+  begin
+    mnuDefault.Enabled := FALSE;
+    mnuGotoDefault.Enabled := FALSE;
+    mnuViewNotes.Enabled := FALSE;
+  end;
+  mnuPreviewTemplate.Enabled := ok2;
+  mnuCopyTemplate.Enabled := ok2;
+  mnuInsertTemplate.Enabled := ok and InsertOK(FALSE);
+  mnuFindTemplates.Enabled := (FOpenDrawer = odTemplates);
+  mnuCollapseTree.Enabled := ((FOpenDrawer = odTemplates) and
+                              (dmodShared.NeedsCollapsing(tvTemplates)));
+  mnuEditTemplates.Enabled := (UserTemplateAccessLevel in [taAll, taEditor]);
+  mnuNewTemplate.Enabled := (UserTemplateAccessLevel in [taAll, taEditor]);
+end;
+
+procedure TfrmDrawers.mnuPreviewTemplateClick(Sender: TObject);
+var
+  tmpl: TTemplate;
+  txt: String;
+
+begin
+  if(assigned(tvTemplates.Selected)) then
+  begin
+    if(dmodShared.TemplateOK(tvTemplates.Selected.Data,'template preview')) then
+    begin
+      tmpl := TTemplate(tvTemplates.Selected.Data);
+      tmpl.TemplatePreviewMode := TRUE; // Prevents "Are you sure?" dialog when canceling
+      txt := tmpl.Text;
+      if(not tmpl.DialogAborted) then
+        ShowTemplateData(Self, tmpl.PrintName, txt);
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.FormDestroy(Sender: TObject);
+begin
+  dmodShared.RemoveDrawerTree(Self);
+  KillObj(@FRemNotifyList);
+end;
+
+procedure TfrmDrawers.mnuCollapseTreeClick(Sender: TObject);
+begin
+  tvTemplates.Selected := nil;
+  tvTemplates.FullCollapse;
+end;
+
+procedure TfrmDrawers.ReloadTemplates;
+begin
+  SetFindNext(FALSE);
+  LoadTemplateData;
+  if(UserTemplateAccessLevel <> taNone) and (assigned(MyTemplate)) and
+    (MyTemplate.Children in [tcActive, tcBoth]) then
+  begin
+    AddTemplateNode(MyTemplate);
+    FHasPersonalTemplates := TRUE;
+  end;
+  AddTemplateNode(RootTemplate);
+  OpenToNode;
+end;
+
+procedure TfrmDrawers.btnFindClick(Sender: TObject);
+var
+  Found, TmpNode: TTreeNode;
+  IsNext: boolean;
+
+begin
+  if(edtSearch.text <> '') then
+  begin
+    IsNext := ((FFindNext) and assigned (FLastFoundNode));
+    if IsNext then
+      TmpNode := FLastFoundNode
+    else
+      TmpNode := tvTemplates.Items.GetFirstNode;
+    FInternalExpand := TRUE;
+    FInternalHiddenExpand := TRUE;
+    try
+      Found := FindTemplate(edtSearch.Text, tvTemplates, Application.MainForm, TmpNode,
+                            IsNext, not cbMatchCase.Checked, cbWholeWords.Checked);
+    finally
+      FInternalExpand := FALSE;
+      FInternalHiddenExpand := FALSE;
+    end;
+
+    if assigned(Found) then
+    begin
+      FLastFoundNode := Found;
+      SetFindNext(TRUE);
+      FInternalExpand := TRUE;
+      try
+        tvTemplates.Selected := Found;
+      finally
+        FInternalExpand := FALSE;
+      end;
+    end;
+  end;
+  edtSearch.SetFocus;
+end;
+
+procedure TfrmDrawers.SetFindNext(const Value: boolean);
+begin
+  if(FFindNext <> Value) then
+  begin
+    FFindNext := Value;
+    if(FFindNext) then btnFind.Caption := FindNextText
+    else btnFind.Caption := 'Find';
+  end;
+end;
+
+procedure TfrmDrawers.edtSearchChange(Sender: TObject);
+begin
+  btnFind.Enabled := (edtSearch.Text <> '');
+  SetFindNext(FALSE);
+end;
+
+procedure TfrmDrawers.ToggleMenuItem(Sender: TObject);
+var
+  TmpMI: TMenuItem;
+
+begin
+  TmpMI := (Sender as TMenuItem);
+  TmpMI.Checked := not TmpMI.Checked;
+  SetFindNext(FALSE);
+  if(pnlTemplateSearch.Visible) then edtSearch.SetFocus;
+end;
+
+procedure TfrmDrawers.edtSearchEnter(Sender: TObject);
+begin
+  btnFind.Default := TRUE;
+end;
+
+procedure TfrmDrawers.edtSearchExit(Sender: TObject);
+begin
+  btnFind.Default := FALSE;
+end;
+
+procedure TfrmDrawers.mnuFindTemplatesClick(Sender: TObject);
+var
+  FindOn: boolean;
+
+begin
+  mnuFindTemplates.Checked := not mnuFindTemplates.Checked;
+  FindOn := mnuFindTemplates.Checked;
+  pnlTemplateSearch.Visible := FindOn;
+  if(FindOn) and (FOpenDrawer = odTemplates) then
+    edtSearch.SetFocus;
+end;
+
+procedure TfrmDrawers.tvTemplatesDragging(Sender: TObject; Node: TTreeNode;
+  var CanDrag: Boolean);
+
+begin
+  if(TTemplate(Node.Data).RealType in [ttDoc, ttGroup]) then
+  begin
+    FDragNode := Node;
+    CanDrag := TRUE;
+  end
+  else
+  begin
+    FDragNode := nil;
+    CanDrag := FALSE;
+  end;
+end;
+
+procedure TfrmDrawers.mnuEditTemplatesClick(Sender: TObject);
+begin
+  EditTemplates(Self);
+end;
+
+procedure TfrmDrawers.mnuNewTemplateClick(Sender: TObject);
+begin
+  EditTemplates(Self, TRUE);
+end;
+
+procedure TfrmDrawers.FormCreate(Sender: TObject);
+begin
+  dmodShared.AddDrawerTree(Self);
+  FHasPersonalTemplates := FALSE;
+end;
+
+procedure TfrmDrawers.ExternalReloadTemplates;
+begin
+  if(FOpenToNode = '') and (assigned(tvTemplates.Selected)) then
+    FOpenToNode := tvTemplates.GetNodeID(TORTreeNode(tvTemplates.Selected),1,';');
+  tvTemplates.Items.Clear;
+  FHasPersonalTemplates := FALSE;
+  FEmptyNodeCount := 0;
+  ReloadTemplates;
+end;
+
+procedure TfrmDrawers.fldAccessRemindersInstructionsQuery(Sender: TObject;
+  var Text: string);
+begin
+  inherited;
+  if FOpenDrawer = odReminders then
+    Text := 'to close'
+  else
+    Text := 'to open';
+  Text := Text + ' drawer press space bar';
+end;
+
+procedure TfrmDrawers.fldAccessRemindersStateQuery(Sender: TObject;
+  var Text: string);
+begin
+  inherited;
+  if FOpenDrawer = odReminders then
+    Text := ', Drawer Open'
+  else
+    Text := ', Drawer Closed';
+end;
+
+procedure TfrmDrawers.fldAccessTemplatesInstructionsQuery(Sender: TObject;
+  var Text: string);
+begin
+  inherited;
+  if FOpenDrawer = odTemplates then
+    Text := 'to close'
+  else
+    Text := 'to open';
+  Text := Text + ' drawer press space bar';
+end;
+
+procedure TfrmDrawers.fldAccessTemplatesStateQuery(Sender: TObject;
+  var Text: string);
+begin
+  if FOpenDrawer = odTemplates then
+    Text := ', Drawer Open'
+  else
+    Text := ', Drawer Closed';
+end;
+
+procedure TfrmDrawers.DisplayDrawers(Show: Boolean);
+begin
+  DisplayDrawers(Show, [], []);
+end;
+
+procedure TfrmDrawers.DisplayDrawers(Show: Boolean; AEnable, ADisplay: TDrawers);
+begin
+  if(not (csLoading in ComponentState)) then
+  begin
+    if Show then
+    begin
+      EnableDrawers(AEnable);
+      ShowDrawers(ADisplay);
+    end
+    else
+    begin
+      ShowDrawers([]);
+    end;
+    if(assigned(FSplitter)) then
+    begin
+      if(Show and (FOpenDrawer <> odNone)) then
+        SetSplitterActive(TRUE)
+      else
+        SetSplitterActive(FALSE);
+    end;
+  end;
+end;
+
+function TfrmDrawers.CanEditTemplates: boolean;
+begin
+  Result := (UserTemplateAccessLevel in [taAll, taEditor]);
+end;
+
+function TfrmDrawers.CanEditShared: boolean;
+begin
+  Result := (UserTemplateAccessLevel = taEditor);
+end;
+
+procedure TfrmDrawers.pnlTemplateSearchResize(Sender: TObject);
+begin
+  if((cbMatchCase.Width + cbWholeWords.Width) > pnlTemplateSearch.Width) then
+    cbWholeWords.Left := cbMatchCase.Width
+  else
+    cbWholeWords.Left := pnlTemplateSearch.Width - cbWholeWords.Width;
+end;
+
+procedure TfrmDrawers.cbFindOptionClick(Sender: TObject);
+begin
+  SetFindNext(FALSE);
+  if(pnlTemplateSearch.Visible) then edtSearch.SetFocus;
+end;
+
+procedure TfrmDrawers.mnuInsertTemplateClick(Sender: TObject);
+begin
+  if((assigned(tvTemplates.Selected)) and
+     (TTemplate(tvTemplates.Selected.Data).RealType in [ttDoc, ttGroup])) then
+  InsertText;
+end;
+
+procedure TfrmDrawers.SetSplitter(const Value: TSplitter);
+begin
+  if(FSplitter <> Value) then
+  begin
+    if(assigned(FSplitter)) then
+      FSplitter.OnCanResize := FOldCanResize;
+    FSplitter := Value;
+    if(assigned(FSplitter)) then
+    begin
+      FOldCanResize := FSplitter.OnCanResize;
+      FSplitter.OnCanResize := SplitterCanResize;
+      SetSplitterActive(FSplitterActive);
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.SplitterCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
+begin
+  Accept := FSplitterActive;
+end;
+
+procedure TfrmDrawers.SetSplitterActive(Active: boolean);
+begin
+  FSplitterActive := Active;
+  if(Active) then
+  begin
+    FSplitter.Cursor := crVSplit;
+    FSplitter.ResizeStyle := rsPattern;
+  end
+  else
+  begin
+    FSplitter.Cursor := crDefault;
+    FSplitter.ResizeStyle := ExtCtrls.rsNone;
+  end;
+end;
+
+procedure TfrmDrawers.UpdatePersonalTemplates;
+var
+  NeedPersonal: boolean;
+  Node: TTreeNode;
+
+  function FindNode: TTreeNode;
+  begin
+    Result := tvTemplates.Items.GetFirstNode;
+    while assigned(Result) do
+    begin
+      if(Result.Data = MyTemplate) then exit;
+      Result := Result.getNextSibling;
+    end;
+  end;
+
+begin
+  NeedPersonal := (UserTemplateAccessLevel <> taNone);
+  if(NeedPersonal <> FHasPersonalTemplates) then
+  begin
+    if(NeedPersonal) then
+    begin
+      if(assigned(MyTemplate)) and (MyTemplate.Children in [tcActive, tcBoth]) then
+      begin
+        AddTemplateNode(MyTemplate);
+        FHasPersonalTemplates := TRUE;
+        if(assigned(MyTemplate)) then
+        begin
+          Node := FindNode;
+          if(assigned(Node)) then
+            Node.MoveTo(nil, naAddFirst);
+        end;
+      end;
+    end
+    else
+    begin
+      if(assigned(MyTemplate)) then
+      begin
+        Node := FindNode;
+        if(assigned(Node)) then Node.Delete;
+      end;
+      FHasPersonalTemplates := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.RemindersChanged(Sender: TObject);
+begin
+  inc(FHoldResize);
+  try
+    if(EnableDrawer(odReminders, (GetReminderStatus <> rsNone))) then
+    begin
+      BuildReminderTree(tvReminders);
+      FOldMouseUp := tvReminders.OnMouseUp;
+    end
+    else
+    begin
+      FOldMouseUp := nil;
+      tvReminders.PopupMenu := nil;
+    end;
+    tvReminders.OnMouseUp := tvRemindersMouseUp;
+  finally
+    dec(FHoldResize);
+  end;
+end;
+
+procedure TfrmDrawers.tvRemindersMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if(Button = mbLeft) and (assigned(tvReminders.Selected)) and
+    (htOnItem in tvReminders.GetHitTestInfoAt(X, Y)) then
+    ViewReminderDialog(ReminderNode(tvReminders.Selected));
+end;
+
+procedure TfrmDrawers.PositionToReminder(Sender: TObject);
+var
+  Rem: TReminder;
+
+begin
+  if(assigned(Sender)) then
+  begin
+    if(Sender is TReminder) then
+    begin
+      Rem := TReminder(Sender);
+      if(Rem.CurrentNodeID <> '') then
+        tvReminders.Selected := tvReminders.FindPieceNode(Rem.CurrentNodeID, 1, IncludeParentID)
+      else
+      begin
+        tvReminders.Selected := tvReminders.FindPieceNode(RemCode + (Sender as TReminder).IEN, 1);
+        if(assigned(tvReminders.Selected)) then
+          TORTreeNode(tvReminders.Selected).EnsureVisible;
+      end;
+      Rem.CurrentNodeID := '';
+    end;
+  end
+  else
+    tvReminders.Selected := nil;
+end;
+
+procedure TfrmDrawers.tvRemindersCurListChanged(Sender: TObject;
+  Node: TTreeNode);
+begin
+  if(assigned(FRemNotifyList)) then
+    FRemNotifyList.Notify(Node);
+end;
+
+procedure TfrmDrawers.NotifyWhenRemTreeChanges(Proc: TNotifyEvent);
+begin
+  if(not assigned(FRemNotifyList)) then
+    FRemNotifyList := TORNotifyList.Create;
+  FRemNotifyList.Add(Proc);
+end;
+
+procedure TfrmDrawers.RemoveNotifyWhenRemTreeChanges(Proc: TNotifyEvent);
+begin
+  if(assigned(FRemNotifyList)) then
+    FRemNotifyList.Remove(Proc);
+end;
+
+function TfrmDrawers.GetAlign: TAlign;
+begin
+  Result := inherited Align;
+end;
+
+procedure TfrmDrawers.SetAlign(const Value: TAlign);
+begin
+  inherited Align := Value;
+  ResizeToVisible;
+end;
+
+procedure TfrmDrawers.ResetTemplates;
+begin
+  FOpenToNode := Piece(GetUserTemplateDefaults, '/', FDefTempPiece);
+end;
+
+procedure TfrmDrawers.mnuDefaultClick(Sender: TObject);
+var
+  NodeID: string;
+  UserTempDefNode: string;
+begin
+  NodeID := tvTemplates.GetNodeID(TORTreeNode(tvTemplates.Selected), 1, ';');
+  UserTempDefNode := Piece(GetUserTemplateDefaults, '/', FDefTempPiece);
+  if NodeID <> UserTempDefNode then
+    SetUserTemplateDefaults(tvTemplates.GetNodeID(TORTreeNode(tvTemplates.Selected), 1, ';'),
+                          FDefTempPiece)
+  else SetUserTemplateDefaults('', FDefTempPiece);                      
+end;
+
+procedure TfrmDrawers.OpenToNode(Path: string = '');
+var
+  OldInternalHE, OldInternalEX: boolean;
+
+begin
+  if(Path <> '') then
+    FOpenToNode := PATH;
+  if(FOpenToNode <> '') then
+  begin
+    OldInternalHE := FInternalHiddenExpand;
+    OldInternalEX := FInternalExpand;
+    try
+      FInternalExpand := TRUE;
+      FInternalHiddenExpand := FALSE;
+      dmodShared.SelectNode(tvTemplates, FOpenToNode, FEmptyNodeCount);
+    finally
+      FInternalHiddenExpand := OldInternalHE;
+      FInternalExpand := OldInternalEX;
+    end;
+    FOpenToNode := '';
+  end;
+end;
+
+procedure TfrmDrawers.mnuGotoDefaultClick(Sender: TObject);
+begin
+  OpenToNode(Piece(GetUserTemplateDefaults, '/', FDefTempPiece));
+end;
+
+procedure TfrmDrawers.mnuViewNotesClick(Sender: TObject);
+var
+  tmpl: TTemplate;
+  tmpSL: TStringList;
+
+begin
+  if(assigned(tvTemplates.Selected)) then
+  begin
+    tmpl := TTemplate(tvTemplates.Selected.Data);
+    if(tmpl.Description = '') then
+      ShowMsg('No notes found for ' + tmpl.PrintName)
+    else
+    begin
+      tmpSL := TStringList.Create;
+      try
+        tmpSL.Text := tmpl.Description;
+        ReportBox(tmpSL, tmpl.PrintName + ' Notes:', TRUE);
+      finally
+        tmpSL.Free;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.mnuCopyTemplateClick(Sender: TObject);
+var
+  txt: string;
+  Template: TTemplate;
+
+begin
+  txt := '';
+  if((assigned(tvTemplates.Selected)) and
+     (TTemplate(tvTemplates.Selected.Data).RealType in [ttDoc, ttGroup])) and
+     (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then
+  begin
+    Template := TTemplate(tvTemplates.Selected.Data);
+    txt := Template.Text;
+    CheckBoilerplate4Fields(txt, 'Template: ' + Template.PrintName);
+    if txt <> '' then
+    begin
+      Clipboard.SetTextBuf(PChar(txt));
+      GetScreenReader.Speak('Text Copied to Clip board');
+    end;
+  end;
+  if txt <> '' then
+    StatusText('Templated Text copied to clipboard.');
+end;
+
+function TfrmDrawers.InsertOK(Ask: boolean): boolean;
+
+  function REOK: boolean;
+  begin
+    Result := assigned(FRichEditControl) and
+              FRichEditControl.Visible and
+              FRichEditControl.Parent.Visible;
+  end;
+
+begin
+  Result := REOK;
+  if (not ask) and (not Result) and (assigned(FNewNoteButton)) then
+    Result := TRUE
+  else
+  if ask and (not Result) and assigned(FNewNoteButton) and
+     FNewNoteButton.Visible and FNewNoteButton.Enabled then
+  begin
+    FNewNoteButton.Click;
+    Result := REOK;
+  end;
+end;
+
+procedure TfrmDrawers.mnuViewTemplateIconLegendClick(Sender: TObject);
+begin
+  ShowIconLegend(ilTemplates);
+end;
+
+procedure TfrmDrawers.pnlTemplatesButtonEnter(Sender: TObject);
+begin
+  with Sender as TPanel do
+    if (ControlCount > 0) and (Controls[0] is TSpeedButton) and (TSpeedButton(Controls[0]).Down)
+    then
+      BevelOuter := bvLowered
+    else
+      BevelOuter := bvRaised;
+end;
+
+procedure TfrmDrawers.pnlTemplatesButtonExit(Sender: TObject);
+begin
+  with Sender as TPanel do
+    BevelOuter := bvNone;
+  DisableArrowKeyMove(Sender);
+end;
+
+procedure TfrmDrawers.tvRemindersKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  case Key of
+  VK_RETURN, VK_SPACE:
+    begin
+      ViewReminderDialog(ReminderNode(tvReminders.Selected));
+      Key := 0;
+    end;
+  end;
+end;
+
+procedure TfrmDrawers.tvRemindersNodeCaptioning(Sender: TObject;
+  var Caption: String);
+var
+  StringData: string;
+begin
+  StringData := (Sender as TORTreeNode).StringData;
+  if (Length(StringData) > 0) and (StringData[1] = 'R') then  //Only tag reminder statuses
+    case StrToIntDef(Piece(StringData,'^',6 {Due}),-1) of
+      0: Caption := Caption + ' -- Applicable';
+      1: Caption := Caption + ' -- DUE';
+      2: Caption := Caption + ' -- Not Applicable';
+      else Caption := Caption + ' -- Not Evaluated';
+    end;
+end;
+
+procedure TfrmDrawers.DisableArrowKeyMove(Sender: TObject);
+var
+  CurrPanel : TKeyClickPanel;
+begin
+  if Sender is TKeyClickPanel then
+  begin
+    CurrPanel := Sender as TKeyClickPanel;
+    If Boolean(Hi(GetKeyState(VK_UP)))
+       OR Boolean(Hi(GetKeyState(VK_DOWN)))
+       OR Boolean(Hi(GetKeyState(VK_LEFT)))
+       OR Boolean(Hi(GetKeyState(VK_RIGHT))) then
+    begin
+      if Assigned(CurrPanel) then
+        CurrPanel.SetFocus;
+    end;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmDrawers);
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDupPts.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDupPts.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDupPts.dfm	(revision 1676)
@@ -0,0 +1,109 @@
+inherited frmDupPts: TfrmDupPts
+  Left = 160
+  Top = 190
+  HorzScrollBar.Visible = False
+  VertScrollBar.Visible = False
+  Caption = 'Similar Patients'
+  ClientHeight = 187
+  ClientWidth = 463
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlDupPts: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 463
+    Height = 187
+    Align = alClient
+    TabOrder = 0
+    DesignSize = (
+      463
+      187)
+    object lblSelDupPts: TLabel
+      Left = 6
+      Top = 3
+      Width = 155
+      Height = 13
+      Caption = 'Please select the correct patient:'
+    end
+    object btnOK: TButton
+      Left = 296
+      Top = 150
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = '&OK'
+      Default = True
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 381
+      Top = 150
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = '&Cancel'
+      ModalResult = 2
+      TabOrder = 1
+      OnClick = btnCancelClick
+    end
+    object pnlSelDupPt: TPanel
+      Left = 2
+      Top = 19
+      Width = 461
+      Height = 120
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      TabOrder = 2
+      object lblDupPts: TLabel
+        Left = 4
+        Top = 2
+        Width = 364
+        Height = 13
+        Caption = 
+          ' Name                                                        DOB' +
+          '                                        SSN'
+      end
+      object lboSelPt: TORListBox
+        Left = 1
+        Top = 16
+        Width = 459
+        Height = 103
+        Align = alBottom
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnDblClick = lboSelPtDblClick
+        Caption = 'Please select the correct patient'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3,4'
+        TabPositions = '33,57'
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlDupPts'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlSelDupPt'
+        'Status = stsDefault')
+      (
+        'Component = lboSelPt'
+        'Status = stsDefault')
+      (
+        'Component = frmDupPts'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDupPts.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDupPts.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fDupPts.pas	(revision 1676)
@@ -0,0 +1,85 @@
+unit fDupPts;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics,
+  Controls, Forms, Dialogs, StdCtrls, ORCtrls, ExtCtrls, OrFn, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmDupPts = class(TfrmBase508Form)
+    pnlDupPts: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    pnlSelDupPt: TPanel;
+    lboSelPt: TORListBox;
+    lblDupPts: TLabel;
+    lblSelDupPts: TLabel;
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure lboSelPtDblClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmDupPts: TfrmDupPts;
+
+implementation
+
+{$R *.dfm}
+
+uses rCore, uCore, fPtSel;
+
+procedure TfrmDupPts.btnCancelClick(Sender: TObject);
+begin
+
+close;
+
+end;
+
+procedure TfrmDupPts.FormCreate(Sender: TObject);
+var
+  theDups: tStringList;
+begin
+  fPtSel.DupDFN := 'Cancel'; // Pre-set as default.
+  theDups := tStringList.create;
+  FastAssign(fPtSel.PtStrs, theDups);
+  FastAssign(theDups, lboSelPt.Items);
+  ResizeAnchoredFormToFont(self);
+end;
+
+procedure TfrmDupPts.btnOKClick(Sender: TObject);
+begin
+
+if not (Length(lboSelPt.ItemID) > 0) then  //*DFN*
+begin
+  infoBox('A patient has not been selected.', 'No Patient Selected', MB_OK);
+  exit;
+end;
+
+fPtSel.DupDFN := lboSelPt.ItemID;  //*DFN*
+close;
+
+end;
+
+procedure TfrmDupPts.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (key = VK_ESCAPE) then
+    btnCancel.click;
+end;
+
+procedure TfrmDupPts.lboSelPtDblClick(Sender: TObject);
+begin
+  btnOKClick(btnOK);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEffectDate.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEffectDate.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEffectDate.dfm	(revision 1676)
@@ -0,0 +1,90 @@
+inherited frmEffectDate: TfrmEffectDate
+  Left = 335
+  Top = 133
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Discharge Date'
+  ClientHeight = 127
+  ClientWidth = 254
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label2: TLabel [0]
+    Left = 68
+    Top = 48
+    Width = 68
+    Height = 13
+    Caption = 'Effective Date'
+  end
+  object Label3: TStaticText [1]
+    Left = 8
+    Top = 8
+    Width = 244
+    Height = 17
+    Caption = 'Enter the date this discharge will become effective.'
+    TabOrder = 3
+  end
+  object Label4: TStaticText [2]
+    Left = 8
+    Top = 22
+    Width = 224
+    Height = 17
+    Caption = '(This aids pharmacy in preparing prescriptions.)'
+    TabOrder = 4
+  end
+  object calEffective: TORDateBox [3]
+    Left = 68
+    Top = 62
+    Width = 120
+    Height = 21
+    TabOrder = 0
+    Text = 'Today'
+    DateOnly = True
+    RequireTime = False
+    Caption = 'Effective Date'
+  end
+  object cmdOK: TButton [4]
+    Left = 51
+    Top = 95
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [5]
+    Left = 133
+    Top = 95
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Label3'
+        'Status = stsDefault')
+      (
+        'Component = Label4'
+        'Status = stsDefault')
+      (
+        'Component = calEffective'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmEffectDate'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEffectDate.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEffectDate.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEffectDate.pas	(revision 1676)
@@ -0,0 +1,70 @@
+unit fEffectDate;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, Grids, Calendar, ORDtTmCal, StdCtrls, ORDtTm, ORFn,
+  VA508AccessibilityManager;
+
+type
+  TfrmEffectDate = class(TfrmAutoSz)
+    calEffective: TORDateBox;
+    Label2: TLabel;
+    Label3: TStaticText;
+    Label4: TStaticText;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ObtainEffectiveDate(var ADate: TFMDateTime): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+function ObtainEffectiveDate(var ADate: TFMDateTime): Boolean;
+var
+  frmEffectDate: TfrmEffectDate;
+begin
+  Result := False;
+  frmEffectDate := TfrmEffectDate.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmEffectDate));
+    if ADate <> 0 then frmEffectDate.calEffective.FMDateTime := ADate;
+    frmEffectDate.ShowModal;
+    if frmEffectDate.OKPressed then
+    begin
+      ADate  := frmEffectDate.calEffective.FMDateTime;
+      Result := True;
+    end;
+  finally
+    frmEffectDate.Release;
+  end;
+end;
+
+procedure TfrmEffectDate.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmEffectDate.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmEffectDate.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncnt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncnt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncnt.dfm	(revision 1676)
@@ -0,0 +1,391 @@
+inherited frmEncounter: TfrmEncounter
+  Left = 481
+  Top = 242
+  Anchors = [akTop]
+  BorderIcons = [biSystemMenu]
+  Caption = 'Provider & Location for Current Activities'
+  ClientHeight = 423
+  ClientWidth = 462
+  Constraints.MinWidth = 470
+  OldCreateOrder = True
+  Position = poScreenCenter
+  Scaled = False
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitWidth = 470
+  ExplicitHeight = 450
+  DesignSize = (
+    462
+    423)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblInstruct: TLabel [0]
+    Left = 6
+    Top = 6
+    Width = 253
+    Height = 31
+    AutoSize = False
+    Caption = 
+      'Select the appointment or visit that should be associated with t' +
+      'he note or orders .'
+    Visible = False
+    WordWrap = True
+  end
+  object lblLocation: TLabel [1]
+    Tag = 9
+    Left = 6
+    Top = 140
+    Width = 93
+    Height = 13
+    Anchors = [akLeft, akBottom]
+    Caption = 'Encounter Location'
+    Constraints.MinHeight = 12
+  end
+  object lblProvider: TLabel [2]
+    Left = 6
+    Top = 6
+    Width = 91
+    Height = 13
+    Caption = 'Encounter Provider'
+  end
+  object cboPtProvider: TORComboBox [3]
+    Left = 6
+    Top = 20
+    Width = 331
+    Height = 117
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Encounter Provider'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnDblClick = cmdOKClick
+    OnNeedData = cboPtProviderNeedData
+    CharsNeedMatch = 1
+  end
+  object cmdDateRange: TButton [4]
+    Tag = 9
+    Left = 266
+    Top = 153
+    Width = 84
+    Height = 25
+    Anchors = [akLeft, akBottom]
+    Caption = 'Date Range...'
+    Constraints.MinHeight = 21
+    Constraints.MinWidth = 21
+    TabOrder = 2
+    OnClick = cmdDateRangeClick
+  end
+  object txtLocation: TCaptionEdit [5]
+    Tag = 9
+    Left = 6
+    Top = 154
+    Width = 258
+    Height = 21
+    Anchors = [akLeft, akBottom]
+    AutoSize = False
+    Color = clBtnFace
+    Constraints.MinHeight = 21
+    ReadOnly = True
+    TabOrder = 1
+    Text = '< Select a location from the tabs below.... >'
+    Caption = 'Encounter Location'
+  end
+  object cmdCancel: TButton [6]
+    Left = 341
+    Top = 45
+    Width = 84
+    Height = 23
+    Anchors = [akTop, akRight]
+    Cancel = True
+    Caption = 'Cancel'
+    Constraints.MinHeight = 21
+    Constraints.MinWidth = 21
+    TabOrder = 4
+    OnClick = cmdCancelClick
+  end
+  object cmdOK: TButton [7]
+    Left = 340
+    Top = 20
+    Width = 84
+    Height = 23
+    Anchors = [akTop, akRight]
+    Caption = 'OK'
+    Constraints.MinHeight = 21
+    Constraints.MinWidth = 21
+    Default = True
+    TabOrder = 3
+    OnClick = cmdOKClick
+  end
+  object Panel1: TPanel [8]
+    Left = 0
+    Top = 179
+    Width = 460
+    Height = 243
+    Anchors = [akLeft, akRight, akBottom]
+    TabOrder = 6
+    DesignSize = (
+      460
+      243)
+    object pgeVisit: TPageControl
+      Tag = 9
+      Left = 4
+      Top = 5
+      Width = 452
+      Height = 232
+      ActivePage = tabNewVisit
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      Constraints.MinHeight = 150
+      RaggedRight = True
+      TabOrder = 0
+      OnChange = pgeVisitChange
+      OnMouseDown = pgeVisitMouseDown
+      object tabClinic: TTabSheet
+        Caption = 'Clinic Appointments'
+        ExplicitLeft = 0
+        ExplicitTop = 0
+        ExplicitWidth = 0
+        ExplicitHeight = 0
+        object lstClinic: TORListBox
+          Left = 0
+          Top = 20
+          Width = 444
+          Height = 184
+          Align = alClient
+          Constraints.MinHeight = 21
+          ItemHeight = 13
+          ParentShowHint = False
+          ScrollWidth = 353
+          ShowHint = True
+          TabOrder = 0
+          OnDblClick = cmdOKClick
+          Caption = 'Clinic Appointments / Visits (T-30 thru T+1)'
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '3,2,4'
+          TabPositions = '30,50'
+          OnChange = lstClinicChange
+        end
+        object Panel2: TPanel
+          Left = 0
+          Top = 0
+          Width = 444
+          Height = 20
+          Align = alTop
+          TabOrder = 2
+          object lblDateRange: TLabel
+            Left = 138
+            Top = 4
+            Width = 71
+            Height = 13
+            Caption = '(T-30 thru T+1)'
+          end
+          object lblClinic: TLabel
+            Left = 4
+            Top = 4
+            Width = 127
+            Height = 13
+            Caption = 'Clinic Appointments / Visits'
+          end
+        end
+      end
+      object tabAdmit: TTabSheet
+        Caption = 'Hospital Admissions'
+        ExplicitLeft = 0
+        ExplicitTop = 0
+        ExplicitWidth = 0
+        ExplicitHeight = 0
+        object lstAdmit: TORListBox
+          Left = 0
+          Top = 17
+          Width = 444
+          Height = 187
+          Align = alClient
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnDblClick = cmdOKClick
+          Caption = 'Hospital Admissions'
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '3,5,4'
+          TabPositions = '20'
+          OnChange = lstAdmitChange
+        end
+        object Panel3: TPanel
+          Left = 0
+          Top = 0
+          Width = 444
+          Height = 17
+          Align = alTop
+          TabOrder = 2
+          object lblAdmit: TLabel
+            Left = 4
+            Top = 1
+            Width = 93
+            Height = 13
+            Caption = 'Hospital Admissions'
+          end
+        end
+      end
+      object tabNewVisit: TTabSheet
+        Caption = 'New Visit'
+        ExplicitLeft = 0
+        ExplicitTop = 0
+        ExplicitWidth = 0
+        ExplicitHeight = 0
+        object lblVisitDate: TLabel
+          Left = 220
+          Top = 4
+          Width = 85
+          Height = 13
+          Caption = 'Date/Time of Visit'
+          Visible = False
+        end
+        object lblNewVisit: TLabel
+          Left = 4
+          Top = 4
+          Width = 63
+          Height = 13
+          Caption = 'Visit Location'
+        end
+        object calVisitDate: TORDateBox
+          Left = 220
+          Top = 18
+          Width = 140
+          Height = 21
+          TabOrder = 1
+          Text = 'NOW'
+          OnChange = calVisitDateChange
+          OnExit = calVisitDateExit
+          DateOnly = False
+          RequireTime = True
+        end
+        object ckbHistorical: TORCheckBox
+          Left = 220
+          Top = 50
+          Width = 140
+          Height = 81
+          Caption = 
+            'Historical Visit: a visit that occurred at some time in the past' +
+            ' or at some other location (possibly non-VA) but is not used for' +
+            ' workload credit.'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 2
+          WordWrap = True
+          OnClick = ckbHistoricalClick
+          AutoSize = True
+        end
+        object cboNewVisit: TORComboBox
+          Left = 4
+          Top = 18
+          Width = 208
+          Height = 117
+          Style = orcsSimple
+          AutoSelect = True
+          Caption = 'Visit Location'
+          Color = clWindow
+          DropDownCount = 8
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = True
+          LongList = True
+          LookupPiece = 0
+          MaxLength = 0
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 0
+          OnChange = cboNewVisitChange
+          OnDblClick = cmdOKClick
+          OnNeedData = cboNewVisitNeedData
+          CharsNeedMatch = 1
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboPtProvider'
+        'Status = stsDefault')
+      (
+        'Component = cmdDateRange'
+        'Status = stsDefault')
+      (
+        'Component = txtLocation'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = pgeVisit'
+        'Status = stsDefault')
+      (
+        'Component = tabClinic'
+        'Status = stsDefault')
+      (
+        'Component = lstClinic'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = tabAdmit'
+        'Status = stsDefault')
+      (
+        'Component = lstAdmit'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = tabNewVisit'
+        'Status = stsDefault')
+      (
+        'Component = calVisitDate'
+        'Status = stsDefault')
+      (
+        'Component = ckbHistorical'
+        'Status = stsDefault')
+      (
+        'Component = cboNewVisit'
+        'Status = stsDefault')
+      (
+        'Component = frmEncounter'
+        'Status = stsDefault'))
+  end
+  object dlgDateRange: TORDateRangeDlg
+    DateOnly = True
+    Instruction = 'Show appointments / visits in the date range:'
+    LabelStart = 'From'
+    LabelStop = 'Through'
+    RequireTime = False
+    Format = 'mmm d,yyyy'
+    Left = 264
+    Top = 4
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncnt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncnt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncnt.pas	(revision 1676)
@@ -0,0 +1,573 @@
+unit fEncnt;
+
+//Modifed: 7/26/99
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Moved asignment of historical visit category from the cboNewVisitChange event
+//   to the ckbHistoricalClick event.
+
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORDtTm, ORFn, ExtCtrls, ComCtrls, ORDtTmRng, fAutoSz, rOptions, fBase508Form,
+  VA508AccessibilityManager, fFrame;
+
+type
+  TfrmEncounter = class(TfrmBase508Form)
+    cboPtProvider: TORComboBox;
+    lblProvider: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblLocation: TLabel;
+    txtLocation: TCaptionEdit;
+    dlgDateRange: TORDateRangeDlg;
+    cmdDateRange: TButton;
+    lblInstruct: TLabel;
+    Panel1: TPanel;
+    pgeVisit: TPageControl;
+    tabClinic: TTabSheet;
+    lstClinic: TORListBox;
+    tabAdmit: TTabSheet;
+    lstAdmit: TORListBox;
+    tabNewVisit: TTabSheet;
+    lblVisitDate: TLabel;
+    lblNewVisit: TLabel;
+    calVisitDate: TORDateBox;
+    ckbHistorical: TORCheckBox;
+    cboNewVisit: TORComboBox;
+    Panel2: TPanel;
+    lblDateRange: TLabel;
+    lblClinic: TLabel;
+    Panel3: TPanel;
+    lblAdmit: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure pgeVisitChange(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboNewVisitNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure calVisitDateChange(Sender: TObject);
+    procedure cboNewVisitChange(Sender: TObject);
+    procedure calVisitDateExit(Sender: TObject);
+    procedure cboPtProviderNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure ckbHistoricalClick(Sender: TObject);
+    procedure cmdDateRangeClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure lstAdmitChange(Sender: TObject);
+    procedure lstClinicChange(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure pgeVisitMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+  private
+    CLINIC_TXT : String;
+    FFilter: Int64;
+    FPCDate: TFMDateTime;
+    FProvider: Int64;
+    FLocation: Integer;
+    FLocationName: string;
+    FDateTime: TFMDateTime;
+    FVisitCategory: Char;
+    FStandAlone: Boolean;
+    FFromSelf: Boolean;
+    FFromDate: TFMDateTime;
+    FThruDate: TFMDateTIme;
+    FEncFutureLimit: string;
+    FFromCreate: Boolean;
+    FOldHintEvent: TShowHintEvent;
+    OKPressed: Boolean;
+    procedure AppShowHint(var HintStr: string; var CanShow: Boolean;
+                          var HintInfo: THintInfo);
+    procedure SetVisitCat;
+    function AllowAutoFocusChange: Boolean;
+  public
+    { Public declarations }
+  end;
+
+procedure UpdateEncounter(PersonFilter: Int64; ADate: TFMDateTime = 0; TIULocation: integer = 0);
+procedure UpdateVisit(FontSize: Integer); overload;
+procedure UpdateVisit(FontSize: Integer; TIULocation: integer); overload;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, uConst, fReview, uPCE, rPCE, VA508AccessibilityRouter,
+  VAUtils;
+
+const
+  TC_MISSING = 'Incomplete Encounter Information';
+  TX_NO_DATE = 'A valid date/time has not been entered.';
+  TX_NO_TIME = 'A valid time has not been entered.';
+  TX_NO_LOC  = 'A visit location has not been selected.';
+  TC_LOCONLY = 'Location for Current Activities';
+  TX_FUTURE_WARNING = 'You have selected a visit with a date in the future.  Are you sure?';
+  TC_FUTURE_WARNING = 'Visit Is In Future';
+
+var
+  uTIULocation: integer;
+  uTIULocationName: string;
+
+procedure UpdateVisit(FontSize: Integer);
+begin
+  UpdateEncounter(NPF_SUPPRESS);
+end;
+
+procedure UpdateVisit(FontSize: Integer; TIULocation: integer);
+begin
+  UpdateEncounter(NPF_SUPPRESS, 0, TIULocation);
+end;
+
+procedure UpdateEncounter(PersonFilter: Int64; ADate: TFMDateTime = 0;  TIULocation: integer = 0);
+const
+  UP_SHIFT = 85;
+var
+  frmEncounter: TfrmEncounter;
+  CanChange: Boolean;
+  TimedOut: Boolean;
+begin
+  uTIULocation := TIULocation;
+  if uTIULocation <> 0 then uTIULocationName := ExternalName(uTIULocation, FN_HOSPITAL_LOCATION);
+  frmEncounter := TfrmEncounter.Create(Application);
+  try
+    TimedOut := False;
+    ResizeAnchoredFormToFont(frmEncounter);
+    with frmEncounter do
+    begin
+      FFilter := PersonFilter;
+      FPCDate := ADate;
+      if PersonFilter = NPF_SUPPRESS then           // not prompting for provider
+      begin
+        lblProvider.Visible := False;
+        cboPtProvider.Visible := False;
+        lblInstruct.Visible := True;
+        Caption := TC_LOCONLY;
+        Height := frmEncounter.Height - UP_SHIFT;
+      end
+      else                                          // also prompt for provider
+      begin
+        // InitLongList must be done AFTER FFilter is set
+        cboPtProvider.InitLongList(Encounter.ProviderName);
+        cboPtProvider.SelectByIEN(FProvider);
+      end;
+      ShowModal;
+      if OKPressed then
+      begin
+        CanChange := True;
+       // if (fframe.frmFrame.DoNotChangeEncWindow = true) and (encounter.Location <> frmEncounter.FLocation) then
+       //    fframe.frmFrame.DoNotChangeEncWindow := false;
+        if (PersonFilter <> NPF_SUPPRESS) and
+           (((Encounter.Provider =  User.DUZ) and (FProvider <> User.DUZ)) or
+            ((Encounter.Provider <> User.DUZ) and (FProvider =  User.DUZ)))
+           then CanChange := ReviewChanges(TimedOut);
+        if CanChange then
+        begin
+          if PersonFilter <> NPF_SUPPRESS then Encounter.Provider := FProvider;
+          Encounter.Location      := FLocation;
+          Encounter.DateTime      := FDateTime;
+          Encounter.VisitCategory := FVisitCategory;
+          Encounter.StandAlone    := FStandAlone;
+        end;
+      end;
+    end;
+  finally
+    frmEncounter.Release;
+  end;
+end;
+
+procedure TfrmEncounter.FormCreate(Sender: TObject);
+var
+  ADateFrom, ADateThru: TDateTime;
+  BDateFrom, BDateThru: Integer;
+  BDisplayFrom, BDisplayThru: String;
+begin
+  inherited;
+  FProvider      := Encounter.Provider;
+  FLocation      := Encounter.Location;
+  FLocationName  := Encounter.LocationName;
+  FDateTime      := Encounter.DateTime;
+  FVisitCategory := Encounter.VisitCategory;
+  FStandAlone    := Encounter.StandAlone;
+  rpcGetEncFutureDays(FEncFutureLimit); 
+  rpcGetRangeForEncs(BDateFrom, BDateThru, False); // Get user's current date range settings.
+  if BDateFrom > 0 then
+    BDisplayFrom := 'T-' + IntToStr(BDateFrom)
+  else
+    BDisplayFrom := 'T';
+  if BDateThru > 0 then
+    BDisplayThru := 'T+' + IntToStr(BDateThru)
+  else
+    BDisplayThru := 'T';
+  lblDateRange.Caption := '(' + BDisplayFrom + ' thru ' + BDisplayThru + ')';
+  ADateFrom := (FMDateTimeToDateTime(FMToday) - BDateFrom);
+  ADateThru := (FMDateTimeToDateTime(FMToday) + BDateThru);
+  FFromDate      := DateTimeToFMDateTime(ADateFrom);
+  FThruDate      := DateTimeToFMDateTime(ADateThru) + 0.2359;
+  FFromCreate    := True;
+  with txtLocation do if Length(FLocationName) > 0 then
+  begin
+    Text := FLocationName + '  ';
+    if (FVisitCategory <> 'H') and (FDateTime <> 0) then
+      Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+  end
+  else Text := '< Select a location from the tabs below.... >';
+  OKPressed := False;
+  pgeVisit.ActivePage := tabClinic;
+  pgeVisitChange(Self);
+  if lstClinic.Items.Count = 0 then
+  begin
+    pgeVisit.ActivePage := tabNewVisit;
+    pgeVisitChange(Self);
+  end;
+  ckbHistorical.Hint := 'A historical visit or encounter is a visit that occurred at some time' + CRLF +
+                        'in the past or at some other location (possibly non-VA).  Although these' + CRLF +
+                        'are not used for workload credit, they can be used for setting up the' + CRLF +
+                        'PCE reminder maintenance system, or other non-workload-related reasons.';
+  FOldHintEvent := Application.OnShowHint;
+  Application.OnShowHint := AppShowHint;
+  FFromCreate := False;
+  //JAWS will read the second caption if 2 are displayed, so Combining Labels
+  CLINIC_TXT := lblClinic.Caption+'  ';
+  lblClinic.Caption := CLINIC_TXT + lblDateRange.Caption;
+  lblDateRange.Hide;
+end;
+
+procedure TfrmEncounter.cboPtProviderNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  case FFilter of
+    NPF_PROVIDER:  cboPtProvider.ForDataUse(SubSetOfProviders(StartFrom, Direction));
+//    NPF_ENCOUNTER: cboPtProvider.ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction, FloatToStr(FPCDate)));
+    else cboPtProvider.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+  end;
+end;
+
+procedure TfrmEncounter.pgeVisitChange(Sender: TObject);
+begin
+  inherited;
+  cmdDateRange.Visible := pgeVisit.ActivePage = tabClinic;
+  if (pgeVisit.ActivePage = tabClinic) and (lstClinic.Items.Count = 0) then
+  begin
+    ListApptAll(lstClinic.Items, Patient.DFN, FFromDate, FThruDate);
+    if AllowAutoFocusChange then
+      ActiveControl := lstClinic;
+  end;
+  if (pgeVisit.ActivePage = tabAdmit)    and (lstAdmit.Items.Count = 0) then
+  begin
+    ListAdmitAll(lstAdmit.Items, Patient.DFN);
+    if AllowAutoFocusChange then
+      ActiveControl := lstAdmit;
+  end;
+  if pgeVisit.ActivePage = tabNewVisit then
+  begin
+    if cboNewVisit.Items.Count = 0 then
+    begin
+      if FVisitCategory <> 'H' then
+      begin
+        if uTIULocation <> 0 then
+        begin
+          cboNewVisit.InitLongList(uTIULocationName);
+          cboNewVisit.SelectByIEN(uTIULocation);
+          cboNewVisitChange(Self);
+        end
+        else
+        begin
+          cboNewVisit.InitLongList(FLocationName);
+          if Encounter.Location <> 0 then cboNewVisit.SelectByIEN(FLocation);
+        end;
+        FFromSelf := True;
+        with calVisitDate do if FDateTime <> 0 then FMDateTime := FDateTime else Text := 'NOW';
+        FFromSelf := False;
+        if AllowAutoFocusChange then
+          ActiveControl := cboNewVisit;
+      end
+      else if FVisitCategory = 'E' then
+      begin
+        ckbHistorical.Checked := True;
+        if AllowAutoFocusChange then
+          ActiveControl := cboNewVisit;
+      end
+      else
+      begin
+        cboNewVisit.InitLongList('');
+      end;
+    end; {if cboNewVisit}
+  end; {if pgeVisit.ActivePage}
+  if ScreenReaderSystemActive then
+    ActiveControl := pgeVisit;
+end;
+
+procedure TfrmEncounter.pgeVisitMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  if pgeVisit.ActivePage = tabNewVisit then
+    if cboNewVisit.CanFocus then
+      cboNewVisit.SetFocus;
+end;
+
+procedure TfrmEncounter.cboNewVisitNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboNewVisit.ForDataUse(SubSetOfNewLocs(StartFrom, Direction));
+end;
+
+procedure TfrmEncounter.cmdDateRangeClick(Sender: TObject);
+begin
+  dlgDateRange.FMDateStart := FFromDate;
+  dlgDateRange.FMDateStop  := FThruDate;
+  if dlgDateRange.Execute then
+  begin
+    FFromDate := dlgDateRange.FMDateStart;
+    FThruDate := dlgDateRange.FMDateStop + 0.2359;
+    lblDateRange.Caption := '(' + dlgDateRange.RelativeStart + ' thru '
+                                + dlgDateRange.RelativeStop + ')';
+    //label
+    lblClinic.Caption := CLINIC_TXT + lblDateRange.Caption;
+    //list
+    lstClinic.Caption := lblClinic.Caption + ' ' + lblDateRange.Caption;
+    lstClinic.Items.Clear;
+    ListApptAll(lstClinic.Items, Patient.DFN, FFromDate, FThruDate);
+  end;
+end;
+
+procedure TfrmEncounter.cboNewVisitChange(Sender: TObject);
+begin
+  inherited;
+  with cboNewVisit do
+  begin
+    FLocation := ItemIEN;
+    FLocationName := DisplayText[ItemIndex];
+    FDateTime := calVisitDate.FMDateTime;
+    SetVisitCat;
+    with txtLocation do
+    begin
+      Text := FLocationName + '  ';
+      if FDateTime <> 0 then Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end;
+  end;
+end;
+
+procedure TfrmEncounter.calVisitDateChange(Sender: TObject);
+begin
+  inherited;
+  // The FFromSelf was added because without it, a new visit (minus the seconds gets created.
+  // Setting the text of calVisit caused the text to be re-evaluated & changed the FMDateTime property.
+  if FFromSelf then Exit;
+  with cboNewVisit do
+  begin
+    FLocation := ItemIEN;
+    FLocationName := DisplayText[ItemIndex];
+    FDateTime := calVisitDate.FMDateTime;
+    SetVisitCat;
+    txtLocation.Text := FLocationName + '  ' + calVisitDate.Text;
+  end;
+end;
+
+procedure TfrmEncounter.calVisitDateExit(Sender: TObject);
+begin
+  inherited;
+  with cboNewVisit do if ItemIEN > 0 then
+  begin
+    FLocation := ItemIEN;
+    FLocationName := DisplayText[ItemIndex];
+    FDateTime := calVisitDate.FMDateTime;
+    SetVisitCat;
+    with txtLocation do
+    begin
+      Text := FLocationName + '  ';
+      if FDateTime <> 0 then Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end;
+  end;
+end;
+
+procedure TfrmEncounter.cmdOKClick(Sender: TObject);
+var
+  msg: string;
+  ADate, AMaxDate: TDateTime;
+
+begin
+  inherited;
+  msg := '';
+  if FLocation = 0 then msg := TX_NO_LOC;
+  if FDateTime <= 0 then msg := msg + CRLF + TX_NO_DATE
+  else if(pos('.',FloatToStr(FDateTime)) = 0) then msg := msg + CRLF + TX_NO_TIME;
+  if(msg <> '') then
+  begin
+    InfoBox(msg, TC_MISSING, MB_OK);
+    Exit;
+  end
+  else
+  begin
+    ADate := FMDateTimeToDateTime(Trunc(FDateTime));
+    AMaxDate := FMDateTimeToDateTime(FMToday) + StrToIntDef(FEncFutureLimit, 0);
+    if ADate > AMaxDate then
+      if InfoBox(TX_FUTURE_WARNING, TC_FUTURE_WARNING, MB_YESNO or MB_ICONQUESTION) = MRNO then exit;
+  end;
+  if FFilter <> NPF_SUPPRESS then FProvider := cboPtProvider.ItemIEN;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmEncounter.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmEncounter.ckbHistoricalClick(Sender: TObject);
+begin
+  SetVisitCat;
+end;
+
+{
+procedure TfrmEncounter.cboPtProviderChange(Sender: TObject);
+var
+  txt: string;
+  AIEN: Int64;
+
+begin
+  if(FFilter <> NPF_ENCOUNTER) then exit;
+  AIEN := cboPtProvider.ItemIEN;
+  if(AIEN <> 0) then
+  begin
+    txt := InvalidPCEProviderTxt(AIEN, FPCDate);
+    if(txt <> '') then
+    begin
+      InfoBox(cboPtProvider.text + txt, TX_BAD_PROV, MB_OK);
+      cboPtProvider.ItemIndex := -1;
+    end;
+  end;
+end;
+ }
+
+procedure TfrmEncounter.AppShowHint(var HintStr: string;
+  var CanShow: Boolean; var HintInfo: THintInfo);
+const
+  HistHintDelay = 30000; // 30 seconds
+
+begin
+  if (not Assigned(HintInfo.HintControl)) then exit;
+  if(HintInfo.HintControl = ckbHistorical) then
+    HintInfo.HideTimeout := HistHintDelay;
+  if(assigned(FOldHintEvent)) then
+    FOldHintEvent(HintStr, CanShow, HintInfo);
+end;
+
+procedure TfrmEncounter.FormDestroy(Sender: TObject);
+begin
+  //Application.OnShowHint := FOldHintEvent;     v22.11f - RV
+end;
+
+procedure TfrmEncounter.SetVisitCat;
+begin
+  if ckbHistorical.Checked then
+    FVisitCategory := 'E'
+  else
+    FVisitCategory := GetVisitCat('A', FLocation, Patient.Inpatient);
+  FStandAlone := (FVisitCategory = 'A');
+end;
+
+function TfrmEncounter.AllowAutoFocusChange: Boolean;
+begin
+  if ScreenReaderSystemActive or
+     Boolean(Hi(GetKeyState(VK_TAB))) or
+     Boolean(Hi(GetKeyState(VK_LEFT))) or
+     Boolean(Hi(GetKeyState(VK_RIGHT))) then
+    Result := FALSE
+  else
+    Result := TRUE;
+end;
+
+procedure TfrmEncounter.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Application.OnShowHint := FOldHintEvent;
+end;
+
+procedure TfrmEncounter.lstAdmitChange(Sender: TObject);
+begin
+  inherited;
+  with lstAdmit do
+  begin
+    FLocation := StrToIntDef(Piece(Items[ItemIndex], U, 2), 0);
+    FLocationName := Piece(Items[ItemIndex], U, 3);
+    FDateTime := MakeFMDateTime(ItemID);
+    FVisitCategory := 'H';
+    FStandAlone := False;
+    txtLocation.Text := FLocationName;  // don't show admit date (could confuse user)
+  end;
+end;
+
+procedure TfrmEncounter.lstClinicChange(Sender: TObject);
+// V|A;DateTime;LocIEN^DateTime^LocName^Status
+begin
+  inherited;
+  with lstClinic do
+  begin
+    FLocation := StrToIntDef(Piece(ItemID, ';', 3), 0);
+    FLocationName := Piece(Items[ItemIndex], U, 3);
+    FDateTime := MakeFMDateTime(Piece(ItemID,';', 2));
+    FVisitCategory := 'A';
+    FStandAlone := CharAt(ItemID, 1) = 'V';
+    with txtLocation do
+    begin
+      Text := FLocationName + '  ';
+      if FDateTime <> 0 then Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end;
+  end;
+end;
+
+procedure TfrmEncounter.FormResize(Sender: TObject);
+begin
+  //CQ7118
+  if cboPtProvider.Visible then
+     begin
+     cmdOK.Left := cboPtProvider.Left + cboPtProvider.Width + 1;
+     cmdCancel.Left := cboPtProvider.Left + cboPtProvider.Width + 1;
+     end
+  else
+     begin
+     cmdOK.Left := cmdDateRange.Left;
+     cmdCancel.Left := cmdDateRange.Left;
+     end;
+
+  cmdCancel.Top := cmdDateRange.Top - cmdCancel.Height - 10;
+  cmdOK.Top := cmdCancel.Top - cmdOK.Height - 1;
+
+  cmdCancel.Top := cmdOK.Top + cmdOK.Height + 1;
+  cmdCancel.Width := cmdOK.Width;
+  //end CQ7118
+end;
+
+procedure TfrmEncounter.FormShow(Sender: TObject);
+begin
+  //CQ7118
+  if cboPtProvider.Visible then
+     begin
+     cmdOK.Left := cboPtProvider.Left + cboPtProvider.Width + 1;
+     cmdCancel.Left := cboPtProvider.Left + cboPtProvider.Width + 1;
+     end
+  else
+     begin
+     cmdOK.Left := cmdDateRange.Left;
+     cmdCancel.Left := cmdDateRange.Left;
+     end;
+
+  cmdCancel.Top := cmdDateRange.Top - cmdCancel.Height - 10;
+  cmdOK.Top := cmdCancel.Top - cmdOK.Height - 1;
+  cmdCancel.Top := cmdOK.Top + cmdOK.Height + 1;
+  //end CQ7118
+  if Not User.IsProvider then
+    if cboPtProvider.CanFocus then
+      cboPtProvider.SetFocus;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncntKEEP.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncntKEEP.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncntKEEP.dfm	(revision 1676)
@@ -0,0 +1,277 @@
+object frmEncounter: TfrmEncounter
+  Left = 435
+  Top = 175
+  Width = 351
+  Height = 350
+  BorderIcons = [biSystemMenu]
+  Caption = 'Provider & Location for Current Activities'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  DesignSize = (
+    343
+    323)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblInstruct: TLabel
+    Left = 6
+    Top = 6
+    Width = 253
+    Height = 31
+    AutoSize = False
+    Caption = 
+      'Select the appointment or visit that should be associated with t' +
+      'he note or orders .'
+    Visible = False
+    WordWrap = True
+  end
+  object lblLocation: TLabel
+    Tag = 9
+    Left = 6
+    Top = 133
+    Width = 93
+    Height = 13
+    Caption = 'Encounter Location'
+  end
+  object lblProvider: TLabel
+    Left = 6
+    Top = 6
+    Width = 91
+    Height = 13
+    Caption = 'Encounter Provider'
+  end
+  object cmdOK: TButton
+    Left = 250
+    Top = 20
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 4
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton
+    Left = 250
+    Top = 49
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 5
+    OnClick = cmdCancelClick
+  end
+  object txtLocation: TCaptionEdit
+    Tag = 9
+    Left = 6
+    Top = 147
+    Width = 212
+    Height = 21
+    Color = clBtnFace
+    ReadOnly = True
+    TabOrder = 1
+    Text = '< Select a location from the tabs below.... >'
+    Caption = 'Encounter Location'
+  end
+  object pgeVisit: TPageControl
+    Tag = 9
+    Left = 6
+    Top = 171
+    Width = 331
+    Height = 147
+    ActivePage = tabClinic
+    Anchors = [akLeft, akTop, akBottom]
+    TabIndex = 0
+    TabOrder = 2
+    OnChange = pgeVisitChange
+    object tabClinic: TTabSheet
+      Caption = 'Clinic Appointments'
+      DesignSize = (
+        323
+        119)
+      object lblClinic: TLabel
+        Left = 4
+        Top = 4
+        Width = 127
+        Height = 13
+        Caption = 'Clinic Appointments / Visits'
+      end
+      object lblDateRange: TLabel
+        Left = 138
+        Top = 4
+        Width = 71
+        Height = 13
+        Caption = '(T-30 thru T+1)'
+      end
+      object lstClinic: TORListBox
+        Left = 0
+        Top = 18
+        Width = 321
+        Height = 97
+        Anchors = [akLeft, akTop, akBottom]
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnDblClick = cmdOKClick
+        Caption = 'Clinic Appointments / Visits (T-30 thru T+1)'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '3,2,4'
+        TabPositions = '20'
+        OnChange = lstClinicChange
+      end
+    end
+    object tabAdmit: TTabSheet
+      Caption = 'Hospital Admissions'
+      object lblAdmit: TLabel
+        Left = 4
+        Top = 4
+        Width = 93
+        Height = 13
+        Caption = 'Hospital Admissions'
+      end
+      object lstAdmit: TORListBox
+        Left = 4
+        Top = 18
+        Width = 352
+        Height = 117
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnDblClick = cmdOKClick
+        Caption = 'Hospital Admissions'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '3,5,4'
+        TabPositions = '20'
+        OnChange = lstAdmitChange
+      end
+    end
+    object tabNewVisit: TTabSheet
+      Caption = 'New Visit'
+      object lblVisitDate: TLabel
+        Left = 220
+        Top = 4
+        Width = 85
+        Height = 13
+        Caption = 'Date/Time of Visit'
+        Visible = False
+      end
+      object lblNewVisit: TLabel
+        Left = 4
+        Top = 4
+        Width = 63
+        Height = 13
+        Caption = 'Visit Location'
+      end
+      object calVisitDate: TORDateBox
+        Left = 220
+        Top = 18
+        Width = 140
+        Height = 21
+        TabOrder = 1
+        Text = 'NOW'
+        OnChange = calVisitDateChange
+        OnExit = calVisitDateExit
+        DateOnly = False
+        RequireTime = True
+      end
+      object ckbHistorical: TORCheckBox
+        Left = 220
+        Top = 50
+        Width = 140
+        Height = 81
+        Caption = 
+          'Historical Visit: a visit that occurred at some time in the past' +
+          ' or at some other location (possibly non-VA) but is not used for' +
+          ' workload credit.'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        OnClick = ckbHistoricalClick
+        WordWrap = True
+        AutoSize = True
+      end
+      object cboNewVisit: TORComboBox
+        Left = 4
+        Top = 18
+        Width = 208
+        Height = 117
+        Style = orcsSimple
+        AutoSelect = True
+        Caption = 'Visit Location'
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = True
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        OnChange = cboNewVisitChange
+        OnDblClick = cmdOKClick
+        OnNeedData = cboNewVisitNeedData
+        CharsNeedMatch = 1
+      end
+    end
+  end
+  object cmdDateRange: TButton
+    Tag = 9
+    Left = 224
+    Top = 145
+    Width = 90
+    Height = 21
+    Caption = 'Date Range...'
+    TabOrder = 3
+    OnClick = cmdDateRangeClick
+  end
+  object cboPtProvider: TORComboBox
+    Left = 6
+    Top = 20
+    Width = 235
+    Height = 93
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Encounter Provider'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    Pieces = '2,3'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnDblClick = cmdOKClick
+    OnNeedData = cboPtProviderNeedData
+    CharsNeedMatch = 1
+  end
+  object dlgDateRange: TORDateRangeDlg
+    DateOnly = True
+    Instruction = 'Show appointments / visits in the date range:'
+    LabelStart = 'From'
+    LabelStop = 'Through'
+    RequireTime = False
+    Format = 'mmm d,yyyy'
+    Left = 264
+    Top = 4
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncntKEEP.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncntKEEP.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fEncntKEEP.pas	(revision 1676)
@@ -0,0 +1,475 @@
+unit fEncntKEEP;
+
+//Modifed: 7/26/99
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Moved asignment of historical visit category from the cboNewVisitChange event
+//   to the ckbHistoricalClick event.
+
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORDtTm, ORFn, ExtCtrls, ComCtrls, ORDtTmRng, fAutoSz, rOptions, fBase508Form;
+
+type
+  TfrmEncounter = class(TfrmBase508Form)
+    cboPtProvider: TORComboBox;
+    lblProvider: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblLocation: TLabel;
+    txtLocation: TCaptionEdit;
+    pgeVisit: TPageControl;
+    tabClinic: TTabSheet;
+    lblClinic: TLabel;
+    lblDateRange: TLabel;
+    lstClinic: TORListBox;
+    tabAdmit: TTabSheet;
+    lblAdmit: TLabel;
+    lstAdmit: TORListBox;
+    tabNewVisit: TTabSheet;
+    lblVisitDate: TLabel;
+    lblNewVisit: TLabel;
+    calVisitDate: TORDateBox;
+    ckbHistorical: TORCheckBox;
+    cboNewVisit: TORComboBox;
+    dlgDateRange: TORDateRangeDlg;
+    cmdDateRange: TButton;
+    lblInstruct: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure pgeVisitChange(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboNewVisitNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure calVisitDateChange(Sender: TObject);
+    procedure cboNewVisitChange(Sender: TObject);
+    procedure calVisitDateExit(Sender: TObject);
+    procedure cboPtProviderNeedData(Sender: TObject;
+      const StartFrom: String; Direction, InsertAt: Integer);
+    procedure ckbHistoricalClick(Sender: TObject);
+    procedure cmdDateRangeClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure lstAdmitChange(Sender: TObject);
+    procedure lstClinicChange(Sender: TObject);
+  private
+    CLINIC_TXT : String;
+    FFilter: Int64;
+    FPCDate: TFMDateTime;
+    FProvider: Int64;
+    FLocation: Integer;
+    FLocationName: string;
+    FDateTime: TFMDateTime;
+    FVisitCategory: Char;
+    FStandAlone: Boolean;
+    FFromSelf: Boolean;
+    FFromDate: TFMDateTime;
+    FThruDate: TFMDateTIme;
+    FEncFutureLimit: string;
+    FFromCreate: Boolean;
+    FOldHintEvent: TShowHintEvent;
+    OKPressed: Boolean;
+    procedure AppShowHint(var HintStr: string; var CanShow: Boolean;
+                          var HintInfo: THintInfo);
+    procedure SetVisitCat;
+  public
+    { Public declarations }
+  end;
+
+procedure UpdateEncounter(PersonFilter: Int64; ADate: TFMDateTime = 0; TIULocation: integer = 0);
+procedure UpdateVisit(FontSize: Integer); overload;
+procedure UpdateVisit(FontSize: Integer; TIULocation: integer); overload;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, uConst, fReview, uPCE, rPCE;
+
+const
+  TC_MISSING = 'Incomplete Encounter Information';
+  TX_NO_DATE = 'A valid date/time has not been entered.';
+  TX_NO_TIME = 'A valid time has not been entered.';
+  TX_NO_LOC  = 'A visit location has not been selected.';
+  TC_LOCONLY = 'Location for Current Activities';
+  TX_FUTURE_WARNING = 'You have selected a visit with a date in the future.  Are you sure?';
+  TC_FUTURE_WARNING = 'Visit Is In Future';
+
+var
+  uTIULocation: integer;
+  uTIULocationName: string;
+
+procedure UpdateVisit(FontSize: Integer);
+begin
+  UpdateEncounter(NPF_SUPPRESS);
+end;
+
+procedure UpdateVisit(FontSize: Integer; TIULocation: integer);
+begin
+  UpdateEncounter(NPF_SUPPRESS, 0, TIULocation);
+end;
+
+procedure UpdateEncounter(PersonFilter: Int64; ADate: TFMDateTime = 0;  TIULocation: integer = 0);
+const
+  UP_SHIFT = 85;
+var
+  frmEncounter: TfrmEncounter;
+  CanChange: Boolean;
+  TimedOut: Boolean;
+begin
+  uTIULocation := TIULocation;
+  if uTIULocation <> 0 then uTIULocationName := ExternalName(uTIULocation, FN_HOSPITAL_LOCATION);
+  frmEncounter := TfrmEncounter.Create(Application);
+  try
+    TimedOut := False;
+    ResizeAnchoredFormToFont(frmEncounter);
+    with frmEncounter do
+    begin
+      FFilter := PersonFilter;
+      FPCDate := ADate;
+      if PersonFilter = NPF_SUPPRESS then           // not prompting for provider
+      begin
+        lblProvider.Visible := False;
+        cboPtProvider.Visible := False;
+        lblInstruct.Visible := True;
+        Caption := TC_LOCONLY;
+        Height := frmEncounter.Height - UP_SHIFT;
+      end
+      else                                          // also prompt for provider
+      begin
+        // InitLongList must be done AFTER FFilter is set
+        cboPtProvider.InitLongList(Encounter.ProviderName);
+        cboPtProvider.SelectByIEN(FProvider);
+      end;
+      ShowModal;
+      if OKPressed then
+      begin
+        CanChange := True;
+        if (PersonFilter <> NPF_SUPPRESS) and
+           (((Encounter.Provider =  User.DUZ) and (FProvider <> User.DUZ)) or
+            ((Encounter.Provider <> User.DUZ) and (FProvider =  User.DUZ)))
+           then CanChange := ReviewChanges(TimedOut);
+        if CanChange then
+        begin
+          if PersonFilter <> NPF_SUPPRESS then Encounter.Provider := FProvider;
+          Encounter.Location      := FLocation;
+          Encounter.DateTime      := FDateTime;
+          Encounter.VisitCategory := FVisitCategory;
+          Encounter.StandAlone    := FStandAlone;
+        end;
+      end;
+    end;
+  finally
+    frmEncounter.Release;
+  end;
+end;
+
+procedure TfrmEncounter.FormCreate(Sender: TObject);
+var
+  ADateFrom, ADateThru: TDateTime;
+  BDateFrom, BDateThru: Integer;
+  BDisplayFrom, BDisplayThru: String;
+begin
+  inherited;
+  FProvider      := Encounter.Provider;
+  FLocation      := Encounter.Location;
+  FLocationName  := Encounter.LocationName;
+  FDateTime      := Encounter.DateTime;
+  FVisitCategory := Encounter.VisitCategory;
+  FStandAlone    := Encounter.StandAlone;
+  rpcGetEncFutureDays(FEncFutureLimit); 
+  rpcGetRangeForEncs(BDateFrom, BDateThru, False); // Get user's current date range settings.
+  if BDateFrom > 0 then
+    BDisplayFrom := 'T-' + IntToStr(BDateFrom)
+  else
+    BDisplayFrom := 'T';
+  if BDateThru > 0 then
+    BDisplayThru := 'T+' + IntToStr(BDateThru)
+  else
+    BDisplayThru := 'T';
+  lblDateRange.Caption := '(' + BDisplayFrom + ' thru ' + BDisplayThru + ')';
+  ADateFrom := (FMDateTimeToDateTime(FMToday) - BDateFrom);
+  ADateThru := (FMDateTimeToDateTime(FMToday) + BDateThru);
+  FFromDate      := DateTimeToFMDateTime(ADateFrom);
+  FThruDate      := DateTimeToFMDateTime(ADateThru) + 0.2359;
+  FFromCreate    := True;
+  with txtLocation do if Length(FLocationName) > 0 then
+  begin
+    Text := FLocationName + '  ';
+    if (FVisitCategory <> 'H') and (FDateTime <> 0) then
+      Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+  end
+  else Text := '< Select a location from the tabs below.... >';
+  OKPressed := False;
+  pgeVisit.ActivePage := tabClinic;
+  pgeVisitChange(Self);
+  if lstClinic.Items.Count = 0 then
+  begin
+    pgeVisit.ActivePage := tabNewVisit;
+    pgeVisitChange(Self);
+  end;
+  ckbHistorical.Hint := 'A historical visit or encounter is a visit that occurred at some time' + CRLF +
+                        'in the past or at some other location (possibly non-VA).  Although these' + CRLF +
+                        'are not used for workload credit, they can be used for setting up the' + CRLF +
+                        'PCE reminder maintenance system, or other non-workload-related reasons.';
+  FOldHintEvent := Application.OnShowHint;
+  Application.OnShowHint := AppShowHint;
+  FFromCreate := False;
+  //JAWS will read the second caption if 2 are displayed, so Combining Labels
+  CLINIC_TXT := lblClinic.Caption+'  ';
+  lblClinic.Caption := CLINIC_TXT + lblDateRange.Caption;
+  lblDateRange.Hide;
+end;
+
+procedure TfrmEncounter.cboPtProviderNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  case FFilter of
+    NPF_PROVIDER:  cboPtProvider.ForDataUse(SubSetOfProviders(StartFrom, Direction));
+//    NPF_ENCOUNTER: cboPtProvider.ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction, FloatToStr(FPCDate)));
+    else cboPtProvider.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+  end;
+end;
+
+procedure TfrmEncounter.pgeVisitChange(Sender: TObject);
+begin
+  inherited;
+  cmdDateRange.Visible := pgeVisit.ActivePage = tabClinic;
+  if (pgeVisit.ActivePage = tabClinic) and (lstClinic.Items.Count = 0)
+    then ListApptAll(lstClinic.Items, Patient.DFN, FFromDate, FThruDate);
+  if (pgeVisit.ActivePage = tabAdmit)    and (lstAdmit.Items.Count = 0)
+    then ListAdmitAll(lstAdmit.Items, Patient.DFN);
+  if pgeVisit.ActivePage = tabNewVisit then
+  begin
+    if cboNewVisit.Items.Count = 0 then
+    begin
+      if FVisitCategory <> 'H' then
+      begin
+        if uTIULocation <> 0 then
+        begin
+          cboNewVisit.InitLongList(uTIULocationName);
+          cboNewVisit.SelectByIEN(uTIULocation);
+        end
+        else
+        begin
+          cboNewVisit.InitLongList(FLocationName);
+          if Encounter.Location <> 0 then cboNewVisit.SelectByIEN(FLocation);
+        end;
+        FFromSelf := True;
+        with calVisitDate do if FDateTime <> 0 then FMDateTime := FDateTime else Text := 'NOW';
+        FFromSelf := False;
+      end
+      else cboNewVisit.InitLongList('');
+      ckbHistorical.Checked := FVisitCategory = 'E';
+    end; {if cboNewVisit}
+  end; {if pgeVisit.ActivePage}
+end;
+
+procedure TfrmEncounter.cboNewVisitNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboNewVisit.ForDataUse(SubSetOfNewLocs(StartFrom, Direction));
+end;
+
+procedure TfrmEncounter.cmdDateRangeClick(Sender: TObject);
+begin
+  dlgDateRange.FMDateStart := FFromDate;
+  dlgDateRange.FMDateStop  := FThruDate;
+  if dlgDateRange.Execute then
+  begin
+    FFromDate := dlgDateRange.FMDateStart;
+    FThruDate := dlgDateRange.FMDateStop + 0.2359;
+    lblDateRange.Caption := '(' + dlgDateRange.RelativeStart + ' thru '
+                                + dlgDateRange.RelativeStop + ')';
+    //label
+    lblClinic.Caption := CLINIC_TXT + lblDateRange.Caption;
+    //list
+    lstClinic.Caption := lblClinic.Caption + ' ' + lblDateRange.Caption;
+    lstClinic.Items.Clear;
+    ListApptAll(lstClinic.Items, Patient.DFN, FFromDate, FThruDate);
+  end;
+end;
+
+procedure TfrmEncounter.cboNewVisitChange(Sender: TObject);
+begin
+  inherited;
+  with cboNewVisit do
+  begin
+    FLocation := ItemIEN;
+    FLocationName := DisplayText[ItemIndex];
+    FDateTime := calVisitDate.FMDateTime;
+    SetVisitCat;
+    with txtLocation do
+    begin
+      Text := FLocationName + '  ';
+      if FDateTime <> 0 then Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end;
+  end;
+end;
+
+procedure TfrmEncounter.calVisitDateChange(Sender: TObject);
+begin
+  inherited;
+  // The FFromSelf was added because without it, a new visit (minus the seconds gets created.
+  // Setting the text of calVisit caused the text to be re-evaluated & changed the FMDateTime property.
+  if FFromSelf then Exit;
+  with cboNewVisit do
+  begin
+    FLocation := ItemIEN;
+    FLocationName := DisplayText[ItemIndex];
+    FDateTime := calVisitDate.FMDateTime;
+    SetVisitCat;
+    txtLocation.Text := FLocationName + '  ' + calVisitDate.Text;
+  end;
+end;
+
+procedure TfrmEncounter.calVisitDateExit(Sender: TObject);
+begin
+  inherited;
+  with cboNewVisit do if ItemIEN > 0 then
+  begin
+    FLocation := ItemIEN;
+    FLocationName := DisplayText[ItemIndex];
+    FDateTime := calVisitDate.FMDateTime;
+    SetVisitCat;
+    with txtLocation do
+    begin
+      Text := FLocationName + '  ';
+      if FDateTime <> 0 then Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end;
+  end;
+end;
+
+procedure TfrmEncounter.cmdOKClick(Sender: TObject);
+var
+  msg: string;
+  ADate, AMaxDate: TDateTime;
+
+begin
+  inherited;
+  msg := '';
+  if FLocation = 0 then msg := TX_NO_LOC;
+  if FDateTime <= 0 then msg := msg + CRLF + TX_NO_DATE
+  else if(pos('.',FloatToStr(FDateTime)) = 0) then msg := msg + CRLF + TX_NO_TIME;
+  if(msg <> '') then
+  begin
+    InfoBox(msg, TC_MISSING, MB_OK);
+    Exit;
+  end
+  else
+  begin
+    ADate := FMDateTimeToDateTime(Trunc(FDateTime));
+    AMaxDate := FMDateTimeToDateTime(FMToday) + StrToIntDef(FEncFutureLimit, 0);
+    if ADate > AMaxDate then
+      if InfoBox(TX_FUTURE_WARNING, TC_FUTURE_WARNING, MB_YESNO or MB_ICONQUESTION) = MRNO then exit;
+  end;
+  if FFilter <> NPF_SUPPRESS then FProvider := cboPtProvider.ItemIEN;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmEncounter.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmEncounter.ckbHistoricalClick(Sender: TObject);
+begin
+  SetVisitCat;
+end;
+
+{
+procedure TfrmEncounter.cboPtProviderChange(Sender: TObject);
+var
+  txt: string;
+  AIEN: Int64;
+
+begin
+  if(FFilter <> NPF_ENCOUNTER) then exit;
+  AIEN := cboPtProvider.ItemIEN;
+  if(AIEN <> 0) then
+  begin
+    txt := InvalidPCEProviderTxt(AIEN, FPCDate);
+    if(txt <> '') then
+    begin
+      InfoBox(cboPtProvider.text + txt, TX_BAD_PROV, MB_OK);
+      cboPtProvider.ItemIndex := -1;
+    end;
+  end;
+end;
+ }
+
+procedure TfrmEncounter.AppShowHint(var HintStr: string;
+  var CanShow: Boolean; var HintInfo: THintInfo);
+const
+  HistHintDelay = 30000; // 30 seconds
+
+begin
+  if (not Assigned(HintInfo.HintControl)) then exit;
+  if(HintInfo.HintControl = ckbHistorical) then
+    HintInfo.HideTimeout := HistHintDelay;
+  if(assigned(FOldHintEvent)) then
+    FOldHintEvent(HintStr, CanShow, HintInfo);
+end;
+
+procedure TfrmEncounter.FormDestroy(Sender: TObject);
+begin
+  //Application.OnShowHint := FOldHintEvent;     v22.11f - RV
+end;
+
+procedure TfrmEncounter.SetVisitCat;
+begin
+  if ckbHistorical.Checked then
+    FVisitCategory := 'E'
+  else
+    FVisitCategory := GetVisitCat('A', FLocation, Patient.Inpatient);
+  FStandAlone := (FVisitCategory = 'A');
+end;
+
+procedure TfrmEncounter.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Application.OnShowHint := FOldHintEvent;
+end;
+
+procedure TfrmEncounter.lstAdmitChange(Sender: TObject);
+begin
+  inherited;
+  with lstAdmit do
+  begin
+    FLocation := StrToIntDef(Piece(Items[ItemIndex], U, 2), 0);
+    FLocationName := Piece(Items[ItemIndex], U, 3);
+    FDateTime := MakeFMDateTime(ItemID);
+    FVisitCategory := 'H';
+    FStandAlone := False;
+    txtLocation.Text := FLocationName;  // don't show admit date (could confuse user)
+  end;
+end;
+
+procedure TfrmEncounter.lstClinicChange(Sender: TObject);
+// V|A;DateTime;LocIEN^DateTime^LocName^Status
+begin
+  inherited;
+  with lstClinic do
+  begin
+    FLocation := StrToIntDef(Piece(ItemID, ';', 3), 0);
+    FLocationName := Piece(Items[ItemIndex], U, 3);
+    FDateTime := MakeFMDateTime(Piece(ItemID,';', 2));
+    FVisitCategory := 'A';
+    FStandAlone := CharAt(ItemID, 1) = 'V';
+    with txtLocation do
+    begin
+      Text := FLocationName + '  ';
+      if FDateTime <> 0 then Text := Text + FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fFrame.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fFrame.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fFrame.dfm	(revision 1676)
@@ -0,0 +1,1182 @@
+inherited frmFrame: TfrmFrame
+  Left = 196
+  Top = 119
+  Caption = 'p'
+  ClientHeight = 574
+  ClientWidth = 687
+  FormStyle = fsMDIForm
+  Menu = mnuFrame
+  OldCreateOrder = True
+  Visible = True
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnHelp = FormHelp
+  OnResize = FormResize
+  ExplicitLeft = 196
+  ExplicitTop = 119
+  ExplicitWidth = 695
+  ExplicitHeight = 620
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlNoPatientSelected: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 687
+    Height = 574
+    Align = alClient
+    Caption = 'No patient is currently selected'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -19
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+    Visible = False
+  end
+  object pnlPatientSelected: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 687
+    Height = 574
+    Align = alClient
+    TabOrder = 0
+    object bvlPageTop: TBevel
+      Left = 1
+      Top = 41
+      Width = 685
+      Height = 1
+      Align = alTop
+      ExplicitWidth = 674
+    end
+    object pnlToolbar: TPanel
+      Left = 1
+      Top = 1
+      Width = 685
+      Height = 40
+      Align = alTop
+      BevelOuter = bvNone
+      Caption = 'object pnlRemoteData: TKeyClickPanel'
+      TabOrder = 0
+      object bvlToolTop: TBevel
+        Left = 0
+        Top = 0
+        Width = 685
+        Height = 1
+        Align = alTop
+        Style = bsRaised
+        ExplicitWidth = 674
+      end
+      object pnlCCOW: TPanel
+        Left = 0
+        Top = 1
+        Width = 39
+        Height = 39
+        Align = alLeft
+        BevelWidth = 2
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 8
+        object imgCCOW: TImage
+          Left = 2
+          Top = 2
+          Width = 35
+          Height = 35
+          Align = alClient
+          Center = True
+          Picture.Data = {
+            07544269746D617052030000424D520300000000000052020000280000001000
+            000010000000010008000000000000010000120B0000120B0000870000008700
+            00003F3E3F003A393A007B351600BCB6B30082340900642700008D3F0D00985B
+            3400B19A8C00B5A59B008B3700008A3700008936000088360000873500008635
+            00008535000083340000813300007D3100007D3200007B3100007A3000007830
+            0000772F0000762F0000742E00006F2C00006E2B00006C2B00006A2A00006829
+            0000662800006528000061260000602600005C2400005B240000592300005823
+            0000562200008B3801008C3902008C3903008C3A04008C3B05008D3B06008D3C
+            07008E3E0A008F420F009045130090481900935025009B6440009F6D4C00A275
+            5800A6806700AA897300AD917F00B8AEA700053A0D00063B0E000C3F14000E41
+            16000A3C17002351360000007F0000007B000101800001017F00040480000707
+            820007078100080882000A0A82000D0D7200101085000E0E7200131386001313
+            7500171787001919880021218A0025258C0023237B002B2B8E002C2C8E002F2F
+            8F002C2C79003535840039398500FFFFFF00DFDFDF00BFBFBF00BEBEBE00BCBC
+            BC00BBBBBB00B9B9B900B8B8B800B7B7B700B4B4B400B2B2B200B1B1B100ACAC
+            AC00A9A9A900A7A7A700A6A6A600A4A4A400A2A2A2009F9F9F00989898009797
+            970094949400929292008F8F8F008C8C8C008B8B8B0089898900858585008484
+            840083838300818181007F7F7F007E7E7E007D7D7D007B7B7B007A7A7A007979
+            79007777770076767600747474000A0A0A000707070001010100000000005D04
+            868686865D868686865D5D5D5D5D5D865B5B5B5B865B5B5B5B865D5D5D5D865B
+            8686868686868686865B865D5D5D865B865D865D5D5D865D865B865D5D5D865B
+            8686868686868686865B865D5D5D0A865B5B5B5B865B5B5B5B865D5D5D5D0A0A
+            868686865D868686865D5D5D5D5D0A0A0A0A0A0A5D5D5D5D5D0C0C5D5D5D0A0A
+            0A0A0A0A5D5D5D5D5D0C0C5D5D5D0A0A0A0A0A0A5D5D5D5D5D5D5D5D5D5D5D29
+            0A0A0A5D5D5D5D5D5D0C0C5D5D5D5D5D0A0A5D5D5D5D5D5D5D0C0C0C5D5D5D0A
+            0A0A2F5D5D5D5D5D5D5D0C0C0C5D5D0A0A0A305D5D5D5D5D5D5D5D0C0C5D5D02
+            0A0A025D5D5D5D5D0C0C0C0C0C5D5D5D5D5D5D5D5D5D5D5D0C0C0C0C5D5D}
+        end
+      end
+      object pnlPatient: TKeyClickPanel
+        Left = 39
+        Top = 1
+        Width = 187
+        Height = 39
+        Hint = 'Click for more patient information.'
+        Align = alLeft
+        BevelWidth = 2
+        Color = clInfoBk
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clInfoBk
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        TabStop = True
+        OnClick = pnlPatientClick
+        OnEnter = pnlPrimaryCareEnter
+        OnExit = pnlPrimaryCareExit
+        OnMouseDown = pnlPatientMouseDown
+        OnMouseUp = pnlPatientMouseUp
+        object lblPtName: TStaticText
+          Left = 6
+          Top = 4
+          Width = 118
+          Height = 17
+          Caption = 'No Patient Selected'
+          Font.Charset = ANSI_CHARSET
+          Font.Color = clInfoText
+          Font.Height = -12
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 0
+          OnClick = pnlPatientClick
+          OnMouseDown = pnlPatientMouseDown
+          OnMouseUp = pnlPatientMouseUp
+        end
+        object lblPtSSN: TStaticText
+          Left = 6
+          Top = 19
+          Width = 4
+          Height = 4
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clInfoText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 1
+          OnClick = pnlPatientClick
+          OnMouseDown = pnlPatientMouseDown
+          OnMouseUp = pnlPatientMouseUp
+        end
+        object lblPtAge: TStaticText
+          Left = 175
+          Top = 19
+          Width = 4
+          Height = 4
+          Alignment = taRightJustify
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clInfoText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 2
+          OnClick = pnlPatientClick
+          OnMouseDown = pnlPatientMouseDown
+          OnMouseUp = pnlPatientMouseUp
+        end
+      end
+      object pnlVisit: TKeyClickPanel
+        Left = 226
+        Top = 1
+        Width = 119
+        Height = 39
+        Hint = 'Click to change provider/location.'
+        Align = alLeft
+        BevelWidth = 2
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBtnFace
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        TabStop = True
+        OnClick = pnlVisitClick
+        OnEnter = pnlPrimaryCareEnter
+        OnExit = pnlPrimaryCareExit
+        object lblPtLocation: TStaticText
+          Left = 6
+          Top = 4
+          Width = 4
+          Height = 4
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -12
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = False
+          TabOrder = 0
+          OnClick = pnlVisitClick
+        end
+        object lblPtProvider: TStaticText
+          Left = 6
+          Top = 19
+          Width = 4
+          Height = 4
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 1
+          OnClick = pnlVisitClick
+        end
+      end
+      object pnlPrimaryCare: TKeyClickPanel
+        Left = 345
+        Top = 1
+        Width = 67
+        Height = 39
+        Hint = 'Primary Care Team / Primary Care Provider'
+        Align = alClient
+        BevelWidth = 2
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBtnFace
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        TabStop = True
+        OnClick = pnlPrimaryCareClick
+        OnEnter = pnlPrimaryCareEnter
+        OnExit = pnlPrimaryCareExit
+        OnMouseDown = pnlPrimaryCareMouseDown
+        OnMouseUp = pnlPrimaryCareMouseUp
+        object lblPtCare: TStaticText
+          Left = 6
+          Top = 4
+          Width = 4
+          Height = 4
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 0
+          OnClick = pnlPrimaryCareClick
+          OnMouseDown = pnlPrimaryCareMouseDown
+          OnMouseUp = pnlPrimaryCareMouseUp
+        end
+        object lblPtAttending: TStaticText
+          Left = 6
+          Top = 19
+          Width = 4
+          Height = 4
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 1
+          OnClick = pnlPrimaryCareClick
+          OnMouseDown = pnlPrimaryCareMouseDown
+          OnMouseUp = pnlPrimaryCareMouseUp
+        end
+      end
+      object pnlReminders: TKeyClickPanel
+        Left = 580
+        Top = 1
+        Width = 35
+        Height = 39
+        Align = alRight
+        BevelWidth = 2
+        Caption = 'Reminders'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBtnFace
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+        TabStop = True
+        OnClick = pnlRemindersClick
+        OnEnter = pnlPrimaryCareEnter
+        OnExit = pnlPrimaryCareExit
+        OnMouseDown = pnlRemindersMouseDown
+        OnMouseUp = pnlRemindersMouseUp
+        object imgReminder: TImage
+          Left = 2
+          Top = 2
+          Width = 31
+          Height = 35
+          Align = alClient
+          Center = True
+          OnMouseDown = pnlRemindersMouseDown
+          OnMouseUp = pnlRemindersMouseUp
+        end
+        object anmtRemSearch: TAnimate
+          Left = 2
+          Top = 2
+          Width = 31
+          Height = 35
+          Align = alClient
+          Visible = False
+        end
+      end
+      object pnlFlag: TKeyClickPanel
+        Left = 472
+        Top = 1
+        Width = 35
+        Height = 39
+        Hint = 'Click to display patient record flags.'
+        Align = alRight
+        BevelWidth = 2
+        Caption = 'Flag'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 4
+        TabStop = True
+        OnClick = pnlFlagClick
+        OnEnter = pnlFlagEnter
+        OnExit = pnlFlagExit
+        OnMouseDown = pnlFlagMouseDown
+        OnMouseUp = pnlFlagMouseUp
+        object lblFlag: TLabel
+          Left = 2
+          Top = 2
+          Width = 31
+          Height = 35
+          Align = alClient
+          Alignment = taCenter
+          Caption = 'Flag'
+          Enabled = False
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnFace
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          Layout = tlCenter
+          WordWrap = True
+          OnClick = pnlFlagClick
+          OnMouseDown = pnlFlagMouseDown
+          OnMouseUp = pnlFlagMouseUp
+          ExplicitWidth = 25
+          ExplicitHeight = 13
+        end
+      end
+      object pnlPostings: TKeyClickPanel
+        Left = 615
+        Top = 1
+        Width = 70
+        Height = 39
+        Hint = 'Click to display patient postings.'
+        Align = alRight
+        BevelWidth = 2
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBtnFace
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 7
+        TabStop = True
+        OnClick = pnlPostingsClick
+        OnEnter = pnlPrimaryCareEnter
+        OnExit = pnlPrimaryCareExit
+        OnMouseDown = pnlPostingsMouseDown
+        OnMouseUp = pnlPostingsMouseUp
+        object lblPtPostings: TStaticText
+          Left = 5
+          Top = 4
+          Width = 57
+          Height = 13
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'No Postings'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 0
+          OnClick = pnlPostingsClick
+          OnMouseDown = pnlPostingsMouseDown
+          OnMouseUp = pnlPostingsMouseUp
+        end
+        object lblPtCWAD: TStaticText
+          Left = 6
+          Top = 19
+          Width = 57
+          Height = 13
+          Alignment = taCenter
+          AutoSize = False
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clMaroon
+          Font.Height = -12
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 1
+          OnClick = pnlPostingsClick
+          OnMouseDown = pnlPostingsMouseDown
+          OnMouseUp = pnlPostingsMouseUp
+        end
+      end
+      object paVAA: TKeyClickPanel
+        Left = 412
+        Top = 1
+        Width = 60
+        Height = 39
+        Align = alRight
+        BevelOuter = bvNone
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBtnFace
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 3
+        Visible = False
+        DesignSize = (
+          60
+          39)
+        object laVAA2: TButton
+          Left = 0
+          Top = 19
+          Width = 59
+          Height = 20
+          Hint = 'Click to display patient insurance data'
+          Anchors = [akLeft, akTop, akRight, akBottom]
+          Caption = 'laVAA2'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = laVAA2Click
+        end
+        object laMHV: TButton
+          Left = 0
+          Top = 0
+          Width = 59
+          Height = 18
+          Hint = 'Click to display MHV data'
+          Anchors = [akLeft, akTop, akRight, akBottom]
+          Caption = 'laMHV'
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = laMHVClick
+        end
+      end
+      object pnlRemoteData: TKeyClickPanel
+        Left = 507
+        Top = 1
+        Width = 73
+        Height = 39
+        Align = alRight
+        BevelWidth = 2
+        Caption = 'Remote Data'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBtnFace
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 5
+        TabStop = True
+        OnClick = pnlCIRNClick
+        OnEnter = pnlPrimaryCareEnter
+        OnExit = pnlPrimaryCareExit
+        OnMouseDown = pnlCIRNMouseDown
+        OnMouseUp = pnlCIRNMouseUp
+        object pnlVistaWeb: TKeyClickPanel
+          Left = 2
+          Top = 2
+          Width = 69
+          Height = 18
+          Hint = 'Click to open VistaWeb'
+          Align = alTop
+          BevelWidth = 2
+          Caption = 'VistaWeb'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnFace
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          TabStop = True
+          OnClick = pnlVistaWebClick
+          OnEnter = pnlPrimaryCareEnter
+          OnExit = pnlPrimaryCareExit
+          OnMouseDown = pnlVistaWebMouseDown
+          OnMouseUp = pnlVistaWebMouseUp
+          object lblVistaWeb: TLabel
+            Left = 2
+            Top = 2
+            Width = 65
+            Height = 14
+            Align = alClient
+            Alignment = taCenter
+            Caption = 'VistaWeb'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clInfoText
+            Font.Height = -8
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+            Layout = tlCenter
+            OnClick = pnlVistaWebClick
+            ExplicitWidth = 46
+            ExplicitHeight = 13
+          end
+        end
+        object pnlCIRN: TKeyClickPanel
+          Left = 2
+          Top = 20
+          Width = 69
+          Height = 17
+          Align = alClient
+          BevelWidth = 2
+          Caption = 'Remote Data'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clBtnFace
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          TabStop = True
+          OnClick = pnlCIRNClick
+          OnEnter = pnlPrimaryCareEnter
+          OnExit = pnlPrimaryCareExit
+          OnMouseDown = pnlCIRNMouseDown
+          OnMouseUp = pnlCIRNMouseUp
+          object lblCIRN: TLabel
+            Left = 2
+            Top = 2
+            Width = 65
+            Height = 13
+            Align = alClient
+            Alignment = taCenter
+            Caption = 'Remote Data'
+            Enabled = False
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clBtnFace
+            Font.Height = -8
+            Font.Name = 'MS Sans Serif'
+            Font.Style = []
+            ParentFont = False
+            Layout = tlCenter
+            OnClick = pnlCIRNClick
+            ExplicitWidth = 63
+          end
+        end
+      end
+    end
+    object stsArea: TStatusBar
+      Left = 1
+      Top = 552
+      Width = 685
+      Height = 21
+      Panels = <
+        item
+          Width = 200
+        end
+        item
+          Width = 224
+        end
+        item
+          Style = psOwnerDraw
+          Width = 50
+        end
+        item
+          Width = 94
+        end
+        item
+          Width = 38
+        end
+        item
+          Width = 33
+        end>
+      PopupMenu = popAlerts
+      SizeGrip = False
+    end
+    object tabPage: TTabControl
+      Left = 1
+      Top = 530
+      Width = 685
+      Height = 22
+      Align = alBottom
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 1
+      TabPosition = tpBottom
+      OnChange = tabPageChange
+      OnMouseUp = tabPageMouseUp
+    end
+    object pnlPage: TPanel
+      Left = 1
+      Top = 42
+      Width = 685
+      Height = 488
+      Align = alClient
+      BevelOuter = bvNone
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 2
+      object lstCIRNLocations: TORListBox
+        Left = 424
+        Top = 0
+        Width = 209
+        Height = 78
+        TabStop = False
+        Style = lbOwnerDrawFixed
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBlue
+        Font.Height = -12
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ItemHeight = 13
+        ParentFont = False
+        ParentShowHint = False
+        PopupMenu = popCIRN
+        ShowHint = False
+        TabOrder = 0
+        Visible = False
+        OnClick = lstCIRNLocationsClick
+        OnExit = lstCIRNLocationsExit
+        Caption = 'Remote Data'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3,4'
+        TabPositions = '16'
+        OnChange = lstCIRNLocationsChange
+        RightClickSelect = True
+        CheckBoxes = True
+        CheckEntireLine = True
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 8
+    Top = 48
+    Data = (
+      (
+        'Component = pnlNoPatientSelected'
+        'Status = stsDefault')
+      (
+        'Component = pnlPatientSelected'
+        'Status = stsDefault')
+      (
+        'Component = pnlToolbar'
+        'Status = stsDefault')
+      (
+        'Component = pnlCCOW'
+        'Status = stsDefault')
+      (
+        'Component = pnlPatient'
+        'Status = stsDefault')
+      (
+        'Component = lblPtName'
+        'Status = stsDefault')
+      (
+        'Component = lblPtSSN'
+        'Status = stsDefault')
+      (
+        'Component = lblPtAge'
+        'Status = stsDefault')
+      (
+        'Component = pnlVisit'
+        'Status = stsDefault')
+      (
+        'Component = lblPtLocation'
+        'Status = stsDefault')
+      (
+        'Component = lblPtProvider'
+        'Status = stsDefault')
+      (
+        'Component = pnlPrimaryCare'
+        'Status = stsDefault')
+      (
+        'Component = lblPtCare'
+        'Status = stsDefault')
+      (
+        'Component = lblPtAttending'
+        'Status = stsDefault')
+      (
+        'Component = pnlReminders'
+        'Status = stsDefault')
+      (
+        'Component = anmtRemSearch'
+        'Status = stsDefault')
+      (
+        'Component = pnlFlag'
+        'Status = stsDefault')
+      (
+        'Component = pnlPostings'
+        'Status = stsDefault')
+      (
+        'Component = lblPtPostings'
+        'Status = stsDefault')
+      (
+        'Component = lblPtCWAD'
+        'Status = stsDefault')
+      (
+        'Component = paVAA'
+        'Status = stsDefault')
+      (
+        'Component = laVAA2'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = laMHV'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = stsArea'
+        'Status = stsDefault')
+      (
+        'Component = tabPage'
+        'Status = stsDefault')
+      (
+        'Component = pnlPage'
+        'Status = stsDefault')
+      (
+        'Component = lstCIRNLocations'
+        'Status = stsDefault')
+      (
+        'Component = frmFrame'
+        'Status = stsDefault')
+      (
+        'Component = pnlRemoteData'
+        'Status = stsDefault')
+      (
+        'Component = pnlVistaWeb'
+        'Status = stsDefault')
+      (
+        'Component = pnlCIRN'
+        'Status = stsDefault'))
+  end
+  object mnuFrame: TMainMenu
+    Left = 180
+    Top = 128
+    object mnuFile: TMenuItem
+      Caption = '&File'
+      GroupIndex = 1
+      object mnuFileOpen: TMenuItem
+        Caption = 'Select &New Patient...'
+        OnClick = mnuFileOpenClick
+      end
+      object mnuFileRefresh: TMenuItem
+        Caption = 'Refresh Patient &Information'
+        OnClick = mnuFileRefreshClick
+      end
+      object mnuFileResumeContext: TMenuItem
+        Caption = 'Rejoin patient link'
+        object mnuFileResumeContextSet: TMenuItem
+          Caption = 'Set new context'
+          OnClick = mnuFileResumeContextSetClick
+        end
+        object Useexistingcontext1: TMenuItem
+          Caption = 'Use existing context'
+          OnClick = mnuFileResumeContextGetClick
+        end
+      end
+      object mnuFileBreakContext: TMenuItem
+        Caption = 'Break patient link'
+        OnClick = mnuFileBreakContextClick
+      end
+      object mnuFileEncounter: TMenuItem
+        Caption = '&Update Provider / Location...'
+        OnClick = mnuFileEncounterClick
+      end
+      object mnuFileReview: TMenuItem
+        Caption = '&Review/Sign Changes...'
+        OnClick = mnuFileReviewClick
+      end
+      object Z7: TMenuItem
+        Caption = '-'
+        Visible = False
+      end
+      object mnuFileNext: TMenuItem
+        Caption = 'Next Noti&fication'
+        OnClick = mnuFileNextClick
+      end
+      object mnuFileNotifRemove: TMenuItem
+        Caption = 'Remo&ve Current Notification'
+        OnClick = mnuFileNotifRemoveClick
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+      end
+      object mnuFilePrintSetup: TMenuItem
+        Caption = 'Print &Setup...'
+        Enabled = False
+        OnClick = mnuFilePrintSetupClick
+      end
+      object mnuFilePrintSelectedItems: TMenuItem
+        Caption = 'Print Selected Items'
+        Enabled = False
+        OnClick = mnuFilePrintSelectedItemsClick
+      end
+      object mnuFilePrint: TMenuItem
+        Caption = '&Print...'
+        Enabled = False
+        OnClick = mnuFilePrintClick
+      end
+      object mnuFileExit: TMenuItem
+        Caption = 'E&xit'
+        OnClick = mnuFileExitClick
+      end
+    end
+    object mnuEdit: TMenuItem
+      Caption = '&Edit'
+      GroupIndex = 2
+      OnClick = mnuEditClick
+      object mnuEditUndo: TMenuItem
+        Caption = '&Undo'
+        ShortCut = 16474
+        OnClick = mnuEditUndoClick
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditCut: TMenuItem
+        Caption = 'Cu&t'
+        ShortCut = 16472
+        OnClick = mnuEditCutClick
+      end
+      object mnuEditCopy: TMenuItem
+        Caption = '&Copy'
+        ShortCut = 16451
+        OnClick = mnuEditCopyClick
+      end
+      object mnuEditPaste: TMenuItem
+        Caption = '&Paste'
+        ShortCut = 16470
+        OnClick = mnuEditPasteClick
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditPref: TMenuItem
+        Caption = 'P&references'
+        object Prefs1: TMenuItem
+          Caption = '&Fonts'
+          object mnu8pt: TMenuItem
+            Tag = 8
+            Caption = '8 pt'
+            RadioItem = True
+            OnClick = mnuFontSizeClick
+          end
+          object mnu10pt1: TMenuItem
+            Tag = 10
+            Caption = '10 pt'
+            RadioItem = True
+            OnClick = mnuFontSizeClick
+          end
+          object mnu12pt1: TMenuItem
+            Tag = 12
+            Caption = '12 pt'
+            RadioItem = True
+            OnClick = mnuFontSizeClick
+          end
+          object mnu14pt1: TMenuItem
+            Tag = 14
+            Caption = '14 pt'
+            RadioItem = True
+            OnClick = mnuFontSizeClick
+          end
+          object mnu18pt1: TMenuItem
+            Tag = 18
+            Caption = '18 pt'
+            RadioItem = True
+            OnClick = mnuFontSizeClick
+          end
+        end
+      end
+    end
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+    end
+    object mnuTools: TMenuItem
+      Caption = '&Tools'
+      GroupIndex = 8
+      OnClick = mnuToolsClick
+      object Z8: TMenuItem
+        Caption = '-'
+      end
+      object mnuToolsGraphing: TMenuItem
+        Caption = '&Graphing...'
+        ShortCut = 16455
+        OnClick = mnuToolsGraphingClick
+      end
+      object LabInfo1: TMenuItem
+        Caption = '&Lab Test Information...'
+        OnClick = LabInfo1Click
+      end
+      object mnuToolsOptions: TMenuItem
+        Caption = '&Options...'
+        OnClick = mnuToolsOptionsClick
+      end
+    end
+    object mnuHelp: TMenuItem
+      Caption = '&Help'
+      GroupIndex = 9
+      object mnuHelpContents: TMenuItem
+        Caption = '&Contents'
+        Hint = 'WinHlp32 cprs.hlp'
+        OnClick = ToolClick
+      end
+      object mnuHelpTutor: TMenuItem
+        Caption = '&Brief Tutorial'
+        Enabled = False
+        Visible = False
+      end
+      object Z5: TMenuItem
+        Caption = '-'
+      end
+      object mnuHelpBroker: TMenuItem
+        Caption = 'Last Broker Call'
+        OnClick = mnuHelpBrokerClick
+      end
+      object mnuHelpLists: TMenuItem
+        Caption = 'Show ListBox Data'
+        OnClick = mnuHelpListsClick
+      end
+      object mnuHelpSymbols: TMenuItem
+        Caption = 'Symbol Table'
+        OnClick = mnuHelpSymbolsClick
+      end
+      object Z6: TMenuItem
+        Caption = '-'
+      end
+      object mnuHelpAbout: TMenuItem
+        Caption = '&About CPRS'
+        OnClick = mnuHelpAboutClick
+      end
+    end
+  end
+  object popCIRN: TPopupMenu
+    Left = 539
+    Top = 60
+    object popCIRNSelectAll: TMenuItem
+      Caption = 'Select All'
+      OnClick = popCIRNSelectAllClick
+    end
+    object popCIRNSelectNone: TMenuItem
+      Caption = 'Select None'
+      OnClick = popCIRNSelectNoneClick
+    end
+    object popCIRNClose: TMenuItem
+      Caption = 'Close List'
+      OnClick = popCIRNCloseClick
+    end
+  end
+  object OROpenDlg: TOpenDialog
+    Filter = 'Exe file (*.exe)|*.exe'
+    Left = 260
+    Top = 257
+  end
+  object popAlerts: TPopupMenu
+    AutoPopup = False
+    Left = 320
+    Top = 200
+    object mnuAlertContinue: TMenuItem
+      Caption = 'Continue'
+      ShortCut = 16451
+      OnClick = mnuFileNextClick
+    end
+    object mnuAlertForward: TMenuItem
+      Caption = 'Forward'
+      ShortCut = 16454
+      OnClick = mnuAlertForwardClick
+    end
+    object mnuAlertRenew: TMenuItem
+      Caption = 'Renew'
+      ShortCut = 16466
+      OnClick = mnuAlertRenewClick
+    end
+  end
+  object AppEvents: TApplicationEvents
+    OnActivate = AppEventsActivate
+    OnShortCut = AppEventsShortCut
+    Left = 336
+    Top = 256
+  end
+  object compAccessTabPage: TVA508ComponentAccessibility
+    Component = tabPage
+    OnCaptionQuery = compAccessTabPageCaptionQuery
+    Left = 56
+    Top = 48
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fFrame.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fFrame.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fFrame.pas	(revision 1676)
@@ -0,0 +1,4497 @@
+unit fFrame;
+{ This is the main form for the CPRS GUI.  It provides a patient-encounter-user framework
+  which all the other forms of the GUI use. }
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+{$WARN SYMBOL_PLATFORM OFF}
+{$DEFINE CCOWBROKER}
+
+{.$define debug}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Tabs, ComCtrls,
+  ExtCtrls, Menus, StdCtrls, Buttons, ORFn, fPage, uConst, ORCtrls, Trpcb,
+  OleCtrls, VERGENCECONTEXTORLib_TLB, ComObj, AppEvnts, fBase508Form,
+  VA508AccessibilityManager
+{ TODO -oRV -cWVEHR Long Age : Changed to use long age }
+  , rWVEHR;
+
+type
+  TfrmFrame = class(TfrmBase508Form)
+    pnlToolbar: TPanel;
+    stsArea: TStatusBar;
+    tabPage: TTabControl;
+    pnlPage: TPanel;
+    bvlPageTop: TBevel;
+    bvlToolTop: TBevel;
+    pnlPatient: TKeyClickPanel;
+    lblPtName: TStaticText;
+    lblPtSSN: TStaticText;
+    lblPtAge: TStaticText;
+    pnlVisit: TKeyClickPanel;
+    lblPtLocation: TStaticText;
+    lblPtProvider: TStaticText;
+    mnuFrame: TMainMenu;
+    mnuFile: TMenuItem;
+    mnuFileExit: TMenuItem;
+    mnuFileOpen: TMenuItem;
+    mnuFileReview: TMenuItem;
+    Z1: TMenuItem;
+    mnuFilePrint: TMenuItem;
+    mnuEdit: TMenuItem;
+    mnuEditUndo: TMenuItem;
+    Z3: TMenuItem;
+    mnuEditCut: TMenuItem;
+    mnuEditCopy: TMenuItem;
+    mnuEditPaste: TMenuItem;
+    Z4: TMenuItem;
+    mnuEditPref: TMenuItem;
+    Prefs1: TMenuItem;
+    mnu18pt1: TMenuItem;
+    mnu14pt1: TMenuItem;
+    mnu12pt1: TMenuItem;
+    mnu10pt1: TMenuItem;
+    mnu8pt: TMenuItem;
+    mnuHelp: TMenuItem;
+    mnuHelpContents: TMenuItem;
+    mnuHelpTutor: TMenuItem;
+    Z5: TMenuItem;
+    mnuHelpAbout: TMenuItem;
+    mnuTools: TMenuItem;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    mnuHelpBroker: TMenuItem;
+    mnuFileEncounter: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    mnuHelpLists: TMenuItem;
+    Z6: TMenuItem;
+    mnuHelpSymbols: TMenuItem;
+    mnuFileNext: TMenuItem;
+    Z7: TMenuItem;
+    mnuFileRefresh: TMenuItem;
+    pnlPrimaryCare: TKeyClickPanel;
+    lblPtCare: TStaticText;
+    lblPtAttending: TStaticText;
+    pnlReminders: TKeyClickPanel;
+    imgReminder: TImage;
+    mnuViewReminders: TMenuItem;
+    anmtRemSearch: TAnimate;
+    lstCIRNLocations: TORListBox;
+    popCIRN: TPopupMenu;
+    popCIRNSelectAll: TMenuItem;
+    popCIRNSelectNone: TMenuItem;
+    popCIRNClose: TMenuItem;
+    mnuFilePrintSetup: TMenuItem;
+    LabInfo1: TMenuItem;
+    mnuFileNotifRemove: TMenuItem;
+    Z8: TMenuItem;
+    mnuToolsOptions: TMenuItem;
+    mnuChartSurgery: TMenuItem;
+    OROpenDlg: TOpenDialog;
+    mnuFileResumeContext: TMenuItem;
+    mnuFileResumeContextSet: TMenuItem;
+    Useexistingcontext1: TMenuItem;
+    mnuFileBreakContext: TMenuItem;
+    pnlCCOW: TPanel;
+    imgCCOW: TImage;
+    pnlPatientSelected: TPanel;
+    pnlNoPatientSelected: TPanel;
+    pnlFlag: TKeyClickPanel;
+    lblFlag: TLabel;
+    pnlPostings: TKeyClickPanel;
+    lblPtPostings: TStaticText;
+    lblPtCWAD: TStaticText;
+    mnuFilePrintSelectedItems: TMenuItem;
+    popAlerts: TPopupMenu;
+    mnuAlertContinue: TMenuItem;
+    mnuAlertForward: TMenuItem;
+    mnuAlertRenew: TMenuItem;
+    AppEvents: TApplicationEvents;
+    paVAA: TKeyClickPanel;
+    mnuToolsGraphing: TMenuItem;
+    laVAA2: TButton;
+    laMHV: TButton;
+    mnuViewInformation: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    compAccessTabPage: TVA508ComponentAccessibility;
+    pnlRemoteData: TKeyClickPanel;
+    pnlVistaWeb: TKeyClickPanel;
+    lblVistaWeb: TLabel;
+    pnlCIRN: TKeyClickPanel;
+    lblCIRN: TLabel;
+    procedure tabPageChange(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure pnlPatientMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlPatientMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure mnuFileExitClick(Sender: TObject);
+    procedure pnlPostingsMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlPostingsMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure mnuFontSizeClick(Sender: TObject);
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure mnuFileOpenClick(Sender: TObject);
+    procedure mnuHelpBrokerClick(Sender: TObject);
+    procedure mnuFileEncounterClick(Sender: TObject);
+    procedure mnuViewPostingsClick(Sender: TObject);
+    procedure mnuHelpAboutClick(Sender: TObject);
+    procedure mnuFileReviewClick(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure mnuHelpListsClick(Sender: TObject);
+    procedure ToolClick(Sender: TObject);
+    procedure mnuEditClick(Sender: TObject);
+    procedure mnuEditUndoClick(Sender: TObject);
+    procedure mnuEditCutClick(Sender: TObject);
+    procedure mnuEditCopyClick(Sender: TObject);
+    procedure mnuEditPasteClick(Sender: TObject);
+    procedure mnuHelpSymbolsClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure mnuFilePrintClick(Sender: TObject);
+    procedure mnuGECStatusClick(Sender: TObject);
+    procedure mnuFileNextClick(Sender: TObject);
+    procedure pnlPrimaryCareMouseDown(Sender: TObject;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure pnlPrimaryCareMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    function FormHelp(Command: Word; Data: Integer;
+      var CallHelp: Boolean): Boolean;
+    procedure pnlRemindersMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlRemindersMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlCIRNClick(Sender: TObject);
+    procedure lstCIRNLocationsClick(Sender: TObject);
+    procedure popCIRNCloseClick(Sender: TObject);
+    procedure popCIRNSelectAllClick(Sender: TObject);
+    procedure popCIRNSelectNoneClick(Sender: TObject);
+    procedure mnuFilePrintSetupClick(Sender: TObject);
+    procedure lstCIRNLocationsChange(Sender: TObject);
+    procedure LabInfo1Click(Sender: TObject);
+    procedure mnuFileNotifRemoveClick(Sender: TObject);
+    procedure mnuToolsOptionsClick(Sender: TObject);
+    procedure mnuFileRefreshClick(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormActivate(Sender: TObject);
+    procedure pnlPrimaryCareEnter(Sender: TObject);
+    procedure pnlPrimaryCareExit(Sender: TObject);
+    procedure pnlPatientClick(Sender: TObject);
+    procedure pnlVisitClick(Sender: TObject);
+    procedure pnlPrimaryCareClick(Sender: TObject);
+    procedure pnlRemindersClick(Sender: TObject);
+    procedure pnlPostingsClick(Sender: TObject);
+    procedure ctxContextorCanceled(Sender: TObject);
+    procedure ctxContextorCommitted(Sender: TObject);
+    procedure ctxContextorPending(Sender: TObject;
+      const aContextItemCollection: IDispatch);
+    procedure mnuFileBreakContextClick(Sender: TObject);
+    procedure mnuFileResumeContextGetClick(Sender: TObject);
+    procedure mnuFileResumeContextSetClick(Sender: TObject);
+    procedure pnlFlagMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlFlagMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlFlagClick(Sender: TObject);
+    procedure mnuFilePrintSelectedItemsClick(Sender: TObject);
+    procedure mnuAlertRenewClick(Sender: TObject);
+    procedure mnuAlertForwardClick(Sender: TObject);
+    procedure pnlFlagEnter(Sender: TObject);
+    procedure pnlFlagExit(Sender: TObject);
+    procedure tabPageMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure lstCIRNLocationsExit(Sender: TObject);
+    procedure AppEventsActivate(Sender: TObject);
+    procedure ScreenActiveFormChange(Sender: TObject);
+    procedure AppEventsShortCut(var Msg: TWMKey; var Handled: Boolean);
+    procedure mnuToolsClick(Sender: TObject);
+    procedure mnuToolsGraphingClick(Sender: TObject);
+    procedure pnlCIRNMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlCIRNMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure laMHVClick(Sender: TObject);
+    procedure laVAA2Click(Sender: TObject);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+    procedure compAccessTabPageCaptionQuery(Sender: TObject;
+      var Text: string);
+    procedure pnlVistaWebClick(Sender: TObject);
+    procedure pnlVistaWebMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure pnlVistaWebMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+  private
+    FProccessingNextClick : boolean;
+    FJustEnteredApp : boolean;
+    FCCOWInstalled: boolean;
+    FCCOWContextChanging: boolean;
+    FCCOWIconName: string;
+    FCCOWDrivedChange: boolean;
+    FCCOWBusy: boolean;
+    FCCOWError: boolean;
+    FNoPatientSelected: boolean;
+    FRefreshing: boolean;
+    FClosing: boolean;
+    FContextChanging: Boolean;
+    FChangeSource: Integer;
+    FCreateProgress: Integer;
+    FEditCtrl: TCustomEdit;
+    FLastPage: TfrmPage;
+    FNextButtonL: Integer;
+    FNextButtonR: Integer;
+    FNextButtonActive: Boolean;
+    FNextButtonBitmap: TBitmap;
+    FNextButton: TBitBtn;
+    FTerminate: Boolean;
+    FTabChanged: TNotifyEvent;
+    FOldActivate: TNotifyEvent;
+    FOldActiveFormChange: TNotifyEvent;
+    FECSAuthUser: Boolean;
+    FFixedStatusWidth: integer;
+    FPrevInPatient: Boolean;
+    FFirstLoad:    Boolean;
+    FFlagList: TStringList;
+    FPrevPtID: string;
+    FGraphFloatActive: boolean;
+    FGraphContext: string;
+    FDoNotChangeEncWindow: boolean;
+    FOrderPrintForm: boolean;
+    FReviewclick: boolean;
+    FCtrlTabUsed: boolean;
+    procedure RefreshFixedStatusWidth;
+    procedure FocusApplicationTopForm;
+    procedure AppActivated(Sender: TObject);
+    procedure AppDeActivated(Sender: TObject);
+    procedure AppException(Sender: TObject; E: Exception);
+    function AllowContextChangeAll(var Reason: string):  Boolean;
+    procedure ClearPatient;
+    procedure ChangeFont(NewFontSize: Integer);
+    //procedure CreateTab(var AnInstance: TObject; AClass: TClass; ATabID: integer; ALabel: string);
+    procedure CreateTab(ATabID: integer; ALabel: string);
+    procedure DetermineNextTab;
+    function ExpandCommand(x: string): string;
+    procedure FitToolbar;
+    procedure LoadSizesForUser;
+    procedure SaveSizesForUser;
+    procedure LoadUserPreferences;
+    procedure SaveUserPreferences;
+    procedure SwitchToPage(NewForm: TfrmPage);
+    function TabToPageID(Tab: Integer): Integer;
+    function TimeoutCondition: boolean;
+    function GetTimedOut: boolean;
+    procedure TimeOutAction;
+    procedure SetUserTools;
+    procedure SetDebugMenu;
+    procedure SetupPatient(AFlaggedList : TStringList = nil);
+    //procedure SetUpCIRN;
+    procedure RemindersChanged(Sender: TObject);
+    procedure ReportsOnlyDisplay;
+    procedure UMInitiate(var Message: TMessage);   message UM_INITIATE;
+    procedure UMNewOrder(var Message: TMessage);   message UM_NEWORDER;
+    procedure UMStatusText(var Message: TMessage); message UM_STATUSTEXT;
+    procedure UMShowPage(var Message: TMessage);   message UM_SHOWPAGE;
+    procedure WMSetFocus(var Message: TMessage);   message WM_SETFOCUS;
+    procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
+    procedure UpdateECSParameter(var CmdParameter: string);
+    function  ValidECSUser: boolean;
+    procedure StartCCOWContextor;
+    function  AllowCCOWContextChange(var CCOWResponse: UserResponse; NewDFN: string): boolean;
+    procedure UpdateCCOWContext;
+    procedure CheckHyperlinkResponse(aContextItemCollection: IDispatch; var HyperlinkReason: string);
+    procedure CheckForDifferentPatient(aContextItemCollection: IDispatch; var PtChanged: boolean);
+{$IFDEF CCOWBROKER}
+    procedure CheckForDifferentUser(aContextItemCollection: IDispatch; var UserChanged: boolean);
+{$ENDIF}
+    procedure HideEverything(AMessage: string = 'No patient is currently selected.');
+    procedure ShowEverything;
+    //function FindBestCCOWDFN(var APatientName: string): string;
+    function FindBestCCOWDFN: string;
+    procedure HandleCCOWError(AMessage: string);
+    procedure SetUpNextButton;
+    procedure NextButtonClick(Sender: TObject);
+    procedure NextButtonMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+  public
+   EnduringPtSelSplitterPos, frmFrameHeight, pnlPatientSelectedHeight: integer;
+    procedure SetBADxList;
+    procedure SetActiveTab(PageID: Integer);
+
+    function PageIDToTab(PageID: Integer): Integer;
+    procedure ShowHideChartTabMenus(AMenuItem: TMenuItem);
+    procedure UpdatePtInfoOnRefresh;
+    function  TabExists(ATabID: integer): boolean;
+    procedure DisplayEncounterText;
+    function DLLActive: boolean;
+    property ChangeSource:    Integer read FChangeSource;
+    property CCOWContextChanging: Boolean read FCCOWContextChanging;
+    property CCOWDrivedChange: Boolean  read FCCOWDrivedChange;
+    property CCOWBusy: Boolean    read FCCOWBusy  write FCCOWBusy;
+    property ContextChanging: Boolean read FContextChanging;
+    property TimedOut:        Boolean read GetTimedOut;
+    property Closing:         Boolean read FClosing;
+    property OnTabChanged:    TNotifyEvent read FTabChanged write FTabChanged;
+    property GraphFloatActive: boolean read FGraphFloatActive write FGraphFloatActive;
+    property GraphContext: string read FGraphContext write FGraphContext;
+    procedure ToggleMenuItemChecked(Sender: TObject);
+    procedure SetUpCIRN;
+    property DoNotChangeEncWindow: boolean read FDoNotChangeEncWindow write FDoNotChangeEncWindow;
+    property OrderPrintForm: boolean read FOrderPrintForm write FOrderPrintForm;
+  end;
+
+var
+  frmFrame: TfrmFrame;
+  uTabList: TStringList;
+  uRemoteType : string;
+  FlaggedPTList: TStringList;
+  ctxContextor : TContextorControl;
+  NextTab, LastTab: Integer;
+  uToolsMaxed, uToolsWarned, uUseVistaWeb: boolean;
+
+const
+  PASSCODE = '_gghwn7pghCrOJvOV61PtPvgdeEU2u5cRsGvpkVDjKT_H7SdKE_hqFYWsUIVT1H7JwT6Yz8oCtd2u2PALqWxibNXx3Yo8GPcTYsNaxW' + 'ZFo8OgT11D5TIvpu3cDQuZd3Yh_nV9jhkvb0ZBGdO9n-uNXPPEK7xfYWCI2Wp3Dsu9YDSd_EM34nvrgy64cqu9_jFJKJnGiXY96Lf1ecLiv4LT9qtmJ-BawYt7O9JZGAswi344BmmCbNxfgvgf0gfGZea';
+
+implementation
+
+{$R *.DFM}
+{$R sBitmaps}
+{$R sRemSrch}
+
+uses
+  ORNet, rCore, fPtSelMsg, fPtSel, fCover, fProbs, fMeds, fOrders, rOrders, fNotes, fConsults, fDCSumm,
+  rMisc, Clipbrd, fLabs, fReports, rReports, fPtDemo, fEncnt, fPtCWAD, uCore, fAbout, fReview, fxBroker,
+  fxLists, fxServer, ORSystem, fRptBox, fSplash, rODAllergy, uInit, fLabTests, fLabInfo,
+  uReminders, fReminderTree, ORClasses, fDeviceSelect, fDrawers, fReminderDialog, ShellAPI, rVitals,
+  fOptions, fGraphs, fGraphData, rTemplates, fSurgery, rSurgery, uEventHooks, uSignItems,
+  fDefaultEvent, rECS, fIconLegend, uOrders, fPtSelOptns, DateUtils, uSpell, uOrPtf, fPatientFlagMulti,
+  fAlertForward, UBAGlobals, fBAOptionsDiagnoses, UBACore, fOrdersSign, uVitals, fOrdersRenew, fMHTest, uFormMonitor
+  {$IFDEF CCOWBROKER}
+  , CCOW_const
+  {$ENDIF}
+  , VA508AccessibilityRouter, fOtherSchedule, VAUtils, uVA508CPRSCompatibility, fIVRoutes,
+  fPrintLocation, fTemplateEditor;
+
+var                                 //  RV 05/11/04
+  IsRunExecuted: Boolean = FALSE;           //  RV 05/11/04
+  GraphFloat: TfrmGraphs;
+
+const
+ //  moved to uConst - RV v16
+(*  CT_NOPAGE   = -1;                             // chart tab - none selected
+  CT_UNKNOWN  =  0;                             // chart tab - unknown (shouldn't happen)
+  CT_COVER    =  1;                             // chart tab - cover sheet
+  CT_PROBLEMS =  2;                             // chart tab - problem list
+  CT_MEDS     =  3;                             // chart tab - medications screen
+  CT_ORDERS   =  4;                             // chart tab - doctor's orders
+  CT_HP       =  5;                             // chart tab - history & physical
+  CT_NOTES    =  6;                             // chart tab - progress notes
+  CT_CONSULTS =  7;                             // chart tab - consults
+  CT_DCSUMM   =  8;                             // chart tab - discharge summaries
+  CT_LABS     =  9;                             // chart tab - laboratory results
+  CT_REPORTS  = 10;                             // chart tab - reports
+  CT_SURGERY  = 11;                             // chart tab - surgery*)
+
+  FCP_UPDATE  = 10;                             // form create about to check auto-update
+  FCP_SETHOOK = 20;                             // form create about to set timeout hooks
+  FCP_SERVER  = 30;                             // form create about to connect to server
+  FCP_CHKVER  = 40;                             // form create about to check version
+  FCP_OBJECTS = 50;                             // form create about to create core objects
+  FCP_FORMS   = 60;                             // form create about to create child forms
+  FCP_PTSEL   = 70;                             // form create about to select patient
+  FCP_FINISH  = 99;                             // form create finished successfully
+
+  TX_IN_USE     = 'VistA CPRS in use by: ';
+  TX_OPTION     = 'OR CPRS GUI CHART';
+  TX_ECSOPT     = 'EC GUI CONTEXT';
+  TX_PTINQ      = 'Retrieving demographic information...';
+  TX_NOTIF_STOP = 'Stop processing notifications?';
+  TC_NOTIF_STOP = 'Currently Processing Notifications';
+  TX_UNK_NOTIF  = 'Unable to process the follow up action for this notification';
+  TC_UNK_NOTIF  = 'Follow Up Action Not Implemented';
+  TX_NO_SURG_NOTIF = 'This notification must be processed using the Surgery tab, ' + CRLF +
+                     'which is not currently available to you.';
+  TC_NO_SURG_NOTIF = 'Surgery Tab Not Available';
+  TX_VER1       = 'This is version ';
+  TX_VER2       = ' of CPRSChart.exe.';
+  TX_VER3       = CRLF + 'The running server version is ';
+  TX_VER_REQ    = ' version server is required.';
+  TX_VER_OLD    = CRLF + 'It is strongly recommended that you upgrade.';
+  TX_VER_OLD2   = CRLF + 'The program cannot be run until the client is upgraded.';
+  TX_VER_NEW    = CRLF + 'The program cannot be run until the server is upgraded.';
+  TC_VER        = 'Server/Client Incompatibility';
+  TC_CLIERR     = 'Client Specifications Mismatch';
+
+  SHOW_NOTIFICATIONS = True;
+
+  TC_DGSR_ERR    = 'Remote Data Error';
+  TC_DGSR_SHOW   = 'Restricted Remote Record';
+  TC_DGSR_DENY   = 'Remote Access Denied';
+  TX_DGSR_YESNO  = CRLF + 'Do you want to continue accessing this remote patient record?';
+
+  TX_CCOW_LINKED   = 'Clinical Link On';
+  TX_CCOW_CHANGING = 'Clinical link changing';
+  TX_CCOW_BROKEN   = 'Clinical link broken';
+  TX_CCOW_ERROR    = 'CPRS was unable to communicate with the CCOW Context Vault' + CRLF +
+                     'CCOW patient synchronization will be unavailable for the remainder of this session.';
+  TC_CCOW_ERROR    = 'CCOW Error';
+
+function TfrmFrame.TimeoutCondition: boolean;
+begin
+  Result := (FCreateProgress < FCP_PTSEL);
+end;
+
+function TfrmFrame.GetTimedOut: boolean;
+begin
+  Result := uInit.TimedOut;
+end;
+
+procedure TfrmFrame.TimeOutAction;
+var
+  ClosingCPRS: boolean;
+
+  procedure CloseCPRS;
+  begin
+    if ClosingCPRS then
+      halt;
+    try
+      ClosingCPRS := TRUE; 
+      Close;
+    except
+      halt;
+    end;
+  end;
+
+begin
+  ClosingCPRS := FALSE;
+  try
+    if assigned(frmOtherSchedule) then frmOtherSchedule.Close;
+    if assigned (frmIVRoutes) then frmIVRoutes.Close;
+    if frmFrame.DLLActive then
+    begin
+       CloseVitalsDLL();
+       CloseMHDLL();
+    end;
+    CloseCPRS;
+  except
+    CloseCPRS;
+  end;
+end;
+
+{ General Functions and Procedures }
+
+procedure TfrmFrame.AppException(Sender: TObject; E: Exception);
+var
+  AnAddr: Pointer;
+  ErrMsg: string;
+begin
+  Application.NormalizeTopMosts;
+  if (E is EIntError) then
+  begin
+    ErrMsg := E.Message + CRLF +
+              'CreateProgress: ' + IntToStr(FCreateProgress) + CRLF +
+              'RPC Info: ' + RPCLastCall;
+    if EExternal(E).ExceptionRecord <> nil then
+    begin
+      AnAddr := EExternal(E).ExceptionRecord^.ExceptionAddress;
+      ErrMsg := ErrMsg + CRLF + 'Address was ' + IntToStr(Integer(AnAddr));
+    end;
+    ShowMsg(ErrMsg);
+  end
+  else if (E is EBrokerError) then
+  begin
+    Application.ShowException(E);
+    FCreateProgress := FCP_FORMS;
+    Close;
+  end
+  else if (E is EOleException) then
+  begin
+    Application.ShowException(E);
+    FCreateProgress := FCP_FORMS;
+    Close;
+  end
+  else Application.ShowException(E);
+  Application.RestoreTopMosts;
+end;
+
+function TfrmFrame.AllowContextChangeAll(var Reason: string): Boolean;
+var
+  Silent: Boolean;
+begin
+  if pnlNoPatientSelected.Visible then
+  begin
+    Result := True;
+    exit;
+  end;
+  FContextChanging := True;
+  Result := True;
+  if COMObjectActive or SpellCheckInProgress or DLLActive then
+    begin
+      Reason := 'COM_OBJECT_ACTIVE';
+      Result:= False;
+    end;
+  if Result then Result := frmCover.AllowContextChange(Reason);
+  if Result then Result := frmProblems.AllowContextChange(Reason);
+  if Result then Result := frmMeds.AllowContextChange(Reason);
+  if Result then Result := frmOrders.AllowContextChange(Reason);
+  if Result then Result := frmNotes.AllowContextChange(Reason);
+  if Result then Result := frmConsults.AllowContextChange(Reason);
+  if Result then Result := frmDCSumm.AllowContextChange(Reason);
+  if Result then
+    if Assigned(frmSurgery) then Result := frmSurgery.AllowContextChange(Reason);;
+  if Result then Result := frmLabs.AllowContextChange(Reason);;
+  if Result then Result := frmReports.AllowContextChange(Reason);
+  if Result then Result := frmGraphData.AllowContextChange(Reason);
+  if (not User.IsReportsOnly) then
+    if Result and Changes.RequireReview then //Result := ReviewChanges(TimedOut);
+      case BOOLCHAR[FCCOWContextChanging] of
+        '1': begin
+               if Changes.RequireReview then
+                 begin
+                   Reason := 'Items will be left unsigned.';
+                   Result := False;
+                 end
+               else
+                 Result := True;
+             end;
+        '0': begin
+               Silent := (TimedOut) or (Reason = 'COMMIT');
+               Result := ReviewChanges(Silent);
+             end;
+      end;
+  FContextChanging := False;
+end;
+
+procedure TfrmFrame.ClearPatient;
+{ call all pages to make sure patient related information is cleared (when switching patients) }
+begin
+  //if frmFrame.Timedout then Exit; // added to correct Access Violation when "Refresh Patient Information" selected
+  lblPtName.Caption     := '';
+  lblPtSSN.Caption      := '';
+  lblPtAge.Caption      := '';
+  pnlPatient.Caption    := '';
+  lblPtCWAD.Caption     := '';
+  if DoNotChangeEncWindow = false then
+     begin
+      lblPtLocation.Caption := 'Visit Not Selected';
+      lblPtProvider.Caption := 'Current Provider Not Selected';
+      pnlVisit.Caption      := lblPtLocation.Caption + CRLF + lblPtProvider.Caption;
+     end;
+  lblPtCare.Caption     := 'Primary Care Team Unassigned';
+  lblPtAttending.Caption := '';
+  pnlPrimaryCare.Caption := lblPtCare.Caption + ' ' + lblPtAttending.Caption;
+  frmCover.ClearPtData;
+  frmProblems.ClearPtData;
+  frmMeds.ClearPtData;
+  frmOrders.ClearPtData;
+  frmNotes.ClearPtData;
+  frmConsults.ClearPtData;
+  frmDCSumm.ClearPtData;
+  if Assigned(frmSurgery) then frmSurgery.ClearPtData;
+  frmLabs.ClearPtData;
+  frmGraphData.ClearPtData;
+  frmReports.ClearPtData;
+  tabPage.TabIndex := PageIDToTab(CT_NOPAGE);       // to make sure DisplayPage gets called
+  tabPageChange(tabPage);
+  ClearReminderData;
+  SigItems.Clear;
+  Changes.Clear;
+  lstCIRNLocations.Clear;
+  uRemoteType := '';
+  ClearFlag;
+  if Assigned(FlagList) then FlagList.Clear;
+  HasFlag := False;
+  HidePatientSelectMessages;
+  if (GraphFloat <> nil) and GraphFloatActive then
+  with GraphFloat do
+  begin
+    Initialize;
+    DisplayData('top');
+    DisplayData('bottom');
+    GtslCheck.Clear;
+    Caption := 'CPRS Graphing - Patient: ' + MixedCase(Patient.Name);
+  end;
+  if frmFrame.TimedOut then
+  begin
+    infoBox('CPRS has encountered a serious problem and is unable to display the selected patient''s data. This is a known issue documented in PSPO 1089.'
+            + 'To prevent patient safety issues, CPRS is shutting down. Shutting down and then restarting CPRS will correct the problem, and you may continue working in CPRS.'
+             + CRLF + CRLF + 'Please report all occurrences of this problem by contacting your CPRS Help Desk.', 'CPRS Error', MB_OK);
+    frmFrame.Close;
+  end;
+end;
+
+procedure TfrmFrame.DisplayEncounterText;
+{ updates the display in the header bar of encounter related information (location & provider) }
+begin
+  if DoNotChangeEncWindow = true then exit;
+  with Encounter do
+  begin
+    if Length(LocationText) > 0
+      then lblPtLocation.Caption := LocationText
+      else lblPtLocation.Caption := 'Visit Not Selected';
+    if Length(ProviderName) > 0
+      then lblPtProvider.Caption := 'Provider:  ' + ProviderName
+      else lblPtProvider.Caption := 'Current Provider Not Selected';
+  end;
+  pnlVisit.Caption := lblPtLocation.Caption + CRLF + lblPtProvider.Caption;
+  FitToolBar;
+end;
+
+function TfrmFrame.DLLActive: boolean;
+begin
+  Result := (VitalsDLLHandle <> 0) or (MHDLLHandle <> 0);
+end;
+
+{ Form Events (Create, Destroy) ----------------------------------------------------------- }
+
+procedure TfrmFrame.RefreshFixedStatusWidth;
+begin
+  with stsArea do
+    FFixedStatusWidth := Panels[0].Width + Panels[2].Width + Panels[3].Width + Panels[4].Width;
+end;
+
+procedure TfrmFrame.FormCreate(Sender: TObject);
+{ connect to server, create tab pages, select a patient, & initialize core objects }
+var
+  ClientVer, ServerVer, ServerReq: string;
+begin
+  FProccessingNextClick := false;
+  FJustEnteredApp := false;
+  SizeHolder := TSizeHolder.Create;
+  FOldActiveFormChange := Screen.OnActiveFormChange;
+  Screen.OnActiveFormChange := ScreenActiveFormChange;
+  if not (ParamSearch('CCOW')='DISABLE') then
+    try
+      StartCCOWContextor;
+    except
+      IsRunExecuted := False;
+      FCCOWInstalled := False;
+      pnlCCOW.Visible := False;
+      mnuFileResumeContext.Visible := False;
+      mnuFileBreakContext.Visible := False;
+    end
+  else
+    begin
+      IsRunExecuted := False;
+      FCCOWInstalled := False;
+      pnlCCOW.Visible := False;
+      mnuFileResumeContext.Visible := False;
+      mnuFileBreakContext.Visible := False;
+    end;
+  RefreshFixedStatusWidth;
+  FTerminate := False;
+  AutoUpdateCheck;
+
+  FFlagList := TStringList.Create;
+
+  // setup initial timeout here so can timeout logon
+  FCreateProgress := FCP_SETHOOK;
+  InitTimeOut(TimeoutCondition, TimeOutAction);
+
+  // connect to the server and create an option context
+  FCreateProgress := FCP_SERVER;
+
+{$IFDEF CCOWBROKER}
+  EnsureBroker;
+  if ctxContextor <> nil then
+  begin
+    if ParamSearch('CCOW') = 'PATIENTONLY' then
+      RPCBrokerV.Contextor := nil
+    else
+      RPCBrokerV.Contextor := ctxContextor;
+  end
+  else
+    RPCBrokerV.Contextor := nil;
+{$ENDIF}
+
+  if not ConnectToServer(TX_OPTION) then
+  begin
+    if Assigned(RPCBrokerV) then
+      InfoBox(RPCBrokerV.RPCBError, 'Error', MB_OK or MB_ICONERROR);
+    Close;
+    Exit;
+  end;
+
+  if ctxContextor <> nil then
+  begin
+    if not (ParamSearch('CCOW') = 'PATIENTONLY') then
+      ctxContextor.NotificationFilter := ctxContextor.NotificationFilter + ';User';
+  end;
+
+  FECSAuthUser := ValidECSUser;
+  uECSReport := TECSReport.Create;
+  uECSReport.ECSPermit := FECSAuthUser;
+  RPCBrokerV.CreateContext(TX_OPTION);
+  Application.OnException := AppException;
+  FOldActivate := Application.OnActivate;
+  Application.OnActivate := AppActivated;
+  Application.OnDeActivate := AppDeActivated;
+  
+  // create initial core objects
+  FCreateProgress := FCP_OBJECTS;
+  User := TUser.Create;
+
+  // make sure we're using the matching server version
+  FCreateProgress := FCP_CHKVER;
+  ClientVer := ClientVersion(Application.ExeName);
+  ServerVer := ServerVersion(TX_OPTION, ClientVer);
+  if (ServerVer = '0.0.0.0') then
+  begin
+    InfoBox('Unable to determine current version of server.', TX_OPTION, MB_OK);
+    Close;
+    Exit;
+  end;
+  ServerReq := Piece(FileVersionValue(Application.ExeName, FILE_VER_INTERNALNAME), ' ', 1);
+  if (ClientVer <> ServerReq) then
+  begin
+    InfoBox('Client "version" does not match client "required" server.', TC_CLIERR, MB_OK);
+    Close;
+    Exit;
+  end;
+  if (CompareVersion(ServerVer, ServerReq) <> 0) then
+  begin
+    if (sCallV('ORWU DEFAULT DIVISION', [nil]) = '1') then
+    begin
+      if (InfoBox('Proceed with mismatched Client and Server versions?', TC_CLIERR, MB_YESNO) = ID_NO) then
+      begin
+        Close;
+        Exit;
+      end;
+    end
+    else
+    begin
+      if (CompareVersion(ServerVer, ServerReq) > 0) then // Server newer than Required
+      begin
+        // NEXT LINE COMMENTED OUT - CHANGED FOR VERSION 19.16, PATCH OR*3*155:
+        //      if GetUserParam('ORWOR REQUIRE CURRENT CLIENT') = '1' then
+        if (true) then // "True" statement guarantees "required" current version client.
+        begin
+          InfoBox(TX_VER1 + ClientVer + TX_VER2 + CRLF + ServerReq + TX_VER_REQ + TX_VER3 + ServerVer + '.' + TX_VER_OLD2, TC_VER, MB_OK);
+          Close;
+          Exit;
+        end;
+      end
+      else InfoBox(TX_VER1 + ClientVer + TX_VER2 + CRLF + ServerReq + TX_VER_REQ + TX_VER3 + ServerVer + '.' + TX_VER_OLD, TC_VER, MB_OK);
+    end;
+    if (CompareVersion(ServerVer, ServerReq) < 0) then // Server older then Required
+    begin
+      InfoBox(TX_VER1 + ClientVer + TX_VER2 + CRLF + ServerReq + TX_VER_REQ + TX_VER3 + ServerVer + '.' + TX_VER_NEW, TC_VER, MB_OK);
+      Close;
+      Exit;
+    end;
+  end;
+
+  // Add future tabs here as they are created/implemented:
+  if (
+     (not User.HasCorTabs) and
+     (not User.HasRptTab)
+     )
+  then
+  begin
+    InfoBox('No valid tabs assigned', 'Tab Access Problem', MB_OK);
+    Close;
+    Exit;
+  end;
+
+  // create creating core objects
+  Patient := TPatient.Create;
+  Encounter := TEncounter.Create;
+  Changes := TChanges.Create;
+  Notifications := TNotifications.Create;
+  RemoteSites := TRemoteSiteList.Create;
+  RemoteReports := TRemoteReportList.Create;
+  uTabList := TStringList.Create;
+  FlaggedPTList := TStringList.Create;
+  HasFlag  := False;
+  FlagList := TStringList.Create;
+  // set up structures specific to the user
+  Caption := TX_IN_USE + MixedCase(User.Name) + '  (' + RPCBrokerV.Server + ')';
+  SetDebugMenu;
+  if InteractiveRemindersActive then
+    NotifyWhenRemindersChange(RemindersChanged);
+  // load all the tab pages
+  FCreateProgress := FCP_FORMS;
+  //CreateTab(TObject(frmProblems), TfrmProblems, CT_PROBLEMS, 'Problems');
+  CreateTab(CT_PROBLEMS, 'Problems');
+  CreateTab(CT_MEDS,     'Meds');
+  CreateTab(CT_ORDERS,   'Orders');
+  CreateTab(CT_NOTES,    'Notes');
+  CreateTab(CT_CONSULTS, 'Consults');
+  if ShowSurgeryTab then CreateTab(CT_SURGERY,  'Surgery');
+  CreateTab(CT_DCSUMM,   'D/C Summ');
+  CreateTab(CT_LABS,     'Labs');
+  CreateTab(CT_REPORTS,  'Reports');
+  CreateTab(CT_COVER,    'Cover Sheet');
+  ShowHideChartTabMenus(mnuViewChart);
+  //  We defer calling LoadUserPreferences to UMInitiate, so that the font sizing
+  // routines recognize this as the application's main form (this hasn't been
+  // set yet).
+  FNextButtonBitmap := TBitmap.Create;
+  FNextButtonBitmap.LoadFromResourceName(hInstance, 'BMP_HANDRIGHT');
+  // set the timeout to DTIME now that there is a connection
+  UpdateTimeOutInterval(User.DTIME * 1000);  // DTIME * 1000 mSec
+  // get a patient
+  HandleNeeded;                              // make sure handle is there for ORWPT SHARE call
+  FCreateProgress := FCP_PTSEL;
+  Enabled := False;
+  FFirstLoad := True;                       // First time to initialize the fFrame
+  FCreateProgress := FCP_FINISH;
+  pnlReminders.Visible := InteractiveRemindersActive;
+  GraphFloatActive := false;
+  GraphContext := '';
+  frmGraphData := TfrmGraphData.Create(self);        // form is only visible for testing
+  GraphDataOnUser;
+  uRemoteType := '';
+  FPrevPtID := '';
+  SetUserTools;
+  EnduringPtSelSplitterPos := 0;
+  if User.IsReportsOnly then // Reports Only tab.
+    ReportsOnlyDisplay; // Calls procedure to hide all components/menus not needed.
+  InitialOrderVariables;
+  PostMessage(Handle, UM_INITIATE, 0, 0);    // select patient after main form is created
+//  mnuFileOpenClick(Self);
+//  if Patient.DFN = '' then  //*DFN*
+//  begin
+//    Close;
+//    Exit;
+//  end;
+//  if WindowState = wsMinimized then WindowState := wsNormal;
+  SetFormMonitoring(true);
+end;
+
+procedure TfrmFrame.StartCCOWContextor;
+begin
+  try
+    ctxContextor := TContextorControl.Create(Self);
+    with ctxContextor do
+      begin
+        OnPending := ctxContextorPending;
+        OnCommitted := ctxContextorCommitted;
+        OnCanceled := ctxContextorCanceled;
+      end;
+    FCCOWBusy := False;
+    FCCOWInstalled := True;
+    FCCOWDrivedChange := False;
+    ctxContextor.Run('CPRSChart', '', TRUE, 'Patient');
+    IsRunExecuted := True;
+  except
+    on exc : EOleException do
+    begin
+      IsRunExecuted := False;
+      FreeAndNil(ctxContextor);
+      try
+        ctxContextor := TContextorControl.Create(Self);
+        with ctxContextor do
+          begin
+            OnPending := ctxContextorPending;
+            OnCommitted := ctxContextorCommitted;
+            OnCanceled := ctxContextorCanceled;
+          end;
+        FCCOWBusy := False;
+        FCCOWInstalled := True;
+        FCCOWDrivedChange := False;
+        ctxContextor.Run('CPRSChart' + '#', '', TRUE, 'Patient');
+        IsRunExecuted := True;
+        if ParamSearch('CCOW') = 'FORCE' then
+        begin
+          mnuFileResumeContext.Enabled := False;
+          mnuFileBreakContext.Visible := True;
+          mnuFileBreakContext.Enabled := True;
+        end
+        else
+        begin
+          ctxContextor.Suspend;
+          mnuFileResumeContext.Visible := True;
+          mnuFileBreakContext.Visible := True;
+          mnuFileBreakContext.Enabled := False;
+        end;
+      except
+        IsRunExecuted := False;
+        FCCOWInstalled := False;
+        FreeAndNil(ctxContextor);
+        pnlCCOW.Visible := False;
+        mnuFileResumeContext.Visible := False;
+        mnuFileBreakContext.Visible := False;
+      end;
+    end;
+  end
+end;
+
+procedure TfrmFrame.UMInitiate(var Message: TMessage);
+begin
+  NotifyOtherApps(NAE_OPEN, IntToStr(User.DUZ));
+  LoadUserPreferences;
+  GetBAStatus(User.DUZ,Patient.DFN);
+  mnuFileOpenClick(Self);
+  Enabled := True;
+  // If TimedOut, Close has already been called.
+  if not TimedOut and (Patient.DFN = '') then Close;
+end;
+
+procedure TfrmFrame.FormDestroy(Sender: TObject);
+{ free core objects used by CPRS }
+begin
+  Application.OnActivate := FOldActivate;
+  Screen.OnActiveFormChange := FOldActiveFormChange;
+  FNextButtonBitmap.Free;
+  if FNextButton <> nil then FNextButton.Free;
+  uTabList.Free;
+  FlaggedPTList.Free;
+  RemoteSites.Free;
+  RemoteReports.Free;
+  Notifications.Free;
+  Changes.Free;
+  Encounter.Free;
+  Patient.Free;
+  User.Free;
+  SizeHolder.Free;
+  ctxContextor.Free;
+end;
+
+procedure TfrmFrame.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+{ cancels close if the user cancels the ReviewChanges screen }
+var
+  Reason: string;
+begin
+  if (FCreateProgress < FCP_FINISH) then Exit;
+  if User.IsReportsOnly then // Reports Only tab.
+    exit;
+  if TimedOut then
+    begin
+      if Changes.RequireReview then ReviewChanges(TimedOut);
+      Exit;
+    end;
+  if not AllowContextChangeAll(Reason) then CanClose := False;
+end;
+
+procedure TfrmFrame.SetUserTools;
+var
+  ToolItems: TToolItemList;
+  i: Integer;
+  UserTool: TMenuItem;
+  MaxedOut: boolean;
+  //  OptionsClick: TNotifyEvent;
+begin
+  if User.IsReportsOnly then // Reports Only tab.
+  begin
+    mnuTools.Clear; // Remove all current items.
+    UserTool := TMenuItem.Create(Self);
+    UserTool.Caption := 'Options...';
+    UserTool.Hint := 'Options';
+    UserTool.OnClick := mnuToolsOptionsClick;
+    mnuTools.Add(UserTool); // Add back the "Options" menu.
+    exit;
+  end;
+  if User.GECStatus then
+  begin
+    UserTool := TMenuItem.Create(self);
+    UserTool.Caption := 'GEC Referral Status Display';
+    UserTool.Hint := 'GEC Referral Status Display';
+    UserTool.OnClick := mnuGECStatusClick;
+    mnuTools.Add(UserTool); // Add back the "Options" menu.
+    //exit;
+  end;
+  GetToolMenu(ToolItems, MaxedOut); // For all other users, proceed normally with creation of Tools menu:
+  for i := Low(ToolItems) to High(ToolItems) do
+  begin
+    if (AnsiCompareText(ToolItems[i].Caption, 'Event Capture Interface') = 0 ) and
+       (not uECSReport.ECSPermit) then
+    begin
+      ToolItems[i].Caption := '';
+      ToolItems[i].Action  := '';
+      Break;
+    end;
+  end;
+  if MaxedOut then
+  begin
+    uToolsMaxed := True;
+    uToolsWarned := False;
+  end;
+  for i := 0 to MAX_TOOLITEMS do with ToolItems[i] do if Length(Caption) > 0 then
+  begin
+    UserTool := TMenuItem.Create(Self);
+    UserTool.Caption := Caption;
+    UserTool.Hint := Action;
+    UserTool.OnClick := ToolClick;
+    mnuTools.Insert(i, UserTool);
+  end;
+end;
+
+procedure TfrmFrame.mnuToolsClick(Sender: TObject);
+const
+  TX_TOO_MANY_TOOLS = 'Some defined items may not be shown';
+  TC_TOO_MANY_TOOLS = 'Tool Menu Limit Exceeded';
+begin
+  if uToolsMaxed and (not uToolsWarned) then
+  begin
+    InfoBox(TX_TOO_MANY_TOOLS, TC_TOO_MANY_TOOLS, MB_ICONWARNING or MB_OK);
+    uToolsWarned := True;
+  end;
+end;
+
+procedure TfrmFrame.UpdateECSParameter(var CmdParameter: string);  //ECS
+var
+  vstID,AccVer,Svr,SvrPort,VUser: string;
+begin
+  AccVer  := '';
+  Svr     := '';
+  SvrPort := '';
+  VUser   := '';
+  if RPCBrokerV <> nil then
+  begin
+    AccVer  := RPCBrokerV.AccessVerifyCodes;
+    Svr     := RPCBrokerV.Server;
+    SvrPort := IntToStr(RPCBrokerV.ListenerPort);
+    VUser   := RPCBrokerV.User.DUZ;
+  end;
+  vstID := GetVisitID;
+  CmdParameter :=' Svr=' +Svr
+                 +' SvrPort='+SvrPort
+                 +' VUser='+ VUser
+                 +' PtIEN='+ Patient.DFN
+                 +' PdIEN='+IntToStr(Encounter.Provider)
+                 +' vstIEN='+vstID
+                 +' locIEN='+IntToStr(Encounter.Location)
+                 +' Date=0'
+                 +' Division='+GetDivisionID;
+
+end;
+
+procedure TfrmFrame.compAccessTabPageCaptionQuery(Sender: TObject;
+  var Text: string);
+begin
+  Text := GetTabText;
+end;
+
+function TfrmFrame.ValidECSUser: boolean;   //ECS
+var
+  isTrue: boolean;
+begin
+  Result := True;
+  with RPCBrokerV do
+  begin
+    ShowErrorMsgs := semQuiet;
+    Connected     := True;
+   try
+      isTrue := CreateContext(TX_ECSOPT);
+      if not isTrue then
+        Result := False;
+      ShowErrorMsgs := semRaise;
+    except
+      on E: Exception do
+      begin
+        ShowErrorMsgs := semRaise;
+        Result := False;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmFrame.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  FClosing := TRUE;
+  SetFormMonitoring(false);
+  if FCreateProgress < FCP_FINISH then FTerminate := True;
+
+  FlushNotifierBuffer;
+  if FCreateProgress = FCP_FINISH then NotifyOtherApps(NAE_CLOSE, '');
+  TerminateOtherAppNotification;
+
+  if GraphFloat <> nil then
+  begin
+    if frmFrame.GraphFloatActive then
+      GraphFloat.Close;
+    GraphFloat.Release;
+  end;
+
+  // unhook the timeout hooks
+  ShutDownTimeOut;
+  // clearing changes will unlock notes
+  if FCreateProgress = FCP_FINISH then Changes.Clear;
+  // clear server side flag global tmp
+  if FCreateProgress = FCP_FINISH then ClearFlag;
+  // save user preferences
+  if FCreateProgress = FCP_FINISH then SaveUserPreferences;
+  // call close for each page in case there is any special processing
+  if FCreateProgress > FCP_FORMS then
+  begin
+    mnuFrame.Merge(nil);
+    frmCover.Close;      //frmCover.Release;
+    frmProblems.Close;   //frmProblems.Release;
+    frmMeds.Close;       //frmMeds.Release;
+    frmOrders.Close;     //frmOrders.Release;
+    frmNotes.Close;      //frmNotes.Release;
+    frmConsults.Close;   //frmConsults.Release;
+    frmDCSumm.Close;     //frmDCSumm.Release;
+    if Assigned(frmSurgery) then frmSurgery.Close;    //frmSurgery.Release;
+    frmLabs.Close;       //frmLabs.Release;
+    frmReports.Close;    //frmReports.Release;
+    frmGraphData.Close;  //frmGraphData.Release;
+  
+  end;
+//  with mnuTools do for i := Count - 1 downto 0 do
+//  begin
+//    UserTool := Items[i];
+//    if UserTool <> nil then
+//    begin
+//      Delete(i);
+//      UserTool.Free;
+//    end;
+//  end;
+  //Application.ProcessMessages;  // so everything finishes closing
+  // if < FCP_FINISH we came here from inside FormCreate, so need to call terminate
+  //if GraphFloat <> nil then GraphFloat.Release;
+  if FCreateProgress < FCP_FINISH then Application.Terminate;
+end;
+
+procedure TfrmFrame.SetDebugMenu;
+var
+  IsProgrammer: Boolean;
+begin
+  IsProgrammer := User.HasKey('XUPROGMODE');
+  mnuHelpBroker.Visible  := IsProgrammer;
+  mnuHelpLists.Visible   := IsProgrammer;
+  mnuHelpSymbols.Visible := IsProgrammer;
+  Z6.Visible             := IsProgrammer;
+end;
+
+{ Updates posted to MainForm --------------------------------------------------------------- }
+
+procedure TfrmFrame.UMNewOrder(var Message: TMessage);
+{ post a notice of change in orders to all TPages, wParam=OrderAction, lParam=TOrder }
+var
+  OrderAct: string;
+begin
+  with Message do
+  begin
+    frmCover.NotifyOrder(WParam, TOrder(LParam));
+    frmProblems.NotifyOrder(WParam, TOrder(LParam));
+    frmMeds.NotifyOrder(WParam, TOrder(LParam));
+    frmOrders.NotifyOrder(WParam, TOrder(LParam));
+    frmNotes.NotifyOrder(WParam, TOrder(LParam));
+    frmConsults.NotifyOrder(WParam, TOrder(LParam));
+    frmDCSumm.NotifyOrder(WParam, TOrder(LParam));
+    if Assigned(frmSurgery) then frmSurgery.NotifyOrder(WParam, TOrder(LParam));
+    frmLabs.NotifyOrder(WParam, TOrder(LParam));
+    frmReports.NotifyOrder(WParam, TOrder(LParam));
+    lblPtCWAD.Caption := GetCWADInfo(Patient.DFN);
+    if Length(lblPtCWAD.Caption) > 0
+      then lblPtPostings.Caption := 'Postings'
+      else lblPtPostings.Caption := 'No Postings';
+    pnlPostings.Caption := lblPtPostings.Caption + ' ' + lblPtCWAD.Caption;
+    OrderAct := '';
+    case WParam of
+    ORDER_NEW:   OrderAct := 'NW';
+    ORDER_DC:    OrderAct := 'DC';
+    ORDER_RENEW: OrderAct := 'RN';
+    ORDER_HOLD:  OrderAct := 'HD';
+    ORDER_EDIT:  OrderAct := 'XX';
+    ORDER_ACT:   OrderAct := 'AC';
+    end;
+    if Length(OrderAct) > 0 then NotifyOtherApps(NAE_ORDER, OrderAct + U + TOrder(LParam).ID);  // add FillerID
+  end;
+end;
+
+{ Tab Selection (navigate between pages) --------------------------------------------------- }
+
+procedure TfrmFrame.WMSetFocus(var Message: TMessage);
+begin
+  if (FLastPage <> nil) and (not TimedOut) and
+     (not (csDestroying in FLastPage.ComponentState)) and FLastPage.Visible
+    then FLastPage.FocusFirstControl;
+end;
+
+procedure TfrmFrame.UMShowPage(var Message: TMessage);
+{ shows a page when the UM_SHOWPAGE message is received }
+begin
+  if FCCOWDrivedChange then FCCOWDrivedChange := False;
+  if FLastPage <> nil then FLastPage.DisplayPage;
+  FChangeSource := CC_CLICK;  // reset to click so we're only dealing with exceptions to click
+  if assigned(FTabChanged) then
+    FTabChanged(Self);
+end;
+
+procedure TfrmFrame.SwitchToPage(NewForm: TfrmPage);
+{ unmerge/merge menus, bring page to top of z-order, call form-specific OnDisplay code }
+begin
+  if FLastPage = NewForm then
+    begin
+      if Notifications.Active then PostMessage(Handle, UM_SHOWPAGE, 0, 0);
+      Exit;
+    end;
+  if (FLastPage <> nil) then
+  begin
+    mnuFrame.Unmerge(FLastPage.Menu);
+    FLastPage.Hide;
+  end;
+  if Assigned(NewForm) then
+  begin
+    {if ((FLastPage = frmOrders) and (NewForm.Name <> frmMeds.Name))
+      or ((FLastPage = frmMeds) and (NewForm.Name <> frmOrders.Name)) then
+    begin
+      if not CloseOrdering then
+        Exit;
+    end;}
+    mnuFrame.Merge(NewForm.Menu);
+    NewForm.Show;
+  end;
+  lstCIRNLocations.Visible := False;
+  pnlCIRN.BevelOuter := bvRaised;
+  lstCIRNLocations.SendToBack;
+  mnuFilePrint.Enabled := False;           // let individual page enable this
+  mnuFilePrintSetup.Enabled := False;      // let individual page enable this
+  mnuFilePrintSelectedItems.Enabled := False;
+  FLastPage := NewForm;
+  if NewForm <> nil then
+  begin
+    if NewForm.Name = frmNotes.Name then frmNotes.Align := alClient
+      else frmNotes.Align := alNone;
+    if NewForm.Name = frmConsults.Name then frmConsults.Align := alClient
+      else frmConsults.Align := alNone;
+    if NewForm.Name = frmReports.Name then frmReports.Align := alClient
+      else frmReports.Align := alNone;
+    if NewForm.Name = frmDCSumm.Name then frmDCSumm.Align := alClient
+      else frmDCSumm.Align := alNone;
+    if Assigned(frmSurgery) then
+      if NewForm.Name = frmSurgery.Name then frmSurgery.Align := alclient
+        else frmSurgery.Align := alNone;
+    NewForm.BringToFront;                    // to cause tab switch to happen immediately
+//CQ12232 NewForm.FocusFirstControl;
+    Application.ProcessMessages;
+    PostMessage(Handle, UM_SHOWPAGE, 0, 0);  // this calls DisplayPage for the form
+  end;
+end;
+
+procedure TfrmFrame.mnuChartTabClick(Sender: TObject);
+{ use the Tag property of the menu item to switch to proper page }
+begin
+  with Sender as TMenuItem do tabPage.TabIndex := PageIDToTab(Tag);
+  LastTab := TabToPageID(tabPage.TabIndex) ;
+  tabPageChange(tabPage);
+end;
+
+procedure TfrmFrame.tabPageChange(Sender: TObject);
+{ switches to form linked to NewTab }
+var
+  PageID : integer;
+begin
+  PageID := TabToPageID((sender as TTabControl).TabIndex);
+  if (PageID <> CT_NOPAGE) and (TabPage.CanFocus) and Assigned(FLastPage) and
+     (not TabPage.Focused) then
+    TabPage.SetFocus;  //CQ: 14854
+  if (not User.IsReportsOnly) then
+  begin
+    case PageID of
+      CT_NOPAGE:   SwitchToPage(nil);
+      CT_COVER:    SwitchToPage(frmCover);
+      CT_PROBLEMS: SwitchToPage(frmProblems);
+      CT_MEDS:     SwitchToPage(frmMeds);
+      CT_ORDERS:   SwitchToPage(frmOrders);
+      CT_NOTES:    SwitchToPage(frmNotes);
+      CT_CONSULTS: SwitchToPage(frmConsults);
+      CT_DCSUMM:   SwitchToPage(frmDCSumm);
+      CT_SURGERY:  SwitchToPage(frmSurgery);
+      CT_LABS:     SwitchToPage(frmLabs);
+      CT_REPORTS:  SwitchToPage(frmReports);
+    end; {case}
+  end
+  else // Reports Only tab.
+    SwitchToPage(frmReports);
+  if ScreenReaderSystemActive and FCtrlTabUsed then
+    SpeakPatient;
+end;
+
+function TfrmFrame.PageIDToTab(PageID: Integer): Integer;
+{ returns the tab index that corresponds to a given PageID }
+VAR
+  i: integer;
+begin
+  i :=  uTabList.IndexOf(IntToStr(PageID));
+  Result := i;
+  //Result := uTabList.IndexOf(IntToStr(PageID));
+  (*
+  Result := -1;
+  case PageID of
+    CT_NOPAGE:   Result := -1;
+    CT_COVER:    Result :=  0;
+    CT_PROBLEMS: Result :=  1;
+    CT_MEDS:     Result :=  2;
+    CT_ORDERS:   Result :=  3;
+   {CT_HP:       Result :=  4;}
+    CT_NOTES:    Result :=  4;
+    CT_CONSULTS: Result :=  5;
+    CT_DCSUMM:   Result :=  6;
+    CT_LABS:     Result :=  7;
+    CT_REPORTS:  Result :=  8;
+  end;*)
+end;
+
+function TfrmFrame.TabToPageID(Tab: Integer): Integer;
+{ returns the constant that identifies the page given a TabIndex }
+begin
+  if (Tab > -1) and (Tab < uTabList.Count) then
+    Result := StrToIntDef(uTabList[Tab], CT_UNKNOWN)
+  else
+    Result := CT_NOPAGE;
+(*  case Tab of
+   -1: Result := CT_NOPAGE;
+    0: Result := CT_COVER;
+    1: Result := CT_PROBLEMS;
+    2: Result := CT_MEDS;
+    3: Result := CT_ORDERS;
+   {4: Result := CT_HP;}
+    4: Result := CT_NOTES;
+    5: Result := CT_CONSULTS;
+    6: Result := CT_DCSUMM;
+    7: Result := CT_LABS;
+    8: Result := CT_REPORTS;
+  end;*)
+end;
+
+{ File Menu Events ------------------------------------------------------------------------- }
+
+procedure TfrmFrame.SetupPatient(AFlaggedList : TStringList);
+var
+  AMsg, SelectMsg: string;
+begin
+  with Patient do
+  begin
+    ClearPatient;  // must be called to avoid leaving previous patient's information visible!
+    Visible := True;
+    Application.ProcessMessages;
+    lblPtName.Caption := Name;
+    lblPtSSN.Caption := SSN;
+//
+    { TODO -oRV -cWVEHR Long Age : Change for long patient age. }
+    lblPtAge.Caption := FormatFMDateTime('mmm dd,yyyy', DOB) + '   (' + GetPatientBriefAge(Patient.DFN) + ')';
+    //lblPtAge.Caption := FormatFMDateTime('mmm dd,yyyy', DOB) + ' (' + IntToStr(Age) + ')';
+//
+    pnlPatient.Caption := lblPtName.Caption + ' ' + lblPtSSN.Caption + ' ' + lblPtAge.Caption;
+    if Length(CWAD) > 0
+      then lblPtPostings.Caption := 'Postings'
+      else lblPtPostings.Caption := 'No Postings';
+    lblPtCWAD.Caption := CWAD;
+    pnlPostings.Caption := lblPtPostings.Caption + ' ' + lblPtCWAD.Caption;
+    if (Length(PrimaryTeam) > 0) or (Length(PrimaryProvider) > 0)
+      then lblPtCare.Caption := PrimaryTeam + ' / ' + MixedCase(PrimaryProvider);
+    if Length(Attending) > 0 then lblPtAttending.Caption := 'Attending:  ' + MixedCase(Attending);
+    pnlPrimaryCare.Caption := lblPtCare.Caption + ' ' + lblPtAttending.Caption;
+    SetUpCIRN;
+    DisplayEncounterText;
+    SetShareNode(DFN, Handle);
+    with Patient do
+      NotifyOtherApps(NAE_NEWPT, SSN + U + FloatToStr(DOB) + U + Name);
+    SelectMsg := '';
+    if MeansTestRequired(Patient.DFN, AMsg) then SelectMsg := AMsg;
+    if HasLegacyData(Patient.DFN, AMsg)     then SelectMsg := SelectMsg + CRLF + AMsg;
+
+    HasActiveFlg(FlagList, HasFlag, Patient.DFN);
+    if HasFlag then
+    begin
+      pnlFlag.Enabled := True;
+      lblFlag.Font.Color := Get508CompliantColor(clMaroon);
+      lblFlag.Enabled := True;
+      if (not FReFreshing) and (TriggerPRFPopUp(Patient.DFN)) then
+        ShowFlags;
+    end else
+    begin
+      pnlFlag.Enabled := False;
+      lblFlag.Font.Color := clBtnFace;
+      lblFlag.Enabled := False;
+    end;
+    FPrevPtID := patient.DFN;
+    frmCover.UpdateVAAButton; //VAA CQ7525  (moved here in v26.30 (RV))
+    ProcessPatientChangeEventHook;
+    if Length(SelectMsg) > 0 then ShowPatientSelectMessages(SelectMsg);
+  end;
+end;
+
+procedure TfrmFrame.mnuFileNextClick(Sender: TObject);
+var
+  SaveDFN, NewDFN: string; // *DFN*
+  NextIndex: Integer;
+  Reason: string;
+  CCOWResponse: UserResponse;
+  AccessStatus: integer;
+
+    procedure UpdatePatientInfoForAlert;
+    begin
+      if Patient.Inpatient then
+      begin
+        Encounter.Inpatient := True;
+        Encounter.Location := Patient.Location;
+        Encounter.DateTime := Patient.AdmitTime;
+        Encounter.VisitCategory := 'H';
+      end;
+      if User.IsProvider then Encounter.Provider := User.DUZ;
+      SetupPatient(FlaggedPTList);
+      if (FlaggedPTList.IndexOf(Patient.DFN) < 0) then
+        FlaggedPTList.Add(Patient.DFN);
+    end;
+
+begin
+  DoNotChangeEncWindow := False;
+  mnuFile.Tag := 0;
+  SaveDFN := Patient.DFN;
+  Notifications.Next;
+  if Notifications.Active then
+  begin
+    NewDFN := Notifications.DFN;
+    //Patient.DFN := Notifications.DFN;
+    //if SaveDFN <> Patient.DFN then
+    if SaveDFN <> NewDFN then
+    begin
+      // newdfn does not have new patient.co information for CCOW call
+      if ((Sender = mnuFileOpen) or (AllowContextChangeAll(Reason)))
+          and AllowAccessToSensitivePatient(NewDFN, AccessStatus) then
+      begin
+        RemindersStarted := FALSE;
+        Patient.DFN := NewDFN;
+        Encounter.Clear;
+        Changes.Clear;
+        if Assigned(FlagList) then
+        begin
+         FlagList.Clear;
+         HasFlag := False;
+         HasActiveFlg(FlagList, HasFlag, NewDFN);
+        end;
+        if FCCOWInstalled and (ctxContextor.State = csParticipating) then
+          begin
+            if (AllowCCOWContextChange(CCOWResponse, Patient.DFN)) then
+              UpdatePatientInfoForAlert
+            else
+              begin
+                case CCOWResponse of
+                  urCancel:
+                    begin
+                      Patient.DFN := SaveDFN;
+                      Notifications.Prior;
+                      Exit;
+                    end;
+                  urBreak:
+                    begin
+                      // do not revert to old DFN if context was manually broken by user - v26 (RV)
+                      if (ctxContextor.State = csParticipating) then Patient.DFN := SaveDFN;
+                      UpdatePatientInfoForAlert;
+                    end;
+                  else
+                    UpdatePatientInfoForAlert;
+                end;
+              end;
+          end
+        else
+          UpdatePatientInfoForAlert
+      end else
+      begin
+        if AccessStatus in [DGSR_ASK, DGSR_DENY] then
+        begin
+          Notifications.Clear;
+          // hide the 'next notification' button
+          FNextButtonActive := False;
+          FNextButton.Free;
+          FNextButton := nil;
+          mnuFileNext.Enabled := False;
+          mnuFileNotifRemove.Enabled := False;
+          Patient.DFN := '';
+          mnuFileOpenClick(mnuFileNext);
+          exit;
+        end
+        else
+        if SaveDFN <> '' then
+        begin
+          Patient.DFN := SaveDFN;
+          Notifications.Prior;
+          Exit;
+        end
+        else
+        begin
+          Notifications.Clear;
+(*          // hide the 'next notification' button
+          FNextButtonActive := False;
+          FNextButton.Free;
+          FNextButton := nil;
+          mnuFileNext.Enabled := False;
+          mnuFileNotifRemove.Enabled := False;*)
+          Patient.DFN := '';
+          mnuFileOpenClick(mnuFileNext);
+          exit;
+        end;
+      end;
+    end;
+    stsArea.Panels.Items[1].Text := Notifications.Text;
+    FChangeSource := CC_NOTIFICATION;
+    NextIndex := PageIDToTab(CT_COVER);
+    tabPage.TabIndex := CT_NOPAGE;
+    tabPageChange(tabPage);
+    mnuFileNotifRemove.Enabled := Notifications.Followup in [NF_FLAGGED_ORDERS,
+                                                             NF_ORDER_REQUIRES_ELEC_SIGNATURE,
+                                                             NF_MEDICATIONS_EXPIRING_INPT,
+                                                             NF_MEDICATIONS_EXPIRING_OUTPT,
+                                                             NF_UNVERIFIED_MEDICATION_ORDER,
+                                                             NF_UNVERIFIED_ORDER,
+                                                             NF_FLAGGED_OI_EXP_INPT,
+                                                             NF_FLAGGED_OI_EXP_OUTPT];
+    case Notifications.FollowUp of
+    NF_LAB_RESULTS                   : NextIndex := PageIDToTab(CT_LABS);
+    NF_FLAGGED_ORDERS                : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_ORDER_REQUIRES_ELEC_SIGNATURE : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_ABNORMAL_LAB_RESULTS          : NextIndex := PageIDToTab(CT_LABS);
+    NF_IMAGING_RESULTS               : NextIndex := PageIDToTab(CT_REPORTS);
+    NF_CONSULT_REQUEST_RESOLUTION    : NextIndex := PageIDToTab(CT_CONSULTS);
+    NF_ABNORMAL_IMAGING_RESULTS      : NextIndex := PageIDToTab(CT_REPORTS);
+    NF_IMAGING_REQUEST_CANCEL_HELD   : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_NEW_SERVICE_CONSULT_REQUEST   : NextIndex := PageIDToTab(CT_CONSULTS);
+    NF_CONSULT_REQUEST_CANCEL_HOLD   : NextIndex := PageIDToTab(CT_CONSULTS);
+    NF_SITE_FLAGGED_RESULTS          : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_ORDERER_FLAGGED_RESULTS       : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_ORDER_REQUIRES_COSIGNATURE    : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_LAB_ORDER_CANCELED            : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_STAT_RESULTS                  :
+      if Piece(Piece(Notifications.AlertData, '|', 2), '@', 2) = 'LRCH' then
+        NextIndex := PageIDToTab(CT_LABS)
+      else if Piece(Piece(Notifications.AlertData, '|', 2), '@', 2) = 'GMRC' then
+        NextIndex := PageIDToTab(CT_CONSULTS)
+      else if Piece(Piece(Notifications.AlertData, '|', 2), '@', 2) = 'RA' then
+        NextIndex := PageIDToTab(CT_REPORTS);
+    NF_DNR_EXPIRING                  : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_MEDICATIONS_EXPIRING_INPT     : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_MEDICATIONS_EXPIRING_OUTPT    : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_UNVERIFIED_MEDICATION_ORDER   : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_NEW_ORDER                     : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_IMAGING_RESULTS_AMENDED       : NextIndex := PageIDToTab(CT_REPORTS);
+    NF_CRITICAL_LAB_RESULTS          : NextIndex := PageIDToTab(CT_LABS);
+    NF_UNVERIFIED_ORDER              : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_FLAGGED_OI_RESULTS            : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_FLAGGED_OI_ORDER              : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_DC_ORDER                      : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_CONSULT_UNSIGNED_NOTE         : NextIndex := PageIDToTab(CT_CONSULTS);
+    NF_DCSUMM_UNSIGNED_NOTE          : NextIndex := PageIDToTab(CT_DCSUMM);
+    NF_NOTES_UNSIGNED_NOTE           : NextIndex := PageIDToTab(CT_NOTES);
+    NF_CONSULT_REQUEST_UPDATED       : NextIndex := PageIDToTab(CT_CONSULTS);
+    NF_FLAGGED_OI_EXP_INPT           : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_FLAGGED_OI_EXP_OUTPT          : NextIndex := PageIDToTab(CT_ORDERS);
+    NF_CONSULT_PROC_INTERPRETATION   : NextIndex := PageIDToTab(CT_CONSULTS);
+    NF_IMAGING_REQUEST_CHANGED       :
+        begin
+           ReportBox(GetNotificationFollowUpText(Patient.DFN, Notifications.FollowUp, Notifications.AlertData), Pieces(Piece(Notifications.RecordID, U, 1), ':', 2, 3), True);
+           Notifications.Delete;
+        end;
+    NF_LAB_THRESHOLD_EXCEEDED        : NextIndex := PageIDToTab(CT_LABS);
+    NF_MAMMOGRAM_RESULTS             : NextIndex := PageIDToTab(CT_REPORTS);
+    NF_PAP_SMEAR_RESULTS             : NextIndex := PageIDToTab(CT_REPORTS);
+    NF_ANATOMIC_PATHOLOGY_RESULTS    : NextIndex := PageIDToTab(CT_REPORTS);
+    NF_SURGERY_UNSIGNED_NOTE         : if TabExists(CT_SURGERY) then
+                                         NextIndex := PageIDToTab(CT_SURGERY)
+                                       else
+                                         InfoBox(TX_NO_SURG_NOTIF, TC_NO_SURG_NOTIF, MB_OK);
+                                         //NextIndex := PageIDToTab(CT_NOTES);
+    else InfoBox(TX_UNK_NOTIF, TC_UNK_NOTIF, MB_OK);
+    end;
+    tabPage.TabIndex := NextIndex;
+    tabPageChange(tabPage);
+  end
+  else mnuFileOpenClick(mnuFileNext);
+end;
+
+procedure TfrmFrame.SetBADxList;
+var
+  i: smallint;
+begin
+  if not Assigned(UBAGlobals.tempDxList) then
+     begin
+     UBAGlobals.tempDxList := TList.Create;
+     UBAGlobals.tempDxList.Count := 0;
+     Application.ProcessMessages;
+     end
+  else
+     begin
+     //Kill the old Dx list
+     for i := 0 to pred(UBAGlobals.tempDxList.Count) do
+        TObject(UBAGlobals.tempDxList[i]).Free;
+
+     UBAGlobals.tempDxList.Clear;
+     Application.ProcessMessages;
+
+     //Create new Dx list for newly selected patient
+      if not Assigned(UBAGlobals.tempDxList) then
+         begin
+         UBAGlobals.tempDxList := TList.Create;
+         UBAGlobals.tempDxList.Count := 0;
+         Application.ProcessMessages;
+         end;
+     end;
+end;
+
+procedure TfrmFrame.mnuFileOpenClick(Sender: TObject);
+{ select a new patient & update the header displays (patient id, encounter, postings) }
+var
+  SaveDFN, Reason: string;
+  //NextTab: Integer;     // moved up for visibility - v23.4  rV
+  ok, OldRemindersStarted, PtSelCancelled: boolean;
+  //i: smallint;
+  CCOWResponse: UserResponse;
+begin
+  PtSelCancelled := FALSE;
+  if not FRefreshing then mnuFile.Tag := 0
+  else mnuFile.Tag := 1;
+  DetermineNextTab;
+(*  if (FRefreshing or User.UseLastTab) and (not FFirstLoad) then
+    NextTab := TabToPageID(tabPage.TabIndex)
+  else
+    NextTab := User.InitialTab;
+  if NextTab = CT_NOPAGE then NextTab := User.InitialTab;
+  if User.IsReportsOnly then // Reports Only tab.
+    NextTab := 0; // Only one tab should exist by this point in "REPORTS ONLY" mode.
+  if not TabExists(NextTab) then NextTab := CT_COVER;
+  if NextTab = CT_NOPAGE then NextTab := User.InitialTab;
+  if NextTab = CT_ORDERS then
+    if frmOrders <> nil then with frmOrders do
+    begin
+      if (lstSheets.ItemIndex > -1 ) and (TheCurrentView <> nil) and (theCurrentView.EventDelay.PtEventIFN>0) then
+        PtEvtCompleted(TheCurrentView.EventDelay.PtEventIFN, TheCurrentView.EventDelay.EventName);
+    end;*)
+  //if Sender <> mnuFileNext then     //CQ 16273 & 16419 - Missing Review/Sign changes dialog when clicking 'Next' button
+    if not AllowContextChangeAll(Reason) then Exit;
+     
+  // update status text here
+  stsArea.Panels.Items[1].Text := '';
+  if (not User.IsReportsOnly) then
+  begin
+    if not FRefreshing then
+    begin
+      Notifications.Next;   // avoid prompt if no more alerts selected to process  {v14a RV}
+      if Notifications.Active then
+      begin
+        if (InfoBox(TX_NOTIF_STOP, TC_NOTIF_STOP, MB_YESNO) = ID_NO) then
+        begin
+          Notifications.Prior;
+          Exit;
+        end;
+      end;
+      if Notifications.Active then Notifications.Prior;
+    end;
+  end;
+
+  if FNoPatientSelected then
+    SaveDFN := ''
+  else
+    SaveDFN := Patient.DFN;
+    
+  OldRemindersStarted := RemindersStarted;
+  RemindersStarted := FALSE;
+  try
+    if FRefreshing then
+    begin
+      UpdatePtInfoOnRefresh;
+      ok := TRUE;
+    end
+    else
+    begin
+      ok := FALSE;
+      if (not User.IsReportsOnly) then
+      begin
+        if FCCOWInstalled and (ctxContextor.State = csParticipating) then
+          begin
+            UpdateCCOWContext;
+            if not FCCOWError then
+            begin
+              FCCOWIconName := 'BMP_CCOW_LINKED';
+              pnlCCOW.Hint := TX_CCOW_LINKED;
+              imgCCOW.Picture.Bitmap.LoadFromResourceName(hInstance, FCCOWIconName);
+            end;
+          end
+        else
+          begin
+            FCCOWIconName := 'BMP_CCOW_BROKEN';
+            pnlCCOW.Hint := TX_CCOW_BROKEN;
+            imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+          end;
+        if (Patient.DFN = '') or (Sender = mnuFileOpen) or (Sender = mnuFileNext) or (Sender = mnuViewDemo) then
+          SelectPatient(SHOW_NOTIFICATIONS, Font.Size, PtSelCancelled);
+        if PtSelCancelled then exit;
+        ShowEverything;
+        //HideEverything('Retrieving information - please wait....');  //v27 (pending) RV
+        DisplayEncounterText;
+        FPrevInPatient := Patient.Inpatient;
+        if Notifications.Active then
+        begin
+          // display 'next notification' button
+          SetUpNextButton;
+          FNextButtonActive := True;
+          mnuFileNext.Enabled := True;
+          mnuFileNextClick(mnuFileOpen);
+        end
+        else
+        begin
+          // hide the 'next notification' button
+          FNextButtonActive := False;
+          FNextButton.Free;
+          FNextButton := nil;
+          mnuFileNext.Enabled := False;
+          mnuFileNotifRemove.Enabled := False;
+          if Patient.DFN <> SaveDFN then
+            ok := TRUE;
+        end
+      end
+      else
+      begin
+        Notifications.Clear;
+        SelectPatient(False, Font.Size, PtSelCancelled); // Call Pt. Sel. w/o notifications.
+        if PtSelCancelled then exit;
+        ShowEverything;
+        DisplayEncounterText;
+        FPrevInPatient := Patient.Inpatient;
+        ok := TRUE;
+      end;
+    end;
+    if ok then
+    begin
+      if FCCOWInstalled and (ctxContextor.State = csParticipating) and (not FRefreshing) then
+        begin
+          if (AllowCCOWContextChange(CCOWResponse, Patient.DFN)) then
+            begin
+              SetupPatient;
+              tabPage.TabIndex := PageIDToTab(NextTab);
+              tabPageChange(tabPage);
+            end
+          else
+            begin
+              case CCOWResponse of
+                urCancel: UpdateCCOWContext;
+                urBreak:
+                  begin
+                    // do not revert to old DFN if context was manually broken by user - v26 (RV)
+                    if (ctxContextor.State = csParticipating) then Patient.DFN := SaveDFN;
+                    SetupPatient;
+                    tabPage.TabIndex := PageIDToTab(NextTab);
+                    tabPageChange(tabPage);
+                  end;
+                else
+                  begin
+                    SetupPatient;
+                    tabPage.TabIndex := PageIDToTab(NextTab);
+                    tabPageChange(tabPage);
+                  end;
+              end;
+            end;
+        end
+      else
+        begin
+          SetupPatient;
+          tabPage.TabIndex := PageIDToTab(NextTab);
+          tabPageChange(tabPage);
+        end;
+    end;
+  finally
+    if (not FRefreshing) and (Patient.DFN = SaveDFN) then
+      RemindersStarted := OldRemindersStarted;
+    FFirstLoad := False;
+  end;
+ {Begin BillingAware}
+  if  BILLING_AWARE then frmFrame.SetBADxList; //end IsBillingAware
+ {End BillingAware}
+ //ShowEverything;  //v27 (pending) RV
+ if not FRefreshing then DoNotChangeEncWindow := false;
+ //frmCover.UpdateVAAButton; //VAA CQ7525   CQ#7933 - moved to SetupPatient, before event hook execution (RV)
+end;
+
+procedure TfrmFrame.DetermineNextTab;
+begin
+  if (FRefreshing or User.UseLastTab) and (not FFirstLoad) then
+    begin
+      if (tabPage.TabIndex < 0) then
+        NextTab := LastTab
+      else
+        NextTab := TabToPageID(tabPage.TabIndex);
+    end
+  else
+    NextTab := User.InitialTab;
+  if NextTab = CT_NOPAGE then NextTab := User.InitialTab;
+  if User.IsReportsOnly then // Reports Only tab.
+    NextTab := CT_REPORTS; // Only one tab should exist by this point in "REPORTS ONLY" mode.
+  if not TabExists(NextTab) then NextTab := CT_COVER;
+  if NextTab = CT_NOPAGE then NextTab := User.InitialTab;
+  if NextTab = CT_ORDERS then
+    if frmOrders <> nil then with frmOrders do
+    begin
+      if (lstSheets.ItemIndex > -1 ) and (TheCurrentView <> nil) and (theCurrentView.EventDelay.PtEventIFN>0) then
+        PtEvtCompleted(TheCurrentView.EventDelay.PtEventIFN, TheCurrentView.EventDelay.EventName);
+    end;
+end;
+
+procedure TfrmFrame.mnuFileEncounterClick(Sender: TObject);
+{ displays encounter window and updates encounter display in case encounter was updated }
+begin
+  UpdateEncounter(NPF_ALL); {*KCM*}
+  DisplayEncounterText;
+end;
+
+procedure TfrmFrame.mnuFileReviewClick(Sender: TObject);
+{ displays the Review Changes window (which resets the Encounter object) }
+var
+  EventChanges: boolean;
+  NameNeedLook: string;
+begin
+  FReviewClick := True;
+  mnuFile.Tag := 1;
+  EventChanges := False;
+  NameNeedLook := '';
+  UpdatePtInfoOnRefresh;
+  if Changes.Count > 0 then
+  begin
+   if (frmOrders <> nil) and (frmOrders.TheCurrentView <> nil) and ( frmOrders.TheCurrentView.EventDelay.EventIFN>0) then
+   begin
+     EventChanges := True;
+     NameNeedLook := frmOrders.TheCurrentView.ViewName;
+     frmOrders.PtEvtCompleted(frmOrders.TheCurrentView.EventDelay.PtEventIFN, frmOrders.TheCurrentView.EventDelay.EventName);
+   end;
+   ReviewChanges(TimedOut, EventChanges);
+   if TabToPageID(tabPage.TabIndex)= CT_MEDS then
+   begin
+     frmOrders.InitOrderSheets2(NameNeedLook);
+   end;
+  end
+  else InfoBox('No new changes to review/sign.', 'Review Changes', MB_OK);
+  FOrderPrintForm := false;
+  FReviewClick := false;
+end;
+
+procedure TfrmFrame.mnuFileExitClick(Sender: TObject);
+{ see the CloseQuery event }
+var
+  i: smallint;
+begin
+  try
+     if  BILLING_AWARE then
+         begin
+         if Assigned(tempDxList) then
+            for i := 0 to pred(UBAGlobals.tempDxList.Count) do
+               TObject(UBAGlobals.tempDxList[i]).Free;
+
+         UBAGlobals.tempDxList.Clear;
+         Application.ProcessMessages;
+         end; //end IsBillingAware
+  except
+     on EAccessViolation do
+        begin
+        {$ifdef debug}Show508Message('Access Violation in procedure TfrmFrame.mnuFileExitClick()');{$endif}
+        raise;
+        end;
+     on E: Exception do
+        begin
+        {$ifdef debug}Show508Message('Unhandled exception in procedure TfrmFrame.mnuFileExitClick()');{$endif}
+        raise;
+        end;
+  end;
+
+  Close;
+end;
+
+{ View Menu Events ------------------------------------------------------------------------- }
+
+procedure TfrmFrame.mnuViewPostingsClick(Sender: TObject);
+begin
+end;
+
+{ Tool Menu Events ------------------------------------------------------------------------- }
+
+function TfrmFrame.ExpandCommand(x: string): string;
+{ look for 'macros' on the command line and expand them using current context }
+
+  procedure Substitute(const Key, Data: string);
+  var
+    Stop, Start: Integer;
+  begin
+    Stop  := Pos(Key, x) - 1;
+    Start := Stop + Length(Key) + 1;
+    x := Copy(x, 1, Stop) + Data + Copy(x, Start, Length(x));
+  end;
+
+begin
+  if Pos('%MREF', x) > 0 then Substitute('%MREF',
+    '^TMP(''ORWCHART'',' + MScalar('$J') + ',''' + DottedIPStr + ''',' + IntToHex(Handle, 8) + ')');
+  if Pos('%SRV',  x) > 0 then Substitute('%SRV',  RPCBrokerV.Server);
+  if Pos('%PORT', x) > 0 then Substitute('%PORT', IntToStr(RPCBrokerV.ListenerPort));
+  if Pos('%DFN',  x) > 0 then Substitute('%DFN',  Patient.DFN);  //*DFN*
+  if Pos('%DUZ',  x) > 0 then Substitute('%DUZ',  IntToStr(User.DUZ));
+  Result := x;
+end;
+
+procedure TfrmFrame.ToolClick(Sender: TObject);
+{ executes the program associated with an item on the Tools menu, the command line is stored
+  in the item's hint property }
+const
+  TXT_ECS_NOTFOUND = 'The ECS application is not found at the default directory,' + #13 + 'would you like manually search it?';
+  TC_ECS_NOTFOUND = 'Application Not Found';
+var
+  x, AFile, Param, MenuCommand, ECSAppend, CapNm, curPath : string;
+  IsECSInterface: boolean;
+
+  function TakeOutAmps(AString: string): string;
+  var
+    S1,S2: string;
+  begin
+    if Pos('&',AString)=0 then
+    begin
+      Result := AString;
+      Exit;
+    end;
+    S1 := Piece(AString,'&',1);
+    S2 := Piece(AString,'&',2);
+    Result := S1 + S2;
+  end;
+
+  function ExcuteEC(AFile,APara: string): boolean;
+  begin
+    if (ShellExecute(Handle, 'open', PChar(AFile), PChar(Param), '', SW_NORMAL) > 32 ) then Result := True
+    else
+    begin
+      if InfoBox(TXT_ECS_NOTFOUND, TC_ECS_NOTFOUND, MB_YESNO or MB_ICONERROR) = IDYES then
+      begin
+        if OROpenDlg.Execute then
+        begin
+           AFile := OROpenDlg.FileName;
+           if Pos('ecs gui.exe',lowerCase(AFile))<1 then
+           begin
+             ShowMsg('This is not a valid ECS application.');
+             Result := True;
+           end else
+           begin
+             if (ShellExecute(Handle, 'open', PChar(AFile), PChar(Param), '', SW_NORMAL)<32) then Result := False
+             else Result := True;
+           end;
+        end
+        else Result := True;
+      end else Result := True;
+    end;
+  end;
+
+  function ExcuteECS(AFile, APara: string; var currPath: string): boolean;
+  var
+    commandline,RPCHandle: string;
+    StartupInfo: TStartupInfo;
+    ProcessInfo: TProcessInformation;
+  begin
+    FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
+    with StartupInfo do
+    begin
+      cb := SizeOf(TStartupInfo);
+      dwFlags := STARTF_USESHOWWINDOW;
+      wShowWindow := SW_SHOWNORMAL;
+    end;
+    commandline := AFile + Param;
+    RPCHandle := GetAppHandle(RPCBrokerV);
+    commandline := commandline + ' H=' + RPCHandle;
+    if CreateProcess(nil, PChar(commandline), nil, nil, False,
+      NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then Result := True
+    else
+    begin
+      if InfoBox(TXT_ECS_NOTFOUND, TC_ECS_NOTFOUND, MB_YESNO or MB_ICONERROR) = IDYES then
+      begin
+        if OROpenDlg.Execute then
+        begin
+           AFile := OROpenDlg.FileName;
+           if Pos('ecs gui.exe',lowerCase(AFile))<1 then
+           begin
+             ShowMsg('This is not a valid ECS application.');
+             Result := True;
+           end else
+           begin
+             SaveUserPath('Event Capture Interface='+AFile, currPath);
+             FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
+             with StartupInfo do
+             begin
+               cb := SizeOf(TStartupInfo);
+               dwFlags := STARTF_USESHOWWINDOW;
+               wShowWindow := SW_SHOWNORMAL;
+             end;
+             commandline := AFile + Param;
+             RPCHandle := GetAppHandle(RPCBrokerV);
+             commandline := commandline + ' H=' + RPCHandle;
+             if not CreateProcess(nil, PChar(commandline), nil, nil, False,
+                NORMAL_PRIORITY_CLASS, nil, nil,StartupInfo,ProcessInfo) then Result := False
+             else Result := True;
+           end;
+        end
+        else Result := True;
+      end else Result := True;
+    end;
+  end;
+
+begin
+  MenuCommand := '';
+  ECSAppend   := '';
+  IsECSInterface := False;
+  curPath := '';
+  CapNm := LowerCase(TMenuItem(Sender).Caption);
+  CapNm := TakeOutAmps(CapNm);
+  if AnsiCompareText('event capture interface',CapNm)=0 then
+  begin
+    IsECSInterface := True;
+    if FECSAuthUser then UpdateECSParameter(ECSAppend)
+    else begin
+      ShowMsg('You don''t have permission to use ECS.');
+      exit;
+    end;
+  end;
+  MenuCommand := TMenuItem(Sender).Hint + ECSAppend;
+  x := ExpandCommand(MenuCommand);
+  if CharAt(x, 1) = '"' then
+  begin
+    x     := Copy(x, 2, Length(x));
+    AFile := Copy(x, 1, Pos('"',x)-1);
+    Param := Copy(x, Pos('"',x)+1, Length(x));
+  end else
+  begin
+    AFile := Piece(x, ' ', 1);
+    Param := Copy(x, Length(AFile)+1, Length(x));
+  end;
+  if IsECSInterface then
+  begin
+    if not ExcuteECS(AFile,Param,curPath) then
+      ExcuteECS(AFile,Param,curPath);
+    if Length(curPath)>0 then
+      TMenuItem(Sender).Hint := curPath;
+  end
+  else if (Pos('ecs',LowerCase(AFile))>0) and (not IsECSInterface) then
+  begin
+    if not ExcuteEC(AFile,Param) then
+      ExcuteEC(AFile,Param);
+  end else
+  begin
+    ShellExecute(Handle, 'open', PChar(AFile), PChar(Param), '', SW_NORMAL);
+  end;
+end;
+
+{ Help Menu Events ------------------------------------------------------------------------- }
+
+procedure TfrmFrame.mnuHelpBrokerClick(Sender: TObject);
+{ used for debugging - shows last n broker calls }
+begin
+  ShowBroker;
+end;
+
+procedure TfrmFrame.mnuHelpListsClick(Sender: TObject);
+{ used for debugging - shows internal contents of TORListBox }
+begin
+  if Screen.ActiveControl is TListBox
+    then DebugListItems(TListBox(Screen.ActiveControl))
+    else InfoBox('Focus control is not a listbox', 'ListBox Data', MB_OK);
+end;
+
+procedure TfrmFrame.mnuHelpSymbolsClick(Sender: TObject);
+{ used for debugging - shows current symbol table }
+begin
+  DebugShowServer;
+end;
+
+procedure TfrmFrame.mnuHelpAboutClick(Sender: TObject);
+{ displays the about screen }
+begin
+  ShowAbout;
+end;
+
+{ Status Bar Methods }
+
+procedure TfrmFrame.UMStatusText(var Message: TMessage);
+{ displays status bar text (using the pointer to a text buffer passed in LParam) }
+begin
+  stsArea.Panels.Items[0].Text := StrPas(PChar(Message.LParam));
+  stsArea.Refresh;
+end;
+
+{ Toolbar Methods (make panels act like buttons) ------------------------------------------- }
+
+procedure TfrmFrame.pnlPatientMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+{ emulate a button press in the patient identification panel }
+begin
+  if pnlPatient.BevelOuter = bvLowered then exit;
+  pnlPatient.BevelOuter := bvLowered;
+  with lblPtName do SetBounds(Left+2, Top+2, Width, Height);
+  with lblPtSSN  do SetBounds(Left+2, Top+2, Width, Height);
+  with lblPtAge  do SetBounds(Left+2, Top+2, Width, Height);
+end;
+
+procedure TfrmFrame.pnlPatientMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+{ emulate the button raising in the patient identification panel & call Patient Inquiry }
+begin
+  if pnlPatient.BevelOuter = bvRaised then exit;
+  pnlPatient.BevelOuter := bvRaised;
+  with lblPtName do SetBounds(Left-2, Top-2, Width, Height);
+  with lblPtSSN  do SetBounds(Left-2, Top-2, Width, Height);
+  with lblPtAge  do SetBounds(Left-2, Top-2, Width, Height);
+end;
+
+procedure TfrmFrame.pnlPrimaryCareMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlPrimaryCare.BevelOuter := bvLowered;
+  with lblPtCare      do SetBounds(Left+2, Top+2, Width, Height);
+  with lblPtAttending do SetBounds(Left+2, Top+2, Width, Height);
+end;
+
+procedure TfrmFrame.pnlPrimaryCareMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlPrimaryCare.BevelOuter := bvRaised;
+  with lblPtCare      do SetBounds(Left-2, Top-2, Width, Height);
+  with lblPtAttending do SetBounds(Left-2, Top-2, Width, Height);
+end;
+
+procedure TfrmFrame.pnlPostingsMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+{ emulate a button press in the postings panel }
+begin
+  pnlPostings.BevelOuter := bvLowered;
+  with lblPtPostings do SetBounds(Left+2, Top+2, Width, Height);
+  with lblPtCWAD     do SetBounds(Left+2, Top+2, Width, Height);
+end;
+
+procedure TfrmFrame.pnlPostingsMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+{ emulate a button raising in the posting panel and call Postings }
+begin
+  pnlPostings.BevelOuter := bvRaised;
+  with lblPtPostings do SetBounds(Left-2, Top-2, Width, Height);
+  with lblPtCWAD     do SetBounds(Left-2, Top-2, Width, Height);
+end;
+
+{ Resize and Font-Change procedures -------------------------------------------------------- }
+
+procedure TfrmFrame.LoadSizesForUser;
+var
+  s1, s2, s3, s4, Dummy: integer;
+  panelBottom, panelMedIn : integer;
+
+begin
+  ChangeFont(UserFontSize);
+  SetUserBounds(TControl(frmFrame));
+  SetUserWidths(TControl(frmProblems.pnlLeft));
+  //SetUserWidths(TControl(frmMeds.pnlLeft));
+  SetUserWidths(TControl(frmOrders.pnlLeft));
+  SetUserWidths(TControl(frmNotes.pnlLeft));
+  SetUserWidths(TControl(frmConsults.pnlLeft));
+  SetUserWidths(TControl(frmDCSumm.pnlLeft));
+  if Assigned(frmSurgery) then SetUserWidths(TControl(frmSurgery.pnlLeft));
+  SetUserWidths(TControl(frmLabs.pnlLeft));
+  SetUserWidths(TControl(frmReports.pnlLeft));
+  SetUserColumns(TControl(frmOrders.hdrOrders));
+  SetUserColumns(TControl(frmMeds.hdrMedsIn));  // still need conversion
+  SetUserColumns(TControl(frmMeds.hdrMedsOut));
+  SetUserBounds2(TemplateEditorSplitters, tmplEditorSplitterMiddle,
+                 tmplEditorSplitterProperties, tmplEditorSplitterMain, tmplEditorSplitterBoil);
+  SetUserBounds2(TemplateEditorSplitters2, tmplEditorSplitterNotes, Dummy, Dummy, Dummy);
+  SetUserBounds2(ReminderTreeName, RemTreeDlgLeft, RemTreeDlgTop, RemTreeDlgWidth, RemTreeDlgHeight);
+  SetUserBounds2(RemDlgName, RemDlgLeft, RemDlgTop, RemDlgWidth, RemDlgHeight);
+  SetUserBounds2(RemDlgSplitters, RemDlgSpltr1, RemDlgSpltr2, Dummy ,Dummy);
+  SetUserBounds2(DrawerSplitters,s1, s2, s3, Dummy);
+  if Assigned(frmSurgery) then frmSurgery.Drawers.LastOpenSize := Dummy; //CQ7315
+  frmNotes.Drawers.LastOpenSize := s1;
+  frmConsults.Drawers.LastOpenSize := s2;
+  frmDCSumm.Drawers.LastOpenSize := s3;
+
+  with frmMeds do                                           
+     begin
+     SetUserBounds2(frmMeds.Name+'Split', panelBottom, panelMedIn, Dummy, Dummy);
+     if (panelBottom > frmMeds.Height-50) then panelBottom := frmMeds.Height-50;
+     if (panelMedIn > panelBottom-50) then panelMedIn := panelBottom-50;
+     frmMeds.pnlBottom.Height := panelBottom;
+     frmMeds.pnlMedIn.Height := panelMedIn;
+     //Meds Tab Non-VA meds columns
+     SetUserColumns(TControl(hdrMedsNonVA)); //CQ7314
+     end;
+
+     frmCover.DisableAlign;
+  try
+    SetUserBounds2(CoverSplitters1, s1, s2, s3, s4);
+    if s1 > 0 then
+      frmCover.pnl_1.Width := LowerOf( frmCover.pnl_not3.ClientWidth - 5, s1);
+    if s2 > 0 then
+      frmCover.pnl_3.Width := LowerOf( frmCover.pnlTop.ClientWidth - 5, s2);
+    if s3 > 0 then
+      frmCover.pnlTop.Height := LowerOf( frmCover.pnlBase.ClientHeight - 5, s3);
+    if s4 > 0 then
+      frmCover.pnl_4.Width := LowerOf( frmCover.pnlMiddle.ClientWidth - 5, s4);
+
+    SetUserBounds2(CoverSplitters2, s1, s2, s3, Dummy);
+    if s1 > 0 then
+      frmCover.pnlBottom.Height := LowerOf( frmCover.pnlBase.ClientHeight - 5, s1);
+    if s2 > 0 then
+      frmCover.pnl_6.Width := LowerOf( frmCover.pnlBottom.ClientWidth - 5, s2);
+    if s3 > 0 then
+      frmCover.pnl_8.Width := LowerOf( frmCover.pnlBottom.ClientWidth - 5, s3);
+
+  finally
+   frmCover.EnableAlign;
+  end;
+  if ParamSearch('rez') = '640' then SetBounds(Left, Top, 648, 488);  // for testing
+end;
+
+procedure TfrmFrame.SaveSizesForUser;
+var
+  SizeList: TStringList;
+  SurgTempHt: integer;
+begin
+  SaveUserFontSize(MainFontSize);
+  SizeList := TStringList.Create;
+  try
+    with SizeList do
+    begin
+      Add(StrUserBounds(frmFrame));
+      Add(StrUserWidth(frmProblems.pnlLeft));
+      //Add(StrUserWidth(frmMeds.pnlLeft));
+      Add(StrUserWidth(frmOrders.pnlLeft));
+      Add(StrUserWidth(frmNotes.pnlLeft));
+      Add(StrUserWidth(frmConsults.pnlLeft));
+      Add(StrUserWidth(frmDCSumm.pnlLeft));
+      if Assigned(frmSurgery) then Add(StrUserWidth(frmSurgery.pnlLeft));
+      Add(StrUserWidth(frmLabs.pnlLeft));
+      Add(StrUserWidth(frmReports.pnlLeft));
+      Add(StrUserColumns(frmOrders.hdrOrders));
+      Add(StrUserColumns(frmMeds.hdrMedsIn));
+      Add(StrUserColumns(frmMeds.hdrMedsOut));
+      Add(StrUserBounds2(TemplateEditorSplitters, tmplEditorSplitterMiddle,
+              tmplEditorSplitterProperties, tmplEditorSplitterMain, tmplEditorSplitterBoil));
+      Add(StrUserBounds2(TemplateEditorSplitters2, tmplEditorSplitterNotes, 0, 0, 0));
+      Add(StrUserBounds2(ReminderTreeName, RemTreeDlgLeft, RemTreeDlgTop, RemTreeDlgWidth, RemTreeDlgHeight));
+      Add(StrUserBounds2(RemDlgName, RemDlgLeft, RemDlgTop, RemDlgWidth, RemDlgHeight));
+      Add(StrUserBounds2(RemDlgSplitters, RemDlgSpltr1, RemDlgSpltr2, 0 ,0));
+
+      //v26.47 - RV - access violation if Surgery Tab not enabled.  Set to designer height as default.
+      if Assigned(frmSurgery) then SurgTempHt := frmSurgery.Drawers.pnlTemplates.Height else SurgTempHt := 85;
+      Add(StrUserBounds2(DrawerSplitters, frmNotes.Drawers.LastOpenSize,
+                                             frmConsults.Drawers.LastOpenSize,
+                                             frmDCSumm.Drawers.LastOpenSize,
+                                             SurgTempHt)); // last parameter = CQ7315
+
+      Add(StrUserBounds2(CoverSplitters1,
+        frmCover.pnl_1.Width,
+        frmCover.pnl_3.Width,
+        frmCover.pnlTop.Height,
+        frmCover.pnl_4.Width));
+      Add(StrUserBounds2(CoverSplitters2,
+        frmCover.pnlBottom.Height,
+        frmCover.pnl_6.Width,
+        frmCover.pnl_8.Width,
+        0));
+
+      //Meds Tab Splitters
+      Add(StrUserBounds2(frmMeds.Name+'Split',frmMeds.pnlBottom.Height,frmMeds.pnlMedIn.Height,0,0));
+
+      //Meds Tab Non-VA meds columns
+      Add(StrUserColumns(fMeds.frmMeds.hdrMedsNonVA)); //CQ7314
+
+      //Orders Tab columns
+      Add(StrUserColumns(fOrders.frmOrders.hdrOrders)); //CQ6328
+
+      if EnduringPtSelSplitterPos <> 0 then
+        Add(StrUserBounds2('frmPtSel.sptVert', EnduringPtSelSplitterPos, 0, 0, 0));
+    end;
+    //Add sizes for forms that used SaveUserBounds() to save thier positions
+    SizeHolder.AddSizesToStrList(SizeList);
+    //Send the SizeList to the Database
+    SaveUserSizes(SizeList);
+  finally
+    SizeList.Free;
+  end;
+end;
+
+procedure TfrmFrame.FormResize(Sender: TObject);
+{ need to resize tab forms specifically since they don't inherit resize event (because they
+  are derived from TForm itself) }
+begin
+  if FTerminate or FClosing then Exit;
+  if csDestroying in ComponentState then Exit;
+  MoveWindow(frmCover.Handle,    0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmProblems.Handle, 0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmMeds.Handle,     0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmOrders.Handle,   0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmNotes.Handle,    0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmConsults.Handle, 0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmDCSumm.Handle,   0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  if Assigned(frmSurgery) then MoveWindow(frmSurgery.Handle,     0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmLabs.Handle,     0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  MoveWindow(frmReports.Handle,  0, 0, pnlPage.ClientWidth, pnlPage.ClientHeight, True);
+  with stsArea do
+  begin
+    Panels[1].Width := stsArea.Width - FFixedStatusWidth;
+    FNextButtonL := Panels[0].Width + Panels[1].Width;
+    FNextButtonR := FNextButtonL + Panels[2].Width;
+  end;
+  if Notifications.Active then SetUpNextButton;
+  lstCIRNLocations.Left  := FNextButtonL - ScrollBarWidth - 100;
+  lstCIRNLocations.Width := ClientWidth - lstCIRNLocations.Left;
+  //cq: 15641
+  if frmFrame.FNextButtonActive then // keeps button alligned if cancel is pressed
+  begin
+    FNextButton.Left := FNextButtonL;
+    FNextButton.Top := stsArea.Top;
+  end;
+  Self.Repaint;
+end;
+
+procedure TfrmFrame.ChangeFont(NewFontSize: Integer);
+{ Makes changes in all components whenever the font size is changed.  This is hardcoded and
+  based on MS Sans Serif for now, as only the font size may be selected. Courier New is used
+  wherever non-proportional fonts are required. }
+const
+  TAB_VOFFSET = 7;
+var
+  OldFont: TFont;
+begin
+// Ho ho!  ResizeAnchoredFormToFont(self) doesn't work here because the
+// Form size is aliased with MainFormSize.
+  OldFont := TFont.Create;
+  try
+    DisableAlign;
+    try
+      OldFont.Assign(Font);
+      with Self          do Font.Size := NewFontSize;
+      with lblPtName     do Font.Size := NewFontSize;   // must change BOLDED labels by hand
+      with lblPtSSN      do Font.Size := NewFontSize;
+      with lblPtAge      do Font.Size := NewFontSize;
+      with lblPtLocation do Font.Size := NewFontSize;
+      with lblPtProvider do Font.Size := NewFontSize;
+      with lblPtPostings do Font.Size := NewFontSize;
+      with lblPtCare     do Font.Size := NewFontSize;
+      with lblPtAttending do Font.Size := NewFontSize;
+      with lblFlag       do Font.Size := NewFontSize;
+      with lblPtCWAD     do Font.Size := NewFontSize;
+      with lblCIRN       do Font.Size := NewFontSize;
+      with lblVistaWeb   do Font.Size := NewFontSize;
+      with lstCIRNLocations do Font.Size := NewFontSize;
+      with tabPage       do Font.Size := NewFontSize;
+      with laMHV         do Font.Size := NewFontSize; //VAA
+      with laVAA2        do Font.Size := NewFontSize; //VAA
+
+      frmFrameHeight := frmFrame.Height;
+      pnlPatientSelectedHeight := pnlPatientSelected.Height;
+      tabPage.Height := MainFontHeight + TAB_VOFFSET;   // resize tab selector
+      FitToolbar;                                       // resize toolbar
+      stsArea.Font.Size := NewFontSize;
+      stsArea.Height := MainFontHeight + TAB_VOFFSET;
+      stsArea.Panels[0].Width := ResizeWidth( OldFont, Font, stsArea.Panels[0].Width);
+      stsArea.Panels[2].Width := ResizeWidth( OldFont, Font, stsArea.Panels[2].Width);
+
+      //VAA CQ8271
+      if ((fCover.PtIsVAA and fCover.PtIsMHV)) then
+        begin
+         laMHV.Height := (pnlToolBar.Height div 2) -1;
+         with laVAA2 do
+           begin
+           Top := laMHV.Top + laMHV.Height;
+           Height := (pnlToolBar.Height div 2) -1;
+           end;
+         end;
+      //end VAA
+
+      RefreshFixedStatusWidth;
+      FormResize( self );
+    finally
+      EnableAlign;
+    end;
+  finally
+    OldFont.Free;
+  end;
+
+  case (NewFontSize) of
+   8: mnu8pt.Checked := true;
+  10: mnu10pt1.Checked := true;
+  12: mnu12pt1.Checked := true;
+  14: mnu14pt1.Checked := true;
+  18: mnu18pt1.Checked := true;
+  end;
+
+  //Now that the form elements are resized, the pages will know what size to take.
+  frmCover.SetFontSize(NewFontSize);                // child pages lack a ParentFont property
+  frmProblems.SetFontSize(NewFontSize);
+  frmMeds.SetFontSize(NewFontSize);
+  frmOrders.SetFontSize(NewFontSize);
+  frmNotes.SetFontSize(NewFontSize);
+  frmConsults.SetFontSize(NewFontSize);
+  frmDCSumm.SetFontSize(NewFontSize);
+  if Assigned(frmSurgery) then frmSurgery.SetFontSize(NewFontSize);
+  frmLabs.SetFontSize(NewFontSize);
+  frmReports.SetFontSize(NewFontSize);
+  TfrmIconLegend.SetFontSize(NewFontSize);
+  uOrders.SetFontSize(NewFontSize);
+  if Assigned(frmRemDlg) then frmRemDlg.SetFontSize;
+  if Assigned(frmReminderTree) then frmReminderTree.SetFontSize(NewFontSize);
+  if GraphFloat <> nil then ResizeAnchoredFormToFont(GraphFloat);
+end;
+
+procedure TfrmFrame.FitToolBar;
+{ resizes and repositions the panels & labels used in the toolbar }
+const
+{ TODO -oRV -cWVEHR Long Age : Change to 40, to fit long age }
+  //PATIENT_WIDTH = 29;
+  PATIENT_WIDTH = 40;
+{}
+  VISIT_WIDTH   = 36;
+  POSTING_WIDTH = 11.5;
+  FLAG_WIDTH    = 5;
+  CIRN_WIDTH    = 11;
+  MHV_WIDTH     = 6;
+{ TODO -oRV -cWVEHR Long Age : Change to 3 lines high, to fit long age }
+  //LINES_HIGH    = 2;
+  LINES_HIGH    = 3;
+{}
+  M_HORIZ       = 4;
+  M_MIDDLE      = 2;
+  M_NVERT       = 4;
+  M_WVERT       = 6;
+  TINY_MARGIN   = 2;
+//var
+  //WidthNeeded: integer;
+begin
+//
+  { TODO -oRV -cWVEHR Long Age : Changed to fit long age }
+  pnlToolbar.Height  := (LINES_HIGH * lblPtName.Height) + M_HORIZ + M_MIDDLE + M_HORIZ + M_HORIZ;
+  //pnlToolbar.Height  := (LINES_HIGH * lblPtName.Height) + M_HORIZ + M_MIDDLE + M_HORIZ;
+//
+  pnlPatient.Width   := HigherOf(PATIENT_WIDTH * MainFontWidth, lblPtName.Width + (M_WVERT * 2));
+  lblPtSSN.Top       := M_HORIZ + lblPtName.Height + M_MIDDLE;
+//
+  { TODO -oRV -cWVEHR Long Age : Changed to fit long age }
+  lblPtAge.Top       := lblPtSSN.Top + lblPtSSN.Height + M_MIDDLE;
+  lblPtAge.Left      := lblPtSSN.Left;
+  //lblPtAge.Top       := lblPtSSN.Top;
+  //lblPtAge.Left      := pnlPatient.Width - lblPtAge.Width - M_WVERT;
+//
+  pnlVisit.Width     := HigherOf(LowerOf(VISIT_WIDTH * MainFontWidth,
+                                         HigherOf(lblPtProvider.Width + (M_WVERT * 2),
+                                                  lblPtLocation.Width + (M_WVERT * 2))),
+                                 PATIENT_WIDTH * MainFontWidth);
+  lblPtProvider.Top  := lblPtSSN.Top;
+  lblPtAttending.Top := lblPtSSN.Top;
+  pnlPostings.Width  := Round(POSTING_WIDTH * MainFontWidth);
+  pnlFlag.Width      := Round(FLAG_WIDTH * MainFontWidth);
+  pnlFlag.Width      := Round(FLAG_WIDTH * MainFontWidth);
+  pnlRemoteData.Width := Round(CIRN_WIDTH * MainFontWidth) + M_WVERT;
+  pnlVistaWeb.Height := pnlRemoteData.Height div 2;
+  paVAA.Width        := Round(MHV_WIDTH * MainFontWidth) + M_WVERT + 2;
+  with lblPtPostings do
+    SetBounds(M_WVERT, M_HORIZ, pnlPostings.Width-M_WVERT-M_WVERT, lblPtName.Height);
+  with lblPtCWAD     do
+    SetBounds(M_WVERT, lblPtSSN.Top, lblPtPostings.Width, lblPtName.Height);
+  //Low resolution handling: First, try to fit everything on by shrinking fields
+  if pnlPrimaryCare.Width < HigherOf( lblPtCare.Left + lblPtCare.Width, lblPtAttending.Left + lblPtAttending.Width) + TINY_MARGIN then
+  begin
+    lblPtAge.Left := lblPtAge.Left - (lblPtName.Left - TINY_MARGIN);
+    lblPtName.Left := TINY_MARGIN;
+    lblPTSSN.Left := TINY_MARGIN;
+    pnlPatient.Width := HigherOf( lblPtName.Left + lblPtName.Width, lblPtAge.Left + lblPtAge.Width)+ TINY_MARGIN;
+    lblPtLocation.Left := TINY_MARGIN;
+    lblPtProvider.Left := TINY_MARGIN;
+    pnlVisit.Width := HigherOf( lblPtLocation.Left + lblPtLocation.Width, lblPtProvider.Left + lblPtProvider.Width)+ TINY_MARGIN;
+  end;
+  //If that is not enough, add scroll bars to form
+  {if pnlPrimaryCare.Width < HigherOf( lblPtCare.Left + lblPtCare.Width, lblPtAttending.Left + lblPtAttending.Width) + TINY_MARGIN then
+  begin
+    WidthNeeded := HigherOf( lblPtCare.Left + lblPtCare.Width, lblPtAttending.Left + lblPtAttending.Width) + TINY_MARGIN - pnlPrimaryCare.Width;
+    HorzScrollBar.Range := ClientWidth + WidthNeeded;
+    Width := Width + WidthNeeded;
+  end
+  else }   // commented out - BA
+    HorzScrollBar.Range := 0;
+end;
+
+{ Temporary Calls -------------------------------------------------------------------------- }
+
+procedure TfrmFrame.ToggleMenuItemChecked(Sender: TObject);
+begin
+  with (Sender as TMenuItem) do
+     begin
+     if not Checked then
+        Checked := true
+     else
+        Checked := false;
+     end;
+end;
+
+procedure TfrmFrame.mnuFontSizeClick(Sender: TObject);
+begin
+  if (frmRemDlg <> nil) then
+    ShowMsg('Please close the reminder dialog before changing font sizes.')
+  else
+     if (dlgProbs <> nil) then
+    ShowMsg('Font size cannot be changed while adding or editing a problem.')
+  else
+     begin
+     with (Sender as TMenuItem) do
+        begin
+        ToggleMenuItemChecked(Sender);
+        fMeds.oldFont := MainFontSize; //CQ9182
+        ChangeFont(Tag);
+        end;
+     end;
+end;
+
+procedure TfrmFrame.mnuEditClick(Sender: TObject);
+var
+  IsReadOnly: Boolean;
+begin
+  FEditCtrl := nil;
+  if Screen.ActiveControl is TCustomEdit then FEditCtrl := TCustomEdit(Screen.ActiveControl);
+  if FEditCtrl <> nil then
+  begin
+    if      FEditCtrl is TMemo     then IsReadOnly := TMemo(FEditCtrl).ReadOnly
+    else if FEditCtrl is TEdit     then IsReadOnly := TEdit(FEditCtrl).ReadOnly
+    else if FEditCtrl is TRichEdit then IsReadOnly := TRichEdit(FEditCtrl).ReadOnly
+    else IsReadOnly := True;
+    mnuEditUndo.Enabled := FEditCtrl.Perform(EM_CANUNDO, 0, 0) <> 0;
+    mnuEditCut.Enabled := FEditCtrl.SelLength > 0;
+    mnuEditCopy.Enabled := mnuEditCut.Enabled;
+    mnuEditPaste.Enabled := (IsReadOnly = False) and Clipboard.HasFormat(CF_TEXT);
+  end else
+  begin
+    mnuEditUndo.Enabled  := False;
+    mnuEditCut.Enabled   := False;
+    mnuEditCopy.Enabled  := False;
+    mnuEditPaste.Enabled := False;
+  end;
+end;
+
+procedure TfrmFrame.mnuEditUndoClick(Sender: TObject);
+begin
+  FEditCtrl.Perform(EM_UNDO, 0, 0);
+end;
+
+procedure TfrmFrame.mnuEditCutClick(Sender: TObject);
+begin
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmFrame.mnuEditCopyClick(Sender: TObject);
+begin
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmFrame.mnuEditPasteClick(Sender: TObject);
+begin
+  FEditCtrl.SelText := Clipboard.AsText;
+  //FEditCtrl.PasteFromClipboard;  // use AsText to prevent formatting from being pasted
+end;
+
+procedure TfrmFrame.mnuFilePrintClick(Sender: TObject);
+begin
+  case mnuFilePrint.Tag of
+  CT_NOTES:    frmNotes.RequestPrint;
+  CT_CONSULTS: frmConsults.RequestPrint;
+  CT_DCSUMM:   frmDCSumm.RequestPrint;
+  CT_REPORTS:  frmReports.RequestPrint;
+  CT_LABS:     frmLabs.RequestPrint;
+  CT_ORDERS:   frmOrders.RequestPrint;
+  CT_PROBLEMS: frmProblems.RequestPrint;
+  CT_SURGERY:  if Assigned(frmSurgery) then frmSurgery.RequestPrint;
+  end;
+end;
+
+function TfrmFrame.FormHelp(Command: Word; Data: Integer;
+  var CallHelp: Boolean): Boolean;
+var
+  ActiveForm: TForm;
+begin
+  inherited;
+  if Screen.ActiveForm <> nil then
+    begin
+      if Screen.ActiveForm.ActiveControl <> nil then
+        begin
+          if Screen.ActiveForm.ActiveControl is TForm then
+            ActiveForm := TForm(Screen.ActiveForm.ActiveControl)
+          else if Screen.ActiveForm.ActiveControl.Owner is TForm then
+            ActiveForm := TForm(Screen.ActiveForm.ActiveControl.Owner)
+          else
+            ActiveForm := Screen.ActiveForm;
+        end
+      else
+        ActiveForm := Screen.ActiveForm;
+      HelpFile := ActiveForm.HelpFile;
+    end ;
+  Result := True;
+end;
+
+procedure TfrmFrame.WMSysCommand(var Message: TMessage);
+begin
+  case TabToPageID(tabPage.TabIndex) of
+    CT_NOTES:
+        if Assigned(Screen.ActiveControl.Parent) and (Screen.ActiveControl.Parent.Name = 'cboCosigner') then
+          with Message do
+            begin
+              SendMessage(frmNotes.Handle, Msg, WParam, LParam);
+              Result := 0;
+            end
+        else
+          inherited;
+    CT_DCSUMM:
+        if Assigned(Screen.ActiveControl.Parent) and (Screen.ActiveControl.Parent.Name = 'cboAttending') then
+          with Message do
+            begin
+              SendMessage(frmDCSumm.Handle, Msg, WParam, lParam);
+              Result := 0;
+            end
+        else
+          inherited;
+    CT_CONSULTS:
+        if Assigned(Screen.ActiveControl.Parent) and (Screen.ActiveControl.Parent.Name = 'cboCosigner') then
+          with Message do
+            begin
+              SendMessage(frmConsults.Handle, Msg, WParam, lParam);
+              Result := 0;
+            end
+        else
+          inherited;
+  else
+    inherited;
+  end;
+  if Message.WParam = SC_MAXIMIZE then
+  begin
+    // form becomes maximized;
+    frmOrders.mnuOptimizeFieldsClick(self);
+    frmProblems.mnuOptimizeFieldsClick(self);
+    frmMeds.mnuOptimizeFieldsClick(self);
+  end
+  else if Message.WParam = SC_MINIMIZE then
+  begin
+    // form becomes maximized;
+  end
+  else if Message.WParam = SC_RESTORE then
+  begin
+    // form is restored (from maximized);
+    frmOrders.mnuOptimizeFieldsClick(self);
+    frmProblems.mnuOptimizeFieldsClick(self);
+    frmMeds.mnuOptimizeFieldsClick(self);
+  end;
+end;
+
+procedure TfrmFrame.RemindersChanged(Sender: TObject);
+var
+  ImgName: string;
+begin
+  pnlReminders.tag := HAVE_REMINDERS;
+  pnlReminders.Hint := 'Click to display reminders';
+  case GetReminderStatus of
+    rsUnknown:
+      begin
+        ImgName := 'BMP_REMINDERS_UNKNOWN';
+        pnlReminders.Caption := 'Reminders';
+      end;
+    rsDue:
+      begin
+        ImgName := 'BMP_REMINDERS_DUE';
+        pnlReminders.Caption := 'Due Reminders';
+      end;
+    rsApplicable:
+      begin
+        ImgName := 'BMP_REMINDERS_APPLICABLE';
+        pnlReminders.Caption := 'Applicable Reminders';
+      end;
+    rsNotApplicable:
+      begin
+        ImgName := 'BMP_REMINDERS_OTHER';
+        pnlReminders.Caption := 'Other Reminders';
+      end;
+    else
+      begin
+        ImgName := 'BMP_REMINDERS_NONE';
+        pnlReminders.Hint := 'There are currently no reminders available';
+        pnlReminders.Caption := pnlReminders.Hint;
+        pnlReminders.tag := NO_REMINDERS;
+      end;
+  end;
+  if(RemindersEvaluatingInBackground) then
+  begin
+    if(anmtRemSearch.ResName = '') then
+    begin
+      TORExposedAnimate(anmtRemSearch).OnMouseDown := pnlRemindersMouseDown;
+      TORExposedAnimate(anmtRemSearch).OnMouseUp   := pnlRemindersMouseUp;
+      anmtRemSearch.ResHandle := 0;
+      anmtRemSearch.ResName := 'REMSEARCHAVI';
+    end;
+    imgReminder.Visible := FALSE;
+    anmtRemSearch.Active := TRUE;
+    anmtRemSearch.Visible := TRUE;
+    if(pnlReminders.Hint <> '') then
+      pnlReminders.Hint := CRLF + pnlReminders.Hint + '.';
+    pnlReminders.Hint := 'Evaluating Reminders...  ' + pnlReminders.Hint;
+    pnlReminders.Caption := pnlReminders.Hint;
+  end
+  else
+  begin
+    anmtRemSearch.Visible := FALSE;
+    imgReminder.Visible := TRUE;
+    imgReminder.Picture.Bitmap.LoadFromResourceName(hInstance, ImgName);
+    anmtRemSearch.Active := FALSE;
+  end;
+  mnuViewReminders.Enabled := (pnlReminders.tag = HAVE_REMINDERS);
+end;
+
+procedure TfrmFrame.pnlRemindersMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if(not InitialRemindersLoaded) then
+    StartupReminders;
+  if(pnlReminders.tag = HAVE_REMINDERS) then
+    pnlReminders.BevelOuter := bvLowered;
+end;
+
+procedure TfrmFrame.pnlRemindersMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlReminders.BevelOuter := bvRaised;
+  if(pnlReminders.tag = HAVE_REMINDERS) then
+    ViewInfo(mnuViewReminders);
+end;
+
+//--------------------- CIRN-related procedures --------------------------------
+
+procedure TfrmFrame.SetUpCIRN;
+var
+  i: integer;
+  aAutoQuery: string;
+  ASite: TRemoteSite;
+begin
+  uUseVistaWeb := false;
+  with RemoteSites do
+  begin
+    ChangePatient(Patient.DFN);
+    lblCIRN.Caption := ' Remote Data';
+    lblCIRN.Alignment := taCenter;
+    if RemoteDataExists and (RemoteSites.Count > 0) then
+      begin
+        lblCIRN.Enabled     := True;
+        pnlCIRN.TabStop     := True;
+        lblCIRN.Font.Color  := Get508CompliantColor(clBlue);
+        lstCIRNLocations.Font.Color  := Get508CompliantColor(clBlue);
+        lblCIRN.Caption := 'Remote Data';
+        pnlCIRN.Hint := 'Click to display other facilities having data for this patient.';
+        if RemoteSites.Count > 0 then
+          lstCIRNLocations.Items.Add('0' + U + 'All Available Sites');
+        for i := 0 to RemoteSites.Count - 1 do
+          begin
+            ASite := TRemoteSite(SiteList[i]);
+            lstCIRNLocations.Items.Add(ASite.SiteID + U + ASite.SiteName + U +
+              FormatFMDateTime('mmm dd yyyy hh:nn', ASite.LastDate));
+          end;
+      end
+    else
+      begin
+        lblCIRN.Font.Color  := clWindowText;
+        lblCIRN.Enabled     := False;
+        pnlCIRN.TabStop     := False;
+        pnlCIRN.Hint := NoDataReason;
+      end;
+    aAutoQuery := AutoRDV;        //Check to see if Remote Queries should be used for all available sites
+    if (aAutoQuery = '1') and (lstCIRNLocations.Count > 0) then
+      begin
+        lstCIRNLocations.ItemIndex := 1;
+        lstCIRNLocations.Checked[1] := true;
+        lstCIRNLocationsClick(self);
+      end;
+  end;
+end;
+
+procedure TfrmFrame.pnlCIRNClick(Sender: TObject);
+begin
+  ViewInfo(mnuViewRemoteData);
+end;
+
+procedure TfrmFrame.lstCIRNLocationsClick(Sender: TObject);
+var
+  iIndex,j,iAll,iCur: integer;
+  aMsg,s: string;
+  AccessStatus: integer;
+begin
+  iAll := 1;
+  AccessStatus := 0;
+  iIndex := lstCIRNLocations.ItemIndex;
+  if not CheckHL7TCPLink then
+    begin
+      InfoBox('Local HL7 TCP Link is down.' + CRLF + 'Unable to retrieve remote data.', TC_DGSR_ERR, MB_OK);
+      lstCIRNLocations.Checked[iIndex] := false;
+      Exit;
+    end;
+  if lstCIRNLocations.Items.Count > 1 then
+    if piece(lstCIRNLocations.Items[1],'^',1) = '0' then
+      iAll := 2;
+  with frmReports do
+    if piece(uRemoteType,'^',2) = 'V' then
+      begin
+        lvReports.Items.BeginUpdate;
+        lvReports.Items.Clear;
+        lvReports.Columns.Clear;
+        lvReports.Items.EndUpdate;
+      end;
+  uReportInstruction := '';
+  frmReports.TabControl1.Tabs.Clear;
+  frmLabs.TabControl1.Tabs.Clear;
+  frmReports.TabControl1.Tabs.AddObject('Local',nil);
+  frmLabs.TabControl1.Tabs.AddObject('Local',nil);
+  StatusText('Checking Remote Sites...');
+  if piece(lstCIRNLocations.Items[iIndex],'^',1) = '0' then // All sites have been clicked
+    if lstCIRNLocations.Checked[iIndex] = false then // All selection is being turned off
+      begin
+        with RemoteSites.SiteList do
+        for j := 0 to Count - 1 do
+          if lstCIRNLocations.Checked[j+1] = true then
+            begin
+              lstCIRNLocations.Checked[j+1] := false;
+              TRemoteSite(RemoteSites.SiteList[j]).Selected := false;
+              TRemoteSite(RemoteSites.SiteList[j]).ReportClear;
+              TRemoteSite(RemoteSites.SiteList[j]).LabClear;
+            end;
+      end
+    else
+      begin
+        with RemoteSites.SiteList do
+        for j := 0 to Count - 1 do
+            begin
+              Screen.Cursor := crHourGlass;
+              {CheckRemotePatient(aMsg, Patient.DFN + ';' + Patient.ICN,TRemoteSite(Items[j]).SiteID,
+                AccessStatus);}
+              Screen.Cursor := crDefault;
+              aMsg := aMsg + ' at site: ' + TRemoteSite(Items[j]).SiteName;
+              s := lstCIRNLocations.Items[j+1];
+              lstCIRNLocations.Items[j+1] := pieces(s, '^', 1, 3);
+              case AccessStatus of
+              DGSR_FAIL: begin
+                           if piece(aMsg,':',1) = 'RPC name not found at site' then //Allow for backward compatibility
+                             begin
+                               lstCIRNLocations.Checked[j+1] := true;
+                               TRemoteSite(RemoteSites.SiteList[j]).ReportClear;
+                               TRemoteSite(RemoteSites.SiteList[j]).LabClear;
+                               TRemoteSite(Items[j]).Selected := true;
+                             end
+                           else
+                             begin
+                               InfoBox(aMsg, TC_DGSR_ERR, MB_OK);
+                               lstCIRNLocations.Checked[j+1] := false;
+                               lstCIRNLocations.Items[j+1] := pieces(s, '^', 1, 3) + '^' + TC_DGSR_ERR;
+                               TRemoteSite(Items[j]).Selected := false;
+                               Continue;
+                             end;
+                         end;
+              DGSR_NONE: begin
+                           lstCIRNLocations.Checked[j+1] := true;
+                           TRemoteSite(RemoteSites.SiteList[j]).ReportClear;
+                           TRemoteSite(RemoteSites.SiteList[j]).LabClear;
+                           TRemoteSite(Items[j]).Selected := true;
+                         end;
+              DGSR_SHOW: begin
+                           InfoBox(AMsg, TC_DGSR_SHOW, MB_OK);
+                           lstCIRNLocations.Checked[j+1] := true;
+                           TRemoteSite(RemoteSites.SiteList[j]).ReportClear;
+                           TRemoteSite(RemoteSites.SiteList[j]).LabClear;
+                           TRemoteSite(Items[j]).Selected := true;
+                         end;
+              DGSR_ASK:  if InfoBox(AMsg + TX_DGSR_YESNO, TC_DGSR_SHOW, MB_YESNO or MB_ICONWARNING or
+                           MB_DEFBUTTON2) = IDYES then
+                           begin
+                             lstCIRNLocations.Checked[j+1] := true;
+                             TRemoteSite(RemoteSites.SiteList[j]).ReportClear;
+                             TRemoteSite(RemoteSites.SiteList[j]).LabClear;
+                             TRemoteSite(Items[j]).Selected := true;
+                           end
+                           else
+                             begin
+                               lstCIRNLocations.Checked[j+1] := false;
+                               lstCIRNLocations.Items[j+1] := pieces(s, '^', 1, 3) + '^' + TC_DGSR_SHOW;
+                               TRemoteSite(Items[j]).Selected := false;
+                               Continue;
+                             end;
+              else       begin
+                           InfoBox(AMsg, TC_DGSR_DENY, MB_OK);
+                           lstCIRNLocations.Checked[j+1] := false;
+                           lstCIRNLocations.Items[j+1] := pieces(s, '^', 1, 3) + '^' + TC_DGSR_DENY;
+                           TRemoteSite(Items[j]).Selected := false;
+                           Continue;
+                         end;
+              end;
+            end;
+      end
+  else
+    begin
+      if iIndex > 0 then
+        begin
+          iCur := iIndex - iAll;
+          TRemoteSite(RemoteSites.SiteList[iCur]).Selected :=
+            lstCIRNLocations.Checked[iIndex];
+          if lstCIRNLocations.Checked[iIndex] = true then
+            with RemoteSites.SiteList do
+            begin
+              Screen.Cursor := crHourGlass;
+              {CheckRemotePatient(aMsg, Patient.DFN + ';' + Patient.ICN,TRemoteSite(Items[iCur]).SiteID,
+                AccessStatus);}
+              Screen.Cursor := crDefault;
+              aMsg := aMsg + ' at site: ' + TRemoteSite(Items[iCur]).SiteName;
+              s := lstCIRNLocations.Items[iIndex];
+              lstCIRNLocations.Items[iIndex] := pieces(s, '^', 1, 3);
+              case AccessStatus of
+              DGSR_FAIL: begin
+                           if piece(aMsg,':',1) = 'RPC name not found at site' then //Allow for backward compatibility
+                             begin
+                               lstCIRNLocations.Checked[iIndex] := true;
+                               TRemoteSite(RemoteSites.SiteList[iCur]).ReportClear;
+                               TRemoteSite(RemoteSites.SiteList[iCur]).LabClear;
+                               TRemoteSite(Items[iCur]).Selected := true;
+                             end
+                           else
+                             begin
+                               InfoBox(aMsg, TC_DGSR_ERR, MB_OK);
+                               lstCIRNLocations.Checked[iIndex] := false;
+                               lstCIRNLocations.Items[iIndex] := pieces(s, '^', 1, 3) + '^' + TC_DGSR_ERR;
+                               TRemoteSite(Items[iCur]).Selected := false;
+                             end;
+                         end;
+              DGSR_NONE: begin
+                           lstCIRNLocations.Checked[iIndex] := true;
+                           TRemoteSite(RemoteSites.SiteList[iCur]).ReportClear;
+                           TRemoteSite(RemoteSites.SiteList[iCur]).LabClear;
+                           TRemoteSite(Items[iCur]).Selected := true;
+                         end;
+              DGSR_SHOW: begin
+                           InfoBox(AMsg, TC_DGSR_SHOW, MB_OK);
+                           lstCIRNLocations.Checked[iIndex] := true;
+                           TRemoteSite(RemoteSites.SiteList[iCur]).ReportClear;
+                           TRemoteSite(RemoteSites.SiteList[iCur]).LabClear;
+                           TRemoteSite(Items[iCur]).Selected := true;
+                         end;
+              DGSR_ASK:  if InfoBox(AMsg + TX_DGSR_YESNO, TC_DGSR_SHOW, MB_YESNO or MB_ICONWARNING or
+                           MB_DEFBUTTON2) = IDYES then
+                           begin
+                             lstCIRNLocations.Checked[iIndex] := true;
+                             TRemoteSite(RemoteSites.SiteList[iCur]).ReportClear;
+                             TRemoteSite(RemoteSites.SiteList[iCur]).LabClear;
+                             TRemoteSite(Items[iCur]).Selected := true;
+                           end
+                           else
+                             begin
+                               lstCIRNLocations.Checked[iIndex] := false;
+                               lstCIRNLocations.Items[iIndex] := pieces(s, '^', 1, 3) + '^' + TC_DGSR_SHOW;
+                             end;
+              else       begin
+                           InfoBox(AMsg, TC_DGSR_DENY, MB_OK);
+                           lstCIRNLocations.Checked[iIndex] := false;
+                           lstCIRNLocations.Items[iIndex] := pieces(s, '^', 1, 3) + '^' + TC_DGSR_DENY;
+                           TRemoteSite(Items[iCur]).Selected := false;
+                         end;
+              end;
+              with frmReports do
+                if piece(uRemoteType,'^',1) = '1' then
+                  if not(piece(uRemoteType,'^',2) = 'V') then
+                    begin
+                      TabControl1.Visible := true;
+                      pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+                    end;
+              with frmLabs do
+                if piece(uRemoteType,'^',1) = '1' then
+                  if not(piece(uRemoteType,'^',2) = 'V') then
+                    begin
+                      TabControl1.Visible := true;
+                      pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+                    end;
+                {if lstReports.ItemIndex > -1 then
+                  if piece(lstReports.Items[lstReports.ItemIndex],'^',3) = '1' then
+                    if not(piece(lstReports.Items[lstReports.ItemIndex],'^',5) = 'V') then
+                      TabControl1.Visible := true;}
+            end;
+        end;
+    end;
+  with RemoteSites.SiteList do
+    for j := 0 to Count - 1 do
+      if TRemoteSite(Items[j]).Selected then
+        begin
+          frmReports.TabControl1.Tabs.AddObject(TRemoteSite(Items[j]).SiteName,
+            TRemoteSite(Items[j]));
+          frmLabs.TabControl1.Tabs.AddObject(TRemoteSite(Items[j]).SiteName,
+            TRemoteSite(Items[j]));
+        end;
+
+  if frmReports.tvReports.SelectionCount > 0 then frmReports.tvReportsClick(self);
+  if frmLabs.tvReports.SelectionCount > 0 then frmLabs.tvReportsClick(self);
+  //if frmLabs.lstReports.ItemIndex > -1 then frmLabs.ExtlstReportsClick(self, true);
+  StatusText('');
+end;
+
+procedure TfrmFrame.popCIRNCloseClick(Sender: TObject);
+begin
+  lstCIRNLocations.Visible := False;
+  lstCirnLocations.SendToBack;
+  pnlCIRN.BevelOuter := bvRaised;
+end;
+
+procedure TfrmFrame.popCIRNSelectAllClick(Sender: TObject);
+
+begin
+  lstCIRNLocations.ItemIndex := 0;
+  lstCIRNLocations.Checked[0] := true;
+  lstCIRNLocations.OnClick(Self);
+end;
+
+procedure TfrmFrame.popCIRNSelectNoneClick(Sender: TObject);
+
+begin
+  lstCIRNLocations.ItemIndex := 0;
+  lstCIRNLocations.Checked[0] := false;
+  lstCIRNLocations.OnClick(Self);
+end;
+
+procedure TfrmFrame.mnuFilePrintSetupClick(Sender: TObject);
+var
+  CurrPrt: string;
+begin
+  CurrPrt := SelectDevice(Self, Encounter.Location, True,'');
+  User.CurrentPrinter := Piece(CurrPrt, U, 1);
+end;
+
+procedure TfrmFrame.lstCIRNLocationsChange(Sender: TObject);
+begin
+  if lstCIRNLocations.ItemIndex > 0 then
+    if (lstCIRNLocations.Selected[lstCIRNLocations.ItemIndex] = true) and (uUpdateStat = false) then
+      if not (piece(lstCIRNLocations.Items[1],'^',1) = '0') then
+        lstCIRNLocations.OnClick(nil);
+end;
+
+procedure TfrmFrame.LabInfo1Click(Sender: TObject);
+begin
+  ExecuteLabInfo;
+end;
+
+procedure TfrmFrame.mnuFileNotifRemoveClick(Sender: TObject);
+const
+  TC_REMOVE_ALERT  = 'Remove Current Alert';
+  TX_REMOVE_ALERT1 = 'This action will delete the alert you are currently processing; the alert will ' + CRLF +
+        'disappear automatically when all orders have been acted on, but this action may' + CRLF +
+        'be used to remove the alert if some orders are to be left unchanged.' + CRLF + CRLF +
+        'Your ';
+  TX_REMOVE_ALERT2 = ' alert for ';
+  TX_REMOVE_ALERT3 = ' will be deleted!' + CRLF + CRLF + 'Are you sure?';
+var
+  AlertMsg, AlertType: string;
+
+  procedure StopProcessingNotifs;
+    begin
+      Notifications.Clear;
+      FNextButtonActive := False;
+      stsArea.Panels[2].Bevel := pbLowered;
+      mnuFileNext.Enabled := False;
+      mnuFileNotifRemove.Enabled := False;
+    end;
+
+begin
+  if not Notifications.Active then Exit;
+  case Notifications.Followup of
+    NF_MEDICATIONS_EXPIRING_INPT    : AlertType := 'Expiring Medications';
+    NF_MEDICATIONS_EXPIRING_OUTPT   : AlertType := 'Expiring Medications';
+    NF_ORDER_REQUIRES_ELEC_SIGNATURE: AlertType := 'Unsigned Orders';
+    NF_FLAGGED_ORDERS               : AlertType := 'Flagged Orders (for clarification)';
+    NF_UNVERIFIED_MEDICATION_ORDER  : AlertType := 'Unverified Medication Order';
+    NF_UNVERIFIED_ORDER             : AlertType := 'Unverified Order';
+    NF_FLAGGED_OI_EXP_INPT          : AlertType := 'Flagged Orderable Item (INPT)';
+    NF_FLAGGED_OI_EXP_OUTPT         : AlertType := 'Flagged Orderable Item (OUTPT)';
+  else
+    Exit;
+  end;
+  AlertMsg := TX_REMOVE_ALERT1 + AlertType + TX_REMOVE_ALERT2 + Patient.Name + TX_REMOVE_ALERT3;
+  if InfoBox(AlertMsg, TC_REMOVE_ALERT, MB_YESNO) = ID_YES then
+    begin
+      Notifications.DeleteForCurrentUser;
+      Notifications.Next;   // avoid prompt if no more alerts selected to process  {v14a RV}
+      if Notifications.Active then
+        begin
+          if (InfoBox(TX_NOTIF_STOP, TC_NOTIF_STOP, MB_YESNO) = ID_NO) then
+            begin
+              Notifications.Prior;
+              mnuFileNextClick(Self);
+            end
+          else
+            StopProcessingNotifs;
+        end
+      else
+        StopProcessingNotifs;
+    end;
+end;
+
+procedure TfrmFrame.mnuToolsOptionsClick(Sender: TObject);
+// personal preferences - changes may need to be applied to chart
+var
+  i: integer;
+begin
+  i := 0;
+  DialogOptions(i);
+end;
+
+procedure TfrmFrame.LoadUserPreferences;
+begin
+  LoadSizesForUser;
+  GetUserTemplateDefaults(TRUE);
+end;
+
+procedure TfrmFrame.SaveUserPreferences;
+begin
+  SaveSizesForUser;         // position & size settings
+  SaveUserTemplateDefaults;
+end;
+
+procedure TfrmFrame.mnuFileRefreshClick(Sender: TObject);
+begin
+  FRefreshing := TRUE;
+
+  try
+    mnuFileOpenClick(Self);
+  finally
+    FRefreshing := FALSE;
+  end;
+end;
+
+procedure TfrmFrame.AppActivated(Sender: TObject);
+begin
+  if assigned(FOldActivate) then
+    FOldActivate(Sender);
+  SetActiveWindow(Application.Handle);
+  if ScreenReaderSystemActive and assigned(Patient) and (Patient.Name <> '') then
+      SpeakTabAndPatient;
+end;
+
+// close Treatment Factor hint window if alt-tab pressed.
+procedure TfrmFrame.AppDeActivated(Sender: TObject);
+begin
+  if FRVTFhintWindowActive then
+  begin
+     FRVTFHintWindow.ReleaseHandle;
+     FRVTFHintWindowActive := False;
+  end
+  else
+  if FOSTFHintWndActive then
+  begin
+     FOSTFhintWindow.ReleaseHandle;
+     FOSTFHintWndActive := False ;
+  end;
+  if FHintWinActive then   // graphing - hints on values
+  begin
+    FHintWin.ReleaseHandle;
+    FHintWinActive := false;
+  end;
+end;
+
+
+procedure TfrmFrame.CreateTab(ATabID: integer; ALabel: string);
+begin
+  //  old comment - try making owner self (instead of application) to see if solves TMenuItem.Insert bug
+  case ATabID of
+    CT_PROBLEMS : begin
+                    frmProblems := TfrmProblems.Create(Self);
+                    frmProblems.Parent := pnlPage;
+                  end;
+    CT_MEDS     : begin
+                    frmMeds := TfrmMeds.Create(Self);
+                    frmMeds.Parent := pnlPage;
+                    frmMeds.InitfMedsSize;
+                  end;
+    CT_ORDERS   : begin
+                    frmOrders := TfrmOrders.Create(Self);
+                    frmOrders.Parent := pnlPage;
+                  end;
+    CT_HP       : begin
+                    // not yet
+                  end;
+    CT_NOTES    : begin
+                    frmNotes := TfrmNotes.Create(Self);
+                    frmNotes.Parent := pnlPage;
+                  end;
+    CT_CONSULTS : begin
+                    frmConsults := TfrmConsults.Create(Self);
+                    frmConsults.Parent := pnlPage;
+                  end;
+    CT_DCSUMM   : begin
+                    frmDCSumm := TfrmDCSumm.Create(Self);
+                    frmDCSumm.Parent := pnlPage;
+                  end;
+    CT_LABS     : begin
+                    frmLabs := TfrmLabs.Create(Self);
+                    frmLabs.Parent := pnlPage;
+                  end;
+    CT_REPORTS  : begin
+                    frmReports := TfrmReports.Create(Self);
+                    frmReports.Parent := pnlPage;
+                  end;
+    CT_SURGERY  : begin
+                    frmSurgery := TfrmSurgery.Create(Self);
+                    frmSurgery.Parent := pnlPage;
+                  end;
+    CT_COVER    : begin
+                    frmCover := TfrmCover.Create(Self);
+                    frmCover.Parent := pnlPage;
+                  end;
+  else
+    Exit;
+  end;
+  if ATabID = CT_COVER then
+    begin
+      uTabList.Insert(0, IntToStr(ATabID));
+      tabPage.Tabs.Insert(0, ALabel);
+      tabPage.TabIndex := 0;
+    end
+  else
+    begin
+      uTabList.Add(IntToStr(ATabID));
+      tabPage.Tabs.Add(ALabel);
+    end;
+end;
+
+procedure TfrmFrame.ShowHideChartTabMenus(AMenuItem: TMenuItem);
+var
+  i: integer;
+begin
+  for i := 0 to AMenuItem.Count - 1 do
+    AMenuItem.Items[i].Visible := TabExists(AMenuItem.Items[i].Tag);
+end;
+
+function TfrmFrame.TabExists(ATabID: integer): boolean;
+begin
+  Result := (uTabList.IndexOf(IntToStr(ATabID)) > -1)
+end;
+
+procedure TfrmFrame.ReportsOnlyDisplay;
+begin
+
+// Configure "Edit" menu:
+menuHideAllBut(mnuEdit, mnuEditPref);     // Hide everything under Edit menu except Preferences.
+menuHideAllBut(mnuEditPref, Prefs1); // Hide everything under Preferences menu except Fonts.
+
+// Remaining pull-down menus:
+mnuView.visible := false;
+mnuFileRefresh.visible := false;
+mnuFileEncounter.visible := false;
+mnuFileReview.visible := false;
+mnuFileNext.visible := false;
+mnuFileNotifRemove.visible := false;
+mnuHelpBroker.visible := false;
+mnuHelpLists.visible := false;
+mnuHelpSymbols.visible := false;
+
+// Top panel components:
+pnlVisit.hint := 'Provider/Location';
+pnlVisit.onMouseDown := nil;
+pnlVisit.onMouseUp := nil;
+
+// Forms for other tabs:
+frmCover.visible := false;
+frmProblems.visible := false;
+frmMeds.visible := false;
+frmOrders.visible := false;
+frmNotes.visible := false;
+frmConsults.visible := false;
+frmDCSumm.visible := false;
+if Assigned(frmSurgery) then
+  frmSurgery.visible := false;
+frmLabs.visible := false;
+
+// Other tabs (so to speak):
+tabPage.tabs.clear;
+tabPage.tabs.add('Reports');
+
+end;
+
+procedure TfrmFrame.UpdatePtInfoOnRefresh;
+var
+  tmpDFN: string;
+begin
+  tmpDFN := Patient.DFN;
+  Patient.Clear;
+  Patient.DFN := tmpDFN;
+  uCore.TempEncounterLoc := 0;  //hds7591  Clinic/Ward movement.
+  uCore.TempEncounterLocName := ''; //hds7591  Clinic/Ward movement.
+  uCore.TempEncounterText := '';
+  uCore.TempEncounterDateTime := 0;
+  uCore.TempEncounterVistCat := #0;
+  //ucore.TempOutEncounterLoc := 0;
+  //uCore.TempOutEncounterLocName := '';
+  if (not FRefreshing) and (FReviewClick = false) then DoNotChangeEncWindow := false;
+  if (FPrevInPatient and Patient.Inpatient) then                //transfering inside hospital
+    begin
+     // if DoNotChangeEncWindow = false then
+     //   begin
+          if FReviewClick = True then
+            begin
+              ucore.TempEncounterLoc := Encounter.Location;
+              uCore.TempEncounterLocName := Encounter.LocationName;
+              uCore.TempEncounterText := Encounter.LocationText;
+              uCore.TempEncounterDateTime := Encounter.DateTime;
+              uCore.TempEncounterVistCat := Encounter.VisitCategory;
+            end
+          else if (patient.Location <> encounter.Location) and (OrderPrintForm = false) then
+                begin
+                  frmPrintLocation.SwitchEncounterLoction(Encounter.Location, Encounter.locationName, Encounter.LocationText,
+                                                          Encounter.DateTime, Encounter.VisitCategory);
+                  DisplayEncounterText;
+                  exit;
+                end
+          else if (patient.Location <> encounter.Location) and (OrderPrintForm = True) then
+            begin
+              OrderPrintForm := false;
+              Exit;
+            end;
+               
+            //end;
+          Encounter.Location := Patient.Location;
+       // end;
+    end
+  else if (FPrevInPatient and (not Patient.Inpatient)) then     //patient was discharged
+  begin
+    Encounter.Inpatient := False;
+    Encounter.Location := 0;
+    FPrevInPatient := False;
+  end
+  else if ((not FPrevInPatient) and Patient.Inpatient) then     //patient was admitted
+  begin
+    Encounter.Inpatient := True;
+    uCore.TempEncounterLoc := Encounter.Location;  //hds7591  Clinic/Ward movement.
+    uCore.TempEncounterLocName := Encounter.LocationName; //hds7591  Clinic/Ward movement.
+    uCore.TempEncounterText := Encounter.LocationText;
+    uCore.TempEncounterDateTime := Encounter.DateTime;
+    uCore.TempEncounterVistCat := Encounter.VisitCategory;
+    if (FReviewClick = False) and (encounter.Location <> patient.Location) then
+        frmPrintLocation.SwitchEncounterLoction(Encounter.Location, Encounter.locationName, Encounter.LocationText,
+                                                Encounter.DateTime, Encounter.VisitCategory)
+    else
+    //if DoNotChangeEncWindow = false then
+      begin
+        Encounter.Location := Patient.Location;
+        Encounter.DateTime := Patient.AdmitTime;
+        Encounter.VisitCategory := 'H';
+      end;
+    FPrevInPatient := True;
+  end;
+  //if User.IsProvider then Encounter.Provider := ;
+  DisplayEncounterText;
+end;
+
+procedure TfrmFrame.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+var
+  NewTabIndex: integer;
+begin
+  inherited;
+  FCtrlTabUsed := FALSE;
+  //CQ2844: Toggle Remote Data button using Alt+R
+   case Key of
+     82,114:  if (ssAlt in Shift) then
+                 frmFrame.pnlCIRNClick(Sender);
+     end;
+
+  if (Key = VK_TAB) then
+  begin
+    if (ssCtrl in Shift) then
+    begin
+      FCtrlTabUsed := TRUE;
+      if not (ActiveControl is TCustomMemo) or not TMemo(ActiveControl).WantTabs then begin
+        NewTabIndex := tabPage.TabIndex;
+        if ssShift in Shift then
+          dec(NewTabIndex)
+        else
+          inc(NewTabIndex);
+        if NewTabIndex >= tabPage.Tabs.Count then
+          dec(NewTabIndex,tabPage.Tabs.Count)
+        else if NewTabIndex < 0 then
+          inc(NewTabIndex,tabPage.Tabs.Count);
+        tabPage.TabIndex := NewTabIndex;
+        tabPageChange(tabPage);
+        Key := 0;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmFrame.FormActivate(Sender: TObject);
+begin
+  if Assigned(FLastPage) then
+    FLastPage.FocusFirstControl;
+end;
+
+procedure TfrmFrame.pnlPrimaryCareEnter(Sender: TObject);
+begin
+  with Sender as TPanel do
+    if (ControlCount > 0) and (Controls[0] is TSpeedButton) and (TSpeedButton(Controls[0]).Down)
+    then
+      BevelInner := bvLowered
+    else
+      BevelInner := bvRaised;
+end;
+
+procedure TfrmFrame.pnlPrimaryCareExit(Sender: TObject);
+var
+  ShiftIsDown,TabIsDown : boolean;
+begin
+  with Sender as TPanel do begin
+    BevelInner := bvNone;
+    //Make the lstCIRNLocations act as if between pnlCIRN & pnlReminders
+    //in the Tab Order
+    if (lstCIRNLocations.CanFocus) then
+    begin
+      ShiftIsDown := Boolean(Hi(GetKeyState(VK_SHIFT)));
+      TabIsDown := Boolean(Hi(GetKeyState(VK_TAB)));
+      if TabIsDown then
+        if (ShiftIsDown) and (Name = 'pnlReminders') then
+          lstCIRNLocations.SetFocus
+        else if Not (ShiftIsDown) and (Name = 'pnlCIRN') then
+          lstCIRNLocations.SetFocus;
+    end;
+  end;
+end;
+
+procedure TfrmFrame.pnlPatientClick(Sender: TObject);
+begin
+  pnlPatient.Enabled := false;
+  ViewInfo(mnuViewDemo);
+  pnlPatient.Enabled := true;
+end;
+
+procedure TfrmFrame.pnlVisitClick(Sender: TObject);
+begin
+  pnlVisit.Enabled := false;
+  pnlVisit.BevelOuter := bvLowered;
+  with lblPtLocation do SetBounds(Left+2, Top+2, Width, Height);
+  with lblPtProvider do SetBounds(Left+2, Top+2, Width, Height);
+
+  ViewInfo(mnuViewVisits);
+
+  pnlVisit.BevelOuter := bvRaised;
+  with lblPtLocation do SetBounds(Left-2, Top-2, Width, Height);
+  with lblPtProvider do SetBounds(Left-2, Top-2, Width, Height);
+  pnlVisit.Enabled := true;
+end;
+
+procedure TfrmFrame.pnlVistaWebClick(Sender: TObject);
+begin
+  inherited;
+  uUseVistaWeb := true;
+  pnlCIRNClick(self);
+  uUseVistaWeb := false;
+end;
+
+procedure TfrmFrame.pnlVistaWebMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  pnlVistaWeb.BevelOuter := bvLowered;
+end;
+
+procedure TfrmFrame.pnlVistaWebMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  pnlVistaWeb.BevelOuter := bvRaised;
+end;
+
+procedure TfrmFrame.pnlPrimaryCareClick(Sender: TObject);
+begin
+  //ReportBox(DetailPrimaryCare(Patient.DFN), 'Primary Care', True);
+  ViewInfo(mnuViewPrimaryCare);
+end;
+
+procedure TfrmFrame.pnlRemindersClick(Sender: TObject);
+begin
+  if(pnlReminders.tag = HAVE_REMINDERS) then
+      ViewInfo(mnuViewReminders);
+
+end;
+
+procedure TfrmFrame.pnlPostingsClick(Sender: TObject);
+begin
+  ViewInfo(mnuViewPostings);
+end;
+
+//=========================== CCOW main changes ========================
+
+procedure TfrmFrame.HandleCCOWError(AMessage: string);
+begin
+  {$ifdef DEBUG}
+    Show508Message(AMessage);
+  {$endif}
+  InfoBox(TX_CCOW_ERROR, TC_CCOW_ERROR, MB_ICONERROR or MB_OK);
+  FCCOWInstalled := False;
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, 'BMP_CCOW_BROKEN');
+  pnlCCOW.Hint := TX_CCOW_BROKEN;
+  mnuFileResumeContext.Visible := True;
+  mnuFileResumeContext.Enabled := False;
+  mnuFileBreakContext.Visible := True;
+  mnuFileBreakContext.Enabled := False;
+  FCCOWError := True;
+end;
+
+function TfrmFrame.AllowCCOWContextChange(var CCOWResponse: UserResponse; NewDFN: string): boolean;
+var
+  PtData : IContextItemCollection;
+  PtDataItem2, PtDataItem3, PtDataItem4 : IContextItem;
+  response : UserResponse;
+  StationNumber: string;
+  IsProdAcct: boolean;
+begin
+  Result := False;
+  response := 0;
+  try
+    // Start a context change transaction
+    if FCCOWInstalled then
+       begin
+          FCCOWError := False;
+          imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, 'BMP_CCOW_CHANGING');
+          pnlCCOW.Hint := TX_CCOW_CHANGING;
+          try
+            ctxContextor.StartContextChange();
+          except
+            on E: Exception do HandleCCOWError(E.Message);
+          end;
+          if FCCOWError then
+          begin
+            Result := False;
+            Exit;
+          end;
+          // Set the new proposed context data.
+          PtData := CoContextItemCollection.Create();
+          StationNumber := User.StationNumber;
+          IsProdAcct := User.IsProductionAccount;
+
+          {$IFDEF CCOWBROKER}
+          //IsProdAcct := RPCBrokerV.Login.IsProduction;  //not yet
+          {$ENDIF}
+
+          PtDataItem2 := CoContextItem.Create();
+          PtDataItem2.Set_Name('Patient.co.PatientName');                // Patient.Name
+          PtDataItem2.Set_Value(Piece(Patient.Name, ',', 1) + U + Piece(Patient.Name, ',', 2) + '^^^^');
+          PtData.Add(PtDataItem2);
+
+          PtDataItem3 := CoContextItem.Create();
+          if not IsProdAcct then
+            PtDataItem3.Set_Name('Patient.id.MRN.DFN_' + StationNumber + '_TEST')    // Patient.DFN
+          else
+            PtDataItem3.Set_Name('Patient.id.MRN.DFN_' + StationNumber);             // Patient.DFN
+          PtDataItem3.Set_Value(Patient.DFN);
+          PtData.Add(PtDataItem3);
+
+          if Patient.ICN <> '' then
+            begin
+              PtDataItem4 := CoContextItem.Create();
+              if not IsProdAcct then
+                PtDataItem4.Set_Name('Patient.id.MRN.NationalIDNumber_TEST')   // Patient.ICN
+              else
+                PtDataItem4.Set_Name('Patient.id.MRN.NationalIDNumber');       // Patient.ICN
+              PtDataItem4.Set_Value(Patient.ICN);
+              PtData.Add(PtDataItem4);
+            end;
+
+          // End the context change transaction.
+          FCCOWError := False;
+          try
+            response := ctxContextor.EndContextChange(true, PtData);
+          except
+            on E: Exception do HandleCCOWError(E.Message);
+          end;
+          if FCCOWError then
+          begin
+            HideEverything;
+            Result := False;
+            Exit;
+          end;
+       end
+    else
+      //response := urBreak;
+      begin
+        Result := True;
+        Exit;
+      end;
+
+    CCOWResponse := response;
+    if (response = UrCommit) then
+    begin
+      // New context is committed.
+      //Show508Message('Response was Commit');
+      mnuFileResumeContext.Enabled := False;
+      mnuFileBreakContext.Enabled := True;
+      FCCOWIconName := 'BMP_CCOW_LINKED';
+      pnlCCOW.Hint := TX_CCOW_LINKED;
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+      Result := True;
+    end
+    else if (response = UrCancel) then
+    begin
+      // Proposed context change is canceled. Return to the current context.
+      PtData.RemoveAll;
+      mnuFileResumeContext.Enabled := False;
+      mnuFileBreakContext.Enabled := True;
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+      Result := False;
+    end
+    else if (response = UrBreak) then
+    begin
+      // The contextor has broken the link by suspending.  This app should
+      // update the Clinical Link icon, enable the Resume menu item, and
+      // disable the Suspend menu item.
+      PtData.RemoveAll;
+      mnuFileResumeContext.Enabled := True;
+      mnuFileBreakContext.Enabled := False;
+      FCCOWIconName := 'BMP_CCOW_BROKEN';
+      pnlCCOW.Hint := TX_CCOW_BROKEN;
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+      if Patient.Inpatient then
+      begin
+        Encounter.Inpatient := True;
+        Encounter.Location := Patient.Location;
+        Encounter.DateTime := Patient.AdmitTime;
+        Encounter.VisitCategory := 'H';
+      end;
+      if User.IsProvider then Encounter.Provider := User.DUZ;
+      SetupPatient;
+      tabPage.TabIndex := PageIDToTab(User.InitialTab);
+      tabPageChange(tabPage);
+      Result := False;
+    end;
+  except
+    on exc : EOleException do
+      //Show508Message('EOleException: ' + exc.Message + ' - ' + string(exc.ErrorCode) );
+      ShowMsg('EOleException: ' + exc.Message);
+  end;
+end;
+
+procedure TfrmFrame.ctxContextorCanceled(Sender: TObject);
+begin
+  // Application should maintain its state as the current (existing) context.
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+end;
+
+procedure TfrmFrame.ctxContextorPending(Sender: TObject;
+  const aContextItemCollection: IDispatch);
+var
+  Reason, HyperLinkReason: string;
+  PtChanged: boolean;
+{$IFDEF CCOWBROKER}
+  UserChanged: boolean;
+{$ENDIF}
+begin
+  // If the app would lose data, or have other problems changing context at
+  // this time, it should return a message using SetSurveyReponse. Note that the
+  // user may decide to commit the context change anyway.
+  //
+  // if (cannot-change-context-without-a-problem) then
+  //   contextor.SetSurveyResponse('Conditional accept reason...');
+  if FCCOWBusy then
+  begin
+    Sleep(10000);
+  end;
+
+  FCCOWError := False;
+  try
+    CheckForDifferentPatient(aContextItemCollection, PtChanged);
+{$IFDEF CCOWBROKER}
+    CheckForDifferentUser(aContextItemCollection, UserChanged);
+{$ENDIF}
+  except
+    on E: Exception do HandleCCOWError(E.Message);
+  end;
+  if FCCOWError then
+  begin
+    HideEverything;
+    Exit;
+  end;
+
+{$IFDEF CCOWBROKER}
+  if PtChanged or UserChanged then
+{$ELSE}
+  if PtChanged then
+{$ENDIF}
+    begin
+      FCCOWContextChanging := True;
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, 'BMP_CCOW_CHANGING');
+      pnlCCOW.Hint := TX_CCOW_CHANGING;
+      AllowContextChangeAll(Reason);
+    end;
+  CheckHyperlinkResponse(aContextItemCollection, HyperlinkReason);
+  Reason := HyperlinkReason + Reason;
+  if Pos('COM_OBJECT_ACTIVE', Reason) > 0 then
+    Sleep(12000)
+  else if Length(Reason) > 0 then
+    ctxContextor.SetSurveyResponse(Reason)
+  else
+    begin
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, 'BMP_CCOW_LINKED');
+      pnlCCOW.Hint := TX_CCOW_LINKED;
+    end;
+  FCCOWContextChanging := False;
+end;
+
+procedure TfrmFrame.ctxContextorCommitted(Sender: TObject);
+var
+  Reason: string;
+  PtChanged: boolean;
+  i: integer;
+begin
+  // Application should now access the new context and update its state.
+  FCCOWError := False;
+  try
+  {$IFDEF CCOWBROKER}
+    with RPCBrokerV do if (WasUserDefined and IsUserCleared and (ctxContextor.CurrentContext.Present(CCOW_USER_NAME) = nil)) then    // RV 05/11/04
+    begin
+      Reason := 'COMMIT';
+      if AllowContextChangeAll(Reason) then
+      begin
+        Close;
+        Exit;
+      end;
+    end;
+  {$ENDIF}
+    CheckForDifferentPatient(ctxContextor.CurrentContext, PtChanged);
+  except
+    on E: Exception do HandleCCOWError(E.Message);
+  end;
+  if FCCOWError then
+  begin
+    HideEverything;
+    Exit;
+  end;
+  if not PtChanged then exit;
+  // HideEverything('Retrieving information - please wait....'); // v27 (pending) RV
+  FCCOWDrivedChange := True;
+  i := 0;
+  while Length(Screen.Forms[i].Name) > 0 do
+  begin
+    if fsModal in Screen.Forms[i].FormState then
+    begin
+      Screen.Forms[i].ModalResult := mrCancel;
+      i := i + 1;
+    end else  // the fsModal forms always sequenced prior to the none-fsModal forms
+      Break;
+  end;
+  Reason := 'COMMIT';
+  if AllowContextChangeAll(Reason) then UpdateCCOWContext;
+  FCCOWIconName := 'BMP_CCOW_LINKED';
+  pnlCCOW.Hint := TX_CCOW_LINKED;
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+  // ShowEverything;    // v27 (pending) RV
+end;
+
+//function TfrmFrame.FindBestCCOWDFN(var APatientName: string): string;
+function TfrmFrame.FindBestCCOWDFN: string;
+var
+  data: IContextItemCollection;
+  anItem: IContextItem;
+  StationNumber, tempDFN: string;
+  IsProdAcct:  Boolean;
+
+  procedure FindNextBestDFN;
+  begin
+    StationNumber := User.StationNumber;
+    if IsProdAcct then
+      anItem := data.Present('Patient.id.MRN.DFN_' + StationNumber)
+    else
+      anItem := data.Present('Patient.id.MRN.DFN_' + StationNumber + '_TEST');
+    if anItem <>  nil then tempDFN := anItem.Get_Value();
+  end;
+
+begin
+  if uCore.User = nil then
+  begin
+    Result := '';
+    exit;
+  end;
+  IsProdAcct := User.IsProductionAccount;
+  {$IFDEF CCOWBROKER}
+  //IsProdAcct := RPCBrokerV.Login.IsProduction;  //not yet
+  {$ENDIF}
+  // Get an item collection of the current context
+  FCCOWError := False;
+  try
+    data := ctxContextor.CurrentContext;
+  except
+    on E: Exception do HandleCCOWError(E.Message);
+  end;
+  if FCCOWError then
+  begin
+    HideEverything;
+    Exit;
+  end;
+  // Retrieve the ContextItem name and value as strings
+  if IsProdAcct then
+    anItem := data.Present('Patient.id.MRN.NationalIDNumber')
+  else
+    anItem := data.Present('Patient.id.MRN.NationalIDNumber_TEST');
+  if anItem <> nil then
+    begin
+      tempDFN := GetDFNFromICN(anItem.Get_Value());			 // "Public" RPC call
+      if tempDFN = '-1' then FindNextBestDFN;
+    end
+  else
+    FindNextBestDFN;
+  Result := tempDFN;
+(*  anItem := data.Present('Patient.co.PatientName');
+  if anItem <> nil then APatientName := anItem.Get_Value();*)
+  data := nil;
+  anItem := nil;
+end;
+
+procedure TfrmFrame.UpdateCCOWContext;
+var
+  PtDFN(*, PtName*): string;
+begin
+  if not FCCOWInstalled then exit;
+  DoNotChangeEncWindow := false;
+  //PtDFN := FindBestCCOWDFN(PtName);
+  PtDFN := FindBestCCOWDFN;
+  if StrToInt64Def(PtDFN, 0) > 0 then
+    begin
+      // Select new patient based on context value
+      if Patient.DFN = PtDFN then exit;
+      Patient.DFN := PtDFN;
+      //if (Patient.Name = '-1') or (PtName <> Piece(Patient.Name, ',', 1) + U + Piece(Patient.Name, ',', 2) + '^^^^') then
+      if (Patient.Name = '-1') then
+        begin
+          HideEverything;
+          exit;
+        end
+      else
+        ShowEverything;
+      Encounter.Clear;
+      if Patient.Inpatient then
+      begin
+        Encounter.Inpatient := True;
+        Encounter.Location := Patient.Location;
+        Encounter.DateTime := Patient.AdmitTime;
+        Encounter.VisitCategory := 'H';
+      end;
+      if User.IsProvider then Encounter.Provider := User.DUZ;
+      if not FFirstLoad then SetupPatient;
+      frmCover.UpdateVAAButton; //VAA
+      DetermineNextTab;
+      tabPage.TabIndex := PageIDToTab(NextTab);
+      tabPageChange(tabPage);
+    end
+  else
+    HideEverything;
+end;
+
+procedure TfrmFrame.mnuFileBreakContextClick(Sender: TObject);
+begin
+  FCCOWError := False;
+  FCCOWIconName := 'BMP_CCOW_CHANGING';
+  pnlCCOW.Hint := TX_CCOW_CHANGING;
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+  try
+    ctxContextor.Suspend;
+  except
+    on E: Exception do HandleCCOWError(E.Message);
+  end;
+  if FCCOWError then exit;
+  FCCOWIconName := 'BMP_CCOW_BROKEN';
+  pnlCCOW.Hint := TX_CCOW_BROKEN;
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+  mnuFileResumeContext.Enabled := True;
+  mnuFileBreakContext.Enabled := False;
+end;
+
+procedure TfrmFrame.mnuFileResumeContextGetClick(Sender: TObject);
+var
+  Reason: string;
+begin
+  Reason := '';
+  if not AllowContextChangeAll(Reason) then exit;
+  FCCOWIconName := 'BMP_CCOW_CHANGING';
+  pnlCCOW.Hint := TX_CCOW_CHANGING;
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+  FCCOWError := False;
+  try
+    ctxContextor.Resume;
+  except
+    on E: Exception do HandleCCOWError(E.Message);
+  end;
+  if FCCOWError then exit;
+  UpdateCCOWContext;
+  if not FNoPatientSelected then
+  begin
+    FCCOWIconName := 'BMP_CCOW_LINKED';
+    pnlCCOW.Hint := TX_CCOW_LINKED;
+    imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+    mnuFileResumeContext.Enabled := False;
+    mnuFileBreakContext.Visible := True;
+    mnuFileBreakContext.Enabled := True;
+  end;
+end;
+
+procedure TfrmFrame.mnuFileResumeContextSetClick(Sender: TObject);
+var
+  CCOWResponse: UserResponse;
+  Reason: string;
+begin
+  Reason := '';
+  if not AllowContextChangeAll(Reason) then exit;
+  FCCOWIconName := 'BMP_CCOW_CHANGING';
+  pnlCCOW.Hint := TX_CCOW_CHANGING;
+  imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+  FCCOWError := False;
+  try
+    ctxContextor.Resume;
+  except
+    on E: Exception do HandleCCOWError(E.Message);
+  end;
+  if FCCOWError then exit;
+  if (AllowCCOWContextChange(CCOWResponse, Patient.DFN)) then
+    begin
+      mnuFileResumeContext.Enabled := False;
+      mnuFileBreakContext.Visible := True;
+      mnuFileBreakContext.Enabled := True;
+      FCCOWIconName := 'BMP_CCOW_LINKED';
+      pnlCCOW.Hint := TX_CCOW_LINKED;
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+    end
+  else
+    begin
+      mnuFileResumeContext.Enabled := True;
+      mnuFileBreakContext.Enabled := False;
+      FCCOWIconName := 'BMP_CCOW_BROKEN';
+      pnlCCOW.Hint := TX_CCOW_BROKEN;
+      imgCCOW.Picture.BitMap.LoadFromResourceName(hInstance, FCCOWIconName);
+      try
+        if ctxContextor.State in [csParticipating] then ctxContextor.Suspend;
+      except
+        on E: Exception do HandleCCOWError(E.Message);
+      end;
+   end;
+  SetupPatient;
+  tabPage.TabIndex := PageIDToTab(User.InitialTab);
+  tabPageChange(tabPage);
+end;
+
+procedure TfrmFrame.CheckForDifferentPatient(aContextItemCollection: IDispatch; var PtChanged: boolean);
+var
+  data : IContextItemCollection;
+  anItem: IContextItem;
+  PtDFN, PtName: string;
+begin
+  if uCore.Patient = nil then
+  begin
+    PtChanged := False;
+    Exit;
+  end;
+  data := IContextItemCollection(aContextItemCollection) ;
+  //PtDFN := FindBestCCOWDFN(PtName);
+  PtDFN := FindBestCCOWDFN;
+  // Retrieve the ContextItem name and value as strings
+  anItem := data.Present('Patient.co.PatientName');
+  if anItem <> nil then PtName := anItem.Get_Value();
+  PtChanged := not ((PtDFN = Patient.DFN) and (PtName = Piece(Patient.Name, ',', 1) + U + Piece(Patient.Name, ',', 2) + '^^^^'));
+end;
+
+{$IFDEF CCOWBROKER}
+procedure TfrmFrame.CheckForDifferentUser(aContextItemCollection: IDispatch; var UserChanged: boolean);
+var
+  data : IContextItemCollection;
+begin
+  if uCore.User = nil then
+  begin
+    UserChanged := False;
+    Exit;
+  end;
+  data := IContextItemCollection(aContextItemCollection) ;
+  UserChanged := RPCBrokerV.IsUserContextPending(data);
+end;
+{$ENDIF}
+
+procedure TfrmFrame.CheckHyperlinkResponse(aContextItemCollection: IDispatch; var HyperlinkReason: string);
+var
+  data : IContextItemCollection;
+  anItem : IContextItem;
+  itemvalue: string;
+  PtSubject: string;
+begin
+  data := IContextItemCollection(aContextItemCollection) ;
+  anItem := data.Present('[hds_med_va.gov]request.id.name');
+  // Retrieve the ContextItem name and value as strings
+  if anItem <> nil then
+    begin
+      itemValue := anItem.Get_Value();
+      if itemValue = 'GetWindowHandle' then
+        begin
+          PtSubject := 'patient.id.mrn.dfn_' + User.StationNumber;
+          if not User.IsProductionAccount then PtSubject := PtSubject + '_test';
+          if data.Present(PtSubject) <> nil then
+            HyperlinkReason := '!@#$' + IntToStr(Self.Handle) + ':0:'
+          else
+            HyperlinkReason := '';
+        end;
+    end;
+end;
+
+procedure TfrmFrame.HideEverything(AMessage: string = 'No patient is currently selected.');
+begin
+  FNoPatientSelected := TRUE;
+  pnlNoPatientSelected.Caption := AMessage;
+  pnlNoPatientSelected.Visible := True;
+  pnlNoPatientSelected.BringToFront;
+  mnuFileReview.Enabled := False;
+  mnuFilePrint.Enabled := False;
+  mnuFilePrintSelectedItems.Enabled := False;
+  mnuFileEncounter.Enabled := False;
+  mnuFileNext.Enabled := False;
+  mnuFileRefresh.Enabled := False;
+  mnuFilePrintSetup.Enabled := False;
+  mnuFilePrintSelectedItems.Enabled := False;
+  mnuFileNotifRemove.Enabled := False;
+  mnuFileResumeContext.Enabled := False;
+  mnuFileBreakContext.Enabled := False;
+  mnuEdit.Enabled := False;
+  mnuView.Enabled := False;
+  mnuTools.Enabled := False;
+  if FNextButtonActive then FNextButton.Visible := False;
+end;
+
+procedure TfrmFrame.ShowEverything;
+begin
+  FNoPatientSelected := FALSE;
+  pnlNoPatientSelected.Caption := '';
+  pnlNoPatientSelected.Visible := False;
+  pnlNoPatientSelected.SendToBack;
+  mnuFileReview.Enabled := True;
+  mnuFilePrint.Enabled := True;
+  mnuFileEncounter.Enabled := True;
+  mnuFileNext.Enabled := True;
+  mnuFileRefresh.Enabled := True;
+  mnuFilePrintSetup.Enabled := True;
+  mnuFilePrintSelectedItems.Enabled := True;
+  mnuFileNotifRemove.Enabled := True;
+  if not FCCOWError then
+  begin
+    if FCCOWIconName= 'BMP_CCOW_BROKEN' then
+    begin
+      mnuFileResumeContext.Enabled := True;
+      mnuFileBreakContext.Enabled := False;
+    end else
+    begin
+      mnuFileResumeContext.Enabled := False;
+      mnuFileBreakContext.Enabled := True;
+    end;
+  end;
+  mnuEdit.Enabled := True;
+  mnuView.Enabled := True;
+  mnuTools.Enabled := True;
+  if FNextButtonActive then FNextButton.Visible := True;
+end;
+
+
+procedure TfrmFrame.pnlFlagMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  pnlFlag.BevelOuter := bvLowered;
+end;
+
+procedure TfrmFrame.pnlFlagMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  pnlFlag.BevelOuter := bvRaised;
+end;
+
+procedure TfrmFrame.pnlFlagClick(Sender: TObject);
+begin
+  //ShowFlags;
+  ViewInfo(mnuViewFlags);
+end;
+
+procedure TfrmFrame.mnuFilePrintSelectedItemsClick(Sender: TObject);
+begin
+    case TabToPageID(tabPage.TabIndex) of
+      CT_NOTES:    frmNotes.LstNotesToPrint;
+      CT_CONSULTS: frmConsults.LstConsultsToPrint;
+      CT_DCSUMM:   frmDCSumm.LstSummsToPrint;
+ end; {case}
+end;
+
+procedure TfrmFrame.mnuAlertRenewClick(Sender: TObject);
+var XQAID: string;
+begin
+  XQAID := Piece(Notifications.RecordID, '^', 2);
+  RenewAlert(XQAID);
+end;
+
+procedure TfrmFrame.mnuAlertForwardClick(Sender: TObject);
+var
+  XQAID, AlertMsg: string;
+begin
+  XQAID := Piece(Notifications.RecordID,'^', 2);
+  AlertMsg := Piece(Notifications.RecordID, '^', 1);
+  RenewAlert(XQAID);  // must renew/restore an alert before it can be forwarded
+  ForwardAlertTo(XQAID + '^' + AlertMsg);
+end;
+
+procedure TfrmFrame.mnuGECStatusClick(Sender: TObject);
+var
+ans, Result,str,str1,title: string;
+cnt,i: integer;
+fin: boolean;
+
+begin
+  Result := sCallV('ORQQPXRM GEC STATUS PROMPT', [Patient.DFN]);
+  if Piece(Result,U,1) <> '0' then
+    begin
+      title := Piece(Result,U,2);
+        if pos('~',Piece(Result,U,1))>0 then
+               begin
+               str:='';
+               str1 := Piece(Result,U,1);
+               cnt := DelimCount(str1, '~');
+               for i:=1 to cnt+1 do
+                   begin
+                   if i = 1 then str := Piece(str1,'~',i);
+                   if i > 1 then str :=str+CRLF+Piece(str1,'~',i);
+                   end;
+             end
+             else str := Piece(Result,U,1);
+        if Piece(Result,U,3)='1' then
+          begin
+             fin := (InfoBox(str,title, MB_YESNO or MB_DEFBUTTON2)=IDYES);
+             if fin = true then ans := '1';
+             if fin = false then ans := '0';
+             CallV('ORQQPXRM GEC FINISHED?',[Patient.DFN,ans]);
+          end
+        else
+        InfoBox(str,title, MB_OK);
+    end;
+end;
+
+procedure TfrmFrame.pnlFlagEnter(Sender: TObject);
+begin
+  pnlFlag.BevelInner := bvRaised;
+  pnlFlag.BevelOuter := bvNone;
+  pnlFlag.BevelWidth := 4;
+end;
+
+procedure TfrmFrame.pnlFlagExit(Sender: TObject);
+begin
+  pnlFlag.BevelWidth := 2;
+  pnlFlag.BevelInner := bvNone;
+  pnlFlag.BevelOuter := bvRaised;
+end;
+
+procedure TfrmFrame.tabPageMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  LastTab := TabToPageID((sender as TTabControl).TabIndex);
+end;
+
+procedure TfrmFrame.lstCIRNLocationsExit(Sender: TObject);
+begin
+    //Make the lstCIRNLocations act as if between pnlCIRN & pnlReminders
+    //in the Tab Order
+  if Boolean(Hi(GetKeyState(VK_TAB))) then
+    if Boolean(Hi(GetKeyState(VK_SHIFT))) then
+      pnlCIRN.SetFocus
+    else
+      pnlReminders.SetFocus;
+end;
+
+procedure TfrmFrame.AppEventsActivate(Sender: TObject);
+begin
+  FJustEnteredApp := True;
+end;
+
+procedure TfrmFrame.ScreenActiveFormChange(Sender: TObject);
+begin
+  if(assigned(FOldActiveFormChange)) then
+    FOldActiveFormChange(Sender);
+  //Focus the Form that Stays on Top after the Application Regains focus.
+  if FJustEnteredApp then
+    FocusApplicationTopForm;
+  FJustEnteredApp := false;
+end;
+
+procedure TfrmFrame.FocusApplicationTopForm;
+var
+  I : integer;
+begin
+  for I := (Screen.FormCount-1) downto 0 do //Set the last one opened last
+  begin
+    with Screen.Forms[I] do
+      if (FormStyle = fsStayOnTop) and (Enabled) and (Visible) then
+        SetFocus;
+  end;
+end;
+
+procedure TfrmFrame.AppEventsShortCut(var Msg: TWMKey;
+  var Handled: Boolean);
+begin
+  if ((Boolean(Hi(GetKeyState(VK_MENU{ALT})))) and (Msg.CharCode = VK_F1)) then
+  begin
+    FocusApplicationTopForm;
+    Handled := True;
+  end;
+end;
+
+procedure TfrmFrame.mnuToolsGraphingClick(Sender: TObject);
+begin
+  Screen.Cursor := crHourGlass;
+  if GraphFloat = nil then              // new graph
+  begin
+    GraphFloat := TfrmGraphs.Create(self);
+    try
+      with GraphFloat do
+      begin
+        if btnClose.Tag = 1 then
+        begin
+          Screen.Cursor := crDefault;
+          exit;
+        end;
+        Initialize;
+        Caption := 'CPRS Graphing - Patient: ' + MixedCase(Patient.Name);
+        BorderIcons := [biSystemMenu, biMaximize, biMinimize];
+        BorderStyle := bsSizeable;
+        BorderWidth := 1;
+        // context sensitive       type (tabPage.TabIndex)  & [item]
+        ResizeAnchoredFormToFont(GraphFloat);
+        Show;
+      end;
+    finally
+      if GraphFloat.btnClose.Tag = 1 then
+      begin
+        GraphFloatActive := false;
+        GraphFloat.Free;
+        GraphFloat := nil;
+      end
+      else
+        GraphFloatActive := true;
+    end;
+  end
+  else
+  begin
+    GraphFloat.Caption := 'CPRS Graphing - Patient: ' + MixedCase(Patient.Name);
+    if GraphFloat.btnClose.Tag = 1 then
+    begin
+      Screen.Cursor := crDefault;
+      exit;
+    end
+    else if GraphFloatActive and (frmGraphData.pnlData.Hint = Patient.DFN) then
+      GraphFloat.BringToFront             // graph is active, same patient
+    else if frmGraphData.pnlData.Hint = Patient.DFN then
+    begin                                 // graph is not active, same patient
+      // context sensitive
+      GraphFloat.Show;
+      GraphFloatActive := true;
+    end
+    else
+    //with GraphFloat do                    // new patient
+    begin
+      GraphFloat.InitialRetain;
+      GraphFloatActive := false;
+      GraphFloat.Free;
+      GraphFloat := nil;
+      mnuToolsGraphingClick(self);          // delete and recurse
+      {//FormCreate(self);   //****************
+      Initialize;
+      DisplayData('top');
+      DisplayData('bottom');
+      GtslCheck.Clear;
+      Caption := 'CPRS Graphing - Patient: ' + MixedCase(Patient.Name);
+      // context sensitive
+      Show;
+      GraphFloatActive := true;}
+    end;
+  end;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmFrame.pnlCIRNMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlCIRN.BevelOuter := bvLowered;
+end;
+
+procedure TfrmFrame.pnlCIRNMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlCIRN.BevelOuter := bvRaised;
+end;
+
+procedure TfrmFrame.laMHVClick(Sender: TObject);
+begin
+  //if laMHV.Caption = 'MHV' then
+  //  ShellExecute(Handle, 'open', PChar('http://www.myhealth.va.gov/'), '', '', SW_NORMAL);
+  ViewInfo(mnuViewMyHealtheVet);
+end;
+
+procedure TfrmFrame.laVAA2Click(Sender: TObject);
+{var
+  InsuranceSubscriberName: string;
+  ReportString: TStringList; //CQ7782 }
+begin
+  {if fCover.VAAFlag[0] <> '0' then //'0' means subscriber not found
+     begin
+     InsuranceSubscriberName := fCover.VAAFlag[12];
+     //CQ7782
+     //ReportString := TStringList.Create;
+     ReportString := VAAFlag;
+     ReportString[0] := '';
+     ReportBox(ReportString, InsuranceSubscriberName, True);
+     //end CQ7782
+     end;}
+  ViewInfo(mnuInsurance);
+end;
+
+procedure TfrmFrame.ViewInfo(Sender: TObject);
+var
+  SelectNew: Boolean;
+  InsuranceSubscriberName: string;
+  ReportString: TStringList;
+  aAddress: string;
+
+begin
+  case (Sender as TMenuItem).Tag of
+    1:begin { displays patient inquiry report (which optionally allows new patient to be selected) }
+        StatusText(TX_PTINQ);
+        PatientInquiry(SelectNew);
+        if Assigned(FLastPage) then
+          FLastPage.FocusFirstControl;
+        StatusText('');
+        if SelectNew then mnuFileOpenClick(mnuViewDemo);
+      end;
+    2:begin
+        if (not User.IsReportsOnly) then // Reports Only tab.
+          mnuFileEncounterClick(Self);
+      end;
+    3:begin
+        ReportBox(DetailPrimaryCare(Patient.DFN), 'Primary Care', True);
+      end;
+    4:begin
+        if laMHV.Caption = 'MHV' then
+          ShellExecute(laMHV.Handle, 'open', PChar('http://www.myhealth.va.gov/'), '', '', SW_NORMAL);
+      end;
+    5:begin
+        if fCover.VAAFlag[0] <> '0' then //'0' means subscriber not found
+        begin
+         //  CQ:15534-GE  Remove leading spaces from Patient Name
+          InsuranceSubscriberName := ( (Piece(fCover.VAAFlag[12],':',1)) + ':  ' +
+                                     (TRIM(Piece(fCover.VAAFlag[12],':',2)) ));//fCover.VAAFlag[12];
+          ReportString := VAAFlag;
+          ReportString[0] := '';
+          ReportBox(ReportString, InsuranceSubscriberName, True);
+        end;
+      end;
+    6:begin
+        ShowFlags;
+      end;
+    7:begin
+        if uUseVistaWeb = true then
+          begin
+            pnlCIRN.BevelOuter := bvRaised;
+            lblCIRN.Alignment := taCenter;
+            lstCIRNLocations.Visible := false;
+            lstCIRNLocations.SendToBack;
+            aAddress := GetVistaWebAddress(Patient.DFN);
+            ShellExecute(pnlCirn.Handle, 'open', PChar(aAddress), PChar(''), '', SW_NORMAL);
+            Exit;
+          end;
+        if not RemoteSites.RemoteDataExists then Exit;
+        if (not lstCIRNLocations.Visible) then
+          begin
+            pnlCIRN.BevelOuter := bvLowered;
+            lstCIRNLocations.Visible := True;
+            lstCIRNLocations.BringToFront;
+            lstCIRNLocations.SetFocus;
+            pnlCIRN.Hint := 'Click to close list.';
+          end
+        else
+          begin
+            pnlCIRN.BevelOuter := bvRaised;
+            lstCIRNLocations.Visible := False;
+            lstCIRNLocations.SendToBack;
+            pnlCIRN.Hint := 'Click to display other facilities having data for this patient.';
+          end;
+      end;
+    8:begin
+        ViewReminderTree;
+      end;
+    9:begin { displays the window that shows crisis notes, warnings, allergies, & advance directives }
+        ShowCWAD;
+      end;
+  end;
+end;
+
+procedure TfrmFrame.mnuViewInformationClick(Sender: TObject);
+begin
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+procedure TfrmFrame.SetActiveTab(PageID: Integer);
+begin
+  tabPage.TabIndex := frmFrame.PageIDToTab(PageID);
+  tabPageChange(tabPage);
+end;
+
+procedure TfrmFrame.NextButtonClick(Sender: TObject);
+begin
+  if FProccessingNextClick then Exit;
+  FProccessingNextClick := true;
+  popAlerts.AutoPopup := TRUE;
+  mnuFileNext.Enabled := True;
+  mnuFileNextClick(Self);
+  FProccessingNextClick := false;
+end;
+
+procedure TfrmFrame.NextButtonMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+begin
+   popAlerts.AutoPopup := TRUE;
+end;
+
+procedure TfrmFrame.SetUpNextButton;
+ begin
+   if FNextButton <> nil then
+   begin
+      FNextButton.free;
+      FNextButton := nil;
+   end;
+   FNextButton := TBitBtn.Create(self);
+   FNextButton.Parent:= frmFrame;
+   FNextButton.Glyph := FNextButtonBitmap;
+   FNextButton.OnMouseDown := NextButtonMouseDown;
+   FNextButton.OnClick := NextButtonClick;
+   FNextButton.Caption := '&Next';
+   FNextButton.PopupMenu := popAlerts;
+   FNextButton.Top := stsArea.Top;
+   FNextButton.Left := FNextButtonL;
+   FNextButton.Height := stsArea.Height;
+   FNextButton.Width := stsArea.Panels[2].Width;
+   FNextButton.TabStop := True;
+   FNextButton.TabOrder := 1;
+   FNextButton.show;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmFrame);
+
+finalization
+
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphData.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphData.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphData.dfm	(revision 1676)
@@ -0,0 +1,142 @@
+inherited frmGraphData: TfrmGraphData
+  Left = 0
+  Top = 0
+  Caption = 'GraphData - displayed only for testing'
+  ClientHeight = 582
+  ClientWidth = 782
+  Font.Name = 'Tahoma'
+  WindowState = wsMaximized
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = btnRefreshClick
+  ExplicitWidth = 790
+  ExplicitHeight = 609
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlData: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 782
+    Height = 504
+    Align = alClient
+    TabOrder = 0
+  end
+  object pnlInfo: TPanel [1]
+    Left = 0
+    Top = 504
+    Width = 782
+    Height = 78
+    Align = alBottom
+    TabOrder = 1
+    object lblInfo: TLabel
+      Left = 14
+      Top = 5
+      Width = 162
+      Height = 13
+      Caption = 'Resize form before clicking button'
+    end
+    object lblInfoPersonal: TLabel
+      Left = 184
+      Top = 19
+      Width = 41
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Personal'
+    end
+    object lblInfoPublic: TLabel
+      Left = 198
+      Top = 33
+      Width = 27
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Public'
+    end
+    object lblPublic: TLabel
+      Left = 232
+      Top = 33
+      Width = 3
+      Height = 13
+    end
+    object lblPersonal: TLabel
+      Left = 231
+      Top = 19
+      Width = 3
+      Height = 13
+    end
+    object lblCurrent: TLabel
+      Left = 232
+      Top = 5
+      Width = 3
+      Height = 13
+    end
+    object lblInfoCurrent: TLabel
+      Left = 188
+      Top = 5
+      Width = 37
+      Height = 13
+      Alignment = taRightJustify
+      Caption = 'Current'
+    end
+    object btnData: TButton
+      Left = 14
+      Top = 22
+      Width = 75
+      Height = 25
+      Caption = 'TStringLists'
+      TabOrder = 0
+      OnClick = btnDataClick
+    end
+    object btnRefresh: TButton
+      Left = 102
+      Top = 22
+      Width = 75
+      Height = 25
+      Caption = 'Refresh'
+      Enabled = False
+      TabOrder = 1
+      OnClick = btnRefreshClick
+    end
+    object btnTesting: TButton
+      Left = 14
+      Top = 50
+      Width = 75
+      Height = 25
+      Caption = 'Testing'
+      TabOrder = 2
+      OnClick = btnTestingClick
+    end
+    object memTesting: TMemo
+      Left = 120
+      Top = 48
+      Width = 649
+      Height = 27
+      ScrollBars = ssVertical
+      TabOrder = 3
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlData'
+        'Status = stsDefault')
+      (
+        'Component = pnlInfo'
+        'Status = stsDefault')
+      (
+        'Component = btnData'
+        'Status = stsDefault')
+      (
+        'Component = btnRefresh'
+        'Status = stsDefault')
+      (
+        'Component = frmGraphData'
+        'Status = stsDefault')
+      (
+        'Component = btnTesting'
+        'Status = stsDefault')
+      (
+        'Component = memTesting'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphData.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphData.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphData.pas	(revision 1676)
@@ -0,0 +1,737 @@
+unit fGraphData;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ExtCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmGraphData = class(TfrmBase508Form)
+    lblCurrent: TLabel;
+    lblInfo: TLabel;
+    lblInfoCurrent: TLabel;
+    lblInfoPersonal: TLabel;
+    lblInfoPublic: TLabel;
+    lblPersonal: TLabel;
+    lblPublic: TLabel;
+    pnlData: TPanel;
+    pnlInfo: TPanel;
+    btnData: TButton;
+    btnRefresh: TButton;
+    btnTesting: TButton;
+    memTesting: TMemo;
+
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormDestroy(Sender: TObject);
+
+    procedure btnDataClick(Sender: TObject);
+    procedure btnRefreshClick(Sender: TObject);
+    procedure btnTestingClick(Sender: TObject);
+  private
+    procedure ClearMemos;
+    procedure FillMemos;
+    procedure MakeMemos(aName: string; aList: TStrings; aTag, left, top, width, height: integer);
+  public
+    procedure ClearGtsl;
+    procedure ClearPtData;
+    procedure FreeGtsl;
+    procedure MakeGtsl;
+    procedure MakeUserSettings;
+    procedure MakeGraphActivity;
+
+    function AllowContextChange(var WhyNot: string): Boolean;
+  end;
+
+var
+  frmGraphData: TfrmGraphData;
+  GtslData: TStringList;
+  GtslItems: TStringList;
+  GtslTypes: TStringList;
+  GtslAllTypes: TStringList;
+  GtslAllViews: TStringList;
+  GtslTestSpec: TStringList;
+  GtslDrugClass: TStringList;
+  GtslViews: TStringList;
+  GtslCheck: TStringList;
+  GtslNonNum: TStringList;
+  GtslNonNumDates: TStringList;
+  GtslScratchSwap: TStringList;
+  GtslScratchTemp: TStringList;
+  GtslScratchLab: TStringList;
+  GtslSpec1: TStringList;
+  GtslSpec2: TStringList;
+  GtslSpec3: TStringList;
+  GtslSpec4: TStringList;
+  GtslMultiSpec: TStringList;
+  GtslTempCheck: TStringList;
+  GtslTemp: TStringList;
+  GtslSelCopyTop: TStringList;
+  GtslSelCopyBottom: TStringList;
+  GtslZoomHistoryFloat: TStringList;
+  GtslZoomHistoryReport: TStringList;
+  GtslSelPrevTopFloat: TStringList;
+  GtslSelPrevTopReport: TStringList;
+  GtslSelPrevBottomFloat: TStringList;
+  GtslSelPrevBottomReport: TStringList;
+  GtslViewPersonal: TStringList;
+  GtslViewPublic: TStringList;
+  GtslLabGroup: TStringList;
+
+  //procedure GraphDataForm;      // perhaps use this to create only when displayed??
+
+  procedure GraphDataOnUser;
+  procedure GraphDataOnPatient(var allitems, alldata: boolean);
+
+  function GetATestGroup(testgroup: Integer; userx: int64): TStrings;
+  function GetCurrentSetting: string;
+  function GetDefaultInpatientDate: string;
+  function GetDefaultOutpatientDate: string;
+  function GetGraphProfiles(profiles, permission: string; ext: integer; userx: int64): TStrings;
+  function GetGraphStatus: string;
+  function GetOldDFN: string;
+  function GetPersonalSetting: string;
+  function GetPublicSetting: string;
+  function GraphPublicEditor: boolean;
+  function GraphTurboOn: boolean;
+  procedure SetCurrentSetting(aString: string);
+  procedure SetDefaultInpatientDate(aString: string);
+  procedure SetDefaultOutpatientDate(aString: string);
+  procedure SetGraphStatus(aString: string);
+  procedure SetOldDFN(aString: string);
+  procedure SetPersonalSetting(aString: string);
+  procedure SetPublicSetting(aString: string);
+
+implementation
+
+{$R *.dfm}
+
+uses
+  uCore, rGraphs, uGraphs;
+
+var
+  FGraphActivity: TGraphActivity;
+
+{procedure GraphDataForm;            // not used - perhaps with separate object for data
+var
+  frmGraphData: TfrmGraphData;
+begin
+  frmGraphData := TfrmGraphData.Create(Application);
+  try
+    with frmGraphData do
+    begin
+      ResizeAnchoredFormToFont(frmGraphData);
+      ShowModal;
+    end;
+  finally
+    frmGraphData.Release;
+  end;
+end;}
+
+procedure TfrmGraphData.FormCreate(Sender: TObject);
+begin                                      // called from fFrame after user signon
+  if GtslData <> nil then
+    exit;                                  // only create one time
+  MakeGraphActivity;
+  MakeUserSettings;
+  MakeGtsl;
+end;
+
+procedure TfrmGraphData.MakeGraphActivity;
+begin
+  FGraphActivity := TGraphActivity.Create;
+  with FGraphActivity do
+  begin
+    CurrentSetting := '';
+    DefaultInpatientDate := '';
+    DefaultOutpatientDate := '';
+    OldDFN := '';
+    PublicSetting := '';
+    PersonalSetting := '';
+    PublicEditor := false;
+    Status := '';
+    TurboOn := true;
+    Cache := true;
+  end;
+end;
+
+procedure TfrmGraphData.MakeUserSettings;
+var
+  setting, turbo: string;
+  aList: TStrings;
+begin
+  aList := TStringList.Create;
+  FastAssign(rpcGetGraphSettings, aList);
+  if aList.Count > 0 then
+  begin
+    setting := aList[0];
+    FGraphActivity.PublicSetting := aList[1];
+    FGraphActivity.Cache := not (Piece(aList[2], '^', 1) = '-1');
+    if length(setting) > 0 then
+    begin                                  // maxselectmax - system max selection limit
+      SetPiece(setting, '|', 8, Piece(FGraphActivity.PublicSetting, '|', 8));
+      turbo := Piece(FGraphActivity.PublicSetting, '|', 6);
+      if (turbo = '0') or (not FGraphActivity.Cache) then // deactivate users if public turbo (6th piece) is off
+      begin
+        SetPiece(setting, '|', 6, '0');
+        FGraphActivity.TurboOn := false;
+      end
+      else
+        FGraphActivity.TurboOn := true;
+      FGraphActivity.PersonalSetting := setting;
+    end
+    else
+      FGraphActivity.PersonalSetting := FGraphActivity.PublicSetting;
+    FGraphActivity.CurrentSetting := FGraphActivity.PersonalSetting;
+    FGraphActivity.DefaultInpatientDate := Piece(FGraphActivity.PersonalSetting, '|', 10);
+    FGraphActivity.DefaultOutpatientDate := Piece(FGraphActivity.PersonalSetting, '|', 9);
+    FGraphActivity.PublicEditor := rpcPublicEdit;    // use this as PublicEdit permission for user
+  end;
+  FreeAndNil(aList);
+end;
+
+procedure GraphDataOnUser;
+var                                        // called from fFrame after this form is created
+  i: integer;                              // gets static info
+  dfntype, listline: string;
+begin
+  if GtslData = nil then
+    exit;                                  // do not setup if graphing is off
+  FastAssign(rpcGetTypes('0', false), GtslAllTypes);
+  for i := 0 to GtslAllTypes.Count - 1 do  // uppercase all filetypes
+  begin
+    listline := GtslAllTypes[i];
+    dfntype := UpperCase(Piece(listline, '^', 1));
+    SetPiece(listline, '^', 1, dfntype);
+    GtslAllTypes[i] := listline;
+  end;
+  FastAssign(rpcGetTestSpec, GtslTestSpec);
+  FastAssign(rpcGetViews(VIEW_PUBLIC, 0), GtslAllViews);
+  FastAddStrings(rpcGetViews(VIEW_PERSONAL, User.DUZ), GtslAllViews);
+  FastAddStrings(rpcGetViews(VIEW_LABS, User.DUZ), GtslAllViews);
+end;
+
+procedure TfrmGraphData.ClearPtData;
+var                                        // called when patient is selected
+  oldDFN, faststatus: string;
+begin
+  inherited;
+  if FGraphActivity.CurrentSetting = '' then
+    exit;                                  // if graphing is turned off, don't process
+  ClearMemos;
+  ClearGtsl;
+  oldDFN := FGraphActivity.OldDFN;         // cleanup any previous patient cache
+  FastAssign(rpcGetTypes(Patient.DFN, false), GtslTypes);
+  faststatus := rpcFastTask(Patient.DFN, oldDFN);
+  FGraphActivity.Cache := (faststatus = '1');
+  FGraphActivity.OldDFN := Patient.DFN;
+end;
+
+procedure GraphDataOnPatient(var allitems, alldata: boolean);
+begin
+                                           // need to call this when patient is selected
+end;
+
+function TfrmGraphData.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  Result := true;                          // perhaps add logic in the future
+end;
+
+//----------------------------- Gtsl* are tstringlists used to hold data - global in scope
+
+procedure TfrmGraphData.MakeGtsl;
+begin
+  GtslData := TStringList.Create;
+  GtslItems := TStringList.Create;
+  GtslTypes := TStringList.Create;
+  GtslAllTypes := TStringList.Create;
+  GtslAllViews := TStringList.Create;
+  GtslTestSpec := TStringList.Create;
+  GtslDrugClass := TStringList.Create;
+  GtslViews := TStringList.Create;
+  GtslCheck := TStringList.Create;
+  GtslNonNum := TStringList.Create;
+  GtslNonNumDates := TStringList.Create;
+  GtslScratchSwap := TStringList.Create;
+  GtslScratchTemp := TStringList.Create;
+  GtslScratchLab := TStringList.Create;
+  GtslSpec1 := TStringList.Create;
+  GtslSpec2 := TStringList.Create;
+  GtslSpec3 := TStringList.Create;
+  GtslSpec4 := TStringList.Create;
+  GtslMultiSpec := TStringList.Create;
+  GtslTempCheck := TStringList.Create;
+  GtslTemp := TStringList.Create;
+  GtslSelCopyTop := TStringList.Create;
+  GtslSelCopyBottom := TStringList.Create;
+  GtslZoomHistoryFloat := TStringList.Create;
+  GtslZoomHistoryReport := TStringList.Create;
+  GtslSelPrevTopFloat := TStringList.Create;
+  GtslSelPrevTopReport := TStringList.Create;
+  GtslSelPrevBottomFloat := TStringList.Create;
+  GtslSelPrevBottomReport := TStringList.Create;
+  GtslViewPersonal := TStringList.Create;
+  GtslViewPublic := TStringList.Create;
+  GtslLabGroup := TStringList.Create;
+end;
+
+procedure TfrmGraphData.ClearGtsl;
+begin
+  if GtslData = nil then exit;
+  //GtslAllTypes.Clear;            // these types are not patient specific
+  //GtslTestSpec.Clear;
+  //GtslAllViews.Clear;
+  GtslData.Clear;
+  GtslItems.Clear;
+  GtslTypes.Clear;
+  GtslDrugClass.Clear;
+  GtslViews.Clear;
+  GtslCheck.Clear;
+  GtslNonNum.Clear;
+  GtslNonNumDates.Clear;
+  GtslScratchSwap.Clear;
+  GtslScratchTemp.Clear;
+  GtslScratchLab.Clear;
+  GtslSpec1.Clear;
+  GtslSpec2.Clear;
+  GtslSpec3.Clear;
+  GtslSpec4.Clear;
+  GtslMultiSpec.Clear;
+  GtslTempCheck.Clear;
+  GtslTemp.Clear;
+  GtslSelCopyTop.Clear;
+  GtslSelCopyBottom.Clear;
+  GtslZoomHistoryFloat.Clear;
+  GtslZoomHistoryReport.Clear;
+  GtslSelPrevTopFloat.Clear;
+  GtslSelPrevTopReport.Clear;
+  GtslSelPrevBottomFloat.Clear;
+  GtslSelPrevBottomReport.Clear;
+  GtslViewPersonal.Clear;
+  GtslViewPublic.Clear;
+  GtslLabGroup.Clear;
+end;
+
+procedure TfrmGraphData.FreeGtsl;
+begin
+  FreeAndNil(GtslData);
+  FreeAndNil(GtslItems);
+  FreeAndNil(GtslTypes);
+  FreeAndNil(GtslAllTypes);
+  FreeAndNil(GtslAllViews);
+  FreeAndNil(GtslTestSpec);
+  FreeAndNil(GtslDrugClass);
+  FreeAndNil(GtslNonNum);
+  FreeAndNil(GtslNonNumDates);
+  FreeAndNil(GtslScratchSwap);
+  FreeAndNil(GtslScratchTemp);
+  FreeAndNil(GtslScratchLab);
+  FreeAndNil(GtslSpec1);
+  FreeAndNil(GtslSpec2);
+  FreeAndNil(GtslSpec3);
+  FreeAndNil(GtslSpec4);
+  FreeAndNil(GtslMultiSpec);
+  FreeAndNil(GtslTempCheck);
+  FreeAndNil(GtslSelCopyTop);
+  FreeAndNil(GtslSelCopyBottom);
+  FreeAndNil(GtslZoomHistoryFloat);
+  FreeAndNil(GtslZoomHistoryReport);
+  FreeAndNil(GtslSelPrevTopFloat);
+  FreeAndNil(GtslSelPrevTopReport);
+  FreeAndNil(GtslSelPrevBottomFloat);
+  FreeAndNil(GtslSelPrevBottomReport);
+  FreeAndNil(GtslViewPersonal);
+  FreeAndNil(GtslViewPublic);
+  FreeAndNil(GtslLabGroup);
+end;
+
+//----------------------------- displays when testing
+
+procedure TfrmGraphData.btnDataClick(Sender: TObject);
+var
+  left, top, width, height: integer;
+begin
+  height := pnlData.Height div 8;
+  height := height - lblInfo.Height;
+  top := lblInfo.Height;
+  left := 1;
+  width := pnlData.Width - 2;
+  MakeMemos('GtslData', GtslData, 1, left, top, width, height);
+  top := top + height + lblInfo.Height;
+  MakeMemos('GtslItems', GtslItems, 2, left, top, width, height);
+  top := top + height + lblInfo.Height;
+  MakeMemos('GtslTypes', GtslTypes, 3, left, top, width, height);
+  width := width div 6;
+  top := top + height + lblInfo.Height;
+  left := 1;
+  MakeMemos('GtslAllTypes', GtslAllTypes, 4, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslTestSpec', GtslTestSpec, 5, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslDrugClass', GtslDrugClass, 6, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslViews', GtslViews, 7, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslCheck', GtslCheck, 8, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslNonNum', GtslNonNum, 9, left, top, width, height);
+  top := top + height + lblInfo.Height;
+  left := 1;
+  MakeMemos('GtslNonNumDates', GtslNonNumDates, 10, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslScratchSwap', GtslScratchSwap, 11, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslScratchTemp', GtslScratchTemp, 12, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslScratchLab', GtslScratchLab, 13, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSpec1', GtslSpec1, 14, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSpec2', GtslSpec2, 15, left, top, width, height);
+  top := top + height + lblInfo.Height;
+  left := 1;
+  MakeMemos('GtslSpec3', GtslSpec3, 16, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSpec4', GtslSpec4, 17, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslMultiSpec', GtslMultiSpec, 18, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslTempCheck', GtslTempCheck, 19, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslTemp', GtslTemp, 20, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSelCopyTop', GtslSelCopyTop, 21, left, top, width, height);
+  top := top + height + lblInfo.Height;
+  left := 1;
+  MakeMemos('GtslSelCopyBottom', GtslSelCopyBottom, 22, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslZoomHistoryFloat', GtslZoomHistoryFloat, 23, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslZoomHistoryReport', GtslZoomHistoryReport, 24, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSelPrevTopFloat', GtslSelPrevTopFloat, 25, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSelPrevTopReport', GtslSelPrevTopReport, 26, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslSelPrevBottomFloat', GtslSelPrevBottomFloat, 27, left, top, width, height);
+  top := top + height + lblInfo.Height;
+  left := 1;
+  MakeMemos('GtslSelPrevBottomReport', GtslSelPrevBottomReport, 28, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslViewPersonal', GtslViewPersonal, 29, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslViewPublic', GtslViewPublic, 30, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslLabGroup', GtslLabGroup, 31, left, top, width, height);
+  left := left + width;
+  MakeMemos('GtslAllViews', GtslAllViews, 32, left, top, width, height);
+  btnData.Enabled := false;
+  btnRefresh.Enabled := true;
+  lblCurrent.Caption := FGraphActivity.CurrentSetting;
+  lblPersonal.Caption := FGraphActivity.PersonalSetting;
+  lblPublic.Caption := FGraphActivity.PublicSetting;
+end;
+
+procedure TfrmGraphData.btnRefreshClick(Sender: TObject);
+begin
+  ClearMemos;
+  FillMemos;
+end;
+
+procedure TfrmGraphData.btnTestingClick(Sender: TObject);
+begin
+  FastAssign(rpcTesting, memTesting.Lines);
+end;
+
+procedure TfrmGraphData.MakeMemos(aName: string; aList: TStrings; aTag, left, top, width, height: integer);
+var
+  aMemo: TMemo;
+  aLabel: TLabel;
+begin
+  aMemo := TMemo.Create(self);
+  aMemo.Parent := pnlData;
+  aMemo.Name := 'mem' + aName;
+  aMemo.Tag := aTag;
+  aMemo.Left := left; aMemo.Top := top; aMemo.Width := width; aMemo.Height := height;
+  aMemo.ScrollBars := ssVertical;
+  aMemo.WordWrap := false;
+  FastAssign(aList, aMemo.Lines);
+  aLabel := TLabel.Create(self);
+  aLabel.Parent := pnlData;
+  aLabel.Caption := aName + ' (' + inttostr(aList.Count) + ')';
+  aLabel.Left := left; aLabel.Top := top - lblInfo.Height; aLabel.Width := width; aLabel.Height := lblInfo.height;
+end;
+
+procedure TfrmGraphData.ClearMemos;
+var
+  i: integer;
+  ChildControl: TControl;
+begin
+  for i := 0 to pnlData.ControlCount - 1 do
+  begin
+    ChildControl := pnlData.Controls[i];
+    if ChildControl is TMemo then
+      (ChildControl as TMemo).Clear;
+  end;
+end;
+
+procedure TfrmGraphData.FillMemos;
+var
+  i: integer;
+  aMemo: TMemo;
+  ChildControl: TControl;
+begin
+  for i := 0 to pnlData.ControlCount - 1 do
+  begin
+    ChildControl := pnlData.Controls[i];
+    if ChildControl is TMemo then
+    begin
+      aMemo := (ChildControl as TMemo);
+      case aMemo.Tag of
+       1: FastAssign(GtslData, aMemo.Lines);
+       2: FastAssign(GtslItems, aMemo.Lines);
+       3: FastAssign(GtslTypes, aMemo.Lines);
+       4: FastAssign(GtslAllTypes, aMemo.Lines);
+       5: FastAssign(GtslTestSpec, aMemo.Lines);
+       6: FastAssign(GtslDrugClass, aMemo.Lines);
+       7: FastAssign(GtslViews, aMemo.Lines);
+       8: FastAssign(GtslCheck, aMemo.Lines);
+       9: FastAssign(GtslNonNum, aMemo.Lines);
+      10: FastAssign(GtslNonNumDates, aMemo.Lines);
+      11: FastAssign(GtslScratchSwap, aMemo.Lines);
+      12: FastAssign(GtslScratchTemp, aMemo.Lines);
+      13: FastAssign(GtslScratchLab, aMemo.Lines);
+      14: FastAssign(GtslSpec1, aMemo.Lines);
+      15: FastAssign(GtslSpec2, aMemo.Lines);
+      16: FastAssign(GtslSpec3, aMemo.Lines);
+      17: FastAssign(GtslSpec4, aMemo.Lines);
+      18: FastAssign(GtslMultiSpec, aMemo.Lines);
+      19: FastAssign(GtslTempCheck, aMemo.Lines);
+      20: FastAssign(GtslTemp, aMemo.Lines);
+      21: FastAssign(GtslSelCopyTop, aMemo.Lines);
+      22: FastAssign(GtslSelCopyBottom, aMemo.Lines);
+      23: FastAssign(GtslZoomHistoryFloat, aMemo.Lines);
+      24: FastAssign(GtslZoomHistoryReport, aMemo.Lines);
+      25: FastAssign(GtslSelPrevTopFloat, aMemo.Lines);
+      26: FastAssign(GtslSelPrevTopReport, aMemo.Lines);
+      27: FastAssign(GtslSelPrevBottomFloat, aMemo.Lines);
+      28: FastAssign(GtslSelPrevBottomReport, aMemo.Lines);
+      29: FastAssign(GtslViewPersonal, aMemo.Lines);
+      30: FastAssign(GtslViewPublic, aMemo.Lines);
+      31: FastAssign(GtslLabGroup, aMemo.Lines);
+      32: FastAssign(GtslAllViews, aMemo.Lines);
+      end;
+    end;
+  end;
+end;
+
+//---------------------------------------------------
+
+function GetCurrentSetting: string;
+begin
+  Result := FGraphActivity.CurrentSetting;
+end;
+
+function GetDefaultInpatientDate: string;
+begin
+  Result := FGraphActivity.DefaultInpatientDate;
+end;
+
+function GetDefaultOutpatientDate: string;
+begin
+  Result := FGraphActivity.DefaultOutpatientDate;
+end;
+
+function GetGraphProfiles(profiles, permission: string; ext: integer; userx: int64): TStrings;
+var      // temporary fix - converting definitions in GtslAllViews to rpc format
+  allviews, fulltext: boolean;
+  i: integer;
+  vtype, aline, avtype, avc, avnum, aname, atype, aitem, partsnum, bigline: string;
+  //auser: string;
+begin
+  if (userx > 0) and (userx <> User.DUZ) then
+    Result := rpcGetGraphProfiles(profiles, permission, ext, userx)
+  else
+  begin
+    profiles := UpperCase(profiles);
+    if permission = '1' then vtype := '-2'
+    else vtype := '-1';
+    allviews := (profiles = '1');
+    fulltext := (ext = 1);
+    partsnum := '0';
+    bigline := '';
+    GtslScratchTemp.Clear;
+    for i := 0 to GtslAllViews.Count - 1 do
+    begin
+      aline  := GtslAllViews[i];
+      avtype := Piece(aline, '^', 1);
+      avc    := Piece(aline, '^', 2);
+      avnum  := Piece(aline, '^', 3);
+      aname  := UpperCase(Piece(aline, '^', 4));
+      atype  := UpperCase(Piece(aline, '^', 5));
+      aitem  := Piece(aline, '^', 6);
+      //auser  := Piece(aline, '^', 7);
+      if partsnum <> '0' then
+      begin                                                 //AddLine(ext, aname, atype, aitem);
+        if (avc = 'C') and (partsnum = avnum) then
+        begin
+          if ext <> 1 then
+          begin
+             if aitem = '0' then bigline := bigline + '0~' + atype + '~|'
+             else bigline := bigline + atype + '~' + aitem  + '~|'
+          end
+          else
+          begin
+             if aitem = '0' then
+               GtslScratchTemp.Add('0^' + atype + '^' + aname)
+             else
+               GtslScratchTemp.Add(atype + '^' + aitem  + '^' + aname)
+          end;
+        end
+        else
+        begin
+          break;
+        end;
+      end
+      else
+      if avtype = vtype then
+      begin
+        if allviews and (avc = 'V') then
+        begin
+          GtslScratchTemp.Add(aname);
+        end
+        else if (avc = 'V') and (aname = profiles) then
+          partsnum := avnum;
+      end;
+    end;
+    if length(bigline) > 0 then
+      GtslScratchTemp.Add(bigline);      
+    if allviews or fulltext then
+      MixedCaseList(GtslScratchTemp);
+    Result := GtslScratchTemp;
+  end;
+end;
+
+function GetATestGroup(testgroup: Integer; userx: int64): TStrings;
+var      // temporary fix - converting definitions in GtslAllViews to rpc format
+  i: integer;
+  aline, avtype, avc, avnum, aname, aitem, partsnum: string;
+  //atype, auser: string;
+begin
+  if (userx > 0) and (userx <> User.DUZ) then
+    Result := rpcATestGroup(testgroup, userx)
+  else
+  begin
+    partsnum := '0';
+    GtslScratchTemp.Clear;
+    for i := 0 to GtslAllViews.Count - 1 do
+    begin
+      aline  := GtslAllViews[i];
+      avtype := Piece(aline, '^', 1);
+      avc    := Piece(aline, '^', 2);
+      avnum  := Piece(aline, '^', 3);
+      aname  := Piece(aline, '^', 4);
+      //atype  := UpperCase(Piece(aline, '^', 5));
+      aitem  := Piece(aline, '^', 6);
+      //auser  := Piece(aline, '^', 7);
+      if avtype = VIEW_LABS then
+      begin
+        if (avc = 'V') and (partsnum <> '0') then
+          break;
+        if (avc = 'C') and (partsnum = avnum) then
+          GtslScratchTemp.Add(aitem  + '^' + aname)
+        else if (avc = 'V')
+            and (testgroup = strtointdef(Piece(aname, ')', 1), BIG_NUMBER)) then
+              partsnum := avnum;
+      end;
+    end;
+    //MixedCaseList(GtslScratchTemp);
+    Result := GtslScratchTemp;
+  end;
+end;
+
+function GetGraphStatus: string;
+begin
+  Result := FGraphActivity.Status;
+end;
+
+function GetOldDFN: string;
+begin
+  Result := FGraphActivity.OldDFN;
+end;
+
+function GetPersonalSetting: string;
+begin
+  Result := FGraphActivity.PersonalSetting;
+end;
+
+function GetPublicSetting: string;
+begin
+  Result := FGraphActivity.PublicSetting;
+end;
+
+function GraphPublicEditor: boolean;
+begin
+  Result := FGraphActivity.PublicEditor;
+end;
+
+function GraphTurboOn: boolean;
+begin
+  Result := (FGraphActivity.TurboOn and FGraphActivity.Cache);
+end;
+
+procedure SetCurrentSetting(aString: string);
+begin
+  FGraphActivity.CurrentSetting := aString;
+end;
+
+procedure SetDefaultInpatientDate(aString: string);
+begin
+  FGraphActivity.DefaultInpatientDate := aString;
+end;
+
+procedure SetDefaultOutpatientDate(aString: string);
+begin
+  FGraphActivity.DefaultOutpatientDate := aString;
+end;
+
+procedure SetGraphStatus(aString: string);
+begin
+  FGraphActivity.Status := aString;
+end;
+
+procedure SetOldDFN(aString: string);
+begin
+  FGraphActivity.OldDFN := aString;
+end;
+
+procedure SetPersonalSetting(aString: string);
+begin
+  FGraphActivity.PersonalSetting := aString;
+end;
+
+procedure SetPublicSetting(aString: string);
+begin
+  FGraphActivity.PublicSetting := aString;
+end;
+//---------------------------------------------------
+
+procedure TfrmGraphData.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  faststatus: string;
+begin
+  if FGraphActivity.Cache then
+  begin
+    faststatus := rpcFastTask('0', Patient.DFN);           // cleanup patient cache
+    if faststatus = '-1' then
+      FGraphActivity.Cache := false;
+  end;
+end;
+
+procedure TfrmGraphData.FormDestroy(Sender: TObject);
+begin
+  FreeGtsl;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphOthers.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphOthers.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphOthers.dfm	(revision 1676)
@@ -0,0 +1,245 @@
+inherited frmGraphOthers: TfrmGraphOthers
+  Left = 0
+  Top = 0
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Select Other Views and Lab Groups'
+  ClientHeight = 384
+  ClientWidth = 335
+  Position = poScreenCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlMain: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 335
+    Height = 241
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      335
+      241)
+    object lblOthers: TLabel
+      Left = 12
+      Top = 29
+      Width = 101
+      Height = 13
+      Caption = 'Select or enter name:'
+    end
+    object lblViews: TLabel
+      Left = 179
+      Top = 29
+      Width = 110
+      Height = 13
+      Caption = 'Views and Lab Groups:'
+    end
+    object lblInfo: TLabel
+      Left = 12
+      Top = 10
+      Width = 313
+      Height = 13
+      Caption = 
+        'You can copy other user'#39's views and lab groups for your own use.' +
+        ' '
+    end
+    object lblDefinitions: TLabel
+      Left = 12
+      Top = 224
+      Width = 52
+      Height = 13
+      Caption = 'Definitions:'
+    end
+    object cboOthers: TORComboBox
+      Left = 12
+      Top = 48
+      Width = 144
+      Height = 170
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Select or enter name'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      Pieces = '2,3'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnClick = cboOthersClick
+      OnNeedData = cboOthersNeedData
+      CharsNeedMatch = 1
+    end
+    object lstViews: TORListBox
+      Left = 179
+      Top = 48
+      Width = 144
+      Height = 137
+      Anchors = [akLeft, akTop, akRight]
+      ItemHeight = 13
+      MultiSelect = True
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = lstViewsClick
+      Caption = 'Currently selected recipients'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object btnCopy: TButton
+      Left = 179
+      Top = 193
+      Width = 144
+      Height = 25
+      Anchors = [akLeft, akTop, akRight]
+      Caption = 'Copy'
+      TabOrder = 3
+    end
+    object pnlTempData: TPanel
+      Left = -90
+      Top = 96
+      Width = 425
+      Height = 49
+      TabOrder = 4
+      Visible = False
+      object lblSave: TLabel
+        Left = 184
+        Top = 16
+        Width = 3
+        Height = 13
+        Visible = False
+      end
+      object lblClose: TLabel
+        Left = 192
+        Top = 0
+        Width = 3
+        Height = 13
+        Visible = False
+      end
+      object lstActualItems: TORListBox
+        Left = 8
+        Top = 5
+        Width = 97
+        Height = 41
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        ItemTipColor = clWindow
+        LongList = False
+      end
+      object lstDrugClass: TListBox
+        Left = 112
+        Top = 5
+        Width = 97
+        Height = 41
+        ItemHeight = 13
+        TabOrder = 1
+      end
+      object lstScratch: TListBox
+        Left = 216
+        Top = 5
+        Width = 97
+        Height = 41
+        ItemHeight = 13
+        TabOrder = 2
+      end
+      object lstTests: TListBox
+        Left = 320
+        Top = 5
+        Width = 97
+        Height = 41
+        ItemHeight = 13
+        TabOrder = 3
+      end
+    end
+  end
+  object memReport: TRichEdit [1]
+    Left = 0
+    Top = 241
+    Width = 335
+    Height = 102
+    Align = alClient
+    BevelInner = bvNone
+    Color = clCream
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      '')
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 1
+    WantReturns = False
+    WordWrap = False
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 343
+    Width = 335
+    Height = 41
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    object btnClose: TButton
+      Left = 250
+      Top = 6
+      Width = 75
+      Height = 25
+      Caption = 'Close'
+      TabOrder = 0
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = cboOthers'
+        'Status = stsDefault')
+      (
+        'Component = lstViews'
+        'Status = stsDefault')
+      (
+        'Component = btnCopy'
+        'Status = stsDefault')
+      (
+        'Component = pnlTempData'
+        'Status = stsDefault')
+      (
+        'Component = lstActualItems'
+        'Status = stsDefault')
+      (
+        'Component = lstDrugClass'
+        'Status = stsDefault')
+      (
+        'Component = lstScratch'
+        'Status = stsDefault')
+      (
+        'Component = lstTests'
+        'Status = stsDefault')
+      (
+        'Component = memReport'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = frmGraphOthers'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphOthers.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphOthers.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphOthers.pas	(revision 1676)
@@ -0,0 +1,116 @@
+unit fGraphOthers;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ComCtrls, ORCtrls, ExtCtrls, ORFn, uGraphs, rCore, uCore,
+  fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmGraphOthers = class(TfrmBase508Form)
+    pnlMain: TORAutoPanel;
+    lblOthers: TLabel;
+    cboOthers: TORComboBox;
+    lstViews: TORListBox;
+    memReport: TRichEdit;
+    pnlBottom: TPanel;
+    lblViews: TLabel;
+    lblInfo: TLabel;
+    lblDefinitions: TLabel;
+    btnClose: TButton;
+    btnCopy: TButton;
+    pnlTempData: TPanel;
+    lblSave: TLabel;
+    lblClose: TLabel;
+    lstActualItems: TORListBox;
+    lstDrugClass: TListBox;
+    lstScratch: TListBox;
+    lstTests: TListBox;
+    procedure cboOthersNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure FormShow(Sender: TObject);
+    procedure cboOthersClick(Sender: TObject);
+    procedure lstViewsClick(Sender: TObject);
+  private
+    procedure AddTests(tests: TStrings);
+  public
+    { Public declarations }
+  end;
+
+var
+  frmGraphOthers: TfrmGraphOthers;
+
+  procedure DialogGraphOthers(size: integer);
+
+implementation
+
+{$R *.dfm}
+
+uses
+  rGraphs, fGraphData, rLabs;
+
+procedure DialogGraphOthers(size: integer);
+var
+  aList: TStrings;
+  frmGraphOthers: TfrmGraphOthers;
+begin
+  aList := TStringList.Create;
+  frmGraphOthers := TfrmGraphOthers.Create(Application);
+  try
+    with frmGraphOthers do
+    begin
+      ResizeAnchoredFormToFont(frmGraphOthers);
+      ShowModal;
+    end;
+  finally
+    frmGraphOthers.Release;
+    aList.Free;
+  end;
+end;
+
+procedure TfrmGraphOthers.cboOthersClick(Sender: TObject);
+begin
+  FastAssign(TestGroups(cboOthers.ItemIEN), lstViews.Items);
+end;
+
+procedure TfrmGraphOthers.cboOthersNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  //cboOthers.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+  cboOthers.ForDataUse(Users(StartFrom, Direction));
+end;
+
+procedure TfrmGraphOthers.FormShow(Sender: TObject);
+begin
+  cboOthers.InitLongList(User.Name);
+  cboOthers.SelectByIEN(User.DUZ);
+  cboOthersClick(self);
+end;
+
+procedure TfrmGraphOthers.lstViewsClick(Sender: TObject);
+begin
+  AddTests(ATestGroup(lstViews.ItemIEN, cboOthers.ItemIEN));
+end;
+
+procedure TfrmGraphOthers.AddTests(tests: TStrings);
+var
+  i, j: integer;
+  ok: boolean;
+begin
+  for i := 0 to tests.Count - 1 do
+  begin
+    ok := true;
+    for j := 0 to memReport.Lines.Count - 1 do
+      if memReport.Lines[j] = tests[i] then
+      begin
+        ok := false;
+      end;
+    if ok then
+    begin
+      memReport.Lines.Add(tests[i]);
+    end;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphProfiles.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphProfiles.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphProfiles.dfm	(revision 1676)
@@ -0,0 +1,725 @@
+inherited frmGraphProfiles: TfrmGraphProfiles
+  Left = 721
+  Top = 528
+  HorzScrollBar.Visible = False
+  VertScrollBar.Visible = False
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Select Items and Define Views'
+  ClientHeight = 379
+  ClientWidth = 477
+  Position = poMainFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitWidth = 483
+  ExplicitHeight = 404
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSelection: TLabel [0]
+    Left = 142
+    Top = 29
+    Width = 28
+    Height = 13
+    Hint = 'Make selections move them to the right.'
+    Caption = 'Items:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblDisplay: TLabel [1]
+    Left = 312
+    Top = 29
+    Width = 89
+    Height = 13
+    Hint = 
+      'These items can be saved as a View and/or displayed on the graph' +
+      '.'
+    Caption = 'Items for Graphing:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object bvlBase: TBevel [2]
+    Left = 8
+    Top = 339
+    Width = 457
+    Height = 2
+  end
+  object lblEditInfo: TLabel [3]
+    Left = 142
+    Top = 278
+    Width = 202
+    Height = 13
+    Caption = 'Items for Graphing can be saved as Views.'
+  end
+  object lblSelectionInfo: TLabel [4]
+    Left = 142
+    Top = 8
+    Width = 89
+    Height = 13
+    Caption = 'Select Items using:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblSelectandDefine: TLabel [5]
+    Left = 8
+    Top = 350
+    Width = 359
+    Height = 13
+    Caption = 
+      'Use Select/Define button or Right-click on graphs to select item' +
+      's for display.'
+    WordWrap = True
+  end
+  object lblEditInfo1: TLabel [6]
+    Left = 142
+    Top = 294
+    Width = 187
+    Height = 13
+    Caption = 'Edit Views by saving to the same name.'
+  end
+  object lblUser: TLabel [7]
+    Left = 8
+    Top = 236
+    Width = 36
+    Height = 13
+    Caption = 'Person:'
+    ParentShowHint = False
+    ShowHint = False
+    WordWrap = True
+  end
+  object btnClear: TButton [8]
+    Left = 8
+    Top = 312
+    Width = 85
+    Height = 21
+    Caption = 'Clear Selections'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 7
+    OnClick = btnClearClick
+  end
+  object btnSave: TButton [9]
+    Left = 286
+    Top = 312
+    Width = 85
+    Height = 21
+    Caption = 'Save Personal...'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 11
+    OnClick = btnSaveClick
+  end
+  object btnDelete: TButton [10]
+    Left = 100
+    Top = 313
+    Width = 85
+    Height = 20
+    Caption = 'Delete...'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 8
+    OnClick = btnDeleteClick
+  end
+  object btnRemoveOne: TButton [11]
+    Left = 280
+    Top = 173
+    Width = 21
+    Height = 21
+    Caption = '<'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 5
+    OnClick = btnRemoveOneClick
+  end
+  object btnRemoveAll: TButton [12]
+    Left = 280
+    Top = 205
+    Width = 21
+    Height = 21
+    Caption = '<<'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 6
+    OnClick = btnRemoveAllClick
+  end
+  object lstItemsDisplayed: TORListBox [13]
+    Left = 319
+    Top = 44
+    Width = 150
+    Height = 228
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = False
+    Sorted = True
+    TabOrder = 2
+    OnDblClick = lstItemsDisplayedDblClick
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '3'
+    OnChange = lstItemsDisplayedChange
+  end
+  object pnlSource: TPanel [14]
+    Left = 247
+    Top = -2
+    Width = 190
+    Height = 25
+    BevelOuter = bvNone
+    TabOrder = 10
+    object radSourcePat: TRadioButton
+      Left = 106
+      Top = 5
+      Width = 82
+      Height = 17
+      Hint = 
+        'Use this for selecting patient items. Note: this form is used pr' +
+        'imarily for defining views, #13 not selecting data.'
+      Caption = 'Patient Items'
+      TabOrder = 1
+      OnClick = radSourceAllClick
+    end
+    object radSourceAll: TRadioButton
+      Left = 0
+      Top = 5
+      Width = 60
+      Height = 17
+      Hint = 'Use this for defining views. It shows every possible item.'
+      Caption = 'All Items'
+      Checked = True
+      TabOrder = 0
+      TabStop = True
+      OnClick = radSourceAllClick
+    end
+  end
+  object lstItemsSelection: TORListBox [15]
+    Left = 142
+    Top = 44
+    Width = 124
+    Height = 225
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = False
+    Sorted = True
+    TabOrder = 1
+    Visible = False
+    OnDblClick = cboAllItemsClick
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '3'
+    OnChange = cboAllItemsChange
+  end
+  object pnlApply: TPanel [16]
+    Left = 0
+    Top = 344
+    Width = 377
+    Height = 36
+    BevelOuter = bvNone
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 14
+    object lblApply: TLabel
+      Left = 8
+      Top = 2
+      Width = 138
+      Height = 13
+      Caption = 'Display Items for Graphing to:'
+    end
+    object radTop: TRadioButton
+      Left = 8
+      Top = 17
+      Width = 57
+      Height = 17
+      Caption = 'Top'
+      Checked = True
+      TabOrder = 0
+      TabStop = True
+    end
+    object radBottom: TRadioButton
+      Left = 74
+      Top = 17
+      Width = 57
+      Height = 17
+      Caption = 'Bottom'
+      TabOrder = 1
+    end
+    object radBoth: TRadioButton
+      Left = 141
+      Top = 17
+      Width = 57
+      Height = 17
+      Caption = 'Both'
+      TabOrder = 2
+    end
+    object radNeither: TRadioButton
+      Left = 208
+      Top = 17
+      Width = 81
+      Height = 17
+      Caption = 'No Change'
+      TabOrder = 3
+    end
+  end
+  object btnAdd: TButton [17]
+    Left = 280
+    Top = 125
+    Width = 21
+    Height = 21
+    Caption = '>'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 4
+    OnClick = cboAllItemsClick
+  end
+  object btnAddAll: TButton [18]
+    Left = 280
+    Top = 93
+    Width = 21
+    Height = 21
+    Caption = '>>'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 3
+    OnClick = btnAddAllClick
+  end
+  object btnRename: TButton [19]
+    Left = 195
+    Top = 312
+    Width = 85
+    Height = 21
+    Caption = 'Rename...'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 9
+    OnClick = btnRenameClick
+  end
+  object btnSavePublic: TButton [20]
+    Left = 379
+    Top = 312
+    Width = 85
+    Height = 21
+    Caption = 'Save Public...'
+    Enabled = False
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 12
+    OnClick = btnSaveClick
+  end
+  object cboAllItems: TORComboBox [21]
+    Left = 142
+    Top = 44
+    Width = 124
+    Height = 228
+    Style = orcsSimple
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '3'
+    ShowHint = False
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnChange = cboAllItemsChange
+    OnDblClick = cboAllItemsClick
+    OnNeedData = cboAllItemsNeedData
+    CharsNeedMatch = 1
+  end
+  object btnClose: TButton [22]
+    Left = 371
+    Top = 353
+    Width = 97
+    Height = 21
+    Cancel = True
+    Caption = 'Close'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 15
+    OnClick = btnCloseClick
+  end
+  object pnlAllSources: TPanel [23]
+    Left = 8
+    Top = 30
+    Width = 128
+    Height = 245
+    BevelOuter = bvNone
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 16
+    object splViews: TSplitter
+      Left = 0
+      Top = 122
+      Width = 128
+      Height = 3
+      Cursor = crVSplit
+      Align = alBottom
+      ExplicitTop = 0
+      ExplicitWidth = 125
+    end
+    object pnlSources: TPanel
+      Left = 0
+      Top = 0
+      Width = 128
+      Height = 122
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblSource: TLabel
+        Left = 0
+        Top = 0
+        Width = 128
+        Height = 13
+        Hint = 'These are the different types of data for graphing.'
+        Align = alTop
+        Caption = 'Sources:'
+        ParentShowHint = False
+        ShowHint = False
+        ExplicitWidth = 42
+      end
+      object lstSources: TORListBox
+        Left = 0
+        Top = 13
+        Width = 128
+        Height = 109
+        Align = alClient
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 0
+        OnDblClick = lstSourcesDblClick
+        OnEnter = lstSourcesEnter
+        OnExit = lstSourcesExit
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+        OnChange = lstSourcesChange
+      end
+    end
+    object pnlOtherSources: TPanel
+      Left = 0
+      Top = 125
+      Width = 128
+      Height = 120
+      Align = alBottom
+      BevelInner = bvRaised
+      BevelOuter = bvLowered
+      BorderWidth = 1
+      TabOrder = 1
+      object pnlOtherSourcesUser: TPanel
+        Left = 3
+        Top = 76
+        Width = 122
+        Height = 41
+        Align = alBottom
+        BevelOuter = bvNone
+        TabOrder = 0
+        object lblOtherPersons: TLabel
+          Left = 0
+          Top = 7
+          Width = 122
+          Height = 13
+          Align = alBottom
+          Caption = 'Select Person:'
+          ExplicitWidth = 69
+        end
+        object cboUser: TORComboBox
+          Left = 0
+          Top = 20
+          Width = 122
+          Height = 21
+          Style = orcsDropDown
+          Align = alBottom
+          AutoSelect = True
+          Color = clWindow
+          DropDownCount = 6
+          Items.Strings = (
+            '')
+          ItemHeight = 13
+          ItemTipColor = clWindow
+          ItemTipEnable = True
+          ListItemsOnly = False
+          LongList = True
+          LookupPiece = 0
+          MaxLength = 0
+          Pieces = '2'
+          Sorted = False
+          SynonymChars = '<>'
+          TabOrder = 0
+          TabStop = True
+          OnClick = cboUserClick
+          OnNeedData = cboUserNeedData
+          CharsNeedMatch = 1
+        end
+      end
+      object pnlOtherSourcesBottom: TPanel
+        Left = 3
+        Top = 3
+        Width = 122
+        Height = 73
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        object lstOtherSources: TORListBox
+          Left = 0
+          Top = 30
+          Width = 122
+          Height = 43
+          Align = alClient
+          BevelInner = bvNone
+          BevelOuter = bvNone
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = False
+          TabOrder = 0
+          OnDblClick = lstSourcesDblClick
+          OnEnter = lstSourcesEnter
+          OnExit = lstSourcesExit
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2'
+          OnChange = lstSourcesChange
+        end
+        object pnlOtherViews: TPanel
+          Left = 0
+          Top = 0
+          Width = 122
+          Height = 30
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 1
+          object lblOtherViews: TLabel
+            Left = 0
+            Top = 17
+            Width = 122
+            Height = 13
+            Align = alBottom
+            Caption = 'Other Views:'
+            ExplicitWidth = 60
+          end
+          object lblSelectOthers: TLabel
+            Left = 0
+            Top = 0
+            Width = 122
+            Height = 13
+            Align = alTop
+            Caption = 'Select Views from others'
+            ExplicitWidth = 116
+          end
+        end
+      end
+    end
+  end
+  object btnViews: TButton [24]
+    Left = 8
+    Top = 5
+    Width = 120
+    Height = 21
+    Caption = 'Show Other Views'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 17
+    Visible = False
+    OnClick = btnViewsClick
+  end
+  object pnlTempData: TPanel [25]
+    Left = 264
+    Top = 232
+    Width = 425
+    Height = 49
+    TabOrder = 13
+    Visible = False
+    object lblSave: TLabel
+      Left = 184
+      Top = 16
+      Width = 3
+      Height = 13
+      Visible = False
+    end
+    object lblClose: TLabel
+      Left = 192
+      Top = 0
+      Width = 3
+      Height = 13
+      Visible = False
+    end
+    object lstActualItems: TORListBox
+      Left = 8
+      Top = 5
+      Width = 97
+      Height = 41
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      ItemTipColor = clWindow
+      LongList = False
+    end
+    object lstDrugClass: TListBox
+      Left = 112
+      Top = 5
+      Width = 97
+      Height = 41
+      ItemHeight = 13
+      TabOrder = 1
+    end
+    object lstScratch: TListBox
+      Left = 216
+      Top = 5
+      Width = 97
+      Height = 41
+      ItemHeight = 13
+      TabOrder = 2
+    end
+    object lstTests: TListBox
+      Left = 320
+      Top = 5
+      Width = 97
+      Height = 41
+      ItemHeight = 13
+      TabOrder = 3
+    end
+  end
+  object btnDefinitions: TButton [26]
+    Left = 8
+    Top = 281
+    Width = 120
+    Height = 21
+    Caption = 'View Definitions...'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 18
+    OnClick = btnDefinitionsClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 448
+    Top = 280
+    Data = (
+      (
+        'Component = btnClear'
+        'Status = stsDefault')
+      (
+        'Component = btnSave'
+        'Status = stsDefault')
+      (
+        'Component = btnDelete'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveOne'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAll'
+        'Status = stsDefault')
+      (
+        'Component = lstItemsDisplayed'
+        'Status = stsDefault')
+      (
+        'Component = pnlSource'
+        'Status = stsDefault')
+      (
+        'Component = radSourcePat'
+        'Status = stsDefault')
+      (
+        'Component = radSourceAll'
+        'Status = stsDefault')
+      (
+        'Component = lstItemsSelection'
+        'Status = stsDefault')
+      (
+        'Component = pnlTempData'
+        'Status = stsDefault')
+      (
+        'Component = lstActualItems'
+        'Status = stsDefault')
+      (
+        'Component = lstDrugClass'
+        'Status = stsDefault')
+      (
+        'Component = lstScratch'
+        'Status = stsDefault')
+      (
+        'Component = lstTests'
+        'Status = stsDefault')
+      (
+        'Component = pnlApply'
+        'Status = stsDefault')
+      (
+        'Component = radTop'
+        'Status = stsDefault')
+      (
+        'Component = radBottom'
+        'Status = stsDefault')
+      (
+        'Component = radBoth'
+        'Status = stsDefault')
+      (
+        'Component = radNeither'
+        'Status = stsDefault')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnAddAll'
+        'Status = stsDefault')
+      (
+        'Component = btnRename'
+        'Status = stsDefault')
+      (
+        'Component = btnSavePublic'
+        'Status = stsDefault')
+      (
+        'Component = cboAllItems'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = frmGraphProfiles'
+        'Status = stsDefault')
+      (
+        'Component = pnlAllSources'
+        'Status = stsDefault')
+      (
+        'Component = pnlSources'
+        'Status = stsDefault')
+      (
+        'Component = lstSources'
+        'Status = stsDefault')
+      (
+        'Component = pnlOtherSources'
+        'Status = stsDefault')
+      (
+        'Component = pnlOtherSourcesUser'
+        'Status = stsDefault')
+      (
+        'Component = cboUser'
+        'Status = stsDefault')
+      (
+        'Component = pnlOtherSourcesBottom'
+        'Status = stsDefault')
+      (
+        'Component = lstOtherSources'
+        'Status = stsDefault')
+      (
+        'Component = btnViews'
+        'Status = stsDefault')
+      (
+        'Component = btnDefinitions'
+        'Status = stsDefault')
+      (
+        'Component = pnlOtherViews'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphProfiles.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphProfiles.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphProfiles.pas	(revision 1676)
@@ -0,0 +1,1674 @@
+unit fGraphProfiles;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ComCtrls, StdCtrls, ExtCtrls, CheckLst, ORCtrls, ORFn, uGraphs, rCore, uCore,
+  fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmGraphProfiles = class(TfrmBase508Form)
+    btnAdd: TButton;
+    btnAddAll: TButton;
+    btnClear: TButton;
+    btnClose: TButton;
+    btnDelete: TButton;
+    btnRemoveAll: TButton;
+    btnRemoveOne: TButton;
+    btnRename: TButton;
+    btnSave: TButton;
+    btnSavePublic: TButton;
+    bvlBase: TBevel;
+    cboAllItems: TORComboBox;
+    lblApply: TLabel;
+    lblDisplay: TLabel;
+    lblEditInfo: TLabel;
+    lblEditInfo1: TLabel;
+    lblSelectandDefine: TLabel;
+    lblSelection: TLabel;
+    lblSelectionInfo: TLabel;
+    lstActualItems: TORListBox;
+    lstDrugClass: TListBox;
+    lstItemsDisplayed: TORListBox;
+    lstItemsSelection: TORListBox;
+    lstScratch: TListBox;
+    lstTests: TListBox;
+    pnlApply: TPanel;
+    pnlSource: TPanel;
+    pnlTempData: TPanel;
+    radSourceAll: TRadioButton;
+    radSourcePat: TRadioButton;
+    radTop: TRadioButton;
+    radBottom: TRadioButton;
+    radBoth: TRadioButton;
+    radNeither: TRadioButton;
+    lblSave: TLabel;
+    lblClose: TLabel;
+    lblUser: TLabel;
+    pnlAllSources: TPanel;
+    pnlSources: TPanel;
+    lblSource: TLabel;
+    lstSources: TORListBox;
+    pnlOtherSources: TPanel;
+    pnlOtherSourcesUser: TPanel;
+    lblOtherPersons: TLabel;
+    cboUser: TORComboBox;
+    pnlOtherSourcesBottom: TPanel;
+    lstOtherSources: TORListBox;
+    btnViews: TButton;
+    btnDefinitions: TButton;
+    pnlOtherViews: TPanel;
+    lblOtherViews: TLabel;
+    lblSelectOthers: TLabel;
+    splViews: TSplitter;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+
+    procedure btnClearClick(Sender: TObject);
+    procedure btnCloseClick(Sender: TObject);
+    procedure btnDefinitionsClick(Sender: TObject);
+    procedure btnRemoveAllClick(Sender: TObject);
+    procedure btnRemoveOneClick(Sender: TObject);
+    procedure btnViewsClick(Sender: TObject);
+    procedure cboAllItemsClick(Sender: TObject);
+    procedure cboAllItemsChange(Sender: TObject);
+    procedure cboAllItemsNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboUserClick(Sender: TObject);
+    procedure cboUserNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure lstItemsDisplayedChange(Sender: TObject);
+    procedure lstItemsDisplayedDblClick(Sender: TObject);
+    procedure lstSourcesChange(Sender: TObject);
+    procedure lstSourcesDblClick(Sender: TObject);
+    procedure lstSourcesEnter(Sender: TObject);
+    procedure lstSourcesExit(Sender: TObject);
+    procedure radSourceAllClick(Sender: TObject);
+
+    procedure btnDeleteClick(Sender: TObject);
+    procedure btnRenameClick(Sender: TObject);
+    procedure btnSaveClick(Sender: TObject);
+
+    procedure AddToList(aItem: string; aListBox: TORListBox);
+    procedure ArrangeList(aCheckFile, aCheckItem, aItem: string;
+      aListBox: TORListBox; var addtolist: boolean);
+    procedure AssignHints;
+    procedure AssignProfile(aList: TStrings; aProfile: string; UserNum: integer; allitems: boolean);
+    procedure AssignProfilePre(aList: TStrings; var aProfile: string; UserNum: integer);
+    procedure AssignProfilePost(aList: TStrings; var aProfile, typedata: string);
+    procedure CheckPublic;
+    procedure FillSource(aList: TORListBox);
+    function ProfileExists(aName, aType: string): boolean;
+    procedure btnAddAllClick(Sender: TObject);
+  private
+    FHintPauseTime: integer;
+    FPublicEditor: boolean;
+    procedure CheckToClear;
+    procedure QualifierDelete(line: string);
+    procedure wmNCLButtonDown(var Msg: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
+  public
+    procedure AllItemsAfter(var filetype, typedata: string);
+    procedure AllItemsBefore(var typedata: string);
+    procedure IDProfile(var profilename, proftype: string);
+    procedure ListBoxSetup(Sender: TObject);
+    procedure ComboBoxSetup(Sender: TObject);
+    procedure Report(aListBox: TORListBox);
+    function GetProfileName(infotitle, info: string; var newprofilename: string): boolean;
+  end;
+
+var
+  frmGraphProfiles: TfrmGraphProfiles;
+
+procedure DialogOptionsGraphProfiles(var actiontype: boolean);
+procedure DialogGraphProfiles(var actionOK: boolean;
+  var checkaction: boolean; aGraphSetting: TGraphSetting;
+  var aProfname, aProfilestring, aSection: string;
+  const PatientDFN: string; var aCounter: integer;
+  aSelections: string);
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rGraphs, fGraphData, fGraphOthers, fRptBox, VAUtils;
+
+procedure DialogOptionsGraphProfiles(var actiontype: boolean);
+// create the form and make it modal, return an action
+var
+  FGraphSetting: TGraphSetting;
+  settings: string;
+  actionOK, checkaction: boolean;
+  counter: integer;
+  aSelections, profile, profilestring, section: string;
+begin
+  if (GtslData = nil) then
+  begin
+    ShowMsg(TXT_NOGRAPHING);
+    exit;
+  end;
+  settings := GetCurrentSetting;
+  FGraphSetting := GraphSettingsInit(settings);
+  checkaction := false;
+  actionOK := false;
+  profile := '*';
+  counter := BIG_NUMBER;
+  aSelections :='';
+  DialogGraphProfiles(actionOK, checkaction, FGraphSetting,
+    profile, profilestring, section, Patient.DFN, counter, aSelections);
+  FGraphSetting.Free;
+end;
+
+procedure DialogGraphProfiles(var actionOK: boolean;
+  var checkaction: boolean; aGraphSetting: TGraphSetting;
+  var aProfname, aProfilestring, aSection: string;
+  const PatientDFN: string; var aCounter: integer;
+  aSelections: string);
+var
+  i: integer;
+  astring, counter, profile, profileitem, profiletype, profiletext: string;
+  frmGraphProfiles: TfrmGraphProfiles;
+begin
+  frmGraphProfiles := TfrmGraphProfiles.Create(Application);
+  try
+    with frmGraphProfiles do
+    begin
+      lblSave.Hint := aProfname;
+      lblClose.Hint := PatientDFN;
+      if aCounter = BIG_NUMBER then
+      begin
+        pnlApply.Visible := false;
+        frmGraphProfiles.Caption := 'Define Views';
+      end
+      else
+      begin
+        pnlApply.Visible := true;
+        frmGraphProfiles.Caption := 'Select Items and Define Views';
+      end;
+      if length(aSelections) > 0 then
+      begin
+        if GtslViews.Count = 0 then
+          GtslViews.Insert(0, VIEW_CURRENT + '^<current selections>^' + aSelections)
+        else if Piece(GtslViews[0], '^', 1) <> VIEW_CURRENT then
+          GtslViews.Insert(0, VIEW_CURRENT + '^<current selections>^' + aSelections)
+        else if GtslViews.Count > 0 then
+          GtslViews[0] := VIEW_CURRENT + '^<current selections>^' + aSelections;
+      end;
+      ResizeAnchoredFormToFont(frmGraphProfiles);
+      ShowModal;
+      actionOK := (btnClose.Tag = 1);
+      profiletext := '';
+      aProfname := '';
+      if actionOK then
+      begin
+        aProfname := lblSave.Hint;
+        if radTop.Checked then aSection := 'top'
+        else if radBottom.Checked then aSection := 'bottom'
+        else if radBoth.Checked then aSection := 'both'
+        else aSection := 'neither';
+        profile := '';
+        with lstItemsDisplayed do
+        for i := 0 to Items.Count - 1 do
+        begin
+          astring := Items[i];
+          profiletext := profiletext + Piece(astring, '^', 3) + '^';
+          profiletype := Piece(astring, '^', 1);
+          if profiletype = '8925' then
+            profileitem := UpperCase(Piece(astring, '^', 3))
+          else
+            profileitem := Piece(astring, '^', 2);
+          profile := profile + profiletype + '~' + profileitem + '~|';
+        end;
+        if (GtslViews.Count > 0) and (Piece(GtslViews[0], '^', 1) = VIEW_CURRENT) then
+          counter := inttostr(GtslViews.Count)
+        else
+          counter := inttostr(GtslViews.Count + 1);
+        aProfileString := '<view' + counter + '>^' + profile + '^' + profiletext;
+        GtslViews.Add(aProfileString);
+        aCounter := strtointdef(counter, BIG_NUMBER);
+        with aGraphSetting do
+        begin
+          lstActualItems.Items.Clear;
+          with lstItemsDisplayed do
+          for i := 0 to Items.Count - 1 do
+          begin
+            lstActualItems.Items.Add(Piece(Items[i], '<', 1));  //get rid of <any>
+          end;
+          ItemsForDisplay := lstActualItems.Items;
+        end;
+      end;
+    end;
+  finally
+    frmGraphProfiles.Release;
+  end;
+end;
+
+procedure TfrmGraphProfiles.FormCreate(Sender: TObject);
+begin
+  FPublicEditor := GraphPublicEditor;
+end;
+
+procedure TfrmGraphProfiles.FormShow(Sender: TObject);
+begin
+  if GtslData = nil then
+  begin
+    radSourceAll.Checked := true;
+    //radSourcePat.Enabled := false;
+  end
+  else if GtslData.Count < 1 then
+  begin
+    radSourceAll.Checked := true;
+    //radSourcePat.Enabled := false;
+  end;
+  cboAllItems.Visible := radSourceAll.Checked;
+  FillSource(lstSources);
+  cboUser.InitLongList('');
+  FHintPauseTime := Application.HintHidePause;
+  Application.HintHidePause := 9000; // uses a longer hint pause time
+end;
+
+procedure TfrmGraphProfiles.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Application.HintHidePause := FHintPauseTime;
+end;
+
+procedure TfrmGraphProfiles.radSourceAllClick(Sender: TObject);
+var
+  dfn: string;
+begin
+  if Sender = radSourceAll then
+  begin
+    lstItemsSelection.Visible := false;
+    cboAllItems.Visible := true;
+  end
+  else
+  begin
+    if radSourcePat.Tag = 0 then
+    begin
+      dfn := lblClose.Hint;
+      FastAssign(rpcGetAllItems(dfn), lstTests.Items);  // items for patient
+      FastAssign(rpcGetItems('50.605', dfn), lstDrugClass.Items);
+      radSourcePat.Tag := 1;
+    end;
+    cboAllItems.Visible := false;
+    lstItemsSelection.Visible := true;
+  end;
+  if lstSources.ItemIndex > 0 then
+  begin
+    lstSources.Tag := BIG_NUMBER;
+    lstSourcesChange(lstSources);
+  end
+  else if lstSources.ItemIndex > 0 then
+  begin
+    lstOtherSources.Tag := BIG_NUMBER;
+    lstSourcesChange(lstOtherSources);
+  end;
+end;
+
+procedure TfrmGraphProfiles.lstSourcesChange(Sender: TObject);
+var
+  UserNum: int64;
+  filetype, typedata: string;
+  aListBox, oppositeListBox: TORListBox;
+  viewselected: boolean;
+begin
+  CheckPublic;
+  aListBox := (Sender as TORListBox);
+  if aListBox = lstSources then
+  begin
+    oppositeListBox := lstOtherSources;
+    UserNum := User.DUZ;
+  end
+  else
+  begin
+    oppositeListBox := lstSources;
+    UserNum := cboUser.ItemID;
+  end;
+  if aListBox.Tag <> BIG_NUMBER then
+    exit;
+  oppositeListBox.ItemIndex := -1;
+  cboAllItems.Items.Clear;
+  cboAllItems.Text := '';
+  if aListBox.ItemIndex = -1 then exit;
+  typedata :=  aListBox.Items[aListBox.ItemIndex];
+  if pos(LLS_FRONT, typedata) > 0 then  // <clear all selections>
+  begin
+    lstItemsSelection.Clear;
+    cboAllItems.Items.Clear;
+    cboAllItems.Text := '';
+    exit;
+  end;
+  filetype := Piece(typedata, '^', 1);
+  if (filetype = VIEW_PERSONAL)
+  or (filetype = VIEW_PUBLIC)
+  or (filetype = VIEW_LABS)
+  or (filetype = VIEW_TEMPORARY)
+  or (filetype = VIEW_CURRENT) then
+  begin
+    RadSourceAll.Checked := true;
+    RadSourcePat.Enabled := false;
+    AssignProfile(cboAllItems.Items, typedata, UserNum, false);
+    FastAssign(cboAllItems.Items, lstItemsSelection.Items);
+    viewselected := true;
+  end
+  else
+  begin
+    RadSourcePat.Enabled := true;
+    AllItemsBefore(typedata);
+    AllItemsAfter(filetype, typedata);
+    viewselected := false;
+  end;
+  lstItemsSelection.Visible := viewselected or radSourcePat.Checked;
+  cboAllItems.Visible := not lstItemsSelection.Visible;
+  cboAllItemsChange(cboAllItems);
+end;
+
+procedure TfrmGraphProfiles.lstSourcesEnter(Sender: TObject);
+begin
+  (Sender as TORListBox).Tag := BIG_NUMBER;
+end;
+
+procedure TfrmGraphProfiles.lstSourcesExit(Sender: TObject);
+begin
+  (Sender as TORListBox).Tag := 0;
+end;
+
+procedure TfrmGraphProfiles.lstSourcesDblClick(Sender: TObject);
+begin
+  if cboAllItems.Visible then
+  begin
+    if cboAllItems.Items.Count < 1 then exit;
+    cboAllItems.ItemIndex := 0;
+    cboAllItemsClick(cboAllItems);
+  end
+  else
+  begin
+    if lstItemsSelection.Items.Count < 1 then exit;
+    //lstItemsSelection.Selected[0] := true;
+    cboAllItemsClick(lstItemsSelection);
+    btnAddAllClick(self);
+  end;
+end;
+
+procedure TfrmGraphProfiles.cboUserClick(Sender: TObject);
+begin
+  FillSource(lstOtherSources);
+  if cboUser.ItemIndex <> -1 then
+    lblOtherViews.Caption := cboUser.DisplayText[cboUser.ItemIndex] + ' Views:'
+  else
+    lblOtherViews.Caption := 'Other Views:'
+end;
+
+procedure TfrmGraphProfiles.cboUserNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboUser.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmGraphProfiles.cboAllItemsChange(Sender: TObject);
+//var
+ //astring: string;
+begin
+ if (Sender is TORListBox) then
+   btnClear.Enabled := btnSave.Enabled or ((Sender as TORListBox).Items.Count > 0)
+ else if (Sender is TORComboBox) then
+   btnClear.Enabled := btnSave.Enabled or ((Sender as TORComboBox).Items.Count > 0);
+ if lstItemsSelection.Visible then
+ begin
+   btnAddAll.Enabled := lstItemsSelection.Items.Count > 0;
+   btnAdd.Enabled := lstItemsSelection.ItemIndex > -1;
+   //if btnAdd.Enabled then
+     //astring := lstItemsSelection.Items[lstItemsSelection.ItemIndex];
+ end
+ else
+ begin
+   btnAddAll.Enabled := cboAllItems.Items.Count > 0;
+   btnAdd.Enabled := cboAllItems.ItemIndex > -1;
+ end;
+end;
+
+procedure TfrmGraphProfiles.cboAllItemsClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if Sender is TButton then
+  begin
+    if lstItemsSelection.Visible then
+    begin
+      if Sender = btnAddAll then
+      begin
+        for i := 0 to lstItemsSelection.Items.Count - 1 do
+        begin
+          lstItemsSelection.Selected[i] := true;
+          lstItemsSelection.ItemIndex := i;
+          ListBoxSetup(lstItemsSelection);
+        end;
+        lstItemsSelection.Clear;
+      end
+      else
+      begin
+        lstItemsDisplayed.ItemIndex := 0;
+        ListBoxSetup(lstItemsSelection);
+      end;
+      lstItemsDisplayedChange(self);
+      CheckToClear;
+      exit;
+    end
+    else
+    begin
+      if Sender = btnAdd then
+      begin
+        ComboBoxSetup(cboAllItems);
+        lstItemsDisplayedChange(self);
+        CheckToClear;
+        exit;
+      end;
+    end;
+  end;
+  if (Sender is TORComboBox) then
+    ComboBoxSetup(Sender)
+  else if (Sender is TORListBox) then
+    ListBoxSetup(Sender)
+  else exit;
+  lstItemsDisplayedChange(self);
+  CheckToClear;
+end;
+
+procedure TfrmGraphProfiles.cboAllItemsNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+var
+  filetype: string;
+begin
+  if lstSources.ItemIndex = -1 then exit;
+  filetype := Piece(lstSources.Items[lstSources.ItemIndex], '^', 1);
+  cboAllItems.ForDataUse(rpcLookupItems(filetype, StartFrom, Direction));
+end;
+
+procedure TfrmGraphProfiles.lstItemsDisplayedChange(Sender: TObject);
+begin
+ btnSave.Enabled := lstItemsDisplayed.Items.Count > 0;
+ btnSavePublic.Enabled := btnSave.Enabled and FPublicEditor;
+ btnRemoveAll.Enabled := btnSave.Enabled;
+ btnAdd.Enabled := (cboAllItems.Visible and (cboAllItems.ItemIndex > -1))
+   or (lstItemsSelection.Visible and (lstItemsSelection.ItemIndex > -1));
+ btnRemoveOne.Enabled :=  btnSave.Enabled and (lstItemsDisplayed.ItemIndex > -1);
+ btnClear.Enabled := btnSave.Enabled or (lstItemsSelection.Items.Count > 0);
+ if btnSave.Enabled and pnlApply.Visible then btnClose.Caption := 'Close and Display'
+ else btnClose.Caption := 'Close';
+end;
+
+procedure TfrmGraphProfiles.lstItemsDisplayedDblClick(Sender: TObject);
+var
+  line: string;
+begin
+  if lstItemsDisplayed.ItemIndex < 0 then exit;
+  line := lstItemsDisplayed.Items[lstItemsDisplayed.ItemIndex];
+  lstItemsDisplayed.Items.Delete(lstItemsDisplayed.ItemIndex);
+  QualifierDelete(line);
+  lstItemsDisplayedChange(self);
+end;
+
+procedure TfrmGraphProfiles.btnAddAllClick(Sender: TObject);
+begin
+  if cboAllItems.Visible then
+  begin
+    if cboAllItems.Items.Count < 1 then exit;
+    cboAllItems.ItemIndex := 0;
+    cboAllItemsClick(cboAllItems);
+  end
+  else
+  begin
+    if lstItemsSelection.Items.Count < 1 then exit;
+    cboAllItemsClick(btnAddAll);
+  end;
+end;
+
+procedure TfrmGraphProfiles.btnRemoveOneClick(Sender: TObject);
+begin
+  lstItemsDisplayedDblClick(self);
+  CheckToClear;
+end;
+
+procedure TfrmGraphProfiles.btnRemoveAllClick(Sender: TObject);
+begin
+  lstItemsDisplayed.Clear;
+  lstItemsDisplayedChange(self);
+  CheckToClear;
+end;
+
+procedure TfrmGraphProfiles.btnDefinitionsClick(Sender: TObject);
+var
+  firstpublic, firstpersonal, firstlabs: boolean;
+  i, j: integer;
+  aLine, aProfile, filetype, aString, front, back, piece2: string;
+  aList, templist: TStringList;
+begin
+  front := Piece(LLS_FRONT, '^', 2);
+  back := Piece(LLS_BACK, '^', 1);
+  templist := TStringList.Create;
+  aList := TStringList.Create;
+  lstScratch.Clear;
+  lstScratch.Sorted := false;
+  firstpublic := true;
+  firstpersonal := true;
+  firstlabs := true;
+  for i := 0 to lstSources.Items.Count - 1 do
+  begin
+    aLine :=  lstSources.Items[i];
+    filetype := Piece(aLine, '^', 1);
+    aProfile := Piece(aLine, '^', 2);
+    if (filetype = VIEW_PERSONAL)
+    or (filetype = VIEW_PUBLIC)
+    or (filetype = VIEW_LABS) then
+    begin
+      if (filetype = VIEW_PUBLIC) and firstpublic then
+      begin
+        templist.Add(' ');
+        templist.Add(front + copy('Public Views' + back, 0, 60));
+        firstpublic := false;
+      end
+      else
+      if (filetype = VIEW_PERSONAL) and firstpersonal then
+      begin
+        templist.Add(' ');
+        templist.Add(front + copy('Personal Views' + back, 0, 60));
+        firstpersonal := false;
+      end
+      else
+      if (filetype = VIEW_LABS) and firstlabs then
+      begin
+        templist.Add(' ');
+        templist.Add(front + copy('Lab Groups' + back, 0, 60));
+        firstlabs := false;
+      end;
+      AssignProfile(aList, aLine, User.DUZ, true);
+      templist.Add(aProfile);
+      for j := 0 to aList.Count - 1 do
+      begin
+        aLine := aList[j];
+        piece2 := Piece(aLine, '^', 2);
+        if strtointdef(copy(piece2, 0, 1), -1) > 0 then
+        begin
+          aString := Piece(aLine, '^', 3);
+          if copy(aString, 0, 1) = '_' then
+            aString := copy(aString, 2, length(aString));
+          templist.Add('   ' + aString);
+        end
+        else
+        begin
+
+        end;
+      end;
+    end;
+  end;
+  if cboUser.ItemIndex > -1 then
+  begin
+    firstpersonal := true;
+    firstlabs := true;
+    templist.Add('');
+    templist.Add('');
+    templist.Add('Views and Lab Groups for ' + cboUser.Text);
+    for i := 0 to lstOtherSources.Items.Count - 1 do
+    begin
+      aLine :=  lstOtherSources.Items[i];
+      filetype := Piece(aLine, '^', 1);
+      aProfile := Piece(aLine, '^', 2);
+      if (filetype = VIEW_PERSONAL)
+      or (filetype = VIEW_LABS) then
+      begin
+        if (filetype = VIEW_PERSONAL) and firstpersonal then
+        begin
+          templist.Add(' ');
+          templist.Add(front + copy('Views' + back, 0, 60));
+          firstpersonal := false;
+        end
+        else
+        if (filetype = VIEW_LABS) and firstlabs then
+        begin
+          templist.Add(' ');
+          templist.Add(front + copy('Lab Groups' + back, 0, 60));
+          firstlabs := false;
+        end;
+        AssignProfile(aList, aLine, cboUser.ItemID, true);
+        templist.Add(aProfile);
+        for j := 0 to aList.Count - 1 do
+        begin
+          aLine := aList[j];
+          piece2 := Piece(aLine, '^', 2);
+          if strtointdef(copy(piece2, 0, 1), -1) > 0 then
+          begin
+            aString := Piece(aLine, '^', 3);
+            if copy(aString, 0, 1) = '_' then
+              aString := copy(aString, 2, length(aString));
+            templist.Add('   ' + aString);
+          end;
+        end;
+      end;
+    end;
+  end;
+  templist.Insert(0, 'Definitions of Views and Lab Groups');
+  templist.Insert(1, '');
+  templist.Insert(2,'Your Personal Views, Public Views, and Lab Groups');
+  ReportBox(templist, 'Views and Lab Groups', true);
+  templist.Free;
+  aList.Free;
+end;
+
+procedure TfrmGraphProfiles.btnClearClick(Sender: TObject);
+begin
+  lstItemsDisplayed.Items.Clear;
+  lstItemsSelection.Items.Clear;
+  cboAllItems.Items.Clear;
+  cboAllItems.Text :='';
+  lstItemsDisplayedChange(self);
+  cboAllItemsChange(self);
+  lstSources.ItemIndex := -1;
+  lstOtherSources.ItemIndex := -1;
+end;
+
+procedure TfrmGraphProfiles.btnDeleteClick(Sender: TObject);
+var
+  publicview: boolean;
+  info, profilename, profname, proftype: string;
+begin
+  if lstSources.ItemIndex < 0 then
+  begin
+    ShowMsg('You must select a valid View for deletion.');
+    exit;
+  end;
+  publicview := false;
+  profilename := '';
+  info := lstSources.Items[lstSources.ItemIndex];
+  proftype := Piece(info, '^', 1);
+  profname := Piece(info, '^', 2);
+  if proftype = VIEW_PERSONAL then
+    profilename := profname
+  else if (proftype = VIEW_PUBLIC) and FPublicEditor then
+  begin
+    profilename := profname;
+    publicview := true;
+  end
+  else
+  begin
+    ShowMsg('You must select a valid View for deletion.');
+    exit;
+  end;
+  if publicview then
+  begin
+    if MessageDlg('This is Public and may be used by others.'
+      + #13 + 'Delete ' + profilename + '?', mtConfirmation,
+      [mbYes, mbNo], 0) = mrYes then
+    begin
+      rpcDeleteGraphProfile(UpperCase(profilename), '1');
+      btnClose.Tag := 1;
+      MessageDlg('The public view, ' + profilename + ' has been deleted.',
+      mtInformation, [mbOk], 0);
+    end
+    else exit;
+  end
+  else
+  begin
+    if MessageDlg('Delete ' + profilename + '?', mtConfirmation,
+      [mbYes, mbNo], 0) = mrYes then
+    begin
+      rpcDeleteGraphProfile(UpperCase(profilename), '0');
+      btnClose.Tag := 1;
+      MessageDlg('Your personal view, ' + profilename + ' has been deleted.',
+      mtInformation, [mbOk], 0);
+    end
+    else exit;
+  end;
+  btnClearClick(self);
+  lstItemsDisplayed.Items.Clear;
+  lstItemsSelection.Items.Clear;
+  cboAllItems.Items.Clear;
+  cboAllItems.Text :='';
+  GraphDataOnUser;
+  FormShow(self);
+  lstItemsDisplayedChange(self);
+  btnDelete.Enabled := false;
+  btnRename.Enabled := false;
+  if lstSources.Count > 0 then
+    lstSources.ItemIndex := 0;
+end;
+
+procedure TfrmGraphProfiles.btnRenameClick(Sender: TObject);
+var
+  profentered, publicview: boolean;
+  i, j: integer;
+  astring, info, infotitle, newprofilename, profile, profileitem, profilename, profiletype, profname, proftype: string;
+  aList: TStrings;
+begin
+  if lstSources.ItemIndex < 0 then
+  begin
+    ShowMsg('You must select a valid View to rename.');
+    exit;
+  end;
+  publicview := false;
+  profilename := '';
+  info := lstSources.Items[lstSources.ItemIndex];
+  proftype := Piece(info, '^', 1);
+  profname := Piece(info, '^', 2);
+  if proftype = VIEW_PERSONAL then
+    profilename := profname
+  else if (proftype = VIEW_PUBLIC) and FPublicEditor then
+  begin
+    profilename := profname;
+    publicview := true;
+  end
+  else
+  begin
+    ShowMsg('You must select a valid View to rename.');
+  end;
+  btnRemoveAllClick(self);
+  lstSourcesDblClick(self);
+  if publicview then
+  begin
+    infotitle := 'Rename this Public View';
+    info := 'This is Public and may be used by others.'
+      + #13 + 'Enter a new name for ' + profilename + '.'
+  end
+  else
+  begin
+    infotitle := 'Rename your Personal View';
+    info := 'Enter a new name for ' + profilename + '.'
+  end;
+  profentered := GetProfileName(infotitle, info, newprofilename);
+  if not profentered then exit;
+  info := '';
+  if not ProfileExists(newprofilename, VIEW_PUBLIC) and publicview then
+    info := 'The Public View, ' + profilename + ', will be changed to '
+      + newprofilename + #13 + 'Is this OK?'
+  else if not ProfileExists(newprofilename, VIEW_PERSONAL) then
+    info := 'Your Personal View, ' + profilename + ', will be changed to '
+      + newprofilename + #13 + 'Is this OK?';
+  if length(info) > 0 then
+    if MessageDlg(info, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then exit;
+  aList := TStringList.Create;
+  profile := '';
+  aList.Clear;
+  j := 1;
+  with lstItemsDisplayed do
+  for i := 0 to Items.Count - 1 do
+  begin
+    astring := Items[i];
+    profiletype := Piece(astring, '^', 1);
+    if profiletype = '8925' then
+      profileitem := UpperCase(Piece(astring, '^', 3))
+    else
+      profileitem := Piece(astring, '^', 2);
+    profile := profile + profiletype + '~' + profileitem + '~|';
+    j := j + 1;
+    if (j mod 10) = 0 then
+      if length(profile) > 0 then
+      begin
+        aList.Add(UpperCase(profile));
+        profile := '';
+      end;
+  end;
+  if length(profile) > 0 then
+  begin
+    aList.Add(UpperCase(profile));
+    profile := '';
+  end;
+  if publicview then
+  begin
+    proftype := VIEW_PUBLIC;
+    rpcDeleteGraphProfile(UpperCase(profilename), '1');
+    rpcSetGraphProfile(newprofilename, '1', aList);
+    btnClose.Tag := 1;
+  end
+  else
+  begin
+    proftype := VIEW_PERSONAL;
+    rpcDeleteGraphProfile(UpperCase(profilename), '0');
+    rpcSetGraphProfile(newprofilename, '0', aList);
+    btnClose.Tag := 1;
+  end;
+  aList.Free;
+  IDProfile(newprofilename, proftype);
+end;
+
+procedure TfrmGraphProfiles.btnSaveClick(Sender: TObject);
+var
+  profentered, puplicedit: boolean;
+  i, j: integer;
+  astring, info, infotitle, profile, profileitem, profilename, profiletype, profname, proftype: string;
+  aList: TStrings;
+begin
+  puplicedit := Sender = btnSavePublic;
+  if lstItemsDisplayed.Items.Count < 1 then exit;
+  profilename := '';
+  if lstSources.ItemIndex > -1 then
+  begin
+    info := lstSources.Items[lstSources.ItemIndex];
+    if pos(LLS_FRONT, info) < 1 then
+    begin
+      proftype := Piece(info, '^', 1);
+      profname := Piece(info, '^', 2);
+      profilename := profname;
+    end;
+  end;
+  if puplicedit then
+  begin
+    infotitle := 'Save this Public View';
+    info := 'Save this Public View by entering a name for it.'
+      + #13 + 'If you are editing a View, enter the View''s name to overwrite it.';
+  end
+  else
+  begin
+    infotitle := 'Save your Personal View';
+    info := 'Save your Personal View by entering a name for it.'
+      + #13 + 'If you are editing a View, enter the View''s name to overwrite it.';
+  end;
+  profentered := GetProfileName(infotitle, info, profilename);
+  if not profentered then exit;
+  info := '';
+  if ProfileExists(profilename, VIEW_PUBLIC) and FPublicEditor and puplicedit then
+    info := 'The Public View, ' + profilename + ', will be overwritten.'
+      + #13 + 'Is this OK?'
+  else if ProfileExists(profilename, VIEW_PERSONAL) and (not puplicedit) then
+    info := 'Your Personal View, ' + profilename + ', will be overwritten.'
+      + #13 + 'Is this OK?';
+  if length(info) > 0 then
+    if MessageDlg(info, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then exit;
+  aList := TStringList.Create;
+  profile := '';
+  aList.Clear;
+  j := 1;
+  with lstItemsDisplayed do
+  for i := 0 to Items.Count - 1 do
+  begin
+    astring := Items[i];
+    profiletype := Piece(astring, '^', 1);
+    if profiletype = '8925' then
+      profileitem := UpperCase(Piece(astring, '^', 3))
+    else
+      profileitem := Piece(astring, '^', 2);
+    profile := profile + profiletype + '~' + profileitem + '~|';
+    j := j + 1;
+    if (j mod 10) = 0 then
+      if length(profile) > 0 then
+      begin
+        aList.Add(UpperCase(profile));
+        profile := '';
+      end;
+  end;
+  if length(profile) > 0 then
+  begin
+    aList.Add(UpperCase(profile));
+    profile := '';
+  end;
+  if puplicedit then
+  begin
+    proftype := VIEW_PUBLIC;
+    rpcSetGraphProfile(profilename, '1', aList);
+    btnClose.Tag := 1;
+  end
+  else
+  begin
+    proftype := VIEW_PERSONAL;
+    rpcSetGraphProfile(profilename, '0', aList);
+    btnClose.Tag := 1;
+  end;
+  aList.Free;
+  IDProfile(profilename, proftype);
+end;
+
+procedure TfrmGraphProfiles.btnCloseClick(Sender: TObject);
+begin
+  if lstItemsDisplayed.Items.Count > 0 then
+    btnClose.Tag := 1;
+  Close;
+end;
+
+procedure TfrmGraphProfiles.btnViewsClick(Sender: TObject);
+begin             // not used
+  pnlOtherSources.Visible := not pnlOtherSources.Visible;
+  if pnlOtherSources.Visible then
+    btnViews.Caption := 'Hide other views'
+  else
+    btnViews.Caption := 'Show other views';
+  DialogGraphOthers(1);
+end;
+
+procedure TfrmGraphProfiles.CheckPublic;
+var
+  typedata: string;
+begin
+  if lstSources.ItemIndex = -1 then
+  begin
+    btnDelete.Enabled := false;
+    btnRename.Enabled := false;
+    exit;
+  end;
+  typedata :=  lstSources.Items[lstSources.ItemIndex];
+  btnDelete.Enabled := (Piece(typedata, '^', 1) = VIEW_PERSONAL)
+                    or ((Piece(typedata, '^', 1) = VIEW_PUBLIC) and FPublicEditor);
+  btnRename.Enabled := btnDelete.Enabled;
+end;
+
+procedure TfrmGraphProfiles.ListBoxSetup(Sender: TObject);
+var
+  profileselected: boolean;
+  i: integer;
+  selection, first, profileitem: string;
+begin
+  with (Sender as TORListBox) do
+  begin
+    if ItemIndex < 0 then exit;
+    selection := Items[ItemIndex];
+    if length(Piece(selection, '_', 2)) > 0 then
+      selection := Piece(selection, '_', 1) + ' ' + Piece(selection, '_', 2);
+    first := Piece(selection, '^', 1);
+    if first = '' then exit;     // line
+    profileselected := strtointdef(Piece(selection, '^', 2), 0) < 0;
+    if profileselected then
+    begin
+      for i := 2 to Items.Count - 1 do
+      begin
+        profileitem := Items[i];
+        if length(Piece(profileitem, '_', 2)) > 0 then
+          profileitem := Piece(profileitem, '_', 1) + ' ' + Piece(profileitem, '_', 2);   //*****???? ^
+        AddToList(profileitem, lstItemsDisplayed);
+      end;
+    end
+    else
+      AddToList(selection, lstItemsDisplayed);
+    //if ItemIndex = 0 then Clear;        //profile or type <any>
+    ItemIndex := -1;
+  end;
+end;
+
+procedure TfrmGraphProfiles.ComboBoxSetup(Sender: TObject);
+var
+  profileselected: boolean;
+  i: integer;
+  selection, first, profileitem, subtype: string;
+begin
+  with (Sender as TORComboBox) do
+  begin
+    if ItemIndex < 0 then exit;
+    selection := Items[ItemIndex];
+    subtype := Piece(Items[0], '^', 3);
+    subtype := Piece(subtype, ':', 2);
+    subtype := copy(subtype, 2, length(subtype));
+    subtype := Piece(subtype, ' ', 1);
+    if UpperCase(copy(selection, 1, 5)) = '63AP;' then
+        selection := copy(selection, 1, 4) + '^A;' + copy(selection, 6, 1) + ';'
+        + Piece(selection, '^', 2) + '^' + subtype + ': ' + Piece(selection, '^', 3)
+    else if UpperCase(copy(selection, 1, 5)) = '63MI;' then
+        selection := copy(selection, 1, 4) + '^M;' + copy(selection, 6, 1) + ';'
+        + Piece(selection, '^', 2) + '^' + subtype + ': ' + Piece(selection, '^', 3);
+    if length(Piece(selection, '_', 2)) > 0 then
+      selection := Piece(selection, '_', 1) + ' ' + Piece(selection, '_', 2);
+    first := Piece(selection, '^', 1);
+    if first = '' then exit;     // line
+    profileselected := strtointdef(Piece(selection, '^', 2), 0) < 0;
+    if profileselected then
+    begin
+      for i := 2 to Items.Count - 1 do
+      begin
+        profileitem := Items[i];
+        if length(Piece(profileitem, '_', 2)) > 0 then
+          profileitem := Piece(profileitem, '_', 1) + ' ' + Piece(profileitem, '_', 2);   //*****???? ^
+        AddToList(profileitem, lstItemsDisplayed);
+      end;
+    end
+    else
+      AddToList(selection, lstItemsDisplayed);
+    if ItemIndex = 0 then Clear;        //profile or type <any>
+    ItemIndex := -1;
+  end;
+end;
+
+procedure TfrmGraphProfiles.Report(aListBox: TORListBox);
+var
+  profileselected: boolean;
+  i: integer;
+  selection, first, profileitem, subtype: string;
+begin
+  with aListBox do
+  begin
+    if ItemIndex < 0 then exit;
+    selection := Items[ItemIndex];
+    subtype := Piece(Items[0], '^', 3);
+    subtype := Piece(subtype, ':', 2);
+    subtype := copy(subtype, 2, length(subtype));
+    subtype := Piece(subtype, ' ', 1);
+    if UpperCase(copy(selection, 1, 5)) = '63AP;' then
+        selection := copy(selection, 1, 4) + '^A;' + copy(selection, 6, 1) + ';'
+        + Piece(selection, '^', 2) + '^' + subtype + ': ' + Piece(selection, '^', 3)
+    else if UpperCase(copy(selection, 1, 5)) = '63MI;' then
+        selection := copy(selection, 1, 4) + '^M;' + copy(selection, 6, 1) + ';'
+        + Piece(selection, '^', 2) + '^' + subtype + ': ' + Piece(selection, '^', 3);
+    if length(Piece(selection, '_', 2)) > 0 then
+      selection := Piece(selection, '_', 1) + ' ' + Piece(selection, '_', 2);
+    first := Piece(selection, '^', 1);
+    if first = '' then exit;     // line
+    profileselected := strtointdef(Piece(selection, '^', 2), 0) < 0;
+    if profileselected then
+    begin
+      for i := 2 to Items.Count - 1 do
+      begin
+        profileitem := Items[i];
+        if length(Piece(profileitem, '_', 2)) > 0 then
+          profileitem := Piece(profileitem, '_', 1) + ' ' + Piece(profileitem, '_', 2);   //*****???? ^
+        AddToList(profileitem, lstItemsDisplayed);
+      end;
+    end
+    else
+      AddToList(selection, lstItemsDisplayed);
+    if ItemIndex = 0 then Clear;        //profile or type <any>
+    ItemIndex := -1;
+  end;
+end;
+
+procedure TfrmGraphProfiles.CheckToClear;
+begin
+  if (cboAllItems.Visible and (cboAllItems.Items.Count = 0))
+  or (lstItemsSelection.Visible and (lstItemsSelection.Items.Count = 0)) then
+  begin
+    lstSources.ItemIndex := -1;
+    lstOtherSources.ItemIndex := -1;
+    btnAdd.Enabled := false;
+    btnAddAll.Enabled := false;
+  end;
+end;
+
+procedure TfrmGraphProfiles.QualifierDelete(line: string);
+var
+  i: integer;
+  filenum: string;
+begin
+  if Piece(line, '^', 1) <> '0' then exit;
+  filenum := Piece(line, '^', 2);
+  if strtointdef(filenum, 0) < 0 then exit;
+  if (filenum = '52') or (filenum = '55') or (filenum = '55NVAE')
+  or (filenum = '55NVA') or (filenum = '53.79') then
+  with lstItemsDisplayed do
+  for i := 0 to Items.Count - 1 do
+  if (Piece(Items[i], '^', 2) = '50.605') and (Piece(Items[i], '^', 1) = '0') then
+  begin
+    Items.Delete(i);
+    break;
+  end;
+end;
+
+procedure TfrmGraphProfiles.AllItemsBefore(var typedata: string);
+var
+  i: integer;
+begin
+  with cboAllItems.Items do
+  begin
+    Clear;
+    cboAllItems.InitLongList('');
+    typedata := '0^' + Piece(typedata, '^', 1) + '^ ' + Piece(typedata, '^', 2) + ' <any>';
+    Insert(0, typedata);
+    Insert(1, '^' + LLS_LINE);
+    if Piece(typedata, '^', 2) = '63AP' then
+    begin
+      for i := 0 to lstSources.Items.Count - 1 do
+      if copy(lstSources.Items[i], 1, 5) = '63AP;' then
+      begin
+        typedata := lstSources.Items[i];
+        typedata := '0^' + Piece(typedata, '^', 1) + '^ ' + Piece(typedata, '^', 2) + ' <any>';
+        Add(typedata);
+      end;
+    end
+    else if Piece(typedata, '^', 2) ='63MI' then
+    begin
+      for i := 0 to lstSources.Items.Count - 1 do
+      if copy(lstSources.Items[i], 1, 5) = '63MI;' then
+      begin
+        typedata := lstSources.Items[i];
+        typedata := '0^' + Piece(typedata, '^', 1) + '^ ' + Piece(typedata, '^', 2) + ' <any>';
+        Add(typedata);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphProfiles.AllItemsAfter(var filetype, typedata: string);
+var
+  i: integer;
+  itemdata, itemname: string;
+begin
+  with lstItemsSelection.Items do
+  begin
+    Clear;
+    lstItemsSelection.Sorted := true;
+    itemname := Piece(typedata, '^', 3);
+    if copy(itemname, 1, 1) = ' ' then
+    begin
+      itemname := copy(itemname, 2, length(itemname));   // strip preceding space
+      typedata := '0^' + Piece(typedata, '^', 2) + '^ ' + itemname;
+    end
+    else
+      typedata := '0^' + Piece(typedata, '^', 1) + '^ ' + itemname;
+    Insert(0, typedata);
+    Insert(1, '^' + LLS_LINE);
+    if filetype = '63AP' then                         // finish subitems ***********
+    begin
+      lstItemsSelection.Sorted := false;
+      for i := 0 to lstSources.Items.Count - 1 do
+      if copy(lstSources.Items[i], 1, 5) = '63AP;' then
+      begin
+        typedata := lstSources.Items[i];
+        typedata := '0^' + Piece(typedata, '^', 1) + '^ ' + Piece(typedata, '^', 2) + ' <any>';
+        Add(typedata);
+      end;
+    end
+    else if filetype ='63MI' then
+    begin
+      lstItemsSelection.Sorted := false;
+      for i := 0 to lstSources.Items.Count - 1 do
+      if copy(lstSources.Items[i], 1, 5) = '63MI;' then
+      begin
+        typedata := lstSources.Items[i];
+        typedata := '0^' + Piece(typedata, '^', 1) + '^ ' + Piece(typedata, '^', 2) + ' <any>';
+        Add(typedata);
+      end;
+    end
+    else if filetype = '50.605' then
+    for i := 0 to lstDrugClass.Items.Count - 1 do
+    begin
+      itemdata := lstDrugClass.Items[i];
+      if filetype = Piece(itemdata, '^', 1) then
+        Add(itemdata);
+    end
+    else if copy(filetype, 1, 5) = '63AP;' then
+    begin
+      filetype := copy(filetype, 1, 4) + '^A;' + copy(filetype, 6, 1) + ';';
+      for i := 0 to lstTests.Items.Count - 1 do
+      begin
+        itemdata := lstTests.Items[i];
+        if filetype = UpperCase(copy(itemdata, 1, 9)) then
+          Add(itemdata);
+      end;
+    end
+    else if copy(filetype, 1, 5) = '63MI;' then
+    begin
+      filetype := copy(filetype, 1, 4) + '^M;' + copy(filetype, 6, 1) + ';';
+      for i := 0 to lstTests.Items.Count - 1 do
+      begin
+        itemdata := lstTests.Items[i];
+        if filetype = UpperCase(copy(itemdata, 1, 9)) then
+          Add(itemdata);
+      end;
+    end
+    else if filetype <> '405' then
+    for i := 0 to lstTests.Items.Count - 1 do
+    begin
+      itemdata := lstTests.Items[i];
+      if filetype = UpperCase(Piece(itemdata, '^', 1)) then
+        Add(itemdata);
+    end;
+    cboAllItemsChange(lstItemsSelection);
+  end;
+end;
+
+procedure TfrmGraphProfiles.AddToList(aItem: string; aListBox: TORListBox);
+var
+  addtolist: boolean;
+  checkfile, checkitem: string;
+begin
+  aItem := UpperCase(Pieces(aItem, '^', 1, 2)) + '^' + Piece(aItem, '^', 3);
+  checkfile := Piece(aItem, '^', 1);
+  checkitem := Piece(aItem, '^', 2);
+  if checkfile = '0' then
+  begin
+    checkfile := checkitem;       // if drug class any - 52,0;55,0
+    checkitem := '0';           // if drug class item - go thru meds
+  end;
+  ArrangeList(checkfile, checkitem, aItem, aListBox, addtolist);
+  if addtolist then aListBox.Items.Add(aItem);
+  if (checkfile = '50.605') and (checkitem = '0') then
+  begin
+    checkfile := '52';
+    aItem := '0^52^ Medication,Outpatitent <any>';
+    ArrangeList(checkfile, checkitem, aItem, aListBox, addtolist);
+    if addtolist then aListBox.Items.Add(aItem);
+    checkfile := '55';
+    aItem := '0^55^ Medication,Inpatitent <any>';
+    ArrangeList(checkfile, checkitem, aItem, aListBox, addtolist);
+    if addtolist then aListBox.Items.Add(aItem);
+    checkfile := '53.79';
+    aItem := '0^53.79^ Medication,BCMA <any>';
+    ArrangeList(checkfile, checkitem, aItem, aListBox, addtolist);
+    if addtolist then aListBox.Items.Add(aItem);
+    {checkfile := '55NVAE';               // nonvameds as events is not used
+    aItem := '0^55NVAE^ Medication,Non-VA-Event <any>';
+    ArrangeList(checkfile, checkitem, aItem, aListBox, addtolist);
+    if addtolist then aListBox.Items.Add(aItem);}
+    checkfile := '55NVA';
+    aItem := '0^55NVA^ Medication,Non-VA <any>';
+    ArrangeList(checkfile, checkitem, aItem, aListBox, addtolist);
+    if addtolist then aListBox.Items.Add(aItem);
+  end;
+end;
+
+procedure TfrmGraphProfiles.ArrangeList(aCheckFile, aCheckItem, aItem: string;
+  aListBox: TORListBox; var addtolist: boolean);
+var
+  i: integer;
+  listfile, listitem: string;
+begin
+  addtolist := true;
+  with aListBox do
+  for i := Items.Count - 1 downto 0 do
+  begin
+    listfile := Piece(Items[i], '^', 1);
+    listitem := Piece(Items[i], '^', 2);
+    if listfile = '0' then
+    begin
+      listfile := listitem;
+      listitem := '0';
+    end;
+    if (aCheckItem = listitem) and (aCheckFile = listfile) then
+    begin
+      addtolist := false;
+      break;
+    end
+    else
+    if (listitem = '0') and (aCheckFile = listfile) then
+    begin
+      addtolist := false;
+      break;
+    end
+    else
+    if listitem = '0' then
+    begin
+      if aCheckFile = Piece(listfile, ';', 1) then
+        if Piece(aCheckItem, ';', 2) = Piece(listfile, ';', 2) then
+        begin
+          addtolist := false;
+          break;
+        end;
+    end
+    else
+    if (aCheckItem = '0') and (aCheckFile = listfile) then
+      Items.Delete(i);
+  end;
+end;
+
+procedure TfrmGraphProfiles.AssignProfile(aList: TStrings; aProfile: string; UserNum: integer; allitems: boolean);
+var
+  i, k: integer;
+  preprofile, typedata, typepart, typeone, typetwo, testname, teststring: string;
+  itempart, itempart1, itempart2, itemnums, itemname, itemtest: string;
+begin
+  preprofile := aProfile;
+  aList.Clear;
+  if Piece(aProfile, '^', 1) = VIEW_TEMPORARY then
+  begin
+    typedata := Piece(aProfile, '^', 3);
+    for i := 1 to BIG_NUMBER do
+    begin
+      typepart := Piece(typedata, '|', i);
+      if typepart = '' then
+        break;
+      testname := Piece(aProfile, '^', i + 3);
+      typeone := Piece(typepart, '~', 1);
+      typetwo := Piece(typepart, '~', 2);
+      aList.Add(typeone + '^' + typetwo + '^' + testname);
+    end;
+    typedata := '0^' + Piece(aProfile, '^', 1) + '^ ' + Piece(aProfile, '^', 2);
+    aList.Insert(0, typedata);
+    aList.Insert(1, '^' + LLS_LINE);
+    exit;
+  end;
+  if Piece(aProfile, '^', 1) = VIEW_CURRENT then   // current selection on list
+  begin
+    typedata := '0^-1^ ' + Piece(aProfile, '^', 2);
+    aProfile := Piece(aProfile, '^', 3);
+    aList.Add(typedata);
+    aList.Add('^' + LLS_LINE);
+    for i := 1 to BIG_NUMBER do
+    begin
+      itempart := Piece(aProfile, '|', i);
+      if itempart = '' then exit;
+      itempart1 := Piece(itempart, '~', 1);
+      itempart2 := Piece(itempart, '~', 2);
+      itemnums := itempart1 + '^' + itempart2;
+      itemname := '';
+      for k := 0 to GtslItems.Count - 1 do
+      begin
+        itemtest := UpperCase(Pieces(GtslItems[k], '^', 1, 2));
+        if Piece(itemtest, '^', 1) = '63' then
+          itemtest := Piece(itemtest, '.', 1);   // works ok but could also remove spec parens on name
+        if itemtest = itemnums then
+        begin
+          itemname := Piece(GtslItems[k], '^', 4);
+          itemnums := itemnums + '^' + itemname;
+          aList.Add(itemnums);
+          break;
+        end;
+      end;
+    end;
+    typedata := '0^' + Piece(aProfile, '^', 1) + '^ ' + Piece(aProfile, '^', 2);
+    aList.Insert(0, typedata);
+    aList.Insert(1, '^' + LLS_LINE);
+    exit;
+  end;
+  if radSourceAll.Checked or allitems then
+  begin
+    AssignProfilePre(aList, aProfile, UserNum);
+    for i := 0 to aList.Count - 1 do
+    begin
+      teststring := aList[i];
+      if Piece(teststring, '^', 1) = '0' then
+        aList[i] := '0^' + Piece(teststring, '^', 2) + '^_' + Piece(teststring, '^', 3);
+    end;
+    exit;
+  end;
+  if Piece(aProfile, '^', 1) = VIEW_LABS then
+  begin
+    lstScratch.Items.Clear;
+    FastAssign(GetATestGroup(strtointdef(Piece(Piece(aProfile, '^', 2), ')', 1), -1), UserNum), aList);
+    for i  := 0 to aList.Count - 1 do
+      aList[i] := '63^' + aList[i];
+  end
+  else
+  if Piece(aProfile, '^', 1) = VIEW_PUBLIC then
+  begin
+    FastAssign(GetGraphProfiles(UpperCase(Piece(aProfile, '^', 2)), '1', 0, 0), lstScratch.Items);
+    typedata := '0^-1^ ' + Piece(aProfile, '^', 2);
+  end
+  else
+  begin
+    FastAssign(GetGraphProfiles(UpperCase(Piece(aProfile, '^', 2)), '0', 0, UserNum), lstScratch.Items);
+    typedata := '0^' + Piece(aProfile, '^', 1) + '^ ' + Piece(aProfile, '^', 2);
+  end;
+  if Piece(aProfile, '^', 1) = VIEW_LABS then
+    exit;
+  for i := 0 to lstScratch.Items.Count - 1 do
+    aProfile := aProfile + lstScratch.Items[i];
+  aProfile := Piece(aProfile, '^', 3);
+  AssignProfilePost(aList, aProfile, typedata);
+end;
+
+procedure TfrmGraphProfiles.AssignProfilePre(aList: TStrings; var aProfile: string; UserNum: integer);
+var
+  i: integer;
+begin
+  if Piece(aProfile, '^', 1) = VIEW_LABS then
+  begin
+    FastAssign(GetATestGroup(strtointdef(Piece(Piece(aProfile, '^', 2), ')', 1), -1), UserNum), aList);
+    for i  := 0 to aList.Count - 1 do
+      aList[i] := '63^' + aList[i];
+  end
+  else
+  if Piece(aProfile, '^', 1) = VIEW_PUBLIC then
+    FastAssign(GetGraphProfiles(UpperCase(Piece(aProfile, '^', 2)), '1', 1, 0), aList)
+  else
+  if Piece(aProfile, '^', 1) = VIEW_PERSONAL then
+    FastAssign(GetGraphProfiles(UpperCase(Piece(aProfile, '^', 2)), '0', 1, UserNum), aList)
+  else
+    FastAssign(GetGraphProfiles(UpperCase(Piece(aProfile, '^', 2)), '0', 1, UserNum), aList);
+end;
+
+procedure TfrmGraphProfiles.AssignProfilePost(aList: TStrings; var aProfile, typedata: string);
+var
+  stop: boolean;
+  i, j, k: integer;
+  itempart, itempart1, itempart2, itemnums, itemname, itemtest: string;
+begin
+  aList.Clear;
+  aList.Add(typedata);
+  aList.Add('^' + LLS_LINE);
+  for i := 1 to BIG_NUMBER do
+  begin
+    itempart := Piece(aProfile, '|', i);
+    if itempart = '' then exit;
+    itempart1 := Piece(itempart, '~', 1);
+    itempart2 := Piece(itempart, '~', 2);
+    itemnums := itempart1 + '^' + itempart2;
+    itemname := '';
+    if itempart1 = '0' then
+    begin
+      for j := 0 to lstSources.Items.Count - 1 do
+        if itempart2 = Piece(lstSources.Items[j], '^', 1) then
+        begin
+          itemname := Piece(lstSources.Items[j], '^', 2);
+          break;
+        end;
+      typedata := '0^' + itempart2 + '^_' + itemname + ' <any>';
+      aList.Add(typedata);
+    end
+    else
+    if (itempart1 <> '0') then    //DRUG CLASS NOT INCLUDED
+    begin
+      stop := false;
+      for k := 0 to lstTests.Items.Count - 1 do
+      begin
+        itemtest := UpperCase(Pieces(lstTests.Items[k], '^', 1, 2));
+        if itemtest = itemnums then
+        begin
+          itemname := Piece(lstTests.Items[k], '^', 3);
+          itemnums := itemnums + '^' + itemname;
+          aList.Add(itemnums);
+          stop := true;
+          break;
+        end;
+      end;
+      if not stop then
+      for k := 0 to lstDrugClass.Items.Count - 1 do
+      begin
+        itemtest := UpperCase(Pieces(lstDrugClass.Items[k], '^', 1, 2));
+        if itemtest = itemnums then
+        begin
+          itemname := Piece(lstDrugClass.Items[k], '^', 3);
+          itemnums := itemnums + '^' + itemname;
+          aList.Add(itemnums);
+          break;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphProfiles.FillSource(aList: TORListBox);
+var
+  i, UserNum: integer;
+  dfntype, firstline, listline: string;
+begin
+  with aList do
+  begin
+    Clear;
+    firstline := '';
+    Sorted := true;
+    OnClick := OnChange;     // turn off onchange event when loading
+    OnChange := nil;
+    if aList = lstSources then                  // user
+    begin
+      FastAssign(rpcGetTypes('0', true), Items);   //*** use GtslAllTypes ???
+      for i := 0 to Items.Count - 1 do
+      begin
+        listline := Items[i];
+        dfntype := UpperCase(Piece(listline, '^', 1));
+        SetPiece(listline, '^', 1, dfntype);
+        Items[i] := listline;
+      end;
+      Sorted := false;
+      Items.Insert(0, LLS_FRONT + copy('Types' + LLS_BACK, 0, 30) + '^0');
+      UserNum := User.DUZ;
+      if GtslViews.Count > 0 then
+      begin
+        Items.Add(LLS_FRONT + copy('Temporary Views' + LLS_BACK, 0, 30) + '^0');
+        for i := 0 to GtslViews.Count - 1 do
+        begin
+          listline := GtslViews[i];
+          if Piece(listline, '^', 1) = VIEW_CURRENT then
+            Items.Add(listline)
+          else
+            Items.Add(VIEW_TEMPORARY + '^' + listline + '^');
+        end;
+      end;
+    end
+    else                                         // other user
+    begin
+      UserNum := cboUser.ItemIEN;
+      Sorted := false;
+    end;
+    FastAssign(GetGraphProfiles('1', '0', 0, UserNum), lstScratch.Items);
+    lstScratch.Sorted := true;
+    if lstScratch.Items.Count > 0 then
+    begin
+      Items.Add(LLS_FRONT + copy('Personal Views' + LLS_BACK, 0, 30) + '^0');
+      for i := 0 to lstScratch.Items.Count - 1 do
+        Items.Add(VIEW_PERSONAL + '^' + lstScratch.Items[i] + '^');
+    end;
+    FastAssign(GetGraphProfiles('1', '1', 0, 0), lstScratch.Items);
+    lstScratch.Sorted := true;
+    if (lstScratch.Items.Count > 0) and (aList = lstSources) then
+    begin
+      Items.Add(LLS_FRONT + copy('Public Views' + LLS_BACK, 0, 30) + '^0');
+      for i := 0 to lstScratch.Items.Count - 1 do
+        Items.Add(VIEW_PUBLIC + '^' + lstScratch.Items[i] + '^');
+    end;
+    FastAssign(rpcTestGroups(UserNum), lstScratch.Items);
+    lstScratch.Sorted := true;
+    if lstScratch.Items.Count > 0 then
+    begin
+      Items.Add(LLS_FRONT + copy('Lab Groups' + LLS_BACK, 0, 30) + '^0');
+      for i := 0 to lstScratch.Items.Count - 1 do
+        Items.Add(VIEW_LABS + '^' + Piece(lstScratch.Items[i], '^', 2) + '^' + Piece(lstScratch.Items[i], '^', 1));
+    end;
+    OnChange := OnClick;
+    OnClick := nil;
+  end;
+end;
+
+function TfrmGraphProfiles.ProfileExists(aName, aType: string): boolean;
+var
+  i: integer;
+  info, sourcetype, profilename: string;
+begin
+  Result := false;
+  aName := UpperCase(aName);
+  for i := lstSources.Items.Count - 1 downto 0 do
+  begin
+    info := lstSources.Items[i];
+    profilename := Piece(info, '^', 2);
+    sourcetype := Piece(info, '^', 1);
+    if (UpperCase(profilename) = aName) and (aType = sourcetype) then
+    begin
+      Result := true;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphProfiles.AssignHints;
+var
+  i: integer;
+begin                       // text defined in uGraphs
+  for i := 0 to ControlCount - 1 do with Controls[i] do
+    Controls[i].ShowHint := true;
+  RadSourcePat.Hint := HINT_PAT_SOURCE;
+  RadSourceAll.Hint := HINT_ALL_SOURCE;
+  lblSelectionInfo.Hint := HINT_SELECTION_INFO;
+  lblSource.Hint := HINT_SOURCE;
+  lstSources.Hint := HINT_SOURCE;
+  pnlSources.Hint := HINT_SOURCE;
+  pnlAllSources.Hint := HINT_SOURCE;
+  splViews.Hint := HINT_SOURCE;
+  lblSelectOthers.Hint := HINT_OTHER_SOURCE;
+  lblOtherViews.Hint := HINT_OTHER_SOURCE;
+  lstOtherSources.Hint := HINT_OTHER_SOURCE;
+  pnlOtherSources.Hint := HINT_OTHER_SOURCE;
+  pnlOtherSourcesBottom.Hint := HINT_OTHER_SOURCE;
+  pnlOtherViews.Hint := HINT_OTHER_SOURCE;
+  lblOtherViews.Hint := HINT_OTHER_SOURCE;
+  lblSelectOthers.Hint := HINT_OTHER_SOURCE;
+  lblOtherPersons.Hint := HINT_OTHERS;
+  cboUser.Hint := HINT_OTHERS;
+  pnlOtherSourcesUser.Hint := HINT_OTHERS;
+  btnDefinitions.Hint := HINT_BTN_DEFINITION;
+  lblSelection.Hint := HINT_SELECTION;
+  lstItemsSelection.Hint := HINT_SELECTION;
+  cboAllItems.Hint := HINT_SELECTION;
+  lblDisplay.Hint := HINT_DISPLAY;
+  lstItemsDisplayed.Hint := HINT_DISPLAY;
+  btnAddAll.Hint := HINT_BTN_ADDALL;
+  btnAdd.Hint := HINT_BTN_ADD1;
+  btnRemoveOne.Hint := HINT_BTN_REMOVE1;
+  btnRemoveAll.Hint := HINT_BTN_REMOVEALL;
+  btnClear.Hint := HINT_BTN_CLEAR;
+  btnDelete.Hint := HINT_BTN_DELETE;
+  btnRename.Hint := HINT_BTN_RENAME;
+  btnSave.Hint := HINT_BTN_SAVE;
+  btnSavePublic.Hint := HINT_BTN_SAVE_PUB;
+  pnlApply.Hint := HINT_APPLY;
+  btnClose.Hint := HINT_BTN_CLOSE;
+end;
+
+procedure TfrmGraphProfiles.wmNCLButtonDown(var Msg: TWMNCLButtonDown);
+begin            // clicking the ? button will have controls show hints
+  if Msg.HitTest = HTHELP then
+  begin
+    Msg.Result := 0; // ignore biHelp border icon
+    AssignHints;
+    ShowMsg('Help is now available.' + #13 +
+                'By pausing over a list or control, hints will appear.');
+  end
+  else
+    inherited;
+end;
+
+function TfrmGraphProfiles.GetProfileName(infotitle, info: string; var newprofilename: string): boolean;
+begin
+  Result := InputQuery(infotitle, info, newprofilename);
+  if not Result then exit;
+  if newprofilename = '' then
+  begin
+    Result := false;
+    exit;
+  end;
+  if (length(newprofilename) < 3)
+  or (length(newprofilename) > 30)
+  or (Pos('^', newprofilename) > 0)
+  or (Pos('|', newprofilename) > 0)
+  or (Pos('~', newprofilename) > 0) then
+  begin
+    ShowMsg('Not accepted - names of views must be 3-30 characters.');
+    Result := false;
+    exit;
+  end;
+end;
+
+procedure TfrmGraphProfiles.IDProfile(var profilename, proftype: string);
+var
+  i, match: integer;
+  info, aName, aType: string;
+begin
+  if length(profilename) > 0 then
+    lblSave.Hint := profilename;
+  //btnClearClick(self);
+  lstScratch.Items.Clear;
+  lstSources.Items.Clear;
+  GraphDataOnUser;
+  FormShow(btnSave);
+  match := -1;
+  profilename := UpperCase(profilename);
+  for i := lstSources.Items.Count - 1 downto 0 do
+  begin
+    info := lstSources.Items[i];
+    aType := Piece(info, '^', 1);
+    aName := Piece(info, '^', 2);
+    if (UpperCase(aName) = profilename) and (aType = proftype) then
+    begin
+      match := i;
+      break;
+    end;
+  end;
+  if match = -1 then exit;
+  lstSources.ItemIndex := match;
+  lstSources.Tag := BIG_NUMBER;
+  lstSourcesChange(lstSources);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphSettings.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphSettings.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphSettings.dfm	(revision 1676)
@@ -0,0 +1,553 @@
+inherited frmGraphSettings: TfrmGraphSettings
+  Left = 109
+  Top = 60
+  BorderIcons = [biSystemMenu, biHelp]
+  BorderStyle = bsDialog
+  Caption = 'Graph Settings'
+  ClientHeight = 318
+  ClientWidth = 438
+  Position = poMainFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitWidth = 444
+  ExplicitHeight = 343
+  DesignSize = (
+    438
+    318)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblMinGraphHeight: TLabel [0]
+    Left = 311
+    Top = 51
+    Width = 110
+    Height = 13
+    Caption = 'Minimum Graph Height:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblMaxGraphs: TLabel [1]
+    Left = 311
+    Top = 7
+    Width = 108
+    Height = 13
+    Caption = 'Max Graphs in Display:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblOptions: TLabel [2]
+    Left = 179
+    Top = 4
+    Width = 39
+    Height = 13
+    Caption = 'Options:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object bvlBase: TBevel [3]
+    Left = 13
+    Top = 287
+    Width = 412
+    Height = 2
+  end
+  object lblSources: TLabel [4]
+    Left = 16
+    Top = 4
+    Width = 91
+    Height = 13
+    Caption = 'Sources Displayed:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblConversions: TLabel [5]
+    Left = 215
+    Top = 284
+    Width = 46
+    Height = 13
+    Caption = 'Functions'
+    ParentShowHint = False
+    ShowHint = False
+    Visible = False
+  end
+  object lblMaxSelect: TLabel [6]
+    Left = 311
+    Top = 93
+    Width = 96
+    Height = 13
+    Caption = 'Max Items to Select:'
+    ParentShowHint = False
+    ShowHint = False
+    WordWrap = True
+  end
+  object lblShow: TLabel [7]
+    Left = 196
+    Top = 233
+    Width = 72
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Show Defaults:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblSave: TLabel [8]
+    Left = 189
+    Top = 265
+    Width = 79
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Save as Default:'
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object bvlDefaults: TBevel [9]
+    Left = 176
+    Top = 221
+    Width = 248
+    Height = 2
+  end
+  object lblOptionsInfo: TLabel [10]
+    Left = 13
+    Top = 297
+    Width = 275
+    Height = 13
+    Caption = 'Settings saved as your defaults are applied to new graphs.'
+    ParentShowHint = False
+    ShowHint = False
+    WordWrap = True
+  end
+  object lblMaxGraphsRef: TLabel [11]
+    Left = 374
+    Top = 23
+    Width = 57
+    Height = 17
+    AutoSize = False
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblMinGraphHeightRef: TLabel [12]
+    Left = 374
+    Top = 69
+    Width = 57
+    Height = 17
+    AutoSize = False
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object lblMaxSelectRef: TLabel [13]
+    Left = 374
+    Top = 114
+    Width = 57
+    Height = 17
+    AutoSize = False
+    ParentShowHint = False
+    ShowHint = False
+  end
+  object bvlMid: TBevel [14]
+    Left = 176
+    Top = 255
+    Width = 248
+    Height = 2
+  end
+  object lblOutpatient: TLabel [15]
+    Left = 311
+    Top = 135
+    Width = 115
+    Height = 13
+    Caption = 'Outpatient Date Default:'
+    ParentShowHint = False
+    ShowHint = False
+    WordWrap = True
+  end
+  object lblInpatient: TLabel [16]
+    Left = 311
+    Top = 178
+    Width = 107
+    Height = 13
+    Caption = 'Inpatient Date Default:'
+    ParentShowHint = False
+    ShowHint = False
+    WordWrap = True
+  end
+  object lstATypes: TListBox [17]
+    Left = 253
+    Top = 3
+    Width = 45
+    Height = 16
+    Anchors = [akLeft, akTop, akRight]
+    ItemHeight = 13
+    TabOrder = 17
+    Visible = False
+  end
+  object lstSourcesCopy: TListBox [18]
+    Left = 123
+    Top = 4
+    Width = 45
+    Height = 16
+    ItemHeight = 13
+    Sorted = True
+    TabOrder = 16
+    Visible = False
+  end
+  object chklstOptions: TCheckListBox [19]
+    Left = 174
+    Top = 23
+    Width = 120
+    Height = 192
+    OnClickCheck = chklstOptionsClickCheck
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = False
+    Sorted = True
+    TabOrder = 1
+  end
+  object txtMinGraphHeight: TEdit [20]
+    Left = 311
+    Top = 67
+    Width = 41
+    Height = 21
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 4
+    Text = '90'
+    OnChange = txtMinGraphHeightChange
+    OnExit = txtMinGraphHeightExit
+    OnKeyPress = txtMinGraphHeightKeyPress
+  end
+  object txtMaxGraphs: TEdit [21]
+    Left = 311
+    Top = 23
+    Width = 41
+    Height = 21
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 2
+    Text = '5'
+    OnChange = txtMaxGraphsChange
+    OnExit = txtMaxGraphsExit
+    OnKeyPress = txtMaxGraphsKeyPress
+  end
+  object spnMinGraphHeight: TUpDown [22]
+    Left = 352
+    Top = 67
+    Width = 15
+    Height = 21
+    Associate = txtMinGraphHeight
+    Min = 10
+    Max = 1000
+    ParentShowHint = False
+    Position = 90
+    ShowHint = False
+    TabOrder = 5
+    OnClick = spnMinGraphHeightClick
+  end
+  object spnMaxGraphs: TUpDown [23]
+    Left = 352
+    Top = 23
+    Width = 15
+    Height = 21
+    Associate = txtMaxGraphs
+    Min = 1
+    Max = 20
+    ParentShowHint = False
+    Position = 5
+    ShowHint = False
+    TabOrder = 3
+    OnClick = spnMaxGraphsClick
+  end
+  object btnClose: TButton [24]
+    Left = 350
+    Top = 295
+    Width = 75
+    Height = 21
+    Cancel = True
+    Caption = 'Close'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 15
+    OnClick = btnCloseClick
+  end
+  object lstSources: TCheckListBox [25]
+    Left = 17
+    Top = 23
+    Width = 153
+    Height = 229
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = False
+    Sorted = True
+    TabOrder = 0
+  end
+  object btnAll: TButton [26]
+    Left = 18
+    Top = 261
+    Width = 65
+    Height = 21
+    Caption = 'All'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 9
+    OnClick = btnAllClick
+  end
+  object brnClear: TButton [27]
+    Left = 103
+    Top = 261
+    Width = 65
+    Height = 21
+    Cancel = True
+    Caption = 'Clear'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 10
+    OnClick = btnAllClick
+  end
+  object btnPersonal: TButton [28]
+    Left = 277
+    Top = 229
+    Width = 65
+    Height = 21
+    Cancel = True
+    Caption = 'Personal'
+    TabOrder = 11
+    OnClick = btnPublicClick
+  end
+  object cboConversions: TORComboBox [29]
+    Left = 228
+    Top = 295
+    Width = 116
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 8
+    Items.Strings = (
+      '<none>'
+      'Standard Deviations'
+      'Inverse Values')
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    ShowHint = False
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 8
+    Visible = False
+    CharsNeedMatch = 1
+  end
+  object txtMaxSelect: TEdit [30]
+    Left = 311
+    Top = 108
+    Width = 41
+    Height = 21
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 6
+    Text = '100'
+    OnChange = txtMaxSelectChange
+    OnExit = txtMaxSelectExit
+    OnKeyPress = txtMaxSelectKeyPress
+  end
+  object spnMaxSelect: TUpDown [31]
+    Left = 352
+    Top = 108
+    Width = 15
+    Height = 21
+    Associate = txtMaxSelect
+    Min = 1
+    Max = 1000
+    ParentShowHint = False
+    Position = 100
+    ShowHint = False
+    TabOrder = 7
+    OnClick = spnMaxSelectClick
+  end
+  object btnPublic: TButton [32]
+    Left = 360
+    Top = 229
+    Width = 65
+    Height = 21
+    Cancel = True
+    Caption = 'Public'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 12
+    OnClick = btnPublicClick
+  end
+  object btnPersonalSave: TButton [33]
+    Left = 277
+    Top = 261
+    Width = 65
+    Height = 21
+    Cancel = True
+    Caption = 'Personal'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 13
+    OnClick = SaveClick
+  end
+  object btnPublicSave: TButton [34]
+    Left = 360
+    Top = 261
+    Width = 65
+    Height = 21
+    Cancel = True
+    Caption = 'Public'
+    ParentShowHint = False
+    ShowHint = False
+    TabOrder = 14
+    OnClick = SaveClick
+  end
+  object lstOptions: TListBox [35]
+    Left = 287
+    Top = 295
+    Width = 57
+    Height = 17
+    ItemHeight = 13
+    Items.Strings = (
+      '3D^A'
+      'Clear Background^B'
+      'Dates^C'
+      'Fixed Date Range^M'
+      'Gradient^D'
+      'Hints^E'
+      'Legend^F'
+      'Lines^G'
+      'Sort by Type^H'
+      'Stay on Top^I'
+      'Values^J'
+      'Zoom, Horizontal^K'
+      'Zoom, Vertical^L')
+    Sorted = True
+    TabOrder = 18
+    Visible = False
+  end
+  object cboDateRangeOutpatient: TORComboBox [36]
+    Left = 311
+    Top = 149
+    Width = 115
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 9
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 19
+    TabStop = True
+    CharsNeedMatch = 1
+  end
+  object cboDateRangeInpatient: TORComboBox [37]
+    Left = 311
+    Top = 194
+    Width = 115
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Color = clWindow
+    DropDownCount = 9
+    Items.Strings = (
+      'S^Date Range...'
+      '1^Today'
+      '2^One Week'
+      '3^Two Weeks'
+      '4^One Month'
+      '5^Six Months'
+      '6^One Year'
+      '7^Two Years'
+      '8^All Results')
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 20
+    TabStop = True
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstATypes'
+        'Status = stsDefault')
+      (
+        'Component = lstSourcesCopy'
+        'Status = stsDefault')
+      (
+        'Component = chklstOptions'
+        'Status = stsDefault')
+      (
+        'Component = txtMinGraphHeight'
+        'Status = stsDefault')
+      (
+        'Component = txtMaxGraphs'
+        'Status = stsDefault')
+      (
+        'Component = spnMinGraphHeight'
+        'Status = stsDefault')
+      (
+        'Component = spnMaxGraphs'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = lstSources'
+        'Status = stsDefault')
+      (
+        'Component = btnAll'
+        'Status = stsDefault')
+      (
+        'Component = brnClear'
+        'Status = stsDefault')
+      (
+        'Component = btnPersonal'
+        'Status = stsDefault')
+      (
+        'Component = cboConversions'
+        'Status = stsDefault')
+      (
+        'Component = txtMaxSelect'
+        'Status = stsDefault')
+      (
+        'Component = spnMaxSelect'
+        'Status = stsDefault')
+      (
+        'Component = btnPublic'
+        'Status = stsDefault')
+      (
+        'Component = btnPersonalSave'
+        'Status = stsDefault')
+      (
+        'Component = btnPublicSave'
+        'Status = stsDefault')
+      (
+        'Component = lstOptions'
+        'Status = stsDefault')
+      (
+        'Component = frmGraphSettings'
+        'Status = stsDefault')
+      (
+        'Component = cboDateRangeOutpatient'
+        'Status = stsDefault')
+      (
+        'Component = cboDateRangeInpatient'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphSettings.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphSettings.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphSettings.pas	(revision 1676)
@@ -0,0 +1,885 @@
+unit fGraphSettings;
+                                          
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ComCtrls, StdCtrls, ExtCtrls, CheckLst, Math, ORCtrls, ORFn, uCore, uGraphs, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmGraphSettings = class(TfrmBase508Form)
+    brnClear: TButton;
+    btnAll: TButton;
+    btnClose: TButton;
+    btnPersonal: TButton;
+    btnPersonalSave: TButton;
+    btnPublic: TButton;
+    btnPublicSave: TButton;
+    bvlBase: TBevel;
+    bvlDefaults: TBevel;
+    cboConversions: TORComboBox;
+    chklstOptions: TCheckListBox;
+    lblConversions: TLabel;
+    lblMaxGraphs: TLabel;
+    lblMaxGraphsRef: TLabel;
+    lblMaxSelect: TLabel;
+    lblMaxSelectRef: TLabel;
+    lblMinGraphHeight: TLabel;
+    lblMinGraphHeightRef: TLabel;
+    lblOptions: TLabel;
+    lblOptionsInfo: TLabel;
+    lblSave: TLabel;
+    lblShow: TLabel;
+    lblSources: TLabel;
+    lstATypes: TListBox;
+    lstSources: TCheckListBox;
+    lstSourcesCopy: TListBox;
+    spnMaxGraphs: TUpDown;
+    spnMaxSelect: TUpDown;
+    spnMinGraphHeight: TUpDown;
+    txtMaxGraphs: TEdit;
+    txtMaxSelect: TEdit;
+    txtMinGraphHeight: TEdit;
+    bvlMid: TBevel;
+    lstOptions: TListBox;
+    cboDateRangeOutpatient: TORComboBox;
+    cboDateRangeInpatient: TORComboBox;
+    lblOutpatient: TLabel;
+    lblInpatient: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure btnAllClick(Sender: TObject);
+    procedure btnCloseClick(Sender: TObject);
+    procedure btnPublicClick(Sender: TObject);
+    procedure CheckSetting(setting: string; turnon: boolean);
+    procedure chklstOptionsClickCheck(Sender: TObject);
+    procedure SaveClick(Sender: TObject);
+    procedure spnMaxGraphsClick(Sender: TObject; Button: TUDBtnType);
+    procedure txtMaxGraphsChange(Sender: TObject);
+    procedure txtMaxGraphsExit(Sender: TObject);
+    procedure txtMaxGraphsKeyPress(Sender: TObject; var Key: Char);
+    procedure spnMinGraphHeightClick(Sender: TObject; Button: TUDBtnType);
+    procedure spnMaxSelectClick(Sender: TObject; Button: TUDBtnType);
+    procedure txtMinGraphHeightChange(Sender: TObject);
+    procedure txtMaxSelectChange(Sender: TObject);
+    procedure txtMinGraphHeightExit(Sender: TObject);
+    procedure txtMaxSelectExit(Sender: TObject);
+    procedure txtMinGraphHeightKeyPress(Sender: TObject; var Key: Char);
+    procedure txtMaxSelectKeyPress(Sender: TObject; var Key: Char);
+    procedure AssignHints;
+    function DisplaySettings: string;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+
+  private
+    FHintPauseTime: integer;
+  public
+    procedure wmNCLButtonDown(var Msg: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
+    procedure ChangeSettings(aGraphSetting: TGraphSetting);
+    procedure ChangeSources(DisplaySource: TStrings);
+    procedure Conversion(conv: integer);
+    procedure SetSettings(aGraphSetting: TGraphSetting);
+    procedure SetSources(aList, DisplaySource: TStrings);
+    procedure GetTypeList(aList: TStrings);
+  end;
+
+var
+  frmGraphSettings: TfrmGraphSettings;
+  
+  procedure DialogOptionsGraphSettings(topvalue, leftvalue, fontsize: integer;
+    var actiontype: boolean);
+  procedure DialogGraphSettings(fontsize: integer;  var okbutton: boolean;
+    aGraphSetting: TGraphSetting; DisplaySource: TStrings; var conv: integer; var aSettings: string);
+  function FileNameX(filenum: string): string;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rGraphs, fGraphData, VAUtils;
+
+procedure DialogOptionsGraphSettings(topvalue, leftvalue, fontsize: integer;
+  var actiontype: boolean);
+var
+  FGraphSetting: TGraphSetting;
+  FSources, AllTypes: TStrings;
+  i, conv: integer;
+  aSettings, dfntype, listline, settings, settings1: string;
+begin
+  settings := GetCurrentSetting;
+  settings1 := GetPublicSetting;
+  if settings1 = '' then
+  begin
+    ShowMsg(TXT_NOGRAPHING);
+    exit;
+  end;
+  settings1 := Piece(settings, '|', 1);
+  Alltypes := TStringList.Create;
+  FastAssign(GtslAllTypes, AllTypes);
+  for i := 0 to AllTypes.Count - 1 do
+  begin
+    listline := AllTypes[i];
+    dfntype := UpperCase(Piece(listline, '^', 1));
+    SetPiece(listline, '^', 1, dfntype);
+    AllTypes[i] := listline;
+  end;
+  FGraphSetting := GraphSettingsInit(settings);
+  FSources := TStringList.Create;
+  for i := 0 to BIG_NUMBER do
+  begin
+    dfntype := Piece(settings1, ';', i);
+    if length(dfntype) = 0 then break;
+    listline := dfntype + '^' + FileNameX(dfntype) + '^1';
+    FSources.Add(listline);
+  end;
+  conv := BIG_NUMBER;  // indicates being called from Options
+  DialogGraphSettings(fontsize, actiontype, FGraphSetting, FSources, conv, aSettings);
+  FGraphSetting.Free;
+  FSources.Free;
+  AllTypes.Free;
+end;
+
+procedure DialogGraphSettings(fontsize: integer;  var okbutton: boolean;
+  aGraphSetting: TGraphSetting; DisplaySource: TStrings; var conv: integer; var aSettings: string);
+var
+  aList: TStrings;
+  frmGraphSettings: TfrmGraphSettings;
+begin
+  okbutton := false;
+  aSettings := '';
+  aList := TStringList.Create;
+  frmGraphSettings := TfrmGraphSettings.Create(Application);
+  try
+    with frmGraphSettings do
+    begin
+      if displaysource.Count > 99999 then exit;
+      FastAssign(rpcGetGraphDateRange('OR_GRAPHS'), cboDateRangeOutpatient.Items);
+      if cboDateRangeOutpatient.Items.Count > 0 then
+        cboDateRangeOutpatient.Items.Delete(0);
+      FastAssign(cboDateRangeOutpatient.Items, cboDateRangeInpatient.Items);
+      FastAssign(rpcGetGraphSettings, aList);
+      btnPersonal.Hint := GetPersonalSetting;
+      btnPublic.Hint := GetPublicSetting;
+      GetTypeList(aList);
+      SetSources(aList, DisplaySource);
+      SetSettings(aGraphSetting);
+      with spnMaxGraphs do
+        lblMaxGraphsRef.Caption := inttostr(Min) + ' to ' + inttostr(Max);
+      with spnMinGraphHeight do
+        lblMinGraphHeightRef.Caption := inttostr(Min) + ' to ' + inttostr(Max);
+      with spnMaxSelect do
+        lblMaxSelectRef.Caption := inttostr(Min) + ' to ' + inttostr(Max);
+      Conversion(conv);
+      ResizeAnchoredFormToFont(frmGraphSettings);
+      ShowModal;
+      okbutton := (btnClose.Tag = 1);
+      if okbutton then
+      begin
+        aSettings := btnClose.Hint;
+        conv := cboConversions.ItemIndex;
+        ChangeSources(DisplaySource);
+        ChangeSettings(aGraphSetting);
+      end;
+    end;
+  finally
+    frmGraphSettings.Release;
+    aList.Free;
+  end;
+end;
+
+procedure TfrmGraphSettings.ChangeSettings(aGraphSetting: TGraphSetting);
+var
+  turnon: boolean;
+  i : integer;
+  value: string;
+begin
+  with aGraphSetting do
+  begin
+    MaxGraphs := spnMaxGraphs.Position;
+    MinGraphHeight := spnMinGraphHeight.Position;
+    MaxSelect := spnMaxSelect.Position;
+    MaxSelectMin := 1;
+    OptionSettings := '';
+    with chklstOptions do
+    for i := 0 to Items.Count - 1 do
+    begin
+      value := Piece(lstOptions.Items[i], '^', 2);
+      turnon := Checked[i];
+      if turnon then OptionSettings := OptionSettings + value;
+      if value = SETTING_VALUES then Values := turnon
+      else if value = SETTING_VZOOM then VerticalZoom := turnon
+      else if value = SETTING_HZOOM then HorizontalZoom := turnon
+      else if value = SETTING_3D then View3D := turnon
+      else if value = SETTING_LEGEND then Legend := turnon
+      else if value = SETTING_LINES then Lines := turnon
+      else if value = SETTING_DATES then Dates := turnon
+      else if value = SETTING_SORT then SortByType := turnon
+      else if value = SETTING_CLEAR then ClearBackground := turnon
+      else if value = SETTING_GRADIENT then Gradient := turnon
+      else if value = SETTING_HINTS then Hints := turnon
+      else if value = SETTING_FIXED then FixedDateRange := turnon
+      else if value = SETTING_TURBO then Turbo := turnon
+      else if value = SETTING_TOP then StayOnTop := turnon;
+    end;
+    if SortByType then SortColumn := 1 else SortColumn := 0;
+    DateRangeOutpatient := cboDateRangeOutpatient.ItemID;
+    DateRangeInpatient := cboDateRangeInpatient.ItemID;
+  end;
+end;
+
+procedure TfrmGraphSettings.ChangeSources(DisplaySource: TStrings);
+var
+  needtoadd: boolean;
+  i, j : integer;
+  filename, filenum, dsitem, dsnum: string;
+begin
+  with lstSources do
+  begin
+    for i := 0 to Items.Count - 1 do
+    begin
+      needtoadd := false;
+      if Checked[i] then
+        needtoadd := true;
+      filename := Piece(lstSourcesCopy.Items[i], '^', 1);
+      filenum := Piece(lstSourcesCopy.Items[i], '^', 2);
+      for j := 0 to DisplaySource.Count - 1 do
+      begin
+        dsitem := DisplaySource[j];
+        dsnum := Piece(dsitem, '^', 1);
+        if filenum = dsnum then
+        begin
+          needtoadd := false;
+          if Checked[i] then
+            DisplaySource[j] := filenum + '^' + filename + '^1'
+          else
+            DisplaySource[j] := filenum + '^' + filename + '^0';
+          break;
+        end;
+      end;
+      if needtoadd then
+        DisplaySource.Add('*^' + filenum + '^' + filename + '^1');
+    end;
+  end;
+end;
+
+procedure TfrmGraphSettings.Conversion(conv: integer);
+begin
+  if conv = BIG_NUMBER then
+  begin
+    lblOptionsInfo.Visible := true;
+    frmGraphSettings.Caption := 'Graph Settings - Defaults Only';
+    lblConversions.Enabled := false;
+    cboConversions.Enabled := false;
+    cboConversions.ItemIndex := 0;
+    cboConversions.Text := '';
+  end
+  else
+  with cboConversions do
+  begin
+    lblOptionsInfo.Visible := false;
+    frmGraphSettings.Caption := 'Graph Settings';
+    if btnPublicSave.Enabled = true then
+    begin
+      lblConversions.Enabled := true;
+      Enabled := true;
+      ItemIndex := conv;
+      Text := Items[ItemIndex];
+    end
+    else
+    begin
+      lblConversions.Enabled := false;
+      cboConversions.Enabled := false;
+      cboConversions.ItemIndex := 0;
+      cboConversions.Text := '';
+    end;
+  end;
+end;
+
+procedure TfrmGraphSettings.SetSettings(aGraphSetting: TGraphSetting);
+var
+  i : integer;
+  value: string;
+begin
+  with aGraphSetting do
+  begin
+    OptionSettings := '';
+    if Values then OptionSettings := OptionSettings + SETTING_VALUES;
+    if VerticalZoom then OptionSettings := OptionSettings + SETTING_VZOOM;
+    if HorizontalZoom then OptionSettings := OptionSettings + SETTING_HZOOM;
+    if View3D then OptionSettings := OptionSettings + SETTING_3D;
+    if Legend then OptionSettings := OptionSettings + SETTING_LEGEND;
+    if Lines then OptionSettings := OptionSettings + SETTING_LINES;
+    if Dates then OptionSettings := OptionSettings + SETTING_DATES;
+    if SortByType then OptionSettings := OptionSettings + SETTING_SORT;
+    if ClearBackground then OptionSettings := OptionSettings + SETTING_CLEAR;
+    if Gradient then OptionSettings := OptionSettings + SETTING_GRADIENT;
+    if Hints then OptionSettings := OptionSettings + SETTING_HINTS;
+    if StayOnTop then OptionSettings := OptionSettings + SETTING_TOP;
+    if FixedDateRange then OptionSettings := OptionSettings + SETTING_FIXED;
+    spnMaxGraphs.Position := MaxGraphs;
+    spnMinGraphHeight.Position := MinGraphHeight;
+    MaxSelect := Min(MaxSelectMax, MaxSelect);
+    if MaxSelect < MaxSelectMin then
+      MaxSelect := MaxSelectMin;
+    spnMaxSelect.Position := MaxSelect;
+    spnMaxSelect.Min := MaxSelectMin;
+    spnMaxSelect.Max := MaxSelectMax;
+    cboDateRangeOutpatient.SelectByID(GetDefaultOutpatientDate);
+    cboDateRangeInpatient.SelectByID(GetDefaultInpatientDate);
+    if SortByType then SortColumn := 1 else SortColumn := 0;
+    lstOptions.Tag := SortColumn;
+    if (SortColumn > 0) then
+      if Pos(SETTING_SORT, OptionSettings) = 0 then
+        OptionSettings := OptionSettings + SETTING_SORT;
+    if Turbo then OptionSettings := OptionSettings + SETTING_TURBO;
+    if GraphPublicEditor or GraphTurboOn then
+    begin
+      lstOptions.Items.Add('Turbo^N');
+      chklstOptions.Items.Add('Turbo');
+    end;
+    for i := 0 to lstOptions.Items.Count - 1 do
+    begin
+      value := Piece(lstOptions.Items[i], '^', 2);
+      chklstOptions.Checked[i] := Pos(value, OptionSettings) > 0;
+    end;
+  end;
+end;
+
+procedure TfrmGraphSettings.SetSources(aList, DisplaySource: TStrings);
+var
+  i, j : integer;
+  listitem, filenum, filename, dsitem, dsnum, dsdisplay: string;
+begin
+  with lstSources.Items do
+  begin
+    Clear;
+    lstSourcesCopy.Items.Clear;
+    for i := 0 to aList.Count - 1 do
+    begin
+      listitem := aList[i];
+      filenum := Piece(listitem, '^', 1);
+      filename := Piece(listitem, '^', 2);
+      Add(filename);
+      lstSourcesCopy.Items.Add(filename + '^' + filenum);
+    end;
+    with lstSourcesCopy do
+    for i := 0 to Items.Count - 1 do
+    begin
+      listitem := Items[i];
+      filenum := Piece(listitem, '^', 2);
+      for j := 0 to DisplaySource.Count - 1 do
+      begin
+        dsitem := DisplaySource[j];
+        dsnum := Piece(dsitem, '^', 1);
+        dsdisplay := Piece(dsitem, '^', 3);
+        if filenum = dsnum then
+        begin
+          if dsdisplay = '1' then
+            lstSources.Checked[i] := true;
+          break;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphSettings.GetTypeList(aList: TStrings);
+var
+  i : integer;
+  dfntype, listline : string;
+begin
+  FastAssign(GtslAllTypes, aList);
+  for i := 0 to aList.Count -1 do
+  begin
+    listline := aList[i];
+    dfntype := UpperCase(Piece(listline, '^', 1));
+    SetPiece(listline, '^', 1, dfntype);
+    aList[i] := listline;
+  end;
+end;
+
+function FileNameX(filenum: string): string;
+var
+  i: integer;
+  typestring: string;
+  AllTypes: TStrings;
+begin
+  Result := '';
+  Alltypes := TStringList.Create;
+  for i := 0 to AllTypes.Count - 1 do
+  begin
+    typestring := AllTypes[i];
+    if Piece(typestring, '^', 1) = filenum then
+    begin
+      Result := Piece(AllTypes[i], '^', 2);
+      break;
+    end;
+  end;
+  if Result = '' then
+  begin
+    for i := 0 to AllTypes.Count - 1 do
+    begin
+      typestring := AllTypes[i];
+      if lowercase(Piece(typestring, '^', 1)) = filenum then
+      begin
+        Result := Piece(AllTypes[i], '^', 2);
+        break;
+      end;
+    end;
+  end;
+  Alltypes.Free;  
+end;
+
+procedure TfrmGraphSettings.FormCreate(Sender: TObject);
+var
+  i: integer;
+begin
+  btnPublicSave.Enabled := GraphPublicEditor;
+  lblConversions.Enabled := btnPublicSave.Enabled;
+  cboConversions.Enabled := btnPublicSave.Enabled;
+  for i := 0 to lstOptions.Items.Count - 1 do
+   chklstOptions.Items.Add(Piece(lstOptions.Items[i], '^', 1));
+end;
+
+procedure TfrmGraphSettings.btnAllClick(Sender: TObject);
+var
+  i: integer;
+begin
+  for i := 0 to lstSources.Count - 1 do
+    lstSources.Checked[i] := (Sender = btnAll);
+end;
+
+procedure TfrmGraphSettings.btnCloseClick(Sender: TObject);
+begin
+  btnClose.Tag := 1; // forces check for changes
+  btnClose.Hint := DisplaySettings;
+  Close;
+end;
+
+function TfrmGraphSettings.DisplaySettings: string;
+var
+  i: integer;
+  delim, settings, value: string;
+begin
+  settings := '';
+  delim := '';
+  for i := 0 to lstSourcesCopy.Items.Count - 1 do
+  if lstSources.Checked[i] then
+  begin
+    settings := settings + delim + Piece(lstSourcesCopy.Items[i], '^', 2);
+    delim := ';';
+  end;
+  settings := settings + '|';
+  delim := '';
+  for i := 0 to chklstOptions.Items.Count - 1 do
+  begin
+    value := '';
+    if chklstOptions.Checked[i] then value := Piece(lstOptions.Items[i], '^', 2);
+    settings := settings + value;
+  end;
+  settings := settings + '|' + inttostr(lstOptions.Tag);  // sortorder
+  settings := settings + '|';
+  settings := settings + txtMaxGraphs.Text + '|';
+  settings := settings + txtMinGraphHeight.Text + '|';
+  settings := settings + '|';     // not used
+  settings := settings + txtMaxSelect.Text + '|';
+  settings := settings + Piece(btnPublic.Hint, '|', 8) + '|';
+  settings := settings + cboDateRangeOutpatient.ItemID + '|';
+  settings := settings + cboDateRangeInpatient.ItemID + '|';
+  Result := settings;
+end;
+
+procedure TfrmGraphSettings.btnPublicClick(Sender: TObject);
+var
+  i, j, k: integer;
+  dfntype, filename, settings, settings1, settings2, value: string;
+begin
+  if Sender = btnPublic then
+    settings := btnPublic.Hint
+  else
+    settings := btnPersonal.Hint;
+  settings1 := Piece(settings, '|', 1);
+  settings2 := Piece(settings, '|', 2);  //piece 3 not used
+  spnMaxGraphs.Position := strtointdef(Piece(settings, '|', 4), 5);
+  spnMinGraphHeight.Position := strtointdef(Piece(settings, '|', 5), 90);  //piece 6 not used
+  spnMaxSelect.Position := strtointdef(Piece(settings, '|', 7), 100);
+  spnMaxSelect.Max := strtointdef(Piece(settings, '|', 8), 1000);
+  spnMaxGraphs.Tag := spnMaxGraphs.Position;
+  spnMinGraphHeight.Tag := spnMinGraphHeight.Position;
+  spnMaxSelect.Tag := spnMaxSelect.Position;
+  cboDateRangeOutpatient.SelectByID(Piece(settings, '|', 9));
+  cboDateRangeInpatient.SelectByID(Piece(settings, '|', 10));
+  for i := 0 to lstOptions.Items.Count - 1 do
+  begin
+    value := Piece(lstOptions.Items[i], '^', 2);
+    chklstOptions.Checked[i] := Pos(value, settings2) > 0;
+  end;
+  for i := 0 to lstSources.Items.Count -1 do
+    lstSources.Checked[i] := false;
+  for i := 0 to BIG_NUMBER do
+  begin
+    dfntype := Piece(settings1, ';', i);
+    if length(dfntype) = 0 then break;
+    for j := 0 to lstSourcesCopy.Items.Count - 1 do
+    if dfntype = Piece(lstSourcesCopy.Items[j], '^', 2) then
+    begin
+      filename := Piece(lstSourcesCopy.Items[j], '^', 1);
+      for k := 0 to lstSources.Items.Count - 1 do
+        if filename = lstSources.Items[k] then
+        begin
+          lstSources.Checked[k] := true;
+          break;
+        end;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphSettings.chklstOptionsClickCheck(Sender: TObject);
+var
+  value: string;
+begin
+  with chklstOptions do
+  begin
+    value := Piece(lstOptions.Items[ItemIndex], '^', 2);
+    if State[ItemIndex] = cbChecked then
+      if value = SETTING_CLEAR then
+        CheckSetting(SETTING_GRADIENT, false)
+      else if value = SETTING_GRADIENT then
+        CheckSetting(SETTING_CLEAR, false)
+      else if value = SETTING_VZOOM then
+        CheckSetting(SETTING_HZOOM, true);
+    if State[ItemIndex] = cbUnchecked then
+      if value = SETTING_HZOOM then
+        CheckSetting(SETTING_VZOOM, false);
+  end;
+end;
+
+procedure TfrmGraphSettings.CheckSetting(setting: string; turnon: boolean);
+var
+  i: integer;
+  value: string;
+begin
+  for i := 0 to lstOptions.Items.Count -1 do
+  begin
+    value := Piece(lstOptions.Items[i], '^', 2);
+    if value = setting then
+    begin
+      chklstOptions.Checked[i] := turnon;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphSettings.SaveClick(Sender: TObject);
+var
+  info, settings: string;
+begin
+  if (Sender = btnPublicSave) then
+    info := 'This will change the PUBLIC default to these settings.'
+  else if (Sender = btnPersonalSave) then
+    info := 'This will change your personal default to these settings.';
+  info := info + #13 + 'Is this what you want to do?';
+  if MessageDlg(info, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
+  begin
+    ShowMsg('No changes were made.');
+    exit;
+  end;
+  settings := DisplaySettings;
+  if (Sender = btnPersonalSave) then
+  begin
+    rpcSetGraphSettings(settings, '0');
+    btnPersonal.Hint := settings;
+  end;
+  if (Sender = btnPublicSave) then
+  begin
+    rpcSetGraphSettings(settings, '1');
+    btnPublic.Hint := settings;
+  end;
+  if length(btnPersonal.Hint) > 0 then
+  begin
+    SetDefaultInpatientDate(Piece(btnPersonal.Hint, '|', 10));
+    SetDefaultOutpatientDate(Piece(btnPersonal.Hint, '|', 9));
+  end
+  else
+  begin
+    SetDefaultInpatientDate(Piece(btnPublic.Hint, '|', 10));
+    SetDefaultOutpatientDate(Piece(btnPublic.Hint, '|', 9));
+  end;
+end;
+
+procedure TfrmGraphSettings.spnMaxGraphsClick(Sender: TObject;
+  Button: TUDBtnType);
+begin
+  //txtMaxGraphs.SetFocus;
+  txtMaxGraphs.Tag := strtointdef(txtMaxGraphs.Text, spnMaxGraphs.Min);
+end;
+
+procedure TfrmGraphSettings.txtMaxGraphsChange(Sender: TObject);
+var
+  maxvalue, minvalue: integer;
+begin
+  maxvalue := spnMaxGraphs.Max;
+  minvalue := spnMaxGraphs.Min;
+  if strtointdef(txtMaxGraphs.Text, maxvalue) > maxvalue then
+  begin
+    beep;
+    InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
+    if strtointdef(txtMaxGraphs.Text, 0) > maxvalue then
+      txtMaxGraphs.Text := inttostr(maxvalue);
+  end;
+  if strtointdef(txtMaxGraphs.Text, minvalue) < minvalue then
+  begin
+    beep;
+    InfoBox('Number must be > ' + inttostr(minvalue), 'Warning', MB_OK or MB_ICONWARNING);
+    if strtointdef(txtMaxGraphs.Text, 0) < minvalue then
+      txtMaxGraphs.Text := inttostr(minvalue);
+  end;
+  spnMaxGraphsClick(self, btNext);
+end;
+
+procedure TfrmGraphSettings.txtMaxGraphsExit(Sender: TObject);
+begin
+  with txtMaxGraphs do
+  if Text = '' then
+  begin
+    Text := inttostr(spnMaxGraphs.Min);
+    spnMaxGraphsClick(self, btNext);
+  end
+  else if (copy(Text, 1, 1) = '0') and (length(Text) > 1) then
+  begin
+    Text := inttostr(strtointdef(Text, 0));
+    if Text = '0' then
+      Text := inttostr(spnMaxGraphs.Min);
+    spnMaxGraphsClick(self, btNext);
+  end;
+end;
+
+procedure TfrmGraphSettings.txtMaxGraphsKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if not (Key in ['0'..'9', #8]) then
+  begin
+    Key := #0;
+    beep;
+  end;
+end;
+
+procedure TfrmGraphSettings.spnMinGraphHeightClick(Sender: TObject;
+  Button: TUDBtnType);
+begin
+  //txtMinGraphHeight.SetFocus;
+  txtMinGraphHeight.Tag := strtointdef(txtMinGraphHeight.Text, spnMinGraphHeight.Min);
+end;
+
+procedure TfrmGraphSettings.spnMaxSelectClick(Sender: TObject;
+  Button: TUDBtnType);
+begin
+  //txtMaxSelect.SetFocus;
+  txtMaxSelect.Tag := strtointdef(txtMaxSelect.Text, spnMaxSelect.Min);
+end;
+
+procedure TfrmGraphSettings.txtMinGraphHeightChange(Sender: TObject);
+var
+  maxvalue, minvalue: integer;
+begin
+  maxvalue := spnMinGraphHeight.Max;
+  minvalue := spnMinGraphHeight.Min;
+  if strtointdef(txtMinGraphHeight.Text, maxvalue) > maxvalue then
+  begin
+    beep;
+    InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
+    if strtointdef(txtMinGraphHeight.Text, 0) > maxvalue then
+      txtMinGraphHeight.Text := inttostr(maxvalue);
+  end;
+  if strtointdef(txtMinGraphHeight.Text, minvalue) < minvalue then
+    if txtMinGraphHeight.Hint = KEYPRESS_OFF then
+    begin
+      beep;
+      InfoBox('Number must be > ' + inttostr(minvalue), 'Warning', MB_OK or MB_ICONWARNING);
+      if strtointdef(txtMinGraphHeight.Text, 0) < minvalue then
+        txtMinGraphHeight.Text := inttostr(minvalue);
+    end;
+  spnMinGraphHeightClick(self, btNext);
+  txtMinGraphHeight.Hint := KEYPRESS_OFF;
+end;
+
+procedure TfrmGraphSettings.txtMaxSelectChange(Sender: TObject);
+var
+  maxvalue, minvalue: integer;
+begin
+  maxvalue := spnMaxSelect.Max;
+  minvalue := spnMaxSelect.Min;
+  if strtointdef(txtMaxSelect.Text, maxvalue) > maxvalue then
+  begin
+    beep;
+    InfoBox('Number must be < ' + inttostr(maxvalue), 'Warning', MB_OK or MB_ICONWARNING);
+    if strtointdef(txtMaxSelect.Text, 0) > maxvalue then
+      txtMaxSelect.Text := inttostr(maxvalue);
+  end;
+  if strtointdef(txtMaxSelect.Text, minvalue) < minvalue then
+    if txtMaxSelect.Hint = KEYPRESS_OFF then
+    begin
+      beep;
+      InfoBox('Number must be > ' + inttostr(minvalue), 'Warning', MB_OK or MB_ICONWARNING);
+      if strtointdef(txtMaxSelect.Text, 0) < minvalue then
+        txtMaxSelect.Text := inttostr(minvalue);
+    end;
+  spnMaxSelectClick(self, btNext);
+  txtMaxSelect.Hint := KEYPRESS_OFF;
+end;
+
+procedure TfrmGraphSettings.txtMinGraphHeightExit(Sender: TObject);
+begin
+  with txtMinGraphHeight do
+  if Text = '' then
+  begin
+    Text := inttostr(spnMinGraphHeight.Min);
+    spnMinGraphHeightClick(self, btNext);
+  end
+  else if (copy(Text, 1, 1) = '0') and (length(Text) > 1) then
+  begin
+    Text := inttostr(strtointdef(Text, 0));
+    if Text = '0' then
+      Text := inttostr(spnMinGraphHeight.Min);
+    spnMinGraphHeightClick(self, btNext);
+  end
+  else if strtointdef(txtMinGraphHeight.Text, spnMinGraphHeight.Min) < spnMinGraphHeight.Min then
+  begin
+    Text := inttostr(spnMinGraphHeight.Min);
+    spnMinGraphHeightClick(self, btNext);
+  end;
+end;
+
+procedure TfrmGraphSettings.txtMaxSelectExit(Sender: TObject);
+begin
+  with txtMaxSelect do
+  if Text = '' then
+  begin
+    Text := inttostr(spnMaxSelect.Min);
+    spnMaxSelectClick(self, btNext);
+  end
+  else if (copy(Text, 1, 1) = '0') and (length(Text) > 1) then
+  begin
+    Text := inttostr(strtointdef(Text, 0));
+    if Text = '0' then
+      Text := inttostr(spnMaxSelect.Min);
+    spnMaxSelectClick(self, btNext);
+  end
+  else if strtointdef(txtMaxSelect.Text, spnMaxSelect.Min) < spnMaxSelect.Min then
+  begin
+    Text := inttostr(spnMaxSelect.Min);
+    spnMaxSelectClick(self, btNext);
+  end;
+end;
+
+procedure TfrmGraphSettings.txtMinGraphHeightKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  txtMinGraphHeight.Hint := KEYPRESS_OFF;
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if not (Key in ['0'..'9', #8]) then
+  begin
+    Key := #0;
+    beep;
+    exit;
+  end;
+  txtMinGraphHeight.Hint := KEYPRESS_ON;
+end;
+
+procedure TfrmGraphSettings.txtMaxSelectKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  txtMaxSelect.Hint := KEYPRESS_OFF;
+  if Key = #13 then
+  begin
+    Perform(WM_NextDlgCtl, 0, 0);
+    exit;
+  end;
+  if not (Key in ['0'..'9', #8]) then
+  begin
+    Key := #0;
+    beep;
+    exit;
+  end;
+  txtMaxSelect.Hint := KEYPRESS_ON;
+end;
+
+procedure TfrmGraphSettings.FormShow(Sender: TObject);
+begin
+  //if Caption = 'Graph Settings - Defaults Only' then
+  //  btnPersonal.SetFocus;
+  FHintPauseTime := Application.HintHidePause;
+  Application.HintHidePause := 9000; // uses a longer hint pause time
+end;
+
+procedure TfrmGraphSettings.AssignHints;
+var
+  i: integer;
+begin                       // text defined in uGraphs
+  for i := 0 to ControlCount - 1 do with Controls[i] do
+    Controls[i].ShowHint := true;
+  lblSources.Hint := SHINT_SOURCES;
+  lstSources.Hint := SHINT_SOURCES;
+  lblOptions.Hint := SHINT_OPTIONS;
+  chklstOptions.Hint := SHINT_OPTIONS;
+  btnAll.Hint := SHINT_BTN_ALL;
+  brnClear.Hint := SHINT_BTN_CLEAR;
+  lblShow.Hint := SHINT_BTN_SHOW;
+  lblSave.Hint := SHINT_BTN_SAVE;
+  btnPersonal.Hint := SHINT_BTN_PER;
+  btnPersonalSave.Hint := SHINT_BTN_PERSAVE;
+  btnPublic.Hint := SHINT_BTN_PUB;
+  btnPublicSave.Hint := SHINT_BTN_PUBSAVE;
+  lblOptionsInfo.Hint := SHINT_BTN_CLOSE;
+  btnClose.Hint := SHINT_BTN_CLOSE;
+  lblMaxGraphs.Hint := SHINT_MAX;
+  txtMaxGraphs.Hint := SHINT_MAX;
+  spnMaxGraphs.Hint := SHINT_MAX;
+  lblMaxGraphsRef.Hint := SHINT_MAX ;
+  lblMinGraphHeight.Hint := SHINT_MIN;
+  txtMinGraphHeight.Hint := SHINT_MIN;
+  spnMinGraphHeight.Hint := SHINT_MIN;
+  lblMinGraphHeightRef.Hint := SHINT_MIN;
+  lblMaxSelect.Hint := SHINT_MAX_ITEMS;
+  txtMaxSelect.Hint := SHINT_MAX_ITEMS;
+  spnMaxSelect.Hint := SHINT_MAX_ITEMS;
+  lblMaxSelectRef.Hint := SHINT_MAX_ITEMS;
+  lblOutpatient.Hint := SHINT_OUTPT;
+  cboDateRangeOutpatient.Hint := SHINT_OUTPT;
+  lblInpatient.Hint := SHINT_INPT;
+  cboDateRangeInpatient.Hint := SHINT_INPT;
+  lblConversions.Hint := SHINT_FUNCTIONS;
+  cboConversions.Hint := SHINT_FUNCTIONS;
+end;
+
+procedure TfrmGraphSettings.wmNCLButtonDown(var Msg: TWMNCLButtonDown);
+begin            // clicking the ? button will have controls show hints
+  if Msg.HitTest = HTHELP then
+  begin
+    Msg.Result := 0; // ignore biHelp border icon
+    AssignHints;
+    ShowMsg('Help is now available.' + #13 +
+                'By pausing over a list or control, hints will appear.');
+  end
+  else
+    inherited;
+end;
+
+procedure TfrmGraphSettings.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Application.HintHidePause := FHintPauseTime;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphs.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphs.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphs.dfm	(revision 1676)
@@ -0,0 +1,1302 @@
+inherited frmGraphs: TfrmGraphs
+  Left = 265
+  Top = 279
+  BorderIcons = []
+  BorderStyle = bsNone
+  Caption = 'CPRS Graphing - CPRSpatient,One'
+  ClientHeight = 400
+  ClientWidth = 592
+  PopupMenu = mnuPopGraphStuff
+  Position = poDesigned
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  ExplicitLeft = 265
+  ExplicitTop = 279
+  ExplicitWidth = 600
+  ExplicitHeight = 427
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlHeader: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 592
+    Height = 21
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object pnlTemp: TPanel
+      Left = 416
+      Top = 0
+      Width = 73
+      Height = 17
+      TabOrder = 1
+      Visible = False
+    end
+    object pnlInfo: TORAutoPanel
+      Left = 0
+      Top = 0
+      Width = 592
+      Height = 21
+      Align = alClient
+      BevelOuter = bvNone
+      Caption = 'Select multiple items using Ctrl-click or Shift-click.'
+      Color = clCream
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 2
+    end
+    object chartBase: TChart
+      Left = 146
+      Top = -2
+      Width = 105
+      Height = 17
+      AllowPanning = pmNone
+      AllowZoom = False
+      BackWall.Brush.Color = clWhite
+      BackWall.Brush.Style = bsClear
+      Gradient.EndColor = clPurple
+      Gradient.Visible = True
+      Title.Text.Strings = (
+        'fsdfs dfs fsd')
+      Title.Visible = False
+      OnClickLegend = chartBaseClickLegend
+      OnClickSeries = chartBaseClickSeries
+      OnUndoZoom = ChartOnUndoZoom
+      OnZoom = ChartOnZoom
+      BottomAxis.Automatic = False
+      BottomAxis.AutomaticMaximum = False
+      BottomAxis.AutomaticMinimum = False
+      BottomAxis.Increment = 0.000694444444444444
+      BottomAxis.Maximum = 25.000000000000000000
+      BottomAxis.Visible = False
+      Legend.Alignment = laTop
+      Legend.LegendStyle = lsSeries
+      Legend.ResizeChart = False
+      TopAxis.LabelsOnAxis = False
+      View3D = False
+      Color = clRed
+      TabOrder = 0
+      Visible = False
+      OnDblClick = mnuPopGraphDetailsClick
+      OnMouseDown = chartBaseMouseDown
+      OnMouseUp = chartBaseMouseUp
+    end
+  end
+  object pnlFooter: TPanel [1]
+    Left = 0
+    Top = 371
+    Width = 592
+    Height = 29
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    object lblDateRange: TLabel
+      Left = 3
+      Top = 8
+      Width = 61
+      Height = 13
+      Caption = 'Date Range:'
+    end
+    object btnClose: TButton
+      Left = 510
+      Top = 4
+      Width = 70
+      Height = 21
+      Caption = 'Close'
+      TabOrder = 4
+      OnClick = btnCloseClick
+    end
+    object btnChangeSettings: TButton
+      Left = 380
+      Top = 4
+      Width = 85
+      Height = 21
+      Caption = 'Settings...'
+      TabOrder = 3
+      OnClick = btnChangeSettingsClick
+    end
+    object cboDateRange: TORComboBox
+      Left = 70
+      Top = 6
+      Width = 121
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 9
+      Items.Strings = (
+        'S^Date Range...'
+        '1^Today'
+        '2^One Week'
+        '3^Two Weeks'
+        '4^One Month'
+        '5^Six Months'
+        '6^One Year'
+        '7^Two Years'
+        '8^All Results')
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      TabStop = True
+      OnChange = cboDateRangeChange
+      OnDropDown = cboDateRangeDropDown
+      CharsNeedMatch = 1
+    end
+    object chkDualViews: TCheckBox
+      Left = 197
+      Top = 7
+      Width = 85
+      Height = 17
+      Caption = 'Split Views'
+      TabOrder = 1
+      OnClick = chkDualViewsClick
+    end
+    object btnGraphSelections: TButton
+      Left = 288
+      Top = 4
+      Width = 85
+      Height = 21
+      Caption = 'Select/Define...'
+      TabOrder = 2
+      OnClick = btnGraphSelectionsClick
+    end
+  end
+  object pnlMain: TPanel [2]
+    Left = 0
+    Top = 21
+    Width = 592
+    Height = 350
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    object splGraphs: TSplitter
+      Left = 0
+      Top = 249
+      Width = 592
+      Height = 3
+      Cursor = crVSplit
+      Align = alBottom
+      Beveled = True
+      Color = clBtnShadow
+      ParentColor = False
+      OnMoved = splGraphsMoved
+      ExplicitTop = 261
+    end
+    object pnlTop: TPanel
+      Tag = 1
+      Left = 0
+      Top = 0
+      Width = 592
+      Height = 249
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object splItemsTop: TSplitter
+        Left = 148
+        Top = 0
+        Width = 2
+        Height = 249
+        AutoSnap = False
+        Beveled = True
+        MinSize = 15
+        OnMoved = splItemsTopMoved
+        ExplicitHeight = 261
+      end
+      object pnlItemsTop: TPanel
+        Left = 0
+        Top = 0
+        Width = 148
+        Height = 249
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 0
+        object pnlItemsTopInfo: TPanel
+          Left = 0
+          Top = 0
+          Width = 148
+          Height = 22
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 0
+          DesignSize = (
+            148
+            22)
+          object bvlBottomLeft: TBevel
+            Left = 0
+            Top = 0
+            Width = 2
+            Height = 22
+            Align = alLeft
+            ExplicitHeight = 25
+          end
+          object bvlBottomRight: TBevel
+            Left = 146
+            Top = 0
+            Width = 2
+            Height = 22
+            Align = alRight
+            Visible = False
+            ExplicitHeight = 25
+          end
+          object chkItemsTop: TCheckBox
+            Left = 40
+            Top = 2
+            Width = 105
+            Height = 20
+            Alignment = taLeftJustify
+            Anchors = [akTop, akRight]
+            Caption = 'Individual Graphs'
+            Checked = True
+            State = cbChecked
+            TabOrder = 0
+            OnClick = chkItemsTopClick
+          end
+        end
+        object pcTop: TPageControl
+          Left = 0
+          Top = 22
+          Width = 148
+          Height = 227
+          ActivePage = tsTopItems
+          Align = alClient
+          TabOrder = 1
+          object tsTopItems: TTabSheet
+            Caption = 'Items'
+            object lvwItemsTop: TListView
+              Left = 0
+              Top = 0
+              Width = 140
+              Height = 199
+              Align = alClient
+              BevelInner = bvNone
+              BevelOuter = bvNone
+              Columns = <
+                item
+                  Caption = 'Item'
+                  Width = 100
+                end
+                item
+                  Caption = 'Type'
+                  Width = 60
+                end
+                item
+                  Caption = 'View'
+                  Width = 40
+                end
+                item
+                  Caption = 'Classification'
+                end
+                item
+                  Caption = 'Remote Location'
+                  Width = 150
+                end>
+              HideSelection = False
+              MultiSelect = True
+              ReadOnly = True
+              RowSelect = True
+              ParentShowHint = False
+              ShowHint = False
+              TabOrder = 0
+              ViewStyle = vsReport
+              OnChange = lvwItemsTopChange
+              OnClick = lvwItemsTopClick
+              OnColumnClick = lvwItemsTopColumnClick
+              OnCompare = lvwItemsTopCompare
+              OnEnter = lvwItemsTopEnter
+              OnKeyDown = lvwItemsTopKeyDown
+            end
+          end
+          object tsTopViews: TTabSheet
+            Caption = 'Views'
+            ImageIndex = 1
+            ExplicitLeft = 0
+            ExplicitTop = 0
+            ExplicitWidth = 0
+            ExplicitHeight = 0
+            object splViewsTop: TSplitter
+              Left = 0
+              Top = 196
+              Width = 140
+              Height = 2
+              Cursor = crVSplit
+              Align = alBottom
+              OnMoved = splViewsTopMoved
+              ExplicitTop = 149
+            end
+            object lstViewsTop: TORListBox
+              Left = 0
+              Top = 0
+              Width = 140
+              Height = 196
+              Align = alClient
+              ItemHeight = 13
+              ParentShowHint = False
+              ShowHint = False
+              TabOrder = 0
+              OnEnter = lstViewsTopEnter
+              OnMouseDown = lstViewsTopMouseDown
+              ItemTipColor = clWindow
+              LongList = False
+              Pieces = '2'
+              OnChange = lstViewsTopChange
+            end
+            object memViewsTop: TRichEdit
+              Left = 0
+              Top = 198
+              Width = 140
+              Height = 1
+              Align = alBottom
+              Color = clCream
+              Font.Charset = ANSI_CHARSET
+              Font.Color = clWindowText
+              Font.Height = -11
+              Font.Name = 'Courier New'
+              Font.Style = []
+              Lines.Strings = (
+                'View Definition')
+              ParentFont = False
+              PlainText = True
+              ReadOnly = True
+              ScrollBars = ssBoth
+              TabOrder = 1
+              WantReturns = False
+              WordWrap = False
+            end
+          end
+          object tsTopCustom: TTabSheet
+            Caption = 'Custom'
+            ImageIndex = 2
+            ExplicitLeft = 0
+            ExplicitTop = 0
+            ExplicitWidth = 0
+            ExplicitHeight = 0
+          end
+        end
+      end
+      object pnlTopRightPad: TPanel
+        Tag = 50
+        Left = 577
+        Top = 0
+        Width = 15
+        Height = 249
+        Align = alRight
+        BevelOuter = bvNone
+        TabOrder = 1
+      end
+      object pnlScrollTopBase: TPanel
+        Left = 150
+        Top = 0
+        Width = 426
+        Height = 249
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 2
+        OnResize = pnlScrollTopBaseResize
+        object pnlBlankTop: TPanel
+          Left = 0
+          Top = 0
+          Width = 426
+          Height = 219
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 2
+          Visible = False
+        end
+        object scrlTop: TScrollBox
+          Tag = 5
+          Left = 0
+          Top = 0
+          Width = 426
+          Height = 219
+          Align = alClient
+          BevelInner = bvNone
+          BevelOuter = bvNone
+          BorderStyle = bsNone
+          Color = clBtnFace
+          ParentColor = False
+          TabOrder = 0
+        end
+        object pnlDatelineTop: TPanel
+          Left = 0
+          Top = 219
+          Width = 426
+          Height = 30
+          Align = alBottom
+          BevelOuter = bvNone
+          TabOrder = 1
+          object chartDatelineTop: TChart
+            Left = 20
+            Top = 0
+            Width = 406
+            Height = 30
+            AllowPanning = pmNone
+            BackWall.Brush.Color = clWhite
+            BackWall.Brush.Style = bsClear
+            BackWall.Pen.Visible = False
+            Gradient.EndColor = clWhite
+            Gradient.StartColor = 8421631
+            Title.Text.Strings = (
+              '')
+            Title.Visible = False
+            OnClickLegend = chartBaseClickLegend
+            OnClickSeries = chartBaseClickSeries
+            OnUndoZoom = ChartOnUndoZoom
+            OnZoom = ChartOnZoom
+            BottomAxis.Automatic = False
+            BottomAxis.AutomaticMaximum = False
+            BottomAxis.AutomaticMinimum = False
+            BottomAxis.DateTimeFormat = 'M/d/yyyy'
+            BottomAxis.Increment = 0.000694444444444444
+            BottomAxis.Maximum = 25.000000000000000000
+            Frame.Visible = False
+            LeftAxis.Automatic = False
+            LeftAxis.AutomaticMaximum = False
+            LeftAxis.AutomaticMinimum = False
+            LeftAxis.Axis.Visible = False
+            LeftAxis.Grid.Visible = False
+            LeftAxis.Labels = False
+            LeftAxis.LabelsOnAxis = False
+            LeftAxis.Maximum = 9.000000000000000000
+            LeftAxis.MinorGrid.Visible = True
+            LeftAxis.RoundFirstLabel = False
+            LeftAxis.Title.Caption = ' '
+            LeftAxis.Visible = False
+            Legend.Alignment = laBottom
+            Legend.Color = clCream
+            Legend.LegendStyle = lsSeries
+            Legend.ShadowSize = 1
+            Legend.Visible = False
+            RightAxis.Automatic = False
+            RightAxis.AutomaticMaximum = False
+            RightAxis.AutomaticMinimum = False
+            RightAxis.Axis.Visible = False
+            RightAxis.Labels = False
+            RightAxis.LabelsOnAxis = False
+            RightAxis.RoundFirstLabel = False
+            RightAxis.Visible = False
+            TopAxis.LabelsOnAxis = False
+            View3D = False
+            View3DWalls = False
+            Align = alClient
+            BevelOuter = bvNone
+            TabOrder = 0
+            OnDblClick = mnuPopGraphDetailsClick
+            OnMouseDown = chartBaseMouseDown
+            OnMouseUp = chartBaseMouseUp
+            object serDatelineTop: TGanttSeries
+              ColorEachPoint = True
+              Marks.ArrowLength = 0
+              Marks.Visible = False
+              SeriesColor = clRed
+              ShowInLegend = False
+              OnGetMarkText = serDatelineTopGetMarkText
+              Pointer.InflateMargins = False
+              Pointer.Style = psRectangle
+              Pointer.Visible = True
+              XValues.DateTime = True
+              XValues.Name = 'Start'
+              XValues.Multiplier = 1.000000000000000000
+              XValues.Order = loAscending
+              YValues.DateTime = False
+              YValues.Name = 'Y'
+              YValues.Multiplier = 1.000000000000000000
+              YValues.Order = loNone
+              StartValues.DateTime = True
+              StartValues.Name = 'Start'
+              StartValues.Multiplier = 1.000000000000000000
+              StartValues.Order = loAscending
+              EndValues.DateTime = True
+              EndValues.Name = 'End'
+              EndValues.Multiplier = 1.000000000000000000
+              EndValues.Order = loNone
+              NextTask.DateTime = False
+              NextTask.Name = 'NextTask'
+              NextTask.Multiplier = 1.000000000000000000
+              NextTask.Order = loNone
+            end
+          end
+          object pnlDatelineTopSpacer: TORAutoPanel
+            Left = 0
+            Top = 0
+            Width = 20
+            Height = 30
+            Align = alLeft
+            BevelOuter = bvNone
+            TabOrder = 1
+          end
+        end
+      end
+      object memTop: TMemo
+        Left = 576
+        Top = 0
+        Width = 1
+        Height = 249
+        Align = alRight
+        BevelInner = bvNone
+        BevelOuter = bvNone
+        BorderStyle = bsNone
+        Color = clBtnFace
+        Lines.Strings = (
+          'm'
+          'e'
+          'm'
+          'T'
+          'o'
+          'p')
+        TabOrder = 3
+        Visible = False
+        OnEnter = memTopEnter
+        OnExit = memTopExit
+        OnKeyDown = memTopKeyDown
+      end
+    end
+    object pnlBottom: TPanel
+      Tag = 1
+      Left = 0
+      Top = 252
+      Width = 592
+      Height = 98
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 1
+      object splItemsBottom: TSplitter
+        Left = 148
+        Top = 0
+        Width = 2
+        Height = 98
+        AutoSnap = False
+        Beveled = True
+        MinSize = 15
+        OnMoved = splItemsBottomMoved
+      end
+      object pnlItemsBottom: TPanel
+        Left = 0
+        Top = 0
+        Width = 148
+        Height = 98
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 0
+        object pnlItemsBottomInfo: TPanel
+          Left = 0
+          Top = 0
+          Width = 148
+          Height = 22
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 0
+          object bvlTopLeft: TBevel
+            Left = 0
+            Top = 0
+            Width = 2
+            Height = 22
+            Align = alLeft
+            ExplicitHeight = 25
+          end
+          object bvlTopRight: TBevel
+            Left = 146
+            Top = 0
+            Width = 2
+            Height = 22
+            Align = alRight
+            Visible = False
+            ExplicitHeight = 25
+          end
+          object chkItemsBottom: TCheckBox
+            Left = 39
+            Top = 2
+            Width = 105
+            Height = 20
+            Alignment = taLeftJustify
+            Caption = 'Individual Graphs'
+            Checked = True
+            State = cbChecked
+            TabOrder = 0
+            OnClick = chkItemsBottomClick
+            OnEnter = chkItemsBottomEnter
+          end
+        end
+        object pcBottom: TPageControl
+          Left = 0
+          Top = 22
+          Width = 148
+          Height = 76
+          ActivePage = tsBottomViews
+          Align = alClient
+          TabOrder = 1
+          object tsBottomItems: TTabSheet
+            Caption = 'Items'
+            ExplicitLeft = 0
+            ExplicitTop = 0
+            ExplicitWidth = 0
+            ExplicitHeight = 0
+            object lvwItemsBottom: TListView
+              Left = 0
+              Top = 0
+              Width = 140
+              Height = 48
+              Align = alClient
+              BevelInner = bvNone
+              BevelOuter = bvNone
+              Columns = <
+                item
+                  Caption = 'Item'
+                  Width = 100
+                end
+                item
+                  Caption = 'Type'
+                  Width = 60
+                end
+                item
+                  Caption = 'View'
+                  Width = 40
+                end
+                item
+                  Caption = 'Classification'
+                end
+                item
+                  Caption = 'Remote Location'
+                  Width = 150
+                end>
+              HideSelection = False
+              MultiSelect = True
+              ReadOnly = True
+              RowSelect = True
+              ParentShowHint = False
+              ShowHint = False
+              TabOrder = 0
+              ViewStyle = vsReport
+              OnChange = lvwItemsBottomChange
+              OnClick = lvwItemsBottomClick
+              OnColumnClick = lvwItemsBottomColumnClick
+              OnCompare = lvwItemsBottomCompare
+              OnEnter = lvwItemsBottomEnter
+              OnKeyDown = lvwItemsTopKeyDown
+            end
+          end
+          object tsBottomViews: TTabSheet
+            Caption = 'Views'
+            ImageIndex = 1
+            ExplicitLeft = 0
+            ExplicitTop = 0
+            ExplicitWidth = 0
+            ExplicitHeight = 0
+            object splViewsBottom: TSplitter
+              Left = 0
+              Top = 45
+              Width = 140
+              Height = 2
+              Cursor = crVSplit
+              Align = alBottom
+              OnMoved = splViewsTopMoved
+              ExplicitTop = 25
+            end
+            object lstViewsBottom: TORListBox
+              Left = 0
+              Top = 0
+              Width = 140
+              Height = 45
+              Align = alClient
+              ItemHeight = 13
+              ParentShowHint = False
+              ShowHint = False
+              TabOrder = 0
+              OnEnter = lstViewsBottomEnter
+              OnMouseDown = lstViewsBottomMouseDown
+              ItemTipColor = clWindow
+              LongList = False
+              Pieces = '2'
+              OnChange = lstViewsBottomChange
+            end
+            object memViewsBottom: TRichEdit
+              Left = 0
+              Top = 47
+              Width = 140
+              Height = 1
+              Align = alBottom
+              Color = clCream
+              Font.Charset = ANSI_CHARSET
+              Font.Color = clWindowText
+              Font.Height = -11
+              Font.Name = 'Courier New'
+              Font.Style = []
+              Lines.Strings = (
+                'View Definition')
+              ParentFont = False
+              PlainText = True
+              ReadOnly = True
+              ScrollBars = ssBoth
+              TabOrder = 1
+              WantReturns = False
+              WordWrap = False
+            end
+          end
+          object tsBottomCustom: TTabSheet
+            Caption = 'Custom'
+            ImageIndex = 2
+            ExplicitLeft = 0
+            ExplicitTop = 0
+            ExplicitWidth = 0
+            ExplicitHeight = 0
+          end
+        end
+      end
+      object pnlBottomRightPad: TPanel
+        Tag = 50
+        Left = 577
+        Top = 0
+        Width = 15
+        Height = 98
+        Align = alRight
+        BevelOuter = bvNone
+        TabOrder = 1
+      end
+      object pnlScrollBottomBase: TPanel
+        Left = 150
+        Top = 0
+        Width = 426
+        Height = 98
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 2
+        object pnlBlankBottom: TPanel
+          Left = 0
+          Top = 0
+          Width = 426
+          Height = 68
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 2
+          Visible = False
+        end
+        object pnlDatelineBottom: TPanel
+          Left = 0
+          Top = 68
+          Width = 426
+          Height = 30
+          Align = alBottom
+          BevelOuter = bvNone
+          TabOrder = 1
+          object chartDatelineBottom: TChart
+            Left = 20
+            Top = 0
+            Width = 406
+            Height = 30
+            AllowPanning = pmNone
+            BackWall.Brush.Color = clWhite
+            BackWall.Brush.Style = bsClear
+            BackWall.Pen.Visible = False
+            Gradient.EndColor = clGradientActiveCaption
+            Title.Text.Strings = (
+              '')
+            Title.Visible = False
+            OnClickLegend = chartBaseClickLegend
+            OnClickSeries = chartBaseClickSeries
+            OnUndoZoom = ChartOnUndoZoom
+            OnZoom = ChartOnZoom
+            BottomAxis.Automatic = False
+            BottomAxis.AutomaticMaximum = False
+            BottomAxis.AutomaticMinimum = False
+            BottomAxis.DateTimeFormat = 'M/d/yyyy'
+            BottomAxis.Increment = 0.000694444444444444
+            BottomAxis.Maximum = 25.000000000000000000
+            Frame.Visible = False
+            LeftAxis.Automatic = False
+            LeftAxis.AutomaticMaximum = False
+            LeftAxis.AutomaticMinimum = False
+            LeftAxis.Axis.Visible = False
+            LeftAxis.Grid.Visible = False
+            LeftAxis.Labels = False
+            LeftAxis.LabelsOnAxis = False
+            LeftAxis.Maximum = 9.000000000000000000
+            LeftAxis.MinorGrid.Visible = True
+            LeftAxis.RoundFirstLabel = False
+            LeftAxis.Title.Caption = ' '
+            Legend.Alignment = laBottom
+            Legend.Color = clCream
+            Legend.LegendStyle = lsSeries
+            Legend.ShadowSize = 1
+            Legend.Visible = False
+            RightAxis.Automatic = False
+            RightAxis.AutomaticMaximum = False
+            RightAxis.AutomaticMinimum = False
+            RightAxis.Axis.Visible = False
+            RightAxis.Labels = False
+            RightAxis.LabelsOnAxis = False
+            RightAxis.RoundFirstLabel = False
+            RightAxis.Visible = False
+            TopAxis.LabelsOnAxis = False
+            View3D = False
+            View3DWalls = False
+            Align = alClient
+            BevelOuter = bvNone
+            TabOrder = 0
+            OnDblClick = mnuPopGraphDetailsClick
+            OnMouseDown = chartBaseMouseDown
+            OnMouseUp = chartBaseMouseUp
+            object serDatelineBottom: TGanttSeries
+              ColorEachPoint = True
+              Marks.ArrowLength = 0
+              Marks.Visible = False
+              SeriesColor = clRed
+              ShowInLegend = False
+              OnGetMarkText = serDatelineTopGetMarkText
+              Pointer.InflateMargins = True
+              Pointer.Style = psRectangle
+              Pointer.Visible = True
+              XValues.DateTime = True
+              XValues.Name = 'Start'
+              XValues.Multiplier = 1.000000000000000000
+              XValues.Order = loAscending
+              YValues.DateTime = False
+              YValues.Name = 'Y'
+              YValues.Multiplier = 1.000000000000000000
+              YValues.Order = loNone
+              StartValues.DateTime = True
+              StartValues.Name = 'Start'
+              StartValues.Multiplier = 1.000000000000000000
+              StartValues.Order = loAscending
+              EndValues.DateTime = True
+              EndValues.Name = 'End'
+              EndValues.Multiplier = 1.000000000000000000
+              EndValues.Order = loNone
+              NextTask.DateTime = False
+              NextTask.Name = 'NextTask'
+              NextTask.Multiplier = 1.000000000000000000
+              NextTask.Order = loNone
+            end
+          end
+          object pnlDatelineBottomSpacer: TORAutoPanel
+            Left = 0
+            Top = 0
+            Width = 20
+            Height = 30
+            Align = alLeft
+            BevelOuter = bvNone
+            TabOrder = 1
+          end
+        end
+        object scrlBottom: TScrollBox
+          Tag = 5
+          Left = 0
+          Top = 0
+          Width = 426
+          Height = 68
+          Align = alClient
+          BevelInner = bvNone
+          BorderStyle = bsNone
+          Color = clBtnFace
+          ParentColor = False
+          TabOrder = 0
+        end
+      end
+      object memBottom: TMemo
+        Left = 576
+        Top = 0
+        Width = 1
+        Height = 98
+        Align = alRight
+        BevelInner = bvNone
+        BevelOuter = bvNone
+        BorderStyle = bsNone
+        Color = clBtnFace
+        Lines.Strings = (
+          'm'
+          'e'
+          'm'
+          'T'
+          'o'
+          'p')
+        TabOrder = 3
+        Visible = False
+        OnEnter = memBottomEnter
+        OnExit = memBottomExit
+        OnKeyDown = memBottomKeyDown
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlHeader'
+        'Status = stsDefault')
+      (
+        'Component = pnlTemp'
+        'Status = stsDefault')
+      (
+        'Component = pnlInfo'
+        'Status = stsDefault')
+      (
+        'Component = chartBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlFooter'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = btnChangeSettings'
+        'Status = stsDefault')
+      (
+        'Component = cboDateRange'
+        'Label = lblDateRange'
+        'Status = stsOK')
+      (
+        'Component = chkDualViews'
+        'Status = stsDefault')
+      (
+        'Component = btnGraphSelections'
+        'Status = stsDefault')
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlItemsTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlItemsTopInfo'
+        'Status = stsDefault')
+      (
+        'Component = chkItemsTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlTopRightPad'
+        'Status = stsDefault')
+      (
+        'Component = pnlScrollTopBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlBlankTop'
+        'Status = stsDefault')
+      (
+        'Component = scrlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlDatelineTop'
+        'Status = stsDefault')
+      (
+        'Component = chartDatelineTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlDatelineTopSpacer'
+        'Status = stsDefault')
+      (
+        'Component = memTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlItemsBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlItemsBottomInfo'
+        'Status = stsDefault')
+      (
+        'Component = chkItemsBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottomRightPad'
+        'Status = stsDefault')
+      (
+        'Component = pnlScrollBottomBase'
+        'Status = stsDefault')
+      (
+        'Component = pnlBlankBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlDatelineBottom'
+        'Status = stsDefault')
+      (
+        'Component = chartDatelineBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlDatelineBottomSpacer'
+        'Status = stsDefault')
+      (
+        'Component = scrlBottom'
+        'Status = stsDefault')
+      (
+        'Component = memBottom'
+        'Status = stsDefault')
+      (
+        'Component = frmGraphs'
+        'Status = stsDefault')
+      (
+        'Component = pcTop'
+        'Status = stsDefault')
+      (
+        'Component = tsTopItems'
+        'Status = stsDefault')
+      (
+        'Component = tsTopViews'
+        'Status = stsDefault')
+      (
+        'Component = tsTopCustom'
+        'Status = stsDefault')
+      (
+        'Component = lvwItemsTop'
+        'Status = stsDefault')
+      (
+        'Component = pcBottom'
+        'Status = stsDefault')
+      (
+        'Component = tsBottomItems'
+        'Status = stsDefault')
+      (
+        'Component = tsBottomViews'
+        'Status = stsDefault')
+      (
+        'Component = tsBottomCustom'
+        'Status = stsDefault')
+      (
+        'Component = lvwItemsBottom'
+        'Status = stsDefault')
+      (
+        'Component = lstViewsTop'
+        'Status = stsDefault')
+      (
+        'Component = lstViewsBottom'
+        'Status = stsDefault')
+      (
+        'Component = memViewsTop'
+        'Status = stsDefault')
+      (
+        'Component = memViewsBottom'
+        'Status = stsDefault'))
+  end
+  object mnuPopGraphStuff: TPopupMenu
+    OnPopup = mnuPopGraphStuffPopup
+    Left = 30
+    object mnuPopGraphDetails: TMenuItem
+      Caption = 'Details...'
+      OnClick = mnuPopGraphDetailsClick
+    end
+    object mnuPopGraphValueMarks: TMenuItem
+      Caption = 'Values...'
+      Enabled = False
+      OnClick = mnuPopGraphValueMarksClick
+    end
+    object mnuPopGraphViewDefinition: TMenuItem
+      Caption = 'View Definition...'
+      OnClick = mnuPopGraphViewDefinitionClick
+    end
+    object mnuPopGraphDefineViews: TMenuItem
+      Caption = 'Select/Define...'
+      OnClick = btnGraphSelectionsClick
+    end
+    object mnuPopGraphChangeViews: TMenuItem
+      Caption = 'Settings...'
+      OnClick = btnChangeSettingsClick
+    end
+    object N4: TMenuItem
+      Caption = '-'
+    end
+    object mnuPopGraphReset: TMenuItem
+      Caption = 'Reset Display'
+      ShortCut = 45
+      OnClick = mnuPopGraphResetClick
+    end
+    object mnuPopGraphZoomBack: TMenuItem
+      Caption = 'Zoom Back'
+      Enabled = False
+      ShortCut = 46
+      OnClick = mnuPopGraphZoomBackClick
+    end
+    object mnuPopGraphSplit: TMenuItem
+      Caption = 'Split Numerics/Events'
+      OnClick = mnuPopGraphSplitClick
+    end
+    object mnuPopGraphSwap: TMenuItem
+      Caption = 'Swap'
+      OnClick = mnuPopGraphSwapClick
+    end
+    object mnuPopGraphIsolate: TMenuItem
+      Caption = 'Move'
+      Enabled = False
+      OnClick = mnuPopGraphIsolateClick
+    end
+    object mnuPopGraphRemove: TMenuItem
+      Caption = 'Remove'
+      Enabled = False
+      OnClick = mnuPopGraphRemoveClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object mnuPopGraphStayOnTop: TMenuItem
+      Caption = 'Stay on Top'
+      OnClick = mnuPopGraphStayOnTopClick
+    end
+    object mnuPopGraphDualViews: TMenuItem
+      Caption = 'Dual Views'
+      Visible = False
+      OnClick = mnuPopGraphDualViewsClick
+    end
+    object mnuPopGraphSeparate1: TMenuItem
+      Caption = 'Individual Graphs'
+      Visible = False
+      OnClick = mnuPopGraphSeparate1Click
+    end
+    object mnuPopGraph3D: TMenuItem
+      Caption = '3D'
+      OnClick = mnuPopGraph3DClick
+    end
+    object mnuPopGraphLegend: TMenuItem
+      Caption = 'Legend'
+      Visible = False
+      OnClick = mnuPopGraphLegendClick
+    end
+    object mnuPopGraphValues: TMenuItem
+      Caption = 'Values'
+      OnClick = mnuPopGraphValuesClick
+    end
+    object mnuPopGraphFixed: TMenuItem
+      Caption = 'Fixed Date Range'
+      Visible = False
+      OnClick = mnuPopGraphFixedClick
+    end
+    object mnuPopGraphVertical: TMenuItem
+      Caption = 'Vertical Zoom'
+      OnClick = mnuPopGraphVerticalClick
+    end
+    object mnuPopGraphHorizontal: TMenuItem
+      Caption = 'Horizontal Zoom'
+      Visible = False
+      OnClick = mnuPopGraphHorizontalClick
+    end
+    object mnuPopGraphLines: TMenuItem
+      Caption = 'Lines'
+      Visible = False
+      OnClick = mnuPopGraphLinesClick
+    end
+    object mnuPopGraphDates: TMenuItem
+      Caption = 'Dates'
+      Visible = False
+      OnClick = mnuPopGraphDatesClick
+    end
+    object mnuPopGraphSort: TMenuItem
+      Caption = 'Sort by Type'
+      Visible = False
+      OnClick = mnuPopGraphSortClick
+    end
+    object mnuPopGraphClear: TMenuItem
+      Caption = 'Clear Background'
+      Visible = False
+      OnClick = mnuPopGraphClearClick
+    end
+    object mnuPopGraphGradient: TMenuItem
+      Caption = 'Gradient'
+      Visible = False
+      OnClick = mnuPopGraphGradientClick
+    end
+    object mnuPopGraphHints: TMenuItem
+      Caption = 'Hints'
+      Visible = False
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object mnuPopGraphCopy: TMenuItem
+      Caption = 'Copy'
+      ShortCut = 16451
+      OnClick = mnuPopGraphPrintClick
+    end
+    object mnuPopGraphExport: TMenuItem
+      Caption = 'Export Data...'
+      OnClick = mnuPopGraphExportClick
+    end
+    object mnuPopGraphPrint: TMenuItem
+      Caption = 'Print...'
+      OnClick = mnuPopGraphPrintClick
+    end
+    object N3: TMenuItem
+      Caption = '-'
+      Visible = False
+    end
+    object mnutest: TMenuItem
+      Caption = 'testing'
+      Enabled = False
+      Visible = False
+    end
+    object mnuFunctions1: TMenuItem
+      Caption = 'Functions'
+      Enabled = False
+      Visible = False
+      object mnuInverseValues: TMenuItem
+        Caption = 'Inverse Values'
+      end
+      object mnuStandardDeviations: TMenuItem
+        Caption = 'Standard Deviations'
+      end
+    end
+    object mnuCustom: TMenuItem
+      Caption = 'Custom'
+      Enabled = False
+      Visible = False
+      OnClick = mnuCustomClick
+    end
+    object mnuMHasNumeric1: TMenuItem
+      Caption = 'MH as Numeric'
+      Enabled = False
+      Visible = False
+      OnClick = mnuMHasNumeric1Click
+    end
+    object mnuGraphData: TMenuItem
+      Caption = 'Show Graph Data...'
+      Enabled = False
+      Visible = False
+      OnClick = mnuGraphDataClick
+    end
+    object mnuPopGraphToday: TMenuItem
+      Caption = 'Reset Today...'
+      Enabled = False
+      Visible = False
+      OnClick = mnuPopGraphTodayClick
+    end
+    object mnuTestCount: TMenuItem
+      Caption = 'test count'
+      Enabled = False
+      Visible = False
+    end
+  end
+  object calDateRange: TORDateRangeDlg
+    DateOnly = False
+    Instruction = 'Enter a date range -'
+    LabelStart = 'Begin Date'
+    LabelStop = 'End Date'
+    RequireTime = False
+    Format = 'mmm d,yy@hh:nn'
+    Left = 59
+  end
+  object dlgDate: TORDateTimeDlg
+    FMDateTime = 3040806.000000000000000000
+    DateOnly = True
+    RequireTime = False
+    Left = 88
+  end
+  object timHintPause: TTimer
+    Enabled = False
+    Interval = 100
+    OnTimer = timHintPauseTimer
+    Left = 117
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fGraphs.pas	(revision 1676)
@@ -0,0 +1,7125 @@
+unit fGraphs;
+
+interface
+
+uses                                                
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ORCtrls, Menus, TeeProcs, TeEngine, Series, Chart, Math,
+  ComCtrls, GanttCh, ClipBrd, StrUtils, ORFn, ORDtTmRng, DateUtils, Printers,
+  OleServer, Variants, Word2000, ArrowCha, ORDtTm, uGraphs, fBase508Form
+  {$IFDEF VER140}
+  ,Word97;
+  {$ELSE}
+  ,WordXP, VA508AccessibilityManager;
+  {$ENDIF}
+
+type
+  TfrmGraphs = class(TfrmBase508Form)
+    btnChangeSettings: TButton;
+    btnClose: TButton;
+    btnGraphSelections: TButton;
+    bvlBottomLeft: TBevel;
+    bvlBottomRight: TBevel;
+    bvlTopLeft: TBevel;
+    bvlTopRight: TBevel;
+    calDateRange: TORDateRangeDlg;
+    cboDateRange: TORComboBox;
+    chartBase: TChart;
+    chartDatelineBottom: TChart;
+    chartDatelineTop: TChart;
+    chkDualViews: TCheckBox;
+    chkItemsBottom: TCheckBox;
+    chkItemsTop: TCheckBox;
+    dlgDate: TORDateTimeDlg;
+    lblDateRange: TLabel;
+    memBottom: TMemo;
+    memTop: TMemo;
+    mnuGraphData: TMenuItem;
+    mnuPopGraph3D: TMenuItem;
+    mnuPopGraphClear: TMenuItem;
+    mnuPopGraphCopy: TMenuItem;
+    mnuPopGraphDates: TMenuItem;
+    mnuPopGraphDefineViews: TMenuItem;
+    mnuPopGraphDetails: TMenuItem;
+    mnuPopGraphDualViews: TMenuItem;
+    mnuPopGraphGradient: TMenuItem;
+    mnuPopGraphExport: TMenuItem;
+    mnuPopGraphFixed: TMenuItem;
+    mnuPopGraphHints: TMenuItem;
+    mnuPopGraphHorizontal: TMenuItem;
+    mnuPopGraphIsolate: TMenuItem;
+    mnuPopGraphLegend: TMenuItem;
+    mnuPopGraphLines: TMenuItem;
+    mnuPopGraphPrint: TMenuItem;
+    mnuPopGraphRemove: TMenuItem;
+    mnuPopGraphReset: TMenuItem;
+    mnuPopGraphSeparate1: TMenuItem;
+    mnuPopGraphSort: TMenuItem;
+    mnuPopGraphSplit: TMenuItem;
+    mnuPopGraphStayOnTop: TMenuItem;
+    mnuPopGraphStuff: TPopupMenu;
+    mnuPopGraphSwap: TMenuItem;
+    mnuPopGraphToday: TMenuItem;
+    mnuPopGraphValues: TMenuItem;
+    mnuPopGraphValueMarks: TMenuItem;
+    mnuPopGraphVertical: TMenuItem;
+    mnuPopGraphZoomBack: TMenuItem;
+    N1: TMenuItem;
+    N2: TMenuItem;
+    N3: TMenuItem;
+    N4: TMenuItem;
+    pnlBlankBottom: TPanel;
+    pnlBlankTop: TPanel;
+    pnlBottom: TPanel;
+    pnlBottomRightPad: TPanel;
+    pnlDatelineBottom: TPanel;
+    pnlDatelineBottomSpacer: TORAutoPanel;
+    pnlDatelineTop: TPanel;
+    pnlDatelineTopSpacer: TORAutoPanel;
+    pnlFooter: TPanel;
+    pnlHeader: TPanel;
+    pnlInfo: TORAutoPanel;
+    pnlItemsBottom: TPanel;
+    pnlItemsBottomInfo: TPanel;
+    pnlItemsTop: TPanel;
+    pnlItemsTopInfo: TPanel;
+    pnlMain: TPanel;
+    pnlScrollBottomBase: TPanel;
+    pnlScrollTopBase: TPanel;
+    pnlTemp: TPanel;
+    pnlTop: TPanel;
+    pnlTopRightPad: TPanel;
+    scrlBottom: TScrollBox;
+    scrlTop: TScrollBox;
+    serDatelineBottom: TGanttSeries;
+    serDatelineTop: TGanttSeries;
+    splGraphs: TSplitter;
+    splItemsBottom: TSplitter;
+    splItemsTop: TSplitter;
+    mnuTestCount: TMenuItem;
+    timHintPause: TTimer;
+    mnuMHasNumeric1: TMenuItem;
+    mnuStandardDeviations: TMenuItem;
+    mnuInverseValues: TMenuItem;
+    mnuFunctions1: TMenuItem;
+    pcTop: TPageControl;
+    tsTopItems: TTabSheet;
+    tsTopViews: TTabSheet;
+    tsTopCustom: TTabSheet;
+    lvwItemsTop: TListView;
+    pcBottom: TPageControl;
+    tsBottomItems: TTabSheet;
+    tsBottomViews: TTabSheet;
+    tsBottomCustom: TTabSheet;
+    lvwItemsBottom: TListView;
+    mnuCustom: TMenuItem;
+    lstViewsTop: TORListBox;
+    lstViewsBottom: TORListBox;
+    memViewsTop: TRichEdit;
+    splViewsTop: TSplitter;
+    memViewsBottom: TRichEdit;
+    splViewsBottom: TSplitter;
+    mnuPopGraphViewDefinition: TMenuItem;
+    mnutest: TMenuItem;
+
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormDestroy(Sender: TObject);
+
+    procedure btnCloseClick(Sender: TObject);
+    procedure btnChangeSettingsClick(Sender: TObject);
+    procedure btnGraphSelectionsClick(Sender: TObject);
+
+    procedure chkDualViewsClick(Sender: TObject);
+    procedure chkItemsBottomClick(Sender: TObject);
+    procedure chkItemsBottomEnter(Sender: TObject);
+    procedure chkItemsTopClick(Sender: TObject);
+    procedure mnuPopGraph3DClick(Sender: TObject);
+    procedure mnuPopGraphClearClick(Sender: TObject);
+    procedure mnuPopGraphDatesClick(Sender: TObject);
+    procedure mnuPopGraphDetailsClick(Sender: TObject);
+    procedure mnuPopGraphDualViewsClick(Sender: TObject);
+    procedure mnuPopGraphExportClick(Sender: TObject);
+    procedure mnuPopGraphFixedClick(Sender: TObject);
+    procedure mnuPopGraphGradientClick(Sender: TObject);
+    procedure mnuPopGraphHintsClick(Sender: TObject);
+    procedure mnuPopGraphIsolateClick(Sender: TObject);
+    procedure mnuPopGraphLegendClick(Sender: TObject);
+    procedure mnuPopGraphLinesClick(Sender: TObject);
+    procedure mnuPopGraphPrintClick(Sender: TObject);
+    procedure mnuPopGraphRemoveClick(Sender: TObject);
+    procedure mnuPopGraphResetClick(Sender: TObject);
+    procedure mnuPopGraphSeparate1Click(Sender: TObject);
+    procedure mnuPopGraphStayOnTopClick(Sender: TObject);
+    procedure mnuPopGraphSortClick(Sender: TObject);
+    procedure mnuPopGraphSplitClick(Sender: TObject);
+    procedure mnuPopGraphStuffPopup(Sender: TObject);
+    procedure mnuPopGraphSwapClick(Sender: TObject);
+    procedure mnuPopGraphTodayClick(Sender: TObject);
+    procedure mnuPopGraphValueMarksClick(Sender: TObject);
+    procedure mnuPopGraphValuesClick(Sender: TObject);
+    procedure mnuPopGraphHorizontalClick(Sender: TObject);
+    procedure mnuPopGraphVerticalClick(Sender: TObject);
+    procedure mnuPopGraphZoomBackClick(Sender: TObject);
+
+    procedure splGraphsMoved(Sender: TObject);
+    procedure splItemsBottomMoved(Sender: TObject);
+    procedure splItemsTopMoved(Sender: TObject);
+
+    procedure lvwItemsBottomChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure lvwItemsBottomClick(Sender: TObject);
+    procedure lvwItemsBottomColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvwItemsBottomCompare(Sender: TObject; Item1,
+      Item2: TListItem; Data: Integer; var Compare: Integer);
+    procedure lvwItemsTopChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure lvwItemsTopClick(Sender: TObject);
+    procedure lvwItemsTopColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvwItemsTopCompare(Sender: TObject; Item1, Item2: TListItem;
+      Data: Integer; var Compare: Integer);
+    procedure lvwItemsTopKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+
+    procedure cboDateRangeChange(Sender: TObject);
+    procedure cboDateRangeDropDown(Sender: TObject);
+
+    procedure chartBaseClickLegend(Sender: TCustomChart;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure chartBaseClickSeries(Sender: TCustomChart; Series: TChartSeries;
+      ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure chartBaseMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure chartBaseMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure chartBaseMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+    procedure serDatelineTopGetMarkText(Sender: TChartSeries;
+      ValueIndex: Integer; var MarkText: String);
+
+    procedure ChartOnUndoZoom(Sender: TObject);
+    procedure ChartOnZoom(Sender: TObject);
+    procedure DateSteps(dateranges: string);
+    procedure DisplayData(aSection: string);
+    procedure DisplayDataInfo(aScrollBox: TScrollBox; aMemo: TMemo);
+    procedure GraphSwap(bottomview, topview: integer);
+    procedure GraphSwitch(bottomview, topview: integer);
+    procedure HideDates(aChart: TChart);
+    procedure LabelClicks(aChart: TChart; aSeries: TChartSeries; lbutton: boolean; tmp: integer);
+    procedure MouseClicks(aChart: TChart; lbutton: boolean; X, Y: Integer);
+    procedure SeriesClicks(aChart: TChart; aSeries: TChartSeries; aIndex: integer; lbutton: boolean);
+    procedure SetupFields(settings: string);
+    procedure SourcesDefault;
+    procedure StayOnTop;
+    procedure FormatHint(var astring: string);
+
+    procedure ZoomUpdate;
+    procedure ZoomUpdateInfo(SmallTime, BigTime: TDateTime);
+    procedure ZoomTo(SmallTime, BigTime: TDateTime);
+
+    procedure lvwItemsBottomEnter(Sender: TObject);
+    procedure lvwItemsTopEnter(Sender: TObject);
+
+    procedure memBottomEnter(Sender: TObject);
+    procedure memBottomExit(Sender: TObject);
+    procedure memBottomKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure memTopEnter(Sender: TObject);
+    procedure memTopExit(Sender: TObject);
+    procedure memTopKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+
+    procedure pnlScrollTopBaseResize(Sender: TObject);
+    procedure timHintPauseTimer(Sender: TObject);
+
+    procedure GetSize;
+    procedure SetSize;
+    procedure mnuGraphDataClick(Sender: TObject);
+    procedure mnuCustomClick(Sender: TObject);
+    procedure lstViewsTopChange(Sender: TObject);
+    procedure lstViewsBottomChange(Sender: TObject);
+    procedure mnuMHasNumeric1Click(Sender: TObject);
+    procedure lstViewsTopEnter(Sender: TObject);
+    procedure lstViewsBottomEnter(Sender: TObject);
+    procedure mnuPopGraphViewDefinitionClick(Sender: TObject);
+    procedure lstViewsTopMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure splViewsTopMoved(Sender: TObject);
+    procedure lstViewsBottomMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+
+  private
+    FBSortAscending: boolean;
+    FBSortCol: integer;
+    FDate1: Double;
+    FDate2: Double;
+    FSortAscending: boolean;
+    FSortCol: integer;
+
+    FActiveGraph: TChart;
+    FArrowKeys: boolean;
+    FBHighTime, FBLowTime: Double;
+    FCreate: boolean;
+    FDisplayFreeText: boolean;
+    FFastData: boolean;
+    FFastItems: boolean;
+    FFastLabs: boolean;
+    FFastTrack: boolean;
+    FFirstClick: boolean;
+    FFirstSwitch: boolean;
+    FGraphClick: TCustomChart;
+    FGraphSeries: TChartSeries;
+    FGraphSetting: TGraphSetting;
+    FGraphType: char;
+    FGraphValueIndex: integer;
+    FItemsSortedTop: boolean;
+    FItemsSortedBottom: boolean;
+    FMouseDown: boolean;
+    FMTimestamp: string;
+    FMToday: TFMDateTime;
+    FNonNumerics: boolean; // used with pnlItemsTop.Tag & pnlItemsBottom.Tag
+    FOnLegend:  integer;
+    FOnMark: boolean;
+    FOnSeries: integer;
+    FOnValue: integer;
+    FPrevEvent: string;
+    FRetainZoom: boolean;
+    FSources: TStrings;
+    FSourcesDefault: TStrings;
+    FTHighTime, FTLowTime: Double;
+    FTooManyItems: boolean;
+    FWarning: boolean;
+    FX, FY: integer;
+    FYMinValue: Double;
+    FYMaxValue: Double;
+
+    procedure AddOnLabGroups(aListBox: TORListBox; personien: integer);
+    procedure AdjustTimeframe;
+    procedure AllTypeDate(aType, aTypeName, firstline, secondline: string; aDate, aDate2: double);
+    procedure AllDetails(aDate1, aDate2: TFMDateTime; aTempList: TStrings);
+    procedure AssignProfile(aProfile, aSection: string);
+    procedure AutoSelect(aListView: TListView);
+    procedure BaseResize(aScrollBox: TScrollBox);
+    procedure BorderValue(var bordervalue: double; value: double);
+    procedure BottomAxis(aScrollBox: TScrollBox);
+    procedure BPAdd(itemvalue: string; adatetime: TDateTime; var fixeddatevalue: double; serLine, serBPDiastolic, serBPMean: TLineSeries);
+    procedure BPCheck(aChart: TChart; aFileType: string; serLine, serBPDiastolic, serBPMean: TLineSeries);
+    procedure ChangeStyle;
+    procedure ChartColor(aColor: TColor);
+    procedure ChartStyle(aChart: TChart);
+    procedure CheckMedNum(var typenum: string; aSeries: TChartSeries);
+    procedure CheckProfile(var aProfile: string; var Updated: boolean);
+    procedure CheckToAddData(aListView: TListView; aSection, TypeToCheck: string);
+    procedure CreateExcelPatientHeader(var HeaderList: TStringList; PageTitle, DateRange: string);
+    procedure CreatePatientHeader(var HeaderList: TStringList; PageTitle, Warning, DateRange: string);
+    procedure DateRangeItems(oldestdate, newestdate: double; filenum: string);
+    procedure DisplayType(itemtype, displayed: string);
+    procedure FastLab(aList: TStringList);
+    procedure FillViews;
+    procedure FilterListView(oldestdate, newestdate: double);
+    procedure FixedDates(var adatetime, adatetime1: TDateTime);
+    procedure GetData(aString: string);
+    procedure GraphBoundry(singlepoint: boolean);
+    procedure GraphFooter(aChart: TChart; datediff: integer; aDate: TDateTime);
+    procedure HideGraphs(action: boolean);
+    procedure HighLow(fmtime, fmtime1: string; aChart: TChart; var adatetime, adatetime1: TDateTime);
+    procedure InactivateHint;
+    procedure InfoMessage(aCaption: string; aColor: TColor; aVisible: boolean);
+    procedure ItemCheck(aListView: TListView; aItemName: string;
+      var aNum: integer; var aTypeItem: string);
+    procedure ItemDateRange(Sender: TCustomChart);
+    procedure ItemsClick(Sender: TObject; aListView, aOtherListView: TListView;
+      aCheckBox: TCheckBox; aListBox: TORListBox; aList: TStrings; aSection: string);
+    procedure LabAdd(aListView: TListView; filename: string; aIndex, oldlisting: integer; selectlab: boolean);
+    procedure LabCheck(aListView: TListView; aItemType: string; var oldlisting: integer);
+    procedure LabData(aItemType, aItemName, aSection: string; getdata: boolean);
+    procedure LoadDateRange;
+    procedure LoadDisplayCheck(typeofitem: string; var updated: boolean);
+    procedure LoadType(itemtype, displayed: string);
+    procedure NextPointerStyle(aSeries: TChartSeries; aSerCnt: integer);
+    procedure NonNumSave(aChart: TChart; aTitle, aSection: string; adatetime: TDateTime;
+      var noncnt: integer; newcnt, aIndex: integer);
+    procedure NotifyApps(aList: TStrings);
+    procedure NumAdd(serLine: TLineSeries; value: double; adatetime: TDateTime;
+      var fixeddatevalue, hi, lo: double; var high, low: string);
+    procedure OneDayTypeDetails(aTypeItem: string);
+    procedure PadNonNum(aChart: TChart; aSection: string; var listofseries: string; var bmax, tmax: integer);
+    procedure PainAdd(serBlank: TPointSeries);
+    procedure RefUnits(aItem, aSpec: string; var low, high, units: string);
+    procedure ResetSpec(aList: TStrings; aItemNum, aNewItemNum, aNewItemName, aNewString: string);
+    procedure ResultValue(var resultstring, seriestitle: string; typenum, typeitem: string;
+      Sender: TCustomChart; aSeries: TChartSeries; ValueIndex, SeriesNum: Integer; var OKToUse: boolean);
+    procedure SelCopy(aListView: TListView; aList: TStrings);
+    procedure SelReset(aList: TStrings; aListView: TListView);
+    procedure SelectItem(aListView: TListView; typeitem: string);
+    procedure SeriesForLabels(aChart: TChart; aID: string; pad: double);
+    procedure SetProfile(aProfile, aName: string; aListView: TListView);
+    procedure SizeDates(aChart: TChart; aSmallTime, aBigTime: TDateTime);
+    procedure SizeTogether(onlylines, nolines, anylines: Boolean; aScroll: TScrollBox;
+      aChart: TChart; aPanel, aPanelBase: TPanel; portion: Double);
+    procedure SpecCheck(var spec1, spec2, spec3, spec4: string; var singlespec: boolean);
+    procedure SpecSet(var spec1, spec2, spec3, spec4: string; aItemType, aItemName: string);
+    procedure SplitClick;
+    procedure SortListView;
+    procedure StackNonNum(astring: string; var offset, bmax, tmax: integer; var blabelon, tlabelon: boolean);
+    procedure TempCheck(typeitem: string; var levelseq: double);
+    procedure TempData(aStringList: TStringList; aType: string; dt1, dt2: double);
+    procedure UpdateView(filename, filenum, itemnum, aString: string; aListView: TListView);
+    procedure ValueDates(aSeries: TChartSeries; ValueIndex: Integer; var resultdate, otherdate: string);
+    procedure ViewsChange(aListView: TListView; aListBox: TORListBox; aSection: string);
+
+    procedure MakeSeparate(aScrollBox: TScrollBox; aListView: TListView; aPadPanel: TPanel; section: string);
+    procedure MakeSeparateItems(aScrollBox: TScrollBox; aListView: TListView; section: string);
+    procedure MakeTogether(aScrollBox: TScrollBox; aListView: TListView; aPadPanel: TPanel; section: string);
+    procedure MakeTogetherMaybe(aScrollBox: TScrollBox; aListView: TListView; aPadPanel: TPanel; section: string);
+    procedure MakeTogetherNoLines(aListView: TListView; section: string);
+    procedure MakeTogetherOnlyLines(aListView: TListView; section: string; aChart: TChart);
+    procedure MakeTogetherAnyLines(aListView: TListView; section: string; aChart: TChart);
+
+    procedure MakeChart(aChart: TChart; aScrollBox: TScrollBox);
+    procedure MakeComments(aChart: TChart);
+    procedure MakeDateline(section, aTitle, aFileType: string; aChart: TChart; graphtype: integer;
+      var bcnt, pcnt, gcnt, vcnt: integer);
+    procedure MakeNonNumerics(aChart: TChart);
+    procedure MakeNonNumSeries(aChart: TChart; padvalue, highestvalue, lowestvalue: double; listofseries, section: string);
+    procedure MakeOtherSeries(aChart: TChart);
+    procedure MakeSeriesInfo(aChart: TChart; aSeries: TChartSeries; aTitle, aFileType: string; aSerCnt: integer);
+    procedure MakeSeriesPoint(aChart: TChart; aPointSeries: TPointSeries);
+    procedure MakeSeriesRef(aChart: TChart; aTest, aRef: TLineSeries; aTitle, aValue: string; aDate: double);
+    procedure MakeSeriesBP(aChart: TChart; aTest, aBP: TLineSeries; aFileType: string);
+
+    procedure MakeBarSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+    procedure MakeLineSeries(aChart: TChart; aTitle, aFileType, section: string;
+      var aSerCnt, aNonCnt: integer; multiline: boolean);
+    procedure MakeGanttSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);  // good one
+    procedure MakePointSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+    procedure MakeVisitGanttSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+
+    function BPValue(aDateTime: TDateTime): string;
+    function DateRangeMultiItems(aOldDate, aNewDate: double; aMultiItem: string): boolean;
+    function DCName(aDCien: string): string;
+    function ExpandTax(profile: string): string;
+    function FileNameX(filenum: string): string;
+    function FMCorrectedDate(fmtime: string): string;
+    function GraphTypeNum(aType: string): integer;
+    function HSAbbrev(aType: string): boolean;
+    function InvVal(value: double): double;
+    function ItemName(filenum, itemnum: string): string;
+    function NextColor(aCnt: integer): TColor;
+    function NonNumText(listnum, seriesnum, valueindex: integer): string;
+    function PadLeftEvent(aWidth: integer): integer;
+    function PadLeftNonNumeric(aWidth: integer): integer;
+    function PortionSize(lcnt, pcnt, gcnt, vcnt, bcnt: integer): double;
+    function ProfileName(aProfile, aName, aString: string): string;
+    function SelectRef(aRef: string): string;
+    function SingleLabTest(aListView: TListView): boolean;
+    function StdDev(value, high, low: double): double;
+    function TitleInfo(filetype, typeitem, caption: string): string;
+    function TypeIsDisplayed(itemtype: string): boolean;
+    function TypeIsLoaded(itemtype: string): boolean;
+    function TypeString(filenum: string): string;
+    function ValueText(Sender: TCustomChart; aSeries: TChartSeries; ValueIndex: Integer): string;
+  protected
+    procedure UpdateAccessabilityActions(var Actions: TAccessibilityActions); override;
+  public
+    procedure DateDefaults;
+    procedure InitialData;
+    procedure Initialize;
+    procedure InitialRetain;
+    procedure LoadListView(aList: TStrings);
+    procedure SourceContext;
+    procedure Switch;
+    procedure ViewDefinition(profile: string; amemo: TRichEdit);
+    procedure ViewSelections;
+    procedure DisplayFreeText(aChart: TChart);
+    procedure SetFontSize(FontSize: integer);
+    function FMToDateTime(FMDateTime: string): TDateTime;
+  end;
+
+var
+  frmGraphs: TfrmGraphs;
+  FHintWin: THintWindow;
+  FHintWinActive: boolean;
+  FHintStop: boolean;
+
+implementation
+
+uses fGraphSettings, fGraphProfiles, fGraphData, fGraphOthers, rGraphs,
+  ComObj, ActiveX, ShellAPI, fFrame, uCore, rCore, uConst, fRptBox, fReports,
+  uFormMonitor, VAUtils
+  { TODO -oRV -cWVEHR Long Age : Changed to use long age }
+  , rWVEHR;
+
+
+{$R *.DFM}
+
+type
+  TGraphItem = class
+  public
+    Values: string;
+end;
+
+procedure TfrmGraphs.FormCreate(Sender: TObject);
+var
+  i: integer;
+  dfntype, listline, settings, settings1: string;
+begin
+  btnClose.Tag := 0;
+  settings := GetCurrentSetting;
+  if (length(settings) < 1) then
+  begin
+    Screen.Cursor := crDefault;
+    ShowMsg(TXT_NOGRAPHING);
+    btnClose.Tag := 1;
+    Close;
+    Exit;
+  end;
+  SetupFields(settings);
+  settings1 := Piece(settings, '|', 1);
+  pnlInfo.Caption := TXT_INFO;
+  for i := 0 to BIG_NUMBER do
+  begin
+    dfntype := Piece(settings1, ';', i);
+    if length(dfntype) = 0 then break;
+    listline := dfntype + '^' + FileNameX(dfntype) + '^1';
+    FSources.Add(listline);
+    FSourcesDefault.Add(listline);
+  end;
+  serDatelineTop.Active := false;
+  serDatelineBottom.Active := false;
+  chartDatelineTop.Gradient.EndColor := clGradientActiveCaption;
+  chartDatelineTop.Gradient.StartColor := clWindow;
+  chartDatelineBottom.Gradient.EndColor := clGradientActiveCaption;
+  chartDatelineBottom.Gradient.StartColor := clWindow;
+  LoadDateRange;
+  //chkItemsTop.Checked := true;
+  //chkItemsBottom.Checked := true;
+  FillViews;
+  pcTop.ActivePage := tsTopItems;
+  pcBottom.ActivePage := tsBottomItems;
+end;
+
+procedure TfrmGraphs.SetupFields(settings: string);
+begin
+  FArrowKeys := false;
+  FBHighTime := 0;
+  FBLowTime := BIG_NUMBER;
+  FCreate := true;
+  FDisplayFreeText := true;
+  FGraphType := Char(32);
+  FFirstClick := true;
+  FFirstSwitch := true;
+  FGraphSetting := GraphSettingsInit(settings);
+  FHintStop := false;
+  FHintWin := THintWindow.Create(self);
+  FHintWin.Color := clInfoBk;
+  FHintWin.Canvas.Font.Color := clInfoBk;
+  FHintWinActive := false;
+  FItemsSortedBottom := false;
+  FItemsSortedTop := false;
+  FMouseDown := false;
+  FMTimestamp := floattostr(FMNow);
+  FMToday := DateTimeToFMDateTime(Date);
+  FNonNumerics := false;
+  FOnLegend := BIG_NUMBER;
+  FOnMark := false;
+  FOnSeries := BIG_NUMBER;
+  FOnValue := BIG_NUMBER;
+  FPrevEvent := '';
+  FRetainZoom := false;
+  FSources := TStringList.Create;
+  FSourcesDefault := TStringList.Create;
+  FTHighTime := 0;
+  FTLowTime := BIG_NUMBER;
+  FWarning := false;
+  FTooManyItems := false;
+  FX := 0; FY :=0;
+  FYMinValue := 0;
+  FYMaxValue := 0;
+end;
+
+procedure TfrmGraphs.SourcesDefault;
+var
+  i: integer;
+  dfntype, listline, settings, settings1: string;
+begin
+  settings := GetCurrentSetting;
+  settings1 := Piece(settings, '|', 1);
+  for i := 0 to BIG_NUMBER do
+  begin
+    dfntype := Piece(settings1, ';', i);
+    if length(dfntype) = 0 then break;
+    listline := dfntype + '^' + FileNameX(dfntype) + '^1';
+    FSourcesDefault.Add(listline);
+  end;
+end;
+
+procedure TfrmGraphs.Initialize;
+var                                        // from fFrame and fReports
+  i: integer;
+  rptview1, rptview2, rptviews: string;
+begin
+  InitialData;
+  SourceContext;
+  LoadListView(GtslItems);
+  if pnlMain.Tag > 0 then
+  begin
+    rptviews := MixedCase(rpcReportParams(pnlMain.Tag));
+    if length(rptviews) > 1 then
+    begin
+      rptview1 := Piece(rptviews, '^', 1);
+      rptview2 := Piece(rptviews, '^', 2);
+      if length(rptview1) > 0 then
+      begin
+        //pcTop.ActivePage := tsTopViews;
+        lstViewsTop.Tag := 0;
+        for i := 0 to lstViewsTop.Items.Count - 1 do
+        if Piece(lstViewsTop.Items[i], '^', 2) = rptview1 then
+        begin
+          lstViewsTop.ItemIndex := i;
+          break;
+        end;
+        if lstViewsTop.ItemIndex < 0 then
+          lvwItemsTopClick(self);
+      end;
+      if length(rptview2) > 0 then
+      begin
+        chkDualViews.Checked := true;
+        chkDualViewsClick(self);
+        //pcBottom.ActivePage := tsBottomViews;
+        lstViewsBottom.Tag := 0;
+        for i := 0 to lstViewsBottom.Items.Count - 1 do
+        if Piece(lstViewsBottom.Items[i], '^', 2) = rptview2 then
+        begin
+          lstViewsBottom.ItemIndex := i;
+          break;
+        end;
+        if lstViewsBottom.ItemIndex < 0 then
+          lvwItemsBottomClick(self);
+      end;
+    end;
+    pnlMain.Tag := 0;
+    cboDateRangeChange(self);
+    exit;
+  end;
+  if lstViewsTop.ItemIndex > -1 then
+    lstViewsTopChange(self)
+  else
+    lvwItemsTopClick(self);
+  if lstViewsBottom.ItemIndex > -1 then
+    lstViewsbottomChange(self)
+  else
+    lvwItemsBottomClick(self);
+end;
+
+procedure TfrmGraphs.InitialRetain;
+begin
+  // from fFrame
+end;
+
+procedure TfrmGraphs.FillViews;
+var
+  i: integer;
+  listline: string;
+begin
+  lstViewsTop.Tag := BIG_NUMBER;
+  lstViewsBottom.Tag := BIG_NUMBER;
+  lstViewsTop.Sorted := false;
+  lstViewsBottom.Sorted := false;
+  lstViewsTop.Items.Clear;
+  lstViewsBottom.Items.Clear;
+  GtslViewPersonal.Sorted := true;
+  FastAssign(GetGraphProfiles('1', '0', 0, User.DUZ), GtslViewPersonal);
+  GtslViewPublic.Sorted := true;
+  FastAssign(GetGraphProfiles('1', '1', 0, 0), GtslViewPublic);
+  with lstViewsTop do
+  begin
+    if GtslViews.Count > 0 then
+    begin
+      if not ((GtslViews.Count = 1) and (Piece(GtslViews[0], '^', 1) = VIEW_CURRENT)) then
+      begin
+        Items.Add(LLS_FRONT + copy('Temporary Views' + LLS_BACK, 0, 60) + '^0');
+        for i := 0 to GtslViews.Count - 1 do
+        begin
+          listline := GtslViews[i];
+          if Piece(listline, '^', 1) <> VIEW_CURRENT then
+            Items.Add(VIEW_TEMPORARY + '^' + listline + '^');
+        end;
+      end;
+    end;
+    if GtslViewPersonal.Count > 0 then
+    begin
+      Items.Add(LLS_FRONT + copy('Personal Views' + LLS_BACK, 0, 60) + '^0');
+      for i := 0 to GtslViewPersonal.Count - 1 do
+        Items.Add(VIEW_PERSONAL + '^' + GtslViewPersonal[i] + '^');
+    end;
+    if GtslViewPublic.Count > 0 then
+    begin
+      Items.Add(LLS_FRONT + copy('Public Views' + LLS_BACK, 0, 60) + '^0');
+      for i := 0 to GtslViewPublic.Count - 1 do
+        Items.Add(VIEW_PUBLIC + '^' + GtslViewPublic[i] + '^');
+    end;
+    AddOnLabGroups(lstViewsTop, 0);
+  end;
+  FastAssign(lstViewsTop.Items, lstViewsBottom.Items);
+end;
+
+procedure TfrmGraphs.AddOnLabGroups(aListBox: TORListBox; personien: integer);
+var
+  i: integer;
+begin
+  if personien < 1 then personien := User.DUZ;
+  FastAssign(rpcTestGroups(personien), GtslLabGroup);
+  GtslLabGroup.Sorted := true;
+  if GtslLabGroup.Count > 0 then
+  begin
+    aListBox.Items.Add(LLS_FRONT + copy('Lab Groups' + LLS_BACK, 0, 60) + '^0');
+    for i := 0 to GtslLabGroup.Count - 1 do
+      aListBox.Items.Add(VIEW_LABS + '^' + Piece(GtslLabGroup[i], '^', 2)
+        + '^' + Piece(GtslLabGroup[i], '^', 1) + '^' + inttostr(personien));
+  end;
+end;
+
+procedure TfrmGraphs.SourceContext;
+begin
+  if frmFrame.GraphContext = '' then exit;
+  frmFrame.GraphContext := '';
+end;
+
+procedure TfrmGraphs.FormShow(Sender: TObject);
+begin
+  Font := MainFont;
+  ChangeStyle;
+  StayOnTop;
+  mnuPopGraphResetClick(self);
+  if pnlFooter.Tag = 1 then  // do not show footer controls on reports tab
+  begin
+    pnlFooter.Visible := false;
+    if FCreate then
+    begin
+      FGraphType := GRAPH_REPORT;
+      FCreate := false;
+      GetSize;
+    end;
+  end
+  else
+  begin
+    chkDualViews.Checked := false;
+    chkDualViewsClick(self);
+    if FCreate then
+    begin
+      FGraphType := GRAPH_FLOAT;
+      FCreate := false;
+      GetSize;
+    end;
+  end;
+  DateDefaults;
+  cboDateRangeChange(self);
+  lvwItemsTopClick(self);
+  if lvwItemsTop.Items.Count = 0 then
+  begin
+    lstViewsTop.ItemIndex := -1
+  end;
+  if not mnuPopGraphViewDefinition.Checked then
+    mnuPopGraphViewDefinitionClick(self);
+  tsTopCustom.TabVisible := false;
+  tsBottomCustom.TabVisible := false;
+end;
+
+procedure TfrmGraphs.DateDefaults;
+begin
+  if Patient.Inpatient then
+     cboDateRange.SelectByID(GetDefaultInpatientDate)
+  else
+     cboDateRange.SelectByID(GetDefaultOutpatientDate);
+  if cboDateRange.ItemIndex < 0 then
+    cboDateRange.ItemIndex := cboDateRange.Items.Count - 1;
+end;
+
+procedure TfrmGraphs.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if btnClose.Tag = 1 then
+    exit;
+  SetSize;
+  timHintPause.Enabled := false;
+  InactivateHint;
+  frmFrame.GraphFloatActive := false;
+end;
+
+procedure TfrmGraphs.GetSize;
+
+  procedure SetWidth(aListView: TListView; v1, v2, v3, v4: integer);
+  begin
+    if v1 > 0 then aListView.Column[0].Width := v1;
+    if v2 > 0 then aListView.Column[1].Width := v2;
+    if v3 > 0 then aListView.Column[2].Width := v3;
+    if v4 > 0 then aListView.Column[3].Width := v4;
+  end;
+
+  procedure Layout(name, FR: string; v1, v2, v3, v4: integer);
+  begin  // FR indicates Float or Report graph
+    if name = (FR + 'WIDTH') then
+    begin
+      if v1 > 0 then
+      begin
+        pnlItemsTop.Width := v1;
+        splItemsTopMoved(self);
+      end;
+    end
+    else if name = (FR + 'BOTTOM') then
+    begin
+      if v1 > 0 then
+      begin
+        chkDualViews.Checked := true;
+        chkDualViewsClick(self);
+        pnlBottom.Height := v1;
+      end;
+    end
+    else if name = (FR + 'COLUMN') then
+      SetWidth(lvwItemsTop, v1, v2, v3, v4)
+    else if name = (FR + 'BCOLUMN') then
+      SetWidth(lvwItemsBottom, v1, v2, v3, v4);
+  end;
+
+
+var
+  i, v1, v2, v3, v4: integer;
+  name, settings, value: string;
+  aList: TStrings;
+begin
+  aList := TStringList.Create;
+  FastAssign(rpcGetGraphSizing, aList);
+  for i := 0 to aList.Count - 1 do
+  begin
+    settings := aList[i];
+    name := Piece(settings, '^', 1);
+    value := Piece(settings, '^', 2);
+    if length(value) > 1 then
+    begin
+      v1 := strtointdef(Piece(value, ',', 1), 0);
+      v2 := strtointdef(Piece(value, ',', 2), 0);
+      v3 := strtointdef(Piece(value, ',', 3), 0);
+      v4 := strtointdef(Piece(value, ',', 4), 0);
+      if FGraphType = GRAPH_FLOAT then
+      begin
+        if name = 'FBOUNDS' then
+        begin
+          if value = '0,0,0,0' then
+            WindowState := wsMaximized
+          else
+          begin
+            if v1 > 0 then Left :=   v1;
+            if v2 > 0 then Top :=    v2;
+            if v3 > 0 then Width :=  v3;
+            if v4 > 0 then Height := v4;
+          end;
+        end
+        else
+          Layout(name, 'F', v1, v2, v3, v4);
+      end
+      else
+        Layout(name, 'R', v1, v2, v3, v4);
+    end;
+  end;
+  FreeAndNil(aList);
+end;
+
+procedure TfrmGraphs.SetSize;
+
+  procedure GetWidth(aListView: TListView; var v1, v2, v3, v4: string);
+  begin
+    v1 := inttostr(aListView.Column[0].Width);
+    v2 := inttostr(aListView.Column[1].Width);
+    v3 := inttostr(aListView.Column[2].Width);
+    v4 := inttostr(aListView.Column[3].Width);
+  end;
+
+  procedure Layout(aList: TStrings; FR, v1, v2, v3, v4: string);
+  begin // FR indicates Float or Report graph
+    v1 := inttostr(splItemsTop.Left);
+    aList.Add(FR + 'WIDTH^' + v1);
+    if chkDualViews.Checked then
+      v1 := inttostr(pnlBottom.Height)
+    else
+      v1 := '0';
+    aList.Add(FR + 'BOTTOM^' + v1);
+    GetWidth(lvwItemsTop, v1, v2, v3, v4);
+    aList.Add(FR + 'COLUMN^' + v1 + ',' + v2 + ',' + v3 + ',' + v4);
+    GetWidth(lvwItemsBottom, v1, v2, v3, v4);
+    aList.Add(FR + 'BCOLUMN^' + v1 + ',' + v2 + ',' + v3 + ',' + v4);
+  end;
+
+
+var
+  v1, v2, v3, v4: string;
+  //values: array[0..3] of string;
+  aList: TStrings;
+begin
+  aList := TStringList.Create;
+  if FGraphType = GRAPH_FLOAT then
+  begin
+    v1 := inttostr(Left);
+    v2 := inttostr(Top);
+    v3 := inttostr(Width);
+    v4 := inttostr(Height);
+    if WindowState = wsMaximized then
+      aList.Add('FBOUNDS^0,0,0,0')
+    else
+      aList.Add('FBOUNDS^' + v1 + ',' + v2 + ',' + v3 + ',' + v4);
+    Layout(aList, 'F', v1, v2, v3, v4);
+  end
+  else
+    Layout(aList, 'R', v1, v2, v3, v4);
+  rpcSetGraphSizing(aList);
+  FreeAndNil(aList);
+end;
+
+procedure TfrmGraphs.btnCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmGraphs.btnChangeSettingsClick(Sender: TObject);
+var
+  needtoupdate, okbutton: boolean;
+  conv, i, preconv: integer;
+  PreMaxGraphs: integer;
+  PreMaxSelect: integer;
+  PreMinGraphHeight: integer;
+  PreSortColumn: integer;
+  PreFixedDateRange: boolean;
+  aSettings, filetype, sourcetype: string;
+  PreSources: TStrings;
+begin
+  Application.ProcessMessages;
+  okbutton := false;
+  conv := btnChangeSettings.Tag;
+  preconv := conv;
+  with FGraphSetting do
+  begin
+    PreMaxGraphs := MaxGraphs;
+    PreMaxSelect := MaxSelect;
+    PreMinGraphHeight := MinGraphHeight;
+    PreSortColumn := SortColumn;
+    PreFixedDateRange := FixedDateRange;
+    MaxSelectMin := Max(Max(lvwItemsTop.SelCount, lvwItemsBottom.SelCount), 1);
+    DateRangeOutpatient := FGraphSetting.DateRangeOutpatient;
+  end;
+  PreSources := TStringList.Create;
+  FastAssign(FSources, PreSources);
+  DialogGraphSettings(Font.Size, okbutton, FGraphSetting, FSources, conv, aSettings);
+  if not okbutton then exit;
+  if length(aSettings) > 0 then SetCurrentSetting(aSettings);
+  btnChangeSettings.Tag := conv;
+  pnlInfo.Font.Size := chkItemsTop.Font.Size;
+  SetFontSize(chkItemsTop.Font.Size);
+  InfoMessage(TXT_WARNING, COLOR_WARNING, (conv > 0));
+  pnlHeader.Visible := pnlInfo.Visible;
+  StayOnTop;
+  needtoupdate := (conv <> preconv);
+  for i := 0 to FSources.Count - 1 do
+  begin
+    sourcetype := FSources[i];
+    if Copy(sourcetype, 1, 1) = '*' then
+    begin
+      FSources[i] := Pieces(sourcetype, '^', 2, 4);
+      if not FFastItems then
+      begin
+        filetype := Piece(FSources[i], '^', 1);
+        FastAddStrings(rpcGetItems(filetype, Patient.DFN), GtslItems);
+        needtoupdate := true;
+      end;
+    end;
+    if not needtoupdate then
+      if Piece(PreSources[i], '^', 3) = '0' then
+        needtoupdate := TypeIsDisplayed(Piece(sourcetype, '^', 1))
+      else
+        needtoupdate := not TypeIsDisplayed(Piece(sourcetype, '^', 1));
+  end;
+  if not needtoupdate then
+  with FGraphSetting do
+    if MaxGraphs <> PreMaxGraphs then
+      needtoupdate := true
+    else if MaxSelect <> PreMaxSelect then
+      needtoupdate := true
+    else if MinGraphHeight <> PreMinGraphHeight then
+      needtoupdate := true
+    else if SortColumn <> PreSortColumn then
+      needtoupdate := true
+    else if FixedDateRange <> PreFixedDateRange then
+      needtoupdate := true;
+  if needtoupdate then
+  begin
+    cboDateRangeChange(self);
+  end;
+  ChangeStyle;
+  if lvwItemsTop.SelCount = 0 then
+  begin
+    lstViewsTop.ItemIndex := -1;
+  end;
+  if lvwItemsBottom.SelCount = 0 then
+  begin
+    lstViewsBottom.ItemIndex := -1;
+  end;
+end;
+
+procedure TfrmGraphs.chkDualViewsClick(Sender: TObject);
+begin
+  if chkDualViews.Checked then
+  begin
+    pnlBottom.Height := pnlMain.Height div 2;
+    lvwItemsTopClick(self);
+  end
+  else
+  begin
+    lvwItemsBottom.ClearSelection;
+    lvwItemsBottomClick(self);
+    pnlBottom.Height := 1;
+  end;
+  mnuPopGraphDualViews.Checked := chkDualViews.Checked;
+  with pnlMain.Parent do
+    if BorderWidth <> 1 then            // only do on Graph in Reports tab
+      frmReports.chkDualViews.Checked := chkDualViews.Checked;
+end;
+
+procedure TfrmGraphs.LoadListView(aList: TStrings);
+var
+  i: integer;
+  filename, filenum, itemnum: string;
+begin
+  lvwItemsTop.Items.Clear;
+  lvwItemsBottom.Items.Clear;
+  lvwItemsTop.Items.BeginUpdate;
+  lvwItemsBottom.Items.BeginUpdate;
+  lvwItemsTop.SortType := stNone; // if Sorting during load then potential error
+  lvwItemsBottom.SortType := stNone; // if Sorting during load then potential error
+  with lvwItemsTop do
+  for i := 0 to aList.Count - 1 do
+  begin
+    filenum := Piece(aList[i], '^', 1);
+    filename := FileNameX(filenum);    // change rpc **********
+    itemnum := Piece(aList[i], '^', 2);
+    UpdateView(filename, filenum, itemnum, aList[i], lvwItemsTop);
+  end;
+  lvwItemsBottom.Items.Assign(lvwItemsTop.Items);
+  lvwItemsTop.SortType := stBoth;
+  lvwItemsBottom.SortType := stBoth;
+  if not FItemsSortedTop then
+  begin
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[0]);
+    FItemsSortedTop := true;
+  end;
+  if not FItemsSortedBottom then
+  begin
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[0]);
+    FItemsSortedBottom := true;
+  end;
+  with FGraphSetting do
+  if SortColumn > 0 then
+  begin
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[SortColumn]);
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[SortColumn]);
+    FItemsSortedTop := false;
+    FItemsSortedBottom := false;
+  end;
+  lvwItemsTop.Items.EndUpdate;
+  lvwItemsBottom.Items.EndUpdate;
+end;
+
+procedure TfrmGraphs.FilterListView(oldestdate, newestdate: double);
+var
+  i: integer;
+  lastdate: double;
+  filename, filenum, itemnum: string;
+begin
+  lvwItemsTop.Scroll(-BIG_NUMBER, -BIG_NUMBER);      //faster to set scroll at top
+  lvwItemsBottom.Scroll(-BIG_NUMBER, -BIG_NUMBER);
+  lvwItemsTop.Items.Clear;
+  lvwItemsBottom.Items.Clear;
+  lvwItemsTop.SortType := stNone; // if Sorting during load then potential error
+  lvwItemsBottom.SortType := stNone; // if Sorting during load then potential error
+  if (cboDateRange.ItemIndex > 0) and (cboDateRange.ItemIndex < 9) then
+  begin
+    if TypeIsDisplayed('405') then
+      DateRangeItems(oldestdate, newestdate, '405');  // does not matter for all results ******************
+    if TypeIsDisplayed('52') then
+      DateRangeItems(oldestdate, newestdate, '52');  // does not matter for all results ******************
+    if TypeIsDisplayed('55') then
+      DateRangeItems(oldestdate, newestdate, '55');
+    if TypeIsDisplayed('55NVA') then
+      DateRangeItems(oldestdate, newestdate, '55NVA');
+    if TypeIsDisplayed('9999911') then
+      DateRangeItems(oldestdate, newestdate, '9999911');
+    for i := 0 to GtslItems.Count - 1 do
+    begin
+      filenum := UpperCase(Piece(GtslItems[i], '^', 1));
+      if filenum <> '405' then
+      if filenum <> '52' then
+      if filenum <> '55' then
+      if filenum <> '55NVA' then
+      if filenum <> '9999911' then
+      if TypeIsDisplayed(filenum) then
+      begin
+        lastdate := strtofloatdef(Piece(GtslItems[i], '^', 6), -BIG_NUMBER);
+        if (lastdate > oldestdate) and (lastdate < newestdate) then
+        begin
+          filename := FileNameX(filenum);
+          itemnum := Piece(GtslItems[i], '^', 2);
+          UpdateView(filename, filenum, itemnum, GtslItems[i], lvwItemsTop);
+        end;
+      end;
+    end;
+  end
+  else if (cboDateRange.ItemIndex = 0) or (cboDateRange.ItemIndex > 8) then
+  begin     // manual date range selection
+    for i := 0 to GtslAllTypes.Count - 1 do
+    begin
+      filenum := Piece(GtslAllTypes[i], '^', 1);
+      if TypeIsDisplayed(filenum) then
+      begin
+        DateRangeItems(oldestdate, newestdate, filenum);
+      end;
+    end;
+  end;
+  lvwItemsBottom.Items.Assign(lvwItemsTop.Items);
+  SortListView;
+end;
+
+procedure TfrmGraphs.SortListView;
+var
+  colnum: integer;
+  aProfile: string;
+begin
+  lvwItemsTop.SortType := stBoth;
+  lvwItemsBottom.SortType := stBoth;
+  colnum := 0;
+  if not FItemsSortedTop then
+  begin
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[0]);
+    FItemsSortedTop := true;
+  end;
+  if not FItemsSortedBottom then
+  begin
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[0]);
+    FItemsSortedBottom := true;
+  end;
+  with FGraphSetting do
+  if SortColumn > 0 then
+  begin
+    colnum := SortColumn;
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[SortColumn]);
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[SortColumn]);
+    FItemsSortedTop := false;
+    FItemsSortedBottom := false;
+  end;
+  if lstViewsTop.ItemIndex > 1 then                         // sort by view
+  begin
+    aProfile := lstViewsTop.Items[lstViewsTop.ItemIndex];
+    AssignProfile(aProfile, 'top');
+    if not FItemsSortedTop then lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[colnum]);
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[2]);
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[2]);
+    FItemsSortedTop := false;
+  end;
+  if lstViewsBottom.ItemIndex > 1 then                      // sort by view
+  begin
+    aProfile := lstViewsBottom.Items[lstViewsBottom.ItemIndex];
+    AssignProfile(aProfile, 'bottom');
+    if not FItemsSortedBottom then lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[colnum]);
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[2]);
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[2]);
+    FItemsSortedBottom := false;
+  end;
+end;
+
+procedure TfrmGraphs.DateRangeItems(oldestdate, newestdate: double; filenum: string);
+var
+  i, j: integer;
+  filename, itemnum, itemstuff, mitemnum: string;
+begin
+  FastAssign(rpcDateItem(oldestdate, newestdate, filenum, Patient.DFN), GtslScratchTemp);
+  filename := FileNameX(filenum);
+  lvwItemsTop.Items.BeginUpdate;
+  with lvwItemsTop do
+  for i := 0 to GtslScratchTemp.Count - 1 do
+  begin
+    itemstuff := GtslScratchTemp[i];
+    itemnum := UpperCase(Piece(itemstuff, '^',2));
+    for j := 0 to GtslItems.Count - 1 do
+    if (filenum = UpperCase(Piece(GtslItems[j], '^', 1))) and (itemnum = UpperCase(Piece(GtslItems[j], '^', 2))) then
+      UpdateView(filename, filenum, itemnum, GtslItems[j], lvwItemsTop);
+    if filenum = '63' then
+    for j := 0 to GtslMultiSpec.Count - 1 do
+    begin
+      mitemnum := Piece(GtslMultiSpec[j], '^', 2);
+      if itemnum = Piece(mitemnum, '.', 1) then
+        if DateRangeMultiItems(oldestdate, newestdate, mitemnum) then     //******** check specific date range
+          UpdateView(filename, filenum, mitemnum, GtslMultiSpec[j], lvwItemsTop);
+    end;
+  end;
+  lvwItemsTop.Items.EndUpdate;
+end;
+
+procedure TfrmGraphs.UpdateView(filename, filenum, itemnum, aString: string; aListView: TListView);
+var
+  drugclass, itemname, itemqualifier: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  itemname := Piece(aString, '^', 4);
+  itemqualifier := Pieces(aString, '^', 5, 9);
+  itemqualifier := filenum + '^' + itemnum + '^' + itemqualifier;
+  drugclass := Piece(aString, '^', 8);
+  aListItem := aListView.Items.Add;
+  with aListItem do
+  begin
+    Caption := itemname;
+    SubItems.Add(filename);
+    SubItems.Add('');
+    SubItems.Add(drugclass);
+    aGraphItem := TGraphItem.Create;
+    aGraphItem.Values := itemqualifier;
+    SubItems.AddObject('', aGraphItem);
+  end;
+end;
+
+function TfrmGraphs.DateRangeMultiItems(aOldDate, aNewDate: double; aMultiItem: string): boolean;
+var
+  i: integer;
+  checkdate: double;
+  fileitem: string;
+begin
+  Result := false;
+  fileitem := '63^' + aMultiItem;
+  for i := 0 to GtslData.Count - 1 do
+    if Pieces(GtslData[i], '^', 1, 2) = fileitem then
+    begin
+      checkdate := strtofloatdef(Piece(GtslData[i], '^', 3), BIG_NUMBER);
+      if checkdate <> BIG_NUMBER then
+        if checkdate >= aOldDate then
+          if checkdate <= aNewDate then
+          begin
+            Result := true;
+            break;
+          end;
+    end;
+end;
+
+function TfrmGraphs.FileNameX(filenum: string): string;
+var
+  i: integer;
+  typestring: string;
+begin
+  Result := '';
+  for i := 0 to GtslAllTypes.Count - 1 do
+  begin
+    typestring := GtslAllTypes[i];
+    if Piece(typestring, '^', 1) = filenum then
+    begin
+      Result := Piece(GtslAllTypes[i], '^', 2);
+      break;
+    end;
+  end;
+  if Result = '' then
+  begin
+    for i := 0 to GtslAllTypes.Count - 1 do
+    begin
+      typestring := GtslAllTypes[i];
+      if lowercase(Piece(typestring, '^', 1)) = filenum then
+      begin
+        Result := Piece(GtslAllTypes[i], '^', 2);
+        break;
+      end;
+    end;
+  end;
+end;
+
+function TfrmGraphs.TypeString(filenum: string): string;
+var
+  i: integer;
+  typestring: string;
+begin
+  Result := '';
+  for i := 0 to GtslAllTypes.Count - 1 do
+  begin
+    typestring := GtslAllTypes[i];
+    if Piece(typestring, '^', 1) = filenum then
+    begin
+      Result := typestring;
+      break;
+    end;
+  end;
+  if Result = '' then
+  begin
+    for i := 0 to GtslAllTypes.Count - 1 do
+    begin
+      typestring := GtslAllTypes[i];
+      if lowercase(Piece(typestring, '^', 1)) = filenum then
+      begin
+        Result := typestring;
+        break;
+      end;
+    end;
+  end;
+end;
+
+function TfrmGraphs.ItemName(filenum, itemnum: string): string;
+var
+  i: integer;
+  typestring: string;
+begin
+  Result := '';
+  filenum := UpperCase(filenum);
+  itemnum := UpperCase(itemnum);
+  for i := 0 to GtslItems.Count - 1 do
+  begin
+    typestring := UpperCase(GtslItems[i]);
+    if (Piece(typestring, '^', 1) = filenum) and
+      (Piece(typestring, '^', 2) = itemnum) then
+    begin
+      Result := Piece(typestring, '^', 4);
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.Switch;
+var
+  aList: TStringList;
+begin
+  if FFastTrack then
+    exit;
+  aList := TStringList.Create;
+  if not FFastItems then
+  begin
+    rpcFastItems(Patient.DFN, aList, FFastItems);  // ***
+    if FFastItems then
+    begin
+      FastAssign(aList, GtslItems);
+      rpcFastData(Patient.DFN, aList, FFastData);  // ***
+      if FFastData then
+      begin
+        FastAssign(aList, GtslData);
+        aList.Clear;
+        rpcFastLabs(Patient.DFN, aList, FFastLabs);  // ***
+        if FFastLabs then
+          FastLab(aList);
+        FastAssign(GtslData, GtslCheck);
+      end;
+    end;
+  end;
+  if not FFastTrack then
+    FFastTrack := FFastItems and FFastData and FFastLabs;
+  if not FFastTrack then
+  begin
+    FFastItems := false;
+    FFastData := false;
+    FFastLabs := false;
+  end;
+  FreeAndNil(aList);
+end;
+
+procedure TfrmGraphs.InitialData;
+var
+  i: integer;
+  dfntype, listline: string;
+begin
+  Application.ProcessMessages;
+  FMTimestamp := floattostr(FMNow);
+  SourcesDefault;
+  FastAssign(FSourcesDefault, FSources);
+  for i := 0 to GtslTypes.Count - 1 do
+  begin
+    listline := GtslTypes[i];
+    dfntype := UpperCase(Piece(listline, '^', 1));
+    SetPiece(listline, '^', 1, dfntype);
+    GtslTypes[i] := listline;
+  end;
+  btnChangeSettings.Tag := 0;
+  btnClose.Tag := 0;
+  lstViewsTop.Tag := 0;
+  chartDatelineTop.Tag := 0;
+  lvwItemsBottom.Tag := 0;
+  lvwItemsTop.Tag := 0;
+  pnlFooter.Parent.Tag := 0;
+  pnlItemsBottom.Tag := 0;
+  pnlItemsTop.Tag := 0;
+  pnlTop.Tag := 0;
+  scrlTop.Tag := 0;
+  splGraphs.Tag := 0;
+  lstViewsTop.ItemIndex := -1;
+  lstViewsBottom.ItemIndex := -1;
+  frmGraphData.pnlData.Hint := Patient.DFN;      // use to check for patient change
+  FPrevEvent := '';
+  FWarning := false;
+  FFirstSwitch := true;
+  Application.ProcessMessages;
+  FFastData := false;
+  FFastItems := false;
+  FFastLabs := false;
+  FFastTrack := false;
+  if GraphTurboOn then
+    Switch;
+  //if not FFastItems then
+  if GtslItems.Count = 0 then
+  begin
+    for i := 0 to GtslTypes.Count - 1 do
+    begin
+      dfntype := Piece(GtslTypes[i], '^', 1);
+      if TypeIsLoaded(dfntype) then
+        FastAddStrings(rpcGetItems(dfntype, Patient.DFN), GtslItems);
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.FastLab(aList: TStringList);
+var
+  lastone: boolean;
+  i: integer;
+  aType, aItem, aItemName, typeitem, oldtypeitem, listline: string;
+begin
+  if aList.Count < 1 then
+    exit;
+  GtslScratchLab.Clear;
+  aList.Sort;
+  listline := aList[0];
+  oldtypeitem := Pieces(listline, '^', 1, 2);
+  GtslScratchLab.Add(listline);
+  for i := 1 to aList.Count - 1 do
+  begin
+    lastone := i = aList.Count - 1;
+    listline := aList[i];
+    typeitem := Pieces(listline, '^', 1 , 2);
+    if (typeitem <> oldtypeitem) or lastone then
+    begin
+      if lastone then
+        oldtypeitem := typeitem;
+      aType := Piece(oldtypeitem, '^', 1);
+      aItem := Piece(oldtypeitem, '^', 2);
+      aItemName := MixedCase(ItemName(aType, aItem));
+      LabData(oldtypeitem, aItemName, 'top', false);  // already have lab data
+      GtslScratchLab.Clear;
+    end;
+    GtslScratchLab.Add(listline);
+    oldtypeitem := typeitem;
+  end;
+end;
+
+function TfrmGraphs.TypeIsLoaded(itemtype: string): boolean;
+var
+  i: integer;
+  filetype: string;
+begin
+  if FFastItems then
+  begin
+    Result := true;
+    exit;
+  end;
+  Result := false;
+  for i := 0 to FSources.Count - 1 do
+  begin
+    filetype := Piece(FSources[i], '^', 1);
+    if itemtype = filetype then
+    begin
+      Result := true;
+      break;
+    end;
+  end;
+end;
+
+function TfrmGraphs.TypeIsDisplayed(itemtype: string): boolean;
+var
+  i: integer;
+  displayed, filetype: string;
+begin
+  Result := false;
+  for i := 0 to FSources.Count - 1 do
+  begin
+    filetype := Piece(FSources[i], '^', 1);
+    displayed := Piece(FSources[i], '^', 3);
+    if (itemtype = filetype) then
+    begin
+      if displayed = '1' then Result := true;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.LoadDateRange;
+var
+  defaults, defaultrange: string;
+begin
+  FastAssign(rpcGetGraphDateRange('OR_GRAPHS'), cboDateRange.Items);
+  with cboDateRange do
+  begin
+    defaults := Items[Items.Count - 1];        // ***** CHANGE TO DEFAULTS
+    defaultrange := Piece(defaults, '^', 1);
+    //get report views - param 1 and param 2
+    lvwItemsTop.Hint := Piece(defaults,'^', 8);     // top view
+    lvwItemsBottom.Hint := Piece(defaults,'^', 9);  // bottom view
+    //check if default range already exists
+    if strtointdef(defaultrange, BIG_NUMBER) = BIG_NUMBER then
+      ItemIndex := Items.Count - 1
+    else
+      ItemIndex := strtoint(defaultrange);
+  end;
+end;
+
+procedure TfrmGraphs.LoadType(itemtype, displayed: string);
+var
+  needtoadd: boolean;
+  i: integer;
+  filename, filetype: string;
+begin
+  if displayed <> '1' then displayed := '';
+  needtoadd := true;
+  for i := 0 to FSources.Count - 1 do
+  begin
+    filetype := Piece(FSources[i], '^', 1);
+    if itemtype = filetype then
+    begin
+      needtoadd := false;
+      break;
+    end;
+  end;
+  if needtoadd then
+  begin
+    filename := FileNameX(itemtype);
+    FSources.Add(itemtype + '^' + filename + '^' + displayed);
+    FastAddStrings(rpcGetItems(itemtype, Patient.DFN), GtslItems);
+  end;
+end;
+
+procedure TfrmGraphs.DisplayType(itemtype, displayed: string);
+var
+  i: integer;
+  filename, filetype: string;
+begin
+  if displayed <> '1' then displayed := '';
+  for i := 0 to FSources.Count - 1 do
+  begin
+    filetype := Piece(FSources[i], '^', 1);
+    if itemtype = filetype then
+    begin
+      filename := FileNameX(itemtype);
+      FSources[i] := itemtype + '^' + filename + '^' + displayed;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.DisplayData(aSection: string);
+var
+  i: integer;
+  astring: string;
+  aChart: TChart;
+  aCheckBox: TCheckBox;
+  aListView, aOtherListView: TListView;
+  aDateline, aRightPad: TPanel;
+  aScrollBox: TScrollBox;
+  aMemo: TMemo;
+begin
+  FHintStop := true;
+  SetFontSize(chkItemsTop.Font.Size);
+  if aSection = 'top' then
+  begin
+    aListView := lvwItemsTop;         aOtherListView := lvwItemsBottom;
+    aDateline := pnlDatelineTop;      aChart := chartDatelineTop;
+    aRightPad := pnlTopRightPad;      aScrollBox := scrlTop;
+    aCheckBox := chkItemsTop;         aMemo := memTop;
+  end
+  else
+  begin
+    aListView := lvwItemsBottom;      aOtherListView := lvwItemsTop;
+    aDateline := pnlDatelineBottom;   aChart := chartDatelineBottom;
+    aRightPad := pnlBottomRightPad;   aScrollBox := scrlBottom;
+    aCheckBox := chkItemsBottom;      aMemo := memBottom;
+  end;
+  if aListView.SelCount < 1 then
+  begin
+    if not FFirstClick then
+    begin
+      FFirstClick := true;
+      while aScrollBox.ControlCount > 0 do aScrollBox.Controls[0].Free;
+      exit;
+    end;
+    FFirstClick := false;
+    aDateline.Visible := false;
+    while aScrollBox.ControlCount > 0 do
+      aScrollBox.Controls[0].Free;
+    if aOtherListView.SelCount > 0 then
+      if aOtherListView = lvwItemsTop then
+        ItemsClick(self, lvwItemsTop, lvwItemsBottom, chkItemsTop, lstViewsTop, GtslSelCopyTop, 'top')
+      else
+        ItemsClick(self, lvwItemsBottom, lvwItemsTop, chkItemsBottom, lstViewsBottom, GtslSelCopyBottom, 'bottom');
+    exit;
+  end;
+  aScrollBox.VertScrollBar.Visible := false;
+  aScrollBox.HorzScrollBar.Visible := false;
+  amemo.Visible := false;
+  aChart.RemoveAllSeries;    // this would leave bottom dateline visible on date change
+  for i := GtslNonNum.Count - 1 downto 0 do
+  begin
+    astring := GtslNonNum[i];
+    if Piece(astring, '^', 7) = aSection then
+      GtslNonNum.Delete(i);
+  end;
+  if aCheckBox.Checked then
+    MakeSeparate(aScrollBox, aListView, aRightPad, aSection)
+  else
+    MakeTogetherMaybe(aScrollBox, aListView, aRightPad, aSection);
+  DisplayDataInfo(aScrollBox, aMemo);
+end;
+
+procedure TfrmGraphs.DisplayDataInfo(aScrollBox: TScrollBox; aMemo: TMemo);
+begin
+  ChangeStyle;
+  pnlInfo.Font.Size := chkItemsTop.Font.Size;
+  if ((lvwItemsTop.SelCount > MAX_ITEM_DISCLAIMER) and (not chkItemsTop.Checked))
+    or ((lvwItemsBottom.SelCount > MAX_ITEM_DISCLAIMER) and (not chkItemsBottom.Checked)) then
+    InfoMessage(TXT_DISCLAIMER, COLOR_WARNING, true)
+  else
+    pnlInfo.Visible := false;
+  if btnChangeSettings.Tag > 0 then
+    InfoMessage(TXT_WARNING, COLOR_WARNING, true);
+  if FWarning then
+    pnlInfo.Visible := true;
+  pnlHeader.Visible := pnlInfo.Visible;
+  aScrollBox.VertScrollBar.Visible := true;
+  aScrollBox.HorzScrollBar.Visible := false;
+  if (aScrollBox.ControlCount > FGraphSetting.MaxGraphs)
+  or (aScrollBox.Height < FGraphSetting.MinGraphHeight) then
+    aMemo.Visible:= true;
+end;
+
+procedure TfrmGraphs.chkItemsTopClick(Sender: TObject);
+begin
+  Screen.Cursor := crHourGlass;
+  DisplayData('top');
+  if FFirstSwitch then   // this code makes events appear better (on first click was not displaying bar)
+  begin
+    chartBaseMouseDown(chartDatelineTop, mbLeft, [], 1, 1);
+    DisplayData('top');
+    FFirstSwitch := false;
+  end;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.chkItemsBottomClick(Sender: TObject);
+begin
+  Screen.Cursor := crHourGlass;
+  DisplayData('bottom');
+  if FFirstSwitch then   // this code makes events appear better (on first click was not displaying bar)
+  begin
+    chartBaseMouseDown(chartDatelineBottom, mbLeft, [], 1, 1);
+    DisplayData('bottom');
+    FFirstSwitch := false;
+  end;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.BottomAxis(aScrollBox: TScrollBox);
+var
+  i: integer;
+  ChildControl: TControl;
+begin
+  for i := 0 to aScrollBox.ControlCount - 1 do
+  begin
+    ChildControl := aScrollBox.Controls[i];
+    with (ChildControl as TChart).BottomAxis do
+    begin
+      Automatic := false;
+      Minimum := 0;
+      Maximum := chartDatelineTop.BottomAxis.Maximum;
+      Minimum := chartDatelineTop.BottomAxis.Minimum;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.AdjustTimeframe;
+begin
+  with FGraphSetting do
+  begin
+    if HighTime = 0 then exit;  // no data to chart clear form ???
+    chartDatelineTop.BottomAxis.Minimum := 0;  // avoid possible error
+    chartDatelineTop.BottomAxis.Maximum := HighTime;
+    if LowTime < HighTime then
+      chartDatelineTop.BottomAxis.Minimum := LowTime;
+    chartDatelineBottom.BottomAxis.Minimum := 0;  // avoid possible error
+    chartDatelineBottom.BottomAxis.Maximum := HighTime;
+    if HighTime > FMDateTimeToDateTime(FMStopDate) then
+      chartDatelineTop.BottomAxis.Maximum := FMDateTimeToDateTime(FMStopDate);
+    if LowTime < FMDateTimeToDateTime(FMStartDate) then
+      chartDatelineTop.BottomAxis.Minimum := FMDateTimeToDateTime(FMStartDate);  // *****
+  end;
+  BottomAxis(scrlTop);
+  BottomAxis(scrlBottom);
+end;
+
+procedure TfrmGraphs.ChartOnZoom(Sender: TObject);
+var
+  i: integer;
+  padding: double;
+  datehx: string;
+  BigTime, SmallTime: TDateTime;
+  ChildControl: TControl;
+  aChart: TChart;
+begin
+  if not (Sender is TChart) then exit;
+  aChart := (Sender as TChart);
+  if Not Assigned(FGraphSetting) then Exit;
+  
+  if not FGraphSetting.VerticalZoom then
+  begin
+    padding := 0; //(FYMaxValue - FYMinValue) * ((100 - ZOOM_PERCENT) * 0.01);
+    aChart.LeftAxis.Maximum := BIG_NUMBER;    // avoid min>max error
+    aChart.LeftAxis.Minimum := -BIG_NUMBER;
+    aChart.LeftAxis.Maximum := FYMaxValue + padding;    //padding 0?
+    aChart.LeftAxis.Minimum := FYMinValue - padding;    //padding 0?
+  end;
+  SmallTime := aChart.BottomAxis.Minimum;
+  BigTime := aChart.BottomAxis.Maximum;
+  if BigTime < SmallTime then BigTime := SmallTime;   // avoid min>max error
+  for i := 0 to scrlTop.ControlCount - 1 do
+  begin
+    ChildControl := scrlTop.Controls[i];
+    SizeDates((ChildControl as TChart), SmallTime, BigTime);
+  end;
+  SizeDates(chartDatelineTop, SmallTime, BigTime);
+  for i := 0 to scrlBottom.ControlCount - 1 do
+  begin
+    ChildControl := scrlBottom.Controls[i];
+    SizeDates((ChildControl as TChart), SmallTime, BigTime);
+  end;
+  SizeDates(chartDatelineBottom, SmallTime, BigTime);
+  if FMouseDown and aChart.Zoomed then
+  begin
+    datehx := FloatToStr(SmallTime) + '^' + FloatToStr(BigTime);
+    GtslZoomHistoryFloat.Add(datehx);
+    mnuPopGraphZoomBack.Enabled := true;
+    FMouseDown := false;
+    ZoomUpdateinfo(SmallTime, BigTime);
+  end;
+end;
+
+procedure TfrmGraphs.ChartOnUndoZoom(Sender: TObject);
+var
+  i: integer;
+  padding: double;
+  BigTime, SmallTime: TDateTime;
+  ChildControl: TControl;
+  aChart: TChart;
+begin
+  if not (Sender is TChart) then exit;
+  aChart:= (Sender as TChart);
+  FRetainZoom := false;
+  mnuPopGraphZoomBack.Enabled := false;
+  GtslZoomHistoryFloat.Clear;
+  if not FGraphSetting.VerticalZoom then
+  begin
+    padding := 0; //(FYMaxValue - FYMinValue) * ((100 - ZOOM_PERCENT) * 0.01);
+    aChart.LeftAxis.Maximum := BIG_NUMBER;    // avoid min>max error
+    aChart.LeftAxis.Minimum := -BIG_NUMBER;
+    aChart.LeftAxis.Maximum := FYMaxValue + padding;    //padding 0?
+    aChart.LeftAxis.Minimum := FYMinValue - padding;    //padding 0?
+  end;
+  SmallTime := aChart.BottomAxis.Minimum;
+  BigTime := aChart.BottomAxis.Maximum;
+  if BigTime < SmallTime then BigTime := SmallTime;   // avoid min>max error
+  for i := 0 to scrlTop.ControlCount - 1 do
+  begin
+    ChildControl := scrlTop.Controls[i];
+    SizeDates((ChildControl as TChart), SmallTime, BigTime);
+  end;
+  SizeDates(chartDatelineTop, SmallTime, BigTime);
+  for i := 0 to scrlBottom.ControlCount - 1 do
+  begin
+    ChildControl := scrlBottom.Controls[i];
+    SizeDates((ChildControl as TChart), SmallTime, BigTime);
+  end;
+  SizeDates(chartDatelineBottom, SmallTime, BigTime);
+  if FMouseDown then
+  begin
+    FMouseDown := false;
+    InfoMessage('', COLOR_INFO, false);
+    pnlHeader.Visible := false;
+  end;
+end;
+
+procedure TfrmGraphs.SizeDates(aChart: TChart; aSmallTime, aBigTime: TDateTime);
+var
+  datediff, yeardiff: integer;
+  pad: double;
+begin
+  with aChart.BottomAxis do
+  begin
+    Automatic := false;
+    Maximum := BIG_NUMBER;    // avoid min>max error
+    Minimum := -BIG_NUMBER;
+    Minimum := aSmallTime;
+    Maximum := aBigTime;
+    Increment := DateTimeStep[dtOneMinute];
+    datediff := DaysBetween(aBigTime, aSmallTime);
+    yeardiff := datediff div 365;
+    DateTimeFormat := '';
+    Labels := true;
+    if yeardiff > 0 then
+    begin
+      if (pnlScrollTopBase.Width div yeardiff) < DWIDTH_MDY then
+        DateTimeFormat := DFORMAT_MYY;
+      if (pnlScrollTopBase.Width div yeardiff) < DWIDTH_MYY then
+        DateTimeFormat := DFORMAT_YY;
+      if (pnlScrollTopBase.Width div yeardiff) < DWIDTH_YY then
+        Labels := false;
+    end;
+  end;
+  GraphFooter(aChart, datediff, aSmallTime);
+  pad := (aBigTime - aSmallTime) * 0.07;
+  SeriesForLabels(aChart, 'serNonNumBottom', pad);
+  SeriesForLabels(aChart, 'serNonNumTop', pad);
+  if length(aChart.Hint) > 0 then SeriesForLabels(aChart, 'serComments', pad);
+end;
+
+procedure TfrmGraphs.SeriesForLabels(aChart: TChart; aID: string; pad: double);
+var
+  i: integer;
+  aPointSeries: TPointSeries;
+  max, min: double;
+begin
+  for i := 0 to aChart.SeriesCount - 1 do
+  begin
+    if aChart.Series[i].Identifier = aID then
+    begin
+      aPointSeries := (aChart.Series[i] as TPointSeries);
+      aPointSeries.Clear;
+      if aID = 'serNonNumBottom' then
+      begin
+        min := aChart.LeftAxis.Minimum;
+        if min > aChart.MinYValue(aChart.LeftAxis) then
+           min := aChart.MinYValue(aChart.LeftAxis);
+        if min < 0 then min := 0;
+        aPointSeries.AddXY(aChart.BottomAxis.Minimum, min, '', clTeeColor) ;
+      end
+      else if aID  = 'serNonNumTop' then
+      begin
+        max := aChart.LeftAxis.Maximum;
+        if max < aChart.MaxYValue(aChart.LeftAxis) then
+           max := aChart.MaxYValue(aChart.LeftAxis);
+        aPointSeries.AddXY(aChart.BottomAxis.Minimum, max, '', clTeeColor) ;
+      end
+      else if aID = 'serComments' then
+      begin
+        min := aChart.MinYValue(aChart.LeftAxis);
+        if aChart.SeriesCount = 2 then        // only 1 series (besides comment)
+          if aChart.Series[0].Count = 1 then  // only 1 numeric
+            min := min - 1;                   // force comment label to bottom
+        if min < 0 then min := 0;
+        aPointSeries.AddXY((aChart.BottomAxis.Maximum - pad), min, '', clTeeColor) ;
+      end;
+      aPointSeries.Marks.Visible := true;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.GraphFooter(aChart: TChart; datediff: integer; aDate: TDateTime);
+begin
+  if datediff < 1 then
+  begin
+    if not aChart.Foot.Visible then
+    begin
+      aChart.Foot.Text.Clear;
+      aChart.Foot.Text.Insert(0, FormatDateTime('mmm d, yyyy', aDate));
+      aChart.Foot.Font.Color := clBtnText;
+      aChart.Foot.Visible := true;
+    end;
+  end
+  else
+    aChart.Foot.Visible := false;
+end;
+
+procedure TfrmGraphs.MakeSeparate(aScrollBox: TScrollBox; aListView:
+  TListView; aPadPanel: TPanel; section: string);
+var
+  displayheight, displaynum, i: integer;
+begin
+  FNonNumerics := false;
+  if section = 'top' then pnlItemsTop.Tag := 0 else pnlItemsBottom.Tag := 0;
+  while aScrollBox.ControlCount > 0 do
+    aScrollBox.Controls[0].Free;
+  aPadPanel.Visible := false;
+  if FGraphSetting.Hints then         //**************
+  begin
+    chartDatelineTop.OnMouseMove := chartBaseMouseMove;
+    chartDatelineBottom.OnMouseMove := chartBaseMouseMove;
+  end
+  else
+  begin
+    chartDatelineTop.OnMouseMove := nil;
+    chartDatelineBottom.OnMouseMove := nil;
+  end;
+  MakeSeparateItems(aScrollBox, aListView, section);
+  if section = 'top' then
+  begin
+    pnlDatelineTop.Align := alBottom;
+    pnlDatelineTop.Height := 30;
+    scrlTop.Align := alClient;
+    pnlDatelineTop.Visible := false;
+  end
+  else
+  begin
+    pnlDatelineBottom.Align := alBottom;
+    pnlDatelineBottom.Height := 30;
+    scrlBottom.Align := alClient;
+    pnlDatelineBottom.Visible := false;
+  end;
+  with aScrollBox do
+  begin
+    if ControlCount < FGraphSetting.MaxGraphs then        //**** formating should be made for top & bottom
+      displaynum := ControlCount
+    else
+      displaynum := FGraphSetting.MaxGraphs;
+    if displaynum = 0 then
+      displaynum := 3;
+    if (Height div displaynum) < FGraphSetting.MinGraphHeight then
+      displayheight := FGraphSetting.MinGraphHeight
+    else
+      displayheight := (Height div displaynum);
+    for i := 0 to aScrollBox.ControlCount - 1 do
+      Controls[i].height := displayheight;
+  end;
+  AdjustTimeframe;
+  if chartDatelineTop.Visible then chartDatelineTop.ZoomPercent(ZOOM_PERCENT);
+  if chartDatelineBottom.Visible then chartDatelineBottom.ZoomPercent(ZOOM_PERCENT);
+  if FNonNumerics then
+    if section = 'top' then pnlItemsTop.Tag := 1
+    else pnlItemsBottom.Tag := 1;
+end;
+
+function TfrmGraphs.TitleInfo(filetype, typeitem, caption: string): string;
+var
+  i: integer;
+  checkdata, high, low, specimen, specnum, units: string;
+begin
+  if (filetype = '63') and (GtslData.Count > 0) then
+  begin
+    checkdata := '';
+    for i := 0 to GtslData.Count - 1 do
+    begin
+      checkdata := GtslData[i];
+      if (Piece(checkdata, '^', 1) = '63') and (Piece(checkdata, '^', 2) = typeitem) then
+        break;
+    end;
+    specnum := Piece(checkdata, '^', 7);
+    specimen := Piece(checkdata, '^', 8);
+    RefUnits(typeitem, specnum, low, high, units);
+    units := LowerCase(units);
+    if units = '' then units := '  ';
+  end
+  else
+  begin
+    specimen := ''; low := ''; high := ''; units := '';
+  end;
+  Result := filetype + '^' + typeitem + '^' + caption + '^' +
+            specimen + '^' + low + '^' + high + '^' + units + '^';
+end;
+
+procedure TfrmGraphs.MakeSeparateItems(aScrollBox: TScrollBox; aListView: TListView; section: string);
+var
+  bcnt, gcnt, graphtype, lcnt, ncnt, pcnt, vcnt: integer;
+  aTitle, filetype, typeitem: string;
+  newchart: TChart;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  pcnt := 0; gcnt := 0; vcnt := 0; lcnt := 0; ncnt := 0; bcnt := 0;
+  aListItem := aListView.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := UpperCase(Piece(aGraphItem.Values, '^', 1));
+    typeitem := UpperCase(Piece(aGraphItem.Values, '^', 2));
+    graphtype := GraphTypeNum(filetype); //*****strtointdef(Piece(aListBox.Items[j], '^', 2), 1);
+    aTitle := TitleInfo(filetype, typeitem, aListItem.Caption);
+    newchart := TChart.Create(self);
+    newchart.Tag := GtslNonNum.Count;
+    MakeChart(newchart, aScrollBox);
+    with newchart do
+    begin
+      Height := 170;
+      Align := alBottom;
+      Align := alTop;
+      Tag := aListItem.Index;
+      //SetPiece(aTitle, '^', 3, 'zzzz: ' + Piece(aTitle, '^', 3)); // test prefix
+      if (graphtype = 1) and (btnChangeSettings.Tag = 1) then
+        LeftAxis.Title.Caption := 'StdDev'
+      else if (graphtype = 1) and (btnChangeSettings.Tag = 2) then
+      begin
+        LeftAxis.Title.Caption := '1/' + Piece(aTitle, '^', 7);
+        SetPiece(aTitle, '^', 3, 'Inverse ' + Piece(aTitle, '^', 3));
+      end
+      else
+        LeftAxis.Title.Caption := Piece(aTitle, '^', 7);
+      if graphtype <> 1 then
+      begin
+        LeftAxis.Visible := false;
+        MarginLeft := PadLeftEvent(pnlScrollTopBase.Width);
+        //MarginLeft := round((65 / (pnlScrollTopBase.Width + 1)) * 100);       // ************* marginleft is a %
+      end;
+    end;
+    splGraphs.Tag := 1;    // show ref ranges
+    if graphtype = 4 then graphtype := 2;         // change points to be bars
+    case graphtype of
+      1:  MakeLineSeries(newchart, aTitle, filetype, section, lcnt, ncnt, false);
+      2:  MakeBarSeries(newchart, aTitle, filetype, bcnt);
+      3:  MakeVisitGanttSeries(newchart, aTitle, filetype, vcnt);
+      4:  MakePointSeries(newchart, aTitle, filetype, pcnt);
+      8:  MakeGanttSeries(newchart, aTitle, filetype, gcnt);
+    end;
+    MakeOtherSeries(newchart);
+    aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  if (FGraphSetting.HighTime = FGraphSetting.LowTime)
+  or (lcnt = 1) or (pcnt = 1) or (bcnt = 1) or (vcnt = 1) then
+  begin
+    FGraphSetting.HighTime := FGraphSetting.HighTime + 1;
+    FGraphSetting.LowTime := FGraphSetting.LowTime - 1;
+  end;
+end;
+
+function TfrmGraphs.PadLeftEvent(aWidth: integer): integer;
+begin
+  if aWidth < 50 then
+    Result := 10
+  else if aWidth < 100 then
+    Result := 36
+  else if aWidth < 200 then
+    Result := 28
+  else if aWidth < 220 then
+    Result := 24
+  else if aWidth < 240 then
+    Result := 23
+  else if aWidth < 270 then
+    Result := 21
+  else if aWidth < 300 then
+    Result := 18
+  else if aWidth < 400 then
+    Result := 14
+  else if aWidth < 500 then
+    Result := 11
+  else if aWidth < 600 then
+    Result := 10
+  else if aWidth < 700 then
+    Result := 9
+  else if aWidth < 800 then
+    Result := 8
+  else if aWidth < 900 then
+    Result := 7
+  else if aWidth < 1000 then
+    Result := 6
+  else
+    Result := 5;
+end;
+
+function TfrmGraphs.PadLeftNonNumeric(aWidth: integer): integer;
+begin
+  if aWidth < 50 then
+    Result := 10
+  else if aWidth < 100 then
+    Result := 36
+  else if aWidth < 200 then
+    Result := 16
+  else if aWidth < 220 then
+    Result := 14
+  else if aWidth < 240 then
+    Result := 12
+  else if aWidth < 270 then
+    Result := 10
+  else if aWidth < 300 then
+    Result := 9
+  else if aWidth < 400 then
+    Result := 8
+  else if aWidth < 500 then
+    Result := 7
+  else if aWidth < 600 then
+    Result := 6
+  else
+    Result := 5;
+end;
+
+procedure TfrmGraphs.MakeTogetherMaybe(aScrollBox: TScrollBox; aListView:
+  TListView; aPadPanel: TPanel; section: string);
+var
+  filetype: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  FNonNumerics := false;
+  if section = 'top' then pnlItemsTop.Tag := 0 else pnlItemsBottom.Tag := 0;
+  if aListView.SelCount = 1 then                 // one lab test - make separate
+  begin
+    aListItem := aListView.Selected;
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := UpperCase(Piece(aGraphItem.Values, '^', 1));
+    if (filetype = '63') or (filetype = '120.5') then
+    begin
+      MakeSeparate(aScrollBox, aListView, aPadPanel, section);
+      exit;
+    end;
+  end;
+  MakeTogether(aScrollBox, aListView, aPadPanel, section);
+end;
+
+procedure TfrmGraphs.MakeTogether(aScrollBox: TScrollBox; aListView:
+  TListView; aPadPanel: TPanel; section: string);
+var
+  anylines, nolines, onlylines, singlepoint: boolean;
+  bcnt, gcnt, graphtype, lcnt, pcnt, vcnt: integer;
+  portion: double;
+  filetype, typeitem: string;
+  newchart: TChart;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  pcnt := 0; gcnt := 0; lcnt := 0; bcnt := 0; vcnt := 0;
+  onlylines := true;
+  anylines := false;
+  nolines := true;
+  FNonNumerics := false;
+  if section = 'top' then pnlItemsTop.Tag := 0 else pnlItemsBottom.Tag := 0;
+  aListItem := aListView.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := UpperCase(Piece(aGraphItem.Values, '^', 1));
+    typeitem := UpperCase(Piece(aGraphItem.Values, '^', 2));
+    graphtype := GraphTypeNum(filetype);
+    case graphtype of
+    1: lcnt := lcnt + 1;
+    2: bcnt := bcnt + 1;
+    3: vcnt := vcnt + 1;
+    4: pcnt := pcnt + 1;
+    8: gcnt := gcnt + 1;
+    end;
+    if graphtype = 1 then
+    begin
+      anylines := true;
+      nolines := false;
+    end
+    else
+      onlylines := false;
+    aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  if section = 'top' then
+    chkItemsTop.Checked := false
+  else
+    chkItemsBottom.Checked := false;
+  GtslTempCheck.Clear;
+  while aScrollBox.ControlCount > 0 do aScrollBox.Controls[0].Free;
+  newchart := TChart.Create(self);  // whynot use base?
+  MakeChart(newchart, aScrollBox);
+  with newchart do          // if a single line graph do lab stuff (ref range, units) ****************************************
+  begin
+    Align := alClient;
+    LeftAxis.Title.Caption := ' ';
+  end;
+  aPadPanel.Visible := true;
+  portion := PortionSize(lcnt, pcnt, gcnt, vcnt, bcnt);
+  if section = 'top' then
+    SizeTogether(onlylines, nolines, anylines, scrlTop, newchart,
+      pnlDatelineTop, pnlScrollTopBase, portion)
+  else
+    SizeTogether(onlylines, nolines, anylines, scrlBottom, newchart,
+      pnlDatelineBottom, pnlScrollBottomBase, portion);
+  if btnChangeSettings.Tag = 1 then  splGraphs.Tag := 1 // show ref ranges
+  else splGraphs.Tag := 0;
+
+  if nolines then MakeTogetherNoLines(aListView, section)
+  else if onlylines then MakeTogetherOnlyLines(aListView, section, newchart)
+  else if anylines then MakeTogetherAnyLines(aListView, section, newchart);
+  MakeOtherSeries(newchart);
+
+  singlepoint := (lcnt = 1) or (pcnt = 1) or (bcnt = 1) or (vcnt = 1);
+  GraphBoundry(singlepoint);
+  if FNonNumerics then
+    if section = 'top' then pnlItemsTop.Tag := 1
+    else pnlItemsBottom.Tag := 1;
+end;
+
+procedure TfrmGraphs.GraphBoundry(singlepoint: boolean);
+begin
+  if (FGraphSetting.HighTime = FGraphSetting.LowTime)
+  or singlepoint then
+  begin
+    FGraphSetting.HighTime := FGraphSetting.HighTime + 1;
+    FGraphSetting.LowTime := FGraphSetting.LowTime - 1;
+    chartDatelineTop.LeftAxis.Minimum := chartDatelineTop.LeftAxis.Minimum - 0.5;
+    chartDatelineTop.LeftAxis.Maximum := chartDatelineTop.LeftAxis.Maximum + 0.5;
+    chartDatelineBottom.LeftAxis.Minimum := chartDatelineBottom.LeftAxis.Minimum - 0.5;
+    chartDatelineBottom.LeftAxis.Maximum := chartDatelineBottom.LeftAxis.Maximum + 0.5;
+  end;
+  if FGraphSetting.Hints then
+  begin
+    chartDatelineTop.OnMouseMove := chartBaseMouseMove;
+    chartDatelineBottom.OnMouseMove := chartBaseMouseMove;
+  end
+  else
+  begin
+    chartDatelineTop.OnMouseMove := nil;
+    chartDatelineBottom.OnMouseMove := nil;
+  end;
+  AdjustTimeframe;
+  if chartDatelineTop.Visible then chartDatelineTop.ZoomPercent(ZOOM_PERCENT);
+  if chartDatelineBottom.Visible then chartDatelineBottom.ZoomPercent(ZOOM_PERCENT);
+end;
+
+procedure TfrmGraphs.MakeTogetherNoLines(aListView: TListView; section: string);
+var
+  bcnt, gcnt, graphtype, pcnt, vcnt: integer;
+  aTitle, filetype, typeitem: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  pcnt := 0; gcnt := 0; vcnt := 0; bcnt := 0;
+  aListItem := aListView.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := Piece(aGraphItem.Values, '^', 1);
+    typeitem := Piece(aGraphItem.Values, '^', 2);
+    aTitle := filetype + '^' + typeitem + '^' + aListItem.Caption + '^';
+    graphtype := GraphTypeNum(filetype);
+    if section = 'top' then
+      MakeDateline(section, aTitle, filetype, chartDatelineTop, graphtype, bcnt, pcnt, gcnt, vcnt)
+    else
+      MakeDateline(section, aTitle, filetype, chartDatelineBottom, graphtype, bcnt, pcnt, gcnt, vcnt);
+    aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  if section = 'top' then
+  begin
+    scrlTop.Align := alTop;
+    scrlTop.Height := 1; //pnlScrollTopBase.Height div 4;
+    pnlDatelineTop.Align := alClient;
+    pnlDatelineTop.Visible := true;
+  end
+  else
+  begin
+    scrlBottom.Align := alTop;
+    scrlBottom.Height := 1; //pnlScrollBottomBase.Height div 4;
+    pnlDatelineBottom.Align := alClient;
+    pnlDatelineBottom.Visible := true;
+  end;
+end;
+
+procedure TfrmGraphs.MakeTogetherOnlyLines(aListView: TListView; section: string; aChart: TChart);
+var
+  lcnt, ncnt: integer;
+  aTitle, filetype, typeitem: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  lcnt := 0;
+  aListItem := aListView.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := Piece(aGraphItem.Values, '^', 1);
+    typeitem := Piece(aGraphItem.Values, '^', 2);
+    aTitle := TitleInfo(filetype, typeitem, aListItem.Caption);
+    MakeLineSeries(aChart, aTitle, filetype, section, lcnt, ncnt, true);
+    if FDisplayFreeText = true then DisplayFreeText(aChart);
+    aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  if section = 'top' then
+  begin
+    pnlDatelineTop.Align := alBottom;
+    pnlDatelineTop.Height := 5;
+    scrlTop.Align := alClient;
+    pnlDatelineTop.Visible := false;
+  end
+  else
+  begin
+    pnlDatelineBottom.Align := alBottom;
+    pnlDatelineBottom.Height := 5;
+    scrlBottom.Align := alClient;
+    pnlDatelineBottom.Visible := false;
+  end;
+  with aChart do
+  begin
+    if btnChangeSettings.Tag = 1 then
+      LeftAxis.Title.Caption := 'StdDev';
+    Visible := true;
+  end;
+end;
+
+procedure TfrmGraphs.MakeTogetherAnyLines(aListView: TListView; section: string; aChart: TChart);
+var
+  singletest: boolean;
+  bcnt, gcnt, graphtype, lcnt, ncnt, pcnt, vcnt: integer;
+  aTitle, filetype, typeitem: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  singletest := SingleLabTest(aListView);
+  pcnt := 0; gcnt := 0; vcnt := 0; lcnt := 0; bcnt := 0;
+  aListItem := aListView.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := Piece(aGraphItem.Values, '^', 1);
+    typeitem := Piece(aGraphItem.Values, '^', 2);
+    aTitle := TitleInfo(filetype, typeitem, aListItem.Caption);
+    graphtype := GraphTypeNum(filetype);
+    if graphtype = 1 then
+    begin
+      if btnChangeSettings.Tag = 1 then
+        aChart.LeftAxis.Title.Caption := 'StdDev'
+      else
+        aChart.LeftAxis.Title.Caption := Piece(aTitle, '^', 7);
+      if singletest then
+        splGraphs.Tag := 1
+      else
+        splGraphs.Tag := 0;
+      MakeLineSeries(aChart, aTitle, filetype, section, lcnt, ncnt, true);
+      if FDisplayFreeText = true then DisplayFreeText(aChart);
+    end
+    else if section = 'top' then
+      MakeDateline(section, aTitle, filetype, chartDatelineTop, graphtype, bcnt, pcnt, gcnt, vcnt)
+    else
+      MakeDateline(section, aTitle, filetype, chartDatelineBottom, graphtype, bcnt, pcnt, gcnt, vcnt);
+    aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  if section = 'top' then
+  begin
+    scrlTop.Align := alTop;
+    pnlDatelineTop.Align := alBottom;
+    pnlDatelineTop.Height := pnlScrollTopBase.Height div 2;
+    scrlTop.Align := alClient;
+    pnlDatelineTop.Visible := true;
+  end
+  else
+  begin
+    scrlBottom.Align := alTop;
+    pnlDatelineBottom.Align := alBottom;
+    pnlDatelineBottom.Height := pnlScrollBottomBase.Height div 2;
+    scrlBottom.Align := alClient;
+    pnlDatelineBottom.Visible := true;
+  end;
+  with aChart do
+  begin
+    if btnChangeSettings.Tag = 1 then
+      LeftAxis.Title.Caption := 'StdDev';
+    Visible := true;
+  end;
+end;
+
+function TfrmGraphs.SingleLabTest(aListView: TListView): boolean;
+var
+  cnt: integer;
+  filetype: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  cnt := 0;
+  aListItem := aListView.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    filetype := Piece(aGraphItem.Values, '^', 1);
+    if filetype = '120.5' then
+    begin
+      cnt := BIG_NUMBER;
+      break;
+    end;
+    if filetype = '63' then
+      cnt := cnt + 1;
+    if cnt > 1 then
+      break;
+    aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  Result := (cnt = 1);
+end;
+
+procedure TfrmGraphs.MakeChart(aChart: TChart; aScrollBox: TScrollBox);
+begin
+  with aChart do
+  begin
+    Parent := aScrollBox;
+    View3D := false;
+    Chart3DPercent := 10;
+    AllowPanning := pmNone;
+    Gradient.EndColor := clGradientActiveCaption;
+    Gradient.StartColor := clWindow;
+    Legend.LegendStyle := lsSeries;
+    Legend.ShadowSize := 1;
+    Legend.Color := clCream;
+    Legend.VertMargin := 0;
+    Legend.Alignment := laTop;
+    Legend.Visible := true;
+    BottomAxis.ExactDateTime := true;
+    BottomAxis.Increment := DateTimeStep[dtOneMinute];
+    HideDates(aChart);
+    BevelOuter := bvNone;
+    OnZoom := ChartOnZoom;
+    OnUndoZoom := ChartOnUndoZoom;
+    OnClickSeries := chartBaseClickSeries;
+    OnClickLegend := chartBaseClickLegend;
+    OnDblClick := mnuPopGraphDetailsClick;
+    OnMouseDown := chartBaseMouseDown;
+    OnMouseUp := chartBaseMouseUp;
+    if FGraphSetting.Hints then
+      OnMouseMove := chartBaseMouseMove
+    else
+      OnMouseMove := nil;
+  end;
+end;
+
+procedure TfrmGraphs.MakeSeriesInfo(aChart: TChart; aSeries: TChartSeries; aTitle, aFileType: string; aSerCnt: integer);
+begin
+  with aSeries do
+  begin
+    Active := true;
+    ParentChart := aChart;
+    Title := Piece(aTitle, '^', 3);
+    GetData(aTitle);
+    Identifier := aFileType;
+    SeriesColor := NextColor(aSerCnt);
+    ColorEachPoint := false;
+    ShowInLegend := true;
+    Marks.Style := smsLabel;
+    Marks.BackColor := clInfoBk;
+    Marks.Frame.Visible := true;
+    Marks.Visible := false;
+    OnGetMarkText := serDatelineTop.OnGetMarkText;
+    XValues.DateTime := True;
+    GetHorizAxis.ExactDateTime := True;
+    GetHorizAxis.Increment := DateTimeStep[dtOneMinute];
+  end;
+end;
+
+procedure TfrmGraphs.MakeSeriesPoint(aChart: TChart; aPointSeries: TPointSeries);
+begin
+  with aPointSeries do
+  begin
+    Active := true;
+    ParentChart := aChart;
+    Title := '';
+    Identifier := '';
+    SeriesColor := aChart.Color;
+    ColorEachPoint := false;
+    ShowInLegend := false;
+    Marks.Style := smsLabel;
+    Marks.BackColor := clInfoBk;
+    Marks.Frame.Visible := true;
+    Marks.Visible := false;
+    OnGetMarkText := serDatelineTop.OnGetMarkText;
+    XValues.DateTime := true;
+    Pointer.Visible := true;
+    Pointer.InflateMargins := true;
+    Pointer.Style := psSmallDot;
+    Pointer.Pen.Visible := true;
+  end;
+end;
+
+procedure TfrmGraphs.MakeSeriesRef(aChart: TChart; aTest, aRef: TLineSeries; aTitle, aValue: string; aDate: double);
+var
+  value: double;
+begin
+  with aRef do
+  begin
+    Active := true;
+    ParentChart := aChart;
+    XValues.DateTime := True;
+    Pointer.Visible := false;
+    Pointer.InflateMargins := true;
+    OnGetMarkText := serDatelineTop.OnGetMarkText;
+    ColorEachPoint := false;
+    Title := aTitle + aValue;
+    Pointer.Style := psCircle;
+    SeriesColor := clTeeColor; //aTest.SeriesColor; // clBtnShadow;  // 
+    Marks.Visible := false;
+    LinePen.Visible := true;
+    LinePen.Width := 1;
+    LinePen.Style := psDash;  //does not show when width <> 1
+  end;
+  value := strtofloatdef(aValue, -BIG_NUMBER);
+  if value <> -BIG_NUMBER then
+  begin
+    aRef.AddXY(IncDay(FGraphSetting.LowTime, -1), value, '', clTeeColor);
+    aRef.AddXY(IncDay(FGraphSetting.HighTime, 1), value, '', clTeeColor);
+    BorderValue(aDate, value);
+  end;
+end;
+
+procedure TfrmGraphs.MakeSeriesBP(aChart: TChart; aTest, aBP: TLineSeries; aFileType: string);
+begin
+  with aBP do
+  begin
+    ParentChart := aChart;
+    Title := 'Blood Pressure';
+    XValues.DateTime := true;
+    Pointer.Style := aTest.Pointer.Style;
+    ShowInLegend := false;    //****
+    Identifier := aFileType;
+    Pointer.Visible := true;
+    Pointer.InflateMargins := true;
+    ColorEachPoint := false;
+    SeriesColor := aTest.SeriesColor;
+    Marks.BackColor := clInfoBk;
+  end;
+end;
+
+procedure TfrmGraphs.MakeOtherSeries(aChart: TChart);
+begin
+  if GtslNonNum.Count > 0 then
+  begin
+    MakeNonNumerics(aChart);
+    if FDisplayFreeText = true then DisplayFreeText(aChart);
+  end;
+  if length(aChart.Hint) > 0 then
+  begin
+    MakeComments(aChart);
+  end;
+end;
+
+procedure TfrmGraphs.MakeComments(aChart: TChart);
+var
+  serComment: TPointSeries;
+begin
+  serComment := TPointSeries.Create(aChart);
+  MakeSeriesPoint(aChart, serComment);
+  with serComment do
+  begin
+    Identifier := 'serComments';
+    Title := TXT_COMMENTS;
+    SeriesColor := clTeeColor;
+    Marks.ArrowLength := -24;
+    Marks.Visible := true;
+    end;
+end;
+
+procedure TfrmGraphs.MakeNonNumerics(aChart: TChart);
+var
+  nonnumericonly, nonnumsection: boolean;
+  i, bmax, tmax: integer;
+  padvalue, highestvalue, lowestvalue, diffvalue: double;
+  astring, listofseries, section: string;
+  serBlank: TPointSeries;
+begin
+  if aChart.Parent = scrlBottom then section := 'bottom'
+  else section := 'top';
+  nonnumericonly := true;
+  for i := 0 to aChart.SeriesCount - 1 do
+  begin
+    if (aChart.Series[i] is TLineSeries) then
+      if aChart.Series[i].Count > 0 then
+      begin
+        nonnumericonly := false;
+        break;
+      end;
+  end;
+  PadNonNum(aChart, section, listofseries, bmax, tmax);
+  if bmax = 0 then bmax := 1;
+  if tmax = 0 then tmax := 1;
+  if nonnumericonly then
+  begin
+    highestvalue := 1;
+    lowestvalue := 0;
+  end
+  else
+  begin
+    highestvalue := aChart.MaxYValue(aChart.LeftAxis);
+    lowestvalue := aChart.MinYValue(aChart.LeftAxis);
+  end;
+  diffvalue := highestvalue - lowestvalue;
+  if diffvalue = 0 then
+    padvalue := highestvalue / 2
+  else
+    padvalue := POINT_PADDING * diffvalue;
+  highestvalue := highestvalue + (tmax * padvalue);
+  lowestvalue := lowestvalue - (bmax * padvalue);
+  if not (aChart.MinYValue(aChart.LeftAxis) < 0) then
+  begin
+    if highestvalue < 0 then highestvalue := 0;
+    if lowestvalue < 0 then lowestvalue := 0;
+  end;
+  if lowestvalue > highestvalue then
+     lowestvalue := highestvalue;
+  aChart.LeftAxis.Maximum := highestvalue;
+  aChart.LeftAxis.Minimum := lowestvalue;
+  nonnumsection := false;
+  for i := 0 to GtslNonNum.Count - 1 do
+  begin
+    astring := GtslNonNum[i];
+    if Piece(astring, '^', 7) = section then
+    begin
+      nonnumsection := true;
+      break;
+    end;
+  end;
+  if nonnumericonly and nonnumsection then
+  begin
+    serBlank := TPointSeries.Create(aChart);
+    MakeSeriesPoint(aChart, serBlank);
+    with serBlank do
+    begin
+      AddXY(aChart.BottomAxis.Minimum, highestvalue, '', aChart.Color);
+      AddXY(aChart.BottomAxis.Minimum, lowestvalue, '', aChart.Color);
+    end;
+    aChart.LeftAxis.Labels := false;
+    aChart.MarginLeft := PadLeftNonNumeric(pnlScrollTopBase.Width);
+    //aChart.MarginLeft := round((40 / (pnlScrollTopBase.Width + 1)) * 100);       // ************* marginleft is a %
+    ChartOnUndoZoom(aChart);
+  end;
+  MakeNonNumSeries(aChart, padvalue, highestvalue, lowestvalue, listofseries, section);
+end;
+
+procedure TfrmGraphs.MakeNonNumSeries(aChart: TChart; padvalue, highestvalue, lowestvalue: double; listofseries, section: string);
+var
+  asernum, i, j, originalindex, linenum, offset: integer;
+  nonvalue, graphvalue: double;
+  avalue, line: string;
+  adatetime: TDateTime;
+  serPoint: TPointSeries;
+begin
+  for j := 2 to BIG_NUMBER do
+  begin
+    line := Piece(listofseries, '^' , j);
+    if length(line) < 1 then break;
+    linenum := strtointdef(line, -BIG_NUMBER);
+    if linenum = -BIG_NUMBER then break;
+    serPoint := TPointSeries.Create(aChart);
+    MakeSeriesPoint(aChart, serPoint);
+    with serPoint do
+    begin
+      serPoint.Title := '(non-numeric)';
+      serPoint.Identifier := (aChart.Series[linenum] as TCustomSeries).Title;
+      serPoint.Pointer.Style := (aChart.Series[linenum] as TCustomSeries).Pointer.Style;
+      serPoint.SeriesColor := (aChart.Series[linenum] as TCustomSeries).SeriesColor;
+      serPoint.Tag := BIG_NUMBER + linenum;
+    end;
+    for i := 0 to GtslNonNum.Count - 1 do
+    begin
+      avalue := GtslNonNum[i];
+      if Piece(avalue, '^', 7) = section then
+      begin
+        originalindex := strtointdef(Piece(avalue, '^', 3), 0);
+        if originalindex = linenum then
+        begin
+          adatetime := strtofloatdef(Piece(avalue, '^', 1), -BIG_NUMBER);
+          asernum := aChart.Tag;
+          if adatetime = -BIG_NUMBER then break;
+          if asernum = strtointdef(Piece(avalue, '^', 2), -BIG_NUMBER) then
+          begin
+            offset := strtointdef(Piece(avalue, '^', 5), 1);
+            graphvalue := padvalue * offset;
+            if copy(Piece(avalue, '^', 13), 0, 1) = '>' then
+              nonvalue := highestvalue
+            else
+              nonvalue := lowestvalue;
+            nonvalue := nonvalue + graphvalue;
+            with serPoint do
+            begin
+              Hint := Piece(avalue, '^', 9);
+              AddXY(adatetime, nonvalue, '', serPoint.SeriesColor);
+            end;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.StackNonNum(astring: string; var offset, bmax, tmax: integer; var blabelon, tlabelon: boolean);
+var
+  inlist: boolean;
+  i, lastnum, plusminus: integer;
+  checktime, lasttime, avalue: string;
+begin
+  inlist := false;
+  offset := 0;
+  checktime := Piece(astring, '^', 1);
+  if length(checktime) < 4 then exit;
+  if copy(Piece(astring, '^', 13), 0, 1) = '>' then
+  begin
+    checktime := checktime + ';t';    // top values will stack downwards
+    plusminus := -1;
+    tlabelon := true;
+  end
+  else
+  begin
+    checktime := checktime + ';b';    // bottom values will stack upwards
+    plusminus := 1;
+    blabelon := true;
+  end;
+  for i := 0 to GtslNonNumDates.Count - 1 do
+  begin
+    avalue := GtslNonNumDates[i];
+    lasttime := Piece(avalue, '^' , 1);
+    if checktime = lasttime then
+    begin
+      lastnum := strtointdef(Piece(avalue, '^', 2), 0);
+      offset := lastnum + 1;
+      if offset > 0 then bmax := bmax + 1
+      else tmax := tmax + 1;
+      GtslNonNumDates[i] := checktime + '^' + inttostr(offset * plusminus);
+      inlist := true;
+      break;
+    end;
+  end;
+  if not inlist then
+    GtslNonNumDates.Add(checktime + '^' + inttostr(offset * plusminus));
+end;
+
+procedure TfrmGraphs.PadNonNum(aChart: TChart; aSection: string; var listofseries: string; var bmax, tmax: integer);
+var
+  blabelon, tlabelon: boolean;
+  i, offset: integer;
+  charttag, newtime, lasttime, astring, avalue, newseries: string;
+  serNonNumBottom, serNonNumTop: TPointSeries;
+begin
+  GtslNonNumDates.Clear;
+  listofseries := '^';
+  blabelon := false; tlabelon := false;
+  bmax := 0; tmax := 0;
+  lasttime := '';
+  for i := 0 to GtslNonNum.Count - 1 do
+  begin
+    astring   := GtslNonNum[i];
+    if Piece(astring, '^', 7) = aSection then
+    begin
+      charttag := Piece(astring, '^', 2);
+      if charttag = inttostr(aChart.Tag) then
+      begin
+        newtime   := Piece(astring, '^', 1);
+        avalue    := Piece(astring, '^', 13);
+        newseries := '^' + Piece(astring, '^', 3) + '^';
+        if Pos(newseries, listofseries) = 0 then
+          listofseries := listofseries + Piece(astring, '^', 3) + '^';
+        StackNonNum(astring, offset, bmax, tmax, blabelon, tlabelon);
+        SetPiece(astring, '^', 5, inttostr(offset));
+        GtslNonNum[i] := astring;
+      end;
+    end;
+  end;
+  if blabelon then
+  begin
+    serNonNumBottom := TPointSeries.Create(aChart);
+    MakeSeriesPoint(aChart, serNonNumBottom);
+    with serNonNumBottom do
+    begin
+      Identifier := 'serNonNumBottom';
+      Title := TXT_NONNUMERICS;
+      Marks.ArrowLength := -11;
+      Marks.Visible := true;
+    end;
+  end;
+  if tlabelon then
+  begin
+    serNonNumTop := TPointSeries.Create(aChart);
+    MakeSeriesPoint(aChart, serNonNumTop);
+    with serNonNumTop do
+    begin
+      Identifier := 'serNonNumTop';
+      Title := TXT_NONNUMERICS;
+      Marks.ArrowLength := -11;
+      Marks.Visible := true;
+    end;
+  end;
+end;
+
+function TfrmGraphs.PortionSize(lcnt, pcnt, gcnt, vcnt, bcnt: integer): double;
+var
+  etotal, evalue, dvalue, value: double;
+begin
+  dvalue := (gcnt + vcnt);
+  evalue := (pcnt + bcnt) / 2;
+  etotal := dvalue + evalue;
+  if etotal > 0 then
+  begin
+    value := lcnt / etotal;
+    if value > 4 then Result := 0.2
+    else if etotal < 5 then Result := 0.2
+    else if value < 0.25 then Result := 0.8
+    else if value < 0.4 then Result := 0.6
+    else Result := 0.5;
+  end
+  else
+    Result := 0;
+end;
+
+procedure TfrmGraphs.MakeDateline(section, aTitle, aFileType: string; aChart: TChart; graphtype: integer;
+  var bcnt, pcnt, gcnt, vcnt: integer);
+begin
+  aChart.LeftAxis.Automatic := true;
+  aChart.LeftAxis.Visible := true;
+  //if graphtype = 4 then graphtype := 2;    // makes all points into bars
+  case graphtype of
+    2:  MakeBarSeries(aChart, aTitle, aFileType, bcnt);
+    3:  MakeVisitGanttSeries(aChart, aTitle, aFileType, vcnt);
+    4:  MakePointSeries(aChart, aTitle, aFileType, pcnt);
+    8:  MakeGanttSeries(aChart, aTitle, aFileType, gcnt);
+  end;
+end;
+
+procedure TfrmGraphs.SizeTogether(onlylines, nolines, anylines: Boolean; aScroll: TScrollBox;
+  aChart: TChart; aPanel, aPanelBase: TPanel; portion: Double);
+begin
+  if onlylines then                     //top &bottom
+  begin
+    aScroll.Align := alTop;
+    aScroll.Height := 1;
+    aChart.Visible := false;
+    aPanel.Align := alClient;
+    aPanel.Visible := true;
+  end
+  else if nolines then
+  begin
+    aPanel.Align := alBottom;
+    aPanel.Height := 5;
+    aScroll.Align := alClient;
+    aPanel.Visible := false;
+    if btnChangeSettings.Tag = 1 then
+      aChart.LeftAxis.Title.Caption := 'StdDev';
+  end
+  else if anylines then
+  begin
+    aScroll.Align := alTop;
+    aPanel.Align := alBottom;
+    aPanel.Height := round(aPanelBase.Height * portion);
+    if aPanel.Height < 60 then
+      if aPanelBase.Height > 100 then aPanel.Height := 60;           //***
+    aScroll.Align := alClient;
+    aPanel.Visible := true;
+    if btnChangeSettings.Tag = 1 then
+      aChart.LeftAxis.Title.Caption := 'StdDev';
+  end;
+end;
+
+function TfrmGraphs.NextColor(aCnt: integer): TColor;
+begin
+  case (aCnt mod NUM_COLORS) of
+    1: Result := clRed;
+    2: Result := clBlue;
+    3: Result := clYellow;
+    4: Result := clGreen;
+    5: Result := clFuchsia;
+    6: Result := clMoneyGreen;
+    7: Result := clOlive;
+    8: Result := clLime;
+    9: Result := clMedGray;
+   10: Result := clNavy;
+   11: Result := clAqua;
+   12: Result := clGray;
+   13: Result := clSkyBlue;
+   14: Result := clTeal;
+   15: Result := clBlack;
+    0: Result := clPurple;
+   16: Result := clMaroon;
+   17: Result := clCream;
+   18: Result := clSilver;
+   else
+       Result := clWhite;
+   end;
+end;
+
+
+procedure TfrmGraphs.mnuPopGraphSwapClick(Sender: TObject);
+var
+  tempcheck: boolean;
+  bottomview, topview: integer;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  FFirstClick := true;
+  if (lvwItemsTop.SelCount = 0) and (lvwItemsBottom.SelCount = 0) then exit;
+  topview := lstViewsTop.ItemIndex;
+  bottomview := lstViewsBottom.ItemIndex;
+  HideGraphs(true);
+  with chkDualViews do
+    if not Checked then
+    begin
+      Checked := true;
+      Click;
+    end;
+  tempcheck := chkItemsTop.Checked;
+  chkItemsTop.Checked := chkItemsBottom.Checked;
+  chkItemsBottom.Checked := tempcheck;
+  pnlBottom.Height := pnlMain.Height - pnlBottom.Height;
+  GtslScratchSwap.Clear;
+  if topview < 1 then
+  begin
+    aListItem := lvwItemsTop.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+      GtslScratchSwap.Add(aGraphItem.Values);
+      aListItem := lvwItemsTop.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+  end;
+  GraphSwap(bottomview, topview);
+  GtslScratchSwap.Clear;
+  HideGraphs(false);
+end;
+
+procedure TfrmGraphs.GraphSwap(bottomview, topview: integer);
+var
+  tempcheck: boolean;
+begin
+  FFirstClick := true;
+  if (lvwItemsTop.SelCount = 0) and (lvwItemsBottom.SelCount = 0) then exit;
+  topview := lstViewsTop.ItemIndex;
+  bottomview := lstViewsBottom.ItemIndex;
+  HideGraphs(true);
+  with chkDualViews do
+    if not Checked then
+    begin
+      Checked := true;
+      Click;
+    end;
+  tempcheck := chkItemsTop.Checked;
+  chkItemsTop.Checked := chkItemsBottom.Checked;
+  chkItemsBottom.Checked := tempcheck;
+  pnlBottom.Height := pnlMain.Height - pnlBottom.Height;
+  GtslScratchSwap.Clear;
+  GraphSwitch(bottomview, topview);
+  HideGraphs(false);
+end;
+
+procedure TfrmGraphs.GraphSwitch(bottomview, topview: integer);
+var
+  i, j: integer;
+  typeitem: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  GtslScratchSwap.Clear;
+  if topview < 1 then
+  begin
+    aListItem := lvwItemsTop.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+      GtslScratchSwap.Add(aGraphItem.Values);
+      aListItem := lvwItemsTop.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+  end;
+  if bottomview > 0 then
+  begin
+    lstViewsTop.ItemIndex := bottomview;
+    lstViewsTopChange(self);
+  end
+  else
+  begin
+    lstViewsTop.ItemIndex := -1;
+    lvwItemsTop.ClearSelection;
+    aListItem := lvwItemsBottom.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+      typeitem := Pieces(aGraphItem.Values, '^', 1, 2);
+      for j := 0 to lvwItemsTop.Items.Count - 1 do
+      begin
+        aGraphItem := TGraphItem(lvwItemsTop.Items[j].SubItems.Objects[3]);
+        if typeitem = Pieces(aGraphItem.Values, '^', 1, 2) then
+        begin
+          lvwItemsTop.Items[j].Selected := true;
+          break;
+        end;
+      end;
+      aListItem := lvwItemsBottom.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+    lvwItemsTopClick(self);
+  end;
+  if topview > 0 then
+  begin
+    lstViewsBottom.ItemIndex := topview;
+    lstViewsBottomChange(self);
+  end
+  else
+  begin
+    lstViewsBottom.ItemIndex := -1;
+    lvwItemsBottom.ClearSelection;
+    for i := 0 to GtslScratchSwap.Count - 1 do
+      for j := 0 to lvwItemsBottom.Items.Count - 1 do
+      begin
+        aGraphItem := TGraphItem(lvwItemsBottom.Items.Item[j].SubItems.Objects[3]);
+        if aGraphItem.Values = GtslScratchSwap[i] then
+        begin
+          lvwItemsBottom.Items[j].Selected := true;
+          break;
+        end;
+      end;
+    lvwItemsBottomClick(self);
+  end;
+  GtslScratchSwap.Clear;
+end;
+
+procedure TfrmGraphs.mnuPopGraphSplitClick(Sender: TObject);
+begin
+  FFirstClick := true;
+  if (lvwItemsTop.SelCount = 0) and (lvwItemsBottom.SelCount = 0) then exit;
+  HideGraphs(true);
+  with chkDualViews do
+    if not Checked then
+    begin
+      Checked := true;
+      Click;
+    end;
+  with lstViewsTop do
+    if ItemIndex > -1 then
+    begin
+      ItemIndex := -1;
+    end;
+  with lstViewsBottom do
+    if ItemIndex > -1 then
+    begin
+      ItemIndex := -1;
+    end;
+    SplitClick;
+end;
+
+procedure TfrmGraphs.SplitClick;
+
+  procedure SplitGraphs(aListView: TListView);
+  var
+    typeitem: string;
+    aGraphItem: TGraphItem;
+    aListItem: TListItem;
+  begin
+    aListItem := lvwItemsTop.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+      typeitem := Pieces(aGraphItem.Values, '^', 1, 2);
+      GtslScratchSwap.Add(typeitem);
+      aListItem := lvwItemsTop.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+  end;
+
+var
+  i: integer;
+  typeitem, typenum: string;
+begin
+  chkItemsTop.Checked := true;
+  chkItemsBottom.Checked := false;
+  pnlBottom.Height := pnlMain.Height - pnlBottom.Height;
+  GtslScratchSwap.Clear;
+  SplitGraphs(lvwItemsTop);
+  SplitGraphs(lvwItemsBottom);
+  lvwItemsTop.ClearSelection;
+  lvwItemsBottom.ClearSelection;
+  for i := 0 to GtslScratchSwap.Count - 1 do
+  begin
+    typeitem := GtslScratchSwap[i];
+    typenum := Piece(typeitem, '^', 1);
+    if (typenum = '63') or (typenum = '120.5') then
+      SelectItem(lvwItemsTop, typeitem)
+    else
+      SelectItem(lvwItemsBottom, typeitem);
+  end;
+  lvwItemsTopClick(self);
+  lvwItemsBottomClick(self);
+  GtslScratchSwap.Clear;
+  HideGraphs(false);
+end;
+
+procedure TfrmGraphs.SelectItem(aListView: TListView; typeitem: string);
+var
+  i: integer;
+  aGraphItem: TGraphItem;
+begin
+  with aListView do
+    for i := 0 to Items.Count - 1 do
+    begin
+      aGraphItem := TGraphItem(Items.Item[i].SubItems.Objects[3]);
+      if typeitem = Pieces(aGraphItem.Values, '^', 1, 2) then
+        Items[i].Selected := true;
+    end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphLinesClick(Sender: TObject);
+begin
+  with FGraphSetting do Lines := not Lines;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.mnuPopGraph3DClick(Sender: TObject);
+begin
+  with FGraphSetting do View3D := not View3D;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.mnuPopGraphValueMarksClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if (FGraphSeries is TPointSeries) and not (FGraphSeries is TGanttSeries) then
+  begin
+    if (FGraphSeries as TPointSeries).Pointer.Style = psSmallDot then exit;    // keep non-numeric label unchanged
+    if Piece(FGraphSeries.Title, '^', 1) = '(non-numeric)' then
+    begin
+      FGraphSeries.Marks.Visible := not FGraphSeries.Marks.Visible;
+      for i := 0 to FGraphClick.SeriesCount - 1 do
+      begin
+        if FGraphClick.Series[i].Title = FGraphSeries.Identifier then
+        begin
+          FGraphClick.Series[i].Marks.Visible := FGraphSeries.Marks.Visible;
+          if FGraphSeries.Title <> 'Blood Pressure' then break;
+        end;
+      end;
+    end;
+  end
+  else if chartDatelineTop.Tag = 1 then               // series
+  begin
+    FGraphSeries.Marks.Visible := not FGraphSeries.Marks.Visible;
+    for i := 0 to FGraphClick.SeriesCount - 1 do
+    begin
+      if (FGraphClick.Series[i].Identifier = FGraphSeries.Title)
+      or (FGraphClick.Series[i].Title = FGraphSeries.Title) then
+      begin
+        FGraphClick.Series[i].Marks.Visible := FGraphSeries.Marks.Visible;
+        if FGraphSeries.Title <> 'Blood Pressure' then break;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphValuesClick(Sender: TObject);
+begin
+  with FGraphSetting do Values := not Values;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.mnuPopGraphSortClick(Sender: TObject);
+begin
+  with FGraphSetting do
+  begin
+    if SortColumn = 1 then SortColumn := 0
+    else SortColumn := 1;
+    mnuPopGraphSort.Checked := SortColumn = 1;
+    if not FItemsSortedTop then
+    begin
+      lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[0]);
+      FItemsSortedTop := true;
+    end;
+    if not FItemsSortedBottom then
+    begin
+      lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[0]);
+      FItemsSortedBottom := true;
+    end;
+    if SortColumn > 0 then
+    begin
+      lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[SortColumn]);
+      lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[SortColumn]);
+      FItemsSortedTop := false;
+      FItemsSortedBottom := false;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphClearClick(Sender: TObject);
+begin
+  with FGraphSetting do
+  begin
+    ClearBackground := not ClearBackground;
+    if ClearBackground then Gradient := false;
+  end;
+  ChangeStyle;
+  // ???redisplay if nonnumericonly graph exists
+  if pnlItemsTop.Tag = 1 then lvwItemsTopClick(self);
+  if pnlItemsBottom.Tag = 1 then lvwItemsBottomClick(self);
+end;
+
+procedure TfrmGraphs.mnuPopGraphHorizontalClick(Sender: TObject);
+begin
+  with FGraphSetting do
+  begin
+    HorizontalZoom := not HorizontalZoom;
+    mnuPopGraphHorizontal.Checked := HorizontalZoom;
+    if not HorizontalZoom then mnuPopGraphResetClick(self);
+  end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphVerticalClick(Sender: TObject);
+begin
+  with FGraphSetting do
+  begin
+    VerticalZoom := not VerticalZoom;
+    mnuPopGraphVertical.Checked := VerticalZoom;
+    if not VerticalZoom then mnuPopGraphResetClick(self);
+  end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphViewDefinitionClick(Sender: TObject);
+begin
+  mnuPopGraphViewDefinition.Checked := not mnuPopGraphViewDefinition.Checked;
+  if mnuPopGraphViewDefinition.Checked  then
+  begin
+    memViewsTop.Height := (tsTopViews.Height div 3) + 1;
+    memViewsBottom.Height := (tsBottomViews.Height div 3) + 1;
+  end
+  else
+  begin
+    memViewsTop.Height := 1;
+    memViewsBottom.Height := 1;
+  end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphDatesClick(Sender: TObject);
+begin
+  with FGraphSetting do Dates := not Dates;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.mnuPopGraphDualViewsClick(Sender: TObject);
+begin
+  chkDualViews.Checked := not chkDualViews.Checked;
+  chkDualViewsClick(self);
+end;
+
+procedure TfrmGraphs.mnuPopGraphExportClick(Sender: TObject);
+
+  procedure AddRow(worksheet: variant;
+    linestring, typename, itemname, date1, date2, result, other: string);
+  begin
+    worksheet.range('A' + linestring) := typename;
+    worksheet.range('B' + linestring) := itemname;
+    worksheet.range('C' + linestring) := date1;
+    worksheet.range('D' + linestring) := date2;
+    worksheet.range('E' + linestring) := result;
+    worksheet.range('F' + linestring) := other;
+  end;
+
+var
+  ok, topflag: boolean;
+  i, j, cnt: integer;
+  dtdata1, dtdata2, dtdate1, dtdate2: double;
+  StrForFooter, StrForHeader, aTitle, aDateRange, aCustomDateRange: String;
+  cdate, itemtype, item, itemtypename, itemname, typeitem, specnum: String;
+  datax, fmdate1, fmdate2, linestring: String;
+  aHeader: TStringList;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+  excelApp, workbook, worksheet: Variant;
+begin
+  if (lvwItemsTop.SelCount = 0) and (lvwItemsBottom.SelCount = 0) then
+  begin
+    ShowMessage('No Items selected.');
+    exit;
+  end;
+  try
+    excelApp := CreateOleObject('Excel.Application');
+  except
+    raise Exception.Create('Cannot start MS Excel!');
+  end;
+  topflag := mnuPopGraphStayOnTop.Checked and mnuPopGraphStayOnTop.Enabled;
+  Screen.Cursor := crDefault;
+  aTitle := 'CPRS Graphing';
+  dtdate1 := FGraphSetting.FMStartDate; //DateTimeToFMDateTime(FGraphSetting.LowTime);
+  dtdate2 := FGraphSetting.FMStopDate; //DateTimeToFMDateTime(FGraphSetting.HighTime);
+  dtdate1 := FMDateTimeOffsetBy(dtdate1, 1);   // add a day to start
+  dtdate2 := dtdate2;
+
+  if (length(cboDateRange.Text) < 25) and
+     (cboDateRange.Text <> 'All Results') and
+     (cboDateRange.Text <> 'Today') then
+    aDateRange :=  'Date Range: ' + cboDateRange.Text + '  Selected Items from ' +
+      FormatFMDateTime('mm/dd/yy', dtdate1) + ' to ' +
+      FormatFMDateTime('mm/dd/yy', dtdate2)
+  else
+    aDateRange :=  'Date Range: Selected Items from ' + cboDateRange.Text;
+  dtdate1 := DateTimeToFMDateTime(FGraphSetting.LowTime);
+  dtdate2 := DateTimeToFMDateTime(FGraphSetting.HighTime);
+  aCustomDateRange := cboDateRange.Items[cboDateRange.ItemIndex];
+  if Piece(aCustomDateRange, '^', 1) = '' then           // custom date range
+  begin
+    dtdate1 := strtofloat(Piece(aCustomDateRange, '^', 6));
+    dtdate2 := strtofloat(Piece(aCustomDateRange, '^', 7));
+  end;
+  aHeader := TStringList.Create;
+  CreateExcelPatientHeader(aHeader, aTitle, aDateRange);
+  StrForHeader := '';
+  for i := 0 to aHeader.Count - 1 do 
+  begin
+    StrForHeader := StrForHeader + aHeader[i] + #13;
+  end;
+  if length(StrForHeader) > 250 then
+    StrForHeader := copy(StrForHeader, 1, 250) + #13;  // VB script in Excel is limited to 253
+  StrForFooter := aTitle + '                    *** WORK COPY ONLY ***                            '
+                + 'Printed: ' + FormatDateTime('mmm dd, yyyy  hh:nn', Now) + #13
+                + TXT_COPY_DISCLAIMER + #13;
+  excelApp.Visible := true;
+  workbook := excelApp.workbooks.add;
+  worksheet := workbook.worksheets.add;
+  worksheet.name := aTitle;
+  worksheet.PageSetup.PrintArea := '';
+  worksheet.PageSetup.TopMargin := 110;
+  worksheet.PageSetup.CenterHeader := StrForHeader;
+  worksheet.PageSetup.BottomMargin := 75;
+  worksheet.PageSetup.LeftFooter := StrForFooter;
+  worksheet.PageSetup.RightFooter := 'Page &P of &N';
+  worksheet.PageSetup.PrintTitleRows := '$1:$1';
+  worksheet.PageSetup.PrintTitleColumns := '$A:$F';
+  AddRow(worksheet, '1', 'Type', 'Item', 'Date', 'End Date', 'Value', 'Other');
+  cnt := 1;
+  aListItem := lvwItemsTop.Selected;
+  while aListItem <> nil do
+  begin
+    itemname := aListItem.Caption;
+    itemtypename := aListItem.SubItems[0];
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    typeitem := UpperCase(aGraphItem.Values);
+    if Piece(typeitem, '^', 1) = '63' then
+    begin
+      specnum := Piece(Piece(typeitem, '^', 2), '.', 2);
+      if length(specnum) > 0 then  // multispecimen
+        if specnum = '1' then
+          typeitem := Piece(typeitem, '.', 1)
+        else
+          typeitem := '';
+    end;
+    itemtype := Piece(typeitem, '^', 1);
+    item := Piece(typeitem, '^', 2);
+    for j := 0 to GtslData.Count - 1 do
+    begin
+      datax := GtslData[j];
+      if Piece(datax, '^', 1) = itemtype then
+        if Piece(datax, '^', 2) = item then
+        begin
+          dtdata1 := strtofloatdef(Piece(datax, '^', 3), -1);
+          fmdate1 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata1);
+          if copy(fmdate1, length(fmdate1) - 5, length(fmdate1)) = ' 00:00' then
+            fmdate1 := copy(fmdate1, 1, length(fmdate1) - 5) + '     ';
+          cdate := Piece(datax, '^', 4);
+          if Piece(cdate, '.', 2) = '24' then cdate := Piece(cdate, '.', 1) + '.2359';
+          dtdata2 := strtofloatdef(cdate, -1);      // restrict to within date range
+          fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2);
+          if copy(fmdate2, length(fmdate2) - 5, length(fmdate2)) = ' 00:00' then
+            fmdate2 := copy(fmdate2, 1, length(fmdate2) - 5) + '     ';
+          if dtdata2 > 0 then            
+            ok := (dtdata1 <= dtdate2) and (dtdata2 >= dtdate1) // overlap for durations
+          else
+            ok := (dtdata1 >= dtdate1) and (dtdata1 <= dtdate2); // inclusion for instances
+          if ok then
+          begin
+            cnt := cnt + 1;
+            linestring := inttostr(cnt);
+            AddRow(worksheet, linestring, itemtypename, itemname, fmdate1, fmdate2, Piece(datax, '^', 5), Piece(datax, '^', 8));
+          end;
+        end;
+    end;
+    aListItem := lvwItemsTop.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  if lvwItemsBottom.Items.Count > 0 then        //rewrite to combine
+  begin
+    cnt := cnt + 1;
+    linestring := inttostr(cnt);
+    AddRow(worksheet, linestring, '', '', '', '', '', '');
+    aListItem := lvwItemsBottom.Selected;
+    while aListItem <> nil do
+    begin
+      itemname := aListItem.Caption;
+      itemtypename := aListItem.SubItems[0];
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+      typeitem := UpperCase(aGraphItem.Values);
+      if Piece(typeitem, '^', 1) = '63' then
+      begin
+        specnum := Piece(Piece(typeitem, '^', 2), '.', 2);
+        if length(specnum) > 0 then  // multispecimen
+          if specnum = '1' then
+            typeitem := Piece(typeitem, '.', 1)
+          else
+            typeitem := '';
+      end;
+      itemtype := Piece(typeitem, '^', 1);
+      item := Piece(typeitem, '^', 2);
+      for j := 0 to GtslData.Count - 1 do
+      begin
+        datax := GtslData[j];
+        if Piece(datax, '^', 1) = itemtype then
+          if Piece(datax, '^', 2) = item then
+          begin
+            dtdata1 := strtofloatdef(Piece(datax, '^', 3), -1);
+            fmdate1 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata1);
+            if copy(fmdate1, length(fmdate1) - 5, length(fmdate1)) = ' 00:00' then
+              fmdate1 := copy(fmdate1, 1, length(fmdate1) - 5) + '     ';
+            cdate := Piece(datax, '^', 4);
+            if Piece(cdate, '.', 2) = '24' then cdate := Piece(cdate, '.', 1) + '.2359';
+            dtdata2 := strtofloatdef(cdate, -1);
+            fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2);
+            if copy(fmdate2, length(fmdate2) - 5, length(fmdate2)) = ' 00:00' then
+              fmdate2 := copy(fmdate2, 1, length(fmdate2) - 5) + '     ';
+            if dtdata2 > 0 then            
+              ok := (dtdata1 <= dtdate2) and (dtdata2 >= dtdate1) // overlap for durations
+            else
+              ok := (dtdata1 >= dtdate1) and (dtdata1 <= dtdate2); // inclusion for instances
+            if ok then
+            begin
+              cnt := cnt + 1;
+              linestring := inttostr(cnt);
+              AddRow(worksheet, linestring, itemtypename, itemname, fmdate1, fmdate2, Piece(datax, '^', 5), Piece(datax, '^', 8));
+            end;
+          end;
+      end;
+      aListItem := lvwItemsBottom.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+  end;
+  worksheet.Range['A1', 'F' + LineString].Columns.AutoFit;
+  worksheet.Range['A1', 'F' + LineString].Select;
+  worksheet.Range['A1', 'F' + LineString].AutoFormat(12, true, true, true, true, true, true);
+
+  if topflag then
+    mnuPopGraphStayOnTopClick(self);
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.mnuPopGraphSeparate1Click(Sender: TObject);
+begin
+  with mnuPopGraphSeparate1 do
+    Checked := not Checked;
+  with chkItemsTop do
+  begin
+    Checked := mnuPopGraphSeparate1.Checked;
+    Click;
+  end;
+  with chkItemsBottom do
+  begin
+    Checked := mnuPopGraphSeparate1.Checked;
+    Click;
+  end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphGradientClick(Sender: TObject);
+begin
+  with FGraphSetting do
+  begin
+    Gradient := not Gradient;
+    if Gradient then ClearBackground := false;
+  end;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.mnuPopGraphHintsClick(Sender: TObject);
+begin
+  with FGraphSetting do
+    Hints := not Hints;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.mnuPopGraphLegendClick(Sender: TObject);
+begin
+  with FGraphSetting do Legend := not Legend;
+  ChangeStyle;
+end;
+
+procedure TfrmGraphs.ChartColor(aColor: TColor);
+begin
+  chartDatelineTop.Color := aColor;
+  chartDatelineTop.Legend.Color := aColor;
+  pnlDatelineTopSpacer.Color := aColor;
+  scrlTop.Color := aColor;
+  pnlTopRightPad.Color := aColor;
+  pnlScrollTopBase.Color := aColor;
+  pnlBlankTop.Color := aColor;
+  chartDatelineBottom.Color := aColor;
+  chartDatelineBottom.Legend.Color := aColor;
+  pnlDatelineBottomSpacer.Color := aColor;
+  scrlBottom.Color := aColor;
+  pnlBottomRightPad.Color := aColor;
+  pnlScrollBottomBase.Color := aColor;
+  pnlBlankBottom.Color := aColor;
+end;
+
+procedure TfrmGraphs.ChartStyle(aChart: TChart);
+var
+  j: integer;
+begin
+  with aChart do
+  begin
+    View3D := FGraphSetting.View3D;
+    Chart3DPercent := 10;
+    AllowZoom := FGraphSetting.HorizontalZoom;
+    Gradient.Visible := FGraphSetting.Gradient;
+    Legend.Visible := FGraphSetting.Legend;
+    HideDates(aChart);
+    pnlHeader.Visible := pnlInfo.Visible;
+    if FGraphSetting.ClearBackground then
+    begin
+      Color := clWindow;
+      Legend.Color := clWindow;
+      pnlBlankTop.Color := clWindow;
+      pnlBlankBottom.Color := clWindow;
+    end
+    else
+    begin
+      Color := clBtnFace;
+      Legend.Color := clCream;
+      pnlBlankTop.Color := clBtnFace;
+      pnlBlankBottom.Color := clBtnFace;
+    end;
+    for j := 0 to SeriesCount - 1 do
+    begin
+      if Series[j] is TLineSeries then
+        with (Series[j] as TLineSeries) do
+        begin
+          Marks.Visible := FGraphSetting.Values;
+          LinePen.Visible := FGraphSetting.Lines;
+        end;
+      if Series[j] is TPointSeries then
+        with (Series[j] as TPointSeries) do
+        if Pointer.Style <> psSmallDot then      // keep non-numeric label unchanged
+        begin
+          Marks.Visible := FGraphSetting.Values;
+          LinePen.Visible := FGraphSetting.Lines;
+          if Title = '(non-numeric)' then Marks.Visible := FDisplayFreeText;
+        end;
+      if Series[j] is TBarSeries then
+        with (Series[j] as TBarSeries) do
+        begin
+          Marks.Visible := FGraphSetting.Values;
+        end;
+      if Series[j] is TArrowSeries then
+        with (Series[j] as TArrowSeries) do
+        begin
+          Marks.Visible := FGraphSetting.Values;
+        end;
+      if Series[j] is TGanttSeries then
+        with (Series[j] as TGanttSeries) do
+        begin
+          Marks.Visible := FGraphSetting.Values;
+          LinePen.Visible := FGraphSetting.Lines;
+        end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.ChangeStyle;
+var
+  i: integer;
+  ChildControl: TControl;
+  OriginalColor, ClearColor: TColor;
+begin
+  OriginalColor := pnlItemsTopInfo.Color;
+  ClearColor := clWindow;
+  for i := 0 to scrlTop.ControlCount - 1 do
+  begin
+    ChildControl := scrlTop.Controls[i];
+    ChartStyle(ChildControl as TChart);
+  end;
+  for i := 0 to scrlBottom.ControlCount - 1 do
+  begin
+    ChildControl := scrlBottom.Controls[i];
+    ChartStyle(ChildControl as TChart);
+  end;
+  if pnlDateLineTop.Visible then   // not visible when separate graphs
+    ChartStyle(chartDateLineTop);
+  if pnlDateLineBottom.Visible then
+    ChartStyle(chartDateLineBottom);
+  if FGraphSetting.ClearBackground then
+    ChartColor(ClearColor)
+  else
+    ChartColor(OriginalColor);
+  mnuPopGraphLines.Checked := FGraphSetting.Lines;
+  mnuPopGraph3D.Checked := FGraphSetting.View3D;
+  mnuPopGraphValues.Checked := FGraphSetting.Values;
+  mnuPopGraphDates.Checked := FGraphSetting.Dates;
+  mnuPopGraphFixed.Checked := FGraphSetting.FixedDateRange;
+  mnuPopGraphGradient.Checked := FGraphSetting.Gradient;
+  mnuPopGraphHints.Checked := FGraphSetting.Hints;
+  mnuPopGraphStayOnTop.Checked := FGraphSetting.StayOnTop;
+  mnuPopGraphLegend.Checked := FGraphSetting.Legend;
+  mnuPopGraphSort.Checked := FGraphSetting.SortColumn = 1;
+  mnuPopGraphClear.Checked := FGraphSetting.ClearBackground;
+  mnuPopGraphVertical.Checked := FGraphSetting.VerticalZoom;
+  mnuPopGraphHorizontal.Checked := FGraphSetting.HorizontalZoom;
+end;
+
+procedure TfrmGraphs.chartBaseClickSeries(Sender: TCustomChart; Series: TChartSeries;
+  ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  lbutton: boolean;
+begin
+  if FOnMark then       // action already taken by mousedown on a mark
+  begin
+    FOnMark := false;
+    exit;
+  end;
+  FOnMark := false;
+  timHintPause.Enabled := false;
+  InactivateHint;
+  FGraphClick := Sender;
+  FGraphSeries := Series;
+  FGraphValueIndex := ValueIndex;
+  chartDateLineTop.Tag := 1;       // indicates a series click
+  if (Series is TGanttSeries) then
+  begin
+    FDate1 := (Series as TGanttSeries).StartValues[ValueIndex];
+    FDate2 := (Series as TGanttSeries).EndValues[ValueIndex];
+  end
+  else
+  begin
+    FDate1 := Series.XValue[ValueIndex];
+    FDate2 := FDate1;
+  end;
+  lbutton := Button <> mbRight;
+  SeriesClicks(Sender as TChart, Series, ValueIndex, lbutton);
+  FMouseDown := false;
+end;
+
+
+procedure TfrmGraphs.SeriesClicks(aChart: TChart; aSeries: TChartSeries; aIndex: integer; lbutton: boolean);
+var
+  originalindex: integer;
+  dttm, seriestitle, showing, textvalue, textvalue1, textvalue2, typename, typenum: string;
+begin
+  if lbutton then
+  begin
+    textvalue := ValueText(aChart, aSeries, aIndex);
+    dttm := Piece(textvalue, '^', 3);
+    if copy(textvalue, length(textvalue) - 5, length(textvalue)) = ' 00:00' then
+      dttm := Pieces(dttm, ' ', 1, 3);
+    textvalue1 := Piece(textvalue, '^', 2) + '  ' + dttm;
+    textvalue2 := Piece(textvalue, '^', 4) + '  ' + Piece(textvalue, '^', 5);
+    typenum := trim(Piece(textvalue, '^', 1));
+    typename := Piece(textvalue, '^', 2);
+    AllTypeDate(typenum, typename, textvalue1, textvalue2, FDate1, FDate2);
+  end
+  else
+  begin
+    seriestitle := Piece(aSeries.Title, '^', 1);
+    if seriestitle = '(non-numeric)' then
+    begin
+      originalindex := strtointdef(Piece(GtslNonNum[aIndex], '^', 3), 0);
+      seriestitle := Piece(aChart.Series[originalindex].Title, '^', 1);
+    end;
+    mnuPopGraphIsolate.Enabled := true;
+    if pnlTop.Tag = 1 then
+      mnuPopGraphIsolate.Caption := 'Move - ' + seriestitle + ' - from Top to Bottom'
+    else
+      mnuPopGraphIsolate.Caption := 'Move - ' + seriestitle + ' - from Bottom to Top';
+    scrlTop.Hint := 'Details - for ' + seriestitle + ' for ' +
+      FormatDateTime('mmm d, yyyy  h:nn am/pm', FDate1);
+    scrlTop.Tag := aIndex + 1;
+    mnuPopGraphIsolate.Hint := seriestitle;
+    mnuPopGraphRemove.Enabled := true;
+    mnuPopGraphRemove.Caption := 'Remove - ' + seriestitle;
+    mnuPopGraphDetails.Caption := 'Details - ' + seriestitle;
+    if FGraphSeries.Marks.Visible then showing := ' - turn off' else showing := ' - turn on';
+    mnuPopGraphValueMarks.Caption := 'Values - ' + seriestitle + showing;
+    mnuPopGraphValueMarks.Enabled := true;
+  end;
+end;
+
+procedure TfrmGraphs.AllTypeDate(aType, aTypeName, firstline, secondline: string; aDate, aDate2: double);
+var
+  i: integer;
+  datex1, datex2, newline, oldline, spacer, titlemsg: string;
+  dt1, dt2: double;
+  tmpOtherList, templist: TStringList;
+begin
+  Screen.Cursor := crHourGlass;
+  tmpOtherList := TStringList.Create;
+  templist := TStringList.Create;
+  datex1 := floattostr(DateTimeToFMDateTime(aDate));
+  datex1 := Piece(datex1, '.', 1);
+  if aDate <> aDate2 then
+    datex2 := Piece(floattostr(DateTimeToFMDateTime(aDate2)), '.', 1) + '.23595959'
+  else
+    datex2 := datex1 + '.23595959';
+  dt1 := strtofloatdef(datex1, BIG_NUMBER);
+  dt2 := strtofloatdef(datex2, BIG_NUMBER);
+  CheckToAddData(lvwItemsTop, 'top', aType);    // if type is not loaded - load data
+  TempData(tmpOtherList, aType, dt1, dt2);
+  with tmpOtherList do
+  begin
+    Sort;
+    for i := Count - 1 downto 0 do
+    begin
+      newline := '';
+      oldline := tmpOtherList[i];
+      newline := Piece(oldline, '^', 4) + '   ' + Piece(oldline, '^', 5);
+      spacer := Copy(BIG_SPACES, 1, 40 - length(newline));
+      newline := newline + spacer + ' ' + Piece(oldline, '^', 3);
+      templist.Add(newline);
+    end;
+    Clear;
+    FastAssign(templist, tmpOtherList);
+    //Assign(templist);
+    if aDate <> aDate2 then
+      titlemsg := aTypeName + ' occurences for ' + FormatDateTime('mmm d, yyyy', aDate) +
+        ' - ' + FormatDateTime('mmm d, yyyy', aDate2)
+    else
+      titlemsg := aTypeName + ' occurences for ' + FormatDateTime('mmm d, yyyy', aDate);
+    Insert(0, firstline);
+    Insert(1, secondline);
+    Insert(2, '');
+    Insert(3, 'All ' + titlemsg + ':');
+    Insert(4, '');
+    Insert(0, TXT_REPORT_DISCLAIMER);
+    Insert(1, '');
+    ReportBox(tmpOtherList, titlemsg, true);
+  end;
+  tmpOtherList.Free;
+  templist.Free;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.TempData(aStringList: TStringList; aType: string; dt1, dt2: double);
+var
+  i: integer;
+  dttm, datax, fmdate1, fmdate2, newdata: string;
+  dtdata, dtdata1, dtdata2: double;
+begin
+  for i := 0 to GtslData.Count - 1 do
+  begin
+    datax := GtslData[i];
+    if Piece(datax, '^', 1) = aType then
+    begin
+      if (length(Piece(datax, '^', 4))> 0) then    // date/times of episodes
+      begin
+        dtdata1 := strtofloatdef(Piece(datax, '^', 3), -1);
+        fmdate1 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata1);
+        if copy(fmdate1, length(fmdate1) - 5, length(fmdate1)) = ' 00:00' then
+          fmdate1 := copy(fmdate1, 1, length(fmdate1) - 5) + '     ';
+        dtdata2 := strtofloatdef(Piece(datax, '^', 4), -1);
+        fmdate2 := FormatFMDateTime('mm/dd/yy hh:nn', dtdata2);
+        if copy(fmdate2, length(fmdate2) - 5, length(fmdate2)) = ' 00:00' then
+          fmdate2 := copy(fmdate2, 1, length(fmdate2) - 5) + '     ';
+        if (dtdata2 > dt1) and (dtdata1 < dt2) then
+        begin
+          newdata := Piece(datax, '^', 3) + '^' +
+                     Piece(datax, '^', 2) + '^' +
+                     fmdate1 + ' - ' +
+                     fmdate2 + '^' +
+                     ItemName(aType, Piece(datax, '^', 2)) + '^' +
+                     Piece(datax, '^', 5);
+          aStringList.Add(MixedCase(newdata));
+        end;
+      end
+      else
+      begin
+        dtdata := strtofloatdef(Piece(datax, '^', 3), -1);
+        if (dtdata >= dt1) and (dtdata < dt2) then
+        begin
+          if length(Piece(Piece(datax, '^', 3), '.', 2)) > 0 then
+            dttm := FormatFMDateTime('mm/dd/yy hh:nn', dtdata)
+          else
+            dttm := FormatFMDateTime('mm/dd/yy', dtdata);
+          newdata := Piece(datax, '^', 3) + '^' +
+          Piece(datax, '^', 2) + '^' +
+          Piece(datax, '^', 5) + '^' +
+          dttm + '^' +
+          ItemName(aType, Piece(datax, '^', 2));
+          aStringList.Add(MixedCase(newdata));
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.ItemDateRange(Sender: TCustomChart);
+var
+  bpnotdone, ok: boolean;
+  i, j: integer;
+  prevtype, results, seriestitle, seriestype, spacer, textvalue, typenum: string;
+  tmpOtherList: TStringList;
+begin
+  Screen.Cursor := crHourGlass;
+  prevtype := '';
+  tmpOtherList := TStringList.Create;
+  with tmpOtherList do
+  begin
+    Add('Date Range: ' + cboDateRange.Text);
+    Add('Selected Items from ' +
+      FormatDateTime('mm/dd/yy', FGraphSetting.LowTime) + ' to ' +
+      FormatDateTime('mm/dd/yy', FGraphSetting.HighTime));
+    Add('');
+  end;
+  bpnotdone := true;
+  for i := 0 to Sender.SeriesCount - 1 do
+  begin
+    if Sender.Series[i].Count > 0 then
+    begin
+      textvalue := ValueText(Sender, Sender.Series[i], 0);
+      seriestype := Piece(textvalue, '^', 2);
+      if (seriestype <> '') and (seriestype <> prevtype) then
+      begin
+        tmpOtherList.Add('     ' + seriestype);    // type
+        prevtype := seriestype;
+      end;
+    end;
+    ok := true;
+    seriestitle := Sender.Series[i].Title;
+    if seriestitle = 'Blood Pressure' then
+      if not bpnotdone then ok := false;
+    if ok then
+    begin
+      for j := 0 to Sender.Series[i].Count - 1 do
+      begin
+        textvalue := ValueText(Sender, Sender.Series[i], j);
+        seriestitle := Piece(textvalue, '^', 4);
+        typenum := Piece(textvalue, '^', 1);
+        if (typenum = '120.5') and (seriestitle = 'Blood Pressure') then bpnotdone := false;
+        if length(typenum) > 0 then
+        begin
+          spacer := Copy(BIG_SPACES, 1, 30 - length(seriestitle));
+          results := seriestitle + ':  ' + //spacer +
+          Piece(textvalue, '^', 5); //LowerCase(Piece(textvalue, '^', 5));
+          spacer := Copy(BIG_SPACES, 1, 40 - length(results));
+          results := results + ' ' + spacer + Piece(textvalue, '^', 6);
+          if copy(results, length(results) - 5, length(results)) = ' 00:00' then
+            results := copy(results, 1, length(results) - 5);
+          tmpOtherList.Add(results);                 // item occurrence
+        end;
+      end;
+    end;
+  end;                               // same items are not being sorted by date
+  if tmpOtherList.Count > 0 then
+  begin
+    tmpOtherList.Insert(0, TXT_REPORT_DISCLAIMER);
+    tmpOtherList.Insert(1, '');
+    ReportBox(tmpOtherList, 'Selected Items from Graph', true);
+  end;
+  tmpOtherList.Free;
+  FMouseDown := false;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.mnuPopGraphIsolateClick(Sender: TObject);
+var
+  i, j, selnum: integer;
+  aSection, aOtherSection, typeitem: string;
+  aGraphItem: TGraphItem;
+  aListView, aOtherListView: TListView;
+  aListItem: TListItem;
+begin
+  FFirstClick := true;
+  lstViewsTop.ItemIndex := -1;
+  lstViewsBottom.ItemIndex := -1;
+  if pnlTop.Tag = 1 then
+  begin
+    aListView := lvwItemsTop;       aOtherListView := lvwItemsBottom;
+    aSection := 'top';              aOtherSection := 'bottom';
+  end
+  else
+  begin
+    aListView := lvwItemsBottom;    aOtherListView := lvwItemsTop;
+    aSection := 'bottom';           aOtherSection := 'top';
+  end;
+  if aListView.SelCount = 0 then exit;
+  if StripHotKey(mnuPopGraphIsolate.Caption) = ('Move all selections to ' + aOtherSection) then
+  begin
+    aListItem := aListView.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+      typeitem := Pieces(aGraphItem.Values, '^', 1, 2);
+      for j := 0 to aOtherListView.Items.Count - 1 do
+      begin
+        aGraphItem := TGraphItem(aOtherListView.Items.Item[j].SubItems.Objects[3]);
+        if Pieces(aGraphItem.Values, '^', 1, 2) = typeitem then
+          aOtherListView.Items[j].Selected := true;
+      end;
+      aListItem.Selected := false;
+      aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+  end
+  else
+  begin
+    ItemCheck(lvwItemsTop, mnuPopGraphIsolate.Hint, selnum, typeitem);
+    if selnum = -1 then exit;
+    for i := 0 to aOtherListView.Items.Count - 1 do
+    begin
+      aGraphItem := TGraphItem(aOtherListView.Items.Item[i].SubItems.Objects[3]);
+      if Pieces(aGraphItem.Values, '^', 1, 2) = typeitem then
+        aOtherListView.Items[i].Selected := true;
+    end;
+    aListView.Items[selnum].Selected := false;
+  end;
+  with chkDualViews do
+  if not Checked then
+  begin
+    Checked := true;
+    Click;
+  end;
+  ChangeStyle;
+  DisplayData(aSection);
+  DisplayData(aOtherSection);
+  mnuPopGraphIsolate.Enabled := false;
+end;
+
+procedure TFrmGraphs.ItemCheck(aListView: TListView; aItemName: string;
+  var aNum: integer; var aTypeItem: string);
+var
+  i: integer;
+  aGraphItem: TGraphItem;
+begin
+  aNum := -1;
+  aTypeItem := '';
+  with aListView do
+  for i := 0 to Items.Count - 1 do
+  if Items[i].Caption = aItemName then
+  begin
+    aGraphItem := TGraphItem(Items.Item[i].SubItems.Objects[3]);     //get file^ien match
+    aNum := i;
+    aTypeItem := Pieces(aGraphItem.Values, '^', 1, 2);
+    break;
+  end;
+  if aNum = -1 then
+  begin
+    aItemName := ReverseString(aItemName);
+    aItemName := Pieces(aItemName, '(', 2, DelimCount(aItemName, '(') + 1);
+    aItemName := Copy(aItemName, 2, length(aItemName) - 1);
+    aItemName := ReverseString(aItemName);
+    with aListView do
+    for i := 0 to Items.Count - 1 do
+    if Items[i].Caption = aItemName then            // match without (specimen)
+    begin
+      aGraphItem := TGraphItem(Items.Item[i].SubItems.Objects[3]);     //get file^ien match
+      aNum := i;
+      aTypeItem := Pieces(aGraphItem.Values, '^', 1, 2);
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.chartBaseMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+var
+  lbutton: boolean;
+begin
+  FHintStop := true;
+  timHintPause.Enabled := false;
+  InactivateHint;
+  chartDatelineTop.Tag := 0; // not legend or series click
+  scrlTop.Hint := '';
+  scrlTop.Tag := 0;
+  FYMinValue := (Sender as TChart).MinYValue((Sender as TChart).LeftAxis);
+  FYMaxValue := (Sender as TChart).MaxYValue((Sender as TChart).LeftAxis);
+  pnlTop.Tag := 1;
+  if (Sender as TControl).Parent = pnlBottom then pnlTop.Tag := 0;
+  if ((Sender as TControl).Parent as TControl) = pnlBottom then pnlTop.Tag := 0;
+  if (((Sender as TControl).Parent as TControl).Parent as TControl).Parent = pnlBottom then pnlTop.Tag := 0;
+  if pnlTop.Tag = 1 then
+  begin
+    mnuPopGraphIsolate.Caption := 'Move all selections to bottom';
+    mnuPopGraphRemove.Caption := 'Remove all selections from top';
+    if memTop.Visible then
+      memTop.SetFocus;
+  end
+  else
+  begin
+    mnuPopGraphIsolate.Caption := 'Move all selections to top';
+    mnuPopGraphRemove.Caption := 'Remove all selections from bottom';
+    if memBottom.Visible then
+      memBottom.SetFocus;
+  end;
+  if Button = mbLeft then
+    FMouseDown := true;
+  lbutton := Button <> mbRight;
+  MouseClicks(Sender as TChart, lbutton, X, Y);
+end;
+
+procedure TfrmGraphs.MouseClicks(aChart: TChart; lbutton: boolean; X, Y: Integer);
+var
+  i, tmp: integer;
+  aSeries: TChartSeries;
+begin
+  tmp := -1;
+  for i := 0 to aChart.SeriesCount - 1 do
+  if aChart.Series[i].Marks.Visible then
+  begin
+    tmp := aChart.Series[i].Marks.Clicked(X, Y);
+    if tmp <> -1 then break;
+  end;
+  if tmp <> -1 then
+  begin
+    FOnMark := true;
+    aSeries := aChart.Series[i];
+    FGraphClick := aChart;
+    FGraphSeries := aSeries;
+    FGraphValueIndex := tmp;
+    chartDateLineTop.Tag := 1;       // indicates a series click
+    if (aSeries is TGanttSeries) then
+    begin
+      FDate1 := (aSeries as TGanttSeries).StartValues[tmp];
+      FDate2 := (aSeries as TGanttSeries).EndValues[tmp];
+    end
+    else
+    begin
+      FDate1 := aSeries.XValue[tmp];
+      FDate2 := FDate1;
+    end;
+    LabelClicks(aChart, aSeries, lbutton, tmp);
+    FMouseDown := false;
+    aChart.AllowZoom := false;
+  end;
+end;
+
+procedure TfrmGraphs.LabelClicks(aChart: TChart; aSeries: TChartSeries; lbutton: boolean; tmp: integer);
+var
+  firstnon, toggle: boolean;
+  i, originalindex: integer;
+  dttm, seriestitle, showing, textvalue, textvalue1, textvalue2, typename, typenum: string;
+begin
+    seriestitle := Piece(aSeries.Title, '^', 1);
+    if seriestitle = '(non-numeric)' then
+    begin
+      originalindex := strtointdef(Piece(GtslNonNum[tmp], '^', 3), 0);
+      seriestitle := Piece(aChart.Series[originalindex].Title, '^', 1);
+    end;
+    if (seriestitle = TXT_COMMENTS) and lbutton then
+    begin
+      chartDatelineTop.Tag := 0;
+      mnuPopGraphDetailsClick(self);
+    end
+    else if (seriestitle = TXT_NONNUMERICS) and lbutton then
+    begin
+      if (aSeries.Identifier = 'serNonNumBottom') or (aSeries.Identifier = 'serNonNumTop') then
+      begin
+        firstnon := true;
+        toggle := false;
+        for i := 0 to aChart.SeriesCount - 1 do
+        if Piece(aChart.Series[i].Title, '^', 1) = '(non-numeric)' then
+        begin
+          if firstnon then
+          begin
+           toggle := not aChart.Series[i].Marks.Visible;
+           firstnon := false;
+          end;
+          aChart.Series[i].Marks.Visible := toggle;
+        end;
+      end;
+    end
+    else if lbutton and (seriestitle <> TXT_NONNUMERICS) then
+    begin
+      textvalue := ValueText(aChart, aSeries, tmp);
+      dttm := Piece(textvalue, '^', 3);
+      if copy(textvalue, length(textvalue) - 5, length(textvalue)) = ' 00:00' then
+        dttm := Pieces(dttm, ' ', 1, 3);
+      textvalue1 := Piece(textvalue, '^', 2) + '  ' + dttm;
+      textvalue2 := Piece(textvalue, '^', 4) + '  ' + Piece(textvalue, '^', 5);
+      typenum := trim(Piece(textvalue, '^', 1));
+      typename := Piece(textvalue, '^', 2);
+      AllTypeDate(typenum, typename, textvalue1, textvalue2, FDate1, FDate2);
+    end
+    else if (Piece(aSeries.Title, '^', 1) <> TXT_NONNUMERICS)
+        and (Piece(aSeries.Title, '^', 1) <> TXT_COMMENTS) then
+    begin
+      mnuPopGraphIsolate.Enabled := true;
+      if pnlTop.Tag = 1 then
+        mnuPopGraphIsolate.Caption := 'Move - ' + seriestitle + ' - from Top to Bottom'
+      else
+        mnuPopGraphIsolate.Caption := 'Move - ' + seriestitle + ' - from Bottom to Top';
+      scrlTop.Hint := 'Details - for ' + seriestitle + ' for ' +
+        FormatDateTime('mmm d, yyyy  h:nn am/pm', FDate1);
+      scrlTop.Tag := tmp + 1;
+      mnuPopGraphIsolate.Hint := seriestitle;
+      mnuPopGraphRemove.Enabled := true;
+      mnuPopGraphRemove.Caption := 'Remove - ' + seriestitle;
+      mnuPopGraphDetails.Caption := 'Details - ' + seriestitle;
+      if FGraphSeries.Marks.Visible then showing := ' - turn off' else showing := ' - turn on';
+      mnuPopGraphValueMarks.Caption := 'Values - ' + seriestitle + showing;
+      mnuPopGraphValueMarks.Enabled := true;
+    end;
+end;
+
+procedure TfrmGraphs.mnuPopGraphStuffPopup(Sender: TObject);
+begin
+  if scrlTop.Tag = 0 then scrlTop.Hint := '';
+  if (lvwItemsTop.SelCount = 0) and (lvwItemsBottom.SelCount = 0) then scrlTop.Hint := '';
+  if scrlTop.Hint = '' then
+  begin
+    if Pieces(mnuPopGraphIsolate.Caption, ' ', 1, 3) = 'Move all selections' then
+      mnuPopGraphIsolate.Enabled := true
+    else
+    begin
+      mnuPopGraphIsolate.Caption := 'Move';
+      mnuPopGraphIsolate.Enabled := false;
+    end;
+    if Pieces(mnuPopGraphRemove.Caption, ' ', 1, 3) = 'Remove all selections' then
+      mnuPopGraphRemove.Enabled := true
+    else
+    begin
+      mnuPopGraphRemove.Caption := 'Remove';
+      mnuPopGraphRemove.Enabled := false;
+    end;
+    mnuPopGraphDetails.Caption := 'Details...';
+    mnuPopGraphDetails.Enabled := (lvwItemsTop.SelCount > 0) or (lvwItemsBottom.SelCount > 0);
+    mnuPopGraphValueMarks.Caption := 'Values - ';
+    mnuPopGraphValueMarks.Enabled := false;
+  end
+  else
+  begin
+    mnuPopGraphIsolate.Enabled := true;
+    mnuPopGraphRemove.Enabled := true;
+    mnuPopGraphDetails.Enabled := true;
+    if chartDatelineTop.Tag <> -1 then
+      mnuPopGraphValueMarks.Enabled := true;
+  end;
+  {mnuPopGraphViewDefinition.Enabled := (pcTop.ActivePageIndex = 1)
+                                    or (pcBottom.ActivePageIndex = 1);}
+  mnuPopGraphSwap.Enabled := (lvwItemsTop.SelCount > 0) or (lvwItemsBottom.SelCount > 0);
+  mnuPopGraphReset.Enabled := mnuPopGraphSwap.Enabled;
+  mnuPopGraphCopy.Enabled := mnuPopGraphSwap.Enabled;
+  mnuPopGraphPrint.Enabled := mnuPopGraphSwap.Enabled;
+  mnuPopGraphExport.Enabled := mnuPopGraphSwap.Enabled;
+
+  with pnlMain.Parent do
+  if BorderWidth <> 1 then            // only do on float Graph
+    mnuPopGraphStayOnTop.Enabled :=false
+  else
+    mnuPopGraphStayOnTop.Enabled :=true;
+end;
+
+procedure TfrmGraphs.mnuPopGraphDetailsClick(Sender: TObject);
+var
+  tmpList: TStringList;
+  date1, date2: TFMDateTime;
+  teststring, typeitem, textvalue, textvalue1, textvalue2, typenum, typename: string;
+  selnum: integer;
+  aGraphItem: TGraphItem;
+  aListView: TListView;
+  aListItem: TListItem;
+begin
+  if chartDatelineTop.Tag = 1 then               // series
+  begin
+    ItemCheck(lvwItemsTop, mnuPopGraphIsolate.Hint, selnum, typeitem);
+    if selnum < 0 then exit;
+    if not HSAbbrev(Piece(typeitem, '^', 1)) then
+    begin
+      if (FGraphSeries is TGanttSeries) then
+      begin
+        FDate1 := (FGraphSeries as TGanttSeries).StartValues[FGraphValueIndex];
+        FDate2 := (FGraphSeries as TGanttSeries).EndValues[FGraphValueIndex];
+      end
+      else
+      begin
+        FDate1 := FGraphSeries.XValue[FGraphValueIndex];
+        FDate2 := FDate1;
+      end;
+      textvalue := ValueText(FGraphClick, FGraphSeries, FGraphValueIndex);
+      textvalue1 := Piece(textvalue, '^', 2) + '  ' + Piece(textvalue, '^', 3);
+      textvalue2 := Piece(textvalue, '^', 4) + '  ' + Piece(textvalue, '^', 5);
+      typenum := trim(Piece(textvalue, '^', 1));
+      typename := Piece(textvalue, '^', 2);
+      AllTypeDate(typenum, typename, textvalue1, textvalue2, FDate1, FDate2);
+      exit;
+    end
+    else
+      OneDayTypeDetails(typeitem);
+  end
+  else            // legend
+  begin
+    date1 := DateTimeToFMDateTime(FGraphSetting.HighTime);
+    date2 := DateTimeToFMDateTime(FGraphSetting.LowTime);
+    tmpList := TStringList.Create;
+    if pnlTop.Tag = 1 then
+      aListView := lvwItemsTop
+    else
+      aListView := lvwItemsBottom;
+    aListItem := aListView.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);      //get file^ien match
+      teststring := aGraphItem.Values;
+      tmpList.Add(teststring);
+      aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+    if tmpList.Count > 0 then
+      AllDetails(date1, date2, tmplist);
+    tmpList.Free;
+  end;
+  FMouseDown := false;
+  if (Sender is TChart) then
+    (Sender as TChart).AllowZoom := false;
+end;
+
+procedure TfrmGraphs.AllDetails(aDate1, aDate2: TFMDateTime; aTempList: TStrings);
+var
+  i: integer;
+  detailsok: boolean;
+  testnum, teststring, testtype: string;
+  ztmpList: TStringList;
+  TypeList: TStringList;
+begin
+  //ShowMsg('This funtionality is currently unavailable.');
+  //exit;      // ****************** temporary 11-4-07
+  TypeList := TStringList.Create;
+   detailsok := true;
+  for i := 0 to aTempList.Count -1 do
+  begin
+    teststring := aTempList[i];
+    testtype := Piece(teststring, '^', 1);
+    if not HSAbbrev(testtype) then
+      detailsok := false;
+    if testtype = '63' then
+    begin
+      testnum := Piece(teststring, '^', 2);
+      testnum := Piece(testnum, '.', 1);
+      TypeList.Add('63^' + testnum);
+    end
+    else
+      TypeList.Add(teststring);
+  end;
+  if detailsok then
+  begin
+    ztmpList := TStringList.Create;
+    try
+      FastAssign(rpcDetailSelected(Patient.DFN, aDate1, aDate2, TypeList, true), ztmpList);
+      NotifyApps(ztmpList);
+      ReportBox(ztmpList, 'Graph results on ' + Patient.Name, True);
+    finally
+      ztmpList.Free;
+    end;
+  end
+  else
+    ItemDateRange(FGraphClick);
+  TypeList.Free;
+end;
+
+procedure TfrmGraphs.OneDayTypeDetails(aTypeItem: string);
+var
+  strdate1, strdate2, titleitem, titletype: string;
+  date1, date2: TFMDateTime;
+  tmpList: TStringList;
+begin
+  tmpList := TStringList.Create;
+  strdate1 := FormatDateTime('mm/dd/yyyy', FDate1);
+  strdate2 := FormatDateTime('mm/dd/yyyy', FDate2);
+  FDate1 := StrToDateTime(strdate1);
+  FDate2 := StrToDateTime(strdate2);
+  date1 := DateTimeToFMDateTime(FDate1 + 1);
+  date2 := DateTimeToFMDateTime(FDate2);
+  titletype := FileNameX(Piece(aTypeItem, '^', 1));
+  titleitem := ItemName(Piece(aTypeItem, '^', 1), Piece(aTypeItem, '^', 2));
+  rpcDetailDay(tmpList, Patient.DFN, date1, date2, aTypeItem, true);
+  NotifyApps(tmpList);
+  ReportBox(tmpList, titletype + ': ' + titleitem + ' on ' + Patient.Name + ' for ' + FormatFMDateTime('mmm d, yyyy', date1), True);
+  tmpList.Free;
+end;
+
+procedure TfrmGraphs.NotifyApps(aList: TStrings);
+var
+  i: integer;
+  info, aID, aTag: string;
+begin
+  for i := aList.Count - 1 downto 0  do
+  begin
+    info := aList[i];
+    if Piece(info, '^', 1 ) = '~~~' then
+    begin
+      aList.Delete(i);
+      if length(Piece(info, '^', 11)) > 0 then
+      begin
+        aID := '';
+        aTag := 'SUR' + '^';
+        //NotifyOtherApps(NAE_REPORT, aTag + aID);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.CreatePatientHeader(var HeaderList: TStringList; PageTitle, Warning, DateRange: string);
+// this procedure modified from rReports
+var
+  tmpStr, tmpItem: string;
+begin
+  if Warning = TXT_INFO then Warning := '  ';
+  with HeaderList do
+  begin
+    Add(' ');
+    Add(StringOfChar(' ', (74 - Length(PageTitle)) div 2) + PageTitle);
+    Add(' ');
+    tmpStr := Patient.Name + '   ' + Patient.SSN;
+    tmpItem := tmpStr + StringOfChar(' ', 39 - Length(tmpStr)) + Encounter.LocationName;
+{ TODO -oRV -cWVEHR Long Age : Changed to use long age }
+    //tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')';
+    tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + GetPatientBriefAge(Patient.DFN) + ')';
+{}
+    tmpItem := tmpItem + StringOfChar(' ', 74 - (Length(tmpItem) + Length(tmpStr))) + tmpStr;
+    Add(tmpItem);
+    Add(StringOfChar('=', 74));
+    Add(' *** WORK COPY ONLY *** ' + StringOfChar(' ', 24) + 'Printed: '
+      + FormatFMDateTime('mmm dd, yyyy  hh:nn', FMNow));
+    Add('  ' + TXT_COPY_DISCLAIMER);
+    Add(StringOfChar(' ', (74 - Length(DateRange)) div 2) + DateRange);
+    Add(StringOfChar(' ', (74 - Length(Warning)) div 2) + Warning);
+    Add(' ');
+  end;
+end;
+
+procedure TfrmGraphs.CreateExcelPatientHeader(var HeaderList: TStringList; PageTitle, DateRange: string);
+// this procedure modified from rReports
+var
+  tmpItem: string;
+begin
+  with HeaderList do
+  begin
+    Add(' ');
+    Add(PageTitle);
+    Add(' ');
+    tmpItem := Patient.Name + '         ' + Patient.SSN + '          '
+             + Encounter.LocationName + '                            '
+             + FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')';
+    Add(tmpItem);
+    //Add(TXT_COPY_DISCLAIMER);  // put on footer to avoid length problems
+    Add(DateRange);
+  end;
+end;
+
+procedure TfrmGraphs.GetData(aString: string);
+var
+  i: integer;
+  filenum, itemdata, itemid: string;
+  aDate, aDate1: double;
+begin
+  GtslTemp.Clear;
+  itemid := UpperCase(Pieces(aString, '^', 1, 2));
+  for i := GtslData.Count - 1 downto 0 do
+    if itemid = UpperCase(Pieces(GtslData[i], '^', 1, 2)) then
+    begin
+      itemdata := GtslData[i];
+      filenum := Piece(itemdata, '^', 1);
+      if (filenum = '52') or (filenum = '55') or (filenum = '55NVA')
+      or (filenum = '9999911') or (filenum = '405') or (filenum = '9000010') then
+      begin
+        aDate := strtofloat(FMCorrectedDate(Piece(itemdata, '^', 3)));
+        aDate1 := strtofloat(FMCorrectedDate(Piece(itemdata, '^', 4)));
+        if (aDate < FGraphSetting.FMStopDate) and (aDate > FGraphSetting.FMStartDate) then
+          GtslTemp.Add(GtslData[i])
+        else if (aDate < FGraphSetting.FMStopDate) and (aDate1 > FGraphSetting.FMStartDate) then
+          GtslTemp.Add(GtslData[i])
+        else if (aDate < FGraphSetting.FMStartDate) and (aDate1 > FGraphSetting.FMStopDate) then
+          GtslTemp.Add(GtslData[i]);
+      end
+      else if Piece(itemdata, '^', 3) <> '' then
+      begin
+        aDate := strtofloat(FMCorrectedDate(Piece(itemdata, '^', 3)));
+        if (aDate < FGraphSetting.FMStopDate) and (aDate > FGraphSetting.FMStartDate) then
+          if Copy(itemdata, 1, 4) = '63MI' then
+            GtslTemp.Add(Pieces(GtslData[i], '^', 1, 4))
+          else if Copy(itemdata, 1, 4) = '63AP' then
+            GtslTemp.Add(Pieces(GtslData[i], '^', 1, 4))
+          //else GtslTemp.Add(Pieces(Items[i], '^', 1, 5));         // add in non micro, ap
+          else GtslTemp.Add(GtslData[i]);         // add in non micro, ap
+      end;
+    end;
+end;
+
+function TfrmGraphs.FMToDateTime(FMDateTime: string): TDateTime;
+var
+  x, Year: string;
+begin
+  { Note: TDateTime cannot store month only or year only dates }
+  x := FMDateTime + '0000000';
+  if Length(x) > 12 then x := Copy(x, 1, 12);
+  if StrToInt(Copy(x, 9, 4)) > 2359 then x := Copy(x, 1, 7) + '.2359';
+  Year := IntToStr(17 + StrToInt(Copy(x, 1, 1))) + Copy(x, 2, 2);
+  x := Copy(x, 4, 2) + '/' + Copy(x, 6, 2) + '/' + Year + ' ' + Copy(x, 9, 2) + ':' + Copy(x, 11, 2);
+  Result := StrToDateTime(x);
+end;
+
+function TfrmGraphs.GraphTypeNum(aType: string): integer;
+var
+  i: integer;
+begin
+  Result := 4;
+  if (aType = '52') or (aType = '55') or (aType = '55NVA') or (aType = '9999911') then
+    Result := 8
+  else
+  for i := 0 to GtslAllTypes.Count - 1 do
+    if aType = Piece(GtslAllTypes[i], '^', 1) then
+    begin
+      Result := strtointdef(Piece(GtslAllTypes[i], '^', 3), 4);
+      break;
+    end;
+end;
+
+function TfrmGraphs.HSAbbrev(aType: string): boolean;
+var
+  i: integer;
+  astring: string;
+begin
+  Result := false;
+  for i := 0 to GtslTypes.Count - 1 do
+  begin
+    astring := GtslTypes[i];
+    if Piece(astring, '^', 1) = aType then
+    begin
+      Result := length(Piece(astring, '^', 8)) > 0;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.TempCheck(typeitem: string; var levelseq: double);
+var
+  done, previous: boolean;
+  j: integer;
+begin
+  previous := false;
+  done := false;
+  j := 0;
+  while not done do
+  begin
+    if GtslTempCheck.Count = j then done := true
+    else if GtslTempCheck[j] = typeitem then
+    begin
+      previous := true;
+      levelseq := j + 1;
+      done := true;
+    end
+    else j := j + 1;
+  end;
+  if not previous then
+  begin
+    GtslTempCheck.Add(UpperCase(typeitem));
+    levelseq := GtslTempCheck.Count;
+  end;
+end;
+
+function TfrmGraphs.DCName(aDCien: string): string;
+var
+  i: integer;
+begin
+  if GtslDrugClass.Count < 1 then
+    FastAssign(rpcClass('50.605'), GtslDrugClass);
+  Result := '';
+  for i := 0 to GtslDrugClass.Count - 1 do
+    if Piece(GtslDrugClass[i], '^', 2) = aDCien then
+    begin
+      Result := 'Drug - ' + Piece(GtslDrugClass[i], '^', 3);
+      break;
+    end;
+end;
+
+procedure TfrmGraphs.splItemsBottomMoved(Sender: TObject);
+begin
+ chkItemsBottom.Left := pnlItemsBottom.Width - chkItemsBottom.Width - 2;
+ pnlItemsTop.Width := pnlItemsBottom.Width;
+ chkItemsTop.Left := pnlItemsTop.Width - chkItemsTop.Width - 2;
+end;
+
+procedure TfrmGraphs.splItemsTopMoved(Sender: TObject);
+begin
+ chkItemsTop.Left := pnlItemsTop.Width - chkItemsTop.Width - 2;
+ pnlItemsBottom.Width := pnlItemsTop.Width;
+ chkItemsBottom.Left := pnlItemsBottom.Width - chkItemsBottom.Width - 2;
+end;
+
+procedure TfrmGraphs.splViewsTopMoved(Sender: TObject);
+begin
+  mnuPopGraphViewDefinition.Checked := (memViewsTop.Height > 5)
+                                    or (memViewsBottom.Height > 5);
+end;
+
+procedure TfrmGraphs.cboDateRangeChange(Sender: TObject);
+var
+  dateranges: string;
+begin
+  SelCopy(lvwItemsTop, GtslSelCopyTop);
+  SelCopy(lvwItemsBottom, GtslSelCopyBottom);
+  dateranges := '';
+  if (cboDateRange.ItemID = 'S') then
+  begin
+    with calDateRange do
+    begin
+      if Execute then
+        if Length(TextOfStart) > 0 then
+          if Length(TextOfStop) > 0 then
+          begin
+            dateranges :=
+              '^' + UpperCase(TextOfStart) + ' to ' + UpperCase(TextOfStop) +
+              '^^^' + RelativeStart + ';' + RelativeStop +
+              '^' + floattostr(FMDateStart) + '^' + floattostr(FMDateStop);
+            cboDateRange.Items.Append(dateranges);
+            cboDateRange.ItemIndex := cboDateRange.Items.Count - 1;
+          end
+          else
+            cboDateRange.ItemIndex := -1
+        else
+          cboDateRange.ItemIndex := -1
+      else
+        cboDateRange.ItemIndex := -1;
+    end;
+  end;
+  HideGraphs(true);
+  DateSteps(dateranges);
+  FilterListView(FGraphSetting.FMStartDate, FGraphSetting.FMStopDate);
+  SelReset(GtslSelCopyTop, lvwItemsTop);
+  SelReset(GtslSelCopyBottom, lvwItemsBottom);
+  DisplayData('top');
+  DisplayData('bottom');
+  if lstViewsTop.ItemIndex > 1 then lstViewsTopChange(self);
+  if lstViewsBottom.ItemIndex > 1 then lstViewsBottomChange(self);
+  HideGraphs(false);
+end;
+
+procedure TfrmGraphs.DateSteps(dateranges: string);
+var
+  datetag: integer;
+  endofday: double;
+  manualstart, manualstop: string;
+begin
+  endofday := FMDateTimeOffsetBy(FMToday, 1);
+  datetag := cboDateRange.ItemIEN;
+  FGraphSetting.FMStopDate := endofday;
+  with FGraphSetting do
+  case datetag of
+  0:  begin
+        if cboDateRange.ItemIndex > 8 then    // selected date range
+        begin
+          if dateranges = '' then dateranges := cboDateRange.Items[cboDateRange.ItemIndex];
+          manualstart := Piece(dateranges, '^' , 6);
+          manualstop := Piece(dateranges, '^' , 7);
+          if (manualstop <> '') and (length(Piece(manualstop, '.', 2)) = 0) then
+            manualstop := manualstop + '.2359';
+          FMStartDate := MakeFMDateTime(manualstart);
+          FMStopDate := MakeFMDateTime(manualstop);
+          if (manualstart <> '') and (length(Piece(manualstart, '.', 2)) = 0) then
+          begin
+            FMStartDate := FMDateTimeOffsetBy(FMStartDate, -1);
+            manualstart := floattostr(FMStartDate) + '.2359';
+            FMStartDate := MakeFMDateTime(manualstart);
+          end;
+        end;
+      end;
+  1:  FMStartDate := FMToday;
+  2:  FMStartDate := FMDateTimeOffsetBy(FMToday, -7);
+  3:  FMStartDate := FMDateTimeOffsetBy(FMToday, -14);
+  4:  FMStartDate := FMDateTimeOffsetBy(FMToday, -30);
+  5:  FMStartDate := FMDateTimeOffsetBy(FMToday, -183);
+  6:  FMStartDate := FMDateTimeOffsetBy(FMToday, -365);
+  7:  FMStartDate := FMDateTimeOffsetBy(FMToday, -730);
+  8:  FMStartDate := FM_START_DATE;   // earliest recorded values
+  else
+      begin
+        if dateranges = '' then dateranges := cboDateRange.Items[cboDateRange.ItemIndex];
+        manualstart := Piece(dateranges, '^' , 6);
+        manualstop := Piece(dateranges, '^' , 7);
+        if (manualstop <> '') and (length(Piece(manualstop, '.', 2)) = 0) then manualstop := manualstop + '.2359';
+        FMStartDate := MakeFMDateTime(manualstart);
+        FMStopDate := MakeFMDateTime(manualstop);
+        if (manualstart <> '') and (length(Piece(manualstart, '.', 2)) = 0) then
+        begin
+          FMStartDate := FMDateTimeOffsetBy(FMStartDate, -1);
+          manualstart := floattostr(FMStartDate) + '.2359';
+          FMStartDate := MakeFMDateTime(manualstart);
+        end;
+      end;
+  end;
+end;
+
+function TfrmGraphs.StdDev(value, high, low: double): double;
+begin
+  if high - low <> 0 then
+  begin
+    Result := (value - (low + ((high - low) / 2)))/((high - low) / 4);
+    Result := RoundTo(Result, -2);
+  end
+  else
+    Result := 0;
+end;
+
+function TfrmGraphs.InvVal(value: double): double;
+begin
+  if value = 0 then value := 0.0001;
+  Result := 1 / value;
+  Result := RoundTo(Result, -2);
+end;
+
+procedure TfrmGraphs.lvwItemsTopCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+begin
+  if not(Sender is TListView) then exit;
+  if FsortAscending then
+  begin
+    if FSortCol = 0 then
+      Compare := CompareStr(Item1.Caption, Item2.Caption)
+    else
+      Compare := CompareStr(Item1.SubItems[FsortCol - 1],
+        Item2.SubItems[FsortCol - 1]);
+  end
+  else
+  begin
+    if FSortCol = 0 then
+      Compare := CompareStr(Item2.Caption, Item1.Caption)
+    else
+      Compare := CompareStr(Item2.SubItems[FsortCol - 1],
+        Item1.SubItems[FsortCol - 1]);
+  end;
+end;
+
+procedure TfrmGraphs.lvwItemsTopColumnClick(Sender: TObject;
+  Column: TListColumn);
+begin
+  if FSortCol = Column.Index then
+    FSortAscending := not FSortAscending
+  else
+    FSortAscending := true;
+  FSortCol := Column.Index;
+  (Sender as TListView).AlphaSort;
+end;
+
+procedure TfrmGraphs.lvwItemsBottomCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+begin
+  if not(Sender is TListView) then exit;
+  if FBSortAscending then
+  begin
+    if FBSortCol = 0 then
+      Compare := CompareStr(Item1.Caption, Item2.Caption)
+    else
+      Compare := CompareStr(Item1.SubItems[FBSortCol - 1],
+        Item2.SubItems[FBSortCol - 1]);
+  end
+  else
+  begin
+    if FBSortCol = 0 then
+      Compare := CompareStr(Item2.Caption, Item1.Caption)
+    else
+      Compare := CompareStr(Item2.SubItems[FBSortCol - 1],
+        Item1.SubItems[FBSortCol - 1]);
+  end;
+end;
+
+procedure TfrmGraphs.lvwItemsBottomColumnClick(Sender: TObject;
+  Column: TListColumn);
+begin
+  if FBSortCol = Column.Index then
+    FBSortAscending := not FBSortAscending
+  else
+    FBSortAscending := true;
+  FBSortCol := Column.Index;
+  (Sender as TListView).AlphaSort;
+end;
+
+procedure TfrmGraphs.btnGraphSelectionsClick(Sender: TObject);
+var
+  actionOK, checkaction: boolean;
+  counter: integer;
+  profile, profilestring, section, selections, specnum, typeitem, seltext: string;
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  selections := '';
+  seltext := '';
+  aListItem := lvwItemsTop.Selected;
+  while aListItem <> nil do
+  begin
+    aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);
+    typeitem := UpperCase(aGraphItem.Values);
+    if Piece(typeitem, '^', 1) = '63' then
+    begin
+      specnum := Piece(Piece(typeitem, '^', 2), '.', 2);
+      if length(specnum) > 0 then  // multispecimen
+        if specnum = '1' then typeitem := Piece(typeitem, '.', 1)
+        else typeitem := '';
+    end;
+    if length(typeitem) > 0 then
+      selections := selections + Piece(typeitem, '^', 1) + '~' + Piece(typeitem, '^', 2) + '~|';
+    aListItem := lvwItemsTop.GetNextItem(aListItem, sdAll, [isSelected]);
+  end;
+  checkaction := false;
+  actionOK := false;
+  profile := '*';
+  counter := lstViewsTop.Tag;
+  // load GtslItems with all patient items and pass to Define View    ????
+  DialogGraphProfiles(actionOK, checkaction, FGraphSetting,
+    profile, profilestring, section, Patient.DFN, counter, selections);
+  if (not actionOK) then exit;
+  FillViews;
+  if (section = 'niether') then exit;
+  lstViewsTop.Tag := counter;
+  if (section = 'bottom') or (section = 'both') then
+    lvwItemsBottom.Tag := counter;
+  if (section = 'top') or (section = 'both') then
+    lvwItemsTop.Tag  := counter;
+  ViewSelections;
+end;
+
+procedure TfrmGraphs.DisplayFreeText(aChart: TChart);
+var
+  i: integer;
+begin
+  for i := 0 to aChart.SeriesCount - 1 do
+    if (Piece(aChart.Series[i].Title, '^', 1) = '(non-numeric)') then
+      aChart.Series[i].Marks.Visible := true;
+end;
+
+procedure TfrmGraphs.ViewSelections;
+var
+  i: integer;
+begin    // uses lvwItems... Tag as index for view selection
+  with lvwItemsBottom do
+  begin
+    if (Tag = 0) and (length(lvwItemsBottom.Hint) > 0) then
+    begin
+      for i := 0 to lstViewsBottom.Items.Count - 1 do
+      begin
+        ShowMsg(lstViewsBottom.Items[i]);
+        if lvwItemsBottom.Hint = Piece(lstViewsBottom.Items[i], '^', 2) then
+        begin
+          Tag := i;
+          break;
+        end;
+      end;
+    end;
+    if Tag > 0 then
+    begin
+      if not chkDualViews.Checked then
+      begin
+        chkDualViews.Checked := true;
+        chkDualViewsClick(self);
+      end;
+      ClearSelection;
+      lstViewsBottom.ItemIndex := Tag;
+      Tag := 0;
+      Hint := '';
+      lstViewsBottomChange(lstViewsBottom);
+    end;
+  end;
+  with lvwItemsTop do
+  begin
+    if (Tag = 0) and (length(lvwItemsTop.Hint) > 0) then
+      for i := 0 to lstViewsTop.Items.Count - 1 do
+        if lvwItemsTop.Hint = Piece(lstViewsTop.Items[i], '^', 2) then
+        begin
+          Tag := i;
+          break;
+        end;
+    if Tag > 0 then
+    begin
+      ClearSelection;
+      lstViewsTop.ItemIndex := Tag;
+      Tag := 0;
+      Hint := '';
+      lstViewsTopChange(lstViewsTop);
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.ItemsClick(Sender: TObject; aListView, aOtherListView: TListView;
+  aCheckBox: TCheckBox; aListBox: TORListBox; aList: TStrings; aSection: string);
+begin
+  FRetainZoom := (GtslZoomHistoryFloat.Count > 0);
+  FWarning := false;
+  Screen.Cursor := crHourGlass;
+  HideGraphs(true);
+  if Sender = aListView then
+  begin
+    aListBox.Tag := BIG_NUMBER;                   // avoids recurssion
+    aListBox.ItemIndex := -1;
+    aListBox.ClearSelection;
+  end;
+  if (Sender is TListView) then           // clear out selcopy list
+    aList.Clear;
+  if aOtherListView.SelCount < 1 then
+  begin
+    FGraphSetting.HighTime := 0;
+    FGraphSetting.LowTime := BIG_NUMBER;
+  end
+  else if (FBHighTime <> 0) and (aSection = 'top') then
+  begin
+    if FBHighTime < FTHighTime then FGraphSetting.HighTime := FBHighTime;
+    if FBLowTime > FTLowTime then FGraphSetting.LowTime := FBLowTime;
+  end
+  else if (FTHighTime <> 0) and (aSection = 'bottom') then
+  begin
+    if FTHighTime < FBHighTime then FGraphSetting.HighTime := FTHighTime;
+    if FTLowTime > FBLowTime then FGraphSetting.LowTime := FTLowTime;
+  end;
+  if aSection = 'top' then
+  begin
+    FTHighTime := 0;
+    FTLowTime := BIG_NUMBER;
+  end
+  else if aSection = 'bottom' then
+  begin
+    FBHighTime := 0;
+    FBLowTime := BIG_NUMBER;
+  end;
+  CheckToAddData(aListView, aSection, 'SELECT');
+  DisplayData(aSection);
+  if (aListView.SelCount = 1) and (aOtherListView.SelCount = 0) then
+  begin
+    GtslZoomHistoryFloat.Clear;
+    FRetainZoom := false;
+    mnuPopGraphZoomBack.Enabled := false;
+  end
+  else if FRetainZoom and (GtslZoomHistoryFloat.Count > 0) then
+    ZoomUpdate;
+  HideGraphs(false);
+  if FWarning then
+    FWarning := false;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.CheckToAddData(aListView: TListView; aSection, TypeToCheck: string);
+var
+  done, ok, previous, singletype: boolean;
+  i, j: integer;
+  itemname, typeitem: string;
+  aGraphItem: TGraphItem;
+begin
+  if FFastTrack then
+    exit;
+  Application.ProcessMessages;
+  TypeToCheck := UpperCase(TypeToCheck);
+  if (TypeToCheck = 'SELECT') and (lvwItemsTop.SelCount = 0)
+    and (lvwItemsBottom.SelCount = 0) then exit;
+  singletype := length(Piece(TypeToCheck, '^', 2)) = 0;
+  for i := 0 to aListView.Items.Count - 1 do
+  begin
+    ok := false;
+    if (TypeToCheck = 'ALL') then ok := true;
+    if (TypeToCheck = 'SELECT') and aListView.Items[i].Selected then ok := true;
+    aGraphItem := TGraphItem(aListView.Items.Item[i].SubItems.Objects[3]);
+    typeitem := UpperCase(Pieces(aGraphItem.Values, '^', 1, 2));
+    if not ok then
+      if TypeToCheck = typeitem then ok := true
+      else if (TypeToCheck = Piece(typeitem, '^', 1)) and
+        singletype then ok := true;
+    if ok then
+    begin
+      previous := false;
+      done := false;
+      j := 0;
+      while not done do
+      begin
+        if GtslCheck.Count = j then done := true
+        else if Pieces(GtslCheck[j], '^', 1, 2) = typeitem then
+        begin
+          previous := true;
+          done := true;
+        end
+        else j := j + 1;
+      end;
+      if not previous then
+      begin
+        GtslCheck.Add(typeitem);
+        itemname := aListView.Items[i].Caption;
+        if Piece(typeitem, '^', 1) = '63' then
+          LabData(typeitem, itemname, aSection, true) // need to get lab data
+        else
+          FastAddStrings(rpcGetItemData(typeitem, FMTimeStamp, Patient.DFN), GtslData);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.lvwItemsBottomClick(Sender: TObject);
+var
+  i: integer;
+begin
+  FFirstClick := true;
+  if not FFastTrack then
+    if GraphTurboOn then
+      Switch;
+  if lvwItemsBottom.SelCount > FGraphSetting.MaxSelect then
+  begin
+    pnlItemsBottomInfo.Tag := 1;
+    lvwItemsBottom.ClearSelection;
+    if FTooManyItems then FTooManyItems := false
+    else
+    begin
+      ShowMsg('Too many items to graph');
+      FTooManyItems := true;  // flag so that warning will not be displayed twice
+    end;
+    for i := 0 to GtslSelPrevBottomFloat.Count - 1 do
+      lvwItemsBottom.Items[strtoint(GtslSelPrevBottomFloat[i])].Selected := true;
+    pnlItemsBottomInfo.Tag := 0;
+  end
+  else
+  begin
+    GtslSelPrevBottomFloat.Clear;
+    for i := 0 to lvwItemsBottom.Items.Count - 1 do
+    if lvwItemsBottom.Items[i].Selected then
+      GtslSelPrevBottomFloat.Add(inttostr(i));
+    ItemsClick(Sender, lvwItemsBottom, lvwItemsTop, chkItemsBottom, lstViewsBottom, GtslSelCopyBottom, 'bottom');
+  end;
+end;
+
+procedure TfrmGraphs.SelCopy(aListView: TListView; aList: TStrings);
+var
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  if aListView.Items.Count > 0 then
+  begin
+    aListItem := aListView.Selected;
+    while aListItem <> nil do
+    begin
+      aGraphItem := TGraphItem(aListItem.SubItems.Objects[3]);    //get file^ien match
+      aList.Add(aGraphItem.Values);
+      aListItem := aListView.GetNextItem(aListItem, sdAll, [isSelected]);
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.SelReset(aList: TStrings; aListView: TListView);
+var
+  i, j: integer;
+  typeitem, itemtype: string;
+  aGraphItem: TGraphItem;
+begin
+  for i := 0 to aListView.Items.Count - 1 do
+  begin
+    aGraphItem := TGraphItem(aListView.Items.Item[i].SubItems.Objects[3]);    //get file^ien match
+    typeitem := UpperCase(Pieces(aGraphItem.Values, '^', 1, 3));
+    for j := 0 to aList.Count - 1 do
+    begin
+      itemtype := UpperCase(Pieces(aList[j], '^', 1, 3));
+      if itemtype = typeitem then
+      begin
+        aListView.Items[i].Selected := true;
+        break;
+      end;
+    end
+  end;
+end;
+
+procedure TfrmGraphs.ViewsChange(aListView: TListView; aListBox: TORListBox; aSection: string);
+var
+  Updated: boolean;
+  aProfile: string;
+begin
+  timHintPause.Enabled := false;
+  InactivateHint;
+  if aListBox.ItemIndex = -1 then exit;  // or clear graph  ***************************
+  if aListBox.Tag = BIG_NUMBER then            // avoids recurssion
+    exit;
+  if pos(LLS_FRONT, aListBox.Items[aListBox.ItemIndex]) > 0 then  // <clear all selections>
+  begin
+    if aListBox.Tag = BIG_NUMBER then            // avoids recurssion
+      exit;
+    aListView.ClearSelection;
+    if aSection = 'top' then
+    begin
+      FTHighTime := 0;
+      FTLowTime := BIG_NUMBER;
+      memViewsTop.Lines.Clear;
+      memViewsTop.Lines[0] := TXT_VIEW_DEFINITION;
+    end
+    else
+    begin
+      FBHighTime := 0;
+      FBLowTime := BIG_NUMBER;
+      memViewsBottom.Lines.Clear;
+      memViewsBottom.Lines[0] := TXT_VIEW_DEFINITION;
+    end;
+    DisplayData(aSection);
+    aListBox.Tag := 0;                     // reset
+    exit;
+  end;
+  aListView.ClearSelection;
+  Updated := false;
+  aProfile := aListBox.Items[aListBox.ItemIndex];
+  if (length(Piece(aProfile, '^', 3)) = 0) or (length(Piece(aProfile, '^', 1)) = 0) or
+     (Piece(aProfile, '^', 1) = VIEW_LABS) then        //or <custom>
+    CheckProfile(aProfile, Updated);
+  if Updated then
+    cboDateRangeChange(self);
+  if aSection = 'top' then
+  begin
+    ViewDefinition(aProfile, memViewsTop);
+    AssignProfile(aProfile, 'top');
+    if not FItemsSortedTop then
+      lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[0]);
+    if FGraphSetting.SortColumn > 0 then
+      lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[FGraphSetting.SortColumn]);
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[2]);
+    lvwItemsTopColumnClick(lvwItemsTop, lvwItemsTop.Column[2]);
+    FItemsSortedTop := false;
+  end
+  else
+  begin
+    ViewDefinition(aProfile, memViewsBottom);
+    AssignProfile(aProfile, 'bottom');
+    if not FItemsSortedBottom then
+      lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[0]);
+    if FGraphSetting.SortColumn > 0 then
+      lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[FGraphSetting.SortColumn]);
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[2]);
+    lvwItemsBottomColumnClick(lvwItemsBottom, lvwItemsBottom.Column[2]);
+    FItemsSortedBottom := false;
+  end;
+  aListView.ClearSelection;
+  AutoSelect(aListView);
+  DisplayData(aSection);
+end;
+
+procedure TfrmGraphs.AssignProfile(aProfile, aSection: string);
+var
+  profilename: string;
+begin
+  profilename := Piece(aProfile, '^', 2);
+  aProfile := UpperCase(Piece(aProfile, '^', 3));
+  if length(aProfile) = 0 then exit;
+  if aSection = 'top' then
+    SetProfile(aProfile, profilename, lvwItemsTop)
+  else
+    SetProfile(aProfile, profilename, lvwItemsBottom);
+end;
+
+procedure TfrmGraphs.SetProfile(aProfile, aName: string; aListView: TListView);
+var
+  i: integer;
+  itemstring: string;
+  aGraphItem: TGraphItem;
+begin
+  aListView.Items.BeginUpdate;
+  if aProfile = '0' then
+    for i := 0 to aListView.Items.Count - 1 do
+      aListView.Items[i].SubItems[1] := ''
+  else
+    for i := 0 to aListView.Items.Count - 1 do
+    begin
+      aGraphItem := TGraphItem(aListView.Items.Item[i].SubItems.Objects[3]);   //get file^ien match
+      itemstring := aGraphItem.Values;
+      aListView.Items[i].SubItems[1] := ProfileName(aProfile, aName, itemstring);
+    end;
+  aListView.Items.EndUpdate;
+end;
+
+function TfrmGraphs.ProfileName(aProfile, aName, aString: string): string;
+var
+  j: integer;
+  dcnm, itemdrugclass, itempart, itempart1, itempart2, itemnums: string;
+  itemstring1, itemstringnums: string;
+begin
+  Result := '';
+  itemstring1 := UpperCase(Piece(aString, '^', 1));
+  itemdrugclass := Piece(aString, '^', 6);
+  itemstringnums := UpperCase(Pieces(aString, '^', 1, 2));
+  for j := 1 to BIG_NUMBER do
+  begin
+    itempart := Piece(aProfile, '|', j);
+    if itempart = '' then
+      break;
+    itempart1 := Piece(itempart, '~', 1);
+    itempart2 := Piece(itempart, '~', 2);
+    itemnums := itempart1 + '^' + itempart2;
+    if (itempart1 = '50.605') and (length(itemdrugclass) > 0) then
+    begin
+      dcnm := DCName(itempart2);
+      if dcnm = itemdrugclass then
+      begin
+        Result := aName;
+        break;
+      end;
+    end
+    else if itempart1 = '63' then
+    begin
+      if itemnums = Piece(itemstringnums, '.', 1) then
+      begin
+        Result := aName;
+        break;
+      end;
+    end
+    else
+    begin
+      if itemnums = itemstringnums then
+      begin
+        Result := aName;
+        break;
+      end;
+    end;
+    if (itempart1 = '0') and (itempart2 = itemstring1) then
+    begin
+      Result := aName;
+      break;
+    end
+    else if (itempart1 = '0') and (length(Piece(itempart2, ';', 2)) > 0) then    // subtypes
+    if copy(itempart2, 1, length(itemstring1)) = Piece(itempart2, ';', 1) then
+    if Piece(itempart2, ';', 2) = UpperCase(Piece(Piece(aString, '^', 2), ';', 2)) then
+    begin
+      Result := aName;
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.ViewDefinition(profile: string; amemo: TRichEdit);
+var
+  i, defnum: integer;
+  vname, vdef, vlist, vtype, vnum: string;
+begin
+  vtype := Piece(profile, '^', 1);
+  defnum := strtointdef(vtype, BIG_NUMBER);
+  vname := Piece(profile, '^', 2);
+  case defnum of
+    -1:  vdef := 'Personal View';
+    -2:  vdef := 'Public View';
+    -3:  vdef := 'Lab Group';
+    else vdef := 'Temporary View';
+  end;
+  amemo.Clear;
+  amemo.Lines.Add(vname + ' [' + vdef + ']:');
+  if vdef = 'Temporary View' then
+  begin
+    for i := 4 to BIG_NUMBER do
+    begin
+      vlist := Piece(profile, '^', i);
+      if vlist = '' then break;
+      amemo.Lines.Add('  ' + vlist);
+    end;
+  end
+  else
+  begin
+    vnum := '';
+    for i := 0 to GtslAllViews.Count - 1 do
+    begin
+      vlist := GtslAllViews[i];
+      if Piece(vlist, '^', 4) = vname then
+        if Piece(vlist, '^', 1) = vtype then
+          if Piece(vlist, '^', 2) = 'V' then
+            vnum := Piece(vlist, '^', 3);
+      if vnum <> '' then
+        if Piece(vlist, '^', 2) = 'C' then
+           if Piece(vlist, '^', 3) = vnum then
+             amemo.Lines.Add('   ' + Piece(vlist, '^', 4));
+    end;
+  end;
+end;
+
+function TfrmGraphs.ExpandTax(profile: string): string;
+var
+  i: integer;
+  itempart, itempart1, itempart2, newprofile: string;
+  taxonomies: TStrings;
+  expandedcodes: TStrings;
+  taxonomycodes: TStrings;
+begin    //  '811.2~123~|0~63~|' or '55~12~|0~811.2~|0~63~|'
+  Result := profile;
+  if Pos('811.2~', profile) = 0 then exit;
+  taxonomies := TStringList.Create;
+  expandedcodes := TStringList.Create;
+  taxonomycodes := TStringList.Create;
+  newprofile := '';
+  for i := 1 to BIG_NUMBER do
+  begin
+    itempart := Piece(profile, '|', i);
+    if length(itempart) = 0 then break;
+    if Pos('811.2~', itempart) = 0 then
+      newprofile := newprofile + itempart + '|'
+    else
+      taxonomies.Add(itempart);
+  end;
+  for i := 0 to taxonomies.Count -1 do
+  begin
+    itempart := taxonomies[i];
+    if (Piece(itempart, '~', 1) = '0') and (Piece(itempart, '~', 2) = '811.2') then
+    begin
+      // this is Reminder Taxonomy <any> and would bring back a ton of codes
+      //FastAssign(rpcTaxonomy(true, nil), expandedcodes);
+      break;
+    end
+    else if Piece(itempart, '~', 1) = '811.2' then
+      taxonomycodes.Add(Piece(itempart, '~', 2));
+  end;
+  if taxonomycodes.Count > 0 then
+    FastAssign(rpcTaxonomy(false, taxonomycodes), expandedcodes);
+  for i := 1 to expandedcodes.Count -1 do
+  begin
+    itempart := expandedcodes[i];
+    itempart1 := Piece(itempart, ';', 1);
+    itempart2 := Piece(itempart, ';', 2);
+    newprofile := newprofile + itempart1 + '~' + itempart2 + '~|'
+  end;
+  Result := newprofile;
+end;
+
+procedure TfrmGraphs.CheckProfile(var aProfile: string; var Updated: boolean);
+var
+  i, j: integer;
+  itempart, itempart1, itempart2, profile, profilename, profiletype, xprofile: string;
+begin
+  Application.ProcessMessages;
+  GtslTemp.Clear;
+  profiletype := Piece(aProfile, '^', 1);
+  profilename := Piece(aProfile, '^', 2);
+  if profiletype = VIEW_PUBLIC then
+    FastAssign(GetGraphProfiles(UpperCase(profilename), '1', 0, 0), GtslTemp)
+  else if profiletype = VIEW_PERSONAL then
+    FastAssign(GetGraphProfiles(UpperCase(profilename), '0', 0, User.DUZ), GtslTemp)
+  else if profiletype = VIEW_LABS then
+  begin
+    FastAssign(GetATestGroup(strtoint(Piece(aProfile, '^', 3)), strtoint(Piece(aProfile, '^', 4))), GtslTemp);
+    aProfile := VIEW_LABS + '^' + Piece(aProfile, '^', 2) + '^';
+    for i := 0 to GtslTemp.Count - 1 do
+      aProfile := aProfile + '63~' + Piece(GtslTemp[i], '^', 1) + '~|';
+    GtslTemp.Clear;
+  end;
+  if profiletype <> '' then
+  begin
+    for i := 0 to GtslTemp.Count - 1 do
+      aProfile := aProfile + GtslTemp[i];
+    GtslTemp.Clear;
+  end;
+  Updated := false;
+  profile := UpperCase(Piece(aProfile, '^', 3));
+  xprofile := ExpandTax(profile);
+  if xprofile <> profile then
+  begin                                         // taxonomies
+    profile := xprofile;
+    LoadDisplayCheck('45DX', Updated);
+    LoadDisplayCheck('45OP', Updated);
+    LoadDisplayCheck('9000010.07', Updated);
+    LoadDisplayCheck('9000010.18', Updated);
+    LoadDisplayCheck('9000011', Updated);
+    //LoadDisplayCheck('9999911', Updated);   // problems as durations not being used
+  end;
+  aProfile := Pieces(aProfile, '^', 1, 2) + '^' + profile;
+  for j := 1 to BIG_NUMBER do
+  begin
+    itempart := Piece(profile, '|', j);
+    if itempart = '' then break;
+    itempart1 := Piece(itempart, '~', 1);
+    itempart2 := Piece(itempart, '~', 2);
+    if itempart1 = '0' then                      // <any> type
+      LoadDisplayCheck(itempart2, Updated)
+    else if itempart1 = '50.605' then            // drug class
+    begin
+      LoadDisplayCheck('52', Updated);
+      LoadDisplayCheck('55', Updated);
+      LoadDisplayCheck('55NVA', Updated);
+      LoadDisplayCheck('53.79', Updated);
+    end
+    else if itempart1 <> '0' then                // all others
+      LoadDisplayCheck(itempart1, Updated);
+  end;
+end;
+
+procedure TfrmGraphs.LoadDisplayCheck(typeofitem: string; var Updated: boolean);
+begin
+  if FFastTrack then
+  begin
+    exit;
+  end;
+  if not TypeIsLoaded(typeofitem) then
+  begin
+    LoadType(typeofitem, '1');
+    Updated := true;
+  end;
+  if not TypeIsDisplayed(typeofitem) then
+  begin
+    DisplayType(typeofitem, '1');
+    Updated := true;
+  end;
+end;
+
+procedure TfrmGraphs.AutoSelect(aListView: TListView);
+var
+  counter, i: integer;
+begin
+  counter := 0;
+  for i := 0 to aListView.Items.Count - 1 do
+  begin
+    if length(aListView.Items[i].SubItems[1]) > 0 then
+      counter := counter + 1;
+  end;
+  if counter <= FGraphSetting.MaxSelect then
+    for i := 0 to aListView.Items.Count - 1 do
+    begin
+      if length(aListView.Items[i].SubItems[1]) > 0 then
+        aListView.Items[i].Selected := true;
+    end
+  else
+  begin
+    if aListView = lvwItemsTop then
+      lvwItemsTop.ClearSelection
+    else if aListView = lvwItemsBottom then
+      lvwItemsBottom.ClearSelection;
+    if FTooManyItems then FTooManyItems := false
+    else
+    begin
+      ShowMsg('Too many items to graph');
+      FTooManyItems := true;  // flag so that warning will not be displayed twice
+    end;
+  end;
+  if aListView = lvwItemsTop then
+    lvwItemsTopClick(self)
+  else if aListView = lvwItemsBottom then
+    lvwItemsBottomClick(self);
+end;
+
+procedure TfrmGraphs.SpecCheck(var spec1, spec2, spec3, spec4: string; var singlespec: boolean);
+var
+  i: integer;
+  checkstring, datastring: string;
+begin
+  singlespec := true;
+  spec1 := ''; spec2 := ''; spec3 := ''; spec4 := '';
+  GtslSpec1.Clear; GtslSpec2.Clear; GtslSpec3.Clear; GtslSpec4.Clear;
+  for i := 0 to GtslScratchLab.Count - 1 do
+  begin
+    datastring := GtslScratchLab[i];
+    checkstring := Pieces(datastring, '^', 1, 2) + '^' + Pieces(datastring, '^', 7, 8);
+    if length(spec1) = 0  then
+    begin
+      spec1 := checkstring;
+      GtslSpec1.Add(datastring)
+    end
+    else if spec1 = checkstring then
+      GtslSpec1.Add(datastring)
+    else if length(spec2) = 0 then
+    begin
+      singlespec := false;
+      spec2 := checkstring;
+      GtslSpec2.Add(datastring)
+    end
+    else if spec2 = checkstring then
+      GtslSpec2.Add(datastring)
+    else if length(spec3) = 0 then
+    begin
+      spec3 := checkstring;
+      GtslSpec3.Add(datastring)
+    end
+    else if spec3 = checkstring then
+      GtslSpec3.Add(datastring)
+    else
+    begin
+      spec4 := checkstring;
+      GtslSpec4.Add(datastring)
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.SpecSet(var spec1, spec2, spec3, spec4: string; aItemType, aItemName: string);
+var
+  i: integer;
+  itemnum, newitemname, newitemnum, newstring: string;
+begin
+  GtslMultiSpec.Clear;
+  itemnum := Piece(aItemType, '^', 2);
+  if length(spec1) > 0 then
+  begin
+    newitemnum := itemnum + '.1';
+    newitemname := aItemName + ' (' + LowerCase(Piece(spec1, '^', 4)) + ')';
+    for i := 0 to GtslItems.Count - 1 do
+    if aItemType = Pieces(GtslItems[i], '^', 1, 2) then
+    begin
+      newstring := GtslItems[i];
+      GtslItems.Delete(i);
+      break;
+    end;
+    for i := 0 to GtslData.Count - 1 do
+    if aItemType = Pieces(GtslData[i], '^', 1, 2) then
+      GtslData.Delete(i);
+    ResetSpec(GtslSpec1, itemnum, newitemnum, newitemname, newstring);
+  end;
+  if length(spec2) > 0 then
+  begin
+    newitemnum := itemnum + '.2';
+    newitemname := aItemName + ' (' + LowerCase(Piece(spec2, '^', 4)) + ')';
+    ResetSpec(GtslSpec2, itemnum, newitemnum, newitemname, newstring);
+  end;
+  if length(spec3) > 0 then
+  begin
+    newitemnum := itemnum + '.3';
+    newitemname := aItemName + ' (' + LowerCase(Piece(spec3, '^', 4)) + ')';
+    ResetSpec(GtslSpec3, itemnum, newitemnum, newitemname, newstring);
+  end;
+  if length(spec4) > 0 then
+  begin
+    newitemnum := itemnum + '.4';
+    newitemname := aItemName + ' (other)';     // not specific after 3 specimens (from same time)
+    ResetSpec(GtslSpec4, itemnum, newitemnum, newitemname, newstring);
+  end;
+end;
+
+procedure TfrmGraphs.LabAdd(aListView: TListView; filename: string; aIndex, oldlisting: integer; selectlab: boolean);
+var
+  aGraphItem: TGraphItem;
+  aListItem: TListItem;
+begin
+  aListItem := aListView.Items.Insert(oldlisting);
+  aListItem.Caption := Piece(GtslMultiSpec[aIndex], '^', 4);
+  aListItem.SubItems.Add(filename);
+  aListItem.SubItems.Add('');
+  aListItem.SubItems.Add('');
+  aGraphItem := TGraphItem.Create;
+  aGraphItem.Values := GtslMultiSpec[aIndex];
+  aListItem.SubItems.AddObject('', aGraphItem);
+  if selectlab then
+    if not FFastLabs then
+      aListView.Items[oldlisting].Selected := true;
+end;
+
+procedure TfrmGraphs.LabCheck(aListView: TListView; aItemType: string; var oldlisting: integer);
+var
+  i: integer;
+  checkitem: string;
+  aGraphItem: TGraphItem;
+begin
+  oldlisting := 0;
+  aListView.SortType := stNone;    // avoids out of bounds error
+  for i := 0 to aListView.Items.Count - 1 do
+  begin
+    aGraphItem := TGraphItem(aListView.Items.Item[i].SubItems.Objects[3]);   //get file^ien match
+    checkitem := Pieces(aGraphItem.Values, '^', 1, 2);
+    if aItemType = checkitem then
+    begin
+      oldlisting := i;
+      aListView.Items.Delete(i);
+      break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.LabData(aItemType, aItemName, aSection: string; getdata: boolean);
+var
+  singlespec, selectlab: boolean;
+  i, oldlisting: integer;
+  filename: string;
+  spec1, spec2, spec3, spec4: string;
+begin
+  if getdata then
+    FastAssign(rpcGetItemData(aItemType, FMTimeStamp, Patient.DFN), GtslScratchLab);
+  SpecCheck(spec1, spec2, spec3, spec4, singlespec);
+  if singlespec then
+    FastAddStrings(GtslScratchLab, GtslData)
+  else
+  begin
+    SpecSet(spec1, spec2, spec3, spec4, aItemType, aItemName);
+    filename := FileNameX('63');
+
+    LabCheck(lvwItemsTop, aItemType, oldlisting);
+    selectlab := aSection = 'top';
+    lvwItemsTop.Items.BeginUpdate;
+    for i := 0 to GtslMultiSpec.Count - 1 do
+    begin
+      GtslCheck.Add(UpperCase(Pieces(GtslMultiSpec[i], '^', 1, 2)));
+      if (FGraphSetting.FMStartDate = FM_START_DATE) or
+          DateRangeMultiItems(FGraphSetting.FMStartDate, FGraphSetting.FMStopDate, Piece(GtslMultiSpec[i], '^', 2)) then
+        LabAdd(lvwItemsTop, filename, i, oldlisting, selectlab);
+    end;
+    lvwItemsTop.SortType := stBoth;
+    lvwItemsTop.Items.EndUpdate;
+
+    LabCheck(lvwItemsBottom, aItemType, oldlisting);
+    selectlab := aSection = 'bottom';
+    lvwItemsBottom.Items.BeginUpdate;
+    for i := 0 to GtslMultiSpec.Count - 1 do
+      LabAdd(lvwItemsBottom, filename, i, oldlisting, selectlab);
+    lvwItemsBottom.SortType := stBoth;
+    lvwItemsBottom.Items.EndUpdate;
+  end;
+end;
+
+procedure TfrmGraphs.RefUnits(aItem, aSpec: string; var low, high, units: string);
+var
+  i: integer;
+  item2: double;
+  itemspec, specstring: string;
+begin
+  item2 := strtofloatdef(aItem, -BIG_NUMBER);
+  if item2 <> -BIG_NUMBER then
+  begin
+    item2 := round(item2);
+    aItem := floattostr(item2);
+  end;
+  itemspec := aItem + '^' + aSpec;
+  for i := 0 to GtslTestSpec.Count - 1 do
+  if itemspec = Pieces(GtslTestSpec[i], '^', 1, 2) then
+  begin
+    specstring := GtslTestSpec[i];
+    low :=   Piece(specstring, '^', 3);
+    high :=  Piece(specstring, '^', 4);
+    units := Piece(specstring, '^', 8);
+    if (Copy(low, 1, 3) = '$S(') then low  := SelectRef(low);
+    if (Copy(high, 1, 3) = '$S(') then high := SelectRef(high);
+    break;
+  end;
+end;
+
+function TfrmGraphs.SelectRef(aRef: string): string;
+// check ref range for AGE and SEX variables in $S statement
+
+  procedure CheckRef(selection: string; var value: string; var ok: boolean);
+  var
+    age: integer;
+    part1, part2, part3: string;
+  begin
+    value := '';
+    ok := false;
+    if pos('$S', selection) > 0 then exit;
+    if pos(':', selection) = 0 then exit;
+    part1 := Piece(selection, ':', 1);
+    part2 := Piece(selection, ':', 2);
+    part3 := Piece(selection, ':', 3);
+    if length(part1) = 0 then exit;
+    if length(part2) = 0 then exit;
+    if length(part3) <> 0 then exit;
+    ok := true;
+    value := part2;
+    if part1 = '1' then exit;
+    if copy(part1, 1, 4) = 'SEX=' then
+    begin
+      if (part1 = 'SEX="M"') and (Patient.Sex = 'M') then exit;
+      if (part1 = 'SEX="F"') and (Patient.Sex = 'F') then exit; //?? check for '= '> '<    ??
+      value := '';
+    end
+    else if copy(part1, 1, 3) = 'AGE' then
+    begin
+      part3 := copy(part1, 5, length(part1));
+      age := strtointdef(part3, BIG_NUMBER);
+      if age <> BIG_NUMBER then
+      begin
+        part3 := copy(part1, 1, 4);
+        if (part3 = 'AGE>') and (Patient.Age > age) then exit;
+        if (part3 = 'AGE<') and (Patient.Age < age) then exit;
+        if (part3 = 'AGE=') and (Patient.Age = age) then exit;
+      end;
+      value := '';
+    end
+    else
+      value:= '';
+  end;
+
+var
+  ok: boolean;
+  i: integer;
+  selection, selections: string;
+begin
+  Result := '';
+  if copy(aRef, length(aRef), 1) = ')' then
+  begin
+    selections := copy(aRef, 4, length(aRef) - 4);
+    for i := 1 to BIG_NUMBER do
+    begin
+      selection := Piece(selections, ',', i);
+      if selection = '' then break;
+      ok := true;
+      CheckRef(selection, Result, ok);
+      if not ok then break;
+      if length(Result) > 0 then break;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.ResetSpec(aList: TStrings; aItemNum, aNewItemNum, aNewItemName, aNewString: string);
+var                                             //also add itemx
+  i: integer;
+  checkdate, newdate: double;
+  newestdate, newstring: string;
+begin
+  GtslTemp.Clear;
+  newdate := 0;
+  for i := 0 to aList.Count - 1 do
+  begin
+    newstring := aList[i];
+    newestdate := FMCorrectedDate(Piece(newstring, '^', 3));
+    checkdate := strtofloatdef(newestdate, -BIG_NUMBER);
+    if checkdate > newdate then newdate := checkdate;
+    SetPiece(newstring, '^', 2, aNewItemNum);
+    GtslTemp.Add(newstring);
+  end;
+  FastAddStrings(GtslTemp, GtslData);
+  newestdate := floattostr(newdate);
+  SetPiece(aNewString, '^', 2, aNewItemNum);
+  SetPiece(aNewString, '^', 4, aNewItemName);
+  SetPiece(aNewString, '^', 6, newestdate);
+  GtslItems.Add(aNewString);
+  GtslMultiSpec.Add(aNewString);
+end;
+
+procedure TfrmGraphs.chartBaseClickLegend(Sender: TCustomChart;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  seriestitle: string;
+begin
+  FGraphClick := Sender;
+  chartDatelineTop.Tag := -1;   // indicates a legend click
+  if Button <> mbRight then
+    ItemDateRange(Sender)
+  else
+  begin
+    mnuPopGraphIsolate.Enabled := true;
+    if pnlTop.Tag = 1 then
+    begin
+      if chkItemsTop.Checked then
+      begin
+        seriestitle := Sender.SeriesTitleLegend(0);
+        scrlTop.Hint := 'Details - for ' + seriestitle;
+        scrlTop.Tag := 1;
+        mnuPopGraphIsolate.Caption := 'Move - ' + seriestitle + ' - from Top to Bottom';
+        mnuPopGraphIsolate.Hint := seriestitle;
+        mnuPopGraphRemove.Enabled := true;
+        mnuPopGraphRemove.Caption := 'Remove - ' + seriestitle;
+        mnuPopGraphDetails.Caption := 'Details - ' + seriestitle;
+        mnuPopGraphValueMarks.Caption := 'Values - ';
+        mnuPopGraphValueMarks.Enabled := false;
+      end
+      else
+      begin
+        mnuPopGraphIsolate.Caption := 'Move all selections to bottom';
+        mnuPopGraphRemove.Caption := 'Remove all selections from top';
+      end;
+    end
+    else
+    begin
+      if chkItemsBottom.Checked then
+      begin
+        seriestitle := Sender.SeriesTitleLegend(0);
+        scrlTop.Hint := 'Details - for ' + seriestitle;
+        scrlTop.Tag := 1;
+        mnuPopGraphIsolate.Caption := 'Move - ' + seriestitle + ' - from Bottom to Top';
+        mnuPopGraphIsolate.Hint := seriestitle;
+        mnuPopGraphRemove.Enabled := true;
+        mnuPopGraphRemove.Caption := 'Remove - ' + seriestitle;
+        mnuPopGraphDetails.Caption := 'Details - ' + seriestitle;
+        mnuPopGraphValueMarks.Caption := 'Values - ';
+        mnuPopGraphValueMarks.Enabled := false;
+      end
+      else
+      begin
+        mnuPopGraphIsolate.Caption := 'Move all selections to top';
+        mnuPopGraphRemove.Caption := 'Remove all selections from bottom';
+      end;
+    end;
+  end;
+end;
+
+function TfrmGraphs.BPValue(aDateTime: TDateTime): string;
+var
+  i: integer;
+  fmdatetime: double;
+  datastring, datecheck, fmstring: string;
+begin
+  Result := '';
+  fmdatetime := datetimetofmdatetime(aDateTime);
+  fmstring := floattostr(fmdatetime);
+  for i := 0 to GtslData.Count - 1 do
+  begin
+    datastring := GtslData[i];
+    if Pieces(datastring, '^', 1, 2) = '120.5^1' then   //********** get item # for bp instead of 1
+    begin
+      datecheck := Piece(datastring, '^', 3);
+      if length(Piece(datecheck, '.', 2)) > 0 then
+        datecheck := Piece(datecheck, '.', 1) + '.' + copy(Piece(datecheck, '.', 2), 1, 4);
+      if fmstring = datecheck then
+      begin
+        Result := Piece(datastring, '^', 5);
+        break;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.mnuCustomClick(Sender: TObject);
+begin
+  mnuCustom.Checked := not mnuCustom.Checked;
+  tsTopCustom.TabVisible := mnuCustom.Checked;
+  tsBottomCustom.TabVisible := mnuCustom.Checked;
+end;
+
+procedure TfrmGraphs.mnuGraphDataClick(Sender: TObject);
+begin
+  frmGraphData.Show;
+end;
+
+procedure TfrmGraphs.mnuMHasNumeric1Click(Sender: TObject);
+begin
+  DialogGraphOthers(1);
+end;
+
+procedure TfrmGraphs.mnuPopGraphResetClick(Sender: TObject);
+begin
+  FFirstClick := true;
+  GtslZoomHistoryFloat.Clear;
+  FRetainZoom := false;
+  mnuPopGraphZoomBack.Enabled := false;
+  lvwItemsTopClick(self);
+end;
+
+procedure TfrmGraphs.serDatelineTopGetMarkText(Sender: TChartSeries;
+  ValueIndex: Integer; var MarkText: String);
+var
+  i: integer;
+  checktag, checkindex, checkseries, firstdatecheck, firsttext, nonstring: string;
+begin
+  firsttext := MarkText;
+  MarkText := Sender.Title;
+  if Copy(MarkText, 1, 4) = 'Ref ' then MarkText := ''
+  else if Piece(Sender.Title, '^', 1) = '(non-numeric)' then
+  begin
+    if Sender.Tag > 0 then
+    begin
+      checkseries := inttostr(Sender.Tag - BIG_NUMBER);
+      firstdatecheck := floattostr(sender.XValue[ValueIndex]);
+      checktag := inttostr(Sender.ParentChart.Tag);
+      checkindex := inttostr(ValueIndex + 1);
+      for i := 0 to GtslNonNum.Count - 1 do
+      begin
+        nonstring := GtslNonNum[i];
+        if checktag = '0' then
+        begin
+          if checkseries = Piece(nonstring, '^', 3) then
+            if Piece(nonstring, '^', 4) = checkindex then
+            begin
+              MarkText := Piece(nonstring, '^', 13);
+            end;
+        end
+        else if checktag = Piece(nonstring, '^', 2) then
+        begin
+          if checkseries = Piece(nonstring, '^', 3) then
+          if Piece(nonstring, '^', 4) = checkindex then
+          begin
+            MarkText := Piece(nonstring, '^', 13);
+            break;
+          end;
+        end;
+      end;
+    end;
+  end
+  else if Sender is TLineSeries then
+    MarkText := firsttext;   
+end;
+
+procedure TfrmGraphs.mnuPopGraphRemoveClick(Sender: TObject);
+var
+  selnum: integer;
+  aSection, typeitem: string;
+  aListBox: TORListBox;
+  aListView: TListView;
+begin
+  FFirstClick := true;
+  if pnlTop.Tag = 1 then
+  begin
+    aListBox := lstViewsTop;
+    aListView := lvwItemsTop;
+    aSection := 'top';
+  end
+  else
+  begin
+    aListBox := lstViewsBottom;
+    aListView := lvwItemsBottom;
+    aSection := 'bottom';
+  end;
+  aListBox.ItemIndex := -1;
+  if aListView.SelCount = 0 then exit;
+  if StripHotKey(mnuPopGraphRemove.Caption) = ('Remove all selections from ' + aSection) then
+    aListView.Selected := nil
+  else
+  begin
+    ItemCheck(aListView, mnuPopGraphIsolate.Hint, selnum, typeitem);
+    if selnum = -1 then exit;
+    aListView.Items[selnum].Selected := false;
+  end;
+  DisplayData('top');
+  DisplayData('bottom');
+  mnuPopGraphRemove.Enabled := false;
+  mnuPopGraphResetClick(self);
+end;
+
+procedure TfrmGraphs.mnuPopGraphTodayClick(Sender: TObject);
+begin
+  with dlgDate do
+  begin
+    FMDateTime := FMToday;
+    if Execute then FMToday := FMDateTime;
+  end;
+end;
+
+procedure TfrmGraphs.BaseResize(aScrollBox: TScrollBox);
+var
+  displayheight, displaynum, i: integer;
+begin
+  if Not Assigned(FGraphSetting) then Exit;
+  ChartOnZoom(chartDatelineTop);
+  with aScrollBox do
+  begin
+    if ControlCount < FGraphSetting.MaxGraphs then
+      displaynum := ControlCount
+    else
+      displaynum := FGraphSetting.MaxGraphs;
+    displayheight := FGraphSetting.MinGraphHeight;
+    if displaynum > 0 then
+      if (Height div displaynum) < FGraphSetting.MinGraphHeight then
+        displayheight := FGraphSetting.MinGraphHeight
+      else
+        displayheight := (Height div displaynum);
+    for i := 0 to aScrollBox.ControlCount - 1 do
+      Controls[i].height := displayheight;
+  end;
+end;
+
+procedure TfrmGraphs.pnlScrollTopBaseResize(Sender: TObject);
+begin
+  ChartOnZoom(chartDatelineTop);
+  BaseResize(scrlTop);
+  BaseResize(scrlBottom);
+end;
+
+procedure TfrmGraphs.NextPointerStyle(aSeries: TChartSeries; aSerCnt: integer);
+var
+  colors1, colors2, colors3, colors4, colors5, colors6: integer;
+begin
+  colors1 := NUM_COLORS + 1;
+  colors2 := NUM_COLORS * 2 + 1;
+  colors3 := NUM_COLORS * 3 + 1;
+  colors4 := NUM_COLORS * 4 + 1;
+  colors5 := NUM_COLORS * 5 + 1;
+  colors6 := NUM_COLORS * 6 + 1;
+  if aSeries is TLineSeries then
+  begin
+    with (aSeries as TLineSeries) do
+    if aSerCnt < colors1 then
+      Pointer.Style := psCircle
+    else if aSerCnt < colors2 then
+      Pointer.Style := psTriangle
+    else if aSerCnt < colors3 then
+      Pointer.Style := psRectangle
+    else if aSerCnt < colors4 then
+      Pointer.Style := psStar
+    else if aSerCnt < colors5 then
+      Pointer.Style := psDownTriangle
+    else if aSerCnt < colors6 then
+      Pointer.Style := psCross
+    else
+      Pointer.Style := psDiagCross;
+  end
+  else if aSeries is TBarSeries then
+  begin
+    with (aSeries as TBarSeries) do
+    if aSerCnt < colors1 then
+      BarStyle := bsPyramid
+    else if aSerCnt < colors2 then
+      BarStyle := bsInvPyramid
+    else if aSerCnt < colors3 then
+      BarStyle := bsArrow
+    else if aSerCnt < colors4 then
+      BarStyle := bsEllipse
+    else
+      BarStyle := bsRectangle;
+  end
+  else if aSeries is TPointSeries then
+  begin
+    with (aSeries as TPointSeries) do
+    if aSerCnt < colors1 then
+      Pointer.Style := psRectangle
+    else if aSerCnt < colors2 then
+      Pointer.Style := psTriangle
+    else if aSerCnt < colors3 then
+      Pointer.Style := psCircle
+    else if aSerCnt < colors4 then
+      Pointer.Style := psStar
+    else if aSerCnt < colors5 then
+      Pointer.Style := psDownTriangle
+    else if aSerCnt < colors6 then
+      Pointer.Style := psCross
+    else
+      Pointer.Style := psDiagCross;
+  end;
+end;
+
+function TfrmGraphs.FMCorrectedDate(fmtime: string): string;
+begin
+  if Copy(fmtime, 4, 4) = '0000' then Result := Copy(fmtime, 1, 3) + '0101'
+  else if Copy(fmtime, 6, 2) = '00' then Result := Copy(fmtime, 1, 5) + '01'
+  else Result := fmtime;
+end;
+
+procedure TfrmGraphs.FixedDates(var adatetime, adatetime1: TDateTime);
+begin
+  if FGraphSetting.FMStartDate <> FM_START_DATE then
+  begin  // do not use when All Results
+    adatetime := FMDateTimeToDateTime(FGraphSetting.FMStopDate);
+    adatetime1 := FMDateTimeToDateTime(FGraphSetting.FMStartDate);
+    FGraphSetting.HighTime := adatetime;
+    FGraphSetting.LowTime := adatetime1;
+    FTHighTime := adatetime;
+    FTLowTime := adatetime1;
+    FBHighTime := adatetime;
+    FBLowTime := adatetime1;
+  end;
+end;
+
+procedure TfrmGraphs.HighLow(fmtime, fmtime1: string; aChart: TChart; var adatetime, adatetime1: TDateTime);
+begin
+  adatetime1 := 0;
+  adatetime := FMToDateTime(fmtime);
+  if adatetime > FGraphSetting.HighTime then FGraphSetting.HighTime := adatetime;
+  if adatetime < FGraphSetting.LowTime then FGraphSetting.LowTime := adatetime;
+  if aChart = chartDatelineTop then
+  begin
+    if adatetime > FTHighTime then FTHighTime := adatetime;
+    if adatetime < FTLowTime then FTLowTime := adatetime;
+  end
+  else
+  begin
+    if adatetime > FBHighTime then FBHighTime := adatetime;
+    if adatetime < FBLowTime then FBLowTime := adatetime;
+  end;
+  if fmtime1 <> '' then
+  begin
+    adatetime1 := FMToDateTime(fmtime1);
+    if adatetime1 > FGraphSetting.HighTime then FGraphSetting.HighTime := adatetime1;
+    if adatetime1 < FGraphSetting.LowTime then FGraphSetting.LowTime := adatetime1;
+    if aChart = chartDatelineTop then
+    begin
+      if adatetime1 > FTHighTime then FTHighTime := adatetime1;
+      if adatetime1 < FTLowTime then FTLowTime := adatetime1;
+    end
+    else
+    begin
+      if adatetime1 > FBHighTime then FBHighTime := adatetime1;
+      if adatetime1 < FBLowTime then FBLowTime := adatetime1;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.HideGraphs(action: boolean);
+begin
+  pnlTop.Color := chartDatelineTop.Color;
+  pnlBottom.Color := chartDatelineTop.Color;
+  if action then
+  begin
+    pnlScrollTopBase.Visible := false;
+    pnlScrollBottomBase.Visible := false;
+  end
+  else
+  begin
+    pnlScrollTopBase.Visible := true;
+    pnlScrollBottomBase.Visible := true;
+    chartDatelineTop.Refresh;
+  end;
+end;
+
+procedure TfrmGraphs.BorderValue(var bordervalue: double; value: double);
+begin
+  if FGraphSetting.FixedDateRange then
+    if bordervalue = -BIG_NUMBER then
+      bordervalue := value;
+end;
+
+procedure TfrmGraphs.BPAdd(itemvalue: string; adatetime: TDateTime; var fixeddatevalue: double; serLine, serBPDiastolic, serBPMean: TLineSeries);
+var
+  value: double;
+  valueD, valueM, valueS: string;
+begin
+  valueS := Piece(itemvalue, '/', 1);
+  valueD := Piece(itemvalue, '/', 2);
+  valueM := Piece(itemvalue, '/', 3);
+  value := strtofloatdef(valueS, -BIG_NUMBER);
+  if value <> -BIG_NUMBER then
+    serLine.AddXY(adatetime, value, '', clTeeColor);
+  value := strtofloatdef(valueD, -BIG_NUMBER);
+  if value <> -BIG_NUMBER then
+    serBPDiastolic.AddXY(adatetime, value, '', clTeeColor);
+  value := strtofloatdef(valueM, -BIG_NUMBER);
+  if value <> -BIG_NUMBER then
+  begin
+    serBPMean.AddXY(adatetime, value, '', clTeeColor);
+    serBPMean.Active := true;
+  end;
+  BorderValue(fixeddatevalue, 100);
+end;
+
+procedure TfrmGraphs.BPCheck(aChart: TChart; aFileType: string; serLine, serBPDiastolic, serBPMean: TLineSeries);
+begin
+  MakeSeriesBP(aChart, serLine, serBPDiastolic, aFileType);
+  MakeSeriesBP(aChart, serLine, serBPMean, aFileType);
+  serBPDiastolic.Active := true;
+  serBPMean.Active := false;
+end;
+
+procedure TfrmGraphs.PainAdd(serBlank: TPointSeries);
+begin
+  begin
+    serBlank.Active := true;
+    serBlank.Pointer.Pen.Visible := false;
+    serBlank.AddXY(IncDay(FGraphSetting.LowTime, -1), 0, '', pnlScrollTopBase.Color);
+    serBlank.AddXY(IncDay(FGraphSetting.LowTime, -1), 10, '', pnlScrollTopBase.Color);
+  end;
+end;
+
+procedure TfrmGraphs.NumAdd(serLine: TLineSeries; value: double; adatetime: TDateTime;
+  var fixeddatevalue, hi, lo: double; var high, low: string);
+begin
+  if (btnChangeSettings.Tag = 1) and (hi <> -BIG_NUMBER) and (lo <> -BIG_NUMBER) then
+  begin      // standard deviation
+    value := StdDev(value, hi, lo);
+    serLine.AddXY(adatetime, value, '', clTeeColor);
+    high := '2'; low := '-2';
+    BorderValue(fixeddatevalue, 0);
+    //splGraphs.Tag := 1;   // show ref range
+  end        // inverse value
+  else if btnChangeSettings.Tag = 2 then
+  begin
+    value := InvVal(value);
+    serLine.AddXY(adatetime, value, '', clTeeColor);
+    high := '2'; low := '0';
+    BorderValue(fixeddatevalue, 0);
+    splGraphs.Tag := 0;  // do not show ref range
+  end
+  else
+  begin       // numeric value
+    serLine.AddXY(adatetime, value, '', clTeeColor);
+    BorderValue(fixeddatevalue, value);
+  end;
+end;
+
+procedure TfrmGraphs.NonNumSave(aChart: TChart; aTitle, aSection: string; adatetime: TDateTime;
+  var noncnt: integer; newcnt, aIndex: integer);
+var
+  astring: string;
+begin
+  noncnt := noncnt + 1;
+  astring := floattostr(adatetime) + '^' + inttostr(aChart.Tag) + '^'
+           + inttostr(newcnt) + '^' + inttostr(noncnt) + '^^' + aTitle + '^'
+           + aSection + '^^' + GtslTemp[aIndex];
+  GtslNonNum.Add(astring);
+end;
+
+//****************************************************************************
+
+procedure TfrmGraphs.MakeLineSeries(aChart: TChart; aTitle, aFileType, section: string;
+  var aSerCnt, aNonCnt: integer; multiline: boolean);
+var
+  i, noncnt, newcnt: integer;
+  value, fixeddatevalue, hi, lo: double;
+  checkdata, fmtime, itemvalue: string;
+  high, low, specimen, comments: string;
+  adatetime, adatetime1: TDateTime;
+  afixeddate, afixeddate1: TDateTime;
+  serLine, serBPDiastolic, serBPMean, serLow, serHigh: TLineSeries;
+  serBlank: TPointSeries;
+begin
+  fixeddatevalue := -BIG_NUMBER;
+  noncnt := 0; //GtslNonNum.Count;
+  aChart.LeftAxis.LabelsFont.Color := aChart.BottomAxis.LabelsFont.Color;
+  aSerCnt := aSerCnt + 1;
+  specimen := LowerCase(Piece(aTitle, '^', 4));
+  low := Piece(aTitle, '^', 5);
+  high := Piece(aTitle, '^', 6);
+  lo := strtofloatdef(low, -BIG_NUMBER);
+  hi := strtofloatdef(high, -BIG_NUMBER);
+  serLine := TLineSeries.Create(aChart);
+  newcnt := aChart.SeriesCount;
+  serBPDiastolic := TLineSeries.Create(aChart);
+  serBPMean := TLineSeries.Create(aChart);
+  serLow := TLineSeries.Create(aChart);
+  serLow.Active := false;
+  serHigh := TLineSeries.Create(aChart);
+  serHigh.Active := false;
+  serBlank := TPointSeries.Create(aChart);
+  serBlank.Active := false;
+  with serLine do
+  begin
+    MakeSeriesInfo(aChart, serLine, aTitle, aFileType, aSerCnt);
+    LinePen.Visible := FGraphSetting.Lines;
+    if (length(specimen) > 0) and (not ansicontainsstr(Title, specimen)) then
+      Title := Title + ' (' + specimen + ')';
+    Pointer.Visible := true;
+    Pointer.InflateMargins := true;
+    NextPointerStyle(serLine, aSerCnt);
+    Tag := newcnt;
+  end;
+  if serLine.Title = 'Blood Pressure' then
+    BPCheck(aChart, aFileType, serLine, serBPDiastolic, serBPMean);
+  for i:= 0 to GtslTemp.Count - 1 do
+  begin
+    checkdata := GtslTemp[i];
+    fmtime := FMCorrectedDate(Piece(checkdata, '^', 3));
+    if IsFMDateTime(fmtime) then
+    begin
+      HighLow(fmtime, '', aChart, adatetime, adatetime1);
+      comments := Piece(checkdata, '^', 9);
+      if strtointdef(comments, -1) > 0  then aChart.Hint := comments;  // for any occurrence
+      itemvalue := Piece(checkdata, '^', 5);
+      itemvalue := trim(itemvalue);
+      itemvalue := StringReplace(itemvalue, ',', '', [rfReplaceAll]);
+      if serLine.Title = 'Blood Pressure' then
+        BPAdd(itemvalue, adatetime, fixeddatevalue, serLine, serBPDiastolic, serBPMean)
+      else
+      begin
+        value := strtofloatdef(itemvalue, -BIG_NUMBER);
+        if value <> -BIG_NUMBER then
+          NumAdd(serLine, value, adatetime, fixeddatevalue, hi, lo, high, low)
+        else
+          NonNumSave(aChart, serLine.Title, section, adatetime, noncnt, newcnt, i);
+      end;
+    end;
+  end;
+  if (length(low) > 0) and (splGraphs.Tag = 1) then
+    MakeSeriesRef(aChart, serLine, serLow, 'Ref Low ', low, fixeddatevalue);
+  if (length(high) > 0) and (splGraphs.Tag = 1) then
+    MakeSeriesRef(aChart, serLine, serHigh, 'Ref High ', high, fixeddatevalue);
+  splGraphs.Tag := 0;
+  MakeSeriesPoint(aChart, serBlank);
+  if serLine.Title = 'Pain' then
+    PainAdd(serBlank);
+  if multiline then
+  begin
+    // do nothing for now
+  end;
+  if fixeddatevalue <> -BIG_NUMBER then
+  begin
+    serBlank.Active := true;
+    serBlank.Pointer.Pen.Visible := false;
+    FixedDates(afixeddate, afixeddate1);
+    serBlank.AddXY(afixeddate, fixeddatevalue, '', aChart.Color);
+    serBlank.AddXY(afixeddate1, fixeddatevalue, '', aChart.Color);
+  end;
+end;
+
+procedure TfrmGraphs.MakePointSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+var
+  i: integer;
+  value: double;
+  fmtime: string;
+  adatetime, adatetime1: TDateTime;
+  serPoint: TPointSeries;
+begin
+  aSerCnt := aSerCnt + 1;
+  serPoint := TPointSeries.Create(aChart);
+  MakeSeriesInfo(aChart, serPoint, aTitle, aFileType, aSerCnt);
+  with serPoint do
+  begin
+    NextPointerStyle(serPoint, aSerCnt);
+    Pointer.Visible := true;
+    Pointer.InflateMargins := true;
+    Pointer.Style := psSmallDot;
+    Pointer.Pen.Visible := true;
+    Pointer.VertSize := 10;
+    Pointer.HorizSize := 2;
+    for i := 0 to GtslTemp.Count - 1 do
+    begin
+      fmtime := FMCorrectedDate(Piece(GtslTemp[i], '^', 3));
+      if IsFMDateTime(fmtime) then
+      begin
+        HighLow(fmtime, '', aChart, adatetime, adatetime1);
+        value := strtofloatdef(Piece(GtslTemp[i], '^', 5), -BIG_NUMBER);
+        if value = -BIG_NUMBER then
+        begin
+          value := aSerCnt;
+          TempCheck(Pieces(GtslTemp[i], '^', 1, 2), value);
+        end;
+        serPoint.AddXY(adatetime, value, '', clTeeColor);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.MakeBarSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+var
+  i: integer;
+  value: double;
+  fmtime: string;
+  adatetime, adatetime1: TDateTime;
+  afixeddate, afixeddate1: TDateTime;
+  serBar: TBarSeries;
+  serBlank: TPointSeries;
+begin
+  aSerCnt := aSerCnt + 1;
+  serBlank := TPointSeries.Create(aChart);
+  MakeSeriesPoint(aChart, serBlank);
+  serBar := TBarSeries.Create(aChart);
+  MakeSeriesInfo(aChart, serBar, aTitle, aFileType, aSerCnt);
+  with serBar do
+  begin
+    YOrigin := 0;
+    CustomBarWidth := 7;
+    NextPointerStyle(serBar, aSerCnt);
+    for i:= 0 to GtslTemp.Count - 1 do
+    begin
+      fmtime := FMCorrectedDate(Piece(GtslTemp[i], '^', 3));
+      if IsFMDateTime(fmtime) then
+      begin
+        HighLow(fmtime, '', aChart, adatetime, adatetime1);
+        value := 25 - (aSerCnt mod NUM_COLORS);
+        if FPrevEvent = copy(fmtime, 1, 10) then
+          if copy((FPrevEvent + '00'), 1, 12) = copy(fmtime, 1, 12) then  // same time occurrence
+          begin
+            InfoMessage(TXT_WARNING_SAME_TIME, COLOR_WARNING, true);
+            pnlHeader.Visible := true;
+            FWarning := true;
+          end;
+        if value <> -BIG_NUMBER then
+          serBar.AddXY(adatetime, value, '', clTeeColor);
+        FPrevEvent := copy(fmtime, 1, 10);
+        if i = 0 then
+        begin
+          serBlank.Pointer.Pen.Visible := false;
+          serBlank.AddXY(adatetime, 100, '', aChart.Color);
+          if FGraphSetting.FixedDateRange then
+          begin
+            FixedDates(afixeddate, afixeddate1);
+            serBlank.AddXY(afixeddate, 100, '', aChart.Color);
+            serBlank.AddXY(afixeddate1, 100, '', aChart.Color);
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.MakeGanttSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+var
+  i, value: integer;
+  fmtime, fmtime1: string;
+  adatetime, adatetime1: TDateTime;
+  afixeddate, afixeddate1: TDateTime;
+  serGantt: TGanttSeries;
+  serBlank: TPointSeries;
+begin
+  aSerCnt := aSerCnt + 1;
+  serBlank := TPointSeries.Create(aChart);
+  MakeSeriesPoint(aChart, serBlank);
+  serGantt := TGanttSeries.Create(aChart);
+  MakeSeriesInfo(aChart, serGantt, aTitle, aFileType, aSerCnt);
+  with serGantt do
+  begin
+    if Piece(aTitle, '^', 1) = '55' then       // make inpatient meds smaller to identify
+      Pointer.VertSize := RX_HEIGHT_IN
+    else if Piece(aTitle, '^', 1) = '55NVA' then       // make nonva meds smaller to identify
+      Pointer.VertSize := RX_HEIGHT_NVA
+    else if Piece(aTitle, '^', 1) = '9999911' then       // make problems smaller to identify
+      Pointer.VertSize := PROB_HEIGHT
+    else
+      Pointer.VertSize := RX_HEIGHT_OUT;
+    value := round(((aSerCnt mod NUM_COLORS) / NUM_COLORS) * 80) + 20 + aSerCnt;
+    if aFileType <> '9999911' then
+      if aChart <> chartDatelineTop then
+        if aChart <> chartDatelineBottom then
+          value := value - 26;
+    for i := 0 to GtslTemp.Count - 1 do
+    begin
+      fmtime := FMCorrectedDate(Piece(GtslTemp[i], '^', 3));
+      fmtime1 := FMCorrectedDate(Piece(GtslTemp[i], '^', 4));
+      if IsFMDateTime(fmtime) and IsFMDateTime(fmtime1) then
+      begin
+        HighLow(fmtime, fmtime1, aChart, adatetime, adatetime1);
+        AddGantt(adatetime, adatetime1, value, '');
+        if i = 0 then
+        begin
+          serBlank.Pointer.Pen.Visible := false;
+          serBlank.AddXY(adatetime, 100, '', aChart.Color);
+          if aFileType = '9999911' then
+            serBlank.AddXY(adatetime, 0, '', aChart.Color);
+          if FGraphSetting.FixedDateRange then
+          begin
+            FixedDates(afixeddate, afixeddate1);
+            serBlank.AddXY(afixeddate, 100, '', aChart.Color);
+            serBlank.AddXY(afixeddate1, 100, '', aChart.Color);
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.MakeVisitGanttSeries(aChart: TChart; aTitle, aFileType: string; var aSerCnt: integer);
+var
+  i: integer;
+  value: double;
+  fmtime, fmtime1: string;
+  adatetime, adatetime1: TDateTime;
+  afixeddate, afixeddate1: TDateTime;
+  serGantt: TGanttSeries;
+  serBlank: TPointSeries;
+begin
+  aSerCnt := aSerCnt + 1;
+  serBlank := TPointSeries.Create(aChart);
+  MakeSeriesPoint(aChart, serBlank);
+  serGantt := TGanttSeries.Create(aChart);
+  MakeSeriesInfo(aChart, serGantt, aTitle, aFileType, aSerCnt);
+  with serGantt do
+  begin
+    if Piece(aTitle, '^', 1) = '405' then  // make admit smaller to identify
+      Pointer.VertSize := NUM_COLORS + 3
+    else if Piece(aTitle, '^', 1) = '9999911' then  // make problems smaller to identify
+      Pointer.VertSize := PROB_HEIGHT
+    else
+      Pointer.VertSize := NUM_COLORS + (aSerCnt mod NUM_COLORS) + 10;
+    value := aSerCnt div NUM_COLORS;
+    for i:= 0 to GtslTemp.Count - 1 do
+    begin
+      fmtime := FMCorrectedDate(Piece(GtslTemp[i], '^', 3));
+      fmtime1 := FMCorrectedDate(Piece(GtslTemp[i], '^', 4));
+      if IsFMDateTime(fmtime) and IsFMDateTime(fmtime1) then
+      begin
+        HighLow(fmtime, fmtime1, aChart, adatetime, adatetime1);
+        AddGantt(adatetime, adatetime1, value, '');
+        if i = 0 then
+        begin
+          serBlank.Pointer.Pen.Visible := false;
+          serBlank.AddXY(adatetime, 100, '', aChart.Color);
+          if FGraphSetting.FixedDateRange then
+          begin
+            FixedDates(afixeddate, afixeddate1);
+            serBlank.AddXY(afixeddate, 100, '', aChart.Color);
+            serBlank.AddXY(afixeddate1, 100, '', aChart.Color);
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.splGraphsMoved(Sender: TObject);
+begin
+  if Sender = splGraphs then
+    chkDualViews.Checked := pnlBottom.Height > 3;
+end;
+
+function TfrmGraphs.NonNumText(listnum , seriesnum, valueindex: integer): string;
+var
+  ok: boolean;
+  i: integer;
+  nonvalue, date1, resultdate, otherdate: string;
+  datestart: double;
+  charttag, filename, typeitemname, filenum, itemnum, specimen, seriescheck, value: string;
+begin
+  ok := false;
+  seriescheck := inttostr(seriesnum - BIG_NUMBER);
+  charttag := inttostr(listnum);
+  for i := 0 to GtslNonNum.Count - 1 do
+  begin
+    nonvalue := GtslNonNum[i];
+    if Piece(nonvalue, '^', 2) = charttag then
+      if Piece(nonvalue, '^', 3) = seriescheck then
+        if Piece(nonvalue, '^', 4) = inttostr(valueindex + 1) then
+      begin
+        ok := true;
+        break;
+      end;
+  end;
+  if not ok then
+  begin
+    Result := '';
+    exit;
+  end;
+  date1    := Piece(nonvalue, '^', 1);
+  filenum  := Piece(nonvalue, '^', 9);
+  itemnum  := Piece(nonvalue, '^', 10);
+  value    := Piece(nonvalue, '^', 13);
+  specimen := Piece(nonvalue, '^', 16);
+  filename := FileNameX(filenum);
+  typeitemname := MixedCase(ItemName(filenum, itemnum));
+  if length(specimen) > 0 then
+    typeitemname := typeitemname + ' (' + LowerCase(specimen) + ')';
+  datestart := strtofloat(date1);
+  resultdate := FormatDateTime('mmm d, yyyy  h:nn am/pm', datestart);
+  otherdate := FormatDateTime('mm/dd/yy hh:nn', datestart);
+  Result := filenum + '^' +filename + '^' + resultdate + '^'
+          + typeitemname + '^' + value + '^' + otherdate;
+end;
+
+function TfrmGraphs.ValueText(Sender: TCustomChart; aSeries: TChartSeries; ValueIndex: Integer): string;
+var      // type#^typename^formatdate^itemname^result^date
+  OKToUse: boolean;
+  i, SeriesNum, selnum, chartnum: integer;
+  filetype, otherdate: string;
+  resultdate, resultstring, seriestitle, typeitem, typename, typenum: string;
+begin
+  Result := '';
+  SeriesNum := -1;
+  for i := 0 to Sender.SeriesCount - 1 do
+    if Sender.Series[i] = aSeries then
+    begin
+      SeriesNum := i;
+      filetype := Sender.Series[i].Identifier;
+      break;
+    end;
+  if SeriesNum = -1 then
+  begin
+    Result := '';
+    exit;
+  end;
+  chartnum := Sender.Tag;
+  seriestitle := Piece(Sender.Series[SeriesNum].Title, '^', 1);
+  if seriestitle = '(non-numeric)' then
+  begin
+    Result := NonNumText(chartnum, (aSeries as TChartSeries).Tag, ValueIndex);
+    exit;
+  end;
+  ItemCheck(lvwItemsTop, seriestitle, selnum, typeitem);
+  typeitem := UpperCase(typeitem);
+  if selnum < 0 then
+  begin
+    Result := '^^^' + seriestitle;
+    exit;
+  end;
+  typenum := Piece(typeitem, '^', 1);
+  if (typenum <> filetype) and (filetype <> '') then
+  begin
+    typenum := filetype;
+    typeitem := typenum + '^' + Piece(typeitem, '^', 2);
+  end;
+  CheckMedNum(typenum, aSeries);
+  typename := FileNameX(typenum);
+  if ValueIndex < 0 then
+  begin
+    Result := typenum + '^' + typename + '^^' + seriestitle;
+    exit;
+  end;
+  if Copy(typename, length(typename) - 2, 3) = 'ies' then
+    typename := Copy(typename, 1, length(typename) - 3) + 'y'
+  else if Copy(typename, length(typename), 1) = 's' then
+    typename := Copy(typename, 1, length(typename) - 1);
+  ValueDates(aSeries, ValueIndex, resultdate, otherdate);
+  ResultValue(resultstring, seriestitle, typenum, typeitem, Sender, aSeries, ValueIndex, SeriesNum, OKToUse);
+  if not OKToUse then
+    Result := ''
+  else
+    Result := typenum + '  ^' + typename + '^' + resultdate + '^' +
+      seriestitle + '^' + resultstring + '^' + otherdate;
+end;
+
+procedure TfrmGraphs.ValueDates(aSeries: TChartSeries; ValueIndex: Integer; var resultdate, otherdate: string);
+var
+  dateend, datestart: double;
+begin
+  if (aSeries is TGanttSeries) then
+  begin
+    datestart := (aSeries as TGanttSeries).StartValues[ValueIndex];
+    dateend := (aSeries as TGanttSeries).EndValues[ValueIndex];
+  end
+  else
+  begin
+    datestart := aSeries.XValue[ValueIndex];
+    dateend := datestart;
+  end;
+  if datestart <> dateend then
+  begin
+    resultdate := FormatDateTime('mmm d, yyyy  h:nn am/pm', datestart) +
+      ' - ' + FormatDateTime('mmm d, yyyy  h:nn am/pm', dateend);
+    otherdate := FormatDateTime('mm/dd/yy hh:nn', datestart) +
+      ' - ' + FormatDateTime('mm/dd/yy hh:nn', dateend);
+  end
+  else
+  begin
+    resultdate := FormatDateTime('mmm d, yyyy  h:nn am/pm', datestart);
+    otherdate := FormatDateTime('mm/dd/yy hh:nn', datestart);
+  end;
+end;
+
+procedure TfrmGraphs.CheckMedNum(var typenum: string; aSeries: TChartSeries);
+begin
+  if typenum = '55' then
+  begin
+    if aSeries is TGanttSeries then
+    if (aSeries as TGanttSeries).Pointer.VertSize <> RX_HEIGHT_IN then
+    if (aSeries as TGanttSeries).Pointer.VertSize <> RX_HEIGHT_NVA then
+      typenum := '52'
+    else typenum := '55NVA';
+  end
+  else if typenum = '55NVA' then
+  begin
+    if aSeries is TGanttSeries then
+    if (aSeries as TGanttSeries).Pointer.VertSize <> RX_HEIGHT_NVA then
+    if (aSeries as TGanttSeries).Pointer.VertSize <> RX_HEIGHT_OUT then
+      typenum := '55'
+    else typenum := '52';
+  end
+  else if typenum = '52' then
+  begin
+    if aSeries is TGanttSeries then
+    if (aSeries as TGanttSeries).Pointer.VertSize <> RX_HEIGHT_OUT then
+    if (aSeries as TGanttSeries).Pointer.VertSize <> RX_HEIGHT_NVA then
+      typenum := '55'
+    else typenum := '55NVA';
+  end;
+end;
+
+procedure TfrmGraphs.ResultValue(var resultstring, seriestitle: string; typenum, typeitem: string;
+  Sender: TCustomChart; aSeries: TChartSeries; ValueIndex, SeriesNum: Integer; var OKToUse: boolean);
+var
+  i: integer;
+  item, partitem, fmdatecheck, astring, datecheck: string;
+begin
+  resultstring := '';
+  OKToUse := true;
+  if typenum = '63' then
+  begin
+    if aSeries is TLineSeries then
+      if (aSeries as TLineSeries).LinePen.Style = psDash then
+      begin
+        OKToUse := false;
+        exit;    // serHigh or serLow
+      end;
+    if aSeries is TPointSeries then
+      if (aSeries as TPointSeries).Pointer.Style = psSmallDot then
+      begin
+        OKToUse := false;
+        exit;    // serBlank
+      end;
+    if copy(seriestitle, length(seriestitle) - 12, length(seriestitle)) = '(non-numeric)' then
+    begin
+      seriestitle := copy(seriestitle, 1, length(seriestitle) - 13);
+      serDatelineTopGetMarkText(Sender.Series[SeriesNum], ValueIndex, resultstring);
+    end
+    else
+      resultstring := floattostr(aSeries.YValue[ValueIndex]);
+  end
+  else if typenum <> '120.5' then
+  begin
+    item := Piece(typeitem, '^', 2);
+    partitem := copy(item, 1, 4);
+    //if (partitem = 'M;A;') then     //or (partitem = 'M;T;') then   tb antibiotic on 1st piece
+    begin
+      fmdatecheck := floattostr(DateTimeToFMDateTime(aSeries.XValue[ValueIndex]));
+      for i := 0 to GtslData.Count - 1 do
+      begin
+        astring := GtslData[i];
+        if item = Piece(astring, '^', 2) then
+        begin
+          datecheck := Piece(astring, '^', 3);
+          if length(Piece(datecheck, '.', 2)) > 0 then
+            datecheck := Piece(datecheck, '.', 1) + '.' + copy(Piece(datecheck, '.', 2), 1, 4);
+          if datecheck = fmdatecheck then
+          begin
+            resultstring := MixedCase(Pieces(astring, '^', 5, 6)) + '^' + Piece(astring, '^', 7);
+            break;
+          end;
+        end;
+      end;
+    end;
+  end
+  else if typenum = '120.5' then
+  begin
+    if seriestitle = 'Blood Pressure' then
+      resultstring := BPValue(aSeries.XValue[ValueIndex])
+    else
+      resultstring := floattostr(aSeries.YValue[ValueIndex]);
+  end;
+end;
+
+procedure TfrmGraphs.chartBaseMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+var
+  ClickedLegend, ClickedMark, ClickedValue, j: Integer;
+  itemname: string;
+  NewPt: TPoint;
+begin
+  //if not FGraphSetting.Hints then exit;       //*****
+  FX := x;
+  FY := y;
+  FActiveGraph := (Sender as TChart);
+  NewPt := Mouse.CursorPos;
+  ClickedLegend := -1;
+  ClickedMark   := -1;
+  ClickedValue  := -1;
+  if FHintWinActive then exit;
+  with FActiveGraph do
+  begin
+    for j := 0 to SeriesCount - 1 do
+    with (Series[j] as TChartSeries) do
+    begin
+      itemname := Series[j].Title;
+      if (Copy(itemname, 1, 7) <> 'Ref Low') and (Copy(itemname, 1, 8) <> 'Ref High') then
+      begin
+        ClickedValue := Clicked(FX, FY);
+        if ClickedValue > -1 then break;
+        ClickedMark := Marks.Clicked(FX, FY);
+        if ClickedMark > -1 then break;
+        ClickedLegend := Legend.Clicked(FX, FY);
+        if ClickedLegend > -1 then break;
+      end;
+    end;
+    if (ClickedValue > -1) or (ClickedMark > -1) then
+    begin
+      FHintStop := false;
+      Screen.Cursor := crHandPoint;
+      timHintPause.Enabled := true;
+    end
+    else if ClickedLegend > -1 then
+    begin
+      timHintPause.Enabled := false;
+      InactivateHint;
+      Screen.Cursor := crHandPoint;
+    end
+    else
+    begin
+      timHintPause.Enabled := false;
+      InactivateHint;
+      Screen.Cursor := crDefault;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.chartBaseMouseUp(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  (Sender as TChart).AllowZoom := FGraphSetting.HorizontalZoom;      // avoids cursor rectangle from appearing
+end;
+
+procedure TfrmGraphs.FormatHint(var astring: string);
+var
+  i, j: integer;
+  titlename, dttm, itemname, info, slice, text, value, newinfo, hintslice, hintformat: string;
+begin
+  // hint format: slice|slice|slice| ...
+  // where | is linebreak and slice is [text] value~[text] value~[text] value~ ...
+  hintformat := Piece(TypeString(Piece(Piece(astring, '^', 1), ' ', 1)), '^', 9);
+  titlename := Piece(astring, '^', 2);
+  dttm := Piece(astring, '^', 3);
+  if copy(astring, length(astring) - 5, length(astring)) = ' 00:00' then
+    dttm := Pieces(dttm, ' ', 1, 3);
+  itemname := Piece(astring, '^', 4);
+  info := itemname + '~' + Piece(astring, '^', 5) + '~';
+  newinfo := '';
+  for i := 1 to BIG_NUMBER do
+  begin
+    hintslice := Piece(hintformat, '|', i);
+    slice := Piece(info, '|', i);
+    for j := 1 to BIG_NUMBER do
+    begin
+      text := Piece(hintslice, '~', j);
+      value := Piece(info, '~', j);
+      newinfo := newinfo + text + ' ' + value;
+      //if Piece(hintslice, '~', j + 1) = '' then
+      //  break;                                                   .
+
+      if Pos('~', hintslice) = length(hintslice) then
+        break;
+      if Piece(slice, '~', j + 1) = '' then
+        break;
+    end;
+    if Piece(hintslice, '|', i + 1) = '' then
+      break;
+    if length(Piece(hintformat, '|', i + 1)) > 0 then
+      newinfo := newinfo + #13;
+    if Piece(hintformat, '|', i + 1) = '' then
+      break;
+  end;
+  astring := titlename + '  ' + dttm + #13 + newinfo; //itemname + '  ' + newinfo;
+end;
+
+procedure TfrmGraphs.timHintPauseTimer(Sender: TObject);
+
+  function TitleOK(aTitle: string): boolean;
+  begin
+    Result := false;
+    if Copy(aTitle, 1, 7)= 'Ref Low' then exit
+    else if Copy(aTitle, 1, 8)= 'Ref High' then exit
+    else if aTitle = TXT_COMMENTS then exit
+    else if aTitle = TXT_NONNUMERICS then exit;
+    Result := true;
+  end;
+
+var
+  ClickedValue, j: Integer;
+  textvalue: string;
+  Rct: TRect;
+begin
+  with FActiveGraph do
+  begin
+    ClickedValue := -1;
+    for j := 0 to SeriesCount - 1 do
+    with (Series[j] as TChartSeries) do
+    begin
+      if FHintStop then break;
+      ClickedValue := Clicked(FX, FY);
+      if ClickedValue = -1 then ClickedValue := Marks.Clicked(FX, FY);
+      if ClickedValue > -1 then break;
+    end;
+    if FHintStop then          // stop when clicked
+    begin
+      timHintPause.Enabled := false;
+      InactivateHint;
+      FHintStop := false;
+      exit;
+    end;
+    if (ClickedValue > -1) and ((FOnValue <> ClickedValue) or (FOnSeries <> j)) then
+    begin     // on a value but not the same value or series
+      if FHintWinActive then
+        InactivateHint;
+      if not TitleOK(Series[j].Title) then
+        exit;
+      FOnSeries := j;
+      FOnValue := ClickedValue;
+      textvalue := ValueText(FActiveGraph, Series[j], ClickedValue);
+      FormatHint(textvalue);
+      Rct := FHintWin.CalcHintRect(Screen.Width, textvalue, nil);
+      OffsetRect(Rct, FX, FY + 20);
+      Rct.Right := Rct.Right + 3;
+      Rct.TopLeft := ClientToScreen(Rct.TopLeft);
+      Rct.BottomRight := ClientToScreen(Rct.BottomRight);
+      FHintWin.ActivateHint(Rct, textvalue);
+      FHintWinActive := true;
+    end
+    else if (ClickedValue = -1) and ((FOnValue <> BIG_NUMBER) and (FOnSeries <> BIG_NUMBER)) then
+    begin  // not on a value anymore (used to be on a value and series)
+      FOnSeries := BIG_NUMBER;
+      FOnValue := BIG_NUMBER;
+      timHintPause.Enabled := false;
+      InactivateHint;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.InactivateHint;
+begin
+    FHintWin.ReleaseHandle;
+    FHintWinActive := false;
+end;
+
+procedure TfrmGraphs.mnuPopGraphStayOnTopClick(Sender: TObject);
+begin
+  mnuPopGraphStayOnTop.Checked := not mnuPopGraphStayOnTop.Checked;
+  if mnuPopGraphStayOnTop.Checked then
+  begin
+    MarkFormAsStayOnTop(Self, true);
+    FGraphSetting.StayOnTop := true;
+  end
+  else
+  begin
+    MarkFormAsStayOnTop(Self, false);
+    FGraphSetting.StayOnTop := false;
+  end;
+end;
+
+procedure TfrmGraphs.StayOnTop;
+begin
+  with pnlMain.Parent do
+  if BorderWidth <> 1 then
+  begin
+     mnuPopGraphStayOnTop.Enabled :=false;
+     mnuPopGraphStayOnTop.Checked := false;
+  end
+  else
+  begin     // only use on float Graph
+    mnuPopGraphStayOnTop.Enabled :=true;
+    mnuPopGraphStayOnTop.Checked := not FGraphSetting.StayOnTop;
+    mnuPopGraphStayOnTopClick(self);
+  end;
+end;
+
+procedure TfrmGraphs.HideDates(aChart: TChart);
+var
+  hidedates: boolean;
+begin
+  with aChart do          // dateline charts always have dates
+  begin
+    if (aChart = chartDatelineTop) then
+      hidedates := false
+    else if (aChart = chartDatelineBottom) then
+      hidedates := false
+    else
+      hidedates := not FGraphSetting.Dates;
+    if hidedates then
+    begin
+      MarginBottom := 0;
+      BottomAxis.LabelsFont.Color := chartDatelineTop.Color;
+      BottomAxis.LabelsSize := 1;
+      LeftAxis.LabelsFont.Color := chartDatelineTop.LeftAxis.LabelsFont.Color;
+    end
+    else
+    begin
+      MarginBottom := chartDatelineTop.MarginBottom;
+      BottomAxis.LabelsFont.Color := chartDatelineTop.BottomAxis.LabelsFont.Color;
+      BottomAxis.LabelsSize := chartDatelineTop.BottomAxis.LabelsSize;
+      LeftAxis.LabelsFont.Color := chartDatelineTop.LeftAxis.LabelsFont.Color;
+    end;
+  end;
+end;
+
+procedure TfrmGraphs.InfoMessage(aCaption: string; aColor: TColor; aVisible: boolean);
+begin
+  pnlInfo.Caption := aCaption;
+  pnlInfo.Color := aColor;
+  pnlInfo.Visible := aVisible;
+end;
+
+procedure TfrmGraphs.mnuPopGraphZoomBackClick(Sender: TObject);
+begin
+  FFirstClick := true;
+  GtslZoomHistoryFloat.Delete(GtslZoomHistoryFloat.Count - 1);
+  if GtslZoomHistoryFloat.Count = 0 then mnuPopGraphResetClick(self)
+  else ZoomUpdate;
+end;
+
+procedure TfrmGraphs.ZoomUpdate;
+var
+  lastzoom: string;
+  BigTime, SmallTime: TDateTime;
+begin
+  lastzoom := GtslZoomHistoryFloat[GtslZoomHistoryFloat.Count - 1];
+  SmallTime := StrToFloat(Piece(lastzoom, '^', 1));
+  BigTime := StrToFloat(Piece(lastzoom, '^', 2));
+  ZoomTo(SmallTime, BigTime);
+  ZoomUpdateInfo(SmallTime, BigTime);
+end;
+
+procedure TfrmGraphs.ZoomUpdateInfo(SmallTime, BigTime: TDateTime);
+var
+  aString: string;
+begin
+  aString := TXT_ZOOMED
+           + FormatDateTime('mmm d, yyyy  h:nn am/pm', SmallTime)
+           + ' to ' + FormatDateTime('mmm d, yyyy  h:nn am/pm', BigTime) + '.';
+  InfoMessage(aString, COLOR_ZOOM, true);
+  pnlHeader.Visible := true;
+end;
+
+procedure TfrmGraphs.ZoomTo(SmallTime, BigTime: TDateTime);
+var
+  i: integer;
+  ChildControl: TControl;
+begin
+  for i := 0 to scrlTop.ControlCount - 1 do
+  begin
+    ChildControl := scrlTop.Controls[i];
+    SizeDates((ChildControl as TChart), SmallTime, BigTime);
+  end;
+  SizeDates(chartDatelineTop, SmallTime, BigTime);
+  for i := 0 to scrlBottom.ControlCount - 1 do
+  begin
+    ChildControl := scrlBottom.Controls[i];
+    SizeDates((ChildControl as TChart), SmallTime, BigTime);
+  end;
+  SizeDates(chartDatelineBottom, SmallTime, BigTime);
+end;
+
+procedure TfrmGraphs.mnuPopGraphPrintClick(Sender: TObject);
+var
+  topflag: boolean;
+  i, count: integer;
+  StrForFooter, StrForHeader, aTitle, aWarning, aDateRange, aAction: String;
+  aHeader: TStringList;
+  wrdApp, wrdDoc, wrdPrintDlg: Variant;
+  ChildControl: TControl;
+begin
+  try
+    wrdApp := CreateOleObject('Word.Application');
+  except
+    raise Exception.Create('Cannot start MS Word!');
+  end;
+  if Sender = mnuPopGraphPrint then
+    aAction := 'PRINT'
+  else
+    aAction := 'COPY';
+  topflag := mnuPopGraphStayOnTop.Checked and mnuPopGraphStayOnTop.Enabled;
+  Screen.Cursor := crDefault;
+  aTitle := 'CPRS Graphing';
+  aWarning := pnlInfo.Caption;
+  aDateRange :=  'Date Range: ' + cboDateRange.Text + '  Selected Items from ' +
+      FormatDateTime('mm/dd/yy', FGraphSetting.LowTime) + ' to ' +
+      FormatDateTime('mm/dd/yy', FGraphSetting.HighTime);
+  aHeader := TStringList.Create;
+  CreatePatientHeader(aHeader, aTitle, aWarning, aDateRange);
+  StrForHeader := '';
+  for i := 0 to aHeader.Count -1 do
+    StrForHeader := StrForHeader + aHeader[i] + Chr(13);
+  StrForFooter := aTitle + ' - *** WORK COPY ONLY ***' + Chr(13);
+  wrdApp.Visible := False;
+  wrdApp.Documents.Add;
+  wrdDoc := wrdApp.Documents.Item(1);
+  wrdDoc := wrdDoc.Sections.Item(1);
+  wrdDoc := wrdDoc.Headers.Item(1).Range;
+  wrdDoc.Font.Name := 'Courier New';
+  wrdDoc.Font.Size := 9;
+  wrdDoc.Text := StrForHeader;
+  wrdDoc := wrdApp.Documents.Item(1);
+  wrdDoc := wrdDoc.Sections.Item(1);
+  wrdDoc := wrdDoc.Footers.Item(1);
+  wrdDoc.Range.Font.Name := 'Courier New';
+  wrdDoc.Range.Font.Size := 9;
+  wrdDoc.Range.Text := StrForFooter;
+  wrdDoc.PageNumbers.Add;
+  wrdDoc := wrdApp.Documents.Item(1);
+  if aAction = 'COPY' then
+  begin
+    wrdDoc.Range.Font.Name := 'Courier New';
+    wrdDoc.Range.Font.Size := 9;
+    wrdDoc.Range.Text := StrForHeader;
+  end;
+  wrdDoc.Range.InsertParagraphAfter;
+  for i := 0 to scrlTop.ControlCount - 1 do           // goes from top to bottom
+  begin
+    ChildControl := scrlTop.Controls[i];
+    if (ChildControl as TChart).Visible then
+    begin
+      (ChildControl as TChart).CopyToClipboardBitmap;
+      wrdDoc.Range.InsertParagraphAfter;
+      wrdDoc.Paragraphs.Last.Range.Paste;
+    end;
+  end;
+  if (chartDatelineTop.SeriesCount > 0) and (not chkItemsTop.Checked) then
+  begin
+    chartDatelineTop.CopyToClipboardBitmap;
+    wrdDoc.Range.InsertParagraphAfter;
+    wrdDoc.Paragraphs.Last.Range.Paste;
+  end;
+  wrdDoc.Range.InsertParagraphAfter;
+  wrdDoc.Paragraphs.Last.Range.Text := '   ';
+  for i := 0 to scrlBottom.ControlCount - 1 do
+  begin
+    ChildControl := scrlBottom.Controls[i];
+    if (ChildControl as TChart).Visible then
+    begin
+      (ChildControl as TChart).CopyToClipboardBitmap;
+      wrdDoc.Range.InsertParagraphAfter;
+      wrdDoc.Paragraphs.Last.Range.Paste;
+    end;
+  end;
+  if (chartDatelineBottom.SeriesCount > 0) and (chkDualViews.Checked)
+    and (not chkItemsBottom.Checked) then
+  begin
+    chartDatelineBottom.CopyToClipboardBitmap;
+    wrdDoc.Range.InsertParagraphAfter;
+    wrdDoc.Paragraphs.Last.Range.Paste;
+  end;
+  if aAction = 'PRINT' then
+  begin
+    wrdPrintDlg := wrdApp.Dialogs.item(wdDialogFilePrint);
+    Screen.Cursor := crDefault;
+    Application.ProcessMessages;
+    if topflag then
+      mnuPopGraphStayOnTopClick(self);
+    wrdPrintDlg.Show;
+    wrdApp.Visible := false;
+    Screen.Cursor := crHourGlass;
+    Application.ProcessMessages;
+    Sleep(5000);
+    count := 0;
+    while (wrdApp.Application.BackgroundPrintingStatus > 0) do
+    begin
+      Sleep(1000);
+      Application.ProcessMessages;
+      count := count + 1;
+      if count > 3 then break;
+    end;
+  end;
+  if aAction = 'COPY' then
+  begin
+    wrdDoc.Range.WholeStory;
+    wrdDoc.Range.Copy;
+  end;
+  wrdApp.DisplayAlerts := false;
+  wrdDoc.Close(false);
+  wrdApp.Quit;
+  wrdApp := Unassigned; // releases variant
+  aHeader.Free;
+  Application.ProcessMessages;
+  if topflag then
+    if aAction = 'PRINT' then
+      mnuPopGraphStayOnTopClick(self);
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.lstViewsTopChange(Sender: TObject);
+begin
+  Screen.Cursor := crHourGlass;
+  ViewsChange(lvwItemsTop, lstViewsTop, 'top');
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.lstViewsTopEnter(Sender: TObject);
+begin
+  if Sender = lstViewsTop then
+    lstViewsTop.Tag := 0;                     // reset
+end;
+
+procedure TfrmGraphs.lstViewsTopMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  //  for right mouse click make arrangements for view definition ****************
+end;
+
+procedure TfrmGraphs.lstViewsBottomChange(Sender: TObject);
+begin
+  Screen.Cursor := crHourGlass;
+  ViewsChange(lvwItemsBottom, lstViewsBottom, 'bottom');
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmGraphs.lstViewsBottomEnter(Sender: TObject);
+begin
+  if Sender = lstViewsBottom then
+    lstViewsBottom.Tag := 0;                     // reset
+end;
+
+procedure TfrmGraphs.lstViewsBottomMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  //  for right mouse click make arrangements for view definition ****************
+end;
+
+procedure TfrmGraphs.lvwItemsBottomChange(Sender: TObject; Item: TListItem;
+  Change: TItemChange);
+begin
+  if FArrowKeys then
+    if lvwItemsBottom.SelCount > 0 then
+    begin
+      if pnlItemsBottomInfo.Tag <> 1 then
+        lvwItemsBottomClick(self);
+      FArrowKeys := false;
+    end;
+end;
+
+procedure TfrmGraphs.lvwItemsTopChange(Sender: TObject; Item: TListItem;
+  Change: TItemChange);
+begin
+  if FArrowKeys then
+    if lvwItemsTop.SelCount > 0 then
+    begin
+      if pnlItemsTopInfo.Tag <> 1 then
+        lvwItemsTopClick(self);
+      FArrowKeys := false;
+    end;
+end;
+
+procedure TfrmGraphs.lvwItemsTopClick(Sender: TObject);
+var
+  i: integer;
+begin
+  FFirstClick := true;
+  if not FFastTrack then
+    if GraphTurboOn then
+      Switch;
+  if lvwItemsTop.SelCount > FGraphSetting.MaxSelect then
+  begin
+    pnlItemsTopInfo.Tag := 1;
+    lvwItemsTop.ClearSelection;
+    if FTooManyItems then FTooManyItems := false
+    else
+    begin
+      ShowMsg('Too many items to graph');
+      FTooManyItems := true;  // flag so that warning will not be displayed twice
+    end;
+    for i := 0 to GtslSelPrevTopFloat.Count - 1 do
+      lvwItemsTop.Items[strtoint(GtslSelPrevTopFloat[i])].Selected := true;
+    pnlItemsTopInfo.Tag := 0;
+  end
+  else
+  begin
+    GtslSelPrevTopFloat.Clear;
+    for i := 0 to lvwItemsTop.Items.Count - 1 do
+    if lvwItemsTop.Items[i].Selected then
+      GtslSelPrevTopFloat.Add(inttostr(i));
+    ItemsClick(Sender, lvwItemsTop, lvwItemsBottom, chkItemsTop, lstViewsTop, GtslSelCopyTop, 'top');
+  end;
+end;
+
+procedure TfrmGraphs.lvwItemsTopEnter(Sender: TObject);
+begin
+  if lvwItemsTop.SelCount = 0 then
+    if lvwItemsTop.Items.Count > 0 then
+      lvwItemsTop.Items[0].Focused := true;
+end;
+
+procedure TfrmGraphs.lvwItemsTopKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN] then
+    FArrowKeys := true;
+end;
+
+procedure TfrmGraphs.cboDateRangeDropDown(Sender: TObject);
+begin
+  if (Top + Height) > (Screen.Height - 100) then
+    cboDateRange.DropDownCount := 3
+  else
+    cboDateRange.DropDownCount := 9;
+end;
+
+procedure TfrmGraphs.mnuPopGraphFixedClick(Sender: TObject);
+begin
+  with FGraphSetting do FixedDateRange := not FixedDateRange;
+  ChangeStyle;
+end;
+
+//*********************
+
+procedure TfrmGraphs.FormDestroy(Sender: TObject);
+begin
+  SetSize;
+end;
+
+procedure TfrmGraphs.SetFontSize(FontSize: integer);
+begin   // for now, ignore changing chart font size
+  with chartDatelineTop do
+  begin
+    LeftAxis.LabelsFont.Size := 8;
+    BottomAxis.LabelsFont.Size := 8;
+    Foot.Font.Size := 8;
+    Legend.Font.Size := 8;
+    Title.Font.Size := 8;
+  end;
+  with chartDatelineBottom do
+  begin
+    LeftAxis.LabelsFont.Size := 8;
+    BottomAxis.LabelsFont.Size := 8;
+    Foot.Font.Size := 8;
+    Legend.Font.Size := 8;
+    Title.Font.Size := 8;
+  end;
+end;
+
+procedure TfrmGraphs.chkItemsBottomEnter(Sender: TObject);
+begin
+  if not chkDualViews.Checked then
+    if pnlFooter.Visible then
+      cboDateRange.SetFocus
+    else
+      SelectNext(ActiveControl as TWinControl, True, True);
+end;
+
+procedure TfrmGraphs.lvwItemsBottomEnter(Sender: TObject);
+begin
+  if lvwItemsBottom.SelCount = 0 then
+    if lvwItemsBottom.Items.Count > 0 then
+      lvwItemsBottom.Items[0].Focused := true;
+  if not chkDualViews.Checked then
+    SelectNext(ActiveControl as TWinControl, True, True);
+end;
+
+procedure TfrmGraphs.UpdateAccessabilityActions(var Actions: TAccessibilityActions);
+begin
+  Actions := Actions - [aaColorConversion];
+end;
+
+procedure TfrmGraphs.memTopEnter(Sender: TObject);
+begin
+  memTop.Color := clBtnShadow;
+end;
+
+procedure TfrmGraphs.memTopExit(Sender: TObject);
+begin
+  memTop.Color := clBtnFace;
+end;
+
+procedure TfrmGraphs.memBottomEnter(Sender: TObject);
+begin
+  memBottom.Color := clBtnShadow;
+end;
+
+procedure TfrmGraphs.memBottomExit(Sender: TObject);
+begin
+  memBottom.Color := clBtnFace;
+end;
+
+procedure TfrmGraphs.memTopKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  case Key of
+    VK_UP:      SendMessage(scrlTop.Handle, WM_VSCROLL, SB_LINEUP,   0);
+    VK_PRIOR:   SendMessage(scrlTop.Handle, WM_VSCROLL, SB_PAGEUP,   0);
+    VK_NEXT:    SendMessage(scrlTop.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);
+    VK_DOWN:    SendMessage(scrlTop.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
+    VK_HOME:    SendMessage(scrlTop.Handle, WM_VSCROLL, SB_TOP,      0);
+    VK_END:     SendMessage(scrlTop.Handle, WM_VSCROLL, SB_BOTTOM,   0);
+  end;
+end;
+
+procedure TfrmGraphs.memBottomKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  case Key of
+    VK_UP:      SendMessage(scrlBottom.Handle, WM_VSCROLL, SB_LINEUP,   0);
+    VK_PRIOR:   SendMessage(scrlBottom.Handle, WM_VSCROLL, SB_PAGEUP,   0);
+    VK_NEXT:    SendMessage(scrlBottom.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);
+    VK_DOWN:    SendMessage(scrlBottom.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
+    VK_HOME:    SendMessage(scrlBottom.Handle, WM_VSCROLL, SB_TOP,      0);
+    VK_END:     SendMessage(scrlBottom.Handle, WM_VSCROLL, SB_BOTTOM,   0);
+  end;
+end;
+
+initialization
+  CoInitialize (nil);
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHP.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHP.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHP.dfm	(revision 1676)
@@ -0,0 +1,21 @@
+inherited frmHP: TfrmHP
+  Caption = 'History and Physical Exam Page'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [1]
+    Left = 0
+    Top = 0
+    Width = 640
+    Height = 13
+    Align = alTop
+    Alignment = taCenter
+    Caption = 'History and Physical Exam (inherit directly from fPage)'
+    ExplicitWidth = 251
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = frmHP'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHP.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHP.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHP.pas	(revision 1676)
@@ -0,0 +1,39 @@
+unit fHP;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPage, StdCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmHP = class(TfrmPage)
+    Label1: TLabel;
+  private
+    { Private declarations }
+  public
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+  end;
+
+var
+  frmHP: TfrmHP;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmHP.ClearPtData;
+begin
+  inherited ClearPtData;
+end;
+
+procedure TfrmHP.DisplayPage;
+begin
+  inherited DisplayPage;
+  if InitPatient then
+  begin
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHSplit.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHSplit.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHSplit.dfm	(revision 1676)
@@ -0,0 +1,45 @@
+inherited frmHSplit: TfrmHSplit
+  Left = 344
+  Top = 228
+  Caption = 'Basic Splitter Page'
+  PixelsPerInch = 96
+  TextHeight = 13
+  object sptHorz: TSplitter [1]
+    Left = 97
+    Top = 0
+    Width = 4
+    Height = 356
+  end
+  object pnlLeft: TPanel [2]
+    Left = 0
+    Top = 0
+    Width = 97
+    Height = 356
+    Align = alLeft
+    BevelOuter = bvNone
+    Constraints.MinWidth = 30
+    TabOrder = 0
+  end
+  object pnlRight: TPanel [3]
+    Left = 101
+    Top = 0
+    Width = 539
+    Height = 356
+    Align = alClient
+    BevelOuter = bvNone
+    Constraints.MinWidth = 24
+    TabOrder = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmHSplit'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHSplit.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHSplit.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fHSplit.pas	(revision 1676)
@@ -0,0 +1,26 @@
+unit fHSplit;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPage, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmHSplit = class(TfrmPage)
+    pnlLeft: TPanel;
+    pnlRight: TPanel;
+    sptHorz: TSplitter;
+  private
+  public
+    { Public declarations }
+  end;
+
+var
+  frmHSplit: TfrmHSplit;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fIconLegend.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fIconLegend.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fIconLegend.dfm	(revision 1676)
@@ -0,0 +1,2936 @@
+inherited frmIconLegend: TfrmIconLegend
+  Left = 294
+  Top = 224
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Icon Legend'
+  ClientHeight = 317
+  ClientWidth = 366
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  OnClose = FormClose
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pcMain: TPageControl [0]
+    Left = 0
+    Top = 0
+    Width = 366
+    Height = 293
+    ActivePage = Templates
+    Align = alClient
+    TabOrder = 0
+    object Templates: TTabSheet
+      Caption = 'Templates'
+      ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object Label3: TLabel
+        Left = 0
+        Top = 251
+        Width = 336
+        Height = 13
+        Alignment = taCenter
+        Caption = 
+          '* Indicates template has been excluded from its parent group boi' +
+          'lerplate'
+      end
+      inline fraImgText12: TfraImgText
+        Left = 0
+        Top = 0
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 0
+        TabStop = True
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 28
+          Width = 30
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000001E00
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00000000000888888880000000008888000000000080888888800000000808
+            880080BBBBB008088888880BBBBB0080880080B000B030808888880B000B0308
+            080080BBBBB0330088880000000B0330080080BBBBB0330888880BBBBB000330
+            880080000000330888880B000B080330880080BBBBB0330888880BBBBB080330
+            880080B000B0330888880BBBBB000330880080BBBBB033088888000000070330
+            880080BBBBB033088888880FFF77033088000000000003088888800000000030
+            880007777777000888888077777770008800800B3B3B3008888888003B3B3B00
+            8800888003B3B3008888888800B3B3B008008888700000008888888887000000
+            0800}
+          ExplicitLeft = 28
+          ExplicitWidth = 30
+        end
+        inherited lblText: TLabel
+          Left = 64
+          Width = 163
+          Caption = 'Shared or Personal Template Root'
+          ExplicitLeft = 64
+          ExplicitWidth = 163
+        end
+      end
+      object Panel1: TPanel
+        Left = 173
+        Top = 60
+        Width = 184
+        Height = 189
+        Caption = 'Panel1'
+        TabOrder = 1
+        object Label2: TLabel
+          Left = 1
+          Top = 1
+          Width = 182
+          Height = 20
+          Align = alTop
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Personal Template Icons'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          Layout = tlCenter
+        end
+        inline fraImgText8: TfraImgText
+          Left = 1
+          Top = 161
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 0
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 161
+          ExplicitWidth = 182
+          inherited img: TImage
+            Left = 14
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00DDDDDDDD0000000DD778D7703BBBBB30DDD7778088888880DD7788F08708
+              8080DD78878080008880D7F8F87088808080D7F7888088888880D78F88F04CCC
+              CC40DD7FF7880000000DDD77FF8788877DDD77777FFFFF77777D7F8877777778
+              887D78F8887778F8887DD78FF7D7D78FF7DDDD777DD7DD777DDDDDDDDD777DDD
+              DDDD}
+            Transparent = True
+            ExplicitLeft = 14
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 122
+            Caption = 'Personal Reminder Dialog'
+            ExplicitLeft = 46
+            ExplicitWidth = 122
+          end
+        end
+        inline fraImgText10: TfraImgText
+          Left = 1
+          Top = 21
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 1
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 21
+          ExplicitWidth = 182
+          inherited img: TImage
+            Left = 14
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00555555555555555555500000000005555550FFFFFFFF05555550F0000FFF
+              05555550FFFFFFFF05555550F000000F05555550FFFFFFFF05555550F000000F
+              05555550FFFFFFFF05555550F000FFFF05555550FFFFF00005555550F00FF0F0
+              55555550FFFFF005555555500000005555555555555555555555555555555555
+              5555}
+            Transparent = True
+            ExplicitLeft = 14
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 88
+            Caption = 'Personal Template'
+            ExplicitLeft = 46
+            ExplicitWidth = 88
+          end
+        end
+        inline fraImgText15: TfraImgText
+          Left = 1
+          Top = 81
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 2
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 81
+          ExplicitWidth = 182
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0000000000FBFBFBFBF000000DDDD0B0B8B8B8B8B0FF000000BFB
+              FBFBFB0FFFF0DDDD0FB0B8B8B8B8B0F000000FBFBFBFBF0000F0DDDD0BF00000
+              000000F000000BFBFBFBFB0FFFF0DDDD0FB0F0F0FFFFFFF000000FBFBFBFBF00
+              00F0DDDD0BF0F0F0F00000F000000000000000FFFFF0DDDD0FB0F0F0FFFFFFF0
+              0000D0F0F0F0F00000F0DDDDD0F0F0F0F00000F00000D700F0F0FFFFFFF0DDDD
+              D700F0F0FFFFFFF00000DDD0F0F0F00F0000DDDDDDD0F0F0F00F00000000DDD0
+              F0F0FFFF0F0DDDDDDDD0F0F0FFFF0F0D0000DDD0F0F0FFFF00DDDDDDDDD0F0F0
+              FFFF00DD0000DDD0F0F000000DDDDDDDDDD0F0F000000DDD0000DDD0F000000D
+              DDDDDDDDDDD0F000000DDDDD0000DDD000000DDDDDDDDDDDDDD000000DDDDDDD
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 120
+            Caption = 'Personal Group Template'
+            ExplicitLeft = 46
+            ExplicitWidth = 120
+          end
+        end
+        inline fraImgText16: TfraImgText
+          Left = 1
+          Top = 101
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 3
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 101
+          ExplicitWidth = 182
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0000000000FBFBFBFBF000000DDDD0B0B8B8B8B8B088000000BFB
+              FBFBFB088880DDDD0FB0B8B8B8B8B08000000FBFBFBFBF000080DDDD0BF00000
+              0000008000000BFBFBFBFB088880DDDD0FB080808888888000000FBFBFBFBF00
+              0080DDDD0BF080808000008000000000000000888880DDDD0FB0808088888880
+              0000D0F0808080000080DDDDD0F08080800000800000D700808088888880DDDD
+              D7008080888888800000DDD0808080080000DDDDDDD08080800800000000DDD0
+              80808888080DDDDDDDD080808888080D0000DDD08080888800DDDDDDDDD08080
+              888800DD0000DDD0808000000DDDDDDDDDD0808000000DDD0000DDD08000000D
+              DDDDDDDDDDD08000000DDDDD0000DDD000000DDDDDDDDDDDDDD000000DDDDDDD
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 127
+            Caption = 'Personal Group Template *'
+            ExplicitLeft = 46
+            ExplicitWidth = 127
+          end
+        end
+        inline fraImgText17: TfraImgText
+          Left = 1
+          Top = 61
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 4
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 61
+          ExplicitWidth = 182
+          inherited img: TImage
+            Left = 7
+            Width = 30
+            Picture.Data = {
+              07544269746D617076010000424D760100000000000076000000280000001E00
+              0000100000000100040000000000000100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+              DD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00D0000000000DDDDD0000000000DD
+              DD000BFBFBFBFB0DDDD00B8B8B8B8B0DDD000FBFBFBFBF0DDDD0F0B8B8B8B8B0
+              DD000BFBFBFBFB0DDDD0BF0B8B8B8B8B0D000FBFBFBFBF0DDDD0FBF000000000
+              0D000BFBFBFBFB0DDDD0BFBFBFBFB0DDDD000FBFBFBFBF0DDDD0FBFBFBFBF0DD
+              DD000000000000DDDDD0BFBFBF000DDDDD00D0FBFB0DDDDDDDDD0BFBF0DDDDDD
+              DD00D700007DDDDDDDDD700007DDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+              DD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+              DD00}
+            Transparent = True
+            ExplicitLeft = 7
+            ExplicitWidth = 30
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 120
+            Caption = 'Personal Template Folder'
+            ExplicitLeft = 46
+            ExplicitWidth = 120
+          end
+        end
+        inline fraImgText13: TfraImgText
+          Left = 1
+          Top = 121
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 5
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 121
+          ExplicitWidth = 182
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0DDDD00000FBFBFBFBF0DDDDDDDDD0B0B8B8B8B8B0DDD00000BFB
+              FBFBFB00000DDDDD0FB0B8B8B8B8B00D00000FBFBFBFBF088870DDDD0BF00000
+              0000007000000BFBFBFBFB088880DDDD0FB088888888888000000FBFBFBFBF08
+              0080DDDD0BF087088080008000000000000000888880DDDD0FB0800088888880
+              0000D0F0888888800880DDDDD0F08880800008800000D700888888888880DDDD
+              D7008888888888800000DDD0870880080080DDDDDDD08708800800800000DDD0
+              800088888880DDDDDDD08000888888800000DDD0888080800080DDDDDDD08880
+              808000800000DDD0888888888880DDDDDDD08888888888800000DDD04CCCCCCC
+              CC40DDDDDDD04CCCCCCCCC400000DDDD00000000000DDDDDDDDD00000000000D
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 121
+            Caption = 'Personal Template Dialog'
+            ExplicitLeft = 46
+            ExplicitWidth = 121
+          end
+        end
+        inline fraImgText14: TfraImgText
+          Left = 1
+          Top = 141
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 6
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 141
+          ExplicitWidth = 182
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0DDDD00000FBFBFBFBF0DDDDDDDDD0B0B8B8B8B8B0DDD00000BFB
+              FBFBFB00000DDDDD0FB0B8B8B8B8B00D00000FBFBFBFBF077770DDDD0BF00000
+              0000007000000BFBFBFBFB077770DDDD0FB077777777777000000FBFBFBFBF07
+              0070DDDD0BF077077070007000000000000000777770DDDD0FB0700077777770
+              0000D0F0777777700770DDDDD0F07770700007700000D700777777777770DDDD
+              D7007777777777700000DDD0770770070070DDDDDDD07707700700700000DDD0
+              700077777770DDDDDDD07000777777700000DDD0777070700070DDDDDDD07770
+              707000700000DDD0777777777770DDDDDDD07777777777700000DDD044444444
+              4440DDDDDDD04444444444400000DDDD00000000000DDDDDDDDD00000000000D
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 128
+            Caption = 'Personal Template Dialog *'
+            ExplicitLeft = 46
+            ExplicitWidth = 128
+          end
+        end
+        inline fraImgText23: TfraImgText
+          Left = 1
+          Top = 41
+          Width = 182
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 7
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 41
+          ExplicitWidth = 182
+          inherited img: TImage
+            Left = 14
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00555555555555555555500000000005555550888888880555555080000888
+              0555555088888888055555508000000805555550888888880555555080000008
+              0555555088888888055555508000888805555550888880000555555080088080
+              5555555088888005555555500000005555555555555555555555555555555555
+              5555}
+            Transparent = True
+            ExplicitLeft = 14
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 95
+            Caption = 'Personal Template *'
+            ExplicitLeft = 46
+            ExplicitWidth = 95
+          end
+        end
+      end
+      object Panel2: TPanel
+        Left = 0
+        Top = 60
+        Width = 173
+        Height = 189
+        Caption = 'Panel2'
+        TabOrder = 2
+        object Label1: TLabel
+          Left = 1
+          Top = 1
+          Width = 171
+          Height = 20
+          Align = alTop
+          Alignment = taCenter
+          AutoSize = False
+          Caption = 'Shared Template Icons'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+          Layout = tlCenter
+        end
+        inline fraImgText22: TfraImgText
+          Left = 1
+          Top = 141
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 0
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 141
+          ExplicitWidth = 171
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0DDDD00000FBFBFBFBF0DDDDDDDDD0B0B8B8B8B8B0DDD00000BFB
+              FBFBFB000000DDDD0FB0B8B8B8B8B00000000FBFBFBFBF077770DDDD0BF00000
+              0000007000000BFBFBFBFB077770DDDD0FB077777777777000000FBFBFBFBF07
+              0070DDDD0BF077077070007000000000000000777770DDDD0FB0700077777770
+              0000D0F0777777700770DDDDD0F07770700007700000D700777777777770DDDD
+              D7007777777777700000DDD0770770070070DDDDDDD07707700700700000DDD0
+              700077777770DDDDDDD07000777777700000DDD0777070700070DDDDDDD07770
+              707000700000DDD0777777777770DDDDDDD07777777777700000DDD044444444
+              4440DDDDDDD04444444444400000DDD0000000000000DDDDDDD0000000000000
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 121
+            Caption = 'Shared Template Dialog *'
+            ExplicitLeft = 46
+            ExplicitWidth = 121
+          end
+        end
+        inline fraImgText20: TfraImgText
+          Left = 1
+          Top = 61
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 1
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 61
+          ExplicitWidth = 171
+          inherited img: TImage
+            Left = 7
+            Width = 30
+            Picture.Data = {
+              07544269746D617076010000424D760100000000000076000000280000001E00
+              0000100000000100040000000000000100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+              DD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD0000000000000DDDD00000000000DD
+              DD000BFBFBFBFB0DDDD00B8B8B8B8B0DDD000FBFBFBFBF0DDDD0F0B8B8B8B8B0
+              DD000BFBFBFBFB0DDDD0BF0B8B8B8B8B0D000FBFBFBFBF0DDDD0FBF000000000
+              00000BFBFBFBFB0DDDD0BFBFBFBFB0DDDD000FBFBFBFBF0DDDD0FBFBFBFBF0DD
+              DD0000000000000DDDD00FBFB00000DDDD00D0FBFB0DDDDDDDDD0BFBF0DDDDDD
+              DD00D000000DDDDDDDDD000000DDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+              DD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+              DD00}
+            Transparent = True
+            ExplicitLeft = 7
+            ExplicitWidth = 30
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 113
+            Caption = 'Shared Template Folder'
+            ExplicitLeft = 46
+            ExplicitWidth = 113
+          end
+        end
+        inline fraImgText19: TfraImgText
+          Left = 1
+          Top = 101
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 2
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 101
+          ExplicitWidth = 171
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0000000000FBFBFBFBF000000DDDD0B0B8B8B8B8B088000000BFB
+              FBFBFB088880DDDD0FB0B8B8B8B8B08000000FBFBFBFBF000080DDDD0BF00000
+              0000008000000BFBFBFBFB088880DDDD0FB080808888888000000FBFBFBFBF00
+              0080DDDD0BF080808000008000000000000000888880DDDD0FB0808088888880
+              0000D0F0808080000080DDDDD0F08080800000800000D700808088888880DDDD
+              D7008080888888800000DDD0808080080080DDDDDDD08080800800800000DDD0
+              808088888880DDDDDDD08080888888800000DDD0808088888880DDDDDDD08080
+              888888800000DDD0808000000000DDDDDDD08080000000000000DDD080000000
+              00DDDDDDDDD08000000000DD0000DDD000000000DDDDDDDDDDD000000000DDDD
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 120
+            Caption = 'Shared Group Template *'
+            ExplicitLeft = 46
+            ExplicitWidth = 120
+          end
+        end
+        inline fraImgText18: TfraImgText
+          Left = 1
+          Top = 81
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 3
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 81
+          ExplicitWidth = 171
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0000000000FBFBFBFBF000000DDDD0B0B8B8B8B8B0FF000000BFB
+              FBFBFB0FFFF0DDDD0FB0B8B8B8B8B0F000000FBFBFBFBF0000F0DDDD0BF00000
+              000000F000000BFBFBFBFB0FFFF0DDDD0FB0F0F0FFFFFFF000000FBFBFBFBF00
+              00F0DDDD0BF0F0F0F00000F000000000000000FFFFF0DDDD0FB0F0F0FFFFFFF0
+              0000D0F0F0F0F00000F0DDDDD0F0F0F0F00000F00000D700F0F0FFFFFFF0DDDD
+              D700F0F0FFFFFFF00000DDD0F0F0F00F00F0DDDDDDD0F0F0F00F00F00000DDD0
+              F0F0FFFFFFF0DDDDDDD0F0F0FFFFFFF00000DDD0F0F0FFFFFFF0DDDDDDD0F0F0
+              FFFFFFF00000DDD0F0F000000000DDDDDDD0F0F0000000000000DDD0F0000000
+              00DDDDDDDDD0F000000000DD0000DDD000000000DDDDDDDDDDD000000000DDDD
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 113
+            Caption = 'Shared Group Template'
+            ExplicitLeft = 46
+            ExplicitWidth = 113
+          end
+        end
+        inline fraImgText21: TfraImgText
+          Left = 1
+          Top = 121
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 4
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 121
+          ExplicitWidth = 171
+          inherited img: TImage
+            Width = 36
+            Picture.Data = {
+              07544269746D6170B6010000424DB60100000000000076000000280000002400
+              0000100000000100040000000000400100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00D0000000000DDDDDDDDDD0000000000DDDDD00000BFBFBFBFB0DDDDDDDDD
+              00B8B8B8B8B0DDDD00000FBFBFBFBF0DDDDDDDDD0B0B8B8B8B8B0DDD00000BFB
+              FBFBFB000000DDDD0FB0B8B8B8B8B00000000FBFBFBFBF088880DDDD0BF00000
+              0000008000000BFBFBFBFB088880DDDD0FB088888888888000000FBFBFBFBF08
+              0080DDDD0BF087088080008000000000000000888880DDDD0FB0800088888880
+              0000D0F0888888800880DDDDD0F08880800008800000D700888888888880DDDD
+              D7008888888888800000DDD0870880080080DDDDDDD08708800800800000DDD0
+              800088888880DDDDDDD08000888888800000DDD0888080800080DDDDDDD08880
+              808000800000DDD0888888888880DDDDDDD08888888888800000DDD0CCCCCCCC
+              CCC0DDDDDDD0CCCCCCCCCCC00000DDD0000000000000DDDDDDD0000000000000
+              0000}
+            Transparent = True
+            ExplicitWidth = 36
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 114
+            Caption = 'Shared Template Dialog'
+            ExplicitLeft = 46
+            ExplicitWidth = 114
+          end
+        end
+        inline fraImgText11: TfraImgText
+          Left = 1
+          Top = 21
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 5
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 21
+          ExplicitWidth = 171
+          inherited img: TImage
+            Left = 14
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00555555555555555555500000000005555550FFFFFFFF05555550F0000FFF
+              05555550FFFFFFFF05555550F000000F05555550FFFFFFFF05555550F000000F
+              05555550FFFFFFFF05555550F000F00F05555550FFFFFFFF05555550F00F000F
+              05555550FFFFFFFF055555500000000005555555555555555555555555555555
+              5555}
+            Transparent = True
+            ExplicitLeft = 14
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 81
+            Caption = 'Shared Template'
+            ExplicitLeft = 46
+            ExplicitWidth = 81
+          end
+        end
+        inline fraImgText9: TfraImgText
+          Left = 1
+          Top = 161
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 6
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 161
+          ExplicitWidth = 171
+          inherited img: TImage
+            Left = 14
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00DDDDDDD000000000D778D770BBBBBBB0DDD7778088888880DD7788F08708
+              8080DD78878080008880D7F8F87088808080D7F7888088888880D78F88F0CCCC
+              CCC0DD7FF78000000000DD77FF8788877DDD77777FFFFF77777D7F8877777778
+              887D78F8887778F8887DD78FF7D7D78FF7DDDD777DD7DD777DDDDDDDDD777DDD
+              DDDD}
+            Transparent = True
+            ExplicitLeft = 14
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 115
+            Caption = 'Shared Reminder Dialog'
+            ExplicitLeft = 46
+            ExplicitWidth = 115
+          end
+        end
+        inline fraImgText24: TfraImgText
+          Left = 1
+          Top = 41
+          Width = 171
+          Height = 20
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 7
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 41
+          ExplicitWidth = 171
+          inherited img: TImage
+            Left = 14
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00555555555555555555500000000005555550888888880555555080000888
+              0555555088888888055555508000000805555550888888880555555080000008
+              0555555088888888055555508000800805555550888888880555555080080008
+              0555555088888888055555500000000005555555555555555555555555555555
+              5555}
+            Transparent = True
+            ExplicitLeft = 14
+          end
+          inherited lblText: TLabel
+            Left = 46
+            Width = 88
+            Caption = 'Shared Template *'
+            ExplicitLeft = 46
+            ExplicitWidth = 88
+          end
+        end
+      end
+      inline fraImgText56: TfraImgText
+        Left = 0
+        Top = 20
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 3
+        TabStop = True
+        ExplicitTop = 20
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 35
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00555555555555555555555555555555555000000000000005578888888888
+            8805578FFFFFFFFFF805578F81FF5855F805578F191FFCC8F805578F9B1FFECC
+            F805578FF91FFCFFF805578FFFFFFFFFF8055788888888888805578444444000
+            0805578444444F0F080557888888888888055777777777777705555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 35
+        end
+        inherited lblText: TLabel
+          Left = 64
+          Width = 291
+          Caption = 'COM Object Template (external application linked into CPRS) '
+          ExplicitLeft = 64
+          ExplicitWidth = 291
+        end
+      end
+      inline fraImgText57: TfraImgText
+        Left = 0
+        Top = 40
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 4
+        TabStop = True
+        ExplicitTop = 40
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 35
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00555555555555555555555555555555555000009999000005578899999999
+            880557899FFFFFF99805579999FF585599055799F99FFCC89905599F9F99FECC
+            F995599FF9F99FFFF995599FFFFF99FFF99557998888F9989905579944444F99
+            9905578994444FF9980557889999999988055777779999777705555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 35
+        end
+        inherited lblText: TLabel
+          Left = 64
+          Width = 236
+          Caption = 'COM Object Template not installed on workstation'
+          ExplicitLeft = 64
+          ExplicitWidth = 236
+        end
+      end
+    end
+    object Reminders: TTabSheet
+      Caption = 'Reminders'
+      ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      inline fraImgText1: TfraImgText
+        Left = 0
+        Top = 8
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 0
+        TabStop = True
+        ExplicitTop = 8
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 47
+          Width = 30
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000001E00
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00888888888888888888888888888888008888888888888888888888888888
+            8800888888888888888888888888888888008000000000088888000000000088
+            88000BFBFBFBFB0888800B8B8B8B8B0888000FBFBFBFBF088880F0B8B8B8B8B0
+            88000BFBFBFBFB088880BF0B8B8B8B8B08000FBFBFBFBF088880FBF000000000
+            08000BFBFBFBFB088880BFBFBFBFB08888000FBFBFBFBF088880FBFBFBFBF088
+            88000000000000888880BFBFBF000888880080FBFB08888888880BFBF0888888
+            8800870000788888888870000788888888008888888888888888888888888888
+            8800888888888888888888888888888888008888888888888888888888888888
+            8800}
+          ExplicitLeft = 47
+          ExplicitWidth = 30
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 90
+          Caption = 'Reminder Category'
+          ExplicitLeft = 118
+          ExplicitWidth = 90
+        end
+      end
+      inline fraImgText2: TfraImgText
+        Left = 0
+        Top = 34
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 1
+        TabStop = True
+        ExplicitTop = 34
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 52
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF0080018000008100888810009090001888880098F0F8900888870980FFF089
+            07888099FFFFFFF990888090F000FF009088B099FFF0FFF990B8070980F0F089
+            0708BB0098F0F8900BB800000999990000080887000000087708088887707888
+            8708B078800B008870B808700BBBBB007808880BB0B0B0BB088880BB08B0B80B
+            B088}
+          ExplicitLeft = 52
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 78
+          Caption = 'Reminder is Due'
+          ExplicitLeft = 118
+          ExplicitWidth = 78
+        end
+      end
+      inline fraImgText3: TfraImgText
+        Left = 0
+        Top = 60
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 2
+        TabStop = True
+        ExplicitTop = 60
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 52
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF008006800000860088886000E0E00068888800E8F0F8E00888870E80FFF08E
+            078880EEFF0FFFFEE08880E0FFF0FF00E08880EEFFF0FFFEE088870E80F0F08E
+            07888800E8F0F8E0088800000EEEEE0000080887000000087708088887707888
+            8708807880707088708888700880880078888888880008888888888888888888
+            8888}
+          ExplicitLeft = 52
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 177
+          Caption = 'Reminder is not due, but is Applicable'
+          ExplicitLeft = 118
+          ExplicitWidth = 177
+        end
+      end
+      inline fraImgText4: TfraImgText
+        Left = 0
+        Top = 86
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 3
+        TabStop = True
+        ExplicitTop = 86
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 52
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF0088888000008888888880077777008888880778FFF87708888077FFFCFFF7
+            7088807FCFFFFFCF7088078FFFFFFFFF870807FFFFFFFFFFF70807F00009FFFC
+            F70807FFFFFF0FFFF708078FFFFFF0FF8708807FCFFFFFFF70888077FFFCFFF7
+            7088880778FCF877088888800777770088888888800000888888888888888888
+            8888}
+          ExplicitLeft = 52
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 127
+          Caption = 'Reminder is Not Applicable'
+          ExplicitLeft = 118
+          ExplicitWidth = 127
+        end
+      end
+      inline fraImgText5: TfraImgText
+        Left = 0
+        Top = 112
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 4
+        TabStop = True
+        ExplicitTop = 112
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 52
+          Width = 20
+          Picture.Data = {
+            07544269746D617036010000424D360100000000000076000000280000001400
+            0000100000000100040000000000C00000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00FFFFFF000FFFFFFFFFFF0000FFFFF06660FFFFFFFFFF0000FFFFF06660FF
+            FFFFFFFF0000FFFFFF000FFFFFFFFFFF0000FFFFF06660FFFFFFFFFF0000FFFF
+            F06660FFFFFFFFFF0000FFFFF066660FFFFFFFFF0000FFFFFF066660FFFFFFFF
+            0000FFFFFFF066660FFFFFFF0000FFF000FF06660FFFFFFF0000FF0666000666
+            0FFFFFFF0000FF06666666660FFFFFFF0000FF06666666660FFFFFFF0000FFF0
+            06666600FFFFFFFF0000FFFFF00000FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
+            0000}
+          Transparent = True
+          ExplicitLeft = 52
+          ExplicitWidth = 20
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 208
+          Caption = 'Reminder status has not yet been evaluated'
+          ExplicitLeft = 118
+          ExplicitWidth = 208
+        end
+      end
+      inline fraImgText6: TfraImgText
+        Left = 0
+        Top = 138
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 5
+        TabStop = True
+        ExplicitTop = 138
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 20
+          Width = 86
+          Picture.Data = {
+            07544269746D617036030000424D360300000000000076000000280000005600
+            0000100000000100040000000000C00200000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00800180000000000008888880068000000000000888888888800000000000
+            08888888888800000000000888008810009090BBBBBB088888886000E0E0BBBB
+            BB0888888880077770BBBBBB0888888888806660BBBBBB088800880098F0F077
+            77770888888800E8F0F0777777088888880778FFF07777770888888888806660
+            777777088800870980FFF0888888088888870E80FFF08888880888888077FFFC
+            F088888808888888888800008888880888008099FFFFF080800808888880EEFF
+            0FF0808008088888807FCFFFF080800808888888888066608080080888008090
+            F000F088888808888880E0FFF0F0888888088888078FFFFFF088888808888888
+            88806660888888088800B099FFF0F044444408888880EEFFF0F0444444088888
+            07FFFFFFF04444440888888888806660444444088800070980F0F00000000888
+            88870E80F0F000000008888807F00009F0000000088888888888066000000008
+            8800BB0098F0F8900BB88888888800E8F0F8E0088888888807FFFFFF0FFFF708
+            8888888888888066660888888800000009999900000888888800000EEEEE0000
+            08888888078FFFFFF0FF87088888888880008806660888888800088700000008
+            77088888880887000000087708888888807FCFFFFFFF70888888888806660006
+            660888888800088887707888870888888808888770788887088888888077FFFC
+            FFF770888888888806666666660888888800B078800B008870B8888888807880
+            7070887088888888880778FCF877088888888888066666666608888888000870
+            0BBBBB0078088888888870088088007888888888888007777700888888888888
+            80066666008888888800880BB0B0B0BB08888888888888880008888888888888
+            8888800000888888888888888880000088888888880080BB08B0B80BB0888888
+            8888888888888888888888888888888888888888888888888888888888888888
+            8800}
+          ExplicitLeft = 20
+          ExplicitWidth = 86
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 215
+          Caption = 'Reminder has an associated Reminder Dialog'
+          ExplicitLeft = 118
+          ExplicitWidth = 215
+        end
+      end
+      inline fraImgText7: TfraImgText
+        Left = 0
+        Top = 164
+        Width = 358
+        Height = 40
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 6
+        TabStop = True
+        ExplicitTop = 164
+        ExplicitWidth = 358
+        ExplicitHeight = 40
+        inherited img: TImage
+          Left = 20
+          Top = 8
+          Width = 86
+          Picture.Data = {
+            07544269746D617036030000424D360300000000000076000000280000005600
+            0000100000000100040000000000C00200000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00800180000000000008888880068000000000000888888888800000000000
+            08888888888800000000000888008810009090BBFFBB088888886000E0E0BBFF
+            BB0888888880077770BBFFBB0888888888806660BBFFBB088800880098F0F07F
+            90F70888888800E8F0F07F90F7088888880778FFF07F90F70888888888806660
+            7F90F7088800870980FFF08F990F088888870E80FFF08F990F0888888077FFFC
+            F08F990F08888888888800008F990F0888008099FFFFF0F9990F08888880EEFF
+            0FF0F9990F088888807FCFFFF0F9990F0888888888806660F9990F0888008090
+            F000FF799990F8888880E0FFF0FF799990F88888078FFFFFFF799990F8888888
+            8880666F799990F88800B099FFF0F7990990F8888880EEFFF0F7990990F88888
+            07FFFFFFF7990990F8888888888066F7990990F88800070980FF990FF7990F88
+            88870E80FF990FF7990F888807F0000F990FF7990F88888888880F990FF7990F
+            8800BB0098F0FFF00F990F88888800E8F0FFF00F990F888807FFFFFFFFFFFF99
+            0F888888888880FFF60F990F880000000999990000F990F88800000EEEEE0000
+            F990F888078FFFFFF0FF87F990F88888800088066608F990F800088700000008
+            77F790F88808870000000877F790F888807FCFFFFFFF70F790F8888806660006
+            6608F790F800088887707888870F790F88088887707888870F790F888077FFFC
+            FFF7708F790F88880666666666088F790F00B078800B008870B8F79088807880
+            7070887088F79088880778FCF8770888F790888806666666660888F790000870
+            0BBBBB0078088FFF8888700880880078888FFF8888800777770088888FFF8888
+            800666660088888FFF00880BB0B0B0BB08888888888888880008888888888888
+            8888800000888888888888888880000088888888880080BB08B0B80BB0888888
+            8888888888888888888888888888888888888888888888888888888888888888
+            8800}
+          ExplicitLeft = 20
+          ExplicitTop = 8
+          ExplicitWidth = 86
+        end
+        inherited lblText: TLabel
+          Left = 118
+          Width = 210
+          Height = 26
+          Caption = 'Reminder'#39's associated Reminder Dialog has been processed'
+          WordWrap = True
+          ExplicitLeft = 118
+          ExplicitWidth = 210
+          ExplicitHeight = 26
+        end
+      end
+    end
+    object Notes: TTabSheet
+      Caption = 'Notes'
+      ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      inline fraImgText25: TfraImgText
+        Left = 0
+        Top = 40
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 0
+        TabStop = True
+        ExplicitTop = 40
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00555555555555555555500000000005555550FFFFFFFF05555550F0000FFF
+            05555550FFFFFFFF05555550F000000F05555550FFFFFFFF05555550F000000F
+            05555550FFFFFFFF05555550F000F00F05555550FFFFFFFF05555550F00F000F
+            05555550FFFFFFFF055555500000000005555555555555555555555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 80
+          Caption = 'Standalone Note'
+          ExplicitLeft = 150
+          ExplicitWidth = 80
+        end
+      end
+      inline fraImgText26: TfraImgText
+        Left = 0
+        Top = 60
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 1
+        TabStop = True
+        ExplicitTop = 60
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00555555555555555555500000000005555550FFFFFFFF05555550FFFFFFFF
+            05555550FFFFFFFF05555550FFFFFFFF05555550FFF0FFFF05555550FFF0FFFF
+            05555550F00000FF05555550FFF0FFFF05555550FFF0FFFF05555550FFFFFFFF
+            05555550FFFFFFFF055555500000000005555555555555555555555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 51
+          Caption = 'Addendum'
+          ExplicitLeft = 150
+          ExplicitWidth = 51
+        end
+      end
+      inline fraImgText27: TfraImgText
+        Left = 0
+        Top = 80
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 2
+        TabStop = True
+        ExplicitTop = 80
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D617042020000424D420200000000000042000000280000001000
+            0000100000000100100003000000000200000000000000000000000000000000
+            0000007C0000E00300001F0000001F7C1F7C1F7C1F7C1F7C1F7C000000000000
+            00000000000000000000000000001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000000000000000FF7F0000
+            000000000000FF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7F0000
+            00000000000000000000FF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7F0000
+            00000000000000000000FF7F00000000FF7FFF7F0000FF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7F0000FF7FFF7F0000FF7F0000
+            00000000FF7F00000000FF7F00000000000000000000000000000000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7F0000FF7FFF7F0000FF7F0000
+            0000FF7F000000000000FF7F00000000FF7FFF7F0000FF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F000000000000
+            00000000000000000000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000000000000000000000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 145
+          Caption = 'Standalone note with addenda'
+          ExplicitLeft = 150
+          ExplicitWidth = 145
+        end
+      end
+      inline fraImgText28: TfraImgText
+        Left = 0
+        Top = 100
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 3
+        TabStop = True
+        ExplicitTop = 100
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Width = 30
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000001E00
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00888888888888888888888888888888008888888888888888888888888888
+            8800888888888888888888888888888888008000000000088888000000000088
+            88000BFBFBFBFB0888800B8B8B8B8B0888000FBFBFBFBF088880F0B8B8B8B8B0
+            88000BFBFBFBFB088880BF0B8B8B8B8B08000FBFBFBFBF088880FBF000000000
+            08000BFBFBFBFB088880BFBFBFBFB08888000FBFBFBFBF088880FBFBFBFBF088
+            88000000000000888880BFBFBF000888880080FBFB08888888880BFBF0888888
+            8800870000788888888870000788888888008888888888888888888888888888
+            8800888888888888888888888888888888008888888888888888888888888888
+            8800}
+          ExplicitLeft = 74
+          ExplicitWidth = 30
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 98
+          Caption = 'Interdisciplinary Note'
+          ExplicitLeft = 150
+          ExplicitWidth = 98
+        end
+      end
+      inline fraImgText29: TfraImgText
+        Left = 0
+        Top = 120
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 4
+        TabStop = True
+        ExplicitTop = 120
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Width = 32
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000002000
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD0000000000DDDDDDDDDDDDDDD
+            DDDDDD0BFBF0FBFB0DDDDD0000000000DDDDDD0FBFB0BFBF0DDDD00B8B8B0B8B
+            0DDDDD0BF00000FB0DDDD0F0B8B00008B0DDDD0FBFB0BFBF0DDDD0BF0B8B808B
+            8B0DDD0BFBF0FBFB0DDDD0FB00000000000DDD0FBFBFBFBF0DDDD0BFBFBFBFB0
+            DDDDDD0000000000DDDDD0FBFBFBFBF0DDDDDDD0FBFB0DDDDDDDD0BFBFB8000D
+            DDDDDDD700007DDDDDDDDD0B8BF0DDDDDDDDDDDDDDDDDDDDDDDDDD700007DDDD
+            DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
+            DDDD}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitWidth = 32
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 165
+          Caption = 'Interdisciplinary Note with addenda'
+          ExplicitLeft = 150
+          ExplicitWidth = 165
+        end
+      end
+      inline fraImgText30: TfraImgText
+        Left = 0
+        Top = 140
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 5
+        TabStop = True
+        ExplicitTop = 140
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D617042020000424D420200000000000042000000280000001000
+            0000100000000100100003000000000200000000000000000000000000000000
+            0000007C0000E00300001F0000001F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000000000
+            00000000000000001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7FFF7FFF7FFF7F
+            FF7FFF7FFF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7F0000000000000000
+            FF7FFF7FFF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7FFF7FFF7FFF7F
+            FF7FFF7FFF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7F0000000000000000
+            00000000FF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7FFF7FFF7FFF7F
+            FF7FFF7FFF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7F0000000000000000
+            00000000FF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7FFF7FFF7FFF7F
+            FF7FFF7FFF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7F000000000000FF7F
+            FF7FFF7FFF7F00001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7FFF7FFF7FFF7F
+            00000000000000001F7C1F7C1F7C1F7C1F7C1F7C0000FF7F00000000FF7FFF7F
+            0000FF7F00001F7C1F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7FFF7FFF7FFF7F
+            000000001F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000000000
+            00001F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 98
+          Caption = 'Interdisciplinary entry'
+          ExplicitLeft = 150
+          ExplicitWidth = 98
+        end
+      end
+      inline fraImgText31: TfraImgText
+        Left = 0
+        Top = 160
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 6
+        TabStop = True
+        ExplicitTop = 160
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D617036030000424D360300000000000036000000280000001000
+            000010000000010018000000000000030000C40E0000C40E0000000000000000
+            0000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF000000000000000000000000
+            000000000000000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000000000000000000000000000000000000000FFFFFF000000000000
+            000000000000FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000000000
+            000000000000000000000000FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF000000000000
+            000000000000000000000000FFFFFF000000000000FFFFFFFFFFFF000000FFFF
+            FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+            0000000000FFFFFFFFFFFF000000FFFFFFFFFFFF000000FFFFFF000000000000
+            000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000
+            00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000
+            0000000000FFFFFFFFFFFF000000FFFFFFFFFFFF000000FFFFFF000000000000
+            FFFFFFFFFFFF000000FFFFFF000000FF00FF000000FFFFFFFFFFFF000000FFFF
+            FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FFFF
+            00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000
+            000000000000000000FF00FFFF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFF
+            FFFFFFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FF000000000000000000000000000000000000000000000000000000FF00FF
+            FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
+            FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
+            00FF}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 165
+          Caption = 'Interdisciplinary entry with addenda'
+          ExplicitLeft = 150
+          ExplicitWidth = 165
+        end
+      end
+      inline fraImgText32: TfraImgText
+        Left = 0
+        Top = 180
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 7
+        TabStop = True
+        ExplicitTop = 180
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Top = 1
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000FFFFFF7CCCCCCCC
+            0FFFFFF7CCCCCCCC0FFFFFF7CCCCCC220FFFFFF7EFEF22220FFFFFF7FEFEFE22
+            0FFFFFF7E88FEFEF0FFFFFF78FB8FEFE0FFFFFF78BF8EFEF0FFFFFF7F88EFEFE
+            0FFFFFF7EFEFEFEF0FFFFFF7777777777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFF}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitTop = 1
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Top = 3
+          Width = 130
+          Caption = 'Note has attached image(s)'
+          ExplicitLeft = 150
+          ExplicitTop = 3
+          ExplicitWidth = 130
+        end
+      end
+      inline fraImgText33: TfraImgText
+        Left = 0
+        Top = 0
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 8
+        TabStop = True
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D617042020000424D420200000000000042000000280000001000
+            0000100000000100100003000000000200000000000000000000000000000000
+            0000007C0000E00300001F0000001F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+            1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+            1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000001F7C000000001F7C
+            0000000000001F7C1F7C1F7C1F7C0000E07FE07FE07F00001F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C0000E07FE07F000000001F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000001F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Top = 5
+          Width = 88
+          Caption = 'Top level grouping'
+          ExplicitLeft = 150
+          ExplicitTop = 5
+          ExplicitWidth = 88
+        end
+      end
+      inline fraImgText34: TfraImgText
+        Left = 0
+        Top = 20
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 9
+        TabStop = True
+        ExplicitTop = 20
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Top = 1
+          Width = 30
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000001E00
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00000000000888888880000000008888000000000080888888800000000808
+            880080BBBBB008088888880BBBBB0080880080B000B030808888880B000B0308
+            080080BBBBB0330088880000000B0330080080BBBBB0330888880BBBBB000330
+            880080000000330888880B000B080330880080BBBBB0330888880BBBBB080330
+            880080B000B0330888880BBBBB000330880080BBBBB033088888000000070330
+            880080BBBBB033088888880FFF77033088000000000003088888800000000030
+            880007777777000888888077777770008800800B3B3B3008888888003B3B3B00
+            8800888003B3B3008888888800B3B3B008008888700000008888888887000000
+            0800}
+          ExplicitLeft = 74
+          ExplicitTop = 1
+          ExplicitWidth = 30
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 103
+          Caption = 'Selected subgrouping'
+          ExplicitLeft = 150
+          ExplicitWidth = 103
+        end
+      end
+      inline fraImgText53: TfraImgText
+        Left = 0
+        Top = 220
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 10
+        TabStop = True
+        ExplicitTop = 220
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Top = 1
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF997777777
+            0FFFFFF9997777770FFFFFF0997777880FFFFFF0999F88880FFFFFF0F9999888
+            0FFFFFF08889988F0FFFFFF08F8999F80FFFFFF088F8999F0FFFFFF0F888F999
+            0FFFFFF08F8F8F890FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFF}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitTop = 1
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Top = 3
+          Width = 154
+          Caption = 'Note'#39's images cannot be viewed'
+          ExplicitLeft = 150
+          ExplicitTop = 3
+          ExplicitWidth = 154
+        end
+      end
+      inline fraImgText54: TfraImgText
+        Left = 0
+        Top = 200
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 11
+        TabStop = True
+        ExplicitTop = 200
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Top = 1
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000FFFFFF7CCCCCCCC
+            0FFFFFF7CCCCCCCCFFFFFFF7CFFFFFFF0FFFFFF7E000000000FFFFF7F0000000
+            00FFFFF7EFFFFFFF0FFFFFF78FBEFEFEFFFFFFF78BF8EFEF0FFFFFF7F88EFEFE
+            0FFFFFF7EFEFEFEF0FFFFFF7777777777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFF}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitTop = 1
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Top = 3
+          Width = 156
+          Caption = 'Note'#39's child has attached images'
+          WordWrap = True
+          ExplicitLeft = 150
+          ExplicitTop = 3
+          ExplicitWidth = 156
+        end
+      end
+    end
+    object Consults: TTabSheet
+      Caption = 'Consults'
+      ImageIndex = 3
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      object Panel3: TPanel
+        Left = 0
+        Top = 0
+        Width = 178
+        Height = 265
+        Align = alLeft
+        TabOrder = 0
+        object Label4: TLabel
+          Left = 1
+          Top = 1
+          Width = 101
+          Height = 13
+          Align = alTop
+          Alignment = taCenter
+          Caption = 'Consults treeview'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+        end
+        inline fraImgText35: TfraImgText
+          Left = 1
+          Top = 14
+          Width = 176
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 0
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 14
+          ExplicitWidth = 176
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D617042020000424D420200000000000042000000280000001000
+              0000100000000100100003000000000200000000000000000000000000000000
+              0000007C0000E00300001F0000001F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+              1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+              1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000001F7C000000001F7C
+              0000000000001F7C1F7C1F7C1F7C0000E07FE07FE07F00001F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C0000E07FE07F000000001F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000001F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 50
+            Top = 5
+            Width = 88
+            Caption = 'Top level grouping'
+            ExplicitLeft = 50
+            ExplicitTop = 5
+            ExplicitWidth = 88
+          end
+        end
+        inline fraImgText36: TfraImgText
+          Left = 1
+          Top = 36
+          Width = 176
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 1
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 36
+          ExplicitWidth = 176
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Top = 1
+            Width = 30
+            Picture.Data = {
+              07544269746D617076010000424D760100000000000076000000280000001E00
+              0000100000000100040000000000000100000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00000000000888888880000000008888000000000080888888800000000808
+              880080BBBBB008088888880BBBBB0080880080B000B030808888880B000B0308
+              080080BBBBB0330088880000000B0330080080BBBBB0330888880BBBBB000330
+              880080000000330888880B000B080330880080BBBBB0330888880BBBBB080330
+              880080B000B0330888880BBBBB000330880080BBBBB033088888000000070330
+              880080BBBBB033088888880FFF77033088000000000003088888800000000030
+              880007777777000888888077777770008800800B3B3B3008888888003B3B3B00
+              8800888003B3B3008888888800B3B3B008008888700000008888888887000000
+              0800}
+            ExplicitLeft = 5
+            ExplicitTop = 1
+            ExplicitWidth = 30
+          end
+          inherited lblText: TLabel
+            Left = 50
+            Width = 103
+            Caption = 'Selected subgrouping'
+            ExplicitLeft = 50
+            ExplicitWidth = 103
+          end
+        end
+        inline fraImgText43: TfraImgText
+          Left = 1
+          Top = 102
+          Width = 176
+          Height = 36
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 2
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 102
+          ExplicitWidth = 176
+          ExplicitHeight = 36
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D617036030000424D360300000000000036000000280000001000
+              000010000000010018000000000000030000120B0000120B0000000000000000
+              0000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000
+              000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF
+              FFFFFFFFFF000000FFFFFF000000FFFFFFFFFF006A240A6A240A6A240A6A240A
+              6A240A6A240AFFFFFF000000FFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFF
+              FFFFFFFF6A240A6A240A6A240A6A240A6A240A6A240AFFFFFF000000FFFFFFFF
+              FFFFFFFFFF000000FFFFFF000000FFFFFFFFFF00FFFF00FFFF006A240A6A240A
+              FFFF00FFFF00FFFFFF000000FFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFF
+              FFFFFFFF7F7F7F7F7F7F6A240A6A240AFFFFFFFFFFFFFFFFFF000000FFFFFFFF
+              FFFFFFFFFF000000FFFFFF000000FFFFFFFFFF00FFFF00FFFF006A240A6A240A
+              FFFF00FFFF00FFFFFF000000FFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFF
+              FFFFFFFF7F7F7FFFFFFF6A240A6A240A7F7F7FFFFFFFFFFFFF000000FFFFFFFF
+              FFFFFFFFFF000000FFFFFF000000FFFFFFFFFF006A240A6A240A6A240A6A240A
+              6A240A6A240AFFFFFF000000FFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFF
+              FFFFFFFF6A240A6A240A6A240A6A240A6A240A6A240AFFFFFF000000FFFFFFFF
+              FFFFFFFFFF000000FFFFFF000000FFFFFFFFFF00FFFF00FFFF00FFFF00FFFF00
+              FFFF00FFFF00FFFFFF000000FFFFFFFFFFFFFFFFFF000000FFFFFF000000FFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF
+              FFFFFFFFFF000000FFFFFF000000000000FFFFFF000000FFFFFF000000FFFFFF
+              000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF0000
+              007F7F7F0000007F7F7F0000007F7F7F0000007F7F7F000000FFFFFFFFFFFFFF
+              FFFFFFFFFFFFFFFF000000FFFFFF0000007F7F7F0000007F7F7F0000007F7F7F
+              0000007F7F7F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF
+              FF000000FFFFFF000000FFFFFF000000FFFFFF000000FFFFFFFFFFFFFFFFFFFF
+              FFFF}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 50
+            Top = 5
+            Width = 91
+            Height = 26
+            Caption = 'Interfacility Consult request'
+            WordWrap = True
+            ExplicitLeft = 50
+            ExplicitTop = 5
+            ExplicitWidth = 91
+            ExplicitHeight = 26
+          end
+        end
+        inline fraImgText44: TfraImgText
+          Left = 1
+          Top = 138
+          Width = 176
+          Height = 35
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 3
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 138
+          ExplicitWidth = 176
+          ExplicitHeight = 35
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D617036030000424D360300000000000036000000280000001000
+              000010000000010018000000000000030000120B0000120B0000000000000000
+              0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF
+              6A240A6A240A6A240A6A240A6A240A6A240AFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFFFF000000FFFFFFFFFFFF6A240A6A240A6A240A6A240A6A240A6A
+              240AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF
+              FFFFFFFFFFFF6A240A6A240AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFF0000000000FF800000FFFFFFFFFFFFFFFFFF6A240A6A240AFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808000800080808080FFFFFF
+              FFFFFFFFFFFF6A240A6A240AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFF000000FFC0C0C0FFFFFFFFFFFFFFFFFF6A240A6A240AFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0000080808080FFFFFF
+              6A240A6A240A6A240A6A240A6A240A6A240AFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FF808080FFFFFFC0C0C0FFFFFFFFFFFF6A240A6A240A6A240A6A240A6A240A6A
+              240AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000800000808000FFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FF000000FFFFFFC0C0C0FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFF808080808000808000C0C0C0C0C0C0C0C0C0800000
+              808000C0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8080008080008080008080
+              00808000808000C0C0C0808000808000808000808000808000808000FFFFFFFF
+              FFFF808080808000808000808000808000808000800000C0C0C0808000808000
+              808000808000808000808000808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8080
+              00808000FFFFFF808000FFFFFF808000808000FFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFF}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 50
+            Top = 5
+            Width = 87
+            Height = 26
+            Caption = 'Interfacility Procedure request'
+            WordWrap = True
+            ExplicitLeft = 50
+            ExplicitTop = 5
+            ExplicitWidth = 87
+            ExplicitHeight = 26
+          end
+        end
+        inline fraImgText60: TfraImgText
+          Left = 1
+          Top = 58
+          Width = 176
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 4
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 58
+          ExplicitWidth = 176
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF0055550000000005555500FFFFFFFFF05550F0FEEEEEEEF05550F0FFFFFFFF
+              F05550F0FEEEEEEEF05550F0FF777FFFF05550F0FEEEEEEEF05550F0FF7F777F
+              F05550F0FEEEEEEEF05550F0FF77F7FFF05550F0FEEEEEEEF05550F0FFFFFFFF
+              F05550F00F0F0F0F005550550707070705555505070707070555555050505050
+              5555}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 50
+            Top = 5
+            Width = 73
+            Caption = 'Consult request'
+            ExplicitLeft = 50
+            ExplicitTop = 5
+            ExplicitWidth = 73
+          end
+        end
+        inline fraImgText61: TfraImgText
+          Left = 1
+          Top = 80
+          Width = 176
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 5
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 80
+          ExplicitWidth = 176
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D617036050000424D360500000000000036040000280000001000
+              0000100000000100080000000000000100000000000000000000000100000000
+              000000000000000080000080000000808000800000008000800080800000C0C0
+              C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020
+              E00000400000004020000040400000406000004080000040A0000040C0000040
+              E00000600000006020000060400000606000006080000060A0000060C0000060
+              E00000800000008020000080400000806000008080000080A0000080C0000080
+              E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0
+              E00000C0000000C0200000C0400000C0600000C0800000C0A00000C0C00000C0
+              E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0
+              E00040000000400020004000400040006000400080004000A0004000C0004000
+              E00040200000402020004020400040206000402080004020A0004020C0004020
+              E00040400000404020004040400040406000404080004040A0004040C0004040
+              E00040600000406020004060400040606000406080004060A0004060C0004060
+              E00040800000408020004080400040806000408080004080A0004080C0004080
+              E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0
+              E00040C0000040C0200040C0400040C0600040C0800040C0A00040C0C00040C0
+              E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0
+              E00080000000800020008000400080006000800080008000A0008000C0008000
+              E00080200000802020008020400080206000802080008020A0008020C0008020
+              E00080400000804020008040400080406000804080008040A0008040C0008040
+              E00080600000806020008060400080606000806080008060A0008060C0008060
+              E00080800000808020008080400080806000808080008080A0008080C0008080
+              E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0
+              E00080C0000080C0200080C0400080C0600080C0800080C0A00080C0C00080C0
+              E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0
+              E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000
+              E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020
+              E000C0400000C0402000C0404000C0406000C0408000C040A000C040C000C040
+              E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060
+              E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080
+              E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0
+              E000C0C00000C0C02000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0
+              A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF
+              FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00F904FFFFFFFF
+              FFFFFFFFFFFFFFFFFF0605A4FFFFFFFFFFFFFFFFFFFFFFFFFFFEF907FFFFFFFF
+              FFFFFFFFFFFFFFFFFF0701A4FFFFFFFFFFFFFFFFFFFFFFFFA4FF07FFFFFFFFFF
+              FFFFFFFFFFFFFFFFFF000406FFFFFFFFFFFFFFFFFFFFFFFF00FF07FF00FFFFFF
+              FFFFFFFFFFFFA40606070707040607FFFFFFFFFF060606060606070606060606
+              06FFFFA406060606060407060606060606A4FFFFFFFFFF0606FF06FF0606FFFF
+              FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFF}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 50
+            Top = 5
+            Width = 87
+            Caption = 'Procedure request'
+            ExplicitLeft = 50
+            ExplicitTop = 5
+            ExplicitWidth = 87
+          end
+        end
+      end
+      object Panel4: TPanel
+        Left = 178
+        Top = 0
+        Width = 180
+        Height = 265
+        Align = alClient
+        TabOrder = 1
+        object Label5: TLabel
+          Left = 1
+          Top = 1
+          Width = 116
+          Height = 13
+          Align = alTop
+          Alignment = taCenter
+          Caption = 'Documents treeview'
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = [fsBold]
+          ParentFont = False
+        end
+        inline fraImgText41: TfraImgText
+          Left = 1
+          Top = 14
+          Width = 178
+          Height = 33
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 0
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 14
+          ExplicitWidth = 178
+          ExplicitHeight = 33
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D617042020000424D420200000000000042000000280000001000
+              0000100000000100100003000000000200000000000000000000000000000000
+              0000007C0000E00300001F0000001F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+              1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+              1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000001F7C000000001F7C
+              0000000000001F7C1F7C1F7C1F7C0000E07FE07FE07F00001F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C0000E07FE07F000000001F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000001F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Top = -1
+            Width = 101
+            Height = 26
+            Caption = 'Top level - all related documents'
+            WordWrap = True
+            ExplicitLeft = 51
+            ExplicitTop = -1
+            ExplicitWidth = 101
+            ExplicitHeight = 26
+          end
+        end
+        inline fraImgText37: TfraImgText
+          Left = 1
+          Top = 47
+          Width = 178
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 1
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 47
+          ExplicitWidth = 178
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00555555555555555555500000000005555550FFFFFFFF05555550F0000FFF
+              05555550FFFFFFFF05555550F000000F05555550FFFFFFFF05555550F000000F
+              05555550FFFFFFFF05555550F000F00F05555550FFFFFFFF05555550F00F000F
+              05555550FFFFFFFF055555500000000005555555555555555555555555555555
+              5555}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Width = 49
+            Caption = 'Document'
+            ExplicitLeft = 51
+            ExplicitWidth = 49
+          end
+        end
+        inline fraImgText38: TfraImgText
+          Left = 1
+          Top = 69
+          Width = 178
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 2
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 69
+          ExplicitWidth = 178
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00555555555555555555500000000005555550FFFFFFFF05555550FFFFFFFF
+              05555550FFFFFFFF05555550FFFFFFFF05555550FFF0FFFF05555550FFF0FFFF
+              05555550F00000FF05555550FFF0FFFF05555550FFF0FFFF05555550FFFFFFFF
+              05555550FFFFFFFF055555500000000005555555555555555555555555555555
+              5555}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Width = 51
+            Caption = 'Addendum'
+            ExplicitLeft = 51
+            ExplicitWidth = 51
+          end
+        end
+        inline fraImgText39: TfraImgText
+          Left = 1
+          Top = 91
+          Width = 178
+          Height = 22
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 3
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 91
+          ExplicitWidth = 178
+          ExplicitHeight = 22
+          inherited img: TImage
+            Left = 5
+            Picture.Data = {
+              07544269746D617042020000424D420200000000000042000000280000001000
+              0000100000000100100003000000000200000000000000000000000000000000
+              0000007C0000E00300001F0000001F7C1F7C1F7C1F7C1F7C1F7C000000000000
+              00000000000000000000000000001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7F
+              FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000000000000000FF7F0000
+              000000000000FF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7FFF7F
+              FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7F0000
+              00000000000000000000FF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7FFF7F
+              FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7F0000
+              00000000000000000000FF7F00000000FF7FFF7F0000FF7FFF7F0000FF7FFF7F
+              FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7F0000FF7FFF7F0000FF7F0000
+              00000000FF7F00000000FF7F00000000000000000000000000000000FF7FFF7F
+              FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7F0000FF7FFF7F0000FF7F0000
+              0000FF7F000000000000FF7F00000000FF7FFF7F0000FF7FFF7F0000FF7FFF7F
+              FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F000000000000
+              00000000000000000000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000000000000000000000
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C
+              1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+            Transparent = True
+            ExplicitLeft = 5
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Width = 116
+            Caption = 'Document with addenda'
+            ExplicitLeft = 51
+            ExplicitWidth = 116
+          end
+        end
+        inline fraImgText40: TfraImgText
+          Left = 1
+          Top = 151
+          Width = 178
+          Height = 35
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 4
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 151
+          ExplicitWidth = 178
+          ExplicitHeight = 35
+          inherited img: TImage
+            Left = 5
+            Top = 1
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000FFFFFF7CCCCCCCC
+              0FFFFFF7CCCCCCCCFFFFFFF7CFFFFFFF0FFFFFF7E000000000FFFFF7F0000000
+              00FFFFF7EFFFFFFF0FFFFFF78FBEFEFEFFFFFFF78BF8EFEF0FFFFFF7F88EFEFE
+              0FFFFFF7EFEFEFEF0FFFFFF7777777777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFF}
+            Transparent = True
+            ExplicitLeft = 5
+            ExplicitTop = 1
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Top = 3
+            Width = 104
+            Height = 26
+            Caption = 'Document'#39's child has attached images'
+            WordWrap = True
+            ExplicitLeft = 51
+            ExplicitTop = 3
+            ExplicitWidth = 104
+            ExplicitHeight = 26
+          end
+        end
+        inline fraImgText52: TfraImgText
+          Left = 1
+          Top = 113
+          Width = 178
+          Height = 38
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 5
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 113
+          ExplicitWidth = 178
+          ExplicitHeight = 38
+          inherited img: TImage
+            Left = 5
+            Top = 1
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000FFFFFF7CCCCCCCC
+              0FFFFFF7CCCCCCCC0FFFFFF7CCCCCC220FFFFFF7EFEF22220FFFFFF7FEFEFE22
+              0FFFFFF7E88FEFEF0FFFFFF78FB8FEFE0FFFFFF78BF8EFEF0FFFFFF7F88EFEFE
+              0FFFFFF7EFEFEFEF0FFFFFF7777777777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFF}
+            Transparent = True
+            ExplicitLeft = 5
+            ExplicitTop = 1
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Top = 3
+            Width = 114
+            Height = 26
+            Caption = 'Document has attached image(s)'
+            WordWrap = True
+            ExplicitLeft = 51
+            ExplicitTop = 3
+            ExplicitWidth = 114
+            ExplicitHeight = 26
+          end
+        end
+        inline fraImgText55: TfraImgText
+          Left = 1
+          Top = 186
+          Width = 178
+          Height = 34
+          Align = alTop
+          AutoScroll = True
+          TabOrder = 6
+          TabStop = True
+          ExplicitLeft = 1
+          ExplicitTop = 186
+          ExplicitWidth = 178
+          ExplicitHeight = 34
+          inherited img: TImage
+            Left = 5
+            Top = 1
+            Picture.Data = {
+              07544269746D6170F6000000424DF60000000000000076000000280000001000
+              0000100000000100040000000000800000000000000000000000100000000000
+              0000000000000000800000800000008080008000000080008000808000008080
+              8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+              FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF997777777
+              0FFFFFF9997777770FFFFFF0997777880FFFFFF0999F88880FFFFFF0F9999888
+              0FFFFFF08889988F0FFFFFF08F8999F80FFFFFF088F8999F0FFFFFF0F888F999
+              0FFFFFF08F8F8F890FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+              FFFF}
+            Transparent = True
+            ExplicitLeft = 5
+            ExplicitTop = 1
+          end
+          inherited lblText: TLabel
+            Left = 51
+            Top = 1
+            Width = 95
+            Height = 26
+            Caption = 'Document'#39's images cannot be viewed'
+            WordWrap = True
+            ExplicitLeft = 51
+            ExplicitTop = 1
+            ExplicitWidth = 95
+            ExplicitHeight = 26
+          end
+        end
+      end
+    end
+    object Surgery: TTabSheet
+      Caption = 'Surgery'
+      ImageIndex = 4
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
+      inline fraImgText42: TfraImgText
+        Left = 0
+        Top = 0
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 0
+        TabStop = True
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D617042020000424D420200000000000042000000280000001000
+            0000100000000100100003000000000200000000000000000000000000000000
+            0000007C0000E00300001F0000001F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+            1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C00000000000000000000
+            1F7C000000001F7C000000001F7C1F7C0000000000000000E07FE07FE07F0000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C0000E07FE07F00000000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C000000001F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C00001F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000001F7C000000001F7C
+            0000000000001F7C1F7C1F7C1F7C0000E07FE07FE07F00001F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C0000E07FE07F000000001F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000001F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Top = 5
+          Width = 88
+          Caption = 'Top level grouping'
+          ExplicitLeft = 150
+          ExplicitTop = 5
+          ExplicitWidth = 88
+        end
+      end
+      inline fraImgText45: TfraImgText
+        Left = 0
+        Top = 22
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 1
+        TabStop = True
+        ExplicitTop = 22
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 74
+          Top = 1
+          Width = 30
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000001E00
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00000000000888888880000000008888000000000080888888800000000808
+            880080BBBBB008088888880BBBBB0080880080B000B030808888880B000B0308
+            080080BBBBB0330088880000000B0330080080BBBBB0330888880BBBBB000330
+            880080000000330888880B000B080330880080BBBBB0330888880BBBBB080330
+            880080B000B0330888880BBBBB000330880080BBBBB033088888000000070330
+            880080BBBBB033088888880FFF77033088000000000003088888800000000030
+            880007777777000888888077777770008800800B3B3B3008888888003B3B3B00
+            8800888003B3B3008888888800B3B3B008008888700000008888888887000000
+            0800}
+          ExplicitLeft = 74
+          ExplicitTop = 1
+          ExplicitWidth = 30
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 103
+          Caption = 'Selected subgrouping'
+          ExplicitLeft = 150
+          ExplicitWidth = 103
+        end
+      end
+      inline fraImgText46: TfraImgText
+        Left = 0
+        Top = 162
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 2
+        TabStop = True
+        ExplicitTop = 162
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00555555555555555555500000000005555550FFFFFFFF05555550F0000FFF
+            05555550FFFFFFFF05555550F000000F05555550FFFFFFFF05555550F000000F
+            05555550FFFFFFFF05555550F000F00F05555550FFFFFFFF05555550F00F000F
+            05555550FFFFFFFF055555500000000005555555555555555555555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Caption = 'Report'
+          ExplicitLeft = 150
+        end
+      end
+      inline fraImgText47: TfraImgText
+        Left = 0
+        Top = 181
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 3
+        TabStop = True
+        ExplicitTop = 181
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00555555555555555555500000000005555550FFFFFFFF05555550FFFFFFFF
+            05555550FFFFFFFF05555550FFFFFFFF05555550FFF0FFFF05555550FFF0FFFF
+            05555550F00000FF05555550FFF0FFFF05555550FFF0FFFF05555550FFFFFFFF
+            05555550FFFFFFFF055555500000000005555555555555555555555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 51
+          Caption = 'Addendum'
+          ExplicitLeft = 150
+          ExplicitWidth = 51
+        end
+      end
+      inline fraImgText48: TfraImgText
+        Left = 0
+        Top = 201
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 4
+        TabStop = True
+        ExplicitTop = 201
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D617042020000424D420200000000000042000000280000001000
+            0000100000000100100003000000000200000000000000000000000000000000
+            0000007C0000E00300001F0000001F7C1F7C1F7C1F7C1F7C1F7C000000000000
+            00000000000000000000000000001F7C1F7C1F7C1F7C1F7C1F7C0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000000000000000FF7F0000
+            000000000000FF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7F0000
+            00000000000000000000FF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F0000FF7F0000
+            00000000000000000000FF7F00000000FF7FFF7F0000FF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7F0000FF7FFF7F0000FF7F0000
+            00000000FF7F00000000FF7F00000000000000000000000000000000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7F0000FF7FFF7F0000FF7F0000
+            0000FF7F000000000000FF7F00000000FF7FFF7F0000FF7FFF7F0000FF7FFF7F
+            FF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7FFF7F000000000000
+            00000000000000000000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C000000000000000000000000000000000000
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C1F7C
+            1F7C1F7C1F7C1F7C1F7C1F7C1F7C}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 99
+          Caption = 'Report with addenda'
+          ExplicitLeft = 150
+          ExplicitWidth = 99
+        end
+      end
+      inline fraImgText49: TfraImgText
+        Left = 0
+        Top = 237
+        Width = 358
+        Height = 26
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 5
+        TabStop = True
+        ExplicitTop = 237
+        ExplicitWidth = 358
+        ExplicitHeight = 26
+        inherited img: TImage
+          Left = 74
+          Top = 1
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000000FFFFFF7CCCCCCCC
+            0FFFFFF7CCCCCCCC0FFFFFF7CCCCCC220FFFFFF7EFEF22220FFFFFF7FEFEFE22
+            0FFFFFF7E88FEFEF0FFFFFF78FB8FEFE0FFFFFF78BF8EFEF0FFFFFF7F88EFEFE
+            0FFFFFF7EFEFEFEF0FFFFFF7777777777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+            FFFF}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitTop = 1
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Top = 3
+          Width = 139
+          Caption = 'Report has attached image(s)'
+          ExplicitLeft = 150
+          ExplicitTop = 3
+          ExplicitWidth = 139
+        end
+      end
+      inline fraImgText50: TfraImgText
+        Left = 0
+        Top = 77
+        Width = 358
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 6
+        TabStop = True
+        ExplicitTop = 77
+        ExplicitWidth = 358
+        inherited img: TImage
+          Left = 74
+          Width = 32
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000002000
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00500000000000055550000000000555550BFBFBFBFBFB055500B8B8B8B8B0
+            00000FBFB0000FBF00000B0B8B8B8B8B0FF00BFB0BFBF0FB0FF00FB0B8B8B8B8
+            B0F00FB0BFBFBF0F00F00BF00000000000F00BF0FBFBFB0B0FF00FB0F0FFFFFF
+            FFF00FBF0FBFB0BF00F00BF0F0FFF000FFF00BFBF0000BFB0FF00FB0F0FF0FFF
+            0FF00FBFBFBFBFBF00F050F0F0F0FFFFF0F00000000000000FF05700F0F0FFFF
+            F0F05550F0F0F00F00005550F0F0FFFFF0F05550F0F0FFFF0F055550F0FF0FFF
+            0FF05550F0F0FFFF00555550F0FFF000FFF05550F0F0000005555550F0FFFFFF
+            FFF05550F000000555555550F000000000005550000005555555555000000555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitWidth = 32
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 144
+          Caption = 'OR case with attached reports'
+          ExplicitLeft = 150
+          ExplicitWidth = 144
+        end
+      end
+      inline fraImgText51: TfraImgText
+        Left = 0
+        Top = 57
+        Width = 358
+        Height = 21
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 7
+        TabStop = True
+        ExplicitTop = 57
+        ExplicitWidth = 358
+        ExplicitHeight = 21
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF0055555555555555555500000000000005550BFBFBFBFBFB05550FBFB000BF
+            BF05550BFB0BFB0BFB05550FB0BFBFB0BF05550BF0FBFBF0FB05550FB0BFBFB0
+            BF05550BFB0BFB0BFB05550FBFB000BFBF0555000000000000055550FBFB0555
+            5555555000000555555555555555555555555555555555555555555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 159
+          Caption = 'OR case with no attached reports'
+          ExplicitLeft = 150
+          ExplicitWidth = 159
+        end
+      end
+      inline fraImgText58: TfraImgText
+        Left = 0
+        Top = 107
+        Width = 358
+        Height = 21
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 8
+        TabStop = True
+        ExplicitTop = 107
+        ExplicitWidth = 358
+        ExplicitHeight = 21
+        inherited img: TImage
+          Left = 74
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF0055555555555555555500000000000005550BFBFBFBFBFB05550FB0BFBF00
+            BF05550BF0FBF0F0FB05550FB0BF0FB0BF05550BF0F0FBF0FB05550FB00FBFB0
+            BF05550BF0FBFBF0FB05550FBFBFBFBFBF0555000000000000055550FBFB0555
+            5555555000000555555555555555555555555555555555555555555555555555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 182
+          Caption = 'Non-OR case without attached reports'
+          ExplicitLeft = 150
+          ExplicitWidth = 182
+        end
+      end
+      inline fraImgText59: TfraImgText
+        Left = 0
+        Top = 126
+        Width = 358
+        Height = 21
+        Align = alTop
+        AutoScroll = True
+        TabOrder = 9
+        TabStop = True
+        ExplicitTop = 126
+        ExplicitWidth = 358
+        ExplicitHeight = 21
+        inherited img: TImage
+          Left = 74
+          Width = 32
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000002000
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00500000000000055550000000000555550BFBFBFBFBFB055500B8B8B8B8B0
+            00000FBF0FBFB0BF00000B0B8B8B8B8B0FF00BFB0BFB00FB0FF00FB0B8B8B8B8
+            B0F00FBF0FB0B0BF00F00BF00000000000F00BFB0B0BF0FB0FF00FB0F0FFFFFF
+            FFF00FBF00BFB0BF00F00BF0F0F0FFFFF0F00BFB0BFBF0FB0FF00FB0F0F0FFFF
+            00F00FBFBFBFBFBF00F050F0F0F0FFF0F0F00000000000000FF05700F0F0FF0F
+            F0F05550F0F0F00F00005550F0F0F0FFF0F05550F0F0FFFF0F055550F0F00FFF
+            F0F05550F0F0FFFF00555550F0F0FFFFF0F05550F0F0000005555550F0FFFFFF
+            FFF05550F000000555555550F000000000005550000005555555555000000555
+            5555}
+          Transparent = True
+          ExplicitLeft = 74
+          ExplicitWidth = 32
+        end
+        inherited lblText: TLabel
+          Left = 150
+          Width = 167
+          Caption = 'Non-OR case with attached reports'
+          ExplicitLeft = 150
+          ExplicitWidth = 167
+        end
+      end
+    end
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 293
+    Width = 366
+    Height = 24
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      366
+      24)
+    object btnOK: TButton
+      Left = 291
+      Top = 2
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = '&OK'
+      Default = True
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pcMain'
+        'Status = stsDefault')
+      (
+        'Component = Templates'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText12'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText8'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText10'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText15'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText16'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText17'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText13'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText14'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText23'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText22'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText20'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText19'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText18'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText21'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText11'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText9'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText24'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText56'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText57'
+        'Status = stsDefault')
+      (
+        'Component = Reminders'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText1'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText2'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText3'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText4'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText5'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText6'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText7'
+        'Status = stsDefault')
+      (
+        'Component = Notes'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText25'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText26'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText27'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText28'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText29'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText30'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText31'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText32'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText33'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText34'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText53'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText54'
+        'Status = stsDefault')
+      (
+        'Component = Consults'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText35'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText36'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText43'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText44'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText60'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText61'
+        'Status = stsDefault')
+      (
+        'Component = Panel4'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText41'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText37'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText38'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText39'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText40'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText52'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText55'
+        'Status = stsDefault')
+      (
+        'Component = Surgery'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText42'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText45'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText46'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText47'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText48'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText49'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText50'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText51'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText58'
+        'Status = stsDefault')
+      (
+        'Component = fraImgText59'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = frmIconLegend'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fIconLegend.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fIconLegend.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fIconLegend.pas	(revision 1676)
@@ -0,0 +1,228 @@
+unit fIconLegend;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, dShared,
+  ComCtrls, StdCtrls, ExtCtrls, ImgList, mImgText, Menus, FAutoSz,
+  VA508AccessibilityManager;
+
+type
+  TIconLegendType = (ilLast, ilNotes, ilTemplates, ilReminders, ilConsults, ilSurgery);
+
+  TfrmIconLegend = class(TfrmAutoSz)
+    pcMain: TPageControl;
+    pnlBottom: TPanel;
+    Templates: TTabSheet;
+    Reminders: TTabSheet;
+    btnOK: TButton;
+    fraImgText1: TfraImgText;
+    fraImgText2: TfraImgText;
+    fraImgText3: TfraImgText;
+    fraImgText4: TfraImgText;
+    fraImgText5: TfraImgText;
+    fraImgText6: TfraImgText;
+    fraImgText7: TfraImgText;
+    fraImgText12: TfraImgText;
+    Panel1: TPanel;
+    fraImgText8: TfraImgText;
+    fraImgText10: TfraImgText;
+    fraImgText15: TfraImgText;
+    fraImgText16: TfraImgText;
+    fraImgText17: TfraImgText;
+    fraImgText13: TfraImgText;
+    fraImgText14: TfraImgText;
+    Panel2: TPanel;
+    fraImgText22: TfraImgText;
+    fraImgText20: TfraImgText;
+    fraImgText19: TfraImgText;
+    fraImgText18: TfraImgText;
+    fraImgText21: TfraImgText;
+    fraImgText11: TfraImgText;
+    fraImgText9: TfraImgText;
+    fraImgText23: TfraImgText;
+    fraImgText24: TfraImgText;
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Notes: TTabSheet;
+    fraImgText25: TfraImgText;
+    fraImgText26: TfraImgText;
+    fraImgText27: TfraImgText;
+    fraImgText28: TfraImgText;
+    fraImgText29: TfraImgText;
+    fraImgText30: TfraImgText;
+    fraImgText31: TfraImgText;
+    fraImgText32: TfraImgText;
+    fraImgText33: TfraImgText;
+    fraImgText34: TfraImgText;
+    Consults: TTabSheet;
+    Panel3: TPanel;
+    fraImgText35: TfraImgText;
+    fraImgText36: TfraImgText;
+    fraImgText43: TfraImgText;
+    Panel4: TPanel;
+    Label5: TLabel;
+    fraImgText41: TfraImgText;
+    fraImgText37: TfraImgText;
+    fraImgText38: TfraImgText;
+    fraImgText39: TfraImgText;
+    fraImgText40: TfraImgText;
+    Label4: TLabel;
+    fraImgText44: TfraImgText;
+    Surgery: TTabSheet;
+    fraImgText42: TfraImgText;
+    fraImgText45: TfraImgText;
+    fraImgText46: TfraImgText;
+    fraImgText47: TfraImgText;
+    fraImgText48: TfraImgText;
+    fraImgText49: TfraImgText;
+    fraImgText50: TfraImgText;
+    fraImgText51: TfraImgText;
+    fraImgText52: TfraImgText;
+    fraImgText53: TfraImgText;
+    fraImgText54: TfraImgText;
+    fraImgText55: TfraImgText;
+    fraImgText56: TfraImgText;
+    fraImgText57: TfraImgText;
+    fraImgText58: TfraImgText;
+    fraImgText59: TfraImgText;
+    fraImgText60: TfraImgText;
+    fraImgText61: TfraImgText;
+    procedure btnOKClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    procedure ShowTab(tb: TIconLegendType);
+    procedure SnapLabels;
+  public
+    class procedure SetFontSize( NewFontSize: integer);
+  end;
+
+procedure ShowIconLegend(IconType: TIconLegendType; Restart: boolean = FALSE);
+
+implementation
+
+uses
+  fFrame, uConst, ORFn;
+
+{$R *.DFM}
+
+var
+  frmIconLegend: TfrmIconLegend = nil;
+  LastX, LastY: integer;
+  FirstSize: boolean = TRUE;
+
+procedure ShowIconLegend(IconType: TIconLegendType; Restart: boolean = FALSE);
+begin
+  if assigned(frmIconLegend) and Restart then
+    FreeAndNil(frmIconLegend);
+  if not assigned(frmIconLegend) then
+  begin
+    frmIconLegend := TfrmIconLegend.Create(Application);
+    frmIconLegend.Surgery.TabVisible := frmFrame.TabExists(CT_SURGERY);
+  end;
+  frmIconLegend.ShowTab(IconType);
+  TfrmIconLegend.SetFontSize( MainFontSize );
+  frmIconLegend.Show;
+end;
+
+procedure TfrmIconLegend.btnOKClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmIconLegend.ShowTab(tb: TIconLegendType);
+begin
+  case tb of
+    ilTemplates: pcMain.ActivePage := Templates;
+    ilReminders: pcMain.ActivePage := Reminders;
+    ilNotes:     pcMain.ActivePage := Notes;
+    ilConsults:  pcMain.ActivePage := Consults;
+    ilSurgery:   pcMain.ActivePage := Surgery;
+  end;
+end;
+
+procedure TfrmIconLegend.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Action := caFree;
+
+end;
+
+procedure TfrmIconLegend.FormDestroy(Sender: TObject);
+begin
+  LastX := Left;
+  LastY := Top;
+  frmIconLegend := nil;
+end;
+
+class procedure TfrmIconLegend.SetFontSize( NewFontSize: integer);
+begin
+  if Assigned(frmIconLegend) then begin
+    if FirstSize or (frmIconLegend.Font.Size <> NewFontSize) then begin
+      ResizeFormToFont(frmIconLegend);
+      frmIconLegend.Font.Size := NewFontSize;
+      frmIconLegend.SnapLabels;
+      FirstSize := FALSE;
+      LastX := (Screen.Width - frmIconLegend.Width) div 2;
+      LastY := (Screen.Height - frmIconLegend.Height) div 2;
+    end;
+    frmIconLegend.Left := LastX;
+    frmIconLegend.Top := LastY;
+  end;
+end;
+
+procedure TfrmIconLegend.SnapLabels;
+var
+  i: integer;
+begin
+  for i := 0 to ComponentCount-1 do
+    if Components[i] is TfraImgText then
+      with TfraImgText(Components[i]).lblText do
+        if (AutoSize and WordWrap) then begin
+        {Snap width to fit.  We turn autosize off and on to snap height, too.
+        If we don't tweak AutoSize, it tends to give the frame a vertical
+        scroll bar.}
+        AutoSize := False;
+        Width := Parent.Width - Left - ScrollBarWidth;
+        AutoSize := True;
+      end;
+end;
+
+procedure TfrmIconLegend.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then begin
+    if (ssCtrl in Shift) then begin
+      if not (ActiveControl is TCustomMemo) or not TMemo(ActiveControl).WantTabs then begin
+        pcMain.SelectNextPage( not (ssShift in Shift));
+        Key := 0;
+      end;
+    end;
+  end;
+end;
+
+end.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabCollTimes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabCollTimes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabCollTimes.dfm	(revision 1676)
@@ -0,0 +1,112 @@
+inherited frmLabCollectTimes: TfrmLabCollectTimes
+  Left = 332
+  Top = 310
+  BorderIcons = []
+  Caption = 'Future Lab Collect Times'
+  ClientHeight = 170
+  ClientWidth = 439
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 447
+  ExplicitHeight = 197
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblFutureTimes: TMemo [0]
+    Left = 211
+    Top = 113
+    Width = 129
+    Height = 46
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Select a date and a routine '
+      'lab collect time for that '
+      'date.')
+    ReadOnly = True
+    TabOrder = 5
+  end
+  object calLabCollect: TORDateBox [1]
+    Left = 241
+    Top = 22
+    Width = 158
+    Height = 21
+    TabOrder = 0
+    Visible = False
+    OnChange = calLabCollectChange
+    DateOnly = True
+    RequireTime = False
+  end
+  object lstLabCollTimes: TORListBox [2]
+    Left = 210
+    Top = 6
+    Width = 218
+    Height = 98
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object cmdOK: TButton [3]
+    Left = 353
+    Top = 112
+    Width = 75
+    Height = 21
+    Caption = 'OK'
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 353
+    Top = 139
+    Width = 75
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  object calMonth: TMonthCalendar [5]
+    Left = 8
+    Top = 5
+    Width = 190
+    Height = 153
+    CalColors.TitleBackColor = clBtnFace
+    CalColors.TitleTextColor = clBtnText
+    CalColors.MonthBackColor = clWindow
+    CalColors.TrailingTextColor = clGrayText
+    Date = 36507.853976585640000000
+    ShowTodayCircle = False
+    TabOrder = 4
+    TabStop = True
+    OnClick = calMonthClick
+    OnKeyDown = calMonthKeyDown
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblFutureTimes'
+        'Status = stsDefault')
+      (
+        'Component = calLabCollect'
+        'Status = stsDefault')
+      (
+        'Component = lstLabCollTimes'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = calMonth'
+        'Status = stsDefault')
+      (
+        'Component = frmLabCollectTimes'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabCollTimes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabCollTimes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabCollTimes.pas	(revision 1676)
@@ -0,0 +1,108 @@
+unit fLabCollTimes;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORDtTm, ORFn, ExtCtrls, ComCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmLabCollectTimes = class(TfrmBase508Form)
+    calLabCollect: TORDateBox;
+    lstLabCollTimes: TORListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblFutureTimes: TMemo;
+    calMonth: TMonthCalendar;
+    procedure calLabCollectChange(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure calMonthClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure calMonthKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FFutureLabCollTime: string;
+  public
+    { Public declarations }
+  end;
+
+  function GetFutureLabTime(ACollDate: TFMDateTime): string;
+
+implementation
+
+uses
+  rCore, uCore, ORNet, rODLab;
+
+{$R *.DFM}
+function GetFutureLabTime(ACollDate: TFMDateTime): string;
+var
+  frmLabCollectTimes: TfrmLabCollectTimes;
+begin
+  frmLabCollectTimes := TfrmLabCollectTimes.Create(Application);
+  try
+    with frmLabCollectTimes do
+    begin
+      calLabCollect.FMDateTime := Trunc(ACollDate);
+      calMonth.Date := FMDateTimeToDateTime(calLabCollect.FMDateTime);
+      FFutureLabCollTime := '';
+      ShowModal;
+      Result := FFutureLabCollTime;
+    end; {with frmLabCollectTimes}
+  finally
+    frmLabCollectTimes.Release;
+  end;
+end;
+
+procedure TfrmLabCollectTimes.calLabCollectChange(Sender: TObject);
+begin
+  with lstLabColltimes do
+    begin
+      Clear;
+      GetLabTimesForDate(Items, calLabCollect.FMDateTime, Encounter.Location);
+      ItemIndex := 0;
+    end;
+end;
+
+procedure TfrmLabCollectTimes.cmdOKClick(Sender: TObject);
+begin
+  if lstLabCollTimes.ItemIEN > 0 then
+    begin
+      with calLabCollect, lstLabCollTimes do
+        FFutureLabCollTime := RelativeTime + '@' + ItemID;
+      Close;
+    end
+  else
+    FFutureLabCollTime := '';
+end;
+
+procedure TfrmLabCollectTimes.cmdCancelClick(Sender: TObject);
+begin
+  FFutureLabCollTime := '';
+  Close;
+end;
+
+procedure TfrmLabCollectTimes.calMonthClick(Sender: TObject);
+begin
+  calLabCollect.FMDateTime := DateTimeToFMDateTime(calMonth.Date);
+  calMonth.SetFocus;
+end;
+
+procedure TfrmLabCollectTimes.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+end;
+
+procedure TfrmLabCollectTimes.calMonthKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  case Key of
+    VK_LEFT: calMonth.Date := calMonth.Date - 1;
+    VK_RIGHT: calMonth.Date := calMonth.Date + 1;
+    VK_UP: calMonth.Date := calMonth.Date - 7;
+    VK_DOWN: calMonth.Date := calMonth.Date + 7;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabInfo.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabInfo.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabInfo.dfm	(revision 1676)
@@ -0,0 +1,97 @@
+inherited frmLabInfo: TfrmLabInfo
+  Left = 276
+  Top = 256
+  Caption = 'Lab Test Description'
+  ClientHeight = 277
+  ClientWidth = 583
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel1: TPanel [0]
+    Left = 0
+    Top = 244
+    Width = 583
+    Height = 33
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      583
+      33)
+    object btnOK: TButton
+      Left = 487
+      Top = 5
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Close'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+  end
+  object memInfo: TCaptionMemo [1]
+    Left = 160
+    Top = 0
+    Width = 423
+    Height = 244
+    Hint = 'Laboratory Test Descriptions'
+    Align = alClient
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 1
+    Caption = 'Laboratory Test Descriptions'
+    ExplicitTop = -1
+  end
+  object cboTests: TORComboBox [2]
+    Left = 0
+    Top = 0
+    Width = 160
+    Height = 244
+    Hint = 'Select a test to view information'
+    Style = orcsSimple
+    Align = alLeft
+    AutoSelect = True
+    Caption = 'Lab Tests'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnClick = cboTestsClick
+    OnNeedData = cboTestsNeedData
+    CharsNeedMatch = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = memInfo'
+        'Status = stsDefault')
+      (
+        'Component = cboTests'
+        'Status = stsDefault')
+      (
+        'Component = frmLabInfo'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabInfo.pas	(revision 1676)
@@ -0,0 +1,77 @@
+unit fLabInfo;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, fAutoSz, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmLabInfo = class(TfrmAutoSz)
+    Panel1: TPanel;
+    btnOK: TButton;
+    memInfo: TCaptionMemo;
+    cboTests: TORComboBox;
+    procedure btnOKClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cboTestsNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboTestsClick(Sender: TObject);
+  private
+    { Private declarations }
+    OKPressed: Boolean;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmLabInfo: TfrmLabInfo;
+  function ExecuteLabInfo: Boolean;
+
+implementation
+
+uses fLabs, rLabs;
+
+{$R *.DFM}
+
+function ExecuteLabInfo: Boolean;
+begin
+  Result := False;
+  frmLabInfo := TfrmLabInfo.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmLabInfo));
+    frmLabInfo.ShowModal;
+    if frmLabInfo.OKPressed then
+      Result := True;
+  finally
+    frmLabInfo.Release;
+  end;
+end;
+
+procedure TfrmLabInfo.btnOKClick(Sender: TObject);
+begin
+  OKPressed := true;
+  Close;
+end;
+
+procedure TfrmLabInfo.FormCreate(Sender: TObject);
+
+begin
+  RedrawSuspend(cboTests.Handle);
+  cboTests.InitLongList('');
+  RedrawActivate(cboTests.Handle);
+end;
+
+procedure TfrmLabInfo.cboTestsNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboTests.ForDataUse(AllTests(StartFrom, Direction));
+end;
+
+procedure TfrmLabInfo.cboTestsClick(Sender: TObject);
+begin
+  inherited;
+  FastAssign(TestInfo(cboTests.Items[cboTests.ItemIndex]), memInfo.Lines);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabPrint.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabPrint.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabPrint.dfm	(revision 1676)
@@ -0,0 +1,165 @@
+inherited frmLabPrint: TfrmLabPrint
+  Left = 294
+  Top = 216
+  Caption = 'Lab Print Device Selection'
+  ClientHeight = 307
+  ClientWidth = 435
+  OldCreateOrder = True
+  ExplicitWidth = 443
+  ExplicitHeight = 341
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblPrintTo: TLabel [0]
+    Left = 7
+    Top = 270
+    Width = 3
+    Height = 13
+  end
+  object lblLabTitle: TMemo [1]
+    Left = 8
+    Top = 8
+    Width = 301
+    Height = 53
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Report Title, Date/Time, Location')
+    ReadOnly = True
+    TabOrder = 4
+  end
+  object grpDevice: TGroupBox [2]
+    Left = 8
+    Top = 69
+    Width = 411
+    Height = 192
+    Caption = 'Device'
+    TabOrder = 0
+    object lblMargin: TLabel
+      Left = 8
+      Top = 166
+      Width = 60
+      Height = 13
+      AutoSize = False
+      Caption = 'Right Margin'
+    end
+    object lblLength: TLabel
+      Left = 120
+      Top = 166
+      Width = 61
+      Height = 13
+      AutoSize = False
+      Caption = 'Page Length'
+    end
+    object txtRightMargin: TMaskEdit
+      Left = 72
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 1
+    end
+    object txtPageLength: TMaskEdit
+      Left = 184
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 2
+    end
+    object cboDevice: TORComboBox
+      Left = 8
+      Top = 16
+      Width = 395
+      Height = 140
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Device'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,4'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '30'
+      TabOrder = 0
+      OnChange = cboDeviceChange
+      OnNeedData = cboDeviceNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object cmdOK: TButton [3]
+    Left = 267
+    Top = 272
+    Width = 72
+    Height = 22
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 347
+    Top = 272
+    Width = 72
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object chkDefault: TCheckBox [5]
+    Left = 7
+    Top = 288
+    Width = 173
+    Height = 17
+    Caption = 'Save as user'#39's default printer'
+    TabOrder = 3
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblLabTitle'
+        'Status = stsDefault')
+      (
+        'Component = grpDevice'
+        'Status = stsDefault')
+      (
+        'Component = txtRightMargin'
+        'Status = stsDefault')
+      (
+        'Component = txtPageLength'
+        'Status = stsDefault')
+      (
+        'Component = cboDevice'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = chkDefault'
+        'Status = stsDefault')
+      (
+        'Component = frmLabPrint'
+        'Status = stsDefault'))
+  end
+  object dlgWinPrinter: TPrintDialog
+    Left = 352
+    Top = 22
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabPrint.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabPrint.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabPrint.pas	(revision 1676)
@@ -0,0 +1,508 @@
+unit fLabPrint;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORNet, Mask, ComCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmLabPrint = class(TfrmBase508Form)
+    lblLabTitle: TMemo;
+    lblPrintTo: TLabel;
+    grpDevice: TGroupBox;
+    lblMargin: TLabel;
+    lblLength: TLabel;
+    txtRightMargin: TMaskEdit;
+    txtPageLength: TMaskEdit;
+    cboDevice: TORComboBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    dlgWinPrinter: TPrintDialog;
+    chkDefault: TCheckBox;
+    procedure cboDeviceChange(Sender: TObject);
+    procedure cboDeviceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FindVType;
+  private
+    { Private declarations }
+    FReports: String;
+    FDaysBack: Integer;
+    FReportText: TRichEdit;
+    procedure DisplaySelectDevice;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmLabPrint: TfrmLabPrint;
+
+procedure PrintLabs(AReports: String; const ALabTitle: string; ADaysBack: Integer);  //Lontint
+function StringPad(aString: string; aStringCount, aPadCount: integer): String;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rCore, uCore, fLabs, rLabs, Printers, rReports, fFrame, uReports;
+
+const
+  TX_NODEVICE = 'A device must be selected to print, or press ''Cancel'' to not print.';
+  TX_NODEVICE_CAP = 'Device Not Selected';
+  TX_ERR_CAP = 'Print Error';
+  PAGE_BREAK = '**PAGE BREAK**';
+  QT_OTHER      = 0;
+  QT_HSTYPE     = 1;
+  QT_DATERANGE  = 2;
+  QT_IMAGING    = 3;
+  QT_NUTR       = 4;
+  QT_PROCEDURES = 19;
+  QT_SURGERY    = 28;
+  QT_HSCOMPONENT   = 5;
+  QT_HSWPCOMPONENT = 6;
+
+procedure PrintLabs(AReports: String; const ALabTitle: string; ADaysBack: Integer);
+{ displays a form that prompts for a device and then prints the report }
+var
+  frmLabPrint: TfrmLabPrint;
+  DefPrt: string;
+begin
+  frmLabPrint := TfrmLabPrint.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmLabPrint);
+    with frmLabPrint do
+    begin
+      lblLabTitle.Text := ALabTitle;
+      FReports := AReports;
+      FDaysBack := ADaysBack;
+      DefPrt := GetDefaultPrinter(User.Duz, Encounter.Location);
+      if User.CurrentPrinter = '' then User.CurrentPrinter := DefPrt;
+      with cboDevice do
+        begin
+          if Printer.Printers.Count > 0 then
+            begin
+              Items.Add('WIN;Windows Printer^Windows Printer');
+              Items.Add('^--------------------VistA Printers----------------------');
+            end;
+          if User.CurrentPrinter <> '' then
+            begin
+              InitLongList(Piece(User.CurrentPrinter, ';', 2));
+              SelectByID(User.CurrentPrinter);
+            end
+          else
+            InitLongList('');
+        end;
+      if (DefPrt = 'WIN;Windows Printer') and
+         (User.CurrentPrinter = DefPrt) then
+         cmdOKClick(frmLabPrint)
+      else
+         ShowModal;
+    end;
+  finally
+    frmLabPrint.Release;
+  end;
+end;
+
+procedure TfrmLabPrint.DisplaySelectDevice;
+begin
+  with cboDevice, lblPrintTo do
+  begin
+   Caption := 'Print Report on:  ' + Piece(ItemID, ';', 2);
+  end;
+end;
+
+procedure TfrmLabPrint.cboDeviceChange(Sender: TObject);
+begin
+  inherited;
+  with cboDevice do if ItemIndex > -1 then
+    begin
+      txtRightMargin.Text := Piece(Items[ItemIndex], '^', 4);
+      txtPageLength.Text := Piece(Items[ItemIndex], '^', 5);
+      DisplaySelectDevice;
+    end;
+end;
+
+procedure TfrmLabPrint.cboDeviceNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+inherited;
+  cboDevice.ForDataUse(SubsetOfDevices(StartFrom, Direction));
+end;
+
+function StringPad(aString: string; aStringCount, aPadCount: integer): String;
+var
+  s: integer;
+begin
+  if aStringCount >= aPadCount then
+    aStringCount := aPadCount - 1;
+  Result := copy(aString, 1, aStringCount);
+  s := aPadCount - length(Result);
+  if s < 0 then s := 0;
+  Result := Result + StringOfChar(' ', s);
+end;
+
+procedure TfrmLabPrint.cmdOKClick(Sender: TObject);
+var
+  ADevice, ErrMsg: string;
+  daysback: integer;
+  date1, date2: TFMDateTime;
+  today: TDateTime;
+  RemoteSiteID: string;    //for Remote site printing
+  RemoteQuery: string;    //for Remote site printing
+  ListItem: TListItem;
+  aReport: TStringList;
+  aQualifier: string;
+  i: integer;
+  MoreID: String;  //Restores MaxOcc value
+  aCaption: string;
+begin
+  inherited;
+  FReportText := CreateReportTextComponent(Self);
+  RemoteSiteID := '';
+  RemoteQuery := '';
+  MoreID := '';
+  aReport := TStringList.Create;
+  if uQualifier = '' then
+    aQualifier := piece(uRemoteType,'^',5)  //Health Summary Type Report
+  else
+    begin
+      MoreID := ';' + Piece(uQualifier,';',3);
+      aQualifier := piece(uRemoteType,'^',5);
+    end;
+  with frmLabs.TabControl1 do
+    if TabIndex > 0 then
+      begin
+        RemoteSiteID := TRemoteSite(Tabs.Objects[TabIndex]).SiteID;
+        RemoteQuery := TRemoteSite(Tabs.Objects[TabIndex]).CurrentLabQuery;
+      end;
+  if cboDevice.ItemID = '' then
+  begin
+    InfoBox(TX_NODEVICE, TX_NODEVICE_CAP, MB_OK);
+    Exit;
+  end;
+  today := frmLabs.FMToDateTime(floattostr(FMToday));
+  if frmLabs.lstDates.ItemIEN > 0 then
+    begin
+      daysback := frmLabs.lstDates.ItemIEN;
+      date1 := FMToday;
+      If daysback = 1 then
+        date2 := DateTimeToFMDateTime(today)
+      Else
+        date2 := DateTimeToFMDateTime(today - daysback);
+    end
+  else
+    frmLabs.BeginEndDates(date1,date2,daysback);
+  date1 := date1 + 0.2359;
+  if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then
+    begin
+      if dlgWinPrinter.Execute then with FReportText do
+        begin
+          if uReportType = 'V' then
+            begin
+              case uQualifierType of
+                QT_IMAGING:
+                  begin
+                    for i := 0 to frmLabs.lvReports.Items.Count - 1 do
+                      if frmLabs.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmLabs.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier,
+                            Patient.DFN, nil , RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);    //nil used to be uHSComponents
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+                QT_NUTR:
+                  begin
+                    for i := 0 to frmLabs.lvReports.Items.Count - 1 do
+                      if frmLabs.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmLabs.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier + MoreID,
+                            Patient.DFN, nil, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+                QT_HSCOMPONENT:
+                  begin
+                    if (length(piece(uHState,';',2)) > 0) then
+                      begin
+                        FReportText.Clear;
+                        aReport.Clear;
+                        CreatePatientHeader(aReport,piece(uRemoteType,'^',4));
+                        QuickCopy(aReport, FReportText);
+                        FindVType;
+                        aCaption := piece(uRemoteType,'^',4) + ';1';
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end
+                    else
+                      begin
+                        QuickCopy(GetFormattedReport(FReports, aQualifier + MoreID,
+                          Patient.DFN, nil, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                        aCaption := piece(uRemoteType,'^',4);
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end;
+                  end;
+                QT_HSWPCOMPONENT:
+                  begin
+                    if (length(piece(uHState,';',2)) > 0) then
+                      begin
+                        FReportText.Clear;
+                        aReport.Clear;
+                        CreatePatientHeader(aReport,piece(uRemoteType,'^',4));
+                        QuickCopy(aReport, FReportText);
+                        FindVType;
+                        aCaption := piece(uRemoteType,'^',4) + ';1';
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end
+                    else
+                      begin
+                        QuickCopy(GetFormattedReport(FReports, aQualifier + MoreID,
+                           Patient.DFN, nil, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                        aCaption := piece(uRemoteType,'^',4);
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end;
+                  end;
+                QT_PROCEDURES:
+                  begin
+                    for i := 0 to frmLabs.lvReports.Items.Count - 1 do
+                      if frmLabs.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmLabs.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier,
+                            Patient.DFN, nil, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+                QT_SURGERY:
+                  begin
+                    for i := 0 to frmLabs.lvReports.Items.Count - 1 do
+                      if frmLabs.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmLabs.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier,
+                            Patient.DFN, nil, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+              end;
+            end
+          else
+            begin
+              QuickCopy(GetFormattedLabReport(FReports, FDaysBack, Patient.DFN,
+              frmLabs.lstTests.Items, date1, date2, RemoteSiteID, RemoteQuery), FReportText);
+              PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
+              if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+            end;
+        end;
+    end
+  else  // if it's not a Win printer
+    begin
+      if uReportType = 'V' then
+        begin
+          case uQualifierType of
+            QT_HSCOMPONENT:
+              begin
+                if (length(piece(uHState,';',2)) > 0) then
+                  begin
+                    FindVType;
+                    aReport.Clear;
+                    QuickCopy(FReportText.Lines, aReport);
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintVReports(ErrMsg, ADevice, piece(uRemoteType,'^',4),aReport);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end
+                else
+                  begin
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintReportsToDevice(FReports, aQualifier + MoreID,
+                       Patient.DFN, ADevice, ErrMsg, nil, RemoteSiteID, RemoteQuery, uHState);
+                    ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end;
+              end;
+            QT_HSWPCOMPONENT:
+              begin
+                if (length(piece(uHState,';',2)) > 0) then
+                  begin
+                    FindVType;
+                    aReport.Clear;
+                    QuickCopy(FReportText, aReport);
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintVReports(ErrMsg, ADevice, piece(uRemoteType,'^',4),aReport);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end
+                else
+                  begin
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintReportsToDevice(FReports, aQualifier + MoreID,
+                       Patient.DFN, ADevice, ErrMsg, nil, RemoteSiteID, RemoteQuery, uHState);
+                    ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end;
+              end;
+          end;
+        end
+      else
+        begin
+          ADevice := Piece(cboDevice.ItemID, ';', 2);
+          PrintLabsToDevice(FReports, FDaysBack, Patient.DFN, ADevice,
+          frmLabs.lstTests.Items, ErrMsg, date1, date2, RemoteSiteID, RemoteQuery);
+          ErrMsg := Piece(FReportText.Lines[0], U, 2);
+          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+        end;
+    end;
+  if chkDefault.Checked then SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
+  User.CurrentPrinter := cboDevice.ItemID;
+  aReport.Free;
+  FReportText.Free;
+  Close;
+end;
+procedure TfrmLabPrint.FindVType;
+var
+  i,j,k,L,cnt: integer;
+  aBasket: TStringList;
+  aID, aHead, aData, aCol, x: string;
+  ListItem: TListItem;
+  aWPFlag: Boolean;
+begin
+  aBasket := TStringList.Create;
+  aBasket.Clear;
+  //frmReports.MemText.Clear;
+  aHead := '';
+  cnt := 2;
+  //aWPFlag := false;
+  for i := 0 to uColumns.Count - 1 do
+    begin
+      if (piece(uColumns[i],'^',7) = '1') and (not(piece(uColumns[i],'^',4) = '1')) then
+        begin
+          L := StrToIntDef(piece(uColumns[i],'^',6),15);
+          if length(piece(uColumns[i],'^',8)) > 0 then
+            x := piece(uColumns[i],'^',8)
+          else
+            x := piece(uColumns[i],'^',1);
+          x := StringPad(x, L, L+1);
+          if frmLabs.TabControl1.Tabs.Count > 1  then
+            aHead := aHead + x
+          else
+            if i = 0 then
+              continue
+            else
+              aHead := aHead + x;
+        end;
+    end;
+  if length(aHead) > 0 then
+    begin
+      FReportText.Lines.Add(aHead);
+      FReportText.Lines.Add('-------------------------------------------------------------------------------');
+      //frmReports.memText.Lines.Add(aHead);
+      //frmReports.MemText.Lines.Add('-------------------------------------------------------------------------------');
+    end;
+  for i := 0 to frmLabs.lvReports.Items.Count - 1 do
+    if frmLabs.lvReports.Items[i].Selected then
+      begin
+        aData := '';
+        aWPFlag := false;
+        ListItem := frmLabs.lvReports.Items[i];
+        aID := ListItem.SubItems[0];
+       if frmLabs.TabControl1.Tabs.Count > 1 then
+          begin
+            L := StrToIntDef(piece(uColumns[0],'^',6),10);
+            x := StringPad(ListItem.Caption, L, L+1);
+            aData := x;
+          end;
+        for j := 0 to RowObjects.ColumnList.Count - 1 do
+          begin
+            aCol := TCellObject(RowObjects.ColumnList[j]).Handle;
+            if piece(aID,':',1) = piece(TCellObject(RowObjects.ColumnList[j]).Handle,':',1) then
+              if ListItem.Caption = (piece(TCellObject(RowObjects.ColumnList[j]).Site,';',1)) then
+                begin
+                  if (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',7) = '1') and
+                   (not (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',4) = '1')) then
+                    begin
+                      FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
+                      for k := 0 to aBasket.Count - 1 do
+                        begin
+                          L := StrToIntDef(piece(uColumns[StrToInt(piece(aCol,':',2))],'^',6),15);
+                          x := StringPad(aBasket[k], L, L+1);
+                          aData := aData + x;
+                        end;
+                    end;
+                end;
+          end;
+        //frmReports.memText.Lines.Add(aData);
+        FReportText.Lines.Add(aData);
+        cnt := cnt + 1;
+        if cnt > 40 then
+          begin
+            cnt := 0;
+            //frmReports.memText.Lines.Add('**PAGE BREAK**');
+            FReportText.Lines.Add('**PAGE BREAK**');
+          end;
+        for j := 0 to RowObjects.ColumnList.Count - 1 do
+          begin
+            aCol := TCellObject(RowObjects.ColumnList[j]).Handle;
+            if piece(aID,':',1) = piece(TCellObject(RowObjects.ColumnList[j]).Handle,':',1) then
+              if ListItem.Caption = (piece(TCellObject(RowObjects.ColumnList[j]).Site,';',1)) then
+                begin
+                  if (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',7) = '1') and
+                     (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',4) = '1') then
+                    begin
+                      aWPFlag := true;
+                      FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
+                      //frmReports.MemText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
+                      FReportText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
+                      cnt := cnt + 1;
+                      for k := 0 to aBasket.Count - 1 do
+                        begin
+                          //frmReports.memText.Lines.Add('  ' + aBasket[k]);
+                          FReportText.Lines.Add('  ' + aBasket[k]);
+                          cnt := cnt + 1;
+                          if cnt > 40 then
+                            begin
+                              cnt := 0;
+                              //frmReports.memText.Lines.Add('**PAGE BREAK**');
+                              FReportText.Lines.Add('**PAGE BREAK**');
+                            end;
+                        end;
+                    end;
+                end;
+          end;
+        if aWPFlag = true then
+          begin
+            //frmReports.MemText.Lines.Add('===============================================================================');
+            FReportText.Lines.Add('===============================================================================');
+          end;
+      end;
+  aBasket.Free;
+end;
+
+procedure TfrmLabPrint.cmdCancelClick(Sender: TObject);
+begin
+inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTest.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTest.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTest.dfm	(revision 1676)
@@ -0,0 +1,142 @@
+inherited frmLabTest: TfrmLabTest
+  Left = 776
+  Top = 338
+  Caption = 'Select Lab Test for Graph'
+  ClientHeight = 281
+  ClientWidth = 277
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 285
+  ExplicitHeight = 308
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlLabTest: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 277
+    Height = 281
+    Align = alClient
+    TabOrder = 0
+    object lblTest: TLabel
+      Left = 8
+      Top = 8
+      Width = 74
+      Height = 13
+      Caption = 'Laboratory Test'
+    end
+    object lblSpecimen: TLabel
+      Left = 8
+      Top = 238
+      Width = 47
+      Height = 13
+      Caption = 'Specimen'
+    end
+    object lblSpecInfo: TLabel
+      Left = 180
+      Top = 222
+      Width = 89
+      Height = 55
+      AutoSize = False
+      Caption = 
+        'A specimen can be selected to restrict values only for that spec' +
+        'imen.'
+      WordWrap = True
+    end
+    object cmdOK: TButton
+      Left = 197
+      Top = 22
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 197
+      Top = 49
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 3
+    end
+    object cboList: TORComboBox
+      Left = 8
+      Top = 22
+      Width = 160
+      Height = 200
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Laboratory Test'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnDblClick = cmdOKClick
+      OnEnter = cboListEnter
+      OnExit = cboListExit
+      OnNeedData = cboListNeedData
+      CharsNeedMatch = 1
+    end
+    object cboSpecimen: TORComboBox
+      Left = 8
+      Top = 252
+      Width = 160
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Specimen'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      OnNeedData = cboSpecimenNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlLabTest'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboList'
+        'Status = stsDefault')
+      (
+        'Component = cboSpecimen'
+        'Status = stsDefault')
+      (
+        'Component = frmLabTest'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTest.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTest.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTest.pas	(revision 1676)
@@ -0,0 +1,120 @@
+unit fLabTest;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, ExtCtrls, ORNet, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmLabTest = class(TfrmBase508Form)
+    pnlLabTest: TORAutoPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboList: TORComboBox;
+    cboSpecimen: TORComboBox;
+    lblTest: TLabel;
+    lblSpecimen: TLabel;
+    lblSpecInfo: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cboListNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboSpecimenNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cboListEnter(Sender: TObject);
+    procedure cboListExit(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure SelectTest(FontSize: Integer);
+
+implementation
+
+uses fLabs, ORFn, rLabs, VAUtils;
+
+{$R *.DFM}
+
+procedure SelectTest(FontSize: Integer);
+var
+  frmLabTest: TfrmLabTest;
+  W, H: integer;
+begin
+  frmLabTest := TfrmLabTest.Create(Application);
+  try
+    with frmLabTest do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth := W; pnlLabTest.Width := W;
+      ClientHeight := H; pnlLabTest.Height := H;
+      lblSpecInfo.Height := cboList.Height;
+      lblSpecInfo.Width := pnlLabTest.Width - cboList.Left - cboList.Width -10;
+      ShowModal;
+    end;
+  finally
+    frmLabTest.Release;
+  end;
+end;
+
+procedure TfrmLabTest.FormCreate(Sender: TObject);
+var
+  blood, urine, serum, plasma: string;
+begin
+  RedrawSuspend(cboList.Handle);
+  cboList.InitLongList('');
+  RedrawActivate(cboList.Handle);
+  RedrawSuspend(cboSpecimen.Handle);
+  cboSpecimen.InitLongList('');
+  SpecimenDefaults(blood, urine, serum, plasma);
+  cboSpecimen.Items.Add('0^Any');
+  cboSpecimen.Items.Add(serum + '^Serum');
+  cboSpecimen.Items.Add(blood + '^Blood');
+  cboSpecimen.Items.Add(plasma + '^Plasma');
+  cboSpecimen.Items.Add(urine + '^Urine');
+  cboSpecimen.Items.Add(LLS_LINE);
+  cboSpecimen.Items.Add(LLS_SPACE);
+  cboSpecimen.ItemIndex := 0;
+  RedrawActivate(cboSpecimen.Handle);
+end;
+
+procedure TfrmLabTest.cboListNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboList.ForDataUse(AtomicTests(StartFrom, Direction));
+end;
+
+procedure TfrmLabTest.cboSpecimenNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboSpecimen.ForDataUse(Specimens(StartFrom, Direction));
+end;
+
+procedure TfrmLabTest.cmdOKClick(Sender: TObject);
+begin
+  if cboList.ItemIndex = -1 then
+    ShowMsg('No test was selected.')
+  else
+  begin
+    frmLabs.lblSingleTest.Caption := cboList.Items[cboList.ItemIndex];
+    frmLabs.lblSpecimen.Caption := cboSpecimen.Items[cboSpecimen.ItemIndex];
+    Close;
+  end;
+end;
+
+procedure TfrmLabTest.cboListEnter(Sender: TObject);
+begin
+  cmdOK.Default := true;
+end;
+
+procedure TfrmLabTest.cboListExit(Sender: TObject);
+begin
+  cmdOK.Default := false;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTestGroups.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTestGroups.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTestGroups.dfm	(revision 1676)
@@ -0,0 +1,398 @@
+inherited frmLabTestGroups: TfrmLabTestGroups
+  Left = 337
+  Top = 202
+  Caption = 'Select Lab Tests'
+  ClientHeight = 434
+  ClientWidth = 457
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 465
+  ExplicitHeight = 461
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlLabTestGroups: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 457
+    Height = 434
+    Align = alClient
+    Caption = 'Specimen'
+    TabOrder = 0
+    object bvlTestGroups: TBevel
+      Left = 1
+      Top = 1
+      Width = 455
+      Height = 120
+      Align = alTop
+    end
+    object lblTests: TLabel
+      Left = 10
+      Top = 124
+      Width = 79
+      Height = 13
+      Caption = 'Laboratory Tests'
+    end
+    object lblList: TLabel
+      Left = 284
+      Top = 144
+      Width = 100
+      Height = 13
+      Caption = 'Tests to be displayed'
+    end
+    object lblSpecimen: TLabel
+      Left = 12
+      Top = 383
+      Width = 47
+      Height = 13
+      Caption = 'Specimen'
+    end
+    object lblTestGroups: TLabel
+      Left = 10
+      Top = 38
+      Width = 58
+      Height = 13
+      Caption = 'Test Groups'
+    end
+    object lblUsers: TLabel
+      Left = 164
+      Top = 4
+      Width = 159
+      Height = 13
+      Caption = 'Persons with defined Test Groups'
+    end
+    object lblOrder: TLabel
+      Left = 182
+      Top = 304
+      Width = 40
+      Height = 52
+      Caption = 'Arrange order of tests for display.'
+      WordWrap = True
+    end
+    object lblTestGroup: TLabel
+      Left = 181
+      Top = 198
+      Width = 91
+      Height = 39
+      Caption = 'To create a New Test Group, limit selection to 7 tests.'
+      WordWrap = True
+    end
+    object lblDefine: TVA508StaticText
+      Name = 'lblDefine'
+      Left = 352
+      Top = 8
+      Width = 94
+      Height = 15
+      AutoSize = True
+      Caption = 'Define Test Groups'
+      TabOrder = 10
+      ShowAccelChar = True
+    end
+    object pnlUpButton: TKeyClickPanel
+      Left = 235
+      Top = 299
+      Width = 29
+      Height = 29
+      BevelOuter = bvNone
+      Constraints.MaxHeight = 29
+      Constraints.MaxWidth = 29
+      TabOrder = 5
+      TabStop = True
+      OnClick = cmdUpClick
+      OnEnter = pnlUpButtonEnter
+      OnExit = pnlUpButtonExit
+      OnResize = pnlUpButtonResize
+      object cmdUp: TSpeedButton
+        Left = 2
+        Top = 2
+        Width = 25
+        Height = 25
+        Caption = '^'
+        Enabled = False
+        OnClick = cmdUpClick
+      end
+    end
+    object pnlDownButton: TKeyClickPanel
+      Left = 235
+      Top = 331
+      Width = 29
+      Height = 29
+      BevelOuter = bvNone
+      Constraints.MaxHeight = 29
+      Constraints.MaxWidth = 29
+      TabOrder = 6
+      TabStop = True
+      OnClick = cmdDownClick
+      OnEnter = pnlDownButtonEnter
+      OnExit = pnlDownButtonExit
+      OnResize = pnlDownButtonResize
+      object cmdDown: TSpeedButton
+        Left = 2
+        Top = 2
+        Width = 25
+        Height = 25
+        Caption = 'v'
+        Enabled = False
+        OnClick = cmdDownClick
+      end
+    end
+    object cmdOK: TButton
+      Left = 277
+      Top = 398
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      TabOrder = 8
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 368
+      Top = 398
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 9
+    end
+    object cmdClear: TButton
+      Left = 189
+      Top = 244
+      Width = 72
+      Height = 21
+      Caption = 'Remove All'
+      Enabled = False
+      TabOrder = 3
+      OnClick = cmdClearClick
+    end
+    object cmdRemove: TButton
+      Left = 189
+      Top = 268
+      Width = 72
+      Height = 21
+      Caption = 'Remove One'
+      Enabled = False
+      TabOrder = 4
+      OnClick = cmdRemoveClick
+    end
+    object lstList: TORListBox
+      Left = 278
+      Top = 163
+      Width = 160
+      Height = 211
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 7
+      OnClick = lstListClick
+      Caption = 'Tests to be displayed'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+      OnChange = lstListClick
+    end
+    object cboTests: TORComboBox
+      Left = 10
+      Top = 144
+      Width = 160
+      Height = 233
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Laboratory Tests'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      TabStop = True
+      OnChange = cboTestsChange
+      OnDblClick = cmdAddTestClick
+      OnEnter = cboTestsEnter
+      OnExit = cboTestsExit
+      OnNeedData = cboTestsNeedData
+      CharsNeedMatch = 1
+    end
+    object cboUsers: TORComboBox
+      Left = 164
+      Top = 23
+      Width = 165
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Persons with defined Test Groups'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 11
+      OnClick = cboUsersClick
+      OnNeedData = cboUsersNeedData
+      CharsNeedMatch = 1
+    end
+    object lstTestGroups: TORListBox
+      Left = 10
+      Top = 56
+      Width = 319
+      Height = 57
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 12
+      Caption = 'Test Groups'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+      OnChange = lstTestGroupsChange
+    end
+    object cmdReplace: TButton
+      Left = 368
+      Top = 60
+      Width = 72
+      Height = 21
+      Caption = 'Replace'
+      Enabled = False
+      TabOrder = 14
+      OnClick = cmdReplaceClick
+    end
+    object cboSpecimen: TORComboBox
+      Left = 12
+      Top = 402
+      Width = 160
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Specimen'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      OnNeedData = cboSpecimenNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdDelete: TButton
+      Left = 368
+      Top = 88
+      Width = 72
+      Height = 21
+      Caption = 'Delete'
+      Enabled = False
+      TabOrder = 15
+      OnClick = cmdDeleteClick
+    end
+    object cmdAdd: TButton
+      Left = 368
+      Top = 32
+      Width = 72
+      Height = 21
+      Caption = 'New'
+      Enabled = False
+      ParentShowHint = False
+      ShowHint = False
+      TabOrder = 13
+      OnClick = cmdAddClick
+    end
+    object cmdAddTest: TButton
+      Left = 189
+      Top = 144
+      Width = 72
+      Height = 21
+      Caption = 'Add'
+      Enabled = False
+      TabOrder = 2
+      OnClick = cmdAddTestClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlLabTestGroups'
+        'Status = stsDefault')
+      (
+        'Component = pnlUpButton'
+        'Text = Display selected test earlier'
+        'Status = stsOK')
+      (
+        'Component = pnlDownButton'
+        'Text = Display selected test later'
+        'Status = stsOK')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cmdClear'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = lstList'
+        'Status = stsDefault')
+      (
+        'Component = cboTests'
+        'Status = stsDefault')
+      (
+        'Component = cboUsers'
+        'Label = lblUsers'
+        'Status = stsOK')
+      (
+        'Component = lstTestGroups'
+        'Label = lblTestGroups'
+        'Status = stsOK')
+      (
+        'Component = cmdReplace'
+        'Text = Replace Test Group'
+        'Status = stsOK')
+      (
+        'Component = cboSpecimen'
+        'Status = stsDefault')
+      (
+        'Component = cmdDelete'
+        'Text = Delete Test Group'
+        'Status = stsOK')
+      (
+        'Component = cmdAdd'
+        'Text = New Test Group'
+        'Status = stsOK')
+      (
+        'Component = cmdAddTest'
+        'Status = stsDefault')
+      (
+        'Component = frmLabTestGroups'
+        'Status = stsDefault')
+      (
+        'Component = lblDefine'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTestGroups.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTestGroups.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTestGroups.pas	(revision 1676)
@@ -0,0 +1,432 @@
+unit fLabTestGroups;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, Buttons, ORCtrls, StdCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmLabTestGroups = class(TfrmBase508Form)
+    pnlLabTestGroups: TORAutoPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cmdClear: TButton;
+    cmdRemove: TButton;
+    lstList: TORListBox;
+    cboTests: TORComboBox;
+    cmdUp: TSpeedButton;
+    pnlUpButton: TKeyClickPanel;
+    cmdDown: TSpeedButton;
+    pnlDownButton: TKeyClickPanel;
+    bvlTestGroups: TBevel;
+    cboUsers: TORComboBox;
+    lstTestGroups: TORListBox;
+    cmdReplace: TButton;
+    lblTests: TLabel;
+    lblList: TLabel;
+    cboSpecimen: TORComboBox;
+    lblSpecimen: TLabel;
+    lblTestGroups: TLabel;
+    lblUsers: TLabel;
+    lblOrder: TLabel;
+    cmdDelete: TButton;
+    cmdAdd: TButton;
+    cmdAddTest: TButton;
+    lblDefine: TVA508StaticText;
+    lblTestGroup: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cboTestsNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdClearClick(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure cmdUpClick(Sender: TObject);
+    procedure cmdDownClick(Sender: TObject);
+    procedure lstListClick(Sender: TObject);
+    procedure cboUsersNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboSpecimenNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboUsersClick(Sender: TObject);
+    procedure cmdReplaceClick(Sender: TObject);
+    procedure cmdAddClick(Sender: TObject);
+    procedure cmdDeleteClick(Sender: TObject);
+    procedure cboTestsChange(Sender: TObject);
+    procedure cboTestsEnter(Sender: TObject);
+    procedure cboTestsExit(Sender: TObject);
+    procedure cmdAddTestClick(Sender: TObject);
+    procedure pnlUpButtonEnter(Sender: TObject);
+    procedure pnlUpButtonExit(Sender: TObject);
+    procedure pnlDownButtonEnter(Sender: TObject);
+    procedure pnlDownButtonExit(Sender: TObject);
+    procedure pnlUpButtonResize(Sender: TObject);
+    procedure pnlDownButtonResize(Sender: TObject);
+    procedure lstTestGroupsChange(Sender: TObject);
+  private
+    { Private declarations }
+    procedure AddTests(tests: TStrings);
+    procedure TestGroupEnable;
+  public
+    { Public declarations }
+  end;
+
+procedure SelectTestGroups(FontSize: Integer);
+
+implementation
+
+uses fLabs, ORFn, rLabs, uCore, VAUtils, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+procedure SelectTestGroups(FontSize: Integer);
+var
+  frmLabTestGroups: TfrmLabTestGroups;
+  W, H: integer;
+begin
+  frmLabTestGroups := TfrmLabTestGroups.Create(Application);
+  try
+    with frmLabTestGroups do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth := W; pnlLabTestGroups.Width := W;
+      ClientHeight := H; pnlLabTestGroups.Height := H;
+      with lblTestGroup do begin
+        AutoSize := False;
+        Height := lstList.Height div 3;
+        Width := cmdAddTest.Width * 4 div 3;
+        AutoSize := True;
+      end;
+      with lblOrder do begin
+        AutoSize := False;
+        Height := lstList.Height div 3;
+        Width := cmdAddTest.Width div 2 + 10;
+        AutoSize := True;
+      end;
+      FastAssign(frmLabs.lstTests.Items, lstList.Items);
+      if lstList.Items.Count > 0 then lstList.ItemIndex := 0;
+      lstListClick(frmLabTestGroups);
+      ShowModal;
+    end;
+  finally
+    frmLabTestGroups.Release;
+  end;
+end;
+
+procedure TfrmLabTestGroups.FormCreate(Sender: TObject);
+var
+  i: integer;
+  blood, urine, serum, plasma: string;
+begin
+  RedrawSuspend(cboTests.Handle);
+  cboTests.InitLongList('');
+  RedrawActivate(cboTests.Handle);
+  RedrawSuspend(cboSpecimen.Handle);
+  cboSpecimen.InitLongList('');
+  SpecimenDefaults(blood, urine, serum, plasma);
+  cboSpecimen.Items.Add('0^Any');
+  cboSpecimen.Items.Add(serum + '^Serum');
+  cboSpecimen.Items.Add(blood + '^Blood');
+  cboSpecimen.Items.Add(plasma + '^Plasma');
+  cboSpecimen.Items.Add(urine + '^Urine');
+  cboSpecimen.Items.Add(LLS_LINE);
+  cboSpecimen.Items.Add(LLS_SPACE);
+  cboSpecimen.ItemIndex := 0;
+  RedrawActivate(cboSpecimen.Handle);
+  RedrawSuspend(cboTests.Handle);
+  cboUsers.InitLongList(User.Name);
+  for i := 0 to cboUsers.Items.Count - 1 do
+    if StrToInt64Def(Piece(cboUsers.Items[i], '^', 1), 0) = User.DUZ then
+    begin
+      cboUsers.ItemIndex := i;
+      break;
+    end;
+  if cboUsers.ItemIndex > -1 then cboUsersClick(self);
+  RedrawActivate(cboTests.Handle);
+  cmdUp.Enabled := false;
+  pnlUpButton.TabStop := false;
+  cmdDown.Enabled := false;
+  pnlDownButton.TabStop := false;
+  lstList.Clear;
+end;
+
+procedure TfrmLabTestGroups.cboTestsNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboTests.ForDataUse(ChemTest(StartFrom, Direction));
+end;
+
+procedure TfrmLabTestGroups.cmdOKClick(Sender: TObject);
+begin
+  if lstList.Items.Count = 0 then
+    ShowMsg('No tests were selected.')
+  else
+  begin
+    FastAssign(lstList.Items, frmLabs.lstTests.Items);
+    frmLabs.lblSpecimen.Caption := cboSpecimen.Items[cboSpecimen.ItemIndex];
+    Close;
+  end;
+end;
+
+procedure TfrmLabTestGroups.cmdClearClick(Sender: TObject);
+begin
+  lstList.Clear;
+  lstListClick(self);
+end;
+
+procedure TfrmLabTestGroups.cmdRemoveClick(Sender: TObject);
+var
+  newindex: integer;
+begin
+  if lstList.Items.Count > 0 then
+  begin
+    if lstList.ItemIndex = (lstList.Items.Count -1 ) then
+      newindex := lstList.ItemIndex - 1
+    else
+      newindex := lstList.ItemIndex;
+    lstList.Items.Delete(lstList.ItemIndex);
+    if lstList.Items.Count > 0 then lstList.ItemIndex := newindex;
+  end;
+  lstListClick(self);
+end;
+
+procedure TfrmLabTestGroups.cmdUpClick(Sender: TObject);
+var
+  newindex: integer;
+  templine: string;
+begin
+  if cmdUp.Enabled then begin
+    newindex := lstList.ItemIndex - 1;
+    templine := lstList.Items[lstList.ItemIndex - 1];
+    lstList.Items[lstList.ItemIndex - 1] := lstList.Items[lstList.ItemIndex];
+    lstList.Items[lstList.ItemIndex] := templine;
+    lstList.ItemIndex := newindex;
+    lstListClick(self);
+    if ScreenReaderSystemActive then
+      GetScreenReader.Speak('Test Moved Up');
+  end;
+end;
+
+procedure TfrmLabTestGroups.cmdDownClick(Sender: TObject);
+var
+  newindex: integer;
+  templine: string;
+begin
+  if cmdDown.Enabled then begin
+    newindex := lstList.ItemIndex + 1;
+    templine := lstList.Items[lstList.ItemIndex + 1];
+    lstList.Items[lstList.ItemIndex + 1] := lstList.Items[lstList.ItemIndex];
+    lstList.Items[lstList.ItemIndex] := templine;
+    lstList.ItemIndex := newindex;
+    lstListClick(self);
+    if ScreenReaderSystemActive then
+      GetScreenReader.Speak('Test Moved Down');
+  end;
+end;
+
+procedure TfrmLabTestGroups.lstListClick(Sender: TObject);
+begin
+  cmdUp.Enabled := not (lstList.ItemIndex = 0);
+  pnlUpButton.TabStop := not (lstList.ItemIndex = 0);
+  cmdDown.Enabled := not (lstList.ItemIndex = lstList.Items.Count - 1);
+  pnlDownButton.TabStop := not (lstList.ItemIndex = lstList.Items.Count - 1);
+  if lstList.Items.Count = 0 then
+  begin
+    cmdUp.Enabled := false;
+    pnlUpButton.TabStop := false;
+    cmdDown.Enabled := false;
+    pnlDownButton.TabStop := false;
+    cmdClear.Enabled := false;
+    cmdRemove.Enabled := false;
+  end
+  else
+  begin
+    cmdClear.Enabled := true;
+    cmdRemove.Enabled := true;
+  end;
+  TestGroupEnable;
+end;
+
+procedure TfrmLabTestGroups.cboUsersNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboUsers.ForDataUse(Users(StartFrom, Direction));
+end;
+
+procedure TfrmLabTestGroups.cboSpecimenNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboSpecimen.ForDataUse(Specimens(StartFrom, Direction));
+end;
+
+procedure TfrmLabTestGroups.cboUsersClick(Sender: TObject);
+begin
+  FastAssign(TestGroups(cboUsers.ItemIEN), lstTestGroups.Items);
+  TestGroupEnable;
+end;
+
+procedure TfrmLabTestGroups.AddTests(tests: TStrings);
+var
+  i, j, textindex: integer;
+  ok: boolean;
+begin
+  textindex := lstList.Items.Count;
+  for i := 0 to tests.Count - 1 do
+  begin
+    ok := true;
+    for j := 0 to lstList.Items.Count - 1 do
+      if lstList.Items[j] = tests[i] then
+      begin
+        ok := false;
+        textindex := j;
+      end;
+    if ok then
+    begin
+      lstList.Items.Add(tests[i]);
+      textindex := lstList.Items.Count - 1;
+    end;
+  end;
+  lstList.ItemIndex := textindex;
+  lstListClick(self);
+end;
+
+procedure TfrmLabTestGroups.lstTestGroupsChange(Sender: TObject);
+begin
+  if lstTestGroups.ItemIEN > 0 then
+  begin
+    AddTests(ATestGroup(lstTestGroups.ItemIEN, cboUsers.ItemIEN));
+  end;
+end;
+
+procedure TfrmLabTestGroups.TestGroupEnable;
+begin
+  cmdAdd.Enabled := (lstList.Items.Count > 0) and (lstList.Items.Count < 8);
+  cmdDelete.Enabled := (cboUsers.ItemIEN = User.DUZ) and (lstTestGroups.ItemIndex > -1);
+  cmdReplace.Enabled := cmdAdd.Enabled and cmdDelete.Enabled;
+end;
+
+procedure TfrmLabTestGroups.cmdReplaceClick(Sender: TObject);
+var
+  text: string;
+  i: integer;
+begin
+  text := 'Do you want to REPLACE your test group -' + #13 + '  ';
+  text := text + lstTestGroups.DisplayText[lstTestGroups.ItemIndex] + #13;
+  text := text + ' with:' + #13 + '  ';
+  for i := 0 to lstList.Items.Count -1 do
+    text := text + lstList.DisplayText[i] + #13 + '  ';
+  if InfoBox(text,'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+    UTGReplace(lstList.Items, lstTestGroups.ItemIEN); //Show508Message('Replace'); //Replace
+    if ScreenReaderSystemActive then
+      GetScreenReader.Speak('test group replaced');
+  end;
+  cboUsersClick(self);
+  lstTestGroups.SetFocus;  
+end;
+
+procedure TfrmLabTestGroups.cmdAddClick(Sender: TObject);
+var
+  text: string;
+  i: integer;
+begin
+  text := 'Do you wish to create a NEW test group with these tests: ' + #13 + '  ';
+  for i := 0 to lstList.Items.Count -1 do
+    text := text + lstList.DisplayText[i] + #13 + '  ';
+  if InfoBox(text,'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+    UTGAdd(lstList.Items);
+    if ScreenReaderSystemActive then
+      GetScreenReader.Speak('New test group created');
+    cboUsers.InitLongList(User.Name);
+    for i := 0 to cboUsers.Items.Count - 1 do
+      if StrToInt64Def(Piece(cboUsers.Items[i], '^', 1), 0) = User.DUZ then
+      begin
+        cboUsers.ItemIndex := i;
+        break;
+      end;
+  end;
+  if cboUsers.ItemIndex > -1 then cboUsersClick(self);
+  lstTestGroups.SetFocus;  
+end;
+
+procedure TfrmLabTestGroups.cmdDeleteClick(Sender: TObject);
+var
+  text: string;
+  i: integer;
+begin
+  text := 'Do you wish to DELETE your test group:' + #13 + '  ';
+  text := text + lstTestGroups.DisplayText[lstTestGroups.ItemIndex] + #13 + '  ';
+  if InfoBox(text,'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+  begin
+    UTGDelete(lstTestGroups.ItemIEN);
+    if ScreenReaderSystemActive then
+      GetScreenReader.Speak('Test group deleted');
+    cboUsers.Text := '';
+    lstTestGroups.Clear;
+    cboUsers.InitLongList(User.Name);
+    for i := 0 to cboUsers.Items.Count - 1 do
+      if StrToInt64Def(Piece(cboUsers.Items[i], '^', 1), 0) = User.DUZ then
+      begin
+        cboUsers.ItemIndex := i;
+        break;
+      end;
+  end;
+  if cboUsers.ItemIndex > -1 then cboUsersClick(self);
+  lstTestGroups.SetFocus;
+end;
+
+procedure TfrmLabTestGroups.cboTestsChange(Sender: TObject);
+begin
+  cmdAddTest.Enabled := cboTests.ItemIndex > -1;
+end;
+
+procedure TfrmLabTestGroups.cboTestsEnter(Sender: TObject);
+begin
+  cmdAddTest.Default := true;
+end;
+
+procedure TfrmLabTestGroups.cboTestsExit(Sender: TObject);
+begin
+  cmdAddTest.Default := false;
+end;
+
+procedure TfrmLabTestGroups.cmdAddTestClick(Sender: TObject);
+begin
+  AddTests(ATest(cboTests.ItemIEN));
+end;
+
+procedure TfrmLabTestGroups.pnlUpButtonEnter(Sender: TObject);
+begin
+  pnlUpButton.BevelOuter := bvLowered;
+end;
+
+procedure TfrmLabTestGroups.pnlUpButtonExit(Sender: TObject);
+begin
+  pnlUpButton.BevelOuter := bvNone;
+end;
+
+procedure TfrmLabTestGroups.pnlDownButtonEnter(Sender: TObject);
+begin
+  pnlDownButton.BevelOuter := bvLowered;
+end;
+
+procedure TfrmLabTestGroups.pnlDownButtonExit(Sender: TObject);
+begin
+  pnlDownButton.BevelOuter := bvNone;
+end;
+
+procedure TfrmLabTestGroups.pnlUpButtonResize(Sender: TObject);
+begin
+  cmdUp.Width := pnlUpButton.Width;
+end;
+
+procedure TfrmLabTestGroups.pnlDownButtonResize(Sender: TObject);
+begin
+  cmdDown.Width := pnlDownButton.Width;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTests.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTests.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTests.dfm	(revision 1676)
@@ -0,0 +1,159 @@
+inherited frmLabTests: TfrmLabTests
+  Left = 288
+  Top = 115
+  Caption = 'Select Lab Tests'
+  ClientHeight = 281
+  ClientWidth = 452
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlLabTests: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 452
+    Height = 281
+    Align = alClient
+    TabOrder = 0
+    object lblTests: TLabel
+      Left = 12
+      Top = 12
+      Width = 79
+      Height = 13
+      Caption = 'Laboratory Tests'
+    end
+    object lblList: TLabel
+      Left = 276
+      Top = 28
+      Width = 100
+      Height = 13
+      Caption = 'Tests to be displayed'
+    end
+    object cmdOK: TButton
+      Left = 270
+      Top = 247
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      TabOrder = 5
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 362
+      Top = 246
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 6
+    end
+    object lstList: TORListBox
+      Left = 274
+      Top = 52
+      Width = 160
+      Height = 179
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = lstListClick
+      Caption = 'Tests to be displayed'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object cboTests: TORComboBox
+      Left = 10
+      Top = 34
+      Width = 160
+      Height = 200
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Laboratory Tests'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnChange = cboTestsChange
+      OnDblClick = cmdAddClick
+      OnEnter = cboTestsEnter
+      OnExit = cboTestsExit
+      OnNeedData = cboTestsNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdRemove: TButton
+      Left = 186
+      Top = 144
+      Width = 72
+      Height = 21
+      Caption = 'Remove One'
+      Enabled = False
+      TabOrder = 3
+      OnClick = cmdRemoveClick
+    end
+    object cmdClear: TButton
+      Left = 186
+      Top = 116
+      Width = 72
+      Height = 21
+      Caption = 'Remove All'
+      Enabled = False
+      TabOrder = 2
+      OnClick = cmdClearClick
+    end
+    object cmdAdd: TButton
+      Left = 186
+      Top = 32
+      Width = 72
+      Height = 21
+      Caption = 'Add'
+      Enabled = False
+      TabOrder = 1
+      OnClick = cmdAddClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlLabTests'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstList'
+        'Status = stsDefault')
+      (
+        'Component = cboTests'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = cmdClear'
+        'Status = stsDefault')
+      (
+        'Component = cmdAdd'
+        'Status = stsDefault')
+      (
+        'Component = frmLabTests'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTests.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTests.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabTests.pas	(revision 1676)
@@ -0,0 +1,166 @@
+unit fLabTests;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmLabTests = class(TfrmBase508Form)
+    pnlLabTests: TORAutoPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lstList: TORListBox;
+    cboTests: TORComboBox;
+    cmdRemove: TButton;
+    cmdClear: TButton;
+    lblTests: TLabel;
+    lblList: TLabel;
+    cmdAdd: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cboTestsNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdClearClick(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure lstListClick(Sender: TObject);
+    procedure cboTestsChange(Sender: TObject);
+    procedure cboTestsEnter(Sender: TObject);
+    procedure cboTestsExit(Sender: TObject);
+    procedure cmdAddClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure SelectTests(FontSize: Integer);
+
+implementation
+
+uses fLabs, ORFn, rLabs, rMisc, VAUtils;
+
+{$R *.DFM}
+
+procedure SelectTests(FontSize: Integer);
+var
+  frmLabTests: TfrmLabTests;
+  W, H: integer;
+begin
+  frmLabTests := TfrmLabTests.Create(Application);
+  try
+    with frmLabTests do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth := W; pnlLabTests.Width := W;
+      ClientHeight := H; pnlLabTests.Height := H;
+      SetFormPosition(frmLabTests);
+      FastAssign(frmLabs.lstTests.Items, lstList.Items);
+      if lstList.Items.Count > 0 then lstList.ItemIndex := 0;
+      lstListClick(frmLabTests);
+      ShowModal;
+    end;
+  finally
+    frmLabTests.Release;
+  end;
+end;
+
+procedure TfrmLabTests.FormCreate(Sender: TObject);
+begin
+  RedrawSuspend(cboTests.Handle);
+  cboTests.InitLongList('');
+  RedrawActivate(cboTests.Handle);
+end;
+
+procedure TfrmLabTests.cboTestsNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+  cboTests.ForDataUse(AllTests(StartFrom, Direction));
+end;
+
+procedure TfrmLabTests.cmdOKClick(Sender: TObject);
+begin
+  if lstList.Items.Count = 0 then
+    ShowMsg('No tests were selected.')
+  else
+  begin
+    FastAssign(lstList.Items, frmLabs.lstTests.Items);
+    Close;
+  end;
+end;
+
+procedure TfrmLabTests.cmdClearClick(Sender: TObject);
+begin
+  lstList.Clear;
+  lstListClick(self);
+end;
+
+procedure TfrmLabTests.cmdRemoveClick(Sender: TObject);
+var
+  newindex: integer;
+begin
+  if lstList.Items.Count > 0 then
+  begin
+    if lstList.ItemIndex = (lstList.Items.Count -1 ) then
+      newindex := lstList.ItemIndex - 1
+    else
+      newindex := lstList.ItemIndex;
+    lstList.Items.Delete(lstList.ItemIndex);
+    if lstList.Items.Count > 0 then lstList.ItemIndex := newindex;
+  end;
+  lstListClick(self);
+end;
+
+procedure TfrmLabTests.lstListClick(Sender: TObject);
+begin
+  if lstList.Items.Count = 0 then
+  begin
+    cmdClear.Enabled := false;
+    cmdRemove.Enabled := false;
+  end
+  else
+  begin
+    cmdClear.Enabled := true;
+    cmdRemove.Enabled := true;
+  end;
+end;
+
+procedure TfrmLabTests.cboTestsChange(Sender: TObject);
+begin
+  cmdAdd.Enabled := cboTests.ItemIndex > -1;
+end;
+
+procedure TfrmLabTests.cboTestsEnter(Sender: TObject);
+begin
+  cmdAdd.Default := true;
+end;
+
+procedure TfrmLabTests.cboTestsExit(Sender: TObject);
+begin
+  cmdAdd.Default := false;
+end;
+
+procedure TfrmLabTests.cmdAddClick(Sender: TObject);
+var
+  i, textindex: integer;
+begin
+  textindex := lstList.Items.Count;
+  for i := 0 to lstList.Items.Count -1 do
+    if lstList.Items[i] = cboTests.Items[cboTests.ItemIndex] then textindex := i;
+  if textindex = lstList.Items.Count then lstList.Items.Add(cboTests.Items[cboTests.ItemIndex]);
+  lstList.ItemIndex := textindex;
+  lstListClick(self);
+end;
+
+procedure TfrmLabTests.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  SaveUserBounds(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabs.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabs.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabs.dfm	(revision 1676)
@@ -0,0 +1,1156 @@
+inherited frmLabs: TfrmLabs
+  Left = 628
+  Top = 237
+  HelpContext = 8000
+  Caption = 'Laboratory Results Page'
+  ClientHeight = 701
+  HelpFile = 'qnoback'
+  OnDestroy = FormDestroy
+  ExplicitLeft = 628
+  ExplicitTop = 237
+  ExplicitWidth = 648
+  ExplicitHeight = 728
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 696
+    ExplicitTop = 355
+  end
+  inherited sptHorz: TSplitter
+    Height = 696
+    ExplicitHeight = 355
+  end
+  inherited pnlLeft: TPanel
+    Height = 696
+    ExplicitHeight = 696
+    object Splitter1: TSplitter
+      Left = 0
+      Top = 436
+      Width = 97
+      Height = 10
+      Cursor = crVSplit
+      Align = alBottom
+      Color = clBtnFace
+      ParentColor = False
+      OnCanResize = Splitter1CanResize
+      ExplicitLeft = -1
+      ExplicitTop = 263
+    end
+    object pnlLefTop: TPanel
+      Left = 0
+      Top = 0
+      Width = 97
+      Height = 436
+      Align = alClient
+      BevelOuter = bvNone
+      Constraints.MinWidth = 30
+      TabOrder = 0
+      object lblReports: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 97
+        Height = 19
+        Align = alTop
+        Caption = 'Lab Results'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+        ExplicitLeft = -41
+        ExplicitTop = 54
+      end
+      object tvReports: TORTreeView
+        Left = 0
+        Top = 19
+        Width = 97
+        Height = 417
+        Align = alClient
+        HideSelection = False
+        Indent = 18
+        ReadOnly = True
+        TabOrder = 0
+        OnClick = tvReportsClick
+        OnCollapsing = tvReportsCollapsing
+        OnExpanding = tvReportsExpanding
+        OnKeyDown = tvReportsKeyDown
+        Caption = 'Available Reports'
+        NodePiece = 0
+      end
+    end
+    object pnlLeftBottom: TPanel
+      Left = 0
+      Top = 446
+      Width = 97
+      Height = 250
+      Align = alBottom
+      TabOrder = 1
+      object lblQualifier: TOROffsetLabel
+        Left = 1
+        Top = 1
+        Width = 95
+        Height = 21
+        Align = alTop
+        HorzOffset = 3
+        Transparent = True
+        VertOffset = 4
+        Visible = False
+        WordWrap = False
+        ExplicitWidth = 98
+      end
+      object lblHeaders: TOROffsetLabel
+        Left = 1
+        Top = 120
+        Width = 95
+        Height = 17
+        Align = alTop
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+        ExplicitTop = 185
+        ExplicitWidth = 97
+      end
+      object lblDates: TOROffsetLabel
+        Left = 1
+        Top = 105
+        Width = 95
+        Height = 15
+        Align = alTop
+        Caption = 'Date Range'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+        ExplicitLeft = 0
+        ExplicitTop = 69
+      end
+      object lstQualifier: TORListBox
+        Left = 1
+        Top = 137
+        Width = 95
+        Height = 112
+        Align = alClient
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        Visible = False
+        OnClick = lstQualifierClick
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3'
+        TabPositions = '10'
+      end
+      object lstHeaders: TORListBox
+        Left = 1
+        Top = 55
+        Width = 95
+        Height = 50
+        Align = alTop
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        Visible = False
+        OnClick = lstHeadersClick
+        Caption = 'Headings'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object lstDates: TORListBox
+        Left = 1
+        Top = 137
+        Width = 95
+        Height = 112
+        Align = alClient
+        ItemHeight = 13
+        Items.Strings = (
+          'S^Date Range...'
+          '1^Today'
+          '8^One Week'
+          '15^Two Weeks'
+          '31^One Month'
+          '183^Six Months'
+          '366^One Year'
+          '732^Two Years'
+          '50000^All Results')
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 3
+        Visible = False
+        OnClick = lstDatesClick
+        Caption = 'Date Range'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object pnlOtherTests: TORAutoPanel
+        Left = 1
+        Top = 22
+        Width = 95
+        Height = 33
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 5
+        object bvlOtherTests: TBevel
+          Left = 3
+          Top = 31
+          Width = 90
+          Height = 2
+        end
+        object cmdOtherTests: TButton
+          Left = 11
+          Top = 4
+          Width = 75
+          Height = 25
+          Caption = 'Other Tests'
+          TabOrder = 0
+          OnClick = cmdOtherTestsClick
+        end
+      end
+    end
+  end
+  inherited pnlRight: TPanel
+    Height = 696
+    OnResize = pnlRightResize
+    ExplicitHeight = 696
+    object sptHorzRight: TSplitter
+      Left = 0
+      Top = 299
+      Width = 539
+      Height = 4
+      Cursor = crVSplit
+      Align = alTop
+      Visible = False
+      OnCanResize = sptHorzRightCanResize
+      OnMoved = sptHorzRightMoved
+      ExplicitTop = 288
+    end
+    object pnlRightBottom: TPanel
+      Left = 0
+      Top = 303
+      Width = 539
+      Height = 373
+      Align = alClient
+      TabOrder = 0
+      object Memo1: TMemo
+        Left = 1
+        Top = 1
+        Width = 537
+        Height = 19
+        Align = alTop
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Lines.Strings = (
+          '')
+        ParentFont = False
+        ScrollBars = ssVertical
+        TabOrder = 0
+        Visible = False
+        WantTabs = True
+        WordWrap = False
+        OnKeyUp = Memo1KeyUp
+      end
+      object memLab: TRichEdit
+        Left = 1
+        Top = 20
+        Width = 537
+        Height = 352
+        Align = alClient
+        Color = clCream
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        PopupMenu = PopupMenu3
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 1
+        Visible = False
+        WantReturns = False
+        WordWrap = False
+      end
+    end
+    object pnlRightTop: TPanel
+      Left = 0
+      Top = 25
+      Width = 539
+      Height = 274
+      Align = alTop
+      TabOrder = 1
+      object bvlHeader: TBevel
+        Left = 1
+        Top = 61
+        Width = 537
+        Height = 1
+        Align = alTop
+        ExplicitLeft = -8
+        ExplicitTop = 72
+        ExplicitWidth = 539
+      end
+      object pnlHeader: TORAutoPanel
+        Left = 1
+        Top = 1
+        Width = 537
+        Height = 60
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object lblDateFloat: TLabel
+          Left = 396
+          Top = 4
+          Width = 56
+          Height = 13
+          Caption = 'lblDateFloat'
+          Visible = False
+        end
+        object pnlWorksheet: TORAutoPanel
+          Left = 0
+          Top = 0
+          Width = 537
+          Height = 60
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 1
+          object chkValues: TCheckBox
+            Left = 404
+            Top = 39
+            Width = 93
+            Height = 17
+            Caption = 'Values'
+            Enabled = False
+            TabOrder = 5
+            OnClick = chkValuesClick
+          end
+          object chk3D: TCheckBox
+            Left = 329
+            Top = 39
+            Width = 56
+            Height = 17
+            Caption = '3D'
+            Enabled = False
+            TabOrder = 4
+            OnClick = chk3DClick
+          end
+          object ragHorV: TRadioGroup
+            Left = 12
+            Top = 0
+            Width = 213
+            Height = 36
+            Caption = 'Table Format '
+            Columns = 2
+            ItemIndex = 0
+            Items.Strings = (
+              '&Horizontal'
+              '&Vertical')
+            TabOrder = 0
+            OnClick = ragHorVClick
+          end
+          object chkAbnormals: TCheckBox
+            Left = 12
+            Top = 39
+            Width = 221
+            Height = 17
+            Caption = 'Abnormal Results Only'
+            TabOrder = 2
+            OnClick = ragHorVClick
+          end
+          object ragCorG: TRadioGroup
+            Left = 252
+            Top = 0
+            Width = 213
+            Height = 36
+            Caption = 'Other Formats '
+            Columns = 2
+            ItemIndex = 0
+            Items.Strings = (
+              '&Comments'
+              '&Graph')
+            TabOrder = 1
+            OnClick = ragCorGClick
+          end
+          object chkZoom: TCheckBox
+            Left = 253
+            Top = 39
+            Width = 68
+            Height = 17
+            Caption = 'Zoom'
+            Enabled = False
+            TabOrder = 3
+            OnClick = chkZoomClick
+          end
+        end
+        object pnlGraph: TORAutoPanel
+          Left = 0
+          Top = 0
+          Width = 537
+          Height = 60
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 2
+          object lblGraphInfo: TLabel
+            Left = 0
+            Top = 47
+            Width = 537
+            Height = 13
+            Align = alBottom
+            Caption = 
+              'To Zoom, hold down the mouse button while dragging an area to be' +
+              ' enlarged.'
+            ExplicitWidth = 367
+          end
+          object chkGraph3D: TCheckBox
+            Left = 162
+            Top = 13
+            Width = 61
+            Height = 17
+            Caption = '3D'
+            TabOrder = 1
+            OnClick = chkGraph3DClick
+          end
+          object chkGraphValues: TCheckBox
+            Left = 276
+            Top = 13
+            Width = 101
+            Height = 17
+            Caption = 'Values'
+            TabOrder = 2
+            OnClick = chkGraphValuesClick
+          end
+          object chkGraphZoom: TCheckBox
+            Left = 48
+            Top = 13
+            Width = 97
+            Height = 17
+            Caption = 'Zoom'
+            TabOrder = 0
+            OnClick = chkGraphZoomClick
+          end
+        end
+        object pnlButtons: TORAutoPanel
+          Left = 0
+          Top = 0
+          Width = 537
+          Height = 60
+          Align = alClient
+          BevelOuter = bvNone
+          TabOrder = 0
+          object lblOld: TOROffsetLabel
+            Left = 4
+            Top = 6
+            Width = 41
+            Height = 15
+            Caption = 'Oldest'
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 2
+            WordWrap = False
+          end
+          object lblPrev: TOROffsetLabel
+            Left = 48
+            Top = 6
+            Width = 49
+            Height = 15
+            Caption = 'Previous'
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 2
+            WordWrap = False
+          end
+          object lblNext: TOROffsetLabel
+            Left = 246
+            Top = 6
+            Width = 31
+            Height = 15
+            Caption = 'Next'
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 2
+            WordWrap = False
+          end
+          object lblRecent: TOROffsetLabel
+            Left = 287
+            Top = 6
+            Width = 46
+            Height = 15
+            Caption = 'Newest'
+            HorzOffset = 2
+            Transparent = False
+            VertOffset = 2
+            WordWrap = False
+          end
+          object lblMostRecent: TLabel
+            Left = 368
+            Top = 29
+            Width = 144
+            Height = 13
+            Caption = 'Most Recent Lab Results'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            ParentFont = False
+          end
+          object lblCollection: TLabel
+            Left = 100
+            Top = 8
+            Width = 44
+            Height = 13
+            Alignment = taCenter
+            Caption = 'Collecte&d'
+            FocusControl = lblDate
+          end
+          object lblDate: TVA508StaticText
+            Name = 'lblDate'
+            Left = 95
+            Top = 29
+            Width = 7
+            Height = 15
+            Alignment = taCenter
+            AutoSize = True
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clWindowText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            ParentFont = False
+            TabOrder = 0
+            OnEnter = lblDateEnter
+            ShowAccelChar = True
+          end
+          object cmdNext: TButton
+            Left = 238
+            Top = 23
+            Width = 45
+            Height = 25
+            Caption = '>'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clBtnText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            ParentFont = False
+            TabOrder = 3
+            OnClick = cmdNextClick
+          end
+          object cmdPrev: TButton
+            Left = 49
+            Top = 23
+            Width = 45
+            Height = 25
+            Caption = '<'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clBtnText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            ParentFont = False
+            TabOrder = 2
+            OnClick = cmdPrevClick
+          end
+          object cmdRecent: TButton
+            Left = 283
+            Top = 23
+            Width = 45
+            Height = 25
+            Caption = '>>'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clBtnText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            ParentFont = False
+            TabOrder = 4
+            OnClick = cmdRecentClick
+          end
+          object cmdOld: TButton
+            Left = 4
+            Top = 23
+            Width = 45
+            Height = 25
+            Caption = '<<'
+            Font.Charset = DEFAULT_CHARSET
+            Font.Color = clBtnText
+            Font.Height = -11
+            Font.Name = 'MS Sans Serif'
+            Font.Style = [fsBold]
+            ParentFont = False
+            TabOrder = 1
+            OnClick = cmdOldClick
+          end
+        end
+      end
+      object TabControl1: TTabControl
+        Left = 1
+        Top = 62
+        Width = 537
+        Height = 16
+        Align = alTop
+        HotTrack = True
+        Style = tsButtons
+        TabHeight = 16
+        TabOrder = 1
+        Visible = False
+        OnChange = TabControl1Change
+      end
+      object grdLab: TCaptionStringGrid
+        Left = 1
+        Top = 78
+        Width = 537
+        Height = 33
+        Align = alTop
+        Color = clCream
+        DefaultRowHeight = 15
+        RowCount = 2
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing]
+        ParentFont = False
+        TabOrder = 2
+        Visible = False
+        Caption = 'Laboratory Results'
+        ColWidths = (
+          64
+          64
+          64
+          64
+          64)
+        RowHeights = (
+          15
+          15)
+      end
+      object pnlChart: TPanel
+        Left = 1
+        Top = 111
+        Width = 537
+        Height = 85
+        Align = alTop
+        BevelOuter = bvNone
+        Caption = 'no results to graph'
+        TabOrder = 3
+        Visible = False
+        object lblGraph: TLabel
+          Left = 0
+          Top = 72
+          Width = 370
+          Height = 13
+          Alignment = taCenter
+          Caption = 
+            'Results may be available, but cannot be graphed. Please try an a' +
+            'lternate view.'
+        end
+        object lstTestGraph: TORListBox
+          Left = 0
+          Top = 0
+          Width = 97
+          Height = 85
+          Align = alLeft
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = lstTestGraphClick
+          Caption = 'Tests Graphed'
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2'
+        end
+        object chtChart: TChart
+          Left = 97
+          Top = 0
+          Width = 440
+          Height = 85
+          AllowPanning = pmNone
+          AllowZoom = False
+          BackWall.Brush.Color = clWhite
+          BackWall.Brush.Style = bsClear
+          Title.Text.Strings = (
+            'test name')
+          Title.Visible = False
+          OnClickLegend = chtChartClickLegend
+          OnClickSeries = chtChartClickSeries
+          OnUndoZoom = chtChartUndoZoom
+          LeftAxis.Title.Caption = 'units'
+          Legend.Alignment = laTop
+          Legend.Inverted = True
+          Legend.ShadowSize = 2
+          View3D = False
+          Align = alClient
+          BevelOuter = bvNone
+          Color = clSilver
+          PopupMenu = popChart
+          TabOrder = 1
+          OnMouseDown = chtChartMouseDown
+          object serHigh: TLineSeries
+            Marks.ArrowLength = 8
+            Marks.Visible = False
+            SeriesColor = clRed
+            Title = 'Ref High'
+            LinePen.Style = psDash
+            Pointer.InflateMargins = True
+            Pointer.Style = psRectangle
+            Pointer.Visible = False
+            XValues.DateTime = True
+            XValues.Name = 'X'
+            XValues.Multiplier = 1.000000000000000000
+            XValues.Order = loAscending
+            YValues.DateTime = False
+            YValues.Name = 'Y'
+            YValues.Multiplier = 1.000000000000000000
+            YValues.Order = loNone
+          end
+          object serLow: TLineSeries
+            Marks.ArrowLength = 8
+            Marks.Visible = False
+            SeriesColor = clRed
+            Title = 'Ref Low'
+            LinePen.Style = psDash
+            Pointer.InflateMargins = True
+            Pointer.Style = psRectangle
+            Pointer.Visible = False
+            XValues.DateTime = False
+            XValues.Name = 'X'
+            XValues.Multiplier = 1.000000000000000000
+            XValues.Order = loAscending
+            YValues.DateTime = False
+            YValues.Name = 'Y'
+            YValues.Multiplier = 1.000000000000000000
+            YValues.Order = loNone
+          end
+          object serTest: TLineSeries
+            Marks.ArrowLength = 8
+            Marks.Visible = False
+            SeriesColor = clBlue
+            Title = 'Lab Test'
+            Pointer.InflateMargins = True
+            Pointer.Style = psCircle
+            Pointer.Visible = True
+            XValues.DateTime = True
+            XValues.Name = 'X'
+            XValues.Multiplier = 1.000000000000000000
+            XValues.Order = loAscending
+            YValues.DateTime = False
+            YValues.Name = 'Y'
+            YValues.Multiplier = 1.000000000000000000
+            YValues.Order = loNone
+          end
+        end
+      end
+      object lvReports: TCaptionListView
+        Left = 1
+        Top = 196
+        Width = 537
+        Height = 77
+        Hint = 'To sort, click on column headers|'
+        Align = alClient
+        Columns = <>
+        Constraints.MinHeight = 50
+        HideSelection = False
+        MultiSelect = True
+        ReadOnly = True
+        RowSelect = True
+        ParentShowHint = False
+        PopupMenu = PopupMenu2
+        ShowHint = True
+        TabOrder = 4
+        ViewStyle = vsReport
+        OnColumnClick = lvReportsColumnClick
+        OnCompare = lvReportsCompare
+        OnKeyUp = lvReportsKeyUp
+        OnSelectItem = lvReportsSelectItem
+      end
+    end
+    object pnlRightTopHeader: TPanel
+      Left = 0
+      Top = 0
+      Width = 539
+      Height = 25
+      Align = alTop
+      TabOrder = 2
+      object lblHeading: TOROffsetLabel
+        Left = 1
+        Top = 1
+        Width = 94
+        Height = 23
+        Align = alLeft
+        Caption = 'Laboratory Results'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+        ExplicitHeight = 39
+      end
+      object lblTitle: TOROffsetLabel
+        Left = 95
+        Top = 1
+        Width = 346
+        Height = 23
+        Align = alClient
+        HorzOffset = 3
+        Transparent = True
+        VertOffset = 6
+        WordWrap = False
+        ExplicitLeft = 80
+        ExplicitWidth = 369
+        ExplicitHeight = 39
+      end
+      object chkMaxFreq: TCheckBox
+        Left = 441
+        Top = 1
+        Width = 97
+        Height = 23
+        Align = alRight
+        Caption = 'Max/Site OFF'
+        TabOrder = 0
+        Visible = False
+        OnClick = chkMaxFreqClick
+      end
+    end
+    object pnlFooter: TORAutoPanel
+      Left = 0
+      Top = 676
+      Width = 539
+      Height = 20
+      Align = alBottom
+      TabOrder = 3
+      object lblSpecimen: TLabel
+        Left = 4
+        Top = 28
+        Width = 57
+        Height = 13
+        Caption = 'lblSpecimen'
+        Visible = False
+      end
+      object lblSingleTest: TLabel
+        Left = 88
+        Top = 28
+        Width = 60
+        Height = 13
+        Caption = 'lblSingleTest'
+        Visible = False
+      end
+      object lblFooter: TOROffsetLabel
+        Left = 1
+        Top = 1
+        Width = 537
+        Height = 25
+        Align = alTop
+        Caption = 
+          '  KEY: "L" = Abnormal Low, "H" = Abnormal High, "*" = Critical V' +
+          'alue'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+        ExplicitTop = 6
+        ExplicitWidth = 535
+      end
+      object lstTests: TORListBox
+        Left = 1
+        Top = 26
+        Width = 537
+        Height = 17
+        Align = alTop
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        Visible = False
+        ItemTipColor = clWindow
+        LongList = False
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmLabs'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightBottom'
+        'Status = stsDefault')
+      (
+        'Component = Memo1'
+        'Status = stsDefault')
+      (
+        'Component = memLab'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlHeader'
+        'Status = stsDefault')
+      (
+        'Component = pnlWorksheet'
+        'Status = stsDefault')
+      (
+        'Component = chkValues'
+        'Status = stsDefault')
+      (
+        'Component = chk3D'
+        'Status = stsDefault')
+      (
+        'Component = ragHorV'
+        'Status = stsDefault')
+      (
+        'Component = chkAbnormals'
+        'Status = stsDefault')
+      (
+        'Component = ragCorG'
+        'Status = stsDefault')
+      (
+        'Component = chkZoom'
+        'Status = stsDefault')
+      (
+        'Component = pnlGraph'
+        'Status = stsDefault')
+      (
+        'Component = chkGraph3D'
+        'Status = stsDefault')
+      (
+        'Component = chkGraphValues'
+        'Status = stsDefault')
+      (
+        'Component = chkGraphZoom'
+        'Status = stsDefault')
+      (
+        'Component = pnlButtons'
+        'Status = stsDefault')
+      (
+        'Component = lblDate'
+        'Text = Date Collected'
+        'Status = stsOK')
+      (
+        'Component = cmdNext'
+        'Text = Next'
+        'Status = stsOK')
+      (
+        'Component = cmdPrev'
+        'Text = Previous'
+        'Status = stsOK')
+      (
+        'Component = cmdRecent'
+        'Text = Newest'
+        'Status = stsOK')
+      (
+        'Component = cmdOld'
+        'Text = Oldest'
+        'Status = stsOK')
+      (
+        'Component = TabControl1'
+        'Status = stsDefault')
+      (
+        'Component = grdLab'
+        'Status = stsDefault')
+      (
+        'Component = pnlChart'
+        'Status = stsDefault')
+      (
+        'Component = lstTestGraph'
+        'Status = stsDefault')
+      (
+        'Component = chtChart'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightTopHeader'
+        'Status = stsDefault')
+      (
+        'Component = pnlFooter'
+        'Status = stsDefault')
+      (
+        'Component = lstTests'
+        'Status = stsDefault')
+      (
+        'Component = lvReports'
+        'Status = stsDefault')
+      (
+        'Component = pnlLefTop'
+        'Status = stsDefault')
+      (
+        'Component = tvReports'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeftBottom'
+        'Status = stsDefault')
+      (
+        'Component = lstQualifier'
+        'Status = stsDefault')
+      (
+        'Component = lstHeaders'
+        'Status = stsDefault')
+      (
+        'Component = lstDates'
+        'Status = stsDefault')
+      (
+        'Component = pnlOtherTests'
+        'Status = stsDefault')
+      (
+        'Component = cmdOtherTests'
+        'Status = stsDefault')
+      (
+        'Component = chkMaxFreq'
+        'Status = stsDefault'))
+  end
+  object PopupMenu1: TPopupMenu
+    OnPopup = PopupMenu1Popup
+    Left = 5
+    Top = 280
+    object GotoTop1: TMenuItem
+      Caption = 'Go to Top'
+      Enabled = False
+      OnClick = GotoTop1Click
+    end
+    object GotoBottom1: TMenuItem
+      Caption = 'Go to Bottom'
+      Enabled = False
+      OnClick = GotoBottom1Click
+    end
+    object FreezeText1: TMenuItem
+      Caption = 'Freeze Text'
+      Enabled = False
+      OnClick = FreezeText1Click
+    end
+    object UnfreezeText1: TMenuItem
+      Caption = 'Un-freeze Text'
+      Enabled = False
+      OnClick = UnfreezeText1Click
+    end
+  end
+  object popChart: TPopupMenu
+    OnPopup = popChartPopup
+    Left = 37
+    Top = 277
+    object popValues: TMenuItem
+      Caption = 'Values'
+      OnClick = popValuesClick
+    end
+    object pop3D: TMenuItem
+      Caption = '3D'
+      OnClick = pop3DClick
+    end
+    object popZoom: TMenuItem
+      Caption = 'Zoom Enabled'
+      OnClick = popZoomClick
+    end
+    object popZoomBack: TMenuItem
+      Caption = 'Zoom Back'
+      OnClick = popZoomBackClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object popCopy: TMenuItem
+      Caption = 'Copy'
+      OnClick = popCopyClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object popDetails: TMenuItem
+      Caption = 'Details'
+      OnClick = popDetailsClick
+    end
+    object N3: TMenuItem
+      Caption = '-'
+    end
+    object popPrint: TMenuItem
+      Caption = 'Print'
+      OnClick = popPrintClick
+    end
+  end
+  object calLabRange: TORDateRangeDlg
+    DateOnly = True
+    Instruction = 'Enter a date range -'
+    LabelStart = 'Begin Date'
+    LabelStop = 'End Date'
+    RequireTime = False
+    Format = 'mmm d,yy'
+    Left = 66
+    Top = 280
+  end
+  object dlgWinPrint: TPrintDialog
+    Left = 610
+    Top = 23
+  end
+  object Timer1: TTimer
+    Interval = 100
+    OnTimer = Timer1Timer
+    Left = 253
+    Top = 45
+  end
+  object PopupMenu2: TPopupMenu
+    Left = 603
+    Top = 158
+    object Print1: TMenuItem
+      Caption = 'Print'
+      ShortCut = 16464
+      OnClick = Print1Click
+    end
+    object Copy1: TMenuItem
+      Caption = 'Copy Data From Table'
+      ShortCut = 16451
+      OnClick = Copy1Click
+    end
+    object SelectAll1: TMenuItem
+      Caption = 'Select All From Table'
+      ShortCut = 16449
+      OnClick = SelectAll1Click
+    end
+  end
+  object PopupMenu3: TPopupMenu
+    OnPopup = PopupMenu1Popup
+    Left = 605
+    Top = 200
+    object Print2: TMenuItem
+      Caption = 'Print'
+      ShortCut = 16464
+      OnClick = Print2Click
+    end
+    object Copy2: TMenuItem
+      Caption = 'Copy'
+      ShortCut = 16451
+      OnClick = Copy2Click
+    end
+    object SelectAll2: TMenuItem
+      Caption = 'Select All'
+      ShortCut = 16449
+      OnClick = SelectAll2Click
+    end
+    object MenuItem1: TMenuItem
+      Caption = 'Go to Top'
+      Enabled = False
+      OnClick = GotoTop1Click
+    end
+    object MenuItem2: TMenuItem
+      Caption = 'Go to Bottom'
+      OnClick = GotoBottom1Click
+    end
+    object MenuItem3: TMenuItem
+      Caption = 'Freeze Text'
+      Enabled = False
+      OnClick = FreezeText1Click
+    end
+    object MenuItem4: TMenuItem
+      Caption = 'Un-Freeze Text'
+      Enabled = False
+      OnClick = UnfreezeText1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLabs.pas	(revision 1676)
@@ -0,0 +1,4945 @@
+unit fLabs;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fHSplit, StdCtrls, ExtCtrls, ORCtrls, ComCtrls, Grids, Buttons, fLabTest,
+  fLabTests, fLabTestGroups, ORFn, TeeProcs, TeEngine, Chart, Series, Menus,
+  uConst, ORDtTmRng, OleCtrls, SHDocVw, Variants, StrUtils, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TGrdLab508Manager = class(TVA508ComponentManager)
+  private
+    function GetTextToSpeak(sg: TCaptionStringGrid): String;
+    function ToBlankIfEmpty(aString : String) : String;
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+    function GetItem(Component: TWinControl): TObject; override;
+  end;
+
+  TfrmLabs = class(TfrmHSplit)
+    PopupMenu1: TPopupMenu;
+    GotoTop1: TMenuItem;
+    GotoBottom1: TMenuItem;
+    FreezeText1: TMenuItem;
+    UnfreezeText1: TMenuItem;
+    popChart: TPopupMenu;
+    popValues: TMenuItem;
+    pop3D: TMenuItem;
+    popZoom: TMenuItem;
+    N1: TMenuItem;
+    popCopy: TMenuItem;
+    popZoomBack: TMenuItem;
+    popDetails: TMenuItem;
+    N2: TMenuItem;
+    calLabRange: TORDateRangeDlg;
+    dlgWinPrint: TPrintDialog;
+    N3: TMenuItem;
+    popPrint: TMenuItem;
+    Timer1: TTimer;
+    pnlRightBottom: TPanel;
+    Memo1: TMemo;
+    memLab: TRichEdit;
+    pnlRightTop: TPanel;
+    bvlHeader: TBevel;
+    pnlHeader: TORAutoPanel;
+    lblDateFloat: TLabel;
+    pnlWorksheet: TORAutoPanel;
+    chkValues: TCheckBox;
+    chk3D: TCheckBox;
+    ragHorV: TRadioGroup;
+    chkAbnormals: TCheckBox;
+    ragCorG: TRadioGroup;
+    chkZoom: TCheckBox;
+    pnlGraph: TORAutoPanel;
+    lblGraphInfo: TLabel;
+    chkGraph3D: TCheckBox;
+    chkGraphValues: TCheckBox;
+    chkGraphZoom: TCheckBox;
+    pnlButtons: TORAutoPanel;
+    lblOld: TOROffsetLabel;
+    lblPrev: TOROffsetLabel;
+    lblNext: TOROffsetLabel;
+    lblRecent: TOROffsetLabel;
+    lblMostRecent: TLabel;
+    lblCollection: TLabel;
+    lblDate: TVA508StaticText;
+    cmdNext: TButton;
+    cmdPrev: TButton;
+    cmdRecent: TButton;
+    cmdOld: TButton;
+    TabControl1: TTabControl;
+    grdLab: TCaptionStringGrid;
+    pnlChart: TPanel;
+    lblGraph: TLabel;
+    lstTestGraph: TORListBox;
+    chtChart: TChart;
+    serHigh: TLineSeries;
+    serLow: TLineSeries;
+    serTest: TLineSeries;
+    pnlRightTopHeader: TPanel;
+    lblHeading: TOROffsetLabel;
+    lblTitle: TOROffsetLabel;
+    PopupMenu2: TPopupMenu;
+    Print1: TMenuItem;
+    Copy1: TMenuItem;
+    SelectAll1: TMenuItem;
+    PopupMenu3: TPopupMenu;
+    Print2: TMenuItem;
+    Copy2: TMenuItem;
+    SelectAll2: TMenuItem;
+    MenuItem1: TMenuItem;
+    MenuItem2: TMenuItem;
+    MenuItem3: TMenuItem;
+    MenuItem4: TMenuItem;
+    sptHorzRight: TSplitter;
+    pnlFooter: TORAutoPanel;
+    lblSpecimen: TLabel;
+    lblSingleTest: TLabel;
+    lblFooter: TOROffsetLabel;
+    lstTests: TORListBox;
+    lvReports: TCaptionListView;
+    pnlLefTop: TPanel;
+    lblReports: TOROffsetLabel;
+    tvReports: TORTreeView;
+    pnlLeftBottom: TPanel;
+    lstQualifier: TORListBox;
+    lblQualifier: TOROffsetLabel;
+    lblHeaders: TOROffsetLabel;
+    lstHeaders: TORListBox;
+    lblDates: TOROffsetLabel;
+    lstDates: TORListBox;
+    Splitter1: TSplitter;
+    pnlOtherTests: TORAutoPanel;
+    bvlOtherTests: TBevel;
+    cmdOtherTests: TButton;
+    chkMaxFreq: TCheckBox;
+    procedure FormCreate(Sender: TObject);
+    procedure DisplayHeading(aRanges: string);
+    //procedure lstReportsClick(Sender: TObject);
+    procedure lstHeadersClick(Sender: TObject);
+    procedure lstDatesClick(Sender: TObject);
+    procedure cmdOtherTestsClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cmdNextClick(Sender: TObject);
+    procedure cmdPrevClick(Sender: TObject);
+    procedure cmdRecentClick(Sender: TObject);
+    procedure cmdOldClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure pnlRightResize(Sender: TObject);
+    procedure chkValuesClick(Sender: TObject);
+    procedure chk3DClick(Sender: TObject);
+    procedure ragHorVClick(Sender: TObject);
+    procedure ragCorGClick(Sender: TObject);
+    procedure lstTestGraphClick(Sender: TObject);
+    procedure chkGraphValuesClick(Sender: TObject);
+    procedure chkGraph3DClick(Sender: TObject);
+    procedure chkGraphZoomClick(Sender: TObject);
+    procedure GotoTop1Click(Sender: TObject);
+    procedure GotoBottom1Click(Sender: TObject);
+    procedure FreezeText1Click(Sender: TObject);
+    procedure UnfreezeText1Click(Sender: TObject);
+    procedure PopupMenu1Popup(Sender: TObject);
+    procedure chkZoomClick(Sender: TObject);
+    procedure chtChartUndoZoom(Sender: TObject);
+    procedure popCopyClick(Sender: TObject);
+    procedure popChartPopup(Sender: TObject);
+    procedure popValuesClick(Sender: TObject);
+    procedure pop3DClick(Sender: TObject);
+    procedure popZoomClick(Sender: TObject);
+    procedure popZoomBackClick(Sender: TObject);
+    procedure chtChartMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure chtChartClickSeries(Sender: TCustomChart;
+      Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure chtChartClickLegend(Sender: TCustomChart;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure popDetailsClick(Sender: TObject);
+    procedure popPrintClick(Sender: TObject);
+    procedure BeginEndDates(var ADate1, ADate2: TFMDateTime; var ADaysBack: integer);
+    procedure Timer1Timer(Sender: TObject);
+    procedure TabControl1Change(Sender: TObject);
+    procedure WebBrowser1DocumentComplete(Sender: TObject;
+      const pDisp: IDispatch; var URL: OleVariant);
+    procedure Memo1KeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure UpdateRemoteStatus(aSiteID, aStatus: string);
+    procedure lblDateEnter(Sender: TObject);
+    procedure LoadTreeView;
+    procedure LoadListView(aReportData: TStringList);
+    procedure tvReportsClick(Sender: TObject);
+    procedure lstQualifierClick(Sender: TObject);
+    procedure tvReportsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure tvReportsCollapsing(Sender: TObject; Node: TTreeNode;
+      var AllowCollapse: Boolean);
+    procedure tvReportsExpanding(Sender: TObject; Node: TTreeNode;
+      var AllowExpansion: Boolean);
+    procedure lvReportsKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState); 
+    procedure SelectAll1Click(Sender: TObject);
+    procedure Print1Click(Sender: TObject);
+    procedure Copy1Click(Sender: TObject);
+    procedure Copy2Click(Sender: TObject);
+    procedure Print2Click(Sender: TObject);
+    procedure lvReportsCompare(Sender: TObject; Item1, Item2: TListItem;
+      Data: Integer; var Compare: Integer);
+    procedure lvReportsColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvReportsSelectItem(Sender: TObject; Item: TListItem;
+      Selected: Boolean);
+    procedure sptHorzRightCanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure SelectAll2Click(Sender: TObject);
+    procedure chkMaxFreqClick(Sender: TObject);
+    procedure sptHorzRightMoved(Sender: TObject);
+  private
+    { Private declarations }
+    SortIdx1, SortIdx2, SortIdx3: Integer;
+    grdLab508Manager : TGrdLab508Manager;
+    procedure AlignList;
+    procedure HGrid(griddata: TStrings);
+    procedure VGrid(griddata: TStrings);
+    procedure FillGrid(agrid: TStringGrid; aitems: TStrings);
+    procedure GridComments(aitems: TStrings);
+    procedure FillComments(amemo: TRichEdit; aitems:TStrings);
+    procedure GetInterimGrid(adatetime: TFMDateTime; direction: integer);
+    procedure WorksheetChart(test: string; aitems: TStrings);
+    procedure GetStartStop(var start, stop: string; aitems: TStrings);
+    procedure GraphChart(test: string; aitems: TStrings);
+    procedure GraphList(griddata: TStrings);
+    procedure ProcessNotifications;
+    procedure PrintLabGraph;
+    procedure GoRemoteOld(Dest: TStringList; AItem, AReportID: Int64; AQualifier, ARpc, AHSType, ADaysBack, ASection: string; ADate1, ADate2: TFMDateTime);
+    procedure GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string);
+    procedure ShowTabControl;
+    procedure ChkBrowser;
+    procedure CommonComponentVisible(A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12: Boolean);
+  public
+    procedure ClearPtData; override;
+    function AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure DisplayPage; override;
+    procedure SetFontSize(NewFontSize: Integer); override;
+    function FMToDateTime(FMDateTime: string): TDateTime;
+    procedure RequestPrint; override;
+    //procedure ExtlstReportsClick(Sender: TObject; Ext: boolean);
+
+end;
+
+var
+  frmLabs: TfrmLabs;
+  uFormat: integer;
+  uPrevReportNode: TTreeNode;  
+  uDate1, uDate2: Tdatetime;
+  tmpGrid: TStringList;
+  uLabLocalReportData: TStringList;  //Storage for Local report data
+  uLabRemoteReportData: TStringList; //Storage for Remote lab query
+  uUpdateStat: boolean;              //flag turned on when remote status is being updated
+  uScreenSplitMoved: boolean;        //set if user moves the sptHorzRight Bar
+  uScreenSplitLoc: Integer;          //location of user changed split - sptHorzRight Bar
+  uTreeStrings: TStrings;
+  uReportInstruction: String;        //User Instructions
+  uColChange: string;                //determines when column widths have changed
+  uQualifier: string;
+  uReportType: string;
+  uSortOrder: string;
+  uMaxOcc: string;
+  UpdatingLvReports: Boolean;        //Currently updating lvReports
+  uColumns: TStringList;
+  uNewColumn: TListColumn;
+  uLocalReportData: TStringList;     //Storage for Local report data
+  uRemoteReportData: TStringList;    //Storage for status of Remote data
+  uQualifierType: Integer;
+  uHState: string;
+  uFirstSort: Integer;
+  uSecondSort: Integer;
+  uThirdSort: Integer;
+  ulvSelectOn: boolean;              //flag turned on when multiple items in lvReports control have been selected
+
+implementation
+
+uses uCore, rLabs, rCore, rCover, rOrders, fLabPrint, fFrame, fRptBox, Printers, fReportsPrint,
+     clipbrd, rReports, rGraphs, activex, mshtml, VA508AccessibilityRouter, uReports,
+     VAUtils
+     { TODO -oRV -cWVEHR Long Age : Changed to use long age }
+     , rWVEHR;
+
+
+const
+  QT_OTHER      = 0;
+  QT_MOSTRECENT     = 1;
+  QT_DATERANGE  = 2;
+  QT_IMAGING    = 3;
+  QT_NUTR       = 4;
+  QT_PROCEDURES = 19;
+  QT_SURGERY    = 28;
+  QT_HSCOMPONENT   = 5;
+  QT_HSWPCOMPONENT = 6;
+  CT_LABS     = 9;            // ID for Labs tab used by frmFrame
+  TX_NOREPORT     = 'No report is currently selected.';
+  TX_NOREPORT_CAP = 'No Report Selected';
+  ZOOM_PERCENT = 99;        // padding for inflating margins
+  HTML_PRE  = '<html><head><style>' + CRLF +
+              'PRE {font-size:8pt;font-family: "Courier New", "monospace"}' + CRLF +
+              '</style></head><body><pre>';
+  HTML_POST = CRLF + '</pre></body></html>';
+
+{$R *.DFM}
+
+var
+  uFrozen: Boolean;
+  uGraphingActivated: Boolean;
+  uRemoteCount: Integer;
+  uHTMLDoc: string;
+  uReportRPC: string;
+  uHTMLPatient: ANSIstring;
+  uEmptyImageList: TImageList;
+  uRptID: String;
+  uDirect: String;
+  ColumnToSort: Integer;
+  ColumnSortForward: Boolean;
+
+procedure TfrmLabs.RequestPrint;
+var
+  aID : integer;
+begin
+  aID := 0;
+  if CharAt(uRPTID,2) =':' then
+    aID := strToInt(piece(uRPTID,':',1));
+  if (aID = 0) and (CharAt(uRPTID,3) =':') then
+    aID := StrToInt(piece(uRptID,':',1));
+  if uReportType = 'M' then
+    begin
+      InfoBox(TX_NOREPORT, TX_NOREPORT_CAP, MB_OK);
+      Exit;
+    end;
+  if (uReportType = 'V') and (length(piece(uHState,';',2)) > 0) then
+    begin
+      if lvReports.Items.Count < 1 then
+        begin
+          InfoBox('There are no items to be printed.', 'No Items to Print', MB_OK);
+          Exit;
+        end;
+      if lvReports.SelCount < 1 then
+        begin
+          InfoBox('Please select one or more items from the list to be printed.', 'No Items Selected', MB_OK);
+          Exit;
+        end;
+    end;
+  {if (uReportType = 'G') and GraphFormActive then
+    with GraphForm do
+    begin
+      if (lvwItemsTop.SelCount < 1) and (lvwItemsBottom.SelCount < 1) then
+        begin
+          InfoBox('There are no items graphed.', 'No Items to Print', MB_OK);
+          Exit;
+        end
+      else
+        begin
+          mnuPopGraphPrintClick(mnuPopGraphPrint);
+          Exit;
+        end;
+    end; }
+  if uQualifierType = QT_DATERANGE then
+    begin      //      = 2
+      if lstQualifier.ItemIndex < 0 then
+        begin
+          InfoBox('Please select from one of the Date Range items before printing', 'Incomplete Information', MB_OK);
+        end
+      else
+        PrintReports(uRptID, piece(uRemoteType,'^',4));
+    end
+  else
+    if uQualifierType = 0 then
+      begin
+        if aID = 0 then InfoBox(TX_NOREPORT, TX_NOREPORT_CAP, MB_OK);
+        case aID of
+          1: begin
+               InfoBox('Unable to print ''Most Recent'' report.', 'No Print Available', MB_OK);
+             end;
+          2: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+          3: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+          4: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+          5: begin
+               InfoBox('Unable to print ''Worksheet'' report.', 'No Print Available', MB_OK);
+             end;
+          6: begin
+               if chtChart.Visible then PrintLabGraph;
+             end;
+          8: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+          9: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+         10: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+         20: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+         21: begin
+               PrintLabs(IntToStr(aID), piece(uRemoteType,'^',4), lstDates.ItemIEN);
+             end;
+        end;
+      end
+    else
+      PrintLabs(uRptID, piece(uRemoteType,'^',4), lstDates.ItemIEN);
+end;
+
+
+procedure TfrmLabs.FormCreate(Sender: TObject);
+var
+  aList: TStrings;
+begin
+  inherited;
+  PageID := CT_LABS;
+  uFrozen := False;
+  uScreenSplitMoved := False;
+  aList := TStringList.Create;
+  FastAssign(rpcGetGraphSettings, aList);
+  uGraphingActivated := aList.Count > 0;
+  aList.Free;
+  uRemoteCount := 0;
+  tmpGrid := TStringList.Create;
+  uLabLocalReportData := TStringList.Create;
+  uLabRemoteReportData := TStringList.Create;
+  uColumns := TStringList.Create;
+  uTreeStrings := TStringList.Create;
+  uEmptyImageList := TImageList.Create(Self);
+  uEmptyImageList.Width := 0;
+  uLocalReportData := TStringList.Create;
+  uRemoteReportData := TStringList.Create;
+  uPrevReportNode := tvReports.Items.GetFirstNode;
+  tvReports.Selected := uPrevReportNode;
+  if Patient.Inpatient then lstDates.ItemIndex := 2 else lstDates.ItemIndex := 5;
+  lblSingleTest.Caption := '';
+  lblSpecimen.Caption := '';
+  SerTest.GetHorizAxis.ExactDateTime := true;
+  SerTest.GetHorizAxis.Increment := DateTimeStep[dtOneMinute];
+  grdLab508Manager := TGrdLab508Manager.Create;
+  amgrMain.ComponentManager[grdLab] := grdLab508Manager;
+  memo1.Visible := false;
+end;
+
+procedure TfrmLabs.UpdateRemoteStatus(aSiteID, aStatus: string);
+var
+  j: integer;
+  s: string;
+  c: boolean;
+begin
+  if uUpdateStat = true then exit;                 //uUpdateStat also looked at in fFrame
+  uUpdateStat := true;
+  for j := 0 to frmFrame.lstCIRNLocations.Items.Count - 1 do
+    begin
+      s := frmFrame.lstCIRNLocations.Items[j];
+      c := frmFrame.lstCIRNLocations.checked[j];
+      if piece(s, '^', 1) = aSiteID then
+        begin
+          frmFrame.lstCIRNLocations.Items[j] := pieces(s, '^', 1, 3) + '^' + aStatus;
+          frmFrame.lstCIRNLocations.checked[j] := c;
+        end;
+    end;
+  uUpdateStat := false;
+end;
+
+function TfrmLabs.AllowContextChange(var WhyNot: string): Boolean;
+var
+  i: integer;
+begin
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  if Timer1.Enabled = true then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'A remote data query in progress will be aborted.';
+             Result := False;
+           end;
+      '0': if WhyNot = 'COMMIT' then
+             begin
+               with RemoteSites.SiteList do for i := 0 to Count - 1 do
+                 if TRemoteSite(Items[i]).Selected then
+                 if Length(TRemoteSite(Items[i]).LabRemoteHandle) > 0 then
+                   begin
+                     TRemoteSite(Items[i]).ReportClear;
+                     TRemoteSite(Items[i]).LabQueryStatus := '-1^Aborted';
+                     TabControl1.OnChange(nil);
+                   end;
+               Timer1.Enabled := false;
+               Result := True;
+             end;
+    end;
+end;
+
+procedure TfrmLabs.ClearPtData;
+begin
+  inherited ClearPtData;
+  Timer1.Enabled := False;
+  memLab.Lines.Clear;
+  uLabLocalReportData.Clear;
+  uLabRemoteReportData.Clear;
+  TabControl1.Tabs.Clear;
+  TabControl1.Visible := false;
+  tmpGrid.Clear;
+  lvReports.SmallImages := uEmptyImageList;
+  uLocalReportData.Clear;
+  uRemoteReportData.Clear;
+  with grdLab do
+  begin
+    RowCount := 1;
+    ColCount := 1;
+    Cells[0, 0] := '';
+  end;
+end;
+
+procedure TfrmLabs.DisplayPage;
+var
+  i: integer;
+begin
+  inherited DisplayPage;
+  frmFrame.mnuFilePrint.Tag := CT_LABS;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  memLab.SelStart := 0;
+  uHTMLPatient := '<DIV align left>'
+                  + '<TABLE width="75%" border="0" cellspacing="0" cellpadding="1">'
+                  + '<TR valign="bottom" align="left">'
+                  + '<TD nowrap><B>Patient: ' + Patient.Name + '</B></TD>'
+                  + '<TD nowrap><B>' + Patient.SSN + '</B></TD>'
+{ TODO -oRV -cWVEHR Long Age : Changed to use long age }
+                  //+ '<TD nowrap><B>Age: ' + IntToStr(Patient.Age) + '</B></TD>'
+                  + '<TD nowrap><B>Age: ' + GetPatientBriefAge(Patient.DFN) + '</B></TD>'
+{}
+                  + '</TR></TABLE></DIV><HR>';
+                  //the preferred method would be to use headers and footers
+                  //so this is just an interim solution.
+  if InitPage then
+  begin
+    Splitter1.Visible := false;
+    pnlLeftBottom.Visible := false;
+    uColChange := '';
+    uMaxOcc := '';
+    LoadTreeView;
+  end;
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+  begin
+    uColChange := '';
+    if Patient.Inpatient then lstDates.ItemIndex := 2 else lstDates.ItemIndex := 5;
+    tvReports.Selected := tvReports.Items.GetFirstNode;
+    tvReportsClick(self);
+  end;
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+    begin
+      uColChange := '';
+      lstQualifier.Clear;
+      //tvProcedures.Items.Clear;
+      //lblProcTypeMsg.Visible := FALSE;
+      lvReports.SmallImages := uEmptyImageList;
+      lvReports.Items.Clear;
+      lvReports.Columns.Clear;
+      lblTitle.Caption := '';
+      lvReports.Caption := '';
+      Splitter1.Visible := false;
+      pnlLeftBottom.Visible := false;
+      memLab.Parent := pnlRightBottom;
+      memLab.Align := alClient;
+      memLab.Clear;
+      uReportInstruction := '';
+      uLocalReportData.Clear;
+      for i := 0 to RemoteSites.SiteList.Count - 1 do
+        TRemoteSite(RemoteSites.SiteList.Items[i]).ReportClear;
+      //pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+      StatusText('');
+      with tvReports do
+        if Items.Count > 0 then
+          begin
+            tvReports.Selected := tvReports.Items.GetFirstNode;
+            tvReportsClick(self);
+          end;
+    end;
+  case CallingContext of
+    CC_INIT_PATIENT:  if not InitPatient then
+      begin
+        if Patient.Inpatient then lstDates.ItemIndex := 2 else lstDates.ItemIndex := 5;
+        tvReports.Selected := tvReports.Items.GetFirstNode;
+        tvReportsClick(self);
+        lvReports.SmallImages := uEmptyImageList;
+        lstQualifier.Clear;
+        //tvProcedures.Items.Clear;
+        //lblProcTypeMsg.Visible := FALSE;
+        lvReports.SmallImages := uEmptyImageList;
+        lvReports.Items.Clear;
+        Splitter1.Visible := false;
+        pnlLeftBottom.Visible := false;
+        with tvReports do
+          if Items.Count > 0 then
+            begin
+              tvReports.Selected := tvReports.Items.GetFirstNode;
+              tvReportsClick(self);
+            end;
+      end;
+    CC_NOTIFICATION:  ProcessNotifications;
+  end;
+end;
+
+procedure TfrmLabs.SetFontSize(NewFontSize: Integer);
+begin
+  inherited SetFontSize(NewFontSize);
+  FormResize(self);
+end;
+
+procedure TfrmLabs.LoadListView(aReportData: TStringList);
+var
+  j,k,aErr: integer;
+  aTmpAray: TStringList;
+  aColCtr, aCurCol, aCurRow, aColID: integer;
+  x,y,z,c,aSite: string;
+  ListItem: TListItem;
+begin
+  aSite := '';
+  aErr := 0;
+  ListItem := nil;
+  case uQualifierType of
+    QT_HSCOMPONENT:
+      begin      //      = 5
+        if (length(piece(uHState,';',2)) > 0) then
+          begin
+            with lvReports do
+              begin
+                ViewStyle := vsReport;
+                for j := 0 to aReportData.Count - 1 do
+                  begin
+                    if piece(aReportData[j],'^',1) = '-1' then  //error condition, most likely remote call
+                      continue;
+                    ListItem := Items.Add;
+                    aSite := piece(aReportData[j],'^',1);
+                    ListItem.Caption := piece(aSite,';',1);
+                    for k := 2 to uColumns.Count do
+                      begin
+                        ListItem.SubItems.Add(piece(aReportData[j],'^',k));
+                      end;
+                  end;
+                if aReportData.Count = 0 then
+                  begin
+                    uReportInstruction := '<No Data Available>';
+                    memLab.Lines.Clear;
+                    memLab.Lines.Add(uReportInstruction);
+                  end
+                else
+                  memLab.Lines.Clear;
+              end;
+          end;
+      end;
+    QT_HSWPCOMPONENT:
+      begin     //      = 6
+        if (length(piece(uHState,';',2)) > 0) then //and (chkText.Checked = false) then
+          begin
+            aTmpAray := TStringList.Create;
+            aCurRow := 0;
+            aCurCol := 0;
+            aColCtr := 9;
+            aTmpAray.Clear;
+            with lvReports do
+              begin
+                for j := 0 to aReportData.Count - 1 do
+                  begin
+                    x := aReportData[j];
+                    aColID := StrToIntDef(piece(x,'^',1),-1);
+                    if aColID < 0 then    //this is an error condition most likely an incompatible remote call
+                      continue;
+                    if aColID > (uColumns.Count - 1) then
+                      begin
+                        aErr := 1;
+                        continue;           //extract is out of sync with columns defined in 101.24
+                      end;
+                    if aColID < aColCtr then
+                      begin
+                        if aTmpAray.Count > 0 then
+                          begin
+                            if aColCtr = 1 then
+                              begin
+                                ListItem := Items.Add;
+                                aSite := piece(aTmpAray[j],'^',1);
+                                ListItem.Caption := piece(aSite,';',1);
+                                ListItem.SubItems.Add(IntToStr(aCurRow) + ':' + IntToStr(aCurCol));
+                              end
+                            else
+                              begin
+                                c := aTmpAray[0];
+                                if piece(uColumns.Strings[aCurCol],'^',4) = '1' then
+                                  c := c + '...';
+                                z := piece(c,'^',1);
+                                y := copy(c, (pos('^', c)), 9999);
+                                if pos('^',y) > 0 then
+                                  begin
+                                    while pos('^',y) > 0 do
+                                      begin
+                                        y := copy(y, (pos('^', y)+1), 9999);
+                                        z := z + '^' + y;
+                                      end;
+                                        ListItem.SubItems.Add(z);
+                                  end
+                                else
+                                  begin
+                                    ListItem.SubItems.Add(y);
+                                  end;
+                              end;
+                            RowObjects.Add(aSite, IntToStr(aCurRow) + ':' + IntToStr(aCurCol), uColumns.Strings[aCurCol], aTmpAray);
+                            aTmpAray.Clear;
+                          end;
+                        aColCtr := 0;
+                        aCurCol := aColID;
+                        aCurRow := aCurRow + 1;
+                      end
+                    else
+                      if aColID = aCurCol then
+                        begin
+                          z := '';
+                          y := piece(x,'^',2);
+                          if length(y) > 0 then z := y;
+                          y := copy(x, (pos('^', x)+1), 9999);
+                          if pos('^',y) > 0 then
+                            begin
+                              while pos('^',y) > 0 do
+                                begin
+                                  y := copy(y, (pos('^', y)+1), 9999);
+                                  z := z + '^' + y;
+                                end;
+                              aTmpAray.Add(z);
+                            end
+                          else
+                            begin
+                              aTmpAray.Add(y);
+                            end;
+                          continue;
+                        end;
+                    if aTmpAray.Count > 0 then
+                      begin
+                        if aColCtr = 1 then
+                          begin
+                            ListItem := Items.Add;
+                            aSite := piece(aTmpAray[0],'^',1);
+                            ListItem.Caption := piece(aSite,';',1);
+                            ListItem.SubItems.Add(IntToStr(aCurRow) + ':' + IntToStr(aCurCol));
+                          end
+                        else
+                          begin
+                            c := aTmpAray[0];
+                            if piece(uColumns.Strings[aCurCol],'^',4) = '1' then
+                              c := c + '...';
+                            ListItem.SubItems.Add(c);
+                          end;
+                        RowObjects.Add(aSite, IntToStr(aCurRow) + ':' + IntToStr(aCurCol), uColumns.Strings[aCurCol], aTmpAray);
+                        aTmpAray.Clear;
+                      end;
+                    aCurCol := aColID;
+                    Inc(aColCtr);
+                    y := '';
+                    for k := 2 to 10 do
+                      if length(piece(x,'^',k)) > 0 then
+                        begin
+                          if length(y) > 0 then y := y + '^' + piece(x,'^',k)
+                          else y := y + piece(x,'^',k);
+                        end;
+                    aTmpAray.Add(y);
+                    if aColCtr > 0 then
+                      while aColCtr < aCurCol do
+                        begin
+                          ListItem.SubItems.Add('');
+                          Inc(aColCtr);
+                        end;
+                  end;
+                if aTmpAray.Count > 0 then
+                  begin
+                    if aColCtr = 1 then
+                      begin
+                        ListItem := Items.Add;
+                        aSite := piece(aTmpAray[0],'^',1);
+                        ListItem.Caption := piece(aSite,';',1);
+                        ListItem.SubItems.Add(IntToStr(aCurRow) + ':' + IntToStr(aCurCol));
+                      end
+                    else
+                      begin
+                        c := aTmpAray[0];
+                        if piece(uColumns.Strings[aCurCol],'^',4) = '1' then
+                          c := c + '...';
+                        ListItem.SubItems.Add(c);
+                      end;
+                    RowObjects.Add(aSite, IntToStr(aCurRow) + ':' + IntToStr(aCurCol), uColumns.Strings[aCurCol], aTmpAray);
+                    aTmpAray.Clear;
+                  end;
+              end;
+            aTmpAray.Free;
+          end;
+      end;
+  end;
+  if aErr = 1 then
+    if User.HasKey('XUPROGMODE') then
+      ShowMsg('Programmer message: One or more Column ID''s in file 101.24 do not match ID''s coded in extract routine');
+end;
+
+procedure TfrmLabs.DisplayHeading(aRanges: string);
+var
+  x,x1,x2,y,z,DaysBack: string;
+  d1,d2: TFMDateTime;
+begin
+  with lblTitle do
+  begin
+    x := '';
+    if tvReports.Selected = nil then
+     tvReports.Selected := tvReports.Items.GetFirstNode;
+    if tvReports.Selected.Parent <> nil then
+      x := tvReports.Selected.Parent.Text + ' ' + tvReports.Selected.Text
+    else
+      x :=  tvReports.Selected.Text;
+      x1 := '';
+      x2 := '';
+    if (uReportType <> 'M') and (not(uRptID = '1:MOST RECENT')) then
+      begin
+        if CharAt(aRanges, 1) = 'd' then
+          begin
+            if length(piece(aRanges,';',2)) > 0 then
+              begin
+                x2 := '  Max/site:' + piece(aRanges,';',2);
+                aRanges := piece(aRanges,';',1);
+              end;
+            DaysBack := Copy(aRanges, 2, Length(aRanges));
+            if DaysBack = '0' then
+              aRanges := 'T' + ';T'
+            else
+              aRanges := 'T-' + DaysBack + ';T';
+          end;
+        if length(piece(aRanges,';',1)) > 0 then
+          begin
+            d1 := ValidDateTimeStr(piece(aRanges,';',1),'');
+            d2 := ValidDateTimeStr(piece(aRanges,';',2),'');
+            y := FormatFMDateTime('mmm dd,yyyy',d1);
+            if Copy(y,8,2) = '18' then y := 'EARLIEST RESULT';
+            z := FormatFMDateTime('mmm dd,yyyy',d2);
+            x1 := ' [From: ' + y + ' to ' + z + ']';
+          end;
+        if length(piece(aRanges,';',3)) > 0 then
+          x2 := '  Max/site:' + piece(aRanges,';',3);
+        case uQualifierType of
+          QT_DATERANGE:
+              x := x + x1;
+          QT_HSCOMPONENT:
+              x := x + x1 + x2;
+          QT_HSWPCOMPONENT:
+              x := x + x1 + x2;
+          QT_IMAGING:
+              x := x + x1 + x2;
+          0:
+              x := x + x1;
+        end;
+      end;
+    if piece(uRemoteType, '^', 9) = '1' then x := x + ' <<ONLY REMOTE DOD DATA INCLUDED IN REPORT>>';
+    Caption := x;
+  end;
+  lvReports.Caption := x;
+end;
+
+procedure TfrmLabs.AlignList;
+begin
+  lblReports.Top := 0;
+  lstDates.Height := pnlLeft.Height div 3 - (lblDates.Height div 2);
+  lstDates.Top := pnlLeft.Height - lstDates.Height;
+  lblDates.Top := lstDates.Top - lblDates.Height;
+  lstQualifier.Height := pnlLeft.Height div 3 - (lblQualifier.Height div 2);
+  lstQualifier.Top := pnlLeft.Height - lstQualifier.Height;
+  lblQualifier.Top := lstQualifier.Top - lblQualifier.Height;
+  pnlOtherTests.Top := lblDates.Top - pnlOtherTests.Height;
+  lstHeaders.Height := pnlLeft.Height div 3 - (lblHeaders.Height * 3);
+  lstHeaders.Top := lblDates.Top - lstHeaders.Height;
+  lblHeaders.Top := lstHeaders.Top - lblHeaders.Height;
+  lstDates.Repaint;
+  lstHeaders.Repaint;
+  lstQualifier.Repaint;
+end;
+
+procedure TfrmLabs.LoadTreeView;
+var
+  i: integer;
+  currentNode, parentNode, grandParentNode, gtGrandParentNode: TTreeNode;
+  x: string;
+  addchild, addgrandchild, addgtgrandchild: boolean;
+begin
+  tvReports.Items.Clear;
+  memLab.Clear;     
+  uHTMLDoc := '';
+  //WebBrowser1.Navigate('about:blank');  **Browser Remove**
+  //tvProcedures.Items.Clear;
+  //lblProcTypeMsg.Visible := FALSE;
+  lvReports.SmallImages := uEmptyImageList;
+  lvReports.Items.Clear;
+  uTreeStrings.Clear;
+  //lblTitle.Caption := '';
+  lvReports.Caption := '';
+  ListLabReports(uTreeStrings);
+  addchild := false;
+  addgrandchild := false;
+  addgtgrandchild := false;
+  parentNode := nil;
+  grandParentNode := nil;
+  gtGrandParentNode := nil;
+  currentNode := nil;
+  for i := 0 to uTreeStrings.Count - 1 do
+    begin
+      x := uTreeStrings[i];
+      if UpperCase(Piece(x,'^',1))='[PARENT END]' then
+        begin
+          if addgtgrandchild = true then
+            begin
+              currentNode := gtgrandParentNode;
+              addgtgrandchild := false;
+            end
+          else
+            if addgrandchild = true then
+              begin
+                currentNode := grandParentNode;
+                addgrandchild := false;
+              end
+            else
+              begin
+                currentNode := parentNode;
+                addchild := false;
+              end;
+          continue;
+        end;
+      if UpperCase(Piece(x,'^',1))='[PARENT START]' then
+        begin
+          if addgtgrandchild = true then
+            currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)))
+          else
+            if addgrandchild = true then
+              begin
+                currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
+                addgtgrandchild := true;
+                gtgrandParentNode := currentNode;
+              end
+            else
+              if addchild = true then
+                begin
+                  currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
+                  addgrandchild := true;
+                  grandParentNode := currentNode;
+                end
+              else
+                begin
+                  currentNode := tvReports.Items.AddObject(currentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
+                  parentNode := currentNode;
+                  addchild := true;
+                end;
+        end
+      else
+        if addchild = false then
+          begin
+            currentNode := tvReports.Items.AddObject(currentNode,Piece(x,'^',2),MakeReportTreeObject(x));
+            parentNode := currentNode;
+          end
+        else
+          begin
+            if addgtgrandchild = true then
+                currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',2),MakeReportTreeObject(x))
+            else
+              if addgrandchild = true then
+                  currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',2),MakeReportTreeObject(x))
+              else
+                  currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',2),MakeReportTreeObject(x));
+          end;
+    end;
+  if tvReports.Items.Count > 0 then begin
+    tvReports.Selected := tvReports.Items.GetFirstNode;
+    tvReportsClick(self);
+  end;
+end;
+
+{procedure TfrmLabs.lstReportsClick(Sender: TObject);
+begin
+  ExtlstReportsClick(Sender, false);
+end;  }
+
+{procedure TfrmLabs.ExtlstReportsClick(Sender: TObject; Ext: boolean);
+var
+  i,iCat: integer;
+  Rpt: string;
+begin
+  inherited;
+  uRemoteCount := 0;
+  Timer1.Enabled := False;
+  Rpt := lstReports.Items[lstReports.ItemIndex];
+  uReportType := Piece(Rpt,'^',4);
+  uReportRPC := UpperCase(Piece(Rpt,'^',6));
+  if length(Piece(Rpt,'^',5)) > 0 then
+    iCat := StrToInt(Piece(Rpt,'^',5))
+  else
+    iCat := 0;
+  if uReportType = '' then uReportType := 'R';
+  StatusText('');
+  uLabLocalReportData.Clear;
+  uLabRemoteReportData.Clear;
+  lstHeaders.Clear;
+  TabControl1.Visible := false;
+  if Piece(Rpt,'^',3) = '1' then
+    if TabControl1.Tabs.Count > 1 then
+      TabControl1.Visible := true;
+  for i := 0 to RemoteSites.SiteList.Count - 1 do
+    TRemoteSite(RemoteSites.SiteList.Items[i]).LabClear;
+  if uFrozen = True then memo1.visible := False;
+  case lstReports.ItemIEN of
+  1: begin                // Most Recent
+       CommonComponentVisible(false,false,false,false,false,true,true,false,true,false,false,false);
+       pnlButtons.Visible := true;
+       pnlWorksheet.Visible := false;
+       pnlGraph.Visible := false;
+       memLab.Align := alBottom;
+       memLab.Height := pnlLeft.Height div 5;
+       grdLab.Align := alClient;
+       memLab.Clear;
+       //if uReportType = 'H' then          **Browser Remove**
+         //begin
+           //WebBrowser1.Navigate('about:blank');
+           //WebBrowser1.Align := alBottom;
+           //WebBrowser1.Height := pnlLeft.Height div 5;
+           //WebBrowser1.Visible := true;
+           //WebBrowser1.BringToFront;
+           //memLab.Visible := false;
+         //end
+       //else
+        //begin
+          //WebBrowser1.Visible := false;
+          //WebBrowser1.SendToBack;
+          //memLab.Visible := true;
+          //memLab.BringToFront;
+        //end;
+       FormResize(self);
+       cmdRecentClick(self);
+       uPrevReportIndex := lstReports.ItemIndex;
+     end;
+  4: begin               // Interim for Selected Tests
+       if uPrevReportIndex <> lstReports.ItemIndex then
+       begin
+         lstTests.Clear;
+         lblSpecimen.Caption := '';
+       end;
+       if not Ext then SelectTests(Font.Size);
+       if lstTests.Items.Count > 0 then
+       begin
+         CommonComponentVisible(false,false,true,true,true,false,false,false,true,false,false,false);
+         memLab.Clear;
+         chkBrowser;
+         FormResize(self);
+         RedrawActivate(memLab.Handle);
+         lstDatesClick(self);
+         //lstQualifierClick(self);
+         if not Ext then cmdOtherTests.SetFocus;
+         cmdOtherTests.Default := true;
+       end
+       else lstReports.ItemIndex := uPrevReportIndex;
+     end;
+  5: begin               // Worksheet
+       if uPrevReportIndex <> lstReports.ItemIndex then
+       begin
+         lstTests.Clear;
+         lblSpecimen.Caption := '';
+       end;
+       if not Ext then SelectTestGroups(Font.Size);
+       if lstTests.Items.Count > 0 then
+       begin
+         CommonComponentVisible(false,false,true,true,true,true,true,false,false,false,false,false);
+         chtChart.Visible := true;
+         memLab.Visible := false;
+         pnlButtons.Visible := false;
+         pnlWorksheet.Visible := true;
+         pnlGraph.Visible := false;
+         lstTestGraph.Width := 97;
+         ragCorG.ItemIndex := 0;
+         FormResize(self);
+         lblFooter.Caption := '  KEY: "L" = Abnormal Low, "H" = Abnormal High, "*" = Critical Value, "**" = Comments on Specimen';
+         //chkZoom.Checked := false;
+         //chkZoomClick(self);
+         //lstDatesClick(self);
+         lstQualifierClick(self);
+         if not Ext then cmdOtherTests.SetFocus;
+         cmdOtherTests.Default := true;
+       end
+       else lstReports.ItemIndex := uPrevReportIndex;
+     end;
+  6: begin               // Graph
+        // do if graphing is activiated
+       if uGraphingActivated then
+       begin
+         memLab.Clear;
+         chkBrowser;
+         FormResize(self);
+         memLab.Align := alClient;
+         CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,false,false);
+         RedrawActivate(memLab.Handle);
+         StatusText('');
+         memLab.Lines.Insert(0, ' ');
+         memLab.Lines.Insert(1, 'Graphing activated');
+         memLab.SelStart := 0;
+         frmFrame.mnuToolsGraphingClick(self);  // make it just lab tests ??
+         //lstReports.ItemIndex := uPrevReportIndex;
+       end
+       else  // otherwise, do lab graph
+       begin
+         if uPrevReportIndex <> lstReports.ItemIndex then
+         begin
+           lblSingleTest.Caption := '';
+           lblSpecimen.Caption := '';
+         end;
+         if not Ext then SelectTest(Font.Size);
+         if (length(lblSingleTest.Caption) > 2) and (length(lblSpecimen.Caption) > 2) then
+         begin
+           CommonComponentVisible(false,false,true,true,true,true,false,false,true,false,false,false);
+           pnlChart.Visible := true;
+           chtChart.Visible := true;
+           pnlButtons.Visible := false;
+           pnlWorksheet.Visible := false;
+           pnlGraph.Visible := true;
+           memLab.Height := pnlRight.Height div 5;
+           memLab.Clear;
+           //if uReportType = 'H' then          **Browser Remove**
+           //begin
+             //WebBrowser1.Visible := true;
+             //WebBrowser1.Navigate('about:blank');
+             //WebBrowser1.Height := pnlRight.Height div 5;
+             //WebBrowser1.BringToFront;
+             //memLab.Visible := false;
+           //end
+           //else
+           //begin
+             //WebBrowser1.Visible := false;
+             //WebBrowser1.SendToBack;
+             //memLab.Visible := true;
+             //memLab.BringToFront;
+           //end;
+           lstTestGraph.Items.Clear;
+           lstTestGraph.Width := 0;
+           FormResize(self);
+           RedrawActivate(memLab.Handle);
+           lblFooter.Caption := '';
+           chkGraphZoom.Checked := false;
+           chkGraphZoomClick(self);
+           chkGraph3DClick(self);
+           chkGraphValuesClick(self);
+           //lstDatesClick(self);
+           lstQualifierClick(self);
+           if not Ext then cmdOtherTests.SetFocus;
+           cmdOtherTests.Default := true;
+         end
+         else
+           lstReports.ItemIndex := uPrevReportIndex;
+       end;
+     end
+    else // case
+    begin
+      //added to deal with other reports from file 101.24
+      memLab.Clear;
+      chkBrowser;
+      FormResize(self);
+      memLab.Align := alClient;
+      case iCat of
+                    //Categories of reports:
+                        //0:Fixed
+                        //1:Fixed w/Dates
+                        //2:Fixed w/Headers
+                        //3:Fixed w/Dates & Headers
+                        //4:Specialized
+                        //5:Graphic
+
+        0: begin
+            CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,false,false);
+            StatusText('Retrieving data...');
+            GoRemoteOld(uLabRemoteReportData,lstReports.ItemIEN,1,'',uReportRPC,'0','9999','1',0,0);
+            TabControl1.OnChange(nil);
+            Reports(uLabLocalReportData,Patient.DFN, Piece(Rpt,'^',1), '0', '9999', '1', 0, 0, uReportRPC);
+            if TabControl1.TabIndex < 1 then
+              QuickCopy(uLabLocalReportData,memLab);
+            RedrawActivate(memLab.Handle);
+            StatusText('');
+            memLab.Lines.Insert(0,' ');
+            memLab.Lines.Delete(0);
+            memLab.SelStart := 0;
+            if uReportType = 'R' then
+            uHTMLDoc := HTML_PRE + uLabLocalReportData.Text + HTML_POST
+            else
+            uHTMLDoc := uHTMLPatient + uLabLocalReportData.Text;
+            //if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');  **Browser Remove**
+           end;
+        1: begin
+            CommonComponentVisible(false,false,false,true,true,false,false,false,false,false,false,false);
+            memLab.Repaint;
+            //lstDatesClick(self);
+            lstQualifierClick(self);
+           end;
+        2: begin
+            CommonComponentVisible(true,true,false,false,false,false,false,false,false,false,false,false);
+            lstHeaders.Clear;
+            StatusText('Retrieving data...');
+            GoRemoteOld(uLabRemoteReportData,lstReports.ItemIEN,1,'',uReportRPC,'0','9999','1',0,0);
+            TabControl1.OnChange(nil);
+            Reports(uLabLocalReportData,Patient.DFN, Piece(Rpt,'^',1), '0', '9999', '1', 0, 0, uReportRPC);
+            if uLabLocalReportData.Count > 0 then
+            begin
+             TabControl1.OnChange(nil);
+             if lstHeaders.Items.Count > 0 then lstHeaders.ItemIndex := 0;
+            end;
+            RedrawActivate(memLab.Handle);
+            StatusText('');
+            memLab.Lines.Insert(0,' ');
+            memLab.Lines.Delete(0);
+            if uReportType = 'R' then
+             uHTMLDoc := HTML_PRE + uLabLocalReportData.Text + HTML_POST
+            else
+             uHTMLDoc := uHTMLPatient + uLabLocalReportData.Text;
+            //if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');  **Browser Remove**
+           end;
+        3: begin
+            CommonComponentVisible(true,true,false,true,true,false,false,false,true,false,false,false);
+            //lstDatesClick(self);
+            lstQualifierClick(self);
+            memLab.Lines.Insert(0,' ');
+            memLab.Lines.Delete(0);
+           end;
+      end;
+    end;
+  end;
+  uPrevReportIndex := lstReports.ItemIndex;
+  DisplayHeading('');
+end;             }
+
+procedure TfrmLabs.lstHeadersClick(Sender: TObject);
+var
+  Current, Desired: integer;
+begin
+  inherited;
+  if uFrozen = True then memo1.visible := False;
+  Current := SendMessage(memLab.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+  Desired := lstHeaders.ItemIEN;
+  SendMessage(memLab.Handle, EM_LINESCROLL, 0, Desired - Current - 1);
+end;
+
+procedure TfrmLabs.lstQualifierClick(Sender: TObject);
+  var
+  MoreID: String;  //Restores MaxOcc value
+  aRemote, aHDR, aFHIE: string;
+  i: integer;
+  tmpList: TStringList;
+  daysback: integer;
+  date1, date2: TFMDateTime;
+  today: TDateTime;
+begin
+  inherited;
+  if uFrozen = True then
+    begin
+      memo1.visible := False;
+      memo1.TabStop := False;
+    end;
+  if (lstDates.ItemID = 'S') then
+  begin
+    with calLabRange do
+    begin
+      if Execute then
+        if Length(TextOfStart) > 0 then
+          if Length(TextOfStop) > 0 then
+            begin
+              lstDates.ItemIndex := lstDates.Items.Add(RelativeStart + ';' +
+                RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+                DisplayHeading('');
+            end
+          else
+            lstDates.ItemIndex := -1
+        else
+          lstDates.ItemIndex := -1
+      else
+        lstDates.ItemIndex := -1;
+    end;
+  end;
+  today := FMToDateTime(floattostr(FMToday));
+  if lstDates.ItemIEN > 0 then
+    begin
+      daysback := lstDates.ItemIEN;
+      date1 := FMToday;
+      If daysback = 1 then
+        date2 := DateTimeToFMDateTime(today)
+      Else
+        date2 := DateTimeToFMDateTime(today - daysback);
+    end
+  else
+    BeginEndDates(date1,date2,daysback);
+  date1 := date1 + 0.2359;
+  MoreID := ';' + Piece(uQualifier,';',3);
+  if chkMaxFreq.checked = true then
+    begin
+      MoreID := '';
+      SetPiece(uQualifier,';',3,'');
+    end;
+  aRemote :=  piece(uRemoteType,'^',1);
+  aHDR := piece(uRemoteType,'^',7);
+  aFHIE := piece(uRemoteType,'^',8);
+  SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
+  //tvProcedures.Items.Clear;
+  //lblProcTypeMsg.Visible := FALSE;
+  uHTMLDoc := '';
+  {if uReportType = 'H' then       **Browser Remove**
+    begin
+      WebBrowser1.Visible := true;
+      WebBrowser1.TabStop := true;
+      WebBrowser1.Navigate('about:blank');
+      WebBrowser1.BringToFront;
+      memLab.Visible := false;
+      memLab.TabStop := false;
+    end
+  else
+    begin
+      WebBrowser1.Visible := false;
+      WebBrowser1.TabStop := false;  }
+      memLab.Visible := true;
+      memLab.TabStop := true;
+      memLab.BringToFront;
+      RedrawActivate(memLab.Handle);
+    //end;  }
+  uLocalReportData.Clear;
+  uRemoteReportData.Clear;
+  for i := 0 to RemoteSites.SiteList.Count - 1 do
+   TRemoteSite(RemoteSites.SiteList.Items[i]).ReportClear;
+  uRemoteCount := 0;
+  if aHDR = '1' then
+    DisplayHeading(lstQualifier.ItemID)
+  else
+    DisplayHeading(lstQualifier.ItemID + MoreID);
+  if lstQualifier.ItemID = 'ds' then
+    begin
+      with calLabRange do
+       if Not (Execute) then
+         begin
+           lstQualifier.ItemIndex := -1;
+           Exit;
+         end
+       else if (Length(TextOfStart) > 0) and (Length(TextOfStop) > 0) then
+         begin
+           if (Length(piece(uRemoteType,'^',6)) > 0) and (StrToInt(piece(uRemoteType,'^',6)) > 0) then
+             if abs(FMDateTimeToDateTime(FMDateStart) - FMDateTimeToDateTime(FMDateStop)) > StrToInt(piece(uRemoteType,'^',6)) then
+               begin
+                 InfoBox('The Date Range selected is greater than the' + CRLF + 'Maximum Days Allowed of ' + piece(uRemoteType,'^',6)
+                   + ' for this report.', 'No Report Generated',MB_OK);
+                 lstQualifier.ItemIndex := -1;
+                 exit;
+               end;
+           lstQualifier.ItemIndex := lstQualifier.Items.Add(RelativeStart +
+             ';' + RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+           DisplayHeading(lstQualifier.ItemID + MoreID);
+           SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
+         end
+       else
+         begin
+           lstQualifier.ItemIndex := -1;
+           InfoBox('Invalid Date Range entered. Please try again','Invalid Date/time entry',MB_OK);
+           if (Execute) and (Length(TextOfStart) > 0) and (Length(TextOfStop) > 0) then
+             begin
+               lstQualifier.ItemIndex := lstQualifier.Items.Add(RelativeStart +
+                 ';' + RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+               DisplayHeading(lstQualifier.ItemID + MoreID);
+               SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
+             end
+           else
+             begin
+               lstQualifier.ItemIndex := -1;
+               InfoBox('No Report Generated!','Invalid Date/time entry',MB_OK);
+               exit;
+             end;
+         end;
+    end;
+  if (CharAt(lstQualifier.ItemID,1) = 'd') and (Length(piece(uRemoteType,'^',6)) > 0) and (StrToInt(piece(uRemoteType,'^',6)) > 0) then
+    if ExtractInteger(lstQualifier.ItemID) > (StrToInt(piece(uRemoteType,'^',6))) then
+      begin
+        InfoBox('The Date Range selected is greater than the' + CRLF + 'Maximum Days Allowed of ' + piece(uRemoteType,'^',6)
+          + ' for this report.', 'No Report Generated',MB_OK);
+        lstQualifier.ItemIndex := -1;
+        exit;
+      end;
+  Screen.Cursor := crHourGlass;
+  uReportInstruction := #13#10 + 'Retrieving data...';
+  memLab.Lines.Add(uReportInstruction);
+  {if WebBrowser1.Visible = true then           **Browser Remove**
+  begin
+    uHTMLDoc := HTML_PRE + uReportInstruction + HTML_POST;
+    WebBrowser1.Navigate('about:blank');
+  end;      }
+  case uQualifierType of
+      QT_HSCOMPONENT:
+        begin     //      = 5
+          lvReports.SmallImages := uEmptyImageList;
+          lvReports.Items.Clear;
+          memLab.Lines.Clear;
+          RowObjects.Clear;
+          if ((aRemote = '1') or (aRemote = '2')) then
+            GoRemote(uRemoteReportData, 'L:' + uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
+          if not(piece(uRemoteType, '^', 9) = '1') then
+            if (length(piece(uHState,';',2)) > 0) then
+              begin
+                if not(aRemote = '2') then
+                  LoadReportText(uLocalReportData, 'L:' + uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                LoadListView(uLocalReportData);
+              end
+            else
+              begin
+                if ((aRemote = '1') or (aRemote = '2')) then
+                  ShowTabControl;
+                LoadReportText(uLocalReportData, 'L:' + uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                if uLocalReportData.Count < 1 then
+                  begin
+                    uReportInstruction := '<No Report Available>';
+                    memLab.Lines.Add(uReportInstruction);
+                  end
+                else
+                  begin
+                    QuickCopy(uLocalReportData,memLab);
+                    TabControl1.OnChange(nil);
+                  end;
+              end;
+        end;
+      QT_HSWPCOMPONENT:
+        begin      //      = 6
+          lvReports.SmallImages := uEmptyImageList;
+          lvReports.Items.Clear;
+          RowObjects.Clear;
+          memLab.Lines.Clear;
+          if ((aRemote = '1') or (aRemote = '2'))  then
+            begin
+              Screen.Cursor := crDefault;
+              GoRemote(uRemoteReportData, 'L:' + uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
+            end;
+          if not(piece(uRemoteType, '^', 9) = '1') then
+            if (length(piece(uHState,';',2)) > 0) then
+              begin
+                if not(aRemote = '2') then
+                  LoadReportText(uLocalReportData, 'L:' + uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                LoadListView(uLocalReportData);
+              end
+            else
+              begin
+                {if ((aRemote = '1') or (aRemote = '2')) then
+                  ShowTabControl;}
+                if not (aRemote = '2') then
+                  begin
+                    LoadReportText(uLocalReportData, 'L:' + uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                    if uLocalReportData.Count < 1 then
+                      begin
+                        uReportInstruction := '<No Report Available>';
+                        memLab.Lines.Add(uReportInstruction);
+                      end
+                    else
+                      QuickCopy(uLocalReportData,memLab);
+                  end;
+              end;
+        end
+      else
+        begin
+          Screen.Cursor := crDefault;
+          //GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
+//**************************************************************************
+case StrToInt(Piece(uRptID,':',1)) of
+  21: begin                // Cumulative
+       lstHeaders.Clear;
+       memLab.Clear;
+       uLabLocalReportData.Clear;
+       uLabRemoteReportData.Clear;
+       StatusText('Retrieving data for cumulative report...');
+       GoRemoteOld(uLabRemoteReportData,0,2,'',uReportRPC,'',IntToStr(daysback),'',date1,date2);
+       TabControl1.OnChange(nil);
+       Cumulative(uLabLocalReportData, Patient.DFN, daysback, date1, date2, uReportRPC);
+       if uLabLocalReportData.Count > 0 then
+         begin
+           TabControl1.OnChange(nil);
+           if lstHeaders.Items.Count > 0 then lstHeaders.ItemIndex := 0;
+         end;
+       memLab.Lines.Insert(0,' ');
+       memLab.Lines.Delete(0);
+     end;
+  3: begin            // Interim
+       memLab.Clear;
+       uLabLocalReportData.Clear;
+       uLabRemoteReportData.Clear;
+       StatusText('Retrieving data for interim report...');
+       GoRemoteOld(uLabRemoteReportData,0,3,'',uReportRPC,'','','',date1,date2);
+       TabControl1.OnChange(nil);
+       Interim(uLabLocalReportData, Patient.DFN, date1, date2, uReportRPC);
+       if uLabLocalReportData.Count < 1 then
+         uLabLocalReportData.Add('<No results for this date range.>');
+       if TabControl1.TabIndex < 1 then
+         QuickCopy(uLabLocalReportData,memLab);
+       memLab.Lines.Insert(0,' ');
+       memLab.Lines.Delete(0);
+       memLab.SelStart := 0;
+     end;
+  4: begin            // Interim for Selected Tests
+       memLab.Clear;
+       uLabLocalReportData.Clear;
+       uLabRemoteReportData.Clear;
+       try
+         StatusText('Retrieving data for selected tests...');
+         FastAssign(InterimSelect(Patient.DFN, date1, date2, lstTests.Items), uLabLocalReportData);
+         if uLabLocalReportData.Count > 0 then
+           QuickCopy(uLabLocalReportData,memLab)
+         else
+           memLab.Lines.Add('<No results for selected tests in this date range.>');
+         memLab.SelStart := 0;
+       finally
+         //tmpList.Free;
+       end;
+     end;
+  5: begin            // Worksheet
+       chtChart.BottomAxis.Automatic := true;
+       chkZoom.Checked := false;
+       //chkZoomClick(self);
+       chkAbnormals.Checked := false;
+       memLab.Clear;
+       uLabLocalReportData.Clear;
+       uLabRemoteReportData.Clear;
+       grdLab.Align := alClient;
+       StatusText('Retrieving data for worksheet...');
+       FastAssign(Worksheet(Patient.DFN, date1, date2,
+         Piece(lblSpecimen.Caption, '^', 1), lstTests.Items), tmpGrid);
+       if ragHorV.ItemIndex = 0 then
+         HGrid(tmpGrid)
+       else
+         VGrid(tmpGrid);
+       GraphList(tmpGrid);
+       GridComments(tmpGrid);
+       ragCorGClick(self);
+     end;
+  6: begin            // Graph
+       if not uGraphingActivated then
+       begin
+         chtChart.BottomAxis.Automatic := true;
+         chkGraphZoom.Checked := false;
+         chkGraphZoomClick(self);
+         memLab.Clear;
+         uLabLocalReportData.Clear;
+         uLabRemoteReportData.Clear;
+         tmpList := TStringList.Create;
+         try
+           StatusText('Retrieving data for graph...');
+           FastAssign(GetChart(Patient.DFN, date1, date2,
+             Piece(lblSpecimen.Caption, '^', 1),
+             Piece(lblSingleTest.Caption, '^', 1)), tmpList);
+           if tmpList.Count > 1 then
+           begin
+             chtChart.Visible := true;
+             GraphChart(lblSingleTest.Caption, tmpList);
+             chtChart.ZoomPercent(ZOOM_PERCENT);
+             for i := strtoint(Piece(tmpList[0], '^', 1)) + 1 to tmpList.Count - 1
+               do memLab.Lines.Add(tmpList[i]);
+             if memLab.Lines.Count < 2 then
+               memLab.Lines.Add('<No comments on specimens.>');
+             memLab.SelStart := 0;
+             lblGraph.Visible := false;
+           end
+           else
+           begin
+             lblGraph.Left := chtChart.Left + ((chtChart.Width - lblGraph.Width) div 2);
+             lblGraph.Top := 2;
+             lblGraph.Visible := true;
+             if Piece(lblSpecimen.Caption, '^', 1) = '0' then
+               pnlChart.Caption := '<No results can be graphed for ' +
+                 Piece(lblSingleTest.Caption, '^', 2) + ' in this date range.> '
+                 + 'Results may be available, but cannot be graphed. Please try an alternate view.'
+             else
+               pnlChart.Caption := '<No results can be graphed for ' +
+                 Piece(lblSingleTest.Caption, '^', 2)
+                 + ' (' + Piece(lblSpecimen.Caption, '^', 2) +
+                   ') in this date range.> '
+                 + 'Results may be available, but cannot be graphed. Please try an alternate view.';
+             chtChart.Visible := false;
+           end;
+         finally
+           tmpList.Free;
+         end;
+       end;
+     end;
+  9: begin            // Micro
+       memLab.Clear;
+       uLabLocalReportData.Clear;
+       uLabRemoteReportData.Clear;
+       StatusText('Retrieving microbiology data...');
+       GoRemoteOld(uLabRemoteReportData,0,4,'',uReportRPC,'','','',date1,date2);
+       TabControl1.OnChange(nil);
+       Micro(uLabLocalReportData, Patient.DFN, date1, date2, uReportRPC);
+       if uLabLocalReportData.Count < 1 then
+         uLabLocalReportData.Add('<No microbiology results for this date range.>');
+       if TabControl1.TabIndex < 1 then
+         QuickCopy(uLabLocalReportData,memLab);
+       memLab.Lines.Insert(0,' ');
+       memLab.Lines.Delete(0);
+       memLab.SelStart := 0;
+     end;
+  10: begin           // Lab Status
+       memLab.Clear;
+       uLabLocalReportData.Clear;
+       uLabRemoteReportData.Clear;
+       StatusText('Retrieving lab status data...');
+       GoRemoteOld(uLabRemoteReportData,9,1,'',uReportRPC,'',IntToStr(daysback),'',date1,date2);
+       TabControl1.OnChange(nil);
+       Reports(uLabLocalReportData,Patient.DFN, 'L:' + '9', '', IntToStr(daysback),'',
+         date1, date2, uReportRPC);
+       if uLabLocalReportData.Count < 1 then
+         uLabLocalReportData.Add('<No laboratory orders for this date range.>');
+       if TabControl1.TabIndex < 1 then
+         QuickCopy(uLabLocalReportData,memLab);
+       memLab.Lines.Insert(0,' ');
+       memLab.Lines.Delete(0);
+       memLab.SelStart := 0;
+      end;
+  else begin          //Anything Else
+         lstHeaders.Clear;
+         memLab.Clear;
+         uLabLocalReportData.Clear;
+         uLabRemoteReportData.Clear;
+         StatusText('Retrieving lab data...');
+         GoRemoteOld(uLabRemoteReportData, 1, 1, '', uReportRPC, '', IntToStr(daysback), '', date1, date2);
+         //GoRemoteOld(uLabRemoteReportData, StrToInt(Piece(uRptID,'^',1)), 1, '', uReportRPC, '', IntToStr(daysback), '', date1, date2);
+         TabControl1.OnChange(nil);
+         Reports(uLabLocalReportData,Patient.DFN, 'L:' + Piece(uRptID,'^',1), '',
+           IntToStr(daysback), '', date1, date2, uReportRPC);
+         if uLabLocalReportData.Count < 1 then
+           uLabLocalReportData.Add('<No data for this date range.>');
+         if TabControl1.TabIndex < 1 then
+           QuickCopy(uLabLocalReportData,memLab);
+         memLab.Lines.Insert(0,' ');
+         memLab.Lines.Delete(0);
+         memLab.SelStart := 0;
+       end;
+  end;
+//**************************************************************************
+          {LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+          if TabControl1.TabIndex < 1 then
+            QuickCopy(uLocalReportData,memLab); }
+        end;
+    end;
+    Screen.Cursor := crDefault;
+    StatusText('');
+    memLab.Lines.Insert(0,' ');
+    memLab.Lines.Delete(0);
+    {if WebBrowser1.Visible = true then             **Browser Remove**
+      begin
+        if uReportType = 'R' then
+          uHTMLDoc := HTML_PRE + uLocalReportData.Text + HTML_POST
+        else
+          uHTMLDoc := uHTMLPatient + uLocalReportData.Text;
+        WebBrowser1.Navigate('about:blank');
+      end;               }
+end;
+
+procedure TfrmLabs.lblDateEnter(Sender: TObject);
+begin
+  inherited;
+  amgrMain.AccessText[lblDate] := 'Date Collected '+lblDate.Caption;
+end;
+
+procedure TfrmLabs.lstDatesClick(Sender: TObject);
+var
+  tmpList: TStringList;
+  daysback: integer;
+  date1, date2: TFMDateTime;
+  today: TDateTime;
+  i: integer;
+  x,x1,x2,aID: string;
+begin
+  inherited;
+  uRemoteCount := 0;
+  if uFrozen = True then memo1.visible := False;
+  Screen.Cursor := crHourGlass;
+  DisplayHeading('');
+  uHTMLDoc := '';
+  //Rpt := lstReports.Items[lstReports.ItemIndex];
+  //uReportRPC := UpperCase(Piece(Rpt,'^',6));
+  chkBrowser;
+  if (lstDates.ItemID = 'S') then
+  begin
+    with calLabRange do
+    begin
+      if Execute then
+        if Length(TextOfStart) > 0 then
+          if Length(TextOfStop) > 0 then
+            begin
+              lstDates.ItemIndex := lstDates.Items.Add(RelativeStart + ';' +
+                RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+                DisplayHeading('');
+            end
+          else
+            lstDates.ItemIndex := -1
+        else
+          lstDates.ItemIndex := -1
+      else
+        lstDates.ItemIndex := -1;
+    end;
+  end;
+  today := FMToDateTime(floattostr(FMToday));
+  if lstDates.ItemIEN > 0 then
+    begin
+      daysback := lstDates.ItemIEN;
+      date1 := FMToday;
+      If daysback = 1 then
+        date2 := DateTimeToFMDateTime(today)
+      Else
+        date2 := DateTimeToFMDateTime(today - daysback);
+    end
+  else
+    BeginEndDates(date1,date2,daysback);
+  date1 := date1 + 0.2359;
+  uHTMLDoc := '';
+  //WebBrowser1.Navigate('about:blank');  **Browser Remove**
+  aID := piece(uRptID,':',1);
+  if aID = '21' then
+    begin                // Cumulative
+      lstHeaders.Clear;
+      memLab.Clear;
+      uLabLocalReportData.Clear;
+      uLabRemoteReportData.Clear;
+      StatusText('Retrieving data for cumulative report...');
+      GoRemoteOld(uLabRemoteReportData,0,2,'',uReportRPC,'',IntToStr(daysback),'',date1,date2);
+      TabControl1.OnChange(nil);
+      Cumulative(uLabLocalReportData, Patient.DFN, daysback, date1, date2, uReportRPC);
+      if uLabLocalReportData.Count > 0 then
+       begin
+         TabControl1.OnChange(nil);
+         if lstHeaders.Items.Count > 0 then lstHeaders.ItemIndex := 0;
+       end;
+      memLab.Lines.Insert(0,' ');
+      memLab.Lines.Delete(0);
+    end
+  else if aID = '3' then
+    begin            // Interim
+      memLab.Clear;
+      uLabLocalReportData.Clear;
+      uLabRemoteReportData.Clear;
+      StatusText('Retrieving data for interim report...');
+      GoRemoteOld(uLabRemoteReportData,0,3,'',uReportRPC,'','','',date1,date2);
+      TabControl1.OnChange(nil);
+      Interim(uLabLocalReportData, Patient.DFN, date1, date2, uReportRPC);
+      if uLabLocalReportData.Count < 1 then
+       uLabLocalReportData.Add('<No results for this date range.>');
+      if TabControl1.TabIndex < 1 then
+       QuickCopy(uLabLocalReportData,memLab);
+      memLab.Lines.Insert(0,' ');
+      memLab.Lines.Delete(0);
+      memLab.SelStart := 0;
+    end
+  else if aID = '4' then
+    begin            // Interim for Selected Tests
+      memLab.Clear;
+      uLabLocalReportData.Clear;
+      uLabRemoteReportData.Clear;
+      try
+       StatusText('Retrieving data for selected tests...');
+       FastAssign(InterimSelect(Patient.DFN, date1, date2, lstTests.Items), uLabLocalReportData);
+       if uLabLocalReportData.Count > 0 then
+         QuickCopy(uLabLocalReportData,memLab)
+       else
+         memLab.Lines.Add('<No results for selected tests in this date range.>');
+       memLab.SelStart := 0;
+      finally
+       //tmpList.Free;
+      end;
+   end
+  else if aID = '5' then
+    begin            // Worksheet
+      chtChart.BottomAxis.Automatic := true;
+      chkZoom.Checked := false;
+      //chkZoomClick(self);
+      chkAbnormals.Checked := false;
+      memLab.Clear;
+      uLabLocalReportData.Clear;
+      uLabRemoteReportData.Clear;
+      grdLab.Align := alClient;
+      StatusText('Retrieving data for worksheet...');
+      FastAssign(Worksheet(Patient.DFN, date1, date2,
+       Piece(lblSpecimen.Caption, '^', 1), lstTests.Items), tmpGrid);
+      if ragHorV.ItemIndex = 0 then
+       HGrid(tmpGrid)
+      else
+       VGrid(tmpGrid);
+      GraphList(tmpGrid);
+      GridComments(tmpGrid);
+      ragCorGClick(self);
+   end
+  else if aID = '6' then
+    begin            // Graph
+     if not uGraphingActivated then
+       begin
+         chtChart.BottomAxis.Automatic := true;
+         chkGraphZoom.Checked := false;
+         chkGraphZoomClick(self);
+         memLab.Clear;
+         uLabLocalReportData.Clear;
+         uLabRemoteReportData.Clear;
+         tmpList := TStringList.Create;
+         try
+           StatusText('Retrieving data for graph...');
+           FastAssign(GetChart(Patient.DFN, date1, date2,
+             Piece(lblSpecimen.Caption, '^', 1),
+             Piece(lblSingleTest.Caption, '^', 1)), tmpList);
+           if tmpList.Count > 1 then
+           begin
+             chtChart.Visible := true;
+             GraphChart(lblSingleTest.Caption, tmpList);
+             chtChart.ZoomPercent(ZOOM_PERCENT);
+             for i := strtoint(Piece(tmpList[0], '^', 1)) + 1 to tmpList.Count - 1
+               do memLab.Lines.Add(tmpList[i]);
+             if memLab.Lines.Count < 2 then
+               memLab.Lines.Add('<No comments on specimens.>');
+             memLab.SelStart := 0;
+             lblGraph.Visible := false;
+           end
+           else
+           begin
+             lblGraph.Left := chtChart.Left + ((chtChart.Width - lblGraph.Width) div 2);
+             lblGraph.Top := 2;
+             lblGraph.Visible := true;
+             if Piece(lblSpecimen.Caption, '^', 1) = '0' then
+               pnlChart.Caption := '<No results can be graphed for ' +
+                 Piece(lblSingleTest.Caption, '^', 2) + ' in this date range.> '
+                 + 'Results may be available, but cannot be graphed. Please try an alternate view.'
+             else
+               pnlChart.Caption := '<No results can be graphed for ' +
+                 Piece(lblSingleTest.Caption, '^', 2)
+                 + ' (' + Piece(lblSpecimen.Caption, '^', 2) +
+                   ') in this date range.> '
+                 + 'Results may be available, but cannot be graphed. Please try an alternate view.';
+             chtChart.Visible := false;
+           end;
+         finally
+           tmpList.Free;
+         end;
+       end;
+    end
+  else if aID = '9' then
+    begin            // Micro
+      memLab.Clear;
+      uLabLocalReportData.Clear;
+      uLabRemoteReportData.Clear;
+      StatusText('Retrieving microbiology data...');
+      GoRemoteOld(uLabRemoteReportData,0,4,'',uReportRPC,'','','',date1,date2);
+      TabControl1.OnChange(nil);
+      Micro(uLabLocalReportData, Patient.DFN, date1, date2, uReportRPC);
+      if uLabLocalReportData.Count < 1 then
+       uLabLocalReportData.Add('<No microbiology results for this date range.>');
+      if TabControl1.TabIndex < 1 then
+       QuickCopy(uLabLocalReportData,memLab);
+      memLab.Lines.Insert(0,' ');
+      memLab.Lines.Delete(0);
+      memLab.SelStart := 0;
+    end
+  else if aID = '10' then
+    begin           // Lab Status
+      memLab.Clear;
+      uLabLocalReportData.Clear;
+      uLabRemoteReportData.Clear;
+      StatusText('Retrieving lab status data...');
+      GoRemoteOld(uLabRemoteReportData,10,1,'',uReportRPC,'',IntToStr(daysback),'',date1,date2);
+      TabControl1.OnChange(nil);
+      Reports(uLabLocalReportData,Patient.DFN, 'L:10', '', IntToStr(daysback),'',
+       date1, date2, uReportRPC);
+      if uLabLocalReportData.Count < 1 then
+        uLabLocalReportData.Add('<No laboratory orders for this date range.>');
+      if TabControl1.TabIndex < 1 then
+        QuickCopy(uLabLocalReportData,memLab);
+      memLab.Lines.Insert(0,' ');
+      memLab.Lines.Delete(0);
+      memLab.SelStart := 0;
+    end
+  else begin          //Anything Else
+         lstHeaders.Clear;
+         memLab.Clear;
+         uLabLocalReportData.Clear;
+         uLabRemoteReportData.Clear;
+         StatusText('Retrieving lab data...');
+         //GoRemoteOld(uLabRemoteReportData, StrToInt(Piece(uRptID,'^',1)), 1, '', uReportRPC, '', IntToStr(daysback), '', date1, date2);
+         GoRemoteOld(uLabRemoteReportData, 1, 1, '', uReportRPC, '', IntToStr(daysback), '', date1, date2);
+         TabControl1.OnChange(nil);
+         Reports(uLabLocalReportData,Patient.DFN, 'L:' + Piece(uRptID,'^',1), '',
+           IntToStr(daysback), '', date1, date2, uReportRPC);
+         if uLabLocalReportData.Count < 1 then
+           uLabLocalReportData.Add('<No data for this date range.>');
+         if TabControl1.TabIndex < 1 then
+           QuickCopy(uLabLocalReportData,memLab);
+         memLab.Lines.Insert(0,' ');
+         memLab.Lines.Delete(0);
+         memLab.SelStart := 0;
+       end;
+  if uReportType = 'R' then
+    uHTMLDoc := HTML_PRE + uLabLocalReportData.Text + HTML_POST
+  else
+    uHTMLDoc := uHTMLPatient + uLabLocalReportData.Text;
+  Screen.Cursor := crDefault;
+  x := lstDates.DisplayText[lstDates.ItemIndex];
+  x1 := piece(x,' ',1);
+  x2 := piece(x,' ',2);
+  if not(uRptID = '1:MOST RECENT') and (Uppercase(Copy(x1,1,1)) = 'T') and (Uppercase(Copy(x2,1,1)) = 'T') then
+    DisplayHeading(piece(x,' ',1) + ';' + piece(x,' ',2))
+  else
+    DisplayHeading('d' + lstDates.ItemID);
+  StatusText('');
+end;
+
+procedure TfrmLabs.cmdOtherTestsClick(Sender: TObject);
+begin
+  inherited;
+  tvReportsClick(self);
+end;
+
+procedure TfrmLabs.GraphList(griddata: TStrings);
+var
+  i, j: integer;
+  ok: boolean;
+  testname, testnum, testnum1, line: string;
+begin
+  lstTestGraph.Clear;
+  for i := 0 to lstTests.Items.Count - 1 do
+  begin
+    testnum := Piece(lstTests.Items[i], '^', 1);
+    testname := Piece(lstTests.Items[i], '^', 2);
+    ok := false;
+    for j := strtoint(Piece(griddata[0], '^', 4)) + 1 to strtointdef(Piece(griddata[0], '^', 5), 0) do
+    begin
+      testnum1 := Piece(griddata[j - 1], '^', 1);
+      if testnum1 = testnum then
+      begin
+        ok := true;
+        line := testnum + '^' + testname + ' (' + MixedCase(Piece(griddata[j - 1], '^', 2)) + ')^';
+        line := line + Pieces(griddata[j - 1], '^', 3, 6);
+        lstTestGraph.Items.Add(line);
+      end;
+    end;
+    if not ok then lstTestGraph.Items.Add(lstTests.Items[i]);
+  end;
+end;
+
+procedure TfrmLabs.HGrid(griddata: TStrings);
+var
+  testcnt, datecnt, datacnt, linecnt, offset, x, y, i: integer;
+  DisplayDateTime: string;
+begin
+  offset := 0;
+  testcnt := strtoint(Piece(griddata[offset], '^', 1));
+  datecnt := strtoint(Piece(griddata[offset], '^', 2));
+  datacnt := strtoint(Piece(griddata[offset], '^', 3));
+  linecnt := testcnt + datecnt + datacnt;
+  if chkAbnormals.Checked and (linecnt > 0) then
+  begin
+    offset := linecnt + 1;
+    testcnt := strtoint(Piece(griddata[offset], '^', 1));
+    datecnt := strtoint(Piece(griddata[offset], '^', 2));
+    datacnt := strtoint(Piece(griddata[offset], '^', 3));
+    linecnt := testcnt + datecnt + datacnt;
+  end;
+  with grdLab do
+  begin
+    if testcnt = 0 then ColCount := 3 else ColCount := testcnt + 2;
+    if datecnt = 0 then RowCount := 2 else RowCount := datecnt + 1;
+    DefaultColWidth := ResizeWidth( BaseFont, MainFont, 60);
+    ColWidths[0] := ResizeWidth( BaseFont, MainFont, 80);
+    FixedCols := 2;
+    FixedRows := 1;
+    for y := 0 to RowCount - 1 do
+      for x := 0 to ColCount - 1 do
+        Cells[x, y] := '';
+    Cells[0, 0] := 'Date/Time';
+    Cells[1, 0] := 'Specimen';
+    for i := 1 to testcnt do
+    begin
+      Cells[i + 1, 0] := Piece(griddata[i + offset], '^', 3);
+    end;
+    if datecnt = 0 then
+    begin
+      Cells[0, 1] := 'no results';
+      for x := 1 to ColCount - 1 do
+        Cells[x, 1] := '';
+    end;
+    for i := testcnt + 1 to testcnt + datecnt do
+    begin
+      //------------------------------------------------------------------------------------------
+      //v27.2 - RV - PSI-05-118 / Remedy HD0000000123277 - don't show "00:00" if no time present
+      if LabPatchInstalled then        // Requires lab patch in const "PSI_05_118"
+      begin
+        DisplayDateTime := Piece(griddata[i + offset], '^', 2);
+        if length(DisplayDateTime) > 7 then
+          Cells[0, i - testcnt] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(DisplayDateTime))
+        else if length(DisplayDateTime) > 0 then
+          Cells[0, i - testcnt] := FormatFMDateTime('mm/dd/yy',MakeFMDateTime(DisplayDateTime))
+        else
+          Cells[0, i - testcnt] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(Piece(griddata[i + offset], '^', 2)));
+      end
+      else                             // If no lab patch in const "PSI_05_118", continue as is
+      begin
+        Cells[0, i - testcnt] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(Piece(griddata[i + offset], '^', 2)));
+      end;
+      //------------------------------------------------------------------------------------------
+      Cells[1, i - testcnt] := MixedCase(Piece(griddata[i + offset], '^', 4)) + '  ' + Piece(griddata[i + offset], '^', 5);
+    end;
+    for i := testcnt + datecnt + 1 to linecnt do
+    begin
+      y := strtoint(Piece(griddata[i + offset], '^', 1));
+      x := strtoint(Piece(griddata[i + offset], '^', 2)) + 1;
+      Cells[x, y]  := Piece(griddata[i + offset], '^', 3) + ' ' + Piece(griddata[i + offset], '^', 4);
+    end;
+  end;
+end;
+
+procedure TfrmLabs.VGrid(griddata: TStrings);
+var
+  testcnt, datecnt, datacnt, linecnt, offset, x, y, i: integer;
+  DisplayDateTime: string;
+begin
+  offset := 0;
+  testcnt := strtoint(Piece(griddata[offset], '^', 1));
+  datecnt := strtoint(Piece(griddata[offset], '^', 2));
+  datacnt := strtoint(Piece(griddata[offset], '^', 3));
+  linecnt := testcnt + datecnt + datacnt;
+  if chkAbnormals.Checked and (linecnt > 0) then
+  begin
+    offset := linecnt + 1;
+    testcnt := strtoint(Piece(griddata[offset], '^', 1));
+    datecnt := strtoint(Piece(griddata[offset], '^', 2));
+    datacnt := strtoint(Piece(griddata[offset], '^', 3));
+    linecnt := testcnt + datecnt + datacnt;
+  end;
+  with grdLab do
+  begin
+    if datecnt = 0 then ColCount := 2 else ColCount := datecnt + 1;
+    if testcnt = 0 then RowCount := 3 else RowCount := testcnt + 2;
+    DefaultColWidth := ResizeWidth( BaseFont, MainFont, 80);
+    ColWidths[0] := ResizeWidth( BaseFont, MainFont, 60);
+    FixedCols := 1;
+    FixedRows := 2;
+    for y := 0 to RowCount - 1 do
+      for x := 0 to ColCount - 1 do
+        Cells[x, y] := '';
+    Cells[0, 0] := 'Date/Time';
+    Cells[0, 1] := 'Specimen';
+    for i := 1 to testcnt do
+    begin
+      Cells[0, i + 1] := Piece(griddata[i + offset], '^', 3);
+    end;
+    if datecnt = 0 then
+    begin
+      Cells[1, 0] := 'no results';
+      for x := 1 to RowCount - 1 do
+        Cells[x, 1] := '';
+    end;
+    for i := testcnt + 1 to testcnt + datecnt do
+    begin
+      //------------------------------------------------------------------------------------------
+      if LabPatchInstalled then        // Requires lab patch in const "PSI_05_118"
+      begin
+        DisplayDateTime := Piece(griddata[i + offset], '^', 2);
+        if length(DisplayDateTime) > 7 then
+          Cells[i - testcnt, 0] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(DisplayDateTime))
+        else if length(DisplayDateTime) > 0 then
+          Cells[i - testcnt, 0] := FormatFMDateTime('mm/dd/yy',MakeFMDateTime(DisplayDateTime))
+        else
+          Cells[i - testcnt, 0] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(Piece(griddata[i + offset], '^', 2)));
+      end
+      else                             // If no lab patch in const "PSI_05_118", continue as is
+      begin
+        Cells[i - testcnt, 0] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(Piece(griddata[i + offset], '^', 2)));
+      end;
+      //------------------------------------------------------------------------------------------
+      Cells[i - testcnt, 1] := MixedCase(Piece(griddata[i + offset], '^', 4));
+    end;
+    for i := testcnt + datecnt + 1 to linecnt do
+    begin
+      x := strtoint(Piece(griddata[i + offset], '^', 1));
+      y := strtoint(Piece(griddata[i + offset], '^', 2)) + 1;
+      Cells[x, y]  := Piece(griddata[i + offset], '^', 3) + ' ' + Piece(griddata[i + offset], '^', 4);
+    end;
+  end;
+end;
+
+procedure TfrmLabs.GridComments(aitems: TStrings);
+var
+  i, start: integer;
+begin
+  start := strtointdef(Piece(aitems[0], '^', 5), 1);
+  memLab.Clear;
+  uLabLocalReportData.Clear;
+  uLabRemoteReportData.Clear;
+  for i := start to aitems.Count - 1 do
+    memLab.Lines.Add(aitems[i]);
+  if (memLab.Lines.Count = 0) and (aitems.Count > 1) then
+    memLab.Lines.Add('<No comments on specimens.>');
+  memLab.SelStart := 0;
+end;
+
+procedure TfrmLabs.FormDestroy(Sender: TObject);
+var
+  i: integer;
+  aColChange: string;
+begin
+  inherited;
+  if length(uColChange) > 0 then
+    begin
+      aColChange := '';
+      for i := 0 to lvReports.Columns.Count - 1 do
+        aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ',';
+      if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then
+        SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange);
+      uColChange := '';
+    end;
+  RemoteQueryAbortAll;
+  tmpGrid.free;
+  uLabLocalReportData.Free;
+  uLabRemoteReportData.Free;
+  uTreeStrings.Free;
+  uEmptyImageList.Free;
+  uColumns.Free;
+  uLocalReportData.Free;
+  uRemoteReportData.Free;
+end;
+
+procedure TfrmLabs.FillGrid(agrid: TStringGrid; aitems: TStrings);
+var
+  testcnt, x, y, i: integer;
+begin
+  testcnt := strtoint(Piece(aitems[0], '^', 1));
+  with agrid do
+  begin
+    if testcnt = 0 then RowCount := 3 else RowCount := testcnt + 1;
+    ColCount := 5;
+    DefaultColWidth := agrid.Width div ColCount - 2;
+    ColWidths[0] := agrid.Width div 4;
+    ColWidths[4] := agrid.Width div 4;
+    ColWidths[2] := agrid.Width div 9;
+    ColWidths[3] := agrid.Width div 6;
+    ColWidths[1] := agrid.Width - ColWidths[0] - ColWidths[2] - ColWidths[3] - ColWidths[4] - 8;
+    FixedCols := 0;
+    FixedRows := 1;
+    for y := 0 to RowCount - 1 do
+      for x := 0 to ColCount - 1 do
+        Cells[x, y] := '';
+    Cells[0, 0] := 'Test';
+    Cells[1, 0] := 'Result';
+    Cells[2, 0] := 'Flag';
+    Cells[3, 0] := 'Units';
+    Cells[4, 0] := 'Ref Range';
+    for i := 1 to testcnt do
+    begin
+      Cells[0, i] := Piece(aitems[i], '^', 2);
+      Cells[1, i] := Piece(aitems[i], '^', 3);
+      Cells[2, i] := Piece(aitems[i], '^', 4);
+      Cells[3, i] := Piece(aitems[i], '^', 5);
+      Cells[4, i] := Piece(aitems[i], '^', 6);
+    end;
+  end;
+end;
+
+procedure TfrmLabs.FillComments(amemo: TRichEdit; aitems:TStrings);
+var
+  testcnt, i: integer;
+  specimen, accession, provider: string;
+begin
+  amemo.Lines.Clear;
+  specimen := Piece(aitems[0], '^', 5);
+  accession := Piece(aitems[0], '^', 6);
+  provider := Piece(aitems[0], '^', 7);
+  amemo.Lines.Add('Specimen: ' + specimen + ';    Accession: ' + accession + ';    Provider: ' + provider);
+  testcnt := strtoint(Piece(aitems[0], '^', 1));
+  for i := testcnt + 1 to aitems.Count - 1 do
+    amemo.Lines.Add(aitems[i]);
+  amemo.SelStart := 0;
+end;
+
+procedure TfrmLabs.GetInterimGrid(adatetime: TFMDateTime; direction: integer);
+var
+  tmpList: TStringList;
+  nexton, prevon: boolean;
+  newest, oldest, DisplayDate: string;
+begin
+  tmpList := TStringList.Create;
+  GetNewestOldest(Patient.DFN, newest, oldest);  //****** PATCH
+  nexton := true;
+  prevon := true;
+  try
+    FastAssign(InterimGrid(Patient.DFN, adatetime, direction, uFormat), tmpList);
+    if tmpList.Count > 0 then
+    begin
+      lblDateFloat.Caption := Piece(tmpList[0], '^', 3);
+      uFormat := strtointdef(Piece(tmpList[0], '^', 9), 1);
+      //------------------------------------------------------------------------------------------
+      //v27.1 - RV - PSI-05-118 / Remedy HD0000000123277 - don't show "00:00" if no time present
+      if LabPatchInstalled then        // Requires lab patch in const "PSI_05_118"
+      begin
+        DisplayDate := Piece(tmpList[0], '^', 3);
+        if length(DisplayDate) > 7 then
+          lblDate.Caption := FormatFMDateTime('MMM DD, YYYY hh:nn', strtofloat(DisplayDate))
+        else if length(DisplayDate) > 0 then
+          lblDate.Caption := FormatFMDateTime('MMM DD, YYYY', strtofloat(DisplayDate))
+        else
+          if length(lblDateFloat.Caption) > 0 then
+            lblDate.Caption := FormatFMDateTime('MMM DD, YYYY hh:nn', strtofloat(lblDateFloat.Caption));
+      end
+      else                             // If no lab patch in const "PSI_05_118", continue as is
+      begin
+        if length(lblDateFloat.Caption) > 0 then
+          lblDate.Caption := FormatFMDateTime('MMM DD, YYYY hh:nn', strtofloat(lblDateFloat.Caption));
+      end;
+      //------------------------------------------------------------------------------------------
+      if length(lblDateFloat.Caption) < 1
+      then
+      begin
+        lblDateFloat.Caption := FloatToStr(adatetime);
+        nexton := false;
+      end
+      else
+      begin
+        nexton := lblDateFloat.Caption <> newest;
+        prevon := lblDateFloat.Caption <> oldest;
+      end;
+      if (not nexton) and (uFormat = 3) then
+        nexton := true;
+      if (not prevon) and (uFormat = 2) then
+        prevon := true;
+    end
+    else
+    begin
+      lblDateFloat.Caption := '';
+      lblDate.Caption := '';
+    end;
+    cmdNext.Enabled := nexton;
+    cmdRecent.Enabled := nexton;
+    lblNext.Enabled := nexton;
+    lblRecent.Enabled := nexton;
+    cmdPrev.Enabled := prevon;
+    cmdOld.Enabled := prevon;
+    lblPrev.Enabled := prevon;
+    lblOld.Enabled := prevon;
+    if cmdOld.Enabled and cmdRecent.Enabled then
+      lblMostRecent.Visible := false
+    else
+    begin
+      lblMostRecent.Visible := true;
+      if (not cmdOld.Enabled) and (not cmdRecent.Enabled) then
+        lblMostRecent.Caption := 'No Lab Results'
+      else if cmdOld.Enabled then
+        lblMostRecent.Caption := 'Most Recent Lab Result'
+      else
+        lblMostRecent.Caption := 'Oldest Lab Result';
+    end;
+    if tmpList.Count > 0 then
+    begin
+      if Piece(tmpList[0], '^', 2) = 'CH' then
+      begin
+        FillGrid(grdLab, tmpList);
+        FillComments(memLab, tmpList);
+        if uScreenSplitMoved = false then
+          begin
+            pnlRightTop.Height := pnlRight.Height - (pnlRight.Height div 5);
+            uScreenSplitLoc := sptHorzRight.Top;
+          end
+        else
+          pnlRightTop.Height := uScreenSplitLoc;
+        pnlRightBottom.Height := pnlLeft.Height div 5;
+        memLab.Height := pnlLeft.Height div 5;
+        memLab.Lines.Insert(0,' ');
+        memLab.Lines.Delete(0);
+        memLab.SelStart := 0;
+        grdLab.Align := alClient;
+        grdLab.Visible := true;
+        memLab.Visible := true;
+        pnlFooter.Height := lblHeading.Height + 5;
+        pnlFooter.Top := pnlLeft.Height - pnlFooter.Height;
+        lblFooter.Caption := '  KEY: "L" = Abnormal Low, "H" = Abnormal High, "*" = Critical Value';
+        lblFooter.Align := alTop;
+        pnlFooter.Visible := true;
+        if (grdLab.VisibleRowCount + 1) < grdLab.RowCount then
+          grdLab.ColWidths[4] := grdLab.ColWidths[4] - 18;
+        memLab.Align := alClient;
+        memLab.Repaint;
+      end;
+      if Piece(tmpList[0], '^', 2) = 'MI' then
+      begin
+        tmpList.Delete(0);
+        QuickCopy(tmpList, memLab);
+        memLab.SelStart := 0;
+        grdLab.Visible := false;
+        pnlFooter.Visible := false;
+        sptHorzRight.Visible := true;
+        pnlRightTop.Height := pnlHeader.Height + TabControl1.Height;
+        memLab.Height := pnlRight.Height - (lblHeading.Height + lblTitle.Height + pnlHeader.Height);
+        pnlRightTop.Visible := true;
+        memLab.Align := alClient;
+        memLab.Repaint;
+      end;
+    end
+    else
+    begin
+      grdLab.Visible := false;
+      pnlFooter.Visible := false;
+      memLab.Align := alClient;
+    end;
+  finally
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmLabs.cmdNextClick(Sender: TObject);
+var
+  HadFocus: boolean;
+begin
+  inherited;
+  HadFocus := Screen.ActiveControl = cmdNext;
+  StatusText('Retrieving next lab data...');
+  if Length(lblDateFloat.Caption) > 0 then GetInterimGrid(strtofloat(lblDateFloat.Caption), -1);
+  StatusText('');
+  if HadFocus then begin
+    if cmdNext.Enabled then cmdNext.SetFocus
+    else if cmdPrev.Enabled then cmdPrev.SetFocus
+    else tvReports.SetFocus; 
+  end;
+end;
+
+procedure TfrmLabs.cmdPrevClick(Sender: TObject);
+var
+  HadFocus: boolean;
+begin
+  inherited;
+  HadFocus := Screen.ActiveControl = cmdPrev;
+  StatusText('Retrieving previous lab data...');
+  if Length(lblDateFloat.Caption) > 0 then GetInterimGrid(strtofloat(lblDateFloat.Caption), 1);
+  StatusText('');
+  if HadFocus then begin
+    if cmdPrev.Enabled then cmdPrev.SetFocus
+    else if cmdNext.Enabled then cmdNext.SetFocus
+    else tvReports.Setfocus;  
+  end;
+end;
+
+procedure TfrmLabs.WorksheetChart(test: string; aitems: TStrings);
+
+function OkFloatValue(value: string): boolean;
+var
+  i, j: integer;
+  first, second: string;
+begin
+  Result := false;
+  i := strtointdef(value, -99999);
+  if i <> -99999 then Result := true
+  else if pos('.', Copy(Value, Pos('.', Value) + 1, Length(Value))) > 0 then Result := false
+  else
+  begin
+    first := Piece(value, '.', 1);
+    second := Piece(value, '.', 2);
+    if length(second) > 0 then
+    begin
+      i := strtointdef(first, -99999);
+      j := strtointdef(second, -99999);
+      if (i <> -99999) and (j <> -99999) then Result := true;
+    end
+    else
+    begin
+      i :=strtointdef(first, -99999);
+      if i <> -99999 then Result := true;
+    end;
+  end;
+end;
+
+var
+  datevalue, oldstart, oldend: TDateTime;
+  labvalue: double;
+  i, numtest, numcol, numvalues, valuecount: integer;
+  high, low, start, stop, numspec, value, testcheck, units, specimen, testnum, testorder: string;
+begin
+  if chkZoom.Checked and chtChart.Visible then
+  begin
+    oldstart := chtChart.BottomAxis.Minimum;
+    oldend := chtChart.BottomAxis.Maximum;
+    chtChart.UndoZoom;
+    chtChart.BottomAxis.Automatic := false;
+    chtChart.BottomAxis.Minimum := oldstart;
+    chtChart.BottomAxis.Maximum := oldend;
+  end
+  else
+  begin
+    chtChart.BottomAxis.Automatic := true;
+  end;
+  chtChart.Visible := true;
+  valuecount := 0;
+  testnum := Piece(test, '^', 1);
+  specimen := Piece(test, '^', 3);
+  units := Piece(test, '^', 4);
+  low := Piece(test, '^', 5);
+  high := Piece(test, '^', 6);
+  numtest := strtoint(Piece(aitems[0], '^', 1));
+  numcol := strtoint(Piece(aitems[0], '^', 2));
+  numvalues := strtoint(Piece(aitems[0], '^', 3));
+  serHigh.Clear;  serLow.Clear;  serTest.Clear;
+  if numtest > 0 then
+  begin
+  for i := 1 to numtest do
+    if testnum = Piece(aitems[i], '^', 2) then
+    begin
+      testorder := inttostr(i);
+      break;
+    end;
+  GetStartStop(start, stop, aitems);
+  if OKFloatValue(high) then
+  begin
+    serHigh.AddXY(FMToDateTime(start), strtofloat(high), '',clTeeColor);
+    serHigh.AddXY(FMToDateTime(stop), strtofloat(high), '',clTeeColor);
+  end;
+  if OKFloatValue(low) then
+  begin
+    serLow.AddXY(FMToDateTime(start), strtofloat(low), '',clTeeColor);
+    serLow.AddXY(FMToDateTime(stop), strtofloat(low), '',clTeeColor);
+  end;
+  numspec := Piece(specimen, '^', 1);
+  chtChart.Legend.Color := grdLab.Color;
+  chtChart.Title.Font.Size := MainFontSize;
+  chtChart.LeftAxis.Title.Caption := units;
+  serTest.Title := Piece(test, '^', 2);
+  serHigh.Title := 'Ref High ' + high;
+  serLow.Title := 'Ref Low ' + low;
+  testcheck := testorder;
+  for i := numtest + numcol + 1 to numtest + numcol + numvalues do
+    if Piece(aitems[i], '^', 2) = testcheck then
+      if Piece(aitems[numtest + strtoint(Piece(aitems[i], '^', 1))], '^', 3) = numspec then
+      begin
+        value := Piece(aitems[i], '^', 3);
+        if OkFloatValue(value) then
+        begin
+          labvalue := strtofloat(value);
+          datevalue := FMToDateTime(Piece(aitems[numtest + strtoint(Piece(aitems[i], '^', 1))], '^', 2));
+          serTest.AddXY(datevalue, labvalue, '', clTeeColor);
+          inc(valuecount);
+        end;
+      end;
+  end;
+  if valuecount = 0 then
+  begin
+    lblGraph.Left := chtChart.Left + ((chtChart.Width - lblGraph.Width) div 2);
+    lblGraph.Top := 2;
+    lblGraph.Visible := true;
+    if length(Piece(specimen, '^', 2)) > 0 then
+      pnlChart.Caption := '<No results can be graphed for ' + serTest.Title + ' in this date range.> '
+    else
+      pnlChart.Caption := '<No results can be graphed for ' + Piece(test, '^', 2) + ' in this date range.>';
+    chtChart.Visible := false;
+  end
+  else
+    lblGraph.Visible := false;
+  if not chkZoom.Checked then
+  begin
+    chtChart.UndoZoom;
+    chtChart.ZoomPercent(ZOOM_PERCENT);
+  end;
+end;
+
+procedure TfrmLabs.GetStartStop(var start, stop: string; aitems: TStrings);
+var
+  numtest, numcol: integer;
+begin
+  numtest := strtoint(Piece(aitems[0], '^', 1));
+  numcol := strtoint(Piece(aitems[0], '^', 2));
+  start := Piece(aitems[numtest + 1], '^', 2);
+  stop := Piece(aitems[numtest + numcol], '^', 2);
+end;
+
+procedure TfrmLabs.cmdRecentClick(Sender: TObject);
+var
+  HadFocus: boolean;
+begin
+  inherited;
+  HadFocus := Screen.ActiveControl = cmdRecent;
+  StatusText('Retrieving most recent lab data...');
+  uFormat := 1;
+  GetInterimGrid(FMToday + 0.2359, 1);
+  StatusText('');
+  if HadFocus and cmdPrev.Enabled then cmdPrev.SetFocus;
+end;
+
+procedure TfrmLabs.cmdOldClick(Sender: TObject);
+var
+  HadFocus: boolean;
+begin
+  inherited;
+  HadFocus := Screen.ActiveControl = cmdOld;
+  StatusText('Retrieving oldest lab data...');
+  uFormat := 1;
+  GetInterimGrid(2700101, -1);
+  if HadFocus and cmdNext.Enabled then cmdNext.SetFocus;
+  StatusText('');
+end;
+
+procedure TfrmLabs.FormResize(Sender: TObject);
+//var
+  //aID: integer;
+begin
+  inherited;
+  AlignList;
+  lblHeaders.Height := lblReports.Height;
+  lblDates.Height := lblReports.Height;
+  lblHeading.Height := lblReports.Height;
+  pnlFooter.Height := lblReports.Height + 5;
+  lblFooter.Height := lblReports.Height;
+  {aID := 0;
+  if CharAt(uRPTID,2) =':' then
+    aID := StrToInt(piece(uRptID,':',1));
+  if (aID = 0) and (CharAt(uRPTID,3) =':') then
+    aID := StrToInt(piece(uRptID,':',1)); }
+  {case lstReports.ItemIEN of   }
+  {case aID of
+  1: begin                // Most Recent
+       pnlHeader.Align := alTop;
+       memLab.Height := pnlLeft.Height div 5;
+       memLab.Top := pnlLeft.Height - pnlFooter.Height - memLab.Height;
+       memLab.Align := alBottom;
+       grdLab.Align := alClient;
+       if tmpGrid.Count > 0 then HGrid(tmpGrid);
+       if (grdLab.VisibleRowCount + 1) < grdLab.RowCount then
+         grdLab.ColWidths[4] := grdLab.ColWidths[4] - 18;
+       pnlFooter.Top := pnlLeft.Height - pnlFooter.Height;
+       pnlFooter.Align := alBottom;
+       memLab.Repaint;
+       pnlRightTop.Height := pnlLeft.Height - (pnlLeft.Height div 5);
+                      //*pnlRightTop.Visible := true;
+                      //*pnlButtons.Visible := true;
+                      //*pnlWorksheet.Visible := false;
+                      //*pnlGraph.Visible := false;
+                      //memLab.Align := alBottom;
+                      sptHorzRight.Visible := true;
+                      pnlRightBottom.Height := pnlLeft.Height div 5;
+                      //memLab.Height := pnlLeft.Height div 5;
+                      //grdLab.Align := alClient;
+     end;
+  21: begin               // Cumulative
+       pnlFooter.Top := pnlLeft.Height - pnlFooter.Height;
+       pnlFooter.Align := alBottom;
+       lblFooter.Align := alTop;
+       memLab.Align := alClient;
+       memLab.Repaint;
+     end;
+  3: begin               // Interim
+       pnlFooter.Top := pnlLeft.Height - pnlFooter.Height;
+       pnlFooter.Align := alBottom;
+       lblFooter.Caption := '  KEY: "L" = Abnormal Low, "H" = Abnormal High, "*" = Critical Value';
+       lblFooter.Align := alTop;
+       memLab.Align := alClient;
+       memLab.Repaint;
+     end;
+  4: begin               // Interim for Selected Tests
+       pnlFooter.Top := pnlLeft.Height - pnlFooter.Height;
+       pnlFooter.Align := alBottom;
+       lblFooter.Caption := '  KEY: "L" = Abnormal Low, "H" = Abnormal High, "*" = Critical Value';
+       lblFooter.Align := alTop;
+       memLab.Align := alClient;
+       memLab.Repaint;
+     end;
+  5: begin               // Worksheet
+       pnlHeader.Align := alTop;
+       grdLab.Align := alClient;
+       ragCorGClick(self);
+       pnlFooter.Top := pnlLeft.Height - pnlFooter.Height;
+       pnlFooter.Align := alBottom;
+     end;
+  6: begin               // Graph
+       if not uGraphingActivated then
+       begin
+         memLab.Height := pnlLeft.Height div 4;
+         memLab.Align := alBottom;
+         pnlChart.Top := pnlHeader.Height;
+         pnlChart.Align := alClient;
+         memLab.Height := pnlLeft.Height div 4;
+         memLab.Align := alBottom;
+         memLab.Repaint;
+       end;
+     end;
+  20: begin               // Anatomic Path
+       memLab.Repaint;
+     end;
+  2: begin               // Blood Bank
+       memLab.Repaint;
+     end;
+  9: begin               // Microbiology
+       memLab.Repaint;
+     end;
+  10: begin              // Lab Status
+        memLab.Repaint;
+      end;
+  end; }
+end;
+
+procedure TfrmLabs.pnlRightResize(Sender: TObject);
+begin
+  inherited;
+  pnlRight.Refresh;
+  lblFooter.Height := lblHeading.Height;
+end;
+
+function TfrmLabs.FMToDateTime(FMDateTime: string): TDateTime;
+var
+  x, Year: string;
+begin
+  { Note: TDateTime cannot store month only or year only dates }
+  x := FMDateTime + '0000000';
+  if Length(x) > 12 then x := Copy(x, 1, 12);
+  if StrToInt(Copy(x, 9, 4)) > 2359 then x := Copy(x,1,7) + '.2359';
+  Year := IntToStr(17 + StrToInt(Copy(x,1,1))) + Copy(x,2,2);
+  x := Copy(x,4,2) + '/' + Copy(x,6,2) + '/' + Year + ' ' + Copy(x,9,2) + ':' + Copy(x,11,2);
+  Result := StrToDateTime(x);
+end;
+
+procedure TfrmLabs.chkValuesClick(Sender: TObject);
+begin
+  inherited;
+  serTest.Marks.Visible := chkValues.Checked;
+end;
+
+procedure TfrmLabs.chk3DClick(Sender: TObject);
+begin
+  inherited;
+  chtChart.View3D := chk3D.Checked;
+end;
+
+procedure TfrmLabs.GraphChart(test: string; aitems: TStrings);
+var
+  datevalue: TDateTime;
+  labvalue: double;
+  i, numvalues: integer;
+  high, low, start, stop, value, units, specimen: string;
+begin
+  numvalues := strtoint(Piece(aitems[0], '^', 1));
+  specimen := Piece(aitems[0], '^', 2);
+  high := Piece(aitems[0], '^', 3);
+  low := Piece(aitems[0], '^', 4);
+  units := Piece(aitems[0], '^', 5);
+  if numvalues > 0 then
+  begin
+    start := Piece(aitems[1], '^', 1);
+    stop := Piece(aitems[numvalues], '^', 1);
+    chtChart.Legend.Color := grdLab.Color;
+    serHigh.Clear;  serLow.Clear;  serTest.Clear;
+    if high <> '' then
+    begin
+      serHigh.AddXY(FMToDateTime(start), strtofloat(high), '',clTeeColor);
+      serHigh.AddXY(FMToDateTime(stop), strtofloat(high), '',clTeeColor);
+    end;
+    if low <> '' then
+    begin
+      serLow.AddXY(FMToDateTime(start), strtofloat(low), '',clTeeColor);
+      serLow.AddXY(FMToDateTime(stop), strtofloat(low), '',clTeeColor);
+    end;
+    //chtChart.Title.Text.Strings[0] := Piece(test, '^', 2) + '  (' + MixedCase(specimen) + ')';
+    //chtChart.Title.Font.Size := 12;
+    chtChart.LeftAxis.Title.Caption := units;
+    serTest.Title := Piece(test, '^', 2) + '  (' + MixedCase(specimen) + ')';
+    serHigh.Title := 'Ref High ' + high;
+    serLow.Title := 'Ref Low ' + low;
+    for i := 1 to numvalues do
+    begin
+      value := Piece(aitems[i], '^', 2);
+      labvalue := strtofloat(value);
+      datevalue := FMToDateTime(Piece(aitems[i], '^', 1));
+      serTest.AddXY(datevalue, labvalue, '', clTeeColor);
+    end;
+  end;
+end;
+
+procedure TfrmLabs.ragHorVClick(Sender: TObject);
+begin
+  inherited;
+  if ragHorV.ItemIndex = 0 then HGrid(tmpGrid) else VGrid(tmpGrid);
+end;
+
+procedure TfrmLabs.ragCorGClick(Sender: TObject);
+begin
+  inherited;
+  if ragCorG.ItemIndex = 0 then      // comments
+  begin
+    chkZoom.Enabled := false;
+    chk3D.Enabled := false;
+    chkValues.Enabled := false;
+    pnlChart.Visible:= false;
+    pnlRightTop.Align := alTop;
+    pnlRightTop.Height := pnlRight.Height - (pnlRight.Height div 6);
+    pnlRightBottom.Visible := true;
+    pnlRightBottom.Align := alClient;
+    memLab.Align := alClient;
+    memLab.Visible := true;
+    grdLab.Align := alClient;
+  end
+  else                             // graph
+  begin
+    chkZoom.Enabled := true;
+    chk3D.Enabled := true;
+    chkValues.Enabled := true;
+    chk3DClick(self);
+    chkValuesClick(self);
+    memLab.Visible := false;
+    pnlRightBottom.Visible := false;
+    pnlRightTop.Align := alClient;
+    pnlChart.Height :=  pnlRight.Height div 2;
+    pnlChart.Top := pnlRight.Height - pnlFooter.Height - pnlChart.Height;
+    pnlChart.Align := alBottom;
+    pnlChart.Visible := true;
+    grdLab.Align := alClient;
+    if lstTestGraph.Items.Count > 0 then
+    begin
+      if lstTestGraph.ItemIndex < 0 then
+        lstTestGraph.ItemIndex := 0;
+      lstTestGraphClick(self);
+    end;
+  end;
+end;
+
+procedure TfrmLabs.lstTestGraphClick(Sender: TObject);
+begin
+  inherited;
+  WorksheetChart(lstTestGraph.Items[lstTestGraph.ItemIndex], tmpGrid);
+end;
+
+procedure TfrmLabs.Print1Click(Sender: TObject);
+begin
+  inherited;
+  RequestPrint;
+end;
+
+procedure TfrmLabs.Copy1Click(Sender: TObject);
+var
+  i,j: integer;
+  line: string;
+  ListItem: TListItem;
+  aText: String;
+begin
+  inherited;
+  ClipBoard;
+  aText := '';
+  for i := 0 to lvReports.Items.Count - 1 do
+    if lvReports.Items[i].Selected then
+    begin
+      ListItem := lvReports.Items[i];
+      line := '';
+      for j := 1 to lvReports.Columns.Count - 1 do
+        begin
+          if (lvReports.Column[j].Width <> 0) and (j < (ListItem.SubItems.Count + 1)) then
+            line := line + '  ' + ListItem.SubItems[j-1];
+        end;
+      if (length(line) > 0) and (lvReports.Column[0].Width <> 0) then
+        line := ListItem.Caption + '  ' + line;
+      if length(aText) > 0 then
+        aText := aText + CRLF + line
+      else aText := line;
+    end;
+  ClipBoard.Clear;
+  ClipBoard.AsText := aText;
+end;
+
+procedure TfrmLabs.Copy2Click(Sender: TObject);
+begin
+  inherited;
+  memLab.CopyToClipboard;
+end;
+
+procedure TfrmLabs.Print2Click(Sender: TObject);
+begin
+  inherited;
+  RequestPrint;
+end;
+
+procedure TfrmLabs.lvReportsColumnClick(Sender: TObject;
+  Column: TListColumn);
+var
+  ClickedColumn: Integer;
+  a1, a2: integer;
+  s,s1,s2: string;
+begin
+  inherited;
+  a1 := StrToIntDef(piece(uSortOrder,':',1),0) - 1;
+  a2 := StrToIntDef(piece(uSortOrder,':',2),0) - 1;
+  ClickedColumn := Column.Index;
+  ColumnToSort := Column.Index;
+  SortIdx1 := StrToIntDef(piece(uColumns[ColumnToSort],'^',9),0);
+  SortIdx2 := 0;
+  SortIdx3 := 0;
+  if a1 > -1 then SortIdx2 := StrToIntDef(piece(uColumns[a1],'^',9),0);
+  if a2 > -1 then SortIdx3 := StrToIntDef(piece(uColumns[a2],'^',9),0);
+  if a1 = ColumnToSort then
+    begin
+      SortIdx2 := SortIdx3;
+      SortIdx3 := 0;
+    end;
+  if a2 = ColumnToSort then
+      SortIdx3 := 0;
+  if ClickedColumn = ColumnToSort then
+    ColumnSortForward := not ColumnSortForward
+  else
+    ColumnSortForward := true;
+  ColumnToSort := ClickedColumn;
+  uFirstSort := ColumnToSort;
+  uSecondSort := a1;
+  uThirdSort := a2;
+  lvReports.Hint := '';
+  if ColumnSortForward = true then
+    s := 'Sorted forward'
+  else
+    s := 'Sorted reverse';
+  s1 := piece(uColumns[uFirstSort],'^',1);
+  s2 := '';
+  if length(piece(s1,' ',2)) > 0 then
+    s2 := pieces(s1,' ',2,99);
+  if length(s2) > 0 then s2 := StripSpace(s2);
+  s := s + ' by ' + piece(s1,' ',1) + ' ' + s2;
+  if (a1 <> uFirstSort) and (a1 > -1) then
+    begin
+      s1 :=  piece(uColumns[a1], '^', 1);
+      s2 := '';
+      if length(piece(s1,' ',2)) > 0 then
+        s2 := pieces(s1,' ',2,99);
+      if length(s2) > 0 then s2 := StripSpace(s2);
+      s := s + ' then by ' +  piece(s1,' ',1) + ' ' + s2;
+    end;
+  if (a2 <> uFirstSort) and (a2 > -1) then
+    begin
+      s1 :=  piece(uColumns[a2], '^', 1);
+      s2 := '';
+      if length(piece(s1,' ',2)) > 0 then
+        s2 := pieces(s1,' ',2,99);
+      if length(s2) > 0 then s2 := StripSpace(s2);
+      s := s + ' then by ' +  piece(s1,' ',1) + ' ' + s2;
+    end;
+  lvReports.Hint := s;
+  lvReports.CustomSort(nil, 0);
+end;
+
+procedure TfrmLabs.lvReportsCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+
+  function CompareValues(Col: Integer): integer;
+  var
+    ix: Integer;
+    s1, s2: string;
+    v1, v2: extended;
+    d1, d2: TFMDateTime;
+  begin
+    inherited;
+    if ColumnToSort = 0 then
+      Result := CompareText(Item1.Caption,Item2.Caption)
+    else
+      begin
+        ix := ColumnToSort - 1;
+        case Col of
+          0:                        //strings
+            begin
+              if(Item1.SubItems.Count > 0) and (ix < Item1.SubItems.Count) then
+                s1 := Item1.SubItems[ix]
+              else
+                s1 := '0';
+              if(Item2.SubItems.Count > 0) and (ix < Item2.SubItems.Count) then
+                s2 := Item2.SubItems[ix]
+              else
+                s2 := '0';
+              Result := CompareText(s1,s2);
+            end;
+
+          1:                        //integers
+            begin
+              if(Item1.SubItems.Count > 0) and (ix < Item1.SubItems.Count) then
+                s1 := Item1.SubItems[ix]
+              else
+                s1 := '0';
+              if(Item2.SubItems.Count > 0) and (ix < Item2.SubItems.Count) then
+                s2 := Item2.SubItems[ix]
+              else
+                s2 := '0';
+              IsValidNumber(s1, v1);
+              IsValidNumber(s2, v2);
+              if v1 > v2 then
+                Result := 1
+              else
+              if v1 < v2 then
+                Result := -1
+              else
+                Result := 0;
+            end;
+
+          2:                        //date/times
+            begin
+              if(Item1.SubItems.Count > 1) and (ix < Item1.SubItems.Count) then
+                s1 := Item1.SubItems[ix]
+              else
+                s1 := '1/1/1700';
+              if(Item2.SubItems.Count > 1) and (ix < Item2.SubItems.Count) then
+                s2 := Item2.SubItems[ix]
+              else
+                s2 := '1/1/1700';
+              d1 := StringToFMDateTime(s1);
+              d2 := StringToFMDateTime(s2);
+              if d1 > d2 then
+                Result := 1
+              else
+              if d1 < d2 then
+                Result := -1
+              else
+                Result := 0;
+            end;
+          else
+            Result := 0; // to make the compiler happy
+        end;
+      end;
+  end;
+begin
+  ColumnToSort := uFirstSort;
+  Compare := CompareValues(SortIdx1);
+  if Compare = 0 then
+  begin
+    if (uSecondSort > -1) and (uFirstSort <> uSecondSort) then
+      begin
+        ColumnToSort := uSecondSort;
+        Compare := CompareValues(SortIdx2);
+      end;
+    if Compare = 0 then
+      if (uThirdSort > -1) and (uFirstSort <> uThirdSort) and (uSecondSort <> uThirdSort) then
+        begin
+          ColumnToSort := uThirdSort;
+          Compare := CompareValues(SortIdx3);
+        end;
+  end;
+  if not ColumnSortForward then Compare := -Compare;
+end;
+
+procedure TfrmLabs.lvReportsKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = 67) and (ssCtrl in Shift) then
+    Copy1Click(Self);
+  if (Key = 65) and (ssCtrl in Shift) then
+    SelectAll1Click(Self);
+end;
+
+procedure TfrmLabs.lvReportsSelectItem(Sender: TObject; Item: TListItem;
+  Selected: Boolean);
+var
+  aID, aSID: string;
+  i,j,k: integer;
+  aBasket: TStringList;
+  aWPFlag: Boolean;
+  x, HasImages: string;
+
+begin
+  inherited;
+  if not selected then Exit;
+  aBasket := TStringList.Create;
+  uLocalReportData.Clear;
+  aWPFlag := false;
+  with lvReports do
+    begin
+      aID := Item.SubItems[0];
+      case uQualifierType of
+            QT_OTHER:
+              begin      //      = 0
+
+              end;
+            QT_DATERANGE:
+              begin      //      = 2
+
+              end;
+            QT_IMAGING:
+              begin      //      = 3
+
+              end;
+            QT_NUTR:
+              begin      //      = 4
+
+              end;
+            QT_HSWPCOMPONENT:
+              begin      //      = 6
+                if lvReports.SelCount < 3 then
+                  begin
+                    memLab.Lines.Clear;
+                    ulvSelectOn := false;
+                  end;
+                aBasket.Clear;
+                if (SelCount = 2) and (ulvSelectOn = false) then
+                  begin
+                    ulvSelectOn := true;
+                    for i := 0 to Items.Count - 1 do
+                      if (Items[i].Selected) and (aID <> Items[i].SubItems[0]) then
+                        begin
+                          aSID := Items[i].SubItems[0];
+                          for j := 0 to RowObjects.ColumnList.Count - 1 do
+                            if piece(aSID,':',1) = piece(TCellObject(RowObjects.ColumnList[j]).Handle,':',1) then
+                              if Item.Caption = (piece(TCellObject(RowObjects.ColumnList[j]).Site,';',1)) then
+                                if (TCellObject(RowObjects.ColumnList[j]).Data.Count > 0) and
+                                  (TCellObject(RowObjects.ColumnList[j]).Include = '1') then
+                                  begin
+                                    aWPFlag := true;
+                                    MemLab.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
+                                    FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
+                                    for k := 0 to aBasket.Count - 1 do
+                                      MemLab.Lines.Add('  ' + aBasket[k]);
+                                  end;
+                          if aWPFlag = true then
+                            begin
+                              memLab.Lines.Add('Facility: ' + Item.Caption);
+                              memLab.Lines.Add('===============================================================================');
+                            end;
+                        end;
+                  end;
+                aBasket.Clear;
+                aWPFlag := false;
+                for i := 0 to RowObjects.ColumnList.Count - 1 do
+                  if piece(aID,':',1) = piece(TCellObject(RowObjects.ColumnList[i]).Handle,':',1) then
+                    if Item.Caption = (piece(TCellObject(RowObjects.ColumnList[i]).Site,';',1)) then
+                      if (TCellObject(RowObjects.ColumnList[i]).Data.Count > 0) and
+                        (TCellObject(RowObjects.ColumnList[i]).Include = '1') then
+                        begin
+                          aWPFlag := true;
+                          MemLab.Lines.Add(TCellObject(RowObjects.ColumnList[i]).Name);
+                          FastAssign(TCellObject(RowObjects.ColumnList[i]).Data, aBasket);
+                          for j := 0 to aBasket.Count - 1 do
+                            MemLab.Lines.Add('  ' + aBasket[j]);
+                        end;
+                if aWPFlag = true then
+                  begin
+                    memLab.Lines.Add('Facility: ' + Item.Caption);
+                    memLab.Lines.Add('===============================================================================');
+                  end;
+                if uRptID = 'OR_R18:IMAGING' then
+                begin
+                  if (Item.SubItems.Count > 8) then                                             //has id, may have case (?)
+                  begin
+                    x := 'RA^' + Item.SubItems[8] + U + Item.SubItems[4] + U + Item.Caption;
+                    SetPiece(x, U, 10, BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]);
+                    NotifyOtherApps(NAE_REPORT, x);
+                  end
+                  else if (Item.SubItems.Count > 4) then
+                  begin
+                    x := 'RA^' + U + U + Item.SubItems[4] + U + Item.Caption;
+                    SetPiece(x, U, 10, BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]);
+                    NotifyOtherApps(NAE_REPORT, x);
+                  end
+                  else if Item.SubItemImages[1] = IMG_1_IMAGE then
+                  begin
+                    memLab.Lines.Insert(0,'<Imaging links not active at this site>');
+                    memLab.Lines.Insert(1,' ');
+                  end;
+                end;
+                if uRptID = 'OR_PN:PROGRESS NOTES' then
+                  if (Item.SubItems.Count > 7) then
+                    begin
+                      if StrToIntDef(Item.SubItems[7], 0) > 0 then HasImages := '1' else HasImages := '0';
+                      x := 'PN^' + Item.SubItems[7] + U + Item.SubItems[1] + U + Item.Caption;
+                      SetPiece(x, U, 10, HasImages);
+                      NotifyOtherApps(NAE_REPORT, x);
+                    end;
+              end;
+            QT_PROCEDURES:
+              begin      //      = 19
+
+              end;
+            QT_SURGERY:
+              begin      //      = 28
+
+              end;
+      end;
+      memLab.Lines.Insert(0,' ');
+      memLab.Lines.Delete(0);
+    end;
+  aBasket.Free;
+end;
+
+procedure TfrmLabs.SelectAll1Click(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+    for i := 0 to lvReports.Items.Count - 1 do
+       lvReports.Items[i].Selected := true;
+end;
+
+procedure TfrmLabs.SelectAll2Click(Sender: TObject);
+begin
+  inherited;
+  memLab.SelectAll;
+end;
+
+procedure TfrmLabs.chkGraphValuesClick(Sender: TObject);
+begin
+  inherited;
+  serTest.Marks.Visible := chkGraphValues.Checked;
+end;
+
+procedure TfrmLabs.chkGraph3DClick(Sender: TObject);
+begin
+  inherited;
+  chtChart.View3D := chkGraph3D.Checked;
+end;
+
+procedure TfrmLabs.chkGraphZoomClick(Sender: TObject);
+begin
+  inherited;
+  chtChart.AllowZoom := chkGraphZoom.Checked;
+  chtChart.AnimatedZoom := chkGraphZoom.Checked;
+  lblGraphInfo.Caption := 'To Zoom, hold down the mouse button while dragging an area to be enlarged.';
+  if chkGraphZoom.Checked then
+    lblGraphInfo.Caption := lblGraphInfo.Caption + #13
+                          + 'To Zoom Back drag to the upper left. You can also use the actions on the right mouse button.';
+  lblGraphInfo.Visible := chkGraphZoom.Checked;
+  if not chkGraphZoom.Checked then chtChart.UndoZoom;
+end;
+
+procedure TfrmLabs.chkMaxFreqClick(Sender: TObject);
+begin
+  inherited;
+  if chkMaxFreq.Checked = true then
+    begin
+      uMaxOcc := piece(uQualifier, ';', 3);
+      SetPiece(uQualifier, ';', 3, '');
+    end
+    else
+      begin
+        SetPiece(uQualifier, ';', 3, uMaxOcc);
+      end;
+  tvReportsClick(self);
+end;
+
+procedure TfrmLabs.GotoTop1Click(Sender: TObject);
+begin
+  inherited;
+with memLab do
+  begin
+    SetFocus;
+    SelStart :=0;
+    SelLength :=0;
+  end;
+end;
+
+procedure TfrmLabs.GotoBottom1Click(Sender: TObject);
+var
+  I,CharCount : Integer;
+begin
+  Inherited;
+  CharCount :=0;
+  with memLab do
+  begin
+    for I := 0 to lines.count-1 do
+      CharCount := CharCount + Length(Lines[I]) + 2;
+    SetFocus;
+    SelStart := CharCount;
+    SelLength :=0;
+  end;
+end;
+
+procedure TfrmLabs.FreezeText1Click(Sender: TObject);
+var
+  Current, Desired : Longint;
+  LineCount : Integer;
+begin
+  Inherited;
+  If memLab.SelLength > 0 then begin
+    Memo1.visible := true;
+    Memo1.Text := memLab.SelText;
+    If Memo1.Lines.Count <6 then
+      LineCount := Memo1.Lines.Count + 1
+    Else
+      LineCount := 5;
+    Memo1.Height := LineCount * frmLabs.Canvas.TextHeight(memLab.SelText);
+    Current := SendMessage(memLab.handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+    Desired := SendMessage(memLab.handle, EM_LINEFROMCHAR,
+               memLab.SelStart + memLab.SelLength ,0);
+    SendMessage(memLab.Handle,EM_LINESCROLL, 0, Desired - Current);
+    uFrozen := True;
+  end;
+end;
+
+procedure TfrmLabs.UnfreezeText1Click(Sender: TObject);
+begin
+  Inherited;
+  If uFrozen = True Then begin
+    uFrozen := False;
+    UnFreezeText1.Enabled := False;
+    Memo1.Visible := False;
+    Memo1.Text := '';
+  end;
+end;
+
+procedure TfrmLabs.PopupMenu1Popup(Sender: TObject);
+begin
+ inherited;
+  If Screen.ActiveControl.Name <> memLab.Name then
+   begin
+     memLab.SetFocus;
+     memLab.SelStart := 0;
+   end;
+  If memLab.SelLength > 0 Then
+    FreezeText1.Enabled := True
+  Else
+    FreezeText1.Enabled := False;
+  If Memo1.Visible Then
+    UnFreezeText1.Enabled := True;
+  If memLab.SelStart > 0 then
+    GotoTop1.Enabled := True
+  Else
+    GotoTop1.Enabled := False;
+  If SendMessage(memLab.handle, EM_LINEFROMCHAR,
+    memLab.SelStart,0) < memLab.Lines.Count then
+    GotoBottom1.Enabled := True
+  Else
+    GotoBottom1.Enabled := False;
+  {case lstReports.ItemIEN of
+    1: FreezeText1.Enabled := False;
+    5: FreezeText1.Enabled := False;
+    6: FreezeText1.Enabled := False;
+  end;                               }
+end;
+
+procedure TfrmLabs.ProcessNotifications;
+var
+  //AlertDate, CurrentDate: TFMDateTime;
+  OrderIFN: string;
+begin
+  {uNewest := '';
+  uOldest := '';
+  GetNewestOldest(Patient.DFN, uNewest, uOldest); }
+  {AlertDate   := Trunc(StrToFMDateTime(Piece(Piece(Notifications.RecordID, U, 2), ';', 3)));
+  CurrentDate := FMToday;
+  lstReports.ItemIndex := 2;
+  if AlertDate = CurrentDate then
+    begin
+      lstDates.ItemIndex   := 0;
+      lstReports.ItemIndex := 0;
+    end
+  else if CurrentDate - AlertDate < 7  then lstDates.ItemIndex  := 2
+  else if CurrentDate - AlertDate < 14 then lstDates.ItemIndex  := 3
+  else if CurrentDate - AlertDate < 28 then lstDates.ItemIndex  := 4
+  else                                      lstDates.ItemIndex  := 5;
+
+  lstReportsClick(self); }
+
+  OrderIFN                := Piece(Notifications.AlertData, '@', 1);
+  if StrToIntDef(OrderIFN,0) > 0 then
+   begin
+    //the following if condition & clause resolves CQ 16405 & 17076 - a mixture of two different patient's lab results in one display.
+    if (AnsiContainsStr(tvReports.Selected.Text, 'Microbiology')) or (AnsiContainsStr(tvReports.Selected.Text, 'Anatomic Pathology'))
+    or (AnsiContainsStr(tvReports.Selected.Text, 'Cytology')) or (AnsiContainsStr(tvReports.Selected.Text, 'Electron Microscopy'))
+    or (AnsiContainsStr(tvReports.Selected.Text, 'Surgical Pathology')) and (lvReports.Visible = TRUE) then
+       begin
+         tvReports.Selected := tvReports.TopItem;
+         lvReports.Visible := FALSE;
+         DisplayHeading('');
+       end;
+    lstDates.ItemIndex      := -1;
+    Memo1.Visible           := false;
+    lblHeaders.Visible      := false;
+    lstHeaders.Visible      := false;
+    pnlOtherTests.Visible   := false;
+    lblDates.Visible        := true;
+    lstDates.Visible        := true;
+    pnlHeader.Visible       := false;
+    grdLab.Visible          := false;
+    pnlChart.Visible        := false;
+    //WebBrowser1.Visible     := false;  **Browser Remove**
+    //WebBrowser1.SendToBack;            **Browser Remove**
+    memLab.Visible          := true;
+    memLab.BringToFront;
+    pnlFooter.Visible       := true;
+    memLab.Clear;
+    uLabLocalReportData.Clear;
+    uLabRemoteReportData.Clear;
+    pnlRightTop.Height := 5;
+    memLab.Align            := alClient;
+    FormResize(self);
+    QuickCopy(ResultOrder(OrderIFN), memLab);
+    memLab.SelStart := 0;
+    memLab.Repaint;
+    lblHeading.Caption      := Notifications.Text;
+   end
+   else
+   begin
+     if Patient.Inpatient then lstDates.ItemIndex := 2 else lstDates.ItemIndex := 5;
+     tvReports.Selected := tvReports.Items.GetFirstNode;
+     tvReportsClick(self);
+   end;
+
+  case Notifications.FollowUp of
+    NF_LAB_RESULTS          :   Notifications.Delete;
+    NF_ABNORMAL_LAB_RESULTS :   Notifications.Delete;
+    NF_SITE_FLAGGED_RESULTS :   Notifications.Delete;
+    NF_STAT_RESULTS         :   Notifications.Delete;
+    NF_CRITICAL_LAB_RESULTS :   Notifications.Delete;
+    NF_LAB_THRESHOLD_EXCEEDED : Notifications.Delete;
+  end;
+end;
+
+procedure TfrmLabs.chkZoomClick(Sender: TObject);
+begin
+  inherited;
+  chtChart.AllowZoom := chkZoom.Checked;
+  chtChart.AnimatedZoom := chkZoom.Checked;
+  if not chkZoom.Checked then
+  begin
+    chtChart.UndoZoom;
+    chtChart.ZoomPercent(ZOOM_PERCENT);
+  end;
+end;
+
+procedure TfrmLabs.chtChartUndoZoom(Sender: TObject);
+begin
+  inherited;
+  chtChart.BottomAxis.Automatic := true;
+end;
+
+procedure TfrmLabs.popCopyClick(Sender: TObject);
+begin
+  inherited;
+  chtChart.CopyToClipboardBitmap;
+end;
+
+procedure TfrmLabs.popChartPopup(Sender: TObject);
+begin
+  inherited;
+  if pnlWorksheet.Visible then
+  begin
+    popValues.Checked := chkValues.Checked;
+    pop3D.Checked := chk3D.Checked;
+    popZoom.Checked := chkZoom.Checked;
+  end
+  else
+  begin
+    popValues.Checked := chkGraphValues.Checked;
+    pop3D.Checked := chkGraph3D.Checked;
+    popZoom.Checked := chkGraphZoom.Checked;
+  end;
+  popZoomBack.Enabled := popZoom.Checked and not chtChart.BottomAxis.Automatic;;
+  if chtChart.Hint <> '' then
+  begin
+    popDetails.Caption := chtChart.Hint;
+    popDetails.Enabled := true;
+  end
+  else
+  begin
+    popDetails.Caption := 'Details';
+    popDetails.Enabled := false;
+  end;
+end;
+
+procedure TfrmLabs.popValuesClick(Sender: TObject);
+begin
+  inherited;
+  if pnlWorksheet.Visible then
+  begin
+    chkValues.Checked := not chkValues.Checked;
+    chkValuesClick(self);
+  end
+  else
+  begin
+    chkGraphValues.Checked := not chkGraphValues.Checked;
+    chkGraphValuesClick(self);
+  end;
+end;
+
+procedure TfrmLabs.pop3DClick(Sender: TObject);
+begin
+  inherited;
+  if pnlWorksheet.Visible then
+  begin
+    chk3D.Checked := not chk3D.Checked;
+    chk3DClick(self);
+  end
+  else
+  begin
+    chkGraph3D.Checked := not chkGraph3D.Checked;
+    chkGraph3DClick(self);
+  end;
+end;
+
+procedure TfrmLabs.popZoomClick(Sender: TObject);
+begin
+  inherited;
+  if pnlWorksheet.Visible then
+  begin
+    chkZoom.Checked := not chkZoom.Checked;
+    chkZoomClick(self);
+  end
+  else
+  begin
+    chkGraphZoom.Checked := not chkGraphZoom.Checked;
+    chkGraphZoomClick(self);
+  end;
+end;
+
+procedure TfrmLabs.popZoomBackClick(Sender: TObject);
+begin
+  inherited;
+  chtChart.UndoZoom;
+end;
+
+procedure TfrmLabs.chtChartMouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  chtChart.Hint := '';
+  chtChart.Tag := 0;
+end;
+
+procedure TfrmLabs.chtChartClickSeries(Sender: TCustomChart;
+  Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  if Series = serHigh then exit;
+  if Series = serLow then exit;
+  uDate1 := Series.XValue[ValueIndex];
+  uDate2 := uDate1;
+  chtChart.Hint := 'Details - Lab results for ' + FormatDateTime('dddd, mmmm d, yyyy', Series.XValue[ValueIndex]) + '...';
+  chtChart.Tag := ValueIndex + 1;
+  if Button <> mbRight then  popDetailsClick(self);
+end;
+
+procedure TfrmLabs.chtChartClickLegend(Sender: TCustomChart;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  chtChart.Hint := 'Details - for ' + Piece(serTest.Title, '(', 1) + '...';
+  chtChart.Tag := 0;
+  if Button <> mbRight then  popDetailsClick(self);
+end;
+
+procedure TfrmLabs.popDetailsClick(Sender: TObject);
+var
+  tmpList: TStringList;
+  date1, date2: TFMDateTime;
+  strdate1, strdate2: string;
+begin
+  inherited;
+  Screen.Cursor := crHourGlass;
+  if chtChart.Tag > 0 then
+  begin
+    tmpList := TStringList.Create;
+    try
+      strdate1 := FormatDateTime('mm/dd/yyyy', uDate1);
+      strdate2 := FormatDateTime('mm/dd/yyyy', uDate2);
+      uDate1 := StrToDateTime(strdate1);
+      uDate2 := StrToDateTime(strdate2);
+      date1 := DateTimeToFMDateTime(uDate1 + 1);
+      date2 := DateTimeToFMDateTime(uDate2);
+      StatusText('Retrieving data for ' + FormatDateTime('dddd, mmmm d, yyyy', uDate2) + '...');
+      Interim(tmpList, Patient.DFN, date1, date2,'ORWLRR INTERIM');
+      ReportBox(tmpList, 'Lab results on ' + Patient.Name + ' for ' + FormatDateTime('dddd, mmmm d, yyyy', uDate2), True);
+    finally
+      tmplist.Free;
+    end;
+  end
+  else
+  begin
+    date1 := DateTimeToFMDateTime(chtChart.BottomAxis.Maximum);
+    date2 := DateTimeToFMDateTime(chtChart.BottomAxis.Minimum);
+    tmpList := TStringList.Create;
+    try
+      if lstTestGraph.ItemIndex > -1 then
+        tmpList.Add(lstTestGraph.Items[lstTestGraph.ItemIndex])
+      else
+        tmpList.Add(Piece(lblSingleTest.Caption, '^', 1));
+      StatusText('Retrieving data for ' + serTest.Title + '...');
+      ReportBox(InterimSelect(Patient.DFN, date1, date2, tmpList), Piece(serTest.Title, '(', 1) + 'results on ' + Patient.Name, True);
+    finally
+      tmpList.Free;
+    end;
+  end;
+  Screen.Cursor := crDefault;
+  StatusText('');
+end;
+
+procedure TfrmLabs.popPrintClick(Sender: TObject);
+begin
+  inherited;
+  if chtChart.Visible then PrintLabGraph;
+end;
+
+procedure TfrmLabs.PrintLabGraph;
+var
+  GraphTitle: string;
+begin
+  inherited;
+  GraphTitle := Piece(lblSingleTest.Caption, '^', 2);
+  if (Length(lblSpecimen.Caption) > 2) then GraphTitle := GraphTitle + ' (' + Piece(lblSpecimen.Caption, '^', 2) + ')';
+  GraphTitle := GraphTitle + ' - ' + lstDates.DisplayText[lstDates.ItemIndex];
+  if dlgWinPrint.Execute then PrintGraph(chtChart, GraphTitle);
+end;
+
+procedure TfrmLabs.BeginEndDates(var ADate1, ADate2: TFMDateTime; var ADaysBack: integer);
+var
+  datetemp: TFMDateTime;
+  today, datetime1, datetime2: TDateTime;
+  relativedate: string;
+begin
+  today := FMToDateTime(floattostr(FMToday));
+  relativedate := Piece(lstDates.ItemID, ';', 1);
+  relativedate := Piece(relativedate, '-', 2);
+  ADaysBack := strtointdef(relativedate, 0);
+  ADate1 := DateTimeToFMDateTime(today - ADaysBack);
+  relativedate := Piece(lstDates.ItemID, ';', 2);
+  if StrToIntDef(Piece(relativedate, '+', 2), 0) > 0 then
+    begin
+      relativedate := Piece(relativedate, '+', 2);
+      ADaysBack := strtointdef(relativedate, 0);
+      ADate2 := DateTimeToFMDateTime(today + ADaysBack + 1);
+    end
+  else
+    begin
+      relativedate := Piece(relativedate, '-', 2);
+      ADaysBack := strtointdef(relativedate, 0);
+      ADate2 := DateTimeToFMDateTime(today - ADaysBack);
+    end;
+  datetime1 := FMDateTimeToDateTime(ADate1);
+  datetime2 := FMDateTimeToDateTime(ADate2);
+  if datetime1 < datetime2 then                 // reorder dates, if needed
+    begin
+      datetemp := ADate1;
+      ADate1 := ADate2;
+      ADate2 := datetemp
+    end;
+  ADate1 := ADate1 + 0.2359;
+end;
+
+procedure TfrmLabs.Timer1Timer(Sender: TObject);
+var
+  i,j: integer;
+  r0: String;
+begin
+  inherited;
+  with RemoteSites.SiteList do
+   begin
+    for i := 0 to Count - 1 do
+      if TRemoteSite(Items[i]).Selected then
+        if Length(TRemoteSite(Items[i]).LabRemoteHandle) > 0 then
+          begin
+            r0 := GetRemoteStatus(TRemoteSite(Items[i]).LabRemoteHandle);
+            TRemoteSite(Items[i]).LabQueryStatus := r0; //r0='1^Done' if no errors
+            if piece(r0,'^',1) = '1' then
+              begin
+                RemoteReports.Add(TRemoteSite(Items[i]).CurrentLabQuery,
+                  TRemoteSite(Items[i]).LabRemoteHandle);
+                GetRemoteData(TRemoteSite(Items[i]).LabData,
+                  TRemoteSite(Items[i]).LabRemoteHandle,Items[i]);
+                TRemoteSite(Items[i]).LabRemoteHandle := '';
+                TabControl1.OnChange(nil);
+              end
+            else
+              begin
+                uRemoteCount := uRemoteCount + 1;
+                if uRemoteCount > 60 then //5 minute limit
+                  begin
+                    Timer1.Enabled := False;
+                    TRemoteSite(Items[i]).LabQueryStatus := '-1^Timed out';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Timed out');
+                    StatusText('');
+                    TabControl1.OnChange(nil);
+                  end
+                else
+                  StatusText('Retrieving Lab data from '
+                    + TRemoteSite(Items[i]).SiteName + '...');
+              end;
+            Timer1.Interval := 5000;
+          end;
+     if Timer1.Enabled = True then
+       begin
+         j := 0;
+         for i := 0 to Count -1 do
+           if Length(TRemoteSite(Items[i]).LabRemoteHandle) > 0 then
+             j := 1;
+         if j = 0 then  //Shutdown timer if all sites have been processed
+           begin
+             Timer1.Enabled := False;
+             StatusText('');
+           end;
+         j := 0;
+         for i := 0 to Count -1 do
+           if TRemoteSite(Items[i]).Selected = true then
+             j := 1;
+         if j = 0 then  //Shutdown timer if user has de-selected all sites
+           begin
+             Timer1.Enabled := False;
+             StatusText('');
+             TabControl1.OnChange(nil);
+           end;
+       end;
+   end;
+end;
+
+procedure TfrmLabs.tvReportsClick(Sender: TObject);
+var
+  i: integer;
+  ListItem: TListItem;
+  aHeading, aReportType, aRPC, aQualifier, aStartTime, aStopTime, aMax, aRptCode, aRemote, aCategory, aSortOrder, aDaysBack, x, x1, x2: string;
+  aIFN, aOldID: integer;
+  aID, aHSTag, aRadParam, aColChange, aDirect, aHDR, aFHIE, aFHIEONLY, aQualifierID: string;
+  CurrentParentNode, CurrentNode: TTreeNode;
+begin
+  inherited;
+  lvReports.Hint := 'To sort, click on column headers|';
+  tvReports.TopItem := tvReports.Selected;
+  uRemoteCount := 0;
+  uReportInstruction := '';
+  aHeading    :=  PReportTreeObject(tvReports.Selected.Data)^.Heading;
+  aRemote     :=  PReportTreeObject(tvReports.Selected.Data)^.Remote;
+  aReportType :=  PReportTreeObject(tvReports.Selected.Data)^.RptType;
+  aQualifier  :=  PReportTreeObject(tvReports.Selected.Data)^.Qualifier;
+  aID         :=  PReportTreeObject(tvReports.Selected.Data)^.ID;
+  aRPC        :=  PReportTreeObject(tvReports.Selected.Data)^.RPCName;
+  aHSTag      :=  PReportTreeObject(tvReports.Selected.Data)^.HSTag;
+  aCategory   :=  PReportTreeObject(tvReports.Selected.Data)^.Category;
+  aSortOrder  :=  PReportTreeObject(tvReports.Selected.Data)^.SortOrder;
+  aDaysBack   :=  PReportTreeObject(tvReports.Selected.Data)^.MaxDaysBack;
+  aIFN        :=  StrToIntDef(PReportTreeObject(tvReports.Selected.Data)^.IFN,0);
+  aDirect     :=  PReportTreeObject(tvReports.Selected.Data)^.Direct;
+  aHDR        :=  PReportTreeObject(tvReports.Selected.Data)^.HDR;
+  aFHIE       :=  PReportTreeObject(tvReports.Selected.Data)^.FHIE;
+  aFHIEONLY   :=  PReportTreeObject(tvReports.Selected.Data)^.FHIEONLY;
+  aStartTime  :=  Piece(aQualifier,';',1);
+  aStopTime   :=  Piece(aQualifier,';',2);
+  aMax        :=  Piece(aQualifier,';',3);
+  aRptCode    :=  Piece(aQualifier,';',4);
+  aQualifierID:= '';
+  lstQualifier.ItemIndex := -1;
+  if length(uColChange) > 0 then
+    begin
+      aColChange := '';
+      for i := 0 to lvReports.Columns.Count - 1 do
+        aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ',';
+      if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then
+        SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange);
+      uColChange := '';
+    end;
+  if (aReportType <> 'M') and (aRPC = '') and (CharAt(aID,1) = 'H') then
+    begin
+      aReportType :=  'R';
+      aRptCode    :=  LowerCase(CharAt(aID,1)) + Copy(aID, 2, Length(aID));
+      aID         :=  '1';
+      aRPC        :=  'ORWRP REPORT TEXT';
+      aHSTag      :=  '';
+    end;
+  uLabLocalReportData.Clear;
+  uLabRemoteReportData.Clear;
+  if aReportType = '' then aReportType := 'R';
+  uReportRPC := aRPC;
+  uRptID := aID;
+  uDirect := aDirect;
+  uReportType := aReportType;
+  uQualifier := aQualifier;
+  uSortOrder := aSortOrder;
+  uRemoteType := aRemote + '^' + aReportType + '^' + IntToStr(aIFN) + '^' + aHeading + '^' + aRptCode + '^' + aDaysBack + '^' + aHDR + '^' + aFHIE + '^' + aFHIEONLY;
+  pnlRightTop.Height := lblTitle.Height;  // see below
+  RedrawSuspend(tvReports.Handle);
+  RedrawSuspend(memLab.Handle);
+  uHState := aHSTag;
+  Timer1.Enabled := False;
+  TabControl1.Visible := false;
+  TabControl1.TabStop := false;
+  sptHorzRight.Visible := true;
+  lvReports.Visible := false;
+  if (aRemote = '1') or (aRemote = '2') then
+    if not(uReportType = 'V') then
+      if TabControl1.Tabs.Count > 1 then
+        begin
+          TabControl1.Visible := true;
+          TabControl1.TabStop := true;
+          pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+        end;
+  StatusText('');
+  uHTMLDoc := '';
+  //WebBrowser1.Navigate('about:blank');   **Browser Remove**
+  memLab.Lines.Clear;
+  memLab.Parent := pnlRightBottom;
+  memLab.Align := alClient;
+  lvReports.SmallImages := uEmptyImageList;
+  lvReports.Items.Clear;
+  lvReports.Columns.Clear;
+  lblHeading.Caption := '';  //clears Notification text to reduce confusion with lblTitle.Caption.
+  DisplayHeading('');
+  if uReportType = 'H' then
+    begin
+      lvReports.Visible := false;
+      pnlRightBottom.Visible := true;
+      {WebBrowser1.Visible := true;         **Browser Remove**
+      WebBrowser1.TabStop := true;
+      WebBrowser1.Navigate('about:blank');
+      WebBrowser1.BringToFront;                 }
+      memLab.Visible := false;
+      memLab.TabStop := false;
+    end
+  else
+    if uReportType = 'V' then
+      begin
+        with lvReports do
+          begin
+            RedrawSuspend(lvReports.Handle);
+            Columns.BeginUpdate;
+            ViewStyle := vsReport;
+            ColumnHeaders(uColumns, IntToStr(aIFN));
+            for i := 0 to uColumns.Count -1 do
+              begin
+                uNewColumn := Columns.Add;
+                uNewColumn.Caption := piece(uColumns.Strings[i],'^',1);
+                if length(uColChange) < 1 then uColChange := IntToStr(aIFN) + '^';
+                if piece(uColumns.Strings[i],'^',2) = '1' then
+                  begin
+                    uNewColumn.Width := 0;
+                    uColChange := uColChange + '0,';
+                  end
+                else
+                  if length(piece(uColumns.Strings[i],'^',10)) > 0 then
+                    begin
+                      uColChange := uColChange + piece(uColumns.Strings[i],'^',10) + ',';
+                      uNewColumn.Width := StrToInt(piece(uColumns.Strings[i],'^',10))
+                    end
+                  else
+                    uNewColumn.Width := ColumnHeaderWidth;  //ColumnTextWidth for width of text
+                if (i = 0) and (((aRemote <> '2') and (aRemote <> '1')) or ((TabControl1.Tabs.Count < 2) and (not (aHDR = '1')))) then
+                  uNewColumn.Width := 0;
+              end;
+            Columns.EndUpdate;
+            RedrawActivate(lvReports.Handle);
+          end;
+        lvReports.Visible := true;
+        sptHorzRight.Visible := true;
+        //WebBrowser1.Visible := false;  **Browser Remove**
+        //WebBrowser1.TabStop := false;  **Browser Remove**
+        pnlRightBottom.Visible := true;
+        memLab.Visible := true;
+        memLab.TabStop := true;
+        memLab.BringToFront;
+        RedrawActivate(memLab.Handle);
+      end
+    else
+      begin
+        lvReports.Visible := true;
+        sptHorzRight.Visible := false;
+        //WebBrowser1.Visible := false;  **Browser Remove**
+        //WebBrowser1.TabStop := false;  **Browser Remove**
+        pnlRightBottom.Visible := True;
+        memLab.Visible := true;
+        memLab.TabStop := true;
+        memLab.BringToFront;
+        RedrawActivate(memLab.Handle);
+      end;
+  uLocalReportData.Clear;
+  RowObjects.Clear;
+  uRemoteReportData.Clear;
+  lstHeaders.Visible := false;
+  lstHeaders.TabStop := false;
+  lblHeaders.Visible := false;
+  lstHeaders.Clear;
+  for i := 0 to RemoteSites.SiteList.Count - 1 do
+    TRemoteSite(RemoteSites.SiteList.Items[i]).LabClear;
+  if uFrozen = True then
+    begin
+      memo1.visible := False;
+      memo1.TabStop := False;
+    end;
+  Screen.Cursor := crHourGlass;
+  if aReportType = 'M' then
+    begin
+      pnlLeftBottom.Visible := false;
+      splitter1.Visible := false;
+      CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,false,false);
+      memLab.Clear;
+      chkBrowser;
+      pnlHeader.Visible := false;
+      sptHorzRight.Visible := true;
+      lvReports.Visible := false;
+      pnlRighttop.Height := lblHeading.Height;
+      memLab.Height := pnlRight.Height - (lblHeading.Height + lblTitle.Height);
+      pnlRightTop.Visible := true;
+      memLab.Align := alClient;
+      FormResize(self);
+    end
+  else
+    begin
+     uQualifierType := StrToIntDef(aRptCode,0);
+      case uQualifierType of
+        QT_OTHER:
+          begin      //      = 0
+            memLab.Lines.Clear;
+            If aID = '1:MOST RECENT' then
+                   begin
+                      CommonComponentVisible(false,false,false,false,false,true,true,false,true,false,false,false);
+                      pnlRightTop.Height := pnlLeft.Height - (pnlLeft.Height div 5);
+                      pnlRightTop.Visible := true;
+                      pnlButtons.Visible := true;
+                      pnlWorksheet.Visible := false;
+                      pnlGraph.Visible := false;
+                      memLab.Align := alBottom;
+                      pnlRightTop.Align := alTop;
+                      pnlRightBottom.Align := alclient;
+                      sptHorzRight.Visible := true;
+                      pnlRightBottom.Visible := true;
+                      pnlRightBottom.Height := pnlLeft.Height div 5;
+                      memLab.Height := pnlLeft.Height div 5;
+                      grdLab.Align := alTop;
+                      memLab.Clear;
+                      {if uReportType = 'H' then  **Browser Remove**
+                       begin
+                         WebBrowser1.Navigate('about:blank');
+                         WebBrowser1.Align := alBottom;
+                         WebBrowser1.Height := pnlLeft.Height div 5;
+                         WebBrowser1.Visible := true;
+                         WebBrowser1.BringToFront;
+                         memLab.Visible := false;
+                       end
+                      else
+                      begin
+                        WebBrowser1.Visible := false;
+                        WebBrowser1.SendToBack;   }
+                        memLab.Visible := true;
+                        memLab.BringToFront;
+                      //end; }
+                      FormResize(self);
+                      cmdRecentClick(self);
+                      uPrevReportNode := tvReports.Selected;
+                   end
+            else if aID = '4:SELECTED TESTS BY DATE' then
+                  begin               // Interim for Selected Tests
+                    if uPrevReportNode <> tvReports.Selected then
+                    begin
+                     lstTests.Clear;
+                     lblSpecimen.Caption := '';
+                    end;
+                    SelectTests(Font.Size);
+                    if lstTests.Items.Count > 0 then
+                    begin
+                     CommonComponentVisible(false,false,true,true,true,false,false,false,true,false,false,false);
+                     pnlRighttop.Height := lblHeading.Height + lblTitle.Height;
+                     pnlRightTop.Visible := false;
+                     memLab.Clear;
+                     chkBrowser;
+                     FormResize(self);
+                     RedrawActivate(memLab.Handle);
+                     lstDatesClick(self);
+                     //lstQualifierClick(self);
+                     cmdOtherTests.SetFocus;
+                     cmdOtherTests.Default := true;
+                     uPrevReportNode := tvReports.Selected;
+                    end
+                    else tvReports.Selected := uPrevReportNode;
+                  end
+            else if aID = '5:WORKSHEET' then
+                  begin               // Worksheet
+                    if uPrevReportNode <> tvReports.Selected then
+                    begin
+                     lstTests.Clear;
+                     lblSpecimen.Caption := '';
+                    end;
+                    SelectTestGroups(Font.Size);
+                    if lstTests.Items.Count > 0 then
+                    begin
+                     CommonComponentVisible(false,false,true,true,true,true,true,false,false,false,false,false);
+                     pnlRighttop.Height := pnlRight.Height - (pnlRight.Height div 4);
+                     pnlRightTop.Visible := true;
+                     pnlHeader.Align := alTop;
+                     pnlChart.Align := alTop;
+                     sptHorzRight.Visible := true;
+                     chtChart.Visible := true;
+                     memLab.Visible := false;
+                     pnlButtons.Visible := false;
+                     pnlWorksheet.Visible := true;
+                     pnlGraph.Visible := false;
+                     lstTestGraph.Width := 97;
+                     ragCorG.ItemIndex := 0;
+                     FormResize(self);
+                     lblFooter.Caption := '  KEY: "L" = Abnormal Low, "H" = Abnormal High, "*" = Critical Value, "**" = Comments on Specimen';
+                     //chkZoom.Checked := false;
+                     //chkZoomClick(self);
+                     lstDatesClick(self);
+                     //lstQualifierClick(self);
+                     cmdOtherTests.SetFocus;
+                     cmdOtherTests.Default := true;
+                     uPrevReportNode := tvReports.Selected;
+                     if ScreenReaderSystemActive then
+                       grdLab.SetFocus;
+                    end
+                    else tvReports.Selected := uPrevReportNode;
+                  end
+
+            else if aID = '6:GRAPH' then
+                  begin               // Graph
+                    // do if graphing is activiated
+                    if uGraphingActivated then
+                    begin
+                     memLab.Clear;
+                     chkBrowser;
+                     FormResize(self);
+                     memLab.Align := alClient;
+                     CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,false,false);
+                     pnlRightTop.Visible := false;
+                     RedrawActivate(memLab.Handle);
+                     StatusText('');
+                     memLab.Lines.Insert(0, ' ');
+                     memLab.Lines.Insert(1, 'Graphing activated');
+                     memLab.SelStart := 0;
+                     frmFrame.mnuToolsGraphingClick(self);  // make it just lab tests ??
+                     //tvReports.Selected := uPrevReportNode;
+                    end
+                    else  // otherwise, do lab graph
+                    begin
+                     if uPrevReportNode <> tvReports.Selected then
+                     begin
+                       lblSingleTest.Caption := '';
+                       lblSpecimen.Caption := '';
+                     end;
+                     SelectTest(Font.Size);
+                     if (length(lblSingleTest.Caption) > 2) and (length(lblSpecimen.Caption) > 2) then
+                     begin
+                       CommonComponentVisible(false,false,true,true,true,true,false,false,true,false,false,false);
+                       pnlChart.Visible := true;
+                       chtChart.Visible := true;
+                       pnlButtons.Visible := false;
+                       pnlWorksheet.Visible := false;
+                       pnlGraph.Visible := true;
+                       memLab.Height := pnlRight.Height div 5;
+                       memLab.Clear;
+                       {if uReportType = 'H' then  **Browser Remove**
+                       begin
+                         WebBrowser1.Visible := true;
+                         WebBrowser1.Navigate('about:blank');
+                         WebBrowser1.Height := pnlRight.Height div 5;
+                         WebBrowser1.BringToFront;
+                         memLab.Visible := false;
+                       end
+                       else
+                       begin
+                         WebBrowser1.Visible := false;
+                         WebBrowser1.SendToBack;   }
+                         memLab.Visible := true;
+                         memLab.BringToFront;
+                       //end; }
+                       lstTestGraph.Items.Clear;
+                       lstTestGraph.Width := 0;
+                       FormResize(self);
+                       RedrawActivate(memLab.Handle);
+                       lblFooter.Caption := '';
+                       chkGraphZoom.Checked := false;
+                       chkGraphZoomClick(self);
+                       chkGraph3DClick(self);
+                       chkGraphValuesClick(self);
+                       lstDatesClick(self);
+                       //lstQualifierClick(self);
+                       cmdOtherTests.SetFocus;
+                       cmdOtherTests.Default := true;
+                       uPrevReportNode := tvReports.Selected;
+                     end
+                     else
+                       tvReports.Selected := uPrevReportNode;
+                    end;
+                  end
+
+            else if (aID = '9:MICROBIOLOGY') or (aID = '20:ANATOMIC PATHOLOGY') or (aID = '2:BLOOD BANK') or (aID = '10:LAB STATUS') or (aID = '3:ALL TESTS BY DATE') or (aID = '21:CUMULATIVE') or (aID = '27:AUTOPSY') then
+                  begin
+                    //added to deal with other reports from file 101.24
+                    memLab.Clear;
+                    chkBrowser;
+                    pnlHeader.Visible := false;
+                    pnlRightTop.Visible := false;
+                    pnlRightBottom.Visible := false;
+                    sptHorzRight.Visible := false;
+                    pnlRightTop.Height := lblHeading.Height;
+                    pnlRightTop.Align := alTop;
+                    pnlRightBottom.Align := alclient;
+                    sptHorzRight.Visible := true;
+                    pnlRightBottom.Visible := true;
+                    lvReports.Visible := false;
+                    memLab.Height := pnlRight.Height - (lblHeading.Height + lblTitle.Height);
+                    memLab.Align := alClient;
+                    FormResize(self);
+                    aOldID := 1;
+                    if aID = '9:MICROBIOLOGY' then aOldID := 4;
+                    //if aID = '20:ANATOMIC PATHOLOGY' then AOldID := 8;
+                    if aID = '2:BLOOD BANK' then AOldID := 9;
+                    if aID = '10:LAB STATUS' then AOldID := 10;
+                    if aID = '3:ALL TESTS BY DATE' then AOldID := 3;
+                    if aID = '21:CUMULATIVE' then AOldID := 2;
+                    case StrToInt(aCategory) of
+                                  {Categories of reports:
+                                      0:Fixed
+                                      1:Fixed w/Dates
+                                      2:Fixed w/Headers
+                                      3:Fixed w/Dates & Headers
+                                      4:Specialized
+                                      5:Graphic}
+
+                      0: begin
+                          CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,false,false);
+                          StatusText('Retrieving data...');
+                          GoRemoteOld(uLabRemoteReportData,0,aOldID,'',uReportRPC,'0','9999','1',0,0);
+                          //GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
+                          TabControl1.OnChange(nil);
+                          Reports(uLabLocalReportData,Patient.DFN, 'L:' + Piece(aID,':',1), '0', '9999', '1', 0, 0, uReportRPC);
+                          if TabControl1.TabIndex < 1 then
+                            QuickCopy(uLabLocalReportData,memLab);
+                          RedrawActivate(memLab.Handle);
+                          StatusText('');
+                          memLab.Lines.Insert(0,' ');
+                          memLab.Lines.Delete(0);
+                          memLab.SelStart := 0;
+                          if uReportType = 'R' then
+                          uHTMLDoc := HTML_PRE + uLabLocalReportData.Text + HTML_POST
+                          else
+                          uHTMLDoc := uHTMLPatient + uLabLocalReportData.Text;
+                          //if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');  **Browser Remove**
+                         end;
+                      1: begin
+                          CommonComponentVisible(false,false,false,true,true,false,false,false,false,false,false,false);
+                          memLab.Repaint;
+                          lstDatesClick(self);
+                          //lstQualifierClick(self);
+                         end;
+                      2: begin
+                          CommonComponentVisible(true,true,false,false,false,false,false,false,false,false,false,false);
+                          lstHeaders.Clear;
+                          StatusText('Retrieving data...');
+                          GoRemoteOld(uLabRemoteReportData,0,aOldID,'',uReportRPC,'0','9999','1',0,0);
+                          //GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
+                          TabControl1.OnChange(nil);
+                          Reports(uLabLocalReportData,Patient.DFN, Piece(aID,':',1), '0', '9999', '1', 0, 0, uReportRPC);
+                          if uLabLocalReportData.Count > 0 then
+                          begin
+                           TabControl1.OnChange(nil);
+                           if lstHeaders.Items.Count > 0 then lstHeaders.ItemIndex := 0;
+                          end;
+                          RedrawActivate(memLab.Handle);
+                          StatusText('');
+                          memLab.Lines.Insert(0,' ');
+                          memLab.Lines.Delete(0);
+                          if uReportType = 'R' then
+                           uHTMLDoc := HTML_PRE + uLabLocalReportData.Text + HTML_POST
+                          else
+                           uHTMLDoc := uHTMLPatient + uLabLocalReportData.Text;
+                          //if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');  **Browser Remove**
+                         end;
+                      3: begin
+                          CommonComponentVisible(true,true,false,true,true,false,false,false,true,false,false,false);
+                          lstDatesClick(self);
+                          //lstQualifierClick(self);
+                          memLab.Lines.Insert(0,' ');
+                          memLab.Lines.Delete(0);
+                         end;
+                    end;
+                    uPrevReportNode := tvReports.Selected;
+                  end
+
+            //else if aID = '20:ANATOMIC PATHOLOGY' then
+
+            //else if aID = '2:BLOOD BANK' then
+
+            //else if aID = '10:LAB STATUS' then
+
+
+            else
+              begin
+                pnlLeftBottom.Visible := false;
+                splitter1.Visible := false;
+                CommonComponentVisible(true,true,false,false,false,false,false,false,false,false,false,false);
+                pnlRightTop.Visible := true;
+                StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+                GoRemote(uRemoteReportData, 'L:' + aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
+                uReportInstruction := #13#10 + 'Retrieving data...';
+                TabControl1.OnChange(nil);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  LoadReportText(uLocalReportData, 'L:' + aID, aRptCode, aRPC, uHState);
+                QuickCopy(uLocalReportData, memLab);
+                if uLocalReportData.Count > 0 then
+                    TabControl1.OnChange(nil);
+                StatusText('');
+                uPrevReportNode := tvReports.Selected;
+              end;
+          end;
+        QT_DATERANGE:
+          begin      //      = 2
+
+            ListReportDateRanges(lstQualifier.Items);
+              if lstQualifier.ItemID = '' then
+                begin
+                  lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                  lvReports.SmallImages := uEmptyImageList;
+                  lvReports.Items.Clear;
+                  lstQualifierClick(self);
+                end
+              else
+                lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+
+            lblQualifier.Caption := 'Date Range';
+            pnlLeftBottom.Visible := true;
+            splitter1.Visible := true;
+            uPrevReportNode := tvReports.Selected;
+          end;
+        QT_HSCOMPONENT:
+          begin      //      = 5
+            pnlRightTop.Height := pnlRight.Height - (pnlRight.Height div 4);
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+            uReportInstruction := #13#10 + 'Retrieving data...';
+            CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,true,true);
+            pnlRightTop.Visible := true;
+            lvReports.Visible := true;
+            lvReports.SmallImages := uEmptyImageList;
+            lvReports.Items.Clear;
+            RowObjects.Clear;
+            memLab.Lines.Clear;
+            if (length(piece(aHSTag,';',2)) > 0) then
+              begin
+                if aCategory <> '0' then
+                  begin
+                    ListReportDateRanges(lstQualifier.Items);
+                    aQualifierID := lstQualifier.ItemID;
+                    if aQualifierID = '' then
+                      begin
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      begin
+                        GoRemote(uRemoteReportData, 'L:' + aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end;
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    if not (aRemote = '2' ) then
+                      GoRemote(uRemoteReportData, 'L:' + aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                    if not(piece(uRemoteType, '^', 9) = '1') then
+                      begin
+                        LoadReportText(uLocalReportData, 'L:' + aID, aQualifier, aRPC, uHState);
+                        LoadListView(uLocalReportData);
+                      end;
+                  end;
+              end
+            else
+              begin
+                if (aRemote = '1') or (aRemote = '2') then
+                  if TabControl1.Tabs.Count > 1 then
+                    ShowTabControl;
+                GoRemote(uRemoteReportData, 'L:' + aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  LoadReportText(uLocalReportData, 'L:' + aID, aQualifier, aRPC, uHState);
+                if uLocalReportData.Count < 1 then
+                  uReportInstruction := '<No Report Available>'
+                else
+                  begin
+                    if TabControl1.TabIndex < 1 then
+                      QuickCopy(uLocalReportData,memLab);
+                  end;
+                TabControl1.OnChange(nil);
+                if aCategory <> '0' then
+                  begin
+                    ListReportDateRanges(lstQualifier.Items);
+                    if lstQualifier.ItemID = '' then
+                      begin
+                        lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    if uLocalReportData.Count < 1 then
+                      begin
+                        uReportInstruction := '<No Report Available>';
+                        memLab.Lines.Add(uReportInstruction);
+                      end
+                    else
+                      begin
+                        QuickCopy(uLocalReportData,memLab);
+                        TabControl1.OnChange(nil);
+                      end;
+                  end;
+              end;
+            StatusText('');
+            uPrevReportNode := tvReports.Selected;
+          end;
+        QT_HSWPCOMPONENT:
+          begin      //      = 6
+            if uScreenSplitMoved = false then
+              begin
+                pnlRightTop.Height := pnlRight.Height - (pnlRight.Height div 2);
+                uScreenSplitLoc := sptHorzRight.Top;
+              end
+            else
+              pnlRightTop.Height := uScreenSplitLoc;
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+            uReportInstruction := #13#10 + 'Retrieving data...';
+            CommonComponentVisible(false,false,false,false,false,false,false,false,false,false,false,false);
+            pnlRightTop.Visible := true;
+            lvReports.Visible := true;
+            sptHorzRight.Visible := true;
+            memLab.Visible := true;
+            TabControl1.OnChange(nil);
+            RowObjects.Clear;
+            memLab.Lines.Clear;
+            lvReports.SmallImages := uEmptyImageList;
+            lvReports.Items.Clear;
+            if (length(piece(aHSTag,';',2)) > 0) then
+              begin
+                if aCategory <> '0' then
+                  begin
+                    ListReportDateRanges(lstQualifier.Items);
+                    aQualifierID := lstQualifier.ItemID;
+                    if aQualifierID = '' then
+                      begin
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      begin
+                        GoRemote(uRemoteReportData, 'L:' + aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end;
+                    lblQualifier.Caption := 'Date Range';
+                    CommonComponentVisible(false,false,false,false,false,false,false,false,false,true,true,true);
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    GoRemote(uRemoteReportData, 'L:' + aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                    if not (aRemote = '2' ) and (not(piece(uRemoteType, '^', 9) = '1')) then
+                      begin
+                        LoadReportText(uLocalReportData, 'L:' + aID, aQualifier, aRPC, uHState);
+                        LoadListView(uLocalReportData);
+                      end;
+                  end;
+              end
+            else
+              begin
+                if (aRemote = '1') or (aRemote = '2') then
+                  ShowTabControl;
+                GoRemote(uRemoteReportData, 'L:' + aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  LoadReportText(uLocalReportData, 'L:' + aID, aQualifier, aRPC, uHState);
+                if uLocalReportData.Count < 1 then
+                  uReportInstruction := '<No Report Available>'
+                else
+                  begin
+                    if TabControl1.TabIndex < 1 then
+                      QuickCopy(uLocalReportData,memLab);
+                  end;
+                TabControl1.OnChange(nil);
+                if aCategory <> '0' then
+                  begin
+
+                    ListReportDateRanges(lstQualifier.Items);
+                    if lstQualifier.ItemID = '' then
+                      begin
+                        lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    LoadListView(uLocalReportData);
+                  end;
+              end;
+            StatusText('');
+            uPrevReportNode := tvReports.Selected;
+          end;
+        else
+          begin      //      = ?
+            uQualifierType := QT_OTHER;
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+            GoRemote(uRemoteReportData, 'L:' + aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
+            uReportInstruction := #13#10 + 'Retrieving data...';
+            TabControl1.OnChange(nil);
+            //LoadReportText(uLocalReportData, 'L:' + aID, aRptCode, aRPC, uHState);
+            if not(piece(uRemoteType, '^', 9) = '1') then
+              LoadReportText(uLocalReportData, 'L:' + aID, '', aRPC, uHState);
+            if uLocalReportData.Count < 1 then
+              uReportInstruction := '<No Report Available>'
+            else
+              begin
+                if TabControl1.TabIndex < 1 then
+                  QuickCopy(uLocalReportData,memLab);
+              end;
+            TabControl1.OnChange(nil);
+            StatusText('');
+            uPrevReportNode := tvReports.Selected;
+          end;
+        lstQualifier.Caption := lblQualifier.Caption;
+      end;
+    end;
+  if lstQualifier.ItemIndex > -1 then
+    begin
+    if not (aHDR = '1') then
+      if aCategory <> '0' then
+          DisplayHeading(uQualifier)
+      else
+        DisplayHeading('');
+    end
+  else
+    begin
+      if not (aHDR = '1') then
+        if aCategory <> '0' then
+          begin
+            //lstDatesClick(self);
+            x := lstDates.DisplayText[lstDates.ItemIndex];
+            x1 := piece(x,' ',1);
+            x2 := piece(x,' ',2);
+            if (Uppercase(Copy(x1,1,1)) = 'T') and (Uppercase(Copy(x2,1,1)) = 'T') then
+              DisplayHeading(piece(x,' ',1) + ';' + piece(x,' ',2))
+            else
+              DisplayHeading('d' + lstDates.ItemID);
+          end
+        else
+          DisplayHeading('');
+    end;
+
+  SendMessage(tvReports.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+  RedrawActivate(tvReports.Handle);
+
+      memLab.Visible := true;
+      memLab.TabStop := true;
+      memLab.BringToFront;
+      RedrawActivate(memLab.Handle);
+
+  {if WebBrowser1.Visible = true then         **Browser Remove**
+    begin
+      WebBrowser1.Navigate('about:blank');
+      WebBrowser1.BringToFront;
+    end   }
+  {else if not GraphFormActive then
+    begin
+      memLab.Visible := true;
+      memLab.TabStop := true;
+      memLab.BringToFront;
+      RedrawActivate(memLab.Handle);
+    end}
+  //else                    **Browser Remove**
+    //begin                 **Browser Remove**
+      {GraphPanel(true);
+      with GraphForm do
+      begin
+        lstDateRange.Items := cboDateRange.Items;
+        lstDateRange.ItemIndex := cboDateRange.ItemIndex;
+        ViewSelections;
+        BringToFront;
+      end; }
+    //end;                    **Browser Remove**
+  lvReports.Columns.BeginUpdate;
+  lvReports.Columns.EndUpdate;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmLabs.tvReportsCollapsing(Sender: TObject; Node: TTreeNode;
+  var AllowCollapse: Boolean);
+begin
+  inherited;
+  tvReports.Selected := Node;
+end;
+
+procedure TfrmLabs.tvReportsExpanding(Sender: TObject; Node: TTreeNode;
+  var AllowExpansion: Boolean);
+begin
+  inherited;
+  tvReports.Selected := Node;
+end;
+
+procedure TfrmLabs.tvReportsKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+    VK_LBUTTON, VK_RETURN, VK_SPACE:
+    begin
+      tvReportsClick(Sender);
+      Key := 0;
+    end;
+  end;
+end;
+
+procedure TfrmLabs.GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string);
+var
+  i, j: integer;
+  LocalHandle, Query, Report, Seq: string;
+  HSType, DaysBack, ExamID, MaxOcc: string;
+  Alpha, Omega, Trans: double;
+begin
+  HSType := '';
+  DaysBack := '';
+  ExamID := '';
+  Alpha := 0;
+  Omega := 0;
+  Seq := '';
+  if AHDR = '1' then
+    begin
+      if HDRActive = '0' then
+        begin
+          InfoBox('The HDR is currently inactive.' + CRLF + 'Unable to retrieve HDR data at this time.', 'HDR Error', MB_OK);
+          Exit;
+        end;
+      InfoBox('You must use VistaWeb to view this report.', 'Use VistaWeb for HDR data', MB_OK);
+      if (Piece(AItem, ':', 1) = 'OR_VWAL') or (Piece(AItem, ':', 1) = 'OR_VWRX') then
+        AQualifier := 'T-50000;T+50000;99999';
+      if (Piece(AItem, ':', 1) = 'OR_VWVS') and (CharAt(AQualifier, 1) = ';') then
+        AQualifier := 'T-50000;T+50000;99999';
+    end;
+  if CharAt(AQualifier, 1) = 'd' then
+    begin
+      DaysBack := Copy(AQualifier, 2, Length(AQualifier));
+      AQualifier := ('T-' + Piece(DaysBack,';',1) + ';T;' + Pieces(AQualifier,';',2,3));
+      DaysBack := '';
+    end;
+  if CharAt(AQualifier, 1) = 'T' then
+    begin
+      if Piece(AQualifier,';',1) = 'T-0' then SetPiece(AQualifier,';',1,'T');
+      if (Piece(Aqualifier,';',1) = 'T') and (Piece(Aqualifier,';',2) = 'T')
+        then SetPiece(AQualifier,';',2,'T+1');
+      Alpha := StrToFMDateTime(Piece(AQualifier,';',1));
+      Omega := StrToFMDateTime(Piece(AQualifier,';',2));
+      if Alpha > Omega then
+        begin
+          Trans := Omega;
+          Omega := Alpha;
+          Alpha := Trans;
+        end;
+      MaxOcc := Piece(AQualifier,';',3);
+      SetPiece(AHSTag,';',4,MaxOcc);
+    end;
+  if CharAt(AQualifier, 1) = 'h' then HSType   := Copy(AQualifier, 2, Length(AQualifier));
+  if CharAt(AQualifier, 1) = 'i' then ExamID   := Copy(AQualifier, 2, Length(AQualifier));
+  with RemoteSites.SiteList do for i := 0 to Count - 1 do
+    begin
+    if (AHDR='1') and (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') then
+      begin
+        TRemoteSite(Items[i]).Selected := true;
+        frmFrame.lstCIRNLocations.Checked[i+2] := true;
+      end;
+    if TRemoteSite(Items[i]).Selected then
+      begin
+        TRemoteSite(Items[i]).ReportClear;
+        if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') and not(AHDR = '1') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TRemoteSite(Items[i]).RemoteHandle := '';
+            TRemoteSite(Items[i]).QueryStatus := '1^Done';
+            if uQualifierType = 6 then seq := '1^';
+            TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+            if uQualifierType = 6 then seq := '2^';
+            TRemoteSite(Items[i]).Data.Add(seq + '<No HDR Data Included> - Use "HDR Reports" menu for HDR Data.');
+            TabControl1.OnChange(nil);
+            if (length(piece(uHState,';',2)) > 0) then
+              LoadListView(TRemoteSite(Items[i]).Data);
+            continue;
+          end;
+        if (AHDR = '1') and not(LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TRemoteSite(Items[i]).RemoteHandle := '';
+            TRemoteSite(Items[i]).QueryStatus := '1^Done';
+            if uQualifierType = 6 then seq := '1^';
+            TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+            if uQualifierType = 6 then seq := '2^';
+            TRemoteSite(Items[i]).Data.Add(seq + '<No HDR Data> This site is not a source for HDR Data.');
+            TabControl1.OnChange(nil);
+            if (length(piece(uHState,';',2)) > 0) then
+              LoadListView(TRemoteSite(Items[i]).Data);
+            continue;
+          end;
+        if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200') and not(aFHIE = '1') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TRemoteSite(Items[i]).RemoteHandle := '';
+            TRemoteSite(Items[i]).QueryStatus := '1^Done';
+            if uQualifierType = 6 then seq := '1^';
+            TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+            if uQualifierType = 6 then seq := '2^';
+            TRemoteSite(Items[i]).Data.Add(seq + '<No DOD Data> - Use "Dept. of Defense Reports" Menu to retrieve data from DOD.');
+            TabControl1.OnChange(nil);
+            if (length(piece(uHState,';',2)) > 0) then
+              LoadListView(TRemoteSite(Items[i]).Data);
+            continue;
+          end;
+        TRemoteSite(Items[i]).CurrentReportQuery := 'Report' + Patient.DFN + ';'
+          + Patient.ICN + '^' + AItem + '^^^' + ARpc + '^' + HSType +
+          '^' + DaysBack + '^' + ExamID + '^' + FloatToStr(Alpha) + '^' +
+          FloatToStr(Omega) + '^' + TRemoteSite(Items[i]).SiteID + '^' + AHSTag + '^' + AHDR;
+        LocalHandle := '';
+        Query := TRemoteSite(Items[i]).CurrentReportQuery;
+        for j := 0 to RemoteReports.Count - 1 do
+          begin
+            Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+            if Report = Query then
+              begin
+                LocalHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle;
+                break;
+              end;
+          end;
+        if Length(LocalHandle) > 1 then
+          with RemoteSites.SiteList do
+            begin
+              GetRemoteData(TRemoteSite(Items[i]).Data,LocalHandle,Items[i]);
+              TRemoteSite(Items[i]).RemoteHandle := '';
+              TRemoteSite(Items[i]).QueryStatus := '1^Done';
+              UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Done');
+              TabControl1.OnChange(nil);
+              if (length(piece(uHState,';',2)) > 0) then //and (chkText.Checked = false) then
+                LoadListView(TRemoteSite(Items[i]).Data);
+            end
+        else
+          begin
+            if uDirect = '1' then
+              begin
+                StatusText('Retrieving reports from ' + TRemoteSite(Items[i]).SiteName + '...');
+                TRemoteSite(Items[i]).QueryStatus := '1^Direct Call';
+                UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Direct Call');
+                DirectQuery(Dest, AItem, HSType, Daysback, ExamID, Alpha, Omega, TRemoteSite(Items[i]).SiteID, ARpc, AHSTag);
+                if Copy(Dest[0],1,2) = '-1' then
+                  begin
+                    TRemoteSite(Items[i]).QueryStatus := '-1^Communication error';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication error');
+                    if uQualifierType = 6 then seq := '1^';
+                    TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+                    if uQualifierType = 6 then seq := '2^';
+                    TRemoteSite(Items[i]).Data.Add(seq + '<ERROR>- Unable to communicate with Remote site');
+                    TabControl1.OnChange(nil);
+                    if (length(piece(uHState,';',2)) > 0) then
+                      LoadListView(TRemoteSite(Items[i]).Data);
+                  end
+                else
+                  begin
+                    QuickCopy(Dest,TRemoteSite(Items[i]).Data);
+                    TRemoteSite(Items[i]).RemoteHandle := '';
+                    TRemoteSite(Items[i]).QueryStatus := '1^Done';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Done');
+                    TabControl1.OnChange(nil);
+                    if (length(piece(uHState,';',2)) > 0) then
+                      LoadListView(TRemoteSite(Items[i]).Data);
+                  end;
+                StatusText('');
+              end
+            else
+              begin
+                RemoteQuery(Dest, AItem, HSType, Daysback, ExamID, Alpha, Omega, TRemoteSite(Items[i]).SiteID, ARpc, AHSTag);
+                if Dest[0] = '' then
+                  begin
+                    TRemoteSite(Items[i]).QueryStatus := '-1^Communication error';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication error');
+                    if uQualifierType = 6 then seq := '1^';
+                    TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+                    if uQualifierType = 6 then seq := '2^';
+                    TRemoteSite(Items[i]).Data.Add(seq + '<ERROR>- Unable to communicate with Remote site');
+                    TabControl1.OnChange(nil);
+                    if (length(piece(uHState,';',2)) > 0) then
+                      LoadListView(TRemoteSite(Items[i]).Data);
+                  end
+                else
+                  begin
+                    TRemoteSite(Items[i]).RemoteHandle := Dest[0];
+                    TRemoteSite(Items[i]).QueryStatus := '0^initialization...';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'initialization');
+                    Timer1.Enabled := True;
+                    StatusText('Retrieving reports from ' + TRemoteSite(Items[i]).SiteName + '...');
+                  end;
+              end;
+          end;
+      end;
+    end;
+end;
+
+procedure TfrmLabs.GoRemoteOld(Dest: TStringList; AItem, AReportID: Int64; AQualifier,
+  ARpc, AHSType, ADaysBack, ASection: string; ADate1, ADate2: TFMDateTime);
+var
+  i,j: integer;
+  LocalHandle, Report, Query, seq: String;
+begin
+  { AReportID := 1  Generic report   RemoteLabReports
+                 2  Cumulative       RemoteLabCumulative
+                 3  Interim          RemoteLabInterim
+                 4  Microbioloby     RemoteLabMicro }
+seq := '';
+  with RemoteSites.SiteList do
+    for i := 0 to Count - 1 do
+      if TRemoteSite(Items[i]).Selected then
+        begin
+          TRemoteSite(Items[i]).LabClear;
+          if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') then
+          begin
+            TRemoteSite(Items[i]).LabQueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TabControl1.OnChange(nil);
+            continue;
+          end;
+           if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TabControl1.OnChange(nil);
+            continue;
+          end;
+          TRemoteSite(Items[i]).CurrentLabQuery := 'Lab' + Patient.DFN + ';' + Patient.ICN +
+            '^' + IntToStr(AItem) + '^' + 'L:' + IntToStr(AReportID) + '^^' + ARpc + '^' + AHSType +
+            '^' + ADaysBack + '^' + ASection + '^' + DateToStr(ADate1) + '^' + DateToStr(ADate2) + '^' +
+            TRemoteSite(Items[i]).SiteID;
+          LocalHandle := '';
+          for j := 0 to RemoteReports.Count - 1 do
+            begin
+              Query := TRemoteSite(Items[i]).CurrentLabQuery;
+              Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+              if Report = Query then
+                begin
+                  LocalHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle;
+                  break;
+                end;
+            end;
+          if Length(LocalHandle) > 1 then
+            with RemoteSites.SiteList do
+              begin
+                GetRemoteData(TRemoteSite(Items[i]).LabData,LocalHandle,Items[i]);
+                TRemoteSite(Items[i]).LabRemoteHandle := '';
+                TRemoteSite(Items[i]).LabQueryStatus := '1^Done';
+                UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Done');
+                TabControl1.OnChange(nil);
+              end
+          else
+            begin
+              case AReportID of
+              1: begin
+                   RemoteLabReports(Dest, Patient.DFN + ';' + Patient.ICN, IntToStr(AItem),
+                     AHSType, ADaysBack, ASection, ADate1, ADate2,
+                     TRemoteSite(Items[i]).SiteID, ARpc);
+                 end;
+              2: begin
+                   RemoteLabCumulative(Dest, Patient.DFN + ';' + Patient.ICN,
+                     StrToInt(Adaysback), Adate1, Adate2, TRemoteSite(Items[i]).SiteID,ARpc);
+                 end;
+              3: begin
+                   RemoteLabInterim(Dest, Patient.DFN + ';' + Patient.ICN, Adate1, Adate2,
+                     TRemoteSite(Items[i]).SiteID, ARpc);
+                 end;
+              4: begin
+                   RemoteLabMicro(Dest, Patient.DFN + ';' + Patient.ICN, Adate1, Adate2,
+                     TRemoteSite(Items[i]).SiteID, ARpc);
+                 end;
+              else begin
+                     RemoteLab(Dest, Patient.DFN + ';' + Patient.ICN, IntToStr(AItem),
+                     AHSType, ADaysBack, ASection, ADate1, ADate2,
+                     TRemoteSite(Items[i]).SiteID, ARpc);
+                   end;
+              end;
+              if Dest[0] = '' then
+                begin
+                  TRemoteSite(Items[i]).LabQueryStatus := '-1^Communication error';
+                  UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Communication error');
+                end
+              else
+                begin
+                  TRemoteSite(Items[i]).LabRemoteHandle := Dest[0];
+                  TRemoteSite(Items[i]).LabQueryStatus := '0^initialization...';
+                  UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Initialization');
+                  Timer1.Enabled := True;
+                  StatusText('Retrieving reports from '
+                    + TRemoteSite(Items[i]).SiteName + '...');
+                end;
+            end;
+        end;
+end;
+
+procedure TfrmLabs.TabControl1Change(Sender: TObject);
+var
+  aStatus: string;
+  hook: Boolean;
+  i: integer;
+begin
+  inherited;
+  memLab.Lines.Clear;
+  lstHeaders.Items.Clear;
+  with TabControl1 do
+    begin
+      memLab.Lines.BeginUpdate;
+      if TabIndex > 0 then
+        begin
+          aStatus := TRemoteSite(Tabs.Objects[TabIndex]).LabQueryStatus;
+          if aStatus = '1^Done' then
+            begin
+              if Piece(TRemoteSite(Tabs.Objects[TabIndex]).LabData[0],'^',1) = '[HIDDEN TEXT]' then
+                begin
+                  lstHeaders.Clear;
+                  hook := false;
+                  for i := 1 to TRemoteSite(Tabs.Objects[TabIndex]).LabData.Count - 1 do
+                    if hook = true then
+                      memLab.Lines.Add(TRemoteSite(Tabs.Objects[TabIndex]).LabData[i])
+                    else
+                      begin
+                        lstHeaders.Items.Add(MixedCase(TRemoteSite(Tabs.Objects[TabIndex]).LabData[i]));
+                        if Piece(TRemoteSite(Tabs.Objects[TabIndex]).LabData[i],'^',1) = '[REPORT TEXT]' then
+                          hook := true;
+                      end;
+                end
+              else
+                QuickCopy(TRemoteSite(Tabs.Objects[TabIndex]).LabData,memLab);
+              memLab.Lines.Insert(0,' ');
+              memLab.Lines.Delete(0);
+            end;
+          if Piece(aStatus,'^',1) = '-1' then
+            memLab.Lines.Add('Remote data transmission error: ' + Piece(aStatus,'^',2));
+          if Piece(aStatus,'^',1) = '0' then
+            memLab.Lines.Add('Transmission in progress: ' + Piece(aStatus,'^',2));
+          if Piece(aStatus,'^',1) = '' then
+            memLab.Lines.Add('Select a report...');
+        end
+      else
+        if uLabLocalReportData.Count > 0 then
+          begin
+            if Piece(uLabLocalReportData[0],'^',1) = '[HIDDEN TEXT]' then
+              begin
+                lstHeaders.Clear;
+                hook := false;
+                for i := 1 to uLabLocalReportData.Count - 1 do
+                  if hook = true then
+                    memLab.Lines.Add(uLabLocalReportData[i])
+                  else
+                    begin
+                      lstHeaders.Items.Add(MixedCase(uLabLocalReportData[i]));
+                      if Piece(uLabLocalReportData[i],'^',1) = '[REPORT TEXT]' then
+                        hook := true;
+                    end;
+              end
+            else
+              QuickCopy(uLabLocalReportData,memLab);
+            memLab.Lines.Insert(0,' ');
+            memLab.Lines.Delete(0);
+          end;
+      memLab.SelStart := 0;
+      memLab.Lines.EndUpdate;
+    end;
+end;
+
+procedure TfrmLabs.WebBrowser1DocumentComplete(Sender: TObject;     //**Browser Remove**
+  const pDisp: IDispatch; var URL: OleVariant);
+var
+  //WebDoc: IHtmlDocument2;                            **Browser Remove**
+  v: variant;
+begin
+  inherited;
+  if uHTMLDoc = '' then Exit;
+  if not(uReportType = 'H') then Exit; //this can be removed if & when browser replaces memLab control
+  //if not Assigned(WebBrowser1.Document) then Exit;    **Browser Remove**
+  //WebDoc := WebBrowser1.Document as IHtmlDocument2;   **Browser Remove**
+  v := VarArrayCreate([0, 0], varVariant);
+  v[0] := uHTMLDoc;
+  //WebDoc.write(PSafeArray(TVarData(v).VArray));         **Browser Remove**
+  //WebDoc.close;                                         **Browser Remove**
+  //uHTMLDoc := '';
+end;
+
+procedure TfrmLabs.ChkBrowser;              // **Browser Remove**
+begin
+  {if uReportType = 'H' then                **Browser Remove**
+   begin
+     WebBrowser1.Visible := true;
+     WebBrowser1.Navigate('about:blank');
+     WebBrowser1.BringToFront;
+     memLab.Visible := false;
+   end
+ else
+  begin
+    WebBrowser1.Visible := false;
+    WebBrowser1.SendToBack;    }
+    memLab.Visible := true;
+    memLab.BringToFront;
+  //end;   }
+end;
+
+procedure TfrmLabs.CommonComponentVisible(A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12: Boolean);
+begin
+  lstDates.Visible := false;    // turned off to realign correctly
+  lblDates.Visible := false;
+  lstQualifier.Visible := false;
+  lblQualifier.Visible := false;
+  pnlOtherTests.Visible := false;
+  lstHeaders.Visible := false;
+  lblHeaders.Visible := false;
+  sptHorzRight.Visible := false;
+  lblHeaders.Visible := A1;
+  lstHeaders.Visible := A2;
+  lblQualifier.Visible := A11;
+  lstQualifier.Visible := A12;
+  lblDates.Visible := A4;
+  lstDates.Visible := A5;        // reordered to realign
+  pnlOtherTests.Visible := A3;
+  pnlHeader.Visible := A6;
+  grdLab.Visible := A7;
+  pnlChart.Visible := A8;
+  pnlFooter.Visible := A9;
+  lvReports.Visible := A10;
+  sptHorzRight.Visible := A10;
+  if A4 and A1 and (lblDates.Top < lblHeaders.Top) then
+  begin
+    lblDates.Caption := 'Headings';  // swithes captions if not aligned
+    lblHeaders.Caption := 'Date Range';
+  end
+  else
+  begin
+    lblDates.Caption := 'Date Range';
+    lblHeaders.Caption := 'Headings';
+  end;
+  lstDates.Caption := lblDates.Caption;
+  lstHeaders.Caption := lblHeaders.Caption;
+  if A4 or A2 or A12 then
+    begin
+      pnlLeftBottom.Visible := true;
+      Splitter1.Visible := true;
+    end;
+end;
+
+procedure TfrmLabs.ShowTabControl;
+begin
+  if TabControl1.Tabs.Count > 1 then
+    begin
+      TabControl1.Visible := true;
+      TabControl1.TabStop := true;
+      pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+    end;
+end;
+
+procedure TfrmLabs.Splitter1CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 150 then
+    Newsize := 150;
+end;
+
+procedure TfrmLabs.sptHorzRightCanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 10 then
+      Newsize := 10;
+end;
+
+procedure TfrmLabs.sptHorzRightMoved(Sender: TObject);
+begin
+  inherited;
+  uScreenSplitMoved := true;
+  uScreenSplitLoc := sptHorzRight.Top;
+end;
+
+procedure TfrmLabs.Memo1KeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+{ TGrdLab508Manager }
+
+constructor TGrdLab508Manager.Create;
+begin
+  inherited Create([mtValue, mtItemChange]);
+end;
+
+function TGrdLab508Manager.GetItem(Component: TWinControl): TObject;
+var
+  sg : TCaptionStringGrid;
+begin
+  sg := TCaptionStringGrid(Component);
+  Result := TObject(sg.Selection.Top + sg.Selection.Left);
+end;
+
+function TGrdLab508Manager.GetTextToSpeak(sg: TCaptionStringGrid): String;
+var
+  textToSpeak : String;
+  CurrRowStrings,HeaderStrings : TStrings;
+  i : integer;
+begin
+  textToSpeak := '';
+  HeaderStrings := sg.Rows[0];
+  CurrRowStrings := sg.Rows[sg.Selection.Top];
+  for i := 0 to CurrRowStrings.Count - 1 do begin
+    textToSpeak := TextToSpeak + ', ' + HeaderStrings[i] + ', ' + ToBlankIfEmpty(CurrRowStrings[i]);
+  end;
+  Result := textToSpeak;
+end;
+
+function TGrdLab508Manager.GetValue(Component: TWinControl): string;
+var
+  sg : TCaptionStringGrid;
+begin
+  sg := TCaptionStringGrid(Component);
+  Result := GetTextToSpeak(sg);
+end;
+
+function TGrdLab508Manager.ToBlankIfEmpty(aString: String): String;
+begin
+  Result := aString;
+  if aString = '' then
+  Result := 'blank';
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmLabs);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLaunch.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLaunch.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLaunch.dfm	(revision 1676)
@@ -0,0 +1,78 @@
+object frmLaunch: TfrmLaunch
+  Left = 557
+  Top = 271
+  Width = 231
+  Height = 189
+  Caption = 'Lauch Stuff'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 8
+    Top = 120
+    Width = 33
+    Height = 13
+    Caption = 'Patient'
+  end
+  object grpFontSize: TRadioGroup
+    Left = 8
+    Top = 8
+    Width = 65
+    Height = 105
+    Caption = 'Font Size'
+    ItemIndex = 0
+    Items.Strings = (
+      '8 pt'
+      '10 pt'
+      '12 pt'
+      '14 pt'
+      '18 pt')
+    TabOrder = 0
+  end
+  object cmdShow: TButton
+    Left = 88
+    Top = 12
+    Width = 129
+    Height = 25
+    Caption = 'Show w/o Notifications'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdShowClick
+  end
+  object Edit1: TEdit
+    Left = 8
+    Top = 136
+    Width = 209
+    Height = 21
+    TabOrder = 2
+  end
+  object cmdClose: TButton
+    Left = 88
+    Top = 88
+    Width = 129
+    Height = 25
+    Cancel = True
+    Caption = 'Close'
+    TabOrder = 3
+    OnClick = cmdCloseClick
+  end
+  object cmdNotif: TButton
+    Tag = 1
+    Left = 88
+    Top = 44
+    Width = 129
+    Height = 25
+    Cancel = True
+    Caption = 'Show with Notifications'
+    TabOrder = 4
+    OnClick = cmdShowClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLaunch.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLaunch.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLaunch.pas	(revision 1676)
@@ -0,0 +1,70 @@
+unit fLaunch;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, fBase508Form;
+
+type
+  TfrmLaunch = class(TfrmBase508Form)
+    grpFontSize: TRadioGroup;
+    cmdShow: TButton;
+    Edit1: TEdit;
+    Label1: TLabel;
+    cmdClose: TButton;
+    cmdNotif: TButton;
+    procedure cmdShowClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdCloseClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmLaunch: TfrmLaunch;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, ORNet, fPtSel, uCore;
+
+procedure TfrmLaunch.FormCreate(Sender: TObject);
+begin
+  if not ConnectToServer('OR CPRS GUI CHART') then
+  begin
+    Close;     // need a way to exit without needing the broker (close may call it)
+    Exit;
+  end;
+  User    := TUser.Create;                   // creates the user object defined in uCore
+  Patient := TPatient.Create;                // creates the patient object defined in uCore
+  Encounter := TEncounter.Create;            // creates the encounter object defined in uCore
+end;
+
+procedure TfrmLaunch.cmdShowClick(Sender: TObject);
+var
+  ASize: Integer;
+  Notif: Boolean;
+begin
+  ASize := 8;
+  case grpFontSize.ItemIndex of
+  0: ASize := 8;
+  1: ASize := 10;
+  2: ASize := 12;
+  3: ASize := 14;
+  4: ASize := 18;
+  end;
+  Notif := TControl(Sender).Tag = 1;
+  SelectPatient(Notif, ASize);
+  Edit1.Text := IntToStr(Patient.DFN) + U + Patient.Name + U + Encounter.LocationName;
+end;
+
+procedure TfrmLaunch.cmdCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLkUpLocation.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLkUpLocation.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLkUpLocation.dfm	(revision 1676)
@@ -0,0 +1,87 @@
+inherited frmLkUpLocation: TfrmLkUpLocation
+  Left = 377
+  Top = 314
+  Caption = 'Select Location'
+  ClientHeight = 212
+  ClientWidth = 356
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 364
+  ExplicitHeight = 239
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblLocation: TLabel [0]
+    Left = 8
+    Top = 8
+    Width = 41
+    Height = 13
+    Caption = 'Location'
+  end
+  object lblInfo: TLabel [1]
+    Left = 8
+    Top = 176
+    Width = 341
+    Height = 28
+    AutoSize = False
+    WordWrap = True
+  end
+  object cboLocation: TORComboBox [2]
+    Left = 8
+    Top = 22
+    Width = 193
+    Height = 143
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Location'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnNeedData = cboLocationNeedData
+    CharsNeedMatch = 1
+  end
+  object cmdOK: TButton [3]
+    Left = 276
+    Top = 22
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 276
+    Top = 51
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboLocation'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmLkUpLocation'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLkUpLocation.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLkUpLocation.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fLkUpLocation.pas	(revision 1676)
@@ -0,0 +1,91 @@
+unit fLkUpLocation;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORCtrls, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmLkUpLocation = class(TfrmAutoSz)
+    lblInfo: TLabel;
+    cboLocation: TORComboBox;
+    lblLocation: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cboLocationNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+  private
+    OKPressed: Boolean;
+  end;
+
+var
+  LocType:   integer;
+
+
+procedure LookupLocation(var IEN: Integer; var AName: string; const AType: integer; const HelpInfo: string);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uConst;
+
+procedure LookupLocation(var IEN: Integer; var AName: string; const AType: integer; const HelpInfo: string);
+var
+  frmLkUpLocation: TfrmLkUpLocation;
+begin
+  LocType := AType;
+  frmLkUpLocation := TfrmLkUpLocation.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmLkUpLocation));
+    frmLkUpLocation.lblInfo.Caption := HelpInfo;
+    frmLkUpLocation.ShowModal;
+    IEN := 0;
+    AName := '';
+    if frmLkUpLocation.OKPressed then
+    begin
+      IEN := frmLkUpLocation.cboLocation.ItemIEN;
+      AName := frmLkUpLocation.cboLocation.Text;
+    end;
+  finally
+    frmLkUpLocation.Release;
+  end;
+end;
+
+procedure TfrmLkUpLocation.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  cboLocation.InitLongList('');
+end;
+
+procedure TfrmLkUpLocation.cboLocationNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+    case LocType of
+      LOC_ALL:   cboLocation.ForDataUse(SubSetOfLocations(StartFrom, Direction));
+      LOC_OUTP:  cboLocation.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+      LOC_INP:   cboLocation.ForDataUse(SubSetOfInpatientLocations(StartFrom, Direction));
+    end;
+
+end;
+
+procedure TfrmLkUpLocation.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmLkUpLocation.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMHTest.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMHTest.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMHTest.dfm	(revision 1676)
@@ -0,0 +1,88 @@
+inherited frmMHTest: TfrmMHTest
+  Left = 217
+  Top = 156
+  BorderIcons = [biSystemMenu]
+  Caption = 'frmMHTest'
+  ClientHeight = 433
+  ClientWidth = 500
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object sbMain: TScrollBox [0]
+    Left = 0
+    Top = 0
+    Width = 500
+    Height = 408
+    HorzScrollBar.Visible = False
+    VertScrollBar.Tracking = True
+    Align = alClient
+    TabOrder = 0
+    OnResize = sbMainResize
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 408
+    Width = 500
+    Height = 25
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      500
+      25)
+    object btnCancel: TButton
+      Left = 425
+      Top = 3
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 2
+    end
+    object btnOK: TButton
+      Left = 347
+      Top = 3
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = '&OK'
+      TabOrder = 1
+      OnClick = btnOKClick
+    end
+    object btnClear: TButton
+      Left = 0
+      Top = 3
+      Width = 75
+      Height = 21
+      Caption = 'Clear'
+      TabOrder = 0
+      OnClick = btnClearClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = sbMain'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnClear'
+        'Status = stsDefault')
+      (
+        'Component = frmMHTest'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMHTest.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMHTest.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMHTest.pas	(revision 1676)
@@ -0,0 +1,1199 @@
+unit fMHTest;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, ORFn, uConst, fBase508Form, uDlgComponents,
+  VA508AccessibilityManager, uCore, orNet, TRPCB, StrUtils, rCore, VAUtils;
+
+type
+TShowProc = procedure(Broker: TRPCBroker;
+  InstrumentName,
+  PatientDFN,
+  OrderedBy,
+  OrderedByDUZ,
+  AdministeredBy,
+  AdministeredByDUZ,
+  Location,
+  LocationIEN: string;
+  Required: boolean;
+  var ProgressNote: string); stdcall;
+
+TSaveProc = procedure(Broker: TRPCBroker;
+  InstrumentName,
+  PatientDFN,
+  OrderedByDUZ,
+  AdministeredByDUZ,
+  AdminDate,
+  LocationIEN: string;
+  var Status: string); stdcall;
+
+TRemoveTempFile = procedure(
+  InstrumentName,
+  PatientDFN: string); stdcall;
+
+TCloseProc = procedure;
+
+TUsedMHDll = record
+  Checked: boolean;
+  Display: boolean;
+end;
+
+type
+  TfrmMHTest = class(TfrmBase508Form)
+    sbMain: TScrollBox;
+    pnlBottom: TPanel;
+    btnCancel: TButton;
+    btnOK: TButton;
+    btnClear: TButton;
+    procedure FormDestroy(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure sbMainResize(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnClearClick(Sender: TObject);
+  private
+    FIDCount: integer;
+    FAnswers: TStringList;
+    FObjs: TList;
+    FInfoText: string;
+    FInfoLabel: TMentalHealthMemo;
+    FBuilt: boolean;
+    FMaxLines: integer;
+    FBuildingControls: boolean;
+    procedure BuildControls;
+    function Answers: string;
+    procedure GetQText(QText: TStringList);
+    function LoadTest(InitialAnswers, TestName: string): boolean;
+    function CurrentQ: integer;
+    procedure GotoQ(x: integer);
+  public
+  MHTestComp: string;
+  MHA3: boolean;
+  function CallMHDLL(TestName: string; Required: boolean): String;
+  end;
+
+function PerformMHTest(InitialAnswers, TestName: string; QText: TStringList; Required: boolean): string;
+function SaveMHTest(TestName, Date, Loc: string): boolean;
+procedure RemoveMHTest(TestName: string);
+function CheckforMHDll: boolean;
+procedure CloseMHDLL;
+
+var
+  MHDLLHandle: THandle = 0;
+  
+implementation
+
+uses fFrame,rReminders, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+const
+  MaxQ    = 100; // Max # of allowed answers for one question
+  LineNumberTag = 1;
+  ComboBoxTag = 2;
+  BevelTag = 3;
+  QuestionLabelTag = 4;
+  CheckBoxTag = 10;
+
+  NumberThreshhold = 5; // min # of questions on test before each has a line number
+  Skipped = 'X';
+  QGap = 4;
+  Gap = 2;
+
+  ShowProc                    : TShowProc = nil;
+  SaveProc                    : TSaveProc = nil;
+  RemoveTempFile              : TRemoveTempFile = nil;
+  CloseProc                  : TCloseProc = nil;
+  SHARE_DIR = '\VISTA\Common Files\';
+var
+  frmMHTest: TfrmMHTest;
+  FFirstCtrl: TList;
+  FYPos: TList;
+  UsedMHDll: TUsedMHDll;
+  //DLLForceClose: boolean = false;
+
+type
+  TMHQuestion = class(TObject)
+  private
+    FSeeAnswers: boolean;
+    FAnswerText: string;
+    FText: string;
+    FAllowedAnswers: string;
+    FAnswerIndex: integer;
+    FAnswerCount: integer;
+    FID: integer;
+    FAnswer: string;
+    FObjects: TList;
+    FLine: integer;
+  protected
+    procedure OnChange(Sender: TObject);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function Question: string;
+    procedure BuildControls(var Y: integer; Wide: integer);
+    property AllowedAnswers: string read FAllowedAnswers;
+    property Answer: string read FAnswer;
+    property AnswerCount: integer read FAnswerCount;
+    property AnswerIndex: integer read FAnswerIndex;
+    property AnswerText: string read FAnswerText;
+    property SeeAnswers: boolean read FSeeAnswers;
+    property ID: integer read FID;
+    property Text: string read FText;
+  end;
+
+procedure ProcessMsg;
+var
+  SaveCursor: TCursor;
+  
+begin
+  if(Screen.Cursor = crHourGlass) then
+  begin
+    SaveCursor := Screen.Cursor;
+    Screen.Cursor := crDefault;
+    try
+      Application.ProcessMessages;
+    finally
+      Screen.Cursor := SaveCursor;
+    end;
+  end
+  else
+    Application.ProcessMessages;
+end;
+
+function PerformMHTest(InitialAnswers, TestName: string; QText: TStringList; Required: boolean): string;
+var
+str,scores, tempStr: string;
+begin
+  Result := InitialAnswers;
+  str := frmMHTest.CallMHDLL(testName, Required);
+  if str <> '' then
+    begin
+      if Piece(str,U,1) = 'COMPLETE' then
+        begin
+         Scores := Piece(str, U, 4);
+         if QText <> nil then
+           begin
+             tempStr := Piece(Str, U, 5);
+             if Pos('GAF Score', tempStr) = 0 then tempStr := Copy(tempStr, 2, Length(tempStr));
+             tempStr := AnsiReplaceStr(tempStr,'1156','Response not required due to responses to other questions.');
+             tempStr := AnsiReplaceStr(tempStr,'*','~~');
+             PiecesToList(tempStr,'~',QText);
+           end;
+         Result := 'New MH dll^COMPLETE^'+ Scores;
+        end
+      else if Piece(str,U,1) = 'INCOMPLETE' then
+        begin
+          Result := 'New MH dll^INCOMPLETE^';
+        end
+      else if (Piece(str,U,1) = 'CANCELLED') or (Piece(str, U, 1) = 'NOT STARTED') then
+        begin
+          Result := 'New MH dll^CANCELLED^';
+        end;
+      frmMHTest.Free;
+      exit;
+    end;
+  frmMHTest := TfrmMHTest.Create(Application);
+  try
+    frmMHTest.Caption := TestName;
+    if(frmMHTest.LoadTest(InitialAnswers, TestName)) then
+    begin
+      if(frmMHTest.ShowModal = mrOK) then
+      begin
+        Result := frmMHTest.Answers;
+        if(assigned(QText)) then
+        begin
+          QText.Clear;
+          if(Result <> '') then
+            frmMHTest.GetQText(QText);
+        end;
+      end;
+    end;
+      if frmMHTest.MHTestComp = '' then frmMHTest.MHTestComp := '0';
+      Result := Result + U + frmMHTest.MHTestComp;
+      if Result = U then Result := '';
+  finally
+    frmMHTest.Free;
+  end;
+end;
+
+function SaveMHTest(TestName, date, Loc: string): boolean;
+var
+  MHPath, save: string;
+  
+begin
+  MHPath := GetProgramFilesPath + SHARE_DIR + 'YS_MHA';
+  if MHDLLHandle = 0 then
+    MHDLLHandle := LoadLibrary(PChar(MHPath));
+  Result := true;
+  if MHDLLHandle = 0 then
+    begin
+      InfoBox('YS_MHA.DLL not available', 'Error', MB_OK);
+      Exit;
+    end
+  else
+    begin
+      try
+        @SaveProc := GetProcAddress(MHDLLHandle, 'SaveInstrument');
+
+        if @SaveProc = nil then
+          begin
+          // function not found.. misspelled?
+            infoBox('Save Instrument Function not found within YS_MHA.DLL.', 'Error', MB_OK);
+            Exit;
+          end;
+
+        if Assigned(SaveProc) then
+         begin
+//          fFrame.frmFrame.DLLActive := True;
+          try
+            SaveProc(RPCBrokerV,
+            UpperCase(TestName), //InstrumentName
+            Patient.DFN, //PatientDFN
+            InttoStr(User.duz), //OrderedByDUZ
+            InttoStr(User.duz), //AdministeredByDUZ
+            date,
+            Loc, //LocationIEN
+            save);
+          finally
+//            fFrame.frmFrame.DLLActive := false;
+            if RPCBrokerV.CurrentContext <> 'OR CPRS GUI CHART' then
+               begin
+                 if RPCBrokerV.CreateContext('OR CPRS GUI CHART') = false then
+                    infoBox('Error switching broker context','Error', MB_OK);
+               end;
+          end;  {inner try..finally}
+         end;
+      finally
+        if MHDLLHandle <> 0 then
+        begin
+          FreeLibrary(MHDLLHandle);
+          MHDLLHandle := 0;
+        end;
+      end; {try..finally}
+  end;
+end;
+
+procedure RemoveMHTest(TestName: string);
+var
+  MHPath: string;
+begin
+  MHPath := GetProgramFilesPath + SHARE_DIR + 'YS_MHA';
+  if MHDLLHandle = 0 then
+    MHDLLHandle := LoadLibrary(PChar(MHPath));
+  if MHDLLHandle = 0 then
+    begin
+      InfoBox('YS_MHA.DLL not available', 'Error', MB_OK);
+      Exit;
+    end
+  else
+    begin
+      try
+        @RemoveTempFile := GetProcAddress(MHDLLHandle, 'RemoveTempFile');
+
+        if @RemoveTempFile = nil then
+          begin
+          // function not found.. misspelled?
+            InfoBox('Remove Temp File function not found within YS_MHA.DLL.', 'Error', MB_OK);
+            Exit;
+          end;
+
+        if Assigned(RemoveTempFile) then
+         begin
+//          fFrame.frmFrame.DLLActive := True;
+          try
+            RemoveTempFile(UpperCase(TestName), //InstrumentName
+            Patient.DFN);
+          finally
+//            fFrame.frmFrame.DLLActive := False;
+            if RPCBrokerV.CurrentContext <> 'OR CPRS GUI CHART' then
+               begin
+                 if RPCBrokerV.CreateContext('OR CPRS GUI CHART') = false then
+                    infoBox('Error switching broker context','Error', MB_OK);
+               end;
+          end;  {inner try..finally}
+         end;
+      finally
+        if MHDLLHandle <> 0 then
+        begin
+          FreeLibrary(MHDLLHandle);
+          MHDLLHandle := 0;
+        end;
+      end; {try..finally}
+  end;
+end;
+
+function CheckforMHDll: boolean;
+var
+  MHPath: string;
+begin
+  Result := True;
+    if (UsedMHDll.Checked = True) and (UsedMHDll.Display = False) then Exit
+  else if UsedMHDll.Checked = false then
+    begin
+      UsedMHDll.Display := UsedMHDllRPC;
+      UsedMHDll.Checked := True;
+      if UsedMHDll.Display = false then
+        begin
+          Result := False;
+          exit;
+        end;
+    end;
+  if MHDLLHandle = 0 then // if not 0 the DLL already loaded - result = true
+  begin
+    MHPath := GetProgramFilesPath + SHARE_DIR + 'YS_MHA';
+    MHDLLHandle := LoadLibrary(PChar(MHPath));
+    if MHDLLHandle = 0 then
+      Result := false
+    else
+    begin
+      FreeLibrary(MHDLLHandle);
+      MHDLLHandle := 0;
+    end;
+  end;
+end;
+
+procedure CloseMHDLL;
+begin
+  if MHDLLHandle = 0 then Exit;
+  try
+    @CloseProc := GetProcAddress(MHDLLHandle, 'CloseDLL');
+    if Assigned(CloseProc) then
+    begin
+      CloseProc;
+    end;
+  finally
+    if MHDLLHandle <> 0 then
+    begin
+      FreeLibrary(MHDLLHandle);
+      MHDLLHandle := 0;
+    end;
+  end; {try..finally}
+end;
+
+{ TfrmMHTest }
+
+function TfrmMHTest.Answers: string;
+var
+  i, XCnt: integer;
+  ans: string;
+
+begin
+  Result := '';
+  XCnt := 0;
+  for i := 0 to FObjs.Count-1 do
+  begin
+    ans := TMHQuestion(FObjs[i]).FAnswer;
+    if(ans = Skipped) then
+      inc(XCnt);
+    Result := Result + ans;
+  end;
+  if(XCnt = FObjs.Count) then
+    Result := '';
+end;
+
+function TfrmMHTest.LoadTest(InitialAnswers, TestName: string): boolean;
+var
+  TstData: TStringList;
+  lNum, i, idx: integer;
+  Line, LastLine, Inp, Code: string;
+  Txt, Spec, p, Spidx, tmp: string;
+  RSpec, First, TCodes: boolean;
+  QObj: TMHQuestion;
+
+  procedure ParseText;
+  var
+    i, tlen: integer;
+
+  begin
+    Code := '';
+    i := 1;
+    tlen := length(Txt);
+    while(i <= tlen) do
+    begin
+      while(i <= tlen) and (Txt[i] = ' ') do inc(i);
+      if(i > tlen) then
+      begin
+        Txt := '';
+        exit;
+      end;
+      if(i > 1) then
+      begin
+        delete(Txt,1,i-1);
+        i := 1;
+      end;
+      if(Spec = 'I') then exit;
+      tlen := length(Txt);
+      if(tlen < 3) then exit;
+      Code := copy(Txt,i,1);
+      if(pos(Code, (UpperCaseLetters + LowerCaseLetters + Digits)) = 0) then
+      begin
+        Code := '';
+        exit;
+      end;
+      inc(i);
+      while(i <= tlen) and (Txt[i] = ' ') do inc(i);
+      if(Txt[i] in ['.','=']) then
+      begin
+        if(pos(Code, QObj.FAllowedAnswers) > 0) then
+        begin
+          inc(i);
+          while(i <= tlen) and (Txt[i] = ' ') do inc(i);
+          if(i <= tlen) then
+            delete(Txt,1,i-1)
+          else
+            Code := '';
+          exit;
+        end
+        else
+        begin
+          Code := '';
+          exit;
+        end;
+      end
+      else
+      begin
+        Code := '';
+        exit;
+      end;
+    end;
+  end;
+
+  procedure AddTxt2Str(var X: string);
+  begin
+    if(Txt <> '') then
+    begin
+      if(X <> '') then
+      begin
+        X := X + ' ';
+        if(copy(Txt, length(Txt), 1) = '.') then
+          X := X + ' ';
+      end;
+      X := X + Txt;
+    end;
+  end;
+
+begin
+  Result := TRUE;
+  TstData := TStringList.Create;
+  try
+    FastAssign(LoadMentalHealthTest(TestName), TstData);
+    if TstData.Strings[0] = '1' then MHA3 := True
+    else MHA3 := False;
+    Screen.Cursor := crHourGlass;
+    try
+      TstData.Add('99999;X;0');
+      idx := 1;
+      FMaxLines := 0;
+      FInfoText := '';
+      LastLine := U;
+      First := TRUE;
+      RSpec := FALSE;
+      TCodes := FALSE;
+      QObj := nil;
+      while (idx < TstData.Count) do
+      begin
+        Inp := TstData[idx];
+        if(pos('[ERROR]', Inp) > 0) then
+        begin
+          Result := FALSE;
+          break;
+        end;
+        p := Piece(Inp, U, 1);
+        Line := Piece(p, ';', 1);
+        Spec := Piece(p, ';', 2);
+        SpIdx := Piece(p, ';', 3);
+        if(LastLine <> Line) then
+        begin
+          LastLine := Line;
+          if(First) then
+            First := FALSE
+          else
+          begin
+            if(not RSpec) then
+            begin
+              Result := FALSE;
+              break;
+            end;
+          end;
+          if(Spec = 'X') then break;
+          lNum := StrToIntDef(Line, 0);
+          if(lNum <= 0) then
+          begin
+            Result := FALSE;
+            break;
+          end;
+          RSpec := FALSE;
+          TCodes := FALSE;
+          QObj := TMHQuestion(FObjs[FObjs.Add(TMHQuestion.Create)]);
+          QObj.FLine := lNum;
+          if(FMaxLines < lNum) then
+            FMaxLines := lNum;
+        end;
+        Txt := Piece(Inp, U, 2);
+        ParseText;
+        if(Txt <> '') then
+        begin
+          if(Spec = 'I') then
+          begin
+           if MHA3 = True then AddTxt2Str(QObj.FText)
+           else
+           AddTxt2Str(FInfoText);;
+          end
+          else
+          if(Spec = 'R') then
+          begin
+            RSpec := TRUE;
+            if(spIdx = '0') then
+              QObj.FAllowedAnswers := Txt
+            else
+            if(Code = '') then
+              QObj.FAnswerText := Txt
+            else
+            begin
+              QObj.FSeeAnswers := FALSE;
+              FAnswers.Add(Code + U + Txt);
+              inc(QObj.FAnswerCount);
+            end;
+          end
+          else
+          if(Spec = 'T') then
+          begin
+            if(Code = '') then
+            begin
+              if(TCodes) then
+              begin
+                tmp := FAnswers[FAnswers.Count-1];
+                AddTxt2Str(tmp);
+                FAnswers[FAnswers.Count-1] := tmp;
+              end
+              else
+                AddTxt2Str(QObj.FText);
+            end
+            else
+            begin
+              TCodes := TRUE;
+              FAnswers.Add(Code + U + Txt);
+              inc(QObj.FAnswerCount);
+            end;
+          end;
+        end;
+        inc(idx);
+      end;
+    finally
+      Screen.Cursor := crDefault;
+    end;
+  finally
+    TstData.Free;
+  end;
+  if(not Result) then
+    InfoBox('Error encountered loading ' + TestName, 'Error', MB_OK)
+  else
+  begin
+    for i := 0 to FObjs.Count-1 do
+    begin
+      with TMHQuestion(FObjs[i]) do
+      begin
+        tmp := copy(InitialAnswers,i+1,1);
+        if(tmp <> '') then
+          FAnswer := tmp;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmMHTest.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  FAnswers := TStringList.Create;
+  FObjs := TList.Create;
+  FFirstCtrl := TList.Create;
+  FYPos := TList.Create;
+end;
+
+procedure TfrmMHTest.FormDestroy(Sender: TObject);
+begin
+  KillObj(@FFirstCtrl);
+  KillObj(@FYPos);
+  KillObj(@FObjs, TRUE);
+  KillObj(@FAnswers);
+end;
+
+procedure TfrmMHTest.BuildControls;
+var
+  i, Wide, Y: integer;
+  BoundsRect: TRect;
+begin
+  if(not FBuildingControls) then
+  begin
+    FBuildingControls := TRUE;
+    try
+    Wide := sbMain.Width - (Gap * 2) - ScrollBarWidth - 4;
+    Y := gap - sbMain.VertScrollBar.Position;
+    if MHA3 = False then
+     begin
+     if(not assigned(FInfoLabel)) then
+      begin
+        FInfoLabel := TMentalHealthMemo.Create(Self);
+        FInfoLabel.Color := clBtnFace;
+        FInfoLabel.BorderStyle := bsNone;
+        FInfoLabel.ReadOnly := TRUE;
+        FInfoLabel.TabStop := ScreenReaderSystemActive;
+        FInfoLabel.Parent := sbMain;
+        FInfoLabel.WordWrap := TRUE;
+        FInfoLabel.Text := FInfoText;
+        FInfoLabel.Left := Gap;
+        UpdateColorsFor508Compliance(FInfoLabel);
+      end;
+      BoundsRect := FInfoLabel.BoundsRect;
+      //Wide := sbMain.Width - (Gap * 2) - ScrollBarWidth - 4;
+      //Y := gap - sbMain.VertScrollBar.Position;
+      BoundsRect.Top := Y;
+      BoundsRect.Right := BoundsRect.Left + Wide;
+      WrappedTextHeightByFont(Canvas, FInfoLabel.Font, FInfoLabel.Text, BoundsRect);
+      BoundsRect.Right := BoundsRect.Left + Wide;
+      FInfoLabel.BoundsRect := BoundsRect;
+      ProcessMsg;
+      inc(Y, FInfoLabel.Height + QGap);
+      for i := 0 to FObjs.Count-1 do
+        TMHQuestion(FObjs[i]).BuildControls(Y, Wide);
+     end
+     else
+       begin
+         inc(Y, 1);
+         for i := 0 to FObjs.Count-1 do TMHQuestion(FObjs[i]).BuildControls(Y, Wide);
+       end;
+    finally
+      FBuildingControls := FALSE;
+    end;
+  end;
+  amgrMain.RefreshComponents;
+end;
+
+procedure TfrmMHTest.GetQText(QText: TStringList);
+var
+  i, lx: integer;
+
+begin
+  if(FObjs.Count > 99) then
+    lx := 5
+  else
+  if(FObjs.Count > 9) then
+    lx := 4
+  else
+    lx := 3;
+  for i := 0 to FObjs.Count-1 do
+    QText.Add(copy(IntToStr(i+1) + '.      ', 1, lx) + TMHQuestion(FObjs[i]).Question);
+end;
+
+function TfrmMHTest.CallMHDLL(TestName: string; Required: boolean): String;
+var                               
+//  dllHandle                   : THandle;
+  ProgressNote, MHPath                : string;
+begin
+  ProgressNote := '';
+  if (UsedMHDll.Checked = True) and (UsedMHDll.Display = False) then Exit
+  else if UsedMHDll.Checked = false then
+    begin
+      UsedMHDll.Display := UsedMHDllRPC;
+      UsedMHDll.Checked := True;
+      if UsedMHDll.Display = false then exit;
+    end;
+  MHPath := GetProgramFilesPath + SHARE_DIR + 'YS_MHA';
+  if MHDLLHandle = 0 then
+    MHDLLHandle := LoadLibrary(PChar(MHPath));
+  Result := '';
+  if MHDLLHandle = 0 then
+    begin
+      InfoBox('YS_MHA.dll not available.' + CRLF + 'CPRS will continue processing the MH test using the previous format.' +
+                  CRLF + CRLF + 'Contact IRM to install the YS_MHA.dll file on this machine.', 'Warning', MB_OK);
+      Exit;
+    end
+  else
+    begin
+      try
+        @ShowProc := GetProcAddress(MHDLLHandle, 'ShowInstrument');
+
+        if @ShowProc = nil then
+          begin
+          // function not found.. misspelled?
+            InfoBox('Function ShowInstrument not found within YS_MHA.DLL not available', 'Error', MB_OK);
+            Exit;
+          end;
+
+        if Assigned(ShowProc) then
+           begin
+//             MHDLLHandle := dllHandle;
+             Result := '';
+//             fFrame.frmFrame.DLLActive := True;
+             try
+               ShowProc(RPCBrokerV,
+               UpperCase(TestName), //InstrumentName
+               Patient.DFN, //PatientDFN
+               '', //OrderedByName
+               InttoStr(User.duz), //OrderedByDUZ
+               User.Name, //AdministeredByName
+               InttoStr(User.duz), //AdministeredByDUZ
+               Encounter.LocationName, //Location
+               InttoStr(Encounter.Location), //LocationIEN
+               Required,
+               ProgressNote);
+               Result := ProgressNote;
+           finally
+//             MHDllHandle := 0;
+//             fFrame.frmFrame.DLLActive := false;
+             if RPCBrokerV.CurrentContext <> 'OR CPRS GUI CHART' then
+               begin
+                 if RPCBrokerV.CreateContext('OR CPRS GUI CHART') = false then
+                    infoBox('Error switching broker context','Error', MB_OK);
+                end;
+               end; {inner try ..finally}
+            end;
+      finally
+        if MHDLLHandle <> 0 then
+        begin
+          FreeLibrary(MHDLLHandle);
+          MHDllHandle := 0;
+        end;
+      end; {try..finally}
+      //Result := ProgressNote;
+  end;
+end;
+
+function TfrmMHTest.CurrentQ: integer;
+var
+  i, j: integer;
+  ctrl: TWinControl;
+  MHQ: TMHQuestion;
+
+begin
+  Result := 0;
+  ctrl := ActiveControl;
+  if(not assigned(Ctrl)) then
+    exit;
+  for i := 0 to FObjs.Count-1 do
+  begin
+    MHQ := TMHQuestion(FObjs[i]);
+    for j := 0 to MHQ.FObjects.Count-1 do
+    begin
+      if(Ctrl = MHQ.FObjects[j]) then
+      begin
+        Result := i;
+        exit;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmMHTest.GotoQ(x: integer);
+begin
+  if(ModalResult <> mrNone) then exit;
+  if(x < 0) then x := 0;
+  if(x >= FYPos.Count) then
+  begin
+    btnOK.Default := TRUE;
+    btnOK.SetFocus;
+  end
+  else
+  begin
+    btnOK.Default := FALSE;
+    sbMain.VertScrollBar.Position := Integer(FYPos[x]) - 2;
+    TWinControl(FFirstCtrl[x]).SetFocus;
+  end;
+end;
+
+procedure TfrmMHTest.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_PRIOR then
+  begin
+    GotoQ(CurrentQ - 1);
+    Key := 0;
+  end
+  else
+  if (Key = VK_NEXT) or (Key = VK_RETURN) then
+  begin
+    GotoQ(CurrentQ + 1);
+    Key := 0;
+  end;
+end;
+
+{ TMHQuestion }
+
+procedure TMHQuestion.BuildControls(var Y: integer; Wide: integer);
+var
+  RCombo: TComboBox;
+  LNLbl, RLbl: TMentalHealthMemo;
+  Bvl: TBevel;
+  cb: TORCheckBox;
+  ans, idx, DX, MaxDX, MaxDY: integer;
+  Offset: integer;
+  txt: string;
+  QNum: integer;
+
+  function GetCtrl(SubTag: integer): TControl;
+  var
+    i: integer;
+
+  begin
+    Result := nil;
+    for i := 0 to FObjects.Count-1 do
+    begin
+      if(TControl(FObjects[i]).Tag = (FID + SubTag)) then
+      begin
+        Result := TControl(FObjects[i]);
+        break;
+      end;
+    end;
+  end;
+
+  procedure AdjDY(Ht: integer);
+  begin
+    if(MaxDY < Ht) then
+      MaxDY := Ht;
+  end;
+
+  procedure GetRLbl;
+  var
+    BoundsRect: TRect;
+  begin
+    if(FText <> '') then
+    begin
+      RLbl := TMentalHealthMemo(GetCtrl(QuestionLabelTag));
+      if(not assigned(RLbl)) then
+      begin
+        RLbl := TMentalHealthMemo.Create(frmMHTest);
+        RLbl.Color := clBtnFace;
+        RLbl.BorderStyle := bsNone;
+        RLbl.ReadOnly := TRUE;
+        RLbl.TabStop := ScreenReaderSystemActive;
+        RLbl.Parent := frmMHTest.sbMain;
+        RLbl.Tag := FID + QuestionLabelTag;
+        RLbl.WordWrap := TRUE;
+        RLbl.Text := FText;
+        FObjects.Add(RLbl);
+        UpdateColorsFor508Compliance(RLbl);
+      end;
+      BoundsRect.Top := Y;
+      BoundsRect.Left := Offset;
+      BoundsRect.Right := Wide;
+      WrappedTextHeightByFont(frmMHTest.Canvas, RLbl.Font, RLbl.Text, BoundsRect);
+      BoundsRect.Right := Wide;
+      RLbl.BoundsRect := BoundsRect;
+      ProcessMsg;
+    end
+    else
+      RLbl := nil;
+  end;
+
+begin
+  QNum := (FID div MaxQ)-1;
+  while(FFirstCtrl.Count <= QNum) do
+    FFirstCtrl.Add(nil);
+  while(FYPos.Count <= QNum) do
+    FYPos.Add(nil);
+  FYPos[QNum] := Pointer(Y);
+  ans := pos(FAnswer, FAllowedAnswers) - 1;
+  Offset := Gap;
+  if(not assigned(FObjects)) then
+    FObjects := TList.Create;
+  MaxDY := 0;
+  if(frmMHTest.FObjs.Count >= NumberThreshhold) then
+  begin
+    LNLbl := TMentalHealthMemo(GetCtrl(LineNumberTag));
+    if(not assigned(LNLbl)) then
+    begin
+      LNLbl := TMentalHealthMemo.Create(frmMHTest);
+      LNLbl.Color := clBtnFace;
+      LNLbl.BorderStyle := bsNone;
+      LNLbl.ReadOnly := TRUE;
+      LNLbl.TabStop := ScreenReaderSystemActive;
+      LNLbl.Parent := frmMHTest.sbMain;
+      LNLbl.Tag := FID + LineNumberTag;
+      LNLbl.Text := IntToStr(QNum+1) + '.';
+      if ScreenReaderSystemActive then
+        frmMHTest.amgrMain.AccessText[LNLbl] := 'Question';      
+      LNLbl.Width := TextWidthByFont(LNLbl.Font.Handle, LNLbl.Text);
+      LNLbl.Height := TextHeightByFont(LNLbl.Font.Handle, LNLbl.Text);
+      FObjects.Add(LNLbl);
+      UpdateColorsFor508Compliance(LNLbl);
+    end;
+    LNLbl.Top := Y;
+    LNLbl.Left := Offset;
+    inc(Offset, MainFontSize * 4);
+    AdjDY(LNLbl.Height);
+  end;
+
+  Bvl := TBevel(GetCtrl(BevelTag));
+  if(not assigned(Bvl)) then
+  begin
+    Bvl := TBevel.Create(frmMHTest);
+    Bvl.Parent := frmMHTest.sbMain;
+    Bvl.Tag := FID + BevelTag;
+    Bvl.Shape := bsFrame;
+    FObjects.Add(Bvl);
+    UpdateColorsFor508Compliance(Bvl);
+  end;
+  Bvl.Top := Y;
+  Bvl.Left := Offset;
+  Bvl.Width := Wide - Offset;
+  inc(Offset, Gap * 2);
+  inc(Y, Gap * 2);
+  dec(Wide, Offset + (Gap * 2));
+
+  GetRLbl;
+  if(assigned(RLbl)) then
+  begin
+    MaxDY := RLbl.Height;
+    inc(Y, MaxDY + Gap * 2);
+  end;
+
+  if(FSeeAnswers) then
+  begin
+    for idx := 0 to FAnswerCount-1 do
+    begin
+      cb := TORCheckBox(GetCtrl(CheckBoxTag + idx));
+      if(not assigned(cb)) then
+      begin
+        cb := TORCheckBox.Create(frmMHTest);
+        if(idx = 0) then
+          FFirstCtrl[QNum] := cb;
+        cb.Parent := frmMHTest.sbMain;
+        cb.Tag := FID + CheckBoxTag + idx;
+        cb.GroupIndex := FID;
+        cb.WordWrap := TRUE;
+        cb.AutoSize := TRUE;
+        if(idx = ans) then
+          cb.Checked := TRUE;
+        cb.OnClick := OnChange;
+        cb.Caption := Piece(frmMHTest.FAnswers[FAnswerIndex + idx], U, 2);
+        FObjects.Add(cb);
+        UpdateColorsFor508Compliance(cb);
+      end;
+      cb.Top := Y;
+      cb.Left := Offset;
+      cb.WordWrap := TRUE;
+      cb.Width := Wide;
+      cb.AutoAdjustSize;
+      cb.WordWrap := (not cb.SingleLine);
+      inc(Y, cb.Height + Gap);
+    end;
+  end
+  else
+  begin
+    RCombo := TComboBox(GetCtrl(ComboBoxTag));
+    if(not assigned(RCombo)) then
+    begin
+      RCombo := TComboBox.Create(frmMHTest);
+      FFirstCtrl[QNum] := RCombo;
+      RCombo.Parent := frmMHTest.sbMain;
+      RCombo.Tag := FID + ComboBoxTag;
+      FObjects.Add(RCombo);
+      MaxDX := 0;
+      for idx := 0 to FAnswerCount-1 do
+      begin
+        txt := Piece(frmMHTest.FAnswers[FAnswerIndex + idx], U, 2);
+        RCombo.Items.Add(txt);
+        DX := TextWidthByFont(frmMHTest.sbMain.Font.Handle, txt);
+        if(MaxDX < DX) then
+          MaxDX := DX;
+      end;
+      RCombo.ItemIndex := ans;
+      RCombo.Width := MaxDX + 24;
+      RCombo.OnChange := OnChange;
+      UpdateColorsFor508Compliance(RCombo);
+    end;
+    RCombo.Top := Y;
+    RCombo.Left := Offset;
+    inc(Y, RCombo.Height + (Gap * 2));
+  end;
+  Bvl.Height := Y - Bvl.Top;
+  inc(Y, QGap);
+end;
+
+constructor TMHQuestion.Create;
+begin
+  inherited;
+  FSeeAnswers := TRUE;
+  FAnswerText := '';
+  FText := '';
+  FAllowedAnswers := '';
+  FAnswerIndex := frmMHTest.FAnswers.Count;
+  FAnswerCount := 0;
+  inc(frmMHTest.FIDCount, MaxQ);
+  FID := frmMHTest.FIDCount;
+  FAnswer := Skipped;
+end;
+
+destructor TMHQuestion.Destroy;
+begin
+  KillObj(@FObjects, TRUE);
+  inherited;
+end;
+
+procedure TMHQuestion.OnChange(Sender: TObject);
+var
+  idx: integer;
+  cb: TCheckBox;
+  cbo: TComboBox;
+
+begin
+  if(Sender is TCheckBox) then
+  begin
+    cb := TCheckBox(Sender);
+    if(cb.Checked) then
+    begin
+      idx := cb.Tag - CheckBoxTag + 1;
+      idx := idx mod MaxQ;
+      FAnswer := copy(FAllowedAnswers, idx, 1);
+    end
+    else
+      FAnswer := Skipped;
+  end
+  else
+  if(Sender is TComboBox) then
+  begin
+    cbo := TComboBox(Sender);
+    idx := cbo.ItemIndex + 1;
+    if(idx = 0) or (cbo.Text = '') then
+      FAnswer := Skipped
+    else
+      FAnswer := copy(FAllowedAnswers, idx, 1);
+  end;
+end;
+
+procedure TfrmMHTest.FormShow(Sender: TObject);
+begin
+  if(not FBuilt) then
+  begin
+    Screen.Cursor := crHourGlass;
+    try
+      BuildControls;
+      FBuilt := TRUE;
+    finally
+      Screen.Cursor := crDefault;
+    end;
+  end;
+end;
+
+procedure TfrmMHTest.sbMainResize(Sender: TObject);
+begin
+  if(FBuilt) then
+    BuildControls;
+end;
+
+function TMHQuestion.Question: string;
+var
+  idx: integer;
+  echar: string;
+
+begin
+  Result := trim(FText);
+  echar := copy(Result, length(Result), 1);
+  if(echar <> ':') and (echar <> '?') then
+  begin
+    if(echar = '.') then
+      delete(Result, length(result), 1);
+    Result := Result + ':';
+  end;
+  if(FAnswer = Skipped) then
+    Result := Result + ' Not rated'
+  else
+  begin
+    idx := pos(FAnswer, FAllowedAnswers) + FAnswerIndex - 1;
+    if(idx >= 0) and (idx < frmMHTest.FAnswers.Count) then
+      Result := Result + ' ' + Piece(frmMHTest.FAnswers[idx],U,2);
+  end;
+end;
+
+procedure TfrmMHTest.btnOKClick(Sender: TObject);
+var
+  i, XCnt, First: integer;
+  msg, ans, TestStatus: string;
+
+begin
+  msg := '';
+  ans := '';
+  XCnt := 0;
+  First := -1;
+  TestStatus := '2';
+  MHTestComp := '2';
+  for i := 0 to FObjs.Count-1 do
+  begin
+    ans := ans + TMHQuestion(Fobjs[i]).FAnswer;
+    if(TMHQuestion(FObjs[i]).FAnswer = Skipped) then
+    begin
+      if(First < 0) then First := i;
+      inc(XCnt);
+      if(msg <> '') then
+        msg := msg + ', ';
+      msg := msg + IntToStr(i+1);
+    end;
+  end;
+  if(XCnt = FObjs.Count) then ModalResult := mrOK;
+  TestStatus := VerifyMentalHealthTestComplete(Self.Caption, ans);
+  if Piece(TestStatus,U,1) <> '2' then
+    begin
+      if Piece(TestStatus,U,1)='1' then
+        begin
+          ModalResult := mrOK;
+          MHTestComp := '1';
+          EXIT;
+        end;
+      if Piece(TestStatus,U,1)='0' then
+        begin
+          MHTestComp := '0';
+          msg := Piece(TestStatus,u,2);
+          msg := 'The following questions have not been answered:' + CRLF + CRLF + '    ' + msg;
+          if(InfoBox(msg + CRLF + CRLF + 'Answer skipped questions?', 'Skipped Questions',
+           MB_YESNO or MB_ICONQUESTION) = IDYES) then GotoQ(First)
+          else
+            ModalResult := mrOK;
+            EXIT;
+        end;
+    end;
+  if(XCnt = 0) then
+    ModalResult := mrOK
+  else
+  begin
+    if(XCnt = FObjs.Count) then
+      ModalResult := mrOK
+    else
+    begin
+      msg := 'The following questions have not been answered:' + CRLF + CRLF + '    ' + msg;
+      if(InfoBox(msg + CRLF + CRLF + 'Answer skipped questions?', 'Skipped Questions',
+         MB_YESNO or MB_ICONQUESTION) = IDYES) then
+        GotoQ(First)
+      else
+        ModalResult := mrOK;
+    end;
+  end;
+end;
+
+procedure TfrmMHTest.btnClearClick(Sender: TObject);
+var
+  i: integer;
+
+begin
+  for i := 0 to sbMain.ControlCount-1 do
+  begin
+    if(sbMain.Controls[i] is TCheckBox) then
+      TCheckBox(sbMain.Controls[i]).Checked := FALSE
+    else
+    if(sbMain.Controls[i] is TComboBox) then
+    begin
+      with TComboBox(sbMain.Controls[i]) do
+      begin
+        ItemIndex := -1;
+        OnChange(sbMain.Controls[i]);
+      end;
+    end; 
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMedCopy.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMedCopy.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMedCopy.dfm	(revision 1676)
@@ -0,0 +1,264 @@
+inherited frmMedCopy: TfrmMedCopy
+  Left = 157
+  Top = 62
+  Caption = 'Copy Medication Orders'
+  ClientHeight = 401
+  ClientWidth = 485
+  Constraints.MinHeight = 150
+  Constraints.MinWidth = 240
+  OldCreateOrder = True
+  OnCreate = FormCreate
+  ExplicitWidth = 493
+  ExplicitHeight = 428
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 485
+    Height = 80
+    Align = alTop
+    AutoSize = True
+    TabOrder = 0
+    object lblPtInfo: TVA508StaticText
+      Name = 'lblPtInfo'
+      Left = 1
+      Top = 1
+      Width = 464
+      Height = 40
+      Alignment = taLeftJustify
+      AutoSize = True
+      Constraints.MinHeight = 40
+      TabOrder = 1
+      ShowAccelChar = True
+    end
+    object pnlInpatient: TPanel
+      Left = 1
+      Top = 46
+      Width = 483
+      Height = 33
+      Align = alBottom
+      AutoSize = True
+      TabOrder = 0
+      object Image1: TImage
+        Left = 1
+        Top = 1
+        Width = 24
+        Height = 31
+        Align = alLeft
+        AutoSize = True
+        Enabled = False
+        Picture.Data = {
+          07544269746D61707E010000424D7E0100000000000076000000280000001800
+          000016000000010004000000000008010000C40E0000C40E0000100000000000
+          0000000000000000800000800000008080008000000080008000808000008080
+          8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+          FF008000000000000000000000080777777777777777777777700F7777777777
+          7777777777700F88888888888888888887700F88888888888888888887700F88
+          888808888888888887700F88888800888888888887700F8888880B0888888888
+          87700F8888880BB00008888887700F888800BBCCBBB0088887700F8880BBBCCC
+          CBBBB08887700F880BBBBBBBBBBBBB0887700F880BBBBBCCBBBBBB0887700F88
+          0BBBBBCCBBBBBB0887700F880BBBBBCCBBBBBB0887700F8880BBBBCCBBBBB088
+          87700F888800BBBBBBB0088887700F88888800000008888887700F8888888888
+          8888888887700F88888888888888888887700FFFFFFFFFFFFFFFFFFFFF708000
+          00000000000000000008}
+        Transparent = True
+      end
+      object lblInstruction: TStaticText
+        Left = 30
+        Top = 1
+        Width = 337
+        Height = 17
+        Caption = 
+          '  Use Admit: if patient is newly admitted to the hospital or nur' +
+          'sing home.'
+        TabOrder = 0
+      end
+      object lblInstruction2: TStaticText
+        Left = 30
+        Top = 15
+        Width = 371
+        Height = 17
+        Caption = 
+          '  Use Transfer: if inpatient will move from one ward or treating' +
+          ' team to another.'
+        TabOrder = 1
+      end
+    end
+  end
+  object pnlMiddle: TPanel [1]
+    Left = 0
+    Top = 80
+    Width = 485
+    Height = 65
+    Align = alTop
+    TabOrder = 1
+    object gboxMain: TGroupBox
+      Left = 1
+      Top = 1
+      Width = 483
+      Height = 63
+      Align = alClient
+      TabOrder = 0
+      object radDelayed: TRadioButton
+        Left = 20
+        Top = 37
+        Width = 321
+        Height = 17
+        Caption = '&Delay release of copied orders until'
+        TabOrder = 1
+        OnClick = radDelayedClick
+      end
+      object radRelease: TRadioButton
+        Left = 20
+        Top = 16
+        Width = 319
+        Height = 17
+        Caption = '&Release copied orders immediately'
+        Checked = True
+        TabOrder = 0
+        TabStop = True
+        OnClick = radReleaseClick
+      end
+      object cmdOK: TButton
+        Left = 365
+        Top = 14
+        Width = 72
+        Height = 19
+        Caption = 'OK'
+        Constraints.MaxWidth = 73
+        Default = True
+        TabOrder = 2
+        OnClick = cmdOKClick
+      end
+      object cmdCancel: TButton
+        Left = 365
+        Top = 38
+        Width = 72
+        Height = 19
+        Cancel = True
+        Caption = 'Cancel'
+        Constraints.MaxWidth = 73
+        TabOrder = 3
+        OnClick = cmdCancelClick
+      end
+    end
+  end
+  object pnlBottom: TPanel [2]
+    Left = 0
+    Top = 145
+    Width = 485
+    Height = 256
+    Align = alClient
+    TabOrder = 2
+    inline fraEvntDelayList: TfraEvntDelayList
+      Left = 1
+      Top = 1
+      Width = 483
+      Height = 254
+      Align = alBottom
+      AutoScroll = True
+      TabOrder = 0
+      TabStop = True
+      Visible = False
+      ExplicitLeft = 1
+      ExplicitTop = 1
+      ExplicitWidth = 483
+      ExplicitHeight = 254
+      inherited pnlDate: TPanel
+        Left = 378
+        Height = 254
+        ExplicitLeft = 378
+        ExplicitHeight = 254
+        inherited lblEffective: TLabel
+          Left = 446
+          Width = 71
+          ExplicitLeft = 446
+          ExplicitWidth = 71
+        end
+        inherited orDateBox: TORDateBox
+          Left = 446
+          ExplicitLeft = 446
+        end
+      end
+      inherited pnlList: TPanel
+        Width = 378
+        Height = 254
+        ExplicitWidth = 378
+        ExplicitHeight = 254
+        inherited lblEvntDelayList: TLabel
+          Width = 376
+          ExplicitWidth = 80
+        end
+        inherited mlstEvents: TORListBox
+          Width = 376
+          Height = 218
+          OnDblClick = cmdOKClick
+          ExplicitWidth = 376
+          ExplicitHeight = 218
+        end
+        inherited edtSearch: TCaptionEdit
+          Width = 376
+          ExplicitWidth = 376
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = pnlInpatient'
+        'Status = stsDefault')
+      (
+        'Component = lblInstruction'
+        'Status = stsDefault')
+      (
+        'Component = lblInstruction2'
+        'Status = stsDefault')
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = gboxMain'
+        'Status = stsDefault')
+      (
+        'Component = radDelayed'
+        'Status = stsDefault')
+      (
+        'Component = radRelease'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.pnlDate'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.orDateBox'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.pnlList'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.mlstEvents'
+        'Status = stsDefault')
+      (
+        'Component = fraEvntDelayList.edtSearch'
+        'Status = stsDefault')
+      (
+        'Component = frmMedCopy'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMedCopy.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMedCopy.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMedCopy.pas	(revision 1676)
@@ -0,0 +1,351 @@
+unit fMedCopy;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORDtTm, ORCtrls, ORFn, rOrders, uCore, rCore, mEvntDelay, fAutoSz,
+  ExtCtrls, UConst, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmMedCopy = class(TfrmBase508Form)
+    pnlTop: TPanel;
+    lblPtInfo: TVA508StaticText;
+    pnlInpatient: TPanel;
+    lblInstruction: TStaticText;
+    Image1: TImage;
+    lblInstruction2: TStaticText;
+    pnlMiddle: TPanel;
+    gboxMain: TGroupBox;
+    radDelayed: TRadioButton;
+    radRelease: TRadioButton;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pnlBottom: TPanel;
+    fraEvntDelayList: TfraEvntDelayList;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);                         
+    procedure FormCreate(Sender: TObject);
+    procedure radDelayedClick(Sender: TObject);
+    procedure radReleaseClick(Sender: TObject);
+    procedure fraEvntDelayListcboEvntListChange(Sender: TObject);
+    procedure UMStillDelay(var message: TMessage); message UM_STILLDELAY;
+    procedure fraEvntDelayListmlstEventsDblClick(Sender: TObject);
+    procedure fraEvntDelayListmlstEventsChange(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+
+  private
+    FDelayEvent: TOrderDelayEvent;
+    FOKPressed: Boolean;
+    procedure AdjustFormSize;
+  public
+    { Public declarations }
+  end;
+
+function SetDelayEventForMed(const RadCap: string; var ADelayEvent: TOrderDelayEvent;
+          var IsNewEvent: Boolean; LimitEvent: Char): Boolean;
+var
+   frmMedCopy: TfrmMedCopy;
+
+implementation
+{$R *.DFM}
+
+uses  fODBase, fOrdersTS, fOrders, VAUtils;
+
+const
+  TX_SEL_DATE = 'An effective date (approximate) must be selected for discharge orders.';
+  TC_SEL_DATE = 'Missing Effective Date';
+
+function SetDelayEventForMed(const RadCap: string; var ADelayEvent: TOrderDelayEvent;
+          var IsNewEvent: Boolean; LimitEvent: Char): Boolean;
+const
+  TX_RELEASE1  = 'Release ';
+  TX_RELEASE2  = ' orders immediately';
+  TX_DELAYED1  = 'Delay release of ';
+  TX_DELAYED2  = ' orders until';
+var
+  EvtInfo,PtEvtID,AnEvtDlg: string;
+  SpeCap, CurrTS: string;
+
+  procedure Highlight(APtEvtID: string);
+  var
+    j: integer;
+  begin
+    frmOrders.InitOrderSheetsForEvtDelay;
+    for j := 0 to frmOrders.lstSheets.Items.Count - 1 do
+    begin
+      if Piece(frmOrders.lstSheets.Items[j],'^',1)=APtEvtID then
+      begin
+        frmOrders.lstSheets.ItemIndex := j;
+        break;
+      end;
+    end;
+  end;
+
+  function DisplayEvntDialog(AEvtDlg: String; AnEvent: TOrderDelayEvent): boolean;
+  var
+    DlgData: string;
+  begin
+    DlgData := GetDlgData(AEvtDlg);
+    frmOrders.NeedShowModal := True;
+    frmOrders.IsDefaultDlg := True;
+    Result := frmOrders.PlaceOrderForDefaultDialog(DlgData, True, AnEvent);
+    frmOrders.IsDefaultDlg := False;
+    frmOrders.NeedShowModal := False;
+  end;
+
+begin
+  if LimitEvent = 'C' then
+  begin
+    Result := True;
+    ADelayEvent.EventType := 'C';
+    ADelayEvent.Specialty := 0;
+    ADelayEvent.Effective := 0;
+    Exit;
+  end;
+  Result := False;
+  frmMedCopy := TfrmMedCopy.Create(Application);
+  try
+    if (LimitEvent = 'A') and (not Patient.Inpatient) then
+    begin
+      frmMedCopy.radDelayed.Checked := True;
+      frmMedCopy.radRelease.Enabled := False;
+    end;
+    ResizeAnchoredFormToFont(frmMedCopy);
+    frmMedCopy.AdjustFormSize;
+    CurrTS := Piece(GetCurrentSpec(Patient.DFN),'^',1);
+    if Length(CurrTS)>0 then
+      SpeCap := #13 + '  The current treating specialty is ' + CurrTS
+    else
+      SpeCap := #13 + '  No treating specialty is available.';
+    if Patient.Inpatient then
+      frmMedCopy.lblPtInfo.Caption := '   ' + Patient.Name + ' is currently admitted to ' + Encounter.LocationName + SpeCap
+    else
+    begin
+      if (Encounter.Location > 0) then
+        frmMedCopy.lblPtInfo.Caption := Patient.Name + ' is currently at ' + Encounter.LocationName + SpeCap
+      else
+        frmMedCopy.lblPtInfo.Caption := Patient.Name + ' currently is an outpatient.' + SpeCap;
+    end;
+    frmMedCopy.AdjustFormSize;
+    frmMedCopy.fraEvntDelayList.EvntLimit := LimitEvent;
+    if Pos('transfer',RadCap)>0 then
+      frmMedCopy.Caption := 'Transfer Medication Orders';
+    frmMedCopy.radRelease.Caption := TX_RELEASE1 + RadCap + TX_RELEASE2;
+    frmMedCopy.radDelayed.Caption := TX_DELAYED1 + RadCap + TX_DELAYED2;
+    if LimitEvent='D' then
+    begin
+      frmMedCopy.pnlInpatient.Visible := False;
+      frmMedCopy.AdjustFormSize;
+    end;
+    frmMedCopy.ShowModal;
+    if (frmMedCopy.FOKPressed) and (frmMedCopy.radRelease.Checked) then
+    begin
+      if (frmMedCopy.radRelease.Checked) and (LimitEvent = 'D') then
+        XfInToOutNow := True
+      else XfInToOutNow := False;
+      ADelayEvent := frmMedCopy.FDelayEvent;
+      Result := True;
+    end
+    else if (frmMedCopy.FOKPressed) and (frmMedCopy.radDelayed.Checked) then
+    begin
+      EvtInfo := frmMedCopy.fraEvntDelayList.mlstEvents.Items[frmMedCopy.fraEvntDelayList.mlstEvents.ItemIndex];
+      ADelayEvent.EventType := CharAt(Piece(EvtInfo,'^',3),1);
+      ADelayEvent.EventIFN  := StrToInt64Def(Piece(EvtInfo,'^',1),0);
+      if StrToInt64Def(Piece(EvtInfo,'^',13),0) > 0 then
+      begin
+        ADelayEvent.TheParent.Assign(Piece(EvtInfo,'^',13));
+        ADelayEvent.EventType := ADelayEvent.TheParent.ParentType;
+      end;
+      ADelayEvent.EventName := frmMedCopy.fraEvntDelayList.mlstEvents.DisplayText[frmMedCopy.fraEvntDelayList.mlstEvents.ItemIndex];
+      ADelayEvent.Specialty := 0;
+      if frmMedCopy.fraEvntDelayList.orDateBox.Visible then
+        ADelayEvent.Effective := frmMedCopy.fraEvntDelayList.orDateBox.FMDateTime
+      else
+        ADelayEvent.Effective := 0;
+      IsNewEvent := False;
+      if TypeOfExistedEvent(Patient.DFN,ADelayEvent.EventIFN) = 0 then
+      begin
+         IsNewEvent := True;
+         if ADelayEvent.TheParent.ParentIFN > 0 then
+         begin
+           if StrToIntDef(ADelayEvent.TheParent.ParentDlg,0)>0 then
+             AnEvtDlg := ADelayEvent.TheParent.ParentDlg;
+         end
+         else
+           AnEvtDlg := Piece(EvtInfo,'^',5);
+      end;
+      if (StrToIntDef(AnEvtDlg,0)>0) and (IsNewEvent) then
+         if not DisplayEvntDialog(AnEvtDlg, ADelayEvent) then
+         begin
+           frmOrders.lstSheets.ItemIndex := 0;
+           frmOrders.lstSheetsClick(nil);
+           Result := False;
+           Exit;
+         end;
+      if not isExistedEvent(Patient.DFN, IntToStr(ADelayEvent.EventIFN), PtEvtID) then
+      begin
+        IsNewEvent := True;
+        if (ADelayEvent.TheParent.ParentIFN > 0) and (TypeOfExistedEvent(Patient.DFN,ADelayEvent.EventIFN) = 0 ) then
+          SaveEvtForOrder(Patient.DFN,ADelayEvent.TheParent.ParentIFN,'');
+        SaveEvtForOrder(Patient.DFN,ADelayEvent.EventIFN,'');
+        if isExistedEvent(Patient.DFN, IntToStr(ADelayEvent.EventIFN),PtEvtID) then
+        begin
+          Highlight(PtEvtID);
+          ADelayEvent.IsNewEvent := False;
+          ADelayEvent.PtEventIFN := StrToIntDef(PtEvtID,0);
+        end;
+      end else
+      begin
+        Highlight(PtEvtID);
+        ADelayEvent.PtEventIFN := StrToIntDef(PtEvtID,0);
+        ADelayEvent.IsNewEvent := False;
+      end;
+
+      if frmOrders.lstSheets.ItemIndex > -1 then
+      begin
+        frmOrders.AskForCancel := False;
+        frmOrders.lstSheetsClick(nil);
+        frmOrders.AskForCancel := True;
+      end;
+      Result := True;
+    end;
+  finally
+    frmMedCopy.fraEvntDelayList.ResetProperty;
+    frmMedCopy.Release;
+  end;
+end;
+
+procedure TfrmMedCopy.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FOKPressed            := False;
+  FDelayEvent.EventType := #0;
+  FDelayEvent.EventIFN  := 0;
+  radRelease.Checked := True;
+  if not Patient.Inpatient then
+    pnlInpatient.Visible := False;
+  AdjustFormSize;
+end;
+
+procedure TfrmMedCopy.cmdOKClick(Sender: TObject);
+var
+  today : TFMDateTime;
+begin
+  inherited;
+  today := FMToday;
+  if (radDelayed.Checked) and (fraEvntDelayList.mlstEvents.ItemIndex < 0) then
+  begin
+    InfoBox('A release event must be selected.', 'No Selection Made', MB_OK);
+    Exit;
+  end;
+  if (radRelease.Checked) and (Pos('copied',radRelease.Caption)>0)  then
+  begin
+    ImmdCopyAct := True;
+    FDelayEvent.EventType := 'C';
+    FDelayEvent.Specialty := 0;
+    FDelayEvent.Effective := 0;
+  end
+  else if (radRelease.Checked) and (Pos('transfer',radRelease.Caption)>0) then
+  begin
+    FDelayEvent.EventType := 'D';
+    FDelayEvent.Specialty := 0;
+    FDelayEvent.Effective := today;
+  end;
+  FOKPressed := True;
+  Close;
+end;
+
+procedure TfrmMedCopy.AdjustFormSize;
+var
+  y: integer;
+begin
+  y := lblPtInfo.Height + 8; // allow for font changes
+  if pnlInpatient.Visible then
+  begin
+    lblInstruction2.top := lblInstruction.Height; // allow for font change
+    pnlInpatient.Height := lblInstruction2.top + lblInstruction2.Height;
+    inc(y,pnlInpatient.Height);
+  end;
+  pnlTop.Height := y;
+  inc(y, pnlMiddle.Height);
+  if fraEvntDelayList.Visible then
+  begin
+    inc(y, fraEvntDelayList.Height);
+  end;
+  VertScrollBar.Range := y;
+  ClientHeight := y;
+end;
+
+procedure TfrmMedCopy.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmMedCopy.radDelayedClick(Sender: TObject);
+const
+  WarningMSG = 'If you''re writing medication orders to transfer these from Inpatient' +
+    ' to Outpatient, please use the ''release immediately'' choice.  These will be' +
+    ' readied in advance by Pharmacy for the patient''s expected discharge date.';
+begin
+  inherited;
+  frmMedCopy.fraEvntDelayList.UserDefaultEvent := StrToIntDef(GetDefaultEvt(IntToStr(User.DUZ)),0);
+  fraEvntDelayList.DisplayEvntDelayList;
+  if fraEvntDelayList.mlstEvents.Items.Count < 1 then
+  begin
+    ShowMsg(WarningMSG);
+    radRelease.Checked := True;
+  end else
+  begin
+    fraEvntDelayList.Visible := True;
+  end;
+  AdjustFormSize;
+end;
+
+procedure TfrmMedCopy.radReleaseClick(Sender: TObject);
+begin
+  inherited;
+  fraEvntDelayList.Visible := False;
+  AdjustFormSize;
+end;
+
+procedure TfrmMedCopy.fraEvntDelayListcboEvntListChange(Sender: TObject);
+begin
+  inherited;
+  fraEvntDelayList.mlstEventsChange(Sender);
+  if fraEvntDelayList.MatchedCancel then Close
+end;
+
+procedure TfrmMedCopy.UMStillDelay(var message: TMessage);
+begin
+  CmdOKClick(Application);
+end;
+
+procedure TfrmMedCopy.fraEvntDelayListmlstEventsDblClick(Sender: TObject);
+begin
+  if fraEvntDelayList.mlstEvents.ItemID > 0 then
+    cmdOKClick(Self);
+end;
+
+procedure TfrmMedCopy.fraEvntDelayListmlstEventsChange(Sender: TObject);
+begin
+  fraEvntDelayList.mlstEventsChange(Sender);
+  if fraEvntDelayList.MatchedCancel then
+  begin
+    FOKPressed := False;
+    Close;
+    Exit;
+  end;
+end;
+
+procedure TfrmMedCopy.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_RETURN then
+    cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMeds.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMeds.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMeds.dfm	(revision 1676)
@@ -0,0 +1,625 @@
+inherited frmMeds: TfrmMeds
+  Left = 333
+  Top = 55
+  HelpContext = 3000
+  VertScrollBar.Visible = False
+  Caption = 'Medications Page'
+  ClientHeight = 651
+  ClientWidth = 701
+  HelpFile = 'qnoback'
+  Menu = mnuMeds
+  Visible = True
+  OnDestroy = FormDestroy
+  OnMouseUp = FormMouseUp
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitWidth = 709
+  ExplicitHeight = 697
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 524
+    Width = 1028
+    Height = -4
+    Align = alCustom
+    ExplicitTop = 524
+    ExplicitWidth = 1028
+    ExplicitHeight = -4
+  end
+  object splitTop: TSplitter [1]
+    Left = 0
+    Top = 440
+    Width = 701
+    Height = 4
+    Cursor = crVSplit
+    Align = alBottom
+    AutoSnap = False
+    Color = clBtnFace
+    Constraints.MaxHeight = 4
+    Constraints.MinHeight = 4
+    MinSize = 100
+    ParentColor = False
+    OnMoved = splitTopMoved
+    ExplicitTop = 429
+  end
+  object pnlBottom: TORAutoPanel [2]
+    Left = 0
+    Top = 444
+    Width = 701
+    Height = 207
+    Align = alBottom
+    Constraints.MinHeight = 40
+    Ctl3D = False
+    ParentCtl3D = False
+    TabOrder = 2
+    object splitBottom: TSplitter
+      Left = 1
+      Top = 102
+      Width = 699
+      Height = 4
+      Cursor = crVSplit
+      Align = alBottom
+      AutoSnap = False
+      Color = clBtnFace
+      Constraints.MaxHeight = 4
+      Constraints.MinHeight = 4
+      MinSize = 100
+      ParentColor = False
+      OnMoved = splitBottomMoved
+    end
+    object pnlMedIn: TPanel
+      Left = 1
+      Top = 106
+      Width = 699
+      Height = 100
+      Align = alBottom
+      Constraints.MinHeight = 100
+      TabOrder = 0
+      object lstMedsIn: TCaptionListBox
+        Tag = 2
+        Left = 1
+        Top = 17
+        Width = 697
+        Height = 82
+        Style = lbOwnerDrawVariable
+        Align = alClient
+        Color = clCream
+        Constraints.MinHeight = 65
+        Ctl3D = False
+        ItemHeight = 13
+        MultiSelect = True
+        ParentCtl3D = False
+        PopupMenu = popMed
+        TabOrder = 0
+        OnClick = lstMedsInClick
+        OnDblClick = lstMedsDblClick
+        OnDrawItem = lstMedsDrawItem
+        OnExit = lstMedsExit
+        OnMeasureItem = lstMedsMeasureItem
+        Caption = 'Inpatient Medications'
+      end
+      object hdrMedsIn: THeaderControl
+        Left = 1
+        Top = 1
+        Width = 697
+        Height = 16
+        BiDiMode = bdLeftToRight
+        Constraints.MinHeight = 16
+        Sections = <
+          item
+            ImageIndex = -1
+            MinWidth = 42
+            Text = 'Action'
+            Width = 42
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 20
+            Text = 'Inpatient Medications'
+            Width = 100
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 16
+            Text = 'Stop Date'
+            Width = 62
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 16
+            Text = 'Status'
+            Width = 62
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 16
+            Text = 'Location'
+            Width = 20
+          end>
+        OnSectionClick = hdrMedsInSectionClick
+        OnSectionResize = hdrMedsInSectionResize
+        ParentBiDiMode = False
+        OnMouseDown = hdrMedsInMouseDown
+        OnMouseUp = hdrMedsInMouseUp
+        OnResize = hdrMedsInResize
+      end
+    end
+    object pnlNonVA: TPanel
+      Left = 1
+      Top = 1
+      Width = 699
+      Height = 101
+      Align = alClient
+      Caption = 'pnlNonVA'
+      Constraints.MinHeight = 40
+      TabOrder = 1
+      object lstMedsNonVA: TCaptionListBox
+        Tag = 3
+        Left = 1
+        Top = 17
+        Width = 697
+        Height = 83
+        Style = lbOwnerDrawVariable
+        Align = alClient
+        Color = clCream
+        Constraints.MinHeight = 40
+        Ctl3D = False
+        ItemHeight = 13
+        MultiSelect = True
+        ParentCtl3D = False
+        PopupMenu = popMed
+        TabOrder = 0
+        OnClick = lstMedsNonVAClick
+        OnDblClick = lstMedsDblClick
+        OnDrawItem = lstMedsDrawItem
+        OnExit = lstMedsExit
+        OnMeasureItem = lstMedsMeasureItem
+        Caption = 'Inpatient Medications'
+      end
+      object hdrMedsNonVA: THeaderControl
+        Left = 1
+        Top = 1
+        Width = 697
+        Height = 16
+        BiDiMode = bdLeftToRight
+        Constraints.MinHeight = 16
+        Sections = <
+          item
+            ImageIndex = -1
+            MinWidth = 42
+            Text = 'Action'
+            Width = 42
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 20
+            Text = 'Non-VA Medications'
+            Width = 100
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 16
+            Text = 'Start Date'
+            Width = 62
+          end
+          item
+            ImageIndex = -1
+            MinWidth = 16
+            Text = 'Status'
+            Width = 62
+          end>
+        OnSectionClick = hdrMedsNonVASectionClick
+        OnSectionResize = hdrMedsNonVASectionResize
+        ParentBiDiMode = False
+        OnMouseDown = hdrMedsNonVAMouseDown
+        OnMouseUp = hdrMedsNonVAMouseUp
+        OnResize = hdrMedsNonVAResize
+      end
+    end
+  end
+  object pnlTop: TORAutoPanel [3]
+    Left = 0
+    Top = 22
+    Width = 701
+    Height = 418
+    Align = alClient
+    Ctl3D = True
+    ParentCtl3D = False
+    TabOrder = 1
+    object lstMedsOut: TCaptionListBox
+      Tag = 1
+      Left = 1
+      Top = 17
+      Width = 699
+      Height = 400
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      Color = clCream
+      Constraints.MinHeight = 40
+      Ctl3D = False
+      ItemHeight = 13
+      MultiSelect = True
+      ParentCtl3D = False
+      PopupMenu = popMed
+      TabOrder = 0
+      OnClick = lstMedsOutClick
+      OnDblClick = lstMedsDblClick
+      OnDrawItem = lstMedsDrawItem
+      OnExit = lstMedsExit
+      OnMeasureItem = lstMedsMeasureItem
+      Caption = 'Outpatient Medications'
+    end
+    object hdrMedsOut: THeaderControl
+      Left = 1
+      Top = 1
+      Width = 699
+      Height = 16
+      BiDiMode = bdLeftToRight
+      Constraints.MinHeight = 16
+      Sections = <
+        item
+          ImageIndex = -1
+          MinWidth = 42
+          Text = 'Action'
+          Width = 42
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 20
+          Text = 'Outpatient Medications'
+          Width = 100
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Expires'
+          Width = 62
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Status'
+          Width = 62
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Last Filled'
+          Width = 62
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Refills Remaining'
+          Width = 78
+        end>
+      OnSectionClick = hdrMedsOutSectionClick
+      OnSectionResize = hdrMedsOutSectionResize
+      ParentBiDiMode = False
+      OnMouseDown = hdrMedsOutMouseDown
+      OnMouseUp = hdrMedsOutMouseUp
+      OnResize = hdrMedsOutResize
+    end
+  end
+  object pnlView: TPanel [4]
+    Left = 0
+    Top = 0
+    Width = 701
+    Height = 22
+    Align = alTop
+    TabOrder = 0
+    object txtView: TVA508StaticText
+      Name = 'txtView'
+      Left = 9
+      Top = 3
+      Width = 36
+      Height = 15
+      Alignment = taLeftJustify
+      Caption = 'txtView'
+      TabOrder = 0
+      ShowAccelChar = True
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 16
+    Top = 152
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlMedIn'
+        'Status = stsDefault')
+      (
+        'Component = lstMedsIn'
+        'Status = stsDefault')
+      (
+        'Component = hdrMedsIn'
+        'Status = stsDefault')
+      (
+        'Component = pnlNonVA'
+        'Status = stsDefault')
+      (
+        'Component = lstMedsNonVA'
+        'Status = stsDefault')
+      (
+        'Component = hdrMedsNonVA'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lstMedsOut'
+        'Status = stsDefault')
+      (
+        'Component = hdrMedsOut'
+        'Status = stsDefault')
+      (
+        'Component = frmMeds'
+        'Status = stsDefault')
+      (
+        'Component = pnlView'
+        'Status = stsDefault')
+      (
+        'Component = txtView'
+        'Status = stsDefault'))
+  end
+  object mnuMeds: TMainMenu
+    Left = 56
+    Top = 154
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      OnClick = mnuViewClick
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z2: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewActive: TMenuItem
+        Caption = '&Active Medications'
+        Visible = False
+      end
+      object mnuViewExpiring: TMenuItem
+        Caption = '&Expiring Medications'
+        Visible = False
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+        Visible = False
+      end
+      object mnuViewSortClass: TMenuItem
+        Caption = 'Sort by &VA Drug Class'
+        Visible = False
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+        Visible = False
+      end
+      object mnuViewDetail: TMenuItem
+        Caption = '&Details...'
+        OnClick = mnuViewDetailClick
+      end
+      object mnuViewSortName: TMenuItem
+        Caption = 'Sort by Drug &Name'
+        Visible = False
+      end
+      object mnuViewHistory: TMenuItem
+        Caption = 'Administration &History...'
+        OnClick = mnuViewHistoryClick
+      end
+      object N3: TMenuItem
+        Caption = '-'
+      end
+      object SortbyStatusthenLocation1: TMenuItem
+        Caption = 'Sort by Status/Exp. Date (IMO first on Inpt)'
+        OnClick = SortbyStatusthenLocation1Click
+      end
+      object SortbyClinicOrderthenStatusthenStopDate1: TMenuItem
+        Caption = 'Sort by Status Group/Status/Location/Drug Name'
+        OnClick = SortbyClinicOrderthenStatusthenStopDate1Click
+      end
+      object SortbyDrugalphabeticallystatusactivestatusrecentexpired1: TMenuItem
+        Caption = 
+          'Sort by Drug (alphabetically), status active, status recent expi' +
+          'red'
+        OnClick = SortbyDrugalphabeticallystatusactivestatusrecentexpired1Click
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      OnClick = mnuActClick
+      object mnuActNew: TMenuItem
+        Caption = '&New Medication...'
+        OnClick = mnuActNewClick
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+      end
+      object mnuActChange: TMenuItem
+        Caption = '&Change...'
+        OnClick = mnuActChangeClick
+      end
+      object mnuActDC: TMenuItem
+        Caption = '&Discontinue / Cancel...'
+        OnClick = mnuActDCClick
+      end
+      object mnuActHold: TMenuItem
+        Caption = '&Hold...'
+        OnClick = mnuActHoldClick
+      end
+      object mnuActRenew: TMenuItem
+        Caption = 'Rene&w...'
+        OnClick = mnuActRenewClick
+      end
+      object mnuActCopy: TMenuItem
+        Caption = 'Co&py to New Order...'
+        OnClick = mnuActCopyClick
+      end
+      object mnuActTransfer: TMenuItem
+        Caption = '&Transfer to...'
+        OnClick = mnuActCopyClick
+      end
+      object mnuActRefill: TMenuItem
+        Caption = 'R&efill...'
+        OnClick = mnuActRefillClick
+      end
+    end
+  end
+  object popMed: TPopupMenu
+    OnPopup = popMedPopup
+    Left = 116
+    Top = 155
+    object popMedDetails: TMenuItem
+      Caption = 'Detai&ls...'
+      OnClick = mnuViewDetailClick
+    end
+    object popMedHistory: TMenuItem
+      Caption = 'Administration &History...'
+      OnClick = mnuViewHistoryClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object popMedChange: TMenuItem
+      Caption = '&Change...'
+      OnClick = mnuActChangeClick
+    end
+    object popMedDC: TMenuItem
+      Caption = '&Discontinue...'
+      OnClick = mnuActDCClick
+    end
+    object popMedRefill: TMenuItem
+      Caption = 'R&efill...'
+      OnClick = mnuActRefillClick
+    end
+    object popMedRenew: TMenuItem
+      Caption = 'Rene&w...'
+      OnClick = mnuActRenewClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object popMedNew: TMenuItem
+      Caption = '&New Medication...'
+      OnClick = mnuActNewClick
+    end
+    object mnuOptimizeFields: TMenuItem
+      Caption = 'Adjust Field Size'
+      Visible = False
+      OnClick = mnuOptimizeFieldsClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMeds.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMeds.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fMeds.pas	(revision 1676)
@@ -0,0 +1,2187 @@
+unit fMeds;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fPage, StdCtrls, Menus, ORCtrls, ORFn, ExtCtrls, ComCtrls, rOrders, uConst,
+  rMeds, ORNet, fBase508Form, VA508AccessibilityManager;
+
+type
+  TChildOD = class
+  public
+    ChildID:  string;
+    ParentID: string;
+    constructor Create;
+  end;
+  TfrmMeds = class(TfrmPage)
+    mnuMeds: TMainMenu;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    mnuAct: TMenuItem;
+    mnuActNew: TMenuItem;
+    Z1: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActDC: TMenuItem;
+    mnuActHold: TMenuItem;
+    mnuActRenew: TMenuItem;
+    Z2: TMenuItem;
+    mnuViewActive: TMenuItem;
+    mnuViewExpiring: TMenuItem;
+    Z3: TMenuItem;
+    mnuViewSortClass: TMenuItem;
+    mnuViewSortName: TMenuItem;
+    Z4: TMenuItem;
+    mnuViewDetail: TMenuItem;
+    popMed: TPopupMenu;
+    popMedDetails: TMenuItem;
+    N1: TMenuItem;
+    popMedChange: TMenuItem;
+    popMedDC: TMenuItem;
+    popMedRenew: TMenuItem;
+    N2: TMenuItem;
+    popMedNew: TMenuItem;
+    mnuActCopy: TMenuItem;
+    mnuActRefill: TMenuItem;
+    mnuActTransfer: TMenuItem;
+    popMedRefill: TMenuItem;
+    mnuChartSurgery: TMenuItem;
+    mnuViewHistory: TMenuItem;
+    popMedHistory: TMenuItem;
+    pnlBottom: TORAutoPanel;
+    splitBottom: TSplitter;
+    pnlMedIn: TPanel;
+    lstMedsIn: TCaptionListBox;
+    hdrMedsIn: THeaderControl;
+    pnlNonVA: TPanel;
+    lstMedsNonVA: TCaptionListBox;
+    hdrMedsNonVA: THeaderControl;
+    splitTop: TSplitter;
+    pnlTop: TORAutoPanel;
+    lstMedsOut: TCaptionListBox;
+    hdrMedsOut: THeaderControl;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    mnuOptimizeFields: TMenuItem;
+    SortbyStatusthenLocation1: TMenuItem;
+    SortbyClinicOrderthenStatusthenStopDate1: TMenuItem;
+    SortbyDrugalphabeticallystatusactivestatusrecentexpired1: TMenuItem;
+    N3: TMenuItem;
+    pnlView: TPanel;
+    txtView: TVA508StaticText;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure lstMedsMeasureItem(Control: TWinControl; Index: Integer;
+      var AHeight: Integer);
+    procedure lstMedsDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure mnuViewDetailClick(Sender: TObject);
+    procedure lstMedsExit(Sender: TObject);
+    procedure lstMedsDblClick(Sender: TObject);
+    procedure lstMedsInClick(Sender: TObject);
+    procedure lstMedsOutClick(Sender: TObject);
+    procedure hdrMedsOutSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure hdrMedsInSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure mnuActDCClick(Sender: TObject);
+    procedure mnuActHoldClick(Sender: TObject);
+    procedure mnuActRenewClick(Sender: TObject);
+    procedure mnuActChangeClick(Sender: TObject);
+    procedure mnuActCopyClick(Sender: TObject);
+    procedure mnuActNewClick(Sender: TObject);
+    procedure mnuActRefillClick(Sender: TObject);
+    procedure mnuActClick(Sender: TObject);
+    procedure mnuViewHistoryClick(Sender: TObject);
+    procedure popMedPopup(Sender: TObject);
+    procedure mnuViewClick(Sender: TObject);
+    procedure lstMedsNonVAClick(Sender: TObject);
+    procedure lstMedsNonVADblClick(Sender: TObject);
+    procedure lstMedsNonVAExit(Sender: TObject);
+    procedure hdrMedsNonVASectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure FormResize(Sender: TObject);
+    procedure hdrMedsOutResize(Sender: TObject);
+    procedure hdrMedsNonVAResize(Sender: TObject);
+    procedure hdrMedsInResize(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure splitBottomMoved(Sender: TObject);
+    procedure splitTopMoved(Sender: TObject);
+    procedure hdrMedsOutMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure hdrMedsNonVAMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure hdrMedsInMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure hdrMedsOutMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure hdrMedsNonVAMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure hdrMedsInMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure ActivateDeactiveRenew(AListBox: TListBox);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+    procedure mnuOptimizeFieldsClick(Sender: TObject);
+    procedure hdrMedsOutSectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure hdrMedsNonVASectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure hdrMedsInSectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure SortbyStatusthenLocation1Click(Sender: TObject);
+    procedure SortbyClinicOrderthenStatusthenStopDate1Click(
+      Sender: TObject);
+    procedure SortbyDrugalphabeticallystatusactivestatusrecentexpired1Click(
+      Sender: TObject);
+  private
+    FIterating: Boolean;
+    FActionOnMedsTab: Boolean;
+    FParentComplexOrderID: string;
+    uMedListIn: TList;
+    uMedListOut: TList;
+    uMedListNonVA: TList;
+    uPendingChanges: TStringList;
+    uDGrp: array[0..6] of Integer;
+    uPharmacyOrdersIn: TStringList;
+    uPharmacyOrdersOut: TStringList;
+    uNonVAOrdersOut:  TStringList;
+    ChildODList: TStringList;
+    FSortView: integer;
+    function ListSelected(const ErrMsg: string): TListBox;
+    procedure ValidateSelected(AListBox: TListBox; const AnAction, WarningMsg, WarningTitle: string);
+    procedure MakeSelectedList(AListBox: TListBox; AList: TList; ActName: String = '');
+    procedure SynchListToOrders(AListBox: TListBox; AList: TList);
+    function GetActionText(const AMed: TMedListRec): string;
+    function GetInstructText(const AMed: TMedListRec; var Detail: string): string;
+    function GetListText(const AMed: TMedListRec; Column: integer; var Detail: string): string;
+    function GetPlainText(Control: TWinControl; Index: integer): string;
+    function GetHeader(Control: TWinControl): THeaderControl;
+    function GetMedList(Control: TWinControl): TList;
+    function GetPharmacyOrders(Control: TWinControl): TStringList;
+    //function PatientStatusChanged: boolean;
+    procedure ClearChildODList;
+    procedure SetViewCaption(Caption : String);
+    procedure lstMedsInRightClickHandler(var Msg: TMessage; var Handled: Boolean);
+    procedure lstMedsNonVARightClickHandler(var Msg: TMessage; var Handled: Boolean);
+    procedure lstMedsOutRightClickHandler(var Msg: TMessage; var Handled: Boolean);
+  public
+    procedure RefreshMedLists;
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure NotifyOrder(OrderAction: Integer; AnOrder: TOrder); override;
+    procedure SetFontSize( FontSize: integer); override;
+    property ActionOnMedsTab: boolean     read FActionOnMedsTab;
+    property ParentComplexOrderID: string read FParentComplexOrderID  write FParentComplexOrderID;
+    procedure InitfMedsSize;
+    procedure SetSectionWidths(Sender: TObject);
+    function GetTotalSectionsWidth(Sender: TObject) : integer;
+    function CheckMedStatus(ActiveList: TListBox): boolean;
+    property SortView: integer read FSortView write FSortView;
+  end;
+
+type
+  arOrigOutPtSecWidths = array[0..6] of integer; //CQ7586
+  arOrigInPtSecWidths = array[0..4] of integer; //CQ7586
+  arOrigNonVASecWidths = array[0..3] of integer; //CQ7586
+
+var
+  frmMeds: TfrmMeds;
+//  LargePanelPortion: Integer;
+//  SmallPanelPortion: integer;
+
+  OrigOutPtSecWidths: arOrigOutPtSecWidths; //CQ7586
+  OrigInPtSecWidths : arOrigInPtSecWidths; //CQ7586
+  OrigNonVASecWidths: arOrigNonVASecWidths; //CQ7586
+
+  MedOutSize:  double;
+  s: string;
+  LargePanelSize: integer;
+  SmallPanelSize : integer;
+  MedNonVAPanelSize: integer;
+
+  totalHeight: integer;
+
+  resizedTotalHeight: integer;
+  resizedMedOutPanelHeight: Extended;
+  resizedNonVAPanelHeight: Extended;
+  resizedMedInPanelHeight: Extended;
+
+  splitterTop: TSplitter;
+  splitterBottom: TSplitter;
+
+  oldFont: integer; //CQ9182
+
+
+implementation
+
+uses uCore, rCore, fFrame, fRptBox, uOrders, fODBase, fOrdersDC, fOrdersHold,
+     fOrdersRenew, fOMNavA, fOrdersRefill, fMedCopy, fOrders, fODChild, rODBase, 
+     StrUtils, fActivateDeactivate, VA2006Utils, VA508AccessibilityRouter,
+  VAUtils;
+
+{$R *.DFM}
+
+const
+  SMALL_PANEL = 20;
+  LARGE_PANEL = 60;
+  COL_MEDNAME = 1;
+  DG_OUT = 0;
+  DG_IN  = 1;
+  DG_UD  = 2;
+  DG_IV  = 3;
+  DG_TPN = 4;
+  DG_NVA = 5;
+  DG_IMO = 6;
+  FMT_INDENT = 12;
+  TAG_OUTPT = 1;
+  TAG_INPT  = 2;
+  TAG_NONVA = 3;
+  TX_NOSEL      = 'No orders are highlighted.  Highlight the orders' + CRLF +
+                  'you wish to take action on.';
+  TC_NOSEL      = 'No Orders Selected';
+  TX_NO_DC      = CRLF + CRLF + '- cannot be discontinued.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_DC      = 'Unable to Discontinue';
+  TX_NO_RENEW   = CRLF + CRLF + '- cannot be changed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_RENEW   = 'Unable to Renew Order';
+  TX_NO_HOLD    = CRLF + CRLF + '- cannot be placed on hold.' + CRLF + CRLF + 'Reason:  ';
+  TC_NO_HOLD    = 'Unable to Hold';
+  TX_NO_COPY    = CRLF + CRLF + '- cannot be copied.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_COPY    = 'Unable to Copy Order';
+  TX_NO_CHANGE  = CRLF + CRLF + '- cannot be changed.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_CHANGE  = 'Unable to Change Order';
+  TX_NO_REFILL  = CRLF + CRLF + '- cannot be refilled.' + CRLF + CRLF + 'Reason: ';
+  TC_NO_REFILL  = 'Unable to Refill Order';
+  MEDS_SPLIT_FORM = 'frmMedsSplit';
+
+{ TPage common methods --------------------------------------------------------------------- }
+
+procedure TfrmMeds.ClearPtData;
+begin
+  inherited ClearPtData;
+  ClearChildODList;
+  lstMedsIn.Clear;
+  lstMedsOut.Clear;
+  lstMedsNonVA.Clear;
+  ClearMedList(uMedListIn);
+  ClearMedList(uMedListOut);
+  ClearMedList(uMedListNonVA);
+  uPendingChanges.Clear;
+  uPharmacyOrdersIn.Clear;
+  uPharmacyOrdersOut.Clear;
+  uMedListNonVA.Clear;
+  totalHeight := 0;
+
+end;
+
+procedure TfrmMeds.DisplayPage;
+const
+ RATIO_SMALL = 0.13; //0.1866;
+
+
+begin
+  inherited DisplayPage;
+
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+
+  if InitPage and User.NoOrdering then
+  begin
+    mnuAct.Enabled       := False;
+    popMedChange.Enabled := False;
+    popMedDC.Enabled     := False;
+    popMedRenew.Enabled  := False;
+    popMedNew.Enabled    := False;
+
+  end;
+
+  //Swap Inpatient/Outpatient list display positions depending in inpatient/outpatient status
+  if InitPage and User.DisableHold then
+     mnuActHold.Visible := False;
+
+  if Patient.Inpatient then
+  begin
+     splitBottom.Align := alNone;
+     hdrMedsIn.Align  := alNone;
+     lstMedsIn.Align   := alNone;
+
+     lstMedsIn.Parent  := pnlTop;
+     lstMedsIn.Align   := alClient;
+     lstMedsOut.Parent := pnlMedIn;
+
+     hdrMedsIn.Parent  := pnlTop;
+     hdrMedsIn.Align   := alTop;
+
+     hdrMedsOut.Parent := pnlMedIn;
+     splitBottom.Align := alBottom;
+
+     lstMedsIn.Height  := lstMedsIn.Height - 1; // added to cause repaint if user makes area small
+     lstMedsIn.Height  := lstMedsIn.Height + 1; // added to cause repaint if user makes area small.
+     lstMedsOut.Height := lstMedsOut.Height + 1;  // added to cause repaint if user makes area small
+     lstMedsOut.Height := lstMedsOut.Height - 1; // added to cause repaint if user makes area small
+
+  end
+  else
+     begin
+        splitBottom.Align := alNone;
+        hdrMedsIn.Align   := alNone;
+
+        lstMedsIn.Parent  := pnlMedIn;
+        lstMedsOut.Parent := pnlTop;
+        lstMedsOut.Align  := alClient;
+
+        hdrMedsIn.Parent  := pnlMedIn;
+        hdrMedsIn.Align   := alTop;
+
+        hdrMedsOut.Parent := pnlTop;
+        splitBottom.Align := alBottom;
+
+        lstMedsIn.Height  := lstMedsIn.Height - 1; // added to cause repaint if user makes area small
+        lstMedsIn.Height  := lstMedsIn.Height + 1; // added to cause repaint if user makes area small.
+        lstMedsOut.Height := lstMedsOut.Height + 1;  // added to cause repaint if user makes area small
+        lstMedsOut.Height := lstMedsOut.Height - 1; // added to cause repaint if user makes area small
+     end;
+   RefreshMedLists;
+
+end;
+
+procedure TfrmMeds.mnuChartTabClick(Sender: TObject);
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+procedure TfrmMeds.NotifyOrder(OrderAction: Integer; AnOrder: TOrder);
+var
+  AMedList: TList;
+  AStringList: TStringList;
+  NewMedRec: TMedListRec;
+  i, idx, Match: Integer;
+  j: integer;
+  AChildList: TStringlist;
+  CplxOrderID: string;
+
+  procedure SetCurrentOrderID;
+  var
+    i: Integer;
+    AMedRec: TMedListRec;
+  begin
+    with AMedList do for i := 0 to Count - 1 do
+    begin
+      AMedRec := TMedListRec(AMedList[i]);
+      if Piece(AMedRec.OrderID, ';', 1) = Piece(AnOrder.ActionOn, ';', 1) then
+      begin
+      end;
+    end;
+  end;
+
+  function IndexForCurrentID(const AnID: string): Integer;
+  var
+    i: Integer;
+  begin
+    Result := -1;
+    for i := 0 to uPendingChanges.Count - 1 do
+      if Piece(uPendingChanges[i], U, 2) = AnID then Result := i;
+    if Result < 0 then
+      for i := 0 to uPendingChanges.Count - 1 do
+        if Piece(uPendingChanges[i], '=', 1) = Piece(AnID, ';', 1) then Result := i;
+  end;
+
+begin
+  AMedList := nil;
+  if AnOrder <> nil then
+  begin
+    //AGP Change 26.24 CQ 7150 fixes the problem with non-va meds initially showing up in the inpatient section
+    if uDGrp[DG_OUT] = AnOrder.DGroup then AMedList := uMedListOut;
+    If uDGrp[DG_NVA] = AnOrder.DGroup then AMedList := uMedListNonVA;
+    if (AMedList <> uMedListOut) and (AMedList <> uMedListNonVA) then
+      for i := 1 to 6 do if uDGrp[i] = AnOrder.DGroup then AMedList := uMedListIn;
+  end;
+  case OrderAction of
+  ORDER_NEW:  { sent by accept order on new order }
+    if AMedList <> nil then
+    begin
+      // check this out carefully!!
+      NewMedRec := TMedListRec.Create;
+      NewMedRec.OrderID := AnOrder.ID;
+      NewMedRec.Instruct := AnOrder.Text;
+      NewMedRec.Inpatient := AMedList = uMedListIn;
+      AMedList.Insert(0, NewMedRec);
+      if AMedList = uMedListIn then
+      begin
+        lstMedsIn.Items.Insert(0, GetPlainText(lstMedsIn,0));
+        uPharmacyOrdersIn.Insert(0, U + AnOrder.ID);
+      end
+      else
+      begin
+        if AMedList = uMedListOut then
+        begin
+           lstMedsOut.Items.Insert(0, GetPlainText(lstMedsOut,0));
+           uPharmacyOrdersOut.Insert(0, U + AnOrder.ID);
+        end
+      else
+      begin
+          if AMedList = uMedListNonVA then
+          begin
+             lstMedsNonVA.Items.Insert(0, GetPlainText(lstMedsNonVA,0));
+             uNonVAOrdersOut.Insert(0, U + AnOrder.ID);
+          end;
+      end;
+      end;
+      uPendingChanges.Add(Piece(AnOrder.ID, ';', 1) + '=NW^' + AnOrder.ID);
+    end;
+  ORDER_DC:   { sent by a diet to cancel a tubefeeding - do nothing };
+  ORDER_EDIT: { sent by accept on edit order }
+    if AMedList <> nil then
+    begin
+      Match := IndexForCurrentID(AnOrder.EditOf);
+      if Match < 0
+        { add a new pending change if there is no existing change that matches EditOf }
+        then uPendingChanges.Add(Piece(AnOrder.EditOf, ';', 1) + '=XX' + U + AnOrder.ID + U + AnOrder.Text + U + AnOrder.OrderLocName)
+        { leave 1st piece (original ID) intact, while changing text & current ID }
+        else uPendingChanges[Match] := Piece(uPendingChanges[Match], '=', 1) + '=XX' + U + AnOrder.ID + U + AnOrder.Text + U + AnOrder.OrderLocName;
+    end;
+  ORDER_ACT:  { sent by DC, Hold, & Renew actions }
+    if AMedList <> nil then
+    begin
+      if Piece(AnOrder.ActionOn, '=', 2) = 'CA' then
+      begin
+        // cancel action, remove from PendingChanges
+        for idx := uPendingChanges.Count-1 downto 0 do
+        begin
+          Match := IndexForCurrentID(Piece(AnOrder.ActionOn, '=', 1));
+          if Match > -1 then uPendingChanges.Delete(Match);
+        end;
+      end
+      else if Piece(AnOrder.ActionOn, '=', 2) = 'DL' then
+      begin
+        // delete action, show as deleted (set OrderID's to 0 so not confused with next order)
+        Match := IndexForCurrentID(Piece(AnOrder.ActionOn, '=', 1));
+        if Match > -1 then uPendingChanges[Match] := '0=DL';
+        if AMedList = uMedListIn
+        then AStringList := uPharmacyOrdersIn
+        else if AMedList = uMedListOut
+        then AStringList := uPharmacyOrdersOut
+        else AStringList := uNonVAOrdersOut;
+        with AStringList do for i := 0 to Count - 1 do
+          if (U + Piece(AnOrder.ActionOn, '=', 1)) = Strings[i] then Strings[i] := '^0';
+        Match := -1;
+        with AMedList do for i := 0 to Count - 1 do
+          if TMedListRec(Items[i]).OrderID = Piece(AnOrder.ActionOn, '=', 1) then Match := i;
+        if Match > -1 then TMedListRec(AMedList.Items[Match]).OrderID := '0';
+      end
+      else uPendingChanges.Add(Piece(AnOrder.ActionOn, ';', 1) + '=' +
+              Piece(AnOrder.ActionOn, '=', 2) + U + AnOrder.ID + '^^' + AnOrder.OrderLocName);
+
+    end; {if AMedList}
+  ORDER_CPLXRN:
+    begin
+      AChildList := TStringList.Create;
+      CplxOrderID := Piece(AnOrder.ActionOn,'=',1);
+      GetChildrenOfComplexOrder(CplxOrderID, Piece(CplxOrderID,';',2), AChildList);
+      if AMedList = uMedListIn then with AMedList do
+      begin
+        for i := Count-1 downto 0 do
+        begin
+          for j := 0 to AChildList.Count - 1 do
+          begin
+            if (TMedListRec(Items[i]).OrderID = AChildList[j]) then
+            begin
+            {  Delete(i);
+              Break;}
+              if not IsFirstDoseNowOrder(TMedListRec(Items[i]).OrderID) then
+              begin
+                uPendingChanges.Add(Piece(TMedListRec(Items[i]).OrderID, ';', 1) + '=' + Piece(AnOrder.ActionOn, '=', 2) + U + AnOrder.ID);
+                Break;
+              end;
+            end;
+          end;
+        end;
+      end;
+      AChildList.Clear;
+      AChildList.Free;
+    end;
+  ORDER_SIGN: { sent by fReview, fOrderSign when orders signed, AnOrder=nil}
+    begin
+      // ** only if tab has been visited?
+      uPendingChanges.Clear;
+      RefreshMedLists;
+    end;
+  end; {case}
+end;
+
+procedure TfrmMeds.SetFontSize( FontSize: integer);
+begin
+  inherited SetFontSize(FontSize);
+  mnuOptimizeFieldsClick(self);
+  if Patient.DFN <> '' then
+    RefreshMedLists;
+end;
+
+{ Form events ------------------------------------------------------------------------------ }
+
+procedure TfrmMeds.FormCreate(Sender: TObject);
+var
+ medsSplitFnd : boolean;
+  retList : TStringList;
+  i: integer;
+  x: string;
+begin
+  inherited;
+  FixHeaderControlDelphi2006Bug(hdrMedsIn);
+  FixHeaderControlDelphi2006Bug(hdrMedsOut);
+  FixHeaderControlDelphi2006Bug(hdrMedsNonVA);
+  PageID := CT_MEDS;
+  uMedListIn  := TList.Create;
+  uMedListOut := TList.Create;
+  uMedListNonVA := TList.Create;
+  uPendingChanges := TStringList.Create;
+  uDGrp[DG_OUT] := DGroupIEN('O RX');
+  uDGrp[DG_IN]  := DGroupIEN('I RX');
+  uDGrp[DG_UD]  := DGroupIEN('UD RX');
+  uDGrp[DG_IV]  := DGroupIEN('IV RX');
+  uDGrp[DG_TPN] := DGroupIEN('TPN');
+  uDGrp[DG_NVA] := DGroupIEN('NV RX');
+  uDGrp[DG_IMO] := DGroupIEN('C RX');
+  uPharmacyOrdersIn  := TStringList.Create;
+  uPharmacyOrdersOut := TStringList.Create;
+  uNonVAOrdersOut    := TStringList.Create;
+  FActionOnMedsTab   := False;
+  FParentComplexOrderID := '';
+  ChildODList := TStringList.Create;
+
+
+
+  //DETECT 1st TIME USER.
+  //If first time user (medSplitFound=false), then manually set panel heights.
+  //if NOT first time user (medSplitFound=true), then set Meds tab windows to saved settings.
+  medsSplitFnd := FALSE;
+  if Assigned(frmMeds) then
+     begin
+     retList := TStringList.Create;
+     tCallV(retList, 'ORWCH LOADALL', [nil]);
+
+     for i := 0 to retList.Count-1 do
+        begin
+        x := retList.strings[i];
+        if strPos(PChar(x),PChar(MEDS_SPLIT_FORM)) <> nil then
+           begin
+           medsSplitFnd := False;//TRUE;
+           Break;
+           end;
+        end;
+
+     if not medsSplitFnd then
+        begin
+          pnlBottom.Height := frmMeds.Height div 2;
+          pnlMedIn.Height := pnlBottom.Height div 2;
+        end;
+     end;
+
+  //CQ9622
+  if hdrMedsIn.Sections[1].Width < 100 then
+     begin
+     hdrMedsIn.Sections[1].Width := 100;
+     hdrMedsIn.Refresh;
+     end;
+  if hdrMedsNonVA.Sections[1].Width < 100 then
+     begin
+     hdrMedsNonVA.Sections[1].Width := 100;
+     lstMedsNonVA.Refresh;
+     end;
+  if hdrMedsOut.Sections[1].Width < 100 then
+     begin
+     hdrMedsOut.Sections[1].Width := 100;
+     hdrMedsOut.Refresh;
+     end;
+  //end CQ9622
+  AddMessageHandler(lstMedsIn, lstMedsInRightClickHandler);
+  AddMessageHandler(lstMedsNonVA, lstMedsNonVARightClickHandler);
+  AddMessageHandler(lstMedsOut, lstMedsOutRightClickHandler);
+end;
+
+procedure TfrmMeds.FormDestroy(Sender: TObject);
+begin
+  inherited;
+  RemoveMessageHandler(lstMedsOut, lstMedsOutRightClickHandler);
+  RemoveMessageHandler(lstMedsNonVA, lstMedsNonVARightClickHandler);
+  RemoveMessageHandler(lstMedsIn, lstMedsInRightClickHandler);
+  ClearChildODList;
+  ClearMedList(uMedListIn);
+  ClearMedList(uMedListOut);
+  ClearMedList(uMedListNonVA);
+  uMedListIn.Free;
+  uMedListOut.Free;
+  uMedListNonVA.Free;
+  uPendingChanges.Free;
+  uPharmacyOrdersIn.Free;
+  uPharmacyOrdersOut.Free;
+  uNonVAOrdersOut.Free;
+  ChildODList.Free;
+end;
+
+{ View menu events ------------------------------------------------------------------------- }
+
+procedure TfrmMeds.mnuViewDetailClick(Sender: TObject);
+var
+  AnID, ATitle, AnOrder: string;
+  AListBox: TListBox;
+  i,j,idx: Integer;
+  tmpList: TStringList;
+begin
+  inherited;
+  tmpList := TStringList.Create;
+  try
+    idx := 0;
+    AListBox := ListSelected(TX_NOSEL);
+    if AListBox = nil then Exit
+    else if AListBox = lstMedsOut then ATitle := 'Outpatient Medication Details'
+    else if AListBox = lstMedsNonVA then ATitle := 'Non VA Medication Details'
+    else ATitle := 'Inpatient Medication Details';
+    FIterating := True;
+    with GetPharmacyOrders(AListBox) do for i := 0 to Count - 1 do if AListBox.Selected[i] then
+    begin
+      AnID := Piece(Strings[i], U, 1);
+      if AnID <> '' then
+        begin
+          FastAssign(DetailMedLM(AnID), tmpList);
+        end;
+      AnOrder := Piece(Strings[i], U, 2);
+      if AnOrder <> '' then
+        begin
+          tmpList.Add('');
+          tmpList.Add(StringOfChar('=', 74));
+          tmpList.Add('');
+          FastAddStrings(MedAdminHistory(AnOrder), tmpList);
+        end;
+      if CheckOrderGroup(AnOrder)=1 then  // if it's UD group
+      begin
+        for j := 0 to tmpList.Count - 1 do
+        begin
+          if Pos('PICK UP',UpperCase(tmpList[j]))>0 then
+          begin
+            idx := j;
+            Break;
+          end;
+        end;
+        if idx > 0 then
+          tmpList.Delete(idx);
+      end;
+      if tmpList.Count > 0 then ReportBox(tmpList, ATitle, True);
+      if (frmFrame.TimedOut) or (frmFrame.CCOWDrivedChange) then Exit; //code added to correct access violation on timeout
+        Exit;
+    end;
+    FIterating := False;
+    ResetSelectedForList(AListBox);
+    AListBox.SetFocus;
+  finally
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmMeds.mnuViewHistoryClick(Sender: TObject);
+var
+  ATitle, AnOrder: string;
+  AListBox: TListBox;
+  i: Integer;
+begin
+  inherited;
+  AListBox := ListSelected(TX_NOSEL);
+  if AListBox = nil then Exit
+  else if AListBox = lstMedsOut then ATitle := 'Outpatient Medication Administration History'
+  else if AListBox = lstMedsNonVA then ATitle := 'Non VA Medication Documentation History'
+  else ATitle := 'Inpatient Medication Administration History';
+  FIterating := True;
+  with GetPharmacyOrders(AListBox) do for i := 0 to Count - 1 do if AListBox.Selected[i] then
+  begin
+    AnOrder := Piece(Strings[i], U, 2);
+    if AnOrder <> '' then
+      ReportBox(MedAdminHistory(AnOrder), ATitle, True);
+  end;
+  FIterating := False;
+  ResetSelectedForList(AListBox);
+  AListBox.SetFocus;
+end;
+
+{ Listbox events --------------------------------------------------------------------------- }
+
+procedure TfrmMeds.RefreshMedLists;
+var
+  i,view: Integer;
+  AMed: TMedListRec;
+begin
+  lstMedsIn.Clear;
+  lstMedsOut.Clear;
+  lstMedsNonVA.Clear;
+  StatusText('Retrieving active medications...');
+  view := self.FSortView;
+  //AGP Fix for CQ 10410 added view arguement to control Meds Tab sort criteria
+  LoadActiveMedLists(uMedListIn, uMedListOut, uMedListNonVA, view);
+  if view <> self.FSortView then
+    begin
+      self.FSortView := view;
+      if view = 1 then
+        begin
+          self.SortbyStatusthenLocation1.Checked := True;
+          SetViewCaption(SortbyStatusthenLocation1.Caption);
+          self.SortbyClinicOrderthenStatusthenStopDate1.Checked := False;
+          self.SortbyDrugalphabeticallystatusactivestatusrecentexpired1.checked := false;
+        end
+      else if view = 2 then
+        begin
+          self.SortbyStatusthenLocation1.Checked := False;
+          self.SortbyClinicOrderthenStatusthenStopDate1.Checked := True;
+          SetViewCaption(SortbyClinicOrderthenStatusthenStopDate1.Caption);
+          self.SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Checked := false;
+        end
+      else if view = 3 then
+        begin
+          self.SortbyStatusthenLocation1.Checked := False;
+          self.SortbyClinicOrderthenStatusthenStopDate1.Checked := false;
+          self.SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Checked := true;
+          SetViewCaption(SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Caption);
+        end
+    end;
+  uPharmacyOrdersIn.Clear;
+  uPharmacyOrdersOut.Clear;
+  uNonVAOrdersOut.Clear;
+  with uMedListIn do for i := 0 to Count - 1 do
+  begin
+    AMed := TMedListRec(Items[i]);
+    uPharmacyOrdersIn.Add(AMed.PharmID + U + AMed.OrderID);
+    lstMedsIn.Items.AddObject(GetPlainText(lstMedsIn, i), AMed);
+  end;
+
+  with uMedListNonVA do for i := 0 to Count - 1 do
+  begin
+     AMed := TMedListRec(Items[i]);
+     uNonVAOrdersOut.Add(AMed.PharmID + U + AMed.OrderID);
+     lstMedsNonVA.Items.AddObject(GetPlainText(lstMedsNonVA, i), AMed);
+  end;
+
+  with uMedListOut do for i := 0 to Count - 1 do
+  begin
+    AMed := TMedListRec(Items[i]);
+    uPharmacyOrdersOut.Add(AMed.PharmID + U + AMed.OrderID);
+    lstMedsOut.Items.AddObject(GetPlainText(lstMedsOut, i), AMed);
+  end;
+
+        StatusText('');
+end;
+
+function TfrmMeds.GetActionText(const AMed: TMedListRec): string;
+var
+  AnAction: string;
+  Abbreviation: string;
+begin
+  AnAction := uPendingChanges.Values[Piece(AMed.OrderID, ';', 1)];
+  Abbreviation := Piece(AnAction, U, 1);
+  result := '';
+  if Length(Abbreviation) > 0 then
+  begin
+    if CharAt(Abbreviation, 1) = 'X' then result := 'Change'
+    else if Abbreviation = 'NW' then result := 'New'
+    else if Abbreviation = 'RN' then result := 'Renew'
+    else if Abbreviation = 'RF' then result := 'Refill'
+    else if Abbreviation = 'HD' then result := 'Hold'
+    else if Abbreviation = 'DL' then result := 'Deleted'
+    else if Abbreviation = 'DC' then result := 'DC'
+    else result := Abbreviation;
+  end;
+end;
+
+function TfrmMeds.GetInstructText(const AMed: TMedListRec; var Detail: string): string;
+var
+  AnAction: string;
+  Indent: integer;
+begin
+  AnAction := uPendingChanges.Values[Piece(AMed.OrderID, ';', 1)];
+  result := AMed.Instruct;
+  // replace pharmacy text with order text if this is a change
+  if CharAt(AnAction, 1) = 'X' then result := Piece(AnAction, U, 3);
+  if AMed.IVFluid then Indent := Pos(CRLF + 'in ', result) else Indent := Pos(#13, result);
+  if Indent > 0 then
+  begin
+    if AMed.IVFluid then
+    begin
+      Detail := Copy(result, Indent + Length(CRLF), Length(result));
+      result := Copy(result, 1, Indent - 1);
+    end else
+    begin
+      Detail := Copy(result, Indent + 2, Length(result));
+      result := Copy(result, 1, Indent - 1);
+    end;
+  end;
+end;
+
+function TfrmMeds.GetListText(const AMed: TMedListRec; Column: integer; var Detail: string): string;
+begin
+  result := '';
+  Detail := '';
+  if AMed.Status = 'Suspended' then AMed.Status := 'Active/Susp'; //HDS00007547	PSI-03-033 Interim Solution.
+  case Column of
+    0: result := GetActionText(AMed);
+    1: result := GetInstructText(AMed, Detail);
+    2: result := FormatFMDateTime('mm/dd/yy', AMed.StopDate);
+    3: result :=  AMed.Status;
+    4:
+     begin
+       if AMed.Inpatient then
+         result := MixedCase(AMed.Location)
+       else  result := FormatFMDateTime('mmm dd,yy', AMed.LastFill);
+     end;
+    5: result := AMed.Refills;
+    else
+  end;
+end;
+
+function TFrmMeds.GetPlainText(Control: TWinControl; Index: integer): string;
+var
+  AMed: TMedListRec;
+  AHeader: THeaderControl;
+  i: integer;
+  x, y: string;
+begin
+  Result := '';
+  AMed := TMedListRec(GetMedList(Control)[Index]);
+  AHeader := GetHeader(Control);
+  for i := 0 to AHeader.Sections.Count-1 do
+  begin
+    x := GetListText(AMed, i, y);
+    if (x <> '') or (y <> '') then
+      Result := Result + AHeader.Sections[i].Text + ': ' + x + ' ' + y + CRLF;
+  end;
+  Result := Trim(Result);
+end;
+
+function TFrmMeds.GetHeader(Control: TWinControl): THeaderControl;
+begin
+  case Control.Tag of
+    TAG_OUTPT: result := hdrMedsOut;
+    TAG_NONVA: result := hdrMedsNonVA;
+    TAG_INPT:  result := hdrMedsIn;
+
+    else       
+    result := nil;
+  end;
+end;
+
+function TFrmMeds.GetMedList(Control: TWinControl): TList;
+begin
+  case Control.Tag of
+    TAG_OUTPT: result := uMedListOut;
+    TAG_NONVA: result := uMedListNonVA;
+    TAG_INPT:  result := uMedListIn;
+    else
+    result := nil;
+  end;
+end;
+
+function TFrmMeds.GetPharmacyOrders(Control: TWinControl): TStringList;
+begin
+  case Control.Tag of
+    TAG_OUTPT: result := uPharmacyOrdersOut;
+    TAG_NONVA: result := uNonVAOrdersOut;
+    TAG_INPT:  result := uPharmacyOrdersIn;
+  else
+     result := nil;
+  end;
+end;
+
+procedure TfrmMeds.lstMedsMeasureItem(Control: TWinControl; Index: Integer;
+  var AHeight: Integer);
+var
+  NewHeight, RecRight: Integer;
+  AMed: TMedListRec;
+  AHeader: THeaderControl;
+  AMedList: TList;
+  ARect: TRect;
+  x, y, AnAction: string;
+begin
+  inherited;
+  NewHeight := AHeight;
+  AHeader := GetHeader(Control);
+  AMedList := GetMedList(Control);
+  with Control as TListBox do if Index < Items.Count then
+  begin
+    AMed := TMedListRec(AMedList[Index]);  // can't use Items.Objects here - its not there yet
+    if AMed <> nil then
+    begin
+      ARect := ItemRect(Index);
+      ARect.Left  := AHeader.Sections[0].Width + 2;
+      ARect.Right := ARect.Left + AHeader.Sections[1].Width - 6;
+      AnAction := uPendingChanges.Values[Piece(AMed.OrderID, ';', 1)];
+      if Length(AnAction) > 0 then Canvas.Font.Style := [fsBold];
+      x := GetInstructText( AMed, y);
+      RecRight := ARect.Right;
+      NewHeight := WrappedTextHeightByFont( Canvas, Font, x, ARect);
+      if(length(y)>0) then
+      begin
+        ARect.Left  := AHeader.Sections[0].Width + FMT_INDENT;
+        ARect.Right := RecRight; // Draw Text alters ARect.
+        inc(NewHeight, WrappedTextHeightByFont( Canvas, Font, y, ARect));
+      end;
+      if NewHeight > 255 then NewHeight := 255;   // windows appears to only look at 8 bits *KCM*
+      if NewHeight <  13 then NewHeight := 13;    // show at least one line                 *KCM*
+    end; {if AMed}
+  end; {if Index}
+  AHeight := NewHeight;
+end;
+
+procedure TfrmMeds.lstMedsDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  ReturnHt: Integer;
+  x, y, AnAction: string;
+  AMed: TMedListRec;
+  AMedList: TList;
+  AHeader: THeaderControl;
+  ARect: TRect;
+  i: integer;
+  RectLeft: integer;
+begin
+  inherited;
+  AHeader  := GetHeader(Control);
+  AMedList := GetMedList(Control);
+  ListGridDrawLines(TListBox(Control), AHeader, Index, State);
+  with Control as TListBox do if Index < Items.Count then
+  begin
+    AMed := TMedListRec(AMedList[Index]);  // can't use Items.Objects here - its not there yet
+    if AMed <> nil then
+    begin
+      AnAction := uPendingChanges.Values[Piece(AMed.OrderID, ';', 1)];
+      if Length(AnAction) > 0 then
+      begin
+        Canvas.Font.Style := [fsBold];
+        //AGP Change 26.29 CQ #8188 Fix for highlighted new meds displaying blue font with a blue background.
+        if odSelected in State  then
+            begin
+              Canvas.Brush.Color := clHighlight;
+              Canvas.Font.Color := clHighlightText;
+              //Canvas.FillRect(ARect);
+              Canvas.Font.Color := Get508CompliantColor(clWhite);
+           end;
+        if (Canvas.Font.Color <> Get508CompliantColor(clWhite)) then
+          Canvas.Font.Color := Get508CompliantColor(clBlue);
+        if (Length(Piece(AnAction,'^',4)) > 0) then
+          AMed.Location := Piece(AnAction,'^',4);
+      end;
+      RectLeft := 0;
+      for i := 0 to AHeader.Sections.Count -1 do
+      begin
+        x := GetListText(AMed, i, y);
+        if Length(y) > 0 then
+        begin
+          ARect := ItemRect(Index);
+          ARect.Left  := RectLeft + 2;
+          ARect.Right := (ARect.Left + AHeader.Sections[i].Width - 6);
+
+          //if ((ARect.Right - ARect.Left) < 100) then
+              //ARect.Right := ARect.Right + (100 - (ARect.Left + AHeader.Sections[i].Width - 6));
+
+          ReturnHt  := DrawText(Canvas.Handle, PChar(x), Length(x), ARect, DT_LEFT or DT_NOPREFIX
+                        or DT_WORDBREAK);
+          ARect.Left  := RectLeft + FMT_INDENT;
+          ARect.Top   := ARect.Top + ReturnHt;
+          DrawText(Canvas.Handle, PChar(y), Length(y), ARect, DT_LEFT or DT_NOPREFIX
+                        or DT_WORDBREAK);
+        end
+        else
+          ListGridDrawCell(TListBox(Control), AHeader, Index, i, x, i = 1);
+        Inc(RectLeft, AHeader.Sections[i].Width);
+      end;
+    end; {if AMed}
+  end; {if Index}
+end;
+
+procedure TfrmMeds.lstMedsExit(Sender: TObject);
+begin
+  inherited;
+  if not FIterating then ResetSelectedForList(TListBox(Sender));
+end;
+
+procedure TfrmMeds.lstMedsDblClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDetailClick(Self);
+end;
+
+procedure TfrmMeds.lstMedsInClick(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+  
+  //if PatientStatusChanged then exit;
+  with lstMedsOut do for i := 0 to Items.Count -1 do
+    Selected[i] := false;
+  with lstMedsNonVA do for i := 0 to Items.Count - 1 do
+    Selected[i] := FALSE;
+end;
+
+procedure TfrmMeds.lstMedsInRightClickHandler(var Msg: TMessage;
+  var Handled: Boolean);
+begin
+  if Msg.Msg = WM_RBUTTONUP then
+  begin
+    lstMedsIn.RightClickSelect := (lstMedsIn.SelCount < 1);
+    lstMedsInClick(lstMedsIn);
+  end;
+end;
+
+procedure TfrmMeds.lstMedsOutClick(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+ 
+  //if PatientStatusChanged then exit;
+  with lstMedsIn do for i := 0 to Items.Count -1 do
+    Selected[i] := false;
+  with lstMedsNonVA do for i := 0 to Items.Count -1 do
+    Selected[i] := false;
+end;
+
+procedure TfrmMeds.lstMedsOutRightClickHandler(var Msg: TMessage;
+  var Handled: Boolean);
+begin
+  if Msg.Msg = WM_RBUTTONUP then
+  begin
+    lstMedsOut.RightClickSelect := (lstMedsOut.SelCount < 1);
+    lstMedsOutClick(lstMedsOut);
+  end;
+end;
+
+procedure TfrmMeds.hdrMedsOutSectionResize(HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  RedrawSuspend(Self.Handle);
+  with lstMedsOut do
+  begin
+    IntegralHeight := not IntegralHeight;  // both lines are necessary, this forces the
+    IntegralHeight := not IntegralHeight;  // listbox window to be recreated
+  end;
+  RedrawActivate(Self.Handle);
+  lstMedsOut.Invalidate;
+  Refresh;
+end;
+
+procedure TfrmMeds.hdrMedsInSectionResize(HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  RedrawSuspend(Self.Handle);
+  with lstMedsIn do
+  begin
+    IntegralHeight := not IntegralHeight;  // both lines are necessary, this forces the
+    IntegralHeight := not IntegralHeight;  // listbox window to be recreated
+  end;
+
+  RedrawActivate(Self.Handle);
+  lstMedsIn.Invalidate;
+  Refresh;
+end;
+
+{ Action menu events ---------------------------------------------------------------------- }
+
+procedure TfrmMeds.mnuActClick(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+  if lstMedsOut.SelCount > 0 then
+  begin
+    mnuActTransfer.Caption := 'Transfer to Inpatient...';
+    mnuActTransfer.Enabled := True;
+  end
+  else if lstMedsIn.SelCount > 0 then
+  begin
+    mnuActTransfer.Caption := 'Transfer to Outpatient...';
+    mnuActTransfer.Enabled := True;
+  end
+  else
+  begin
+    mnuActTransfer.Caption := 'Transfer to...';
+    mnuActTransfer.Enabled := False;
+  end;
+end;
+
+procedure TfrmMeds.mnuActDCClick(Sender: TObject);
+{ discontinue/cancel/delete the selected med orders as appropriate for each order }
+{ similar to action on fOrders}
+var
+  ActiveList: TListBox;
+  SelectedList: TList;
+  DelEvt: boolean;
+begin
+  inherited;
+  DelEvt := False;
+  ActiveList := ListSelected(TX_NOSEL);
+  if ActiveList = nil then Exit;
+  SelectedList := TList.Create;
+  try
+    FIterating := True;
+    if AuthorizedUser and EncounterPresent and LockedForOrdering then
+    begin
+      ValidateSelected(ActiveList, OA_DC, TX_NO_DC, TC_NO_DC);
+      ActivateDeactiveRenew(ActiveList); //AGP 26.53 TURN OFF UNTIL FINAL DECISION CAN BE MADE
+      MakeSelectedList(ActiveList, SelectedList);
+      if ExecuteDCOrders(SelectedList,DelEvt) then
+      begin
+        if frmFrame.TimedOut = true then  exit;
+        ResetSelectedForList(ActiveList);
+        SynchListToOrders(ActiveList, SelectedList);
+      end;
+      if DelEvt then
+        frmFrame.mnuFileRefreshClick(Self);
+    end;
+  finally
+    FIterating := False;
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmMeds.mnuActHoldClick(Sender: TObject);
+{ hold the selected med orders as appropriate for each order }
+{ similar to action on fOrders}
+var
+  ActiveList: TListBox;
+  SelectedList: TList;
+begin
+  inherited;
+  ActiveList := ListSelected(TX_NOSEL);
+  if ActiveList = nil then Exit;
+  SelectedList := TList.Create;
+  if CheckMedStatus(ActiveList) = True then Exit;
+  try
+    FIterating := True;
+    if AuthorizedUser and EncounterPresent and LockedForOrdering then
+    begin
+      ValidateSelected(ActiveList, OA_HOLD, TX_NO_HOLD, TC_NO_HOLD);
+      MakeSelectedList(ActiveList, SelectedList);
+      if ExecuteHoldOrders(SelectedList) then
+      begin
+        if frmFrame.TimedOut = true then  exit;
+        AddSelectedToChanges(SelectedList);
+        ResetSelectedForList(ActiveList);
+        SynchListToOrders(ActiveList, SelectedList);
+      end;
+    end;
+  finally
+    if frmFrame.TimedOut = false then ActiveList.SetFocus;
+    FIterating := False;
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmMeds.mnuActRenewClick(Sender: TObject);
+{ renew the selected med orders as appropriate for each order }
+{ similar to action on fOrders}
+var
+  ActiveList: TListBox;
+  SelectedList: TList;
+  ParntOrder : TOrder;
+begin
+  inherited;
+  ActiveList := ListSelected(TX_NOSEL);
+  if ActiveList = nil then Exit;
+  SelectedList := TList.Create;
+  try
+    FIterating := True;
+    if CheckMedStatus(ActiveList) = True then Exit;
+    if AuthorizedUser and EncounterPresent and LockedForOrdering then
+    begin
+      ValidateSelected(ActiveList, OA_RENEW, TX_NO_RENEW, TC_NO_RENEW);
+      MakeSelectedList(ActiveList, SelectedList);
+      if Length(FParentComplexOrderID)>0 then
+      begin
+        ParntOrder := GetOrderByIFN(FParentComplexOrderID);
+        if CharAt(ParntOrder.Text,1)='+' then
+          ParntOrder.Text := Copy(ParntOrder.Text,2,Length(ParntOrder.Text));
+        if Pos('First Dose NOW',ParntOrder.Text)>1 then
+          Delete(ParntOrder.text, Pos('First Dose NOW',ParntOrder.Text), Length('First Dose NOW'));
+        SelectedList.Add(ParntOrder);
+        FParentComplexOrderID := '';
+      end;
+      if ExecuteRenewOrders(SelectedList) then
+      begin
+        if frmFrame.TimedOut = true then  exit;
+        AddSelectedToChanges(SelectedList);
+        ResetSelectedForList(ActiveList);
+        SynchListToOrders(ActiveList, SelectedList);
+      end;
+   end;
+  finally
+    if frmFrame.TimedOut = false then ActiveList.SetFocus;
+    FIterating := False;
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+procedure TfrmMeds.mnuActChangeClick(Sender: TObject);
+{ loop thru selected med orders, present ordering dialog for each with defaults to selected order }
+{ similar to action on fOrders}
+var
+  i: Integer;
+  ActiveList: TListBox;
+  SelectedList: TList;
+  ChangeIFNList: TStringList;
+  DelayEvent: TOrderDelayEvent;
+begin
+  inherited;
+  if not EncounterPresentEDO then Exit;
+  ActiveList := ListSelected(TX_NOSEL);
+  if ActiveList = nil then Exit;
+  DelayEvent.EventType := 'C';         // temporary, so can pass to ChangeOrders
+  DelayEvent.Specialty := 0;
+  DelayEvent.Effective := 0;
+  DelayEvent.EventIFN  := 0;
+  SelectedList := TList.Create;        // temporary until able to create ChangeIFNList directly
+  ChangeIFNList := TStringList.Create;
+  try
+    FIterating := true;
+    if CheckMedStatus(ActiveList) = True then Exit;
+    ValidateSelected(ActiveList, OA_CHANGE, TX_NO_CHANGE, TC_NO_CHANGE);
+    MakeSelectedList(Activelist, SelectedList);
+    with SelectedList do for i := 0 to Count - 1 do ChangeIFNList.Add(TOrder(Items[i]).ID);
+    if not ShowMsgOn(ChangeIFNList.Count = 0, TX_NOSEL, TC_NOSEL)
+      then ChangeOrders(ChangeIFNList, DelayEvent);
+    if frmFrame.TimedOut = true then  exit;
+    SynchListToOrders(ActiveList, SelectedList);    // rehighlights
+    Activelist.SetFocus;
+  finally
+    SelectedList.Free;
+    ChangeIFNList.Free;
+  end;
+end;
+
+procedure TfrmMeds.mnuActCopyClick(Sender: TObject);
+{ loop thru selected med orders, present ordering dialog for each with defaults to selected order }
+{ similar to action on fOrders}
+const
+  CP_TXT = 'copied';
+  XF_TXT = 'transfered';
+var
+  i: Integer;
+  LimitEvent: Char;
+  ActiveList: TListBox;
+  SelectedList: TList;
+  CopyIFNList: TStringList;
+  TempEvent,DelayEvent: TOrderDelayEvent;
+  ActName, radTxt,thePtEvtID, AuthErr: string;
+  IsNewEvent,needVerify,NewOrderCreated,DoesDestEvtOccur: boolean;
+
+begin
+  inherited;
+  AuthErr := '';
+  ActName := '';
+  if not EncounterPresentEDO then Exit;
+  CheckAuthForMeds(AuthErr);
+  if (Length(AuthErr)>0) then
+  begin
+    ShowMsg(AuthErr);
+    if not EncounterPresent then Exit;
+  end;
+  if not FActionOnMedsTab then
+    FActionOnMedsTab := True;
+  DelayEvent.EventType := #0;
+  DelayEvent.EventIFN  := 0;
+  DelayEvent.EventName := '';
+  DelayEvent.Specialty := 0;
+  DelayEvent.Effective := 0;
+  DelayEvent.PtEventIFN := 0;
+  DelayEvent.TheParent := TParentEvent.Create;
+  DelayEvent.IsNewEvent := False;
+  TempEvent := DelayEvent;
+  DoesDestEvtOccur := False;
+  ActiveList := ListSelected(TX_NOSEL);
+  if not assigned(ActiveList) then exit;  
+  if CheckMedStatus(ActiveList) = True then Exit;
+  if ActiveList = nil then Exit;
+  NewOrderCreated := False;
+  if frmOrders.lstSheets.ItemIndex >= 0 then
+  begin
+    frmOrders.lstSheets.ItemIndex := 0;
+    frmOrders.lstSheetsClick(Application);
+  end;
+  LimitEvent := #0;
+  if TComponent(Sender).Name = 'mnuActTransfer' then
+  begin
+    ActName := 'Transfer';
+    IsTransferAction := True;
+    radTxt := XF_TXT;
+    if ActiveList = lstMedsOut then
+    begin
+      if Patient.Inpatient then LimitEvent := 'C' else LimitEvent := 'A';
+      XferOutToInOnMeds := True;
+    end;
+    if ActiveList = lstMedsIn  then
+    begin
+      if Patient.Inpatient then LimitEvent := 'D' else
+      begin
+        LimitEvent := 'C';
+        XfInToOutNow := True;
+      end;
+      XferOutToInOnMeds := False;
+    end;
+  end else
+    radTxt := CP_TXT;
+  SelectedList := TList.Create;        // temporary until able to create CopyIFNList directly
+  CopyIFNList := TStringList.Create;
+  try
+    MakeSelectedList(Activelist, SelectedList, ActName);
+    {if (CopyIFNList.Count = 0) and (ActName = 'Transfer') then
+      Exit;}
+    with SelectedList do for i := 0 to Count - 1 do CopyIFNList.Add(TOrder(Items[i]).ID);
+    if not ShowMsgOn(CopyIFNList.Count = 0, TX_NOSEL, TC_NOSEL) then
+    begin
+      IsNewEvent := False;
+      if SetDelayEventForMed(radTxt, DelayEvent, IsNewEvent, LimitEvent) then
+      begin
+        if (ActiveList = lstMedsOut) and (DelayEvent.EventIFN > 0) then
+          XferOutToInOnMeds := True;
+        TempEvent.PtEventIFN := DelayEvent.PtEventIFN;
+        TempEvent.EventName  := DelayEvent.EventName;
+        if (DelayEvent.PtEventIFN>0) and IsCompletedPtEvt(DelayEvent.PtEventIFN) then
+        begin
+          DelayEvent.EventType := 'C';
+          DelayEvent.PtEventIFN := 0;
+          DelayEvent.EventName := '';
+          DelayEvent.EventIFN  := 0;
+          DelayEvent.TheParent := TParentEvent.Create;
+          DoesDestEvtOccur := True;
+          needVerify := false;
+          CopyOrders(CopyIFNList, DelayEvent, DoesDestEvtOccur, needVerify);
+          if XferOutToInOnMeds then
+            XferOutToInOnMeds := False;
+          if frmOrders <> nil then
+            frmOrders.PtEvtCompleted(TempEvent.PtEventIFN,TempEvent.EventName);
+          Exit;
+        end;
+        if (DelayEvent.EventIFN>0) and (DelayEvent.EventType <> 'D') then
+        begin
+          needVerify := False;
+          uAutoAC    := True;
+        end else
+        begin
+          needVerify := True;
+          uAutoAC    := False;
+        end;
+        if LimitEvent = #0 then
+        begin
+          if CopyOrders(CopyIFNList, DelayEvent, DoesDestEvtOccur, needVerify) then
+            NewOrderCreated := True;
+          if ImmdCopyAct then
+            ImmdCopyAct := False;
+        end else
+        begin
+          if TransferOrders(CopyIFNList, DelayEvent, DoesDestEvtOccur, needVerify) then
+            NewOrderCreated := True;
+        end;
+        if XferOutToInOnMeds then
+          XferOutToInOnMeds := False;
+        if (DelayEvent.EventIFN > 0) and ( isExistedEvent(Patient.DFN,IntToStr(DelayEvent.EventIFN),ThePtEvtID) ) then
+          frmOrders.HighlightFromMedsTab := StrToIntDef(ThePtEvtID,0);
+        if (not NewOrderCreated) and (DelayEvent.EventIFN>0) then
+          if isExistedEvent(Patient.DFN,IntToStr(DelayEvent.EventIFN),ThePtEvtID) then
+          begin
+            if PtEvtEmpty(ThePtEvtID) then
+            begin
+              DeletePtEvent(ThePtEvtID);
+              frmOrders.ChangesUpdate(ThePtEvtID);
+              frmOrders.EventDefaultOrder := '';
+              frmOrders.InitOrderSheetsForEvtDelay;
+              if frmOrders.lstSheets.ItemIndex <> 0 then
+                frmOrders.lstSheets.ItemIndex := 0;
+              frmOrders.lstSheetsClick(Self);
+            end;
+          end;
+      end;
+    end;
+    if frmFrame.TimedOut = true then  exit;
+    SynchListToOrders(ActiveList, SelectedList);    // rehighlights
+    if IsTransferAction then
+       IsTransferAction := False;
+    if XferOuttoInOnMeds then
+      XferOuttoInOnMeds := False;
+    if XfInToOutNow then
+      XfInToOutNow := False;
+    frmOrders.PtEvtCompleted(TempEvent.PtEventIFN,TempEvent.EventName,True);
+  finally
+    if frmFrame.TimedOut = false then  ActiveList.SetFocus;
+    FActionOnMedsTab := False;
+    uAutoAC := False;
+    SelectedList.Free;
+    CopyIFNList.Free;
+  end;
+end;
+
+procedure TfrmMeds.mnuActNewClick(Sender: TObject);
+{ new med orders dependent on order dialog for inpatient or outpatient }
+{ similar to lstWriteClick on fOrders}
+var
+  DialogInfo: string;
+  DelayEvent: TOrderDelayEvent;
+begin
+  inherited;
+  DelayEvent.EventType := 'C';         // temporary, so can pass to CopyOrders
+  DelayEvent.Specialty := 0;
+  DelayEvent.EventIFN  := 0;
+  DelayEvent.Effective := 0;
+  frmOrders.DontCheck := True;
+  frmOrders.lstSheets.ItemIndex := 0;
+  frmOrders.lstSheetsClick(self);
+  frmOrders.DontCheck := False;
+  if not ReadyForNewOrder(DelayEvent) then Exit;
+  frmOrders.DontCheck := True;
+  frmOrders.lstSheets.ItemIndex := 0;
+  frmOrders.lstSheetsClick(self);
+  frmOrders.DontCheck := False;
+  { get appropriate form, create the dialog form and show it }
+  DialogInfo := GetNewDialog;   // DialogInfo = DlgIEN;FormID;DGroup
+  case CharAt(Piece(DialogInfo, ';', 4), 1) of
+  'A':      ActivateAction(     Piece(DialogInfo, ';', 1),             Self, 0);
+  'D', 'Q': ActivateOrderDialog(Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  'M':      ActivateOrderMenu(  Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  'O':      ActivateOrderSet(   Piece(DialogInfo, ';', 1), DelayEvent, Self, 0);
+  else InfoBox('Unsupported dialog type', 'Error', MB_OK);
+  end; {case}
+end;
+
+procedure TfrmMeds.mnuActRefillClick(Sender: TObject);
+{ for selected orders, present refill dialog }
+var
+  ActiveList: TListBox;
+  SelectedList: TList;
+begin
+  inherited;
+  ActiveList := ListSelected(TX_NOSEL);
+  if ActiveList = nil then Exit;
+  SelectedList := TList.Create;
+  if CheckMedStatus(ActiveList) = True then Exit;
+  try
+    FIterating := True;
+    if AuthorizedUser and EncounterPresent and LockedForOrdering then
+    begin
+      ValidateSelected(ActiveList, OA_REFILL, TX_NO_REFILL, TC_NO_REFILL);
+      MakeSelectedList(ActiveList, SelectedList);
+      if ExecuteRefillOrders(SelectedList) then
+      begin
+        if frmFrame.TimedOut = true then  exit;
+        ResetSelectedForList(ActiveList);
+        SynchListToOrders(ActiveList, SelectedList);
+      end;
+    end;
+  finally
+    if frmFrame.TimedOut = false then ActiveList.SetFocus;
+    FIterating := False;
+    SelectedList.Free;
+    UnlockIfAble;
+  end;
+end;
+
+{ Action utilities --------------------------------------------------------------------------- }
+
+function TfrmMeds.ListSelected(const ErrMsg: string): TListBox;
+{ return selected listbox - inpatient or outpatient }
+begin
+  Result := nil;
+  if lstMedsOut.SelCount > 0 then Result := lstMedsOut
+  else if lstMedsIn.SelCount > 0 then Result := lstMedsIn
+  else if lstMedsNonVA.SelCount > 0 then Result := lstMedsNonVA;
+  if Result = nil then InfoBox(ErrMsg, TC_NOSEL, MB_OK);
+end;
+
+procedure TfrmMeds.ValidateSelected(AListBox: TListBox; const AnAction, WarningMsg, WarningTitle: string);
+{ loop to validate action on each selected med order, deselect if not valid }
+var
+  i: Integer;
+  OrderText, CurID: string;
+  ErrMsg, AParentID: string;
+  CheckedList,SomePharmacyOrders: TStringList;
+  ChildOrder: TChildOD;
+begin
+  CheckedList := TStringList.Create;
+  SomePharmacyOrders := GetPharmacyOrders(AListBox);
+  with AListBox do for i := 0 to Items.Count - 1 do if Selected[i] then
+  begin
+    if (AnAction = 'RN') and (pos('Active',AListBox.Items[i])>0) and (AListBox.name = 'lstMedsIn') and (Patient.inpatient) and (IsClinicLoc(Encounter.Location)) then
+       begin
+         Selected[i] := False;
+         MessageDlg('You cannot renew inpatient medication orders from a clinic location for selected patient.', mtWarning, [mbOK], 0);
+       end;
+    CurID := uPendingChanges.Values[Piece(Piece(SomePharmacyOrders[i], U, 2), ';', 1)];
+    if Length(CurID) > 0
+      then CurID := Piece(CurID, U, 2)
+      else CurID := Piece(SomePharmacyOrders[i], U, 2);
+    ValidateOrderAction(CurID, AnAction, ErrMsg);
+    if (Length(ErrMsg)>0) and IsFirstDoseNowOrder(CurID) then
+    begin
+      InfoBox(AListBox.Items[i] + #13+ WarningMsg + ErrMsg, WarningTitle, MB_OK);
+      Selected[i] := False;
+      Continue;
+    end;
+    AParentID := '';
+    if not IsValidActionOnComplexOrder(CurID, AnAction, AListBox, CheckedList,ErrMsg,AParentID) then
+      Selected[i] := False;
+    if Length(AParentID)>0 then
+    begin
+      if ChildODList.IndexOf(CurID)< 0 then
+      begin
+        ChildOrder := TChildOD.Create;
+        ChildOrder.ChildID := CurId;
+        ChildOrder.ParentID := AParentID;
+        ChildODList.AddObject(CurID, ChildOrder);
+      end;
+    end;
+    if Length(ErrMsg) > 0 then
+    begin
+      OrderText := TextForOrder(Piece(SomePharmacyOrders[i], U, 2));
+      InfoBox(OrderText + WarningMsg + ErrMsg, WarningTitle, MB_OK);
+      Selected[i] := False;
+    end;
+    if Selected[i] and (not OrderIsLocked(CurID, AnAction)) then Selected[i] := False;
+  end;
+end;
+
+procedure TfrmMeds.MakeSelectedList(AListBox: TListBox; AList: TList; ActName: string);
+{ make a list of selected med orders }
+var
+  i,idx: Integer;
+  AnOrder: TOrder;
+  CurID,x: string;
+  SomePharmacyOrders: TStringList;
+  TempList: TStringList;
+begin
+  SomePharmacyOrders := GetPharmacyOrders(AListBox);
+  TempList := TStringList.Create;
+  AList.Clear;
+  with AListBox do for i := 0 to Items.Count - 1 do
+    if Selected[i] then
+    begin
+      CurID := uPendingChanges.Values[Piece(Piece(SomePharmacyOrders[i], U, 2), ';', 1)];
+      if Length(CurID) > 0
+        then CurID := Piece(CurID, U, 2)
+        else CurID := Piece(SomePharmacyOrders[i], U, 2);
+      AnOrder := GetOrderByIFN(CurID);
+      if ActName = 'Transfer' then                                   //imo
+      begin
+        if (AnOrder.DGroup = ClinDisp) then                          //imo
+        begin
+          x := AnOrder.Text +  #13#10 + 'Clinic medication orders can not be transfered';
+          if ShowMsgOn(Length(x) > 0, x, 'Unable to transfer.') then
+          begin
+            AListBox.Selected[i] := False;
+            Continue;
+          end
+        end;
+      end;
+      idx := ChildODList.IndexOf(AnOrder.ID);
+      if idx > - 1 then
+        AnOrder.ParentID := TChildOD(ChildODList.Objects[idx]).ParentID;
+      if TempList.IndexOf(AnOrder.ID)= -1 then
+      begin
+        AList.Add(AnOrder);
+        TempList.Add(AnOrder.ID);
+      end;
+    end;
+  TempList.Clear;
+end;
+
+procedure TfrmMeds.SynchListToOrders(AListBox: TListBox; AList: TList);
+begin
+  AListBox.Invalidate;
+end;
+
+procedure TfrmMeds.popMedPopup(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+end;
+
+procedure TfrmMeds.mnuViewClick(Sender: TObject);
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+end;
+
+procedure TfrmMeds.lstMedsNonVAClick(Sender: TObject);
+var
+ i: integer;
+begin
+  inherited;
+  //if PatientStatusChanged then exit;
+  with lstMedsIn do for i := 0 to Items.Count -1 do
+     Selected[i] := false;
+  with lstMedsOut do for i := 0 to Items.Count -1 do
+     Selected[i] := false;
+end;
+
+procedure TfrmMeds.lstMedsNonVADblClick(Sender: TObject);
+begin
+  inherited;
+   mnuViewDetailClick(Self);
+end;
+
+procedure TfrmMeds.lstMedsNonVAExit(Sender: TObject);
+begin
+  inherited;
+   if not FIterating then ResetSelectedForList(TListBox(Sender));
+end;
+
+procedure TfrmMeds.lstMedsNonVARightClickHandler(var Msg: TMessage;
+  var Handled: Boolean);
+begin
+  if Msg.Msg = WM_RBUTTONUP then
+  begin
+    lstMedsNonVA.RightClickSelect := (lstMedsNonVA.SelCount < 1);
+    lstMedsNonVAClick(lstMedsNonVA);
+  end;
+end;
+
+procedure TfrmMeds.hdrMedsNonVASectionResize(HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  RedrawSuspend(Self.Handle);
+  with lstMedsNonVA do
+  begin
+    IntegralHeight := not IntegralHeight;  // both lines are necessary, this forces the
+    IntegralHeight := not IntegralHeight;  // listbox window to be recreated
+  end;
+  RedrawActivate(Self.Handle);
+  lstMedsNonVA.Invalidate;
+  Refresh;
+end;
+
+function FontChanged : boolean;
+//CQ9182:  SEE ALSO procedure TfrmFrame.mnuFontSizeClick()
+begin
+  Result := false;
+  if Assigned(frmMeds) then
+  begin
+     if fMeds.oldFont = 0 then Result := False
+     else
+        if (fMeds.oldFont <> MainFontSize)  then
+           Result := true;
+  end;
+end;
+
+procedure TfrmMeds.FormResize(Sender: TObject);
+var
+ maxPanelHeight: integer;
+
+begin
+  inherited;
+  if Assigned(frmMeds) then
+  begin
+    //CQ9522 v26.51 Make sure all three panels are visible regardless of font size
+    if Assigned(self.Parent) then
+     begin
+      if self.Height > parent.ClientHeight then
+         self.Height := parent.ClientHeight;
+      maxPanelHeight := round((parent.ClientHeight-20)/3);
+      if pnlTop.Height + pnlBottom.Height > parent.ClientHeight then
+        begin
+          pnlBottom.Height := maxPanelHeight*2;
+          pnlTop.Height := maxPanelHeight;
+        end;
+     end;    //assigned(self.parent)
+  end;
+end;
+
+{ TChildOD }
+
+constructor TChildOD.Create;
+begin
+  ChildID := '';
+  ParentID := '';
+end;
+
+procedure TfrmMeds.hdrMedsOutResize(Sender: TObject);
+begin
+  inherited;
+  with hdrMedsOut do
+  begin
+     Height := TextHeightByFont(Font.Handle, Sections[0].Text);
+     Invalidate;
+  end;
+end;
+
+procedure TfrmMeds.hdrMedsNonVAResize(Sender: TObject);
+begin
+  inherited;
+  with hdrMedsNonVA do
+  begin
+     Height := TextHeightByFont(Font.Handle, Sections[0].Text);
+     Invalidate;
+  end;
+end;
+
+procedure TfrmMeds.hdrMedsInResize(Sender: TObject);
+begin
+  inherited;
+  with hdrMedsIn do
+  begin
+     Height := TextHeightByFont(Font.Handle, Sections[0].Text);
+     Invalidate;
+  end;
+end;
+
+procedure TfrmMeds.FormShow(Sender: TObject);
+begin
+  inherited;
+  frmMeds.FormResize(Sender);
+end;
+
+procedure TfrmMeds.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  frmMeds.FormResize(Sender);
+end;
+
+procedure TfrmMeds.splitBottomMoved(Sender: TObject);
+begin
+  inherited;
+  splitBottom.Height := 5;
+end;
+
+procedure TfrmMeds.splitTopMoved(Sender: TObject);
+begin
+  inherited;
+   splitTop.Height := 5;
+end;
+
+procedure TfrmMeds.InitfMedsSize;
+var
+  retList : TStringList;
+  strSizeFlds,x: string;
+  i: integer;
+  medsSplitFnd : boolean;
+  panelBottom, panelMedIn : integer;
+begin
+  //CQ3229
+  //DETECT 1st TIME USER.
+  //If first time user (medSplitFound=false), then manually set panel heights.
+  //if NOT first time user (medSplitFound=true), then set Meds tab windows to saved settings.
+  medsSplitFnd := FALSE;
+  if Assigned(frmMeds) then
+     begin
+     retList := TStringList.Create;
+     tCallV(retList, 'ORWCH LOADALL', [nil]);
+
+     for i := 0 to retList.Count-1 do
+        begin
+        x := retList.strings[i];
+        if strPos(PChar(x),PChar(MEDS_SPLIT_FORM)) <> nil then
+        begin
+           medsSplitFnd := TRUE;
+           Break;
+           end;
+        end;
+
+     if not medsSplitFnd then
+        begin
+          pnlBottom.Height := frmMeds.Height div 2;
+          pnlMedIn.Height := pnlBottom.Height div 2;
+          panelBottom := pnlBottom.Height;
+          panelMedIn  := pnlMedIn.Height;
+          strSizeFlds := IntToStr(panelBottom) + ',' + IntToStr(panelMedIn) + ',' + '0' + ',' + '0';
+          CallV('ORWCH SAVESIZ', [MEDS_SPLIT_FORM, strSizeFlds]);
+        end;
+     end;
+
+end;
+
+{function TfrmMeds.PatientStatusChanged: boolean;
+const
+
+  msgTxt1 = 'Patient status was changed from ';
+  msgTxt2 = 'CPRS needs to refresh patient information to display patient latest record.';
+   //GE CQ9537  - Change message text
+  msgTxt3 = 'Patient has been admitted.';
+  msgTxt4 = CRLF +'You will be prompted to sign your orders.  Any new orders subsequently' +
+            CRLF + 'entered and signed will be directed to the inpatient staff.';
+
+var
+  PtSelect: TPtSelect;
+  IsInpatientNow: boolean;
+  ptSts: string;
+begin
+  result := False;
+  SelectPatient(Patient.DFN, PtSelect);
+  IsInpatientNow := Length(PtSelect.Location) > 0;
+   //GE CQ9537  - Change message text
+  if Patient.Inpatient <> IsInpatientNow then
+  begin
+    if (not Patient.Inpatient) then MessageDlg(msgTxt3 + msgTxt4, mtWarning, [mbOK], 0);
+    if Patient.Inpatient then ptSts := 'Inpatient to Outpatient.';
+    MessageDlg(msgTxt1 + ptSts + #13#10#13 + msgTxt2, mtWarning, [mbOK], 0);
+    frmFrame.mnuFileRefreshClick(Application);
+    Result := True;
+  end;
+end;}
+
+function TfrmMeds.GetTotalSectionsWidth(Sender: TObject) : integer;
+//CQ7586
+//Return stored values of column widths
+var
+  i: integer;
+begin
+  Result := 0;
+
+  if (Sender as THeaderControl).Name = 'hdrMedsOut' then
+     for i := 0 to hdrMedsOut.Sections.Count - 1 do
+        Result := Result + hdrMedsOut.Sections[i].Width;
+
+  if (Sender as THeaderControl).Name = 'hdrMedsIn' then
+     for i := 0 to hdrMedsIn.Sections.Count - 1 do
+        Result := Result + hdrMedsIn.Sections[i].Width;
+
+  if (Sender as THeaderControl).Name = 'hdrMedsNonVA' then
+     for i := 0 to hdrMedsNonVA.Sections.Count - 1 do
+        Result := Result + hdrMedsNonVA.Sections[i].Width;
+end;
+
+procedure TfrmMeds.SetSectionWidths(Sender: TObject);
+//CQ7586
+//Copy values of column widths into array variables.
+var
+  i: integer;
+begin
+  if (Sender as THeaderControl).Name = 'hdrMedsOut' then
+     for i := 0 to hdrMedsOut.Sections.Count - 1 do
+        OrigOutPtSecWidths[i] := hdrMedsOut.Sections[i].Width;
+
+  if (Sender as THeaderControl).Name = 'hdrMedsIn' then
+     for i := 0 to hdrMedsIn.Sections.Count - 1 do
+        OrigInPtSecWidths[i] := hdrMedsIn.Sections[i].Width;
+
+  if (Sender as THeaderControl).Name = 'hdrMedsNonVA' then
+     for i := 0 to hdrMedsNonVA.Sections.Count - 1 do
+        OrigNonVASecWidths[i] := hdrMedsNonVA.Sections[i].Width;
+end;
+
+procedure TfrmMeds.SetViewCaption(Caption: String);
+begin
+  txtView.Caption := StringReplace(Caption,'&','',[rfReplaceAll]);
+end;
+
+procedure TfrmMeds.hdrMedsOutMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  Self.SetSectionWidths(Sender); //CQ7586
+end;
+
+procedure TfrmMeds.hdrMedsNonVAMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  Self.SetSectionWidths(Sender); //CQ7586
+end;
+
+procedure TfrmMeds.hdrMedsInMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  Self.SetSectionWidths(Sender); //CQ7586
+end;
+
+procedure TfrmMeds.hdrMedsOutMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+//CQ7586
+var
+  i: integer;
+  totalSectionsWidth, originalwidth: integer;
+begin
+  inherited;
+  totalSectionsWidth := Self.GetTotalSectionsWidth(Sender);
+  if totalSectionsWidth > lstMedsOut.Width - 5 then  //could used any of the three list boxes here, since all are same width
+  begin
+    originalwidth := 0;
+    for i := 0 to hdrMedsOut.Sections.Count - 1 do
+      originalwidth := originalwidth + OrigOutPtSecWidths[i];
+    if originalwidth < totalSectionsWidth then
+    begin
+      for i := 0 to hdrMedsOut.Sections.Count - 1 do
+        hdrMedsOut.Sections[i].Width := OrigOutPtSecWidths[i];
+      lstMedsOut.Invalidate;
+    end;
+  end;
+  //CQ9622
+  if hdrMedsOut.Sections[1].Width < 100 then
+  begin
+    hdrMedsOut.Sections[1].Width := 100;
+    lstMedsOut.Refresh;
+  end;
+  //end CQ9622
+  pnlBottom.Height := pnlBottom.Height - 1;  // forces autopanel resize
+  pnlBottom.Height := pnlBottom.Height + 1;  // forces autopanel resize
+end;
+
+procedure TfrmMeds.hdrMedsNonVAMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+//CQ7586
+var
+  i: integer;
+  totalSectionsWidth, originalwidth: integer;
+begin
+  inherited;
+  totalSectionsWidth := Self.GetTotalSectionsWidth(Sender);
+  if totalSectionsWidth > lstMedsNonVA.Width - 5 then  //could used any of the three list boxes here, since all are same width
+  begin
+    originalwidth := 0;
+    for i := 0 to hdrMedsNonVA.Sections.Count - 1 do
+      originalwidth := originalwidth + OrigNonVASecWidths[i];
+    if originalwidth < totalSectionsWidth then
+    begin
+      for i := 0 to hdrMedsNonVA.Sections.Count - 1 do
+        hdrMedsNonVA.Sections[i].Width := OrigNonVASecWidths[i];
+      lstMedsNonVA.Invalidate;
+    end;
+  end;
+  //CQ9622
+  if hdrMedsNonVA.Sections[1].Width < 100 then
+  begin
+    hdrMedsNonVA.Sections[1].Width := 100;
+    lstMedsNonVA.Refresh;
+  end;
+  //end CQ9622
+  pnlNonVA.Height := pnlNonVA.Height - 1;  // forces autopanel resize
+  pnlNonVA.Height := pnlNonVA.Height + 1;  // forces autopanel resize
+end;
+
+procedure TfrmMeds.hdrMedsInMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+//CQ7586
+var
+  i: integer;
+  totalSectionsWidth, originalwidth: integer;
+begin
+  inherited;
+  totalSectionsWidth := Self.GetTotalSectionsWidth(Sender);
+  if totalSectionsWidth > lstMedsIn.Width - 5 then  //could used any of the three list boxes here, since all are same width
+  begin
+    originalwidth := 0;
+    for i := 0 to hdrMedsIn.Sections.Count - 1 do
+      originalwidth := originalwidth + OrigInPtSecWidths[i];
+    if originalwidth < totalSectionsWidth then
+    begin
+      for i := 0 to hdrMedsIn.Sections.Count - 1 do
+        hdrMedsIn.Sections[i].Width := OrigInPtSecWidths[i];
+      lstMedsIn.Invalidate;
+    end;
+  end;
+  //CQ9622
+  if hdrMedsIn.Sections[1].Width < 100 then
+  begin
+    hdrMedsIn.Sections[1].Width := 100;
+    lstMedsIn.Refresh;
+  end;
+  //end CQ9622
+  pnlBottom.Height := pnlBottom.Height - 1;  // forces autopanel resize
+  pnlBottom.Height := pnlBottom.Height + 1;  // forces autopanel resize
+end;
+
+procedure TfrmMeds.ClearChildODList;
+var
+  i: integer;
+begin
+  for i := 0 to ChildODList.count-1 do
+    if(assigned(ChildODList.Objects[i])) then
+      ChildODList.Objects[i].Free;
+  ChildODList.Clear;
+end;
+
+function TfrmMeds.CheckMedStatus(ActiveList: TListBox): boolean;
+var
+i: integer;
+tmpList: TStringList;
+Str: string;
+AMed: TMedListRec;
+AMedList: TList;
+
+begin
+ result := False;
+ tmpList:= TStringList.Create;
+ if TMedListRec = nil then exit;
+ AMedList := GetMedList(ActiveList);
+ for i := 0 to ActiveList.Count - 1 do if ActiveList.Selected[i] then
+    begin
+       AMed := TMedListRec(AMedList[i]);
+       str := Amed.PharmID + U + AMed.Status;
+       tmpList.Add(Str);
+      end;
+ if tmpList <> nil then
+   begin
+     Result := GetMedStatus(tmpList);
+     tmpList.Free;
+   end;
+ if Result = True then
+     begin
+       MessageDlg('The Medication status has change.' + #13#10#13 + 'CPRS needs to refresh patient information to display the correct medication status', mtWarning, [mbOK], 0);
+       frmFrame.mnuFileRefreshClick(Application);
+     end;
+end;
+
+procedure TfrmMeds.ActivateDeactiveRenew(AListBox: TListBox);
+var
+  i: Integer;
+  CurID: string;
+  SomePharmacyOrders: TStringList;
+  tmpArr: TStringList;
+begin
+    tmpArr := TStringList.Create;
+    SomePharmacyOrders := GetPharmacyOrders(AListBox);
+    with AListBox do for i := 0 to Items.Count - 1 do if Selected[i] then
+      begin
+        CurID := uPendingChanges.Values[Piece(Piece(SomePharmacyOrders[i], U, 2), ';', 1)];
+        if Length(CurID) > 0 then CurID := Piece(CurID, U, 2)
+        else CurID := Piece(SomePharmacyOrders[i], U, 2);
+        tmpArr.Add(curID);
+      end;
+    if tmpArr <> nil then frmActivateDeactive.fActivateDeactive(tmpArr, AListBox);
+end;
+
+procedure TfrmMeds.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmMeds.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+procedure TfrmMeds.mnuOptimizeFieldsClick(Sender: TObject);
+var
+  totalSectionsWidth, unit1, unit2, unit8: integer;
+begin
+  totalSectionsWidth := pnlTop.Width - 5;
+  if totalSectionsWidth < 16 then exit;
+  unit1 := (totalSectionsWidth div 16) - 1;
+  unit2 := unit1 * 2;
+  unit8 := unit1 * 8;
+
+  with hdrMedsNonVA do
+  begin
+    Sections[0].Width := unit1;
+    Sections[1].Width := unit8;
+    Sections[2].Width := unit2;
+    Sections[3].Width := unit2;
+  end;
+  hdrMedsNonVASectionResize(hdrMedsNonVA, hdrMedsNonVA.Sections[0]);
+  hdrMedsNonVA.Repaint;
+
+  with hdrMedsIn do
+  begin
+    Sections[0].Width := unit1;
+    Sections[1].Width := unit8;
+    Sections[2].Width := unit2;
+    Sections[3].Width := unit2;
+    Sections[4].Width := unit2;
+  end;
+  hdrMedsInSectionResize(hdrMedsIn, hdrMedsIn.Sections[0]);
+  hdrMedsIn.Repaint;
+  with hdrMedsOut do
+  begin
+    Sections[0].Width := unit1;
+    Sections[1].Width := unit8;
+    Sections[2].Width := unit2;
+    Sections[3].Width := unit2;
+    Sections[4].Width := unit2;
+    Sections[5].Width := unit1;
+  end;
+  hdrMedsOutSectionResize(hdrMedsOut, hdrMedsOut.Sections[0]);
+  hdrMedsOut.Repaint;
+end;
+
+procedure TfrmMeds.hdrMedsOutSectionClick(HeaderControl: THeaderControl;
+  Section: THeaderSection);
+begin
+  inherited;
+  //if Section = hdrMedsOut.Sections[1] then
+    mnuOptimizeFieldsClick(self);
+end;
+
+procedure TfrmMeds.hdrMedsNonVASectionClick(HeaderControl: THeaderControl;
+  Section: THeaderSection);
+begin
+  inherited;
+  //if Section = hdrMedsNonVA.Sections[1] then
+    mnuOptimizeFieldsClick(self);
+end;
+
+procedure TfrmMeds.hdrMedsInSectionClick(HeaderControl: THeaderControl;
+  Section: THeaderSection);
+begin
+  inherited;
+  //if Section = hdrMedsIn.Sections[1] then
+    mnuOptimizeFieldsClick(self);
+end;
+
+procedure TfrmMeds.SortbyStatusthenLocation1Click(Sender: TObject);
+begin
+  inherited;
+  self.FSortView := 1;
+  self.SortbyStatusthenLocation1.Checked := True;
+  SetViewCaption(SortbyStatusthenLocation1.Caption);
+  self.SortbyClinicOrderthenStatusthenStopDate1.Checked := False;
+  self.SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Checked := false;
+  self.RefreshMedLists;
+end;
+
+procedure TfrmMeds.SortbyClinicOrderthenStatusthenStopDate1Click(
+  Sender: TObject);
+begin
+  inherited;
+  self.FSortView := 2;
+  self.SortbyStatusthenLocation1.Checked := False;
+  self.SortbyClinicOrderthenStatusthenStopDate1.Checked := True;
+  SetViewCaption(SortbyClinicOrderthenStatusthenStopDate1.Caption);
+  self.SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Checked := false;
+  self.RefreshMedLists;
+end;
+
+procedure TfrmMeds.SortbyDrugalphabeticallystatusactivestatusrecentexpired1Click(
+  Sender: TObject);
+begin
+  inherited;
+  self.FSortView := 3;
+  self.SortbyStatusthenLocation1.Checked := False;
+  self.SortbyClinicOrderthenStatusthenStopDate1.Checked := false;
+  self.SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Checked := true;
+  SetViewCaption(SortbyDrugalphabeticallystatusactivestatusrecentexpired1.Caption);
+  self.RefreshMedLists;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmMeds);
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBA.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBA.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBA.dfm	(revision 1676)
@@ -0,0 +1,106 @@
+inherited frmNotesByAuthor: TfrmNotesByAuthor
+  Left = 473
+  Top = 272
+  BorderIcons = []
+  Caption = 'List Signed Notes by Author'
+  ClientHeight = 205
+  ClientWidth = 308
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 316
+  ExplicitHeight = 232
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 308
+    Height = 205
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblAuthor: TLabel
+      Left = 8
+      Top = 8
+      Width = 31
+      Height = 13
+      Caption = 'Author'
+    end
+    object radSort: TRadioGroup
+      Left = 8
+      Top = 148
+      Width = 212
+      Height = 49
+      Caption = 'Sort Order'
+      Items.Strings = (
+        '&Ascending (oldest first)'
+        '&Descending (newest first)')
+      TabOrder = 1
+    end
+    object cboAuthor: TORComboBox
+      Left = 8
+      Top = 22
+      Width = 212
+      Height = 118
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Author'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnNeedData = cboAuthorNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdOK: TButton
+      Left = 228
+      Top = 22
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 228
+      Top = 49
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = cboAuthor'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmNotesByAuthor'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBA.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBA.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBA.pas	(revision 1676)
@@ -0,0 +1,119 @@
+unit fNoteBA;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, StdCtrls, ORFn, uTIU, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmNotesByAuthor = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblAuthor: TLabel;
+    radSort: TRadioGroup;
+    cboAuthor: TORComboBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cboAuthorNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FAuthor: Int64;
+    FAuthorName: string;
+    FAscending: Boolean;
+  end;
+
+  TAuthorContext = record
+    Changed: Boolean;
+    Author: Int64;
+    AuthorName: string;
+    Ascending: Boolean;
+  end;
+
+procedure SelectAuthor(FontSize: Integer; CurrentContext: TTIUContext; var AuthorContext: TAuthorContext);
+
+implementation
+
+{$R *.DFM}
+
+uses rTIU, rCore, uCore;
+
+const
+  TX_AUTH_TEXT = 'Select a progress note author or press Cancel.';
+  TX_AUTH_CAP = 'Missing Author';
+
+procedure SelectAuthor(FontSize: Integer; CurrentContext: TTIUContext; var AuthorContext: TAuthorContext);
+{ displays author select form for progress notes and returns a record of the selection }
+var
+  frmNotesByAuthor: TfrmNotesByAuthor;
+  W, H: integer;
+  CurrentAuthor: Int64;
+begin
+  frmNotesByAuthor := TfrmNotesByAuthor.Create(Application);
+  try
+    with frmNotesByAuthor do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := W;
+      FChanged := False;
+      CurrentAuthor := CurrentContext.Author;
+      with cboAuthor do
+        if CurrentAuthor > 0 then
+          begin
+            InitLongList(ExternalName(CurrentAuthor, 200));
+            SelectByIEN(CurrentAuthor);
+          end
+        else
+          begin
+            InitLongList(User.Name);
+            SelectByIEN(User.DUZ);
+          end;
+      FAscending := CurrentContext.TreeAscending;
+      with radSort do if FAscending then ItemIndex := 0 else ItemIndex := 1;
+      ShowModal;
+      with AuthorContext do
+      begin
+        Changed := FChanged;
+        Author := FAuthor;
+        AuthorName := FAuthorName;
+        Ascending := FAscending;
+      end; {with AuthorContext}
+    end; {with frmNotesByAuthor}
+  finally
+    frmNotesByAuthor.Release;
+  end;
+end;
+
+procedure TfrmNotesByAuthor.cboAuthorNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  cboAuthor.ForDataUse(SubSetOfActiveAndInactivePersons(StartFrom, Direction));
+end;
+
+procedure TfrmNotesByAuthor.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmNotesByAuthor.cmdOKClick(Sender: TObject);
+begin
+  if cboAuthor.ItemIEN = 0 then
+  begin
+    InfoBox(TX_AUTH_TEXT, TX_AUTH_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  FChanged := True;
+  FAuthor := cboAuthor.ItemIEN;
+  FAuthorName := cboAuthor.DisplayText[cboAuthor.ItemIndex];
+  FAscending := radSort.ItemIndex = 0;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBD.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBD.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBD.dfm	(revision 1676)
@@ -0,0 +1,114 @@
+inherited frmNotesByDate: TfrmNotesByDate
+  Left = 590
+  Top = 294
+  BorderIcons = []
+  Caption = 'List Signed Notes by Date Range'
+  ClientHeight = 151
+  ClientWidth = 251
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 259
+  ExplicitHeight = 178
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 251
+    Height = 151
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblBeginDate: TLabel
+      Left = 8
+      Top = 8
+      Width = 73
+      Height = 13
+      Caption = 'Beginning Date'
+    end
+    object lblEndDate: TLabel
+      Left = 8
+      Top = 51
+      Width = 59
+      Height = 13
+      Caption = 'Ending Date'
+    end
+    object calBeginDate: TORDateBox
+      Left = 8
+      Top = 22
+      Width = 155
+      Height = 21
+      TabOrder = 0
+      OnKeyPress = calBeginDateKeyPress
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Beginning Date'
+    end
+    object calEndDate: TORDateBox
+      Left = 8
+      Top = 65
+      Width = 155
+      Height = 21
+      TabOrder = 1
+      OnKeyPress = calEndDateKeyPress
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Ending Date'
+    end
+    object radSort: TRadioGroup
+      Left = 8
+      Top = 94
+      Width = 155
+      Height = 49
+      Caption = 'Sort Order'
+      Items.Strings = (
+        '&Ascending (oldest first)'
+        '&Descending (newest first)')
+      TabOrder = 2
+    end
+    object cmdOK: TButton
+      Left = 171
+      Top = 22
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 3
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 171
+      Top = 49
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 4
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = calBeginDate'
+        'Status = stsDefault')
+      (
+        'Component = calEndDate'
+        'Status = stsDefault')
+      (
+        'Component = radSort'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmNotesByDate'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBD.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBD.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteBD.pas	(revision 1676)
@@ -0,0 +1,140 @@
+unit fNoteBD;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
+  StdCtrls, ExtCtrls, ORCtrls, ORDtTm, uTIU, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmNotesByDate = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblBeginDate: TLabel;
+    calBeginDate: TORDateBox;
+    lblEndDate: TLabel;
+    calEndDate: TORDateBox;
+    radSort: TRadioGroup;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure calBeginDateKeyPress(Sender: TObject; var Key: Char);
+    procedure calEndDateKeyPress(Sender: TObject; var Key: Char);
+  private
+    FChanged: Boolean;
+    FBeginDate: string;
+    FFMBeginDate: TFMDateTime;
+    FEndDate: string;
+    FFMEndDate: TFMDateTime;
+    FAscending: Boolean;
+  end;
+
+  TNoteDateRange = record
+    Changed: Boolean;
+    BeginDate: string;
+    FMBeginDate: TFMDateTime;
+    EndDate: string;
+    FMEndDate: TFMDateTime;
+    Ascending: Boolean;
+  end;
+
+procedure SelectNoteDateRange(FontSize: Integer; CurrentContext: TTIUContext; var NoteDateRange: TNoteDateRange);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rTIU;
+
+const
+  TX_DATE_ERR = 'Enter valid beginning and ending dates or press Cancel.';
+  TX_DATE_ERR_CAP = 'Error in Date Range';
+
+procedure SelectNoteDateRange(FontSize: Integer; CurrentContext: TTIUContext; var NoteDateRange: TNoteDateRange);
+{ displays date range select form for progress notes and returns a record of the selection }
+var
+  frmNotesByDate: TfrmNotesByDate;
+  W, H: Integer;
+begin
+  frmNotesByDate := TfrmNotesByDate.Create(Application);
+  try
+    with frmNotesByDate do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := W;
+      FChanged := False;
+      calBeginDate.Text := CurrentContext.BeginDate;
+      calEndDate.Text   := CurrentContext.EndDate;
+      if calEndDate.Text = '' then calEndDate.Text := 'TODAY';
+      FAscending := CurrentContext.TreeAscending;
+      with radSort do if FAscending then ItemIndex := 0 else ItemIndex := 1;
+      ShowModal;
+      with NoteDateRange do
+      begin
+        Changed := FChanged;
+        BeginDate := FBeginDate;
+        FMBeginDate := FFMBeginDate;
+        EndDate := FEndDate;
+        FMEndDate := FFMEndDate;
+        Ascending := FAscending;
+      end; {with NoteDateRange}
+    end; {with frmNotesByDate}
+  finally
+    frmNotesByDate.Release;
+  end;
+end;
+
+procedure TfrmNotesByDate.cmdOKClick(Sender: TObject);
+var
+  bdate, edate: TFMDateTime;
+begin
+  if calBeginDate.Text <> '' then
+     bdate := StrToFMDateTime(calBeginDate.Text)
+  else
+     bdate := 0 ;
+
+  if calEndDate.Text <> '' then
+     edate   := StrToFMDateTime(calEndDate.Text)
+  else
+     edate := 0 ;
+
+  if (bdate <= edate) then
+    begin
+      FChanged := True;
+      FBeginDate := calBeginDate.Text;
+      FFMBeginDate := bdate;
+      FEndDate := calEndDate.Text;
+      FFMEndDate := edate;
+      FAscending := radSort.ItemIndex = 0;
+    end
+  else
+    begin
+      InfoBox(TX_DATE_ERR, TX_DATE_ERR_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  Close;
+end;
+
+procedure TfrmNotesByDate.cmdCancelClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmNotesByDate.calBeginDateKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if (Key = #13) then cmdOKClick(Self);
+end;
+
+procedure TfrmNotesByDate.calEndDateKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if (Key = #13) then cmdOKClick(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCPFields.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCPFields.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCPFields.dfm	(revision 1676)
@@ -0,0 +1,158 @@
+inherited frmNoteCPFields: TfrmNoteCPFields
+  Left = 508
+  Top = 307
+  Caption = 'Enter Required Fields'
+  ClientHeight = 151
+  ClientWidth = 249
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 257
+  ExplicitHeight = 178
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblAuthor: TLabel [0]
+    Left = 7
+    Top = 5
+    Width = 94
+    Height = 13
+    AutoSize = False
+    Caption = 'Author:'
+  end
+  object lblProcSummCode: TOROffsetLabel [1]
+    Left = 4
+    Top = 50
+    Width = 125
+    Height = 15
+    Caption = 'Procedure Summary Code'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblProcDateTime: TOROffsetLabel [2]
+    Left = 4
+    Top = 96
+    Width = 105
+    Height = 15
+    Caption = 'Procedure Date/Time'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object cboAuthor: TORComboBox [3]
+    Left = 4
+    Top = 17
+    Width = 239
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Author'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2,3'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnNeedData = cboAuthorNeedData
+    CharsNeedMatch = 1
+  end
+  object cboProcSummCode: TORComboBox [4]
+    Left = 4
+    Top = 66
+    Width = 142
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Procedure Summary Code'
+    Color = clWindow
+    DropDownCount = 8
+    Items.Strings = (
+      '1^Normal'
+      '2^Abnormal'
+      '3^Borderline'
+      '4^Incomplete')
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 1
+    CharsNeedMatch = 1
+  end
+  object calProcDateTime: TORDateBox [5]
+    Left = 4
+    Top = 112
+    Width = 142
+    Height = 21
+    TabOrder = 2
+    DateOnly = False
+    RequireTime = True
+    Caption = 'Procedure Date/Time'
+  end
+  object cmdOK: TButton [6]
+    Left = 166
+    Top = 78
+    Width = 72
+    Height = 21
+    Hint = 
+      'Save these items, and continue to enter text interpretation of r' +
+      'esults.'
+    Caption = 'Save'
+    Default = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 3
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [7]
+    Left = 166
+    Top = 105
+    Width = 72
+    Height = 21
+    Hint = 
+      'Enter text interpretation of results now, and enter these items ' +
+      'later.'
+    Cancel = True
+    Caption = 'Enter Later'
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 4
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboAuthor'
+        'Status = stsDefault')
+      (
+        'Component = cboProcSummCode'
+        'Status = stsDefault')
+      (
+        'Component = calProcDateTime'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmNoteCPFields'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCPFields.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCPFields.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCPFields.pas	(revision 1676)
@@ -0,0 +1,141 @@
+unit fNoteCPFields;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORCtrls, ORFn, ORDtTm, VA508AccessibilityManager;
+
+type
+  TfrmNoteCPFields = class(TfrmAutoSz)
+    lblAuthor: TLabel;
+    cboAuthor: TORComboBox;
+    lblProcSummCode: TOROffsetLabel;
+    cboProcSummCode: TORComboBox;
+    lblProcDateTime: TOROffsetLabel;
+    calProcDateTime: TORDateBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cboAuthorNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+  private
+    FAuthor: int64;
+    FProcSummCode: integer;
+    FProcDateTime: TFMDateTime;
+    FCPStatusFlag: integer;
+    FOKPressed: Boolean;
+    procedure ValidateFields(var ErrMsg: string);
+  end;
+
+const
+  TC_REQ_FIELDS        = 'Required Information';
+  TX_REQ_AUTHOR        = CRLF + 'The author of the note must be identified.';
+  TX_NO_FUTURE         = CRLF + 'A reference date/time in the future is not allowed.';
+  TX_REQ_PROCSUMMCODE  = CRLF + 'A procedure summary code for this procedure must be entered.';
+  TX_REQ_PROCDATETIME  = CRLF + 'A valid date/time for the procedure must be entered.';
+  TX_INVALID_PROCDATETIME = CRLF + 'If entered, the date/time for the procedure must be in a valid format.';
+  TX_NO_PROC_FUTURE    = CRLF + 'A procedure date/time in the future is not allowed.';
+  TX_REQ_CANCEL        = 'You will be required to enter these fields before the note can be saved or signed.' + CRLF +
+                         'Click the "Change" button to enter this information at any time while editing.';
+
+procedure EnterClinProcFields(ACPStatusFlag: integer; ErrMsg: string; var AProcSummCode: integer; var AProcDate: TFMDateTime; var AnAuthor: int64);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uConst, uConsults, uCore;
+
+procedure EnterClinProcFields(ACPStatusFlag: integer; ErrMsg: string; var AProcSummCode: integer; var AProcDate: TFMDateTime; var AnAuthor: int64);
+var
+  frmNoteCPFields: TfrmNoteCPFields;
+begin
+  frmNoteCPFields := TfrmNoteCPFields.Create(Application);
+  with frmNoteCPFields do
+    try
+      ResizeFormToFont(TForm(frmNoteCPFields));
+      FCPStatusFlag := ACPStatusFlag;
+      FProcSummCode := AProcSummCode;
+      FProcDateTime := AProcDate;
+      cboProcSummCode.SelectByIEN(AProcSummCode);
+      calProcDateTime.FMDateTime := AProcDate;
+      ShowModal;
+      if FOKPressed then
+      begin
+        AnAuthor := FAuthor;
+        AProcSummCode := FProcSummCode;
+        AProcDate := FProcDateTime;
+      end;
+    finally
+      Release;
+    end;
+end;
+
+procedure TfrmNoteCPFields.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FOKPressed := False;
+  cboAuthor.InitLongList(User.Name);
+  cboAuthor.SelectByIEN(User.DUZ);
+end;
+
+procedure TfrmNoteCPFields.cmdOKClick(Sender: TObject);
+var
+  ErrMsg: string;
+begin
+  inherited;
+  ValidateFields(ErrMsg);
+  if ShowMsgOn(Length(ErrMsg) > 0, ErrMsg, TC_REQ_FIELDS)
+    then Exit
+    else
+      begin
+        FOKPressed := True;
+        ModalResult := mrOK;
+      end;
+end;
+
+procedure TfrmNoteCPFields.ValidateFields(var ErrMsg: string);
+begin
+  if cboAuthor.ItemIEN = 0   then ErrMsg := ErrMsg + TX_REQ_AUTHOR else FAuthor := cboAuthor.ItemIEN;
+  if (FCPStatusFlag = CP_INSTR_INCOMPLETE) then
+    begin
+      if cboProcSummCode.ItemIEN = 0 then ErrMsg := ErrMsg + TX_REQ_PROCSUMMCODE
+        else FProcSummCode := cboProcSummCode.ItemIEN;
+      if not calProcDateTime.IsValid then ErrMsg := ErrMsg + TX_REQ_PROCDATETIME
+       else if calProcDateTime.IsValid and (calProcDateTime.FMDateTime > FMNow) then ErrMsg := ErrMsg + TX_NO_PROC_FUTURE
+       else FProcDateTime := calProcDateTime.FMDateTime;
+    end
+  else
+    begin
+      FProcSummCode := cboProcSummCode.ItemIEN;
+      if (calProcDateTime.FMDateTime > 0) then
+        begin
+          if (not calProcDateTime.IsValid) then ErrMsg := ErrMsg + TX_INVALID_PROCDATETIME
+           else if calProcDateTime.IsValid and (calProcDateTime.FMDateTime > FMNow) then ErrMsg := ErrMsg + TX_NO_PROC_FUTURE
+           else FProcDateTime := calProcDateTime.FMDateTime;
+        end;
+    end;
+end;
+
+procedure TfrmNoteCPFields.cmdCancelClick(Sender: TObject);
+var
+  ErrMsg: string;
+begin
+  inherited;
+  ValidateFields(ErrMsg);
+  if ErrMsg <> '' then
+    InfoBox(TX_REQ_CANCEL, TC_REQ_FIELDS, MB_OK or MB_ICONWARNING);
+  FOKPressed := False;
+  Close;
+end;
+
+procedure TfrmNoteCPFields.cboAuthorNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCslt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCslt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCslt.dfm	(revision 1676)
@@ -0,0 +1,132 @@
+inherited frmNoteConsult: TfrmNoteConsult
+  Left = 162
+  Top = 178
+  Caption = 'Consult Request Selection'
+  ClientWidth = 547
+  Position = poScreenCenter
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label3: TLabel [0]
+    Left = 8
+    Top = 44
+    Width = 104
+    Height = 13
+    Caption = 'Consult Request Date'
+  end
+  object Label4: TLabel [1]
+    Left = 136
+    Top = 44
+    Width = 36
+    Height = 13
+    Caption = 'Service'
+  end
+  object Label5: TLabel [2]
+    Left = 268
+    Top = 46
+    Width = 49
+    Height = 13
+    Caption = 'Procedure'
+  end
+  object Label6: TLabel [3]
+    Left = 423
+    Top = 45
+    Width = 30
+    Height = 13
+    Caption = 'Status'
+  end
+  object Label7: TLabel [4]
+    Left = 488
+    Top = 44
+    Width = 38
+    Height = 13
+    Caption = '# Notes'
+  end
+  object Label1: TStaticText [5]
+    Left = 8
+    Top = 8
+    Width = 313
+    Height = 17
+    Caption = 
+      'This progress note title must be associated with a consult reque' +
+      'st.'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+  end
+  object Label2: TStaticText [6]
+    Left = 8
+    Top = 22
+    Width = 335
+    Height = 17
+    Caption = 
+      'Select one of the following or press cancel and choose a differe' +
+      'nt title.'
+    TabOrder = 4
+  end
+  object lstRequests: TORListBox [7]
+    Left = 8
+    Top = 58
+    Width = 531
+    Height = 171
+    ItemHeight = 13
+    Items.Strings = (
+      'a^b^c^d^e^f')
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    OnClick = lstRequestsClick
+    Caption = 'Associated Consult Request'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2,3,4,5,6'
+    TabPositions = '21,43,69,83'
+  end
+  object cmdOK: TButton [8]
+    Left = 378
+    Top = 242
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    Enabled = False
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [9]
+    Left = 466
+    Top = 242
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Label1'
+        'Status = stsDefault')
+      (
+        'Component = Label2'
+        'Status = stsDefault')
+      (
+        'Component = lstRequests'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmNoteConsult'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCslt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCslt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteCslt.pas	(revision 1676)
@@ -0,0 +1,88 @@
+unit fNoteCslt;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORCtrls, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmNoteConsult = class(TfrmAutoSz)
+    Label1: TStaticText;
+    Label2: TStaticText;
+    lstRequests: TORListBox;
+    Label3: TLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    Label6: TLabel;
+    Label7: TLabel;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure lstRequestsClick(Sender: TObject);
+  private
+    { Private declarations }
+    FSelectedRequest: Integer;
+  public
+    { Public declarations }
+  end;
+
+function SelectConsult: Integer;
+
+implementation
+
+{$R *.DFM}
+
+uses rTIU;
+
+const
+  TX_NO_REQUEST = 'There are no consult requests available for this patient.' + CRLF +
+                   'Another progress note title must be selected.';
+  TX_NO_REQUEST_CAP = 'No Consult Requests';
+
+function SelectConsult: Integer;
+var
+  frmNoteConsult: TfrmNoteConsult;
+  AConsultList: TStringList;
+begin
+  Result := 0;
+  frmNoteConsult := TfrmNoteConsult.Create(Application);
+  AConsultList := TStringList.Create;
+  try
+    ListConsultRequests(AConsultList);
+    if AConsultList.Count > 0 then
+    begin
+      ResizeFormToFont(TForm(frmNoteConsult));
+      FastAssign(AConsultList, frmNoteConsult.lstRequests.Items);
+      frmNoteConsult.ShowModal;
+      Result := frmNoteConsult.FSelectedRequest;
+    end
+    else InfoBox(TX_NO_REQUEST, TX_NO_REQUEST_CAP, MB_OK);
+  finally
+    frmNoteConsult.Release;
+    AConsultList.Free;
+  end;
+end;
+
+procedure TfrmNoteConsult.lstRequestsClick(Sender: TObject);
+begin
+  inherited;
+  if lstRequests.ItemIEN > 0 then cmdOK.Enabled := True else cmdOK.Enabled := False;
+end;
+
+procedure TfrmNoteConsult.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  FSelectedRequest := lstRequests.ItemIEN;
+  Close;
+end;
+
+procedure TfrmNoteConsult.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FSelectedRequest := 0;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteDR.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteDR.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteDR.dfm	(revision 1676)
@@ -0,0 +1,80 @@
+inherited frmNoteDelReason: TfrmNoteDelReason
+  Left = 354
+  Top = 218
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Reason for Deletion'
+  ClientHeight = 122
+  ClientWidth = 246
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblInstruction: TStaticText [0]
+    Left = 12
+    Top = 12
+    Width = 226
+    Height = 17
+    Caption = 'Select the reason for deletion of this document.'
+    TabOrder = 4
+  end
+  object cmdOK: TButton [1]
+    Left = 42
+    Top = 89
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 3
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [2]
+    Left = 132
+    Top = 89
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 0
+    OnClick = cmdCancelClick
+  end
+  object radPrivacy: TRadioButton [3]
+    Left = 20
+    Top = 37
+    Width = 77
+    Height = 17
+    Caption = '&Privacy Act'
+    TabOrder = 1
+    TabStop = True
+  end
+  object radAdmin: TRadioButton [4]
+    Left = 20
+    Top = 60
+    Width = 129
+    Height = 17
+    Caption = '&Administrative Action'
+    TabOrder = 2
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblInstruction'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = radPrivacy'
+        'Status = stsDefault')
+      (
+        'Component = radAdmin'
+        'Status = stsDefault')
+      (
+        'Component = frmNoteDelReason'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteDR.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteDR.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteDR.pas	(revision 1676)
@@ -0,0 +1,83 @@
+unit fNoteDR;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, VA508AccessibilityManager;
+
+type
+  TfrmNoteDelReason = class(TfrmAutoSz)
+    lblInstruction: TStaticText;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    radPrivacy: TRadioButton;
+    radAdmin: TRadioButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function SelectDeleteReason(ANote: Integer): string;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rTIU, uConst;
+
+const
+  TX_REQRSN = 'A reason must be selected, otherwise press cancel.';
+  TC_REQRSN = 'Reason Required';
+
+function SelectDeleteReason(ANote: Integer): string;
+var
+  frmNoteDelReason: TfrmNoteDelReason;
+begin
+  if not JustifyDocumentDelete(ANote) then
+  begin
+    Result := DR_NOTREQ;
+    Exit;
+  end;
+  Result := DR_CANCEL;
+  frmNoteDelReason := TfrmNoteDelReason.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmNoteDelReason));
+    frmNoteDelReason.ShowModal;
+    with frmNoteDelReason do if OKPressed then
+    begin
+      if radPrivacy.Checked then Result := DR_PRIVACY;
+      if radAdmin.Checked then Result := DR_ADMIN;
+    end;
+  finally
+    frmNoteDelReason.Release;
+  end;
+end;
+
+procedure TfrmNoteDelReason.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmNoteDelReason.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  if not (radPrivacy.Checked or radAdmin.Checked) then
+  begin
+    InfoBox(TX_REQRSN, TC_REQRSN, MB_OK);
+    Exit;
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmNoteDelReason.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteIDParents.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteIDParents.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteIDParents.dfm	(revision 1676)
@@ -0,0 +1,70 @@
+inherited frmNoteIDParents: TfrmNoteIDParents
+  Left = 387
+  Top = 203
+  Caption = 'Attach to Interdisciplinary Note'
+  ClientHeight = 338
+  ClientWidth = 446
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 454
+  ExplicitHeight = 365
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSelectParent: TLabel [0]
+    Left = 5
+    Top = 12
+    Width = 123
+    Height = 13
+    Caption = 'Select a note to attach to:'
+  end
+  object cmdOK: TButton [1]
+    Left = 147
+    Top = 306
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [2]
+    Left = 237
+    Top = 306
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object lstIDParents: TORListBox [3]
+    Left = 5
+    Top = 31
+    Width = 434
+    Height = 267
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    TabWidth = 8
+    Caption = 'Select a note to attach to:'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    TabPositions = '30'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstIDParents'
+        'Status = stsDefault')
+      (
+        'Component = frmNoteIDParents'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteIDParents.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteIDParents.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteIDParents.pas	(revision 1676)
@@ -0,0 +1,97 @@
+unit fNoteIDParents;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORCtrls, ComCtrls, StdCtrls, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmNoteIDParents = class(TfrmAutoSz)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lstIDParents: TORListBox;
+    lblSelectParent: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+  private
+    FParentNode: string;
+  public
+    { Public declarations }
+  end;
+
+function SelectParentNodeFromList(ATree: TORTreeView): string;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  uTIU, rTIU, uConst;
+
+function SelectParentNodeFromList(ATree: TORTreeView): string;
+var
+  frmNoteIDParents: TfrmNoteIDParents;
+  i, AnImg: integer;
+  x: string;
+  tmpList: TStringList;
+begin
+  frmNoteIDParents := TfrmNoteIDParents.Create(Application);
+  tmpList := TStringList.Create;
+  try
+    ResizeFormToFont(TForm(frmNoteIDParents));
+    for i := 0 to ATree.Items.Count - 1 do
+      begin
+        AnImg := TORTreeNode(ATree.Items.Item[i]).ImageIndex;
+        if AnImg in [IMG_SINGLE, IMG_PARENT,IMG_IDNOTE_SHUT, IMG_IDNOTE_OPEN,
+                         IMG_IDPAR_ADDENDA_SHUT, IMG_IDPAR_ADDENDA_OPEN] then
+          begin
+            x := TORTreeNode(ATree.Items.Item[i]).Stringdata;
+            tmpList.Add(Piece(x, U, 1) + U + MakeNoteDisplayText(x) + U + Piece(x, U, 3));
+          end;
+      end;
+    SortByPiece(tmpList, U, 3);
+    InvertStringList(tmpList);
+    FastAssign(tmpList, frmNoteIDParents.lstIDParents.Items);
+    frmNoteIDParents.ShowModal;
+    Result := frmNoteIDParents.FParentNode;
+  finally
+    tmpList.Free;
+    frmNoteIDParents.Release;
+  end;
+end;
+
+procedure TfrmNoteIDParents.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FParentNode := '';
+end;
+
+procedure TfrmNoteIDParents.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FParentNode := '';
+  Close;
+end;
+
+procedure TfrmNoteIDParents.cmdOKClick(Sender: TObject);
+const
+  TX_ATTACH_FAILURE = 'Attachment failed';
+var
+  WhyNot, ErrMsg: string;
+begin
+  inherited;
+  ErrMsg := '';
+  if not CanReceiveAttachment(lstIDParents.ItemID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot;
+  if ErrMsg <> '' then
+    begin
+      InfoBox(ErrMsg, TX_ATTACH_FAILURE, MB_OK);
+      Exit;
+    end;
+  FParentNode := lstIDParents.ItemID;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteProps.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteProps.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteProps.dfm	(revision 1676)
@@ -0,0 +1,564 @@
+inherited frmNoteProperties: TfrmNoteProperties
+  Left = 384
+  Top = 56
+  BorderIcons = []
+  Caption = 'Progress Note Properties'
+  ClientHeight = 676
+  ClientWidth = 543
+  Constraints.MinWidth = 551
+  Position = poScreenCenter
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitLeft = 384
+  ExplicitTop = 56
+  ExplicitWidth = 551
+  ExplicitHeight = 710
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblNewTitle: TLabel [0]
+    Left = 7
+    Top = 14
+    Width = 93
+    Height = 13
+    Alignment = taRightJustify
+    Caption = 'Progress Note Title:'
+  end
+  object lblDateTime: TLabel [1]
+    Left = 6
+    Top = 138
+    Width = 94
+    Height = 13
+    Alignment = taRightJustify
+    AutoSize = False
+    Caption = 'Date/Time of Note:'
+  end
+  object lblAuthor: TLabel [2]
+    Left = 6
+    Top = 165
+    Width = 94
+    Height = 13
+    Alignment = taRightJustify
+    AutoSize = False
+    Caption = 'Author:'
+  end
+  object lblCosigner: TLabel [3]
+    Left = 6
+    Top = 192
+    Width = 94
+    Height = 13
+    Alignment = taRightJustify
+    AutoSize = False
+    Caption = 'Expected Cosigner:'
+  end
+  object lblProcSummCode: TOROffsetLabel [4]
+    Left = 371
+    Top = 135
+    Width = 125
+    Height = 15
+    Caption = 'Procedure Summary Code'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object lblProcDateTime: TOROffsetLabel [5]
+    Left = 371
+    Top = 174
+    Width = 105
+    Height = 15
+    Caption = 'Procedure Date/Time'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object cboNewTitle: TORComboBox [6]
+    Left = 104
+    Top = 11
+    Width = 347
+    Height = 118
+    Style = orcsSimple
+    AutoSelect = True
+    Caption = 'Progress Note Title'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = True
+    LongList = True
+    LookupPiece = 0
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnDblClick = cboNewTitleDblClick
+    OnDropDownClose = cboNewTitleDropDownClose
+    OnEnter = cboNewTitleEnter
+    OnExit = cboNewTitleExit
+    OnMouseClick = cboNewTitleMouseClick
+    OnNeedData = cboNewTitleNeedData
+    CharsNeedMatch = 1
+  end
+  object calNote: TORDateBox [7]
+    Left = 104
+    Top = 135
+    Width = 140
+    Height = 21
+    TabOrder = 1
+    OnEnter = calNoteEnter
+    DateOnly = False
+    RequireTime = True
+    Caption = 'Date/Time of Note:'
+  end
+  object cboAuthor: TORComboBox [8]
+    Left = 104
+    Top = 162
+    Width = 239
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Author'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2,3'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 2
+    OnEnter = cboAuthorEnter
+    OnExit = cboAuthorExit
+    OnMouseClick = cboAuthorMouseClick
+    OnNeedData = NewPersonNeedData
+    CharsNeedMatch = 1
+  end
+  object cboCosigner: TORComboBox [9]
+    Left = 104
+    Top = 189
+    Width = 239
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Expected Cosigner:'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = True
+    LookupPiece = 2
+    MaxLength = 0
+    ParentShowHint = False
+    Pieces = '2,3'
+    ShowHint = True
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 3
+    OnExit = cboCosignerExit
+    OnNeedData = cboCosignerNeedData
+    CharsNeedMatch = 1
+  end
+  object cmdOK: TButton [10]
+    Left = 465
+    Top = 11
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 9
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [11]
+    Left = 465
+    Top = 38
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 10
+    OnClick = cmdCancelClick
+  end
+  object cboProcSummCode: TORComboBox [12]
+    Left = 371
+    Top = 150
+    Width = 142
+    Height = 21
+    Style = orcsDropDown
+    AutoSelect = True
+    Caption = 'Procedure Summary Code'
+    Color = clWindow
+    DropDownCount = 8
+    Items.Strings = (
+      '1^Normal'
+      '2^Abnormal'
+      '3^Borderline'
+      '4^Incomplete')
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = False
+    SynonymChars = '<>'
+    TabOrder = 4
+    CharsNeedMatch = 1
+  end
+  object calProcDateTime: TORDateBox [13]
+    Left = 371
+    Top = 189
+    Width = 142
+    Height = 21
+    TabOrder = 5
+    OnEnter = calNoteEnter
+    DateOnly = False
+    RequireTime = True
+    Caption = 'Procedure Date/Time'
+  end
+  object pnlSurgery: TORAutoPanel [14]
+    Tag = 2
+    Left = 0
+    Top = 217
+    Width = 543
+    Height = 153
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 6
+    Visible = False
+    object lblSurgDate: TLabel
+      Tag = 2
+      Left = 2
+      Top = 40
+      Width = 62
+      Height = 13
+      Caption = 'Surgery Date'
+    end
+    object lblSurgProc: TLabel
+      Tag = 2
+      Left = 98
+      Top = 40
+      Width = 49
+      Height = 13
+      Caption = 'Procedure'
+    end
+    object lblSurgeon: TLabel
+      Tag = 2
+      Left = 362
+      Top = 40
+      Width = 40
+      Height = 13
+      Caption = 'Surgeon'
+    end
+    object bvlSurgery: TBevel
+      Tag = 2
+      Left = 1
+      Top = 2
+      Width = 531
+      Height = 2
+    end
+    object lblSurgery1: TStaticText
+      Tag = 2
+      Left = 103
+      Top = 8
+      Width = 284
+      Height = 17
+      Caption = 'This document title must be associated with a surgery case.'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 1
+    end
+    object lblSurgery2: TStaticText
+      Tag = 2
+      Left = 93
+      Top = 22
+      Width = 335
+      Height = 17
+      Caption = 
+        'Select one of the following or press cancel and choose a differe' +
+        'nt title.'
+      TabOrder = 2
+    end
+    object lstSurgery: TORListBox
+      Tag = 2
+      Left = 0
+      Top = 52
+      Width = 543
+      Height = 101
+      Align = alBottom
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Associated Surgery Case'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '3,2,4'
+      TabPositions = '16,60,85'
+    end
+  end
+  object pnlConsults: TORAutoPanel [15]
+    Tag = 1
+    Left = 0
+    Top = 370
+    Width = 543
+    Height = 153
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 7
+    Visible = False
+    object lblConsult1: TLabel
+      Tag = 1
+      Left = 3
+      Top = 8
+      Width = 309
+      Height = 13
+      Caption = 
+        'This progress note title must be associated with a consult reque' +
+        'st.'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object lblConsult2: TLabel
+      Tag = 1
+      Left = 3
+      Top = 22
+      Width = 247
+      Height = 13
+      Caption = 'Select one of the following or choose a different title.'
+    end
+    object lblCsltDate: TLabel
+      Tag = 1
+      Left = 2
+      Top = 40
+      Width = 104
+      Height = 13
+      Caption = 'Consult Request Date'
+    end
+    object lblCsltServ: TLabel
+      Tag = 1
+      Left = 128
+      Top = 40
+      Width = 36
+      Height = 13
+      Caption = 'Service'
+    end
+    object lblCsltProc: TLabel
+      Tag = 1
+      Left = 261
+      Top = 40
+      Width = 49
+      Height = 13
+      Caption = 'Procedure'
+    end
+    object lblCsltStat: TLabel
+      Tag = 1
+      Left = 416
+      Top = 40
+      Width = 30
+      Height = 13
+      Caption = 'Status'
+    end
+    object lblCsltNotes: TLabel
+      Tag = 1
+      Left = 482
+      Top = 40
+      Width = 38
+      Height = 13
+      Caption = '# Notes'
+    end
+    object bvlConsult: TBevel
+      Tag = 1
+      Left = 1
+      Top = 2
+      Width = 531
+      Height = 2
+    end
+    object lstRequests: TORListBox
+      Tag = 1
+      Left = 0
+      Top = 52
+      Width = 543
+      Height = 101
+      Align = alBottom
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Associated Consult Request'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2,3,4,5,6'
+      TabPositions = '21,43,69,83'
+      OnChange = lstRequestsChange
+    end
+    object btnShowList: TButton
+      Left = 335
+      Top = 13
+      Width = 100
+      Height = 21
+      Caption = 'Show Unresolved'
+      TabOrder = 1
+      OnClick = btnShowListClick
+    end
+    object btnDetails: TButton
+      Left = 450
+      Top = 13
+      Width = 75
+      Height = 21
+      Caption = 'Show Details'
+      TabOrder = 2
+      OnClick = btnDetailsClick
+    end
+  end
+  object pnlPRF: TORAutoPanel [16]
+    Tag = 3
+    Left = 0
+    Top = 523
+    Width = 543
+    Height = 153
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 8
+    Visible = False
+    object lblPRF: TLabel
+      Tag = 1
+      Left = 2
+      Top = 16
+      Width = 304
+      Height = 13
+      Caption = 'Which Patient Record Flag Action should this Note be linked to?'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object Bevel1: TBevel
+      Tag = 1
+      Left = 1
+      Top = 2
+      Width = 531
+      Height = 2
+    end
+    object lvPRF: TCaptionListView
+      Left = 0
+      Top = 32
+      Width = 543
+      Height = 121
+      Align = alBottom
+      Columns = <
+        item
+          Caption = 'Used For Screen Readers'
+          Width = 1
+        end
+        item
+          AutoSize = True
+          Caption = 'Flag'
+        end
+        item
+          AutoSize = True
+          Caption = 'Date'
+        end
+        item
+          AutoSize = True
+          Caption = 'Action'
+        end
+        item
+          AutoSize = True
+          Caption = 'Note'
+        end>
+      Constraints.MinHeight = 50
+      HideSelection = False
+      ReadOnly = True
+      RowSelect = True
+      TabOrder = 0
+      ViewStyle = vsReport
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cboNewTitle'
+        'Status = stsDefault')
+      (
+        'Component = calNote'
+        'Label = lblDateTime'
+        'Status = stsOK')
+      (
+        'Component = cboAuthor'
+        'Status = stsDefault')
+      (
+        'Component = cboCosigner'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboProcSummCode'
+        'Status = stsDefault')
+      (
+        'Component = calProcDateTime'
+        'Property = Caption'
+        'Status = stsOK')
+      (
+        'Component = pnlSurgery'
+        'Status = stsDefault')
+      (
+        'Component = lblSurgery1'
+        'Status = stsDefault')
+      (
+        'Component = lblSurgery2'
+        'Status = stsDefault')
+      (
+        'Component = lstSurgery'
+        'Status = stsDefault')
+      (
+        'Component = pnlConsults'
+        'Status = stsDefault')
+      (
+        'Component = lstRequests'
+        'Status = stsDefault')
+      (
+        'Component = btnShowList'
+        'Status = stsDefault')
+      (
+        'Component = btnDetails'
+        'Status = stsDefault')
+      (
+        'Component = pnlPRF'
+        'Status = stsDefault')
+      (
+        'Component = lvPRF'
+        'Status = stsDefault')
+      (
+        'Component = frmNoteProperties'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteProps.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteProps.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteProps.pas	(revision 1676)
@@ -0,0 +1,930 @@
+unit fNoteProps;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORDtTm, ORCtrls, ExtCtrls, rTIU, uConst, uTIU, ORFn, ORNet,
+  ComCtrls, Buttons, fBase508Form, VA508AccessibilityManager;
+
+type
+  {This object holds a List of Actions as Returned VIA the RPCBroker}
+  TPRFActions = class(TObject)
+  private
+    FPRFActionList : TStringList;
+  public
+    //procedure to show the Action in a ListView, requires a listview parameter
+    procedure ShowActionsOnList(DisplayList : TCaptionListView);
+    //procedure to load the actions, this will call the RPC
+    procedure Load(TitleIEN : Int64; DFN : String);
+    //returns true if the Action at the Index passed is associated with a note
+    function SelActionHasNote(lstIndex : integer) : boolean;
+    //return the Action IEN at the Index passed
+    function GetActionIEN(lstIndex : integer) : String;
+    //return the PRF IEN at the Index passed
+    function GetPRF_IEN(lstIndex : integer) : integer;
+    constructor Create();
+    destructor Destroy(); override;
+  end;
+
+  TfrmNoteProperties = class(TfrmBase508Form)
+    lblNewTitle: TLabel;
+    cboNewTitle: TORComboBox;
+    lblDateTime: TLabel;
+    calNote: TORDateBox;
+    lblAuthor: TLabel;
+    cboAuthor: TORComboBox;
+    lblCosigner: TLabel;
+    cboCosigner: TORComboBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pnlConsults: TORAutoPanel;
+    lblConsult1: TLabel;
+    lblConsult2: TLabel;
+    lblCsltDate: TLabel;
+    lblCsltServ: TLabel;
+    lblCsltProc: TLabel;
+    lblCsltStat: TLabel;
+    lblCsltNotes: TLabel;
+    lstRequests: TORListBox;
+    bvlConsult: TBevel;
+    pnlSurgery: TORAutoPanel;
+    lblSurgery1: TStaticText;
+    lblSurgery2: TStaticText;
+    lblSurgDate: TLabel;
+    lblSurgProc: TLabel;
+    lblSurgeon: TLabel;
+    lstSurgery: TORListBox;
+    bvlSurgery: TBevel;
+    cboProcSummCode: TORComboBox;
+    lblProcSummCode: TOROffsetLabel;
+    calProcDateTime: TORDateBox;
+    lblProcDateTime: TOROffsetLabel;
+    btnShowList: TButton;
+    pnlPRF: TORAutoPanel;
+    lblPRF: TLabel;
+    Bevel1: TBevel;
+    lvPRF: TCaptionListView;
+    btnDetails: TButton;
+    procedure FormShow(Sender: TObject);
+    procedure cboNewTitleNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure NewPersonNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboNewTitleExit(Sender: TObject);
+    procedure cboNewTitleMouseClick(Sender: TObject);
+    procedure cboNewTitleEnter(Sender: TObject);
+    procedure cboCosignerExit(Sender: TObject);
+    procedure cboAuthorExit(Sender: TObject);
+    procedure cboAuthorMouseClick(Sender: TObject);
+    procedure cboAuthorEnter(Sender: TObject);
+    procedure cboNewTitleDropDownClose(Sender: TObject);
+    procedure cboNewTitleDblClick(Sender: TObject);
+    procedure cboCosignerNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure btnShowListClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure calNoteEnter(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure btnDetailsClick(Sender: TObject);
+    procedure lstRequestsChange(Sender: TObject);
+  private
+    FIsNewNote : Boolean;     // Is set at the begining of the function: ExecuteNoteProperties
+    FCosignIEN: Int64;      // store cosigner that was passed in
+    FCosignName: string;    // store cosigner that was passed in
+    FDocType: Integer;      // store document type that was passed in
+    FAddend: Integer;       // store IEN of note being addended (if make addendum)
+    FLastAuthor: Int64;     // set by mouseclick to avoid redundant call on exit
+    FLastTitle: Integer;    // set by mouseclick to avoid redundant call on exit
+    //FFixCursor: Boolean;    // to fix the problem where the list box is an I-bar
+    FLastCosigner: Int64;      // holds cosigner from previous note (for defaulting)
+    FLastCosignerName: string; // holds cosigner from previous note (for defaulting)
+    FCallingTab: integer;
+    FIDNoteTitlesOnly: boolean;
+    FToday: string;
+    FClassName: string;
+    FIsClinProcNote: boolean;
+    FProcSummCode: integer;
+    FProcDateTime: TFMDateTime;
+    FCPStatusFlag: integer;
+    FPRFActions : TPRFActions;
+    FStarting: boolean;
+    procedure SetCosignerRequired(DoSetup: boolean);
+    procedure FormatRequestList;
+    procedure ShowRequestList(ShouldShow: Boolean);
+    procedure ShowSurgCaseList(ShouldShow: Boolean);
+    procedure ShowPRFList(ShouldShow: Boolean);
+    procedure ShowClinProcFields(YesNo: boolean);
+    procedure SetGenericFormSize;
+    procedure UMDelayEvent(var Message: TMessage); message UM_DELAYEVENT;
+  public
+    { Public declarations }
+
+  end;
+
+
+function ExecuteNoteProperties(var ANote: TEditNoteRec; CallingTab: integer; IDNoteTitlesOnly,
+          IsNewIDEntry: boolean; AClassName: string; CPStatusFlag: integer): Boolean;
+
+const
+
+ TX_USER_INACTIVE     = 'This entry can be selected, however their system account has been' +CRLF +
+                        ' temporarily inactivated and that person should be contacted to resolve the issue.';
+
+ TC_INACTIVE_USER     = 'Inactive User Alert';
+
+ PIXEL_SPACE = 6;
+
+implementation
+
+{$R *.DFM}
+
+uses uCore, rCore, rConsults, uConsults, rSurgery, fRptBox;
+
+{ Initial values in ANote
+
+                  Title  Type    Author  DateTime  Cosigner  Location  Consult  NeedCPT
+     New Note      dflt     3      DUZ      NOW      dflt      Encnt      0        ?
+     New DCSumm    dflt   244      DUZ      NOW      dflt      Encnt      0        ?
+    Edit Note      ien      3      ien     DtTm       ien       ien      ien      fld
+    Edit DCSumm    ien    244      ien     DtTm       ien       ien      ien      fld
+  Addend Note      ien     81      DUZ      NOW        0        N/A      N/A?      no
+  Addend DCSumm    ien     81      DUZ      NOW        0        N/A      N/A?      no
+
+  New Note - setup as much as possible, then call ExecuteNoteProperties if necessary.
+
+}
+
+const
+  TX_CP_CAPTION        = 'Clinical Procedure Document Properties';
+  TX_CP_TITLE          = 'Document Title:';
+  TX_SR_CAPTION        = 'Surgical Report Properties';
+  TX_SR_TITLE          = 'Report Title:';
+  TC_REQ_FIELDS        = 'Required Information';
+  TX_REQ_TITLE         = CRLF + 'A title must be selected.';
+  TX_REQ_AUTHOR        = CRLF + 'The author of the note must be identified.';
+  TX_REQ_REFDATE       = CRLF + 'A valid date/time for the note must be entered.';
+  TX_REQ_COSIGNER      = CRLF + 'A cosigner must be identified.';
+  TX_REQ_REQUEST       = CRLF + 'This title requires the selection of an associated consult request.';
+  TX_REQ_SURGCASE      = CRLF + 'This title requires the selection of an associated surgery case.';
+  TX_REQ_PRF_ACTION    = CRLF + 'Notes of this title require the selection of a patient record flag action.';
+  TX_REQ_PRF_NOTE      = CRLF + 'This action has already been assigned to another note.';
+  TX_NO_FUTURE         = CRLF + 'A reference date/time in the future is not allowed.';
+  TX_COS_SELF          = CRLF + 'You cannot make yourself a cosigner.';
+  TX_COS_AUTH          = CRLF + ' is not authorized to cosign this document.';
+  TX_REQ_PROCSUMMCODE  = CRLF + 'A procedure summary code for this procedure must be entered.';
+  TX_REQ_PROCDATETIME  = CRLF + 'A valid date/time for the procedure must be entered.';
+  TX_INVALID_PROCDATETIME = CRLF + 'If entered, the date/time for the procedure must be in a valid format.';
+  TX_NO_PROC_FUTURE    = CRLF + 'A procedure date/time in the future is not allowed.';
+  TX_NO_TITLE_CHANGE   = 'Interdisciplinary entries may not have their titles changed.';
+  TC_NO_TITLE_CHANGE   = 'Title Change Not Allowed';
+  TX_NO_NEW_SURGERY    = 'New surgery reports can only be entered via the Surgery package.';
+  TC_NO_NEW_SURGERY    = 'Choose another title';
+  TX_UNRESOLVED_CONSULTS = 'You currently have consults awaiting resolution for this patient.' + CRLF +
+                           'Would you like to see a list of these consults?';
+  TX_ONE_NOTE_PER_VISIT1  = 'There is already a ';
+  TX_ONE_NOTE_PER_VISIT2  = CRLF + 'Only ONE record of this type per Visit is allowed...'+
+                            CRLF + CRLF + 'You can addend the existing record.';
+
+
+  ACTIVE_STATUS = 'ACTIVE,PENDING,SCHEDULED';
+
+  PRF_LABEL = 'Which Patient Record Flag Action should this Note be linked to?';
+
+  FLAG_NAME = 1;
+  PRF_IEN = 2;
+  ACTION_NAME = 3;
+  ACTION_IEN = 4;
+  ACTION_DATE_I = 5;
+  ACTION_DATE = 6;
+  NOTE_IEN = 7;
+
+
+var
+  uConsultsList: TStringList;
+  uShowUnresolvedOnly: boolean;
+
+function ExecuteNoteProperties(var ANote: TEditNoteRec; CallingTab: integer; IDNoteTitlesOnly,
+          IsNewIDEntry: boolean; AClassName: string; CPStatusFlag: integer): Boolean;
+var
+  frmNoteProperties: TfrmNoteProperties;
+begin
+  frmNoteProperties := TfrmNoteProperties.Create(Application);
+  frmNoteProperties.FIsNewNote := ANote.IsNewNote;
+  uConsultsList := TStringList.Create;
+  try
+    ResizeAnchoredFormToFont(frmNoteProperties);
+    with frmNoteProperties do
+    begin
+      // setup common fields (title, reference date, author)
+      FToday := FloatToStr(FMToday);
+      FCallingTab := CallingTab;
+      FIDNoteTitlesOnly := IDNoteTitlesOnly;
+      FClassName := AClassName;
+      FIsClinProcNote := (AClassName = DCL_CLINPROC);
+      FCPStatusFlag := CPStatusFlag;
+      //uShowUnresolvedOnly := False;                      //v26.5 (RV)
+      uShowUnresolvedOnly := True;                         //v26.5 (RV)
+      if ANote.DocType <> TYP_ADDENDUM then
+        begin
+          case FCallingTab of
+            CT_CONSULTS:  begin
+                            Caption := 'Consult Note Properties';
+                            cboNewTitle.InitLongList('');
+                            if FIsClinProcNote then
+                              begin
+                                Caption := TX_CP_CAPTION;
+                                lblNewTitle.Caption := TX_CP_TITLE;
+                                ListClinProcTitlesShort(cboNewTitle.Items);
+                                cboAuthor.InitLongList(User.Name);
+                                cboAuthor.SelectByIEN(User.DUZ);
+                                cboProcSummCode.SelectByIEN(ANote.ClinProcSummCode);
+                                calProcDateTime.FMDateTime := ANote.ClinProcDateTime;
+                              end
+                            else   // not CP note
+                              begin
+                                ListConsultTitlesShort(cboNewTitle.Items);
+                                cboAuthor.InitLongList(ANote.AuthorName);
+                                if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
+                              end;
+                          end ;
+           CT_SURGERY:    begin
+                            Caption := TX_SR_CAPTION;
+                            lblNewTitle.Caption := TX_SR_TITLE;
+                            cboNewTitle.InitLongList('');
+                            cboAuthor.InitLongList(ANote.AuthorName);
+                            if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
+                            ListSurgeryTitlesShort(cboNewTitle.Items, FClassName);
+                          end;
+           CT_NOTES:      begin
+                            Caption := 'Progress Note Properties';
+                            if ANote.IsNewNote then
+                            begin
+                              GetUnresolvedConsultsInfo; // v26.5 (RV) removed nag screen
+                            end;
+                            cboNewTitle.InitLongList('');
+                            cboAuthor.InitLongList(ANote.AuthorName);
+                            if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
+                            ListNoteTitlesShort(cboNewTitle.Items);
+                            // HOW TO PREVENT TITLE CHANGE ON ID CHILD, BUT NOT ON INITIAL CREATE?????
+                            cboNewTitle.Enabled := not ((ANote.IDParent > 0) and (ANote.Title > 0) and (not IsNewIDEntry));
+                            if not cboNewTitle.Enabled then
+                              begin
+                                cboNewTitle.Color := clBtnFace;
+                                InfoBox(TX_NO_TITLE_CHANGE, TC_NO_TITLE_CHANGE, MB_OK);
+                              end;
+                          end;
+            end;
+        end
+      else //if addendum
+        begin
+          Caption := 'Addendum Properties';
+          cboNewTitle.Items.Insert(0, IntToStr(ANote.Title) + U + ANote.TitleName);
+          cboAuthor.InitLongList(ANote.AuthorName);
+          if ANote.Author > 0 then cboAuthor.SelectByIEN(ANote.Author);
+        end;
+      ShowClinProcFields(FIsClinProcNote);
+      FStarting := True;
+      if ANote.Title > 0 then cboNewTitle.SelectByIEN(ANote.Title);
+      if (ANote.Title > 0) and (cboNewTitle.ItemIndex < 0)
+        then cboNewTitle.SetExactByIEN(ANote.Title, ANote.TitleName);
+      FStarting := False;
+      calNote.FMDateTime := ANote.DateTime;
+      // setup cosigner fields
+      FAddend           := ANote.Addend;
+      FCosignIEN        := ANote.Cosigner;
+      FCosignName       := ANote.CosignerName;
+      FDocType          := ANote.DocType;
+      FLastCosigner     := ANote.LastCosigner;
+      FLastCosignerName := ANote.LastCosignerName;
+      SetCosignerRequired(True);
+      // setup package fields
+      SetGenericFormSize;
+      case FCallingTab of
+        CT_CONSULTS:  begin
+                        ShowRequestList(False);
+                        ShowSurgCaseList(False);
+                        ShowPRFList(False);
+                      end;
+        CT_SURGERY :  begin
+                        ShowRequestList(False);
+                        ShowSurgCaseList(False);
+                        ShowPRFList(False);
+                      end;
+        CT_NOTES   :  begin
+                        with uUnresolvedConsults do                          // v26.5 (RV)
+                          ShowRequestList(IsConsultTitle(ANote.Title) or
+                            (UnresolvedConsultsExist and ShowNagScreen));    // v26.5 (RV)
+                        ShowSurgCaseList(IsSurgeryTitle(ANote.Title));
+                        ShowPRFList(IsPRFTitle(ANote.Title));
+                      end;
+      end;
+      // restrict edit of title if addendum
+      if FDocType = TYP_ADDENDUM then
+      begin
+        lblNewTitle.Caption := 'Addendum to:';
+        cboNewTitle.Enabled := False;
+        cboNewTitle.Color   := clBtnFace;
+      end;
+      cboNewTitle.Caption := lblNewTitle.Caption;
+      FStarting := True;
+      cboNewTitleExit(frmNoteProperties);        // force display of request/case list
+      FStarting := False;
+      if uShowUnresolvedOnly then                // override previous display if SHOW ME clicked on entrance
+      begin
+        //cboNewTitle.ItemIndex := -1;      CQ#7587, v26.25 - RV
+        uShowUnresolvedOnly := not uShowUnresolvedOnly;
+        FormatRequestList;
+      end ;
+      Result := ShowModal = idOK;                // display the form
+      if Result then with ANote do
+      begin
+        if FDocType <> TYP_ADDENDUM then
+        begin
+          Title := cboNewTitle.ItemIEN;
+          TitleName := PrintNameForTitle(Title);
+        end;
+        IsNewNote := False;
+        DateTime := calNote.FMDateTime;
+        Author := cboAuthor.ItemIEN;
+        AuthorName := Piece(cboAuthor.Items[cboAuthor.ItemIndex], U, 2);
+        if cboCosigner.Visible then
+        begin
+          Cosigner := cboCosigner.ItemIEN;
+          CosignerName := Piece(cboCosigner.Items[cboCosigner.ItemIndex], U, 2);
+          // The LastCosigner fields are used to default the cosigner in subsequent notes.
+          // These fields are not reset with new notes & not passed into TIU.
+          LastCosigner := Cosigner;
+          LastCosignerName := CosignerName;
+        end else
+        begin
+          Cosigner := 0;
+          CosignerName := '';
+        end;
+        if FIsClinProcNote then
+          begin
+            ClinProcSummCode := FProcSummCode;
+            ClinProcDateTime := FProcDateTime;
+            if Location <= 0 then
+              begin
+                Location := Encounter.Location;
+                LocationName := Encounter.LocationName;
+              end;
+            if VisitDate <= 0 then VisitDate := Encounter.DateTime;
+          end;
+        case FCallingTab of
+          CT_CONSULTS:  ;// no action required
+          CT_SURGERY :  ;// no action required
+                        (*begin
+                          PkgIEN := lstSurgery.ItemIEN;
+                          PkgPtr := PKG_SURGERY;
+                          PkgRef := IntToStr(PkgIEN) + ';' + PkgPtr;
+                        end;*)
+          CT_NOTES   :  begin
+                          if pnlConsults.Visible then
+                            begin
+                              PkgIEN := lstRequests.ItemIEN;
+                              PkgPtr := PKG_CONSULTS;
+                              PkgRef := IntToStr(PkgIEN) + ';' + PkgPtr;
+                            end
+                          else if pnlSurgery.Visible then
+                            begin
+                              PkgIEN := lstSurgery.ItemIEN;
+                              PkgPtr := PKG_SURGERY;
+                              PkgRef := IntToStr(PkgIEN) + ';' + PkgPtr;
+                            end
+                          else if (pnlPRF.Visible) and (lvPRF.ItemIndex >= 0) then //PRF
+                            begin
+                              PRF_IEN := FPRFActions.GetPRF_IEN(lvPRF.ItemIndex);
+                              ActionIEN := FPRFActions.GetActionIEN(lvPRF.ItemIndex);
+                            end
+                          else
+                            begin
+                              PkgIEN := 0;
+                              PkgPtr := '';
+                              PkgRef := '';
+                            end;
+                        end;
+        end;
+      end;
+    end;
+  finally
+    if Assigned(uConsultsList) then uConsultsList.Free;
+    frmNoteProperties.Free;
+  end;
+end;
+
+{ Form events }
+
+procedure TfrmNoteProperties.FormShow(Sender: TObject);
+begin
+  //if cboNewTitle.Text = '' then PostMessage(Handle, UM_DELAYEVENT, 0, 0);
+end;
+
+procedure TfrmNoteProperties.UMDelayEvent(var Message: TMessage);
+{ let the window finish displaying before dropping list box, otherwise listbox drop
+  in the design position rather then new windows position (ORCtrls bug?) }
+begin
+//  Screen.Cursor := crArrow;
+//  FFixCursor := TRUE;
+//  cboNewTitle.DroppedDown := True;
+//  lblDateTime.Visible := False;
+//  lblAuthor.Visible   := False;
+//  lblCosigner.Visible := False;
+end;
+
+{ General calls }
+
+procedure TfrmNoteProperties.SetCosignerRequired(DoSetup: boolean);
+{ called initially & whenever title or author changes }
+begin
+  if FDocType = TYP_ADDENDUM then
+  begin
+    lblCosigner.Visible := AskCosignerForDocument(FAddend, cboAuthor.ItemIEN, calNote.FMDateTime)
+  end else
+  begin
+    if cboNewTitle.ItemIEN = 0
+      then lblCosigner.Visible := AskCosignerForTitle(FDocType,            cboAuthor.ItemIEN, calNote.FMDateTime)
+      else lblCosigner.Visible := AskCosignerForTitle(cboNewTitle.ItemIEN, cboAuthor.ItemIEN, calNote.FMDateTime);
+  end;
+  cboCosigner.Visible := lblCosigner.Visible;
+  if DoSetup then
+    begin
+      if lblCosigner.Visible then
+      begin
+        if FCosignIEN = 0 then
+        begin
+          FCosignIEN  := FLastCosigner;
+          FCosignName := FLastCosignerName;
+        end;
+        if FCosignIEN = 0 then DefaultCosigner(FCosignIEN, FCosignName);
+        cboCosigner.InitLongList(FCosignName);
+        if FCosignIEN > 0 then cboCosigner.SelectByIEN(FCosignIEN);
+      end
+      else   // if lblCosigner not visible, clear values  {v19.10 - RV}
+      begin
+        FCosignIEN  := 0;
+        FCosignName := '';
+        cboCosigner.ItemIndex := -1;
+      end;
+    end;
+end;
+
+procedure TfrmNoteProperties.ShowRequestList(ShouldShow: Boolean);
+{ called initially & whenever title changes }
+const
+  ALL_CONSULTS        = 'The following consults are currently available for selection:';
+  UNRESOLVED_CONSULTS = 'The following consults are currently awaiting resolution:';
+var
+  i: Integer;
+  SavedIEN: integer;
+begin
+  ShouldShow := ShouldShow and (FCallingTab = CT_NOTES);
+  if FDocType = TYP_ADDENDUM then ShouldShow := False;
+  pnlConsults.Visible := ShouldShow;
+  if ShouldShow then
+  begin
+    SavedIEN := lstRequests.ItemIEN;
+    ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE + pnlConsults.Height;
+    lstRequests.Items.Clear;
+    if uConsultsList.Count = 0 then ListConsultRequests(uConsultsList);
+    if uShowUnresolvedOnly then
+    begin
+      for i := 0 to uConsultsList.Count - 1 do
+        if Pos(Piece(uConsultsList[i], U, 5), ACTIVE_STATUS) > 0 then
+          lstRequests.Items.Add(uConsultsList[i]);
+      lblConsult2.Caption := UNRESOLVED_CONSULTS;
+    end
+    else
+    begin
+      lblConsult2.Caption := ALL_CONSULTS;
+      FastAssign(uConsultsList, lstRequests.Items);
+    end;
+    lblConsult1.Visible := (cboNewTitle.ItemIndex > -1);
+    lstRequests.SelectByIEN(SavedIEN);
+    btnDetails.Enabled := (lstRequests.ItemIndex > -1);
+  end
+end;
+
+procedure TfrmNoteProperties.ShowSurgCaseList(ShouldShow: Boolean);
+{ called initially & whenever title changes }
+begin
+  pnlSurgery.Visible := ShouldShow;
+  if FDocType = TYP_ADDENDUM then ShouldShow := False;
+  if ShouldShow then
+  begin
+    ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE + pnlSurgery.Height;
+    if lstSurgery.Items.Count = 0 then ListSurgeryCases(lstSurgery.Items);
+  end
+end;
+
+{ cboNewTitle events }
+
+procedure TfrmNoteProperties.cboNewTitleNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  case FCallingTab of
+    CT_CONSULTS:  begin
+                    if FIsClinProcNote then
+                      cboNewTitle.ForDataUse(SubSetOfClinProcTitles(StartFrom, Direction, FIDNoteTitlesOnly))
+                    else
+                      cboNewTitle.ForDataUse(SubSetOfConsultTitles(StartFrom, Direction, FIDNoteTitlesOnly));
+                  end;
+    CT_SURGERY:   cboNewTitle.ForDataUse(SubSetOfSurgeryTitles(StartFrom, Direction, FClassName));
+    CT_NOTES:     cboNewTitle.ForDataUse(SubSetOfNoteTitles(StartFrom, Direction, FIDNoteTitlesOnly));
+  end;
+end;
+
+procedure TfrmNoteProperties.cboNewTitleEnter(Sender: TObject);
+begin
+  FLastTitle := 0;
+end;
+
+procedure TfrmNoteProperties.cboNewTitleMouseClick(Sender: TObject);
+const
+  TX_NEED_CONSULT_TITLE = 'You currently have unresolved consults awaiting completion.' + CRLF +
+                          'The selected title cannot be used to complete consults.' + CRLF +
+                          'You must select a Consults title to complete a consult.' + CRLF + CRLF +
+                          'Answer "YES" to continue with this title and not complete a consult.' + CRLF +
+                          'Answer "NO" to select a different title.' + CRLF + CRLF +
+                          'Do you want to use this title and continue?';                          
+  TC_NOT_CONSULT_TITLE = 'Not a consult title';
+var
+  WantsToCompleteConsult: boolean;
+  ConsultTitle: boolean;
+begin
+  with cboNewTitle do
+    if (ItemIEN > 0) and (ItemIEN = FLastTitle) then Exit
+    else if ItemIEN = 0 then
+      begin
+        if FLastTitle > 0 then SelectByIEN(FLastTitle)
+        else ItemIndex := -1;
+        //Exit;
+      end;
+    case FCallingTab of
+      CT_CONSULTS:  ;  // no action
+      CT_SURGERY :  ;  // no action
+      CT_NOTES   :  begin            // v26.5 (RV) main changes here
+                      WantsToCompleteConsult := False;
+                      ConsultTitle := IsConsultTitle(cboNewTitle.ItemIEN);
+                      if (pnlConsults.Visible) and
+                         (lstRequests.Items.Count > 0) and
+                         (not FStarting) and
+                         (*(lstRequests.ItemID <> '') and*)
+                         (not ConsultTitle) then
+                          WantsToCompleteConsult := (InfoBox(TX_NEED_CONSULT_TITLE,
+                                                            TC_NOT_CONSULT_TITLE,
+                                                            MB_ICONWARNING or MB_YESNO or MB_DEFBUTTON2) = IDNO);
+                      if WantsToCompleteConsult and (not ConsultTitle) then cboNewTitle.ItemIndex := -1;
+                      SetGenericFormSize;
+                      ShowRequestList(WantsToCompleteConsult or ConsultTitle);
+                      ShowSurgCaseList(IsSurgeryTitle(cboNewTitle.ItemIEN));
+                      ShowPRFList(IsPRFTitle(cboNewTitle.ItemIEN));
+                    end;
+    end;
+  SetCosignerRequired(True);
+  FLastTitle := cboNewTitle.ItemIEN;
+end;
+
+procedure TfrmNoteProperties.cboNewTitleExit(Sender: TObject);
+begin
+  if cboNewTitle.ItemIEN <> FLastTitle then cboNewTitleMouseClick(Self);
+end;
+
+procedure TfrmNoteProperties.cboNewTitleDblClick(Sender: TObject);
+begin
+  cmdOKClick(Self);
+end;
+
+{ cboAuthor & cboCosigner events }
+
+procedure TfrmNoteProperties.NewPersonNeedData(Sender: TObject; const StartFrom: String;
+  Direction, InsertAt: Integer);
+begin
+  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmNoteProperties.cboAuthorEnter(Sender: TObject);
+begin
+  FLastAuthor := 0;
+end;
+
+procedure TfrmNoteProperties.cboAuthorMouseClick(Sender: TObject);
+begin
+  SetCosignerRequired(True);
+  FLastAuthor := cboAuthor.ItemIEN;
+end;
+
+procedure TfrmNoteProperties.cboAuthorExit(Sender: TObject);
+begin
+  if cboAuthor.ItemIEN <> FLastAuthor then cboAuthorMouseClick(Self);
+end;
+
+procedure TfrmNoteProperties.cboCosignerExit(Sender: TObject);
+{ make sure FCosign fields stay up to date in case SetCosigner gets called again }
+//var x: string;
+begin
+  with cboCosigner do if ((Text = '') or (ItemIEN = 0)) then
+  begin
+    ItemIndex := -1;
+    FCosignIEN := 0;
+    FCosignName := '';
+    exit;
+  end;
+  FCosignIEN := cboCosigner.ItemIEN;
+  FCosignName := Piece(cboCosigner.Items[cboCosigner.ItemIndex], U, 2);
+end;
+
+{ Command Button events }
+
+procedure TfrmNoteProperties.cmdOKClick(Sender: TObject);
+var
+  ErrMsg, WhyNot, AlertMsg: string;
+begin
+  cmdOK.SetFocus;                                // make sure cbo exit events fire
+  Application.ProcessMessages;
+(*  case FCallingTab of
+    CT_CONSULTS:  ;  //no action
+    CT_SURGERY :  ;  //no action
+    CT_NOTES   :  if IsConsultTitle(cboNewTitle.ItemIEN) then
+                    ShowRequestList(True)
+                  else if IsSurgeryTitle(cboNewTitle.ItemIEN) then
+{ TODO -oRich V. -cSurgery/TIU : Disallow new surgery notes here - MUST be business rule for "BE ENTERED": }
+     //  New TIU RPC required, to check user and title against business rules.
+     //  Must allow OK button click if surgery title on edit of surgery original.
+     //  Can't pre-screen titles because need to allow change on edit.
+     //  May need additional logic here to distinguish between NEW or EDITED document.
+                    ShowSurgCaseList(True)
+                  else
+                    begin
+                       ShowRequestList(False);
+                       ShowSurgCaseList(False);
+                       ShowPRFList(False);
+                    end;
+  end;*)
+  SetCosignerRequired(False);
+  ErrMsg := '';
+  if cboNewTitle.ItemIEN = 0 then
+    ErrMsg := ErrMsg + TX_REQ_TITLE ;
+  if ErrMsg = '' then
+    begin
+      if FDocType = TYP_ADDENDUM then
+        begin
+          if OneNotePerVisit(TYP_ADDENDUM, Patient.DFN, Encounter.VisitStr)then
+            ErrMsg := ErrMsg + TX_ONE_NOTE_PER_VISIT1
+                     + 'Addendum to ' + Piece(cboNewTitle.Items[cboNewTitle.ItemIndex],U,2)
+                     + TX_ONE_NOTE_PER_VISIT2;
+        end
+        //code added 12/2002  check note parm - one per visit  GRE
+      else if OneNotePerVisit(CboNewTitle.ItemIEN, Patient.DFN, Encounter.VisitStr)then
+            ErrMsg := ErrMsg + TX_ONE_NOTE_PER_VISIT1
+                     + Piece(cboNewTitle.Items[cboNewTitle.ItemIndex],U,2)
+                     + TX_ONE_NOTE_PER_VISIT2;
+    end;
+  if ErrMsg = '' then
+    begin
+      if FIDNoteTitlesOnly then
+        begin
+          if (not CanTitleBeIDChild(cboNewTitle.ItemIEN, WhyNot)) then
+            ErrMsg := ErrMsg + CRLF + WhyNot;
+        end
+      else
+        begin
+          if ((pnlConsults.Visible) and (lstRequests.ItemIndex < 0)) then
+            ErrMsg := ErrMsg + TX_REQ_REQUEST
+          else if ((pnlSurgery.Visible) and (lstSurgery.ItemIndex < 0)) then
+            ErrMsg := ErrMsg + TX_REQ_SURGCASE
+          else if (pnlPRF.Visible) then
+          begin
+            if (lvPRF.ItemIndex < 0) and (FIsNewNote) then
+              ErrMsg := ErrMsg + TX_REQ_PRF_ACTION;
+            if (lvPRF.ItemIndex >= 0) and (FPRFActions.SelActionHasNote(lvPRF.ItemIndex)) then
+              ErrMsg := ErrMsg + TX_REQ_PRF_NOTE;
+          end;
+        end;
+    end;
+  if cboAuthor.ItemIEN = 0   then ErrMsg := ErrMsg + TX_REQ_AUTHOR;
+  if not calNote.IsValid     then ErrMsg := ErrMsg + TX_REQ_REFDATE;
+  if calNote.IsValid and (calNote.FMDateTime > FMNow)    then ErrMsg := ErrMsg + TX_NO_FUTURE;
+  if cboCosigner.Visible then
+    begin
+       if (cboCosigner.ItemIEN = 0)     then ErrMsg := ErrMsg + TX_REQ_COSIGNER;
+      //if (cboCosigner.ItemIEN = User.DUZ) then ErrMsg := TX_COS_SELF;  // (CanCosign will do this check)
+      if (cboCosigner.ItemIEN > 0) and not CanCosign(cboNewTitle.ItemIEN, FDocType, cboCosigner.ItemIEN, calNote.FMDateTime)
+        then ErrMsg := cboCosigner.Text + TX_COS_AUTH;
+        //code added 02/2003  check if User is Inactive   GRE
+        if UserInactive(IntToStr(cboCosigner.ItemIEN)) then
+        if (InfoBox(fNoteProps.TX_USER_INACTIVE, TC_INACTIVE_USER, MB_OKCANCEL)= IDCANCEL) then exit;
+    end;
+  if FIsClinProcNote then
+    begin
+      if (FCPStatusFlag = CP_INSTR_INCOMPLETE) then
+        begin
+          if cboProcSummCode.ItemIEN = 0 then ErrMsg := ErrMsg + TX_REQ_PROCSUMMCODE
+            else FProcSummCode := cboProcSummCode.ItemIEN;
+          if not calProcDateTime.IsValid then ErrMsg := ErrMsg + TX_REQ_PROCDATETIME
+           else if calProcDateTime.IsValid and (calProcDateTime.FMDateTime > FMNow) then ErrMsg := ErrMsg + TX_NO_PROC_FUTURE
+           else FProcDateTime := calProcDateTime.FMDateTime;
+        end
+      else
+        begin
+          FProcSummCode := cboProcSummCode.ItemIEN;
+          if (calProcDateTime.FMDateTime > 0) then
+            begin
+              if (not calProcDateTime.IsValid) then ErrMsg := ErrMsg + TX_INVALID_PROCDATETIME
+               else if calProcDateTime.IsValid and (calProcDateTime.FMDateTime > FMNow) then ErrMsg := ErrMsg + TX_NO_PROC_FUTURE
+               else FProcDateTime := calProcDateTime.FMDateTime;
+            end;
+        end;
+    end;
+  if ShowMsgOn(Length(ErrMsg) > 0, ErrMsg, TC_REQ_FIELDS)
+    then Exit
+    else ModalResult := mrOK;
+
+    //Code added to handle inactive users.  2/26/03
+  if ShowMsgOn(Length(AlertMsg) > 0, AlertMsg, TC_INACTIVE_USER ) then
+     ModalResult := mrOK;
+end;
+
+procedure TfrmNoteProperties.cmdCancelClick(Sender: TObject);
+begin
+  ModalResult := mrCancel;
+  //Close;
+end;
+
+procedure TfrmNoteProperties.cboNewTitleDropDownClose(Sender: TObject);
+begin
+//  if FFixCursor then
+//  begin
+//    Screen.Cursor := crDefault;
+//    FFixCursor := FALSE;
+//  end;
+//  lblDateTime.Visible := True;
+//  lblAuthor.Visible   := True;
+//  lblCosigner.Visible := True;
+end;
+
+procedure TfrmNoteProperties.cboCosignerNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  (Sender as TORComboBox).ForDataUse(SubSetOfUsersWithClass(StartFrom, Direction, FToday));
+end;
+
+procedure TfrmNoteProperties.ShowClinProcFields(YesNo: boolean);
+begin
+  lblProcSummCode.Visible := YesNo;
+  cboProcSummCode.Visible := YesNo;
+  lblProcDateTime.Visible := YesNo;
+  calProcDateTime.Visible := YesNo;
+end;
+
+procedure TfrmNoteProperties.btnShowListClick(Sender: TObject);
+begin
+  FormatRequestList;
+end;
+
+procedure TfrmNoteProperties.FormatRequestList;
+const
+  SHOW_UNRESOLVED = 'Show Unresolved';
+  SHOW_ALL = 'Show All';
+begin
+  uShowUnresolvedOnly := not uShowUnresolvedOnly;
+  with btnShowList do
+    if uShowUnresolvedOnly then
+      Caption := SHOW_ALL
+    else
+      Caption := SHOW_UNRESOLVED;
+  with uUnresolvedConsults do if (UnresolvedConsultsExist and ShowNagScreen) then pnlConsults.Visible := TRUE;  //v26.27 (RV)
+  ShowRequestList(pnlConsults.Visible);      //v26.5 (RV)
+  //ShowRequestList(True);                   //v26.5 (RV)
+end;
+
+procedure TfrmNoteProperties.FormResize(Sender: TObject);
+const
+  SPACE: integer = 10;
+begin
+  cboNewTitle.Width := Self.ClientWidth - cboNewTitle.Left - cmdOK.Width - SPACE * 2;
+  cmdOK.Left := Self.ClientWidth - cmdOK.Width - SPACE;
+  cmdCancel.Left := Self.ClientWidth - cmdCancel.Width - SPACE;
+  if (cboAuthor.Width + cboAuthor.Left) > Self.ClientWidth then
+    cboAuthor.Width := Self.ClientWidth - cboAuthor.Left - SPACE;
+end;
+
+procedure TfrmNoteProperties.calNoteEnter(Sender: TObject);
+begin
+  if Sender is TORDateBox then
+    (Sender as TORDateBox).SelectAll;
+end;
+
+procedure TfrmNoteProperties.ShowPRFList(ShouldShow: Boolean);
+begin
+  pnlPRF.Visible := ShouldShow and not (FDocType = TYP_ADDENDUM);
+  if pnlPRF.Visible then
+  begin
+    ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE + pnlPRF.Height;
+    if FPRFActions = nil then
+      FPRFActions := TPRFActions.Create;
+    FPRFActions.Load(cboNewTitle.ItemIEN,Patient.DFN);
+    if RPCBrokerV.Results.Count <> 0 then
+      lblPRF.Caption := PRF_LABEL
+    else
+      lblPRF.Caption := 'No Linkable Actions for this Patient and/or Title.';
+    FPRFActions.ShowActionsOnList(lvPRF);
+    //Fix for CQ: 6926
+    lvPRF.Columns.BeginUpdate;
+    lvPRF.Columns.EndUpdate;
+    //End Fix for CQ: 6926
+  end
+end;
+
+procedure TfrmNoteProperties.SetGenericFormSize;
+begin
+  ClientHeight := cboCosigner.Top + cboCosigner.Height + PIXEL_SPACE;
+end;
+
+{ TPRFActions }
+
+constructor TPRFActions.Create;
+begin
+  inherited;
+  FPRFActionList := TStringList.Create;
+end;
+
+destructor TPRFActions.Destroy;
+begin
+  FPRFActionList.Free;
+  inherited;
+end;
+
+function TPRFActions.GetActionIEN(lstIndex: integer): String;
+begin
+  Result := Piece(FPRFActionList[lstIndex],U,ACTION_IEN);
+end;
+
+function TPRFActions.GetPRF_IEN(lstIndex: integer): integer;
+begin
+  Result := StrToInt(Piece(FPRFActionList[lstIndex],U,PRF_IEN));
+end;
+
+procedure TPRFActions.Load(TitleIEN : Int64; DFN : String);
+begin
+  CallV('TIU GET PRF ACTIONS', [TitleIEN,DFN]);
+  FastAssign(RPCBrokerV.Results, FPRFActionList);
+end;
+
+function TPRFActions.SelActionHasNote(lstIndex: integer): boolean;
+begin
+  Result := false;
+  if Piece(FPRFActionList[lstIndex],U,NOTE_IEN) <> '' then
+    Result := true;
+end;
+
+procedure TPRFActions.ShowActionsOnList(DisplayList: TCaptionListView);
+var
+  i : integer;
+  ListItem: TListItem;
+begin
+  DisplayList.Clear;
+  for i := 0 to FPRFActionList.Count-1 do
+  begin
+    //Caption="Text for Screen Reader" SubItem1=Flag SubItem2=Date SubItem3=Action SubItem4=Note
+    ListItem := DisplayList.Items.Add;
+    ListItem.Caption := PRF_LABEL; //Screen readers don't read the first column title on a listview.
+    ListItem.SubItems.Add(Piece(FPRFActionList[i],U,FLAG_NAME));
+    ListItem.SubItems.Add(Piece(FPRFActionList[i],U,ACTION_DATE));
+    ListItem.SubItems.Add(Piece(FPRFActionList[i],U,ACTION_NAME));
+    if SelActionHasNote(i) then
+      ListItem.SubItems.Add('Yes')
+    else
+      ListItem.SubItems.Add('No');
+  end;
+end;
+
+procedure TfrmNoteProperties.FormDestroy(Sender: TObject);
+begin
+  FPRFActions.Free;
+end;
+
+procedure TfrmNoteProperties.btnDetailsClick(Sender: TObject);
+var
+  ConsultDetail: TStringList;
+begin
+  if lstRequests.ItemIEN <= 0 then exit;
+  ConsultDetail := TStringList.Create;
+  try
+    LoadConsultDetail(ConsultDetail, lstRequests.ItemIEN) ;
+    ReportBox(ConsultDetail, 'Consult Details: #' + lstRequests.ItemID + ' - ' +
+               Piece(lstRequests.Items[lstRequests.ItemIndex], U, 3), TRUE);
+  finally
+    ConsultDetail.Free;
+  end;
+end;
+
+procedure TfrmNoteProperties.lstRequestsChange(Sender: TObject);
+begin
+  btnDetails.Enabled := (lstRequests.ItemIEN > 0);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotePrt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotePrt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotePrt.dfm	(revision 1676)
@@ -0,0 +1,199 @@
+inherited frmNotePrint: TfrmNotePrint
+  Left = 516
+  Top = 189
+  Caption = 'frmNotePrint'
+  ClientHeight = 306
+  Position = poScreenCenter
+  ExplicitHeight = 340
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblPrintTo: TLabel [0]
+    Left = 8
+    Top = 269
+    Width = 3
+    Height = 13
+  end
+  object lblNoteTitle: TMemo [1]
+    Left = 8
+    Top = 8
+    Width = 301
+    Height = 53
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Note Title, Date/Time of Note, Location')
+    ReadOnly = True
+    TabOrder = 4
+  end
+  object grpChooseCopy: TGroupBox [2]
+    Left = 321
+    Top = 4
+    Width = 98
+    Height = 61
+    Caption = 'Print'
+    TabOrder = 5
+    object radChartCopy: TRadioButton
+      Left = 8
+      Top = 16
+      Width = 81
+      Height = 17
+      Caption = '&Chart Copy'
+      Checked = True
+      TabOrder = 0
+      TabStop = True
+      OnClick = radChartCopyClick
+    end
+    object radWorkCopy: TRadioButton
+      Left = 8
+      Top = 36
+      Width = 81
+      Height = 17
+      Caption = '&Work Copy'
+      TabOrder = 1
+      TabStop = True
+      OnClick = radWorkCopyClick
+    end
+  end
+  object grpDevice: TGroupBox [3]
+    Left = 8
+    Top = 69
+    Width = 411
+    Height = 192
+    Caption = 'Device'
+    TabOrder = 0
+    object lblMargin: TLabel
+      Left = 8
+      Top = 166
+      Width = 60
+      Height = 13
+      Caption = 'Right Margin'
+    end
+    object lblLength: TLabel
+      Left = 120
+      Top = 166
+      Width = 61
+      Height = 13
+      Caption = 'Page Length'
+    end
+    object txtRightMargin: TMaskEdit
+      Left = 72
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 1
+    end
+    object txtPageLength: TMaskEdit
+      Left = 184
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 2
+    end
+    object cboDevice: TORComboBox
+      Left = 8
+      Top = 16
+      Width = 395
+      Height = 140
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Device'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,4'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '30'
+      TabOrder = 0
+      OnChange = cboDeviceChange
+      OnNeedData = cboDeviceNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object cmdOK: TButton [4]
+    Left = 266
+    Top = 276
+    Width = 72
+    Height = 22
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [5]
+    Left = 346
+    Top = 276
+    Width = 72
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  object chkDefault: TCheckBox [6]
+    Left = 8
+    Top = 287
+    Width = 130
+    Height = 17
+    Caption = 'Save as default printer'
+    TabOrder = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblNoteTitle'
+        'Status = stsDefault')
+      (
+        'Component = grpChooseCopy'
+        'Status = stsDefault')
+      (
+        'Component = radChartCopy'
+        'Status = stsDefault')
+      (
+        'Component = radWorkCopy'
+        'Status = stsDefault')
+      (
+        'Component = grpDevice'
+        'Status = stsDefault')
+      (
+        'Component = txtRightMargin'
+        'Status = stsDefault')
+      (
+        'Component = txtPageLength'
+        'Status = stsDefault')
+      (
+        'Component = cboDevice'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = chkDefault'
+        'Status = stsDefault')
+      (
+        'Component = frmNotePrint'
+        'Status = stsDefault'))
+  end
+  object dlgWinPrinter: TPrintDialog
+    Left = 287
+    Top = 49
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotePrt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotePrt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotePrt.pas	(revision 1676)
@@ -0,0 +1,222 @@
+unit fNotePrt;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORCtrls, StdCtrls, Mask, ORNet, ORFn, ComCtrls,
+  VA508AccessibilityManager;
+
+type
+  TfrmNotePrint = class(TfrmAutoSz)
+    grpChooseCopy: TGroupBox;
+    radChartCopy: TRadioButton;
+    radWorkCopy: TRadioButton;
+    grpDevice: TGroupBox;
+    lblMargin: TLabel;
+    lblLength: TLabel;
+    txtRightMargin: TMaskEdit;
+    txtPageLength: TMaskEdit;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblNoteTitle: TMemo;
+    cboDevice: TORComboBox;
+    lblPrintTo: TLabel;
+    dlgWinPrinter: TPrintDialog;
+    chkDefault: TCheckBox;
+    procedure cboDeviceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboDeviceChange(Sender: TObject);
+    procedure radChartCopyClick(Sender: TObject);
+    procedure radWorkCopyClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    { Private declarations }
+    FNote: Integer;
+    FReportText: TRichEdit;
+    procedure DisplaySelectDevice;
+  public
+    { Public declarations }
+  end;
+
+procedure PrintNote(ANote: Longint; const ANoteTitle: string; MultiNotes: boolean = False);
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, rTIU, rReports, uCore, Printers, uReports;
+
+const
+  TX_NODEVICE = 'A device must be selected to print, or press ''Cancel'' to not print.';
+  TX_NODEVICE_CAP = 'Device Not Selected';
+  TX_ERR_CAP = 'Print Error';
+  PAGE_BREAK = '**PAGE BREAK**';
+
+procedure PrintNote(ANote: Longint; const ANoteTitle: string; MultiNotes: boolean = False);
+{ displays a form that prompts for a device and then prints the progress note }
+var
+  frmNotePrint: TfrmNotePrint;
+  DefPrt: string;
+begin
+  frmNotePrint := TfrmNotePrint.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmNotePrint));
+    with frmNotePrint do
+    begin
+      { check to see of Chart Print allowed outside of MAS }
+      if AllowChartPrintForNote(ANote) then
+        begin
+          {This next code begs the question: Why are we even bothering to check
+          radWorkCopy if we immediately check the other button?
+          Short answer: it seems to wokr better
+          Long answer: The checkboxes have to in some way register with the group
+          they are in.  If this doesn't happen, both will be initially included
+          the tab order.  This means that the first time tabbing through the
+          controls, the work copy button would be tabbed to and selected after the
+          chart copy.  Tabbing through controls should not change the group
+          selection.
+          }
+          radWorkCopy.Checked := True;
+          radChartCopy.Checked := True;
+        end
+      else
+        begin
+          radChartCopy.Enabled := False;
+          radWorkCopy.Checked := True;
+        end;
+
+      lblNoteTitle.Text := ANoteTitle;
+      frmNotePrint.Caption := 'Print ' + Piece(Piece(ANoteTitle, #9, 2), ',', 1);
+      FNote := ANote;
+      DefPrt := GetDefaultPrinter(User.Duz, Encounter.Location);
+
+      if User.CurrentPrinter = '' then User.CurrentPrinter := DefPrt;
+
+      with cboDevice do
+        begin
+          if Printer.Printers.Count > 0 then
+            begin
+              Items.Add('WIN;Windows Printer^Windows Printer');
+              Items.Add('^--------------------VistA Printers----------------------');
+            end;
+          if User.CurrentPrinter <> '' then
+            begin
+              InitLongList(Piece(User.CurrentPrinter, ';', 2));
+              SelectByID(User.CurrentPrinter);
+            end
+          else
+            InitLongList('');
+        end;
+
+      if ((DefPrt = 'WIN;Windows Printer') and (User.CurrentPrinter = DefPrt)) then
+        cmdOKClick(frmNotePrint) //CQ6660
+        //Commented out for CQ6660
+         //or
+         //((User.CurrentPrinter <> '') and
+          //(MultiNotes = True)) then
+           //frmNotePrint.cmdOKClick(frmNotePrint)
+        //end CQ6660
+      else
+        frmNotePrint.ShowModal;
+    end;
+  finally
+    frmNotePrint.Release;
+  end;
+end;
+
+procedure TfrmNotePrint.DisplaySelectDevice;
+begin
+  with cboDevice, lblPrintTo do
+  begin
+    if radChartCopy.Checked then Caption := 'Print Chart Copy on:  ' + Piece(ItemID, ';', 2);
+    if radWorkCopy.Checked then Caption := 'Print Work Copy on:  ' + Piece(ItemID, ';', 2);
+  end;
+end;
+
+procedure TfrmNotePrint.cboDeviceNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboDevice.ForDataUse(SubsetOfDevices(StartFrom, Direction));
+end;
+
+procedure TfrmNotePrint.cboDeviceChange(Sender: TObject);
+begin
+  inherited;
+  with cboDevice do if ItemIndex > -1 then
+  begin
+    txtRightMargin.Text := Piece(Items[ItemIndex], '^', 4);
+    txtPageLength.Text := Piece(Items[ItemIndex], '^', 5);
+    DisplaySelectDevice;
+  end;
+end;
+
+procedure TfrmNotePrint.radChartCopyClick(Sender: TObject);
+begin
+  inherited;
+  DisplaySelectDevice;
+end;
+
+procedure TfrmNotePrint.radWorkCopyClick(Sender: TObject);
+begin
+  inherited;
+  DisplaySelectDevice;
+end;
+
+procedure TfrmNotePrint.cmdOKClick(Sender: TObject);
+var
+  ADevice, ErrMsg: string;
+  ChartCopy: Boolean;
+  RemoteSiteID: string;    //for Remote site printing
+  RemoteQuery: string;    //for Remote site printing
+begin
+  inherited;
+  RemoteSiteID := '';
+  RemoteQuery := '';
+
+  if cboDevice.ItemID = '' then
+     begin
+     InfoBox(TX_NODEVICE, TX_NODEVICE_CAP, MB_OK);
+     Exit;
+     end;
+
+  if radChartCopy.Checked then
+     ChartCopy := True
+  else ChartCopy := False;
+
+
+  if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then
+    begin
+    if dlgWinPrinter.Execute then
+       begin
+       FReportText := CreateReportTextComponent(Self);
+       FastAssign(GetFormattedNote(FNote, ChartCopy), FReportText.Lines);
+       PrintWindowsReport(FReportText, PAGE_BREAK, Self.Caption, ErrMsg);
+       if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+       end
+    end
+  else
+    begin
+    ADevice := Piece(cboDevice.ItemID, ';', 2);
+    PrintNoteToDevice(FNote, ADevice, ChartCopy, ErrMsg);
+
+    if Length(ErrMsg) > 0 then
+        InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+    end;
+
+  if chkDefault.Checked then
+     SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
+
+  User.CurrentPrinter := cboDevice.ItemID;
+  Close;
+end;
+
+procedure TfrmNotePrint.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteST.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteST.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteST.dfm	(revision 1676)
@@ -0,0 +1,81 @@
+inherited frmNotesSearchText: TfrmNotesSearchText
+  Left = 473
+  Top = 272
+  BorderIcons = []
+  Caption = 'List Signed Notes by Author'
+  ClientHeight = 123
+  ClientWidth = 331
+  Position = poScreenCenter
+  OnShow = FormShow
+  ExplicitWidth = 339
+  ExplicitHeight = 150
+  DesignSize = (
+    331
+    123)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblSearchInfo: TLabel [0]
+    Left = 8
+    Top = 56
+    Width = 221
+    Height = 52
+    Anchors = [akLeft, akTop, akBottom]
+    Caption = 
+      'Your current view of notes will be searched for the specified st' +
+      'ring.  If you want to search a larger range of notes, you need t' +
+      'o pull up that view prior to searching.'
+    WordWrap = True
+  end
+  object lblAuthor: TLabel [1]
+    Left = 8
+    Top = 8
+    Width = 65
+    Height = 13
+    Caption = 'Search string:'
+  end
+  object edtSearchText: TEdit [2]
+    Left = 8
+    Top = 24
+    Width = 224
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    TabOrder = 0
+  end
+  object cmdOK: TButton [3]
+    Left = 251
+    Top = 24
+    Width = 72
+    Height = 19
+    Anchors = [akLeft, akTop, akRight]
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 251
+    Top = 49
+    Width = 72
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = edtSearchText'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmNotesSearchText'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteST.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteST.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteST.pas	(revision 1676)
@@ -0,0 +1,117 @@
+unit fNoteST;
+{
+Text Search CQ: HDS00002856
+This Unit Contains the Dialog Used to Capture the Text that will be
+searched for in the current notes view.
+}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, StdCtrls, ORFn, uTIU, fAutoSz, VA508AccessibilityManager;
+
+type
+  TfrmNotesSearchText = class(TfrmAutoSz)
+    lblSearchInfo: TLabel;
+    edtSearchText: TEdit;
+    lblAuthor: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FSearchString: string;
+  end;
+
+  TSearchContext = record
+    Changed: Boolean;
+    SearchString: string;
+  end;
+
+procedure SelectSearchText(FontSize: Integer; var SearchText: String; var SearchContext: TSearchContext);
+
+implementation
+
+{$R *.DFM}
+
+uses rTIU, rCore, uCore, rMisc;
+
+const
+  TX_SEARCH_TEXT = 'Select a search string or press Cancel.';
+  TX_SEARCH_CAP = 'Missing search string';
+
+procedure SelectSearchText(FontSize: Integer; var SearchText: String; var SearchContext: TSearchContext);
+{ displays author select form for progress notes and returns a record of the selection }
+var
+  frmNotesSearchText: TfrmNotesSearchText;
+  W, H: integer;
+//  CurrentAuthor: Int64;
+begin
+  frmNotesSearchText := TfrmNotesSearchText.Create(Application);
+  try
+    with frmNotesSearchText do
+    begin
+      edtSearchText.Text:=SearchText;
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+//      ClientWidth  := W; pnlBase.Width  := W;
+//      ClientHeight := H; pnlBase.Height := W;
+      FChanged := False;
+      Show;
+      edtSearchText.SetFocus;
+      Hide;
+      ShowModal;
+      If edtSearchText.Text<>'' then
+      with SearchContext do
+      begin
+        Changed := FChanged;
+        SearchString := FSearchString;
+      end; {with SearchContext}
+    end; {with frmNotesSearchText}
+  finally
+    frmNotesSearchText.Release;
+  end;
+end;
+
+procedure TfrmNotesSearchText.cmdCancelClick(Sender: TObject);
+begin
+  FChanged:=False;
+  Close;
+end;
+
+procedure TfrmNotesSearchText.cmdOKClick(Sender: TObject);
+begin
+  if edtSearchText.Text = '' then
+  begin
+    InfoBox(TX_SEARCH_TEXT, TX_SEARCH_CAP, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  FChanged := True;
+  FSearchString := edtSearchText.Text;
+  Close;
+end;
+
+procedure TfrmNotesSearchText.FormShow(Sender: TObject);
+begin
+  SetFormPosition(Self);
+end;
+
+procedure TfrmNotesSearchText.FormDestroy(Sender: TObject);
+begin
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmNotesSearchText.FormResize(Sender: TObject);
+begin
+  inherited;
+  lblSearchInfo.Width := edtSearchText.Width;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteSTStop.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteSTStop.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteSTStop.dfm	(revision 1676)
@@ -0,0 +1,47 @@
+inherited frmSearchStop: TfrmSearchStop
+  Left = 477
+  Top = 351
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Scanning Notes....'
+  ClientHeight = 95
+  ClientWidth = 163
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnShow = FormShow
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object btnSearchStop: TButton [0]
+    Left = 45
+    Top = 64
+    Width = 73
+    Height = 25
+    Caption = 'Stop Scan'
+    TabOrder = 1
+    OnClick = btnSearchStopClick
+  end
+  object lblSearchStatus: TStaticText [1]
+    Left = 8
+    Top = 32
+    Width = 78
+    Height = 17
+    Caption = 'lblSearchStatus'
+    TabOrder = 0
+    TabStop = True
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = btnSearchStop'
+        'Status = stsDefault')
+      (
+        'Component = lblSearchStatus'
+        'Status = stsDefault')
+      (
+        'Component = frmSearchStop'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteSTStop.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteSTStop.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNoteSTStop.pas	(revision 1676)
@@ -0,0 +1,39 @@
+unit fNoteSTStop;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, fAutoSz, VA508AccessibilityManager;
+
+type
+  TfrmSearchStop = class(TfrmAutoSz)
+    btnSearchStop: TButton;
+    lblSearchStatus: TStaticText;
+    procedure btnSearchStopClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmSearchStop: TfrmSearchStop;
+
+implementation
+
+{$R *.dfm}
+uses fNotes, ORFn;
+
+procedure TfrmSearchStop.btnSearchStopClick(Sender: TObject);
+begin
+  SearchTextStopFlag := True;
+end;
+
+procedure TfrmSearchStop.FormShow(Sender: TObject);
+begin
+  ResizeFormToFont(frmSearchStop);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotes.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotes.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotes.dfm	(revision 1676)
@@ -0,0 +1,1047 @@
+inherited frmNotes: TfrmNotes
+  Left = 402
+  Top = 171
+  HelpContext = 5000
+  Caption = 'Progress Notes Page'
+  ClientHeight = 394
+  ClientWidth = 679
+  HelpFile = 'overvw'
+  Menu = mnuNotes
+  OnDestroy = FormDestroy
+  OnHide = FormHide
+  OnShow = FormShow
+  ExplicitWidth = 687
+  ExplicitHeight = 440
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 389
+    Width = 679
+    ExplicitTop = 358
+    ExplicitWidth = 679
+  end
+  inherited sptHorz: TSplitter
+    Left = 64
+    Height = 389
+    OnCanResize = sptHorzCanResize
+    ExplicitLeft = 64
+    ExplicitHeight = 358
+  end
+  inherited pnlLeft: TPanel
+    Width = 64
+    Height = 389
+    ExplicitWidth = 64
+    ExplicitHeight = 389
+    object lblNotes: TOROffsetLabel
+      Left = 0
+      Top = 0
+      Width = 64
+      Height = 19
+      Align = alTop
+      Caption = 'Last 100 Notes'
+      HorzOffset = 2
+      ParentShowHint = False
+      ShowHint = True
+      Transparent = True
+      VertOffset = 6
+      WordWrap = False
+    end
+    object lblSpace1: TLabel
+      Left = 0
+      Top = 344
+      Width = 64
+      Height = 3
+      Align = alBottom
+      AutoSize = False
+      Caption = ' '
+      ExplicitTop = 313
+    end
+    object cmdNewNote: TORAlignButton
+      Left = 0
+      Top = 347
+      Width = 64
+      Height = 21
+      Align = alBottom
+      Caption = 'New Note'
+      TabOrder = 1
+      OnClick = cmdNewNoteClick
+      OnExit = cmdNewNoteExit
+    end
+    object cmdPCE: TORAlignButton
+      Left = 0
+      Top = 368
+      Width = 64
+      Height = 21
+      Align = alBottom
+      Caption = 'Encounter'
+      TabOrder = 2
+      Visible = False
+      OnClick = cmdPCEClick
+      OnExit = cmdPCEExit
+    end
+    object pnlDrawers: TPanel
+      Left = 0
+      Top = 19
+      Width = 64
+      Height = 325
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object splDrawers: TSplitter
+        Left = 0
+        Top = 322
+        Width = 64
+        Height = 3
+        Cursor = crVSplit
+        Align = alBottom
+        ExplicitTop = 291
+      end
+      object lstNotes: TORListBox
+        Left = 0
+        Top = 0
+        Width = 64
+        Height = 18
+        TabStop = False
+        Ctl3D = True
+        ItemHeight = 13
+        ParentCtl3D = False
+        ParentShowHint = False
+        PopupMenu = popNoteList
+        ShowHint = True
+        TabOrder = 0
+        Visible = False
+        OnClick = lstNotesClick
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3'
+        TabPositions = '10'
+      end
+      object tvNotes: TORTreeView
+        Left = 0
+        Top = 0
+        Width = 64
+        Height = 322
+        Align = alClient
+        Constraints.MinWidth = 30
+        HideSelection = False
+        Images = dmodShared.imgNotes
+        Indent = 19
+        PopupMenu = popNoteList
+        ReadOnly = True
+        StateImages = dmodShared.imgImages
+        TabOrder = 1
+        OnChange = tvNotesChange
+        OnClick = tvNotesClick
+        OnCollapsed = tvNotesCollapsed
+        OnDragDrop = tvNotesDragDrop
+        OnDragOver = tvNotesDragOver
+        OnExit = tvNotesExit
+        OnExpanded = tvNotesExpanded
+        OnStartDrag = tvNotesStartDrag
+        Caption = 'Last 100 Notes'
+        NodePiece = 0
+        ShortNodeCaptions = True
+      end
+    end
+  end
+  inherited pnlRight: TPanel
+    Left = 68
+    Width = 611
+    Height = 389
+    ExplicitLeft = 68
+    ExplicitWidth = 611
+    ExplicitHeight = 389
+    object sptVert: TSplitter
+      Left = 0
+      Top = 340
+      Width = 611
+      Height = 4
+      Cursor = crVSplit
+      Align = alBottom
+      ExplicitTop = 309
+    end
+    object memPCEShow: TRichEdit
+      Left = 0
+      Top = 344
+      Width = 611
+      Height = 45
+      Align = alBottom
+      Color = clCream
+      Lines.Strings = (
+        '<No encounter information entered>')
+      PlainText = True
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 2
+      OnExit = memPCEShowExit
+    end
+    object pnlWrite: TPanel
+      Left = 0
+      Top = 0
+      Width = 611
+      Height = 340
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      Visible = False
+      OnResize = pnlWriteResize
+      object memNewNote: TRichEdit
+        Left = 0
+        Top = 67
+        Width = 611
+        Height = 273
+        Align = alClient
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popNoteMemo
+        ScrollBars = ssBoth
+        TabOrder = 1
+        WantTabs = True
+        OnChange = memNewNoteChange
+        OnKeyDown = memNewNoteKeyDown
+        OnKeyPress = memNewNoteKeyPress
+        OnKeyUp = memNewNoteKeyUp
+      end
+      object pnlFields: TPanel
+        Left = 0
+        Top = 0
+        Width = 611
+        Height = 67
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        OnResize = pnlFieldsResize
+        DesignSize = (
+          611
+          67)
+        object bvlNewTitle: TBevel
+          Left = 5
+          Top = 5
+          Width = 117
+          Height = 15
+        end
+        object lblRefDate: TStaticText
+          Left = 237
+          Top = 6
+          Width = 101
+          Height = 17
+          Hint = 'Press "Change..." to change date/time of note.'
+          Alignment = taCenter
+          Caption = 'Oct 20,1999@15:30'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 2
+        end
+        object lblAuthor: TStaticText
+          Left = 393
+          Top = 6
+          Width = 152
+          Height = 17
+          Hint = 'Press "Change..." to select a different author.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          Caption = 'Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 3
+        end
+        object lblVisit: TStaticText
+          Left = 6
+          Top = 21
+          Width = 204
+          Height = 17
+          Caption = 'Vst: 10/20/99 Pulmonary Clinic, Dr. Welby'
+          ShowAccelChar = False
+          TabOrder = 4
+        end
+        object lblCosigner: TStaticText
+          Left = 298
+          Top = 21
+          Width = 243
+          Height = 13
+          Hint = 'Press "Change..." to select a different cosigner.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          AutoSize = False
+          Caption = 'Expected Cosigner: Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 5
+        end
+        object lblSubject: TStaticText
+          Left = 6
+          Top = 43
+          Width = 43
+          Height = 17
+          Caption = 'Subject:'
+          TabOrder = 6
+        end
+        object lblNewTitle: TStaticText
+          Left = 6
+          Top = 6
+          Width = 119
+          Height = 17
+          Hint = 'Press "Change..." to select a different title.'
+          Caption = ' General Medicine Note '
+          Color = clCream
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentColor = False
+          ParentFont = False
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+          TabOrder = 7
+        end
+        object cmdChange: TButton
+          Left = 547
+          Top = 6
+          Width = 58
+          Height = 21
+          Caption = 'Change...'
+          TabOrder = 0
+          OnClick = cmdChangeClick
+          OnExit = cmdChangeExit
+        end
+        object txtSubject: TCaptionEdit
+          Left = 48
+          Top = 40
+          Width = 557
+          Height = 21
+          Hint = 'Subject is limited to a maximum of 80 characters.'
+          Anchors = [akLeft, akTop, akRight]
+          MaxLength = 80
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Text = 'txtSubject'
+          Caption = 'Subject'
+        end
+      end
+    end
+    object pnlRead: TPanel
+      Left = 0
+      Top = 0
+      Width = 611
+      Height = 340
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      OnExit = pnlReadExit
+      object lblTitle: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 611
+        Height = 19
+        Align = alTop
+        Caption = 'No Progress Notes Found'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object sptList: TSplitter
+        Left = 0
+        Top = 113
+        Width = 611
+        Height = 3
+        Cursor = crVSplit
+        Align = alTop
+      end
+      object memNote: TRichEdit
+        Left = 0
+        Top = 116
+        Width = 611
+        Height = 224
+        Align = alClient
+        Color = clCream
+        Ctl3D = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Lines.Strings = (
+          
+            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRUSTVWXYZabcdefghijkl' +
+            'mnopqrstuvwxyz12')
+        ParentCtl3D = False
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popNoteMemo
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 1
+        WordWrap = False
+      end
+      object lvNotes: TCaptionListView
+        Left = 0
+        Top = 19
+        Width = 611
+        Height = 94
+        Align = alTop
+        Columns = <
+          item
+            Caption = 'Date'
+            Width = 100
+          end
+          item
+            AutoSize = True
+            Caption = 'Title'
+          end
+          item
+            AutoSize = True
+            Caption = 'Subject'
+          end
+          item
+            AutoSize = True
+            Caption = 'Author'
+          end
+          item
+            AutoSize = True
+            Caption = 'Location'
+          end
+          item
+            Caption = 'fmdate'
+            Width = 0
+          end
+          item
+            Caption = 'TIUDA'
+            Width = 0
+          end>
+        Constraints.MinHeight = 50
+        HideSelection = False
+        ReadOnly = True
+        RowSelect = True
+        SmallImages = dmodShared.imgNotes
+        StateImages = dmodShared.imgImages
+        TabOrder = 0
+        ViewStyle = vsReport
+        Visible = False
+        OnColumnClick = lvNotesColumnClick
+        OnCompare = lvNotesCompare
+        OnResize = lvNotesResize
+        OnSelectItem = lvNotesSelectItem
+        Caption = 'No Progress Notes Found'
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdNewNote'
+        'Status = stsDefault')
+      (
+        'Component = cmdPCE'
+        'Status = stsDefault')
+      (
+        'Component = pnlDrawers'
+        'Status = stsDefault')
+      (
+        'Component = lstNotes'
+        'Status = stsDefault')
+      (
+        'Component = tvNotes'
+        'Status = stsDefault')
+      (
+        'Component = memPCEShow'
+        'Text = Encounter Information'
+        'Status = stsOK')
+      (
+        'Component = pnlWrite'
+        'Status = stsDefault')
+      (
+        'Component = memNewNote'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = lblRefDate'
+        'Status = stsDefault')
+      (
+        'Component = lblAuthor'
+        'Status = stsDefault')
+      (
+        'Component = lblVisit'
+        'Status = stsDefault')
+      (
+        'Component = lblCosigner'
+        'Status = stsDefault')
+      (
+        'Component = lblSubject'
+        'Status = stsDefault')
+      (
+        'Component = lblNewTitle'
+        'Status = stsDefault')
+      (
+        'Component = cmdChange'
+        'Status = stsDefault')
+      (
+        'Component = txtSubject'
+        'Status = stsDefault')
+      (
+        'Component = pnlRead'
+        'Status = stsDefault')
+      (
+        'Component = memNote'
+        'Status = stsDefault')
+      (
+        'Component = lvNotes'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmNotes'
+        'Status = stsDefault'))
+  end
+  object mnuNotes: TMainMenu
+    Left = 601
+    Top = 304
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewAll: TMenuItem
+        Tag = 1
+        Caption = '&Signed Notes (All)'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByAuthor: TMenuItem
+        Tag = 4
+        Caption = 'Signed Notes by &Author'
+        OnClick = mnuViewClick
+      end
+      object mnuViewByDate: TMenuItem
+        Tag = 5
+        Caption = 'Signed Notes by Date &Range'
+        OnClick = mnuViewClick
+      end
+      object mnuViewUncosigned: TMenuItem
+        Tag = 3
+        Caption = 'Un&cosigned Notes'
+        OnClick = mnuViewClick
+      end
+      object mnuViewUnsigned: TMenuItem
+        Tag = 2
+        Caption = '&Unsigned Notes'
+        OnClick = mnuViewClick
+      end
+      object mnuViewCustom: TMenuItem
+        Tag = 6
+        Caption = 'Custo&m View'
+        OnClick = mnuViewClick
+      end
+      object mnuSearchForText: TMenuItem
+        Tag = 7
+        Caption = 'Search for Te&xt (Within Current View)'
+        OnClick = mnuViewClick
+      end
+      object N1: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewSaveAsDefault: TMenuItem
+        Caption = 'Sa&ve as Default View'
+        OnClick = mnuViewSaveAsDefaultClick
+      end
+      object ReturntoDefault1: TMenuItem
+        Caption = 'Return to De&fault View'
+        OnClick = mnuViewReturntoDefaultClick
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewDetail: TMenuItem
+        Caption = '&Details'
+        OnClick = mnuViewDetailClick
+      end
+      object N6: TMenuItem
+        Caption = '-'
+      end
+      object mnuIconLegend: TMenuItem
+        Caption = 'Icon Legend'
+        OnClick = mnuIconLegendClick
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      object mnuActNew: TMenuItem
+        Caption = '&New Progress Note...'
+        Hint = 'Creates a new progress note'
+        ShortCut = 24654
+        OnClick = mnuActNewClick
+      end
+      object mnuActAddend: TMenuItem
+        Caption = '&Make Addendum...'
+        Hint = 'Makes an addendum for the currently selected note'
+        ShortCut = 24653
+        OnClick = mnuActAddendClick
+      end
+      object mnuActAddIDEntry: TMenuItem
+        Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+        OnClick = mnuActAddIDEntryClick
+      end
+      object mnuActAttachtoIDParent: TMenuItem
+        Caption = 'A&ttach to Interdisciplinary Note'
+        OnClick = mnuActAttachtoIDParentClick
+      end
+      object mnuActDetachFromIDParent: TMenuItem
+        Caption = 'Detac&h from Interdisciplinary Note'
+        OnClick = mnuActDetachFromIDParentClick
+      end
+      object mnuEncounter: TMenuItem
+        Caption = 'Encounte&r'
+        ShortCut = 24658
+        OnClick = cmdPCEClick
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+      end
+      object mnuActChange: TMenuItem
+        Caption = '&Change Title...'
+        ShortCut = 24643
+        OnClick = mnuActChangeClick
+      end
+      object mnuActLoadBoiler: TMenuItem
+        Caption = 'Reload &Boilerplate Text'
+        OnClick = mnuActLoadBoilerClick
+      end
+      object Z2: TMenuItem
+        Caption = '-'
+      end
+      object mnuActSignList: TMenuItem
+        Caption = 'Add to Signature &List'
+        Hint = 'Adds the currently displayed note to list of things to be signed'
+        OnClick = mnuActSignListClick
+      end
+      object mnuActDelete: TMenuItem
+        Caption = '&Delete Progress Note...'
+        ShortCut = 24644
+        OnClick = mnuActDeleteClick
+      end
+      object mnuActEdit: TMenuItem
+        Caption = '&Edit Progress Note...'
+        ShortCut = 24645
+        OnClick = mnuActEditClick
+      end
+      object mnuActSave: TMenuItem
+        Caption = 'S&ave without Signature'
+        Hint = 'Saves the note that is being edited'
+        ShortCut = 24641
+        OnClick = mnuActSaveClick
+      end
+      object mnuActSign: TMenuItem
+        Caption = 'Si&gn Note Now...'
+        ShortCut = 24647
+        OnClick = mnuActSignClick
+      end
+      object mnuActIdentifyAddlSigners: TMenuItem
+        Caption = '&Identify Additional Signers'
+        OnClick = mnuActIdentifyAddlSignersClick
+      end
+    end
+    object mnuOptions: TMenuItem
+      Caption = '&Options'
+      GroupIndex = 4
+      OnClick = mnuOptionsClick
+      object mnuEditTemplates: TMenuItem
+        Caption = 'Edit &Templates...'
+        OnClick = mnuEditTemplatesClick
+      end
+      object mnuNewTemplate: TMenuItem
+        Caption = 'Create &New Template...'
+        OnClick = mnuNewTemplateClick
+      end
+      object N2: TMenuItem
+        Caption = '-'
+      end
+      object mnuEditSharedTemplates: TMenuItem
+        Caption = 'Edit &Shared Templates...'
+        OnClick = mnuEditSharedTemplatesClick
+      end
+      object mnuNewSharedTemplate: TMenuItem
+        Caption = '&Create New Shared Template...'
+        OnClick = mnuNewSharedTemplateClick
+      end
+      object N3: TMenuItem
+        Caption = '-'
+        OnClick = cmdChangeClick
+      end
+      object mnuEditDialgFields: TMenuItem
+        Caption = 'Edit Template &Fields'
+        OnClick = mnuEditDialgFieldsClick
+      end
+    end
+  end
+  object popNoteMemo: TPopupMenu
+    OnPopup = popNoteMemoPopup
+    Left = 540
+    Top = 304
+    object popNoteMemoCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popNoteMemoCutClick
+    end
+    object popNoteMemoCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popNoteMemoCopyClick
+    end
+    object popNoteMemoPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popNoteMemoPasteClick
+    end
+    object popNoteMemoPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popNoteMemoPasteClick
+    end
+    object popNoteMemoReformat: TMenuItem
+      Caption = 'Reformat Paragraph'
+      ShortCut = 24658
+      OnClick = popNoteMemoReformatClick
+    end
+    object popNoteMemoSaveContinue: TMenuItem
+      Caption = 'Save && Continue Editing'
+      ShortCut = 24659
+      Visible = False
+      OnClick = popNoteMemoSaveContinueClick
+    end
+    object Z11: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoFind: TMenuItem
+      Caption = '&Find in Selected Note'
+      OnClick = popNoteMemoFindClick
+    end
+    object popNoteMemoReplace: TMenuItem
+      Caption = '&Replace Text'
+      OnClick = popNoteMemoReplaceClick
+    end
+    object N7: TMenuItem
+      Caption = '-'
+      OnClick = cmdChangeClick
+    end
+    object popNoteMemoGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      OnClick = popNoteMemoGrammarClick
+    end
+    object popNoteMemoSpell: TMenuItem
+      Caption = 'C&heck Spelling'
+      OnClick = popNoteMemoSpellClick
+    end
+    object Z12: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoTemplate: TMenuItem
+      Caption = 'Copy into New &Template'
+      OnClick = popNoteMemoTemplateClick
+    end
+    object Z10: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoSignList: TMenuItem
+      Caption = 'Add to Signature &List'
+      OnClick = mnuActSignListClick
+    end
+    object popNoteMemoDelete: TMenuItem
+      Caption = '&Delete Progress Note...'
+      OnClick = mnuActDeleteClick
+    end
+    object popNoteMemoEdit: TMenuItem
+      Caption = '&Edit Progress Note...'
+      OnClick = mnuActEditClick
+    end
+    object popNoteMemoAddend: TMenuItem
+      Caption = '&Make Addendum...'
+      OnClick = mnuActAddendClick
+    end
+    object popNoteMemoSave: TMenuItem
+      Caption = 'S&ave without Signature'
+      OnClick = mnuActSaveClick
+    end
+    object popNoteMemoSign: TMenuItem
+      Caption = '&Sign Note Now...'
+      OnClick = mnuActSignClick
+    end
+    object popNoteMemoAddlSign: TMenuItem
+      Caption = '&Identify Additional Signers'
+      OnClick = popNoteMemoAddlSignClick
+    end
+    object N8: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoPreview: TMenuItem
+      Caption = 'Previe&w/Print Current Template'
+      ShortCut = 16471
+      OnClick = popNoteMemoPreviewClick
+    end
+    object popNoteMemoInsTemplate: TMenuItem
+      Caption = 'Insert Current Template'
+      ShortCut = 16429
+      OnClick = popNoteMemoInsTemplateClick
+    end
+    object popNoteMemoEncounter: TMenuItem
+      Caption = 'Edit Encounter Information'
+      ShortCut = 16453
+      OnClick = cmdPCEClick
+    end
+    object popNoteMemoViewCslt: TMenuItem
+      Caption = 'View Consult Details'
+      ShortCut = 24661
+      OnClick = popNoteMemoViewCsltClick
+    end
+  end
+  object popNoteList: TPopupMenu
+    OnPopup = popNoteListPopup
+    Left = 500
+    Top = 305
+    object popNoteListAll: TMenuItem
+      Tag = 1
+      Caption = '&Signed Notes (All)'
+      OnClick = mnuViewClick
+    end
+    object popNoteListByAuthor: TMenuItem
+      Tag = 4
+      Caption = 'Signed Notes by &Author'
+      OnClick = mnuViewClick
+    end
+    object popNoteListByDate: TMenuItem
+      Tag = 5
+      Caption = 'Signed Notes by Date &Range'
+      OnClick = mnuViewClick
+    end
+    object popNoteListUncosigned: TMenuItem
+      Tag = 3
+      Caption = 'Un&cosigned Notes'
+      OnClick = mnuViewClick
+    end
+    object popNoteListUnsigned: TMenuItem
+      Tag = 2
+      Caption = '&Unsigned Notes'
+      OnClick = mnuViewClick
+    end
+    object popNoteListCustom: TMenuItem
+      Tag = 6
+      Caption = 'Cus&tom View'
+      OnClick = mnuViewClick
+    end
+    object popSearchForText: TMenuItem
+      Tag = 7
+      Caption = 'Search for Te&xt (Within Current View)'
+      OnClick = mnuViewClick
+    end
+    object N4: TMenuItem
+      Caption = '-'
+    end
+    object popNoteListExpandSelected: TMenuItem
+      Caption = '&Expand Selected'
+      OnClick = popNoteListExpandSelectedClick
+    end
+    object popNoteListExpandAll: TMenuItem
+      Caption = 'E&xpand All'
+      OnClick = popNoteListExpandAllClick
+    end
+    object popNoteListCollapseSelected: TMenuItem
+      Caption = 'C&ollapse Selected'
+      OnClick = popNoteListCollapseSelectedClick
+    end
+    object popNoteListCollapseAll: TMenuItem
+      Caption = 'Co&llapse All'
+      OnClick = popNoteListCollapseAllClick
+    end
+    object N5: TMenuItem
+      Caption = '-'
+    end
+    object popNoteListAddIDEntry: TMenuItem
+      Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+      OnClick = mnuActAddIDEntryClick
+    end
+    object popNoteListAttachtoIDParent: TMenuItem
+      Caption = 'A&ttach to Interdisciplinary Note'
+      OnClick = mnuActAttachtoIDParentClick
+    end
+    object popNoteListDetachFromIDParent: TMenuItem
+      Caption = 'Detac&h from Interdisciplinary Note'
+      OnClick = mnuActDetachFromIDParentClick
+    end
+  end
+  object timAutoSave: TTimer
+    Enabled = False
+    Interval = 300000
+    OnTimer = timAutoSaveTimer
+    Left = 592
+    Top = 27
+  end
+  object dlgFindText: TFindDialog
+    Options = [frDown, frHideUpDown]
+    OnFind = dlgFindTextFind
+    Left = 452
+    Top = 312
+  end
+  object dlgReplaceText: TReplaceDialog
+    OnFind = dlgReplaceTextFind
+    OnReplace = dlgReplaceTextReplace
+    Left = 413
+    Top = 312
+  end
+  object imgLblNotes: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = lvNotes
+      end
+      item
+        Component = tvNotes
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblNotes
+    Left = 16
+    Top = 195
+  end
+  object imgLblImages: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = lvNotes
+      end
+      item
+        Component = tvNotes
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblImages
+    Left = 16
+    Top = 235
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotes.pas	(revision 1676)
@@ -0,0 +1,3887 @@
+unit fNotes;
+{$O-}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fHSplit, StdCtrls, ExtCtrls, Menus, ComCtrls, ORCtrls, ORFn, uConst, ORDtTm,
+  uPCE, ORClasses, fDrawers, ImgList, rTIU, uTIU, uDocTree, fRptBox, fPrintList,
+  fNoteST, ORNet, fNoteSTStop, fBase508Form, VA508AccessibilityManager,
+  VA508ImageListLabeler;
+
+type
+  TfrmNotes = class(TfrmHSplit)
+    mnuNotes: TMainMenu;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    Z1: TMenuItem;
+    mnuViewDetail: TMenuItem;
+    mnuAct: TMenuItem;
+    mnuActNew: TMenuItem;
+    Z2: TMenuItem;
+    mnuActSave: TMenuItem;
+    mnuActDelete: TMenuItem;
+    mnuActEdit: TMenuItem;
+    mnuActSign: TMenuItem;
+    mnuActAddend: TMenuItem;
+    lblNotes: TOROffsetLabel;
+    pnlRead: TPanel;
+    lblTitle: TOROffsetLabel;
+    memNote: TRichEdit;
+    pnlWrite: TPanel;
+    memNewNote: TRichEdit;
+    Z3: TMenuItem;
+    mnuViewAll: TMenuItem;
+    mnuViewByAuthor: TMenuItem;
+    mnuViewByDate: TMenuItem;
+    mnuViewUncosigned: TMenuItem;
+    mnuViewUnsigned: TMenuItem;
+    mnuActSignList: TMenuItem;
+    cmdNewNote: TORAlignButton;
+    cmdPCE: TORAlignButton;
+    lblSpace1: TLabel;
+    popNoteMemo: TPopupMenu;
+    popNoteMemoCut: TMenuItem;
+    popNoteMemoCopy: TMenuItem;
+    popNoteMemoPaste: TMenuItem;
+    Z10: TMenuItem;
+    popNoteMemoSignList: TMenuItem;
+    popNoteMemoDelete: TMenuItem;
+    popNoteMemoEdit: TMenuItem;
+    popNoteMemoSave: TMenuItem;
+    popNoteMemoSign: TMenuItem;
+    popNoteList: TPopupMenu;
+    popNoteListAll: TMenuItem;
+    popNoteListByAuthor: TMenuItem;
+    popNoteListByDate: TMenuItem;
+    popNoteListUncosigned: TMenuItem;
+    popNoteListUnsigned: TMenuItem;
+    sptVert: TSplitter;
+    memPCEShow: TRichEdit;
+    mnuActIdentifyAddlSigners: TMenuItem;
+    popNoteMemoAddlSign: TMenuItem;
+    Z11: TMenuItem;
+    popNoteMemoSpell: TMenuItem;
+    popNoteMemoGrammar: TMenuItem;
+    mnuViewCustom: TMenuItem;
+    N1: TMenuItem;
+    mnuViewSaveAsDefault: TMenuItem;
+    ReturntoDefault1: TMenuItem;
+    pnlDrawers: TPanel;
+    lstNotes: TORListBox;
+    splDrawers: TSplitter;
+    popNoteMemoTemplate: TMenuItem;
+    Z12: TMenuItem;
+    mnuOptions: TMenuItem;
+    mnuEditTemplates: TMenuItem;
+    mnuNewTemplate: TMenuItem;
+    N2: TMenuItem;
+    mnuEditSharedTemplates: TMenuItem;
+    mnuNewSharedTemplate: TMenuItem;
+    popNoteMemoAddend: TMenuItem;
+    pnlFields: TPanel;
+    lblNewTitle: TStaticText;
+    lblRefDate: TStaticText;
+    lblAuthor: TStaticText;
+    lblVisit: TStaticText;
+    lblCosigner: TStaticText;
+    cmdChange: TButton;
+    lblSubject: TStaticText;
+    txtSubject: TCaptionEdit;
+    timAutoSave: TTimer;
+    popNoteMemoPaste2: TMenuItem;
+    popNoteMemoReformat: TMenuItem;
+    Z4: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActLoadBoiler: TMenuItem;
+    bvlNewTitle: TBevel;
+    popNoteMemoSaveContinue: TMenuItem;
+    N3: TMenuItem;
+    mnuEditDialgFields: TMenuItem;
+    tvNotes: TORTreeView;
+    lvNotes: TCaptionListView;
+    sptList: TSplitter;
+    N4: TMenuItem;
+    popNoteListExpandSelected: TMenuItem;
+    popNoteListExpandAll: TMenuItem;
+    popNoteListCollapseSelected: TMenuItem;
+    popNoteListCollapseAll: TMenuItem;
+    popNoteListCustom: TMenuItem;
+    mnuActDetachFromIDParent: TMenuItem;
+    N5: TMenuItem;
+    popNoteListDetachFromIDParent: TMenuItem;
+    popNoteListAddIDEntry: TMenuItem;
+    mnuActAddIDEntry: TMenuItem;
+    mnuIconLegend: TMenuItem;
+    N6: TMenuItem;
+    popNoteMemoFind: TMenuItem;
+    dlgFindText: TFindDialog;
+    dlgReplaceText: TReplaceDialog;
+    popNoteMemoReplace: TMenuItem;
+    N7: TMenuItem;
+    mnuChartSurgery: TMenuItem;
+    mnuActAttachtoIDParent: TMenuItem;
+    popNoteListAttachtoIDParent: TMenuItem;
+    N8: TMenuItem;
+    popNoteMemoPreview: TMenuItem;
+    popNoteMemoInsTemplate: TMenuItem;
+    popNoteMemoEncounter: TMenuItem;
+    mnuSearchForText: TMenuItem;
+    popSearchForText: TMenuItem;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    popNoteMemoViewCslt: TMenuItem;
+    mnuEncounter: TMenuItem;
+    imgLblNotes: TVA508ImageListLabeler;
+    imgLblImages: TVA508ImageListLabeler;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure lstNotesClick(Sender: TObject);
+    procedure pnlRightResize(Sender: TObject);
+    procedure cmdNewNoteClick(Sender: TObject);
+    procedure mnuActNewClick(Sender: TObject);
+    procedure mnuActAddIDEntryClick(Sender: TObject);
+    procedure mnuActSaveClick(Sender: TObject);
+    procedure mnuViewClick(Sender: TObject);
+    procedure mnuActAddendClick(Sender: TObject);
+    procedure mnuActDetachFromIDParentClick(Sender: TObject);
+    procedure mnuActSignListClick(Sender: TObject);
+    procedure mnuActDeleteClick(Sender: TObject);
+    procedure mnuActEditClick(Sender: TObject);
+    procedure mnuActSignClick(Sender: TObject);
+    procedure cmdPCEClick(Sender: TObject);
+    procedure popNoteMemoCutClick(Sender: TObject);
+    procedure popNoteMemoCopyClick(Sender: TObject);
+    procedure popNoteMemoPasteClick(Sender: TObject);
+    procedure popNoteMemoPopup(Sender: TObject);
+    procedure pnlWriteResize(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure mnuViewDetailClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure mnuActIdentifyAddlSignersClick(Sender: TObject);
+    procedure popNoteMemoAddlSignClick(Sender: TObject);
+    procedure popNoteMemoSpellClick(Sender: TObject);
+    procedure popNoteMemoGrammarClick(Sender: TObject);
+    procedure mnuViewSaveAsDefaultClick(Sender: TObject);
+    procedure mnuViewReturntoDefaultClick(Sender: TObject);
+    procedure popNoteMemoTemplateClick(Sender: TObject);
+    procedure mnuEditTemplatesClick(Sender: TObject);
+    procedure mnuNewTemplateClick(Sender: TObject);
+    procedure mnuEditSharedTemplatesClick(Sender: TObject);
+    procedure mnuNewSharedTemplateClick(Sender: TObject);
+    procedure mnuOptionsClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cmdChangeClick(Sender: TObject);
+    procedure pnlFieldsResize(Sender: TObject);
+    procedure timAutoSaveTimer(Sender: TObject);
+    procedure memNewNoteChange(Sender: TObject);
+    procedure popNoteMemoReformatClick(Sender: TObject);
+    procedure mnuActChangeClick(Sender: TObject);
+    procedure mnuActLoadBoilerClick(Sender: TObject);
+    procedure popNoteMemoSaveContinueClick(Sender: TObject);
+    procedure mnuEditDialgFieldsClick(Sender: TObject);
+    procedure tvNotesChange(Sender: TObject; Node: TTreeNode);
+    procedure tvNotesClick(Sender: TObject);
+    procedure tvNotesCollapsed(Sender: TObject; Node: TTreeNode);
+    procedure tvNotesExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvNotesStartDrag(Sender: TObject;
+      var DragObject: TDragObject);
+    procedure tvNotesDragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure tvNotesDragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
+    procedure lvNotesColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvNotesCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+    procedure lvNotesSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
+    procedure popNoteListExpandAllClick(Sender: TObject);
+    procedure popNoteListCollapseAllClick(Sender: TObject);
+    procedure popNoteListExpandSelectedClick(Sender: TObject);
+    procedure popNoteListCollapseSelectedClick(Sender: TObject);
+    procedure popNoteListPopup(Sender: TObject);
+    procedure lvNotesResize(Sender: TObject);
+    procedure mnuIconLegendClick(Sender: TObject);
+    procedure popNoteMemoFindClick(Sender: TObject);
+    procedure dlgFindTextFind(Sender: TObject);
+    procedure popNoteMemoReplaceClick(Sender: TObject);
+    procedure dlgReplaceTextReplace(Sender: TObject);
+    procedure dlgReplaceTextFind(Sender: TObject);
+    procedure mnuActAttachtoIDParentClick(Sender: TObject);
+    procedure memNewNoteKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure sptHorzCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
+    procedure popNoteMemoInsTemplateClick(Sender: TObject);
+    procedure popNoteMemoPreviewClick(Sender: TObject);
+    procedure tvNotesExit(Sender: TObject);
+    procedure pnlReadExit(Sender: TObject);
+    procedure cmdNewNoteExit(Sender: TObject);
+    procedure FormHide(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure memNewNoteKeyPress(Sender: TObject; var Key: Char);
+    procedure memNewNoteKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure memPCEShowExit(Sender: TObject);
+    procedure cmdChangeExit(Sender: TObject);
+    procedure cmdPCEExit(Sender: TObject);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+    procedure popNoteMemoViewCsltClick(Sender: TObject);
+  private
+    FNavigatingTab : Boolean; //Currently Using tab to navigate
+    FEditingIndex: Integer;                      // index of note being currently edited
+    FChanged: Boolean;                           // true if any text has changed in the note
+    FEditCtrl: TCustomEdit;
+    FSilent: Boolean;
+    FCurrentContext: TTIUContext;
+    FDefaultContext: TTIUContext;
+    FOrderID: string;
+    FImageFlag: TBitmap;
+    FEditNote: TEditNoteRec;
+    FVerifyNoteTitle: Integer;
+    FDocList: TStringList;
+    FConfirmed: boolean;
+    FLastNoteID: string;
+    FNewIDChild: boolean;
+    FEditingNotePCEObj: boolean;
+    FDeleted: boolean;
+    FOldFramePnlPatientExit: TNotifyEvent;
+    FOldDrawerPnlTemplatesButtonExit: TNotifyEvent;
+    FOldDrawerPnlEncounterButtonExit: TNotifyEvent;
+    FOldDrawerEdtSearchExit: TNotifyEvent;
+    FStarting: boolean;
+    procedure frmFramePnlPatientExit(Sender: TObject);
+    procedure frmDrawerPnlTemplatesButtonExit(Sender: TObject);
+    procedure frmDrawerPnlEncounterButtonExit(Sender: TObject);
+    procedure frmDrawerEdtSearchExit(Sender: TObject);
+    procedure ClearEditControls;
+    procedure DoAutoSave(Suppress: integer = 1);
+    function GetTitleText(AnIndex: Integer): string;
+    procedure InsertAddendum;
+    procedure InsertNewNote(IsIDChild: boolean; AnIDParent: integer);
+    function LacksRequiredForCreate: Boolean;
+    procedure LoadForEdit;
+    function LockConsultRequest(AConsult: Integer): Boolean;
+    function LockConsultRequestAndNote(AnIEN: Int64): Boolean;
+    procedure RemovePCEFromChanges(IEN: Int64; AVisitStr: string = '');
+    procedure SaveEditedNote(var Saved: Boolean);
+    procedure SaveCurrentNote(var Saved: Boolean);
+    procedure SetEditingIndex(const Value: Integer);
+    procedure SetSubjectVisible(ShouldShow: Boolean);
+    procedure ShowPCEControls(ShouldShow: Boolean);
+    function StartNewEdit(NewNoteType: integer): Boolean;
+    procedure UnlockConsultRequest(ANote: Int64; AConsult: Integer = 0);
+    procedure ProcessNotifications;
+    procedure SetViewContext(AContext: TTIUContext);
+    property EditingIndex: Integer read FEditingIndex write SetEditingIndex;
+    function GetDrawers: TFrmDrawers;
+    function CanFinishReminder: boolean;
+    procedure DisplayPCE;
+    function VerifyNoteTitle: Boolean;
+    //  added for treeview
+    procedure LoadNotes;
+    procedure UpdateTreeView(DocList: TStringList; Tree: TORTreeView);
+    procedure  EnableDisableIDNotes;
+    procedure ShowPCEButtons(Editing: boolean);
+    procedure DoAttachIDChild(AChild, AParent: TORTreeNode);
+    function SetNoteTreeLabel(AContext: TTIUContext): string;
+    procedure UpdateNoteAuthor(DocInfo: string);
+  public
+    function ActiveEditOf(AnIEN: Int64; ARequest: integer): Boolean;
+    function AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure RequestPrint; override;
+    procedure RequestMultiplePrint(AForm: TfrmPrintList);
+    procedure SetFontSize(NewFontSize: Integer); override;
+    procedure SaveSignItem(const ItemID, ESCode: string);
+    procedure AssignRemForm;
+    property  OrderID: string read FOrderID;
+    procedure LstNotesToPrint;
+    procedure UpdateFormForInput;
+  published
+    property Drawers: TFrmDrawers read GetDrawers; // Keep Drawers published
+  end;
+
+var
+  frmNotes: TfrmNotes;
+  SearchTextStopFlag: Boolean;   // Text Search CQ: HDS00002856
+
+implementation
+
+{$R *.DFM}
+
+uses fFrame, fVisit, fEncnt, rCore, uCore, fNoteBA, fNoteBD, fSignItem, fEncounterFrame,
+     rPCE, Clipbrd, fNoteCslt, fNotePrt, rVitals, fAddlSigners, fNoteDR, fConsults, uSpell,
+     fTIUView, fTemplateEditor, uReminders, fReminderDialog, uOrders, rConsults, fReminderTree,
+     fNoteProps, fNotesBP, fTemplateFieldEditor, dShared, rTemplates,
+     FIconLegend, fPCEEdit, fNoteIDParents, rSurgery, uSurgery, uTemplates,
+     fTemplateDialog, DateUtils, uInit, uVA508CPRSCompatibility, VA508AccessibilityRouter,
+  VAUtils;
+     
+const
+
+  NT_NEW_NOTE = -10;                             // Holder IEN for a new note
+  NT_ADDENDUM = -20;                             // Holder IEN for a new addendum
+
+  NT_ACT_NEW_NOTE  = 2;
+  NT_ACT_ADDENDUM  = 3;
+  NT_ACT_EDIT_NOTE = 4;
+  NT_ACT_ID_ENTRY  = 5;
+
+  TX_NEED_VISIT = 'A visit is required before creating a new progress note.';
+  TX_CREATE_ERR = 'Error Creating Note';
+  TX_UPDATE_ERR = 'Error Updating Note';
+  TX_NO_NOTE    = 'No progress note is currently being edited';
+  TX_SAVE_NOTE  = 'Save Progress Note';
+  TX_ADDEND_NO  = 'Cannot make an addendum to a note that is being edited';
+  TX_DEL_OK     = CRLF + CRLF + 'Delete this progress note?';
+  TX_DEL_ERR    = 'Unable to Delete Note';
+  TX_SIGN       = 'Sign Note';
+  TX_COSIGN     = 'Cosign Note';
+  TX_SIGN_ERR   = 'Unable to Sign Note';
+//  TX_SCREQD     = 'This progress note title requires the service connected questions to be '+
+//                  'answered.  The Encounter form will now be opened.  Please answer all '+
+//                 'service connected questions.';
+//  TX_SCREQD_T   = 'Response required for SC questions.';
+  TX_NONOTE     = 'No progress note is currently selected.';
+  TX_NONOTE_CAP = 'No Note Selected';
+  TX_NOPRT_NEW  = 'This progress note may not be printed until it is saved';
+  TX_NOPRT_NEW_CAP = 'Save Progress Note';
+  TX_NO_ALERT   = 'There is insufficient information to process this alert.' + CRLF +
+                  'Either the alert has already been deleted, or it contained invalid data.' + CRLF + CRLF +
+                  'Click the NEXT button if you wish to continue processing more alerts.';
+  TX_CAP_NO_ALERT = 'Unable to Process Alert';
+  TX_ORDER_LOCKED = 'This record is locked by an action underway on the Consults tab';
+  TC_ORDER_LOCKED = 'Unable to access record';
+  TX_NO_ORD_CHG   = 'The note is still associated with the previously selected request.' + CRLF +
+                    'Finish the pending action on the consults tab, then try again.';
+  TC_NO_ORD_CHG   = 'Locked Consult Request';
+  TX_NEW_SAVE1    = 'You are currently editing:' + CRLF + CRLF;
+  TX_NEW_SAVE2    = CRLF + CRLF + 'Do you wish to save this note and begin a new one?';
+  TX_NEW_SAVE3    = CRLF + CRLF + 'Do you wish to save this note and begin a new addendum?';
+  TX_NEW_SAVE4    = CRLF + CRLF + 'Do you wish to save this note and edit the one selected?';
+  TX_NEW_SAVE5    = CRLF + CRLF + 'Do you wish to save this note and begin a new Interdisciplinary entry?';
+  TC_NEW_SAVE2    = 'Create New Note';
+  TC_NEW_SAVE3    = 'Create New Addendum';
+  TC_NEW_SAVE4    = 'Edit Different Note';
+  TC_NEW_SAVE5    = 'Create New Interdisciplinary Entry';
+  TX_EMPTY_NOTE   = CRLF + CRLF + 'This note contains no text and will not be saved.' + CRLF +
+                    'Do you wish to delete this note?';
+  TC_EMPTY_NOTE   = 'Empty Note';
+  TX_EMPTY_NOTE1   = 'This note contains no text and can not be signed.';
+  TC_NO_LOCK      = 'Unable to Lock Note';
+  TX_ABSAVE       = 'It appears the session terminated abnormally when this' + CRLF +
+                    'note was last edited. Some text may not have been saved.' + CRLF + CRLF +
+                    'Do you wish to continue and sign the note?';
+  TC_ABSAVE       = 'Possible Missing Text';
+  TX_NO_BOIL      = 'There is no boilerplate text associated with this title.';
+  TC_NO_BOIL      = 'Load Boilerplate Text';
+  TX_BLR_CLEAR    = 'Do you want to clear the previously loaded boilerplate text?';
+  TC_BLR_CLEAR    = 'Clear Previous Boilerplate Text';
+  TX_DETACH_CNF     = 'Confirm Detachment';
+  TX_DETACH_FAILURE = 'Detach failed';
+  TX_RETRACT_CAP    = 'Retraction Notice';
+  TX_RETRACT        = 'This document will now be RETRACTED.  As Such, it has been removed' +CRLF +
+                      ' from public view, and from typical Releases of Information,' +CRLF +
+                      ' but will remain indefinitely discoverable to HIMS.' +CRLF +CRLF;
+  TX_AUTH_SIGNED    = 'Author has not signed, are you SURE you want to sign.' +CRLF;
+{
+type
+  //CQ8300
+  ClipboardData = record
+     Text: array[0..255] of char;
+  end;
+}
+var
+  uPCEShow, uPCEEdit:  TPCEData;
+  ViewContext: Integer;
+  frmDrawers: TfrmDrawers;
+  uTIUContext: TTIUContext;
+  ColumnToSort: Integer;
+  ColumnSortForward: Boolean;
+  uChanging: Boolean;
+  uIDNotesActive: Boolean;
+
+
+{ TPage common methods --------------------------------------------------------------------- }
+function TfrmNotes.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  dlgFindText.CloseDialog;
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  if Assigned(frmTemplateDialog) then
+    if Screen.ActiveForm = frmTemplateDialog then
+    //if (fsModal in frmTemplateDialog.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'A template in progress will be aborted.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmTemplateDialog.Silent := True;
+                 frmTemplateDialog.ModalResult := mrCancel;
+               end;
+           end;
+    end;
+  if Assigned(frmRemDlg) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'All current reminder processing information will be discarded.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmRemDlg.Silent := True;
+                 frmRemDlg.btnCancelClick(Self);
+               end;
+           end;
+    end;
+  if EditingIndex <> -1 then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             if memNewNote.GetTextLen > 0 then
+               WhyNot := WhyNot + 'A note in progress will be saved as unsigned.  '
+             else
+               WhyNot := WhyNot + 'An empty note in progress will be deleted.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then FSilent := True;
+             SaveCurrentNote(Result)
+           end;
+    end;
+  if Assigned(frmEncounterFrame) then
+    if Screen.ActiveForm = frmEncounterFrame then
+    //if (fsModal in frmEncounterFrame.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := WhyNot + 'Encounter information being edited will not be saved';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmEncounterFrame.Abort := False;
+                 frmEncounterFrame.Cancel := True;
+               end;
+           end;
+    end;
+end;
+
+procedure TfrmNotes.LstNotesToPrint;       
+var
+  AParentID: string;
+  SavedDocID: string;
+  Saved: boolean;
+begin
+  inherited;
+  if not uIDNotesActive then exit;
+  if lstNotes.ItemIEN = 0 then exit;           
+  SavedDocID := lstNotes.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    LoadNotes;
+    with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if tvNotes.Selected = nil then exit;
+  AParentID := frmPrintList.SelectParentFromList(tvNotes,CT_NOTES);
+  if AParentID = '' then exit;
+  with tvNotes do Selected := FindPieceNode(AParentID, 1, U, Items.GetFirstNode);
+end;
+
+procedure TfrmNotes.ClearPtData;
+{ clear all controls that contain patient specific information }
+begin
+  inherited ClearPtData;
+  ClearEditControls;
+  uChanging := True;
+  tvNotes.Items.BeginUpdate;
+  KilldocTreeObjects(tvNotes);
+  tvNotes.Items.Clear;
+  tvNotes.Items.EndUpdate;
+  lvNotes.Items.Clear;
+  uChanging := False;
+  lstNotes.Clear;
+  memNote.Clear;
+  memPCEShow.Clear;
+  uPCEShow.Clear;
+  uPCEEdit.Clear;
+  frmDrawers.ResetTemplates;
+end;
+
+procedure TfrmNotes.DisplayPage;
+{ causes page to be visible and conditionally executes initialization code }
+begin
+  inherited DisplayPage;
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+  frmFrame.mnuFilePrint.Tag := CT_NOTES;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  frmFrame.mnuFilePrintSelectedItems.Enabled := True;
+  if InitPage then
+  begin
+    EnableDisableIDNotes;
+    FDefaultContext := GetCurrentTIUContext;
+    FCurrentContext := FDefaultContext;
+    popNoteMemoSpell.Visible   := SpellCheckAvailable;
+    popNoteMemoGrammar.Visible := popNoteMemoSpell.Visible;
+    Z11.Visible                := popNoteMemoSpell.Visible;
+    timAutoSave.Interval := User.AutoSave * 1000;  // convert seconds to milliseconds
+    SetEqualTabStops(memNewNote);
+  end;
+  // to indent the right margin need to set Paragraph.RightIndent for each paragraph?
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+    begin
+      SetViewContext(FDefaultContext);
+    end;
+  case CallingContext of
+    CC_INIT_PATIENT: if not InitPatient then
+                       begin
+                         SetViewContext(FDefaultContext);
+                       end;
+    CC_NOTIFICATION:  ProcessNotifications;
+  end;
+end;
+
+procedure TfrmNotes.RequestPrint;
+var
+  Saved: Boolean;
+begin
+  with lstNotes do
+  begin
+    if ItemIndex = EditingIndex then
+    //if ItemIEN < 0 then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+    end;
+    if ItemIEN > 0 then PrintNote(ItemIEN, MakeNoteDisplayText(Items[ItemIndex])) else
+    begin
+      if ItemIEN = 0 then InfoBox(TX_NONOTE, TX_NONOTE_CAP, MB_OK);
+      if ItemIEN < 0 then InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+    end;
+  end;
+end;
+
+{for printing multiple notes}
+procedure TfrmNotes.RequestMultiplePrint(AForm: TfrmPrintList);
+var
+  NoteIEN: int64;
+  i: integer;
+begin
+  with AForm.lbIDParents do
+  for i := 0 to Items.Count - 1 do
+  if Selected[i] then
+  begin
+    NoteIEN := StrToInt64def(Piece(Items[i], U, 1), 0);
+    if NoteIEN > 0 then PrintNote(NoteIEN, DisplayText[i], TRUE)
+    else if NoteIEN = 0 then InfoBox(TX_NONOTE, TX_NONOTE_CAP, MB_OK)
+    else InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+  end;
+end;
+
+procedure TfrmNotes.SetFontSize(NewFontSize: Integer);
+{ adjusts the font size of any controls that don't have ParentFont = True }
+begin
+  inherited SetFontSize(NewFontSize);
+  frmDrawers.Font.Size  := NewFontSize;
+  SetEqualTabStops(memNewNote);
+  pnlWriteResize(Self);
+end;
+
+procedure TfrmNotes.mnuChartTabClick(Sender: TObject);
+{ reroute to Chart Tab menu of the parent form: frmFrame }
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+{ General procedures ----------------------------------------------------------------------- }
+
+procedure TfrmNotes.ClearEditControls;
+{ resets controls used for entering a new progress note }
+begin
+  // clear FEditNote (should FEditNote be an object with a clear method?)
+  with FEditNote do
+  begin
+    DocType      := 0;
+    Title        := 0;
+    TitleName    := '';
+    DateTime     := 0;
+    Author       := 0;
+    AuthorName   := '';
+    Cosigner     := 0;
+    CosignerName := '';
+    Subject      := '';
+    Location     := 0;
+    LocationName := '';
+    PkgIEN       := 0;
+    PkgPtr       := '';
+    PkgRef       := '';
+    NeedCPT      := False;
+    Addend       := 0;
+    {LastCosigner & LastCosignerName aren't cleared because they're used as default for next note.}
+    Lines        := nil;
+    PRF_IEN := 0;
+    ActionIEN := '';
+  end;
+  // clear the editing controls (also clear the new labels?)
+  txtSubject.Text := '';
+  //lblNotes.Caption := '';
+  SearchTextStopFlag := false;
+  if memNewNote <> nil then memNewNote.Clear; //CQ7012 Added test for nil
+  timAutoSave.Enabled := False;
+  // clear the PCE object for editing
+  uPCEEdit.Clear;
+  // set the tracking variables to initial state
+  EditingIndex := -1;
+  FChanged := False;
+end;
+
+procedure TfrmNotes.ShowPCEControls(ShouldShow: Boolean);
+begin
+  sptVert.Visible    := ShouldShow;
+  memPCEShow.Visible := ShouldShow;
+  if(ShouldShow) then
+    sptVert.Top := memPCEShow.Top - sptVert.Height;
+  memNote.Invalidate;
+end;
+
+procedure TfrmNotes.DisplayPCE;
+{ displays PCE information if appropriate & enables/disabled editing of PCE data }
+var
+  EnableList, ShowList: TDrawers;
+  VitalStr:   TStringlist;
+  NoPCE:      boolean;
+  ActionSts: TActionRec;
+  AnIEN: integer;
+begin
+  memPCEShow.Clear;
+  with lstNotes do if ItemIndex = EditingIndex then
+  begin
+    with uPCEEdit do
+    begin
+      AddStrData(memPCEShow.Lines);
+      NoPCE := (memPCEShow.Lines.Count = 0);
+      VitalStr  := TStringList.create;
+      try
+        GetVitalsFromDate(VitalStr, uPCEEdit);
+        AddVitalData(VitalStr, memPCEShow.Lines);
+      finally
+        VitalStr.free;
+      end;
+      ShowPCEButtons(TRUE);
+      ShowPCEControls(cmdPCE.Enabled or (memPCEShow.Lines.Count > 0));
+      if(NoPCE and memPCEShow.Visible) then
+        memPCEShow.Lines.Insert(0, TX_NOPCE);
+      memPCEShow.SelStart := 0;
+
+      if(InteractiveRemindersActive) then
+      begin
+        if(GetReminderStatus = rsNone) then
+          EnableList := [odTemplates]
+        else
+          EnableList := [odTemplates, odReminders];
+        ShowList := [odTemplates, odReminders];
+      end
+      else
+      begin
+        EnableList := [odTemplates];
+        ShowList := [odTemplates];
+      end;
+      frmDrawers.DisplayDrawers(TRUE, EnableList, ShowList);
+    end;
+  end else
+  begin
+    ShowPCEButtons(FALSE);
+    frmDrawers.DisplayDrawers(TRUE, [odTemplates], [odTemplates]);
+    AnIEN := lstNotes.ItemIEN;
+    ActOnDocument(ActionSts, AnIEN, 'VIEW');
+    if ActionSts.Success then
+    begin
+      StatusText('Retrieving encounter information...');
+      with uPCEShow do
+      begin
+        NoteDateTime := MakeFMDateTime(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+        PCEForNote(AnIEN, uPCEEdit);
+        AddStrData(memPCEShow.Lines);
+        NoPCE := (memPCEShow.Lines.Count = 0);
+        VitalStr  := TStringList.create;
+        try
+          GetVitalsFromNote(VitalStr, uPCEShow, AnIEN);
+          AddVitalData(VitalStr, memPCEShow.Lines);
+        finally
+          VitalStr.free;
+        end;
+        ShowPCEControls(memPCEShow.Lines.Count > 0);
+        if(NoPCE and memPCEShow.Visible) then
+          memPCEShow.Lines.Insert(0, TX_NOPCE);
+        memPCEShow.SelStart := 0;
+      end;
+      StatusText('');
+    end
+    else
+      ShowPCEControls(FALSE);
+  end; {if ItemIndex}
+  mnuEncounter.Enabled := cmdPCE.Visible;
+end;
+
+{ supporting calls for writing notes }
+
+function TfrmNotes.GetTitleText(AnIndex: Integer): string;
+{ returns non-tabbed text for the title of a note given the ItemIndex in lstNotes }
+begin
+  with lstNotes do
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(Items[AnIndex], U, 3))) +
+              '  ' + Piece(Items[AnIndex], U, 2) + ', ' + Piece(Items[AnIndex], U, 6) + ', ' +
+              Piece(Piece(Items[AnIndex], U, 5), ';', 2)
+end;
+
+function TfrmNotes.LacksRequiredForCreate: Boolean;
+{ determines if the fields required to create the note are present }
+var
+  CurTitle: Integer;
+begin
+  Result := False;
+  with FEditNote do
+  begin
+    if Title <= 0    then Result := True;
+    if Author <= 0   then Result := True;
+    if DateTime <= 0 then Result := True;
+    if IsConsultTitle(Title) and (PkgIEN = 0) then Result := True;
+    if IsSurgeryTitle(Title) and (PkgIEN = 0) then Result := True;
+    if IsPRFTitle(Title) and (PRF_IEN = 0) and (not DocType = TYP_ADDENDUM) then Result := True;
+    if (DocType = TYP_ADDENDUM) then
+    begin
+      if AskCosignerForDocument(Addend, Author, DateTime) and (Cosigner <= 0) then Result := True;
+    end else
+    begin
+      if Title > 0 then CurTitle := Title else CurTitle := DocType;
+      if AskCosignerForTitle(CurTitle, Author, DateTime) and (Cosigner <= 0) then Result := True;
+    end;
+  end;
+end;
+
+function TfrmNotes.VerifyNoteTitle: Boolean;
+const
+  VNT_UNKNOWN = 0;
+  VNT_NO      = 1;
+  VNT_YES     = 2;
+var
+  AParam: string;
+begin
+  if FVerifyNoteTitle = VNT_UNKNOWN then
+  begin
+    AParam := GetUserParam('ORWOR VERIFY NOTE TITLE');
+    if AParam = '1' then FVerifyNoteTitle := VNT_YES else FVerifyNoteTitle := VNT_NO;
+  end;
+  Result := FVerifyNoteTitle = VNT_YES;
+end;
+
+procedure TfrmNotes.SetSubjectVisible(ShouldShow: Boolean);
+{ hide/show subject & resize panel accordingly - leave 6 pixel margin above memNewNote }
+begin
+  if ShouldShow then
+  begin
+    lblSubject.Visible := True;
+    txtSubject.Visible := True;
+    pnlFields.Height   := txtSubject.Top + txtSubject.Height + 6;
+  end else
+  begin
+    lblSubject.Visible := False;
+    txtSubject.Visible := False;
+    pnlFields.Height   := lblVisit.Top + lblVisit.Height + 6;
+  end;
+end;
+
+{ consult request and note locking }
+
+function TfrmNotes.LockConsultRequest(AConsult: Integer): Boolean;
+{ returns true if consult successfully locked }
+begin
+  // *** I'm not sure about the FOrderID field - if the user is editing one note and
+  //     deletes another, FOrderID will be for editing note, then delete note, then null
+  Result := True;
+  FOrderID := GetConsultOrderIEN(AConsult);
+  if (FOrderID <> '') and (FOrderID = frmConsults.OrderID) then
+  begin
+    InfoBox(TX_ORDER_LOCKED, TC_ORDER_LOCKED, MB_OK);
+    Result := False;
+    Exit;
+  end;
+  if (FOrderId <> '') then
+    if not OrderCanBeLocked(FOrderID) then Result := False;
+  if not Result then FOrderID := '';
+end;
+
+function TfrmNotes.LockConsultRequestAndNote(AnIEN: Int64): Boolean;
+{ returns true if note and associated request successfully locked }
+var
+  AConsult: Integer;
+  LockMsg, x: string;
+begin
+  Result := True;
+  AConsult := 0;
+  if frmConsults.ActiveEditOf(AnIEN) then
+    begin
+      InfoBox(TX_ORDER_LOCKED, TC_ORDER_LOCKED, MB_OK);
+      Result := False;
+      Exit;
+    end;
+    if Changes.Exist(CH_DOC, IntToStr(AnIEN)) then Exit;  // already locked
+  // try to lock the consult request first, if there is one
+  if IsConsultTitle(TitleForNote(AnIEN)) then
+  begin
+    x := GetPackageRefForNote(lstNotes.ItemIEN);
+    AConsult := StrToIntDef(Piece(x, ';', 1), 0);
+    Result := LockConsultRequest(AConsult);
+  end;
+  // now try to lock the note
+  if Result then
+  begin
+    LockDocument(AnIEN, LockMsg);
+    if LockMsg <> '' then
+    begin
+      Result := False;
+      // if can't lock the note, unlock the consult request that was just locked
+      if AConsult > 0 then
+      begin
+        UnlockOrderIfAble(FOrderID);
+        FOrderID := '';
+      end;
+      InfoBox(LockMsg, TC_NO_LOCK, MB_OK);
+    end;
+  end;
+end;
+
+procedure TfrmNotes.UnlockConsultRequest(ANote: Int64; AConsult: Integer = 0);
+(*var
+  x: string;*)
+begin
+(*  if (AConsult = 0) and IsConsultTitle(TitleForNote(ANote)) then
+    begin
+      x := GetPackageRefForNote(ANote);
+      AConsult := StrToIntDef(Piece(x, ';', 1), 0);
+    end;
+  if AConsult = 0 then Exit;*)
+  if AConsult = 0 then AConsult := GetConsultIENForNote(ANote);
+  if AConsult <= 0 then exit;
+  FOrderID := GetConsultOrderIEN(AConsult);
+  UnlockOrderIfAble(FOrderID);
+  FOrderID := '';
+end;
+
+function TfrmNotes.ActiveEditOf(AnIEN: Int64; ARequest: integer): Boolean;
+begin
+  Result := False;
+  if EditingIndex < 0 then Exit;
+  if lstNotes.GetIEN(EditingIndex) = AnIEN then
+    begin
+      Result := True;
+      Exit;
+    end;
+  with FEditNote do if (PkgIEN = ARequest) and (PkgPtr = PKG_CONSULTS) then Result := True;
+end;
+
+{ create, edit & save notes }
+
+procedure TfrmNotes.InsertNewNote(IsIDChild: boolean; AnIDParent: integer);
+{ creates the editing context for a new progress note & inserts stub into top of view list }
+var
+  EnableAutosave, HaveRequired: Boolean;
+  CreatedNote: TCreatedDoc;
+  TmpBoilerPlate: TStringList;
+  tmpNode: TTreeNode;
+  x, WhyNot, DocInfo: string;
+begin
+  if frmFrame.Timedout then Exit;
+
+  FNewIDChild := IsIDChild;
+  EnableAutosave := FALSE;
+  TmpBoilerPlate := nil;
+  try
+    ClearEditControls;
+    FillChar(FEditNote, SizeOf(FEditNote), 0);  //v15.7
+    with FEditNote do
+    begin
+      DocType      := TYP_PROGRESS_NOTE;
+      IsNewNote    := True;
+      Title        := DfltNoteTitle;
+      TitleName    := DfltNoteTitleName;
+      if IsIDChild and (not CanTitleBeIDChild(Title, WhyNot)) then
+        begin
+          Title := 0;
+          TitleName := '';
+        end;
+      if IsSurgeryTitle(Title) then    // Don't want surgery title sneaking in unchallenged
+        begin
+          Title := 0;
+          TitleName := '';
+        end;
+      DateTime     := FMNow;
+      Author       := User.DUZ;
+      AuthorName   := User.Name;
+      Location     := Encounter.Location;
+      LocationName := Encounter.LocationName;
+      VisitDate    := Encounter.DateTime;
+      if IsIDChild then
+        IDParent   := AnIDParent
+      else
+        IDParent   := 0;
+      // Cosigner & PkgRef, if needed, will be set by fNoteProps
+    end;
+    // check to see if interaction necessary to get required fields
+    GetUnresolvedConsultsInfo;
+    if LacksRequiredForCreate or VerifyNoteTitle or uUnresolvedConsults.UnresolvedConsultsExist
+      then HaveRequired := ExecuteNoteProperties(FEditNote, CT_NOTES, IsIDChild, FNewIDChild, '', 0)
+      else HaveRequired := True;
+    // lock the consult request if there is a consult
+    with FEditNote do if (PkgIEN > 0) and (PkgPtr = PKG_CONSULTS) then HaveRequired := LockConsultRequest(PkgIEN);
+    if HaveRequired then
+    begin
+      // set up uPCEEdit for entry of new note
+      uPCEEdit.UseEncounter := True;
+      uPCEEdit.NoteDateTime := FEditNote.DateTime;
+      uPCEEdit.PCEForNote(USE_CURRENT_VISITSTR, uPCEShow);
+      FEditNote.NeedCPT  := uPCEEdit.CPTRequired;
+       // create the note
+      PutNewNote(CreatedNote, FEditNote);
+      uPCEEdit.NoteIEN := CreatedNote.IEN;
+      if CreatedNote.IEN > 0 then LockDocument(CreatedNote.IEN, CreatedNote.ErrorText);
+      if CreatedNote.ErrorText = '' then
+      begin
+        //x := $$RESOLVE^TIUSRVLO formatted string
+        //7348^Note Title^3000913^NERD, YOURA  (N0165)^1329;Rich Vertigan;VERTIGAN,RICH^8E REHAB MED^complete^Adm: 11/05/98;2981105.095547^        ;^^0^^^2
+        with FEditNote do
+        begin
+          x := IntToStr(CreatedNote.IEN) + U + TitleName + U + FloatToStr(FEditNote.DateTime) + U +
+               Patient.Name + U + IntToStr(Author) + ';' + AuthorName + U + LocationName + U + 'new' + U +
+               U + U + U + U + U + U + U;
+          //Link Note to PRF Action
+          if PRF_IEN <> 0 then
+            if sCallV('TIU LINK TO FLAG', [CreatedNote.IEN,PRF_IEN,ActionIEN,Patient.DFN]) = '0' then
+              ShowMsg('TIU LINK TO FLAG: FAILED');
+        end;
+
+        lstNotes.Items.Insert(0, x);
+        uChanging := True;
+        tvNotes.Items.BeginUpdate;
+        if IsIDChild then
+          begin
+            tmpNode := tvNotes.FindPieceNode(IntToStr(AnIDParent), 1, U, tvNotes.Items.GetFirstNode);
+            tmpNode.ImageIndex := IMG_IDNOTE_OPEN;
+            tmpNode.SelectedIndex := IMG_IDNOTE_OPEN;
+            tmpNode := tvNotes.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeNoteTreeObject(x));
+            tmpNode.ImageIndex := IMG_ID_CHILD;
+            tmpNode.SelectedIndex := IMG_ID_CHILD;
+          end
+        else
+          begin
+            tmpNode := tvNotes.Items.AddObjectFirst(tvNotes.Items.GetFirstNode, 'New Note in Progress',
+                                                    MakeNoteTreeObject('NEW^New Note in Progress^^^^^^^^^^^%^0'));
+            TORTreeNode(tmpNode).StringData := 'NEW^New Note in Progress^^^^^^^^^^^%^0';
+            tmpNode.ImageIndex := IMG_TOP_LEVEL;
+            tmpNode := tvNotes.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeNoteTreeObject(x));
+            tmpNode.ImageIndex := IMG_SINGLE;
+            tmpNode.SelectedIndex := IMG_SINGLE;
+          end;
+        tmpNode.StateIndex := IMG_NO_IMAGES;
+        TORTreeNode(tmpNode).StringData := x;
+        tvNotes.Selected := tmpNode;
+        tvNotes.Items.EndUpdate;
+        uChanging := False;
+        Changes.Add(CH_DOC, IntToStr(CreatedNote.IEN), GetTitleText(0), '', CH_SIGN_YES);
+        lstNotes.ItemIndex := 0;
+        EditingIndex := 0;
+        SetSubjectVisible(AskSubjectForNotes);
+        if not assigned(TmpBoilerPlate) then
+          TmpBoilerPlate := TStringList.Create;
+        LoadBoilerPlate(TmpBoilerPlate, FEditNote.Title);
+        FChanged := False;
+        cmdChangeClick(Self); // will set captions, sign state for Changes
+        lstNotesClick(Self);  // will make pnlWrite visible
+        if timAutoSave.Interval <> 0 then EnableAutosave := TRUE;
+        if txtSubject.Visible then txtSubject.SetFocus else memNewNote.SetFocus;
+      end else
+      begin
+        // if note creation failed or failed to get note lock (both unlikely), unlock consult
+        with FEditNote do if (PkgIEN > 0) and (PkgPtr = PKG_CONSULTS) then UnlockConsultRequest(0, PkgIEN);
+        InfoBox(CreatedNote.ErrorText, TX_CREATE_ERR, MB_OK);
+        HaveRequired := False;
+      end; {if CreatedNote.IEN}
+    end; {if HaveRequired}
+    if not HaveRequired then
+    begin
+      ClearEditControls;
+      ShowPCEButtons(False);
+    end;
+  finally
+    if assigned(TmpBoilerPlate) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(CreatedNote.IEN), FEditNote);
+      ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+      QuickCopyWith508Msg(TmpBoilerPlate, memNewNote);
+      UpdateNoteAuthor(DocInfo);
+      TmpBoilerPlate.Free;
+    end;
+    if EnableAutosave then // Don't enable autosave until after dialog fields have been resolved
+      timAutoSave.Enabled := True;
+  end;
+  frmNotes.pnlWriteResize(Self);
+end;
+
+procedure TfrmNotes.InsertAddendum;
+{ sets up fields of pnlWrite to write an addendum for the selected note }
+const
+  AS_ADDENDUM = True;
+  IS_ID_CHILD = False;
+var
+  HaveRequired: Boolean;
+  CreatedNote: TCreatedDoc;
+  tmpNode: TTreeNode;
+  x: string;
+begin
+  ClearEditControls;
+  with FEditNote do
+  begin
+    DocType      := TYP_ADDENDUM;
+    IsNewNote    := False;
+    Title        := TitleForNote(lstNotes.ItemIEN);
+    TitleName    := Piece(lstNotes.Items[lstNotes.ItemIndex], U, 2);
+    if Copy(TitleName,1,1) = '+' then TitleName := Copy(TitleName, 3, 199);
+    DateTime     := FMNow;
+    Author       := User.DUZ;
+    AuthorName   := User.Name;
+    x            := GetPackageRefForNote(lstNotes.ItemIEN);
+    if Piece(x, U, 1) <> '-1' then
+      begin
+        PkgRef       := GetPackageRefForNote(lstNotes.ItemIEN);
+        PkgIEN       := StrToIntDef(Piece(PkgRef, ';', 1), 0);
+        PkgPtr       := Piece(PkgRef, ';', 2);
+      end;
+    Addend       := lstNotes.ItemIEN;
+    //Lines        := memNewNote.Lines;
+    // Cosigner, if needed, will be set by fNoteProps
+    // Location info will be set after the encounter is loaded
+  end;
+  // check to see if interaction necessary to get required fields
+  if LacksRequiredForCreate
+    then HaveRequired := ExecuteNoteProperties(FEditNote, CT_NOTES, IS_ID_CHILD, False, '', 0)
+    else HaveRequired := True;
+  // lock the consult request if there is a consult
+  if HaveRequired then
+    with FEditNote do
+      if (PkgIEN > 0) and (PkgPtr = PKG_CONSULTS) then HaveRequired := LockConsultRequest(PkgIEN);
+  if HaveRequired then
+  begin
+    uPCEEdit.NoteDateTime := FEditNote.DateTime;
+    uPCEEdit.PCEForNote(FEditNote.Addend, uPCEShow);
+    FEditNote.Location     := uPCEEdit.Location;
+    FEditNote.LocationName := ExternalName(uPCEEdit.Location, 44);
+    FEditNote.VisitDate    := uPCEEdit.DateTime;
+    PutAddendum(CreatedNote, FEditNote, FEditNote.Addend);
+    uPCEEdit.NoteIEN := CreatedNote.IEN;
+    if CreatedNote.IEN > 0 then LockDocument(CreatedNote.IEN, CreatedNote.ErrorText);
+    if CreatedNote.ErrorText = '' then
+    begin
+      with FEditNote do
+        begin
+          x := IntToStr(CreatedNote.IEN) + U + 'Addendum to ' + TitleName + U + FloatToStr(DateTime) + U +
+               Patient.Name + U + IntToStr(Author) + ';' + AuthorName + U + LocationName + U + 'new' + U +
+               U + U + U + U + U + U + U;
+        end;
+
+      lstNotes.Items.Insert(0, x);
+      uChanging := True;
+      tvNotes.Items.BeginUpdate;
+      tmpNode := tvNotes.Items.AddObjectFirst(tvNotes.Items.GetFirstNode, 'New Addendum in Progress',
+                                              MakeNoteTreeObject('ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_TOP_LEVEL;
+      tmpNode := tvNotes.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeNoteTreeObject(x));
+      TORTreeNode(tmpNode).StringData := x;
+
+      tmpNode.ImageIndex := IMG_ADDENDUM;
+      tmpNode.SelectedIndex := IMG_ADDENDUM;
+      tvNotes.Selected := tmpNode;
+      tvNotes.Items.EndUpdate;
+      uChanging := False;
+      Changes.Add(CH_DOC, IntToStr(CreatedNote.IEN), GetTitleText(0), '', CH_SIGN_YES);
+      lstNotes.ItemIndex := 0;
+      EditingIndex := 0;
+      SetSubjectVisible(AskSubjectForNotes);
+      cmdChangeClick(Self); // will set captions, sign state for Changes
+      lstNotesClick(Self);  // will make pnlWrite visible
+      if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+      memNewNote.SetFocus;
+    end else
+    begin
+      // if note creation failed or failed to get note lock (both unlikely), unlock consult
+      with FEditNote do if (PkgIEN > 0) and (PkgPtr = PKG_CONSULTS)  then UnlockConsultRequest(0, PkgIEN);
+      InfoBox(CreatedNote.ErrorText, TX_CREATE_ERR, MB_OK);
+      HaveRequired := False;
+    end; {if CreatedNote.IEN}
+  end; {if HaveRequired}
+  if not HaveRequired then ClearEditControls;
+end;
+
+procedure TfrmNotes.LoadForEdit;
+{ retrieves an existing note and places the data in the fields of pnlWrite }
+var
+  tmpNode: TTreeNode;
+  x: string;
+begin
+  ClearEditControls;
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  EditingIndex := lstNotes.ItemIndex;
+  Changes.Add(CH_DOC, lstNotes.ItemID, GetTitleText(EditingIndex), '', CH_SIGN_YES);
+  GetNoteForEdit(FEditNote, lstNotes.ItemIEN);
+  memNewNote.Lines.Assign(FEditNote.Lines);
+  FChanged := False;
+  if FEditNote.Title = TYP_ADDENDUM then
+  begin
+    FEditNote.DocType := TYP_ADDENDUM;
+    FEditNote.TitleName := Piece(lstNotes.Items[lstNotes.ItemIndex], U, 2);
+    if Copy(FEditNote.TitleName,1,1) = '+' then FEditNote.TitleName := Copy(FEditNote.TitleName, 3, 199);
+    if CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0
+      then FEditNote.TitleName := FEditNote.TitleName + 'Addendum to ';
+  end;
+
+  uChanging := True;
+  tvNotes.Items.BeginUpdate;
+
+  tmpNode := tvNotes.FindPieceNode('EDIT', 1, U, nil);
+  if tmpNode = nil then
+    begin
+      tmpNode := tvNotes.Items.AddObjectFirst(tvNotes.Items.GetFirstNode, 'Note being edited',
+                                              MakeNoteTreeObject('EDIT^Note being edited^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'EDIT^Note being edited^^^^^^^^^^^%^0';
+    end
+  else
+    tmpNode.DeleteChildren;
+  x := lstNotes.Items[lstNotes.ItemIndex];
+  tmpNode.ImageIndex := IMG_TOP_LEVEL;
+  tmpNode := tvNotes.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeNoteTreeObject(x));
+  TORTreeNode(tmpNode).StringData := x;
+  if CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0 then
+    tmpNode.ImageIndex := IMG_SINGLE
+  else
+    tmpNode.ImageIndex := IMG_ADDENDUM;
+  tmpNode.SelectedIndex := tmpNode.ImageIndex;
+  tvNotes.Selected := tmpNode;
+  tvNotes.Items.EndUpdate;
+  uChanging := False;
+
+  uPCEEdit.NoteDateTime := MakeFMDateTime(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+  uPCEEdit.PCEForNote(lstNotes.ItemIEN, uPCEShow);
+  FEditNote.NeedCPT := uPCEEdit.CPTRequired;
+  txtSubject.Text := FEditNote.Subject;
+  SetSubjectVisible(AskSubjectForNotes);
+  cmdChangeClick(Self); // will set captions, sign state for Changes
+  lstNotesClick(Self);  // will make pnlWrite visible
+  if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+  memNewNote.SetFocus;
+end;
+
+procedure TfrmNotes.SaveEditedNote(var Saved: Boolean);
+{ validates fields and sends the updated note to the server }
+var
+  UpdatedNote: TCreatedDoc;
+  x: string;
+begin
+  Saved := False;
+  if (memNewNote.GetTextLen = 0) or (not ContainsVisibleChar(memNewNote.Text)) then
+  begin
+    lstNotes.ItemIndex := EditingIndex;
+    x := lstNotes.ItemID;
+    uChanging := True;
+    tvNotes.Selected := tvNotes.FindPieceNode(x, 1, U, tvNotes.Items.GetFirstNode);
+    uChanging := False;
+    tvNotesChange(Self, tvNotes.Selected);
+    if FSilent or
+       ((not FSilent) and
+      (InfoBox(GetTitleText(EditingIndex) + TX_EMPTY_NOTE, TC_EMPTY_NOTE, MB_YESNO) = IDYES))
+    then
+      begin
+        FConfirmed := True;
+        mnuActDeleteClick(Self);
+        Saved := True;
+        FDeleted := True;
+      end
+    else
+      FConfirmed := False;
+    Exit;
+  end;
+  //ExpandTabsFilter(memNewNote.Lines, TAB_STOP_CHARS);
+  FEditNote.Lines    := memNewNote.Lines;
+  //FEditNote.Lines:= SetLinesTo74ForSave(memNewNote.Lines, Self);
+  FEditNote.Subject  := txtSubject.Text;
+  FEditNote.NeedCPT  := uPCEEdit.CPTRequired;
+  timAutoSave.Enabled := False;
+  try
+    PutEditedNote(UpdatedNote, FEditNote, lstNotes.GetIEN(EditingIndex));
+  finally
+    timAutoSave.Enabled := True;
+  end;
+  // there's no unlocking here since the note is still in Changes after a save
+  if UpdatedNote.IEN > 0 then
+  begin
+    if lstNotes.ItemIndex = EditingIndex then
+    begin
+      EditingIndex := -1;
+      lstNotesClick(Self);
+    end;
+    EditingIndex := -1; // make sure EditingIndex reset even if not viewing edited note
+    Saved := True;
+    FNewIDChild := False;
+    FChanged := False;
+  end else
+  begin
+    if not FSilent then
+      InfoBox(TX_SAVE_ERROR1 + UpdatedNote.ErrorText + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  end;
+end;
+
+procedure TfrmNotes.SaveCurrentNote(var Saved: Boolean);
+{ called whenever a note should be saved - uses IEN to call appropriate save logic }
+begin
+  if EditingIndex < 0 then Exit;
+  SaveEditedNote(Saved);
+end;
+
+{ Form events ------------------------------------------------------------------------------ }
+
+procedure TfrmNotes.FormCreate(Sender: TObject);
+begin
+  inherited;
+  PageID := CT_NOTES;
+  EditingIndex := -1;
+  FEditNote.LastCosigner := 0;
+  FEditNote.LastCosignerName := '';
+  FLastNoteID := '';
+  frmDrawers := TfrmDrawers.CreateDrawers(Self, pnlDrawers, [],[]);
+  frmDrawers.Align := alBottom;
+  frmDrawers.RichEditControl := memNewNote;
+  frmDrawers.NewNoteButton := cmdNewNote;
+  frmDrawers.Splitter := splDrawers;
+  frmDrawers.DefTempPiece := 1;
+  FImageFlag := TBitmap.Create;
+  FDocList := TStringList.Create;
+end;
+
+procedure TfrmNotes.pnlRightResize(Sender: TObject);
+{ memNote (TRichEdit) doesn't repaint appropriately unless it's parent panel is refreshed }
+begin
+  inherited;
+  pnlRight.Refresh;
+  memNote.Repaint;
+end;
+
+procedure TfrmNotes.pnlWriteResize(Sender: TObject);
+const
+  LEFT_MARGIN = 4;
+begin
+  inherited;
+  LimitEditWidth(memNewNote, MAX_PROGRESSNOTE_WIDTH - 1);
+
+  //CQ7012 Added test for nil
+  if memNewNote <> nil then
+     memNewNote.Constraints.MinWidth := TextWidthByFont(memNewNote.Font.Handle, StringOfChar('X', MAX_PROGRESSNOTE_WIDTH)) + (LEFT_MARGIN * 2) + ScrollBarWidth;
+  //CQ7012 Added test for nil
+   if (Self <> nil) and (pnlLeft <> nil) and (pnlWrite <> nil) and (sptHorz <> nil) then
+     pnlLeft.Width := self.ClientWidth - pnlWrite.Width - sptHorz.Width;
+  UpdateFormForInput;
+end;
+
+{ Left panel (selector) events ------------------------------------------------------------- }
+
+procedure TfrmNotes.lstNotesClick(Sender: TObject);
+{ loads the text for the selected note or displays the editing panel for the selected note }
+var
+  x: string;
+begin
+  inherited;
+  with lstNotes do if ItemIndex = -1 then Exit
+  else if ItemIndex = EditingIndex then
+  begin
+    pnlWrite.Visible := True;
+    pnlRead.Visible := False;
+    mnuViewDetail.Enabled    := False;
+    if (FEditNote.IDParent <> 0) and (not FNewIDChild) then
+      mnuActChange.Enabled     := False
+    else
+      mnuActChange.Enabled     := True;
+    mnuActLoadBoiler.Enabled := True;
+    UpdateReminderFinish;
+    UpdateFormForInput;
+  end else
+  begin
+    StatusText('Retrieving selected progress note...');
+    Screen.Cursor := crHourGlass;
+    pnlRead.Visible := True;
+    pnlWrite.Visible := False;
+    UpdateReminderFinish;
+    lblTitle.Caption := Piece(Piece(Items[ItemIndex], U, 8), ';', 1) + #9 + Piece(Items[ItemIndex], U, 2) + ', ' +
+                        Piece(Items[ItemIndex], U, 6) + ', ' + Piece(Piece(Items[ItemIndex], U, 5), ';', 2) +
+                        '  (' + FormatFMDateTime('mmm dd,yy@hh:nn', MakeFMDateTime(Piece(Items[ItemIndex], U, 3)))
+                        + ')';
+    lvNotes.Caption := lblTitle.Caption;
+    LoadDocumentText(memNote.Lines, ItemIEN);
+    memNote.SelStart := 0;
+    mnuViewDetail.Enabled    := True;
+    mnuViewDetail.Checked    := False;
+    mnuActChange.Enabled     := False;
+    mnuActLoadBoiler.Enabled := False;
+    Screen.Cursor := crDefault;
+    StatusText('');
+  end;
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.EnableActions;
+  DisplayPCE;  
+  pnlRight.Refresh;
+  memNewNote.Repaint;
+  memNote.Repaint;
+  x := 'TIU^' + lstNotes.ItemID;
+  SetPiece(x, U, 10, Piece(lstNotes.Items[lstNotes.ItemIndex], U, 11));
+  NotifyOtherApps(NAE_REPORT, x);
+end;
+
+procedure TfrmNotes.cmdNewNoteClick(Sender: TObject);
+{ maps 'New Note' button to the New Progress Note menu item }
+begin
+  inherited;
+  mnuActNewClick(Self);
+ end;
+
+procedure TfrmNotes.cmdPCEClick(Sender: TObject);
+var
+  Refresh: boolean;
+  ActionSts: TActionRec;
+  AnIEN: integer;
+  PCEObj, tmpPCEEdit: TPCEData;
+
+  procedure UpdateEncounterInfo;
+  begin
+    if not FEditingNotePCEObj then
+    begin
+      PCEObj := nil;
+      AnIEN := lstNotes.ItemIEN;
+      if (AnIEN <> 0) and (memNote.Lines.Count > 0) then
+      begin
+        ActOnDocument(ActionSts, AnIEN, 'VIEW');
+        if ActionSts.Success then
+        begin
+          uPCEShow.CopyPCEData(uPCEEdit);
+          PCEObj := uPCEEdit;
+        end;
+      end;
+      Refresh := EditPCEData(PCEObj);
+    end
+    else
+    begin
+      UpdatePCE(uPCEEdit);
+      Refresh := TRUE;
+    end;
+    if Refresh and (not frmFrame.Closing) then
+      DisplayPCE;
+  end;
+
+begin
+  inherited;
+  cmdPCE.Enabled := FALSE;
+  if lstNotes.ItemIndex <> EditingIndex then
+    // save uPCEEdit for note being edited, before updating current note's encounter, then restore  (RV - TAM-0801-31056)
+    begin
+      tmpPCEEdit := TPCEData.Create;
+      try
+        uPCEEdit.CopyPCEData(tmpPCEEdit);
+        UpdateEncounterInfo;
+        tmpPCEEdit.CopyPCEData(uPCEEdit);
+      finally
+        tmpPCEEdit.Free;
+      end;
+    end
+  else
+    // no other note being edited, so just proceed as before.
+    UpdateEncounterInfo;
+  if cmdPCE <> nil then
+    cmdPCE.Enabled := TRUE
+end;
+
+{ Right panel (editor) events -------------------------------------------------------------- }
+
+procedure TfrmNotes.mnuActChangeClick(Sender: TObject);
+begin
+  inherited;
+  if (FEditingIndex < 0) or (lstNotes.ItemIndex <> FEditingIndex) then Exit;
+  cmdChangeClick(Sender);
+end;
+
+procedure TfrmNotes.mnuActLoadBoilerClick(Sender: TObject);
+var
+  NoteEmpty: Boolean;
+  BoilerText: TStringList;
+  DocInfo: string;
+
+  procedure AssignBoilerText;
+  begin
+    ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+    QuickCopyWith508Msg(BoilerText, memNewNote);
+    UpdateNoteAuthor(DocInfo);
+    FChanged := False;
+  end;
+
+begin
+  inherited;
+  if (FEditingIndex < 0) or (lstNotes.ItemIndex <> FEditingIndex) then Exit;
+  BoilerText := TStringList.Create;
+  try
+    NoteEmpty := memNewNote.Text = '';
+    LoadBoilerPlate(BoilerText, FEditNote.Title);
+    if (BoilerText.Text <> '') or
+       assigned(GetLinkedTemplate(IntToStr(FEditNote.Title), ltTitle)) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(lstNotes.ItemIEN), FEditNote);
+      if NoteEmpty then AssignBoilerText else
+      begin
+        case QueryBoilerPlate(BoilerText) of
+        0:  { do nothing } ;                         // ignore
+        1: begin
+             ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+             QuickAddWith508Msg(BoilerText, memNewNote);  // append
+             UpdateNoteAuthor(DocInfo);
+           end;
+        2: AssignBoilerText;                         // replace
+        end;
+      end;
+    end else
+    begin
+      if Sender = mnuActLoadBoiler
+        then InfoBox(TX_NO_BOIL, TC_NO_BOIL, MB_OK)
+        else
+        begin
+          if not NoteEmpty then
+//            if not FChanged and (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
+            if (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
+              then memNewNote.Lines.Clear;
+        end;
+    end; {if BoilerText.Text <> ''}
+  finally
+    BoilerText.Free;
+  end;
+end;
+
+procedure TfrmNotes.cmdChangeClick(Sender: TObject);
+var
+  LastTitle, LastConsult: Integer;
+  OKPressed, IsIDChild: Boolean;
+  x: string;
+  DisAssoText : String;
+begin
+  inherited;
+  IsIDChild := uIDNotesActive and (FEditNote.IDParent > 0);
+  LastTitle   := FEditNote.Title;
+  FEditNote.IsNewNote := False;
+  DisAssoText := '';
+  if (FEditNote.PkgPtr = PKG_CONSULTS) then
+    DisAssoText := 'Consults';
+  if (FEditNote.PkgPtr = PKG_PRF) then
+    DisAssoText := 'Patient Record Flags';
+  if (DisAssoText <> '') and (Sender <> Self) then
+    if InfoBox('If this title is changed, Any '+DisAssoText+' will be disassociated'+
+               ' with this note',
+               'Disassociate '+DisAssoText+'?',MB_OKCANCEL) = IDCANCEL	 then
+      exit;
+  if FEditNote.PkgPtr = PKG_CONSULTS then LastConsult := FEditNote.PkgIEN else LastConsult := 0;;
+  if Sender <> Self then OKPressed := ExecuteNoteProperties(FEditNote, CT_NOTES, IsIDChild, FNewIDChild, '', 0)
+    else OKPressed := True;
+  if not OKPressed then Exit;
+  // update display fields & uPCEEdit
+  lblNewTitle.Caption := ' ' + FEditNote.TitleName + ' ';
+  if (FEditNote.Addend > 0) and (CompareText(Copy(lblNewTitle.Caption, 2, 8), 'Addendum') <> 0)
+    then lblNewTitle.Caption := ' Addendum to:' + lblNewTitle.Caption;
+  with lblNewTitle do bvlNewTitle.SetBounds(Left - 1, Top - 1, Width + 2, Height + 2);
+  lblRefDate.Caption := FormatFMDateTime('mmm dd,yyyy@hh:nn', FEditNote.DateTime);
+  lblAuthor.Caption  := FEditNote.AuthorName;
+  if uPCEEdit.Inpatient then x := 'Adm: ' else x := 'Vst: ';
+  x := x + FormatFMDateTime('mm/dd/yy', FEditNote.VisitDate) + '  ' + FEditNote.LocationName;
+  lblVisit.Caption   := x;
+  if Length(FEditNote.CosignerName) > 0
+    then lblCosigner.Caption := 'Expected Cosigner: ' + FEditNote.CosignerName
+    else lblCosigner.Caption := '';
+  uPCEEdit.NoteTitle  := FEditNote.Title;
+  // modify signature requirements if author or cosigner changed
+  if (User.DUZ <> FEditNote.Author) and (User.DUZ <> FEditNote.Cosigner)
+    then Changes.ReplaceSignState(CH_DOC, lstNotes.ItemID, CH_SIGN_NA)
+    else Changes.ReplaceSignState(CH_DOC, lstNotes.ItemID, CH_SIGN_YES);
+  x := lstNotes.Items[EditingIndex];
+  SetPiece(x, U, 2, lblNewTitle.Caption);
+  SetPiece(x, U, 3, FloatToStr(FEditNote.DateTime));
+  tvNotes.Selected.Text := MakeNoteDisplayText(x);
+  TORTreeNode(tvNotes.Selected).StringData := x;
+  lstNotes.Items[EditingIndex] := x;
+  Changes.ReplaceText(CH_DOC, lstNotes.ItemID, GetTitleText(EditingIndex));
+  with FEditNote do
+  begin
+  if (PkgPtr = PKG_CONSULTS) and (LastConsult <> PkgIEN) then
+  begin
+    // try to lock the new consult, reset to previous if unable
+    if (PkgIEN > 0) and not LockConsultRequest(PkgIEN) then
+    begin
+      Infobox(TX_NO_ORD_CHG, TC_NO_ORD_CHG, MB_OK);
+      PkgIEN := LastConsult;
+    end else
+    begin
+      // unlock the previous consult
+      if LastConsult > 0 then UnlockOrderIfAble(GetConsultOrderIEN(LastConsult));
+      if PkgIEN = 0 then FOrderID := '';
+    end;
+  end;
+  //Link Note to PRF Action
+  if PRF_IEN <> 0 then
+    if sCallV('TIU LINK TO FLAG', [lstNotes.ItemIEN,PRF_IEN,ActionIEN,Patient.DFN]) = '0' then
+      ShowMsg('TIU LINK TO FLAG: FAILED');
+  end;
+
+  if LastTitle <> FEditNote.Title then mnuActLoadBoilerClick(Self);
+end;
+
+procedure TfrmNotes.memNewNoteChange(Sender: TObject);
+begin
+  inherited;
+  FChanged := True;
+end;
+
+procedure TfrmNotes.pnlFieldsResize(Sender: TObject);
+{ center the reference date on the panel }
+begin
+  inherited;
+  lblRefDate.Left := (pnlFields.Width - lblRefDate.Width) div 2;
+  if lblRefDate.Left < (lblNewTitle.Left + lblNewTitle.Width + 6)
+    then lblRefDate.Left := (lblNewTitle.Left + lblNewTitle.Width);
+  UpdateFormForInput;
+end;
+
+procedure TfrmNotes.DoAutoSave(Suppress: integer = 1);
+var
+  ErrMsg: string;
+begin
+  if fFrame.frmFrame.DLLActive = true then Exit;
+  if (EditingIndex > -1) and FChanged then
+  begin
+    StatusText('Autosaving note...');
+    //PutTextOnly(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex));
+    timAutoSave.Enabled := False;
+    try
+      SetText(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex), Suppress);
+    finally
+      timAutoSave.Enabled := True;
+    end;
+    FChanged := False;
+    StatusText('');
+  end;
+  if ErrMsg <> '' then
+    InfoBox(TX_SAVE_ERROR1 + ErrMsg + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  //Assert(ErrMsg = '', 'AutoSave: ' + ErrMsg);
+end;
+
+procedure TfrmNotes.timAutoSaveTimer(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave;
+end;
+
+{ View menu events ------------------------------------------------------------------------- }
+
+procedure TfrmNotes.mnuViewClick(Sender: TObject);
+{ changes the list of notes available for viewing }
+var
+  AuthCtxt: TAuthorContext;
+  SearchCtxt: TSearchContext; // Text Search CQ: HDS00002856
+  DateRange: TNoteDateRange;
+  Saved: Boolean;
+begin
+  inherited;
+  // save note at EditingIndex?
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FLastNoteID := lstNotes.ItemID;
+  mnuViewDetail.Checked := False;
+  StatusText('Retrieving progress note list...');
+  if Sender is TMenuItem then ViewContext := TMenuItem(Sender).Tag
+    else if FCurrentContext.Status <> '' then ViewContext := NC_CUSTOM
+    else ViewContext := NC_RECENT;
+  case ViewContext of
+  NC_RECENT:     begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblNotes.Caption := 'Last ' + IntToStr(ReturnMaxNotes) + ' Notes';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   FCurrentContext.MaxDocs := ReturnMaxNotes;
+                   LoadNotes;
+                 end;
+  NC_ALL:        begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblNotes.Caption := 'All Signed Notes';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   LoadNotes;
+                 end;
+  NC_UNSIGNED:   begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblNotes.Caption := 'Unsigned Notes';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   LoadNotes;
+                 end;
+  // Text Search CQ: HDS00002856 --------------------
+  NC_SEARCHTEXT: begin;
+                   SearchTextStopFlag := False;
+                   SelectSearchText(Font.Size, FCurrentContext.SearchString, SearchCtxt );
+                   with SearchCtxt do if Changed then
+                   begin
+                     //FCurrentContext.Status := IntToStr(ViewContext);
+                     frmSearchStop.Show;
+                     lblNotes.Caption := 'Search: '+ SearchString;
+                     frmSearchStop.lblSearchStatus.Caption := lblNotes.Caption;
+                     FCurrentContext.SearchString := SearchString;
+                     LoadNotes;
+                   end;
+                   // Only do LoadNotes if something changed 
+                 end;
+  // Text Search CQ: HDS00002856 --------------------
+  NC_UNCOSIGNED: begin
+                   FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                   lblNotes.Caption := 'Uncosigned Notes';
+                   FCurrentContext.Status := IntToStr(ViewContext);
+                   LoadNotes;
+                 end;
+  NC_BY_AUTHOR:  begin
+                   SelectAuthor(Font.Size, FCurrentContext, AuthCtxt);
+                   with AuthCtxt do if Changed then
+                   begin
+                     FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                     lblNotes.Caption := AuthorName + ': Signed Notes';
+                     FCurrentContext.Status := IntToStr(NC_BY_AUTHOR);
+                     FCurrentContext.Author := Author;
+                     FCurrentContext.TreeAscending := Ascending;
+                     LoadNotes;
+                   end;
+                 end;
+  NC_BY_DATE:    begin
+                   SelectNoteDateRange(Font.Size, FCurrentContext, DateRange);
+                   with DateRange do if Changed then
+                   begin
+                     FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                     lblNotes.Caption := FormatFMDateTime('mmm dd,yy', FMBeginDate) + ' to ' +
+                                         FormatFMDateTime('mmm dd,yy', FMEndDate) + ': Signed Notes';
+                     FCurrentContext.BeginDate     := BeginDate;
+                     FCurrentContext.EndDate       := EndDate;
+                     FCurrentContext.FMBeginDate   := FMBeginDate;
+                     FCurrentContext.FMEndDate     := FMEndDate;
+                     FCurrentContext.TreeAscending := Ascending;
+                     FCurrentContext.Status        := IntToStr(NC_BY_DATE);
+                     LoadNotes;
+                   end;
+                 end;
+  NC_CUSTOM:     begin
+                   if Sender is TMenuItem then
+                     begin
+                       SelectTIUView(Font.Size, True, FCurrentContext, uTIUContext);
+                       //lblNotes.Caption := 'Custom List';
+                     end;
+                   with uTIUContext do if Changed then
+                   begin
+                     //if not (Sender is TMenuItem) then lblNotes.Caption := 'Default List';
+                     //if MaxDocs = 0 then MaxDocs   := ReturnMaxNotes;
+                     FCurrentContext.BeginDate     := BeginDate;
+                     FCurrentContext.EndDate       := EndDate;
+                     FCurrentContext.FMBeginDate   := FMBeginDate;
+                     FCurrentContext.FMEndDate     := FMEndDate;
+                     FCurrentContext.Status        := Status;
+                     FCurrentContext.Author        := Author;
+                     FCurrentContext.MaxDocs       := MaxDocs;
+                     FCurrentContext.ShowSubject   := ShowSubject;
+                     // NEW PREFERENCES:
+                     FCurrentContext.SortBy        := SortBy;
+                     FCurrentContext.ListAscending := ListAscending;
+                     FCurrentContext.GroupBy       := GroupBy;
+                     FCurrentContext.TreeAscending := TreeAscending;
+                     FCurrentContext.SearchField   := SearchField;
+                     FCurrentContext.Keyword       := Keyword;
+                     FCurrentContext.Filtered      := Filtered;
+                     LoadNotes;
+                   end;
+                 end;
+  end; {case}
+  lblNotes.Caption := SetNoteTreeLabel(FCurrentContext);
+  // Text Search CQ: HDS00002856 --------------------
+  If FCurrentContext.SearchString <> '' then
+    lblNotes.Caption := lblNotes.Caption+', containing "'+FCurrentContext.SearchString+'"';
+  If SearchTextStopFlag = True then begin;
+    lblNotes.Caption := 'Search for "'+FCurrentContext.SearchString+'" was stopped!';
+  end;
+  frmSearchStop.Hide;
+  // Text Search CQ: HDS00002856 --------------------
+  lblNotes.hint := lblNotes.Caption;
+  tvNotes.Caption := lblNotes.Caption;
+  StatusText('');
+end;
+
+{ Action menu events ----------------------------------------------------------------------- }
+
+function TfrmNotes.StartNewEdit(NewNoteType: integer): Boolean;
+{ if currently editing a note, returns TRUE if the user wants to start a new one }
+var
+  Saved: Boolean;
+  Msg, CapMsg: string;
+begin
+  FStarting := False;
+  Result := True;
+  cmdNewNote.Enabled := False;
+  if EditingIndex > -1 then
+  begin
+    FStarting := True;
+    case NewNoteType of
+      NT_ACT_ADDENDUM:  begin
+                          Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE3;
+                          CapMsg := TC_NEW_SAVE3;
+                        end;
+      NT_ACT_EDIT_NOTE: begin
+                          Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE4;
+                          CapMsg := TC_NEW_SAVE4;
+                        end;
+      NT_ACT_ID_ENTRY:  begin
+                          Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE5;
+                          CapMsg := TC_NEW_SAVE5;
+                        end;
+    else
+      begin
+        Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE2;
+        CapMsg := TC_NEW_SAVE2;
+      end;
+    end;
+    if InfoBox(Msg, CapMsg, MB_YESNO) = IDNO then
+    begin
+      Result := False;
+      FStarting := False;
+    end
+    else
+      begin
+        SaveCurrentNote(Saved);
+        if not Saved then Result := False else LoadNotes;
+        FStarting := False;
+      end;
+  end;
+  cmdNewNote.Enabled := (Result = False) and (FStarting = False);
+end;
+
+procedure TfrmNotes.mnuActNewClick(Sender: TObject);
+const
+  IS_ID_CHILD = False;
+{ switches to current new note or creates a new note if none is being edited already }
+begin
+  inherited;
+  if not StartNewEdit(NT_ACT_NEW_NOTE) then Exit;
+  //LoadNotes;
+  // make sure a visit (time & location) is available before creating the note
+  if Encounter.NeedVisit then
+  begin
+    UpdateVisit(Font.Size, DfltTIULocation);
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.NeedVisit then
+  begin
+    InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+    ShowPCEButtons(False);
+    Exit;
+  end;
+  InsertNewNote(IS_ID_CHILD, 0);
+end;
+
+procedure TfrmNotes.mnuActAddIDEntryClick(Sender: TObject);
+const
+  IS_ID_CHILD = True;
+var
+  AnIDParent: integer;
+{ switches to current new note or creates a new note if none is being edited already }
+begin
+  inherited;
+  AnIDParent := lstNotes.ItemIEN;
+  if not StartNewEdit(NT_ACT_ID_ENTRY) then Exit;
+  //LoadNotes;
+  with tvNotes do Selected := FindPieceNode(IntToStr(AnIDParent), U, Items.GetFirstNode);
+  // make sure a visit (time & location) is available before creating the note
+  if Encounter.NeedVisit then
+  begin
+    UpdateVisit(Font.Size, DfltTIULocation);
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.NeedVisit then
+  begin
+    InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  InsertNewNote(IS_ID_CHILD, AnIDParent);
+end;
+
+procedure TfrmNotes.mnuActAddendClick(Sender: TObject);
+{ make an addendum to an existing note }
+var
+  ActionSts: TActionRec;
+  ANoteID: string;
+begin
+  inherited;
+  if lstNotes.ItemIEN <= 0 then Exit;
+  ANoteID := lstNotes.ItemID;
+  if not StartNewEdit(NT_ACT_ADDENDUM) then Exit;
+  //LoadNotes;
+  with tvNotes do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);
+  if lstNotes.ItemIndex = EditingIndex then
+  begin
+    InfoBox(TX_ADDEND_NO, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'MAKE ADDENDUM');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  with lstNotes do if TitleForNote(lstNotes.ItemIEN) = TYP_ADDENDUM then
+  begin
+    InfoBox(TX_ADDEND_AD, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  InsertAddendum;
+end;
+
+procedure TfrmNotes.mnuActDetachFromIDParentClick(Sender: TObject);
+var
+  DocID, WhyNot: string;
+  Saved: boolean;
+  SavedDocID: string;
+begin
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    LoadNotes;
+    with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if not CanBeAttached(PDocTreeObject(tvNotes.Selected.Data)^.DocID, WhyNot) then
+    begin
+      WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+      WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+      InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+      Exit;
+    end;
+  if (InfoBox('DETACH:   ' + tvNotes.Selected.Text + CRLF +  CRLF +
+              '  FROM:   ' + tvNotes.Selected.Parent.Text + CRLF + CRLF +
+              'Are you sure?', TX_DETACH_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES)
+      then Exit;
+  DocID := PDocTreeObject(tvNotes.Selected.Data)^.DocID;
+  SavedDocID := PDocTreeObject(tvNotes.Selected.Parent.Data)^.DocID;
+  if DetachEntryFromParent(DocID, WhyNot) then
+    begin
+      LoadNotes;
+      with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+      if tvNotes.Selected <> nil then tvNotes.Selected.Expand(False);
+    end
+  else
+    begin
+      WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+      WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+      InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+    end;
+end;
+
+procedure TfrmNotes.mnuActSignListClick(Sender: TObject);
+{ add the note to the Encounter object, see mnuActSignClick - copied}
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  ActionType, SignTitle: string;
+  ActionSts: TActionRec;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then Exit;
+  if lstNotes.ItemIndex = EditingIndex then Exit;  // already in signature list
+  if not NoteHasText(lstNotes.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstNotes.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstNotes.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, ActionType);
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LockConsultRequestAndNote(lstNotes.ItemIEN);
+  with lstNotes do Changes.Add(CH_DOC, ItemID, GetTitleText(ItemIndex), '', CH_SIGN_YES);
+end;
+
+procedure TfrmNotes.RemovePCEFromChanges(IEN: Int64; AVisitStr: string = '');
+begin
+  if IEN = NT_ADDENDUM then Exit;  // no PCE information entered for an addendum
+  // do we need to call DeletePCE(AVisitStr), as was done with NT_NEW_NOTE (ien=-10)???
+  if AVisitStr = '' then AVisitStr := VisitStrForNote(IEN);
+  Changes.Remove(CH_PCE, 'V' + AVisitStr);
+  Changes.Remove(CH_PCE, 'P' + AVisitStr);
+  Changes.Remove(CH_PCE, 'D' + AVisitStr);
+  Changes.Remove(CH_PCE, 'I' + AVisitStr);
+  Changes.Remove(CH_PCE, 'S' + AVisitStr);
+  Changes.Remove(CH_PCE, 'A' + AVisitStr);
+  Changes.Remove(CH_PCE, 'H' + AVisitStr);
+  Changes.Remove(CH_PCE, 'E' + AVisitStr);
+  Changes.Remove(CH_PCE, 'T' + AVisitStr);
+end;
+
+procedure TfrmNotes.mnuActDeleteClick(Sender: TObject);
+{ delete the selected progress note & remove from the Encounter object if necessary }
+var
+  DeleteSts, ActionSts: TActionRec;
+  SaveConsult, SavedDocIEN: Integer;
+  ReasonForDelete, AVisitStr, SavedDocID, x: string;
+  Saved: boolean;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then Exit;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'DELETE RECORD');
+  if ShowMsgOn(not ActionSts.Success, ActionSts.Reason, TX_IN_AUTH) then Exit;
+  ReasonForDelete := SelectDeleteReason(lstNotes.ItemIEN);
+  if ReasonForDelete = DR_CANCEL then Exit;
+  // suppress prompt for deletion when called from SaveEditedNote (Sender = Self)
+  if (Sender <> Self) and (InfoBox(MakeNoteDisplayText(lstNotes.Items[lstNotes.ItemIndex]) + TX_DEL_OK,
+    TX_DEL_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES) then Exit;
+  // do the appropriate locking
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  // retraction notification message
+  if JustifyDocumentDelete(lstNotes.ItemIEN) then
+     InfoBox(TX_RETRACT, TX_RETRACT_CAP, MB_OK);
+  SavedDocID := lstNotes.ItemID;
+  SavedDocIEN := lstNotes.ItemIEN;
+  if (EditingIndex > -1) and (not FConfirmed) and (lstNotes.ItemIndex <> EditingIndex) and (memNewNote.GetTextLen > 0) then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+    end;
+  EditingIndex := -1;
+  FConfirmed := False;
+  (*  if Saved then
+    begin
+      EditingIndex := -1;
+      mnuViewClick(Self);
+      with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+   end;*)
+  // remove the note
+  DeleteSts.Success := True;
+  x := GetPackageRefForNote(SavedDocIEN);
+  SaveConsult := StrToIntDef(Piece(x, ';', 1), 0);
+  AVisitStr := VisitStrForNote(SavedDocIEN);
+  RemovePCEFromChanges(SavedDocIEN, AVisitStr);
+  if (SavedDocIEN > 0) and (lstNotes.ItemIEN = SavedDocIEN) then DeleteDocument(DeleteSts, SavedDocIEN, ReasonForDelete);
+  if not Changes.Exist(CH_DOC, SavedDocID) then UnlockDocument(SavedDocIEN);
+  Changes.Remove(CH_DOC, SavedDocID);  // this will unlock the document if in Changes
+  UnlockConsultRequest(0, SaveConsult);     // note has been deleted, so 1st param = 0
+  // reset the display now that the note is gone
+  if DeleteSts.Success then
+  begin
+    DeletePCE(AVisitStr);  // removes PCE data if this was the only note pointing to it
+    ClearEditControls;
+    //ClearPtData;   WRONG - fixed in v15.10 - RV
+    LoadNotes;
+(*    with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    if tvNotes.Selected <> nil then tvNotesChange(Self, tvNotes.Selected) else
+    begin*)
+      pnlWrite.Visible := False;
+      pnlRead.Visible := True;
+      UpdateReminderFinish;
+      ShowPCEControls(False);
+      frmDrawers.DisplayDrawers(TRUE, [odTemplates], [odTemplates]); //FALSE);
+      ShowPCEButtons(FALSE);
+    //end; {if ItemIndex}
+  end {if DeleteSts}
+  else InfoBox(DeleteSts.Reason, TX_DEL_ERR, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmNotes.mnuActEditClick(Sender: TObject);
+{ load the selected progress note for editing }
+var
+  ActionSts: TActionRec;
+  ANoteID: string;
+begin
+  inherited;
+  if lstNotes.ItemIndex = EditingIndex then Exit;
+  ANoteID := lstNotes.ItemID;
+  if not StartNewEdit(NT_ACT_EDIT_NOTE) then Exit;
+  //LoadNotes;
+  with tvNotes do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'EDIT RECORD');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LoadForEdit;
+end;
+
+procedure TfrmNotes.mnuActSaveClick(Sender: TObject);
+{ saves the note that is currently being edited }
+var
+  Saved: Boolean;
+  SavedDocID: string;
+begin
+  inherited;
+  if EditingIndex > -1 then
+    begin
+      SavedDocID := Piece(lstNotes.Items[EditingIndex], U, 1);
+      FLastNoteID := SavedDocID;
+      SaveCurrentNote(Saved);
+      if Saved and (EditingIndex < 0) and (not FDeleted) then   
+      //if Saved then
+        begin
+          LoadNotes;
+          with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+       end;
+    end
+  else InfoBox(TX_NO_NOTE, TX_SAVE_NOTE, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmNotes.mnuActSignClick(Sender: TObject);
+{ sign the currently selected note, save first if necessary }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  Saved, NoteUnlocked: Boolean;
+  ActionType, ESCode, SignTitle: string;
+  ActionSts, SignSts: TActionRec;
+  OK: boolean;
+  SavedDocID, tmpItem: string;
+  EditingID: string;                                         //v22.12 - RV
+  tmpNode: TTreeNode;
+begin
+  inherited;
+(*  if lstNotes.ItemIndex = EditingIndex then                //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentNote(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+    tmpItem := lstNotes.Items[EditingIndex];                 //v22.12 - RV
+  SavedDocID := lstNotes.ItemID;*)                           //v22.12 - RV
+  SavedDocID := lstNotes.ItemID;                             //v22.12 - RV
+  FLastNoteID := SavedDocID;                                 //v22.12 - RV
+  if lstNotes.ItemIndex = EditingIndex then                  //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentNote(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    tmpItem := lstNotes.Items[EditingIndex];                 //v22.12 - RV
+    EditingID := Piece(tmpItem, U, 1);                       //v22.12 - RV
+  end;                                                       //v22.12 - RV
+  if not NoteHasText(lstNotes.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstNotes.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstNotes.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  // no exits after things are locked
+  NoteUnlocked := False;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, ActionType);
+  if ActionSts.Success then
+  begin
+    OK := IsOK2Sign(uPCEShow, lstNotes.ItemIEN);
+    if frmFrame.Closing then exit;
+    if(uPCEShow.Updated) then
+    begin
+      uPCEShow.CopyPCEData(uPCEEdit);
+      uPCEShow.Updated := FALSE;
+      lstNotesClick(Self);
+    end;
+    if not AuthorSignedDocument(lstNotes.ItemIEN) then
+    begin
+      if (InfoBox(TX_AUTH_SIGNED +
+          GetTitleText(lstNotes.ItemIndex),TX_SIGN ,MB_YESNO)= ID_NO) then exit;
+    end;
+    if(OK) then
+    begin
+      with lstNotes do SignatureForItem(Font.Size, MakeNoteDisplayText(Items[ItemIndex]), SignTitle, ESCode);
+      if Length(ESCode) > 0 then
+      begin
+        SignDocument(SignSts, lstNotes.ItemIEN, ESCode);
+        RemovePCEFromChanges(lstNotes.ItemIEN);
+        NoteUnlocked := Changes.Exist(CH_DOC, lstNotes.ItemID);
+        Changes.Remove(CH_DOC, lstNotes.ItemID);  // this will unlock if in Changes
+        if SignSts.Success then
+        begin
+          SendMessage(frmConsults.Handle, UM_NEWORDER, ORDER_SIGN, 0);      {*REV*}
+          lstNotesClick(Self);
+        end
+        else InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end  {if Length(ESCode)}
+      else
+        NoteUnlocked := Changes.Exist(CH_DOC, lstNotes.ItemID);
+    end;
+  end
+  else InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+  if not NoteUnlocked then UnlockDocument(lstNotes.ItemIEN);
+  UnlockConsultRequest(lstNotes.ItemIEN);
+  //SetViewContext(FCurrentContext);  //v22.12 - RV
+  LoadNotes;                          //v22.12 - RV
+  //if EditingIndex > -1 then         //v22.12 - RV
+  if (EditingID <> '') then           //v22.12 - RV
+    begin
+      lstNotes.Items.Insert(0, tmpItem);
+      tmpNode := tvNotes.Items.AddObjectFirst(tvNotes.Items.GetFirstNode, 'Note being edited',
+                 MakeNoteTreeObject('EDIT^Note being edited^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'EDIT^Note being edited^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_TOP_LEVEL;
+      tmpNode := tvNotes.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(tmpItem), MakeNoteTreeObject(tmpItem));
+      TORTreeNode(tmpNode).StringData := tmpItem;
+      SetTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentContext, CT_NOTES);
+      EditingIndex := lstNotes.SelectByID(EditingID);                 //v22.12 - RV
+    end;
+  //with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);  //v22.12 - RV
+  with tvNotes do                                                                  //v22.12 - RV
+  begin                                                                            //v22.12 - RV
+    Selected := FindPieceNode(FLastNoteID, U, Items.GetFirstNode);                 //v22.12 - RV
+    if Selected <> nil then
+      tvNotesChange(Self, Selected)                                 //v22.12 - RV
+    else
+      tvNotes.Selected := tvNotes.Items[0]; //first Node in treeview
+  end;                                                                             //v22.12 - RV
+end;
+
+procedure TfrmNotes.SaveSignItem(const ItemID, ESCode: string);
+{ saves and optionally signs a progress note or addendum }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  AnIndex, IEN, i: Integer;
+  Saved, ContinueSign: Boolean;  {*RAB* 8/26/99}
+  ActionSts, SignSts: TActionRec;
+  APCEObject: TPCEData;
+  OK: boolean;
+  ActionType, SignTitle: string;
+begin
+  AnIndex := -1;
+  IEN := StrToIntDef(ItemID, 0);
+  if IEN = 0 then Exit;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then FSilent := True;
+  with lstNotes do for i := 0 to Items.Count - 1 do if lstNotes.GetIEN(i) = IEN then
+  begin
+    AnIndex := i;
+    break;
+  end;
+  if (AnIndex > -1) and (AnIndex = EditingIndex) then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    if FDeleted then
+      begin
+        FDeleted := False;
+        Exit;
+      end;
+    AnIndex := lstNotes.SelectByIEN(IEN);
+    //IEN := lstNotes.GetIEN(AnIndex);                    // saving will change IEN
+  end;
+  if Length(ESCode) > 0 then
+  begin
+    if CosignDocument(IEN) then
+    begin
+      SignTitle := TX_COSIGN;
+      ActionType := SIG_COSIGN;
+    end else
+    begin
+      SignTitle := TX_SIGN;
+      ActionType := SIG_SIGN;
+    end;
+    ActOnDocument(ActionSts, IEN, ActionType);
+    if not ActionSts.Success then
+      begin
+        InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+        ContinueSign := False;
+      end
+    else if not NoteHasText(IEN) then
+      begin
+        InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+        ContinueSign := False;
+      end
+    else if not LastSaveClean(IEN) and
+      (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES)
+       then ContinueSign := False
+    else ContinueSign := True;
+    if ContinueSign then
+    begin
+      if (AnIndex >= 0) and (AnIndex = lstNotes.ItemIndex) then
+        APCEObject := uPCEShow
+      else
+        APCEObject := nil;
+      OK := IsOK2Sign(APCEObject, IEN);
+      if frmFrame.Closing then exit;
+      if(assigned(APCEObject)) and (uPCEShow.Updated) then
+      begin
+        uPCEShow.CopyPCEData(uPCEEdit);
+        uPCEShow.Updated := FALSE;
+        lstNotesClick(Self);
+      end
+      else
+        uPCEEdit.Clear;
+      if(OK) then
+      begin
+        //if ((not FSilent) and IsSurgeryTitle(TitleForNote(IEN))) then DisplayOpTop(IEN);
+        SignDocument(SignSts, IEN, ESCode);
+        if not SignSts.Success then InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end; {if OK}
+    end; {if ContinueSign}
+  end; {if Length(ESCode)}
+
+  UnlockConsultRequest(IEN);
+  // GE 14926; added if (AnIndex> -1) to by pass LoadNotes when creating on narking Allerg Entered In error.
+  if (AnIndex > -1) and (AnIndex = lstNotes.ItemIndex) and (not frmFrame.ContextChanging) then
+    begin
+      LoadNotes;
+        with tvNotes do Selected := FindPieceNode(IntToStr(IEN), U, Items.GetFirstNode);
+    end;
+end;
+
+procedure TfrmNotes.popNoteMemoPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteMemo) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popNoteMemo))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popNoteMemoCut.Enabled      := FEditCtrl.SelLength > 0;
+    popNoteMemoCopy.Enabled     := popNoteMemoCut.Enabled;
+    popNoteMemoPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+    popNoteMemoTemplate.Enabled := frmDrawers.CanEditTemplates and popNoteMemoCut.Enabled;
+    popNoteMemoFind.Enabled := FEditCtrl.GetTextLen > 0;
+  end else
+  begin
+    popNoteMemoCut.Enabled      := False;
+    popNoteMemoCopy.Enabled     := False;
+    popNoteMemoPaste.Enabled    := False;
+    popNoteMemoTemplate.Enabled := False;
+  end;
+  if pnlWrite.Visible then
+  begin
+    popNoteMemoSpell.Enabled    := True;
+    popNoteMemoGrammar.Enabled  := True;
+    popNoteMemoReformat.Enabled := True;
+    popNoteMemoReplace.Enabled  := (FEditCtrl.GetTextLen > 0);
+    popNoteMemoPreview.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+    popNoteMemoInsTemplate.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+    popNoteMemoViewCslt.Enabled := (FEditNote.PkgPtr = PKG_CONSULTS); // if editing consult title
+  end else
+  begin
+    popNoteMemoSpell.Enabled    := False;
+    popNoteMemoGrammar.Enabled  := False;
+    popNoteMemoReformat.Enabled := False;
+    popNoteMemoReplace.Enabled  := False;
+    popNoteMemoPreview.Enabled  := False;
+    popNoteMemoInsTemplate.Enabled  := False;
+    popNoteMemoViewCslt.Enabled := FALSE;
+  end;
+end;
+
+procedure TfrmNotes.popNoteMemoCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmNotes.popNoteMemoCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmNotes.popNoteMemoPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText; {*KCM*}
+  frmNotes.pnlWriteResize(Self);
+  //FEditCtrl.PasteFromClipboard;        // use AsText to prevent formatting
+end;
+
+procedure TfrmNotes.popNoteMemoReformatClick(Sender: TObject);
+begin
+  inherited;
+  if Screen.ActiveControl <> memNewNote then Exit;
+  ReformatMemoParagraph(memNewNote);
+end;
+
+procedure TfrmNotes.popNoteMemoSaveContinueClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := True;
+  DoAutoSave;
+end;
+
+procedure TfrmNotes.popNoteMemoFindClick(Sender: TObject);
+//var
+  //hData: THandle;  //CQ8300
+  //pData: ^ClipboardData; //CQ8300
+begin
+  inherited;
+  SendMessage(TRichEdit(popNoteMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgFindText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      Options := [frDown, frHideUpDown];
+{
+      //CQ8300
+      OpenClipboard(dlgFindText.Handle);
+      hData := GetClipboardData(CF_TEXT);
+      pData := GlobalLock(hData);
+      FindText := pData^.Text;
+      GlobalUnlock(hData);
+      CloseClipboard;
+      //end CQ8300
+}
+      Execute;
+    end;
+end;
+
+procedure TfrmNotes.dlgFindTextFind(Sender: TObject);
+begin
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmNotes.popNoteMemoReplaceClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popNoteMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgReplaceText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      ReplaceText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmNotes.dlgReplaceTextFind(Sender: TObject);
+begin
+  inherited;
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmNotes.dlgReplaceTextReplace(Sender: TObject);
+begin
+  inherited;
+  dmodShared.ReplaceRichEditText(dlgReplaceText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmNotes.popNoteMemoSpellClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    SpellCheckForControl(memNewNote);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmNotes.popNoteMemoGrammarClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    GrammarCheckForControl(memNewNote);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmNotes.popNoteMemoViewCsltClick(Sender: TObject);
+var
+  CsltIEN: integer ;
+  ConsultDetail: TStringList;
+  x: string;
+begin
+  inherited;
+  if (Screen.ActiveControl <> memNewNote) or (FEditNote.PkgPtr <> PKG_CONSULTS) then Exit;
+  CsltIEN := FEditNote.PkgIEN;
+  x := FindConsult(CsltIEN);
+  ConsultDetail := TStringList.Create;
+  try
+    LoadConsultDetail(ConsultDetail, CsltIEN) ;
+    ReportBox(ConsultDetail, 'Consult Details: #' + IntToStr(CsltIEN) + ' - ' + Piece(x, U, 4), TRUE);
+  finally
+    ConsultDetail.Free;
+  end;
+end;
+
+procedure TfrmNotes.mnuViewDetailClick(Sender: TObject);
+begin
+  inherited;
+  if lstNotes.ItemIEN <= 0 then Exit;
+  mnuViewDetail.Checked := not mnuViewDetail.Checked;
+  if mnuViewDetail.Checked then
+    begin
+      StatusText('Retrieving progress note details...');
+      Screen.Cursor := crHourGlass;
+      LoadDetailText(memNote.Lines, lstNotes.ItemIEN);
+      Screen.Cursor := crDefault;
+      StatusText('');
+      memNote.SelStart := 0;
+      memNote.Repaint;
+    end
+  else
+    lstNotesClick(Self);
+  SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
+end;
+
+procedure TfrmNotes.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  Saved: Boolean;
+  IEN: Int64;
+  ErrMsg: string;
+  DeleteSts: TActionRec;
+begin
+  inherited;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then
+  begin
+    FSilent := True;
+    if memNewNote.GetTextLen > 0 then SaveCurrentNote(Saved)
+    else
+    begin
+      IEN := lstNotes.GetIEN(EditingIndex);
+      if not LastSaveClean(IEN) then             // means note hasn't been committed yet
+      begin
+        LockDocument(IEN, ErrMsg);
+        if ErrMsg = '' then
+        begin
+          DeleteDocument(DeleteSts, IEN, '');
+          UnlockDocument(IEN);
+        end; {if ErrMsg}
+      end; {if not LastSaveClean}
+    end; {else}
+  end; {if frmFrame}
+end;
+
+procedure TfrmNotes.mnuActIdentifyAddlSignersClick(Sender: TObject);
+var
+  Exclusions: TStrings;
+  Saved, x, y: boolean;
+  SignerList: TSignerList;
+  ActionSts: TActionRec;
+  SigAction: integer;
+  SavedDocID: string;
+  ARefDate: TFMDateTime;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if lstNotes.ItemIndex = EditingIndex then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+      LoadNotes;
+      with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    end;
+  x := CanChangeCosigner(lstNotes.ItemIEN);
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'IDENTIFY SIGNERS');
+  y := ActionSts.Success;
+  if x and not y then
+    begin
+      if InfoBox(ActionSts.Reason + CRLF + CRLF +
+                 'Would you like to change the cosigner?',
+                 TX_IN_AUTH, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES then
+    	SigAction := SG_COSIGNER
+      else
+	Exit;
+    end
+  else if y and not x then SigAction := SG_ADDITIONAL
+  else if x and y then SigAction := SG_BOTH
+  else
+    begin
+      InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+      Exit;
+    end;
+
+  if not LockConsultRequestAndNote(lstNotes.ItemIEN) then Exit;
+  Exclusions := GetCurrentSigners(lstNotes.ItemIEN);
+  ARefDate := StrToFloat(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+  SelectAdditionalSigners(Font.Size, lstNotes.ItemIEN, SigAction, Exclusions, SignerList, CT_NOTES, ARefDate);
+  with SignerList do
+    begin
+      case SigAction of
+        SG_ADDITIONAL:  if Changed and (Signers <> nil) and (Signers.Count > 0) then
+                          UpdateAdditionalSigners(lstNotes.ItemIEN, Signers);
+        SG_COSIGNER:    if Changed then ChangeCosigner(lstNotes.ItemIEN, Cosigner);
+        SG_BOTH:        if Changed then
+                          begin
+                            if (Signers <> nil) and (Signers.Count > 0) then
+                              UpdateAdditionalSigners(lstNotes.ItemIEN, Signers);
+                            ChangeCosigner(lstNotes.ItemIEN, Cosigner);
+                          end;
+      end;
+      lstNotesClick(Self);
+    end;
+  UnlockDocument(lstNotes.ItemIEN);
+  UnlockConsultRequest(lstNotes.ItemIEN);
+end;
+
+procedure TfrmNotes.popNoteMemoAddlSignClick(Sender: TObject);
+begin
+  inherited;
+  mnuActIdentifyAddlSignersClick(Self);
+end;
+
+procedure TfrmNotes.ProcessNotifications;
+var
+  x: string;
+  Saved: boolean;
+  tmpNode: TTreeNode;
+  AnObject: PDocTreeObject;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  lblNotes.Caption := Notifications.Text;
+  tvNotes.Caption := Notifications.Text;
+  EditingIndex := -1;
+  lstNotes.Enabled := True ;
+  pnlRead.BringToFront ;
+  //  show ALL unsigned/uncosigned for a patient, not just the alerted one
+  //  what about cosignature?  How to get correct list?  ORB FOLLOWUP TYPE = OR alerts only
+  x := Notifications.AlertData;
+  if StrToIntDef(Piece(x, U, 1), 0) = 0 then
+    begin
+      InfoBox(TX_NO_ALERT, TX_CAP_NO_ALERT, MB_OK);
+      Exit;
+    end;
+  uChanging := True;
+  tvNotes.Items.BeginUpdate;
+  lstNotes.Clear;
+  KillDocTreeObjects(tvNotes);
+  tvNotes.Items.Clear;
+  lstNotes.Items.Add(x);
+  AnObject := MakeNoteTreeObject('ALERT^Alerted Note^^^^^^^^^^^%^0');
+  tmpNode := tvNotes.Items.AddObjectFirst(tvNotes.Items.GetFirstNode, AnObject.NodeText, AnObject);
+  TORTreeNode(tmpNode).StringData := 'ALERT^Alerted Note^^^^^^^^^^^%^0';
+  tmpNode.ImageIndex := IMG_TOP_LEVEL;
+  AnObject := MakeNoteTreeObject(x);
+  tmpNode := tvNotes.Items.AddChildObjectFirst(tmpNode, AnObject.NodeText, AnObject);
+  TORTreeNode(tmpNode).StringData := x;
+  SetTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentContext, CT_NOTES);
+  tvNotes.Selected := tmpNode;
+  tvNotes.Items.EndUpdate;
+  uChanging := False;
+  tvNotesChange(Self, tvNotes.Selected);
+  case Notifications.Followup of
+    NF_NOTES_UNSIGNED_NOTE:   ;  //Automatically deleted by sig action!!!
+  end;
+  if Copy(Piece(Notifications.RecordID, U, 2), 1, 6) = 'TIUADD' then Notifications.Delete;
+  if Copy(Piece(Notifications.RecordID, U, 2), 1, 5) = 'TIUID' then Notifications.Delete;
+end;
+
+procedure TfrmNotes.SetViewContext(AContext: TTIUContext);
+var
+  Saved: boolean;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FCurrentContext := AContext;
+  EditingIndex := -1;
+  tvNotes.Enabled := True ;
+  pnlRead.BringToFront ;
+  if FCurrentContext.Status <> '' then with uTIUContext do
+    begin
+      BeginDate      := FCurrentContext.BeginDate;
+      EndDate        := FCurrentContext.EndDate;
+      FMBeginDate    := FCurrentContext.FMBeginDate;
+      FMEndDate      := FCurrentContext.FMEndDate;
+      Status         := FCurrentContext.Status;
+      Author         := FCurrentContext.Author;
+      MaxDocs        := FCurrentContext.MaxDocs;
+      ShowSubject    := FCurrentContext.ShowSubject;
+      GroupBy        := FCurrentContext.GroupBy;
+      SortBy         := FCurrentContext.SortBy;
+      ListAscending  := FCurrentContext.ListAscending;
+      TreeAscending  := FCurrentContext.TreeAscending;
+      Keyword        := FCurrentContext.Keyword;
+      SearchField    := FCurrentContext.SearchField;
+      Filtered       := FCurrentContext.Filtered;
+      Changed        := True;
+      mnuViewClick(Self);
+    end
+  else
+    begin
+      ViewContext := NC_RECENT ;
+      mnuViewClick(Self);
+    end;
+end;
+
+procedure TfrmNotes.mnuViewSaveAsDefaultClick(Sender: TObject);
+const
+  TX_NO_MAX =  'You have not specified a maximum number of notes to be returned.' + CRLF +
+               'If you save this preference, the result will be that ALL notes for every' + CRLF +
+               'patient will be saved as your default view.' + CRLF + CRLF +
+               'For patients with large numbers of notes, this could result in some lengthy' + CRLF +
+               'delays in loading the list of notes.' + CRLF + CRLF +
+               'Are you sure you mean to do this?';
+  TX_REPLACE = 'Replace current defaults?';
+begin
+  inherited;
+  if FCurrentContext.MaxDocs = 0 then
+     if InfoBox(TX_NO_MAX,'Warning', MB_YESNO or MB_ICONWARNING) = IDNO then
+       begin
+         mnuViewClick(mnuViewCustom);
+         Exit;
+       end;
+  if InfoBox(TX_REPLACE,'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      SaveCurrentTIUContext(FCurrentContext);
+      FDefaultContext := FCurrentContext;
+      //lblNotes.Caption := 'Default List';
+    end;
+end;
+
+procedure TfrmNotes.mnuViewReturntoDefaultClick(Sender: TObject);
+begin
+  inherited;
+  SetViewContext(FDefaultContext);
+end;
+
+procedure TfrmNotes.popNoteMemoTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE, FEditCtrl.SelText);
+end;
+
+procedure TfrmNotes.popNoteListPopup(Sender: TObject);
+begin
+  inherited;
+  N4.Visible                          := (popNoteList.PopupComponent is TORTreeView);
+  popNoteListExpandAll.Visible        := N4.Visible;
+  popNoteListExpandSelected.Visible   := N4.Visible;
+  popNoteListCollapseAll.Visible      := N4.Visible;
+  popNoteListCollapseSelected.Visible := N4.Visible;
+end;
+
+procedure TfrmNotes.popNoteListExpandAllClick(Sender: TObject);
+begin
+  inherited;
+  tvNotes.FullExpand;
+end;
+
+procedure TfrmNotes.popNoteListCollapseAllClick(Sender: TObject);
+begin
+  inherited;
+  tvNotes.Selected := nil;
+  lvNotes.Items.Clear;
+  memNote.Clear;
+  tvNotes.FullCollapse;
+  tvNotes.Selected := tvNotes.TopItem;
+end;
+
+procedure TfrmNotes.popNoteListExpandSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if tvNotes.Selected = nil then exit;
+  with tvNotes.Selected do if HasChildren then Expand(True);
+end;
+
+procedure TfrmNotes.popNoteListCollapseSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if tvNotes.Selected = nil then exit;
+  with tvNotes.Selected do if HasChildren then Collapse(True);
+end;
+
+procedure TfrmNotes.mnuEditTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self);
+end;
+
+procedure TfrmNotes.mnuNewTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE);
+end;
+
+procedure TfrmNotes.mnuEditSharedTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, FALSE, '', TRUE);
+end;
+
+procedure TfrmNotes.mnuNewSharedTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE, '', TRUE);
+end;
+
+procedure TfrmNotes.mnuOptionsClick(Sender: TObject);
+begin
+  inherited;
+  mnuEditTemplates.Enabled := frmDrawers.CanEditTemplates;
+  mnuNewTemplate.Enabled := frmDrawers.CanEditTemplates;
+  mnuEditSharedTemplates.Enabled := frmDrawers.CanEditShared;
+  mnuNewSharedTemplate.Enabled := frmDrawers.CanEditShared;
+  mnuEditDialgFields.Enabled := CanEditTemplateFields;
+end;
+
+procedure TfrmNotes.SetEditingIndex(const Value: Integer);
+begin
+  FEditingIndex := Value;
+  if(FEditingIndex < 0) then
+    KillReminderDialog(Self);
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.EnableActions;
+end;
+
+function TfrmNotes.CanFinishReminder: boolean;
+begin
+  if(EditingIndex < 0) then
+    Result := FALSE
+  else
+    Result := (lstNotes.ItemIndex = EditingIndex);
+end;
+
+procedure TfrmNotes.FormDestroy(Sender: TObject);
+begin
+  FDocList.Free;
+  FImageFlag.Free;
+  KillDocTreeObjects(tvNotes);
+  inherited;
+end;
+
+function TfrmNotes.GetDrawers: TFrmDrawers;
+begin
+  Result := frmDrawers;
+end;
+
+procedure TfrmNotes.AssignRemForm;
+begin
+  with RemForm do
+  begin
+    Form := Self;
+    PCEObj := uPCEEdit;
+    RightPanel := pnlRight;
+    CanFinishProc := CanFinishReminder;
+    DisplayPCEProc := DisplayPCE;
+    Drawers := frmDrawers;
+    NewNoteRE := memNewNote;
+    NoteList := lstNotes;
+  end;
+end;
+
+procedure TfrmNotes.mnuEditDialgFieldsClick(Sender: TObject);
+begin
+  inherited;
+  EditDialogFields;
+end;
+
+//===================  Added for sort/search enhancements ======================
+procedure TfrmNotes.LoadNotes;
+const
+  INVALID_ID = -1;
+  INFO_ID = 1;
+var
+  tmpList: TStringList;
+  ANode: TORTreeNode;
+  x,xx,noteId: integer;   // Text Search CQ: HDS00002856
+  Dest: TStrings;  // Text Search CQ: HDS00002856
+  KeepFlag: Boolean;  // Text Search CQ: HDS00002856
+  NoteCount, NoteMatches: integer;  // Text Search CQ: HDS00002856
+begin
+  tmpList := TStringList.Create;
+  try
+    FDocList.Clear;
+    uChanging := True;
+    RedrawSuspend(memNote.Handle);
+    RedrawSuspend(lvNotes.Handle);
+    tvNotes.Items.BeginUpdate;
+    lstNotes.Items.Clear;
+    KillDocTreeObjects(tvNotes);
+    tvNotes.Items.Clear;
+    tvNotes.Items.EndUpdate;
+    lvNotes.Items.Clear;
+    memNote.Clear;
+    memNote.Invalidate;
+    lblTitle.Caption := '';
+    lvNotes.Caption := '';
+    with FCurrentContext do
+      begin
+        if Status <> IntToStr(NC_UNSIGNED) then
+          begin
+            ListNotesForTree(tmpList, NC_UNSIGNED, 0, 0, 0, 0, TreeAscending);
+            if tmpList.Count > 0 then
+              begin
+                CreateListItemsforDocumentTree(FDocList, tmpList, NC_UNSIGNED, GroupBy, TreeAscending, CT_NOTES);
+                UpdateTreeView(FDocList, tvNotes);
+              end;
+            tmpList.Clear;
+            FDocList.Clear;
+          end;
+        if Status <> IntToStr(NC_UNCOSIGNED) then
+          begin
+            ListNotesForTree(tmpList, NC_UNCOSIGNED, 0, 0, 0, 0, TreeAscending);
+            if tmpList.Count > 0 then
+              begin
+                CreateListItemsforDocumentTree(FDocList, tmpList, NC_UNCOSIGNED, GroupBy, TreeAscending, CT_NOTES);
+                UpdateTreeView(FDocList, tvNotes);
+              end;
+            tmpList.Clear;
+            FDocList.Clear;
+          end;
+        ListNotesForTree(tmpList, StrToIntDef(Status, 0), FMBeginDate, FMEndDate, Author, MaxDocs, TreeAscending);
+        CreateListItemsforDocumentTree(FDocList, tmpList, StrToIntDef(Status, 0), GroupBy, TreeAscending, CT_NOTES);
+
+        // Text Search CQ: HDS00002856 ---------------------------------------
+        if FCurrentContext.SearchString<>''  then   // Text Search CQ: HDS00002856
+          begin
+            NoteMatches := 0;
+            Dest:=TStringList.Create;
+            NoteCount:=FDocList.Count-1;
+            if FDocList.Count>0 then
+              for x := FDocList.Count-1 downto 1 do begin;  // Don't do 0, because it's informational
+                KeepFlag:=False;
+                lblNotes.Caption:='Scanning '+IntToStr(NoteCount-x+1)+' of '+IntToStr(NoteCount)+', '+IntToStr(NoteMatches);
+                If NoteMatches=1 then lblNotes.Caption:=lblNotes.Caption+' match' else
+                                      lblNotes.Caption:=lblNotes.Caption+' matches';
+                frmSearchStop.lblSearchStatus.Caption := lblNotes.Caption;
+                frmSearchStop.lblSearchStatus.Repaint;
+                lblNotes.Repaint;
+                // Free up some ticks so they can click the "Stop" button
+                application.processmessages;
+                application.processmessages;
+                application.processmessages;
+                If SearchTextStopFlag = False then begin
+                  noteId := StrToIntDef(Piece(FDocList.Strings[x],'^',1),-1);
+                  if (noteId = INVALID_ID) or (noteId = INFO_ID) then
+                    Continue;
+                  CallV('TIU GET RECORD TEXT', [Piece(FDocList.Strings[x],'^',1)]);
+                  FastAssign(RPCBrokerV.Results, Dest);
+                  If Dest.Count > 0 then
+                     for xx := 0 to Dest.Count-1 do
+                     begin
+                      //Dest.Strings[xx] := StringReplace(Dest.Strings[xx],'#13',' ',[rfReplaceAll, rfIgnoreCase]);
+                      if Pos(Uppercase(FCurrentContext.SearchString),Uppercase(Dest.Strings[xx]))>0 then
+                        keepflag:=true;
+                     end;
+                  If KeepFlag=False then begin;
+                    if FDocList.Count >= x then
+                      FDocList.Delete(x);
+                    if (tmpList.Count >= x) and (x > 0) then
+                      tmpList.Delete(x-1);
+                  end else
+                    Inc(NoteMatches);
+                end;
+              end;
+            Dest.Free;
+          end;
+        // Text Search CQ: HDS00002856 ---------------------------------------
+
+        UpdateTreeView(FDocList, tvNotes);
+      end;
+    with tvNotes do
+      begin
+        uChanging := True;
+        tvNotes.Items.BeginUpdate;
+        RemoveParentsWithNoChildren(tvNotes, FCurrentContext);  // moved here in v15.9 (RV)
+        if FLastNoteID <> '' then
+          Selected := FindPieceNode(FLastNoteID, 1, U, nil);
+        if Selected = nil then
+          begin
+            if (FCurrentContext.GroupBy <> '') or (FCurrentContext.Filtered) then
+              begin
+                ANode := TORTreeNode(Items.GetFirstNode);
+                while ANode <> nil do
+                  begin
+                    ANode.Expand(False);
+                    Selected := ANode;
+                    ANode := TORTreeNode(ANode.GetNextSibling);
+                  end;
+              end
+            else
+              begin
+                ANode := tvNotes.FindPieceNode(FCurrentContext.Status, 1, U, nil);
+                if ANode <> nil then ANode.Expand(False);
+                ANode := tvNotes.FindPieceNode(IntToStr(NC_UNSIGNED), 1, U, nil);
+                if ANode = nil then
+                  ANode := tvNotes.FindPieceNode(IntToStr(NC_UNCOSIGNED), 1, U, nil);
+                if ANode = nil then
+                  ANode := tvNotes.FindPieceNode(FCurrentContext.Status, 1, U, nil);
+                if ANode <> nil then
+                  begin
+                    if ANode.getFirstChild <> nil then
+                      Selected := ANode.getFirstChild
+                    else
+                      Selected := ANode;
+                  end;
+              end;
+          end;
+        memNote.Clear;
+        with lvNotes do
+          begin
+            Selected := nil;
+            if FCurrentContext.SortBy <> '' then
+              ColumnToSort := Pos(FCurrentContext.SortBy, 'RDSAL') - 1;
+            if not FCurrentContext.ShowSubject then
+              begin
+                Columns[1].Width := 2 * (Width div 5);
+                Columns[2].Width := 0;
+              end
+            else
+              begin
+                Columns[1].Width := Width div 5;
+                Columns[2].Width := Columns[1].Width;
+              end;
+          end;
+        //RemoveParentsWithNoChildren(tvNotes, FCurrentContext);  // moved FROM here in v15.9 (RV)
+        tvNotes.Items.EndUpdate;
+        uChanging := False;
+        SendMessage(tvNotes.Handle, WM_VSCROLL, SB_TOP, 0);
+        if Selected <> nil then tvNotesChange(Self, Selected);
+      end;
+  finally
+    RedrawActivate(memNote.Handle);
+    RedrawActivate(lvNotes.Handle);
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmNotes.UpdateTreeView(DocList: TStringList; Tree: TORTreeView);
+begin
+  with Tree do
+    begin
+      uChanging := True;
+      Items.BeginUpdate;
+      FastAddStrings(DocList, lstNotes.Items);
+      BuildDocumentTree(DocList, '0', Tree, nil, FCurrentContext, CT_NOTES);
+      Items.EndUpdate;
+      uChanging := False;
+    end;
+end;
+
+procedure TfrmNotes.tvNotesChange(Sender: TObject; Node: TTreeNode);
+var
+  x, MySearch, MyNodeID: string;
+  i: integer;
+  WhyNot: string;
+begin
+  if uChanging then Exit;
+  //This gives the change a chance to occur when keyboarding, so that WindowEyes
+  //doesn't use the old value.
+  Application.ProcessMessages;
+  with tvNotes do
+    begin
+      memNote.Clear;
+      if Selected = nil then Exit;
+      if uIDNotesActive then
+        begin
+          mnuActDetachFromIDParent.Enabled := (Selected.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD]);
+          popNoteListDetachFromIDParent.Enabled := mnuActDetachFromIDParent.Enabled;
+          if (Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT, IMG_ID_CHILD, IMG_ID_CHILD_ADD]) then
+            mnuActAttachtoIDParent.Enabled := CanBeAttached(PDocTreeObject(Selected.Data)^.DocID, WhyNot)
+          else
+            mnuActAttachtoIDParent.Enabled := False;
+          popNoteListAttachtoIDParent.Enabled := mnuActAttachtoIDParent.Enabled;
+          if (Selected.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                      IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT,
+                                      IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT]) then
+            mnuActAddIDEntry.Enabled := CanReceiveAttachment(PDocTreeObject(Selected.Data)^.DocID, WhyNot)
+          else
+            mnuActAddIDEntry.Enabled := False;
+          popNoteListAddIDEntry.Enabled := mnuActAddIDEntry.Enabled
+        end;
+      RedrawSuspend(lvNotes.Handle);
+      RedrawSuspend(memNote.Handle);
+      popNoteListExpandSelected.Enabled := Selected.HasChildren;
+      popNoteListCollapseSelected.Enabled := Selected.HasChildren;
+      x := TORTreeNode(Selected).StringData;
+      if (Selected.ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+        begin
+          lvNotes.Visible := True;
+          lvNotes.Items.Clear;
+          lvNotes.Height := (2 * lvNotes.Parent.Height) div 5;
+          with lblTitle do
+            begin
+              Caption := Trim(Selected.Text);
+              if (FCurrentContext.SearchField <> '') and (FCurrentContext.Filtered) then
+                begin
+                  case FCurrentContext.SearchField[1] of
+                    'T': MySearch := 'TITLE';
+                    'S': MySearch := 'SUBJECT';
+                    'B': MySearch := 'TITLE or SUBJECT';
+                  end;
+                  Caption := Caption + ' where ' + MySearch + ' contains "' + UpperCase(FCurrentContext.Keyword) + '"';
+                end;
+              lvNotes.Caption := Caption;
+            end;
+
+          if Selected.ImageIndex = IMG_TOP_LEVEL then
+            MyNodeID := Piece(TORTreeNode(Selected).StringData, U, 1)
+          else if Selected.Parent.ImageIndex = IMG_TOP_LEVEL then
+            MyNodeID := Piece(TORTreeNode(Selected.Parent).StringData, U, 1)
+          else if Selected.Parent.Parent.ImageIndex = IMG_TOP_LEVEL then
+            MyNodeID := Piece(TORTreeNode(Selected.Parent.Parent).StringData, U, 1);
+
+          uChanging := True;
+          TraverseTree(tvNotes, lvNotes, Selected.GetFirstChild, MyNodeID, FCurrentContext);
+          with lvNotes do
+            begin
+              for i := 0 to Columns.Count - 1 do
+                Columns[i].ImageIndex := IMG_NONE;
+              ColumnSortForward := FCurrentContext.ListAscending;
+              if ColumnToSort = 5 then ColumnToSort := 0;
+              if ColumnSortForward then
+                Columns[ColumnToSort].ImageIndex := IMG_ASCENDING
+              else
+                Columns[ColumnToSort].ImageIndex := IMG_DESCENDING;
+              if ColumnToSort = 0 then ColumnToSort := 5;
+              AlphaSort;
+              Columns[5].Width := 0;
+              Columns[6].Width := 0;
+            end;
+          uChanging := False;
+          with lvNotes do
+            if Items.Count > 0 then
+              begin
+                Selected := Items[0];
+                lvNotesSelectItem(Self, Selected, True);
+              end
+            else
+              begin
+                Selected := nil;
+                lstNotes.ItemIndex := -1;
+                memPCEShow.Clear;
+                ShowPCEControls(False);
+              end;
+          pnlWrite.Visible := False;
+          pnlRead.Visible := True;
+          //  uncommented next 4 lines in v17.5  (RV)
+          //-----------------------------
+          UpdateReminderFinish;
+          ShowPCEControls(False);
+          frmDrawers.DisplayDrawers(TRUE, [odTemplates], [odTemplates]); //FALSE);
+          ShowPCEButtons(FALSE);
+          //-----------------------------
+          //memNote.Clear;
+        end
+      else if StrToIntDef(Piece(x, U, 1), 0) > 0 then
+        begin
+          memNote.Clear;
+          lvNotes.Visible := False;
+          lstNotes.SelectByID(Piece(x, U, 1));
+          lstNotesClick(Self);
+          SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
+        end;
+      SendMessage(tvNotes.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+      RedrawActivate(lvNotes.Handle);
+      RedrawActivate(memNote.Handle);
+    end;
+end;
+
+procedure TfrmNotes.tvNotesCollapsed(Sender: TObject; Node: TTreeNode);
+begin
+  with Node do
+    begin
+      if (ImageIndex in [IMG_GROUP_OPEN, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_OPEN]) then
+        ImageIndex := ImageIndex - 1;
+      if (SelectedIndex in [IMG_GROUP_OPEN, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_OPEN]) then
+        SelectedIndex := SelectedIndex - 1;
+    end;
+end;
+
+procedure TfrmNotes.tvNotesExpanded(Sender: TObject; Node: TTreeNode);
+
+  function SortByTitle(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+  begin
+    { Within an ID parent node, sorts in ascending order by title
+    BUT - addenda to parent document are always at the top of the sort, in date order}
+    if (Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum') and
+       (Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum') then
+      begin
+        Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end
+    else if Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := -1
+    else if Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := 1
+    else
+      begin
+        if Data = 0 then
+          Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocTitle),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocTitle))
+        else
+          Result := -AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocTitle),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocTitle));
+      end
+  end;
+
+  function SortByDate(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+  begin
+    { Within an ID parent node, sorts in ascending order by document date
+    BUT - addenda to parent document are always at the top of the sort, in date order}
+    if (Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum') and
+       (Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum') then
+      begin
+        Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end
+    else if Copy(PDocTreeObject(Node1.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := -1
+    else if Copy(PDocTreeObject(Node2.Data)^.DocTitle, 1, 8) = 'Addendum' then Result := 1
+    else
+      begin
+        if Data = 0 then
+          Result :=  AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocFMDate))
+        else
+          Result := -AnsiStrIComp(PChar(PDocTreeObject(Node1.Data)^.DocFMDate),
+                                  PChar(PDocTreeObject(Node2.Data)^.DocFMDate));
+      end;
+  end;
+
+begin
+  with Node do
+    begin
+      if Assigned(Data) then
+        if (Pos('<', PDocTreeObject(Data)^.DocHasChildren) > 0) then
+          begin
+            if (PDocTreeObject(Node.Data)^.OrderByTitle) then
+              CustomSort(@SortByTitle, 0)
+            else
+              CustomSort(@SortByDate, 0);
+          end;
+      if (ImageIndex in [IMG_GROUP_SHUT, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_SHUT]) then
+        ImageIndex := ImageIndex + 1;
+      if (SelectedIndex in [IMG_GROUP_SHUT, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_SHUT]) then
+        SelectedIndex := SelectedIndex + 1;
+    end;
+end;
+
+procedure TfrmNotes.tvNotesClick(Sender: TObject);
+begin
+(*  if tvNotes.Selected = nil then exit;
+  if (tvNotes.Selected.ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+    begin
+      uChanging := True;
+      lvNotes.Selected := nil;
+      uChanging := False;
+      memNote.Clear;
+    end;*)
+end;
+
+procedure TfrmNotes.tvNotesDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
+var
+  AnItem: TORTreeNode;
+begin
+  Accept := False;
+  if not uIDNotesActive then exit;
+  AnItem := TORTreeNode(tvNotes.GetNodeAt(X, Y));
+  if (AnItem = nil) or (AnItem.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) then Exit;
+  with tvNotes.Selected do
+    if (ImageIndex in [IMG_SINGLE, IMG_PARENT, IMG_ID_CHILD, IMG_ID_CHILD_ADD]) then
+      Accept := (AnItem.ImageIndex in [IMG_SINGLE, IMG_PARENT,
+                                       IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT,
+                                       IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT])
+    else if (ImageIndex in [IMG_IDNOTE_OPEN, IMG_IDNOTE_SHUT, IMG_IDPAR_ADDENDA_OPEN, IMG_IDPAR_ADDENDA_SHUT]) then
+      Accept := (AnItem.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL])
+    else if (ImageIndex in [IMG_ADDENDUM, IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) then
+      Accept := False;
+end;
+
+procedure TfrmNotes.tvNotesDragDrop(Sender, Source: TObject; X, Y: Integer);
+var
+  HT: THitTests;
+  Saved: boolean;
+  ADestNode: TORTreeNode;
+begin
+  if not uIDNotesActive then
+    begin
+      CancelDrag;
+      exit;
+    end;
+  if tvNotes.Selected = nil then exit;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  HT := tvNotes.GetHitTestInfoAt(X, Y);
+  ADestNode := TORTreeNode(tvNotes.GetNodeAt(X, Y));
+  DoAttachIDChild(TORTreeNode(tvNotes.Selected), ADestNode);
+end;
+
+procedure TfrmNotes.tvNotesStartDrag(Sender: TObject; var DragObject: TDragObject);
+const
+  TX_CAP_NO_DRAG = 'Item cannot be moved';
+  TX_NO_EDIT_DRAG = 'Items can not be dragged while a note is being edited.';
+var
+  WhyNot: string;
+  //Saved: boolean;
+begin
+  if EditingIndex <> -1 then
+  begin
+    InfoBox(TX_NO_EDIT_DRAG, TX_CAP_NO_DRAG, MB_ICONERROR or MB_OK);
+    CancelDrag;
+    Exit;
+  end;
+  if (tvNotes.Selected.ImageIndex in [IMG_ADDENDUM, IMG_GROUP_OPEN, IMG_GROUP_SHUT, IMG_TOP_LEVEL]) or
+     (not uIDNotesActive) or
+     (lstNotes.ItemIEN = 0) then
+    begin
+      CancelDrag;
+      Exit;
+    end;
+(*  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;*)
+  if not CanBeAttached(PDocTreeObject(tvNotes.Selected.Data)^.DocID, WhyNot) then
+    begin
+      InfoBox(WhyNot, TX_CAP_NO_DRAG, MB_OK);
+      CancelDrag;
+    end;
+end;
+
+//=====================  Listview events  =================================
+
+procedure TfrmNotes.lvNotesColumnClick(Sender: TObject; Column: TListColumn);
+var
+  i, ClickedColumn: Integer;
+begin
+  if Column.Index = 0 then ClickedColumn := 5 else ClickedColumn := Column.Index;
+  if ClickedColumn = ColumnToSort then
+    ColumnSortForward := not ColumnSortForward
+  else
+    ColumnSortForward := True;
+  for i := 0 to lvNotes.Columns.Count - 1 do
+    lvNotes.Columns[i].ImageIndex := IMG_NONE;
+  if ColumnSortForward then lvNotes.Columns[Column.Index].ImageIndex := IMG_ASCENDING
+  else lvNotes.Columns[Column.Index].ImageIndex := IMG_DESCENDING;
+  ColumnToSort := ClickedColumn;
+  case ColumnToSort of
+    5:  FCurrentContext.SortBy := 'R';
+    1:  FCurrentContext.SortBy := 'D';
+    2:  FCurrentContext.SortBy := 'S';
+    3:  FCurrentContext.SortBy := 'A';
+    4:  FCurrentContext.SortBy := 'L';
+  else
+    FCurrentContext.SortBy := 'R';
+  end;
+  FCurrentContext.ListAscending := ColumnSortForward;
+  (Sender as TCustomListView).AlphaSort;
+  //with lvNotes do if Selected <> nil then Scroll(0,  Selected.Top - TopItem.Top);
+end;
+
+procedure TfrmNotes.lvNotesCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+var
+  ix: Integer;
+begin
+  if ColumnToSort = 0 then
+    Compare := CompareText(Item1.Caption,Item2.Caption)
+  else begin
+   ix := ColumnToSort - 1;
+   Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
+  end;
+  if not ColumnSortForward then Compare := -Compare;
+end;
+
+procedure TfrmNotes.lvNotesSelectItem(Sender: TObject; Item: TListItem;
+  Selected: Boolean);
+begin
+  if uChanging or (not Selected) then Exit;
+  with lvNotes do
+    begin
+      StatusText('Retrieving selected progress note...');
+      lstNotes.SelectByID(Item.SubItems[5]);
+      lstNotesClick(Self);
+      SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0);
+    end;
+end;
+
+procedure TfrmNotes.lvNotesResize(Sender: TObject);
+begin
+  inherited;
+  with lvNotes do
+    begin
+      if not FCurrentContext.ShowSubject then
+        begin
+          Columns[1].Width := 2 * (Width div 5);
+          Columns[2].Width := 0;
+        end
+      else
+        begin
+          Columns[1].Width := Width div 5;
+          Columns[2].Width := Columns[1].Width;
+        end;
+    end;
+end;
+
+procedure TfrmNotes.EnableDisableIDNotes;
+begin
+  uIDNotesActive := IDNotesInstalled;
+  mnuActDetachFromIDParent.Visible := uIDNotesActive;
+  popNoteListDetachFromIDParent.Visible := uIDNotesActive;
+  mnuActAddIDEntry.Visible := uIDNotesActive;
+  popNoteListAddIDEntry.Visible := uIDNotesActive;
+  mnuActAttachtoIDParent.Visible := uIDNotesActive;
+  popNoteListAttachtoIDParent.Visible := uIDNotesActive;
+  if uIDNotesActive then
+    tvNotes.DragMode := dmAutomatic
+  else
+    tvNotes.DragMode := dmManual;
+end;
+
+procedure TfrmNotes.ShowPCEButtons(Editing: boolean);
+begin
+  if frmFrame.Timedout then Exit;
+
+  FEditingNotePCEObj := Editing;
+  if Editing or AnytimeEncounters then
+  begin
+    cmdPCE.Visible := TRUE;
+    if Editing then
+    begin
+      cmdPCE.Enabled := CanEditPCE(uPCEEdit);
+      cmdNewNote.Visible := AnytimeEncounters;
+      cmdNewNote.Enabled := FALSE;
+    end
+    else
+    begin
+      cmdPCE.Enabled     := (GetAskPCE(0) <> apDisable);
+      cmdNewNote.Visible := TRUE;
+      cmdNewNote.Enabled := (FStarting = False); //TRUE;
+    end;
+    if cmdNewNote.Visible then
+      cmdPCE.Top := cmdNewNote.Top-cmdPCE.Height;
+  end
+  else
+  begin
+    cmdPCE.Enabled := FALSE;
+    cmdPCE.Visible := FALSE;
+    cmdNewNote.Visible := TRUE;
+    cmdNewNote.Enabled := (FStarting = False); //TRUE;
+  end;
+  if cmdPCE.Visible then
+    lblSpace1.Top := cmdPCE.Top - lblSpace1.Height
+  else
+    lblSpace1.Top := cmdNewNote.Top - lblSpace1.Height;
+  popNoteMemoEncounter.Enabled := cmdPCE.Enabled;
+  popNoteMemoEncounter.Visible := cmdPCE.Visible;
+end;
+
+procedure TfrmNotes.mnuIconLegendClick(Sender: TObject);
+begin
+  inherited;
+  ShowIconLegend(ilNotes);
+end;
+
+procedure TfrmNotes.mnuActAttachtoIDParentClick(Sender: TObject);
+var
+  AChildNode: TORTreeNode;
+  AParentID: string;
+  SavedDocID: string;
+  Saved: boolean;
+begin
+  inherited;
+  if not uIDNotesActive then exit;
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    LoadNotes;
+    with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+  end;
+  if tvNotes.Selected = nil then exit;
+  AChildNode := TORTreeNode(tvNotes.Selected);
+  AParentID := SelectParentNodeFromList(tvNotes);
+  if AParentID = '' then exit;
+  with tvNotes do Selected := FindPieceNode(AParentID, 1, U, Items.GetFirstNode);
+  DoAttachIDChild(AChildNode, TORTreeNode(tvNotes.Selected));
+end;
+
+procedure TfrmNotes.DoAttachIDChild(AChild, AParent: TORTreeNode);
+const
+  TX_ATTACH_CNF     = 'Confirm Attachment';
+  TX_ATTACH_FAILURE = 'Attachment failed';
+var
+  ErrMsg, WhyNot: string;
+  SavedDocID: string;
+begin
+  if (AChild = nil) or (AParent = nil) then exit;
+  ErrMsg := '';
+  if not CanBeAttached(PDocTreeObject(AChild.Data)^.DocID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot + CRLF + CRLF;
+  if not CanReceiveAttachment(PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+    ErrMsg := ErrMsg + WhyNot;
+  if ErrMsg <> '' then
+    begin
+      InfoBox(ErrMsg, TX_ATTACH_FAILURE, MB_OK);
+      Exit;
+    end
+  else
+    begin
+      WhyNot := '';
+      if (InfoBox('ATTACH:   ' + AChild.Text + CRLF + CRLF +
+                  '    TO:   ' + AParent.Text + CRLF + CRLF +
+                  'Are you sure?', TX_ATTACH_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES)
+          then Exit;
+      SavedDocID := PDocTreeObject(AParent.Data)^.DocID;
+    end;
+  if AChild.ImageIndex in [IMG_ID_CHILD, IMG_ID_CHILD_ADD] then
+    begin
+      if DetachEntryFromParent(PDocTreeObject(AChild.Data)^.DocID, WhyNot) then
+        begin
+          if AttachEntryToParent(PDocTreeObject(AChild.Data)^.DocID, PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+            begin
+              LoadNotes;
+              with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+              if tvNotes.Selected <> nil then tvNotes.Selected.Expand(False);
+            end
+          else
+            InfoBox(WhyNot, TX_ATTACH_FAILURE, MB_OK);
+        end
+      else
+        begin
+          WhyNot := StringReplace(WhyNot, 'ATTACH', 'DETACH', [rfIgnoreCase]);
+          WhyNot := StringReplace(WhyNot, 'to an ID', 'from an ID', [rfIgnoreCase]);
+          InfoBox(WhyNot, TX_DETACH_FAILURE, MB_OK);
+          Exit;
+        end;
+    end
+  else
+    begin
+      if AttachEntryToParent(PDocTreeObject(AChild.Data)^.DocID, PDocTreeObject(AParent.Data)^.DocID, WhyNot) then
+        begin
+          LoadNotes;
+          with tvNotes do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+          if tvNotes.Selected <> nil then tvNotes.Selected.Expand(False);
+        end
+      else
+        InfoBox(WhyNot, TX_ATTACH_FAILURE, MB_OK);
+   end;
+end;
+
+function TfrmNotes.SetNoteTreeLabel(AContext: TTIUContext): string;
+var
+  x: string;
+
+  function SetDateRangeText(AContext: TTIUContext): string;
+  var
+    x1: string;
+  begin
+    with AContext do
+      if BeginDate <> '' then
+        begin
+          x1 := ' from ' + UpperCase(BeginDate);
+          if EndDate <> '' then x1 := x1 + ' to ' + UpperCase(EndDate)
+          else x1 := x1 + ' to TODAY';
+        end;
+    Result := x1;
+  end;
+
+begin
+  with AContext do
+    begin
+      if MaxDocs > 0 then x := 'Last ' + IntToStr(MaxDocs) + ' ' else x := 'All ';
+      case StrToIntDef(Status, 0) of
+        NC_ALL        : x := x + 'Signed Notes';
+        NC_UNSIGNED   : begin
+                          x := x + 'Unsigned Notes for ';
+                          if Author > 0 then x := x + ExternalName(Author, 200)
+                          else x := x + User.Name;
+                          x := x + SetDateRangeText(AContext);
+                        end;
+        NC_UNCOSIGNED : begin
+                          x := x + 'Uncosigned Notes for ';
+                          if Author > 0 then x := x + ExternalName(Author, 200)
+                          else x := x + User.Name;
+                          x := x + SetDateRangeText(AContext);
+                        end;
+        NC_BY_AUTHOR  : x := x + 'Signed Notes for ' + ExternalName(Author, 200) + SetDateRangeText(AContext);
+        NC_BY_DATE    : x := x + 'Signed Notes ' + SetDateRangeText(AContext);
+      else
+        x := 'Custom List';
+      end;
+    end;
+  Result := x;
+end;
+
+procedure TfrmNotes.memNewNoteKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  FNavigatingTab := (Key = VK_TAB) and ([ssShift,ssCtrl] * Shift <> []);
+  if FNavigatingTab then
+    Key := 0;
+end;
+
+procedure TfrmNotes.UpdateNoteAuthor(DocInfo: string);
+const
+  TX_INVALID_AUTHOR1 = 'The author returned by the template (';
+  TX_INVALID_AUTHOR2 = ') is not valid.' + #13#10 + 'The note''s author will remain as ';
+  TC_INVALID_AUTHOR  = 'Invalid Author';
+  TX_COSIGNER_REQD   = ' requires a cosigner for this note.';
+  TC_COSIGNER_REQD   = 'Cosigner Required';
+var
+  NewAuth, NewAuthName, AuthNameCheck, x: string;
+  ADummySender: TObject;
+begin
+  if DocInfo = '' then Exit;
+  NewAuth := GetXMLParamReturnValueTIU(DocInfo, 'AUTHOR_IEN');
+  if NewAuth = '' then Exit;
+  AuthNameCheck := ExternalName(StrToInt64Def(NewAuth, 0), 200);
+  if AuthNameCheck = '' then
+  begin
+    NewAuthName := GetXMLParamReturnValueTIU(DocInfo, 'AUTHOR_NAME');
+    InfoBox(TX_INVALID_AUTHOR1 + UpperCase(NewAuthName) +  TX_INVALID_AUTHOR2 + UpperCase(FEditNote.AuthorName),
+            TC_INVALID_AUTHOR, MB_OK and MB_ICONERROR);
+    Exit;
+  end;
+  with FEditNote do if StrToInt64Def(NewAuth, 0) <> Author then
+  begin
+    Author := StrToInt64Def(NewAuth, 0);
+    AuthorName := AuthNameCheck;
+    x := lstNotes.Items[EditingIndex];
+    SetPiece(x, U, 5, NewAuth + ';' + AuthNameCheck);
+    lstNotes.Items[EditingIndex] := x;
+    if AskCosignerForTitle(Title, Author, DateTime) then
+    begin
+      InfoBox(UpperCase(AuthNameCheck) + TX_COSIGNER_REQD, TC_COSIGNER_REQD, MB_OK);
+      //Cosigner := 0;   CosignerName := '';  // not sure about this yet
+      ADummySender := TObject.Create;
+      try
+        cmdChangeClick(ADummySender);
+      finally
+        FreeAndNil(ADummySender);
+      end;
+    end
+    else cmdChangeClick(Self);
+  end;
+end;
+
+procedure TfrmNotes.sptHorzCanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if pnlWrite.Visible then
+     if NewSize > frmNotes.ClientWidth - memNewNote.Constraints.MinWidth - sptHorz.Width then
+        NewSize := frmNotes.ClientWidth - memNewNote.Constraints.MinWidth - sptHorz.Width;
+end;
+
+procedure TfrmNotes.popNoteMemoInsTemplateClick(Sender: TObject);
+begin
+  frmDrawers.mnuInsertTemplateClick(Sender);
+end;
+
+procedure TfrmNotes.popNoteMemoPreviewClick(Sender: TObject);
+begin
+  frmDrawers.mnuPreviewTemplateClick(Sender);
+end;
+
+{Tab Order tricks.  Need to change
+  tvNotes
+
+  frmDrawers.pnlTemplateButton
+  frmDrawers.pnlEncounterButton
+  cmdNewNote
+  cmdPCE
+
+  lvNotes
+  memNote
+
+to
+  tvNotes
+
+  lvNotes
+  memNote
+
+  frmDrawers.pnlTemplateButton
+  frmDrawers.pnlEncounterButton
+  cmdNewNote
+  cmdPCE
+}
+
+procedure TfrmNotes.tvNotesExit(Sender: TObject);
+begin
+  if TabIsPressed or ShiftTabIsPressed then
+  begin
+    if (Screen.ActiveControl = frmDrawers.pnlTemplatesButton) or
+        (Screen.ActiveControl = frmDrawers.pnlEncounterButton) or
+        (Screen.ActiveControl = cmdNewNote) or
+        (Screen.ActiveControl = cmdPCE) then
+      FindNextControl( cmdPCE, True, True, False).SetFocus;
+  end;
+end;
+
+procedure TfrmNotes.pnlReadExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed or ShiftTabIsPressed then
+  begin
+    if (Screen.ActiveControl = frmFrame.pnlPatient) then
+      FindNextControl( tvNotes, True, True, False).SetFocus
+    else
+    if (Screen.ActiveControl = frmDrawers.pnlTemplatesButton) or
+        (Screen.ActiveControl = frmDrawers.pnlEncounterButton) or
+        (Screen.ActiveControl = cmdNewNote) or
+        (Screen.ActiveControl = cmdPCE) then
+      FindNextControl( frmDrawers.pnlTemplatesButton, False, True, False).SetFocus;
+  end;
+end;
+
+procedure TfrmNotes.cmdNewNoteExit(Sender: TObject);
+begin
+  inherited;
+  if TabIsPressed or ShiftTabIsPressed then
+  begin
+    if (Screen.ActiveControl = lvNotes) or
+        (Screen.ActiveControl = memNote) then
+      frmFrame.pnlPatient.SetFocus
+    else
+    if (Screen.ActiveControl = tvNotes) then
+      FindNextControl( frmFrame.pnlPatient, False, True, False).SetFocus;
+  end;
+end;
+
+procedure TfrmNotes.frmFramePnlPatientExit(Sender: TObject);
+begin
+  FOldFramePnlPatientExit(Sender);
+  if TabIsPressed or ShiftTabIsPressed then
+  begin
+    if (Screen.ActiveControl = lvNotes) or
+        (Screen.ActiveControl = memNote) then
+      FindNextControl( lvNotes, False, True, False).SetFocus;
+    if Screen.ActiveControl = memPCEShow then
+      if cmdPCE.CanFocus then
+        cmdPCE.SetFocus
+      else if cmdNewNote.CanFocus then
+        cmdNewNote.SetFocus;
+  end;
+end;
+
+procedure TfrmNotes.FormHide(Sender: TObject);
+begin
+  inherited;
+  frmFrame.pnlPatient.OnExit := FOldFramePnlPatientExit;
+  frmDrawers.pnlTemplatesButton.OnExit := FOldDrawerPnlTemplatesButtonExit;
+  frmDrawers.pnlEncounterButton.OnExit := FOldDrawerPnlEncounterButtonExit;
+  frmDrawers.edtSearch.OnExit := FOldDrawerEdtSearchExit;
+end;
+
+procedure TfrmNotes.FormShow(Sender: TObject);
+begin
+  inherited;
+  FOldFramePnlPatientExit := frmFrame.pnlPatient.OnExit;
+  frmFrame.pnlPatient.OnExit := frmFramePnlPatientExit;
+  FOldDrawerPnlTemplatesButtonExit := frmDrawers.pnlTemplatesButton.OnExit;
+  frmDrawers.pnlTemplatesButton.OnExit := frmDrawerPnlTemplatesButtonExit;
+  FOldDrawerPnlEncounterButtonExit := frmDrawers.pnlEncounterButton.OnExit;
+  frmDrawers.pnlEncounterButton.OnExit := frmDrawerPnlEncounterButtonExit;
+  FOldDrawerEdtSearchExit := frmDrawers.edtSearch.OnExit;
+  frmDrawers.edtSearch.OnExit := frmDrawerEdtSearchExit;
+end;
+
+procedure TfrmNotes.frmDrawerEdtSearchExit(Sender: TObject);
+begin
+  FOldDrawerEdtSearchExit(Sender);
+  cmdNewNoteExit(Sender);
+end;
+
+procedure TfrmNotes.frmDrawerPnlTemplatesButtonExit(Sender: TObject);
+begin
+  FOldDrawerPnlTemplatesButtonExit(Sender);
+  if Boolean(Hi(GetKeyState(VK_TAB))) and  (memNewNote.CanFocus) and
+     Boolean(Hi(GetKeyState(VK_SHIFT))) then
+    memNewNote.SetFocus
+  else
+    cmdNewNoteExit(Sender);
+end;
+
+procedure TfrmNotes.frmDrawerPnlEncounterButtonExit(Sender: TObject);
+begin
+  FOldDrawerPnlEncounterButtonExit(Sender);
+  cmdNewNoteExit(Sender);
+end;
+
+procedure TfrmNotes.memNewNoteKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  if FNavigatingTab then
+    Key := #0;  //Disable shift-tab processinend;
+end;
+
+procedure TfrmNotes.memNewNoteKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if FNavigatingTab then
+  begin
+    if ssShift in Shift then
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus //previous control
+    else if ssCtrl	in Shift then
+      if frmDrawers.pnlTemplatesButton.CanFocus then
+        frmDrawers.pnlTemplatesButton.SetFocus
+      else
+        FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+    FNavigatingTab := False;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmNotes.memPCEShowExit(Sender: TObject);
+begin
+  inherited;
+  //Fix the Tab Order  Make Drawers Buttons Accessible
+  if TabIsPressed then
+    if frmDrawers.pnlTemplatesButton.CanFocus then
+      frmDrawers.pnlTemplatesButton.SetFocus
+end;
+
+procedure TfrmNotes.cmdChangeExit(Sender: TObject);
+begin
+  inherited;
+  //Fix the Tab Order  Make Drawers Buttons Accessible
+  if Boolean(Hi(GetKeyState(VK_TAB))) and
+     Boolean(Hi(GetKeyState(VK_SHIFT))) then
+    tvNotes.SetFocus;
+end;
+
+procedure TfrmNotes.cmdPCEExit(Sender: TObject);
+begin
+  inherited;
+  //Fix the Tab Order  Make Drawers Buttons Accessible
+  if TabIsPressed then
+    if frmFrame.pnlPatient.CanFocus then
+      frmFrame.pnlPatient.SetFocus;
+end;
+
+procedure TfrmNotes.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmNotes.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+procedure TfrmNotes.UpdateFormForInput;
+var
+  idx, offset: integer;
+
+begin
+  if (not pnlWrite.Visible) or uInit.TimedOut then exit;
+
+  if (frmFrame.WindowState = wsMaximized) then
+    idx := GetSystemMetrics(SM_CXFULLSCREEN)
+  else
+    idx := GetSystemMetrics(SM_CXSCREEN);
+  if idx > frmFrame.Width then
+    idx := frmFrame.Width;
+
+  offset := 5;
+  if(MainFontSize <> 8) then
+    offset := ResizeWidth(BaseFont, Font, offset);
+  dec(idx, offset + 10);
+  dec(idx, pnlLeft.Width);
+  dec(idx, sptHorz.Width);
+  dec(idx, cmdChange.Width);
+
+  cmdChange.Left := idx;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmNotes);
+  uPCEEdit := TPCEData.Create;
+  uPCEShow := TPCEData.Create;
+
+finalization
+  if (uPCEEdit <> nil) then uPCEEdit.Free; //CQ7012 Added test for nil
+  if (uPCEShow <> nil) then uPCEShow.Free; //CQ7012 Added test for nil
+   
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotesBP.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotesBP.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotesBP.dfm	(revision 1676)
@@ -0,0 +1,88 @@
+inherited frmNotesBP: TfrmNotesBP
+  Left = 230
+  Top = 376
+  BorderIcons = []
+  Caption = 'Boilerplate Text'
+  ClientHeight = 155
+  ClientWidth = 310
+  Position = poScreenCenter
+  OnKeyUp = FormKeyUp
+  ExplicitWidth = 318
+  ExplicitHeight = 182
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TStaticText [0]
+    Left = 0
+    Top = 0
+    Width = 310
+    Height = 17
+    Align = alTop
+    AutoSize = False
+    Caption = 'The selected title has associated boilerplate text.'
+    TabOrder = 1
+  end
+  object radOptions: TRadioGroup [1]
+    Left = 0
+    Top = 17
+    Width = 310
+    Height = 110
+    Align = alClient
+    Caption = ' Choose from: '
+    ItemIndex = 0
+    Items.Strings = (
+      '&Ignore the boilerplate text (text of note will not change).'
+      '&Append the boilerplate text to the text in the note.'
+      '&Replace the text in the note with the boilerplate text.')
+    TabOrder = 0
+    ExplicitHeight = 103
+  end
+  object btnPanel: TPanel [2]
+    Left = 0
+    Top = 127
+    Width = 310
+    Height = 28
+    Align = alBottom
+    TabOrder = 2
+    ExplicitTop = 120
+    object cmdPreview: TButton
+      Left = 6
+      Top = 4
+      Width = 79
+      Height = 21
+      Caption = 'Preview Text'
+      TabOrder = 0
+      OnClick = cmdPreviewClick
+    end
+    object cmdClose: TButton
+      Left = 230
+      Top = 4
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 1
+      OnClick = cmdCloseClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = Label1'
+        'Status = stsDefault')
+      (
+        'Component = radOptions'
+        'Status = stsDefault')
+      (
+        'Component = btnPanel'
+        'Status = stsDefault')
+      (
+        'Component = cmdPreview'
+        'Status = stsDefault')
+      (
+        'Component = cmdClose'
+        'Status = stsDefault')
+      (
+        'Component = frmNotesBP'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotesBP.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotesBP.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fNotesBP.pas	(revision 1676)
@@ -0,0 +1,75 @@
+unit fNotesBP;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmNotesBP = class(TfrmAutoSz)
+    Label1: TStaticText;
+    radOptions: TRadioGroup;
+    btnPanel: TPanel;
+    cmdPreview: TButton;
+    cmdClose: TButton;
+    procedure cmdPreviewClick(Sender: TObject);
+    procedure cmdCloseClick(Sender: TObject);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FBPText: TStrings;
+  public
+    { Public declarations }
+  end;
+
+function QueryBoilerPlate(BPText: TStrings): Integer;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, fRptBox;
+
+function QueryBoilerPlate(BPText: TStrings): Integer;
+var
+  frmNotesBP: TfrmNotesBP;
+begin
+  frmNotesBP := TfrmNotesBP.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmNotesBP));
+    with frmNotesBP do
+    begin
+      FBPText := BPText;
+      ShowModal;
+      Result := radOptions.ItemIndex;
+    end;
+  finally
+    frmNotesBP.Release;
+  end;
+end;
+
+procedure TfrmNotesBP.cmdPreviewClick(Sender: TObject);
+begin
+  inherited;
+  ReportBox(FBPText, 'Boilerplate Text Preview', False);
+end;
+
+procedure TfrmNotesBP.cmdCloseClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmNotesBP.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_ESCAPE then begin
+    Key := 0;
+    radOptions.ItemIndex := 0; //Ignore
+    Close;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPage.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPage.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPage.dfm	(revision 1676)
@@ -0,0 +1,27 @@
+inherited frmPage: TfrmPage
+  Left = 13
+  Top = 236
+  Caption = 'Basic Page'
+  ClientHeight = 361
+  ClientWidth = 640
+  OldCreateOrder = True
+  OnClose = FormClose
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object shpPageBottom: TShape [0]
+    Left = 0
+    Top = 356
+    Width = 640
+    Height = 5
+    Align = alBottom
+    Brush.Color = clBtnFace
+    Pen.Style = psClear
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = frmPage'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPage.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPage.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPage.pas	(revision 1676)
@@ -0,0 +1,164 @@
+unit fPage;
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, uConst,
+  rOrders, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPage = class(TfrmBase508Form)
+    shpPageBottom: TShape;
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    FDisplayCount: Integer;                      // number of times page displayed
+    FPatientCount: Integer;                      // number of times page displayed for given pt
+    FCallingContext: Integer;
+    FOldEnter: TNotifyEvent;
+    FPageID: integer;
+    function GetInitPage: Boolean;
+    function GetInitPatient: Boolean;
+    function GetPatientViewed: Boolean;
+  protected
+    procedure Loaded; override;
+    procedure frmPageEnter(Sender: TObject);
+  public
+    function AllowContextChange(var WhyNot: string): Boolean; virtual;
+    procedure ClearPtData; virtual;
+    procedure DisplayPage; virtual;
+    procedure NotifyOrder(OrderAction: Integer; AnOrder: TOrder); virtual;
+    procedure RequestPrint; virtual;
+    procedure SetFontSize(NewFontSize: Integer); virtual;
+    procedure FocusFirstControl;
+    property CallingContext: Integer read FCallingContext;
+    property InitPage: Boolean read GetInitPage;
+    property InitPatient: Boolean read GetInitPatient;
+    property PatientViewed: Boolean read GetPatientViewed;
+    property PageID: integer read FPageID write FPageID default CT_UNKNOWN;
+  end;
+
+var
+  frmPage: TfrmPage;
+
+implementation
+
+uses ORFn, fFrame, uInit, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+procedure TfrmPage.FormCreate(Sender: TObject);
+{ set counters to 0 }
+begin
+  HelpFile := Application.HelpFile + '>' + HelpFile;
+  FDisplayCount := 0;
+  FPatientCount := 0;
+  FOldEnter := OnEnter;
+  OnEnter := frmPageEnter;
+end;
+
+procedure TfrmPage.Loaded;
+{ make the form borderless to allow it to be a child window }
+begin
+  inherited Loaded;
+  Visible := False;
+  Position := poDefault;
+  BorderIcons := [];
+  BorderStyle := bsNone;
+  HandleNeeded;
+  SetBounds(0, 0, Width, Height);
+end;
+
+function TfrmPage.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  Result := True;
+end;
+
+procedure TfrmPage.ClearPtData;
+{ clear all patient related data on a page }
+begin
+  FPatientCount := 0;
+end;
+
+procedure TfrmPage.DisplayPage;
+{ cause the page to be displayed and update the display counters }
+begin
+  BringToFront;
+  if ActiveControl <> nil then
+    FocusControl(ActiveControl);
+ //CQ12232 else
+//CQ12232   FocusFirstControl;
+  //SetFocus;
+  Inc(FDisplayCount);
+  Inc(FPatientCount);
+  FCallingContext := frmFrame.ChangeSource;
+  if (FCallingContext = CC_CLICK) and (FPatientCount = 1)
+    then FCallingContext := CC_INIT_PATIENT;
+end;
+
+procedure TfrmPage.NotifyOrder(OrderAction: Integer; AnOrder: TOrder);
+begin
+end;
+
+procedure TfrmPage.RequestPrint;
+begin
+end;
+
+procedure TfrmPage.SetFontSize(NewFontSize: Integer);
+begin
+  ResizeAnchoredFormToFont( self );
+  if Assigned(Parent) then begin
+    Width := Parent.ClientWidth;
+    Height := Parent.ClientHeight;
+  end;
+  Resize;
+end;
+
+function TfrmPage.GetInitPage: Boolean;
+{ if the count is one, this is the first time the page is being displayed }
+begin
+  Result := FDisplayCount = 1;
+end;
+
+function TfrmPage.GetInitPatient: Boolean;
+{ if the count is one, this is the first time the page is being displayed for a given patient }
+begin
+  Result := FPatientCount = 1;
+end;
+
+function TfrmPage.GetPatientViewed: Boolean;
+{ returns false if the tab has never been clicked for this patient }
+begin
+  Result := FPatientCount > 0;
+end;
+
+procedure TfrmPage.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree;
+end;
+
+procedure TfrmPage.frmPageEnter(Sender: TObject);
+begin
+  if Assigned(frmFrame) then
+    FrmFrame.tabPage.TabIndex := FrmFrame.PageIDToTab(PageID);
+  if Assigned(FOldEnter) then
+    FOldEnter(Sender);
+end;
+
+procedure TfrmPage.FocusFirstControl;
+var
+  NextControl: TWinControl;
+begin
+  if Assigned(frmFrame) and frmFrame.Enabled and frmFrame.Visible and not uInit.Timedout then begin
+    NextControl := FindNextControl(nil, True, True, False);
+    if NextControl <> nil then
+      NextControl.SetFocus;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPage);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPatientFlagMulti.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPatientFlagMulti.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPatientFlagMulti.dfm	(revision 1676)
@@ -0,0 +1,237 @@
+inherited frmFlags: TfrmFlags
+  Left = 380
+  Top = 122
+  Width = 504
+  Height = 532
+  VertScrollBar.Range = 116
+  Caption = 'Patient Record Flags'
+  Position = poMainFormCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  ExplicitWidth = 504
+  ExplicitHeight = 532
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Splitter1: TSplitter [0]
+    Left = 0
+    Top = 80
+    Width = 497
+    Height = 5
+    Align = alNone
+  end
+  object Splitter2: TSplitter [1]
+    Left = 0
+    Top = 349
+    Width = 496
+    Height = 4
+    Cursor = crVSplit
+    Align = alBottom
+    MinSize = 45
+  end
+  object pnlTop: TORAutoPanel [2]
+    Left = 0
+    Top = 0
+    Width = 496
+    Height = 113
+    Align = alTop
+    Constraints.MinHeight = 40
+    Constraints.MinWidth = 300
+    TabOrder = 0
+    object lblFlags: TLabel
+      Left = 1
+      Top = 54
+      Width = 494
+      Height = 13
+      Align = alTop
+      Caption = 'Category II Flags'
+      Layout = tlCenter
+      ExplicitWidth = 79
+    end
+    object lblCat1: TLabel
+      Left = 1
+      Top = 1
+      Width = 494
+      Height = 13
+      Align = alTop
+      Caption = 'Category I Flags'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentColor = False
+      ParentFont = False
+      Layout = tlCenter
+      ExplicitWidth = 93
+    end
+    object lstFlagsCat2: TORListBox
+      Left = 1
+      Top = 67
+      Width = 494
+      Height = 45
+      Align = alClient
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = lstFlagsCat2Click
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object lstFlagsCat1: TORListBox
+      Left = 1
+      Top = 14
+      Width = 494
+      Height = 40
+      Align = alTop
+      BevelKind = bkTile
+      BevelOuter = bvRaised
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ItemHeight = 13
+      ParentFont = False
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      OnClick = lstFlagsCat1Click
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+  end
+  object memFlags: TRichEdit [3]
+    Left = 0
+    Top = 113
+    Width = 496
+    Height = 236
+    Align = alClient
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    HideScrollBars = False
+    Lines.Strings = (
+      '')
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 1
+    WantReturns = False
+    WordWrap = False
+  end
+  object pnlNotes: TPanel [4]
+    Left = 0
+    Top = 353
+    Width = 496
+    Height = 152
+    Align = alBottom
+    TabOrder = 2
+    object lblNoteTitle: TLabel
+      Left = 1
+      Top = 1
+      Width = 53
+      Height = 13
+      Align = alTop
+      Caption = 'lblNoteTitle'
+    end
+    object lvPRF: TCaptionListView
+      Left = 1
+      Top = 14
+      Width = 494
+      Height = 106
+      Align = alClient
+      Columns = <
+        item
+          Caption = 'Used For Screen Readers'
+          Width = 1
+        end
+        item
+          AutoSize = True
+          Caption = 'Date'
+        end
+        item
+          AutoSize = True
+          Caption = 'Action'
+        end
+        item
+          AutoSize = True
+          Caption = 'Author'
+        end>
+      Constraints.MinHeight = 50
+      HideSelection = False
+      ReadOnly = True
+      RowSelect = True
+      TabOrder = 0
+      ViewStyle = vsReport
+      OnClick = lvPRFClick
+      OnKeyDown = lvPRFKeyDown
+    end
+    object pnlBottom: TORAutoPanel
+      Left = 1
+      Top = 120
+      Width = 494
+      Height = 31
+      Align = alBottom
+      TabOrder = 1
+      DesignSize = (
+        494
+        31)
+      object btnClose: TButton
+        Left = 409
+        Top = 5
+        Width = 77
+        Height = 21
+        Anchors = [akRight, akBottom]
+        Cancel = True
+        Caption = 'Close'
+        ModalResult = 2
+        TabOrder = 0
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lstFlagsCat2'
+        'Status = stsDefault')
+      (
+        'Component = lstFlagsCat1'
+        'Status = stsDefault')
+      (
+        'Component = memFlags'
+        'Status = stsDefault')
+      (
+        'Component = pnlNotes'
+        'Status = stsDefault')
+      (
+        'Component = lvPRF'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = frmFlags'
+        'Status = stsDefault'))
+  end
+  object TimerTextFlash: TTimer
+    Enabled = False
+    Interval = 750
+    OnTimer = TimerTextFlashTimer
+    Left = 240
+    Top = 24
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPatientFlagMulti.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPatientFlagMulti.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPatientFlagMulti.pas	(revision 1676)
@@ -0,0 +1,323 @@
+unit fPatientFlagMulti;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, fAutoSz, ORCtrls, ExtCtrls, ComCtrls, rMisc, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  {This object holds a List of Notes Linked to a PRF as Returned VIA the RPCBroker}
+  TPRFNotes = class(TObject)
+  private
+    FPRFNoteList : TStringList;
+  public
+    //procedure to show the Notes in a ListView, requires a listview parameter
+    procedure ShowActionsOnList(DisplayList : TCaptionListView);
+    //procedure to load the notes, this will call the RPC
+    procedure Load(TitleIEN : Int64; DFN : String);
+    function getNoteIEN(index: integer): String;
+    constructor create;
+    destructor Destroy(); override;
+  end;
+
+  TfrmFlags = class(TfrmBase508Form)
+    Splitter1: TSplitter;
+    pnlTop: TORAutoPanel;
+    lblFlags: TLabel;
+    lstFlagsCat2: TORListBox;
+    memFlags: TRichEdit;
+    pnlNotes: TPanel;
+    lvPRF: TCaptionListView;
+    lblNoteTitle: TLabel;
+    Splitter2: TSplitter;
+    pnlBottom: TORAutoPanel;
+    btnClose: TButton;
+    lstFlagsCat1: TORListBox;
+    lblCat1: TLabel;
+    TimerTextFlash: TTimer;
+    procedure lstFlagsCat1Click(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormDestroy(Sender: TObject);
+    procedure lvPRFClick(Sender: TObject);
+    procedure lvPRFKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure TimerTextFlashTimer(Sender: TObject);
+    procedure lstFlagsCat2Click(Sender: TObject);
+  private
+    FFlagID: integer;
+    FPRFNotes : TPRFNotes;
+    FNoteTitle: String;
+    procedure GetNotes(SelectedList : TORListBox);
+    procedure MakeCat1FlagsStandOut;
+    procedure LoadSelectedFlagData(SelectedList : TORListBox);
+    procedure ActivateSpecificFlag;
+    procedure PutFlagsOnLists(flags, Cat1List,  Cat2List: TStrings);
+    function GetListToActivate : TORListBox;
+  public
+    { Public declarations }
+  end;
+const
+  HIDDEN_COL = 'Press enter or space bar to view this note:';
+  //TIU GET LINKED PRF NOTES, return position constants
+  NOTE_IEN_POS = 1;
+  ACTION_POS = 2;
+  NOTE_DATE_POS = 3;
+  AUTHOR_POS = 4;
+  //TIU GET PRF TITLE, return position constants
+  NOTE_TITLE_IEN = 1;
+  NOTE_TITLE = 2;
+
+
+procedure ShowFlags(FlagId: integer = 0);
+
+implementation
+
+uses uCore,uOrPtf,ORFn, ORNet, uConst, fRptBox, rCover;
+{$R *.dfm}
+
+procedure ShowFlags(FlagId: integer);
+var
+  frmFlags: TfrmFlags;
+begin
+  frmFlags := TFrmFlags.Create(Nil);
+  try
+    SetFormPosition(frmFlags);
+    if HasFlag then
+    begin
+      with frmFlags do begin
+        FFlagID := FlagId;
+        PutFlagsOnLists(FlagList, lstFlagsCat1.Items, lstFlagsCat2.Items);
+      end;
+      frmFlags.memFlags.SelStart := 0;
+      ResizeFormToFont(TForm(frmFlags));
+      frmFlags.ShowModal;
+    end
+  finally
+    frmFlags.Release;
+  end;
+end;
+
+procedure TfrmFlags.lstFlagsCat1Click(Sender: TObject);
+begin
+  if lstFlagsCat1.ItemIndex >= 0 then
+  begin
+    with lstFlagsCat2 do
+      Selected[ItemIndex] := False;
+    LoadSelectedFlagData(lstFlagsCat1);
+  end;
+end;
+
+procedure TfrmFlags.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+    Close;
+end;
+
+
+procedure TfrmFlags.FormShow(Sender: TObject);
+begin
+  inherited;
+  SetFormPosition(Self);
+  if lstFlagsCat1.Count > 0 then
+    MakeCat1FlagsStandOut;
+
+  ActivateSpecificFlag;
+end;
+
+procedure TfrmFlags.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FFlagID := 0;
+end;
+
+procedure TfrmFlags.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  inherited;
+  SaveUserBounds(Self);
+end;
+
+procedure TfrmFlags.GetNotes(SelectedList : TORListBox);
+var
+  NoteTitleIEN, FlagID : Int64;
+begin
+    if FPRFNotes = nil then
+      FPRFNotes := TPRFNotes.Create;
+    FlagID := SelectedList.ItemID;
+    CallV('TIU GET PRF TITLE', [Patient.DFN,FlagID]);
+    FNoteTitle := Piece(RPCBrokerV.Results[0],U,NOTE_TITLE);
+    lblNoteTitle.Caption := 'Signed, Linked Notes of Title: '+ FNoteTitle;
+    NoteTitleIEN := StrToInt(Piece(RPCBrokerV.Results[0],U,NOTE_TITLE_IEN));
+    FPRFNotes.Load(NoteTitleIEN,Patient.DFN);
+    FPRFNotes.ShowActionsOnList(lvPRF);
+    with lvPRF do begin
+
+      Columns.BeginUpdate;
+      Columns.EndUpdate;
+    end;
+end;
+
+{ TPRFNotes }
+
+constructor TPRFNotes.create;
+begin
+  inherited;
+  FPRFNoteList := TStringList.create;
+end;
+
+destructor TPRFNotes.Destroy;
+begin
+  FPRFNoteList.Free;
+  inherited;
+end;
+
+function TPRFNotes.getNoteIEN(index: integer): String;
+begin
+ Result := Piece(FPRFNoteList[index],U,NOTE_IEN_POS);
+end;
+
+procedure TPRFNotes.Load(TitleIEN: Int64; DFN: String);
+const
+  REVERSE_CHRONO = 1;
+begin
+  CallV('TIU GET LINKED PRF NOTES', [DFN,TitleIEN,REVERSE_CHRONO]);
+  FastAssign(RPCBrokerV.Results, FPRFNoteList);
+end;
+
+procedure TPRFNotes.ShowActionsOnList(DisplayList: TCaptionListView);
+var
+  i : integer;
+  ListItem: TListItem;
+begin
+  DisplayList.Clear;
+  for i := 0 to FPRFNoteList.Count-1 do
+  begin
+    //Caption="Text for Screen Reader" SubItem1=Flag SubItem2=Date SubItem3=Action SubItem4=Note
+    ListItem := DisplayList.Items.Add;
+    ListItem.Caption := HIDDEN_COL; //Screen readers don't read the first column title on a listview.
+    ListItem.SubItems.Add(Piece(FPRFNoteList[i],U,NOTE_DATE_POS));
+    ListItem.SubItems.Add(Piece(FPRFNoteList[i],U,ACTION_POS));
+    ListItem.SubItems.Add(Piece(FPRFNoteList[i],U,AUTHOR_POS));
+  end;
+end;
+
+procedure TfrmFlags.FormDestroy(Sender: TObject);
+begin
+  FPRFNotes.Free;
+end;
+
+procedure TfrmFlags.lvPRFClick(Sender: TObject);
+begin
+  if lvPRF.ItemIndex > -1 then
+  begin
+    NotifyOtherApps(NAE_REPORT, 'TIU^' + FPRFNotes.getNoteIEN(lvPRF.ItemIndex));
+    ReportBox(DetailPosting(FPRFNotes.getNoteIEN(lvPRF.ItemIndex)), FNoteTitle, True);
+  end;
+end;
+
+procedure TfrmFlags.lvPRFKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (Key = VK_SPACE) or (Key = VK_RETURN) then
+    lvPRFClick(Sender);
+end;
+
+
+procedure TfrmFlags.MakeCat1FlagsStandOut;
+Const
+  FONT_INC = 4;
+  clBrightOrange = TColor($3ABEF3);  //Blue 58 Green 190 Red 243
+begin
+  lblCat1.Font.Size := lblCat1.Font.Size + FONT_INC;
+  lstFlagsCat1.Font.Size := lstFlagsCat1.Font.Size + FONT_INC;
+  lblCat1.Color := Get508CompliantColor(clBrightOrange);
+  lstFlagsCat1.Color := Get508CompliantColor(clBrightOrange);
+  lblCat1.Font.Color := Get508CompliantColor(clWhite);
+  lstFlagsCat1.Font.Color := Get508CompliantColor(clWhite);
+  TimerTextFlash.Enabled := true;
+end;
+
+procedure TfrmFlags.TimerTextFlashTimer(Sender: TObject);
+begin
+  if lblCat1.Font.Color = Get508CompliantColor(clWhite) then
+    lblCat1.Font.Color := Get508CompliantColor(clBlack)
+  else
+    lblCat1.Font.Color := Get508CompliantColor(clWhite);
+end;
+
+procedure TfrmFlags.LoadSelectedFlagData(SelectedList: TORListBox);
+var
+  FlagArray: TStringList;
+begin
+    FlagArray := TStringList.Create;
+    GetActiveFlg(FlagArray, Patient.DFN, SelectedList.ItemID);
+    if FlagArray.Count > 0 then
+      QuickCopy(FlagArray, memFlags);
+    memFlags.SelStart := 0;
+    GetNotes(SelectedList);
+end;
+
+procedure TfrmFlags.lstFlagsCat2Click(Sender: TObject);
+begin
+  if lstFlagsCat2.ItemIndex >= 0 then
+  begin
+    with lstFlagsCat1 do
+      Selected[ItemIndex] := False;
+    LoadSelectedFlagData(lstFlagsCat2);
+  end;
+end;
+
+procedure TfrmFlags.ActivateSpecificFlag;
+var
+  idx: integer;
+  SelectedList : TORListBox;
+begin
+  idx := 0;
+  SelectedList := GetListToActivate;
+  if FFlagID > 0 then
+    idx := SelectedList.SelectByIEN(FFlagId);
+  SelectedList.ItemIndex := idx;
+  SelectedList.OnClick(Self);
+  ActiveControl := memFlags;
+  GetNotes(SelectedList);
+end;
+
+function TfrmFlags.GetListToActivate: TORListBox;
+begin
+  Result := nil;
+  if FFlagID > 0 then begin
+    if lstFlagsCat1.SelectByIEN(FFlagId) > -1 then
+      Result := lstFlagsCat1
+    else if lstFlagsCat2.SelectByIEN(FFlagId) > -1 then
+      Result := lstFlagsCat2
+  end;
+  if Result = nil then
+    if lstFlagsCat1.Items.Count > 0 then
+      Result := lstFlagsCat1
+    else
+      Result := lstFlagsCat2;
+
+end;
+
+procedure TfrmFlags.PutFlagsOnLists(flags, Cat1List, Cat2List: TStrings);
+Const
+  FLAG_TYPE_POS = 3;
+  TRUE_STRING = '1';
+var
+  i : integer;
+begin
+  for i := 0 to flags.Count-1 do begin
+    if Piece(flags[i],U,FLAG_TYPE_POS) = TRUE_STRING then
+      Cat1List.Add(flags[i])
+    else
+      Cat2List.Add(flags[i]);
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPostings.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPostings.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPostings.dfm	(revision 1676)
@@ -0,0 +1,29 @@
+inherited frmPostings: TfrmPostings
+  Left = 610
+  Top = 242
+  Caption = 'Postings'
+  ClientHeight = 273
+  ClientWidth = 427
+  OldCreateOrder = True
+  ExplicitWidth = 435
+  ExplicitHeight = 300
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 80
+    Top = 56
+    Width = 185
+    Height = 165
+    BevelOuter = bvNone
+    TabOrder = 0
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = frmPostings'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPostings.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPostings.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPostings.pas	(revision 1676)
@@ -0,0 +1,25 @@
+unit fPostings;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPostings = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmPostings: TfrmPostings;
+
+implementation
+
+{$R *.DFM}
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintList.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintList.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintList.dfm	(revision 1676)
@@ -0,0 +1,72 @@
+inherited frmPrintList: TfrmPrintList
+  Left = 364
+  Top = 191
+  Caption = 'Print Selected Items'
+  ClientHeight = 361
+  ClientWidth = 455
+  OnCreate = FormCreate
+  ExplicitLeft = 364
+  ExplicitTop = 191
+  ExplicitWidth = 463
+  ExplicitHeight = 388
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblListName: TLabel [0]
+    Left = 16
+    Top = 8
+    Width = 54
+    Height = 13
+    Caption = 'lblListName'
+  end
+  object lbIDParents: TORListBox [1]
+    Left = 9
+    Top = 22
+    Width = 434
+    Height = 267
+    ItemHeight = 13
+    MultiSelect = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    TabWidth = 8
+    Caption = 'Select a list of notes for printing'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+    TabPositions = '30'
+  end
+  object cmdOK: TButton [2]
+    Left = 131
+    Top = 312
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 237
+    Top = 312
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lbIDParents'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPrintList'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintList.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintList.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintList.pas	(revision 1676)
@@ -0,0 +1,137 @@
+unit fPrintList;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ORCtrls, fConsult513Prt, VA508AccessibilityManager;
+
+type
+  TfrmPrintList = class(TfrmAutoSz)
+    lbIDParents: TORListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblListName: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+
+  private
+    { Private declarations }
+     FParentNode: string;
+  public
+    { Public declarations }
+    function SelectParentFromList(ATree: TORTreeView; PageID: Integer): string;
+  end;
+
+var
+  frmPrintList: TfrmPrintList;
+  HLDPageID: Integer;
+
+implementation
+
+{$R *.dfm}
+uses
+  uTIU, rTIU, uConst, fNotes, fNotePrt, ORFn, fConsults, fDCSumm, fFrame;
+
+procedure TfrmPrintList.FormCreate(Sender: TObject);
+begin
+  inherited;
+   FParentNode := '';
+end;
+
+procedure TfrmPrintList.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  FParentNode := '';
+  Close;
+end;
+
+procedure TfrmPrintList.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  case HLDPageID of
+    CT_NOTES:        frmNotes.RequestMultiplePrint(Self);
+    CT_CONSULTS:     frmConsults.RequestMultiplePrint(Self);
+    CT_DCSUMM:       frmDCSumm.RequestMultiplePrint(Self);
+  end; {case}
+  FParentNode := lbIDParents.ItemID;
+  Close;
+end;
+
+function TfrmPrintList.SelectParentFromList(ATree: TORTreeView; PageID: Integer): string;
+var
+  frmPrintList: TfrmPrintList;
+  i, AnImg: integer;
+  x: string;
+  tmpList: TStringList;
+  //strObj: TStringList;
+begin
+  HLDPageID := PageID;
+  frmPrintList := TfrmPrintList.Create(Application);
+  frmPrintList.Parent := Self;
+  tmpList := TStringList.Create;
+   try
+    ResizeFormToFont(TForm(frmPrintList));
+    for i := 0 to ATree.Items.Count - 1 do
+      begin
+        AnImg := TORTreeNode(ATree.Items.Item[i]).ImageIndex;
+        if AnImg in [IMG_SINGLE, IMG_PARENT,IMG_IDNOTE_SHUT, IMG_IDNOTE_OPEN,
+                         IMG_IDPAR_ADDENDA_SHUT, IMG_IDPAR_ADDENDA_OPEN] then
+          begin
+            x := TORTreeNode(ATree.Items.Item[i]).Stringdata;
+            tmpList.Add(x);
+            //strObj := TStringList.Create;
+            //strObj.Insert(0,x);
+            //tmpList.AddObject(x, strObj)  // notes and dc/summs & Consults
+          end; {if}
+      end; {for}
+
+    frmPrintList.lbIDParents.Sorted := FALSE;
+
+      case PageID of
+      CT_NOTES:
+         begin
+           SortByPiece(tmpList, U, 3);
+           InvertStringList(tmpList);
+           for i := 0 to tmpList.Count - 1 do
+             begin
+               x := tmpList[i];
+               tmpList[i] := Piece(x, U, 1) + U + (MakeNoteDisplayText(x));
+             end;
+           frmPrintList.lblListName.Caption := 'Select Notes to be printed.';
+         end;
+      CT_CONSULTS:
+         begin
+           SortByPiece(tmpList, U, 11);
+           InvertStringList(tmpList);
+           for i := 0 to tmpList.Count - 1 do
+             begin
+               x := tmpList[i];
+               tmpList[i] := Piece(x, U, 1) + U + (MakeConsultDisplayText(x));
+             end;
+           frmPrintList.lblListName.Caption := 'Select Consults to be printed.';
+         end;
+      CT_DCSUMM:
+         begin
+           SortByPiece(tmpList, U, 3);
+           InvertStringList(tmpList);
+           for i := 0 to tmpList.Count - 1 do
+             begin
+               x := tmpList[i];
+               tmpList[i] := Piece(x, U, 1) + U + (MakeNoteDisplayText(x));
+             end;
+           frmPrintList.lblListName.Caption := 'Select Discharge Summaries to be printed.';
+         end;
+      end; //case
+
+    FastAssign(tmpList, frmPrintList.lbIDParents.Items);
+    frmPrintList.ShowModal;
+    Result := frmPrintList.FParentNode;
+  finally
+    tmpList.Free;
+    frmPrintList.Release;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintLocation.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintLocation.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintLocation.dfm	(revision 1676)
@@ -0,0 +1,192 @@
+inherited frmPrintLocation: TfrmPrintLocation
+  Left = 293
+  Top = 250
+  Width = 450
+  Height = 472
+  AutoScroll = True
+  BorderIcons = []
+  Caption = 'Order Location'
+  Constraints.MinWidth = 440
+  OldCreateOrder = False
+  Position = poMainFormCenter
+  OnClose = FormClose
+  ExplicitWidth = 450
+  ExplicitHeight = 472
+  DesignSize = (
+    442
+    445)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblEncounter: TLabel [0]
+    Left = 0
+    Top = 379
+    Width = 280
+    Height = 13
+    Caption = 'Where would you like to continue processing patient data? '
+  end
+  object pnlTop: TPanel [1]
+    Left = 0
+    Top = 0
+    Width = 442
+    Height = 153
+    Anchors = [akLeft, akTop, akRight]
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblText: TLabel
+      Left = 8
+      Top = 16
+      Width = 3
+      Height = 13
+    end
+    object orpnlTopBottom: TORAutoPanel
+      Left = 0
+      Top = 112
+      Width = 442
+      Height = 41
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 0
+      object btnClinic: TButton
+        Left = 145
+        Top = 8
+        Width = 75
+        Height = 25
+        Caption = 'All Clinic'
+        TabOrder = 0
+        OnClick = btnClinicClick
+      end
+      object btnWard: TButton
+        Left = 230
+        Top = 8
+        Width = 75
+        Height = 25
+        Caption = 'All Ward'
+        TabOrder = 1
+        OnClick = btnWardClick
+      end
+    end
+  end
+  object pnlBottom: TORAutoPanel [2]
+    Left = 0
+    Top = 159
+    Width = 442
+    Height = 210
+    TabOrder = 1
+    object orderGrid: TStringGrid
+      Left = 1
+      Top = 1
+      Width = 440
+      Height = 208
+      Align = alClient
+      ColCount = 3
+      Constraints.MinWidth = 440
+      DefaultRowHeight = 30
+      Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing]
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnDrawCell = OrderGridDrawCell
+      OnKeyPress = orderGridKeyPress
+      OnMouseDown = orderGridMouseDown
+    end
+    object pnlOrder: TPanel
+      Left = 264
+      Top = 56
+      Width = 97
+      Height = 25
+      TabOrder = 0
+      Visible = False
+    end
+    object cbolocation: TORComboBox
+      Left = 240
+      Top = 104
+      Width = 121
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 1
+      MaxLength = 0
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      Visible = False
+      OnChange = cbolocationChange
+      OnExit = cbolocationExit
+      CharsNeedMatch = 1
+      UniqueAutoComplete = True
+    end
+  end
+  object ORpnlBottom: TORAutoPanel [3]
+    Left = 0
+    Top = 404
+    Width = 442
+    Height = 41
+    BevelEdges = []
+    BevelOuter = bvNone
+    TabOrder = 3
+    object btnOK: TButton
+      Left = 187
+      Top = 3
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+  end
+  object cboEncLoc: TComboBox [4]
+    Left = 284
+    Top = 375
+    Width = 104
+    Height = 21
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ItemHeight = 0
+    TabOrder = 2
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = orpnlTopBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnClinic'
+        'Status = stsDefault')
+      (
+        'Component = btnWard'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = orderGrid'
+        'Status = stsDefault')
+      (
+        'Component = pnlOrder'
+        'Status = stsDefault')
+      (
+        'Component = cbolocation'
+        'Status = stsDefault')
+      (
+        'Component = ORpnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = cboEncLoc'
+        'Status = stsDefault')
+      (
+        'Component = frmPrintLocation'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintLocation.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintLocation.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPrintLocation.pas	(revision 1676)
@@ -0,0 +1,525 @@
+unit fPrintLocation;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, fAutoSz, StdCtrls, ExtCtrls, ORCtrls,ORFn, rCore, uCore, oRNet, Math, fOrders, ORClasses, rOrders,
+  fMeds, rMeds, CheckLst, Grids, fFrame, fClinicWardMeds,
+  VA508AccessibilityManager;
+
+type
+  TfrmPrintLocation = class(TfrmAutoSz)
+    pnlTop: TPanel;
+    pnlBottom: TORAutoPanel;
+    orderGrid: TStringGrid;
+    pnlOrder: TPanel;
+    btnOK: TButton;
+    lblText: TLabel;
+    btnClinic: TButton;
+    btnWard: TButton;
+    lblEncounter: TLabel;
+    cbolocation: TORComboBox;
+    ORpnlBottom: TORAutoPanel;
+    orpnlTopBottom: TORAutoPanel;
+    cboEncLoc: TComboBox;
+    procedure pnlFieldsResize(Sender: TObject);
+    //procedure FormCreate(Sender: TObject);
+    procedure orderGridMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure OrderGridDrawCell(Sender: TObject; ACol, ARow: Integer;
+      Rect: TRect; State: TGridDrawState);
+    procedure orderGridKeyPress(Sender: TObject; var Key: Char);
+    procedure btnClinicClick(Sender: TObject);
+    procedure btnWardClick(Sender: TObject);
+    procedure cbolocationChange(Sender: TObject);
+    procedure cbolocationExit(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  private
+    { Private declarations }
+    function ValFor(FieldID, ARow: Integer): string;
+    procedure ShowEditor(ACol, ARow: Integer; AChar: Char);
+    procedure ProcessClinicOrders(WardList, ClinicList: TStringList; WardIEN, ClinicIEN: integer; ContainsIMO: boolean);
+    procedure rpcChangeOrderLocation(pOrderList:TStringList; ContainsIMO: boolean);
+  public
+     { Public declarations }
+  CLoc,WLoc: string;
+  CloseOK: boolean;
+  DisplayOrders: boolean;
+  procedure PrintLocation(OrderLst: TStringList; pEncounterLoc: integer; pEncounterLocName, pEncounterLocText: string;
+             pEncounterDT: TFMDateTime; pEncounterVC: Char; var ClinicLst, WardLst: TStringList;
+             var wardIEN: integer; var wardLocation: string; ContainsIMOOrders: boolean; displayEncSwitch: boolean = false);
+  procedure SwitchEncounterLoction(pEncounterLoc: integer; pEncounterLocName, pEncounterLocText: string; pEncounterDT: TFMDateTime; pEncounterVC: Char);
+  end;
+
+var
+  frmPrintLocation: TfrmPrintLocation;
+  ClinicIEN, WardIen: integer;
+  ASvc, ClinicLocation, WardLocation: string;
+  ClinicArr: TStringList;
+  WardArr: TStringList;
+
+implementation
+
+{$R *.dfm}
+//uses
+//fFrame;
+
+Const
+COL_ORDERINFO = 0;
+COL_ORDERTEXT = 1;
+COL_LOCATION  = 2;
+TAB           = #9;
+  LOCATION_CHANGE_1 = 'This patient is currently admitted to ward';
+  LOCATION_CHANGE_2 = 'These orders are written at clinic';
+  LOCATION_CHANGE_3 = 'What Location are these orders associated with?';
+  LOCATION_CHANGE_4 = 'The encounter location is currently at clinic';
+
+
+{ TfrmPrintLocation }
+
+
+
+procedure TfrmPrintLocation.btnClinicClick(Sender: TObject);
+var
+i: integer;
+begin
+  inherited;
+  for i := 1 to self.orderGrid.RowCount do
+    begin
+      self.orderGrid.Cells[COL_LOCATION,i] := frmPrintLocation.CLoc;
+    end;
+end;
+
+procedure TfrmPrintLocation.btnOKClick(Sender: TObject);
+var
+i: integer;
+Action: TCloseAction;
+begin
+if ClinicArr = nil then ClinicArr := TStringList.Create;
+if WardArr = nil then wardArr := TStringList.Create;
+ if (frmPrintLocation.cboEncLoc.Enabled = true) and (frmPrintLocation.cboEncLoc.ItemIndex = -1) then
+    begin
+      infoBox('A location must be selected to continue processing patient data', 'Warning', MB_OK);
+      exit;
+    end;
+if frmPrintLocation.DisplayOrders = true then
+ begin
+   for i := 1 to self.orderGrid.RowCount-1 do
+   begin
+     if ValFor(COL_LOCATION, i) = '' then
+       begin
+         infoBox('Every order must have a location define.','Location error', MB_OK);
+         exit;
+       end;
+     if ValFor(COL_LOCATION, i) = frmPrintLocation.CLoc then ClinicArr.Add(ValFor(COL_ORDERINFO, i))
+     else if ValFor(COL_LOCATION, i) = frmPrintLocation.WLoc then WardArr.Add(ValFor(COL_ORDERINFO, i));
+   end;
+ end;
+ CloseOK := True;
+ Action := caFree;
+ frmPrintLocation.FormClose(frmPrintLocation, Action);
+ if Action = caFree then frmPrintLocation.Close; 
+end;
+
+procedure TfrmPrintLocation.btnWardClick(Sender: TObject);
+var
+i: integer;
+begin
+  inherited;
+  for i := 1 to self.orderGrid.RowCount do
+    begin
+      self.orderGrid.Cells[COL_LOCATION,i] := frmPrintLocation.WLoc;
+    end;
+end;
+
+procedure TfrmPrintLocation.cbolocationChange(Sender: TObject);
+begin
+self.orderGrid.Cells[COL_LOCATION, self.orderGrid.Row] := self.cbolocation.Text;
+end;
+
+procedure TfrmPrintLocation.cbolocationExit(Sender: TObject);
+begin
+cboLocation.Hide;
+end;
+
+procedure TfrmPrintLocation.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+var
+i :Integer;
+//Action1: TCloseAction;
+begin
+  inherited;
+  if not CloseOK then
+    begin
+      if ClinicArr = nil then ClinicArr := TStringList.Create;
+      if WardArr = nil then wardArr := TStringList.Create;
+      if (frmPrintLocation.cboEncLoc.Enabled = true) and (frmPrintLocation.cboEncLoc.ItemIndex = -1) then
+        begin
+          infoBox('A location must be selected to continue processing patient data', 'Warning', MB_OK);
+          Action := caNone;
+          exit;
+        end;
+      for i := 1 to self.orderGrid.RowCount-1 do
+        begin
+          if ValFor(COL_LOCATION, i) = '' then
+            begin
+              infoBox('Every order must have a location define.','Location error', MB_OK);
+              Action := caNone;
+              exit;
+            end;
+          if ValFor(COL_LOCATION, i) = frmPrintLocation.CLoc then ClinicArr.Add(ValFor(COL_ORDERINFO, i))
+          else if ValFor(COL_LOCATION, i) = frmPrintLocation.WLoc then WardArr.Add(ValFor(COL_ORDERINFO, i));
+        end;
+      CloseOK := True;
+    end;
+    Action := caFree;
+end;
+
+procedure TfrmPrintLocation.FormResize(Sender: TObject);
+begin
+  inherited;
+  pnlFieldsResize(Sender)
+end;
+
+(*procedure TfrmPrintLocation.FormCreate(Sender: TObject);
+var
+  ListCount: Integer;
+  x: string;
+begin
+   inherited;
+   with OrderGrid do
+     begin
+       ColWidths[0] := 8;
+       ColWidths[1] := 50;
+       ColWidths[2] := 50;
+       Cells[1,0] := 'Order';
+       Cells[2,0] := 'Location';
+     end;
+   //TAccessibleStringGrid.WrapControl(OrderGrid);
+
+end;  *)
+
+procedure TfrmPrintLocation.OrderGridDrawCell(Sender: TObject; ACol,
+  ARow: Integer; Rect: TRect; State: TGridDrawState);
+begin
+  inherited;
+  OrderGrid.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2,
+    Piece(OrderGrid.Cells[ACol, ARow], TAB, 1));
+end;
+
+procedure TfrmPrintLocation.orderGridKeyPress(Sender: TObject; var Key: Char);
+begin
+  inherited;
+  if Key in [#32..#127] then ShowEditor(OrderGrid.Col, OrderGrid.Row, Key);
+end;
+
+procedure TfrmPrintLocation.orderGridMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  ACol, ARow: Integer;
+begin
+  inherited;
+  OrderGrid.MouseToCell(X, Y, ACol, ARow);
+  if (ARow < 0) or (ACol < 0) then Exit;
+  if ACol > COL_ORDERINFO then ShowEditor(ACol, ARow, #0) else
+  begin
+    OrderGrid.Col := COL_ORDERTEXT;
+    OrderGrid.Row := ARow;
+  end;
+  //if OrderGrid.Col <> COL_ORDERTEXT then
+    //DropLastSequence;
+end;
+
+
+procedure TfrmPrintLocation.pnlFieldsResize(Sender: TObject);
+Const
+  REL_ORDER = 0.85;
+  REL_LOCATION   = 0.15;
+var
+  i, center, diff, ht, RowCountShowing: Integer;
+  ColControl: TWinControl;
+begin
+  inherited;
+    if frmPrintLocation = nil then exit;    
+    with frmPrintLocation do
+      begin
+        if (frmPrintLocation.WLoc = '') and (frmPrintLocation.CLoc = '') then exit;
+        lblText.Caption := LOCATION_CHANGE_1 + ': ' + frmPrintLocation.WLoc + CRLF;
+        if frmPrintLocation.DisplayOrders = false then
+          begin
+            lblText.Caption := lblText.Caption + LOCATION_CHANGE_4 + ': ' + frmPrintLocation.CLoc + CRLF;
+            btnClinic.Visible := false;
+            btnWard.Visible := false;
+            pnlTop.Height := lbltext.Top + lbltext.Height * 2;
+            pnlbottom.Top := pnltop.Top + pnltop.Height + 3;
+            ordergrid.Height := 1;
+            pnlBottom.Height := 1;
+            lblEncounter.Top := pnlBottom.Top + pnlBottom.Height;
+            cboEncLoc.Top := lblEncounter.Top;
+            cboEncLoc.Left := lblEncounter.Left + lblEncounter.Width + 4;
+            orpnlBottom.Top := cboEncLoc.Top + cboEncLoc.Height +10;
+          end
+        else
+          begin
+            lblText.Caption := lblText.Caption + LOCATION_CHANGE_2 + ': ' + frmPrintLocation.CLoc + CRLF + CRLF;
+            lblText.Caption := lblText.Caption + LOCATION_CHANGE_3;
+            lblText.Caption := lblText.Caption + CRLF + 'One clinic location allowed; ' + frmPrintLocation.CLoc + ' will be used';
+            btnClinic.Caption := 'All ' + frmPrintLocation.CLoc;
+            btnWard.Caption := 'All ' + frmPrintLocation.WLoc;
+            btnClinic.Width := TextWidthByFont(btnClinic.Handle, btnClinic.Caption);
+            btnWard.Width := TextWidthByFont(btnWard.Handle, btnWard.Caption);
+            center := frmPrintLocation.Width div 2;
+            btnClinic.Left := center - (btnClinic.Width + 3);
+            btnWard.Left := center + 3;
+          end;
+        if pnlTop.Width > width then
+          begin
+            pnltop.Width := width - 8;
+            orpnlTopBottom.Width := pnltop.Width;
+          end;
+        if orpnlTopBottom.Width > pnltop.Width then orpnlTopBottom.Width := pnltop.Width;
+
+        if pnlBottom.Width > width then
+          begin
+            pnlBottom.Width := width - 8;
+            ordergrid.Width := pnlBottom.Width - 2;
+          end;
+        if orderGrid.Width > pnlBottom.Width then orderGrid.Width := pnlBottom.Width - 2;
+        if frmPrintLocation.DisplayOrders = true then
+          begin
+            i := OrderGrid.Width - 12;
+            i := i - GetSystemMetrics(SM_CXVSCROLL);
+            orderGrid.ColWidths[0] := 0;
+            orderGrid.ColWidths[1] := Round(REL_ORDER * i);
+            orderGrid.ColWidths[2] := Round(REL_LOCATION * i);
+            orderGrid.Cells[1,0] := 'Order';
+            orderGrid.Cells[2,0] := 'Location';
+            cboEncLoc.Left := lblEncounter.Left + lblEncounter.Width + 4;
+            ht := pnlBottom.Top - orderGrid.Top - 6;
+            ht := ht div (orderGrid.DefaultRowHeight+1);
+            ht := ht * (orderGrid.DefaultRowHeight+1);
+            Inc(ht, 3);
+            OrderGrid.Height := ht;
+            ColControl := nil;
+            Case OrderGrid.Col of
+              COL_ORDERTEXT:ColCOntrol := pnlOrder;
+              COL_LOCATION:ColControl := cboLocation;
+            End;
+            if assigned(ColControl) and ColControl.Showing then
+              begin
+                RowCountShowing := (Height - 25) div (orderGrid.defaultRowHeight+1);
+                if (OrderGrid.Row <= RowCountShowing) then
+                  ShowEditor(OrderGrid.Col, orderGrid.Row, #0)
+                else
+                  ColControl.Hide;
+              end;
+          end;
+          diff := frmPrintLocation.btnOK.top;
+          //diff := (frmPrintLocation.ORpnlBottom.Top + frmPrintlocation.btnOK.Top) - frmPrintLocation.ORpnlBottom.Top;
+          frmPrintLocation.ORpnlBottom.Height := frmPrintLocation.btnOK.Top + frmPrintLocation.btnOK.Height + diff;
+          frmprintLocation.Height := frmprintLocation.orpnlBottom.Top + frmprintLocation.orpnlBottom.Height + 25;
+      end;
+end;
+
+
+procedure TfrmPrintLocation.PrintLocation(OrderLst: TStringList; pEncounterLoc:integer; pEncounterLocName,
+          pEncounterLocText: string; pEncounterDT: TFMDateTime; pEncounterVC: Char;
+          var ClinicLst, WardLst: TStringList; var wardIEN: integer; var wardLocation: string;
+          ContainsIMOOrders: boolean; displayEncSwitch: boolean = false);
+var
+OrderInfo, OrderText: string;
+cidx, i, widx: integer;
+begin
+  frmPrintLocation := TfrmPrintLocation.Create(Application);
+  frmPrintLocation.DisplayOrders := true;
+  frmPrintLocation.CloseOK := false;
+  ClinicArr := TStringList.Create;
+  WardArr := TStringList.Create;
+  frmPrintlocation.orderGrid.RowCount := OrderLst.Count + 1;
+  CurrentLocationForPatient(Patient.DFN, WardIEN, WardLocation, ASvc);
+  frmPrintLocation.lblEncounter.Enabled := displayEncSwitch;
+  frmPrintLocation.cboEncLoc.Enabled := displayEncSwitch;
+  frmPrintLocation.Cloc := pEncounterLocName;
+  frmPrintLocation.WLoc := WardLocation;
+  ResizeAnchoredFormToFont(frmPrintLocation);
+  frmPrintLocation.orderGrid.DefaultRowHeight := frmPrintLocation.cbolocation.Height;
+  for i := 0 to OrderLst.Count - 1 do
+    begin
+    OrderInfo := Piece(OrderLst.Strings[i],':',1);
+    OrderText := AnsiReplaceText(Piece(OrderLst.Strings[i],':',2),CRLF,'');
+    frmPrintLocation.orderGrid.Cells[COL_ORDERINFO,i+1] := OrderInfo;
+    frmPrintLocation.orderGrid.Cells[COL_ORDERTEXT,i+1] := OrderText;
+    end;
+  frmPrintLocation.cbolocation.Items.Add(frmPrintLocation.CLoc);
+  frmPrintLocation.cbolocation.Items.Add(frmPrintLocation.WLoc);
+  if frmPrintLocation.cboEncLoc.Enabled = True then
+    begin
+      frmPrintLocation.cboEncLoc.Items.Add(frmPrintLocation.CLoc);
+      frmPrintLocation.cboEncLoc.Items.Add(frmPrintLocation.WLoc);
+    end;
+  frmPrintLocation.ShowModal;
+  if assigned(ClinicArr) then ClinicLst.AddStrings(ClinicArr);
+  if assigned(WardArr) then WardLst.AddStrings(WardArr);
+  ProcessClinicOrders(WardLst, ClinicLst, WardIEN, pEncounterLoc, ContainsIMOOrders);
+  cidx := frmPrintLocation.cboEncLoc.Items.IndexOf(frmPrintLocation.CLoc);
+  widx := frmPrintLocation.cboEncLoc.Items.IndexOf(frmPrintLocation.WLoc);
+  if frmPrintLocation.cboEncLoc.ItemIndex = cidx then
+    begin
+      //Encounter.Location := pEncounterLoc;
+      //Encounter.LocationName := pEncounterLocName;
+      //Encounter.LocationText := pEncounterLocText;
+      uCore.Encounter.EncounterSwitch(pEncounterLoc, pEncounterLocName, pEncounterLocText, pEncounterDT, pEncounterVC);
+      fframe.frmFrame.DisplayEncounterText;
+      //fframe.frmFrame.DoNotChangeEncWindow := true;
+      fframe.frmFrame.OrderPrintForm := True;
+    end
+  else if frmPrintLocation.cboEncLoc.ItemIndex = widx then
+    begin
+    uCore.Encounter.EncounterSwitch(WardIEN, WardLocation, '', Patient.AdmitTime, 'H');
+   (* Encounter.Location := WardIEN;
+    Encounter.DateTime := Patient.AdmitTime;
+    Encounter.VisitCategory := 'H';
+    Encounter.Location := WardIEN;
+    Encounter.LocationName := WardLocation; *)
+      //fframe.frmFrame.DoNotChangeEncWindow := false;
+      fFrame.frmFrame.DisplayEncounterText;
+    end;
+  frmPrintLocation.Close;
+end;
+
+procedure TfrmPrintLocation.ProcessClinicOrders(WardList, ClinicList: TStringList;
+  WardIEN, ClinicIEN: integer; ContainsIMO: boolean);
+var
+i: integer;
+OrderArr: TStringList;
+begin
+   OrderArr := TStringList.Create;
+   for i := 0 to WardList.Count -1 do
+     begin
+       OrderArr.Add(WardList.Strings[i] + U + InttoStr(WardIen));
+     end;
+   for i := 0 to ClinicList.Count -1 do
+     begin
+       OrderArr.Add(ClinicList.Strings[i] + U + InttoStr(ClinicIen));
+     end;
+   rpcChangeOrderLocation(OrderArr, ContainsIMO);
+   WardArr.Free;
+end;
+
+
+procedure TfrmPrintLocation.rpcChangeOrderLocation(pOrderList:TStringList; ContainsIMO: boolean);
+var
+IMO: string;
+begin
+// OrderIEN^Location^ISIMO  -- used to alter location if ward is selected.
+   if ContainsIMO = True then IMO := '1'
+   else IMO := '0';
+   CallV('ORWDX CHANGE',[pOrderList, Patient.DFN, IMO]);
+end;
+
+
+procedure TfrmPrintLocation.ShowEditor(ACol, ARow: Integer; AChar: Char);
+var
+  tmpText: string;
+  //Index: integer;
+
+  procedure PlaceControl(AControl: TWinControl);
+  var
+    ARect: TRect;
+  begin
+    with AControl do
+    begin
+      ARect := OrderGrid.CellRect(ACol, ARow);
+      SetBounds(ARect.Left + OrderGrid.Left + 1,  ARect.Top  + OrderGrid.Top + 1,
+                ARect.Right - ARect.Left + 1,    ARect.Bottom - ARect.Top + 1);
+      Tag := ARow;
+      BringToFront;
+      Show;
+      SetFocus;
+    end;
+  end;
+
+  procedure SynchCombo(ACombo: TORComboBox; const ItemText, EditText: string);
+  var
+    i: Integer;
+  begin
+    ACombo.ItemIndex := -1;
+    for i := 0 to Pred(ACombo.Items.Count) do
+      if ACombo.Items[i] = ItemText then ACombo.ItemIndex := i;
+    if ACombo.ItemIndex < 0 then ACombo.Text := EditText;
+  end;
+
+begin
+  inherited;
+  //if AChar = ' ' then AChar := #0;
+  if ARow = 0 then Exit;
+  //with OrderGrid do if (Acol > COL_ORDER) and (ValFor(COL_ORDER, ARow) = '') then Exit;
+  //if (ACol = COL_Order) and (ARow > 1) and (ValFor(COL_Order, ARow-1) = '') then Exit;
+  Case ACol of
+  COL_LOCATION: begin
+                  TmpText := ValFor(COL_Location, ARow);
+                  SynchCombo(cboLocation, tmpText, tmpText);
+                  PlaceControl(cboLocation);
+                end;
+  end;
+
+end;
+
+procedure TfrmPrintLocation.SwitchEncounterLoction(pEncounterLoc: integer; pEncounterLocName, pEncounterLocText: string;
+                              pEncounterDT: TFMDateTime; pEncounterVC: Char);
+var
+cidx, widx, WardIEN: integer;
+Asvc, WardLocation: string;
+begin
+  //frmPrintLocation.Caption := 'Refresh Encounter Location Form';
+  frmPrintLocation := TfrmPrintLocation.Create(Application);
+  frmPrintLocation.DisplayOrders := false;
+  frmPrintLocation.CloseOK := false;
+  CurrentLocationForPatient(Patient.DFN, WardIEN, WardLocation, ASvc);
+  frmPrintLocation.lblEncounter.Enabled := True;
+  frmPrintLocation.cboEncLoc.Enabled := True;
+  frmPrintLocation.Cloc := pEncounterLocName;
+  frmPrintLocation.WLoc := WardLocation;
+  ResizeAnchoredFormToFont(frmPrintLocation);
+  frmPrintLocation.cboEncLoc.Items.Add(frmPrintLocation.CLoc);
+  frmPrintLocation.cboEncLoc.Items.Add(frmPrintLocation.WLoc);
+  frmPrintLocation.Caption := 'Refresh Encounter Location Form';
+  frmPrintLocation.ShowModal;
+  cidx := frmPrintLocation.cboEncLoc.Items.IndexOf(frmPrintLocation.CLoc);
+  widx := frmPrintLocation.cboEncLoc.Items.IndexOf(frmPrintLocation.WLoc);
+  if frmPrintLocation.cboEncLoc.ItemIndex = cidx then
+    begin
+      Encounter.Location := pEncounterLoc;
+      Encounter.LocationName := pEncounterLocName;
+      Encounter.LocationText := pEncounterLocText;
+      fframe.frmFrame.DisplayEncounterText;
+      //fframe.frmFrame.DoNotChangeEncWindow := true;
+    end
+  else if frmPrintLocation.cboEncLoc.ItemIndex = widx then
+    begin
+      uCore.Encounter.EncounterSwitch(WardIEN, WardLocation, '', Patient.AdmitTime, 'H');
+      (*Encounter.Location := WardIEN;
+      Encounter.LocationName := WardLocation; *)
+      //fframe.frmFrame.DoNotChangeEncWindow := false;
+      fFrame.frmFrame.DisplayEncounterText;
+    end;
+  frmPrintLocation.Close;
+end;
+
+function TfrmPrintLocation.ValFor(FieldID, ARow: Integer): string;
+
+begin
+  Result := '';
+  if (ARow < 1) or (ARow >= OrderGrid.RowCount) then Exit;
+  with OrderGrid do
+    case FieldID of
+    COL_ORDERINFO   : Result := Piece(Cells[COL_ORDERINFO,     ARow], TAB, 1);
+    COL_ORDERTEXT   : Result := Piece(Cells[COL_ORDERTEXT,     ARow], TAB, 1);
+    COL_LOCATION    : Result := Piece(Cells[COL_LOCATION,      ARow], TAB, 1);
+    end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbCmt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbCmt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbCmt.dfm	(revision 1676)
@@ -0,0 +1,71 @@
+inherited frmProbCmt: TfrmProbCmt
+  Left = 205
+  Top = 220
+  Caption = 'Annotate a problem'
+  ClientHeight = 101
+  ClientWidth = 403
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 411
+  ExplicitHeight = 128
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblComment: TOROffsetLabel [0]
+    Left = 9
+    Top = 10
+    Width = 209
+    Height = 15
+    Caption = 'Enter a new comment (up to 60 characters):'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 2
+    WordWrap = False
+  end
+  object edComment: TCaptionEdit [1]
+    Left = 11
+    Top = 30
+    Width = 386
+    Height = 21
+    MaxLength = 60
+    TabOrder = 0
+    Caption = 'Enter a new comment (up to 60 characters)'
+  end
+  object bbOK: TBitBtn [2]
+    Left = 115
+    Top = 60
+    Width = 75
+    Height = 25
+    Caption = 'OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 1
+    OnClick = bbOKClick
+  end
+  object bbCancel: TBitBtn [3]
+    Left = 200
+    Top = 60
+    Width = 75
+    Height = 25
+    Cancel = True
+    Caption = 'Cancel'
+    ModalResult = 2
+    TabOrder = 2
+    OnClick = bbCancelClick
+    NumGlyphs = 2
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = edComment'
+        'Status = stsDefault')
+      (
+        'Component = bbOK'
+        'Status = stsDefault')
+      (
+        'Component = bbCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmProbCmt'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbCmt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbCmt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbCmt.pas	(revision 1676)
@@ -0,0 +1,98 @@
+unit fProbCmt;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, Buttons, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmProbCmt = class(TfrmBase508Form)
+    edComment: TCaptionEdit;
+    bbOK: TBitBtn;
+    bbCancel: TBitBtn;
+    lblComment: TOROffsetLabel;
+    procedure bbCancelClick(Sender: TObject);
+    procedure bbOKClick(Sender: TObject);
+  private
+    fCmtResult: string ;
+  end;
+
+function NewComment: string ;
+function EditComment(OldValue: string): string ;
+
+
+var
+  frmProbCmt: TfrmProbCmt;
+
+implementation
+
+uses
+    uProbs, ORfn, rCore ;
+
+const
+  TX_INVALID_CHAR = 'The character "^" cannot be used in a comment';
+  TC_INVALID_CHAR = 'Invalid character';
+
+{$R *.DFM}
+
+function NewComment: string ;
+begin
+  frmProbCmt := TfrmProbCmt.Create(Application) ;
+  try
+    ResizeAnchoredFormToFont(frmProbCmt);
+    with frmProbCmt do
+      begin
+        ShowModal;
+        Result := fCmtResult;
+      end;
+  finally
+    frmProbCmt.Free ;
+  end ;
+end ;
+
+function EditComment(OldValue: string): string ;
+begin
+  frmProbCmt := TfrmProbCmt.Create(Application) ;
+  try
+    with frmProbCmt do
+      begin
+        edComment.Text := Piece(OldValue, U, 2);
+        ShowModal;
+        Result := fCmtResult;
+      end;
+  finally
+    frmProbCmt.Free ;
+  end ;
+end ;
+
+
+procedure TfrmProbCmt.bbCancelClick(Sender: TObject);
+begin
+  fCmtResult := '0^Cancelled' ;
+end;
+
+procedure TfrmProbCmt.bbOKClick(Sender: TObject);
+begin
+  if (edComment.Text <> '') then
+    begin
+      if Pos('^', edComment.Text) > 0 then
+      begin
+        InfoBox(TX_INVALID_CHAR, TC_INVALID_CHAR, MB_ICONERROR);
+        fCmtResult := '';
+        ModalResult := mrNone;
+      end
+      else
+      begin
+        fCmtResult := '1^'+FormatFMDateTime('mmm dd yyyy',FMToday)+'^'+ edComment.Text;
+        ModalResult := mrOK;
+      end;
+    end
+  else
+    begin
+      fCmtResult := '';
+      ModalResult := mrNone;
+    end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbEdt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbEdt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbEdt.dfm	(revision 1676)
@@ -0,0 +1,655 @@
+inherited frmdlgProb: TfrmdlgProb
+  Left = 148
+  Top = 108
+  HelpContext = 2000
+  BorderIcons = []
+  Caption = 'frmdlgProb'
+  ClientHeight = 358
+  ClientWidth = 496
+  OldCreateOrder = True
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 6
+    Top = 357
+    Width = 47
+    Height = 13
+    Caption = 'Recorded'
+    Visible = False
+  end
+  object Label5: TLabel [1]
+    Left = 4
+    Top = 368
+    Width = 45
+    Height = 13
+    Caption = 'Resolved'
+    Visible = False
+  end
+  object Label7: TLabel [2]
+    Left = 8
+    Top = 382
+    Width = 41
+    Height = 13
+    Caption = 'Updated'
+    Visible = False
+  end
+  object pnlComments: TPanel [3]
+    Left = 0
+    Top = 200
+    Width = 496
+    Height = 131
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 5
+    DesignSize = (
+      496
+      131)
+    object Bevel1: TBevel
+      Left = 7
+      Top = 3
+      Width = 484
+      Height = 128
+      Anchors = [akLeft, akTop, akRight, akBottom]
+    end
+    object lblCmtDate: TOROffsetLabel
+      Left = 10
+      Top = 20
+      Width = 29
+      Height = 15
+      Caption = 'Date'
+      HorzOffset = 6
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblComment: TOROffsetLabel
+      Left = 75
+      Top = 20
+      Width = 50
+      Height = 15
+      Caption = 'Comment'
+      HorzOffset = 6
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblCom: TStaticText
+      Left = 10
+      Top = 6
+      Width = 53
+      Height = 17
+      Caption = 'Comments'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 0
+    end
+    object bbAdd: TBitBtn
+      Left = 178
+      Top = 10
+      Width = 100
+      Height = 22
+      Hint = 'Add a new comment'
+      Anchors = [akTop, akRight]
+      Caption = 'Add comment'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = bbAddComClick
+      Layout = blGlyphBottom
+      NumGlyphs = 2
+    end
+    object bbRemove: TBitBtn
+      Left = 385
+      Top = 10
+      Width = 100
+      Height = 22
+      Hint = 'Remove selected comment'
+      Anchors = [akTop, akRight]
+      Caption = 'Remove comment'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = bbRemoveClick
+      Layout = blGlyphBottom
+      NumGlyphs = 2
+    end
+    object lstComments: TORListBox
+      Left = 10
+      Top = 38
+      Width = 477
+      Height = 85
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      ExtendedSelect = False
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 3
+      Caption = 'Comments'
+      ItemTipColor = clWindow
+      LongList = True
+      Pieces = '1,2'
+      TabPositions = '1,12'
+      OnChange = ControlChange
+    end
+    object bbEdit: TBitBtn
+      Left = 281
+      Top = 10
+      Width = 100
+      Height = 22
+      Hint = 'Edit selected comment'
+      Anchors = [akTop, akRight]
+      Caption = 'Edit comment'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 6
+      OnClick = bbEditClick
+      Layout = blGlyphBottom
+      NumGlyphs = 2
+    end
+  end
+  object pnlBottom: TPanel [4]
+    Left = 0
+    Top = 331
+    Width = 496
+    Height = 27
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      496
+      27)
+    object bbQuit: TBitBtn
+      Left = 299
+      Top = 4
+      Width = 78
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 0
+      OnClick = bbQuitClick
+      Layout = blGlyphBottom
+      NumGlyphs = 2
+    end
+    object bbFile: TBitBtn
+      Left = 381
+      Top = 4
+      Width = 78
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 1
+      OnClick = bbFileClick
+      Layout = blGlyphBottom
+      NumGlyphs = 2
+    end
+    object ckVerify: TCheckBox
+      Left = 15
+      Top = 7
+      Width = 130
+      Height = 15
+      TabStop = False
+      Caption = 'Problem Verified'
+      TabOrder = 2
+      Visible = False
+    end
+    object edRecDate: TCaptionEdit
+      Left = 145
+      Top = 7
+      Width = 94
+      Height = 21
+      TabStop = False
+      Color = clInactiveCaptionText
+      Enabled = False
+      TabOrder = 3
+      Text = 'Today'
+      Visible = False
+      OnChange = ControlChange
+      Caption = 'Rec Date'
+    end
+  end
+  object edResDate: TCaptionEdit [5]
+    Left = 66
+    Top = 365
+    Width = 94
+    Height = 21
+    TabStop = False
+    Color = clInactiveCaptionText
+    Enabled = False
+    TabOrder = 0
+    Text = 'Today'
+    Visible = False
+    OnChange = ControlChange
+    Caption = 'Res Date'
+  end
+  object edUpdate: TCaptionEdit [6]
+    Left = 67
+    Top = 376
+    Width = 94
+    Height = 21
+    TabStop = False
+    Color = clInactiveCaptionText
+    Enabled = False
+    TabOrder = 1
+    Text = 'Today'
+    Visible = False
+    OnChange = ControlChange
+    Caption = 'Update'
+  end
+  object pnlTop: TPanel [7]
+    Left = 0
+    Top = 0
+    Width = 496
+    Height = 200
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 6
+    DesignSize = (
+      496
+      200)
+    object lblAct: TLabel
+      Left = 12
+      Top = 4
+      Width = 34
+      Height = 13
+      Caption = 'Activity'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      Visible = False
+    end
+    object lblLoc: TLabel
+      Left = 187
+      Top = 149
+      Width = 28
+      Height = 13
+      Caption = 'Clinic:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object Label3: TLabel
+      Left = 187
+      Top = 105
+      Width = 70
+      Height = 13
+      Caption = 'Resp Provider:'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+    end
+    object Label6: TLabel
+      Left = 187
+      Top = 63
+      Width = 69
+      Height = 13
+      Caption = 'Date of Onset:'
+    end
+    object rgStatus: TKeyClickRadioGroup
+      Left = 9
+      Top = 64
+      Width = 81
+      Height = 124
+      Caption = 'Status'
+      ItemIndex = 0
+      Items.Strings = (
+        'Active'
+        'Inactive')
+      TabOrder = 0
+      TabStop = True
+      OnClick = rgStatusClick
+    end
+    object rgStage: TKeyClickRadioGroup
+      Left = 92
+      Top = 64
+      Width = 87
+      Height = 124
+      Caption = 'Immediacy'
+      Ctl3D = True
+      ItemIndex = 2
+      Items.Strings = (
+        'Acute'
+        'Chronic'
+        '<unknown>')
+      ParentCtl3D = False
+      TabOrder = 1
+      TabStop = True
+      OnClick = ControlChange
+    end
+    object bbChangeProb: TBitBtn
+      Left = 318
+      Top = 18
+      Width = 124
+      Height = 21
+      Anchors = [akTop, akRight]
+      Caption = 'Change problem...'
+      TabOrder = 2
+      OnClick = bbChangeProbClick
+      Layout = blGlyphBottom
+    end
+    object edProb: TCaptionEdit
+      Left = 9
+      Top = 19
+      Width = 296
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      ReadOnly = True
+      TabOrder = 3
+      Text = 'Problem Title'
+      OnChange = ControlChange
+      Caption = 'Activity'
+    end
+    object gbTreatment: TGroupBox
+      Left = 310
+      Top = 58
+      Width = 181
+      Height = 142
+      Anchors = [akTop, akRight]
+      Caption = 'Treatment Factors'
+      TabOrder = 5
+      DesignSize = (
+        181
+        142)
+      object ckSC: TCheckBox
+        Left = 7
+        Top = 15
+        Width = 160
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'Service Connected '
+        Enabled = False
+        TabOrder = 0
+        OnClick = ControlChange
+      end
+      object ckRad: TCheckBox
+        Left = 7
+        Top = 50
+        Width = 154
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'Radiation '
+        Enabled = False
+        TabOrder = 1
+        OnClick = ControlChange
+      end
+      object ckAO: TCheckBox
+        Left = 7
+        Top = 32
+        Width = 154
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'Agent Orange '
+        Enabled = False
+        TabOrder = 2
+        OnClick = ControlChange
+      end
+      object ckENV: TCheckBox
+        Left = 7
+        Top = 68
+        Width = 149
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'Southwest &Asia Conditions'
+        Enabled = False
+        TabOrder = 3
+        OnClick = ControlChange
+      end
+      object ckHNC: TCheckBox
+        Left = 7
+        Top = 119
+        Width = 149
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'Head and/or Neck Cancer'
+        Enabled = False
+        TabOrder = 4
+        OnClick = ControlChange
+      end
+      object ckMST: TCheckBox
+        Left = 7
+        Top = 102
+        Width = 149
+        Height = 17
+        Anchors = [akTop, akRight]
+        Caption = 'MST'
+        Enabled = False
+        TabOrder = 5
+        OnClick = ControlChange
+      end
+      object ckSHAD: TCheckBox
+        Left = 7
+        Top = 85
+        Width = 170
+        Height = 17
+        Caption = 'Shipboard Hazard and Defense'
+        TabOrder = 6
+      end
+    end
+    object cbServ: TORComboBox
+      Left = 186
+      Top = 166
+      Width = 113
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Service:'
+      Color = clWindow
+      DropDownCount = 8
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentFont = False
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 6
+      Visible = False
+      OnChange = ControlChange
+      OnNeedData = cbServNeedData
+      CharsNeedMatch = 1
+    end
+    object cbLoc: TORComboBox
+      Left = 186
+      Top = 166
+      Width = 113
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      Style = orcsDropDown
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentFont = False
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 7
+      OnChange = ControlChange
+      OnClick = cbLocClick
+      OnKeyPress = cbLocKeyPress
+      OnNeedData = cbLocNeedData
+      CharsNeedMatch = 1
+    end
+    object cbProv: TORComboBox
+      Left = 186
+      Top = 122
+      Width = 113
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Resp Provider'
+      Color = clWindow
+      DropDownCount = 8
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      ParentFont = False
+      Pieces = '2,3'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 8
+      OnChange = ControlChange
+      OnClick = cbProvClick
+      OnKeyPress = cbProvKeyPress
+      OnNeedData = cbProvNeedData
+      CharsNeedMatch = 1
+    end
+    object edOnsetdate: TCaptionEdit
+      Left = 187
+      Top = 79
+      Width = 113
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+      TabOrder = 9
+      Text = 'Today'
+      OnChange = ControlChange
+      Caption = 'Date of Onset'
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlComments'
+        'Status = stsDefault')
+      (
+        'Component = lblCom'
+        'Status = stsDefault')
+      (
+        'Component = bbAdd'
+        'Status = stsDefault')
+      (
+        'Component = bbRemove'
+        'Status = stsDefault')
+      (
+        'Component = lstComments'
+        'Status = stsDefault')
+      (
+        'Component = bbEdit'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = bbQuit'
+        'Status = stsDefault')
+      (
+        'Component = bbFile'
+        'Status = stsDefault')
+      (
+        'Component = ckVerify'
+        'Status = stsDefault')
+      (
+        'Component = edRecDate'
+        'Status = stsDefault')
+      (
+        'Component = edResDate'
+        'Status = stsDefault')
+      (
+        'Component = edUpdate'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = rgStatus'
+        'Status = stsDefault')
+      (
+        'Component = rgStage'
+        'Status = stsDefault')
+      (
+        'Component = bbChangeProb'
+        'Status = stsDefault')
+      (
+        'Component = edProb'
+        'Status = stsDefault')
+      (
+        'Component = gbTreatment'
+        'Status = stsDefault')
+      (
+        'Component = ckSC'
+        'Status = stsDefault')
+      (
+        'Component = ckRad'
+        'Status = stsDefault')
+      (
+        'Component = ckAO'
+        'Status = stsDefault')
+      (
+        'Component = ckENV'
+        'Status = stsDefault')
+      (
+        'Component = ckHNC'
+        'Status = stsDefault')
+      (
+        'Component = ckMST'
+        'Status = stsDefault')
+      (
+        'Component = ckSHAD'
+        'Status = stsDefault')
+      (
+        'Component = cbServ'
+        'Status = stsDefault')
+      (
+        'Component = cbLoc'
+        'Status = stsDefault')
+      (
+        'Component = cbProv'
+        'Status = stsDefault')
+      (
+        'Component = edOnsetdate'
+        'Status = stsDefault')
+      (
+        'Component = frmdlgProb'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbEdt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbEdt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbEdt.pas	(revision 1676)
@@ -0,0 +1,1013 @@
+unit fProbEdt;
+
+interface
+
+uses
+  SysUtils, windows, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Grids,
+  ORCtrls, Vawrgrid, uCore, Menus, uConst, fBase508Form,
+  VA508AccessibilityManager;
+
+const
+  SOC_QUIT = 1;        { close single dialog }
+
+type
+  TfrmdlgProb = class(TfrmBase508Form)
+    Label1: TLabel;
+    Label5: TLabel;
+    edResDate: TCaptionEdit;
+    Label7: TLabel;
+    edUpdate: TCaptionEdit;
+    pnlBottom: TPanel;
+    bbQuit: TBitBtn;
+    bbFile: TBitBtn;
+    pnlComments: TPanel;
+    Bevel1: TBevel;
+    lblCmtDate: TOROffsetLabel;
+    lblComment: TOROffsetLabel;
+    lblCom: TStaticText;
+    bbAdd: TBitBtn;
+    bbRemove: TBitBtn;
+    lstComments: TORListBox;
+    bbEdit: TBitBtn;
+    pnlTop: TPanel;
+    lblAct: TLabel;
+    rgStatus: TKeyClickRadioGroup;
+    rgStage: TKeyClickRadioGroup;
+    bbChangeProb: TBitBtn;
+    edProb: TCaptionEdit;
+    gbTreatment: TGroupBox;
+    ckSC: TCheckBox;
+    ckRad: TCheckBox;
+    ckAO: TCheckBox;
+    ckENV: TCheckBox;
+    ckHNC: TCheckBox;
+    ckMST: TCheckBox;
+    ckSHAD: TCheckBox;
+    ckVerify: TCheckBox;
+    edRecDate: TCaptionEdit;
+    cbServ: TORComboBox;
+    cbLoc: TORComboBox;
+    lblLoc: TLabel;
+    cbProv: TORComboBox;
+    Label3: TLabel;
+    edOnsetdate: TCaptionEdit;
+    Label6: TLabel;
+    procedure bbQuitClick(Sender: TObject);
+    procedure bbAddComClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure bbFileClick(Sender: TObject);
+    procedure bbRemoveClick(Sender: TObject);
+    procedure cbProvKeyPress(Sender: TObject; var Key: Char);
+    procedure rgStatusClick(Sender: TObject);
+    procedure cbProvClick(Sender: TObject);
+    procedure cbLocClick(Sender: TObject);
+    procedure cbLocKeyPress(Sender: TObject; var Key: Char);
+    procedure SetDefaultProb(Alist:TstringList;prob:string);
+    procedure ControlChange(Sender: TObject);
+    function  BadDates:Boolean;
+    procedure cbProvDropDown(Sender: TObject);
+    procedure cbLocDropDown(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure bbChangeProbClick(Sender: TObject);
+    procedure cbLocNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbProvNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbServNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure bbEditClick(Sender: TObject);
+  private
+    { Private declarations }
+    FEditing: Boolean;
+    FInitialShow: Boolean;
+    FModified: Boolean;
+    FProviderID: Int64;
+    FLocationID: Longint;
+    FDisplayGroupID: Integer;
+    FInitialFocus: TWinControl;
+    FCtrlMap: TStringList;
+    FSourceOfClose: Integer;
+    FOnInitiate: TNotifyEvent;
+    fChanged:boolean;
+    FSilent: boolean;
+    FCanQuit: boolean;
+
+    procedure UMTakeFocus(var Message: TMessage); message UM_TAKEFOCUS;
+    procedure ShowComments;
+    procedure GetEditedComments;
+    procedure GetNewComments(Reason:char);
+    function  OkToQuit:boolean;
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure DoShow; override;
+    procedure Loaded; override;
+    procedure ClearDialogControls; virtual;
+    function  LackRequired: Boolean; virtual;
+    procedure LoadDefaults; virtual;
+    property  InitialFocus: TWinControl read FInitialFocus write FInitialFocus;
+  public
+    { Public declarations }
+    Reason:Char;
+    problemIFN:String;
+    subjProb:string; {parameters for problem being added}
+    constructor Create(AOwner: TComponent); override ;
+    destructor Destroy; override;
+    property DisplayGroupID: Integer read FDisplayGroupID write FDisplayGroupID;
+    property Editing: Boolean read FEditing write FEditing;
+    property Silent: Boolean read FSilent write FSilent;
+    property ProviderID: Int64 read FProviderID write FProviderID;
+    property LocationID: Longint read FLocationID write FLocationID;
+    property SourceOfClose: Integer read FSourceOfClose write FSourceOfClose;
+    property OnInitiate: TNotifyEvent read FOnInitiate write FOnInitiate;
+    procedure SetFontSize( NewFontSize: integer);
+    property CanQuit: boolean read FCanQuit write FCanQuit;
+  end ;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, uProbs, fProbs, rProbs, fCover, rCover, rCore, fProbCmt, fProbLex, rPCE, uInit  ,
+     VA508AccessibilityRouter;
+
+type
+  TDialogItem = class { for loading edits & quick orders }
+    ControlName: string;
+    DialogPtr: Integer;
+    Instance: Integer;
+  end;
+
+function TfrmdlgProb.OkToQuit:boolean;
+begin
+  Result := not fChanged;
+end;
+
+procedure TfrmdlgProb.bbQuitClick(Sender: TObject);
+begin
+  if OkToQuit then
+    begin
+      frmProblems.lblProbList.caption := frmProblems.pnlRight.Caption ;
+      close;
+    end
+  else
+    begin
+      if (not FSilent) and
+         (InfoBox('Discard changes?', 'Add/Edit a Problem', MB_YESNO or MB_ICONQUESTION) <> IDYES) then
+        begin
+          FCanQuit := False;
+          exit;
+        end
+      else
+        begin
+          frmProblems.lblProbList.caption := frmProblems.pnlRight.Caption ;
+          FCanQuit := True;
+          close;
+        end;
+    end;
+end;
+
+procedure TfrmdlgProb.bbAddComClick(Sender: TObject);
+var
+  cmt: string    ;
+begin
+  cmt := NewComment ;
+  if StrToInt(Piece(cmt, U, 1)) > 0 then
+    begin
+      lstComments.Items.Add(Pieces(cmt, U, 2, 3)) ;
+      fChanged := true;
+    end ;
+end;
+
+procedure TfrmdlgProb.bbEditClick(Sender: TObject);
+var
+  cmt: string    ;
+begin
+  if lstComments.ItemIndex < 0 then Exit;
+  cmt := EditComment(lstComments.Items[lstComments.ItemIndex]) ;
+  if StrToInt(Piece(cmt, U, 1)) > 0 then
+    begin
+      lstComments.Items[lstComments.ItemIndex] := Pieces(cmt, U, 2, 3) ;
+      fChanged := true;
+    end ;
+end;
+
+procedure TfrmdlgProb.FormShow(Sender: TObject);
+var
+  alist: TstringList;
+  Anchorses: Array of TAnchors;
+  i: integer;
+begin
+  if ProbRec <> nil then exit;
+  if (ResizeWidth(Font,MainFont,Width) >= Parent.ClientWidth) and
+    (ResizeHeight(Font,MainFont,Height) >= Parent.ClientHeight) then
+  begin  //This form won't fit when it resizes, so we have to take Drastic Measures
+    SetLength(Anchorses, dlgProbs.ControlCount);
+    for i := 0 to ControlCount - 1 do
+    begin
+      Anchorses[i] := Controls[i].Anchors;
+      Controls[i].Anchors := [akLeft, akTop];
+    end;
+    SetFontSize(MainFontSize);
+    RequestAlign;
+    for i := 0 to ControlCount - 1 do
+      Controls[i].Anchors := Anchorses[i];
+  end
+  else
+  begin
+    SetFontSize(MainFontSize);
+    RequestAlign;
+  end;
+  frmProblems.mnuView.Enabled := False;
+  frmProblems.mnuAct.Enabled := False ;
+  frmProblems.lstView.Enabled := False;
+  frmProblems.bbNewProb.Enabled := False ;
+  Alist := TstringList.create;
+  try
+    if Reason = 'E' then
+      lblact.caption := 'Editing:'
+    else if Reason = 'A' then
+      lblact.caption := 'Adding'
+    else {display, comment edit or remove problem}
+      begin
+        case reason of 'C','c': lblact.caption := 'Comment Edit';
+                       'R','r': lblact.caption := 'Remove Problem:';
+        end; {case}
+        {ckVerify.Enabled:=false;}
+        cbProv.Enabled       := false;
+        cbLoc.Enabled        := false;
+        bbRemove.enabled     := false;
+        rgStatus.Enabled     := false;
+        rgStage.Enabled      := false;
+        edRecdate.enabled    := false;
+        edResdate.enabled    := false;
+        edOnsetDate.enabled  := false;
+        ckSC.enabled         := false;
+        ckRAD.enabled        := false;
+        ckAO.enabled         := false;
+        ckENV.enabled        := false;
+        ckHNC.enabled        := false;
+        ckMST.enabled        := false;
+        ckSHAD.enabled       := false;
+        if Reason = 'R' then bbFile.caption := 'Remove';
+      end;
+    edProb.Caption := lblact.Caption;
+    if Piece(subjProb,U,3) <> '' then
+      edProb.Text := Piece(subjProb, u, 2) + ' (' + Piece(subjProb, u, 3) + ')'
+    else
+      edProb.Text := Piece(subjProb, u, 2);
+    {line up problem action and title}
+    {edProb.Left:=lblAct.left+lblAct.width+2;}
+    {get problem}
+    if Reason <> 'A' then
+      begin {edit,remove or display existing problem}
+        problemIFN := Piece(subjProb, u, 1);
+        FastAssign(EditLoad(ProblemIFN, User.DUZ, PLPt.ptVAMC), AList) ;   //V17.5   RV
+      end
+    else {new  problem}
+      SetDefaultProb(Alist, subjProb);
+    if Alist.count = 0 then
+      begin
+        InfoBox('No Data on Host for problem ' + ProblemIFN, 'Information', MB_OK or MB_ICONINFORMATION);
+        close;
+        exit;
+      end;
+    ProbRec := TProbRec.Create(Alist); {create a problem object}
+    ProbRec.PIFN := ProblemIFN;
+    ProbRec.EnteredBy.DHCPtoKeyVal(inttostr(User.DUZ) + u + User.Name);
+    ProbRec.RecordedBy.DHCPtoKeyVal(inttostr(Encounter.Provider) + u + Encounter.ProviderName);
+    {fill in defaults}
+    edOnsetdate.text := ProbRec.DateOnsetStr;
+    if Probrec.status <> 'A' then
+      begin
+        rgStatus.itemindex := 1;
+        rgStage.Visible := False ;
+      end;
+    if Probrec.Priority = 'A' then
+      rgStage.itemindex := 0
+    else if Probrec.Priority = 'C' then
+      rgStage.itemindex := 1
+    else
+      rgStage.itemindex := 2;
+    rgStatus.TabStop := (rgStatus.ItemIndex = -1);
+    rgStage.TabStop := (rgStage.ItemIndex = -1);
+    edRecDate.text := Probrec.DateRecStr;
+    edUpdate.text := Probrec.DateModStr;
+    edResDate.text := ProbRec.DateResStr;
+    edUpdate.enabled := false;
+    if pos(Reason,'CR') = 0 then
+      with PLPt do
+        begin
+          if UpperCase(Reason) = 'E' then
+            begin
+              ckSC.Enabled  := ProbRec.SCProblem or PtServiceConnected;
+              ckSC.checked  := ProbRec.SCProblem;
+            end
+          else
+            begin
+              ckSC.enabled  := PtServiceConnected ;
+              ckSC.checked  := ProbRec.SCProblem and PtServiceConnected ;
+            end;
+          ckAO.enabled  := PtAgentOrange ;
+          ckRAD.enabled := PtRadiation ;
+          ckENV.enabled := PtEnvironmental ;
+          ckHNC.enabled := PtHNC ;
+          ckMST.enabled := PtMST ;
+          ckSHAD.Enabled := PtSHAD;
+          ckAO.checked  := Probrec.AOProblem and PtAgentOrange;
+          ckRAD.checked := Probrec.RADProblem and PtRadiation;
+          ckENV.checked := Probrec.ENVProblem and PtEnvironmental;
+          ckHNC.checked := Probrec.HNCProblem and PtHNC;
+          ckMST.checked := Probrec.MSTProblem and PtMST;
+          ckSHAD.Checked := Probrec.SHADProlem and PtSHAD;
+        end ;
+    cbProv.InitLongList(ProbRec.RespProvider.extern) ;
+    if (ProbRec.RespProvider.intern <> '') and (StrToInt64Def(ProbRec.RespProvider.intern, 0) > 0) then
+      cbProv.SelectByIEN(StrToInt64(ProbRec.RespProvider.intern)) ;
+
+    if UpperCase(Reason) = 'A' then
+      begin
+        if Encounter.Inpatient then
+          begin
+            cbLoc.visible:=false;
+            cbServ.Visible:=true;
+            lblLoc.caption:='Service:';
+            cbServ.InitLongList('');
+          end
+        else
+          begin
+            cbLoc.visible:=true;
+            cbServ.Visible:=false;
+            lblLoc.caption:='Clinic:';
+            cbLoc.InitLongList(Encounter.LocationName) ;
+            cbLoc.SelectByIEN(Encounter.Location);
+          end;
+      end
+    else
+      begin
+        if (ProbRec.Service.DHCPField = '^') and  (ProbRec.Clinic.DHCPField <> '^') then
+          begin
+            cbLoc.visible:=true;
+            cbServ.Visible:=false;
+            lblLoc.caption:='Clinic:';
+            cbLoc.InitLongList(ProbRec.Clinic.Extern) ;
+            cbLoc.SelectByID(ProbRec.Clinic.Intern) ;
+          end
+        else if (ProbRec.Clinic.DHCPField = '^') and  (ProbRec.Service.DHCPField <> '^') then
+          begin
+            cbLoc.visible:=false;
+            cbServ.Visible:=true;
+            lblLoc.caption:='Service:';
+            cbServ.InitLongList(ProbRec.Service.Extern) ;
+            cbServ.SelectByID(ProbRec.Service.Intern) ;
+          end
+        else
+          begin
+            if Encounter.Inpatient then
+              begin
+                cbLoc.visible:=false;
+                cbServ.Visible:=true;
+                lblLoc.caption:='Service:';
+                cbServ.InitLongList('');
+              end
+            else
+              begin
+                cbLoc.visible:=true;
+                cbServ.Visible:=false;
+                lblLoc.caption:='Clinic:';
+                cbLoc.InitLongList('') ;
+              end;
+          end;
+      end;
+    cbLoc.Caption := lblLoc.Caption;
+
+    if Pos(Reason,'E,C') > 0 then ShowComments  ;
+    if ProbRec.CmtIsXHTML then
+      begin
+        bbAdd.Enabled := FALSE;
+        bbEdit.Enabled := FALSE;
+        bbRemove.Enabled := FALSE;
+        pnlComments.Hint := ProbRec.CmtNoEditReason;
+      end
+    else
+      begin
+        bbAdd.Enabled := TRUE;
+        bbEdit.Enabled := TRUE;
+        bbRemove.Enabled := TRUE;
+        pnlComments.Hint := '';
+      end ;
+   // ===================  changed code - REV 7/30/98  =========================
+   // PlUser.usVerifyTranscribed is a SITE requirement, not a user ability
+    if Reason = 'A' then
+      begin
+        if PlUser.usVerifyTranscribed and not PlUser.usPrimeUser then
+          ckVerify.Checked := False
+        else
+          ckVerify.Checked := True;
+      end
+    else ckVerify.checked := (Probrec.condition = 'P');
+   //===========================================================================
+   (* if (PlUSer.usVerifyTranscribed) and (Reason='A') then
+      begin {some users can add and verify}
+        {ckVerify.visible:=true;}
+        ckVerify.checked:=true; {assume it will be entered verified}
+      end {others can add and edit verified status}
+    else if (PlUSer.usVerifyTranscribed) and (PlUser.usPrimeUser) then
+      begin
+        {ckVerify.visible:=true; }
+        ckVerify.checked:=(Probrec.condition='P');
+      end;  *)
+    if Reason <> 'A' then fChanged := False else fChanged := True; {initialize form for changes}
+  finally
+    alist.free;
+  end;
+end;
+
+procedure TfrmdlgProb.ShowComments;
+var
+  i:integer;
+begin
+  with ProbRec do
+    for i:=0 to Pred(fComments.count) do
+      lstComments.Items.Add(TComment(fComments[i]).ExtDateAdd + '^' + TComment(fComments[i]).Narrative);
+end;
+
+
+procedure TfrmdlgProb.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  Alist: TStringList;
+begin
+  AList := TStringList.Create;
+  try
+    //frmProblems.lblProbList.caption := frmProblems.pnlRight.Caption ;  {moved to bbQuit - only on CANCEL}
+    TWinControl(parent).visible := false;
+    with frmProblems do
+      begin
+        pnlProbList.Visible := False ;
+        edProbEnt.text := '';
+        pnlView.BringToFront ;
+        pnlView.Show   ;
+        mnuView.Enabled := True;
+        mnuAct.Enabled := True ;
+        lstView.Enabled := True ;
+        bbNewProb.Enabled := true ;
+        if fChanged then LoadPatientProblems(AList,PLUser.usViewAct[1],false);
+      end ;
+    Action := caFree;
+ finally
+    AList.Free;
+  end;
+end;
+
+{--------------------------------- file ---------------------------------}
+
+procedure TfrmdlgProb.bbFileClick(Sender: TObject);
+const
+  TX_INACTIVE_CODE   = 'This problem references an inactive ICD code.' + #13#10 +
+                       'The code must be updated using the ''Change''' + #13#10 +
+                       'button before it can be saved';
+  TC_INACTIVE_CODE   = 'Inactive Code';
+var
+  AList: TstringList;
+  remcom, vu, ut: string;
+  i: integer;
+begin
+  if (Reason <> 'R') and (Reason <> 'r') then
+    if (rgStatus.itemindex=-1) or (cbProv.itemindex=-1) then
+      begin
+        InfoBox('Status and Responsible Provider are required.', 'Information', MB_OK or MB_ICONINFORMATION);
+        exit;
+      end;
+  if Reason in ['C','c','E','e'] then
+    if not IsActiveICDCode(ProbRec.Diagnosis.extern) then
+      begin
+        InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+        exit;
+      end;
+  if BadDates then exit;
+  Alist:=TStringList.create;
+  try
+    screen.cursor := crHourGlass;
+      {if (ckVerify.visible) then }
+    if (ckVerify.Checked) then
+      ProbRec.Condition := 'P'
+    else
+      Probrec.Condition := 'T';
+    if rgStatus.itemindex = 0 then
+      Probrec.status := 'A'
+    else if rgstatus.itemindex = 1 then
+      Probrec.status := 'I';
+    if rgStage.itemindex = 0 then
+      Probrec.Priority := 'A'
+    else if rgStage.itemindex = 1 then
+      Probrec.Priority := 'C';
+    ProbRec.DateOnsetStr := edOnsetDate.text;
+    ProbRec.DateResStr   := edResDate.text;{aka inactivation date}
+    ProbRec.DateRecStr   := edRecDate.text;{recorded anywhere}
+    if edUpdate.text = '' then
+      ProbRec.DateModStr := DatetoStr(trunc(FMNow))
+    else
+      ProbRec.DateModStr := edUpdate.text; {last update}
+    (*if ckSC.enabled then *)Probrec.SCProblem    := ckSC.checked;
+    if ckRAD.enabled then Probrec.RadProblem  := ckrad.Checked;
+    if ckAO.enabled then ProbRec.AOProblem    := ckAO.checked;
+    if ckENV.enabled then ProbRec.ENVProblem  := ckENV.Checked;
+    if ckHNC.enabled then ProbRec.HNCProblem  := ckHNC.Checked;
+    if ckMST.enabled then ProbRec.MSTProblem  := ckMST.Checked;
+    if ckSHAD.Enabled then ProbRec.SHADProlem := ckSHAD.Checked;
+    if cbProv.itemindex = -1 then {Get provider}
+      begin
+        Probrec.respProvider.intern := '0';
+        Probrec.RespProvider.extern := '';
+      end
+    else
+      ProbRec.RespProvider.DHCPtoKeyVal(cbProv.Items[cbProv.itemindex]);
+    if cbLoc.itemindex = -1 then {Get Clinic}
+      begin
+        Probrec.Clinic.intern := '';
+        Probrec.Clinic.extern := '';
+      end
+    else
+      ProbRec.Clinic.DHCPtoKeyVal(cbLoc.Items[cbLoc.itemindex]);
+    if cbServ.itemindex = -1 then  {Get Service}
+      begin
+        Probrec.Service.intern := '';
+        Probrec.Service.extern := '';
+      end
+    else
+      Probrec.Service.DHCPtoKeyVal(cbServ.Items[cbServ.itemindex]);
+    if ProbRec.Commentcount > 0 then GetEditedComments;
+    GetNewComments(Reason);
+    case Reason of
+      'E','e','C','c': {edits or comments}
+        begin
+          ut := '';
+          if PLUser.usPrimeUser then ut := '1';
+          FastAssign(EditSave(ProblemIFN, User.DUZ, PLPt.ptVAMC, ut, ProbRec.FilerObject), AList) ;    //V17.5  RV
+        end;
+      'A','a':  {new problem}
+         FastAssign(AddSave(PLPt.GetGMPDFN(Patient.DFN, Patient.Name),
+           pProviderID, PLPt.ptVAMC, ProbRec.FilerObject), AList) ;  //*DFN*
+      'R','r': {remove problem}
+         begin
+           remcom := '';
+           if Probrec.commentcount > 0 then
+             if TComment(Probrec.comments[pred(probrec.commentcount)]).IsNew then
+               remcom := TComment(Probrec.comments[pred(probrec.commentcount)]).Narrative;
+           FastAssign(ProblemDelete(ProbRec.PIFN, User.DUZ, PLPt.ptVAMC, remcom), AList) ;    //changed in v14
+         end
+    else exit;
+    end; {case}
+    screen.cursor := crDefault;
+    if Alist.count < 1 then
+      InfoBox('Broker time out filing on Host. Try again in a moment or cancel', 'Information', MB_OK or MB_ICONINFORMATION)
+    else if Alist[0] = '1' then
+      begin
+        Alist.clear;
+        vu:=PLUser.usViewAct;
+        fChanged := True;  {ensure update of problem list on close}
+        //frmProblems.LoadPatientProblems(AList,vu[1],false); 
+          { update cover sheet problem list }
+        with frmCover do
+          for i := ComponentCount - 1 downto 0 do
+            begin
+              if Components[i] is TORListBox then
+                begin
+                  case Components[i].Tag of
+                    10: ListActiveProblems((Components[i] as TORListBox).Items);
+                  end;
+                end;
+            end;
+        Close;
+      end
+    else
+      InfoBox('Unable to lock record for filing on Host. Try again in a moment or cancel',
+        'Information', MB_OK or MB_ICONINFORMATION);
+  finally
+    Alist.free
+  end;
+end;
+
+procedure TfrmdlgProb.GetEditedComments;
+var
+  i: integer;
+begin
+  for i := 0 to pred(ProbRec.CommentCount) do
+    if i < lstComments.Items.Count then with lstComments do
+      begin
+        if Items[i] = 'DELETED' then
+          TComment(ProbRec.fComments[i]).Narrative := '' {this deletes the comment}
+        else
+          begin
+            TComment(ProbRec.fComments[i]).DateAdd := Piece(lstComments.Items[i], U, 1) ;
+            TComment(ProbRec.fComments[i]).Narrative := Piece(lstComments.Items[i], U, 2) ;
+          end;
+      end;
+end;
+
+procedure TfrmdlgProb.GetNewComments(Reason: char);
+var
+  i, start: integer;
+begin
+  {don't display previous comments for add comment or remove problem functions}
+  if (Reason <> 'R') then
+    start := ProbRec.CommentCount
+  else
+    start := 0;
+  for i := start to Pred(lstComments.Items.Count) do
+   begin
+    with lstComments do
+     begin
+      if (lstComments.Items[i] <> 'DELETED') and (Piece(lstComments.Items[i], u, 2) <> '') then
+       ProbRec.AddNewComment(Piece(lstComments.Items[i],u,2));
+     end;
+   end;
+  end;
+
+procedure TfrmdlgProb.bbRemoveClick(Sender: TObject);
+begin
+ if (lstComments.Items.Count = 0) or (lstComments.ItemIndex < 0) then exit ;
+ lstComments.Items[lstComments.ItemIndex] := 'DELETED' ;
+ fChanged := true;
+end;
+
+procedure TfrmdlgProb.cbProvKeyPress(Sender: TObject; var Key: Char);
+begin
+  if key = #13 then
+    SendMessage(cbProv.Handle, CB_SHOWDROPDOWN, 1, 0) {Opens list}
+  else
+    SendMessage(cbProv.Handle, CB_SHOWDROPDOWN, 0, 0) {Closes list}
+end;
+
+procedure TfrmdlgProb.rgStatusClick(Sender: TObject);
+begin
+ if rgStatus.Itemindex = 1 then
+   begin
+     edResDate.text  := DateToStr(Date) ;
+     rgStage.Visible := False ;
+   end
+ else
+   begin
+     edResDate.text  := '';
+     rgStage.Visible := True ;
+   end ;
+ FChanged := True;
+end;
+
+procedure TfrmdlgProb.cbProvClick(Sender: TObject);
+begin
+  SendMessage(cbProv.Handle, CB_SHOWDROPDOWN, 0, 0); {Closes list}
+end;
+
+procedure TfrmdlgProb.cbLocClick(Sender: TObject);
+begin
+  SendMessage(cbLoc.Handle, CB_SHOWDROPDOWN, 0, 0); {Closes list}
+end;
+
+procedure TfrmdlgProb.cbLocKeyPress(Sender: TObject; var Key: Char);
+begin
+  if key = #13 then
+    SendMessage(cbLoc.Handle, CB_SHOWDROPDOWN, 1, 0) {Opens list}
+  else
+    SendMessage(cbLoc.Handle, CB_SHOWDROPDOWN, 0, 0) {Closes list}
+end;
+
+
+procedure TfrmdlgProb.SetDefaultProb(Alist: TStringList; prob: string);
+var
+  Today: string;
+
+  function Permanent: char;
+  begin
+  // ===================  changed code - REV 7/30/98  =========================
+  // PlUser.usVerifyTranscribed is a SITE requirement, not a USER ability
+    if PlUser.usVerifyTranscribed and not PlUser.usPrimeUser then
+      result:='T'
+    else
+      result:='P';
+  //===========================================================================
+  { if PLUser.usPrimeUser or (PlUser.usVerifyTranscribed) then
+    result:='P'
+   else
+    result:='T';}
+  end;
+
+begin  {BODY }
+  Today := PLPt.Today;
+  if Piece(prob, u, 4) <> '' then
+    alist.add('NEW' + v + '.01' + v +Piece(prob, u, 4) + u + Piece(prob, u, 3))
+  else
+    alist.add('NEW' + v + '.01' + v + u); {no icd code}
+  {Leave ien of .05 undefined - let host save routine compute it}
+  alist.add('NEW' + v + '.05' + v + u + Piece(prob,u,2));{actual text}
+  alist.add('NEW' + v + '.06' + v + PLPt.PtVAMC);
+  alist.add('NEW' + v + '.08' + v + Today);
+  alist.add('NEW' + v + '.12' + v + 'A' + u + 'ACTIVE');
+  alist.add('NEW' + v + '.13' + v + '');
+  alist.add('NEW' + v + '1.01' + v + Piece(prob,u,1) + u + Piece(prob,u,2));{standardized text}
+  alist.add('NEW' + v + '1.02' +  v + Permanent); {Permanent or Transcribed status}
+  alist.add('NEW' + v + '1.03' + v + inttostr(Encounter.Provider) + u + Encounter.Providername); {ent by}
+  alist.add('NEW' + v + '1.04' + v + inttostr(Encounter.Provider) + u + Encounter.Providername); {recording prov}
+  alist.add('NEW' + v + '1.05' + v + inttostr(Encounter.Provider) + u + Encounter.Providername); {resp prov}
+  alist.add('NEW' + v + '1.06' + v + PLUser.usService); {user's service/section}
+  alist.add('NEW' + v + '1.07' + v + '');
+  alist.add('NEW' + v + '1.08' + v + '') ;{IntToStr(Encounter.Location));}
+  alist.add('NEW' + v + '1.09' + v + Today);
+  alist.add('NEW' + v + '1.1' +  v + '0' + u + 'NO'); {SC}
+  alist.add('NEW' + v + '1.11' + v + '0' + u + 'NO'); {AO}
+  alist.add('NEW' + v + '1.12' + v + '0' + u + 'NO'); {RAD}
+  alist.add('NEW' + v + '1.13' + v + '0' + u + 'NO'); {ENV}
+  alist.add('NEW' + v + '1.14' + v + '0' + u + 'NO'); {SHD}
+  alist.add('NEW' + v + '1.15' + v + '');
+end;
+
+
+function TfrmdlgProb.BadDates:Boolean;
+var
+  ds:string;
+  i:integer;
+
+  procedure Msg(msg: string);
+  begin
+    InfoBox('Dates must be in format m/d/y or m/d or y, or T+d or T-d' +
+      #13#10 + msg + ' is formatted improperly.' +
+      #13#10 + '     Please check the other dates as well.',
+      'Information', MB_OK or MB_ICONINFORMATION);
+  end;
+begin
+  result:=True;  {initialize for error condition}
+  if edRecDate.text <>'' then
+    begin
+      ds:=DateStringOk(edRecDate.text);
+      if ds = 'ERROR' then
+        begin
+          msg('Recorded');
+          exit;
+        end;
+    end ;
+  if edResDate.text <>'' then
+    begin
+      ds:=DateStringOk(edResDate.text);
+      if ds = 'ERROR' then
+        begin
+          msg('Resolved');
+          exit;
+        end;
+    end ;
+  if edOnsetDate.text <>'' then
+    begin
+      ds:=DateStringOk(edOnsetDate.text);
+      if ds = 'ERROR' then
+        begin
+          msg('Onset');
+          exit;
+        end;
+      if StrToFMDateTime(edOnsetDate.Text) > FMNow then
+        begin
+          InfoBox('Onset dates in the future are not allowed.', 'Information', MB_OK or MB_ICONINFORMATION);
+          Exit;
+        end;
+    end ;
+  for i:=0 to pred(lstComments.Items.Count) do
+    begin
+      if Piece(lstComments.Items[i],u,2)<>'' then {may have blank lines at bottom}
+        begin
+          ds:=DateStringOk(Piece(lstComments.Items[i],u,1));
+          if ds='ERROR' then
+            begin
+              msg('Comment #' + inttostr(i));
+              exit;
+            end;
+        end;
+    end;
+  result:=False;  {made it through, so no bad dates}
+end;
+
+procedure TfrmdlgProb.ControlChange(Sender: TObject);
+begin
+  fChanged:=true;
+end;
+
+destructor TfrmdlgProb.Destroy;
+begin
+  ProbRec.free;
+  ProbRec := nil;
+  FCtrlMap.Free;
+  if fprobs.dlgProbs <> nil then fprobs.dlgProbs := nil;
+  if (not Application.Terminated) and (not uInit.TimedOut) then   {prevents GPF if system close box is clicked
+                                                                   while frmDlgProbs is visible}
+     if Assigned(frmProblems) then PostMessage(frmProblems.Handle, UM_CLOSEPROBLEM, 0, 0);
+  inherited Destroy ;
+end;
+
+procedure TfrmdlgProb.cbProvDropDown(Sender: TObject);
+var
+  alist:TstringList;
+  i:integer;
+  v:string;
+begin
+  v := uppercase(cbProv.text);
+  if (v <> '') then
+    begin
+      alist := TstringList.create;
+      try
+        FastAssign(ProviderList('', 25, V, V), AList) ;
+        if alist.count > 0 then
+          begin
+            if cbProv.items.count + 25 > 100 then
+              for i := 0 to 75 do {don't allow more than 100 to build up}
+                cbProv.Items.delete(i);
+              for i := 0 to pred(alist.count) do
+                cbProv.Items.add(Alist[i]); {add new ones to list}
+          end;
+      finally
+        alist.free;
+      end;
+   end;
+end;
+
+procedure TfrmdlgProb.cbLocDropDown(Sender: TObject);
+var
+  alist: TstringList;
+  v: string;
+begin
+  v := uppercase(cbLoc.text);
+  alist := TstringList.create;
+  try
+    FastAssign(ClinicSearch(' '), AList) ;
+    if alist.count > 0 then FastAssign(Alist, cbLoc.Items);
+  finally
+    alist.free;
+  end;
+end;
+
+procedure TfrmdlgProb.FormCreate(Sender: TObject);
+begin
+  FSilent := False;
+  if rgStatus.ItemIndex = -1
+  then
+    InitialFocus := rgStatus
+  else
+    InitialFocus := rgStatus.Controls[rgStatus.ItemIndex] as TWinControl;
+end;
+
+{ old TPLDlgForm Methods }
+
+constructor TfrmdlgProb.Create(AOwner: TComponent);
+{ It is unusual to not call the inherited Create first, but necessary in this case; some
+  of the TMStruct objects need to be created before the form gets its OnCreate event.        }
+begin
+  FCtrlMap := TStringList.Create;       { FCtrlMap[n]='CtrlName=PtrID'                        }
+  inherited Create(AOwner);
+  FInitialShow := True;
+  FModified := False;
+  FEditing := False;
+end;
+
+procedure TfrmdlgProb.CreateParams(var Params: TCreateParams);
+begin
+  inherited CreateParams(Params);
+  { to make the form a child window }
+  with Params do
+    begin
+      if Owner is TPanel then
+        WndParent := (Owner as TPanel).Handle
+      else {pdr}
+        WndParent := Application.MainForm.Handle;
+      Style := ws_Child or ws_ClipSiblings;
+      X := 0;
+      Y := 0;
+   end;
+end;
+
+procedure TfrmdlgProb.Loaded;
+begin
+  inherited Loaded;
+  { allow the form to be treated as a child form }
+  Visible := False;
+  Position := poDefault;
+  BorderIcons := [];
+  BorderStyle := bsNone;
+  HandleNeeded;
+end;
+
+procedure TfrmdlgProb.DoShow;
+begin
+  FInitialShow := False;
+  inherited DoShow;
+end;
+
+procedure TfrmdlgProb.SetFontSize( NewFontSize: integer);
+begin
+  ResizeAnchoredFormToFont( self );
+end;
+
+{ base form procedures (shared by all ordering dialogs) }
+
+
+procedure TfrmdlgProb.ClearDialogControls;             { Reset all the controls in the dialog }
+var
+  i: Integer;
+begin
+  for i := 0 to ControlCount - 1 do
+  begin
+    if Controls[i] is TLabel then Continue;
+    if Controls[i] is TButton then Continue;
+  end;
+  LoadDefaults;                                       { added for lab to reset cleared lists }
+end;
+
+procedure TfrmdlgProb.LoadDefaults;
+begin
+  { by default nothing - should override in specific dialog }
+end;
+
+
+
+function TfrmdlgProb.LackRequired: Boolean;
+begin
+  Result := False;  { should override to check for additional required fields }
+end;
+
+
+procedure TfrmdlgProb.UMTakeFocus(var Message: TMessage);
+begin
+  if FInitialFocus = nil then exit; {PDR}
+  if (FInitialFocus.visible) and (FInitialFocus.enabled) then FInitialFocus.SetFocus;
+end;
+
+procedure TfrmdlgProb.bbChangeProbClick(Sender: TObject);
+const
+  TX799 = '799.9';
+var
+   newprob: string ;
+   frmPLLex: TfrmPLLex;
+begin
+  if PLUser.usUseLexicon then
+    begin
+      frmPLLex:=TfrmPLLex.create(Application);
+      try
+        frmPLLex.showmodal;
+      finally
+        frmPLLex.Free;
+      end;
+    end
+  else
+    begin
+      PLProblem := InputBox('Change problem','Enter new problem name: ','') ;
+      if PLProblem<>'' then
+        PLProblem := u + PLProblem + u + TX799 + u
+      else
+        exit ;
+    end ;
+
+  {problems are in the form of: ien^.01^icd^icdifn , although only the .01 is required}
+  if PLProblem='' then exit ;
+  newprob := PLProblem ;
+  if frmProblems.HighlightDuplicate(NewProb, Piece(newprob, U, 2) + #13#10#13#10 +
+      'This problem would be a duplicate.'+#13#10 +
+      'Return to the list and see the highlighted problem.',
+      mtInformation, 'CHANGE') then
+    exit {bail out - don't want dups}
+  else
+    begin
+      {ien^.01^icd^icdifn - see SetDefaultProblem}
+      {Set new problem properties}
+      ProbRec.Problem.DHCPtoKeyVal(Piece(NewProb,u,1) + u + Piece(NewProb,u,2)) ;   {1.01}
+      ProbRec.Diagnosis.DHCPtoKeyVal(Piece(NewProb,u,4) + u + Piece(NewProb,u,3)) ;  {.01}
+      ProbRec.Narrative.DHCPtoKeyVal(u + Piece(NewProb,u,2));                        {.05}
+
+      {mark it as changed}
+      fchanged := true ;
+
+      {Redraw heading}
+      if Piece(NewProb,u,3)<>'' then
+        edProb.Text:=Piece(NewProb,u,2) + ' (' + Piece(NewProb,u,3) + ')'
+      else
+        edProb.Text:=Piece(NewProb,u,2) + ' (799.9)'; {code not found, or free-text entry}
+    end ;
+end ;
+
+procedure TfrmdlgProb.cbLocNeedData(Sender: TObject; const StartFrom: String;
+  Direction, InsertAt: Integer);
+begin
+  cbLoc.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmdlgProb.cbProvNeedData(Sender: TObject; const StartFrom: String;
+  Direction, InsertAt: Integer);
+begin
+  cbProv.ForDataUse(SubSetOfProviders(StartFrom, Direction));
+end;
+
+procedure TfrmdlgProb.cbServNeedData(Sender: TObject; const StartFrom: String;
+  Direction, InsertAt: Integer);
+begin
+  cbServ.ForDataUse(ServiceSearch(StartFrom, Direction));
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmdlgProb);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbFlt.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbFlt.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbFlt.dfm	(revision 1676)
@@ -0,0 +1,322 @@
+inherited frmPlVuFilt: TfrmPlVuFilt
+  Left = 353
+  Top = 217
+  BorderStyle = bsDialog
+  Caption = 'Problem List View Filters'
+  ClientHeight = 343
+  ClientWidth = 349
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 349
+    Height = 343
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object SrcLabel: TLabel
+      Left = 8
+      Top = 55
+      Width = 65
+      Height = 13
+      Caption = 'Source Clinic:'
+      IsControl = True
+    end
+    object DstLabel: TLabel
+      Left = 199
+      Top = 55
+      Width = 84
+      Height = 13
+      Caption = 'Selected Clinic(s):'
+      IsControl = True
+    end
+    object lblProvider: TLabel
+      Left = 200
+      Top = 252
+      Width = 84
+      Height = 13
+      Caption = 'Selected Provider'
+    end
+    object Bevel1: TBevel
+      Left = 3
+      Top = 4
+      Width = 343
+      Height = 293
+    end
+    object OROffsetLabel1: TOROffsetLabel
+      Left = 198
+      Top = 6
+      Width = 32
+      Height = 15
+      Caption = 'Status'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object cmdAdd: TButton
+      Left = 162
+      Top = 105
+      Width = 27
+      Height = 22
+      Caption = '>'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 3
+      OnClick = cmdAddClick
+      IsControl = True
+    end
+    object cmdRemove: TButton
+      Left = 162
+      Top = 169
+      Width = 27
+      Height = 22
+      Caption = '<'
+      Enabled = False
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 5
+      OnClick = cmdRemoveClick
+      IsControl = True
+    end
+    object cmdRemoveAll: TButton
+      Left = 162
+      Top = 201
+      Width = 27
+      Height = 22
+      Caption = '<<'
+      Enabled = False
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 6
+      OnClick = cmdRemoveAllClick
+      IsControl = True
+    end
+    object cmdOK: TBitBtn
+      Left = 90
+      Top = 309
+      Width = 77
+      Height = 22
+      Caption = 'OK'
+      TabOrder = 9
+      OnClick = cmdOKClick
+      NumGlyphs = 2
+      Spacing = -1
+      IsControl = True
+    end
+    object cmdCancel: TBitBtn
+      Left = 176
+      Top = 309
+      Width = 77
+      Height = 22
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 10
+      OnClick = cmdCancelClick
+      Layout = blGlyphTop
+      NumGlyphs = 2
+      Spacing = -1
+      IsControl = True
+    end
+    object lstDest: TORListBox
+      Left = 200
+      Top = 70
+      Width = 140
+      Height = 176
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 4
+      OnClick = lstDestClick
+      Caption = 'Selected Clinic or Clinics'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object rgVu: TRadioGroup
+      Left = 7
+      Top = 7
+      Width = 167
+      Height = 41
+      Caption = 'Primary View'
+      Columns = 2
+      Items.Strings = (
+        '&Outpatient'
+        '&Inpatient')
+      TabOrder = 0
+      OnClick = rgVuClick
+    end
+    object cboProvider: TORComboBox
+      Left = 200
+      Top = 265
+      Width = 140
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Selected Provider'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,3'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 8
+      OnNeedData = cboProviderNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdDefaultView: TBitBtn
+      Left = 180
+      Top = 370
+      Width = 128
+      Height = 22
+      Caption = 'Return to Default View'
+      TabOrder = 11
+      Visible = False
+      OnClick = cmdDefaultViewClick
+      NumGlyphs = 2
+    end
+    object cboSource: TORComboBox
+      Left = 9
+      Top = 69
+      Width = 140
+      Height = 176
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Source Clinic'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnChange = cboSourceChange
+      OnDblClick = cmdAddClick
+      OnEnter = cboSourceEnter
+      OnExit = cboSourceExit
+      OnNeedData = cboSourceNeedData
+      CharsNeedMatch = 1
+    end
+    object cmdSave: TButton
+      Left = 48
+      Top = 371
+      Width = 128
+      Height = 21
+      Caption = 'Save as Default'
+      TabOrder = 12
+      Visible = False
+      OnClick = cmdSaveClick
+    end
+    object chkComments: TCheckBox
+      Left = 9
+      Top = 266
+      Width = 138
+      Height = 17
+      Caption = 'Show comments on list'
+      TabOrder = 7
+    end
+    object cboStatus: TORComboBox
+      Left = 200
+      Top = 26
+      Width = 139
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Status'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = cmdAdd'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemoveAll'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstDest'
+        'Status = stsDefault')
+      (
+        'Component = rgVu'
+        'Status = stsDefault')
+      (
+        'Component = cboProvider'
+        'Status = stsDefault')
+      (
+        'Component = cmdDefaultView'
+        'Status = stsDefault')
+      (
+        'Component = cboSource'
+        'Status = stsDefault')
+      (
+        'Component = cmdSave'
+        'Status = stsDefault')
+      (
+        'Component = chkComments'
+        'Status = stsDefault')
+      (
+        'Component = cboStatus'
+        'Status = stsDefault')
+      (
+        'Component = frmPlVuFilt'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbFlt.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbFlt.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbFlt.pas	(revision 1676)
@@ -0,0 +1,448 @@
+unit fProbflt;
+
+interface
+
+uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons,
+  StdCtrls, SysUtils, ORCtrls, ExtCtrls, uProbs, uConst, Dialogs, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmPlVuFilt = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    SrcLabel: TLabel;
+    DstLabel: TLabel;
+    lblProvider: TLabel;
+    Bevel1: TBevel;
+    OROffsetLabel1: TOROffsetLabel;
+    cmdAdd: TButton;
+    cmdRemove: TButton;
+    cmdRemoveAll: TButton;
+    cmdOK: TBitBtn;
+    cmdCancel: TBitBtn;
+    lstDest: TORListBox;
+    rgVu: TRadioGroup;
+    cboProvider: TORComboBox;
+    cmdDefaultView: TBitBtn;
+    cboSource: TORComboBox;
+    cmdSave: TButton;
+    chkComments: TCheckBox;
+    cboStatus: TORComboBox;
+    procedure cmdAddClick(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure cmdRemoveAllClick(Sender: TObject);
+    procedure SetButtons;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure rgVuClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure cmdDefaultViewClick(Sender: TObject);
+    procedure cboProviderNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboSourceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure lstDestClick(Sender: TObject);
+    procedure cboSourceChange(Sender: TObject);
+    procedure cboSourceEnter(Sender: TObject);
+    procedure cboSourceExit(Sender: TObject);
+    procedure cmdSaveClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    FContextString: string;
+    FFilterString: string;
+    FFilterChanged: boolean;
+    function CreateContextString: string;
+    function CreateFilterString: string;
+    procedure GetClinicList;
+    procedure GetServiceList;
+    procedure GetLocationList;
+  end;
+
+var
+  frmPlVuFilt: TfrmPlVuFilt;
+
+procedure GetViewFilters(FontSize: Integer; var PLFilters: TPLFilters; var ContextString, FilterString: string; var FilterChanged: boolean);
+
+implementation
+
+{$R *.DFM}
+uses
+ ORFn, fProbs, rProbs, rCore;
+
+procedure GetViewFilters(FontSize: Integer; var PLFilters: TPLFilters; var ContextString, FilterString: string; var FilterChanged: boolean);
+var
+  frmPlVuFilt: TfrmPLVuFilt;
+  W, H: Integer;
+begin
+  frmPlVuFilt := TfrmPLVuFilt.create(Application);
+  try
+    with frmPlVuFilt do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FContextString := ContextString;
+      ShowModal;
+      FilterChanged := FFilterChanged;
+      ContextString := FContextString;
+      FilterString  := FFilterString;
+    end; {with frmPlVuFilt}
+  finally
+    frmPlVuFilt.Release;
+  end;
+end;
+
+procedure TfrmPlVuFilt.FormCreate(Sender: TObject);
+begin
+  FastAssign(frmProblems.lstView.Items, cboStatus.Items);
+  cboStatus.SelectByID(PLUser.usViewAct);
+end;
+
+procedure TfrmPlVuFilt.FormShow(Sender: TObject);
+begin
+    if PLUser.usCurrentView = PL_OP_VIEW then
+      rgVu.itemindex := 0
+    else if PLUser.usCurrentView = PL_IP_VIEW then
+      rgVu.itemindex := 1
+    else
+      rgVu.itemindex := -1;  //2;
+    rgVuClick(Self);
+    cboSource.ItemIndex := -1;
+    if PlUser.usViewProv = '0^All' then
+      begin
+        cboProvider.InitLongList('');
+        cboProvider.ItemIndex := 0;
+      end
+    else
+      begin
+        cboProvider.InitLongList(Piece(PLUser.usViewProv, U, 2));
+        cboProvider.SelectByID(Piece(PLUser.usViewProv, U, 1));
+      end;
+    chkComments.Checked := (PLUser.usViewComments = '1');
+end;
+
+procedure TfrmPlVuFilt.cmdAddClick(Sender: TObject);
+var
+  textindex: integer;
+begin
+  textindex := lstDest.Items.Count;
+  if cboSource.ItemIndex > -1 then
+    if lstDest.SelectById(cboSource.ItemID) = -1 then
+      lstDest.Items.Add(cboSource.Items[cboSource.ItemIndex]);
+  lstDest.ItemIndex := textindex;
+  SetButtons;
+end;
+
+procedure TfrmPlVuFilt.cmdRemoveClick(Sender: TObject);
+var
+  newindex: integer;
+begin
+  if lstDest.Items.Count > 0 then
+  begin
+    if lstDest.ItemIndex = (lstDest.Items.Count -1 ) then
+      newindex := lstDest.ItemIndex - 1
+    else
+      newindex := lstDest.ItemIndex;
+    lstDest.Items.Delete(lstDest.ItemIndex);
+    if lstDest.Items.Count > 0 then lstDest.ItemIndex := newindex;
+  end;
+  SetButtons;
+end;
+
+procedure TfrmPlVuFilt.cmdRemoveAllClick(Sender: TObject);
+begin
+  lstDest.Clear;
+  SetButtons;
+end;
+
+procedure TfrmPlVuFilt.SetButtons;
+var
+  SrcEmpty, DstEmpty: Boolean;
+begin
+  SrcEmpty := cboSource.Items.Count = 0;
+  DstEmpty := lstDest.Items.Count = 0;
+  cmdAdd.Enabled := (not SrcEmpty) and (cboSource.ItemIndex > -1) ;
+  cmdRemove.Enabled := not DstEmpty;
+  cmdRemoveAll.Enabled := not DstEmpty;
+end;
+
+procedure TfrmPlVuFilt.rgVuClick(Sender: TObject);
+var
+  AList: TStringList;
+  i: integer;
+begin
+ AList := TStringList.Create;
+ try
+   cboSource.clear;
+   lstDest.clear;
+   cboSource.enabled:=true;
+   lstDest.enabled:=true;
+   cboSource.color:=clWindow;
+   lstDest.color:=clWindow;
+   case rgVu.itemindex of
+    0:  {out patient view} begin
+                             GetClinicList;
+                             GetListForOP(Alist, frmProblems.wgProbData);
+                             FastAssign(ClinicFilterList(Alist), cboSource.Items);
+                             cboSource.InsertSeparator;
+                             cboSource.InitLongList('') ;
+                             for i := 0 to PLFilters.ClinicList.Count - 1 do
+                               begin
+                                 cboSource.SelectByID(PLFilters.ClinicList[i]);
+                                 cmdAddClick(Self);
+                               end;
+                           end;
+    1:  {in-patient View}  begin
+                             GetServiceList;
+                             GetListForIP(Alist, frmProblems.wgProbData);
+                             FastAssign(ServiceFilterList(Alist), cboSource.Items);
+                             cboSource.InsertSeparator;
+                             cboSource.InitLongList('') ;
+                             for i := 0 to PLFilters.ServiceList.Count - 1 do
+                               begin
+                                 cboSource.SelectByID(PLFilters.ServiceList[i]);
+                                 cmdAddClick(Self);
+                               end;
+                           end;
+   else {unfiltered view}  GetLocationList;
+   end;
+   SetButtons ;
+ finally
+   AList.Free;
+ end;
+end;
+
+procedure TfrmPlVuFilt.lstDestClick(Sender: TObject);
+begin
+  SetButtons ;
+end;
+
+procedure TfrmPlVuFilt.cboSourceChange(Sender: TObject);
+begin
+  SetButtons ;
+end;
+
+procedure TfrmPlVuFilt.cboSourceEnter(Sender: TObject);
+begin
+  cmdAdd.Default := true;
+end;
+
+procedure TfrmPlVuFilt.cboSourceExit(Sender: TObject);
+begin
+  cmdAdd.Default := false;
+end;
+
+procedure TfrmPlVuFilt.cmdCancelClick(Sender: TObject);
+begin
+  FFilterChanged := False;
+  close;
+end;
+
+procedure TfrmPlVuFilt.cmdOKClick(Sender: TObject);
+var
+  Alist:TstringList;
+
+  procedure SetVu(vulist:TstringList; vu:string);
+    var
+      alist:TstringList;
+    begin
+      alist:=TStringList.create;
+    try
+      vuList.clear;
+      if lstDest.Items.Count=0 then
+        begin
+          AList.Clear;
+          AList.Add('0');
+        end
+      else
+        FastAssign(lstDest.Items, alist); {conserve only selected items}
+      LoadFilterList(Alist,VuList);
+      PLUser.usCurrentView:=vu;
+    finally
+      alist.free;
+    end;
+  end;
+
+begin {BODY of procedure}
+  Alist:=TStringList.create;
+  try
+     PlFilters.ProviderList.clear;
+     if (uppercase(cboProvider.text)='ALL') or (cboProvider.Text='') then
+      begin
+        Alist.clear;
+        AList.Add('0');
+        PLUser.usViewProv := '0^All';
+        AList.Add('-1');
+        LoadFilterList(Alist,PLFilters.ProviderList);
+      end
+     else
+      begin
+       AList.clear;
+       Alist.add(IntToStr(cboProvider.ItemIEN));
+       PLUser.usViewProv := cboProvider.Items[cboProvider.ItemIndex];
+       LoadFilterList(Alist, PLFilters.ProviderList);
+      end;
+     case rgVu.itemindex of
+      0: SetVu(PLFilters.clinicList, PL_OP_VIEW); {OP view}
+      1: SetVu(PLFilters.ServiceList, PL_IP_VIEW); {IP view}
+     else
+         SetVu(PLFilters.clinicList, PL_UF_VIEW);
+      end;
+     //ShowFilterStatus(PLUser.usCurrentView);
+     //PostMessage(frmProblems.Handle, UM_PLFILTER, 0, 0);
+     FContextString := CreateContextString;
+     FFilterString  := CreateFilterString;
+     FFilterChanged := True;
+     close;
+  finally
+     alist.free;
+  end;
+end;
+
+procedure TfrmPlVuFilt.cmdDefaultViewClick(Sender: TObject);
+{var
+ Alist:TStringList;
+ i: integer;
+ tmpProv: Int64;}
+begin
+{  Alist:=TStringList.create;
+  try
+    lstDest.Clear;
+    PlUser.usCurrentView:=PLUser.usDefaultView;
+    tmpProv := StrToInt64Def(Piece(PLUser.usDefaultContext, ';', 5), 0);
+    if tmpProv > 0 then
+      PLUser.usViewProv := IntToStr(tmpProv) + ExternalName(tmpProv, 200);
+    with cboStatus do
+      begin
+        for i := 0 to Items.Count - 1 do
+          if Copy(Items[i], 1, 1) = Piece(PLUser.usDefaultContext, ';', 3) then
+            ItemIndex := i;
+      end;
+    chkComments.Checked := (Piece(PLUser.usDefaultContext, ';', 4) = '1');
+    PLFilters.ProviderList.Clear;
+    PLFilters.ProviderList.Add(Piece(PLUser.usViewProv, U, 1));
+    FastAssign(plUser.usClinList, PLFilters.ClinicList);
+    FastAssign(plUser.usServList, PlFilters.ServiceList);
+    cboProvider.InitLongList(Piece(PLUser.usViewProv, U, 2));
+    cboProvider.SelectByID(Piece(PLUser.usViewProv, U, 1));
+    //InitViewFilters(Alist);
+  finally
+    Alist.free;
+  end;
+  //FormShow(Self);
+  FContextString := PLUser.usDefaultContext;
+  FFilterChanged := True;
+  Close;
+  //ModalResult := mrOK ; }
+end;
+
+procedure TfrmPlVuFilt.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+ Release;
+end;
+
+procedure TfrmPlVuFilt.GetClinicList;
+begin
+  PLFilters.ServiceList.clear;
+  SrcLabel.caption:='Source Clinic(s)';
+  DstLabel.caption:='Selected Clinic(s)';
+  cboSource.Caption := 'Source Clinics';
+  lstDest.Caption := 'Selected Clinic or Clinics';
+  lstDest.Clear;
+  SetButtons ;
+end;
+
+procedure TfrmPlVuFilt.GetServiceList;
+begin
+ PLFilters.ClinicList.clear;
+ SrcLabel.caption:='Source Service(s)';
+ DstLabel.caption:='Selected Service(s)';
+ cboSource.Caption := 'Source Services';
+ lstDest.Caption := 'Selected Service or Services';
+ lstDest.Clear;
+ SetButtons ;
+end;
+
+procedure TfrmPlVuFilt.GetLocationList;
+begin
+ cboSource.Clear;
+ lstDest.Clear;
+ PLFilters.ClinicList.clear;
+ PLFilters.ServiceList.clear;
+ SrcLabel.caption:='All Locations/Services';
+ DstLabel.caption:='Selected Locations/Services';
+ cboSource.Caption := 'All Locations/Services';
+ lstDest.Caption := 'Selected Locations/Services';
+ cboSource.color:=clBtnFace;
+ cboSource.enabled:=false;
+ lstDest.color:=clBtnFace;
+ lstDest.enabled:=false;
+end;
+
+procedure TfrmPlVuFilt.cboProviderNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cboProvider.ForDataUse(SubSetOfActiveAndInactivePersons(StartFrom, Direction));
+  cboProvider.Items.insert(0,'0^All');
+end;
+
+procedure TfrmPlVuFilt.cboSourceNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+ case rgVu.itemindex of
+  0:  {out patient view} cboSource.ForDataUse(SubsetOfClinics(StartFrom,Direction));
+  1:  {in-patient View}  cboSource.ForDataUse(ServiceSearch(StartFrom,Direction));
+ else {unfiltered view}  GetLocationList;
+ end;
+end;
+
+function TfrmPlVuFilt.CreateContextString: string;
+var
+  Status, Comments, Provider: string;
+begin
+  if cboStatus.ItemIndex > -1 then
+    Status := cboStatus.ItemID
+  else
+    Status := 'A';
+  Comments := BOOLCHAR[chkComments.Checked];
+  if cboProvider.ItemIEN > 0 then Provider := cboProvider.ItemID else Provider := '';
+  Result := ';;' + Status + ';' + Comments + ';' + Provider;
+end;
+
+function TfrmPlVuFilt.CreateFilterString: string;
+var
+  FilterString: string;
+  i: integer;
+begin
+  case rgVu.ItemIndex of
+    0:  FilterString := PL_OP_VIEW + '/';
+    1:  FilterString := PL_IP_VIEW + '/';
+  else  FilterString := '';
+  end;
+  if rgVu.ItemIndex <> -1 then
+    for i := 0 to lstDest.Items.Count - 1 do
+      if Piece(lstDest.Items[i], U, 1) <> '-1' then
+        FilterString := FilterString + Piece(lstDest.Items[i], U, 1) + '/';
+  Result := FilterString;
+end;
+
+procedure TfrmPlVuFilt.cmdSaveClick(Sender: TObject);
+begin
+  {FContextString := CreateContextString;
+  FFilterString  := CreateFilterString;
+  if InfoBox('Replace current defaults?','Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      with PLUser do
+        begin
+          usDefaultContext := FContextString;
+          usDefaultView    := Piece(FFilterString, '/', 1);
+        end;
+      SaveViewPreferences(FFilterString + U + FContextString);
+    end;       }
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbLex.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbLex.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbLex.dfm	(revision 1676)
@@ -0,0 +1,143 @@
+inherited frmPLLex: TfrmPLLex
+  Left = 239
+  Top = 88
+  Caption = 'Problem List  Lexicon Search'
+  ClientHeight = 274
+  ClientWidth = 425
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 433
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  DesignSize = (
+    425
+    274)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 12
+    Top = 7
+    Width = 101
+    Height = 13
+    Caption = 'Enter Term to Search'
+  end
+  object bbCan: TBitBtn [1]
+    Left = 230
+    Top = 215
+    Width = 89
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    Constraints.MaxHeight = 21
+    Constraints.MaxWidth = 89
+    TabOrder = 3
+    OnClick = bbCanClick
+    NumGlyphs = 2
+  end
+  object bbOK: TBitBtn [2]
+    Left = 322
+    Top = 215
+    Width = 89
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Constraints.MaxHeight = 21
+    Constraints.MaxWidth = 89
+    TabOrder = 4
+    OnClick = bbOKClick
+    NumGlyphs = 2
+  end
+  object Panel1: TPanel [3]
+    Left = 0
+    Top = 245
+    Width = 425
+    Height = 29
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 5
+    DesignSize = (
+      425
+      29)
+    object Bevel1: TBevel
+      Left = 4
+      Top = 4
+      Width = 417
+      Height = 21
+      Anchors = [akLeft, akTop, akRight]
+    end
+    object lblstatus: TLabel
+      Left = 16
+      Top = 8
+      Width = 3
+      Height = 13
+    end
+  end
+  object ebLex: TCaptionEdit [4]
+    Left = 12
+    Top = 27
+    Width = 321
+    Height = 21
+    Anchors = [akLeft, akTop, akRight]
+    Constraints.MaxHeight = 21
+    TabOrder = 0
+    OnKeyPress = ebLexKeyPress
+    Caption = 'Enter Term to Search'
+  end
+  object lbLex: TORListBox [5]
+    Left = 12
+    Top = 63
+    Width = 401
+    Height = 143
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ExtendedSelect = False
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    OnClick = lbLexClick
+    Caption = 'Problem List'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2'
+  end
+  object bbSearch: TBitBtn [6]
+    Left = 340
+    Top = 27
+    Width = 73
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = '&Search'
+    Constraints.MaxHeight = 21
+    Constraints.MaxWidth = 73
+    TabOrder = 1
+    OnClick = bbSearchClick
+    NumGlyphs = 2
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = bbCan'
+        'Status = stsDefault')
+      (
+        'Component = bbOK'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = ebLex'
+        'Status = stsDefault')
+      (
+        'Component = lbLex'
+        'Status = stsDefault')
+      (
+        'Component = bbSearch'
+        'Status = stsDefault')
+      (
+        'Component = frmPLLex'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbLex.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbLex.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbLex.pas	(revision 1676)
@@ -0,0 +1,222 @@
+unit fProbLex;
+
+interface
+
+uses
+  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, ORFn, uProbs, StdCtrls, Buttons, ExtCtrls, ORctrls, uConst,
+  fAutoSz, uInit, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPLLex = class(TfrmBase508Form)
+    Label1: TLabel;
+    bbCan: TBitBtn;
+    bbOK: TBitBtn;
+    Panel1: TPanel;
+    Bevel1: TBevel;
+    lblstatus: TLabel;
+    ebLex: TCaptionEdit;
+    lbLex: TORListBox;
+    bbSearch: TBitBtn;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure bbOKClick(Sender: TObject);
+    procedure bbCanClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure ebLexKeyPress(Sender: TObject; var Key: Char);
+    procedure bbSearchClick(Sender: TObject);
+    procedure lbLexClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+
+implementation
+
+uses
+ fprobs, rProbs, fProbEdt;
+
+{$R *.DFM}
+
+var
+ ProblemList:TstringList;
+
+const
+  TX_CONTINUE_799 = 'A suitable term was not found based on user input and current defaults.'#13#10 + 
+                    'If you proceed with this nonspecific term, an ICD code of "799.9 - OTHER'#13#10 +
+                    'UNKNOWN AND UNSPECIFIED CAUSE OF MORBIDITY OR MORTALITY" will be filed.'#13#10#13#10 +
+                    'Use ';
+
+procedure TfrmPLLex.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+ ProblemList.free;
+ {frmProblems.lblProbList.Caption := frmProblems.pnlRight.Caption ;}
+ Release;
+end;
+
+procedure TfrmPLLex.bbOKClick(Sender: TObject);
+const
+  TX799 = '799.9';
+var
+  x, y: string;
+  i: integer;
+begin
+  if (ebLex.Text = '') and ((lbLex.itemindex < 0) or (lbLex.Items.Count = 0)) then
+    exit {bail out - nothing selected}
+  else if ((lbLex.itemindex < 0) or (lbLex.Items.Count = 0)) then
+    begin
+      if InfoBox(TX_CONTINUE_799 + UpperCase(ebLex.Text) + '?', 'Unresolved Entry',
+        MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES then Exit;
+      PLProblem:=u + ebLex.Text + u + TX799 + u;
+    end
+  else if (Piece(ProblemList[lbLex.ItemIndex], U, 3) = '') then
+    begin
+      if InfoBox(TX_CONTINUE_799 + UpperCase(lbLex.DisplayText[lbLex.ItemIndex]) + '?', 'Unresolved Entry',
+        MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES then Exit;
+      PLProblem:=u + lbLex.DisplayText[lbLex.ItemIndex] + u + TX799 + u;
+    end
+  else
+    begin
+       x := ProblemList[lbLex.ItemIndex];
+       y := Piece(x, U, 2);
+       i := Pos(' *', y);
+       if i > 0 then y := Copy(y, 1, i - 1);
+       SetPiece(x, U, 2, y);
+       PLProblem := x;
+    end;
+  if (not Application.Terminated) and (not uInit.TimedOut) then   {prevents GPF if system close box is clicked
+                                                                   while frmDlgProbs is visible}
+     if Assigned(frmProblems) then PostMessage(frmProblems.Handle, UM_PLLex, 0, 0)  ;
+ Close;
+end;
+
+procedure TfrmPLLex.bbCanClick(Sender: TObject);
+begin
+ PLProblem:='';
+ close;
+end;
+
+procedure TfrmPLLex.FormCreate(Sender: TObject);
+begin
+  PLProblem := '';
+  ProblemList:=TStringList.create;
+  ResizeAnchoredFormToFont(self);
+  //Resize bevel to center horizontally
+  Bevel1.Width := Panel1.ClientWidth - Bevel1.Left- Bevel1.Left;
+end;
+
+procedure TfrmPLLex.ebLexKeyPress(Sender: TObject; var Key: Char);
+begin
+ if key=#13 then
+  begin
+   bbSearchClick(Sender);
+   Key:=#0;
+  end
+ else
+  begin
+   lblStatus.caption:='';
+   lbLex.Items.clear;
+  end;
+ end;
+
+procedure TfrmPLLex.bbSearchClick(Sender: TObject);
+VAR
+ ALIST:Tstringlist;
+ v,Max, Found:string;
+ onlist: integer;
+procedure SetLexList(v:string);
+var   {too bad ORCombo only allows 1 piece to be shown}
+ i, j: integer;
+ txt, term, code, sys, lin, x: String;
+begin
+ lbLex.Clear;
+ onlist:=-1;
+ for i:=0 to pred(ProblemList.count) do
+  begin
+   txt:=ProblemList[i];
+   Term:=Piece(txt,u,2);
+   code:=Piece(txt,u,3);
+   sys:=Piece(txt,u,5);
+   lin:=Piece(txt,u,1) + u + term + '   ' + sys ;
+   if code<>'' then lin:=lin + ':(' + code + ')';  
+   //lin:=Piece(txt,u,1) + u + term {+ '   ' + sys} ;
+   //{if code<>'' then lin:=lin + ':(' + code + ')';  }
+   j := Pos(' *', Term);
+   if j > 0 then
+     x := UpperCase(Copy(Term, 1, j-1))
+   else
+     x := UpperCase(Term);
+   if (x=V) or (code=V) then onlist:=i;
+   lbLex.Items.add(lin);
+  end;
+ if onlist < 0 then
+   begin  {Search term not in return list, so add it}
+    lbLex.Items.insert(0,(u + V) );
+    ProblemList.insert(0,(u + V + u + u));
+    lbLex.itemIndex:=0;
+   end
+ else
+   begin  {search term is on return list, so highlight it}
+     lbLex.itemIndex:=onlist;
+     ActiveControl := bbOK;
+   end;
+ lbLex.SetFocus;
+end;
+
+begin  {body}
+if ebLex.text='' then
+ begin
+   InfoBox('Enter a term to search for, then click "SEARCH"', 'Information', MB_OK or MB_ICONINFORMATION);
+   exit; {don't bother to drop if no text entered}
+ end ;
+Alist:=TStringList.create;
+try
+ if lblStatus.caption = '' then
+  begin
+   lblStatus.caption := 'Searching Lexicon...';
+   lblStatus.refresh;
+  end;
+ v:=uppercase(ebLex.text);
+ if (v<>'') and (lbLex.itemindex<1) then
+  begin
+   ProblemList.clear;
+   {FastAssign(ProblemLexiconSearch(v), Alist) ;}
+   FastAssign(OldProblemLexiconSearch(v, 100), Alist) ;
+  end;
+ if Alist.count > 0 then
+    begin
+     FastAssign(Alist, lbLex.Items);
+     FastAssign(Alist, ProblemList);
+     Max:=ProblemList[pred(ProblemList.count)]; {get max number found}
+     ProblemList.delete(pred(ProblemList.count)); {shed max# found}
+     SetLexList(V);
+     if onlist < 0 then
+       Found := inttostr(ProblemList.Count -1)
+     else
+       Found := inttostr(ProblemList.Count);
+     lblStatus.caption:='Search returned ' + Found + ' items.' +
+                        ' out of a possible ' + Max;
+     lbLex.Itemindex := 0 ;
+    end
+ else
+    begin
+     lblStatus.caption:='No Entries Found for "' + ebLex.text + '"';
+    end ;
+ finally
+  Alist.free;
+ end;
+end;
+
+procedure TfrmPLLex.lbLexClick(Sender: TObject);
+begin
+ bbOKClick(sender);
+end;
+
+procedure TfrmPLLex.FormShow(Sender: TObject);
+begin
+ ebLex.setfocus;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbs.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbs.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbs.dfm	(revision 1676)
@@ -0,0 +1,766 @@
+inherited frmProblems: TfrmProblems
+  Left = 627
+  Top = 64
+  HelpContext = 2000
+  Caption = 'Problems List Page'
+  ClientHeight = 355
+  ClientWidth = 631
+  HelpFile = 'overvw'
+  Menu = mnuProbs
+  OnDestroy = FormDestroy
+  OnHide = FormHide
+  OnMouseMove = FormMouseMove
+  OnShow = FormShow
+  ExplicitLeft = 627
+  ExplicitTop = 64
+  ExplicitWidth = 639
+  ExplicitHeight = 409
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 350
+    Width = 631
+    Constraints.MinHeight = 5
+    ExplicitTop = 358
+    ExplicitWidth = 631
+  end
+  inherited sptHorz: TSplitter
+    Left = 159
+    Width = 2
+    Height = 350
+    OnMoved = sptHorzMoved
+    ExplicitLeft = 159
+    ExplicitWidth = 2
+    ExplicitHeight = 358
+  end
+  inherited pnlLeft: TPanel
+    Width = 159
+    Height = 350
+    TabStop = True
+    ExplicitWidth = 159
+    ExplicitHeight = 358
+    object pnlButtons: TPanel
+      Left = 0
+      Top = 304
+      Width = 159
+      Height = 46
+      Align = alBottom
+      BevelOuter = bvNone
+      Constraints.MinHeight = 46
+      TabOrder = 3
+      object bbOtherProb: TORAlignButton
+        Left = 0
+        Top = 2
+        Width = 159
+        Height = 22
+        Align = alBottom
+        Caption = 'Other Problem'
+        TabOrder = 0
+        OnClick = bbOtherProbClick
+        OnExit = bbNewProbExit
+        OnMouseMove = FormMouseMove
+      end
+      object bbCancel: TORAlignButton
+        Left = 0
+        Top = 24
+        Width = 159
+        Height = 22
+        Align = alBottom
+        Caption = 'Cancel'
+        TabOrder = 1
+        OnClick = bbCancelClick
+        OnExit = bbNewProbExit
+        OnMouseMove = FormMouseMove
+      end
+    end
+    object pnlView: TPanel
+      Left = 0
+      Top = 0
+      Width = 159
+      Height = 304
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      ExplicitHeight = 312
+      object lblView: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 159
+        Height = 19
+        Align = alTop
+        Caption = 'View options'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object lstView: TORListBox
+        Left = 0
+        Top = 19
+        Width = 159
+        Height = 97
+        Align = alTop
+        ExtendedSelect = False
+        ItemHeight = 13
+        Items.Strings = (
+          'A^Active'
+          'I^Inactive'
+          'B^Both active and inactive'
+          'R^Removed')
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = lstViewClick
+        OnExit = lstViewExit
+        OnMouseMove = FormMouseMove
+        Caption = 'View options'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object bbNewProb: TORAlignButton
+        Tag = 100
+        Left = 0
+        Top = 116
+        Width = 159
+        Height = 24
+        Align = alTop
+        Caption = 'New problem'
+        TabOrder = 1
+        OnClick = lstProbActsClick
+        OnExit = bbNewProbExit
+        OnMouseMove = FormMouseMove
+      end
+    end
+    object pnlProbEnt: TPanel
+      Left = 0
+      Top = 0
+      Width = 159
+      Height = 304
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 2
+      Visible = False
+      OnResize = pnlProbEntResize
+      object lblProbEnt: TLabel
+        Left = 0
+        Top = 270
+        Width = 159
+        Height = 13
+        Align = alBottom
+        AutoSize = False
+        Caption = 'Enter new problem:'
+        ExplicitTop = 278
+      end
+      object edProbEnt: TCaptionEdit
+        Left = 0
+        Top = 283
+        Width = 159
+        Height = 21
+        Align = alBottom
+        TabOrder = 0
+        OnExit = lstViewExit
+        OnKeyPress = edProbEntKeyPress
+        Caption = 'Enter new problem'
+      end
+    end
+    object pnlProbList: TORAutoPanel
+      Left = 0
+      Top = 0
+      Width = 159
+      Height = 304
+      Align = alClient
+      BevelOuter = bvNone
+      Constraints.MinHeight = 90
+      TabOrder = 0
+      ExplicitHeight = 312
+      object sptProbPanel: TSplitter
+        Left = 0
+        Top = 157
+        Width = 159
+        Height = 3
+        Cursor = crVSplit
+        Align = alTop
+      end
+      object pnlProbCats: TPanel
+        Left = 0
+        Top = 0
+        Width = 159
+        Height = 157
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 0
+        object lblProbCats: TLabel
+          Left = 0
+          Top = 0
+          Width = 159
+          Height = 13
+          Align = alTop
+          AutoSize = False
+          Caption = 'Problem categories'
+        end
+        object lstCatPick: TORListBox
+          Left = 0
+          Top = 13
+          Width = 159
+          Height = 144
+          Hint = 'Select problem category'
+          Align = alClient
+          ExtendedSelect = False
+          ItemHeight = 13
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = lstCatPickClick
+          OnExit = lstViewExit
+          OnMouseMove = FormMouseMove
+          Caption = 'Problem categories'
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2'
+        end
+      end
+      object pnlProbs: TPanel
+        Left = 0
+        Top = 160
+        Width = 159
+        Height = 144
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        ExplicitHeight = 152
+        object lblProblems: TLabel
+          Left = 0
+          Top = 0
+          Width = 159
+          Height = 13
+          Align = alTop
+          AutoSize = False
+          Caption = 'Problems'
+          Constraints.MaxHeight = 13
+          Constraints.MinHeight = 13
+        end
+        object lstProbPick: TORListBox
+          Left = 0
+          Top = 13
+          Width = 159
+          Height = 131
+          Hint = 'Select problem to add'
+          Align = alClient
+          Ctl3D = False
+          ExtendedSelect = False
+          ItemHeight = 13
+          ParentCtl3D = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 0
+          OnClick = lstProbPickClick
+          OnDblClick = lstProbPickDblClick
+          Caption = 'Problems'
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2,3'
+          ExplicitHeight = 139
+        end
+      end
+    end
+  end
+  inherited pnlRight: TPanel
+    Left = 161
+    Width = 470
+    Height = 350
+    OnExit = pnlRightExit
+    OnResize = pnlRightResize
+    ExplicitLeft = 161
+    ExplicitWidth = 470
+    ExplicitHeight = 350
+    object lblProbList: TOROffsetLabel
+      Left = 0
+      Top = 0
+      Width = 470
+      Height = 19
+      Align = alTop
+      Caption = 'Active Problems List'
+      HorzOffset = 2
+      Transparent = False
+      VertOffset = 6
+      WordWrap = False
+    end
+    object pnlProbDlg: TPanel
+      Left = 0
+      Top = 36
+      Width = 470
+      Height = 314
+      Align = alClient
+      TabOrder = 0
+      Visible = False
+      OnMouseMove = FormMouseMove
+      ExplicitHeight = 322
+    end
+    object wgProbData: TCaptionListBox
+      Left = 0
+      Top = 36
+      Width = 470
+      Height = 314
+      Style = lbOwnerDrawVariable
+      Align = alClient
+      Color = clCream
+      ItemHeight = 13
+      MultiSelect = True
+      ParentShowHint = False
+      PopupMenu = popProb
+      ShowHint = True
+      TabOrder = 1
+      OnClick = wgProbDataClick
+      OnDblClick = wgProbDataDblClick
+      OnDrawItem = wgProbDataDrawItem
+      OnMeasureItem = wgProbDataMeasureItem
+      OnMouseMove = FormMouseMove
+      Caption = 'Active Problems List'
+    end
+    object HeaderControl: THeaderControl
+      Left = 0
+      Top = 19
+      Width = 470
+      Height = 17
+      Sections = <
+        item
+          ImageIndex = -1
+          Text = 'Column 0'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Stat/Ver'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 20
+          Text = 'Description'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Onset Date'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          MinWidth = 16
+          Text = 'Last Updated'
+          Width = 80
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column 5'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Location'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          Text = 'Provider'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          Text = 'Service'
+          Width = 65
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column 9'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column 10'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column 11'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column12'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column 13'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Column 14'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'Inactive Flag'
+          Width = 0
+        end>
+      OnSectionClick = HeaderControlSectionClick
+      OnSectionResize = HeaderControlSectionResize
+      OnMouseDown = HeaderControlMouseDown
+      OnMouseUp = HeaderControlMouseUp
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlButtons'
+        'Status = stsDefault')
+      (
+        'Component = bbOtherProb'
+        'Status = stsDefault')
+      (
+        'Component = bbCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlView'
+        'Status = stsDefault')
+      (
+        'Component = lstView'
+        'Status = stsDefault')
+      (
+        'Component = bbNewProb'
+        'Status = stsDefault')
+      (
+        'Component = pnlProbEnt'
+        'Status = stsDefault')
+      (
+        'Component = edProbEnt'
+        'Status = stsDefault')
+      (
+        'Component = pnlProbList'
+        'Status = stsDefault')
+      (
+        'Component = pnlProbCats'
+        'Status = stsDefault')
+      (
+        'Component = lstCatPick'
+        'Status = stsDefault')
+      (
+        'Component = pnlProbs'
+        'Status = stsDefault')
+      (
+        'Component = lstProbPick'
+        'Status = stsDefault')
+      (
+        'Component = pnlProbDlg'
+        'Status = stsDefault')
+      (
+        'Component = wgProbData'
+        'Status = stsDefault')
+      (
+        'Component = HeaderControl'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmProblems'
+        'Status = stsDefault'))
+  end
+  object popProb: TPopupMenu
+    Left = 282
+    Top = 313
+    object popChange: TMenuItem
+      Tag = 400
+      Caption = '&Change...'
+      Enabled = False
+      OnClick = lstProbActsClick
+    end
+    object popInactivate: TMenuItem
+      Tag = 200
+      Caption = '&Inactivate'
+      Enabled = False
+      OnClick = lstProbActsClick
+    end
+    object popVerify: TMenuItem
+      Tag = 250
+      Caption = '&Verify...'
+      Enabled = False
+      OnClick = lstProbActsClick
+    end
+    object N36: TMenuItem
+      Caption = '-'
+      Enabled = False
+    end
+    object popAnnotate: TMenuItem
+      Tag = 600
+      Caption = '&Annotate...'
+      Enabled = False
+      OnClick = lstProbActsClick
+    end
+    object N37: TMenuItem
+      Caption = '-'
+      Enabled = False
+      Visible = False
+    end
+    object popRemove: TMenuItem
+      Tag = 500
+      Caption = '&Remove...'
+      Enabled = False
+      OnClick = lstProbActsClick
+    end
+    object popRestore: TMenuItem
+      Tag = 550
+      Caption = 'Re&store'
+      Enabled = False
+      OnClick = lstProbActsClick
+    end
+    object N3: TMenuItem
+      Caption = '-'
+    end
+    object popViewDetails: TMenuItem
+      Tag = 300
+      Caption = 'View Details'
+      OnClick = lstProbActsClick
+    end
+    object mnuOptimizeFields: TMenuItem
+      Caption = 'Adjust Column Size'
+      Visible = False
+      OnClick = mnuOptimizeFieldsClick
+    end
+  end
+  object mnuProbs: TMainMenu
+    Left = 243
+    Top = 313
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewActive: TMenuItem
+        Tag = 700
+        Caption = '&Active Problems'
+        OnClick = lstProbActsClick
+      end
+      object mnuViewInactive: TMenuItem
+        Tag = 800
+        Caption = '&Inactive Problems'
+        OnClick = lstProbActsClick
+      end
+      object mnuViewBoth: TMenuItem
+        Tag = 900
+        Caption = '&Both Active/Inactive Problems'
+        OnClick = lstProbActsClick
+      end
+      object mnuViewRemoved: TMenuItem
+        Tag = 950
+        Caption = '&Removed Problems'
+        OnClick = lstProbActsClick
+      end
+      object mnuViewFilters: TMenuItem
+        Tag = 975
+        Caption = 'Fi&lters...'
+        OnClick = lstProbActsClick
+      end
+      object mnuViewComments: TMenuItem
+        Caption = 'Show &Comments'
+        OnClick = mnuViewCommentsClick
+      end
+      object N2: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewSave: TMenuItem
+        Caption = 'Sa&ve as Default View'
+        OnClick = mnuViewSaveClick
+      end
+      object mnuViewRestoreDefault: TMenuItem
+        Caption = 'Return to De&fault View'
+        OnClick = mnuViewRestoreDefaultClick
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      object mnuActNew: TMenuItem
+        Tag = 100
+        Caption = '&New Problem...'
+        OnClick = lstProbActsClick
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuActChange: TMenuItem
+        Tag = 400
+        Caption = '&Change...'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+      object mnuActInactivate: TMenuItem
+        Tag = 200
+        Caption = '&Inactivate'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+      object mnuActVerify: TMenuItem
+        Tag = 250
+        Caption = '&Verify...'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+      object N1: TMenuItem
+        Caption = '-'
+      end
+      object mnuActAnnotate: TMenuItem
+        Tag = 600
+        Caption = '&Annotate...'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+        Visible = False
+      end
+      object mnuActRemove: TMenuItem
+        Tag = 500
+        Caption = '&Remove'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+      object mnuActRestore: TMenuItem
+        Tag = 550
+        Caption = 'Re&store'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+      object N4: TMenuItem
+        Caption = '-'
+      end
+      object mnuActDetails: TMenuItem
+        Tag = 300
+        Caption = 'View &Details'
+        Enabled = False
+        OnClick = lstProbActsClick
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fProbs.pas	(revision 1676)
@@ -0,0 +1,2082 @@
+unit fProbs;
+{$O-}
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fHSplit, StdCtrls, ExtCtrls, Menus, ORCtrls, Buttons, uProbs,
+  Grids, Vawrgrid, ORfn, uCore, fProbEdt, uConst, ComCtrls,
+  VA508AccessibilityManager, fBase508Form;
+
+type
+  TfrmProblems = class(TfrmHSplit)
+    mnuProbs: TMainMenu;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartCover: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuAct: TMenuItem;
+    mnuActNew: TMenuItem;
+    Z3: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActInactivate: TMenuItem;
+    mnuActRemove: TMenuItem;
+    mnuActVerify: TMenuItem;
+    Z4: TMenuItem;
+    mnuActAnnotate: TMenuItem;
+    Z1: TMenuItem;
+    mnuViewActive: TMenuItem;
+    mnuViewBoth: TMenuItem;
+    popProb: TPopupMenu;
+    popChange: TMenuItem;
+    popInactivate: TMenuItem;
+    popRestore: TMenuItem;
+    popRemove: TMenuItem;
+    popVerify: TMenuItem;
+    N36: TMenuItem;
+    popAnnotate: TMenuItem;
+    N37: TMenuItem;
+    pnlProbList: TORAutoPanel;
+    pnlProbCats: TPanel;
+    lblProbCats: TLabel;
+    lstCatPick: TORListBox;
+    pnlProbEnt: TPanel;
+    pnlProbDlg: TPanel;
+    wgProbData: TCaptionListBox;
+    mnuViewInactive: TMenuItem;
+    mnuViewRemoved: TMenuItem;
+    N1: TMenuItem;
+    mnuActRestore: TMenuItem;
+    mnuViewFilters: TMenuItem;
+    N2: TMenuItem;
+    lblProbList: TOROffsetLabel;
+    pnlView: TPanel;
+    N3: TMenuItem;
+    popViewDetails: TMenuItem;
+    lstView: TORListBox;
+    lblView: TOROffsetLabel;
+    N4: TMenuItem;
+    mnuActDetails: TMenuItem;
+    bbNewProb: TORAlignButton;
+    lblProbEnt: TLabel;
+    mnuViewSave: TMenuItem;
+    mnuViewRestoreDefault: TMenuItem;
+    mnuViewComments: TMenuItem;
+    sptProbPanel: TSplitter;
+    pnlButtons: TPanel;
+    bbOtherProb: TORAlignButton;
+    bbCancel: TORAlignButton;
+    pnlProbs: TPanel;
+    lblProblems: TLabel;
+    lstProbPick: TORListBox;
+    edProbEnt: TCaptionEdit;
+    mnuChartSurgery: TMenuItem;
+    HeaderControl: THeaderControl;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    mnuOptimizeFields: TMenuItem;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure lstProbPickClick(Sender: TObject);
+    procedure lstProbPickDblClick(Sender: TObject);
+    procedure lstCatPickClick(Sender: TObject);
+    procedure lstProbActsClick(Sender: TObject);
+    procedure pnlRightResize(Sender:TObject);
+    procedure pnlProbEntResize(Sender: TObject);
+    procedure wgProbDataClick(Sender: TObject);
+    procedure wgProbDataDblClick(Sender: TObject);
+    procedure edProbEntKeyPress(Sender: TObject; var Key: Char);
+    procedure bbOtherProbClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure bbCancelClick(Sender: TObject);
+    procedure lstViewClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure mnuViewSaveClick(Sender: TObject);
+    procedure mnuViewRestoreDefaultClick(Sender: TObject);
+    procedure mnuViewCommentsClick(Sender: TObject);
+    procedure wgProbDataMeasureItem(Control: TWinControl; Index: Integer;
+      var Height: Integer);
+    procedure wgProbDataDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure HeaderControlSectionResize(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure lstViewExit(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormHide(Sender: TObject);
+    procedure pnlRightExit(Sender: TObject);
+    procedure bbNewProbExit(Sender: TObject);
+    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+    procedure mnuOptimizeFieldsClick(Sender: TObject);
+    procedure HeaderControlSectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure HeaderControlMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure HeaderControlMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    function getTotalSectionsWidth : integer;
+    procedure setSectionWidths;
+    procedure sptHorzMoved(Sender: TObject);
+  private
+    FContextString: string;
+    FFilterString: string;
+    FAllProblems: TStringList;      //Unfiltered list of problems
+    FProblemsVisible: TStringList;  //Parallels FAllProblems.  "Y" for visible
+    FItemData: TStringList;  //Parallels Grid.  String representation of integer indexes into FAllProblems
+    // FProblemsVisible[FItemData[i]] = 'Y'
+    FWarningShown: boolean;
+    FOldFramePnlPatientExit: TNotifyEvent;
+    FMousing: TDateTime;
+    FSilent: boolean;
+    procedure frmFramePnlPatientExit(Sender: TObject);
+    procedure UMCloseProblem(var Message:TMessage); message UM_CLOSEPROBLEM; {pdr}
+    procedure ApplyViewFilters;
+//    procedure UMPLFilter(var Message:TMessage); message UM_PLFILTER; {pdr}
+    procedure UMPLLexicon(var Message:TMessage); message UM_PLLEX; {pdr}
+    procedure GetRowCount;
+    procedure RefreshList;
+    procedure SetGridPieces(Pieces: string);
+    procedure ShowPnlView();
+    function PlainText( MString: string): string;
+    function MString( index: integer): string;
+  public
+    function  AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure LoadProblems;
+    procedure LoadUserCats(AList:Tstringlist);
+    procedure LoadUserProbs(AList:TstringList);
+    procedure AddProblem;
+    procedure EditProblem(const why:char);
+    procedure LoadPatientParams(AList:TstringList);
+    procedure LoadUserParams(Alist:TstringList);
+    procedure UpdateProblem(const why:char;Line: string;AllProblemsIndex:integer);
+    procedure RestoreProblem;
+    procedure LoadPatientProblems(AList:TstringList;const status:char;init:boolean);
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure NoRowSelected;
+    procedure RowSelected;
+    procedure ClearGrid;
+    procedure RequestPrint; override;
+    procedure SetFontSize( NewFontSize: integer); override;
+    function HighlightDuplicate( NewProb: string; const Msg: string;
+      DlgType: TMsgDlgType; Action: string): boolean;
+    property Silent: Boolean read FSilent write FSilent;
+  end;
+
+  function EncounterPresent: Boolean;
+
+const
+  TX_PROV_LOC        = 'A provider and location must be selected before' +  #13#10 +
+                       'entering or making any change to a problem.';
+  TC_PROV_LOC        = 'Incomplete Information';
+  TX_INVALID_PATIENT = 'Problem list is unavailable:  Patient DFN is undefined.';
+  TC_NO_PATIENT      = 'No patient is selected';
+  TX_INACTIVE_CODE_V = 'references an inactive ICD code, and must be updated'  + #13#10 +
+                       'using the ''Change'' option before it can be verified.';
+  TC_INACTIVE_CODE   = 'Inactive Code';
+  TX_INACTIVE_CODE   = 'This problem references an inactive ICD code,' + #13#10 +
+                       'and must be updated using the ''Change'' option.';
+  TX_ADD_REMOVED     = 'Cannot add to the "Removed Problem List"';
+  TC_ADD_REMOVED     = 'Unable to add';
+
+  RPT_PROBLIST  = 21;
+  CT_PROBLEMS   = 2;
+
+  // GridColWidths[i] = 0 for columns that are always hidden
+  // GridColWidths[i] = -1 for one (and only one) adjustable column
+  GridColWidths: Array[0..15] of integer =(0, 5, -1, 9, 9, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0);
+
+  type
+  arOrigSecWidths = array[0..15] of integer;
+
+var
+  frmProblems: TfrmProblems;
+  dlgProbs:TfrmdlgProb;
+  gFontHeight: Integer;
+  gFontWidth: Integer;
+  gFixedWidth: Integer;
+  origWidths: arOrigSecWidths;
+
+implementation
+
+uses fFrame, fProbFlt, fProbLex, rProbs, rcover, fCover, fRptBox,
+     fProbCmt, fEncnt, fReportsPrint, fReports, rPCE, DateUtils, VA2006Utils,
+     VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+function TfrmProblems.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  //if dlgProbs <> nil then Result := dlgProbs.OkToQuit;
+  //if dlgProbs <> nil then dlgProbs.bbQuitClick(Self);
+  //need to check here and set to false if quit was cancelled or true if accepted
+
+  if dlgProbs <> nil then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'Changes to current problem will be discarded.';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 dlgProbs.Silent := True;
+                 dlgProbs.bbQuitClick(Self);
+               end
+             else
+               begin
+                 dlgProbs.bbQuitClick(Self);
+                 Result := dlgProbs.CanQuit;
+               end;
+           end;
+    end;
+
+end;
+
+procedure TfrmProblems.ClearPtData;
+begin
+  inherited ClearPtData;
+  ClearGrid;
+  lblProbList.Caption := '';
+  wgProbData.Caption := lblProbList.Caption;
+  FWarningShown := False;
+end;
+
+procedure TfrmProblems.DisplayPage;
+begin
+  inherited DisplayPage;
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+  frmFrame.mnuFilePrint.Tag := CT_PROBLEMS;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  if InitPatient then
+    begin
+      FWarningShown := False;
+      if PLUser <> nil then
+        begin
+          PLUser.Destroy;
+          PLUser := nil;
+        end;
+      //ClearPtData;
+      ShowPnlView;
+      pnlButtons.SendToBack;
+      pnlButtons.Hide;
+      LoadProblems ;
+    end;
+end;
+
+procedure TfrmProblems.mnuChartTabClick(Sender: TObject);
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+{------------------------ pdr - Problem list gadget event methods ------------}
+procedure TfrmProblems.lstCatPickClick(Sender: TObject);
+var
+  AList:TStringList;
+begin
+  AList:=TStringList.create;
+  try
+    LoadUserProbs(AList);
+  finally
+    AList.free;
+  end;
+end;
+
+procedure TfrmProblems.lstProbActsClick(Sender: TObject);
+var
+  act, i, j: integer;
+  Alist: TstringList;
+  cmt, ProblemIFN, ut, x, line, comments: string ;
+  ProbRec: TProbRec ;
+  ContextString, FilterString: string;
+  FilterChanged: boolean;
+  AllProblemsIndex: integer; 
+begin
+  if PLPt = nil then
+    begin
+      InfoBox(TX_INVALID_PATIENT, TC_NO_PATIENT, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  act := TComponent(Sender).tag ;
+  if act = 0 then exit;
+   // make sure a visit (time & location) is available before creating the problem
+  case act of
+    100: {add new problem}
+      begin
+        if PlUser.usViewAct = 'R' then
+          begin
+            InfoBox(TX_ADD_REMOVED, TC_ADD_REMOVED, MB_ICONINFORMATION or MB_OK);
+            exit;
+          end;
+        if not EncounterPresent then exit;
+        PLProblem := '';
+        AList := TStringList.Create;
+        pProviderID := Encounter.Provider;
+        pProviderName := Encounter.ProviderName ;
+        try
+          if pnlView.Visible then
+            begin
+              pnlView.SendToBack;
+              pnlProbCats.Show;
+              pnlProbCats.BringToFront;
+              pnlButtons.Visible := True;
+              if PLUser.usUseLexicon then
+                begin
+                  lblProbCats.Visible := True;
+                  lstCatPick.Visible  := True;
+                  lblProblems.Visible := True;
+                  lstProbPick.Visible := True;
+                  lstCatPick.Clear ;
+                  LoadUserCats(AList);
+                  bbOtherProb.Visible := True;
+                  pnlProbList.Visible := True;
+                  lstCatPick.TabStop := True;
+                  lstProbPick.TabStop := True;
+                  lstView.TabStop := False;
+                  bbNewProb.TabStop := False;
+                  pnlProbList.BringToFront ;
+                  pnlProbCats.ClientHeight := (pnlProbList.ClientHeight - pnlButtons.ClientHeight) div 2;
+                  pnlProbEnt.Visible  := False;
+                  pnlProbEnt.SendToBack;
+                  if (lstCatPick.Items.Count = 1) then
+                    if Piece(lstCatPick.Items[0], U, 1) = '-1' then
+                      bbOtherProbClick(Self);
+                end
+              else
+                begin
+                  bbOtherProb.Visible := False;
+                  edProbEnt.Visible := True;
+                  lblProbEnt.Visible := True;
+                  pnlProbEnt.Visible  := True;
+                  pnlProbEnt.BringToFront;
+                  pnlProbList.Visible := False;
+                  lstCatPick.TabStop := False;
+                  lstProbPick.TabStop := False;
+                  lstView.TabStop := True;
+                  bbNewProb.TabStop := True;
+                  pnlProbList.SendToBack ;
+                  edProbEnt.text      := '';
+                  if pnlProbEnt.Visible then edProbEnt.SetFocus;
+                end;
+            end
+          else
+            begin
+              if (lstProbPick.itemindex < 0) and (edProbEnt.text = '') then
+                InfoBox('Select a Problem to add from lists' + #13#10 + ' on left or enter a new one ',
+                  'Information', MB_OK or MB_ICONINFORMATION)
+              else
+                begin
+                  AddProblem;
+                  lstProbPick.itemindex := -1;
+                end;
+            end ;
+        finally
+          AList.Free;
+        end;
+      end;
+    200: {Inactivate}
+      begin
+        if PlUser.usViewAct = 'R' then
+          begin
+            InfoBox('Cannot inactivate a problem on the "Removed Problem List"',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            exit;
+          end;
+        if (wgProbData.ItemIndex < 0) or (Piece(MString(wgProbData.itemindex), U, 3) = '') then
+          InfoBox('Select a patient problem from the grid on right',
+            'Information', MB_OK or MB_ICONINFORMATION)
+        else
+          begin
+            if not EncounterPresent then exit;
+            pProviderID := Encounter.Provider;
+            pProviderName := Encounter.ProviderName ;
+            AllProblemsIndex := 0;
+            repeat
+              begin
+                if wgProbData.Selected[AllProblemsIndex] then
+                  begin
+                    Line := FAllProblems[AllProblemsIndex];
+                    if CharAt(Piece(Line, U, 2), 1) = 'A' then
+                      UpdateProblem('I',Line,AllProblemsIndex)
+                    else
+                      InfoBox('Problem "' + Trim(UpperCase(Piece(Piece(Line, U, 3), #13, 1))) + '" is already inactive.',
+                      'Problem not updated', MB_ICONINFORMATION or MB_OK);
+                  end;
+                inc(AllProblemsIndex);
+              end;
+            until AllProblemsIndex >= wgProbData.Count;
+            RefreshList;
+          end;
+        if (PlUser.usViewAct='A') then
+          begin
+            AList := TStringList.Create ;
+            LoadPatientProblems(Alist,'A',False) ;
+            NoRowSelected ;
+          end;
+        RefreshList;
+      end;
+    250: {Verify}
+      begin
+        if not PLuser.usVerifyTranscribed then exit ;
+        if PlUser.usViewAct = 'R' then
+          begin
+            InfoBox('Cannot verify a problem on the "Removed Problem List"',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            exit;
+          end;
+        if (wgProbData.ItemIndex < 0) or (Piece(MString(wgProbData.ItemIndex), U, 3) = '') then
+          InfoBox('Select a patient problem from the grid on right',
+            'Information', MB_OK or MB_ICONINFORMATION)
+        else
+          begin
+            if not EncounterPresent then exit;
+            pProviderID := Encounter.Provider;
+            pProviderName := Encounter.ProviderName ;
+            AllProblemsIndex := 0;
+            repeat
+              begin
+                if wgProbData.Selected[AllProblemsIndex] then
+                  begin
+                    Line := FAllProblems[AllProblemsIndex];
+                    if Pos('#',Piece(Line, U, 2)) > 0 then
+                      InfoBox('Problem "' + Trim(UpperCase(Piece(Piece(Line, U, 3), #13, 1))) + '" ' + #13#10 +
+                      TX_INACTIVE_CODE_V, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK)
+                    else if Pos('(u)',Piece(Line, U, 2)) = 0 then
+                      InfoBox('Problem "' + Trim(UpperCase(Piece(Piece(Line, U, 3), #13, 1))) + '" is already verified.',
+                      'Problem not updated', MB_ICONINFORMATION or MB_OK)
+                    else
+                      UpdateProblem('V',Line,AllProblemsIndex);
+                  end;
+                inc(AllProblemsIndex);
+              end;
+            until AllProblemsIndex >= wgProbData.Count;
+            RefreshList;
+            mnuActVerify.Enabled := False;
+            popVerify.Enabled := False;
+          end;
+      end;
+    300: {detail}
+      with wgProbData do
+        begin
+          if ItemIndex < 0 then
+            InfoBox('Select a problem from the grid for Detail Display',
+              'Information', MB_OK or MB_ICONINFORMATION)
+          else if StrToIntDef(Piece(MString(ItemIndex), U, 1),0)>0 then
+            ReportBox(DetailProblem(StrToInt(Piece(MString(ItemIndex), U, 1))),
+              Piece(Piece(MString(ItemIndex), U, 3), #13, 1), True);
+        end;
+    400: {edit}
+      begin
+        if PlUser.usViewAct = 'R' then
+          begin
+            InfoBox('Cannot select a problem to edit from the "Removed Problem List"',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            exit;
+          end;
+        if wgProbData.ItemIndex < 0 then
+          InfoBox('Select a problem from the grid to Edit', 'Information', MB_OK or MB_ICONINFORMATION)
+        else
+          begin
+            if not EncounterPresent then exit;
+            pProviderID := Encounter.Provider;
+            pProviderName := Encounter.ProviderName ;
+            EditProblem('E');
+          end
+      end;
+    500: {Remove}
+      begin
+        if not PlUser.usPrimeUser then exit ;
+        if PlUser.usViewAct = 'R' then
+          begin
+            InfoBox('Cannot remove from the "Removed Problem List"' +#13#10 + 'Use "Restore Problem"',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            exit;
+          end;
+        if wgProbData.ItemIndex < 0 then
+          InfoBox('Select a problem from the grid to remove', 'Information', MB_OK or MB_ICONINFORMATION)
+        else
+          begin
+            if not EncounterPresent then exit;
+            pProviderID := Encounter.Provider;
+            pProviderName := Encounter.ProviderName ;
+            EditProblem('R');
+          end;
+      end;
+    550: {Restore}
+      begin
+        if not PlUser.usPrimeUser then exit ;
+        if PlUser.usViewAct <> 'R' then
+          begin
+            InfoBox('View the Removed Problems Display, and select a record to restore.',
+              'Information', MB_OK or MB_ICONINFORMATION);
+            exit;
+          end;
+       if wgProbData.ItemIndex < 0 then
+         InfoBox('Select a problem to restore from the grid on right', 'Information', MB_OK or MB_ICONINFORMATION)
+       else
+         begin
+           if not EncounterPresent then exit;
+           pProviderID := Encounter.Provider;
+           pProviderName := Encounter.ProviderName ;
+           RestoreProblem;
+         end;
+      end;
+    600: {Add Comment}
+      begin
+        if PlUser.usViewAct = 'R' then
+          begin
+            InfoBox('Cannot add a comment to a removed problem', 'Information', MB_OK or MB_ICONINFORMATION);
+            exit;
+          end;
+        if wgProbData.ItemIndex < 0 then
+          InfoBox('Select a problem to annotate from the grid on right', 'Information', MB_OK or MB_ICONINFORMATION)
+        else
+          begin
+            if not EncounterPresent then exit;
+            pProviderID := Encounter.Provider;
+            pProviderName := Encounter.ProviderName ;
+            AList := TStringList.Create;
+            ProblemIFN := Piece(MString(wgProbData.ItemIndex), U, 1);
+            FastAssign(EditLoad(ProblemIFN, pProviderID, PLPt.ptVAMC), AList) ;
+            if Alist.count = 0 then
+              begin
+                InfoBox('No Data on Host for problem ' + ProblemIFN, 'Information', MB_OK or MB_ICONINFORMATION);
+                close;
+                exit;
+              end;
+            ProbRec:=TProbRec.Create(Alist); {create a problem object}
+            try
+              ProbRec.PIFN := ProblemIFN;
+              if not IsActiveICDCode(ProbRec.Diagnosis.extern) then
+                begin
+                  InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+                  exit;
+                end ;
+              if ProbRec.CmtIsXHTML then
+                begin
+                  InfoBox(ProbRec.CmtNoEditReason, 'Unable to add new comment', MB_ICONWARNING or MB_OK);
+                  exit;
+                end ;
+              cmt := NewComment ;
+              if (StrToInt(Piece(cmt, U, 1)) > 0) and (Piece(cmt, U, 3) <> '') then
+                begin
+                  ProbRec.AddNewComment(Piece(cmt, U, 3));
+                  ut := '';
+                  If PLUser.usPrimeUser then ut := '1';
+                  FastAssign(EditSave(ProblemIFN,pProviderID,PLPt.ptVAMC,ut,ProbRec.FilerObject), AList) ;
+                  LoadPatientProblems(AList,PlUser.usViewAct[1],true);
+                end ;
+            finally
+              Alist.Free ;
+              ProbRec.Free ;
+            end ;
+          end ;
+      end;
+    700: {Active only}
+      begin
+        Alist := TstringList.create;
+        try
+          PlUser.usViewAct := 'A';
+          LoadPatientProblems(Alist,'A',false);
+          SetPiece(FContextString, ';', 3, 'A');
+          GetRowCount;
+        finally
+          Alist.free;
+        end;
+      end;
+    800: {inactive Only}
+      begin
+        Alist := TstringList.create;
+        try
+          PlUser.usViewAct := 'I';
+          LoadPatientProblems(Alist,'I',false);
+          SetPiece(FContextString, ';', 3, 'I');
+          GetRowCount;
+        finally
+          Alist.free;
+        end;
+      end;
+    900: {all problems display}
+      begin
+        Alist := TstringList.create;
+        try
+          PlUser.usViewAct := 'B';
+          LoadPatientProblems(Alist,'B',false);
+          SetPiece(FContextString, ';', 3, 'B');
+          GetRowCount;
+        finally
+          Alist.free;
+        end;
+      end;
+    950: {Removed Problems Display}
+      begin
+        Alist := TstringList.create;
+        try
+          PlUser.usViewAct := 'R';
+          LoadPatientProblems(Alist,'R',false);
+          SetPiece(FContextString, ';', 3, 'R');
+          GetRowCount;
+        finally
+          Alist.free;
+        end;
+      end;
+    975: {Select viewing filters}
+      begin
+        lstView.ItemIndex := -1;
+        ContextString := '^;;' + PLUser.usViewAct[1] + ';' + PLUser.usViewComments;
+        GetViewFilters(Font.Size, PLFilters, ContextString, FilterString, FilterChanged);
+        if not FilterChanged then exit;
+        FContextString := ContextString;
+        FFilterString := FilterString;
+        if (Piece(ContextString, ';', 3) <> PLUser.usViewAct[1]) then
+          begin
+            AList := TStringList.Create;
+            try
+              PLUser.usViewAct := Piece(ContextString, ';', 3);
+              LoadPatientProblems(Alist, PLUser.usViewAct[1], False);
+            finally
+              AList.Free;
+            end;
+          end;
+        if (Piece(ContextString, ';', 4) <> PLUser.usViewComments) then with FAllProblems do
+          begin
+            for i := 0 to Count - 1 do
+              begin
+                if Objects[i] = nil then continue;
+                x := Piece(Piece(Strings[i], U, 3), #13, 1);
+                if Piece(ContextString, ';', 4) = '1' then
+                  begin
+                    comments := '';
+                    for j := 0 to TStringList(Objects[i]).Count - 1 do
+                      comments := comments + '         ' + TStringList(Objects[i]).Strings[j] + #13#10;
+                      //comments := comments + '   CMT:  ' + TStringList(Items.Objects[i]).Strings[j] + #13#10;
+                    line := Strings[i];
+                    SetPiece(line, U, 3, x + #13#10 + comments);
+                    Strings[i] := line;
+                    mnuViewComments.Checked := True;
+                  end
+                else
+                  begin
+                    line := Strings[i];
+                    SetPiece(line, U, 3, x);
+                    Strings[i] := line;
+                    mnuViewComments.Checked := False;
+                  end;
+              end;
+            RefreshList;
+            PLUser.usViewComments := Piece(ContextString, ';', 4);
+          end;
+        pnlRightResize(Self);
+      end ;
+  end;
+end;
+
+procedure TfrmProblems.lstProbPickClick(Sender: TObject);
+begin
+  if PlUser.usViewAct = 'R' then exit;
+  pProviderID := Encounter.Provider ;
+  AddProblem;
+  TListBox(sender).itemindex := -1;
+end;
+
+procedure TfrmProblems.pnlProbEntResize(Sender: TObject);
+(*var
+  i:integer;*)
+begin
+(*  for i := 0 to pred(twincontrol(sender).controlcount) do
+    begin
+      twincontrol(sender).controls[i].width := twincontrol(sender).width - 4;
+      twincontrol(sender).controls[i].left := 2;
+    end;*)
+end;
+
+procedure TfrmProblems.wgProbDataClick(Sender: TObject);
+var
+  S: string;
+begin
+  pnlRight.font.color := self.font.color;
+  S := MString(wgProbData.ItemIndex);
+  pnlRight.caption := Piece(Piece(S, U , 3), #13, 1);
+  if (Piece(S, U, 1) = '') or
+     (Pos('No data available',  Piece(S, U, 2)) > 0) or
+     (Pos('No problems found.', Piece(S, U, 2)) > 0)
+   then NoRowSelected else RowSelected ;
+end;
+
+procedure TfrmProblems.wgProbDataDblClick(Sender: TObject);
+begin
+  lstProbActsClick(mnuActDetails);
+end;
+
+procedure TfrmProblems.lstProbPickDblClick(Sender: TObject);
+begin
+  if PlUser.usViewAct = 'R' then exit;
+  pProviderID := Encounter.Provider ;
+  AddProblem;
+  TListBox(sender).itemindex := -1;
+end;
+
+procedure TfrmProblems.edProbEntKeyPress(Sender: TObject; var Key: Char);
+begin
+  if key=#13 then lstProbPickDblClick(sender);
+end;
+
+procedure TfrmProblems.bbOtherProbClick(Sender: TObject);
+var
+  frmPLLex: TfrmPLLex;
+begin
+  if not PLUser.usUseLexicon then exit; {don't allow lookup}
+  frmPLLex := TFrmPLLex.create(Application);
+  try
+    frmPLLex.showmodal;
+  finally
+    frmPLLex.Free;
+  end;
+end;
+
+procedure TfrmProblems.UMCloseProblem(var Message:TMessage);
+begin
+  pnlView.BringToFront ;
+  ShowPnlView;
+  bbCancel.Enabled := True ;
+  bbOtherProb.enabled := true; {restore lexicon access}
+  pnlButtons.Visible := False;
+  pnlButtons.SendToBack;
+  pnlProbEnt.Visible :=  (not PLUser.usUseLexicon) ;
+  if PLuser.usViewAct = 'A' then
+    pnlRight.caption := ACTIVE_LIST_CAP
+  else if PLuser.usViewAct = 'I' then
+    pnlRight.caption := INACTIVE_LIST_CAP
+  else if PLuser.usViewAct = 'B' then
+    pnlRight.caption := BOTH_LIST_CAP
+  else if PLuser.usViewAct = 'R' then
+    pnlRight.caption := REMOVED_LIST_CAP
+  else
+    begin
+      PlUser.usViewAct := 'A';
+      pnlRight.caption := ACTIVE_LIST_CAP;
+    end;
+  if dlgProbs <> nil then dlgProbs:=nil;
+end;
+
+//procedure TfrmProblems.UMPLFilter(var Message:TMessage);
+procedure TfrmProblems.ApplyViewFilters;
+var
+  i: integer;
+  wantnulls: boolean;
+begin
+  {the following escape is necessitated by change in default row height which
+   corrupts display of hidden rows in wgProbData. Since the default rowheight
+   is changed with each change in screen size, this gets called once before
+   PLFilters is created}
+  if PLFilters = nil then exit; {not initialized}
+  {show all rows}
+  wantnulls := (PLFilters.ProviderList.indexof('-1') > -1);
+  for i := 0 to pred(FProblemsVisible.count) do FProblemsVisible[i] := 'Y';
+
+  {filter for provider}
+  if PLFilters.ProviderList.Count > 0 then
+    if PLFilters.ProviderList[0] <> '0' then { 0 signifies all }
+      for i := 0 to pred(FAllProblems.count) do
+        if Piece(FAllProblems[i], U, 1) <> '' then {don't want to disappear empty rows}
+          if (PLFilters.ProviderList.indexof(Piece(FAllProblems[i], U, 10)) < 0) or
+             ((Piece(FAllProblems[i], U, 10) = '') and (not wantnulls)) then
+            FProblemsVisible[i] := 'N';
+
+  if PLUser.usCurrentView = PL_UF_VIEW then exit; {Bail out - no filtering by Loc}
+
+  {conditionally filter for clinic(s) - may be multiple selected}
+  if PLUser.usCurrentView = PL_OP_VIEW then
+    begin
+      wantnulls := (PLFilters.ClinicList.indexof('-1') > -1);
+      if PLFilters.ClinicList.Count = 0 then exit;
+      if PLFilters.ClinicList[0] <> '0' then { 0 signifies all }
+        for i := 0 to pred(FAllProblems.count) do
+          if (Piece(FAllProblems[i], U, 1) <> '') and          {don't want to disappear empty rows}
+             (FProblemsVisible[i] = 'Y') then                          {don't want if already filtered}
+            begin
+              if (Piece(FAllProblems[i], U ,11) <> '') and       {clinic not on user list}
+                       (PLFilters.ClinicList.indexof(Piece(FAllProblems[i], U, 11)) < 0) then
+                FProblemsVisible[i] := 'N'
+              else if ((Piece(FAllProblems[i], U, 11) = '') and (not wantnulls)) then {no clinic recorded}
+                FProblemsVisible[i] := 'N';
+            end;
+    end
+  else
+  {conditionally filter for service - may be multiple selected}
+    begin
+      wantnulls := (PLFilters.ServiceList.indexof('-1') > -1);
+      if PLFilters.ServiceList.Count = 0 then exit;
+      if PLFilters.ServiceList[0] <> '0' then { 0 signifies all }
+        for i := 0 to pred(FAllProblems.count) do
+          if (Piece(FAllProblems[i], U, 1) <> '') and        {don't want to disappear empty rows}
+            (FProblemsVisible[i] = 'Y') then                         {don't want if already filtered}
+            begin
+              if (Piece(FAllProblems[i], U, 12) <> '') and              {Service not on user list}
+                      (PLFilters.ServiceList.indexof(Piece(FAllProblems[i], U, 12)) < 0) then
+                FProblemsVisible[i] := 'N'
+              else if (Piece(FAllProblems[i], U, 12) = '') and (not wantnulls) then               {no Service recorded}
+                FProblemsVisible[i] := 'N';
+            end;
+    end;
+end;
+
+procedure TfrmProblems.GetRowCount;
+var
+  ShownProbs, TotalProbs: integer;
+begin
+  if (wgProbData.Items.Count > 0) and (Piece(wgProbData.Items[0], U, 1) <> '') then
+    ShownProbs := wgProbData.Items.Count
+  else
+    ShownProbs := 0;
+
+  if (FAllProblems.Count > 0) and (Piece(FAllProblems[0], U, 1) <> '') then
+    TotalProbs := FAllProblems.Count
+  else
+    TotalProbs := 0;
+    
+  case PLUser.usViewAct[1] of
+    'A': lblProbList.Caption := ACTIVE_LIST_CAP ;
+    'I': lblProbList.Caption := INACTIVE_LIST_CAP ;
+    'B': lblProbList.Caption := BOTH_LIST_CAP ;
+    'R': lblProbList.Caption := REMOVED_LIST_CAP ;
+  end;
+  lblProbList.Caption := lblProbList.Caption + '   (' + IntToStr(ShownProbs) + ' of ' + IntToStr(TotalProbs) + ')';
+  wgProbData.Caption := lblProbList.Caption;
+end;
+
+
+procedure TfrmProblems.UMPLLexicon(var Message:TMessage);
+begin
+  if PLProblem = '' then exit; {shouldn't happen but...}
+  if dlgProbs = nil then AddProblem;
+end;
+
+procedure TfrmProblems.SetGridPieces( Pieces: string);
+var
+  i, AdjustCol, cxUsed: Integer;
+  PieceSet: set of 0..High(GridColWidths);
+  x: string;
+begin
+  PieceSet := [];
+  x := Pieces;
+  while x <> '' do begin
+    PieceSet := PieceSet + [StrToIntDef(Piece(x, ',', 1), 1)-1];
+    if Pos(',', x) = 0 then
+      break;
+    x := Copy(x, Pos(',',x)+1, Length(x));
+  end;
+  AdjustCol := 0;
+  cxUsed := 0;
+  for i := 0 to High(GridColWidths) do
+    if i in PieceSet then
+    begin
+      if GridColWidths[i] > -1 then
+      begin
+        if GridColWidths[i] > 0 then
+        begin
+          HeaderControl.Sections[i].MaxWidth := 10000;
+          HeaderControl.Sections[i].Width := ForChars(GridColWidths[i], gFontWidth);
+          cxUsed := cxUsed + HeaderControl.Sections[i].Width;
+        end
+        else
+        begin
+          HeaderControl.Sections[i].Width := 0;
+          HeaderControl.Sections[i].MaxWidth := 0;
+        end;
+      end
+      else
+        AdjustCol := i;
+    end
+    else
+    begin
+      HeaderControl.Sections[i].Width := 0;
+      HeaderControl.Sections[i].MaxWidth := 0;
+    end;
+  HeaderControl.Sections[AdjustCol].AutoSize := True;
+  HeaderControl.Sections[AdjustCol].Width := HeaderControl.Width - cxUsed;
+  //mnuOptimizeFieldsClick(self);       //******** test making compression, proportional, or no spacing on resize
+end;
+
+procedure TfrmProblems.pnlRightResize(Sender: TObject);
+begin
+  if PLUser = nil then exit;
+  if PLUser.usCurrentView = PL_IP_VIEW then
+    SetGridPieces('2,3,4,5,8,9')
+  else if PLUser.usCurrentView = PL_OP_VIEW then
+    SetGridPieces('2,3,4,5,7');
+  {have to do this to recover hidden rows}
+  ApplyViewFilters;
+  RefreshList;
+  GetRowCount;
+  //PostMessage(frmProblems.Handle, UM_PLFILTER,0,0);
+end;
+
+procedure TfrmProblems.FormCreate(Sender: TObject);
+begin
+  inherited;
+  FixHeaderControlDelphi2006Bug(HeaderControl);
+  FAllProblems := TStringList.Create;
+  FProblemsVisible := TStringList.Create;
+  FItemData := TStringList.Create;
+  PageID := CT_PROBLEMS;
+  GetFontInfo(Canvas.Handle, gFontWidth, gFontHeight);
+end;
+
+procedure TfrmProblems.LoadUserParams(Alist:TstringList);
+var
+  i: integer;
+begin
+  FastAssign(InitUser(User.DUZ), AList) ;
+  //FastAssign(InitUser(Encounter.Provider), AList) ;
+  PLUser := TPLUserParams.create(Alist);
+  FContextString := PLUser.usDefaultContext;
+  FFilterString :=  PLUser.usDefaultView + '/';
+  if PLFilters <> nil then
+    begin
+      if PLUser.usDefaultView = 'C' then with PLFilters.ClinicList do
+          for i := 0 to Count - 1 do
+            if Piece(Strings[i], U, 1) <> '-1' then
+              FFilterString := FFilterString + Piece(Strings[i], U, 1) + '/';
+      if PLUser.usDefaultView = 'S' then with PLFilters.ServiceList do
+          for i := 0 to Count - 1 do
+            if Piece(Strings[i], U, 1) <> '-1' then
+              FFilterString := FFilterString + Piece(Strings[i], U, 1) + '/';
+    end;
+  mnuViewComments.Checked := (PLUser.usViewComments = '1');
+  if PLUser.usTesting then
+    InfoBox('WARNING - Test User Parameters in Effect', 'Warning', MB_OK or MB_ICONWARNING);
+  pnlRightResize(Self);
+end;
+
+procedure TfrmProblems.LoadPatientParams(AList:TstringList);
+begin
+  FastAssign(InitPt(Patient.DFN), AList) ;
+  PLPt := TPLPt.create(Alist);
+end;
+
+procedure TfrmProblems.ClearGrid;
+var
+  i:integer;
+begin
+  with FAllProblems do for i := 0 to Count - 1 do
+    if Objects[i] <> nil then
+      begin
+        TStringList(Objects[i]).Free;
+        Objects[i] := nil;
+      end;
+  wgprobdata.Clear;
+  FAllProblems.Clear;
+  FProblemsVisible.Clear;
+end;
+
+
+procedure TfrmProblems.LoadPatientProblems(AList:TStringList; const Status:char; init:boolean);
+var {init should only be true when initializing a list for a new patient}
+  x, line, ver, prio, comments: string;
+  i, j, inact: Integer;
+  st: char;
+  CmtList: TStringList;
+  //SCCond, tmpSCstr: string;
+
+  procedure ReverseList(Alist:TstringList);
+  var
+    i,j:integer;
+  begin
+    i:=0;
+    j:=pred(Alist.count);
+    while i<j do
+      begin
+        alist.exchange(i,j);
+        inc(i);
+        dec(j);
+      end;
+  end;
+
+begin  {Body}
+  CmtList := TStringList.Create;
+  if PLFilters=nil then {create view filter lists}
+    PLFilters:=TPLFilters.create;
+  try
+    ClearGrid;
+    inact := 0;
+    if PLPt = nil then
+      begin
+        InfoBox(TX_INVALID_PATIENT, TC_NO_PATIENT, MB_OK or MB_ICONWARNING);
+        AList.Clear;
+        AList.Add('No data available');
+      end
+    else
+      begin
+        st:=status;
+        if st= '' then st := 'A'; {default to active list}
+        FastAssign(ProblemList(Patient.DFN,St), AList) ;
+      end;
+    if Status = 'R' then
+      SetGridPieces('3,4,5,7,8,9')
+    else
+      SetGridPieces('2,3,4,5,7,8,9');
+    if Alist.count > 1 then Alist.delete(0); {get rid of first element - it is a list count}
+    SortByPiece(AList, u, 6); { Sort by FM date/time }
+    SetListFMDateTime('MMM dd yyyy',AList, u, 6);      { Change FM date to MM/DD/YY  }
+    SetListFMDateTime('MMM dd yyyy',AList, u, 5);      { Change FM date to MM/DD/YY  }
+    if PLUser.usReverseChronDisplay then {reverse chron order if required}
+      ReverseList(Alist);
+    {populate the grid}
+    if ((Alist.Count = 1) and (pos('No data available', Alist[0]) > 0))then
+      begin
+        FAllProblems.Add('^^No problems found.');
+        FProblemsVisible.Add('Y');
+        RefreshList;
+        Alist.Clear ;
+        NoRowSelected;
+        exit ;
+      end ;
+    for i := 0 to pred(Alist.count) do
+    begin
+      FAllProblems.Add('');
+      FProblemsVisible.Add('Y');
+      comments := '';
+      CmtList.Clear;
+      x := AList[i];
+      if (Piece(x, U, 18) = '#') and (CharAt(UpperCase(Status), 1) in ['A', 'B', 'I', 'R']) then
+        begin
+          ver := '#';      // inactive ICD code flag takes precedence over unverified flag
+          if (Piece(x, U, 2) = 'A') then inact := inact + 1;
+        end
+      else if (PlUSer.usVerifyTranscribed) and
+              (Piece(x, U, 9) = 'T') then
+        ver := '(u)'
+      else
+        ver := '   ';
+      if Piece(x, U, 14) = 'A' then prio   := ' * ' else prio   := '   ' ;
+      Line := '';
+      SetPiece(Line, U, 2, Piece(x, U, 2) + prio + ver);
+      if Piece(x, U, 15) = '1' then  //problem has comments
+        begin
+          FastAssign(GetProblemComments(Piece(x, U, 1)), CmtList);
+          if FAllProblems.Objects[i] = nil then FAllProblems.Objects[i]:= TStringList.Create;
+          FastAssign(CmtList, TStringList(FAllProblems.Objects[i]));
+        end;
+
+      SetPiece(Line, U, 3, Piece(x, U, 3));
+      if PLUser.usViewComments = '1' then
+        begin
+          for j := 0 to CmtList.Count-1 do
+            comments := comments + '         ' + CmtList.Strings[j] + #13#10;
+          SetPiece(Line, U, 3, Piece(Line, U, 3) + #13#10 + comments);
+        end;
+      SetPiece(Line, U, 4, Trim(Piece(x, U, 5)));                        {onset date}
+      SetPiece(Line, U, 5, Trim(Piece(x, U, 6)));                        {last updated}
+      SetPiece(Line, U, 7, MixedCase(Piece(Piece(x, U, 10), ';', 2)));   {location name}
+      SetPiece(Line, U, 8, MixedCase(Piece(Piece(x, U, 12), ';', 2)));   {provider name}
+      SetPiece(Line, U, 9, MixedCase(Piece(Piece(x, U, 13), ';', 2)));   {service name}
+      {hidden cells}
+      SetPiece(Line, U, 1, Piece(x, U, 1));                              {problem IEN}
+      SetPiece(Line, U, 6, Piece(x, U, 7));                              {service connected status}
+      SetPiece(Line, U, 11, Piece(Piece(x, U, 10), ';', 1));              {location IEN}
+      SetPiece(Line, U, 13, Piece(x, U, 11));                             {loc type}
+      SetPiece(Line, U, 10, Piece(Piece(x, U, 12), ';', 1));              {responsible provider IEN}
+      SetPiece(Line, U, 12, Piece(Piece(x, U, 13), ';', 1));              {service IEN}
+      SetPiece(Line, U, 14, Piece(x, U, 4));                              {code}
+      SetPiece(Line, U, 15, Piece(x, U, 17));                             {Service-connected conditions}
+      SetPiece(Line, U, 16, Piece(x, U, 18));                             {# = inactive ICD code stored with problem}
+      FAllProblems[i] := Line;
+    end;
+    Alist.clear;
+    if not init then
+      SetViewFilters(Alist)
+    else
+      InitViewFilters(Alist);
+    ApplyViewFilters;
+    RefreshList;
+    lstProbPick.ItemIndex := -1;
+    if (ProbRec <> nil) and (ProbRec.PIFN <> '') then
+      begin
+        for i := 0 to wgProbData.Items.count-1 do
+          if (Piece(MString(i), U, 1) = ProbRec.PIFN) then
+             wgProbData.ItemIndex := i ;
+        wgProbDataClick(Self);
+      end
+    else
+      wgProbData.ItemIndex := -1;
+    if (wgProbData.Items.Count > 0) and (wgProbData.ItemIndex > -1) then
+      RowSelected
+    else
+      NoRowSelected;
+    pnlRightResize(Self);
+    if (not FWarningShown) and (inact > 0) and (CharAt(UpperCase(Status), 1) in ['A', 'B']) then
+      begin
+       InfoBox('There are ' + IntToStr(inact) + ' active problem(s) flagged with a "#" as having' + #13#10 +
+               'inactive ICD codes as of today''s date.  Please correct these' + #13#10 +
+               'problems using the "Change" option.', 'Inactive ICD Codes Found', MB_ICONWARNING or MB_OK);
+       FWarningShown := True;
+      end;
+  finally
+    CmtList.Free;
+  end;
+end;
+
+procedure TfrmProblems.LoadUserCats(AList:TStringList);
+begin
+  if not PLUser.usUseLexicon then exit; {Bail out if not to use lexicon}
+  Alist.clear;
+  FastAssign(UserProblemCategories(Encounter.Provider,Encounter.Location), AList) ;
+  if Alist.count = 0 then
+    begin
+      lstCatPick.Items.Add('-1^None defined - use OTHER') ;
+      lstProbPick.Visible := False ;
+      lblProblems.Visible := False ;
+      exit ;
+    end ;
+  FastAssign(AList, lstCatPick.Items);
+  lstCatPick.itemindex := 0;
+  lstCatPickClick(frmProblems);
+end;
+
+procedure TfrmProblems.LoadUserProbs(AList:TStringList);
+var
+  catien: string;
+begin
+  if not PLUser.usUseLexicon then exit; {Bail out if not to use lexicon}
+  if lstCatPick.itemindex < 0 then exit; {bail out}
+  Alist.clear;
+  catien := IntToStr(lstCatPick.itemIEN);
+  FastAssign(UserProblemList(catien), AList) ;
+  {File 125.12, Each line contains: PROBLEM^DISPLAY TEXT^CODE^CODE IFN }
+  {code ifn is derived}
+  FastAssign(Alist, lstProbPick.Items);
+end;
+
+procedure TfrmProblems.LoadProblems;
+var
+  AList: TStringList;
+  i: integer;
+begin
+  pProviderID := 0;
+  AList := TStringList.Create;
+  try
+    lstView.ItemIndex := -1;
+    StatusText('Retrieving problem list...') ;
+    if (PLUser = nil) or InitPatient then LoadUserParams(Alist);
+    Alist.clear;
+    if Patient.DFN <> '' then LoadPatientParams(Alist);
+    Alist.clear;
+    LoadPatientProblems(AList,PlUser.usViewAct[1],true); {initialize patient list}
+    lstView.ItemIndex := -1;
+    AList.clear;
+    lstCatPick.Clear ;
+    LoadUserCats(AList);
+    {SET APPLICATION DEFAULTS}
+    if (not PLUser.usPrimeUser) then
+      begin {activities available to GMPLUSER only}
+        mnuActRestore.enabled := False;
+        mnuActRemove.enabled:=false;
+        mnuViewRemoved.Enabled := False;
+        popRemove.enabled:=false;
+        popRestore.enabled := False;
+        i := lstView.Items.IndexOf('Removed');
+        if i > -1 then lstView.Items.Delete(i);
+        mnuActVerify.enabled:=false;
+        popVerify.enabled:=false;
+      end;
+    if (not PLUser.usVerifyTranscribed) then
+      begin
+        mnuActVerify.enabled:=false;
+        popVerify.enabled:=false;
+      end;
+  finally
+    AList.Free;
+    StatusText('') ;
+  end;
+end;
+
+function TfrmProblems.HighlightDuplicate( NewProb: string; const Msg: string;
+  DlgType: TMsgDlgType; Action: string): boolean;
+var
+  dup: string;
+  cmplist: TstringList;
+  cmpp, i: integer;
+  collapserow: boolean;
+begin
+  Result := False;
+  if Piece(newprob, U, 1) = '' then
+    dup := CheckForDuplicateProblem('1', Piece(newprob, U, 2))
+  else
+    dup := CheckForDuplicateProblem(Piece(newprob,U,1), Piece(newprob, U, 2));
+
+  if (Piece(dup, U, 1) <> '0') then
+    // if adding, check all existing problems for duplicates
+    // if changing, exclude curent problem from duplicate check
+    if (Action = 'ADD') or ((Action = 'CHANGE') and (Piece(dup, U, 1) <> ProbRec.PIFN)) then
+      begin
+        if (Piece(dup, U, 2) <> PLUser.usViewAct) and (PLUser.usViewAct <> 'B') then
+          begin
+            lstView.SelectByID(Piece(dup, U, 2));
+            lstViewClick(Self);
+          end;
+        cmplist:=Tstringlist.create;
+        try {find and highlight duplicate problem - match problem text minus trailing '*'}
+          for i := 0 to FAllProblems.Count - 1 do
+            cmpList.Add(TrimRight(Piece(Piece(Piece(FAllProblems[i], U, 3), #13, 1), '*', 1)));
+          cmpp:=cmpList.indexof(TrimRight(Piece(Piece(newprob, U, 2), '*', 1)));
+        finally
+          cmplist.free;
+        end;
+        if cmpp > -1 then
+          begin
+            collapserow:= (FProblemsVisible[cmpp] <> 'Y');
+            if CollapseRow then
+              wgProbData.Items.Insert(0, FAllProblems[cmpp]);
+            //translate from FAllProblems index to wgProbData index
+            for i := 0 to wgProbData.Items.Count - 1 do
+            begin
+              if StrToInt(FItemData[i]) = cmpp then with wgProbData do
+              begin
+                TopIndex := i;
+                ItemIndex := i;
+                Selected[i] := True;
+                break;
+              end;
+            end;
+            case DlgType of
+              mtInformation:
+                InfoBox(Msg, 'Information', MB_OK or MB_ICONINFORMATION);
+              mtConfirmation:
+                Result := InfoBox(Msg, 'Confirmation', MB_YESNO or MB_ICONQUESTION) <> IDYES;
+            end;
+            if collapserow then wgProbData.Items.Delete(0);
+          end;
+      end;
+end;
+
+procedure TfrmProblems.AddProblem;
+const
+  TX799 = '799.9';
+var
+  newprob: string;
+begin
+  if (PLPt.ptDead<>'') then {Check for dead patient}
+    if InfoBox('This Patient has been deceased since ' + PLPt.ptDead + #13#10 +
+    '        Proceed with problem addition?', 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDNO then
+      exit; {bail out - if don't want to add to dead}
+  {problems are in the form of: ien^.01^icd^icdifn , although only the .01 is required}
+  if PLProblem <> '' then
+    begin
+      newProb:=PLProblem;
+      PLProblem:='';
+    end
+  else if edProbEnt.text<>'' then
+    begin
+      newprob:= u + edProbEnt.text + u + TX799 + u; {free text problem entry from editbox}
+      edProbEnt.Visible := False;
+      lblProbEnt.Visible := False;
+      edProbEnt.Text := '';
+    end
+  else if lstProbPick.itemindex > -1 then {problem selected from user list}
+    {Each line contains: PROBLEM^DISPLAY TEXT^CODE^CODE IFN }
+    newprob:=lstProbPick.Items[lstProbPick.itemindex];
+  if NewProb='' then exit; {should never happen}
+  bbCancel.Enabled := False ;
+  bbOtherProb.enabled:=false; {don't let them invoke lexicon till add completed}
+
+  //  =============  new duplicate checking code  ===================
+  if HighlightDuplicate(NewProb, 'This problem is a duplicate of the highlighted problem'
+                 + #13#10 + '        Proceed?', mtConfirmation, 'ADD') then
+  begin
+    bbCancel.Enabled := True ;
+    bbOtherProb.enabled:=true; {don't let them invoke lexicon till add completed}
+    exit; {bail out - if don't want dups}
+  end ;
+//============================== End new code =========================
+  if ProbRec = nil then
+    begin
+      pnlRight.Caption := lblProbList.caption ;
+      lblProbList.caption:='Add Problem';
+      wgProbData.Caption := lblProbList.Caption;
+      pnlProbDlg.Visible := True;
+      pnlProbDlg.BringToFront ;
+      dlgProbs:=TFrmDlgProb.create(pnlProbDlg);
+      dlgProbs.HorzScrollBar.Range := dlgProbs.ClientWidth;
+      dlgProbs.VertScrollBar.Range := dlgProbs.ClientHeight;
+      dlgProbs.parent:=pnlProbDlg;
+      dlgProbs.Align := alClient ;
+      dlgProbs.Reason:='A';
+      dlgProbs.SubjProb:=newprob;
+      dlgProbs.show;
+      PostMessage(dlgProbs.Handle, UM_TAKEFOCUS, 0, 0);
+    end
+  else
+    InfoBox('Current Add/Edit/Display activity must be completed' + #13#10 +
+      'before another record may be added',
+      'Information', MB_OK or MB_ICONINFORMATION);
+end;
+
+procedure TfrmProblems.EditProblem(const why: char);
+var
+  prob: string;
+  reas: string;
+begin
+  prob := Piece(MString(wgProbData.ItemIndex), U, 1);
+  if (prob <> '') and (ProbRec = nil) then
+    begin
+      StatusText('Retrieving selected problem...') ;
+      bbCancel.Enabled := False ;
+      bbOtherProb.enabled := false; {don't let them invoke lexicon till edit completed}
+      case why of
+        'E','e','C','c' : reas := 'Edit Problem';
+        'D','d'         : reas := 'Display Problem';
+        'R','r'         : reas := 'Remove Problem';
+      end;
+      pnlRight.Caption   := lblProbList.caption ;
+      lblProbList.caption     := reas;
+      wgProbData.Caption := lblProbList.Caption;
+      pnlProbDlg.Visible := True;
+      pnlProbDlg.BringToFront ;
+      dlgProbs           := TFrmDlgProb.create(pnlProbDlg);
+      dlgProbs.HorzScrollBar.Range := dlgProbs.ClientWidth;
+      dlgProbs.VertScrollBar.Range := dlgProbs.ClientHeight;
+      dlgProbs.parent    := pnlProbDlg;
+      dlgProbs.Align     := alClient ;
+      dlgProbs.Reason    := why;
+      with wgProbData do dlgProbs.subjProb:=prob + u + Piece(Piece(MString(itemindex), U, 3), #13, 1) + u + Piece(MString(itemindex), U, 14);
+      StatusText('') ;
+      dlgProbs.Show;
+      PostMessage(dlgProbs.Handle, UM_TAKEFOCUS, 0, 0);
+    end
+  else
+    begin
+      case why of
+        'E','e','C','c' : reas := 'Edited';
+        'D','d'         : reas := 'Displayed';
+        'R','r'         : reas := 'Removed';
+      end;
+      InfoBox('Current Add/Edit/Display activity must be completed' + #13#10 +
+        'before another record may be ' + reas,
+        'Information', MB_OK or MB_ICONINFORMATION);
+    end;
+end;
+
+procedure TfrmProblems.UpdateProblem(const why:char; Line: string; AllProblemsIndex: integer);
+var
+  Alist: TstringList;
+  ProblemIFN: string;
+  sv: string;
+  i: integer;
+
+begin
+  alist := TstringList.create;
+  try
+    problemIFN := Piece(Line, U, 1);
+    {get the basic info - could shortcut, but try this for now}
+    FastAssign(EditLoad(ProblemIFN, pProviderID, PLPt.ptVAMC), AList) ;
+    probRec := TProbrec.create(Alist);
+    probRec.PIFN := problemIFN;
+    ProbRec.RespProvider.DHCPtoKeyVal(inttostr(Encounter.Provider) + u + Encounter.ProviderName);   {REV - V13}
+    Alist.clear;
+    case why of
+      'I': begin
+             ProbRec.status := 'I';
+             {assume resolution date now with this option. user should do full edit otherwise}
+             ProbRec.DateResStr := 'T';
+             Probrec.DateModStr := 'T';
+             FastAssign(ProblemUpdate(ProbRec.AltFilerObject), AList) ;
+           end;
+      'V': begin
+            if not IsActiveICDCode(ProbRec.Diagnosis.extern) then
+              begin
+                InfoBox(TX_INACTIVE_CODE, TC_INACTIVE_CODE, MB_ICONWARNING or MB_OK);
+                exit;
+              end;
+             Probrec.condition := 'P';
+             Probrec.DateModStr := 'T';
+             FastAssign(ProblemVerify(ProbRec.PIFN), AList) ;
+           end;
+    end;
+
+    if Alist.count<1 then {show error message}
+      InfoBox('Unable to update record ', 'Information', MB_OK or MB_ICONINFORMATION)
+    else if Alist[0]<'1' then
+      InfoBox('Unable to update record: ' + #13#10 + ' ' + Alist[1] + ' (' + Probrec.PIFN + ')',
+        'Information', MB_OK or MB_ICONINFORMATION)
+    {show inactivated problem}
+    else if (why='I') then
+      begin
+        if (PlUser.usViewAct='A') then
+          FProblemsVisible[AllProblemsIndex] := 'N'
+        else
+        begin
+          SetPiece(line, U, 2, 'I');
+          FAllProblems[AllProblemsIndex] := line;
+        end;
+      end
+    else if (why='V') then {show verified problem}
+      begin
+        sv := Piece(Line, U, 2);
+        SetPiece(line, U, 2, Copy(sv,1,4)); //remove (u)
+        FAllProblems[AllProblemsIndex] := line;
+      end;
+  finally
+    with frmCover do
+      for i := ComponentCount - 1 downto 0 do
+        begin
+          if Components[i] is TORListBox then
+            begin
+              case Components[i].Tag of
+                10: ListActiveProblems((Components[i] as TORListBox).Items);
+              end;
+            end;
+        end;
+    alist.free;
+    ProbRec.free;
+    ProbRec := nil;
+  end;
+end;
+
+procedure TfrmProblems.RestoreProblem;
+const
+  TC_RESTORE_EDIT = 'Unable to restore';
+  TX_RESTORE_EDIT = 'This problem references an inactive ICD code,' + #13#10 +
+                    'and must be updated using the ''Change'' option' + #13#10 +
+                    'before it can be restored.' + #13#10 + #13#10 +
+                    'Would you like to edit this problem?';
+var
+  Alist:TstringList;
+  i: integer;
+  AProbRec: TProbRec;
+  ProblemIFN: string;
+begin
+  Alist := TStringList.create;
+  ProblemIFN := Piece(MString(wgProbData.ItemIndex), U, 1);
+  FastAssign(EditLoad(ProblemIFN, pProviderID, PLPt.ptVAMC), AList) ;
+  AProbRec:=TProbRec.Create(Alist); {create a problem object}
+  try
+    if not IsActiveICDCode(AProbRec.Diagnosis.extern) then
+      begin
+        if InfoBox(TX_RESTORE_EDIT, TC_RESTORE_EDIT, MB_YESNO or MB_ICONWARNING) = IDYES then
+        begin
+          AProbRec.Status := 'A';
+          EditProblem('C');
+        end
+        else
+          Exit;
+      end
+    else
+      begin
+        FastAssign(ProblemReplace(ProblemIFN), Alist) ;
+        if Alist[0] <> '1' then
+          InfoBox('Unable to restore the problem record: ' + #13#10 + ' (' + AProbrec.PIFN + ')',
+            'Information', MB_OK or MB_ICONINFORMATION)
+        else
+          LoadPatientProblems(AList, 'R', False);
+        GetRowCount;
+      end;
+  finally
+    with frmCover do
+      for i := ComponentCount - 1 downto 0 do
+        begin
+          if Components[i] is TORListBox then
+            begin
+              case Components[i].Tag of
+                10: ListActiveProblems((Components[i] as TORListBox).Items);
+              end;
+            end;
+        end;
+    AList.free;
+    AProbRec.Free;
+  end;
+end;
+
+procedure TfrmProblems.NoRowSelected;
+begin
+  mnuActDetails.enabled    := false;
+  mnuActChange.enabled     := false;
+  mnuActVerify.enabled     := false;
+  mnuActInactivate.enabled := false;
+  mnuActRestore.enabled    := false;
+  mnuActRemove.enabled     := false;
+  mnuActAnnotate.enabled   := false;
+  popChange.enabled        := false;
+  popVerify.enabled        := false;
+  popInactivate.enabled    := false;
+  popRestore.enabled       := false;
+  popRemove.enabled        := false;
+  popAnnotate.enabled      := false;
+  popViewDetails.enabled   := False;
+end ;
+
+procedure TfrmProblems.RowSelected;
+var
+ AnyUnver, AnyAct: integer;
+ i: integer;
+begin
+  if wgProbData.SelCount > 1 then
+    begin
+      mnuActDetails.enabled    := false;
+      mnuActChange.enabled     := false;
+      mnuActRestore.enabled    := false;
+      mnuActRemove.enabled     := false;
+      mnuActAnnotate.enabled   := false;
+      popChange.enabled        := false;
+      popRestore.enabled       := false;
+      popRemove.enabled        := false;
+      popAnnotate.enabled      := false;
+      popViewDetails.enabled   := false;
+      AnyUnver := 0;
+      AnyAct := 0;
+      for i := 0 to wgProbData.Count - 1 do
+       begin
+        if wgProbData.Selected[i] and (Copy(Piece(MString(i), U, 2),5,3)='(u)') then
+          AnyUnver := AnyUnVer + 1;
+        if wgProbData.Selected[i] and (Copy(Piece(MString(i), U, 2),1,1) = 'A') then
+          AnyAct := AnyAct + 1;
+       end;
+      mnuActVerify.enabled     := PLUser.usVerifyTranscribed and
+                                  PLUser.usPrimeUser and (AnyUnver > 0);
+      popVerify.enabled        := PLUser.usVerifyTranscribed and
+                                  PLUser.usPrimeUser and (AnyUnver > 0);
+      mnuActInactivate.enabled := (AnyAct > 0);
+      popInactivate.enabled    := (AnyAct > 0);
+    end
+  else
+    begin
+      mnuActDetails.enabled    := true;
+      mnuActChange.enabled     := true;
+      mnuActRestore.enabled    := PLUser.usPrimeUser;
+      mnuActRemove.enabled     := PLUser.usPrimeUser;
+      mnuActAnnotate.enabled   := true;
+      popChange.enabled        := true;
+      popRestore.enabled       := PLUser.usPrimeUser;
+      popRemove.enabled        := PLUser.usPrimeUser;
+      popAnnotate.enabled      := true;
+      popViewDetails.enabled   := true ;
+      mnuActVerify.enabled     := PLUser.usVerifyTranscribed and
+                                  PLUser.usPrimeUser and
+                                  (Copy(Piece(MString(wgProbData.ItemIndex), U, 2),5,3)='(u)') ;
+      popVerify.enabled        := PLUser.usVerifyTranscribed and
+                                  PLUser.usPrimeUser and
+                                  (Copy(Piece(MString(wgProbData.ItemIndex), U, 2),5,3)='(u)') ;
+      mnuActInactivate.enabled := Copy(Piece(MString(wgProbData.ItemIndex), U, 2),1,1) = 'A' ;
+      popInactivate.enabled    := Copy(Piece(MString(wgProbData.ItemIndex), U, 2),1,1) = 'A' ;
+    end;
+
+  //Disable menu actions for REMOVED problems list display
+  if PLUser.usViewAct = 'R' then
+    begin
+      mnuActAnnotate.Enabled   := False;
+      mnuActChange.Enabled     := False;
+      mnuActInactivate.Enabled := False;
+      mnuActRemove.Enabled     := False;
+      mnuActVerify.Enabled     := False;
+      popAnnotate.Enabled      := False;
+      popChange.Enabled        := False;
+      popInactivate.Enabled    := False;
+      popRemove.Enabled        := False;
+      popVerify.Enabled        := False;
+    end;
+end ;
+
+procedure TfrmProblems.bbCancelClick(Sender: TObject);
+begin
+  inherited;
+  //Hide Panels
+  pnlButtons.Hide;
+  pnlButtons.SendToBack;
+  pnlProbCats.Hide;
+  pnlProbCats.SendToBack;
+
+  //Show pnlView & Add Back to tab Order
+  ShowPnlView;
+end;
+
+procedure TfrmProblems.lstViewClick(Sender: TObject);
+begin
+  inherited;
+  case lstView.ItemIndex of
+    0:  tag := 700 ;      {Active}
+    1:  tag := 800 ;      {Inactive}
+    2:  tag := 900 ;      {Both}
+    3:  tag := 950 ;      {Removed}
+{       4:  tag := 975 ;      {Filters...}
+  end ;
+  lstProbActsClick(Self) ;
+  mnuOptimizeFieldsClick(self);
+end;
+
+function EncounterPresent: Boolean;
+{ make sure a location and provider are selected, returns false if not }
+begin
+  Result := True;
+  if (Encounter.Provider = 0) or (Encounter.Location = 0) then
+  begin
+    UpdateEncounter(NPF_ALL);  {*KCM*}
+    frmFrame.DisplayEncounterText;
+  end;
+  if (Encounter.Provider = 0) or (Encounter.Location = 0) then
+  begin
+    if not frmFrame.CCOWDrivedChange then
+      InfoBox(TX_PROV_LOC, TC_PROV_LOC, MB_OK or MB_ICONWARNING);  {!!!}
+    Result := False;
+  end;
+end;
+
+procedure TfrmProblems.FormDestroy(Sender: TObject);
+begin
+  ClearGrid;
+  FItemData.Free;
+  FAllProblems.Free;
+  FProblemsVisible.Free;
+  inherited;
+end;
+
+procedure TfrmProblems.mnuViewSaveClick(Sender: TObject);
+begin
+  inherited;
+  if PLPt = nil then
+    begin
+      InfoBox(TX_INVALID_PATIENT, TC_NO_PATIENT, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  if InfoBox('Replace current defaults?','Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      with PLUser do
+        begin
+          usDefaultContext := FContextString;
+          usDefaultView    := Piece(FFilterString, '/', 1);
+        end;
+      SaveViewPreferences(FFilterString + U + FContextString);
+    end;
+end;
+
+procedure TfrmProblems.mnuViewRestoreDefaultClick(Sender: TObject);
+begin
+  inherited;
+  if PLPt = nil then
+    begin
+      InfoBox(TX_INVALID_PATIENT, TC_NO_PATIENT, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  if PLFilters <> nil then
+    begin
+      PLFilters.Destroy;
+      PLFilters := nil;
+    end;
+  if PLUser <> nil then
+    begin
+      PLUser.Destroy;
+      PLUser := nil;
+    end;
+  ShowPnlView;
+  LoadProblems ;
+end;
+
+procedure TfrmProblems.mnuViewCommentsClick(Sender: TObject);
+var
+  x, line, comments: string;
+  i, j: integer;
+begin
+  inherited;
+  if PLPt = nil then
+    begin
+      InfoBox(TX_INVALID_PATIENT, TC_NO_PATIENT, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  mnuViewComments.Checked := not mnuViewComments.Checked;
+  SetPiece(FContextString, ';', 4, BOOLCHAR[mnuViewComments.Checked]);
+  PLUser.usViewComments := BOOLCHAR[mnuViewComments.Checked];
+  with FAllProblems do
+    begin
+      for i := 0 to Count - 1 do
+        begin
+          if Objects[i] = nil then continue;
+          x := Piece(Piece(Strings[i], U, 3), #13, 1);
+          if PLUser.usViewComments = '1' then
+            begin
+              comments := '';
+              for j := 0 to TStringList(Objects[i]).Count - 1 do
+                comments := comments + '         ' + TStringList(Objects[i]).Strings[j] + #13#10;
+                //comments := comments + '   CMT:  ' + TStringList(Items.Objects[i]).Strings[j] + #13#10;
+              Line := Strings[i];
+              SetPiece(Line, U, 3, x + #13#10 + comments);
+              Strings[i] := Line;
+            end
+          else
+          begin
+            Line := Strings[i];
+            SetPiece(Line, U, 3, x);
+            Strings[i] := Line;
+          end;
+        end;
+    end;
+  RefreshList;
+end;
+
+procedure TfrmProblems.RequestPrint;
+begin
+  inherited;
+  if PLPt = nil then
+    begin
+      InfoBox(TX_INVALID_PATIENT, TC_NO_PATIENT, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+  uReportType := '';
+  PrintReports(IntToStr(RPT_PROBLIST), 'Problem List')
+end;
+
+procedure TfrmProblems.SetFontSize( NewFontSize: integer);
+var
+  OldParent: TWinControl;
+begin
+  OldParent := nil;
+  if Assigned(dlgProbs) then begin
+    OldParent := dlgProbs.Parent;
+    dlgProbs.Parent := nil;
+  end;
+  try
+    {These labels are hidden in an ORAutoPanel, so have to be sized manually}
+    lblProbCats.Height := ResizeHeight( Font, MainFont, lblProbCats.Height);
+    lblProblems.Height := ResizeHeight( Font, MainFont, lblProblems.Height);
+    inherited SetFontSize( NewFontSize);
+  finally
+    if Assigned(dlgProbs) then
+      dlgProbs.Parent := OldParent;
+  end;
+  if Assigned(dlgProbs) then
+    dlgProbs.SetFontSize( MainFontSize);
+  mnuOptimizeFieldsClick(self);
+end;
+
+procedure TfrmProblems.RefreshList;
+var
+  i: integer;
+begin
+  RedrawSuspend(wgProbData.Handle);
+  wgProbData.Clear;
+  FItemData.Clear;
+  for i := 0 to FAllProblems.Count-1 do
+    if FProblemsVisible[i] = 'Y' then begin
+      FItemData.Add(IntToStr(i));
+      if Piece(FAllProblems[i], U, 1) <> '' then
+        wgProbData.Items.Add(PlainText(FAllProblems[i]))
+      else
+        wgProbData.Items.Add(FAllProblems[i]);
+    end;
+  wgProbData.Invalidate;
+  RedrawActivate(wgProbData.Handle);
+end;
+
+procedure TfrmProblems.wgProbDataMeasureItem(Control: TWinControl;
+  Index: Integer; var Height: Integer);
+var
+  ARect: TRect;
+  x: string;
+  NewHeight: Integer;
+begin
+  inherited;
+  NewHeight := Height;
+  with wgProbData do if Index < Items.Count then
+  begin
+    ARect := ItemRect(Index);
+    ARect.Left  := HeaderControl.Sections[0].Width + HeaderControl.Sections[1].Width + 2;
+    ARect.Right := ARect.Left + HeaderControl.Sections[2].Width - 6;
+    x := Piece(MString(Index), U, 3);
+    NewHeight := WrappedTextHeightByFont( Canvas, Font, x, ARect);
+    if NewHeight > 255 then NewHeight := 255;   // windows appears to only look at 8 bits *KCM*
+    if NewHeight <  13 then NewHeight := 13;    // show at least one line                 *KCM*
+  end; {if Index}
+  Height := NewHeight;
+end;
+
+procedure TfrmProblems.wgProbDataDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  i: integer;
+begin
+  inherited;
+  with wgProbData do if Index < Items.Count then
+  begin
+    ListGridDrawLines(wgProbData, HeaderControl, Index, State);
+    for i := 0 to HeaderControl.Sections.Count -1 do
+      ListGridDrawCell(wgProbData, HeaderControl, Index, i, Piece(MString(Index),U,i+1), i = 2);
+  end; {if Index}
+end;
+
+function TfrmProblems.PlainText(MString: string): string;
+var
+  i: integer;
+begin
+  result := '';
+  with HeaderControl do
+    for i := 0 to Sections.Count -1 do
+      if Sections[i].MaxWidth > 0 then
+        if Trim(Piece(MString, U, i+1)) <> '' then
+          result := result + Sections[i].Text + ': ' + Piece(MString, U, i+1) + CRLF;
+end;
+
+function TfrmProblems.MString(index: integer): string;
+begin
+  if index = -1 then
+    result := ''
+  else
+    result := FAllProblems[StrToInt(FItemData[index])];
+end;
+
+procedure TfrmProblems.HeaderControlSectionResize(
+  HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  wgProbData.Invalidate;
+  {FEvtColWidth := HeaderControl.Sections[0].Width;     //code from fOrders
+  RedrawSuspend(Self.Handle);
+  //RedrawOrderList;
+  RedrawActivate(Self.Handle);
+  wgProbData.Invalidate;
+  pnlRight.Refresh;
+  pnlLeft.Refresh; }
+end;
+
+{Tab Order tricks.  Need to change
+  lstView
+
+  bbNewProb
+  bbOtherProb
+  bbCancel
+
+  pnlProbDlg
+  wgProbData
+
+to
+  lstView
+
+  pnlProbDlg
+  wgProbData
+
+  bbNewProb
+  bbOtherProb
+  bbCancel
+}
+
+procedure TFrmProblems.lstViewExit(Sender: TObject);
+begin
+  inherited;
+  if IncSecond(FMousing,1) < Now  then
+  begin
+    if (Screen.ActiveControl = bbNewProb) or
+        (Screen.ActiveControl = bbOtherProb) or
+        (Screen.ActiveControl = bbCancel) then
+      FindNextControl( bbCancel, True, True, False).SetFocus;
+  end;
+  FMousing := 0;
+end;
+
+procedure TFrmProblems.pnlRightExit(Sender: TObject);
+begin
+  inherited;
+  if IncSecond(FMousing,1) < Now then
+  begin
+    if (Screen.ActiveControl = frmFrame.pnlPatient) then
+    begin
+      if lstView.Visible then
+        FindNextControl( lstView, True, True, False).SetFocus
+      else
+        FindNextControl( edProbEnt, True, True, False).SetFocus
+    end
+    else
+    if (Screen.ActiveControl = bbNewProb) or
+        (Screen.ActiveControl = bbOtherProb) or
+        (Screen.ActiveControl = bbCancel) then
+    begin
+      if bbNewProb.Visible then
+        FindNextControl( bbNewProb, False, True, False).SetFocus
+      else
+        FindNextControl( bbOtherProb, False, True, False).SetFocus;
+    end;
+  end;
+  FMousing := 0;
+end;
+
+procedure TFrmProblems.bbNewProbExit(Sender: TObject);
+begin
+  inherited;
+  if IncSecond(FMousing,1) < Now then
+  begin
+    if (Screen.ActiveControl = pnlProbDlg) or
+        (Screen.ActiveControl = wgProbData) then
+      frmFrame.pnlPatient.SetFocus
+    else
+    if (Screen.ActiveControl = lstView) or
+        (Screen.ActiveControl = lstCatPick) then
+      FindNextControl( frmFrame.pnlPatient, False, True, False).SetFocus;
+  end;
+  FMousing := 0;
+end;
+
+procedure TFrmProblems.frmFramePnlPatientExit(Sender: TObject);
+begin
+  FOldFramePnlPatientExit(Sender);
+  inherited;
+  if IncSecond(FMousing,1) < Now then
+  begin
+    if (Screen.ActiveControl = pnlProbDlg) or
+        (Screen.ActiveControl = wgProbData) then
+      FindNextControl( pnlProbDlg, False, True, False).SetFocus;
+  end;
+  FMousing := 0;
+end;
+
+procedure TFrmProblems.FormHide(Sender: TObject);
+begin
+  inherited;
+  frmFrame.pnlPatient.OnExit := FOldFramePnlPatientExit;
+end;
+
+procedure TFrmProblems.FormShow(Sender: TObject);
+begin
+  inherited;
+  FOldFramePnlPatientExit := frmFrame.pnlPatient.OnExit;
+  frmFrame.pnlPatient.OnExit := frmFramePnlPatientExit;
+end;
+
+procedure TfrmProblems.FormMouseMove(Sender: TObject; Shift: TShiftState;
+  X, Y: Integer);
+begin
+  inherited;
+  FMousing := Now;
+end;
+
+procedure TfrmProblems.ShowPnlView;
+begin
+  pnlView.BringToFront;
+  pnlView.Show;
+  lstView.TabStop := true;
+  bbNewProb.TabStop := true;
+end;
+
+procedure TfrmProblems.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmProblems.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+procedure TfrmProblems.mnuOptimizeFieldsClick(Sender: TObject);
+var
+  totalSectionsWidth, unitvalue: integer;
+begin
+  totalSectionsWidth := pnlRight.Width - 3;
+  if totalSectionsWidth < 16 then exit;
+  unitvalue := round(totalSectionsWidth / 16);
+  with HeaderControl do
+  begin
+    if Sections[1].Width > 0 then Sections[1].Width := unitvalue;
+    Sections[2].Width := pnlRight.Width - (unitvalue * 11) - 5;
+    Sections[3].Width := unitvalue * 2;
+    Sections[4].Width := unitvalue * 2;
+    if Sections[6].Width > 0 then Sections[6].Width := unitvalue;
+    if Sections[7].Width > 0 then Sections[7].Width := unitvalue * 2;
+    if Sections[8].Width > 0 then Sections[8].Width := unitvalue * 2;
+    if Sections[15].Width > 0 then Sections[15].Width := unitvalue;
+  end;
+  HeaderControlSectionResize(HeaderControl, HeaderControl.Sections[0]);
+  HeaderControl.Repaint;
+end;
+
+procedure TfrmProblems.HeaderControlSectionClick(
+  HeaderControl: THeaderControl; Section: THeaderSection);
+begin
+  inherited;
+  //if Section = HeaderControl.Sections[1] then
+    mnuOptimizeFieldsClick(self);
+end;
+
+procedure TfrmProblems.HeaderControlMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+  i: integer;
+  totalSectionsWidth, originalwidth: integer;
+begin
+  inherited;
+  totalSectionsWidth := getTotalSectionsWidth;
+  if totalSectionsWidth > wgProbData.Width - 5 then
+  begin
+    originalwidth := 0;
+    for i := 0 to HeaderControl.Sections.Count - 1 do
+      originalwidth := originalwidth + origWidths[i];
+    if originalwidth < totalSectionsWidth then
+    begin
+      for i := 0 to HeaderControl.Sections.Count - 1 do
+        HeaderControl.Sections[i].Width := origWidths[i];
+      wgProbData.Invalidate;
+    end;
+  end;
+end;
+
+function TfrmProblems.getTotalSectionsWidth : integer;
+var
+  i: integer;
+begin
+  Result := 0;
+  for i := 0 to HeaderControl.Sections.Count - 1 do
+     Result := Result + HeaderControl.Sections[i].Width;
+end;
+
+procedure TfrmProblems.HeaderControlMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  inherited;
+  setSectionWidths;
+end;
+
+procedure TfrmProblems.setSectionWidths;
+var
+  i: integer;
+begin
+  for i := 0 to 15 do
+     origWidths[i] := HeaderControl.Sections[i].Width;
+end;
+
+procedure TfrmProblems.sptHorzMoved(Sender: TObject);
+begin
+  inherited;
+  mnuOptimizeFieldsClick(self);
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmProblems);
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtCWAD.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtCWAD.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtCWAD.dfm	(revision 1676)
@@ -0,0 +1,116 @@
+inherited frmPtCWAD: TfrmPtCWAD
+  Left = 245
+  Top = 268
+  BorderIcons = [biSystemMenu]
+  Caption = 'Patient Postings'
+  ClientHeight = 275
+  ClientWidth = 435
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnKeyUp = FormKeyUp
+  ExplicitWidth = 443
+  ExplicitHeight = 302
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblNotes: TOROffsetLabel [0]
+    Left = 0
+    Top = 127
+    Width = 435
+    Height = 24
+    Align = alTop
+    Caption = 'Crisis Notes, Warning Notes, Directives'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 6
+    WordWrap = False
+  end
+  object lblAllergies: TOROffsetLabel [1]
+    Left = 0
+    Top = 0
+    Width = 435
+    Height = 21
+    Align = alTop
+    Caption = 
+      'Allergies                                               Severity' +
+      '                 Signs / Symptoms'
+    HorzOffset = 2
+    Transparent = False
+    VertOffset = 6
+    WordWrap = False
+  end
+  object lstAllergies: TORListBox [2]
+    Left = 0
+    Top = 21
+    Width = 435
+    Height = 106
+    Align = alTop
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 0
+    OnClick = lstAllergiesClick
+    Caption = 'Allergies'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2,3,4'
+    TabPositions = '30,45'
+  end
+  object lstNotes: TORListBox [3]
+    Left = 0
+    Top = 151
+    Width = 435
+    Height = 97
+    Align = alClient
+    ItemHeight = 13
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 1
+    OnClick = lstNotesClick
+    Caption = 'Crisis Notes, Warning Notes, Directives'
+    ItemTipColor = clWindow
+    LongList = False
+    Pieces = '2,3'
+    TabPositions = '20'
+  end
+  object pnlBottom: TPanel [4]
+    Left = 0
+    Top = 248
+    Width = 435
+    Height = 27
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 4
+    DesignSize = (
+      435
+      27)
+    object btnClose: TButton
+      Left = 359
+      Top = 4
+      Width = 75
+      Height = 21
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Close'
+      TabOrder = 0
+      OnClick = btnCloseClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lstAllergies'
+        'Status = stsDefault')
+      (
+        'Component = lstNotes'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = btnClose'
+        'Status = stsDefault')
+      (
+        'Component = frmPtCWAD'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtCWAD.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtCWAD.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtCWAD.pas	(revision 1676)
@@ -0,0 +1,112 @@
+unit fPtCWAD;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ORCtrls, StdCtrls, ORFn, ExtCtrls, VA508AccessibilityManager;
+
+type
+  TfrmPtCWAD = class(TfrmAutoSz)
+    lstAllergies: TORListBox;
+    lstNotes: TORListBox;
+    lblNotes: TOROffsetLabel;
+    pnlBottom: TPanel;
+    btnClose: TButton;
+    lblAllergies: TOROffsetLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure lstAllergiesClick(Sender: TObject);
+    procedure lstNotesClick(Sender: TObject);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnCloseClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure ShowCWAD;
+
+implementation
+
+{$R *.DFM}
+
+uses rCover, fRptBox, uCore, uConst, fAllgyBox, rODAllergy;
+
+const
+  TX_LST_ALLG = 'Searching for allergies...';
+  TX_LST_POST = 'Searching for postings...';
+
+procedure ShowCWAD;
+{ displays CWAD notices (future - allow updates of allergy info from here? }
+var
+  frmPtCWAD: TfrmPtCWAD;
+begin
+  frmPtCWAD := TfrmPtCWAD.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmPtCWAD));
+    frmPtCWAD.ShowModal;
+  finally
+    frmPtCWAD.Release;
+  end;
+end;
+
+
+procedure TfrmPtCWAD.FormCreate(Sender: TObject);
+var
+  i: Integer;
+begin
+  inherited;
+  StatusText(TX_LST_ALLG);
+  ListAllergies(lstAllergies.Items);
+  StatusText(TX_LST_POST);
+  ListPostings(lstNotes.Items);
+  with lstNotes do for i := Items.Count - 1 downto 0 do
+    if Items[i]='^Allergies^' then Items.Delete(i);
+  StatusText('');
+end;
+
+procedure TfrmPtCWAD.lstAllergiesClick(Sender: TObject);
+begin
+  inherited;
+  with lstAllergies do
+    if ItemIEN > 0 then
+    begin
+{ TODO -oRich V. -cART/Allergy : Allergy Box to update CWAD allergies list? }
+(*      if ARTPatchInstalled then
+        AllergyBox(DetailAllergy(ItemIEN), DisplayText[ItemIndex], True, ItemIEN)
+      else*)
+        ReportBox(DetailAllergy(ItemIEN), DisplayText[ItemIndex], True);
+    end;
+end;
+
+procedure TfrmPtCWAD.lstNotesClick(Sender: TObject);
+begin
+  inherited;
+  with lstNotes do
+    if ItemID <> '' then
+      begin
+        NotifyOtherApps(NAE_REPORT, 'TIU^' + lstNotes.ItemID);
+        ReportBox(DetailPosting(ItemID), DisplayText[ItemIndex], True);
+      end;
+end;
+
+procedure TfrmPtCWAD.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    Close;
+  end;
+end;
+
+procedure TfrmPtCWAD.btnCloseClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtDemo.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtDemo.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtDemo.dfm	(revision 1676)
@@ -0,0 +1,116 @@
+inherited frmPtDemo: TfrmPtDemo
+  Left = 248
+  Top = 283
+  BorderIcons = [biSystemMenu]
+  Caption = 'Patient Inquiry'
+  ClientHeight = 271
+  ClientWidth = 580
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 588
+  ExplicitHeight = 305
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblFontTest: TLabel [0]
+    Left = 264
+    Top = 148
+    Width = 77
+    Height = 14
+    Caption = 'lblFontTest'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    Visible = False
+  end
+  object memPtDemo: TRichEdit [1]
+    Left = 0
+    Top = 0
+    Width = 580
+    Height = 234
+    Align = alClient
+    Color = clCream
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      
+        'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123ABCDEFGHIJKLMNOPQRSTUVWXYZ0123abcd' +
+        'efghijklmnopqrs')
+    ParentFont = False
+    PlainText = True
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 0
+    WantReturns = False
+    WordWrap = False
+  end
+  object pnlTop: TORAutoPanel [2]
+    Left = 0
+    Top = 234
+    Width = 580
+    Height = 37
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    object cmdNewPt: TButton
+      Left = 8
+      Top = 8
+      Width = 121
+      Height = 21
+      Caption = 'Select New Patient'
+      TabOrder = 0
+      OnClick = cmdNewPtClick
+    end
+    object cmdClose: TButton
+      Left = 501
+      Top = 8
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Close'
+      Default = True
+      TabOrder = 2
+      OnClick = cmdCloseClick
+    end
+    object cmdPrint: TButton
+      Left = 411
+      Top = 8
+      Width = 75
+      Height = 21
+      Caption = 'Print'
+      TabOrder = 1
+      OnClick = cmdPrintClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memPtDemo'
+        'Status = stsDefault')
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = cmdNewPt'
+        'Status = stsDefault')
+      (
+        'Component = cmdClose'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrint'
+        'Status = stsDefault')
+      (
+        'Component = frmPtDemo'
+        'Status = stsDefault'))
+  end
+  object dlgPrintReport: TPrintDialog
+    Left = 265
+    Top = 245
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtDemo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtDemo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtDemo.pas	(revision 1676)
@@ -0,0 +1,159 @@
+unit fPtDemo;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, ORFn, ComCtrls, fBase508Form,
+  VA508AccessibilityManager, uReports;
+
+type
+  TfrmPtDemo = class(TfrmBase508Form)
+    lblFontTest: TLabel;
+    memPtDemo: TRichEdit;
+    pnlTop: TORAutoPanel;
+    cmdNewPt: TButton;
+    cmdClose: TButton;
+    cmdPrint: TButton;
+    dlgPrintReport: TPrintDialog;
+    procedure cmdCloseClick(Sender: TObject);
+    procedure cmdNewPtClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdPrintClick(Sender: TObject);
+  private
+    { Private declarations }
+    FNewPt: Boolean;
+  public
+    { Public declarations }
+  end;
+
+procedure PatientInquiry(var NewPt: Boolean);
+
+implementation
+
+{$R *.DFM}
+
+uses rCover, rReports, Printers, uCore;
+
+procedure PatientInquiry(var NewPt: Boolean);
+{ displays patient demographics, returns true in NewPt if the user pressed 'Select New' btn }
+var
+  frmPtDemo: TfrmPtDemo;
+begin
+  if StrToInt64Def(Patient.DFN, 0) <= 0 then exit;
+  frmPtDemo := TfrmPtDemo.Create(Application);
+  try
+    with frmPtDemo do
+    begin
+      frmPtDemo.ShowModal;
+      NewPt := FNewPt;
+    end; {with frmPtDemo}
+  finally
+    frmPtDemo.Release;
+  end;
+end;
+
+procedure TfrmPtDemo.FormCreate(Sender: TObject);
+var
+  i, MaxWidth, AWidth, AHeight: Integer;
+  Rect: TRect;
+begin
+  FNewPt := False;
+  LoadDemographics(memPtDemo.Lines);
+  memPtDemo.SelStart := 0;
+  ResizeAnchoredFormToFont(self);
+  MaxWidth := 350;                                // make sure at least 350 wide
+  for i := 0 to memPtDemo.Lines.Count - 1 do
+  begin
+    AWidth := lblFontTest.Canvas.TextWidth(memPtDemo.Lines[i]);
+    if AWidth > MaxWidth then MaxWidth := AWidth;
+  end;
+  { width = borders + inset of memo box (left=8) }
+  MaxWidth := MaxWidth + (GetSystemMetrics(SM_CXFRAME) * 2)
+                       + GetSystemMetrics(SM_CXVSCROLL) + 16;
+  { height = height of lines + title bar + borders + 4 lines (room for buttons) }
+  AHeight := ((memPtDemo.Lines.Count + 4) * (lblFontTest.Height + 1))
+             + (GetSystemMetrics(SM_CYFRAME) * 3) + GetSystemMetrics(SM_CYCAPTION);
+  AHeight := HigherOf(AHeight, 250);              // make sure at least 250 high
+  if AHeight > (Screen.Height - 120) then AHeight := Screen.Height - 120;
+  if MaxWidth > Screen.Width then MaxWidth := Screen.Width;
+  Width := MaxWidth;
+  Height := AHeight;
+  Rect := BoundsRect;
+  ForceInsideWorkArea(Rect);
+  BoundsRect := Rect;
+end;
+
+procedure TfrmPtDemo.cmdNewPtClick(Sender: TObject);
+begin
+  FNewPt := True;
+  Close;
+end;
+
+procedure TfrmPtDemo.cmdCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmPtDemo.cmdPrintClick(Sender: TObject);
+var
+  AHeader: TStringList;
+  memPrintReport: TRichEdit;
+  StartLine, MaxLines, LastLine, ThisPage, i: integer;
+  ErrMsg: string;
+  RemoteSiteID: string;    //for Remote site printing
+  RemoteQuery: string;    //for Remote site printing
+const
+  PAGE_BREAK = '**PAGE BREAK**';
+begin
+  RemoteSiteID := '';
+  RemoteQuery := '';
+  if dlgPrintReport.Execute then
+    begin
+      AHeader := TStringList.Create;
+      CreatePatientHeader(AHeader, Self.Caption);
+      memPrintReport := CreateReportTextComponent(Self);
+      try
+        MaxLines := 60 - AHeader.Count;
+        LastLine := 0;
+        ThisPage := 0;
+        with memPrintReport do
+          begin
+            StartLine := 4;
+            repeat
+              with Lines do
+                begin
+                  AddStrings(AHeader);
+                  for i := StartLine to MaxLines do
+                    //if i < memPtDemo.Lines.Count - 1 then
+                    if i < memPtDemo.Lines.Count then
+                      Add(memPtDemo.Lines[LastLine + i])
+                    else
+                      Break;
+                  LastLine := LastLine + i;
+                  Add(' ');
+                  Add(' ');
+                  Add(StringOfChar('-', 74));
+                  if LastLine >= memPtDemo.Lines.Count - 1 then
+                    Add('End of report')
+                  else
+                    begin
+                      ThisPage := ThisPage + 1;
+                      Add('Page ' + IntToStr(ThisPage));
+                      Add(PAGE_BREAK);
+                      StartLine := 0;
+                    end;
+                end;
+              until LastLine >= memPtDemo.Lines.Count - 1;
+            PrintWindowsReport(memPrintReport, PAGE_BREAK, Self.Caption, ErrMsg);
+          end;
+      finally
+        memPrintReport.Free;
+        AHeader.Free;
+      end;
+    end;
+  memPtDemo.SelStart := 0;
+  memPtDemo.Invalidate;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSel.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSel.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSel.dfm	(revision 1676)
@@ -0,0 +1,354 @@
+inherited frmPtSel: TfrmPtSel
+  Top = 131
+  BorderIcons = []
+  Caption = 'Patient Selection'
+  ClientHeight = 555
+  ClientWidth = 785
+  OldCreateOrder = True
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitTop = 131
+  ExplicitWidth = 793
+  ExplicitHeight = 589
+  PixelsPerInch = 96
+  TextHeight = 13
+  object sptVert: TSplitter [0]
+    Left = 0
+    Top = 290
+    Width = 785
+    Height = 4
+    Cursor = crVSplit
+    Align = alTop
+  end
+  object pnlDivide: TORAutoPanel [1]
+    Left = 0
+    Top = 294
+    Width = 785
+    Height = 17
+    Align = alTop
+    BevelOuter = bvNone
+    BevelWidth = 2
+    TabOrder = 0
+    Visible = False
+    object lblNotifications: TLabel
+      Left = 4
+      Top = 4
+      Width = 58
+      Height = 13
+      Caption = 'Notifications'
+    end
+    object ggeInfo: TGauge
+      Left = 212
+      Top = 1
+      Width = 100
+      Height = 15
+      BackColor = clHighlightText
+      Color = clBtnFace
+      ForeColor = clHighlight
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clCaptionText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentColor = False
+      ParentFont = False
+      Progress = 0
+      Visible = False
+    end
+  end
+  object pnlPtSel: TORAutoPanel [2]
+    Left = 0
+    Top = 0
+    Width = 785
+    Height = 290
+    Align = alTop
+    BevelWidth = 2
+    TabOrder = 3
+    OnResize = pnlPtSelResize
+    object lblPatient: TLabel
+      Left = 216
+      Top = 4
+      Width = 33
+      Height = 13
+      Caption = 'Patient'
+      ShowAccelChar = False
+    end
+    object cboPatient: TORComboBox
+      Left = 216
+      Top = 33
+      Width = 272
+      Height = 251
+      Hint = 'Enter name,Full SSN ,Last 4 (x1234),'#39'HRN'#39',DOB, or Phone#'
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Patient'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,3'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '20,25,30,60'
+      TabOrder = 1
+      OnChange = cboPatientChange
+      OnDblClick = cboPatientDblClick
+      OnEnter = cboPatientEnter
+      OnExit = cboPatientExit
+      OnKeyDown = cboPatientKeyDown
+      OnKeyPause = cboPatientKeyPause
+      OnMouseClick = cboPatientMouseClick
+      OnNeedData = cboPatientNeedData
+      CharsNeedMatch = 1
+      UniqueAutoComplete = True
+    end
+    object cmdOK: TButton
+      Left = 698
+      Top = 3
+      Width = 78
+      Height = 21
+      Caption = 'OK'
+      TabOrder = 2
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 698
+      Top = 24
+      Width = 78
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 3
+      OnClick = cmdCancelClick
+    end
+    object cmdSaveList: TButton
+      Left = 494
+      Top = 265
+      Width = 175
+      Height = 21
+      Caption = 'Save Patient List Settings'
+      TabOrder = 0
+      OnClick = cmdSaveListClick
+    end
+    object RadioGroup1: TRadioGroup
+      Left = 512
+      Top = 192
+      Width = 265
+      Height = 65
+      Caption = 'Specific "In-Depth" Lookup by '
+      ItemIndex = 0
+      Items.Strings = (
+        '&None of the below'
+        '&PHONE NUMBER [RESIDENCE]'
+        '&DATE OF BIRTH')
+      TabOrder = 4
+      OnClick = onclick1
+    end
+  end
+  object pnlNotifications: TORAutoPanel [3]
+    Left = 0
+    Top = 520
+    Width = 785
+    Height = 35
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    Visible = False
+    object cmdProcessInfo: TButton
+      Left = 11
+      Top = 10
+      Width = 95
+      Height = 21
+      Caption = 'Process Info'
+      TabOrder = 0
+      OnClick = cmdProcessInfoClick
+    end
+    object cmdProcessAll: TButton
+      Left = 120
+      Top = 10
+      Width = 95
+      Height = 21
+      Caption = 'Process All'
+      TabOrder = 1
+      OnClick = cmdProcessAllClick
+    end
+    object cmdProcess: TButton
+      Left = 229
+      Top = 10
+      Width = 95
+      Height = 21
+      Caption = 'Process'
+      Enabled = False
+      TabOrder = 2
+      OnClick = cmdProcessClick
+    end
+    object cmdForward: TButton
+      Left = 335
+      Top = 10
+      Width = 95
+      Height = 21
+      Caption = 'Forward'
+      Enabled = False
+      TabOrder = 3
+      OnClick = cmdForwardClick
+    end
+    object cmdRemove: TButton
+      Left = 577
+      Top = 10
+      Width = 95
+      Height = 21
+      Caption = 'Remove'
+      Enabled = False
+      TabOrder = 5
+      OnClick = cmdRemoveClick
+    end
+    object cmdComments: TButton
+      Left = 441
+      Top = 10
+      Width = 95
+      Height = 21
+      Caption = 'Show Comments'
+      Enabled = False
+      TabOrder = 4
+      OnClick = cmdCommentsClick
+    end
+  end
+  object lstvAlerts: TCaptionListView [4]
+    Left = 0
+    Top = 311
+    Width = 785
+    Height = 209
+    Align = alClient
+    Columns = <
+      item
+        Caption = 'Info'
+        Width = 30
+      end
+      item
+        Caption = 'Patient'
+        Tag = 1
+        Width = 120
+      end
+      item
+        Caption = 'Location'
+        Tag = 2
+        Width = 60
+      end
+      item
+        Caption = 'Urgency'
+        Tag = 3
+        Width = 67
+      end
+      item
+        Caption = 'Alert Date/Time'
+        Tag = 4
+        Width = 110
+      end
+      item
+        Caption = 'Message'
+        Tag = 5
+        Width = 280
+      end
+      item
+        Caption = 'Forwarded By/When'
+        Tag = 6
+        Width = 180
+      end>
+    HideSelection = False
+    HoverTime = 0
+    IconOptions.WrapText = False
+    MultiSelect = True
+    ReadOnly = True
+    RowSelect = True
+    ParentShowHint = False
+    PopupMenu = popNotifications
+    ShowWorkAreas = True
+    ShowHint = True
+    TabOrder = 1
+    ViewStyle = vsReport
+    OnColumnClick = lstvAlertsColumnClick
+    OnCompare = lstvAlertsCompare
+    OnDblClick = lstvAlertsDblClick
+    OnInfoTip = lstvAlertsInfoTip
+    OnKeyDown = lstvAlertsKeyDown
+    OnSelectItem = lstvAlertsSelectItem
+    Caption = 'Notifications'
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlDivide'
+        'Status = stsDefault')
+      (
+        'Component = pnlPtSel'
+        'Status = stsDefault')
+      (
+        'Component = cboPatient'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cmdSaveList'
+        'Status = stsDefault')
+      (
+        'Component = pnlNotifications'
+        'Status = stsDefault')
+      (
+        'Component = cmdProcessInfo'
+        'Status = stsDefault')
+      (
+        'Component = cmdProcessAll'
+        'Status = stsDefault')
+      (
+        'Component = cmdProcess'
+        'Status = stsDefault')
+      (
+        'Component = cmdForward'
+        'Status = stsDefault')
+      (
+        'Component = cmdRemove'
+        'Status = stsDefault')
+      (
+        'Component = lstvAlerts'
+        'Status = stsDefault')
+      (
+        'Component = frmPtSel'
+        'Status = stsDefault')
+      (
+        'Component = cmdComments'
+        'Status = stsDefault'))
+  end
+  object popNotifications: TPopupMenu
+    Left = 508
+    Top = 323
+    object mnuProcess: TMenuItem
+      Caption = 'Process'
+      OnClick = cmdProcessClick
+    end
+    object mnuForward: TMenuItem
+      Caption = 'Forward'
+      OnClick = cmdForwardClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object mnuRemove: TMenuItem
+      Caption = 'Remove'
+      OnClick = cmdRemoveClick
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSel.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSel.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSel.pas	(revision 1676)
@@ -0,0 +1,1421 @@
+unit fPtSel;
+{ Allows patient selection using various pt lists.  Allows display & processing of alerts. }
+ //vwpt enhancements included
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+{$define VAA}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, ORFn, ORNet, ORDtTmRng, Gauges, Menus, ComCtrls,
+  UBAGlobals, UBACore, fBase508Form, VA508AccessibilityManager, uConst;
+
+type
+  TfrmPtSel = class(TfrmBase508Form)
+    pnlPtSel: TORAutoPanel;
+    cboPatient: TORComboBox;
+    lblPatient: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pnlNotifications: TORAutoPanel;
+    cmdProcessInfo: TButton;
+    cmdProcessAll: TButton;
+    cmdProcess: TButton;
+    cmdForward: TButton;
+    sptVert: TSplitter;
+    cmdSaveList: TButton;
+    pnlDivide: TORAutoPanel;
+    lblNotifications: TLabel;
+    ggeInfo: TGauge;
+    cmdRemove: TButton;
+    popNotifications: TPopupMenu;
+    mnuProcess: TMenuItem;
+    mnuRemove: TMenuItem;
+    mnuForward: TMenuItem;
+    lstvAlerts: TCaptionListView;
+    N1: TMenuItem;
+    RadioGroup1: TRadioGroup ;
+    //RadioGroup1: TRadioGroup;
+    cmdComments: TButton;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboPatientChange(Sender: TObject);
+    procedure cboPatientKeyPause(Sender: TObject);
+    procedure cboPatientMouseClick(Sender: TObject);
+    procedure cboPatientEnter(Sender: TObject);
+    procedure cboPatientExit(Sender: TObject);
+    procedure cboPatientNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cboPatientDblClick(Sender: TObject);
+    procedure cmdProcessClick(Sender: TObject);
+    procedure cmdSaveListClick(Sender: TObject);
+    procedure cmdProcessInfoClick(Sender: TObject);
+    procedure cmdProcessAllClick(Sender: TObject);
+    procedure lstvAlertsDblClick(Sender: TObject);
+    procedure cmdForwardClick(Sender: TObject);
+    procedure cmdRemoveClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure pnlPtSelResize(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cboPatientKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure lstvAlertsColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lstvAlertsCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+    function DupLastSSN(const DFN: string): Boolean;
+    procedure lstFlagsClick(Sender: TObject);
+    procedure lstFlagsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure lstvAlertsSelectItem(Sender: TObject; Item: TListItem;
+      Selected: Boolean);
+    procedure ShowButts(ShowButts: Boolean);
+    procedure lstvAlertsInfoTip(Sender: TObject; Item: TListItem;
+      var InfoTip: String);
+    procedure lstvAlertsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormShow(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormResize(Sender: TObject);
+    procedure cmdCommentsClick(Sender: TObject);
+
+    //VWPT ENAHANCED PATIENT LOOKUP
+    function IsOther(itemindex:Integer):Boolean;
+    
+    procedure onclick1(Sender: TObject);
+
+  private
+    FsortCol: integer;
+    FsortAscending: boolean;
+    FLastPt: string;
+    FsortDirection: string;
+    FUserCancelled: boolean;
+    FNotificationBtnsAdjusted: Boolean;
+    FAlertsNotReady: boolean;
+    procedure WMReadyAlert(var Message: TMessage); message UM_MISC;
+    procedure ReadyAlert;
+    procedure AdjustFormSize(ShowNotif: Boolean; FontSize: Integer);
+    procedure ClearIDInfo;
+    procedure ShowIDInfo;
+    procedure ShowFlagInfo;
+    procedure SetCaptionTop;
+    procedure SetPtListTop(IEN: Int64);
+    procedure RPLDisplay;
+    procedure AlertList;
+    procedure ReformatAlertDateTime;
+    procedure AdjustButtonSize(pButton:TButton);
+    procedure AdjustNotificationButtons;
+
+  public
+    procedure Loaded; override;
+  end;
+
+procedure SelectPatient(ShowNotif: Boolean; FontSize: Integer; var UserCancelled: boolean);
+
+var
+  frmPtSel: TfrmPtSel;
+  FDfltSrc, FDfltSrcType: string;
+  IsRPL, RPLJob, DupDFN: string;                 // RPLJob stores server $J job number of RPL pt. list.
+  RPLProblem: boolean;                           // Allows close of form if there's an RPL problem.
+  PtStrs: TStringList;
+
+    //vwpt enhancement
+  itimson : integer = 1;
+  enhanceskip : integer = 0;
+  radiogrp1index : integer = 0;
+
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, fDupPts, fPtSens, fPtSelDemog, fPtSelOptns, fPatientFlagMulti,
+     uOrPtf, fAlertForward, rMisc, fFrame, fRptBox, VA508AccessibilityRouter;
+
+resourcestring
+  StrFPtSel_lstvAlerts_Co = 'C'+U+'fPtSel.lstvAlerts.Cols';
+
+const
+  AliasString = ' -- ALIAS';
+
+   //VWPT ENAHANCED PATIENT LOOKUP
+function TfrmPtSel.IsOther(itemindex:Integer):Boolean;
+var
+   i:Integer  ;
+
+begin
+         Result := True;
+         if (RadioGroup1.ItemIndex = -1) or (RadioGroup1.ItemIndex = 0) or (itimson = 0) then Result := False;
+end;
+
+procedure SelectPatient(ShowNotif: Boolean; FontSize: Integer; var UserCancelled: boolean);
+{ displays patient selection dialog (with optional notifications), updates Patient object }
+var
+  frmPtSel: TfrmPtSel;
+begin
+  frmPtSel := TfrmPtSel.Create(Application);
+  RPLProblem := false;
+  try
+    with frmPtSel do
+    begin
+      AdjustFormSize(ShowNotif, FontSize);           // Set initial form size
+      FDfltSrc := DfltPtList;
+      FDfltSrcType := Piece(FDfltSrc, U, 2);
+      FDfltSrc := Piece(FDfltSrc, U, 1);
+      if (IsRPL = '1') then                          // Deal with restricted patient list users.
+        FDfltSrc := '';
+      frmPtSelOptns.SetDefaultPtList(FDfltSrc);
+      if RPLProblem then
+         begin
+          frmPtSel.Release;
+          Exit;
+        end;
+      Notifications.Clear;
+      FsortCol := -1;
+      AlertList;
+      ClearIDInfo;
+      if (IsRPL = '1') then                          // Deal with restricted patient list users.
+        RPLDisplay;                                  // Removes unnecessary components from view.
+      FUserCancelled := FALSE;
+      ShowModal;
+      UserCancelled := FUserCancelled;
+    end;
+  finally
+    frmPtSel.Release;
+  end;
+end;
+
+procedure TfrmPtSel.AdjustFormSize(ShowNotif: Boolean; FontSize: Integer);
+{ Adjusts the initial size of the form based on the font used & if notifications should show. }
+var
+  Rect: TRect;
+//  TheFormHeight: integer;
+  SplitterTop, t1, t2, t3: integer;
+begin
+  ResizeAnchoredFormToFont(self);
+//  TheFormHeight := pnlPtSel.Height;
+  // Make the form bigger (140%) to show notifications and show notification controls.
+  if ShowNotif then
+  begin
+//    TheFormHeight := Round(TheFormHeight * 2.4);
+//    pnlDivide.Height := lblNotifications.Height + 4;
+    pnlDivide.Visible := True;
+    lstvAlerts.Visible := True;
+    pnlNotifications.Visible := True;
+    pnlPtSel.BevelOuter := bvRaised;
+//    ClientHeight := TheFormHeight;
+  end
+  else
+  begin
+    pnlDivide.Visible := False;
+    lstvAlerts.Visible := False;
+    pnlNotifications.Visible := False;
+//    ClientHeight := TheFormHeight;
+//    pnlPtSel.Anchors := [akLeft,akRight,akTop,akBottom];
+  end;
+//  ClientHeight := TheFormHeight;
+//  VertScrollBar.Range := TheFormHeight;
+
+  //After all of this calcualtion, we still use the saved preferences when possible
+  SetFormPosition(self);
+  Rect := BoundsRect;
+  ForceInsideWorkArea(Rect);
+  BoundsRect := Rect;
+
+  if frmFrame.EnduringPtSelSplitterPos <> 0 then
+    SplitterTop := frmFrame.EnduringPtSelSplitterPos
+  else
+    SetUserBounds2(Name+'.'+sptVert.Name,SplitterTop, t1, t2, t3);
+  if SplitterTop <> 0 then
+    pnlPtSel.Height := SplitterTop;
+  FNotificationBtnsAdjusted := False;
+  AdjustButtonSize(cmdSaveList);
+  AdjustButtonSize(cmdProcessInfo);
+  AdjustButtonSize(cmdProcessAll);
+  AdjustButtonSize(cmdProcess);
+  AdjustButtonSize(cmdForward);
+  AdjustButtonSize(cmdRemove);
+  AdjustButtonSize(cmdComments);
+  AdjustNotificationButtons;
+end;
+
+procedure TfrmPtSel.SetCaptionTop;
+{ Show patient list name, set top list to 'Select ...' if appropriate. }
+var
+  x: string;
+begin
+  x := '';
+  lblPatient.Caption := 'Patients';
+  if (not User.IsReportsOnly) then
+  begin
+  case frmPtSelOptns.SrcType of
+  TAG_SRC_DFLT: lblPatient.Caption := 'Patients (' + FDfltSrc + ')';
+  TAG_SRC_PROV: x := 'Provider';
+  TAG_SRC_TEAM: x := 'Team';
+  TAG_SRC_SPEC: x := 'Specialty';
+  TAG_SRC_CLIN: x := 'Clinic';
+  TAG_SRC_WARD: x := 'Ward';
+  TAG_SRC_ALL:  { Nothing };
+  end; // case stmt
+  end; // begin
+  if Length(x) > 0 then with cboPatient do
+  begin
+    RedrawSuspend(Handle);
+    ClearIDInfo;
+    ClearTop;
+    Text := '';
+    Items.Add('^Select a ' + x + '...');
+    Items.Add(LLS_LINE);
+    Items.Add(LLS_SPACE);
+    cboPatient.InitLongList('');
+  //VWPT
+  //cboPatient.LongList := True;
+  //cboPateint.HintonItem := True;
+  //end
+    RedrawActivate(cboPatient.Handle);
+  end;
+end;
+
+{ List Source events: }
+
+procedure TfrmPtSel.SetPtListTop(IEN: Int64);
+{ Sets top items in patient list according to list source type and optional list source IEN. }
+var
+  NewTopList: string;
+  FirstDate, LastDate: string;
+begin
+  // NOTE:  Some pieces in RPC returned arrays are rearranged by ListPtByDflt call in rCore!
+  IsRPL := User.IsRPL;
+  if (IsRPL = '') then // First piece in ^VA(200,.101) should always be set (to 1 or 0).
+    begin
+      InfoBox('Patient selection list flag not set.', 'Incomplete User Information', MB_OK);
+      RPLProblem := true;
+      Exit;
+    end;
+  // FirstDate := 0; LastDate := 0; // Not req'd, but eliminates hint.
+  // Assign list box TabPosition, Pieces properties according to type of list to be displayed.
+  // (Always use Piece "2" as the first in the list to assure display of patient's name.)
+  cboPatient.pieces := '2,3'; // This line and next: defaults set - exceptions modifield next.
+  cboPatient.tabPositions := '20,28';
+  if ((frmPtSelOptns.SrcType = TAG_SRC_DFLT) and (FDfltSrc = 'Combination')) then
+    begin
+      cboPatient.pieces := '2,3,4,5,9';
+      cboPatient.tabPositions := '20,28,35,45';
+    end;
+  if ((frmPtSelOptns.SrcType = TAG_SRC_DFLT) and
+      (FDfltSrcType = 'Ward')) or (frmPtSelOptns.SrcType = TAG_SRC_WARD) then
+    cboPatient.tabPositions := '35';
+  if ((frmPtSelOptns.SrcType = TAG_SRC_DFLT) and
+      (AnsiStrPos(pChar(FDfltSrcType), 'Clinic') <> nil)) or (frmPtSelOptns.SrcType = TAG_SRC_CLIN) then
+    begin
+      cboPatient.pieces := '2,3,9';
+      cboPatient.tabPositions := '24,45';
+    end;
+  NewTopList := IntToStr(frmPtSelOptns.SrcType) + U + IntToStr(IEN); // Default setting.
+  if (frmPtSelOptns.SrcType = TAG_SRC_CLIN) then with frmPtSelOptns.cboDateRange do
+    begin
+      if ItemID = '' then Exit;                        // Need both clinic & date range.
+      FirstDate := Piece(ItemID, ';', 1);
+      LastDate  := Piece(ItemID, ';', 2);
+      NewTopList := IntToStr(frmPtSelOptns.SrcType) + U + IntToStr(IEN) + U + ItemID; // Modified for clinics.
+    end;
+  if NewTopList = frmPtSelOptns.LastTopList then Exit; // Only continue if new top list.
+  frmPtSelOptns.LastTopList := NewTopList;
+  RedrawSuspend(cboPatient.Handle);
+  ClearIDInfo;
+  cboPatient.ClearTop;
+  cboPatient.Text := '';
+  if (IsRPL = '1') then                                // Deal with restricted patient list users.
+    begin
+      RPLJob := MakeRPLPtList(User.RPLList);           // MakeRPLPtList is in rCore, writes global "B" x-ref list.
+      if (RPLJob = '') then
+        begin
+          InfoBox('Assignment of valid OE/RR Team List Needed.', 'Unable to build Patient List', MB_OK);
+          RPLProblem := true;
+          Exit;
+        end;
+    end
+  else
+    begin
+      case frmPtSelOptns.SrcType of
+      TAG_SRC_DFLT: ListPtByDflt(cboPatient.Items);
+      TAG_SRC_PROV: ListPtByProvider(cboPatient.Items, IEN);
+      TAG_SRC_TEAM: ListPtByTeam(cboPatient.Items, IEN);
+      TAG_SRC_SPEC: ListPtBySpecialty(cboPatient.Items, IEN);
+      TAG_SRC_CLIN: ListPtByClinic(cboPatient.Items, frmPtSelOptns.cboList.ItemIEN, FirstDate, LastDate);
+      TAG_SRC_WARD: ListPtByWard(cboPatient.Items, IEN);
+      TAG_SRC_ALL:  ListPtTop(cboPatient.Items);
+      end;
+    end;
+  if frmPtSelOptns.cboList.Visible then
+    lblPatient.Caption := 'Patients (' + frmPtSelOptns.cboList.Text + ')';
+  if frmPtSelOptns.SrcType = TAG_SRC_ALL then
+    lblPatient.Caption := 'Patients (All Patients)';
+  with cboPatient do if ShortCount > 0 then
+    begin
+      Items.Add(LLS_LINE);
+      Items.Add(LLS_SPACE);
+    end;
+  cboPatient.Caption := lblPatient.Caption;
+  cboPatient.InitLongList('');
+  RedrawActivate(cboPatient.Handle);
+end;
+
+{ Patient Select events: }
+
+procedure TfrmPtSel.cboPatientEnter(Sender: TObject);
+begin
+  cmdOK.Default := True;
+  if cboPatient.ItemIndex >= 0 then
+  begin
+    ShowIDInfo;
+    ShowFlagInfo;
+  end;
+end;
+
+procedure TfrmPtSel.cboPatientExit(Sender: TObject);
+begin
+  cmdOK.Default := False;
+end;
+
+procedure TfrmPtSel.cboPatientChange(Sender: TObject);
+
+    procedure ShowMatchingPatients;
+    begin
+      with cboPatient do
+        begin
+          ClearIDInfo;
+          if ShortCount > 0 then
+            begin
+              if ShortCount = 1 then
+                begin
+                  ItemIndex := 0;
+                  ShowIDInfo;
+                  ShowFlagInfo;                  
+                end;
+              Items.Add(LLS_LINE);
+              Items.Add(LLS_SPACE);
+            end;
+          InitLongList('');
+        end;
+    end;
+
+var caption:string;
+index:integer;
+
+   
+begin
+  with cboPatient do
+    if IsOther(integer(1))and (IsRPL <> '1')and (enhanceskip=0) and (frmPtSelOptns.IsEnhanced(Text))and (not frmPtSelOptns.IsPatientName(Text)) then
+      begin
+        if (IsRPL = '1') then
+          ///ListPtByRPLLast5(Items, Text)   Messagebox error
+        else
+         begin
+             index := RadioGroup1.ItemIndex;
+             caption := piece(RadioGroup1.Items[index],'&',2);
+             //Application.MessageBox(pChar(caption), pChar('Message'),MB_OK);
+             //caption := '' ; //derivative of integer(1) or other index of radio button selection
+             ListPtByOther(Items, Text,caption); // one extra argument on radio button selection
+             if Items.Count>0  then
+             begin
+                  //itimson :=0 ;//no check for timson change in cbopatient until after click event finished
+             RadioGroup1.ItemIndex  := 0;
+             RadioGroup1.SetFocus;
+             RadioGroup1.Refresh;
+             end;
+             ShowMatchingPatients;
+         end;
+      end
+    else if frmPtSelOptns.IsLast5(Text) then
+      begin
+        if (IsRPL = '1') then
+          ListPtByRPLLast5(Items, Text)
+        else
+          ListPtByLast5(Items, Text);
+        ShowMatchingPatients;
+      end
+    else if frmPtSelOptns.IsFullSSN(Text) then
+      begin
+        if (IsRPL = '1') then
+           ListPtByRPLFullSSN(Items, Text)
+        else
+           ListPtByFullSSN(Items, Text);
+        ShowMatchingPatients
+      end
+    else if (not IsOther(integer(1))) and (IsRPL <> '1')and (enhanceskip=0) and (frmPtSelOptns.IsEnhanced(Text)) and (not frmPtSelOptns.IsPatientName(Text)) then
+    begin
+
+           ListPtByTimson(Items,Text) ;
+           ShowMatchingPatients;
+          //vwpt enhanced changes
+          //check for change here if itimson flag =1 .no matter what however, even if 0,
+         //set it back to 1
+         //itimson :=1;
+         //end vwpt enhanced
+
+
+    end
+    //enhanceskip := 0 ;
+end;
+
+procedure TfrmPtSel.cboPatientKeyPause(Sender: TObject);
+begin
+  if Length(cboPatient.ItemID) > 0 then  //*DFN*
+  begin
+    ShowIDInfo;
+    ShowFlagInfo;    
+  end else
+  begin
+    ClearIDInfo;
+  end;
+end;
+
+procedure TfrmPtSel.cboPatientMouseClick(Sender: TObject);
+begin
+  if Length(cboPatient.ItemID) > 0 then   //*DFN*
+  begin
+    ShowIDInfo;
+    ShowFlagInfo;
+  end else
+  begin
+    ClearIDInfo;
+  end;
+end;
+
+procedure TfrmPtSel.cboPatientDblClick(Sender: TObject);
+begin
+  // vwpt enhanced   on click or double clck set mode back to normal to a.) not allow change event
+ //erroneously checked with false lookup, and b.0 immedicately put back into normal mode
+ //without separate step needed.
+  if (RadioGroup1.ItemIndex  > 0) then
+  begin
+  //itimson :=0 ;//no check for timson change in cbopatient until after click event finished
+  RadioGroup1.ItemIndex  := 0;
+  RadioGroup1.SetFocus;
+  RadioGroup1.Refresh;
+  end;
+  //enhanceskip:=1 ;
+
+//end vwpt enhanced
+  if Length(cboPatient.ItemID) > 0 then cmdOKClick(Self);  //*DFN*
+end;
+
+procedure TfrmPtSel.cboPatientNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+var
+  i: Integer;
+  NoAlias, Patient: String;
+  PatientList: TStringList;
+begin
+  NoAlias := StartFrom;
+  with Sender as TORComboBox do
+  if Items.Count > ShortCount then
+  begin
+    NoAlias := Piece(Items[Items.Count-1], U, 1) + U + NoAlias;
+    if Direction < 0 then
+      NoAlias := Copy(NoAlias, 1, Length(NoAlias) - 1);
+  end;
+  if pos(AliasString, NoAlias) > 0 then
+    NoAlias := Copy(NoAlias, 1, pos(AliasString, NoAlias) - 1);
+  PatientList := TStringList.Create;
+  try
+    begin
+      if (IsRPL  = '1') then // Restricted patient lists uses different feed for long list box:
+        FastAssign(ReadRPLPtList(RPLJob, NoAlias, Direction), PatientList)
+      else
+      begin
+        FastAssign(SubSetOfPatients(NoAlias, Direction), PatientList);
+        for i := 0 to PatientList.Count - 1 do  // Add " - Alias" to alias names:
+        begin
+          Patient := PatientList[i];
+          // Piece 6 avoids display problems when mixed with "RPL" lists:
+          if (Uppercase(Piece(Patient, U, 2)) <> Uppercase(Piece(Patient, U, 6))) then
+          begin
+            SetPiece(Patient, U, 2, Piece(Patient, U, 2) + AliasString);
+            PatientList[i] := Patient;
+          end;
+        end;
+      end;
+      cboPatient.ForDataUse(PatientList);
+    end;
+  finally
+    PatientList.Free;
+  end;
+end;
+
+procedure TfrmPtSel.ClearIDInfo;
+begin
+  frmPtSelDemog.ClearIDInfo;
+end;
+
+procedure TfrmPtSel.ShowIDInfo;
+begin
+  frmPtSelDemog.ShowDemog(cboPatient.ItemID);
+end;
+
+procedure TfrmPtSel.WMReadyAlert(var Message: TMessage);
+begin
+  ReadyAlert;
+  Message.Result := 0;
+end;
+
+{ Command Button events: }
+
+procedure TfrmPtSel.cmdOKClick(Sender: TObject);
+{ Checks for restrictions on the selected patient and sets up the Patient object. }
+const
+  DLG_CANCEL = False;
+var
+  NewDFN: string;  //*DFN*
+  DateDied: TFMDateTime;
+  AccessStatus: integer;
+begin
+// vwpt enhanced   on click or double clck set mode back to normal to a.) not allow change event
+//erroneiusly checked with false lookup, and b.0 immedicately put back into normal mode
+//without separate step needed.
+  if (RadioGroup1.ItemIndex  > 0 ) then
+  begin
+  //itimson :=0 ;//no check for timson change in cbopatient until after click event finished
+  RadioGroup1.ItemIndex  := 0;
+  RadioGroup1.SetFocus;
+  RadioGroup1.Refresh;
+  end;
+
+//end vwpt enhanced
+if not (Length(cboPatient.ItemID) > 0) then  //*DFN*
+  begin
+    InfoBox('A patient has not been selected.', 'No Patient Selected', MB_OK);
+    Exit;
+  end;
+  NewDFN := cboPatient.ItemID;  //*DFN*
+  if FLastPt <> cboPatient.ItemID then
+  begin
+    HasActiveFlg(FlagList, HasFlag, cboPatient.ItemID);
+    flastpt := cboPatient.ItemID;
+  end;
+
+  If DupLastSSN(NewDFN) then    // Check for, deal with duplicate patient data.
+    if (DupDFN = 'Cancel') then
+      Exit
+    else
+      NewDFN := DupDFN;
+  if not AllowAccessToSensitivePatient(NewDFN, AccessStatus) then exit;
+  DateDied := DateOfDeath(NewDFN);
+  if (DateDied > 0) and (InfoBox('This patient died ' + FormatFMDateTime('mmm dd,yyyy hh:nn', DateDied) + CRLF +
+     'Do you wish to continue?', 'Deceased Patient', MB_YESNO or MB_DEFBUTTON2) = ID_NO) then
+    Exit;
+  // 9/23/2002: Code used to check for changed pt. DFN here, but since same patient could be
+  //    selected twice in diff. Encounter locations, check was removed and following code runs
+  //    no matter; in fFrame code then updates Encounter display if Encounter.Location has changed.
+  // NOTE: Some pieces in RPC returned arrays are modified/rearranged by ListPtByDflt call in rCore!
+  Patient.DFN := NewDFN;     // The patient object in uCore must have been created already!
+  Encounter.Clear;
+  Changes.Clear;             // An earlier call to ReviewChanges should have cleared this.
+  if (frmPtSelOptns.SrcType = TAG_SRC_CLIN) and (frmPtSelOptns.cboList.ItemIEN > 0) and
+    IsFMDateTime(Piece(cboPatient.Items[cboPatient.ItemIndex], U, 4)) then // Clinics, not by default.
+  begin
+    Encounter.Location := frmPtSelOptns.cboList.ItemIEN;
+    with cboPatient do Encounter.DateTime := MakeFMDateTime(Piece(Items[ItemIndex], U, 4));
+  end
+  else if (frmPtSelOptns.SrcType = TAG_SRC_DFLT) and (DfltPtListSrc = 'C') and
+         IsFMDateTime(Piece(cboPatient.Items[cboPatient.ItemIndex], U, 4))then
+       with cboPatient do // "Default" is a clinic.
+  begin
+    Encounter.Location := StrToIntDef(Piece(Items[ItemIndex], U, 10), 0); // Piece 10 is ^SC( location IEN in this case.
+    Encounter.DateTime := MakeFMDateTime(Piece(Items[ItemIndex], U, 4));
+  end
+  else if ((frmPtSelOptns.SrcType = TAG_SRC_DFLT) and (FDfltSrc = 'Combination') and
+           (copy(Piece(cboPatient.Items[cboPatient.ItemIndex], U, 3), 1, 2) = 'Cl')) and
+           (IsFMDateTime(Piece(cboPatient.Items[cboPatient.ItemIndex], U, 8))) then
+       with cboPatient do // "Default" combination, clinic pt.
+  begin
+    Encounter.Location := StrToIntDef(Piece(Items[ItemIndex], U, 7), 0); // Piece 7 is ^SC( location IEN in this case.
+    Encounter.DateTime := MakeFMDateTime(Piece(Items[ItemIndex], U, 8));
+  end
+  else if Patient.Inpatient then // Everything else:
+  begin
+    Encounter.Inpatient := True;
+    Encounter.Location := Patient.Location;
+    Encounter.DateTime := Patient.AdmitTime;
+    Encounter.VisitCategory := 'H';
+  end;
+  if User.IsProvider then Encounter.Provider := User.DUZ;
+
+  GetBAStatus(Encounter.Provider,Patient.DFN);
+  //HDS00005025
+  if BILLING_AWARE then
+    if Assigned(UBAGLOBALS.BAOrderList) then UBAGLOBALS.BAOrderList.Clear;
+  FUserCancelled := FALSE;
+  Close;
+end;
+
+procedure TfrmPtSel.cmdCancelClick(Sender: TObject);
+begin
+  // Leave Patient object unchanged
+  FUserCancelled := TRUE;
+  Close;
+end;
+
+procedure TfrmPtSel.cmdCommentsClick(Sender: TObject);
+var
+  tmpCmt: TStringList;
+begin
+  if FAlertsNotReady then exit;  
+  inherited;
+  tmpCmt := TStringList.Create;
+  try
+    tmpCmt.Text := lstvAlerts.Selected.SubItems[8];
+    LimitStringLength(tmpCmt, 74);
+    tmpCmt.Insert(0, StringOfChar('-', 74));
+    tmpCmt.Insert(0, lstvAlerts.Selected.SubItems[4]);
+    tmpCmt.Insert(0, lstvAlerts.Selected.SubItems[3]);
+    tmpCmt.Insert(0, lstvAlerts.Selected.SubItems[0]);
+    ReportBox(tmpCmt, 'Forwarded by: ' + lstvAlerts.Selected.SubItems[5], TRUE);
+    lstvAlerts.SetFocus;
+  finally
+    tmpCmt.Free;
+  end;
+end;
+
+procedure TfrmPtSel.cmdProcessClick(Sender: TObject);
+var
+  AFollowUp, i, infocount: Integer;
+  enableclose: boolean;
+  ADFN, x, RecordID, XQAID: string;  //*DFN*
+begin
+  if FAlertsNotReady then exit;  
+  enableclose := false;
+  with lstvAlerts do
+  begin
+    if SelCount <= 0 then Exit;
+
+    // Count information-only selections for gauge
+    infocount := 0;
+    for i:= 0 to Items.Count - 1 do if Items[i].Selected then
+      if (Items[i].SubItems[0] = 'I') then Inc(infocount);
+
+    if infocount >= 1 then
+    begin
+      ggeInfo.Visible := true; (*BOB*)
+      ggeInfo.MaxValue := infocount;
+    end;
+
+    for i := 0 to Items.Count - 1 do if Items[i].Selected then
+      { Items[i].Selected    =  Boolean TRUE if item is selected
+            "   .Caption     =  Info flag ('I')
+            "   .SubItems[0] =  Patient ('ABC,PATIE (A4321)')
+            "   .    "   [1] =  Patient location ('[2B]')
+            "   .    "   [2] =  Alert urgency level ('HIGH, Moderate, low')
+            "   .    "   [3] =  Alert date/time ('2002/12/31@12:10')
+            "   .    "   [4] =  Alert message ('New order(s) placed.')
+            "   .    "   [5] =  Forwarded by/when
+            "   .    "   [6] =  XQAID ('OR,66,50;1416;3021231.121024')
+                                       'TIU6028;1423;3021203.09')
+            "   .    "   [7] =  Remove without processing flag ('YES')
+            "   .    "   [8] =  Forwarding comments (if applicable) }
+    begin
+      XQAID := Items[i].SubItems[6];
+      RecordID := Items[i].SubItems[0] + ': ' + Items[i].SubItems[4] + '^' + XQAID;
+      //RecordID := patient: alert message^XQAID  ('ABC,PATIE (A4321): New order(s) placed.^OR,66,50;1416;3021231.121024')
+      if Items[i].Caption = 'I' then
+    // If Caption is 'I' delete the information only alert.
+        begin
+          ggeInfo.Progress := ggeInfo.Progress + 1;
+          DeleteAlert(XQAID);
+        end
+      else if Piece(XQAID, ',', 1) = 'OR' then
+    //  OR,16,50;1311;2980626.100756
+        begin
+          ADFN := Piece(XQAID, ',', 2);  //*DFN*
+          AFollowUp := StrToIntDef(Piece(Piece(XQAID, ';', 1), ',', 3), 0);
+          Notifications.Add(ADFN, AFollowUp, RecordID);
+          enableclose := true;
+        end
+      else if Copy(XQAID, 1, 6) = 'TIUERR' then
+        InfoBox(Piece(RecordID, U, 1) + #13#10#13#10 +
+           'The CPRS GUI cannot yet process this type of alert.  Please use List Manager.',
+           'Unable to Process Alert', MB_OK)
+      else if Copy(XQAID, 1, 3) = 'TIU' then
+    //   TIU6028;1423;3021203.09
+        begin
+          x := GetTIUAlertInfo(XQAID);
+          if Piece(x, U, 2) <> '' then
+            begin
+              ADFN := Piece(x, U, 2);  //*DFN*
+              AFollowUp := StrToIntDef(Piece(Piece(x, U, 3), ';', 1), 0);
+              Notifications.Add(ADFN, AFollowUp, RecordID + '^^' + Piece(x, U, 3));
+              enableclose := true;
+            end
+          else
+            DeleteAlert(XQAID);
+        end
+      else  //other alerts cannot be processed
+        InfoBox('This alert cannot be processed by the CPRS GUI.', Items[i].SubItems[0] + ': ' + Items[i].SubItems[4], MB_OK);    end;
+    if enableclose = true then
+      Close
+    else
+      begin
+        ggeInfo.Visible := False;
+        // Update notification list:
+        lstvAlerts.Clear;
+        AlertList;
+        //display alerts sorted according to parameter settings:
+        FsortCol := -1;     //CA - display alerts in correct sort
+        FormShow(Sender);
+      end;
+    if Items.Count = 0 then ShowButts(False);
+    if SelCount <= 0 then ShowButts(False);
+  end;
+  GetBAStatus(User.DUZ,Patient.DFN);
+end;
+
+procedure TfrmPtSel.cmdSaveListClick(Sender: TObject);
+begin
+  frmPtSelOptns.cmdSaveListClick(Sender);
+end;
+
+procedure TfrmPtSel.cmdProcessInfoClick(Sender: TObject);
+  // Select and process all items that are information only in the lstvAlerts list box.
+var
+  i: integer;
+begin
+  if FAlertsNotReady then exit;  
+  if lstvAlerts.Items.Count = 0 then Exit;
+  if InfoBox('You are about to process all your INFORMATION alerts.' + CRLF
+    + 'These alerts will not be presented to you for individual' + CRLF
+    + 'review and they will be permanently removed from your' + CRLF
+    + 'alert list.  Do you wish to continue?',
+    'Warning', MB_YESNO or MB_ICONWARNING) = IDYES then
+  begin
+    for i := 0 to lstvAlerts.Items.Count-1 do
+      lstvAlerts.Items[i].Selected := False;  //clear any selected alerts so they aren't processed
+    for i := 0 to lstvAlerts.Items.Count-1 do
+      if lstvAlerts.Items[i].Caption = 'I' then
+        lstvAlerts.Items[i].Selected := True;
+    cmdProcessClick(Self);
+    ShowButts(False);
+  end;
+end;
+
+procedure TfrmPtSel.cmdProcessAllClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if FAlertsNotReady then exit;
+  for i := 0 to lstvAlerts.Items.Count-1 do
+    lstvAlerts.Items[i].Selected := True;
+  cmdProcessClick(Self);
+  ShowButts(False);
+end;
+
+procedure TfrmPtSel.lstvAlertsDblClick(Sender: TObject);
+begin
+  cmdProcessClick(Self);
+end;
+
+procedure TfrmPtSel.cmdForwardClick(Sender: TObject);
+var
+  i: integer;
+  Alert: String;
+begin
+  if FAlertsNotReady then exit;  
+  try
+    with lstvAlerts do
+      begin
+        if SelCount <= 0 then Exit;
+        for i := 0 to Items.Count - 1 do
+          if Items[i].Selected then
+            try
+              Alert := Items[i].SubItems[6] + '^' + Items[i].Subitems[0] + ': ' +
+                 Items[i].Subitems[4];
+              ForwardAlertTo(Alert);
+            finally
+              Items[i].Selected := False;
+            end;
+      end;
+  finally
+    if lstvAlerts.SelCount <= 0 then ShowButts(False);
+  end;
+end;
+
+procedure TfrmPtSel.cmdRemoveClick(Sender: TObject);
+var
+  i: integer;
+begin
+  if FAlertsNotReady then exit;
+  with lstvAlerts do
+    begin
+      if SelCount <= 0 then Exit;
+      for i := 0 to Items.Count - 1 do
+        if Items[i].Selected then
+          begin
+            if Items[i].SubItems[7] = '1' then  //remove flag enabled
+              DeleteAlertforUser(Items[i].SubItems[6])
+            else InfoBox('This alert cannot be removed.', Items[i].SubItems[0] + ': ' + Items[i].SubItems[4], MB_OK);
+          end;
+    end;
+  lstvAlerts.Clear;
+  AlertList;
+  FsortCol := -1;     //CA - display alerts in correct sort
+  FormShow(Sender);  //CA - display alerts in correct sort
+  if lstvAlerts.Items.Count = 0 then ShowButts(False);
+  if lstvAlerts.SelCount <= 0 then ShowButts(False);
+end;
+
+procedure TfrmPtSel.FormDestroy(Sender: TObject);
+begin
+  SaveUserBounds(Self);
+  frmFrame.EnduringPtSelSplitterPos := pnlPtSel.Height;
+ end;
+
+procedure TfrmPtSel.FormResize(Sender: TObject);
+begin
+  inherited;
+  FNotificationBtnsAdjusted := False;
+  AdjustButtonSize(cmdSaveList);
+  AdjustButtonSize(cmdProcessInfo);
+  AdjustButtonSize(cmdProcessAll);
+  AdjustButtonSize(cmdProcess);
+  AdjustButtonSize(cmdForward);
+  AdjustButtonSize(cmdComments);
+  AdjustButtonSize(cmdRemove);
+  AdjustNotificationButtons;
+end;
+
+procedure TfrmPtSel.pnlPtSelResize(Sender: TObject);
+begin
+  frmPtSelDemog.Left := cboPatient.Left + cboPatient.Width + 9;
+  //  frmPtSelDemog.Width := frmPtSel.CmdCancel.Left - frmPtSelDemog.Left-2;// before vwpt enhancements pnlPtSel.Width - frmPtSelDemog.Left - 2;
+  frmPtSelOptns.Width := cboPatient.Left-8;
+end;
+
+procedure TfrmPtSel.Loaded;
+begin
+  inherited;
+// This needs to be in Loaded rather than FormCreate or the TORAutoPanel resize logic breaks.
+  //vwpt enhancements
+  CmdOK.parent := pnlPtSel;
+  CmdCancel.parent  :=  pnlPtSel;
+  //end vwpt
+  frmPtSelDemog := TfrmPtSelDemog.Create(Self);  // Was application - kcm
+  with frmPtSelDemog do
+  begin
+    parent := pnlPtSel;
+    Top := 4; //before vwpt change was 65
+    Left := cboPatient.Left + cboPatient.Width + 9;
+    //Width := pnlPtSel.Width - Left - 2; //before vwpt change
+    Width := CmdCancel.Left - Left-2  ;
+    TabOrder := cmdCancel.TabOrder + 1;  //Place after cancel button
+    Show;
+  end;
+
+  with RadioGroup1 do
+  begin
+      parent := pnlPtSel;
+      TabOrder  := cmdCancel.TabOrder + 2;
+      Show;
+  end;
+  //end vwpt enhancements
+
+  frmPtSelOptns := TfrmPtSelOptns.Create(Self);  // Was application - kcm
+  with frmPtSelOptns do
+  begin
+    parent := pnlPtSel;
+    Top := 4;
+    Left := 4;
+    Width := cboPatient.Left-8;
+    SetCaptionTopProc := SetCaptionTop;
+    SetPtListTopProc  := SetPtListTop;
+    if RPLProblem then
+      Exit;
+    TabOrder := cmdSaveList.TabOrder;  //Put just before save default list button
+    Show;
+  end;
+  FLastPt := '';
+  //Begin at alert list, or patient listbox if no alerts
+  if lstvAlerts.Items.Count = 0 then
+    ActiveControl := cboPatient;
+end;
+
+procedure TfrmPtSel.RPLDisplay;
+begin
+
+// Make unneeded components invisible:
+cmdSaveList.visible := false;
+frmPtSelOptns.visible := false;
+
+end;
+
+procedure TfrmPtSel.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  colSizes : String;
+begin
+  colSizes := '';
+  with lstvAlerts do begin
+    colSizes := IntToStr(Columns[0].Width) + ',';  //Info                 Caption
+    colSizes := colSizes + IntToStr(Columns[1].Width) + ',';  //Patient              SubItems[0]
+    colSizes := colSizes + IntToStr(Columns[2].Width) + ',';  //Location             SubItems[1]
+    colSizes := colSizes + IntToStr(Columns[3].Width) + ',';  //Urgency              SubItems[2]
+    colSizes := colSizes + IntToStr(Columns[4].Width) + ',';  //Alert Date/Time      SubItems[3]
+    colSizes := colSizes + IntToStr(Columns[5].Width) + ',';  //Message Text         SubItems[4]
+    colSizes := colSizes + IntToStr(Columns[6].Width);  //Forwarded By/When    SubItems[5]
+  end;
+  SizeHolder.SetSize(StrFPtSel_lstvAlerts_Co,colSizes);
+
+if (IsRPL = '1') then                          // Deal with restricted patient list users.
+  KillRPLPtList(RPLJob);                       // Kills server global data each time.
+                                               // (Global created by MakeRPLPtList in rCore.)
+end;
+
+procedure TfrmPtSel.FormCreate(Sender: TObject);
+begin
+  inherited;
+  DefaultButton := cmdOK;
+  FAlertsNotReady := FALSE;
+end;
+
+procedure TfrmPtSel.cboPatientKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (Key = Ord('D')) and (ssCtrl in Shift) then begin
+    Key := 0;
+    frmPtSelDemog.ToggleMemo;
+  end;
+end;
+
+function ConvertDate(var thisList: TStringList; listIndex: integer) : string;
+{
+ Convert date portion from yyyy/mm/dd to mm/dd/yyyy
+}
+var
+  //thisListItem: TListItem;
+  thisDateTime: string[16];
+  tempDt: string;
+  tempYr: string;
+  tempTime: string;
+  newDtTime: string;
+  k: byte;
+  piece1: string;
+  piece2: string;
+  piece3: string;
+  piece4: string;
+  piece5: string;
+  piece6: string;
+  piece7: string;
+  piece8: string;
+  piece9: string;
+  piece10: string;
+  piece11: string;
+begin
+  piece1 := '';
+  piece2 := '';
+  piece3 := '';
+  piece4 := '';
+  piece5 := '';
+  piece6 := '';
+  piece7 := '';
+  piece8 := '';
+  piece9 := '';
+  piece10 := '';
+  piece11 := '';
+
+  piece1 := Piece(thisList[listIndex],U,1);
+  piece2 := Piece(thisList[listIndex],U,2);
+  piece3 := Piece(thisList[listIndex],U,3);
+  piece4 := Piece(thisList[listIndex],U,4);
+  //piece5 := Piece(thisList[listIndex],U,5);
+  piece6 := Piece(thisList[listIndex],U,6);
+  piece7 := Piece(thisList[listIndex],U,7);
+  piece8 := Piece(thisList[listIndex],U,8);
+  piece9 := Piece(thisList[listIndex],U,9);
+  piece10 := Piece(thisList[listIndex],U,1);
+
+  thisDateTime := Piece(thisList[listIndex],U,5);
+
+  tempYr := '';
+  for k := 1 to 4 do
+   tempYr := tempYr + thisDateTime[k];
+
+  tempDt := '';
+  for k := 6 to 10 do
+   tempDt := tempDt + thisDateTime[k];
+
+  tempTime := '';
+  //Use 'Length' to prevent stuffing the control chars into the date when a trailing zero is missing
+  for k := 11 to Length(thisDateTime) do //16 do
+   tempTime := tempTime + thisDateTime[k];
+
+  newDtTime := '';
+  newDtTime := newDtTime + tempDt + '/' + tempYr + tempTime;
+  piece5 := newDtTime;
+
+  Result := piece1 +U+ piece2 +U+ piece3 +U+ piece4 +U+ piece5 +U+ piece6 +U+ piece7 +U+ piece8 +U+ piece9 +U+ piece10 +U+ piece11;
+end;
+
+procedure TfrmPtSel.AlertList;
+var
+  List: TStringList;
+  NewItem: TListItem;
+  I,J: Integer;
+  Comment,colSizes : String;
+begin
+  // Load the items
+  colSizes := '';
+  lstvAlerts.Items.Clear;
+  List := TStringList.Create;
+  NewItem := nil;
+  try
+     LoadNotifications(List);
+     for I := 0 to List.Count - 1 do
+       begin
+    //   List[i] := ConvertDate(List, i);  //cla commented out 8/9/04 CQ #4749
+
+         if Piece(List[I], U, 1) <> 'Forwarded by: ' then
+           begin
+              NewItem := lstvAlerts.Items.Add;
+              NewItem.Caption := Piece(List[I], U, 1);
+              for J := 2 to DelimCount(List[I], U) + 1 do
+                 NewItem.SubItems.Add(Piece(List[I], U, J));
+           end
+         else   //this list item is forwarding information
+           begin
+             NewItem.SubItems[5] := Piece(List[I], U, 2);
+             Comment := Piece(List[I], U, 3);
+             if Length(Comment) > 0 then NewItem.SubItems[8] := 'Fwd Comment: ' + Comment;
+           end;
+       end;
+   finally
+      List.Free;
+   end;
+   with lstvAlerts do
+     begin
+        colSizes := SizeHolder.GetSize(StrFPtSel_lstvAlerts_Co);
+        if colSizes = '' then begin
+          Columns[0].Width := 40;          //Info                 Caption
+          Columns[1].Width := 195;         //Patient              SubItems[0]
+          Columns[2].Width := 75;          //Location             SubItems[1]
+          Columns[3].Width := 95;          //Urgency              SubItems[2]
+          Columns[4].Width := 150;         //Alert Date/Time      SubItems[3]
+          Columns[5].Width := 310;         //Message Text         SubItems[4]
+          Columns[6].Width := 290;         //Forwarded By/When    SubItems[5]
+        end else begin
+          Columns[0].Width := StrToInt(piece(colSizes,',',1));          //Info                 Caption
+          Columns[1].Width := StrToInt(piece(colSizes,',',2));         //Patient              SubItems[0]
+          Columns[2].Width := StrToInt(piece(colSizes,',',3));          //Location             SubItems[1]
+          Columns[3].Width := StrToInt(piece(colSizes,',',4));          //Urgency              SubItems[2]
+          Columns[4].Width := StrToInt(piece(colSizes,',',5));         //Alert Date/Time      SubItems[3]
+          Columns[5].Width := StrToInt(piece(colSizes,',',6));         //Message Text         SubItems[4]
+          Columns[6].Width := StrToInt(piece(colSizes,',',7));         //Forwarded By/When    SubItems[5]
+        end;
+
+     //Items not displayed in Columns:     XQAID                SubItems[6]
+     //                                    Remove w/o process   SubItems[7]
+     //                                    Forwarding comments  SubItems[8]
+     end;
+  //with lstvAlerts do      ca comment out 12/24/03 to prevent default selection of first alert on list
+    //if (ItemIndex = -1) and (Items.Count > 0) then
+      //ItemIndex := 0;
+end;
+
+procedure TfrmPtSel.lstvAlertsColumnClick(Sender: TObject; Column: TListColumn);
+begin
+
+  if (FsortCol = Column.Index) then
+     FsortAscending := not FsortAscending;
+
+  if FsortAscending then
+     FsortDirection := 'F'
+  else
+     FsortDirection := 'R';
+
+  FsortCol := Column.Index;
+
+  if FsortCol = 4 then
+    ReformatAlertDateTime //  hds7397- ge 2/6/6 sort and display date/time column correctly - as requested
+  else
+     lstvAlerts.AlphaSort;
+
+  //Set the Notifications sort method to last-used sort-type
+  //ie., user clicked on which column header last use of CPRS?
+  case Column.Index of
+     0: rCore.SetSortMethod('I', FsortDirection);
+     1: rCore.SetSortMethod('P', FsortDirection);
+     2: rCore.SetSortMethod('L', FsortDirection);
+     3: rCore.SetSortMethod('U', FsortDirection);
+     4: rCore.SetSortMethod('D', FsortDirection);
+     5: rCore.SetSortMethod('M', FsortDirection);
+     6: rCore.SetSortMethod('F', FsortDirection);
+  end;
+end;
+
+procedure TfrmPtSel.lstvAlertsCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
+begin
+  if not(Sender is TListView) then Exit;
+  if FsortAscending then
+    begin
+      if FsortCol = 0 then Compare := CompareStr(Item1.Caption, Item2.Caption)
+      else Compare := CompareStr(Item1.SubItems[FsortCol - 1], Item2.SubItems[FsortCol - 1]);
+    end
+  else
+    begin
+      if FsortCol = 0 then Compare := CompareStr(Item2.Caption, Item1.Caption)
+      else Compare := CompareStr(Item2.SubItems[FsortCol - 1], Item1.SubItems[FsortCol - 1]);
+    end;
+end;
+
+function TfrmPtSel.DupLastSSN(const DFN: string): Boolean;
+var
+  i: integer;
+  frmPtDupSel: tForm;
+begin
+  Result := False;
+
+  // Check data on server for duplicates:
+  CallV('DG CHK BS5 XREF ARRAY', [DFN]);
+  if (RPCBrokerV.Results[0] <> '1') then // No duplicates found.
+    Exit;
+  Result := True;
+  PtStrs := TStringList.Create;
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    for i := 1 to Results.Count - 1 do
+    begin
+      if Piece(Results[i], U, 1) = '1' then
+        PtStrs.Add(Piece(Results[i], U, 2) + U + Piece(Results[i], U, 3) + U +
+                   FormatFMDateTimeStr('mmm dd,yyyy', Piece(Results[i], U, 4)) + U +
+                   Piece(Results[i], U, 5));
+    end;
+  end;
+
+  // Call form to get user's selection from expanded duplicate pt. list (resets DupDFN variable if applicable):
+  DupDFN := DFN;
+  frmPtDupSel:= TfrmDupPts.Create(Application);
+  with frmPtDupSel do
+    begin
+      try
+        ShowModal;
+      finally
+        frmPtDupSel.Release;
+      end;
+    end;
+end;
+
+procedure TfrmPtSel.ShowFlagInfo;
+begin
+  if (Pos('*SENSITIVE*',frmPtSelDemog.lblPtSSN.Caption)>0) then
+  begin
+//    pnlPrf.Visible := False;
+    Exit;
+  end;
+  if (flastpt <> cboPatient.ItemID) then
+  begin
+    HasActiveFlg(FlagList, HasFlag, cboPatient.ItemID);
+    flastpt := cboPatient.ItemID;
+  end;
+  if HasFlag then
+  begin
+//    FastAssign(FlagList, lstFlags.Items);
+//    pnlPrf.Visible := True;
+  end
+  //else pnlPrf.Visible := False;
+end;
+
+procedure TfrmPtSel.lstFlagsClick(Sender: TObject);
+begin
+{  if lstFlags.ItemIndex >= 0 then
+     ShowFlags(lstFlags.ItemID); }
+end;
+
+procedure TfrmPtSel.lstFlagsKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_RETURN then
+    lstFlagsClick(Self);
+end;
+
+procedure TfrmPtSel.lstvAlertsSelectItem(Sender: TObject; Item: TListItem;
+  Selected: Boolean);
+begin
+  if ScreenReaderSystemActive then
+  begin
+    FAlertsNotReady := TRUE;
+    PostMessage(Handle, UM_MISC, 0, 0);
+  end
+  else
+    ReadyAlert;
+end;
+
+procedure TfrmPtSel.ShowButts(ShowButts: Boolean);
+begin
+  cmdProcess.Enabled := ShowButts;
+  cmdRemove.Enabled := ShowButts;
+  cmdForward.Enabled := ShowButts;
+  cmdComments.Enabled := ShowButts and (lstvAlerts.SelCount = 1) and (lstvAlerts.Selected.SubItems[8] <> '');
+end;
+
+procedure TfrmPtSel.lstvAlertsInfoTip(Sender: TObject; Item: TListItem;
+  var InfoTip: String);
+begin
+  InfoTip := Item.SubItems[8];
+end;
+
+procedure TfrmPtSel.lstvAlertsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+{
+ //KW
+ 508: Allow non-sighted users to sort Notifications using Ctrl + <key>
+ Numbers in case stmnt are ASCII values for character keys.
+}
+begin
+  if FAlertsNotReady then exit;
+  if lstvAlerts.Focused then
+     begin
+     case Key of
+        VK_RETURN: cmdProcessClick(Sender); //Process all selected alerts
+        73,105: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[0]); //I,i
+        80,113: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[1]); //P,p
+        76,108: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[2]); //L,l
+        85,117: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[3]); //U,u
+        68,100: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[4]); //D,d
+        77,109: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[5]); //M,m
+        70,102: if (ssCtrl in Shift) then lstvAlertsColumnClick(Sender, lstvAlerts.Columns[6]); //F,f
+     end;
+     end;
+end;
+
+procedure TfrmPtSel.FormShow(Sender: TObject);
+{
+ //KW
+ Sort Alerts by last-used method for current user
+}
+var
+  sortResult: string;
+  sortMethod: string;
+begin
+  sortResult := rCore.GetSortMethod;
+  sortMethod := Piece(sortResult, U, 1);
+  FsortDirection := Piece(sortResult, U, 2);
+  if FsortDirection = 'F' then
+     FsortAscending := true
+  else
+     FsortAscending := false;
+
+  case sortMethod[1] of
+     'I','i': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[0]);
+     'P','p': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[1]);
+     'L','l': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[2]);
+     'U','u': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[3]);
+     'D','d': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[4]);
+     'M','m': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[5]);
+     'F','f': lstvAlertsColumnClick(Sender, lstvAlerts.Columns[6]);
+  end;
+
+end;
+
+//hds7397- ge 2/6/6 sort and display date/time column correctly - as requested
+procedure TfrmPtSel.ReadyAlert;
+begin
+  if lstvAlerts.SelCount <= 0 then ShowButts(False)
+  else ShowButts(True);
+  GetBAStatus(User.DUZ,Patient.DFN);
+  FAlertsNotReady := FALSE;
+end;
+
+procedure  TfrmPtSel.ReformatAlertDateTime;
+var
+  I,J: Integer;
+  inDateStr, holdDayTime,srtDate: String;
+begin
+  // convert date to yyyy/mm/dd prior to sort.
+ for J := 0 to lstvAlerts.items.count -1 do
+  begin
+    inDateStr := '';
+    srtDate := '';
+    holdDayTime := '';
+    inDateStr := lstvAlerts.Items[j].SubItems[3];
+    srtDate := ( (Piece( Piece(inDateStr,'/',3), '@',1)) + '/' + Piece(inDateStr,'/',1) + '/' + Piece(inDateStr,'/',2) +'@'+ Piece(inDateStr, '@',2) );
+    lstvAlerts.Items[j].SubItems[3] := srtDate;
+  end;
+   //sort the listview records by date
+  lstvAlerts.AlphaSort;
+ // loop thru lstvAlerts change date to yyyy/mm/dd
+ // sort list
+ // change alert date/time back to mm/dd/yyyy@time for display
+  for I := 0 to lstvAlerts.items.Count -1 do
+   begin
+     inDateStr := '';
+     srtDate := '';
+     holdDayTime := '';
+     inDateStr :=   lstvAlerts.Items[i].SubItems[3];
+     holdDayTime := Piece(inDateStr,'/',3);  // dd@time
+     lstvAlerts.Items[i].SubItems[3] := (Piece(inDateStr, '/', 2) + '/' + Piece(holdDayTime, '@',1) +'/'
+                                            + Piece(inDateStr,'/',1) + '@' + Piece(holdDayTime,'@',2) );
+  end;
+end;
+
+procedure TfrmPtSel.AdjustButtonSize(pButton:TButton);
+var
+thisButton: TButton;
+const Gap = 5;
+begin
+    thisButton := pButton;
+    if thisButton.Width < frmFrame.Canvas.TextWidth(thisButton.Caption) then      //CQ2737  GE
+    begin
+       FNotificationBtnsAdjusted := (thisButton.Width < frmFrame.Canvas.TextWidth(thisButton.Caption));
+       thisButton.Width := (frmFrame.Canvas.TextWidth(thisButton.Caption) + Gap+Gap);    //CQ2737  GE
+    end;
+    if thisButton.Height < frmFrame.Canvas.TextHeight(thisButton.Caption) then    //CQ2737  GE
+       thisButton.Height := (frmFrame.Canvas.TextHeight(thisButton.Caption) + Gap);   //CQ2737  GE
+end;
+
+procedure TfrmPtSel.AdjustNotificationButtons;
+const
+  Gap = 10; BigGap = 40;
+ // reposition buttons after resizing eliminate overlap.
+begin
+ if FNotificationBtnsAdjusted then
+ begin
+   cmdProcessAll.Left := (cmdProcessInfo.Left + cmdProcessInfo.Width + Gap);
+   cmdProcess.Left    := (cmdProcessAll.Left + cmdProcessAll.Width + Gap);
+   cmdForward.Left    := (cmdProcess.Left + cmdProcess.Width + Gap);
+   cmdComments.Left   := (cmdForward.Left + cmdForward.Width + Gap);
+   cmdRemove.Left     := (cmdComments.Left + cmdComments.Width + BigGap);
+ end;
+end;
+
+//vwpt enhanced //
+procedure TfrmPtSel.onclick1(Sender: TObject);  //click on RadioGroup1
+var index :integer;
+
+begin
+if RadioGroup1.ItemIndex >0 then
+ begin
+     itimson := 1  ;
+     cboPatient.Text := '' ;
+     if (frmPtSelOptns.radAll.Checked <> True)and (frmPtSelOptns.radDflt.Checked <> True) then
+     begin
+        radiogrp1index :=0  ;
+        RadioGroup1.ItemIndex  := 0;
+        RadioGroup1.SetFocus;
+        RadioGroup1.Refresh;
+     end
+     else
+     begin
+          index := RadioGroup1.ItemIndex;
+          radiogrp1index := index;
+          cboPatient.Hint  := 'Enter ' + piece(RadioGroup1.Items[index],'&',2);
+     end ;
+ end
+ else
+ begin
+       //itimson := 0;
+        cboPatient.Hint :=  'Enter name,Full SSN,Last4(x1234),''HRN'',DOB,or Phone#'  ;
+        radiogrp1index := 0;
+ end;
+
+end;
+ //end vwpt enhanced
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelDemog.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelDemog.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelDemog.dfm	(revision 1676)
@@ -0,0 +1,216 @@
+inherited frmPtSelDemog: TfrmPtSelDemog
+  Left = 550
+  Top = 250
+  BorderStyle = bsNone
+  Caption = 'frmPtSelDemog'
+  ClientHeight = 193
+  ClientWidth = 169
+  DefaultMonitor = dmDesktop
+  Position = poDesigned
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitLeft = 550
+  ExplicitTop = 250
+  ExplicitWidth = 177
+  ExplicitHeight = 227
+  PixelsPerInch = 96
+  TextHeight = 13
+  object orapnlMain: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 169
+    Height = 193
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object Memo: TCaptionMemo
+      Left = 0
+      Top = 0
+      Width = 169
+      Height = 193
+      Align = alClient
+      HideSelection = False
+      Lines.Strings = (
+        'Memo')
+      ReadOnly = True
+      TabOrder = 12
+      Visible = False
+      WantReturns = False
+    end
+    object lblPtName: TStaticText
+      Tag = 2
+      Left = 1
+      Top = 3
+      Width = 166
+      Height = 17
+      Caption = 'Winchester,Charles Emerson'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 11
+    end
+    object lblSSN: TStaticText
+      Tag = 1
+      Left = 1
+      Top = 17
+      Width = 29
+      Height = 17
+      Caption = 'SSN:'
+      TabOrder = 0
+    end
+    object lblPtSSN: TStaticText
+      Tag = 2
+      Left = 31
+      Top = 17
+      Width = 64
+      Height = 17
+      Caption = '123-45-1234'
+      TabOrder = 1
+    end
+    object lblDOB: TStaticText
+      Tag = 1
+      Left = 1
+      Top = 33
+      Width = 30
+      Height = 17
+      Caption = 'DOB:'
+      TabOrder = 2
+    end
+    object lblPtDOB: TStaticText
+      Tag = 2
+      Left = 31
+      Top = 32
+      Width = 63
+      Height = 17
+      Caption = 'Jun 26,1957'
+      TabOrder = 3
+    end
+    object lblPtSex: TStaticText
+      Tag = 2
+      Left = 1
+      Top = 47
+      Width = 66
+      Height = 17
+      Caption = 'Male, age 39'
+      TabOrder = 4
+    end
+    object lblPtVet: TStaticText
+      Tag = 2
+      Left = 1
+      Top = 62
+      Width = 41
+      Height = 17
+      Caption = 'Veteran'
+      TabOrder = 5
+    end
+    object lblPtSC: TStaticText
+      Tag = 2
+      Left = 1
+      Top = 75
+      Width = 118
+      Height = 17
+      Caption = 'Service Connected 50%'
+      TabOrder = 6
+    end
+    object lblLocation: TStaticText
+      Tag = 1
+      Left = 1
+      Top = 90
+      Width = 48
+      Height = 17
+      Caption = 'Location:'
+      TabOrder = 7
+    end
+    object lblPtRoomBed: TStaticText
+      Tag = 2
+      Left = 64
+      Top = 107
+      Width = 32
+      Height = 17
+      Caption = '257-B'
+      ShowAccelChar = False
+      TabOrder = 8
+    end
+    object lblPtLocation: TStaticText
+      Tag = 2
+      Left = 61
+      Top = 90
+      Width = 41
+      Height = 17
+      Caption = '2 EAST'
+      ShowAccelChar = False
+      TabOrder = 9
+    end
+    object lblRoomBed: TStaticText
+      Tag = 1
+      Left = 1
+      Top = 104
+      Width = 57
+      Height = 17
+      Caption = 'Room-Bed:'
+      TabOrder = 10
+    end
+    object lblPtHRN: TStaticText
+      Tag = 2
+      Left = 104
+      Top = 21
+      Width = 4
+      Height = 4
+      TabOrder = 13
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = orapnlMain'
+        'Status = stsDefault')
+      (
+        'Component = Memo'
+        'Status = stsDefault')
+      (
+        'Component = lblPtName'
+        'Status = stsDefault')
+      (
+        'Component = lblSSN'
+        'Status = stsDefault')
+      (
+        'Component = lblPtSSN'
+        'Status = stsDefault')
+      (
+        'Component = lblDOB'
+        'Status = stsDefault')
+      (
+        'Component = lblPtDOB'
+        'Status = stsDefault')
+      (
+        'Component = lblPtSex'
+        'Status = stsDefault')
+      (
+        'Component = lblPtVet'
+        'Status = stsDefault')
+      (
+        'Component = lblPtSC'
+        'Status = stsDefault')
+      (
+        'Component = lblLocation'
+        'Status = stsDefault')
+      (
+        'Component = lblPtRoomBed'
+        'Status = stsDefault')
+      (
+        'Component = lblPtLocation'
+        'Status = stsDefault')
+      (
+        'Component = lblRoomBed'
+        'Status = stsDefault')
+      (
+        'Component = lblPtHRN'
+        'Status = stsDefault')
+      (
+        'Component = frmPtSelDemog'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelDemog.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelDemog.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelDemog.pas	(revision 1676)
@@ -0,0 +1,199 @@
+unit fPtSelDemog;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPtSelDemog = class(TfrmBase508Form)
+    orapnlMain: TORAutoPanel;
+    lblSSN: TStaticText;
+    lblPtSSN: TStaticText;
+    lblDOB: TStaticText;
+    lblPtDOB: TStaticText;
+    lblPtSex: TStaticText;
+    lblPtVet: TStaticText;
+    lblPtSC: TStaticText;
+    lblLocation: TStaticText;
+    lblPtRoomBed: TStaticText;
+    lblPtLocation: TStaticText;
+    lblRoomBed: TStaticText;
+    lblPtName: TStaticText;
+    Memo: TCaptionMemo;
+    lblPtHRN: TStaticText;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+    FLastDFN: string;
+    FOldWinProc :TWndMethod;
+    procedure NewWinProc(var Message: TMessage);
+  public
+    procedure ClearIDInfo;
+    procedure ShowDemog(ItemID: string);
+    procedure ToggleMemo;
+  end;
+
+var
+  frmPtSelDemog: TfrmPtSelDemog;
+
+implementation
+
+uses rCore, VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+const
+{ constants referencing the value of the tag property in components }
+  TAG_HIDE     =  1;                             // labels to be hidden
+  TAG_CLEAR    =  2;                             // labels to be cleared
+
+procedure TfrmPtSelDemog.ClearIDInfo;
+{ clears controls with patient ID info (controls have '2' in their Tag property }
+var
+  i: Integer;
+begin
+  FLastDFN := '';
+  with orapnlMain do
+  for i := 0 to ControlCount - 1 do
+  begin
+    if Controls[i].Tag = TAG_HIDE then Controls[i].Visible := False;
+    if Controls[i].Tag = TAG_CLEAR then with Controls[i] as TStaticText do Caption := '';
+  end;
+  Memo.Clear;
+end;
+
+procedure TfrmPtSelDemog.ShowDemog(ItemID: string);
+{ gets a record of patient indentifying information from the server and displays it }
+var
+  PtRec: TPtIDInfo;
+  i: Integer;
+
+begin
+  if ItemID = FLastDFN then Exit;
+  Memo.Clear;
+  FLastDFN := ItemID;
+  PtRec := GetPtIDInfo(ItemID);
+  with PtRec do
+  begin
+    Memo.Lines.Add(Name);
+    Memo.Lines.Add(lblSSN.Caption + ' ' + SSN + '.');
+    Memo.Lines.Add(lblDOB.Caption + ' ' + DOB + '.');
+    if Sex <> '' then
+      Memo.Lines.Add(Sex + '.');
+    if Vet <> '' then
+      Memo.Lines.Add(Vet + '.');
+    if SCsts <> '' then
+      Memo.Lines.Add(SCsts + '.');
+    if Location <> '' then
+      Memo.Lines.Add(lblLocation.Caption + ' ' + Location + '.');
+    if RoomBed <> '' then
+      Memo.Lines.Add(lblRoomBed.Caption + ' ' + RoomBed + '.');
+
+    lblPtName.Caption     := Name;
+    lblPtSSN.Caption      := SSN;
+    lblPtDOB.Caption      := DOB;
+    lblPtSex.Caption      := Sex {+ ', age ' + Age};
+    lblPtSC.Caption       := SCSts;
+    lblPtVet.Caption      := Vet;
+    lblPtLocation.Caption := Location;
+    lblPtRoomBed.Caption  := RoomBed;
+    //VWPT
+    if HRN <> '' then lblPtHRN.Caption      := 'HRN: '+HRN
+    else    lblPtHRN.Caption :=''  ;
+  end;
+  with orapnlMain do for i := 0 to ControlCount - 1 do
+    if Controls[i].Tag = TAG_HIDE then Controls[i].Visible := True;
+  if lblPtLocation.Caption = '' then
+    lblLocation.Hide
+  else
+    lblLocation.Show;
+  if lblPtRoomBed.Caption = ''  then
+    lblRoomBed.Hide
+  else
+    lblRoomBed.Show;
+  Memo.SelectAll;
+end;
+
+procedure TfrmPtSelDemog.ToggleMemo;
+begin
+  if Memo.Visible then
+  begin
+    Memo.Hide;
+  end
+  else
+  begin
+    Memo.Show;
+    Memo.BringToFront;
+  end;
+end;
+
+procedure TfrmPtSelDemog.FormCreate(Sender: TObject);
+begin
+  FOldWinProc := orapnlMain.WindowProc;
+  orapnlMain.WindowProc := NewWinProc;
+end;
+
+procedure TfrmPtSelDemog.NewWinProc(var Message: TMessage);
+const
+  Gap = 4;
+  MaxFont = 10;
+  var uHeight:integer;
+
+
+begin
+  if(assigned(FOldWinProc)) then FOldWinProc(Message);
+  if(Message.Msg = WM_Size) then
+  begin
+    if(lblPtSSN.Left < (lblSSN.Left+lblSSN.Width+Gap)) then
+      lblPtSSN.Left := (lblSSN.Left+lblSSN.Width+Gap);
+    if(lblPtDOB.Left < (lblDOB.Left+lblDOB.Width+Gap)) then
+      lblPtDOB.Left := (lblDOB.Left+lblDOB.Width+Gap);
+    if(lblPtSSN.Left < lblPtDOB.Left) then
+      lblPtSSN.Left := lblPtDOB.Left
+    else
+      lblPtDOB.Left := lblPtSSN.Left;
+
+    if(lblPtLocation.Left < (lblLocation.Left+lblLocation.Width+Gap)) then
+      lblPtLocation.Left := (lblLocation.Left+lblLocation.Width+Gap);
+    if(lblPtRoomBed.Left < (lblRoomBed.Left+lblRoomBed.Width+Gap)) then
+      lblPtRoomBed.Left := (lblRoomBed.Left+lblRoomBed.Width+Gap);
+    if(lblPtLocation.Left < lblPtRoomBed.Left) then
+      lblPtLocation.Left := lblPtRoomBed.Left
+    else
+      lblPtRoomBed.Left := lblPtLocation.Left;
+  end;
+  if frmPtSelDemog.Canvas.Font.Size > MaxFont then
+  begin
+    uHeight         := frmPtSelDemog.Canvas.TextHeight(lblPtSSN.Caption)-2;
+    lblPtSSN.Top    := (lblPtName.Top + uHeight);
+    lblSSN.Top      := lblPtSSN.Top;
+    lblPtDOB.Height := uHeight;
+    lblPtDOB.Top    := (lblPtSSn.Top + uHeight);
+    lblDOB.Top      := lblPtDOB.Top;
+    lblPtSex.Height :=  uHeight;
+    lblPtSex.Top    := (lblPtDOB.Top + uHeight);
+    lblPtVet.Height :=  uHeight;
+    lblPtVet.Top    := (lblPtSex.Top + uHeight);
+    lblPtSC.Height  := uHeight;
+    lblPtSC.Top     :=  lblPtVet.Top;
+    lblLocation.Height := uHeight;
+    lblLocation.Top := ( lblPtVet.Top + uHeight);
+    lblPtLocation.Top := lblLocation.Top;
+    lblRoomBed.Height := uHeight;
+    lblRoomBed.Top    :=(lblLocation.Top + uHeight)+ 2;
+    lblPtRoomBed.Height := uHeight;
+    lblPtRoomBed.Top  := lblRoomBed.Top ;
+  end;
+end;
+
+procedure TfrmPtSelDemog.FormDestroy(Sender: TObject);
+begin
+  orapnlMain.WindowProc := FOldWinProc;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPtSelDemog);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelMsg.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelMsg.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelMsg.dfm	(revision 1676)
@@ -0,0 +1,60 @@
+inherited frmPtSelMsg: TfrmPtSelMsg
+  Left = 375
+  Top = 421
+  Caption = 'Patient Lookup Messages'
+  ClientHeight = 147
+  ClientWidth = 367
+  FormStyle = fsStayOnTop
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 375
+  ExplicitHeight = 174
+  DesignSize = (
+    367
+    147)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object cmdClose: TButton [0]
+    Left = 158
+    Top = 114
+    Width = 60
+    Height = 21
+    Anchors = [akLeft, akRight, akBottom]
+    Cancel = True
+    Caption = 'Close'
+    Default = True
+    TabOrder = 0
+    OnClick = cmdCloseClick
+  end
+  object memMessages: TRichEdit [1]
+    Left = 0
+    Top = 0
+    Width = 367
+    Height = 107
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    Color = clCream
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 1
+    WantReturns = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdClose'
+        'Status = stsDefault')
+      (
+        'Component = memMessages'
+        'Status = stsDefault')
+      (
+        'Component = frmPtSelMsg'
+        'Status = stsDefault'))
+  end
+  object timClose: TTimer
+    OnTimer = timCloseTimer
+    Left = 6
+    Top = 126
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelMsg.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelMsg.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelMsg.pas	(revision 1676)
@@ -0,0 +1,142 @@
+unit fPtSelMsg;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ComCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPtSelMsg = class(TfrmBase508Form)
+    cmdClose: TButton;
+    timClose: TTimer;
+    memMessages: TRichEdit;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure cmdCloseClick(Sender: TObject);
+    procedure timCloseTimer(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+    FSeconds: Integer;
+    FChanging: boolean;
+    FEventsActive: boolean;
+    FOldActiveFormChanged: TNotifyEvent;
+    FOldTabChanged: TNotifyEvent;
+    procedure ClearEvents;
+    procedure TabChanged(Sender: TObject);
+    procedure ActiveFormChanged(Sender: TObject);
+  public
+    { Public declarations }
+  end;
+
+procedure ShowPatientSelectMessages(const AMsg: string);
+procedure HidePatientSelectMessages;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, uCore, fFrame;
+
+var
+  frmPtSelMsg: TfrmPtSelMsg = nil;
+
+procedure ShowPatientSelectMessages(const AMsg: string);
+begin
+  if assigned(frmPtSelMsg) then
+  begin
+    frmPtSelMsg.Free;
+    frmPtSelMsg := nil;
+  end;
+  if Length(AMsg) = 0 then Exit;
+  frmPtSelMsg := TfrmPtSelMsg.Create(Application);
+  ResizeAnchoredFormToFont(frmPtSelMsg);
+  frmPtSelMsg.memMessages.Lines.SetText(PChar(AMsg));  // Text := AMsg doesn't seem to work
+  frmPtSelMsg.memMessages.SelStart := 0;
+  if User.PtMsgHang = 0
+    then frmPtSelMsg.timClose.Enabled := False
+    else
+    begin
+      //frmPtSelMsg.timClose.Interval := User.PtMsgHang * 1000;
+      frmPtSelMsg.FSeconds := User.PtMsgHang;
+      frmPtSelMsg.timClose.Enabled := True;
+    end;
+  frmPtSelMsg.Show;
+end;
+
+procedure HidePatientSelectMessages;
+begin
+  if assigned(frmPtSelMsg) then
+  begin
+    frmPtSelMsg.Free;
+    frmPtSelMsg := nil;
+  end;
+end;
+
+procedure TfrmPtSelMsg.timCloseTimer(Sender: TObject);
+begin
+  Dec(FSeconds);
+  if FSeconds > 0
+    then Caption := 'Patient Lookup Messages   (Auto-Close in ' + IntToStr(FSeconds) + ' seconds)'
+    else Close;
+end;
+
+procedure TfrmPtSelMsg.cmdCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmPtSelMsg.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree;
+end;
+
+procedure TfrmPtSelMsg.FormCreate(Sender: TObject);
+begin
+  FOldActiveFormChanged := Screen.OnActiveFormChange;
+  Screen.OnActiveFormChange := ActiveFormChanged;
+  FOldTabChanged := frmFrame.OnTabChanged;
+  frmFrame.OnTabChanged := TabChanged;
+  FEventsActive := TRUE;
+end;
+
+procedure TfrmPtSelMsg.FormDestroy(Sender: TObject);
+begin
+  ClearEvents;
+  frmPtSelMsg := nil;
+end;
+
+procedure TfrmPtSelMsg.ActiveFormChanged(Sender: TObject);
+begin
+  if assigned(FOldActiveFormChanged) then
+    FOldActiveFormChanged(Sender);
+  if (not FChanging) and (Screen.ActiveForm <> Self) and
+     (not (csDestroying in Self.ComponentState)) then
+  begin
+    FChanging := TRUE;
+    try
+      SetFocus;
+    finally
+      FChanging := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmPtSelMsg.ClearEvents;
+begin
+  if FEventsActive then
+  begin
+    Screen.OnActiveFormChange := FOldActiveFormChanged;
+    frmFrame.OnTabChanged := FOldTabChanged;
+    FEventsActive := FALSE;
+  end;
+end;
+
+procedure TfrmPtSelMsg.TabChanged(Sender: TObject);
+begin
+  if assigned(FOldTabChanged) then
+    FOldTabChanged(Sender);
+  ClearEvents;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptSave.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptSave.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptSave.dfm	(revision 1676)
@@ -0,0 +1,90 @@
+inherited frmPtSelOptSave: TfrmPtSelOptSave
+  Left = 452
+  Top = 229
+  BorderStyle = bsDialog
+  ClientHeight = 204
+  ClientWidth = 272
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlClinSave: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 272
+    Height = 204
+    Align = alClient
+    BevelWidth = 2
+    TabOrder = 0
+    object lblClinSettings: TMemo
+      Left = 16
+      Top = 10
+      Width = 245
+      Height = 75
+      TabStop = False
+      BorderStyle = bsNone
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      ReadOnly = True
+      TabOrder = 3
+    end
+    object rGrpClinSave: TKeyClickRadioGroup
+      Left = 48
+      Top = 98
+      Width = 177
+      Height = 59
+      Caption = 'Select Desired Clinic Save Option:'
+      Items.Strings = (
+        'Save For All Days of Week'
+        'Save For Current Day Only')
+      TabOrder = 0
+      TabStop = True
+      OnClick = rGrpClinSaveClick
+    end
+    object btnOK: TButton
+      Left = 50
+      Top = 168
+      Width = 75
+      Height = 25
+      Caption = 'OK'
+      TabOrder = 1
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 150
+      Top = 168
+      Width = 75
+      Height = 25
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = btnCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlClinSave'
+        'Status = stsDefault')
+      (
+        'Component = lblClinSettings'
+        'Status = stsDefault')
+      (
+        'Component = rGrpClinSave'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmPtSelOptSave'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptSave.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptSave.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptSave.pas	(revision 1676)
@@ -0,0 +1,80 @@
+unit fPtSelOptSave;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, ORFn, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPtSelOptSave = class(TfrmBase508Form)
+    pnlClinSave: TPanel;
+    rGrpClinSave: TKeyClickRadioGroup;
+    lblClinSettings: TMemo;
+    btnOK: TButton;
+    btnCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure rGrpClinSaveClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmPtSelOptSave: TfrmPtSelOptSave;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rCore, fPtSelOptns;
+
+procedure TfrmPtSelOptSave.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  self.caption := 'Save Patient List Settings';
+  fPtSelOptns.clinDoSave := false; // Initialize.
+  fPtSelOptns.clinSaveToday := false;
+  lblClinSettings.text := 'Save ' + fPtSelOptns.clinDefaults +
+                             CRLF + ' defaults as follows?';
+  rGrpClinSave.itemIndex := -1;
+//  rGrpClinSave.TabStop := True;
+  btnOK.Enabled := False;
+end;
+
+procedure TfrmPtSelOptSave.btnCancelClick(Sender: TObject);
+begin
+  close;
+end;
+
+procedure TfrmPtSelOptSave.btnOKClick(Sender: TObject);
+begin
+
+if ((rGrpClinSave.itemIndex < 0) or (rGrpClinSave.itemIndex >1)) then
+  begin
+    InfoBox('No selection made', 'Clinic Save Options', MB_OK);
+    exit;
+  end;
+  if (rGrpClinSave.itemIndex = 0) then
+    fPtSelOptns.clinSaveToday := false;
+  if (rGrpClinSave.itemIndex = 1) then
+    fPtSelOptns.clinSaveToday := true;
+  fPtSelOptns.clinDoSave := true;
+close;
+
+end;
+
+procedure TfrmPtSelOptSave.rGrpClinSaveClick(Sender: TObject);
+var
+  Chosen: Boolean;
+begin
+  Chosen := rGrpClinSave.ItemIndex >= 0;
+//  rGrpClinSave.TabStop := not Chosen;
+  btnOK.Enabled := Chosen;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptns.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptns.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptns.dfm	(revision 1676)
@@ -0,0 +1,223 @@
+inherited frmPtSelOptns: TfrmPtSelOptns
+  Left = 200
+  Top = 190
+  BorderStyle = bsNone
+  Caption = 'frmPtSelOptns'
+  ClientHeight = 269
+  ClientWidth = 190
+  DefaultMonitor = dmDesktop
+  Position = poDesigned
+  OnCreate = FormCreate
+  ExplicitLeft = 200
+  ExplicitTop = 190
+  ExplicitWidth = 198
+  ExplicitHeight = 303
+  PixelsPerInch = 96
+  TextHeight = 13
+  object orapnlMain: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 190
+    Height = 269
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblPtList: TLabel
+      Left = 4
+      Top = 1
+      Width = 52
+      Height = 13
+      Caption = 'Patient List'
+    end
+    object lblDateRange: TLabel
+      Left = 4
+      Top = 226
+      Width = 98
+      Height = 13
+      Caption = 'List Appointments for'
+    end
+    object bvlPtList: TORAutoPanel
+      Left = 4
+      Top = 24
+      Width = 180
+      Height = 84
+      BevelOuter = bvLowered
+      TabOrder = 0
+      object radAll: TRadioButton
+        Tag = 18
+        Left = 116
+        Top = 58
+        Width = 55
+        Height = 17
+        Caption = '&All'
+        TabOrder = 6
+        OnClick = radHideSrcClick
+      end
+      object radWards: TRadioButton
+        Tag = 17
+        Left = 116
+        Top = 40
+        Width = 58
+        Height = 16
+        Caption = '&Wards'
+        TabOrder = 5
+        OnClick = radShowSrcClick
+      end
+      object radClinics: TRadioButton
+        Tag = 16
+        Left = 116
+        Top = 20
+        Width = 60
+        Height = 17
+        Caption = '&Clinics'
+        ParentShowHint = False
+        ShowHint = False
+        TabOrder = 4
+        OnClick = radLongSrcClick
+      end
+      object radSpecialties: TRadioButton
+        Tag = 14
+        Left = 1
+        Top = 58
+        Width = 115
+        Height = 17
+        Caption = '&Specialties'
+        TabOrder = 3
+        OnClick = radShowSrcClick
+      end
+      object radTeams: TRadioButton
+        Tag = 13
+        Left = 1
+        Top = 39
+        Width = 116
+        Height = 17
+        Caption = '&Team/Personal'
+        TabOrder = 2
+        OnClick = radShowSrcClick
+      end
+      object radProviders: TRadioButton
+        Tag = 12
+        Left = 1
+        Top = 20
+        Width = 107
+        Height = 17
+        Caption = '&Providers'
+        TabOrder = 1
+        OnClick = radLongSrcClick
+      end
+      object radDflt: TRadioButton
+        Tag = 11
+        Left = 1
+        Top = 3
+        Width = 162
+        Height = 17
+        Caption = 'No &Default'
+        TabOrder = 0
+        OnClick = radHideSrcClick
+      end
+    end
+    object cboList: TORComboBox
+      Left = 4
+      Top = 109
+      Width = 169
+      Height = 116
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Patient List'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 2
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      OnExit = cboListExit
+      OnKeyPause = cboListKeyPause
+      OnMouseClick = cboListMouseClick
+      OnNeedData = cboListNeedData
+      CharsNeedMatch = 1
+    end
+    object cboDateRange: TORComboBox
+      Left = 4
+      Top = 244
+      Width = 169
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'List Appointments for'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnExit = cboDateRangeExit
+      OnMouseClick = cboDateRangeMouseClick
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = orapnlMain'
+        'Status = stsDefault')
+      (
+        'Component = bvlPtList'
+        'Status = stsDefault')
+      (
+        'Component = radAll'
+        'Status = stsDefault')
+      (
+        'Component = radWards'
+        'Status = stsDefault')
+      (
+        'Component = radClinics'
+        'Status = stsDefault')
+      (
+        'Component = radSpecialties'
+        'Status = stsDefault')
+      (
+        'Component = radTeams'
+        'Status = stsDefault')
+      (
+        'Component = radProviders'
+        'Status = stsDefault')
+      (
+        'Component = radDflt'
+        'Status = stsDefault')
+      (
+        'Component = cboList'
+        'Status = stsDefault')
+      (
+        'Component = cboDateRange'
+        'Status = stsDefault')
+      (
+        'Component = frmPtSelOptns'
+        'Status = stsDefault'))
+  end
+  object calApptRng: TORDateRangeDlg
+    DateOnly = True
+    Instruction = 'Enter a date range -'
+    LabelStart = 'First Appointment Date'
+    LabelStop = 'Last Appointment Date'
+    RequireTime = False
+    Format = 'mmm d,yy'
+    Left = 72
+    Top = 128
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptns.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptns.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSelOptns.pas	(revision 1676)
@@ -0,0 +1,469 @@
+unit fPtSelOptns;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORDtTmRng, ORCtrls, StdCtrls, ExtCtrls, ORFn, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TSetCaptionTopProc = procedure of object;
+  TSetPtListTopProc = procedure(IEN: Int64) of object;
+
+  TfrmPtSelOptns = class(TfrmBase508Form)
+    orapnlMain: TORAutoPanel;
+    bvlPtList: TORAutoPanel;
+    lblPtList: TLabel;
+    lblDateRange: TLabel;
+    cboList: TORComboBox;
+    cboDateRange: TORComboBox;
+    calApptRng: TORDateRangeDlg;
+    radDflt: TRadioButton;
+    radProviders: TRadioButton;
+    radTeams: TRadioButton;
+    radSpecialties: TRadioButton;
+    radClinics: TRadioButton;
+    radWards: TRadioButton;
+    radAll: TRadioButton;
+    procedure radHideSrcClick(Sender: TObject);
+    procedure radShowSrcClick(Sender: TObject);
+    procedure radLongSrcClick(Sender: TObject);
+    procedure cboListExit(Sender: TObject);
+    procedure cboListKeyPause(Sender: TObject);
+    procedure cboListMouseClick(Sender: TObject);
+    procedure cboListNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cboDateRangeExit(Sender: TObject);
+    procedure cboDateRangeMouseClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    FLastTopList: string;
+    FLastDateIndex: Integer;
+    FSrcType: Integer;
+    FSetCaptionTop: TSetCaptionTopProc;
+    FSetPtListTop: TSetPtListTopProc;
+    procedure HideDateRange;
+    procedure ShowDateRange;
+  public
+    function IsLast5(x: string): Boolean;
+    function IsFullSSN(x: string): Boolean;
+    //vwpt voe
+    function IsEnhanced(x: String) : Boolean ;
+    function IsPatientName(x: String) :Boolean;
+    //end
+    procedure cmdSaveListClick(Sender: TObject);
+    procedure SetDefaultPtList(Dflt: string);
+    procedure UpdateDefault;
+    property LastTopList: string read FLastTopList write FLastTopList;
+    property SrcType: Integer read FSrcType write FSrcType;
+    property SetCaptionTopProc: TSetCaptionTopProc read FSetCaptionTop write FSetCaptionTop;
+    property SetPtListTopProc: TSetPtListTopProc   read FSetPtListTop  write FSetPtListTop;
+  end;
+
+const
+{ constants referencing the value of the tag property in components }
+  TAG_SRC_DFLT = 11;                             // default patient list
+  TAG_SRC_PROV = 12;                             // patient list by provider
+  TAG_SRC_TEAM = 13;                             // patient list by team
+  TAG_SRC_SPEC = 14;                             // patient list by treating specialty
+  TAG_SRC_CLIN = 16;                             // patient list by clinic
+  TAG_SRC_WARD = 17;                             // patient list by ward
+  TAG_SRC_ALL  = 18;                             // all patients
+
+var
+  frmPtSelOptns: TfrmPtSelOptns;
+  //frmPtSelOptns: TfrmPtSelOptns;
+  clinDoSave, clinSaveToday: boolean;
+  clinDefaults: string;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rCore, fPtSelOptSave, fPtSel, VA508AccessibilityRouter;
+
+const
+  TX_LS_DFLT = 'This is already saved as your default patient list settings.';
+  TX_LS_PROV = 'A provider must be selected to save patient list settings.';
+  TX_LS_TEAM = 'A team must be selected to save patient list settings.';
+  TX_LS_SPEC = 'A specialty must be selected to save patient list settings.';
+  TX_LS_CLIN = 'A clinic and a date range must be selected to save settings for a clinic.';
+  TX_LS_WARD = 'A ward must be selected to save patient list settings.';
+  TC_LS_FAIL = 'Unable to Save Patient List Settings';
+  TX_LS_SAV1 = 'Save ';
+  TX_LS_SAV2 = CRLF + 'as your default patient list setting?';
+  TC_LS_SAVE = 'Save Patient List Settings';
+
+function TfrmPtSelOptns.IsLast5(x: string): Boolean;
+{ returns true if string matchs patterns: A9999 or 9999 (BS & BS5 xrefs for patient lookup) }
+var
+  i: Integer;
+begin
+  Result := False;
+  if not ((Length(x) = 4) or (Length(x) = 5)) then Exit;
+  if Length(x) = 5 then
+  begin
+    if not (x[1] in ['A'..'Z', 'a'..'z']) then Exit;
+    x := Copy(x, 2, 4);
+  end;
+  for i := 1 to 4 do if not (x[i] in ['0'..'9']) then Exit;
+  Result := True;
+end;
+
+function TfrmPtSelOptns.IsPatientName(x: string):Boolean;
+ { returns true if string matchs patient name pattern: all alphabetic," ",",","-","." only }
+var
+  i: Integer;
+begin
+  Result := False;
+
+   for i := 1 to Length(x) do if not (x[i] in ['A'..'Z', 'a'..'z', ' '..' ', ','..'.']) then Exit;
+
+  Result := True;
+end;
+
+function TfrmPtSelOptns.IsEnhanced(x: String) : boolean ;
+var
+  i: integer;
+begin
+  //Result := True;
+  //for i:= 1 to Length(x) do if (x[i] in ['0'..'9']) then Exit;
+  //for i:= 1 to Length(x) do
+  //begin
+  // if ((x[i] = '(') or (x[i] = ')') or (x[i] = '-') or (x[i] = '/') or (x[i] = ',') or (x[i] = '\')) then Exit;
+  //end;
+  Result := True;   //False;
+  if (frmPtSelOptns.radAll.Checked <> True)and (frmPtSelOptns.radDflt.Checked <> True) then Result := False;
+end;
+
+function TfrmPtSelOptns.IsFullSSN(x: string): boolean;
+var
+  i: integer;
+begin
+  Result := False;
+  if (Length(x) < 9) or (Length(x) > 12) then Exit;
+  case Length(x) of
+    9:  // no dashes, no 'P'
+        for i := 1 to 9 do if not (x[i] in ['0'..'9']) then Exit;
+   10:  // no dashes, with 'P'
+        begin
+          for i := 1 to 9 do if not (x[i] in ['0'..'9']) then Exit;
+          if (Uppercase(x[10]) <> 'P') then Exit;
+        end;
+   11:  // dashes, no 'P'
+        begin
+          if (x[4] <> '-') or (x[7] <> '-') then Exit;
+          x := Copy(x,1,3) + Copy(x,5,2) + Copy(x,8,4);
+          for i := 1 to 9 do if not (x[i] in ['0'..'9']) then Exit;
+        end;
+   12:  // dashes, with 'P'
+        begin
+          if (x[4] <> '-') or (x[7] <> '-') then Exit;
+          x := Copy(x,1,3) + Copy(x,5,2) + Copy(x,8,5);
+          for i := 1 to 9 do if not (x[i] in ['0'..'9']) then Exit;
+          if UpperCase(x[10]) <> 'P' then Exit;
+        end;
+  end;
+  Result := True;
+end;
+
+procedure TfrmPtSelOptns.radHideSrcClick(Sender: TObject);
+{ called by radDflt & radAll - hides list source combo box and refreshes patient list }
+begin
+  cboList.Pieces := '2';
+  FSrcType := TControl(Sender).Tag;
+  FLastTopList := '';
+  HideDateRange;
+  cboList.Visible := False;
+  cboList.Caption := TRadioButton(Sender).Caption;
+  FSetCaptionTop;
+  FSetPtListTop(0);
+end;
+
+procedure TfrmPtSelOptns.radShowSrcClick(Sender: TObject);
+{ called by radTeams, radSpecialties, radWards - shows items for the list source }
+begin
+  cboList.Pieces := '2';
+  FSrcType := TControl(Sender).Tag;
+  FLastTopList := '';
+  HideDateRange;
+  FSetCaptionTop;
+  with cboList do
+  begin
+    Clear;
+    LongList := False;
+    Sorted := True;
+    case FSrcType of
+    TAG_SRC_TEAM: ListTeamAll(Items);
+    TAG_SRC_SPEC: ListSpecialtyAll(Items);
+    TAG_SRC_WARD: ListWardAll(Items);
+    end;
+    Visible := True;
+  end;
+  cboList.Caption := TRadioButton(Sender).Caption;
+end;
+
+procedure TfrmPtSelOptns.radLongSrcClick(Sender: TObject);
+{ called by radProviders, radClinics - switches to long list & shows items for the list source }
+begin
+    //vwpt remove other radio button selections
+ if fPtSel.radiogrp1index <> 0 then
+ begin
+      FSrcType := TControl(Sender).Tag;
+      case FSrcType of
+    TAG_SRC_TEAM: begin
+                    radTeams.Checked := False;
+                    radTeams.Refresh;
+                    radAll.Checked := True;
+                    radAll.Refresh;
+                  end;
+    TAG_SRC_SPEC: begin
+                    radSpecialties.Checked := False;
+                    radSpecialties.Refresh;
+                    radAll.Checked := True;
+                    radAll.Refresh;
+                  end;
+    TAG_SRC_WARD: begin
+                    radWards.Checked := False;
+                    radWards.Refresh;
+                    radAll.Checked := True;
+                    radAll.Refresh;
+                  end;
+    end;
+  //frmPtSel.RadioGroup1.SetFocus;
+  //frmPtSel.RadioGroup1.Refresh;
+ end
+ else
+ begin
+  //end vwpt
+  cboList.Pieces := '2';
+  FSrcType := TControl(Sender).Tag;
+  FLastTopList := '';
+  FSetCaptionTop;
+  with cboList do
+  begin
+    Sorted := False;
+    LongList := True;
+    Clear;
+    case FSrcType of
+    TAG_SRC_PROV: begin
+                    cboList.Pieces := '2,3';
+                    HideDateRange;
+                    ListProviderTop(Items);
+                  end;
+    TAG_SRC_CLIN: begin
+                    ShowDateRange;
+                    ListClinicTop(Items);
+                  end;
+    end;
+    InitLongList('');
+    Visible := True;
+  end;
+  cboList.Caption := TRadioButton(Sender).Caption;
+ end; //else
+end;
+
+procedure TfrmPtSelOptns.cboListExit(Sender: TObject);
+begin
+  with cboList do if ItemIEN > 0 then FSetPtListTop(ItemIEN);
+end;
+
+procedure TfrmPtSelOptns.cboListKeyPause(Sender: TObject);
+begin
+  with cboList do if ItemIEN > 0 then FSetPtListTop(ItemIEN);
+end;
+
+procedure TfrmPtSelOptns.cboListMouseClick(Sender: TObject);
+begin
+  with cboList do if ItemIEN > 0 then FSetPtListTop(ItemIEN);
+end;
+
+procedure TfrmPtSelOptns.cboListNeedData(Sender: TObject; const StartFrom: String; Direction, InsertAt: Integer);
+{CQ6363 Notes: This procedure was altered for CQ6363, but then changed back to its original form, as it is now.
+
+The problem is that in LOM1T, there are numerous entries in the HOSPITAL LOCATION file (44) that are lower-case,
+resulting in a "B" xref that looks like this:
+
+^SC("B","module 1x",2897) = 
+^SC("B","pt",3420) = 
+^SC("B","read",3146) = 
+^SC("B","zz GIM/WONG NEW",2902) = 
+^SC("B","zz bhost/arm",3076) = 
+^SC("B","zz bhost/day",2698) = 
+^SC("B","zz bhost/eve/ornelas",2885) = 
+^SC("B","zz bhost/resident",2710) = 
+^SC("B","zz bhost/sws",2946) = 
+^SC("B","zz c&P ortho/patel",3292) = 
+^SC("B","zz mhc md/kelley",320) = 
+^SC("B","zz/mhc/p",1076) = 
+^SC("B","zzMHC MD/THRASHER",1018) = 
+^SC("B","zztest clinic",3090) = 
+^SC("B","zzz-hbpc-phone-jung",1830) = 
+^SC("B","zzz-hbpcphone cocohran",1825) = 
+^SC("B","zzz-home service",1428) = 
+^SC("B","zzz-phone-deloye",1834) = 
+^SC("B","zzz/gmonti impotence",2193) =
+
+ASCII sort mode puts those entries at the end of the "B" xref, but when retrieved by CPRS and upper-cased, it
+messes up the logic of the combo box.  This problem has been around since there was a CPRS GUI, and the best
+possible fix is to require those entries to either be in all uppercase or be removed.  If that's cleaned up,
+the logic below will work correctly.
+}
+begin
+  case frmPtSelOptns.SrcType of
+  TAG_SRC_PROV: cboList.ForDataUse(SubSetOfProviders(StartFrom, Direction));
+  TAG_SRC_CLIN: cboList.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+  end;
+end;
+
+procedure TfrmPtSelOptns.HideDateRange;
+begin
+  lblDateRange.Hide;
+  cboDateRange.Hide;
+  cboList.Height := cboDateRange.Top - cboList.Top + cboDateRange.Height;
+end;
+
+procedure TfrmPtSelOptns.ShowDateRange;
+var
+  DateString, DRStart, DREnd: string;
+  TStart, TEnd: boolean;
+begin
+  with cboDateRange do if Items.Count = 0 then
+  begin
+    ListDateRangeClinic(Items);
+    ItemIndex := 0;
+  end;
+  DateString := DfltDateRangeClinic; // Returns "^T" even if no settings.
+  DRStart := piece(DateString,U,1);
+  DREnd := piece(DateString,U,2);
+  if (DRStart <> ' ') then
+    begin
+      TStart := false;
+      TEnd := false;
+      if ((DRStart = 'T') or (DRStart = 'TODAY')) then
+        TStart := true;
+      if ((DREnd = 'T') or (DREnd = 'TODAY')) then
+        TEnd := true;
+      if not (TStart and TEnd) then
+        cboDateRange.ItemIndex := cboDateRange.Items.Add(DRStart + ';' +
+          DREnd + U + DRStart + ' to ' + DREnd);
+    end;
+  cboList.Height := lblDateRange.Top - cboList.Top - 4;
+  lblDateRange.Show;
+  cboDateRange.Show;
+end;
+
+procedure TfrmPtSelOptns.cboDateRangeExit(Sender: TObject);
+begin
+  if cboDateRange.ItemIndex <> FLastDateIndex then cboDateRangeMouseClick(Self);
+end;
+
+procedure TfrmPtSelOptns.cboDateRangeMouseClick(Sender: TObject);
+begin
+  if (cboDateRange.ItemID = 'S') then
+  begin
+    with calApptRng do if Execute
+      then cboDateRange.ItemIndex := cboDateRange.Items.Add(RelativeStart + ';' +
+           RelativeStop + U + TextOfStart + ' to ' + TextOfStop)
+      else cboDateRange.ItemIndex := -1;
+  end;
+  FLastDateIndex := cboDateRange.ItemIndex;
+  if cboList.ItemIEN > 0 then FSetPtListTop(cboList.ItemIEN);
+end;
+
+procedure TfrmPtSelOptns.cmdSaveListClick(Sender: TObject);
+var
+  x: string;
+begin
+  x := '';
+  case FSrcType of
+  TAG_SRC_DFLT: InfoBox(TX_LS_DFLT, TC_LS_FAIL, MB_OK);
+  TAG_SRC_PROV: if cboList.ItemIEN <= 0
+                  then InfoBox(TX_LS_PROV, TC_LS_FAIL, MB_OK)
+                  else x := 'P^' + IntToStr(cboList.ItemIEN) + U + U +
+                            'Provider = ' + cboList.Text;
+  TAG_SRC_TEAM: if cboList.ItemIEN <= 0
+                  then InfoBox(TX_LS_TEAM, TC_LS_FAIL, MB_OK)
+                  else x := 'T^' + IntToStr(cboList.ItemIEN) + U + U +
+                            'Team = ' + cboList.Text;
+  TAG_SRC_SPEC: if cboList.ItemIEN <= 0
+                  then InfoBox(TX_LS_SPEC, TC_LS_FAIL, MB_OK)
+                  else x := 'S^' + IntToStr(cboList.ItemIEN) + U + U +
+                            'Specialty = ' + cboList.Text;
+  TAG_SRC_CLIN: if (cboList.ItemIEN <= 0) or (Pos(';', cboDateRange.ItemID) = 0)
+                  then InfoBox(TX_LS_CLIN, TC_LS_FAIL, MB_OK)
+                  else
+                    begin
+                      clinDefaults := 'Clinic = ' + cboList.Text + ',  ' + cboDaterange.text;
+                      frmPtSelOptSave := TfrmPtSelOptSave.create(Application); // Calls dialogue form for user input.
+                      frmPtSelOptSave.showModal;
+                      frmPtSelOptSave.free;
+                      if (not clinDoSave) then
+                        Exit;
+                      if clinSaveToday then
+                        x := 'CT^' + IntToStr(cboList.ItemIEN) + U + cboDateRange.ItemID + U +
+                            'Clinic = ' + cboList.Text + ',  ' +  cboDateRange.Text
+                      else
+                        x := 'C^' + IntToStr(cboList.ItemIEN) + U + cboDateRange.ItemID + U +
+                            'Clinic = ' + cboList.Text + ',  ' +  cboDateRange.Text;
+                    end;
+  TAG_SRC_WARD: if cboList.ItemIEN <= 0
+                  then InfoBox(TX_LS_WARD, TC_LS_FAIL, MB_OK)
+                  else x := 'W^' + IntToStr(cboList.ItemIEN) + U + U +
+                            'Ward = ' + cboList.Text;
+  TAG_SRC_ALL : x := 'A';
+  end;
+  if (x <> '') then
+    begin
+      if not (FSrcType = TAG_SRC_CLIN) then // Clinics already have a "confirm" d-box.
+        begin
+          if (InfoBox(TX_LS_SAV1 + Piece(x, U, 4) + TX_LS_SAV2, TC_LS_SAVE, MB_YESNO) = IDYES) then
+            begin
+              SavePtListDflt(x);
+              UpdateDefault;
+            end;
+        end
+      else // Skip second confirmation box for clinics.
+        begin
+          SavePtListDflt(x);
+          UpdateDefault;
+        end;
+    end;
+end;
+
+procedure TfrmPtSelOptns.FormCreate(Sender: TObject);
+begin
+  FLastDateIndex := -1;
+end;
+
+procedure TfrmPtSelOptns.SetDefaultPtList(Dflt: string);
+begin
+  if Length(Dflt) > 0 then                   // if default patient list available, use it
+  begin
+    radDflt.Caption := '&Default: ' + Dflt;
+    radDflt.Checked := True;                 // causes radHideSrcClick to be called
+  end
+  else                                       // otherwise, select from all patients
+  begin
+    radDflt.Enabled := False;
+    radAll.Checked := True;                  // causes radHideSrcClick to be called
+  end;
+end;
+
+procedure TfrmPtSelOptns.UpdateDefault;
+begin
+  FSrcType := TAG_SRC_DFLT;
+  fPtSel.FDfltSrc := DfltPtList; // Server side default setting: "DfltPtList" is in rCore.
+  fPtSel.FDfltSrcType := Piece(fPtSel.FDfltSrc, U, 2);
+  fPtSel.FDfltSrc := Piece(fPtSel.FDfltSrc, U, 1);
+  if (IsRPL = '1') then // Deal with restricted patient list users.
+    fPtSel.FDfltSrc := '';
+  SetDefaultPtList(fPtSel.FDfltSrc);
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmPtSelOptns);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSens.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSens.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSens.dfm	(revision 1676)
@@ -0,0 +1,103 @@
+inherited frmPtSens: TfrmPtSens
+  Left = 216
+  Top = 373
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Restricted Patient Record'
+  ClientHeight = 181
+  ClientWidth = 596
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object imgWarning: TImage [0]
+    Left = 16
+    Top = 16
+    Width = 32
+    Height = 32
+  end
+  object lblContinue: TStaticText [1]
+    Left = 64
+    Top = 150
+    Width = 267
+    Height = 17
+    Caption = 'Do you want to continue processing this patient record?'
+    TabOrder = 3
+  end
+  object memWarning: TMemo [2]
+    Left = 64
+    Top = 16
+    Width = 517
+    Height = 113
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      '                           *** WARNING ***'
+      '                       *** RESTRICTED RECORD ***'
+      
+        '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' +
+        '* * * * * '
+      
+        '* This record is protected by the Privacy Act of 1974. If you el' +
+        'ect     *'
+      
+        '* to proceed, you will be required to prove you have a need to k' +
+        'now.    *'
+      
+        '* Accessing this patient is tracked, and your station Security O' +
+        'fficer  *'
+      
+        '* will contact you for your justification.                      ' +
+        '        *'
+      
+        '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' +
+        '* * * * * '
+      '')
+    ParentFont = False
+    ReadOnly = True
+    TabOrder = 0
+  end
+  object cmdYes: TButton [3]
+    Left = 408
+    Top = 144
+    Width = 75
+    Height = 25
+    Caption = 'Yes'
+    TabOrder = 1
+    OnClick = cmdYesClick
+  end
+  object cmdNo: TButton [4]
+    Left = 500
+    Top = 144
+    Width = 75
+    Height = 25
+    Caption = 'No'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdNoClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblContinue'
+        'Status = stsDefault')
+      (
+        'Component = memWarning'
+        'Status = stsDefault')
+      (
+        'Component = cmdYes'
+        'Status = stsDefault')
+      (
+        'Component = cmdNo'
+        'Status = stsDefault')
+      (
+        'Component = frmPtSens'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSens.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSens.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fPtSens.pas	(revision 1676)
@@ -0,0 +1,62 @@
+unit fPtSens;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, Buttons, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmPtSens = class(TfrmBase508Form)
+    imgWarning: TImage;
+    memWarning: TMemo;
+    cmdYes: TButton;
+    cmdNo: TButton;
+    lblContinue: TStaticText;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdYesClick(Sender: TObject);
+    procedure cmdNoClick(Sender: TObject);
+  private
+    FContinue: Boolean;
+  public
+    { Public declarations }
+  end;
+
+function RestrictedPtWarning: Boolean;
+
+implementation
+
+{$R *.DFM}
+
+function RestrictedPtWarning: Boolean;
+var
+  frmPtSens: TfrmPtSens;
+begin
+  frmPtSens := TfrmPtSens.Create(Application);
+  try
+    frmPtSens.ShowModal;
+    Result := frmPtSens.FContinue;
+  finally
+    frmPtSens.Free;
+  end;
+end;
+
+procedure TfrmPtSens.FormCreate(Sender: TObject);
+begin
+  FContinue := False;
+  imgWarning.Picture.Icon.Handle := LoadIcon(0, IDI_EXCLAMATION);
+end;
+
+procedure TfrmPtSens.cmdYesClick(Sender: TObject);
+begin
+  FContinue := True;
+  Close;
+end;
+
+procedure TfrmPtSens.cmdNoClick(Sender: TObject);
+begin
+  FContinue := False;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverPreview.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverPreview.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverPreview.dfm	(revision 1676)
@@ -0,0 +1,77 @@
+inherited frmRemCoverPreview: TfrmRemCoverPreview
+  Left = 214
+  Top = 107
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'Cover Sheet Reminders'
+  ClientHeight = 383
+  ClientWidth = 255
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 263
+  ExplicitHeight = 410
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBtns: TPanel [0]
+    Left = 0
+    Top = 354
+    Width = 255
+    Height = 29
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      255
+      29)
+    object btnOK: TButton
+      Left = 179
+      Top = 3
+      Width = 75
+      Height = 25
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = '&OK'
+      Default = True
+      ModalResult = 1
+      TabOrder = 0
+    end
+  end
+  object lvMain: TListView [1]
+    Left = 0
+    Top = 0
+    Width = 255
+    Height = 354
+    Align = alClient
+    Columns = <
+      item
+        Caption = 'Reminder'
+        Tag = 1
+        Width = 200
+      end
+      item
+        Caption = 'Seq'
+        Tag = 2
+        Width = 35
+      end>
+    ReadOnly = True
+    SortType = stData
+    TabOrder = 1
+    ViewStyle = vsReport
+    OnColumnClick = lvMainColumnClick
+    OnCompare = lvMainCompare
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBtns'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = lvMain'
+        'Status = stsDefault')
+      (
+        'Component = frmRemCoverPreview'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverPreview.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverPreview.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverPreview.pas	(revision 1676)
@@ -0,0 +1,85 @@
+unit fRemCoverPreview;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ComCtrls, StdCtrls, ExtCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmRemCoverPreview = class(TfrmBase508Form)
+    pnlBtns: TPanel;
+    btnOK: TButton;
+    lvMain: TListView;
+    procedure FormCreate(Sender: TObject);
+    procedure lvMainColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvMainCompare(Sender: TObject; Item1, Item2: TListItem;
+      Data: Integer; var Compare: Integer);
+  private
+    FSortCol: integer;
+    FSortUp: boolean;
+  public
+    { Public declarations }
+  end;
+
+implementation
+
+{$R *.DFM}
+
+procedure TfrmRemCoverPreview.FormCreate(Sender: TObject);
+begin
+  FSortCol := 2;
+  FSortUp := TRUE;
+end;
+
+procedure TfrmRemCoverPreview.lvMainColumnClick(Sender: TObject;
+  Column: TListColumn);
+begin
+  if FSortCol <> Column.Tag then
+    FSortCol := Column.Tag
+  else
+    FSortUp := not FSortUp;
+  lvMain.CustomSort(nil, 0);
+end;
+
+procedure TfrmRemCoverPreview.lvMainCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+var
+  i: integer;
+  odr: array[1..2] of integer;
+  s1, s2: string;
+
+begin
+  case FSortCol of
+    1: begin
+         odr[1] := 1;
+         odr[2] := 2;
+       end;
+
+    2: begin
+         odr[1] := 2;
+         odr[2] := 1;
+       end;
+  end;
+  Compare := 0;
+  for i := 1 to 2 do
+  begin
+    case odr[i] of
+      1:   begin
+             s1 := Item1.Caption;
+             s2 := Item2.Caption;
+           end;
+
+      2:   begin
+             s1 := Item1.SubItems[1];
+             s2 := Item2.SubItems[1];
+           end;
+    end;
+    Compare := CompareText(s1, s2);
+    if Compare <> 0 then break;
+  end;
+  if not FSortUp then
+    Compare := -Compare;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverSheet.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverSheet.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverSheet.dfm	(revision 1676)
@@ -0,0 +1,1721 @@
+inherited frmRemCoverSheet: TfrmRemCoverSheet
+  Left = 313
+  Top = 150
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 
+    'Clinical Reminders and Reminder Categories Displayed on Cover Sh' +
+    'eet'
+  ClientHeight = 563
+  ClientWidth = 773
+  Constraints.MinWidth = 462
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 779
+  ExplicitHeight = 588
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBottom: TORAutoPanel [0]
+    Left = 0
+    Top = 276
+    Width = 773
+    Height = 252
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 3
+    DesignSize = (
+      773
+      252)
+    object lblSeq: TLabel
+      Left = 694
+      Top = 92
+      Width = 52
+      Height = 26
+      Anchors = [akLeft, akBottom]
+      Caption = 'Sequence Number'
+      WordWrap = True
+      ExplicitTop = 96
+    end
+    object lblEdit: TLabel
+      Left = 0
+      Top = 0
+      Width = 773
+      Height = 13
+      Align = alTop
+      Alignment = taCenter
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      Layout = tlCenter
+      ExplicitWidth = 5
+    end
+    object sbUp: TBitBtn
+      Left = 680
+      Top = 29
+      Width = 21
+      Height = 21
+      Hint = 'Move Reminder Up List'
+      Anchors = [akLeft, akBottom]
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 1
+      OnClick = sbUpClick
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        0400000000000001000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+        1111111111111111111111111111111111111111111111111111111111111111
+        111111111FFFFFF1111111110000001111111111777777F11111111100000011
+        11111111777777F1111111110000001111111111777777F11111111100000011
+        11111111777777F1111111110000001111111FFF777777FFFFF1000000000000
+        0011777777777777771110000000000001111777777777777111110000000000
+        1111117777777777111111100000000111111117777777711111111100000011
+        1111111177777711111111111000011111111111177771111111111111001111
+        1111111111771111111111111111111111111111111111111111}
+      NumGlyphs = 2
+    end
+    object sbDown: TBitBtn
+      Left = 680
+      Top = 56
+      Width = 21
+      Height = 21
+      Hint = 'Move Reminder Down List'
+      Anchors = [akLeft, akBottom]
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = sbDownClick
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        0400000000000001000000000000000000001000000010000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+        1111111111111111111111111111111111111111111111111111111111111111
+        11111111111FF1111111111111001111111111111177FF111111111110000111
+        1111111117777FF1111111110000001111111111777777FF1111111000000001
+        111111177777777FF1111100000000001111117777777777FF11100000000000
+        01111777777777777FF100000000000000117777777777777711111100000011
+        11111111777777F1111111110000001111111111777777F11111111100000011
+        11111111777777F1111111110000001111111111777777F11111111100000011
+        1111111177777711111111111111111111111111111111111111}
+      NumGlyphs = 2
+    end
+    object btnAdd: TBitBtn
+      Left = 680
+      Top = 165
+      Width = 90
+      Height = 23
+      Hint = 
+        'Adds a Reminder to the Coversheet at the selected level.  It wil' +
+        'l also remove the lock of a Reminder (leaves Reminder on Coversh' +
+        'eet) set at the same level as currently selected.'
+      Anchors = [akLeft, akBottom]
+      Caption = 'Add'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 5
+      OnClick = btnAddClick
+      Glyph.Data = {
+        F6000000424DF600000000000000760000002800000010000000100000000100
+        0400000000008000000000000000000000001000000000000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        3333333333333333333333333333333333333333333003333333333333300333
+        3333333333300333333333333330033333333330000000000333333000000000
+        0333333333300333333333333330033333333333333003333333333333300333
+        3333333333333333333333333333333333333333333333333333}
+      Margin = 2
+    end
+    object btnRemove: TBitBtn
+      Left = 680
+      Top = 194
+      Width = 90
+      Height = 23
+      Hint = 
+        'Removes Reminders from the Coversheet display.  Will not remove ' +
+        'Reminders which are locked at a higher level.'
+      Anchors = [akLeft, akBottom]
+      Caption = 'Remove'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 6
+      OnClick = btnRemoveClick
+      Glyph.Data = {
+        F6000000424DF600000000000000760000002800000010000000100000000100
+        0400000000008000000000000000000000001000000000000000000000000000
+        8000008000000080800080000000800080008080000080808000C0C0C0000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
+        3333333333333333333333333333333333333333333333333333333333333333
+        3333333333333333333333333333333333333330000000000333333000000000
+        0333333333333333333333333333333333333333333333333333333333333333
+        3333333333333333333333333333333333333333333333333333}
+      Margin = 2
+    end
+    object btnLock: TBitBtn
+      Left = 680
+      Top = 223
+      Width = 90
+      Height = 23
+      Hint = 
+        'Adds Reminder to the Coversheet display.  It also Locks the Remi' +
+        'nder so it can not be removed from the Coversheet display at a l' +
+        'ower level.  For example, if a Reminder is locked at the User Cl' +
+        'ass level, then it can not be removed from the Coversheet at the' +
+        ' User level.'
+      Anchors = [akLeft, akBottom]
+      Caption = 'Add && Lock'
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 7
+      OnClick = btnLockClick
+      Glyph.Data = {
+        76010000424D7601000000000000760000002800000020000000100000000100
+        04000000000000010000120B0000120B00001000000000000000000000000000
+        800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000003
+        333333333F777773FF333333008888800333333377333F3773F3333077870787
+        7033333733337F33373F3308888707888803337F33337F33337F330777880887
+        7703337F33337FF3337F3308888000888803337F333777F3337F330777700077
+        7703337F33377733337F33088888888888033373FFFFFFFFFF73333000000000
+        00333337777777777733333308033308033333337F7F337F7F33333308033308
+        033333337F7F337F7F33333308033308033333337F73FF737F33333377800087
+        7333333373F77733733333333088888033333333373FFFF73333333333000003
+        3333333333777773333333333333333333333333333333333333}
+      Margin = 2
+      NumGlyphs = 2
+    end
+    object edtSeq: TCaptionEdit
+      Left = 694
+      Top = 122
+      Width = 38
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      TabOrder = 3
+      Text = '1'
+      OnChange = edtSeqChange
+      OnKeyPress = edtSeqKeyPress
+      Caption = 'Sequence Number'
+    end
+    object udSeq: TUpDown
+      Left = 732
+      Top = 122
+      Width = 15
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      Associate = edtSeq
+      Max = 999
+      Position = 1
+      TabOrder = 4
+      OnChangingEx = udSeqChangingEx
+    end
+    object pnlInfo: TPanel
+      Left = 0
+      Top = 13
+      Width = 674
+      Height = 239
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      object splMain: TSplitter
+        Left = 332
+        Top = 0
+        Height = 239
+        Beveled = True
+        ExplicitLeft = 245
+        ExplicitHeight = 165
+      end
+      object pnlTree: TPanel
+        Left = 0
+        Top = 0
+        Width = 332
+        Height = 239
+        Align = alLeft
+        BevelOuter = bvNone
+        TabOrder = 0
+        object lblTree: TLabel
+          Left = 0
+          Top = 0
+          Width = 332
+          Height = 13
+          Align = alTop
+          Caption = '  Available Reminders && Categories'
+          ExplicitWidth = 164
+        end
+        object tvAll: TORTreeView
+          Left = 0
+          Top = 13
+          Width = 332
+          Height = 226
+          Align = alClient
+          HideSelection = False
+          Images = imgMain
+          Indent = 19
+          ReadOnly = True
+          RightClickSelect = True
+          RowSelect = True
+          TabOrder = 0
+          OnChange = tvAllChange
+          OnCollapsed = tvAllExpanded
+          OnDblClick = tvAllDblClick
+          OnExpanding = tvAllExpanding
+          OnExpanded = tvAllExpanded
+          Caption = '  Available Reminders and Categories'
+          NodePiece = 2
+        end
+      end
+      object pnlCover: TPanel
+        Left = 335
+        Top = 0
+        Width = 339
+        Height = 239
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 1
+        object lvCover: TCaptionListView
+          Left = 23
+          Top = 0
+          Width = 316
+          Height = 239
+          Align = alClient
+          Columns = <
+            item
+              Caption = 'Reminders'
+              Tag = 1
+              Width = 255
+            end
+            item
+              Caption = 'Sequence'
+              Tag = 2
+              Width = 40
+            end>
+          HideSelection = False
+          ReadOnly = True
+          RowSelect = True
+          SmallImages = imgMain
+          SortType = stData
+          StateImages = imgMain
+          TabOrder = 1
+          ViewStyle = vsReport
+          OnChange = lvCoverChange
+          OnColumnClick = lvCoverColumnClick
+          OnCompare = lvCoverCompare
+          OnDblClick = lvCoverDblClick
+          OnKeyDown = lvCoverKeyDown
+          Caption = 'Selected Reminders and Categories'
+        end
+        object pblMoveBtns: TPanel
+          Left = 0
+          Top = 0
+          Width = 23
+          Height = 239
+          Align = alLeft
+          BevelOuter = bvNone
+          TabOrder = 0
+          object sbCopyRight: TBitBtn
+            Left = 1
+            Top = 42
+            Width = 21
+            Height = 21
+            Hint = 'Copy Reminder into Reminder List'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 0
+            OnClick = sbCopyRightClick
+            Glyph.Data = {
+              76010000424D7601000000000000760000002800000020000000100000000100
+              0400000000000001000000000000000000001000000010000000000000000000
+              8000008000000080800080000000800080008080000080808000C0C0C0000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+              1111111111111111111111111111111111111111111F11111111111111011111
+              11111111117FF1111111111111001111111111111177FF111111111111000111
+              1111111111777FF11111111111000011111111FFFF7777FF1111100000000001
+              111117777777777FF1111000000000001111177777777777FF11100000000000
+              01111777777777777F1110000000000001111777777777777111100000000000
+              1111177777777777111110000000000111111777777777711111111111000011
+              1111111111777711111111111100011111111111117771111111111111001111
+              1111111111771111111111111101111111111111117111111111}
+            NumGlyphs = 2
+          end
+          object sbCopyLeft: TBitBtn
+            Tag = 1
+            Left = 1
+            Top = 100
+            Width = 21
+            Height = 21
+            Hint = 'Remove Reminder from Reminder List'
+            ParentShowHint = False
+            ShowHint = True
+            TabOrder = 1
+            OnClick = sbCopyLeftClick
+            Glyph.Data = {
+              76010000424D7601000000000000760000002800000020000000100000000100
+              0400000000000001000000000000000000001000000010000000000000000000
+              8000008000000080800080000000800080008080000080808000C0C0C0000000
+              FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00111111111111
+              11111111111111111111111111111111111111111111F1111111111111101111
+              111111111117F1111111111111001111111111111177F1111111111110001111
+              111111111777F1111111111100001111111111117777FFFFFF11111000000000
+              01111117777777777F1111000000000001111177777777777F11100000000000
+              01111777777777777F1110000000000001111777777777777F11110000000000
+              01111177777777777F1111100000000001111117777777777111111100001111
+              111111117777F1111111111110001111111111111777F1111111111111001111
+              111111111177F111111111111110111111111111111711111111}
+            NumGlyphs = 2
+          end
+        end
+      end
+    end
+  end
+  object pnlUser: TPanel [1]
+    Left = 0
+    Top = 182
+    Width = 773
+    Height = 26
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+    object lblRemLoc: TLabel
+      Left = 5
+      Top = 6
+      Width = 163
+      Height = 13
+      Caption = 'Location shown in Cumulative List:'
+    end
+    object cbxUserLoc: TORComboBox
+      Left = 172
+      Top = 2
+      Width = 205
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Location shown in Cumulative List'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      OnChange = cbxLocationChange
+      OnDropDownClose = cbxDropDownClose
+      OnKeyDown = cbxDivisionKeyDown
+      OnNeedData = cbxLocationNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object pnlMiddle: TPanel [2]
+    Left = 0
+    Top = 0
+    Width = 773
+    Height = 182
+    Align = alClient
+    BevelOuter = bvNone
+    Constraints.MinHeight = 124
+    TabOrder = 0
+    object pnlRight: TPanel
+      Left = 599
+      Top = 0
+      Width = 174
+      Height = 182
+      Align = alRight
+      BevelOuter = bvNone
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 1
+      object lblLegend: TLabel
+        Left = 0
+        Top = 0
+        Width = 174
+        Height = 13
+        Align = alTop
+        Alignment = taCenter
+        Caption = 'Icon Legend'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        ExplicitWidth = 72
+      end
+      inline mlgnCat: TfraImgText
+        Left = 0
+        Top = 13
+        Width = 174
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Tahoma'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 1
+        ExplicitTop = 13
+        ExplicitWidth = 174
+        inherited img: TImage
+          Top = 0
+          Width = 30
+          Picture.Data = {
+            07544269746D617076010000424D760100000000000076000000280000001E00
+            0000100000000100040000000000000100000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+            DD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00D0000000000DDDDD0000000000DD
+            DD000BFBFBFBFB0DDDD00B8B8B8B8B0DDD000FBFBFBFBF0DDDD0F0B8B8B8B8B0
+            DD000BFBFBFBFB0DDDD0BF0B8B8B8B8B0D000FBFBFBFBF0DDDD0FBF000000000
+            0D000BFBFBFBFB0DDDD0BFBFBFBFB0DDDD000FBFBFBFBF0DDDD0FBFBFBFBF0DD
+            DD000000000000DDDDD0BFBFBF000DDDDD00D0FBFB0DDDDDDDDD0BFBF0DDDDDD
+            DD00D700007DDDDDDDDD700007DDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+            DD00DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD00DDDDDDDDDDDDDDDDDDDDDDDDDDDD
+            DD00}
+          Transparent = True
+          ExplicitTop = 0
+          ExplicitWidth = 30
+        end
+        inherited lblText: TLabel
+          Left = 40
+          Width = 93
+          Caption = 'Reminder Category'
+          ExplicitLeft = 40
+          ExplicitWidth = 93
+        end
+      end
+      inline mlgnRem: TfraImgText
+        Left = 0
+        Top = 33
+        Width = 174
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Tahoma'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 2
+        ExplicitTop = 33
+        ExplicitWidth = 174
+        inherited img: TImage
+          Left = 12
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF0080018000008100888810009090001888880098F0F8900888870980FFF089
+            07888099FFFFFFF990888090F000FF009088B099FFF0FFF990B8070980F0F089
+            0708BB0098F0F8900BB800000999990000080887000000087708088887707888
+            8708B078800B008870B808700BBBBB007808880BB0B0B0BB088880BB08B0B80B
+            B088}
+          ExplicitLeft = 12
+        end
+        inherited lblText: TLabel
+          Left = 40
+          Width = 45
+          Caption = 'Reminder'
+          ExplicitLeft = 40
+          ExplicitWidth = 45
+        end
+      end
+      inline mlgnAdd: TfraImgText
+        Left = 0
+        Top = 53
+        Width = 174
+        Height = 47
+        Align = alTop
+        AutoScroll = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Tahoma'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 3
+        ExplicitTop = 53
+        ExplicitWidth = 174
+        ExplicitHeight = 47
+        inherited img: TImage
+          Left = 12
+          Top = 6
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00333333333333333333333333333333333333333333333333333333300333
+            3333333333300333333333333330033333333333333003333333333000000000
+            0333333000000000033333333330033333333333333003333333333333300333
+            3333333333300333333333333333333333333333333333333333333333333333
+            3333}
+          Transparent = True
+          ExplicitLeft = 12
+          ExplicitTop = 6
+        end
+        inherited lblText: TLabel
+          Left = 40
+          Width = 82
+          Height = 39
+          Hint = 
+            'Reminder will be displayed on the Coversheet for the level ident' +
+            'ified.'
+          Caption = 'Add to Cover Sheet (Removes Lock)'
+          ParentShowHint = False
+          ShowHint = True
+          WordWrap = True
+          ExplicitLeft = 40
+          ExplicitWidth = 82
+          ExplicitHeight = 39
+        end
+      end
+      inline mlgnRemove: TfraImgText
+        Left = 0
+        Top = 100
+        Width = 174
+        Height = 20
+        Align = alTop
+        AutoScroll = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Tahoma'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 4
+        ExplicitTop = 100
+        ExplicitWidth = 174
+        inherited img: TImage
+          Left = 12
+          Top = 1
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00333333333333333333333333333333333333333333333333333333333333
+            3333333333333333333333333333333333333333333333333333333000000000
+            0333333000000000033333333333333333333333333333333333333333333333
+            3333333333333333333333333333333333333333333333333333333333333333
+            3333}
+          Transparent = True
+          ExplicitLeft = 12
+          ExplicitTop = 1
+        end
+        inherited lblText: TLabel
+          Left = 40
+          Top = 1
+          Width = 129
+          Hint = 
+            'Reminder will not be displayed on the Coversheet for the level i' +
+            'dentified.'
+          Caption = 'Remove From Cover Sheet'
+          ParentShowHint = False
+          ShowHint = True
+          ExplicitLeft = 40
+          ExplicitTop = 1
+          ExplicitWidth = 129
+        end
+      end
+      inline mlgnLock: TfraImgText
+        Left = 0
+        Top = 120
+        Width = 174
+        Height = 41
+        Align = alTop
+        AutoScroll = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Tahoma'
+        Font.Style = []
+        ParentFont = False
+        TabOrder = 5
+        ExplicitTop = 120
+        ExplicitWidth = 174
+        ExplicitHeight = 41
+        inherited img: TImage
+          Left = 12
+          Top = 4
+          Picture.Data = {
+            07544269746D6170F6000000424DF60000000000000076000000280000001000
+            0000100000000100040000000000800000000000000000000000100000000000
+            0000000000000000800000800000008080008000000080008000808000008080
+            8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+            FF00333330000033333333300888880033333307787078770333308888707888
+            8033307778808877703330888800088880333077770007777033308888888888
+            8033330000000000033333308033308033333330803330803333333080333080
+            3333333778000877333333330888880333333333300000333333333333333333
+            3333}
+          Transparent = True
+          ExplicitLeft = 12
+          ExplicitTop = 4
+        end
+        inherited lblText: TLabel
+          Left = 40
+          Top = 0
+          Width = 82
+          Height = 39
+          Caption = 'Lock (can not be removed from lower level)'
+          ParentShowHint = False
+          ShowHint = True
+          WordWrap = True
+          ExplicitLeft = 40
+          ExplicitTop = 0
+          ExplicitWidth = 82
+          ExplicitHeight = 39
+        end
+      end
+      object btnView: TButton
+        Left = 10
+        Top = 163
+        Width = 155
+        Height = 21
+        Caption = 'View Cover Sheet Reminders'
+        TabOrder = 0
+        OnClick = btnViewClick
+      end
+    end
+    object pnlTopLeft: TPanel
+      Left = 0
+      Top = 0
+      Width = 599
+      Height = 182
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblView: TLabel
+        Left = 0
+        Top = 0
+        Width = 599
+        Height = 13
+        Align = alTop
+        Alignment = taCenter
+        Caption = 'Cover Sheet Reminders (Cumulative List)'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        ExplicitWidth = 232
+      end
+      object lvView: TCaptionListView
+        Left = 0
+        Top = 13
+        Width = 599
+        Height = 154
+        Align = alClient
+        Columns = <
+          item
+            Caption = 'Reminder'
+            Tag = 1
+            Width = 320
+          end
+          item
+            Caption = 'Sequence'
+            Tag = 2
+            Width = 40
+          end
+          item
+            Caption = 'Level'
+            Tag = 3
+            Width = 64
+          end
+          item
+            Tag = 4
+            Width = 154
+          end>
+        ReadOnly = True
+        RowSelect = True
+        SmallImages = imgMain
+        SortType = stData
+        StateImages = imgMain
+        TabOrder = 0
+        ViewStyle = vsReport
+        OnChange = lvViewChange
+        OnColumnClick = lvViewColumnClick
+        OnCompare = lvViewCompare
+        OnSelectItem = lvViewSelectItem
+        Caption = 'Cover Sheet Reminders (Cumulative List)'
+      end
+      object lblCAC: TVA508StaticText
+        Name = 'lblCAC'
+        Left = 0
+        Top = 167
+        Width = 599
+        Height = 15
+        Align = alBottom
+        Alignment = taCenter
+        Caption = 'Select Cover Sheet Parameter Level to Display / Edit'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+        TabOrder = 1
+        ShowAccelChar = True
+      end
+    end
+  end
+  object pnlCAC: TORAutoPanel [3]
+    Left = 0
+    Top = 208
+    Width = 773
+    Height = 68
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      773
+      68)
+    object cbSystem: TORCheckBox
+      Tag = 1
+      Left = 8
+      Top = 4
+      Width = 53
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'System'
+      TabOrder = 0
+      OnClick = cbEditLevelClick
+      AutoSize = True
+      GroupIndex = 1
+      RadioStyle = True
+    end
+    object cbDivision: TORCheckBox
+      Tag = 2
+      Left = 8
+      Top = 26
+      Width = 59
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'Division:'
+      TabOrder = 1
+      OnClick = cbEditLevelClick
+      AutoSize = True
+      GroupIndex = 1
+      RadioStyle = True
+    end
+    object cbService: TORCheckBox
+      Tag = 3
+      Left = 8
+      Top = 48
+      Width = 58
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'Service:'
+      TabOrder = 3
+      OnClick = cbEditLevelClick
+      AutoSize = True
+      GroupIndex = 1
+      RadioStyle = True
+    end
+    object cbxService: TORComboBox
+      Tag = 3
+      Left = 72
+      Top = 46
+      Width = 243
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Service'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 4
+      OnChange = cbxServiceChange
+      OnDropDownClose = cbxDropDownClose
+      OnKeyDown = cbxDivisionKeyDown
+      OnNeedData = cbxServiceNeedData
+      CharsNeedMatch = 1
+    end
+    object cbxDivision: TORComboBox
+      Tag = 2
+      Left = 72
+      Top = 24
+      Width = 243
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Division'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnChange = cbxDivisionChange
+      OnDropDownClose = cbxDropDownClose
+      OnKeyDown = cbxDivisionKeyDown
+      CharsNeedMatch = 1
+    end
+    object cbLocation: TORCheckBox
+      Tag = 4
+      Left = 353
+      Top = 4
+      Width = 63
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'Location:'
+      TabOrder = 5
+      OnClick = cbEditLevelClick
+      AutoSize = True
+      GroupIndex = 1
+      RadioStyle = True
+    end
+    object cbUserClass: TORCheckBox
+      Tag = 5
+      Left = 353
+      Top = 26
+      Width = 72
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'User Class:'
+      TabOrder = 7
+      OnClick = cbEditLevelClick
+      AutoSize = True
+      GroupIndex = 1
+      RadioStyle = True
+    end
+    object cbUser: TORCheckBox
+      Tag = 6
+      Left = 353
+      Top = 48
+      Width = 44
+      Height = 16
+      Anchors = [akLeft, akBottom]
+      Caption = 'User:'
+      TabOrder = 9
+      OnClick = cbEditLevelClick
+      AutoSize = True
+      GroupIndex = 1
+      RadioStyle = True
+    end
+    object cbxUser: TORComboBox
+      Tag = 6
+      Left = 431
+      Top = 46
+      Width = 243
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'User'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 2
+      MaxLength = 0
+      Pieces = '2,3'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 10
+      OnChange = cbxUserChange
+      OnDropDownClose = cbxDropDownClose
+      OnKeyDown = cbxDivisionKeyDown
+      OnNeedData = cbxUserNeedData
+      CharsNeedMatch = 1
+    end
+    object cbxClass: TORComboBox
+      Tag = 5
+      Left = 431
+      Top = 24
+      Width = 243
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'User Class'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 8
+      OnChange = cbxClassChange
+      OnDropDownClose = cbxDropDownClose
+      OnKeyDown = cbxDivisionKeyDown
+      OnNeedData = cbxClassNeedData
+      CharsNeedMatch = 1
+    end
+    object cbxLocation: TORComboBox
+      Tag = 4
+      Left = 431
+      Top = 2
+      Width = 243
+      Height = 21
+      Anchors = [akLeft, akBottom]
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Location'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 6
+      OnChange = cbxLocationChange
+      OnDropDownClose = cbxDropDownClose
+      OnKeyDown = cbxDivisionKeyDown
+      OnNeedData = cbxLocationNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object pnlBtns: TPanel [4]
+    Left = 0
+    Top = 528
+    Width = 773
+    Height = 35
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 4
+    DesignSize = (
+      773
+      35)
+    object btnOK: TButton
+      Left = 488
+      Top = 6
+      Width = 90
+      Height = 23
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      ModalResult = 1
+      TabOrder = 0
+      OnClick = btnOKClick
+    end
+    object btnCancel: TButton
+      Left = 584
+      Top = 6
+      Width = 90
+      Height = 23
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      ModalResult = 2
+      TabOrder = 1
+    end
+    object btnApply: TButton
+      Left = 680
+      Top = 6
+      Width = 90
+      Height = 23
+      Anchors = [akTop, akRight]
+      Caption = 'Apply'
+      Enabled = False
+      TabOrder = 2
+      OnClick = btnApplyClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 56
+    Top = 56
+    Data = (
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = sbUp'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = sbDown'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnAdd'
+        'Status = stsDefault')
+      (
+        'Component = btnRemove'
+        'Status = stsDefault')
+      (
+        'Component = btnLock'
+        'Status = stsDefault')
+      (
+        'Component = edtSeq'
+        'Label = lblSeq'
+        'Status = stsOK')
+      (
+        'Component = udSeq'
+        'Status = stsDefault')
+      (
+        'Component = pnlInfo'
+        'Status = stsDefault')
+      (
+        'Component = pnlTree'
+        'Status = stsDefault')
+      (
+        'Component = tvAll'
+        'Label = lblTree'
+        'Status = stsOK')
+      (
+        'Component = pnlCover'
+        'Status = stsDefault')
+      (
+        'Component = lvCover'
+        'Text = Remove Reminders'
+        'Status = stsOK')
+      (
+        'Component = pblMoveBtns'
+        'Status = stsDefault')
+      (
+        'Component = sbCopyRight'
+        'Status = stsDefault')
+      (
+        'Component = sbCopyLeft'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = pnlUser'
+        'Status = stsDefault')
+      (
+        'Component = cbxUserLoc'
+        'Status = stsDefault')
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = mlgnCat'
+        'Status = stsDefault')
+      (
+        'Component = mlgnRem'
+        'Status = stsDefault')
+      (
+        'Component = mlgnAdd'
+        'Status = stsDefault')
+      (
+        'Component = mlgnRemove'
+        'Status = stsDefault')
+      (
+        'Component = mlgnLock'
+        'Status = stsDefault')
+      (
+        'Component = btnView'
+        'Status = stsDefault')
+      (
+        'Component = pnlCAC'
+        'Status = stsDefault')
+      (
+        'Component = cbSystem'
+        'Status = stsDefault')
+      (
+        'Component = cbDivision'
+        'Status = stsDefault')
+      (
+        'Component = cbService'
+        'Status = stsDefault')
+      (
+        'Component = cbxService'
+        'Text = Service:'
+        'Status = stsOK')
+      (
+        'Component = cbxDivision'
+        'Text = Division:'
+        'Status = stsOK')
+      (
+        'Component = cbLocation'
+        'Status = stsDefault')
+      (
+        'Component = cbUserClass'
+        'Status = stsDefault')
+      (
+        'Component = cbUser'
+        'Status = stsDefault')
+      (
+        'Component = cbxUser'
+        'Text = User:'
+        'Status = stsOK')
+      (
+        'Component = cbxClass'
+        'Text = User Class:'
+        'Status = stsOK')
+      (
+        'Component = cbxLocation'
+        'Text = Location:'
+        'Status = stsOK')
+      (
+        'Component = pnlBtns'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnApply'
+        'Status = stsDefault')
+      (
+        'Component = frmRemCoverSheet'
+        'Status = stsDefault')
+      (
+        'Component = pnlTopLeft'
+        'Status = stsDefault')
+      (
+        'Component = lvView'
+        'Status = stsDefault')
+      (
+        'Component = lblCAC'
+        'Status = stsDefault'))
+  end
+  object imgMain: TImageList
+    BkColor = clWhite
+    Masked = False
+    Left = 16
+    Top = 56
+    Bitmap = {
+      494C010106000900040010001000FFFFFF00FF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000003000000001002000000000000030
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000008484
+      840084848400C6C6C600848484000000000084848400C6C6C600848484008484
+      840000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600848484000000000084848400C6C6C600C6C6C600C6C6
+      C600C6C6C60000000000FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848484008484
+      840084848400C6C6C600C6C6C60000000000C6C6C600C6C6C600848484008484
+      84008484840000000000FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600000000000000000000000000C6C6C600C6C6C600C6C6
+      C600C6C6C60000000000FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000848484008484
+      8400848484008484840000000000000000000000000084848400848484008484
+      84008484840000000000FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C6C6C600C6C6
+      C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6
+      C600C6C6C60000000000FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000C6C6C60000000000FFFFFF00FFFFFF00FFFFFF0000000000C6C6C6000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008484
+      840084848400C6C6C600000000000000000000000000C6C6C600848484008484
+      8400FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF0000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C60000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000000000000000
+      8400FFFFFF000000000000000000000000000000000000000000FFFFFF000000
+      84000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000084000000
+      000000000000000000000000FF00000000000000FF0000000000000000000000
+      000000008400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      00000000FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000FF000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084848400000000000000
+      FF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      FF000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000FF000000
+      0000FFFFFF00000000000000000000000000FFFFFF00FFFFFF00000000000000
+      00000000FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FF
+      FF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF00000000000000FF000000
+      FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF000000
+      FF000000FF000000000000FFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000
+      000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6
+      C60000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000084848400000000000000
+      FF00FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000FFFFFF000000
+      FF00000000008484840000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF000000000000FFFF00C6C6C60000FFFF00C6C6C60000FFFF00C6C6C60000FF
+      FF00C6C6C60000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF0000FFFF0000FFFF00000000000000
+      00000000FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000FF000000
+      00000000000000FFFF0000FFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
+      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF008484
+      840000000000000000000000000000000000000000000000000000000000FFFF
+      FF00848484008484840000000000FFFFFF00FFFFFF00FFFFFF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0084848400848484000000000084848400FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF008484840000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF0000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF000000000084848400FFFF
+      FF00FFFFFF00000000000000000000FFFF000000000000000000FFFFFF00FFFF
+      FF00848484000000000000FFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007B7B
+      7B00000000000000000000000000000000007B7B7B00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00848484000000
+      00000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000
+      000084848400FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00848484000000
+      000000000000000000000000000084848400FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF0000FFFF000000000000FFFF000000000000FFFF000000000000FFFF0000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FFFF0000FF
+      FF0000000000FFFFFF0000FFFF000000000000FFFF00FFFFFF000000000000FF
+      FF0000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00424D3E000000000000003E000000
+      2800000040000000300000000100010000000000800100000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFF83F00000000FFFFE00F00000000
+      FFFFC00700000000FFFF800300000000FFFF800300000000FFFF800300000000
+      FFFF800300000000E007800300000000E007C00700000000FFFFE38F00000000
+      FFFFE38F00000000FFFFE38F00000000FFFFE00F00000000FFFFF01F00000000
+      FFFFF83F00000000FFFFFFFF000000008823FFFFFFFFFFFFC007FFFFFFFFFFFF
+      C6C7FFFFFFFFFFFF8BA3E007FFFFFE7F8FE3CAA7C00FFE7F88C3D5578007FE7F
+      0EE1CAA7A003FE7F0AA1D5579001E00706C1CAA7A801E0070001D557954FFE7F
+      6011C00FAAAFFE7F7879EA7F951FFE7F1831E07FCAFFFE7F4005FFFFC0FFFFFF
+      C007FFFFFFFFFFFF8443FFFFFFFFFFFF00000000000000000000000000000000
+      000000000000}
+  end
+  object imgLblRemCoverSheet: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvAll
+      end
+      item
+        Component = lvCover
+      end>
+    ImageList = imgMain
+    Labels = <
+      item
+        Caption = 'Reminder'
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Category'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Category'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Add'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Remove'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Lock'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end>
+    Left = 16
+    Top = 96
+  end
+  object compAccessCopyRight: TVA508ComponentAccessibility
+    Component = sbCopyRight
+    OnCaptionQuery = compAccessCopyRightCaptionQuery
+    Left = 368
+    Top = 320
+  end
+  object compAccessCopyLeft: TVA508ComponentAccessibility
+    Component = sbCopyLeft
+    OnCaptionQuery = compAccessCopyLeftCaptionQuery
+    Left = 368
+    Top = 376
+  end
+  object VA508ImageListLabeler1: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = lvView
+      end>
+    ImageList = imgMain
+    Labels = <
+      item
+        ImageIndex = 0
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Category'
+        ImageIndex = 1
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Category'
+        ImageIndex = 2
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Add'
+        ImageIndex = 3
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Remove'
+        ImageIndex = 4
+        OverlayIndex = -1
+      end
+      item
+        Caption = 'Lock'
+        ImageIndex = 5
+        OverlayIndex = -1
+      end>
+    Left = 56
+    Top = 96
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverSheet.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverSheet.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemCoverSheet.pas	(revision 1676)
@@ -0,0 +1,1903 @@
+unit fRemCoverSheet;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ORCtrls, StdCtrls, ExtCtrls, ComCtrls, ImgList, mImgText, Buttons, ORClasses, fBase508Form,
+  VA508AccessibilityManager, VA508ImageListLabeler;
+
+type
+  TRemCoverDataLevel = (dlPackage, dlSystem, dlDivision, dlService, dlLocation, dlUserClass, dlUser);
+
+  TfrmRemCoverSheet = class(TfrmBase508Form)
+    pnlBottom: TORAutoPanel;
+    pnlUser: TPanel;
+    cbxUserLoc: TORComboBox;
+    lblRemLoc: TLabel;
+    pnlMiddle: TPanel;
+    pnlRight: TPanel;
+    mlgnCat: TfraImgText;
+    mlgnRem: TfraImgText;
+    mlgnAdd: TfraImgText;
+    pnlCAC: TORAutoPanel;
+    mlgnRemove: TfraImgText;
+    mlgnLock: TfraImgText;
+    imgMain: TImageList;
+    sbUp: TBitBtn;
+    sbDown: TBitBtn;
+    btnAdd: TBitBtn;
+    btnRemove: TBitBtn;
+    btnLock: TBitBtn;
+    pnlBtns: TPanel;
+    btnOK: TButton;
+    btnCancel: TButton;
+    edtSeq: TCaptionEdit;
+    udSeq: TUpDown;
+    lblSeq: TLabel;
+    btnApply: TButton;
+    cbSystem: TORCheckBox;
+    cbDivision: TORCheckBox;
+    cbService: TORCheckBox;
+    cbxService: TORComboBox;
+    cbxDivision: TORComboBox;
+    cbLocation: TORCheckBox;
+    cbUserClass: TORCheckBox;
+    cbUser: TORCheckBox;
+    cbxUser: TORComboBox;
+    cbxClass: TORComboBox;
+    cbxLocation: TORComboBox;
+    lblEdit: TLabel;
+    pnlInfo: TPanel;
+    pnlTree: TPanel;
+    tvAll: TORTreeView;
+    lblTree: TLabel;
+    pnlCover: TPanel;
+    lvCover: TCaptionListView;
+    pblMoveBtns: TPanel;
+    sbCopyRight: TBitBtn;
+    sbCopyLeft: TBitBtn;
+    splMain: TSplitter;
+    btnView: TButton;
+    lblLegend: TLabel;
+    imgLblRemCoverSheet: TVA508ImageListLabeler;
+    compAccessCopyRight: TVA508ComponentAccessibility;
+    compAccessCopyLeft: TVA508ComponentAccessibility;
+    pnlTopLeft: TPanel;
+    lvView: TCaptionListView;
+    lblView: TLabel;
+    lblCAC: TVA508StaticText;
+    VA508ImageListLabeler1: TVA508ImageListLabeler;
+    procedure cbxLocationNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbxServiceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbxUserNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cbxClassNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FormDestroy(Sender: TObject);
+    procedure cbxDivisionChange(Sender: TObject);
+    procedure cbxServiceChange(Sender: TObject);
+    procedure cbxLocationChange(Sender: TObject);
+    procedure cbxClassChange(Sender: TObject);
+    procedure cbxUserChange(Sender: TObject);
+    procedure cbxDropDownClose(Sender: TObject);
+    procedure cbEditLevelClick(Sender: TObject);
+    procedure tvAllExpanding(Sender: TObject; Node: TTreeNode;
+      var AllowExpansion: Boolean);
+    procedure edtSeqChange(Sender: TObject);
+    procedure tvAllExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvAllChange(Sender: TObject; Node: TTreeNode);
+    procedure lvCoverChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure btnAddClick(Sender: TObject);
+    procedure btnRemoveClick(Sender: TObject);
+    procedure btnLockClick(Sender: TObject);
+    procedure lvViewColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvCoverColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvViewCompare(Sender: TObject; Item1, Item2: TListItem;
+      Data: Integer; var Compare: Integer);
+    procedure lvCoverCompare(Sender: TObject; Item1, Item2: TListItem;
+      Data: Integer; var Compare: Integer);
+    procedure sbUpClick(Sender: TObject);
+    procedure sbDownClick(Sender: TObject);
+    procedure sbCopyRightClick(Sender: TObject);
+    procedure udSeqChangingEx(Sender: TObject; var AllowChange: Boolean;
+      NewValue: Smallint; Direction: TUpDownDirection);
+    procedure sbCopyLeftClick(Sender: TObject);
+    procedure tvAllDblClick(Sender: TObject);
+    procedure btnApplyClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure lvCoverDblClick(Sender: TObject);
+    procedure btnViewClick(Sender: TObject);
+    procedure lvCoverKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure edtSeqKeyPress(Sender: TObject; var Key: Char);
+    procedure cbxDivisionKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormCreate(Sender: TObject);
+    procedure compAccessCopyRightCaptionQuery(Sender: TObject;
+      var Text: string);
+    procedure compAccessCopyLeftCaptionQuery(Sender: TObject; var Text: string);
+    procedure lvViewChange(Sender: TObject; Item: TListItem;
+      Change: TItemChange);
+    procedure lvViewSelectItem(Sender: TObject; Item: TListItem;
+      Selected: Boolean);
+  private
+    FData: TORStringList;     // DataCode IEN ^ Modified Flag  Object=TStringList
+    FUserInfo: TORStringList; // C^User Class, D^Division
+    FUser: Int64;
+    FUserMode: boolean;
+    FInitialized: boolean;
+    FCurDiv: Integer;
+    FCurSer:Integer;
+    FCurLoc: Integer;
+    FCurClass: Integer;
+    FCurUser: Int64;
+    FDivisions: TORStringList;
+    FServices: TORStringList;
+    FLocations: TORStringList;
+    FClasses: TORStringList;
+    FUsers: TORStringList;
+    FMasterList: TORStringList;
+    FUpdatePending: TORCheckBox;
+    FCatInfo: TORStringList;
+    FEditingLevel: TRemCoverDataLevel;
+    FEditingIEN: Int64;
+    FUpdating: boolean;
+    FTopSortTag: integer;
+    FTopSortUp: boolean;
+    FBottomSortTag: integer;
+    FBottomSortUp: boolean;
+    FDataSaved: boolean;
+    FUpdatingView: boolean;
+    FInternalExpansion: boolean;
+    FSavePause: integer;
+    FSelection: boolean;
+    fOldFocusChanged: TNotifyEvent;
+    procedure ActiveControlChanged(Sender: TObject);
+    procedure SetButtonHints;
+    procedure GetUserInfo(AUser: Int64);
+    function GetCurrent(IEN: Int64; Level: TRemCoverDataLevel; Show: boolean;
+                        Add: boolean = FALSE): TORStringList;
+    procedure UpdateView;
+    procedure SetupItem(Item: TListItem; const Data: string); overload;
+    procedure SetupItem(Item: TListItem; const Data: string;
+                        Level: TRemCoverDataLevel; IEN: Int64); overload;
+    function GetExternalName(Level: TRemCoverDataLevel; IEN: Int64): string;
+    procedure UpdateMasterListView;
+    procedure UpdateButtons;
+    function GetCatInfo(CatIEN: string): TORStringList;
+    procedure MarkListAsChanged;
+    function GetIndex(List: TORStringList; Item: TListItem): integer;
+    procedure ChangeStatus(Code: string);
+    procedure SetSeq(Item: TListItem; const Value: string);
+    function ListHasData(Seq: string; SubIdx: integer): boolean;
+    procedure SaveData(FromApply: boolean);
+    function RPad(Str: String): String;
+    function GetCoverSheetLvlData(ALevel, AClass: string): TStrings;
+    procedure LockButtonUpdate(data, FNAME, hint: string);
+  public
+     procedure Init(AsUser: boolean);
+  end;
+
+procedure EditCoverSheetReminderList(AsUser: boolean);
+
+implementation
+
+uses rCore, uCore, uPCE, rProbs, rTIU, ORFn, rReminders, uReminders,
+  fRemCoverPreview, VAUtils, VA508AccessibilityRouter;
+
+{$R *.DFM}
+{$R sremcvr}
+
+const
+  DataCode: array[TRemCoverDataLevel] of string[1] =
+      { dlPackage   } ('P',
+      { dlSystem    }  'S',
+      { dlDivision  }  'D',
+      { dlService   }  'R',
+      { dlLocation  }  'L',
+      { dlUserClass }  'C',
+      { dlUser      }  'U');
+
+  DataName: array[TRemCoverDataLevel] of string =
+      { dlPackage   } ('Package',
+      { dlSystem    }  'System',
+      { dlDivision  }  'Division',
+      { dlService   }  'Service',
+      { dlLocation  }  'Location',
+      { dlUserClass }  'User Class',
+      { dlUser      }  'User');
+
+  InternalName: array[TRemCoverDataLevel] of string =
+      { dlPackage   } ('PKG',
+      { dlSystem    }  'SYS',
+      { dlDivision  }  'DIV',
+      { dlService   }  'SRV',
+      { dlLocation  }  'LOC',
+      { dlUserClass }  'CLASS',
+      { dlUser      }  'USR');
+
+
+  UserClassCode = 'C';
+  DivisionCode = 'D';
+  ServiceCode = 'S';
+
+  CVLockCode   = 'L';
+  CVAddCode    = 'N';
+  CVRemoveCode = 'R';
+  CVCatCode    = 'C';
+  CVRemCode    = 'R';
+
+  DummyNode = '^@Dummy Node@^';
+  IdxSeq  = 0;
+  IdxLvl  = 1;
+  IdxType = 2;
+  IdxTIEN = 3;
+  IdxLvl2 = 4;
+  IdxAdd  = 5;
+  IdxIEN  = 6;
+
+  UnlockHint = 'Unlock a Reminder, reverting it''s status back to Added';
+  LockHint = 'Lock a Reminder to prevent it''s removal from a lower'
+        + CRLF + 'level Coversheet display.  For example, if you lock'
+        + CRLF + 'a Reminder at the Service level, then that Reminder'
+        + CRLF + 'can not be removed from the coversheet display at'
+        + CRLF + 'the Location, User Class, or User levels.';
+  AddLockHint = 'Add and Lock a Reminder to prevent it''s removal from a lower'
+        + CRLF + 'level Coversheet display.  For example, if you lock'
+        + CRLF + 'a Reminder at the Service level, then that Reminder'
+        + CRLF + 'can not be removed from the coversheet display at'
+        + CRLF + 'the Location, User Class, or User levels.';
+
+procedure EditCoverSheetReminderList(AsUser: boolean);
+var
+  frmRemCoverSheet: TfrmRemCoverSheet;
+
+begin
+  frmRemCoverSheet := TfrmRemCoverSheet.Create(Application);
+  try
+    frmRemCoverSheet.Init(AsUser);
+    frmRemCoverSheet.ShowModal;
+    if frmRemCoverSheet.FDataSaved then
+      ResetReminderLoad;
+  finally
+    frmRemCoverSheet.Free;
+  end;
+end;
+
+{ TfrmRemCoverSheet }
+
+procedure TfrmRemCoverSheet.Init(AsUser: boolean);
+const
+  RemClsCode = ' NVL';
+  RemClsText:array[1..4] of string = ('','National','VISN','Local');
+
+var
+  LocCombo: TORComboBox;
+  i, idx: integer;
+  tmp, tmp2, tmp3: string;
+  Node: TORTreeNode;
+
+begin
+  FTopSortTag := 3;
+  FTopSortUp  := TRUE;
+  FBottomSortTag := 2;
+  FBottomSortUp := TRUE;
+  FEditingLevel := dlPackage;
+
+  ResizeAnchoredFormToFont(self);
+  pnlBtns.Top := pnlBottom.Top + pnlBottom.Height;
+
+  FCatInfo := TORStringList.Create;
+  FData := TORStringList.Create;
+  FUserInfo := TORStringList.Create;
+  FDivisions := TORStringList.Create;
+  FServices := TORStringList.Create;
+  FLocations := TORStringList.Create;
+  FClasses := TORStringList.Create;
+  FUsers := TORStringList.Create;
+  FMasterList := TORStringList.Create;
+  //FMasterList.Assign(GetAllRemindersAndCategories);
+  FastAssign(GetAllRemindersAndCategories, FMasterList);
+  for i := 0 to FMasterList.Count-1 do
+  begin
+    tmp := FMasterList[i];
+    tmp2 := piece(tmp,U,4);
+    if tmp2 = piece(tmp,U,3) then
+      tmp2 := '';
+    tmp3 := piece(tmp,U,5);
+    if tmp3 = '' then tmp3 := ' ';
+    idx := pos(tmp3,RemClsCode);
+    if idx > 0 then
+      tmp3 := RemClsText[idx]
+    else
+      tmp3 := '';
+    if tmp3 <> '' then
+    begin
+      if tmp2 <> '' then
+        tmp2 := tmp2 + ' - ';
+      tmp2 := tmp2 + tmp3;
+    end;
+    if tmp2 <> '' then
+      tmp2 := ' (' + tmp2 + ')';
+    tmp := Piece(tmp,U,1) + Pieces(tmp,U,2,3) + tmp2 + U + tmp2;
+    FMasterList[i] := tmp;
+  end;
+
+  FUserMode := AsUser;
+  FCurUser := User.DUZ;
+  GetUserInfo(User.DUZ);
+  FCurLoc := Encounter.Location;
+  idx := FUserInfo.IndexOfPiece(DivisionCode);
+  if idx >= 0 then
+    FCurDiv := StrToIntDef(Piece(FUserInfo[idx],U,2),0)
+  else
+    FCurDiv := 0;
+  idx := FUserInfo.IndexOfPiece(ServiceCode);
+  if idx >= 0 then
+    FCurSer := StrToIntDef(Piece(FUserInfo[idx],U,2),0)
+  else
+    FCurSer := User.Service;
+  cbxUser.InitLongList(User.Name);
+  cbxUser.SelectByIEN(FCurUser);
+  GetPCECodes(FDivisions, TAG_HISTLOC);
+  FDivisions.Delete(0);
+  FCurClass := 0;
+  if AsUser then
+  begin
+    pnlCAC.Visible := FALSE;
+    LocCombo := cbxUserLoc;
+    btnLock.Visible := FALSE;
+  end
+  else
+  begin
+    pnlUser.Visible := FALSE;
+    LocCombo := cbxLocation;
+    //cbxDivision.Items.Assign(FDivisions);
+    FastAssign(Fdivisions, cbxDivision.Items);
+    cbxDivision.SelectByIEN(FCurDiv);
+    cbxService.InitLongList(GetExternalName(dlService, FCurSer));
+    cbxService.SelectByIEN(FCurSer);
+    cbxClass.InitLongList('');
+    if FCurClass <> 0 then
+      cbxClass.SelectByIEN(FCurClass);
+  end;
+  LocCombo.InitLongList(Encounter.LocationName);
+  LocCombo.SelectByIEN(FCurLoc);
+  if AsUser then
+    cbUser.Checked := TRUE;
+
+  tvAll.Items.BeginUpdate;
+  try
+    for i := 0 to FMasterList.Count-1 do
+    begin
+      Node := TORTreeNode(tvAll.Items.Add(nil,''));
+      Node.StringData := FMasterList[i];
+      if copy(FMasterList[i],1,1) = CVCatCode then
+      begin
+        idx := 1;
+        tvAll.Items.AddChild(Node, DummyNode);
+      end
+      else
+        idx := 0;
+      Node.ImageIndex := idx;
+      Node.SelectedIndex := idx;
+    end;
+  finally
+    tvAll.Items.EndUpdate;
+  end;
+  
+  FInitialized := TRUE;
+  UpdateView;
+  UpdateButtons;
+end;
+
+procedure TfrmRemCoverSheet.cbxLocationNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  TORComboBox(Sender).ForDataUse(SubSetOfLocations(StartFrom, Direction));
+end;
+
+procedure TfrmRemCoverSheet.cbxServiceNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cbxService.ForDataUse(ServiceSearch(StartFrom, Direction, TRUE));
+end;
+
+procedure TfrmRemCoverSheet.cbxUserNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cbxUser.ForDataUse(SubSetOfPersons(StartFrom, Direction));
+end;
+
+procedure TfrmRemCoverSheet.cbxClassNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  cbxClass.ForDataUse(SubSetOfUserClasses(StartFrom, Direction));
+end;
+
+procedure TfrmRemCoverSheet.FormDestroy(Sender: TObject);
+begin
+  Screen.OnActiveControlChange := fOldFocusChanged;
+  FMasterList.Free;
+  FUsers.Free;
+  FClasses.Free;
+  FLocations.Free;
+  FServices.Free;
+  FDivisions.Free;
+  FUserInfo.Free;
+  FData.KillObjects;
+  FData.Free;
+  FCatInfo.KillObjects;
+  FCatInfo.Free;
+  Application.HintHidePause := FSavePause  //Reset Hint pause to original setting
+end;
+
+procedure TfrmRemCoverSheet.GetUserInfo(AUser: Int64);
+begin
+  if FUser <> AUser then
+  begin
+    FUser := AUser;
+    //FUserInfo.Assign(UserDivClassInfo(FUser));
+    FastAssign(UserDivClassInfo(FUser), FUserInfo);
+  end;
+end;
+
+function TfrmRemCoverSheet.GetCurrent(IEN: Int64; Level: TRemCoverDataLevel;
+                           Show: boolean; Add: boolean = FALSE): TORStringList;
+var
+  lvl, cls, sIEN: string;
+  tmpSL: TORStringList;
+  i, idx: integer;
+
+begin
+  idx := FData.IndexOfPiece(DataCode[Level] + IntToStr(IEN));
+  if idx < 0 then
+  begin
+    if (IEN = 0) and (not (Level in [dlPackage, dlSystem])) then
+    begin
+      Result := nil;
+      exit;
+    end;
+    cls := '';
+    sIEN := IntToStr(IEN);
+    lvl := InternalName[Level];
+    case Level of
+      dlDivision, dlService, dlLocation, dlUser:
+        lvl := lvl + '.`' + sIEN;
+      dlUserClass:
+        cls := sIEN;
+    end;
+    if (lvl <> '') then
+    begin
+      tmpSL := TORStringList.Create;
+      try
+        //tmpSL.Assign(GetCoverSheetLvlData(lvl, cls));
+        FastAssign(GetCoverSheetLvlData(lvl, cls),  tmpSL);
+        if (not Add) and (tmpSL.Count = 0) then
+          FreeAndNil(tmpSL);
+        idx := FData.AddObject(DataCode[Level] + IntToStr(IEN), tmpSL);
+      except
+        tmpSL.Free;
+        raise;
+      end;
+    end;
+  end;
+  if idx >= 0 then
+  begin
+    tmpSL := TORStringList(FData.Objects[idx]);
+    if Add and (not assigned(tmpSL)) then
+    begin
+      tmpSL := TORStringList.Create;
+      FData.Objects[idx] := tmpSL;
+    end;
+  end
+  else
+    tmpSL := nil;
+  if Show and assigned(tmpSL) then
+  begin
+    for i := 0 to tmpSL.Count-1 do
+      SetupItem(lvView.Items.Add, tmpSL[i], Level, IEN);
+  end;
+  Result := tmpSL;
+end;
+
+procedure TfrmRemCoverSheet.UpdateView;
+var
+  idx: integer;
+
+begin
+  if FInitialized and (not FUpdatingView) then
+  begin
+    lvView.Items.BeginUpdate;
+    try
+      lvView.Items.Clear;
+      GetCurrent(0, dlPackage, TRUE);
+      GetCurrent(0, dlSystem, TRUE);
+      GetCurrent(FCurDiv, dlDivision, TRUE);
+      GetCurrent(FCurSer, dlService, TRUE);
+      GetCurrent(FCurLoc, dlLocation, TRUE);
+      if FCurClass > 0 then
+        GetCurrent(FCurClass, dlUserClass, TRUE)
+      else
+      begin
+        idx := -1;
+        repeat
+          idx := FUserInfo.IndexOfPiece(UserClassCode,U,1,idx);
+          if idx >= 0 then
+            GetCurrent(StrToIntDef(Piece(FUserInfo[idx],U,2),0), dlUserClass, TRUE)
+        until(idx < 0);
+      end;
+      GetCurrent(FCurUser, dlUser, TRUE);
+    finally
+      lvView.Items.EndUpdate;
+    end;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.compAccessCopyLeftCaptionQuery(Sender: TObject;
+  var Text: string);
+begin
+  Text := 'Remove Reminder from ' + DataName[FEditingLevel] + ' Level Reminders List';
+end;
+
+procedure TfrmRemCoverSheet.compAccessCopyRightCaptionQuery(
+  Sender: TObject; var Text: string);
+begin
+  Text := 'Copy Reminder into ' + DataName[FEditingLevel] + ' Level Reminders List';
+end;
+
+procedure TfrmRemCoverSheet.SetupItem(Item: TListItem; const Data: string);
+var
+  AddCode, RemCode, rIEN, Seq: string;
+
+begin
+  Seq := Piece(Data,U,1);
+  rIEN := Piece(Data,U,2);
+  Item.Caption := Piece(Data,U,3);
+  AddCode := copy(rIEN,1,1);
+  RemCode := copy(rIEN,2,1);
+  delete(rIEN,1,1);
+  if AddCode = CVLockCode then
+    Item.StateIndex := 5
+  else
+  if AddCode = CVRemoveCode then
+    Item.StateIndex := 4
+  else
+  if AddCode = CVAddCode then
+    Item.StateIndex := 3;
+  if RemCode = CVCatCode then
+    Item.ImageIndex := 1
+  else
+  if RemCode = CVRemCode then
+    Item.ImageIndex := 0
+  else
+    Item.ImageIndex := -1;
+  Item.SubItems.Clear;
+  Item.SubItems.Add(Seq);     // IdxSeq  = 0
+  Item.SubItems.Add('');      // IdxLvl  = 1
+  Item.SubItems.Add('');      // IdxType = 2
+  Item.SubItems.Add('');      // IdxTIEN = 3
+  Item.SubItems.Add('');      // IdxLvl2 = 4
+  Item.SubItems.Add(AddCode); // IdxAdd  = 5
+  Item.SubItems.Add(rIEN);    // IdxIEN  = 6
+end;
+
+procedure TfrmRemCoverSheet.SetupItem(Item: TListItem; const Data: string;
+                         Level: TRemCoverDataLevel; IEN: Int64);
+begin
+  SetupItem(Item, Data);
+  Item.SubItems[IdxLvl]  := DataName[Level];
+  Item.SubItems[IdxType] := GetExternalName(Level, IEN);
+  Item.SubItems[IdxTIEN] := IntToStr(IEN);
+  Item.SubItems[IdxLvl2] := IntToStr(ord(Level));
+end;
+
+function TfrmRemCoverSheet.GetExternalName(Level: TRemCoverDataLevel; IEN: Int64): string;
+
+  function GetNameFromList(List: TORStringList; IEN: Int64; FileNum: Double): string;
+  var
+    idx: integer;
+
+  begin
+    idx := List.IndexOfPiece(IntToStr(IEN));
+    if idx < 0 then
+      idx := List.Add(IntToStr(IEN) + U + ExternalName(IEN, FileNum));
+      Result := piece(List[idx],U,2);
+  end;
+
+begin
+  case Level of
+    dlDivision:  Result := GetNameFromList(FDivisions, IEN, 4);
+    dlService:   Result := GetNameFromList(FServices, IEN, 49);
+    dlLocation:  Result := GetNameFromList(FLocations, IEN, 44);
+    dlUserClass: Result := GetNameFromList(FClasses, IEN, 8930);
+    dlUser:      Result := GetNameFromList(FUsers, IEN, 200);
+    else         Result := '';
+  end;
+end;
+
+procedure TfrmRemCoverSheet.cbxDivisionChange(Sender: TObject);
+begin
+  FCurDiv := cbxDivision.ItemIEN;
+  If FCurDiv < 1  then   //No value in Division combobox
+  begin
+    sbCopyLeft.Enabled := false;
+    sbCopyRight.Enabled := false;
+    FSelection := false;
+  end
+  else
+    FSelection := true;
+  FUpdatePending := cbDivision;
+  if not cbxDivision.DroppedDown then
+    cbxDropDownClose(nil);
+end;
+
+procedure TfrmRemCoverSheet.cbxServiceChange(Sender: TObject);
+begin
+  FCurSer := cbxService.ItemIEN;
+  If FCurSer < 1  then   //No value in Service combobox
+  begin
+    sbCopyLeft.Enabled := false;
+    sbCopyRight.Enabled := false;
+    FSelection := false;
+  end
+  else
+    FSelection := true;
+  FUpdatePending := cbService;
+  if not cbxService.DroppedDown then
+    cbxDropDownClose(nil);
+end;
+
+procedure TfrmRemCoverSheet.cbxLocationChange(Sender: TObject);
+begin
+  FCurLoc := TORComboBox(Sender).ItemIEN;
+  If FCurLoc < 1  then   //No value in Location combobox
+  begin
+    sbCopyLeft.Enabled := false;
+    sbCopyRight.Enabled := false;
+    FSelection := false;
+  end
+  else
+    FSelection := true;
+  FUpdatePending := cbLocation;
+  if not TORComboBox(Sender).DroppedDown then
+    cbxDropDownClose(nil);
+end;
+
+procedure TfrmRemCoverSheet.cbxClassChange(Sender: TObject);
+begin
+  FCurClass := cbxClass.ItemIEN;
+  If FCurClass < 1  then   //No value in User Class combobox
+  begin
+    sbCopyLeft.Enabled := false;
+    sbCopyRight.Enabled := false;
+    FSelection := false;
+  end
+  else
+    FSelection := true;
+  FUpdatePending := cbUserClass;
+  if not cbxClass.DroppedDown then
+    cbxDropDownClose(nil);
+end;
+
+procedure TfrmRemCoverSheet.cbxUserChange(Sender: TObject);
+var
+  NewVal, idx: integer;
+
+begin
+  FCurUser := cbxUser.ItemIEN;
+  If FCurUser < 1  then   //No value in User combobox
+  begin
+    sbCopyLeft.Enabled := false;
+    sbCopyRight.Enabled := false;
+    FSelection := false;
+  end
+  else
+    FSelection := true;
+  GetUserInfo(FCurUser);
+  idx := FUserInfo.IndexOfPiece(DivisionCode);
+  if idx >= 0 then
+  begin
+    NewVal := StrToIntDef(Piece(FUserInfo[idx],U,2),0);
+    if NewVal <> FCurDiv then
+    begin
+      FCurDiv := NewVal;
+      cbxDivision.InitLongList(GetExternalName(dlDivision, NewVal));
+      cbxDivision.SelectByIEN(NewVal);
+    end;
+  end;
+  idx := FUserInfo.IndexOfPiece(ServiceCode);
+  if idx >= 0 then
+  begin
+    NewVal := StrToIntDef(Piece(FUserInfo[idx],U,2),0);
+    if NewVal <> FCurSer then
+    begin
+      FCurSer := NewVal;
+      cbxService.InitLongList(GetExternalName(dlService, NewVal));
+      cbxService.SelectByIEN(NewVal);
+    end;
+  end;
+  FCurClass := 0;
+  cbxClass.ItemIndex := -1;
+  FUpdatePending := cbUser;
+  if not cbxUser.DroppedDown then
+    cbxDropDownClose(nil);
+end;
+
+procedure TfrmRemCoverSheet.cbxDropDownClose(Sender: TObject);
+begin
+  if assigned(FUpdatePending) then
+  begin
+    UpdateView;
+    if FInitialized and (not FUserMode) then
+    begin
+      if FUpdatePending.Checked then
+        cbEditLevelClick(FUpdatePending)
+      else
+        FUpdatePending.Checked := TRUE;
+    end;
+    FUpdatePending := nil;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.cbEditLevelClick(Sender: TObject);
+var
+  cb: TORCheckBox;
+  tmp: string;
+
+begin
+  cb := TORCheckBox(Sender);
+  if cb.Checked then
+  begin
+    FEditingLevel := TRemCoverDataLevel(cb.Tag);
+    if FEditingLevel <> dlUserClass then
+    begin
+      FCurClass := 0;
+      cbxClass.ItemIndex := -1;
+    end;
+    case FEditingLevel of
+      dlDivision:  FEditingIEN := FCurDiv;
+      dlService:   FEditingIEN := FCurSer;
+      dlLocation:  FEditingIEN := FCurLoc;
+      dlUserClass: FEditingIEN := FCurClass;
+      dlUser:      FEditingIEN := FCurUser;
+      else         FEditingIEN := 0;
+    end;
+    if FEditingIEN = 0 then
+    begin
+      tmp := ' ';
+      IF FEditingLevel = dlSystem then
+        FSelection := true
+      else
+      begin
+        sbCopyLeft.Enabled := false;
+        sbCopyRight.Enabled := false;
+        FSelection := false;
+      end;
+    end
+    else
+    begin
+      tmp := ': ';
+      FSelection := true;
+    end;
+    lblEdit.Caption := '  Editing Cover Sheet Reminders for ' + DataName[FEditingLevel] +
+                        tmp + GetExternalName(FEditingLevel, FEditingIEN);
+    lvCover.Columns[0].Caption := DataName[FEditingLevel] + ' Level Reminders';
+
+    SetButtonHints;   {Setup hints for Lock, Add, Remove buttons based on
+                       Parameter Level}
+    UpdateView;
+    UpdateMasterListView;
+  end
+  else
+  begin
+    FSelection := false;
+    sbCopyLeft.Enabled := false;
+    sbCopyRight.Enabled := false;
+    FEditingLevel := dlPackage;
+    FEditingIEN := 0;
+    lblEdit.Caption := '';
+    lvCover.Items.BeginUpdate;
+    try
+      lvCover.Items.Clear;
+    finally
+      lvCover.Items.EndUpdate;
+    end;
+  end;
+
+end;
+
+procedure TfrmRemCoverSheet.UpdateMasterListView;
+var
+  i: integer;
+  tmpSL: TStringList;
+  itm: TListItem;
+
+begin
+  lvCover.Items.BeginUpdate;
+  try
+    lvCover.Items.Clear;
+    if FEditingLevel <> dlPackage then
+    begin
+      tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
+      if assigned(tmpSL) then
+      begin
+        for i := 0 to tmpSL.Count-1 do
+        begin
+          itm := lvCover.Items.Add;
+          SetupItem(itm, tmpSL[i]);
+        end;
+      end;
+    end;
+  finally
+    lvCover.Items.EndUpdate;
+  end;
+  UpdateButtons;
+end;
+
+procedure TfrmRemCoverSheet.UpdateButtons;
+var
+  FocusOK, ok: boolean;
+  i, idx: integer;
+  Current, Lowest, Highest: integer;
+  tmp: string;
+  tmpSL: TORstringlist;
+  doDownButton, doUpButton: boolean;
+
+begin
+  lvCover.Enabled := (FEditingLevel <> dlPackage);
+  ok := assigned(tvAll.Selected) and (FEditingLevel <> dlPackage) and (FSelection);
+  sbCopyRight.Enabled := ok;
+
+  ok := assigned(lvCover.Selected) and (FEditingLevel <> dlPackage) and (FSelection);
+  sbCopyLeft.Enabled := ok;
+
+  ok := assigned(lvCover.Selected);
+  lblSeq.Enabled := ok;
+  edtSeq.Enabled := ok;
+
+  FUpdating := TRUE;
+  try
+    udSeq.Enabled := ok;
+    if ok then
+      udSeq.Position := StrToIntDef(lvCover.Selected.SubItems[IdxSeq],1)
+    else
+      udSeq.Position := 1;
+  finally
+    FUpdating := FALSE;
+  end;
+
+  FocusOK := lvCover.Focused or sbUp.Focused or sbDown.Focused or edtSeq.Focused or
+             udSeq.Focused or btnAdd.Focused or btnRemove.Focused or btnLock.Focused or
+             btnOK.Focused; // add btnOK so you can shift-tab backwards into list
+  btnAdd.Enabled := ok and FocusOK;
+  btnRemove.Enabled := ok and (FEditingLevel <> dlSystem) and FocusOK;
+  btnLock.Enabled := ok and (FEditingLevel <> dlUser) and FocusOK;
+  if ok then
+  begin
+    tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
+    if assigned(tmpSL) then
+    begin
+      Idx := GetIndex(tmpSL, lvCover.Selected);
+      if Idx >= 0 then
+      begin
+        tmp := tmpSL[idx];
+        tmp := piece(tmp,u,2);
+        tmp := copy(tmp,1,1);
+        if tmp = 'L' then
+        begin
+          LockButtonUpdate('Unlock', 'BMP_UNLOCK', UnlockHint);
+        end;
+        if tmp = 'N' then
+        begin
+          LockButtonUpdate('Lock', 'BMP_LOCK', LockHint);
+        end;
+        if tmp = 'R' then
+        begin
+          LockButtonUpdate('Add && Lock', 'BMP_LOCK', AddLockHint);
+        end;
+      end;
+    end;
+    ok :=(lvCover.Items.Count > 1);
+  end;
+  Lowest := 99999;
+  Highest := -1;
+  if ok then
+  begin
+    for i := 0 to lvCover.Items.Count-1 do
+    begin
+      Current := StrToIntDef(lvCover.Items[i].SubItems[IdxSeq], 0);
+      if Lowest > Current then
+        Lowest := Current;
+      if Highest < Current then
+        Highest := Current;
+    end;
+    Current := StrToIntDef(lvCover.Selected.SubItems[IdxSeq], 0);
+  end
+  else
+    Current := 0;
+  doDownButton := (sbUp.Focused and (Current = Lowest));
+  doUpButton := (sbDown.Focused and (Current = Highest));
+  sbUp.Enabled := ok and (Current > Lowest);
+  sbDown.Enabled := ok and (Current < Highest);
+  if doDownButton and sbDown.enabled then sbDown.SetFocus;
+  if doUpButton and sbUp.enabled then sbUp.SetFocus;
+end;
+
+procedure TfrmRemCoverSheet.tvAllExpanding(Sender: TObject;
+  Node: TTreeNode; var AllowExpansion: Boolean);
+var
+  List: TORStringList;
+  i, idx: integer;
+  CNode: TORTreeNode;
+
+begin
+  if Node.GetFirstChild.Text = DummyNode then
+  begin
+    Node.DeleteChildren;
+    List := GetCatInfo(copy(piece(TORTreeNode(Node).StringData,U,1),2,99));
+    if assigned(List) then
+    begin
+      for i := 0 to List.Count-1 do
+      begin
+        CNode := TORTreeNode(tvAll.Items.AddChild(Node,''));
+        CNode.StringData := List[i];
+        if copy(List[i],1,1) = CVCatCode then
+        begin
+          idx := 1;
+          tvAll.Items.AddChild(CNode, DummyNode);
+        end
+        else
+          idx := 0;
+        CNode.ImageIndex := idx;
+        CNode.SelectedIndex := idx;
+      end;
+    end;
+  end;
+  if FInternalExpansion then
+    AllowExpansion := FALSE
+  else
+    AllowExpansion := Node.HasChildren;
+end;
+
+function TfrmRemCoverSheet.GetCatInfo(CatIEN: string): TORStringList;
+var
+  i, j, idx: integer;
+  tmp: string;
+  tmpSL: TStrings;
+
+begin
+  idx := FCatInfo.IndexOf(CatIEN);
+  if idx < 0 then
+  begin
+    Result := TORStringList.Create;
+    try
+      tmpSL := GetCategoryItems(StrToIntDef(CatIEN,0));
+      for i := 0 to tmpSL.Count-1 do
+      begin
+        tmp := copy(tmpSL[i],1,1);
+        if tmp = CVCatCode then
+          idx := 3
+        else
+          idx := 4;
+        tmp := tmp + Piece(tmpSL[i],U,2) + U + Piece(tmpSL[i],U,idx);
+        j := FMasterList.IndexOfPiece(piece(tmp,U,1));
+        if j >= 0 then
+          tmp := tmp + piece(FMasterList[j],U,3);
+        Result.Add(tmp);
+      end;
+      FCatInfo.AddObject(CatIEN, Result);
+    except
+      Result.Free;
+      raise;
+    end;
+  end
+  else
+    Result := TORStringList(FCatInfo.Objects[idx]);
+end;
+
+procedure TfrmRemCoverSheet.MarkListAsChanged;
+var
+  tmp: string;
+  idx: integer;
+
+begin
+  idx := FData.IndexOfPiece(DataCode[FEditingLevel] + IntToStr(FEditingIEN));
+  if idx >= 0 then
+  begin
+    tmp := FData[idx];
+    SetPiece(Tmp,U,2,BoolChar[TRUE]);
+    FData[idx] := tmp;
+    btnApply.Enabled := TRUE;
+    UpdateView;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.edtSeqChange(Sender: TObject);
+begin
+  if FUpdating or (not FInitialized) then exit;
+  if FBottomSortTag <> 2 then
+  begin
+    FBottomSortTag := 2;
+    lvCover.CustomSort(nil, 0);
+  end;
+  SetSeq(lvCover.Selected, IntToStr(udSeq.Position));
+  lvCover.CustomSort(nil, 0);
+  UpdateButtons;
+end;
+
+procedure TfrmRemCoverSheet.tvAllExpanded(Sender: TObject;
+  Node: TTreeNode);
+var
+  idx: integer;
+
+begin
+  if Node.Expanded then
+    idx := 2
+  else
+    idx := 1;
+  Node.ImageIndex := idx;
+  Node.SelectedIndex := idx;
+end;
+
+procedure TfrmRemCoverSheet.tvAllChange(Sender: TObject; Node: TTreeNode);
+begin
+  UpdateButtons;
+end;
+
+procedure TfrmRemCoverSheet.lvCoverChange(Sender: TObject; Item: TListItem;
+  Change: TItemChange);
+begin
+  UpdateButtons;
+end;
+
+function TfrmRemCoverSheet.GetIndex(List: TORStringList;
+  Item: TListItem): integer;
+var
+  IEN: string;
+
+begin
+  if assigned(Item) and assigned(List) then
+  begin
+    IEN := Item.SubItems[IdxAdd] + Item.SubItems[IdxIEN];
+    Result := List.IndexOfPiece(IEN,U,2);
+  end
+  else
+    Result := -1;
+end;
+
+procedure TfrmRemCoverSheet.ChangeStatus(Code: string);
+var
+  tmpSL: TORStringList;
+  Idx: integer;
+  tmp,p: string;
+
+begin
+  tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
+  if assigned(tmpSL) then
+  begin
+    Idx := GetIndex(tmpSL, lvCover.Selected);
+    if Idx >= 0 then
+    begin
+      tmp := tmpSL[idx];
+      p := Piece(tmp,U,2);
+      SetPiece(tmp,U,2,Code + copy(p,2,MaxInt));
+      tmpSL[idx] := tmp;
+      MarkListAsChanged;
+      SetupItem(lvCover.Selected, tmp);
+      tmp := piece(tmp,u,2);
+      tmp := copy(tmp,1,1);
+      if tmp = 'L' then
+      begin
+        LockButtonUpdate('Unlock', 'BMP_UNLOCK', UnlockHint);
+      end;
+      if tmp = 'N' then
+      begin
+        LockButtonUpdate('Lock', 'BMP_LOCK', LockHint);
+      end;
+      if tmp = 'R' then
+      begin
+        LockButtonUpdate('Add && Lock', 'BMP_LOCK', AddLockHint);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.btnAddClick(Sender: TObject);
+begin
+  ChangeStatus(CVAddCode);
+end;
+
+procedure TfrmRemCoverSheet.btnRemoveClick(Sender: TObject);
+begin
+  ChangeStatus(CVRemoveCode);
+end;
+
+procedure TfrmRemCoverSheet.btnLockClick(Sender: TObject);
+begin
+  ChangeStatus(CVLockCode);
+end;
+
+procedure TfrmRemCoverSheet.lvViewColumnClick(Sender: TObject;
+  Column: TListColumn);
+begin
+  if FTopSortTag = Column.Tag then
+    FTopSortUp := not FTopSortUp
+  else
+    FTopSortTag := Column.Tag;
+  lvView.CustomSort(nil, 0);
+end;
+
+type
+  TSortData = (sdRem, sdSeq, sdLvl, sdOther);
+
+procedure TfrmRemCoverSheet.lvCoverColumnClick(Sender: TObject;
+  Column: TListColumn);
+begin
+  if FBottomSortTag = Column.Tag then
+    FBottomSortUp := not FBottomSortUp
+  else
+    FBottomSortTag := Column.Tag;
+  lvCover.CustomSort(nil, 0);
+end;
+
+procedure TfrmRemCoverSheet.lvViewCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+var
+  i: integer;
+  odr: array[1..4] of TSortData;
+  s1, s2: string;
+
+begin
+  odr[1] := TSortData(FTopSortTag-1);
+  case FTopSortTag of
+    1: begin
+         odr[2] := sdSeq;
+         odr[3] := sdLvl;
+         odr[4] := sdOther;
+       end;
+
+    2: begin
+         odr[2] := sdLvl;
+         odr[3] := sdOther;
+         odr[4] := sdRem;
+       end;
+
+    3: begin
+         odr[2] := sdOther;
+         odr[3] := sdSeq;
+         odr[4] := sdRem;
+       end;
+
+    4: begin
+         odr[2] := sdLvl;
+         odr[3] := sdSeq;
+         odr[4] := sdRem;
+       end;
+  end;
+  Compare := 0;
+  for i := 1 to 4 do
+  begin
+    case odr[i] of
+      sdRem:   begin
+                 s1 := Item1.Caption;
+                 s2 := Item2.Caption;
+               end;
+
+      sdSeq:   begin
+                 s1 := RPad(Item1.SubItems[IdxSeq]);
+                 s2 := RPad(Item2.SubItems[IdxSeq]);
+               end;
+
+      sdLvl:   begin
+                 s1 := Item1.SubItems[IdxLvl2];
+                 s2 := Item2.SubItems[IdxLvl2];
+               end;
+
+      sdOther: begin
+                 s1 := Item1.SubItems[IdxType];
+                 s2 := Item2.SubItems[IdxType];
+               end;
+
+    end;
+    Compare := CompareText(s1, s2);
+    if Compare <> 0 then break;
+  end;
+  if not FTopSortUp then
+    Compare := -Compare;
+end;
+
+procedure TfrmRemCoverSheet.lvCoverCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+var
+  i: integer;
+  odr: array[1..2] of TSortData;
+  s1, s2: string;
+
+begin
+  case FBottomSortTag of
+    1: begin
+         odr[1] := sdRem;
+         odr[2] := sdSeq;
+       end;
+
+    2: begin
+         odr[1] := sdSeq;
+         odr[2] := sdRem;
+       end;
+  end;
+  Compare := 0;
+  for i := 1 to 2 do
+  begin
+    case odr[i] of
+      sdRem:   begin
+                 s1 := Item1.Caption;
+                 s2 := Item2.Caption;
+               end;
+
+      sdSeq:   begin
+                 s1 := RPad(Item1.SubItems[IdxSeq]);
+                 s2 := RPad(Item2.SubItems[IdxSeq]);
+               end;
+    end;
+    Compare := CompareText(s1, s2);
+    if Compare <> 0 then break;
+  end;
+  if not FBottomSortUp then
+    Compare := -Compare;
+end;
+
+procedure TfrmRemCoverSheet.sbUpClick(Sender: TObject);
+var
+  NextItem: TListItem;
+  Seq1, Seq2: string;
+
+begin
+  if assigned(lvCover.Selected) then
+  begin
+    if FBottomSortTag <> 2 then
+    begin
+      FBottomSortTag := 2;
+      lvCover.CustomSort(nil, 0);
+    end;
+    if lvCover.Selected.Index > 0 then
+    begin
+      NextItem := lvCover.Items[lvCover.Selected.Index - 1];
+      Seq1 := NextItem.SubItems[IdxSeq];
+      Seq2 := lvCover.Selected.SubItems[IdxSeq];
+      SetSeq(NextItem, Seq2);
+      SetSeq(lvCover.Selected, Seq1);
+      lvCover.CustomSort(nil, 0);
+      If ScreenReaderSystemActive then
+        GetScreenReader.Speak('Reminder Moved up in Sequence');
+      UpdateButtons;
+    end;            
+  end;
+end;
+
+procedure TfrmRemCoverSheet.sbDownClick(Sender: TObject);
+var
+  NextItem: TListItem;
+  Seq1, Seq2: string;
+
+begin
+  if assigned(lvCover.Selected) then
+  begin
+    if FBottomSortTag <> 2 then
+    begin
+      FBottomSortTag := 2;
+      lvCover.CustomSort(nil, 0);
+    end;
+    if lvCover.Selected.Index < (lvCover.Items.Count-1) then
+    begin
+      NextItem := lvCover.Items[lvCover.Selected.Index + 1];
+      Seq1 := NextItem.SubItems[IdxSeq];
+      Seq2 := lvCover.Selected.SubItems[IdxSeq];
+      SetSeq(NextItem, Seq2);
+      SetSeq(lvCover.Selected, Seq1);
+      lvCover.CustomSort(nil, 0);
+      If ScreenReaderSystemActive then
+        GetScreenReader.Speak('Reminder Moved down in Sequence');
+      UpdateButtons;
+    end;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.SetSeq(Item: TListItem; const Value: string);
+var
+  tmpSL: TORStringList;
+  Idx: integer;
+  tmp: string;
+
+begin
+  tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
+  if assigned(tmpSL) then
+  begin
+    Idx := GetIndex(tmpSL, Item);
+    if Idx >= 0 then
+    begin
+      tmp := tmpSL[idx];
+      if(Piece(Tmp,U,1) <> Value) then
+      begin
+        SetPiece(tmp,U,1,Value);
+        tmpSL[idx] := tmp;
+        MarkListAsChanged;
+        SetupItem(Item, tmp);
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.sbCopyRightClick(Sender: TObject);
+var
+  i: integer;
+  Seq, Cur, Idx: integer;
+  tmpSL: TORStringList;
+  IEN: string;
+
+begin
+  if assigned(tvAll.Selected) then
+  begin
+    IEN := Piece(TORTreeNode(tvAll.Selected).StringData, U, 1);
+    if ListHasData(IEN, IdxIEN) then
+    begin
+      ShowMsg('List already contains this Reminder');
+      exit;
+    end;
+    if lvCover.Items.Count = 0 then
+      Seq := 10
+    else
+    begin
+      Seq := 0;
+      for i := 0 to lvCover.Items.Count-1 do
+      begin
+        Cur := StrToIntDef(lvCover.Items[i].SubItems[IdxSeq], 0);
+        if Seq < Cur then
+          Seq := Cur;
+      end;
+      inc(Seq,10);
+      if Seq > 999 then
+      begin
+        Seq := 999;
+        while (Seq > 0) and ListHasData(IntToStr(Seq), IdxSeq) do dec(Seq);
+      end;
+    end;
+    if Seq > 0 then
+    begin
+      tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE, TRUE);
+      Idx := tmpSL.IndexOfPiece(IEN,U,2);
+      if Idx < 0 then
+      begin
+        tmpSL.Add(IntToStr(Seq) + U + CVAddCode + TORTreeNode(tvAll.Selected).StringData);
+        MarkListAsChanged;
+        UpdateMasterListView;
+        for i := 0 to lvCover.Items.Count-1 do
+          if IEN = lvCover.Items[i].SubItems[IdxIEN] then
+          begin
+            lvCover.Selected := lvCover.Items[i];
+            break;
+          end;
+      end;
+      if ScreenReaderSystemActive then
+        GetScreenReader.Speak('Reminder Added to ' + DataName[FEditingLevel] + ' Level Reminders List');
+    end;
+  end;
+end;
+
+function TfrmRemCoverSheet.ListHasData(Seq: string; SubIdx: integer): boolean;
+var
+  i: integer;
+
+begin
+  Result := FALSE;
+  for i := 0 to lvCover.Items.Count-1 do
+    if Seq = lvCover.Items[i].SubItems[SubIdx] then
+    begin
+      Result := TRUE;
+      break;
+    end;
+end;
+
+procedure TfrmRemCoverSheet.udSeqChangingEx(Sender: TObject;
+  var AllowChange: Boolean; NewValue: Smallint;
+  Direction: TUpDownDirection);
+begin
+  if FUpdating or (not FInitialized) then exit;
+  if ListHasData(IntToStr(NewValue), IdxSeq) then
+  begin
+    AllowChange := FALSE;
+    case Direction of
+      updUp:   udSeq.Position := NewValue + 1;
+      updDown: udSeq.Position := NewValue - 1;
+    end;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.sbCopyLeftClick(Sender: TObject);
+var
+  idx, Index, i: integer;
+  tmpSL: TORStringList;
+
+begin
+  if assigned(lvCover.Selected) then
+  begin
+    tmpSL := GetCurrent(FEditingIEN, FEditingLevel, FALSE);
+    if assigned(tmpSL) then
+    begin
+      Idx := GetIndex(tmpSL, lvCover.Selected);
+      Index := lvCover.Selected.Index;
+      if Idx >= 0 then
+      begin
+        tmpSL.Delete(Idx);
+        MarkListAsChanged;
+        UpdateMasterListView;
+        if lvCover.Items.Count > 0 then
+        begin
+          if Index > 0 then
+            dec(Index);
+          for i := 0 to lvCover.Items.Count-1 do
+            if lvCover.Items[i].Index = Index then
+            begin
+              lvCover.Selected := lvCover.Items[i];
+              break;
+            end;
+        end;
+        if ScreenReaderSystemActive then
+          GetScreenReader.Speak('Reminder Removed from ' + DataName[FEditingLevel] + ' Level Reminders List');
+      end;
+    end;
+    if sbCopyLeft.Enabled and (not sbCopyLeft.Focused) then
+      sbCopyLeft.SetFocus;    
+  end;
+end;
+
+procedure TfrmRemCoverSheet.tvAllDblClick(Sender: TObject);
+begin
+  if sbCopyRight.Enabled then
+    sbCopyRight.Click;
+end;
+
+procedure TfrmRemCoverSheet.btnApplyClick(Sender: TObject);
+begin
+  SaveData(TRUE);
+  btnApply.Enabled := FALSE;
+end;
+
+procedure TfrmRemCoverSheet.btnOKClick(Sender: TObject);
+begin
+  SaveData(FALSE);
+end;
+
+procedure TfrmRemCoverSheet.SaveData(FromApply: boolean);
+var
+  i, j: integer;
+  tmpSL: TORStringList;
+  DeleteIt, DoRefresh: boolean;
+  Level, lvl: TRemCoverDataLevel;
+  ALevel, AClass, Code, IEN: string;
+
+begin
+  DoRefresh := FALSE;
+  i := 0;
+  while (i < FData.Count) do
+  begin
+    DeleteIt := FALSE;
+    if(Piece(FData[i],U,2) = BoolChar[TRUE]) then
+    begin
+      tmpSL := TORStringList(FData.Objects[i]);
+      if assigned(tmpSL) then
+      begin
+        Level := dlPackage;
+        Code := copy(FData[i],1,1);
+        for lvl := low(TRemCoverDataLevel) to high(TRemCoverDataLevel) do
+        begin
+          if DataCode[lvl] = Code then
+          begin
+            Level := lvl;
+            break;
+          end;
+        end;
+        if Level <> dlPackage then
+        begin
+          IEN := copy(Piece(FData[i],U,1),2,MaxInt);
+          ALevel := InternalName[Level];
+          ACLass := '';
+          case Level of
+            dlDivision, dlService, dlLocation, dlUser:
+              ALevel := ALevel + '.`' + IEN;
+            dlUserClass:
+              AClass := IEN;
+          end;
+          for j := 0 to tmpSL.Count-1 do
+            tmpSL[j] := pieces(tmpSL[j],U,1,2);
+          SetCoverSheetLevelData(ALevel, AClass, tmpSL);
+          tmpSL.Free;
+          DeleteIt := TRUE;
+          FDataSaved := TRUE;
+          DoRefresh := TRUE;
+        end;
+      end;
+    end;
+    if DeleteIt then
+      FData.Delete(i)
+    else
+      inc(i);
+  end;
+  if FromApply and DoRefresh then
+    UpdateMasterListView;
+end;
+
+procedure TfrmRemCoverSheet.lvCoverDblClick(Sender: TObject);
+begin
+  if sbCopyLeft.Enabled then
+    sbCopyLeft.Click;
+end;
+
+procedure TfrmRemCoverSheet.lvViewChange(Sender: TObject; Item: TListItem;
+  Change: TItemChange);
+begin
+  lvViewSelectItem(Sender, Item, FALSE);
+end;
+
+procedure TfrmRemCoverSheet.lvViewSelectItem(Sender: TObject; Item: TListItem;
+  Selected: Boolean);
+var
+  lvl: TRemCoverDataLevel;
+  i: integer;
+  ClsName, TIEN, IEN, lvlName: string;
+  ok: boolean;
+
+begin
+  if assigned(lvView.Selected) and (not FUpdatingView) then
+  begin
+    FUpdatingView := TRUE;
+    try
+      lvl := TRemCoverDataLevel(StrToIntDef(lvView.Selected.SubItems[IdxLvl2],ord(dlUser)));
+      IEN := lvView.Selected.SubItems[IdxIEN];
+      lvlName := lvView.Selected.SubItems[IdxLvl];
+      TIEN := lvView.Selected.SubItems[IdxTIEN];
+      ClsName := lvView.Selected.SubItems[IdxType];
+      ok := (lvl <> FEditingLevel);
+      if(not ok) and (lvl = dlUserClass) then
+        ok := (FEditingIEN <> StrToIntDef(TIEN,0));
+      if (not FUserMode) and ok and (lvl <> dlPackage) then
+      begin
+        case lvl of
+          dlSystem:    FUpdatePending := cbSystem;
+          dlDivision:  FUpdatePending := cbDivision;
+          dlService:   FUpdatePending := cbService;
+          dlLocation:  FUpdatePending := cbLocation;
+          dlUserClass: FUpdatePending := cbUserClass;
+          dlUser:      FUpdatePending := cbUser;
+        end;
+        if lvl = dlUserClass then
+        begin
+          cbxClass.InitLongList(ClsName);
+          cbxClass.SelectByID(TIEN);
+          FCurClass := cbxClass.ItemIEN;
+        end;
+        cbxDropDownClose(nil);
+      end;
+      if (lvl = FEditingLevel) then
+      begin
+        for i := 0 to lvCover.Items.Count-1 do
+          if IEN = lvCover.Items[i].SubItems[IdxIEN] then
+          begin
+            lvCover.Selected := lvCover.Items[i];
+            break;
+          end;
+      end;
+      for i := 0 to lvView.Items.Count-1 do
+      begin
+        if (IEN = lvView.Items[i].SubItems[IdxIEN]) and
+           (lvlName = lvView.Items[i].SubItems[IdxLvl]) then
+        begin
+          lvView.Selected := lvView.Items[i];
+          break;
+        end;
+      end;
+    finally
+      FUpdatingView := FALSE;
+    end;
+  end;
+end;
+
+function TfrmRemCoverSheet.RPad(Str: String): String;
+begin
+  Result := StringOfChar('0',7-length(Str)) + Str;
+end;
+
+procedure TfrmRemCoverSheet.btnViewClick(Sender: TObject);
+var
+  frmRemCoverPreview: TfrmRemCoverPreview;
+  CurSortOrder: integer;
+  CurSortDir: boolean;
+  i, idx, SeqCnt: integer;
+  Lvl, LastLvl, tmp, AddCode, IEN, Seq, SortID: string;
+  RemList, LvlList: TORStringList; // IEN^Name^Seq^SortID^Locked
+  ANode: TTreeNode;
+
+  procedure GetAllChildren(PNode: TTreeNode; const ASeq, ASortID: string);
+  var
+    Node: TTreeNode;
+
+  begin
+    PNode.Expand(FALSE);
+    Node := PNode.GetFirstChild;
+    while assigned(Node) do
+    begin
+      tmp := TORTreeNode(Node).StringData;
+      if copy(tmp,1,1) = CVCatCode then
+        GetAllChildren(Node, ASeq, ASortID)
+      else
+      begin
+        if RemList.IndexOfPiece(Piece(tmp,u,1)) < 0 then
+        begin
+          SetPiece(tmp,u,3,ASeq);
+          inc(SeqCnt);
+          SortID := copy(ASortID,1,7) + RPad(IntToStr(SeqCnt)) + copy(ASortID,15,MaxInt);
+          SetPiece(tmp,u,4,SortID);
+          RemList.Add(tmp);
+        end;
+      end;
+      Node := Node.GetNextSibling;
+    end;
+  end;
+
+begin
+  Screen.OnActiveControlChange := fOldFocusChanged;
+  try
+    frmRemCoverPreview := TfrmRemCoverPreview.Create(Application);
+    try
+      CurSortOrder := FTopSortTag;
+      CurSortDir := FTopSortUp;
+      lvView.Items.BeginUpdate;
+      try
+        FTopSortTag := 3;
+        FTopSortUp := TRUE;
+        lvView.CustomSort(nil, 0);
+        RemList := TORStringList.Create;
+        try
+          LvlList := TORStringList.Create;
+          try
+            LastLvl := '';
+            for i := 0 to lvView.Items.Count-1 do
+            begin
+              Lvl := lvView.Items[i].SubItems[IdxLvl2];
+              if LvL <> LastLvl then
+              begin
+                RemList.AddStrings(LvlList);
+                LvlList.Clear;
+                LastLvl := Lvl;
+              end;
+              IEN := lvView.Items[i].SubItems[IdxIEN];
+              AddCode := lvView.Items[i].SubItems[IdxAdd];
+              idx := RemList.IndexOfPiece(IEN);
+              if AddCode = CVRemoveCode then
+              begin
+                if(idx >= 0) and (piece(RemList[idx],U,5) <> '1') then
+                  RemList.Delete(idx);
+              end
+              else
+              begin
+                if idx < 0 then
+                begin
+                  Seq := lvView.Items[i].SubItems[IdxSeq];
+                  SortID := RPad(Seq) + '0000000' + lvl + copy(lvView.Items[i].SubItems[IdxTIEN] + '0000000000',1,10);
+                  tmp := IEN + U + lvView.Items[i].Caption + U + Seq + U + SortID;
+                  if AddCode = CVLockCode then
+                    tmp := tmp + U + '1';
+                  RemList.Add(tmp);
+                end
+                else
+                if (AddCode = CVLockCode) and (piece(RemList[idx],U,5) <> '1') then
+                begin
+                  tmp := RemList[idx];
+                  SetPiece(tmp,U,5,'1');
+                  RemList[idx] := tmp;
+                end;
+              end;
+            end;
+            RemList.AddStrings(LvlList);
+            FTopSortTag := CurSortOrder;
+            FTopSortUp := CurSortDir;
+            lvView.CustomSort(nil, 0);
+
+            LvlList.Clear;
+            //LvlList.Assign(RemList);
+            FastAssign(RemList, LvlList);
+            RemList.Clear;
+            FInternalExpansion := TRUE;
+            try
+              for i := 0 to LvlList.Count-1 do
+              begin
+                IEN := piece(LvlList[i],U,1);
+                if (copy(LvlList[i],1,1) = CVCatCode) then
+                begin
+                  ANode := tvAll.Items.GetFirstNode;
+                  while assigned(ANode) do
+                  begin
+                    if IEN = piece(TORTreeNode(ANode).StringData,U,1) then
+                    begin
+                      SeqCnt := 0;
+                      GetAllChildren(ANode, Piece(LvlList[i], U, 3), Piece(LvlList[i], U, 4));
+                      ANode := nil;
+                    end
+                    else
+                      ANode := ANode.GetNextSibling;
+                  end;
+                end
+                else
+                if RemList.IndexOfPiece(IEN) < 0 then
+                  RemList.Add(LvlList[i]);
+              end;
+            finally
+              FInternalExpansion := FALSE;
+            end;
+          finally
+            LvlList.Free;
+          end;
+
+          RemList.SortByPiece(4);
+          for i := 0 to RemList.Count-1 do
+          begin
+            with frmRemCoverPreview.lvMain.Items.Add do
+            begin
+              tmp := RemList[i];
+              Caption := Piece(tmp, U, 2);
+              SubItems.Add(Piece(tmp, U, 3));
+              SubItems.Add(Piece(tmp, U, 4));
+            end;
+          end;
+        finally
+          RemList.Free;
+        end;
+      finally
+        lvView.Items.EndUpdate;
+      end;
+      frmRemCoverPreview.ShowModal;
+    finally
+      frmRemCoverPreview.Free;
+    end;
+  finally
+    Screen.OnActiveControlChange := ActiveControlChanged;
+  end;
+end;
+
+procedure TfrmRemCoverSheet.lvCoverKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (Key = VK_DELETE) and sbCopyLeft.Enabled then
+    sbCopyLeft.Click;
+end;
+
+procedure TfrmRemCoverSheet.edtSeqKeyPress(Sender: TObject; var Key: Char);
+begin
+  if (Key < '0') or (Key > '9') then
+    Key := #0;
+end;
+
+procedure TfrmRemCoverSheet.cbxDivisionKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  if (Key = VK_RETURN) and TORComboBox(Sender).DroppedDown then
+    TORComboBox(Sender).DroppedDown := FALSE;
+end;
+
+function TfrmRemCoverSheet.GetCoverSheetLvlData(ALevel,
+  AClass: string): TStrings;
+var
+  IEN: string;
+  i, j: integer;
+
+begin
+  Result := GetCoverSheetLevelData(ALevel, AClass);
+  for i := 0 to Result.Count-1 do
+  begin
+    IEN := copy(piece(Result[i],U,2),2,MaxInt);
+    j := FMasterList.IndexOfPiece(IEN);
+    if j >= 0 then
+      Result[i] := Result[i] + piece(FMasterList[j],U,3);
+  end;
+end;
+
+procedure TfrmRemCoverSheet.SetButtonHints;
+{This procedure sets the Lock, Add, and Remove button hints based on the
+ selected parameter level}
+begin
+  if FEditingLevel = dlDivision then
+  begin
+    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
+          + CRLF + 'so it can not be removed from the Coversheet display at any'
+          + CRLF + 'of the lower levels (Service, Location, User Class, User).';
+    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
+          + CRLF + 'remove Reminders which are locked at the System level.';
+    btnAdd.hint := 'Adds Reminders to the Coversheet at the Division level and'
+          + CRLF + 'below.  It also removes the lock from a Reminder locked at'
+          + CRLF + 'the Division level while leaving the Reminder on the Coversheet.';
+  end
+  else if FEditingLevel = dlService then
+  begin
+    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
+          + CRLF + 'so it can not be removed from the Coversheet display at any of'
+          + CRLF + 'the lower levels (Location, User Class, User).';
+    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
+          + CRLF + 'remove Reminders which are locked at the Division level or higher.';
+    btnAdd.hint := 'Adds Reminders to the Coversheet at the Service level and'
+          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
+          + CRLF + 'Service level while leaving the Reminder on the Coversheet.';
+  end
+  else if FEditingLevel = dlLocation then
+  begin
+    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
+          + CRLF + 'so it can not be removed from the Coversheet display at any of'
+          + CRLF + 'the lower levels (User Class, User).';
+    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
+          + CRLF + 'remove Reminders which are locked at the Service level or higher.';
+    btnAdd.hint := 'Adds Reminders to the Coversheet at the Location level and'
+          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
+          + CRLF + 'Location level while leaving the Reminder on the Coversheet.';
+  end
+  else if FEditingLevel = dlUserClass then
+  begin
+    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder so'
+          + CRLF + 'it can not be removed from the Coversheet display at the User level.';
+    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not remove'
+          + CRLF + 'Reminders which are locked at the Location level or higher.';
+    btnAdd.hint := 'Adds Reminders to the Coversheet at the User Class level and'
+          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
+          + CRLF + 'User Class level while leaving the Reminder on the Coversheet.';
+  end
+  else if FEditingLevel = dlUser then
+  begin
+    btnRemove.hint := 'Removes Reminders from the Coversheet display.  Will not'
+          + CRLF + 'remove Reminders which are locked at the User Class level'
+          + CRLF + 'or higher.';
+    btnAdd.hint := 'Adds Reminders to the Coversheet at the User level.';
+  end
+  else
+  begin
+    btnLock.hint := 'Adds Reminder to the Coversheet display and Locks the Reminder'
+          + CRLF + 'so it can not be removed from the Coversheet display at any of'
+          + CRLF + 'the lower levels (Division, Service, Location, User Class, User).';
+    btnRemove.hint := 'Removes Reminders from the Coversheet display.';
+    btnAdd.hint := 'Adds Reminders to the Coversheet at the System level and'
+          + CRLF + 'below.  It also removes the lock from a Reminder locked at the'
+          + CRLF + 'System level while leaving the Reminder on the Coversheet.';
+  end;
+end;
+
+procedure TfrmRemCoverSheet.FormCreate(Sender: TObject);
+begin
+  FSavePause := Application.HintHidePause;   //Save Hint Pause setting
+  Application.HintHidePause := 20000;   //Reset Hint Pause to 20 seconds
+  mlgnLock.hint := 'Lock a Reminder to prevent it''s removal from a lower'
+          + CRLF + 'level  Coversheet display.  For example, if you lock'
+          + CRLF + 'a Reminder at the Service level, then that Reminder'
+          + CRLF + 'can not be removed from the coversheet display at'
+          + CRLF + 'the Location, User Class, or User levels.';
+  fOldFocusChanged := Screen.OnActiveControlChange;
+  Screen.OnActiveControlChange := ActiveControlChanged;
+end;
+
+procedure TfrmRemCoverSheet.ActiveControlChanged(Sender: TObject);
+begin
+  if assigned(fOldFocusChanged) then fOldFocusChanged(Sender);
+  UpdateButtons;
+end;
+
+procedure TfrmRemCoverSheet.LockButtonUpdate(Data, FNAME, Hint: string);
+begin
+  btnLock.Caption := Data;
+  btnLock.Glyph.LoadFromResourceName(hinstance, FNAME);
+  if btnLock.Hint <> Hint then btnLock.Hint := Hint;
+  if FNAME = 'BMP_LOCK' then btnLock.OnClick := btnLockClick
+  else
+    btnLock.OnClick := btnAddClick;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemVisitInfo.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemVisitInfo.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemVisitInfo.dfm	(revision 1676)
@@ -0,0 +1,161 @@
+inherited frmRemVisitInfo: TfrmRemVisitInfo
+  Left = 192
+  Top = 195
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsDialog
+  Caption = 'Other Visit Information'
+  ClientHeight = 221
+  ClientWidth = 316
+  Position = poOwnerFormCenter
+  OnCreate = FormCreate
+  DesignSize = (
+    316
+    221)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblVital: TLabel [0]
+    Left = 3
+    Top = 6
+    Width = 111
+    Height = 13
+    Caption = 'Vital Entry Date && Time:'
+  end
+  inline fraVisitRelated: TfraVisitRelated [1]
+    Left = 106
+    Top = 27
+    Width = 207
+    Height = 174
+    Anchors = [akTop, akRight]
+    TabOrder = 2
+    TabStop = True
+    ExplicitLeft = 106
+    ExplicitTop = 27
+    ExplicitWidth = 207
+    ExplicitHeight = 174
+    inherited gbVisitRelatedTo: TGroupBox
+      Width = 207
+      Height = 174
+    end
+  end
+  object btnOK: TButton
+    Left = 158
+    Top = 198
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = '&OK'
+    Default = True
+    ModalResult = 1
+    TabOrder = 3
+  end
+  object btnCancel: TButton
+    Left = 238
+    Top = 198
+    Width = 75
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = '&Cancel'
+    ModalResult = 2
+    TabOrder = 4
+  end
+  object dteVitals: TORDateBox
+    Tag = 11
+    Left = 119
+    Top = 2
+    Width = 133
+    Height = 21
+    TabOrder = 0
+    DateOnly = False
+    RequireTime = True
+    Caption = 'Vital Entry Date && Time:'
+  end
+  object btnNow: TButton
+    Left = 269
+    Top = 2
+    Width = 43
+    Height = 21
+    Anchors = [akTop, akRight]
+    Caption = 'NOW'
+    TabOrder = 1
+    OnClick = btnNowClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = fraVisitRelated'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.gbVisitRelatedTo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSCYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkAOYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkIRYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkECYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkMSTYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkMSTNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkECNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkIRNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkAONo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSCNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkHNCYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkHNCNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkCVYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkCVNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSHDYes'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.chkSHDNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.lblSCNo'
+        'Status = stsDefault')
+      (
+        'Component = fraVisitRelated.lblSCYes'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = dteVitals'
+        'Status = stsDefault')
+      (
+        'Component = btnNow'
+        'Status = stsDefault')
+      (
+        'Component = frmRemVisitInfo'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemVisitInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemVisitInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRemVisitInfo.pas	(revision 1676)
@@ -0,0 +1,44 @@
+unit fRemVisitInfo;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, mVisitRelated, ORDtTm,fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmRemVisitInfo = class(TfrmBase508Form)
+    fraVisitRelated: TfraVisitRelated;
+    btnOK: TButton;
+    btnCancel: TButton;
+    dteVitals: TORDateBox;
+    lblVital: TLabel;
+    btnNow: TButton;
+    procedure btnNowClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  ORFn;
+  
+procedure TfrmRemVisitInfo.btnNowClick(Sender: TObject);
+begin
+  dteVitals.Text := 'NOW';
+end;
+
+procedure TfrmRemVisitInfo.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  btnOK.Top := fraVisitRelated.Top + fraVisitRelated.Height;
+  btnCancel.Top := btnOK.Top;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderDialog.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderDialog.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderDialog.dfm	(revision 1676)
@@ -0,0 +1,279 @@
+inherited frmRemDlg: TfrmRemDlg
+  Left = 310
+  Top = 154
+  Width = 543
+  Height = 405
+  HelpContext = 11100
+  VertScrollBar.Range = 162
+  BorderIcons = [biSystemMenu]
+  Caption = 'Reminder Dialog'
+  Constraints.MinHeight = 250
+  Constraints.MinWidth = 250
+  FormStyle = fsStayOnTop
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  ExplicitWidth = 543
+  ExplicitHeight = 405
+  PixelsPerInch = 96
+  TextHeight = 13
+  object splTxtData: TSplitter [0]
+    Left = 0
+    Top = 216
+    Width = 535
+    Height = 3
+    Cursor = crVSplit
+    Align = alBottom
+    ExplicitTop = 218
+    ExplicitWidth = 537
+  end
+  object sb1: TScrollBox [1]
+    Left = 0
+    Top = 0
+    Width = 535
+    Height = 216
+    HorzScrollBar.Tracking = True
+    VertScrollBar.Tracking = True
+    Align = alClient
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 0
+    Visible = False
+    OnResize = sbResize
+    ExplicitWidth = 537
+    ExplicitHeight = 218
+  end
+  object sb2: TScrollBox [2]
+    Left = 0
+    Top = 0
+    Width = 535
+    Height = 216
+    HorzScrollBar.Tracking = True
+    VertScrollBar.Tracking = True
+    Align = alClient
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+    OnResize = sbResize
+    ExplicitWidth = 537
+    ExplicitHeight = 218
+  end
+  object pnlFrmBottom: TPanel [3]
+    Left = 0
+    Top = 219
+    Width = 535
+    Height = 159
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    ExplicitTop = 221
+    ExplicitWidth = 537
+    object lblFootnotes: TLabel
+      Left = 0
+      Top = 144
+      Width = 535
+      Height = 15
+      Align = alBottom
+      AutoSize = False
+      Caption = ' * Indicates a Required Field'
+      ExplicitWidth = 537
+    end
+    object pnlBottom: TPanel
+      Left = 0
+      Top = 0
+      Width = 535
+      Height = 144
+      Align = alClient
+      TabOrder = 0
+      ExplicitWidth = 537
+      object splText: TSplitter
+        Left = 1
+        Top = 94
+        Width = 533
+        Height = 3
+        Cursor = crVSplit
+        Align = alBottom
+        ExplicitWidth = 535
+      end
+      object reData: TRichEdit
+        Left = 1
+        Top = 97
+        Width = 533
+        Height = 46
+        Align = alBottom
+        Color = clCream
+        ReadOnly = True
+        ScrollBars = ssVertical
+        TabOrder = 2
+        WantReturns = False
+        ExplicitWidth = 535
+      end
+      object reText: TRichEdit
+        Left = 1
+        Top = 25
+        Width = 533
+        Height = 69
+        Align = alClient
+        Color = clCream
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 1
+        WantReturns = False
+        WordWrap = False
+        ExplicitWidth = 535
+      end
+      object pnlButtons: TORAutoPanel
+        Left = 1
+        Top = 1
+        Width = 533
+        Height = 24
+        Align = alTop
+        BevelOuter = bvNone
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        ExplicitWidth = 535
+        object btnClear: TButton
+          Left = 2
+          Top = 2
+          Width = 66
+          Height = 21
+          Hint = 'Clear Reminder Resolutions for this Reminder'
+          Caption = 'Clear'
+          TabOrder = 0
+          OnClick = btnClearClick
+        end
+        object btnBack: TButton
+          Left = 263
+          Top = 2
+          Width = 66
+          Height = 21
+          Hint = 'Go back to the Previous Reminder Dialog'
+          Caption = '<  Back'
+          TabOrder = 3
+          OnClick = btnBackClick
+        end
+        object btnCancel: TButton
+          Left = 467
+          Top = 2
+          Width = 66
+          Height = 21
+          Hint = 'Cancel All Reminder Dialog Processing'
+          Cancel = True
+          Caption = 'Cancel'
+          TabOrder = 6
+          OnClick = btnCancelClick
+        end
+        object btnNext: TButton
+          Left = 331
+          Top = 2
+          Width = 66
+          Height = 21
+          Hint = 'Go on to the Next Reminder Dialog'
+          Caption = 'Next  >'
+          TabOrder = 4
+          OnClick = btnNextClick
+        end
+        object btnFinish: TButton
+          Left = 399
+          Top = 2
+          Width = 66
+          Height = 21
+          Hint = 'Finish Processing'
+          Caption = 'Finish'
+          TabOrder = 5
+          OnClick = btnFinishClick
+        end
+        object btnClinMaint: TButton
+          Left = 70
+          Top = 2
+          Width = 105
+          Height = 21
+          Hint = 'View the Clinical Maintenance Component'
+          Caption = 'Clinical &Maint'
+          TabOrder = 1
+          OnClick = btnClinMaintClick
+        end
+        object btnVisit: TButton
+          Left = 177
+          Top = 2
+          Width = 84
+          Height = 21
+          Caption = '&Visit Info'
+          TabOrder = 2
+          OnClick = btnVisitClick
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = sb1'
+        'Status = stsDefault')
+      (
+        'Component = sb2'
+        'Status = stsDefault')
+      (
+        'Component = pnlFrmBottom'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = reData'
+        'Status = stsDefault')
+      (
+        'Component = reText'
+        'Status = stsDefault')
+      (
+        'Component = pnlButtons'
+        'Status = stsDefault')
+      (
+        'Component = btnClear'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnBack'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnCancel'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnNext'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnFinish'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnClinMaint'
+        'Property = Hint'
+        'Status = stsOK')
+      (
+        'Component = btnVisit'
+        'Status = stsDefault')
+      (
+        'Component = frmRemDlg'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderDialog.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderDialog.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderDialog.pas	(revision 1676)
@@ -0,0 +1,1761 @@
+unit fReminderDialog;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORFn, StdCtrls, ComCtrls, Buttons, ORCtrls, uReminders, uConst,
+  ORClasses, fRptBox, Menus, rPCE, uTemplates,fBase508Form,
+  VA508AccessibilityManager, fMHTest;
+
+type
+  TfrmRemDlg = class(TfrmBase508Form)
+    sb1: TScrollBox;
+    sb2: TScrollBox;
+    splTxtData: TSplitter;
+    pnlFrmBottom: TPanel;
+    pnlBottom: TPanel;
+    splText: TSplitter;
+    reData: TRichEdit;
+    reText: TRichEdit;
+    pnlButtons: TORAutoPanel;
+    btnClear: TButton;
+    btnBack: TButton;
+    btnCancel: TButton;
+    btnNext: TButton;
+    btnFinish: TButton;
+    btnClinMaint: TButton;
+    btnVisit: TButton;
+    lblFootnotes: TLabel;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure sbResize(Sender: TObject);
+    procedure btnClearClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure ProcessReminderFromNodeStr(value: string);
+    procedure btnNextClick(Sender: TObject);
+    procedure btnBackClick(Sender: TObject);
+    procedure btnFinishClick(Sender: TObject);
+    procedure btnClinMaintClick(Sender: TObject);
+    procedure btnVisitClick(Sender: TObject);
+    procedure KillDlg(ptr: Pointer; ID: string; KillObjects: boolean = FALSE);
+    procedure FormShow(Sender: TObject); //AGP Change 24.8
+  private
+    FSCCond: TSCConditions;
+    FSCPrompt: boolean;
+    FVitalsDate: TFMDateTime;
+    FSCRelated: integer;
+    FAORelated: integer;
+    FIRRelated: integer;
+    FECRelated: integer;
+    FMSTRelated: integer;
+    FHNCRelated: integer;
+    FCVRelated: integer;
+    FSHDRelated: integer;
+    FLastWidth: integer;
+    FUseBox2: boolean;
+    FExitOK: boolean;
+    FReminder: TReminderDialog;
+    CurReminderList: TORStringList;
+    FClinMainBox: TfrmReportBox;
+    FOldClinMaintOnDestroy: TNotifyEvent;
+    FProcessingTemplate: boolean;
+    FSilent: boolean;
+  protected
+    procedure RemindersChanged(Sender: TObject);
+    procedure ClearControls(All: boolean = FALSE);
+    procedure BuildControls;
+    function GetBox(Other: boolean = FALSE): TScrollBox;
+    function KillAll: boolean;
+    procedure ResetProcessing(Wipe: string = ''); //AGP CHANGE 24.8;
+    procedure BoxUpdateDone;
+    procedure ControlsChanged(Sender: TObject);
+    procedure UMResyncRem(var Message: TMessage); message UM_RESYNCREM;
+    procedure UpdateText(Sender: TObject);
+    function GetCurReminderList: integer;
+    function NextReminder: string;
+    function BackReminder: string;
+    procedure UpdateButtons;
+    procedure PositionTrees(NodeID: string);
+    procedure ClinMaintDestroyed(Sender: TObject);
+    procedure ProcessTemplate(Template: TTemplate);
+  public
+    procedure ProcessReminder(ARemData: string; NodeID: string);
+    procedure SetFontSize;
+    property Silent: boolean read FSilent write FSilent;
+  end;
+
+procedure ViewReminderDialog(RemNode: TORTreeNode; InitDlg: boolean = TRUE);
+procedure ViewReminderDialogTemplate(TempNode: TORTreeNode; InitDlg: boolean = TRUE);
+procedure ViewRemDlgTemplateFromForm(OwningForm: TForm; Template: TTemplate;
+                                     InitDlg, IsTemplate: boolean);
+procedure HideReminderDialog;
+procedure UpdateReminderFinish;
+procedure KillReminderDialog(frm: TForm);
+procedure NotifyWhenProcessingReminderChanges(Proc: TNotifyEvent);
+procedure RemoveNotifyWhenProcessingReminderChanges(Proc: TNotifyEvent);
+function ReminderDialogActive: boolean;
+function CurrentReminderInDialog: TReminderDialog;
+
+var
+  frmRemDlg: TfrmRemDlg = nil;
+  RemDlgSpltr1: integer = 0;
+  RemDlgSpltr2: integer = 0;
+  RemDlgLeft: integer = 0;
+  RemDlgTop: integer = 0;
+  RemDlgWidth: integer = 0;
+  RemDlgHeight: integer = 0;
+
+const
+  RemDlgName = 'frmRemDlg';
+  RemDlgSplitters = 'frmRemDlgSplitters';
+
+implementation
+
+uses fNotes, uPCE, uOrders, rOrders, uCore, rMisc, rReminders,
+  fReminderTree, uVitals, rVitals, RichEdit, fConsults, fTemplateDialog,
+  uTemplateFields, fRemVisitInfo, rCore, uVA508CPRSCompatibility,
+  VA508AccessibilityRouter, VAUtils;
+
+{$R *.DFM}
+
+var
+  PositionList: TORNotifyList = nil;
+  ClinRemTextLocation: integer = -77;
+  ClinRemTextStr: string = '';
+
+const
+  REQ_TXT = 'The following required items must be entered:' + CRLF;
+  REQ_HDR = 'Required Items Missing';
+
+function ClinRemText: string;
+begin
+  if(ClinRemTextLocation <> Encounter.Location) then
+  begin
+    ClinRemTextLocation := Encounter.Location;
+    ClinRemTextStr := GetProgressNoteHeader;
+  end;
+  Result := ClinRemTextStr;
+end;
+
+
+procedure NotifyWhenProcessingReminderChanges(Proc: TNotifyEvent);
+begin
+  if(not assigned(PositionList)) then
+    PositionList := TORNotifyList.Create;
+  PositionList.Add(Proc);
+end;
+
+procedure RemoveNotifyWhenProcessingReminderChanges(Proc: TNotifyEvent);
+begin
+  if(assigned(PositionList)) then
+    PositionList.Remove(Proc);
+end;
+
+function ReminderDialogActive: boolean;
+begin
+  Result := assigned(frmRemDlg);
+end;
+
+function CurrentReminderInDialog: TReminderDialog;
+begin
+  Result := nil;
+  if(assigned(frmRemDlg)) then
+    Result := frmRemDlg.FReminder;
+end;
+
+var
+  uRemDlgStarting: boolean = False;
+
+procedure ViewRemDlgFromForm(OwningForm: TForm; RemNode: TORTreeNode; Template: TTemplate;
+                             InitDlg, IsTemplate: boolean);
+var
+  Update: boolean;
+  Err: string;
+
+begin
+  if uRemDlgStarting then exit;  // CQ#16219 - double click started reminder creation twice
+  uRemDlgStarting := True;
+  try
+    Err := '';
+    if assigned(frmRemDlg) then
+    begin
+      if IsTemplate then
+        Err := 'Can not process template while another reminder dialog is being processed.'
+      else
+      if frmRemDlg.FProcessingTemplate then
+        Err := 'Can not process reminder while a reminder dialog template is being processed.'
+    end;
+    Update := FALSE;
+    if Err = '' then
+    begin
+      if(RemForm.Form <> OwningForm) then
+      begin
+        if(assigned(RemForm.Form)) then
+          Err := 'Reminders currently begin processed on another tab.'
+        else
+        begin
+          if(OwningForm = frmNotes) then
+            frmNotes.AssignRemForm
+          else
+          if(OwningForm = frmConsults) then
+            frmConsults.AssignRemForm
+          else
+            Err := 'Can not process reminder dialogs on this tab.';
+          Update := TRUE;
+        end;
+      end;
+    end;
+    if Err <> '' then
+    begin
+      InfoBox(Err, 'Reminders in Process', MB_OK or MB_ICONERROR);
+      exit;
+    end;
+
+    if(InitDlg and (not assigned(frmRemDlg))) then
+    begin
+    //(AGP add) Check for a bad encounter date
+      if RemForm.PCEObj.DateTime < 0 then
+        begin
+          InfoBox('The parent note has an invalid encounter date. Please contact IRM support for assistance.','Warning',MB_OK);
+          exit;
+        end;
+      frmRemDlg := TfrmRemDlg.Create(Application);
+      frmRemDlg.SetFontSize;
+      Update := TRUE;
+    end;
+    if(assigned(frmRemDlg)) then
+    begin
+      if Update then
+      begin
+        frmRemDlg.FSCRelated  := RemForm.PCEObj.SCRelated;
+        frmRemDlg.FAORelated  := RemForm.PCEObj.AORelated;
+        frmRemDlg.FIRRelated  := RemForm.PCEObj.IRRelated;
+        frmRemDlg.FECRelated  := RemForm.PCEObj.ECRelated;
+        frmRemDlg.FMSTRelated := RemForm.PCEObj.MSTRelated;
+        frmRemDlg.FHNCRelated := RemForm.PCEObj.HNCRelated;
+        frmRemDlg.FCVRelated  := RemForm.PCEObj.CVRelated;
+        frmRemDlg.FSHDRelated := RemForm.PCEObj.SHADRelated;
+      end;
+      UpdateReminderFinish;
+      if IsTemplate then
+        frmRemDlg.ProcessTemplate(Template)
+      else if assigned(RemNode) then
+        frmRemDlg.ProcessReminder(RemNode.StringData, RemNode.TreeView.GetNodeID(RemNode, 1, IncludeParentID));
+    end;
+  finally
+    uRemDlgStarting := False;
+  end;
+end;
+
+procedure ViewRemDlg(RemNode: TORTreeNode; InitDlg, IsTemplate: boolean);
+var
+  own: TComponent;
+
+begin
+  if assigned(RemNode) then
+  begin
+    own := RemNode.TreeView.Owner.Owner; // Owner is the Drawers, Owner.Owner is the Tab
+    if(not (own is TForm)) then
+      InfoBox('ViewReminderDialog called from an unsupported location.',
+              'Reminders in Process', MB_OK or MB_ICONERROR)
+    else
+      ViewRemDlgFromForm(TForm(own), RemNode, TTemplate(RemNode.Data), InitDlg, IsTemplate);
+  end;
+end;
+
+procedure ViewReminderDialog(RemNode: TORTreeNode; InitDlg: boolean = TRUE);
+begin
+  if(assigned(RemNode)) then
+    ViewRemDlg(RemNode, InitDlg, FALSE)
+  else
+    HideReminderDialog;
+end;
+
+procedure ViewReminderDialogTemplate(TempNode: TORTreeNode; InitDlg: boolean = TRUE);
+begin
+  if(assigned(TempNode) and (assigned(TempNode.Data)) and
+    (TTemplate(TempNode.Data).IsReminderDialog)) then
+    ViewRemDlg(TempNode, InitDlg, TRUE)
+  else
+    KillReminderDialog(nil);
+end;
+
+procedure ViewRemDlgTemplateFromForm(OwningForm: TForm; Template: TTemplate; InitDlg, IsTemplate: boolean);
+begin
+  if(assigned(OwningForm) and assigned(Template) and Template.IsReminderDialog) then
+    ViewRemDlgFromForm(OwningForm, nil, Template, InitDlg, IsTemplate)
+  else
+    KillReminderDialog(nil);
+end;
+
+procedure HideReminderDialog;
+begin
+  if(assigned(frmRemDlg)) then
+    frmRemDlg.Hide;
+end;
+
+procedure UpdateReminderFinish;
+begin
+  if(assigned(frmRemDlg)) and (assigned(RemForm.Form)) then
+  begin
+    frmRemDlg.btnFinish.Enabled := RemForm.CanFinishProc;
+    frmRemDlg.UpdateButtons;
+  end;
+end;
+
+procedure KillReminderDialog(frm: TForm);
+begin
+  if(assigned(frm) and (assigned(RemForm.Form)) and
+    (frm <> RemForm.Form)) then exit;
+  if(assigned(frmRemDlg)) then
+  begin
+    frmRemDlg.FExitOK := TRUE;
+    frmRemDlg.ResetProcessing;
+  end;
+  KillObj(@frmRemDlg);
+end;
+
+{ TfrmRemDlg }
+
+procedure TfrmRemDlg.ProcessReminder(ARemData: string; NodeID: string);
+var
+  Rem: TReminder;
+  TmpList: TStringList;
+  Msg: string;
+  Flds, Abort: boolean;
+
+begin
+  FProcessingTemplate := FALSE;
+  Rem := GetReminder(ARemData);
+  if(FReminder <> Rem) then
+  begin
+    if(assigned(FReminder)) then
+    begin
+      Abort := FALSE;
+      Flds := FALSE;
+      TmpList := TStringList.Create;
+      try
+        FReminder.FinishProblems(TmpList, Flds);
+        if(TmpList.Count > 0) or Flds then
+        begin
+          TmpList.Insert(0, '   Reminder: ' + FReminder.PrintName);
+          if Flds then
+            TmpList.Add('      ' + MissingFieldsTxt);
+          Msg := REQ_TXT + TmpList.Text + CRLF +
+                 ' Ignore required items and continue processing?';
+          Abort := (InfoBox(Msg, REQ_HDR, MB_YESNO or MB_DEFBUTTON2) = IDNO);
+        end;
+      finally
+        TmpList.Free;
+      end;
+      if(Abort) then exit;
+    end;
+    ClearControls(TRUE);
+    FReminder := Rem;
+    Rem.PCEDataObj := RemForm.PCEObj;
+    BuildControls;
+    UpdateText(nil);
+  end;
+  PositionTrees(NodeID);
+  UpdateButtons;
+  Show;
+end;
+
+procedure TfrmRemDlg.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  Action := caFree;
+end;
+
+procedure TfrmRemDlg.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+begin
+  if(not FExitOK) then
+    CanClose := KillAll;
+end;
+
+procedure TfrmRemDlg.FormCreate(Sender: TObject);
+begin
+ // reData.Color := ReadOnlyColor;
+//  reText.Color := ReadOnlyColor;
+  FSCCond := EligbleConditions;
+ (* FSCRelated  := SCC_NA;
+  FAORelated  := SCC_NA;
+  FIRRelated  := SCC_NA;       AGP Change 25.2
+  FECRelated  := SCC_NA;
+  FMSTRelated := SCC_NA;
+  FHNCRelated := SCC_NA;
+  FCVRelated  := SCC_NA;
+  with FSCCond do
+    FSCPrompt := (SCAllow or AOAllow or IRAllow or ECAllow or MSTAllow or HNCAllow or CVAllow); *)
+  NotifyWhenRemindersChange(RemindersChanged);
+  RemForm.Drawers.NotifyWhenRemTreeChanges(RemindersChanged);
+  KillReminderDialogProc := KillReminderDialog;
+end;
+
+procedure TfrmRemDlg.FormDestroy(Sender: TObject);
+begin
+  if FProcessingTemplate then
+    KillObj(@FReminder);
+  KillObj(@FClinMainBox);
+  //Save the Position and Size of the Reminder Dialog
+  RemDlgLeft := Self.Left;
+  RemDlgTop := Self.Top;
+  RemDlgWidth := Self.Width;
+  RemDlgHeight := Self.Height;
+  RemDlgSpltr1 := pnlBottom.Height;
+  RemDlgSpltr2 := reData.Height;
+//  SaveDialogSplitterPos(Name + 'Splitters', pnlBottom.Height, reData.Height);
+  RemForm.Drawers.RemoveNotifyWhenRemTreeChanges(RemindersChanged);
+  RemoveNotifyRemindersChange(RemindersChanged);
+  KillReminderDialogProc := nil;
+  ClearControls(TRUE);
+  frmRemDlg := nil;
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.EnableActions;
+  RemForm.Form := nil;
+end;
+
+procedure TfrmRemDlg.ClearControls(All: boolean = FALSE);
+
+  procedure WipeOutControls(const Ctrl: TWinControl);
+  var
+    i: integer;
+
+  begin
+    for i := Ctrl.ControlCount-1 downto 0 do
+    begin
+      if(Ctrl.Controls[i].Owner = Self) then
+      begin
+        if(Ctrl.Controls[i] is TWinControl) then
+          WipeOutControls(TWinControl(Ctrl.Controls[i]));
+        Ctrl.Controls[i].Free
+      end;
+    end;
+  end;
+
+begin
+  if(All) then
+  begin
+    WipeOutControls(sb1);
+    WipeOutControls(sb2);
+  end
+  else
+    WipeOutControls(GetBox);
+end;
+
+procedure TfrmRemDlg.BuildControls;
+var
+  i, CtrlIdx, Y, ParentWidth: integer;
+  AutoCtrl, Active, Ctrl: TWinControl;
+  LastCB, LastObjCnt: integer;
+  Box: TScrollBox;
+  txt: string;
+
+  function IsOnBox(Component: TComponent): boolean;
+  var
+    Prnt: TWinControl;
+  begin
+    Result := FALSE;
+    if(Component is TWinControl) then
+    begin
+      Prnt := TWinControl(Component).Parent;
+      while(assigned(Prnt)) and (not Result) do
+      begin
+        Result := (Prnt = Box);
+        Prnt := Prnt.Parent;
+      end;
+    end;
+  end;
+
+  procedure SetActiveVars(ActCtrl: TWinControl);
+  var
+    i: integer;
+    
+  begin
+    LastObjCnt := 0;
+    LastCB := 0;
+    Active := ActCtrl;
+    while(assigned(Active) and (Active.Owner <> Self)) do
+    begin
+      if(assigned(Active.Owner) and (Active.Owner is TWinControl)) then
+        Active := TWinControl(Active.Owner)
+      else
+        Active := nil;
+    end;
+    Ctrl := Active;
+    if(assigned(Ctrl) and IsOnBox(Ctrl)) then
+    begin
+      if(Active is TORCheckBox) then
+        LastCB := Active.Tag;
+      if(LastCB = 0) then
+      begin
+        CtrlIdx := -1;
+        for i := 0 to ComponentCount-1 do
+        begin
+          if(IsOnBox(Components[i])) then
+          begin
+            Ctrl := TWinControl(Components[i]);
+            if(Ctrl is TORCheckBox) and (Ctrl.Tag <> 0) then
+              CtrlIdx := i;
+            if(Ctrl = Active) and (CtrlIdx >= 0) then
+            begin
+              LastCB := Components[CtrlIdx].Tag;
+              LastObjCnt := (i - CtrlIdx);
+              break;
+            end;
+          end;
+        end;
+      end;
+    end;
+  end;
+
+begin
+  if(assigned(FReminder)) then
+  begin
+    Box := GetBox(TRUE);
+    if Box.ControlCount > 0 then ClearControls; //AGP Change 26.1 this change should
+                                                //resolve the problem with Duplicate CheckBoxes
+                                                //appearing on some reminder dialogs CQ #2843
+    Y := Box.VertScrollBar.Position;
+    GetBox.VertScrollBar.Position := 0;
+    if FProcessingTemplate then
+      txt := 'Reminder Dialog Template'
+    else
+      txt := 'Reminder Resolution';
+      Caption := txt + ': ' + FReminder.PrintName;
+    FReminder.OnNeedRedraw := nil;
+    ParentWidth := Box.Width - ScrollBarWidth - 6;
+    SetActiveVars(ActiveControl);
+    AutoCtrl := FReminder.BuildControls(ParentWidth, GetBox, Self);
+    GetBox.VertScrollBar.Position := Y;
+    BoxUpdateDone;
+    if(LastCB <> 0) then
+    begin
+      Box := GetBox(TRUE);
+      if(assigned(AutoCtrl)) then
+      begin
+        AutoCtrl.SetFocus;
+        if(AutoCtrl is TORComboBox) then
+          TORComboBox(AutoCtrl).DroppedDown := TRUE;
+      end
+      else
+      for i := 0 to ComponentCount-1 do
+      begin
+        if(IsOnBox(Components[i])) then
+        begin
+          Ctrl := TWinControl(Components[i]);
+          if(Ctrl is TORCheckBox) and (Ctrl.Tag = LastCB) then
+          begin
+            if((i + LastObjCnt) < ComponentCount) and
+              (Components[i + LastObjCnt] is TWinControl) then
+              TWinControl(Components[i + LastObjCnt]).SetFocus;
+            break;
+          end;
+        end;
+      end;
+    end;
+
+    ClearControls;
+
+    FReminder.OnNeedRedraw := ControlsChanged;
+    FReminder.OnTextChanged := UpdateText;
+  end;
+end;
+
+function TfrmRemDlg.GetBox(Other: boolean = FALSE): TScrollBox;
+begin
+  if(FUseBox2 xor Other) then
+    Result := sb2
+  else
+    Result := sb1;
+end;
+
+procedure TfrmRemDlg.BoxUpdateDone;
+begin
+  sb2.Visible := FUseBox2;
+  sb1.Visible := not FUseBox2;
+  FUseBox2 := not FUseBox2;
+  ClearControls;
+  if ScreenReaderSystemActive then
+    amgrMain.RefreshComponents;
+  Application.ProcessMessages; // allows new ScrollBox to repaint
+end;
+
+procedure TfrmRemDlg.ControlsChanged(Sender: TObject);
+begin
+  FLastWidth := GetBox(TRUE).ClientWidth;
+{ This routine is fired as a result of clicking a checkbox.  If we destroy
+  the checkbox here we get access violations because the checkbox code is
+  still processing the click event after calling this routine.  By posting
+  a message we can guarantee that the checkbox is no longer processing the
+  click event when the message is handled, preventing access violations. }
+  PostMessage(Handle, UM_RESYNCREM, 0 ,0);
+end;
+
+procedure TfrmRemDlg.UMResyncRem(var Message: TMessage);
+begin
+  BuildControls;
+end;
+
+procedure TfrmRemDlg.sbResize(Sender: TObject);
+begin
+{ If you remove this logic you will get an infinite loop in some cases }
+  if(FLastWidth <> GetBox(TRUE).ClientWidth) then
+    ControlsChanged(Sender);
+end;
+
+procedure TfrmRemDlg.UpdateText(Sender: TObject);
+const
+  BadType = TPCEDataCat(-1);
+
+var
+  TopIdx, i, LastPos, CurPos, TxtStart: integer;
+  Cat, LastCat: TPCEDataCat;
+  Rem: TReminderDialog;
+  TmpData: TORStringList;
+  Bold: boolean;
+  tmp: string;
+
+begin
+  RedrawSuspend(reText.Handle);
+  try
+    TopIdx := SendMessage(reText.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+    reText.Clear;
+    LastPos := reText.SelStart;
+    reText.SelAttributes.Style := reText.SelAttributes.Style - [fsBold];
+    i := 0;
+    repeat
+      if FProcessingTemplate then
+        Rem := FReminder
+      else
+        Rem := TReminder(RemindersInProcess.Objects[i]);
+      Rem.AddText(reText.Lines);
+      reText.SelStart := MaxInt;
+      CurPos := reText.SelStart;
+      if(Rem = FReminder) then
+      begin
+        reText.SelStart := LastPos;
+        reText.SelLength := CurPos - LastPos;
+        reText.SelAttributes.Style := reText.SelAttributes.Style + [fsBold];
+        reText.SelLength := 0;
+        reText.SelStart := CurPos;
+        reText.SelAttributes.Style := reText.SelAttributes.Style - [fsBold];
+      end;
+      LastPos := CurPos;
+      inc(i);
+    until(FProcessingTemplate or (i >= RemindersInProcess.Count));
+    if((not FProcessingTemplate) and (reText.Lines.Count > 0)) then
+    begin
+      reText.Lines.Insert(0, ClinRemText);
+      reText.SelStart := 0;
+      reText.SelLength := length(ClinRemText);
+      reText.SelAttributes.Style := reText.SelAttributes.Style - [fsBold];
+      reText.SelLength := 0;
+      reText.SelStart := MaxInt;
+    end;
+    SendMessage(reText.Handle, EM_LINESCROLL, 0, TopIdx);
+  finally
+    RedrawActivate(reText.Handle);
+  end;
+
+  TmpData := TORStringList.Create;
+  try
+    reData.Clear;
+    LastCat := BadType;
+    tmp := RemForm.PCEObj.StrVisitType(FSCRelated, FAORelated, FIRRelated,
+                          FECRelated, FMSTRelated, FHNCRelated, FCVRelated,FSHDRelated);
+    if FProcessingTemplate then
+      i := GetReminderData(FReminder, TmpData)
+    else
+      i := GetReminderData(TmpData);
+    if(tmp = '') and (i = 0) then
+      reData.Lines.insert(0,TX_NOPCE);
+    TmpData.Sort;
+    RedrawSuspend(reData.Handle);
+    try
+      TopIdx := SendMessage(reData.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+      reData.SelAttributes.Style := reData.SelAttributes.Style - [fsBold];
+      if tmp <> '' then
+        reData.SelText := tmp + CRLF;
+      i := 0;
+      while i < TmpData.Count do
+      begin
+        tmp := TmpData[i];
+        TxtStart := 2;
+        Bold := FALSE;
+        Cat := TPCEDataCat(ord(tmp[1]) - ord('A'));
+        if(LastCat <> Cat) or (Cat = pdcVital) then
+        begin
+          if(Cat = pdcVital) then
+            inc(TxtStart);
+          if(LastCat <> BadType) then
+          begin
+            reData.SelText := CRLF;
+            reData.SelStart := MaxInt;
+          end;
+          reData.SelText := PCEDataCatText[Cat];
+          reData.SelStart := MaxInt;
+          LastCat := Cat;
+        end
+        else
+        begin
+          reData.SelText := ', ';
+          reData.SelStart := MaxInt;
+        end;
+        repeat
+          if(TRemData(TmpData.Objects[i]).Parent.Reminder = FReminder) then
+            Bold := TRUE;
+          inc(i);
+        until (i >= TmpData.Count) or (TmpData[i] <> tmp);
+        if(Bold) then
+          reData.SelAttributes.Style := reData.SelAttributes.Style + [fsBold];
+        reData.SelText := copy(tmp, TxtStart, MaxInt);
+        reData.SelStart := MaxInt;
+        if(Bold) then
+          reData.SelAttributes.Style := reData.SelAttributes.Style - [fsBold];
+      end;
+      SendMessage(reData.Handle, EM_LINESCROLL, 0, TopIdx);
+    finally
+      RedrawActivate(reData.Handle);
+    end;
+  finally
+    TmpData.Free;
+  end;
+end;
+
+procedure TfrmRemDlg.btnClearClick(Sender: TObject);
+var
+  Tmp, TmpNode: string;
+  i: integer;
+  OK: boolean;
+
+begin
+  if(assigned(FReminder)) then
+  begin
+    try
+    self.btnClear.Enabled := false;
+    i := RemindersInProcess.IndexOf(FReminder.IEN);
+    if(i >= 0) then
+    begin
+      if(FReminder.Processing) then
+        OK := (InfoBox('Clear all reminder resolutions for ' + FReminder.PrintName,
+               'Clear Reminder Processing', MB_YESNO or MB_DEFBUTTON2) = ID_YES)
+      else
+        OK := TRUE;
+      if(OK) then
+      begin
+        FReminder.ClearMHTest(FReminder.IEN);
+        if (FReminder.MHTestArray <> nil) and (FReminder.MHTestArray.Count = 0) then FReminder.MHTestArray.Free;
+        RemindersInProcess.Delete(i);
+        Tmp := (FReminder as TReminder).RemData; // clear should never be active if template
+        TmpNode := (FReminder as TReminder).CurrentNodeID;
+        KillObj(@FReminder);
+        ProcessReminder(Tmp, TmpNode);
+      end;
+    end;
+    finally
+      self.btnClear.Enabled := true;
+    end;
+  end;
+end;
+
+procedure TfrmRemDlg.btnCancelClick(Sender: TObject);
+begin
+  try
+    self.btnCancel.Enabled := false;
+  if(KillAll) then
+  begin
+    FExitOK := TRUE;
+    frmRemDlg.Release;
+    frmRemDlg := nil;
+  end;
+  finally
+    self.btnCancel.Enabled := true;
+  end;
+end;
+
+function TfrmRemDlg.KillAll: boolean;
+var
+  i, cnt: integer;
+  msg, RemWipe: string;
+  ClearMH: boolean;
+
+begin
+ //AGP 25.11 Added RemWipe section to cancel button to
+ //flag the patient specific dialog to be destroy if not in process.
+ RemWipe := '';
+ ClearMH := false;
+  if FProcessingTemplate or FSilent then
+    begin
+      Result := TRUE;
+      if FReminder.RemWipe = 1 then RemWipe := Piece(FReminder.DlgData,U,1);
+    end
+  else
+  begin
+    msg := '';
+    cnt := 0;
+    for i := 0 to RemindersInProcess.Count-1 do
+    begin
+      //if Piece(TReminder(RemindersInProcess.Objects[i]).RemData,U,11)='1' then
+      if TReminderDialog(TReminder(RemindersInProcess.Objects[i])).RemWipe = 1 then
+          begin
+             if RemWipe ='' then RemWipe := TReminder(RemindersInProcess.Objects[i]).IEN
+             else RemWipe := RemWipe + U + TReminder(RemindersInProcess.Objects[i]).IEN
+          end;
+      if(TReminder(RemindersInProcess.Objects[i]).Processing) then
+      begin
+        msg := msg + '  ' + TReminder(RemindersInProcess.Objects[i]).PrintName + CRLF;
+        inc(cnt);
+      end;
+    end;
+    if(msg <> '') then
+    begin
+      if(cnt > 1) then
+        msg := 'The Following Reminders are being processed:' + CRLF + CRLF + msg
+      else
+        msg := 'The Following Reminder is being processed: ' + CRLF + CRLF + msg;
+      msg := msg + CRLF + 'Canceling will cause all processing information to be lost.' + CRLF +
+                          'Do you still want to cancel out of reminder processing?';
+      Result := (InfoBox(msg, 'Cancel Reminder Processing', MB_YESNO or MB_DEFBUTTON2) = ID_YES);
+    end
+    else
+      Result := TRUE;
+  end;
+  if(Result) then
+    begin
+      for i := 0 to RemindersInProcess.Count - 1 do
+        begin
+          if (TReminderDialog(TReminder(RemindersInProcess.Objects[i])).MHTestArray <> nil) and
+             (TReminderDialog(TReminder(RemindersInProcess.Objects[i])).MHTestArray.Count > 0) then
+             begin
+               if ClearMH = false then
+                 begin
+                   RemoveMHTest('');
+                   ClearMH := true;
+                 end;
+                TReminderDialog(TReminder(RemindersInProcess.Objects[i])).MHTestArray.Free;
+             end;
+        end;
+      (* if (FReminder.MHTestArray <> nil) and (FReminder.MHTestArray.Count > 0) then
+         begin
+           RemoveMHTest('');
+           FReminder.MHTestArray.Free;
+         end; *)
+    ResetProcessing(RemWipe);
+  end;
+end;
+
+function TfrmRemDlg.GetCurReminderList: integer;
+var
+  Sel, Node: TORTreeNode;
+  Data: string;
+  NodeCheck, Cur: boolean;
+
+begin
+  Result := -1;
+  CurReminderList := TORStringList.Create;
+  Sel := TORTreeNode(RemForm.Drawers.tvReminders.Selected);
+  NodeCheck := (assigned(Sel) and assigned(FReminder) and
+               (Piece(Sel.StringData,U,1) = RemCode +FReminder.IEN));
+  Node := TORTreeNode(RemForm.Drawers.tvReminders.Items.GetFirstNode);
+  while assigned(Node) do
+  begin
+    Data := TORTreeNode(Node).StringData;
+    if(copy(Data, 1, 1) = RemCode) then
+    begin
+      delete(Data,1,1);
+      Data := Node.TreeView.GetNodeID(Node, 1, IncludeParentID) + U + Data;
+      if(NodeCheck) then
+        Cur := (Node = Sel)
+      else
+        Cur := (assigned(FReminder)) and (FReminder.IEN = Piece(Data,U,1));
+      if(Cur) then
+        Result := CurReminderList.Add(Data)
+      else
+      if(Piece(Data, U , 8) = '1') then
+        CurReminderList.Add(Data);
+    end;
+    Node := TORTreeNode(Node.GetNextVisible);
+  end;
+end;
+
+function TfrmRemDlg.NextReminder: string;
+var
+  idx: integer;
+
+begin
+  Result := '';
+  idx := GetCurReminderList;
+  try
+    inc(idx);
+    if(idx < CurReminderList.Count) then
+      Result := CurReminderList[idx];
+  finally
+    KillObj(@CurReminderList);
+  end;
+end;
+
+function TfrmRemDlg.BackReminder: string;
+var
+  idx: integer;
+
+begin
+  Result := '';
+  idx := GetCurReminderList;
+  try
+    dec(idx);
+    if(idx >= 0) then
+      Result := CurReminderList[idx];
+  finally
+    KillObj(@CurReminderList);
+  end;
+end;
+
+procedure TfrmRemDlg.ProcessReminderFromNodeStr(value: string);
+var
+  NodeID: string;
+  Data: string;
+  i: integer;
+
+begin
+  if(Value = '') then
+  begin
+    UpdateButtons;
+    exit;
+  end;
+  Data := Value;
+  i := pos(U, Data);
+  if(i = 0) then i := length(Data);
+  NodeID :=copy(Data,1,i-1);
+  delete(Data,1,i);
+  Data := RemCode + Data;
+  ProcessReminder(Data, NodeID);
+end;
+
+procedure TfrmRemDlg.btnNextClick(Sender: TObject);
+begin
+  ProcessReminderFromNodeStr(NextReminder);
+end;
+
+procedure TfrmRemDlg.btnBackClick(Sender: TObject);
+begin
+  ProcessReminderFromNodeStr(BackReminder);
+end;
+
+procedure TfrmRemDlg.UpdateButtons;
+begin
+  if(assigned(frmRemDlg)) and (not FProcessingTemplate) then
+  begin
+    btnBack.Enabled := btnFinish.Enabled and (BackReminder <> '');
+    btnNext.Enabled := btnFinish.Enabled and (NextReminder <> '');
+    btnClinMaint.Enabled := (not assigned(FClinMainBox));
+  end;
+end;
+
+procedure TfrmRemDlg.PositionTrees(NodeID: string);
+begin
+  if(assigned(PositionList)) and (not FProcessingTemplate) then
+  begin
+    if(assigned(FReminder)) then
+      (FReminder as TReminder).CurrentNodeID := NodeID;
+    PositionList.Notify(FReminder);
+  end;
+end;
+
+procedure TfrmRemDlg.btnFinishClick(Sender: TObject);
+var
+  i, cnt, lcnt,OldRemCount, OldCount, T: integer;
+  CurDate, CurLoc: string;
+  LastDate, LastLoc: string;
+  Rem: TReminderDialog;
+  Reminder: TReminder;
+ // Prompt: TRemPrompt;
+  RData: TRemData;
+  TmpData: TORStringList;
+  OrderList: TStringList;
+  TmpText: TStringList;
+  TmpList: TStringList;
+  VitalList: TStringList;
+  MHList: TStringList;
+  WHList: TStringList;
+  MSTList: TStringList;
+  HistData, PCEObj: TPCEData;
+  Cat: TPCEDataCat;
+  VisitParent, Msg, tmp: string;
+  DelayEvent: TOrderDelayEvent;
+  Hist: boolean;
+  v: TVitalType;
+  UserStr: string;
+  BeforeLine, AfterTop: integer;
+  GAFScore: integer;
+  TestDate: TFMDateTime;
+  TestStaff: Int64;
+  DoOrders, Done, Kill, Flds: boolean;
+  TR: TEXTRANGE;
+  buf: array[0..3] of char;
+  AddLine: boolean;
+  Process, StoreVitals: boolean;
+  PCEType: TPCEType;
+  WHNode,WHPrint,WHResult,WHTmp, WHValue: String;
+  WHType: TStrings;
+  //Test: String;
+  MHLoc, WHCnt,x: Integer;
+  WHArray: TStringlist;
+  GecRemIen, GecRemStr, RemWipe: String;
+
+  procedure Add(PCEItemClass: TPCEItemClass);
+  var
+    itm: TPCEItem;
+    tmp: string;
+
+  begin
+    if(Cat in MSTDataTypes) then
+    begin
+      tmp := piece(TmpData[i],U,pnumMST);
+      if (tmp <> '') then
+      begin
+        MSTList.Add(tmp);
+        tmp := TmpData[i];
+        setpiece(tmp,U,pnumMST,'');
+        TmpData[i] := tmp;
+      end;
+    end;
+    itm := PCEItemClass.Create;
+    try
+      itm.SetFromString(copy(TmpData[i], 2, MaxInt));
+      TmpList.AddObject('',itm);
+      if Cat = pdcHF then itm.FGecRem := GecRemStr;
+      case Cat of
+        pdcDiag: PCEObj.SetDiagnoses(TmpList, FALSE);
+        pdcProc: PCEObj.SetProcedures(TmpList, FALSE);
+        pdcImm:  PCEObj.SetImmunizations(TmpList, FALSE);
+        pdcSkin: PCEObj.SetSkinTests(TmpList, FALSE);
+        pdcPED:  PCEObj.SetPatientEds(TmpList, FALSE);
+        pdcHF:   PCEObj.SetHealthFactors(TmpList, FALSE);
+        pdcExam: PCEObj.SetExams(TmpList, FALSE);
+      end;
+      itm.Free;
+      TmpList.Clear;
+    except
+      itm.free;
+    end;
+  end;
+
+  procedure SaveMSTData(MSTVal: string);
+  var
+    vdate, s1, s2, prov, FType, FIEN: string;
+
+  begin
+    if MSTVal <> '' then
+    begin
+      s1    := piece(MSTVal, ';', 1);
+      vdate := piece(MSTVal, ';', 2);
+      prov  := piece(MSTVal, ';', 3);
+      FIEN  := piece(MSTVal, ';', 4);
+      if FIEN <> '' then
+      begin
+        s2 := s1;
+        s1 := '';
+        FType := RemDataCodes[dtExam];
+      end
+      else
+      begin
+        s2 := '';
+        FType := RemDataCodes[dtHealthFactor];
+      end;
+      SaveMSTDataFromReminder(vdate, s1, Prov, FType, FIEN, s2);
+    end;
+  end;
+
+begin
+  Kill := FALSE;
+  GecRemIen := '0';
+  WHList := nil;
+  Rem := nil;
+  RemWipe := '';   //AGP CHANGE 24.8
+  try
+    self.btnFinish.Enabled := false;
+    OldRemCount := ProcessedReminders.Count;
+    if not FProcessingTemplate then
+      ProcessedReminders.Notifier.BeginUpdate;
+    try
+      TmpList := TStringList.Create;
+      try
+        i := 0;
+        repeat
+        //AGP Added RemWipe section this section will determine if the Dialog is a patient specific
+          if FProcessingTemplate or (i < RemindersInProcess.Count) then
+          begin
+            if FProcessingTemplate then
+              begin
+                 Rem := FReminder;
+                 if Rem.RemWipe = 1 then
+                     RemWipe := Piece(Rem.DlgData,U,1);
+              end
+            else
+              begin
+                Rem := TReminder(RemindersInProcess.Objects[i]);
+                if TReminderDialog(TReminder(RemindersInProcess.Objects[i])).RemWipe = 1 then
+                   begin
+                     if RemWipe ='' then RemWipe := TReminder(RemindersInProcess.Objects[i]).IEN
+                     else RemWipe := RemWipe + U + TReminder(RemindersInProcess.Objects[i]).IEN;
+                   end;
+                end;
+
+            Flds := FALSE;
+            OldCount := TmpList.Count;
+            Rem.FinishProblems(TmpList, Flds);
+            if(OldCount <> TmpList.Count) or Flds then
+            begin
+              TmpList.Insert(OldCount, '');
+              if not FProcessingTemplate then
+                TmpList.Insert(OldCount+1, '   Reminder: ' + Rem.PrintName);
+              if Flds then
+                TmpList.Add('      ' + MissingFieldsTxt);
+            end;
+            inc(i);
+          end;
+        until(FProcessingTemplate or (i >= RemindersInProcess.Count));
+
+        if FProcessingTemplate then
+          PCEType := ptTemplate
+        else
+          PCEType := ptReminder;
+
+        Process := TRUE;
+        if(TmpList.Count > 0) then
+        begin
+          Msg := REQ_TXT + TmpList.Text;
+          InfoBox(Msg, REQ_HDR, MB_OK);
+          Process := FALSE;
+        end
+        else
+        begin
+          TmpText := TStringList.Create;
+          try
+            if (not FProcessingTemplate) and (not InsertRemTextAtCursor) then
+              RemForm.NewNoteRE.SelStart := MaxInt; // Move to bottom of note
+            AddLine := FALSE;
+            BeforeLine := SendMessage(RemForm.NewNoteRE.Handle, EM_EXLINEFROMCHAR, 0, RemForm.NewNoteRE.SelStart);
+            if (SendMessage(RemForm.NewNoteRE.Handle, EM_LINEINDEX, BeforeLine, 0) <> RemForm.NewNoteRE.SelStart) then
+            begin
+              RemForm.NewNoteRE.SelStart := SendMessage(RemForm.NewNoteRE.Handle, EM_LINEINDEX, BeforeLine+1, 0);
+              inc(BeforeLine);
+            end;
+            if(RemForm.NewNoteRE.SelStart > 0) then
+            begin
+              if(RemForm.NewNoteRE.SelStart = 1) then
+                AddLine := TRUE
+              else
+              begin
+                TR.chrg.cpMin := RemForm.NewNoteRE.SelStart-2;
+                TR.chrg.cpMax := TR.chrg.cpMin+2;
+                TR.lpstrText := @buf;
+                SendMessage(RemForm.NewNoteRE.Handle, EM_GETTEXTRANGE, 0, LPARAM(@TR));
+                if(buf[0] <> #13) or (buf[1] <> #10) then
+                  AddLine := TRUE;
+              end;
+            end;
+            if FProcessingTemplate then
+              FReminder.AddText(TmpText)
+            else
+            begin
+              for i := 0 to RemindersInProcess.Count-1 do
+                TReminder(RemindersInProcess.Objects[i]).AddText(TmpText);
+            end;
+            if(TmpText.Count > 0) then
+            begin
+              if not FProcessingTemplate then
+              begin
+                tmp := ClinRemText;
+                if(tmp <> '') then
+                begin
+                  i := RemForm.NewNoteRE.Lines.IndexOf(tmp);
+                  if(i < 0) or (i > BeforeLine) then
+                  begin
+                    TmpText.Insert(0, tmp);
+                    if(RemForm.NewNoteRE.SelStart > 0) then
+                      TmpText.Insert(0, '');
+                    if(BeforeLine < RemForm.NewNoteRE.Lines.Count) then
+                      TmpText.Add('');
+                  end;
+                end;
+              end;
+              if AddLine then
+                TmpText.Insert(0, '');
+              CheckBoilerplate4Fields(TmpText, 'Unresolved template fields from processed Reminder Dialog(s)');
+              if TmpText.Count = 0 then
+                Process := FALSE
+              else
+              begin
+                if RemForm.PCEObj.NeedProviderInfo and MissingProviderInfo(RemForm.PCEObj, PCEType) then
+                  Process := FALSE
+                else
+                begin
+                  RemForm.NewNoteRE.SelText := TmpText.Text;
+                  SpeakTextInserted;
+                end;
+              end;
+            end;
+            if(Process) then
+            begin
+              SendMessage(RemForm.NewNoteRE.Handle, EM_SCROLLCARET, 0, 0);
+              AfterTop := SendMessage(RemForm.NewNoteRE.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+              SendMessage(RemForm.NewNoteRE.Handle, EM_LINESCROLL, 0, -1 * (AfterTop - BeforeLine));
+            end;
+          finally
+            TmpText.Free;
+          end;
+        end;
+        if(Process) then
+        begin
+          PCEObj := RemForm.PCEObj;
+        (* AGP CHANGE 23.2 Remove this section base on the Clinical Workgroup decision
+          if FSCPrompt and (ndSC in PCEObj.NeededPCEData) then
+            btnVisitClick(nil);
+          PCEObj.SCRelated  := FSCRelated;
+          PCEObj.AORelated  := FAORelated;
+          PCEObj.IRRelated  := FIRRelated;
+          PCEObj.ECRelated  := FECRelated;
+          PCEObj.MSTRelated := FMSTRelated;
+          PCEObj.HNCRelated := FHNCRelated;
+          PCEObj.CVRelated  := FCVRelated; *)
+          if not FProcessingTemplate then
+          begin
+            for i := 0 to RemindersInProcess.Count-1 do
+            begin
+              Reminder := TReminder(RemindersInProcess.Objects[i]);
+              if(Reminder.Processing) and (ProcessedReminders.IndexOf(Reminder.RemData) < 0) then
+                ProcessedReminders.Add(Copy(Reminder.RemData,2,MaxInt));
+            end;
+          end;
+          OrderList := TStringList.Create;
+          try
+            MHList := TStringList.Create;
+            try
+              StoreVitals := TRUE;
+              VitalList := TStringList.Create;
+              try
+              WHList := TStringList.Create;
+              try
+                MSTList := TStringList.Create;
+                try
+                  TmpData := TORStringList.Create;
+                  try
+                    UserStr := '';
+                    LastDate := U;
+                    LastLoc := U;
+                    VisitParent := '';
+                    HistData := nil;
+                    for Hist := FALSE to TRUE do
+                    begin
+                      TmpData.Clear;
+                      if FProcessingTemplate then
+                        i := GetReminderData(FReminder, TmpData, TRUE, Hist)
+                      else
+                        GetReminderData(TmpData, TRUE, Hist);
+                      if(TmpData.Count > 0) then
+                      begin
+                        if Hist then
+                          TmpData.SortByPieces([pnumVisitDate, pnumVisitLoc])
+                        else
+                          TmpData.Sort;
+                        TmpData.RemoveDuplicates;
+                        TmpList.Clear;
+                        for i := 0 to TmpData.Count-1 do
+                        begin
+                          if(Hist) then
+                          begin
+                            CurDate := Piece(TmpData[i], U, pnumVisitDate);
+                            CurLoc := Piece(TmpData[i], U, pnumVisitLoc);
+                            if(CurDate = '') then CurDate := FloatToStr(Encounter.DateTime);
+                            if(LastDate <> CurDate) or (LastLoc <> CurLoc) then
+                            begin
+                              if(assigned(HistData)) then
+                              begin
+                                HistData.Save;
+                                HistData.Free;
+                              end;
+                              LastDate := CurDate;
+                              LastLoc := CurLoc;
+                              HistData := TPCEData.Create;
+                              HistData.DateTime := MakeFMDateTime(CurDate);
+                              HistData.VisitCategory := 'E';
+                              if(VisitParent = '') then
+                                VisitParent := GetVisitIEN(RemForm.NoteList.ItemIEN);
+                              HistData.Parent := VisitParent;
+                              if(StrToIntDef(CurLoc,0) = 0) then
+                                CurLoc := '0' + U + CurLoc;
+                              HistData.HistoricalLocation := CurLoc;
+                              PCEObj := HistData;
+                            end;
+                          end;
+                          Cat := TPCEDataCat(ord(TmpData[i][1]) - ord('A'));
+                          //check this for multiple process
+                          //RData := TRemData(TmpData.Objects[i]);
+                          if Cat = pdcHF then
+                            begin
+                              if not FProcessingTemplate and
+                               (GecRemIen <> TRemData(TmpData.Objects[i]).Parent.Reminder.IEN) then
+                                 begin
+                                   GecRemIen := TRemData(TmpData.Objects[i]).Parent.Reminder.IEN;
+                                   GecRemStr := CheckGECValue('R' + GecRemIen, PCEObj.NoteIEN);
+                                   //SetPiece(TmpData.Strings[i],U,11,GecRemStr);
+                                 end;
+                               if FProcessingTemplate then
+                                  begin
+                                    if GecRemIen <> Rem.IEN then
+                                      begin
+                                        GecRemIen := Rem.IEN;
+                                        GecRemStr := CheckGECValue(Rem.IEN, PCEObj.NoteIEN)
+                                      end;
+                                  end;
+                          end;
+                          case Cat of
+                    //        pdcVisit:
+                            pdcDiag:  Add(TPCEDiag);
+                            pdcProc:  Add(TPCEProc);
+                            pdcImm:   Add(TPCEImm);
+                            pdcSkin:  Add(TPCESkin);
+                            pdcPED:   Add(TPCEPat);
+                            pdcHF:    Add(TPCEHealth);
+                            pdcExam:  Add(TPCEExams);
+
+
+                            pdcVital:
+                              if (StoreVitals) then
+                              begin
+                                Tmp := Piece(TmpData[i], U, 2);
+                                for v := low(TValidVitalTypes) to high(TValidVitalTypes) do
+                                begin
+                                  if(Tmp = VitalCodes[v]) then
+                                  begin
+                                    if(UserStr = '') then
+                                      UserStr := GetVitalUser;
+
+                                    if(FVitalsDate = 0) then
+                                    begin
+                                      FVitalsDate := TRemData(TmpData.Objects[i]).Parent.VitalDateTime;
+                                      StoreVitals := ValidVitalsDate(FVitalsDate, TRUE, FALSE);  //AGP Change 26.1
+                                      if (not StoreVitals) then break;
+                                    end;
+
+                                    Tmp := GetVitalStr(v, Piece(TmpData[i], U, 3), '', UserStr, FloatToStr(FVitalsDate));
+                                    if(Tmp <> '') then
+                                      VitalList.Add(Tmp);
+                                    break;
+                                  end;
+                                end;
+                              end;
+
+                            pdcOrder: OrderList.Add(TmpData[i]);
+                            pdcMH:    MHList.Add(TmpData[i]);
+                            pdcWHR:
+                               begin
+                                 WHNode := TmpData.Strings[i];
+                                 SetPiece(WHNode,U,11,TRemData(TmpData.Objects[i]).Parent.WHResultChk);
+                                 WHList.Add(WHNode);
+                               end;
+
+                            pdcWH:
+                                begin
+                                   WHPrint := TRemData(TmpData.Objects[i]).Parent.WHPrintDevice;
+                                   WHNode := TmpData.Strings[i];
+                                   SetPiece(WHNode,U,11,TRemData(TmpData.Objects[i]).Parent.WHResultNot);
+                                   SetPiece(WHNode,U,12,Piece(WHPrint,U,1));
+                                   SetPiece(WHNode,U,13,TRemData(TmpData.Objects[i]).Parent.Reminder.WHReviewIEN); //AGP CHANGE 23.13
+                                   WHList.Add(WHNode);
+                                 end;
+                        end;
+                  end;
+                        if(Hist) then
+                        begin
+                          if(assigned(HistData)) then
+                          begin
+                            HistData.Save;
+                            HistData.Free;
+                            HistData := nil;
+                          end;
+                        end
+                        else
+                        begin
+                          while RemForm.PCEObj.NeedProviderInfo do
+                            MissingProviderInfo(RemForm.PCEObj, PCEType);
+                          RemForm.PCEObj.Save;
+                          VisitParent := GetVisitIEN(RemForm.NoteList.ItemIEN);
+                        end;
+                     end;
+                    end;
+
+                  finally
+                    TmpData.Free;
+                  end;
+
+                  for i := 0 to MSTList.Count-1 do
+                    SaveMSTData(MSTList[i]);
+
+                finally
+                  MSTList.Free;
+                end;
+
+                if(StoreVitals) and (VitalList.Count > 0) then
+                begin
+                  VitalList.Insert(0, VitalDateStr     + FloatToStr(FVitalsDate));
+                  VitalList.Insert(1, VitalPatientStr  + Patient.DFN);
+                  if IntToStr(Encounter.Location) <> '0' then //AGP change 26.9
+                     VitalList.Insert(2, VitalLocationStr + IntToStr(Encounter.Location))
+                  else
+                     VitalList.Insert(2, VitalLocationStr + IntToStr(RemForm.PCEObj.Location));;
+                  Tmp := ValAndStoreVitals(VitalList);
+                  if (Tmp <> 'True') then
+                    ShowMsg(Tmp);
+                end;
+
+              finally
+                VitalList.Free;
+              end;
+
+              if(MHList.Count > 0) then
+              begin
+                TestDate := 0;
+                for i := 0 to MHList.Count-1 do
+                begin
+                  try
+                    TestDate := StrToFloat(Piece(MHList[i],U,4));
+                  except
+                    on EConvertError do
+                      TestDate := 0
+                    else
+                      raise;
+                  end;
+                  if(TestDate > 0) then
+                  begin
+                    TestStaff := StrToInt64Def(Piece(MHList[i],U,5), 0);
+                    if TestStaff <= 0 then
+                      TestStaff := User.DUZ;
+                   if (Piece(MHList[i],U,3) = '1') and (MHDLLFound = false) then
+                    begin
+                      GAFScore := StrToIntDef(Piece(MHList[i],U,6),0);
+                      if(GAFScore > 0) then
+                        SaveGAFScore(GAFScore, TestDate, TestStaff);
+                    end
+                    else
+                    begin
+                      if Piece(MHLIst[i],U,6) = 'New MH dll' then
+                        begin
+                          //The dll take date and time the original code took only date.
+                          if Encounter.Location <> FReminder.PCEDataObj.Location then
+                            MHLoc := FReminder.PCEDataObj.Location
+                            else MHLoc := Encounter.Location;
+                          saveMHTest(Piece(MHList[i],U,2), FloattoStr(FReminder.PCEDataObj.VisitDateTime), InttoStr(MHLoc));
+                        end
+                      else
+                      SaveMentalHealthTest(Piece(MHList[i],U,2), TestDate, TestStaff,
+                                           Piece(MHList[i],U,6));
+                    end;
+                  end;
+                end;
+              end;
+
+            finally
+              MHList.Free;
+              if (FReminder.MHTestArray <> nil) and (FReminder.MHTestArray.Count > 0) then FReminder.MHTestArray.Free;
+            end;
+
+            if(WHList.Count > 0) then
+            begin
+              WHResult :='';
+              for i :=0 to WHList.Count-1 do
+                begin
+                  WHNode := WHList.Strings[i];
+                  if (Pos('N', Piece(WHNode,U,1)) <> 0) then
+                    begin
+                    SetPiece(WHResult,U,1,'WHIEN:'+Piece(WHNode,U,2));
+                    SetPiece(WHResult,U,2,'DFN:'+Patient.DFN);
+                    SetPiece(WHResult,U,3,'WHRES:'+Piece(WHNode,U,11));
+                    SetPiece(WHResult,U,4,'Visit:'+Encounter.VisitStr);
+                    if (not assigned(WHArray)) then WHArray := TStringList.Create;
+                    WHArray.Add(WHResult);
+                    end;
+                  if (Pos('O', Piece(WHNode,U,1)) <> 0) then
+                    begin
+                    SetPiece(WHResult,U,1,'WHPur:'+Piece(WHNode,U,2));
+                    SetPiece(WHResult,U,2,Piece(WHNode,U,11));
+                    SetPiece(WHResult,U,3,Piece(WHNode,U,12));
+                    SetPiece(WHResult,U,4,'DFN:'+Patient.DFN);
+                    SetPiece(WHResult,U,5,Piece(WHNode,U,13)); //AGP CHANGE 23.13
+                    if (not assigned(WHArray)) then WHArray := TStringList.Create;
+                    WHArray.Add(WHResult);
+                    end;
+                end;
+              end;
+              SaveWomenHealthData(WHArray);
+          finally
+          WHList.Free;
+          end;
+
+            ResetProcessing(RemWipe);
+            Hide;
+            Kill := TRUE;
+            RemForm.DisplayPCEProc;
+
+            // Process orders after PCE data saved in case of user input
+            if(OrderList.Count > 0) then
+            begin
+              DelayEvent.EventType := 'C';
+              DelayEvent.Specialty := 0;
+              DelayEvent.Effective := 0;
+              DelayEvent.PtEventIFN :=0;
+              DelayEvent.EventIFN  := 0;
+              DoOrders := TRUE;
+              repeat
+                Done := TRUE;
+                if not ReadyForNewOrder(DelayEvent) then
+                begin
+                  if(InfoBox('Unable to place orders.','Retry Orders?', MB_RETRYCANCEL or MB_ICONWARNING) = IDRETRY) then
+                    Done := FALSE
+                  else
+                  begin
+                    DoOrders := FALSE;
+                    ShowMsg('No Orders Placed.');
+                  end;
+                end;
+              until(Done);
+              if(DoOrders) then
+              begin
+                if(OrderList.Count = 1) then
+                begin
+                  case CharAt(Piece(OrderList[0], U, 3), 1) of
+                    'A':      ActivateAction(     Piece(OrderList[0], U, 2), RemForm.Form, 0);
+                    'D', 'Q': ActivateOrderDialog(Piece(OrderList[0], U, 2), DelayEvent, RemForm.Form, 0);
+                    'M':      ActivateOrderMenu(  Piece(OrderList[0], U, 2), DelayEvent, RemForm.Form, 0);
+                    'O':      ActivateOrderSet(   Piece(OrderList[0], U, 2), DelayEvent, RemForm.Form, 0);
+                  end;
+                end
+                else
+                begin
+                  for i := 0 to OrderList.Count-1 do
+                  begin
+                    tmp := Pieces(OrderList[i], U, 2, 4);
+                    OrderList[i] := tmp;
+                  end;
+                  ActivateOrderList(OrderList, DelayEvent, RemForm.Form, 0, '', '');
+                end;
+              end;
+            end;
+          finally
+            OrderList.Free;
+          end;
+        end;
+      finally
+        TmpList.Free;
+      end;
+    finally
+      if not FProcessingTemplate then
+        ProcessedReminders.Notifier.EndUpdate(ProcessedReminders.Count <> OldRemCount);
+    end;
+  finally
+    self.btnFinish.Enabled := true;
+    if(Kill) then
+    begin
+      FExitOK := TRUE;
+      Close;
+    end;
+  end;
+end;
+
+procedure TfrmRemDlg.ResetProcessing(Wipe: string = ''); //AGP CHANGE 24.8
+var
+  i: integer;
+  RemWipeArray : TStringlist;
+
+begin
+  if FProcessingTemplate then
+    KillObj(@FReminder)
+  else
+  begin
+    while(RemindersInProcess.Count > 0) do
+    begin
+      RemindersInProcess.Notifier.BeginUpdate;
+      try
+        RemindersInProcess.KillObjects;
+        RemindersInProcess.Clear;
+      finally
+        FReminder := nil;
+        RemindersInProcess.Notifier.EndUpdate(TRUE);
+      end;
+    end;
+  end;
+  ClearControls(TRUE);
+  PositionTrees('');
+  //AGP Change 24.8 Add wipe section for reminder wipe
+  If Wipe <> '' then
+    begin
+    RemWipeArray := TStringlist.Create;
+      if pos(U,Wipe)>0 then
+        begin
+          for i:=0 to ReminderDialogInfo.Count-1 do
+            begin
+              if pos(ReminderDialogInfo.Strings[i],Wipe)>0 then
+                 begin
+                     RemWipeArray.Add(ReminderDialogInfo.Strings[i]);
+                 end;
+            end;
+        end
+        else
+          begin
+             RemWipeArray.Add(Wipe);
+          end;
+
+      if assigned(RemWipeArray) then
+        begin
+           for i:=0 to RemWipeArray.Count-1 do
+              KillDlg(@ReminderDialogInfo, RemWipeArray.Strings[i], True);
+        end;
+  if (assigned(RemWipeArray)) then
+     begin
+       RemWipeArray.Clear ;
+       RemWipeArray.Free;
+     end;
+  end;
+end;
+
+
+procedure TfrmRemDlg.RemindersChanged(Sender: TObject);
+begin
+  UpdateButtons;
+end;
+
+procedure TfrmRemDlg.btnClinMaintClick(Sender: TObject);
+begin
+  if(not assigned(FClinMainBox)) then
+  begin
+    FClinMainBox := ModelessReportBox(DetailReminder(StrToIntDef(FReminder.IEN,0)),
+                    ClinMaintText + ': ' + FReminder.PrintName, TRUE);
+    FOldClinMaintOnDestroy := FClinMainBox.OnDestroy;
+    FClinMainBox.OnDestroy := ClinMaintDestroyed;
+    UpdateButtons;
+  end;
+end;
+
+procedure TfrmRemDlg.ClinMaintDestroyed(Sender: TObject);
+begin
+  if(assigned(FOldClinMaintOnDestroy)) then
+    FOldClinMaintOnDestroy(Sender);
+  FClinMainBox := nil;
+  UpdateButtons;
+end;
+
+procedure TfrmRemDlg.btnVisitClick(Sender: TObject);
+var
+  frmRemVisitInfo: TfrmRemVisitInfo;
+  VitalsDate: TFMDateTime;
+
+begin
+  if FVitalsDate = 0 then
+    VitalsDate := FMNow  //AGP Change 26.1
+  else
+    VitalsDate := FVitalsDate;
+  frmRemVisitInfo := TfrmRemVisitInfo.Create(Self);
+  try
+    frmRemVisitInfo.fraVisitRelated.InitAllow(FSCCond);
+    frmRemVisitInfo.fraVisitRelated.InitRelated(FSCRelated, FAORelated,
+                FIRRelated, FECRelated, FMSTRelated, FHNCRelated, FCVRelated, FSHDRelated);
+    frmRemVisitInfo.dteVitals.FMDateTime := VitalsDate;
+    frmRemVisitInfo.ShowModal;
+    if frmRemVisitInfo.ModalResult = mrOK then
+    begin
+      VitalsDate := frmRemVisitInfo.dteVitals.FMDateTime;
+      if VitalsDate <= FMNow then
+        FVitalsDate := VitalsDate;
+      frmRemVisitInfo.fraVisitRelated.GetRelated(FSCRelated, FAORelated,
+                FIRRelated, FECRelated, FMSTRelated, FHNCRelated, FCVRelated, FSHDRelated);
+      FSCPrompt := FALSE;
+      UpdateText(nil);
+    end;
+  finally
+    frmRemVisitInfo.Free;
+  end;
+end;
+
+procedure TfrmRemDlg.ProcessTemplate(Template: TTemplate);
+begin
+  FProcessingTemplate  := TRUE;
+  btnClear.Visible     := FALSE;
+  btnClinMaint.Visible := FALSE;
+  btnBack.Visible      := FALSE;
+  btnNext.Visible      := FALSE;
+  FReminder := TReminderDialog.Create(Template.ReminderDialogIEN + U + Template.PrintName + U + 
+                  Template.ReminderWipe);  //AGP CHANGE      24.8
+  ClearControls(TRUE);
+  FReminder.PCEDataObj := RemForm.PCEObj;
+  BuildControls;
+  UpdateText(nil);
+  UpdateButtons;
+  Show;
+end;
+
+procedure TfrmRemDlg.SetFontSize;
+begin
+  ResizeAnchoredFormToFont(frmRemDlg);
+  if Assigned(FClinMainBox) then
+    ResizeAnchoredFormToFont(FClinMainBox);
+  BuildControls;
+end;
+
+
+{ AGP Change 24.8 You MUST pass an address to an object variable to get KillObj to work }
+procedure TfrmRemDlg.KillDlg(ptr: Pointer; ID: string; KillObjects: boolean = FALSE);
+var
+  Obj: TObject;
+  Lst: TList;
+  SLst: TStringList;
+  i: integer;
+
+begin
+  Obj := TObject(ptr^);
+  if(assigned(Obj)) then
+  begin
+    if(KillObjects) then
+    begin
+      if(Obj is TList) then
+      begin
+        Lst := TList(Obj);
+        for i := Lst.count-1 downto 0 do
+          if assigned(Lst[i]) then
+            TObject(Lst[i]).Free;
+      end
+      else
+      if(Obj is TStringList) then
+      begin
+        SLst := TStringList(Obj);
+        //Check to see if the Reminder IEN is in the of IEN to be wipe out
+        for i := SLst.count-1 downto 0 do
+          if assigned(SLst.Objects[i]) and (pos(Slst.Strings[i],ID)>0) then
+            SLst.Objects[i].Free;
+      end;
+    end;
+    Obj.Free;
+    TObject(ptr^) := nil;
+  end;
+end;
+
+procedure TfrmRemDlg.FormShow(Sender: TObject);
+begin
+  //Set The form to it's Saved Position
+  Left := RemDlgLeft;
+  Top := RemDlgTop;
+  Width := RemDlgWidth;
+  Height := RemDlgHeight;
+end;
+
+initialization
+
+finalization
+  KillReminderDialog(nil);
+  KillObj(@PositionList);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderTree.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderTree.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderTree.dfm	(revision 1676)
@@ -0,0 +1,203 @@
+inherited frmReminderTree: TfrmReminderTree
+  Left = 229
+  Top = 197
+  HelpContext = 11200
+  BorderIcons = [biSystemMenu]
+  Caption = 'Available Reminders'
+  ClientHeight = 221
+  ClientWidth = 472
+  FormStyle = fsStayOnTop
+  Menu = mmMain
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  ExplicitWidth = 480
+  ExplicitHeight = 267
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 472
+    Height = 221
+    Align = alClient
+    BevelOuter = bvNone
+    Caption = 'pnlTop'
+    Constraints.MinHeight = 120
+    Constraints.MinWidth = 300
+    TabOrder = 0
+    OnResize = pnlTopResize
+    object tvRem: TORTreeView
+      Tag = 999
+      Left = 0
+      Top = 17
+      Width = 265
+      Height = 192
+      HideSelection = False
+      Images = dmodShared.imgReminders
+      Indent = 23
+      ReadOnly = True
+      RightClickSelect = True
+      RowSelect = True
+      StateImages = dmodShared.imgReminders
+      TabOrder = 0
+      OnChange = tvRemChange
+      OnClick = tvRemClick
+      OnCollapsed = tvRemCollapsed
+      OnEnter = tvRemEnter
+      OnExit = tvRemExit
+      OnExpanded = tvRemExpanded
+      OnMouseDown = tvRemMouseDown
+      Caption = 'Available Reminders'
+      NodePiece = 0
+      OnNodeCaptioning = tvRemNodeCaptioning
+    end
+    object hcRem: THeaderControl
+      Left = 0
+      Top = 0
+      Width = 472
+      Height = 17
+      Sections = <
+        item
+          ImageIndex = -1
+          MaxWidth = 267
+          MinWidth = 267
+          Text = 'Available Reminders'
+          Width = 267
+        end
+        item
+          Alignment = taCenter
+          ImageIndex = -1
+          MaxWidth = 68
+          MinWidth = 68
+          Text = 'Due Date'
+          Width = 68
+        end
+        item
+          ImageIndex = -1
+          MaxWidth = 91
+          MinWidth = 91
+          Text = 'Last Occurrence'
+          Width = 91
+        end
+        item
+          Alignment = taCenter
+          ImageIndex = -1
+          MaxWidth = 43
+          MinWidth = 43
+          Text = 'Priority'
+          Width = 43
+        end>
+      OnSectionClick = hcRemSectionClick
+    end
+    object pnlTopRight: TPanel
+      Left = 266
+      Top = 17
+      Width = 206
+      Height = 204
+      Align = alRight
+      BevelOuter = bvNone
+      Caption = 'pnlTopRight'
+      TabOrder = 2
+      object bvlGap: TBevel
+        Left = 0
+        Top = 187
+        Width = 206
+        Height = 17
+        Align = alBottom
+        Shape = bsSpacer
+        Visible = False
+        ExplicitTop = 175
+      end
+      object lbRem: TORListBox
+        Left = 0
+        Top = 0
+        Width = 206
+        Height = 187
+        TabStop = False
+        Style = lbOwnerDrawFixed
+        Align = alClient
+        ItemHeight = 16
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = lbRemClick
+        OnDblClick = lbRemClick
+        OnDrawItem = lbRemDrawItem
+        Caption = 'Due Date, last occurance, and priority'
+        ItemTipColor = clWindow
+        ItemTipEnable = False
+        LongList = False
+        OnChange = lbRemChange
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = tvRem'
+        'Status = stsDefault')
+      (
+        'Component = hcRem'
+        'Status = stsDefault')
+      (
+        'Component = pnlTopRight'
+        'Status = stsDefault')
+      (
+        'Component = lbRem'
+        'Status = stsDefault')
+      (
+        'Component = frmReminderTree'
+        'Status = stsDefault'))
+  end
+  object mmMain: TMainMenu
+    Images = dmodShared.imgReminders2
+    Left = 48
+    Top = 24
+    object memAction: TMenuItem
+      Caption = '&Action'
+      OnClick = memActionClick
+      object memEval: TMenuItem
+        Caption = '&Evaluate Reminder'
+        OnClick = memEvalClick
+      end
+      object memEvalCat: TMenuItem
+        Caption = 'Evaluate &Category Reminders'
+        OnClick = memEvalCatClick
+      end
+      object memEvalAll: TMenuItem
+        Caption = 'Evaluate Processed &Reminders'
+        OnClick = memEvalAllClick
+      end
+      object N2: TMenuItem
+        Caption = '-'
+      end
+      object memRefresh: TMenuItem
+        Caption = 'Re&fresh Reminder Dialogs'
+        OnClick = memRefreshClick
+      end
+      object mnuCoverSheet: TMenuItem
+        Caption = 'Edit Cover Sheet Reminder &List'
+        OnClick = mnuCoverSheetClick
+      end
+      object mnuExit: TMenuItem
+        Caption = 'E&xit Available Reminders'
+        ShortCut = 27
+        OnClick = mnuExitClick
+      end
+    end
+  end
+  object imgLblReminders: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvRem
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblReminders
+    Left = 120
+    Top = 56
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderTree.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderTree.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReminderTree.pas	(revision 1676)
@@ -0,0 +1,786 @@
+unit fReminderTree;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ExtCtrls, ComCtrls, ImgList, ORFn, Menus, fBase508Form,
+  VA508AccessibilityManager, VA508ImageListLabeler;
+
+type
+  TtvRem508Manager = class(TVA508ComponentManager)
+  private
+    function getDueDate(sData : String): String;
+    function getLastOcc(sData : String): String;
+    function getPriority(sData : String): String;
+    function getName(sData : String): String;
+    function getImgText(Node : TORTreeNode): String;
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+    function GetItem(Component: TWinControl): TObject; override;
+  end;
+
+  TfrmReminderTree = class(TfrmBase508Form)
+    pnlTop: TPanel;
+    tvRem: TORTreeView;
+    hcRem: THeaderControl;
+    pnlTopRight: TPanel;
+    bvlGap: TBevel;
+    lbRem: TORListBox;
+    mmMain: TMainMenu;
+    memAction: TMenuItem;
+    memEvalAll: TMenuItem;
+    memEval: TMenuItem;
+    N2: TMenuItem;
+    memRefresh: TMenuItem;
+    memEvalCat: TMenuItem;
+    mnuCoverSheet: TMenuItem;
+    mnuExit: TMenuItem;
+    imgLblReminders: TVA508ImageListLabeler;
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormCreate(Sender: TObject);
+    procedure tvRemExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvRemCollapsed(Sender: TObject; Node: TTreeNode);
+    procedure pnlTopResize(Sender: TObject);
+    procedure lbRemDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure lbRemChange(Sender: TObject);
+    procedure lbRemClick(Sender: TObject);
+    procedure tvRemEnter(Sender: TObject);
+    procedure tvRemExit(Sender: TObject);
+    procedure hcRemSectionClick(HeaderControl: THeaderControl;
+      Section: THeaderSection);
+    procedure tvRemClick(Sender: TObject);
+    procedure tvRemChange(Sender: TObject; Node: TTreeNode);
+    procedure tvRemMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure memEvalClick(Sender: TObject);
+    procedure memEvalAllClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure memRefreshClick(Sender: TObject);
+    procedure memActionClick(Sender: TObject);
+    procedure memEvalCatClick(Sender: TObject);
+    procedure mnuCoverSheetClick(Sender: TObject);
+    procedure tvRemNodeCaptioning(Sender: TObject; var Caption: String);
+    procedure mnuExitClick(Sender: TObject);
+  private
+    tvRem508Manager : TtvRem508Manager;
+    FLinking: boolean;
+    FSortOrder: integer;
+    FSortAssending: boolean;
+    FSorting: boolean;
+    FUpdating: boolean;
+    memView: TORMenuItem;
+    DateColWidth: integer;
+    LastDateColWidth: integer;
+    PriorityColWidth: integer;
+    procedure SetRemHeaderSectionWidth( SectionIndex: integer; NewWidth: integer);
+  protected
+    procedure Resync(FromTree: boolean);
+    procedure RemindersChanged(Sender: TObject);
+    procedure ResetlbItems(RootNode: TTreeNode);
+    procedure LinkTopControls(FromTree: boolean);
+    procedure SyncTopControls(FromTree: boolean);
+    procedure SortNode(const Node: TTreeNode);
+    function SortData(Node: TORTreeNode): string;
+//    procedure PositionToReminder(Sender: TObject);
+    procedure ProcessedRemindersChanged(Sender: TObject);
+  public
+    procedure EnableActions;
+    procedure SetFontSize( NewFontSize: integer);
+  end;
+
+procedure ViewReminderTree;
+
+var
+  frmReminderTree: TfrmReminderTree = nil;
+  RemTreeDlgLeft: integer = 0;
+  RemTreeDlgTop: integer = 0;
+  RemTreeDlgWidth: integer = 0;
+  RemTreeDlgHeight: integer = 0;
+
+const
+  ReminderTreeName = 'frmReminderTree';
+  
+implementation
+
+uses uReminders, dShared, uConst, fReminderDialog, fNotes, rMisc,
+     rReminders, fRemCoverSheet, VA2006Utils;
+
+{$R *.DFM}
+
+const
+  UnscaledDateColWidth = 70;
+  UnscaledLastDateColWidth = 89;
+  UnscaledPriorityColWidth = 43;
+
+procedure ViewReminderTree;
+
+begin
+  if(not InitialRemindersLoaded) then
+    StartupReminders;
+  if(not assigned(frmReminderTree)) then
+    frmReminderTree := TfrmReminderTree.Create(Application);
+  frmReminderTree.Show;
+end;
+
+procedure TfrmReminderTree.FormClose(Sender: TObject;
+  var Action: TCloseAction);
+begin
+  Action := caFree;
+end;
+                                                              
+procedure TfrmReminderTree.FormCreate(Sender: TObject);
+begin
+  FixHeaderControlDelphi2006Bug(hcRem);
+  memView := TORMenuItem.Create(mmMain);
+  memView.Caption := '&View';
+  memView.Add(TORMenuItem.Create(memView));
+  mmMain.Items.Insert(0, memView);
+
+  bvlGap.Height := GetSystemMetrics(SM_CYHSCROLL);
+  FSortOrder := -1;
+  FSortAssending := TRUE;
+  SetReminderMenuSelectRoutine(memView);
+  NotifyWhenRemindersChange(RemindersChanged);
+//  NotifyWhenProcessingReminderChanges(PositionToReminder);
+  ProcessedReminders.Notifier.NotifyWhenChanged(ProcessedRemindersChanged);
+  SetFontSize(MainFontSize);
+  SetReminderFormBounds(Self, 0, 0, Self.Width, Self.Height,
+                        RemTreeDlgLeft, RemTreeDlgTop, RemTreeDlgWidth, RemTreeDlgHeight);
+  tvRem508Manager := TtvRem508Manager.Create;
+  amgrMain.ComponentManager[tvRem] := tvRem508Manager;
+end;
+
+procedure TfrmReminderTree.LinkTopControls(FromTree: boolean);
+var
+  idx: integer;
+
+begin
+  if(not FLinking) then
+  begin
+    FLinking := TRUE;
+    try
+      if(FromTree) then
+      begin
+        if(assigned(tvRem.Selected)) then
+        begin
+          idx := lbRem.Items.IndexOfObject(tvRem.Selected);
+          lbRem.ItemIndex := idx;
+        end
+        else
+          lbRem.ItemIndex := -1;
+      end
+      else
+      begin
+        if(lbRem.ItemIndex < 0) then
+          tvRem.Selected := nil
+        else
+          tvRem.Selected := TTreeNode(lbRem.Items.Objects[lbRem.ItemIndex]);
+      end;
+    finally
+      FLinking := FALSE;
+    end;
+  end;
+end;
+
+procedure TfrmReminderTree.RemindersChanged(Sender: TObject);
+const
+  ARTxt = 'Available Reminders';
+
+var
+  OldUpdating: boolean;
+
+begin
+  EnableActions;
+  if(GetReminderStatus = rsNone) then
+  begin
+    tvRem.Selected := nil;
+    Close;
+    exit;
+  end;
+  OldUpdating := FUpdating;
+  try
+    FUpdating := TRUE;
+    lbRem.Items.BeginUpdate;
+    try
+      try
+        BuildReminderTree(tvRem);
+        lbRem.Clear;
+        ResetlbItems(nil);
+        LinkTopControls(TRUE);
+        SyncTopControls(TRUE);
+        pnlTopResize(Self);
+      finally
+        FUpdating := FALSE;
+        tvRem.Invalidate;
+        lbRem.Invalidate;
+      end;
+      if(RemindersEvaluatingInBackground) then
+        hcRem.Sections[0].Text := ARTxt + ' (Evaluating Reminders...)'
+      else
+        hcRem.Sections[0].Text := ARTxt;
+    finally
+      lbRem.Items.EndUpdate;
+    end;
+  finally
+    FUpdating := OldUpdating;
+  end;
+end;
+
+procedure TfrmReminderTree.ResetlbItems(RootNode: TTreeNode);
+var
+  Firsti, i: integer;
+  First, Node: TTreeNode;
+  sl: TStringList;
+  lvl: integer;
+  Add2LB: boolean;
+  Tmp, Data: string;
+
+  function IsVis(Node: TTreeNode): boolean; // IsVisible doesn't work when updating
+  begin
+    Result := TRUE;
+    Node := Node.Parent;
+    while(Result and (assigned(Node))) do
+    begin
+      Result := Node.Expanded;
+      Node := Node.Parent;
+    end;
+  end;
+
+begin
+  if(not FSorting) then
+  begin
+    if(assigned(RootNode)) then
+    begin
+      Node := RootNode.GetFirstChild;
+      lvl := RootNode.Level;
+      Add2LB := RootNode.Expanded;
+      Firsti := lbRem.Items.IndexOfObject(RootNode)+1;
+    end
+    else
+    begin
+      Node := tvRem.Items.GetFirstNode;
+      lvl := -1;
+      Add2LB := TRUE;
+      Firsti := 0;
+    end;
+    First := Node;
+    if(assigned(Node)) then
+    begin
+      sl := TStringList.Create;
+      try
+        sl.Assign(lbRem.Items); // Must use regualr assign, FastAssign doesn't copy objects.
+        while(assigned(Node) and (Node.Level > lvl)) do
+        begin
+          i := sl.IndexOfObject(Node);
+          if(i >= 0) then
+            sl.Delete(i);
+          Node := Node.GetNext;
+        end;
+        if(Add2LB) then
+        begin
+          i := Firsti;
+          Node := First;
+          while(assigned(Node) and (Node.Level > lvl)) do
+          begin
+            if(IsVis(Node)) then
+            begin
+              Tmp := TORTreeNode(Node).StringData;
+              Data := Piece(Tmp,U,RemTreeDateIdx) + U + Piece(Tmp,U,RemTreeDateIdx+1) + U +
+                      RemPriorityText[StrToIntDef(Piece(Tmp, U, 5), 2)];
+              sl.InsertObject(i, Data, Node);
+              inc(i);
+            end;
+            Node := Node.GetNext;
+          end;
+        end;
+        lbRem.Items.Assign(sl);
+      finally
+        sl.Free;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmReminderTree.SyncTopControls(FromTree: boolean);
+begin
+  if(lbRem.Items.Count > 0) and (tvRem.TopItem <> lbRem.Items.Objects[lbRem.TopIndex]) then
+  begin
+    if(FromTree) then
+      lbRem.TopIndex := lbRem.Items.IndexOfObject(tvRem.TopItem)
+    else
+      tvRem.TopItem := TTreeNode(lbRem.Items.Objects[lbRem.TopIndex]);
+  end;
+end;
+
+procedure TfrmReminderTree.tvRemExpanded(Sender: TObject; Node: TTreeNode);
+begin
+  if(FUpdating) then exit;
+  FUpdating := TRUE;
+  try
+    ResetlbItems(Node);
+    pnlTopResize(Self);
+  finally
+    FUpdating := FALSE;
+  end;
+end;
+
+procedure TfrmReminderTree.tvRemCollapsed(Sender: TObject;
+  Node: TTreeNode);
+begin
+  if(FUpdating) then exit;
+  FUpdating := TRUE;
+  try
+    ResetlbItems(Node);
+    pnlTopResize(Self);
+  finally
+    FUpdating := FALSE;
+  end;
+end;
+
+procedure TfrmReminderTree.pnlTopResize(Sender: TObject);
+var
+  Tmp,Adj: integer;
+
+begin
+  Tmp := DateColWidth + LastDateColWidth + PriorityColWidth + 4;
+  if(lbRem.Width <> (lbRem.ClientWidth + 4)) then
+    Adj := ScrollBarWidth
+  else
+    Adj := 0;
+  pnlTopRight.Width := Tmp + Adj;
+  Tmp := pnlTop.Width - DateColWidth - LastDateColWidth - PriorityColWidth - 2 - Adj;
+  SetRemHeaderSectionWidth( 0, Tmp);
+  tvRem.Items.BeginUpdate;
+  try
+    tvRem.Height := pnlTop.Height - hcRem.Height;
+    if(tvRem.Width <> (tvRem.ClientWidth+4)) then
+      inc(Tmp, ScrollBarWidth);
+    tvRem.Width := Tmp;
+  finally
+    tvRem.Items.EndUpdate;
+  end;
+  bvlGap.Visible := (tvRem.Height <> (tvRem.ClientHeight+4));
+end;
+
+procedure TfrmReminderTree.lbRemDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  Tmp: string;
+  Flags: Longint;
+
+begin
+  SyncTopControls(FALSE);
+  if (odSelected in State) then
+  begin
+    if((ActiveControl = lbRem) or (ActiveControl = tvRem)) then
+    begin
+      lbRem.Canvas.Brush.Color := clHighlight;
+      lbRem.Canvas.Font.Color := clHighlightText
+    end
+    else
+    begin
+      lbRem.Canvas.Brush.Color := clInactiveBorder;
+      lbRem.Canvas.Font.Color := clWindowText;
+    end;
+  end;
+  Flags := lbRem.DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER);
+  Tmp := piece(lbRem.Items[Index],U,1);
+  lbRem.Canvas.FillRect(Rect);
+  Inc(Rect.Left, 6);
+  DrawText(lbRem.Canvas.Handle, PChar(Tmp), Length(Tmp), Rect, Flags);
+  inc(Rect.Left, DateColWidth);
+  Tmp := piece(lbRem.Items[Index],U,2);
+  DrawText(lbRem.Canvas.Handle, PChar(Tmp), Length(Tmp), Rect, Flags);
+  inc(Rect.Left, LastDateColWidth);
+  Tmp := piece(lbRem.Items[Index],U,3);
+  DrawText(lbRem.Canvas.Handle, PChar(Tmp), Length(Tmp), Rect, Flags);
+end;
+
+procedure TfrmReminderTree.lbRemChange(Sender: TObject);
+begin
+  Resync(FALSE);
+  tvRem.SetFocus;
+end;
+
+procedure TfrmReminderTree.lbRemClick(Sender: TObject);
+begin
+  tvRem.SetFocus;
+end;
+
+procedure TfrmReminderTree.tvRemEnter(Sender: TObject);
+begin
+  if(FUpdating) then exit;
+  if(ActiveControl = lbRem) or (ActiveControl = tvRem) then
+    lbRem.Invalidate;
+end;
+
+procedure TfrmReminderTree.tvRemExit(Sender: TObject);
+begin
+  if(FUpdating) then exit;
+  if(ActiveControl <> lbRem) and (ActiveControl <> tvRem) then
+    lbRem.Invalidate;
+end;
+
+procedure TfrmReminderTree.hcRemSectionClick(HeaderControl: THeaderControl;
+  Section: THeaderSection);
+var
+  i, SortIdx: integer;
+  exp: boolean;
+  Sel, Node: TTreeNode;
+
+begin
+  SortIdx := -1;
+  for i := 0 to 3 do
+  begin
+    if(Section = hcRem.Sections[i]) then
+    begin
+      SortIdx := i;
+      break;
+    end;
+  end;
+  if(SortIdx >= 0) then
+  begin
+    Sel := tvRem.Selected;
+    if(FSortOrder = SortIdx) then
+      FSortAssending := not FSortAssending
+    else
+      FSortOrder := SortIdx;
+
+    FSorting := TRUE;
+    tvRem.Items.BeginUpdate;
+    try
+      Node := tvRem.Items.GetFirstNode;
+      while(assigned(Node)) do
+      begin
+        exp := Node.Expanded;
+        SortNode(Node);
+        if(Node.Expanded <> exp) then
+          Node.Expanded := exp;
+        Node := Node.GetNextSibling;
+      end;
+    finally
+      tvRem.Items.EndUpdate;
+      FSorting := FALSE;
+    end;
+    ResetlbItems(nil);
+    tvRem.Selected := Sel;
+  end;
+end;
+
+procedure TfrmReminderTree.SortNode(const Node: TTreeNode);
+var
+  i: integer;
+  sl: TStringList;
+  Tmp, TmpLast: TTreeNode;
+  exp: boolean;
+
+begin
+  if(Node.HasChildren) then
+  begin
+    sl := TStringList.Create;
+    try
+      Tmp := Node.GetFirstChild;
+      while assigned(Tmp) do
+      begin
+        sl.AddObject(SortData(TORTreeNode(Tmp)), Tmp);
+        Tmp := Tmp.GetNextSibling;
+      end;
+      sl.sort;
+      TmpLast := Node;
+      for i := 0 to sl.Count-1 do
+      begin
+        if(FSortAssending) then
+          Tmp := TTreeNode(sl.Objects[i])
+        else
+          Tmp := TTreeNode(sl.Objects[sl.Count-1-i]);
+        exp := Tmp.Expanded;
+        if(i = 0) then
+          Tmp.MoveTo(TmpLast, naAddChildFirst)
+        else
+          Tmp.MoveTo(TmpLast, naInsert);
+        TmpLast := Tmp;
+        SortNode(Tmp);
+        Tmp.Expanded := exp;
+      end;
+    finally
+      sl.Free;
+    end;
+  end;
+end;
+
+function TfrmReminderTree.SortData(Node: TORTreeNode): string;
+
+  function ZForm(str: string; Num: integer): string;
+  begin
+    Result := copy(StringOfChar('0', Num)+str,1+length(str),Num);
+  end;
+
+begin
+  Result := ZForm(piece(Node.StringData, U, RemTreeDateIdx+2),5);
+  case FSortOrder of
+    1: Result := ZForm(Piece(Node.StringData, U, 3), 15)+'.'+Result;
+    2: Result := ZForm(Piece(Node.StringData, U, 4), 15)+'.'+Result;
+    3: Result := Piece(Node.StringData, U, 5)+'.'+Result;
+  end;
+end;
+
+procedure TfrmReminderTree.tvRemClick(Sender: TObject);
+begin
+  Resync(TRUE);
+end;
+
+procedure TfrmReminderTree.tvRemChange(Sender: TObject; Node: TTreeNode);
+var
+  p1: string;
+
+begin
+  memView.Data := '';
+  if(assigned(Node)) then
+  begin
+    p1 := Piece((Node as TORTreeNode).StringData, U, 1);
+    if(Copy(p1,1,1) = RemCode) then
+    begin
+      memView.Data := (Node as TORTreeNode).StringData;
+    end;
+  end;
+  EnableActions;
+
+  Resync(TRUE);
+end;
+
+procedure TfrmReminderTree.tvRemMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  Resync(TRUE);
+end;
+
+procedure TfrmReminderTree.Resync(FromTree: boolean);
+begin
+  if(FUpdating) then exit;
+  FUpdating := TRUE;
+  try
+    LinkTopControls(FromTree);
+    SyncTopControls(FromTree);
+  finally
+    FUpdating := FALSE;
+  end;
+end;
+
+{procedure TfrmReminderTree.PositionToReminder(Sender: TObject);
+begin
+  if(assigned(Sender)) then
+  begin
+    if(Sender is TReminder) then
+    begin
+      tvRem.Selected := tvRem.FindPieceNode(RemCode + (Sender as TReminder).IEN, 1);
+      if(assigned(tvRem.Selected)) then
+        TORTreeNode(tvRem.Selected).EnsureVisible;
+    end;
+  end
+  else
+    tvRem.Selected := nil;
+end;}
+
+procedure TfrmReminderTree.memEvalClick(Sender: TObject);
+var
+  Node: TORTreeNode;
+  p1: string;
+
+begin
+  Node := TORTreeNode(tvRem.Selected);
+  if(assigned(Node)) then
+  begin
+    p1 := Piece(Node.StringData, U, 1);
+    if(Copy(p1,1,1) = RemCode) then
+      EvalReminder(StrToIntDef(Copy(p1,2,MaxInt),0));
+  end;
+end;
+
+procedure TfrmReminderTree.EnableActions;
+var
+  OK: boolean;
+  Node: TORTreeNode;
+  p1: string;
+
+begin
+  Node := TORTreeNode(tvRem.Selected);
+  if(assigned(Node)) then
+    p1 := Piece(Node.StringData, U, 1)
+  else
+    p1 := '';
+  if(assigned(Node)) then
+    OK := (Copy(p1,1,1) = RemCode)
+  else
+    OK := FALSE;
+  memEval.Enabled := OK;
+  memEvalAll.Enabled := (ProcessedReminders.Count > 0);
+  memRefresh.Enabled := (not ReminderDialogActive);
+  mnuCoverSheet.Enabled := (NewRemCoverSheetListActive or CanEditAllRemCoverSheetLists);
+  memAction.Enabled := (OK or memEvalAll.Enabled or memRefresh.Enabled or mnuCoverSheet.Enabled);
+  if(assigned(Node)) then
+    OK := ((Copy(p1,1,1) = CatCode) and (p1 <> OtherCatID) and (Node.HasChildren))
+  else
+    OK := FALSE;
+  memEvalCat.Enabled := OK;
+  memEvalCat.Tag := integer(Node);
+end;
+
+procedure TfrmReminderTree.ProcessedRemindersChanged(Sender: TObject);
+begin
+  EnableActions;
+end;
+
+procedure TfrmReminderTree.memEvalAllClick(Sender: TObject);
+begin
+  EvalProcessed;
+end;
+
+procedure TfrmReminderTree.FormDestroy(Sender: TObject);
+begin
+  frmReminderTree := nil;
+  ProcessedReminders.Notifier.RemoveNotify(ProcessedRemindersChanged);
+//  RemoveNotifyWhenProcessingReminderChanges(PositionToReminder);
+  RemoveNotifyRemindersChange(RemindersChanged);
+  RemTreeDlgLeft   := Self.Left;
+  RemTreeDlgTop    := Self.Top;
+  RemTreeDlgWidth  := Self.Width;
+  RemTreeDlgHeight := Self.Height;
+end;
+
+procedure TfrmReminderTree.memRefreshClick(Sender: TObject);
+begin
+  KillObj(@ReminderDialogInfo, TRUE);
+  UpdateReminderDialogStatus;
+  EnableActions;
+end;
+
+procedure TfrmReminderTree.memActionClick(Sender: TObject);
+begin
+  EnableActions;
+end;
+
+procedure TfrmReminderTree.memEvalCatClick(Sender: TObject);
+begin
+  EvaluateCategoryClicked(nil, Sender);
+end;
+
+procedure TfrmReminderTree.mnuCoverSheetClick(Sender: TObject);
+begin
+  EditCoverSheetReminderList(not CanEditAllRemCoverSheetLists);
+end;
+
+procedure TfrmReminderTree.SetFontSize(NewFontSize: integer);
+var
+  TotalWidth: integer;
+begin
+  DateColWidth := ResizeWidth(Font, MainFont, UnscaledDateColWidth);
+  LastDateColWidth := ResizeWidth(Font, MainFont, UnscaledLastDateColWidth);
+  PriorityColWidth := ResizeWidth(Font, MainFont, UnscaledPriorityColWidth);
+  ResizeAnchoredFormToFont(self);
+  TotalWidth := hcRem.Width;
+  SetRemHeaderSectionWidth( 0, TotalWidth - DateColWidth - LastDateColWidth - PriorityColWidth);
+  SetRemHeaderSectionWidth( 1, DateColWidth);
+  SetRemHeaderSectionWidth( 2, LastDateColWidth);
+  SetRemHeaderSectionWidth( 3, PriorityColWidth);
+
+  lbRem.ItemHeight := ((Abs(Font.Height)+ 6) div 2)*2; //tvRem.ItemHeight;
+  //This is called "best guess calibration"
+  if Font.Size > 12 then lbRem.ItemHeight := lbRem.ItemHeight + 2;
+  //I am reluctant to use an alignment on the tvRem as there si lots of resizing
+  //tricks going on with the scroll bar at the bottom.
+  tvRem.Top := hcRem.Top+hcRem.Height;
+  pnlTopResize(self);
+end;
+
+procedure TfrmReminderTree.SetRemHeaderSectionWidth( SectionIndex: integer; NewWidth: integer);
+begin
+  hcRem.Sections[SectionIndex].MinWidth := 0;
+  hcRem.Sections[SectionIndex].MaxWidth := NewWidth;
+  hcRem.Sections[SectionIndex].MinWidth := NewWidth;
+  hcRem.Sections[SectionIndex].Width := NewWidth;
+end;
+
+procedure TfrmReminderTree.tvRemNodeCaptioning(Sender: TObject;
+  var Caption: String);
+var
+  StringData: string;
+begin
+  StringData := (Sender as TORTreeNode).StringData;
+  if (Length(StringData) > 0) and (StringData[1] = 'R') then  //Only tag reminder statuses
+    case StrToIntDef(Piece(StringData,'^',6 {Due}),-1) of
+      0: Caption := Caption + ' -- Applicable';
+      1: Caption := Caption + ' -- DUE';
+      2: Caption := Caption + ' -- Not Applicable';
+      else Caption := Caption + ' -- Not Evaluated';
+    end;
+end;
+
+procedure TfrmReminderTree.mnuExitClick(Sender: TObject);
+begin
+  Close;
+end;
+
+{ TGrdLab508Manager }
+
+constructor TtvRem508Manager.Create;
+begin
+  inherited Create([mtValue, mtItemChange]);
+end;
+
+function TtvRem508Manager.getDueDate(sData: String): String;
+begin
+  Result := Piece(sData,U,3);
+  if Result <> '' then
+    Result := ' Due Date: ' + FormatFMDateTimeStr('mm/dd/yyyy',Result);
+end;
+
+function TtvRem508Manager.getImgText(Node: TORTreeNode): String;
+begin
+  Result := '';
+  if Node.ImageIndex > -1 then
+    Result := frmReminderTree.imgLblReminders.RemoteLabeler.Labels.Items[Node.ImageIndex].Caption + ' ';
+end;
+
+function TtvRem508Manager.GetItem(Component: TWinControl): TObject;
+var
+  tv : TORTreeView;
+begin
+  tv := TORTreeView(Component);
+  Result :=  tv.Selected;
+end;
+
+function TtvRem508Manager.getLastOcc(sData: String): String;
+begin
+  Result := Piece(sData,U,4);
+  if Result <> '' then
+    Result := ' Last Occurrence: ' + FormatFMDateTimeStr('mm/dd/yyyy',Result);
+end;
+
+function TtvRem508Manager.getName(sData: String): String;
+begin
+  Result := Piece(sData,U,2);
+end;
+
+function TtvRem508Manager.getPriority(sData: String): String;
+begin
+  Result := Piece(sData,U,5);
+  if Result = '2' then
+    Result := '';
+  if Result <> '' then
+    Result := ' Priority: ' + Result;
+end;
+
+function TtvRem508Manager.GetValue(Component: TWinControl): string;
+var
+    Node: TORTreeNode;
+begin
+  Node := TORTreeNode(TORTreeView(Component).Selected);
+  Result := getImgText(Node) + getName(Node.StringData) + getDueDate(Node.StringData) +
+            getLastOcc(Node.StringData) + getPriority(Node.StringData);
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRename.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRename.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRename.dfm	(revision 1676)
@@ -0,0 +1,62 @@
+inherited frmRename: TfrmRename
+  Left = 376
+  Top = 317
+  Caption = 'Rename'
+  ClientHeight = 109
+  ClientWidth = 316
+  OnCreate = FormCreate
+  ExplicitWidth = 324
+  ExplicitHeight = 136
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblRename: TLabel [0]
+    Left = 8
+    Top = 20
+    Width = 63
+    Height = 13
+    Caption = 'Rename Item'
+  end
+  object txtName: TCaptionEdit [1]
+    Left = 8
+    Top = 34
+    Width = 300
+    Height = 21
+    TabOrder = 0
+    Caption = 'Rename Item'
+  end
+  object cmdOK: TButton [2]
+    Left = 156
+    Top = 80
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [3]
+    Left = 236
+    Top = 80
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = txtName'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmRename'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRename.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRename.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRename.pas	(revision 1676)
@@ -0,0 +1,72 @@
+unit fRename;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ORFn, ORCtrls, VA508AccessibilityManager;
+
+type
+  TfrmRename = class(TfrmAutoSz)
+    lblRename: TLabel;
+    txtName: TCaptionEdit;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteRename(var AName: string; const APrompt: string): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+function ExecuteRename(var AName: string; const APrompt: string): Boolean;
+var
+  frmRename: TfrmRename;
+begin
+  Result := False;
+  frmRename := TfrmRename.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmRename));
+    with frmRename do
+    begin
+      lblRename.Caption := APrompt;
+      txtName.Text := AName;
+      txtName.SelectAll;
+      ShowModal;
+      if OKPressed then
+      begin
+        AName := txtName.Text;
+        Result := True;
+      end;
+    end;
+  finally
+    frmRename.Release;
+  end;
+end;
+
+procedure TfrmRename.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+end;
+
+procedure TfrmRename.cmdOKClick(Sender: TObject);
+begin
+  inherited;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmRename.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRenewOutMed.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRenewOutMed.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRenewOutMed.dfm	(revision 1676)
@@ -0,0 +1,141 @@
+inherited frmRenewOutMed: TfrmRenewOutMed
+  Left = 334
+  Top = 436
+  Caption = 'Change Refills for Outpatient Medication'
+  ClientHeight = 200
+  ClientWidth = 356
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 364
+  ExplicitHeight = 227
+  PixelsPerInch = 96
+  TextHeight = 13
+  object memOrder: TCaptionMemo [0]
+    Left = 0
+    Top = 0
+    Width = 356
+    Height = 95
+    Align = alClient
+    Color = clBtnFace
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 0
+    Caption = 'Order'
+  end
+  object pnlButtons: TPanel [1]
+    Left = 0
+    Top = 159
+    Width = 356
+    Height = 41
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      356
+      41)
+    object cmdOK: TButton
+      Left = 173
+      Top = 7
+      Width = 72
+      Height = 27
+      Anchors = [akTop, akRight]
+      Caption = 'OK'
+      Default = True
+      TabOrder = 0
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 248
+      Top = 7
+      Width = 103
+      Height = 27
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 1
+      OnClick = cmdCancelClick
+    end
+  end
+  object pnlMiddle: TPanel [2]
+    Left = 0
+    Top = 95
+    Width = 356
+    Height = 64
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 3
+    object lblPickup: TLabel
+      Left = 100
+      Top = 7
+      Width = 38
+      Height = 13
+      Caption = 'Pick Up'
+    end
+    object lblRefills: TLabel
+      Left = 8
+      Top = 7
+      Width = 28
+      Height = 13
+      Caption = 'Refills'
+    end
+    object cboPickup: TORComboBox
+      Left = 100
+      Top = 31
+      Width = 125
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Pick Up'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 0
+      CharsNeedMatch = 1
+    end
+    object txtRefills: TCaptionEdit
+      Left = 8
+      Top = 31
+      Width = 49
+      Height = 21
+      TabOrder = 1
+      Caption = 'Refills'
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memOrder'
+        'Status = stsDefault')
+      (
+        'Component = pnlButtons'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlMiddle'
+        'Status = stsDefault')
+      (
+        'Component = cboPickup'
+        'Status = stsDefault')
+      (
+        'Component = txtRefills'
+        'Status = stsDefault')
+      (
+        'Component = frmRenewOutMed'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRenewOutMed.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRenewOutMed.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRenewOutMed.pas	(revision 1676)
@@ -0,0 +1,96 @@
+unit fRenewOutMed;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, StdCtrls, ComCtrls, ORFn, rOrders, Mask, ORCtrls, ExtCtrls, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmRenewOutMed = class(TfrmBase508Form)
+    memOrder: TCaptionMemo;
+    pnlButtons: TPanel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    pnlMiddle: TPanel;
+    cboPickup: TORComboBox;
+    lblPickup: TLabel;
+    txtRefills: TCaptionEdit;
+    lblRefills: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    OKPressed: Boolean;
+  end;
+
+function ExecuteRenewOutMed(var Refills: Integer; var Comments, Pickup: string;
+  AnOrder: TOrder): Boolean;
+
+implementation
+
+{$R *.DFM}
+
+const
+  TX_ERR_REFILL = 'Refills must be a number from 0 to 11.';
+  TC_ERR_REFILL = 'Refills';
+
+function ExecuteRenewOutMed(var Refills: Integer; var Comments, Pickup: string;
+  AnOrder: TOrder): Boolean;
+var
+  frmRenewOutMed: TfrmRenewOutMed;
+begin
+  Result := False;
+  frmRenewOutMed := TfrmRenewOutMed.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmRenewOutMed));
+    frmRenewOutMed.memOrder.SetTextBuf(PChar(AnOrder.Text));
+    frmRenewOutMed.txtRefills.Text := IntToStr(Refills);
+    frmRenewOutMed.cboPickup.SelectByID(Pickup);
+    frmRenewOutMed.ShowModal;
+    if frmRenewOutMed.OKPressed then
+    begin
+      Result := True;
+      Refills := StrToIntDef(frmRenewOutMed.txtRefills.Text, Refills);
+      Pickup := frmRenewOutMed.cboPickup.ItemID;
+    end;
+  finally
+    frmRenewOutMed.Release;
+  end;
+end;
+
+procedure TfrmRenewOutMed.FormCreate(Sender: TObject);
+begin
+  inherited;
+  OKPressed := False;
+  with cboPickup.Items do
+  begin
+    Add('W^at Window');
+    Add('M^by Mail');
+    Add('C^in Clinic');
+  end;
+end;
+
+procedure TfrmRenewOutMed.cmdOKClick(Sender: TObject);
+var
+  NumRefills: Integer;
+begin
+  inherited;
+  NumRefills := StrToIntDef(txtRefills.Text, -1);
+  if (NumRefills < 0) or (NumRefills > 11) then
+  begin
+    InfoBox(TX_ERR_REFILL, TC_ERR_REFILL, MB_OK);
+    Exit;
+  end;
+  OKPressed := True;
+  Close;
+end;
+
+procedure TfrmRenewOutMed.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReports.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReports.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReports.dfm	(revision 1676)
@@ -0,0 +1,636 @@
+inherited frmReports: TfrmReports
+  Left = 356
+  Top = 69
+  HelpContext = 9000
+  Caption = 'Reports Page'
+  ClientHeight = 627
+  ClientWidth = 717
+  HelpFile = 'qnoback'
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  ExplicitLeft = 356
+  ExplicitTop = 69
+  ExplicitWidth = 725
+  ExplicitHeight = 654
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 617
+    Width = 717
+    Height = 10
+    ExplicitTop = 617
+    ExplicitWidth = 717
+    ExplicitHeight = 10
+  end
+  inherited sptHorz: TSplitter
+    Left = 119
+    Height = 617
+    OnMoved = sptHorzMoved
+    ExplicitLeft = 119
+    ExplicitHeight = 617
+  end
+  inherited pnlLeft: TPanel
+    Width = 119
+    Height = 617
+    ExplicitWidth = 119
+    ExplicitHeight = 617
+    object Splitter1: TSplitter
+      Left = 0
+      Top = 259
+      Width = 119
+      Height = 6
+      Cursor = crVSplit
+      Align = alBottom
+      Color = clBtnFace
+      ParentColor = False
+      OnCanResize = Splitter1CanResize
+    end
+    object pnlLefTop: TPanel
+      Left = 0
+      Top = 0
+      Width = 119
+      Height = 259
+      Align = alClient
+      BevelOuter = bvNone
+      Constraints.MinWidth = 30
+      TabOrder = 0
+      object lblTypes: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 119
+        Height = 19
+        Align = alTop
+        Caption = 'Available Reports'
+        HorzOffset = 3
+        Transparent = True
+        VertOffset = 6
+        WordWrap = False
+      end
+      object tvReports: TORTreeView
+        Left = 0
+        Top = 19
+        Width = 119
+        Height = 240
+        Align = alClient
+        HideSelection = False
+        Indent = 18
+        ReadOnly = True
+        TabOrder = 0
+        OnClick = tvReportsClick
+        OnCollapsing = tvReportsCollapsing
+        OnExpanding = tvReportsExpanding
+        OnKeyDown = tvReportsKeyDown
+        Caption = 'Available Reports'
+        NodePiece = 0
+      end
+    end
+    object pnlLeftBottom: TPanel
+      Left = 0
+      Top = 365
+      Width = 119
+      Height = 252
+      Align = alBottom
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      BevelOuter = bvNone
+      TabOrder = 1
+      Visible = False
+      object lblQualifier: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 119
+        Height = 13
+        Align = alTop
+        HorzOffset = 3
+        Transparent = True
+        VertOffset = 4
+        WordWrap = False
+      end
+      object lblHeaders: TLabel
+        Left = 0
+        Top = 13
+        Width = 119
+        Height = 13
+        Align = alTop
+        Caption = 'Headings'
+        Transparent = True
+        Visible = False
+        ExplicitWidth = 45
+      end
+      object lstHeaders: TORListBox
+        Left = 0
+        Top = 26
+        Width = 119
+        Height = 226
+        Align = alClient
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        Visible = False
+        OnClick = lstHeadersClick
+        Caption = 'Headings'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object lstQualifier: TORListBox
+        Left = 0
+        Top = 26
+        Width = 119
+        Height = 226
+        Style = lbOwnerDrawFixed
+        Align = alClient
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = lstQualifierClick
+        OnDrawItem = lstQualifierDrawItem
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2,3'
+        TabPositions = '10'
+      end
+      object pnlViews: TORAutoPanel
+        Left = 0
+        Top = 26
+        Width = 119
+        Height = 226
+        Align = alClient
+        BevelOuter = bvNone
+        TabOrder = 3
+        Visible = False
+        object pnlTopViews: TPanel
+          Left = 0
+          Top = 0
+          Width = 119
+          Height = 80
+          Align = alTop
+          BevelOuter = bvNone
+          TabOrder = 0
+          DesignSize = (
+            119
+            80)
+          object lblDateRange: TLabel
+            Left = 0
+            Top = 63
+            Width = 58
+            Height = 13
+            Anchors = [akLeft, akTop, akRight]
+            Caption = 'Date Range'
+          end
+          object chkDualViews: TCheckBox
+            Left = 0
+            Top = 0
+            Width = 121
+            Height = 17
+            Anchors = [akLeft, akTop, akRight]
+            Caption = 'Split Views'
+            TabOrder = 0
+            OnClick = chkDualViewsClick
+          end
+          object btnGraphSelections: TORAlignButton
+            Left = 0
+            Top = 20
+            Width = 119
+            Height = 21
+            Anchors = [akLeft, akTop, akRight]
+            Caption = 'Select/Define...'
+            TabOrder = 1
+            OnClick = btnGraphSelectionsClick
+          end
+          object btnChangeView: TORAlignButton
+            Left = 0
+            Top = 41
+            Width = 119
+            Height = 21
+            Anchors = [akLeft, akTop, akRight]
+            Caption = 'Settings...'
+            TabOrder = 2
+            OnClick = btnChangeViewClick
+          end
+        end
+        object lstDateRange: TORListBox
+          Left = 0
+          Top = 80
+          Width = 119
+          Height = 146
+          Align = alClient
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ItemHeight = 13
+          ParentFont = False
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          OnClick = lstDateRangeClick
+          ItemTipColor = clWindow
+          LongList = False
+          Pieces = '2'
+          TabPositions = '10'
+        end
+      end
+    end
+    object pnlProcedures: TPanel
+      Left = 0
+      Top = 265
+      Width = 119
+      Height = 100
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 2
+      Visible = False
+      object lblProcedures: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 119
+        Height = 15
+        Align = alTop
+        Caption = 'Radiology Procedures'
+        Color = clBtnFace
+        HorzOffset = 2
+        ParentColor = False
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+      end
+      object tvProcedures: TORTreeView
+        Left = 0
+        Top = 15
+        Width = 119
+        Height = 85
+        Align = alClient
+        HideSelection = False
+        Indent = 19
+        ReadOnly = True
+        TabOrder = 0
+        OnChange = tvProceduresChange
+        OnClick = tvProceduresClick
+        OnCollapsing = tvProceduresCollapsing
+        OnExpanding = tvProceduresExpanding
+        OnKeyDown = tvProceduresKeyDown
+        Caption = 'tvProcedures'
+        NodePiece = 0
+      end
+    end
+  end
+  inherited pnlRight: TPanel
+    Left = 123
+    Width = 594
+    Height = 617
+    ExplicitLeft = 123
+    ExplicitWidth = 594
+    ExplicitHeight = 617
+    object sptHorzRight: TSplitter
+      Left = 0
+      Top = 177
+      Width = 594
+      Height = 4
+      Cursor = crVSplit
+      Align = alTop
+      Visible = False
+      OnCanResize = sptHorzRightCanResize
+    end
+    object pnlRightTop: TPanel
+      Left = 0
+      Top = 0
+      Width = 594
+      Height = 57
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblProcTypeMsg: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 594
+        Height = 17
+        Align = alTop
+        HorzOffset = 3
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+        ExplicitWidth = 529
+      end
+      object TabControl1: TTabControl
+        Left = 0
+        Top = 40
+        Width = 594
+        Height = 20
+        Align = alTop
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        HotTrack = True
+        ParentFont = False
+        Style = tsButtons
+        TabHeight = 16
+        TabOrder = 0
+        TabStop = False
+        Visible = False
+        OnChange = TabControl1Change
+      end
+      object pnlTopRtLabel: TPanel
+        Left = 0
+        Top = 17
+        Width = 594
+        Height = 23
+        Align = alTop
+        TabOrder = 1
+        object lblTitle: TOROffsetLabel
+          Left = 1
+          Top = 1
+          Width = 495
+          Height = 21
+          Align = alClient
+          HorzOffset = 3
+          Transparent = True
+          VertOffset = 6
+          WordWrap = False
+          ExplicitWidth = 312
+          ExplicitHeight = 26
+        end
+        object chkMaxFreq: TCheckBox
+          Left = 496
+          Top = 1
+          Width = 97
+          Height = 21
+          Align = alRight
+          Caption = 'Max/Site OFF'
+          TabOrder = 0
+          Visible = False
+          OnClick = chkMaxFreqClick
+        end
+      end
+    end
+    object pnlRightBottom: TPanel
+      Left = 0
+      Top = 181
+      Width = 594
+      Height = 436
+      Align = alClient
+      TabOrder = 2
+      object WebBrowser1: TWebBrowser
+        Left = 1
+        Top = 31
+        Width = 592
+        Height = 277
+        TabStop = False
+        Align = alClient
+        TabOrder = 1
+        OnDocumentComplete = WebBrowser1DocumentComplete
+        ControlData = {
+          4C0000002F3D0000A11C00000000000000000000000000000000000000000000
+          000000004C000000000000000000000001000000E0D057007335CF11AE690800
+          2B2E126208000000000000004C0000000114020000000000C000000000000046
+          8000000000000000000000000000000000000000000000000000000000000000
+          00000000000000000100000000000000000000000000000000000000}
+      end
+      object Memo1: TMemo
+        Left = 1
+        Top = 1
+        Width = 592
+        Height = 30
+        TabStop = False
+        Align = alTop
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        ScrollBars = ssVertical
+        TabOrder = 0
+        Visible = False
+        WantTabs = True
+        OnKeyUp = Memo1KeyUp
+      end
+      object memText: TRichEdit
+        Left = 1
+        Top = 308
+        Width = 592
+        Height = 127
+        Align = alBottom
+        Color = clCream
+        Font.Charset = ANSI_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Constraints.MinHeight = 20
+        ParentFont = False
+        PlainText = True
+        PopupMenu = PopupMenu1
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 2
+        Visible = False
+        WantReturns = False
+        WordWrap = False
+      end
+    end
+    object pnlRightMiddle: TPanel
+      Left = 0
+      Top = 57
+      Width = 594
+      Height = 120
+      Align = alTop
+      Constraints.MaxHeight = 700
+      Constraints.MinHeight = 50
+      TabOrder = 1
+      Visible = False
+      object lvReports: TCaptionListView
+        Left = 1
+        Top = 1
+        Width = 592
+        Height = 118
+        Hint = 'To sort, click on column headers|'
+        Align = alClient
+        Columns = <>
+        Constraints.MinHeight = 50
+        HideSelection = False
+        MultiSelect = True
+        ReadOnly = True
+        RowSelect = True
+        ParentShowHint = False
+        PopupMenu = PopupMenu2
+        ShowHint = True
+        TabOrder = 0
+        ViewStyle = vsReport
+        OnColumnClick = lvReportsColumnClick
+        OnCompare = lvReportsCompare
+        OnKeyUp = lvReportsKeyUp
+        OnSelectItem = lvReportsSelectItem
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlLefTop'
+        'Status = stsDefault')
+      (
+        'Component = tvReports'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeftBottom'
+        'Status = stsDefault')
+      (
+        'Component = lstHeaders'
+        'Status = stsDefault')
+      (
+        'Component = lstQualifier'
+        'Status = stsDefault')
+      (
+        'Component = pnlViews'
+        'Status = stsDefault')
+      (
+        'Component = pnlTopViews'
+        'Status = stsDefault')
+      (
+        'Component = chkDualViews'
+        'Status = stsDefault')
+      (
+        'Component = btnGraphSelections'
+        'Status = stsDefault')
+      (
+        'Component = btnChangeView'
+        'Status = stsDefault')
+      (
+        'Component = lstDateRange'
+        'Status = stsDefault')
+      (
+        'Component = pnlProcedures'
+        'Status = stsDefault')
+      (
+        'Component = tvProcedures'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightTop'
+        'Status = stsDefault')
+      (
+        'Component = TabControl1'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightBottom'
+        'Status = stsDefault')
+      (
+        'Component = WebBrowser1'
+        'Status = stsDefault')
+      (
+        'Component = Memo1'
+        'Status = stsDefault')
+      (
+        'Component = memText'
+        'Status = stsDefault')
+      (
+        'Component = pnlRightMiddle'
+        'Status = stsDefault')
+      (
+        'Component = lvReports'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmReports'
+        'Status = stsDefault')
+      (
+        'Component = pnlTopRtLabel'
+        'Status = stsDefault')
+      (
+        'Component = chkMaxFreq'
+        'Status = stsDefault'))
+  end
+  object PopupMenu1: TPopupMenu
+    OnPopup = PopupMenu1Popup
+    Left = 229
+    Top = 176
+    object Print2: TMenuItem
+      Caption = 'Print'
+      ShortCut = 16464
+      OnClick = Print2Click
+    end
+    object Copy2: TMenuItem
+      Caption = 'Copy'
+      ShortCut = 16451
+      OnClick = Copy2Click
+    end
+    object SelectAll2: TMenuItem
+      Caption = 'Select All'
+      ShortCut = 16449
+      OnClick = SelectAll2Click
+    end
+    object GotoTop1: TMenuItem
+      Caption = 'Go to Top'
+      Enabled = False
+      OnClick = GotoTop1Click
+    end
+    object GotoBottom1: TMenuItem
+      Caption = 'Go to Bottom'
+      OnClick = GotoBottom1Click
+    end
+    object FreezeText1: TMenuItem
+      Caption = 'Freeze Text'
+      Enabled = False
+      OnClick = FreezeText1Click
+    end
+    object UnFreezeText1: TMenuItem
+      Caption = 'Un-Freeze Text'
+      Enabled = False
+      OnClick = UnFreezeText1Click
+    end
+  end
+  object calApptRng: TORDateRangeDlg
+    DateOnly = False
+    Instruction = 'Enter a date range -'
+    LabelStart = 'Begin Date'
+    LabelStop = 'End Date'
+    RequireTime = False
+    Format = 'mmm d,yy@hh:nn'
+    Left = 325
+    Top = 176
+  end
+  object Timer1: TTimer
+    Enabled = False
+    OnTimer = Timer1Timer
+    Left = 389
+    Top = 176
+  end
+  object PopupMenu2: TPopupMenu
+    Left = 267
+    Top = 174
+    object Print1: TMenuItem
+      Caption = 'Print'
+      ShortCut = 16464
+      OnClick = Print1Click
+    end
+    object Copy1: TMenuItem
+      Caption = 'Copy Data From Table'
+      ShortCut = 16451
+      OnClick = Copy1Click
+    end
+    object SelectAll1: TMenuItem
+      Caption = 'Select All From Table'
+      ShortCut = 16449
+      OnClick = SelectAll1Click
+    end
+  end
+  object imgLblImages: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = lvReports
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblImages
+    Left = 40
+    Top = 200
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReports.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReports.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReports.pas	(revision 1676)
@@ -0,0 +1,3328 @@
+unit fReports;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fHSplit, StdCtrls, ExtCtrls, ORCtrls, ComCtrls, Menus, uConst, ORDtTmRng,
+  OleCtrls, SHDocVw, Buttons, ClipBrd, rECS, Variants, StrUtils, fBase508Form,
+  VA508AccessibilityManager, VA508ImageListLabeler;
+
+type
+  TfrmReports = class(TfrmHSplit)
+    PopupMenu1: TPopupMenu;
+    GotoTop1: TMenuItem;
+    GotoBottom1: TMenuItem;
+    FreezeText1: TMenuItem;
+    UnFreezeText1: TMenuItem;
+    calApptRng: TORDateRangeDlg;
+    Timer1: TTimer;
+    pnlLefTop: TPanel;
+    lblTypes: TOROffsetLabel;
+    Splitter1: TSplitter;
+    pnlLeftBottom: TPanel;
+    lblQualifier: TOROffsetLabel;
+    lblHeaders: TLabel;
+    lstHeaders: TORListBox;
+    lstQualifier: TORListBox;
+    pnlRightTop: TPanel;
+    pnlRightBottom: TPanel;
+    pnlRightMiddle: TPanel;
+    TabControl1: TTabControl;
+    lvReports: TCaptionListView;
+    Memo1: TMemo;
+    WebBrowser1: TWebBrowser;
+    memText: TRichEdit;
+    sptHorzRight: TSplitter;
+    tvReports: TORTreeView;
+    PopupMenu2: TPopupMenu;
+    Print1: TMenuItem;
+    Copy1: TMenuItem;
+    Print2: TMenuItem;
+    Copy2: TMenuItem;
+    SelectAll1: TMenuItem;
+    SelectAll2: TMenuItem;
+    pnlProcedures: TPanel;
+    lblProcedures: TOROffsetLabel;
+    tvProcedures: TORTreeView;
+    lblProcTypeMsg: TOROffsetLabel;
+    pnlViews: TORAutoPanel;
+    chkDualViews: TCheckBox;
+    btnChangeView: TORAlignButton;
+    btnGraphSelections: TORAlignButton;
+    lblDateRange: TLabel;
+    lstDateRange: TORListBox;
+    pnlTopViews: TPanel;
+    pnlTopRtLabel: TPanel;
+    lblTitle: TOROffsetLabel;
+    chkMaxFreq: TCheckBox;
+    imgLblImages: TVA508ImageListLabeler;
+    procedure lstQualifierClick(Sender: TObject);
+    procedure GotoTop1Click(Sender: TObject);
+    procedure GotoBottom1Click(Sender: TObject);
+    procedure FreezeText1Click(Sender: TObject);
+    procedure UnFreezeText1Click(Sender: TObject);
+    procedure PopupMenu1Popup(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure DisplayHeading(aRanges: string);
+    procedure FormShow(Sender: TObject);
+    procedure Timer1Timer(Sender: TObject);
+    procedure TabControl1Change(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string);
+    procedure lstHeadersClick(Sender: TObject);
+    procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure WebBrowser1DocumentComplete(Sender: TObject;
+      const pDisp: IDispatch; var URL: OleVariant);
+    procedure sptHorzRightCanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure lstQualifierDrawItem(Control: TWinControl; Index: Integer;
+      Rect: TRect; State: TOwnerDrawState);
+    procedure tvReportsClick(Sender: TObject);
+    procedure lvReportsColumnClick(Sender: TObject; Column: TListColumn);
+    procedure lvReportsCompare(Sender: TObject; Item1, Item2: TListItem;
+      Data: Integer; var Compare: Integer);
+    procedure lvReportsSelectItem(Sender: TObject; Item: TListItem;
+      Selected: Boolean);
+    procedure LoadListView(aReportData: TStringList);
+    procedure LoadTreeView;
+    procedure tvReportsExpanding(Sender: TObject; Node: TTreeNode;
+      var AllowExpansion: Boolean);
+    procedure tvReportsCollapsing(Sender: TObject; Node: TTreeNode;
+      var AllowCollapse: Boolean);
+    procedure Print1Click(Sender: TObject);
+    procedure Copy1Click(Sender: TObject);
+    procedure Copy2Click(Sender: TObject);
+    procedure Print2Click(Sender: TObject);
+    procedure UpdateRemoteStatus(aSiteID, aStatus: string);
+    procedure lvReportsKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure SelectAll1Click(Sender: TObject);
+    procedure SelectAll2Click(Sender: TObject);
+    procedure tvReportsKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure Memo1KeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure LoadProceduresTreeView(x: string; var CurrentParentNode: TTreeNode;       
+      var CurrentNode: TTreeNode);                                                      
+    procedure tvProceduresCollapsing(Sender: TObject; Node: TTreeNode;                  
+      var AllowCollapse: Boolean);                                                      
+    procedure tvProceduresExpanding(Sender: TObject; Node: TTreeNode;                   
+      var AllowExpansion: Boolean);
+    procedure tvProceduresClick(Sender: TObject);
+    procedure tvProceduresChange(Sender: TObject; Node: TTreeNode);
+    procedure tvProceduresKeyDown(Sender: TObject; var Key: Word;                       
+      Shift: TShiftState);
+    procedure chkDualViewsClick(Sender: TObject);
+    procedure btnChangeViewClick(Sender: TObject);
+    procedure btnGraphSelectionsClick(Sender: TObject);
+    procedure lstDateRangeClick(Sender: TObject);
+    procedure sptHorzMoved(Sender: TObject);
+    procedure chkMaxFreqClick(Sender: TObject);
+
+  private
+    SortIdx1, SortIdx2, SortIdx3: Integer;
+    procedure ProcessNotifications;
+    procedure ShowTabControl;
+    procedure Graph(reportien: integer);
+    procedure GraphPanel(active: boolean);
+  public
+    procedure ClearPtData; override;
+    function AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure DisplayPage; override;
+    procedure SetFontSize(NewFontSize: Integer); override;
+    procedure RequestPrint; override;
+  end;
+
+var
+  frmReports: TfrmReports;
+  uHSComponents: TStringList;  //components selected
+                               //segment^OccuranceLimit^TimeLimit^Header...
+                               //^(value of uComponents...)
+  uHSAll: TStringList;  //List of all displayable Health Summaries
+  uLocalReportData: TStringList;  //Storage for Local report data
+  uRemoteReportData: TStringList; //Storage for status of Remote data
+  uReportInstruction: String;     //User Instructions
+  uNewColumn: TListColumn;
+  uListItem: TListItem;
+  uColumns: TStringList;
+  uTreeStrings: TStrings;
+  uMaxOcc: string;
+  uHState: string;
+  uQualifier: string;
+  uReportType: string;
+  uSortOrder: string;
+  uQualifierType: Integer;
+  uFirstSort: Integer;
+  uSecondSort: Integer;
+  uThirdSort: Integer;
+  uColChange: string;               //determines when column widths have changed
+  uUpdateStat: boolean;             //flag turned on when remote status is being updated
+  ulvSelectOn: boolean;             //flag turned on when multiple items in lvReports control have been selected
+  uListState: Integer;              //Checked state of list of Adhoc components Checked: Abbreviation, UnChecked: Name
+  uECSReport: TECSReport;           //Event Capture Report, initiated in fFrame when Click Event Capture under Tools
+  UpdatingLvReports: Boolean;       //Currently updating lvReports
+  UpdatingTvProcedures: Boolean;    //Currently updating tvProcedures       
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rCore, rReports, fFrame, uCore, uReports, fReportsPrint,
+     fReportsAdhocComponent1, activex, mshtml, dShared, fGraphs, fGraphData, rGraphs,
+     VA508AccessibilityRouter, VAUtils
+     { TODO -oRV -cWVEHR Long Age : Changed to use long age }
+     , rWVEHR;
+
+const
+  CT_REPORTS    =10;        // ID for REPORTS tab used by frmFrame
+  QT_OTHER      = 0;
+  QT_HSTYPE     = 1;
+  QT_DATERANGE  = 2;
+  QT_IMAGING    = 3;
+  QT_NUTR       = 4;
+  QT_PROCEDURES = 19;
+  QT_SURGERY    = 28;
+  QT_HSCOMPONENT   = 5;
+  QT_HSWPCOMPONENT = 6;
+  TX_NOREPORT     = 'No report is currently selected.';
+  TX_NOREPORT_CAP = 'No Report Selected';
+  HTML_PRE  = '<html><head><style>' + CRLF +
+              'PRE {font-size:8pt;font-family: "Courier New", "monospace"}' + CRLF +
+              '</style></head><body><pre>';
+  HTML_POST = CRLF + '</pre></body></html>';
+
+var
+  uRemoteCount: Integer;
+  uFrozen: Boolean;
+  uHTMLDoc: string;
+  uReportRPC: string;
+  uHTMLPatient: ANSIstring;
+  uRptID: String;
+  uDirect: String;
+  uEmptyImageList: TImageList;
+  ColumnToSort: Integer;
+  ColumnSortForward: Boolean;
+  GraphForm: TfrmGraphs;
+  GraphFormActive: boolean;
+
+procedure TfrmReports.ClearPtData;
+begin
+  inherited ClearPtData;
+  Timer1.Enabled := False;
+  memText.Clear;
+  tvProcedures.Items.Clear;
+  lblProcTypeMsg.Visible := FALSE;
+  lvReports.SmallImages := uEmptyImageList;
+  imgLblImages.ComponentImageListChanged;
+  lvReports.Items.Clear;
+  uLocalReportData.Clear;
+  uRemoteReportData.Clear;
+  TabControl1.Tabs.Clear;
+  TabControl1.Visible := false;
+  TabControl1.TabStop := false;
+  lstDateRange.Tag := 0; // used to reset date default on graph
+  if (GraphForm <> nil) and GraphFormActive then
+  with GraphForm do
+  begin
+    GraphForm.SendToBack;
+    Initialize;
+    DisplayData('top');
+    DisplayData('bottom');
+    GtslCheck.Clear;
+    GraphFormActive := false;
+  end;
+  begin
+  end;
+end;
+
+procedure TfrmReports.Graph(reportien: integer);
+begin
+  if GraphForm = nil then
+  begin
+    GraphForm := TfrmGraphs.Create(self);
+    try
+      with GraphForm do
+      begin
+        if btnClose.Tag = 1 then
+          Exit;
+        Parent := pnlRight;
+        Align := alClient;
+        pnlFooter.Tag := 1;   //suppresses bottom of graph form
+        pnlBottom.Height := 1;
+        pnlMain.BevelInner := bvLowered;
+        pnlMain.BevelOuter := bvRaised;
+        pnlMain.Tag := reportien;
+        Initialize;
+        ResizeAnchoredFormToFont(GraphForm);
+        Show;
+        DisplayData('top');
+        DisplayData('bottom');
+        GtslCheck.Clear;
+        GraphPanel(true);
+        frmGraphData.pnlData.Hint := Patient.DFN;
+        BringToFront;
+      end;
+    finally
+      if GraphForm.btnClose.Tag = 1 then
+      begin
+        GraphFormActive := false;
+        GraphForm.Free;
+        GraphForm := nil;
+      end
+      else
+        GraphFormActive := true;
+    end;
+  end
+  else if GraphForm.btnClose.Tag = 1 then
+    Exit
+  else
+  begin
+    with GraphForm do
+    if pnlMain.Tag <> reportien then
+    begin  // different report
+      pnlMain.Tag := reportien;
+      Initialize;
+      GtslCheck.Clear;
+      GraphPanel(true);
+      BringToFront;
+    end;
+  end;
+end;
+
+procedure TfrmReports.GraphPanel(active: boolean);
+var
+  adddaterange: boolean;
+  i: integer;
+  aQualifier, aStartTime, aStopTime, aNewLine: string;
+begin
+  if active then
+  begin
+    pnlLeftBottom.Height := pnlLeft.Height div 2;
+    pnlViews.Height := pnlLeftBottom.Height;
+    if pnlLeft.Height < 200 then
+      pnlTopViews.Height := 3
+    else
+      pnlTopViews.Height := 80;
+    lblQualifier.Visible := false;
+    lstQualifier.Visible := false;
+    pnlViews.Visible := true;
+    if lstDateRange.Tag = 0 then
+    begin
+      lstDateRange.Tag := 1;
+      aQualifier  :=  PReportTreeObject(tvReports.Selected.Data)^.Qualifier;
+      aStartTime  :=  Piece(aQualifier,';',1);
+      aStopTime   :=  Piece(aQualifier,';',2);
+      adddaterange := true;
+      aNewLine := '^' + aStartTime + ' to ' + aStopTime +'^^^' + aStartTime + ';' +  aStopTime +
+        '^' + floattostr(strtofmdatetime(aStartTime)) + '^' + floattostr(strtofmdatetime(aStopTime));
+      for i := 0 to GraphForm.cboDateRange.Items.Count - 1 do
+        if GraphForm.cboDateRange.Items[i] = aNewLine then
+        begin
+          adddaterange := false;
+          break;
+        end;
+      if adddaterange then GraphForm.cboDateRange.Items.Add(aNewLine);
+      lstDateRange.Items := GraphForm.cboDateRange.Items;
+      GraphForm.DateDefaults;
+      lstDateRange.ItemIndex := GraphForm.cboDateRange.ItemIndex;
+      //lstDateRange.ItemIndex := lstDateRange.Items.Count - 1;
+      //lstDateRange.ItemIndex := lstDateRange.Items.Count - 2;      //set to all results till fixed
+      lstDateRangeClick(self);
+    end;
+    pnlLeftBottom.Visible := true;
+    splitter1.Visible := true;
+  end
+  else
+  begin
+    lblQualifier.Visible := true;
+    lstQualifier.Visible := true;
+    pnlViews.Visible := false;
+    pnlLeftBottom.Height := lblHeaders.Height + lblQualifier.Height + 90;
+  end;
+end;
+
+function TfrmReports.AllowContextChange(var WhyNot: string): Boolean;
+var
+  i: integer;
+begin
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  if Timer1.Enabled = true then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'A remote data query in progress will be aborted.';
+             Result := False;
+           end;
+      '0': if WhyNot = 'COMMIT' then
+             begin
+               with RemoteSites.SiteList do for i := 0 to Count - 1 do
+                 if TRemoteSite(Items[i]).Selected then
+                 if Length(TRemoteSite(Items[i]).RemoteHandle) > 0 then
+                   begin
+                     TRemoteSite(Items[i]).ReportClear;
+                     TRemoteSite(Items[i]).QueryStatus := '-1^Aborted';
+                     UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Query Aborted');
+                   end;
+               Timer1.Enabled := false;
+               Result := True;
+             end;
+    end;
+end;
+
+procedure TfrmReports.RequestPrint;
+begin
+  if uReportType = 'M' then
+    begin
+      InfoBox(TX_NOREPORT, TX_NOREPORT_CAP, MB_OK);
+      Exit;
+    end;
+  if (uReportType = 'V') and (length(piece(uHState,';',2)) > 0) then
+    begin
+      if lvReports.Items.Count < 1 then
+        begin
+          InfoBox('There are no items to be printed.', 'No Items to Print', MB_OK);
+          Exit;
+        end;
+      if lvReports.SelCount < 1 then
+        begin
+          InfoBox('Please select one or more items from the list to be printed.', 'No Items Selected', MB_OK);
+          Exit;
+        end;
+    end;
+  if (uReportType = 'G') and GraphFormActive then
+    with GraphForm do
+    begin
+      if (lvwItemsTop.SelCount < 1) and (lvwItemsBottom.SelCount < 1) then
+        begin
+          InfoBox('There are no items graphed.', 'No Items to Print', MB_OK);
+          Exit;
+        end
+      else
+        begin
+          mnuPopGraphPrintClick(mnuPopGraphPrint);
+          Exit;
+        end;
+    end;
+  if uQualifierType = QT_DATERANGE then
+    begin      //      = 2
+      if lstQualifier.ItemIndex < 0 then
+        begin
+          InfoBox('Please select from one of the Date Range items before printing', 'Incomplete Information', MB_OK);
+        end
+      else
+        PrintReports(uRptID, piece(uRemoteType,'^',4));
+    end
+  else
+    PrintReports(uRptID, piece(uRemoteType,'^',4));
+end;
+
+procedure TfrmReports.DisplayPage;
+var
+  i: integer;
+begin
+  inherited DisplayPage;
+  frmFrame.mnuFilePrint.Tag := CT_REPORTS;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  uUpdateStat := false;
+  ulvSelectOn := false;
+  uListState := GetAdhocLookup();
+  memText.SelStart := 0;
+  FormShow(self);
+  uHTMLPatient := '<DIV align left>'
+                  + '<TABLE width="75%" border="0" cellspacing="0" cellpadding="1">'
+                  + '<TR valign="bottom" align="left">'
+                  + '<TD nowrap><B>Patient: ' + Patient.Name + '</B></TD>'
+                  + '<TD nowrap><B>' + Patient.SSN + '</B></TD>'
+{ TODO -oRV -cWVEHR Long Age : Changed to use long age }
+                  //+ '<TD nowrap><B>Age: ' + IntToStr(Patient.Age) + '</B></TD>'
+                  + '<TD nowrap><B>Age: ' + GetPatientBriefAge(Patient.DFN) + '</B></TD>'
+{}
+                  + '</TR></TABLE></DIV><HR>';
+                  //the preferred method would be to use headers and footers
+                  //so this is just an interim solution.
+  if not GraphFormActive then
+    pnlLeftBottom.Visible := False;
+  if InitPage then
+    begin
+      Splitter1.Visible := false;
+      pnlLeftBottom.Visible := false;
+      uMaxOcc := '';
+      uColChange := '';
+      LoadTreeView;
+    end;
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+    begin
+      uColChange := '';
+      lstQualifier.Clear;
+      tvProcedures.Items.Clear;
+      lblProcTypeMsg.Visible := FALSE;
+      lvReports.SmallImages := uEmptyImageList;
+      imgLblImages.ComponentImageListChanged;
+      lvReports.Items.Clear;
+      lvReports.Columns.Clear;
+      lblTitle.Caption := '';
+      lvReports.Caption := '';
+      Splitter1.Visible := false;
+      pnlLeftBottom.Visible := false;
+      memText.Parent := pnlRightBottom;
+      memText.Align := alClient;
+      memText.Clear;
+      uReportInstruction := '';
+      uLocalReportData.Clear;
+      for i := 0 to RemoteSites.SiteList.Count - 1 do
+        TRemoteSite(RemoteSites.SiteList.Items[i]).ReportClear;
+      pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+      StatusText('');
+      with tvReports do
+        if Items.Count > 0 then
+          begin
+            tvReports.Selected := tvReports.Items.GetFirstNode;
+            tvReportsClick(self);
+          end;
+    end;
+  case CallingContext of
+    CC_INIT_PATIENT:  if not InitPatient then
+                        begin
+                        uColChange := '';
+                        lstQualifier.Clear;
+                        tvProcedures.Items.Clear;
+                        lblProcTypeMsg.Visible := FALSE;      
+                        lvReports.SmallImages := uEmptyImageList;
+                        imgLblImages.ComponentImageListChanged;
+                        lvReports.Items.Clear;
+                        Splitter1.Visible := false;
+                        pnlLeftBottom.Visible := false;
+                        with tvReports do
+                          if Items.Count > 0 then
+                            begin
+                              tvReports.Selected := tvReports.Items.GetFirstNode;
+                              tvReportsClick(self);
+                            end;
+                        end;
+    CC_NOTIFICATION:  ProcessNotifications;
+  end;
+end;
+
+procedure TfrmReports.UpdateRemoteStatus(aSiteID, aStatus: string);
+var
+  j: integer;
+  s: string;
+  c: boolean;
+begin
+  if uUpdateStat = true then exit;                 //uUpdateStat also looked at in fFrame
+  uUpdateStat := true;
+  for j := 0 to frmFrame.lstCIRNLocations.Items.Count - 1 do
+    begin
+      s := frmFrame.lstCIRNLocations.Items[j];
+      c := frmFrame.lstCIRNLocations.checked[j];
+      if piece(s, '^', 1) = aSiteID then
+        begin
+          frmFrame.lstCIRNLocations.Items[j] := pieces(s, '^', 1, 3) + '^' + aStatus;
+          frmFrame.lstCIRNLocations.checked[j] := c;
+        end;
+    end;
+  uUpdateStat := false;
+end;
+
+procedure TfrmReports.LoadTreeView;
+var
+  i,j: integer;
+  currentNode, parentNode, grandParentNode, gtGrandParentNode: TTreeNode;
+  x: string;
+  addchild, addgrandchild, addgtgrandchild: boolean;
+begin
+  tvReports.Items.Clear;
+  memText.Clear;
+  uHTMLDoc := '';
+  WebBrowser1.Navigate('about:blank');
+  tvProcedures.Items.Clear;
+  lblProcTypeMsg.Visible := FALSE;
+  lvReports.SmallImages := uEmptyImageList;
+  imgLblImages.ComponentImageListChanged;
+  lvReports.Items.Clear;
+  uTreeStrings.Clear;
+  lblTitle.Caption := '';
+  lvReports.Caption := '';
+  ListReports(uTreeStrings);
+  addchild := false;
+  addgrandchild := false;
+  addgtgrandchild := false;
+  parentNode := nil;
+  grandParentNode := nil;
+  gtGrandParentNode := nil;
+  currentNode := nil;
+  for i := 0 to uTreeStrings.Count - 1 do
+    begin
+      x := uTreeStrings[i];
+      if UpperCase(Piece(x,'^',1))='[PARENT END]' then
+        begin
+          if addgtgrandchild = true then
+            begin
+              currentNode := gtgrandParentNode;
+              addgtgrandchild := false;
+            end
+          else
+            if addgrandchild = true then
+              begin
+                currentNode := grandParentNode;
+                addgrandchild := false;
+              end
+            else
+              begin
+                currentNode := parentNode;
+                addchild := false;
+              end;
+          continue;
+        end;
+      if UpperCase(Piece(x,'^',1))='[PARENT START]' then
+        begin
+          if addgtgrandchild = true then
+            currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)))
+          else
+            if addgrandchild = true then
+              begin
+                currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
+                addgtgrandchild := true;
+                gtgrandParentNode := currentNode;
+              end
+            else
+              if addchild = true then
+                begin
+                  currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
+                  addgrandchild := true;
+                  grandParentNode := currentNode;
+                end
+              else
+                begin
+                  currentNode := tvReports.Items.AddObject(currentNode,Piece(x,'^',3),MakeReportTreeObject(Pieces(x,'^',2,21)));
+                  parentNode := currentNode;
+                  addchild := true;
+                end;
+        end
+      else
+        if addchild = false then
+          begin
+            currentNode := tvReports.Items.AddObject(currentNode,Piece(x,'^',2),MakeReportTreeObject(x));
+            parentNode := currentNode;
+          end
+        else
+          begin
+            if addgtgrandchild = true then
+                currentNode := tvReports.Items.AddChildObject(gtGrandParentNode,Piece(x,'^',2),MakeReportTreeObject(x))
+            else
+              if addgrandchild = true then
+                  currentNode := tvReports.Items.AddChildObject(grandParentNode,Piece(x,'^',2),MakeReportTreeObject(x))
+              else
+                  currentNode := tvReports.Items.AddChildObject(parentNode,Piece(x,'^',2),MakeReportTreeObject(x));
+          end;
+    end;
+  for i := 0 to tvReports.Items.Count - 1 do
+    if Piece(PReportTreeObject(tvReports.Items[i].Data)^.Qualifier,';',4) = '1' then
+      begin
+        HealthSummaryCheck(uHSAll,'1');
+        for j := 0 to uHSAll.Count - 1 do
+          tvReports.Items.AddChildObject(tvReports.Items[i],Piece(uHSAll[j],'^',2),MakeReportTreeObject(uHSAll[j]));
+      end;
+  if tvReports.Items.Count > 0 then begin
+    tvReports.Selected := tvReports.Items.GetFirstNode;
+    tvReportsClick(self);
+  end;
+end;
+
+procedure TfrmReports.SetFontSize(NewFontSize: Integer);
+var
+  pnlRightMiddlePct: Real;
+  frmReportsHeight, pnlRightHeight: Integer;
+
+begin
+  pnlRightMiddlePct := (pnlRightMiddle.Height / (pnlRight.Height - (sptHorzRight.Height + pnlRightTop.Height)));
+  pnlRightMiddle.Constraints.MaxHeight := 20;
+  inherited SetFontSize(NewFontSize);
+  memText.Font.Size := NewFontSize;
+  frmReportsHeight := frmFrame.pnlPatientSelectedHeight - (frmFrame.pnlToolbar.Height + frmFrame.stsArea.Height + frmFrame.tabPage.Height + 2);
+  pnlRightHeight := frmReportsHeight - shpPageBottom.Height;
+  pnlRightMiddle.Constraints.MaxHeight := 0;
+  pnlRightMiddle.Height := (Round((pnlRightHeight - (sptHorzRight.Height + pnlRightTop.Height)) * pnlRightMiddlePct) - 14);
+  if frmFrame.Height <> frmFrame.frmFrameHeight then
+  begin
+    pnlRight.Height := pnlRightHeight;
+    frmReports.Height := frmReportsHeight;
+    frmFrame.Height := frmFrame.frmFrameHeight;
+  end;
+end;
+
+procedure TfrmReports.LoadListView(aReportData: TStringList);
+var
+  i,j,k,aErr: integer;
+  aTmpAray: TStringList;
+  aColCtr, aCurCol, aCurRow, aColID: integer;
+  x,y,z,c,aSite: string;
+  ListItem: TListItem;
+begin
+  aSite := '';
+  aErr := 0;
+  ListItem := nil;
+  case uQualifierType of
+    QT_HSCOMPONENT:
+      begin      //      = 5
+        if (length(piece(uHState,';',2)) > 0) then //and (chkText.Checked = false) then
+          begin
+            with lvReports do
+              begin
+                ViewStyle := vsReport;
+                for j := 0 to aReportData.Count - 1 do
+                  begin
+                    if piece(aReportData[j],'^',1) = '-1' then  //error condition, most likely remote call
+                      continue;
+                    ListItem := Items.Add;
+                    aSite := piece(aReportData[j],'^',1);
+                    ListItem.Caption := piece(aSite,';',1);
+                    for k := 2 to uColumns.Count do
+                      begin
+                        ListItem.SubItems.Add(piece(aReportData[j],'^',k));
+                      end;
+                  end;
+                if aReportData.Count = 0 then
+                  begin
+                    uReportInstruction := '<No Data Available>';
+                    memText.Lines.Clear;
+                    memText.Lines.Add(uReportInstruction);
+                  end
+                else
+                  memText.Lines.Clear;
+              end;
+          end;
+      end;
+    QT_HSWPCOMPONENT:
+      begin     //      = 6
+        if (length(piece(uHState,';',2)) > 0) then //and (chkText.Checked = false) then
+          begin
+            aTmpAray := TStringList.Create;
+            aCurRow := 0;
+            aCurCol := 0;
+            aColCtr := 9;
+            aTmpAray.Clear;
+            with lvReports do
+              begin
+                for j := 0 to aReportData.Count - 1 do
+                  begin
+                    x := aReportData[j];
+                    aColID := StrToIntDef(piece(x,'^',1),-1);
+                    if aColID < 0 then    //this is an error condition most likely an incompatible remote call
+                      continue;
+                    if aColID > (uColumns.Count - 1) then
+                      begin
+                        aErr := 1;
+                        continue;           //extract is out of sync with columns defined in 101.24
+                      end;
+                    if aColID < aColCtr then
+                      begin
+                        if aTmpAray.Count > 0 then
+                          begin
+                            if aColCtr = 1 then
+                              begin
+                                ListItem := Items.Add;
+                                aSite := piece(aTmpAray[j],'^',1);
+                                ListItem.Caption := piece(aSite,';',1);
+                                ListItem.SubItems.Add(IntToStr(aCurRow) + ':' + IntToStr(aCurCol));
+                              end
+                            else
+                              begin
+                                c := aTmpAray[0];
+                                if piece(uColumns.Strings[aCurCol],'^',4) = '1' then
+                                  c := c + '...';
+                                z := piece(c,'^',1);
+                                y := copy(c, (pos('^', c)), 9999);
+                                if pos('^',y) > 0 then
+                                  begin
+                                    while pos('^',y) > 0 do
+                                      begin
+                                        y := copy(y, (pos('^', y)+1), 9999);
+                                        z := z + '^' + y;
+                                      end;
+                                        ListItem.SubItems.Add(z);
+                                  end
+                                else
+                                  begin
+                                    ListItem.SubItems.Add(y);
+                                  end;
+                              end;
+                            RowObjects.Add(aSite, IntToStr(aCurRow) + ':' + IntToStr(aCurCol), uColumns.Strings[aCurCol], aTmpAray);
+                            aTmpAray.Clear;
+                          end;
+                        aColCtr := 0;
+                        aCurCol := aColID;
+                        aCurRow := aCurRow + 1;
+                      end
+                    else
+                      if aColID = aCurCol then
+                        begin
+                          z := '';
+                          y := piece(x,'^',2);
+                          if length(y) > 0 then z := y;
+                          y := copy(x, (pos('^', x)+1), 9999);
+                          if pos('^',y) > 0 then
+                            begin
+                              while pos('^',y) > 0 do
+                                begin
+                                  y := copy(y, (pos('^', y)+1), 9999);
+                                  z := z + '^' + y;
+                                end;
+                              aTmpAray.Add(z);
+                            end
+                          else
+                            begin
+                              aTmpAray.Add(y);
+                            end;
+                          continue;
+                        end;
+                    if aTmpAray.Count > 0 then
+                      begin
+                        if aColCtr = 1 then
+                          begin
+                            ListItem := Items.Add;
+                            aSite := piece(aTmpAray[0],'^',1);
+                            ListItem.Caption := piece(aSite,';',1);
+                            ListItem.SubItems.Add(IntToStr(aCurRow) + ':' + IntToStr(aCurCol));
+                          end
+                        else
+                          begin
+                            c := aTmpAray[0];
+                            if piece(uColumns.Strings[aCurCol],'^',4) = '1' then
+                              c := c + '...';
+                            ListItem.SubItems.Add(c);
+                          end;
+                        RowObjects.Add(aSite, IntToStr(aCurRow) + ':' + IntToStr(aCurCol), uColumns.Strings[aCurCol], aTmpAray);
+                        aTmpAray.Clear;
+                      end;
+                    aCurCol := aColID;
+                    Inc(aColCtr);
+                    y := '';
+                    for k := 2 to 10 do
+                      if length(piece(x,'^',k)) > 0 then
+                        begin
+                          if length(y) > 0 then y := y + '^' + piece(x,'^',k)
+                          else y := y + piece(x,'^',k);
+                        end;
+                    aTmpAray.Add(y);
+                    if aColCtr > 0 then
+                      while aColCtr < aCurCol do
+                        begin
+                          ListItem.SubItems.Add('');
+                          Inc(aColCtr);
+                        end;
+                  end;
+                if aTmpAray.Count > 0 then
+                  begin
+                    if aColCtr = 1 then
+                      begin
+                        ListItem := Items.Add;
+                        aSite := piece(aTmpAray[0],'^',1);
+                        ListItem.Caption := piece(aSite,';',1);
+                        ListItem.SubItems.Add(IntToStr(aCurRow) + ':' + IntToStr(aCurCol));
+                      end
+                    else
+                      begin
+                        c := aTmpAray[0];
+                        if piece(uColumns.Strings[aCurCol],'^',4) = '1' then
+                          c := c + '...';
+                        ListItem.SubItems.Add(c);
+                      end;
+                    RowObjects.Add(aSite, IntToStr(aCurRow) + ':' + IntToStr(aCurCol), uColumns.Strings[aCurCol], aTmpAray);
+                    aTmpAray.Clear;
+                  end;
+              end;
+            aTmpAray.Free;
+          end;
+        if uRptID = 'OR_R18:IMAGING' then with lvReports do  //set image indicator for "Imaging" report
+          begin
+            SmallImages := dmodShared.imgImages;
+            imgLblImages.ComponentImageListChanged;
+            for i := 0 to Items.Count - 1 do
+              if (Items[i].SubItems.Count > 7) and (Items[i].SubItems[7] = 'Y') then
+                Items[i].SubItemImages[1] := IMG_1_IMAGE
+              else
+                Items[i].SubItemImages[1] := IMG_NO_IMAGES;
+          end
+        else //lvReports.SmallImages := uEmptyImageList;
+        if uRptID = 'OR_PN:PROGRESS NOTES' then with lvReports do  //set image indicator for "Progress Notes" report
+          begin
+            SmallImages := dmodShared.imgImages;
+            imgLblImages.ComponentImageListChanged;
+            for i := 0 to Items.Count - 1 do
+              if (Items[i].SubItems.Count > 7) and (StrToInt(Items[i].SubItems[7]) > 0) then
+                Items[i].SubItemImages[2] := IMG_1_IMAGE
+              else
+                Items[i].SubItemImages[2] := IMG_NO_IMAGES;
+          end
+        else begin
+          lvReports.SmallImages := uEmptyImageList;
+          imgLblImages.ComponentImageListChanged;
+        end;
+      end;
+  end;
+  if aErr = 1 then
+    if User.HasKey('XUPROGMODE') then
+      ShowMsg('Programmer message: One or more Column ID''s in file 101.24 do not match ID''s coded in extract routine');
+end;
+
+procedure TfrmReports.lstQualifierClick(Sender: TObject);
+var
+  MoreID: String;  //Restores MaxOcc value
+  aRemote, aHDR, aFHIE: string;
+  i: integer;
+begin
+  inherited;
+  if uFrozen = True then
+    begin
+      memo1.visible := False;
+      memo1.TabStop := False;
+    end;
+  MoreID := ';' + Piece(uQualifier,';',3);
+  if chkMaxFreq.checked = true then
+    begin
+      MoreID := '';
+      SetPiece(uQualifier,';',3,'');
+    end;
+  aRemote :=  piece(uRemoteType,'^',1);
+  aHDR := piece(uRemoteType,'^',7);
+  aFHIE := piece(uRemoteType,'^',8);
+  SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
+  uHSComponents.Clear;
+  uHSAll.Clear;
+  tvProcedures.Items.Clear;
+  lblProcTypeMsg.Visible := FALSE;
+  uHTMLDoc := '';
+  if uReportType = 'H' then
+    begin
+      WebBrowser1.Visible := true;
+      WebBrowser1.TabStop := true;
+      WebBrowser1.Navigate('about:blank');
+      WebBrowser1.BringToFront;
+      memText.Visible := false;
+      memText.TabStop := false;
+    end
+  else
+    begin
+      WebBrowser1.Visible := false;
+      WebBrowser1.TabStop := false;
+      memText.Visible := true;
+      memText.TabStop := true;
+      memText.BringToFront;
+      RedrawActivate(memText.Handle);
+    end;
+  uLocalReportData.Clear;
+  uRemoteReportData.Clear;
+  for i := 0 to RemoteSites.SiteList.Count - 1 do
+   TRemoteSite(RemoteSites.SiteList.Items[i]).ReportClear;
+  uRemoteCount := 0;
+  if aHDR = '1' then
+    DisplayHeading(lstQualifier.ItemID)
+  else
+    DisplayHeading(lstQualifier.ItemID + MoreID);
+  if lstQualifier.ItemID = 'ds' then
+    begin
+      with calApptRng do
+       if Not (Execute) then
+         begin
+           lstQualifier.ItemIndex := -1;
+           Exit;
+         end
+       else if (Length(TextOfStart) > 0) and (Length(TextOfStop) > 0) then
+         begin
+           if (Length(piece(uRemoteType,'^',6)) > 0) and (StrToInt(piece(uRemoteType,'^',6)) > 0) then
+             if abs(FMDateTimeToDateTime(FMDateStart) - FMDateTimeToDateTime(FMDateStop)) > StrToInt(piece(uRemoteType,'^',6)) then
+               begin
+                 InfoBox('The Date Range selected is greater than the' + CRLF + 'Maximum Days Allowed of ' + piece(uRemoteType,'^',6)
+                   + ' for this report.', 'No Report Generated',MB_OK);
+                 lstQualifier.ItemIndex := -1;
+                 exit;
+               end;
+           lstQualifier.ItemIndex := lstQualifier.Items.Add(RelativeStart +
+             ';' + RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+           DisplayHeading(lstQualifier.ItemID + MoreID);
+           SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
+         end
+       else
+         begin
+           lstQualifier.ItemIndex := -1;
+           InfoBox('Invalid Date Range entered. Please try again','Invalid Date/time entry',MB_OK);
+           if (Execute) and (Length(TextOfStart) > 0) and (Length(TextOfStop) > 0) then
+             begin
+               lstQualifier.ItemIndex := lstQualifier.Items.Add(RelativeStart +
+                 ';' + RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+               DisplayHeading(lstQualifier.ItemID + MoreID);
+               SetPiece(uRemoteType,'^',5,lstQualifier.ItemID);
+             end
+           else
+             begin
+               lstQualifier.ItemIndex := -1;
+               InfoBox('No Report Generated!','Invalid Date/time entry',MB_OK);
+               exit;
+             end;
+         end;
+    end;
+  if (CharAt(lstQualifier.ItemID,1) = 'd') and (Length(piece(uRemoteType,'^',6)) > 0) and (StrToInt(piece(uRemoteType,'^',6)) > 0) then
+    if ExtractInteger(lstQualifier.ItemID) > (StrToInt(piece(uRemoteType,'^',6))) then
+      begin
+        InfoBox('The Date Range selected is greater than the' + CRLF + 'Maximum Days Allowed of ' + piece(uRemoteType,'^',6)
+          + ' for this report.', 'No Report Generated',MB_OK);
+        lstQualifier.ItemIndex := -1;
+        exit;
+      end;
+  StatusText('Retrieving ' + lblTitle.Caption + '...');
+  Screen.Cursor := crHourGlass;
+  uReportInstruction := #13#10 + 'Retrieving data...';
+  memText.Lines.Add(uReportInstruction);
+  if WebBrowser1.Visible = true then
+  begin
+    uHTMLDoc := HTML_PRE + uReportInstruction + HTML_POST;
+    WebBrowser1.Navigate('about:blank');
+  end;
+  case uQualifierType of
+      QT_HSCOMPONENT:
+        begin     //      = 5
+          lvReports.SmallImages := uEmptyImageList;
+          imgLblImages.ComponentImageListChanged;
+          lvReports.Items.Clear;
+          memText.Lines.Clear;
+          RowObjects.Clear;
+          if ((aRemote = '1') or (aRemote = '2')) then
+            GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
+          if not(piece(uRemoteType, '^', 9) = '1') then
+            if (length(piece(uHState,';',2)) > 0) then
+              begin
+                if not(aRemote = '2') then
+                  LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                LoadListView(uLocalReportData);
+              end
+            else
+              begin
+                if ((aRemote = '1') or (aRemote = '2')) then
+                  ShowTabControl;
+                pnlRightMiddle.Visible := false;
+                LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                if uLocalReportData.Count < 1 then
+                  begin
+                    uReportInstruction := '<No Report Available>';
+                    memText.Lines.Add(uReportInstruction);
+                  end
+                else
+                  begin
+                    QuickCopy(uLocalReportData,memText);
+                    TabControl1.OnChange(nil);
+                  end;
+              end;
+        end;
+      QT_HSWPCOMPONENT:
+        begin      //      = 6
+          lvReports.SmallImages := uEmptyImageList;
+          imgLblImages.ComponentImageListChanged;
+          lvReports.Items.Clear;
+          RowObjects.Clear;
+          memText.Lines.Clear;
+          if ((aRemote = '1') or (aRemote = '2'))  then
+            begin
+              Screen.Cursor := crDefault;
+              GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
+            end;
+          if not(piece(uRemoteType, '^', 9) = '1') then
+            if (length(piece(uHState,';',2)) > 0) then
+              begin
+                if not(aRemote = '2') then
+                  LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                LoadListView(uLocalReportData);
+              end
+            else
+              begin
+                if ((aRemote = '1') or (aRemote = '2')) then
+                  ShowTabControl;
+                pnlRightMiddle.Visible := false;
+                if not (aRemote = '2') then
+                  begin
+                    LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+                    if uLocalReportData.Count < 1 then
+                      begin
+                        uReportInstruction := '<No Report Available>';
+                        memText.Lines.Add(uReportInstruction);
+                      end
+                    else
+                      QuickCopy(uLocalReportData,memText);
+                  end;
+              end;
+        end
+      else
+        begin
+          Screen.Cursor := crDefault;
+          GoRemote(uRemoteReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState, aHDR, aFHIE);
+          if Pos('ECS',Piece(uRptID,':',1))>0 then
+          begin
+            if Pos('OR_ECS1',uRptID)>0 then
+              uECSReport.ReportHandle := 'ECPCER';
+            if Pos('OR_ECS2',uRptID)>0 then
+              uECSReport.ReportHandle := 'ECPAT';
+            uECSReport.ReportType   := 'D';
+            if uECSReport.ReportHandle = 'ECPAT' then
+            begin
+              if InfoBox('Would you like the procedure reason be included in the report?', 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+                uECSReport.NeedReason := 'Y'
+              else
+                uECSReport.NeedReason := 'N';
+            end;
+            FormatECSDate(lstQualifier.ItemID, uECSReport);
+            LoadECSReportText(uLocalReportData, uECSReport);
+          end else
+            if not(piece(uRemoteType, '^', 9) = '1') then
+              LoadReportText(uLocalReportData, uRptID, lstQualifier.ItemID + MoreID, uReportRPC, uHState);
+          if not(piece(uRemoteType, '^', 9) = '1') then
+            if TabControl1.TabIndex < 1 then
+              QuickCopy(uLocalReportData,memText);
+        end;
+    end;
+    Screen.Cursor := crDefault;
+    StatusText('');
+    memText.Lines.Insert(0,' ');
+    memText.Lines.Delete(0);
+    if WebBrowser1.Visible = true then
+      begin
+        if uReportType = 'R' then
+          uHTMLDoc := HTML_PRE + uLocalReportData.Text + HTML_POST
+        else
+          uHTMLDoc := uHTMLPatient + uLocalReportData.Text;
+        WebBrowser1.Navigate('about:blank');
+      end;
+end;
+
+procedure TfrmReports.GotoTop1Click(Sender: TObject);
+var
+  Current, Desired : Longint;
+begin
+  inherited;
+  with memText do
+  begin
+    SetFocus;
+    SelStart :=0;
+    SelLength :=0;
+    Current := SendMessage(memText.handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+    Desired := SendMessage(memText.handle, EM_LINEFROMCHAR,
+               memText.SelStart + memText.SelLength ,0) - 1;
+    SendMessage(memText.Handle,EM_LINESCROLL, 0, Desired - Current);
+  end;
+end;
+
+procedure TfrmReports.GotoBottom1Click(Sender: TObject);
+var
+  Current, Desired : Longint;
+  I,LineCount : Integer;
+begin
+  Inherited;
+  LineCount :=0;
+  with memText do
+    begin
+      for I := 0 to lines.count-1 do
+        LineCount := LineCount + Length(Lines[I]) + 2;
+      SetFocus;
+      SelStart := LineCount;
+      SelLength :=0;
+    end;
+  Current := SendMessage(memText.handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+  Desired := SendMessage(memText.handle, EM_LINEFROMCHAR,
+             memText.SelStart + memText.SelLength ,0);
+  SendMessage(memText.Handle,EM_LINESCROLL, 0, Desired - Current - 5);
+end;
+
+procedure TfrmReports.FreezeText1Click(Sender: TObject);
+var
+  Current, Desired : Longint;
+  LineCount : Integer;
+begin
+  Inherited;
+  If memText.SelLength > 0 then begin
+    Memo1.visible := true;
+    Memo1.TabStop := true;
+    Memo1.Text := memText.SelText;
+    If Memo1.Lines.Count <6 then
+      LineCount := Memo1.Lines.Count + 1
+    Else
+      LineCount := 5;
+    Memo1.Height := LineCount * frmReports.Canvas.TextHeight(memText.SelText);
+    Current := SendMessage(memText.handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+    Desired := SendMessage(memText.handle, EM_LINEFROMCHAR,
+               memText.SelStart + memText.SelLength ,0);
+    SendMessage(memText.Handle,EM_LINESCROLL, 0, Desired - Current);
+    uFrozen := True;
+  end;
+end;
+
+procedure TfrmReports.UnFreezeText1Click(Sender: TObject);
+begin
+  Inherited;
+  If uFrozen = True Then begin
+    uFrozen := False;
+    UnFreezeText1.Enabled := False;
+    Memo1.Visible := False;
+    Memo1.TabStop := False;
+    Memo1.Text := '';
+  end;
+end;
+
+procedure TfrmReports.PopupMenu1Popup(Sender: TObject);
+begin
+  inherited;
+  If Screen.ActiveControl.Name <> memText.Name then
+   begin
+     memText.SetFocus;
+     memText.SelStart := 0;
+   end;
+  If memText.SelLength > 0 Then
+    FreezeText1.Enabled := True
+  Else
+    FreezeText1.Enabled := False;
+  If Memo1.Visible Then
+    UnFreezeText1.Enabled := True;
+  If memText.SelStart > 0 then
+    GotoTop1.Enabled := True
+  Else
+    GotoTop1.Enabled := False;
+  If SendMessage(memText.handle, EM_LINEFROMCHAR,
+    memText.SelStart,0) < memText.Lines.Count then
+    GotoBottom1.Enabled := True
+  Else
+    GotoBottom1.Enabled := False;
+end;
+
+procedure TfrmReports.FormCreate(Sender: TObject);
+begin
+  inherited;
+  PageID := CT_REPORTS;
+  uFrozen := False;
+  uHSComponents := TStringList.Create;
+  uHSAll := TStringList.Create;
+  uLocalReportData := TStringList.Create;
+  uRemoteReportData := TStringList.Create;
+  uColumns := TStringList.Create;
+  uTreeStrings := TStringList.Create;
+  uEmptyImageList := TImageList.Create(Self);
+  uEmptyImageList.Width := 0;
+  RowObjects := TRowObject.Create;
+  uRemoteCount := 0;
+  GraphFormActive := false;
+end;
+
+procedure TfrmReports.ProcessNotifications;
+var
+  j, AnIndex, IDColumn: integer;
+  SelectID: string;
+  ListItem: TListItem;
+  tmpRptID: string;
+
+  function FindReport(QualType: integer; var AnIndex: integer): boolean; overload;
+  var
+    Found: boolean;
+    i: integer;
+  begin
+    Found := False;
+    with tvReports do
+      begin
+        for i := 0 to Items.Count -1 do
+          if StrToIntDef(Piece(PReportTreeObject(tvReports.Items[i].Data)^.Qualifier,';',4),0) = QualType then
+            begin
+              Found := True;
+              break;
+            end;
+      end;
+    Result := Found ;
+    AnIndex := i;
+  end;
+
+  function FindReport(ReportID: string; var AnIndex: integer): boolean; overload;
+  var
+    Found: boolean;
+    i: integer;
+  begin
+    Found := False;
+    with tvReports do
+      begin
+        for i := 0 to Items.Count -1 do
+          if Piece(PReportTreeObject(tvReports.Items[i].Data)^.ID, ':', 1) = ReportID then
+            begin
+              Found := True;
+              break;
+            end;
+      end;
+    Result := Found ;
+    AnIndex := i;
+  end;
+
+begin
+  IDColumn := 0;
+  case Notifications.Followup of
+    NF_IMAGING_RESULTS, NF_ABNORMAL_IMAGING_RESULTS, NF_IMAGING_RESULTS_AMENDED:
+      begin
+        if not FindReport(QT_IMAGING, AnIndex) then exit;
+        tvReports.Selected := tvReports.Items[AnIndex];
+        SelectID := 'i' + Piece(Notifications.AlertData, '~', 1) +
+          '-' + Piece(Notifications.AlertData, '~', 2);
+        IDColumn := 0;
+        if tvReports.Selected <> tvReports.Items[AnIndex] then
+          tvReports.Selected := tvReports.Items[AnIndex];
+      end;
+    NF_IMAGING_REQUEST_CHANGED:
+      begin
+        if not FindReport(QT_IMAGING, AnIndex) then exit;
+        tvReports.Selected := tvReports.Items[AnIndex];
+        SelectID := 'i' + Piece(Notifications.AlertData, '/', 2) +
+          '-' + Piece(Notifications.AlertData, '/', 3);
+        IDColumn := 0;
+        if tvReports.Selected <> tvReports.Items[AnIndex] then
+          tvReports.Selected := tvReports.Items[AnIndex];
+      end;
+    NF_STAT_RESULTS                  :
+      begin
+        if not FindReport(QT_IMAGING, AnIndex) then exit;
+        tvReports.Selected := tvReports.Items[AnIndex];
+        SelectID := 'i' + Piece(Notifications.AlertData, '~', 2) +
+          '-' + Piece(Piece(Notifications.AlertData, '~', 3), '@', 1);
+        IDColumn := 0;
+        if tvReports.Selected <> tvReports.Items[AnIndex] then
+          tvReports.Selected := tvReports.Items[AnIndex];
+      end;
+    NF_MAMMOGRAM_RESULTS            :
+      begin
+        if not FindReport('OR_R18', AnIndex) then exit;
+        tvReports.Selected := tvReports.Items[AnIndex];
+        SelectID := 'i' + Piece(Notifications.AlertData, '~', 1) +
+          '-' + Piece(Notifications.AlertData, '~', 2);
+        IDColumn := 8;
+        if tvReports.Selected <> tvReports.Items[AnIndex] then
+          tvReports.Selected := tvReports.Items[AnIndex];
+      end;
+    NF_ANATOMIC_PATHOLOGY_RESULTS    :
+      //OR_SP^Surgical Pathology
+      //OR_CY^Cytology
+      //OR_EM^Electron Microscopy
+      //OR_AU^Autopsy
+      begin
+        if Notifications.AlertData = '^1^^^0^0^0' then   //code snippet to handle the processing of v26 AP alerts in a v27 environment.
+          begin
+            if pnlRightMiddle.Visible then pnlRightMiddle.Visible := FALSE;
+            InfoBox('This alert was generated in a v26 environment as an informational alert and'
+            + CRLF + 'therefore cannot be processed as an action alert in a v27 environment.',
+            'Unable to Process as Action Alert', MB_OK or MB_ICONWARNING);
+            memText.Text := 'Unable to Process as an Action Alert. In order to view the associated Anatomic Pathology report, please manually'
+            + CRLF + 'locate the appropriate report under the Anatomic Pathology section (also found under Laboratory, Clinical Reports).';
+            Notifications.Delete;
+            exit;
+          end;
+        tmpRptID := Piece(Notifications.AlertData, U, 1);
+        //if tmpRptID = 'CY' then tmpRptID := 'APR';
+        //if tmpRptID = 'EM' then tmpRptID := 'APR';
+        //if tmpRptID = 'SP' then tmpRptID := 'APR';
+        if not FindReport('OR_' + tmpRptID, AnIndex) then exit;
+        tvReports.Selected := tvReports.Items[AnIndex];
+        SelectID := Piece(Notifications.AlertData, U, 2);
+        if (tmpRptID = 'CY') or (tmpRptID = 'EM') or (tmpRptID = 'SP') then
+             IDColumn := 3;
+        //if      tmpRptID = 'APR' then IDColumn := 3
+        //else if tmpRptID = 'SP' then IDColumn := 3
+        //else if tmpRptID = 'EM' then IDColumn := 3
+        //else if tmpRptID = 'CY' then IDColumn := 3 ;
+        if tvReports.Selected <> tvReports.Items[AnIndex] then
+          tvReports.Selected := tvReports.Items[AnIndex];
+      end;
+    NF_PAP_SMEAR_RESULTS            :
+      begin
+        if not FindReport('OR_CY', AnIndex) then exit;
+        tvReports.Selected := tvReports.Items[AnIndex];
+        SelectID := Piece(Notifications.AlertData, U, 2);
+        IDColumn := 3;
+        if tvReports.Selected <> tvReports.Items[AnIndex] then
+          tvReports.Selected := tvReports.Items[AnIndex];
+      end;
+    else with tvReports do if Items.Count > 0 then Selected := Items[0];
+  end;
+  if tvReports.Selected <> nil then
+    begin
+      tvReportsClick(Self);
+      Application.ProcessMessages;
+      for j := 0 to lvReports.Items.Count - 1 do
+       begin
+         ListItem := lvReports.Items[j];
+         if ListItem.Subitems[IDColumn] = SelectID then
+           begin
+             lvReports.Selected := lvReports.Items[j];
+             break;
+           end;
+       end;
+      Notifications.Delete;
+    end;
+end;
+
+procedure TfrmReports.DisplayHeading(aRanges: string);
+var
+  x,x1,x2,y,z,DaysBack: string;
+  d1,d2: TFMDateTime;
+begin
+  with lblTitle do
+  begin
+    x := '';
+    if tvReports.Selected = nil then
+     tvReports.Selected := tvReports.Items.GetFirstNode;
+    if tvReports.Selected.Parent <> nil then
+      x := tvReports.Selected.Parent.Text + ' ' + tvReports.Selected.Text
+    else
+      x :=  tvReports.Selected.Text;
+      x1 := '';
+      x2 := '';
+    if uReportType <> 'M' then
+      begin
+        if CharAt(aRanges, 1) = 'd' then
+          begin
+            if length(piece(aRanges,';',2)) > 0 then
+              begin
+                x2 := '  Max/site:' + piece(aRanges,';',2);
+                aRanges := piece(aRanges,';',1);
+              end;
+            DaysBack := Copy(aRanges, 2, Length(aRanges));
+            if DaysBack = '0' then
+              aRanges := 'T' + ';T'
+            else
+              aRanges := 'T-' + DaysBack + ';T';
+          end;
+        if length(piece(aRanges,';',1)) > 0 then
+          if uReportType <> 'G' then    // graphs don't display date ranges here
+          begin
+            d1 := ValidDateTimeStr(piece(aRanges,';',1),'');
+            d2 := ValidDateTimeStr(piece(aRanges,';',2),'');
+            y := FormatFMDateTime('mmm dd,yyyy',d1);
+            if Copy(y,8,2) = '18' then y := 'EARLIEST RESULT';
+            z := FormatFMDateTime('mmm dd,yyyy',d2);
+            x1 := ' [From: ' + y + ' to ' + z + ']';
+          end;
+        if length(piece(aRanges,';',3)) > 0 then
+          x2 := '  Max/site:' + piece(aRanges,';',3);
+        case uQualifierType of
+          QT_DATERANGE:
+              x := x + x1;
+          QT_HSCOMPONENT:
+              x := x + x1 + x2;
+          QT_HSWPCOMPONENT:
+              x := x + x1 + x2;
+          QT_IMAGING:
+              x := x + x1 + x2;
+        end;
+      end;
+    if piece(uRemoteType, '^', 9) = '1' then x := x + ' <<ONLY REMOTE DOD DATA INCLUDED IN REPORT>>';
+    Caption := x;
+  end;
+  lvReports.Caption := x;
+end;
+
+procedure TfrmReports.FormShow(Sender: TObject);
+begin
+  inherited;
+  if RemoteSites.SiteList.Count > 0 then
+  begin
+    case uQualifierType of
+      QT_HSWPCOMPONENT:;
+      QT_HSCOMPONENT:;
+      QT_IMAGING:;
+      QT_PROCEDURES:;
+      QT_NUTR:;
+    else
+      ShowTabControl;
+    end;
+  end;
+end;
+
+procedure TfrmReports.Timer1Timer(Sender: TObject);
+var
+  i,j,fail: integer;
+  r0,aSite: String;
+  aHDR, aID, aRet: String;
+begin
+  inherited;
+  with RemoteSites.SiteList do
+   begin
+    for i := 0 to Count - 1 do
+      if TRemoteSite(Items[i]).Selected then
+       begin
+        if Length(TRemoteSite(Items[i]).RemoteHandle) > 0 then
+          begin
+            r0 := GetRemoteStatus(TRemoteSite(Items[i]).RemoteHandle);
+            aSite := TRemoteSite(Items[i]).SiteName;
+            TRemoteSite(Items[i]).QueryStatus := r0; //r0='1^Done' if no errors
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, piece(r0,'^',2));
+            if piece(r0,'^',1) = '1' then
+              begin
+                aHDR := piece(TRemoteSite(Items[i]).CurrentReportQuery, '^', 13);
+                aID := piece(piece(TRemoteSite(Items[i]).CurrentReportQuery, '^', 2),':',1);
+                if aHDR = '1' then
+                  begin
+                    ModifyHDRData(aRet, TRemoteSite(Items[i]).RemoteHandle ,aID);
+                  end;
+                GetRemoteData(TRemoteSite(Items[i]).Data, TRemoteSite(Items[i]).RemoteHandle,Items[i]);
+                RemoteReports.Add(TRemoteSite(Items[i]).CurrentReportQuery,
+                  TRemoteSite(Items[i]).RemoteHandle);
+                TRemoteSite(Items[i]).RemoteHandle := '';
+                TabControl1.OnChange(nil);
+                if (length(piece(uHState,';',2)) > 0) then
+                  begin
+                    uRemoteReportData.Clear;
+                    QuickCopy(TRemoteSite(Items[i]).Data,uRemoteReportData);
+                    fail := 0;
+                    if uRemoteReportData.Count > 0 then
+                      begin
+                        if uRemoteReportData[0] = 'Report not available at this time.' then
+                          begin
+                            fail := 1;
+                            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Report not available');
+                          end;
+                        if piece(uRemoteReportData[0],'^',1) = '-1' then
+                          begin
+                            fail := 1;
+                            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication failure');
+                          end;
+                        if fail = 0 then
+                          LoadListView(uRemoteReportData);
+                      end;
+                  end;
+              end
+            else
+              begin
+                uRemoteCount := uRemoteCount + 1;
+                if uRemoteCount > 90 then
+                  begin
+                    TRemoteSite(Items[i]).RemoteHandle := '';
+                    TRemoteSite(Items[i]).QueryStatus := '-1^Timed out';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Timed out');
+                    StatusText('');
+                    TabControl1.OnChange(nil);
+                  end
+                else
+                  StatusText('Retrieving reports from '
+                + TRemoteSite(Items[i]).SiteName + '...');
+              end;
+            Timer1.Interval := 10000;
+          end;
+       end;
+     if Timer1.Enabled = True then
+       begin
+         j := 0;
+         for i := 0 to Count -1 do
+           begin
+             if Length(TRemoteSite(Items[i]).RemoteHandle) > 0 then
+               begin
+                 j := 1;
+                 break;
+               end;
+           end;
+         if j = 0 then  //Shutdown timer if all sites have been processed
+           begin
+             Timer1.Enabled := False;
+             StatusText('');
+           end;
+         j := 0;
+         for i := 0 to Count -1 do
+           if TRemoteSite(Items[i]).Selected = true then
+             begin
+               j := 1;
+               break;
+             end;
+         if j = 0 then  //Shutdown timer if user has de-selected all sites
+           begin
+             Timer1.Enabled := False;
+             StatusText('');
+             TabControl1.OnChange(nil);
+           end;
+       end;
+   end;
+end;
+
+procedure TfrmReports.TabControl1Change(Sender: TObject);
+var
+  aStatus,aSite: string;
+  hook: Boolean;
+  i: integer;
+begin
+  inherited;
+  if (uQualifiertype <> 6) or (length(piece(uHState,';',2)) < 1) then
+    memText.Lines.Clear;
+  lstHeaders.Items.Clear;
+  uHTMLDoc := '';
+  if WebBrowser1.visible = true then WebBrowser1.Navigate('about:blank');
+  if (length(piece(uHState,';',2)) = 0) then with TabControl1 do
+    begin
+      memText.Lines.BeginUpdate;
+      if TabIndex > 0 then
+        begin
+          aStatus := TRemoteSite(Tabs.Objects[TabIndex]).QueryStatus;
+          aSite := TRemoteSite(Tabs.Objects[TabIndex]).SiteName;
+          if aStatus = '1^Done' then
+            begin
+              if Piece(TRemoteSite(Tabs.Objects[TabIndex]).Data[0],'^',1) = '[HIDDEN TEXT]' then
+                begin
+                  lstHeaders.Clear;
+                  hook := false;
+                  for i := 1 to TRemoteSite(Tabs.Objects[TabIndex]).Data.Count - 1 do
+                    if hook = true then
+                        memText.Lines.Add(TRemoteSite(Tabs.Objects[TabIndex]).Data[i])
+                    else
+                      begin
+                        lstHeaders.Items.Add(MixedCase(TRemoteSite(Tabs.Objects[TabIndex]).Data[i]));
+                        if Piece(TRemoteSite(Tabs.Objects[TabIndex]).Data[i],'^',1) = '[REPORT TEXT]' then
+                          hook := true;
+                      end;
+                end
+              else
+                QuickCopy(TRemoteSite(Tabs.Objects[TabIndex]).Data,memText);
+              memText.Lines.Insert(0,' ');
+              memText.Lines.Delete(0);
+            end;
+          if Piece(aStatus,'^',1) = '-1' then
+            begin
+              memText.Lines.Add('Remote data transmission error: ' + Piece(aStatus,'^',2));
+            end;
+          if Piece(aStatus,'^',1) = '0' then
+            memText.Lines.Add('Retrieving data... ' + Piece(aStatus,'^',2));
+          if Piece(aStatus,'^',1) = '' then
+            memText.Lines.Add(uReportInstruction);
+        end
+      else
+        if uLocalReportData.Count > 0 then
+          begin
+            if Piece(uLocalReportData[0],'^',1) = '[HIDDEN TEXT]' then
+            begin
+              lstHeaders.Clear;
+              hook := false;
+              for i := 1 to uLocalReportData.Count - 1 do
+                if hook = true then
+                  memText.Lines.Add(uLocalReportData[i])
+                else
+                  begin
+                    lstHeaders.Items.Add(MixedCase(uLocalReportData[i]));
+                    if Piece(uLocalReportData[i],'^',1) = '[REPORT TEXT]' then
+                      hook := true;
+                  end;
+            end
+              else
+                if tvReports.Selected.Text = 'Imaging (local only)' then 
+                   memText.Lines.clear
+                else
+                   QuickCopy(uLocalReportData,memText);
+            memText.Lines.Insert(0,' ');
+            memText.Lines.Delete(0);
+          end
+        else
+          memText.Lines.Add(uReportInstruction);
+      if WebBrowser1.Visible = true then
+        begin
+          if uReportType = 'R' then
+            uHTMLDoc := HTML_PRE + memText.Lines.Text + HTML_POST
+          else
+            uHTMLDoc := uHTMLPatient + memText.Lines.Text;
+          WebBrowser1.Navigate('about:blank');
+        end;
+      memText.Lines.EndUpdate;
+    end;
+end;
+
+procedure TfrmReports.GoRemote(Dest: TStringList; AItem: string; AQualifier, ARpc: string; AHSTag: string; AHDR: string; aFHIE: string);
+var
+  i, j: integer;
+  LocalHandle, Query, Report, Seq: string;
+  HSType, DaysBack, ExamID, MaxOcc: string;
+  Alpha, Omega, Trans: double;
+begin
+  HSType := '';
+  DaysBack := '';
+  ExamID := '';
+  Alpha := 0;
+  Omega := 0;
+  Seq := '';
+  if AHDR = '1' then
+    begin
+      if HDRActive = '0' then
+        begin
+          InfoBox('The HDR is currently inactive.' + CRLF + 'Unable to retrieve HDR data at this time.', 'HDR Error', MB_OK);
+          Exit;
+        end;
+      InfoBox('You must use VistaWeb to view this report.', 'Use VistaWeb for HDR data', MB_OK);
+      if (Piece(AItem, ':', 1) = 'OR_VWAL') or (Piece(AItem, ':', 1) = 'OR_VWRX') then
+        AQualifier := 'T-50000;T+50000;99999';
+      if (Piece(AItem, ':', 1) = 'OR_VWVS') and (CharAt(AQualifier, 1) = ';') then
+        AQualifier := 'T-50000;T+50000;99999';
+    end;
+  if CharAt(AQualifier, 1) = 'd' then
+    begin
+      DaysBack := Copy(AQualifier, 2, Length(AQualifier));
+      AQualifier := ('T-' + Piece(DaysBack,';',1) + ';T;' + Pieces(AQualifier,';',2,3));
+      DaysBack := '';
+    end;
+  if CharAt(AQualifier, 1) = 'T' then
+    begin
+      if Piece(AQualifier,';',1) = 'T-0' then SetPiece(AQualifier,';',1,'T');
+      if (Piece(Aqualifier,';',1) = 'T') and (Piece(Aqualifier,';',2) = 'T')
+        then SetPiece(AQualifier,';',2,'T+1');
+      Alpha := StrToFMDateTime(Piece(AQualifier,';',1));
+      Omega := StrToFMDateTime(Piece(AQualifier,';',2));
+      if Alpha > Omega then
+        begin
+          Trans := Omega;
+          Omega := Alpha;
+          Alpha := Trans;
+        end;
+      MaxOcc := Piece(AQualifier,';',3);
+      SetPiece(AHSTag,';',4,MaxOcc);
+    end;
+  if CharAt(AQualifier, 1) = 'h' then HSType   := Copy(AQualifier, 2, Length(AQualifier));
+  if CharAt(AQualifier, 1) = 'i' then ExamID   := Copy(AQualifier, 2, Length(AQualifier));
+  with RemoteSites.SiteList do for i := 0 to Count - 1 do
+    begin
+    if (AHDR='1') and (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') then
+      begin
+        TRemoteSite(Items[i]).Selected := true;
+        frmFrame.lstCIRNLocations.Checked[i+2] := true;
+      end;
+    if TRemoteSite(Items[i]).Selected then
+      begin
+        TRemoteSite(Items[i]).ReportClear;
+        if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') and not(AHDR = '1') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TRemoteSite(Items[i]).RemoteHandle := '';
+            TRemoteSite(Items[i]).QueryStatus := '1^Done';
+            if uQualifierType = 6 then seq := '1^';
+            TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+            if uQualifierType = 6 then seq := '2^';
+            TRemoteSite(Items[i]).Data.Add(seq + '<No HDR Data Included> - Use "HDR Reports" menu for HDR Data.');
+            TabControl1.OnChange(nil);
+            if (length(piece(uHState,';',2)) > 0) then
+              LoadListView(TRemoteSite(Items[i]).Data);
+            continue;
+          end;
+        if (AHDR = '1') and not(LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200HD') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TRemoteSite(Items[i]).RemoteHandle := '';
+            TRemoteSite(Items[i]).QueryStatus := '1^Done';
+            if uQualifierType = 6 then seq := '1^';
+            TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+            if uQualifierType = 6 then seq := '2^';
+            TRemoteSite(Items[i]).Data.Add(seq + '<No HDR Data> This site is not a source for HDR Data.');
+            TabControl1.OnChange(nil);
+            if (length(piece(uHState,';',2)) > 0) then
+              LoadListView(TRemoteSite(Items[i]).Data);
+            continue;
+          end;
+        if (LeftStr(TRemoteSite(Items[i]).SiteID, 5) = '200') and not(aFHIE = '1') then
+          begin
+            TRemoteSite(Items[i]).QueryStatus := '1^Not Included';
+            UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'NOT INCLUDED');
+            TRemoteSite(Items[i]).RemoteHandle := '';
+            TRemoteSite(Items[i]).QueryStatus := '1^Done';
+            if uQualifierType = 6 then seq := '1^';
+            TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+            if uQualifierType = 6 then seq := '2^';
+            TRemoteSite(Items[i]).Data.Add(seq + '<No DOD Data> - Use "Dept. of Defense Reports" Menu to retrieve data from DOD.');
+            TabControl1.OnChange(nil);
+            if (length(piece(uHState,';',2)) > 0) then
+              LoadListView(TRemoteSite(Items[i]).Data);
+            continue;
+          end;
+        TRemoteSite(Items[i]).CurrentReportQuery := 'Report' + Patient.DFN + ';'
+          + Patient.ICN + '^' + AItem + '^^^' + ARpc + '^' + HSType +
+          '^' + DaysBack + '^' + ExamID + '^' + FloatToStr(Alpha) + '^' +
+          FloatToStr(Omega) + '^' + TRemoteSite(Items[i]).SiteID + '^' + AHSTag + '^' + AHDR;
+        LocalHandle := '';
+        Query := TRemoteSite(Items[i]).CurrentReportQuery;
+        for j := 0 to RemoteReports.Count - 1 do
+          begin
+            Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+            if Report = Query then
+              begin
+                LocalHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle;
+                break;
+              end;
+          end;
+        if Length(LocalHandle) > 1 then
+          with RemoteSites.SiteList do
+            begin
+              GetRemoteData(TRemoteSite(Items[i]).Data,LocalHandle,Items[i]);
+              TRemoteSite(Items[i]).RemoteHandle := '';
+              TRemoteSite(Items[i]).QueryStatus := '1^Done';
+              UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Done');
+              TabControl1.OnChange(nil);
+              if (length(piece(uHState,';',2)) > 0) then //and (chkText.Checked = false) then
+                LoadListView(TRemoteSite(Items[i]).Data);
+            end
+        else
+          begin
+            if uDirect = '1' then
+              begin
+                StatusText('Retrieving reports from ' + TRemoteSite(Items[i]).SiteName + '...');
+                TRemoteSite(Items[i]).QueryStatus := '1^Direct Call';
+                UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Direct Call');
+                DirectQuery(Dest, AItem, HSType, Daysback, ExamID, Alpha, Omega, TRemoteSite(Items[i]).SiteID, ARpc, AHSTag);
+                if Copy(Dest[0],1,2) = '-1' then
+                  begin
+                    TRemoteSite(Items[i]).QueryStatus := '-1^Communication error';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication error');
+                    if uQualifierType = 6 then seq := '1^';
+                    TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+                    if uQualifierType = 6 then seq := '2^';
+                    TRemoteSite(Items[i]).Data.Add(seq + '<ERROR>- Unable to communicate with Remote site');
+                    TabControl1.OnChange(nil);
+                    if (length(piece(uHState,';',2)) > 0) then
+                      LoadListView(TRemoteSite(Items[i]).Data);
+                  end
+                else
+                  begin
+                    QuickCopy(Dest,TRemoteSite(Items[i]).Data);
+                    TRemoteSite(Items[i]).RemoteHandle := '';
+                    TRemoteSite(Items[i]).QueryStatus := '1^Done';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'Done');
+                    TabControl1.OnChange(nil);
+                    if (length(piece(uHState,';',2)) > 0) then
+                      LoadListView(TRemoteSite(Items[i]).Data);
+                  end;
+                StatusText('');
+              end
+            else
+              begin
+                RemoteQuery(Dest, AItem, HSType, Daysback, ExamID, Alpha, Omega, TRemoteSite(Items[i]).SiteID, ARpc, AHSTag);
+                if Dest[0] = '' then
+                  begin
+                    TRemoteSite(Items[i]).QueryStatus := '-1^Communication error';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID,'Communication error');
+                    if uQualifierType = 6 then seq := '1^';
+                    TRemoteSite(Items[i]).Data.Add(seq + TRemoteSite(Items[i]).SiteName);
+                    if uQualifierType = 6 then seq := '2^';
+                    TRemoteSite(Items[i]).Data.Add(seq + '<ERROR>- Unable to communicate with Remote site');
+                    TabControl1.OnChange(nil);
+                    if (length(piece(uHState,';',2)) > 0) then
+                      LoadListView(TRemoteSite(Items[i]).Data);
+                  end
+                else
+                  begin
+                    TRemoteSite(Items[i]).RemoteHandle := Dest[0];
+                    TRemoteSite(Items[i]).QueryStatus := '0^initialization...';
+                    UpdateRemoteStatus(TRemoteSite(Items[i]).SiteID, 'initialization');
+                    Timer1.Enabled := True;
+                    StatusText('Retrieving reports from ' + TRemoteSite(Items[i]).SiteName + '...');
+                  end;
+              end;
+          end;
+      end;
+    end;
+end;
+
+procedure TfrmReports.FormDestroy(Sender: TObject);
+var
+  i: integer;
+  aColChange: string;
+begin
+  inherited;
+  if length(uColChange) > 0 then
+    begin
+      aColChange := '';
+      for i := 0 to lvReports.Columns.Count - 1 do
+        aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ',';
+      if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then
+        SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange);
+      uColChange := '';
+    end;
+  RemoteQueryAbortAll;
+  RowObjects.Free;
+  uHSComponents.Free;
+  uHSAll.Free;
+  uLocalReportData.Free;
+  uRemoteReportData.Free;
+  uColumns.Free;
+  uTreeStrings.Free;
+  uEmptyImageList.Free;
+  uECSReport.Free;
+  if GraphForm <> nil then GraphForm.Release;
+end;
+
+procedure TfrmReports.lstHeadersClick(Sender: TObject);
+var
+  Current, Desired: integer;
+begin
+  inherited;
+  if uFrozen = True then
+    begin
+      memo1.visible := False;
+      memo1.TabStop := False;
+    end;
+  Current := SendMessage(memText.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
+  Desired := lstHeaders.ItemIEN;
+  SendMessage(memText.Handle, EM_LINESCROLL, 0, Desired - Current - 1);
+end;
+
+procedure TfrmReports.Splitter1CanResize(Sender: TObject;
+  var NewSize: Integer; var Accept: Boolean);
+begin
+  inherited;
+  if NewSize < 50 then
+    Newsize := 50;
+end;
+
+procedure TfrmReports.WebBrowser1DocumentComplete(Sender: TObject;
+  const pDisp: IDispatch; var URL: OleVariant);
+var
+  WebDoc: IHtmlDocument2;
+  v: variant;
+begin
+  inherited;
+  if uHTMLDoc = '' then Exit;
+  if not(uReportType = 'H') then Exit; //this can be removed if & when browser replaces memtext control
+  if not Assigned(WebBrowser1.Document) then Exit;
+  WebDoc := WebBrowser1.Document as IHtmlDocument2;
+  v := VarArrayCreate([0, 0], varVariant);
+  v[0] := uHTMLDoc;
+  WebDoc.write(PSafeArray(TVarData(v).VArray));
+  WebDoc.close;
+  //uHTMLDoc := '';
+end;
+
+procedure TfrmReports.sptHorzRightCanResize(Sender: TObject;
+  var NewSize: Integer; var Accept: Boolean);
+begin
+  inherited;
+    if NewSize < 50 then
+    Newsize := 50;
+end;
+
+procedure TfrmReports.lstQualifierDrawItem(Control: TWinControl;
+  Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  x: string;
+  AnImage: TBitMap;
+const
+  STD_DATE = 'MMM DD,YY@HH:NN';
+begin
+  inherited;
+  AnImage := TBitMap.Create;
+  try
+    with (Control as TORListBox).Canvas do  { draw on control canvas, not on the form }
+      begin
+        x := (Control as TORListBox).Items[Index];
+        FillRect(Rect);       { clear the rectangle }
+        if uQualifierType = QT_IMAGING then   // moved position of assignment in all case branches
+          begin
+            AnImage.LoadFromResourceName(hInstance, 'BMP_IMAGEFLAG_1');
+            if Piece(x, U, 4) = 'Y' then
+              begin
+                BrushCopy(Bounds(Rect.Left, Rect.Top, AnImage.Width, AnImage.Height),
+                  AnImage, Bounds(0, 0, AnImage.Width, AnImage.Height), clRed); {render ImageFlag}
+              end;
+            TextOut(Rect.Left + AnImage.Width, Rect.Top, Piece(x, U, 2));
+            TextOut(Rect.Left + AnImage.Width + TextWidth(STD_DATE), Rect.Top, Piece(x, U, 3));
+          end
+        else
+          begin
+            TextOut(Rect.Left, Rect.Top, Piece(x, U, 2));
+            TextOut(Rect.Left + TextWidth(STD_DATE), Rect.Top, Piece(x, U, 3));
+          end;
+      end;
+  finally
+    AnImage.Free;
+  end;
+end;
+
+procedure TfrmReports.tvReportsClick(Sender: TObject);
+var
+  i,j: integer;
+  ListItem: TListItem;
+  aHeading, aReportType, aRPC, aQualifier, aStartTime, aStopTime, aMax, aRptCode, aRemote, aCategory, aSortOrder, aDaysBack, x: string;
+  aIFN: integer;
+  aID, aHSTag, aRadParam, aColChange, aDirect, aHDR, aFHIE, aFHIEONLY, aQualifierID: string;
+  CurrentParentNode, CurrentNode: TTreeNode;
+begin
+  inherited;
+  lvReports.Hint := 'To sort, click on column headers|';
+  tvReports.TopItem := tvReports.Selected;
+  uRemoteCount := 0;
+  uReportInstruction := '';
+  aHeading    :=  PReportTreeObject(tvReports.Selected.Data)^.Heading;
+  aRemote     :=  PReportTreeObject(tvReports.Selected.Data)^.Remote;
+  aReportType :=  PReportTreeObject(tvReports.Selected.Data)^.RptType;
+  aQualifier  :=  PReportTreeObject(tvReports.Selected.Data)^.Qualifier;
+  aID         :=  PReportTreeObject(tvReports.Selected.Data)^.ID;
+  aRPC        :=  PReportTreeObject(tvReports.Selected.Data)^.RPCName;
+  aHSTag      :=  PReportTreeObject(tvReports.Selected.Data)^.HSTag;
+  aCategory   :=  PReportTreeObject(tvReports.Selected.Data)^.Category;
+  aSortOrder  :=  PReportTreeObject(tvReports.Selected.Data)^.SortOrder;
+  aDaysBack   :=  PReportTreeObject(tvReports.Selected.Data)^.MaxDaysBack;
+  aIFN        :=  StrToIntDef(PReportTreeObject(tvReports.Selected.Data)^.IFN,0);
+  aDirect     :=  PReportTreeObject(tvReports.Selected.Data)^.Direct;
+  aHDR        :=  PReportTreeObject(tvReports.Selected.Data)^.HDR;
+  aFHIE       :=  PReportTreeObject(tvReports.Selected.Data)^.FHIE;
+  aFHIEONLY   :=  PReportTreeObject(tvReports.Selected.Data)^.FHIEONLY;
+  aStartTime  :=  Piece(aQualifier,';',1);
+  aStopTime   :=  Piece(aQualifier,';',2);
+  aMax        :=  Piece(aQualifier,';',3);
+  aRptCode    :=  Piece(aQualifier,';',4);
+  aQualifierID:= '';
+  if length(uColChange) > 0 then
+    begin
+      aColChange := '';
+      for i := 0 to lvReports.Columns.Count - 1 do
+        aColChange := aColChange + IntToStr(lvReports.Column[i].width) + ',';
+      if (Length(aColChange) > 0) and (aColChange <> piece(uColchange,'^',2)) then
+        SaveColumnSizes(piece(uColChange,'^',1) + '^' + aColChange);
+      uColChange := '';
+    end;
+  if (aReportType <> 'M') and (aRPC = '') and (CharAt(aID,1) = 'H') then
+    begin
+      aReportType :=  'R';
+      aRptCode    :=  LowerCase(CharAt(aID,1)) + Copy(aID, 2, Length(aID));
+      aID         :=  '1';
+      aRPC        :=  'ORWRP REPORT TEXT';
+      aHSTag      :=  '';
+    end;
+  if aReportType = '' then aReportType := 'R';
+  uReportRPC := aRPC;
+  uRptID := aID;
+  uDirect := aDirect;
+  uReportType := aReportType;
+  uQualifier := aQualifier;
+  uSortOrder := aSortOrder;
+  uRemoteType := aRemote + '^' + aReportType + '^' + IntToStr(aIFN) + '^' + aHeading + '^' + aRptCode + '^' + aDaysBack + '^' + aHDR + '^' + aFHIE + '^' + aFHIEONLY;
+  pnlRightTop.Height := lblTitle.Height;  // see below
+  RedrawSuspend(tvReports.Handle);
+  RedrawSuspend(memText.Handle);
+  uHState := aHSTag;
+  Timer1.Enabled := False;
+  TabControl1.Visible := false;
+  TabControl1.TabStop := false;
+  sptHorzRight.Visible := false;
+  lblProcTypeMsg.Visible := FALSE;
+  pnlRightMiddle.Visible := false;
+  pnlProcedures.Visible := FALSE;
+  if (aRemote = '1') or (aRemote = '2') then
+    if not(uReportType = 'V') then
+      if TabControl1.Tabs.Count > 1 then
+        begin
+          TabControl1.Visible := true;
+          TabControl1.TabStop := true;
+          pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+        end;
+  StatusText('');
+  uHTMLDoc := '';
+  WebBrowser1.Navigate('about:blank');
+  memText.Lines.Clear;
+  memText.Parent := pnlRightBottom;
+  memText.Align := alClient;
+  UpdatingLvReports := TRUE;    {lw added}
+  tvProcedures.Items.Clear;
+  UpdatingLvReports := FALSE;   {lw added}
+  lblProcTypeMsg.Visible := FALSE;
+  lvReports.SmallImages := uEmptyImageList;
+  imgLblImages.ComponentImageListChanged;
+  lvReports.Items.Clear;
+  lvReports.Columns.Clear;
+  uHSComponents.Clear;
+  DisplayHeading('');
+  if uReportType = 'H' then
+    begin
+      pnlRightMiddle.Visible := false;
+      pnlRightBottom.Visible := true;
+      WebBrowser1.Visible := true;
+      WebBrowser1.TabStop := true;
+      WebBrowser1.Navigate('about:blank');
+      WebBrowser1.BringToFront;
+      memText.Visible := false;
+      memText.TabStop := false;
+    end
+  else
+    if uReportType = 'V' then
+      begin
+        with lvReports do
+          begin
+            Columns.BeginUpdate;
+            ViewStyle := vsReport;
+            ColumnHeaders(uColumns, IntToStr(aIFN));
+            for i := 0 to uColumns.Count -1 do
+              begin
+                uNewColumn := Columns.Add;
+                uNewColumn.Caption := piece(uColumns.Strings[i],'^',1);
+                if length(uColChange) < 1 then uColChange := IntToStr(aIFN) + '^';
+                if piece(uColumns.Strings[i],'^',2) = '1' then
+                  begin
+                    uNewColumn.Width := 0;
+                    uColChange := uColChange + '0,';
+                  end
+                else
+                  if length(piece(uColumns.Strings[i],'^',10)) > 0 then
+                    begin
+                      uColChange := uColChange + piece(uColumns.Strings[i],'^',10) + ',';
+                      uNewColumn.Width := StrToInt(piece(uColumns.Strings[i],'^',10))
+                    end
+                  else
+                    uNewColumn.Width := ColumnHeaderWidth;  //ColumnTextWidth for width of text
+                if (i = 0) and (((aRemote <> '2') and (aRemote <> '1')) or ((TabControl1.Tabs.Count < 2) and (not (aHDR = '1')))) then
+                  uNewColumn.Width := 0;
+              end;
+            Columns.EndUpdate;
+          end;
+        pnlRightMiddle.Visible := true;
+        sptHorzRight.Visible := true;
+        WebBrowser1.Visible := false;
+        WebBrowser1.TabStop := false;
+        pnlRightBottom.Visible := true;
+        memText.Visible := true;
+        memText.TabStop := true;
+        memText.BringToFront;
+      end
+    else
+      begin
+        pnlRightMiddle.Visible := false;
+        sptHorzRight.Visible := false;
+        WebBrowser1.Visible := false;
+        WebBrowser1.TabStop := false;
+        pnlRightBottom.Visible := True;
+        memText.Visible := true;
+        memText.TabStop := true;
+        memText.BringToFront;
+      end;
+  uLocalReportData.Clear;
+  RowObjects.Clear;
+  uRemoteReportData.Clear;
+  lstHeaders.Visible := false;
+  lstHeaders.TabStop := false;
+  lblHeaders.Visible := false;
+  lstHeaders.Clear;
+  for i := 0 to RemoteSites.SiteList.Count - 1 do
+    TRemoteSite(RemoteSites.SiteList.Items[i]).ReportClear;
+  if uFrozen = True then
+    begin
+      memo1.visible := False;
+      memo1.TabStop := False;
+    end;
+  Screen.Cursor := crHourGlass;
+  if (GraphForm <> nil) and (aReportType <> 'G') then
+  begin
+    GraphForm.SendToBack;
+    GraphPanel(false);
+    GraphFormActive := false;
+  end;
+  if aReportType = 'G' then
+    Graph(aIFN)
+  else
+  if aReportType = 'M' then
+    begin
+      pnlLeftBottom.Visible := false;
+      splitter1.Visible := false;
+    end
+  else
+    begin
+     uQualifierType := StrToIntDef(aRptCode,0);
+      case uQualifierType of
+        QT_OTHER:
+          begin      //      = 0
+            memText.Lines.Clear;
+            If copy(aRptCode,1,2) = 'h0' then  //HS Adhoc
+              begin
+                if TabControl1.TabIndex > 0 then
+                  begin
+                    InfoBox('Adhoc report is not available for remote sites',
+                      'Information', MB_OK);
+                    TabControl1.TabIndex := 0;
+                  end;
+                with RemoteSites.SiteList do
+                for j := 0 to Count - 1 do
+                  begin
+                    TRemoteSite(RemoteSites.SiteList[j]).ReportClear;
+                    TRemoteSite(RemoteSites.SiteList[j]).LabClear;
+                  end;
+                uHTMLDoc := '';
+                if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');
+                ExecuteAdhoc1;  //Calls Adhoc form
+                if uLocalReportData.Count < 1 then
+                  uReportInstruction := '<No Report Available>'
+                else
+                  begin
+                    if TabControl1.TabIndex < 1 then
+                      QuickCopy(uLocalReportData,memText);
+                    if WebBrowser1.Visible = true then
+                      begin
+                        if uReportType = 'R' then
+                          uHTMLDoc := HTML_PRE + uLocalReportData.Text + HTML_POST
+                        else
+                          uHTMLDoc := uHTMLPatient + uLocalReportData.Text;
+                        WebBrowser1.Navigate('about:blank');
+                      end;
+                  end;
+                TabControl1.OnChange(nil);
+              end
+            else
+              begin
+                pnlLeftBottom.Visible := false;
+                splitter1.Visible := false;
+                StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+                GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
+                uReportInstruction := #13#10 + 'Retrieving data...';
+                TabControl1.OnChange(nil);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  begin
+                    LoadReportText(uLocalReportData, aID, aRptCode, aRPC, uHState);
+                    QuickCopy(uLocalReportData, memText);
+                  end;
+                if uLocalReportData.Count > 0 then
+                    TabControl1.OnChange(nil);
+                StatusText('');
+              end;
+          end;
+        QT_HSTYPE:
+          begin      //      = 1
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+          end;
+        QT_DATERANGE:
+          begin      //      = 2
+
+            ListReportDateRanges(lstQualifier.Items);
+              if lstQualifier.ItemID = '' then
+                begin
+                  lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                  lvReports.SmallImages := uEmptyImageList;
+                  imgLblImages.ComponentImageListChanged;
+                  lvReports.Items.Clear;
+                  lstQualifierClick(self);
+                end
+              else
+                lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+
+            lblQualifier.Caption := 'Date Range';
+            pnlLeftBottom.Visible := true;
+            splitter1.Visible := true;
+          end;
+        QT_IMAGING:
+          begin      //      = 3
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            ListImagingExams(uLocalReportData);
+            aRadParam := ImagingParams;
+            uQualifier := StringReplace(aRadParam, '^', ';', [rfReplaceAll]);
+            with lvReports do
+              begin
+                Items.BeginUpdate;
+                ViewStyle := vsReport;
+                SmallImages := dmodShared.imgImages;
+                imgLblImages.ComponentImageListChanged;
+                CurrentParentNode := nil;
+                CurrentNode := nil;
+                for i := 0 to uLocalReportData.Count - 1 do
+                  begin
+                    ListItem := Items.Add;
+                    ListItem.Caption := piece(piece(uLocalReportData[i],'^',1),';',1);
+                    if uColumns.Count > 1 then
+                      begin
+                        for j := 2 to uColumns.Count do
+                          ListItem.SubItems.Add(piece(uLocalReportData[i],'^',j));
+                          // if pieces are (added to/removed from) return string, PLEASE UPDATE THIS!!  (RV)
+                          if Piece(uLocalReportData[i], U, 9) = 'Y' then
+                            ListItem.SubItemImages[1] := IMG_1_IMAGE
+                          else
+                            ListItem.SubItemImages[1] := IMG_NO_IMAGES;
+                      end;
+                    LoadProceduresTreeView(uLocalReportData[i], CurrentParentNode, CurrentNode);
+                    if CurrentNode <> nil then
+                       PProcTreeObj(CurrentNode.Data)^.Associate := lvReports.Items.IndexOf(ListItem);
+                  end;
+                if tvProcedures.Items.Count > 0 then
+                   tvProcedures.Selected := tvProcedures.Items.GetFirstNode;
+                lblProcTypeMsg.Visible := TRUE;
+                pnlRightTop.Height := lblTitle.Height + lblProcTypeMsg.Height;
+                pnlLeftBottom.Visible := FALSE;
+                pnlProcedures.Visible := TRUE;
+                Splitter1.Visible := True;
+                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
+                Items.EndUpdate;
+                tvProcedures.TopItem := tvProcedures.Selected;
+              end;
+            if TabControl1.TabIndex > 0 then TabControl1.TabIndex := 0;
+            if uLocalReportData.Count > 0
+              then x := #13#10 + 'Select an imaging exam...'
+              else x := #13#10 + 'No imaging reports found...';
+            uReportInstruction := PChar(x);
+            memText.Lines.Add(uReportInstruction);
+            if WebBrowser1.Visible = true then
+              begin
+                uHTMLDoc := HTML_PRE + uReportInstruction + HTML_POST;
+                WebBrowser1.Navigate('about:blank');
+              end;
+          end;
+        QT_NUTR:
+          begin      //      = 4
+            lblQualifier.Caption := 'Nutritional Assessments';
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            ListNutrAssessments(uLocalReportData);
+            with lvReports do
+              begin
+                Items.BeginUpdate;
+                ViewStyle := vsReport;
+                for i := 0 to uLocalReportData.Count - 1 do
+                  begin
+                    ListItem := Items.Add;
+                    ListItem.Caption := piece(piece(uLocalReportData[i],'^',1),';',1);
+                    if uColumns.Count > 1 then
+                      for j := 2 to uColumns.Count do
+                        ListItem.SubItems.Add(piece(uLocalReportData[i],'^',j));
+                  end;
+                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
+                Items.EndUpdate;
+              end;
+            if TabControl1.TabIndex > 0 then TabControl1.TabIndex := 0;
+            if uLocalReportData.Count > 0
+              then x := #13#10 + 'Select an assessment date...'
+              else x := #13#10 + 'No nutritional assessments found...';
+            uReportInstruction := PChar(x);
+            memText.Lines.Add(uReportInstruction);
+            if WebBrowser1.Visible = true then
+              begin
+                uHTMLDoc := HTML_PRE + uReportInstruction + HTML_POST;
+                WebBrowser1.Navigate('about:blank');
+              end;
+          end;
+        QT_HSCOMPONENT:
+          begin      //      = 5
+            if Notifications.AlertData <> '' then
+              pnlRightMiddle.Height := 75
+            else
+              pnlRightMiddle.Height := pnlRight.Height - (pnlRight.Height div 2);
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+            uReportInstruction := #13#10 + 'Retrieving data...';
+            lvReports.SmallImages := uEmptyImageList;
+            imgLblImages.ComponentImageListChanged;
+            lvReports.Items.Clear;
+            RowObjects.Clear;
+            memText.Lines.Clear;
+            if (length(piece(aHSTag,';',2)) > 0) then
+              begin
+                if aCategory <> '0' then
+                  begin
+                    ListReportDateRanges(lstQualifier.Items);
+                    aQualifierID := lstQualifier.ItemID;
+                    if aQualifierID = '' then
+                      begin
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      begin
+                        GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end;
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    if not (aRemote = '2' ) then
+                      GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                    if not(piece(uRemoteType, '^', 9) = '1') then
+                      begin
+                        LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState);
+                        LoadListView(uLocalReportData);
+                      end;
+                  end;
+              end
+            else
+              begin
+                if (aRemote = '1') or (aRemote = '2') then
+                  if TabControl1.Tabs.Count > 1 then
+                    ShowTabControl;
+                sptHorzRight.Visible := false;
+                pnlRightMiddle.Visible := false;
+                GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState);
+                if uLocalReportData.Count < 1 then
+                  uReportInstruction := '<No Report Available>'
+                else
+                  begin
+                    if TabControl1.TabIndex < 1 then
+                      QuickCopy(uLocalReportData,memText);
+                  end;
+                TabControl1.OnChange(nil);
+                if aCategory <> '0' then
+                  begin
+                    ListReportDateRanges(lstQualifier.Items);
+                    if lstQualifier.ItemID = '' then
+                      begin
+                        lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    if uLocalReportData.Count < 1 then
+                      begin
+                        uReportInstruction := '<No Report Available>';
+                        memText.Lines.Add(uReportInstruction);
+                      end
+                    else
+                      begin
+                        QuickCopy(uLocalReportData,memText);
+                        TabControl1.OnChange(nil);
+                      end;
+                  end;
+              end;
+            StatusText('');
+          end;
+        QT_HSWPCOMPONENT:
+          begin      //      = 6
+            if Notifications.AlertData <> '' then
+              pnlRightMiddle.Height := 75
+            else
+              pnlRightMiddle.Height := pnlRight.Height - (pnlRight.Height div 2);
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+            uReportInstruction := #13#10 + 'Retrieving data...';
+            TabControl1.OnChange(nil);
+            RowObjects.Clear;
+            memText.Lines.Clear;
+            lvReports.SmallImages := uEmptyImageList;
+            imgLblImages.ComponentImageListChanged;
+            lvReports.Items.Clear;
+            if (length(piece(aHSTag,';',2)) > 0) then
+              begin
+                if aCategory <> '0' then
+                  begin
+                    ListReportDateRanges(lstQualifier.Items);
+                    aQualifierID := lstQualifier.ItemID;
+                    if aQualifierID = '' then
+                      begin
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      begin
+                        GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                        if aHDR = '1' then
+                          lstQualifier.ItemIndex := lstQualifier.Items.Add('T-50000' + ';' + 'T+50000' + '^' + 'T-50000' + ' to ' + 'T+50000')
+                        else
+                          if length(aStartTime) > 0 then lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end;
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                    if not (aRemote = '2' ) and (not(piece(uRemoteType, '^', 9) = '1')) then
+                      begin
+                        LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState);
+                        LoadListView(uLocalReportData);
+                      end;
+                  end;
+              end
+            else
+              begin
+                if (aRemote = '1') or (aRemote = '2') then
+                  ShowTabControl;
+                sptHorzRight.Visible := false;
+                pnlRightMiddle.Visible := false;
+                GoRemote(uRemoteReportData, aID, aQualifier, aRPC, uHState, aHDR, aFHIE);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  LoadReportText(uLocalReportData, aID, aQualifier, aRPC, uHState);
+                if uLocalReportData.Count < 1 then
+                  uReportInstruction := '<No Report Available>'
+                else
+                  begin
+                    if TabControl1.TabIndex < 1 then
+                      QuickCopy(uLocalReportData,memText);
+                  end;
+                TabControl1.OnChange(nil);
+                if aCategory <> '0' then
+                  begin
+
+                    ListReportDateRanges(lstQualifier.Items);
+                    if lstQualifier.ItemID = '' then
+                      begin
+                        lstQualifier.ItemIndex := lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+                        lstQualifierClick(self);
+                      end
+                    else
+                      lstQualifier.Items.Add(aStartTime + ';' + aStopTime + '^' + aStartTime + ' to ' + aStopTime);
+
+                    lblQualifier.Caption := 'Date Range';
+                    pnlLeftBottom.Visible := true;
+                    splitter1.Visible := true;
+                  end
+                else
+                  begin
+                    LoadListView(uLocalReportData);
+                  end;
+              end;
+            StatusText('');
+          end;
+        QT_PROCEDURES:
+          begin      //      = 19
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            ListProcedures(uLocalReportData);
+            with lvReports do
+              begin
+                Items.BeginUpdate;
+                ViewStyle := vsReport;
+                for i := 0 to uLocalReportData.Count - 1 do
+                  begin
+                    ListItem := Items.Add;
+                    ListItem.Caption := piece(piece(uLocalReportData[i],'^',1),';',1);
+                    if uColumns.Count > 1 then
+                      for j := 2 to uColumns.Count do
+                        ListItem.SubItems.Add(piece(uLocalReportData[i],'^',j));
+                  end;
+                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
+                Items.EndUpdate;
+              end;
+            if uLocalReportData.Count > 0
+              then x := #13#10 + 'Select a procedure...'
+              else x := #13#10 + 'No procedures found...';
+            uReportInstruction := PChar(x);
+            if WebBrowser1.Visible = true then
+              begin
+                uHTMLDoc := HTML_PRE + uReportInstruction + HTML_POST;
+                WebBrowser1.Navigate('about:blank');
+              end;
+            if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');
+          end;
+        QT_SURGERY:
+          begin      //      = 28
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            ListSurgeryReports(uLocalReportData);
+            with lvReports do
+              begin
+                Items.BeginUpdate;
+                ViewStyle := vsReport;
+                for i := 0 to uLocalReportData.Count - 1 do
+                  begin
+                    ListItem := Items.Add;
+                    ListItem.Caption := piece(piece(uLocalReportData[i],'^',1),';',1);
+                    if uColumns.Count > 1 then
+                      for j := 2 to uColumns.Count do
+                        ListItem.SubItems.Add(piece(uLocalReportData[i],'^',j));
+                  end;
+                if lvReports.Columns.Count > 0 then lvReports.Columns[1].Width := 0;
+                Items.EndUpdate;
+              end;
+            if uLocalReportData.Count > 0
+              then x := #13#10 + 'Select a surgery case...'
+              else x := #13#10 + 'No surgery cases found...';
+            uReportInstruction := PChar(x);
+            memText.Lines.Add(uReportInstruction);
+            uHTMLDoc := HTML_PRE + uReportInstruction + HTML_POST;
+            if WebBrowser1.Visible = true then WebBrowser1.Navigate('about:blank');
+          end;
+        else
+          begin      //      = ?
+            uQualifierType := QT_OTHER;
+            pnlLeftBottom.Visible := false;
+            splitter1.Visible := false;
+            StatusText('Retrieving ' + tvReports.Selected.Text + '...');
+            GoRemote(uRemoteReportData, aID, aRptCode, aRPC, uHState, aHDR, aFHIE);
+            uReportInstruction := #13#10 + 'Retrieving data...';
+            TabControl1.OnChange(nil);
+            //LoadReportText(uLocalReportData, aID, aRptCode, aRPC, uHState);
+            if not(piece(uRemoteType, '^', 9) = '1') then
+              LoadReportText(uLocalReportData, aID, '', aRPC, uHState);
+            if uLocalReportData.Count < 1 then
+              uReportInstruction := '<No Report Available>'
+            else
+              begin
+                if TabControl1.TabIndex < 1 then
+                  QuickCopy(uLocalReportData,memText);
+              end;
+            TabControl1.OnChange(nil);
+            StatusText('');
+          end;
+        lstQualifier.Caption := lblQualifier.Caption;
+      end;
+    end;
+  if not (aHDR = '1') then
+    if aCategory <> '0' then
+        DisplayHeading(uQualifier)
+    else
+      DisplayHeading('');
+
+  SendMessage(tvReports.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+  RedrawActivate(tvReports.Handle);
+  RedrawActivate(memText.Handle);
+  if WebBrowser1.Visible = true then
+    begin
+      WebBrowser1.Navigate('about:blank');
+      WebBrowser1.BringToFront;
+    end
+  else if not GraphFormActive then
+    begin
+      memText.Visible := true;
+      memText.TabStop := true;
+      memText.BringToFront;
+    end
+  else
+    begin
+      GraphPanel(true);
+      with GraphForm do
+      begin
+        lstDateRange.Items := cboDateRange.Items;
+        lstDateRange.ItemIndex := cboDateRange.ItemIndex;
+        ViewSelections;
+        BringToFront;
+      end;
+    end;
+  lvReports.Columns.BeginUpdate;
+  lvReports.Columns.EndUpdate;
+  Screen.Cursor := crDefault;
+end;
+
+procedure TfrmReports.lvReportsColumnClick(Sender: TObject;
+  Column: TListColumn);
+var
+  ClickedColumn: Integer;
+  a1, a2: integer;
+  s,s1,s2: string;
+begin
+  inherited;
+  a1 := StrToIntDef(piece(uSortOrder,':',1),0) - 1;
+  a2 := StrToIntDef(piece(uSortOrder,':',2),0) - 1;
+  ClickedColumn := Column.Index;
+  ColumnToSort := Column.Index;
+  SortIdx1 := StrToIntDef(piece(uColumns[ColumnToSort],'^',9),0);
+  SortIdx2 := 0;
+  SortIdx3 := 0;
+  if a1 > -1 then SortIdx2 := StrToIntDef(piece(uColumns[a1],'^',9),0);
+  if a2 > -1 then SortIdx3 := StrToIntDef(piece(uColumns[a2],'^',9),0);
+  if a1 = ColumnToSort then
+    begin
+      SortIdx2 := SortIdx3;
+      SortIdx3 := 0;
+    end;
+  if a2 = ColumnToSort then
+      SortIdx3 := 0;
+  if ClickedColumn = ColumnToSort then
+    ColumnSortForward := not ColumnSortForward
+  else
+    ColumnSortForward := true;
+  ColumnToSort := ClickedColumn;
+  uFirstSort := ColumnToSort;
+  uSecondSort := a1;
+  uThirdSort := a2;
+  lvReports.Hint := '';
+  if ColumnSortForward = true then
+    s := 'Sorted forward'
+  else
+    s := 'Sorted reverse';
+  s1 := piece(uColumns[uFirstSort],'^',1);
+  s2 := '';
+  if length(piece(s1,' ',2)) > 0 then
+    s2 := pieces(s1,' ',2,99);
+  if length(s2) > 0 then s2 := StripSpace(s2);
+  s := s + ' by ' + piece(s1,' ',1) + ' ' + s2;
+  if (a1 <> uFirstSort) and (a1 > -1) then
+    begin
+      s1 :=  piece(uColumns[a1], '^', 1);
+      s2 := '';
+      if length(piece(s1,' ',2)) > 0 then
+        s2 := pieces(s1,' ',2,99);
+      if length(s2) > 0 then s2 := StripSpace(s2);
+      s := s + ' then by ' +  piece(s1,' ',1) + ' ' + s2;
+    end;
+  if (a2 <> uFirstSort) and (a2 > -1) then
+    begin
+      s1 :=  piece(uColumns[a2], '^', 1);
+      s2 := '';
+      if length(piece(s1,' ',2)) > 0 then
+        s2 := pieces(s1,' ',2,99);
+      if length(s2) > 0 then s2 := StripSpace(s2);
+      s := s + ' then by ' +  piece(s1,' ',1) + ' ' + s2;
+    end;
+  lvReports.Hint := s;
+  lvReports.CustomSort(nil, 0);
+end;
+
+procedure TfrmReports.lvReportsCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+
+  function CompareValues(Col: Integer): integer;
+  var
+    ix: Integer;
+    s1, s2: string;
+    v1, v2: extended;
+    d1, d2: TFMDateTime;
+  begin
+    inherited;
+    if ColumnToSort = 0 then
+      Result := CompareText(Item1.Caption,Item2.Caption)
+    else
+      begin
+        ix := ColumnToSort - 1;
+        case Col of
+          0:                        //strings
+            begin
+              if(Item1.SubItems.Count > 0) and (ix < Item1.SubItems.Count) then
+                s1 := Item1.SubItems[ix]
+              else
+                s1 := '0';
+              if(Item2.SubItems.Count > 0) and (ix < Item2.SubItems.Count) then
+                s2 := Item2.SubItems[ix]
+              else
+                s2 := '0';
+              Result := CompareText(s1,s2);
+            end;
+
+          1:                        //integers
+            begin
+              if(Item1.SubItems.Count > 0) and (ix < Item1.SubItems.Count) then
+                s1 := Item1.SubItems[ix]
+              else
+                s1 := '0';
+              if(Item2.SubItems.Count > 0) and (ix < Item2.SubItems.Count) then
+                s2 := Item2.SubItems[ix]
+              else
+                s2 := '0';
+              IsValidNumber(s1, v1);
+              IsValidNumber(s2, v2);
+              if v1 > v2 then
+                Result := 1
+              else
+              if v1 < v2 then
+                Result := -1
+              else
+                Result := 0;
+            end;
+
+          2:                        //date/times
+            begin
+              if(Item1.SubItems.Count > 1) and (ix < Item1.SubItems.Count) then
+                s1 := Item1.SubItems[ix]
+              else
+                s1 := '1/1/1700';
+              if(Item2.SubItems.Count > 1) and (ix < Item2.SubItems.Count) then
+                s2 := Item2.SubItems[ix]
+              else
+                s2 := '1/1/1700';
+              d1 := StringToFMDateTime(s1);
+              d2 := StringToFMDateTime(s2);
+              if d1 > d2 then
+                Result := 1
+              else
+              if d1 < d2 then
+                Result := -1
+              else
+                Result := 0;
+            end;
+          else
+            Result := 0; // to make the compiler happy
+        end;
+      end;
+  end;
+begin
+  ColumnToSort := uFirstSort;
+  Compare := CompareValues(SortIdx1);
+  if Compare = 0 then
+  begin
+    if (uSecondSort > -1) and (uFirstSort <> uSecondSort) then
+      begin
+        ColumnToSort := uSecondSort;
+        Compare := CompareValues(SortIdx2);
+      end;
+    if Compare = 0 then
+      if (uThirdSort > -1) and (uFirstSort <> uThirdSort) and (uSecondSort <> uThirdSort) then
+        begin
+          ColumnToSort := uThirdSort;
+          Compare := CompareValues(SortIdx3);
+        end;
+  end;
+  if not ColumnSortForward then Compare := -Compare;
+end;
+
+procedure TfrmReports.lvReportsSelectItem(Sender: TObject; Item: TListItem;
+  Selected: Boolean);
+var
+  aID, aMoreID, aSID: string;
+  i,j,k: integer;
+  aBasket: TStringList;
+  aWPFlag: Boolean;
+  x, HasImages: string;
+
+begin
+  inherited;
+  if not selected then Exit;
+  aBasket := TStringList.Create;
+  uLocalReportData.Clear;
+  aWPFlag := false;
+  with lvReports do
+    begin
+      aID := Item.SubItems[0];
+      case uQualifierType of
+            QT_OTHER:
+              begin      //      = 0
+
+              end;
+            QT_HSTYPE:
+              begin      //      = 1
+                aMoreID := ';' +  Item.SubItems[2];
+              end;
+            QT_DATERANGE:
+              begin      //      = 2
+
+              end;
+            QT_IMAGING:
+              begin      //      = 3
+                if lvReports.SelCount = 1 then
+                  begin
+                    memText.Lines.Clear;
+                    if not UpdatingTvProcedures then
+                      begin
+                      UpdatingLvReports := TRUE;
+                      for i := 0 to (tvProcedures.Items.Count - 1) do
+                        if PProcTreeObj(tvProcedures.Items[i].Data)^.ExamDtTm = Item.SubItems[0] then
+                           if PProcTreeObj(tvProcedures.Items[i].Data)^.ProcedureName = Item.SubItems[2] then
+                              begin
+                                if tvProcedures.Items[i].Parent <> nil then
+                                   begin
+                                     tvProcedures.Items[i].Parent.Expanded := True;
+                                     if PProcTreeObj(tvProcedures.Items[i].Data)^.MemberOfSet = '1' then
+                                        lblProcTypeMsg.Caption := 'Descendent Procedure'
+                                     else if PProcTreeObj(tvProcedures.Items[i].Data)^.MemberOfSet = '2' then
+                                             lblProcTypeMsg.Caption := 'Descendent Procedure with shared report';
+                                   end
+                                else
+                                   lblProcTypeMsg.Caption := 'Standalone (single) procedure';
+                                tvProcedures.Items[i].Selected := TRUE;
+                              end;
+                      UpdatingLvReports := False;
+                      end;
+                  end
+                else
+                  if not UpdatingTvProcedures then
+                     tvProcedures.Selected := nil;
+
+                if MemText.Lines.Count > 0 then
+                  memText.Lines.Add('===============================================================================');
+                aMoreID := '#' + Item.SubItems[5];
+                SetPiece(uRemoteType,'^',5,aID + aMoreID);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  begin
+                    LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, '');
+                    for i := 0 to uLocalReportData.Count - 1 do
+                      MemText.Lines.Add(uLocalReportData[i]);
+                    if Item.SubItems.Count > 5 then
+                      x := 'RA^' + aID + U + Item.SubItems[5]
+                    else
+                      x := 'RA^' + aID;
+                    HasImages := BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE];
+                    SetPiece(x, U, 10, HasImages);
+                    NotifyOtherApps(NAE_REPORT, x);
+                  end;
+              end;
+            QT_NUTR:
+              begin      //      = 4
+                if lvReports.SelCount = 1 then
+                  memText.Lines.Clear;
+                if MemText.Lines.Count > 0 then
+                  memText.Lines.Add('===============================================================================');
+                SetPiece(uRemoteType,'^',5,aID);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  begin
+                    LoadReportText(uLocalReportData, uRptID, aID, uReportRPC, '');
+                    for i := 0 to uLocalReportData.Count - 1 do
+                      MemText.Lines.Add(uLocalReportData[i]);
+                  end;
+              end;
+            QT_HSWPCOMPONENT:
+              begin      //      = 6
+                if lvReports.SelCount < 3 then
+                  begin
+                    memText.Lines.Clear;
+                    ulvSelectOn := false;
+                  end;
+                aBasket.Clear;
+                if (SelCount = 2) and (ulvSelectOn = false) then
+                  begin
+                    ulvSelectOn := true;
+                    for i := 0 to Items.Count - 1 do
+                      if (Items[i].Selected) and (aID <> Items[i].SubItems[0]) then
+                        begin
+                          aSID := Items[i].SubItems[0];
+                          for j := 0 to RowObjects.ColumnList.Count - 1 do
+                            if piece(aSID,':',1) = piece(TCellObject(RowObjects.ColumnList[j]).Handle,':',1) then
+                              if Item.Caption = (piece(TCellObject(RowObjects.ColumnList[j]).Site,';',1)) then
+                                if (TCellObject(RowObjects.ColumnList[j]).Data.Count > 0) and
+                                  (TCellObject(RowObjects.ColumnList[j]).Include = '1') then
+                                  begin
+                                    aWPFlag := true;
+                                    MemText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
+                                    FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
+                                    for k := 0 to aBasket.Count - 1 do
+                                      MemText.Lines.Add('  ' + aBasket[k]);
+                                  end;
+                          if aWPFlag = true then
+                            begin
+                              memText.Lines.Add('Facility: ' + Item.Caption);
+                              memText.Lines.Add('===============================================================================');
+                            end;
+                        end;
+                  end;
+                aBasket.Clear;
+                aWPFlag := false;
+                for i := 0 to RowObjects.ColumnList.Count - 1 do
+                  if piece(aID,':',1) = piece(TCellObject(RowObjects.ColumnList[i]).Handle,':',1) then
+                    if Item.Caption = (piece(TCellObject(RowObjects.ColumnList[i]).Site,';',1)) then
+                      if (TCellObject(RowObjects.ColumnList[i]).Data.Count > 0) and
+                        (TCellObject(RowObjects.ColumnList[i]).Include = '1') then
+                        begin
+                          aWPFlag := true;
+                          MemText.Lines.Add(TCellObject(RowObjects.ColumnList[i]).Name);
+                          FastAssign(TCellObject(RowObjects.ColumnList[i]).Data, aBasket);
+                          for j := 0 to aBasket.Count - 1 do
+                            MemText.Lines.Add('  ' + aBasket[j]);
+                        end;
+                if aWPFlag = true then
+                  begin
+                    memText.Lines.Add('Facility: ' + Item.Caption);
+                    memText.Lines.Add('===============================================================================');
+                  end;
+                if uRptID = 'OR_R18:IMAGING' then
+                begin
+                  if (Item.SubItems.Count > 8) then                                             //has id, may have case (?)
+                  begin
+                    x := 'RA^' + Item.SubItems[8] + U + Item.SubItems[4] + U + Item.Caption;
+                    SetPiece(x, U, 10, BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]);
+                    NotifyOtherApps(NAE_REPORT, x);
+                  end
+                  else if (Item.SubItems.Count > 4) then
+                  begin
+                    x := 'RA^' + U + U + Item.SubItems[4] + U + Item.Caption;
+                    SetPiece(x, U, 10, BOOLCHAR[Item.SubItemImages[1] = IMG_1_IMAGE]);
+                    NotifyOtherApps(NAE_REPORT, x);
+                  end
+                  else if Item.SubItemImages[1] = IMG_1_IMAGE then
+                  begin
+                    memText.Lines.Insert(0,'<Imaging links not active at this site>');
+                    memText.Lines.Insert(1,' ');
+                  end;
+                end;
+                if uRptID = 'OR_PN:PROGRESS NOTES' then
+                  if (Item.SubItems.Count > 7) then
+                    begin
+                      if StrToIntDef(Item.SubItems[7], 0) > 0 then HasImages := '1' else HasImages := '0';
+                      x := 'PN^' + Item.SubItems[7] + U + Item.SubItems[1] + U + Item.Caption;
+                      SetPiece(x, U, 10, HasImages);
+                      NotifyOtherApps(NAE_REPORT, x);
+                    end;
+              end;
+            QT_PROCEDURES:
+              begin      //      = 19
+                if lvReports.SelCount = 1 then
+                  memText.Lines.Clear;
+                if MemText.Lines.Count > 0 then
+                  memText.Lines.Add('===============================================================================');
+                SetPiece(uRemoteType,'^',5,aID);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  begin
+                    LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, '');
+                    for i := 0 to uLocalReportData.Count - 1 do
+                      MemText.Lines.Add(uLocalReportData[i]);
+                  end;
+              end;
+            QT_SURGERY:
+              begin      //      = 28
+                if lvReports.SelCount = 1 then
+                  memText.Lines.Clear;
+                if MemText.Lines.Count > 0 then
+                  memText.Lines.Add('===============================================================================');
+                SetPiece(uRemoteType,'^',5,aID);
+                if not(piece(uRemoteType, '^', 9) = '1') then
+                  begin
+                    LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, '');
+                    for i := 0 to uLocalReportData.Count - 1 do
+                      MemText.Lines.Add(uLocalReportData[i]);
+                    NotifyOtherApps(NAE_REPORT, 'SUR^' + aID);
+                  end;
+              end;
+      end;
+      memText.Lines.Insert(0,' ');
+      memText.Lines.Delete(0);
+    end;
+  aBasket.Free;
+end;
+
+procedure TfrmReports.tvReportsExpanding(Sender: TObject; Node: TTreeNode;
+  var AllowExpansion: Boolean);
+begin
+  inherited;
+  tvReports.Selected := Node;
+end;
+
+procedure TfrmReports.tvReportsCollapsing(Sender: TObject; Node: TTreeNode;
+  var AllowCollapse: Boolean);
+begin
+  inherited;
+  tvReports.Selected := Node;
+end;
+
+
+procedure TfrmReports.Print1Click(Sender: TObject);
+begin
+  inherited;
+  RequestPrint;
+end;
+
+procedure TfrmReports.Copy1Click(Sender: TObject);
+var
+  i,j: integer;
+  line: string;
+  ListItem: TListItem;
+  aText: String;
+begin
+  inherited;
+  ClipBoard;
+  aText := '';
+  for i := 0 to lvReports.Items.Count - 1 do
+    if lvReports.Items[i].Selected then
+    begin
+      ListItem := lvReports.Items[i];
+      line := '';
+      for j := 1 to lvReports.Columns.Count - 1 do
+        begin
+          if (lvReports.Column[j].Width <> 0) and (j < (ListItem.SubItems.Count + 1)) then
+            line := line + '  ' + ListItem.SubItems[j-1];
+        end;
+      if (length(line) > 0) and (lvReports.Column[0].Width <> 0) then
+        line := ListItem.Caption + '  ' + line;
+      if length(aText) > 0 then
+        aText := aText + CRLF + line
+      else aText := line;
+    end;
+  ClipBoard.Clear;
+  ClipBoard.AsText := aText;
+end;
+
+procedure TfrmReports.Copy2Click(Sender: TObject);
+begin
+  inherited;
+  memText.CopyToClipboard;
+end;
+
+procedure TfrmReports.Print2Click(Sender: TObject);
+begin
+  inherited;
+  RequestPrint;
+end;
+
+procedure TfrmReports.lvReportsKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = 67) and (ssCtrl in Shift) then
+    Copy1Click(Self);
+  if (Key = 65) and (ssCtrl in Shift) then
+    SelectAll1Click(Self);
+end;
+
+procedure TfrmReports.SelectAll1Click(Sender: TObject);
+var
+  i: integer;
+begin
+  inherited;
+    for i := 0 to lvReports.Items.Count - 1 do
+       lvReports.Items[i].Selected := true;
+end;
+
+procedure TfrmReports.SelectAll2Click(Sender: TObject);
+begin
+  inherited;
+  memText.SelectAll;
+end;
+
+   
+procedure TfrmReports.tvReportsKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+    VK_LBUTTON, VK_RETURN, VK_SPACE:
+    begin
+      tvReportsClick(Sender);
+      Key := 0;
+    end;
+  end;
+end;
+
+procedure TfrmReports.ShowTabControl;
+begin
+  if TabControl1.Tabs.Count > 1 then
+    begin
+      TabControl1.Visible := true;
+      TabControl1.TabStop := true;
+      pnlRightTop.Height := lblTitle.Height + TabControl1.Height;
+    end;
+end;
+
+procedure TfrmReports.Memo1KeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmReports.LoadProceduresTreeView(x: string; var CurrentParentNode: TTreeNode; var CurrentNode: TTreeNode);
+var
+  PTO, PTO2: PProcTreeObj;
+
+begin
+  PTO := MakeProcedureTreeObject(x);
+  PTO2 := MakeProcedureTreeObject(x);
+  PTO2.ProcedureName := '';
+  if PTO^.ParentName = '' then
+     begin // New stand-alone
+       CurrentParentNode := tvProcedures.Items.AddObject(CurrentParentNode,PTO^.ProcedureName,PTO);
+       CurrentNode := CurrentParentNode;
+     end
+  else
+    if (CurrentParentNode <> nil) and (PTO^.ParentName = PProcTreeObj(CurrentParentNode.Data)^.ParentName) then
+          // another child for same parent
+       CurrentNode := tvProcedures.Items.AddChildObject(CurrentParentNode,PTO^.ProcedureName,PTO)
+    else
+       begin //New child and parent
+         CurrentParentNode := tvProcedures.Items.AddObject(CurrentParentNode,PTO2^.ParentName,PTO2);
+         CurrentNode := tvProcedures.Items.AddChildObjectFirst(CurrentParentNode,PTO^.ProcedureName,PTO);
+        end;
+end;
+
+procedure TfrmReports.tvProceduresCollapsing(Sender: TObject;
+  Node: TTreeNode; var AllowCollapse: Boolean);
+begin
+  inherited;
+  tvReports.Selected := Node;
+end;
+
+procedure TfrmReports.tvProceduresExpanding(Sender: TObject;
+  Node: TTreeNode; var AllowExpansion: Boolean);
+begin
+  inherited;
+  tvReports.Selected := Node;
+end;
+
+procedure TfrmReports.tvProceduresClick(Sender: TObject);
+var
+  Associate: Integer;
+  SelNode: TTreeNode;
+begin
+  inherited;
+  SelNode := TTreeView(Sender).Selected;
+  if not assigned(SelNode) then Exit;
+  Associate := PProcTreeObj(SelNode.Data)^.Associate;
+  lvReports.Selected := nil;
+  if PProcTreeObj(SelNode.Data)^.ProcedureName <> '' then  //if it is a descendent or a stand-alone
+     begin
+       memText.Lines.Clear;
+       lvReports.Selected := lvReports.Items[Associate];
+       if PProcTreeObj(SelNode.Data)^.MemberOfSet = '1' then
+          lblProcTypeMsg.Caption := 'Descendent Procedure'
+       else
+          if PProcTreeObj(SelNode.Data)^.MemberOfSet = '2' then
+             lblProcTypeMsg.Caption := 'Descendent Procedure with shared report';
+     end
+  else         //if it is a parent with descendents
+     if PProcTreeObj(SelNode.Data)^.MemberOfSet = '2' then  //printset = shared report
+        lblProcTypeMsg.Caption := 'Descendent Procedures with shared report'
+     else if PProcTreeObj(SelNode.Data)^.MemberOfSet = '1' then    //examset - individual reports
+             begin
+               memText.Lines.Clear;
+               lblProcTypeMsg.Caption := 'Descendent Procedures - Select to view individual reports';
+               memText.Lines.Add('Descendent Procedures - Select to view individual reports...')
+             end;
+end;
+
+procedure TfrmReports.tvProceduresChange(Sender: TObject; Node: TTreeNode);
+var
+  Associate, i: Integer;
+  FirstChild: TTreeNode;
+  aID, aMoreID: string;
+  x, HasImages: string;
+begin
+  inherited;
+  if UpdatingLvReports or not assigned(Node) then Exit;
+    UpdatingTVProcedures := TRUE;
+    Associate := PProcTreeObj(Node.Data)^.Associate;
+    lvReports.Selected := nil;
+    if PProcTreeObj(Node.Data)^.ProcedureName <> '' then  //if it is a descendent or a stand-alone
+       if (Associate >= 0) and (Associate < (lvReports.Items.Count)) then // if valid associate in lvReports
+          if lvReports.Items[Associate].Selected = FALSE then  // if not already selected
+             begin
+               lvReports.Selected := lvReports.Items[Associate];
+               if PProcTreeObj(Node.Data)^.MemberOfSet = '1' then
+                  begin
+                    lblProcTypeMsg.Caption := 'Descendent Procedure';
+                  end
+               else if PProcTreeObj(Node.Data)^.MemberOfSet = '2' then
+                       lblProcTypeMsg.Caption := 'Descendent Procedures with shared report'
+                    else if PProcTreeObj(Node.Data)^.MemberOfSet = '' then
+                            lblProcTypeMsg.Caption := 'Standalone (single) procedure';
+             end;
+    UpdatingTvProcedures := FALSE;
+
+    if PProcTreeObj(Node.Data)^.ProcedureName = '' then  //Parent with descendents
+       if PProcTreeObj(Node.Data)^.MemberOfSet = '2' then  //printset = shared report
+          begin
+            lblProcTypeMsg.Caption := 'Descendent Procedures with shared report';
+            FirstChild := Node.GetFirstChild;
+            Associate := PProcTreeObj(FirstChild.Data)^.Associate;
+            aID := lvReports.Items[Associate].SubItems[0];
+            aMoreID := '#' + lvReports.Items[Associate].SubItems[5];
+            SetPiece(uRemoteType,'^',5,aID + aMoreID);
+            uLocalReportData.Clear;
+            MemText.Lines.Clear;
+            if not(piece(uRemoteType, '^', 9) = '1') then
+              begin
+                LoadReportText(uLocalReportData, uRptID, aID + aMoreID, uReportRPC, '');
+                for i := 0 to uLocalReportData.Count - 1 do
+                  MemText.Lines.Add(uLocalReportData[i]);
+                memText.SelStart := 0;
+                if lvReports.Items[Associate].SubItems.Count > 5 then
+                  x := 'RA^' + aID + U + lvReports.Items[Associate].SubItems[5]
+                else
+                  x := 'RA^' + aID;
+                HasImages := BOOLCHAR[lvReports.Items[Associate].SubItemImages[1] = IMG_1_IMAGE];
+                SetPiece(x, U, 10, HasImages);
+                NotifyOtherApps(NAE_REPORT, x);
+              end;
+          end
+       else if PProcTreeObj(Node.Data)^.MemberOfSet = '1' then    //examset - individual reports
+               begin
+                 memText.Lines.Clear;
+                 lblProcTypeMsg.Caption := 'Descendent Procedures - Select to view individual reports';
+                 memText.Lines.Add('Descendent Procedures - Select to view individual reports...');
+               end;
+end;
+
+procedure TfrmReports.tvProceduresKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+    VK_LBUTTON, VK_RETURN, VK_SPACE:
+    begin
+      tvReportsClick(Sender);
+      Key := 0;
+    end;
+  end;
+
+end;
+
+procedure TfrmReports.chkDualViewsClick(Sender: TObject);
+begin
+  inherited;
+  if (GraphForm <> nil) and GraphFormActive then
+    GraphForm.chkDualViews.Checked := chkDualViews.Checked;
+end;
+
+procedure TfrmReports.chkMaxFreqClick(Sender: TObject);
+begin
+  inherited;
+  if chkMaxFreq.Checked = true then
+    begin
+      uMaxOcc := piece(uQualifier, ';', 3);
+      SetPiece(uQualifier, ';', 3, '');
+    end
+    else
+      begin
+        SetPiece(uQualifier, ';', 3, uMaxOcc);
+      end;
+  tvReportsClick(self);
+end;
+
+procedure TfrmReports.btnChangeViewClick(Sender: TObject);
+begin
+  inherited;
+  if (GraphForm <> nil) and GraphFormActive then
+  begin
+    GraphForm.btnChangeSettingsClick(GraphForm);
+    chkDualViews.Checked := GraphForm.chkDualViews.Checked;
+  end;
+end;
+
+procedure TfrmReports.btnGraphSelectionsClick(Sender: TObject);
+begin
+  inherited;
+  if (GraphForm <> nil) and GraphFormActive then
+  begin
+    GraphForm.btnGraphSelectionsClick(GraphForm);
+    chkDualViews.Checked := GraphForm.chkDualViews.Checked;
+  end;
+end;
+
+procedure TfrmReports.lstDateRangeClick(Sender: TObject);
+begin
+  inherited;
+  if (GraphForm <> nil) then
+  begin
+    GraphForm.cboDateRange.ItemIndex := lstDateRange.ItemIndex;
+    GraphForm.cboDateRangeChange(self);
+    FastAssign(GraphForm.cboDateRange.Items, lstDateRange.Items);
+    lstDateRange.ItemIndex := GraphForm.cboDateRange.ItemIndex;
+    //Exit;
+  end;
+
+end;
+
+procedure TfrmReports.sptHorzMoved(Sender: TObject);
+begin
+  inherited;
+  pnlTopViews.Height := 80;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmReports);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocComponent1.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocComponent1.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocComponent1.dfm	(revision 1676)
@@ -0,0 +1,555 @@
+inherited frmReportsAdhocComponent1: TfrmReportsAdhocComponent1
+  Left = 229
+  Top = 195
+  BorderIcons = [biSystemMenu]
+  Caption = 'ADHOC Health Summary'
+  ClientHeight = 452
+  ClientWidth = 633
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnShow = FormShow
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Splitter1: TSplitter [0]
+    Left = 185
+    Top = 0
+    Width = 5
+    Height = 401
+    Beveled = True
+    OnCanResize = Splitter1CanResize
+    ExplicitHeight = 394
+  end
+  object ORComboBox1: TORComboBox [1]
+    Left = 0
+    Top = 0
+    Width = 185
+    Height = 401
+    Style = orcsSimple
+    Align = alLeft
+    AutoSelect = True
+    Caption = 'Available Components'
+    Color = clWindow
+    DropDownCount = 8
+    ItemHeight = 13
+    ItemTipColor = clWindow
+    ItemTipEnable = True
+    ListItemsOnly = False
+    LongList = False
+    LookupPiece = 0
+    MaxLength = 0
+    Pieces = '2'
+    Sorted = True
+    SynonymChars = '<>'
+    TabOrder = 0
+    OnDblClick = btnAddComponentClick
+    OnKeyDown = ORComboBox1KeyDown
+    CharsNeedMatch = 1
+    ExplicitHeight = 394
+  end
+  object Panel2: TPanel [2]
+    Left = 0
+    Top = 401
+    Width = 633
+    Height = 51
+    Align = alBottom
+    TabOrder = 2
+    ExplicitTop = 394
+    DesignSize = (
+      633
+      51)
+    object btnCancelMain: TButton
+      Left = 550
+      Top = 18
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 2
+      OnClick = btnCancelMainClick
+    end
+    object btnOKMain: TButton
+      Left = 462
+      Top = 18
+      Width = 75
+      Height = 25
+      Anchors = [akRight, akBottom]
+      Caption = 'OK'
+      TabOrder = 1
+      OnClick = btnOKMainClick
+    end
+    object GroupBox1: TGroupBox
+      Left = 0
+      Top = 8
+      Width = 329
+      Height = 41
+      Caption = 'Lookup By:'
+      TabOrder = 0
+      object rbtnHeader: TRadioButton
+        Left = 208
+        Top = 16
+        Width = 105
+        Height = 17
+        Caption = '&Display Header'
+        TabOrder = 2
+        OnClick = rbtnHeaderClick
+      end
+      object rbtnAbbrev: TRadioButton
+        Left = 96
+        Top = 16
+        Width = 89
+        Height = 17
+        Caption = '&Abbreviation'
+        TabOrder = 1
+        OnClick = rbtnAbbrevClick
+      end
+      object rbtnName: TRadioButton
+        Left = 8
+        Top = 16
+        Width = 65
+        Height = 17
+        Caption = '&Name'
+        TabOrder = 0
+        OnClick = rbtnNameClick
+      end
+    end
+  end
+  object Panel3: TPanel [3]
+    Left = 190
+    Top = 0
+    Width = 443
+    Height = 401
+    Align = alClient
+    TabOrder = 1
+    ExplicitHeight = 394
+    object Splitter4: TSplitter
+      Left = 219
+      Top = 25
+      Width = 5
+      Height = 375
+      Beveled = True
+      OnCanResize = Splitter4CanResize
+      ExplicitHeight = 368
+    end
+    object Panel1: TPanel
+      Left = 1
+      Top = 1
+      Width = 441
+      Height = 24
+      Align = alTop
+      BevelOuter = bvNone
+      Caption = 'Component Selection(s)'
+      TabOrder = 0
+    end
+    object ORListBox2: TORListBox
+      Left = 26
+      Top = 25
+      Width = 193
+      Height = 375
+      Align = alLeft
+      DragMode = dmAutomatic
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 2
+      OnClick = ORListBox2Click
+      OnDblClick = btnRemoveComponentClick
+      OnDragDrop = ORListBox2DragDrop
+      OnDragOver = ORListBox2DragOver
+      OnEndDrag = ORListBox2EndDrag
+      Caption = 'Selected Components'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+      ExplicitHeight = 368
+    end
+    object Panel6: TPanel
+      Left = 1
+      Top = 25
+      Width = 25
+      Height = 375
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 1
+      ExplicitHeight = 368
+      object btnRemoveComponent: TButton
+        Left = 4
+        Top = 30
+        Width = 17
+        Height = 22
+        Caption = '<'
+        TabOrder = 1
+        OnClick = btnRemoveComponentClick
+      end
+      object btnRemoveAllComponents: TButton
+        Left = 4
+        Top = 55
+        Width = 17
+        Height = 22
+        Caption = '<<'
+        TabOrder = 2
+        OnClick = btnRemoveAllComponentsClick
+      end
+      object btnAddComponent: TButton
+        Left = 4
+        Top = 5
+        Width = 17
+        Height = 22
+        Caption = '>'
+        TabOrder = 0
+        OnClick = btnAddComponentClick
+      end
+    end
+    object Panel7: TPanel
+      Left = 224
+      Top = 25
+      Width = 218
+      Height = 375
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 3
+      ExplicitHeight = 368
+      object lblHeaderName: TLabel
+        Left = 30
+        Top = 8
+        Width = 69
+        Height = 13
+        Caption = 'Header Name:'
+        Enabled = False
+      end
+      object lblOccuranceLimit: TLabel
+        Left = 30
+        Top = 48
+        Width = 83
+        Height = 13
+        Caption = 'Occurrence Limit:'
+        Enabled = False
+      end
+      object lblTimeLimit: TLabel
+        Left = 153
+        Top = 48
+        Width = 50
+        Height = 13
+        Caption = 'Time Limit:'
+        Enabled = False
+      end
+      object lblItems: TLabel
+        Left = 30
+        Top = 184
+        Width = 49
+        Height = 13
+        Caption = 'Sub-items:'
+        Enabled = False
+      end
+      object pnl5Button: TKeyClickPanel
+        Left = 0
+        Top = 90
+        Width = 17
+        Height = 24
+        Caption = 'Display selected component earlier'
+        TabOrder = 0
+        TabStop = True
+        OnClick = SpeedButton5Click
+        OnEnter = pnl5ButtonEnter
+        OnExit = pnl5ButtonExit
+        object SpeedButton5: TSpeedButton
+          Left = 0
+          Top = 1
+          Width = 17
+          Height = 22
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000333
+            3333333333777F3333333333330F033333333333337F7F3333333333330F0333
+            33333333337F7F3333333333330F033333333333337F7F3333333333330F0333
+            33333333337F7F3333333333330F033333333333FF7F7FFFF3333330000F0000
+            3333333777737777F3333330FFFFFFF0333333373F333337333333330FFFFF03
+            333333337F33337F333333330FFFFF033333333373F333733333333330FFF033
+            3333333337F337F33333333330FFF03333333333373F373333333333330F0333
+            33333333337F7F3333333333330F033333333333337373333333333333303333
+            333333333337F333333333333330333333333333333733333333}
+          NumGlyphs = 2
+          OnClick = SpeedButton5Click
+        end
+      end
+      object pnl6Button: TKeyClickPanel
+        Left = 0
+        Top = 115
+        Width = 17
+        Height = 24
+        BevelOuter = bvNone
+        Caption = 'Display selected component later'
+        TabOrder = 1
+        TabStop = True
+        OnClick = SpeedButton6Click
+        OnEnter = pnl5ButtonEnter
+        OnExit = pnl5ButtonExit
+        object SpeedButton6: TSpeedButton
+          Left = 0
+          Top = 1
+          Width = 17
+          Height = 22
+          Enabled = False
+          Glyph.Data = {
+            76010000424D7601000000000000760000002800000020000000100000000100
+            0400000000000001000000000000000000001000000010000000000000000000
+            800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+            FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333303333
+            333333333337F33333333333333033333333333333373F3333333333330F0333
+            33333333337F7F3333333333330F033333333333337373F33333333330FFF033
+            3333333337F337F33333333330FFF033333333333733373F333333330FFFFF03
+            333333337F33337F333333330FFFFF033333333373333373F3333330FFFFFFF0
+            33333337FFFF3FF7F3333330000F000033333337777F777733333333330F0333
+            33333333337F7F3333333333330F033333333333337F7F3333333333330F0333
+            33333333337F7F3333333333330F033333333333337F7F3333333333330F0333
+            33333333337F7F33333333333300033333333333337773333333}
+          NumGlyphs = 2
+          OnClick = SpeedButton6Click
+        end
+      end
+      object edtHeaderName: TCaptionEdit
+        Left = 24
+        Top = 24
+        Width = 189
+        Height = 21
+        Enabled = False
+        TabOrder = 2
+        OnExit = edtHeaderNameExit
+        Caption = 'Header Name'
+      end
+      object edtOccuranceLimit: TCaptionEdit
+        Left = 24
+        Top = 64
+        Width = 79
+        Height = 21
+        Enabled = False
+        TabOrder = 3
+        OnExit = edtOccuranceLimitExit
+        Caption = 'Occurance Limit'
+      end
+      object cboTimeLimit: TCaptionComboBox
+        Left = 150
+        Top = 64
+        Width = 63
+        Height = 21
+        ItemHeight = 13
+        TabOrder = 4
+        OnExit = cboTimeLimitExit
+        Items.Strings = (
+          '1D'
+          '2D'
+          '3D'
+          '4D'
+          '5D'
+          '6D'
+          '1W'
+          '2W'
+          '3W'
+          '4W'
+          '1M'
+          '2M'
+          '3M'
+          '4M'
+          '5M'
+          '6M'
+          '7M'
+          '8M'
+          '9M'
+          '10M'
+          '11M'
+          '12M'
+          '1Y'
+          '2Y'
+          '3Y'
+          '4Y'
+          '5Y'
+          '6Y'
+          '7Y'
+          '8Y'
+          '9Y'
+          '10Y'
+          'No Limit')
+        Caption = 'Time Limit'
+      end
+      object gpbDisplay: TGroupBox
+        Left = 24
+        Top = 88
+        Width = 189
+        Height = 89
+        Enabled = False
+        TabOrder = 5
+        object lblICD: TLabel
+          Left = 24
+          Top = 48
+          Width = 82
+          Height = 13
+          Caption = 'ICD Text Display:'
+          Enabled = False
+        end
+        object ckbHospitalLocation: TCheckBox
+          Left = 24
+          Top = 16
+          Width = 153
+          Height = 17
+          Caption = 'Display Hospital Location'
+          Enabled = False
+          TabOrder = 0
+          OnExit = ckbHospitalLocationExit
+        end
+        object ckbProviderNarrative: TCheckBox
+          Left = 24
+          Top = 32
+          Width = 153
+          Height = 17
+          Caption = 'Display Provider Narrative'
+          Enabled = False
+          TabOrder = 1
+          OnExit = ckbProviderNarrativeExit
+        end
+        object cboICD: TCaptionComboBox
+          Left = 24
+          Top = 64
+          Width = 121
+          Height = 21
+          Enabled = False
+          ItemHeight = 13
+          TabOrder = 2
+          OnExit = cboICDExit
+          Items.Strings = (
+            'Long text'
+            'Short text'
+            'Code only'
+            'Text only'
+            'None')
+          Caption = 'ICD Text Display'
+        end
+      end
+      object ORListBox1: TORListBox
+        Left = 24
+        Top = 200
+        Width = 185
+        Height = 149
+        Enabled = False
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 6
+        Caption = 'Sub-items'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object btnEditSubitems: TButton
+        Left = 120
+        Top = 352
+        Width = 89
+        Height = 21
+        Caption = 'Edit Sub-items'
+        Enabled = False
+        TabOrder = 7
+        OnClick = btnEditSubitemsClick
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = ORComboBox1'
+        'Status = stsDefault')
+      (
+        'Component = Panel2'
+        'Status = stsDefault')
+      (
+        'Component = btnCancelMain'
+        'Status = stsDefault')
+      (
+        'Component = btnOKMain'
+        'Status = stsDefault')
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = rbtnHeader'
+        'Status = stsDefault')
+      (
+        'Component = rbtnAbbrev'
+        'Status = stsDefault')
+      (
+        'Component = rbtnName'
+        'Status = stsDefault')
+      (
+        'Component = Panel3'
+        'Status = stsDefault')
+      (
+        'Component = Panel1'
+        'Status = stsDefault')
+      (
+        'Component = ORListBox2'
+        'Status = stsDefault')
+      (
+        'Component = Panel6'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveComponent'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAllComponents'
+        'Status = stsDefault')
+      (
+        'Component = btnAddComponent'
+        'Status = stsDefault')
+      (
+        'Component = Panel7'
+        'Status = stsDefault')
+      (
+        'Component = pnl5Button'
+        'Status = stsDefault')
+      (
+        'Component = pnl6Button'
+        'Status = stsDefault')
+      (
+        'Component = edtHeaderName'
+        'Status = stsDefault')
+      (
+        'Component = edtOccuranceLimit'
+        'Status = stsDefault')
+      (
+        'Component = cboTimeLimit'
+        'Status = stsDefault')
+      (
+        'Component = gpbDisplay'
+        'Status = stsDefault')
+      (
+        'Component = ckbHospitalLocation'
+        'Status = stsDefault')
+      (
+        'Component = ckbProviderNarrative'
+        'Status = stsDefault')
+      (
+        'Component = cboICD'
+        'Status = stsDefault')
+      (
+        'Component = ORListBox1'
+        'Status = stsDefault')
+      (
+        'Component = btnEditSubitems'
+        'Status = stsDefault')
+      (
+        'Component = frmReportsAdhocComponent1'
+        'Status = stsDefault'))
+  end
+  object Timer1: TTimer
+    Enabled = False
+    Interval = 100
+    OnTimer = Timer1Timer
+    Left = 591
+    Top = 6
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocComponent1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocComponent1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocComponent1.pas	(revision 1676)
@@ -0,0 +1,820 @@
+unit fReportsAdhocComponent1;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, Grids, ORCtrls, ORfn, Buttons, fAutoSz,
+  VA508AccessibilityManager;
+
+type
+  TfrmReportsAdhocComponent1 = class(TfrmAutoSz)
+    ORComboBox1: TORComboBox;
+    Splitter1: TSplitter;
+    Panel2: TPanel;
+    Panel3: TPanel;
+    btnCancelMain: TButton;
+    btnOKMain: TButton;
+    Panel1: TPanel;
+    ORListBox2: TORListBox;
+    Panel6: TPanel;
+    btnRemoveComponent: TButton;
+    btnRemoveAllComponents: TButton;
+    Splitter4: TSplitter;
+    Panel7: TPanel;
+    lblHeaderName: TLabel;
+    edtHeaderName: TCaptionEdit;
+    lblOccuranceLimit: TLabel;
+    edtOccuranceLimit: TCaptionEdit;
+    lblTimeLimit: TLabel;
+    cboTimeLimit: TCaptionComboBox;
+    gpbDisplay: TGroupBox;
+    ckbHospitalLocation: TCheckBox;
+    ckbProviderNarrative: TCheckBox;
+    cboICD: TCaptionComboBox;
+    lblICD: TLabel;
+    btnAddComponent: TButton;
+    pnl5Button: TKeyClickPanel;
+    SpeedButton5: TSpeedButton;
+    pnl6Button: TKeyClickPanel;
+    SpeedButton6: TSpeedButton;
+    Timer1: TTimer;
+    ORListBox1: TORListBox;
+    lblItems: TLabel;
+    btnEditSubitems: TButton;
+    GroupBox1: TGroupBox;
+    rbtnHeader: TRadioButton;
+    rbtnAbbrev: TRadioButton;
+    rbtnName: TRadioButton;
+    procedure FormCreate(Sender: TObject);
+    procedure btnCancelMainClick(Sender: TObject);
+    procedure btnOKMainClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure HideEdits;
+    procedure ORListBox2Click(Sender: TObject);
+    procedure btnRemoveComponentClick(Sender: TObject);
+    procedure btnRemoveAllComponentsClick(Sender: TObject);
+    procedure Splitter4CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer;
+      var Accept: Boolean);
+    procedure btnAddComponentClick(Sender: TObject);
+    procedure SpeedButton5Click(Sender: TObject);
+    procedure SpeedButton6Click(Sender: TObject);
+    procedure ORListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
+    procedure ORListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure ORListBox2EndDrag(Sender, Target: TObject; X, Y: Integer);
+    procedure Timer1Timer(Sender: TObject);
+    procedure btnEditSubitemsClick(Sender: TObject);
+    procedure edtHeaderNameExit(Sender: TObject);
+    procedure edtOccuranceLimitExit(Sender: TObject);
+    procedure cboTimeLimitExit(Sender: TObject);
+    procedure ckbHospitalLocationExit(Sender: TObject);
+    procedure ckbProviderNarrativeExit(Sender: TObject);
+    procedure cboICDExit(Sender: TObject);
+    procedure LoadComponents(Dest: TStrings);
+    procedure FormShow(Sender: TObject);
+    procedure rbtnAbbrevClick(Sender: TObject);
+    procedure rbtnNameClick(Sender: TObject);
+    procedure rbtnHeaderClick(Sender: TObject);
+    procedure pnl5ButtonEnter(Sender: TObject);
+    procedure pnl5ButtonExit(Sender: TObject);
+    procedure ORComboBox1KeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+    GoingUp: Boolean;
+    OKPressed: Boolean;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmReportsAdhocComponent1: TfrmReportsAdhocComponent1;
+  uComponents: TStringList;    {This is what is built as SubItems are
+                                selected.  It is identified by segment
+                                and is ordered in the order that the items
+                                have been selected or moved by the user.
+                                Segment^file #^ifn of file^zero node of file}
+  uCurrentComponent: Integer;  //Pointer to current Component ID
+  HSCompCtr: integer;          //Component ID
+  uFile: String;               //Mumps file Number of Subitems
+  uLimit: Integer;             //HS Component Subitem Selection limit
+  uLimitCount: Integer;        //Count of current Subitem Selections
+
+  function ExecuteAdhoc1: Boolean;
+
+implementation
+
+uses fReportsAdhocSubItem1, fReports, uCore, rReports;
+
+{$R *.DFM}
+type
+PHSCompRec = ^THSCompRec;
+THSCompRec = object
+  ID: integer;
+  Segment: string;
+  Name: string;
+  OccuranceLimit: string;
+  TimeLimit: string;
+  Header: string;
+  HospitalLocation: string;
+  ICDText: string;
+  ProviderNarrative: string;
+
+
+end;
+
+function ExecuteAdhoc1: Boolean;
+begin
+  Result := False;
+  frmReportsAdhocComponent1 := TfrmReportsAdhocComponent1.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmReportsAdhocComponent1));
+    frmReportsAdhocComponent1.ShowModal;
+    if frmReportsAdhocComponent1.OKPressed then
+      Result := True;
+  finally
+    frmReportsAdhocComponent1.Release;
+  end;
+end;
+
+procedure TfrmReportsAdhocComponent1.FormCreate(Sender: TObject);
+
+begin
+  HideEdits;
+  HSCompCtr := 0;
+  uFile := '';
+  uLimit := 0;
+  uLimitCount := 1;
+  uComponents := TStringList.Create;
+  Splitter1.Left := ORComboBox1.Left + ORComboBox1.Width + 1;
+  Splitter1.Align := ORComboBox1.Align;
+  Panel6.Left := Splitter1.Left + Splitter1.Width;
+  Panel6.Align := Splitter1.Align;
+  ORListBox2.Left := Panel6.Left + Panel6.Width;
+  ORListBox2.Align := Panel6.Align;
+  Splitter4.Left := ORListBox2.Left + ORListBox2.Width + 1;
+  Splitter4.Align := ORListBox2.Align;
+end;
+
+procedure TfrmReportsAdhocComponent1.FormShow(Sender: TObject);
+begin
+  inherited;
+  if uListState = 1 then rbtnAbbrev.Checked := true;
+  if uListState = 0 then rbtnName.Checked := true;
+  if uListState = 2 then rbtnHeader.Checked := true;
+  LoadComponents(ORComboBox1.Items);
+end;
+
+procedure TfrmReportsAdhocComponent1.btnCancelMainClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmReportsAdhocComponent1.btnOKMainClick(Sender: TObject);
+var
+  i,j: integer;
+begin
+  OKPressed := True;
+  with ORListBox2 do
+    begin
+      if Items.Count > 0 then
+        begin
+          for i := 0 to Items.Count - 1 do
+           begin
+            uHSComponents.Add(PHSCompRec(Items.Objects[i])^.Segment + '^' +
+             PHSCompRec(Items.Objects[i])^.OccuranceLimit + '^' +
+             PHSCompRec(Items.Objects[i])^.TimeLimit + '^' +
+             PHSCompRec(Items.Objects[i])^.Header + '^' +
+             PHSCompRec(Items.Objects[i])^.HospitalLocation + '^' +
+             PHSCompRec(Items.Objects[i])^.ICDText + '^' +
+             PHSCompRec(Items.Objects[i])^.ProviderNarrative);
+            for j := 0 to uComponents.Count-1 do
+             if StrToInt(piece(uComponents[j],'^',1)) =
+              PHSCompRec(Items.Objects[i])^.ID then
+               uHSComponents.Add(PHSCompRec(Items.Objects[i])^.Segment + '^' +
+               PHSCompRec(Items.Objects[i])^.OccuranceLimit + '^' +
+               PHSCompRec(Items.Objects[i])^.TimeLimit + '^' +
+               PHSCompRec(Items.Objects[i])^.Header + '^' +
+               PHSCompRec(Items.Objects[i])^.HospitalLocation + '^' +
+               PHSCompRec(Items.Objects[i])^.ICDText + '^' +
+               PHSCompRec(Items.Objects[i])^.ProviderNarrative + '^' +
+               uComponents[j]);
+           end;
+        end;
+    end;
+  if uHSComponents.Count > 0 then
+    begin
+      HSReportText(uLocalReportData, uHSComponents);
+      Close;
+    end
+  else
+    Application.MessageBox(
+      'Sorry, no Components have been selected',
+      'Selection Error',MB_OK + MB_DEFBUTTON1);
+end;
+
+procedure TfrmReportsAdhocComponent1.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  aParam: integer;
+begin
+  aParam := 1;
+  if rbtnName.Checked = true then
+    aParam := 0
+  else if rbtnAbbrev.Checked = true then
+    aParam := 1
+  else if rbtnHeader.Checked = true then
+    aParam := 2;
+  SetAdhocLookup(aParam);
+  uComponents.Free;
+end;
+
+procedure TfrmReportsAdhocComponent1.HideEdits;
+begin
+  lblTimeLimit.Enabled := False;
+  lblOccuranceLimit.Enabled := False;
+  cboTimeLimit.Enabled := False;
+  edtOccuranceLimit.Enabled := False;
+  gpbDisplay.Enabled := False;
+  ckbHospitalLocation.Enabled := False;
+  ckbProviderNarrative.Enabled := False;
+  lblICD.Enabled := False;
+  cboICD.Enabled := False;
+  lblItems.Enabled := False;
+  ORListBox1.Enabled := False;
+  btnEditSubitems.Enabled := False;
+  cboTimeLimit.Text := '';
+  edtOccuranceLimit.Text := '';
+  ckbHospitalLocation.Checked := False;
+  ckbProviderNarrative.Checked := False;
+  cboICD.Text := '';
+end;
+
+procedure TfrmReportsAdhocComponent1.ORListBox2Click(Sender: TObject);
+var
+  i: integer;
+  a: string;
+  uHSCompFiles: TStringList;
+begin
+  HideEdits;
+  with ORListBox2 do
+    a := PHSCompRec(Items.Objects[ItemIndex])^.Segment;
+  uHSCompFiles := TStringList.Create;
+  HSComponentFiles(uHSCompFiles,Piece(a,';',2));
+  If uHSCompFiles.Count > 0 then
+    begin
+      uFile := Piece(uHSCompFiles.Strings[0],'^',3);
+      If Length(uFile) > 0 then
+        begin
+          lblItems.Enabled := True;
+          ORListBox1.Enabled := True;
+          btnEditSubItems.Enabled := True;
+        end;
+    end;
+  uHSCompFiles.Free;
+  with ORListBox2 do
+    begin
+      if length(Piece(Items[ItemIndex],'^',5))>0 then
+        begin
+          edtHeaderName.Text := PHSCompRec(Items.Objects[ItemIndex])^.Header;
+          edtHeaderName.Enabled := True;
+          lblHeaderName.Enabled := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',3))>0 then
+        begin
+          edtOccuranceLimit.Text :=
+            PHSCompRec(Items.Objects[ItemIndex])^.OccuranceLimit;
+          edtOccuranceLimit.Enabled := True;
+          lblOccuranceLimit.Enabled := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',4))>0 then
+        begin
+          cboTimeLimit.Text :=
+            PHSCompRec(Items.Objects[ItemIndex])^.TimeLimit;
+          cboTimeLimit.Enabled := True;
+          lblTimeLimit.Enabled := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',6))>0 then
+        begin
+          gpbDisplay.Enabled := True;
+          ckbHospitalLocation.Enabled := True;
+          if PHSCompRec(Items.Objects[ItemIndex])^.HospitalLocation = 'Y'
+            then ckbHospitalLocation.Checked := True
+          else
+            ckbHospitalLocation.Checked := False;
+        end;
+      if length(Piece(Items[ItemIndex],'^',7))>0 then
+        begin
+          gpbDisplay.Enabled := True;
+          lblICD.Enabled := True;
+          cboICD.Enabled := True;
+          cboICD.Text := PHSCompRec(Items.Objects[ItemIndex])^.ICDText;
+        end;
+      if length(Piece(Items[ItemIndex],'^',8))>0 then
+        begin
+          gpbDisplay.Enabled := True;
+          ckbProviderNarrative.Enabled := True;
+          if PHSCompRec(Items.Objects[ItemIndex])^.ProviderNarrative = 'Y'
+            then ckbProviderNarrative.Checked := True
+          else
+            ckbProviderNarrative.Checked := False;
+        end;
+      uCurrentComponent := PHSCompRec(Items.Objects[ItemIndex])^.ID;
+    end;
+  ORListBox1.Clear;
+  for i := 0 to uComponents.Count-1 do
+    if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
+      ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
+  if ORListBox1.Items.Count > 0  then
+    begin
+      lblItems.Enabled := True;
+      ORListBox1.Enabled := True;
+      btnEditSubItems.Enabled := True;
+    end;
+end;
+
+procedure TfrmReportsAdhocComponent1.btnRemoveComponentClick(Sender: TObject);
+var
+  i: integer;
+  chk: integer;
+begin
+  HideEdits;
+  edtHeaderName.Text := '';
+  edtHeaderName.Enabled := False;
+  lblHeaderName.Enabled := False;
+  chk := 0;
+  ORListBox1.Clear;
+  If ORListBox2.Items.Count < 1 then
+    begin
+      InfoBox('There are no items to remove.', 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end
+  else
+    for i := 0 to ORListBox2.Items.Count - 1 do
+      if ORListBox2.Selected[i] then
+          chk := 1;
+    if chk = 0 then
+      begin
+        InfoBox('Please select the item you wish to remove', 'Information', MB_OK or MB_ICONINFORMATION);
+        Exit;
+      end;
+    With ORListBox2 do
+      begin
+        for i := uComponents.Count-1 downto 0 do
+          if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
+            uComponents.Delete(i);
+        Items.Delete(ItemIndex);
+        if Items.Count < 1 then
+          begin
+            SpeedButton5.Enabled := false;
+            SpeedButton6.Enabled := false;
+          end;
+      end;
+end;
+
+procedure TfrmReportsAdhocComponent1.btnRemoveAllComponentsClick(Sender: TObject);
+
+var
+  i: integer;
+begin
+  HideEdits;
+  edtHeaderName.Text := '';
+  edtHeaderName.Enabled := False;
+  lblHeaderName.Enabled := False;
+  ORListBox1.Clear;
+  If ORListBox2.Items.Count < 1 then
+    begin
+      InfoBox('There are no items to remove.', 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end;
+  if InfoBox('This button will remove all selected components. OK?',
+    'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      With ORListBox2 do
+        begin
+          for i := uComponents.Count-1 downto 0 do
+            uComponents.Delete(i);
+          for i := Items.Count-1 downto 0 do
+            Items.Delete(i);
+        end;
+      SpeedButton5.Enabled := false;
+      SpeedButton6.Enabled := false;
+    end;
+end;
+
+procedure TfrmReportsAdhocComponent1.Splitter4CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  if NewSize < 50 then
+    NewSize := 50;
+end;
+
+procedure TfrmReportsAdhocComponent1.Splitter1CanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  if NewSize < 50 then
+    NewSize := 50;
+end;
+
+procedure TfrmReportsAdhocComponent1.btnAddComponentClick(Sender: TObject);
+var
+  HSCompPtr: PHSCompRec;
+  i: Integer;
+  uHSCompFiles: TStringList;
+  uCompSubs: TStringList;
+begin
+  If ORComboBox1.ItemIndex < 0 then
+    begin
+      InfoBox('Please select a component to Add.', 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end;
+  ORListBox1.Clear;
+  HideEdits;
+  New(HSCompPtr);
+  HSCompCtr := HSCompCtr + 1;
+  HSCompPtr^.ID := HSCompCtr;
+  uLimit := 0;
+  with ORComboBox1 do
+    begin
+      HSCompPtr^.Segment := Piece(Items[ItemIndex],'^',1);
+      HSCompPtr^.Name := Piece(Items[ItemIndex],'^',2);
+      HSCompPtr^.OccuranceLimit := Piece(Items[ItemIndex],'^',3);
+      HSCompPtr^.TimeLimit := UpperCase(Piece(Items[ItemIndex],'^',4));
+      HSCompPtr^.Header := Piece(Items[ItemIndex],'^',5);
+      HSCompPtr^.HospitalLocation := Piece(Items[ItemIndex],'^',6);
+      HSCompPtr^.ICDText := Piece(Items[ItemIndex],'^',7);
+      HSCompPtr^.ProviderNarrative := Piece(Items[ItemIndex],'^',8);
+      uCurrentComponent := HSCompCtr;
+    end;
+  with ORListBox2 do
+    begin
+      Items.AddObject(
+        ORComboBox1.Items[ORComboBox1.ItemIndex],TObject(HSCompPtr));
+      ItemIndex := Items.Count-1;
+      SpeedButton5.Enabled := true;
+      SpeedButton6.Enabled := true;
+    end;
+  uHSCompFiles := TStringList.Create;
+  uCompSubs := TStringList.Create;
+  HSComponentFiles(uHSCompFiles, Piece(HSCompPtr^.Segment,';',2));
+  If uHSCompFiles.Count > 0 then
+    begin
+      uFile := Piece(uHSCompFiles.Strings[0],'^',3);
+      If Length(Piece(uHSCompFiles.Strings[0],'^',4)) > 0 then
+        uLimit := StrToInt(Piece(uHSCompFiles.Strings[0],'^',4));
+      If Length(uFile) > 0 then
+        begin
+          lblItems.Enabled := True;
+          ORListBox1.Enabled := True;
+          btnEditSubItems.Enabled := True;
+          HSComponentSubs(uCompSubs, Piece(HSCompPtr^.Segment,';',1));
+          If uCompSubs.Count > 0 then
+            begin
+              ORListBox1.Clear;
+              FastAssign(uCompSubs, ORListBox1.Items);
+              for i := 0 to uCompSubs.Count-1 do
+                uComponents.Add(IntToStr(uCurrentComponent) + '^' + uFile +
+                  '^' + uCompSubs[i]);
+            end
+          Else
+            If ExecuteForm2 = True then
+              begin
+                ORListBox1.Clear;
+                for i := 0 to uComponents.Count-1 do
+                  if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
+                    ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
+                if ORListBox1.Items.Count < 1 then
+                  begin
+                    InfoBox('No sub-items were selected', 'Information', MB_OK or MB_ICONINFORMATION);
+                  end;
+              end
+            else
+              begin
+                InfoBox('No sub-items were selected', 'Information', MB_OK or MB_ICONINFORMATION);
+              end;
+        end;
+    end;
+  with ORComboBox1 do
+    begin
+      if length(Piece(Items[ItemIndex],'^',5))>0 then
+        begin
+          edtHeaderName.Text := Piece(Items[ItemIndex],'^',5);
+          edtHeaderName.Enabled := True;
+          lblHeaderName.Enabled := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',3))>0 then
+        begin
+          edtOccuranceLimit.Text := Piece(Items[ItemIndex],'^',3);
+          edtOccuranceLimit.Enabled := True;
+          lblOccuranceLimit.Enabled := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',4))>0 then
+        begin
+          cboTimeLimit.Text := Piece(Items[ItemIndex],'^',4);
+          cboTimeLimit.Enabled := True;
+          lblTimeLimit.Enabled := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',6))>0 then
+        begin
+          gpbDisplay.Enabled := True;
+          ckbHospitalLocation.Enabled := True;
+          if Piece(Items[ItemIndex],'^',6) = 'Y' then
+            ckbHospitalLocation.Checked := True;
+        end;
+      if length(Piece(Items[ItemIndex],'^',7))>0 then
+        begin
+          gpbDisplay.Enabled := True;
+          lblICD.Enabled := True;
+          cboICD.Enabled := True;
+          if Piece(Items[ItemIndex],'^',7) = 'L' then
+            cboICD.Text := 'Long text';
+          if Piece(Items[ItemIndex],'^',7) = 'S' then
+            cboICD.Text := 'Short text';
+          if Piece(Items[ItemIndex],'^',7) = 'C' then
+            cboICD.Text := 'Code only';
+          if Piece(Items[ItemIndex],'^',7) = 'T' then
+            cboICD.Text := 'Text only';
+          if Piece(Items[ItemIndex],'^',7) = 'N' then
+            cboICD.Text := 'None';
+        end;
+      if length(Piece(Items[ItemIndex],'^',8))>0 then
+        begin
+          gpbDisplay.Enabled := True;
+          ckbProviderNarrative.Enabled := True;
+          if Piece(Items[ItemIndex],'^',8) = 'Y' then
+            ckbProviderNarrative.Checked := True;
+        end;
+    end;
+  uHSCompFiles.Free;
+  uCompSubs.Free;
+end;
+
+procedure TfrmReportsAdhocComponent1.SpeedButton5Click(Sender: TObject);
+var
+  i:integer;
+begin
+  if SpeedButton5.Enabled then
+    with ORListBox2 do
+      if ItemIndex > 0 then
+        begin
+          i := ItemIndex;
+          Items.Move(i, i-1);
+          ItemIndex := i-1;
+        end;
+end;
+
+procedure TfrmReportsAdhocComponent1.SpeedButton6Click(Sender: TObject);
+var
+  i : Integer;
+begin
+  if SpeedButton6.Enabled then
+    with ORListbox2 do
+      if (ItemIndex < Items.Count-1) and
+         (ItemIndex <> -1) then
+        begin
+          i := ItemIndex;
+          Items.Move(i, i+1);
+          ItemIndex := i+1;
+        end;
+end;
+
+procedure TfrmReportsAdhocComponent1.ORListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
+  State: TDragState; var Accept: Boolean);
+begin
+  Accept := (Sender = Source) and
+    (TORListBox(Sender).ItemAtPos(Point(x,y), False) >= 0);
+  if Accept then
+    with Sender as TORListbox do
+      if Y > Height - ItemHeight then
+        begin
+          GoingUp := False;
+          Timer1.Enabled := True;
+        end
+      else if Y < ItemHeight then
+        begin
+          GoingUp := True;
+          Timer1.Enabled := True;
+        end
+      else Timer1.Enabled := False;
+end;
+
+procedure TfrmReportsAdhocComponent1.ORListBox2DragDrop(Sender, Source: TObject; X,
+  Y: Integer);
+var
+  NuPos: Integer;
+begin
+  with Sender as TORListbox do
+    begin
+      NuPos := ItemAtPos(Point(X,Y),False);
+      If NuPos >= Items.Count then Dec(NuPos);
+      Items.Move(ItemIndex, NuPos);
+      ItemIndex := NuPos;
+    end;
+end;
+
+procedure TfrmReportsAdhocComponent1.ORListBox2EndDrag(Sender, Target: TObject; X, Y: Integer);
+begin
+  if (Sender = ORListBox2) and (Target = ORComboBox1) then
+    btnRemoveComponentClick(nil);
+  Timer1.Enabled := False;
+end;
+
+procedure TfrmReportsAdhocComponent1.Timer1Timer(Sender: TObject);
+begin
+  with ORListBox2 do
+    if GoingUp then
+      if TopIndex > 0 then TopIndex := TopIndex - 1
+      else Timer1.Enabled := False
+    else
+      if TopIndex < Items.Count - 1 then TopIndex := TopIndex + 1
+      else Timer1.Enabled := False;
+end;
+
+procedure TfrmReportsAdhocComponent1.btnEditSubitemsClick(Sender: TObject);
+var
+  i: integer;
+begin
+  If ExecuteForm2 = True then
+      begin
+        lblItems.Enabled := False;
+        ORListBox1.Enabled := False;
+        ORListBox1.Clear;
+        for i := 0 to uComponents.Count-1 do
+          if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
+            ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
+        if ORListBox1.Items.Count > 0 then
+          begin
+            lblItems.Enabled := True;
+            ORListBox1.Enabled := True;
+            btnEditSubItems.Enabled := True;
+          end;
+      end;
+end;
+
+procedure TfrmReportsAdhocComponent1.edtHeaderNameExit(Sender: TObject);
+var
+  i: integer;
+begin
+  for i := 0 to ORListBox2.Items.Count - 1 do
+    if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
+      PHSCompRec(ORListBox2.Items.Objects[i])^.Header :=
+        edtHeaderName.Text;
+end;
+
+procedure TfrmReportsAdhocComponent1.edtOccuranceLimitExit(
+  Sender: TObject);
+var
+  i: integer;
+begin
+  for i := 0 to ORListBox2.Items.Count - 1 do
+    if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
+      PHSCompRec(ORListBox2.Items.Objects[i])^.OccuranceLimit :=
+        edtOccuranceLimit.Text;
+end;
+
+procedure TfrmReportsAdhocComponent1.cboTimeLimitExit(Sender: TObject);
+var
+  i: integer;
+begin
+  if cboTimeLimit.Text = 'No Limit' then
+    cboTimeLimit.Text := '99Y';
+  for i := 0 to ORListBox2.Items.Count - 1 do
+    if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
+      PHSCompRec(ORListBox2.Items.Objects[i])^.TimeLimit :=
+        cboTimeLimit.Text;
+end;
+
+procedure TfrmReportsAdhocComponent1.ckbHospitalLocationExit(
+  Sender: TObject);
+var
+  i: integer;
+begin
+  for i := 0 to ORListBox2.Items.Count - 1 do
+    if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
+      if ckbHospitalLocation.Checked = True then
+        PHSCompRec(ORListBox2.Items.Objects[i])^.HospitalLocation := 'Y'
+      else
+        PHSCompRec(ORListBox2.Items.Objects[i])^.HospitalLocation := 'N';
+end;
+
+procedure TfrmReportsAdhocComponent1.ckbProviderNarrativeExit(
+  Sender: TObject);
+var
+  i: integer;
+begin
+  for i := 0 to ORListBox2.Items.Count - 1 do
+    if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
+      if ckbProviderNarrative.Checked = True then
+        PHSCompRec(ORListBox2.Items.Objects[i])^.ProviderNarrative := 'Y'
+      else
+        PHSCompRec(ORListBox2.Items.Objects[i])^.ProviderNarrative := 'N';
+end;
+
+procedure TfrmReportsAdhocComponent1.cboICDExit(Sender: TObject);
+var
+  i: integer;
+begin
+  for i := 0 to ORListBox2.Items.Count - 1 do
+    if PHSCompRec(ORListBox2.Items.Objects[i])^.ID = uCurrentComponent then
+      PHSCompRec(ORListBox2.Items.Objects[i])^.ICDText := cboICD.Text;
+end;
+
+procedure TfrmReportsAdhocComponent1.ORComboBox1KeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  //This used to be a KeyUp.  I changed it because it can call up the component
+  //selection screen, which can be left with a return.  Leaving the component
+  //screen happens on key down, so this screen gets focused and receives the key
+  //up message, so it pops up tyhe component screen again.
+  If Key = 13 then
+    with ORComboBox1 do
+      if (Text <> '') and (Items.IndexOf (Text) >= 0) then
+        begin
+          ItemIndex := Items.IndexOf(Text);
+          btnAddComponentClick(nil);
+        end;
+end;
+
+procedure TfrmReportsAdhocComponent1.LoadComponents(Dest: TStrings);
+var
+  sComponents: TStringList;
+  i: integer;
+  s: string;
+begin
+  sComponents := TStringList.Create;
+  if uListState = 0 then
+    begin
+      HSComponents(sComponents);
+      for i := 0 to sComponents.Count - 1 do
+        begin
+          s := sComponents.Strings[i];
+          s := MixedCase(piece(s,'[',1)) + '[' + piece(s,'[',2);
+          sComponents.Strings[i] := s;
+        end;
+    end
+  else  if uListState = 1 then
+    begin
+      HSABVComponents(sComponents);
+      for i := 0 to sComponents.Count - 1 do
+        begin
+          s := sComponents.Strings[i];
+          s := piece(s,'-',1) + '-' + MixedCase(piece(s,'-',2));
+          sComponents.Strings[i] := s;
+        end;
+    end
+  else  if uListState = 2 then
+    begin
+      HSDispComponents(sComponents);
+      for i := 0 to sComponents.Count - 1 do
+        begin
+          s := sComponents.Strings[i];
+          s := MixedCase(piece(s,'[',1)) + '[' + piece(s,'[',2);
+          sComponents.Strings[i] := s;
+        end;
+    end;
+  QuickCopy(sComponents,Dest);
+  sComponents.Free;
+end;
+
+procedure TfrmReportsAdhocComponent1.rbtnAbbrevClick(Sender: TObject);
+begin
+  inherited;
+  uListState := 1;
+  ORComboBox1.Clear;
+  LoadComponents(ORComboBox1.Items);
+  ORComboBox1.SetFocus;
+end;
+
+procedure TfrmReportsAdhocComponent1.rbtnNameClick(Sender: TObject);
+begin
+  inherited;
+  uListState := 0;
+  ORComboBox1.Clear;
+  LoadComponents(ORComboBox1.Items);
+  ORComboBox1.SetFocus;
+end;
+
+procedure TfrmReportsAdhocComponent1.rbtnHeaderClick(Sender: TObject);
+begin
+  inherited;
+  uListState := 2;
+  ORComboBox1.Clear;
+  LoadComponents(ORComboBox1.Items);
+  ORComboBox1.SetFocus;
+end;
+
+procedure TfrmReportsAdhocComponent1.pnl5ButtonEnter(Sender: TObject);
+begin
+  inherited;
+  (Sender as TPanel).BevelOuter := bvRaised;
+end;
+
+procedure TfrmReportsAdhocComponent1.pnl5ButtonExit(Sender: TObject);
+begin
+  inherited;
+  (Sender as TPanel).BevelOuter := bvNone;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocSubItem1.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocSubItem1.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocSubItem1.dfm	(revision 1676)
@@ -0,0 +1,306 @@
+inherited frmReportsAdhocSubItem1: TfrmReportsAdhocSubItem1
+  Left = 223
+  Top = 170
+  BorderIcons = [biSystemMenu]
+  Caption = 'frmReportsAdhocSubItem1'
+  ClientHeight = 314
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 341
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GroupBox1: TGroupBox [0]
+    Left = 0
+    Top = 0
+    Width = 427
+    Height = 314
+    Align = alClient
+    Color = clBtnFace
+    ParentColor = False
+    TabOrder = 0
+    object Splitter3: TSplitter
+      Left = 201
+      Top = 49
+      Width = 5
+      Height = 230
+    end
+    object pnl7Button: TKeyClickPanel
+      Left = 395
+      Top = 81
+      Width = 19
+      Height = 24
+      BevelOuter = bvNone
+      TabOrder = 4
+      TabStop = True
+      OnClick = SpeedButton7Click
+      OnEnter = pnl7ButtonEnter
+      OnExit = pnl7ButtonExit
+      object SpeedButton7: TSpeedButton
+        Left = 1
+        Top = 1
+        Width = 17
+        Height = 22
+        Enabled = False
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          0400000000000001000000000000000000001000000010000000000000000000
+          800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000333
+          3333333333777F3333333333330F033333333333337F7F3333333333330F0333
+          33333333337F7F3333333333330F033333333333337F7F3333333333330F0333
+          33333333337F7F3333333333330F033333333333FF7F7FFFF3333330000F0000
+          3333333777737777F3333330FFFFFFF0333333373F333337333333330FFFFF03
+          333333337F33337F333333330FFFFF033333333373F333733333333330FFF033
+          3333333337F337F33333333330FFF03333333333373F373333333333330F0333
+          33333333337F7F3333333333330F033333333333337373333333333333303333
+          333333333337F333333333333330333333333333333733333333}
+        NumGlyphs = 2
+        OnClick = SpeedButton7Click
+      end
+    end
+    object pnl8Button: TKeyClickPanel
+      Left = 395
+      Top = 106
+      Width = 19
+      Height = 24
+      BevelOuter = bvNone
+      TabOrder = 5
+      TabStop = True
+      OnClick = SpeedButton8Click
+      OnEnter = pnl7ButtonEnter
+      OnExit = pnl7ButtonExit
+      object SpeedButton8: TSpeedButton
+        Left = 1
+        Top = 1
+        Width = 17
+        Height = 22
+        Enabled = False
+        Glyph.Data = {
+          76010000424D7601000000000000760000002800000020000000100000000100
+          0400000000000001000000000000000000001000000010000000000000000000
+          800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333303333
+          333333333337F33333333333333033333333333333373F3333333333330F0333
+          33333333337F7F3333333333330F033333333333337373F33333333330FFF033
+          3333333337F337F33333333330FFF033333333333733373F333333330FFFFF03
+          333333337F33337F333333330FFFFF033333333373333373F3333330FFFFFFF0
+          33333337FFFF3FF7F3333330000F000033333337777F777733333333330F0333
+          33333333337F7F3333333333330F033333333333337F7F3333333333330F0333
+          33333333337F7F3333333333330F033333333333337F7F3333333333330F0333
+          33333333337F7F33333333333300033333333333337773333333}
+        NumGlyphs = 2
+        OnClick = SpeedButton8Click
+      end
+    end
+    object ORComboBox2: TORComboBox
+      Left = 2
+      Top = 49
+      Width = 199
+      Height = 230
+      Style = orcsSimple
+      Align = alLeft
+      AutoSelect = True
+      Caption = 'File Selections'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 1
+      OnDblClick = btnAddSelClick
+      OnKeyUp = ORComboBox2KeyUp
+      OnNeedData = ORComboBox2NeedData
+      CharsNeedMatch = 1
+    end
+    object ORListBox1: TORListBox
+      Left = 232
+      Top = 48
+      Width = 161
+      Height = 129
+      DragMode = dmAutomatic
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 3
+      OnDragDrop = ORListBox1DragDrop
+      OnDragOver = ORListBox1DragOver
+      OnEndDrag = ORListBox1EndDrag
+      Caption = 'File Entries Selected'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+    end
+    object Panel4: TPanel
+      Left = 2
+      Top = 15
+      Width = 423
+      Height = 34
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object Label4: TLabel
+        Left = 0
+        Top = 20
+        Width = 71
+        Height = 13
+        Caption = 'File Selections:'
+      end
+      object Label5: TLabel
+        Left = 232
+        Top = 20
+        Width = 99
+        Height = 13
+        Caption = 'File Entries Selected:'
+      end
+      object Label6: TStaticText
+        Left = 232
+        Top = 1
+        Width = 98
+        Height = 17
+        Caption = 'Selections allowed: '
+        TabOrder = 0
+      end
+      object lblLimit: TStaticText
+        Left = 328
+        Top = 1
+        Width = 42
+        Height = 17
+        Caption = 'No Limit'
+        TabOrder = 1
+      end
+    end
+    object Panel5: TPanel
+      Left = 2
+      Top = 279
+      Width = 423
+      Height = 33
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 6
+      DesignSize = (
+        423
+        33)
+      object btnCancel: TButton
+        Left = 341
+        Top = 4
+        Width = 75
+        Height = 25
+        Anchors = [akRight, akBottom]
+        Cancel = True
+        Caption = 'Cancel'
+        TabOrder = 1
+        OnClick = btnCancelClick
+      end
+      object btnOK: TButton
+        Left = 251
+        Top = 4
+        Width = 75
+        Height = 25
+        Anchors = [akRight, akBottom]
+        Caption = 'OK'
+        TabOrder = 0
+        OnClick = btnOKClick
+      end
+    end
+    object Panel8: TPanel
+      Left = 208
+      Top = 56
+      Width = 25
+      Height = 137
+      BevelOuter = bvNone
+      TabOrder = 2
+      object btnAddSel: TButton
+        Left = 4
+        Top = 5
+        Width = 17
+        Height = 22
+        Caption = '>'
+        TabOrder = 0
+        OnClick = btnAddSelClick
+      end
+      object btnRemoveSel: TButton
+        Left = 4
+        Top = 30
+        Width = 17
+        Height = 22
+        Caption = '<'
+        TabOrder = 1
+        OnClick = btnRemoveSelClick
+      end
+      object btnRemoveAllSel: TButton
+        Left = 4
+        Top = 55
+        Width = 17
+        Height = 22
+        Caption = '<<'
+        TabOrder = 2
+        OnClick = btnRemoveAllSelClick
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = GroupBox1'
+        'Status = stsDefault')
+      (
+        'Component = pnl7Button'
+        'Status = stsDefault')
+      (
+        'Component = pnl8Button'
+        'Status = stsDefault')
+      (
+        'Component = ORComboBox2'
+        'Status = stsDefault')
+      (
+        'Component = ORListBox1'
+        'Status = stsDefault')
+      (
+        'Component = Panel4'
+        'Status = stsDefault')
+      (
+        'Component = Label6'
+        'Status = stsDefault')
+      (
+        'Component = lblLimit'
+        'Status = stsDefault')
+      (
+        'Component = Panel5'
+        'Status = stsDefault')
+      (
+        'Component = btnCancel'
+        'Status = stsDefault')
+      (
+        'Component = btnOK'
+        'Status = stsDefault')
+      (
+        'Component = Panel8'
+        'Status = stsDefault')
+      (
+        'Component = btnAddSel'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveSel'
+        'Status = stsDefault')
+      (
+        'Component = btnRemoveAllSel'
+        'Status = stsDefault')
+      (
+        'Component = frmReportsAdhocSubItem1'
+        'Status = stsDefault'))
+  end
+  object Timer2: TTimer
+    OnTimer = Timer2Timer
+    Left = 392
+    Top = 16
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocSubItem1.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocSubItem1.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsAdhocSubItem1.pas	(revision 1676)
@@ -0,0 +1,360 @@
+unit fReportsAdhocSubItem1;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, ORCtrls, Buttons, ORfn, fAutoSz, VA508AccessibilityManager;
+
+type
+  TfrmReportsAdhocSubItem1 = class(TfrmAutoSz)
+    GroupBox1: TGroupBox;
+    Splitter3: TSplitter;
+    pnl7Button: TKeyClickPanel;
+    SpeedButton7: TSpeedButton;
+    pnl8Button: TKeyClickPanel;
+    SpeedButton8: TSpeedButton;
+    ORComboBox2: TORComboBox;
+    ORListBox1: TORListBox;
+    Panel4: TPanel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Panel5: TPanel;
+    btnCancel: TButton;
+    Panel8: TPanel;
+    btnAddSel: TButton;
+    btnRemoveSel: TButton;
+    btnRemoveAllSel: TButton;
+    btnOK: TButton;
+    Timer2: TTimer;
+    Label6: TStaticText;
+    lblLimit: TStaticText;
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure ORListBox1EndDrag(Sender, Target: TObject; X, Y: Integer);
+    procedure ORListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
+    procedure ORListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
+      State: TDragState; var Accept: Boolean);
+    procedure Timer2Timer(Sender: TObject);
+    procedure SpeedButton8Click(Sender: TObject);
+    procedure SpeedButton7Click(Sender: TObject);
+    procedure btnRemoveAllSelClick(Sender: TObject);
+    procedure btnRemoveSelClick(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure btnAddSelClick(Sender: TObject);
+    procedure ORComboBox2KeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure ORComboBox2NeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure pnl7ButtonEnter(Sender: TObject);
+    procedure pnl7ButtonExit(Sender: TObject);
+  private
+    { Private declarations }
+    GoingUp: Boolean;
+    OKPressed: Boolean;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmReportsAdhocSubItem1: TfrmReportsAdhocSubItem1;
+
+function ExecuteForm2: Boolean;
+
+implementation
+
+uses fReportsAdhocComponent1, rReports, VAUtils;
+
+{$R *.DFM}
+
+function ExecuteForm2: Boolean;
+begin
+  Result := False;
+  frmReportsAdhocSubItem1 := TfrmReportsAdhocSubItem1.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmReportsAdhocSubItem1));
+    frmReportsAdhocSubItem1.ShowModal;
+    if frmReportsAdhocSubItem1.OKPressed then
+      Result := True;
+  finally
+    frmReportsAdhocSubItem1.Release;
+  end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.btnCancelClick(Sender: TObject);
+begin
+  ORComboBox2.Clear;
+  ORListBox1.Clear;
+  close;
+end;
+
+procedure TfrmReportsAdhocSubItem1.FormCreate(Sender: TObject);
+var
+  i: integer;
+begin
+  uLimitCount := 1;
+  OKPressed := False;
+  Panel8.Left := Splitter3.Left + Splitter3.Width;
+  Panel8.Align := Splitter3.Align;
+  ORListBox1.Left := Panel8.Left + Panel8.Width;
+  ORListBox1.Align := Panel8.Align;
+  RedrawSuspend(ORComboBox2.Handle);
+  ORComboBox2.InitLongList('');
+  RedrawActivate(ORComboBox2.Handle);
+  If uLimit>0 then
+        lblLimit.Caption := IntToStr(uLimit)
+      else
+        lblLimit.Caption := 'No Limit';
+  ORListBox1.Caption := 'File Entries Selected ( Selections Allowed: ' +
+    lblLimit.Caption + ')';
+  Caption := Piece(frmReportsAdhocComponent1.ORComboBox1.Items
+    [frmReportsAdhocComponent1.ORComboBox1.ItemIndex],'^',2);
+  for i := 0 to uComponents.Count-1 do
+    if piece(uComponents[i],'^',1) = IntToStr(uCurrentComponent) then
+      ORListBox1.Items.Add(Pieces(uComponents[i],'^',3,10));
+end;
+
+procedure TfrmReportsAdhocSubItem1.ORListBox1EndDrag(Sender, Target: TObject; X, Y: Integer);
+begin
+  if (Sender = ORListBox1) and (Target = ORComboBox2) then
+    btnRemoveSelClick(nil);
+  Timer2.Enabled := False;
+end;
+
+procedure TfrmReportsAdhocSubItem1.ORListBox1DragDrop(Sender, Source: TObject; X,
+  Y: Integer);
+var
+  NuPos: Integer;
+begin
+  with Sender as TORListbox do
+    begin
+      NuPos := ItemAtPos(Point(X,Y),False);
+      If NuPos >= Items.Count then Dec(NuPos);
+      Items.Move(ItemIndex, NuPos);
+      ItemIndex := NuPos;
+    end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.ORListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
+  State: TDragState; var Accept: Boolean);
+begin
+  Accept := (Sender = Source) and (TORListBox(Sender).ItemAtPos(Point(x,y), False) >= 0);
+  if Accept then
+    with Sender as TORListbox do
+      if Y > Height - ItemHeight then
+        begin
+          GoingUp := False;
+          Timer2.Enabled := True;
+        end
+      else if Y < ItemHeight then
+        begin
+          GoingUp := True;
+          Timer2.Enabled := True;
+        end
+      else Timer2.Enabled := False;
+end;
+
+procedure TfrmReportsAdhocSubItem1.Timer2Timer(Sender: TObject);
+begin
+ with ORListBox1 do
+    if GoingUp then
+      if TopIndex > 0 then TopIndex := TopIndex - 1
+      else Timer2.Enabled := False
+    else
+      if TopIndex < Items.Count - 1 then TopIndex := TopIndex + 1
+      else Timer2.Enabled := False;
+end;
+
+procedure TfrmReportsAdhocSubItem1.SpeedButton8Click(Sender: TObject);
+var
+  i : Integer;
+begin
+  with ORListbox1 do
+    if (ItemIndex < Items.Count-1) and
+       (ItemIndex <> -1) then
+      begin
+        i := ItemIndex;
+        Items.Move(i, i+1);
+        ItemIndex := i+1;
+      end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.SpeedButton7Click(Sender: TObject);
+var
+  i:integer;
+begin
+  with ORListBox1 do
+    if ItemIndex > 0 then
+      begin
+        i := ItemIndex;
+        Items.Move(i, i-1);
+        ItemIndex := i-1;
+      end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.btnRemoveAllSelClick(Sender: TObject);
+var
+  i: integer;
+begin
+  If ORListBox1.Items.Count < 1 then
+    begin
+      InfoBox('There are no items to remove.', 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end;
+  if InfoBox('This button will remove all selected items. OK?',
+    'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      With ORListBox1 do
+        begin
+          for i := uComponents.Count-1 downto 0 do
+            uComponents.Delete(i);
+          for i := Items.Count-1 downto 0 do
+            Items.Delete(i);
+        end;
+      uLimitCount := 1;
+      SpeedButton7.Enabled := false;
+      SpeedButton8.Enabled := false;
+    end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.btnRemoveSelClick(Sender: TObject);
+var
+  i: integer;
+  chk: integer;
+begin
+  chk := 0;
+  If ORListBox1.Items.Count < 1 then
+    begin
+      InfoBox('There are no items to remove.', 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end
+  else
+    for i := 0 to ORListBox1.Items.Count - 1 do
+      if ORListBox1.Selected[i] then
+          chk := 1;
+    if chk = 0 then
+      begin
+        InfoBox('Please select the item you wish to remove', 'Information', MB_OK or MB_ICONINFORMATION);
+        Exit;
+      end;
+    With ORListBox1 do
+      begin
+        for i := uComponents.Count-1 downto 0 do
+          if piece(uComponents[i],'^',2) = Piece(Items[ItemIndex],'^',1) then
+            uComponents.Delete(i);
+        Items.Delete(ItemIndex);
+        uLimitCount := uLimitCount - 1;
+        if Items.Count < 1 then
+          begin
+            SpeedButton7.Enabled := false;
+            SpeedButton8.Enabled := false;
+          end;
+      end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.btnOKClick(Sender: TObject);
+var
+  i: integer;
+  uTestList: TStringList;
+begin
+  uTestList := TStringList.Create;
+  uTestList.Clear;
+  for i := 0 to ORListBox1.Items.Count-1 do
+    uTestList.Add(ORListBox1.Items[i]);
+  for i := uComponents.Count-1 downto 0 do
+    if piece(uComponents[i],'^',1)=IntToStr(uCurrentComponent) then
+      uComponents.Delete(i);
+  for i := 0 to uTestList.Count-1 do
+    if (uLimit = 0) or (i < uLimit) then
+      uComponents.Add(IntToStr(uCurrentComponent)
+        + '^' + uFile + '^' + uTestList[i]);
+  OKPressed := True;
+  ORListBox1.Clear;
+  uTestList.Free;
+  Close;
+end;
+
+procedure TfrmReportsAdhocSubItem1.btnAddSelClick(Sender: TObject);
+var
+  i: integer;
+  uHSSubItems: TStringList;
+begin
+  If (uLimit <> 0) and (uLimitCount > uLimit) then
+    begin
+      Application.MessageBox(
+      'Sorry, you have reached the selection limit for this component',
+      'Selection Error',MB_OK + MB_DEFBUTTON1);
+      Exit;
+    end;
+  If ORComboBox2.ItemIndex < 0 then
+    begin
+      InfoBox('Please select an item to Add.', 'Information', MB_OK or MB_ICONINFORMATION);
+      Exit;
+    end;
+  If uFile = '60' then
+    begin
+      uHSSubItems := TStringList.Create;
+      HSSubItems(uHSSubItems,
+        Piece(ORComboBox2.Items[ORComboBox2.ItemIndex],'^',1));
+      If uHSSubItems.Count > 0 then
+        for i := 0 to uHSSubItems.Count-1 do
+          begin
+            ORListBox1.Items.Add(uHSSubItems[i]);
+            uLimitCount := uLimitCount + 1;
+          end
+      Else
+        begin
+          ORListBox1.Items.Add(ORComboBox2.Items[ORComboBox2.ItemIndex]);
+          uLimitCount := uLimitCount + 1;
+        end;
+      uHSSubItems.Free;
+    end
+  Else
+    begin
+      ORListBox1.Items.Add(ORComboBox2.Items[ORComboBox2.ItemIndex]);
+      uLimitCount := uLimitCount + 1;
+    end;
+  If (uLimit <> 0) and (uLimitCount > (uLimit+1)) then
+    ShowMsg(
+      'MAXIMUM SELECTION LIMIT EXCEEDED! Only the first '
+      + IntToStr(uLimit) + ' items in the list will be used');
+  If ORListBox1.Items.Count > 0 then
+    begin
+      SpeedButton7.Enabled := true;
+      SpeedButton8.Enabled := true;
+    end;
+  btnOK.SetFocus;
+end;
+
+procedure TfrmReportsAdhocSubItem1.ORComboBox2KeyUp(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+begin
+  If Key = 13 then
+    with ORComboBox2 do
+      if (Text <> '') and (Items.IndexOf (Text) >= 0) then
+        begin
+          ItemIndex := Items.IndexOf(Text);
+          btnAddSelClick(nil);
+          Key := 0;
+        end;
+end;
+
+procedure TfrmReportsAdhocSubItem1.ORComboBox2NeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  ORComboBox2.ForDataUse(HSFileLookup(uFile,StartFrom,Direction));
+end;
+
+procedure TfrmReportsAdhocSubItem1.pnl7ButtonEnter(Sender: TObject);
+begin
+  inherited;
+  (sender as TPanel).BevelOuter := bvRaised;
+end;
+
+procedure TfrmReportsAdhocSubItem1.pnl7ButtonExit(Sender: TObject);
+begin
+  inherited;
+  (sender as TPanel).BevelOuter := bvNone;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsPrint.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsPrint.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsPrint.dfm	(revision 1676)
@@ -0,0 +1,164 @@
+inherited frmReportPrt: TfrmReportPrt
+  Left = 507
+  Top = 114
+  Caption = 'Report Print Device Selection'
+  ClientHeight = 314
+  ClientWidth = 424
+  Position = poScreenCenter
+  ExplicitWidth = 432
+  ExplicitHeight = 348
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblPrintTo: TLabel [0]
+    Left = 8
+    Top = 271
+    Width = 3
+    Height = 13
+  end
+  object lblReportsTitle: TMemo [1]
+    Left = 8
+    Top = 8
+    Width = 301
+    Height = 53
+    TabStop = False
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'Report Title, Date/Time, Location')
+    ReadOnly = True
+    TabOrder = 4
+  end
+  object grpDevice: TGroupBox [2]
+    Left = 8
+    Top = 69
+    Width = 411
+    Height = 192
+    Caption = 'Device'
+    TabOrder = 0
+    object lblMargin: TLabel
+      Left = 8
+      Top = 166
+      Width = 60
+      Height = 13
+      AutoSize = False
+      Caption = 'Right Margin'
+    end
+    object lblLength: TLabel
+      Left = 120
+      Top = 166
+      Width = 61
+      Height = 13
+      AutoSize = False
+      Caption = 'Page Length'
+    end
+    object txtRightMargin: TMaskEdit
+      Left = 72
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 1
+    end
+    object txtPageLength: TMaskEdit
+      Left = 184
+      Top = 164
+      Width = 34
+      Height = 19
+      AutoSize = False
+      EditMask = '99999;0; '
+      MaxLength = 5
+      TabOrder = 2
+    end
+    object cboDevice: TORComboBox
+      Left = 8
+      Top = 16
+      Width = 395
+      Height = 140
+      Style = orcsSimple
+      AutoSelect = True
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = False
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      ParentShowHint = False
+      Pieces = '2,4'
+      ShowHint = True
+      Sorted = False
+      SynonymChars = '<>'
+      TabPositions = '30'
+      TabOrder = 0
+      OnChange = cboDeviceChange
+      OnNeedData = cboDeviceNeedData
+      CharsNeedMatch = 1
+    end
+  end
+  object cmdOK: TButton [3]
+    Left = 267
+    Top = 272
+    Width = 72
+    Height = 22
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 347
+    Top = 272
+    Width = 72
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  object chkDefault: TCheckBox [5]
+    Left = 8
+    Top = 294
+    Width = 171
+    Height = 17
+    Caption = 'Save as user'#39's default printer'
+    TabOrder = 1
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblReportsTitle'
+        'Status = stsDefault')
+      (
+        'Component = grpDevice'
+        'Status = stsDefault')
+      (
+        'Component = txtRightMargin'
+        'Status = stsDefault')
+      (
+        'Component = txtPageLength'
+        'Status = stsDefault')
+      (
+        'Component = cboDevice'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = chkDefault'
+        'Status = stsDefault')
+      (
+        'Component = frmReportPrt'
+        'Status = stsDefault'))
+  end
+  object dlgWinPrinter: TPrintDialog
+    Left = 334
+    Top = 18
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsPrint.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsPrint.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReportsPrint.pas	(revision 1676)
@@ -0,0 +1,570 @@
+unit fReportsPrint;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, fAutoSz, ORCtrls, ORNet, Mask, ComCtrls, rECS,
+  fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmReportPrt = class(TfrmBase508Form)
+    lblReportsTitle: TMemo;
+    lblPrintTo: TLabel;
+    grpDevice: TGroupBox;
+    lblMargin: TLabel;
+    lblLength: TLabel;
+    txtRightMargin: TMaskEdit;
+    txtPageLength: TMaskEdit;
+    cboDevice: TORComboBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    dlgWinPrinter: TPrintDialog;
+    chkDefault: TCheckBox;
+    procedure cboDeviceChange(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cboDeviceNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure FindVType;
+
+  private
+    { Private declarations }
+    FReports: string;
+    FReportText: TRichEdit;
+    procedure DisplaySelectDevice;
+
+  public
+    { Public declarations }
+  end;
+
+var
+  frmReportPrt: TfrmReportPrt;
+
+procedure PrintReports(AReports: string; const AReportsTitle: string);
+function StringPad(aString: string; aStringCount, aPadCount: integer): String;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rCore, uCore, fReports, rReports, uReports, Printers, fFrame,
+  VAUtils;
+
+const
+  TX_NODEVICE = 'A device must be selected to print, or press ''Cancel'' to not print.';
+  TX_NODEVICE_CAP = 'Device Not Selected';
+  TX_ERR_CAP = 'Print Error';
+  PAGE_BREAK = '**PAGE BREAK**';
+  QT_OTHER      = 0;
+  QT_HSTYPE     = 1;
+  QT_DATERANGE  = 2;
+  QT_IMAGING    = 3;
+  QT_NUTR       = 4;
+  QT_PROCEDURES = 19;
+  QT_SURGERY    = 28;
+  QT_HSCOMPONENT   = 5;
+  QT_HSWPCOMPONENT = 6;
+
+procedure PrintReports(AReports: string; const AReportsTitle: string);
+{ displays a form that prompts for a device and then prints the report }
+var
+  frmReportPrt: TfrmReportPrt;
+  DefPrt: string;
+begin
+  frmReportPrt := TfrmReportPrt.Create(Application);
+  try
+    ResizeAnchoredFormToFont(TForm(frmReportPrt));
+    with frmReportPrt do
+    begin
+      lblReportsTitle.Text := AReportsTitle;
+      FReports := AReports;
+      DefPrt := GetDefaultPrinter(User.Duz, Encounter.Location);
+      if User.CurrentPrinter = '' then User.CurrentPrinter := DefPrt;
+      with cboDevice do
+        begin
+          if Printer.Printers.Count > 0 then
+            begin
+              Items.Add('WIN;Windows Printer^Windows Printer');
+              Items.Add('^--------------------VistA Printers----------------------');
+            end;
+          if User.CurrentPrinter <> '' then
+            begin
+              InitLongList(Piece(User.CurrentPrinter, ';', 2));
+              SelectByID(User.CurrentPrinter);
+            end
+          else
+            InitLongList('');
+        end;
+      if (DefPrt = 'WIN;Windows Printer') and
+         (User.CurrentPrinter = DefPrt) then
+         cmdOKClick(frmReportPrt)
+      else
+         ShowModal;
+    end;
+  finally
+    frmReportPrt.Release;
+  end;
+end;
+
+procedure TfrmReportPrt.FindVType;
+var
+  i,j,k,L,cnt: integer;
+  aBasket: TStringList;
+  aID, aHead, aData, aCol, x: string;
+  ListItem: TListItem;
+  aWPFlag: Boolean;
+begin
+  aBasket := TStringList.Create;
+  aBasket.Clear;
+  //frmReports.MemText.Clear;
+  aHead := '';
+  cnt := 2;
+  //aWPFlag := false;
+  for i := 0 to uColumns.Count - 1 do
+    begin
+      if (piece(uColumns[i],'^',7) = '1') and (not(piece(uColumns[i],'^',4) = '1')) then
+        begin
+          L := StrToIntDef(piece(uColumns[i],'^',6),15);
+          if length(piece(uColumns[i],'^',8)) > 0 then
+            x := piece(uColumns[i],'^',8)
+          else
+            x := piece(uColumns[i],'^',1);
+          x := StringPad(x, L, L+1);
+          if frmReports.TabControl1.Tabs.Count > 1  then
+            aHead := aHead + x
+          else
+            if i = 0 then
+              continue
+            else
+              aHead := aHead + x;
+        end;
+    end;
+  if length(aHead) > 0 then
+    begin
+      FReportText.Lines.Add(aHead);
+      FReportText.Lines.Add('-------------------------------------------------------------------------------');
+      //frmReports.memText.Lines.Add(aHead);
+      //frmReports.MemText.Lines.Add('-------------------------------------------------------------------------------');
+    end;
+  for i := 0 to frmReports.lvReports.Items.Count - 1 do
+    if frmReports.lvReports.Items[i].Selected then
+      begin
+        aData := '';
+        aWPFlag := false;
+        ListItem := frmReports.lvReports.Items[i];
+        aID := ListItem.SubItems[0];
+       if frmReports.TabControl1.Tabs.Count > 1 then
+          begin
+            L := StrToIntDef(piece(uColumns[0],'^',6),10);
+            x := StringPad(ListItem.Caption, L, L+1);
+            aData := x;
+          end;
+        for j := 0 to RowObjects.ColumnList.Count - 1 do
+          begin
+            aCol := TCellObject(RowObjects.ColumnList[j]).Handle;
+            if piece(aID,':',1) = piece(TCellObject(RowObjects.ColumnList[j]).Handle,':',1) then
+              if ListItem.Caption = (piece(TCellObject(RowObjects.ColumnList[j]).Site,';',1)) then
+                begin
+                  if (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',7) = '1') and
+                   (not (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',4) = '1')) then
+                    begin
+                      FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
+                      for k := 0 to aBasket.Count - 1 do
+                        begin
+                          L := StrToIntDef(piece(uColumns[StrToInt(piece(aCol,':',2))],'^',6),15);
+                          x := StringPad(aBasket[k], L, L+1);
+                          aData := aData + x;
+                        end;
+                    end;
+                end;
+          end;
+        //frmReports.memText.Lines.Add(aData);
+        FReportText.Lines.Add(aData);
+        cnt := cnt + 1;
+        if cnt > 40 then
+          begin
+            cnt := 0;
+            //frmReports.memText.Lines.Add('**PAGE BREAK**');
+            FReportText.Lines.Add('**PAGE BREAK**');
+          end;
+        for j := 0 to RowObjects.ColumnList.Count - 1 do
+          begin
+            aCol := TCellObject(RowObjects.ColumnList[j]).Handle;
+            if piece(aID,':',1) = piece(TCellObject(RowObjects.ColumnList[j]).Handle,':',1) then
+              if ListItem.Caption = (piece(TCellObject(RowObjects.ColumnList[j]).Site,';',1)) then
+                begin
+                  if (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',7) = '1') and
+                     (piece(uColumns[StrToInt(piece(aCol,':',2))],'^',4) = '1') then
+                    begin
+                      aWPFlag := true;
+                      FastAssign(TCellObject(RowObjects.ColumnList[j]).Data, aBasket);
+                      //frmReports.MemText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
+                      FReportText.Lines.Add(TCellObject(RowObjects.ColumnList[j]).Name);
+                      cnt := cnt + 1;
+                      for k := 0 to aBasket.Count - 1 do
+                        begin
+                          //frmReports.memText.Lines.Add('  ' + aBasket[k]);
+                          FReportText.Lines.Add('  ' + aBasket[k]);
+                          cnt := cnt + 1;
+                          if cnt > 40 then
+                            begin
+                              cnt := 0;
+                              //frmReports.memText.Lines.Add('**PAGE BREAK**');
+                              FReportText.Lines.Add('**PAGE BREAK**');
+                            end;
+                        end;
+                    end;
+                end;
+          end;
+        if aWPFlag = true then
+          begin
+            //frmReports.MemText.Lines.Add('===============================================================================');
+            FReportText.Lines.Add('===============================================================================');
+          end;
+      end;
+  aBasket.Free;
+end;
+
+function StringPad(aString: string; aStringCount, aPadCount: integer): String;
+var
+  s: integer;
+begin
+  if aStringCount >= aPadCount then
+    aStringCount := aPadCount - 1;
+  Result := copy(aString, 1, aStringCount);
+  s := aPadCount - length(Result);
+  if s < 0 then s := 0;
+  Result := Result + StringOfChar(' ', s);
+end;
+
+procedure TfrmReportPrt.DisplaySelectDevice;
+begin
+  with cboDevice, lblPrintTo do
+  begin
+   Caption := 'Print Report on:  ' + Piece(ItemID, ';', 2);
+  end;
+end;
+
+procedure TfrmReportPrt.cboDeviceChange(Sender: TObject);
+begin
+  inherited;
+  with cboDevice do if ItemIndex > -1 then
+    begin
+      txtRightMargin.Text := Piece(Items[ItemIndex], '^', 4);
+      txtPageLength.Text := Piece(Items[ItemIndex], '^', 5);
+      DisplaySelectDevice;
+    end;
+end;
+
+procedure TfrmReportPrt.cmdOKClick(Sender: TObject);
+var
+  ADevice, ErrMsg: string;
+  RemoteSiteID: string;
+  RemoteQuery: string;
+  aQualifier: string;
+  aReport: TStringList;
+  aCaption: string;
+  i: integer;
+  ListItem: TListItem;
+  MoreID: String;  //Restores MaxOcc value
+begin
+  inherited;
+  FReportText := CreateReportTextComponent(Self);
+  RemoteSiteID := '';
+  RemoteQuery := '';
+  MoreID := '';
+  aReport := TStringList.Create;
+  if uQualifier = '' then
+    aQualifier := piece(uRemoteType,'^',5)  //Health Summary Type Report
+  else
+    begin
+      MoreID := ';' + Piece(uQualifier,';',3);
+      aQualifier := piece(uRemoteType,'^',5);
+    end;
+  with frmReports.TabControl1 do
+    if TabIndex > 0 then
+      begin
+        RemoteSiteID := TRemoteSite(Tabs.Objects[TabIndex]).SiteID;
+        RemoteQuery := TRemoteSite(Tabs.Objects[TabIndex]).CurrentReportQuery;
+      end;
+  if cboDevice.ItemID = '' then
+  begin
+    InfoBox(TX_NODEVICE, TX_NODEVICE_CAP, MB_OK);
+    Exit;
+  end;
+  if Piece(cboDevice.ItemID, ';', 1) = 'WIN' then
+    begin
+      if dlgWinPrinter.Execute then with FReportText do
+        begin
+          if uReportType = 'V' then
+            begin
+              case uQualifierType of
+                QT_IMAGING:
+                  begin
+                    for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                      if frmReports.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmReports.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier,
+                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+                QT_NUTR:
+                  begin
+                    for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                      if frmReports.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmReports.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier + MoreID,
+                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+                QT_HSCOMPONENT:
+                  begin
+                    if (length(piece(uHState,';',2)) > 0) then
+                      begin
+                        FReportText.Clear;
+                        aReport.Clear;
+                        CreatePatientHeader(aReport,piece(uRemoteType,'^',4));
+                        QuickCopy(aReport, FReportText);
+                        FindVType;
+                        aCaption := piece(uRemoteType,'^',4) + ';1';
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end
+                    else
+                      begin
+                        QuickCopy(GetFormattedReport(FReports, aQualifier + MoreID,
+                          Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                        aCaption := piece(uRemoteType,'^',4);
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end;
+                  end;
+                QT_HSWPCOMPONENT:
+                  begin
+                    if (length(piece(uHState,';',2)) > 0) then
+                      begin
+                        FReportText.Clear;
+                        aReport.Clear;
+                        CreatePatientHeader(aReport,piece(uRemoteType,'^',4));
+                        QuickCopy(aReport, FReportText);
+                        FindVType;
+                        aCaption := piece(uRemoteType,'^',4) + ';1';
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end
+                    else
+                      begin
+                        QuickCopy(GetFormattedReport(FReports, aQualifier + MoreID,
+                           Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                        aCaption := piece(uRemoteType,'^',4);
+                        PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                        if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                      end;
+                  end;
+                QT_PROCEDURES:
+                  begin
+                    for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                      if frmReports.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmReports.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier,
+                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+                QT_SURGERY:
+                  begin
+                    for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                      if frmReports.lvReports.Items[i].Selected then
+                        begin
+                          ListItem := frmReports.lvReports.Items[i];
+                          aQualifier := ListItem.SubItems[0];
+                          ADevice := Piece(cboDevice.ItemID, ';', 2);
+                          QuickCopy(GetFormattedReport(FReports, aQualifier,
+                            Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+                          aCaption := piece(uRemoteType,'^',4);
+                          PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+                          if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                        end;
+                  end;
+              end;
+            end
+          else
+            begin
+              if (Pos('OR_ECS1',FReports)>0) or (Pos('OR_ECS2',FReports)>0) then
+              begin
+                ShowMsg('The Event Capture report can only be printed by Vista printer.');
+                Exit;
+              end;
+              aQualifier := Piece(uRemoteType,'^',5);
+              QuickCopy(GetFormattedReport(FReports, aQualifier,
+                 Patient.DFN, uHSComponents, RemoteSiteID, RemoteQuery, uHState), FReportText);
+              aCaption := piece(uRemoteType,'^',4);
+              PrintWindowsReport(FReportText, PAGE_BREAK, aCaption, ErrMsg);
+              if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+            end;
+        end;
+    end
+  else  // if it's not a Win printer
+    begin
+      if uReportType = 'V' then
+        begin
+          case uQualifierType of
+            QT_IMAGING:
+              begin
+                for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                  if frmReports.lvReports.Items[i].Selected then
+                    begin
+                      ListItem := frmReports.lvReports.Items[i];
+                      aQualifier := ListItem.SubItems[0];
+                      ADevice := Piece(cboDevice.ItemID, ';', 2);
+                      PrintReportsToDevice(piece(FReports,':',1), aQualifier + MoreID,
+                         Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+                      ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                      if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                    end;
+              end;
+            QT_NUTR:
+              begin
+                for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                  if frmReports.lvReports.Items[i].Selected then
+                    begin
+                      ListItem := frmReports.lvReports.Items[i];
+                      aQualifier := ListItem.SubItems[0];
+                      ADevice := Piece(cboDevice.ItemID, ';', 2);
+                      PrintReportsToDevice(piece(FReports,':',1), aQualifier + MoreID,
+                         Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+                      ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                      if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                    end;
+              end;
+            QT_HSCOMPONENT:
+              begin
+                if (length(piece(uHState,';',2)) > 0) then
+                  begin
+                    FindVType;
+                    aReport.Clear;
+                    QuickCopy(FReportText.Lines, aReport);
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintVReports(ErrMsg, ADevice, piece(uRemoteType,'^',4),aReport);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end
+                else
+                  begin
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintReportsToDevice(FReports, aQualifier + MoreID,
+                       Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+                    ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end;
+              end;
+            QT_HSWPCOMPONENT:
+              begin
+                if (length(piece(uHState,';',2)) > 0) then
+                  begin
+                    FindVType;
+                    aReport.Clear;
+                    QuickCopy(FReportText, aReport);
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintVReports(ErrMsg, ADevice, piece(uRemoteType,'^',4),aReport);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end
+                else
+                  begin
+                    ADevice := Piece(cboDevice.ItemID, ';', 2);
+                    PrintReportsToDevice(FReports, aQualifier + MoreID,
+                       Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+                    ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                    if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                  end;
+              end;
+            QT_PROCEDURES:
+              begin
+                for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                  if frmReports.lvReports.Items[i].Selected then
+                    begin
+                      ListItem := frmReports.lvReports.Items[i];
+                      aQualifier := ListItem.SubItems[0];
+                      ADevice := Piece(cboDevice.ItemID, ';', 2);
+                      PrintReportsToDevice(piece(FReports,':',1), aQualifier,
+                         Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+                      ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                      if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                    end;
+              end;
+            QT_SURGERY:
+              begin
+                for i := 0 to frmReports.lvReports.Items.Count - 1 do
+                  if frmReports.lvReports.Items[i].Selected then
+                    begin
+                      ListItem := frmReports.lvReports.Items[i];
+                      aQualifier := ListItem.SubItems[0];
+                      ADevice := Piece(cboDevice.ItemID, ';', 2);
+                      PrintReportsToDevice(piece(FReports,':',1), aQualifier + MoreID,
+                         Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+                      ErrMsg := Piece(FReportText.Lines[0], U, 2);
+                      if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+                    end;
+              end;
+          end;
+        end
+      else
+        begin
+          ADevice := Piece(cboDevice.ItemID, ';', 2);
+          aQualifier := Piece(uRemoteType,'^',5);
+          if (Pos('OR_ECS1',FReports)>0) or (Pos('OR_ECS2',FReports)>0) then
+            begin
+              uECSReport.ReportType := 'P';
+              uECSReport.PrintDEV   := Piece(cboDevice.ItemID,';',1);
+              PrintECSReportToDevice(uECSReport);
+            end
+          else
+            begin
+              PrintReportsToDevice(FReports, aQualifier + MoreID,
+                 Patient.DFN, ADevice, ErrMsg, uHSComponents, RemoteSiteID, RemoteQuery, uHState);
+              ErrMsg := Piece(FReportText.Lines[0], U, 2);
+              if Length(ErrMsg) > 0 then InfoBox(ErrMsg, TX_ERR_CAP, MB_OK);
+            end;
+        end;
+    end;
+  if chkDefault.Checked then SaveDefaultPrinter(Piece(cboDevice.ItemID, ';', 1));
+  User.CurrentPrinter := cboDevice.ItemID;
+  aReport.Free;
+  FReportText.Free;
+  Close;
+end;
+
+procedure TfrmReportPrt.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  Close;
+end;
+
+procedure TfrmReportPrt.cboDeviceNeedData(Sender: TObject;
+  const StartFrom: String; Direction, InsertAt: Integer);
+begin
+  inherited;
+  cboDevice.ForDataUse(SubsetOfDevices(StartFrom, Direction));
+end;
+
+end.
+
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReview.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReview.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReview.dfm	(revision 1676)
@@ -0,0 +1,535 @@
+inherited frmReview: TfrmReview
+  Left = 141
+  Top = 70
+  BorderIcons = [biMaximize]
+  Caption = 'Review / Sign Changes'
+  ClientHeight = 522
+  ClientWidth = 705
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnKeyUp = FormKeyUp
+  OnMouseDown = FormMouseDown
+  OnMouseMove = FormMouseMove
+  OnResize = FormResize
+  OnShow = FormShow
+  ExplicitWidth = 713
+  ExplicitHeight = 549
+  DesignSize = (
+    705
+    522)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object laDiagnosis: TLabel [0]
+    Left = 256
+    Top = 135
+    Width = 46
+    Height = 13
+    Caption = 'Diagnosis'
+    Visible = False
+  end
+  object pnlSignature: TPanel [1]
+    Left = 8
+    Top = 452
+    Width = 373
+    Height = 65
+    Anchors = [akLeft, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblESCode: TLabel
+      Left = 0
+      Top = 0
+      Width = 123
+      Height = 13
+      Caption = 'Electronic Signature Code'
+    end
+    object txtESCode: TCaptionEdit
+      Left = 0
+      Top = 14
+      Width = 137
+      Height = 21
+      PasswordChar = '*'
+      TabOrder = 0
+      OnChange = txtESCodeChange
+      Caption = 'Electronic Signature Code'
+    end
+  end
+  object pnlOrderAction: TPanel [2]
+    Left = 2
+    Top = 454
+    Width = 373
+    Height = 65
+    Anchors = [akLeft, akBottom]
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object Label1: TStaticText
+      Left = 0
+      Top = 0
+      Width = 111
+      Height = 17
+      Caption = 'For orders, select from:'
+      TabOrder = 4
+    end
+    object radSignChart: TRadioButton
+      Left = 0
+      Top = 16
+      Width = 101
+      Height = 17
+      Caption = '&Signed on Chart'
+      TabOrder = 0
+      OnClick = radReleaseClick
+    end
+    object radHoldSign: TRadioButton
+      Left = 0
+      Top = 36
+      Width = 101
+      Height = 17
+      Caption = '&Hold until Signed'
+      Checked = True
+      TabOrder = 1
+      TabStop = True
+      OnClick = radReleaseClick
+    end
+    object grpRelease: TGroupBox
+      Left = 120
+      Top = 16
+      Width = 241
+      Height = 42
+      TabOrder = 3
+      Visible = False
+      object radVerbal: TRadioButton
+        Left = 8
+        Top = 19
+        Width = 53
+        Height = 17
+        Caption = '&Verbal'
+        Enabled = False
+        TabOrder = 0
+      end
+      object radPhone: TRadioButton
+        Left = 80
+        Top = 19
+        Width = 77
+        Height = 17
+        Caption = '&Telephone'
+        Enabled = False
+        TabOrder = 1
+      end
+      object radPolicy: TRadioButton
+        Left = 168
+        Top = 19
+        Width = 49
+        Height = 17
+        Caption = '&Policy'
+        Enabled = False
+        TabOrder = 2
+      end
+    end
+    object radRelease: TRadioButton
+      Left = 128
+      Top = 16
+      Width = 113
+      Height = 17
+      Caption = '&Release to Service'
+      TabOrder = 2
+      Visible = False
+      OnClick = radReleaseClick
+    end
+  end
+  object cmdOK: TButton [3]
+    Left = 545
+    Top = 496
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 625
+    Top = 496
+    Width = 72
+    Height = 21
+    Anchors = [akRight, akBottom]
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  object lstReview: TCaptionCheckListBox [5]
+    Left = 0
+    Top = 177
+    Width = 690
+    Height = 275
+    OnClickCheck = lstReviewClickCheck
+    Anchors = [akLeft, akTop, akRight, akBottom]
+    ItemHeight = 15
+    ParentShowHint = False
+    PopupMenu = poBACopyPaste
+    ShowHint = True
+    Style = lbOwnerDrawVariable
+    TabOrder = 6
+    OnClick = lstReviewClick
+    OnDrawItem = lstReviewDrawItem
+    OnKeyUp = lstReviewKeyUp
+    OnMeasureItem = lstReviewMeasureItem
+    OnMouseDown = lstReviewMouseDown
+    OnMouseMove = lstReviewMouseMove
+    Caption = 'Signature will be Applied to Checked Items'
+  end
+  inline fraCoPay: TfraCoPayDesc [6]
+    Left = 6
+    Top = 1
+    Width = 602
+    Height = 152
+    Anchors = [akLeft, akTop, akRight]
+    AutoSize = True
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 4
+    TabStop = True
+    Visible = False
+    ExplicitLeft = 6
+    ExplicitTop = 1
+    ExplicitWidth = 602
+    ExplicitHeight = 152
+    inherited pnlRight: TPanel
+      Left = 336
+      Width = 266
+      Height = 152
+      AutoSize = True
+      ExplicitLeft = 336
+      ExplicitWidth = 266
+      ExplicitHeight = 152
+      inherited Spacer2: TLabel
+        Width = 266
+        ExplicitWidth = 266
+      end
+      inherited lblCaption: TStaticText
+        Width = 266
+        Caption = 'Patient Orders Related To:'
+        ExplicitWidth = 266
+      end
+      inherited pnlMain: TPanel
+        Left = 24
+        Top = 12
+        Width = 233
+        Height = 132
+        ExplicitLeft = 24
+        ExplicitTop = 12
+        ExplicitWidth = 233
+        ExplicitHeight = 132
+        inherited spacer1: TLabel
+          Width = 229
+          ExplicitWidth = 229
+        end
+        inherited pnlHNC: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblHNC2: TVA508StaticText
+            Width = 129
+            ExplicitWidth = 129
+          end
+          inherited lblHNC: TVA508StaticText
+            Width = 31
+            ExplicitWidth = 31
+          end
+        end
+        inherited pnlMST: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblMST2: TVA508StaticText
+            Width = 25
+            ExplicitWidth = 25
+          end
+          inherited lblMST: TVA508StaticText
+            Width = 31
+            ExplicitWidth = 31
+          end
+        end
+        inherited pnlSWAC: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblSWAC2: TVA508StaticText
+            Width = 127
+            ExplicitWidth = 127
+          end
+          inherited lblSWAC: TVA508StaticText
+            Width = 40
+            ExplicitWidth = 40
+          end
+        end
+        inherited pnlIR: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblIR2: TVA508StaticText
+            Width = 133
+            ExplicitWidth = 133
+          end
+          inherited lblIR: TVA508StaticText
+            Width = 19
+            ExplicitWidth = 19
+          end
+        end
+        inherited pnlAO: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblAO2: TVA508StaticText
+            Width = 115
+            ExplicitWidth = 115
+          end
+          inherited lblAO: TVA508StaticText
+            Width = 23
+            ExplicitWidth = 23
+          end
+        end
+        inherited pnlSC: TPanel
+          Width = 229
+          ExplicitWidth = 229
+        end
+        inherited pnlCV: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblCV2: TVA508StaticText
+            Width = 142
+            ExplicitWidth = 142
+          end
+        end
+        inherited pnlSHD: TPanel
+          Width = 229
+          ExplicitWidth = 229
+          inherited lblSHAD: TVA508StaticText
+            Width = 33
+            ExplicitWidth = 33
+          end
+          inherited lblSHAD2: TVA508StaticText
+            Width = 159
+            ExplicitWidth = 159
+          end
+        end
+      end
+    end
+    inherited pnlSCandRD: TPanel
+      Width = 336
+      Height = 152
+      ExplicitWidth = 336
+      ExplicitHeight = 152
+      inherited lblSCDisplay: TLabel
+        Width = 336
+        ExplicitWidth = 336
+      end
+      inherited memSCDisplay: TCaptionMemo
+        Width = 336
+        Height = 135
+        ExplicitWidth = 336
+        ExplicitHeight = 135
+      end
+    end
+  end
+  object lblSig: TStaticText
+    Left = 8
+    Top = 160
+    Width = 205
+    Height = 17
+    Caption = 'Signature will be Applied to Checked Items'
+    TabOrder = 5
+    TabStop = True
+  end
+  object gbxDxLookup: TGroupBox
+    Left = 8
+    Top = 156
+    Width = 101
+    Height = 43
+    Caption = 'Lookup Diagnosis'
+    TabOrder = 8
+    TabStop = True
+    Visible = False
+    object buDiagnosis: TButton
+      Left = 10
+      Top = 15
+      Width = 83
+      Height = 21
+      Caption = '&Diagnosis'
+      Enabled = False
+      TabOrder = 0
+      OnClick = buDiagnosisClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlSignature'
+        'Status = stsDefault')
+      (
+        'Component = txtESCode'
+        'Status = stsDefault')
+      (
+        'Component = pnlOrderAction'
+        'Status = stsDefault')
+      (
+        'Component = Label1'
+        'Status = stsDefault')
+      (
+        'Component = radSignChart'
+        'Status = stsDefault')
+      (
+        'Component = radHoldSign'
+        'Status = stsDefault')
+      (
+        'Component = grpRelease'
+        'Status = stsDefault')
+      (
+        'Component = radVerbal'
+        'Status = stsDefault')
+      (
+        'Component = radPhone'
+        'Status = stsDefault')
+      (
+        'Component = radPolicy'
+        'Status = stsDefault')
+      (
+        'Component = radRelease'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = lstReview'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblCaption'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlHNC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblHNC2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblHNC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlMST'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblMST2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblMST'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSWAC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSWAC2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSWAC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlIR'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblIR2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblIR'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlAO'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblAO2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblAO'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSC2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSC'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlCV'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblCV2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblCV'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSHD'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSHAD'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.lblSHAD2'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.pnlSCandRD'
+        'Status = stsDefault')
+      (
+        'Component = fraCoPay.memSCDisplay'
+        'Status = stsDefault')
+      (
+        'Component = lblSig'
+        'Status = stsDefault')
+      (
+        'Component = gbxDxLookup'
+        'Status = stsDefault')
+      (
+        'Component = buDiagnosis'
+        'Status = stsDefault')
+      (
+        'Component = frmReview'
+        'Status = stsDefault'))
+  end
+  object poBACopyPaste: TPopupMenu
+    Left = 384
+    Top = 280
+    object Copy1: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = Copy1Click
+    end
+    object Paste1: TMenuItem
+      Caption = '&Paste'
+      Enabled = False
+      ShortCut = 16470
+      OnClick = Paste1Click
+    end
+    object Diagnosis1: TMenuItem
+      Caption = '&Diagnosis...'
+      ShortCut = 32836
+      OnClick = buDiagnosisClick
+    end
+    object Exit1: TMenuItem
+      Caption = '&Exit'
+      ShortCut = 16453
+      OnClick = Exit1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReview.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReview.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fReview.pas	(revision 1676)
@@ -0,0 +1,2254 @@
+unit fReview;
+
+{.$define debug}
+
+interface
+
+uses
+  UBAGlobals,
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, checklst, uConst, ExtCtrls, uCore, mCoPayDesc, XUDIGSIGSC_TLB,
+  ORCtrls, Menus, UBACore, ORClasses,fBase508Form, fPrintLocation,
+  VA508AccessibilityManager;
+
+type
+  TfrmReview = class(TfrmBase508Form)
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lstReview: TCaptionCheckListBox;
+    pnlOrderAction: TPanel;
+    radSignChart: TRadioButton;
+    pnlSignature: TPanel;
+    txtESCode: TCaptionEdit;
+    lblESCode: TLabel;
+    Label1: TStaticText;
+    radHoldSign: TRadioButton;
+    grpRelease: TGroupBox;
+    radVerbal: TRadioButton;
+    radPhone: TRadioButton;
+    radPolicy: TRadioButton;
+    radRelease: TRadioButton;
+    fraCoPay: TfraCoPayDesc;
+    laDiagnosis: TLabel;
+    gbxDxLookup: TGroupBox;
+    buDiagnosis: TButton;
+    poBACopyPaste: TPopupMenu;
+    Copy1: TMenuItem;
+    Paste1: TMenuItem;
+    Diagnosis1: TMenuItem;
+    Exit1: TMenuItem;
+    lblSig: TStaticText;
+    procedure FormCreate(Sender: TObject);
+    procedure lstReviewDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstReviewClickCheck(Sender: TObject);
+    procedure radReleaseClick(Sender: TObject);
+    procedure txtESCodeChange(Sender: TObject);
+    procedure lstReviewMeasureItem(Control: TWinControl; Index: Integer; var AHeight: Integer);
+    procedure FormDestroy(Sender: TObject);
+    procedure lstReviewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+    procedure buDiagnosisClick(Sender: TObject);
+    procedure lstReviewClick(Sender: TObject);
+    procedure Exit1Click(Sender: TObject);
+    procedure lstReviewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure Copy1Click(Sender: TObject);
+    procedure Paste1Click(Sender: TObject);
+    procedure ClearDiagnoses1Click(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure fraCoPayLabel24MouseMove(Sender: TObject; Shift: TShiftState;
+      X, Y: Integer);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure lstReviewKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure FormResize(Sender: TObject);
+
+  private
+    { Private declarations }
+    FOKPressed: Boolean;
+    FShowPanel: Integer;
+    FSilent: Boolean;
+    FCouldSign: Boolean;
+    FLastHintItem: integer;
+    FOldHintPause: integer;
+    FOldHintHidePause: integer;
+    FShrunk: boolean;
+    FIsEvtChange: boolean;
+    procedure AddHeader(s: string);
+    function AddItem(ChangeItem: TChangeItem): integer;
+    procedure BuildList(FullList: boolean);
+    procedure BuildFullList;
+    procedure BuildSignList;
+    procedure CleanupChangesList(Sender: TObject; ChangeItem: TChangeItem);  {**RV**}
+    function ItemsAreChecked: Boolean;
+    function SignRequiredForAny(FullList: boolean): Boolean;
+    procedure AdjustSignatureTop( HeightAdjustment: integer);
+    function IsSignatureRequired:boolean;
+    function GetNumberOfSelectedOrders : byte;
+    procedure ShowTreatmentFactorHints(var pHintText: string; var pCompName: TVA508StaticText); // 508
+    procedure SetItemTextToState;
+    procedure FormatListForScreenReader;
+
+  public
+    procedure SetCheckBoxStatus(thisOrderID: string);
+    function GetCheckBoxStatus(sourceOrderID : string) : string; overload;
+    function GetCheckBoxStatus(gridItemIndex : smallint) : string; overload; 
+    function GetNonNilItemCount : integer; //CQ5172
+  end;
+
+function ReviewChanges(TimedOut: Boolean; IsEvtChange: boolean = False): Boolean;
+
+var
+{Begin BillingAware}
+  frmReview: TfrmReview; //Originally declared locally in function ReviewChanges()
+  DxRect: TRect;
+{End BillingAware}
+
+  {Begin BillingAware}
+    TFactorMemo: TCaptionMemo;
+    chkBoxStatus: string;
+    srcOrderID: string;
+    targetOrderID: string;
+    tempStrList: TStringList;
+    srcDx: string;
+    tempOrderList: TStringList;
+    copyOrderID: string;
+    srcIndex: integer;
+    CopyBuffer: TBADxRecord;
+    FRVTFHintWindowActive: boolean;
+    FRVTFHintWindow: THintWindow;
+    {End BillingAware}
+  crypto: IXuDigSigS;
+    currentlySelectedItem: integer; //CQ5063
+    currentItems: TStringList; //CQ5063
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, rCore, fNotes, fConsults, fOrders, rOrders, Hash, fDCSumm, fOCSession, uOrders,
+     fSignItem, fOrdersPrint, fLkUpLocation, fFrame, uSignItems, fSurgery,
+     fBALocalDiagnoses, UBAConst, UBAMessages, fOrdersSign, fClinicWardMeds,
+     rODLab, fRptBox, VAUtils;
+
+const
+  SP_NONE  = 0;
+  SP_CLERK = 1;
+  SP_NURSE = 2;
+  SP_SIGN  = 3;
+  TXT_ENCNT     = 'Outpatient Encounter';
+  TXT_NOVISIT   = 'Visit Type: < None Selected >';
+  TXT_NODIAG    = 'Diagnosis: < None Selected >';
+  TXT_NOPROC    = 'Procedures: none';
+  TXT_DOCS      = 'Documents';
+  TXT_ORDERS    = 'Orders';
+  TXT_BLANK     = ' ';
+  TX_INVAL_MSG  = 'Not a valid electronic signature code.  Enter a valid code or press Cancel.';
+  TX_INVAL_CAP  = 'Unrecognized Signature Code';
+  TX_ES_REQ     = 'Enter your electronic signature to release these orders.';
+  TC_ES_REQ     = 'Electronic Signature';
+  TX_NO_REL     = CRLF + CRLF + '- cannot be released to the service(s).' + CRLF + CRLF + 'Reason: ';
+  TC_NO_REL     = 'Unable to Release Orders';
+  TC_NO_DX      =  'Incomplete Diagnosis Entry';
+  TX_NO_DX      =  'A Diagnosis must be selected prior to signing any of the following order types:'
+                   + CRLF + 'Outpatient Lab,Radiology, Outpatient Medications, Prosthetics.';
+
+procedure TfrmReview.SetCheckBoxStatus(thisOrderID: string);
+{
+   - Set the current CI checkboxes status
+}
+begin
+  if BILLING_AWARE then
+     begin
+        uSignItems.uSigItems.SetSigItems(lstReview, thisOrderID);
+     end;
+end;
+
+function TfrmReview.GetCheckBoxStatus(gridItemIndex: smallint) : string;
+{
+  - Obtain checkbox status for selected order - BY ORDER ID
+}
+var
+  itemsList: TStringList;
+  i: smallint;
+begin
+  Result := '';
+  itemsList := TStringList.Create;
+  itemsList.Clear;
+  itemsList := uSigItems.GetSigItems; //Get FItems list
+
+  if BILLING_AWARE then
+     begin
+     for i := 0 to itemsList.Count-1 do
+        begin
+        //thisOrderID := Piece(itemsList[i],'^',1); //get the order ID
+        if i = gridItemIndex then   //compare to order ID of source order
+           begin
+           Result := Piece(itemsList[i],U,4);  //return TF status'
+           Break;
+           end;
+        end;
+     end;
+end;
+
+function TfrmReview.GetCheckBoxStatus(sourceOrderID: string) : string;  //PASS IN ORDER ID - NOT GRID INDEX
+{
+   - Obtain checkbox status for selected order - BY ORDER ID
+}
+var
+  itemsList: TStringList;
+  i: smallint;
+  thisOrderID: string;
+begin
+  Result := '';
+  itemsList := TStringList.Create;
+  itemsList.Clear;
+  itemsList := uSigItems.GetSigItems; //Get FItems list
+
+  if BILLING_AWARE then
+     begin
+     for i := 0 to itemsList.Count-1 do
+        begin
+        thisOrderID := Piece(itemsList[i],'^',1); //get the order ID
+        if thisOrderID = sourceOrderID then   //compare to order ID of source order
+           begin
+           Result := Piece(itemsList[i],U,4);  //return TF status'
+           Break;
+           end;
+        end;
+     end;
+end;
+
+function TfrmReview.GetNumberOfSelectedOrders : byte;
+{
+  - Return the number of orders in clstOrders that are currently selected.
+}
+var
+  i: integer;
+  numSelected: byte;
+begin
+  result := 0;
+  if BILLING_AWARE then
+     begin
+     numSelected := 0;
+     for i := 1 to frmReview.lstReview.Items.Count-1 do
+         if (frmReview.lstReview.Selected[i]) then
+           Inc(numSelected);
+
+     Result := numSelected;
+     end;
+end;
+
+function ReviewChanges(TimedOut: Boolean; IsEvtChange: boolean = False): Boolean;
+{ display changes made to chart for this encounter, allow changes to be saved, signed, etc. }
+var
+  i: integer;
+begin
+  Result := True;
+  if Changes.Count = 0 then Exit;
+  frmReview := TfrmReview.Create(Application);
+  try
+    Changes.OnRemove := frmReview.CleanupChangesList;     {**RV**}
+    frmReview.FIsEvtChange := IsEvtChange;
+    ResizeAnchoredFormToFont(frmReview);
+
+    if TimedOut and (Changes.Count > 0) then
+       begin
+         frmReview.FSilent := True;
+         frmReview.BuildFullList;
+         with frmReview.lstReview do for i := 0 to Items.Count - 1 do
+           Checked[i] := False;
+         frmReview.cmdOKClick(frmReview);
+         Result := True;
+       end
+    // if user not timed out, execute as before
+    else
+       begin
+         if ((uCore.User.OrderRole = OR_NURSE) or (uCore.User.OrderRole = OR_CLERK)) and Changes.CanSign then
+         begin
+           frmReview.FCouldSign := True;
+           frmReview.BuildSignList;  // ok will remove from changes, exit leaves altogether
+           frmReview.ShowModal;
+           Result := frmReview.FOKPressed;
+         end;
+
+      if Result and (Changes.Count > 0) then
+      begin
+        frmReview.FCouldSign := Changes.CanSign;
+        frmReview.BuildFullList;
+
+         if BILLING_AWARE then
+            //  build list of orders that are not billable based on package type
+            UBAGlobals.NonBillableOrderList := rpcNonBillableOrders(tempOrderList);
+
+        frmReview.ShowModal;
+        Result := frmReview.FOKPressed;
+      end;
+
+    end;
+
+  finally
+   Changes.OnRemove := nil;     {**RV**}
+   frmReview.Release;
+  end;
+end;
+
+procedure TfrmReview.FormCreate(Sender: TObject);
+const
+  TX_FORM_CAPTION = 'Review / Sign Changes  ';
+begin
+  FOKPressed := False;
+  FSilent := False;
+  FLastHintItem := -1;
+  Self.Caption := TX_FORM_CAPTION + '(' + Patient.Name + ' - ' + Patient.SSN + ')';
+  FOldHintPause := Application.HintPause;
+  Application.HintPause := 250;
+  FOldHintHidePause := Application.HintHidePause;
+  Application.HintHidePause := 30000;
+   {Begin BillingAware}
+     if  BILLING_AWARE then
+     begin
+        lstReview.Height := 220;
+        lstReview.Top :=  (gbxdxLookup.top + 65);
+        gbxDxLookup.Visible := TRUE;
+        lblsig.Top := (gbxdxLookup.Top +  48);
+        laDiagnosis.Top :=  Lblsig.Top;
+        laDiagnosis.Left := 270;
+        laDiagnosis.Visible := TRUE;
+        rectIndex := 0;
+     end;
+     {End BillingAware}
+end;
+
+procedure TfrmReview.AddHeader(s: string);
+{ add header to review list, object is left nil }
+begin
+  lstReview.Items.AddObject(s, nil);
+end;
+
+function TfrmReview.AddItem(ChangeItem: TChangeItem): integer;
+{ add a single review item to the list with its associated TChangeItem object }
+begin
+  Result := lstReview.Items.AddObject(ChangeItem.Text, ChangeItem);
+
+  //Begin BillingAware
+  if  BILLING_AWARE then
+  begin
+    UBAGlobals.ChangeItemOrderNum := ChangeItem.ID; // GE 2/21/2006 removed "Copy(ChangeItem.ID,0,8)" issue when sites have order number > 8 digits
+     // HDS00005025
+
+    if ChangeItem.ItemType = CH_DOC then    // documents are not orderable, code is necessary
+      UBAGlobals.ChangeItemOrderNum := '0'; // document id can be same as order id, orderid = 0 will be nonbillable
+
+    tempOrderList.Add(UBAGlobals.ChangeItemOrderNum);
+  end;
+   //end BillingAware
+
+  case ChangeItem.SignState of
+  CH_SIGN_YES: lstReview.Checked[Result] := True;
+  CH_SIGN_NO:  lstReview.Checked[Result] := False;
+  CH_SIGN_NA:  lstReview.State[Result] := cbGrayed;
+  end;
+  //hds00006047
+ // this will override the signstate from above for all non-va med orders...  no signature required.
+  if ChangeItem.GroupName = '' then
+  begin
+  //if StrPos(PChar(ChangeItem.Text),PChar(NonVAMedTxt)) <> nil then
+  if ChangeItem.OrderDG = NONVAMEDGROUP then
+         lstReview.State[Result] := cbGrayed;
+   end;
+  //hds00006047
+end;
+
+procedure TfrmReview.AdjustSignatureTop( HeightAdjustment: integer);
+//This has been added to support correct anchoring for the lstReview list.
+begin
+  Height := Height + HeightAdjustment;
+  lblSig.Top := lblSig.Top + HeightAdjustment;
+  lstReview.Top := lstReview.Top + HeightAdjustment;
+  lstReview.Height := lstReview.Height - HeightAdjustment;
+  //for 24 pt font, we need to make sure that lstreview is resized before the main form is.
+end;
+
+function TfrmReview.IsSignatureRequired:boolean;
+var
+  i: integer;
+begin
+ Result := FALSE;
+    with lstReview.items do for i := 0 to Pred(Count) do
+    begin
+      if frmReview.lstReview.Checked[i] then
+      begin
+        //CQ4790
+        if TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]) = nil then
+           Continue;
+        //end CQ4790
+                   
+         if (TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).SIGNSTATE) <> CH_SIGN_NA then
+            Result := TRUE;
+         end;
+    end;
+end;
+
+procedure TfrmReview.BuildList(FullList: boolean);
+var
+  GrpIndex, ChgIndex, lbIdx: Integer;
+  ChangeItem: TChangeItem;
+  LabelHeight: integer;
+  PrevGrpName, temp: string;
+  displayHeader, displaySpacer, otherUserOrders: boolean;
+
+begin
+  tempOrderList := TStringList.Create;
+  tempOrderList.Clear;
+  PrevGrpName := '';
+  lstReview.Clear;  // ok to clear without freeing objects since they're part of Changes
+  if(FullList) then
+  begin
+    SigItems.ResetOrders;
+    with Changes do
+    if PCE.Count > 0 then
+    begin
+      for GrpIndex := 0 to PCEGrp.Count - 1 do
+      begin
+        AddHeader('Outpatient Encounter ' + PCEGrp[GrpIndex]);
+        for ChgIndex := 0 to PCE.Count - 1 do
+        begin
+          ChangeItem := PCE[ChgIndex];
+          if ChangeItem.GroupName = PCEGrp[GrpIndex] then AddItem(ChangeItem);
+        end;
+        AddHeader('   ');
+      end;
+    end; {if PCE}
+  end;
+  with Changes do
+  if Documents.Count > 0 then
+  begin
+    AddHeader('Documents');
+    for ChgIndex := 0 to Documents.Count - 1 do
+    begin
+      ChangeItem := Documents[ChgIndex];
+      if(FullList or (ChangeItem.SignState <> CH_SIGN_NA)) then
+         AddItem(ChangeItem);
+    end;
+    if(FullList) then
+       AddHeader('   ');
+  end; {if Documents}
+  if(FullList) then
+  begin
+    //otherUserOrders := False;
+    displaySpacer := False;
+    with Changes do
+    if Orders.Count > 0 then
+    begin
+      OrderGrp.Sorted := True;
+      otherUserOrders := False;
+      for GrpIndex := 0 to OrderGrp.Count - 1 do
+      begin
+        displayHeader := True;
+        if (GrpIndex > 0 ) and (AnsiCompareText(PrevGrpName,OrderGrp[GrpIndex])=0) then
+          Continue;
+        if OrderGrp[GrpIndex] = '' then Temp := 'My Unsigned Orders - This Session'
+        else if OrderGrp[GrpIndex] = 'Other Unsigned' then Temp := 'My Unsigned Orders - Previous Sessions'
+        else Temp := 'Orders - ' + OrderGrp[GrpIndex];
+        //AddHeader('Orders - ' + Temp);
+        {billing aware}
+        if BILLING_AWARE then
+        begin
+           UBACore.rpcBuildSCIEList(Orders);            // build list of orders and Billable Status
+           UBACore.CompleteUnsignedBillingInfo(rpcGetUnsignedOrdersBillingData(OrderListSCEI) );
+        end;
+        {billing aware}
+        for ChgIndex := 0 to Orders.Count - 1 do
+        begin
+          ChangeItem := Orders[ChgIndex];
+          if (ChangeItem.GroupName = OrderGrp[GrpIndex]) and ((ChangeItem.User = 0) or (ChangeItem.User = User.DUZ)) then
+          begin
+            if displayHeader = True then
+              begin
+                AddHeader(Temp);
+                displayHeader := False;
+                displaySpacer := True;
+              end;
+            lbIdx := AddItem(ChangeItem);
+            SigItems.Add(CH_ORD, ChangeItem.ID, lbIdx);
+         end
+         else if ((ChangeItem.User > 0) and (ChangeItem.User <> User.DUZ)) then
+           otherUserOrders := True;
+        end;
+        if displayHeader = False then AddHeader('   ');
+        PrevGrpName := OrderGrp[GrpIndex];
+    end;
+    //AGP fix for CQ 10073
+    if otherUserOrders = True then
+          begin
+            if displaySpacer = True then AddHeader('   ');
+            AddHeader('Others'' Unsigned Orders Orders - All Sessions');
+            for ChgIndex := 0 to Orders.Count - 1 do
+             begin
+                ChangeItem := Orders[ChgIndex];
+                if (ChangeItem.GroupName = 'Other Unsigned') and ((ChangeItem.User >0) and (ChangeItem.User <> User.DUZ)) then
+                  begin
+                    lbIdx := AddItem(ChangeItem);
+                    SigItems.Add(CH_ORD, ChangeItem.ID, lbIdx);
+                  end;
+            end;
+        end;
+  end; {if Orders}
+    // determine the appropriate panel to display
+    case User.OrderRole of
+        OR_CLERK: FShowPanel := SP_CLERK;
+        OR_NURSE: FShowPanel := SP_NURSE;
+    OR_PHYSICIAN: FShowPanel := SP_SIGN;
+      OR_STUDENT: if Changes.CanSign then FShowPanel := SP_SIGN else FShowPanel := SP_NONE;
+    else          FShowPanel := SP_NONE;
+    end; {case User}
+  end
+  else
+    FShowPanel := SP_SIGN;
+
+  case FShowPanel of
+  SP_CLERK: begin
+              pnlSignature.Visible := False;
+              //pnlOrderAction.Visible := True;
+              pnlOrderAction.Visible := SignRequiredForAny(FullList);
+            end;
+  SP_NURSE: begin
+              pnlSignature.Visible := False;
+              radRelease.Visible := True;
+              grpRelease.Visible := True;
+              pnlOrderAction.Visible := SignRequiredForAny(FullList);
+            end;
+   SP_SIGN: begin
+              pnlOrderAction.Visible := False;
+              pnlSignature.Visible := ItemsAreChecked;
+            end;
+  else      begin                                // SP_NONE
+              pnlOrderAction.Visible := False;
+              pnlSignature.Visible := False;
+            end;
+  end; {case FShowPanel}
+  pnlSignature.Visible := ItemsAreChecked;
+  txtESCodeChange(Self);
+  if pnlOrderAction.Visible then
+  begin
+    lblSig.Caption := 'Documents / Orders';
+    if FShowPanel = SP_NURSE then
+    begin
+      if GetUserParam('OR SIGNATURE DEFAULT ACTION') = 'OC'
+        then radHoldSign.Checked  := True
+        else radRelease.Checked   := True;
+    end;
+    if (radHoldSign.Checked) and (GetUserParam('OR SIGNED ON CHART') = '1')
+      then radSignChart.Checked := True;
+    if radRelease.Checked then radReleaseClick(Self);
+  end {if pnlOrderAction}
+  else
+  begin
+    if (User.OrderRole = OR_STUDENT) or (User.OrderRole = OR_NOKEY) or (User.OrderRole = OR_BADKEYS) then
+      lblSig.Caption := 'These orders will be held until signed'
+    else
+      lblSig.Caption := 'Signature will be Applied to Checked Items';
+  end;
+  //Make sure there is enough width for the buttons and lblSig
+   //begin BillingAware
+  if  BILLING_AWARE then
+  begin
+     LabelHeight := lstReview.Top - fraCoPay.Height;
+     AdjustSignatureTop( ResizeHeight( BaseFont, MainFont, LabelHeight) - LabelHeight);
+  end;
+   //end BillingAware
+
+  if (FullList and SigItems.UpdateListBox(lstReview)) then
+  begin
+    fraCoPay.Visible := TRUE;
+     //begin BillingAware
+    if  BILLING_AWARE then frmReview.gbxDxLookup.Visible := TRUE;
+     //end BillingAware
+    if(FShrunk) then
+    begin
+      FShrunk := FALSE;
+      AdjustSignatureTop( fraCoPay.Height + 9);
+    end;
+  end
+  else
+  begin
+    fraCoPay.Visible := FALSE;
+     //begin BillingAware
+    if  BILLING_AWARE then frmReview.gbxDxLookup.Visible := FALSE;
+    //end BillingAware
+    if(not FShrunk) then
+    begin
+      FShrunk := TRUE;
+      AdjustSignatureTop(-fraCoPay.Height - 9);
+    end;
+  end;
+end; {BuildFullList}
+
+
+procedure TfrmReview.BuildFullList;
+begin
+     BuildList(TRUE);
+end;
+
+procedure TfrmReview.BuildSignList;
+begin
+   BuildList(FALSE);
+end;
+
+function TfrmReview.ItemsAreChecked: Boolean;
+{ return true if any items in the Review List are checked for applying signature }
+var
+  i: Integer;
+begin
+  Result := False;
+  with lstReview do for i := 0 to Items.Count - 1 do if Checked[i] then
+  begin
+    Result := True;
+    break;
+  end;
+end;
+
+function TfrmReview.SignRequiredForAny(FullList: boolean): Boolean;
+var
+  i: Integer;
+  tmpOrders: TStringList;
+  ChangeItem: TChangeItem;
+begin
+  Result := True;
+  if Changes.Documents.Count > 0 then Exit;
+  if(FullList) then
+  begin
+  //  if Changes.PCE.Count > 0 then Exit;   *** JM - you don't sign encounter informaiton ***
+    tmpOrders := TStringList.Create;
+    try
+      for i := 0 to Pred(Changes.Orders.Count) do
+      begin
+        ChangeItem := Changes.Orders[i];
+        tmpOrders.Add(ChangeItem.ID);
+      end;
+      Result := AnyOrdersRequireSignature(tmpOrders);
+    finally
+      FreeAndNil(tmpOrders);
+    end;
+  end
+  else
+    Result := FALSE;
+end;
+
+procedure TfrmReview.lstReviewClickCheck(Sender: TObject);
+{ prevent grayed checkboxes from being changed to anything else }
+var
+  ChangeItem: TChangeItem;
+
+  procedure updateAllChilds(CheckedStatus: boolean; ParentOrderId: string);
+  var
+    idx: integer;
+    AChangeItem: TChangeItem;
+  begin
+    for idx := 0 to lstReview.Items.Count - 1 do
+    begin
+      AChangeItem := TChangeItem(lstReview.Items.Objects[idx]);
+      if Assigned(AChangeItem) and (AChangeItem.ParentID = ParentOrderId) then
+          if lstReview.Checked[idx] <> CheckedStatus then
+          begin
+            lstReview.Checked[idx] := CheckedStatus;
+            SigItems.EnableSettings(idx, lstReview.checked[Idx]);
+          end;
+    end;
+  end;
+
+begin
+  with lstReview do
+  begin
+    ChangeItem := TChangeItem(Items.Objects[ItemIndex]);
+    if ItemIndex > 0 then
+    begin
+       if (ChangeItem <> nil) then
+       begin
+         if (ChangeItem.SignState = CH_SIGN_NA) then State[ItemIndex] := cbGrayed
+         else
+         begin
+           SigItems.EnableSettings(ItemIndex, checked[ItemIndex]);
+           if Length(ChangeItem.ParentID) > 0 then
+             updateAllChilds(checked[ItemIndex], ChangeItem.ParentID);
+         end;
+       end;
+     end;
+     pnlSignature.Visible := IsSignatureRequired;
+  end;
+end;
+
+procedure TfrmReview.lstReviewDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+{ outdent the header items (thus hiding the checkbox) }
+var
+  x: string;
+  ARect, TextRecord: TRect;
+  i, dy: integer;
+  tempID: string;
+  thisRec: UBAGlobals.TBADxRecord;
+
+{Begin BillingAware}
+  str: string;
+{End BillingAware}
+
+  procedure UpdateTextRecord(r: TRect);
+  begin
+    TextRecord := r;
+    inc(TextRecord.Top, dy);
+    dec(TextRecord.Bottom, dy);
+  end;
+
+begin
+  inherited;
+  dy := SIG_ITEM_VERTICAL_PAD div 2;
+  x := '';
+  ARect := Rect;
+
+  if  BILLING_AWARE then
+  begin
+     ARect.Right := ARect.Right - 50;
+
+  with lstReview do
+  begin
+    if Items.Objects[Index] = nil then
+        ARect.Left := 0;
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    //Canvas.Brush.Color := Get508CompliantColor(clLime);
+    Canvas.FillRect(ARect);
+
+    if Index < Items.Count then
+      begin
+       x := Trim(FilteredString(Items[Index]));
+
+       if (ARect.Left = 0) and ( Length(x)>0 ) then
+         Canvas.TextOut(ARect.Left + 2, ARect.Top + dy, x)
+       else
+          if (ARect.Left > 0 ) and ( Length(x)>0 ) then
+             begin
+             //ARect.Right below controls the right-hand side of the Dx Column
+             //Adjust ARect.Right in conjunction with procedure uSignItems.TSigItems.lbDrawItem(), because the
+             //two rectangles overlap each other.
+
+             if  BILLING_AWARE then
+                begin
+                arRect[Index] := Classes.Rect(ARect.Right+2, ARect.Top, ARect.Right + 108, ARect.Bottom);
+                Canvas.FillRect(arRect[Index]);
+                end;
+
+             //Draw ORDER TEXT
+            UpdateTextRecord(ARect);
+            DrawText(Canvas.handle, PChar(x), Length(x), TextRecord, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+
+           if  BILLING_AWARE then
+                begin
+                     //Dx Column lines
+                     Canvas.Pen.Color := Get508CompliantColor(clSilver);
+                     Canvas.MoveTo(DxRect.Left-1, ARect.Top);
+                     Canvas.LineTo(DxRect.Left-1, ARect.Bottom);
+                     //Adjust position of 'Diagnosis' column label for font size
+                     laDiagnosis.Left := DxRect.Left + 14;
+                     if uSignItems.GetAllBtnLeftPos > 0 then
+                        laDiagnosis.left := uSignItems.GetAllBtnLeftPos - (laDiagnosis.Width +5);
+                     laDiagnosis.Top := lblSig.Top;
+                     //Assign DxRect for drawing Dx column and Dx string
+                     DxRect.Left := ARect.Right + 1;
+                     DxRect.Top := ARect.Top;
+                     DxRect.Right := DxRect.Left + 80;
+                     DxRect.Bottom := ARect.Bottom;
+
+                    //Display all saved Dx's
+                      for i := 0 to lstReview.Items.Count-1 do
+                      //for i := 1 to uSignItems.uSigItems.GetSigItems.Count - 1 do
+                        with TOrder(lstReview.Items[i]) do
+                          begin
+                           // HDS00005025
+                          if TChangeItem(lstReview.Items.Objects[Index]).ITEMTYPE = CH_DOC then
+                             tempID := '0' // if document id is equal to valid order id identify billable orders
+                          else
+                             tempID := TChangeItem(lstReview.Items.Objects[Index]).ID;
+                            // HDS00005025
+                           //WORKS FOR MULTIPLE Dx
+                           if Assigned(UBAGlobals.tempDxList) then
+                             if UBAGlobals.tempDxNodeExists(tempID) then
+                                 begin
+                                    thisRec := TBADxRecord.Create;
+                                    UBAGlobals.GetBADxListForOrder(thisRec, tempID);
+                                    str := Piece(thisRec.FBADxCode, '^', 1); // Display Dx text only - not the ICD-9 code
+                                    str := Piece(str, ':', 1);   //in case has : vs. ^
+                                    UpdateTextRecord(arRect[Index]);
+                                    DrawText(Canvas.handle, PChar(str), Length(str), TextRecord, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+
+                                    if (Not UBACore.IsOrderBillable(tempID)) then// and
+                               //        (Not UBAGlobals.tempDxNodeExists(tempID) ) then  // if consult is non cidc but requires dx, show it.
+                                    begin
+                                       Canvas.Font.Color := Get508CompliantColor(clBlue);
+                                       UpdateTextRecord(arRect[Index]);
+                                       DrawText(Canvas.handle, PChar(NOT_APPLICABLE), Length(NOT_APPLICABLE) , TextRecord, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                                    end;
+                                 end
+                              else
+                                 begin
+                                 //Determine if order is billable. If NOT billable then insert NA in Dx field
+                                    if Not UBACore.IsOrderBillable(tempID) then
+                                    begin
+                                        Canvas.Font.Color := Get508CompliantColor(clBlue);
+                                        UpdateTextRecord(arRect[Index]);
+                                        DrawText(Canvas.handle, PChar(NOT_APPLICABLE), Length(NOT_APPLICABLE) , TextRecord, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                                    end;
+                                 end;
+                          end;
+                    end;
+        end; //if
+      end; //if
+  end; //with
+ end
+ else
+    begin
+       with lstReview do
+          begin
+          if Items.Objects[Index] = nil then
+              ARect.Left := 0;
+
+          Canvas.FillRect(ARect);
+
+          if Index < Items.Count then
+             begin
+                x := Trim(FilteredString(Items[Index]));
+
+             if (ARect.Left = 0) and ( Length(x) > 0 ) then
+                Canvas.TextOut(ARect.Left + 2, ARect.Top + dy, x)
+             else
+                if (ARect.Left > 0 ) and ( Length(x)>0 ) then
+                   begin
+                     Canvas.Pen.Color := Get508CompliantColor(clSilver);
+                     Canvas.MoveTo(0, ARect.Bottom-1);
+                     Canvas.LineTo(ARect.Right, ARect.Bottom-1);
+                     UpdateTextRecord(ARect);
+                     DrawText(Canvas.handle, PChar(x), Length(x), TextRecord, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK);
+                   end;
+             end;
+       end;
+    end;
+end;
+
+procedure TfrmReview.radReleaseClick(Sender: TObject);
+begin
+  if not grpRelease.Visible then Exit;
+  if radRelease.Checked then
+  begin
+    radVerbal.Enabled := True;
+    radPhone.Enabled  := True;
+    radPolicy.Enabled := True;
+    if Encounter.Provider = User.DUZ
+      then radPolicy.Checked := True
+      else radVerbal.Checked := True;
+  end else
+  begin
+    radVerbal.Enabled := False;
+    radPhone.Enabled  := False;
+    radPolicy.Enabled := False;
+    radVerbal.Checked := False;
+    radPhone.Checked  := False;
+    radPolicy.Checked := False;
+  end;
+end;
+
+procedure TfrmReview.txtESCodeChange(Sender: TObject);
+begin
+  if(not pnlSignature.Visible) then
+    cmdOK.Caption := 'OK'
+  else
+  begin
+    if Length(txtESCode.Text) > 0 then cmdOK.Caption := 'Sign' else
+    begin
+      if FCouldSign then cmdOK.Caption := 'Don''t Sign' else cmdOK.Caption := 'OK';
+    end;
+  end;
+end;
+  
+procedure TfrmReview.cmdOKClick(Sender: TObject);
+{ validate the electronic signature & call SaveSignItem for the encounter }
+const
+  TX_NOSIGN  = 'Save items without signing?';
+  TC_NOSIGN  = 'No Signature Entered';
+  TX_SAVERR1 = 'The error, ';
+  TX_SAVERR2 = ', occurred while trying to save:' + CRLF + CRLF;
+  TC_SAVERR  = 'Error Saving Order';
+var
+  i, idx, AType, PrintLoc, theSts, wardIEN: Integer;
+  SigSts, RelSts, Nature: Char;
+  ESCode, AnID, AnErrMsg: string;
+  ChangeItem, TempChangeItem: TChangeItem;
+  OrderList, OrderPrintList: TStringList;
+  SaveCoPay: boolean;
+  DigSigErr, DigStoreErr, CryptoChecked, displayEncSwitch: Boolean;
+  SigData, SigUser, SigDrugSch, SigDEA: string;
+  cSignature, cHashData, cCrlUrl, cErr, WardName, ASvc: string;
+  cProvDUZ: Int64;
+  AList, ClinicList, DCList, WardList: TStringList;
+  IsOk, ContainsIMOOrders, DoNotPrint : Boolean;
+  EncLocName, EncLocText: string;
+  EncLocIEN: integer;
+  EncDT: TFMDateTime;
+  EncVC: Char;
+
+  function OrdersSignedOrReleased: Boolean;
+  var
+    i: Integer;
+  begin
+    Result := False;
+    for i := 0 to Pred(OrderList.Count) do
+    begin
+      if Pos('R', Piece(OrderList[i], U, 2)) > 0 then Result := True;
+      if Pos('S', Piece(OrderList[i], U, 2)) > 0 then Result := True;
+      if Result then Break;
+    end;
+  end;
+
+  function OrdersToBeSignedOrReleased: Boolean;
+  var
+    i: Integer;
+    s,x: string;
+  begin
+    Result := FALSE;
+
+    for i := 0 to Pred(OrderList.Count) do
+    begin
+      s := Piece(OrderList[i], U, 2);
+      x := s[1];
+      if ((s <> '') and (s[1] in [SS_ONCHART, SS_ESIGNED, SS_NOTREQD])) or
+         (Piece(OrderList[i], U, 3) = RS_RELEASE) then
+      begin
+         Result := TRUE;
+         Break;
+      end;
+    end;
+  end;
+
+
+begin
+  IsOk := True;
+  ESCode := '';
+  SaveCoPay := FALSE;
+  PrintLoc := 0;
+  EncLocIEN := 0;
+  DoNotPrint := False;
+  if BILLING_AWARE then
+  begin
+     if Assigned(UBAGlobals.UnsignedOrders) then
+        UBAGlobals.UnsignedOrders.Clear;
+  end;
+  if pnlSignature.Visible then
+  begin
+    ESCode := txtESCode.Text;
+
+    if ItemsAreChecked and (Length(ESCode) > 0) and (not ValidESCode(ESCode)) then
+    begin
+      InfoBox(TX_INVAL_MSG, TX_INVAL_CAP, MB_OK);
+      txtESCode.SetFocus;
+      txtESCode.SelectAll;
+      Exit;
+    end;
+    if Length(ESCode) > 0 then ESCode := Encrypt(ESCode);
+  end; {if pnlSignature}
+
+  if not frmFrame.Closing then
+  begin
+    { save/sign orders }
+    OrderList := TStringList.Create;
+    OrderPrintList := TStringList.create;
+    ClinicList := TStringList.Create;
+    WardList := TStringList.Create;
+    DigSigErr := True;
+    CryptoChecked := False;
+    ContainsIMOOrders := False;
+    try
+      Nature := NO_PROVIDER;
+      case User.OrderRole of
+      OR_NOKEY, OR_CLERK, OR_NURSE, OR_STUDENT:
+        begin
+          SigSts := SS_UNSIGNED;                   // default to med student values
+          RelSts := RS_HOLD;
+          Nature := NO_WRITTEN;
+          if User.OrderRole in [OR_CLERK, OR_NURSE] then
+          begin
+            if radSignChart.Checked then SigSts := SS_ONCHART else SigSts := SS_UNSIGNED;
+            if radRelease.Checked or radSignChart.Checked
+              then RelSts := RS_RELEASE
+              else RelSts := RS_HOLD;
+            if radSignChart.Checked or radHoldSign.Checked then Nature := NO_WRITTEN
+            else if radVerbal.Checked then Nature := NO_VERBAL
+            else if radPhone.Checked  then Nature := NO_PHONE
+            else if radPolicy.Checked then Nature := NO_POLICY
+            else Nature := NO_WRITTEN;
+            if not pnlOrderAction.Visible then     // if no orders require a signature
+            begin
+              RelSts := RS_RELEASE;
+              Nature := NO_PROVIDER;
+              SigSts := SS_NOTREQD;
+            end;
+            // the following was added due to patch OR*3.0*86
+            if RelSts = RS_RELEASE then
+            begin
+              StatusText('Validating Release...');
+              AnErrMsg := '';
+              for i := 0 to lstReview.Items.Count - 1 do
+              begin
+                ChangeItem := TChangeItem(lstReview.Items.Objects[i]);
+                if (ChangeItem <> nil) and (ChangeItem.ItemType = CH_ORD) then
+                begin
+                  ValidateOrderActionNature(ChangeItem.ID, OA_RELEASE, Nature, AnErrMsg);
+                  if Length(AnErrMsg) > 0 then
+                  begin
+                    if IsInvalidActionWarning(ChangeItem.Text, ChangeItem.ID) then Break;
+                    InfoBox(ChangeItem.Text + TX_NO_REL + AnErrMsg, TC_NO_REL, MB_OK);
+                    Break;
+                  end; {if Length(AnErrMsg)}
+                end; {if ChangeItem=CH_ORD}
+              end; {for}
+              StatusText('');
+              if Length(AnErrMsg) > 0 then Exit;
+            end; {if RelSts}
+            // the following supports the change to allow nurses to sign policy orders
+            if FSilent then RelSts := RS_HOLD;
+            if (RelSts = RS_RELEASE) and pnlOrderAction.Visible then
+            begin
+              SignatureForItem(Font.Size, TX_ES_REQ, TC_ES_REQ, ESCode);
+              if ESCode = '' then Exit;
+              if Nature = NO_POLICY then SigSts := SS_ESIGNED;
+            end;
+          end; {if..ORCLERK, OR_NURSE}
+
+          with lstReview do for i := 0 to Items.Count - 1 do
+          begin
+            ChangeItem := TChangeItem(Items.Objects[i]);
+            if (ChangeItem <> nil) and (ChangeItem.ItemType = CH_ORD) and (not radSignChart.Checked) then
+            begin
+              OrderList.Add(ChangeItem.ID + U + SigSts + U + RelSts + U + Nature);
+              if BILLING_AWARE then
+                if not (User.DUZ = 0) and PersonHasKey(User.DUZ, 'PROVIDER') then
+                   UBACore.SaveUnsignedOrders(ChangeItem.ID+ '1' + GetCheckBoxStatus(ChangeItem.ID) )
+            end
+            else if (ChangeItem <> nil) and (ChangeItem.ItemType = CH_ORD) and (radSignChart.Checked) then
+              OrderList.Add(ChangeItem.ID + U + SS_ONCHART + U + RS_RELEASE + U + NO_WRITTEN);
+
+          end; {with lstReview}
+        end; {OR_NOKEY, OR_CLERK, OR_NURSE, OR_STUDENT}
+
+      OR_PHYSICIAN:
+        begin
+          Nature := NO_PROVIDER;
+          with lstReview do for i := 0 to Items.Count - 1 do
+          begin
+            DigStoreErr := false;
+            ChangeItem := TChangeItem(Items.Objects[i]);
+            if (ChangeItem <> nil) and (ChangeItem.ItemType = CH_ORD) then
+              begin
+                case State[i] of
+                cbChecked:   if Length(ESCode) > 0 then
+                             begin
+                               SigSts := SS_ESIGNED;
+                               RelSts := RS_RELEASE;
+                               if (OrderRequiresDigitalSignature(ChangeItem.ID)) and (CryptoChecked = false)
+                                 and GetPKISite and GetPKIUse then
+                                  begin
+                                    Cryptochecked := true;
+                                    try  //PKI object creation
+                                      crypto := CoXuDigSigS.Create;
+                                      crypto.GetCSP;
+                                      StatusText(crypto.Reason);
+                                      DigSigErr := False;
+                                    except
+                                    on  E: Exception do
+                                      begin
+                                        DigSigErr := True;
+                                      end;
+                                    end;
+                                  end;
+                               if (DigSigErr = false) and (OrderRequiresDigitalSignature(ChangeItem.ID))
+                                 and (SigItems.OK2SaveSettings) then
+                                begin
+                                  StatusText('Retrieving DIGITAL SIGNATURE');
+                                  SigDrugSch := GetDrugSchedule(ChangeItem.ID);
+                                  SigData := SetExternalText(ChangeItem.ID,SigDrugSch,User.DUZ);
+                                  if Length(SigData) < 1 then
+                                    begin
+                                      ShowMsg(ChangeItem.Text + CRLF + CRLF + 'Digital Signature failed with reason: Unable to get required data from server');
+                                      DigStoreErr := true;
+                                    end;
+                                  SigUser := piece(SigData,'^',18);
+                                  SigDEA := piece(SigData,'^',20);
+                                  cProvDUZ := User.DUZ;
+                                  if DigStoreErr = false then
+                                  try
+                                    crypto.Reset;
+                                    crypto.DEAsig := true;
+                                    crypto.UsrName := SigUser;
+                                    crypto.DrugSch := SigDrugSch;
+                                    crypto.UsrNumber := SigDEA;
+                                    crypto.DataBuffer := SigData;
+                                    if crypto.Signdata = true then
+                                      begin
+                                        cSignature := crypto.Signature;
+                                        cHashData := crypto.HashValue;
+                                        cCrlUrl := crypto.CrlUrl;
+                                      end
+                                    else
+                                      begin
+                                        ShowMsg(ChangeItem.Text + CRLF + CRLF + 'Digital Signature failed with reason: '+ piece(Crypto.Reason, '^', 2));
+                                        DigStoreErr := true;
+                                      end;
+                                  except
+                                    on  E: Exception do
+                                      begin
+                                        ShowMsg(ChangeItem.Text + CRLF + CRLF + 'Crypto raised an error: '+ E.Message);
+                                        DigStoreErr := true;
+                                      end;
+                                  end;  //except
+                                  if DigStoreErr = true then  //PKI
+                                    //NoOp
+                                  else
+                                    begin
+                                      cErr := '';
+                                      StoreDigitalSig(ChangeItem.ID, cHashData, cProvDUZ, cSignature, cCrlUrl, cErr);
+                                      if cErr = '' then
+                                        OrderList.Add(ChangeItem.ID + U + SS_DIGSIG + U + RS_RELEASE + U + Nature);
+                                    end;
+                                end
+                               else
+                                begin
+                                  if GetPKISite and (OrderRequiresDigitalSignature(ChangeItem.ID)) then
+                                    begin
+                                      ShowMsg('ORDER NOT SENT TO PHARMACY' + CRLF + CRLF + ChangeItem.Text + CRLF + CRLF +
+                                        'This Schedule II medication cannot be electronically entered without a Digital Signature. ' +
+                                        CRLF + 'Please discontinue/cancel this order and create a hand written order for manual processing, or digitally sign the order at a PKI-enabled workstation.');
+                                    end
+                                  else
+                                    OrderList.Add(ChangeItem.ID + U + SigSts + U + RelSts + U + Nature);
+                                end;
+                             end else
+                             begin
+                               if BILLING_AWARE then
+                                  UBACore.SaveUnsignedOrders(ChangeItem.ID+ '1' + GetCheckBoxStatus(ChangeItem.ID) );
+                               SigSts := SS_UNSIGNED;
+                               RelSts := RS_HOLD;
+                             end;
+                cbGrayed:    if OrderRequiresSignature(ChangeItem.ID) then
+                             begin
+                               SigSts := SS_UNSIGNED;
+                               RelSts := RS_HOLD;
+                             end else
+                             begin
+                               SigSts := SS_NOTREQD;
+                               RelSts := RS_RELEASE;
+                             end;
+                else         begin                   // (cbUnchecked)
+                               SigSts := SS_UNSIGNED;
+                               RelSts := RS_HOLD;
+                             end;
+                end; {case State}
+
+                if (ChangeItem.GroupName = 'Other Unsigned') and (SigSts = SS_UNSIGNED) and (RelSts = RS_HOLD)
+                  then //NoOp - don't add unsigned orders from outside session to the list
+                  else
+                  begin
+                    if not(State[i] = cbChecked) and (OrderList.IndexOf(ChangeItem.ID + U + SigSts + U + RelSts + U + Nature) < 0) then
+                      OrderList.Add(ChangeItem.ID + U + SigSts + U + RelSts + U + Nature)
+                    else if (cmdOK.Caption = 'Don''t Sign') and (OrderList.IndexOf(ChangeItem.ID + U + SigSts + U + RelSts + U + Nature) < 0) then
+                      OrderList.Add(ChangeItem.ID + U + SigSts + U + RelSts + U + Nature);
+                  end;
+            end; {if ItemType}
+          end; {with lstReview}
+        end; {OR_PHYSICIAN}
+      end; {case User.OrderRole}
+      if BILLING_AWARE then
+         if UBAGLobals.UnsignedOrders.Count > 0 then
+           UBACore.BuildSaveUnsignedList(uBAGLobals.UnsignedOrders);
+
+      // if true BA data in not mandatory.
+      if not IsUserNurseProvider(User.DUZ) then
+      begin
+         if OrdersToBeSignedOrReleased then
+         begin
+           if (not SigItems.OK2SaveSettings) then
+           begin
+             if (cmdOk.Caption = 'Don''t Sign') then
+                SaveCoPay := TRUE
+             else
+             begin
+                InfoBox(TX_Order_Error, 'Review/Sign Orders', MB_OK);
+                Exit;
+             end
+           end
+           else
+             SaveCoPay := TRUE;
+      end
+      else
+         SaveCoPay := TRUE;
+
+         {Begin BillingAware}
+          if  BILLING_AWARE then
+          begin
+            if (cmdOk.Caption = 'Sign') then
+              begin
+                if Not UBACore.BADxEntered then
+                begin
+                   InfoBox(TX_NO_DX, TC_NO_DX, MB_OK);
+                   Exit;
+                end;
+              end;
+            {End BillingAware}
+         end;
+      end;
+
+      {release & print orders}
+      // test for LockedForOrdering is to make sure patient is locked if pulling in all unsigned
+      if (User.OrderRole in [OR_NOKEY..OR_STUDENT]) and (OrderList.Count > 0) and LockedForOrdering then
+      begin
+        IsOk := ExecuteSessionOrderChecks(OrderList);  // any cancelled orders will be removed from OrderList
+        StatusText('Sending Orders to Service(s)...');
+        if OrderList.Count > 0 then
+        begin
+        //hds7591  Clinic/Ward movement.  Nurse orders
+          if (cmdOk.Caption = 'Sign') or (cmdOK.Caption = 'OK') and (not frmFrame.TimedOut) then
+          begin
+             if ((Patient.Inpatient = false) and (frmClinicWardMeds.rpcIsPatientOnWard(patient.DFN))) or
+                 ((Patient.Inpatient = True) and (Encounter.Location <> Patient.Location)) or
+                 ((Patient.Inpatient = True) and (Encounter.Location = Patient.Location) and
+                 (encounter.Location <> uCore.TempEncounterLoc) and (uCore.TempEncounterLoc <> 0)) then
+                 //or ((frmFrame.DoNotChangeEncWindow = true) and (encounter.Location  = uCore.TempOutEncounterLoc)) then
+             begin
+                 if Encounter.Location <> Patient.Location then
+                   begin
+                     EncLocName := Encounter.LocationName;
+                     EncLocIEN  := Encounter.Location;
+                     EncLocText := Encounter.LocationText;
+                     EncDT := Encounter.DateTime;
+                     EncVC := Encounter.VisitCategory;
+                   end
+                 else
+                    begin
+                     EncLocName := UCore.TempEncounterLocName;
+                     EncLocIEN  := UCore.TempEncounterLoc;
+                     EncLocText := uCore.TempEncounterText;
+                     EncDT := uCore.TempEncounterDateTime;
+                     EncVC := uCore.TempEncounterVistCat;
+                    end;
+                 if frmFrame.mnuFile.Tag = 0 then displayEncSwitch := false
+                 else displayEncSwitch := true;
+
+                 (*displayEncSwitch := False;
+                 if (frmFrame.mnuFile.Items[frmFrame.mnuFile.menuIndex].Caption = 'Refresh Patient &Information') or
+                 (frmFrame.mnuFile.Items[frmFrame.mnuFile.menuIndex].Caption = '&Review/Sign Changes...') then
+                      displayEncSwitch := True;    *)
+                 DCList := TStringList.Create;
+                 for i := 0 to lstReview.Items.Count-1 do
+                   begin
+                    if (lstReview.Checked[i] = false) and (lstReview.State[i] <> cbGrayed) then continue;
+                    TempChangeItem := TChangeItem(lstReview.Items.Objects[i]);
+                    if TempChangeItem.DCOrder = True then
+                      begin
+                        DCList.Add(tempChangeItem.ID);
+                        continue;
+                      end;
+                    if TempChangeItem.OrderDG = NONVAMEDGROUP then continue;
+                    if TempChangeItem.OrderDG = 'Clinic Orders' then ContainsIMOORders := true;
+                    if (tempChangeItem.OrderDG = '') then continue;
+                    if tempChangeItem.Delay = True then continue;
+                    OrderPrintList.Add(tempChangeItem.ID + ':' + tempChangeItem.Text);
+                  end;
+                  if OrderPrintList.Count > 0 then
+                    frmPrintLocation.PrintLocation(OrderPrintList, EncLocIEN, EncLocName, EncLocText, EncDT, EncVC, ClinicList,
+                                                   WardList, wardIEN, wardName, ContainsIMOOrders, displayEncSwitch)
+                  else
+                    begin
+                    frmPrintLocation.SwitchEncounterLoction(EncLocIEN, EncLocName, EncLocText, EncDT, EncVC);
+                    fframe.frmFrame.OrderPrintForm := True;
+                    DoNotPrint := True;
+                    end;
+
+                  if DCList.Count > 0 then
+                    begin
+                       for i := 0 to DCList.Count - 1 do
+                         WardList.Add(DCList.Strings[i]);
+                       if (WardIEN = 0) and (WardName = '') then
+                          CurrentLocationForPatient(Patient.DFN, WardIEN, WardName, ASvc);
+                    end;
+                  if DCList <> nil then DCList.Free;                  
+               end;
+          end;
+          if (cmdOk.Caption = 'Don''t Sign') and (not frmFrame.TimedOut) then
+               begin
+                  if ((Patient.Inpatient = false) and (frmClinicWardMeds.rpcIsPatientOnWard(patient.DFN))) or
+                 ((Patient.Inpatient = True) and (Encounter.Location <> Patient.Location)) or
+                 ((Patient.Inpatient = True) and (Encounter.Location = Patient.Location) and
+                 (encounter.Location <> uCore.TempEncounterLoc) and (uCore.TempEncounterLoc <> 0)) then
+                 //or ((frmFrame.DoNotChangeEncWindow = true) and (encounter.Location  = uCore.TempOutEncounterLoc)) then
+                    begin
+                      if Encounter.Location <> Patient.Location then
+                        begin
+                          EncLocName := Encounter.LocationName;
+                          EncLocIEN  := Encounter.Location;
+                          EncLocText := Encounter.LocationText;
+                          EncDT := Encounter.DateTime;
+                          EncVC := Encounter.VisitCategory;
+                        end
+                      else
+                        begin
+                          EncLocName := UCore.TempEncounterLocName;
+                          EncLocIEN  := UCore.TempEncounterLoc;
+                          EncLocText := uCore.TempEncounterText;
+                          EncDT := uCore.TempEncounterDateTime;
+                          EncVC := uCore.TempEncounterVistCat;
+                        end;
+                        frmPrintLocation.SwitchEncounterLoction(EncLocIEN, EncLocName, EncLocText, EncDT, EncVC);
+                        fframe.frmFrame.OrderPrintForm := True;
+                    end;
+               end;
+          uCore.TempEncounterLoc := 0;
+          uCore.TempEncounterLocName := '';
+        end;
+        //hds7591  Clinic/Ward movement.
+        
+          if SaveCoPay then
+            SigItems.SaveSettings; // Save CoPay FIRST
+          SendOrders(OrderList, ESCode);   {*KCM*}
+
+        with OrderList do for i := 0 to Count - 1 do
+        begin
+          if Pos('E', Piece(OrderList[i], U, 2)) > 0 then
+          begin
+            ChangeItem := Changes.Locate(CH_ORD, Piece(OrderList[i], U, 1));
+            if not FSilent then
+              begin
+                if Piece(OrderList[i],U,4) = 'Invalid Pharmacy order number' then
+                  InfoBox(TX_SAVERR1 + Piece(OrderList[i], U, 4) + TX_SAVERR2 + ChangeItem.Text + CRLF + CRLF +
+                        'The changes to this order have not been saved.  You must contact Pharmacy to complete any action on this order.',
+                        TC_SAVERR, MB_OK)
+               else
+                 InfoBox(TX_SAVERR1 + Piece(OrderList[i], U, 4) + TX_SAVERR2 + ChangeItem.Text,
+                    TC_SAVERR, MB_OK);
+              end;
+          end;
+          if Pos('R', Piece(OrderList[i], U, 2)) > 0 then
+            NotifyOtherApps(NAE_ORDER, 'RL' + U + Piece(OrderList[i], U, 1));
+        end;
+        if OrdersSignedOrReleased and (not FSilent) then
+        begin
+          for idx := OrderList.Count - 1 downto 0 do
+          begin
+            if Pos('E', Piece(OrderList[idx], U, 2)) > 0 then
+            begin
+              OrderList.Delete(idx);
+              Continue;
+            end;
+            theSts := GetOrderStatus(Piece(OrderList[idx],U,1));
+            if theSts = 10 then  OrderList.Delete(idx);  //signed delayed order should not be printed.
+          end;
+          //  CQ 10226, PSI-05-048 - advise of auto-change from LC to WC on lab orders
+          AList := TStringList.Create;
+          try
+            CheckForChangeFromLCtoWCOnRelease(AList, Encounter.Location, OrderList);
+            if AList.Text <> '' then
+              ReportBox(AList, 'Changed Orders', TRUE);
+          finally
+            AList.Free;
+          end;
+          if (ClinicList.Count > 0) or (WardList.Count > 0) then
+                PrintOrdersOnSignReleaseMult(OrderList, CLinicList, WardList, Nature, EncLocIEN, WardIEN, EncLocName, wardName)
+          else if DoNotPrint = false then PrintOrdersOnSignRelease(OrderList, Nature, PrintLoc);
+        end;
+        StatusText('');
+        UpdateUnsignedOrderAlerts(Patient.DFN);
+        with Notifications do
+          if Active and (FollowUp = NF_ORDER_REQUIRES_ELEC_SIGNATURE) then
+            UnsignedOrderAlertFollowup(Piece(RecordID, U, 2));
+        UpdateExpiringMedAlerts(Patient.DFN);
+        UpdateUnverifiedMedAlerts(Patient.DFN);
+        UpdateUnverifiedOrderAlerts(Patient.DFN);
+        SendMessage(Application.MainForm.Handle, UM_NEWORDER, ORDER_SIGN, 0);
+      end; {if User.OrderRole}
+
+    finally
+      FreeAndNil(OrderList);
+      FreeAndNil(OrderPrintList);
+      FreeAndNil(ClinicList);
+      FreeAndNil(WardList);
+    end;
+    crypto := nil;
+  end;
+
+  { save/sign documents }
+  //with lstReview do for i := 0 to Items.Count - 1 do
+  with lstReview do for i := 0 to Items.Count - 1 do
+  begin
+    ChangeItem := TChangeItem(Items.Objects[i]);
+    if ChangeItem <> nil then with ChangeItem do
+      case ItemType of
+      CH_DOC: if Checked[i]
+                then frmNotes.SaveSignItem(ChangeItem.ID, ESCode)
+                else frmNotes.SaveSignItem(ChangeItem.ID, '');
+      CH_CON: if Checked[i]
+                then frmConsults.SaveSignItem(ChangeItem.ID, ESCode)
+                else frmConsults.SaveSignItem(ChangeItem.ID, '');
+      CH_SUM: if Checked[i]
+                then frmDCSumm.SaveSignItem(ChangeItem.ID, ESCode)
+                else frmDCSumm.SaveSignItem(ChangeItem.ID, '');
+      CH_SUR: if Assigned(frmSurgery) then
+              begin
+                if Checked[i]
+                  then frmSurgery.SaveSignItem(ChangeItem.ID, ESCode)
+                  else frmSurgery.SaveSignItem(ChangeItem.ID, '');
+              end;
+      end; {case}
+  end; {with lstReview}
+  if frmFrame.Closing then exit;
+
+  // clear all the items that were on the list (but not all in Changes)
+  with lstReview do for i := Items.Count - 1 downto 0  do
+  begin
+    if (not Assigned(Items.Objects[i])) then continue;   {**RV**}
+    ChangeItem := TChangeItem(Items.Objects[i]);
+    if ChangeItem <> nil then
+    begin
+      AnID := ChangeItem.ID;
+      AType := ChangeItem.ItemType;
+      Changes.Remove(AType, AnID);
+    end;
+  end;
+  UnlockIfAble;
+  FOKPressed := IsOk;
+  Close;
+end;
+
+procedure TfrmReview.CleanupChangesList(Sender: TObject; ChangeItem: TChangeItem);
+{Added for v15.3 - called by Changes.Remove, but only if fReview in progress}
+var
+  i: integer;
+begin
+  with lstReview do
+    begin
+      i := Items.IndexOfObject(ChangeItem);
+      if i > -1 then
+        begin
+          TChangeItem(Items.Objects[i]).Free;
+          Items.Objects[i] := nil;
+        end;
+    end;
+end;
+
+procedure TfrmReview.cmdCancelClick(Sender: TObject);
+{ cancelled - do nothing }
+begin
+  Inherited;
+  Close;
+end;
+
+procedure TfrmReview.lstReviewMeasureItem(Control: TWinControl;
+  Index: Integer; var AHeight: Integer);
+var
+  x:string;
+  ARect: TRect;
+begin
+  inherited;
+  AHeight := SigItemHeight;
+  with lstReview do if Index < Items.Count then
+  begin
+    ARect := ItemRect(Index);
+    Canvas.FillRect(ARect);
+    x := FilteredString(Items[Index]);
+    AHeight := WrappedTextHeightByFont( lstReview.Canvas, Font, x, ARect) + SIG_ITEM_VERTICAL_PAD;
+    if AHeight > 255 then AHeight := 255;
+    //-------------------
+    {Bug fix-HDS00001627}
+    //if AHeight <  13 then AHeight := 13; {ORIG}
+    if AHeight <  13 then AHeight := 15;
+    //-------------------
+  end;
+end;
+
+procedure TfrmReview.FormDestroy(Sender: TObject);
+begin
+  Application.HintPause := FOldHintPause;
+  Application.HintHidePause := FOldHintHidePause;
+end;
+
+
+procedure TfrmReview.lstReviewMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+var
+  Itm: integer;
+
+ {Begin BillingAware}
+  tempRec: UBAGlobals.TBADxRecord;
+  i: smallint;
+  thisOrderID: string;
+ {End BillingAware}
+
+begin
+  inherited;
+  Itm := lstReview.ItemAtPos(Point(X, Y), TRUE);
+  if (Itm >= 0) then
+  begin
+    if (Itm <> FLastHintItem) then
+    begin
+      Application.CancelHint;
+      //ORIG  lstReview.Hint := TrimRight(lstReview.Items[Itm]);
+  {Begin BillingAware}
+   if  BILLING_AWARE then
+   begin
+       if frmFrame.TimedOut then Exit;
+        //Billing Awareness 'flyover' hint includes Dx code(s) when Dx code(s) have been assigned to an order
+
+          if Assigned(frmReview) then
+              if Assigned(fReview.frmReview.lstReview.Items.Objects[Itm]) then
+                    thisOrderID := TOrder(fReview.frmReview.lstReview.Items.Objects[Itm]).ID;
+
+           if UBAGlobals.tempDxNodeExists(thisOrderID) then
+                 begin
+                 if Assigned(tempDxList) then
+                    try
+                      for i := 0 to (tempDxList.Count - 1) do
+                         begin
+                          tempRec := TBADxRecord(tempDxList.Items[i]);
+
+                          if Assigned(tempRec) then
+                            if (tempRec.FOrderID = thisOrderID) then
+                                begin
+                                with tempRec do
+                                   begin
+                                   FBADxCode := StringReplace(tempRec.FBADxCode,'^',':',[rfReplaceAll]);
+                                   FBASecDx1 := StringReplace(tempRec.FBASecDx1,'^',':',[rfReplaceAll]);
+                                   FBASecDx2 := StringReplace(tempRec.FBASecDx2,'^',':',[rfReplaceAll]);;
+                                   FBASecDx3 := StringReplace(tempRec.FBASecDx3,'^',':',[rfReplaceAll]);
+                                   end;
+
+                                   lstReview.Hint := TrimRight(lstReview.Items[Itm] + #13 +
+                                      tempRec.FBADxCode + #13 + tempRec.FBASecDx1 + #13 + tempRec.FBASecDx2 + #13 + tempRec.FBASecDx3);
+                                end
+                         end //for
+                      except
+                          on EListError do
+                             begin
+                             {$ifdef debug}Show508Message('EListError in fReview.lstReviewMouseMove()');{$endif}
+                             raise;
+                             end;
+                      end;
+                 end
+           else
+               lstReview.Hint := TrimRight(lstReview.Items[Itm]);
+   end;
+{End BillingAware}
+
+      FLastHintItem := Itm;
+      Application.ActivateHint(Point(X, Y));
+    end;
+  end
+  else
+  begin
+    lstReview.Hint := '';
+    FLastHintItem := -1;
+    Application.CancelHint;
+  end;
+end;
+
+procedure TfrmReview.buDiagnosisClick(Sender: TObject);
+{Begin BillingAware}
+var
+  i: smallint;
+  thisOrderID: string;
+  match: boolean;
+  allBlank: boolean;
+  numSelected: smallint;
+  tmpOrderIDList: TStringList;
+  thisChangeItem: TChangeItem;
+{End BillingAware}
+begin
+{Begin BillingAware}
+try
+ if  BILLING_AWARE then
+ begin
+  //Prevent user from attempting to process first row - It is not an order!
+  //if lstReview.ItemIndex = 0 then
+     //Exit;
+
+  tmpOrderIDList := TStringList.Create;
+  if Assigned(tmpOrderIDList) then tmpOrderIDList.Clear;
+  BAtmpOrderList.Clear;
+  UBAGlobals.PLFactorsIndexes.Clear;
+
+  match := false;
+  allBlank := false;
+
+  try
+      // User has selected no orders to sign
+     for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
+        begin
+         if (fReview.frmReview.lstReview.Selected[i]) then
+         //*********************************
+            begin    //Access Violation fix
+            thisChangeItem := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]);
+            if thisChangeItem = nil then
+              begin
+              fReview.frmReview.lstReview.Selected[i] := false;
+              Continue;
+              end;
+          //*********************************
+              thisOrderID := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID;
+              {BAV25 Code} //Used to pass selected orders to Lookup DX form
+              BAtmpOrderList.Add(TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).TEXT);
+              tmpOrderIDList.Add(thisOrderID);
+              chkBoxStatus := GetCheckBoxStatus(thisOrderID);
+              UBAGlobals.PLFactorsIndexes.Add(IntToStr(i)+ U + chkBoxStatus);
+             {BAV25 Code}
+             
+            // Test for blank Dx on current grid item
+            if Not (tempDxNodeExists(thisOrderID)) then
+               if Assigned(UBAGlobals.GlobalDxRec) then
+                  InitializeNewDxRec(UBAGlobals.globalDxRec);
+            begin
+               if (tempDxNodeExists(thisOrderID) ) then
+                 if not Assigned(UBAGlobals.globalDxRec) then
+                    begin
+                    UBAGlobals.globalDxRec := UBAGlobals.TBADxRecord.Create;
+                    InitializeNewDxRec(UBAGlobals.globalDxRec);
+                    GetBADxListForOrder(UBAGlobals.globalDxRec, thisOrderID);
+                    end
+                 else
+                    GetBADxListForOrder(UBAGlobals.globalDxRec, thisOrderID);
+
+                  end
+           end; //if
+        end; //for
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in fReview.buDiagnosisClick()');{$endif}
+        raise;
+        end;
+  end;
+
+  numSelected  := CountSelectedOrders(UBAConst.F_REVIEW);
+
+  if numSelected = 0 then
+     begin
+     ShowMsg(UBAMessages.BA_NO_ORDERS_SELECTED);
+     Exit;
+     end
+  else
+     if numSelected = 1 then
+        match := true;
+
+  if (UBAGlobals.CompareOrderDx(UBAConst.F_REVIEW)) then
+     match := true;
+
+
+  if UBAGlobals.AllSelectedDxBlank(UBAConst.F_REVIEW) then
+     allBlank := true;
+
+  if ((match and allBlank) or (match and (not allBlank))) then  // All selected are blank or matching-not-blank
+     begin
+        frmBALocalDiagnoses.Enter(UBAConst.F_REVIEW,  tmpOrderIDList);
+     end
+  else
+     begin
+     //Warning message
+     //If 'Yes' on warning message then open localDiagnosis
+     if (not allBlank) then
+         if MessageDlg(UBAMessages.BA_CONFIRM_DX_OVERWRITE, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
+                  begin
+                  if Assigned(UBAGlobals.globalDxRec) then
+                     InitializeNewDxRec(UBAGlobals.globalDxRec);
+                  //frmBALocalDiagnoses.Enter(UBAConst.F_REVIEW, tmpOrderIDList);
+
+                  frmBALocalDiagnoses := TfrmBALocalDiagnoses.Create(frmReview);
+                  frmBALocalDiagnoses.ShowModal;
+                  frmBALocalDiagnoses.Release;
+
+                  end;
+     end;
+     // TFactors come from FBALocalDiagnoses(Problem List Dx's Only).
+     if Length(UBAGlobals.TFactors) > 0 then
+     begin
+        UBACore.SetTreatmentFactors(UBAGlobals.TFactors);
+        SigItems.DisplayPlTreatmentFactors;
+     end;
+ {End BillingAware}
+ if pnlSignature.Visible then
+    txtESCode.SetFocus;
+   end;
+ finally
+     if Assigned(tmpOrderIDList) then FreeAndNil(tmpOrderIDList);
+ end;
+end;
+
+procedure TfrmReview.lstReviewClick(Sender: TObject);
+//If grid item is an order-able item, then enable the Diagnosis button
+// else disable the Diagnosis button.
+{Begin BillingAware}
+var
+  thisChangeItem: TChangeItem;
+  i: smallint;
+  thisOrderList: TStringList;
+{End BillingAware}
+begin
+thisOrderList := TStringList.Create;
+
+{Begin BillingAware}
+ if  BILLING_AWARE then
+ begin
+    if lstReview.Items.Count > 1 then
+       Copy1.Enabled := True
+    else
+       Copy1.Enabled := False;
+
+  try
+     for i := 0 to lstReview.Items.Count - 1 do
+     begin
+        if lstReview.Selected[i] then
+           begin
+           thisChangeItem := TChangeItem(lstReview.Items.Objects[i]);
+
+           //Disallow copying of a grid HEADER item on LEFT MOUSE CLICK
+           if thisChangeItem = nil then
+              begin
+              buDiagnosis.Enabled := false;
+              Copy1.Enabled := false;
+              Paste1.Enabled := false;
+              Diagnosis1.Enabled := false;
+              Exit;
+              end;
+
+           if (thisChangeItem <> nil) then
+              begin
+              thisOrderList.Clear;
+              thisOrderList.Add(thisChangeItem.ID);
+              // Returns True if All selected orders are N/A, Order selected are NON CIDC or DC'd
+              if uBACore.IsAllOrdersNA(thisOrderList) then
+                 begin
+                 Diagnosis1.Enabled := false;
+                 buDiagnosis.Enabled := false;
+                 end
+              else
+                 begin
+                 Diagnosis1.Enabled := true;
+                 buDiagnosis.Enabled := true;
+                 end
+              end
+           else
+              begin
+              buDiagnosis.Enabled := false;
+              Diagnosis1.Enabled := False;
+              Break;
+              end;
+           end;
+        end;
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in fReview.lstReviewClick()');{$endif}
+        raise;
+        end;
+  end;
+ {End BillingAware}
+ end;    
+ if Assigned(thisOrderList) then thisOrderList.Free;
+end;
+
+procedure TfrmReview.Exit1Click(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmReview.lstReviewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+{
+   - Open copy/paste popup menu.
+}
+var
+  ClientPoint: TPoint;
+  ScreenPoint: TPoint;
+  thisChangeItem: TChangeItem;
+  i: integer;
+begin
+  if not BILLING_AWARE then lstReview.PopupMenu := nil;
+
+  if BILLING_AWARE then
+     begin
+        if Button = mbRight then  //Right-click to open copy/paste popup menu
+           begin
+           //CQ3325
+           if frmReview.lstReview.Items.Count = 3 then
+              begin
+              Copy1.Enabled := false;
+              Paste1.Enabled := false
+              end
+           else
+              begin
+              Copy1.Enabled := true;
+              //Paste1.Enabled := true; //commented out for CQ6225
+              end;
+           //End CQ3325
+
+     //CQ HDS00002954 Fix
+     if Button = mbRight then
+         //Disallow copying of a grid HEADER item
+        for i := 0 to lstReview.Items.Count - 1 do
+              if lstReview.Selected[i] then
+                 begin
+                
+                 thisChangeItem := TChangeItem(lstReview.Items.Objects[i]);
+
+                  if thisChangeItem = nil then
+                     begin
+                     lstReview.Selected[i] := false;
+                     Copy1.Enabled := false;
+                     Paste1.Enabled := false;
+                     Exit;
+                     end;
+                  end;
+                    
+         if not frmReview.lstReview.Selected[lstReview.ItemIndex] then
+            (Sender as TCheckListBox).Selected[lstReview.ItemIndex] := true;
+
+         ClientPoint.X := X;
+         ClientPoint.Y := Y;
+         ScreenPoint := lstReview.ClientToScreen(ClientPoint);
+         poBACopyPaste.Popup(ScreenPoint.X, ScreenPoint.Y);
+         end;
+      end;
+end;
+
+procedure TfrmReview.Copy1Click(Sender: TObject);
+{
+   - Copy contents of the 'source' order for copy/paste operation
+}
+var
+  i : byte;
+  numSelected: byte;
+  thisChangeItem: TChangeItem;
+begin
+  try
+     if BILLING_AWARE then
+        begin
+        Paste1.Enabled := true;
+
+         numSelected := GetNumberOfSelectedOrders;
+
+         if numSelected > 1 then
+           begin
+           ShowMsg('Only 1 order at a time may be selected for ''Copying''');
+           Exit;
+           end;
+
+            
+         for i := 1 to frmReview.lstReview.Items.Count-1 do
+             if (frmReview.lstReview.Selected[i]) then
+               begin
+               thisChangeItem := TChangeItem.Create;
+               thisChangeItem := nil;
+               thisChangeItem := TChangeItem(lstReview.Items.Objects[i]);
+               
+               //Skip this one if it's a "header" on the grid
+                 if (thisChangeItem = nil) then //or (thisChangeItem.ItemType <> CH_ORD)) then
+                    begin
+                    if Assigned(thisChangeItem) then FreeAndNil(thisChangeItem);
+                    Exit;
+                    end;
+
+               fReview.srcOrderID := TChangeItem(frmReview.lstReview.Items.Objects[i]).ID;
+
+               //Copy source order to COPY BUFFER and add it to the Dx List
+               CopyBuffer := TBADxRecord.Create;
+               InitializeNewDxRec(CopyBuffer);
+               GetBADxListForOrder(CopyBuffer, fReview.srcOrderID);
+               fReview.CopyBuffer.FOrderID := BUFFER_ORDER_ID;
+               UBAGlobals.tempDxList.Add(CopyBuffer);
+
+               //***********************************************************************
+               if Not UBACore.IsOrderBillable(fReview.srcOrderID) then 
+                 begin
+                 ShowMsg(BA_NA_COPY_DISALLOWED);
+                 //Continue;
+                 fReview.srcOrderID := '';
+                 Exit;
+                 end;
+                 //***********************************************************************
+
+               fReview.srcIndex := lstReview.ItemIndex;
+               fReview.chkBoxStatus := GetCheckBoxStatus(fReview.srcOrderID);
+               Break;
+               end;
+        end; //if BILLING_AWARE
+   except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in fReview.Copy1Click()');{$endif}
+        raise
+        end;
+   end;
+end;
+
+procedure TfrmReview.Paste1Click(Sender: TObject);
+{
+  - Populate 'target' orders of a copy/paste operation with contents of 'source' order
+}
+var
+  i: byte;
+  thisChangeItem: TChangeItem;
+  newRec: TBADxRecord;
+begin
+  if BILLING_AWARE then
+     begin
+      if not Assigned(fReview.CopyBuffer) then //CQ5414
+        fReview.CopyBuffer := TBADxRecord.Create; //CQ5414
+        
+  try
+      for i := 1 to lstReview.Count - 1 do
+          begin
+          if (frmReview.lstReview.Selected[i]) then
+            begin
+            thisChangeItem := TChangeItem(lstReview.Items.Objects[i]);
+
+            //Skip this one if it's a "header" on the grid
+            if (thisChangeItem = nil) then
+              Continue;
+
+            if (fReview.frmReview.lstReview.Selected[i]) then
+              begin
+              fReview.targetOrderID := TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID;
+
+               if fReview.targetOrderID = fReview.srcOrderID then //disallow copying an order to itself
+                  Continue
+               else
+                  begin
+                  fReview.CopyBuffer.FOrderID := BUFFER_ORDER_ID;
+
+                  //***************************************************************
+                  if (NOT UBACore.IsOrderBillable(fReview.targetOrderID) ) then
+                   begin
+                    ShowMsg(BA_NA_PASTE_DISALLOWED);
+                    fReview.targetOrderID := '';
+                    Continue;
+                    end;
+                  //***************************************************************
+
+                  newRec := TBADxRecord.Create;
+                  with newRec do
+                    begin
+                      FOrderID := fReview.targetOrderID;
+                      FBADxCode := CopyBuffer.FBADxCode;
+                      FBASecDx1 := CopyBuffer.FBASecDx1;
+                      FBASecDx2 := CopyBuffer.FBASecDx2;
+                      FBASecDx3 := CopyBuffer.FBASecDx3;
+                    end;
+
+                    tempDxList.Add(newRec);
+
+                    CopyTFCIToTargetOrder(fReview.targetOrderID, fReview.chkBoxStatus);
+                     SetCheckBoxStatus(fReview.targetOrderID);  //calls uSignItems.SetSigItems()
+                end; //else
+            end; //if
+          end //if
+      else
+        Continue
+        end; //for
+  except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in fReview.Paste1Click()');{$endif}
+        raise;
+        end;
+  end;
+
+  end; //if BILLING_AWARE
+
+  lstReview.Refresh; //Update grid to show pasted Dx/TF/CI
+
+end;
+
+procedure TfrmReview.ClearDiagnoses1Click(Sender: TObject);
+var
+  selectedOrderIDList: TStringList;
+  i:integer;
+begin
+  selectedOrderIDList := TStringList.Create;
+  selectedOrderIDList.Clear;
+
+  try
+   for i := 0 to fReview.frmReview.lstReview.Items.Count-1 do
+      begin
+         if (fReview.frmReview.lstReview.Selected[i]) then
+            selectedOrderIDList.Add(TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).ID);
+      end;
+   except
+     on EListError do
+        begin
+        {$ifdef debug}Show508Message('EListError in fReview.ClearDiagnoses1Click()');{$endif}
+        raise;
+        end;
+   end;
+
+   UBACore.ClearSelectedOrderDiagnoses(selectedOrderIDList);
+end;
+
+function TfrmReview.GetNonNilItemCount : integer;
+//CQ5172
+var
+  i: integer;
+  thisItem: TChangeItem;
+  howMany: integer;
+begin
+  howMany := 0;
+
+  for i := 0 to lstReview.Items.Count-1 do
+     begin
+     thisItem := TChangeItem(lstReview.Items.Objects[i]);
+     if thisItem <> nil then
+        Inc(howMany);
+     end;
+  Result := howMany;
+end;
+
+procedure TfrmReview.FormShow(Sender: TObject);
+var
+  BottomEdge, numOrderItems: integer;
+begin
+  if pnlSignature.Visible then
+    BottomEdge := pnlSignature.Top
+  else
+  if pnlOrderAction.Visible then
+    BottomEdge := pnlOrderAction.Top
+  else
+    BottomEdge := cmdOK.Top;
+  dec(BottomEdge, 4);
+  if (lstReview.Top + lstReview.Height) > BottomEdge then
+    lstReview.Height := BottomEdge - lstReview.Top;
+              //INITIALIZATIONS
+      Paste1.Enabled := false;
+      fReview.srcOrderID := '';
+      fReview.srcDx := '';
+
+     if  BILLING_AWARE then
+        frmReview.lstReview.Multiselect := true;
+
+  FormatListForScreenReader;
+
+  //CQ5172
+  numOrderItems := GetNonNilItemCount;
+ if BILLING_AWARE then
+ begin
+  if (numOrderItems = 1) then
+  begin
+   lstReview.Selected[0] := false;
+   buDiagnosis.Enabled := True;
+   Diagnosis1.Enabled := True;
+   lstReview.Selected[1] := true;
+     // ** if number of orders is 1 and order is billable select order and disable diagnosis button
+   if NOT UBACore.IsOrderBillable(TChangeItem(frmReview.lstReview.Items.Objects[1]).ID) then
+   begin
+      buDiagnosis.Enabled := False;
+      Diagnosis1.Enabled := False;
+      lstReview.Selected[1] := false;
+   end
+   else
+      if Piece(TChangeItem(frmReview.lstReview.Items.Objects[1]).ID,';',2) = DISCONTINUED_ORDER then
+      begin
+           buDiagnosis.Enabled := False;
+           Diagnosis1.Enabled :=False ;
+      end;
+  end
+  else
+     lstReview.Selected[0] := false;
+  //end CQ5172
+end;
+end;
+
+procedure TfrmReview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+var
+  j: integer; //CQ5054
+begin
+  inherited;
+  currentlySelectedItem := frmReview.lstReview.ItemIndex; //CQ5063
+
+    case Key of
+        67,99:  if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorSC,fraCoPay.lblSC2); //C,c
+        86,118: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorCV,fraCoPay.lblCV2); //V,v
+        79,111: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorAO,fraCoPay.lblAO2); //O,o
+        82,114: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorIR,fraCoPay.lblIR2); //R,r
+        65,97:  if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorEC,fraCoPay.lblSWAC2); //A,a
+        77,109: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorMST,fraCoPay.lblMST2); //M,m
+        78,110: if (ssAlt in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorHNC,fraCoPay.lblHNC2); //N,n
+        72,104: if (ssALT in Shift) then ShowTreatmentFactorHints(BAFactorsRec.FBAFactorSHAD,fraCopay.lblSHAD2); // H,h
+        //CQ5054
+        83,115: if (ssAlt in Shift) then
+                begin
+                for j := 0 to lstReview.Items.Count-1 do
+                        lstReview.Selected[j] := false;
+                lstReview.Selected[1] := true;
+                lstReview.SetFocus;
+                end;
+        09:
+            if FRVTFhintWindowActive then
+             begin
+                FRVTFHintWindow.ReleaseHandle;
+                FRVTFHintWindowActive := False;
+             end;
+
+        //end CQ5054
+    end;
+end;
+
+procedure TfrmReview.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+  //CQ5063
+  if Key = VK_SPACE then
+     begin
+     if lstReview.Focused then //CQ6657
+     begin
+     lstReview.Selected[lstReview.Items.Count-1] := false;
+     lstReview.Selected[currentlySelectedItem] := true;
+     end;
+     end;
+  //end CQ5063
+end;
+
+//BILLING AWARE Procedure
+procedure TfrmReview.ShowTreatmentFactorHints(var pHintText: string; var pCompName: TVA508StaticText); // 508
+var
+ HRect: TRect;
+ thisRect: TRect;
+ x,y: integer;
+
+begin
+  if FRVTFhintWindowActive then
+  begin
+     FRVTFHintWindow.ReleaseHandle;
+     FRVTFHintWindowActive := False;
+  end;
+
+   FRVTFHintWindow := THintWindow.Create(frmReview); //(frmReview);
+   FRVTFHintWindow.Color := clInfoBk;
+   GetWindowRect(pCompName.Handle,thisRect);
+   x := thisRect.Left;
+   y := thisRect.Top;
+   hrect := FRVTFHintWindow.CalcHintRect(Screen.Width, pHintText,nil);
+   hrect.Left   := hrect.Left + X;
+   hrect.Right  := hrect.Right + X;
+   hrect.Top    := hrect.Top + Y;
+   hrect.Bottom := hrect.Bottom + Y;
+
+   fraCoPay.LabelCaptionsOn(not FRVTFHintWindowActive);
+
+   FRVTFHintWindow.ActivateHint(hrect, pHintText);
+   FRVTFHintWindowActive := True;
+end;
+
+
+procedure TfrmReview.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
+  Y: Integer);
+begin
+    if FRVTFHintWindowActive then
+    begin
+       FRVTFHintWindow.ReleaseHandle;
+       FRVTFHintWindowActive := False;
+    end;
+end;
+
+procedure TfrmReview.FormResize(Sender: TObject);
+begin
+  inherited;
+  lstReview.Invalidate;
+end;
+
+procedure TfrmReview.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if FRVTFHintWindowActive then
+  begin
+     FRVTFHintWindow.ReleaseHandle;
+     FRVTFHintWindowActive := False;
+     Application.ProcessMessages;
+  end;
+end;
+
+procedure TfrmReview.fraCoPayLabel24MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+begin
+  fraCoPay.LabelCaptionsOn(not FRVTFHintWindowActive);
+end;
+
+procedure TfrmReview.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+
+    if FRVTFHintWindowActive then
+    begin
+       FRVTFhintWindow.ReleaseHandle ;
+       FRVTFHintWindowActive := False ;
+
+      with fraCopay do
+        begin
+        //Long captions
+        lblSC.ShowHint := false;
+        lblCV.ShowHint := false;
+        lblAO.ShowHint := false;
+        lblIR.ShowHint := false;
+        lblSWAC.ShowHint := false;
+        lblHNC.ShowHint  := false;
+        lblHNC2.ShowHint := false;
+        lblSHAD2.ShowHint := false;
+        end;
+ end;
+
+// HDS00005143 - if cidc master sw is on and  BANurseConsultOrders.Count > 0 then
+// save those orders with selected DX enteries.  Resulting in dx populated for provider.
+ if rpcGetBAMasterSwStatus then
+ begin
+    if  BANurseConsultOrders.Count > 0 then
+    begin
+       rpcSaveNurseConsultOrder(BANurseConsultOrders);
+       BANurseConsultOrders.Clear;
+    end;
+ end;
+end;
+
+procedure TfrmReview.SetItemTextToState;
+var
+  i : integer;
+begin
+
+  if fReview.frmReview.lstReview.Count < 1 then Exit;
+  for i := 0 to fReview.frmReview.lstReview.Count-1 do
+    if fReview.frmReview.lstReview.Items.Objects[i] <> nil then //Not a Group Title
+    begin
+      if fReview.frmReview.lstReview.Items.Objects[i] is TChangeItem then
+      if fReview.frmReview.lstReview.Checked[i] then
+        fReview.frmReview.lstReview.Items[i] := 'Checked '+TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).Text
+      else
+        fReview.frmReview.lstReview.Items[i] := 'Not Checked '+TChangeItem(fReview.frmReview.lstReview.Items.Objects[i]).Text;
+    end;
+  if fReview.frmReview.lstReview.ItemIndex >= 0 then
+    fReview.frmReview.lstReview.Selected[fReview.frmReview.lstReview.ItemIndex] := True;
+end;
+
+procedure TfrmReview.lstReviewKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (Key = VK_Space) then
+    FormatListForScreenReader
+end;
+
+procedure TfrmReview.FormatListForScreenReader;
+begin
+  if ScreenReaderActive then
+    SetItemTextToState;
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRptBox.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRptBox.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRptBox.dfm	(revision 1676)
@@ -0,0 +1,109 @@
+inherited frmReportBox: TfrmReportBox
+  Left = 512
+  Top = 214
+  Anchors = []
+  BorderIcons = [biSystemMenu]
+  Caption = 'frmReportBox'
+  ClientHeight = 319
+  ClientWidth = 348
+  Font.Charset = ANSI_CHARSET
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  ExplicitWidth = 356
+  ExplicitHeight = 353
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblFontTest: TLabel [0]
+    Left = 148
+    Top = 208
+    Width = 77
+    Height = 14
+    Caption = 'lblFontTest'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    ParentFont = False
+  end
+  object memReport: TRichEdit [1]
+    Left = 0
+    Top = 0
+    Width = 348
+    Height = 298
+    Align = alClient
+    Color = clCream
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      'memReport')
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 0
+    WantReturns = False
+    WordWrap = False
+  end
+  object pnlButton: TPanel [2]
+    Left = 0
+    Top = 298
+    Width = 348
+    Height = 21
+    Align = alBottom
+    Anchors = []
+    AutoSize = True
+    BevelOuter = bvNone
+    TabOrder = 1
+    DesignSize = (
+      348
+      21)
+    object cmdPrint: TButton
+      Left = 189
+      Top = 0
+      Width = 75
+      Height = 21
+      Anchors = [akRight]
+      Caption = 'Print'
+      TabOrder = 0
+      OnClick = cmdPrintClick
+    end
+    object cmdClose: TButton
+      Left = 272
+      Top = 0
+      Width = 75
+      Height = 21
+      Anchors = [akRight]
+      Cancel = True
+      Caption = 'Close'
+      Default = True
+      TabOrder = 1
+      OnClick = cmdCloseClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memReport'
+        'Status = stsDefault')
+      (
+        'Component = pnlButton'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrint'
+        'Status = stsDefault')
+      (
+        'Component = cmdClose'
+        'Status = stsDefault')
+      (
+        'Component = frmReportBox'
+        'Status = stsDefault'))
+  end
+  object dlgPrintReport: TPrintDialog
+    Left = 318
+    Top = 41
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRptBox.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRptBox.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fRptBox.pas	(revision 1676)
@@ -0,0 +1,215 @@
+unit fRptBox;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORFn, ComCtrls, ExtCtrls, fFrame, fBase508Form,
+  VA508AccessibilityManager, uReports;
+
+type
+  TfrmReportBox = class(TfrmBase508Form)
+    lblFontTest: TLabel;
+    memReport: TRichEdit;
+    pnlButton: TPanel;
+    cmdPrint: TButton;
+    dlgPrintReport: TPrintDialog;
+    cmdClose: TButton;
+    procedure memReportClick(Sender: TObject);
+    procedure cmdPrintClick(Sender: TObject);
+    procedure cmdCloseClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+  end;
+
+procedure ReportBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean);
+function ModelessReportBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean): TfrmReportBox;
+procedure PrintStrings(Form: TForm; StringText: TStrings; const Title, Trailer: string);
+
+implementation
+
+uses
+  uCore, rCore, rReports, Printers, rMisc;
+
+{$R *.DFM}
+
+function CreateReportBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean): TfrmReportBox;
+var
+  i, AWidth, MaxWidth, AHeight: Integer;
+  Rect: TRect;
+  // %$@# buttons!
+  BtnArray: array of TButton;
+  BtnRight: array of integer;
+  BtnLeft:  array of integer;
+  //cmdCloseRightMargin: integer;
+  //cmdPrintRightMargin: integer;
+  j, k: integer;
+begin
+  Result := TfrmReportBox.Create(Application);
+  try
+    with Result do
+    begin
+      k := 0;
+      with pnlButton do for j := 0 to ControlCount - 1 do
+        if Controls[j] is TButton then
+          begin
+            SetLength(BtnArray, k+1);
+            SetLength(BtnRight, k+1);
+            BtnArray[j] := TButton(Controls[j]);
+            BtnRight[j] := ResizeWidth(Font, MainFont, BtnArray[j].Width - BtnArray[j].Width - BtnArray[j].Left);
+            k := k + 1;
+          end;
+      //cmdCloseRightMargin := ResizeWidth(Font, MainFont, pnlButton.Width - cmdClose.Width - cmdClose.Left);
+      //cmdPrintRightMargin := ResizeWidth(Font, MainFont, pnlButton.Width - cmdPrint.Width - cmdPrint.Left);
+      MaxWidth := 350;
+      for i := 0 to ReportText.Count - 1 do
+      begin
+        AWidth := lblFontTest.Canvas.TextWidth(ReportText[i]);
+        if AWidth > MaxWidth then MaxWidth := AWidth;
+      end;
+      cmdPrint.Visible := AllowPrint;
+      MaxWidth := MaxWidth + GetSystemMetrics(SM_CXVSCROLL);
+      AHeight := (ReportText.Count * (lblFontTest.Height + 2)) + pnlbutton.Height;
+      AHeight := HigherOf(AHeight, 250);
+      if AHeight > (Screen.Height - 80) then AHeight := Screen.Height - 80;
+      if MaxWidth > Screen.Width then MaxWidth := Screen.Width;
+      ClientWidth := MaxWidth;
+      ClientHeight := AHeight;
+      Rect := BoundsRect;
+      ForceInsideWorkArea(Rect);
+      BoundsRect := Rect;
+      ResizeAnchoredFormToFont(Result);
+
+      memReport.Align := alClient; //CQ6661
+
+      //CQ6889 - force Print & Close buttons to bottom right of form regardless of selected font size
+      cmdClose.Left := (pnlButton.Left+pnlButton.Width)-cmdClose.Width;
+      cmdPrint.Left := (cmdClose.Left-cmdPrint.Width)-1;
+      //end CQ6889
+
+      SetLength(BtnLeft, k);
+      for j := 0 to k - 1 do
+      begin
+        BtnLeft[j] := pnlButton.Width - BtnArray[j].Width - BtnRight[j];
+      end;
+      //cmdClose.Left := pnlButton.Width - cmdClose.Width - cmdCloseRightMargin;
+      //cmdPrint.Left := pnlButton.Width - cmdPrint.Width - cmdPrintRightMargin;
+      QuickCopy(ReportText, memReport);
+      for i := 1 to Length(ReportTitle) do if ReportTitle[i] = #9 then ReportTitle[i] := ' ';
+      Caption := ReportTitle;
+      memReport.SelStart := 0;
+    end;
+  except
+    KillObj(@Result);
+    raise;
+  end;
+end;
+
+procedure ReportBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean);
+var
+  frmReportBox: TfrmReportBox;
+  
+begin
+  frmReportBox := CreateReportBox(ReportText, ReportTitle, AllowPrint);
+  try
+    frmReportBox.ShowModal;
+  finally
+    frmReportBox.Release;
+  end;
+end;
+
+function ModelessReportBox(ReportText: TStrings; ReportTitle: string; AllowPrint: boolean): TfrmReportBox;
+begin
+  Result := CreateReportBox(ReportText, ReportTitle, AllowPrint);
+  Result.FormStyle := fsStayOnTop;
+  Result.Show;
+end;
+
+procedure PrintStrings(Form: TForm; StringText: TStrings; const Title, Trailer: string);
+var
+  AHeader: TStringList;
+  memPrintReport: TRichEdit;
+  MaxLines, LastLine, ThisPage, i: integer;
+  ErrMsg: string;
+//  RemoteSiteID: string;    //for Remote site printing
+//  RemoteQuery: string;    //for Remote site printing
+  dlgPrintReport: TPrintDialog;
+
+const
+  PAGE_BREAK = '**PAGE BREAK**';
+
+begin
+//  RemoteSiteID := '';
+//  RemoteQuery := '';
+  dlgPrintReport := TPrintDialog.Create(Form);
+  try
+    frmFrame.CCOWBusy := True;
+    if dlgPrintReport.Execute then
+    begin
+      AHeader := TStringList.Create;
+      CreatePatientHeader(AHeader, Title);
+      memPrintReport := CreateReportTextComponent(Form);
+      try
+        MaxLines := 60 - AHeader.Count;
+        LastLine := 0;
+        ThisPage := 0;
+        with memPrintReport do
+          begin
+            repeat
+              with Lines do
+                begin
+                  AddStrings(AHeader);
+                  for i := 0 to MaxLines do
+                    if i < StringText.Count then
+                      Add(StringText[LastLine + i])
+                    else
+                      Break;
+                  LastLine := LastLine + i;
+                  Add(' ');
+                  Add(' ');
+                  Add(StringOfChar('-', 74));
+                  if LastLine >= StringText.Count - 1 then
+                    Add(Trailer)
+                  else
+                    begin
+                      ThisPage := ThisPage + 1;
+                      Add('Page ' + IntToStr(ThisPage));
+                      Add(PAGE_BREAK);
+                    end;
+                end;
+              until LastLine >= StringText.Count - 1;
+            PrintWindowsReport(memPrintReport, PAGE_BREAK, Title, ErrMsg);
+          end;
+      finally
+        memPrintReport.Free;
+        AHeader.Free;
+      end;
+    end;
+  finally
+    frmFrame.CCOWBusy := False;
+    dlgPrintReport.Free;
+  end;
+end;
+
+procedure TfrmReportBox.memReportClick(Sender: TObject);
+begin
+  //Close;
+end;
+
+procedure TfrmReportBox.cmdPrintClick(Sender: TObject);
+begin
+  PrintStrings(Self, memReport.Lines, Self.Caption, 'End of report');
+  memReport.Invalidate;
+end;
+
+procedure TfrmReportBox.cmdCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmReportBox.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  if(not (fsModal in FormState)) then
+    Action := caFree;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSignItem.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSignItem.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSignItem.dfm	(revision 1676)
@@ -0,0 +1,79 @@
+inherited frmSignItem: TfrmSignItem
+  Left = 320
+  Top = 440
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Electronic Signature'
+  ClientHeight = 124
+  ClientWidth = 405
+  OldCreateOrder = True
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblESCode: TLabel [0]
+    Left = 8
+    Top = 81
+    Width = 73
+    Height = 13
+    Caption = 'Signature Code'
+  end
+  object lblText: TMemo [1]
+    Left = 8
+    Top = 8
+    Width = 389
+    Height = 65
+    BorderStyle = bsNone
+    Color = clBtnFace
+    Lines.Strings = (
+      'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
+    ReadOnly = True
+    TabOrder = 1
+  end
+  object txtESCode: TCaptionEdit [2]
+    Left = 8
+    Top = 95
+    Width = 141
+    Height = 21
+    PasswordChar = '*'
+    TabOrder = 0
+    Caption = 'Signature Code'
+  end
+  object cmdOK: TButton [3]
+    Left = 239
+    Top = 95
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 2
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [4]
+    Left = 325
+    Top = 95
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 3
+    OnClick = cmdCancelClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblText'
+        'Status = stsDefault')
+      (
+        'Component = txtESCode'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmSignItem'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSignItem.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSignItem.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSignItem.pas	(revision 1676)
@@ -0,0 +1,73 @@
+unit fSignItem;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORFn, rCore, Hash, ORCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmSignItem = class(TfrmBase508Form)
+    txtESCode: TCaptionEdit;
+    lblESCode: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblText: TMemo;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+  private
+    FESCode: string;
+  public
+    { Public declarations }
+  end;
+
+procedure SignatureForItem(FontSize: Integer; const AText, ACaption: string; var ESCode: string);
+
+implementation
+
+{$R *.DFM}
+
+const
+  TX_INVAL_MSG = 'Not a valid electronic signature code.  Enter a valid code or press Cancel.';
+  TX_INVAL_CAP = 'Unrecognized Signature Code';
+
+procedure SignatureForItem(FontSize: Integer; const AText, ACaption: string; var ESCode: string);
+var
+  frmSignItem: TfrmSignItem;
+begin
+  frmSignItem := TfrmSignItem.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmSignItem);
+    with frmSignItem do
+    begin
+      FESCode := '';
+      Caption := ACaption;
+      lblText.Text := AText;
+      ShowModal;
+      ESCode := FESCode;
+    end;
+  finally
+    frmSignItem.Release;
+  end;
+end;
+
+procedure TfrmSignItem.cmdOKClick(Sender: TObject);
+begin
+  if not ValidESCode(txtESCode.Text) then
+  begin
+    InfoBox(TX_INVAL_MSG, TX_INVAL_CAP, MB_OK);
+    txtESCode.SetFocus;
+    txtESCode.SelectAll;
+    Exit;
+  end;
+  FESCode := Encrypt(txtESCode.Text);
+  Close;
+end;
+
+procedure TfrmSignItem.cmdCancelClick(Sender: TObject);
+begin
+  FESCode := '';
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSplash.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSplash.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSplash.dfm	(revision 1676)
@@ -0,0 +1,1686 @@
+inherited frmSplash: TfrmSplash
+  Left = 260
+  Top = 126
+  BorderIcons = []
+  BorderStyle = bsNone
+  Caption = 'CPRS Splash Screen'
+  ClientHeight = 412
+  ClientWidth = 386
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitLeft = 260
+  ExplicitTop = 126
+  ExplicitWidth = 394
+  ExplicitHeight = 446
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlMain: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 386
+    Height = 412
+    Align = alClient
+    BevelInner = bvLowered
+    BevelWidth = 3
+    BorderWidth = 210
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clGrayText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 1
+    object lblVersion: TStaticText
+      Left = 40
+      Top = 230
+      Width = 300
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'version main'
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clGrayText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 0
+    end
+    object lblCopyright: TStaticText
+      Left = 43
+      Top = 249
+      Width = 300
+      Height = 13
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'VOE VWPT Enhanced Patient Lookup - Alpha Version 1.6b'
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clGrayText
+      Font.Height = -12
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 2
+    end
+    object pnlImage: TPanel
+      Left = 40
+      Top = 40
+      Width = 306
+      Height = 166
+      BevelInner = bvLowered
+      BevelOuter = bvNone
+      BevelWidth = 3
+      Caption = 'pnlImage'
+      TabOrder = 3
+      object Image1: TImage
+        Left = 3
+        Top = 4
+        Width = 300
+        Height = 159
+        Picture.Data = {
+          07544269746D61708ABE0000424D8ABE00000000000036040000280000002C01
+          00009F000000010008000000000054BA00000000000000000000000100000001
+          0000B1B0C5003222D000A8A5C700301FC1002412A700A199D200AEA8D500B4AE
+          D900BEBAD9002101C6001D01AC002301CB002101C3002101C1002101BE003010
+          C1003010BF004121CF005134CF007A68CD001F0293001A027400120350003811
+          D0002F0FB9003F1FC100391DAD009283CF00C5BAEF00C4BFD8006548CF00A99B
+          DB003101C5002F01C1002F01BF002C01B4002901A500DFDBEB003F11C100390F
+          AD00D3D1D300CBC8C800CDCBCB00BAB5B400BEBBB900B7B5B300D5D3D1009E61
+          2000B2997E00914F01008F4F0100915102009F5F1100C0B6AA00D2CDC7008F51
+          0100A06F2F00AA7D4300B3916500BEA68700B2A49200CDC5BB00C4B39B00915F
+          10009F6F2100CBC0AF00B6AFA400C5C1BA00BFBBB400D1CFCB00C9C7C300ABA9
+          A400CFCBBD00D3D3CD00ADADA900D3D3D000D5D5D300BDBDBB00B1B7B100C5CB
+          C500D3D5D300C3C5C300CBD7D100D1D7D500CDD5D30001FFFF0003FFFF0005F1
+          F1000DF9F90011FBFC0017F2F30027F4F5003AEDEE0050E5E6008EE1E100ADE9
+          E900A9DADA00ADC5C500BAD3D300A6BBBB00B4C9C900949F9F00D0DDDD00CAD6
+          D600BBC6C600B3BEBE00BFC9C900ADB6B600C6CFCF00C9D1D100D1D8D800CFD6
+          D600CCD3D300C7CCCC00AAAEAE00D3D7D700D1D5D50034353500D6D9D900A3A5
+          A50054555500E6E8E800E0E2E200D3D5D500D1D3D300CFD1D100CDCFCF00CBCD
+          CD00C9CBCB00C3C5C500BDBFBF00BBBDBD00B7B9B900B3B5B500717272005C5D
+          5D0057585800D5D6D600C8C9C900C5C6C600BFC0C000B5B6B600B2B3B300B0B1
+          B100A9AAAA00A1A2A200989999008D8E8E008788880001FAFF0028E3E90069DB
+          DE0001F2FF0072B9BD008DCFD300C2D7D8009CA7A800A2ADAE00C5D2D300C1CC
+          CD0001E6FF0008DEF6008D979800B0BABB00A8B2B300B7C1C20009D1EF00B0CE
+          D20001D9FF004BB0C10008D0F8000BC5E900BEC3C40001CCFF0001D0FF00579A
+          A900537B850001C9FF0009C3F60010BAE9002FB8DB002F8CA5002C5E6C003775
+          860004BCF20016A4CF001085AF009EB1B8003D404100D9DCDD00CBD7DC007080
+          8800D1D5D8000B559300B6C2CC006F757A00ADB9C4007F8890000C5FAD001775
+          D300C1CBD500C9D0D70045474900505152004C4D4E0060616200D3D5D700797A
+          7B0066676800A6A7A8009D9E9F009293940080818200C1C2C3004D596600AAB3
+          BE00CFD2D6006B6C6E00D4DAE900858CA000BFC3CE00AAABAE00D2D3D600CCCD
+          D000122A8300989AA800D3D4DB002635C2009A9DB600B4B5BE00AFB0B900C4C5
+          CE00BEBFC800BBBCC500C8C9D10093949F00A9AAB6009E9FA900A5A6B0001C21
+          C600B7B7CE00CACAD600B8B8C200CECED800C8C8CC00D1D1D300BDBDBF00BABA
+          BB00D3D3D300D1D1D100CFCFCF00CDCDCD00CBCBCB00C7C7C700BDBDBD00AEAE
+          AE007B7B7B7B7B7B7B7B7B7B7B7B8AD5FD80808080808A8C85909090909090DD
+          8DD57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8A838FD1
+          D190909090858280806D6D9F9F6A69A46BA56D535353535353535353537B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B536D9F9F9F9F9F6A6A6A6A6A686868686A
+          717B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C5050507C8082F7828AF7DD
+          91D291D2D2908E83828282828C7F89897F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B73706A686868A569A49C6593C5C5C5C5C5C593939277
+          FF8F8F8F8E858D8C804CF88AFD8B8283696A6A6868686868686A9E67676F7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7F7F7E7D7D7D7F8080D58282E8DCEADCDC
+          DCDCEAEAF4E9F2F2E9E7EAEAD8DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          DED8D8D8D8D8D8D8F4E5D7D7C4DCDCDCDCC8D8737B7B735470706A6A6D747B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B53547070
+          70709FA5C4C4C4636363636363C4C2C86F73737373D8747B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7D7D7071696969A5A5A5A5A5689F6C6C686A6D54
+          73737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507E8A8C
+          8472DDDDDDDD90919293929190DDDDFF8DFE8C8C8CD5F7FFDDDDDDE6D7C2C4BB
+          BBBBBBBBBBBBD7C4A59FD8737373C0737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7D7E7E7E7E7E7E7E7E7E7E7D7C7B7B7BC3C3D4C5A29C
+          726B696A70507B7B7B507C7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7DFD81818181818B8A71807F7E7E80
+          8C848F838A7E7C50505050507B7B7B7B7B50507B7B7B7B7B7B7B7B7B7C808080
+          807F7C505089897B7B7B737B7B507C7D505050505050507E8080808A8080807F
+          7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFD4DF74D828C82828C515183
+          E5E9E9E5E6E6E5E9EAD8EAEAE7E7E7DCE8E8E8EAD87B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74747474745373737373
+          737373737B7B93D3D29085FD7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B746DA56B9D6565
+          6565659C9D9D9D9D9D9C9C908F827F7C50507B7B7B7B7B7B7B7C7C7D8A83858E
+          8E8E8E8D8C8A7C7C7C808AD5844D8D8D8A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B507C7C5050507B7B7B50507B7B7B6E53735353709F9F9F9F
+          9F9F9FA5A3A36B9D9CEDEDEDEEE6E8DFDE7DDFDFEAE8E5E5E6ECECE5D5FD5185
+          90D2D3D3D3926565659C9DA46BA5A5A5A5A5A59F6F7B7B7B7B7B7B7470707053
+          737373737373737474747474546C71707B7B7D51848585858585F751FD5151FD
+          7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B746D6A686868686868807F7E7E7D7B7B7B7B7B7B7B7B7B7B
+          7C80FD83858E90D29394CF86D9D986CFD49494D3D27791D190FF8D8482D5F4EA
+          EAEAEAEAF4E9F2F2E5ECEEEEEEEEECE6E87D7B7B7B7D7E7F7F7C7C7C7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B746D67737B73679E9E9E9E9E9E6A689F9FA56B9D9DFF8F8F8E8381838E8F
+          8FFFDDDDDD90FFF78B7E7E7F8A8C8D858DD56A6861616164626262626262629B
+          676E7373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C
+          507B7B7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7BDE7DDFDFDFDFEADCF2E5E5E5E5E5E5E8F1E2
+          E27B7B7B7B7B7B7B7C7F7FD58FD17777777791D2D393D4CF8686CFD4939291DD
+          8DD5D5515151518B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7C7E7F80FD8DDD90858B8A82848D8D8D8483848D848D72
+          77777284838E8F8E85FF7792929292929292D2908E6B9D9D9DA4A4A46B696A6A
+          A56BA4A3A5A5A5A5687F7C505050507F8C8CD57E7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7BD9CFD4939291FF827F507B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7474747474
+          74746D68686868A5A59F6CBEBE747B7B7B7B7B7B746C74737474747474747474
+          7169A49C65A2A29277FFFF9090DDDDDDDDDDDD72837F7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C2A808AD58D90D2D3659CA4
+          6BA4A4A4A4A46B6969696969686C747B7B7B7B7B7B7B7B7D7F518C8472DD72FF
+          FF90777777D1D1D1D18F828BF6858E838A8080807F7B7B7B7B7B7B7DD58C8CD5
+          7C7B7B7BD8DFDFDFE7E8E8E8E8E8DF7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD494D3D2908D8A7C7B7B
+          7B7B7B7B7B7B7B7B73537B7B746F7070707070507C7C7C7B7B7B507C507B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BE2E2F1F1EAD8DE7B7B7B7B7B
+          DEF37B7B7B7B7B7B7B7B7B7B7B7B7BFD838E8E85F7F7F78D8D856BA4A4A4A4A4
+          696A6F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B50
+          7C7E7E7E80828E90D2D2D18F8E8E8F8F8F8F8EF7838383838C7F7B7B7B7B7B7B
+          7B7B7B7B749FC2C4ECECECECEC9D9CEDEDEDEDEDEDEEE6E8E8E9828A8A808080
+          807C7B7B7B7B7B7C8A8A8A8A7B7B7B7B7B7F8080FD808A8A8AD5D57D7F80807F
+          80807F7F507B5080D580808080807F7D507B7B50706AA3A5AC6A6D537B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8F3DCE5EEEDE1EDE1EBEB
+          93D4CFCFCFCFC3C3CFD49392D18F825151517F7C7B7B7B7B7B7B7B7B7B7B7B7B
+          7B507F828E8E8E8EF782828F90D1908F858DD57F7E7D7B7B7B7B7B505050507B
+          7B7B7BCEC0C0C9C2C4C4C4C4C4C2C9D86FC0C0C06F6F6D6C6C6D54545470719F
+          9F9F6A696BA4A4A46B699F7D7FFDFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B74676774746D6D6CA56969A5A569A36B6B6BA472
+          8F8F8F8F8E4DFD807C7B7B7B7B7B7B7B7D8A807D7B7B7B7B7B7B7D7FFD818181
+          FD8A7D7B7B7B7B7C7FD5D5D58C8C807E7C507C7F51D58284838C7E7C507E7E7C
+          507B7B7B7B7BF3F1EAEADFDEDEDEDE6F737373D89F9F9F9FC86C70737B7B7B73
+          549F6A807F7F7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDF
+          DC00ECE1E1EBDBDBDBDBDBDBC5BFBFD4D4D4D4C5D39291FF827F507B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7E8B82518168A5A5A5A5A5A5A5A5
+          A5A56A7073737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7473737373747C
+          7B7B7B7B7B7B7B507C7E8080808080FD8384838282D57E7C7D7F7E7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7C507B5050507B7B7B7B7B50507C7E7E507B7B7B7B
+          7B7B7D7D7D7D7E7E7E8B838F90D2D292D2D1D19085FD80FD82F7F785FF858C80
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8A8A8A6A6A6C9E7070709E
+          6C68A5A3A369689EBE66666E7B7B7B7B73735353537B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B50507B508BD58C848F8D838383828282828383828CD5817C7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B735370A5
+          6BA3A36BA4A4A4A49D9C65A2A2A2A29277D18F8C7D507C706CA56BA4A4A4696A
+          6A686868686868686868698D817D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B735373737373737B7B7B
+          7B7B7353535353737B7B7B7B7B7F8383D58181FD7F818C838472919292919177
+          FF82F7FFDDDDDDDD90DD858D827F507B50507C7C7C507B7B7B7B7B7B7B7B7B7B
+          7E82838384E6E6E6E6E6E6E6E6E6E6ECECECECF2DCC9DECE7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7D7E7E7E7E7E7E7E7F518ED191D1D1D1D1907272A4A4A4A4
+          A4A4A4A4A4A36A705373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B80D58A8A8A717C7C7D7FD585729090909090DD8584
+          8C84FF919294D4CFCFCF94D3D3D3D3D3949494D3D3D2D292D29085D5F47D7C7C
+          7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747070737B7B7B
+          7B7B7B7B7B7B536C6C7EFA507B7B7B507C7C7C7C7C7F7F7F7F7E507B70707070
+          707074746DAC6B6B6BA5A56B9C6565A29394D4D4D4D494939277EEEEEEEEECE5
+          E8F1DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7353535353537474
+          7474537B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5081
+          D5D5D5D5807B7B7B7E8080807F7E7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7D7B7B7B7B507C7C7B676767669E68
+          69A49C9C656565DBDBDBDBDBDBC5BFC3D0CDD0D9D9C3BFC5DBDBDBDBC5BFBFC5
+          C5DBDBDBDBE1E4EEEC00E5E5E5E5E5D57D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D7F7F7C7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B50507B7B7B5050505050505050507B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B508A8DDD7777DD729091D394D4CFCF8686
+          8686CF94D3D2D18F8F8F8F8FF7FD7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7DFD8A8A51D58C8C8C8C8A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B536D6A68686A9F616161616363696A6AA3A49DA4A36A70706C70507B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B6FC8C2C4BBE4E4E4E4DBDBE19C6565E1E1DBC5C5C5C5D4D493D3
+          92929291D1D1D1FF8F77D29CA4A3A3A3A3A3A369A5696B9D9C9C9C9D9DA3AC80
+          7F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFD4D
+          8582FDFDFD807C7B7B7B507F7F7F7F7F8080E7DE7B7B7B7BDEF3F3F3F3DE7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D8AFD
+          7E7D7D7D7E5185FF8F85858E8F90919190FF8F8F8F8FD1D2D2D18F858482828E
+          908F827F7E7E7E7F8A82FD8A8A808AF7909190854D4D8D8585858585F7FD807D
+          7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7F8283828A7D7D7D8A8A8A8A8A808A
+          6A6969689E737B73679E707054545474747474747B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747C7C7C7D7D7E7E7D7D8B
+          8D8D8590D2D2778F84D5D5F78D8D8D848484F7512A5184D57E7D7D7E8B51FD7E
+          7C7C8A838E8F8F8F8E838A8080807C7B7B7B7B735470737B7B7B7B7B7B7B7370
+          719F9F9F9F6AA5817E7DFD859090FF8F8F8ED57E50507DD5FE825151824D827E
+          7B7B7B7B7B7B7B7BF87C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B737353747B7B7B7B7B7B7B7B8AFE858EFFD1D2D2EEEEEE
+          EEEEEEE193C5C5EBEBEDEEEEEDEDECE9F4F4D5F68DDDDDDDFF8E858ED1D2D2D1
+          8F8E8F8F8F8F8F9090858DD5807C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7C2A8080808080808A82838C8A7D7DD58FD1D2D2D190DDDDDDDDDD72
+          8F82D582D57E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFD51518BFDFD828FD1D1D1D1D17777D1
+          FF7792778F8E8EDD91D2908DD5808A8C8D8D8DF7827F507B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7C8A8DFFFFFFDDDDDDFFF7FD8A8A8A8CD5D5D58A7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7E828FFFFFDD919292D277DDDDD1E1EBD3D3E1EEE6E8EAEAEADFDE7BCEF3F3
+          08F008F1EADCF0F0D7E4EDE4E4E4E4E4EEEE8F908FF74D8C8A7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7E7F7F7F7F7FD58D8D8D8DDD9192
+          93949494D3D2D1D1D1D19085817D7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8A82858E
+          8E8E90D2D3D3D2D2EBD393939394D4C5D3E1EEEEEDEDEEE6E8EADFDF7D7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D8A828282824D8D8D8484848D8E8D84
+          84D57E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B735353537B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BFDF78EECECECECECDDDD8F8F
+          8E8E8E8E85FD7D7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B8AFE4D4DF78FD1919191919177DDFFFFFF8FF78B7C7B7B7B507B7B7B
+          7B7B7B7B7B7B7B7B7B7B50507B7B74747B7B7B7B7B74745454545454546C6C6C
+          6C6D7D7D6D6C6AA3A49D9C9C9C9C9C9C9C9DA3A3A36B6B6B848482807E7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B808A
+          8A8A807D7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C
+          8CE5E6ECECECECD7D7D7ECECECECE4E4E4ECF0F1C07B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F828484848ED191D277D1D1D1D1D291
+          77D1FF4D7E7B7B7B7D7E507B7B7B7B7B7B7B7B7B7B7C808C83F7848C807C7C7C
+          808472D1D1777777D177EEEEECE6E6E6ECEEE1D3EBEBE1EDE1EDEDEDEEE5828C
+          8C8C8C8CD58A7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7D719F9F6C70C9C9C9C9C9C0737373737B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507B7B7B7B7B5050507C7FD5
+          8282D57F507B7B7B7B7B50808D856B6BA46B69686A68A569A3A49C9C9CA4699F
+          747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDEDE
+          DEEAE8828EDD9090D17792D39393D3D2D18F8E8E8EF77E7C7B7B7B7B7B7B7B7B
+          73706D6D6D6D6D6D6D7070706D6AA5A56AD582FD7E7E81838282828282F78FD1
+          908F8E8EDD8EF7F783E8EAEAEAEAEAEAE7E8E77DD8D8D8D87B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C80AC6A6D6D6D6D6D70537373737373
+          7373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          505050507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8
+          E7F1F1EAEAE7E8E9E9E8E9E5E6E6E5E98B7E7C7B7B7B7B7C7F7F7C7C7F8A807C
+          7C7E80D5848E8E8E8E858280507B7B7B7B7BCF94D3D2D18E517D7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D7F8A82FF9192D3D3D39292929292
+          9291FF82807E7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B507C7D80808080808AFDFD8A80FA8A8B8CA569A5A5A56868686861BB9C9C
+          9C9C65659C6369A5686D74706D6D6C6C7D7C7C7C7C7C7B7B7B7B7B7B7D8C82FD
+          80807C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7353737B7B7B
+          7B7353535353537474746F6D686A828DFF90D2D2D2D1D17777777777D1D1D18E
+          FD7D7B7B7B7B7B7B7B7B7B7B7B89897C8A8C82828282D5518B7F7F7E7B7B86CF
+          94D39172848B7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7D7E7E7E7E7E7E7E81D5FD7D7C50505050507B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7ED5D5
+          D5D5D58A7054547071836B6B6BA49D9C726B8484827F747D7E7FD5F7D5818181
+          FD8A7D7D7D7D7D7D7F51517F7E7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B5353535353747C7C7C7C7C7C7C7C507B7B53705453546C
+          71716C7054709F69A472727272728ED57F7E507B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7BDEDFE7E7E7E7E7E7E7DCE8E5E6E5E58FDD919293
+          D3929394D4D4D4D4D49494D3D29177FF8ED57E5050505050745454547070706D
+          6D6D6D6D6D6C6C6C7474D6CDC3BFC5A29CA4619F9E9E9E9E9E9E6F7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B73736E6E6E736E6F6F7373737373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B677453746D6462626262646464646161616162676E6E
+          6E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B53709F9F9F9F9F9F9F9F9F
+          9F9F6A6C6D6D6CACD5807F808080807F7F80828E8F8E8E8E8E85827D7B507C7D
+          7E7E7E7F807F507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C507B7B7C7F
+          80D5F7FFDD8585DD9192D3D392D2D394D4D494939392D290FFFFFFF7828A8051
+          8B7C7B7B7B7B7B7B7B7B7B7B7B7C7FD58C8D727792D388D086D49392778F8280
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B5050507C7FD5D5D5D5807E7F7E7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B536D6D6D6D6D
+          6D6D6D6D6C6C6C6D6F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B745353535367679E9E9E6C68A3A3A3A3A3A3A3AC8B8B8B8B8BFD8A8AFE8E
+          8E83FD808A8A7F7B7B7B7B7B736666679F6A5453747467676F6F74747474747B
+          7B7B7B7B7B7B7B7B7B7B7BF9FA2A8A82828C8C838EFFFFFF8EF783F7838B7D50
+          7B7B7B7B7B7B7B7B7B7B7B7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B88CD86CF94D391DD848B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF3
+          EAF3D8CE7BCECECECECECEDEDFDFDFEAE8E8EAF57D7E8B8B8B5184FFDDDDFF8D
+          8CD5D5807E7F7FFD81FE8FFFFFFF8280808A8AFDFDFDFDFD8A7D7C7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F8C8D85857291D394949493D3
+          92D2D2D2D2D291908DFE859072696A6D9F6A6A6D74745353536767676A69A56A
+          807F7F7E50897B7B7B7E7C7C7C7C7C7B50507C7C7C8083FF9192A29393A2A293
+          D4D4D4D494A265D29D6BA56C747B7B7B7B7D7170746D6AA5A5A5ACA5A5A5A5A5
+          A5A5AC6D747B7B7B7B7B7B7B7B7B7887CDCDCDD9CF94D391FFF7FD82A3A3A571
+          6C6C6D6C6F737B7B7B7B7B7B7B737B7B7B7BDECECECED88A828383F78E8F85F7
+          8ED191D2D1907791D2D2918E82D5518A7FFD83FFDDDD90919177DD8F8F8FFFD1
+          77777777778F827E7B7B7B7B7B7B7B50507C7D7E7F7F808080808080807F7F7E
+          7D7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7BDEF4E9F2F2F2F2F2F2E9F2E8EA7D7E7F7F8080808080808A8A807F7E7E7D8C
+          8DDDDD858E90D2D3939392D1FF9091D2D2D291908E84FF919291DD848484848F
+          8FF78C83838282828D72728DD57F7F7F7E7E7E7C507C808A8A8AFD80807F80FD
+          814DF7848D8D8DFFFF8E8D828CD5517E7C745074737B7B7B7B7B7B7B7B7DD5D5
+          51D58C8C8C8C828483838383838E827E7B7B7B7B7B7B7B7B7B7BCFD4D4D4D4D4
+          949291DD858D8D8D858E727272FF8E8FA36A7053737373537373536F9F6969A5
+          68A5A36B72DDDDDD9090D1D177919291D18E84F78D828C818BFD8A7F7E7E7C7C
+          D8DEDEC0E2CECED8F3F3F3DCE9F2F2F2E9DCEA7B7B7B7B7B7B7B7B507C7E80FD
+          8B8151818BFD8A8A8A7F7E7D8976BDBD76767689897B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7E828F8F8F8F85F78EFFFFFFFFFFFF8F8D8DF7F78C8B8B815181
+          8BFD8A8B828DF7F68C518181D58CD58A8A8B838E90908D807C7C7C7C7C7D7D7E
+          8080D5F7DDD18F828BFDFD8B8C84FEFEF7FE828C51518CD57C7B7B7B7B7B7B7B
+          7B507E8BFD8BF7D192D39292D3939494949494949392778F8E8D8C7C7B7B8989
+          898976738989897B7C7E8B8B8B8B51518B8B8B8B507B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7DD58C8C8CD58CAC816D7B
+          7B7B7B7B7B7B7B7B7B7D8A8A8AFD82834D4DF7F7F78D8EFF90D1D2D277FF8D85
+          8F8F7290909090728F8E848251807E7476BDBDBD7C8283F7848484848484F780
+          7F7F7F7F7E507B7C7E7F81828383828C8B8BFD8BFD7F7D767A7979797ABD7689
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808A8A7D7B7B7B7B7B7B7B7B
+          7B7B7B7DFDF78283838382D58181E9ECEEEEECE6F2E9E8DCF1F3F1F1EAEAEA7D
+          F97B7B7B7B7B7B7B7B507C7F8A5183F783828C8B8BFD8B8BFD8A7E89BD7A7A7A
+          7A76FBFC7B7B7B7B7B7B7B507C7C7E808BD582F783F784848DD1D29292D3D393
+          D3D39292D291D1F7D5FD7F7D508989767C8084FF90909C9C9C9C65659C9C9C9D
+          6BAC6D7070745353709F82FF7792929394CF7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B736E6E6E6666666666666E6E6E6E737B7B7B7B7B748AD5D5D58C8C8282FEF7
+          8D8F90779177919177D2D394D4CF86D9D0D0D0D986CFD4939277FFF7817E7BBD
+          BD6E6F546D70706D6D6D6D6D6D6D6D6D70507B7C8081838E909077D1D1D1D177
+          D17284FD897A797A7A76DFE8E8E9F2E6EDEDEDEDEDEDEEECE9DFDEDEDE747B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8081838E909077D1D1D1D2929292D290
+          84F4F480F481F68D85858D82F47B7B7B7B7B7B7B7B7C7EFDD5847290D190D190
+          D1D17791D2778F82807B767C7E8051517F7D7C507B50507C7E8A8182F78D8E8F
+          72907792D394CF86D0CDCD878787CDD0D986CFCFD494939291D1909090907792
+          92929292D3D3939494D3D291DD83807D80808A8A836B9C6593C5D4BFBFBF7B7B
+          7B7B7B7B7B7B7B7B7B7B7C7C7B7B7B7B7B50505050505050747070507B7B7B7B
+          5080F78D83FEFE4DF7848D8FDDD1D2D39494D4CF86CDCDCDCDCD8787877878CB
+          CCCACACA88D0CF94929084FD7C76BDBDBD767689897B7B7B7B7B7B7B7B7B7B7E
+          FD828E9293D486D0D0CDCD87CD869492847E737676536D6A6869A49CA2A2A2A2
+          A2A292778FF7F7F7F7817E7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7EFD828E92
+          93D486D0D0CDCD87CD869492DDE5E9E9E9E6ECEEEEEEEEEC00E7D8D8D8D8DE7B
+          7B7C80D584D1D394CF86D0D0CDCD87CDD0CFD390D57476767B7B7B7B7B7B7B7B
+          507C7D808B8C848EDD77D2D394CFD9CDCDCDCD878787878888787878CBCBCCCC
+          88D0CFD4939291DD85FE8C8C8282F7F7F7F78DFFD1D18E817D7B7B7B706AA363
+          BBBB99999999A9A9A9977B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7470707474747B7B7B6D686969848D8D8EDDD177D191929486CD8888
+          87CDCDCDD0CDCDCD878888CBCCCABCBCBCBCBCBCCBD0D49290F7FD7E7C7D7D80
+          817E507B7B7B7B7DFD5151838DFFD2D4D0CDD9D9D0CD878878CBCB86928DD58B
+          7C7B53709F6AA39D65A2D3D392D2D2D2D2D2929292D2DD85D5FD80807F7F7E7E
+          7F51828282D57FFD83859194D0CD86D9D0CD878878CB88CFD284D58A7C7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7DFD838F92CFCDD986D9D0CD88787878CBD9D3
+          FF8C8B807C7B7B7B7B7B7B507C7E8BD5848FD1D2D3D486CDD0D0D0D0D0CDCDCD
+          CDCD8787887878CBCBCBCCCCCACACACC8786D4D3D18DD57F7D7C7D7E7E7F7F80
+          8A807C7B7B7B7B7B7B7B7B7B7B74746D6C9F9F9F9F9E7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B08F17D7E7E7E7D507B507E8C848C8BFDD5
+          4D8590D1D2D3CFCDD986D9D0CDD0D0CDB0B5B5B9B9B2B1B1B1B1B9B9BAB7B6BC
+          7575CCD0CF93D2FF8DF78D848C80897B7B7B7B7B7BF8F98AD58390D4D0CFD4CF
+          86D0CD8878CBCC78D4D272D57D7B7B7B7B7B7B7B7B7D81E5F2F2F2E5E5E5ECEE
+          EEEEECECECE6E5F2E8D87B7B7B508A8A8A807B7F51F7D1D4D0CFD4CF86D0CD88
+          78CBCC8894918EFD7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7E81F79094CD86
+          D4CF86D9CD87787878CB87D4918F8C7F7C7B7B7B7B7B507C7F8B828590D293CF
+          CDD986868686D9D9D0D0B0B5B5B9B9B9B1B1B1B1B1B3B9B9B5B5B6CABCBCCBD0
+          CF92728380747676767689897B7B7B7B7B7B7B7B7B7B7B7B7B7B7CD58DDD9192
+          94D47B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDE1213D87B7B
+          7B7B7B7B7B7B7B7C7D7D80D5F7FF91D3D4D0D986CFCFCFD9B0B5B9B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B9B5CABC78D9CF94D391908582517C7C7C7C7C7C
+          7D808B838282778686D4B1B1B1B1B1B1B1B1B1B1B1B1B1977D7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7D8A8C8C8C8C8C8C8C8C817C7B507FAC689F9F6C5380
+          5182778686D4B1B1B1B1B1B1B1B1B1B1B1B1B19A7C7B7B7B7B7B7B7B5050507E
+          7F7F7F7C507F839093CDCC88B0B1B1B1B1B1B1B1B1B1B1B1B1B1B1967C7B7B7B
+          7B507C7F81F7FF91D3D4CDD986CFCFCF86C3B5B9B3B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B9B5B6BCCCD0D492FF8C7E7B89897689897B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7F828FD19293947B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7BDE12211B7B7B7B7B7B7B7B7B7B507C7F81F772D29386D086CFD4
+          D4D4AFB4B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B9B7CACD86
+          94659D6B69A5A5A5A5A5A5A3A36A6D71818CD1D0D9CFB1B1B1B1B1B1B1B1B1B1
+          B1B1B1977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B707070706D6D6D6D
+          6D6D706C6869689E9E9E6F71818CD1D0D9CFB1B1B1B1B1B1B1B1B1B1B1B1B19A
+          7C7B7B7B7B7B7B7B7B7B7B8A8CFEFE8C828D90D2D4CBCCCCB5B1B1B1B1B1B1B1
+          B1B1B1B1B1B1A05C7D7B7B7B507C7F81F772D29486D086CFD4D4CFAFB4B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B3B775BC87CF92FF51
+          7F7F7C7B507C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B94D39292D290
+          8E828282807C7C7C7C7B7B7B7B507C507B7BF312210F1F7B7B7B7B7B7B7B507C
+          7F5184729294D0D9CFD494D4AFB3B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B3B687CF92FF8C8A7E8A8A8A8A8A8A8A7B7B808B8BD1D0
+          D086B1B1B1B1B1B1B1B1B1B1B1B1AD977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          507C7C7C7E7E7E7FD584858585858EDD9191908E858585DD90D19388CD86B1B1
+          B1B1B1B1B1B1B1B1B1B1AE9A7C7B7B7B7B7B7B7B7B7B7B7D5182828484FFD177
+          9478CB78B9B1B1B1B1B1B1B1B1B1B1B1A8555DFC507B7B507C7F8BF7DD92D4CD
+          CDD986CFCFAFB3B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B8BACA878694D2DD8D8A7C7C7FD5807F7E507B7B7B7B507C7C7B7B
+          7B7B7B7B7B7B74746D68696969696BECD7C4C4C4C4C2DCC8DCC4C4C4C2C91D11
+          0D210F077B7B7B7B7B507C7E8BF7DD92D4CD86D49494C5B4B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B9CDCF928ED57F7070
+          70707070706F73808AFDD1CDCDD0B1B1B1B1B1B1B1B1B1B1B1AEA0977D7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7C7E8A802A2A2A2A808C8E9090909090909090DDDD
+          90909091919194CB78CDB1B1B1B1B1B1B1B1B1B1B1A8989A7C7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B507CFDD583D2CDD0D9B3B1B1B1B1B1B1B1B1B1B1A0555B7CF8
+          7B7B7B7C7E518477D3CF88CDD98686B0B4B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B8B5D093D1838B7D507B7C8A8A
+          8AFD8A8A8A8AFD8285DD77D292D2D292D3D37B7B7BDED8F1F1F1EAEAEAEAEAEA
+          EAF1F17B7BD8E8F2F2ACDC19210D2111F081FDFD8B818C838472D294CD86D494
+          93AFB2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B8B7D4D28D8B7E507B7B7B7B7B7B7B808AFDD1CD87CDB1B1B1B1B1B1
+          B1B1B1B1A09555A9E6F2F2F2F2E9D5FD7D7B7B7B7DD58E8F8F84D5807F7F7F80
+          82858EF78282828CFDFAFA8B4DF7F78F8FFFD3787888B1B1B1B1B1B1B1B1B1AD
+          A095559A6D6D6D6D70537B7B7B7B7B7B7B7373737CFD818392CDD0D0B1B1B1B1
+          B1B1B1B1B1AE98555597D54D4DF78EFFD1D293CFCDCA78D08686B5B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B9C3D3FFD57F7C7B7C80A5696B6B6B6B6B6B6BA4A4729D726B69A56A6D7B7B
+          7B7B7BF48A807F7E7E7E7E7E7E7E7E7B7B7C8AFDFD800821220D212113D87B7B
+          507D8A828FD294CD86D49493A9B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8A8A8A8
+          A8A8A8AEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B59477F78A7C507B7B7B7B7B7B80
+          8A8B77878888B1B1B1B1B1B1B1B1A895555555978C7E7DF57C7C706F537B7B7B
+          7B6F6D9F9F9F9F9E9E9E706D6AA58C7F7C7C7C7F7E507C7FF784848FFFFF9378
+          CBCCB1B1B1B1B1B1B1B1A855555555998F9090908E817C7B7B7B7B7B7B7B7B7B
+          7CFD8183D387CDB0B1B1B1B1B1B1B1B1A0555555559A7C7C507C8B849091D3CF
+          8887D986CFB4B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8A098989895959898A0A0A8
+          A8ADB1B1B1B1B1B1B1B1B1B1B1B1B3BFD28DFD7D507B7D828ED1D17272727272
+          72728F8F8F8E8E8D8C7F939291909090858C80F84CF8F8F8F8F84C7B7B7DD5D5
+          D551070D21210E2121137B507C7FD5857793D086D49493B4B1B1B1B1B1B1B1B1
+          B1B1B1AEA8A095555555555555559598A0A8A8AEB1B1B1B1B1B1B1B1B1B1B1B5
+          93DD8C7F7C7B7B7B7B7B7B808A8B7787CBCBB1B1B1B1B1B1B1AE985555555597
+          827F7D50737353737B7B7B7B7B7B7373737373737373737B7B7B7B7B7B7B7353
+          747B7B7BF8F8F88AFD8B91877878B1B1B1B1B1B1B1A895555555559991929292
+          D2D1858A7D7D7D7D7B7B7B7B7C8A8BF7938887B7B1B1B1B1B1B1B1A855555555
+          559A6A9F6D6D6C69729CA286CDCF9493B4B1B1B1B1B1B1B1B1B1B1B1A8985555
+          55555555555555555555559598A0A0A8AEB1B1B1B1B1B1B1B1B1B1B2AF908C7F
+          7C746C69A49C65656565656565659C909090908F8D8C949392929291DD8DD551
+          D54DF7F7F7F78CD58C82828CD58007210E210D2121211B7C7E8BF790D386D9D4
+          9493B4B1B1B1B1B1B1B1B1B1B1AEA0955555555555555555555555559598A0A8
+          A8ADB1B1B1B1B1B1B1B1B1B1AF92858B7D507B7B7B7B7B808A8B77877878B1B1
+          B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7D8080808C82F7D378CCCAB1B1B1B1B1B1
+          B1A89555555555AFEB939393EBD2908E8D85DD77919C65659C9D639DBFCBCBB7
+          B1B1B1B1B1B1B1A85555555555D2D1D1DD8F8D8F909194CD869493A9B1B1B1B1
+          B1B1B1B1B1ADA09555555555555555555555555555555555559598A0A8A8AEB1
+          B1B1B1B1B1B1B1B1B3A285FD7C7CAC8590D2A2A2A2A2A2A2A2D29D8E8585858D
+          84D57B7B7B7B7D7D7D7C7C7C7C7C7C7C6D6A6A6AA3A36A6D6D701B2121210D22
+          0D21101F808C8FD2D4D0CF9493A9B1B1B1B1B1B1B1B1B1AEA095555555555555
+          55555555555555559598A0A0A8AEAEB1B1B1B1B1B1B1B1B1B1AF77827F7C7B7B
+          7B7B7B808A8B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F848D8D8D6B6B72
+          9D9D94CBCCCCB1B1B1B1B1B1B1A895555555559AD5828E9090DD8DF7F7F7F785
+          72909191908F838FCFCCCBB5B1B1B1B1B1B1B1A8555555555593929292D3D3D3
+          93CF8787D0CFAFB1B1B1B1B1B1B1B1B1A8955555555555555555555555555555
+          55555555559598A0A0A8AEAEB1B1B1B1B1B1B1B1B1B490D57D6F9E6461616161
+          61616161616164626262626267667B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B
+          737B737B7B7B1E0D210E210D21210E11F284D193D086CF86AFB1B1B1B1B1B1B1
+          B1B1A898555555555555555555555555555555559598A0A8A8AEAEADB1B1B1B1
+          B1B1B1B1B1B2DB8F817D507B7B7B7B808A8B77877878B1B1B1B1B1B1B1AE9855
+          555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808A7F7C
+          7B7B7B7B7C80FD8C8C82828D858492877878B1B1B1B1B1B1B1A895555555559A
+          7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D8A8A84947888B5B1B1B1B1B1B1B1A8
+          5555555555F751D58E91D3D393CF88D986BFB3B1B1B1B1B1B1B1ADA055555555
+          555555555555555555555555555555555598A0A0A8AEAEADB1B1B1B1B1B1B1B1
+          B1B199F77F507B7B7B7B7B736E6E6E6E6E6E6E737373735373737B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1E210D21210D220E220A198FD2CF
+          D986CFBFB2B1B1B1B1B1B1B1B1A898555555555555555555555A5C5C96965555
+          98A0A8A8AEB1B1B1B1B1B1B1B1B1B1B1B1B1B477827F7C7B7B7B7B808A8B7787
+          7878B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7D7D7C7D7F8080
+          80807F7F7F80828E8F8F827E7B7B7B7B7B7B7B5050507C8AFD8177877878B1B1
+          B1B1B1B1B1A895555555559A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D808A84
+          947878B5B1B1B1B1B1B1B1A85555555555807B7B50FE77D2D3CFCD86CFA9B1B1
+          B1B1B1B1B1ADA05555555555555555555A5DA999999A9A9A9A97975D5A98A0A8
+          AEB1B1B1B1B1B1B1B1B1B1B1B1B1B38EFD7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B537070546F74535353535353535353747474DE1E0E
+          210D220D21220E23041E9488CDD0D0B9B1B1B1B1B1B1B1B1A898555555555555
+          55595D5E7F7F716AAC69A49CA9B4AEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A9
+          8FD57F7E7D7D7D808A8B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B
+          7B74DF8C858F84ACD5ACACACACD58A80807D7C7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B808A8B77877878B1B1B1B1B1B1B1A89555555555999D7272A4A36A7054
+          5474737B7B7B7B7B7D8A8A84947878B5B1B1B1B1B1B1B1A85555555555807B7B
+          7F8F92D293CDCDD0C3B2B1B1B1B1B1B1B1A05555555555565596A9A292929190
+          84FD7E7E7F8A51837265AFB3B1B1B1B1B1B1B1B1B1ADAEA8A8AEAE99517C7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD4C5A2A2A2A2A2659CA4A3A56A9F
+          9E9F9F9F9F9F8AD582F21221210D21210E2223230A14D687D9C3AFB1B1B1B1B1
+          B1B1B1A89855555555565659979B50507B7B507C7C7EFD82FF92BFB9B1B1B1B1
+          B1B1B1B1B1B1ADADB1B1B1B2C5A2659C9C9C9C9C9C9D9378CBCBB1B1B1B1B1B1
+          B1AE9855555555977DCEE2F3C9C9C9C9C9C9C9C8C8C8C8C8C8C9C9C9D8DE7B7B
+          7B7B7B7B7B7B7B7B7B7B7B50507B7B808A8B778778CBB1B1B1B1B1B1B1A89555
+          5555559972FFFFFF8E827F7B7B7B7B7B7B507B7B7D8A8A8DD47878B5B1B1B1B1
+          B1B1B1A85555555555D190EEE193C3CFD9CC8888B5B1B1B1B1B1B1B1A8555555
+          5555565997FDFC7B7B7B7B7B7B7B7B7B507C7D7FD5FFD3D9B6B3B1B1B1B1B1B1
+          B1ADA8A8A0A8A8968C7E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B81FD
+          7F7E7D7D807F7E7D80D5817F7D7E7E7E7E7F7F82FFEE11210D22210D220E230A
+          241416D6C3CFB3B1B1B1B1B1B1B1AEA05555555556565B62507B7B7B7B7B7B7B
+          507C7D7FD58F92CFB7B8B1B1B1B1B1B1B1B1ADAEAEAEADB1A99084D581818183
+          848ED378CCCCB1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7C
+          7F7C7C7C7C507B7B7B7B7B7B7B7B7B7C7C7C7E7E7E7E7E7FD54D8D8F8EFF93CB
+          CACAB1B1B1B1B1B1B1A895555555559991919177DDF78B7B7B7B7B7B7B7C7C50
+          7E8A8B85CF7878B5B1B1B1B1B1B1B1A855555555559DA3A569A4A2D294CDD0D0
+          B3B1B1B1B1B1B1AD9855555555565BBB90DD8D807C7B7B7B7B7B7B7B7B7B507C
+          808491D478BCB9B1B1B1B1B1B1B1A8A0A098A098617E7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7BD4939291FF84D57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          FDF0110E210D21220E22230A14151615C3AFB1B1B1B1B1B1B1B1A85555555556
+          565D9B507B7B7B7B7B7F82FF77656565A2C5BFD0CCB6B8B1B1B1B1B1B1B1ADAE
+          A8A8A8AEAAA4817C7B7B7B80E7F0EB88CCCCB1B1B1B1B1B1B1AE985555555597
+          7D7B7B7B7B7B7B7B7B7B7B507C507B7B7B7B7B7B7B7B7B7B7B7B7CD58C8C8BFA
+          F9F9F9F9F9FA7E8B51D5D288CBCCB1B1B1B1B1B1B1A89555555555AFD4D4CFD4
+          94EBEDEE8F8F8F8E8569686C7F8B51FFCF7888B5B1B1B1B1B1B1B1A855555555
+          558A8080818DD18E948887D6B1B1B1B1B1B1B1A0555555555658659292D2EEE5
+          DCF4E7E8E9E8E8E8E8E8EAEAE5EDD3C38875BCB8B1B1B1B1B1B1AEA098959595
+          977F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B86D49392D18E8C7C7B7B
+          7B7B7B7B7B7B7B7B7B7B7B507F020F210D21210D22230A241415161515B3B1B1
+          B1B1B1B1B1A89855555555565B9B507B7B7B7B7B746DA56B9D65A2C5C5C5BFD9
+          88BCBCB8B1B1B1B1B1B1B1AEA8A8A8A8A8A98C7E507B7B80D5F79288CCCCB1B1
+          B1B1B1B1B1AE9855555555977F7C7C7C7C7C7C7C7C7C7C7C7C5050507B7B7B7B
+          7B7B7B7B7BDED8E8E5ECE68D848484F7D55151F7848D9278CCCCB1B1B1B1B1B1
+          B1A89555555555AFD4CFCFCFD4949494949493D392D2908F729085D1D98888B5
+          B1B1B1B1B1B1B1A055555555557F7B7B7E8C8481918688B5B1B1B1B1B1AE9855
+          55555555569992D394D3D290DDDDFF8E8D83F68383838C81838F9194877575BA
+          B1B1B1B1B1B1AEA0955555555D7F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B86D49392D18E8C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0621210D220D22
+          220A240A14161515E0B1B1B1B1B1B1B1ADA05555555556599E507B7B7B7B7B7B
+          7B7B7C7D7F8C8590D177D293CF8875C1B1B1B1B1B1B1AEA8A0989898A096827F
+          7470AC9D6565D4CABCBCB1B1B1B1B1B1B1AE9855555555978C81818181818080
+          8080807F8A807E7E7D7C7C7C7C7C507C80818283F78F8F8EF74DFE8B7B7B7B80
+          8A8B77877878B1B1B1B1B1B1B1A8955555555599EEEDEBEBEDEEEEEDEB929177
+          D2D2D2D292D393D4887878B5B1B1B1B1B1B1B1A055555555557E7B7B7ED58C7D
+          8E93D0B5B1B1B1B1AE555555555555565C838FD1D2D18E838282828C8A7F80D5
+          8C8C82D5818DD2D487BCBCB6B1B1B1B1B1B1ADA0555555559669705353535370
+          7070707C50507B7B7B7B7B7B7B7BC3CFC5EBEDE6E97D7B7B7B7B7B7B7B7B7B7B
+          7B7B7C7E7E06210E210D21210E230A2415161515C7B1B1B1B1B1B1B1A8985555
+          5555565E507B7B7B7B7B7B7BD8EAE8E9E5ECEDEBEBEBD394C3CDCA75B9B1B1B1
+          B1AEA0955555555555559A7F7D8C8E919292CFCABCBCB1B1B1B1B1B1B1AE9855
+          555555A990FFFFFFFF8C8080808080807F7F7E7D7D74508974897C808DFFDDDD
+          DD9090DD8E8585848A7C7B808A8B77877878B1B1B1B1B1B1B1A895555555559A
+          7C7B50507B7B7B50D5F7F784848D8D8FD1D292D4878788B9B1B1B1B1B1B1ADA0
+          55555555557E7B7B7DFD807A8072D3B4B1B1B1B1955555555555565697646464
+          64629E9B9B9B9B677B7B7B50507C7D80D585D19487CACCCCB1B1B1B1B1B1ADA0
+          555555555AA5676666535353535353737373737B7B7B7B7B7B7BD0D9CF949392
+          77FF82807F7F808080808AFDD58ED1D2D2130D2121220D220E23241415161515
+          B8B1B1B1B1B1B1B1A855555555555C7C7B7B7B7B7B7C8082FF90D2D3D3929292
+          9191D29294C387CAB6B1B1B1B1A055555555555555555D719F69A465C5C5D075
+          7575B1B1B1B1B1B1B1AE9855555555A9949393939285828282828CD5518B8A80
+          7D7C7476BDBDBD76F3E9E9F2F2F2F2F2E9E9E9E9E8DFDEFDF2E5D2877878B1B1
+          B1B1B1B1B1A895555555559AFD8080808080808081F784848D8D8EFF91D29286
+          D0D0CDB9B1B1B1B1B1B1AE98555555555C7D7B7B7C7F7479BDFD8FB4B1B1B1A0
+          555555555555565661828282828A7E7D7D7D7D7E7D7C7C7D7E80818272D3D4D0
+          CACCCCCAB1B1B1B1B1B1B1A05555555555827F89897B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7D7C7C7C7EFDFD8A808A847277919191929292D3D393931E220D
+          210D210E23230A14151616E0B1B1B1B1B1B1B1AEA055555555555E507B7B7B7B
+          7BDEDFEAE9E6EDEBEBE1E1E1EDEEEEEDD293C3D088B3B1B1B1A0555555555555
+          55555BC2C4C4BBE1DBA2BFCABCBCB1B1B1B1B1B1B1AEA055555555B587CDCDCD
+          8693939393D3D3D392D291D1FF8D8CFD7D89BDBDBDBDBD767689897B7B7B7B7B
+          7B7B7B808A8B77877878B1B1B1B1B1B1B1A89555555555998E8D8D8D8D518A8A
+          8A8A8AFD8B81828D72919386CFC3D9B3B1B1B1B1B1B1AE985555555596696A6D
+          6D6D89797A7E84B1B1B1A8555555555555555656FF8D8D8DFF90D1919191D2ED
+          E1E1EDEE9CEDE1EBA2BFD9CC788888D6B1B1B1B1B1B1B1A0555555555584F7D5
+          517F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B736CA56B72
+          A4A3A3A37277D292D21E0D21220D21220A232414161616C6B1B1B1B1B1B1B1A8
+          95555555555B7C7B7B7B7B7B7B7B7B7B7B7B748B81818181F47DDE76897F8D91
+          D3A9B1B1A8985555555555555555559E6C6C6CA5A46BA278CBCBB1B1B1B1B1B1
+          B1AEA095559598B5757575BCCACB7878787878CB7888CDD086D493D2DDF78A7C
+          76BDBDBD767689897B7B7B7B7B7B7B808A8B77877878B1B1B1B1B1B1B1A89555
+          555555AFCFD49393D2A3A5ACA3A49D6B6BA4FF90929486D4D4D4BFB1B1B1B1B1
+          B1B1A855555555555D8C8A7F7C7C7679BD7FD597979797979797979797979797
+          7D7D7D7D8184FFDD909192D3D3D392D29292D393D4D988D0D9CFCFAFB1B1B1B1
+          B1B1ADA055555555557E8B8BFDFDFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B508084DD90D1D18F838B8BF7FFDDDDFF1E0D210D21210E23230A14
+          161616B9B1B1B1B1B1B1B1A855555555555E507B7B7B7B7B7B5374747474546A
+          8A8A8A80F94C4C89BD768A848FBBB1B1A0555555555555555556555E51D5D584
+          DD8ED378CB78B1B1B1B1B1B1B1AEA89898A0A8B7757575BCCCCB787878787878
+          78CBCBCBCCCCCBCDCF939185817E767676767689897B7B7B7B7B7B808A8B7788
+          CCCAB1B1B1B1B1B1B1A89855555555B7CB88CDD094D2D29165A2A265D393D4CF
+          D0D9CF949393A9B1B1B1B1B1B1B1A05555555555977C50507B50897ABD7C7D7D
+          7D7D7D7D7D7D7D7C7C7C50507C7C7E7F8A8B81D58C82838384848D8E7291D394
+          D9D0CFD49493C5B3B1B1B1B1B1B1ADA05555555555D7D7D7C4C4C4C4DCDF507B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7D7E7E7E8A8D90D2D2D2D2908E858FD1929292
+          ED1221220D210E220A0A2415161616B1B1B1B1B1B1B1ADA055555555556A7E50
+          7B7B507D7E8083848484848D8D8D8D8D8484F78CFD8080FD81D5979797979797
+          979797979797975E507B7B80838B77877878B1B1B1B1B1B1B1ADA8A0A8AEB1BA
+          B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7CCCCCACABC78D994D28E817E73898976
+          897B7B7B7B7B7B808A8B7787CBCBB1B1B1B1B1B1B1AE9855555598B67575BCBC
+          CB8887878787878878788887CD86D49493DBB1B1B1B1B1B1B1AE985555555555
+          5E507B7B7B7B7BBD767B7B7B7B7B7B7B7B7B7B507C7C7E7F8A818CF78D8D8383
+          F7848D8E72779293D4D9CDD0D986CFD494C5B3B1B1B1B1B1B1B1AE9855555555
+          5BDC7E7D7C7C7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B80FE8E
+          FFFFFFFFFF8FEEEDEB93C593E112210D210D2122242324151616E0B1B1B1B1B1
+          B1B1AE98555555555B686A6D7473737B7B746D6C6C6C71A58D4DFE4D4DF74D8B
+          FC7E8AFDFD7D7D7D7D7D7D7D7D7D7C7C7C5050505050508A838B77877878B1B1
+          B1B1B1B1B1B1AEA8AEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B3B9
+          B5B6BC88869377848B7D7C7B897B7B7B7B7B7B808A8B77877878B1B1B1B1B1B1
+          B1AEA09898A0A8B6757575BCCC78787878787878788887CDD086CF94AFB2B1B1
+          B1B1B1B1ADA05555555555559B5470707070706F7070707070707053747C7C7E
+          808BD5F785FFD177728E858FDD919293CF86CDCDCDD0D0D98686C3CFAFB2B1B1
+          B1B1B1B1B1B1A855555555555C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7BFD4D8F90909090909090D1777791770219210D22210D22
+          0A230A151616C1B1B1B1B1B1B1B1AE95555555555D8C807C7B7B7B7B7B7B7B7B
+          7B7B7B7D8C8C8CF78D7272848383F784F7807F7F7F7F7E7B7B7B7B7B7B7B7B7B
+          5050508A8C5177877878B1B1B1B1B1B1B1B1AEAEADB1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B3B7CCD0949185E9E7DF7DDEDEDFE8E5E6DD
+          EEEE94CBCCCBB1B1B1B1B1B1B1AEA8A0A0AEB1B67575BCCACC78787878787878
+          78888887B0B0A9B3B1B1B1B1B1B1B1B1A05555555555555C506F9F9F9F9F9F9F
+          6D6D70707070707C7D7FFD8C848F90D29292D291D292D3D4CFD0CDCDCDCDD0D0
+          D0D9D9D986B0A9B2B1B1B1B1B1B1B1B1B1AEA0555555555597507B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B939292929277727272728584848484848484
+          848572DDE6190D21210D210E242314151616C6B1B1B1B1B1B1B1A85555555555
+          978C8A7C7B7B7B7B7B7B7B7B7B7B7BDEDFDFDEDEC9DCDCC9C9C9C9C9C9747474
+          7070747B7B7B7B7B7B7B7B7B7B7B7B80D58B77877878B1B1B1B1B1B1B1B1ADAD
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B8B5D094
+          778E8CFD8A7F7F808A8B828E8FFF93CBCCCCB1B1B1B1B1B1B1ADA8A8AEB1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A855555555
+          5556565E5474676767679E67537B7B7B507C7D7F8B828E90D2D3D3D3D3D394CF
+          86CDCDCDCDCDD0D0D0D0D0D0D0B0B5B9B2B1B1B1B1B1B1B1B1B1B1B1B1A85555
+          5555555560507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B93A29C9D9D63
+          619F62676E737B7B7B7B7B7B7B736F6A0521210E21210E230A2324151616BAB1
+          B1B1B1B1B1B1A855555555559A8A7F7F7E7E7C505050507C7C7C7C7C7B7B7B7B
+          7B7B7B7B89897B7B7B7B7B7B7D7E7C50505050507B7B5050507B7B805182A278
+          CBCBB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B9B09390845181F47F7F7F8AF6DDD1D194CCCACAB1B1
+          B1B1B1B1B1B1AEAEADB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1AE985555555556565C8F85828A8A8AD583D57D7B7B507DFD848F
+          9077D2D2929394CFD9CDCDD0D0D0D0D0D0D0D0D0D9B0B5B9B2B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1A89855555555555B7C7B7B507E7F7F7F7F7F7F7F7F7F7F7E
+          7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B736D05210D21
+          210D210E242314161616B9B1B1B1B1B1B1B1A855555555557F7B7B7B7B7B7B7B
+          7B7B7B507E7F7F7F7D7B7B7B7B7B737373746D6C6C6C6D54537373737373737B
+          507C7C7C507B7B808BD5D3CCCACAB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B8B092A4A5C2C8C8C8
+          C8C2C49D9CEDD4CABCBCB1B1B1B1B1B1B1B1ADADB1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A05555555555565A65A2659D6BA3
+          A36969A569A3A3A4D293D4D4D4CFCF86D088CB78888887D0D0D0D0D0B0B5B9B3
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A8985555555555555E507B7FF7
+          FFDDDDDDDDDDDDDDDDDDDDFF84D5518B7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B5080838F901B0D22210D2221230A2314161616B9B1B1B1B1B1B1B1A055
+          555555557F7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B80FD8BD278CCCAB1B1B1B1B1B1
+          B1B1B1B1B1ADADADAEAEAEADADADADADADADADB1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B2BFA29D63A79BBE669BA7BBBB9CBFCABCBCB1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A89855
+          555555555CBB72908F83818B8B8A8A7D7E7F80518D77929394D486CDD986D9D9
+          D9D9D0D0B0B5B9B2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA095
+          5555555556565B7C7B7B7CD54D4D4D4D4D4D824DF7848D8D8CFDFD8B7E507B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7DE8E6ECEE1321210D210D210E240A1416
+          1616B8B1B1B1B1B1B1ADA055555555A6F07C7D8A8283848EFF90D172FFFF7792
+          9277D1D1D1D1D1FF85858E8E8E82D5D5D5817E7B7B7B7B7B7B7B7D7D7D7C5080
+          8A8B778778CBB1B1B1B1B1B1B1B1B1AEA8A8A098955555555555555555555555
+          9598A0A0A8AEADB1B1B1B1B1B1B1B1B1B1B2DBDD8271747B7B7B7B8A69A494CC
+          CACAB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1ADA8955555555AA9DD826869A3A3A3A3A3A3A3A3A4A47290
+          D1D2D3D486CD8686CFCFCF86BFB5B9B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1AEA898555555555556565960507B7B7B8A8283F7848D848284
+          FF919293D4CFD9CD888891908FD57F7C7B7B7B7B7B7B7B7B7B7B7B7B7B507EDF
+          1E210D22210D22230A2314161616B1B1B1B1B1B1B1ADA055555555B319DC68A5
+          6969696969696B6B83F7DDD292EBEDEDEDEDEEEDEB93C5D4C3D4D4D4D4D493EB
+          EEDDFFFFFF7777FF8DD57C808A8B77877878B1B1B1B1B1B1B1B1AEA8A0985555
+          55555555555555555555555555555598A0A0A8AEADB1B1B1B1B1B1B1B1B1B3D4
+          659C9DA36A6D9F63BB9DD4CABCBCB1B1B1B1B1B1B1B1B1B1B1B1ADADADB1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8985555B5CCD09465EDED
+          EDE1E1E1E1E1E1E1E1E1EDD1D19294D0D9CFCFD4D4BFAFB3B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA8A0955555555555555656565E7453
+          74706DA56B9D65A29494A29394CF86CD78CABC7575757B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B507FD5F7F71E220D210D21210E240A14161616B1B1B1B1B1B1
+          B1ADA055555555B32313D87C7C7C7C7D7F547B7B7B7B7B7CD5A5C2C2C2C2C4BB
+          9DE1A2C5BFBFBFBFBFBFC5EBEDEEFFFFFFD1FFF78C8A7B808A8B77877878B1B1
+          B1B1B1B1B1B1AEA0985555555555555555555555555555555555559598A0A8A8
+          AEADB1B1B1B1B1B1B1B1B1A9A29C9D8F8E8E8ED1D2D2CFBCBCBCB1B1B1B1B1B1
+          B1B1ADAEA8A8A09895555555555555555555555555555555959898A0A8A8AEAE
+          AEA8A0985557B9D6D99492908E8D8D8D8D8DF78C8B51837292D4CD86CF9494C5
+          A9B2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA8A89895555555
+          55555555555656589AF7518B8B7F7C7C8084DDD2D3D3D2D2D2D394CF86D087CB
+          CABC7B7B7B7B7B7B7B7B7B7B5050507B7B7B7B7B7B7C7C7D1221210E21210E23
+          242314161616B1B1B1B1B1B1B1ADA055555555B30E221B7B7B7B7B73536F6F6E
+          7373706AA5A3A3A3A3A49D65656565A2C5D4D4D4CFD49392D277D1D1D1D18FF7
+          8382818283849288CBCBB1B1B1B1B1B1B1ADA898555555555555555555555555
+          5555555555555595A0A8A8AEADB1B1B1B1B1B1B1B1B1B1B2DBD290FFFFFFFFD2
+          D291D4CCBCBCB1B1B1B1B1B1B1B1AEA8A0955555555555555555555555555555
+          555555555555559598A0A8A8A8A8A8A0A0A0A8B2B5D994927790FFFFFFFFFE8A
+          8A8C8FD2D4CD86D49494AFB2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          AEA8A0A095555555555555555555555555565B9A68FD7D7C7C7B7B7B7B7B7B6F
+          6C6C546F9E9E62626262646464617B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7BD8120D210D210D210E240E24161616B1B1B1B1B1B1B1ADA055555555B3
+          23220F1F7B7B7B7B7B7B7B7B7B508B517F7E7E7E7FD584FF7272DD91D3939393
+          93D3D2D19191919191EDEEECE6ECEEEDEDEDD4CCCACAB1B1B1B1B1B1B1ADA055
+          5555555555555555555555555555555555555598A0A8B1B1B1B1B1B1B1B1ADAE
+          AEAEADADB4F77F507B7B7B808A8B778778CBB1B1B1B1B1B1B1ADA8A095555555
+          555555555555555555555555555555555555555598A0A8A8A8A8A8A8A8AEB1B1
+          B1B99390827F7C7C7C507C7E518DD193D086D49493B4B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1AEA8A0989555555555555555555555555555555558978282
+          8384A5A5A5AC6D74737B7B7B7B7B7B73665F5F5F5F5F5F5E5E5E7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF119210D21220D21230A2314151616B1B1
+          B1B1B1B1B1B1A055555555B30A220D26F07E7E7E7FD583828F77929291DDFFFF
+          FFDDDD909090D1D2D39392D2908DD57E2A51D5D5D5D5D5515151518A8A8B7787
+          7878B1B1B1B1B1B1B1AEA055555555978B8080808080808A8B81AC696BBB99A9
+          ABB1B1B1B1B1B1B1B1B1B1AEA8A8A8A8AA63FD7C7B7B7B808A8B77877878B1B1
+          B1B1B1B1B1ADA898555555555555555555555555555555555555555555555555
+          98A0A8AEAEAEAEAEB1B1B1B1B1B1B4928DFD7C7B7B507C8A828F9286D9CF94C5
+          B4B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA8A8A098555555555555555555555555
+          5555555555555A97A3848484848D848484848C7F507B7B7B7B7B7B7B7B6DACA3
+          9D9CA2C5BFC37B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B08110E2121
+          0D21210E232224151616B3B1B1B1B1B1B1B1A855555555A623220D22111D6D6D
+          6D6AA5F2E6EEE1EBEDEEE6E5E5E5E5E5E5E5E5ECEDEDD2D277FF827F7FFD5151
+          D5828E8F8F8F8E84D58B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B
+          7B7B7B7B50507C7D80D5FFD386B7B8B1B1B1B1B1B1B1B1AEA8A0A0A0A899817C
+          7B7B7B80FD8B77877878B1B1B1B1B1B1B1AEA055555555555555555555555555
+          555555555555555555555598A0A8ADB1B1B1B1B1B1B1B1B1B1B1B1A9DDD57E50
+          7B507E51F79093CDCFD494B4B1B1B1B1B1B1B1B1B1B1B1B1A8A8A09555555555
+          555555555555555555555555555555595D6028F8F8F8F8F8F8F8F8F8F87B7B7B
+          7B7B7B7B7B7B7B7B7B7FF790D2D3D4CFD9CD7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B070F210D220D210D220A220A151616B9B1B1B1B1B1B1B1A895
+          555555550A22210D2113E88C8C8385FF8F8FFFD1FF8EF6FD7D7C7C7C7C7C7C7D
+          7E7E7E7D7D7D7D7D7D7D7C7C7C5050507B7BF58A8A8B77877878B1B1B1B1B1B1
+          B1AE9855555555978C81818181818A8282D57F7E8A84D29386CB75B9B1B1B1B1
+          B1B1B1ADA8A0A0A0A096D57D7B7B7B808B8B77877878B1B1B1B1B1B1B1AE9855
+          5555559AFD808080808080808080808A8AFD8BD583A499A9B9ADB1B1B1B1B1B1
+          B1B1B1B1B1B1B1B199F77F507B7C80828D77CFD0C3C3A9B1B1B1B1B1B1B1B1B1
+          B1AEA09855555555555555555555555555555555555555555C97607C50507B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507F82FF919293D47B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0521210D21210E21220A222415
+          1616B9B1B1B1B1B1B1B1A89855555555240E22220D0F13FFFFFFDD90DDFFFFFF
+          8F8E4DFD7B7B7B507C7D7E808AFD8A8A8A808080807F7E7D7C8989768976737F
+          8A8B77877878B1B1B1B1B1B1B1AE985555555597E7EAEAEAEAE8E6EEEEECE8F4
+          DCD79CEBD48775BCB1B1B1B1B1B1B1B1A8A098989898BB83826B83D583829278
+          CCCCB1B1B1B1B1B1B1A898555555559A7C73737B7B7B7B7B7B7B7B7B50507C7D
+          7F818592CFD6B9B1B1B1B1B1B1B1B1B1B1B1B1B1B38EFD7C7B7CFD848E92D086
+          CFBFB2B1B1B1B1B1B1B1B1AEA098555555555555555555555555555555555559
+          5C975E7C7C50507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7BD277FF838A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1B
+          210D220D21210D22230E23151616C6B1B1B1B1B1B1B1A89855555555E30E220D
+          21210FDB9494949493D391909090907284807C7C7D7F8B518C8CD581FD8A808A
+          807E7C89BD7A7A7ABD76767F8A8B77877878B1B1B1B1B1B1B1AE985555555597
+          7D7B7B7B7B7B7B7D7D7C7B7B7B7C8A84D2CFCA75B7B1B1B1B1B1B1B1A8A09555
+          5555A9C5BFBFBFBFBFBFD0BC75BCB1B1B1B1B1B1B1A8955555555599D57F7C7B
+          7B7B7B7B7B7B7B7B7B7B7B507C7ED57293CD75BAB1B1B1B1B1B1B1B1ADADADAD
+          AD99517C7C8A84DD9093CD86CFA9B1B1B1B1B1B1B1B1A8A05555555555555555
+          555555555555555B5D5E627C7C7C7C7D7E7E7E7F7F7F7F7F7E7E7E7D7C7C507B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B1B0D2121210D21220E230D23141616C1B1B1B1B1B1
+          B1B1AEA055555555C7230E22220D210FE4D1D1779C72A3A3A4A4A4A46B696C6D
+          7F81828D8E8E8584F7F7F784848C8A7C7A7979797ABD7680FD8B77877878B1B1
+          B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7E8291CFCB75
+          CAB1B1B1B1B1B1B1AEA095555555A992D394D4D4CFCFD0BCBCBCB1B1B1B1B1B1
+          B1A895555555559A8B828D8481FDFDFD8A7D7B507C7B7B7B7B7C8A8D9286CA75
+          B9B1B1B1B1B1B1B1AEA8A8A8A896827E7FE5EEE1EBCFCD8686B3B1B1B1B1B1B1
+          B1A8985555555555555555555555555C975E9E7D7D7D7D7D818E7285F7F783F7
+          F7F7F7848382D58A7C897676767689897B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B13210E210D220D210E
+          23210E141616E0B1B1B1B1B1B1B1AEA095555555C724230E21210D2211087E81
+          82F6F6848585858E85F6838F77D2D2D39494CFCFD4D4D4D4949393D28F8C7DBD
+          BD767B808B8B77877878B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7E8C8F9387BCBCB3B1B1B1B1B1B1ADA055555555969394CF86D9
+          D0D078757575B1B1B1B1B1B1B1A895555555559AF2E6EEEEEEEEEEEEEEE6F2F7
+          84D5802A2AFC8BF7D2CFCC75B6B1B1B1B1B1B1B1AEA0A0A0A0A0617E7B6C699D
+          72D4D0D9B0B1B1B1B1B1B1B1AEA05555555555555555595C975E7C7C50507B7B
+          7B7B507C7F8BA3727277D2A2A2A2919C9DA4A56A6C6D6D6D7073767B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7C1E0D210D21210D2121220D220A151616B1B1B1B1B1B1B1ADA898555595
+          A60A230E220E210D211EF37DDFDFDFEAEAEAEAE8DCDCF0ECE1EBC5C3D087D0D0
+          D0CD87887887D9949C69AC9F7C7B7B80518B77877878B1B1B1B1B1B1B1AE9855
+          555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7D8A8CD2D0CACAB9B1B1B1B1B1B1
+          ADA0555555559691D1D2D3D48686877575BCB1B1B1B1B1B1B1A895555555559A
+          9F9F9F9F6C6C9F9F9F6CDF8B8382FD80808051F777D4CB75BCB8B1B1B1B1B1B1
+          AEA098959595977F7C818E77DDCFCDD0B5B1B1B1B1B1B1B1A855555555555659
+          5D607C7C50507B7B7B7B7B7B7B7B507E8B849293D4CFD49493D392D392919085
+          8CD581807C767B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7C7ED5120D21210E21210E210E21210A151616B8
+          B1B1B1B1B1B1B1A8A09895989804240E22220D210D22137B7B7B7B7B7B7B7B7B
+          507D84D19293C38887D0D9D9CD88CCCACABC7578D9CFD4C5C5D4CFC3D9C3CD75
+          7575B1B1B1B1B1B1B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B7B7B7D8A
+          D577D9CCCCB5B1B1B1B1B1B1B1A05555555555917791D293CFCF87757575B1B1
+          B1B1B1B1B1A89555555555AF659DA3689F6A68A5A5A5A3A36B6B6B696969A372
+          9C9488BCBCB9B1B1B1B1B1B1AEA0955555555DFD7F818ED27786CDCDB9B1B1B1
+          B1B1B1AE9855555555565B6250507B7B7B7B7B7B7B7B7B7B7B7B7C8A8377D486
+          8686D9D9D0CDCDCDD08694D2FF8EF7D5E7DFDEDE7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B736F6F6F676767676767676D6D6AA3A4A4A3A3F21222210D21
+          0D210D21220C2123141616BAB1B1B1B1B1B1B1AEA0989898A0C62423220E2222
+          210D0F1B7B7B7B7B7B7B7B7B507EA39CA2D4CDCDC3CFB5B5B5B5B5B5B5B5B7B5
+          B5B5A9AF94CF86D9CDD9CDBC7575B1B1B1B1B1B1B1AE9855555555977D7B7B7B
+          7B7B7B7B7B7B7B7B7B507E8B8C77D9CBCBB5B1B1B1B1B1B1B1A055555555557F
+          507E7ED5FF8E93CCCACAB1B1B1B1B1B1B1A89555555555998F83FD7E80D58282
+          828C8CFDFD838E8E8F8FDDDD779488BCCAB5B1B1B1B1B1B1ADA0555555555C7F
+          7B7F8477908687CDB9B1B1B1B1B1B1A895555555555B7C507B7B7B7B7B7B7B7B
+          7B7B7B7B7B507ED58FD294D988788878CBCCCACACACACD94D18E8D83FDFD8A7F
+          7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7E7F8181ACF78484848484A49D6B
+          A568686A706FF3110D21210E21210E210E210C23141516C1B1B1B1B1B1B1B1AD
+          A8A0A0A0A8B814240A220E220D212119077B7C7B7B7B7B507D8A83D1938688D0
+          86AFB1B1B1B1B1B1B1B1B1B1B1B1B1A994D486D087D9CDBC7575B1B1B1B1B1B1
+          B1AE9855555555977D7B7B7B7B7B7B7B7B7B7B7B507C8AD5F7D2CD8888B5B1B1
+          B1B1B1B1B1A055555555557E7D7D7D8B85D577877878B1B1B1B1B1B1B1A89555
+          5555559A7D7F7F8B51D5D5D57F7C7C507CD58DDD91919292929478CACCB5B1B1
+          B1B1B1B1ADA0555555555A7F7B7FF79190868887B9B1B1B1B1B1B1A855555555
+          55A7507B7B7B7B7B7B7B7B7B7B7B7B7B507C8A838E7794CD86CF86D9CD8778CB
+          CBCCCBCFD29084ACA5A36B696A70537373737373737373737373737B7B7B7474
+          7474746D6C6C6C6C71A5A56A6D6D6D6D507B0811210E210D210D21210D21200E
+          24151616B1B1B1B1B1B1B1B1A8A8A0A0A8AEE01424230E22220E212119F17B7B
+          7B507C7D808C8E779387D086CFB4B1B1B1B1B1B1B1B1B1B1B1B1A89ADFDFDCEE
+          EBE1C5CBCCCCB1B1B1B1B1B1B1AE9855555555978A7F808A8282828A7F7C5050
+          7C7ED584FF938787CDB5B1B1B1B1B1B1ADA055555555557E7B7B7B80848B7787
+          7878B1B1B1B1B1B1B1A895555555559A7C7B7BF9F9F97D7C7B7B7B7B7B7F8A8B
+          518C8DDD7293888787B5B1B1B1B1B1B1ADA055555555557F7B7E839190867888
+          B1B1B1B1B1B1B1A0555555555CFD7C507B7B7B7B7B7B7B7B7B5353747C7F8184
+          72D38686CFBFB4B9B9B9B9B9B9B9B9B9B4B4B47E7C8A8C807C7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B0826
+          0D21210E21210E21210D200C23141616B9B1B1B1B1B1B1B1AEA8A8A8A8ADB915
+          1424230A220E210D211ED8507C7D7F8B8C8E77D3CFD9CFD4C5B2B1B1B1B1B1B1
+          B1B1B1B1AE98559B7B7B7B80845177877878B1B1B1B1B1B1B1AE985555555597
+          FF8E8EF7F7F7F74D827F7E7E8A828E90D2CFD0D0D0B9B1B1B1B1B1B1ADA05555
+          55555A7D7B7B7B80848B77877878B1B1B1B1B1B1B1A895555555559AFD8C8E8E
+          8E8FA469716D7D7C6D9F6A68A5A3729091CFCDD0CDB5B1B1B1B1B1B1ADA05555
+          5555557E7B7E8277FFCF7878B1B1B1B1B1B1B1A05555555597838A7D7C507B7B
+          7B73C0C0D86D9F6A6869A49CA2CFD0CF94AFB1B1B1B1B1B1B1B1B1B1B1B1967C
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B070F21210D21210D210D210D20200E241516C1B1B1B1
+          B1B1B1B1ADAEA8A8AEB1B1C6151414240A23220E222213808A518C848F91D3D4
+          86D49494A9B1B1B1B1B1B1B1B1B1B1A055555B7C7B7B7B80848B7787CBCBB1B1
+          B1B1B1B1B1AE9855555555A977D18FF7828251D5D58CF7E6EEEB9394C3CD8686
+          86B3B1B1B1B1B1B1AE98555555555C7C7B7B7B80848B7787CBCBB1B1B1B1B1B1
+          B1A89555555555AFCFCF9493D3D3929172858482818B83848E90919193D08686
+          86B9B1B1B1B1B1B1ADA055555555557D7B7DD5908594CBCBB8B1B1B1B1B1B1A0
+          55555555A990F7518A7F7D7C7C7C7C7D7E7E80FDAC8472D293D0CFD493A9B1B1
+          B1B1B1B1B1B1B1B1B1A85C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507F1B210D220D220D212221
+          0D210C202224151616B1B1B1B1B1B1B1B1AEA8A8AEB1B1B8E015151414142323
+          0E23181BD582848F77D3CF86D49493C5B2B1B1B1B1B1B1B1B1A8555555555D50
+          7B7B7B80838B7787CBCBB1B1B1B1B1B1B1AE9855555555A9D1DDFFFFFF8C8080
+          FD8BD5828D909294D9CFCFCFBFB1B1B1B1B1B1B1A855555555555D7C7B7B7B80
+          838B9178CACAB1B1B1B1B1B1B1A89555555555AFCF86CF9493659C9DA49D9C9C
+          9C9C6565A2C5CF8688CDD0D0D0B1B1B1B1B1B1B1AE98555555555B7C7B7C8B8F
+          F7D3CBCCB9B1B1B1B1B1B1A895555555B493D2FF8D838C807E7F7F8A8B81D582
+          8D72D29386CFD49493B3B1B1B1B1B1B1B1B1B1B1A0555D507B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B501B0D21210D21210D210D21212109200A141516BAB1B1B1B1B1B1B1ADAEAE
+          ADB1B1B1B91616151515140A24240A041B85DDD294D986D4949393B4B1B1B1B1
+          B1B1B1AD985555555555A77E7E7D7B80828B77877878B1B1B1B1B1B1B1AE9855
+          555555A99493939392858283F7848EDD9193CFD9CF9494D4A9B1B1B1B1B1B1B1
+          A8555555555597F5DFF4DCF2E6E5D3CBCACAB1B1B1B1B1B1B1A89855555555AF
+          939393939184828C8C82A49C6565A2A294CFCDCC7887CDCDB5B1B1B1B1B1B1B1
+          A855555555555C7C7B7C8A848CD2CDCAB9B1B1B1B1B1B1A898959598A1D0CF93
+          929172D58A718AFD818C828D90D294D9CF949493A9B1B1B1B1B1B1B1B1B1A855
+          55555E507B7B7B7C7D7D7D7D7D7D7D7D7E7E7F7FFC8A8A8A7D7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B13210D22210D22210D220D210D20200E2415
+          1616B1B1B1B1B1B1B1B1ADADADB1B1B1B1B91616161615151514141414D4CFD0
+          CDD0D9CFD494B4B1B1B1B1B1B1B1ADA055555555555C507B7B7B7B808C8B7787
+          7878B1B1B1B1B1B1B1AEA055555555B587878787869493939394D486D087D086
+          D49494DBB1B1B1B1B1B1B1AEA055555555555E507B7B7B808C8B77877878B1B1
+          B1B1B1B1B1A89855555555B7CDCDCDD0CF93939393939494D4CFC3D9CD7888D0
+          86D4D4BFB2B1B1B1B1B1B1B1A85555555555976DC9C99FE5689D86CAB5B1B1B1
+          B1B1B1AEA0A0A0A8AEB5CBD086CF9391728E8D8D8E7277929486D086D49493DB
+          B2B1B1B1B1B1B1B1AE9555555555627B7B7D51858E8E8F8F8F8F8F8FD192D393
+          D4CFD9CDCDCD7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1E0D21210D21
+          210D21210D21210C200C23141516BAB1B1B1B1B1B1B1B1ADB1B1B1B1B1B1B8E0
+          1616161616161616161687CDD986CFCFC5B4B1B1B1B1B1B1B1B1A85555555555
+          555E507B7B7B7B80818B77877878B1B1B1B1B1B1B1AEA095559598B775757575
+          75BCBCBCCACACCCB87CDD0C3D494DBB2B1B1B1B1B1B1B1A89555555555597C7B
+          7B7B7B80518B77877878B1B1B1B1B1B1B1AEA0555595A0B6757575BCCACB7878
+          78787878CBCCCC7887CDD9CFD494DBB3B1B1B1B1B1B1B1AE9855555555555E50
+          7B507D8B7EF794CBB6B1B1B1B1B1B1ADA8A8A8ADB1B8B675CACC87D9CFD494D4
+          D4CFD987CDD086CFCFD4BFB3B1B1B1B1B1B1B1A855555555555B7C7B7B7B7B7B
+          7B7B7B7E7E7E7D7E8B84DD91D394CFD9CD887B7B7B7B7B7B507D7E7E7E7D7C7C
+          7C7C507B7B7B12210E210D220D210E21210D210D20200E24141616B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1BA16161616161616161616D0D986CFAFB3B1B1B1
+          B1B1B1B1B1A89855555555555C507B7B7B7B7B808B8B77877878B1B1B1B1B1B1
+          B1AEA89898A0A8B7757575BCCCCBCBCBCBCCCCCB888787D0B0B4B1B1B1B1B1B1
+          B1B1ADA055555555555C507B7B7C8A8D8F85D2877878B1B1B1B1B1B1B1AEA098
+          98A0AEB6757575BCCC787878787878787878788887CDD986CFAFB2B1B1B1B1B1
+          B1B1B1A85555555555597C7B7B7B7C7F7B8B92D0BCB8B1B1B1B1B1B1AEA8AEB1
+          B1B1B8B77575BCBCCACACCCB788887CDD0D986CFD4AFB2B1B1B1B1B1B1B1AE98
+          555555555597507B7B7B7B7373537068A5686A6A68A39D65A2C5C3D9CD788484
+          8484859091D2D2D2D2D291D18FD57E7B7BF3120D21210D21210D210D220D2121
+          2009200A141516C1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1BAC116161616
+          161616CAB0A9B3B1B1B1B1B1B1B1B1B1AE985555555556565E74DEDEDEDEDE80
+          FD8B77877878B1B1B1B1B1B1B1ADA8A0A8AEB1BAB6B6B6B6B7B7B7B7B7B7B7B7
+          B0B5B9B3B1B1B1B1B1B1B1B1B1B1A895555555555599929190DDDD908FF7D288
+          7878B1B1B1B1B1B1B1ADA8A0A8ADB1B7B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7
+          B7B0B5B9B2B1B1B1B1B1B1B1B1B1AE9855555555555D745353536D71737DFFD4
+          CCBAB1B1B1B1B1B1ADAEADB1B1B1B1B1B9B7BCBCCACACCCB788887CDD0D9C3AF
+          B4B1B1B1B1B1B1B1B1B1A05555555555599E7B7B7B7B7B7B73669E686969696B
+          9D65A2C5D4BFC3D087787B7B7B7B7B7B50505050507E7E7E7B7B7B7B7BF31122
+          0D21220D2122210D21210D210C20200E24141516B9B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B8B9B9B9B9B8B1B1B1B1B1B1B1B1B1B1B1B1AEA0555555
+          5556565D7474676767709E6869A3A278CB78B1B1B1B1B1B1B1B1AEA8AEB1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AE985555555555
+          5A92D2D1DD8F8EDD858C91887878B1B1B1B1B1B1B1ADA8A8AEB1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA05555555555
+          555E6D6868686B72858ED2CF88BCB1B1B1B1B1B1B1ADB1B1B1B1B1B1B1B1B1B9
+          B5B5B7B7B7B7B7B5B5B9B1B1B1B1B1B1B1B1B1B1B1A855555555555597746D6D
+          6D6D6D6CA569A3A49DA4698383F7848D8DFD7D7D7E7F7B7B7B7B7B7B7B7B7B7B
+          73746C6C7074737373F1110D210D21210D210D21210E210D212109210E241415
+          15B8B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1AE985555555556565B9E50507D7E7F8C8E91D292D4CABCCAB1B1
+          B1B1B1B1B1B1AEAEADB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1AEA0555555555555977FF4EAE7EAEAF2F2E8E178CCCBB1B1B1B1B1B1
+          B1B1AEAEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1ADA85555555555555C507B7D7D7ED58D8383FFD3D9CABAB1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          A85555555556565A6281858E8E8E8E8FD1777791777284D5D5D5D5D57F7C7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B508080807F7F7F7F070F21210E210D220D210E
+          21210D21210C2021220A241415E0B1B1B1B1B1B1ADADADB1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A8985555555556565960507B7B7B7B
+          7B7B7B8BD5D5D288CCCBB1B1B1B1B1B1B1B1ADADB1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA05555555556565B7C7B7B7B7B7B7BF1
+          EAE7E178CCCCB1B1B1B1B1B1B1B1ADB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA0555555555556566082E6E5F2E6EEE1
+          EDEDE193D988CAB8B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1A0555555555656565E507B7B7B7B7B7B7B7B7E8BFD
+          7EF9F84C4C4C4C4C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7E82828CD5D5D5
+          D5020F210D210D2121210D21210D210E0D210C200D220A241415C1B1B1B1B1B1
+          B1AEAEAEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AEA0555555
+          555556565960507B7B7B7B7B7B7B7B808A8B7787CBCCB1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1ADA89855555555
+          56565660507B7B7B7B7B7B8AFD8192CBCACAB1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A89855555555
+          555656978C828CFD7DEAE8E9E8E8E8E6E1C5C3B5B1B1B1B1B1B1ADADB1B1B1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AE98555555555656569750
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7E7E7E7E7E7F
+          E8E9E6EEEDEDEDEEE5E9E8E8E81B210D2221210E210D22210D22212121210D21
+          210E23230A1415C1B1B1B1B1B1AEA8A8A8AEADB1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1B1B1AEA05555555555555656595E507B7B7B7B7B7B7B7B7B808080D1D0
+          78CBB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1AEA09855555555555656565E507B7B7B7B7B7B7B808080D1CDCBCBB1B1
+          B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1
+          B1B1B1AEA89855555555555556565C6A6A6A6A6A9F6D6D6D706F8184D192D3D4
+          B5B1B1B1B1B1AEA8AEAEB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AE
+          A055555555555656565D507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7BD5D5D5D5D5D58C8C838F77D292D2DD848A80801B21210D210D21
+          0D21210D210D210D220D21210C210E230A241414E0B8B1B1B1ADA8A8A8A8A8A8
+          A8AEB1B1B1B1B1B1B1B1B1B1B1ADA8A098555555555555555656589A07070706
+          07070707070707060606E4D9CACAB1B1B1B1B1B1A8A8A8A8A8A8A8A8A8AEAEAE
+          ADADADADADADADAEAEAEA8A8A0A0985555555555555556565697070707070707
+          070707060606E4D9CACAB1B1B1B1B1B1A8A8A8A8A8A8A8A8AEAEAEAEADADADAD
+          ADADADADADADADADAEAEA8A8A0A098555555555555555556565B060606060606
+          060707070707070702698FD294B9B1B1B1B1AEA8A8A0A8A8AEB1B1B1B1B1B1B1
+          B1B1B1B1B1B1B1B1AEA0985555555555555656565D507B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C7C7C7C7C7C7C7C8084DDDD85
+          FD7D7B7B7B130D21220D210E21210E21210E21210D210D21210C2122220A2324
+          14E0B3B1B1B1AEA8A0A0989898A0A0A0A0A8A8A8A8A0A0989555555555555555
+          5555555656B303100F0F0F0F0F0F0F0F0F0F0F18180F04151616B1B1B1B1B1A0
+          5555555555555555555555555555555555555555555555555555555555555555
+          55555656C7100F0F0F0F0F0F0F0F0F18180F04151616B1B1B1B1B1A055555555
+          5555555555555555555555555555555555555555555555555555555555555555
+          55555656B303100F0F0F0F0F0F0F0F0F0F0F0F0F1005D58DD1D3A9B1B1B1ADA8
+          A0A098989898A0A0A8A8A8AEAEAEA8A8A0A09855555555555555555555565697
+          E8DF7B7B7B7B7B7B7B7B7B7C7D7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1321210D2121210D210D210D21210D
+          220D21210D210D220E220E230A2414C6B8B1AEA8A0A098955555555555555555
+          55555555555555555555555555555559C70E22220D2122210D2122210D210D22
+          220922141516B1B1B1B1AE555555555555555555555555555555555555555555
+          5555555555555555555555555556A1E30E21210E2121220D21220D2222092214
+          1516B1B1B1B1AE55555555555555555555555555555555555555555555555555
+          555555555555555555555555555556C72222220D2121220D2121210D22210C21
+          2122DFFD828F91AFB2B1B1A8A8A0989555555555555555555555555555555555
+          5555555555555555565AAF9494D3D290F7807E8AFD51F7F7FD7E7D7D7D7D7B7B
+          7B7B7B7B7B7B7B7B7B7BD4D4D494D3D29085FD7D7B7B7B7B7B7B7B7B7B120D22
+          210D220D21220D21220D21210D21220D2121210D21220E22230A242404C7AEA8
+          A8A09895555555555555555555555555555555555555555555555D621B21210D
+          210D210D210D210D21210D220C200B231414B1B1B1B1A0555555555555555555
+          55555555555555555555555555555555555555555555555598C70F220D210D21
+          0D210D210D210D220C200B231414B1B1B1B1A055555555555555555555555555
+          55555555555555555555555555555555555555555555555555B9EF220D210D21
+          0D210D210E210D210D210D210D221B7D7F81838F9CA9ADA8A8A0989555555555
+          5555555555555555555555555555555555555558979CD2D1FF4DFD7C7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B86CFD4D4D494939277D1
+          D1FF828A80808080F4120D210D210D21210D21210D210D22210D210D210E210D
+          220D22220E220E230A2404C7AAA0989555555555555555555555555555555555
+          555555585D625050F11217261719172601260317032603171917110F1A04B1B1
+          B1A8555555555555555555555555555555555555555555555555555555555555
+          5555A6C7E3170F012617190F1703170326012603170117012704B1B1B1A85555
+          5555555555555555555555555555555555555555555555555555555555555555
+          5555A1C701032601260F110F26012617110F111719171917110F11DE7C7E8081
+          828DBBA9A1A0989555555555555555555555555555555555555555555558979C
+          9192D393D3D2D1D190DD8F8582D551807C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7F7F7E7E51848FFF8F8F8F8F8FE611210D22210D220D21220D
+          21210D210D22210D21210D2121210D22220E22181823230A24C6B9A055555555
+          555555555555555555555555A1B9C722027F507B7BDEF1F1F1F1F1F1F1F1F1F3
+          F3F3F3F3E22525F3E9E5B1B1A898555555555555555555555555555555555555
+          5555555555555555555B5C5D97A7F2E6EEEDEBEBEBEBEDECE6E5F2F2F2F2F2F2
+          E7DA25F3E9E5B1B1A89855555555555555555555555555555555555555555555
+          55555555555555555596965D97BBE6E6E6E6E6E9E7EAEAEAE7F1F1F3F3F3F3F3
+          F3F3F3F3F3F3F37B50507C7D7F8A518284995D5A555555555555555555555555
+          5555555555555A5D9A8C84FFD1929394D49494949494D4D4D4D49392778F8451
+          7E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B536C9F9F6A69A49C65D2D2D2D2D2
+          EE110E21210D21210D210D210E21210E21210D22210D220D210E210D21220D1E
+          12100E230E23230AE3C7C7B3B3A155555555A6B3B9C7C7EF22220E210F008E8E
+          85F78E8F8F8E858D84848D848A7C7C7CBD7A7A897F7F8080808080818D8E8E85
+          858585858585858E8D828C8CFD8080807F7F7F7E7D7C7C50507D824DF78DFFFF
+          FFFFFF85FD7D7C7C7C7C7C7CBD7A7A897F7F8080808080808080808080808080
+          808080808080808080808080808080807F80F7858F8E858D8D8D84FF77929292
+          92D39393D39277728F8F8F8F8F8F8E8C7F507B7B7B7B7B50507C7D7E7182A49D
+          BB99975D96965A5555555558965C5D975E627C7C8C8D729090D1779292929292
+          919192D3D392778F817D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8C
+          8282838ED192939291D1D1D1021121210D220D2122210D21210D210D210D2121
+          0D21210D21210D210D2121131F1E22220E220E220E23230E23230E23220E220E
+          220E220D220D21210D19E1EBEBEBEBEBEBEDECE5E9E9E5E6F2D5517F7C7A7A76
+          7B7D7B7B7B7F82FF909090FFFFFFFFFFFFFFFF90FFF74D4D817D7B7B507E807F
+          7E7E7E7E80828F848282F7F7F7F782807C7B7B7B7B7B7B7B767A7A767B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73D8C9C9C9C99EC8DCC2C2
+          C2C2C8C8C8C9BE679F8C828D6BA4A46B6BA3A3696969696969696971747B7B7B
+          7B7B7B7B7B7B7B50507C7C7D7E7E7F7F7F7F7F7F7F7F7E7E7D7C7C50507B7B53
+          6DACA569696969A49D9C9C9CA4A3F7848483828A7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B507F828F8F8FFF90919291FF8DF782060F0D220D21210D
+          210E21210E210D2221220D210E210D21220D220D21210D13251F11210D212121
+          210D21220D220D210E210D2221210E2121210D210D2113A49D9D9D9D9DA4A369
+          696968FDF54C4C7B7676767B7B7B7B7B7B7DFE8EDD90D1D2929292929292D2D3
+          92D2D2D29172A36A6C6A6A6D7474BEBEBE6770747B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7676767B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7D82848D8D8D8FD177777777D18F8E8E8E85858E8FFF909090DD8E838C8C8C
+          8C8C8C8C8C8CD57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74679E6C68646161616161646464646464
+          6A676E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF5F5F5F5F57D7E7B
+          7B7B7B7B1F0F210D210D21210D210D210D21210D210D21210D21220D21210D21
+          220D21137B7B070F210D220D210E210D2121210D2121210D210D210D210E2122
+          0D210F1B8D85858585858D8EDD90858C8A2A7E7C50767B7B7B7B7B7B7B7D8282
+          8BFD828585838383838385ECEE72DDFF2DFE4629DFF37B7B7B7BDADADADA737B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B89767B7B7B7B7B7B7B7B7B7B7B7B7B7D
+          818C8C848E8FD1D1D1908F83838485858E85F68B8B81818A7E7D7B7B7B7B7B7B
+          7B7D8A82F7F7F7827F7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7C7C7C7C7D808B807D507B7B7B7B7B7B7B7B7B7B7B7F8C8D90
+          90D1D17777777777777777777790858B7D7B7B7B7B7B7B507FD58E90D2927B7B
+          7B7B7BDEF3F3F3F3F3F3F3DE7B7B7B7B1B210D22210E210E21210E21210E210D
+          22210D22210D210D210D22210D210D1E7B7B7B1B21210D21210D21210D210E21
+          0D220D210E21210E21210D21210E210F0750505050507C8A8DFF2B3535354343
+          467C7C7C7C7C7C7D818EA4696A6D6D6D6E666666665235303A38382F342F2F2F
+          38383A3B3E3DC8DCC2E7DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B897B7B7B
+          7B7B3639393939393B4C7B8AFE85A4E41E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
+          1E13D87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1B1E1E1E1E1E1E
+          1E1E1E1E13087B7B74737374709E9E9E9E9F64636363636363BB63A56A9F7170
+          747B7B7B7B7B7B507F828FD1777792D3D3D3D3939393939393D3E1EEE6DC7D7B
+          7B7B7B7B7B7B7B7B7B7B7B736EBE67679B9B9B9B9B9B9B676FC06F70130D210D
+          21210D210D21210D2121210D210D210D21220D21210D210D21220D127B7B7BF3
+          1E0D210E21210D22210D21210D21210D210D21210D220D210D2121210FF17B7B
+          7B7B7B7B6FD874393F343F342F3E7FD5F7F7848F779291DD8DF7F78351FDFD46
+          3A2F3F31323132313231323132313231313F383935297E7C7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3931323132313E7B7EFDF2E5EC130F0D21
+          21210D21210D210D22210D21210D11F37B7B7B7B7B7B7B7B7B7B7B7B7B7B737B
+          7B7B7B7B7B1F0D0D21210E210D21210D21117B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDFDFDFEADC
+          E8E8E8E8DCE77D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B666666BEBEBEBEBEBEBE
+          BEBEBEBEBEBEBEC913210D21210D2122210D220D210E210D22210D22210D2121
+          0E21210E210D21127B7B7B7B1D1921210D22210D210D210E21220D210E21210E
+          210D2121210E210D2211F37B7B7B7B7BC0CE7B493F323132313F367BF8F8F87E
+          51848483518B8B8B807C482F3132313231323132313231323132313231323132
+          333439417B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C2F323132
+          313F417B7C808A8C8EE4110D220D210E210E21210D21210D22210D26057C7070
+          6D6D6D6D6D68696969A56C6F7B7B7B7B7B7B2122210D210D21220D21210DF37B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1221220D22210D210D21210D
+          21210D21210D21210D21220D210D2121210D21127B7B7B7B7B050D210D210D21
+          220D21210D210D21210D21210D210E210D21210D212113E7FDFDF4F57B7B7B7B
+          41323132313234507C5050706A69A3A3A3A3A3A3684F40313231323132313231
+          323132313231323132313231323132332F3B858FFF908F8F8F8ED57F7E7E7E7E
+          7E7D7B7B7B7B7B7B3634313231323449706C6C6CA56BEC1E0D21210D21210D22
+          0D210E210D21220D0F1BD584FF7272729091D2D2D29190848A7E7C505050130D
+          210E21210D210D210E21077B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B73706D6D7074537B7B7B7B7B7B7B7B7B73737B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          120D210D210D220D21210D22210D220D210E210D220D210D21210D220D222112
+          7B7B7B7B7B7B1321210D22210D21210D210D22210D22210D22210D21210D2122
+          0D210E13FF8F8FF77E7B7B7B7B3E3132323132347C7B7B7B7B7B7B7B7B7B7353
+          533E3231323132313231313231333F3F343F343F3F3F3331323231323132333B
+          8CFD7D7C7C7C507B7B7B7B50507B7B7B7B7B7B7B7E413F313231322F47777790
+          91D393921B0F0D21210E2121210D210D21210D210D211181848D8D8D8EFF90D1
+          D1D190858C8C8C8282828B212121210E21210E21212111DE7B7B7B7B7B7BDEDE
+          DEDEDEDEDEDEDEDEDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDEDEDEDE
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B507C7C7C7C7C7C7C7B7BF311210E21210D21210E210D210D21210D21210D21
+          210D22210D22210D210D21127B7B7B7B7B7BF11121210D21220D210E21210D21
+          0D210D210D21220D21220D210D21210F1FFAF9F87B7B7B7B7B7B3A3131323132
+          3A7B7B7B7B7B7B7B7B7B7B7B7B3B313231323132313233403B364C7B7B7B7B7B
+          4C49413B402F33323132313240487B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          50503B3F323132313AF78D8385DD908F8E0219210D210D210E2121220D220D21
+          210D2211EE9191908E6969696969696A6D6AA56B6B6B6B120E210D210D21210D
+          220D21EC9C9C9D6B6B6B9DA4A4A4A4A46BA3F7F682817D7B7B7B5050507B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B746D68A5A5A5A5696B69A5E9190D21210D21220D
+          21210D2221210E21210E21210E21210D210D21210D2221127B7B7B7B7B7B7B08
+          0F0E210D210D2121210E2121220D21220D210D210D210D2121220D210F085050
+          505050505050502F32313231323E747B7B7B7B7B7B7B7B7B4C39323132313231
+          32343B4C7B7B7D518F90D1D1D1EEE6E8EA2A3E393432313231333A2E7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3A33323132313B7B7B7B7B74747474D813
+          0F21220D21210D210D2121220D210D210FE48F8F8E838B8A8A8A8A8A8AFD8B8C
+          7E7D7D1D0D21210D21220D210D21211B8F7272FFFF7277D2EBEBEBEBEBEBEDEE
+          EEECECE5E77DD87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7C8A8372779293D4CF7B7B507E7F7E7EFDFD8A808A828E
+          909090EE11210E210D210D210D22210D210D210D210D210D210D21210E210D21
+          0D210D127B7B7B7B7B7B7B7B0521210E21210E210D210D210D210D2121220D21
+          210E210D210D21210D11F17B7B7B7B7B7B7B7B493F323132313F8CFD7D7C7C7C
+          7C7C7C7C7C3E3132313231323F3E7B7B7B7B7B7B507C7C7D8A83E9DCF1F3F3F3
+          433A3F313231323936DEDEDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4939313231
+          323F417B7B7B7B7B7B7B7B7B05110D21210E21210D210D21210E21210E0F1B6B
+          6BA36A6C6A6AA56B72FF8D8A7C7B7B7B0F0D210E210D21220D210D12DE7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73706A6B9D6593D4C3D0879494
+          949494D392D18F4D8BFD4D8FD19177E4260D2121220D21220D210D210D21220D
+          2122210D22210E21210D22210D22210FDE7B7B7B7B7B7B7BD81E0D21210D210D
+          2122210D2221210E210D21220D21210E21210E21210D1EF57C5050505050507B
+          4131313231322F2E7B7B7B7B7B7B7B7B7B41313231323132382E7B7B7B7B7B7B
+          7B7B7B7B7B7B736666666666BE9F4439333231322F3E6D6A8181FDFDFDFDFD8A
+          7D7B7D7E7E7FFD51432F313231322F487B7B7B7B7B7B7B7B7BF11E0E210D210D
+          220D21220D210D210D210F121F0707070707070602020207070707070F212121
+          0D21210D210E2121F17B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7C6D7171717171717171719F9F70707054737B7B
+          736F6CA56B9D65A2C5BFCB8887D08686CFD493D2908FDDD1D292D2E40F210D21
+          0D210D2121210E21210E21210D210D21210D210D21210D21210D2121DE7B7B7B
+          7B7B7B7B7BF1190D210E21210D210D210D210D21210D210D210D21210D210D21
+          0E21211BDF7B7B7B7B7B7B7B7B3B32313231323A7B7B7B7B7B7B7B7B7B362F32
+          31323132397B7B7B7B737B7B7B7B7B7B7BD8EADCDCDCDCE7D8DEDE283B3F3231
+          323F3E7B7B7B7B7B7B7B7B7B7B7B7B7B7B89505050413F3131323138497B7B7B
+          7B7B7B7B7B7BD8130F210D22210D210D21210E21210D22210E210D21210D210D
+          210D210D210D22210D210E21210E21210D21210D1F7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B50505050507B7B7B7B7B7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B536E66665F5F5F5E5E5E97CC88CDD0D986CFD49392
+          91DD8E858EDD8E1B0F21220D2122210D220D21210D210D210D21220D210D2122
+          0D22210D220D210EDE7B7B7B7B7B7B7B7B7B070F21210D210D22210D2221210E
+          210E21210E21220D210E2121210D210F057C7C7C7C7C7C507B7B3A3231323132
+          3B7B7B7B7B7B7B7B7B7B3B323132313238536767676767676F6D6A69A36B6B6B
+          6B6B848C7C7B7B7B7B3E3F3132313F3B4C7B7B7B7B7B7B7B7B7B7B7373737373
+          536F3E3F323132313A6861649F6F7373737373C0060F21210D21210D220D2121
+          0D21210D210D22210D220D21220D21220D21210D210D21210D21210E21210E21
+          12DE7B7B7B50505050507C807F7F808A8AD5D5D5D5D58C8282828C8C8C8C8A7C
+          7B7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B73D8D8C9C9C9C9C9C9D8D89EC8C89E6D6D701E0D210D210D210D21210D220D
+          2122210D22210D21210E210D210D210D21210D21D87B7B7B7B7B7B7B7B7BDE13
+          0D22210E210D210D210D210D21210D21210D21210D210D220D21220D1907507B
+          7B7B7B507E51463F3132313233417B7B7B7B7B7B7B7B482F323132313F417C7F
+          7F7F8AD58C8283838383838383834DD57C7B7B7B7B7B3E313132313F3B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C3A32313231333B7C7C7C7B7B7B7B7B7B7B
+          7BF3190D210D2221210D210E21220D2121210D21210D210D21210D21210E210E
+          21220D210E210D210D21210D0F1D7EFDFD6869696969A36B69A5A5A56A6D6D9F
+          64646163A46B69A5A5A5A56A6C9F9F6D706F737373737B7B7B7B7B7B7B7B7B7B
+          73C0C9C9C9D8DE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D5050507B1E
+          210D22210D21210E210D21210D210D210D0D21220D21210D210E2121220D210E
+          DE7B747474747474747474D811210D21210D22210D220D21220D210E21210E21
+          0D22210D21210D210D19F17B7B7B7B7B7B7BF94931323132313F367B7B7B7B7B
+          7B7B7B3E32313231323A7B7B7B7B7DFD51515151D5D5D5D5D5D5817F7B7B7B7B
+          7B7B4C3B323132313F3E7B7B7B7B7B7B7B7ED58282D57F7C7B7B7B2E39323132
+          313F3E7B7B7B7B7B7B7B7B7B7B7B7B1B21210D210D22210D210D210E210D2221
+          0D220D21220D210E21210D21210D210D21210D21220D210D211B77917777EDE1
+          EDEDEDEEE5E9E8DCDE7B7B7B7B7BEAE9E9E981FD8B818B8A8A8A8A8A8A7F7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7373C0C8C8C8C8C8C8C8C8C8C8C8C87B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B1E0D210D21220D21210D220D21220D212221210D21
+          0D220D2121210D210D21210DDF8083F7F7F7F7F783D55151000D210D2121210D
+          2121210D21210D210D210D21210D210E210D222121211ED87B7B7B7C7F8AD58A
+          3531323132312F2A7F7F7F7F7C7B7B2E3932313231343D7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B492F323132312F367B507F808080FD8CF6
+          F6F68C8A7D7B7C7D3640323132312F3D8184D581818181FDFD807D7CF00F2121
+          0D210D22210D21210D210D210D21210D21210D210D21210D21210D220D21220D
+          21210E210D12C3D9C3D4C5C5A2659C9C6BA59F677B7B7B7B7B7CD5F2E6ECE6E5
+          E6EEECE5E5E5E5E5F2F2E8E8E77D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B120D22210D210D220D
+          2121210D210D210D210D22210D2121210D210E21210E210DD87C7D7D7D7D7D7D
+          7D7C7C7C7C1B0D220D220D210E210D22210D22210D2221210E21210D21210D21
+          0D2121137D7D7EFDD5D5D5D5823A3331323132397F7F7F7F7E7D7C7B2E41413B
+          3A3A3E2E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3A313231
+          3231397B7BF1DCE8E8E8E8E8E8E8E8E5E5E58EDD903C3F323132314047929292
+          92929277FF827E507BD811210E2121210D21210D21220D2122210D220D21210E
+          21220D22210E2121210D210D210D21212221BFD986CFD494D391DD8D8A7C7B53
+          706D6D6F6F709F6AA5A5686AA5D7D7C4C4C4C4E9EADFDF7DDE7B7B7B7B7BDFE7
+          7D7B7B7B7B507E7F7F7F7F7F7F7F7F7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7BDE11210D2122210D21210E210D22210D21220D210D21220D210E210D210D
+          21210D22D87B7B7B7B7B7B7B7B7B7B7B7B7B1121210D210D21210D210D210D21
+          210D210D210D22210D22210D220D2121137B7B7B7B7B7B7B7B7B393132313132
+          3B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B6E6E6E6E3032313231323F3EC9C2E5E5E5E5E5F2F68C8C8DFFDD90D1
+          9090303132313231392C8484848D84D57C7B7B7B7B7B7B1B0F0D220D21220D22
+          0D21210D210D2121210E0D210D0D210D0D210D220D2122210D220D210D2113D3
+          D3EBEDECE5DCF3E27B7B7BC0C8DCC2C86F53737353537373535353535353747B
+          7B7B7B7B7B7B7B7B7B7BDEF1F1F3F3F3F3F3F1F1F1F1F1F1F1F1F37B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7BF1110E210D210D21220D210D21210E21210D
+          210D22210D210D2122210D21220D210D087B7B7B7B7B7B7B7B7B7B7B7B7BF30F
+          0D2121220D21220D210E21210E210D2221210D210D210D2121210E210F077B7B
+          7B7B7B7B7B7B4C393132323132417B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C
+          7C7C7F808A8C838A7D7B7D7E7D507474747C6A81393132313231322F82858EF7
+          F7F7F7848DF7D551D5F78E8E84F7F73033323132313A2A7F7FFD51FD807C7473
+          7B737B7B071121210D210D21210D220D21220D210F111212121212121212110F
+          210D210D210D210E212112CFCFD49392D1858C807C7C7C7C7F7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6F9E9F9E676767676767
+          67676767747474737B7B94D3D2908ED57E7B7B7B7B7B7B7B7B7BF1110D21220D
+          210D210D22210D21210D220D21210D21220D210D0D21220D210D22211D7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B070D210D210D210D2121210D21210D210D210E2122
+          0D21220D210D21210D19F17B7B7B7B7B7B7B7B362F313132313F367B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737B7B7B7B74513A
+          323132313231322F4E9C9CD1D1D1D2D393D3D29085858E8E8585852D39313231
+          323F3E7B7B7B7B7B7B7B7B7B7B7B7B7B7BF3130F210D220D21210D21210D2121
+          12F36E6E6E9E61639D9C651121220D212221210D210D0FC3D9C3D4C5A2659D6B
+          A3A3A38484D57E7B7B7B7B7B7B7B7B7B7B7DDF6A6A69A3699FD86FD86D6D6C9F
+          69A4A4A4A469A5D5518A808080807F7E7B7B7B7B7B7B88CD86D4949392D1858A
+          7C7C7B7B7B7B081921210D21210D2121210D210D210D2121210D210D210D2121
+          21210D210D21210D087B7B7B7B7B7B7B7B7B7B7B7B7B7B7B130E21210D22210D
+          220D210E21210E210D21210D21210D210D21210D222111F37B7B7B7B7B7B7B7B
+          413F323132312F497B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B4C493B2F32313231323132313F2D9091919191D2D393D3D290
+          858D8D8D8D8D858F443831323132343D7B7B7B7B7B7B7B7B7B7B7B7B5353731F
+          192121210D220D210E210D2221121D737B7B6F6D7E7E801B0F210D210D210D21
+          220D21DB94D4D4D4CFCFCF9493939394949393D392D3D3D3D3D2D2EDEDEBDBC5
+          C5C5C5DBEBE4E4E4E4E4E1DBDBC5DBEBEDEC85F6F6848D8D8D84D57D507B7B7B
+          7B7BD494D391DD8ED57D7B7B7B7B7B7B7B7B1F0F210E210E21220D220D22210E
+          21220D220D22210E21220D220D22210E21220D211D7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7BDE110D22210D21210D21210D210D2121220D21210D22210D22210E21
+          0D2121137B7B7B7B7B7B7B7B7B3B33323132313A4C7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B2E363B3833323132313231323132313F
+          367C7D7D7D7D8A8DFF6BA56D7453535374747474743D3F3131323140497B7B7B
+          7B7B7B7B7B7B7C6A6A6A6A6AF01E0F21210D21210D21210D21211108737B7B7B
+          7B7B7BE21721220D210E210D21210D12D29394D4D4D4D4D4D4D4D493929177D1
+          9090FF8F8E517D7B7B7D719F9F9F9F9F6C6DC9C9DCF002E4E4E4E4E402C4F0F0
+          F0F0F0F0F0DCEADE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B050F
+          21210D21210D210D21210D21210D210D21210D21210D210D21210D21210D210D
+          087B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B080F0D21210D22210D22210D22210D
+          210D210E21210D210D210D21210D210F1B7B7B7B7B7B7B7B7B7B3A3F32313231
+          3B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7F7F7F7F7F80828E423C3940333132
+          31323132313231323132312F4C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B3E3F32323132392E7B7B7B7B7B7B7B507F848E8F8F8F8FE6130F0D21210E
+          21210E210D22212605E27B7B7B7B7B7B1E0F0D2121210D21210E210FE4779293
+          9393939393939392D18E82FD7E7D7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7BDEDEDEDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B13210D210D210D210D210D210D210D210D210D210D21
+          0D210D210D210D210D210D21086C6C54747B7B7B7B7B7B7B7B7B7B7B7B7B1B0D
+          220D210D210D210D210D21220D21210D210E21210E21210D21220D210F1F7474
+          5454737B7B7B2E39323132313F417B7B7B7B7B7B7B7B7B7B7B7B7CFD8D8E8E8E
+          8E8D353C383F313231323132313231323132313231323F3D7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C3B313132313F3A7B74537474747B7B7B6D
+          6C6C6C6C6C6CA505190D0D21210D21210D210D210F13E27B7B7B7B7B080F210D
+          220D210E21210D211B8E90D2D2D2D2D2D2D2D2D18EFEFD8A8B6A6A6A6C6D747B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B071E1E1E1E1E1E1E1E1E
+          1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1BE6D191D190D1D2D2
+          929190DDDDDDDDFFFFFF8E1E0D210D2122210E210D22210D210D22210D21210D
+          21210E210D21210E210FE6828B8A7B7B7B7B7B362F313231322F485050505050
+          7B7B7B7C7E80828FDDDDDDDD423A343231323132313132313231323132313231
+          32343D7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7D7D7D7D7B7B7B2E3A323132
+          313F3E7B7B7B507C5050507E8083F7848483858FEE1E210E210D220D210E2121
+          0D211EE27B7B7B7B8912210D21210D21210D212112E78BD583F7F783D58181FD
+          8A8080D5D58C84848484838C8080808080828383838280507B7B7B7B7D7E7E7E
+          7E7E7E7E7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5050
+          7B7B7B7B507B7B507C7FD58FD1D292929277FF7272726B6B9D9CA2A2A2659C9D
+          72A3A3A49C65A2A29292939394D3D2D2D2D2D2D1FFFF8FF20D21210D210D2121
+          210D21210E210D210E210D220D21210D220D21210D2119A46BA369717D7D80FD
+          353F313231323946824D4DF785828AD5D5D5E8E8E8DCE73E2F31323132313231
+          32313231323132313232312F3E2E7B7B7B7B7B7B7B7B7B7B507E828FFFFFFFFF
+          DDD19191FF827F7C452F323132313F3D7B507C2A7E7B7B7B7B8A51F78F9090D1
+          D2D2130F0D21210D21210D2221212112F37B7B7B7B1B0F210E21210E21210E21
+          0F0269696969A56C747B7B7B7B7B7B7B7BDEDFDFDFDFDFDFDFDFDFDFEAE8E9E9
+          E9E8EA7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B746C71547B7B7471808AD58C82838F77929394939277D1
+          D1D1D1DD8F8FFF72DDDDFF8451507B7B7B505050507C51D5848E8FFF909090DD
+          DDDDDDFF1B210E210D21210E210D220D121E260D2121210D21210D0F1E1B0D21
+          210E21128A7B7B7B7B7B7B7B7E3C3F323132313A479292929394949494949493
+          D392473F31323132313231313232313231323132343E487E7C7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7D8C82824DF784859077DD8DD58B8B433F323132312F497D7F7F
+          7E7B7B7B7B7ED58FFFFF8EFF909192DB17220D21220D210D210E212119ECD2D2
+          92ED1121210D210D210D210D2113777283807C507B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B508A8DFF8FF7D58080806AA5
+          A5A5696B9D65A294A2659D6B6B6B6B69A5ACD58D909191DD8D80507B7B7B7B7B
+          7B502A2A80FD807F7D7B7B7B7C7D7D7D7D11210D220D21210D212121211BF305
+          190D210D210D190673080E210D212121137B7B7B7B7B7D8185DD3A3132323131
+          94CF868686D9D0D0D0D986CFCFCFD43132313231323132323131323231393C8F
+          827F7C7C50507B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C808DDD7792A2A2659C9C
+          9C9C3C32313232312FA3696A6D737B7B7B7B7B7CFCFC7E2828F4828FEE110D21
+          0D2122210D210D210D0FE465659C1E0F0E2121220D21220D2112E7FD7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7C51D58C8CD57F7C7B7B7B505050507C7C507DFD7D7B7B7B7B7B7B7B7B7B7B7C
+          80FDFD8A8A7F7C7B7B7B507C7C7C2A2A2A7E7B7B7B7B7B7B7B7B7B7B7B7B0F21
+          0D21210D220D210E210F087B7308120F0F121D7B7BF30D21210D22210D05EAF4
+          E8F2ECEDEDE19239313132313394CFCFCFD9CDCDD9D9CFCFCFD4393231323132
+          3132313133403E2980807F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B8B82D551518B8051F78D8D843032313132312F90728D83838FD1D17272
+          EEEEEEECECEEEEEDEEE61B0F210D210D21210D22210D22067B7B1D11210D210D
+          210D210D210F077B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDEDE7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7BF8F8F8F8F97B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507E7E7E7E7E2A2A507B
+          7B7B7B7B7B7B7B7B7B7B1D0F210E21210D21210D210D121D7C5050F107D5FD7D
+          7DEA0D220D210D210D21008D858EDD909090D2D22F313231322F9291919192D3
+          92929177DD8D30313132313231323339367B7B7B7B7B7B7B7B7B7B7B7B7B507C
+          7C7D7D7C507C7FD5828282828282838585828A7F7F7FD58D729DA46939323231
+          313230D7C2C26163BBBBBB61A762C8C8C8C8C8C8676E6E0826210D210E21210D
+          2121210D1F73891221210E21210E21210D211B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8DFDCE8E8E8E9E9E9D55151D5848F8D
+          828A7F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7BF87B7B7BF8808A7D7B7B7B7B7B7B7B7B7B7B7B50130F210D210D220D21
+          22210D1E008D8D8DFFD1908E858E21210D22210D22210FF480808A807D7C7B7D
+          412F31323132404482FDACA5A5A5ACAC6A6A46333231323132313E7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7DD5828282D58A2A8AD58C8C8C8C8C82696B6BA36A70
+          5454706D6AA3A368AC2F31323231323D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7BD81E0F0D21210D220D210D220D131C13260D21210D21210D222112D8
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C
+          7C7C7C7C7C7C7C7C7C8A8DFF728F8F838A7C7B7B7B7B7B7B7B7B7CFD838A7C7B
+          7B7B7B7B7CDFEAEAEADFDFDFDFE8E9E9DCE7E7DCF2E5E5E9F47D7C7DFDF2ECEE
+          E1EBEBEB112121220D21210D210D210D1ED4D49493D3D2908F8D120D210D2121
+          0D21211E7B7B7B7B7B7B7B7B7B3E3332313231394C7B7B7B7B7B7B7B7B7B7B2F
+          3132313231324C7B7B535353535353535373737B7B7CFD8E90D1D18F82FD8AFD
+          FDFDFDFDFDFDFD8B8A7B7B7B7B7B7B7B7B7B7B7B7B363F313132313F497B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B050F210D2121210E2121210D121B
+          110D220D21210E210D210F077C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5050505050507C7FD582828E8F8E8EDD
+          9192939494D47B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B53747474546C6A6D6F70
+          6D6A6AA3A3A36B9D9C77728F8F8F85D580D58482828A7F7C7C80828A7D7C7C7D
+          8A848FFF8EF7D5F78FDD90D1D2D2D2D3EB19210D21210D220D21210F13EB9494
+          D3D2908E85DD021311210E210D210E211B7B7B7B7B7B7B7B7B4C3B3132313233
+          3A4C7B7B7B7B7B7B7B7B7B3D3F3231323132497B7B7B50505050505050507B7B
+          7B7F82DD91929291FF2B442C2C2CF784848484827F7B7B7B7B7B7B7B7B7B7B7B
+          7B7B413332313231402E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1D
+          12210E210D210D210E2121110F21210D220D210D21210E1B8383828A808AF7FF
+          DDDDDDFF8FFFFFFFFFFF827F507B7B7B7B7B7B7B7B7B7B7B7B7B7BDEDFDFE7E7
+          E7E7DCD5FE8C828282FD507B7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B747054535353746D6C6C6D6D6C6C6D6D6D6D747B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7BF8F9FA7EFAFAFA2AFD68686969686868050F21
+          0E210D21210E0F13E56B84F7D58BFD8AFD82858500131121220D210D0F077B7B
+          7B7B7B7B7B7B2E3A31323132343E7B7B7B7B7B7B7B7B7B7B3A33323132313E7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D7E7E7D7D342F2F2F4039457C7C7C7C
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B3A32313231323A807F7E7E7E7D7D7D7D7D
+          7D7D7E7E7C507B7B7B7B7B7BF3130D210E21210D210D220D210D2121210D2122
+          0D210D12C2A3A46B8F8FD1777777777777D2D29292D2908D80507B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B737373CE7FFD818A6A6868686A6A6A6A686D74747B7B
+          7B7B7B7B7B7B7B7B7B7B7B7D7D7D7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B50507C7C7C7C7C7C7C7E7FD5848E728E
+          8D4D828A7D7C898989731321210D21210D1113E27B507C7C7C7C7C7C7C7D8A84
+          8DF71C13112121210D0F1D7B7B7B7B7B7B7B7B4939313231322F417B7B7B7B7B
+          7B7B7B7B4C393332313234487B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B413331323132394C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4C39323132
+          3132308EF74D8C8BFDFDFDFDFD51F78F90D1DDF77F7B7B7B5074070F21210D21
+          0E21210D21220D210D22210D210D212605EDEBDBEBE1E1E1E1E1E1E1E1E1E1E1
+          E1EEE6E9E77B7B7B7B7B7B7B7B7B7B7B7B7B74C0C0C0BEBEBEBEC8C2DCC8C2C4
+          BB9CE1DBC5C5C594CF867BD8F4F4F4F4F4F4F4F4E7F2ECEDED9DD7D7C4686C54
+          737373737373737353737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7353709E9F6A
+          6A6A6A6A6A9F6AA56B9D656577DDFF84D57E7C505050D81121210D2219131CE2
+          E2E2E2E2737B7B7B7B7B89DEF3F1071F1312210D222111D87B7B7B7B7B7B7B7B
+          483F3132313240367B7B7B7B7B7B7B7B7B492F323132312F367B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B3F32313231323E7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B737033323132313F4272728584848484F78D7291D292D392D1
+          8F8281D54D4D85EC11220D21210D21220D21210D210D210E21210E2113929394
+          94949393939393D3D277D2D3D3D2DDFF8E8C7E7B5050507C7F7F80FD84DD908F
+          8E8E85828A80FD828C8C828C8B8B7F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B737B7B7B7B7B7B737B7B
+          53535353706C6C6A6A6AA5A5A5A5A5A5A56A9F9F9F6869A5716D6D70507B7B7B
+          7B7B7B08190E21210F111212121212121E067C7C7C7C061212111119110F2121
+          210D211EDF7E7F7F7F7F7F80D53E3132313231392E7B7B7B7B7B507B7B7BF939
+          313231322F35F78E8F8F8E827F507B7B7B7B7B7B7B7B7B7B7B7B3A3332313231
+          3F2E7C7C7C7C7C7C7C7B7B7B7B7B7C6D6D6D6D6A9F3632313231322F6C9F9F6A
+          6A9F675471696BA49C65659177D1D1D1D1FFDD77771321210D220D210D210E21
+          220D2121210D210D12EE92D29191919191919177FFF7F78DF7807C7C7DDE7BE2
+          F1F1F1EAE8E8E5ECEDEBEBEBEBEBEBEDEC858D8DF68C8CD58A7F7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D7D7E7F7F
+          8A8C8282828282828283F7F78DA3A568696B6B6B6B6969696969696969A56A67
+          737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B1321210D210D220D21210D212119077C
+          2ADF1B220D21220D21210D220D210E211B7C7FD582F78D858F8F303132313231
+          3A828A818590FF8D8484F7E539313231323430ECECE6E6E9EA7B7B7B7B7B7B7B
+          7B7B7B73737B3B3332313231323DDADADA737B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B3E3132313231404C7B7B7B7B7B7B507C7C7B7C7D7D7C7B7B7B7B7B7B7B7B
+          7B7B1F21210D21220D21210D21210E210D220D210F077B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B507E7F7F7F7F7FF4E9ECEEEDEDEDEDEEE6F2E9F2E5
+          E8E8E8E8E8E8DF7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B808C8283838383828C8C8C4D858F8F8FA4A4A4A36969
+          A4A4A4A4A4A4A4A4A46B696A6C6D7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B1E0D22
+          210D21210E21220D21211108507B130D21210D21210E21210D21210E21077B7B
+          7B507F82FF91D239323132313F3A86D0CD88CBCBCBCB88CD863932313231322F
+          30D1FF827F507B7B7B7B7B7B7B7B7B7B7B7C3931323132313239828C8C8DDD91
+          91919177FF8DF7F7F7F78DFFF78A803931323132313A7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BF31722210D21210D210E21210D21212121
+          0D137B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7DD58C8C8C8C8C8C8C8A807F7F7F7C7C7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73706AACA5A5A5A56A8080
+          FDFE8FEEEEEEE1E1EDE6F2F2ECEEEDEEEEEEEEEEEEE6E58DFFFF8D8D8D8DF7D5
+          7F507B7B7B7B7B7B7BF1110D21220D210D210D210E210D121D7313210D220D21
+          0D210D22210D2121210F1D7B7B7B7B7B7C818C4D34313231323F929394949494
+          94D4D49492913C2F32313132313F3B2E7B7B7B7C7C7B7B7B7B507C7C7F3B3132
+          31323132313891909091D3939494949493D3D3D3D3D3D3D3D290DDFF2F313231
+          32313E492E2E2E2E2E2E2EF82E2E502E2E2E4C7B7B7B7B7B7B7B7B7B7B130F21
+          0D21220D210D210E210D220D2112D87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8B4DF7F7F7F7F74DFE
+          8C8C8CD5D5D57B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B747C8A8A8A808A8C8E90D2D2D2D393939291919293939292929292
+          91FF8D4D4D4DFE83858E8583D5807F7F7F7F7F7F808A1F0F210D21210D21210D
+          21210D21121F130D21210D21210D21210D210D210D2119F37B7B7BD8F4E8E5E5
+          2B3F323132313FF6E88A7D7D8A8D8E854DD551433A3F3231313231323430424A
+          4A8E517E7F81D5352F323132313231323138EED7C4C4C4D7A43A323132313231
+          3231323132313231323132313231323132313231323131313131313131313448
+          5353737B7B7B7B7B7B7B071921210D21210E21210D210D21210F068181FDFD80
+          507B7B7B7B50507C8082F7D57F7B7B7B7B7B7B7B7B7B7B7EFD7F7F8A7D7B7B7B
+          7B7E82FF91D2D2D2D2919085FE8CD5FD8A8AF1F3F3D8DEDEDEDE747B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B706D6AA5696969696BA472A46B6B6B
+          6BA3A5A5848D8DD57F7E7E7E7D507DD58C8C8269A3636964649B9B9B9B9B9B9B
+          6261611B21210D21220D22210E21220D211912210E21220D22210E21220D2221
+          0E210D13D87B7B7B7B7B7B7B7B4133323132312F7B7B7B7B7B7B7B7BF9FA8A4D
+          8D42393F32313231323132313231323132313231323132313231323132398383
+          8C8A808080462F32313231323132313231323132313231323132313231323132
+          32323232323232323232322F69699F747B7B7B7B7B7B7BF3130F0D210D21210D
+          2221210D220D139C9C726B69716D6D6D6D6C6A6884FFFF8DD5507B7B7B7B7B7B
+          7B7B7B7F51517F7C7B7B7B7B7B7B7C818E90D1D1D1D19085FE8C8CD5D5D51E1E
+          1313DBDBDBE1E4EE8F827E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C
+          80828484848D8D8D8D8484848484F7848484F7517C7B7B7B7B7B7CD58C8C8C8C
+          8282AC8A7F73767676767353708A8AF11E220D210D210D21210D21210D21210D
+          21210D21210D21210D21210D2121210D1B7B7B7B7B7B7B7B7B7B3B3132313231
+          397B7B7B7B7CFD8D85858EFF85FEFE42393F3132313231323132313231323132
+          31323132313231323F3D7B7B7B7B7B7B7B7B362F313231323132313231323132
+          3132313231323132313132313131313131313131313131313877728D8C7F507B
+          7B507C7F8C1B260D21210E210D210D210D21119393D2D18EF7F7F784A3A3686C
+          706C9F9F6C537B73549E9F9F9E6F6E6666667B7B7B7B7B7B7B7B7B74747D8AFD
+          FDFDFD8A808080808080ECE6E6E6E6E6E6E585858D8CF47B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B507E7E7E7E7E7D7D7D7D7D7E7EDF6C9E9E9E67
+          537B7B7B7B7B53706D6D6D6D6D6D6D70705373737353706AA5A5A56802112122
+          210D210D0D210D0D210D0D210D0D210D0D210D0D210D0D210D0D210D0F1F7B7B
+          7B7B7B7B7B50503931323132313C828282FFD191919190858A7C7C8A4D353038
+          33313231323132313231323132313231323132343E737B7B7B7B7B7373737341
+          3F32313231323132313231323132313231323132323232323232323232323232
+          32323232333AA4A46B696A70706D6D6D6D6CF011210D210D210D210D210D0FDB
+          D3D2D1909192D39394D3D290DD9091919190727277929292778E8C7E7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6A6A6A6A6AC4D7EC9CEB
+          DBDBDBDBE1E4E4EC000000ECECECECE5E8EAD87B7BD8D8D8EAE5D7D7D7D7D7C4
+          A5A5A5A5C4C4C461649E6E73737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7C7F7D7F7D80050F210D22212221222122212221222122212221222122
+          21222122212221222126087B7B7B7B7B7D7D50492F32313231323D7C7C7D7D7E
+          FD82FD7C7B7B7B7B7B7B7B4B3D3E392F313231323132313231323132313F3A48
+          7B7B7B7B7B7B7B7B7B7B7B7B3E2F402F2F402F2F402F2F402F2F402F2F402F38
+          393939393939393939393939393939393939D4CFCF9493D2D190728D8C8A51E8
+          1B1E1E1E1E1E1E1E1E1E1EE4FFF7FDFD8DDDD1D29292D291919191919177FF8D
+          8D858DF78A7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B746A838FD1777777777777D190D1D177779177FFF78B7B7B
+          7B7B7B7B7B7B7BCECE737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C507C7C1B111111111111111111
+          111111111111111111111111111111111111111111111ED87B7B7B7B7B7B7B7B
+          2E36363636362E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73734C2E36413E39
+          3940402F4039393E3D497B7B7B7B7B7B7B7B7B7B7B7B7B7B7B2E2E2E2E2E2E2E
+          2E2E2E2E2E2E2E2E2E2E2E4C4C7BF5FD8DFF9192D3D4CFCFCFCF86D087787888
+          CDD9CF94D392779085D58A8080807B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F828FFFFF779293939393
+          93939393939277FF827E7B7B7B7B736E6E6E6E6F9F646161616161639D9DA48E
+          FFD1D1D1D2D3D3D29085F7F78FD19CA46BA47272A4A369AC6A6C6AA5A5A569A3
+          A56C7D7F7E507B7B7B50D8D87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7BDE7BDE7BDE7BDE7BF5F4FD8B84FDF57BDE7BDE7BDE7BDE7BDE7BDE7BDE
+          7BDE7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B4C4C4C4C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7C7F808C858E8E8E8E8585858584E9F2F2F2E9F47DDFE8F2E9E9E6EE
+          E1D394C594D3D393D4D4D4CFCFD4939292D2D190858C8A8080807C7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7C80828D8D8ED19293939393939494949392778F4DFD7B7B7B7B8686CFD493D3
+          92D277728D8D727791908EF78590908FFFD1D1D1908E85858E8F8F8E84858584
+          817D7D8A838C8DDD919191D29177DD854DD5D5D551517F7C7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7C7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73737373737373537474747474
+          7B7B507C7B7B7B7B7C7D808A8A807F7F7F7F7F7F7F7E7C7F82FF8FD57F7D507D
+          7F7F7F808A836B6BA49C659C6BA59FC2D7D7D7C4C4A5A5C2C2C9D8DEDE7B7BDE
+          DEDEDE7B7B7B507E7E7E7F82F784858585F78A7E7E518590D2D2D18F8E8E8D81
+          8A807FD5D5D5807F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C80F7FFDDDD909192929292D18F82
+          51FD8A8A807D8181FDFDD5D5D5D5518BFDFD51848FFF854D4DF7F74D4D4D4D82
+          828C8C8C8C8C8A7D7B7B7B7B7B7B7B7BF9F9FDF7FFDDDDDDDDDDFFFF8EF7518A
+          F9F87B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B5080F784848D858D8D858D817E8A81F785DD90DD8DD57D7C7C7C50
+          7C7C808C8E909085FED5FD8C8DFF9091D2D394CFD4D4D4949291909090909085
+          F68B807D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7D7D7D7D7D7C7B7B7B7B7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507D51D5D5D58C8C8C828D
+          8E728E858D8D8D8D848251802A2A7C7C7C7C507B7B7B7B7B7B7B7B7B7D7E7F82
+          DD779191919191919177FF8DD5517E7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8A828385DD9090909090DD9090
+          8F8E8E8E8EFE8A7B7B7B7B7B7B7B8AFE858F854D8C8CD58CFE848F9091929394
+          939277FF8D8585858585858D8DD580FDFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B50706D6D6CA5A5A5A5696969696968686868686A6C707C7C7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B8A51515151D54DF7F7F74D8CFD8A807C7B7C7F7C
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74
+          6A6868A3A49D9D9D9D9D9C9C9DA3A3A3A384837E507C7C7C7D81858E8F8E8382
+          828282828284729192D2D2778F4D51FD8AFDFDFDFDFDFDFD8A507B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7D8A8BD58D8585858DD5D5D5D5D5D5D5817E507B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73709E6262626262626161616163
+          6363636369696A70507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B808C8C8C8C8C8282
+          828282828CD58A80806AA56A70537353535353706D6D6D6D6D6D70537B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7C7E7F7F80828D82807C7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B5080836B9D9D9D9D9D9D65A2A2659CA4A49C65A29C
+          A4A3F7F76B9D9D9D9D6BA56A6A6A68686D6F549F6969A5717C507D7E7E7E7E7F
+          9F9F9F9F9F6C7473737373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C
+          7C7C7C7C7C7C7E7D7E7C7C7C7C7C7C7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BD8DE7B7B7B7B7B7B7B7B7B7B7B7B
+          7B746F6C696BA3A3A3A36969696969A3A3A36969A58CD57D7B7B7B7B7B7B7B7C
+          7F7F7F7F80807F7B7B7B7B7B7B7C7E802A2A507B7B7B7B7B7B7B7B7B507F8282
+          807C7B7B7B505050507C7C507B7B7B7B7B7B7B7B7B7B7B7B7BDED8D8D8D8D8D8
+          D8F4E5ECE6E6E6E6E6E6E5DC7D7B7B7B7D82838382FD7B7B7B7B6666737B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7DF4E7F47E7DFDD5D5D5D5D5D5D5D5D5D5D57F507B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDFE8E6E6E6E6E6E6E6E6E5E8
+          E7E77B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B50507B7B7B7B7B7B7C8AE5E6EEEDEDEDEDEDEEECECECEEEDEDEDEDEE
+          E5E88A7C7B7B7B7B7B7B7B507C507B7B7D7F7F7E7D7E7F7F7F7D8A80802A7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507C7D7C7D7D7FFD7D7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808080
+          807F7E507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7BC0C9C9C9706CA56B6B6B6BA4A4A4A4A46B699F7D7B
+          7B7B507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8AFDFDFDFDFDFDFDFD
+          8B8BFD7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7C7E8B8151D58C82828B8B817C7C7C7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B50808DFFDDDD9090D1
+          D2D291908FDD90D29292D2D18EF6FD7D7D7D7C507B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7C7F807F7F7F7F7F7F7F7F7F7F7E7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7C7FACA3A49C9C9DA4A4A4A4A4A4A4A4A4A46B69A59F7D7B7B7B7B7B7B7B
+          7B7B7B7B5050505050507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7D8A7D7D7D7D7C7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7E718181818181D5D584848D8D8B7E6D6C6D6F737B7B74747474745353
+          7B7B7B7353537B7B7B7B7B7B7B7B7B507ED585909192939394D4848D8D8D8D8D
+          8D8D8D8D8D8DD57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7C7C7C7C7C7D8AD5F7F74D4DF78DDD91919177DDFF8F8F8F8F85D5
+          8A80807F7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C808C8C8CD57D7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7D7D7D8A8AFDFD8B8B5151D5
+          AC9F9F9F6C707054737B7B7B7B7B7B73666666737B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6EBEBEBEBEBE67679F6469A4A4636161
+          6163BB9D77919C65659C9D9D6BA36A6D6D6AA561649F676F737B7B7B7B7B7B7B
+          7B7B7B7B7B7B7D8082F7F7F7F78D8D8D8D8D80507B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7F7F80D5828FD1
+          9292929292929292929291FF8D8CD5D57C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7D7F7F7F7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7BDEF5F4FDD5FE8D8F90919191919191929277FF8E8E8E8EA4A3696A6C70
+          537B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7C8A818C7E7C7C7E818DDDDDDDDD9090DD728D8C7F7B7B507C7C
+          7C507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C7D8A8A807B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7D7D7D7D7D7E7E7F518BFD8A8080807C507B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7BC0F1DCF0F00000E58D9091D2D27777D1D1D177D1
+          8E828BFDFD8B818A7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B507B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7BDEF37B7B7B7B7B7B7B7B7B7B
+          7B7BF3F1E7EA7D7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7353737373737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7C7D7D7D7D7D7EFD8B8B8B8B8B8BFDF480DF707074747474746F6D
+          7169A4A4A4A46BA369696982FD802A2A2A7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B73BDBDBDBDBD737373
+          737373737373737B7B7B7B7B7B7CD584DD9090907791919191D292D393939291
+          FF827F507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B735353535353737B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B507FF79091D2D2D2D2D2D2D2D2D2D2D2D290
+          858C807B7B7B7B7B7B7B7B7B7B7D828383838382828282D5802A2A2A2A7C7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7F82F7F7F7F7F7
+          F7F7F7F7F7F7F7827F507B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B
+          7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7C8C8ED1D29292
+          929293939393D4CF86CFD49392D1858A7C7B7B7B7B7B}
+      end
+    end
+    object Memo1: TMemo
+      Left = 29
+      Top = 272
+      Width = 322
+      Height = 100
+      BevelKind = bkTile
+      BorderStyle = bsNone
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clGrayText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      Lines.Strings = (
+        'VHA'#39's Office of Information, System Design & Development staff '
+        
+          'have made every effort during the design, development and testin' +
+          'g '
+        
+          'of this application to ensure full accessibility to all users in' +
+          ' '
+        
+          'compliance with Section 508 of the Rehabilitation Act of 1973, a' +
+          's '
+        'amended.  Please send any comments, questions or concerns '
+        
+          'regarding the accessibility of this application to EMAIL ADDRESS' +
+          ': '
+        'vhaoihdisection508@va.gov')
+      ParentFont = False
+      ReadOnly = True
+      TabOrder = 1
+    end
+  end
+  object lblSplash: TStaticText [1]
+    Left = 62
+    Top = 212
+    Width = 261
+    Height = 18
+    AutoSize = False
+    Caption = 'Computerized Patient Record System'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clGrayText
+    Font.Height = -15
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 0
+    TabStop = True
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Left = 8
+    Top = 8
+    Data = (
+      (
+        'Component = pnlMain'
+        'Status = stsDefault')
+      (
+        'Component = lblVersion'
+        'Status = stsDefault')
+      (
+        'Component = lblCopyright'
+        'Status = stsDefault')
+      (
+        'Component = pnlImage'
+        'Status = stsDefault')
+      (
+        'Component = Memo1'
+        'Text =  '
+        'Status = stsOK')
+      (
+        'Component = frmSplash'
+        'Status = stsDefault')
+      (
+        'Component = lblSplash'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSplash.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSplash.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSplash.pas	(revision 1676)
@@ -0,0 +1,42 @@
+unit fSplash;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmSplash = class(TfrmBase508Form)
+    pnlMain: TPanel;
+    lblVersion: TStaticText;
+    lblCopyright: TStaticText;
+    pnlImage: TPanel;
+    Image1: TImage;
+    Memo1: TMemo;
+    lblSplash: TStaticText;
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmSplash: TfrmSplash;
+
+implementation
+
+{$R *.DFM}
+
+uses VAUtils;
+
+procedure TfrmSplash.FormCreate(Sender: TObject);
+begin
+  lblVersion.Caption := 'version ' +
+                        FileVersionValue(Application.ExeName, FILE_VER_FILEVERSION);
+  lblSplash.Caption := lblSplash.Caption + ' ' + lblVersion.Caption;
+  lblSplash.Invalidate;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgery.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgery.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgery.dfm	(revision 1676)
@@ -0,0 +1,952 @@
+inherited frmSurgery: TfrmSurgery
+  Left = 468
+  Top = 224
+  Align = alClient
+  Caption = 'Surgery Page'
+  ClientHeight = 363
+  ClientWidth = 712
+  HelpFile = 'overvw'
+  Menu = mnuNotes
+  OnDestroy = FormDestroy
+  ExplicitLeft = 468
+  ExplicitTop = 224
+  ExplicitWidth = 720
+  ExplicitHeight = 417
+  PixelsPerInch = 96
+  TextHeight = 13
+  inherited shpPageBottom: TShape
+    Top = 358
+    Width = 712
+    ExplicitTop = 358
+    ExplicitWidth = 712
+  end
+  inherited sptHorz: TSplitter
+    Left = 64
+    Height = 358
+    AutoSnap = False
+    OnCanResize = sptHorzCanResize
+    ExplicitLeft = 64
+    ExplicitHeight = 358
+  end
+  inherited pnlLeft: TPanel
+    Width = 64
+    Height = 358
+    ExplicitWidth = 64
+    ExplicitHeight = 358
+    object lblCases: TOROffsetLabel
+      Left = 0
+      Top = 0
+      Width = 64
+      Height = 19
+      Align = alTop
+      Caption = 'Last 100 Surgery Cases'
+      HorzOffset = 2
+      ParentShowHint = False
+      ShowHint = True
+      Transparent = True
+      VertOffset = 6
+      WordWrap = False
+    end
+    object lblSpace1: TLabel
+      Left = 0
+      Top = 313
+      Width = 64
+      Height = 3
+      Align = alBottom
+      AutoSize = False
+      Caption = ' '
+    end
+    object cmdNewNote: TORAlignButton
+      Left = 0
+      Top = 316
+      Width = 64
+      Height = 21
+      Align = alBottom
+      Caption = 'New Report'
+      TabOrder = 0
+      Visible = False
+      OnClick = cmdNewNoteClick
+    end
+    object cmdPCE: TORAlignButton
+      Left = 0
+      Top = 337
+      Width = 64
+      Height = 21
+      Align = alBottom
+      Caption = 'Encounter'
+      TabOrder = 1
+      Visible = False
+      OnClick = cmdPCEClick
+    end
+    object pnlDrawers: TPanel
+      Left = 0
+      Top = 19
+      Width = 64
+      Height = 294
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 2
+      object splDrawers: TSplitter
+        Left = 0
+        Top = 291
+        Width = 64
+        Height = 3
+        Cursor = crVSplit
+        Align = alBottom
+      end
+      object lstNotes: TORListBox
+        Left = 14
+        Top = 289
+        Width = 121
+        Height = 97
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        Visible = False
+        OnClick = lstNotesClick
+        ItemTipColor = clWindow
+        LongList = False
+      end
+      object tvSurgery: TORTreeView
+        Left = 0
+        Top = 0
+        Width = 64
+        Height = 291
+        Align = alClient
+        Constraints.MinWidth = 30
+        DragMode = dmAutomatic
+        HideSelection = False
+        Images = dmodShared.imgSurgery
+        Indent = 19
+        PopupMenu = popNoteList
+        ReadOnly = True
+        StateImages = dmodShared.imgImages
+        TabOrder = 0
+        OnChange = tvSurgeryChange
+        OnCollapsed = tvSurgeryCollapsed
+        OnExpanded = tvSurgeryExpanded
+        Caption = 'Last 100 Surgery Cases'
+        NodePiece = 0
+        ShortNodeCaptions = True
+      end
+    end
+  end
+  inherited pnlRight: TPanel
+    Left = 68
+    Width = 644
+    Height = 358
+    ExplicitLeft = 68
+    ExplicitWidth = 644
+    ExplicitHeight = 358
+    object sptVert: TSplitter
+      Left = 0
+      Top = 309
+      Width = 644
+      Height = 4
+      Cursor = crVSplit
+      Align = alBottom
+    end
+    object pnlRead: TPanel
+      Left = 0
+      Top = 0
+      Width = 644
+      Height = 309
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 0
+      object lblTitle: TOROffsetLabel
+        Left = 0
+        Top = 0
+        Width = 644
+        Height = 19
+        Align = alTop
+        Caption = 'No Surgery Cases Found'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        HorzOffset = 2
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        Transparent = False
+        VertOffset = 6
+        WordWrap = False
+      end
+      object memSurgery: TRichEdit
+        Left = 0
+        Top = 19
+        Width = 644
+        Height = 290
+        Align = alClient
+        Color = clCream
+        Ctl3D = True
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        Lines.Strings = (
+          
+            'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRUSTVWXYZabcdefghijkl' +
+            'mnopqrstuvwxyz12')
+        ParentCtl3D = False
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popNoteMemo
+        ReadOnly = True
+        ScrollBars = ssBoth
+        TabOrder = 0
+        WantReturns = False
+        WordWrap = False
+      end
+    end
+    object memPCEShow: TRichEdit
+      Left = 0
+      Top = 313
+      Width = 644
+      Height = 45
+      Align = alBottom
+      Color = clCream
+      Lines.Strings = (
+        '<No encounter information entered>')
+      PlainText = True
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 2
+      WantReturns = False
+    end
+    object pnlWrite: TPanel
+      Left = 0
+      Top = 0
+      Width = 644
+      Height = 309
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 1
+      Visible = False
+      OnResize = pnlWriteResize
+      object memNewNote: TRichEdit
+        Left = 0
+        Top = 67
+        Width = 644
+        Height = 242
+        Align = alClient
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -11
+        Font.Name = 'Courier New'
+        Font.Style = []
+        ParentFont = False
+        PlainText = True
+        PopupMenu = popNoteMemo
+        ScrollBars = ssBoth
+        TabOrder = 0
+        WantTabs = True
+        OnChange = memNewNoteChange
+        OnKeyDown = memNewNoteKeyDown
+      end
+      object pnlFields: TPanel
+        Left = 0
+        Top = 0
+        Width = 644
+        Height = 67
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 1
+        OnResize = pnlFieldsResize
+        DesignSize = (
+          644
+          67)
+        object bvlNewTitle: TBevel
+          Left = 5
+          Top = 5
+          Width = 117
+          Height = 15
+        end
+        object lblRefDate: TLabel
+          Left = 237
+          Top = 6
+          Width = 97
+          Height = 13
+          Hint = 'Press "Change..." to change date/time of note.'
+          Alignment = taCenter
+          Caption = 'Oct 20,1999@15:30'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+        end
+        object lblAuthor: TLabel
+          Left = 426
+          Top = 6
+          Width = 148
+          Height = 13
+          Hint = 'Press "Change..." to select a different author.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          Caption = 'Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+        end
+        object lblVisit: TLabel
+          Left = 6
+          Top = 21
+          Width = 200
+          Height = 13
+          Caption = 'Vst: 10/20/99 Pulmonary Clinic, Dr. Welby'
+          ShowAccelChar = False
+        end
+        object lblCosigner: TLabel
+          Left = 331
+          Top = 21
+          Width = 243
+          Height = 13
+          Hint = 'Press "Change..." to select a different cosigner.'
+          Alignment = taRightJustify
+          Anchors = [akTop, akRight]
+          AutoSize = False
+          Caption = 'Expected Cosigner: Winchester,Charles Emerson III'
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+        end
+        object lblSubject: TLabel
+          Left = 6
+          Top = 43
+          Width = 39
+          Height = 13
+          Caption = 'Subject:'
+        end
+        object lblNewTitle: TLabel
+          Left = 6
+          Top = 6
+          Width = 115
+          Height = 13
+          Hint = 'Press "Change..." to select a different title.'
+          Caption = ' General Medicine Note '
+          Color = clCream
+          Font.Charset = DEFAULT_CHARSET
+          Font.Color = clWindowText
+          Font.Height = -11
+          Font.Name = 'MS Sans Serif'
+          Font.Style = []
+          ParentColor = False
+          ParentFont = False
+          ParentShowHint = False
+          ShowAccelChar = False
+          ShowHint = True
+        end
+        object cmdChange: TButton
+          Left = 580
+          Top = 6
+          Width = 58
+          Height = 21
+          Anchors = [akTop, akRight]
+          Caption = 'Change...'
+          TabOrder = 0
+          OnClick = cmdChangeClick
+        end
+        object txtSubject: TCaptionEdit
+          Left = 48
+          Top = 40
+          Width = 590
+          Height = 21
+          Hint = 'Subject is limited to a maximum of 80 characters.'
+          Anchors = [akLeft, akTop, akRight]
+          MaxLength = 80
+          ParentShowHint = False
+          ShowHint = True
+          TabOrder = 1
+          Text = 'txtSubject'
+          Caption = 'Subject'
+        end
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdNewNote'
+        'Status = stsDefault')
+      (
+        'Component = cmdPCE'
+        'Status = stsDefault')
+      (
+        'Component = pnlDrawers'
+        'Status = stsDefault')
+      (
+        'Component = lstNotes'
+        'Status = stsDefault')
+      (
+        'Component = tvSurgery'
+        'Status = stsDefault')
+      (
+        'Component = pnlRead'
+        'Status = stsDefault')
+      (
+        'Component = memSurgery'
+        'Status = stsDefault')
+      (
+        'Component = memPCEShow'
+        'Status = stsDefault')
+      (
+        'Component = pnlWrite'
+        'Status = stsDefault')
+      (
+        'Component = memNewNote'
+        'Status = stsDefault')
+      (
+        'Component = pnlFields'
+        'Status = stsDefault')
+      (
+        'Component = cmdChange'
+        'Status = stsDefault')
+      (
+        'Component = txtSubject'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = pnlRight'
+        'Status = stsDefault')
+      (
+        'Component = frmSurgery'
+        'Status = stsDefault'))
+  end
+  object mnuNotes: TMainMenu
+    Left = 600
+    Top = 304
+    object mnuView: TMenuItem
+      Caption = '&View'
+      GroupIndex = 3
+      object mnuViewChart: TMenuItem
+        Caption = 'Chart &Tab'
+        object mnuChartCover: TMenuItem
+          Tag = 1
+          Caption = 'Cover &Sheet'
+          ShortCut = 16467
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartProbs: TMenuItem
+          Tag = 2
+          Caption = '&Problem List'
+          ShortCut = 16464
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartMeds: TMenuItem
+          Tag = 3
+          Caption = '&Medications'
+          ShortCut = 16461
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartOrders: TMenuItem
+          Tag = 4
+          Caption = '&Orders'
+          ShortCut = 16463
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartNotes: TMenuItem
+          Tag = 6
+          Caption = 'Progress &Notes'
+          ShortCut = 16462
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartCslts: TMenuItem
+          Tag = 7
+          Caption = 'Consul&ts'
+          ShortCut = 16468
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartSurgery: TMenuItem
+          Tag = 11
+          Caption = 'S&urgery'
+          ShortCut = 16469
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartDCSumm: TMenuItem
+          Tag = 8
+          Caption = '&Discharge Summaries'
+          ShortCut = 16452
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartLabs: TMenuItem
+          Tag = 9
+          Caption = '&Laboratory'
+          ShortCut = 16460
+          OnClick = mnuChartTabClick
+        end
+        object mnuChartReports: TMenuItem
+          Tag = 10
+          Caption = '&Reports'
+          ShortCut = 16466
+          OnClick = mnuChartTabClick
+        end
+      end
+      object mnuViewInformation: TMenuItem
+        Caption = 'Information'
+        OnClick = mnuViewInformationClick
+        object mnuViewDemo: TMenuItem
+          Tag = 1
+          Caption = 'De&mographics...'
+          OnClick = ViewInfo
+        end
+        object mnuViewVisits: TMenuItem
+          Tag = 2
+          Caption = 'Visits/Pr&ovider...'
+          OnClick = ViewInfo
+        end
+        object mnuViewPrimaryCare: TMenuItem
+          Tag = 3
+          Caption = 'Primary &Care...'
+          OnClick = ViewInfo
+        end
+        object mnuViewMyHealtheVet: TMenuItem
+          Tag = 4
+          Caption = 'MyHealthe&Vet...'
+          OnClick = ViewInfo
+        end
+        object mnuInsurance: TMenuItem
+          Tag = 5
+          Caption = '&Insurance...'
+          OnClick = ViewInfo
+        end
+        object mnuViewFlags: TMenuItem
+          Tag = 6
+          Caption = '&Flags...'
+          OnClick = ViewInfo
+        end
+        object mnuViewRemoteData: TMenuItem
+          Tag = 7
+          Caption = 'Remote &Data...'
+          OnClick = ViewInfo
+        end
+        object mnuViewReminders: TMenuItem
+          Tag = 8
+          Caption = '&Reminders...'
+          Enabled = False
+          OnClick = ViewInfo
+        end
+        object mnuViewPostings: TMenuItem
+          Tag = 9
+          Caption = '&Postings...'
+          OnClick = ViewInfo
+        end
+      end
+      object Z3: TMenuItem
+        Caption = '-'
+      end
+      object mnuViewAll: TMenuItem
+        Tag = 1
+        Caption = '&All Cases'
+        OnClick = mnuViewClick
+      end
+      object mnuViewBySurgeon: TMenuItem
+        Tag = 4
+        Caption = 'Cases by &Surgeon'
+        Enabled = False
+        Visible = False
+        OnClick = mnuViewClick
+      end
+      object mnuViewByDate: TMenuItem
+        Tag = 5
+        Caption = 'Cases by Date &Range'
+        Enabled = False
+        Visible = False
+        OnClick = mnuViewClick
+      end
+      object mnuViewUncosigned: TMenuItem
+        Tag = 3
+        Caption = 'Un&cosigned Notes'
+        Enabled = False
+        Visible = False
+        OnClick = mnuViewClick
+      end
+      object mnuViewUnsigned: TMenuItem
+        Tag = 2
+        Caption = '&Unsigned Notes'
+        Enabled = False
+        Visible = False
+        OnClick = mnuViewClick
+      end
+      object mnuViewCustom: TMenuItem
+        Tag = 6
+        Caption = 'Custo&m View'
+        OnClick = mnuViewClick
+      end
+      object N1: TMenuItem
+        Caption = '-'
+        Enabled = False
+      end
+      object mnuViewSaveAsDefault: TMenuItem
+        Caption = 'Sa&ve as Default View'
+        OnClick = mnuViewSaveAsDefaultClick
+      end
+      object ReturntoDefault1: TMenuItem
+        Caption = 'Return to De&fault View'
+        OnClick = mnuViewReturntoDefaultClick
+      end
+      object Z1: TMenuItem
+        Caption = '-'
+        Enabled = False
+      end
+      object mnuViewDetail: TMenuItem
+        Caption = '&Details'
+        OnClick = mnuViewDetailClick
+      end
+      object N6: TMenuItem
+        Caption = '-'
+        Enabled = False
+      end
+      object mnuIconLegend: TMenuItem
+        Caption = 'Icon Legend'
+        OnClick = mnuIconLegendClick
+      end
+    end
+    object mnuAct: TMenuItem
+      Caption = '&Action'
+      GroupIndex = 4
+      object mnuActNew: TMenuItem
+        Caption = '&New Report'
+        Hint = 'Creates a new operative summary'
+        ShortCut = 24654
+        Visible = False
+        OnClick = mnuActNewClick
+      end
+      object mnuActAddend: TMenuItem
+        Caption = '&Make Addendum...'
+        Hint = 'Makes an addendum for the currently selected report'
+        ShortCut = 24653
+        OnClick = mnuActAddendClick
+      end
+      object mnuActAddIDEntry: TMenuItem
+        Caption = 'Add Ne&w Entry to Interdisciplinary Note'
+        Enabled = False
+        Visible = False
+      end
+      object mnuActDetachFromIDParent: TMenuItem
+        Caption = 'Detac&h from Interdisciplinary Note'
+        Enabled = False
+        Visible = False
+      end
+      object Z4: TMenuItem
+        Caption = '-'
+        Enabled = False
+      end
+      object mnuActChange: TMenuItem
+        Caption = '&Change Title...'
+        ShortCut = 24643
+        OnClick = mnuActChangeClick
+      end
+      object mnuActLoadBoiler: TMenuItem
+        Caption = 'Reload &Boilerplate Text'
+        OnClick = mnuActLoadBoilerClick
+      end
+      object Z2: TMenuItem
+        Caption = '-'
+        Enabled = False
+      end
+      object mnuActSignList: TMenuItem
+        Caption = 'Add to Signature &List'
+        Hint = 
+          'Adds the currently displayed report to list of things to be sign' +
+          'ed'
+        OnClick = mnuActSignListClick
+      end
+      object mnuActDelete: TMenuItem
+        Caption = '&Delete Report'
+        ShortCut = 24644
+        OnClick = mnuActDeleteClick
+      end
+      object mnuActEdit: TMenuItem
+        Caption = '&Edit Report...'
+        ShortCut = 24645
+        OnClick = mnuActEditClick
+      end
+      object mnuActSave: TMenuItem
+        Caption = 'S&ave without Signature'
+        Hint = 'Saves the report that is being edited'
+        ShortCut = 24641
+        OnClick = mnuActSaveClick
+      end
+      object mnuActSign: TMenuItem
+        Caption = 'Si&gn Report Now...'
+        ShortCut = 24647
+        OnClick = mnuActSignClick
+      end
+      object mnuActIdentifyAddlSigners: TMenuItem
+        Caption = '&Identify Additional Signers'
+        OnClick = mnuActIdentifyAddlSignersClick
+      end
+    end
+    object mnuOptions: TMenuItem
+      Caption = '&Options'
+      GroupIndex = 4
+      OnClick = mnuOptionsClick
+      object mnuEditTemplates: TMenuItem
+        Caption = 'Edit &Templates...'
+        Enabled = False
+        OnClick = mnuEditTemplatesClick
+      end
+      object mnuNewTemplate: TMenuItem
+        Caption = 'Create &New Template...'
+        Enabled = False
+        OnClick = mnuNewTemplateClick
+      end
+      object N2: TMenuItem
+        Caption = '-'
+        Enabled = False
+      end
+      object mnuEditSharedTemplates: TMenuItem
+        Caption = 'Edit &Shared Templates...'
+        Enabled = False
+        OnClick = mnuEditSharedTemplatesClick
+      end
+      object mnuNewSharedTemplate: TMenuItem
+        Caption = '&Create New Shared Template...'
+        Enabled = False
+        OnClick = mnuNewSharedTemplateClick
+      end
+      object N3: TMenuItem
+        Caption = '-'
+        Enabled = False
+        OnClick = cmdChangeClick
+      end
+      object mnuEditDialgFields: TMenuItem
+        Caption = 'Edit Template &Fields'
+        Enabled = False
+        OnClick = mnuEditDialgFieldsClick
+      end
+    end
+  end
+  object popNoteMemo: TPopupMenu
+    OnPopup = popNoteMemoPopup
+    Left = 540
+    Top = 304
+    object popNoteMemoCut: TMenuItem
+      Caption = 'Cu&t'
+      ShortCut = 16472
+      OnClick = popNoteMemoCutClick
+    end
+    object popNoteMemoCopy: TMenuItem
+      Caption = '&Copy'
+      ShortCut = 16451
+      OnClick = popNoteMemoCopyClick
+    end
+    object popNoteMemoPaste: TMenuItem
+      Caption = '&Paste'
+      ShortCut = 16470
+      OnClick = popNoteMemoPasteClick
+    end
+    object popNoteMemoPaste2: TMenuItem
+      Caption = 'Paste2'
+      ShortCut = 8237
+      Visible = False
+      OnClick = popNoteMemoPasteClick
+    end
+    object popNoteMemoReformat: TMenuItem
+      Caption = 'Reformat Paragraph'
+      ShortCut = 24658
+      OnClick = popNoteMemoReformatClick
+    end
+    object popNoteMemoSaveContinue: TMenuItem
+      Caption = 'Save && Continue Editing'
+      ShortCut = 24659
+      Visible = False
+      OnClick = popNoteMemoSaveContinueClick
+    end
+    object Z11: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoFind: TMenuItem
+      Caption = '&Find in Selected Document'
+      OnClick = popNoteMemoFindClick
+    end
+    object popNoteMemoReplace: TMenuItem
+      Caption = '&Replace Text'
+      OnClick = popNoteMemoReplaceClick
+    end
+    object N7: TMenuItem
+      Caption = '-'
+      OnClick = cmdChangeClick
+    end
+    object popNoteMemoGrammar: TMenuItem
+      Caption = 'Check &Grammar'
+      OnClick = popNoteMemoGrammarClick
+    end
+    object popNoteMemoSpell: TMenuItem
+      Caption = 'C&heck Spelling'
+      OnClick = popNoteMemoSpellClick
+    end
+    object Z12: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoTemplate: TMenuItem
+      Caption = 'Copy into New &Template'
+      OnClick = popNoteMemoTemplateClick
+    end
+    object Z10: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoSignList: TMenuItem
+      Caption = 'Add to Signature &List'
+      OnClick = mnuActSignListClick
+    end
+    object popNoteMemoDelete: TMenuItem
+      Caption = '&Delete Report'
+      OnClick = mnuActDeleteClick
+    end
+    object popNoteMemoEdit: TMenuItem
+      Caption = '&Edit Report'
+      OnClick = mnuActEditClick
+    end
+    object popNoteMemoAddend: TMenuItem
+      Caption = '&Make Addendum'
+      OnClick = mnuActAddendClick
+    end
+    object popNoteMemoSave: TMenuItem
+      Caption = 'S&ave without Signature'
+      OnClick = mnuActSaveClick
+    end
+    object popNoteMemoSign: TMenuItem
+      Caption = '&Sign Report Now'
+      OnClick = mnuActSignClick
+    end
+    object popNoteMemoAddlSign: TMenuItem
+      Caption = '&Identify Additional Signers'
+      OnClick = popNoteMemoAddlSignClick
+    end
+    object N8: TMenuItem
+      Caption = '-'
+    end
+    object popNoteMemoPreview: TMenuItem
+      Caption = 'Previe&w/Print Current Template'
+      ShortCut = 16471
+      OnClick = popNoteMemoPreviewClick
+    end
+    object popNoteMemoInsTemplate: TMenuItem
+      Caption = 'Insert Current Template'
+      ShortCut = 16429
+      OnClick = popNoteMemoInsTemplateClick
+    end
+    object popNoteMemoEncounter: TMenuItem
+      Caption = 'Edit Encounter Information'
+      ShortCut = 16453
+      OnClick = cmdPCEClick
+    end
+  end
+  object popNoteList: TPopupMenu
+    OnPopup = popNoteListPopup
+    Left = 500
+    Top = 305
+    object popNoteListAll: TMenuItem
+      Tag = 1
+      Caption = '&All cases'
+      OnClick = mnuViewClick
+    end
+    object popNoteListBySurgeon: TMenuItem
+      Tag = 4
+      Caption = 'Cases by &Surgeon'
+      Enabled = False
+      Visible = False
+      OnClick = mnuViewClick
+    end
+    object popNoteListByDate: TMenuItem
+      Tag = 5
+      Caption = 'Cases by Date &Range'
+      Enabled = False
+      OnClick = mnuViewClick
+    end
+    object popNoteListUncosigned: TMenuItem
+      Tag = 3
+      Caption = 'Un&cosigned Notes'
+      Enabled = False
+      Visible = False
+      OnClick = mnuViewClick
+    end
+    object popNoteListUnsigned: TMenuItem
+      Tag = 2
+      Caption = '&Unsigned Notes'
+      Enabled = False
+      Visible = False
+      OnClick = mnuViewClick
+    end
+    object popNoteListCustom: TMenuItem
+      Tag = 6
+      Caption = 'Cus&tom List'
+      OnClick = mnuViewClick
+    end
+    object N4: TMenuItem
+      Caption = '-'
+    end
+    object popNoteListExpandSelected: TMenuItem
+      Caption = '&Expand Selected'
+      OnClick = popNoteListExpandSelectedClick
+    end
+    object popNoteListExpandAll: TMenuItem
+      Caption = 'E&xpand All'
+      OnClick = popNoteListExpandAllClick
+    end
+    object popNoteListCollapseSelected: TMenuItem
+      Caption = 'C&ollapse Selected'
+      OnClick = popNoteListCollapseSelectedClick
+    end
+    object popNoteListCollapseAll: TMenuItem
+      Caption = 'Co&llapse All'
+      OnClick = popNoteListCollapseAllClick
+    end
+    object N5: TMenuItem
+      Caption = '-'
+    end
+    object popNoteListAddIDEntry: TMenuItem
+      Caption = 'Add Ne&w Entry to ID Note'
+      Enabled = False
+    end
+    object popNoteListDetachFromIDParent: TMenuItem
+      Caption = 'Detac&h from ID Note'
+      Enabled = False
+    end
+  end
+  object timAutoSave: TTimer
+    Enabled = False
+    Interval = 300000
+    OnTimer = timAutoSaveTimer
+    Left = 592
+    Top = 27
+  end
+  object dlgFindText: TFindDialog
+    Options = [frDown, frHideUpDown]
+    OnFind = dlgFindTextFind
+    Left = 452
+    Top = 312
+  end
+  object dlgReplaceText: TReplaceDialog
+    OnFind = dlgReplaceTextFind
+    OnReplace = dlgReplaceTextReplace
+    Left = 413
+    Top = 312
+  end
+  object imgLblImages: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvSurgery
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblImages
+    Left = 16
+    Top = 139
+  end
+  object imgLblSurgery: TVA508ImageListLabeler
+    Components = <
+      item
+        Component = tvSurgery
+      end>
+    Labels = <>
+    RemoteLabeler = dmodShared.imgLblSurgery
+    Left = 24
+    Top = 203
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgery.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgery.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgery.pas	(revision 1676)
@@ -0,0 +1,2706 @@
+unit fSurgery;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fHSplit, StdCtrls, ExtCtrls, Menus, ComCtrls, ORCtrls, ORFn, uConst, ORDtTm,
+  uPCE, ORClasses, fDrawers, ImgList, fSurgeryView, rSurgery, uSurgery,
+  uCaseTree, uTIU, fBase508Form, VA508AccessibilityManager,
+  VA508ImageListLabeler;
+
+type
+  TfrmSurgery = class(TfrmHSplit)
+    mnuNotes: TMainMenu;
+    mnuView: TMenuItem;
+    mnuViewChart: TMenuItem;
+    mnuChartReports: TMenuItem;
+    mnuChartLabs: TMenuItem;
+    mnuChartDCSumm: TMenuItem;
+    mnuChartCslts: TMenuItem;
+    mnuChartNotes: TMenuItem;
+    mnuChartOrders: TMenuItem;
+    mnuChartMeds: TMenuItem;
+    mnuChartProbs: TMenuItem;
+    mnuChartCover: TMenuItem;
+    Z1: TMenuItem;
+    mnuViewDetail: TMenuItem;
+    mnuAct: TMenuItem;
+    mnuActNew: TMenuItem;
+    Z2: TMenuItem;
+    mnuActSave: TMenuItem;
+    mnuActDelete: TMenuItem;
+    mnuActEdit: TMenuItem;
+    mnuActSign: TMenuItem;
+    mnuActAddend: TMenuItem;
+    lblCases: TOROffsetLabel;
+    pnlRead: TPanel;
+    lblTitle: TOROffsetLabel;
+    memSurgery: TRichEdit;
+    pnlWrite: TPanel;
+    memNewNote: TRichEdit;
+    Z3: TMenuItem;
+    mnuViewAll: TMenuItem;
+    mnuViewBySurgeon: TMenuItem;
+    mnuViewByDate: TMenuItem;
+    mnuViewUncosigned: TMenuItem;
+    mnuViewUnsigned: TMenuItem;
+    mnuActSignList: TMenuItem;
+    cmdNewNote: TORAlignButton;
+    lblSpace1: TLabel;
+    popNoteMemo: TPopupMenu;
+    popNoteMemoCut: TMenuItem;
+    popNoteMemoCopy: TMenuItem;
+    popNoteMemoPaste: TMenuItem;
+    Z10: TMenuItem;
+    popNoteMemoSignList: TMenuItem;
+    popNoteMemoDelete: TMenuItem;
+    popNoteMemoEdit: TMenuItem;
+    popNoteMemoSave: TMenuItem;
+    popNoteMemoSign: TMenuItem;
+    popNoteList: TPopupMenu;
+    popNoteListAll: TMenuItem;
+    popNoteListByDate: TMenuItem;
+    mnuActIdentifyAddlSigners: TMenuItem;
+    popNoteMemoAddlSign: TMenuItem;
+    Z11: TMenuItem;
+    popNoteMemoSpell: TMenuItem;
+    popNoteMemoGrammar: TMenuItem;
+    mnuViewCustom: TMenuItem;
+    N1: TMenuItem;
+    mnuViewSaveAsDefault: TMenuItem;
+    ReturntoDefault1: TMenuItem;
+    pnlDrawers: TPanel;
+    splDrawers: TSplitter;
+    popNoteMemoTemplate: TMenuItem;
+    Z12: TMenuItem;
+    mnuOptions: TMenuItem;
+    mnuEditTemplates: TMenuItem;
+    mnuNewTemplate: TMenuItem;
+    N2: TMenuItem;
+    mnuEditSharedTemplates: TMenuItem;
+    mnuNewSharedTemplate: TMenuItem;
+    popNoteMemoAddend: TMenuItem;
+    pnlFields: TPanel;
+    lblNewTitle: TLabel;
+    lblRefDate: TLabel;
+    lblAuthor: TLabel;
+    lblVisit: TLabel;
+    lblCosigner: TLabel;
+    cmdChange: TButton;
+    lblSubject: TLabel;
+    txtSubject: TCaptionEdit;
+    timAutoSave: TTimer;
+    popNoteMemoPaste2: TMenuItem;
+    popNoteMemoReformat: TMenuItem;
+    Z4: TMenuItem;
+    mnuActChange: TMenuItem;
+    mnuActLoadBoiler: TMenuItem;
+    bvlNewTitle: TBevel;
+    popNoteMemoSaveContinue: TMenuItem;
+    N3: TMenuItem;
+    mnuEditDialgFields: TMenuItem;
+    N4: TMenuItem;
+    popNoteListExpandSelected: TMenuItem;
+    popNoteListExpandAll: TMenuItem;
+    popNoteListCollapseSelected: TMenuItem;
+    popNoteListCollapseAll: TMenuItem;
+    popNoteListCustom: TMenuItem;
+    mnuActDetachFromIDParent: TMenuItem;
+    N5: TMenuItem;
+    popNoteListDetachFromIDParent: TMenuItem;
+    popNoteListAddIDEntry: TMenuItem;
+    mnuActAddIDEntry: TMenuItem;
+    mnuIconLegend: TMenuItem;
+    N6: TMenuItem;
+    popNoteMemoFind: TMenuItem;
+    dlgFindText: TFindDialog;
+    dlgReplaceText: TReplaceDialog;
+    popNoteMemoReplace: TMenuItem;
+    N7: TMenuItem;
+    tvSurgery: TORTreeView;
+    mnuChartSurgery: TMenuItem;
+    lstNotes: TORListBox;
+    sptVert: TSplitter;
+    memPCEShow: TRichEdit;
+    cmdPCE: TORAlignButton;
+    popNoteListBySurgeon: TMenuItem;
+    popNoteListUnsigned: TMenuItem;
+    popNoteListUncosigned: TMenuItem;
+    N8: TMenuItem;
+    popNoteMemoPreview: TMenuItem;
+    popNoteMemoInsTemplate: TMenuItem;
+    popNoteMemoEncounter: TMenuItem;
+    mnuViewInformation: TMenuItem;
+    mnuViewDemo: TMenuItem;
+    mnuViewVisits: TMenuItem;
+    mnuViewPrimaryCare: TMenuItem;
+    mnuViewMyHealtheVet: TMenuItem;
+    mnuInsurance: TMenuItem;
+    mnuViewFlags: TMenuItem;
+    mnuViewReminders: TMenuItem;
+    mnuViewRemoteData: TMenuItem;
+    mnuViewPostings: TMenuItem;
+    imgLblImages: TVA508ImageListLabeler;
+    imgLblSurgery: TVA508ImageListLabeler;
+    procedure mnuChartTabClick(Sender: TObject);
+    procedure pnlRightResize(Sender: TObject);
+    procedure cmdNewNoteClick(Sender: TObject);
+    procedure mnuActNewClick(Sender: TObject);
+    procedure mnuActSaveClick(Sender: TObject);
+    procedure mnuViewClick(Sender: TObject);
+    procedure mnuActAddendClick(Sender: TObject);
+    procedure mnuActSignListClick(Sender: TObject);
+    procedure mnuActDeleteClick(Sender: TObject);
+    procedure mnuActEditClick(Sender: TObject);
+    procedure mnuActSignClick(Sender: TObject);
+    procedure cmdPCEClick(Sender: TObject);
+    procedure popNoteMemoCutClick(Sender: TObject);
+    procedure popNoteMemoCopyClick(Sender: TObject);
+    procedure popNoteMemoPasteClick(Sender: TObject);
+    procedure popNoteMemoPopup(Sender: TObject);
+    procedure pnlWriteResize(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure mnuViewDetailClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure mnuActIdentifyAddlSignersClick(Sender: TObject);
+    procedure popNoteMemoAddlSignClick(Sender: TObject);
+    procedure popNoteMemoSpellClick(Sender: TObject);
+    procedure popNoteMemoGrammarClick(Sender: TObject);
+    procedure mnuViewSaveAsDefaultClick(Sender: TObject);
+    procedure mnuViewReturntoDefaultClick(Sender: TObject);
+    procedure popNoteMemoTemplateClick(Sender: TObject);
+    procedure mnuEditTemplatesClick(Sender: TObject);
+    procedure mnuNewTemplateClick(Sender: TObject);
+    procedure mnuEditSharedTemplatesClick(Sender: TObject);
+    procedure mnuNewSharedTemplateClick(Sender: TObject);
+    procedure mnuOptionsClick(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cmdChangeClick(Sender: TObject);
+    procedure pnlFieldsResize(Sender: TObject);
+    procedure timAutoSaveTimer(Sender: TObject);
+    procedure memNewNoteChange(Sender: TObject);
+    procedure popNoteMemoReformatClick(Sender: TObject);
+    procedure mnuActChangeClick(Sender: TObject);
+    procedure mnuActLoadBoilerClick(Sender: TObject);
+    procedure popNoteMemoSaveContinueClick(Sender: TObject);
+    procedure mnuEditDialgFieldsClick(Sender: TObject);
+    procedure popNoteListExpandAllClick(Sender: TObject);
+    procedure popNoteListCollapseAllClick(Sender: TObject);
+    procedure popNoteListExpandSelectedClick(Sender: TObject);
+    procedure popNoteListCollapseSelectedClick(Sender: TObject);
+    procedure popNoteListPopup(Sender: TObject);
+    procedure mnuIconLegendClick(Sender: TObject);
+    procedure popNoteMemoFindClick(Sender: TObject);
+    procedure dlgFindTextFind(Sender: TObject);
+    procedure popNoteMemoReplaceClick(Sender: TObject);
+    procedure dlgReplaceTextReplace(Sender: TObject);
+    procedure dlgReplaceTextFind(Sender: TObject);
+    procedure tvSurgeryClick(Sender: TObject);
+    procedure tvSurgeryChange(Sender: TObject; Node: TTreeNode);
+    procedure tvSurgeryExpanded(Sender: TObject; Node: TTreeNode);
+    procedure tvSurgeryCollapsed(Sender: TObject; Node: TTreeNode);
+    procedure lstNotesClick(Sender: TObject);
+    procedure memNewNoteKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure sptHorzCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
+    procedure popNoteMemoPreviewClick(Sender: TObject);
+    procedure popNoteMemoInsTemplateClick(Sender: TObject);
+    procedure ViewInfo(Sender: TObject);
+    procedure mnuViewInformationClick(Sender: TObject);
+  private
+    FEditingIndex: Integer;                      // index of note being currently edited
+    FCurrentContext: TSurgCaseContext;
+    FDefaultContext: TSurgCaseContext;
+    FImageFlag: TBitmap;
+    FCaseList: TStringList;
+    FChanged: Boolean;                           // true if any text has changed in the note
+    FEditCtrl: TCustomEdit;
+    FSilent: Boolean;
+    FEditNote: TEditNoteRec;
+    FVerifyNoteTitle: Integer;
+    FConfirmed: boolean;
+    FLastNoteID: string;
+    FEditingNotePCEObj: boolean;
+    FDeleted: boolean;
+    procedure ClearEditControls;
+    procedure DoAutoSave(Suppress: integer = 1);
+    function GetTitleText(AnIndex: Integer): string;
+    procedure InsertAddendum;
+    procedure InsertNewNote(IsIDChild: boolean; AnIDParent: integer);
+    function LacksRequiredForCreate: Boolean;
+    procedure LoadForEdit;
+    procedure  LoadSurgeryCases;
+    procedure  UpdateTreeView(DocList: TStringList; Tree: TORTreeView);
+    procedure SetViewContext(AContext: TSurgCaseContext);
+    function GetDrawers: TFrmDrawers;
+    procedure SetEditingIndex(const Value: Integer);
+    property EditingIndex: Integer read FEditingIndex write SetEditingIndex;
+    procedure ProcessNotifications;
+    function SetSurgTreeLabel(AContext: TSurgCaseContext): string;
+    procedure RemovePCEFromChanges(IEN: Int64; AVisitStr: string = '');
+    procedure SaveEditedNote(var Saved: Boolean);
+    procedure SaveCurrentNote(var Saved: Boolean);
+    procedure SetSubjectVisible(ShouldShow: Boolean);
+    procedure ShowPCEControls(ShouldShow: Boolean);
+    function StartNewEdit(NewNoteType: integer): Boolean;
+    //function CanFinishReminder: boolean;
+    procedure DisplayPCE;
+    function VerifyNoteTitle: Boolean;
+    procedure ShowPCEButtons(Editing: boolean);
+    procedure EnableDisableMenus(IsTIUDocument: boolean);
+  public
+    function AllowContextChange(var WhyNot: string): Boolean; override;
+    procedure ClearPtData; override;
+    procedure DisplayPage; override;
+    procedure RequestPrint; override;
+    procedure SetFontSize(NewFontSize: Integer); override;
+    procedure SaveSignItem(const ItemID, ESCode: string);
+    procedure AssignRemForm;
+  published
+    property Drawers: TFrmDrawers read GetDrawers; // Keep Drawers published
+  end;
+
+var
+  frmSurgery: TfrmSurgery;
+  uSurgeryContext: TSurgCaseContext;
+
+implementation
+
+{$R *.DFM}
+
+uses fFrame, fVisit, fEncnt, rCore, uCore, fNoteBA, fNoteBD, fSignItem, fEncounterFrame,
+     rPCE, Clipbrd, fNoteCslt, fNotePrt, rVitals, fAddlSigners, fNoteDR, fConsults, uSpell,
+     fTIUView, fTemplateEditor, uReminders, fReminderDialog, uOrders, rConsults, fReminderTree,
+     fNoteProps, fNotesBP, fTemplateFieldEditor, uTemplates, dShared, rTemplates,
+     FIconLegend, fPCEEdit, rTIU, fRptBox, fTemplateDialog, VA508AccessibilityRouter;
+
+const
+  CT_SURGERY  = 11;                             // chart tab - surgery
+
+  NT_NEW_NOTE = -10;                             // Holder IEN for a new note
+  NT_ADDENDUM = -20;                             // Holder IEN for a new addendum
+
+  NT_ACT_NEW_NOTE  = 2;
+  NT_ACT_ADDENDUM  = 3;
+  NT_ACT_EDIT_NOTE = 4;
+  NT_ACT_ID_ENTRY  = 5;
+
+  TX_NEED_VISIT = 'A visit is required before creating a new surgery report.';
+  TX_CREATE_ERR = 'Error Creating Report';
+  TX_UPDATE_ERR = 'Error Updating Report';
+  TX_NO_NOTE    = 'No surgery report is currently being edited';
+  TX_SAVE_NOTE  = 'Save Surgery Report';
+  TX_ADDEND_NO  = 'Cannot make an addendum to a report that is being edited';
+  TX_DEL_OK     = CRLF + CRLF + 'Delete this surgery report?';
+  TX_DEL_ERR    = 'Unable to Delete Report';
+  TX_SIGN       = 'Sign Report';
+  TX_COSIGN     = 'Cosign Report';
+  TX_SIGN_ERR   = 'Unable to Sign Report';
+//  TX_SCREQD     = 'This progress note title requires the service connected questions to be '+
+//                  'answered.  The Encounter form will now be opened.  Please answer all '+
+//                 'service connected questions.';
+//  TX_SCREQD_T   = 'Response required for SC questions.';
+  TX_NONOTE     = 'No surgery report is currently selected.';
+  TX_NONOTE_CAP = 'No Report Selected';
+  TX_NOPRT_NEW  = 'This surgery report may not be printed until it is saved';
+  TX_NOPRT_NEW_CAP = 'Save Surgery Report';
+  TX_NO_ALERT   = 'There is insufficient information to process this alert.' + CRLF +
+                  'Either the alert has already been deleted, or it contained invalid data.' + CRLF + CRLF +
+                  'Click the NEXT button if you wish to continue processing more alerts.';
+  TX_CAP_NO_ALERT = 'Unable to Process Alert';
+  //TX_ORDER_LOCKED = 'This record is locked by an action underway on the Consults tab';
+  //TC_ORDER_LOCKED = 'Unable to access record';
+  //TX_NO_ORD_CHG   = 'The note is still associated with the previously selected request.' + CRLF +
+  //                  'Finish the pending action on the consults tab, then try again.';
+  //TC_NO_ORD_CHG   = 'Locked Consult Request';
+  TX_NEW_SAVE1    = 'You are currently editing:' + CRLF + CRLF;
+  TX_NEW_SAVE2    = CRLF + CRLF + 'Do you wish to save this report and begin a new one?';
+  TX_NEW_SAVE3    = CRLF + CRLF + 'Do you wish to save this report and begin a new addendum?';
+  TX_NEW_SAVE4    = CRLF + CRLF + 'Do you wish to save this report and edit the one selected?';
+  //TX_NEW_SAVE5    = CRLF + CRLF + 'Do you wish to save this report and begin a new Interdisciplinary entry?';
+  TC_NEW_SAVE2    = 'Create New Report';
+  TC_NEW_SAVE3    = 'Create New Addendum';
+  TC_NEW_SAVE4    = 'Edit Different Report';
+  //TC_NEW_SAVE5    = 'Create New Interdisciplinary Entry';
+  TX_EMPTY_NOTE   = CRLF + CRLF + 'This report contains no text and will not be saved.' + CRLF +
+                    'Do you wish to delete this report?';
+  TC_EMPTY_NOTE   = 'Empty Report';
+  TX_EMPTY_NOTE1   = 'This report contains no text and can not be signed.';
+  TC_NO_LOCK      = 'Unable to Lock Report';
+  TX_ABSAVE       = 'It appears the session terminated abnormally when this' + CRLF +
+                    'report was last edited. Some text may not have been saved.' + CRLF + CRLF +
+                    'Do you wish to continue and sign the report?';
+  TC_ABSAVE       = 'Possible Missing Text';
+  TX_NO_BOIL      = 'There is no boilerplate text associated with this title.';
+  TC_NO_BOIL      = 'Load Boilerplate Text';
+  TX_BLR_CLEAR    = 'Do you want to clear the previously loaded boilerplate text?';
+  TC_BLR_CLEAR    = 'Clear Previous Boilerplate Text';
+  TX_DETACH_CNF     = 'Confirm Detachment';
+  TX_DETACH_FAILURE = 'Detach failed';
+  TX_RETRACT_CAP    = 'Retraction Notice';
+  TX_RETRACT        = 'This document will now be RETRACTED.  As Such, it has been removed' +CRLF +
+                      ' from public view, and from typical Releases of Information,' +CRLF +
+                      ' but will remain indefinitely discoverable to HIMS.' +CRLF +CRLF;
+
+var
+  uPCEShow, uPCEEdit:  TPCEData;
+  ViewContext: Integer;
+  frmDrawers: TfrmDrawers;
+  uChanging: Boolean;
+
+{ TPage common methods --------------------------------------------------------------------- }
+
+function TfrmSurgery.AllowContextChange(var WhyNot: string): Boolean;
+begin
+  dlgFindText.CloseDialog;
+  Result := inherited AllowContextChange(WhyNot);  // sets result = true
+  if Assigned(frmTemplateDialog) then
+    if Screen.ActiveForm = frmTemplateDialog then
+    //if (fsModal in frmTemplateDialog.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := 'A template in progress will be aborted.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmTemplateDialog.Silent := True;
+                 frmTemplateDialog.ModalResult := mrCancel;
+               end;
+           end;
+    end;
+  if EditingIndex <> -1 then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             if memNewNote.GetTextLen > 0 then
+               WhyNot := 'A report in progress will be saved as unsigned.  '
+             else
+               WhyNot := 'An empty report in progress will be deleted.  ';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then FSilent := True;
+             SaveCurrentNote(Result)
+           end;
+    end;
+  if Assigned(frmEncounterFrame) then
+    if Screen.ActiveForm = frmEncounterFrame then
+    //if (fsModal in frmEncounterFrame.FormState) then
+    case BOOLCHAR[frmFrame.CCOWContextChanging] of
+      '1': begin
+             WhyNot := WhyNot + 'Encounter information being edited will not be saved';
+             Result := False;
+           end;
+      '0': begin
+             if WhyNot = 'COMMIT' then
+               begin
+                 FSilent := True;
+                 frmEncounterFrame.Abort := False;
+                 frmEncounterFrame.Cancel := True;
+               end;
+           end;
+    end;
+end;
+
+procedure TfrmSurgery.ClearPtData;
+{ clear all controls that contain patient specific information }
+begin
+  inherited ClearPtData;
+  ClearEditControls;
+  uChanging := True;
+  tvSurgery.Items.BeginUpdate;
+  KillCaseTreeObjects(tvSurgery);
+  tvSurgery.Items.Clear;
+  tvSurgery.Items.EndUpdate;
+  lstNotes.Clear;
+  uChanging := False;
+  memSurgery.Clear;
+  uPCEShow.Clear;
+  uPCEEdit.Clear;
+  frmDrawers.ResetTemplates;
+end;
+
+procedure TfrmSurgery.DisplayPage;
+{ causes page to be visible and conditionally executes initialization code }
+begin
+  inherited DisplayPage;
+  frmFrame.ShowHideChartTabMenus(mnuViewChart);
+  frmFrame.mnuFilePrint.Tag := CT_SURGERY;
+  frmFrame.mnuFilePrint.Enabled := True;
+  frmFrame.mnuFilePrintSetup.Enabled := True;
+  if InitPage then
+  begin
+    FDefaultContext := GetCurrentSurgCaseContext;
+    FCurrentContext := FDefaultContext;
+    popNoteMemoSpell.Visible   := SpellCheckAvailable;
+    popNoteMemoGrammar.Visible := popNoteMemoSpell.Visible;
+    Z11.Visible                := popNoteMemoSpell.Visible;
+    timAutoSave.Interval := User.AutoSave * 1000;  // convert seconds to milliseconds
+    SetEqualTabStops(memNewNote);
+  end;
+  // to indent the right margin need to set Paragraph.RightIndent for each paragraph?
+  if InitPatient and not (CallingContext = CC_NOTIFICATION) then
+    begin
+      SetViewContext(FDefaultContext);
+    end;
+  case CallingContext of
+    CC_INIT_PATIENT: if not InitPatient then
+                       begin
+                         SetViewContext(FDefaultContext);
+                       end;
+    CC_NOTIFICATION:  ProcessNotifications;
+  end;
+end;
+
+{ Form events ------------------------------------------------------------------------------ }
+
+procedure TfrmSurgery.FormCreate(Sender: TObject);
+begin
+  inherited;
+  PageID := CT_SURGERY;
+  EditingIndex := -1;
+  FEditNote.LastCosigner := 0;
+  FEditNote.LastCosignerName := '';
+  FLastNoteID := '';
+  frmDrawers := TfrmDrawers.CreateDrawers(Self, pnlDrawers, [],[]);
+  frmDrawers.Align := alBottom;
+  frmDrawers.RichEditControl := memNewNote;
+  frmDrawers.NewNoteButton := cmdNewNote;
+  frmDrawers.Splitter := splDrawers;
+  frmDrawers.DefTempPiece := 1;
+  FImageFlag := TBitmap.Create;
+  FCaseList := TStringList.Create;
+end;
+
+procedure TfrmSurgery.pnlRightResize(Sender: TObject);
+{ memSurgery (TRichEdit) doesn't repaint appropriately unless it's parent panel is refreshed }
+begin
+  inherited;
+  pnlRight.Refresh;
+  memSurgery.Repaint;
+end;
+
+procedure TfrmSurgery.pnlWriteResize(Sender: TObject);
+const
+  LEFT_MARGIN = 4;
+begin
+  inherited;
+  LimitEditWidth(memNewNote, MAX_ENTRY_WIDTH - 1);
+  memNewNote.Constraints.MinWidth := TextWidthByFont(memNewNote.Font.Handle, StringOfChar('X', MAX_ENTRY_WIDTH)) + (LEFT_MARGIN * 2) + ScrollBarWidth;
+  pnlLeft.Width := self.ClientWidth - pnlWrite.Width - sptHorz.Width;
+end;
+
+procedure TfrmSurgery.SetViewContext(AContext: TSurgCaseContext);
+var
+  Saved: boolean;
+begin
+  inherited;
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FCurrentContext := AContext;
+  EditingIndex := -1;
+  tvSurgery.Enabled := True ;
+  pnlRead.BringToFront ;
+  with uSurgeryContext do
+    begin
+      Changed        := True;
+      OpProc         := FCurrentContext.OpProc;
+      BeginDate      := FCurrentContext.BeginDate;
+      EndDate        := FCurrentContext.EndDate;
+      FMBeginDate    := FCurrentContext.FMBeginDate;
+      FMEndDate      := FCurrentContext.FMEndDate;
+      MaxDocs        := FCurrentContext.MaxDocs;
+      Status         := FCurrentContext.Status;
+      GroupBy        := FCurrentContext.GroupBy;
+      TreeAscending  := FCurrentContext.TreeAscending;
+      mnuViewClick(Self);
+    end;
+end;
+
+procedure TfrmSurgery.FormDestroy(Sender: TObject);
+begin
+  FCaseList.Free;
+  FImageFlag.Free;
+  KillCaseTreeObjects(tvSurgery);
+  inherited;
+end;
+
+function TfrmSurgery.GetDrawers: TFrmDrawers;
+begin
+  Result := frmDrawers ;
+end;
+
+procedure TfrmSurgery.UpdateTreeView(DocList: TStringList; Tree: TORTreeView);
+var
+  i: integer;
+begin
+  with Tree do
+    begin
+      uChanging := True;
+      Items.BeginUpdate;
+      for i := 0 to DocList.Count - 1 do
+        begin
+          if Piece(DocList[i], U, 10) <> '' then
+            lstNotes.Items.Add(DocList[i]);
+        end;
+      BuildCaseTree(DocList, '0', Tree, nil, uSurgeryContext);
+      Items.EndUpdate;
+      uChanging := False;
+    end;
+end;
+
+procedure TfrmSurgery.RequestPrint;
+var
+  Saved: Boolean;
+begin
+  with lstNotes do
+  begin
+    if ItemIndex = EditingIndex then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+    end;
+    if ItemIEN > 0 then PrintNote(ItemIEN, MakeNoteDisplayText(Items[ItemIndex])) else
+    begin
+      if ItemIEN = 0 then InfoBox(TX_NONOTE, TX_NONOTE_CAP, MB_OK);
+      if ItemIEN < 0 then InfoBox(TX_NOPRT_NEW, TX_NOPRT_NEW_CAP, MB_OK);
+    end;
+  end;
+end;
+
+procedure TfrmSurgery.mnuChartTabClick(Sender: TObject);
+{ reroute to Chart Tab menu of the parent form: frmFrame }
+begin
+  inherited;
+  frmFrame.mnuChartTabClick(Sender);
+end;
+
+procedure TfrmSurgery.SetFontSize(NewFontSize: Integer);
+{ adjusts the font size of any controls that don't have ParentFont = True }
+begin
+  inherited SetFontSize(NewFontSize);
+  pnlLeft.Width := pnlLeft.Constraints.MinWidth;
+  sptHorz.Left := pnlLeft.Width;
+  memSurgery.Font.Size     := NewFontSize;
+  memNewNote.Font.Size  := NewFontSize;
+  lblTitle.Font.Size    := NewFontSize;
+  frmDrawers.Font.Size  := NewFontSize;
+  SetEqualTabStops(memNewNote);
+  // adjust heights of pnlAction, pnlFields, and lstEncntShow
+end;
+
+procedure TfrmSurgery.mnuViewClick(Sender: TObject);
+{ changes the list of notes available for viewing }
+var
+  //AuthCtxt: TAuthorContext;
+  //DateRange: TNoteDateRange;
+  AContext: TSurgCaseContext;
+  Saved: Boolean;
+begin
+  inherited;
+  // save note at EditingIndex?
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  FLastNoteID := lstNotes.ItemID;
+  mnuViewDetail.Checked := False;
+  uChanging := True;
+  AContext := GetCurrentSurgCaseContext;
+  StatusText('Retrieving surgery case list...');
+  if Sender is TMenuItem then ViewContext := TMenuItem(Sender).Tag
+  else with AContext do
+    begin
+      if ((BeginDate + EndDate + Status + GroupBy + IntToStr(MaxDocs)) <> '0') then
+        ViewContext := SR_CUSTOM
+      else
+        ViewContext := SR_ALL;
+    end;
+  with tvSurgery do if (Selected <> nil) and (Piece(TORTreeNode(Selected).StringData, U, 10) <> '') then
+    FLastNoteID := Piece(TORTreeNode(Selected).StringData, U, 1);
+  case ViewContext of
+  SR_RECENT, SR_ALL:  begin
+                        FillChar(FCurrentContext, SizeOf(FCurrentContext), 0);
+                        FillChar(uSurgeryContext, SizeOf(uSurgeryContext), 0);
+                        //FCurrentContext.MaxDocs := uSurgeryContext.MaxDocs;
+                        FCurrentContext.Status := IntToStr(ViewContext);
+                        LoadSurgeryCases;
+                      end;
+  SR_CUSTOM:     begin
+                   if Sender is TMenuItem then
+                     begin
+                       SelectSurgeryView(Font.Size, True, FCurrentContext, uSurgeryContext);
+                     end;
+                   with uSurgeryContext do (*if Changed then*)
+                   begin
+                       FCurrentContext.OpProc := OpProc;
+                       FCurrentContext.BeginDate := BeginDate;
+                       FCurrentContext.EndDate := EndDate;
+                       FCurrentContext.FMBeginDate := FMBeginDate;
+                       FCurrentContext.FMEndDate := FMEndDate;
+                       if (FMBeginDate > 0) and (FMEndDate > 0) then
+                         FCurrentContext.Status := IntToStr(SR_BY_DATE)
+                       else
+                         FCurrentContext.Status := Status;
+                       FCurrentContext.MaxDocs := MaxDocs;
+                       FCurrentContext.GroupBy := GroupBy;
+                       FCurrentContext.TreeAscending := TreeAscending;
+                       LoadSurgeryCases;
+                   end;
+                 end;
+  end; {case}
+  lblCases.Caption := SetSurgTreeLabel(FCurrentContext);
+  tvSurgery.Caption := lblCases.Caption;
+  StatusText('');
+end;
+
+procedure TfrmSurgery.popNoteMemoFindClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popNoteMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgFindText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmSurgery.dlgFindTextFind(Sender: TObject);
+begin
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+{ General procedures ----------------------------------------------------------------------- }
+
+procedure TfrmSurgery.ClearEditControls;
+{ resets controls used for entering a new progress note }
+begin
+  // clear FEditNote (should FEditNote be an object with a clear method?)
+  with FEditNote do
+  begin
+    DocType      := 0;
+    Title        := 0;
+    TitleName    := '';
+    DateTime     := 0;
+    Author       := 0;
+    AuthorName   := '';
+    Cosigner     := 0;
+    CosignerName := '';
+    Subject      := '';
+    Location     := 0;
+    LocationName := '';
+    PkgRef       := '';
+    PkgIEN       := 0;
+    PkgPtr       := '';
+    NeedCPT      := False;
+    Addend       := 0;
+    {LastCosigner & LastCosignerName aren't cleared because they're used as default for next note.}
+    Lines        := nil;
+  end;
+  // clear the editing controls (also clear the new labels?)
+  txtSubject.Text := '';
+  memNewNote.Clear;
+  timAutoSave.Enabled := False;
+  // clear the PCE object for editing
+  uPCEEdit.Clear;
+  // set the tracking variables to initial state
+  EditingIndex := -1;
+  FChanged := False;
+end;
+
+procedure TfrmSurgery.ShowPCEControls(ShouldShow: Boolean);
+begin
+  sptVert.Visible    := ShouldShow;
+  memPCEShow.Visible := ShouldShow;
+  if(ShouldShow) then
+    sptVert.Top := memPCEShow.Top - sptVert.Height;
+  memSurgery.Invalidate;
+end;
+
+procedure TfrmSurgery.DisplayPCE;
+{ displays PCE information if appropriate & enables/disabled editing of PCE data }
+var
+  EnableList, ShowList: TDrawers;
+  VitalStr:   TStringlist;
+  NoPCE:      boolean;
+  ActionSts: TActionRec;
+  AnIEN: integer;
+
+begin
+  memPCEShow.Clear;
+  with lstNotes do if ItemIndex = -1 then
+  begin
+    ShowPCEControls(FALSE);
+    frmDrawers.DisplayDrawers(FALSE);
+  end
+  else if ItemIndex = EditingIndex then
+  begin
+    with uPCEEdit do
+    begin
+      AddStrData(memPCEShow.Lines);
+      NoPCE := (memPCEShow.Lines.Count = 0);
+      VitalStr  := TStringList.create;
+      try
+        GetVitalsFromDate(VitalStr, uPCEEdit);
+        AddVitalData(VitalStr, memPCEShow.Lines);
+      finally
+        VitalStr.free;
+      end;
+      ShowPCEButtons(TRUE);
+      ShowPCEControls(cmdPCE.Enabled or (memPCEShow.Lines.Count > 0));
+      if(NoPCE and memPCEShow.Visible) then
+        memPCEShow.Lines.Insert(0, TX_NOPCE);
+
+      if(InteractiveRemindersActive) then
+      begin
+        if(GetReminderStatus = rsNone) then
+          EnableList := [odTemplates]
+        else
+          EnableList := [odTemplates, odReminders];
+        ShowList := [odTemplates, odReminders];
+      end
+      else
+      begin
+        EnableList := [odTemplates];
+        ShowList := [odTemplates];
+      end;
+      frmDrawers.DisplayDrawers(TRUE, EnableList, ShowList);
+    end;
+  end else
+  begin
+    ShowPCEButtons(FALSE);
+    frmDrawers.DisplayDrawers(TRUE, [odTemplates], [odTemplates]);
+    AnIEN := lstNotes.ItemIEN;
+    ActOnDocument(ActionSts, AnIEN, 'VIEW');
+    if ActionSts.Success then
+    begin
+      StatusText('Retrieving encounter information...');
+      with uPCEShow do
+      begin
+        NoteDateTime := MakeFMDateTime(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+        PCEForNote(AnIEN, uPCEEdit);
+        AddStrData(memPCEShow.Lines);
+        NoPCE := (memPCEShow.Lines.Count = 0);
+        VitalStr  := TStringList.create;
+        try
+          GetVitalsFromNote(VitalStr, uPCEShow, AnIEN);
+          AddVitalData(VitalStr, memPCEShow.Lines);
+        finally
+          VitalStr.free;
+        end;
+        ShowPCEControls(memPCEShow.Lines.Count > 0);
+        if(NoPCE and memPCEShow.Visible) then
+          memPCEShow.Lines.Insert(0, TX_NOPCE);
+      end;
+      StatusText('');
+    end
+    else
+      ShowPCEControls(FALSE);
+  end; {if ItemIndex}
+end;
+
+{ supporting calls for writing notes }
+
+function TfrmSurgery.GetTitleText(AnIndex: Integer): string;
+{ returns non-tabbed text for the title of a note given the ItemIndex in lstNotes }
+begin
+  with lstNotes do if ItemIndex > -1 then
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(Items[AnIndex], U, 3))) +
+              '  ' + Piece(Items[AnIndex], U, 2) + ', ' + Piece(Items[AnIndex], U, 6) + ', ' +
+              Piece(Piece(Items[AnIndex], U, 5), ';', 2)
+end;
+
+function TfrmSurgery.LacksRequiredForCreate: Boolean;
+{ determines if the fields required to create the note are present }
+var
+  CurTitle: Integer;
+begin
+  Result := False;
+  with FEditNote do
+  begin
+    if Title <= 0    then Result := True;
+    if Author <= 0   then Result := True;
+    if DateTime <= 0 then Result := True;
+    if (DocType = TYP_ADDENDUM) then
+    begin
+      if AskCosignerForDocument(Addend, Author, DateTime) and (Cosigner <= 0) then Result := True;
+    end else
+    begin
+      if Title > 0 then CurTitle := Title else CurTitle := DocType;
+      if AskCosignerForTitle(CurTitle, Author, DateTime) and (Cosigner <= 0) then Result := True;
+    end;
+  end;
+end;
+
+function TfrmSurgery.VerifyNoteTitle: Boolean;
+const
+  VNT_UNKNOWN = 0;
+  VNT_NO      = 1;
+  VNT_YES     = 2;
+var
+  AParam: string;
+begin
+  if FVerifyNoteTitle = VNT_UNKNOWN then
+  begin
+    AParam := GetUserParam('ORWOR VERIFY NOTE TITLE');
+    if AParam = '1' then FVerifyNoteTitle := VNT_YES else FVerifyNoteTitle := VNT_NO;
+  end;
+  Result := FVerifyNoteTitle = VNT_YES;
+end;
+
+procedure TfrmSurgery.SetSubjectVisible(ShouldShow: Boolean);
+{ hide/show subject & resize panel accordingly - leave 6 pixel margin above memNewNote }
+begin
+  if ShouldShow then
+  begin
+    lblSubject.Visible := True;
+    txtSubject.Visible := True;
+    pnlFields.Height   := txtSubject.Top + txtSubject.Height + 6;
+  end else
+  begin
+    lblSubject.Visible := False;
+    txtSubject.Visible := False;
+    pnlFields.Height   := lblVisit.Top + lblVisit.Height + 6;
+  end;
+end;
+
+
+{ create, edit & save notes }
+
+procedure TfrmSurgery.InsertNewNote(IsIDChild: boolean; AnIDParent: integer);
+{ creates the editing context for a new progress note & inserts stub into top of view list }
+const
+  IS_ID_CHILD = False;
+var
+  EnableAutosave, HaveRequired: Boolean;
+  CreatedNote: TCreatedDoc;
+  TmpBoilerPlate: TStringList;
+  tmpNode: TTreeNode;
+  x, AClassName: string;
+  DocInfo: string;
+begin
+  if tvSurgery.Selected = nil then exit;
+  if PCaseTreeObject(tvSurgery.Selected.Data)^.OperativeProc = '' then
+    begin
+      InfoBox('You must first select the case to which this document will apply', 'Select a case', 0);
+      exit;
+    end;
+  EnableAutosave := FALSE;
+  TmpBoilerPlate := nil;
+  try
+    ClearEditControls;
+    FillChar(FEditNote, SizeOf(FEditNote), 0);  //v15.7
+    with FEditNote do
+    begin
+      DocType      := TYP_PROGRESS_NOTE;
+      Title        := DfltNoteTitle;
+      TitleName    := DfltNoteTitleName;
+      DateTime     := FMNow;
+      Author       := User.DUZ;
+      AuthorName   := User.Name;
+      Location     := Encounter.Location;
+      LocationName := Encounter.LocationName;
+      VisitDate    := Encounter.DateTime;
+      if IsIDChild then
+        IDParent   := AnIDParent
+      else
+        IDParent   := 0;
+      // Cosigner & PkgRef, if needed, will be set by fNoteProps
+    end;
+    // check to see if interaction necessary to get required fields
+    if PCaseTreeObject(tvSurgery.Selected.Data)^.IsNonORProc then AClassName := DCL_SURG_NON_OR else AClassName := DCL_SURG_OR;
+    if LacksRequiredForCreate or VerifyNoteTitle
+      then HaveRequired := ExecuteNoteProperties(FEditNote, CT_SURGERY, IS_ID_CHILD, IS_ID_CHILD, AClassName, 0)
+      else HaveRequired := True;
+    if HaveRequired then
+    begin
+      // set up uPCEEdit for entry of new note
+      uPCEEdit.UseEncounter := True;
+      uPCEEdit.NoteDateTime := FEditNote.DateTime;
+      uPCEEdit.PCEForNote(USE_CURRENT_VISITSTR, uPCEShow);
+      FEditNote.NeedCPT  := uPCEEdit.CPTRequired;
+       // create the note
+      PutNewNote(CreatedNote, FEditNote);
+      uPCEEdit.NoteIEN := CreatedNote.IEN;
+      if CreatedNote.IEN > 0 then LockDocument(CreatedNote.IEN, CreatedNote.ErrorText);
+      if CreatedNote.ErrorText = '' then
+      begin
+        //x := $$RESOLVE^TIUSRVLO formatted string
+        //7348^Note Title^3000913^NERD, YOURA  (N0165)^1329;Rich Vertigan;VERTIGAN,RICH^8E REHAB MED^complete^Adm: 11/05/98;2981105.095547^        ;^^0^^^2
+        with FEditNote do
+          begin
+            x := IntToStr(CreatedNote.IEN) + U + TitleName + U + FloatToStr(FEditNote.DateTime) + U +
+                 Patient.Name + U + IntToStr(Author) + ';' + AuthorName + U + LocationName + U + 'new' + U +
+                 U + U + U + U + U + U + U;
+          end;
+
+        lstNotes.Items.Insert(0, x);
+        uChanging := True;
+        tvSurgery.Items.BeginUpdate;
+(*        if IsIDChild then
+          begin
+            tmpNode := tvSurgery.FindPieceNode(IntToStr(AnIDParent), 1, U, tvSurgery.Items.GetFirstNode);
+            tmpNode.ImageIndex := IMG_IDNOTE_OPEN;
+            tmpNode.SelectedIndex := IMG_IDNOTE_OPEN;
+            tmpNode := tvSurgery.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeCaseTreeObject(x));
+            tmpNode.ImageIndex := IMG_ID_CHILD;
+            tmpNode.SelectedIndex := IMG_ID_CHILD;
+          end
+        else*)
+          begin
+            tmpNode := tvSurgery.Items.AddObjectFirst(tvSurgery.Items.GetFirstNode, 'New Note in Progress',
+                                                    MakeCaseTreeObject('NEW^New Note in Progress^^^^^^^^^^^%^0'));
+            TORTreeNode(tmpNode).StringData := 'NEW^New Note in Progress^^^^^^^^^^^%^0';
+            tmpNode.ImageIndex := IMG_SURG_TOP_LEVEL;
+            tmpNode := tvSurgery.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeCaseTreeObject(x));
+            tmpNode.ImageIndex := IMG_SURG_RPT_SINGLE;
+            tmpNode.SelectedIndex := IMG_SURG_RPT_SINGLE;
+          end;
+        tmpNode.StateIndex := IMG_NO_IMAGES;
+        TORTreeNode(tmpNode).StringData := x;
+        tvSurgery.Selected := tmpNode;
+        tvSurgery.Items.EndUpdate;
+        uChanging := False;
+        Changes.Add(CH_SUR, IntToStr(CreatedNote.IEN), GetTitleText(0), '', CH_SIGN_YES);
+        lstNotes.ItemIndex := 0;
+        EditingIndex := 0;
+        SetSubjectVisible(AskSubjectForNotes);
+        if not assigned(TmpBoilerPlate) then
+          TmpBoilerPlate := TStringList.Create;
+        LoadBoilerPlate(TmpBoilerPlate, FEditNote.Title);
+        FChanged := False;
+        cmdChangeClick(Self); // will set captions, sign state for Changes
+        lstNotesClick(Self);  // will make pnlWrite visible
+        if timAutoSave.Interval <> 0 then EnableAutosave := TRUE;
+        if txtSubject.Visible then txtSubject.SetFocus else memNewNote.SetFocus;
+      end else
+      begin
+        // if note creation failed or failed to get note lock (both unlikely), unlock consult
+        InfoBox(CreatedNote.ErrorText, TX_CREATE_ERR, MB_OK);
+        HaveRequired := False;
+      end; {if CreatedNote.IEN}
+    end; {if HaveRequired}
+    if not HaveRequired then ClearEditControls;
+  finally
+    if assigned(TmpBoilerPlate) then
+    begin
+      DocInfo := MakeXMLParamTIU(IntToStr(CreatedNote.IEN), FEditNote);
+      ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+      QuickCopy(TmpBoilerPlate, memNewNote);
+      TmpBoilerPlate.Free;
+    end;
+    if EnableAutosave then // Don't enable autosave until after dialog fields have been resolved
+      timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmSurgery.InsertAddendum;
+{ sets up fields of pnlWrite to write an addendum for the selected note }
+const
+  AS_ADDENDUM = True;
+  IS_ID_CHILD = False;
+var
+  HaveRequired: Boolean;
+  CreatedNote: TCreatedDoc;
+  tmpNode: TTreeNode;
+  x: string;
+begin
+  ClearEditControls;
+  with FEditNote do
+  begin
+    DocType      := TYP_ADDENDUM;
+    Title        := TitleForNote(lstNotes.ItemIEN);
+    TitleName    := Piece(lstNotes.Items[lstNotes.ItemIndex], U, 2);
+    if Copy(TitleName,1,1) = '+' then TitleName := Copy(TitleName, 3, 199);
+    DateTime     := FMNow;
+    Author       := User.DUZ;
+    AuthorName   := User.Name;
+    Addend       := lstNotes.ItemIEN;
+    x            := GetPackageRefForNote(lstNotes.ItemIEN);
+    if Piece(x, U, 1) <> '-1' then
+      begin
+        PkgRef       := GetPackageRefForNote(lstNotes.ItemIEN);
+        PkgIEN       := StrToIntDef(Piece(PkgRef, ';', 1), 0);
+        PkgPtr       := Piece(PkgRef, ';', 2);
+      end;
+    //Lines        := memNewNote.Lines;
+    // Cosigner, if needed, will be set by fNoteProps
+    // Location info will be set after the encounter is loaded
+  end;
+  // check to see if interaction necessary to get required fields
+  if LacksRequiredForCreate
+    then HaveRequired := ExecuteNoteProperties(FEditNote, CT_SURGERY, IS_ID_CHILD, False, '', 0)
+    else HaveRequired := True;
+  if HaveRequired then
+  begin
+    uPCEEdit.NoteDateTime := FEditNote.DateTime;
+    uPCEEdit.PCEForNote(FEditNote.Addend, uPCEShow);
+    FEditNote.Location     := uPCEEdit.Location;
+    FEditNote.LocationName := ExternalName(uPCEEdit.Location, 44);
+    FEditNote.VisitDate    := uPCEEdit.DateTime;
+    PutAddendum(CreatedNote, FEditNote, FEditNote.Addend);
+    uPCEEdit.NoteIEN := CreatedNote.IEN;
+    if CreatedNote.IEN > 0 then LockDocument(CreatedNote.IEN, CreatedNote.ErrorText);
+    if CreatedNote.ErrorText = '' then
+    begin
+      with FEditNote do
+        begin
+          x := IntToStr(CreatedNote.IEN) + U + 'Addendum to ' + TitleName + U + FloatToStr(DateTime) + U +
+               Patient.Name + U + IntToStr(Author) + ';' + AuthorName + U + LocationName + U + 'new' + U +
+               U + U + PkgRef + U + U + U + U + U;
+        end;
+
+
+      lstNotes.Items.Insert(0, x);
+      uChanging := True;
+      tvSurgery.Items.BeginUpdate;
+      tmpNode := tvSurgery.Items.AddObjectFirst(tvSurgery.Items.GetFirstNode, 'New Addendum in Progress',
+                                              MakeCaseTreeObject('ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'ADDENDUM^New Addendum in Progress^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_SURG_TOP_LEVEL;
+      tmpNode := tvSurgery.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeCaseTreeObject(x));
+      TORTreeNode(tmpNode).StringData := x;
+
+      tmpNode.ImageIndex := IMG_SURG_ADDENDUM;
+      tmpNode.SelectedIndex := IMG_SURG_ADDENDUM;
+      tvSurgery.Selected := tmpNode;
+      tvSurgery.Items.EndUpdate;
+      uChanging := False;
+      Changes.Add(CH_SUR, IntToStr(CreatedNote.IEN), GetTitleText(0), '', CH_SIGN_YES);
+      lstNotes.ItemIndex := 0;
+      EditingIndex := 0;
+      SetSubjectVisible(AskSubjectForNotes);
+      cmdChangeClick(Self); // will set captions, sign state for Changes
+      lstNotesClick(Self);  // will make pnlWrite visible
+      if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+      memNewNote.SetFocus;
+    end else
+    begin
+      // if note creation failed or failed to get note lock (both unlikely), unlock consult
+      InfoBox(CreatedNote.ErrorText, TX_CREATE_ERR, MB_OK);
+      HaveRequired := False;
+    end; {if CreatedNote.IEN}
+  end; {if HaveRequired}
+  if not HaveRequired then ClearEditControls;
+end;
+
+procedure TfrmSurgery.LoadForEdit;
+{ retrieves an existing note and places the data in the fields of pnlWrite }
+var
+  tmpNode: TTreeNode;
+  x: string;
+begin
+  ClearEditControls;
+  EditingIndex := lstNotes.ItemIndex;
+  Changes.Add(CH_SUR, lstNotes.ItemID, GetTitleText(EditingIndex), '', CH_SIGN_YES);
+  GetNoteForEdit(FEditNote, lstNotes.ItemIEN);
+  memNewNote.Lines.Assign(FEditNote.Lines);
+  FChanged := False;
+  if FEditNote.Title = TYP_ADDENDUM then
+  begin
+    FEditNote.DocType := TYP_ADDENDUM;
+    FEditNote.TitleName := Piece(lstNotes.Items[lstNotes.ItemIndex], U, 2);
+    if Copy(FEditNote.TitleName,1,1) = '+' then FEditNote.TitleName := Copy(FEditNote.TitleName, 3, 199);
+    if CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0
+      then FEditNote.TitleName := FEditNote.TitleName + 'Addendum to ';
+  end;
+
+  uChanging := True;
+  tvSurgery.Items.BeginUpdate;
+
+  tmpNode := tvSurgery.FindPieceNode('EDIT', 1, U, nil);
+  if tmpNode = nil then
+    begin
+      tmpNode := tvSurgery.Items.AddObjectFirst(tvSurgery.Items.GetFirstNode, 'Note being edited',
+                                              MakeCaseTreeObject('EDIT^Note being edited^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'EDIT^Note being edited^^^^^^^^^^^%^0';
+    end
+  else
+    tmpNode.DeleteChildren;
+  x := lstNotes.Items[lstNotes.ItemIndex];
+  tmpNode.ImageIndex := IMG_SURG_TOP_LEVEL;
+  tmpNode := tvSurgery.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(x), MakeCaseTreeObject(x));
+  TORTreeNode(tmpNode).StringData := x;
+  if CompareText(Copy(FEditNote.TitleName, 1, 8), 'Addendum') <> 0 then
+    tmpNode.ImageIndex := IMG_SURG_RPT_SINGLE
+  else
+    tmpNode.ImageIndex := IMG_SURG_ADDENDUM;
+  tmpNode.SelectedIndex := tmpNode.ImageIndex;
+  tvSurgery.Selected := tmpNode;
+  tvSurgery.Items.EndUpdate;
+  uChanging := False;
+
+  uPCEEdit.NoteDateTime := MakeFMDateTime(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+  uPCEEdit.PCEForNote(lstNotes.ItemIEN, uPCEShow);
+  FEditNote.NeedCPT := uPCEEdit.CPTRequired;
+  txtSubject.Text := FEditNote.Subject;
+  SetSubjectVisible(AskSubjectForNotes);
+  cmdChangeClick(Self); // will set captions, sign state for Changes
+  lstNotesClick(Self);  // will make pnlWrite visible
+  if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True;
+  memNewNote.SetFocus;
+end;
+
+procedure TfrmSurgery.SaveEditedNote(var Saved: Boolean);
+{ validates fields and sends the updated note to the server }
+var
+  UpdatedNote: TCreatedDoc;
+  x: string;
+begin
+  Saved := False;
+  if (memNewNote.GetTextLen = 0) or (not ContainsVisibleChar(memNewNote.Text)) then
+  begin
+    lstNotes.ItemIndex := EditingIndex;
+    x := lstNotes.ItemID;
+    uChanging := True;
+    with tvSurgery do Selected := FindPieceNode(x, 1, U, Items.GetFirstNode);
+    uChanging := False;
+    tvSurgeryChange(Self, tvSurgery.Selected);
+    if FSilent or
+       ((not FSilent) and
+      (InfoBox(GetTitleText(EditingIndex) + TX_EMPTY_NOTE, TC_EMPTY_NOTE, MB_YESNO) = IDYES))
+    then
+      begin
+        FConfirmed := True;
+        mnuActDeleteClick(Self);
+        Saved := True;
+        FDeleted := True;
+      end
+    else
+      FConfirmed := False;
+    Exit;
+  end;
+  //ExpandTabsFilter(memNewNote.Lines, TAB_STOP_CHARS);
+  FEditNote.Lines    := memNewNote.Lines;
+  FEditNote.Subject  := txtSubject.Text;
+  FEditNote.NeedCPT  := uPCEEdit.CPTRequired;
+  timAutoSave.Enabled := False;
+  try
+    PutEditedNote(UpdatedNote, FEditNote, lstNotes.GetIEN(EditingIndex));
+  finally
+    timAutoSave.Enabled := True;
+  end;
+  // there's no unlocking here since the note is still in Changes after a save
+  if UpdatedNote.IEN > 0 then
+  begin
+    if lstNotes.ItemIndex = EditingIndex then
+    begin
+      EditingIndex := -1;
+      lstNotesClick(Self);
+    end;
+    EditingIndex := -1; // make sure EditingIndex reset even if not viewing edited note
+    Saved := True;
+    FChanged := False;
+  end else
+  begin
+    if not FSilent then
+      InfoBox(TX_SAVE_ERROR1 + UpdatedNote.ErrorText + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  end;
+end;
+
+procedure TfrmSurgery.SaveCurrentNote(var Saved: Boolean);
+{ called whenever a note should be saved - uses IEN to call appropriate save logic }
+begin
+  if EditingIndex < 0 then Exit;
+  SaveEditedNote(Saved);
+end;
+
+{ Left panel (selector) events ------------------------------------------------------------- }
+
+procedure TfrmSurgery.cmdNewNoteClick(Sender: TObject);
+{ maps 'New Note' button to the New Progress Note menu item }
+begin
+  inherited;
+  mnuActNewClick(Self);
+end;
+
+procedure TfrmSurgery.cmdPCEClick(Sender: TObject);
+var
+  Refresh: boolean;
+  ActionSts: TActionRec;
+  AnIEN: integer;
+  PCEObj: TPCEData;
+
+begin
+  inherited;
+  cmdPCE.Enabled := False;
+  if not FEditingNotePCEObj then
+  begin
+    PCEObj := nil;
+    AnIEN := lstNotes.ItemIEN;
+    if (AnIEN <> 0) and (memSurgery.Lines.Count > 0) then
+    begin
+      ActOnDocument(ActionSts, AnIEN, 'VIEW');
+      if ActionSts.Success then
+      begin
+        uPCEShow.CopyPCEData(uPCEEdit);
+        PCEObj := uPCEEdit;
+      end;
+    end;
+    Refresh := EditPCEData(PCEObj);
+  end
+  else
+  begin
+    UpdatePCE(uPCEEdit);
+    Refresh := TRUE;
+  end;
+  cmdPCE.Enabled := True;
+  if Refresh and (not frmFrame.Closing) then
+    DisplayPCE;
+end;
+
+{ Right panel (editor) events -------------------------------------------------------------- }
+
+procedure TfrmSurgery.mnuActChangeClick(Sender: TObject);
+begin
+  inherited;
+  if (FEditingIndex < 0) or (lstNotes.ItemIndex <> FEditingIndex) then Exit;
+  cmdChangeClick(Sender);
+end;
+
+procedure TfrmSurgery.mnuActLoadBoilerClick(Sender: TObject);
+var
+  NoteEmpty: Boolean;
+  BoilerText: TStringList;
+  DocInfo: string;
+
+  procedure AssignBoilerText;
+  begin
+    ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+    QuickCopy(BoilerText, memNewNote);
+    FChanged := False;
+  end;
+
+begin
+  inherited;
+  if (FEditingIndex < 0) or (lstNotes.ItemIndex <> FEditingIndex) then Exit;
+  BoilerText := TStringList.Create;
+  try
+    NoteEmpty := memNewNote.Text = '';
+    LoadBoilerPlate(BoilerText, FEditNote.Title);
+    if (BoilerText.Text <> '') or
+       assigned(GetLinkedTemplate(IntToStr(FEditNote.Title), ltTitle)) then
+    begin
+      if NoteEmpty then AssignBoilerText else
+      begin
+        DocInfo := MakeXMLParamTIU(IntToStr(lstNotes.ItemIEN), FEditNote);
+        case QueryBoilerPlate(BoilerText) of
+        0:  { do nothing } ;                         // ignore
+        1: begin
+             ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo);
+             QuickAdd(BoilerText, memNewNote);  // append
+           end;
+        2: AssignBoilerText;                         // replace
+        end;
+      end;
+    end else
+    begin
+      if Sender = mnuActLoadBoiler
+        then InfoBox(TX_NO_BOIL, TC_NO_BOIL, MB_OK)
+        else
+        begin
+          if not NoteEmpty then
+            if not FChanged and (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES)
+              then memNewNote.Lines.Clear;
+        end;
+    end; {if BoilerText.Text <> ''}
+  finally
+    BoilerText.Free;
+  end;
+end;
+
+procedure TfrmSurgery.cmdChangeClick(Sender: TObject);
+const
+  IS_ID_CHILD = False;
+var
+  LastTitle: Integer;
+  OKPressed: boolean;
+  x, AClassName: string;
+begin
+  inherited;
+  LastTitle   := FEditNote.Title;
+  if IsNonORProcedure(FEditNote.PkgIEN) then AClassName := DCL_SURG_NON_OR else AClassName := DCL_SURG_OR;
+  if Sender <> Self then OKPressed := ExecuteNoteProperties(FEditNote, CT_SURGERY, IS_ID_CHILD, IS_ID_CHILD, AClassName, 0)
+    else OKPressed := True;
+  if not OKPressed then Exit;
+  // update display fields & uPCEEdit
+  lblNewTitle.Caption := ' ' + FEditNote.TitleName + ' ';
+  if (FEditNote.Addend > 0) and (CompareText(Copy(lblNewTitle.Caption, 2, 8), 'Addendum') <> 0)
+    then lblNewTitle.Caption := ' Addendum to:' + lblNewTitle.Caption;
+  with lblNewTitle do bvlNewTitle.SetBounds(Left - 1, Top - 1, Width + 2, Height + 2);
+  lblRefDate.Caption := FormatFMDateTime('mmm dd,yyyy@hh:nn', FEditNote.DateTime);
+  lblAuthor.Caption  := FEditNote.AuthorName;
+  if uPCEEdit.Inpatient then x := 'Adm: ' else x := 'Vst: ';
+  x := x + FormatFMDateTime('mm/dd/yy', FEditNote.VisitDate) + '  ' + FEditNote.LocationName;
+  lblVisit.Caption   := x;
+  if Length(FEditNote.CosignerName) > 0
+    then lblCosigner.Caption := 'Expected Cosigner: ' + FEditNote.CosignerName
+    else lblCosigner.Caption := '';
+  uPCEEdit.NoteTitle  := FEditNote.Title;
+  // modify signature requirements if author or cosigner changed
+  if (User.DUZ <> FEditNote.Author) and (User.DUZ <> FEditNote.Cosigner)
+    then Changes.ReplaceSignState(CH_SUR, lstNotes.ItemID, CH_SIGN_NA)
+    else Changes.ReplaceSignState(CH_SUR, lstNotes.ItemID, CH_SIGN_YES);
+  x := lstNotes.Items[EditingIndex];
+  SetPiece(x, U, 2, lblNewTitle.Caption);
+  SetPiece(x, U, 3, FloatToStr(FEditNote.DateTime));
+  tvSurgery.Selected.Text := MakeNoteDisplayText(x);
+  TORTreeNode(tvSurgery.Selected).StringData := x;
+  lstNotes.Items[EditingIndex] := x;
+  Changes.ReplaceText(CH_SUR, lstNotes.ItemID, GetTitleText(EditingIndex));
+  if LastTitle <> FEditNote.Title then mnuActLoadBoilerClick(Self);
+end;
+
+procedure TfrmSurgery.memNewNoteChange(Sender: TObject);
+begin
+  inherited;
+  FChanged := True;
+end;
+
+procedure TfrmSurgery.pnlFieldsResize(Sender: TObject);
+{ center the reference date on the panel }
+begin
+  inherited;
+  lblRefDate.Left := (pnlFields.Width - lblRefDate.Width) div 2;
+  if lblRefDate.Left < (lblNewTitle.Left + lblNewTitle.Width + 6)
+    then lblRefDate.Left := (lblNewTitle.Left + lblNewTitle.Width);
+end;
+
+procedure TfrmSurgery.DoAutoSave(Suppress: integer = 1);
+var
+  ErrMsg: string;
+begin
+  if fFrame.frmFrame.DLLActive = true then Exit;  
+  if (EditingIndex > -1) and FChanged then
+  begin
+    StatusText('Autosaving note...');
+    //PutTextOnly(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex));
+    timAutoSave.Enabled := False;
+    try
+      SetText(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex), Suppress);
+    finally
+      timAutoSave.Enabled := True;
+    end;
+    FChanged := False;
+    StatusText('');
+  end;
+  if ErrMsg <> '' then
+    InfoBox(TX_SAVE_ERROR1 + ErrMsg + TX_SAVE_ERROR2, TC_SAVE_ERROR, MB_OK or MB_ICONWARNING);
+  //Assert(ErrMsg = '', 'AutoSave: ' + ErrMsg);
+end;
+
+procedure TfrmSurgery.timAutoSaveTimer(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave;
+end;
+
+{ Action menu events ----------------------------------------------------------------------- }
+
+function TfrmSurgery.StartNewEdit(NewNoteType: integer): Boolean;
+{ if currently editing a note, returns TRUE if the user wants to start a new one }
+var
+  Saved: Boolean;
+  Msg, CapMsg: string;
+begin
+  Result := True;
+  if EditingIndex > -1 then
+  begin
+    case NewNoteType of
+      NT_ACT_ADDENDUM:  begin
+                          Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE3;
+                          CapMsg := TC_NEW_SAVE3;
+                        end;
+      NT_ACT_EDIT_NOTE: begin
+                          Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE4;
+                          CapMsg := TC_NEW_SAVE4;
+                        end;
+    else
+      begin
+        Msg := TX_NEW_SAVE1 + MakeNoteDisplayText(lstNotes.Items[EditingIndex]) + TX_NEW_SAVE2;
+        CapMsg := TC_NEW_SAVE2;
+      end;
+    end;
+    if InfoBox(Msg, CapMsg, MB_YESNO) = IDNO then Result := False
+    else
+      begin
+        SaveCurrentNote(Saved);
+        if not Saved then Result := False else LoadSurgeryCases;
+      end;
+  end;
+end;
+
+procedure TfrmSurgery.mnuActNewClick(Sender: TObject);
+const
+  IS_ID_CHILD = False;
+{ switches to current new note or creates a new note if none is being edited already }
+begin
+  inherited;
+  if not StartNewEdit(NT_ACT_NEW_NOTE) then Exit;
+  //LoadNotes;
+  // make sure a visit (time & location) is available before creating the note
+  if Encounter.NeedVisit then
+  begin
+    UpdateVisit(Font.Size, DfltTIULocation);
+    frmFrame.DisplayEncounterText;
+  end;
+  if Encounter.NeedVisit then
+  begin
+    InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+    Exit;
+  end;
+  InsertNewNote(IS_ID_CHILD, 0);
+end;
+
+
+procedure TfrmSurgery.mnuActAddendClick(Sender: TObject);
+{ make an addendum to an existing note }
+var
+  ActionSts: TActionRec;
+  ANoteID: string;
+begin
+  inherited;
+  if lstNotes.ItemIEN <= 0 then Exit;
+  ANoteID := lstNotes.ItemID;
+  if not StartNewEdit(NT_ACT_ADDENDUM) then Exit;
+  //LoadNotes;
+  with tvSurgery do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);
+  if lstNotes.ItemIndex = EditingIndex then
+  begin
+    InfoBox(TX_ADDEND_NO, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'MAKE ADDENDUM');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  with lstNotes do if TitleForNote(lstNotes.ItemIEN) = TYP_ADDENDUM then
+  begin
+    InfoBox(TX_ADDEND_AD, TX_ADDEND_MK, MB_OK);
+    Exit;
+  end;
+  InsertAddendum;
+end;
+
+
+procedure TfrmSurgery.mnuActSignListClick(Sender: TObject);
+{ add the note to the Encounter object, see mnuActSignClick - copied}
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  ActionType, SignTitle: string;
+  ActionSts: TActionRec;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then Exit;
+  if lstNotes.ItemIndex = EditingIndex then Exit;  // already in signature list
+  if not NoteHasText(lstNotes.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstNotes.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstNotes.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, ActionType);
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  with lstNotes do Changes.Add(CH_SUR, ItemID, GetTitleText(ItemIndex), '', CH_SIGN_YES);
+end;
+
+procedure TfrmSurgery.RemovePCEFromChanges(IEN: Int64; AVisitStr: string = '');
+begin
+  if IEN = NT_ADDENDUM then Exit;  // no PCE information entered for an addendum
+  // do we need to call DeletePCE(AVisitStr), as was done with NT_NEW_NOTE (ien=-10)???
+  if AVisitStr = '' then AVisitStr := VisitStrForNote(IEN);
+  Changes.Remove(CH_PCE, 'V' + AVisitStr);
+  Changes.Remove(CH_PCE, 'P' + AVisitStr);
+  Changes.Remove(CH_PCE, 'D' + AVisitStr);
+  Changes.Remove(CH_PCE, 'I' + AVisitStr);
+  Changes.Remove(CH_PCE, 'S' + AVisitStr);
+  Changes.Remove(CH_PCE, 'A' + AVisitStr);
+  Changes.Remove(CH_PCE, 'H' + AVisitStr);
+  Changes.Remove(CH_PCE, 'E' + AVisitStr);
+  Changes.Remove(CH_PCE, 'T' + AVisitStr);
+end;
+
+procedure TfrmSurgery.mnuActDeleteClick(Sender: TObject);
+{ delete the selected progress note & remove from the Encounter object if necessary }
+var
+  DeleteSts, ActionSts: TActionRec;
+  SavedDocIEN: Integer;
+  ReasonForDelete, AVisitStr, SavedDocID, ErrMsg: string;
+  Saved: boolean;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then Exit;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'DELETE RECORD');
+  if ShowMsgOn(not ActionSts.Success, ActionSts.Reason, TX_IN_AUTH) then Exit;
+  ReasonForDelete := SelectDeleteReason(lstNotes.ItemIEN);
+  if ReasonForDelete = DR_CANCEL then Exit;
+  // suppress prompt for deletion when called from SaveEditedNote (Sender = Self)
+  if (Sender <> Self) and (InfoBox(MakeNoteDisplayText(lstNotes.Items[lstNotes.ItemIndex]) + TX_DEL_OK,
+    TX_DEL_CNF, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) <> IDYES) then Exit;
+  // do the appropriate locking
+  ErrMsg := '';
+  LockDocument(lstNotes.ItemIEN, ErrMsg);
+  if ErrMsg <> '' then
+    begin
+      InfoBox(ErrMsg, TC_NO_LOCK, MB_OK);
+      Exit;
+    end;
+  // retraction notification message
+  if JustifyDocumentDelete(lstNotes.ItemIEN) then
+     InfoBox(TX_RETRACT, TX_RETRACT_CAP, MB_OK);
+  SavedDocID := lstNotes.ItemID;
+  SavedDocIEN := lstNotes.ItemIEN;
+  if (EditingIndex > -1) and (not FConfirmed) and (lstNotes.ItemIndex <> EditingIndex) and (memNewNote.GetTextLen > 0) then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+    end;
+  EditingIndex := -1;
+  FConfirmed := False;
+  // remove the note
+  DeleteSts.Success := True;
+  AVisitStr := VisitStrForNote(SavedDocIEN);
+  RemovePCEFromChanges(SavedDocIEN, AVisitStr);
+  if (SavedDocIEN > 0) and (lstNotes.ItemIEN = SavedDocIEN) then DeleteDocument(DeleteSts, SavedDocIEN, ReasonForDelete);
+  if not Changes.Exist(CH_SUR, SavedDocID) then UnlockDocument(SavedDocIEN);
+  Changes.Remove(CH_SUR, SavedDocID);  // this will unlock the document if in Changes
+  // reset the display now that the note is gone
+  if DeleteSts.Success then
+  begin
+    DeletePCE(AVisitStr);  // removes PCE data if this was the only note pointing to it
+    ClearEditControls;
+    LoadSurgeryCases;
+      pnlWrite.Visible := False;
+      pnlRead.Visible := True;
+      UpdateReminderFinish;
+      ShowPCEControls(False);
+      frmDrawers.DisplayDrawers(TRUE, [odTemplates], [odTemplates]); //FALSE);
+      ShowPCEButtons(FALSE);
+    //end; {if ItemIndex}
+  end {if DeleteSts}
+  else InfoBox(DeleteSts.Reason, TX_DEL_ERR, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmSurgery.mnuActEditClick(Sender: TObject);
+{ load the selected progress note for editing }
+var
+  ActionSts: TActionRec;
+  ANoteID: string;
+begin
+  inherited;
+  if lstNotes.ItemIndex = EditingIndex then Exit;
+  ANoteID := lstNotes.ItemID;
+  if not StartNewEdit(NT_ACT_EDIT_NOTE) then Exit;
+  //LoadNotes;
+  with tvSurgery do Selected := FindPieceNode(ANoteID, 1, U, Items.GetFirstNode);
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'EDIT RECORD');
+  if not ActionSts.Success then
+  begin
+    InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+    Exit;
+  end;
+  LoadForEdit;
+end;
+
+procedure TfrmSurgery.mnuActSaveClick(Sender: TObject);
+{ saves the note that is currently being edited }
+var
+  Saved: Boolean;
+  SavedDocID: string;
+begin
+  inherited;
+  if EditingIndex > -1 then
+    begin
+      SavedDocID := Piece(lstNotes.Items[EditingIndex], U, 1);
+      FLastNoteID := SavedDocID;
+      SaveCurrentNote(Saved);
+      if Saved and (EditingIndex < 0) and (not FDeleted) then
+      //if Saved then
+        begin
+          LoadSurgeryCases;
+          with tvSurgery do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+       end;
+    end
+  else InfoBox(TX_NO_NOTE, TX_SAVE_NOTE, MB_OK or MB_ICONWARNING);
+end;
+
+procedure TfrmSurgery.mnuActSignClick(Sender: TObject);
+{ sign the currently selected note, save first if necessary }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  Saved, NoteUnlocked: Boolean;
+  ActionType, ESCode, SignTitle: string;
+  ActionSts, SignSts: TActionRec;
+  OK: boolean;
+  SavedDocID, tmpItem: string;
+  EditingID: string;                                         //v22.12 - RV
+  tmpNode: TTreeNode;
+begin
+  inherited;
+(*  if lstNotes.ItemIndex = EditingIndex then                //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentNote(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+    tmpItem := lstNotes.Items[EditingIndex];                 //v22.12 - RV
+  SavedDocID := lstNotes.ItemID;*)                           //v22.12 - RV
+  SavedDocID := lstNotes.ItemID;                             //v22.12 - RV
+  FLastNoteID := SavedDocID;                                 //v22.12 - RV
+  if lstNotes.ItemIndex = EditingIndex then                  //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    SaveCurrentNote(Saved);                                  //v22.12 - RV
+    if (not Saved) or FDeleted then Exit;                    //v22.12 - RV
+  end                                                        //v22.12 - RV
+  else if EditingIndex > -1 then                             //v22.12 - RV
+  begin                                                      //v22.12 - RV
+    tmpItem := lstNotes.Items[EditingIndex];                 //v22.12 - RV
+    EditingID := Piece(tmpItem, U, 1);                       //v22.12 - RV
+  end;                                                       //v22.12 - RV
+  if not NoteHasText(lstNotes.ItemIEN) then
+    begin
+      InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+      Exit;
+    end;
+  if not LastSaveClean(lstNotes.ItemIEN) and
+    (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES) then Exit;
+  if CosignDocument(lstNotes.ItemIEN) then
+  begin
+    SignTitle := TX_COSIGN;
+    ActionType := SIG_COSIGN;
+  end else
+  begin
+    SignTitle := TX_SIGN;
+    ActionType := SIG_SIGN;
+  end;
+  // no exits after things are locked
+  NoteUnlocked := False;
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, ActionType);
+  if ActionSts.Success then
+  begin
+    OK := IsOK2Sign(uPCEShow, lstNotes.ItemIEN);
+    if frmFrame.Closing then exit;
+    if(uPCEShow.Updated) then
+    begin
+      uPCEShow.CopyPCEData(uPCEEdit);
+      uPCEShow.Updated := FALSE;
+      lstNotesClick(Self);
+    end;
+    if(OK) then
+    begin
+      //DisplayOpTop(lstNotes.ItemIEN);        v24.2 - RV
+      with lstNotes do SignatureForItem(Font.Size, MakeNoteDisplayText(Items[ItemIndex]), SignTitle, ESCode);
+      if Length(ESCode) > 0 then
+      begin
+        SignDocument(SignSts, lstNotes.ItemIEN, ESCode);
+        RemovePCEFromChanges(lstNotes.ItemIEN);
+        NoteUnlocked := Changes.Exist(CH_SUR, lstNotes.ItemID);
+        Changes.Remove(CH_SUR, lstNotes.ItemID);  // this will unlock if in Changes
+        if SignSts.Success then
+        begin
+          SendMessage(frmConsults.Handle, UM_NEWORDER, ORDER_SIGN, 0);      {*REV*}
+          lstNotesClick(Self);
+        end
+        else InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end; {if Length(ESCode)}
+    end;
+  end
+  else InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+  if not NoteUnlocked then UnlockDocument(lstNotes.ItemIEN);
+  LoadSurgeryCases;
+  //if EditingIndex > -1 then         //v22.12 - RV
+  if (EditingID <> '') then           //v22.12 - RV
+    begin
+      lstNotes.Items.Insert(0, tmpItem);
+      tmpNode := tvSurgery.Items.AddObjectFirst(tvSurgery.Items.GetFirstNode, 'Note being edited',
+                 MakeCaseTreeObject('EDIT^Note being edited^^^^^^^^^^^%^0'));
+      TORTreeNode(tmpNode).StringData := 'EDIT^Note being edited^^^^^^^^^^^%^0';
+      tmpNode.ImageIndex := IMG_SURG_TOP_LEVEL;
+      tmpNode := tvSurgery.Items.AddChildObjectFirst(tmpNode, MakeNoteDisplayText(tmpItem), MakeCaseTreeObject(tmpItem));
+      TORTreeNode(tmpNode).StringData := tmpItem;
+      SetCaseTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentContext);
+      EditingIndex := lstNotes.SelectByID(EditingID);                 //v22.12 - RV
+    end;
+  //with tvSurgery do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);  //v22.12 - RV
+  with tvSurgery do                                                                  //v22.12 - RV
+  begin                                                                              //v22.12 - RV
+    Selected := FindPieceNode(FLastNoteID, U, Items.GetFirstNode);                   //v22.12 - RV
+    if Selected <> nil then tvSurgeryChange(Self, Selected);                         //v22.12 - RV
+  end;                                                                               //v22.12 - RV
+end;
+
+procedure TfrmSurgery.SaveSignItem(const ItemID, ESCode: string);
+{ saves and optionally signs a progress note or addendum }
+const
+  SIG_COSIGN = 'COSIGNATURE';
+  SIG_SIGN   = 'SIGNATURE';
+var
+  AnIndex, IEN, i: Integer;
+  Saved, ContinueSign: Boolean;  {*RAB* 8/26/99}
+  ActionSts, SignSts: TActionRec;
+  APCEObject: TPCEData;
+  OK: boolean;
+  ActionType, SignTitle: string;
+begin
+  AnIndex := -1;
+  IEN := StrToIntDef(ItemID, 0);
+  if IEN = 0 then Exit;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then FSilent := True;
+  with lstNotes do for i := 0 to Items.Count - 1 do if lstNotes.GetIEN(i) = IEN then
+  begin
+    AnIndex := i;
+    break;
+  end;
+  if (AnIndex > -1) and (AnIndex = EditingIndex) then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+    if FDeleted then
+      begin
+        FDeleted := False;
+        Exit;
+      end;
+    AnIndex := lstNotes.SelectByIEN(IEN);
+    //IEN := lstNotes.GetIEN(AnIndex);                    // saving will change IEN
+  end;
+  if Length(ESCode) > 0 then
+  begin
+    if CosignDocument(IEN) then
+    begin
+      SignTitle := TX_COSIGN;
+      ActionType := SIG_COSIGN;
+    end else
+    begin
+      SignTitle := TX_SIGN;
+      ActionType := SIG_SIGN;
+    end;
+    ActOnDocument(ActionSts, IEN, ActionType);
+    if not ActionSts.Success then
+      begin
+        InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+        ContinueSign := False;
+      end
+    else if not NoteHasText(IEN) then
+      begin
+        InfoBox(TX_EMPTY_NOTE1, TC_EMPTY_NOTE, MB_OK or MB_ICONERROR);
+        ContinueSign := False;
+      end
+    else if not LastSaveClean(IEN) and
+      (InfoBox(TX_ABSAVE, TC_ABSAVE, MB_YESNO or MB_DEFBUTTON2 or MB_ICONWARNING) <> IDYES)
+       then ContinueSign := False
+    else ContinueSign := True;
+    if ContinueSign then
+    begin
+      if (AnIndex >= 0) and (AnIndex = lstNotes.ItemIndex) then
+        APCEObject := uPCEShow
+      else
+        APCEObject := nil;
+      OK := IsOK2Sign(APCEObject, IEN);
+      if frmFrame.Closing then exit;
+      if(assigned(APCEObject)) and (uPCEShow.Updated) then
+      begin
+        uPCEShow.CopyPCEData(uPCEEdit);
+        uPCEShow.Updated := FALSE;
+        lstNotesClick(Self);
+      end
+      else
+        uPCEEdit.Clear;
+      if(OK) then
+      begin
+        //if not FSilent then DisplayOpTop(IEN);
+        SignDocument(SignSts, IEN, ESCode);
+        if not SignSts.Success then InfoBox(SignSts.Reason, TX_SIGN_ERR, MB_OK);
+      end; {if OK}
+    end; {if ContinueSign}
+  end; {if Length(ESCode)}
+
+  if (AnIndex = lstNotes.ItemIndex) and (not frmFrame.ContextChanging) then
+    begin
+      LoadSurgeryCases;                    //????????????????
+      with tvSurgery do Selected := FindPieceNode(IntToStr(IEN), U, Items.GetFirstNode);
+    end;
+end;
+
+procedure TfrmSurgery.popNoteMemoPopup(Sender: TObject);
+begin
+  inherited;
+  if PopupComponent(Sender, popNoteMemo) is TCustomEdit
+    then FEditCtrl := TCustomEdit(PopupComponent(Sender, popNoteMemo))
+    else FEditCtrl := nil;
+  if FEditCtrl <> nil then
+  begin
+    popNoteMemoCut.Enabled      := FEditCtrl.SelLength > 0;
+    popNoteMemoCopy.Enabled     := popNoteMemoCut.Enabled;
+    popNoteMemoPaste.Enabled    := (not TORExposedCustomEdit(FEditCtrl).ReadOnly) and
+                                   Clipboard.HasFormat(CF_TEXT);
+    popNoteMemoTemplate.Enabled := frmDrawers.CanEditTemplates and popNoteMemoCut.Enabled;
+    popNoteMemoFind.Enabled := FEditCtrl.GetTextLen > 0;
+  end else
+  begin
+    popNoteMemoCut.Enabled      := False;
+    popNoteMemoCopy.Enabled     := False;
+    popNoteMemoPaste.Enabled    := False;
+    popNoteMemoTemplate.Enabled := False;
+  end;
+  if pnlWrite.Visible then
+  begin
+    popNoteMemoSpell.Enabled    := True;
+    popNoteMemoGrammar.Enabled  := True;
+    popNoteMemoReformat.Enabled := True;
+    popNoteMemoReplace.Enabled  := (FEditCtrl.GetTextLen > 0);
+    popNoteMemoPreview.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+    popNoteMemoInsTemplate.Enabled  := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected);
+  end else
+  begin
+    popNoteMemoSpell.Enabled    := False;
+    popNoteMemoGrammar.Enabled  := False;
+    popNoteMemoReformat.Enabled := False;
+    popNoteMemoReplace.Enabled  := False;
+    popNoteMemoPreview.Enabled  := False;
+    popNoteMemoInsTemplate.Enabled  := False;
+  end;
+end;
+
+procedure TfrmSurgery.popNoteMemoCutClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CutToClipboard;
+end;
+
+procedure TfrmSurgery.popNoteMemoCopyClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.CopyToClipboard;
+end;
+
+procedure TfrmSurgery.popNoteMemoPasteClick(Sender: TObject);
+begin
+  inherited;
+  FEditCtrl.SelText := Clipboard.AsText; {*KCM*}
+  //FEditCtrl.PasteFromClipboard;        // use AsText to prevent formatting
+end;
+
+procedure TfrmSurgery.popNoteMemoReformatClick(Sender: TObject);
+begin
+  inherited;
+  if Screen.ActiveControl <> memNewNote then Exit;
+  ReformatMemoParagraph(memNewNote);
+end;
+
+procedure TfrmSurgery.popNoteMemoSaveContinueClick(Sender: TObject);
+begin
+  inherited;
+  FChanged := True;
+  DoAutoSave;
+end;
+
+procedure TfrmSurgery.popNoteMemoReplaceClick(Sender: TObject);
+begin
+  inherited;
+  SendMessage(TRichEdit(popNoteMemo.PopupComponent).Handle, WM_VSCROLL, SB_TOP, 0);
+  with dlgReplaceText do
+    begin
+      Position := Point(Application.MainForm.Left + pnlLeft.Width, Application.MainForm.Top);
+      FindText := '';
+      ReplaceText := '';
+      Options := [frDown, frHideUpDown];
+      Execute;
+    end;
+end;
+
+procedure TfrmSurgery.dlgReplaceTextFind(Sender: TObject);
+begin
+  inherited;
+  dmodShared.FindRichEditText(dlgFindText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmSurgery.dlgReplaceTextReplace(Sender: TObject);
+begin
+  inherited;
+  dmodShared.ReplaceRichEditText(dlgReplaceText, TRichEdit(popNoteMemo.PopupComponent));
+end;
+
+procedure TfrmSurgery.popNoteMemoSpellClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    SpellCheckForControl(memNewNote);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmSurgery.popNoteMemoGrammarClick(Sender: TObject);
+begin
+  inherited;
+  DoAutoSave(0);
+  timAutoSave.Enabled := False;
+  try
+    GrammarCheckForControl(memNewNote);
+  finally
+    FChanged := True;
+    DoAutoSave(0);
+    timAutoSave.Enabled := True;
+  end;
+end;
+
+procedure TfrmSurgery.mnuViewDetailClick(Sender: TObject);
+var
+  x: string;
+begin
+  inherited;
+  with tvSurgery do
+    begin
+      if Selected = nil then exit;
+      if not (Selected.ImageIndex in [IMG_SURG_TOP_LEVEL, IMG_SURG_GROUP_SHUT, IMG_SURG_GROUP_OPEN,
+                                      IMG_SURG_NON_OR_CASE_EMPTY, IMG_SURG_NON_OR_CASE_SHUT, IMG_SURG_NON_OR_CASE_OPEN,
+                                      IMG_SURG_CASE_EMPTY, IMG_SURG_CASE_SHUT, IMG_SURG_CASE_OPEN]) then
+        begin
+          mnuViewDetail.Checked := not mnuViewDetail.Checked;
+          if mnuViewDetail.Checked then
+            begin
+              x := TORTreeNode(Selected).StringData;
+              StatusText('Retrieving selected surgery report details...');
+              pnlRead.Visible := True;
+              pnlWrite.Visible := False;
+              Screen.Cursor := crHourGlass;
+              LoadSurgReportDetail(memSurgery.Lines, StrToIntDef(Piece(x, U, 1), 0));
+              Screen.Cursor := crDefault;
+              StatusText('');
+              memSurgery.SelStart := 0;
+              memSurgery.Repaint;
+            end
+          else
+            tvSurgeryChange(Self, Selected);
+        end;
+    end;
+  SendMessage(memSurgery.Handle, WM_VSCROLL, SB_TOP, 0);
+end;
+
+procedure TfrmSurgery.FormClose(Sender: TObject; var Action: TCloseAction);
+var
+  Saved: Boolean;
+  IEN: Int64;
+  ErrMsg: string;
+  DeleteSts: TActionRec;
+begin
+  inherited;
+  if frmFrame.TimedOut and (EditingIndex <> -1) then
+  begin
+    FSilent := True;
+    if memNewNote.GetTextLen > 0 then SaveCurrentNote(Saved)
+    else
+    begin
+      IEN := lstNotes.GetIEN(EditingIndex);
+      if not LastSaveClean(IEN) then             // means note hasn't been committed yet
+      begin
+        LockDocument(IEN, ErrMsg);
+        if ErrMsg = '' then
+        begin
+          DeleteDocument(DeleteSts, IEN, '');
+          UnlockDocument(IEN);
+        end; {if ErrMsg}
+      end; {if not LastSaveClean}
+    end; {else}
+  end; {if frmFrame}
+end;
+
+procedure TfrmSurgery.mnuActIdentifyAddlSignersClick(Sender: TObject);
+var
+  Exclusions: TStrings;
+  Saved, x, y: boolean;
+  SignerList: TSignerList;
+  ActionSts: TActionRec;
+  SigAction: integer;
+  SavedDocID: string;
+  ARefDate: TFMDateTime;
+begin
+  inherited;
+  if lstNotes.ItemIEN = 0 then exit;
+  SavedDocID := lstNotes.ItemID;
+  if lstNotes.ItemIndex = EditingIndex then
+    begin
+      SaveCurrentNote(Saved);
+      if not Saved then Exit;
+      LoadSurgeryCases;
+      with tvSurgery do Selected := FindPieceNode(SavedDocID, U, Items.GetFirstNode);
+    end;
+  x := CanChangeCosigner(lstNotes.ItemIEN);
+  ActOnDocument(ActionSts, lstNotes.ItemIEN, 'IDENTIFY SIGNERS');
+  y := ActionSts.Success;
+  if x and not y then
+    begin
+      if InfoBox(ActionSts.Reason + CRLF + CRLF +
+                 'Would you like to change the cosigner?',
+                 TX_IN_AUTH, MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES then
+    	SigAction := SG_COSIGNER
+      else
+	Exit;
+    end
+  else if y and not x then SigAction := SG_ADDITIONAL
+  else if x and y then SigAction := SG_BOTH
+  else
+    begin
+      InfoBox(ActionSts.Reason, TX_IN_AUTH, MB_OK);
+      Exit;
+    end;
+
+  Exclusions := GetCurrentSigners(lstNotes.ItemIEN);
+  ARefDate := StrToFloat(Piece(lstNotes.Items[lstNotes.ItemIndex], U, 3));
+  SelectAdditionalSigners(Font.Size, lstNotes.ItemIEN, SigAction, Exclusions, SignerList, CT_NOTES, ARefDate);
+  with SignerList do
+    begin
+      case SigAction of
+        SG_ADDITIONAL:  if Changed and (Signers <> nil) and (Signers.Count > 0) then
+                          UpdateAdditionalSigners(lstNotes.ItemIEN, Signers);
+        SG_COSIGNER:    if Changed then ChangeCosigner(lstNotes.ItemIEN, Cosigner);
+        SG_BOTH:        if Changed then
+                          begin
+                            if (Signers <> nil) and (Signers.Count > 0) then
+                              UpdateAdditionalSigners(lstNotes.ItemIEN, Signers);
+                            ChangeCosigner(lstNotes.ItemIEN, Cosigner);
+                          end;
+      end;
+      lstNotesClick(Self);
+    end;
+  UnlockDocument(lstNotes.ItemIEN);
+end;
+
+procedure TfrmSurgery.popNoteMemoAddlSignClick(Sender: TObject);
+begin
+  inherited;
+  mnuActIdentifyAddlSignersClick(Self);
+end;
+
+procedure TfrmSurgery.ProcessNotifications;
+var
+  x: string;
+  Saved: boolean;
+  //tmpNode: TTreeNode;
+  //AnObject: PCaseTreeObject;
+  tmpList: TStringList;
+begin
+  if EditingIndex <> -1 then
+  begin
+    SaveCurrentNote(Saved);
+    if not Saved then Exit;
+  end;
+  lblCases.Caption := Notifications.Text;
+  tvSurgery.Caption := lblCases.Caption;
+  EditingIndex := -1;
+  lstNotes.Enabled := True ;
+  pnlRead.BringToFront ;
+  //  show ALL unsigned/uncosigned for a patient, not just the alerted one
+  //  what about cosignature?  How to get correct list?  ORB FOLLOWUP TYPE = OR alerts only
+  x := Notifications.AlertData;
+  if StrToIntDef(Piece(x, U, 1), 0) = 0 then
+    begin
+      InfoBox(TX_NO_ALERT, TX_CAP_NO_ALERT, MB_OK);
+      Exit;
+    end;
+  tmpList := TStringList.Create;
+  try
+    FCaseList.Clear;
+    uChanging := True;
+    tvSurgery.Items.BeginUpdate;
+    lstNotes.Clear;
+    KillCaseTreeObjects(tvSurgery);
+    tvSurgery.Items.Clear;
+    GetSingleCaseListItemWithDocs(tmpList, StrToIntDef(Piece(x, U, 1), 0));
+    with FCurrentContext do CreateListItemsForCaseTree(FCaseList, tmpList, SR_ALL, GroupBy, TreeAscending);
+    UpdateTreeView(FCaseList, tvSurgery);
+    with tvSurgery do Selected := FindPieceNode(Piece(x, U, 1), 1, U, Items.GetFirstNode);
+    (*  lstNotes.Items.Add(x);
+    AnObject := MakeCaseTreeObject('ALERT^Alerted Note^^^^^^^^^^^%^0');
+    tmpNode := tvSurgery.Items.AddObjectFirst(tvSurgery.Items.GetFirstNode, AnObject.NodeText, AnObject);
+    TORTreeNode(tmpNode).StringData := 'ALERT^Alerted Note^^^^^^^^^^^%^0';
+    tmpNode.ImageIndex := IMG_SURG_TOP_LEVEL;
+    AnObject := MakeCaseTreeObject(x);
+    tmpNode := tvSurgery.Items.AddChildObjectFirst(tmpNode, AnObject.NodeText, AnObject);
+    TORTreeNode(tmpNode).StringData := x;
+    SetCaseTreeNodeImagesAndFormatting(TORTreeNode(tmpNode), FCurrentContext);
+    tvSurgery.Selected := tmpNode;*)
+    tvSurgery.Items.EndUpdate;
+    uChanging := False;
+    tvSurgeryChange(Self, tvSurgery.Selected);
+    case Notifications.Followup of
+      NF_SURGERY_UNSIGNED_NOTE:   ;  //Automatically deleted by sig action!!!
+    end;
+    if Copy(Piece(Notifications.RecordID, U, 2), 1, 6) = 'TIUADD' then Notifications.Delete;
+    if Copy(Piece(Notifications.RecordID, U, 2), 1, 5) = 'TIUID' then Notifications.Delete;
+  finally
+    tmpList.Free;
+  end;
+end;
+
+procedure TfrmSurgery.mnuViewSaveAsDefaultClick(Sender: TObject);
+begin
+  inherited;
+  if InfoBox('Replace current defaults?', 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+    begin
+      SaveCurrentSurgCaseContext(FCurrentContext);
+      FDefaultContext := FCurrentContext;
+      lblCases.Caption := 'Default List';
+      tvSurgery.Caption := lblCases.Caption;
+    end;
+end;
+
+procedure TfrmSurgery.mnuViewReturntoDefaultClick(Sender: TObject);
+begin
+  inherited;
+  SetViewContext(FDefaultContext);
+end;
+
+procedure TfrmSurgery.popNoteMemoTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE, FEditCtrl.SelText);
+end;
+
+procedure TfrmSurgery.popNoteListPopup(Sender: TObject);
+begin
+  inherited;
+  N4.Visible                          := (popNoteList.PopupComponent is TORTreeView);
+  popNoteListExpandAll.Visible        := N4.Visible;
+  popNoteListExpandSelected.Visible   := N4.Visible;
+  popNoteListCollapseAll.Visible      := N4.Visible;
+  popNoteListCollapseSelected.Visible := N4.Visible;
+end;
+
+procedure TfrmSurgery.popNoteListExpandAllClick(Sender: TObject);
+begin
+  inherited;
+  tvSurgery.FullExpand;
+end;
+
+procedure TfrmSurgery.popNoteListCollapseAllClick(Sender: TObject);
+begin
+  inherited;
+  tvSurgery.Selected := nil;
+  memSurgery.Clear;
+  tvSurgery.FullCollapse;
+  tvSurgery.Selected := tvSurgery.TopItem;
+end;
+
+procedure TfrmSurgery.popNoteListExpandSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if tvSurgery.Selected = nil then exit;
+  with tvSurgery.Selected do if HasChildren then Expand(True);
+end;
+
+procedure TfrmSurgery.popNoteListCollapseSelectedClick(Sender: TObject);
+begin
+  inherited;
+  if tvSurgery.Selected = nil then exit;
+  with tvSurgery.Selected do if HasChildren then Collapse(True);
+end;
+
+procedure TfrmSurgery.mnuEditTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self);
+end;
+
+procedure TfrmSurgery.mnuNewTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE);
+end;
+
+procedure TfrmSurgery.mnuEditSharedTemplatesClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, FALSE, '', TRUE);
+end;
+
+procedure TfrmSurgery.mnuNewSharedTemplateClick(Sender: TObject);
+begin
+  inherited;
+  EditTemplates(Self, TRUE, '', TRUE);
+end;
+
+procedure TfrmSurgery.mnuOptionsClick(Sender: TObject);
+begin
+  inherited;
+  mnuEditTemplates.Enabled := frmDrawers.CanEditTemplates;
+  mnuNewTemplate.Enabled := frmDrawers.CanEditTemplates;
+  mnuEditSharedTemplates.Enabled := frmDrawers.CanEditShared;
+  mnuNewSharedTemplate.Enabled := frmDrawers.CanEditShared;
+  mnuEditDialgFields.Enabled := CanEditTemplateFields;
+end;
+
+procedure TfrmSurgery.SetEditingIndex(const Value: Integer);
+begin
+  FEditingIndex := Value;
+  if(FEditingIndex < 0) then
+    KillReminderDialog(Self);
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.EnableActions;
+end;
+
+(*function TfrmSurgery.CanFinishReminder: boolean;
+begin
+  Result := False;
+  if(EditingIndex < 0) then
+    Result := FALSE
+  else
+    Result := (lstNotes.ItemIndex = EditingIndex);
+end;*)
+
+procedure TfrmSurgery.AssignRemForm;
+begin
+(*  with RemForm do
+  begin
+    Form := Self;
+    PCEObj := uPCEEdit;
+    RightPanel := pnlRight;
+    CanFinishProc := CanFinishReminder;
+    DisplayPCEProc := DisplayPCE;
+    Drawers := frmDrawers;
+    NewNoteRE := memNewNote;
+    NoteList := lstNotes;
+  end;*)
+end;
+
+procedure TfrmSurgery.mnuEditDialgFieldsClick(Sender: TObject);
+begin
+  inherited;
+  EditDialogFields;
+end;
+
+
+procedure TfrmSurgery.tvSurgeryClick(Sender: TObject);
+begin
+  if tvSurgery.Selected = nil then exit;
+  if (tvSurgery.Selected.ImageIndex in [IMG_SURG_TOP_LEVEL, IMG_SURG_GROUP_OPEN, IMG_SURG_GROUP_SHUT]) then
+    memSurgery.Clear;
+end;
+
+procedure TfrmSurgery.ShowPCEButtons(Editing: boolean);
+begin
+  FEditingNotePCEObj := Editing;
+  if Editing or AnytimeEncounters then
+  begin
+    cmdPCE.Visible := TRUE;
+    if Editing then
+    begin
+      cmdPCE.Enabled := CanEditPCE(uPCEEdit);
+{ TODO -oRich V. -cSurgery/TIU : Uncomment if allow new notes from Surgery tab }
+      //cmdNewNote.Visible := AnytimeEncounters;
+      //cmdNewNote.Enabled := FALSE;
+    end
+    else
+    begin
+      cmdPCE.Enabled     := (GetAskPCE(0) <> apDisable);
+{ TODO -oRich V. -cSurgery/TIU : Uncomment if allow new notes from Surgery tab }
+      //cmdNewNote.Visible := TRUE;
+      //cmdNewNote.Enabled := TRUE;
+    end;
+    if cmdNewNote.Visible then
+      cmdPCE.Top := cmdNewNote.Top-cmdPCE.Height;
+  end
+  else
+  begin
+    cmdPCE.Enabled := FALSE;
+    cmdPCE.Visible := FALSE;
+{ TODO -oRich V. -cSurgery/TIU : Uncomment if allow new notes from Surgery tab }
+    //cmdNewNote.Visible := TRUE;
+    //cmdNewNote.Enabled := TRUE;
+  end;
+  if cmdPCE.Visible then
+    lblSpace1.Top := cmdPCE.Top - lblSpace1.Height
+  else
+    lblSpace1.Top := cmdNewNote.Top - lblSpace1.Height;
+  popNoteMemoEncounter.Enabled := cmdPCE.Enabled;
+  popNoteMemoEncounter.Visible := cmdPCE.Visible;
+end;
+
+procedure TfrmSurgery.mnuIconLegendClick(Sender: TObject);
+begin
+  inherited;
+  ShowIconLegend(ilSurgery);
+end;
+
+procedure TfrmSurgery.tvSurgeryChange(Sender: TObject;
+  Node: TTreeNode);
+var
+  x: string;
+  IsTIUDocument: boolean;
+  //MsgString, HasImages: string;
+  //ShowReport: boolean;
+begin
+  if uChanging then Exit;
+  //This gives the change a chance to occur when keyboarding, so that WindowEyes
+  //doesn't use the old value.
+  Application.ProcessMessages;
+  //ShowReport := True;
+  with tvSurgery do
+    begin
+      if Selected = nil then Exit;
+      popNoteListExpandSelected.Enabled := Selected.HasChildren;
+      popNoteListCollapseSelected.Enabled := Selected.HasChildren;
+      RedrawSuspend(memSurgery.Handle);
+      memSurgery.Clear;
+      if not (Selected.ImageIndex in [IMG_SURG_TOP_LEVEL, IMG_SURG_GROUP_OPEN, IMG_SURG_GROUP_SHUT]) then
+        begin
+          x := TORTreeNode(Selected).StringData;
+          memSurgery.Clear;
+          StatusText('Retrieving selected surgery report...');
+          Screen.Cursor := crHourGlass;
+          pnlRead.Visible := True;
+          pnlWrite.Visible := False;
+          //UpdateReminderFinish;
+          IsTIUDocument := PCaseTreeObject(Selected.Data)^.PkgRef <> '';
+          EnableDisableMenus(IsTIUDocument);
+          if not IsTIUDocument then
+            begin
+              lblTitle.Caption := MakeSurgeryCaseDisplayText(x);
+              lblTitle.Hint := lblTitle.Caption;
+              //LoadOpTop(memSurgery.Lines, StrToIntDef(Piece(x, U, 1), 0), PCaseTreeObject(Selected.Data)^.IsNonORProc, ShowReport);
+              //--------------------------------------------------------------------------------------------------------
+              //  DON'T DO THIS UNTIL SURGERY API IS CHANGED - OTHERWISE WILL GIVE FALSE '0' COUNT FOR EVERY CASE  (RV)
+(*              MsgString := 'SUR^' + Piece(x, U, 1);
+              HasImages := BOOLCHAR[PCaseTreeObject(Selected.Data)^.ImageCount > 0];
+              SetPiece(MsgString, U, 10, HasImages);
+              NotifyOtherApps(NAE_REPORT, 'SUR^' + MsgString);*)
+              //--------------------------------------------------------------------------------------------------------
+              NotifyOtherApps(NAE_REPORT, 'SUR^' + Piece(x, U, 1));
+              lstNotes.ItemIndex := -1;
+            end
+          else
+            begin
+              lstNotes.SelectByID(Piece(x, U, 1));
+              lstNotesClick(Self);
+            end;
+          Screen.Cursor := crDefault;
+          StatusText('');
+          SendMessage(memSurgery.Handle, WM_VSCROLL, SB_TOP, 0);
+        end
+      else
+        begin
+          lblTitle.Caption := '';
+          lblTitle.Hint := lblTitle.Caption;
+          pnlWrite.Visible := False;
+          pnlRead.Visible := True;
+          //UpdateReminderFinish;
+          ShowPCEControls(False);
+          frmDrawers.DisplayDrawers(TRUE, [odTemplates], [odTemplates]); //FALSE);
+          ShowPCEButtons(FALSE);
+          memSurgery.Clear;
+        end;
+      if(assigned(frmReminderTree)) then
+        frmReminderTree.EnableActions;
+      DisplayPCE;
+      pnlRight.Refresh;
+      memNewNote.Repaint;
+      memSurgery.Repaint;
+      SendMessage(tvSurgery.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+      RedrawActivate(memSurgery.Handle);
+    end;
+end;
+
+procedure TfrmSurgery.tvSurgeryExpanded(Sender: TObject;
+  Node: TTreeNode);
+begin
+  with Node do
+    begin
+      if (ImageIndex in [IMG_SURG_GROUP_SHUT, IMG_SURG_CASE_SHUT, IMG_SURG_NON_OR_CASE_SHUT]) then
+        ImageIndex := ImageIndex + 1;
+      if (SelectedIndex in [IMG_SURG_GROUP_SHUT, IMG_SURG_CASE_SHUT, IMG_SURG_NON_OR_CASE_SHUT]) then
+        SelectedIndex := SelectedIndex + 1;
+    end;
+  SendMessage(tvSurgery.Handle, WM_HSCROLL, SB_THUMBTRACK, 0);
+end;
+
+procedure TfrmSurgery.tvSurgeryCollapsed(Sender: TObject;
+  Node: TTreeNode);
+begin
+  with Node do
+    begin
+      if (ImageIndex in [IMG_SURG_GROUP_OPEN, IMG_SURG_CASE_OPEN, IMG_SURG_NON_OR_CASE_OPEN]) then
+        ImageIndex := ImageIndex - 1;
+      if (SelectedIndex in [IMG_SURG_GROUP_OPEN, IMG_SURG_CASE_OPEN, IMG_SURG_NON_OR_CASE_OPEN]) then
+        SelectedIndex := SelectedIndex - 1;
+    end;
+end;
+
+procedure TfrmSurgery.LoadSurgeryCases;
+var
+  tmpList: TStringList;
+  ANode: TORTreeNode;
+begin
+  tmpList := TStringList.Create;
+  try
+    FCaseList.Clear;
+    uChanging := True;
+    RedrawSuspend(memSurgery.Handle);
+    tvSurgery.Items.BeginUpdate;
+    KillCaseTreeObjects(tvSurgery);
+    tvSurgery.Items.Clear;
+    tvSurgery.Items.EndUpdate;
+    lstNotes.Items.Clear;
+    memSurgery.Clear;
+    memSurgery.Invalidate;
+    lblTitle.Caption := '';
+    lblTitle.Hint := lblTitle.Caption;
+    ShowPCEControls(FALSE);
+    with FCurrentContext do
+      begin
+        GetSurgCaseList(tmpList, FMBeginDate, FMEndDate, SR_ALL, MaxDocs);
+        CreateListItemsForCaseTree(FCaseList, tmpList, SR_ALL, GroupBy, TreeAscending);
+        UpdateTreeView(FCaseList, tvSurgery);
+      end;
+    tmpList.Clear;
+    FCaseList.Clear;
+    with tvSurgery do
+      begin
+        uChanging := True;
+        tvSurgery.Items.BeginUpdate;
+        if FLastNoteID <> '' then
+          Selected := FindPieceNode(FLastNoteID, 1, U, nil);
+        if Selected = nil then
+          begin
+            if (uSurgeryContext.GroupBy <> '') then
+              begin
+                ANode := TORTreeNode(Items.GetFirstNode);
+                while ANode <> nil do
+                  begin
+                    ANode.Expand(False);
+                    Selected := ANode;
+                    ANode := TORTreeNode(ANode.GetNextSibling);
+                  end;
+              end
+            else
+              begin
+                ANode := tvSurgery.FindPieceNode(IntToStr(SR_ALL), 1, U, nil);
+                if ANode <> nil then Selected := ANode.getFirstChild;
+              end;
+          end;
+        memSurgery.Clear;
+        RemoveParentsWithNoChildren(tvSurgery, uSurgeryContext);
+        tvSurgery.Items.EndUpdate;
+        uChanging := False;
+        lblCases.Caption := SetSurgTreeLabel(FCurrentContext);
+        tvSurgery.Caption := lblCases.Caption;
+        SendMessage(tvSurgery.Handle, WM_VSCROLL, SB_TOP, 0);
+        if Selected <> nil then tvSurgeryChange(Self, Selected);
+      end;
+  finally
+    RedrawActivate(memSurgery.Handle);
+    tmpList.Free;
+  end;
+end;
+
+function TfrmSurgery.SetSurgTreeLabel(AContext: TSurgCaseContext): string;
+var
+  x: string;
+
+  function SetDateRangeText(AContext: TSurgCaseContext): string;
+  var
+    x1: string;
+  begin
+    with AContext do
+      if BeginDate <> '' then
+        begin
+          x1 := 'from ' + UpperCase(BeginDate);
+          if EndDate <> '' then x1 := x1 + ' to ' + UpperCase(EndDate)
+          else x1 := x1 + ' to TODAY';
+        end;
+    Result := x1;
+  end;
+
+begin
+  with AContext do
+    begin
+      if MaxDocs > 0 then x := 'Last ' + IntToStr(MaxDocs) + ' ' else x := 'All ';
+      case StrToIntDef(Status, 0) of
+        SR_RECENT      : x := x + 'Surgery Cases';
+        SR_ALL         : x := x + 'Surgery Cases';
+        //SG_BY_SURGEON  : x := x + 'Surgery Cases for ' + ExternalName(Surgeon, 200) + SetDateRangeText(AContext);
+        SR_BY_DATE     : x := x + 'Surgery Cases ' + SetDateRangeText(AContext);
+      else
+        x := 'Custom List';
+      end;
+    end;
+  Result := x;
+end;
+
+procedure TfrmSurgery.lstNotesClick(Sender: TObject);
+{ loads the text for the selected note or displays the editing panel for the selected note }
+var
+  x: string;
+begin
+  inherited;
+  with lstNotes do if ItemIndex = -1 then Exit
+  else if ItemIndex = EditingIndex then
+  begin
+    pnlWrite.Visible := True;
+    pnlRead.Visible := False;
+    mnuViewDetail.Enabled    := False;
+    mnuActChange.Enabled     := True;
+    mnuActLoadBoiler.Enabled := True;
+    //UpdateReminderFinish;
+  end else
+  begin
+    StatusText('Retrieving selected surgery report...');
+    Screen.Cursor := crHourGlass;
+    pnlRead.Visible := True;
+    pnlWrite.Visible := False;
+    //UpdateReminderFinish;
+    lblTitle.Caption := MakeSurgeryReportDisplayText(Items[ItemIndex]);
+    lblTitle.Hint := lblTitle.Caption;
+    LoadSurgReportText(memSurgery.Lines, ItemIEN);
+    mnuViewDetail.Enabled    := True;
+    mnuViewDetail.Checked    := False;
+    mnuActChange.Enabled     := False;
+    mnuActLoadBoiler.Enabled := False;
+    Screen.Cursor := crDefault;
+    StatusText('');
+  end;
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.EnableActions;
+  DisplayPCE;
+  pnlRight.Refresh;
+  memNewNote.Repaint;
+  memSurgery.Repaint;
+  x := 'TIU^' + lstNotes.ItemID;
+  SetPiece(x, U, 10, Piece(lstNotes.Items[lstNotes.ItemIndex], U, 11));
+  NotifyOtherApps(NAE_REPORT, x);
+end;
+
+procedure TfrmSurgery.EnableDisableMenus(IsTIUDocument: boolean);
+begin
+{ TODO -oRich V. -cSurgery/TIU : Reset NewNoteMenu enabled if allow new notes from Surgery tab }
+  mnuActNew.Enabled                 :=  False;
+  mnuActAddend.Enabled              :=  IsTIUDocument;
+  mnuActAddIDEntry.Enabled          :=  False;
+  mnuActDetachFromIDParent.Enabled  :=  False;
+  mnuActEdit.Enabled                :=  IsTIUDocument;
+  mnuActDelete.Enabled              :=  IsTIUDocument;
+  mnuActSign.Enabled                :=  IsTIUDocument;
+  mnuActSignList.Enabled            :=  IsTIUDocument;
+  mnuActSave.Enabled                :=  IsTIUDocument;
+  mnuActIdentifyAddlSigners.Enabled := IsTIUDocument;
+  mnuActChange.Enabled              := IsTIUDocument;
+  mnuActLoadBoiler.Enabled          := IsTIUDocument;
+  popNoteMemoSignList.Enabled       := IsTIUDocument;
+  popNoteMemoSign.Enabled           := IsTIUDocument;
+  popNoteMemoSave.Enabled           := IsTIUDocument;
+  popNoteMemoEdit.Enabled           := IsTIUDocument;
+  popNoteMemoDelete.Enabled         := IsTIUDocument;
+  popNoteMemoAddlSign.Enabled       := IsTIUDocument;
+  popNoteMemoAddend.Enabled         := IsTIUDocument;
+  mnuViewDetail.Enabled             := IsTIUDocument;
+  popNoteMemoPreview.Enabled        := IsTIUDocument and Assigned(frmDrawers.tvTemplates.Selected);
+  popNoteMemoInsTemplate.Enabled    := IsTIUDocument and Assigned(frmDrawers.tvTemplates.Selected);
+  if not IsTIUDocument then mnuViewDetail.Checked := False;
+  frmFrame.mnuFilePrint.Enabled := IsTIUDocument;
+end;
+
+procedure TfrmSurgery.memNewNoteKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  inherited;
+  if (Key = VK_TAB) then
+  begin
+    if ssShift in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+      Key := 0;
+    end
+    else if ssCtrl	in Shift then
+    begin
+      FindNextControl(Sender as TWinControl, True, True, False).SetFocus; //next control
+      Key := 0;
+    end;
+  end;
+  if (key = VK_ESCAPE) then begin
+    FindNextControl(Sender as TWinControl, False, True, False).SetFocus; //previous control
+    key := 0;
+  end;
+end;
+
+procedure TfrmSurgery.sptHorzCanResize(Sender: TObject; var NewSize: Integer;
+  var Accept: Boolean);
+begin
+  inherited;
+  if pnlWrite.Visible then
+     if NewSize > frmSurgery.ClientWidth - memNewNote.Constraints.MinWidth - sptHorz.Width then
+        NewSize := frmSurgery.ClientWidth - memNewNote.Constraints.MinWidth - sptHorz.Width;
+end;
+
+procedure TfrmSurgery.popNoteMemoPreviewClick(Sender: TObject);
+begin
+  frmDrawers.mnuPreviewTemplateClick(Sender);
+end;
+
+procedure TfrmSurgery.popNoteMemoInsTemplateClick(Sender: TObject);
+begin
+  frmDrawers.mnuInsertTemplateClick(Sender);
+end;
+
+procedure TfrmSurgery.ViewInfo(Sender: TObject);
+begin
+  inherited;
+  frmFrame.ViewInfo(Sender);
+end;
+
+procedure TfrmSurgery.mnuViewInformationClick(Sender: TObject);
+begin
+  inherited;
+  mnuViewDemo.Enabled := frmFrame.pnlPatient.Enabled;
+  mnuViewVisits.Enabled := frmFrame.pnlVisit.Enabled;
+  mnuViewPrimaryCare.Enabled := frmFrame.pnlPrimaryCare.Enabled;
+  mnuViewMyHealtheVet.Enabled := not (Copy(frmFrame.laMHV.Hint, 1, 2) = 'No');
+  mnuInsurance.Enabled := not (Copy(frmFrame.laVAA2.Hint, 1, 2) = 'No');
+  mnuViewFlags.Enabled := frmFrame.lblFlag.Enabled;
+  mnuViewRemoteData.Enabled := frmFrame.lblCirn.Enabled;
+  mnuViewReminders.Enabled := frmFrame.pnlReminders.Enabled;
+  mnuViewPostings.Enabled := frmFrame.pnlPostings.Enabled;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfrmSurgery);
+  uPCEEdit := TPCEData.Create;
+  uPCEShow := TPCEData.Create;
+
+finalization
+  uPCEEdit.Free;
+  uPCEShow.Free;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgeryView.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgeryView.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgeryView.dfm	(revision 1676)
@@ -0,0 +1,196 @@
+inherited frmSurgeryView: TfrmSurgeryView
+  Left = 333
+  Top = 256
+  BorderIcons = []
+  Caption = 'List Selected Cases'
+  ClientHeight = 202
+  ClientWidth = 358
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 366
+  ExplicitHeight = 229
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 358
+    Height = 202
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblBeginDate: TLabel
+      Left = 4
+      Top = 10
+      Width = 48
+      Height = 13
+      Caption = 'Start Date'
+    end
+    object lblEndDate: TLabel
+      Left = 4
+      Top = 67
+      Width = 48
+      Height = 13
+      Caption = 'Stop Date'
+    end
+    object lblMaxDocs: TLabel
+      Left = 4
+      Top = 125
+      Width = 107
+      Height = 13
+      Caption = 'Max Number to Return'
+    end
+    object calBeginDate: TORDateBox
+      Left = 4
+      Top = 24
+      Width = 156
+      Height = 21
+      TabOrder = 0
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Start Date'
+    end
+    object calEndDate: TORDateBox
+      Left = 4
+      Top = 81
+      Width = 156
+      Height = 21
+      TabOrder = 1
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Stop Date'
+    end
+    object cmdOK: TButton
+      Left = 97
+      Top = 172
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 5
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 177
+      Top = 172
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 6
+      OnClick = cmdCancelClick
+    end
+    object edMaxDocs: TCaptionEdit
+      Left = 4
+      Top = 138
+      Width = 156
+      Height = 21
+      MaxLength = 6
+      TabOrder = 2
+      Caption = 'Max Number to Return'
+    end
+    object grpTreeView: TGroupBox
+      Left = 177
+      Top = 9
+      Width = 175
+      Height = 150
+      Caption = 'Sorting/Grouping of Cases'
+      TabOrder = 3
+      object lblGroupBy: TOROffsetLabel
+        Left = 10
+        Top = 71
+        Width = 49
+        Height = 15
+        Caption = 'Group By:'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+      end
+      object cboGroupBy: TORComboBox
+        Left = 10
+        Top = 85
+        Width = 153
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Group By'
+        Color = clWindow
+        DropDownCount = 8
+        Items.Strings = (
+          'D^Surgery Date'
+          'P^Procedure'
+          'S^Surgeon'
+          'T^Type of Procedure')
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        CharsNeedMatch = 1
+      end
+      object radTreeSort: TRadioGroup
+        Left = 9
+        Top = 20
+        Width = 155
+        Height = 49
+        Caption = 'Sort Order'
+        Items.Strings = (
+          '&Ascending'
+          '&Descending')
+        TabOrder = 0
+      end
+    end
+    object cmdClear: TButton
+      Left = 190
+      Top = 125
+      Width = 146
+      Height = 21
+      Caption = 'Clear Sort/Group'
+      TabOrder = 4
+      OnClick = cmdClearClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = calBeginDate'
+        'Status = stsDefault')
+      (
+        'Component = calEndDate'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = edMaxDocs'
+        'Status = stsDefault')
+      (
+        'Component = grpTreeView'
+        'Status = stsDefault')
+      (
+        'Component = cboGroupBy'
+        'Status = stsDefault')
+      (
+        'Component = radTreeSort'
+        'Status = stsDefault')
+      (
+        'Component = cmdClear'
+        'Status = stsDefault')
+      (
+        'Component = frmSurgeryView'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgeryView.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgeryView.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fSurgeryView.pas	(revision 1676)
@@ -0,0 +1,154 @@
+unit fSurgeryView;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
+  StdCtrls, ExtCtrls, ORCtrls, ComCtrls, ORDtTm, Spin, rSurgery, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmSurgeryView = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblBeginDate: TLabel;
+    calBeginDate: TORDateBox;
+    lblEndDate: TLabel;
+    calEndDate: TORDateBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblMaxDocs: TLabel;
+    edMaxDocs: TCaptionEdit;
+    grpTreeView: TGroupBox;
+    lblGroupBy: TOROffsetLabel;
+    cboGroupBy: TORComboBox;
+    radTreeSort: TRadioGroup;
+    cmdClear: TButton;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdClearClick(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FBeginDate: string;
+    FFMBeginDate: TFMDateTime;
+    FEndDate: string;
+    FFMEndDate: TFMDateTime;
+    FOpProc: string;
+    FMaxDocs: integer;
+    FGroupBy: string;
+    FTreeAscending: Boolean;
+    FCurrentContext: TSurgCaseContext;
+  end;
+
+function SelectSurgeryView(FontSize: Integer; ShowForm: Boolean; CurrentContext: TSurgCaseContext;
+          var SurgeryContext: TSurgCaseContext): boolean ;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore;
+
+const
+   TX_DATE_ERR = 'Enter valid beginning and ending dates or press Cancel.';
+   TX_DATE_ERR_CAP = 'Error in Date Range';
+
+function SelectSurgeryView(FontSize: Integer; ShowForm: Boolean; CurrentContext: TSurgCaseContext;
+          var SurgeryContext: TSurgCaseContext): boolean ;
+var
+  frmSurgeryView: TfrmSurgeryView;
+  W, H: Integer;
+begin
+  frmSurgeryView := TfrmSurgeryView.Create(Application);
+  try
+    with frmSurgeryView do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      FCurrentContext := CurrentContext;
+      calBeginDate.Text := CurrentContext.BeginDate;
+      calEndDate.Text   := CurrentContext.EndDate;
+      if calEndDate.Text = '' then calEndDate.Text := 'TODAY';
+      if CurrentContext.MaxDocs > 0 then
+        edMaxDocs.Text :=  IntToStr(CurrentContext.MaxDocs)
+      else
+        edMaxDocs.Text := '';
+      FMaxDocs := StrToIntDef(edMaxDocs.Text, 0);
+      radTreeSort.ItemIndex := 0;
+      cboGroupBy.SelectByID(CurrentContext.GroupBy);
+      if ShowForm then ShowModal else cmdOKClick(frmSurgeryView);
+
+      with SurgeryContext do
+       begin
+        Changed := FChanged;
+        OpProc := FOpProc;
+        BeginDate := FBeginDate;
+        FMBeginDate := FFMBeginDate;
+        EndDate := FEndDate;
+        FMEndDate := FFMEndDate;
+        MaxDocs := FMaxDocs;
+        GroupBy := FGroupBy;
+        TreeAscending := FTreeAscending;
+        Result := Changed ;
+      end;
+
+    end; {with frmSurgeryView}
+  finally
+    frmSurgeryView.Release;
+  end;
+end;
+
+procedure TfrmSurgeryView.cmdOKClick(Sender: TObject);
+var
+  bdate, edate: TFMDateTime;
+begin
+  if calBeginDate.Text <> '' then
+     bdate := StrToFMDateTime(calBeginDate.Text)
+  else
+     bdate := 0 ;
+
+  if calEndDate.Text <> '' then
+     edate   := StrToFMDateTime(calEndDate.Text)
+  else
+     edate := 0 ;
+
+  if (bdate <= edate) then
+    begin
+      FBeginDate := calBeginDate.Text;
+      FFMBeginDate := bdate;
+      FEndDate := calEndDate.Text;
+      FFMEndDate := edate;
+    end
+  else
+    begin
+      InfoBox(TX_DATE_ERR, TX_DATE_ERR_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+
+  FTreeAscending := (radTreeSort.ItemIndex = 0);
+  FMaxDocs := StrToIntDef(edMaxDocs.Text, 0);
+  if cboGroupBy.ItemID <> '' then
+    FGroupBy := cboGroupBy.ItemID
+  else
+    FGroupBy := '';
+  FChanged := True;
+  Close;
+end;
+
+procedure TfrmSurgeryView.cmdCancelClick(Sender: TObject);
+begin
+  FChanged := False;
+  Close;
+end;
+
+procedure TfrmSurgeryView.cmdClearClick(Sender: TObject);
+begin
+  cboGroupBy.ItemIndex := -1;
+  radTreeSort.ItemIndex := 0;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTIUView.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTIUView.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTIUView.dfm	(revision 1676)
@@ -0,0 +1,404 @@
+inherited frmTIUView: TfrmTIUView
+  Left = 357
+  Top = 111
+  BorderIcons = []
+  Caption = 'List Selected Documents'
+  ClientHeight = 436
+  ClientWidth = 358
+  OldCreateOrder = True
+  Position = poScreenCenter
+  ExplicitWidth = 366
+  ExplicitHeight = 463
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 358
+    Height = 436
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblBeginDate: TLabel
+      Left = 191
+      Top = 100
+      Width = 73
+      Height = 13
+      Caption = 'Beginning Date'
+    end
+    object lblEndDate: TLabel
+      Left = 191
+      Top = 153
+      Width = 59
+      Height = 13
+      Caption = 'Ending Date'
+    end
+    object lblAuthor: TLabel
+      Left = 10
+      Top = 97
+      Width = 31
+      Height = 13
+      Caption = 'Author'
+    end
+    object lblStatus: TLabel
+      Left = 11
+      Top = 5
+      Width = 30
+      Height = 13
+      Caption = 'Status'
+    end
+    object lblMaxDocs: TLabel
+      Left = 192
+      Top = 5
+      Width = 107
+      Height = 13
+      Caption = 'Max Number to Return'
+    end
+    object lblContains: TLabel
+      Left = 195
+      Top = 354
+      Width = 44
+      Height = 13
+      Caption = 'Contains:'
+    end
+    object Bevel1: TBevel
+      Left = 8
+      Top = 349
+      Width = 343
+      Height = 48
+    end
+    object Bevel2: TBevel
+      Left = 9
+      Top = 205
+      Width = 343
+      Height = 4
+    end
+    object calBeginDate: TORDateBox
+      Left = 191
+      Top = 114
+      Width = 156
+      Height = 21
+      TabOrder = 3
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Beginning Date'
+    end
+    object calEndDate: TORDateBox
+      Left = 191
+      Top = 168
+      Width = 156
+      Height = 21
+      TabOrder = 4
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Ending Date'
+    end
+    object lstStatus: TORListBox
+      Left = 10
+      Top = 18
+      Width = 168
+      Height = 74
+      ExtendedSelect = False
+      ItemHeight = 13
+      Items.Strings = (
+        '1^Signed documents (all)'
+        '2^Unsigned documents  '
+        '3^Uncosigned documents'
+        '4^Signed documents/author'
+        '5^Signed documents/date range')
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Caption = 'Status'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '2'
+      OnChange = lstStatusSelect
+    end
+    object cmdOK: TButton
+      Left = 196
+      Top = 407
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 10
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 278
+      Top = 407
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 11
+      OnClick = cmdCancelClick
+    end
+    object cboAuthor: TORComboBox
+      Left = 10
+      Top = 112
+      Width = 169
+      Height = 88
+      Style = orcsSimple
+      AutoSelect = True
+      Caption = 'Author'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = True
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '2'
+      Sorted = True
+      SynonymChars = '<>'
+      TabOrder = 2
+      OnNeedData = cboAuthorNeedData
+      CharsNeedMatch = 1
+    end
+    object edMaxDocs: TCaptionEdit
+      Left = 192
+      Top = 18
+      Width = 156
+      Height = 21
+      MaxLength = 6
+      TabOrder = 1
+      Caption = 'Max Number to Return'
+    end
+    object txtKeyword: TCaptionEdit
+      Left = 195
+      Top = 369
+      Width = 145
+      Height = 21
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 8
+      Caption = 'Contains'
+    end
+    object grpListView: TGroupBox
+      Left = 194
+      Top = 214
+      Width = 158
+      Height = 130
+      Caption = 'Sort Note List'
+      TabOrder = 6
+      object lblSortBy: TLabel
+        Left = 11
+        Top = 71
+        Width = 37
+        Height = 13
+        Caption = 'Sort By:'
+      end
+      object radListSort: TRadioGroup
+        Left = 8
+        Top = 20
+        Width = 142
+        Height = 49
+        Caption = 'Note List Sort Order'
+        Items.Strings = (
+          '&Ascending'
+          '&Descending')
+        TabOrder = 0
+      end
+      object cboSortBy: TORComboBox
+        Left = 11
+        Top = 85
+        Width = 137
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Sort By'
+        Color = clWindow
+        DropDownCount = 8
+        Items.Strings = (
+          'R^Date of Note'
+          'D^Title'
+          'S^Subject'
+          'A^Author'
+          'L^Location')
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        CharsNeedMatch = 1
+      end
+      object ckShowSubject: TCheckBox
+        Left = 11
+        Top = 110
+        Width = 131
+        Height = 17
+        Caption = 'Show subject in list'
+        TabOrder = 2
+      end
+    end
+    object grpTreeView: TGroupBox
+      Left = 8
+      Top = 214
+      Width = 175
+      Height = 130
+      Caption = 'Note Tree View'
+      TabOrder = 5
+      object lblGroupBy: TOROffsetLabel
+        Left = 9
+        Top = 79
+        Width = 49
+        Height = 15
+        Caption = 'Group By:'
+        HorzOffset = 2
+        Transparent = False
+        VertOffset = 2
+        WordWrap = False
+      end
+      object cboGroupBy: TORComboBox
+        Left = 9
+        Top = 93
+        Width = 153
+        Height = 21
+        Style = orcsDropDown
+        AutoSelect = True
+        Caption = 'Group By'
+        Color = clWindow
+        DropDownCount = 8
+        Items.Strings = (
+          'D^Visit Date'
+          'L^Location'
+          'T^Title'
+          'A^Author')
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = True
+        LongList = False
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 1
+        CharsNeedMatch = 1
+      end
+      object radTreeSort: TRadioGroup
+        Left = 9
+        Top = 20
+        Width = 155
+        Height = 49
+        Caption = 'Note Tree View Sort Order'
+        Items.Strings = (
+          '&Chronological'
+          '&Reverse chronological')
+        TabOrder = 0
+      end
+    end
+    object cmdClear: TButton
+      Left = 8
+      Top = 407
+      Width = 146
+      Height = 21
+      Caption = 'Clear Sort/Group/Search'
+      TabOrder = 9
+      OnClick = cmdClearClick
+    end
+    object grpWhereEitherOf: TGroupBox
+      Left = 16
+      Top = 352
+      Width = 169
+      Height = 41
+      Caption = 'Where either of:'
+      Ctl3D = True
+      ParentCtl3D = False
+      TabOrder = 7
+      object ckTitle: TCheckBox
+        Left = 49
+        Top = 16
+        Width = 50
+        Height = 17
+        Caption = 'Title'
+        TabOrder = 0
+      end
+      object ckSubject: TCheckBox
+        Left = 102
+        Top = 16
+        Width = 65
+        Height = 17
+        Caption = 'Subject'
+        TabOrder = 1
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = calBeginDate'
+        'Status = stsDefault')
+      (
+        'Component = calEndDate'
+        'Status = stsDefault')
+      (
+        'Component = lstStatus'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = cboAuthor'
+        'Status = stsDefault')
+      (
+        'Component = edMaxDocs'
+        'Status = stsDefault')
+      (
+        'Component = txtKeyword'
+        'Status = stsDefault')
+      (
+        'Component = grpListView'
+        'Status = stsDefault')
+      (
+        'Component = radListSort'
+        'Status = stsDefault')
+      (
+        'Component = cboSortBy'
+        'Status = stsDefault')
+      (
+        'Component = ckShowSubject'
+        'Status = stsDefault')
+      (
+        'Component = grpTreeView'
+        'Status = stsDefault')
+      (
+        'Component = cboGroupBy'
+        'Status = stsDefault')
+      (
+        'Component = radTreeSort'
+        'Status = stsDefault')
+      (
+        'Component = cmdClear'
+        'Status = stsDefault')
+      (
+        'Component = grpWhereEitherOf'
+        'Status = stsDefault')
+      (
+        'Component = ckTitle'
+        'Status = stsDefault')
+      (
+        'Component = ckSubject'
+        'Status = stsDefault')
+      (
+        'Component = frmTIUView'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTIUView.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTIUView.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTIUView.pas	(revision 1676)
@@ -0,0 +1,314 @@
+unit fTIUView;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ORFN,
+  StdCtrls, ExtCtrls, ORCtrls, ComCtrls, ORDtTm, Spin, uTIU, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmTIUView = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblBeginDate: TLabel;
+    calBeginDate: TORDateBox;
+    lblEndDate: TLabel;
+    calEndDate: TORDateBox;
+    lblStatus: TLabel;
+    lstStatus: TORListBox;
+    lblAuthor: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    cboAuthor: TORComboBox;
+    lblMaxDocs: TLabel;
+    edMaxDocs: TCaptionEdit;
+    lblContains: TLabel;
+    txtKeyword: TCaptionEdit;
+    Bevel1: TBevel;
+    grpListView: TGroupBox;
+    radListSort: TRadioGroup;
+    lblSortBy: TLabel;
+    cboSortBy: TORComboBox;
+    grpTreeView: TGroupBox;
+    lblGroupBy: TOROffsetLabel;
+    cboGroupBy: TORComboBox;
+    radTreeSort: TRadioGroup;
+    Bevel2: TBevel;
+    cmdClear: TButton;
+    ckShowSubject: TCheckBox;
+    grpWhereEitherOf: TGroupBox;
+    ckTitle: TCheckBox;
+    ckSubject: TCheckBox;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure lstStatusSelect(Sender: TObject);
+    procedure cboAuthorNeedData(Sender: TObject; const StartFrom: String;
+      Direction, InsertAt: Integer);
+    procedure cmdClearClick(Sender: TObject);
+  private
+    FChanged: Boolean;
+    FBeginDate: string;
+    FFMBeginDate: TFMDateTime;
+    FEndDate: string;
+    FFMEndDate: TFMDateTime;
+    FStatus: string;
+    FAuthor: Int64;
+    FMaxDocs: integer;
+    FShowSubject: Boolean;
+    FSortBy: string;
+    FListAscending: Boolean;
+    FGroupBy: string;
+    FTreeAscending: Boolean;
+    FSearchField: string;
+    FKeyWord: string;
+    FFiltered: Boolean;
+    FCurrentContext: TTIUContext;
+  end;
+
+function SelectTIUView(FontSize: Integer; ShowForm: Boolean; CurrentContext: TTIUContext; var TIUContext: TTIUContext): boolean ;
+
+implementation
+
+{$R *.DFM}
+
+uses rCore, uCore, rTIU(*, fNotes, fDCSumm, rDCSumm*);
+
+const
+   TX_DATE_ERR = 'Enter valid beginning and ending dates or press Cancel.';
+   TX_DATE_ERR_CAP = 'Error in Date Range';
+   TX_AUTH_ERR = 'You must select an author for this retrieval method.';
+   TX_AUTH_ERR_CAP = 'No author selected';
+
+function SelectTIUView(FontSize: Integer; ShowForm: Boolean; CurrentContext: TTIUContext; var TIUContext: TTIUContext): boolean ;
+{ displays select form for Notes and returns a record of the selection }
+var
+  frmTIUView: TfrmTIUView;
+  W, H: Integer;
+  CurrentAuthor: Int64;
+  CurrentStatus: string;
+begin
+  frmTIUView := TfrmTIUView.Create(Application);
+  try
+    with frmTIUView do
+    begin
+      Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := H;
+      FChanged := False;
+      FFiltered := False;
+      FCurrentContext := CurrentContext;
+      calBeginDate.Text := CurrentContext.BeginDate;
+      calEndDate.Text   := CurrentContext.EndDate;
+      if calEndDate.Text = '' then calEndDate.Text := 'TODAY';
+      CurrentStatus := CurrentContext.Status;
+      with lstStatus do
+        if CurrentStatus <> '' then
+          SelectByID(CurrentStatus)
+        else
+          SelectByID('1');
+      //lstStatusSelect(frmTIUView);  moved down - v24.1 (RV)
+      CurrentAuthor := CurrentContext.Author;
+      with cboAuthor do
+        if CurrentAuthor > 0 then
+          begin
+            InitLongList(ExternalName(CurrentAuthor, 200));
+            if Enabled then SelectByIEN(CurrentAuthor);
+            FAuthor := CurrentAuthor;
+          end
+        else
+          begin
+            InitLongList(User.Name);
+            SelectByIEN(User.DUZ);
+            FAuthor := ItemIEN;
+          end;
+      if CurrentContext.MaxDocs > 0 then
+        edMaxDocs.Text :=  IntToStr(CurrentContext.MaxDocs)
+      else
+        edMaxDocs.Text := '';
+      FMaxDocs := StrToIntDef(edMaxDocs.Text, 0);
+      txtKeyword.Text := CurrentContext.Keyword;
+      if CurrentContext.SearchField <> '' then
+        begin
+          ckTitle.Checked := (CurrentContext.SearchField[1] in ['T','B']) and (CurrentContext.Keyword <> '');
+          ckSubject.Checked := (CurrentContext.SearchField[1] in ['S','B'])and (CurrentContext.Keyword <> '');
+        end;
+      ckShowSubject.Checked := CurrentContext.ShowSubject;
+      //with radTreeSort do if SortNotesAscending then ItemIndex := 1 else ItemIndex := 0;
+      with radTreeSort do if CurrentContext.TreeAscending then ItemIndex := 0 else ItemIndex := 1;
+      with radListSort do if CurrentContext.ListAscending then ItemIndex := 0 else ItemIndex := 1;
+      cboSortBy.SelectByID(CurrentContext.SortBy);
+      cboGroupBy.SelectByID(CurrentContext.GroupBy);
+      lstStatusSelect(frmTIUView);    //  from above in v24.1, (RV)
+
+      if ShowForm then ShowModal else cmdOKClick(frmTIUView);
+
+      with TIUContext do
+       begin
+        Changed := FChanged;
+        BeginDate := FBeginDate;
+        FMBeginDate := FFMBeginDate;
+        EndDate := FEndDate;
+        FMEndDate := FFMEndDate;
+        Status := FStatus;
+        Author := FAuthor;
+        MaxDocs := FMaxDocs;
+        ShowSubject := FShowSubject;
+        SortBy := FSortBy;
+        ListAscending := FListAscending;
+        GroupBy := FGroupBy;
+        TreeAscending := FTreeAscending;
+        SearchField := FSearchField;
+        KeyWord := FKeyWord;
+        Filtered := FFiltered;
+        Result := Changed ;
+      end;
+
+    end; {with frmTIUView}
+  finally
+    frmTIUView.Release;
+  end;
+end;
+
+procedure TfrmTIUView.cmdOKClick(Sender: TObject);
+var
+  bdate, edate: TFMDateTime;
+begin
+  FStatus := lstStatus.ItemID;
+
+  if calBeginDate.Text <> '' then
+     bdate := StrToFMDateTime(calBeginDate.Text)
+  else
+     bdate := 0 ;
+
+  if calEndDate.Text <> '' then
+     edate   := StrToFMDateTime(calEndDate.Text)
+  else
+     edate := 0 ;
+
+  if (bdate <= edate) then
+    begin
+      FBeginDate := calBeginDate.Text;
+      FFMBeginDate := bdate;
+      FEndDate := calEndDate.Text;
+      FFMEndDate := edate;
+    end
+  else
+    begin
+      InfoBox(TX_DATE_ERR, TX_DATE_ERR_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+
+  FAuthor := cboAuthor.ItemIEN;
+  if (FStatus = '4') and (FAuthor = 0) then
+    begin
+      InfoBox(TX_AUTH_ERR, TX_AUTH_ERR_CAP, MB_OK or MB_ICONWARNING);
+      Exit;
+    end;
+
+  FSortBy := cboSortBy.ItemID;
+  if FSortBy = '' then FSortBy := 'R';
+  FListAscending := (radListSort.ItemIndex = 0);
+  FTreeAscending := (radTreeSort.ItemIndex = 0);
+
+  FKeyWord := txtKeyWord.Text;
+  if (ckTitle.Checked) and (ckSubject.Checked) then
+    FSearchField := 'B'
+  else if ckTitle.Checked then
+    FSearchField := 'T'
+  else if ckSubject.Checked then
+    FSearchField := 'S'
+  else if not (ckTitle.Checked or ckSubject.Checked) then
+    begin
+      FKeyWord := '';
+      FSearchField := '';
+    end;
+  if (FKeyword <> '') then
+    FFiltered := True;
+
+  if ckSubject.Checked then ckShowSubject.Checked := True;
+  FShowSubject := ckShowSubject.Checked;
+  FMaxDocs := StrToIntDef(edMaxDocs.Text, 0);
+  if cboGroupBy.ItemID <> '' then
+    FGroupBy := cboGroupBy.ItemID
+  else
+    FGroupBy := '';
+  FChanged := True;
+  Close;
+end;
+
+procedure TfrmTIUView.cmdCancelClick(Sender: TObject);
+begin
+  FChanged := False;
+  Close;
+end;
+
+procedure TfrmTIUView.lstStatusSelect(Sender: TObject);
+var
+  EnableDates: Boolean;
+begin
+  EnableDates := (lstStatus.ItemID <> '1');
+  lblBeginDate.Enabled := EnableDates;
+  calBeginDate.Enabled := EnableDates;
+  lblEndDate.Enabled := EnableDates;
+  calEndDate.Enabled := EnableDates;
+  if not EnableDates then
+    begin
+      calBeginDate.Text := '';
+      calEndDate.Text := '';
+    end
+  else
+    begin
+      calBeginDate.Text := FCurrentContext.BeginDate;
+      calEndDate.Text   := FCurrentContext.EndDate;
+      if FCurrentContext.EndDate = '' then calEndDate.FMDateTime := FMToday;
+    end;
+  if lstStatus.ItemID = '3' then
+    lblAuthor.Caption := 'Expected Cosigner:'
+  else
+    lblAuthor.Caption := 'Author:';
+  cboAuthor.Caption := lblAuthor.Caption;
+  if (lstStatus.ItemID = '1') or (lstStatus.ItemID = '5') then
+    begin
+      cboAuthor.ItemIndex := -1;
+      cboAuthor.Enabled := False;
+      lblAuthor.Enabled := False;
+      if FMaxDocs > 0 then
+        edMaxDocs.Text := IntToStr(FMaxDocs)
+      else
+        edMaxDocs.Text := '';
+      edMaxDocs.Enabled := True;
+      lblMaxDocs.Enabled := True;
+    end
+  else
+    begin
+      cboAuthor.Enabled := True;
+      cboAuthor.SelectByIEN(FAuthor);
+      lblAuthor.Enabled := True;
+      edMaxDocs.Text := '';
+      edMaxDocs.Enabled := False;
+      lblMaxDocs.Enabled := False;
+    end;
+end;
+
+
+procedure TfrmTIUView.cboAuthorNeedData(Sender: TObject;
+  const StartFrom: string; Direction, InsertAt: Integer);
+begin
+    cboAuthor.ForDataUse(SubSetOfActiveAndInactivePersons(StartFrom, Direction));
+end;
+
+procedure TfrmTIUView.cmdClearClick(Sender: TObject);
+begin
+  cboSortBy.ItemIndex := -1;
+  cboGroupBy.ItemIndex := -1;
+  ckTitle.Checked := False;
+  ckSubject.Checked := False;
+  txtKeyWord.Text := '';
+  radTreeSort.ItemIndex := 1;
+  radListSort.ItemIndex := 1;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTimeout.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTimeout.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTimeout.dfm	(revision 1676)
@@ -0,0 +1,86 @@
+inherited frmTimeout: TfrmTimeout
+  Left = 418
+  Top = 200
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'CPRS Timeout'
+  ClientHeight = 102
+  ClientWidth = 247
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  ExplicitWidth = 320
+  ExplicitHeight = 240
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblCount: TStaticText [0]
+    Left = 8
+    Top = 60
+    Width = 30
+    Height = 33
+    Alignment = taRightJustify
+    Caption = '10'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -24
+    Font.Name = 'MS Sans Serif'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+  end
+  object Label1: TStaticText [1]
+    Left = 8
+    Top = 8
+    Width = 234
+    Height = 17
+    Caption = 'Vista CPRS has been idle and will close!'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 1
+  end
+  object Label2: TStaticText [2]
+    Left = 8
+    Top = 32
+    Width = 234
+    Height = 17
+    Caption = 'Press the button to continue working with CPRS.'
+    TabOrder = 2
+  end
+  object cmdContinue: TButton [3]
+    Left = 134
+    Top = 64
+    Width = 105
+    Height = 25
+    Cancel = True
+    Caption = 'Don'#39't Close CPRS'
+    TabOrder = 0
+    OnClick = cmdContinueClick
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = lblCount'
+        'Status = stsDefault')
+      (
+        'Component = Label1'
+        'Status = stsDefault')
+      (
+        'Component = Label2'
+        'Status = stsDefault')
+      (
+        'Component = cmdContinue'
+        'Status = stsDefault')
+      (
+        'Component = frmTimeout'
+        'Status = stsDefault'))
+  end
+  object timCountDown: TTimer
+    Interval = 5000
+    OnTimer = timCountDownTimer
+    Left = 68
+    Top = 60
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTimeout.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTimeout.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fTimeout.pas	(revision 1676)
@@ -0,0 +1,83 @@
+unit fTimeout;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  fAutoSz, ExtCtrls, StdCtrls, ORFn, VA508AccessibilityManager;
+
+type
+  TfrmTimeout = class(TfrmAutoSz)
+    Label1: TStaticText;
+    Label2: TStaticText;
+    cmdContinue: TButton;
+    lblCount: TStaticText;
+    timCountDown: TTimer;
+    procedure FormCreate(Sender: TObject);
+    procedure cmdContinueClick(Sender: TObject);
+    procedure timCountDownTimer(Sender: TObject);
+  private
+    { Private declarations }
+    FContinue: Boolean;
+    FCount: Integer;
+  end;
+
+function AllowTimeout: Boolean;
+
+implementation
+
+{$R *.DFM}
+
+uses uCore;
+
+function AllowTimeout: Boolean;
+var
+  frmTimeout: TfrmTimeout;
+begin
+  frmTimeout := TfrmTimeout.Create(Application);
+  try
+    ResizeFormToFont(TForm(frmTimeout));
+    frmTimeout.ShowModal;
+    Result := not frmTimeout.FContinue;
+  finally
+    frmTimeout.Release;
+  end;
+end;
+
+procedure TfrmTimeout.FormCreate(Sender: TObject);
+begin
+  inherited;
+  Application.Restore;
+  Application.BringToFront;
+  MessageBeep(MB_ICONASTERISK);
+  FCount := User.CountDown;
+  lblCount.Caption := IntToStr(FCount);
+end;
+
+procedure TfrmTimeout.cmdContinueClick(Sender: TObject);
+begin
+  inherited;
+  FContinue := True;
+  Close;
+end;
+
+procedure TfrmTimeout.timCountDownTimer(Sender: TObject);
+begin
+  inherited;
+  if FCount = User.CountDown then
+  begin
+    MessageBeep(MB_ICONASTERISK);
+    timCountDown.Enabled  := False;
+    timCountDown.Interval := 1000;
+    timCountDown.Enabled  := True;
+  end;
+  Dec(FCount);
+  lblCount.Caption := IntToStr(FCount);
+  if FCount = 0 then
+  begin
+    timCountDown.Enabled := False;
+    Close;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVisit.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVisit.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVisit.dfm	(revision 1676)
@@ -0,0 +1,225 @@
+inherited frmVisit: TfrmVisit
+  Left = 426
+  Top = 332
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Visit Selection'
+  ClientHeight = 273
+  ClientWidth = 438
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlBase: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 438
+    Height = 273
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblSelect: TLabel
+      Left = 8
+      Top = 97
+      Width = 146
+      Height = 13
+      Caption = 'Scheduled Clinic Appointments'
+    end
+    object lblVisitDate: TLabel
+      Left = 254
+      Top = 97
+      Width = 85
+      Height = 13
+      Caption = 'Date/Time of Visit'
+      Visible = False
+    end
+    object lblInstruct: TStaticText
+      Left = 8
+      Top = 8
+      Width = 426
+      Height = 17
+      Caption = 
+        'For outpatient encounters, a visit must be selected before writi' +
+        'ng orders or progress notes.'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clBtnText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsUnderline]
+      ParentColor = False
+      ParentFont = False
+      TabOrder = 7
+    end
+    object pnlVisit: TORAutoPanel
+      Left = 8
+      Top = 111
+      Width = 422
+      Height = 118
+      BevelOuter = bvNone
+      TabOrder = 4
+      object timVisitDate: TORDateBox
+        Left = 246
+        Top = 0
+        Width = 175
+        Height = 21
+        TabOrder = 1
+        Text = 'NOW'
+        DateOnly = False
+        RequireTime = True
+      end
+      object cboLocation: TORComboBox
+        Left = 0
+        Top = -5
+        Width = 230
+        Height = 118
+        Style = orcsSimple
+        AutoSelect = True
+        Color = clWindow
+        DropDownCount = 8
+        ItemHeight = 13
+        ItemTipColor = clWindow
+        ItemTipEnable = True
+        ListItemsOnly = False
+        LongList = True
+        LookupPiece = 0
+        MaxLength = 0
+        Pieces = '2'
+        Sorted = False
+        SynonymChars = '<>'
+        TabOrder = 0
+        OnNeedData = cboLocationNeedData
+        CharsNeedMatch = 1
+      end
+      object grpCategory: TGroupBox
+        Left = 248
+        Top = 40
+        Width = 175
+        Height = 73
+        Caption = 'Visit Category'
+        TabOrder = 2
+        object ckbHistorical: TCheckBox
+          Left = 8
+          Top = 32
+          Width = 97
+          Height = 17
+          Caption = 'Historical Visit'
+          TabOrder = 0
+        end
+      end
+    end
+    object lstVisit: TORListBox
+      Left = 8
+      Top = 111
+      Width = 422
+      Height = 118
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 3
+      Caption = 'Scheduled Clinic Appointments'
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '3,5,4'
+      TabPositions = '20'
+    end
+    object radAppt: TRadioButton
+      Tag = 1
+      Left = 8
+      Top = 30
+      Width = 233
+      Height = 17
+      Caption = 'Choose from &Clinic Appointments'
+      Checked = True
+      TabOrder = 0
+      TabStop = True
+      OnClick = radSelectorClick
+    end
+    object radAdmit: TRadioButton
+      Tag = 2
+      Left = 8
+      Top = 51
+      Width = 201
+      Height = 17
+      Caption = 'Choose from &Hospital Admissions'
+      TabOrder = 1
+      OnClick = radSelectorClick
+    end
+    object radNewVisit: TRadioButton
+      Tag = 3
+      Left = 8
+      Top = 72
+      Width = 189
+      Height = 17
+      Caption = 'Enter a &New Visit'
+      TabOrder = 2
+      OnClick = radSelectorClick
+    end
+    object cmdOK: TButton
+      Left = 270
+      Top = 245
+      Width = 72
+      Height = 21
+      Caption = 'OK'
+      Default = True
+      TabOrder = 5
+      OnClick = cmdOKClick
+    end
+    object cmdCancel: TButton
+      Left = 358
+      Top = 245
+      Width = 72
+      Height = 21
+      Cancel = True
+      Caption = 'Cancel'
+      TabOrder = 6
+      OnClick = cmdCancelClick
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlBase'
+        'Status = stsDefault')
+      (
+        'Component = lblInstruct'
+        'Status = stsDefault')
+      (
+        'Component = pnlVisit'
+        'Status = stsDefault')
+      (
+        'Component = timVisitDate'
+        'Status = stsDefault')
+      (
+        'Component = cboLocation'
+        'Status = stsDefault')
+      (
+        'Component = grpCategory'
+        'Status = stsDefault')
+      (
+        'Component = ckbHistorical'
+        'Status = stsDefault')
+      (
+        'Component = lstVisit'
+        'Status = stsDefault')
+      (
+        'Component = radAppt'
+        'Status = stsDefault')
+      (
+        'Component = radAdmit'
+        'Status = stsDefault')
+      (
+        'Component = radNewVisit'
+        'Status = stsDefault')
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = frmVisit'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVisit.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVisit.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVisit.pas	(revision 1676)
@@ -0,0 +1,262 @@
+unit fVisit;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, ORCtrls, ORDtTm, ORFn, StdCtrls, rCore, uCore, fBase508Form,
+  VA508AccessibilityManager;
+
+type
+  TfrmVisit = class(TfrmBase508Form)
+    pnlBase: TORAutoPanel;
+    lblInstruct: TStaticText;
+    radAppt: TRadioButton;
+    radAdmit: TRadioButton;
+    radNewVisit: TRadioButton;
+    lstVisit: TORListBox;
+    lblSelect: TLabel;
+    pnlVisit: TORAutoPanel;
+    cboLocation: TORComboBox;
+    timVisitDate: TORDateBox;
+    lblVisitDate: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    grpCategory: TGroupBox;
+    ckbHistorical: TCheckBox;
+    procedure radSelectorClick(Sender: TObject);
+    procedure cboLocationNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+    { Private declarations }
+    FChanged: Boolean;
+    FDateTime: TFMDateTime;
+    FLocation: Integer;
+    FLocationName: string;
+    FVisitCategory: Char;
+    FStandAlone: Boolean;
+  public
+    { Public declarations }
+  end;
+
+(*
+procedure SelectVisit(FontSize: Integer; var VisitUpdate: TVisitUpdate);
+procedure UpdateVisit(FontSize: Integer);
+*)
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rOptions;
+
+const
+  TAG_SEL_CLINIC = 1;
+  TAG_SEL_ADMIT  = 2;
+  TAG_SEL_NEW    = 3;
+
+type
+  TVisitUpdate = record
+    Changed: Boolean;
+    DateTime: TFMDateTime;
+    Location: Integer;
+    LocationName: string;
+    VisitCategory: Char;
+    StandAlone: Boolean;
+  end;
+
+(*
+procedure UpdateVisit(FontSize: Integer);
+{ displays visit selection form and directly updates the visit in Encounter }
+var
+  VisitUpdate: TVisitUpdate;
+begin
+  SelectVisit(FontSize, VisitUpdate);
+  if VisitUpdate.Changed then
+  begin
+    Encounter.Location  := VisitUpdate.Location;
+    Encounter.DateTime  := VisitUpdate.DateTime;
+    Encounter.VisitCategory := VisitUpdate.VisitCategory;
+    Encounter.StandAlone := VisitUpdate.StandAlone;
+  end;
+end;
+
+procedure SelectVisit(FontSize: Integer; var VisitUpdate: TVisitUpdate);
+{ displays visit selection form and returns a record of the updated information }
+var
+  frmVisit: TfrmVisit;
+  W, H: Integer;
+begin
+  frmVisit := TfrmVisit.Create(Application);
+  try
+    with frmVisit do
+    begin
+      Font.Size := FontSize;
+      lblInstruct.Font.Size := FontSize;
+      W := ClientWidth;
+      H := ClientHeight;
+      ResizeToFont(FontSize, W, H);
+      ClientWidth  := W; pnlBase.Width  := W;
+      ClientHeight := H; pnlBase.Height := W;
+      frmVisit.ShowModal;
+      with VisitUpdate do
+      begin
+        Changed := FChanged;
+        DateTime := FDateTime;
+        Location := FLocation;
+        LocationName := FLocationName;
+        VisitCategory := FVisitCategory;
+        StandAlone := FStandAlone;
+      end; {with VisitRec}
+    end; {with frmVisit}
+  finally
+    frmVisit.Release;
+  end;
+end;
+*)
+
+procedure TfrmVisit.FormCreate(Sender: TObject);
+{ initialize private fields and display appropriate visit selection controls }
+begin
+  FChanged := False;
+  radSelectorClick(radAppt);
+  if lstVisit.Items.Count = 0 then
+  begin
+    radNewVisit.Checked := True;
+    radSelectorClick(radNewVisit);
+  end;
+end;
+
+procedure TfrmVisit.radSelectorClick(Sender: TObject);
+{ change visit data entry according to the radiobutton selected (appts, admissions, new visit }
+var
+  i: Integer;
+  ADateFrom, ADateThru: TDateTime;
+  BDateFrom, BDateThru: Integer;
+begin
+  if not TRadioButton(Sender).Checked then Exit;
+  lstVisit.Clear;
+  lblVisitDate.Hide;
+  case TRadioButton(Sender).Tag of
+    TAG_SEL_CLINIC: begin
+                      lblSelect.Caption := 'Clinic Appointments';
+                      rpcGetRangeForEncs(BDateFrom, BDateThru, False); // Get user's current date range settings.
+                      ADateFrom := (FMDateTimeToDateTime(FMToday) - BDateFrom);
+                      ADateThru := (FMDateTimeToDateTime(FMToday) + BDateThru);
+                      ADateFrom := DateTimeToFMDateTime(ADateFrom);
+                      ADateThru:= DateTimeToFMDateTime(ADateThru) + 0.2359;
+                      ListApptAll(lstVisit.Items, Patient.DFN, ADateFrom, ADateThru);
+                      pnlVisit.Hide;
+                      lstVisit.Show;
+                    end;
+    TAG_SEL_ADMIT:  begin
+                      lblSelect.Caption := 'Hospital Admissions';
+                      ListAdmitAll(lstVisit.Items, Patient.DFN);
+                      pnlVisit.Hide;
+                      lstVisit.Show;
+                    end;
+    TAG_SEL_NEW:    begin
+                      lblSelect.Caption := 'Visit Location';
+                      with cboLocation do
+                      begin
+                        InitLongList(Encounter.LocationName);
+                        for i := 0 to Items.Count - 1 do
+                          if StrToIntDef(Piece(Items[i], U, 1),0) = Encounter.Location then
+                          begin
+                            ItemIndex := i;
+                            break;
+                          end;
+                      end;
+                      lstVisit.Hide;
+                      lblVisitDate.Show;
+                      pnlVisit.Show;
+                    end;
+  end;
+  lstVisit.Caption := lblSelect.Caption;
+end;
+
+procedure TfrmVisit.cboLocationNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+{ callback for location combobox to list active locations }
+begin
+  //cboLocation.ForDataUse(SubSetOfLocations(StartFrom, Direction));
+  cboLocation.ForDataUse(SubSetOfClinics(StartFrom, Direction));
+end;
+
+procedure TfrmVisit.cmdOKClick(Sender: TObject);
+{ gather and validate visit information }
+const
+  VST_CAPTION  = 'Unable to Select Visit';
+  VST_LOCATION = 'A visit LOCATION has not been selected.';
+  VST_DATETIME = 'A valid date/time has not been entered.';
+  VST_NOTIME   = 'A valid time has not been entered.';
+  VST_SELECT   = 'An appointment/hospitalization has not been entered';
+begin
+  FStandAlone := False;
+  if radNewVisit.Checked then
+  begin
+    if cboLocation.ItemIndex < 0 then
+    begin
+      InfoBox(VST_LOCATION, VST_CAPTION, MB_OK);
+      Exit;
+    end;
+    FDateTime := StrToFMDateTime(timVisitDate.Text);
+    if not (FDateTime > 0) then
+    begin
+      InfoBox(VST_DATETIME, VST_CAPTION, MB_OK);
+      Exit;
+    end;
+    if(pos('.',FloatToStr(FDateTime))=0) then
+    begin
+      InfoBox(VST_NOTIME, VST_CAPTION, MB_OK);
+      Exit;
+    end;
+    with cboLocation do
+    begin
+      FLocation := ItemIEN;
+      FLocationName := DisplayText[ItemIndex];
+    end;
+
+    //Changed 12/30/97 ISL/RAB
+    if ckbHistorical.state = cbchecked then FVisitCategory := 'E'
+    else FVisitCategory := 'A';
+
+    FChanged := True;
+
+    //ISL/RAB  1/15/98  The following line has been changed so procedures will
+    //         not be required for historical visits.
+    if (FVisitCategory = 'A') then FStandAlone := True;
+  end else
+  begin
+    if lstVisit.ItemIndex < 0 then
+    begin
+      InfoBox(VST_SELECT, VST_CAPTION, MB_OK);
+      Exit;
+    end;
+    with lstVisit do
+    begin
+      FDateTime := MakeFMDateTime(ItemID);
+      FLocation := StrToIntDef(Piece(Items[ItemIndex], U, 2), 0);
+      FLocationName := Piece(Items[ItemIndex], U, 3);
+      if(radAdmit.Checked) then
+        FVisitCategory := 'H'
+      else
+        FVisitCategory := 'A';
+      FChanged := True;
+    end;
+  end;
+  Close;
+end;
+
+procedure TfrmVisit.cmdCancelClick(Sender: TObject);
+{ cancel form - no change to visit information }
+begin
+  FChanged := False;
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVitals.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVitals.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVitals.dfm	(revision 1676)
@@ -0,0 +1,403 @@
+inherited frmVitals: TfrmVitals
+  Left = 224
+  Top = 211
+  BorderIcons = [biSystemMenu]
+  Caption = 'Vitals'
+  ClientHeight = 375
+  ClientWidth = 514
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnKeyUp = FormKeyUp
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel [0]
+    Left = 0
+    Top = 0
+    Width = 514
+    Height = 221
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblNoResults: TStaticText
+      Left = 196
+      Top = 58
+      Width = 217
+      Height = 17
+      Caption = 'No measurement to graph for this date range.'
+      TabOrder = 2
+    end
+    object chtChart: TChart
+      Left = 95
+      Top = 0
+      Width = 419
+      Height = 221
+      AllowPanning = pmNone
+      AllowZoom = False
+      BackWall.Brush.Color = clWhite
+      BackWall.Brush.Style = bsClear
+      Title.Text.Strings = (
+        'test name')
+      Title.Visible = False
+      OnClickLegend = chtChartClickLegend
+      OnClickSeries = chtChartClickSeries
+      OnUndoZoom = chtChartUndoZoom
+      LeftAxis.Title.Caption = 'units'
+      Legend.Alignment = laTop
+      Legend.Inverted = True
+      Legend.ShadowSize = 2
+      View3D = False
+      Align = alClient
+      BevelOuter = bvNone
+      PopupMenu = popChart
+      TabOrder = 1
+      OnMouseDown = chtChartMouseDown
+      object serTestY: TLineSeries
+        Marks.ArrowLength = 8
+        Marks.Visible = False
+        SeriesColor = clBlue
+        Title = 'Mean'
+        Pointer.Brush.Color = clBlue
+        Pointer.Draw3D = False
+        Pointer.InflateMargins = True
+        Pointer.Style = psDiamond
+        Pointer.Visible = True
+        XValues.DateTime = True
+        XValues.Name = 'X'
+        XValues.Multiplier = 1.000000000000000000
+        XValues.Order = loAscending
+        YValues.DateTime = False
+        YValues.Name = 'Y'
+        YValues.Multiplier = 1.000000000000000000
+        YValues.Order = loNone
+      end
+      object serTestX: TLineSeries
+        Marks.ArrowLength = 8
+        Marks.Visible = False
+        SeriesColor = clBlue
+        Title = 'Dialstolic'
+        Pointer.Brush.Color = clBlue
+        Pointer.Draw3D = False
+        Pointer.HorizSize = 3
+        Pointer.InflateMargins = True
+        Pointer.Style = psRectangle
+        Pointer.VertSize = 3
+        Pointer.Visible = True
+        XValues.DateTime = True
+        XValues.Name = 'X'
+        XValues.Multiplier = 1.000000000000000000
+        XValues.Order = loAscending
+        YValues.DateTime = False
+        YValues.Name = 'Y'
+        YValues.Multiplier = 1.000000000000000000
+        YValues.Order = loNone
+      end
+      object serTest: TLineSeries
+        Marks.ArrowLength = 8
+        Marks.Visible = False
+        SeriesColor = clBlue
+        Title = 'Systolic'
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.Visible = True
+        XValues.DateTime = True
+        XValues.Name = 'X'
+        XValues.Multiplier = 1.000000000000000000
+        XValues.Order = loAscending
+        YValues.DateTime = False
+        YValues.Name = 'Y'
+        YValues.Multiplier = 1.000000000000000000
+        YValues.Order = loNone
+      end
+      object serTime: TPointSeries
+        Marks.ArrowLength = 8
+        Marks.Visible = False
+        SeriesColor = clSilver
+        ShowInLegend = False
+        Title = 'Time'
+        Pointer.Draw3D = False
+        Pointer.HorizSize = 3
+        Pointer.InflateMargins = True
+        Pointer.Style = psCircle
+        Pointer.VertSize = 3
+        Pointer.Visible = False
+        XValues.DateTime = False
+        XValues.Name = 'X'
+        XValues.Multiplier = 1.000000000000000000
+        XValues.Order = loAscending
+        YValues.DateTime = False
+        YValues.Name = 'Y'
+        YValues.Multiplier = 1.000000000000000000
+        YValues.Order = loNone
+      end
+    end
+    object pnlLeft: TORAutoPanel
+      Left = 0
+      Top = 0
+      Width = 95
+      Height = 221
+      Align = alLeft
+      TabOrder = 0
+      object lstDates: TORListBox
+        Left = 1
+        Top = 25
+        Width = 93
+        Height = 132
+        Align = alTop
+        ItemHeight = 13
+        Items.Strings = (
+          '1^Today'
+          '8^One Week'
+          '15^Two Weeks'
+          '31^One Month'
+          '183^Six Months'
+          '366^One Year'
+          '732^Two Years'
+          '66666^All Results'
+          'S^Date Range')
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = lstDatesClick
+        Caption = 'Select Vitals from:'
+        ItemTipColor = clWindow
+        LongList = False
+        Pieces = '2'
+      end
+      object pnlLeftClient: TORAutoPanel
+        Left = 1
+        Top = 157
+        Width = 93
+        Height = 68
+        BevelOuter = bvNone
+        TabOrder = 2
+        object chkValues: TCheckBox
+          Left = 9
+          Top = 8
+          Width = 76
+          Height = 17
+          Caption = 'Values'
+          TabOrder = 0
+          OnClick = chkValuesClick
+        end
+        object chk3D: TCheckBox
+          Left = 9
+          Top = 42
+          Width = 76
+          Height = 17
+          Caption = '3D'
+          TabOrder = 2
+          OnClick = chk3DClick
+        end
+        object chkZoom: TCheckBox
+          Left = 9
+          Top = 25
+          Width = 76
+          Height = 17
+          Caption = 'Zoom'
+          TabOrder = 1
+          OnClick = chkZoomClick
+        end
+      end
+      object pnlEnterVitals: TPanel
+        Left = 1
+        Top = 1
+        Width = 93
+        Height = 24
+        Align = alTop
+        Caption = 'pnlEnterVitals'
+        TabOrder = 0
+        OnResize = pnlEnterVitalsResize
+        object btnEnterVitals: TButton
+          Left = 8
+          Top = 0
+          Width = 75
+          Height = 25
+          Caption = 'Enter Vitals'
+          TabOrder = 0
+          OnClick = btnEnterVitalsClick
+        end
+      end
+    end
+  end
+  object pnlBottom: TPanel [1]
+    Left = 0
+    Top = 221
+    Width = 514
+    Height = 154
+    Align = alBottom
+    TabOrder = 1
+    object grdVitals: TCaptionStringGrid
+      Left = 96
+      Top = 1
+      Width = 417
+      Height = 152
+      Align = alClient
+      Color = clCream
+      ColCount = 6
+      Ctl3D = True
+      DefaultRowHeight = 15
+      FixedCols = 0
+      RowCount = 8
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing]
+      ParentCtl3D = False
+      ParentFont = False
+      TabOrder = 1
+      OnSelectCell = grdVitalsSelectCell
+      Caption = 'Vitals Data'
+      ColWidths = (
+        64
+        64
+        64
+        64
+        64
+        64)
+    end
+    object pnlButtons: TPanel
+      Left = 1
+      Top = 1
+      Width = 95
+      Height = 152
+      Align = alLeft
+      BevelOuter = bvNone
+      TabOrder = 0
+      DesignSize = (
+        95
+        152)
+      object lstVitals: TCaptionListBox
+        Left = 0
+        Top = 16
+        Width = 95
+        Height = 119
+        Style = lbOwnerDrawFixed
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        ItemHeight = 16
+        Items.Strings = (
+          'Temperature'
+          'Pulse'
+          'Respiration'
+          'Blood Pressure'
+          'Height'
+          'Weight'
+          'Pain')
+        TabOrder = 0
+        OnClick = lstVitalsClick
+        Caption = 'Vitals'
+      end
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lblNoResults'
+        'Status = stsDefault')
+      (
+        'Component = chtChart'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeft'
+        'Status = stsDefault')
+      (
+        'Component = lstDates'
+        'Status = stsDefault')
+      (
+        'Component = pnlLeftClient'
+        'Status = stsDefault')
+      (
+        'Component = chkValues'
+        'Status = stsDefault')
+      (
+        'Component = chk3D'
+        'Status = stsDefault')
+      (
+        'Component = chkZoom'
+        'Status = stsDefault')
+      (
+        'Component = pnlEnterVitals'
+        'Status = stsDefault')
+      (
+        'Component = btnEnterVitals'
+        'Status = stsDefault')
+      (
+        'Component = pnlBottom'
+        'Status = stsDefault')
+      (
+        'Component = grdVitals'
+        'Status = stsDefault')
+      (
+        'Component = pnlButtons'
+        'Status = stsDefault')
+      (
+        'Component = lstVitals'
+        'Status = stsDefault')
+      (
+        'Component = frmVitals'
+        'Status = stsDefault'))
+  end
+  object popChart: TPopupMenu
+    OnPopup = popChartPopup
+    Left = 37
+    Top = 317
+    object popValues: TMenuItem
+      Caption = 'Values'
+      OnClick = popValuesClick
+    end
+    object pop3D: TMenuItem
+      Caption = '3D'
+      OnClick = pop3DClick
+    end
+    object popZoom: TMenuItem
+      Caption = 'Zoom Enabled'
+      OnClick = popZoomClick
+    end
+    object popZoomBack: TMenuItem
+      Caption = 'Zoom Back'
+      OnClick = popZoomBackClick
+    end
+    object N1: TMenuItem
+      Caption = '-'
+    end
+    object popCopy: TMenuItem
+      Caption = 'Copy'
+      OnClick = popCopyClick
+    end
+    object N2: TMenuItem
+      Caption = '-'
+    end
+    object popDetails: TMenuItem
+      Caption = 'Details'
+      OnClick = popDetailsClick
+    end
+    object N3: TMenuItem
+      Caption = '-'
+    end
+    object popPrint: TMenuItem
+      Caption = 'Print'
+      OnClick = popPrintClick
+    end
+  end
+  object calVitalsRange: TORDateRangeDlg
+    DateOnly = True
+    Instruction = 'Enter a date range -'
+    LabelStart = 'Begin Date'
+    LabelStop = 'End Date'
+    RequireTime = False
+    Format = 'mmm d,yy'
+    Left = 74
+    Top = 320
+  end
+  object dlgWinPrint: TPrintDialog
+    Left = 146
+    Top = 324
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVitals.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVitals.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fVitals.pas	(revision 1676)
@@ -0,0 +1,807 @@
+{Modifications
+Date: 4/1/98 RAB/ISL
+Description: Added procedure SelectVital(FontSize:integer; idx: integer)
+    To be able to pass the row index into the form.  This will enable the vital
+    entry form to open the apropriate line on this form (If this screen is opened
+    by the vital entry screen)
+
+Date: 4/9/98 RAB/ISL
+Descriotion:  Added button and click event to call vital entry screen.
+
+Date: 4/9/98 RAB/ISL
+Descriotion:  if Idx passed into procedure SelectVital is '99' then the botton to
+  call the vital entry screen will be disabled.
+
+Date: 4/23/98
+By: Robert Bott
+Description: Set position of form to poScreenCenter.
+Date: 4/23/98
+By: Robert Bott
+Description: Forced an update after returning from vital entry form.
+
+//Modifed: 6/23/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Moved code that verifies valid provider and visit from fvit into fVitals.
+//   now found in procedure TfrmVitals.btnEnterVitalsClick(Sender: TObject);
+//   formerly in procedure TfrmVit.FormActivate(Sender: TObject);
+
+}
+
+unit fVitals;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, TeEngine, Series, TeeProcs, Chart, ExtCtrls, Grids,Buttons,
+  ORNet, ORFn, uConst, Menus, ORDtTmRng, fBase508Form, ComCtrls, uVitals, VAUtils,
+  VA508AccessibilityManager;
+
+type
+  TfrmVitals = class(TfrmBase508Form)
+    pnlTop: TPanel;
+    chtChart: TChart;
+    serTest: TLineSeries;
+    pnlLeft: TORAutoPanel;
+    lstDates: TORListBox;
+    pnlBottom: TPanel;
+    grdVitals: TCaptionStringGrid;
+    pnlButtons: TPanel;
+    lstVitals: TCaptionListBox;
+    serTestX: TLineSeries;
+    serTime: TPointSeries;
+    lblNoResults: TStaticText;
+    serTestY: TLineSeries;
+    pnlLeftClient: TORAutoPanel;
+    chkValues: TCheckBox;
+    chk3D: TCheckBox;
+    chkZoom: TCheckBox;
+    pnlEnterVitals: TPanel;
+    btnEnterVitals: TButton;
+    popChart: TPopupMenu;
+    popValues: TMenuItem;
+    pop3D: TMenuItem;
+    popZoom: TMenuItem;
+    popZoomBack: TMenuItem;
+    N1: TMenuItem;
+    popCopy: TMenuItem;
+    N2: TMenuItem;
+    popDetails: TMenuItem;
+    calVitalsRange: TORDateRangeDlg;
+    N3: TMenuItem;
+    popPrint: TMenuItem;
+    dlgWinPrint: TPrintDialog;
+    procedure lstDatesClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure lstVitalsClick(Sender: TObject);
+    procedure grdVitalsSelectCell(Sender: TObject; Col, Row: Integer;
+      var CanSelect: Boolean);
+    procedure chkZoomClick(Sender: TObject);
+    procedure chk3DClick(Sender: TObject);
+    procedure chkValuesClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure pnlEnterVitalsResize(Sender: TObject);
+    procedure btnEnterVitalsClick(Sender: TObject);
+    procedure chtChartUndoZoom(Sender: TObject);
+    procedure popValuesClick(Sender: TObject);
+    procedure pop3DClick(Sender: TObject);
+    procedure popZoomClick(Sender: TObject);
+    procedure popZoomBackClick(Sender: TObject);
+    procedure popCopyClick(Sender: TObject);
+    procedure popDetailsClick(Sender: TObject);
+    procedure chtChartClickSeries(Sender: TCustomChart;
+      Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure chtChartMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure chtChartClickLegend(Sender: TCustomChart;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure popChartPopup(Sender: TObject);
+    procedure popPrintClick(Sender: TObject);
+    procedure BeginEndDates(var ADate1, ADate2: TFMDateTime; var ADaysBack: integer);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+    procedure VGrid(griddata: TStrings);
+    procedure WorksheetChart(test: string; aitems: TStrings);
+    procedure GetStartStop(var start, stop: string; aitems: TStrings);
+  public
+    { Public declarations }
+    function FMToDateTime(FMDateTime: string): TDateTime;
+  end;
+
+
+var
+  frmVitals: TfrmVitals;
+  tmpGrid: TStringList;
+  uDate1, uDate2: Tdatetime;
+
+procedure SelectVital(FontSize:integer; idx: integer);
+procedure SelectVitals(VitalType: String);
+function VitalsGrid(const patient: string; date1, date2: TFMDateTime; restrictdates: integer; tests: TStrings): TStrings;  //*DFN*
+function VitalsMemo(const patient: string; date1, date2: TFMDateTime; tests: TStrings): TStrings;  //*DFN*
+
+implementation
+
+uses fCover, uCore, rCore, fVit, fFrame, fEncnt, fVisit, fRptBox, rReports, uInit;
+
+const
+  ZOOM_PERCENT = 99;        // padding for inflating margins
+
+{$R *.DFM}
+
+
+procedure SelectVital(FontSize:integer; idx: integer);
+var
+  frmVitals: TfrmVitals;
+begin
+  frmVitals := TfrmVitals.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmVitals);
+    with frmVitals do
+    begin
+      if idx <= lstvitals.items.count then lstVitals.ItemIndex := idx
+      else lstVitals.ItemIndex := 0;
+
+      if idx = 99 then
+        btnEnterVitals.enabled := False;
+      ShowModal;
+    end;
+
+  finally
+    frmVitals.Release;
+  end;
+end;
+
+function getVitalsStartDate : String;
+begin
+  result := '';
+  if Patient.Inpatient then
+    result := FormatDateTime('mm/dd/yy',Now - 7)
+  else
+    result := FormatDateTime('mm/dd/yy',IncMonth(Now,-6));
+end;
+
+procedure SelectVitals(VitalType: String);
+var
+  VLPtVitals : TGMV_VitalsViewForm;
+  GMV_FName,
+  GMV_LibName: String;
+begin
+ { Availble Forms:
+  GMV_FName :='GMV_VitalsEnterDLG';
+  GMV_FName :='GMV_VitalsEnterForm';
+  GMV_FName :='GMV_VitalsViewForm';
+  GMV_FName :='GMV_VitalsViewDLG';
+  }
+  GMV_FName :='GMV_VitalsViewDLG';
+  GMV_LibName :='GMV_VitalsViewEnter.dll';
+  GMV_LibName := GetProgramFilesPath + SHARE_DIR + GMV_LibName;
+  if VitalsDLLHandle = 0 then
+    VitalsDLLHandle := LoadLibrary(PChar(GMV_LibName));
+ // UpdateTimeOutInterval(5000);
+  if VitalsDLLHandle <> 0 then
+    begin
+     @VLPtVitals := GetProcAddress(VitalsDLLHandle,PChar(GMV_FName));
+     if assigned(VLPtVitals) then
+       VLPtVitals(RPCBrokerV,Patient.DFN,FloatToStr(Encounter.Location),
+                  getVitalsStartDate(),FormatDateTime('mm/dd/yy',Now),
+                  GMV_APP_SIGNATURE,
+                  GMV_CONTEXT,GMV_CONTEXT,
+                  Patient.Name,
+                  frmFrame.lblPtSSN.Caption + '    ' + frmFrame.lblPtAge.Caption,
+                  Encounter.LocationName +U+ VitalType)
+     else
+       MessageDLG('Can''t find function "'+GMV_FName+'".',mtError,[mbok],0);
+    end
+  else
+    MessageDLG('Can''t find library "'+GMV_LibName+'".',mtError,[mbok],0);
+  @VLPtVitals := nil;
+  if VitalsDLLHandle <> 0 then
+  begin
+    FreeLibrary(VitalsDLLHandle);
+    VitalsDLLHandle := 0;
+  end;
+//  if DLLForceClose then                  // jm - removed as part of timeout fix
+//    frmFrame.Close; // Fix for CQ: 7535  // jm - removed as part of timeout fix
+end;
+
+(*
+procedure SelectVitals(FontSize: Integer);
+var
+  frmVitals: TfrmVitals;
+  firstchar: string;
+  i: integer;
+begin
+  frmVitals := TfrmVitals.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmVitals);
+    with frmVitals do
+    begin
+      with frmCover do
+        for i := ComponentCount - 1 downto 0 do
+          begin
+            if Components[i] is TORListBox then
+              begin
+                case Components[i].Tag of
+                  70:
+                  if (Components[i] as TORListBox).ItemIndex > -1 then
+                    begin
+                      // changed to look at 2 chars so pain & pulse not confused {*KCM*}
+                      firstchar := UpperCase(Copy(Piece((Components[i] as TORListBox).Items[(Components[i] as TORListBox).ItemIndex], '^', 2), 1, 2));
+                      if firstchar = 'T' then
+                        lstVitals.ItemIndex := 0
+                      else if firstchar = 'P' then
+                        lstVitals.ItemIndex := 1
+                      else if firstchar = 'R' then
+                        lstVitals.ItemIndex := 2
+                      else if firstchar = 'BP' then
+                        lstVitals.ItemIndex := 3
+                      else if firstchar = 'HT' then
+                        lstVitals.ItemIndex := 4
+                      else if firstchar = 'WT' then
+                        lstVitals.ItemIndex := 5
+                      else if firstchar = 'PN' then
+                        lstVitals.ItemIndex := 6;
+                    end
+                    else
+                    begin
+                      firstchar := '';
+                      lstVitals.ItemIndex := 0;
+                    end;
+                end;
+              end;
+          end;
+      ShowModal;
+    end;
+  finally
+    frmVitals.Release;
+  end;
+end;
+  *)
+procedure TfrmVitals.VGrid(griddata: TStrings);
+var
+  testcnt, datecnt, datacnt, linecnt, x, y, i: integer;
+begin
+  testcnt := strtoint(Piece(griddata[0], '^', 1));
+  datecnt := strtoint(Piece(griddata[0], '^', 2));
+  datacnt := strtoint(Piece(griddata[0], '^', 3));
+  linecnt := testcnt + datecnt + datacnt;
+  with grdVitals do
+  begin
+    if datecnt = 0 then ColCount := 1 else ColCount := datecnt;
+    if testcnt = 0 then RowCount := 2 else RowCount := testcnt + 1;
+    DefaultColWidth := 80;
+    FixedCols := 0;
+    FixedRows := 1;
+    for y := 0 to RowCount - 1 do
+      for x := 0 to ColCount - 1 do
+        Cells[x, y] := '';
+    if datecnt = 0 then
+    begin
+      Cells[1, 0] := 'no results';
+      for x := 1 to RowCount - 1 do
+        Cells[x, 1] := '';
+    end;
+    for i := testcnt + 1 to testcnt + datecnt do
+    begin
+      Cells[i - testcnt - 1, 0] := FormatFMDateTime('mm/dd/yy hh:nn',MakeFMDateTime(Piece(griddata[i], '^', 2)));
+    end;
+    for i := testcnt + datecnt + 1 to linecnt do
+    begin
+      x := strtoint(Piece(griddata[i], '^', 1));
+      y := strtoint(Piece(griddata[i], '^', 2));
+      Cells[x - 1, y]  := Piece(griddata[i], '^', 3);
+    end;
+  end;
+end;
+
+function VitalsGrid(const patient: string; date1, date2: TFMDateTime; restrictdates: integer; tests: TStrings): TStrings;  //*DFN*
+begin
+  CallV('GMV ORQQVI1 GRID', [patient, date1, date2, restrictdates, tests]);
+  Result := RPCBrokerV.Results;
+end;
+
+function VitalsMemo(const patient: string; date1, date2: TFMDateTime; tests: TStrings): TStrings;  //*DFN*
+begin
+  CallV('GMV ORQQVI1 DETAIL', [patient, date1, date2, 0, tests]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure TfrmVitals.lstDatesClick(Sender: TObject);
+var
+  daysback, vindex: integer;
+  date1, date2: TFMDateTime;
+  today: TDateTime;
+begin
+  if (lstDates.ItemID = 'S') then
+  begin
+    with calVitalsRange do
+    begin
+      if Execute then
+      begin
+        lstDates.ItemIndex := lstDates.Items.Add(RelativeStart + ';' +
+          RelativeStop + U + TextOfStart + ' to ' + TextOfStop);
+      end
+      else
+        lstDates.ItemIndex := -1;
+    end;
+  end;
+  today := FMToDateTime(floattostr(FMToday));
+  if lstDates.ItemIEN > 0 then
+  begin
+    daysback := lstDates.ItemIEN;
+    date1 := FMToday + 0.2359;
+    If daysback = 1 then
+      date2 := DateTimeToFMDateTime(today)
+    Else
+      date2 := DateTimeToFMDateTime(today - daysback);
+  end
+  else
+    BeginEndDates(date1,date2,daysback);
+  //date1 := date1 + 0.2359;
+  FastAssign(VitalsGrid(Patient.DFN, date1, date2, 0, lstVitals.Items), tmpGrid);
+  vindex := lstVitals.ItemIndex;
+  VGrid(tmpGrid);
+  lstVitals.ItemIndex := vindex;
+  lstVitalsClick(self);
+  chtChart.BottomAxis.Automatic := true;    //***********
+  chkZoom.Checked := false;
+  chtChart.UndoZoom;
+  if lstVitals.ItemIndex > -1 then
+  begin
+    WorksheetChart(inttostr(lstVitals.ItemIndex + 1), tmpGrid);
+    if (serTest.Count > 1) and not chkZoom.Checked then
+    begin
+      chtChart.UndoZoom;
+      chtChart.ZoomPercent(ZOOM_PERCENT);
+    end;
+  end;
+end;
+
+procedure TfrmVitals.FormCreate(Sender: TObject);
+begin
+  tmpGrid := TStringList.Create;
+  if Patient.Inpatient then lstDates.ItemIndex := 1 else lstDates.ItemIndex := 4;
+  SerTest.GetHorizAxis.ExactDateTime := true;
+  SerTest.GetHorizAxis.Increment := DateTimeStep[dtOneMinute];
+end;
+
+procedure TfrmVitals.FormDestroy(Sender: TObject);
+begin
+  tmpGrid.free;
+end;
+
+function TfrmVitals.FMToDateTime(FMDateTime: string): TDateTime;
+var
+  x, Year: string;
+begin
+  { Note: TDateTime cannot store month only or year only dates }
+  x := FMDateTime + '0000000';
+  if Length(x) > 12 then x := Copy(x, 1, 12);
+  if StrToInt(Copy(x, 9, 4)) > 2359 then x := Copy(x,1,7) + '.2359';
+  Year := IntToStr(17 + StrToInt(Copy(x,1,1))) + Copy(x,2,2);
+  x := Copy(x,4,2) + '/' + Copy(x,6,2) + '/' + Year + ' ' + Copy(x,9,2) + ':' + Copy(x,11,2);
+  Result := StrToDateTime(x);
+end;
+
+procedure TfrmVitals.lstVitalsClick(Sender: TObject);
+begin
+  with grdVitals do
+  begin
+    Row := lstVitals.ItemIndex + 1;
+    Col := grdVitals.ColCount - 1;
+  end;
+end;
+
+procedure TfrmVitals.WorksheetChart(test: string; aitems: TStrings);
+
+function OkFloatValue(value: string): boolean;
+var
+  i, j: integer;
+  first, second: string;
+begin
+  Result := false;
+  i := strtointdef(value, -99999);
+  if i <> -99999 then Result := true
+  else if pos(Pieces(value, '.', 2, 3), '.') > 0 then Result := false
+  else
+  begin
+    first := Piece(value, '.', 1);
+    second := Piece(value, '.', 2);
+    if length(second) > 0 then
+    begin
+      i := strtointdef(first, -99999);
+      j := strtointdef(second, -99999);
+      if (i <> -99999) and (j <> -99999) then Result := true;
+    end
+    else
+    begin
+      i :=strtointdef(first, -99999);
+      if i <> -99999 then Result := true;
+    end;
+  end;
+end;
+
+var
+  datevalue, oldstart, oldend: TDateTime;
+  labvalue, labvalue1, labvalue2, labvalue3: double;
+  i, numtest, numcol, numvalues, valuecount: integer;
+  high, start, stop, value, value1, value2, value3, testcheck, units, testname, testnum, testorder: string;
+begin
+
+
+  valuecount := 0;
+  testnum := Piece(test, '^', 1);
+  testname := lstVitals.Items[strtoint(testnum) - 1];
+  numtest := strtoint(Piece(aitems[0], '^', 1));
+  numcol := strtoint(Piece(aitems[0], '^', 2));
+  numvalues := strtoint(Piece(aitems[0], '^', 3));
+  if numvalues = 0 then
+    chtChart.Visible := false
+  else
+  begin
+    chtChart.Visible := true;
+    serTest.Clear;  serTestX.Clear;  serTime.Clear;
+    if numtest > 0 then
+    begin
+      for i := 1 to numtest do
+        if testnum = Piece(aitems[i], '^', 1) then
+        begin
+          testorder := inttostr(i);
+          break;
+        end;
+      GetStartStop(start, stop, aitems);
+      chtChart.Legend.Color := grdVitals.Color;
+      chtChart.Title.Font.Size := MainFontSize;
+      chtChart.LeftAxis.Title.Caption := units;
+      serTest.Title := Piece(test, '^', 2);
+      testcheck := testorder;
+      high := '0';
+      if testname = 'Blood Pressure' then
+      begin
+        serTestY.Active := false;
+        for i := numtest + numcol + 1 to numtest + numcol + numvalues do
+          if Piece(aitems[i], '^', 2) = testcheck then
+          begin
+            serTestX.Active := true;
+            serTestX.Marks.Visible := chkValues.Checked;
+            serTestY.Marks.Visible := chkValues.Checked;
+            value := Piece(aitems[i], '^', 3);
+            value1 := Piece(value, '/', 1);
+            value2 := Piece(value, '/', 2);
+            value3 := Piece(value, '/', 3);
+            if OkFloatValue(value1) and OKFloatValue(value2) then
+            begin
+              high := value1;
+              labvalue1 := strtofloat(value1);
+              labvalue2 := strtofloat(value2);
+              datevalue := FMToDateTime(Piece(aitems[numtest + strtoint(Piece(aitems[i], '^', 1))], '^', 2));
+              serTest.AddXY(datevalue, labvalue1, '', clTeeColor);
+              serTestX.AddXY(datevalue, labvalue2, '', clTeeColor);
+              inc(valuecount);
+              if OKFloatValue(value3) then
+              begin
+                labvalue3 := strtofloat(value3);
+                serTestY.AddXY(datevalue, labvalue3, '', clTeeColor);
+                serTestY.Active := true;
+              end;
+            end;
+          end;
+        serTest.Title := 'Systolic';
+        serTestX.Title := 'Diastolic';
+      end    // blood pressure
+      else
+      begin
+        for i := numtest + numcol + 1 to numtest + numcol + numvalues do
+          if Piece(aitems[i], '^', 2) = testcheck then
+          begin
+            serTestX.Active := false;
+            serTestY.Active := false;
+            value := Piece(aitems[i], '^', 3);
+            if OkFloatValue(value) then
+            begin
+              high := value;
+              labvalue := strtofloat(value);
+              datevalue := FMToDateTime(Piece(aitems[numtest + strtoint(Piece(aitems[i], '^', 1))], '^', 2));
+              serTest.AddXY(datevalue, labvalue, '', clTeeColor);
+              inc(valuecount);
+            end;
+          end;
+        serTest.Title := lstVitals.Items[lstVitals.ItemIndex];
+      end;   // not blood pressure
+      serTime.AddXY(FMToDateTime(start), strtofloat(high), '',clTeeColor);
+      serTime.AddXY(FMToDateTime(stop), strtofloat(high), '',clTeeColor);
+    end;   // numtest > 0
+    if chkZoom.Checked and chtChart.Visible then
+    begin
+      oldstart := chtChart.BottomAxis.Minimum;
+      oldend := chtChart.BottomAxis.Maximum;
+      chtChart.UndoZoom;
+      chtChart.BottomAxis.Automatic := false;
+      chtChart.BottomAxis.Minimum := oldstart;
+      chtChart.BottomAxis.Maximum := oldend;
+    end
+    else
+    begin
+      chtChart.BottomAxis.Automatic := true;
+    end;
+    if valuecount = 0 then chtChart.Visible := false;
+  end;  // numvalues not 0
+end;
+
+procedure TfrmVitals.GetStartStop(var start, stop: string; aitems: TStrings);
+var
+  numtest, numcol: integer;
+begin
+  numtest := strtoint(Piece(aitems[0], '^', 1));
+  numcol := strtoint(Piece(aitems[0], '^', 2));
+  start := Piece(aitems[numtest + 1], '^', 2);
+  stop := Piece(aitems[numtest + numcol], '^', 2);
+end;
+
+procedure TfrmVitals.grdVitalsSelectCell(Sender: TObject; Col,
+  Row: Integer; var CanSelect: Boolean);
+begin
+  lstVitals.ItemIndex := Row - 1;
+  if lstVitals.ItemIndex > -1 then
+  begin
+    WorksheetChart(inttostr(lstVitals.ItemIndex + 1), tmpGrid);
+    if (serTest.Count > 1) and not chkZoom.Checked then
+    begin
+      chtChart.UndoZoom;
+      chtChart.ZoomPercent(ZOOM_PERCENT);
+    end;
+  end;
+end;
+
+procedure TfrmVitals.chkZoomClick(Sender: TObject);
+begin
+  chtChart.AllowZoom := chkZoom.Checked;
+  chtChart.AnimatedZoom := chkZoom.Checked;
+  if not chkZoom.Checked then
+  begin
+    chtChart.UndoZoom;
+    if serTest.Count > 1 then chtChart.ZoomPercent(ZOOM_PERCENT);
+  end;
+end;
+
+procedure TfrmVitals.chk3DClick(Sender: TObject);
+begin
+  chtChart.View3D := chk3D.Checked;
+end;
+
+procedure TfrmVitals.chkValuesClick(Sender: TObject);
+begin
+  serTest.Marks.Visible := chkValues.Checked;
+  if serTestX.Active then serTestX.Marks.Visible := chkValues.Checked;
+  if serTestY.Active then serTestY.Marks.Visible := chkValues.Checked;
+end;
+
+procedure TfrmVitals.FormShow(Sender: TObject);
+begin
+  lstDatesClick(self);
+end;
+
+
+
+
+procedure TfrmVitals.pnlEnterVitalsResize(Sender: TObject);
+begin
+  btnEnterVitals.top := pnlEnterVitals.top;
+  btnEnterVitals.left := pnlEnterVitals.left;
+  btnEnterVitals.height := pnlEnterVitals.height;
+  btnEnterVitals.width := pnlEnterVitals.width;
+end;
+
+procedure TfrmVitals.btnEnterVitalsClick(Sender: TObject);
+begin
+  If Encounter.location > 0.0 then //if it has been assigned.
+    uVitalLocation := Encounter.Location
+  else
+    begin
+      //assign location
+      if Encounter.NeedVisit then
+      begin
+        UpdateVisit(Font.Size);
+        frmFrame.DisplayEncounterText;
+      end;
+      if Encounter.NeedVisit and (not frmFrame.CCOWDrivedChange) then 
+      begin
+        InfoBox(TX_NEED_VISIT, TX_NO_VISIT, MB_OK or MB_ICONWARNING);
+        exit;                                  {RAB 6/23/98}
+      end
+      else
+        uVitalLocation := Encounter.Location;
+    end;
+
+  if (not encounter.needvisit) then
+    try
+      Application.CreateForm(TfrmVit, frmVit);
+      frmvit.showmodal;
+      //refresh vital info
+      lstDatesClick(self);
+    finally
+      frmvit.release;
+    end;
+end;
+
+procedure TfrmVitals.chtChartUndoZoom(Sender: TObject);
+begin
+  chtChart.BottomAxis.Automatic := true;
+end;
+
+procedure TfrmVitals.popValuesClick(Sender: TObject);
+begin
+  chkValues.Checked := not chkValues.Checked;
+  chkValuesClick(self);
+end;
+
+procedure TfrmVitals.pop3DClick(Sender: TObject);
+begin
+  chk3D.Checked := not chk3D.Checked;
+  chk3DClick(self);
+end;
+
+procedure TfrmVitals.popZoomClick(Sender: TObject);
+begin
+  chkZoom.Checked := not chkZoom.Checked;
+  chkZoomClick(self);
+end;
+
+procedure TfrmVitals.popZoomBackClick(Sender: TObject);
+begin
+  chtChart.UndoZoom;
+end;
+
+procedure TfrmVitals.popCopyClick(Sender: TObject);
+begin
+  chtChart.CopyToClipboardBitmap;
+end;
+
+procedure TfrmVitals.popDetailsClick(Sender: TObject);
+var
+  tmpList: TStringList;
+  date1, date2: TFMDateTime;
+  strdate1, strdate2: string;
+begin
+  inherited;
+  Screen.Cursor := crHourGlass;
+  if chtChart.Tag > 0 then
+  begin
+    strdate1 := FormatDateTime('mm/dd/yyyy', uDate1);
+    strdate2 := FormatDateTime('mm/dd/yyyy', uDate2);
+    uDate1 := StrToDateTime(strdate1);
+    uDate2 := StrToDateTime(strdate2);
+    date1 := DateTimeToFMDateTime(uDate1 + 1);
+    date2 := DateTimeToFMDateTime(uDate2);
+    StatusText('Retrieving data for ' + FormatDateTime('dddd, mmmm d, yyyy', uDate2) + '...');
+    ReportBox(VitalsMemo(Patient.DFN, date1, date2, lstVitals.Items), 'Vitals on ' + Patient.Name + ' for ' + FormatDateTime('dddd, mmmm d, yyyy', uDate2), True);
+  end
+  else
+  begin
+    date1 := DateTimeToFMDateTime(chtChart.BottomAxis.Maximum);
+    date2 := DateTimeToFMDateTime(chtChart.BottomAxis.Minimum);
+    tmpList := TStringList.Create;
+    try
+      tmpList.Add(lstVitals.Items[lstVitals.ItemIndex]);
+      if serTest.Title = 'Systolic' then
+        StatusText('Retrieving data for Blood Pressure...')
+      else
+        StatusText('Retrieving data for ' + serTest.Title + '...');
+      ReportBox(VitalsMemo(Patient.DFN, date1, date2, tmpList), serTest.Title + ' results on ' + Patient.Name, True);
+    finally
+      tmpList.Free;
+    end;
+  end;
+  Screen.Cursor := crDefault;
+  StatusText('');
+end;
+
+procedure TfrmVitals.chtChartClickSeries(Sender: TCustomChart;
+  Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+    uDate1 := Series.XValue[ValueIndex];
+    uDate2 := uDate1;
+    chtChart.Hint := 'Details - Vitals for ' + FormatDateTime('dddd, mmmm d, yyyy', Series.XValue[ValueIndex]) + '...';
+    chtChart.Tag := ValueIndex + 1;
+  if Button <> mbRight then  popDetailsClick(self);
+end;
+
+procedure TfrmVitals.chtChartMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  chtChart.Hint := '';
+  chtChart.Tag := 0;
+end;
+
+procedure TfrmVitals.chtChartClickLegend(Sender: TCustomChart;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if serTest.Title = 'Systolic' then
+    chtChart.Hint := 'Details - for Blood Pressure...'
+  else
+    chtChart.Hint := 'Details - for ' + serTest.Title + '...';
+  chtChart.Tag := 0;
+  if Button <> mbRight then  popDetailsClick(self);
+end;
+
+procedure TfrmVitals.popChartPopup(Sender: TObject);
+begin
+  popValues.Checked := chkValues.Checked;
+  pop3D.Checked := chk3D.Checked;
+  popZoom.Checked := chkZoom.Checked;
+  popZoomBack.Enabled := popZoom.Checked and not chtChart.BottomAxis.Automatic;;
+  if chtChart.Hint <> '' then
+  begin
+    popDetails.Caption := chtChart.Hint;
+    popDetails.Enabled := true;
+  end
+  else
+  begin
+    popDetails.Caption := 'Details...';
+    popDetails.Enabled := false;
+  end;
+end;
+
+procedure TfrmVitals.popPrintClick(Sender: TObject);
+var
+  GraphTitle: string;
+begin
+  GraphTitle := lstVitals.Items[lstVitals.ItemIndex] +
+                ' - ' +
+                lstDates.DisplayText[lstDates.ItemIndex];
+  if dlgWinPrint.Execute then PrintGraph(chtChart, GraphTitle);
+end;
+
+procedure TfrmVitals.BeginEndDates(var ADate1, ADate2: TFMDateTime; var ADaysBack: integer);
+var
+  datetemp: TFMDateTime;
+  today, datetime1, datetime2: TDateTime;
+  relativedate: string;
+begin
+  today := FMToDateTime(floattostr(FMToday));
+  relativedate := Piece(lstDates.ItemID, ';', 1);
+  relativedate := Piece(relativedate, '-', 2);
+  ADaysBack := strtointdef(relativedate, 0);
+  ADate1 := DateTimeToFMDateTime(today - ADaysBack);
+  relativedate := Piece(lstDates.ItemID, ';', 2);
+  if StrToIntDef(Piece(relativedate, '+', 2), 0) > 0 then
+    begin
+      relativedate := Piece(relativedate, '+', 2);
+      ADaysBack := strtointdef(relativedate, 0);
+      ADate2 := DateTimeToFMDateTime(today + ADaysBack + 1);
+    end
+  else
+    begin
+      relativedate := Piece(relativedate, '-', 2);
+      ADaysBack := strtointdef(relativedate, 0);
+      ADate2 := DateTimeToFMDateTime(today - ADaysBack);
+    end;
+  datetime1 := FMDateTimeToDateTime(ADate1);
+  datetime2 := FMDateTimeToDateTime(ADate2);
+  if datetime1 < datetime2 then                 // reorder dates, if needed
+    begin
+      datetemp := ADate1;
+      ADate1 := ADate2;
+      ADate2 := datetemp
+    end;
+  ADate1 := ADate1 + 0.2359;
+end;
+
+procedure TfrmVitals.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    Close;
+  end;  
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fvit.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fvit.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fvit.dfm	(revision 1676)
@@ -0,0 +1,576 @@
+inherited frmVit: TfrmVit
+  Left = 451
+  Top = 208
+  Caption = 'frmVit'
+  ClientHeight = 334
+  ClientWidth = 491
+  Position = poScreenCenter
+  OnActivate = FormActivate
+  OnCreate = FormCreate
+  OnKeyPress = FormKeyPress
+  OnShow = FormShow
+  ExplicitWidth = 499
+  ExplicitHeight = 361
+  PixelsPerInch = 96
+  TextHeight = 13
+  object cmdOK: TButton [0]
+    Left = 319
+    Top = 276
+    Width = 75
+    Height = 22
+    Caption = 'OK'
+    TabOrder = 1
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton [1]
+    Left = 406
+    Top = 276
+    Width = 75
+    Height = 22
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 2
+    OnClick = cmdCancelClick
+  end
+  object pnlmain: TPanel [2]
+    Left = 8
+    Top = 24
+    Width = 473
+    Height = 241
+    TabOrder = 0
+    object lblVitPointer: TOROffsetLabel
+      Left = 418
+      Top = 48
+      Width = 17
+      Height = 15
+      Caption = '<--'
+      Color = clBtnFace
+      HorzOffset = 5
+      ParentColor = False
+      Transparent = False
+      VertOffset = 2
+      WordWrap = False
+    end
+    object lblDate: TStaticText
+      Left = 32
+      Top = 23
+      Width = 31
+      Height = 17
+      Caption = 'Date'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 11
+    end
+    object lblDateBP: TStaticText
+      Tag = 3
+      Left = 26
+      Top = 122
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 12
+      OnDblClick = lbllastClick
+    end
+    object lblDateTemp: TStaticText
+      Left = 26
+      Top = 52
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 13
+      OnDblClick = lbllastClick
+    end
+    object lblDateResp: TStaticText
+      Tag = 2
+      Left = 26
+      Top = 98
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 14
+      OnDblClick = lbllastClick
+    end
+    object lblDatePulse: TStaticText
+      Tag = 1
+      Left = 26
+      Top = 75
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 15
+      OnDblClick = lbllastClick
+    end
+    object lblDateHeight: TStaticText
+      Tag = 4
+      Left = 26
+      Top = 145
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 16
+      OnDblClick = lbllastClick
+    end
+    object lblDateWeight: TStaticText
+      Tag = 5
+      Left = 26
+      Top = 169
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 17
+      OnDblClick = lbllastClick
+    end
+    object lblLstMeas: TStaticText
+      Left = 116
+      Top = 23
+      Width = 80
+      Height = 17
+      Caption = 'Last Measure'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 18
+    end
+    object lbllastBP: TStaticText
+      Tag = 3
+      Left = 124
+      Top = 122
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 19
+      OnClick = lbllastClick
+      OnDblClick = lbllastClick
+    end
+    object lblLastTemp: TStaticText
+      Left = 124
+      Top = 52
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 20
+      OnDblClick = lbllastClick
+    end
+    object lblLastResp: TStaticText
+      Tag = 2
+      Left = 124
+      Top = 98
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 21
+      OnDblClick = lbllastClick
+    end
+    object lblLastPulse: TStaticText
+      Tag = 1
+      Left = 124
+      Top = 75
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 22
+      OnDblClick = lbllastClick
+    end
+    object lblLastHeight: TStaticText
+      Tag = 4
+      Left = 124
+      Top = 145
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 23
+      OnDblClick = lbllastClick
+    end
+    object lblLastWeight: TStaticText
+      Tag = 5
+      Left = 124
+      Top = 169
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 24
+      OnDblClick = lbllastClick
+    end
+    object lblVital: TStaticText
+      Left = 256
+      Top = 23
+      Width = 29
+      Height = 17
+      Caption = 'Vital'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 25
+    end
+    object lblVitBP: TStaticText
+      Left = 256
+      Top = 122
+      Width = 23
+      Height = 17
+      Caption = 'B/P'
+      TabOrder = 26
+    end
+    object lnlVitTemp: TStaticText
+      Left = 256
+      Top = 52
+      Width = 31
+      Height = 17
+      Caption = 'Temp'
+      TabOrder = 27
+    end
+    object lblVitResp: TStaticText
+      Left = 256
+      Top = 98
+      Width = 29
+      Height = 17
+      Caption = 'Resp'
+      TabOrder = 28
+    end
+    object lblVitPulse: TStaticText
+      Left = 256
+      Top = 75
+      Width = 30
+      Height = 17
+      Caption = 'Pulse'
+      TabOrder = 29
+    end
+    object lblVitHeight: TStaticText
+      Left = 256
+      Top = 145
+      Width = 35
+      Height = 17
+      Caption = 'Height'
+      TabOrder = 30
+    end
+    object lblVitWeight: TStaticText
+      Left = 256
+      Top = 169
+      Width = 38
+      Height = 17
+      Caption = 'Weight'
+      TabOrder = 31
+    end
+    object lblDatePain: TStaticText
+      Tag = 5
+      Left = 26
+      Top = 193
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 32
+      OnDblClick = lbllastClick
+    end
+    object lblLastPain: TStaticText
+      Tag = 5
+      Left = 124
+      Top = 193
+      Width = 24
+      Height = 17
+      Caption = 'N/A'
+      TabOrder = 33
+      OnDblClick = lbllastClick
+    end
+    object lblVitPain: TStaticText
+      Left = 256
+      Top = 193
+      Width = 55
+      Height = 17
+      Caption = 'Pain Scale'
+      TabOrder = 34
+    end
+    object txtMeasBP: TCaptionEdit
+      Tag = 1
+      Left = 318
+      Top = 119
+      Width = 100
+      Height = 21
+      TabOrder = 5
+      OnEnter = SetVitPointer
+      OnExit = txtMeasBPExit
+      OnKeyPress = FormKeyPress
+      Caption = 'Blood Pressure'
+    end
+    object cboTemp: TCaptionComboBox
+      Tag = 7
+      Left = 360
+      Top = 48
+      Width = 59
+      Height = 21
+      DropDownCount = 2
+      ItemHeight = 13
+      TabOrder = 2
+      OnChange = cboTempChange
+      OnEnter = SetVitPointer
+      OnExit = cboTempExit
+      OnKeyPress = FormKeyPress
+      Items.Strings = (
+        'F'
+        'C')
+      Caption = 'Temperature'
+    end
+    object txtMeasTemp: TCaptionEdit
+      Tag = 2
+      Left = 318
+      Top = 48
+      Width = 43
+      Height = 21
+      TabOrder = 1
+      OnEnter = SetVitPointer
+      OnExit = txtMeasTempExit
+      OnKeyPress = FormKeyPress
+      Caption = 'Temperature'
+    end
+    object txtMeasResp: TCaptionEdit
+      Tag = 3
+      Left = 318
+      Top = 95
+      Width = 100
+      Height = 21
+      TabOrder = 4
+      OnEnter = SetVitPointer
+      OnExit = txtMeasRespExit
+      OnKeyPress = FormKeyPress
+      Caption = 'Resp'
+    end
+    object txtMeasPulse: TCaptionEdit
+      Tag = 4
+      Left = 318
+      Top = 72
+      Width = 100
+      Height = 21
+      TabOrder = 3
+      OnEnter = SetVitPointer
+      OnExit = txtMeasPulseExit
+      OnKeyPress = FormKeyPress
+      Caption = 'Pulse'
+    end
+    object txtMeasHt: TCaptionEdit
+      Tag = 5
+      Left = 318
+      Top = 142
+      Width = 43
+      Height = 21
+      TabOrder = 6
+      OnEnter = SetVitPointer
+      OnExit = txtMeasHtExit
+      OnKeyPress = FormKeyPress
+      Caption = 'Height'
+    end
+    object cboHeight: TCaptionComboBox
+      Tag = 8
+      Left = 361
+      Top = 142
+      Width = 58
+      Height = 21
+      ItemHeight = 13
+      TabOrder = 7
+      OnChange = cboHeightChange
+      OnEnter = SetVitPointer
+      OnExit = cboHeightExit
+      OnKeyPress = FormKeyPress
+      Items.Strings = (
+        'IN'
+        'CM')
+      Caption = 'Height'
+    end
+    object txtMeasWt: TCaptionEdit
+      Tag = 6
+      Left = 318
+      Top = 166
+      Width = 43
+      Height = 21
+      TabOrder = 8
+      OnEnter = SetVitPointer
+      OnExit = txtMeasWtExit
+      OnKeyPress = FormKeyPress
+      Caption = 'Weight'
+    end
+    object cboWeight: TCaptionComboBox
+      Tag = 9
+      Left = 361
+      Top = 166
+      Width = 58
+      Height = 21
+      ItemHeight = 13
+      TabOrder = 9
+      OnChange = cboWeightChange
+      OnEnter = SetVitPointer
+      OnExit = cboWeightExit
+      OnKeyPress = FormKeyPress
+      Items.Strings = (
+        'LB'
+        'KG')
+      Caption = 'Weight'
+    end
+    object txtMeasDate: TORDateBox
+      Tag = 11
+      Left = 312
+      Top = 16
+      Width = 121
+      Height = 21
+      TabOrder = 0
+      Text = 'txtMeasDate'
+      OnEnter = SetVitPointer
+      OnKeyPress = FormKeyPress
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Vital Measured Date'
+    end
+    object cboPain: TORComboBox
+      Tag = 10
+      Left = 318
+      Top = 190
+      Width = 102
+      Height = 21
+      Style = orcsDropDown
+      AutoSelect = True
+      Caption = 'Pain Scale'
+      Color = clWindow
+      DropDownCount = 8
+      ItemHeight = 13
+      ItemTipColor = clWindow
+      ItemTipEnable = True
+      ListItemsOnly = True
+      LongList = False
+      LookupPiece = 0
+      MaxLength = 0
+      Pieces = '1,2'
+      Sorted = False
+      SynonymChars = '<>'
+      TabOrder = 10
+      OnEnter = SetVitPointer
+      OnKeyPress = FormKeyPress
+      CharsNeedMatch = 1
+    end
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = cmdOK'
+        'Status = stsDefault')
+      (
+        'Component = cmdCancel'
+        'Status = stsDefault')
+      (
+        'Component = pnlmain'
+        'Status = stsDefault')
+      (
+        'Component = lblDate'
+        'Status = stsDefault')
+      (
+        'Component = lblDateBP'
+        'Status = stsDefault')
+      (
+        'Component = lblDateTemp'
+        'Status = stsDefault')
+      (
+        'Component = lblDateResp'
+        'Status = stsDefault')
+      (
+        'Component = lblDatePulse'
+        'Status = stsDefault')
+      (
+        'Component = lblDateHeight'
+        'Status = stsDefault')
+      (
+        'Component = lblDateWeight'
+        'Status = stsDefault')
+      (
+        'Component = lblLstMeas'
+        'Status = stsDefault')
+      (
+        'Component = lbllastBP'
+        'Status = stsDefault')
+      (
+        'Component = lblLastTemp'
+        'Status = stsDefault')
+      (
+        'Component = lblLastResp'
+        'Status = stsDefault')
+      (
+        'Component = lblLastPulse'
+        'Status = stsDefault')
+      (
+        'Component = lblLastHeight'
+        'Status = stsDefault')
+      (
+        'Component = lblLastWeight'
+        'Status = stsDefault')
+      (
+        'Component = lblVital'
+        'Status = stsDefault')
+      (
+        'Component = lblVitBP'
+        'Status = stsDefault')
+      (
+        'Component = lnlVitTemp'
+        'Status = stsDefault')
+      (
+        'Component = lblVitResp'
+        'Status = stsDefault')
+      (
+        'Component = lblVitPulse'
+        'Status = stsDefault')
+      (
+        'Component = lblVitHeight'
+        'Status = stsDefault')
+      (
+        'Component = lblVitWeight'
+        'Status = stsDefault')
+      (
+        'Component = lblDatePain'
+        'Status = stsDefault')
+      (
+        'Component = lblLastPain'
+        'Status = stsDefault')
+      (
+        'Component = lblVitPain'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasBP'
+        'Status = stsDefault')
+      (
+        'Component = cboTemp'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasTemp'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasResp'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasPulse'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasHt'
+        'Status = stsDefault')
+      (
+        'Component = cboHeight'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasWt'
+        'Status = stsDefault')
+      (
+        'Component = cboWeight'
+        'Status = stsDefault')
+      (
+        'Component = txtMeasDate'
+        'Status = stsDefault')
+      (
+        'Component = cboPain'
+        'Status = stsDefault')
+      (
+        'Component = frmVit'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fvit.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fvit.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fvit.pas	(revision 1676)
@@ -0,0 +1,557 @@
+{///////////////////////////////////////////////////////
+//Description: This form has been copied form the vital entry tab in fPCEEdit
+// It is intended to be used for vital entry off of the cover sheet in CPRS and
+// posibly being ported to a separate application from CPRS that only does Vital entry.
+//
+//Created: April 1998
+//Author: Robert Bott
+//Location: ISL
+//
+//To Do List:
+// needs to be modified to use the application font settings.
+
+////////////////////////////////////////////////////////
+//Modifed: 4/21/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:  Modified this unit to use only the Date/time entered
+// rather than the encounter.datetime.
+//
+//Modifed: 5/06/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod: removed DateStrToFMDateTimeStr function and added
+// TOTDateBox to allow the date/time to be edited.
+//
+//Modifed: 6/15/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod: moved line of code to change caption from formCreate event
+// to formShow event.  This prevents an error occuring at that line if there is
+// not a broker connection.
+
+//Modifed: 6/23/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Moved code that verifies valid provider and visit from fvit into fVitals.
+//   now found in procedure TfrmVitals.btnEnterVitalsClick(Sender: TObject);
+//   formerly in procedure TfrmVit.FormActivate(Sender: TObject);
+
+//Modifed: 9/18/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  changed procedure TfrmVit.cmdOKClick to display the error message returned
+//     from ValAndStoreVitals.
+
+//Modifed: 12/10/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Changed oredr of display and entry to Temp, Pulse, Resp, B/P, HT, WT
+
+//Modifed: 6/29/99
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  Changed AssignVitals finction to round conversions before storing them.
+
+///////////////////////////////////////////////////////////////////////////////}
+
+unit fvit;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, fAutoSz,StdCtrls, ORFn, ORCtrls, rvitals, ORDtTm,
+  VA508AccessibilityManager;
+
+
+type
+  TfrmVit = class(TfrmAutoSz)
+    pnlmain: TPanel;
+    lblDate: TStaticText;
+    lblDateBP: TStaticText;
+    lblDateTemp: TStaticText;
+    lblDateResp: TStaticText;
+    lblDatePulse: TStaticText;
+    lblDateHeight: TStaticText;
+    lblDateWeight: TStaticText;
+    lblLstMeas: TStaticText;
+    lbllastBP: TStaticText;
+    lblLastTemp: TStaticText;
+    lblLastResp: TStaticText;
+    lblLastPulse: TStaticText;
+    lblLastHeight: TStaticText;
+    lblLastWeight: TStaticText;
+    txtMeasBP: TCaptionEdit;
+    cboTemp: TCaptionComboBox;
+    txtMeasTemp: TCaptionEdit;
+    txtMeasResp: TCaptionEdit;
+    txtMeasPulse: TCaptionEdit;
+    txtMeasHt: TCaptionEdit;
+    cboHeight: TCaptionComboBox;
+    txtMeasWt: TCaptionEdit;
+    cboWeight: TCaptionComboBox;
+    lblVitPointer: TOROffsetLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblVital: TStaticText;
+    lblVitBP: TStaticText;
+    lnlVitTemp: TStaticText;
+    lblVitResp: TStaticText;
+    lblVitPulse: TStaticText;
+    lblVitHeight: TStaticText;
+    lblVitWeight: TStaticText;
+    txtMeasDate: TORDateBox;
+    lblDatePain: TStaticText;
+    lblLastPain: TStaticText;
+    lblVitPain: TStaticText;
+    cboPain: TORComboBox;
+    procedure FormKeyPress(Sender: TObject; var Key: Char);
+    procedure txtMeasBPExit(Sender: TObject);
+    procedure cboTempChange(Sender: TObject);
+    procedure cboTempExit(Sender: TObject);
+    procedure txtMeasRespExit(Sender: TObject);
+    procedure txtMeasPulseExit(Sender: TObject);
+    procedure cboHeightChange(Sender: TObject);
+    procedure cboHeightExit(Sender: TObject);
+    procedure cboWeightChange(Sender: TObject);
+    procedure cboWeightExit(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure lbllastClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormActivate(Sender: TObject);
+    procedure cboPainChange(Sender: TObject);
+    procedure SetVitPointer(Sender: TObject);
+    procedure txtMeasTempExit(Sender: TObject);
+    procedure txtMeasHtExit(Sender: TObject);
+    procedure txtMeasWtExit(Sender: TObject);
+
+  private
+    { Private declarations }
+    procedure InitVitalPanel;
+    procedure PopulateLastVital;
+    function GetVitHTRate: String;
+    procedure AssignVitals;
+    procedure CheckVitalUnit(AWinControl: TWinControl);
+  public
+    { Public declarations }
+  end;
+
+const
+  TX_NEED_VISIT = 'A visit or location is required before entering vital signs.';
+  TX_NO_VISIT   = 'Insufficient Visit Information';
+  TX_NEED_PROVIDER = 'A valid provider must be selected before entering vital signs.';
+  TX_NO_PROVIDER   = 'Undefined Provider';
+
+var
+  frmVit: TfrmVit;
+  uVitalLocation: Real;
+  //uVitalNew:     TStringlist;
+
+implementation
+
+{$R *.DFM}
+
+uses UCore, rCore, rPCE, fPCELex, fPCEOther, fVitals,fVisit, fFrame, fEncnt,
+  uVitals, VAUtils;
+
+var
+  uVitalOld:     TStringlist;
+  uVitalNew:     TStringlist;
+  UcboVitChanging:      Boolean = False;
+
+
+{Start of code for Vital Page--------------------------------------------------}
+procedure TfrmVit.FormKeyPress(Sender: TObject; var Key: Char);
+{capture return key press if on the vital screen}
+begin
+  inherited;
+  if (ActiveControl.tag IN ([TAG_VITTEMP,TAG_VITPULSE,TAG_VITRESP,
+    TAG_VITBP,TAG_VITHEIGHT,TAG_VITWEIGHT,TAG_VITTEMPUNIT,TAG_VITHTUNIT,TAG_VITWTUNIT,TAG_VITPAIN,TAG_VITDATE]))then
+    begin
+    if Key = #13 then
+    begin
+      Key := #0;
+
+      if (activeControl.Tag = TAG_VITPAIN) then cmdOK.setfocus
+      else
+      begin
+        Perform(WM_NEXTDLGCTL,0,0);
+        SetVitPointer(Sender);
+      end;
+    end;
+  end;
+
+end;
+
+procedure TfrmVit.InitVitalPanel;
+begin
+  lblDate.font.Style := [fsBold];
+  lblDateBP.font.Style := [fsBold];
+  lblDateTemp.font.Style := [fsBold];
+  lblDateResp.font.Style := [fsBold];
+  lblDatePulse.font.Style := [fsBold];
+  lblDateHeight.font.Style := [fsBold];
+  lblDateWeight.font.Style := [fsBold];
+  lblDatePain.font.style := [fsBold];    {*RAB*}
+  lblLstMeas.font.Style := [fsBold];
+  lblLastBP.font.Style := [fsBold];
+  lblLastTemp.font.Style := [fsBold];
+  lblLastResp.font.Style := [fsBold];
+  lblLastPulse.font.Style := [fsBold];
+  lblLastHeight.font.Style := [fsBold];
+  lblLastWeight.font.Style := [fsBold];
+  lblLastPain.font.style := [fsBold];  {*RAB*}
+  lblVital.font.Style := [fsbold];
+
+
+  UcboVitChanging := true; //prevents entering code in CheckVitalUnit
+  try
+    InitPainCombo(cboPain);
+    cboTemp.Text := cboTemp.Items[0];
+    cboHeight.Text := cboHeight.Items[0];
+    cboWeight.Text := cboWeight.Items[0];
+  finally
+    UcboVitchanging := False; //prevents entering code in CheckVitalUnit
+  end;
+
+  txtMeasDate.Text := FormatFMDateTime('mmm dd,yy@hh:nn', FMNOW);
+
+  if (UvitalOld.text = '') then
+    PopulateLastVital;
+end;
+
+
+
+procedure TfrmVit.PopulateLastVital;
+var
+ i: integer;
+begin
+  GetLastVital(uVitalOld,Patient.DFN);
+  //populate labels from UVitalOld;
+  with UVitalOld do
+  for i := 0 to count-1 do
+  begin
+    if piece(strings[i],U,2) = 'T' then
+    begin
+      lblLastTemp.Caption := piece(strings[i],U,3);
+      lblDateTemp.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'P' then
+    begin
+      lblLastPulse.Caption := piece(strings[i],U,3);
+      lblDatePulse.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'R' then
+    begin
+      lblLastResp.Caption := piece(strings[i],U,3);
+      lblDateResp.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'BP' then
+    begin
+      lblLastBP.Caption := piece(strings[i],U,3);
+      lblDateBP.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'HT' then
+    begin
+      lblLastHeight.Caption := piece(strings[i],U,3);
+      lblDateHeight.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'WT' then
+    begin
+      lblLastWeight.Caption := piece(strings[i],U,3);
+      lblDateWeight.Caption := FormatFMDateTime('mmm dd,yy',
+        StrToFloat(piece(strings[i],U,4)));
+    end;
+    if piece(strings[i],U,2) = 'PN' then             {*RAB*}
+    begin
+      lblLastPain.Caption := piece(strings[i],U,3);  {*RAB*}
+      lblDatePain.Caption := FormatFMDateTime('mmm dd,yy', {*RAB*}
+        StrToFloat(piece(strings[i],U,4)));           {*RAB*}
+
+    end;
+  end;
+
+end;
+
+
+
+function TfrmVit.GetVitHTRate: String;
+begin
+  Result := ConvertHeight2Inches(txtMeasHT.Text);
+  txtMeasHT.text := Result;
+end;
+
+//procedure: procedure TFrmVit.AssignVitals;
+//Modifed: 10/02/98
+//By: Robert Bott
+//Location: ISL
+//Description of Mod:
+//  If encounter.provider is not defined (=0) then use User.DUZ to store vitals.
+procedure TFrmVit.AssignVitals;
+begin
+  AssignVitals2List(uVitalNew, txtMeasDate.FMDateTime, FloatToStr(uVitalLocation),
+                       txtMeasBP.text, txtMeasTemp.text, cboTemp.text,
+                       txtMeasResp.text, txtMeasPulse.text, GetVitHTRate, cboHeight.text,
+                       txtMeasWT.text, cboWeight.text, cboPain.ItemID);
+end;
+
+procedure TfrmVit.cboTempChange(Sender: TObject);
+begin
+  inherited;
+  if not (cbotemp.droppeddown) then
+    CheckVitalUnit(cboTemp);
+end;
+
+
+procedure TFrmVit.CheckVitalUnit(AWinControl: TWinControl);
+var
+  len,i: integer;
+  found: boolean;
+  comp: string; //substring for comparing
+  temp: string;
+begin
+  if (UcboVitchanging = true) then exit;
+
+  UcboVitChanging := true;
+  try
+    with AWinControl as TComboBox do
+    begin
+      found := False;
+      temp := (AWinControl as TComboBox).text;
+      while (found = false) and (Length(temp) > 0) do
+      begin
+        i := 0;
+        while (found = false) and (length(items[i]) > 0) do
+        begin
+          len := length(temp);
+          //match text to string
+          comp := copy(items[i],0,len);
+          if (CompareText(comp,temp) = 0) then
+          begin
+            found := true;
+            (AWinControl as TComboBox).Text := '';
+            (AWinControl as TComboBox).text := items[i];
+
+          end;
+          inc(i);
+        end;
+        if (found = false) then Delete(temp,1,1);
+      end;
+      if (found = False) then
+      begin
+        (AWinControl as TComboBox).Text := '';
+      end;
+    end;
+  finally
+    UcboVitChanging := false;
+  end;
+end;
+
+
+procedure TfrmVit.cboHeightChange(Sender: TObject);
+begin
+  inherited;
+  CheckVitalUnit(cboHeight);
+end;
+
+procedure TfrmVit.cboWeightChange(Sender: TObject);
+begin
+  inherited;
+  CheckVitalUnit(cboWeight);
+end;
+
+procedure TfrmVit.txtMeasBPExit(Sender: TObject);
+begin
+  inherited;
+  if VitalInvalid(txtMeasBP) then
+    txtMeasBP.SetFocus;
+end;
+
+procedure TfrmVit.cboTempExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveControl <> txtMeasTemp) then
+  begin
+    if VitalInvalid(txtMeasTemp, cboTemp) then
+      txtMeasTemp.SetFocus;
+  end;
+end;
+
+procedure TfrmVit.txtMeasRespExit(Sender: TObject);
+begin
+  inherited;
+  if VitalInvalid(txtMeasResp) then
+    txtMeasResp.SetFocus;
+end;
+
+procedure TfrmVit.txtMeasPulseExit(Sender: TObject);
+begin
+  inherited;
+  if VitalInvalid(txtMeasPulse) then
+    txtMeasPulse.SetFocus;
+end;
+
+procedure TfrmVit.cboHeightExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveControl <> txtMeasHt) then
+  begin
+    if VitalInvalid(txtMeasHt, cboHeight, GetVitHTRate) then
+      txtMeasHt.SetFocus;
+  end;
+end;
+
+procedure TfrmVit.cboWeightExit(Sender: TObject);
+begin
+  inherited;
+  if(ActiveControl <> txtMeasWt) then
+  begin
+    if VitalInvalid(txtMeasWt, cboWeight) then
+      txtMeasWt.SetFocus;
+  end;
+end;
+
+procedure TfrmVit.FormCreate(Sender: TObject);
+
+begin
+  inherited;
+  //uVisitType := TPCEProc.create;
+  uVitalOld  := TStringList.create;
+  uVitalNew  := TStringList.create;
+  ResizeAnchoredFormToFont(self);
+end;
+
+
+
+procedure TfrmVit.FormDestroy(Sender: TObject);
+
+begin
+  inherited;
+  //uVisitType.Free;
+  uVitalOld.Free;
+  uVitalNew.free;
+end;
+
+
+
+procedure TfrmVit.cmdCancelClick(Sender: TObject);
+begin
+  inherited;
+  close();
+end;
+
+procedure TfrmVit.cmdOKClick(Sender: TObject);
+var
+  StoreMessage: string;
+begin
+  inherited;
+  // do validation for vitals & anything else here
+  AssignVitals;
+
+  //store vitals
+  StoreMessage := ValAndStoreVitals(UVitalNew);
+  if (Storemessage <> 'True') then
+  begin
+    ShowMsg(storemessage);
+    exit;
+  end;
+  close();
+end;
+
+procedure TfrmVit.lbllastClick(Sender: TObject);
+begin
+  inherited;
+  //
+  try
+    frmVitals.Show;
+  except
+    with sender as tLabel do
+      SelectVital(self.Font.Size, tag);
+  end; //end of try
+end;
+
+
+procedure TfrmVit.FormShow(Sender: TObject);
+begin
+  inherited;
+  frmVit.caption := 'Vital entry for - '+ patient.name; {RAB 6/15/98}
+end;
+
+procedure TfrmVit.FormActivate(Sender: TObject);
+begin
+  inherited;
+  InitVitalPanel;
+  txtMeasTemp.setfocus;  //added 3/30/99 after changing tab order.
+                         //The date is now first in tab order, but it shouldn't default there.
+
+end;
+
+
+procedure TfrmVit.cboPainChange(Sender: TObject);
+begin
+  inherited;
+  CheckVitalUnit(cboPain);
+end;
+
+procedure TfrmVit.SetVitPointer(Sender: TObject);
+begin
+  if ActiveControl.tag in ([TAG_VITTEMP, TAG_VITPULSE, TAG_VITRESP, TAG_VITBP, TAG_VITHEIGHT,
+    TAG_VITWEIGHT]) then
+    begin
+      // move pointer to some height and five pixels to right of edit box.
+      lblVitPointer.Top := ActiveControl.Top+((ActiveControl.height ) div
+      (lblVitPointer.height ));
+
+      if ActiveControl = txtMeasTemp then
+        lblVitPointer.left := (cboTemp.left + cboTemp.Width)
+      else if ActiveControl = txtMeasHT then
+        lblVitPointer.left := (cboHeight.left + cboHeight.Width)
+      else if ActiveControl = txtMeasWT then
+        lblVitPointer.left := (cboWeight.left + cboWeight.Width)
+      else
+        lblVitPointer.left := (ActiveControl.left + ActiveControl.Width);
+
+    end;
+end;
+
+procedure TfrmVit.txtMeasTempExit(Sender: TObject);
+begin
+  if(ActiveControl <> cboTemp) then
+  begin
+    if VitalInvalid(txtMeasTemp, cboTemp) then
+      txtMeasTemp.SetFocus;
+  end;
+end;
+
+procedure TfrmVit.txtMeasHtExit(Sender: TObject);
+begin
+  if(ActiveControl <> cboHeight) then
+  begin
+    if VitalInvalid(txtMeasHt, cboHeight, GetVitHTRate) then
+      txtMeasHt.SetFocus;
+  end;
+end;
+
+procedure TfrmVit.txtMeasWtExit(Sender: TObject);
+begin
+  if(ActiveControl <> cboWeight) then
+  begin
+    if VitalInvalid(txtMeasWt, cboWeight) then
+      txtMeasWt.SetFocus;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxBroker.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxBroker.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxBroker.dfm	(revision 1676)
@@ -0,0 +1,161 @@
+inherited frmBroker: TfrmBroker
+  Left = 338
+  Top = 235
+  BorderIcons = [biSystemMenu]
+  Caption = 'Broker Calls'
+  ClientHeight = 273
+  ClientWidth = 427
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnClose = FormClose
+  OnCreate = FormCreate
+  OnKeyUp = FormKeyUp
+  OnResize = FormResize
+  ExplicitWidth = 435
+  ExplicitHeight = 300
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TORAutoPanel [0]
+    Left = 0
+    Top = 0
+    Width = 427
+    Height = 53
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    object lblMaxCalls: TLabel
+      Left = 8
+      Top = 8
+      Width = 91
+      Height = 13
+      Caption = 'Max Calls Retained'
+    end
+    object lblCallID: TStaticText
+      Left = 125
+      Top = 20
+      Width = 90
+      Height = 17
+      Alignment = taCenter
+      Caption = 'Last Broker Call -0'
+      TabOrder = 4
+    end
+    object txtMaxCalls: TCaptionEdit
+      Left = 8
+      Top = 24
+      Width = 81
+      Height = 21
+      TabOrder = 0
+      Text = '10'
+      Caption = 'Max Calls Retained'
+    end
+    object cmdPrev: TBitBtn
+      Left = 319
+      Top = 8
+      Width = 50
+      Height = 37
+      Caption = 'Prev'
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'MS Sans Serif'
+      Font.Style = []
+      ParentFont = False
+      TabOrder = 1
+      OnClick = cmdPrevClick
+      Glyph.Data = {
+        36010000424D360100000000000076000000280000001E0000000C0000000100
+        040000000000C000000000000000000000001000000010000000000000000000
+        80000080000000808000800000008000800080800000C0C0C000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777887777
+        7777777778877777770077777008777777777777778777777700777700087777
+        7777777777877777770077700008888888877777778888888800770000000000
+        0087777777777777780070000000000000877777777777777800F00000000000
+        008F7777777777777800FF0000000000008F77777777777778007FF00007FFFF
+        FF77FF77777FFFFFF70077FF0008777777777FF7778777777700777FF0087777
+        777777FF7787777777007777FFF777777777777FFF7777777700}
+      Layout = blGlyphTop
+    end
+    object cmdNext: TBitBtn
+      Left = 369
+      Top = 8
+      Width = 50
+      Height = 37
+      Caption = 'Next'
+      TabOrder = 2
+      OnClick = cmdNextClick
+      Glyph.Data = {
+        36010000424D360100000000000076000000280000001E0000000C0000000100
+        040000000000C000000000000000000000001000000010000000000000000000
+        80000080000000808000800000008000800080800000C0C0C000808080000000
+        FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00777777778877
+        777777777778877777007777777F00877777777777F7787777007777777F0008
+        7777777777F77787770078888887000087778888887777787700F00000000000
+        087F7777777777778700F00000000000008F7777777777777800F00000000000
+        007F7777777777777700F00000000000077F7777777777777700FFFFFFFF0000
+        777FFFFFFFF7777777007777777F00077777777777F7777777007777777F0077
+        7777777777F7777777007777777FF7777777777777FF77777700}
+      Layout = blGlyphTop
+    end
+    object udMax: TUpDown
+      Left = 89
+      Top = 24
+      Width = 15
+      Height = 21
+      Associate = txtMaxCalls
+      Min = 1
+      Position = 10
+      TabOrder = 3
+    end
+    object btnRLT: TButton
+      Left = 257
+      Top = 18
+      Width = 31
+      Height = 21
+      Caption = 'RLT'
+      TabOrder = 6
+      OnClick = btnRLTClick
+    end
+  end
+  object memData: TRichEdit [1]
+    Left = 0
+    Top = 53
+    Width = 427
+    Height = 220
+    Align = alClient
+    HideScrollBars = False
+    ReadOnly = True
+    ScrollBars = ssBoth
+    TabOrder = 1
+    WantReturns = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = pnlTop'
+        'Status = stsDefault')
+      (
+        'Component = lblCallID'
+        'Status = stsDefault')
+      (
+        'Component = txtMaxCalls'
+        'Status = stsDefault')
+      (
+        'Component = cmdPrev'
+        'Status = stsDefault')
+      (
+        'Component = cmdNext'
+        'Status = stsDefault')
+      (
+        'Component = udMax'
+        'Status = stsDefault')
+      (
+        'Component = btnRLT'
+        'Status = stsDefault')
+      (
+        'Component = memData'
+        'Status = stsDefault')
+      (
+        'Component = frmBroker'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxBroker.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxBroker.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxBroker.pas	(revision 1676)
@@ -0,0 +1,129 @@
+unit fxBroker;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, DateUtils, ORNet, ORFn, rMisc, ComCtrls, Buttons, ExtCtrls,
+  ORCtrls, ORSystem, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmBroker = class(TfrmBase508Form)
+    pnlTop: TORAutoPanel;
+    lblMaxCalls: TLabel;
+    txtMaxCalls: TCaptionEdit;
+    cmdPrev: TBitBtn;
+    cmdNext: TBitBtn;
+    udMax: TUpDown;
+    memData: TRichEdit;
+    lblCallID: TStaticText;
+    btnRLT: TButton;
+    procedure cmdPrevClick(Sender: TObject);
+    procedure cmdNextClick(Sender: TObject);
+    procedure FormClose(Sender: TObject; var Action: TCloseAction);
+    procedure FormResize(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure btnRLTClick(Sender: TObject);
+  private
+    { Private declarations }
+    FRetained: Integer;
+    FCurrent: Integer;
+  public
+    { Public declarations }
+  end;
+
+procedure ShowBroker;
+
+implementation
+
+{$R *.DFM}
+
+procedure ShowBroker;
+var
+  frmBroker: TfrmBroker;
+begin
+  frmBroker := TfrmBroker.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmBroker);
+    with frmBroker do
+    begin
+      FRetained := RetainedRPCCount - 1;
+      FCurrent := FRetained;
+      LoadRPCData(memData.Lines, FCurrent);
+      memData.SelStart := 0;
+      lblCallID.Caption := 'Last Call Minus: ' + IntToStr(FRetained - FCurrent);
+      ShowModal;
+    end;
+  finally
+    frmBroker.Release;
+  end;
+end;
+
+procedure TfrmBroker.cmdPrevClick(Sender: TObject);
+begin
+  FCurrent := HigherOf(FCurrent - 1, 0);
+  LoadRPCData(memData.Lines, FCurrent);
+  memData.SelStart := 0;
+  lblCallID.Caption := 'Last Call Minus: ' + IntToStr(FRetained - FCurrent);
+end;
+
+procedure TfrmBroker.cmdNextClick(Sender: TObject);
+begin
+  FCurrent := LowerOf(FCurrent + 1, FRetained);
+  LoadRPCData(memData.Lines, FCurrent);
+  memData.SelStart := 0;
+  lblCallID.Caption := 'Last Call Minus: ' + IntToStr(FRetained - FCurrent);
+end;
+
+procedure TfrmBroker.FormClose(Sender: TObject; var Action: TCloseAction);
+begin
+  SetRetainedRPCMax(StrToIntDef(txtMaxCalls.Text, 5))
+end;
+
+procedure TfrmBroker.FormResize(Sender: TObject);
+begin
+  Refresh;
+end;
+
+procedure TfrmBroker.FormCreate(Sender: TObject);
+begin
+  udMax.Position := GetRPCMax;
+end;
+
+procedure TfrmBroker.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    Close;
+  end;
+end;
+
+procedure TfrmBroker.btnRLTClick(Sender: TObject);
+var
+  startTime, endTime: tDateTime;
+  clientVer, serverVer, diffDisplay: string;
+  theDiff: integer;
+const
+  TX_OPTION  = 'OR CPRS GUI CHART';
+  disclaimer = 'NOTE: Strictly relative indicator:';
+begin
+
+clientVer := clientVersion(Application.ExeName); // Obtain before starting.
+
+// Check time lapse between a standard RPC call:
+startTime := now;
+serverVer :=  serverVersion(TX_OPTION, clientVer);
+endTime := now;
+theDiff := milliSecondsBetween(endTime, startTime);
+diffDisplay := intToStr(theDiff);
+
+// Show the results:
+infoBox('Lapsed time (milliseconds) = ' + diffDisplay + '.', disclaimer, MB_OK);
+
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxLists.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxLists.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxLists.dfm	(revision 1676)
@@ -0,0 +1,32 @@
+inherited frmDbgList: TfrmDbgList
+  Left = 313
+  Top = 248
+  BorderIcons = [biSystemMenu]
+  Caption = 'Show ListBox Data'
+  ClientHeight = 253
+  ClientWidth = 472
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnKeyUp = FormKeyUp
+  PixelsPerInch = 96
+  TextHeight = 13
+  object memData: TMemo [0]
+    Left = 0
+    Top = 0
+    Width = 472
+    Height = 253
+    Align = alClient
+    ReadOnly = True
+    TabOrder = 0
+    WantReturns = False
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memData'
+        'Status = stsDefault')
+      (
+        'Component = frmDbgList'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxLists.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxLists.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxLists.pas	(revision 1676)
@@ -0,0 +1,59 @@
+unit fxLists;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmDbgList = class(TfrmBase508Form)
+    memData: TMemo;
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure DebugListItems(AListBox: TListBox);
+
+implementation
+
+{$R *.DFM}
+
+uses
+  ORFn, ORCtrls;
+
+procedure DebugListItems(AListBox: TListBox);
+var
+  frmDbgList: TfrmDbgList;
+begin
+  frmDbgList := TfrmDbgList.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmDbgList);
+    with frmDbgList do
+    begin
+      if AListBox is TORListBox then
+        FastAssign(TORListBox(AListBox).Items, memData.Lines)
+      else
+        memData.Lines.Assign(AListBox.Items);
+      ShowModal;
+    end;
+  finally
+    frmDbgList.Release;
+  end;
+end;
+
+procedure TfrmDbgList.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    Close;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxServer.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxServer.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxServer.dfm	(revision 1676)
@@ -0,0 +1,84 @@
+inherited frmDbgServer: TfrmDbgServer
+  Left = 206
+  Top = 168
+  Caption = 'Server Information'
+  ClientHeight = 301
+  ClientWidth = 500
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnKeyUp = FormKeyUp
+  ExplicitWidth = 508
+  ExplicitHeight = 328
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel [0]
+    Left = 6
+    Top = 6
+    Width = 101
+    Height = 13
+    Caption = 'Current Symbol Table'
+  end
+  object memSymbols: TRichEdit [1]
+    Left = 6
+    Top = 20
+    Width = 488
+    Height = 248
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Courier New'
+    Font.Style = []
+    Lines.Strings = (
+      'memSymbols')
+    ParentFont = False
+    ReadOnly = True
+    ScrollBars = ssVertical
+    TabOrder = 0
+    WantReturns = False
+  end
+  object RadioButton1: TRadioButton [2]
+    Left = 8
+    Top = 276
+    Width = 125
+    Height = 17
+    Caption = 'Current Symbol Table'
+    Checked = True
+    TabOrder = 1
+    TabStop = True
+  end
+  object RadioButton2: TRadioButton [3]
+    Left = 156
+    Top = 276
+    Width = 105
+    Height = 17
+    Caption = 'Global Reference'
+    TabOrder = 2
+  end
+  object Edit1: TEdit [4]
+    Left = 264
+    Top = 274
+    Width = 229
+    Height = 21
+    Enabled = False
+    TabOrder = 3
+  end
+  inherited amgrMain: TVA508AccessibilityManager
+    Data = (
+      (
+        'Component = memSymbols'
+        'Status = stsDefault')
+      (
+        'Component = RadioButton1'
+        'Status = stsDefault')
+      (
+        'Component = RadioButton2'
+        'Status = stsDefault')
+      (
+        'Component = Edit1'
+        'Status = stsDefault')
+      (
+        'Component = frmDbgServer'
+        'Status = stsDefault'))
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxServer.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxServer.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/fxServer.pas	(revision 1676)
@@ -0,0 +1,61 @@
+unit fxServer;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ComCtrls, ORNet, fBase508Form, VA508AccessibilityManager;
+
+type
+  TfrmDbgServer = class(TfrmBase508Form)
+    memSymbols: TRichEdit;
+    RadioButton1: TRadioButton;
+    RadioButton2: TRadioButton;
+    Label1: TLabel;
+    Edit1: TEdit;
+    procedure FormCreate(Sender: TObject);
+    procedure FormKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+procedure DebugShowServer;
+
+implementation
+
+{$R *.DFM}
+
+uses rMisc, ORFn;
+
+procedure DebugShowServer;
+var
+  frmDbgServer: TfrmDbgServer;
+begin
+  frmDbgServer := TfrmDbgServer.Create(Application);
+  try
+    ResizeAnchoredFormToFont(frmDbgServer);
+    frmDbgServer.ShowModal;
+  finally
+    frmDbgServer.Release;
+  end;
+end;
+
+procedure TfrmDbgServer.FormCreate(Sender: TObject);
+begin
+  ListSymbolTable(memSymbols.Lines);
+end;
+
+procedure TfrmDbgServer.FormKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+  begin
+    Key := 0;
+    Close;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/mCoPayDesc.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/mCoPayDesc.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/mCoPayDesc.dfm	(revision 1676)
@@ -0,0 +1,379 @@
+object fraCoPayDesc: TfraCoPayDesc
+  Left = 0
+  Top = 0
+  Width = 592
+  Height = 157
+  Anchors = [akLeft, akTop, akRight]
+  ParentShowHint = False
+  ShowHint = True
+  TabOrder = 0
+  object pnlRight: TPanel
+    Left = 304
+    Top = 0
+    Width = 288
+    Height = 157
+    Align = alRight
+    Alignment = taLeftJustify
+    BevelOuter = bvNone
+    TabOrder = 0
+    ExplicitLeft = 310
+    object Spacer2: TLabel
+      Left = 0
+      Top = 16
+      Width = 288
+      Height = 3
+      Align = alTop
+      AutoSize = False
+    end
+    object lblCaption: TStaticText
+      Left = 0
+      Top = 0
+      Width = 288
+      Height = 16
+      Align = alTop
+      Alignment = taCenter
+      AutoSize = False
+      Caption = 'Outpatient Medications Related To:'
+      TabOrder = 0
+    end
+    object pnlMain: TPanel
+      Left = 16
+      Top = 15
+      Width = 265
+      Height = 141
+      BevelInner = bvRaised
+      BevelOuter = bvLowered
+      TabOrder = 1
+      object spacer1: TLabel
+        Left = 2
+        Top = 2
+        Width = 261
+        Height = 3
+        Align = alTop
+        AutoSize = False
+        ExplicitWidth = 213
+      end
+      object pnlHNC: TPanel
+        Left = 2
+        Top = 112
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 7
+        object lblHNC2: TVA508StaticText
+          Name = 'lblHNC2'
+          Left = 50
+          Top = 0
+          Width = 125
+          Height = 15
+          Caption = 'Head and/or &Neck Cancer'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblHNC: TVA508StaticText
+          Name = 'lblHNC'
+          Left = 12
+          Top = 0
+          Width = 30
+          Height = 15
+          Caption = 'HNC -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlMST: TPanel
+        Left = 2
+        Top = 97
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 6
+        object lblMST2: TVA508StaticText
+          Name = 'lblMST2'
+          Left = 50
+          Top = 0
+          Width = 22
+          Height = 15
+          Caption = '&MST'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblMST: TVA508StaticText
+          Name = 'lblMST'
+          Left = 13
+          Top = 0
+          Width = 29
+          Height = 15
+          Caption = 'MST -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlSWAC: TPanel
+        Left = 2
+        Top = 65
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 4
+        object lblSWAC2: TVA508StaticText
+          Name = 'lblSWAC2'
+          Left = 50
+          Top = 0
+          Width = 129
+          Height = 15
+          Caption = 'Southwest &Asia Conditions'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblSWAC: TVA508StaticText
+          Name = 'lblSWAC'
+          Left = 3
+          Top = 0
+          Width = 39
+          Height = 15
+          Caption = 'SWAC -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlIR: TPanel
+        Left = 2
+        Top = 50
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 3
+        object lblIR2: TVA508StaticText
+          Name = 'lblIR2'
+          Left = 50
+          Top = 0
+          Width = 135
+          Height = 15
+          Caption = 'Ionizing &Radiation Exposure'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblIR: TVA508StaticText
+          Name = 'lblIR'
+          Left = 21
+          Top = 0
+          Width = 20
+          Height = 15
+          Caption = 'IR -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlAO: TPanel
+        Left = 2
+        Top = 35
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 2
+        object lblAO2: TVA508StaticText
+          Name = 'lblAO2'
+          Left = 50
+          Top = 0
+          Width = 118
+          Height = 15
+          Caption = 'Agent &Orange Exposure'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblAO: TVA508StaticText
+          Name = 'lblAO'
+          Left = 18
+          Top = 0
+          Width = 24
+          Height = 15
+          Caption = 'AO -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlSC: TPanel
+        Left = 2
+        Top = 5
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 0
+        object lblSC2: TVA508StaticText
+          Name = 'lblSC2'
+          Left = 50
+          Top = 0
+          Width = 140
+          Height = 15
+          Caption = 'Service &Connected Condition'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblSC: TVA508StaticText
+          Name = 'lblSC'
+          Left = 20
+          Top = 2
+          Width = 22
+          Height = 15
+          Caption = 'SC -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlCV: TPanel
+        Left = 2
+        Top = 20
+        Width = 261
+        Height = 15
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 1
+        object lblCV2: TVA508StaticText
+          Name = 'lblCV2'
+          Left = 50
+          Top = 0
+          Width = 146
+          Height = 15
+          Caption = 'Combat &Vet (Combat Related)'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblCV: TVA508StaticText
+          Name = 'lblCV'
+          Left = 20
+          Top = 0
+          Width = 22
+          Height = 15
+          Caption = 'CV -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+      object pnlSHD: TPanel
+        Left = 2
+        Top = 80
+        Width = 261
+        Height = 17
+        Align = alTop
+        Alignment = taRightJustify
+        BevelOuter = bvNone
+        TabOrder = 5
+        object lblSHAD: TVA508StaticText
+          Name = 'lblSHAD'
+          Left = 13
+          Top = 0
+          Width = 29
+          Height = 15
+          Caption = 'SHD -'
+          TabOrder = 0
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+        object lblSHAD2: TVA508StaticText
+          Name = 'lblSHAD2'
+          Left = 51
+          Top = 0
+          Width = 151
+          Height = 15
+          Caption = 'Shipboard &Hazard and Defense'
+          TabOrder = 1
+          TabStop = True
+          OnEnter = lblEnter
+          OnExit = lblExit
+          ShowAccelChar = True
+        end
+      end
+    end
+  end
+  object pnlSCandRD: TPanel
+    Left = 0
+    Top = 0
+    Width = 304
+    Height = 157
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    object lblSCDisplay: TLabel
+      Left = 0
+      Top = 0
+      Width = 304
+      Height = 17
+      Align = alTop
+      AutoSize = False
+      Caption = 'Service Connection && Rated Disabilities'
+      Layout = tlCenter
+    end
+    object memSCDisplay: TCaptionMemo
+      Left = 0
+      Top = 17
+      Width = 304
+      Height = 140
+      Align = alClient
+      Color = clBtnFace
+      Lines.Strings = (
+        '')
+      ReadOnly = True
+      ScrollBars = ssVertical
+      TabOrder = 0
+      Caption = 'Service Connection and Rated Disabilities'
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/mCoPayDesc.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/mCoPayDesc.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/mCoPayDesc.pas	(revision 1676)
@@ -0,0 +1,185 @@
+unit mCoPayDesc;
+
+interface
+
+uses 
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ExtCtrls, StdCtrls, ORCtrls, UBAConst, VA508AccessibilityManager;
+
+type
+  TfraCoPayDesc = class(TFrame)
+    pnlRight: TPanel;
+    lblCaption: TStaticText;
+    pnlSCandRD: TPanel;
+    lblSCDisplay: TLabel;
+    memSCDisplay: TCaptionMemo;
+    Spacer2: TLabel;
+    pnlMain: TPanel;
+    spacer1: TLabel;
+    pnlHNC: TPanel;
+    lblHNC2: TVA508StaticText;
+    lblHNC: TVA508StaticText;
+    pnlMST: TPanel;
+    lblMST2: TVA508StaticText;
+    lblMST: TVA508StaticText;
+    pnlSWAC: TPanel;
+    lblSWAC2: TVA508StaticText;
+    lblSWAC: TVA508StaticText;
+    pnlIR: TPanel;
+    lblIR2: TVA508StaticText;
+    lblIR: TVA508StaticText;
+    pnlAO: TPanel;
+    lblAO2: TVA508StaticText;
+    lblAO: TVA508StaticText;
+    pnlSC: TPanel;
+    lblSC2: TVA508StaticText;
+    lblSC: TVA508StaticText;
+    pnlCV: TPanel;
+    lblCV2: TVA508StaticText;
+    lblCV: TVA508StaticText;
+    pnlSHD: TPanel;
+    lblSHAD: TVA508StaticText;
+    lblSHAD2: TVA508StaticText;
+    procedure lblEnter(Sender: TObject);
+    procedure lblExit(Sender: TObject);
+  private
+    { Private declarations }
+    procedure ConvertShortLabelsToLong;
+  public
+    procedure ShowTreatmentFactorHints(var pHintText: string; var pCompName: TVA508StaticText);
+    procedure LabelCaptionsOn(CaptionsOn : Boolean = true);
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+implementation
+
+uses rPCE, UBAGlobals, VAUtils, VA508AccessibilityRouter;
+
+{$R *.DFM}
+var
+    FOSTFHintWndActive: boolean;
+    FOSTFhintWindow: THintWindow;
+
+
+{ TfraCoPayDesc }
+
+constructor TfraCoPayDesc.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  TabStop := FALSE;
+  ListSCDisabilities(memSCDisplay.Lines);
+  lblSC.Hint          := BAFactorsRec.FBAFactorSC;
+  lblSC2.Hint         := BAFactorsRec.FBAFactorSC;
+  lblCV.Hint          := BAFactorsRec.FBAFactorCV;
+  lblCV2.Hint         := BAFactorsRec.FBAFactorCV;
+  lblAO.Hint          := BAFactorsRec.FBAFactorAO;
+  lblAO2.Hint         := BAFactorsRec.FBAFactorAO;
+  lblIR.Hint          := BAFactorsRec.FBAFactorIR;
+  lblIR2.Hint         := BAFactorsRec.FBAFactorIR;
+  lblSWAC.Hint        := BAFactorsRec.FBAFactorEC;
+  lblSWAC2.Hint       := BAFactorsRec.FBAFactorEC;
+  lblMST.Hint         := BAFactorsRec.FBAFactorMST;
+  lblMST2.Hint        := BAFactorsRec.FBAFactorMST;
+  lblHNC.Hint         := BAFactorsRec.FBAFactorHNC;
+  lblHNC2.Hint        := BAFactorsRec.FBAFactorHNC;
+  lblSHAD.Hint        := BAFactorsRec.FBAFactorSHAD;
+  lblSHAD2.Hint       := BAFactorsRec.FBAFactorSHAD;
+  if ScreenReaderActive then
+    ConvertShortLabelsToLong;
+end;
+
+procedure TfraCoPayDesc.LabelCaptionsOn(CaptionsOn: Boolean);
+begin
+  //Abbreviated captions
+  lblSC.ShowHint := CaptionsOn;
+  lblCV.ShowHint := CaptionsOn;
+  lblAO.ShowHint := CaptionsOn;
+  lblIR.ShowHint := CaptionsOn;
+  lblSWAC.ShowHint := CaptionsOn;
+  lblMST.ShowHint := CaptionsOn;
+  lblHNC.ShowHint := CaptionsOn;
+  lblSHAD.ShowHint := CaptionsOn;
+  //Long captions
+  lblSC2.ShowHint := CaptionsOn;
+  lblCV2.ShowHint := CaptionsOn;
+  lblAO2.ShowHint := CaptionsOn;
+  lblIR2.ShowHint := CaptionsOn;
+  lblSWAC2.ShowHint := CaptionsOn;
+  lblMST2.ShowHint  := CaptionsOn;
+  lblHNC2.ShowHint := CaptionsOn;
+  lblSHAD2.ShowHint := CaptionsOn;
+end;
+
+procedure TfraCoPayDesc.lblEnter(Sender: TObject);
+begin
+  (Sender as TVA508StaticText).Font.Style := [fsBold];
+end;
+
+procedure TfraCoPayDesc.lblExit(Sender: TObject);
+begin
+    (Sender as TVA508StaticText).Font.Style := [];
+end;
+
+procedure TfraCoPayDesc.ConvertShortLabelsToLong;
+begin
+  lblSC2.Caption := BAFactorsRec.FBAFactorSC;
+  lblCV2.Caption := BAFactorsRec.FBAFactorCV;
+  lblAO2.Caption := BAFactorsRec.FBAFactorAO;
+  lblIR2.Caption  := BAFactorsRec.FBAFactorIR;
+  lblSWAC2.Caption := BAFactorsRec.FBAFactorEC;
+  lblSHAD2.Caption := BAFactorsRec.FBAFactorSHAD;
+  lblMST2.Caption := BAFactorsRec.FBAFactorMST;
+  lblHNC2.Caption := BAFactorsRec.FBAFactorHNC;
+end;
+
+procedure TfraCoPayDesc.ShowTreatmentFactorHints(var pHintText: string;
+  var pCompName: TVA508StaticText);
+var
+ HRect: TRect;
+ thisRect: TRect;
+ x,y: integer;
+
+begin
+  try
+     if FOSTFhintWndActive then
+        begin
+        FOSTFhintWindow.ReleaseHandle;
+        FOSTFhintWndActive := False;
+        end;
+  except
+     on E: Exception do
+        begin
+        {$ifdef debug}Show508Message('Unhandled exception in procedure TfrmSignOrders.ShowTreatmentFactorHints()');{$endif}
+        raise;
+        end;
+  end;
+
+  try
+      FOSTFhintWindow := THintWindow.Create(Self);
+      FOSTFhintWindow.Color := clInfoBk;
+      GetWindowRect(pCompName.Handle,thisRect);
+      x := thisRect.Left;
+      y := thisRect.Top;
+      hrect := FOSTFhintWindow.CalcHintRect(Screen.Width, pHintText,nil);
+      hrect.Left   := hrect.Left + X;
+      hrect.Right  := hrect.Right + X;
+      hrect.Top    := hrect.Top + Y;
+      hrect.Bottom := hrect.Bottom + Y;
+
+      LabelCaptionsOn(not FOSTFHintWndActive);
+
+      FOSTFhintWindow.ActivateHint(hrect, pHintText);
+      FOSTFHintWndActive := True;
+  except
+     on E: Exception do
+        begin
+        {$ifdef debug}Show508Message('Unhandled exception in procedure TfrmSignOrders.ShowTreatmentFactorHints()');{$endif}
+        raise;
+        end;
+  end;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfraCoPayDesc);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/mEvntDelay.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/mEvntDelay.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/mEvntDelay.dfm	(revision 1676)
@@ -0,0 +1,87 @@
+object fraEvntDelayList: TfraEvntDelayList
+  Left = 0
+  Top = 0
+  Width = 366
+  Height = 216
+  Anchors = []
+  AutoScroll = True
+  TabOrder = 0
+  TabStop = True
+  object pnlDate: TPanel
+    Left = 261
+    Top = 0
+    Width = 105
+    Height = 216
+    Align = alRight
+    Anchors = [akLeft, akBottom]
+    TabOrder = 0
+    Visible = False
+    object lblEffective: TLabel
+      Left = 4
+      Top = 32
+      Width = 73
+      Height = 13
+      Caption = 'Effective Date:'
+    end
+    object orDateBox: TORDateBox
+      Left = 3
+      Top = 48
+      Width = 97
+      Height = 21
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      Text = 'Today'
+      DateOnly = False
+      RequireTime = False
+      Caption = 'Effective Date:'
+    end
+  end
+  object pnlList: TPanel
+    Left = 0
+    Top = 0
+    Width = 261
+    Height = 216
+    Align = alClient
+    Anchors = [akLeft, akBottom]
+    TabOrder = 1
+    object lblEvntDelayList: TLabel
+      Left = 1
+      Top = 1
+      Width = 259
+      Height = 13
+      Align = alTop
+      Caption = 'Event Delay List:'
+      ExplicitWidth = 81
+    end
+    object mlstEvents: TORListBox
+      Left = 1
+      Top = 35
+      Width = 259
+      Height = 180
+      Align = alClient
+      ItemHeight = 13
+      ParentShowHint = False
+      ShowHint = True
+      TabOrder = 0
+      OnClick = mlstEventsClick
+      OnKeyUp = mlstEventsKeyUp
+      ItemTipColor = clWindow
+      LongList = False
+      Pieces = '9'
+      OnChange = mlstEventsChange
+      RightClickSelect = True
+      CheckEntireLine = True
+    end
+    object edtSearch: TCaptionEdit
+      Left = 1
+      Top = 14
+      Width = 259
+      Height = 21
+      Align = alTop
+      TabOrder = 1
+      OnChange = edtSearchChange
+      OnKeyDown = edtSearchKeyDown
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/mEvntDelay.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/mEvntDelay.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/mEvntDelay.pas	(revision 1676)
@@ -0,0 +1,317 @@
+unit mEvntDelay;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORCtrls, ORDtTm, uCore, ORFn, ExtCtrls,UConst;
+
+type
+  TfraEvntDelayList = class(TFrame)
+    pnlDate: TPanel;
+    pnlList: TPanel;
+    mlstEvents: TORListBox;
+    edtSearch: TCaptionEdit;
+    lblEffective: TLabel;
+    orDateBox: TORDateBox;
+    lblEvntDelayList: TLabel;
+    procedure edtSearchChange(Sender: TObject);
+    procedure mlstEventsChange(Sender: TObject);
+    procedure mlstEventsClick(Sender: TObject);
+    procedure mlstEventsKeyUp(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure edtSearchKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+  private
+    FEvntLimit:       Char;
+    FUserDefaultEvent:integer;
+    FDefaultEvent:    integer;
+    FMatchedCancel:   Boolean;
+    FDisableWarning:  Boolean;
+    FIsForCpXfer:     Boolean;
+  public
+    constructor Create(AOwner: TComponent); override;
+    procedure ResetProperty;
+    procedure DisplayEvntDelayList;
+    procedure CheckMatch;
+    property EvntLimit:        Char     read FEvntLimit         write FEvntLimit;
+    property UserDefaultEvent: integer  read FUserDefaultEvent  write FUserDefaultEvent;
+    property DefaultEvent    : integer  read FDefaultEvent      write FDefaultEvent;
+    property MatchedCancel   : Boolean  read FMatchedCancel     write FMatchedCancel;
+    property DisableWarning  : Boolean  read FDisableWarning    write FDisableWarning;
+    property IsForCpXfer     : Boolean  read FIsForCpXfer       write FIsForCpXfer;
+  end;
+
+implementation
+
+{$R *.DFM}
+
+uses
+  rOrders, fOrders, fOrdersTS, fMedCopy, fOrdersCopy, VA508AccessibilityRouter;
+
+{ TfraEvntDelayList }
+const
+  TX_MCHEVT1  = ' is already assigned to ';
+  TX_MCHEVT2  = #13 + 'Do you still want to write delayed orders?';
+  TX_MCHEVT3  = #13#13 + 'If you continue to write delayed orders to this event,'
+    + 'they will not release until the patient moves away from and returns to this ward and treating specialty.'
+    + #13#13 + 'If you want these orders to be activated at signature, '
+    + 'then please write them under the ACTIVE view (and not as delayed orders).';
+  TX_XISTEVT1 = 'Delayed orders already exist for event Delayed ';
+  TX_XISTEVT2 = #13 + 'Do you want to view those orders?';
+
+constructor TfraEvntDelayList.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  TabStop := FALSE;
+  FDisableWarning   := False;
+  FMatchedCancel    := False;
+  FIsForCpXfer      := False;
+  FEvntLimit        := #0;
+  FUserDefaultEvent := 0;
+  FDefaultEvent     := 0;
+end;
+
+procedure TfraEvntDelayList.DisplayEvntDelayList;
+var
+  i: integer;
+  tempStr: string;
+  defaultEvtType: Char;
+  NoUserDefault: boolean;
+const
+  LINE = '^^^^^^^^________________________________________________________________________________________';
+
+begin
+  inherited;
+  mlstEvents.Items.Clear;
+  mlstEvents.InitLongList('');
+  NoUserDefault := False;
+  defaultEvtType := #0;
+
+  if Patient.Inpatient then
+    ListSpecialtiesED(EvntLimit,mlstEvents.Items)
+  else
+    ListSpecialtiesED('A',mlstEvents.Items);
+  if mlstEvents.Items.Count < 1 then
+    Exit;
+  mlstEvents.ItemIndex := -1;
+  if not Patient.Inpatient then
+  begin
+    if UserDefaultEvent > 0 then
+      defaultEvtType := CharAt(EventInfo1(IntToStr(UserDefaultEvent)),1);
+      if defaultEvtType in ['T','D'] then
+        NoUserDefault := True;
+  end;
+  if (UserDefaultEvent > 0) and (not NoUserDefault) then
+  begin
+    for i := 0 to mlstEvents.Items.Count - 1 do
+    begin
+      if Piece(mlstEvents.Items[i],'^',1)=IntToStr(UserDefaultEvent) then
+      begin
+        tempStr := mlstEvents.Items[i];
+        Break;
+      end;
+    end;
+  end;
+  if Length(tempStr)>0 then
+  begin
+    DisableWarning := True;
+    mlstEvents.Items.Insert(0,tempStr);
+    mlstEvents.Items.Insert(1,LINE);
+    mlstEvents.Items.Insert(2,LLS_SPACE);
+    mlstEvents.ItemIndex := 0;
+    edtSearch.Text := mlstEvents.DisplayText[0];
+    tempStr := '';
+    DisableWarning := False;
+  end;
+
+  if (DefaultEvent > 0) and (mlstEvents.ItemIndex<0) then
+  begin
+    for i := 0 to mlstEvents.items.Count - 1 do
+    begin
+      if Piece(mlstEvents.items[i],'^',1)=IntToStr(DefaultEvent) then
+      begin
+        tempStr := mlstEvents.Items[i];
+        Break;
+      end;
+    end;
+  end;
+  if Length(tempStr)>0 then
+  begin
+    mlstEvents.Items.Insert(0,tempStr);
+    mlstEvents.Items.Insert(1,LINE);
+    mlstEvents.Items.Insert(2,LLS_SPACE);
+    mlstEvents.ItemIndex := 0;
+    edtSearch.Text := mlstEvents.DisplayText[0];
+    tempStr := '';
+  end;
+end;
+
+procedure TfraEvntDelayList.ResetProperty;
+begin
+  FEvntLimit        := #0;
+  FUserDefaultEvent := 0;
+  FDefaultEvent     := 0;
+  FMatchedCancel    := False;
+  FDisableWarning   := False;
+  FIsForCpXfer      := False;
+end;
+
+procedure TfraEvntDelayList.CheckMatch;
+var
+  AnEvtID, ATsName: string;
+begin
+  if mlstEvents.ItemIndex < 0 then Exit;
+  FMatchedCancel := False;
+  AnEvtID   := Piece(mlstEvents.Items[mlstEvents.ItemIndex],'^',1);
+  if isMatchedEvent(Patient.DFN,AnEvtID,ATsName) and (not DisableWarning) then
+  begin
+    if InfoBox(Patient.Name + TX_MCHEVT1 + ATsName + ' on ' + Encounter.LocationName + TX_MCHEVT2,
+      'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL then
+    begin
+      FMatchedCancel := True;
+      frmOrders.lstSheets.ItemIndex := 0;
+      frmOrders.lstSheetsClick(Self);
+    end;
+  end;
+end;
+
+procedure TfraEvntDelayList.edtSearchChange(Sender: TObject);
+var
+  i: integer;
+  needle,hay: String;
+begin
+  if Length(edtSearch.Text)<1 then Exit;
+  if (edtSearch.Modified) then
+    begin
+      needle := UpperCase(edtSearch.text);
+      if length(needle)=0 then exit;
+      for i := 0 to mlstEvents.Items.Count - 1 do
+        begin
+          hay := UpperCase(mlstEvents.DisplayText[i]);
+          hay := Copy(hay,0,length(needle));
+          if Pos(needle, hay) > 0 then
+            begin
+              mlstEvents.ItemIndex := i;
+              mlstEvents.TopIndex := i;
+              edtSearch.Text := mlstEvents.DisplayText[mlstEvents.itemindex];
+              edtSearch.SelStart := length(needle);
+              edtSearch.SelLength := length(edtSearch.Text);
+              exit;
+            end;
+        end;
+    end;
+end;
+
+procedure TfraEvntDelayList.mlstEventsChange(Sender: TObject);
+var
+  i,idx : integer;
+  AnEvtID, AnEvtType, APtEvtID: string;
+  AnEvtName,ATsName: string;
+begin
+  inherited;
+  if mlstEvents.ItemIndex >= 0 then
+  begin
+    AnEvtID   := Piece(mlstEvents.Items[mlstEvents.ItemIndex],'^',1);
+    AnEvtType := Piece(mlstEvents.Items[mlstEvents.ItemIndex],'^',3);
+    idx := mlstEvents.ItemIndex;
+  end else
+  begin
+    AnEvtID   := '';
+    AnEvtType := '';
+    idx := -1;
+  end;
+  if AnEvtType = 'D' then
+  begin
+    pnlDate.Visible := True;
+    lblEffective.Left := 1;
+    orDateBox.Left := 1;
+    orDateBox.Hint  := orDateBox.Text;
+  end else
+    pnlDate.Visible := False;
+  if mlstEvents.ItemIndex >= 0 then
+    AnEvtName := Piece(mlstEvents.Items[mlstEvents.ItemIndex],'^',9)
+  else
+    AnEvtName := '';
+  if isExistedEvent(Patient.DFN, AnEvtID, APtEvtID) then
+  begin
+    if IsForCpXfer then
+      DisableWarning := True;
+    for i := 0 to frmOrders.lstSheets.Items.Count - 1 do
+    begin
+      if Piece(frmOrders.lstSheets.Items[i],'^',1)=APtEvtID then
+      begin
+        frmOrders.lstSheets.ItemIndex := i;
+        frmOrders.ClickLstSheet;
+      end;
+    end;
+    IsForCpXfer := False;
+  end;
+  if (StrToIntDef(AnEvtID,0)>0) and (isMatchedEvent(Patient.DFN,AnEvtID,ATsName))
+     and (not DisableWarning) then
+  begin
+    if InfoBox(Patient.Name + TX_MCHEVT1 + ATsName + ' on ' + Encounter.LocationName + TX_MCHEVT2 + TX_MCHEVT3,
+      'Warning', MB_OKCANCEL or MB_ICONWARNING) = IDCANCEL then
+   begin
+     FMatchedCancel := True;
+     frmOrders.lstSheets.ItemIndex := 0;
+     frmOrders.lstSheetsClick(Self);
+   end else
+   begin
+      if Screen.ActiveForm.Name = 'frmOrdersTS' then
+        SendMessage(frmOrdersTS.Handle, UM_STILLDELAY, 0, 0);
+      if Screen.ActiveForm.Name = 'frmMedCopy' then
+        SendMessage(frmMedCopy.Handle, UM_STILLDELAY, 0, 0);
+      if Screen.ActiveForm.Name = 'frmCopyOrders' then
+        SendMessage(frmCopyOrders.Handle, UM_STILLDELAY, 0, 0);
+   end;
+  end;
+  mlstEvents.ItemIndex := idx;
+end;
+
+procedure TfraEvntDelayList.mlstEventsClick(Sender: TObject);
+begin
+  edtSearch.Text := mlstEvents.DisplayText[mlstEvents.ItemIndex];
+end;
+
+procedure TfraEvntDelayList.mlstEventsKeyUp(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (mlstEvents.ItemIndex <> mlstEvents.FocusIndex) and (mlstEvents.FocusIndex > -1)  then
+  begin
+    if (Key = VK_UP) and ( ( mlstEvents.ItemIndex - mlstEvents.FocusIndex) > 1) and (mlstEvents.ItemIndex > 0) then
+      mlstEvents.ItemIndex := mlstEvents.ItemIndex - 1;
+    if (Key = VK_DOWN) and (mlstEvents.FocusIndex < mlstEvents.ItemIndex) then
+      mlstEvents.ItemIndex := mlstEvents.ItemIndex + 1
+    else
+      mlstEvents.ItemIndex := mlstEvents.FocusIndex;
+    edtSearch.text := mlstEvents.DisplayText[mlstEvents.ItemIndex];
+    mlstEvents.TopIndex := mlstEvents.ItemIndex;
+  end;
+end;
+
+procedure TfraEvntDelayList.edtSearchKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);
+var
+  x : string;
+  i : integer;
+begin
+  if Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN] then
+  begin
+    edtSearch.SelectAll;
+    Key := 0;
+  end
+  else if Key = VK_BACK then
+  begin
+    x := edtSearch.Text;
+    i := edtSearch.SelStart;
+    if i > 1 then Delete(x, i + 1, Length(x)) else x := '';
+    edtSearch.Text := x;
+    if i > 1 then edtSearch.SelStart := i;
+  end
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfraEvntDelayList);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/mImgText.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/mImgText.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/mImgText.dfm	(revision 1676)
@@ -0,0 +1,31 @@
+object fraImgText: TfraImgText
+  Left = 0
+  Top = 0
+  Width = 451
+  Height = 20
+  Align = alTop
+  AutoScroll = True
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  ParentFont = False
+  TabOrder = 0
+  TabStop = True
+  object img: TImage
+    Left = 4
+    Top = 2
+    Width = 16
+    Height = 16
+    AutoSize = True
+    Stretch = True
+  end
+  object lblText: TLabel
+    Left = 32
+    Top = 4
+    Width = 32
+    Height = 13
+    Caption = 'lblText'
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/mImgText.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/mImgText.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/mImgText.pas	(revision 1676)
@@ -0,0 +1,36 @@
+unit mImgText;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls;
+
+type
+  TfraImgText = class(TFrame)
+    img: TImage;
+    lblText: TLabel;
+  private
+    { Private declarations }
+  public
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+implementation
+
+uses VA508AccessibilityRouter;
+
+{$R *.DFM}
+
+{ TfraImgText }
+
+constructor TfraImgText.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  TabStop := FALSE;
+end;
+
+initialization
+  SpecifyFormIsNotADialog(TfraImgText);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rCore.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rCore.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rCore.pas	(revision 1676)
@@ -0,0 +1,1345 @@
+unit rCore;
+
+interface
+
+uses SysUtils, Classes, Forms, ORNet, ORFn, ORClasses;
+
+{ record types used to return data from the RPC's.  Generally, the delimited strings returned
+  by the RPC are mapped into the records defined below. }
+
+const
+  UC_UNKNOWN   = 0;                               // user class unknown
+  UC_CLERK     = 1;                               // user class clerk
+  UC_NURSE     = 2;                               // user class nurse
+  UC_PHYSICIAN = 3;                               // user class physician
+
+type
+  TUserInfo = record                              // record for ORWU USERINFO
+    DUZ: Int64;
+    Name: string;
+    UserClass: Integer;
+    CanSignOrders: Boolean;
+    IsProvider: Boolean;
+    OrderRole: Integer;
+    NoOrdering: Boolean;
+    DTIME: Integer;
+    CountDown: Integer;
+    EnableVerify: Boolean;
+    NotifyAppsWM: Boolean;
+    PtMsgHang: Integer;
+    Domain: string;
+    Service: Integer;
+    AutoSave: Integer;
+    InitialTab: Integer;
+    UseLastTab: Boolean;
+    WebAccess: Boolean;
+    IsRPL: string;
+    RPLList: string;
+    HasCorTabs: Boolean;
+    HasRptTab: Boolean;
+    IsReportsOnly: Boolean;
+    ToolsRptEdit: Boolean;
+    DisableHold: Boolean;
+    GECStatusCheck: Boolean;
+    StationNumber: string;
+    IsProductionAccount: boolean;
+  end;
+
+  TPtIDInfo = record                              // record for ORWPT IDINFO
+    Name: string;
+    SSN: string;
+    DOB: string;
+    Age: string;
+    Sex: string;
+    SCSts: string;
+    Vet: string;
+    Location: string;
+    RoomBed: string;
+    //ADD VWPT BELOW FOR HRN
+    HRN : string;
+    AltHRN :string;
+  end;
+
+  TPtSelect = record                              // record for ORWPT SELECT
+    Name: string;
+    ICN: string;
+    SSN: string;
+    DOB: TFMDateTime;
+    Age: Integer;
+    Sex: Char;
+    LocationIEN: Integer;
+    Location: string;
+    WardService: string;
+    RoomBed: string;
+    SpecialtyIEN: Integer;
+    CWAD: string;
+    Restricted: Boolean;
+    AdmitTime: TFMDateTime;
+    ServiceConnected: Boolean;
+    SCPercent: Integer;
+    PrimaryTeam: string;
+    PrimaryProvider: string;
+    Attending: string;
+    //ADD VWPT BELOW FOR HRN AltHRN
+    HRN : string;
+    AltHRN : string;
+  end;
+
+  TEncounterText = record                         // record for ORWPT ENCTITL
+    LocationName: string;
+    LocationAbbr: string;
+    RoomBed: string;
+    ProviderName: string;
+  end;
+
+{ Date/Time functions - right now these make server calls to use server time}
+
+function FMToday: TFMDateTime;
+function FMNow: TFMDateTime;
+function MakeRelativeDateTime(FMDateTime: TFMDateTime): string;
+function StrToFMDateTime(const AString: string): TFMDateTime;
+function ValidDateTimeStr(const AString, Flags: string): TFMDateTime;
+procedure ListDateRangeClinic(Dest: TStrings);
+
+{ General calls }
+
+function ExternalName(IEN: Int64; FileNumber: Double): string;
+function PersonHasKey(APerson: Int64; const AKey: string): Boolean;
+function GlobalRefForFile(const FileID: string): string;
+function SubsetOfGeneric(const StartFrom: string; Direction: Integer; const GlobalRef: string): TStrings;
+function SubsetOfDevices(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfPersons(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfActiveAndInactivePersons(const StartFrom: string; Direction: Integer): TStrings;
+function GetDefaultPrinter(DUZ: Int64; Location: integer): string;
+
+{ User specific calls }
+
+function GetUserInfo: TUserInfo;
+function GetUserParam(const AParamName: string): string;
+procedure GetUserListParam(Dest: TStrings; const AParamName: string);
+function HasSecurityKey(const KeyName: string): Boolean;
+function HasMenuOptionAccess(const OptionName: string): Boolean;
+function ValidESCode(const ACode: string): Boolean;
+
+{ Notifications calls }
+
+procedure LoadNotifications(Dest: TStrings);
+procedure DeleteAlert(XQAID: string);
+procedure DeleteAlertForUser(XQAID: string);
+function  GetXQAData(XQAID: string): string;
+function  GetTIUAlertInfo(XQAID: string): string;
+procedure UpdateUnsignedOrderAlerts(PatientDFN: string);
+function UnsignedOrderAlertFollowup(XQAID: string): string;
+procedure UpdateExpiringMedAlerts(PatientDFN: string);
+procedure UpdateExpiringFlaggedOIAlerts(PatientDFN: string; FollowUp: integer);
+procedure AutoUnflagAlertedOrders(PatientDFN, XQAID: string);
+procedure UpdateUnverifiedMedAlerts(PatientDFN: string);
+procedure UpdateUnverifiedOrderAlerts(PatientDFN: string);
+function GetNotificationFollowUpText(PatientDFN: string; Notification: integer; XQADATA: string): TStrings;
+procedure ForwardAlert(XQAID: string; Recip: string; FWDtype: string; Comment: string);
+procedure RenewAlert(XQAID: string);
+function GetSortMethod: string;
+procedure SetSortMethod(Sort: string; Direction: string);
+
+{ Patient List calls }
+
+function DfltPtList: string;
+function DfltPtListSrc: Char;
+procedure SavePtListDflt(const x: string);
+procedure ListSpecialtyAll(Dest: TStrings);
+procedure ListTeamAll(Dest: TStrings);
+procedure ListWardAll(Dest: TStrings);
+procedure ListProviderTop(Dest: TStrings);
+function SubSetOfProviders(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfCosigners(const StartFrom: string; Direction: Integer; Date: TFMDateTime;
+  ADocType: integer; ATitle: integer): TStrings;
+procedure ListClinicTop(Dest: TStrings);
+function SubSetOfClinics(const StartFrom: string; Direction: Integer): TStrings;
+function GetDfltSort: string;
+procedure ResetDfltSort;
+procedure ListPtByDflt(Dest: TStrings);
+procedure ListPtByProvider(Dest: TStrings; ProviderIEN: Int64);
+procedure ListPtByTeam(Dest: TStrings; TeamIEN: Integer);
+procedure ListPtBySpecialty(Dest: TStrings; SpecialtyIEN: Integer);
+procedure ListPtByClinic(Dest: TStrings; ClinicIEN: Integer; FirstDt, LastDt: string);
+procedure ListPtByWard(Dest: TStrings; WardIEN: Integer);
+procedure ListPtByLast5(Dest: TStrings; const Last5: string);
+procedure ListPtByRPLLast5(Dest: TStrings; const Last5: string);
+procedure ListPtByFullSSN(Dest: TStrings; const FullSSN: string);
+procedure ListPtByRPLFullSSN(Dest: TStrings; const FullSSN: string);
+procedure ListPtTop(Dest: TStrings);
+function SubSetOfPatients(const StartFrom: string; Direction: Integer): TStrings;
+function DfltDateRangeClinic: string;
+function MakeRPLPtList(RPLList: string): string;
+function ReadRPLPtList(RPLJobNumber: string; const StartFrom: string; Direction: Integer) : TStrings;
+procedure KillRPLPtList(RPLJobNumber: string);
+
+// VWPT ADDITIONS FOR ENHANCED PATIENT LOOKUP
+procedure ListPtByOther (Dest: Tstrings; const othertext: string ;caption :string);//:string; radbutton:Tobject);
+procedure ListPtByTimson (Dest: Tstrings; const othertext: string);
+//end VWPT
+
+{ Patient specific calls }
+
+function CalcAge(BirthDate, DeathDate: TFMDateTime): Integer;
+procedure CheckSensitiveRecordAccess(const DFN: string; var AccessStatus: Integer;
+  var MessageText: string);
+procedure CheckRemotePatient(var Dest: string; Patient, ASite: string; var AccessStatus: Integer);
+procedure CurrentLocationForPatient(const DFN: string; var ALocation: Integer; var AName: string; var ASvc: string);
+function DateOfDeath(const DFN: string): TFMDateTime;
+function GetPtIDInfo(const DFN: string): TPtIDInfo;
+function HasLegacyData(const DFN: string; var AMsg: string): Boolean;
+function LogSensitiveRecordAccess(const DFN: string): Boolean;
+function MeansTestRequired(const DFN: string; var AMsg: string): Boolean;
+function RestrictedPtRec(const DFN: string): Boolean;
+procedure SelectPatient(const DFN: string; var PtSelect: TPtSelect);
+function SimilarRecordsFound(const DFN: string; var AMsg: string): Boolean;
+function GetDFNFromICN(AnICN: string): string;
+
+{ Encounter specific calls }
+
+function GetEncounterText(const DFN: string; Location: integer; Provider: Int64): TEncounterText;  //*DFN*
+procedure ListApptAll(Dest: TStrings; const DFN: string; From: TFMDateTime = 0;
+                                                         Thru: TFMDateTime = 0);
+procedure ListAdmitAll(Dest: TStrings; const DFN: string);
+function SubSetOfLocations(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfNewLocs(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfInpatientLocations(const StartFrom: string; Direction: Integer): TStrings;
+function SubSetOfProvWithClass(const StartFrom: string; Direction: Integer; DateTime: string): TStrings;
+function SubSetOfUsersWithClass(const StartFrom: string; Direction: Integer; DateTime: string): TStrings;
+
+{ Remote Data Access calls }
+function HasRemoteData(const DFN: string; var ALocations: TStringList): Boolean;
+function CheckHL7TCPLink: Boolean;
+function GetVistaWebAddress(value: string): string;
+
+implementation
+
+uses Hash, uCore, ShlObj, Windows;
+
+var
+  uPtListDfltSort: string = '';                  // Current user's patient selection list default sort order.
+
+{ private calls }
+
+function FormatSSN(const x: string): string;
+{ places the dashes in a social security number }
+//vwpt code 4/17/0  see below
+var
+
+  i:Integer;
+//end vwpt
+begin
+//vwpt code to prevent extra dashes 4/17/07
+  Result := x;
+  ///take out for i := 1 to Length(x) do if (x[i] in ['-'..'-']) then Exit;
+  //end vwpt
+  if Length(x) > 8
+    then Result := Copy(x,1,3) + '-' + Copy(x,4,2) + '-' + Copy(x,6,Length(x))
+    else Result := x;
+end;
+
+function IsSSN(const x: string): Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  if (Length(x) < 9) or (Length(x) > 10) then Exit;
+  for i := 1 to 9 do if not (x[i] in ['0'..'9']) then Exit;
+  Result := True;
+end;
+
+function IsFMDate(const x: string): Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  if Length(x) <> 7 then Exit;
+  for i := 1 to 7 do if not (x[i] in ['0'..'9']) then Exit;
+  Result := True;
+end;
+
+{ Date/Time functions - not in ORFn because they make server calls to use server time}
+
+function FMToday: TFMDateTime;
+{ return the current date in Fileman format }
+begin
+  Result := Int(FMNow);
+end;
+
+function FMNow: TFMDateTime;
+{ return the current date/time in Fileman format }
+var
+  x: string;
+begin
+  x := sCallV('ORWU DT', ['NOW']);
+  Result := StrToFloat(x);
+end;
+
+function MakeRelativeDateTime(FMDateTime: TFMDateTime): string;
+var
+  Offset: Integer;
+  h,n,s,l: Word;
+  ADateTime: TDateTime;
+  ATime: string;
+begin
+  Result := '';
+  if FMDateTime <= 0 then Exit;
+  ADateTime := FMDateTimeToDateTime(FMDateTime);
+  Offset := Trunc(Int(ADateTime) - Int(FMDateTimeToDateTime(FMToday)));
+  if Offset < 0 then Result := 'T' + IntToStr(Offset)
+  else if Offset = 0 then Result := 'T'
+  else Result := 'T+' + IntToStr(Offset);
+  DecodeTime(ADateTime, h, n, s, l);
+  ATime := Format('@%.2d:%.2d', [h, n]);
+  if ATime <> '@00:00' then Result := Result + ATime;
+end;
+
+function StrToFMDateTime(const AString: string): TFMDateTime;
+{ use %DT the validate and convert a string to Fileman format (accepts T, T-1, NOW, etc.) }
+var
+  x: string;
+begin
+  x := sCallV('ORWU DT', [AString]);
+  Result := StrToFloat(x);
+end;
+
+function ValidDateTimeStr(const AString, Flags: string): TFMDateTime;
+{ use %DT to validate & convert a string to Fileman format, accepts %DT flags }
+begin
+  Result := StrToFloat(sCallV('ORWU VALDT', [AString, Flags]));
+end;
+
+procedure ListDateRangeClinic(Dest: TStrings);
+{ returns date ranges for displaying clinic appointments in patient lookup }
+begin
+  CallV('ORWPT CLINRNG', [nil]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function DfltDateRangeClinic;
+{ returns current default date range settings for displaying clinic appointments in patient lookup }
+begin
+  Result := sCallV('ORQPT DEFAULT CLINIC DATE RANG', [nil]);
+end;
+
+{ General calls }
+
+function ExternalName(IEN: Int64; FileNumber: Double): string;
+{ returns the external name of the IEN within a file }
+begin
+  Result := sCallV('ORWU EXTNAME', [IEN, FileNumber]);
+end;
+
+function PersonHasKey(APerson: Int64; const AKey: string): Boolean;
+begin
+  Result := sCallV('ORWU NPHASKEY', [APerson, AKey]) = '1';
+end;
+
+function GlobalRefForFile(const FileID: string): string;
+begin
+  Result := sCallV('ORWU GBLREF', [FileID]);
+end;
+
+function SubsetOfGeneric(const StartFrom: string; Direction: Integer; const GlobalRef: string): TStrings;
+begin
+  CallV('ORWU GENERIC', [StartFrom, Direction, GlobalRef]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubsetOfDevices(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of devices (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU DEVICE', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfPersons(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of persons (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU NEWPERS', [StartFrom, Direction]);
+//  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+{ User specific calls }
+
+function GetUserInfo: TUserInfo;
+{ returns a record of user information,
+  Pieces: DUZ^NAME^USRCLS^CANSIGN^ISPROVIDER^ORDERROLE^NOORDER^DTIME^CNTDN^VERORD^NOTIFYAPPS^
+          MSGHANG^DOMAIN^SERVICE^AUTOSAVE^INITTAB^LASTTAB^WEBACCESS^ALLOWHOLD^ISRPL^RPLLIST^
+          CORTABS^RPTTAB^STATION#^GECStatus^Production account?}
+var
+  x: string;
+begin
+  x := sCallV('ORWU USERINFO', [nil]);
+  with Result do
+  begin
+    DUZ := StrToInt64Def(Piece(x, U, 1), 0);
+    Name := Piece(x, U, 2);
+    UserClass := StrToIntDef(Piece(x, U, 3), 0);
+    CanSignOrders := Piece(x, U, 4) = '1';
+    IsProvider := Piece(x, U, 5) = '1';
+    OrderRole := StrToIntDef(Piece(x, U, 6), 0);
+    NoOrdering := Piece(x, U, 7) = '1';
+    DTIME := StrToIntDef(Piece(x, U, 8), 300);
+    CountDown := StrToIntDef(Piece(x, U, 9), 10);
+    EnableVerify := Piece(x, U, 10) = '1';
+    NotifyAppsWM := Piece(x, U, 11) = '1';
+    PtMsgHang := StrToIntDef(Piece(x, U, 12), 5);
+    Domain := Piece(x, U, 13);
+    Service := StrToIntDef(Piece(x, U, 14), 0);
+    AutoSave := StrToIntDef(Piece(x, U, 15), 180);
+    InitialTab := StrToIntDef(Piece(x, U, 16), 1);
+    UseLastTab := Piece(x, U, 17) = '1';
+    WebAccess := Piece(x, U, 18) <> '1';
+    DisableHold := Piece(x, U, 19) = '1';
+    IsRPL := Piece(x, U, 20);
+    RPLList := Piece(x, U, 21);
+    HasCorTabs := Piece(x, U, 22) = '1';
+    HasRptTab := Piece(x, U, 23) = '1';
+    StationNumber := Piece(x, U, 24);
+    GECStatusCheck := Piece(x, U, 25) = '1';
+    IsProductionAccount := Piece(x, U, 26) = '1';
+    IsReportsOnly := false;
+    if ((HasRptTab) and (not HasCorTabs)) then
+      IsReportsOnly := true;
+    // Remove next if and nested if should an "override" later be provided for RPL users,etc.:
+    if HasCorTabs then
+      if (IsRPL = '1') then
+        begin
+          IsRPL := '0'; // Hard set for now.
+          IsReportsOnly := false;
+        end;
+    // Following hard set to TRUE per VHA mgt decision:
+    ToolsRptEdit := true;
+     //    x := GetUserParam('ORWT TOOLS RPT SETTINGS OFF');
+     //    if x = '1' then
+    //      ToolsRptEdit := false;
+  end;
+end;
+
+function GetUserParam(const AParamName: string): string;
+begin
+  Result := sCallV('ORWU PARAM', [AParamName]);
+end;
+
+procedure GetUserListParam(Dest: TStrings; const AParamName: string);
+var
+  tmplst: TStringList;
+begin
+  tmplst := TStringList.Create;
+  try
+    tCallV(tmplst, 'ORWU PARAMS', [AParamName]);
+    FastAssign(tmplst, Dest);
+  finally
+    tmplst.Free;
+  end;
+end;
+
+function HasSecurityKey(const KeyName: string): Boolean;
+{ returns true if the currently logged in user has a given security key }
+var
+  x: string;
+begin
+  Result := False;
+  x := sCallV('ORWU HASKEY', [KeyName]);
+  if x = '1' then Result := True;
+end;
+
+function HasMenuOptionAccess(const OptionName: string): Boolean;
+begin
+  Result := (sCallV('ORWU HAS OPTION ACCESS', [OptionName]) = '1');
+end;
+
+function ValidESCode(const ACode: string): Boolean;
+{ returns true if the electronic signature code in ACode is valid }
+begin
+  Result := sCallV('ORWU VALIDSIG', [Encrypt(ACode)]) = '1';
+end;
+
+{ Notifications Calls }
+
+procedure LoadNotifications(Dest: TStrings);
+var
+  tmplst: TStringList;
+begin
+  tmplst := TStringList.Create;
+  try
+    //UpdateUnsignedOrderAlerts(Patient.DFN);      //moved to AFTER signature and DC actions
+    tCallV(tmplst, 'ORWORB FASTUSER', [nil]);
+    FastAssign(tmplst, Dest);
+  finally
+    tmplst.Free;
+  end;
+end;
+
+procedure UpdateUnsignedOrderAlerts(PatientDFN: string);
+begin
+  CallV('ORWORB KILL UNSIG ORDERS ALERT',[PatientDFN]);
+end;
+
+function UnsignedOrderAlertFollowup(XQAID: string): string;
+begin
+  Result := sCallV('ORWORB UNSIG ORDERS FOLLOWUP',[XQAID]);
+end;
+
+procedure UpdateExpiringMedAlerts(PatientDFN: string);
+begin
+  CallV('ORWORB KILL EXPIR MED ALERT',[PatientDFN]);
+end;
+
+procedure UpdateExpiringFlaggedOIAlerts(PatientDFN: string; FollowUp: integer);
+begin
+  CallV('ORWORB KILL EXPIR OI ALERT',[PatientDFN, FollowUp]);
+end;
+
+procedure UpdateUnverifiedMedAlerts(PatientDFN: string);
+begin
+  CallV('ORWORB KILL UNVER MEDS ALERT',[PatientDFN]);
+end;
+
+procedure UpdateUnverifiedOrderAlerts(PatientDFN: string);
+begin
+  CallV('ORWORB KILL UNVER ORDERS ALERT',[PatientDFN]);
+end;
+
+procedure AutoUnflagAlertedOrders(PatientDFN, XQAID: string);
+begin
+  CallV('ORWORB AUTOUNFLAG ORDERS',[PatientDFN, XQAID]);
+end;
+
+procedure DeleteAlert(XQAID: string);
+//deletes an alert
+begin
+  CallV('ORB DELETE ALERT',[XQAID]);
+end;
+
+procedure DeleteAlertForUser(XQAID: string);
+//deletes an alert
+begin
+  CallV('ORB DELETE ALERT',[XQAID, True]);
+end;
+
+procedure ForwardAlert(XQAID: string; Recip: string; FWDtype: string; Comment: string);
+// Forwards an alert with comment to Recip[ient]
+begin
+   CallV('ORB FORWARD ALERT', [XQAID, Recip, FWDtype, Comment]);
+end;
+
+procedure RenewAlert(XQAID: string);
+// Restores/renews an alert
+begin
+   CallV('ORB RENEW ALERT', [XQAID]);
+end;
+
+function GetSortMethod: string;
+// Returns alert sort method
+begin
+  Result := sCallV('ORWORB GETSORT',[nil]);
+end;
+
+procedure SetSortMethod(Sort: string; Direction: string);
+// Sets alert sort method for user
+begin
+   CallV('ORWORB SETSORT', [Sort, Direction]);
+end;
+
+function GetXQAData(XQAID: string): string;
+// Returns data associated with an alert
+begin
+  Result := sCallV('ORWORB GETDATA',[XQAID]);
+end;
+
+function  GetTIUAlertInfo(XQAID: string): string;
+// Returns DFN and document type associated with a TIU alert
+begin
+  Result := sCallV('TIU GET ALERT INFO',[XQAID]);
+end;
+
+function GetNotificationFollowUpText(PatientDFN: string; Notification: integer; XQADATA: string): TStrings;
+// Returns follow-up text for an alert
+begin
+   CallV('ORWORB TEXT FOLLOWUP', [PatientDFN, Notification, XQADATA]);
+   Result := RPCBrokerV.Results;
+end;
+
+{ Patient List Calls }
+
+function DfltPtList: string;
+{ returns the name of the current user's default patient list, null if none is defined
+  Pieces: Ptr to Source File^Source Name^Source Type }
+begin
+  Result := sCallV('ORQPT DEFAULT LIST SOURCE', [nil]);
+  if Length(Result) > 0 then Result := Pieces(Result, U, 2, 3);
+end;
+
+function DfltPtListSrc: Char;
+begin
+  Result := CharAt(sCallV('ORWPT DFLTSRC', [nil]), 1);
+end;
+
+procedure SavePtListDflt(const x: string);
+begin
+  CallV('ORWPT SAVDFLT', [x]);
+end;
+
+procedure ListSpecialtyAll(Dest: TStrings);
+{ lists all treating specialties: IEN^Treating Specialty Name }
+begin
+  CallV('ORQPT SPECIALTIES', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListTeamAll(Dest: TStrings);
+{ lists all patient care teams: IEN^Team Name }
+begin
+  CallV('ORQPT TEAMS', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListWardAll(Dest: TStrings);
+{ lists all active inpatient wards: IEN^Ward Name }
+begin
+  CallV('ORQPT WARDS', [nil]);
+  //MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListProviderTop(Dest: TStrings);
+{ checks parameters for list of commonly selected providers }
+begin
+end;
+
+function SubSetOfProviders(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of providers (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU NEWPERS', [StartFrom, Direction, 'PROVIDER']);
+//  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfCosigners(const StartFrom: string; Direction: Integer; Date: TFMDateTime;
+  ADocType: integer; ATitle: integer): TStrings;
+{ returns a pointer to a list of cosigners (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  if ATitle > 0 then ADocType := 0;
+  // CQ #17218 - Correcting order of parameters for this call
+  //  CallV('ORWU2 COSIGNER', [StartFrom, Direction, Date, ATitle, ADocType]);
+  CallV('ORWU2 COSIGNER', [StartFrom, Direction, Date, ADocType, ATitle]);
+
+  //  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfProvWithClass(const StartFrom: string; Direction: Integer; DateTime: string): TStrings;
+{ returns a pointer to a list of providers (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU NEWPERS', [StartFrom, Direction, 'PROVIDER', DateTime]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfUsersWithClass(const StartFrom: string; Direction: Integer; DateTime: string): TStrings;
+{ returns a pointer to a list of users (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU NEWPERS', [StartFrom, Direction, '', DateTime]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfActiveAndInactivePersons(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of users (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call!}
+begin
+  CallV('ORWU NEWPERS', [StartFrom, Direction, '', '', '', True]);  //TRUE = return all active and inactive users
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+
+procedure ListClinicTop(Dest: TStrings);
+{ checks parameters for list of commonly selected clinics }
+begin
+end;
+
+function SubSetOfClinics(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of clinics (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU CLINLOC', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetDfltSort: string;
+{ Assigns uPtLstDfltSort to user's default patient list sort order (string character).}
+begin
+  uPtListDfltSort := sCallV('ORQPT DEFAULT LIST SORT', [nil]);
+  if uPtListDfltSort = '' then uPtListDfltSort := 'A'; // Default is always "A" for alpha.
+  result := uPtListDfltSort;
+end;
+
+procedure ResetDfltSort;
+begin
+  uPtListDfltSort := '';
+end;
+
+procedure ListPtByDflt(Dest: TStrings);
+{ loads the default patient list into Dest, Pieces: DFN^PATIENT NAME, ETC. }
+var
+  i, SourceType: Integer;
+  ATime, APlace, Sort, Source, x: string;
+  tmplst: TORStringList;
+begin
+  Sort := GetDfltSort();
+  tmplst := TORStringList.Create;
+  try
+    tCallV(tmplst, 'ORQPT DEFAULT PATIENT LIST', [nil]);
+    Source := sCallV('ORWPT DFLTSRC', [nil]);
+    if Source = 'C' then                    // Clinics.
+    begin
+      if Sort = 'P' then                    // "Appointments" sort.
+        SortByPiece(tmplst, U, 4)
+      else
+        SortByPiece(tmplst, U, 2);
+      for i := 0 to tmplst.Count - 1 do
+      begin
+        x := tmplst[i];
+        ATime := Piece(x, U, 4);
+        APlace := Piece(x, U, 3);
+        ATime := FormatFMDateTime('hh:nn  mmm dd, yyyy', MakeFMDateTime(ATime));
+        SetPiece(x, U, 3, ATime);
+        x := x + U + APlace;
+        tmplst[i] := x;
+      end;
+    end
+    else
+    begin
+      SourceType := 0;                      // Default.
+      if Source = 'M' then SourceType := 1; // Combinations.
+      if Source = 'W' then SourceType := 2; // Wards.
+      case SourceType of
+        1 : if Sort = 'S' then tmplst.SortByPieces([3, 8, 2]) // "Source" sort.
+            else if Sort = 'P' then tmplst.SortByPieces([8, 2]) // "Appointment" sort.
+                 else if Sort = 'T' then SortByPiece(tmplst, U, 5) // "Terminal Digit" sort.
+                      else SortByPiece(tmplst, U, 2); // "Alphabetical" (also the default) sort.
+        2 : if Sort = 'R' then tmplst.SortByPieces([3, 2])
+            else SortByPiece(tmplst, U, 2);
+      else SortByPiece(tmplst, U, 2);
+      end;
+    end;
+    MixedCaseList(tmplst);
+    FastAssign(tmplst, Dest);
+  finally
+    tmplst.Free;
+  end;
+end;
+
+procedure ListPtByProvider(Dest: TStrings; ProviderIEN: Int64);
+{ lists all patients associated with a given provider: DFN^Patient Name }
+begin
+  CallV('ORQPT PROVIDER PATIENTS', [ProviderIEN]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtByTeam(Dest: TStrings; TeamIEN: Integer);
+{ lists all patients associated with a given team: DFN^Patient Name }
+begin
+  CallV('ORQPT TEAM PATIENTS', [TeamIEN]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtBySpecialty(Dest: TStrings; SpecialtyIEN: Integer);
+{ lists all patients associated with a given specialty: DFN^Patient Name }
+begin
+  CallV('ORQPT SPECIALTY PATIENTS', [SpecialtyIEN]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtByClinic(Dest: TStrings; ClinicIEN: Integer; FirstDt, LastDt: string); //TFMDateTime);
+{ lists all patients associated with a given clinic: DFN^Patient Name^App't }
+var
+  i: Integer;
+  x, ATime, APlace, Sort: string;
+begin
+  Sort := GetDfltSort();
+  CallV('ORQPT CLINIC PATIENTS', [ClinicIEN, FirstDt, LastDt]);
+  with RPCBrokerV do
+  begin
+    if Sort = 'P' then
+      SortByPiece(TStringList(Results), U, 4)
+    else
+      SortByPiece(TStringList(Results), U, 2);
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      ATime := Piece(x, U, 4);
+      APlace := Piece(x, U, 3);
+      ATime := FormatFMDateTime('hh:nn  mmm dd, yyyy', MakeFMDateTime(ATime));
+      SetPiece(x, U, 3, ATime);
+      x := x + U + APlace;
+      Results[i] := x;
+    end;
+    MixedCaseList(Results);
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListPtByWard(Dest: TStrings; WardIEN: Integer);
+{ lists all patients associated with a given ward: DFN^Patient Name^Room/Bed }
+var
+  Sort: string;
+begin
+  Sort := GetDfltSort();
+  CallV('ORWPT BYWARD', [WardIEN]);
+  if Sort = 'R' then
+    SortByPiece(TStringList(RPCBrokerV.Results), U, 3)
+  else
+    SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+// VWPT ADDITIONS FOR ENHANCED PATIENT LOOKUP
+procedure ListPtByOther (Dest: Tstrings; const othertext: string;caption:string );//:string; radbutton:Tobject);
+var
+  i: Integer;
+  x,Afieldname: string;
+begin
+
+   CallV('ORWPT OTHER-RADIOBUTTONS',[othertext, caption]);
+  //SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  MixedCaseList(RPCBrokerV.Results);
+  Dest.Assign(RPCBrokerV.Results);
+end;
+
+procedure ListPtByTimson (Dest: Tstrings; const othertext: string);//
+
+var
+  i: Integer;
+  x,Afieldname: string;
+begin
+
+  CallV('ORWPT ENHANCED PATLOOKUP',[othertext]);
+  //SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  MixedCaseList(RPCBrokerV.Results);
+  Dest.Assign(RPCBrokerV.Results);
+end;
+
+
+
+//END VWPT ADDITIONS
+
+procedure ListPtByLast5(Dest: TStrings; const Last5: string);
+var
+  i: Integer;
+  x, ADate, AnSSN: string;
+begin
+{ Lists all patients found in the BS and BS5 xrefs that match Last5: DFN^Patient Name }
+  CallV('ORWPT LAST5', [UpperCase(Last5)]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    x := Results[i];
+    ADate := Piece(x, U, 3);
+    AnSSN := Piece(x, U, 4);
+    if IsFMDate(ADate) then ADate := FormatFMDateTimeStr('mmm d, yyyy', ADate);
+    if IsSSN(AnSSN)    then AnSSN := FormatSSN(AnSSN);
+    SetPiece(x, U, 3, AnSSN + '   ' + ADate);
+    Results[i] := x;
+  end;
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtByRPLLast5(Dest: TStrings; const Last5: string);
+var
+  i: Integer;
+  x, ADate, AnSSN: string;
+begin
+{ Lists patients from RPL list that match Last5: DFN^Patient Name }
+  CallV('ORWPT LAST5 RPL', [UpperCase(Last5)]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    x := Results[i];
+    ADate := Piece(x, U, 3);
+    AnSSN := Piece(x, U, 4);
+    if IsFMDate(ADate) then ADate := FormatFMDateTimeStr('mmm d, yyyy', ADate);
+    if IsSSN(AnSSN)    then AnSSN := FormatSSN(AnSSN);
+    SetPiece(x, U, 3, AnSSN + '   ' + ADate);
+    Results[i] := x;
+  end;
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtByFullSSN(Dest: TStrings; const FullSSN: string);
+{ lists all patients found in the SSN xref that match FullSSN: DFN^Patient Name }
+var
+  i: integer;
+  x, ADate, AnSSN: string;
+begin
+  x := FullSSN;
+  i := Pos('-', x);
+  while i > 0 do
+  begin
+    x := Copy(x, 1, i-1) + Copy(x, i+1, 12);
+    i := Pos('-', x);
+  end;
+  CallV('ORWPT FULLSSN', [UpperCase(x)]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    x := Results[i];
+    ADate := Piece(x, U, 3);
+    AnSSN := Piece(x, U, 4);
+    if IsFMDate(ADate) then ADate := FormatFMDateTimeStr('mmm d, yyyy', ADate);
+    if IsSSN(AnSSN)    then AnSSN := FormatSSN(AnSSN);
+    SetPiece(x, U, 3, AnSSN + '   ' + ADate);
+    Results[i] := x;
+  end;
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtByRPLFullSSN(Dest: TStrings; const FullSSN: string);
+{ lists all patients found in the SSN xref that match FullSSN: DFN^Patient Name }
+var
+  i: integer;
+  x, ADate, AnSSN: string;
+begin
+  x := FullSSN;
+  i := Pos('-', x);
+  while i > 0 do
+  begin
+    x := Copy(x, 1, i-1) + Copy(x, i+1, 12);
+    i := Pos('-', x);
+  end;
+  CallV('ORWPT FULLSSN RPL', [UpperCase(x)]);
+  SortByPiece(TStringList(RPCBrokerV.Results), U, 2);
+  with RPCBrokerV do for i := 0 to Results.Count - 1 do
+  begin
+    x := Results[i];
+    ADate := Piece(x, U, 3);
+    AnSSN := Piece(x, U, 4);
+    if IsFMDate(ADate) then ADate := FormatFMDateTimeStr('mmm d, yyyy', ADate);
+    if IsSSN(AnSSN)    then AnSSN := FormatSSN(AnSSN);
+    SetPiece(x, U, 3, AnSSN + '   ' + ADate);
+    Results[i] := x;
+  end;
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPtTop(Dest: TStrings);
+{ currently returns the last patient selected }
+begin
+  CallV('ORWPT TOP', [nil]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function SubSetOfPatients(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of patients (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWPT LIST ALL', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function MakeRPLPtList(RPLList: string): string;
+{ Creates "RPL" Restricted Patient List based on Team List info in user's record. }
+begin
+  result := sCallV('ORQPT MAKE RPL', [RPLList]);
+end;
+
+function ReadRPLPtList(RPLJobNumber: string; const StartFrom: string; Direction: Integer) : TStrings;
+{ returns a pointer to a list of patients (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORQPT READ RPL', [RPLJobNumber, StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure KillRPLPtList(RPLJobNumber: string);
+begin
+  CallV('ORQPT KILL RPL', [RPLJobNumber]);
+end;
+
+{ Patient Specific Calls }
+
+function CalcAge(BirthDate, DeathDate: TFMDateTime): Integer;
+{ calculates age based on today's date and a birthdate (in Fileman format) }
+begin
+  if (DeathDate > BirthDate) then
+    Result := Trunc(DeathDate - BirthDate) div 10000
+  else
+    Result := Trunc(FMToday - BirthDate) div 10000
+end;
+
+procedure CheckSensitiveRecordAccess(const DFN: string; var AccessStatus: Integer;
+  var MessageText: string);
+begin
+  CallV('DG SENSITIVE RECORD ACCESS', [DFN]);
+  AccessStatus := -1;
+  MessageText := '';
+  with RPCBrokerV do
+  begin
+    if Results.Count > 0 then
+    begin
+      AccessStatus := StrToIntDef(Results[0], -1);
+      Results.Delete(0);
+      if Results.Count > 0 then MessageText := Results.Text;
+    end;
+  end;
+end;
+
+procedure CheckRemotePatient(var Dest: string; Patient, ASite: string; var AccessStatus: Integer);
+
+begin
+  CallV('XWB DIRECT RPC', [ASite, 'ORWCIRN RESTRICT', 0, Patient]);
+  AccessStatus := -1;
+  Dest := '';
+  with RPCBrokerV do
+  begin
+    if Results.Count > 0 then
+      begin
+        if Results[0] = '' then Results.Delete(0);
+      end;
+    if Results.Count > 0 then
+      begin
+        if (length(piece(Results[0],'^',2)) > 0) and ((StrToIntDef(piece(Results[0],'^',1),0) = -1)) then
+          begin
+            AccessStatus := -1;
+            Dest := piece(Results[0],'^',2);
+          end
+        else
+          begin
+            AccessStatus := StrToIntDef(Results[0], -1);
+            Results.Delete(0);
+            if Results.Count > 0 then Dest := Results.Text;
+          end;
+      end;
+  end;
+end;
+
+procedure CurrentLocationForPatient(const DFN: string; var ALocation: Integer; var AName: string; var ASvc: string);
+var
+  x: string;
+begin
+  x := sCallV('ORWPT INPLOC', [DFN]);
+  ALocation := StrToIntDef(Piece(x, U, 1), 0);
+  AName := Piece(x, U, 2);
+  ASvc := Piece(x, U, 3);
+end;
+
+function DateOfDeath(const DFN: string): TFMDateTime;
+{ returns 0 or the date a patient died }
+begin
+  Result := MakeFMDateTime(sCallV('ORWPT DIEDON', [DFN]));
+end;
+
+function GetPtIDInfo(const DFN: string): TPtIDInfo;  //*DFN*
+//VWPT ADD HRN   ,ALT HRN (FUTURE)
+//  Pieces: SSN[1]^DOB[2]^SEX[3]^VET[4]^SC%[5]^WARD[6]^RM-BED[7]^NAME[8]^HRN[9]^ALTHRN[10] }
+ // Pieces: SSN[1]^DOB[2]^SEX[3]^VET[4]^SC%[5]^WARD[6]^RM-BED[7]^NAME[8] }
+var
+  x: string;
+begin
+  x := sCallV('ORWPT ID INFO', [DFN]);
+  with Result do                                    // map string into TPtIDInfo record
+  begin
+    Name := MixedCase(Piece(x, U, 8));                                  // Name
+    SSN  := Piece(x, U, 1);
+    DOB  := Piece(x, U, 2);
+    Age  := '';
+    if IsSSN(SSN)    then SSN := FormatSSN(Piece(x, U, 1));                // SSN (PID)
+    if IsFMDate(DOB) then DOB := FormatFMDateTimeStr('mmm dd,yyyy', DOB);  // Date of Birth
+    //Age := IntToStr(CalcAge(MakeFMDateTime(Piece(x, U, 2))));            // Age
+    Sex := Piece(x, U, 3);                                                 // Sex
+    if Length(Sex) = 0 then Sex := 'U';
+    case Sex[1] of
+    'F','f': Sex := 'Female';
+    'M','m': Sex := 'Male';
+    else     Sex := 'Unknown';
+    end;
+    if Piece(x, U, 4) = 'Y' then Vet := 'Veteran' else Vet := '';       // Veteran?
+    if Length(Piece(x, U, 5)) > 0                                       // % Service Connected
+      then SCSts := Piece(x, U, 5) + '% Service Connected'
+      else SCSts := '';
+    Location := Piece(x, U, 6);                                         // Inpatient Location
+    RoomBed  := Piece(x, U, 7);                                         // Inpatient Room-Bed
+    // VWPT ADD HRN
+    HRN :=   Piece(x, U, 9);
+    AltHRN := Piece(x, U, 10);
+  end;
+end;
+
+function HasLegacyData(const DFN: string; var AMsg: string): Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  AMsg := '';
+  CallV('ORWPT LEGACY', [DFN]);
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    Result := Results[0] = '1';
+    for i := 1 to Results.Count - 1 do AMsg := AMsg + Results[i] + CRLF;
+  end;
+end;
+
+function LogSensitiveRecordAccess(const DFN: string): Boolean;
+begin
+  Result := sCallV('DG SENSITIVE RECORD BULLETIN', [DFN]) = '1';
+end;
+
+function MeansTestRequired(const DFN: string; var AMsg: string): Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  AMsg := '';
+  CallV('DG CHK PAT/DIV MEANS TEST', [DFN]);
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    Result := Results[0] = '1';
+    for i := 1 to Results.Count - 1 do AMsg := AMsg + Results[i] + CRLF;
+  end;
+end;
+
+function RestrictedPtRec(const DFN: string): Boolean;  //*DFN*
+{ returns true if the record for a patient identified by DFN is restricted }
+begin
+  Result := Piece(sCallV('ORWPT SELCHK', [DFN]), U, 1) = '1';
+end;
+
+procedure SelectPatient(const DFN: string; var PtSelect: TPtSelect);   //*DFN*
+{ selects the patient (updates DISV, calls Pt Select actions) & returns key fields
+  Pieces: NAME[1]^SEX[2]^DOB[3]^SSN[4]^LOCIEN[5]^LOCNAME[6]^ROOMBED[7]^CWAD[8]^SENSITIVE[9]^
+  //VWPT add HRN and ALTERNATE HRN used with PID hl7 segments
+  ADMITTIME[10]^CONVERTED[11]^SVCONN[12]^SC%[13]^ICN[14]^Age[15]^TreatSpec[16]^HRN[17]^AltHRN[18] }
+ //  BEFORE THIS VWPT WAS         ADMITTIME[10]^CONVERTED[11]^SVCONN[12]^SC%[13]^ICN[14]^Age[15]^TreatSpec[16] }
+var
+  x: string;
+begin
+  x := sCallV('ORWPT SELECT', [DFN]);
+  with PtSelect do
+  begin
+    Name := Piece(x, U, 1);
+    ICN := Piece(x, U, 14);
+    SSN := FormatSSN(Piece(x, U, 4));
+    DOB := MakeFMDateTime(Piece(x, U, 3));
+    Age := StrToIntDef(Piece(x, U, 15), 0);
+    //Age := CalcAge(DOB, DateOfDeath(DFN));
+    if Length(Piece(x, U, 2)) > 0 then Sex := Piece(x, U, 2)[1] else Sex := 'U';
+    LocationIEN := StrToIntDef(Piece(x, U, 5), 0);
+    Location := Piece(x, U, 6);
+    RoomBed := Piece(x, U, 7);
+    SpecialtyIEN := StrToIntDef(Piece(x, u, 16), 0);
+    CWAD := Piece(x, U, 8);
+    Restricted := Piece(x, U, 9) = '1';
+    AdmitTime := MakeFMDateTime(Piece(x, U, 10));
+    ServiceConnected := Piece(x, U, 12) = '1';
+    SCPercent := StrToIntDef(Piece(x, U, 13), 0);
+    //VWPT ADD HRN   AltHRN (future)
+    HRN := Piece(x, U, 17);
+    AltHRN := Piece(x, U, 18);
+  end;
+  x := sCallV('ORWPT1 PRCARE', [DFN]);
+  with PtSelect do
+  begin
+    PrimaryTeam     := Piece(x, U, 1);
+    PrimaryProvider := Piece(x, U, 2);
+    if Length(Location) > 0 then
+      begin
+        Attending := Piece(x, U, 3);
+        x := sCallV('ORWPT INPLOC', [DFN]);
+        WardService := Piece(x, U, 3);
+      end;
+  end;
+end;
+
+function SimilarRecordsFound(const DFN: string; var AMsg: string): Boolean;
+begin
+  Result := False;
+  AMsg := '';
+  CallV('DG CHK BS5 XREF Y/N', [DFN]);
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    Result := Results[0] = '1';
+    Results.Delete(0);
+    AMsg := Results.Text;
+  end;
+  (*
+  CallV('DG CHK BS5 XREF ARRAY', [DFN]);
+  with RPCBrokerV do if Results.Count > 0 then
+  begin
+    Result := Results[0] = '1';
+    for i := 1 to Results.Count - 1 do
+    begin
+      if Piece(Results[i], U, 1) = '0' then AMsg := AMsg + Copy(Results[i], 3, Length(Results[i])) + CRLF;
+      if Piece(Results[i], U, 1) = '1' then AMsg := AMsg + Piece(Results[i], U, 3) + #9 +
+        FormatFMDateTimeStr('mmm dd,yyyy', Piece(Results[i], U, 4)) + #9 + Piece(Results[i], U, 5) + CRLF;
+    end;
+  end;
+  *)
+end;
+
+function GetDFNFromICN(AnICN: string): string;
+begin
+  Result := Piece(sCallV('VAFCTFU CONVERT ICN TO DFN', [AnICN]), U, 1);
+end;
+
+{ Encounter specific calls }
+
+function GetEncounterText(const DFN: string; Location: integer; Provider: Int64): TEncounterText;  //*DFN*
+{ returns resolved external values  Pieces: LOCNAME[1]^PROVNAME[2]^ROOMBED[3] }
+var
+  x: string;
+begin
+  x := sCallV('ORWPT ENCTITL', [DFN, Location, Provider]);
+  with Result do
+  begin
+    LocationName := Piece(x, U, 1);
+    LocationAbbr := Piece(x, U, 2);
+    RoomBed      := Piece(x, U, 3);
+    ProviderName := Piece(x, U, 4);    
+//    ProviderName := sCallV('ORWU1 NAMECVT', [Provider]);
+ end;
+end;
+
+procedure ListApptAll(Dest: TStrings; const DFN: string; From: TFMDateTime = 0;
+                                                         Thru: TFMDateTime = 0);
+{ lists appts/visits for a patient (uses same call as cover sheet)
+  V|A;DateTime;LocIEN^DateTime^LocName^Status }
+const
+  SKIP_ADMITS = 1;
+begin
+  CallV('ORWCV VST', [Patient.DFN, From, Thru, SKIP_ADMITS]);
+  with RPCBrokerV do
+  begin
+    InvertStringList(TStringList(Results));
+    MixedCaseList(Results);
+    SetListFMDateTime('mmm dd,yyyy hh:nn', TStringList(Results), U, 2);
+    FastAssign(Results, Dest);
+  end;
+  (*
+  CallV('ORWPT APPTLST', [DFN]);
+  with RPCBrokerV do
+  begin
+    SortByPiece(TStringList(Results), U, 1);
+    InvertStringList(TStringList(Results));
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      ATime := Piece(x, U, 1);
+      ATime := FormatFMDateTime('mmm dd, yyyy hh:nn', MakeFMDateTime(ATime));
+      SetPiece(x, U, 5, ATime);
+      Results[i] := x;
+    end;
+    FastAssign(Results, Dest);
+  end;
+  *)
+end;
+
+procedure ListAdmitAll(Dest: TStrings; const DFN: string);  //*DFN*
+{ lists all admissions for a patient: MovementTime^LocIEN^LocName^Type }
+var
+  i: Integer;
+  ATime, x: string;
+begin
+  CallV('ORWPT ADMITLST', [DFN]);
+  with RPCBrokerV do
+  begin
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      ATime := Piece(x, U, 1);
+      ATime := FormatFMDateTime('mmm dd, yyyy hh:nn', MakeFMDateTime(ATime));
+      SetPiece(x, U, 5, ATime);
+      Results[i] := x;
+    end;
+    FastAssign(Results, Dest);
+  end;
+end;
+
+function SubSetOfLocations(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of locations (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU HOSPLOC', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfNewLocs(const StartFrom: string; Direction: Integer): TStrings;
+{ Returns a pointer to a list of locations (for use in a long list box) -  the return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call!
+  Filtered by C, W, and Z types - i.e., Clinics, Wards, and "Other" type locations.}
+begin
+  CallV('ORWU1 NEWLOC', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function SubSetOfInpatientLocations(const StartFrom: string; Direction: Integer): TStrings;
+{ returns a pointer to a list of locations (for use in a long list box) -  The return value is
+  a pointer to RPCBrokerV.Results, so the data must be used BEFORE the next broker call! }
+begin
+  CallV('ORWU INPLOC', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+{ Remote Data Access calls }
+
+function HasRemoteData(const DFN: string; var ALocations: TStringList): Boolean;
+begin
+  CallV('ORWCIRN FACLIST', [DFN]);
+  FastAssign(RPCBrokerV.Results, ALocations);
+  Result := not (Piece(RPCBrokerV.Results[0], U, 1) = '-1');
+
+//   '-1^NO DFN'
+//   '-1^PATIENT NOT IN DATABASE'
+//   '-1^NO MPI Node'
+//   '-1^NO ICN'
+//   '-1^Parameter missing.'
+//   '-1^No patient DFN.'
+//   '-1^Could not find Treating Facilities'
+//   '-1^Remote access not allowed'     <===parameter ORWCIRN REMOTE DATA ALLOW
+end;
+
+function CheckHL7TCPLink: Boolean;
+ begin
+   CallV('ORWCIRN CHECKLINK',[nil]);
+   Result := RPCBrokerV.Results[0] = '1';
+ end;
+
+function GetVistaWebAddress(value: string): string;
+begin
+  CallV('ORWCIRN WEBADDR', [value]);
+  result := RPCBrokerV.Results[0];
+end;
+
+function GetDefaultPrinter(DUZ: Int64; Location: integer): string;
+begin
+  Result := sCallV('ORWRP GET DEFAULT PRINTER', [DUZ, Location]) ;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rCover.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rCover.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rCover.pas	(revision 1676)
@@ -0,0 +1,445 @@
+unit rCover;
+
+interface
+
+uses SysUtils, Windows, Classes, ORNet, ORFn, uConst, extctrls, ORCtrls;
+
+type
+  TCoverSheetList = class(TObject)
+  private
+    FPanel: TList;
+    FLabel: TList;
+    FListBox: TList;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Add(APanel: TPanel; ALabel: TOROffsetLabel; AListBox: TORListBox);
+    function CVpln(index: integer): TPanel;
+    function CVlbl(index: integer): TOROffsetLabel;
+    function CVlst(index: integer): TORListBox;
+  end;
+
+function DetailGeneric(IEN: integer; ID, aRPC: string): TStrings;
+function DetailProblem(IEN: Integer): TStrings;
+function DetailAllergy(IEN: Integer): TStrings;
+function DetailPosting(ID: string): TStrings;
+function DetailMed(ID: string): TStrings;
+procedure LoadCoverSheetList(Dest: TStrings);
+procedure ListGeneric(Dest: TStrings; ARpc: String; ACase, AInvert: Boolean;
+  ADatePiece: integer; ADateFormat, AParam1, ADetail, AID: String);
+procedure ListActiveProblems(Dest: TStrings);
+procedure ListAllergies(Dest: TStrings);
+procedure ListPostings(Dest: TStrings);
+procedure ListReminders(Dest: TStrings);
+procedure ListActiveMeds(Dest: TStrings);
+procedure ListRecentLabs(Dest: TStrings);
+procedure ListVitals(Dest: TStrings);
+procedure ListVisits(Dest: TStrings);
+procedure LoadDemographics(Dest: TStrings);
+
+function StartCoverSheet(const IPAddress: string; const AHandle: HWND;
+                         const DontDo: string; const NewReminders: boolean): string;
+procedure StopCoverSheet(const ADFN, IPAddress: string; AHandle: HWND);  //*DFN*
+procedure ListAllBackGround(var Done: Boolean; DestProb, DestCWAD, DestMeds, DestRmnd, DestLabs,
+  DestVitl, DestVsit: TStrings; const IPAddr: string; AHandle: HWND);
+function NoDataText(Reminders: boolean): string;
+
+implementation
+
+uses rCore, uCore, rMeds, uReminders;
+
+procedure TCoverSheetList.Add(APanel: TPanel; ALabel: TOROffsetLabel; AListBox: TORListBox);
+begin
+  FPanel.Add(APanel);
+  FLabel.Add(ALabel);
+  FListBox.Add(AListBox);
+end;
+
+constructor TCoverSheetList.Create;
+begin
+  FPanel := TList.Create;
+  FLabel := TList.Create;
+  FListBox := TList.Create;
+end;
+
+destructor TCoverSheetList.Destroy;
+begin
+  FPanel.Free;
+  FLabel.Free;
+  FListBox.Free;
+  inherited;
+end;
+
+function TCoverSheetList.CVpln(index: integer): TPanel;
+begin
+  Result := TPanel(FPanel[index]);
+end;
+
+function TCoverSheetList.CVlbl(index: integer): TOROffsetLabel;
+begin
+  Result := TOROffsetLabel(FLabel[index]);
+end;
+
+function TCoverSheetList.CVlst(index: integer): TORListBox;
+begin
+  Result := TORListBox(FListBox[index]);
+end;
+
+function DetailGeneric(IEN: integer; ID, aRPC: string): TStrings;
+begin
+  CallV(aRPC, [Patient.DFN, IEN, ID]);
+  Result := RPCBrokerV.Results;
+end;
+
+function DetailProblem(IEN: Integer): TStrings;
+begin
+  CallV('ORQQPL DETAIL', [Patient.DFN, IEN, '']);
+  Result := RPCBrokerV.Results;
+end;
+
+function DetailAllergy(IEN: Integer): TStrings;
+begin
+  CallV('ORQQAL DETAIL', [Patient.DFN, IEN, '']);
+  Result := RPCBrokerV.Results;
+end;
+
+function DetailPosting(ID: string): TStrings;
+begin
+  if ID = 'A' then CallV('ORQQAL LIST REPORT', [Patient.DFN])
+  else if Length(ID) > 0 then CallV('TIU GET RECORD TEXT', [ID])
+  else RPCBrokerV.Results.Clear;
+  Result := RPCBrokerV.Results;
+end;
+
+function DetailMed(ID: string): TStrings;
+begin
+  (*
+  CallV('ORQQPS DETAIL', [Patient.DFN, UpperCase(ID)]);
+  Result := RPCBrokerV.Results;
+  *)
+  Result := DetailMedLM(ID);  // from rMeds
+end;
+
+procedure LoadCoverSheetList(Dest: TStrings);
+begin
+  CallV('ORWCV1 COVERSHEET LIST', [nil]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ExtractActiveMeds(Dest: TStrings; Src: TStringList);
+const
+  MED_TYPE: array[boolean] of string = ('INPT', 'OUTPT');
+var
+  i: Integer;
+  MedType, NonVA, x: string;
+  MarkForDelete: Boolean;
+begin
+  NonVA := 'N;';
+  if Patient.Inpatient then
+    begin
+      if Patient.WardService = 'D' then MedType := 'IO'     //  Inpatient - DOM - show both
+      else MedType := 'I';                                  //  Inpatient non-DOM
+    end
+  else
+    MedType := 'O';                                         //  Outpatient
+  for i := Src.Count - 1 downto 0 do
+  begin
+    MarkForDelete := False;
+    // clear outpt meds if inpt, inpt meds if outpt.  Keep all for DOM patients.
+    if (Pos(Piece(Piece(Src[i], U, 1), ';', 2), MedType) = 0)
+       and (Piece(Src[i], U, 5)<> 'C') then MarkForDelete := True;
+    if Pos(NonVA, Piece(Src[i], U, 1)) > 0 then    // Non-VA Med
+      begin
+        MarkForDelete := False;                    // always display non-VA meds
+        x := Src[i];
+        SetPiece(x, U, 2, 'Non-VA  ' + Piece(x, U, 2));
+        Src[i] := x;
+      end;
+    if (Piece(Src[i], U, 5)='C') then  // Clin Meds
+    begin
+       MarkForDelete := False;                    // always display non-VA meds
+       x := Src[i];
+       SetPiece(x, U, 2, 'Clin Meds  ' + Piece(x, U, 2));
+       Src[i] := x;
+    end;
+    // clear non-active meds   (SHOULD THIS INCLUDE PENDING ORDERS?)
+    if MedStatusGroup(Piece(Src[i], U, 4)) = MED_NONACTIVE then MarkForDelete := True;
+    if MarkForDelete then Src.Delete(i)
+    else if MedType = 'IO' then   // for DOM patients only, distinguish between inpatient/outpatient meds
+      begin
+        x := Src[i];
+        SetPiece(x, U, 2, MED_TYPE[Piece(Piece(x, U, 1), ';', 2)='O'] + ' - ' + Piece(x, U, 2));
+        Src[i] := x;
+      end;
+  end;
+  InvertStringList(Src);        // makes inverse chronological by order time
+  MixedCaseList(Src);
+  if Src.Count = 0 then Src.Add('0^No active medications found');
+  FastAssign(Src, Dest);
+end;
+
+procedure ListGeneric(Dest: TStrings; ARpc: String; ACase, AInvert: Boolean;
+  ADatePiece: integer; ADateFormat, AParam1, ADetail, AID: String);
+var
+  Param: array[0..1] of string;
+  i: integer;
+  s, x0, x2: string;
+  tmplist: TStringList;
+begin
+  Param[0] := Patient.DFN;
+  Param[1] := '';
+  if AID = '50' then
+    begin
+      if (InteractiveRemindersActive) then  //special path for Reminders
+          CallV('ORQQPXRM REMINDERS APPLICABLE', [Patient.DFN, Encounter.Location])
+      else
+        begin
+          CallV('ORQQPX REMINDERS LIST', [Patient.DFN]);
+          SetListFMDateTime('mmm dd,yy', TStringList(RPCBrokerV.Results), U, 3, TRUE);
+        end;
+        FastAssign(RPCBrokerV.Results, Dest);
+      exit;
+    end;
+  tmplist := TStringList.Create;
+  try
+    tmplist.Clear;
+    if Length(AParam1) > 0 then
+      begin
+        Param[1] := AParam1;
+        CallV(ARpc, [Param[0], Param[1]]);
+      end
+    else
+      CallV(ARpc, [Param[0]]);
+    if AID = '40' then
+      ExtractActiveMeds(TStringList(tmplist), TStringList(RPCBrokerV.Results))
+    else
+      FastAssign(RPCBrokerV.Results, tmpList);
+    if ACase = TRUE then MixedCaseList(tmplist);
+    if AID = '10' then for i := 0 to tmplist.Count - 1 do    // capitalize SC exposures for problems
+    begin
+      x0 := tmplist[i];
+      x2 := Piece(x0, U, 2);
+      if Pos('(', x2) > 0 then SetPiece(x2, '(', 2, UpperCase(Piece(x2, '(', 2)));
+      SetPiece(x0, U, 2, x2);
+      tmplist[i] := x0;
+    end;
+    if AInvert = TRUE then InvertStringList(TStringList(tmplist));
+    if ADatePiece > 0 then
+      begin
+        if ADateFormat = 'D' then
+          SetListFMDateTime('mmm dd,yyyy', TStringList(tmplist), U, ADatePiece, TRUE)
+        else
+          SetListFMDateTime('mmm dd,yyyy hh:nn', TStringList(tmplist), U, ADatePiece, TRUE);
+      end;
+    if Length(ADetail) > 0 then
+      begin
+        for i := 0 to tmplist.Count - 1 do
+          begin
+            s := tmplist[i];
+            SetPiece(s, U, 12, ADetail);
+            tmplist[i] := s
+          end;
+      end;
+    FastAssign(tmplist, Dest);
+  finally
+    tmplist.Free;
+  end;
+end;
+
+procedure ListActiveProblems(Dest: TStrings);
+{ lists active problems, format: IEN^ProblemText^ICD^onset^last modified^SC^SpExp }
+const
+  ACTIVE_PROBLEMS = 'A';
+var
+  i: integer;
+  x0, x2: string;
+begin
+  CallV('ORQQPL LIST', [Patient.DFN, ACTIVE_PROBLEMS]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+  for i := 0 to Dest.Count - 1 do
+    begin
+      x0 := Dest[i];
+      x2 := Piece(x0, U, 2);
+      if Pos('(', x2) > 0 then SetPiece(x2, '(', 2, UpperCase(Piece(x2, '(', 2)));
+      SetPiece(x0, U, 2, x2);
+      Dest[i] := x0;
+    end;
+end;
+
+procedure ListAllergies(Dest: TStrings);
+{ lists allergies, format: }
+begin
+  CallV('ORQQAL LIST', [Patient.DFN]);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListPostings(Dest: TStrings);
+begin
+  CallV('ORQQPP LIST', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    MixedCaseList(Results);
+    SetListFMDateTime('mmm dd,yy', TStringList(Results), U, 3);
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListReminders(Dest: TStrings);
+begin
+  with RPCBrokerV do
+  begin
+    if(InteractiveRemindersActive) then
+      CallV('ORQQPXRM REMINDERS APPLICABLE', [Patient.DFN, Encounter.Location])
+    else
+    begin
+      CallV('ORQQPX REMINDERS LIST', [Patient.DFN]);
+      SetListFMDateTime('mmm dd,yy', TStringList(Results), U, 3, TRUE);
+    end;
+//    MixedCaseList(Results);
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListActiveMeds(Dest: TStrings);
+begin
+  CallV('ORWPS COVER', [Patient.DFN]);  // PharmID^DrugName^OrderID^StatusName
+  ExtractActiveMeds(Dest, TStringList(RPCBrokerV.Results));
+end;
+
+procedure ListRecentLabs(Dest: TStrings);
+begin
+  CallV('ORWCV LAB', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    MixedCaseList(Results);
+    SetListFMDateTime('mmm dd,yy', TStringList(Results), U, 3);
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListVitals(Dest: TStrings);
+begin
+  CallV('ORQQVI VITALS', [Patient.DFN]);            // nulls are start/stop dates
+  with RPCBrokerV do
+  begin
+    SetListFMDateTime('mmm dd,yy', TStringList(Results), U, 4);
+    if Results.Count = 0 then Results.Add('0^No vitals found');
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListVisits(Dest: TStrings);
+begin
+  CallV('ORWCV VST', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    InvertStringList(TStringList(Results));
+    MixedCaseList(Results);
+    SetListFMDateTime('mmm dd,yy hh:nn', TStringList(Results), U, 2);
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListAllBackGround(var Done: Boolean; DestProb, DestCWAD, DestMeds, DestRmnd, DestLabs,
+  DestVitl, DestVsit: TStrings; const IPAddr: string; AHandle: HWND);
+var
+  tmplst: TStringList;
+
+  function SubListPresent(const AName: string): Boolean;
+  var
+    i: Integer;
+  begin
+    Result := False;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Results[i] = AName then
+      begin
+        Result := True;
+        break;
+      end;
+  end;
+
+  procedure AssignList(DestList: TStrings; const SectionID: string);
+  var
+    i: integer;
+    x0, x2: string;
+  begin
+    tmplst.Clear;
+    ExtractItems(tmplst, RPCBrokerV.Results, SectionID);
+    if SectionID  = 'VSIT' then InvertStringList(tmplst);
+    if(SectionID <> 'VITL') and (SectionID <> 'RMND') then MixedCaseList(tmplst);
+    if SectionID <> 'PROB' then
+    begin
+      if SectionID = 'VSIT' then SetListFMDateTime('mmm dd,yy hh:nn', tmplst, U, 2)
+      else if SectionID = 'VITL' then SetListFMDateTime('mmm dd,yy hh:nn', tmplst, U, 4)
+      else if (SectionID <> 'RMND') or (not InteractiveRemindersActive) then
+        SetListFMDateTime('mmm dd,yy', tmplst, U, 3, (SectionID = 'RMND'));
+    end
+    else for i := 0 to tmplst.Count - 1 do    // capitalize SC exposures for problems
+    begin
+      x0 := tmplst[i];
+      x2 := Piece(x0, U, 2);
+      if Pos('(', x2) > 0 then SetPiece(x2, '(', 2, UpperCase(Piece(x2, '(', 2)));
+      SetPiece(x0, U, 2, x2);
+      tmplst[i] := x0;
+    end;
+    if tmplst.Count = 0 then
+      tmplst.Add(NoDataText(SectionID = 'RMND'));
+    FastAssign(tmplst, DestList);
+  end;
+
+begin
+  CallV('ORWCV POLL', [Patient.DFN, IPAddr, IntToHex(AHandle, 8)]);
+  with RPCBrokerV do
+  begin
+    tmplst := TStringList.Create;
+    try
+      Done := Results.Values['~Done'] = '1';
+      if SubListPresent('~PROB') then AssignList(DestProb, 'PROB');
+      if SubListPresent('~CWAD') then AssignList(DestCWAD, 'CWAD');
+      if SubListPresent('~MEDS') then
+      begin
+        tmplst.Clear;
+        ExtractItems(tmplst, Results, 'MEDS');
+        ExtractActiveMeds(DestMeds, tmplst);
+      end;
+      if SubListPresent('~RMND') then
+        AssignList(DestRmnd, 'RMND');
+      if SubListPresent('~LABS') then AssignList(DestLabs, 'LABS');
+      if SubListPresent('~VITL') then AssignList(DestVitl, 'VITL');
+      if SubListPresent('~VSIT') then AssignList(DestVsit, 'VSIT');
+    finally
+      tmplst.Free;
+    end;
+  end;
+end;
+
+function NoDataText(Reminders: boolean): string;
+begin
+  if(Reminders) then
+    Result := '0^No reminders due'
+  else
+    Result := '0^No data found';
+end;
+
+procedure LoadDemographics(Dest: TStrings);
+begin
+  CallV('ORWPT PTINQ', [Patient.DFN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function StartCoverSheet(const IPAddress: string; const AHandle: HWND;
+                         const DontDo: string; const NewReminders: boolean): string;
+begin
+  Result := sCallV('ORWCV START', [Patient.DFN, IPAddress, IntToHex(AHandle, 8),
+                                   Encounter.Location, DontDo, NewReminders]);
+end;
+
+procedure StopCoverSheet(const ADFN, IPAddress: string; AHandle: HWND);  //*DFN*
+begin
+  CallV('ORWCV STOP', [ADFN, IPAddress, IntToHex(AHandle, 8)]);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rDCSumm.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rDCSumm.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rDCSumm.pas	(revision 1676)
@@ -0,0 +1,691 @@
+unit rDCSumm;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, TRPCB, rTIU, uConst, uTIU, uDCSumm;
+
+
+{ Discharge Summary Titles }
+procedure ResetDCSummTitles;
+function  DfltDCSummTitle: Integer;
+function  DfltDCSummTitleName: string;
+procedure ListDCSummTitlesShort(Dest: TStrings);
+function SubSetOfDCSummTitles(const StartFrom: string; Direction: Integer; IDNoteTitlesOnly: boolean): TStrings;
+
+{ TIU Preferences }
+procedure ResetDCSummPreferences;
+function  ReturnMaxDCSumms: Integer;
+function  SortDCSummsAscending: Boolean;
+function  GetCurrentDCSummContext: TTIUContext;
+procedure SaveCurrentDCSummContext(AContext: TTIUContext) ;
+
+{ Data Retrieval }
+procedure ActOnDCDocument(var AuthSts: TActionRec; IEN: Integer; const ActionName: string);
+(*procedure ListDischargeSummaries(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);*)
+procedure ListSummsForTree(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+procedure GetDCSummForEdit(var EditRec: TEditDCSummRec; IEN: Integer);
+function  LoadDCUrgencies: TStrings;
+function  GetAttending(const DFN: string): string;  //*DFN*
+function  GetDischargeDate(const DFN: string; AdmitDateTime: string): string;  //*DFN*
+function RequireRelease(ANote, AType: Integer): Boolean;
+function RequireMASVerification(ANote, AType: Integer): Boolean;
+function AllowMultipleSummsPerAdmission(ANote, AType: Integer): Boolean;
+
+{ Data Storage }
+procedure DeleteDCDocument(var DeleteSts: TActionRec; IEN: Integer; const Reason: string);
+procedure SignDCDocument(var SignSts: TActionRec; IEN: Integer; const ESCode: string); 
+procedure PutNewDCSumm(var CreatedDoc: TCreatedDoc; const DCSummRec: TDCSummRec);
+procedure PutDCAddendum(var CreatedDoc: TCreatedDoc; const DCSummRec: TDCSummRec; AddendumTo: 
+Integer);
+procedure PutEditedDCSumm(var UpdatedDoc: TCreatedDoc; const DCSummRec: TDCSummRec; NoteIEN: 
+Integer);
+procedure ChangeAttending(IEN: integer; AnAttending: int64);
+
+const
+  CLS_DC_SUMM = 244;
+  FN_HOSPITAL_LOCATION = 44;
+  FN_NEW_PERSON = 200;
+  TIU_ST_UNREL = 3;
+  TIU_ST_UNVER = 4;
+  TIU_ST_UNSIG = 5;
+
+implementation
+
+var
+  uDCSummTitles: TDCSummTitles;
+  uDCSummPrefs: TDCSummPrefs;
+
+{ Discharge Summary Titles  -------------------------------------------------------------------- }
+procedure LoadDCSummTitles;
+{ private - called one time to set up the uNoteTitles object }
+var
+  x: string;
+begin
+  if uDCSummTitles <> nil then Exit;
+  CallV('TIU PERSONAL TITLE LIST', [User.DUZ, CLS_DC_SUMM]);
+  RPCBrokerV.Results.Insert(0, '~SHORT LIST');  // insert so can call ExtractItems
+  uDCSummTitles := TDCSummTitles.Create;
+  ExtractItems(uDCSummTitles.ShortList, RPCBrokerV.Results, 'SHORT LIST');
+  x := ExtractDefault(RPCBrokerV.Results, 'SHORT LIST');
+  uDCSummTitles.DfltTitle := StrToIntDef(Piece(x, U, 1), 0);
+  uDCSummTitles.DfltTitleName := Piece(x, U, 2);
+end;
+
+procedure ResetDCSummTitles;
+begin
+  if uDCSummTitles <> nil then
+    begin
+      uDCSummTitles.Free;
+      uDCSummTitles := nil;
+      LoadDCSummTitles;
+    end;
+end;
+
+function DfltDCSummTitle: Integer;
+{ returns the IEN of the user defined default Discharge Summary title (if any) }
+begin
+  if uDCSummTitles = nil then LoadDCSummTitles;
+  Result := uDCSummTitles.DfltTitle;
+end;
+
+function DfltDCSummTitleName: string;
+{ returns the name of the user defined default Discharge Summary title (if any) }
+begin
+  if uDCSummTitles = nil then LoadDCSummTitles;
+  Result := uDCSummTitles.DfltTitleName;
+end;
+
+procedure ListDCSummTitlesShort(Dest: TStrings);
+{ returns the user defined list (short list) of Discharge Summary titles }
+begin
+  if uDCSummTitles = nil then LoadDCSummTitles;
+  FastAddStrings(uDCSummTitles.ShortList, Dest);
+  if uDCSummTitles.ShortList.Count > 0 then
+  begin
+    Dest.Add('0^________________________________________________________________________');
+    Dest.Add('0^ ');
+  end;
+end;
+
+function SubSetOfDCSummTitles(const StartFrom: string; Direction: Integer; IDNoteTitlesOnly: boolean): TStrings;
+{ returns a pointer to a list of Discharge Summary titles (for use in a long list box) -
+  The return value is a pointer to RPCBrokerV.Results, so the data must be used BEFORE
+  the next broker call! }
+begin
+  if IDNoteTitlesOnly then
+    CallV('TIU LONG LIST OF TITLES', [CLS_DC_SUMM, StartFrom, Direction, IDNoteTitlesOnly])
+  else
+    CallV('TIU LONG LIST OF TITLES', [CLS_DC_SUMM, StartFrom, Direction]);
+  //MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+{ TIU Preferences  ------------------------------------------------------------------------- }
+
+procedure LoadDCSummPrefs;
+{ private - creates DCSummPrefs object for reference throughout the session }
+var
+  x: string;
+begin
+  uDCSummPrefs := TDCSummPrefs.Create;
+  with uDCSummPrefs do
+  begin
+    x := sCallV('TIU GET PERSONAL PREFERENCES', [User.DUZ]);
+    DfltLoc := StrToIntDef(Piece(x, U, 2), 0);
+    DfltLocName := ExternalName(DfltLoc, FN_HOSPITAL_LOCATION);
+    SortAscending := Piece(x, U, 4) = 'A';
+    MaxSumms := StrToIntDef(Piece(x, U, 10), 0);
+    x := GetAttending(Patient.DFN);
+    DfltCosigner := StrToInt64Def(Piece(x, U, 1), 0);
+    DfltCosignerName := ExternalName(DfltCosigner, FN_NEW_PERSON);
+    AskCosigner := User.DUZ <> DfltCosigner;
+  end;
+end;
+
+procedure ResetDCSummPreferences;
+begin
+  if uDCSummPrefs <> nil then
+    begin
+      uDCSummPrefs.Free;
+      uDCSummPrefs := nil;
+      LoadDCSummPrefs;
+    end;
+end;
+
+function ReturnMaxDCSumms: Integer;
+begin
+  if uDCSummPrefs = nil then LoadDCSummPrefs;
+  Result := uDCSummPrefs.MaxSumms;
+  if Result = 0 then Result := 100;
+end;
+
+function SortDCSummsAscending: Boolean;
+{ returns true if Discharge Summarys should be sorted from oldest to newest (chronological) }
+begin
+  if uDCSummPrefs = nil then LoadDCSummPrefs;
+  Result := uDCSummPrefs.SortAscending;
+end;
+
+{ Data Retrieval --------------------------------------------------------------------------- }
+
+procedure ActOnDCDocument(var AuthSts: TActionRec; IEN: Integer; const ActionName: string);
+var
+  x: string;
+begin
+  if not (IEN > 0) then
+  begin
+    AuthSts.Success := True;
+    AuthSts.Reason := '';
+    Exit;
+  end;
+  x := sCallV('TIU AUTHORIZATION', [IEN, ActionName]);
+  AuthSts.Success := Piece(x, U, 1) = '1';
+  AuthSts.Reason  := Piece(x, U, 2);
+end;
+
+(*procedure ListDischargeSummaries(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+{ retrieves existing progress notes for a patient according to the parameters passed in
+  Pieces: IEN^Title^FMDateOfNote^Patient^Author^Location^Status^Visit
+  Return: IEN^ExDateOfNote^Title, Location, Author }
+var
+  i: Integer;
+  x: string;
+  SortSeq: Char;
+begin
+  if SortAscending then SortSeq := 'A' else SortSeq := 'D';
+  //if OccLim = 0 then OccLim := MaxSummsReturned;
+  CallV('TIU DOCUMENTS BY CONTEXT',
+         [CLS_DC_SUMM, Context, Patient.DFN, Early, Late, Person, OccLim, SortSeq]);
+  with RPCBrokerV do
+  begin
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      if Copy(Piece(x, U, 9), 1, 4) = '    ' then SetPiece(x, U, 9, 'Dis: ');
+      x := Piece(x, U, 1) + U + FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3)))
+        + U + Piece(x, U, 2) + ', ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2) +
+        '  (' + Piece(x,U,7) + '), ' + Piece(x, U, 8) + ', ' + Piece(x, U, 9) +
+        U + Piece(x, U, 3) + U + Piece(x, U, 11);
+      Results[i] := x;
+    end; {for}
+    FastAssign(RPCBrokerV.Results, Dest);
+  end; {with}
+end;*)
+
+procedure ListSummsForTree(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+{ retrieves existing discharge summaries for a patient according to the parameters passed in}
+var
+  SortSeq: Char;
+const
+  SHOW_ADDENDA = True;
+begin
+  if SortAscending then SortSeq := 'A' else SortSeq := 'D';
+  if Context > 0 then
+    begin
+      CallV('TIU DOCUMENTS BY CONTEXT', [CLS_DC_SUMM, Context, Patient.DFN, Early, Late, Person, OccLim, SortSeq, SHOW_ADDENDA]);
+      FastAssign(RPCBrokerV.Results, Dest);
+    end;
+end;
+
+procedure GetDCSummForEdit(var EditRec: TEditDCSummRec; IEN: Integer);
+{ retrieves internal/external values for Discharge Summary fields & loads them into EditRec
+  Fields: Title:.01, RefDate:1301, Author:1204, Cosigner:1208, Subject:1701, Location:1205 }
+var
+  i, j: Integer;
+
+  function FindDT(const FieldID: string): TFMDateTime;
+  var
+    i: Integer;
+  begin
+    Result := 0;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := MakeFMDateTime(Piece(Results[i], U, 2));
+        Break;
+      end;
+  end;
+
+  function FindExt(const FieldID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := Piece(Results[i], U, 3);
+        Break;
+      end;
+  end;
+
+  function FindInt(const FieldID: string): Integer;
+  var
+    i: Integer;
+  begin
+    Result := 0;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := StrToIntDef(Piece(Results[i], U, 2), 0);
+        Break;
+      end;
+  end;
+
+  function FindInt64(const FieldID: string): Int64;
+  var
+    i: Integer;
+  begin
+    Result := 0;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := StrToInt64Def(Piece(Results[i], U, 2), 0);
+        Break;
+      end;
+  end;
+
+
+begin
+  CallV('TIU LOAD RECORD FOR EDIT', [IEN, '.01;.06;.07;.09;1202;1205;1208;1209;1301;1302;1307;1701']);
+  FillChar(EditRec, SizeOf(EditRec), 0);
+  with EditRec do
+  begin
+    Title                 := FindInt('.01');
+    TitleName             := FindExt('.01');
+    AdmitDateTime         := FindDT('.07');
+    DischargeDateTime     := FindDT('1301');
+    UrgencyName           := FindExt('.09');
+    Urgency               := Copy(UrgencyName,1,1);
+    Dictator              := FindInt64('1202');
+    DictatorName          := FindExt('1202');
+    Cosigner              := FindInt64('1208');
+    CosignerName          := FindExt('1208');
+    DictDateTime          := FindDT('1307');
+    Attending             := FindInt64('1209');
+    AttendingName         := FindExt('1209');
+    Transcriptionist      := FindInt64('1302');
+    TranscriptionistName  := FindExt('1302');
+    Location              := FindInt('1205');
+    LocationName          := FindExt('1205');
+    if Title = TYP_ADDENDUM then Addend := FindInt('.06');
+    with RPCBrokerV do
+    begin
+      for i := 0 to Results.Count - 1 do if Results[i] = '$TXT' then break;
+      for j := i downto 0 do Results.Delete(j);
+      // -------------------- v19.1 (RV) LOST NOTES?----------------------------
+      //Lines := Results;   'Lines' is being overwritten by subsequent Broker calls
+      if not Assigned(Lines) then Lines := TStringList.Create;
+      FastAssign(RPCBrokerV.Results, Lines);
+      // -----------------------------------------------------------------------
+    end;
+  end;
+end;
+
+function LoadDCUrgencies: TStrings;
+var
+  i: integer;
+begin
+  CallV('TIU GET DS URGENCIES',[nil]);
+  with RPCBrokerV do
+    for i := 0 to Results.Count-1 do
+      Results[i] := MixedCase(UpperCase(Results[i]));
+  Result := RPCBrokerV.Results;
+end;
+
+{ Data Updates ----------------------------------------------------------------------------- }
+
+procedure DeleteDCDocument(var DeleteSts: TActionRec; IEN: Integer; const Reason: string);
+{ delete a TIU document given the internal entry number, return reason if unable to delete }
+var
+  x: string;
+begin
+  x := sCallV('TIU DELETE RECORD', [IEN, Reason]);
+  DeleteSts.Success := Piece(x, U, 1) = '0';
+  DeleteSts.Reason  := Piece(x, U, 2);
+end;
+
+procedure SignDCDocument(var SignSts: TActionRec; IEN: Integer; const ESCode: string);
+{ update signed status of a TIU document, return reason if signature is not accepted }
+var
+  x: string;
+begin
+(*  with RPCBrokerV do                           // temp - to insure sign doesn't go interactive
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(IEN);            
+    Param[1].PType := list;
+    with Param[1] do Mult['.11']  := '0';       // **** block removed in v19.1 - {RV} ****
+    CallBroker;
+  end;                                         // temp - end*)
+  x := sCallV('TIU SIGN RECORD', [IEN, ESCode]);
+  SignSts.Success := Piece(x, U, 1) = '0';
+  SignSts.Reason  := Piece(x, U, 2);
+end;
+
+procedure PutNewDCSumm(var CreatedDoc: TCreatedDoc; const DCSummRec: TDCSummRec);
+{ create a new discharge summary with the data in DCSummRec and return its internal entry number
+  load broker directly since there isn't a good way to set up multiple subscript arrays }
+(*var
+  i: Integer;*)
+var
+  ErrMsg: string;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU CREATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;  //*DFN*
+    Param[1].PType := literal;
+    Param[1].Value := IntToStr(DCSummRec.Title);
+    Param[2].PType := literal;
+    Param[2].Value := '';
+    Param[3].PType := literal;
+    Param[3].Value := '';
+    Param[4].PType := literal;
+    Param[4].Value := '';
+    Param[5].PType := list;
+    with Param[5] do
+    begin
+      Mult['.07']    := FloatToStr(DCSummRec.AdmitDateTime);
+      Mult['.09']    := DCSummRec.Urgency;
+      Mult['1202']   := IntToStr(DCSummRec.Dictator);
+      Mult['1205']   := IntToStr(Encounter.Location);
+      Mult['1301']   := FloatToStr(DCSummRec.DischargeDateTime);
+      Mult['1307']   := FloatToStr(DCSummRec.DictDateTime);
+      if DCSummRec.Cosigner > 0 then
+        begin
+          Mult['1208'] := IntToStr(DCSummRec.Cosigner);
+          Mult['1506'] := '1';
+        end
+      else
+        begin
+          Mult['1208'] := '';
+          Mult['1506'] := '0';
+        end  ;
+      Mult['1209']   := IntToStr(DCSummRec.Attending);
+      Mult['1302']   := IntToStr(DCSummRec.Transcriptionist);
+      if DCSummRec.IDParent > 0 then Mult['2101'] := IntToStr(DCSummRec.IDParent);
+(*      if DCSummRec.Lines <> nil then
+        for i := 0 to DCSummRec.Lines.Count - 1 do
+          Mult['"TEXT",' + IntToStr(i+1) + ',0'] := FilteredString(DCSummRec.Lines[i]);*)
+    end;
+    Param[6].PType := literal;
+    Param[6].Value := DCSummRec.VisitStr;
+    Param[7].PType := literal;
+    Param[7].Value := '1';  // suppress commit logic
+    CallBroker;
+    CreatedDoc.IEN := StrToIntDef(Piece(Results[0], U, 1), 0);
+    CreatedDoc.ErrorText := Piece(Results[0], U, 2);
+  end;
+  if ( DCSummRec.Lines <> nil ) and ( CreatedDoc.IEN <> 0 ) then
+  begin
+    SetText(ErrMsg, DCSummRec.Lines, CreatedDoc.IEN, 1);
+    if ErrMsg <> '' then
+    begin
+      CreatedDoc.IEN := 0;
+      CreatedDoc.ErrorText := ErrMsg;
+    end;
+  end;
+end;
+
+procedure PutDCAddendum(var CreatedDoc: TCreatedDoc; const DCSummRec: TDCSummRec; AddendumTo: 
+Integer);
+{ create a new addendum for note identified in AddendumTo, returns IEN of new document
+  load broker directly since there isn't a good way to set up multiple subscript arrays }
+(*var
+  i: Integer;*)
+var
+  ErrMsg: string;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU CREATE ADDENDUM RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(AddendumTo);
+    Param[1].PType := list;
+    with Param[1] do
+    begin
+      Mult['.09']    := DCSummRec.Urgency;
+      Mult['1202']   := IntToStr(DCSummRec.Dictator);
+      Mult['1301']   := FloatToStr(DCSummRec.DischargeDateTime);
+      Mult['1307']   := FloatToStr(DCSummRec.DictDateTime);
+      if DCSummRec.Cosigner > 0 then
+        begin
+          Mult['1208'] := IntToStr(DCSummRec.Cosigner);
+          Mult['1506'] := '1';
+        end
+      else
+        begin
+          Mult['1208'] := '';
+          Mult['1506'] := '0';
+        end  ;
+(*      if DCSummRec.Lines <> nil then
+        for i := 0 to DCSummRec.Lines.Count - 1 do
+          Mult['"TEXT",' + IntToStr(i+1) + ',0'] := FilteredString(DCSummRec.Lines[i]);*)
+    end;
+    Param[2].PType := literal;
+    Param[2].Value := '1';  // suppress commit logic
+    CallBroker;
+    CreatedDoc.IEN := StrToIntDef(Piece(Results[0], U, 1), 0);
+    CreatedDoc.ErrorText := Piece(Results[0], U, 2);
+  end;
+  if ( DCSummRec.Lines <> nil ) and ( CreatedDoc.IEN <> 0 ) then
+  begin
+    SetText(ErrMsg, DCSummRec.Lines, CreatedDoc.IEN, 1);
+    if ErrMsg <> '' then
+    begin
+      CreatedDoc.IEN := 0;
+      CreatedDoc.ErrorText := ErrMsg;
+    end;
+  end;
+end;
+
+procedure PutEditedDCSumm(var UpdatedDoc: TCreatedDoc; const DCSummRec: TDCSummRec; NoteIEN:
+Integer);
+{ update the fields and content of the note identified in NoteIEN, returns 1 if successful
+  load broker directly since there isn't a good way to set up mutilple subscript arrays }
+(*var
+  i: Integer;*)
+var
+  ErrMsg: string;
+begin
+  // First, file field data
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(NoteIEN);
+    Param[1].PType := list;
+    with Param[1] do
+    begin
+      if DCSummRec.Addend = 0 then
+        begin
+          Mult['.01']  := IntToStr(DCSummRec.Title);
+          //Mult['.11']  := BOOLCHAR[DCSummRec.NeedCPT];  //  **** removed in v19.1  {RV} ****
+        end;
+      if (DCSummRec.Status in [TIU_ST_UNREL(*, TIU_ST_UNVER*)]) then Mult['.05'] := IntToStr(DCSummRec.Status);
+      Mult['1202']   := IntToStr(DCSummRec.Dictator);
+      Mult['1209']   := IntToStr(DCSummRec.Attending);
+      Mult['1301']   := FloatToStr(DCSummRec.DischargeDateTime);  
+      if DCSummRec.Cosigner > 0 then
+        begin
+          Mult['1208'] := IntToStr(DCSummRec.Cosigner);
+          Mult['1506'] := '1';
+        end
+      else
+        begin
+          Mult['1208'] := '';
+          Mult['1506'] := '0';
+        end  ;
+(*      for i := 0 to DCSummRec.Lines.Count - 1 do
+        Mult['"TEXT",' + IntToStr(i+1) + ',0'] := FilteredString(DCSummRec.Lines[i]);*)
+    end;
+    CallBroker;
+    UpdatedDoc.IEN := StrToIntDef(Piece(Results[0], U, 1), 0);
+    UpdatedDoc.ErrorText := Piece(Results[0], U, 2);
+  end;
+
+  if UpdatedDoc.IEN <= 0 then              //v22.12 - RV
+  //if UpdatedDoc.ErrorText <> '' then    //v22.5 - RV
+    begin
+      UpdatedDoc.ErrorText := UpdatedDoc.ErrorText + #13#10 + #13#10 + 'Document #:  ' + IntToStr(NoteIEN);
+      exit;  
+    end;
+
+    // next, if no error, file document body
+  SetText(ErrMsg, DCSummRec.Lines, NoteIEN, 0);
+  if ErrMsg <> '' then
+  begin
+    UpdatedDoc.IEN := 0;
+    UpdatedDoc.ErrorText := ErrMsg;
+  end;
+end;
+
+function GetAttending(const DFN: string): string;  //*DFN*
+begin
+  CallV('ORQPT ATTENDING/PRIMARY',[DFN]);
+  Result := Piece(RPCBrokerV.Results[0],';',1);
+end;
+
+function GetDischargeDate(const DFN: string; AdmitDateTime: string): string;  //*DFN*
+begin
+  CallV('ORWPT DISCHARGE',[DFN, AdmitDateTime]);
+  Result := RPCBrokerV.Results[0];
+end;
+
+function RequireRelease(ANote, AType: Integer): Boolean;
+{ returns true if a discharge summary must be released }
+begin
+  if ANote > 0 then
+    Result := Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [ANote]), U, 2) = '1'
+  else
+    Result := Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [0, AType]), U, 2) = '1';
+end;
+
+function RequireMASVerification(ANote, AType: Integer): Boolean;
+{ returns true if a discharge summary must be verified }
+var
+  AValue: integer;
+begin
+  Result := False;
+  if ANote > 0 then
+    AValue := StrToIntDef(Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [ANote]), U, 3), 0)
+  else
+    AValue := StrToIntDef(Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [0, AType]), U, 3), 0);
+  case AValue of
+    0:  Result := False;   //  NO
+    1:  Result := True;    //  ALWAYS
+    2:  Result := False;   //  UPLOAD ONLY
+    3:  Result := True;    //  DIRECT ENTRY ONLY
+  end;
+end;
+
+function AllowMultipleSummsPerAdmission(ANote, AType: Integer): Boolean;
+{ returns true if a discharge summary must be released }
+begin
+  if ANote > 0 then
+    Result := Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [ANote]), U, 10) = '1'
+  else
+    Result := Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [0, AType]), U, 10) = '1';
+end;
+
+procedure ChangeAttending(IEN: integer; AnAttending: int64);
+var
+  AttendingIsNotCurrentUser: boolean;
+begin
+  AttendingIsNotCurrentUser := (AnAttending <> User.DUZ);
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(IEN);
+    Param[1].PType := list;
+    with Param[1] do
+      begin
+        Mult['1209']   := IntToStr(AnAttending);
+        if AttendingIsNotCurrentUser then
+        begin
+          Mult['1208'] := IntToStr(AnAttending);
+          Mult['1506'] := '1';
+        end
+      else
+        begin
+          Mult['1208'] := '';
+          Mult['1506'] := '0';
+        end  ;
+      end;
+    CallBroker;
+  end;
+end;
+
+function GetCurrentDCSummContext: TTIUContext;
+var
+  x: string;
+  AContext: TTIUContext;
+begin
+  x := sCallV('ORWTIU GET DCSUMM CONTEXT', [User.DUZ]) ;
+  with AContext do
+    begin
+      Changed       := True;
+      BeginDate     := Piece(x, ';', 1);
+      EndDate       := Piece(x, ';', 2);
+      Status        := Piece(x, ';', 3);
+      if (StrToIntDef(Status, 0) < 1) or (StrToIntDef(Status, 0) > 5) then Status := '1';
+      Author        := StrToInt64Def(Piece(x, ';', 4), 0);
+      MaxDocs       := StrToIntDef(Piece(x, ';', 5), 0);
+      ShowSubject   := StrToIntDef(Piece(x, ';', 6), 0) > 0;   //TIU PREFERENCE??
+      SortBy        := Piece(x, ';', 7);                       //TIU PREFERENCE??
+      ListAscending := StrToIntDef(Piece(x, ';', 8), 0) > 0;
+      TreeAscending := StrToIntDef(Piece(x, ';', 9), 0) > 0;   //TIU PREFERENCE??
+      GroupBy       := Piece(x, ';', 10);
+      SearchField   := Piece(x, ';', 11);
+      KeyWord       := Piece(x, ';', 12);
+      Filtered      := (Keyword <> '');
+    end;
+  Result := AContext;
+end;
+
+procedure SaveCurrentDCSummContext(AContext: TTIUContext) ;
+var
+  x: string;
+begin
+  with AContext do
+    begin
+      SetPiece(x, ';', 1, BeginDate);
+      SetPiece(x, ';', 2, EndDate);
+      SetPiece(x, ';', 3, Status);
+      if Author > 0 then
+        SetPiece(x, ';', 4, IntToStr(Author))
+      else
+        SetPiece(x, ';', 4, '');
+      SetPiece(x, ';', 5, IntToStr(MaxDocs));
+      SetPiece(x, ';', 6, BOOLCHAR[ShowSubject]);       //TIU PREFERENCE??
+      SetPiece(x, ';', 7, SortBy);                      //TIU PREFERENCE??
+      SetPiece(x, ';', 8, BOOLCHAR[ListAscending]);
+      SetPiece(x, ';', 9, BOOLCHAR[TreeAscending]);     //TIU PREFERENCE??
+      SetPiece(x, ';', 10, GroupBy);
+      SetPiece(x, ';', 11, SearchField);
+      SetPiece(x, ';', 12, KeyWord);
+    end;
+  CallV('ORWTIU SAVE DCSUMM CONTEXT', [x]);
+end;
+
+initialization
+  // nothing for now
+
+finalization
+  if uDCSummTitles <> nil then uDCSummTitles.Free;
+  if uDCSummPrefs <> nil then uDCSummPrefs.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rECS.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rECS.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rECS.pas	(revision 1676)
@@ -0,0 +1,148 @@
+unit rECS;
+
+interface
+
+uses SysUtils, Windows, Classes, Forms, ORFn, rCore, uConst, ORClasses, ORNet, uCore;
+
+type
+  TECSReport = Class(TObject)
+  private
+    FReportHandle: string;            // PCE report or Patient Summary report
+    FReportType  : string;            // D: display  P: print
+    FPrintDEV    : string;            // if Print, the print device IEN
+    FReportStart : string;            // Start Date
+    FReportEnd   : string;            // End Date
+    FNeedReason  : string;           // Need procedure reason ?
+    FECSPermit   : boolean;           // Authorized use of ECS
+  public
+    constructor Create;
+    property ReportHandle: string       read FReportHandle  write FReportHandle;
+    property ReportType  : string       read FReportType    write FReportType;
+    property ReportStart : string       read FReportStart   write FReportStart;
+    property ReportEnd   : string       read FReportEnd     write FReportEnd;
+    property PrintDEV    : string       read FPrintDEV      write FPrintDEV;
+    property NeedReason  : string       read FNeedReason    write FNeedReason;
+    property ECSPermit   : boolean      read FECSPermit     write FECSPermit;
+  end;
+
+function GetVisitID: string;
+function GetDivisionID: string;
+function IsESSOInstalled: boolean;
+procedure SaveUserPath(APathInfo: string; var CurPath: string);
+procedure FormatECSDate(ADTStr: string; var AnECSRpt: TECSReport);
+procedure LoadECSReportText(Dest: TStrings; AnECSRpt: TECSReport);
+procedure PrintECSReportToDevice(AnECSRpt: TECSReport);
+
+implementation
+uses TRPCB;
+
+constructor TECSReport.Create;
+begin
+  ReportHandle := '';
+  ReportType   := '';
+  ReportStart  := '';
+  ReportEnd    := '';
+  PrintDEV     := '';
+  FNeedReason  := '';
+  ECSPermit    := False;
+end;
+
+function IsESSOInstalled: boolean;
+var
+  rtn: integer;
+begin
+  Result := False;
+  rtn := StrToIntDef(SCallV('ORECS01 CHKESSO',[nil]),0);
+  if rtn > 0 then
+    Result := True;
+end;
+
+function GetVisitID: string;
+var
+  vsitStr: string;
+begin
+  vsitStr := Encounter.VisitStr + ';' + Patient.DFN;
+  Result := SCallV('ORECS01 VSITID',[vsitStr]);
+end;
+
+function GetDivisionID: string;
+var
+  divID: string;
+begin
+  divID := SCallV('ORECS01 GETDIV',[nil]);
+  Result := divID;
+end;
+
+procedure SaveUserPath(APathInfo: string; var CurPath: string);
+begin
+  CurPath := SCallV('ORECS01 SAVPATH',[APathInfo]);
+end;
+
+procedure FormatECSDate(ADTStr: string; var AnECSRpt: TECSReport);
+var
+  x,DaysBack :string;
+  Alpha, Omega: double;
+begin
+  Alpha := 0;
+  Omega := 0;
+  if CharAt(ADTStr, 1) = 'T' then
+  begin
+    Alpha := StrToFMDateTime(Piece(ADTStr,';',1));
+    Omega := StrToFMDateTime(Piece(ADTStr,';',2));
+  end;
+  if CharAt(ADTStr, 1) = 'd' then
+  begin
+    x := Piece(ADTStr,';',1);
+    DaysBack := Copy(x, 2, Length(x));
+    Alpha := StrToFMDateTime('T-' + DaysBack);
+    Omega := StrToFMDateTime('T');
+  end;
+  AnECSRpt.ReportStart := FloatToStr(Alpha);
+  AnECSRpt.ReportEnd   := FloatToStr(Omega);
+end;
+
+procedure LoadECSReportText(Dest: TStrings; AnECSRpt: TECSReport);
+var
+  userid: string;
+begin
+  with RPCBrokerv do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORECS01 ECRPT';
+    Param[0].PType  := list;
+    Param[0].Mult['"ECHNDL"'] := AnECSRpt.ReportHandle;
+    Param[0].Mult['"ECPTYP"'] := AnECSRpt.ReportType;
+    Param[0].Mult['"ECDEV"']  := AnECSRpt.PrintDEV;
+    Param[0].Mult['"ECDFN"']  := Patient.DFN;
+    Param[0].Mult['"ECSD"']   := AnECSRpt.ReportStart;
+    Param[0].Mult['"ECED"']   := AnECSRpt.ReportEnd;
+    Param[0].Mult['"ECRY"']   := AnECSRpt.NeedReason;
+    Param[0].Mult['"ECDUZ"']  := userid;
+    CallBroker;
+  end;
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure PrintECSReportToDevice(AnECSRpt: TECSReport);
+var
+  userid: string;
+begin
+  userid := IntToStr(User.DUZ);
+  with RPCBrokerV do
+  begin
+    clearParameters := True;
+    RemoteProcedure := 'ORECS01 ECPRINT';
+    Param[0].PType := List;
+    Param[0].Mult['"ECHNDL"'] := AnECSRpt.ReportHandle;
+    Param[0].Mult['"ECPTYP"'] := AnECSRpt.ReportType;
+    Param[0].Mult['"ECDEV"']  := AnECSRpt.PrintDEV;
+    Param[0].Mult['"ECDFN"']  := Patient.DFN;
+    Param[0].Mult['"ECSD"']   := AnECSRpt.ReportStart;
+    Param[0].Mult['"ECED"']   := AnECSRpt.ReportEnd;
+    Param[0].Mult['"ECRY"']   := AnECSRpt.NeedReason;
+    Param[0].Mult['"ECDUZ"']  := userid;
+    CallBroker;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rEventHooks.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rEventHooks.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rEventHooks.pas	(revision 1676)
@@ -0,0 +1,36 @@
+unit rEventHooks;
+
+interface
+
+uses
+  Classes, ORNet;
+  
+function GetPatientChangeGUIDs: string;
+function GetOrderAcceptGUIDs(DisplayGroup: integer): string;
+function GetAllActiveCOMObjects: TStrings;
+function GetCOMObjectDetails(IEN: integer): string;
+
+implementation
+
+function GetPatientChangeGUIDs: string;
+begin
+  Result := sCallV('ORWCOM PTOBJ', []);
+end;
+
+function GetOrderAcceptGUIDs(DisplayGroup: integer): string;
+begin
+  Result := sCallV('ORWCOM ORDEROBJ', [DisplayGroup]);
+end;
+
+function GetAllActiveCOMObjects: TStrings;
+begin
+  CallV('ORWCOM GETOBJS', []);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetCOMObjectDetails(IEN: integer): string;
+begin
+  Result := sCallV('ORWCOM DETAILS', [IEN]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rGraphs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rGraphs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rGraphs.pas	(revision 1676)
@@ -0,0 +1,322 @@
+unit rGraphs;
+
+interface
+
+uses SysUtils, Classes, Controls, Forms, ORNet, ORFn, Graphics;
+
+function rpcPublicEdit: Boolean;
+function rpcReportParams(ien: integer): String;
+
+procedure onoff(x: integer);
+
+function rpcTestGroups(user: int64): TStrings;
+function rpcATest(test: integer): TStrings;
+function rpcATestGroup(testgroup: Integer; user: int64): TStrings;
+function rpcClass(itemtype: string): TStrings;
+function rpcTaxonomy(alltax: boolean; taxonomies: TStrings): TStrings;
+procedure rpcDetailDay(Dest: TStrings; const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  ATypeItem: string; complete: boolean);  //*DFN*
+function rpcDetailSelected(const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  tests: TStringList; complete: boolean): TStrings;  //*DFN*
+procedure rpcFastData(const PatientDFN: string; alldata: TStrings; var ok: boolean);
+procedure rpcFastItems(const PatientDFN: string; allitems: TStrings; var ok: boolean);
+procedure rpcFastLabs(const PatientDFN: string; alllabs: TStrings; var ok: boolean);
+function rpcFastTask(const PatientDFN, oldDFN: string): string;
+function rpcGetAllItems(const PatientDFN: string): TStrings;
+function rpcGetItems(typeitem: string; const PatientDFN: string): TStrings;
+function rpcGetItemData(itemdata, timestamp: string; const PatientDFN: string): TStrings;
+function rpcGetTypes(const PatientDFN: string; subtypes: boolean): TStrings;
+function rpcGetTestSpec: TStrings;
+function rpcTesting: TStrings;
+function rpcGetViews(vtype: string; user: int64): TStrings;
+
+function rpcGetGraphDateRange(reportid: string): TStrings;
+function rpcGetGraphSettings: TStrings;
+procedure rpcSetGraphSettings(paramsetting, permission: string);
+function rpcGetGraphSizing: TStrings;
+procedure rpcSetGraphSizing(values: TStrings);
+
+function rpcGetGraphProfiles(profiles, permission: string; ext: integer; userx: int64): TStrings;
+procedure rpcSetGraphProfile(paramname, permission: string; paramvalues: TStrings);
+procedure rpcDeleteGraphProfile(paramname, permission: string);
+
+function rpcLookupItems(const filename, startfrom: string; direction: integer): TStrings;
+function rpcDateItem(oldestdate, newestdate: double; filenum: string; const PatientDFN: string): TStrings;
+
+implementation
+
+//-------- RPCs copied from rLabs -------------
+function rpcTestGroups(user: int64): TStrings;
+begin
+  CallV('ORWLRR TG', [user]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcATest(test: integer): TStrings;
+begin
+  CallV('ORWLRR ATESTS', [test]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcATestGroup(testgroup: Integer; user: int64): TStrings;
+begin
+  CallV('ORWLRR ATG', [testgroup, user]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+//------------------------------------------
+
+function rpcPublicEdit: Boolean;
+begin
+  onoff(1);
+  Result := sCallV('ORWGRPC PUBLIC', [nil]) = '1';
+  //Result := false;  //************* for testing turn on
+  onoff(0);
+end;
+
+function rpcReportParams(ien: integer): String;
+begin
+  onoff(1);
+  Result := sCallV('ORWGRPC RPTPARAM', [ien]);
+  onoff(0);
+end;
+
+procedure rpcDetailDay(Dest: TStrings; const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  ATypeItem: string; complete: boolean);  //*DFN*
+var
+  includecomplete: string;
+begin
+  if complete then includecomplete := '1' else includecomplete := '0';
+  onoff(1);
+  CallV('ORWGRPC DETAILS', [PatientDFN, ADate1, ADate2, ATypeItem, includecomplete]);
+  onoff(0);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function rpcDetailSelected(const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  tests: TStringList; complete: boolean): TStrings;  //*DFN*
+var
+  includecomplete: string;
+begin
+  if complete then includecomplete := '1' else includecomplete := '0';
+  onoff(1);
+  CallV('ORWGRPC DETAIL', [PatientDFN, ADate1, ADate2, tests, includecomplete]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure rpcFastData(const PatientDFN: string; alldata: TStrings; var ok: boolean);
+begin
+  onoff(1);
+  CallV('ORWGRPC FASTDATA', [PatientDFN]);
+  onoff(0);
+  FastAssign(RPCBrokerV.Results, alldata);
+  ok := alldata.Count > 0;
+end;
+
+procedure rpcFastItems(const PatientDFN: string; allitems: TStrings; var ok: boolean);
+begin
+  onoff(1);
+  CallV('ORWGRPC FASTITEM', [PatientDFN]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  FastAssign(RPCBrokerV.Results, allitems);
+  ok := allitems.Count > 0;
+end;
+
+procedure rpcFastLabs(const PatientDFN: string; alllabs: TStrings; var ok: boolean);
+begin
+  onoff(1);
+  CallV('ORWGRPC FASTLABS', [PatientDFN]);
+  onoff(0);
+  FastAssign(RPCBrokerV.Results, alllabs);
+  ok := alllabs.Count > 0;
+end;
+
+function rpcFastTask(const PatientDFN, oldDFN: string): string;
+begin
+  onoff(1);
+  Result := sCallV('ORWGRPC FASTTASK', [PatientDFN, oldDFN]);
+  onoff(0);
+end;
+
+function rpcGetAllItems(const PatientDFN: string): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC ALLITEMS', [PatientDFN]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetTypes(const PatientDFN: string; subtypes: boolean): TStrings;
+var
+  includesubtypes: string;
+begin
+  if subtypes then includesubtypes := '1' else includesubtypes := '0';
+  onoff(1);
+  CallV('ORWGRPC TYPES', [PatientDFN, includesubtypes]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetItems(typeitem: string; const PatientDFN: string): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC ITEMS', [PatientDFN, typeitem]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcClass(itemtype: string): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC CLASS', [itemtype]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcTaxonomy(alltax: boolean; taxonomies: TStrings): TStrings;
+var
+  getall: string;
+begin
+  if alltax then getall := '1' else getall := '0';
+  onoff(1);
+  CallV('ORWGRPC TAX', [getall, taxonomies]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetItemData(itemdata, timestamp: string; const PatientDFN: string): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC ITEMDATA', [itemdata, timestamp, PatientDFN]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetGraphDateRange(reportid: string): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC GETDATES', [reportid]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetGraphSettings: TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC GETPREF', [nil]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure rpcSetGraphSettings(paramsetting, permission: string);
+begin
+  onoff(1);
+  CallV('ORWGRPC SETPREF', [paramsetting, permission]);
+  onoff(0);
+end;
+
+function rpcGetGraphSizing: TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC GETSIZE', [nil]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure rpcSetGraphSizing(values: TStrings);
+begin
+  onoff(1);
+  CallV('ORWGRPC SETSIZE', [values]);
+  onoff(0);
+end;
+
+function rpcGetGraphProfiles(profiles, permission: string; ext: integer; userx: int64): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC GETVIEWS', [profiles, permission, ext, userx]);
+  onoff(0);
+  if (profiles = '1') or (ext = 1) then
+    MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure rpcSetGraphProfile(paramname, permission: string; paramvalues: TStrings);
+begin
+  onoff(1);
+  CallV('ORWGRPC SETVIEWS', [paramname, permission, paramvalues]);
+  onoff(0);
+end;
+
+procedure rpcDeleteGraphProfile(paramname, permission: string);
+begin
+  onoff(1);
+  CallV('ORWGRPC DELVIEWS', [paramname, permission]);
+  onoff(0);
+end;
+
+function rpcGetTestSpec: TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC TESTSPEC', []);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcTesting: TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC TESTING', []);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcGetViews(vtype: string; user: int64): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC ALLVIEWS', [vtype, user]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcLookupItems(const filename, StartFrom: string; Direction: integer): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC LOOKUP', [filename, StartFrom, Direction]);
+  onoff(0);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function rpcDateItem(oldestdate, newestdate: double; filenum: string; const PatientDFN: string): TStrings;
+begin
+  onoff(1);
+  CallV('ORWGRPC DATEITEM', [oldestdate, newestdate, filenum, PatientDFN]);
+  onoff(0);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure onoff(x: integer);
+begin
+  if x = 1 then
+  begin
+    //beep;
+    //Screen.Cursor := crHourGlass;
+  end
+  else
+  begin
+    //sleep(3000);
+    //Screen.Cursor := crDefault;
+    //sleep(1000);
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rLabs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rLabs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rLabs.pas	(revision 1676)
@@ -0,0 +1,376 @@
+unit rLabs;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn;
+
+type
+
+  TLabPatchInstalled = record
+    PatchInstalled: boolean;
+    PatchChecked: boolean;
+  end;
+
+
+function AtomicTests(const StartFrom: string; Direction: Integer): TStrings;
+function Specimens(const StartFrom: string; Direction: Integer): TStrings;
+function AllTests(const StartFrom: string; Direction: Integer): TStrings;
+function ChemTest(const StartFrom: string; Direction: Integer): TStrings;
+function Users(const StartFrom: string; Direction: Integer): TStrings;
+function TestGroups(user: int64): TStrings;
+function ATest(test: integer): TStrings;
+function ATestGroup(testgroup: Integer; user: int64): TStrings;
+procedure UTGAdd(tests: TStrings);
+procedure UTGReplace(tests: TStrings; testgroup: integer);
+procedure UTGDelete(testgroup: integer);
+procedure SpecimenDefaults(var blood, urine, serum, plasma: string);
+procedure Cumulative(Dest: TStrings; const PatientDFN: string;
+  daysback: integer; ADate1, ADate2: TFMDateTime; ARpc: string);
+procedure RemoteLabCumulative(Dest: TStrings; const PatientDFN: string;
+  daysback: integer; ADate1, ADate2: TFMDateTime; ASite, ARemoteRPC: String);
+procedure Interim(Dest: TStrings; const PatientDFN: string; ADate1, ADate2: TFMDateTime; ARpc: string);  //*DFN*
+procedure RemoteLabInterim(Dest: TStrings; const PatientDFN: string; ADate1,
+  ADate2: TFMDateTime; ASite, ARemoteRPC: String);
+procedure Micro(Dest: TStrings; const PatientDFN: string; ADate1,
+  ADate2: TFMDateTime; ARpc: string);  //*DFN*
+procedure RemoteLabMicro(Dest: TStrings; const PatientDFN: string; ADate1,
+  ADate2: TFMDateTime; ASite, ARemoteRPC: String);
+function InterimSelect(const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  tests: TStrings): TStrings;  //*DFN*
+function InterimGrid(const PatientDFN: string; ADate1: TFMDateTime;
+  direction, format: integer): TStrings;  //*DFN*
+function Worksheet(const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  spec: string; tests: TStrings): TStrings;  //*DFN*
+procedure Reports(Dest: TStrings; const PatientDFN: string; reportid, hstype,
+  ADate, section: string; Adate1, Adate2: TFMDateTime; ARpc: string);  //*DFN*
+procedure RemoteLabReports(Dest: TStrings; const PatientDFN: string; reportid, hstype,
+  ADate, section: string; Adate1, Adate2: TFMDateTime; ASite, ARemoteRPC: String);
+procedure RemoteLab(Dest: TStrings; const PatientDFN: string; reportid, hstype,
+  ADate, section: string; Adate1, Adate2: TFMDateTime; ASite, ARemoteRPC: String);
+procedure GetNewestOldest(const PatientDFN: string; var newest, oldest: string);  //*DFN*
+function GetChart(const PatientDFN: string; ADate1, ADate2: TFMDateTime;
+  spec, test: string): TStrings;  //*DFN*
+procedure PrintLabsToDevice(AReport: string; ADaysBack: Integer;
+  const PatientDFN, ADevice: string; ATests: TStrings;
+  var ErrMsg: string; ADate1, ADate2: TFMDateTime; ARemoteSiteID, ARemoteQuery: string);
+function GetFormattedLabReport(AReport: string; ADaysBack: Integer; const PatientDFN: string;
+  ATests: TStrings; ADate1, ADate2: TFMDateTime; ARemoteSiteID, ARemoteQuery: string): TStrings;
+function TestInfo(Test: String): TStrings;
+function LabPatchInstalled: boolean;
+
+
+implementation
+
+uses rCore, uCore, graphics, rMisc;
+
+const
+  PSI_05_118 = 'LR*5.2*364';
+var
+  uLabPatchInstalled: TLabPatchInstalled;
+
+function AtomicTests(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('ORWLRR ATOMICS', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function Specimens(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('ORWLRR SPEC', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function AllTests(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('ORWLRR ALLTESTS', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function ChemTest(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('ORWLRR CHEMTEST', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function Users(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('ORWLRR USERS', [StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function TestGroups(user: int64): TStrings;
+begin
+  CallV('ORWLRR TG', [user]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function ATest(test: integer): TStrings;
+begin
+  CallV('ORWLRR ATESTS', [test]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function ATestGroup(testgroup: Integer; user: int64): TStrings;
+begin
+  CallV('ORWLRR ATG', [testgroup, user]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure UTGAdd(tests: TStrings);
+begin
+  CallV('ORWLRR UTGA', [tests]);
+end;
+
+procedure UTGReplace(tests: TStrings; testgroup: integer);
+begin
+  CallV('ORWLRR UTGR', [tests, testgroup]);
+end;
+
+procedure UTGDelete(testgroup: integer);
+begin
+  CallV('ORWLRR UTGD', [testgroup]);
+end;
+
+procedure SpecimenDefaults(var blood, urine, serum, plasma: string);
+begin
+  CallV('ORWLRR PARAM', [nil]);
+  blood := Piece(RPCBrokerV.Results[0], '^', 1);
+  urine := Piece(RPCBrokerV.Results[0], '^', 2);
+  serum := Piece(RPCBrokerV.Results[0], '^', 3);
+  plasma := Piece(RPCBrokerV.Results[0], '^', 4);
+end;
+
+procedure Cumulative(Dest: TStrings; const PatientDFN: string; daysback: integer; ADate1, ADate2: TFMDateTime; ARpc: string);  //*DFN*
+begin
+  if Length(ARpc) > 0 then
+    begin
+      CallV(ARpc, [PatientDFN, daysback, ADate1, ADate2]);
+      QuickCopy(RPCBrokerV.Results,Dest);
+    end
+  else
+    begin
+      Dest.Add('RPC is missing from report definition (file 101.24).');
+      Dest.Add('Please contact Technical Support.');
+    end;
+end;
+
+procedure RemoteLabCumulative(Dest: TStrings; const PatientDFN: string;
+  daysback: integer; ADate1, ADate2: TFMDateTime; ASite, ARemoteRPC: String);
+begin
+  CallV('XWB REMOTE RPC', [ASite, ARemoteRPC, 0, PatientDFN, daysback, Adate1, Adate2]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure Interim(Dest: TStrings; const PatientDFN: string; ADate1, ADate2: TFMDateTime; ARpc: string);  //*DFN*
+begin
+  if Length(ARpc) > 0 then
+    begin
+      CallV(ARpc, [PatientDFN, ADate1, ADate2]);
+      QuickCopy(RPCBrokerV.Results,Dest);
+    end
+  else
+    begin
+      Dest.Add('RPC is missing from report definition (file 101.24).');
+      Dest.Add('Please contact Technical Support.');
+    end;
+end;
+
+procedure RemoteLabInterim(Dest: TStrings; const PatientDFN: string; ADate1,
+  ADate2: TFMDateTime; ASite, ARemoteRPC: String);
+begin
+  CallV('XWB REMOTE RPC',[ASite, ARemoteRPC, 0, PatientDFN, Adate1, Adate2]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure Micro(Dest: TStrings; const PatientDFN: string; ADate1, ADate2: TFMDateTime; ARpc: string);  //*DFN*
+begin
+  if Length(ARpc) > 0 then
+    begin
+      CallV(ARpc, [PatientDFN, ADate1, ADate2]);
+      QuickCopy(RPCBrokerV.Results,Dest);
+    end
+  else
+    begin
+      Dest.Add('RPC is missing from report definition (file 101.24).');
+      Dest.Add('Please contact Technical Support.');
+    end;
+end;
+
+procedure RemoteLabMicro(Dest: TStrings; const PatientDFN: string; ADate1,
+  ADate2: TFMDateTime; ASite, ARemoteRPC: String);
+begin
+  CallV('XWB REMOTE RPC',[ASite, ARemoteRPC, 0, PatientDFN, Adate1, Adate2]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+function InterimSelect(const PatientDFN: string; ADate1, ADate2: TFMDateTime; tests: TStrings): TStrings;  //*DFN*
+begin
+  CallV('ORWLRR INTERIMS', [PatientDFN, ADate1, ADate2, tests]);
+  Result := RPCBrokerV.Results;
+end;
+
+function InterimGrid(const PatientDFN: string; ADate1: TFMDateTime; direction, format: integer): TStrings;  //*DFN*
+begin
+  CallV('ORWLRR INTERIMG', [PatientDFN, ADate1, direction, format]);
+  Result := RPCBrokerV.Results;
+end;
+
+function Worksheet(const PatientDFN: string; ADate1, ADate2: TFMDateTime; spec: string; tests: TStrings): TStrings;  //*DFN*
+begin
+  CallV('ORWLRR GRID', [PatientDFN, ADate1, ADate2, spec, tests]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure Reports(Dest: TStrings; const PatientDFN: string; reportid, hstype, ADate, section: string; Adate1, Adate2: TFMDateTime; ARpc: string);  //*DFN*
+begin
+  if Length(ARpc) > 0 then
+    begin
+      CallV(ARpc, [PatientDFN, reportid, hstype, ADate, section, Adate2, Adate1]);
+      QuickCopy(RPCBrokerV.Results,Dest);
+    end
+  else
+    begin
+      Dest.Add('RPC is missing from report definition (file 101.24).');
+      Dest.Add('Please contact Technical Support.');
+    end;
+end;
+
+procedure RemoteLabReports(Dest: TStrings; const PatientDFN: string; reportid, hstype,
+  ADate, section: string; Adate1, Adate2: TFMDateTime; ASite, ARemoteRPC: String);
+begin
+  CallV('XWB REMOTE RPC',[ASite, ARemoteRPC, 0, PatientDFN,
+        reportid + ';1', hstype, ADate, section, Adate2, Adate1]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure RemoteLab(Dest: TStrings; const PatientDFN: string; reportid, hstype,
+  ADate, section: string; Adate1, Adate2: TFMDateTime; ASite, ARemoteRPC: String);
+begin
+  CallV('XWB REMOTE RPC',[ASite, ARemoteRPC, 0, PatientDFN,
+        reportid + ';1', hstype, ADate, section, Adate2, Adate1]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure GetNewestOldest(const PatientDFN: string; var newest, oldest: string);  //*DFN*
+begin
+  CallV('ORWLRR NEWOLD', [PatientDFN]);
+  newest := Piece(RPCBrokerV.Results[0], '^', 1);
+  oldest := Piece(RPCBrokerV.Results[0], '^', 2);
+end;
+
+function GetChart(const PatientDFN: string; ADate1, ADate2: TFMDateTime; spec, test: string): TStrings;  //*DFN*
+begin
+  CallV('ORWLRR CHART', [PatientDFN, ADate1, ADate2, spec, test]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure PrintLabsToDevice(AReport: string; ADaysBack: Integer;
+ const PatientDFN, ADevice: string; ATests: TStrings; var ErrMsg: string;
+ ADate1, ADate2: TFMDateTime; ARemoteSiteID, ARemoteQuery: string);
+{ prints a report on the selected device }
+var
+  j: integer;
+  RemoteHandle,Report: string;
+  aHandles: TStringlist;
+begin
+  aHandles := TStringList.Create;
+  if Length(ARemoteSiteID) > 0 then
+    begin
+      RemoteHandle := '';
+      for j := 0 to RemoteReports.Count - 1 do
+        begin
+          Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+          if Report = ARemoteQuery then
+            begin
+              RemoteHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle
+                + '^' + Pieces(Report,'^',9,10);
+              break;
+            end;
+        end;
+      if Length(RemoteHandle) > 1 then
+        with RemoteSites.SiteList do
+            aHandles.Add(ARemoteSiteID + '^' + RemoteHandle);
+    end;
+  if aHandles.Count > 0 then
+    begin
+      ErrMsg := sCallV('ORWRP PRINT LAB REMOTE',[ADevice, PatientDFN, AReport, aHandles]);
+      if Piece(ErrMsg, U, 1) = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+    end
+  else
+    begin
+      ErrMsg := sCallV('ORWRP PRINT LAB REPORTS',[ADevice, PatientDFN, AReport,
+        ADaysBack, ATests, ADate2, ADate1]);
+      if Piece(ErrMsg, U, 1) = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+    end;
+  aHandles.Clear;
+  aHandles.Free;
+end;
+
+function GetFormattedLabReport(AReport: String; ADaysBack: Integer;
+  const PatientDFN: string; ATests: TStrings; ADate1, ADate2: TFMDateTime;
+  ARemoteSiteID, ARemoteQuery: string): TStrings;
+{ prints a report on the selected Windows device }
+var
+  j: integer;
+  RemoteHandle,Report: string;
+  aHandles: TStringlist;
+begin
+  aHandles := TStringList.Create;
+  if Length(ARemoteSiteID) > 0 then
+    begin
+      RemoteHandle := '';
+      for j := 0 to RemoteReports.Count - 1 do
+        begin
+          Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+          if Report = ARemoteQuery then
+            begin
+              RemoteHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle
+                + '^' + Pieces(Report,'^',9,10);
+              break;
+            end;
+        end;
+      if Length(RemoteHandle) > 1 then
+        with RemoteSites.SiteList do
+            aHandles.Add(ARemoteSiteID + '^' + RemoteHandle);
+    end;
+  if aHandles.Count > 0 then
+    begin
+      CallV('ORWRP PRINT WINDOWS LAB REMOTE',[PatientDFN, AReport, aHandles]);
+      Result := RPCBrokerV.Results;
+    end
+  else
+    begin
+      CallV('ORWRP WINPRINT LAB REPORTS',[PatientDFN, AReport, ADaysBack, ATests,
+        ADate2, ADate1]);
+      Result := RPCBrokerV.Results;
+    end;
+  aHandles.Clear;
+  aHandles.Free;
+end;
+
+function TestInfo(Test: String): TStrings;
+begin
+  CallV('ORWLRR INFO',[Test]);
+  Result := RPCBrokerV.Results;
+end;
+
+function LabPatchInstalled: boolean;
+begin
+  with uLabPatchInstalled do
+    if not PatchChecked then
+      begin
+        PatchInstalled := ServerHasPatch(PSI_05_118);
+        PatchChecked := True;
+      end;
+  Result := uLabPatchInstalled.PatchInstalled;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rMeds.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rMeds.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rMeds.pas	(revision 1676)
@@ -0,0 +1,249 @@
+unit rMeds;
+
+{$O-}
+
+interface
+
+uses SysUtils, Classes, ORFn, ORNet, uCore, uConst;
+
+type
+  TMedListRec = class
+  public
+    PharmID:   string;
+    OrderID:   string;
+    Instruct:  string;
+    StartDate: TFMDateTime;
+    StopDate:  TFMDateTime;
+    Status:    string;
+    Refills:   string;
+    Inpatient: Boolean;
+    NonVAMed:  Boolean;
+    IVFluid:   Boolean;
+    SrvSeq:    Integer;
+    LastFill:  TFMDateTime;
+    Location:   String;
+    Drug:      String;
+    //Action:    Integer;
+  end;
+
+procedure ClearMedList(AList: TList);
+function DetailMedLM(ID: string): TStrings;
+function MedAdminHistory(OrderID: string): TStrings;
+function MedStatusGroup(const s: string): Integer;
+procedure LoadActiveMedLists(InPtMeds, OutPtMeds, NonVAMeds: TList; var view: integer);
+function GetNewDialog: string;
+function PickUpDefault: string;
+procedure Refill(AnOrderID, PickUpAt: string);
+function IsFirstDoseNowOrder(OrderID: string): boolean;
+function GetMedStatus(MedID: TStringList): boolean;
+
+implementation
+
+procedure ClearMedList(AList: TList);
+var
+  i: Integer;
+begin
+  if Assigned(AList) then with AList do
+  begin
+    for i := 0 to Count - 1 do
+      if Assigned(Items[i]) then TMedListRec(Items[i]).Free;
+    Clear;
+  end;
+  //with AList do for i := 0 to Count - 1 do with TMedListRec(Items[i]) do Free;
+  //AList.Clear;
+end;
+
+function DetailMedLM(ID: string): TStrings;
+begin
+  CallV('ORWPS DETAIL', [Patient.DFN, UpperCase(ID)]);
+  Result := RPCBrokerV.Results;
+end;
+
+function MedAdminHistory(OrderID: string): TStrings;
+begin
+  CallV('ORWPS MEDHIST', [Patient.DFN, OrderID]);
+  Result := RPCBrokerV.Results;
+end;
+
+function MedStatusGroup(const s: string): Integer;
+const
+  MG_ACTIVE  = '^ACTIVE^REFILL^HOLD^SUSPENDED^PROVIDER HOLD^ON CALL^';
+  MG_PENDING = '^NON-VERIFIED^DRUG INTERACTIONS^INCOMPLETE^PENDING^';
+  MG_NONACT  = '^DONE^EXPIRED^DISCONTINUED^DELETED^DISCONTINUED BY PROVIDER' +
+               '^DISCONTINUED (EDIT)^REINSTATED^RENEWED^';
+begin
+  Result := MED_ACTIVE;
+  if Pos(U+UpperCase(s)+U, MG_PENDING) > 0 then Result := MED_PENDING;
+  if Pos(U+UpperCase(s)+U, MG_NONACT)  > 0 then Result := MED_NONACTIVE;
+end;
+
+procedure SetMedFields(AMed: TMedListRec; const x, y: string);
+{          1     2      3     4       5     6       7       8        9      10     11
+{ Pieces: Typ^PharmID^Drug^InfRate^StopDt^RefRem^TotDose^UnitDose^OrderID^Status^LastFill  }
+begin
+  with AMed do
+  begin
+    PharmID   := Piece(x, U, 2);
+    OrderID   := Piece(x, U, 9);
+    Instruct  := TrimRight(y);
+    StopDate  := MakeFMDateTime(Piece(x, U, 5));
+    Status    := MixedCase(Piece(x, U, 10));
+    Refills   := Piece(x, U, 6);
+   if ( Piece(Piece(x, U, 2), ';', 2) = 'I' )
+       or (Piece(Piece(x, U, 2), ';', 2) = 'C') then
+         Inpatient := True
+     else
+       Inpatient := False;
+    NonVAMed  := Piece(x, U, 1) = '~NV';
+    if NonVAMed then
+        Instruct := 'Non-VA  ' + Instruct;
+    IVFluid   := Piece(x, U, 1) = '~IV';
+    SrvSeq    := 0;
+    LastFill  := MakeFMDateTime(Piece(x, U, 11));
+    Location  := Piece(Piece(x,U,1),':',2);
+    //LocationID := StrToIntDef(Piece(Piece(x,U,1),':',3),0);
+  end;
+end;
+
+function ByStatusThenStop(Item1, Item2: Pointer): Integer;
+{ < 0 if Item1 is less and Item2, 0 if they are equal and > 0 if Item1 is greater than Item2 }
+var
+  Status1, Status2: Integer;
+  loc1, loc2: string;
+  Med1, Med2: TMedListRec;
+begin
+  Med1 := TMedListRec(Item1);
+  Med2 := TMedListRec(Item2);
+  loc1 := Med1.Location;
+  loc2 := Med2.Location;
+  Status1 := MedStatusGroup(Med1.Status);
+  Status2 := MedStatusGroup(Med2.Status);
+  if ( compareText(loc1,loc2)>0 ) then Result := -1
+  else if ( compareText(loc1,loc2)<0 ) then Result := 1
+  else if Status1 < Status2 then Result := -1
+  else if Status1 > Status2 then Result := 1
+  else if Med1.StopDate > Med2.StopDate then Result := -1
+  else if Med1.StopDate < Med2.StopDate then Result := 1
+  else if Med1.SrvSeq < Med2.SrvSeq then Result := -1
+  else if Med1.SrvSeq > Med2.SrvSeq then Result := 1
+  else Result := 0;
+end;
+
+function ByStatusThenLocation(Item1, Item2: Pointer): Integer;
+{ < 0 if Item1 is less and Item2, 0 if they are equal and > 0 if Item1 is greater than Item2 }
+var
+  //Status1, Status2: Integer;
+  loc1, loc2: string;
+  Med1, Med2: TMedListRec;
+begin
+  Med1 := TMedListRec(Item1);
+  Med2 := TMedListRec(Item2);
+  loc1 := Med1.Location;
+  loc2 := Med2.Location;
+  //Status1 := MedStatusGroup(Med1.Status);
+  //Status2 := MedStatusGroup(Med2.Status);
+  if (compareText(Med1.Status,Med2.Status) >0) then Result := 1
+  else if (compareText(Med1.Status,Med2.Status) <0) then Result := -1
+  else if ( compareText(loc1,loc2)>0 ) then Result := -1
+  else if ( compareText(loc1,loc2)<0 ) then Result := 1
+  else if (compareText(Med1.Drug,Med2.Drug) >0) then Result := 1
+  else if (compareText(Med1.Drug,Med2.Drug) <0) then Result := -1
+  //else if Med1.StopDate > Med2.StopDate then Result := -1
+  //else if Med1.StopDate < Med2.StopDate then Result := 1
+  //else if Med1.SrvSeq < Med2.SrvSeq then Result := -1
+  //else if Med1.SrvSeq > Med2.SrvSeq then Result := 1
+  else Result := 0;
+end;
+
+procedure LoadActiveMedLists(InPtMeds, OutPtMeds, NonVAMeds: TList; var view: integer);
+var
+  idx, ASeq: Integer;
+  x, y: string;
+  ClinMeds, tmpInPtMeds: TList;
+  AMed: TMedListRec;
+begin
+  //Check for CQ 9814 this should prevent an M error is DFn is not defined.
+  if patient=nil then exit;
+  if patient.DFN='' then exit;
+  ClinMeds := TList.Create;           //IMO new
+  tmpInPtMeds := TList.Create;        //IMO new
+  ClearMedList(InPtMeds);
+  ClearMedList(OutPtMeds);
+  ClearMedList(NonVAMeds);
+  CallV('ORWPS ACTIVE', [Patient.DFN, User.DUZ, view, True]);
+  ASeq := 0;
+  if (view = 0) and (RPCBrokerV.Results.Count > 0) then
+    view := StrToIntDef(RPCBrokerV.Results.Strings[0],0);
+  with RPCBrokerV do while Results.Count > 0 do
+  begin
+    x := Results[0];
+    Results.Delete(0);
+    if CharAt(x, 1) <> '~' then Continue;        // only happens if out of synch
+    y := '';
+    while (Results.Count > 0) and (CharAt(Results[0], 1) <> '~') do
+    begin
+      if CharAt(Results[0], 1) = '\' then y := y + CRLF;
+      y := y + Copy(Results[0], 2, Length(Results[0])) + ' ';
+      Results.Delete(0);
+    end;
+    AMed := TMedListRec.Create;
+    SetMedFields(AMed, x, y);
+    Inc(ASeq);
+    AMed.SrvSeq := ASeq;
+    if (AMed.Inpatient) then
+    begin
+      tmpInPtMeds.Add(AMed);
+      //if (Copy(x,2,2)='CP') then tmpInPtMeds.Add(AMed);
+     // if (Copy(x,2,2)='CP') and ((view = 2) or (view = 0)) then ClinMeds.Add(AMed)
+     // else tmpInPtMeds.Add(AMed);
+    end
+    else
+    if  AMed.NonVAMed then
+        NonVAMeds.Add(AMed)
+    else
+       OutPtMeds.Add(AMed);
+  end;
+ // 12-4 if view <> 1 then ClinMeds.Sort(ByStatusThenStop);
+ // 12-4 if view = 1 then tmpInPtMeds.Sort(ByStatusThenLocation)
+ // 12-4 else tmpInPtMeds.Sort(ByStatusThenStop);
+  //tmpInPtMeds.Sort(ByStatusThenStop);                           //IMO
+ //12-4 if view <> 1 then InPtMeds.Assign(ClinMeds);
+  for idx := 0 to tmpInPtMeds.Count - 1 do
+    InPtMeds.Add(TMedListRec(tmpInPtMeds.Items[idx]));
+  //if view <> 1 then OutPtMeds.Sort(ByStatusThenStop)
+  //else OutPtMeds.Sort(ByStatusThenLocation);
+ //12-4 if view <> 1 then NonVAMeds.Sort(ByStatusThenStop)
+ //12-4 else NonVAMeds.Sort(ByStatusThenLocation);
+  if Assigned(ClinMeds) then FreeAndNil(ClinMeds);
+  if Assigned(tmpInPtMeds) then FreeAndNil(tmpInPtMeds);
+end;
+
+function GetNewDialog: string;
+{ get dialog for new medications depending on patient being inpatient or outpatient }
+begin
+  Result := sCallV('ORWPS1 NEWDLG', [Patient.Inpatient]);
+end;
+
+function PickUpDefault: string;
+{ returns 'C', 'W', or 'M' for location to pickup refill }
+begin
+  Result := sCallV('ORWPS1 PICKUP', [nil]);
+end;
+
+procedure Refill(AnOrderID, PickUpAt: string);
+{ sends request for refill to pharmacy }
+begin
+  CallV('ORWPS1 REFILL', [AnOrderID, PickUpAt, Patient.DFN, Encounter.Provider, Encounter.Location]);
+end;
+
+function IsFirstDoseNowOrder(OrderID: string): boolean;
+begin
+  Result := SCallV('ORWDXR ISNOW',[OrderID])= '1';
+end;
+
+function GetMedStatus(MedID: TStringList): boolean;
+begin
+ Result := SCallV('ORWDX1 STCHANGE',[Patient.DFN, MedID])= '1';
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rMisc.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rMisc.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rMisc.pas	(revision 1676)
@@ -0,0 +1,433 @@
+unit rMisc;
+
+interface
+
+uses SysUtils, Windows, Classes, Forms, Controls, ComCtrls, Grids, ORFn, ORNet;
+
+const
+  MAX_TOOLITEMS = 30;
+
+type
+  TToolItem = record
+    Caption: string;
+    Action: string;
+  end;
+
+  TToolItemList = array[0..MAX_TOOLITEMS] of TToolItem;
+
+  {An Object of this Class is Created to Hold the Sizes of Controls(Forms)
+   while the app is running, thus reducing calls to RPCs SAVESIZ and LOADSIZ}
+  TSizeHolder = class(TObject)
+  private
+    FSizeList,FNameList: TStringList;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function GetSize(AName: String): String;
+    procedure SetSize(AName,ASize: String);
+    procedure AddSizesToStrList(theList: TStringList);
+  end;
+
+function DetailPrimaryCare(const DFN: string): TStrings;  //*DFN*
+procedure GetToolMenu(var ToolItems: TToolItemList; var OverLimit: boolean);
+procedure ListSymbolTable(Dest: TStrings);
+function MScalar(const x: string): string;
+procedure SetShareNode(const DFN: string; AHandle: HWND);  //*DFN*
+function ServerHasPatch(const x: string): Boolean;
+function ServerVersion(const Option, VerClient: string): string;
+function PackageVersion(const Namespace: string): string;
+
+procedure SaveUserBounds(AControl: TControl);
+procedure SaveUserSizes(SizingList: TStringList);
+procedure SetFormPosition(AForm: TForm);
+procedure SetUserBounds(var AControl: TControl);
+procedure SetUserBounds2(AName: string; var v1, v2, v3, v4: integer);
+procedure SetUserWidths(var AControl: TControl);
+procedure SetUserColumns(var AControl: TControl);
+function StrUserBounds(AControl: TControl): string;
+function StrUserBounds2(AName: string; v1, v2, v3, v4: integer): string;
+function StrUserWidth(AControl: TControl): string;
+function StrUserColumns(AControl: TControl): string;
+function UserFontSize: integer;
+procedure SaveUserFontSize( FontSize: integer);
+
+var
+  SizeHolder : TSizeHolder;
+
+implementation
+
+uses TRPCB, fOrders, math;
+
+var
+  uBounds, uWidths, uColumns: TStringList;
+
+function DetailPrimaryCare(const DFN: string): TStrings;  //*DFN*
+begin
+  CallV('ORWPT1 PCDETAIL', [DFN]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure GetToolMenu(var ToolItems: TToolItemList; var OverLimit: boolean);
+var
+  i: Integer;
+  x: string;
+  LoopIndex: integer;
+begin
+  for i := 0 to MAX_TOOLITEMS do with ToolItems[i] do
+  begin
+    Caption := '';
+    Action := '';
+  end;
+  CallV('ORWU TOOLMENU', [nil]);
+  OverLimit := (MAX_TOOLITEMS < RPCBrokerV.Results.Count - 1);
+  LoopIndex := Min(MAX_TOOLITEMS, RPCBrokerV.Results.Count - 1);
+  with RPCBrokerV do for i := 0 to LoopIndex do with ToolItems[i] do
+  begin
+    x := Piece(Results[i], U, 1);
+    Caption := Piece(x, '=', 1);
+    Action := Copy(x, Pos('=', x) + 1, Length(x));
+  end;
+end;
+
+procedure ListSymbolTable(Dest: TStrings);
+var
+  i: Integer;
+  x: string;
+begin
+  Dest.Clear;
+  CallV('ORWUX SYMTAB', [nil]);
+  i := 0;
+  with RPCBrokerV.Results do while i < Count do
+  begin
+    x := Strings[i] + '=';
+    Inc(i);
+    if i < Count then x := x + Strings[i];
+    Dest.Add(x);
+    Inc(i);
+  end;
+end;
+
+function MScalar(const x: string): string;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'XWB GET VARIABLE VALUE';
+    Param[0].Value := x;
+    Param[0].PType := reference;
+    CallBroker;
+    Result := Results[0];
+  end;
+end;
+
+function ServerHasPatch(const x: string): Boolean;
+begin
+  Result := sCallV('ORWU PATCH', [x]) = '1';
+end;
+
+function ServerVersion(const Option, VerClient: string): string;
+begin
+  Result := sCallV('ORWU VERSRV', [Option, VerClient]);
+end;
+
+function PackageVersion(const Namespace: string): string;
+begin
+  Result := sCallV('ORWU VERSION', [Namespace]);
+end;
+
+function UserFontSize: integer;
+begin
+  Result := StrToIntDef(sCallV('ORWCH LDFONT', [nil]),8);
+  If Result = 24 then Result := 18; // CQ #12322 removed 24 pt font
+end;
+
+procedure LoadSizes;
+var
+  i, p: Integer;
+begin
+  uBounds  := TStringList.Create;
+  uWidths  := TStringList.Create;
+  uColumns := TStringList.Create;
+  CallV('ORWCH LOADALL', [nil]);
+  with RPCBrokerV do
+  begin
+    for i := 0 to Results.Count - 1 do    // change '^' to '='
+    begin
+      p := Pos(U, Results[i]);
+      if p > 0 then Results[i] := Copy(Results[i], 1, p - 1) + '=' +
+                                  Copy(Results[i], p + 1, Length(Results[i]));
+    end;
+    ExtractItems(uBounds,  RPCBrokerV.Results, 'Bounds');
+    ExtractItems(uWidths,  RPCBrokerV.Results, 'Widths');
+    ExtractItems(uColumns, RPCBrokerV.Results, 'Columns');
+  end;
+end;
+
+procedure SetShareNode(const DFN: string; AHandle: HWND);  //*DFN*
+begin
+  // sets node that allows other apps to see which patient is currently selected
+  sCallV('ORWPT SHARE', [DottedIPStr, IntToHex(AHandle, 8), DFN]);
+end;
+
+procedure SetUserBounds(var AControl: TControl);
+var
+  x: string;
+begin
+  if uBounds = nil then LoadSizes;
+  x := AControl.Name;
+  if not (AControl is TForm) and (Assigned(AControl.Owner)) then x := AControl.Owner.Name + '.' + x;
+  x := uBounds.Values[x];
+  if (x = '0,0,0,0') and (AControl is TForm)
+    then TForm(AControl).WindowState := wsMaximized
+    else
+    begin
+      AControl.Left   := HigherOf(StrToIntDef(Piece(x, ',', 1), AControl.Left), 0);
+      AControl.Top    := HigherOf(StrToIntDef(Piece(x, ',', 2), AControl.Top), 0);
+      if Assigned( AControl.Parent ) then
+      begin
+        AControl.Width  := LowerOf(StrToIntDef(Piece(x, ',', 3), AControl.Width), AControl.Parent.Width - AControl.Left);
+        AControl.Height := LowerOf(StrToIntDef(Piece(x, ',', 4), AControl.Height), AControl.Parent.Height - AControl.Top);
+      end
+      else
+      begin
+        AControl.Width  := StrToIntDef(Piece(x, ',', 3), AControl.Width);
+        AControl.Height := StrToIntDef(Piece(x, ',', 4), AControl.Height);
+      end;
+    end;
+  //if (x = '0,0,' + IntToStr(Screen.Width) + ',' + IntToStr(Screen.Height)) and
+  //  (AControl is TForm) then TForm(AControl).WindowState := wsMaximized;
+end;
+
+procedure SetUserBounds2(AName: string; var v1, v2, v3, v4: integer);
+var
+  x: string;
+begin
+  if uBounds = nil then LoadSizes;
+  x := uBounds.Values[AName];
+  v1 := StrToIntDef(Piece(x, ',', 1), 0);
+  v2 := StrToIntDef(Piece(x, ',', 2), 0);
+  v3 := StrToIntDef(Piece(x, ',', 3), 0);
+  v4 := StrToIntDef(Piece(x, ',', 4), 0);
+end;
+
+
+procedure SetUserWidths(var AControl: TControl);
+var
+  x: string;
+begin
+  if uWidths = nil then LoadSizes;
+  x := AControl.Name;
+  if not (AControl is TForm) and (Assigned(AControl.Owner)) then x := AControl.Owner.Name + '.' + x;
+  x := uWidths.Values[x];
+  if Assigned (AControl.Parent) then
+    AControl.Width := LowerOf(StrToIntDef(x, AControl.Width), AControl.Parent.Width - AControl.Left)
+  else
+    AControl.Width := StrToIntDef(x, AControl.Width);
+end;
+
+procedure SetUserColumns(var AControl: TControl);
+var
+  x: string;
+  i, AWidth: Integer;
+  couldSet: boolean;
+begin
+  couldSet := False;
+  if uColumns = nil then LoadSizes;
+  x := AControl.Name;
+  if not (AControl is TForm) and (Assigned(AControl.Owner)) then x := AControl.Owner.Name + '.' + x;
+  if AnsiCompareText(x,'frmOrders.hdrOrders')=0 then
+    couldSet := True;
+  x := uColumns.Values[x];
+  if AControl is THeaderControl then with THeaderControl(AControl) do
+    for i := 0 to Sections.Count - 1 do
+    begin
+      //Make sure all of the colmumns fit, even if it means scrunching the last ones.
+      AWidth := LowerOf(StrToIntDef(Piece(x, ',', i + 1), 0), HigherOf(ClientWidth - (Sections.Count - i)*5 - Sections.Items[i].Left, 5));
+      if AWidth > 0 then Sections.Items[i].Width := AWidth;
+      if couldSet and (i=0) and (AWidth>0) then
+        frmOrders.EvtColWidth := AWidth;
+    end;
+  if AControl is TCustomGrid then {nothing for now};
+end;
+
+procedure SaveUserBounds(AControl: TControl);
+var
+  x: string;
+begin
+  if (AControl is TForm) and (TForm(AControl).WindowState = wsMaximized) then
+    x := '0,0,0,0'
+  else
+    with AControl do
+      x := IntToStr(Left) + ',' + IntToStr(Top) + ',' +
+           IntToStr(Width) + ',' + IntToStr(Height);
+//  CallV('ORWCH SAVESIZ', [AControl.Name, x]);
+  SizeHolder.SetSize(AControl.Name, x);
+end;
+
+procedure SaveUserSizes(SizingList: TStringList);
+begin
+  CallV('ORWCH SAVEALL', [SizingList]);
+end;
+
+procedure SaveUserFontSize( FontSize: integer);
+begin
+  CallV('ORWCH SAVFONT', [IntToStr(FontSize)]);
+end;
+
+procedure SetFormPosition(AForm: TForm);
+var
+  x: string;
+  Rect: TRect;
+begin
+//  x := sCallV('ORWCH LOADSIZ', [AForm.Name]);
+  x := SizeHolder.GetSize(AForm.Name);
+  if x = '' then Exit; // allow default bounds to be passed in, else screen center?
+  if (x = '0,0,0,0') then
+    AForm.WindowState := wsMaximized
+  else
+  begin
+    AForm.SetBounds(StrToIntDef(Piece(x, ',', 1), AForm.Left),
+                    StrToIntDef(Piece(x, ',', 2), AForm.Top),
+                    StrToIntDef(Piece(x, ',', 3), AForm.Width),
+                    StrToIntDef(Piece(x, ',', 4), AForm.Height));
+    Rect := AForm.BoundsRect;
+    ForceInsideWorkArea(Rect);
+    AForm.BoundsRect := Rect;
+  end;
+end;
+
+function StrUserBounds(AControl: TControl): string;
+var
+  x: string;
+begin
+  x := AControl.Name;
+  if not (AControl is TForm) and (Assigned(AControl.Owner)) then x := AControl.Owner.Name + '.' + x;
+  with AControl do Result := 'B' + U + x + U + IntToStr(Left) + ',' + IntToStr(Top) + ',' +
+                                               IntToStr(Width) + ',' + IntToStr(Height);
+  if (AControl is TForm) and (TForm(AControl).WindowState = wsMaximized)
+    then Result := 'B' + U + x + U + '0,0,0,0';
+end;
+
+function StrUserBounds2(AName: string; v1, v2, v3, v4: integer): string;
+begin
+  Result := 'B' + U + AName + U + IntToStr(v1) + ',' + IntToStr(v2) + ',' +
+                                  IntToStr(v3) + ',' + IntToStr(v4);
+end;
+
+function StrUserWidth(AControl: TControl): string;
+var
+  x: string;
+begin
+  x := AControl.Name;
+  if not (AControl is TForm) and (Assigned(AControl.Owner)) then x := AControl.Owner.Name + '.' + x;
+  with AControl do Result := 'W' + U + x + U + IntToStr(Width);
+end;
+
+function StrUserColumns(AControl: TControl): string;
+var
+  x: string;
+  i: Integer;
+  shouldSave: boolean;
+begin
+  shouldSave := False;
+  x := AControl.Name;
+  if not (AControl is TForm) and (Assigned(AControl.Owner)) then x := AControl.Owner.Name + '.' + x;
+  if AnsiCompareText(x,'frmOrders.hdrOrders') = 0 then
+    shouldSave := True;
+  Result := 'C' + U + x + U;
+  if AControl is THeaderControl then with THeaderControl(AControl) do
+    for i := 0 to Sections.Count - 1 do
+    begin
+      if shouldSave and (i = 0) then
+        Result := Result + IntToStr(frmOrders.EvtColWidth) + ','
+      else
+        Result := Result + IntToStr(Sections.Items[i].Width) + ',';
+    end;
+  if AControl is TCustomGrid then {nothing for now};
+  if CharAt(Result, Length(Result)) = ',' then Result := Copy(Result, 1, Length(Result) - 1);
+end;
+
+{ TSizeHolder }
+
+procedure TSizeHolder.AddSizesToStrList(theList: TStringList);
+{Adds all the Sizes in the TSizeHolder Object to theList String list parameter}
+var
+  i: integer;
+begin
+  for i := 0 to FNameList.Count-1 do begin
+    if Piece(FNameList[i],U,1) = 'C' then
+      theList.Add(FNameList[i] + U + FSizeList[i])
+    else
+      theList.Add('B' + U + FNameList[i] + U + FSizeList[i]);
+  end;
+end;
+
+constructor TSizeHolder.Create;
+begin
+  inherited;
+  FNameList := TStringList.Create;
+  FSizeList := TStringList.Create;
+end;
+
+
+destructor TSizeHolder.Destroy;
+begin
+  FNameList.Free;
+  FSizeList.Free;
+  inherited;
+end;
+
+function TSizeHolder.GetSize(AName: String): String;
+{Fuctions returns a String of the Size(s) Of the Name parameter passed,
+ if the Size(s) are already loaded into the object it will return those,
+ otherwise it will make the apropriate RPC call to LOADSIZ}
+var
+  rSizeVal: String; //return Size value
+  nameIndex: integer;
+begin
+  rSizeVal := '';
+  nameIndex := FNameList.IndexOf(AName);
+  if nameIndex = -1 then //Currently Not in the NameList
+  begin
+    rSizeVal := sCallV('ORWCH LOADSIZ', [AName]);
+    if rSizeVal <> '' then
+    begin
+      FNameList.Add(AName);
+      FSizeList.Add(rSizeVal);
+    end;
+  end
+  else //Currently is in the NameList
+    rSizeVal := FSizeList[nameIndex];
+  if (rSizeVal = '') and (Piece(AName,U,1) = 'C') then begin
+    if not Assigned(uColumns) then LoadSizes;
+    rSizeVal := uColumns.Values[Piece(AName,U,2)];
+  end;
+  result := rSizeVal;
+end;
+
+procedure TSizeHolder.SetSize(AName, ASize: String);
+{Store the Size(s) Of the ASize parameter passed, Associate it with the AName
+ Parameter. This only stores the sizes in the objects member variables.
+ to Store on the MUMPS Database call SendSizesToDB()}
+var
+  nameIndex: integer;
+begin
+  nameIndex := FNameList.IndexOf(AName);
+  if nameIndex = -1 then //Currently Not in the NameList
+  begin
+    FNameList.Add(AName);
+    FSizeList.Add(ASize);
+  end
+  else //Currently is in the NameList
+    FSizeList[nameIndex] := ASize;
+end;
+
+initialization
+  // nothing for now
+
+finalization
+  if uBounds  <> nil then uBounds.Free;
+  if uWidths  <> nil then uWidths.Free;
+  if uColumns <> nil then uColumns.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rProbs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rProbs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rProbs.pas	(revision 1676)
@@ -0,0 +1,201 @@
+unit rProbs;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, uCore;
+
+function AddSave(PatientInfo: string; ProviderID: int64; ptVAMC: string;
+           ProbFile: TStringList): TStrings ;
+function AuditHistory(ProblemIFN: string): TStrings ;
+function ClinicFilterList(LocList: TStringList): TStrings ;
+function ClinicSearch(DummyArg:string): TStrings ;
+function ProblemDelete(ProblemIFN: string; ProviderID: int64; ptVAMC, Comment: string): TStrings ;
+{function ProblemDetail}
+function EditLoad(ProblemIFN: string; ProviderID: int64; ptVAMC: string): TStrings ;
+function EditSave(ProblemIFN: string; ProviderID: int64; ptVAMC, PrimUser: string;
+           ProbFile: TStringList): TStrings ;
+function InitPt(const PatientDFN: string): TStrings ;  //*DFN*
+function InitUser(ProviderID: int64): TStrings ;
+function PatientProviders(const PatientDFN: string): TStrings ;  //*DFN*
+function ProblemList(const PatientDFN: string; Status:string): TStrings ;  //*DFN*
+function OldProblemLexiconSearch(SearchFor: string; Matches: integer; ADate: TFMDateTime = 0): TStrings ;
+function ProblemLexiconCodeSearch(LexIEN: string; CodeType: string; ADate: TFMDateTime = 0): string ;
+function ProblemLexiconSearch(SearchFor: string; View: string; ADate: TFMDateTime = 0): TStrings ;
+function ProviderFilterList(ProvList: TStringList): TStrings ;
+function ProviderList(Flag:string; Number:integer; From,Part: string): TStrings ;
+function ProblemReplace(ProblemIFN: string): TStrings ;
+function ServiceFilterList(LocList: TStringList): TStrings ;
+function ServiceSearch(const StartFrom: string; Direction: Integer; All: boolean = FALSE): TStrings;
+function ProblemUpdate(AltProbFile: TStringList): TStrings ;
+function UserProblemCategories(Provider: int64; Location: integer): TStrings ;
+function UserProblemList(CategoryIEN: string): TStrings ;
+function ProblemVerify(ProblemIFN: string): TStrings ;
+function GetProblemComments(ProblemIFN: string): TStrings;
+procedure SaveViewPreferences(ViewPref: string);
+function CheckForDuplicateProblem(TermIEN, TermText: string): string;
+
+implementation
+
+function AddSave(PatientInfo: string; ProviderID: int64; ptVAMC: string;
+           ProbFile: TStringList): TStrings ;
+begin
+   CallV('ORQQPL ADD SAVE',[PatientInfo, ProviderID, ptVAMC, ProbFile]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function AuditHistory(ProblemIFN: string): TStrings ;
+begin
+   CallV('ORQQPL AUDIT HIST',[ProblemIFN]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ClinicFilterList(LocList: TStringList): TStrings ;
+begin
+   CallV('ORQQPL CLIN FILTER LIST',[LocList]);
+   MixedCaseList(RPCBrokerV.Results) ;
+   Result := RPCBrokerV.Results;
+end ;
+
+function ClinicSearch(DummyArg:string): TStrings ;
+begin
+   CallV('ORQQPL CLIN SRCH',[DummyArg]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemDelete(ProblemIFN: string; ProviderID: int64; ptVAMC, Comment: string): TStrings ;
+begin
+   CallV('ORQQPL DELETE',[ProblemIFN, ProviderID, ptVAMC, Comment]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function EditLoad(ProblemIFN: string; ProviderID: int64; ptVAMC: string): TStrings ;
+begin
+   CallV('ORQQPL EDIT LOAD',[ProblemIFN, ProviderID, ptVAMC]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function EditSave(ProblemIFN: string; ProviderID: int64; ptVAMC, PrimUser: string;
+           ProbFile: TStringList): TStrings ;
+begin
+   CallV('ORQQPL EDIT SAVE',[ProblemIFN, ProviderID, ptVAMC, PrimUser, ProbFile]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function InitPt(const PatientDFN: string): TStrings ;  //*DFN*
+begin
+   CallV('ORQQPL INIT PT',[PatientDFN]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function InitUser(ProviderID: int64): TStrings ;
+begin
+   CallV('ORQQPL INIT USER',[ProviderID]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function PatientProviders(const PatientDFN: string): TStrings ;  //*DFN*
+begin
+   CallV('ORQPT PATIENT TEAM PROVIDERS',[PatientDFN]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemLexiconSearch(SearchFor: string; View: string; ADate: TFMDateTime = 0): TStrings ;
+begin
+   CallV('ORWPCE LEX',[SearchFor,View, ADate]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemLexiconCodeSearch(LexIEN: string; CodeType: string; ADate: TFMDateTime = 0): string ;
+begin
+   CallV('ORWPCE LEXCODE',[LexIEN, CodeType, ADate]);
+   Result := RPCBrokerV.Results[0] ;
+end ;
+
+function OldProblemLexiconSearch(SearchFor: string; Matches: integer; ADate: TFMDateTime = 0): TStrings ;
+const
+  VIEW = '';
+begin
+   CallV('ORQQPL PROBLEM LEX SEARCH',[SearchFor, Matches, VIEW, ADate]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemList(const PatientDFN: string; Status:string): TStrings ;  //*DFN*
+begin
+   CallV('ORQQPL PROBLEM LIST',[PatientDFN, status]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProviderFilterList(ProvList: TStringList): TStrings ;
+begin
+   CallV('ORQQPL PROV FILTER LIST',[ProvList]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProviderList(Flag:string; Number:integer; From,Part: string): TStrings ;
+begin
+   CallV('ORQQPL PROVIDER LIST',[Flag,Number,From,Part]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemReplace(ProblemIFN: string): TStrings ;
+begin
+   CallV('ORQQPL REPLACE',[ProblemIFN]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ServiceFilterList(LocList: TStringList): TStrings ;
+begin
+   CallV('ORQQPL SERV FILTER LIST',[LocList]);
+   MixedCaseList(RPCBrokerV.Results) ;
+   Result := RPCBrokerV.Results;
+end ;
+
+function ServiceSearch(const StartFrom: string; Direction: Integer; All: boolean = FALSE): TStrings;
+begin
+   CallV('ORQQPL SRVC SRCH',[StartFrom, Direction, BoolChar[All]]);
+   MixedCaseList(RPCBrokerV.Results) ;
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemUpdate(AltProbFile: TStringList): TStrings ;
+begin
+   CallV('ORQQPL UPDATE',[AltProbFile]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function ProblemVerify(ProblemIFN: string): TStrings ;
+begin
+   CallV('ORQQPL VERIFY',[ProblemIFN]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function UserProblemCategories(Provider: int64; Location: integer): TStrings ;
+begin
+   CallV('ORQQPL USER PROB CATS',[Provider, Location]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function UserProblemList(CategoryIEN: string): TStrings ;
+begin
+   CallV('ORQQPL USER PROB LIST',[CategoryIEN]);
+   Result := RPCBrokerV.Results ;
+end ;
+
+function GetProblemComments(ProblemIFN: string): TStrings;
+begin
+   CallV('ORQQPL PROB COMMENTS',[ProblemIFN]);
+   Result := RPCBrokerV.Results ;
+end;
+
+procedure SaveViewPreferences(ViewPref: string);
+begin
+  CallV('ORQQPL SAVEVIEW',[ViewPref]);
+end;
+
+function CheckForDuplicateProblem(TermIEN, TermText: string): string;
+begin
+  CallV('ORQQPL CHECK DUP',[Patient.DFN, TermIEN, TermText]);
+  Result := RPCBrokerV.Results[0];
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rReminders.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rReminders.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rReminders.pas	(revision 1676)
@@ -0,0 +1,539 @@
+unit rReminders;
+
+interface
+uses
+  Windows,Classes, SysUtils, TRPCB, ORNet, ORFn, fMHTest, StrUtils;
+
+type
+  TMHdllFound = record
+  DllCheck: boolean;
+  DllFound: boolean;
+end;
+
+procedure GetCurrentReminders;
+procedure GetOtherReminders(Dest: TStrings);
+procedure EvaluateReminders(RemList: TStringList);
+function EvaluateReminder(IEN: string): string;
+procedure GetEducationTopicsForReminder(ReminderID: integer);
+procedure GetEducationSubtopics(TopicID: integer);
+procedure GetReminderWebPages(ReminderID: string);
+function DetailReminder(IEN: Integer): TStrings;
+function ReminderInquiry(IEN: Integer): TStrings;
+function EducationTopicDetail(IEN: Integer): TStrings;
+function GetDialogInfo(IEN: string; RemIEN: boolean): TStrings;
+function GetDialogPrompts(IEN: string; Historical: boolean; FindingType: string): TStrings;
+procedure GetDialogStatus(AList: TStringList);
+function GetRemindersActive: boolean;
+function GetProgressNoteHeader: string;
+function LoadMentalHealthTest(TestName: string): TStrings;
+procedure MentalHealthTestResults(var AText: string; const DlgIEN: string; const TestName:
+                                  string; const AProvider: Int64; const Answers: string);
+procedure SaveMentalHealthTest(const TestName: string; ADate: TFMDateTime;
+                               const AProvider: Int64; const Answers: string);
+procedure SaveWomenHealthData(var WHData: TStringlist);
+function CheckGECValue(const RemIEN: string; NoteIEN: integer): String;
+procedure SaveMSTDataFromReminder(VDate, Sts, Prov, FType, FIEN, Res: string);
+
+function GetReminderFolders: string;
+procedure SetReminderFolders(const Value: string);
+function GetDefLocations: TStrings;
+function InsertRemTextAtCursor: boolean;
+
+function NewRemCoverSheetListActive: boolean;
+function CanEditAllRemCoverSheetLists: boolean;
+function GetCoverSheetLevelData(ALevel, AClass: string): TStrings;
+procedure SetCoverSheetLevelData(ALevel, AClass: string; Data: TStrings);
+function GetCategoryItems(CatIEN: integer): TStrings;
+function GetAllRemindersAndCategories: TStrings;
+function VerifyMentalHealthTestComplete(TestName, Answers: string): String;
+function MHDLLFound: boolean;
+function UsedMHDllRPC: boolean;
+procedure PopulateMHdll;
+procedure GetMHResultText(var AText: string; ResultsGroups, Scores: TStringList);
+
+
+implementation
+
+uses
+  uCore, uReminders, rCore;
+
+var
+  uLastDefLocUser: int64 = -1;
+  uDefLocs: TStringList = nil;
+  uRemInsertAtCursor: integer = -1;
+  uNewCoverSheetListActive: integer = -1;
+  uCanEditAllCoverSheetLists: integer = -1;
+  MHDLL: TMHDllFound;
+
+procedure GetCurrentReminders;
+begin
+  CallV('ORQQPXRM REMINDERS UNEVALUATED', [Patient.DFN, Encounter.Location]);
+end;
+
+procedure GetOtherReminders(Dest: TStrings);
+begin
+  CallV('ORQQPXRM REMINDER CATEGORIES', [Patient.DFN, Encounter.Location]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure EvaluateReminders(RemList: TStringList);
+var
+  i: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORQQPXRM REMINDER EVALUATION';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;
+    Param[1].PType := list;
+    for i := 0 to RemList.Count-1 do
+      Param[1].Mult[IntToStr(i+1)] := Piece(RemList[i],U,1);
+    CallBroker;
+  end;
+end;
+
+function EvaluateReminder(IEN: string): string;
+var
+  TmpSL: TStringList;
+
+begin
+  TmpSL := TStringList.Create;
+  try
+    TmpSL.Add(IEN);
+    EvaluateReminders(TmpSL);
+    if(RPCBrokerV.Results.Count > 0) then
+      Result := RPCBrokerV.Results[0]
+    else
+      Result := IEN;
+  finally
+    TmpSL.Free;
+  end;
+end;
+
+procedure GetEducationTopicsForReminder(ReminderID: integer);
+begin
+  CallV('ORQQPXRM EDUCATION SUMMARY', [ReminderID]);
+end;
+
+procedure GetEducationSubtopics(TopicID: integer);
+begin
+  CallV('ORQQPXRM EDUCATION SUBTOPICS', [TopicID]);
+end;
+
+procedure GetReminderWebPages(ReminderID: string);
+begin
+  if(User.WebAccess) then
+    CallV('ORQQPXRM REMINDER WEB', [ReminderID])
+  else
+    RPCBrokerV.ClearParameters := True;
+end;
+
+function DetailReminder(IEN: Integer): TStrings; // Clinical Maintenance
+begin
+  if InteractiveRemindersActive then
+    CallV('ORQQPXRM REMINDER DETAIL', [Patient.DFN, IEN])
+  else
+    CallV('ORQQPX REMINDER DETAIL', [Patient.DFN, IEN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function ReminderInquiry(IEN: Integer): TStrings;
+begin
+  CallV('ORQQPXRM REMINDER INQUIRY', [IEN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function EducationTopicDetail(IEN: Integer): TStrings;
+begin
+  CallV('ORQQPXRM EDUCATION TOPIC', [IEN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetDialogInfo(IEN: string; RemIEN: boolean): TStrings;
+begin
+     if RemIEN then
+        CallV('ORQQPXRM REMINDER DIALOG', [IEN, Patient.DFN])
+     else
+        CallV('PXRM REMINDER DIALOG (TIU)', [IEN, Patient.DFN]);
+     Result := RPCBrokerV.Results;
+end;
+
+function GetDialogPrompts(IEN: string; Historical: boolean; FindingType: string): TStrings;
+begin
+  CallV('ORQQPXRM DIALOG PROMPTS', [IEN, Historical, FindingType]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure GetDialogStatus(AList: TStringList);
+var
+  i: integer;
+
+begin
+  if(Alist.Count = 0) then exit;
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORQQPXRM DIALOG ACTIVE';
+    Param[0].PType := list;
+    for i := 0 to AList.Count-1 do
+      Param[0].Mult[AList[i]] := '';
+    CallBroker;
+    FastAssign(Results, AList);
+  end;
+end;
+
+function GetRemindersActive: boolean;
+begin
+  CallV('ORQQPX NEW REMINDERS ACTIVE', []);
+  Result := ((RPCBrokerV.Results.Count = 1) and (RPCBrokerV.Results[0] = '1'));
+end;
+
+function GetProgressNoteHeader: string;
+begin
+  Result := sCallV('ORQQPXRM PROGRESS NOTE HEADER', [Encounter.Location]);
+end;
+
+function LoadMentalHealthTest(TestName: string): TStrings;
+begin
+  CallV('ORQQPXRM MENTAL HEALTH', [TestName]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure MentalHealthTestResults(var AText: string; const DlgIEN: string; const TestName:
+                                  string; const AProvider: Int64; const Answers: string);
+var
+  i, R: integer;
+  Ans, tmp: string;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORQQPXRM MENTAL HEALTH RESULTS';
+    Param[0].PType := literal;
+    Param[0].Value := DlgIEN;
+    Param[1].PType := list;
+    Param[1].Mult['"DFN"'] := Patient.DFN;
+    Param[1].Mult['"CODE"'] := TestName;
+    Param[1].Mult['"ADATE"'] := 'T';
+    Param[1].Mult['"STAFF"'] := IntToStr(AProvider);
+    R := 0;
+    tmp := '';
+    Ans := Answers;
+    repeat
+      tmp := copy(Ans,1,200);
+      delete(Ans,1,200);
+      inc(R);
+      Param[1].Mult['"R' + IntToStr(R) + '"'] := tmp;
+    until(Ans = '');
+    CallBroker;
+    AText := '';
+    for i := 0 to Results.Count-1 do
+    begin
+      tmp := Results[i];
+      if(Piece(tmp,U,1) = '7') then
+      begin
+        if(AText <> '') then
+        begin
+          if(copy(AText, length(AText), 1) = '.') then
+            AText := AText + ' ';
+          AText := AText + ' ';
+        end;
+        AText := AText + Trim(Piece(tmp, U, 2));
+      end;
+    end;
+  end;
+end;
+
+procedure SaveMentalHealthTest(const TestName: string; ADate: TFMDateTime;
+                               const AProvider: Int64; const Answers: string);
+var
+  R: integer;
+  Ans, tmp: string;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORQQPXRM MENTAL HEALTH SAVE';
+    Param[0].PType := list;
+    Param[0].Mult['"DFN"'] := Patient.DFN;
+    Param[0].Mult['"CODE"'] := TestName;
+    Param[0].Mult['"ADATE"'] := FloatToStr(ADate);
+    Param[0].Mult['"STAFF"'] := IntToStr(AProvider);
+    R := 0;
+    tmp := '';
+    Ans := Answers;
+    repeat
+      tmp := copy(Ans,1,200);
+      delete(Ans,1,200);
+      inc(R);
+      Param[0].Mult['"R' + IntToStr(R) + '"'] := tmp;
+    until(Ans = '');
+    CallBroker;
+  end;
+end;
+
+procedure SaveWomenHealthData(var WHData: TStringlist);
+begin
+  if assigned(WHData) then
+  begin
+  CallV('ORQQPXRM WOMEN HEALTH SAVE', [WHData]);
+//  if RPCBrokerV.Results<>nil then
+//  infoBox(RPCBrokerV.Results.Text,'Error in Saving WH Data',MB_OK);
+  end;
+end;
+
+function CheckGECValue(const RemIEN: string; NoteIEN: integer): String;
+var
+ans,str,str1,title: string;
+fin: boolean;
+i,cnt: integer;
+
+begin
+  Result := sCallV('ORQQPXRM GEC DIALOG', [RemIEN, Patient.DFN, Encounter.VisitStr, NoteIEN]);
+  if Piece(Result,U,1) <> '0' then
+  begin
+    if Piece(Result,U,5)='1' then
+        begin
+            if pos('~',Piece(Result,U,4))>0 then
+               begin
+               str:='';
+               str1 := Piece(Result,U,4);
+               cnt := DelimCount(str1, '~');
+               for i:=1 to cnt+1 do
+                   begin
+                   if i = 1 then str := Piece(str1,'~',i);
+                   if i > 1 then str :=str+CRLF+Piece(str1,'~',i);
+                   end;
+             end
+             else str := Piece(Result,U,1);
+        title := Piece(Result,U,3);
+        fin := (InfoBox(str,title, MB_YESNO)=IDYES);
+        if fin = true then ans := '1';
+        if fin = false then ans := '0';
+        CallV('ORQQPXRM GEC FINISHED?',[Patient.DFN,ans]);
+        end;
+   Result := Piece(Result, U,2);
+   end
+  else Result := '';
+end;
+
+procedure SaveMSTDataFromReminder(VDate, Sts, Prov, FType, FIEN, Res: string);
+begin
+  CallV('ORQQPXRM MST UPDATE', [Patient.DFN, VDate, Sts, Prov, FType, FIEN, Res]);
+end;
+
+function GetReminderFolders: string;
+begin
+  Result := sCallV('ORQQPX GET FOLDERS', []);
+end;
+
+procedure SetReminderFolders(const Value: string);
+begin
+  CallV('ORQQPX SET FOLDERS', [Value]);
+end;
+
+function GetDefLocations: TStrings;
+begin
+  if (User.DUZ <> uLastDefLocUser) then
+  begin
+    if(not assigned(uDefLocs)) then
+      uDefLocs := TStringList.Create;
+    tCallV(uDefLocs, 'ORQQPX GET DEF LOCATIONS', []);
+    uLastDefLocUser := User.DUZ;
+  end;
+  Result := uDefLocs;
+end;
+
+function InsertRemTextAtCursor: boolean;
+begin
+  if uRemInsertAtCursor < 0 then
+  begin
+    Result := (sCallV('ORQQPX REM INSERT AT CURSOR', []) = '1');
+    uRemInsertAtCursor := ord(Result);
+  end
+  else
+    Result := Boolean(uRemInsertAtCursor);
+end;
+
+function NewRemCoverSheetListActive: boolean;
+begin
+  if uNewCoverSheetListActive < 0 then
+  begin
+    Result := (sCallV('ORQQPX NEW COVER SHEET ACTIVE', []) = '1');
+    uNewCoverSheetListActive := ord(Result);
+  end
+  else
+    Result := Boolean(uNewCoverSheetListActive);
+end;
+
+function CanEditAllRemCoverSheetLists: boolean;
+begin
+  if uCanEditAllCoverSheetLists < 0 then
+  begin
+    Result := HasMenuOptionAccess('PXRM CPRS CONFIGURATION');
+    uCanEditAllCoverSheetLists := ord(Result);
+  end
+  else
+    Result := Boolean(uCanEditAllCoverSheetLists);
+end;
+
+function GetCoverSheetLevelData(ALevel, AClass: string): TStrings;
+begin
+  CallV('ORQQPX LVREMLST', [ALevel, AClass]);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure SetCoverSheetLevelData(ALevel, AClass: string; Data: TStrings);
+var
+  i: integer;
+
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORQQPX SAVELVL';
+    Param[0].PType := literal;
+    Param[0].Value := ALevel;
+    Param[1].PType := literal;
+    Param[1].Value := AClass;
+    Param[2].PType := list;
+    for i := 0 to Data.Count-1 do
+      Param[2].Mult[IntToStr(i+1)] := Data[i];
+    CallBroker;
+  end;
+end;
+
+function GetCategoryItems(CatIEN: integer): TStrings;
+begin
+  CallV('PXRM REMINDER CATEGORY', [CatIEN]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetAllRemindersAndCategories: TStrings;
+begin
+  CallV('PXRM REMINDERS AND CATEGORIES', []);
+  Result := RPCBrokerV.Results;
+end;
+
+function VerifyMentalHealthTestComplete(TestName, Answers: string): String;
+
+begin
+    CallV('ORQQPXRM MHV', [Patient.DFN, TestName, Answers]);
+    if RPCBrokerV.Results[0]='2' then
+      begin
+        Result := '2'+ U;
+        EXIT;
+      end;
+    if RPCBrokerV.Results[0] = '1' then
+      begin
+        Result := '1' + U;
+        EXIT;
+      end;
+    if RPCBrokerV.Results[0] = '0' then
+      begin
+        Result := '0' + U + RPCBrokerV.Results[1];
+        EXIT;
+      end;
+end;
+
+function MHDLLFound: boolean;
+begin
+  if MHDll.DllCheck = false then
+     begin
+       MHDll.DllCheck := True;
+       MHDLL.DllFound := CheckforMHDll;
+     end;
+  Result := MHDLL.DllFound;
+end;
+
+function UsedMHDllRPC: boolean;
+begin
+  Result := sCallV('ORQQPXRM MHDLLDMS',[]) = '1';
+end;
+
+procedure PopulateMHdll;
+begin
+  if MHDll.DllCheck = false then
+    begin
+      MHDll.DllCheck := True;
+      MHDll.DllFound := CheckforMHDll;
+    end;
+end;
+
+procedure GetMHResultText(var AText: string; ResultsGroups, Scores: TStringList);
+var
+i, j: integer;
+tmp, info: string;
+tempInfo: TStringList;
+begin
+ //AGP for some reason in some account passing two arrays in the RPC was
+ //not working had to convert back to the old method for the RPC for now
+ with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'ORQQPXRM MHDLL';
+    Param[0].PType := literal;
+    Param[0].Value := PATIENT.DFN;  //*DFN*
+    Param[1].PType := list;
+    j := 0;
+    for i := 0 to ResultsGroups.Count-1 do
+      begin
+        j := j + 1;
+        Param[1].Mult['"RESULTS",'+ InttoStr(j)]:=ResultsGroups.Strings[i];
+      end;
+    j := 0;
+    for i := 0 to Scores.Count-1 do
+      begin
+        j := j + 1;
+        Param[1].Mult['"SCORES",'+ InttoStr(j)]:=Scores.Strings[i];
+      end;
+  end;
+  CallBroker;
+  //CallV('ORQQPXRM MHDLL',[ResultsGroups, Scores, Patient.DFN]);
+  AText := '';
+  info := '';
+  for i := 0 to RPCBrokerV.Results.Count - 1 do
+    begin
+      tmp := RPCBrokerV.Results[i];
+      if pos('[INFOTEXT]',tmp)>0 then
+        begin
+           if info <> '' then info := info + ' ' + Copy(tmp,11,(Length(tmp)-1))
+           else info := Copy(tmp,11,(Length(tmp)-1));
+        end
+      else
+      begin
+        if(AText <> '') then
+        begin
+          if(copy(AText, length(AText), 1) = '.') then
+            AText := AText;
+          AText := AText + ' ';
+        end;
+        AText := AText + Trim(tmp);
+      end;
+  end;
+  if info <> '' then
+    begin
+      if pos(U, info) > 0 then
+        begin
+          tempInfo := TStringList.Create;
+          PiecestoList(info,'^',tempInfo);
+          info := '';
+          for i := 0 to tempInfo.Count -1 do
+            begin
+              if info = '' then info := tempInfo.Strings[i]
+              else info := info + CRLF + tempInfo.Strings[i];
+            end;
+        end;
+      InfoBox(info,'Attention Needed',MB_OK);
+    end;
+end;
+initialization
+
+finalization
+  FreeAndNil(uDefLocs);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rReports.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rReports.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rReports.pas	(revision 1676)
@@ -0,0 +1,832 @@
+unit rReports;
+
+interface
+
+uses Windows, SysUtils, Classes, ORNet, ORFn, ComCtrls, Chart, graphics;
+
+{ Consults }
+procedure ListConsults(Dest: TStrings);
+procedure LoadConsultText(Dest: TStrings; IEN: Integer);
+
+{ Reports }
+procedure ListReports(Dest: TStrings);
+procedure ListLabReports(Dest: TStrings);
+procedure ListReportDateRanges(Dest: TStrings);
+procedure ListHealthSummaryTypes(Dest: TStrings);
+procedure ListImagingExams(Dest: TStrings);
+procedure ListProcedures(Dest: TStrings);
+procedure ListNutrAssessments(Dest: TStrings);
+procedure ListSurgeryReports(Dest: TStrings);
+procedure ColumnHeaders(Dest: TStrings; AReportType: String);
+procedure SaveColumnSizes(aColumn: String);
+procedure LoadReportText(Dest: TStrings; ReportType: string; const Qualifier: string; ARpc, AHSTag: string);
+procedure RemoteQueryAbortAll;
+procedure RemoteQuery(Dest: TStrings; AReportType: string; AHSType, ADaysback,
+            AExamID: string; Alpha, AOmega: Double; ASite, ARemoteRPC, AHSTag: String);
+procedure DirectQuery(Dest: TStrings; AReportType: string; AHSType, ADaysback,
+            AExamID: string; Alpha, AOmega: Double; ASite, ARemoteRPC, AHSTag: String);
+function ReportQualifierType(ReportType: Integer): Integer;
+function ImagingParams: String;
+function AutoRDV: String;
+function HDRActive: String;
+procedure PrintReportsToDevice(AReport: string; const Qualifier, Patient,
+     ADevice: string; var ErrMsg: string; aComponents: TStringlist;
+     ARemoteSiteID, ARemoteQuery, AHSTag: string);
+function HSFileLookup(aFile: String; const StartFrom: string;
+         Direction: Integer): TStrings;
+procedure HSComponentFiles(Dest: TStrings; aComponent: String);
+procedure HSSubItems(Dest: TStrings; aItem: String);
+procedure HSReportText(Dest: TStrings; aComponents: TStringlist);
+procedure HSComponents(Dest: TStrings);
+procedure HSABVComponents(Dest: TStrings);
+procedure HSDispComponents(Dest: TStrings);
+procedure HSComponentSubs(Dest: TStrings; aItem: String);
+procedure HealthSummaryCheck(Dest: TStrings; aQualifier: string);
+function GetFormattedReport(AReport: string; const Qualifier, Patient: string;
+           aComponents: TStringlist; ARemoteSiteID, ARemoteQuery, AHSTag: string): TStrings;
+procedure PrintWindowsReport(ARichEdit: TRichEdit; APageBreak, ATitle: string;
+  var ErrMsg: string);
+function DefaultToWindowsPrinter: Boolean;
+procedure PrintGraph(GraphImage: TChart; PageTitle: string);
+procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
+procedure CreatePatientHeader(var HeaderList: TStringList; PageTitle: string);
+procedure SaveDefaultPrinter(DefPrinter: string) ;
+function GetRemoteStatus(aHandle: string): String;
+function GetAdhocLookup: integer;
+procedure SetAdhocLookup(aLookup: integer);
+procedure GetRemoteData(Dest: TStrings; aHandle: string; aItem: PChar);
+procedure ModifyHDRData(Dest: string; aHandle: string; aID: string);
+procedure PrintVReports(Dest, ADevice, AHeader: string; AReport: TStringList);
+
+implementation
+
+uses uCore, rCore, Printers, clipbrd, uReports, fReports
+{ TODO -oRV -cWVEHR Long Age : Changed to use long age }
+, rWVEHR;
+
+var
+  uTree:       TStringList;
+  uReportsList:    TStringList;
+  uLabReports: TStringList;
+  uDateRanges: TStringList;
+  uHSTypes:    TStringList;
+
+{ Consults }
+
+procedure ListConsults(Dest: TStrings);
+var
+  i: Integer;
+  x: string;
+begin
+  CallV('ORWCS LIST OF CONSULT REPORTS', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    SortByPiece(TStringList(Results), U, 2);
+    InvertStringList(TStringList(Results));
+    SetListFMDateTime('mmm dd,yy', TStringList(Results), U, 2);
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      x := Pieces(x, U, 1, 2) + U + Piece(x, U, 3) + '  (' + Piece(x, U, 4) + ')';
+      Results[i] := x;
+    end;
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure LoadConsultText(Dest: TStrings; IEN: Integer);
+begin
+  CallV('ORWCS REPORT TEXT', [Patient.DFN, IEN]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+{ Reports }
+
+procedure ExtractSection(Dest: TStrings; const Section: string; Mixed: Boolean);
+var
+  i: Integer;
+begin
+  with RPCBrokerV do
+  begin
+    i := -1;
+    repeat Inc(i) until (i = Results.Count) or (Results[i] = Section);
+    Inc(i);
+    while (i < Results.Count) and (Results[i] <> '$$END') do
+    begin
+      {if (Pos('OR_ECS',UpperCase(Results[i]))>0) and (not uECSReport.ECSPermit) then
+      begin
+        Inc(i);
+        Continue;
+      end;}
+      if Mixed = true then
+        Dest.Add(MixedCase(Results[i]))
+      else
+        Dest.Add(Results[i]);
+      Inc(i);
+    end;
+  end;
+end;
+
+procedure LoadReportLists;
+begin
+  CallV('ORWRP REPORT LISTS', [nil]);
+  uDateRanges := TStringList.Create;
+  uHSTypes    := TStringList.Create;
+  uReportsList    := TStringList.Create;
+  ExtractSection(uDateRanges, '[DATE RANGES]', true);
+  ExtractSection(uHSTypes,    '[HEALTH SUMMARY TYPES]', true);
+  ExtractSection(uReportsList,    '[REPORT LIST]', true);
+end;
+
+procedure LoadLabReportLists;
+begin
+  CallV('ORWRP LAB REPORT LISTS', [nil]);
+  uLabReports  := TStringList.Create;
+  ExtractSection(uLabReports, '[LAB REPORT LIST]', true);
+end;
+
+procedure LoadTree(Tab: String);
+begin
+  CallV('ORWRP3 EXPAND COLUMNS', [Tab]);
+  uTree    := TStringList.Create;
+  ExtractSection(uTree, '[REPORT LIST]', false);
+end;
+
+procedure ListReports(Dest: TStrings);
+var
+  i: Integer;
+begin
+  if uTree = nil
+    then LoadTree('REPORTS')
+  else
+    begin
+      uTree.Clear;
+      LoadTree('REPORTS');
+    end;
+  for i := 0 to uTree.Count - 1 do Dest.Add(Pieces(uTree[i], '^', 1, 20));
+end;
+
+procedure ListLabReports(Dest: TStrings);
+var
+  i: integer;
+begin
+  {if uLabreports = nil then LoadLabReportLists;
+  for i := 0 to uLabReports.Count - 1 do Dest.Add(Pieces(uLabReports[i], U, 1, 10)); }
+  if uTree = nil
+    then LoadTree('LABS')
+  else
+    begin
+      uTree.Clear;
+      LoadTree('LABS');
+    end;
+  for i := 0 to uTree.Count - 1 do Dest.Add(Pieces(uTree[i], '^', 1, 20));
+end;
+
+procedure ListReportDateRanges(Dest: TStrings);
+begin
+  if uDateRanges = nil then LoadReportLists;
+  FastAssign(uDateRanges, Dest);
+end;
+
+procedure ListHealthSummaryTypes(Dest: TStrings);
+begin
+  if uHSTypes = nil then LoadReportLists;
+  MixedCaseList(uHSTypes);
+  FastAssign(uHSTypes, Dest);
+end;
+
+procedure HealthSummaryCheck(Dest: TStrings; aQualifier: string);
+
+begin
+  if aQualifier = '1' then
+    begin
+      ListHealthSummaryTypes(Dest);
+    end;
+end;
+
+procedure ColumnHeaders(Dest: TStrings; AReportType: String);
+begin
+  CallV('ORWRP COLUMN HEADERS',[AReportType]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure SaveColumnSizes(aColumn: String);
+begin
+  CallV('ORWCH SAVECOL', [aColumn]);
+end;
+
+procedure ListImagingExams(Dest: TStrings);
+var
+  x: string;
+  i: Integer;
+begin
+  CallV('ORWRA IMAGING EXAMS1', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    SetListFMDateTime('mm/dd/yyyy hh:nn', TStringList(Results), U, 3);
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      if Piece(x,U,7) = 'Y' then SetPiece(x,U,7, ' - Abnormal');
+        x := Piece(x,U,1) + U + 'i' + Pieces(x,U,2,3)+ U + Piece(x,U,4)
+             + U + Piece(x,U,6)  + Piece(x,U,7) + U
+             + MixedCase(Piece(Piece(x,U,9),'~',2)) + U + Piece(x,U,5) +  U + '[+]'
+             + U + Pieces(x, U, 15,17);                                                 
+(*      x := Piece(x,U,1) + U + 'i' + Pieces(x,U,2,3)+ U + Piece(x,U,4)
+        + U + Piece(x,U,6) + Piece(x,U,7) + U + Piece(x,U,5) +  U + '[+]' + U + Piece(x, U, 15);*)
+      Results[i] := x;
+    end;
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListProcedures(Dest: TStrings);
+var
+  x,sdate: string;
+  i: Integer;
+begin
+  CallV('ORWMC PATIENT PROCEDURES1', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      if length(piece(x, U, 8)) > 0 then
+        begin
+          sdate := ShortDateStrToDate(piece(piece(x, U, 8),'@',1)) + ' ' + piece(piece(x, U, 8),'@',2);
+        end;
+      x := Piece(x, U, 1) + U + 'i' + Piece(x, U, 2) + U + sdate + U + Piece(x, U, 3) + U + Piece(x, U, 9) + '^[+]';
+      Results[i] := x;
+    end;
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListNutrAssessments(Dest: TStrings);
+var
+  x: string;
+  i: Integer;
+begin
+  CallV('ORWRP1 LISTNUTR', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    for i := 0 to Results.Count - 1 do
+      begin
+        x := Results[i];
+        x := Piece(x, U, 1) + U + 'i' + Piece(x, U, 3) + U + Piece(x, U, 3);
+        Results[i] := x;
+      end;
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure ListSurgeryReports(Dest: TStrings);
+{ returns a list of surgery cases for a patient, without documents}
+//Facility^Case #^Date/Time of Operation^Operative Procedure^Surgeon name)
+var
+  i: integer;
+  x, AFormat: string;
+begin
+  CallV('ORWSR RPTLIST', [Patient.DFN]);
+  with RPCBrokerV do
+   begin
+    for i := 0 to Results.Count - 1 do
+      begin
+        x := Results[i];
+        if Piece(Piece(x, U, 3), '.', 2) = '' then AFormat := 'mm/dd/yyyy' else AFormat := 'mm/dd/yyyy hh:nn';
+        x := Piece(x, U, 1) + U + 'i' + Piece(x, U, 2) + U + FormatFMDateTimeStr(AFormat, Piece(x, U, 3))+ U +
+             Piece(x, U, 4)+ U + Piece(x, U, 5);
+        if Piece(Results[i], U, 6) = '+' then x := x + '^[+]';
+        Results[i] := x;
+      end;
+    FastAssign(Results, Dest);
+  end;
+end;
+
+procedure LoadReportText(Dest: TStrings; ReportType: string; const Qualifier: string; ARpc, AHSTag: string);
+var
+  HSType, DaysBack, ExamID, MaxOcc, AReport, x: string;
+  Alpha, Omega, Trans: double;
+begin
+  HSType := '';
+  DaysBack := '';
+  ExamID := '';
+  Alpha := 0;
+  Omega := 0;
+  if CharAt(Qualifier, 1) = 'T' then
+    begin
+      Alpha := StrToFMDateTime(Piece(Qualifier,';',1));
+      Omega := StrToFMDateTime(Piece(Qualifier,';',2));
+      if Alpha > Omega then
+        begin
+          Trans := Omega;
+          Omega := Alpha;
+          Alpha := Trans;
+        end;
+      MaxOcc := Piece(Qualifier,';',3);
+      SetPiece(AHSTag,';',4,MaxOcc);
+    end;
+  if CharAt(Qualifier, 1) = 'd' then
+    begin
+      MaxOcc := Piece(Qualifier,';',2);
+      SetPiece(AHSTag,';',4,MaxOcc);
+      x := Piece(Qualifier,';',1);
+      DaysBack := Copy(x, 2, Length(x));
+    end;
+  if CharAt(Qualifier, 1) = 'h' then HSType   := Copy(Qualifier, 2, Length(Qualifier));
+  if CharAt(Qualifier, 1) = 'i' then ExamID   := Copy(Qualifier, 2, Length(Qualifier));
+  AReport := ReportType + '~' + AHSTag;
+  if Length(ARpc) > 0 then
+    begin
+      CallV(ARpc, [Patient.DFN, AReport, HSType, DaysBack, ExamID, Alpha, Omega]);
+      QuickCopy(RPCBrokerV.Results,Dest);
+    end
+  else
+    begin
+      Dest.Add('RPC is missing from report definition (file 101.24).');
+      Dest.Add('Please contact Technical Support.');
+    end;
+end;
+
+procedure RemoteQueryAbortAll;
+begin
+  CallV('XWB DEFERRED CLEARALL',[nil]);
+end;
+
+procedure RemoteQuery(Dest: TStrings; AReportType: string; AHSType, ADaysback,
+            AExamID: string; Alpha, AOmega: Double; ASite, ARemoteRPC, AHSTag: String);
+var
+  AReport: string;
+begin
+  AReport := AReportType + ';1' + '~' + AHSTag;
+  if length(AHSType) > 0 then
+    AHSType := piece(AHSType,':',1) + ';' + piece(AHSType,':',2);  //format for backward compatibility
+  CallV('XWB REMOTE RPC', [ASite, ARemoteRPC, 0, Patient.DFN + ';' + Patient.ICN,
+            AReport, AHSType, ADaysBack, AExamID, Alpha, AOmega]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure DirectQuery(Dest: TStrings; AReportType: string; AHSType, ADaysback,
+            AExamID: string; Alpha, AOmega: Double; ASite, ARemoteRPC, AHSTag: String);
+var
+  AReport: string;
+begin
+  AReport := AReportType + ';1' + '~' + AHSTag;
+  if length(AHSType) > 0 then
+    AHSType := piece(AHSType,':',1) + ';' + piece(AHSType,':',2);  //format for backward compatibility
+  CallV('XWB DIRECT RPC', [ASite, ARemoteRPC, 0, Patient.DFN + ';' + Patient.ICN,
+            AReport, AHSType, ADaysBack, AExamID, Alpha, AOmega]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+function ReportQualifierType(ReportType: Integer): Integer;
+var
+  i: Integer;
+begin
+  Result := 0;
+  for i := 0 to uReportsList.Count - 1 do
+    if StrToIntDef(Piece(uReportsList[i], U, 1), 0) = ReportType
+      then Result := StrToIntDef(Piece(uReportsList[i], U, 3), 0);
+end;
+
+function ImagingParams: String;
+begin
+  Result := sCallV('ORWTPD GETIMG',[nil]);
+end;
+
+function AutoRDV: String;
+begin
+  Result := sCallV('ORWCIRN AUTORDV', [nil]);
+end;
+
+function HDRActive: String;
+begin
+  Result := sCallV('ORWCIRN HDRON', [nil]);
+end;
+
+procedure PrintVReports(Dest, ADevice, AHeader: string; AReport: TStringList);
+begin
+  CallV('ORWRP PRINT V REPORT', [ADevice, Patient.DFN, AHeader, AReport]);
+end;
+
+procedure PrintReportsToDevice(AReport: string; const Qualifier, Patient, ADevice: string;
+ var ErrMsg: string; aComponents: TStringlist; ARemoteSiteID, ARemoteQuery, AHSTag: string);
+{ prints a report on the selected device }
+var
+  HSType, DaysBack, ExamID, MaxOcc, ARpt, x: string;
+  Alpha, Omega: double;
+  j: integer;
+  RemoteHandle,Report: string;
+  aHandles: TStringlist;
+begin
+  HSType := '';
+  DaysBack := '';
+  ExamID := '';
+  Alpha := 0;
+  Omega := 0;
+  aHandles := TStringList.Create;
+  if CharAt(Qualifier, 1) = 'T' then
+    begin
+      Alpha := StrToFMDateTime(Piece(Qualifier,';',1));
+      Omega := StrToFMDateTime(Piece(Qualifier,';',2));
+      MaxOcc := Piece(Qualifier,';',3);
+      SetPiece(AHSTag,';',4,MaxOcc);
+    end;
+  if CharAt(Qualifier, 1) = 'd' then
+    begin
+      MaxOcc := Piece(Qualifier,';',2);
+      SetPiece(AHSTag,';',4,MaxOcc);
+      x := Piece(Qualifier,';',1);
+      DaysBack := Copy(x, 2, Length(x));
+    end;
+  if CharAt(Qualifier, 1) = 'h' then HSType   := Copy(Qualifier, 2, Length(Qualifier));
+  if CharAt(Qualifier, 1) = 'i' then ExamID   := Copy(Qualifier, 2, Length(Qualifier));
+  if Length(ARemoteSiteID) > 0 then
+    begin
+      RemoteHandle := '';
+      for j := 0 to RemoteReports.Count - 1 do
+        begin
+          Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+          if Report = ARemoteQuery then
+            begin
+              RemoteHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle
+                + '^' + Pieces(Report,'^',9,10);
+              break;
+            end;
+        end;
+      if Length(RemoteHandle) > 1 then
+        with RemoteSites.SiteList do
+            aHandles.Add(ARemoteSiteID + '^' + RemoteHandle);
+    end;
+  ARpt := AReport + '~' + AHSTag;
+  if aHandles.Count > 0 then
+    begin
+      ErrMsg := sCallV('ORWRP PRINT REMOTE REPORT',[ADevice, Patient, ARpt, aHandles]);
+      if Piece(ErrMsg, U, 1) = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+    end
+  else
+    begin
+      ErrMsg := sCallV('ORWRP PRINT REPORT',[ADevice, Patient, ARpt, HSType,
+        DaysBack, ExamID, aComponents, Alpha, Omega]);
+      if Piece(ErrMsg, U, 1) = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+    end;
+  aHandles.Clear;
+  aHandles.Free;
+end;
+
+function GetFormattedReport(AReport: string; const Qualifier, Patient: string;
+         aComponents: TStringlist; ARemoteSiteID, ARemoteQuery, AHSTag: string): TStrings;
+{ prints a report on the selected device }
+var
+  HSType, DaysBack, ExamID, MaxOcc, ARpt, x: string;
+  Alpha, Omega: double;
+  j: integer;
+  RemoteHandle,Report: string;
+  aHandles: TStringlist;
+begin
+  HSType := '';
+  DaysBack := '';
+  ExamID := '';
+  Alpha := 0;
+  Omega := 0;
+  aHandles := TStringList.Create;
+  if CharAt(Qualifier, 1) = 'T' then
+    begin
+      Alpha := StrToFMDateTime(Piece(Qualifier,';',1));
+      Omega := StrToFMDateTime(Piece(Qualifier,';',2));
+      MaxOcc := Piece(Qualifier,';',3);
+      SetPiece(AHSTag,';',4,MaxOcc);
+    end;
+  if CharAt(Qualifier, 1) = 'd' then
+    begin
+      MaxOcc := Piece(Qualifier,';',2);
+      SetPiece(AHSTag,';',4,MaxOcc);
+      x := Piece(Qualifier,';',1);
+      DaysBack := Copy(x, 2, Length(x));
+    end;
+  if CharAt(Qualifier, 1) = 'h' then HSType   := Copy(Qualifier, 2, Length(Qualifier));
+  if CharAt(Qualifier, 1) = 'i' then ExamID   := Copy(Qualifier, 2, Length(Qualifier));
+  if Length(ARemoteSiteID) > 0 then
+    begin
+      RemoteHandle := '';
+      for j := 0 to RemoteReports.Count - 1 do
+        begin
+          Report := TRemoteReport(RemoteReports.ReportList.Items[j]).Report;
+          if Report = ARemoteQuery then
+            begin
+              RemoteHandle := TRemoteReport(RemoteReports.ReportList.Items[j]).Handle
+                + '^' + Pieces(Report,'^',9,10);
+              break;
+            end;
+        end;
+      if Length(RemoteHandle) > 1 then
+        with RemoteSites.SiteList do
+            aHandles.Add(ARemoteSiteID + '^' + RemoteHandle);
+    end;
+  ARpt := AReport + '~' + AHSTag;
+  if aHandles.Count > 0 then
+    begin
+      CallV('ORWRP PRINT WINDOWS REMOTE',[Patient, ARpt, aHandles]);
+      Result := RPCBrokerV.Results;
+    end
+  else
+    begin
+      CallV('ORWRP PRINT WINDOWS REPORT',[Patient, ARpt, HSType,
+        DaysBack, ExamID, aComponents, Alpha, Omega]);
+      Result := RPCBrokerV.Results;
+    end;
+  aHandles.Clear;
+  aHandles.Free;
+end;
+
+function DefaultToWindowsPrinter: Boolean;
+begin
+  Result := (StrToIntDef(sCallV('ORWRP WINPRINT DEFAULT',[]), 0) > 0);
+end;
+
+procedure PrintWindowsReport(ARichEdit: TRichEdit; APageBreak, Atitle: string; var ErrMsg: string);
+var
+  i, j, x, y, LineHeight: integer;
+  aGoHead: string;
+  aHeader: TStringList;
+const
+  TX_ERR_CAP = 'Print Error';
+  TX_FONT_SIZE = 10;
+  TX_FONT_NAME = 'Courier New';
+begin
+  aHeader := TStringList.Create;
+  aGoHead := '';
+  if piece(Atitle,';',2) = '1' then
+    begin
+      Atitle := piece(Atitle,';',1);
+      aGoHead := '1';
+    end;
+  CreatePatientHeader(aHeader ,ATitle);
+  with ARichEdit do
+    begin
+(*      if Lines[Lines.Count - 1] = APageBreak then      //  remove trailing form feed
+        Lines.Delete(Lines.Count - 1);
+      while (Lines[0] = '') or (Lines[0] = APageBreak) do
+        Lines.Delete(0);                               //  remove leading blank lines and form feeds*)
+
+        {v20.4 - SFC-0602-62899 - RV}
+        while (Lines.Count > 0) and ((Lines[Lines.Count - 1] = '') or (Lines[Lines.Count - 1] = APageBreak)) do
+          Lines.Delete(Lines.Count - 1);                 //  remove trailing blank lines and form feeds
+        while (Lines.Count > 0) and ((Lines[0] = '') or (Lines[0] = APageBreak)) do
+          Lines.Delete(0);                               //  remove leading blank lines and form feeds
+
+      if Lines.Count > 1 then
+        begin
+(*          i := Lines.IndexOf(APageBreak);
+          if ((i >= 0 ) and (i < Lines.Count - 1)) then        // removed in v15.9 (RV)
+            begin*)
+              Printer.Canvas.Font.Size := TX_FONT_SIZE;
+              Printer.Canvas.Font.Name := TX_FONT_NAME;
+              Printer.Title := ATitle;
+              x := Trunc(Printer.Canvas.TextWidth(StringOfChar('=', TX_FONT_SIZE)) * 0.75);
+              LineHeight := Printer.Canvas.TextHeight(TX_FONT_NAME);
+              y := LineHeight * 5;            // 5 lines = .83" top margin   v15.9 (RV)
+              Printer.BeginDoc;
+              for i := 0 to Lines.Count - 1 do
+                begin
+                  if Lines[i] = APageBreak then
+                    begin
+                      Printer.NewPage;
+                      y := LineHeight * 5;   // 5 lines = .83" top margin    v15.9 (RV)
+                      if aGoHead = '1' then
+                        begin
+                          for j := 0 to aHeader.Count - 1 do
+                            begin
+                              Printer.Canvas.TextOut(x, y, aHeader[j]);
+                              y := y + LineHeight;
+                            end;
+                        end;
+                    end
+                  else
+                    begin
+                      Printer.Canvas.TextOut(x, y, Lines[i]);
+                      y := y + LineHeight;
+                    end;
+                end;
+              Printer.EndDoc;
+(*            end
+          else                               // removed in v15.9 (RV)  TRichEdit.Print no longer used.
+            try
+              Font.Size := TX_FONT_SIZE;
+              Font.Name := TX_FONT_NAME;
+              Print(ATitle);
+            except
+              ErrMsg := TX_ERR_CAP;
+            end;*)
+        end
+      else if ARichEdit.Lines.Count = 1 then
+        if Piece(ARichEdit.Lines[0], U, 1) <> '0' then
+          ErrMsg := Piece(ARichEdit.Lines[0], U, 2);
+    end;
+  aHeader.Free;
+end;
+
+procedure CreatePatientHeader(var HeaderList: TStringList; PageTitle: string);
+// standard patient header, from HEAD^ORWRPP
+var
+  tmpStr, tmpItem: string;
+begin
+  with HeaderList do
+    begin
+      Add(' ');
+      Add(StringOfChar(' ', (74 - Length(PageTitle)) div 2) + PageTitle);
+      Add(' ');
+      tmpStr := Patient.Name + '   ' + Patient.SSN;
+      tmpItem := tmpStr + StringOfChar(' ', 39 - Length(tmpStr)) + Encounter.LocationName;
+{ TODO -oRV -cWVEHR Long Age : Changed to use long age }
+      //tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + IntToStr(Patient.Age) + ')';
+      tmpStr := FormatFMDateTime('mmm dd, yyyy', Patient.DOB) + ' (' + GetPatientBriefAge(Patient.DFN) + ')';
+{}
+      tmpItem := tmpItem + StringOfChar(' ', 74 - (Length(tmpItem) + Length(tmpStr))) + tmpStr;
+      Add(tmpItem);
+      Add(StringOfChar('=', 74));
+      Add('*** WORK COPY ONLY ***' + StringOfChar(' ', 24) + 'Printed: ' + FormatFMDateTime('mmm dd, yyyy  hh:nn', FMNow));
+      Add(' ');
+      Add(' ');
+    end;
+end;
+
+procedure PrintGraph(GraphImage: TChart; PageTitle: string);
+var
+  AHeader: TStringList;
+  i, y, LineHeight: integer;
+  GraphPic: TBitMap;
+  Magnif: integer;
+const
+  TX_FONT_SIZE = 12;
+  TX_FONT_NAME = 'Courier New';
+  CF_BITMAP = 2;      // from Windows.pas
+begin
+  ClipBoard;
+  AHeader := TStringList.Create;
+  CreatePatientHeader(AHeader, PageTitle);
+  GraphPic := TBitMap.Create;
+  try
+    GraphImage.CopyToClipboardBitMap;
+    GraphPic.LoadFromClipBoardFormat(CF_BITMAP, ClipBoard.GetAsHandle(CF_BITMAP), 0);
+    with Printer do
+      begin
+        Canvas.Font.Size := TX_FONT_SIZE;
+        Canvas.Font.Name := TX_FONT_NAME;
+        Title := PageTitle;
+        Magnif := (Canvas.TextWidth(StringOfChar('=', 74)) div GraphImage.Width);
+        LineHeight := Printer.Canvas.TextHeight(TX_FONT_NAME);
+        y := LineHeight;
+        BeginDoc;
+        try
+          for i := 0 to AHeader.Count - 1 do
+            begin
+              Canvas.TextOut(0, y, AHeader[i]);
+              y := y + LineHeight;
+            end;
+          y := y + (4 * LineHeight);
+          //GraphImage.PrintPartial(Rect(0, y, Canvas.TextWidth(StringOfChar('=', 74)), y + (Magnif * GraphImage.Height)));
+          PrintBitmap(Canvas, Rect(0, y, Canvas.TextWidth(StringOfChar('=', 74)), y + (Magnif * GraphImage.Height)), GraphPic);
+        finally
+          EndDoc;
+        end;
+      end;
+  finally
+    ClipBoard.Clear;
+    GraphPic.Free;
+    AHeader.Free;
+  end;
+end;
+
+procedure SaveDefaultPrinter(DefPrinter: string) ;
+begin
+  CallV('ORWRP SAVE DEFAULT PRINTER', [DefPrinter]);
+end;
+
+function HSFileLookup(aFile: String; const StartFrom: string;
+          Direction:Integer): TStrings;
+begin
+  CallV('ORWRP2 HS FILE LOOKUP', [aFile, StartFrom, Direction]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+procedure HSComponentFiles(Dest: TStrings; aComponent: String);
+begin
+  CallV('ORWRP2 HS COMP FILES', [aComponent]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure HSSubItems(Dest: TStrings; aItem: String);
+begin
+  CallV('ORWRP2 HS SUBITEMS', [aItem]);
+  MixedCaseList(RPCBrokerV.Results);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure HSReportText(Dest: TStrings; aComponents: TStringlist);
+begin
+  CallV('ORWRP2 HS REPORT TEXT', [aComponents, Patient.DFN]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure HSComponents(Dest: TStrings);
+begin
+  CallV('ORWRP2 HS COMPONENTS', [nil]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure HSABVComponents(Dest: TStrings);
+begin
+  CallV('ORWRP2 COMPABV', [nil]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure HSDispComponents(Dest: TStrings);
+begin
+  CallV('ORWRP2 COMPDISP', [nil]);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure HSComponentSubs(Dest: TStrings; aItem: String);
+begin
+  CallV('ORWRP2 HS COMPONENT SUBS',[aItem]);
+  MixedCaseList(RPCBrokerV.Results);
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+function GetRemoteStatus(aHandle: string): String;
+begin
+  CallV('XWB REMOTE STATUS CHECK', [aHandle]);
+  Result := RPCBrokerV.Results[0];
+end;
+
+function GetAdhocLookup: integer;
+begin
+  CallV('ORWRP2 GETLKUP', [nil]);
+  if RPCBrokerV.Results.Count > 0 then
+    Result := StrToInt(RPCBrokerV.Results[0])
+  else
+    Result := 0;
+end;
+
+procedure SetAdhocLookup(aLookup: integer);
+
+begin
+  CallV('ORWRP2 SAVLKUP', [IntToStr(aLookup)]);
+end;
+
+procedure GetRemoteData(Dest: TStrings; aHandle: string; aItem: PChar);
+begin
+  CallV('XWB REMOTE GETDATA', [aHandle]);
+  if RPCBrokerV.Results.Count < 1 then
+    RPCBrokerV.Results[0] := 'No data found.';
+  if (RPCBrokerV.Results.Count < 2) and (RPCBrokerV.Results[0] = '') then
+    RPCBrokerV.Results[0] := 'No data found.';
+  QuickCopy(RPCBrokerV.Results,Dest);
+end;
+
+procedure ModifyHDRData(Dest: string; aHandle: string; aID: string);
+begin
+  CallV('ORWRP4 HDR MODIFY', [aHandle, aID]);
+end;
+
+procedure PrintBitmap(Canvas:  TCanvas; DestRect:  TRect;  Bitmap:  TBitmap);
+var
+  BitmapHeader:  pBitmapInfo;
+  BitmapImage :  POINTER;
+  HeaderSize  :  DWORD;    // Use DWORD for D3-D5 compatibility
+  ImageSize   :  DWORD;
+begin
+  GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
+  GetMem(BitmapHeader, HeaderSize);
+  GetMem(BitmapImage,  ImageSize);
+  try
+    GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
+    StretchDIBits(Canvas.Handle,
+                  DestRect.Left, DestRect.Top,     // Destination Origin
+                  DestRect.Right  - DestRect.Left, // Destination Width
+                  DestRect.Bottom - DestRect.Top,  // Destination Height
+                  0, 0,                            // Source Origin
+                  Bitmap.Width, Bitmap.Height,     // Source Width & Height
+                  BitmapImage,
+                  TBitmapInfo(BitmapHeader^),
+                  DIB_RGB_COLORS,
+                  SRCCOPY)
+  finally
+    FreeMem(BitmapHeader);
+    FreeMem(BitmapImage)
+  end
+end {PrintBitmap};
+
+initialization
+  { nothing to initialize }
+
+finalization
+  uTree.Free;
+  uReportsList.Free;
+  uLabReports.Free;
+  uDateRanges.Free;
+  uHSTypes.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rSurgery.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rSurgery.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rSurgery.pas	(revision 1676)
@@ -0,0 +1,315 @@
+unit rSurgery;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, TRPCB, dialogs, uSurgery;
+
+type
+  TSurgCaseContext = record
+    Changed: Boolean;
+    OpProc:  string;
+    BeginDate: string;
+    FMBeginDate: TFMDateTime;
+    EndDate: string;
+    FMEndDate: TFMDateTime;
+    MaxDocs: integer;
+    Status: string;
+    GroupBy: string;
+    TreeAscending: Boolean;
+  end ;
+
+  TShowSurgeryTab = record
+    Evaluated: boolean;
+    ShowIt:     boolean;
+  end;
+
+  TShowOpTop = record
+    Evaluated: boolean;
+    ShowIt:    integer;
+  end;
+
+{Surgery Titles }
+function  DfltSurgeryTitle(AClassName: string): integer;
+function  DfltSurgeryTitleName(AClassName: string): string;
+procedure ListSurgeryTitlesShort(Dest: TStrings; AClassName: string);
+function SubSetOfSurgeryTitles(const StartFrom: string; Direction: Integer; AClassName: string): TStrings;
+function IsSurgeryTitle(TitleIEN: Integer): Boolean;
+procedure ResetSurgeryTitles;
+
+{ Data Retrieval }
+procedure GetSurgCaseList(Dest: TStrings; Early, Late: double; Context, Max: integer);
+procedure ListSurgeryCases(Dest: TStrings);
+procedure GetSingleCaseListItemWithDocs(Dest: TStrings; NoteIEN: integer);
+function GetSingleCaseListItemWithoutDocs(NoteIEN: integer): string;
+//procedure LoadOpTop(Dest: TStrings; ACaseIEN: integer; IsNonORProc, ShowReport: boolean) ;
+procedure LoadSurgReportText(Dest: TStrings; IEN: integer) ;
+procedure LoadSurgReportDetail(Dest: TStrings; IEN: integer) ;
+function  GetCurrentSurgCaseContext: TSurgCaseContext;
+procedure SaveCurrentSurgCaseContext(AContext: TSurgCaseContext) ;
+function  GetSurgCaseRefForNote(NoteIEN: integer): string;
+//function  ShowOpTopOnSignature(ACaseIEN: integer): integer;
+function ShowSurgeryTab: boolean;
+function IsNonORProcedure(ACaseIEN: integer): boolean;
+
+implementation
+
+var
+  uSurgeryTitles: TSurgeryTitles;
+  uShowSurgeryTab: TShowSurgeryTab;
+  //uShowOpTop: TShowOpTop;
+
+function ShowSurgeryTab: boolean;
+begin
+  with uShowSurgeryTab do
+    begin
+      if not Evaluated then
+        begin
+          ShowIt := sCallV('ORWSR SHOW SURG TAB', [nil]) = '1';
+          Evaluated := True;
+        end;
+      Result := ShowIt;
+    end;
+end;
+{ -------------------------- Surgery Titles --------------------------------- }
+
+procedure LoadSurgeryTitles(AClassName: string);
+{ private - called to set up the uSurgeryTitles object }
+var
+  SurgeryClass: integer;
+  x: string;
+begin
+  if uSurgeryTitles <> nil then
+  begin
+    if uSurgeryTitles.Classname = AClassName then exit;
+    uSurgeryTitles.Free;
+    uSurgeryTitles := nil;
+  end;
+  // pass in class name to return OR/non-OR class, depending on selected case
+  SurgeryClass := StrToInt(sCallV('TIU IDENTIFY SURGERY CLASS',[AClassName]))  ;
+  CallV('TIU PERSONAL TITLE LIST', [User.DUZ, SurgeryClass]);
+  RPCBrokerV.Results.Insert(0, '~SHORT LIST');  // insert so can call ExtractItems
+  uSurgeryTitles := TSurgeryTitles.Create;
+  ExtractItems(uSurgeryTitles.ShortList, RPCBrokerV.Results, 'SHORT LIST');
+  x := ExtractDefault(RPCBrokerV.Results, 'SHORT LIST');
+  uSurgeryTitles.ClassName := AClassName;
+  uSurgeryTitles.DfltTitle := StrToIntDef(Piece(x, U, 1), 0);
+  uSurgeryTitles.DfltTitleName := Piece(x, U, 2);
+end;
+
+procedure ResetSurgeryTitles;
+begin
+  if uSurgeryTitles <> nil then
+    begin
+      uSurgeryTitles.Free;
+      uSurgeryTitles := nil;
+    end;
+end;
+
+function DfltSurgeryTitle(AClassName: string): integer;
+{ returns the user defined default Surgery title (if any) }
+begin
+  if AClassName <> uSurgeryTitles.ClassName then LoadSurgeryTitles(AClassName);
+  Result := uSurgeryTitles.DfltTitle;
+end;
+
+function DfltSurgeryTitleName(AClassName: string): string;
+{ returns the name of the user defined default progress note title (if any) }
+begin
+  if AClassName <> uSurgeryTitles.ClassName then LoadSurgeryTitles(AClassName);
+  Result := uSurgeryTitles.DfltTitleName;
+end;
+
+procedure ListSurgeryTitlesShort(Dest: TStrings; AClassName: string);
+{ returns the user defined list (short list) of Surgery titles }
+begin
+  if (uSurgeryTitles = nil) or (AClassName <> uSurgeryTitles.ClassName) then LoadSurgeryTitles(AClassName);
+  FastAddStrings(uSurgeryTitles.ShortList, Dest);
+  if uSurgeryTitles.ShortList.Count > 0 then
+  begin
+    Dest.Add('0^________________________________________________________________________');
+    Dest.Add('0^ ');
+  end;
+end;
+
+function SubSetOfSurgeryTitles(const StartFrom: string; Direction: Integer; AClassName: string): TStrings;
+{ returns a pointer to a list of Surgery progress note titles (for use in a long list box) -
+  The return value is a pointer to RPCBrokerV.Results, so the data must be used BEFORE
+  the next broker call! }
+begin
+   // pass in class name based on OR/non-OR
+   CallV('TIU LONG LIST SURGERY TITLES', [StartFrom, Direction, AClassName]);
+  //MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+function IsSurgeryTitle(TitleIEN: Integer): Boolean;
+begin
+  Result := False;
+  if not ShowSurgeryTab then exit;
+  if TitleIEN <= 0 then Exit;
+  Result := sCallV('TIU IS THIS A SURGERY?', [TitleIEN]) = '1';
+end;
+
+{--------------- data retrieval ------------------------------------------}
+
+procedure GetSurgCaseList(Dest: TStrings; Early, Late: double; Context, Max: integer);
+{ returns a list of surgery cases for a patient, based on selected dates, service, status, or ALL}
+(*
+CASE #^Operative Procedure^Date/Time of Operation^Surgeon;Surgeon name^^^^^^^^^+^Context*)
+var
+  date1, date2: string;
+begin
+  if Early <= 0 then date1 := '' else date1 := FloatToStr(Early) ;
+  if Late  <= 0 then date2 := '' else date2 := FloatToStr(Late)  ;
+  CallV('ORWSR LIST', [Patient.DFN, date1, date2, Context, Max]);
+  with RPCBrokerV do
+   begin
+    if Results.Count > 0 then
+      begin
+       SortByPiece(TStringList(Results), U, 2);
+       InvertStringList(TStringList(Results));
+       FastAssign(Results, Dest);
+     end
+    else
+     begin
+       Dest.Clear ;
+       Dest.Add('-1^No Matches') ;
+     end ;
+  end;
+end;
+
+procedure ListSurgeryCases(Dest: TStrings);
+{ returns a list of surgery cases for a patient, without documents, for fNoteProps case selection}
+//CASE #^Operative Procedure^Date/Time of Operation^Surgeon;Surgeon name)
+begin
+  CallV('ORWSR CASELIST', [Patient.DFN]);
+  with RPCBrokerV do
+   begin
+    if Results.Count > 0 then
+      begin
+       SortByPiece(TStringList(Results), U, 3);
+       InvertStringList(TStringList(Results));
+       SetListFMDateTime('mmm dd,yy hh:nn', TStringList(Results), U, 3);
+       FastAssign(Results, Dest);
+     end
+    else
+     begin
+       Dest.Clear ;
+       Dest.Add('-1^No Cases Found') ;
+     end ;
+  end;
+end;
+
+
+procedure LoadSurgReportText(Dest: TStrings; IEN: integer) ;
+{ returns the text of a surgery report }
+begin
+  CallV('TIU GET RECORD TEXT', [IEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadSurgReportDetail(Dest: TStrings; IEN: integer) ;
+{ returns the detail of a surgery report }
+begin
+  CallV('TIU DETAILED DISPLAY', [IEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+(*procedure LoadOpTop(Dest: TStrings; ACaseIEN: integer; IsNonORProc, ShowReport: boolean) ;
+{ returns the OpTop for a surgical case }
+begin
+  if IsNonORProc then
+    CallV('ORWSR OPTOP NON-OR', [ACaseIEN, ShowReport])
+  else
+    CallV('ORWSR OPTOP', [ACaseIEN, ShowReport]);
+  with RPCBrokerV do
+    begin
+      //if Results.Count > 0 then Results.Delete(0);   //This is the value of the ShowOpTopOnSignature site parameter.
+      FastAssign(Results, Dest);
+    end;
+end;*)
+
+function GetCurrentSurgCaseContext: TSurgCaseContext;
+var
+  x: string;
+  AContext: TSurgCaseContext;
+begin
+  x := sCallV('ORWSR GET SURG CONTEXT', [User.DUZ]) ;
+  with AContext do
+    begin
+      Changed       := True;
+      BeginDate     := Piece(x, ';', 1);
+      FMBeginDate   := StrToFMDateTime(BeginDate);
+      EndDate       := Piece(x, ';', 2);
+      FMEndDate     := StrToFMDateTime(EndDate);
+      Status        := Piece(x, ';', 3);
+      GroupBy       := Piece(x, ';', 4);
+      MaxDocs       := StrToIntDef(Piece(x, ';', 5), 0);
+      TreeAscending     := (Piece(x, ';', 6) = '1');
+    end;
+  Result := AContext;
+end ;
+
+procedure SaveCurrentSurgCaseContext(AContext: TSurgCaseContext) ;
+var
+  x: string;
+begin
+  with AContext do
+    begin
+      SetPiece(x, ';', 1, BeginDate);
+      SetPiece(x, ';', 2, EndDate);
+      SetPiece(x, ';', 3, Status);
+      SetPiece(x, ';', 4, GroupBy);
+      SetPiece(x, ';', 5, IntToStr(MaxDocs));
+      SetPiece(x, ';', 6, BOOLCHAR[TreeAscending]);
+    end;
+  CallV('ORWSR SAVE SURG CONTEXT', [x]);
+end;                                                                                 
+
+function GetSurgCaseRefForNote(NoteIEN: integer): string;
+var
+  x: string;
+begin
+  x := sCallV('TIU GET REQUEST', [NoteIEN]);
+  if Piece(x, ';', 2) <> 'SRF(' then
+    Result := '-1'
+  else
+    Result := x
+end;
+
+procedure GetSingleCaseListItemWithDocs(Dest: TStrings; NoteIEN: integer);
+begin
+  CallV('ORWSR ONECASE', [NoteIEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function GetSingleCaseListItemWithoutDocs(NoteIEN: integer): string;
+begin
+  CallV('ORWSR ONECASE', [NoteIEN]);
+  if RPCBrokerV.Results.Count > 0 then Result := RPCBrokerV.Results[0];
+end;
+
+(*function  ShowOpTopOnSignature(ACaseIEN: integer): integer;
+begin
+  with uShowOpTop do
+    begin
+      if not Evaluated then
+        begin
+          ShowIt := StrToIntDef(sCallV('ORWSR SHOW OPTOP WHEN SIGNING', [ACaseIEN]), 0);
+          Evaluated := True;
+        end;
+      Result := ShowIt;
+    end;
+end;*)
+
+function IsNonORProcedure(ACaseIEN: integer): boolean;
+begin
+  Result := sCallV('ORWSR IS NON-OR PROCEDURE', [ACaseIEN]) = '1';
+end;
+
+initialization
+
+finalization
+  if uSurgeryTitles <> nil then uSurgeryTitles.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/rTIU.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/rTIU.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/rTIU.pas	(revision 1676)
@@ -0,0 +1,1179 @@
+unit rTIU;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, uConst, TRPCB, uTIU;
+
+type
+  TPatchInstalled = record
+    PatchInstalled: boolean;
+    PatchChecked: boolean;
+  end;
+
+{ Progress Note Titles }
+function DfltNoteTitle: Integer;
+function DfltNoteTitleName: string;
+procedure ResetNoteTitles;
+function IsConsultTitle(TitleIEN: Integer): Boolean;
+function IsPRFTitle(TitleIEN: Integer): Boolean;
+function IsClinProcTitle(TitleIEN: Integer): Boolean;
+procedure ListNoteTitlesShort(Dest: TStrings);
+procedure LoadBoilerPlate(Dest: TStrings; Title: Integer);
+function PrintNameForTitle(TitleIEN: Integer): string;
+function SubSetOfNoteTitles(const StartFrom: string; Direction: Integer; IDNotesOnly: boolean): TStrings;
+
+{ TIU Preferences }
+procedure ResetTIUPreferences;
+function AskCosignerForNotes: Boolean;
+function AskCosignerForDocument(ADocument: Integer; AnAuthor: Int64; ADate: TFMDateTime): Boolean;
+function AskCosignerForTitle(ATitle: integer; AnAuthor: Int64; ADate: TFMDateTime): Boolean;
+function AskSubjectForNotes: Boolean;
+function CanCosign(ATitle, ADocType: integer; AUser: Int64; ADate: TFMDateTime): Boolean;
+function CanChangeCosigner(IEN: integer): boolean;
+procedure DefaultCosigner(var IEN: Int64; var Name: string);
+function ReturnMaxNotes: Integer;
+function SortNotesAscending: Boolean;
+function GetCurrentTIUContext: TTIUContext;
+procedure SaveCurrentTIUContext(AContext: TTIUContext) ;
+function TIUSiteParams: string;
+function DfltTIULocation: Integer;
+function DfltTIULocationName: string;
+
+{ Data Retrieval }
+procedure ActOnDocument(var AuthSts: TActionRec; IEN: Integer; const ActionName: string);
+function AuthorSignedDocument(IEN: Integer): boolean;
+function CosignDocument(IEN: Integer): Boolean;
+//function CPTRequiredForNote(IEN: Integer): Boolean;
+procedure ListNotes(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+procedure ListNotesForTree(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+procedure ListConsultRequests(Dest: TStrings);
+procedure ListDCSumm(Dest: TStrings);
+procedure LoadDetailText(Dest: TStrings; IEN: Integer);    //**KCM**
+procedure LoadDocumentText(Dest: TStrings; IEN: Integer);
+procedure GetNoteForEdit(var EditRec: TEditNoteRec; IEN: Integer);
+function VisitStrForNote(IEN: Integer): string;
+function GetCurrentSigners(IEN: integer): TStrings;
+function TitleForNote(IEN: Int64): Integer;
+function GetConsultIENforNote(NoteIEN: integer): Integer;
+function GetPackageRefForNote(NoteIEN: integer): string;
+procedure LockDocument(IEN: Int64; var AnErrMsg: string);
+procedure UnlockDocument(IEN: Int64);
+function LastSaveClean(IEN: Int64): Boolean;
+function NoteHasText(NoteIEN: integer): boolean;
+function GetTIUListItem(IEN: Int64): string;
+
+{ Data Storage }
+//procedure ClearCPTRequired(IEN: Integer);
+procedure DeleteDocument(var DeleteSts: TActionRec; IEN: Integer; const Reason: string);
+function JustifyDocumentDelete(IEN: Integer): Boolean;
+procedure SignDocument(var SignSts: TActionRec; IEN: Integer; const ESCode: string);
+procedure PutNewNote(var CreatedDoc: TCreatedDoc; const NoteRec: TNoteRec);
+procedure PutAddendum(var CreatedDoc: TCreatedDoc; const NoteRec: TNoteRec; AddendumTo: Integer);
+procedure PutEditedNote(var UpdatedDoc: TCreatedDoc; const NoteRec: TNoteRec; NoteIEN: Integer);
+procedure PutTextOnly(var ErrMsg: string; NoteText: TStrings; NoteIEN: Int64);
+procedure SetText(var ErrMsg: string; NoteText: TStrings; NoteIEN: Int64; Suppress: Integer);
+procedure InitParams(NoteIEN: Int64; Suppress: Integer);
+procedure UpdateAdditionalSigners(IEN: integer; Signers: TStrings);
+procedure ChangeCosigner(IEN: integer; Cosigner: int64);
+
+{ Printing }
+function AllowChartPrintForNote(ANote: Integer): Boolean;
+procedure PrintNoteToDevice(ANote: Integer; const ADevice: string; ChartCopy: Boolean;
+  var ErrMsg: string);
+function GetFormattedNote(ANote: Integer; ChartCopy: Boolean): TStrings;
+
+//  Interdisciplinary Notes
+function IDNotesInstalled: boolean;
+function CanTitleBeIDChild(Title: integer; var WhyNot: string): boolean;
+function CanReceiveAttachment(DocID: string; var WhyNot: string): boolean;
+function CanBeAttached(DocID: string; var WhyNot: string): boolean;
+function DetachEntryFromParent(DocID: string; var WhyNot: string): boolean;
+function AttachEntryToParent(DocID, ParentDocID: string; var WhyNot: string): boolean;
+function OneNotePerVisit(NoteEIN: Integer; DFN: String;VisitStr: String): boolean;
+
+
+//User Classes
+function SubSetOfUserClasses(const StartFrom: string; Direction: Integer): TStrings;
+function UserDivClassInfo(User: Int64): TStrings;
+function UserInactive(EIN: String): boolean;
+
+//Miscellaneous
+function TIUPatch175Installed: boolean;
+
+const
+  CLS_PROGRESS_NOTES = 3;
+
+implementation
+
+uses rMisc;
+
+var
+  uTIUSiteParams: string;
+  uTIUSiteParamsLoaded: boolean = FALSE;
+  uNoteTitles: TNoteTitles;
+  uTIUPrefs: TTIUPrefs;
+  uPatch175Installed: TPatchInstalled;
+
+
+{ Progress Note Titles  -------------------------------------------------------------------- }
+
+procedure LoadNoteTitles;
+{ private - called one time to set up the uNoteTitles object }
+const
+  CLASS_PROGRESS_NOTES = 3;
+var
+  x: string;
+begin
+  if uNoteTitles <> nil then Exit;
+  CallV('TIU PERSONAL TITLE LIST', [User.DUZ, CLS_PROGRESS_NOTES]);
+  RPCBrokerV.Results.Insert(0, '~SHORT LIST');  // insert so can call ExtractItems
+  uNoteTitles := TNoteTitles.Create;
+  ExtractItems(uNoteTitles.ShortList, RPCBrokerV.Results, 'SHORT LIST');
+  x := ExtractDefault(RPCBrokerV.Results, 'SHORT LIST');
+  uNoteTitles.DfltTitle := StrToIntDef(Piece(x, U, 1), 0);
+  uNoteTitles.DfltTitleName := Piece(x, U, 2);
+end;
+
+procedure ResetNoteTitles;
+begin
+  if uNoteTitles <> nil then
+    begin
+      uNoteTitles.Free;
+      uNoteTitles := nil;
+      LoadNoteTitles;
+    end;
+end;
+
+function DfltNoteTitle: Integer;
+{ returns the IEN of the user defined default progress note title (if any) }
+begin
+  if uNoteTitles = nil then LoadNoteTitles;
+  Result := uNoteTitles.DfltTitle;
+end;
+
+function DfltNoteTitleName: string;
+{ returns the name of the user defined default progress note title (if any) }
+begin
+  if uNoteTitles = nil then LoadNoteTitles;
+  Result := uNoteTitles.DfltTitleName;
+end;
+
+function IsConsultTitle(TitleIEN: Integer): Boolean;
+begin
+  Result := False;
+  if TitleIEN <= 0 then Exit;
+  Result := sCallV('TIU IS THIS A CONSULT?', [TitleIEN]) = '1';
+end;
+
+function IsPRFTitle(TitleIEN: Integer): Boolean;
+begin
+  Result := False;
+  if TitleIEN <= 0 then Exit;
+  Result := sCallV('TIU ISPRF', [TitleIEN]) = '1'; 
+end;
+
+function IsClinProcTitle(TitleIEN: Integer): Boolean;
+begin
+  Result := False;
+  if TitleIEN <= 0 then Exit;
+  Result := sCallV('TIU IS THIS A CLINPROC?', [TitleIEN]) = '1';
+end;
+
+procedure ListNoteTitlesShort(Dest: TStrings);
+{ returns the user defined list (short list) of progress note titles }
+begin
+  if uNoteTitles = nil then LoadNoteTitles;
+  Dest.AddStrings(uNoteTitles.Shortlist);
+  //FastAddStrings(uNoteTitles.ShortList, Dest);  // backed out from v27.27 - CQ #14619 - RV
+  if uNoteTitles.ShortList.Count > 0 then
+  begin
+    Dest.Add('0^________________________________________________________________________');
+    Dest.Add('0^ ');
+  end;
+end;
+
+procedure LoadBoilerPlate(Dest: TStrings; Title: Integer);
+{ returns the boilerplate text (if any) for a given progress note title }
+begin
+  CallV('TIU LOAD BOILERPLATE TEXT', [Title, Patient.DFN, Encounter.VisitStr]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+function PrintNameForTitle(TitleIEN: Integer): string;
+begin
+  Result := sCallV('TIU GET PRINT NAME', [TitleIEN]);
+end;
+
+function SubSetOfNoteTitles(const StartFrom: string; Direction: Integer; IDNotesOnly: boolean): TStrings;
+{ returns a pointer to a list of progress note titles (for use in a long list box) -
+  The return value is a pointer to RPCBrokerV.Results, so the data must be used BEFORE
+  the next broker call! }
+begin
+  if IDNotesOnly then
+    CallV('TIU LONG LIST OF TITLES', [CLS_PROGRESS_NOTES, StartFrom, Direction, IDNotesOnly])
+  else
+    CallV('TIU LONG LIST OF TITLES', [CLS_PROGRESS_NOTES, StartFrom, Direction]);
+  //MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results;
+end;
+
+{ TIU Preferences  ------------------------------------------------------------------------- }
+
+procedure LoadTIUPrefs;
+{ private - creates TIUPrefs object for reference throughout the session }
+var
+  x: string;
+begin
+  uTIUPrefs := TTIUPrefs.Create;
+  with uTIUPrefs do
+  begin
+    x := sCallV('TIU GET PERSONAL PREFERENCES', [User.DUZ]);
+    DfltLoc := StrToIntDef(Piece(x, U, 2), 0);
+    DfltLocName := ExternalName(DfltLoc, FN_HOSPITAL_LOCATION);
+    SortAscending := Piece(x, U, 4) = 'A';
+    SortBy := Piece(x, U, 3);
+    AskNoteSubject := Piece(x, U, 8) = '1';
+    DfltCosigner := StrToInt64Def(Piece(x, U, 9), 0);
+    DfltCosignerName := ExternalName(DfltCosigner, FN_NEW_PERSON);
+    MaxNotes := StrToIntDef(Piece(x, U, 10), 0);
+    x := sCallV('TIU REQUIRES COSIGNATURE', [TYP_PROGRESS_NOTE, 0, User.DUZ]);
+    AskCosigner := Piece(x, U, 1) = '1';
+  end;
+end;
+
+procedure ResetTIUPreferences;
+begin
+  if uTIUPrefs <> nil then
+    begin
+      uTIUPrefs.Free;
+      uTIUPrefs := nil;
+      LoadTIUPrefs;
+    end;
+end;
+
+function AskCosignerForDocument(ADocument: Integer; AnAuthor: Int64; ADate: TFMDateTime): Boolean;
+begin
+  if TIUPatch175Installed then
+    Result := Piece(sCallV('TIU REQUIRES COSIGNATURE', [0, ADocument, AnAuthor, ADate]), U, 1) = '1'
+  else
+    Result := Piece(sCallV('TIU REQUIRES COSIGNATURE', [0, ADocument, AnAuthor]), U, 1) = '1';
+end;
+
+function AskCosignerForTitle(ATitle: integer; AnAuthor: Int64; ADate: TFMDateTime): Boolean;
+{ returns TRUE if a cosignature is required for a document title and author }
+begin
+  if TIUPatch175Installed then
+    Result := Piece(sCallV('TIU REQUIRES COSIGNATURE', [ATitle, 0, AnAuthor, ADate]), U, 1) = '1'
+  else
+    Result := Piece(sCallV('TIU REQUIRES COSIGNATURE', [ATitle, 0, AnAuthor]), U, 1) = '1';
+end;
+
+function AskCosignerForNotes: Boolean;
+{ returns true if cosigner should be asked when creating a new progress note }
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  Result := uTIUPrefs.AskCosigner;
+end;
+
+function AskSubjectForNotes: Boolean;
+{ returns true if subject should be asked when creating a new progress note }
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  Result := uTIUPrefs.AskNoteSubject;
+end;
+
+function CanCosign(ATitle, ADocType: integer; AUser: Int64; ADate: TFMDateTime): Boolean;
+begin
+  if ATitle > 0 then ADocType := 0;
+  if TIUPatch175Installed and (ADocType = 0) then
+    Result := Piece(sCallV('TIU REQUIRES COSIGNATURE', [ATitle, ADocType, AUser, ADate]), U, 1) <> '1'
+  else
+    Result := Piece(sCallV('TIU REQUIRES COSIGNATURE', [ATitle, ADocType, AUser]), U, 1) <> '1';
+end;
+
+procedure DefaultCosigner(var IEN: Int64; var Name: string);
+{ returns the IEN (from the New Person file) and Name of this user's default cosigner }
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  IEN := uTIUPrefs.DfltCosigner;
+  Name := uTIUPrefs.DfltCosignerName;
+end;
+
+function ReturnMaxNotes: Integer;
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  Result := uTIUPrefs.MaxNotes;
+  if Result = 0 then Result := 100;
+end;
+
+function SortNotesAscending: Boolean;
+{ returns true if progress notes should be sorted from oldest to newest (chronological) }
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  Result := uTIUPrefs.SortAscending;
+end;
+
+function DfltTIULocation: Integer;
+{ returns the IEN of the user defined default progress note title (if any) }
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  Result := uTIUPrefs.DfltLoc;
+end;
+
+function DfltTIULocationName: string;
+{ returns the name of the user defined default progress note title (if any) }
+begin
+  if uTIUPrefs = nil then LoadTIUPrefs;
+  Result := uTIUPrefs.DfltLocName;
+end;
+
+{ Data Retrieval --------------------------------------------------------------------------- }
+
+procedure ActOnDocument(var AuthSts: TActionRec; IEN: Integer; const ActionName: string);
+var
+  x: string;
+begin
+  if not (IEN > 0) then
+  begin
+    AuthSts.Success := True;
+    AuthSts.Reason := '';
+    Exit;
+  end;
+  x := sCallV('TIU AUTHORIZATION', [IEN, ActionName]);
+  AuthSts.Success := Piece(x, U, 1) = '1';
+  AuthSts.Reason  := Piece(x, U, 2);
+end;
+
+function AuthorSignedDocument(IEN: Integer): boolean;
+begin
+  Result := SCallV('TIU HAS AUTHOR SIGNED?', [IEN, User.DUZ]) = '1'; 
+end;
+
+function CosignDocument(IEN: Integer): Boolean;
+var
+  x: string;
+begin
+  x := sCallV('TIU WHICH SIGNATURE ACTION', [IEN]);
+  Result := x = 'COSIGNATURE';
+end;
+
+(*function CPTRequiredForNote(IEN: Integer): Boolean;
+begin
+  If IEN > 0 then
+    Result := sCallV('ORWPCE CPTREQD', [IEN]) = '1'
+  else
+    Result := False;
+end;*)
+
+procedure ListConsultRequests(Dest: TStrings);
+{ lists outstanding consult requests for a patient: IEN^Request D/T^Service^Procedure }
+begin
+  CallV('GMRC LIST CONSULT REQUESTS', [Patient.DFN]);
+  //MixedCaseList(RPCBrokerV.Results);
+  { remove first returned string, it is just a count }
+  if RPCBrokerV.Results.Count > 0 then RPCBrokerV.Results.Delete(0);
+  SetListFMDateTime('mmm dd,yy hh:nn', TStringList(RPCBrokerV.Results), U, 2);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure ListNotes(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+{ retrieves existing progress notes for a patient according to the parameters passed in
+  Pieces: IEN^Title^FMDateOfNote^Patient^Author^Location^Status^Visit
+  Return: IEN^ExDateOfNote^Title, Location, Author^ImageCount^Visit }
+var
+  i: Integer;
+  x: string;
+  SortSeq: Char;
+begin
+  if SortAscending then SortSeq := 'A' else SortSeq := 'D';
+  //if OccLim = 0 then OccLim := MaxNotesReturned;
+  CallV('TIU DOCUMENTS BY CONTEXT',
+         [3, Context, Patient.DFN, Early, Late, Person, OccLim, SortSeq]);
+  with RPCBrokerV do
+  begin
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      x := Piece(x, U, 1) + U + FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3))) +
+           U + Piece(x, U, 2) + ', ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2) +
+           U + Piece(x, U, 11) + U + Piece(x, U, 8) + U + Piece(x, U, 3);
+      Results[i] := x;
+    end; {for}
+    FastAssign(RPCBrokerV.Results, Dest);
+  end; {with}
+end;
+
+procedure ListNotesForTree(Dest: TStrings; Context: Integer; Early, Late: TFMDateTime;
+  Person: int64; OccLim: Integer; SortAscending: Boolean);
+{ retrieves existing progress notes for a patient according to the parameters passed in
+  Pieces: IEN^Title^FMDateOfNote^Patient^Author^Location^Status^Visit
+  Return: IEN^ExDateOfNote^Title, Location, Author^ImageCount^Visit }
+var
+  SortSeq: Char;
+const
+  SHOW_ADDENDA = True;
+begin
+  if SortAscending then SortSeq := 'A' else SortSeq := 'D';
+  if Context > 0 then
+    begin
+      CallV('TIU DOCUMENTS BY CONTEXT', [3, Context, Patient.DFN, Early, Late, Person, OccLim, SortSeq, SHOW_ADDENDA]);
+      FastAssign(RPCBrokerV.Results, Dest);
+    end;
+end;
+
+
+procedure ListDCSumm(Dest: TStrings);
+{ returns the list of discharge summaries for a patient - see ListNotes for pieces }
+var
+  i: Integer;
+  x: string;
+begin
+  CallV('TIU SUMMARIES', [Patient.DFN]);
+  with RPCBrokerV do
+  begin
+    SortByPiece(TStringList(Results), U, 3);     // sort on date/time of summary
+    for i := 0 to Results.Count - 1 do
+    begin
+      x := Results[i];
+      x := Piece(x, U, 1) + U + FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3)))
+           + U + Piece(x, U, 2) + ', ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2);
+      Results[i] := x;
+    end; {for}
+    FastAssign(RPCBrokerV.Results, Dest);
+  end; {with}
+end;
+
+procedure LoadDocumentText(Dest: TStrings; IEN: Integer);
+{ returns the text of a document (progress note, discharge summary, etc.) }
+begin
+  CallV('TIU GET RECORD TEXT', [IEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure LoadDetailText(Dest: TStrings; IEN: Integer);    //**KCM**
+begin
+  CallV('TIU DETAILED DISPLAY', [IEN]);
+  FastAssign(RPCBrokerV.Results, Dest);
+end;
+
+procedure GetNoteForEdit(var EditRec: TEditNoteRec; IEN: Integer);
+{ retrieves internal/external values for progress note fields & loads them into EditRec
+  Fields: Title:.01, RefDate:1301, Author:1204, Cosigner:1208, Subject:1701, Location:1205 }
+var
+  i, j: Integer;
+  //x: string;
+
+  function FindDT(const FieldID: string): TFMDateTime;
+  var
+    i: Integer;
+  begin
+    Result := 0;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := MakeFMDateTime(Piece(Results[i], U, 2));
+        Break;
+      end;
+  end;
+
+  function FindExt(const FieldID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := Piece(Results[i], U, 3);
+        Break;
+      end;
+  end;
+
+  function FindInt(const FieldID: string): Integer;
+  var
+    i: Integer;
+  begin
+    Result := 0;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := StrToIntDef(Piece(Results[i], U, 2), 0);
+        Break;
+      end;
+  end;
+
+  function FindInt64(const FieldID: string): Int64;
+  var
+    i: Integer;
+  begin
+    Result := 0;
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := StrToInt64Def(Piece(Results[i], U, 2), 0);
+        Break;
+      end;
+  end;
+
+  function FindVal(const FieldID: string): string;
+  var
+    i: Integer;
+  begin
+    Result := '';
+    with RPCBrokerV do for i := 0 to Results.Count - 1 do
+      if Piece(Results[i], U, 1) = FieldID then
+      begin
+        Result := Piece(Results[i], U, 2);
+        Break;
+      end;
+  end;
+
+begin
+  CallV('TIU LOAD RECORD FOR EDIT', [IEN, '.01;.06;.07;1301;1204;1208;1701;1205;1405;2101;70201;70202']);
+  FillChar(EditRec, SizeOf(EditRec), 0);
+  with EditRec do
+  begin
+    Title        := FindInt('.01');
+    TitleName    := FindExt('.01');
+    DateTime     := FindDT('1301');
+    Author       := FindInt64('1204');
+    AuthorName   := FindExt('1204');
+    Cosigner     := FindInt64('1208');
+    CosignerName := FindExt('1208');
+    Subject      := FindExt('1701');
+    Location     := FindInt('1205');
+    LocationName := FindExt('1205');
+    IDParent     := FindInt('2101');
+    ClinProcSummCode := FindInt('70201');
+    ClinProcDateTime := FindDT('70202');
+    VisitDate    := FindDT('.07');
+    PkgRef       := FindVal('1405');
+    PkgIEN       := StrToIntDef(Piece(PkgRef, ';', 1), 0);
+    PkgPtr       := Piece(PkgRef, ';', 2);
+    if Title = TYP_ADDENDUM then Addend := FindInt('.06');
+    with RPCBrokerV do
+    begin
+      for i := 0 to Results.Count - 1 do if Results[i] = '$TXT' then break;
+      for j := i downto 0 do Results.Delete(j);
+      // -------------------- v19.1 (RV) LOST NOTES?----------------------------
+      //Lines := Results;   'Lines' is being overwritten by subsequent Broker calls
+      if not Assigned(Lines) then Lines := TStringList.Create;
+      FastAssign(RPCBrokerV.Results, Lines);
+      // -----------------------------------------------------------------------
+    end;
+  end;
+end;
+
+function VisitStrForNote(IEN: Integer): string;
+begin
+  Result := sCallV('ORWPCE NOTEVSTR', [IEN]);
+end;
+
+function TitleForNote(IEN: Int64): Integer;
+begin
+  Result := StrToIntDef(sCallV('TIU GET DOCUMENT TITLE', [IEN]), 3);
+//  with RPCBrokerV do
+//  begin
+//    ClearParameters := True;
+//    RemoteProcedure := 'XWB GET VARIABLE VALUE';
+//    Param[0].PType := reference;
+//    Param[0].Value := '$G(^TIU(8925,' + IntToStr(IEN) + ',0))';
+//    CallBroker;
+//    Result := StrToIntDef(Piece(Results[0], U, 1), 3);
+//  end;
+end;
+
+function GetPackageRefForNote(NoteIEN: integer): string;
+begin
+  Result := sCallV('TIU GET REQUEST', [NoteIEN]);
+end;
+
+function GetConsultIENforNote(NoteIEN: integer): Integer;
+var
+  x: string;
+begin
+  x := sCallV('TIU GET REQUEST', [NoteIEN]);
+  if Piece(x, ';', 2) <> PKG_CONSULTS then
+    Result := -1
+  else
+    Result := StrTOIntDef(Piece(x, ';', 1), -1);
+end;
+
+procedure LockDocument(IEN: Int64; var AnErrMsg: string);
+var
+  x: string;
+begin
+  x := sCallV('TIU LOCK RECORD', [IEN]);
+  if CharAt(x, 1) = '0' then AnErrMsg := '' else AnErrMsg := Piece(x, U, 2);
+end;
+
+procedure UnlockDocument(IEN: Int64);
+begin
+  CallV('TIU UNLOCK RECORD', [IEN]);
+end;
+
+function LastSaveClean(IEN: Int64): Boolean;
+begin
+  Result := sCallV('TIU WAS THIS SAVED?', [IEN]) = '1';
+end;
+
+function GetTIUListItem(IEN: Int64): string;
+begin
+  Result := sCallV('ORWTIU GET LISTBOX ITEM', [IEN]);
+end;
+
+{ Data Updates ----------------------------------------------------------------------------- }
+
+(*procedure ClearCPTRequired(IEN: Integer);
+{ sets CREDIT STOP CODE ON COMPLETION to NO when no more need to get encounter information }
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;                     
+    Param[0].Value := IntToStr(IEN);
+    Param[1].PType := list;
+    with Param[1] do Mult['.11']  := '0';          //  **** block removed in v19.1  {RV} ****
+    CallBroker;
+  end;
+end;*)
+
+procedure DeleteDocument(var DeleteSts: TActionRec; IEN: Integer; const Reason: string);
+{ delete a TIU document given the internal entry number, return reason if unable to delete }
+var
+  x: string;
+begin
+  x := sCallV('TIU DELETE RECORD', [IEN, Reason]);
+  DeleteSts.Success := Piece(x, U, 1) = '0';
+  DeleteSts.Reason  := Piece(x, U, 2);
+end;
+
+function JustifyDocumentDelete(IEN: Integer): Boolean;
+begin
+  Result := sCallV('TIU JUSTIFY DELETE?', [IEN]) = '1';
+end;
+
+procedure SignDocument(var SignSts: TActionRec; IEN: Integer; const ESCode: string);
+{ update signed status of a TIU document, return reason if signature is not accepted }
+var
+  x: string;
+begin
+(*  with RPCBrokerV do                           // temp - to insure sign doesn't go interactive
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;                           
+    Param[0].Value := IntToStr(IEN);
+    Param[1].PType := list;
+    with Param[1] do Mult['.11']  := '0';                 //  **** block removed in v19.1  {RV} ****
+    CallBroker;
+  end;                                         // temp - end*)
+  x := sCallV('TIU SIGN RECORD', [IEN, ESCode]);
+  SignSts.Success := Piece(x, U, 1) = '0';
+  SignSts.Reason  := Piece(x, U, 2);
+end;
+
+procedure PutNewNote(var CreatedDoc: TCreatedDoc; const NoteRec: TNoteRec);
+{ create a new progress note with the data in NoteRec and return its internal entry number
+  load broker directly since there isn't a good way to set up mutilple subscript arrays }
+(*var
+  i: Integer;*)
+var
+  ErrMsg: string;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU CREATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := Patient.DFN;  //*DFN*
+    Param[1].PType := literal;
+    Param[1].Value := IntToStr(NoteRec.Title);
+    Param[2].PType := literal;
+    Param[2].Value := ''; //FloatToStr(Encounter.DateTime);
+    Param[3].PType := literal;
+    Param[3].Value := ''; //IntToStr(Encounter.Location);
+    Param[4].PType := literal;
+    Param[4].Value := '';
+    Param[5].PType := list;
+    with Param[5] do
+    begin
+      //Mult['.11'] := BOOLCHAR[NoteRec.NeedCPT];  //  **** removed in v19.1  {RV} ****
+      Mult['1202'] := IntToStr(NoteRec.Author);
+      Mult['1301'] := FloatToStr(NoteRec.DateTime);
+      Mult['1205'] := IntToStr(Encounter.Location);
+      if NoteRec.Cosigner > 0 then Mult['1208'] := IntToStr(NoteRec.Cosigner);
+      if NoteRec.PkgRef <> '' then Mult['1405'] := NoteRec.PkgRef;
+      Mult['1701'] := FilteredString(Copy(NoteRec.Subject, 1, 80));
+      if NoteRec.IDParent > 0 then Mult['2101'] := IntToStr(NoteRec.IDParent);
+(*      if NoteRec.Lines <> nil then
+        for i := 0 to NoteRec.Lines.Count - 1 do
+          Mult['"TEXT",' + IntToStr(i+1) + ',0'] := FilteredString(NoteRec.Lines[i]);*)
+    end;
+    Param[6].PType := literal;
+    Param[6].Value := Encounter.VisitStr;
+    Param[7].PType := literal;
+    Param[7].Value := '1';  // suppress commit logic
+    CallBroker;
+    CreatedDoc.IEN := StrToIntDef(Piece(Results[0], U, 1), 0);
+    CreatedDoc.ErrorText := Piece(Results[0], U, 2);
+  end;
+  if ( NoteRec.Lines <> nil ) and ( CreatedDoc.IEN <> 0 ) then
+  begin
+    SetText(ErrMsg, NoteRec.Lines, CreatedDoc.IEN, 1);
+    if ErrMsg <> '' then
+    begin
+      CreatedDoc.IEN := 0;
+      CreatedDoc.ErrorText := ErrMsg;
+    end;
+  end;
+end;
+
+procedure PutAddendum(var CreatedDoc: TCreatedDoc; const NoteRec: TNoteRec; AddendumTo: Integer);
+{ create a new addendum for note identified in AddendumTo, returns IEN of new document
+  load broker directly since there isn't a good way to set up mutilple subscript arrays }
+(*var
+  i: Integer;*)
+var
+  ErrMsg: string;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU CREATE ADDENDUM RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(AddendumTo);
+    Param[1].PType := list;
+    with Param[1] do
+    begin
+      Mult['1202'] := IntToStr(NoteRec.Author);
+      Mult['1301'] := FloatToStr(NoteRec.DateTime);
+      if NoteRec.Cosigner > 0 then Mult['1208'] := IntToStr(NoteRec.Cosigner);
+(*      if NoteRec.Lines <> nil then
+        for i := 0 to NoteRec.Lines.Count - 1 do
+          Mult['"TEXT",' + IntToStr(i+1) + ',0'] := FilteredString(NoteRec.Lines[i]);*)
+    end;
+    Param[2].PType := literal;
+    Param[2].Value := '1';  // suppress commit logic
+    CallBroker;
+    CreatedDoc.IEN := StrToIntDef(Piece(Results[0], U, 1), 0);
+    CreatedDoc.ErrorText := Piece(Results[0], U, 2);
+  end;
+  if ( NoteRec.Lines <> nil ) and ( CreatedDoc.IEN <> 0 ) then
+  begin
+    SetText(ErrMsg, NoteRec.Lines, CreatedDoc.IEN, 1);
+    if ErrMsg <> '' then
+    begin
+      CreatedDoc.IEN := 0;
+      CreatedDoc.ErrorText := ErrMsg;
+    end;
+  end;
+end;
+
+procedure PutEditedNote(var UpdatedDoc: TCreatedDoc; const NoteRec: TNoteRec; NoteIEN: Integer);
+{ update the fields and content of the note identified in NoteIEN, returns 1 if successful
+  load broker directly since there isn't a good way to set up mutilple subscript arrays }
+(*var
+  i: Integer;*)
+var
+  ErrMsg: string;
+begin
+  // First, file field data
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(NoteIEN);
+    Param[1].PType := list;
+    with Param[1] do
+    begin
+      if NoteRec.Addend = 0 then
+        begin
+          Mult['.01']  := IntToStr(NoteRec.Title);
+          //Mult['.11']  := BOOLCHAR[NoteRec.NeedCPT];  //  **** removed in v19.1  {RV} ****
+        end;
+      Mult['1202'] := IntToStr(NoteRec.Author);
+      if NoteRec.Cosigner > 0 then Mult['1208'] := IntToStr(NoteRec.Cosigner);
+      if NoteRec.PkgRef <> '' then Mult['1405'] := NoteRec.PkgRef;
+      Mult['1301'] := FloatToStr(NoteRec.DateTime);
+      Mult['1701'] := FilteredString(Copy(NoteRec.Subject, 1, 80));
+      if NoteRec.ClinProcSummCode > 0 then Mult['70201'] := IntToStr(NoteRec.ClinProcSummCode);
+      if NoteRec.ClinProcDateTime > 0 then Mult['70202'] := FloatToStr(NoteRec.ClinProcDateTime);
+(*      for i := 0 to NoteRec.Lines.Count - 1 do
+        Mult['"TEXT",' + IntToStr(i+1) + ',0'] := FilteredString(NoteRec.Lines[i]);*)
+    end;
+    CallBroker;
+    UpdatedDoc.IEN := StrToIntDef(Piece(Results[0], U, 1), 0);
+    UpdatedDoc.ErrorText := Piece(Results[0], U, 2);
+  end;
+
+  if UpdatedDoc.IEN <= 0 then              //v22.12 - RV
+  //if UpdatedDoc.ErrorText <> '' then    //v22.5 - RV
+    begin
+      UpdatedDoc.ErrorText := UpdatedDoc.ErrorText + #13#10 + #13#10 + 'Document #:  ' + IntToStr(NoteIEN);
+      exit;  
+    end;
+
+  // next, if no error, file document body
+  SetText(ErrMsg, NoteRec.Lines, NoteIEN, 0);
+  if ErrMsg <> '' then
+  begin
+    UpdatedDoc.IEN := 0;
+    UpdatedDoc.ErrorText := ErrMsg;
+  end;
+end;
+
+procedure PutTextOnly(var ErrMsg: string; NoteText: TStrings; NoteIEN: Int64);
+var
+  i: Integer;
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(NoteIEN);
+    Param[1].PType := list;
+    for i := 0 to Pred(NoteText.Count) do
+      Param[1].Mult['"TEXT",' + IntToStr(Succ(i)) + ',0'] := FilteredString(NoteText[i]);
+    Param[2].PType := literal;
+    Param[2].Value :='1';  // suppress commit code
+    CallBroker;
+    if Piece(Results[0], U, 1) = '0' then ErrMsg := Piece(Results[0], U, 2) else ErrMsg := '';
+  end;
+end;
+
+procedure SetText(var ErrMsg: string; NoteText: TStrings; NoteIEN: Int64; Suppress: Integer);
+const
+  DOCUMENT_PAGE_SIZE = 300;
+  TX_SERVER_ERROR = 'An error occurred on the server.' ;
+var
+  i, j, page, pages: Integer;
+begin
+  // Compute pages, initialize Params
+  pages := ( NoteText.Count div DOCUMENT_PAGE_SIZE );
+  if (NoteText.Count mod DOCUMENT_PAGE_SIZE) > 0 then pages := pages + 1;
+  page := 1;
+  InitParams( NoteIEN, Suppress );
+  // Loop through NoteRec.Lines
+  for i := 0 to NoteText.Count - 1 do
+  begin
+    j := i + 1;
+    //Add each successive line to Param[1].Mult...
+    RPCBrokerV.Param[1].Mult['"TEXT",' + IntToStr(j) + ',0'] := FilteredString(NoteText[i]);
+    // When current page is filled, call broker, increment page, itialize params,
+    // and continue...
+    if ( j mod DOCUMENT_PAGE_SIZE ) = 0 then
+    begin
+      RPCBrokerV.Param[1].Mult['"HDR"'] := IntToStr(page) + U + IntToStr(pages);
+      CallBroker;
+      if RPCBrokerV.Results.Count > 0 then
+        ErrMsg := Piece(RPCBrokerV.Results[0], U, 4)
+      else
+        ErrMsg := TX_SERVER_ERROR;
+      if ErrMsg <> '' then Exit;
+      page := page + 1;
+      InitParams( NoteIEN, Suppress );
+    end; // if
+  end;   // for
+  // finally, file any remaining partial page
+  if ( NoteText.Count mod DOCUMENT_PAGE_SIZE ) <> 0 then
+  begin
+    RPCBrokerV.Param[1].Mult['"HDR"'] := IntToStr(page) + U + IntToStr(pages);
+    CallBroker;
+    if RPCBrokerV.Results.Count > 0 then
+      ErrMsg := Piece(RPCBrokerV.Results[0], U, 4)
+    else
+      ErrMsg := TX_SERVER_ERROR;
+  end;
+end;
+
+procedure InitParams( NoteIEN: Int64; Suppress: Integer );
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU SET DOCUMENT TEXT';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(NoteIEN);
+    Param[1].PType := list;
+    Param[2].PType := literal;
+    Param[2].Value := IntToStr(Suppress);
+  end;
+end;
+
+{ Printing --------------------------------------------------------------------------------- }
+
+function AllowChartPrintForNote(ANote: Integer): Boolean;
+{ returns true if a progress note may be printed outside of MAS }
+begin
+  Result := (Piece(sCallV('TIU GET DOCUMENT PARAMETERS', [ANote]), U, 9) = '1');
+  //        or (sCallV('TIU USER IS MEMBER OF CLASS', [User.DUZ, 'MEDICAL INFORMATION SECTION']) = '1');
+  //         (V16? - RV)  New TIU RPC required, per discussion on NOIS MAR-0900-21265
+end;
+
+procedure PrintNoteToDevice(ANote: Integer; const ADevice: string; ChartCopy: Boolean;
+  var ErrMsg: string);
+{ prints a progress note on the selected device }
+begin
+  ErrMsg := sCallV('TIU PRINT RECORD', [ANote, ADevice, ChartCopy]);
+  if Piece(ErrMsg, U, 1) = '0' then ErrMsg := '' else ErrMsg := Piece(ErrMsg, U, 2);
+end;
+
+function GetFormattedNote(ANote: Integer; ChartCopy: Boolean): TStrings;
+begin
+  CallV('ORWTIU WINPRINT NOTE',[ANote, ChartCopy]);
+  Result := RPCBrokerV.Results;
+end;
+
+function GetCurrentSigners(IEN: integer): TStrings;
+begin
+  CallV('TIU GET ADDITIONAL SIGNERS', [IEN]);
+  MixedCaseList(RPCBrokerV.Results);
+  Result := RPCBrokerV.Results ;
+end;
+
+procedure UpdateAdditionalSigners(IEN: integer; Signers: TStrings);
+begin
+  CallV('TIU UPDATE ADDITIONAL SIGNERS', [IEN, Signers]);
+end;
+
+function CanChangeCosigner(IEN: integer): boolean;
+begin
+  Result := Piece(sCallV('TIU CAN CHANGE COSIGNER?', [IEN]), U, 1) = '1';
+end;
+
+procedure ChangeCosigner(IEN: integer; Cosigner: int64);
+begin
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := 'TIU UPDATE RECORD';
+    Param[0].PType := literal;
+    Param[0].Value := IntToStr(IEN);
+    Param[1].PType := list;
+    with Param[1] do
+      if Cosigner > 0 then
+        Mult['1208']  := IntToStr(Cosigner)
+      else
+        Mult['1208']  := '@';
+    CallBroker;
+  end;
+end;
+
+// Determine if given note title is allowed more than once per visit.    12/2002-GRE
+function OneNotePerVisit(NoteEIN: Integer; DFN: String; VisitStr: String):boolean;
+var x: string;
+begin
+    x := sCallV('TIU ONE VISIT NOTE?', [IntToStr(NoteEIN),DFN,VisitStr]);
+    if StrToInt(x) > 0 then
+       Result := True  //Only one per visit
+    else
+       Result := False;
+end;
+
+function GetCurrentTIUContext: TTIUContext;
+var
+  x: string;
+  AContext: TTIUContext;
+begin
+  x := sCallV('ORWTIU GET TIU CONTEXT', [User.DUZ]) ;
+  with AContext do
+    begin
+      Changed       := True;
+      BeginDate     := Piece(x, ';', 1);
+      FMBeginDate   := StrToFMDateTime(BeginDate);
+      EndDate       := Piece(x, ';', 2);
+      FMEndDate     := StrToFMDateTime(EndDate);
+      Status        := Piece(x, ';', 3);
+      if (StrToIntDef(Status, 0) < 1) or (StrToIntDef(Status, 0) > 5) then Status := '1';
+      Author        := StrToInt64Def(Piece(x, ';', 4), 0);
+      MaxDocs       := StrToIntDef(Piece(x, ';', 5), 0);
+      ShowSubject   := StrToIntDef(Piece(x, ';', 6), 0) > 0;   //TIU PREFERENCE??
+      SortBy        := Piece(x, ';', 7);                       //TIU PREFERENCE??
+      ListAscending := StrToIntDef(Piece(x, ';', 8), 0) > 0;
+      TreeAscending := StrToIntDef(Piece(x, ';', 9), 0) > 0;   //TIU PREFERENCE??
+      GroupBy       := Piece(x, ';', 10);
+      SearchField   := Piece(x, ';', 11);
+      KeyWord       := Piece(x, ';', 12);
+      Filtered      := (Keyword <> '');
+    end;
+  Result := AContext;
+end;
+
+procedure SaveCurrentTIUContext(AContext: TTIUContext) ;
+var
+  x: string;
+begin
+  with AContext do
+    begin
+      SetPiece(x, ';', 1, BeginDate);
+      SetPiece(x, ';', 2, EndDate);
+      SetPiece(x, ';', 3, Status);
+      if Author > 0 then
+        SetPiece(x, ';', 4, IntToStr(Author))
+      else
+        SetPiece(x, ';', 4, '');
+      SetPiece(x, ';', 5, IntToStr(MaxDocs));
+      SetPiece(x, ';', 6, BOOLCHAR[ShowSubject]);       //TIU PREFERENCE??
+      SetPiece(x, ';', 7, SortBy);                      //TIU PREFERENCE??
+      SetPiece(x, ';', 8, BOOLCHAR[ListAscending]);
+      SetPiece(x, ';', 9, BOOLCHAR[TreeAscending]);     //TIU PREFERENCE??
+      SetPiece(x, ';', 10, GroupBy);
+      SetPiece(x, ';', 11, SearchField);
+      SetPiece(x, ';', 12, KeyWord);
+    end;
+  CallV('ORWTIU SAVE TIU CONTEXT', [x]);
+end;
+
+function TIUSiteParams: string;
+begin
+  if(not uTIUSiteParamsLoaded) then
+  begin
+    uTIUSiteParams := sCallV('TIU GET SITE PARAMETERS', []) ;
+    uTIUSiteParamsLoaded := TRUE;
+  end;
+  Result := uTIUSiteParams;
+end;
+
+//  ===================Interdisciplinary Notes RPCs =====================
+
+function IDNotesInstalled: boolean;
+begin
+  Result := True;   // old patch check no longer called
+end;
+
+function CanTitleBeIDChild(Title: integer; var WhyNot: string): boolean;
+var
+  x: string;
+begin
+  Result := False;
+  x := sCallV('ORWTIU CANLINK', [Title]);
+  if Piece(x, U, 1) = '1' then
+    Result := True
+  else if Piece(x, U, 1) = '0' then
+    begin
+      Result := False;
+      WhyNot := Piece(x, U, 2);
+    end;
+end;
+
+function CanBeAttached(DocID: string; var WhyNot: string): boolean;
+var
+  x: string;
+const
+  TX_NO_ATTACH = 'This note appears to be an interdisciplinary parent.  Please drag the child note you wish to ' + CRLF +
+                 'attach instead of attempting to drag the parent, or check with IRM or your' + CRLF +
+                 'clinical coordinator.';
+begin
+  Result := False;
+  if StrToIntDef(DocID, 0) = 0 then exit;
+  x := sCallV('TIU ID CAN ATTACH', [DocID]);
+  if Piece(x, U, 1) = '1' then
+    Result := True
+  else if Piece(x, U, 1) = '0' then
+    begin
+      Result := False;
+      WhyNot := Piece(x, U, 2);
+    end
+  else if Piece(x, U, 1) = '-1' then
+    begin
+      Result := False;
+      WhyNot := TX_NO_ATTACH;
+    end;
+end;
+
+function CanReceiveAttachment(DocID: string; var WhyNot: string): boolean;
+var
+  x: string;
+begin
+  x := sCallV('TIU ID CAN RECEIVE', [DocID]);
+  if Piece(x, U, 1) = '1' then
+    Result := True
+  else
+    begin
+      Result := False;
+      WhyNot := Piece(x, U, 2);
+    end;
+end;
+
+function AttachEntryToParent(DocID, ParentDocID: string; var WhyNot: string): boolean;
+var
+  x: string;
+begin
+  x := sCallV('TIU ID ATTACH ENTRY', [DocID, ParentDocID]);
+  if StrToIntDef(Piece(x, U, 1), 0) > 0 then
+    Result := True
+  else
+    begin
+      Result := False;
+      WhyNot := Piece(x, U, 2);
+    end;
+end;
+
+function DetachEntryFromParent(DocID: string; var WhyNot: string): boolean;
+var
+  x: string;
+begin
+  x := sCallV('TIU ID DETACH ENTRY', [DocID]);
+  if StrToIntDef(Piece(x, U, 1), 0) > 0 then
+    Result := True
+  else
+    begin
+      Result := False;
+      WhyNot := Piece(x, U, 2);
+    end;
+end;
+
+function SubSetOfUserClasses(const StartFrom: string; Direction: Integer): TStrings;
+begin
+  CallV('TIU USER CLASS LONG LIST', [StartFrom, Direction]);
+  Result := RPCBrokerV.Results;
+end;
+
+function UserDivClassInfo(User: Int64): TStrings;
+begin
+  CallV('TIU DIV AND CLASS INFO', [User]);
+  Result := RPCBrokerV.Results;
+end;
+
+function UserInactive(EIN: String): boolean;
+var x: string;
+begin
+   x:= sCallv('TIU USER INACTIVE?', [EIN]) ;
+   if (StrToInt(x) > 0) then
+    Result := True
+  else
+     Result := False;
+end;
+
+function TIUPatch175Installed: boolean;
+begin
+  with uPatch175Installed do
+    if not PatchChecked then
+      begin
+        PatchInstalled := ServerHasPatch('TIU*1.0*175');
+        PatchChecked := True;
+      end;
+  Result := uPatch175Installed.PatchInstalled;
+end;
+
+function NoteHasText(NoteIEN: integer): boolean;
+begin
+  Result := (StrToIntDef(sCallV('ORWTIU CHKTXT', [NoteIEN]), 0) > 0);
+end;
+
+
+initialization
+  // nothing for now
+
+finalization
+  if uNoteTitles <> nil then uNoteTitles.Free;
+  if uTIUPrefs <> nil then uTIUPrefs.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/sRemSrch.rc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/sRemSrch.rc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/sRemSrch.rc	(revision 1676)
@@ -0,0 +1,1 @@
+REMSEARCHAVI AVI "RemSrch.avi"
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/tfVType.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/tfVType.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/tfVType.dfm	(revision 1676)
@@ -0,0 +1,67 @@
+object frmLaunch: TfrmLaunch
+  Left = 557
+  Top = 271
+  Width = 231
+  Height = 189
+  Caption = 'Lauch Stuff'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 8
+    Top = 120
+    Width = 46
+    Height = 13
+    Caption = 'Visit Type'
+  end
+  object grpFontSize: TRadioGroup
+    Left = 8
+    Top = 8
+    Width = 65
+    Height = 105
+    Caption = 'Font Size'
+    ItemIndex = 0
+    Items.Strings = (
+      '8 pt'
+      '10 pt'
+      '12 pt'
+      '14 pt'
+      '18 pt')
+    TabOrder = 0
+  end
+  object cmdShow: TButton
+    Left = 88
+    Top = 12
+    Width = 129
+    Height = 25
+    Caption = 'Show Visit Type'
+    Default = True
+    TabOrder = 1
+    OnClick = cmdShowClick
+  end
+  object Edit1: TEdit
+    Left = 8
+    Top = 136
+    Width = 209
+    Height = 21
+    TabOrder = 2
+  end
+  object cmdClose: TButton
+    Left = 88
+    Top = 88
+    Width = 129
+    Height = 25
+    Cancel = True
+    Caption = 'Close'
+    TabOrder = 3
+    OnClick = cmdCloseClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/tfVType.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/tfVType.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/tfVType.pas	(revision 1676)
@@ -0,0 +1,65 @@
+unit tfVType;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ExtCtrls, fBase508Form;
+
+type
+  TfrmLaunch = class(TfrmBase508Form)
+    grpFontSize: TRadioGroup;
+    cmdShow: TButton;
+    Edit1: TEdit;
+    Label1: TLabel;
+    cmdClose: TButton;
+    procedure cmdShowClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure cmdCloseClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  frmLaunch: TfrmLaunch;
+
+implementation
+
+{$R *.DFM}
+
+uses ORFn, ORNet, fVType, uCore;
+
+procedure TfrmLaunch.FormCreate(Sender: TObject);
+begin
+  if not ConnectToServer('OR CPRS GUI CHART') then
+  begin
+    Close;     // need a way to exit without needing the broker (close may call it)
+    Exit;
+  end;
+  User    := TUser.Create;                   // creates the user object defined in uCore
+  Patient := TPatient.Create;                // creates the patient object defined in uCore
+  Encounter := TEncounter.Create;            // creates the encounter object defined in uCore
+  Encounter.Location := 16;
+end;
+
+procedure TfrmLaunch.cmdShowClick(Sender: TObject);
+begin
+  case grpFontSize.ItemIndex of
+  0: Self.Font.Size := 8;
+  1: Self.Font.Size := 10;
+  2: Self.Font.Size := 12;
+  3: Self.Font.Size := 14;
+  4: Self.Font.Size := 18;
+  end;
+  UpdateVisitType;
+  //Edit1.Text := IntToStr(Patient.DFN) + U + Patient.Name + U + Encounter.LocationName;
+end;
+
+procedure TfrmLaunch.cmdCloseClick(Sender: TObject);
+begin
+  Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uCaseTree.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uCaseTree.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uCaseTree.pas	(revision 1676)
@@ -0,0 +1,428 @@
+unit uCaseTree;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, uConst, ORCtrls, ComCtrls, uSurgery, rSurgery;
+
+
+type
+  PCaseTreeObject = ^TCaseTreeObject;
+  TCaseTreeObject = record
+    // used for both types of node
+    CaseID         : string;
+    NodeText       : string;                  //Title, Location, Author (depends on node type)
+    ImageCount     : integer;                 //Number of images
+    DocHasChildren : string;                  //Has children  (+)
+    DocParent      : string;                  //Parent document, or context
+    // used for Case nodes only
+    OperativeProc  : string;
+    IsNonORProc    : boolean;
+    SurgeryDate    : string;
+    Surgeon        : string;
+    // used for document nodes only
+    DocID          : string ;                 //Document IEN
+    DocDate        : string;                  //Formatted date of document
+    DocTitle       : string;                  //Document Title Text
+    VisitDate      : string;                  //ADM/VIS: date;FMDate
+    DocFMDate      : string;                  //FM date of document
+    Author         : string;                  //DUZ;Author name
+    PkgRef         : string;                  //IEN;Package
+    Location       : string;                  //Location name
+    Status         : string;                  //Status
+    Subject        : string;                  //Subject
+    // not currently used
+    OrderID        : string;                  //Order file IEN (consults only, for now)
+    OrderByTitle   : boolean;                 //Within cases, order docs by title, not date
+  end;
+
+// Procedures for document treeviews/listviews
+procedure CreateListItemsForCaseTree(Dest, Source: TStrings; Context: integer; GroupBy: string;
+          Ascending: boolean);
+procedure BuildCaseTree(CaseList: TStrings; const Parent: string; Tree: TORTreeView; Node: TORTreeNode;
+          CaseContext: TSurgCaseContext);
+procedure SetCaseTreeNodeImagesAndFormatting(Node: TORTreeNode; CurrentContext: TSurgCaseContext);
+procedure SetImageFlag(ANode: TORTreeNode);
+procedure ResetCaseTreeObjectStrings(AnObject: PCaseTreeObject);
+procedure KillCaseTreeObjects(TreeView: TORTreeView);
+procedure KillCaseTreeNode(ANode: TTreeNode);
+procedure RemoveParentsWithNoChildren(Tree: TTreeView; Context: TSurgCaseContext);
+function  MakeCaseTreeObject(x: string): PCaseTreeObject;
+
+implementation
+
+(*uses
+  fRptBox;*)
+
+{==============================================================
+RPC [SURGERY CASES BY CONTEXT] returns
+the following string '^' pieces:
+===============================================================
+CASE #^Operative Procedure^Date/Time of Operation^Surgeon^^^^^^^^^+^Context         ***NEEDS TO BE FIXED***
+IEN NIR^TITLE^REF DATE/TIME^PT ID^AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^+ (if has addenda)^IEN of Parent Document
+IEN AR^TITLE^REF DATE/TIME^PT ID^AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^+ (if has addenda)^IEN of Parent Document
+IEN OS^TITLE^REF DATE/TIME^PT ID^AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^+ (if has addenda)^IEN of Parent Document
+IEN Addendum^TITLE^REF DATE/TIME^PT ID^AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^^IEN of Parent Document*)
+
+===============================================================}
+
+procedure CreateListItemsForCaseTree(Dest, Source: TStrings; Context: integer; GroupBy: string;
+          Ascending: Boolean);
+const
+  NO_MATCHES = '^No Surgery Cases Found^^^^^^^^^^^%^0';
+var
+  i: Integer;
+  x, x1, x2, x3, MyParent, MyType: string;
+  AList, SrcList: TStringList;
+begin
+  AList := TStringList.Create;
+  SrcList := TStringList.Create;
+  try
+    //ReportBox(Source, '', True);
+    FastAssign(Source, SrcList);
+    with SrcList do
+      begin
+        if (Count = 1) and (Piece(SrcList[0], U, 1) = '-1') then
+          begin
+            Dest.Insert(0, IntToStr(Context) + NO_MATCHES);
+            Exit;
+          end;
+        for i := 0 to Count - 1 do
+          begin
+            x := Strings[i];
+            if Piece(x, U, 10) <> '' then      // if item is a note, and is missing information
+              begin
+                if Piece(x, U, 2) = '' then
+                  SetPiece(x, U, 2, '** No title **');
+                if Piece(x, U, 6) = '' then
+                  SetPiece(x, U, 6, '** No location **');
+                if Piece(Piece(x, U, 5), ';', 3) = '' then
+                  SetPiece(x, U, 5, '0;** No Author **;** No Author **');
+              end;
+            MyParent   := Piece(x, U, 14);
+            if GroupBy <> '' then case GroupBy[1] of
+              'D':  begin
+                      x2 := Piece(x, U, 3);                          // Proc date (FM)
+                      if x2 = '' then
+                        begin
+                          x2 := '** No Date **';
+                          x1 := '** No Date **';
+                        end
+                      else
+                        x1 := FormatFMDateTime('mmm dd,yyyy', StrToFloat(x2));  // Proc date
+                      if MyParent = IntToStr(Context) then
+                        SetPiece(x, U, 14, MyParent + x2);
+                      x3 := x2 + U + MixedCase(x1) + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;
+              'P':  begin
+                      x1 := Piece(x, U, 2);
+                      if x1 = '' then x1 := '** No Procedure **';
+                      if MyParent = IntToStr(Context) then
+                        SetPiece(x, U, 14, MyParent + x1);
+                      x3 := x1 + U + MixedCase(x1) + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;
+              'S':  begin
+                      x1 := Piece(Piece(x, U, 4), ';', 2);
+                      if x1 = '' then x1 := '** No Surgeon **';
+                      if MyParent = IntToStr(Context) then
+                        SetPiece(x, U, 14, MyParent + x1);
+                      x3 := x1 + U + MixedCase(x1) + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;
+              'T':  begin
+                      if MyParent = IntToStr(Context) then
+                      begin
+                        if Piece(x, U, 6) = '1' then
+                          MyType := 'Non-OR Procedures'
+                        else
+                          MyType := 'Operations';
+                        SetPiece(x, U, 14, MyParent + MyType);
+                        x3 := MyType + U + MyType + U + IntToStr(Context);
+                        if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                      end;
+                    end;
+            end;
+            Dest.Add(x);
+          end; {for}
+        SortByPiece(TStringList(Dest), U, 3);
+        if not Ascending then InvertStringList(TStringList(Dest));
+        Dest.Insert(0, IntToStr(Context) + '^' + SG_TV_TEXT + '^^^^^^^^^^^%^0');
+        Alist.Sort;
+        if Ascending or (CharAt(GroupBy, 1) = 'T') then InvertStringList(AList);   // operations before non-OR procs
+        for i := 0 to AList.Count-1 do
+          Dest.Insert(0, IntToStr(Context) + Piece(AList[i], U, 1) + '^' + Piece(AList[i], U, 2) + '^^^^^^^^^^^%^' + Piece(AList[i], U, 3));
+      end;
+      //ReportBox(Dest, '', True);
+  finally
+    AList.Free;
+    SrcList.Free;
+  end;
+end;
+
+procedure BuildCaseTree(CaseList: TStrings; const Parent: string; Tree: TORTreeView; Node: TORTreeNode;
+          CaseContext: TSurgCaseContext);
+var
+  MyID, MyParent, Name: string;
+  i: Integer;
+  ChildNode, tmpNode: TORTreeNode;
+  CaseHasChildren: Boolean;
+  AnObject: PCaseTreeObject;
+begin
+  with CaseList do for i := 0 to Count - 1 do
+    begin
+      tmpNode := nil;
+      MyParent := Piece(Strings[i], U, 14);
+      if (MyParent = Parent) then
+        begin
+          MyID := Piece(Strings[i], U, 1);
+          if Piece(Strings[i], U, 13) = '%' then
+             Name := Piece(Strings[i], U, 2)
+          else if Piece(Strings[i], U, 10) = '' then
+             Name := MakeSurgeryCaseDisplayText(Strings[i])
+          else
+             Name := MakeSurgeryReportDisplayText(Strings[i]);
+          CaseHasChildren := (Piece(Strings[i], U, 13) <> '');
+          if Node <> nil then if Node.HasChildren then
+            tmpNode := Tree.FindPieceNode(MyID, 1, U, Node);
+          if (tmpNode <> nil) and tmpNode.HasAsParent(Node) then
+            Continue
+          else
+            begin
+              AnObject := MakeCaseTreeObject(Strings[i]);
+              ChildNode := TORTreeNode(Tree.Items.AddChildObject(TORTreeNode(Node), Name, AnObject));
+              ChildNode.StringData := Strings[i];
+              SetCaseTreeNodeImagesAndFormatting(ChildNode, CaseContext);
+              if CaseHasChildren then BuildCaseTree(CaseList, MyID, Tree, ChildNode, CaseContext);
+            end;
+        end;
+    end;
+end;
+
+procedure SetCaseTreeNodeImagesAndFormatting(Node: TORTreeNode; CurrentContext: TSurgCaseContext);
+var
+  CaseNode: TORTreeNode;
+  i: integer;
+(*  IMG_SURG_BLANK             = 0;
+    IMG_SURG_TOP_LEVEL         = 1;
+    IMG_SURG_GROUP_SHUT        = 2;
+    IMG_SURG_GROUP_OPEN        = 3;
+    IMG_SURG_CASE_EMPTY        = 4;
+    IMG_SURG_CASE_SHUT         = 5;
+    IMG_SURG_CASE_OPEN         = 6;
+    IMG_SURG_RPT_SINGLE        = 7;
+    IMG_SURG_RPT_ADDM          = 8;
+    IMG_SURG_ADDENDUM          = 9;
+    IMG_SURG_NON_OR_CASE_EMPTY = 10;
+    IMG_SURG_NON_OR_CASE_SHUT  = 11;
+    IMG_SURG_NON_OR_CASE_OPEN  = 12;
+*)
+begin
+  with Node, PCaseTreeObject(Node.Data)^ do
+    begin
+      i := Pos('*', DocTitle);
+      if i > 0 then i := i + 1 else i := 0;
+      if (Copy(DocTitle, i + 1, 8) = 'Addendum') then
+        ImageIndex := IMG_SURG_ADDENDUM
+      else if (DocHasChildren = '') then
+        begin
+          if PkgRef = '' then
+            begin
+              if IsNonORProc then
+                ImageIndex := IMG_SURG_NON_OR_CASE_EMPTY
+              else
+                ImageIndex := IMG_SURG_CASE_EMPTY;
+            end
+          else
+            ImageIndex := IMG_SURG_RPT_SINGLE;
+        end
+      else if DocParent = '0' then
+        begin
+          ImageIndex    := IMG_SURG_TOP_LEVEL;
+          SelectedIndex := IMG_SURG_TOP_LEVEL;
+          StateIndex := -1;
+          with CurrentContext, Node do
+            if GroupBy <> '' then
+              case GroupBy[1] of
+                'P': Text := SG_TV_TEXT + ' by Procedure';        
+                'D': Text := SG_TV_TEXT + ' by Surgery Date';
+                'S': Text := SG_TV_TEXT + ' by Surgeon';
+                'T': Text := SG_TV_TEXT + ' by Type';
+              end
+            else Text := SG_TV_TEXT;
+        end
+      else
+        case DocHasChildren[1] of
+          '+': if PkgRef <> '' then
+                 ImageIndex := IMG_SURG_RPT_ADDM
+               else
+                 begin
+                   if IsNonORProc then
+                     ImageIndex := IMG_SURG_NON_OR_CASE_SHUT
+                   else
+                     ImageIndex := IMG_SURG_CASE_SHUT;
+                 end;
+          '%': begin
+                 StateIndex := -1;
+                 ImageIndex    := IMG_SURG_GROUP_SHUT;
+                 SelectedIndex := IMG_SURG_GROUP_OPEN;
+               end;
+        end;
+      SelectedIndex := ImageIndex;
+      SetImageFlag(Node);
+      CaseNode := TORTreeView(Node.TreeView).FindPieceNode(CaseID, 1, U, nil);
+      if CaseNode <> nil then
+        begin
+          PCaseTreeObject(CaseNode.Data)^.ImageCount := PCaseTreeObject(CaseNode.Data)^.ImageCount + ImageCount;
+          SetImageFlag(CaseNode);
+        end;
+    end;
+end;
+
+procedure SetImageFlag(ANode: TORTreeNode);
+begin
+  with ANode, PCaseTreeObject(ANode.Data)^ do
+    begin
+      if (ImageIndex in [IMG_SURG_TOP_LEVEL, IMG_SURG_GROUP_OPEN, IMG_SURG_GROUP_SHUT]) then
+        StateIndex := IMG_NO_IMAGES
+      else
+        begin
+          if ImageCount > 0 then
+            StateIndex := IMG_1_IMAGE
+          else if ImageCount = 0 then
+            StateIndex := IMG_NO_IMAGES
+          else if ImageCount = -1 then
+            StateIndex := IMG_IMAGES_HIDDEN;
+        end;
+(*      else
+        case ImageCount of
+          0: StateIndex := IMG_NO_IMAGES;
+          1: StateIndex := IMG_1_IMAGE;
+          2: StateIndex := IMG_2_IMAGES;
+        else
+          StateIndex := IMG_MANY_IMAGES;
+        end;*)
+      if (Parent <> nil) and
+         (Parent.ImageIndex in [IMG_SURG_CASE_SHUT, IMG_SURG_CASE_OPEN, IMG_SURG_RPT_ADDM,
+                                IMG_SURG_NON_OR_CASE_SHUT, IMG_SURG_NON_OR_CASE_OPEN ]) and
+         (StateIndex in [IMG_1_IMAGE, IMG_IMAGES_HIDDEN]) then
+         begin
+           Parent.StateIndex := IMG_CHILD_HAS_IMAGES;
+         end;
+    end;
+end;
+
+procedure ResetCaseTreeObjectStrings(AnObject: PCaseTreeObject);
+begin
+  with AnObject^ do
+    begin
+      CaseID         := '';
+      OperativeProc  := '';
+      SurgeryDate    := '';
+      Surgeon        := '';
+      DocID          := '';
+      DocDate        := '';
+      DocTitle       := '';
+      NodeText       := '';
+      VisitDate      := '';
+      DocFMDate      := '';
+      DocHasChildren := '';
+      DocParent      := '';
+      Author         := '';
+      PkgRef         := '';
+      Location       := '';
+      Status         := '';
+      Subject        := '';
+      OrderID        := '';
+    end;
+end;
+
+procedure KillCaseTreeObjects(TreeView: TORTreeView);
+var
+  i: integer;
+begin
+  with TreeView do
+    for i := 0 to Items.Count-1 do
+    begin
+      if(Assigned(Items[i].Data)) then
+        begin
+          ResetCaseTreeObjectStrings(PCaseTreeObject(Items[i].Data));
+          Dispose(PCaseTreeObject(Items[i].Data));
+          Items[i].Data := nil;
+        end;
+    end;
+end;
+
+procedure KillCaseTreeNode(ANode: TTreeNode);
+begin
+  if(Assigned(ANode.Data)) then
+    begin
+      ResetCaseTreeObjectStrings(PCaseTreeObject(ANode.Data));
+      Dispose(PCaseTreeObject(ANode.Data));
+      ANode.Data := nil;
+    end;
+  ANode.Owner.Delete(ANode);
+end;
+
+procedure RemoveParentsWithNoChildren(Tree: TTreeView; Context: TSurgCaseContext);
+var
+  n: integer;
+begin
+  with Tree do
+    for n := Items.Count - 1 downto 0 do
+      if (Items[n].ImageIndex in  [IMG_SURG_GROUP_SHUT, IMG_SURG_GROUP_OPEN]) then
+        begin
+          if (not Items[n].HasChildren) then
+             KillCaseTreeNode(Items[n]);
+        end;
+end;
+
+
+function MakeCaseTreeObject(x: string): PCaseTreeObject;
+var
+  AnObject: PCaseTreeObject;
+begin
+  New(AnObject);
+  with AnObject^ do
+    begin
+      if Piece(x, U, 10) = '' then
+        //CASE #^Operative Procedure^Date/Time of Operation^Surgeon^^^^^^^^^+^Context   
+        begin
+          CaseID          := Piece(x, U, 1);
+          OperativeProc   := Piece(x, U, 2);
+          SurgeryDate     := Piece(x, U, 3);
+          Surgeon         := Piece(x, U, 4);
+          IsNonORProc     := Piece(x, U, 6) = '1';
+          DocHasChildren  := Piece(x, U, 13);
+          DocParent       := Piece(x, U, 14);
+          ImageCount      := StrToIntDef(Piece(x, U, 11), 0);
+          NodeText        := MakeSurgeryCaseDisplayText(x);
+        end
+      else
+        //IEN NIR^TITLE^REF DATE/TIME^PT ID^AUTHORDUZ;AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^+ (if has addenda)^IEN of Parent Document
+        //IEN AR^TITLE^REF DATE/TIME^PT ID^AUTHORDUZ;AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^+ (if has addenda)^IEN of Parent Document
+        //IEN OS^TITLE^REF DATE/TIME^PT ID^AUTHORDUZ;AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^+ (if has addenda)^IEN of Parent Document
+        //IEN Addendum^TITLE^REF DATE/TIME^PT ID^AUTHORDUZ;AUTHOR^HOSP LOC^STATUS^Vis DT^Disch DT^CASE;SRF(^# Assoc Images^Subject^^IEN of Parent Document
+        begin
+          DocID           := Piece(x, U, 1);
+          DocTitle        := Piece(x, U, 2);
+          DocFMDate       := Piece(x, U, 3);
+          DocDate         := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3)));
+          Author          := Piece(x, U, 5);
+          Location        := Piece(x, U, 6);
+          Status          := Piece(x, U, 7);
+          VisitDate       := Piece(x, U, 8);
+          PkgRef          := Piece(x, U, 10);
+          CaseID          := Piece(Piece(x, U, 10), ';', 1);
+          ImageCount      := StrToIntDef(Piece(x, U, 11), 0);
+          Subject         := Piece(x, U, 12);
+          DocHasChildren  := Piece(x, U, 13);
+          DocParent       := Piece(x, U, 14);
+          NodeText        := MakeSurgeryReportDisplayText(x);
+        end;
+    end;
+  Result := AnObject;
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uConst.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uConst.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uConst.pas	(revision 1676)
@@ -0,0 +1,407 @@
+unit uConst;
+
+interface
+
+uses Messages;
+
+const
+
+  { User defined messages used by CPRS }
+//  UM_SHOWPAGE     = (WM_USER + 100);  // originally in fFrame
+//  UM_NEWORDER     = (WM_USER + 101);  // originally in fODBase
+//  UM_TAKEFOCUS    = (WM_USER + 102);  // in fProbEdt
+//  UM_CLOSEPROBLEM = (WM_USER + 103);  // in fProbs
+//  UM_PLFILTER     = (WM_USER + 104);  // in fProbs
+//  UM_PLLEX        = (WM_USER + 105);  // in fProbs
+//  UM_RESIZEPAGE   = (WM_USER + 107);  // originally in fPage
+//  UM_DROPLIST     = (WM_USER + 108);  // originally in fODMedIn
+//  UM_DESTROY      = (WM_USER + 109);  // used to notify owner when order dialog closes
+//  UM_DELAYEVENT   = (WM_USER + 110);  // used with PostMessage to slightly delay an event
+
+  UM_SHOWPAGE     = (WM_USER + 9236);  // originally in fFrame
+  UM_NEWORDER     = (WM_USER + 9237);  // originally in fODBase
+  UM_TAKEFOCUS    = (WM_USER + 9238);  // in fProbEdt
+  UM_CLOSEPROBLEM = (WM_USER + 9239);  // in fProbs
+  UM_PLFILTER     = (WM_USER + 9240);  // in fProbs
+  UM_PLLEX        = (WM_USER + 9241);  // in fProbs
+  UM_RESIZEPAGE   = (WM_USER + 9242);  // originally in fPage
+  UM_DROPLIST     = (WM_USER + 9243);  // originally in fODMedIn
+  UM_DESTROY      = (WM_USER + 9244);  // used to notify owner when order dialog closes
+  UM_DELAYEVENT   = (WM_USER + 9245);  // used with PostMessage to slightly delay an event
+  UM_INITIATE     = (WM_USER + 9246);  // used by fFrame to do initial stuff after FormCreate
+  UM_RESYNCREM    = (WM_USER + 9247);  // used by fReminderDialog to update reminder controls
+  UM_STILLDELAY   = (WM_USER + 9248);  // used by EDO related form fOrdersTS,fOrdersCopy,fMedsCopy
+  UM_EVENTOCCUR   = (WM_USER + 9249);  // used by EDO for background occured event
+  UM_NSSOTHER     = (WM_USER + 9250);  // used by NSS for auto-display schedule builder
+  UM_MISC         = (WM_USER + 9251);  // used for misc stuff across forms
+  UM_508          = (WM_USER + 9508);  // used for 508 messages at 508 base form level
+
+  { Tab Indexes, moved from fFrame }
+  CT_NOPAGE   = -1;                             // chart tab - none selected
+  CT_UNKNOWN  =  0;                             // chart tab - unknown (shouldn't happen)
+  CT_COVER    =  1;                             // chart tab - cover sheet
+  CT_PROBLEMS =  2;                             // chart tab - problem list
+  CT_MEDS     =  3;                             // chart tab - medications screen
+  CT_ORDERS   =  4;                             // chart tab - doctor's orders
+  CT_HP       =  5;                             // chart tab - history & physical
+  CT_NOTES    =  6;                             // chart tab - progress notes
+  CT_CONSULTS =  7;                             // chart tab - consults
+  CT_DCSUMM   =  8;                             // chart tab - discharge summaries
+  CT_LABS     =  9;                             // chart tab - laboratory results
+  CT_REPORTS  = 10;                             // chart tab - reports
+  CT_SURGERY  = 11;                             // chart tab - surgery
+
+  { Changes object item types }
+  CH_DOC = 10;                        // TIU documents (progress notes)
+  CH_SUM = 12;                        // Discharge Summaries       {*REV*}
+  CH_CON = 15;                        // Consults
+  CH_SUR = 18;                        // Surgery reports
+  CH_ORD = 20;                        // Orders
+  CH_PCE = 30;                        // Encounter Form items
+
+  { Changes object signature requirements }
+  CH_SIGN_YES = 1;                    // Obtain signature (checkbox is checked)
+  CH_SIGN_NO  = 2;                    // Don't obtain signature (checkbox is unchecked)
+  CH_SIGN_NA  = 0;                    // Signature not applicable (checkbox is greyed)
+
+  { Sign & release orders }
+  SS_ONCHART  = '0';
+  SS_ESIGNED  = '1';
+  SS_UNSIGNED = '2';
+  SS_NOTREQD  = '3';
+  SS_DIGSIG   = '7';
+  RS_HOLD     = '0';
+  RS_RELEASE  = '1';
+  NO_PROVIDER = 'E';
+  NO_VERBAL   = 'V';
+  NO_PHONE    = 'P';
+  NO_POLICY   = 'I';
+  NO_WRITTEN  = 'W';
+
+  { Actions on orders }
+  ORDER_NEW   = 0;
+  ORDER_DC    = 1;
+  ORDER_RENEW = 2;
+  ORDER_HOLD  = 3;
+  ORDER_EDIT  = 4;
+  ORDER_COPY  = 5;
+  ORDER_QUICK = 9;
+  ORDER_ACT   = 10;
+  ORDER_SIGN  = 11;
+  ORDER_CPLXRN = 12;
+
+  { Order action codes }
+  OA_COPY     = 'RW';
+  OA_CHANGE   = 'XX';
+  OA_RENEW    = 'RN';
+  OA_HOLD     = 'HD';
+  OA_DC       = 'DC';
+  OA_UNHOLD   = 'RL';
+  OA_FLAG     = 'FL';
+  OA_UNFLAG   = 'UF';
+  OA_COMPLETE = 'CP';
+  OA_ALERT    = 'AL';
+  OA_REFILL   = 'RF';
+  OA_VERIFY   = 'VR';
+  OA_CHART    = 'CR';
+  OA_RELEASE  = 'RS';
+  OA_SIGN     = 'ES';
+  OA_ONCHART  = 'OC';
+  OA_COMMENT  = 'CM';
+  OA_TRANSFER = 'XFR';
+  OA_CHGEVT   = 'EV';
+  OA_EDREL    = 'MN';
+
+  { Ordering Dialog Form IDs }
+  OD_ACTIVITY  = 100;
+  OD_ALLERGY   = 105;
+  OD_CONSULT   = 110;
+  OD_PROCEDURE = 112;
+  OD_DIET_TXT  = 115;
+  OD_DIET      = 117;
+  OD_LAB       = 120;
+  OD_BB        = 125;
+  OD_MEDINPT   = 130;
+  OD_MEDS      = 135;
+  OD_MEDOUTPT  = 140;
+  OD_MEDNONVA = 145;
+  OD_NURSING   = 150;
+  OD_MISC      = 151;
+  OD_GENERIC   = 152;
+  OD_IMAGING   = 160;
+  OD_VITALS    = 171;  // use 170 for ORWD GENERIC VITALS, 171 for GMRVOR
+  OD_MEDIV     = 180;
+  OD_TEXTONLY  = 999;
+  OM_NAV       = 1001;
+  OM_QUICK     = 1002;
+  OM_TABBED    = 1003;
+  OM_TREE      = 1004;
+  OM_ALLERGY   = 1105;
+  OM_HTML      = 1200;
+  OD_AUTOACK   = 9999;
+
+  { Ordering role }
+  OR_NOKEY     = 0;
+  OR_CLERK     = 1;
+  OR_NURSE     = 2;
+  OR_PHYSICIAN = 3;
+  OR_STUDENT   = 4;
+  OR_BADKEYS   = 5;
+
+  { Quick Orders }
+  QL_DIALOG = 0;
+  QL_AUTO   = 1;
+  QL_VERIFY = 2;
+  QL_REJECT = 8;
+  QL_CANCEL = 9;
+  MAX_KEYVARS = 10;
+
+  { Order Signature Statuses }
+  OSS_UNSIGNED = 2;
+  OSS_NOT_REQUIRE = 3;
+
+  { Special Strings }
+  TX_WPTYPE = '^WP^';                 // used to identify fields passed as word processing
+
+  { Pharmacy Variables }
+  PST_UNIT_DOSE  = 'U';
+  PST_IV_FLUIDS  = 'F';
+  PST_OUTPATIENT = 'O';
+
+  { Status groups for medications }
+  MED_ACTIVE     = 0;                 // status is an active status (active, hold, on call)
+  MED_PENDING    = 1;                 // status is a pending status (non-verified)
+  MED_NONACTIVE  = 2;                 // status is a non-active status (expired, dc'd, ...)
+
+  { Actions for medications }
+  MED_NONE       = 0;
+  MED_NEW        = 1;
+  MED_DC         = 2;
+  MED_HOLD       = 3;
+  MED_RENEW      = 4;
+  MED_REFILL     = 5;
+
+  { Validate Date/Times }
+  DT_FUTURE   = 'F';
+  DT_PAST     = 'P';
+  DT_MMDDREQ  = 'E';
+  DT_TIMEOPT  = 'T';
+  DT_TIMEREQ  = 'R';
+
+  { Change Context Types }
+  CC_CLICK        = 0;
+  CC_INIT_PATIENT = 1;
+  CC_NOTIFICATION = 2;
+  CC_REFRESH      = 3;
+  CC_RESUME       = 4;
+
+  { Notification Types }
+  NF_LAB_RESULTS                   = 3;
+  NF_FLAGGED_ORDERS                = 6;
+  NF_ORDER_REQUIRES_ELEC_SIGNATURE = 12;
+  NF_ABNORMAL_LAB_RESULTS          = 14;
+  NF_IMAGING_RESULTS               = 22;
+  NF_CONSULT_REQUEST_RESOLUTION    = 23;
+  NF_ABNORMAL_IMAGING_RESULTS      = 25;
+  NF_IMAGING_REQUEST_CANCEL_HELD   = 26;
+  NF_NEW_SERVICE_CONSULT_REQUEST   = 27;
+  NF_CONSULT_REQUEST_CANCEL_HOLD   = 30;
+  NF_SITE_FLAGGED_RESULTS          = 32;
+  NF_ORDERER_FLAGGED_RESULTS       = 33;
+  NF_ORDER_REQUIRES_COSIGNATURE    = 37;
+  NF_LAB_ORDER_CANCELED            = 42;
+  NF_STAT_RESULTS                  = 44;
+  NF_DNR_EXPIRING                  = 45;
+  NF_MEDICATIONS_EXPIRING_INPT     = 47;
+  NF_UNVERIFIED_MEDICATION_ORDER   = 48;
+  NF_NEW_ORDER                     = 50;
+  NF_IMAGING_RESULTS_AMENDED       = 53;
+  NF_CRITICAL_LAB_RESULTS          = 57;
+  NF_UNVERIFIED_ORDER              = 59;
+  NF_FLAGGED_OI_RESULTS            = 60;
+  NF_FLAGGED_OI_ORDER              = 61;
+  NF_DC_ORDER                      = 62;
+  NF_CONSULT_REQUEST_UPDATED       = 63;
+  NF_FLAGGED_OI_EXP_INPT           = 64;
+  NF_FLAGGED_OI_EXP_OUTPT          = 65;
+  NF_CONSULT_PROC_INTERPRETATION   = 66;
+  NF_IMAGING_REQUEST_CHANGED       = 67;
+  NF_LAB_THRESHOLD_EXCEEDED        = 68;
+  NF_MAMMOGRAM_RESULTS             = 69;
+  NF_PAP_SMEAR_RESULTS             = 70;
+  NF_ANATOMIC_PATHOLOGY_RESULTS    = 71;
+  NF_MEDICATIONS_EXPIRING_OUTPT    = 72;
+  NF_DCSUMM_UNSIGNED_NOTE          = 901;
+  NF_CONSULT_UNSIGNED_NOTE         = 902;
+  NF_NOTES_UNSIGNED_NOTE           = 903;
+  NF_SURGERY_UNSIGNED_NOTE         = 904;
+
+  { Notify Application Events }
+  NAE_OPEN   = 'BEG';
+  NAE_CLOSE  = 'END';
+  NAE_NEWPT  = 'XPT';
+  NAE_REPORT = 'RPT';
+  NAE_ORDER  = 'ORD';
+
+  { TIU Delete Document Reasons }
+  DR_PRIVACY = 'P';
+  DR_ADMIN   = 'A';
+  DR_NOTREQ  = '';
+  DR_CANCEL  = 'CANCEL';
+
+  { TIU Document Types }
+  TYP_PROGRESS_NOTE =   3;
+  TYP_ADDENDUM      =  81;
+  TYP_DC_SUMM       = 244;
+
+  { TIU National Document Class Names }
+  DCL_CONSULTS = 'CONSULTS';
+  DCL_CLINPROC = 'CLINICAL PROCEDURES';
+  DCL_SURG_OR  = 'SURGICAL REPORTS';
+  DCL_SURG_NON_OR = 'PROCEDURE REPORT (NON-O.R.)';
+
+  { TIU View Contexts }
+  NC_RECENT     = 0;                             // Note context - last n signed notes
+  NC_ALL        = 1;                             // Note context - all signed notes
+  NC_UNSIGNED   = 2;                             // Note context - all unsigned notes
+  NC_UNCOSIGNED = 3;                             // Note context - all uncosigned notes
+  NC_BY_AUTHOR  = 4;                             // Note context - signed notes by author
+  NC_BY_DATE    = 5;                             // Note context - signed notes by date range
+  NC_CUSTOM     = 6;                             // Note Context - custom view
+  //Text Search CQ: HDS00002856
+  NC_SEARCHTEXT = 7;                             // Note Content - search for text
+
+  { Surgery View Contexts }
+  SR_RECENT     = 0;
+  SR_ALL        = 1;
+  SR_BY_DATE    = 5;                             
+  SR_CUSTOM     = 6;
+
+  { Surgery TreeView Icons }
+  IMG_SURG_BLANK     = 0;
+  IMG_SURG_TOP_LEVEL = 1;
+  IMG_SURG_GROUP_SHUT = 2;
+  IMG_SURG_GROUP_OPEN = 3;
+  IMG_SURG_CASE_EMPTY = 4;
+  IMG_SURG_CASE_SHUT  = 5;
+  IMG_SURG_CASE_OPEN  = 6;
+  IMG_SURG_RPT_SINGLE = 7;
+  IMG_SURG_RPT_ADDM   = 8;
+  IMG_SURG_ADDENDUM   = 9;
+  IMG_SURG_NON_OR_CASE_EMPTY = 10;
+  IMG_SURG_NON_OR_CASE_SHUT  = 11;
+  IMG_SURG_NON_OR_CASE_OPEN  = 12;
+
+  { TIU TreeView icons }
+  IMG_TOP_LEVEL     = 0;
+  IMG_GROUP_SHUT    = 1;
+  IMG_GROUP_OPEN    = 2;
+  IMG_SINGLE        = 3;
+  IMG_PARENT        = 4;
+  IMG_IDNOTE_SHUT   = 5;
+  IMG_IDNOTE_OPEN   = 6;
+  IMG_IDPAR_ADDENDA_SHUT = 7;
+  IMG_IDPAR_ADDENDA_OPEN = 8;
+  IMG_ID_CHILD      = 9;
+  IMG_ID_CHILD_ADD  = 10;
+  IMG_ADDENDUM      = 11;
+
+  { Consults Treeview Icons }
+  IMG_GMRC_TOP_LEVEL     = 0;
+  IMG_GMRC_GROUP_SHUT    = 1;
+  IMG_GMRC_GROUP_OPEN    = 2;
+  IMG_GMRC_CONSULT       = 3;
+  IMG_GMRC_PROC          = 4;
+  IMG_GMRC_CLINPROC      = 5;
+  IMG_GMRC_ALL_PROC      = 6;
+  IMG_GMRC_IFC_CONSULT   = 7;
+  IMG_GMRC_IFC_PROC      = 8;
+
+
+  { TIU Imaging icons }
+  IMG_NO_IMAGES     = 6;
+  IMG_1_IMAGE       = 1;
+  IMG_2_IMAGES      = 2;
+  IMG_MANY_IMAGES   = 3;
+  IMG_CHILD_HAS_IMAGES = 4;
+  IMG_IMAGES_HIDDEN = 5;
+
+
+  { TIU ListView sort indicators }
+  IMG_NONE       = -1;
+  IMG_ASCENDING  =  12;
+  IMG_DESCENDING =  13;
+  IMG_BLANK      =  14;
+
+  { TIU TreeView context strings}
+  NC_TV_TEXT: array[CT_NOTES..CT_DCSUMM] of array[NC_RECENT..NC_BY_DATE] of string =
+    (('Recent Signed Notes','All signed notes','All unsigned notes','All uncosigned notes','Signed notes by author','Signed notes by date range'),
+     ('','Related Documents','Medicine Results',' ',' ',' '),
+     ('Recent Signed Summaries','All signed summaries','All unsigned summaries','All uncosigned summaries','Signed summaries by author','Signed summaries by date range'));
+
+  CC_ALL        = 1;                             // Consult context - all Consults
+  CC_BY_STATUS  = 2;                             // Consult context - Consults by Status
+  CC_BY_SERVICE = 4;                             // Consult context - Consults by Service
+  CC_BY_DATE    = 5;                             // Consult context - Consults by date range
+  CC_CUSTOM     = 6;                             // Custom consults list
+
+  CC_TV_TEXT: array[CC_ALL..CC_CUSTOM] of string =
+    ('All consults','Consults by Status', '', 'Consults by Service','Consults by Date Range','Custom List');
+
+  PKG_CONSULTS = 'GMR(123,';
+  PKG_SURGERY  = 'SRF(';
+  PKG_PRF = 'PRF';
+
+  { New Person Filters }
+  NPF_ALL       = 0;
+  NPF_PROVIDER  = 1;
+//  NPF_ENCOUNTER = 2;
+  NPF_SUPPRESS  = 9;
+
+  { Location Types }
+  LOC_ALL      = 0;
+  LOC_OUTP     = 1;
+  LOC_INP      = 2;
+
+  { File Numbers }
+  FN_HOSPITAL_LOCATION = 44;
+  FN_NEW_PERSON = 200;
+
+  UpperCaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+  LowerCaseLetters = 'abcdefghijklmnopqrstuvwxyz';
+  Digits = '0123456789';
+
+  MAX_ENTRY_WIDTH = 80;   //Change in 23.9 for D/S, Consult, and Surgery Notes AGP
+  MAX_PROGRESSNOTE_WIDTH = 80;
+
+  //Group Name
+   NONVAMEDGROUP = 'Non-VA Meds';
+   NONVAMEDTXT =   'Non-VA';
+
+   DISCONTINUED_ORDER = '2';
+
+   CaptionProperty = 'Caption';
+   ShowAccelCharProperty = 'ShowAccelChar';
+   DrawersProperty = 'Drawers';
+
+   {Sensitive Patient Access}
+    DGSR_FAIL = -1;
+    DGSR_NONE =  0;
+    DGSR_SHOW =  1;
+    DGSR_ASK  =  2;
+    DGSR_DENY =  3;
+
+var
+  ScrollBarWidth: integer = 0;
+
+implementation
+
+uses
+  Windows;
+  
+initialization
+  ScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL);
+
+end.
+
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uCore.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uCore.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uCore.pas	(revision 1676)
@@ -0,0 +1,1633 @@
+unit uCore;
+{ The core objects- patient, user, and encounter are defined here.  All other clinical objects
+  in the GUI assume that these core objects exist. }
+
+{$OPTIMIZATION OFF}                              // REMOVE AFTER UNIT IS DEBUGGED
+
+interface
+
+uses SysUtils, Windows, Classes, Forms, ORFn, rCore, uConst, ORClasses;
+
+type
+  TUser = class(TObject)
+  private
+    FDUZ:             Int64;                      // User DUZ (IEN in New Person file)
+    FName:            string;                     // User Name (mixed case)
+    FUserClass:       Integer;                    // User Class (based on OR keys for now)
+    FCanSignOrders:   Boolean;                    // Has ORES key
+    FIsProvider:      Boolean;                    // Has VA Provider key
+    FOrderRole:       Integer;
+    FNoOrdering:      Boolean;
+    FEnableVerify:    Boolean;
+    FDTIME:           Integer;
+    FCountDown:       Integer;
+    FCurrentPrinter:  string;
+    FNotifyAppsWM:    Boolean;
+    FDomain:          string;
+    FPtMsgHang:       Integer;
+    FService:         Integer;
+    FAutoSave:        Integer;
+    FInitialTab:      Integer;
+    FUseLastTab:      Boolean;
+    FWebAccess:       Boolean;
+    FIsRPL:           string;
+    FRPLList:         string;
+    FHasCorTabs:      Boolean;
+    FHasRptTab:       Boolean;
+    FIsReportsOnly:   Boolean;
+    FToolsRptEdit:    Boolean;
+    FDisableHold:     Boolean;
+    FGECStatus:       Boolean;
+    FStationNumber:   string;
+    FIsProductionAccount: boolean;
+  public
+    constructor Create;
+    function HasKey(const KeyName: string): Boolean;
+    procedure SetCurrentPrinter(Value: string);
+    property DUZ:             Int64   read FDUZ;
+    property Name:            string  read FName;
+    property UserClass:       Integer read FUserClass;
+    property CanSignOrders:   Boolean read FCanSignOrders;
+    property IsProvider:      Boolean read FIsProvider;
+    property OrderRole:       Integer read FOrderRole;
+    property NoOrdering:      Boolean read FNoOrdering;
+    property EnableVerify:    Boolean read FEnableVerify;
+    property DTIME:           Integer read FDTIME;
+    property CountDown:       Integer read FCountDown;
+    property PtMsgHang:       Integer read FPtMsgHang;
+    property Service:         Integer read FService;
+    property AutoSave:        Integer read FAutoSave;
+    property InitialTab:      Integer read FInitialTab;
+    property UseLastTab:      Boolean read FUseLastTab;
+    property WebAccess:       Boolean read FWebAccess;
+    property DisableHold:     Boolean read FDisableHold;
+    property IsRPL:           string  read FIsRPL;
+    property RPLList:         string  read FRPLList;
+    property HasCorTabs:      Boolean read FHasCorTabs;
+    property HasRptTab:       Boolean read FHasRptTab;
+    property IsReportsOnly:   Boolean read FIsReportsOnly;
+    property ToolsRptEdit:    Boolean read FToolsRptEdit;
+    property CurrentPrinter:  string  read FCurrentPrinter write SetCurrentPrinter;
+    property GECStatus:       Boolean read FGECStatus;
+    property StationNumber:   string  read FStationNumber;
+    property IsProductionAccount: boolean read FIsProductionAccount;
+  end;
+
+  TPatient = class(TObject)
+  private
+    FDFN:        string;                         // Internal Entry Number in Patient file  //*DFN*
+    FICN:        string;                         // Integration Control Number from MPI
+    FName:       string;                         // Patient Name (mixed case)
+    FSSN:        string;                         // Patient Identifier (generally SSN)
+    FDOB:        TFMDateTime;                    // Date of Birth in Fileman format
+    FAge:        Integer;                        // Patient Age
+    FSex:        Char;                           // Male, Female, Unknown
+    FCWAD:       string;                         // chars identify if pt has CWAD warnings
+    FRestricted: Boolean;                        // True if this is a restricted record
+    FInpatient:  Boolean;                        // True if that patient is an inpatient
+    FLocation:   Integer;                        // IEN in Hosp Loc if inpatient
+    FWardService: string;
+    FSpecialty:  Integer;                        // IEN of the treating specialty if inpatient
+    FAdmitTime:  TFMDateTime;                    // Admit date/time if inpatient
+    FSrvConn:    Boolean;                        // True if patient is service connected
+    FSCPercent:  Integer;                        // Per Cent Service Connection
+    FPrimTeam:   string;                         // name of primary care team
+    FPrimProv:   string;                         // name of primary care provider
+    FAttending:  string;                         // if inpatient, name of attending
+    FDateDied: TFMDateTime;                      // Date of Patient Death (<=0 or still alive)
+    FDateDiedLoaded: boolean;                    // Used to determine of DateDied has been loaded
+    //vwpt  HRN
+    FHRN:  string ;                              //HRN
+    FAltHRN : string ;                           //alternate HRN (future)
+    //end vwpt
+    procedure SetDFN(const Value: string);
+    function GetDateDied: TFMDateTime;       // *DFN*
+  public
+    procedure Clear;
+    property DFN:              string      read FDFN write SetDFN;  //*DFN*
+    property ICN:              string      read FICN;
+    property Name:             string      read FName;
+    property SSN:              string      read FSSN;
+    property DOB:              TFMDateTime read FDOB;
+    property Age:              Integer     read FAge;
+    property Sex:              Char        read FSex;
+    property CWAD:             string      read FCWAD;
+    property Inpatient:        Boolean     read FInpatient;
+    property Location:         Integer     read FLocation;
+    property WardService:      string      read FWardService;
+    property Specialty:        Integer     read FSpecialty;
+    property AdmitTime:        TFMDateTime read FAdmitTime;
+    property DateDied:         TFMDateTime read GetDateDied;
+    property ServiceConnected: Boolean     read FSrvConn;
+    property SCPercent:        Integer     read FSCPercent;
+    property PrimaryTeam:      string      read FPrimTeam;
+    property PrimaryProvider:  string      read FPrimProv;
+    property Attending:        string      read FAttending;
+    //vwpt HRN AltHRN
+    property HRN:              string      read FHRN ;
+    property AltHRN:           string      read FAltHRN;
+    //end vwpt
+  end;
+
+  TEncounter = class(TObject, IORNotifier)
+  private
+    FChanged:       Boolean;                     // one or more visit fields have changed
+    FDateTime:      TFMDateTime;                 // date/time of encounter (appt, admission)
+    FInpatient:     Boolean;                     // true if this is an inpatient encounter
+    FLocation:      Integer;                     // IEN in Hospital Location file
+    FLocationName:  string;                      // Name in Hospital Location file
+    FLocationText:  string;                      // Name + Date/Time or Name + RoomBed
+    FProvider:      Int64  ;                     // IEN in New Person file
+    FProviderName:  string;                      // Name in New Person file
+    FVisitCategory: Char;                        // A=ambulatory,T=Telephone,H=inpt,E=historic
+    FStandAlone:    Boolean;                     // true if visit not related to appointment
+    FNotifier:      IORNotifier;                 // Event handlers for location changes
+    function GetLocationName: string;
+    function GetLocationText: string;
+    function GetProviderName: string;
+    function GetVisitCategory: Char;
+    function GetVisitStr: string;
+    procedure SetDateTime(Value: TFMDateTime);
+    procedure SetInpatient(Value: Boolean);
+    procedure SetLocation(Value: Integer);
+    procedure SetProvider(Value: Int64);
+    procedure SetStandAlone(Value: Boolean);
+    procedure SetVisitCategory(Value: Char);
+    procedure UpdateText;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Clear;
+    procedure EncounterSwitch(Loc: integer; LocName, LocText: string; DT: TFMDateTime; vCat: Char);
+    function NeedVisit: Boolean;
+    property DateTime:      TFMDateTime read FDateTime  write SetDateTime;
+    property Inpatient:     Boolean     read FInpatient write SetInpatient;
+    property Location:      Integer     read FLocation  write SetLocation;
+    property LocationName:  string      read GetLocationName write FLocationName;
+    property LocationText:  string      read GetLocationText write FLocationText;
+    property Provider:      Int64       read FProvider  write SetProvider;
+    property ProviderName:  string      read GetProviderName;
+    property StandAlone:    Boolean     read FStandAlone write SetStandAlone;
+    property VisitCategory: Char        read GetVisitCategory write SetVisitCategory;
+    property VisitStr:      string      read GetVisitStr;
+    property Notifier:      IORNotifier read FNotifier implements IORNotifier;
+  end;
+
+  TChangeItem = class
+  private
+    FItemType:  Integer;
+    FID:        string;
+    FText:      string;
+    FGroupName: string;
+    FSignState: Integer;
+    FParentID : string;
+    FUser     : Int64;
+    FOrderDG  : String;
+    FDCOrder  : boolean;
+    FDelay    : boolean;
+    constructor Create(AnItemType: Integer; const AnID, AText, AGroupName: string;
+      ASignState: Integer; AParentID: string = ''; User: int64 = 0; OrderDG: string = ''; DCOrder: boolean = False; Delay: boolean = False);
+  public
+    property ItemType:  Integer read FItemType;
+    property ID:        string  read FID;
+    property Text:      string  read FText;
+    property GroupName: string  read FGroupName;
+    property SignState: Integer read FSignState write FSignState;
+    property ParentID : string  read FParentID;
+    property User: Int64 read FUser write FUser;
+    property OrderDG: string read FOrderDG write FOrderDG;
+    property DCOrder: boolean read FDCOrder write FDCOrder;
+    property Delay: boolean read FDelay write FDelay;
+  end;
+
+  TORRemoveChangesEvent = procedure(Sender: TObject; ChangeItem: TChangeItem) of object;  {**RV**}
+
+  TChanges = class
+  private
+    FCount:     Integer;
+    FDocuments: TList;
+    FOrders:    TList;
+    FOrderGrp:  TStringList;
+    FPCE:       TList;
+    FPCEGrp:    TStringList;
+    FOnRemove:  TORRemoveChangesEvent;    {**RV**}
+  private
+    procedure AddUnsignedToChanges;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Add(ItemType: Integer; const AnID, ItemText, GroupName: string; SignState: Integer; AParentID: string = '';
+                  User: int64 = 0; OrderDG: String = ''; DCOrder: boolean = FALSE; Delay: boolean = FALSE);
+    procedure Clear;
+    function CanSign: Boolean;
+    function Exist(ItemType: Integer; const AnID: string): Boolean;
+    function ExistForOrder(const AnID: string): Boolean;
+    function Locate(ItemType: Integer; const AnID: string): TChangeItem;
+    procedure Remove(ItemType: Integer; const AnID: string);
+    procedure ReplaceID(ItemType: Integer; const OldID, NewID: string);
+    procedure ReplaceSignState(ItemType: Integer; const AnID: string; NewState: Integer);
+    procedure ReplaceText(ItemType: Integer; const AnID, NewText: string);
+    procedure ReplaceODGrpName(const AnODID, NewGrp: string);
+    procedure ChangeOrderGrp(const oldGrpName,newGrpName: string);
+    function RequireReview: Boolean;
+    property Count:      Integer     read FCount;
+    property Documents:  TList       read FDocuments;
+    property OnRemove: TORRemoveChangesEvent read FOnRemove write FOnRemove;        {**RV**}
+    property Orders:     TList       read FOrders;
+    property PCE:        TList       read FPCE;
+    property OrderGrp: TStringList read FOrderGrp;
+    property PCEGrp:   TStringList read FPCEGrp;
+  end;
+
+  TNotifyItem = class
+  private
+    DFN: string;
+    FollowUp: Integer;
+    //AlertData: string;
+    RecordID: string;
+  end;
+
+  TNotifications = class
+  private
+    FActive: Boolean;
+    FList: TList;
+    FCurrentIndex: Integer;
+    FNotifyItem: TNotifyItem;
+    function GetDFN: string;  //*DFN*
+    function GetFollowUp: Integer;
+    function GetAlertData: string;
+    function GetRecordID: string;
+    function GetText: string;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Add(const ADFN: string; AFollowUp: Integer; const ARecordID: string);  //*DFN*
+    procedure Clear;
+    procedure Next;
+    procedure Prior;
+    procedure Delete;
+    procedure DeleteForCurrentUser;
+    property Active:   Boolean read FActive;
+    property DFN:      string  read GetDFN;  //*DFN*
+    property FollowUp: Integer read GetFollowUp;
+    property AlertData: string read GetAlertData;
+    property RecordID: string  read GetRecordID;
+    property Text:     string  read GetText;
+  end;
+
+  TRemoteSite = class
+  private
+    FSiteID: string;
+    FSiteName: string;
+    FLastDate: TFMDateTime;
+    FSelected: Boolean;
+    FRemoteHandle: string;
+    FLabRemoteHandle: string;
+    FQueryStatus: string;
+    FLabQueryStatus: string;
+    FData: TStringList;
+    FLabData: TStringList;
+    FCurrentLabQuery: string;
+    FCurrentReportQuery: string;
+    procedure SetSelected(Value: Boolean);
+  public
+    destructor  Destroy; override;
+    constructor Create(ASite: string);
+    procedure ReportClear;
+    procedure LabClear;
+    property SiteID  : string        read FSiteID;
+    property SiteName: string        read FSiteName;
+    property LastDate: TFMDateTime   read FLastDate;
+    property Selected: boolean       read FSelected write SetSelected;
+    property RemoteHandle: string    read FRemoteHandle write FRemoteHandle;
+    property QueryStatus: string     read FQueryStatus write FQueryStatus;
+    property Data: TStringList       read FData write FData;
+    property LabRemoteHandle: string read FLabRemoteHandle write FLabRemoteHandle;
+    property LabQueryStatus: string  read FLabQueryStatus write FLabQueryStatus;
+    property LabData: TStringList    read FLabData write FLabData;
+    property CurrentLabQuery: string    read FCurrentLabQuery write FCurrentLabQuery;
+    property CurrentReportQuery: string read FCurrentReportQuery write FCurrentReportQuery;
+  end;
+
+  TRemoteSiteList = class
+  private
+    FCount: integer;
+    FSiteList: TList;
+    FRemoteDataExists: Boolean;
+    FNoDataReason: string;
+  public
+    constructor Create;
+    destructor  Destroy; override;
+    procedure   Add(ASite: string);
+    procedure   ChangePatient(const DFN: string);
+    procedure   Clear;
+    property    Count           : integer     read FCount;
+    property    SiteList        : TList       read FSiteList;
+    property    RemoteDataExists: Boolean     read FRemoteDataExists;
+    property    NoDataReason    : string      read FNoDataReason;
+  end;
+
+  TRemoteReport = class
+  private
+    FReport: string;
+    FHandle: string;
+  public
+    constructor Create(AReport: string);
+    destructor Destroy; override;
+    property Handle            :string     read FHandle write FHandle;
+    property Report            :string     read FReport write FReport;
+  end;
+
+  TRemoteReportList = class
+  private
+    FCount: integer;
+    FReportList: TList;
+  public
+    constructor Create;
+    destructor  Destroy; override;
+    procedure   Add(AReportList, AHandle: string);
+    procedure   Clear;
+    property    Count           :integer     read FCount;
+    property    ReportList      :TList       read FReportList;
+  end;
+
+  PReportTreeObject = ^TReportTreeObject;
+  TReportTreeObject = Record
+    ID       : String;         //Report ID
+    Heading  : String;         //Report Heading
+    Remote   : String;         //Remote Data Capable
+    RptType  : String;         //Report Type
+    Category : String;         //Report Category
+    RPCName  : String;         //Associated RPC
+    IFN      : String;         //IFN of report in file 101.24
+    HDR      : String;         //HDR is source of data if = 1
+  end;
+
+var
+  User: TUser;
+  Patient: TPatient;
+  Encounter: TEncounter = nil;
+  Changes: TChanges;
+  RemoteSites: TRemoteSiteList;
+  RemoteReports: TRemoteReportList;
+  Notifications: TNotifications;
+  HasFlag: boolean;
+  FlagList: TStringList;
+  //hds7591  Clinic/Ward movement.
+  TempEncounterLoc: Integer; // used to Save Encounter Location when user selected "Review Sign Changes" from "File"
+  TempEncounterLocName: string; // since in the path PatientRefresh is done prior to checking if patient has been admitted while entering OPT orders.
+  TempEncounterText: string;
+  TempEncounterDateTime: TFMDateTime;
+  TempEncounterVistCat: Char;
+  //TempOutEncounterLoc: Integer;
+  //TempOutEncounterLocName: string;
+
+procedure NotifyOtherApps(const AppEvent, AppData: string);
+procedure FlushNotifierBuffer;
+procedure TerminateOtherAppNotification;
+procedure GotoWebPage(const URL: WideString);
+function AllowAccessToSensitivePatient(NewDFN: string; var AccessStatus: integer): boolean;
+
+
+implementation
+
+uses rTIU, rOrders, rConsults, uOrders;
+
+type
+  HlinkNavProc = function(pUnk: IUnknown; szTarget: PWideChar): HResult; stdcall;
+
+var
+  uVistaMsg, uVistaDomMsg: UINT;
+  URLMonHandle: THandle = 0;
+  HlinkNav: HlinkNavProc;
+
+type
+  TNotifyAppsThread = class(TThread)
+  private
+    FRunning: boolean;
+  public
+    constructor CreateThread;
+    procedure ResumeIfIdle;
+    procedure ResumeAndTerminate;
+    procedure Execute; override;
+    property Running: boolean read FRunning;
+  end;
+
+  TMsgType = (mtVistaMessage, mtVistaDomainMessage);
+
+var
+  uSynchronizer: TMultiReadExclusiveWriteSynchronizer = nil;
+  uNotifyAppsThread: TNotifyAppsThread = nil;
+  uNotifyAppsQueue: TStringList = nil;
+  uNotifyAppsActive: boolean = TRUE;
+  AnAtom: ATOM = 0;
+
+const
+  LONG_BROADCAST_TIMEOUT = 30000; // 30 seconds
+  SHORT_BROADCAST_TIMEOUT = 2000; // 2 seconds
+  MSG_TYPE: array[TMsgType] of String = ('V','D');
+
+function AllowAccessToSensitivePatient(NewDFN: string; var AccessStatus: integer): boolean;
+const
+  TX_DGSR_ERR    = 'Unable to perform sensitive record checks';
+  TC_DGSR_ERR    = 'Error';
+  TC_DGSR_SHOW   = 'Restricted Record';
+  TC_DGSR_DENY   = 'Access Denied';
+  TX_DGSR_YESNO  = CRLF + 'Do you want to continue processing this patient record?';
+  TC_NEXT_NOTIF  = 'NEXT NOTIFICATION:  ';
+var
+  //AccessStatus: integer;
+  AMsg, PrefixC, PrefixT: string;
+begin
+  Result := TRUE;
+  if Notifications.Active then
+  begin
+    PrefixT := Piece(Notifications.RecordID, U, 1) + CRLF + CRLF;
+    PrefixC := TC_NEXT_NOTIF;
+  end
+  else
+  begin
+    PrefixT := '';
+    PrefixC := '';
+  end;
+  CheckSensitiveRecordAccess(NewDFN, AccessStatus, AMsg);
+  case AccessStatus of
+  DGSR_FAIL: begin
+               InfoBox(PrefixT + TX_DGSR_ERR, PrefixC + TC_DGSR_ERR, MB_OK);
+               Result := FALSE;
+             end;
+  DGSR_NONE: { Nothing - allow access to the patient. };
+  DGSR_SHOW: InfoBox(PrefixT + AMsg, PrefixC + TC_DGSR_SHOW, MB_OK);
+  DGSR_ASK:  if InfoBox(PrefixT + AMsg + TX_DGSR_YESNO, PrefixC + TC_DGSR_SHOW, MB_YESNO or MB_ICONWARNING or
+               MB_DEFBUTTON2) = IDYES then LogSensitiveRecordAccess(NewDFN)
+             else Result := FALSE;
+  else       begin
+               InfoBox(PrefixT + AMsg, PrefixC + TC_DGSR_DENY, MB_OK);
+               if Notifications.Active then Notifications.DeleteForCurrentUser;
+               Result := FALSE;
+             end;
+  end;
+end;
+
+function QueuePending: boolean;
+begin
+  uSynchronizer.BeginRead;
+  try
+    Result := (uNotifyAppsQueue.Count > 0);
+  finally
+    uSynchronizer.EndRead;
+  end;
+end;
+
+procedure ProcessQueue(ShortTimout: boolean);
+var
+  msg: String;
+  process: boolean;
+  AResult: LPDWORD;
+  MsgCode, timeout: UINT;
+  TypeCode: String;
+
+begin
+  if(not QueuePending) then exit;
+  uSynchronizer.BeginWrite;
+  try
+    process := (uNotifyAppsQueue.Count > 0);
+    if(process) then
+    begin
+      msg := uNotifyAppsQueue.Strings[0];
+      uNotifyAppsQueue.Delete(0);
+    end;
+  finally
+    uSynchronizer.EndWrite;
+  end;
+  if(process) then
+  begin
+    TypeCode := copy(msg,1,1);
+    delete(msg,1,1);
+    if(TypeCode = MSG_TYPE[mtVistaMessage]) then
+      MsgCode := uVistaMsg
+    else
+      MsgCode := uVistaDomMsg;
+
+    if(ShortTimout) then
+      timeout := SHORT_BROADCAST_TIMEOUT
+    else
+      timeout := LONG_BROADCAST_TIMEOUT;
+
+    // put text in the global atom table
+    AnAtom := GlobalAddAtom(PChar(msg));
+    if (AnAtom <> 0) then
+    begin
+      try
+        // broadcast 'VistA Domain Event - Clinical' to all main windows
+        //SendMessage(HWND_BROADCAST, uVistaDomMsg, WPARAM(Application.MainForm.Handle), LPARAM(AnAtom));
+        //
+        //Changed to SendMessageTimeout to prevent hang when other app unresponsive  (RV)
+        AResult := nil;
+        SendMessageTimeout(HWND_BROADCAST, MsgCode, WPARAM(Application.MainForm.Handle), LPARAM(AnAtom),
+                SMTO_ABORTIFHUNG or SMTO_BLOCK, timeout, AResult^);
+      finally
+      // after all windows have processed the message, remove the text from the table
+        GlobalDeleteAtom(AnAtom);
+        AnAtom := 0;
+      end;
+    end;
+  end;
+end;
+
+constructor TNotifyAppsThread.CreateThread;
+begin
+  inherited Create(TRUE);
+  FRunning := TRUE;
+end;
+
+procedure TNotifyAppsThread.ResumeIfIdle;
+begin
+  if(Suspended) then
+    Resume;
+end;
+
+procedure TNotifyAppsThread.ResumeAndTerminate;
+begin
+  Terminate;
+  if(Suspended) then
+    Resume;
+end;
+
+procedure TNotifyAppsThread.Execute;
+begin
+  while(not Terminated) do
+  begin
+    if(QueuePending) then
+      ProcessQueue(FALSE)
+    else if(not Terminated) then
+      Suspend;
+  end;
+  FRunning := FALSE;
+end;
+
+function AppNotificationEnabled: boolean;
+begin
+  Result := FALSE;
+  if(not uNotifyAppsActive) then exit;
+  if Application.MainForm = nil then Exit;
+  if User = nil then exit;
+  if not User.FNotifyAppsWM then Exit;
+  // register the message with windows to get a unique message number (if not already registered)
+  if uVistaMsg = 0    then uVistaMsg    := RegisterWindowMessage('VistA Event - Clinical');
+  if uVistaDomMsg = 0 then uVistaDomMsg := RegisterWindowMessage('VistA Domain Event - Clinical');
+  if (uVistaMsg = 0) or (uVistaDomMsg = 0) then Exit;
+  if(not assigned(uNotifyAppsQueue)) then
+    uNotifyAppsQueue := TStringList.Create;
+  if(not assigned(uSynchronizer)) then
+    uSynchronizer := TMultiReadExclusiveWriteSynchronizer.Create;
+  if(not assigned(uNotifyAppsThread)) then
+    uNotifyAppsThread := TNotifyAppsThread.CreateThread;
+  Result := TRUE;
+end;
+
+procedure ReleaseAppNotification;
+var
+  waitState: DWORD;
+
+begin
+  uNotifyAppsActive := FALSE;
+  if(assigned(uNotifyAppsThread)) then
+  begin
+    uNotifyAppsThread.ResumeAndTerminate;
+    sleep(10);
+    if(uNotifyAppsThread.Running) then
+    begin
+      waitState := WaitForSingleObject(uNotifyAppsThread.Handle, SHORT_BROADCAST_TIMEOUT);
+      if((waitState = WAIT_TIMEOUT) or
+         (waitState = WAIT_FAILED) or
+         (waitState = WAIT_ABANDONED)) then
+      begin
+        TerminateThread(uNotifyAppsThread.Handle, 0);
+        if(AnAtom <> 0) then
+        begin
+          GlobalDeleteAtom(AnAtom);
+          AnAtom := 0;
+        end;
+      end;
+    end;
+    FreeAndNil(uNotifyAppsThread);
+  end;
+  if(assigned(uSynchronizer)) and
+    (assigned(uNotifyAppsQueue)) then
+  begin
+    while(QueuePending) do
+      ProcessQueue(TRUE);
+  end;
+  FreeAndNil(uSynchronizer);
+  FreeAndNil(uNotifyAppsQueue);
+end;
+
+procedure NotifyOtherApps(const AppEvent, AppData: string);
+var
+  m1: string;
+  m2: string;
+
+begin
+  if(AppNotificationEnabled) then
+  begin
+    // first send the domain version of the message
+    m1 := MSG_TYPE[mtVistaDomainMessage] + AppEvent + U + 'CPRS;' + User.FDomain + U + Patient.DFN + U + AppData;
+    // for backward compatibility, send the message without the domain
+    m2 := MSG_TYPE[mtVistaMessage] + AppEvent + U + 'CPRS' + U + Patient.DFN + U + AppData;
+    uSynchronizer.BeginWrite;
+    try
+      uNotifyAppsQueue.Add(m1);
+      uNotifyAppsQueue.Add(m2);
+    finally
+      uSynchronizer.EndWrite;
+    end;
+    uNotifyAppsThread.ResumeIfIdle;
+  end;
+end;
+
+procedure FlushNotifierBuffer;
+begin
+  if(AppNotificationEnabled) then
+  begin
+    uSynchronizer.BeginWrite;
+    try
+      uNotifyAppsQueue.Clear;
+    finally
+      uSynchronizer.EndWrite;
+    end;
+  end;
+end;
+
+procedure TerminateOtherAppNotification;
+begin
+  ReleaseAppNotification;
+end;
+
+{ TUser methods ---------------------------------------------------------------------------- }
+
+constructor TUser.Create;
+{ create the User object for the currently logged in user }
+var
+  UserInfo: TUserInfo;
+begin
+  UserInfo := GetUserInfo;
+  FDUZ           := UserInfo.DUZ;
+  FName          := UserInfo.Name;
+  FUserClass     := UserInfo.UserClass;
+  FCanSignOrders := UserInfo.CanSignOrders;
+  FIsProvider    := UserInfo.IsProvider;
+  FOrderRole     := UserInfo.OrderRole;
+  FNoOrdering    := UserInfo.NoOrdering;
+  FEnableVerify  := UserInfo.EnableVerify;
+  FDTIME         := UserInfo.DTIME;
+  FCountDown     := UserInfo.CountDown;
+  FNotifyAppsWM  := UserInfo.NotifyAppsWM;
+  FDomain        := UserInfo.Domain;
+  FPtMsgHang     := UserInfo.PtMsgHang;
+  FService       := UserInfo.Service;
+  FAutoSave      := UserInfo.AutoSave;
+  FInitialTab    := UserInfo.InitialTab;
+  FUseLastTab    := UserInfo.UseLastTab;
+  if(URLMonHandle = 0) then
+    FWebAccess := FALSE
+  else
+    FWebAccess := UserInfo.WebAccess;
+  FDisableHold     := UserInfo.DisableHold;
+  FIsRPL           := UserInfo.IsRPL;
+  FRPLList         := UserInfo.RPLList;
+  FHasCorTabs      := UserInfo.HasCorTabs;
+  FHasRptTab       := UserInfo.HasRptTab;
+  FIsReportsOnly   := UserInfo.IsReportsOnly;
+  FToolsRptEdit    := UserInfo.ToolsRptEdit;
+  FCurrentPrinter  := GetDefaultPrinter(DUZ, 0);
+  FGECStatus       := UserInfo.GECStatusCheck;
+  FStationNumber   := UserInfo.StationNumber;
+  FIsProductionAccount := UserInfo.IsProductionAccount;
+end;
+
+function TUser.HasKey(const KeyName: string): Boolean;
+{ returns true if the current user has the given security key }
+begin
+  Result := HasSecurityKey(KeyName);
+end;
+
+{ TPatient methods ------------------------------------------------------------------------- }
+
+procedure TPatient.Clear;
+{ clears all fields in the Patient object }
+begin
+  FDFN         := '';
+  FName        := '';
+  FSSN         := '';
+  FDOB         := 0;
+  FAge         := 0;
+  FSex         := 'U';
+  FCWAD        := '';
+  FRestricted  := False;
+  FInpatient   := False;
+  FLocation    := 0;
+  FWardService := '';
+  FSpecialty   := 0;
+  FAdmitTime   := 0;
+  FSrvConn     := False;
+  FSCPercent   := 0;
+  FPrimTeam    := '';
+  FPrimProv    := '';
+  FAttending   := '';
+  //vwpt hrn althrn
+  FHRN         := '';
+  FAltHRN      := '';
+  //end vwpt
+end;
+
+function TPatient.GetDateDied: TFMDateTime;
+begin
+  if(not FDateDiedLoaded) then
+  begin
+    FDateDied := DateOfDeath(FDFN);
+    FDateDiedLoaded := TRUE;
+  end;
+  Result := FDateDied;
+end;
+
+procedure TPatient.SetDFN(const Value: string);  //*DFN*
+{ selects a patient and sets up the Patient object for the patient }
+var
+  PtSelect: TPtSelect;
+begin
+  if (Value = '') or (Value = FDFN) then Exit;  //*DFN*
+  Clear;
+  SelectPatient(Value, PtSelect);
+  FDFN        := Value;
+  FName       := PtSelect.Name;
+  FICN        := PtSelect.ICN;
+  FSSN        := PtSelect.SSN;
+  FDOB        := PtSelect.DOB;
+  FAge        := PtSelect.Age;
+  FSex        := PtSelect.Sex;
+  FCWAD       := PtSelect.CWAD;
+  FRestricted := PtSelect.Restricted;
+  FInpatient  := Length(PtSelect.Location) > 0;
+  FWardService :=PtSelect.WardService;
+  FLocation   := PtSelect.LocationIEN;
+  FSpecialty  := PtSelect.SpecialtyIEN;
+  FAdmitTime  := PtSelect.AdmitTime;
+  FSrvConn    := PtSelect.ServiceConnected;
+  FSCPercent  := PtSelect.SCPercent;
+  FPrimTeam   := PtSelect.PrimaryTeam;
+  FPrimProv   := PtSelect.PrimaryProvider;
+  FAttending  := PtSelect.Attending;
+  //vwpt HRN ALTHRN
+  FHRN        := PtSelect.HRN;
+  FAltHRN     := PtSelect.AltHRN;
+  //end vwpt
+end;
+
+{ TEncounter ------------------------------------------------------------------------------- }
+
+constructor TEncounter.Create;
+begin
+  inherited;
+  FNotifier := TORNotifier.Create(Self, TRUE);
+end;
+
+destructor TEncounter.Destroy;
+begin
+  FNotifier := nil; // Frees instance
+  inherited;
+end;
+
+procedure TEncounter.EncounterSwitch(Loc: integer; LocName, LocText: string; DT: TFMDateTime; vCat: Char);
+begin
+ Encounter.Location := Loc;
+ Encounter.LocationName := LocName;
+ Encounter.LocationText := LocText;
+ Encounter.VisitCategory := vCat;
+ Encounter.DateTime := DT;;
+end;
+
+procedure TEncounter.Clear;
+{ clears all the fields of an Encounter (usually done upon patient selection }
+begin
+  FChanged      := False;
+  FDateTime     := 0;
+  FInpatient    := False;
+  FLocationName := '';
+  FLocationText := '';
+  FProvider     := 0;
+  FProviderName := '';
+  FStandAlone   := False;
+  FVisitCategory := #0;
+  SetLocation(0); // Used to call Notifications - do it last so everything else is set
+end;
+
+function TEncounter.GetLocationText: string;
+{ returns abbreviated hospital location + room/bed (or date/time for appt) }
+begin
+  if FChanged then UpdateText;
+  Result := FLocationText;
+end;
+
+function TEncounter.GetLocationName: string;
+{ returns external text value for hospital location }
+begin
+  if FChanged then UpdateText;
+  Result := FLocationName;
+end;
+
+function TEncounter.GetProviderName: string;
+{ returns external text value for provider name }
+begin
+  if FChanged then UpdateText;
+  Result := FProviderName;
+end;
+
+function TEncounter.GetVisitCategory: Char;
+begin
+  Result := FVisitCategory;
+  if Result = #0 then Result := 'A';
+end;
+
+function TEncounter.GetVisitStr: string;
+begin
+  Result :=  IntToStr(FLocation) + ';' + FloatToStr(FDateTime) + ';' + VisitCategory;
+  // use VisitCategory property to insure non-null character
+end;
+
+function TEncounter.NeedVisit: Boolean;
+{ returns true if required fields for visit creation are present }
+begin
+  // added "<" to FDateTime check to trap "-1" visit dates - v23.12 (RV)
+  if (FDateTime <= 0) or (FLocation = 0) then Result := True else Result := False;
+end;
+
+procedure TEncounter.SetDateTime(Value: TFMDateTime);
+{ sets the date/time for the encounter - causes the visit to be reset }
+begin
+  if Value <> FDateTime then
+  begin
+    FDateTime := Value;
+    FChanged := True;
+  end;
+end;
+
+procedure TEncounter.SetInpatient(Value: Boolean);
+{ sets the inpatient flag for the encounter - causes the visit to be reset }
+begin
+  if Value <> FInpatient then
+  begin
+    FInpatient := Value;
+    FChanged := True;
+  end;
+end;
+
+procedure TEncounter.SetLocation(Value: Integer);
+{ sets the location for the encounter - causes the visit to be reset }
+begin
+  if Value <> FLocation then
+  begin
+    FLocation := Value;
+    FChanged := True;
+    FNotifier.Notify(Self);
+  end;
+end;
+
+procedure TEncounter.SetProvider(Value: Int64);
+{ sets the provider for the encounter - causes the visit to be reset }
+begin
+  if Value <> FProvider then
+  begin
+    FProvider := Value;
+    FChanged := True;
+  end;
+end;
+
+procedure TEncounter.SetStandAlone(Value: Boolean);
+{ StandAlone should be true if this encounter isn't related to an appointment }
+begin
+  if Value <> FStandAlone then
+  begin
+    FStandAlone := Value;
+    FChanged := True;
+  end;
+end;
+
+procedure TEncounter.SetVisitCategory(Value: Char);
+{ sets the visit type for this encounter - causes to visit to be reset }
+begin
+  if Value <> FVisitCategory then
+  begin
+    FVisitCategory := Value;
+    FChanged := True;
+  end;
+end;
+
+procedure TEncounter.UpdateText;
+{ retrieve external values for provider name, hospital location }
+var
+  EncounterText: TEncounterText;
+begin
+  { this references the Patient object which is assumed to be created }
+  EncounterText := GetEncounterText(Patient.DFN, FLocation, FProvider);
+  with EncounterText do
+  begin
+    FLocationName := LocationName;
+    if Length(LocationAbbr) > 0
+      then FLocationText := LocationAbbr
+      else FLocationText := LocationName;
+    if Length(LocationName) > 0 then
+    begin
+      if (FVisitCategory = 'H') //FInpatient
+        then FLocationText := FLocationText + ' ' + RoomBed
+        else FLocationText := FLocationText + ' ' +
+          FormatFMDateTime('mmm dd,yy hh:nn', FDateTime);
+    end
+    else FLocationText := '';
+    if Length(ProviderName) > 0  // ProviderName is the field in EncounterText
+      then FProviderName := ProviderName
+      else FProviderName := '';
+  end;
+  FChanged := False;
+end;
+
+{ TChangeItem ------------------------------------------------------------------------------ }
+
+constructor TChangeItem.Create(AnItemType: Integer; const AnID, AText, AGroupName: string;
+  ASignState: Integer; AParentID: string; user: int64; OrderDG: string; DCOrder, Delay: boolean);
+begin
+  FItemType  := AnItemType;
+  FID        := AnID;
+  FText      := AText;
+  FGroupName := AGroupName;
+  FSignState := ASignState;
+  FParentID  := AParentID;
+  FUser      := User;
+  FOrderDG   := OrderDG;
+  FDCOrder   := DCOrder;
+  FDelay     := Delay;
+end;
+
+{ TChanges --------------------------------------------------------------------------------- }
+
+constructor TChanges.Create;
+begin
+  FDocuments := TList.Create;
+  FOrders    := TList.Create;
+  FPCE       := TList.Create;
+  FOrderGrp  := TStringList.Create;
+  FPCEGrp    := TStringList.Create;
+  FCount := 0;
+end;
+
+destructor TChanges.Destroy;
+begin
+  Clear;
+  FDocuments.Free;
+  FOrders.Free;
+  FPCE.Free;
+  FOrderGrp.Free;
+  FPCEGrp.Free;
+  inherited Destroy;
+end;
+
+procedure TChanges.Add(ItemType: Integer; const AnID, ItemText, GroupName: string;
+  SignState: Integer; AParentID: string; User: int64; OrderDG: String; DCOrder, Delay: boolean);
+var
+  i: Integer;
+  Found: Boolean;
+  ChangeList: TList;
+  NewChangeItem: TChangeItem;
+begin
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;  {*REV*}
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  Found := False;
+  if ChangeList <> nil then with ChangeList do for i := 0 to Count - 1 do
+    with TChangeItem(Items[i]) do if ID = AnID then
+    begin
+      Found := True;
+      // can't change ItemType, ID, or GroupName, must call Remove first
+      FText := ItemText;
+      FSignState := SignState;
+    end;
+  if not Found then
+  begin
+    NewChangeItem := TChangeItem.Create(ItemType, AnID, ItemText, GroupName, SignState, AParentID, User, OrderDG, DCOrder, Delay);
+    case ItemType of
+    CH_DOC: begin
+              FDocuments.Add(NewChangeItem);
+            end;
+    CH_SUM: begin     {*REV*}
+              FDocuments.Add(NewChangeItem);
+            end;
+    CH_CON: begin
+              FDocuments.Add(NewChangeItem);
+            end;
+    CH_SUR: begin
+              FDocuments.Add(NewChangeItem);
+            end;
+    CH_ORD: begin
+              FOrders.Add(NewChangeItem);
+              with FOrderGrp do if IndexOf(GroupName) < 0 then Add(GroupName);
+            end;
+    CH_PCE: begin
+              FPCE.Add(NewChangeItem);
+              with FPCEGrp do if IndexOf(GroupName) < 0 then Add(GroupName);
+            end;
+    end;
+    Inc(FCount);
+  end;
+end;
+
+function TChanges.CanSign: Boolean;
+{ returns true if any items in the changes list can be signed by the user }
+var
+  i: Integer;
+begin
+  Result := False;
+  with FDocuments do for i := 0 to Count - 1 do
+    with TChangeItem(Items[i]) do if FSignState <> CH_SIGN_NA then
+    begin
+      Result := True;
+      Exit;
+    end;
+  with FOrders do for i := 0 to Count - 1 do
+    with TChangeItem(Items[i]) do if FSignState <> CH_SIGN_NA then
+    begin
+      Result := True;
+      Exit;
+    end;
+  // don't have to worry about FPCE - it never requires signatures
+end;
+
+procedure TChanges.Clear;
+var
+  i, ConsultIEN: Integer;
+  DocIEN: Int64;
+  OrderID: string;
+begin
+  with FDocuments do for i := 0 to Count - 1 do
+    begin
+      DocIEN := StrToInt64Def(TChangeItem(Items[i]).ID, 0);
+      UnlockDocument(DocIEN);
+      ConsultIEN := GetConsultIENforNote(DocIEN);
+      if ConsultIEN > -1 then
+        begin
+          OrderID := GetConsultOrderIEN(ConsultIEN);
+          UnlockOrderIfAble(OrderID);
+        end;
+      TChangeItem(Items[i]).Free;
+    end;
+  with FOrders do for i := 0 to Count - 1 do TChangeItem(Items[i]).Free;
+  with FPCE do for i := 0 to Count - 1 do TChangeItem(Items[i]).Free;
+  FDocuments.Clear;
+  FOrders.Clear;
+  FPCE.Clear;
+  FOrderGrp.Clear;
+  FPCEGrp.Clear;
+  FCount := 0;
+end;
+
+function TChanges.Exist(ItemType: Integer; const AnID: string): Boolean;
+var
+  ChangeList: TList;
+  i: Integer;
+begin
+  Result := False;
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;   {*REV*}
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  if ChangeList <> nil then with ChangeList do
+    for i := 0 to Count - 1 do if TChangeItem(Items[i]).ID = AnID then
+    begin
+      Result := True;
+      Break;
+    end;
+end;
+
+function TChanges.ExistForOrder(const AnID: string): Boolean;
+{ returns TRUE if any item in the list of orders has matching order number (ignores action) }
+var
+  i: Integer;
+begin
+  Result := False;
+  if FOrders <> nil then with FOrders do
+    for i := 0 to Count - 1 do
+      if Piece(TChangeItem(Items[i]).ID, ';', 1) = Piece(AnID, ';', 1) then
+      begin
+        Result := True;
+        Break;
+      end;
+end;
+
+function TChanges.Locate(ItemType: Integer; const AnID: string): TChangeItem;
+var
+  ChangeList: TList;
+  i: Integer;
+begin
+  Result := nil;
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;   {*REV*}
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  if ChangeList <> nil then with ChangeList do
+    for i := 0 to Count - 1 do if TChangeItem(Items[i]).ID = AnID then
+    begin
+      Result := TChangeItem(Items[i]);
+      Break;
+    end;
+end;
+
+procedure TChanges.Remove(ItemType: Integer; const AnID: string);
+{ remove a change item from the appropriate list of changes (depending on type)
+  this doesn't check groupnames, may leave a groupname without any associated items }
+var
+  ChangeList: TList;
+  i,j: Integer;
+  needRemove: boolean;
+begin
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  if ChangeList <> nil then with ChangeList do
+    for i := Count - 1 downto 0 do if TChangeItem(Items[i]).ID = AnID then
+    begin
+      if Assigned(FOnRemove) then FOnRemove(Self, TChangeItem(Items[i]))    {**RV**}
+        else TChangeItem(Items[i]).Free;                                    {**RV**}
+      //TChangeItem(Items[i]).Free;                                         {**RV**}
+      // set TChangeItem(Items[i]) = nil?
+      Delete(i);
+      Dec(FCount);
+    end;
+  if ItemType = CH_ORD then
+  begin
+    for i := OrderGrp.Count - 1 downto 0 do
+    begin
+      needRemove := True;
+      for j := 0 to FOrders.Count - 1 do
+        if (AnsiCompareText(TChangeItem(FOrders[j]).GroupName,OrderGrp[i]) = 0 ) then
+          needRemove := False;
+      if needRemove then
+        OrderGrp.Delete(i);
+    end;
+  end;
+  if ItemType = CH_ORD then UnlockOrder(AnID);
+  if ItemType = CH_DOC then UnlockDocument(StrToIntDef(AnID, 0));
+  if ItemType = CH_CON then UnlockDocument(StrToIntDef(AnID, 0));
+  if ItemType = CH_SUM then UnlockDocument(StrToIntDef(AnID, 0));
+  if ItemType = CH_SUR then UnlockDocument(StrToIntDef(AnID, 0));
+end;
+
+procedure TChanges.ReplaceID(ItemType: Integer; const OldID, NewID: string);
+var
+  ChangeList: TList;
+  i: Integer;
+begin
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;   {*REV*}
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  if ChangeList <> nil then with ChangeList do
+    for i := 0 to Count - 1 do if TChangeItem(Items[i]).ID = OldID then
+    begin
+      TChangeItem(Items[i]).FID := NewID;
+    end;
+end;
+
+procedure TChanges.ReplaceSignState(ItemType: Integer; const AnID: string; NewState: Integer);
+var
+  ChangeList: TList;
+  i: Integer;
+begin
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;   {*REV*}
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  if ChangeList <> nil then with ChangeList do
+    for i := 0 to Count - 1 do if TChangeItem(Items[i]).ID = AnID then
+    begin
+      TChangeItem(Items[i]).FSignState := NewState;
+    end;
+end;
+
+procedure TChanges.ReplaceText(ItemType: Integer; const AnID, NewText: string);
+var
+  ChangeList: TList;
+  i: Integer;
+begin
+  ChangeList := nil;
+  case ItemType of
+  CH_DOC: ChangeList := FDocuments;
+  CH_SUM: ChangeList := FDocuments;   {*REV*}
+  CH_CON: ChangeList := FDocuments;
+  CH_SUR: ChangeList := FDocuments;
+  CH_ORD: ChangeList := FOrders;
+  CH_PCE: ChangeList := FPCE;
+  end;
+  if ChangeList <> nil then with ChangeList do
+    for i := 0 to Count - 1 do if TChangeItem(Items[i]).ID = AnID then
+    begin
+      TChangeItem(Items[i]).FText := NewText;
+    end;
+end;
+
+function TChanges.RequireReview: Boolean;
+{ returns true if documents can be signed or if any orders exist in Changes }
+var
+  i: Integer;
+begin
+  Result := False;
+  AddUnsignedToChanges;
+  if FOrders.Count > 0 then Result := True;
+  if Result = False then with FDocuments do for i := 0 to Count - 1 do
+    with TChangeItem(Items[i]) do if FSignState <> CH_SIGN_NA then
+    begin
+      Result := True;
+      Break;
+    end;
+end;
+
+procedure TChanges.AddUnsignedToChanges;
+{ retrieves unsigned orders outside this session based on OR UNSIGNED ORDERS ON EXIT }
+var
+  i, CanSign(*, OrderUser*): Integer;
+  OrderUser: int64;
+  AnID: string;
+  HaveOrders, OtherOrders: TStringList;
+  AChangeItem: TChangeItem;
+begin
+  if Patient.DFN = '' then Exit;
+  // exit if there is already an 'Other Unsigned' group?
+  HaveOrders  := TStringList.Create;
+  OtherOrders := TStringList.Create;
+  try
+    StatusText('Looking for unsigned orders...');
+    for i := 0 to Pred(FOrders.Count) do
+    begin
+      AChangeItem := FOrders[i];
+      HaveOrders.Add(AChangeItem.ID);
+    end;
+    LoadUnsignedOrders(OtherOrders, HaveOrders);
+    if (Encounter.Provider = User.DUZ) and User.CanSignOrders
+      then CanSign := CH_SIGN_YES
+      else CanSign := CH_SIGN_NA;
+    for i := 0 to Pred(OtherOrders.Count) do
+    begin
+      AnID := Piece(OtherOrders[i],U,1);
+      if Piece(OtherOrders[i],U,2) = '' then OrderUser := 0
+      else OrderUser := StrtoInt64(Piece(OtherOrders[i],U,2));
+      Add(CH_ORD, AnID, TextForOrder(AnID), 'Other Unsigned', CanSign,'', OrderUser);
+    end;
+  finally
+    StatusText('');
+    HaveOrders.Free;
+    OtherOrders.Free;
+  end;
+end;
+
+{ TNotifications ---------------------------------------------------------------------------- }
+
+constructor TNotifications.Create;
+begin
+  FList := TList.Create;
+  FCurrentIndex := -1;
+  FActive := False;
+end;
+
+destructor TNotifications.Destroy;
+begin
+  Clear;
+  FList.Free;
+  inherited Destroy;
+end;
+
+procedure TNotifications.Add(const ADFN: string; AFollowUp: Integer; const ARecordID: string);  //*DFN*
+var
+  NotifyItem: TNotifyItem;
+begin
+  NotifyItem := TNotifyItem.Create;
+  NotifyItem.DFN := ADFN;
+  NotifyItem.FollowUp := AFollowUp;
+  NotifyItem.RecordID := ARecordId;
+  FList.Add(NotifyItem);
+  FActive := True;
+end;
+
+procedure TNotifications.Clear;
+var
+  i: Integer;
+begin
+  with FList do for i := 0 to Count - 1 do with TNotifyItem(Items[i]) do Free;
+  FList.Clear;
+  FActive := False;
+  FCurrentIndex := -1;
+  FNotifyItem := nil;
+end;
+
+function TNotifications.GetDFN: string;  //*DFN*
+begin
+  if FNotifyItem <> nil then Result := FNotifyItem.DFN else Result := '';  //*DFN*
+end;
+
+function TNotifications.GetFollowUp: Integer;
+begin
+  if FNotifyItem <> nil then Result := FNotifyItem.FollowUp else Result := 0;
+end;
+
+function TNotifications.GetAlertData: string;
+begin
+  if FNotifyItem <> nil
+    then Result := GetXQAData(Piece(FNotifyItem.RecordID, U, 2))
+    else Result := '';
+end;
+
+function TNotifications.GetRecordID: string;
+begin
+  if FNotifyItem <> nil then Result := FNotifyItem.RecordID else Result := '';
+end;
+
+function TNotifications.GetText: string;
+begin
+  if FNotifyItem <> nil
+    then Result := Piece(Piece(FNotifyItem.RecordID, U, 1 ), ':', 2)
+    else Result := '';
+end;
+
+procedure TNotifications.Next;
+begin
+  Inc(FCurrentIndex);
+  if FCurrentIndex < FList.Count then FNotifyItem := TNotifyItem(FList[FCurrentIndex]) else
+  begin
+    FActive := False;
+    FNotifyItem := nil;
+  end;
+end;
+
+procedure TNotifications.Prior;
+begin
+  Dec(FCurrentIndex);
+  if FCurrentIndex < 0
+    then FNotifyItem := nil
+    else FNotifyItem := TNotifyItem(FList[FCurrentIndex]);
+  if FList.Count > 0 then FActive := True;
+end;
+
+procedure TNotifications.Delete;
+begin
+  if FNotifyItem <> nil then DeleteAlert(Piece(FNotifyItem.RecordID, U, 2));
+end;
+
+procedure TNotifications.DeleteForCurrentUser;
+begin
+  if FNotifyItem <> nil then DeleteAlertForUser(Piece(FNotifyItem.RecordID, U, 2));
+end;
+
+{ TRemoteSite methods ---------------------------------------------------------------------------- }
+
+constructor TRemoteSite.Create(ASite: string);
+begin
+  FSiteID   := Piece(ASite, U, 1);
+  FSiteName := MixedCase(Piece(ASite, U, 2));
+  FLastDate := StrToFMDateTime(Piece(ASite, U, 3));
+  FSelected := False;
+  FQueryStatus := '';
+  FData := TStringList.Create;
+  FLabQueryStatus := '';
+  FLabData := TStringList.Create;
+  FCurrentLabQuery := '';
+  FCurrentReportQuery := '';
+end;
+
+destructor TRemoteSite.Destroy;
+begin
+  LabClear;
+  ReportClear;
+  FData.Free;
+  FLabData.Free;
+  inherited Destroy;
+end;
+
+procedure TRemoteSite.ReportClear;
+begin
+  FData.Clear;
+  FQueryStatus := '';
+end;
+
+procedure TRemoteSite.LabClear;
+begin
+  FLabData.Clear;
+  FLabQueryStatus := '';
+end;
+
+procedure TRemoteSite.SetSelected(Value: boolean);
+begin
+  FSelected := Value;
+end;
+
+constructor TRemoteReport.Create(AReport: string);
+begin
+  FReport   := AReport;
+  FHandle := '';
+end;
+
+destructor TRemoteReport.Destroy;
+begin
+  inherited Destroy;
+end;
+
+constructor TRemoteReportList.Create;
+begin
+  FReportList := TList.Create;
+  FCount := 0;
+end;
+
+destructor TRemoteReportList.Destroy;
+begin
+  //Clear;
+  FReportList.Free;
+  inherited Destroy;
+end;
+
+procedure TRemoteReportList.Add(AReportList, AHandle: string);
+var
+  ARemoteReport: TRemoteReport;
+begin
+  ARemoteReport := TRemoteReport.Create(AReportList);
+  ARemoteReport.Handle := AHandle;
+  ARemoteReport.Report := AReportList;
+  FReportList.Add(ARemoteReport);
+  FCount := FReportList.Count;
+end;
+
+procedure TRemoteReportList.Clear;
+var
+  i: Integer;
+begin
+  with FReportList do
+    for i := 0 to Count - 1 do
+      with TRemoteReport(Items[i]) do Free;
+  FReportList.Clear;
+  FCount := 0;
+end;
+
+constructor TRemoteSiteList.Create;
+begin
+  FSiteList := TList.Create;
+  FCount := 0;
+end;
+
+destructor TRemoteSiteList.Destroy;
+begin
+  Clear;
+  FSiteList.Free;
+  inherited Destroy;
+end;
+
+procedure TRemoteSiteList.Add(ASite: string);
+var
+  ARemoteSite: TRemoteSite;
+begin
+  ARemoteSite := TRemoteSite.Create(ASite);
+  FSiteList.Add(ARemoteSite);
+  FCount := FSiteList.Count;
+end;
+
+procedure TRemoteSiteList.Clear;
+var
+  i: Integer;
+begin
+  with FSiteList do for i := 0 to Count - 1 do with TRemoteSite(Items[i]) do Free;
+  FSiteList.Clear;
+  FCount := 0;
+end;
+
+procedure TRemoteSiteList.ChangePatient(const DFN: string);
+var
+  ALocations: TStringList;
+  i: integer;
+begin
+  Clear;
+  ALocations := TStringList.Create;
+  try
+    FRemoteDataExists := HasRemoteData(DFN, ALocations);
+    if FRemoteDataExists then
+      begin
+        SortByPiece(ALocations, '^', 2);
+        for i := 0 to ALocations.Count - 1 do
+          if piece(ALocations[i],'^',5) = '1' then
+            Add(ALocations.Strings[i]);
+        FNoDataReason := '';
+      end
+    else
+      FNoDataReason := Piece(ALocations[0], U, 2);
+    FCount := FSiteList.Count;
+  finally
+    ALocations.Free;
+  end;
+end;
+
+procedure TUser.SetCurrentPrinter(Value: string);
+begin
+  FCurrentPrinter := Value;
+end;
+
+procedure GotoWebPage(const URL: WideString);
+begin
+  if(URLMonHandle <> 0) then
+    HlinkNav(nil, PWideChar(URL));
+end;
+
+procedure LoadURLMon;
+const
+  UrlMonLib = 'URLMON.DLL';
+  HlinkName = 'HlinkNavigateString';
+
+begin
+  URLMonHandle := LoadLibrary(PChar(UrlMonLib));
+  if URLMonHandle <= HINSTANCE_ERROR then
+    URLMonHandle := 0
+  else
+  begin
+    HlinkNav := GetProcAddress(URLMonHandle, HlinkName);
+    if(not assigned(HlinkNav)) then
+    begin
+      FreeLibrary(URLMonHandle);
+      URLMonHandle := 0;
+    end;
+  end;
+end;
+
+procedure ReleaseURLMon;
+begin
+  if(URLMonHandle <> 0) then
+  begin
+    FreeLibrary(URLMonHandle);
+    URLMonHandle := 0;
+  end;
+end;
+
+procedure TChanges.ReplaceODGrpName(const AnODID, NewGrp: string);
+var
+  ChangeList: TList;
+  i: Integer;
+begin
+  ChangeList := FOrders;
+  if ChangeList <> nil then with ChangeList do
+    for i := 0 to Count - 1 do if TChangeItem(Items[i]).ID = AnODID then
+      TChangeItem(Items[i]).FGroupName := NewGrp;
+end;
+
+procedure TChanges.ChangeOrderGrp(const oldGrpName,newGrpName: string);
+var
+  i : integer;
+begin
+  for i := 0 to FOrderGrp.Count - 1 do
+  begin
+    if AnsiCompareText(FOrderGrp[i],oldGrpName)= 0 then
+      FOrderGrp[i] := newGrpName;
+  end;
+end;
+
+initialization
+  uVistaMsg := 0;
+  LoadURLMon;
+
+finalization
+  ReleaseURLMon;
+  ReleaseAppNotification;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDCSumm.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDCSumm.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDCSumm.pas	(revision 1676)
@@ -0,0 +1,100 @@
+unit uDCSumm;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, uConst;
+
+type
+  TEditDCSummRec = record
+    Title: Integer;
+    DocType: integer;
+    Addend: integer;
+    EditIEN: integer;
+    AdmitDateTime: TFMDateTime;
+    DischargeDateTime: TFMDateTime;
+    TitleName: string;
+    DictDateTime: TFMDateTime;
+    Dictator: Int64;
+    DictatorName: string;
+    Cosigner: Int64;
+    CosignerName: string;
+    Transcriptionist: int64;
+    TranscriptionistName: string;
+    Attending: int64;
+    AttendingName: string;
+    Urgency: string;
+    UrgencyName: string;
+    Location: Integer;
+    LocationName: string;
+    VisitStr: string;
+    NeedCPT: Boolean;
+    Status: integer;       
+    LastCosigner: Int64;
+    LastCosignerName: string;
+    IDParent: integer;
+    Lines: TStrings;
+  end;
+
+  TDCSummRec = TEditDCSummRec;
+
+  TAdmitRec = record
+    AdmitDateTime: TFMDateTime;
+    Location: integer;
+    LocationName: string;
+    VisitStr: string;
+  end;
+
+  TDCSummTitles = class
+    DfltTitle: Integer;
+    DfltTitleName: string;
+    ShortList: TStringList;
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+  TDCSummPrefs = class
+    DfltLoc: Integer;
+    DfltLocName: string;
+    SortAscending: Boolean;
+    AskCosigner: Boolean;
+    DfltCosigner: Int64;
+    DfltCosignerName: string;
+    MaxSumms: Integer;
+  end;
+
+function  MakeDCSummDisplayText(RawText: string): string;
+
+implementation
+
+function MakeDCSummDisplayText(RawText: string): string;
+var
+  x: string;
+begin
+  x := RawText;
+  if Copy(Piece(x, U, 9), 1, 4) = '    ' then SetPiece(x, U, 9, 'Dis: ');
+  if Piece(x, U, 1)[1] in ['A', 'N', 'E'] then
+    Result := Piece(x, U, 2)
+  else
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3))) + '  ' +
+              Piece(x, U, 2) + ', ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2) +
+              '  (' + Piece(x,U,7) + '), ' + Piece(Piece(x, U, 8), ';', 1) + ', ' +
+              Piece(Piece(x, U, 9), ';', 1);
+end;
+
+{ Discharge Summary Titles  -------------------------------------------------------------------- }
+
+constructor TDCSummTitles.Create;
+{ creates an object to store Discharge Summary titles so only obtained from server once }
+begin
+  inherited Create;
+  ShortList := TStringList.Create;
+end;
+
+destructor TDCSummTitles.Destroy;
+{ frees the lists that were used to store the Discharge Summary titles }
+begin
+  ShortList.Free;
+  inherited Destroy;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDlgComponents.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDlgComponents.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDlgComponents.pas	(revision 1676)
@@ -0,0 +1,788 @@
+unit uDlgComponents;
+
+interface
+
+uses
+  SysUtils, Windows, Messages, Classes, Controls, StdCtrls, ComCtrls, ExtCtrls, uReminders,
+  TypInfo, StrUtils, ORCtrls, ORDtTm, Forms, Graphics, Dialogs, RTLConsts, Buttons,
+  VA508AccessibilityManager;
+
+type
+  ICPRSDialogComponent = interface(IInterface)
+  ['{C4DBA10A-2A8D-4F71-AE20-5BA350D48551}']
+    function Component: TControl;
+    function GetBeforeText: string;
+    procedure SetBeforeText(Value: string);
+    function GetAfterText: string;
+    procedure SetAfterText(value: string);
+    function GetRequiredField: boolean;
+    procedure SetRequiredField(Value: boolean);
+    function AccessText: string;
+    function GetSRBreak: boolean;
+    procedure SetSRBreak(Value: boolean);
+    property BeforeText: string read GetBeforeText write SetBeforeText;
+    property AfterText: string read GetAfterText write SetAfterText;
+    property SRBreak: boolean read GetSRBreak write SetSRBreak;
+    property RequiredField: boolean read GetRequiredField write SetRequiredField;
+  end;
+
+  TCPRSDialogComponent = class(TInterfacedObject, ICPRSDialogComponent)
+  private
+    FRequiredField: boolean;
+    FComponent: TControl;
+    FBeforeText: string;
+    FAfterText: string;
+    FSRBreak: boolean;
+    FComponentName: string;
+    FFollowOnCaption: string;
+  public
+    constructor Create(AComponent: TControl; AComponentName: string;
+                       FollowOnCaption: string = '');
+    function Component: TControl;
+    function GetBeforeText: string;
+    procedure SetBeforeText(Value: string);
+    function GetAfterText: string;
+    procedure SetAfterText(value: string);
+    function GetRequiredField: boolean;
+    procedure SetRequiredField(Value: boolean);
+    function AccessText: string;
+    function GetSRBreak: boolean;
+    procedure SetSRBreak(Value: boolean);
+    property BeforeText: string read GetBeforeText write SetBeforeText;
+    property AfterText: string read GetAfterText write SetAfterText;
+    property SRBreak: boolean read GetSRBreak write SetSRBreak;
+    property RequiredField: boolean read GetRequiredField write SetRequiredField;
+  end;
+
+  TCPRSDialogStaticLabel = class(TVA508StaticText);
+
+  TCPRSDialogParentCheckBox = class(TORCheckBox)
+  private
+    FAccessText: string;
+  public
+    property AccessText: string read FAccessText write FAccessText;
+  end;
+
+  TCPRSDialogFieldEdit = class(TEdit, ICPRSDialogComponent)
+  private
+    FCPRSDialogData: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogData implements ICPRSDialogComponent;
+  end;
+
+  TCPRSDialogComboBox = class(TORComboBox, ICPRSDialogComponent)
+  private
+    FCPRSDialogData: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogData implements ICPRSDialogComponent;
+  end;
+
+  TCPRSDialogCheckBox = class(TORCheckBox, ICPRSDialogComponent)
+  private
+    FCPRSDialogData: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogData implements ICPRSDialogComponent;
+  end;
+
+  TCPRSDialogButton = class(TButton, ICPRSDialogComponent)
+  private
+    FCPRSDialogData: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogData implements ICPRSDialogComponent;
+  end;
+
+  TCPRSDialogYearEdit = class(TORYearEdit);
+
+  TCPRSDialogDateCombo = class(TORDateCombo, ICPRSDialogComponent)
+  private
+    FCPRSDialogInfo: ICPRSDialogComponent;
+  protected
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogInfo implements ICPRSDialogComponent;
+  end;
+
+  TCPRSDialogDateBox = class(TORDateBox, ICPRSDialogComponent)
+  private
+    FCPRSDialogInfo: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogInfo implements ICPRSDialogComponent;
+  end;
+
+  TCPRSNumberField = class(TEdit);
+
+  TCPRSDialogNumber = class(TPanel, ICPRSDialogComponent)
+  private
+    FCPRSDialogInfo: ICPRSDialogComponent;
+    FEdit: TCPRSNumberField;
+    FUpDown: TUpDown;
+  public
+    constructor CreatePanel(AOwner: TComponent);
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogInfo implements ICPRSDialogComponent;
+    property Edit: TCPRSNumberField read FEdit;
+    property UpDown: TUpDown read FUpDown;
+  end;
+
+  TCPRSTemplateFieldLabel = class(TCPRSDialogStaticLabel)
+  private
+    FExclude: boolean;
+  public
+    property Exclude: boolean read FExclude write FExclude;
+  end;
+
+  TCPRSDialogHyperlinkLabel = class(TCPRSTemplateFieldLabel, ICPRSDialogComponent)
+  private
+    FURL: string;
+    FCPRSDialogInfo: ICPRSDialogComponent;
+  protected
+    procedure Clicked(Sender: TObject);
+    procedure KeyPressed(Sender: TObject; var Key: Char);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure Init(Addr: string);
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogInfo implements ICPRSDialogComponent;
+  end;
+
+  TCPRSDialogRichEdit = class(TRichEdit, ICPRSDialogComponent)
+  private
+    FCPRSDialogData: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogData implements ICPRSDialogComponent;
+  end;
+
+{This is the panel associated with child items in template and reminders dialogs}
+  TDlgFieldPanel = class(TPanel)
+  private
+    FOnDestroy: TNotifyEvent;
+    FCanvas: TControlCanvas;    {used to draw focus rect}
+    FCurrentPos: TPoint;
+    FChildren: TInterfaceList;
+    function GetFocus: boolean;
+    procedure SetTheFocus(const Value: boolean);
+  protected                     {used to draw focus rect}
+    procedure Paint; override;  {used to draw focus rect}
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    function GetFirstComponent: ICPRSDialogComponent;
+    function GetNextComponent: ICPRSDialogComponent;
+    property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
+    property Focus:  boolean read GetFocus write SetTheFocus; {to draw focus rect}
+    property OnKeyPress;        {to click the checkbox when spacebar is pressed}
+  end;
+
+  TVitalComboBox = class;
+
+  TVitalEdit = class(TEdit, ICPRSDialogComponent)
+  private
+    FLinkedCombo: TVitalComboBox;
+    FCPRSDialogInfo: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogInfo implements ICPRSDialogComponent;
+    property LinkedCombo: TVitalComboBox read FLinkedCombo write FLinkedCombo;
+  end;
+
+  TVitalComboBox = class(TComboBox, ICPRSDialogComponent)
+  private
+    FLinkedEdit: TVitalEdit;
+    FCPRSDialogInfo: ICPRSDialogComponent;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure SelectByID(Value: string);
+    property LinkedEdit: TVitalEdit read FLinkedEdit write FLinkedEdit;
+    property CPRSDialogData: ICPRSDialogComponent read FCPRSDialogInfo implements ICPRSDialogComponent;
+  end;
+
+  TMentalHealthMemo = class(TMemo);
+
+procedure ScreenReaderSystem_CurrentCheckBox(CheckBox: TCPRSDialogParentCheckBox);
+procedure ScreenReaderSystem_CurrentLabel(lbl: TCPRSDialogStaticLabel);
+procedure ScreenReaderSystem_CurrentComponent(component: ICPRSDialogComponent);
+procedure ScreenReaderSystem_AddText(text: string);
+procedure ScreenReaderSystem_Continue;
+procedure ScreenReaderSystem_Stop;
+procedure ScreenReaderSystem_Clear;
+//function ScreenReaderSystem_GetPendingText: string;
+
+const
+// Screen Reader will stop reading in a TDlgFieldPanel at all classes except these:
+  ReminderScreenReaderReadThroughClasses: array[1..3] of TClass =
+    (TUpDown, TLabel, TVitalComboBox);
+
+implementation
+
+uses uCore, ORClasses, ORFn, VA508AccessibilityRouter, uTemplateFields;
+
+var
+  SRCheckBox: TCPRSDialogParentCheckBox = nil;
+  SRLabel: TCPRSDialogStaticLabel = nil;
+  SRComp: ICPRSDialogComponent = nil;
+  SRText: string = '';
+  SRContinuePending: boolean = FALSE;
+
+procedure UpdatePending;
+begin
+  if SRContinuePending then
+  begin
+    if assigned(SRComp) then
+    begin
+      SRComp.AfterText := SRText;
+      SRText := '';
+      if assigned(SRLabel) then
+      begin
+        SRLabel.TabStop := FALSE;
+        SRLabel := nil;
+      end;
+    end;
+    SRComp := nil;
+    SRContinuePending := FALSE;
+  end;
+end;
+
+procedure UpdateCheckBox;
+begin
+  if assigned(SRCheckBox) then
+  begin
+    SRCheckBox.AccessText := SRText;
+    SRText := '';
+    if assigned(SRLabel) then
+      SRLabel.TabStop := false;
+    SRLabel := nil;
+    SRCheckBox := nil;
+  end;
+end;
+
+procedure ScreenReaderSystem_CurrentCheckBox(CheckBox: TCPRSDialogParentCheckBox);
+begin
+  ScreenReaderSystem_Stop;
+  SRCheckBox := CheckBox;
+end;
+
+procedure ScreenReaderSystem_CurrentLabel(lbl: TCPRSDialogStaticLabel);
+begin
+  if assigned(SRLabel) then
+    ScreenReaderSystem_Stop;
+  SRLabel := lbl;
+end;
+
+procedure ScreenReaderSystem_CurrentComponent(component: ICPRSDialogComponent);
+begin
+  UpdateCheckBox;
+  UpdatePending;
+  if component.RequiredField then
+  begin
+    if SRText <> '' then
+      SRText := SRText + ' ';
+    SRText := SRText + 'required field';
+  end;
+  if (SRText <> '') and (component.Component is TCPRSDialogCheckBox) then
+    ScreenReaderSystem_Stop;
+  SRComp := component;
+  if SRText = '' then
+    SRComp.BeforeText := ' '
+  else
+    SRComp.BeforeText := SRText;
+  SRText := '';
+  if assigned(SRLabel) then
+  begin
+    SRLabel.TabStop := FALSE;
+    SRLabel := nil;
+  end;
+end;
+
+procedure ScreenReaderSystem_AddText(text: string);
+begin
+  if RightStr(Text,1) = '*' then
+    delete(text, length(text),1);
+  if Text <> '' then
+  begin
+    if SRText <> '' then
+      SRText := SRText + ' ';
+    SRText := SRText + text;
+  end;
+end;
+
+procedure ScreenReaderSystem_Continue;
+begin
+  if assigned(SRComp) then
+    SRContinuePending := TRUE
+  else
+    SRContinuePending := FALSE;
+end;
+
+procedure ScreenReaderSystem_Stop;
+begin
+  UpdateCheckBox;
+  UpdatePending;
+  ScreenReaderSystem_Clear;
+end;
+
+procedure ScreenReaderSystem_Clear;
+begin
+  SRCheckBox := nil;
+  if assigned(SRLabel) and (trim(SRLabel.Caption) = '') then
+    SRLabel.TabStop := false;
+  SRLabel := nil;
+  SRComp := nil;
+  SRText := '';
+  SRContinuePending := FALSE;
+end;
+
+function ScreenReaderSystem_GetPendingText: string;
+begin
+  Result := SRText;
+  SRText := '';
+end;
+
+function GetDialogControlText(Control: TControl): string;
+var
+  Len: Integer;
+begin
+  if Control is TButton then
+    Result := TButton(Control).Caption
+  else
+  begin
+    Len := Control.GetTextLen;
+    SetString(Result, PChar(nil), Len);
+    if Len <> 0 then Control.GetTextBuf(Pointer(Result), Len + 1);
+  end;
+end;
+
+constructor TDlgFieldPanel.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FChildren := TInterfaceList.Create;
+end;
+
+destructor TDlgFieldPanel.Destroy;
+begin
+  if(assigned(FOnDestroy)) then
+    FOnDestroy(Self);
+  FreeAndNil(FChildren);
+  inherited;
+end;
+
+function TDlgFieldPanel.GetFirstComponent: ICPRSDialogComponent;
+begin
+  FCurrentPos := Point(-1,-1);
+  Result := GetNextComponent;
+end;
+
+function TDlgFieldPanel.GetFocus: boolean;
+begin
+  result := Focused;
+end;
+
+
+function TDlgFieldPanel.GetNextComponent: ICPRSDialogComponent;
+var
+  Comp: ICPRSDialogComponent;
+  Control: TControl;
+  i: integer;
+  MinLeft, MinTop, MinXGap, MinYGap, gap: Integer;
+  ok: boolean;
+
+begin
+  MinLeft := FCurrentPos.x;
+  MinTop := FCurrentPos.Y;
+  MinXGap := MaxInt;
+  MinYGap := MaxInt;
+  Result := nil;
+  for I := 0 to FChildren.Count - 1 do
+  begin
+    Comp := ICPRSDialogComponent(FChildren[i]);
+    try
+      Control := Comp.Component;
+      if assigned(Control) then
+      begin
+        ok := (Control.Top > MinTop);
+        if (not ok) and (Control.Top = MinTop) and (Control.Left > MinLeft) then
+          ok := TRUE;
+        if ok then
+        begin
+          ok := FALSE;
+          gap := Control.Top - MinTop;
+          if gap < MinYGap then
+          begin
+            MinYGap := gap;
+            MinXGap := Control.Left;
+            ok := true;
+          end
+          else
+          if (MinYGap = gap) and (Control.Left < MinXGap) then
+          begin
+            MinXGap := Control.Left;
+            ok := TRUE;
+          end;
+          if ok then
+          begin
+            Result := Comp;
+          end;
+        end;
+      end;
+    finally
+      Comp := nil;
+    end;
+  end;
+  if assigned(Result) then
+  begin
+    FCurrentPos.x := Result.Component.Left;
+    FCurrentPos.Y := Result.Component.Top;
+  end;
+end;
+  
+procedure TDlgFieldPanel.Paint;
+var
+  DC: HDC;
+  R: TRect;
+
+begin
+  inherited;
+  if(Focused) then
+  begin
+    if(not assigned(FCanvas)) then
+      FCanvas := TControlCanvas.Create;
+    DC := GetWindowDC(Handle);
+    try
+      FCanvas.Handle := DC;
+      R := ClientRect;
+      InflateRect(R, -1, -1);
+      FCanvas.DrawFocusRect(R);
+    finally
+      ReleaseDC(Handle, DC);
+    end;
+  end;
+end;
+
+procedure TDlgFieldPanel.SetTheFocus(const Value: boolean);
+begin
+  if Value then
+    SetFocus;
+end;
+
+{ TVitalComboBox }
+
+constructor TVitalComboBox.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogInfo := TCPRSDialogComponent.Create(Self, 'Edit Combo');
+end;
+
+destructor TVitalComboBox.Destroy;
+begin
+  FCPRSDialogInfo := nil;
+  inherited;
+end;
+
+procedure TVitalComboBox.SelectByID(Value: string);
+var
+  i: integer;
+
+begin
+  for i := 0 to Items.Count-1 do
+    if(Value = Items[i]) then
+    begin
+      ItemIndex := i;
+      break;
+    end;
+end;
+
+{ TCPRSTemplateFieldEdit }
+
+constructor TCPRSDialogFieldEdit.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogData := TCPRSDialogComponent.Create(Self, 'Edit');
+end;
+
+destructor TCPRSDialogFieldEdit.Destroy;
+begin
+  FCPRSDialogData := nil;
+  inherited;
+end;
+
+{ TCPRSTemplateFieldComboBox }
+
+constructor TCPRSDialogComboBox.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogData := TCPRSDialogComponent.Create(Self, 'Edit Combo');
+end;
+
+destructor TCPRSDialogComboBox.Destroy;
+begin
+  FCPRSDialogData := nil;
+  inherited;
+end;
+
+{ TCPRSTemplateFieldCheckBox }
+
+constructor TCPRSDialogCheckBox.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogData := TCPRSDialogComponent.Create(Self, 'Check Box');
+end;
+
+destructor TCPRSDialogCheckBox.Destroy;
+begin
+  FCPRSDialogData := nil;
+  inherited;
+end;
+
+{ TCPRSDialogButton }
+
+constructor TCPRSDialogButton.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogData := TCPRSDialogComponent.Create(Self, 'Button');
+end;
+
+destructor TCPRSDialogButton.Destroy;
+begin
+  FCPRSDialogData := nil;
+  inherited;
+end;
+
+{ TCPRSTemplateFieldDateCombo }
+
+constructor TCPRSDialogDateCombo.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  ORYearEditClass :=  TCPRSDialogYearEdit;
+  FCPRSDialogInfo := TCPRSDialogComponent.Create(Self, 'Date Fields','Year');
+end;
+
+destructor TCPRSDialogDateCombo.Destroy;
+begin
+  FCPRSDialogInfo := nil;
+  inherited;
+end;
+
+{ TCPRSTemplateFieldDateBox }
+
+constructor TCPRSDialogDateBox.Create(AOwner: TComponent);
+//var
+//  i: integer;
+//  btn: TORDateButton;
+
+begin
+  inherited Create(AOwner);
+{  for i := 0 to ControlCount - 1 do
+  begin
+    if Controls[i] is TORDateButton then
+    begin
+      btn := TORDateButton(Controls[i]);
+      if ScreenReaderSystemActive then
+        btn.TabStop := TRUE;
+      break;
+    end;
+  end;}
+  FCPRSDialogInfo := TCPRSDialogComponent.Create(Self, 'Date Edit', 'Date');
+end;
+
+destructor TCPRSDialogDateBox.Destroy;
+begin
+  FCPRSDialogInfo := nil;
+  inherited;
+end;
+
+{ TCPRSTemplateFieldNumber }
+
+constructor TCPRSDialogNumber.CreatePanel(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FEdit := TCPRSNumberField.Create(Self);
+  FEdit.Parent := Self;
+  FEdit.BorderStyle := bsNone;
+  FEdit.Top := 0;
+  FEdit.Left := 0;
+  FEdit.AutoSelect := True;
+  FUpDown := TUpDown.Create(Self);
+  FUpDown.Parent := Self;
+  FUpDown.Associate := FEdit;
+  FUpDown.Thousands := FALSE;
+  FEdit.Tag := Integer(FUpDown);
+  FCPRSDialogInfo := TCPRSDialogComponent.Create(Self, 'Numeric Edit', 'Numeric');
+end;
+
+destructor TCPRSDialogNumber.Destroy;
+begin
+  FCPRSDialogInfo := nil;
+  inherited;
+end;
+
+{ TCPRSTemplateWebLabel }
+
+procedure TCPRSDialogHyperlinkLabel.Clicked(Sender: TObject);
+begin
+  GotoWebPage(FURL);
+end;
+
+type
+  TFontFriend = class(TFont);
+
+constructor TCPRSDialogHyperlinkLabel.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogInfo := TCPRSDialogComponent.Create(Self, 'Hyper Link', 'Hyper Link');
+  OnKeyPress := KeyPressed;
+end;
+
+destructor TCPRSDialogHyperlinkLabel.Destroy;
+begin
+  FCPRSDialogInfo := nil;
+  inherited;
+end;
+
+procedure TCPRSDialogHyperlinkLabel.Init(Addr: string);
+begin
+  FURL := Addr;
+  OnClick := Clicked;
+  StaticLabel.OnClick := Clicked;
+  Font.Assign(TORExposedControl(Parent).Font);
+  Font.Color := Get508CompliantColor(clBlue);
+  Font.Style := Font.Style + [fsUnderline];
+  TFontFriend(Font).Changed; //  AdjustBounds; // make sure we have the right width
+  AutoSize := FALSE;
+  Height := Height + 1; // Courier New doesn't support underline unless it's higher
+  Cursor := crHandPoint;
+end;
+
+procedure TCPRSDialogHyperlinkLabel.KeyPressed(Sender: TObject;
+  var Key: Char);
+begin
+  if ord(Key) = VK_SPACE then
+    Clicked(Self);  
+end;
+
+{ TCPRSTemplateFieldRichEdit }
+
+constructor TCPRSDialogRichEdit.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogData := TCPRSDialogComponent.Create(Self, 'Edit');
+end;
+
+destructor TCPRSDialogRichEdit.Destroy;
+begin
+  FCPRSDialogData := nil;
+  inherited;
+end;
+
+{ TCPRSDialogData }
+
+function TCPRSDialogComponent.Component: TControl;
+begin
+  Result := FComponent;
+end;
+
+constructor TCPRSDialogComponent.Create(AComponent: TControl; AComponentName: string;
+        FollowOnCaption: string = '');
+begin
+  inherited Create;
+  FComponent := AComponent;
+  FSRBreak := TRUE;
+  FComponentName := AComponentName;
+  FFollowOnCaption := FollowOnCaption;
+  FRequiredField := FALSE;
+end;
+
+function TCPRSDialogComponent.AccessText: string;
+begin
+  if FAfterText = '' then
+    Result := FBeforeText
+  else if FBeforeText = '' then
+  begin
+    if FAfterText <> '' then    
+      Result := FComponentName + ', ' + FAfterText + ','
+    else
+      Result := '';
+  end
+  else
+    Result := FBeforeText + ', ' + FComponentName + ', ' + FAfterText + ',';
+  if FFollowOnCaption <> '' then
+  begin
+    if Result <> '' then
+      Result := Result + ' ';
+    Result := Result + ' ' + FFollowOnCaption;
+  end;
+end;
+
+function TCPRSDialogComponent.GetAfterText: string;
+begin
+  Result := FAfterText;
+end;
+
+function TCPRSDialogComponent.GetBeforeText: string;
+begin
+  Result := FBeforeText;
+end;
+
+function TCPRSDialogComponent.GetRequiredField: boolean;
+begin
+  Result := FRequiredField;
+end;
+
+function TCPRSDialogComponent.GetSRBreak: boolean;
+begin
+  Result := FSRBreak;
+end;
+
+procedure TCPRSDialogComponent.SetAfterText(value: string);
+begin
+  FAfterText := Value;
+end;
+
+procedure TCPRSDialogComponent.SetBeforeText(Value: string);
+begin
+  FBeforeText := Value;
+end;
+
+procedure TCPRSDialogComponent.SetRequiredField(Value: boolean);
+begin
+  FRequiredField := Value;
+end;
+
+procedure TCPRSDialogComponent.SetSRBreak(Value: boolean);
+begin
+  FSRBreak := Value;
+end;
+
+{ TVitalEdit }
+
+constructor TVitalEdit.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FCPRSDialogInfo := TCPRSDialogComponent.Create(Self, 'Vital Edit','Vital');
+end;
+
+destructor TVitalEdit.Destroy;
+begin
+  FCPRSDialogInfo := nil;
+  inherited;
+end;
+
+initialization
+
+finalization
+  ScreenReaderSystem_Clear;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDocTree.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDocTree.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uDocTree.pas	(revision 1676)
@@ -0,0 +1,645 @@
+unit uDocTree;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, uConst, ORCtrls, ComCtrls, uTIU; 
+
+
+type
+  PDocTreeObject = ^TDocTreeObject;
+  TDocTreeObject = record
+    DocID          : string ;                 //Document IEN
+    DocDate        : string;                  //Formatted date of document
+    DocTitle       : string;                  //Document Title Text
+    NodeText       : string;                  //Title, Location, Author  (depends on tab)
+    ImageCount     : integer;                 //Number of images
+    VisitDate      : string;                  //ADM/VIS: date;FMDate
+    DocFMDate      : string;                  //FM date of document
+    DocHasChildren : string;                  //Has children  (+,>,<)
+    DocParent      : string;                  //Parent document, or context
+    Author         : string;                  //DUZ;Author name
+    PkgRef         : string;                  //IEN;Package    (consults only, for now)
+    Location       : string;                  //Location name
+    Status         : string;                  //Status
+    Subject        : string;                  //Subject
+    OrderID        : string;                  //Order file IEN (consults only, for now)
+    OrderByTitle   : boolean;                 //Within ID Parents, order children by title, not date
+  end;
+
+// Procedures for document treeviews/listviews
+procedure CreateListItemsForDocumentTree(Dest, Source: TStrings; Context: integer; GroupBy: string;
+          Ascending: boolean; TabIndex: integer);
+procedure BuildDocumentTree(DocList: TStrings; const Parent: string; Tree: TORTreeView; Node: TORTreeNode;
+          TIUContext: TTIUContext; TabIndex: integer);
+procedure SetTreeNodeImagesAndFormatting(Node: TORTreeNode; CurrentContext: TTIUContext; TabIndex: integer);
+procedure ResetDocTreeObjectStrings(AnObject: PDocTreeObject);
+procedure KillDocTreeObjects(TreeView: TORTreeView);
+procedure KillDocTreeNode(ANode: TTreeNode);
+function  ContextMatch(ANode: TORTreeNode; AParentID: string; AContext: TTIUContext): Boolean;
+function  TextFound(ANode: TORTreeNode; CurrentContext: TTIUContext): Boolean;
+procedure RemoveParentsWithNoChildren(Tree: TTreeView; Context: TTIUContext);
+procedure TraverseTree(ATree: TTreeView; AListView: TListView; ANode: TTreeNode; MyNodeID: string;
+          AContext: TTIUContext);
+procedure AddListViewItem(ANode: TTreeNode; AListView: TListView);
+function  MakeNoteTreeObject(x: string): PDocTreeObject;
+function  MakeDCSummTreeObject(x: string): PDocTreeObject;
+function  MakeConsultsNoteTreeObject(x: string): PDocTreeObject;
+
+implementation
+
+uses
+  rConsults, uDCSumm, uConsults;
+
+{==============================================================
+RPC [TIU DOCUMENTS BY CONTEXT] returns
+the following string '^' pieces:
+===============================================================
+      1 -  Document IEN
+      2 -  Document Title
+      3 -  FM date of document
+      4 -  Patient Name
+      5 -  DUZ;Author name
+      6 -  Location
+      7 -  Status
+      8 -  ADM/VIS: date;FMDate
+      9 -  Discharge Date;FMDate
+      10 - Package variable pointer
+      11 - Number of images
+      12 - Subject
+      13 - Has children
+      14 - Parent document
+      15 - Order children of ID Note by title rather than date
+===============================================================}
+
+procedure CreateListItemsForDocumentTree(Dest, Source: TStrings; Context: integer; GroupBy: string;
+          Ascending: Boolean; TabIndex: integer);
+const
+  NO_MATCHES = '^No Matching Documents Found^^^^^^^^^^^%^0';
+var
+  i: Integer;
+  x, x1, x2, x3, MyParent, MyTitle, MyLocation, MySubject: string;
+  AList, SrcList: TStringList;
+begin
+  AList := TStringList.Create;
+  SrcList := TStringList.Create;
+  try
+    FastAssign(Source, SrcList);
+    with SrcList do
+      begin
+        if (Count = 0) then
+          begin
+            Dest.Insert(0, IntToStr(Context) + NO_MATCHES);
+            Exit;
+          end;
+        for i := 0 to Count - 1 do
+          begin
+            x := Strings[i];
+            MyParent   := Piece(x, U, 14);
+            MyTitle    := Piece(x, U, 2);
+            if Length(Trim(MyTitle)) = 0 then
+              begin
+                MyTitle := '** No Title **';
+                SetPiece(x, U, 2, MyTitle);
+              end;
+            MyLocation := Piece(x, U, 6);
+            if Length(Trim(MyLocation)) = 0 then
+              begin
+                MyLocation := '** No Location **';
+                SetPiece(x, U, 6, MyLocation);
+              end;
+            MySubject  := Piece(x, U, 12);
+(*            case TIUContext.SearchField[1] of
+              'T': if ((TextFound(MyTitle)) then continue;
+              'S': if (not TextFound(MySubject)) then continue;
+              'B': if not ((TextFound(MyTitle)) or (TextFound(MySubject))) then continue;
+            end;*)
+            if GroupBy <> '' then case GroupBy[1] of
+              'D':  begin
+                      x1 := Piece(Piece(x, U, 8), ';', 1);                    // Visit date
+                      x2 := Piece(Piece(Piece(x, U, 8), ';', 2), '.', 1);     // Visit date (FM)   no time - v15.4
+                      if x2 = '' then
+                        begin
+                          x2 := 'No Visit';
+                          x1 := Piece(x1, ':', 1) + ':  No Visit';
+                        end;
+                      (*else
+                        x1 := Piece(x1, ':', 1) + ':  ' + FormatFMDateTimeStr('mmm dd,yy@hh:nn',x2)*) //removed v15.4
+                      if MyParent = IntToStr(Context) then
+                        SetPiece(x, U, 14, MyParent + x2 + Copy(x1, 1, 3));    // '2980324Adm'
+                      x3 := x2 + Copy(x1, 1, 3) + U + MixedCase(x1) + U + IntToStr(Context) + MixedCase(Copy(x1, 1, 3));
+                      if (Copy(MyTitle, 1, 8) <> 'Addendum') and (AList.IndexOf(x3) = -1) then
+                        AList.Add(x3);   // '2980324Adm^Mar 24,98'
+                    end;
+              'L':  begin
+                      if MyParent = IntToStr(Context) then                  // keep ID notes together, or
+                        SetPiece(x, U, 14, MyParent + MyLocation);
+(*                        if (Copy(MyTitle, 1, 8) <> 'Addendum') then       // split ID Notes by location?
+                        SetPiece(x, U, 14, IntToStr(Context) + MyLocation);*)
+                      x3 := MyLocation + U + MixedCase(MyLocation) + U + IntToStr(Context);
+                      if (Copy(MyTitle, 1, 8) <> 'Addendum') and (AList.IndexOf(x3) = -1) then
+                        AList.Add(x3);
+                    end;
+              'T':  begin
+                      if MyParent = IntToStr(Context) then                  // keep ID notes together, or
+                        SetPiece(x, U, 14, MyParent + MyTitle);
+(*                        if (Copy(MyTitle, 1, 8) <> 'Addendum') then       // split ID Notes by title?
+                        SetPiece(x, U, 14, IntToStr(Context) + MyTitle);*)
+                      x3 := MyTitle + U + MixedCase(MyTitle) + U + IntToStr(Context);
+                      if (Copy(MyTitle, 1, 8) <> 'Addendum') and (AList.IndexOf(x3) = -1) then
+                        AList.Add(x3);
+                    end;
+              'A':  begin
+                      x1 := Piece(Piece(x, U, 5), ';', 3);
+                      if x1 = '' then x1 := '** No Author **';
+                      if MyParent = IntToStr(Context) then                  // keep ID notes together, or
+                        SetPiece(x, U, 14, MyParent + x1);
+                      //if (Copy(MyTitle, 1, 8) <> 'Addendum') then         // split ID Notes by author?
+                      //  SetPiece(x, U, 14, IntToStr(Context) + x1);
+                      x3 := x1 + U + MixedCase(x1) + U + IntToStr(Context);
+                      if (Copy(MyTitle, 1, 8) <> 'Addendum') and(AList.IndexOf(x3) = -1) then
+                        AList.Add(x3);
+                    end;
+(*              'A':  begin                                                 // Makes note appear both places in tree,
+                      x1 := Piece(Piece(x, U, 5), ';', 3);                  // but also appears TWICE in lstNotes.
+                      if x1 = '' then x1 := '** No Author **';              // IS THIS REALLY A PROBLEM??
+                      if MyParent = IntToStr(Context) then                  // Impact on EditingIndex?
+                        SetPiece(x, U, 14, MyParent + x1);                  // Careful when deleting note being edited!!!
+                      Dest.Add(x);                                          // Need to find and delete ALL occurrences!
+                      SetPiece(x, U, 14, IntToStr(Context) + x1);
+                      x3 := x1 + U + MixedCase(x1) + U + IntToStr(Context);
+                      if (AList.IndexOf(x3) = -1) then AList.Add(x3);
+                    end;*)
+            end;
+            Dest.Add(x);
+          end; {for}
+        SortByPiece(TStringList(Dest), U, 3);
+        if not Ascending then InvertStringList(TStringList(Dest));
+        if GroupBy <> '' then if GroupBy[1] ='D' then
+          begin
+            AList.Add('Adm^Inpatient Notes' + U + IntToStr(Context));
+            AList.Add('Vis^Outpatient Notes' + U + IntToStr(Context));
+          end;
+        Dest.Insert(0, IntToStr(Context) + '^' + NC_TV_TEXT[TabIndex, Context] + '^^^^^^^^^^^%^0');
+        Alist.Sort;
+        InvertStringList(AList);
+        if GroupBy <> '' then if GroupBy[1] ='D' then
+          if (not Ascending) then InvertStringList(AList);
+        for i := 0 to AList.Count-1 do
+          Dest.Insert(0, IntToStr(Context) + Piece(AList[i], U, 1) + '^' + Piece(AList[i], U, 2) + '^^^^^^^^^^^%^' + Piece(AList[i], U, 3));
+      end;
+  finally
+    AList.Free;
+    SrcList.Free;
+  end;
+end;
+
+procedure BuildDocumentTree(DocList: TStrings; const Parent: string; Tree: TORTreeView; Node: TORTreeNode;
+          TIUContext: TTIUContext; TabIndex: integer);
+var
+  MyID, MyParent, Name: string;
+  i: Integer;
+  ChildNode, tmpNode: TORTreeNode;
+  DocHasChildren: Boolean;
+  AnObject: PDocTreeObject;
+begin
+  with DocList do for i := 0 to Count - 1 do
+    begin
+      tmpNode := nil;
+      MyParent := Piece(Strings[i], U, 14);
+      if (MyParent = Parent) then
+        begin
+          MyID := Piece(Strings[i], U, 1);
+          if Piece(Strings[i], U, 13) <> '%' then
+            case TabIndex of
+                CT_NOTES:    Name := MakeNoteDisplayText(Strings[i]);
+                CT_CONSULTS: Name := MakeConsultNoteDisplayText(Strings[i]);
+                CT_DCSUMM:   Name := MakeDCSummDisplayText(Strings[i]);
+            end
+          else
+            Name := Piece(Strings[i], U, 2);
+          DocHasChildren := (Piece(Strings[i], U, 13) <> '');                      
+          if Node <> nil then if Node.HasChildren then
+            tmpNode := Tree.FindPieceNode(MyID, 1, U, Node);
+          if (tmpNode <> nil) and tmpNode.HasAsParent(Node) then
+            Continue
+          else
+            begin
+              case TabIndex of
+                CT_NOTES:    AnObject := MakeNoteTreeObject(Strings[i]);
+                CT_CONSULTS: AnObject := MakeConsultsNoteTreeObject(Strings[i]);
+                CT_DCSUMM:   AnObject := MakeDCSummTreeObject(Strings[i]);
+              else
+                AnObject := nil;
+              end;
+              ChildNode := TORTreeNode(Tree.Items.AddChildObject(TORTreeNode(Node), Name, AnObject));
+              ChildNode.StringData := Strings[i];
+              SetTreeNodeImagesAndFormatting(ChildNode, TIUContext, TabIndex);
+              if DocHasChildren then BuildDocumentTree(DocList, MyID, Tree, ChildNode, TIUContext, TabIndex);
+            end;
+        end;
+    end;
+end;
+
+procedure SetTreeNodeImagesAndFormatting(Node: TORTreeNode; CurrentContext: TTIUContext; TabIndex: integer);
+var
+  tmpAuthor: int64;
+  i: integer;
+
+  procedure MakeBold(ANode: TORTreeNode);
+  var
+    LookingForAddenda: boolean;
+  begin
+    if not assigned(Node) then exit;
+    LookingForAddenda := (Pos('ADDENDUM', UpperCase(CurrentContext.Keyword)) > 0);
+    with ANode do
+      begin
+        Bold := True;
+        if assigned(Parent) then
+          begin
+            if (ImageIndex <> IMG_ADDENDUM) or ((ImageIndex = IMG_ADDENDUM) and LookingForAddenda) then
+              Parent.Expand(False);
+            if assigned(Parent.Parent) then
+              begin
+                if (Parent.ImageIndex <> IMG_ADDENDUM) or ((Parent.ImageIndex = IMG_ADDENDUM) and LookingForAddenda) then
+                  Parent.Parent.Expand(False);
+                if assigned(Parent.Parent.Parent) then
+                  if (Parent.Parent.ImageIndex <> IMG_ADDENDUM) or ((Parent.Parent.ImageIndex = IMG_ADDENDUM) and LookingForAddenda) then
+                    Parent.Parent.Parent.Expand(False);
+              end;
+          end;
+      end;
+  end;
+
+begin
+  with Node, PDocTreeObject(Node.Data)^ do
+    begin
+      i := Pos('*', DocTitle);
+      if i > 0 then i := i + 1 else i := 0;
+      if (Copy(DocTitle, i + 1, 8) = 'Addendum') then
+        ImageIndex := IMG_ADDENDUM
+      else if (DocHasChildren = '') then
+        ImageIndex := IMG_SINGLE
+      else if Pos('+>', DocHasChildren) > 0 then
+         ImageIndex := IMG_ID_CHILD_ADD
+      else if (DocHasChildren = '>') then
+        ImageIndex := IMG_ID_CHILD
+      else if Pos('+<', DocHasChildren) > 0 then
+        ImageIndex := IMG_IDPAR_ADDENDA_SHUT
+      else if DocParent = '0' then
+        begin
+          ImageIndex    := IMG_TOP_LEVEL;
+          SelectedIndex := IMG_TOP_LEVEL;
+          StateIndex := -1;
+          with CurrentContext, Node do
+            begin
+              if  Node.HasChildren and (GroupBy <> '') then case GroupBy[1] of
+                'T': Text := NC_TV_TEXT[TabIndex, StrToInt(DocID)] + ' by title';
+                'D': Text := NC_TV_TEXT[TabIndex, StrToInt(DocID)] + ' by visit date';
+                'L': Text := NC_TV_TEXT[TabIndex, StrToInt(DocID)] + ' by location';
+                'A': Text := NC_TV_TEXT[TabIndex, StrToInt(DocID)] + ' by author';
+              end;
+              if TabIndex <> CT_CONSULTS then
+                begin
+                  if (DocID = '2') or (DocID ='3') then
+                    begin
+                      if StrToIntDef(Status, 0) in [NC_UNSIGNED, NC_UNCOSIGNED] then
+                        begin
+                          if Author = 0 then tmpAuthor := User.DUZ else tmpAuthor := Author;
+                          Text := Text + ' for ' + ExternalName(tmpAuthor, 200);
+                        end
+                      else
+                        Text := Text + ' for ' + User.Name;
+                    end;
+                  if DocID = '4' then
+                    Text := Text + ' for ' + ExternalName(Author, 200);
+                end;
+            end;
+        end
+      else
+        case DocHasChildren[1] of
+          '<': ImageIndex := IMG_IDNOTE_SHUT;
+          '+': ImageIndex := IMG_PARENT;
+          '%': begin
+                 StateIndex := -1;
+                 ImageIndex    := IMG_GROUP_SHUT;
+                 SelectedIndex := IMG_GROUP_OPEN;
+               end;
+        end;
+      SelectedIndex := ImageIndex;
+      if (ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+        StateIndex := IMG_NONE
+      else
+        begin
+          if ImageCount > 0 then
+            StateIndex := IMG_1_IMAGE
+          else if ImageCount = 0 then
+            StateIndex := IMG_NO_IMAGES
+          else if ImageCount = -1 then
+            StateIndex := IMG_IMAGES_HIDDEN;
+        end;
+      if (Parent <> nil) and
+         (Parent.ImageIndex in [IMG_PARENT, IMG_IDNOTE_SHUT, IMG_IDNOTE_OPEN, IMG_IDPAR_ADDENDA_SHUT, IMG_IDPAR_ADDENDA_OPEN]) and
+         (StateIndex in [IMG_1_IMAGE, IMG_IMAGES_HIDDEN]) then
+         begin
+           Parent.StateIndex := IMG_CHILD_HAS_IMAGES;
+         end;
+(*        case ImageCount of
+          0: StateIndex := IMG_NO_IMAGES;
+          1: StateIndex := IMG_1_IMAGE;
+          2: StateIndex := IMG_2_IMAGES;
+        else
+          StateIndex := IMG_MANY_IMAGES;
+        end;*)
+      if Node.Parent <> nil then
+        if not CurrentContext.Filtered then
+          //don't bother to BOLD every entry
+        else 
+          begin
+            if (*ContextMatch(Node) then
+              if (CurrentContext.KeyWord = '') or *)TextFound(Node, CurrentContext) then MakeBold(Node);
+          end;
+    end;
+end;
+
+procedure TraverseTree(ATree: TTreeView; AListView: TListView; ANode: TTreeNode; MyNodeID: string; AContext: TTIUContext);
+var
+  IncludeIt: Boolean;
+  x: string;
+begin
+  if ANode = nil then Exit;
+  IncludeIt := False;
+  if (ContextMatch(TORTreeNode(ANode), MyNodeID, AContext) and TextFound(TORTreeNode(ANode), AContext)) then
+    with PDocTreeObject(ANode.Data)^ do
+      begin
+        if (AContext.GroupBy <> '') and
+           (ATree.Selected.ImageIndex in [IMG_GROUP_OPEN, IMG_GROUP_SHUT]) then
+            begin
+              case AContext.GroupBy[1] of
+                'T': if (UpperCase(DocTitle) = UpperCase(PDocTreeObject(ATree.Selected.Data)^.DocTitle)) or
+                        (UpperCase(DocTitle) = UpperCase('Addendum to ' + PDocTreeObject(ATree.Selected.Data)^.DocTitle)) or
+                         (AContext.Filtered and TextFound(TORTreeNode(ANode), AContext)) then
+                       IncludeIt := True;
+                'D': begin
+                       x := PDocTreeObject(ATree.Selected.Data)^.DocID;
+                       if (Copy(x, 2, 3) = 'Vis') or (Copy(x, 2, 3) = 'Adm') then
+                         begin
+                           if Copy(VisitDate, 1, 3) = Copy(x, 2, 3) then
+                             IncludeIt := True;
+                         end
+                       else if Piece(Piece(VisitDate, ';', 2), '.', 1) = Copy(x, 2, Length(x) - 4) then
+                         IncludeIt := True;
+                     end;
+                'L': if MyNodeID + Location = PDocTreeObject(ATree.Selected.Data)^.DocID then
+                       IncludeIt := True;
+                'A': if MyNodeID + Piece(Author, ';', 2) = PDocTreeObject(ATree.Selected.Data)^.DocID then
+                       IncludeIt := True;
+              end;
+            end
+        else
+          IncludeIt := True;
+      end;
+  if IncludeIt then AddListViewItem(ANode, AListView);
+  if ANode.HasChildren then TraverseTree(ATree, AListView, ANode.GetFirstChild, MyNodeID, AContext);
+  TraverseTree(ATree, AListView, ANode.GetNextSibling, MyNodeID, AContext);
+end;
+
+function ContextMatch(ANode: TORTreeNode; AParentID: string; AContext: TTIUContext): Boolean;
+var
+  Status: string;
+  Author: int64;
+begin
+  Result := True;
+  if not Assigned(ANode.Data) then Exit;
+  Status := PDocTreeObject(ANode.Data)^.Status;
+
+  if (AContext.Status <> AParentID[1]) or (AContext.Author = 0) then
+    Author := User.DUZ
+  else
+    Author := AContext.Author;
+
+  if Length(Trim(Status)) = 0 then exit;
+  (*if PDocTreeObject(ANode.Data)^.DocHasChildren = '%' then Result := False else Result := True;
+  Result := False;*)
+  case AParentID[1] of
+    '1':  Result := (Status = 'completed') or
+                    (Status = 'deleted')   or
+                    (Status = 'amended')   or
+                    (Status = 'uncosigned') or
+                    (Status = 'retracted');
+    '2':  Result := ((Status = 'unsigned')   or
+                    (Status = 'unreleased') or
+                    (Status = 'deleted')   or
+                    (Status = 'retracted') or
+                    (Status = 'unverified')) and
+                    (Piece(PDocTreeObject(ANode.Data)^.Author, ';', 1) = IntToStr(Author));
+    '3':  Result := ((Status = 'uncosigned') or
+                    (Status = 'unsigned')   or
+                    (Status = 'unreleased') or
+                    (Status = 'deleted')   or
+                    (Status = 'retracted') or
+                    (Status = 'unverified')) ;//and
+ { TODO -oRich V. -cSort/Search : Uncosigned notes - need to check cosigner, not author, but don't have it }
+                    //(Piece(PDocTreeObject(ANode.Data)^.Author, ';', 1) = IntToStr(Author));
+    '4':  Result := (Piece(PDocTreeObject(ANode.Data)^.Author, ';', 1) = IntToStr(Author));
+    '5':  if PDocTreeObject(ANode.Data)^.DocHasChildren = '%' then Result := False
+          else Result := (StrToFloat(PDocTreeObject(ANode.Data)^.DocFMDate) >= AContext.FMBeginDate) and
+                         (Trunc(StrToFloat(PDocTreeObject(ANode.Data)^.DocFMDate)) <= AContext.FMEndDate); 
+    'N':  Result := True;     // NEW NOTE
+    'E':  Result := True;     // EDITING NOTE
+    'A':  Result := True;     // NEW ADDENDUM or processing alert
+  end;
+end;
+
+function TextFound(ANode: TORTreeNode; CurrentContext: TTIUContext): Boolean;
+var
+  MySearch: string;
+begin
+  Result := False;
+  if not Assigned(ANode.Data) then Exit;
+  if CurrentContext.SearchField <> '' then
+    case CurrentContext.SearchField[1] of
+      'T': MySearch := PDocTreeObject(ANode.Data)^.DocTitle;
+      'S': MySearch := PDocTreeObject(ANode.Data)^.Subject;
+      'B': MySearch := PDocTreeObject(ANode.Data)^.DocTitle + ' ' + PDocTreeObject(ANode.Data)^.Subject;
+    end;
+  Result := (not CurrentContext.Filtered) or
+            ((CurrentContext.Filtered) and (Pos(UpperCase(CurrentContext.KeyWord), UpperCase(MySearch)) > 0));
+end;
+
+procedure ResetDocTreeObjectStrings(AnObject: PDocTreeObject);
+begin
+  with AnObject^ do
+    begin
+      DocID          := '';
+      DocDate        := '';
+      DocTitle       := '';
+      NodeText       := '';
+      VisitDate      := '';
+      DocFMDate      := '';
+      DocHasChildren := '';
+      DocParent      := '';
+      Author         := '';
+      PkgRef         := '';
+      Location       := '';
+      Status         := '';
+      Subject        := '';
+      OrderID        := '';
+    end;
+end;
+
+procedure KillDocTreeObjects(TreeView: TORTreeView);
+var
+  i: integer;
+begin
+  with TreeView do
+    for i := 0 to Items.Count-1 do
+    begin
+      if(Assigned(Items[i].Data)) then
+        begin
+          ResetDocTreeObjectStrings(PDocTreeObject(Items[i].Data));
+          Dispose(PDocTreeObject(Items[i].Data));
+          Items[i].Data := nil;
+        end;
+    end;
+end;
+
+procedure KillDocTreeNode(ANode: TTreeNode);
+begin
+  if(Assigned(ANode.Data)) then
+    begin
+      ResetDocTreeObjectStrings(PDocTreeObject(ANode.Data));
+      Dispose(PDocTreeObject(ANode.Data));
+      ANode.Data := nil;
+    end;
+  ANode.Owner.Delete(ANode);
+end;
+
+procedure RemoveParentsWithNoChildren(Tree: TTreeView; Context: TTIUContext);
+var
+  n: integer;
+begin
+  with Tree do
+    for n := Items.Count - 1 downto 0 do
+      if ((Items[n].ImageIndex = IMG_GROUP_SHUT)) then
+        begin
+          if (not Items[n].HasChildren) then
+             KillDocTreeNode(Items[n])
+          else if Context.Filtered then   // if any hits, would be IMG_GROUP_OPEN
+             KillDocTreeNode(Items[n]);
+        end;
+end;
+
+procedure AddListViewItem(ANode: TTreeNode; AListView: TListView);
+var
+  ListItem: TListItem;
+begin
+  if not Assigned(ANode.Data) then Exit;
+  with Anode, PDocTreeObject(ANode.Data)^, AListView do
+    begin
+(*      if (FCurrentContext.Status = '1') and
+           (Copy(DocTitle, 1 , 8) = 'Addendum') then Exit;*)
+      if ANode.ImageIndex in [IMG_TOP_LEVEL, IMG_GROUP_OPEN, IMG_GROUP_SHUT] then Exit;
+      ListItem := Items.Add;
+      ListItem.Caption := DocDate;                     // date
+      ListItem.StateIndex := ANode.StateIndex;
+      ListItem.ImageIndex := ANode.ImageIndex;
+      with ListItem.SubItems do
+        begin
+          Add(DocTitle);                               //  title
+          Add(Subject);                                //  subject
+          Add(MixedCase(Piece(Author, ';', 2)));       //  author
+          Add(Location);                               //  location
+          Add(DocFMDate);                              //  reference date (FM)
+          Add(DocID);                                  //  TIUDA
+        end;
+    end;
+end;
+
+function MakeNoteTreeObject(x: string): PDocTreeObject;
+var
+  AnObject: PDocTreeObject;
+begin
+  New(AnObject);
+  with AnObject^ do
+    begin
+      DocID           := Piece(x, U, 1);
+      DocDate         := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3)));
+      DocTitle        := Piece(x, U, 2);
+      Location        := Piece(x, U, 6);
+      NodeText        := MakeNoteDisplayText(x);
+      ImageCount      := StrToIntDef(Piece(x, U, 11), 0);
+      VisitDate       := Piece(x, U, 8);
+      DocFMDate       := Piece(x, U, 3);
+      DocHasChildren  := Piece(x, U, 13);
+      if Copy(DocHasChildren, 1, 1) = '*' then
+        DocHasChildren := Copy(DocHasChildren, 2, 5);
+      DocParent       := Piece(x, U, 14);
+      Author          := Piece(Piece(x, U, 5), ';', 1) + ';' + Piece(Piece(x, U, 5), ';', 3);
+      PkgRef          := Piece(x, U, 10);
+      Status          := Piece(x, U, 7);
+      Subject         := Piece(x, U, 12);
+      OrderByTitle    := Piece(x, U, 15) = '1';
+    end;
+  Result := AnObject;
+end;
+
+function MakeDCSummTreeObject(x: string): PDocTreeObject;
+var
+  AnObject: PDocTreeObject;
+begin
+  New(AnObject);
+  if Copy(Piece(x, U, 9), 1, 4) = '    ' then SetPiece(x, U, 9, 'Dis: ');
+  with AnObject^ do
+    begin
+      DocID            := Piece(x, U, 1);
+      DocDate          := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3)));
+      DocTitle         := Piece(x, U, 2);
+      Location         := Piece(x, U, 6);
+      NodeText         := MakeDCSummDisplayText(x);
+      DocFMDate        := Piece(x, U, 3);
+      ImageCount       := StrToIntDef(Piece(x, U, 11), 0);
+      DocHasChildren   := Piece(x, U, 13);
+      if Copy(DocHasChildren, 1, 1) = '*' then
+        DocHasChildren := Copy(DocHasChildren, 2, 5);
+      DocParent        := Piece(x, U, 14);
+      Author           := Piece(Piece(x, U, 5), ';', 1) + ';' + Piece(Piece(x, U, 5), ';', 3);
+      PkgRef           := Piece(x, U, 10);
+      Status           := Piece(x, U, 7);
+      Subject          := Piece(x, U, 12);
+      VisitDate        := Piece(x, U, 8);
+      OrderByTitle    := Piece(x, U, 15) = '1';
+    end;
+  Result := AnObject;
+end;
+
+function MakeConsultsNoteTreeObject(x: string): PDocTreeObject;
+var
+  AnObject: PDocTreeObject;
+begin
+  New(AnObject);
+  with AnObject^ do
+    begin
+      DocID           := Piece(x, U, 1);
+      DocDate         := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3)));
+      DocTitle        := Piece(x, U, 2);
+      Location        := Piece(x, U, 6);
+      NodeText        := MakeConsultNoteDisplayText(x);
+      DocFMDate       := Piece(x, U, 3);
+      Status          := Piece(x, U, 7);
+      Author          := Piece(Piece(x, U, 5), ';', 1) + ';' + Piece(Piece(x, U, 5), ';', 3);
+      PkgRef          := Piece(x, U, 10);
+      if Piece(PkgRef, ';', 2) = PKG_CONSULTS then
+        OrderID       := GetConsultOrderIEN(StrToIntDef(Piece(PkgRef, ';', 1), 0));
+      ImageCount      := StrToIntDef(Piece(x, U, 11), 0);
+      VisitDate       := Piece(x, U, 8);
+      DocHasChildren  := Piece(x, U, 13);
+      if Copy(DocHasChildren, 1, 1) = '*' then
+        DocHasChildren := Copy(DocHasChildren, 2, 5);
+      DocParent       := Piece(x, U, 14);
+      OrderByTitle    := Piece(x, U, 15) = '1';
+    end;
+  Result := AnObject;
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uEventHooks.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uEventHooks.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uEventHooks.pas	(revision 1676)
@@ -0,0 +1,616 @@
+unit uEventHooks;
+
+interface
+
+uses SysUtils, Classes, Windows, Dialogs, Forms, ComObj, ActiveX,
+     CPRSChart_TLB, ORNet, ORFn, uCore;
+
+type
+  TCPRSExtensionData = record
+    Data1: string;
+    Data2: string;
+  end;
+
+procedure RegisterCPRSTypeLibrary;
+procedure ProcessPatientChangeEventHook;
+function ProcessOrderAcceptEventHook(OrderID: string; DisplayGroup: integer): boolean;
+procedure GetCOMObjectText(COMObject: integer; const Param2, Param3: string;
+                           var Data1, Data2: string);
+function COMObjectOK(COMObject: integer): boolean;
+function COMObjectActive: boolean;
+
+implementation
+
+uses
+  Trpcb, rEventHooks, VAUtils;
+
+type
+  ICPRSBrokerInitializer = interface(ICPRSBroker)
+    procedure Initialize;
+  end;
+
+  TCPRSBroker = class(TAutoIntfObject, ICPRSBrokerInitializer)
+  private
+    FContext: string;
+    FRPCVersion: string;
+    FClearParameters: boolean;
+    FClearResults: boolean;
+    FResults: string;
+    FParam: TParams;
+    FEmptyParams: TParams;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Initialize;
+    function  SetContext(const Context: WideString): WordBool; safecall;
+    function  Server: WideString; safecall;
+    function  Port: Integer; safecall;
+    function  DebugMode: WordBool; safecall;
+    function  Get_RPCVersion: WideString; safecall;
+    procedure Set_RPCVersion(const Value: WideString); safecall;
+    function  Get_ClearParameters: WordBool; safecall;
+    procedure Set_ClearParameters(Value: WordBool); safecall;
+    function  Get_ClearResults: WordBool; safecall;
+    procedure Set_ClearResults(Value: WordBool); safecall;
+    procedure CallRPC(const RPCName: WideString); safecall;
+    function  Get_Results: WideString; safecall;
+    procedure Set_Results(const Value: WideString); safecall;
+    function  Get_Param(Index: Integer): WideString; safecall;
+    procedure Set_Param(Index: Integer; const Value: WideString); safecall;
+    function  Get_ParamType(Index: Integer): BrokerParamType; safecall;
+    procedure Set_ParamType(Index: Integer; Value: BrokerParamType); safecall;
+    function  Get_ParamList(Index: Integer; const Node: WideString): WideString; safecall;
+    procedure Set_ParamList(Index: Integer; const Node: WideString; const Value: WideString); safecall;
+    function  ParamCount: Integer; safecall;
+    function  ParamListCount(Index: Integer): Integer; safecall;
+    property RPCVersion: WideString read Get_RPCVersion write Set_RPCVersion;
+    property ClearParameters: WordBool read Get_ClearParameters write Set_ClearParameters;
+    property ClearResults: WordBool read Get_ClearResults write Set_ClearResults;
+    property Results: WideString read Get_Results write Set_Results;
+    property Param[Index: Integer]: WideString read Get_Param write Set_Param;
+    property ParamType[Index: Integer]: BrokerParamType read Get_ParamType write Set_ParamType;
+    property ParamList[Index: Integer; const Node: WideString]: WideString read Get_ParamList write Set_ParamList;
+  end;
+
+  TCPRSState = class(TAutoIntfObject, ICPRSState)
+  private
+    FHandle: string;
+  public
+    constructor Create;
+    function  Handle: WideString; safecall;
+    function  UserDUZ: WideString; safecall;
+    function  UserName: WideString; safecall;
+    function  PatientDFN: WideString; safecall;
+    function  PatientName: WideString; safecall;
+    function  PatientDOB: WideString; safecall;
+    function  PatientSSN: WideString; safecall;
+    function  LocationIEN: Integer; safecall;
+    function  LocationName: WideString; safecall;
+  end;
+
+  TCPRSEventHookManager = class(TObject)
+  private
+    FCPRSBroker: ICPRSBrokerInitializer;
+    FCPRSState: ICPRSState;
+    FErrors: TStringList;
+    FLock: TRTLCriticalSection;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function ProcessComObject(const GUIDString: string;
+                              const AParam2, AParam3: string;
+                               var Data1, Data2: WideString): boolean;
+    procedure EnterCriticalSection;
+    procedure LeaveCriticalSection;
+  end;
+
+  
+var
+  uCPRSEventHookManager: TCPRSEventHookManager = nil;
+  uCOMObjectActive: boolean = False;
+
+procedure EnsureEventHookObjects;
+begin
+  if not assigned(uCPRSEventHookManager) then
+    uCPRSEventHookManager := TCPRSEventHookManager.Create;
+end;
+
+{ TCPRSBroker }
+
+constructor TCPRSBroker.Create;
+var
+  CPRSLib: ITypeLib;
+
+begin
+  FParam := TParams.Create(nil);
+  FEmptyParams := TParams.Create(nil);
+  OleCheck(LoadRegTypeLib(LIBID_CPRSChart, 1, 0, 0, CPRSLib));
+  inherited Create(CPRSLib, ICPRSBroker);
+  EnsureBroker;
+end;
+
+procedure TCPRSBroker.CallRPC(const RPCName: WideString);
+var
+  err: boolean;
+  tmpRPCVersion: string;
+  tmpClearParameters: boolean;
+  tmpClearResults: boolean;
+  tmpResults: string;
+  tmpParam: TParams;
+
+begin
+  EnsureEventHookObjects;
+  uCPRSEventHookManager.EnterCriticalSection;
+  try
+    err := (FContext = '');
+    if(not err) then
+      err := not UpdateContext(FContext);
+    if (not err) then
+      err := IsBaseContext;
+    if err then
+      raise EOleException.Create('Invalid Broker Context', OLE_E_FIRST, Application.ExeName ,'', 0)
+    else
+    begin
+      if RPCName <> '' then
+      begin
+        tmpRPCVersion := RPCBrokerV.RpcVersion;
+        tmpClearParameters := RPCBrokerV.ClearParameters;
+        tmpClearResults := RPCBrokerV.ClearResults;
+        tmpResults := RPCBrokerV.Results.Text;
+        tmpParam := TParams.Create(nil);
+        try
+          RPCBrokerV.RemoteProcedure := RPCName;
+          RPCBrokerV.RpcVersion := FRPCVersion;
+          RPCBrokerV.ClearParameters := FClearParameters;
+          RPCBrokerV.ClearResults := FClearResults;
+          RPCBrokerV.Param.Assign(FParam);
+          CallBrokerInContext;
+          FParam.Assign(RPCBrokerV.Param);
+          FResults := RPCBrokerV.Results.Text;
+        finally
+          RPCBrokerV.RpcVersion := tmpRPCVersion;
+          RPCBrokerV.ClearParameters := tmpClearParameters;
+          RPCBrokerV.ClearResults := tmpClearResults;
+          RPCBrokerV.Results.Text := tmpResults;
+          RPCBrokerV.Param.Assign(tmpParam);
+          tmpParam.Free;
+        end;
+      end
+      else
+      begin
+        RPCBrokerV.Results.Clear;
+        FResults := '';
+      end;
+    end;
+  finally
+    uCPRSEventHookManager.LeaveCriticalSection;
+  end;
+end;
+
+function TCPRSBroker.DebugMode: WordBool;
+begin
+  Result := RPCBrokerV.DebugMode;
+end;
+
+function TCPRSBroker.Get_ClearParameters: WordBool;
+begin
+  Result := FClearParameters;
+end;
+
+function TCPRSBroker.Get_ClearResults: WordBool;
+begin
+  Result := FClearResults;
+end;
+
+function TCPRSBroker.Get_Param(Index: Integer): WideString;
+begin
+  Result := FParam[Index].Value;
+end;
+
+function TCPRSBroker.Get_ParamList(Index: Integer;
+  const Node: WideString): WideString;
+begin
+  Result := FParam[Index].Mult[Node];
+end;
+
+function TCPRSBroker.Get_ParamType(Index: Integer): BrokerParamType;
+begin
+  case FParam[Index].PType of
+    literal:   Result := bptLiteral;
+    reference: Result := bptReference;
+    list:      Result := bptList;
+    else       Result := bptUndefined;
+  end;
+end;
+
+function TCPRSBroker.Get_Results: WideString;
+begin
+  Result := FResults;
+end;
+
+function TCPRSBroker.Get_RPCVersion: WideString;
+begin
+  Result := FRPCVersion;
+end;
+
+function TCPRSBroker.ParamCount: Integer;
+begin
+  Result := FParam.Count;
+end;
+
+function TCPRSBroker.ParamListCount(Index: Integer): Integer;
+begin
+  Result := FParam[Index].Mult.Count;
+end;
+
+function TCPRSBroker.Port: Integer;
+begin
+  Result := RPCBrokerV.ListenerPort;
+end;
+
+function TCPRSBroker.Server: WideString;
+begin
+  Result := RPCBrokerV.Server;
+end;
+
+procedure TCPRSBroker.Set_ClearParameters(Value: WordBool);
+begin
+  FClearParameters := Value;
+end;
+
+procedure TCPRSBroker.Set_ClearResults(Value: WordBool);
+begin
+  FClearResults := Value;
+end;
+
+procedure TCPRSBroker.Set_Param(Index: Integer; const Value: WideString);
+begin
+  FParam[Index].Value := Value;
+end;
+
+procedure TCPRSBroker.Set_ParamList(Index: Integer; const Node,
+  Value: WideString);
+begin
+  FParam[Index].Mult[Node] := Value;
+end;
+
+procedure TCPRSBroker.Set_ParamType(Index: Integer;
+  Value: BrokerParamType);
+begin
+  case Value of
+    bptLiteral:   FParam[Index].PType := literal;
+    bptReference: FParam[Index].PType := reference;
+    bptList:      FParam[Index].PType := list;
+    else          FParam[Index].PType := undefined;
+  end;
+end;
+
+procedure TCPRSBroker.Set_Results(const Value: WideString);
+begin
+  FResults := Value;
+end;
+
+procedure TCPRSBroker.Set_RPCVersion(const Value: WideString);
+begin
+  FRPCVersion := Value;
+end;
+
+function TCPRSBroker.SetContext(const Context: WideString): WordBool;
+begin
+  FContext := Context;
+  Result := UpdateContext(FContext);
+end;
+
+procedure TCPRSBroker.Initialize;
+begin
+  FContext := '';
+  FRPCVersion := RPCBrokerV.RpcVersion;
+  FClearParameters := RPCBrokerV.ClearParameters;
+  FClearResults := RPCBrokerV.ClearResults;
+  FResults := '';
+  FParam.Assign(FEmptyParams);
+end;
+
+destructor TCPRSBroker.Destroy;
+begin
+  FParam.Free;
+  FEmptyParams.Free;
+  inherited;
+end;
+
+{ TCPRSState }
+
+constructor TCPRSState.Create;
+var
+  CPRSLib: ITypeLib;
+
+begin
+  OleCheck(LoadRegTypeLib(LIBID_CPRSChart, 1, 0, 0, CPRSLib));
+  inherited Create(CPRSLib, ICPRSState);
+  FHandle := DottedIPStr + 'x' + IntToHex(Application.Handle,8);
+end;
+
+function TCPRSState.Handle: WideString;
+begin
+  Result := FHandle;
+end;
+
+function TCPRSState.LocationIEN: Integer;
+begin
+  Result := Encounter.Location;
+end;
+
+function TCPRSState.LocationName: WideString;
+begin
+  Result := Encounter.LocationName;
+end;
+
+function TCPRSState.PatientDFN: WideString;
+begin
+  Result := Patient.DFN;
+end;
+
+function TCPRSState.PatientDOB: WideString;
+begin
+  Result := FormatFMDateTime('mm/dd/yyyy', Patient.DOB);
+end;
+
+function TCPRSState.PatientName: WideString;
+begin
+  Result := Patient.Name;
+end;
+
+function TCPRSState.PatientSSN: WideString;
+begin
+  Result := Patient.SSN;
+end;
+
+function TCPRSState.UserDUZ: WideString;
+begin
+  Result := IntToStr(User.DUZ);
+end;
+
+function TCPRSState.UserName: WideString;
+begin
+  Result := User.Name;
+end;
+
+{ TCPRSEventHookManager }
+
+constructor TCPRSEventHookManager.Create;
+begin
+  inherited;
+  FCPRSBroker := TCPRSBroker.Create;
+  FCPRSState := TCPRSState.Create;
+end;
+
+destructor TCPRSEventHookManager.Destroy;
+begin
+  FCPRSState := nil;
+  FCPRSBroker := nil;
+  if assigned(FErrors) then
+    FErrors.Free;
+  inherited;
+end;
+
+procedure TCPRSEventHookManager.EnterCriticalSection;
+begin
+  Windows.EnterCriticalSection(FLock);
+end;
+
+procedure TCPRSEventHookManager.LeaveCriticalSection;
+begin
+  Windows.LeaveCriticalSection(FLock);
+end;
+
+function TCPRSEventHookManager.ProcessComObject(const GUIDString: string;
+                               const AParam2, AParam3: string;
+                               var Data1, Data2: WideString): boolean;
+var
+  ObjIEN, ObjName, ObjGUIDStr, err, AParam1: string;
+  ObjGUID: TGUID;
+  ObjIntf: IUnknown;
+  Obj: ICPRSExtension;
+
+begin
+  Result := FALSE;
+  ObjIEN := Piece(GUIDString,U,1);
+  if assigned(FErrors) and (FErrors.IndexOf(ObjIEN) >= 0) then exit;
+  ObjName := Piece(GUIDString,U,2);
+  ObjGUIDStr := Piece(GUIDString,U,3);
+  if (ObjGUIDStr <> '') then
+  begin
+    try
+      ObjGUID := StringToGUID(ObjGUIDStr);
+      try
+        ObjIntf := CreateComObject(ObjGUID);
+        if assigned(ObjIntf) then
+        begin
+          try
+            ObjIntf.QueryInterface(IID_ICPRSExtension, Obj);
+            if assigned(Obj) then
+            begin
+              AParam1 := Piece(GUIDString,U,5);
+              InitializeCriticalSection(FLock);
+              try
+                FCPRSBroker.Initialize;
+                uCOMObjectActive := True;
+                Result := Obj.Execute(FCPRSBroker, FCPRSState,
+                                      AParam1, AParam2, AParam3, Data1, Data2);
+              finally
+                DeleteCriticalSection(FLock);
+                uCOMObjectActive := False;
+              end;
+            end
+            else
+              err := 'COM Object ' + ObjName + ' does not support ICPRSExtension';
+          except
+            err := 'Error executing ' + ObjName;
+          end;
+        end;
+      except
+        err := 'COM Object ' + ObjName + ' not found on this workstation.';
+      end;
+    except
+      err := 'COM Object ' + ObjName + ' has an invalid GUID' + CRLF + ObjGUIDStr;
+    end;
+    if err <> '' then
+    begin
+      if not assigned(FErrors) then
+        FErrors := TStringList.Create;
+      if FErrors.IndexOf(ObjIEN) < 0 then
+        FErrors.Add(ObjIEN);
+      ShowMsg(err);
+    end;
+  end;
+end;
+
+procedure FreeEventHookObjects;
+begin
+  FreeAndNil(uCPRSEventHookManager);
+end;
+
+// External Calls
+
+procedure RegisterCPRSTypeLibrary;
+type
+  TUnregisterProc = function(const GUID: TGUID; VerMajor, VerMinor: Word;
+    LCID: TLCID; SysKind: TSysKind): HResult stdcall;
+
+var
+  Unregister: boolean;
+  CPRSLib: ITypeLib;
+  DoHalt: boolean;
+  ModuleName: string;
+  HelpPath: WideString;
+  Buffer: array[0..261] of Char;
+  Handle: THandle;
+  UnregisterProc: TUnregisterProc;
+  LibAttr: PTLibAttr;
+
+begin
+  DoHalt := TRUE;
+  if FindCmdLineSwitch('UNREGSERVER', ['-', '/'], True) then
+    Unregister := TRUE
+  else
+  begin
+    Unregister := FALSE;
+    if not FindCmdLineSwitch('REGSERVER', ['-', '/'], True) then
+      DoHalt := FALSE;
+  end;
+
+  try
+    SetString(ModuleName, Buffer, Windows.GetModuleFileName(HInstance, Buffer, SizeOf(Buffer)));
+    if ModuleName <> '' then
+    begin
+      OleCheck(LoadTypeLib(PWideChar(WideString(ModuleName)), CPRSLib)); // will register if needed
+      if assigned(CPRSLib) then
+      begin
+        if Unregister then
+        begin
+          Handle := GetModuleHandle('OLEAUT32.DLL');
+          if Handle <> 0 then
+          begin
+            @UnregisterProc := GetProcAddress(Handle, 'UnRegisterTypeLib');
+            if @UnregisterProc <> nil then
+            begin
+              OleCheck(CPRSLib.GetLibAttr(LibAttr));
+              try
+                with LibAttr^ do
+                  UnregisterProc(guid, wMajorVerNum, wMinorVerNum, lcid, syskind);
+              finally
+                CPRSLib.ReleaseTLibAttr(LibAttr);
+              end;
+            end;
+          end;
+        end
+        else
+        begin
+          HelpPath := ExtractFilePath(ModuleName);
+          OleCheck(RegisterTypeLib(CPRSLib, PWideChar(WideString(ModuleName)), PWideChar(HelpPath)));
+        end;
+      end;
+    end;
+  except
+// ignore any errors   
+  end;
+  if DoHalt then Halt;
+end;
+
+procedure ProcessPatientChangeEventHook;
+var
+  d1, d2: WideString;
+  COMObj: string;
+
+begin
+  COMObj := GetPatientChangeGUIDs;
+  if(COMObj <> '') and (COMObj <> '0') then
+  begin
+    EnsureEventHookObjects;
+    d1 := '';
+    d2 := '';
+    uCPRSEventHookManager.ProcessComObject(COMObj, 'P=' + Patient.DFN, '', d1, d2);
+  end;
+end;
+
+function ProcessOrderAcceptEventHook(OrderID: string; DisplayGroup: integer): boolean;
+var
+  d1, d2: WideString;
+  COMObj: string;
+
+begin
+  Result := False;
+  COMObj := GetOrderAcceptGUIDs(DisplayGroup);
+  if(COMObj <> '') and (COMObj <> '0') then
+  begin
+    EnsureEventHookObjects;
+    d1 := '';
+    d2 := '';
+    //Result will be set to True by Com object if the order is deleted by LES
+    Result := uCPRSEventHookManager.ProcessComObject(COMObj, 'O=' + OrderID, '', d1, d2);
+  end;
+end;
+
+procedure GetCOMObjectText(COMObject: integer; const Param2, Param3: string;
+                           var Data1, Data2: string);
+var
+  d1, d2: WideString;
+  COMObj: string;
+
+begin
+  if COMObject > 0 then
+  begin
+    COMObj := GetCOMObjectDetails(COMObject);
+    if(COMObj <> '') and (COMObj <> '0') then
+    begin
+      EnsureEventHookObjects;
+      d1 := Data1;
+      d2 := Data2;
+      if uCPRSEventHookManager.ProcessComObject(COMObj, Param2, Param3, d1, d2) then
+      begin
+        Data1 := d1;
+        Data2 := d2;
+      end;
+    end;
+  end;
+end;
+
+function COMObjectOK(COMObject: integer): boolean;
+begin
+  if assigned(uCPRSEventHookManager) and assigned(uCPRSEventHookManager.FErrors) then
+    Result := (uCPRSEventHookManager.FErrors.IndexOf(IntToStr(COMObject)) < 0)
+  else
+    Result := TRUE;
+end;
+
+function COMObjectActive: boolean;
+begin
+  Result := uCOMObjectActive;
+end;
+
+initialization
+
+finalization
+  FreeEventHookObjects;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uFormMonitor.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uFormMonitor.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uFormMonitor.pas	(revision 1676)
@@ -0,0 +1,600 @@
+unit uFormMonitor;
+
+interface
+
+uses
+  SysUtils, Forms, Classes, Windows, Messages, ExtCtrls, Contnrs, DateUtils;
+
+procedure SetFormMonitoring(activate: boolean);
+
+procedure MarkFormAsStayOnTop(Form: TForm; IsStayOnTop: Boolean);
+
+// Some forms have display tasks when first displayed that are messed up by the
+// form monitor - such as making a combo box automatically drop down.  These forms
+// should call FormMonitorBringToFrontEvent, which will be called when the
+// form monitor calls the form's BringToFront method.  The Seconds parameter is the
+// amount of time that must transpire before the form monitor will call
+// BringToFront again, unless another form has received focus since the event was called.
+
+procedure FormMonitorBringToFrontEvent(Form: TForm; AEvent: TNotifyEvent; Seconds: integer = 3);
+
+implementation
+
+const
+  TIMER_INTERVAL = 8;
+  TIMER_CHECKS_BEFORE_TIMEOUT = 1000 div TIMER_INTERVAL;
+
+type
+  TFormMonitor = class
+  private
+    FOldActiveFormChangeEvent: TNotifyEvent;
+    FOldActivateEvent: TNotifyEvent;
+    FOldRestore: TNotifyEvent;
+    FModifyingZOrder: boolean;
+    FModifyPending: boolean;
+    FActiveForm: TForm;
+    FZOrderHandles: TList;
+    FLastModal: boolean;
+    fTopOnList: TList;
+    fTopOffList: TList;
+    fTimer: TTimer;
+    FTimerCount: integer;
+    FMenuPending: boolean;
+    FWindowsHook: HHOOK;
+    FRunning: boolean;
+    FFormEvents: TObjectList;
+    FLastActiveFormHandle: HWND;
+    procedure ManageForms;
+    function FormValid(form: TForm): boolean;
+    function HandleValid(handle: HWND): boolean;
+    procedure MoveOnTop(Handle: HWND);
+    procedure MoveOffTop(Handle: HWND);
+    procedure Normalize(Handle: HWND; Yes: boolean);
+    procedure NormalizeReset;
+    function IsNormalized(Handle: HWND): boolean;
+    function GetActiveFormHandle: HWND;
+    procedure StartZOrdering;
+    function SystemRunning: boolean;
+    function ModalDelphiForm: boolean;
+    function IsTopMost(Handle: HWND): boolean;
+  public
+    procedure Start;
+    procedure Stop;
+    procedure Timer(Sender: TObject);
+    procedure Activate(Sender: TObject);
+    procedure ActiveFormChange(Sender: TObject);
+    procedure Restore(Sender: TObject);
+  end;
+
+  TFormEvent = class(TObject)
+  private
+    FForm: TForm;
+    FEvent: TNotifyEvent;
+    FSeconds: integer;
+    FTimeStamp: TDateTime;
+  end;
+
+var
+  FormMonitor: TFormMonitor = nil;
+
+type
+  HDisableGhostProc = procedure(); stdcall;
+
+const
+  NORMALIZED    = $00000001;
+  UN_NORMALIZED = $FFFFFFFE;
+  STAY_ON_TOP   = $00000002;
+  NORMAL_FORM   = $FFFFFFFD;
+
+
+procedure DisableGhosting;
+const
+  DisableProc = 'DisableProcessWindowsGhosting';
+  UserDLL = 'user32.dll';
+
+var
+  DisableGhostProc: HDisableGhostProc;
+  User32Handle: THandle;
+
+begin
+  User32Handle := LoadLibrary(PChar(UserDLL));
+  try
+    if User32Handle <= HINSTANCE_ERROR then
+      User32Handle := 0
+    else
+    begin
+      DisableGhostProc := GetProcAddress(User32Handle, PChar(DisableProc));
+      if(assigned(DisableGhostProc)) then
+      begin
+        DisableGhostProc;
+      end;
+    end;
+  finally
+    if(User32Handle <> 0) then
+      FreeLibrary(User32Handle);
+  end;
+end;
+
+procedure SetFormMonitoring(activate: boolean);
+var
+  running: boolean;
+begin
+  running := assigned(FormMonitor);
+  if(activate <> running) then
+  begin
+    if(running) then
+    begin
+      FormMonitor.Stop;
+      FormMonitor.Free;
+      FormMonitor := nil;
+    end
+    else
+    begin
+      FormMonitor := TFormMonitor.Create;
+      FormMonitor.Start;
+    end;
+  end;
+end;
+
+procedure MarkFormAsStayOnTop(Form: TForm; IsStayOnTop: Boolean);
+var
+  Data: Longint;
+begin
+  Data := GetWindowLong(Form.Handle, GWL_USERDATA);
+  if(IsStayOnTop) then
+  begin
+    Data := Data or STAY_ON_TOP;
+    SetWindowPos(Form.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
+  end
+  else
+  begin
+    Data := Data and NORMAL_FORM;
+    SetWindowPos(Form.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
+  end;
+  SetWindowLong(Form.Handle, GWL_USERDATA, Data);
+end;
+
+function FindFormEventIndex(Form: TForm): integer;
+var
+  i: integer;
+  event: TFormEvent;
+begin
+  Result := -1;
+  for i := 0 to FormMonitor.FFormEvents.Count-1 do
+  begin
+    event := TFormEvent(FormMonitor.FFormEvents[i]);
+    if(event.FForm = Form) then
+    begin
+      Result := i;
+      exit;
+    end;
+  end;
+end;
+
+function FindFormEvent(Form: TForm): TFormEvent;
+var
+  idx: integer;
+begin
+  idx := FindFormEventIndex(Form);
+  if(idx < 0) then
+    Result := nil
+  else
+    Result := TFormEvent(FormMonitor.FFormEvents[idx]);
+end;
+
+procedure FormMonitorBringToFrontEvent(Form: TForm; AEvent: TNotifyEvent; Seconds: integer);
+var
+  event: TFormEvent;
+  idx: integer;
+begin
+  event := FindFormEvent(Form);
+  if(assigned(AEvent)) then
+  begin
+    if(event = nil) then
+    begin
+      event := TFormEvent.Create;
+      event.FForm := Form;
+      event.FTimeStamp := 0;
+      FormMonitor.FFormEvents.Add(event);
+    end;
+    event.FEvent := AEvent;
+    event.FSeconds := Seconds;
+  end
+  else
+  if(event <> nil) then
+  begin
+    idx := FindFormEventIndex(Form);
+    FormMonitor.FFormEvents.Delete(idx);
+//    event.Free; - TObjectList frees object automatically
+  end;
+end;
+
+function IsFormStayOnTop(form: TForm): boolean;
+begin
+  Result := (form.FormStyle = fsStayOnTop);
+  if(not Result) then
+    Result := ((GetWindowLong(Form.Handle, GWL_USERDATA) and STAY_ON_TOP) <> 0);
+end;
+
+{ TFormMonitor }
+
+procedure TFormMonitor.Activate(Sender: TObject);
+begin
+  if(Assigned(FOldActivateEvent)) then
+    FOldActivateEvent(Sender);
+  NormalizeReset;
+  StartZOrdering;
+end;
+
+procedure TFormMonitor.ActiveFormChange(Sender: TObject);
+begin
+  if(Assigned(FOldActiveFormChangeEvent)) then
+    FOldActiveFormChangeEvent(Sender);
+  StartZOrdering;
+end;
+
+procedure TFormMonitor.Restore(Sender: TObject);
+begin
+  if(Assigned(FOldRestore)) then
+    FOldRestore(Sender);
+  NormalizeReset;
+  StartZOrdering;
+end;
+
+function TFormMonitor.FormValid(form: TForm): boolean;
+begin
+  Result := assigned(form);
+  if Result then
+    Result := (form.Parent = nil) and (form.ParentWindow = 0) and form.Visible and (form.Handle <> 0);
+end;
+
+function TFormMonitor.HandleValid(handle: HWND): boolean;
+begin
+  Result := (handle <> 0);
+  if(Result) then
+    Result := IsWindow(handle) and IsWindowVisible(handle) and isWindowEnabled(handle);
+end;
+
+function FindWindowZOrder(Window: HWnd; Data: Longint): Bool; stdcall;
+begin
+  if(IsWindow(Window) and IsWindowVisible(Window)) then
+    FormMonitor.FZOrderHandles.Add(Pointer(Window));
+  Result := True;
+end;
+
+procedure TFormMonitor.ManageForms;
+var
+  i, j: integer;
+  form: TForm;
+  formHandle, activeHandle: HWND;
+  modal, doCall: boolean;
+  event: TFormEvent;
+
+begin
+  if(FModifyingZOrder) then exit;
+  if(not SystemRunning) then exit;
+  FModifyingZOrder := TRUE;
+  try
+    activeHandle := GetActiveFormHandle;
+    modal := ModalDelphiForm;
+    FZOrderHandles.Clear;
+    fTopOnList.Clear;
+    fTopOffList.Clear;
+
+    EnumThreadWindows(GetCurrentThreadID, @FindWindowZOrder, 0);
+    for i := 0 to FZOrderHandles.Count-1 do
+    begin
+      formHandle := HWND(FZOrderHandles[i]);
+      for j := 0 to Screen.FormCount-1 do
+      begin
+        form := Screen.Forms[j];
+        if(form.Handle = formHandle) then
+        begin
+          if formValid(form) and (form.Handle <> activeHandle) and IsFormStayOnTop(form) then
+          begin
+            if(modal and (not IsWindowEnabled(form.Handle))) then
+              fTopOffList.Add(Pointer(form.Handle))
+            else
+              fTopOnList.Add(Pointer(form.Handle));
+          end;
+          break;
+        end;
+      end;
+    end;
+    for i := fTopOffList.Count-1 downto 0 do
+      MoveOffTop(HWND(fTopOffList[i]));
+    for i := fTopOnList.Count-1 downto 0 do
+      MoveOnTop(HWND(fTopOnList[i]));
+
+    if(activeHandle <> 0) then
+    begin
+      if(assigned(FActiveForm)) then
+      begin
+        event := FindFormEvent(FActiveForm);
+        doCall := (event = nil);
+        if(not doCall) then
+          doCall := (activeHandle <> FLastActiveFormHandle);
+        if(not doCall) then
+          doCall := SecondsBetween(Now, event.FTimeStamp) > event.FSeconds;
+        if(doCall) then
+        begin
+          if IsFormStayOnTop(FActiveForm) then
+          begin
+            SetWindowPos(activeHandle, HWND_TOPMOST, 0, 0, 0, 0,
+                SWP_NOMOVE or SWP_NOSIZE);
+            Normalize(activeHandle, FALSE);
+          end;
+          FActiveForm.BringToFront;
+          if(event <> nil) then
+          begin
+            if(FormValid(event.FForm)) then
+            begin
+              event.FEvent(FActiveForm);
+              event.FTimeStamp := now;
+            end;
+          end;
+        end;
+      end
+      else
+      begin
+        if(activeHandle <> 0) then
+        begin
+          SetFocus(activeHandle);
+          BringWindowToTop(activeHandle);
+          if(IsTopMost(activeHandle)) then
+            SetWindowPos(activeHandle, HWND_TOPMOST, 0, 0, 0, 0,
+              SWP_NOMOVE or SWP_NOSIZE);
+        end;
+      end;
+    end;
+    FLastActiveFormHandle := activeHandle;
+  finally
+    FModifyingZOrder := FALSE;
+  end;
+end;
+
+function CallWndHook(Code: Integer; WParam: wParam; Msg: PCWPStruct): Longint; stdcall;
+begin
+  case Msg.message of
+    WM_INITMENU, WM_INITMENUPOPUP, WM_ENTERMENULOOP:
+      FormMonitor.FMenuPending := TRUE;
+    WM_MENUSELECT, WM_EXITMENULOOP:
+      FormMonitor.FMenuPending := FALSE;
+  end;
+  Result := CallNextHookEx(FormMonitor.FWindowsHook, Code, WParam, Longint(Msg));
+end;
+
+procedure TFormMonitor.Start;
+begin
+  if(FRunning) then exit;
+  FRunning := TRUE;
+  FTimer := TTimer.Create(Application);
+  fTimer.Enabled := FALSE;
+  FTimer.OnTimer := Timer;
+  FTimer.Interval := TIMER_INTERVAL;
+  FMenuPending := FALSE;
+  FLastActiveFormHandle := 0;
+
+  FZOrderHandles := TList.Create;
+  fTopOnList := TList.Create;
+  fTopOffList := TList.Create;
+  FFormEvents := TObjectList.Create;
+  FModifyingZOrder := false;
+  FLastModal := false;
+  FOldActiveFormChangeEvent := Screen.OnActiveFormChange;
+  Screen.OnActiveFormChange := ActiveFormChange;
+  FOldActivateEvent := Application.OnActivate;
+  Application.OnActivate := Activate;
+  FOldRestore := Application.OnRestore;
+  Application.OnRestore := Restore;
+  FWindowsHook := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndHook, 0, GetCurrentThreadID)
+end;
+
+procedure TFormMonitor.Stop;
+begin
+  if(not FRunning) then exit;
+  FRunning := FALSE;
+  if FWindowsHook <> 0 then
+  begin
+    UnHookWindowsHookEx(FWindowsHook);
+    FWindowsHook := 0;
+  end;
+  Screen.OnActiveFormChange := FOldActiveFormChangeEvent;
+  Application.OnActivate := FOldActivateEvent;
+  Application.OnRestore := FOldRestore;
+
+  FZOrderHandles.Free;
+  fTopOnList.Free;
+  fTopOffList.Free;
+  FFormEvents.Free;
+  fTimer.Enabled := FALSE;
+  fTimer.Free;
+end;
+
+procedure TFormMonitor.MoveOffTop(Handle: HWND);
+begin
+  if(not IsNormalized(Handle)) then
+  begin
+    SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0,
+              SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);
+    Normalize(Handle, TRUE);
+  end;
+end;
+
+procedure TFormMonitor.MoveOnTop(Handle: HWND);
+begin
+  if(isNormalized(Handle)) then
+  begin
+    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
+              SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);
+    Normalize(Handle, FALSE);
+  end;
+end;
+
+procedure TFormMonitor.Normalize(Handle: HWND; Yes: boolean);
+var
+  Data: Longint;
+begin
+  Data := GetWindowLong(Handle, GWL_USERDATA);
+  if(yes) then
+    Data := Data or NORMALIZED
+  else
+    Data := Data and UN_NORMALIZED;
+  SetWindowLong(Handle, GWL_USERDATA, Data);
+end;
+
+function TFormMonitor.IsNormalized(Handle: HWND): boolean;
+begin
+  Result := ((GetWindowLong(Handle, GWL_USERDATA) and NORMALIZED) <> 0);
+end;
+
+function TFormMonitor.IsTopMost(Handle: HWND): boolean;
+begin
+  Result := ((GetWindowLong(Handle, GWL_EXSTYLE) and WS_EX_TOPMOST) <> 0);
+end;
+
+function FindWindows(Window: HWnd; Data: Longint): Bool; stdcall;
+begin
+  FormMonitor.Normalize(Window, FALSE);
+  Result := True;
+end;
+
+procedure TFormMonitor.NormalizeReset;
+begin
+  EnumThreadWindows(GetCurrentThreadID, @FindWindows, 0);
+end;
+
+var
+  uActiveWindowHandle: HWND;
+  uActiveWindowCount: integer;
+
+function IsHandleOK(Handle: HWND): boolean;
+var
+  i: integer;
+  
+begin
+  Result := FALSE;
+  if(not formMonitor.HandleValid(Handle)) or (Handle = Application.Handle) then exit;
+  for i := 0 to Screen.FormCount-1 do
+  begin
+    if(Handle = Screen.Forms[i].Handle) then exit;
+  end;
+  Result := TRUE;
+end;
+
+function FindActiveWindow(Window: HWnd; Data: Longint): Bool; stdcall;
+begin
+  Result := True;
+  if(IsHandleOK(Window)) then 
+  begin
+    inc(uActiveWindowCount);
+    if(uActiveWindowCount = 1) then
+      uActiveWindowHandle := Window
+    else
+      if(uActiveWindowCount > 1) then
+        Result := false;
+  end;
+end;
+
+function TFormMonitor.GetActiveFormHandle: HWND;
+var
+  i: integer;
+  form: TForm;
+
+begin
+  FActiveForm := Screen.ActiveForm;
+  if(assigned(FActiveForm)) then
+    Result := FActiveForm.Handle
+  else
+    Result := 0;
+  if(FormValid(FActiveForm) and IsWindowEnabled(FActiveForm.Handle)) then
+    exit;
+  for i := 0 to Screen.FormCount-1 do
+  begin
+    form := Screen.Forms[i];
+    if(form.Handle = Result) then
+    begin
+      if FormValid(form) and IsWindowEnabled(form.Handle) then
+      begin
+        FActiveForm := form;
+        Result := form.Handle;
+        exit;
+      end;
+    end;
+  end;
+  FActiveForm := nil;
+  Result := GetActiveWindow;
+  if(IsHandleOK(Result)) then exit;
+  uActiveWindowHandle := 0;
+  uActiveWindowCount := 0;
+  EnumThreadWindows(GetCurrentThreadID, @FindActiveWindow, 0);
+  if(uActiveWindowCount = 1) then
+  begin
+    Result := uActiveWindowHandle;
+  end;
+end;
+
+
+procedure TFormMonitor.StartZOrdering;
+begin
+  if(FModifyPending) then exit;
+  if(SystemRunning) then
+  begin
+    FModifyPending := TRUE;
+    FTimerCount := 0;
+    FTimer.Enabled := TRUE;
+  end;
+end;
+
+function TFormMonitor.SystemRunning: boolean;
+begin
+  Result := assigned(Application.MainForm) and
+            (Application.MainForm.Handle <> 0) and
+            IsWindowVisible(Application.MainForm.Handle);
+end;
+
+
+function TFormMonitor.ModalDelphiForm: boolean;
+var
+  i: integer;
+  form: TForm;
+begin
+  for i := 0 to Screen.FormCount-1 do
+  begin
+    form := screen.Forms[i];
+    if(FormValid(form) and (fsModal in form.FormState)) then
+    begin
+      Result := TRUE;
+      exit;
+    end;
+  end;
+  Result := FALSE;
+end;
+
+procedure TFormMonitor.Timer(Sender: TObject);
+var
+  NoMenu: boolean;
+begin
+  inc(FTimerCount);
+  if(FTimerCount > TIMER_CHECKS_BEFORE_TIMEOUT) then
+  begin
+    FTimer.Enabled := FALSE;
+    FMenuPending := FALSE;
+    FModifyPending := FALSE;
+    exit;
+  end;
+  if(FTimerCount <> 1) then exit;
+  FTimer.Enabled := FALSE;
+  NoMenu := not FMenuPending;
+  FMenuPending := FALSE;
+  if(NoMenu and SystemRunning) then
+    ManageForms;
+  FModifyPending := FALSE;
+end;
+
+initialization
+  DisableGhosting;
+
+finalization
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uGraphs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uGraphs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uGraphs.pas	(revision 1676)
@@ -0,0 +1,261 @@
+unit uGraphs;
+
+interface
+
+uses
+  SysUtils, Classes, Graphics, ORFn;
+
+type
+  TGraphSetting = class
+  public
+    ClearBackground: boolean;
+    DateRangeInpatient: string;
+    DateRangeOutpatient: string;
+    Dates: boolean;
+    FixedDateRange: boolean;
+    FMStartDate: double;
+    FMStopDate: double;
+    Gradient: boolean;
+    HighTime: TDateTime;
+    Hints: boolean;
+    HorizontalZoom: boolean;
+    ItemsDisplayed: TStrings;
+    ItemsForDisplay: TStrings;
+    Legend: boolean;
+    Lines: boolean;
+    LowTime: TDateTime;
+    MaxGraphs: integer;
+    MaxSelect: integer;
+    MaxSelectMin: integer;
+    MaxSelectMax: integer;
+    MinGraphHeight: integer;
+    OptionSettings: string;              // only used for storage
+    Points: boolean;
+    SortByType: boolean;
+    SortColumn: integer;
+    Sources: TStrings;
+    StayOnTop: boolean;
+    Turbo: boolean;
+    Values: boolean;
+    VerticalZoom: boolean;
+    View3D: boolean;
+  end;
+
+  TGraphActivity = class
+  public
+    CurrentSetting: string;
+    DefaultInpatientDate: string;
+    DefaultOutpatientDate: string;
+    OldDFN: string;
+    PublicSetting: string;
+    PersonalSetting: string;
+    PublicEditor: boolean;
+    Status: string;
+    TurboOn: boolean;
+    Cache: boolean;
+  end;
+
+const
+  BIG_NUMBER = 9999999;
+  BIG_SPACES = '                                                                ';
+  FM_START_DATE = 2500101;
+  FM_STOP_DATE = 3500101;
+  MAX_ITEM_DISCLAIMER = 10;
+  NUM_COLORS = 16;
+  PROB_HEIGHT = 2;
+  RX_HEIGHT_IN = 12;
+  RX_HEIGHT_NVA = 9;
+  RX_HEIGHT_OUT = 15;
+  ZOOM_PERCENT = 95;
+  GRAPH_FLOAT = 'F';
+  GRAPH_REPORT = 'R';
+  POINT_PADDING = 0.03;              // assume a point height of 3%
+  LLS_FRONT  = '^____[';
+  LLS_BACK  = ']___________________________________________________________________________________________________________';
+
+
+    // settings use single character
+  SETTING_3D = 'A';
+  SETTING_CLEAR = 'B';
+  SETTING_DATES = 'C';
+  SETTING_GRADIENT = 'D';
+  SETTING_HINTS = 'E';
+  SETTING_LEGEND = 'F';
+  SETTING_LINES = 'G';
+  SETTING_SORT = 'H';
+  SETTING_TOP = 'I';
+  SETTING_VALUES = 'J';
+  SETTING_HZOOM = 'K';
+  SETTING_VZOOM = 'L';
+  SETTING_FIXED = 'M';
+  SETTING_TURBO = 'N';
+
+  // keypress flags
+  KEYPRESS_ON = 'YES';
+  KEYPRESS_OFF = 'NO';
+
+  // format date/time axis
+  DFORMAT_MDY = 'm/d/yyyy';
+  DFORMAT_MYY = 'm/yy';
+  DFORMAT_YY = 'yy';
+  DWIDTH_MDY = 66;
+  DWIDTH_MYY = 30;
+  DWIDTH_YY = 18;
+
+  // text messages
+  TXT_COMMENTS = '** comments';
+  TXT_COPY_DISCLAIMER = 'Note: Graphs display limited data, view details for more information.';
+  TXT_DISCLAIMER = 'Due to number of items and size restrictions on your display, '
+    + 'all items may not be visible.';
+  TXT_INFO = 'Select multiple items using Ctrl-click or Shift-click.';
+  TXT_NONNUMERICS = 'free-text values:';
+  TXT_NOGRAPHING = 'CPRS is not configured for graphing.';
+  TXT_PRINTING = 'Graphs are being printed';
+  TXT_REPORT_DISCLAIMER = 'Note: Listing displays limited data, view details for more information.';
+  TXT_VIEW_DEFINITION = 'View Definition';
+  TXT_WARNING = 'Warning: You are using graph settings with a Special Function.';
+  TXT_WARNING_SAME_TIME = 'Warning: Items have multiple occurrences at the same time.';
+  TXT_ZOOMED = 'Zoomed Date Range: ';
+
+  // views
+  VIEW_CURRENT = '-999';
+  VIEW_LABS = '-3';
+  VIEW_PERSONAL = '-1';
+  VIEW_PUBLIC = '-2';
+  VIEW_TEMPORARY = '-888';
+
+  COLOR_INFO = clCream;
+  COLOR_PRINTING = clMoneyGreen;    //$CCFFFF; $CCCCFF; $CCFFCC; $FFCCCC; $FFCCFF; $FFFFCC;
+  COLOR_WARNING = clCream;  //clFuchsia;
+  COLOR_ZOOM = clCream;  //clSkyBlue;
+
+  // hint messages for view definition
+  HINT_PAT_SOURCE     = 'Only items where the patient has data are displayed.'
+                + #13 + 'Use this for selecting items to display on the graph.';
+  HINT_ALL_SOURCE     = 'All possible items are displayed.'
+                + #13 + 'Use this for defining items to be displayed/saved as Views.'
+                + #13 + 'Note: For easy use, select Views for graphing.';
+  HINT_SELECTION_INFO = 'This form is primarily used for defining views.'
+                + #13 + 'Usually selection is done by selecting Views or Items to graph.'
+                + #13 + 'This form defines views.'
+                + #13 + 'The Settings form defines items that are always selectable for graphing.';
+  HINT_SOURCE         = 'These are the different types of data.'
+                + #13 + 'Types are followed by a section showing your Personal Views, then Public Views.'
+                + #13 + 'Click a type and then select individual items'
+                + #13 + 'Double-click a type to select all items of this type  - <any>';
+  HINT_OTHER_SOURCE   = 'These are Views and Lab Groups of other users.'
+                + #13 + 'Use these for defining items to be displayed/saved as Views.'
+                + #13 + 'Note: Select a Person to display their views and lab groups.';
+  HINT_OTHERS         = 'Select other users to see their views or lab groups.'
+                + #13 + 'Use these for defining items to be displayed/saved as Views.';
+  HINT_BTN_DEFINITION = 'Click to display the definitions of all selections.'
+                + #13 + 'Definitions show the items that make up a view or lab group.'
+                + #13 + 'This includes views and lab groups of another user you have selected.';
+  HINT_SELECTION      = 'Select specific items and move them to the right.'
+                + #13 + 'Use the arrow buttons or double click.'
+                + #13 + 'Selecting a type <any> will use all patients for that type.';
+  HINT_DISPLAY        = 'This is the list of items, types, and/or views that compose the View that will be graphed.'
+                + #13 + 'You can save this as a personal view by clicking the Save Personal button.';
+  HINT_BTN_ADDALL     = 'Click to add all items for display.';
+  HINT_BTN_ADD1       = 'Click to add this item for display (or double-click item).';
+  HINT_BTN_REMOVE1    = 'Click to remove this item from display (or double-click item).';
+  HINT_BTN_REMOVEALL  = 'Click to remove all items from display.';
+  HINT_BTN_CLEAR      = 'Click to clear the Items and Items for Graphing lists.';
+  HINT_BTN_DELETE     = 'Click to delete the selected view.';
+  HINT_BTN_RENAME     = 'Click to rename the selected view.';
+  HINT_BTN_SAVE       = 'Click to save your view.'
+                + #13 + 'You will give this view a name that can be selected from the graph.';
+  HINT_BTN_SAVE_PUB   = 'Click to save a public view (available to editors only).'
+                + #13 + 'Public views can be selected by all users.';
+  HINT_APPLY          = 'Select the section you where you want to display the graph.';
+  HINT_BTN_CLOSE      = 'Click to display items for graphing.'
+                + #13 + 'Note: If you are using this from the Options menu, '
+                + #13 + 'items are not displayed (multiple graphs may be in use).'
+                + #13 + 'You should save any view definitions before closing this form.';
+
+  // hint messages for settings
+  SHINT_SOURCES     = 'This is a list of all the types of data that can be graphed.'
+              + #13 + 'Check the types you wish to be selectable on the graph.'
+              + #13 + 'It is best to only check the types that you frequently use.'
+              + #13 + 'If you select a view on the graph that has types defined that are not checked,'
+              + #13 + 'that type of data will become automatically checked.'
+              + #13 + 'Note: Data is only selectable if the patient has that type of data';
+  SHINT_OPTIONS     = 'Check options to change the appearance and behavior of the graph.'
+              + #13 + 'Common options are also available on the graph''s right-click menu';
+  SHINT_MAX =         'Enter the maximum number of graphs to appear on the screen.'
+              + #13 + 'This is used when individual graphs are displayed and'
+              + #13 + 'applies to both the top and bottom sections.'
+              + #13 + 'When the number of graphs exceeds this limited, the graphs are available by scrolling.';
+  SHINT_MIN         = 'Enter the minimum height of a graph (this is in pixels).'
+              + #13 + 'This will depend on the size of your display.'
+              + #13 + 'This setting assures that at least this amount of height will appear on the graph.'
+              + #13 + 'Use in combination with Max Graphs in Display.';
+  SHINT_MAX_ITEMS   = 'Enter the maximum number of items that can be graphed at one time.'
+              + #13 + 'This setting prevents you from mistakenly selecting a large number of items.';
+  SHINT_OUTPT       = 'Select the default date range when initially opening graphs.'
+              + #13 + 'This setting is used if the patient is currently an outpatient.';
+  SHINT_INPT        = 'Select the default date range when initially opening graphs.'
+              + #13 + 'This setting is used if the patient is currently an inpatient.';
+  SHINT_FUNCTIONS   = 'These functions are restricted to editors for evaluation.';
+  SHINT_BTN_SHOW    = 'Click these buttons to display default settings.';
+  SHINT_BTN_PER     = 'Click to display your personal settings.';
+  SHINT_BTN_PUB     = 'Click to display the default settings.'
+              + #13 + 'These settings are used when you have not saved a personal setting.';
+  SHINT_BTN_SAVE    = 'Click these buttons to save default settings.';
+  SHINT_BTN_PERSAVE = 'Click to save your personal defaults';
+  SHINT_BTN_PUBSAVE = 'Click to save the public default (available to editors only).';
+  SHINT_BTN_ALL     = 'Click to check all sources.';
+  SHINT_BTN_CLEAR   = 'Click to uncheck all sources.';
+  SHINT_BTN_CLOSE   = 'Click to display these settings for graphing.'
+              + #13 + 'To cancel any unsaved changes you''ve made, click the upper-right x box.'
+              + #13 + 'Note: If you are using this from the Options menu, '
+              + #13 + 'settings will not change your display (multiple graphs may be in use).'
+              + #13 + 'You should save any settings before closing this form.';
+
+function GraphSettingsInit(settings: string): TGraphSetting;
+
+implementation
+
+function GraphSettingsInit(settings: string): TGraphSetting;
+var
+  FGraphSetting: TGraphSetting;
+begin
+  FGraphSetting := TGraphSetting.Create;
+  with FGraphSetting do
+  begin
+    OptionSettings := Piece(settings, '|', 2);
+    SortColumn := strtointdef(Piece(settings, '|', 3), 0);
+    MaxGraphs := strtointdef(Piece(settings, '|', 4), 5);
+    MinGraphHeight := strtointdef(Piece(settings, '|', 5), 90);
+    MaxSelect := strtointdef(Piece(settings, '|', 7), 100);
+    MaxSelectMin := 1;
+    MaxSelectMax := strtointdef(Piece(settings, '|', 8), 1000);
+    Values := Pos(SETTING_VALUES, OptionSettings) > 0;
+    VerticalZoom := Pos(SETTING_VZOOM, OptionSettings) > 0;
+    HorizontalZoom := Pos(SETTING_HZOOM, OptionSettings) > 0;
+    View3D := Pos(SETTING_3D, OptionSettings) > 0;
+    Legend := Pos(SETTING_LEGEND, OptionSettings) > 0;
+    Dates := Pos(SETTING_DATES, OptionSettings) > 0;
+    Lines := Pos(SETTING_LINES, OptionSettings) > 0;
+    StayOnTop := Pos(SETTING_TOP, OptionSettings) > 0;
+    SortByType := Pos(SETTING_SORT, OptionSettings) > 0;
+    ClearBackground := Pos(SETTING_CLEAR, OptionSettings) > 0;
+    Gradient := Pos(SETTING_GRADIENT, OptionSettings) > 0;
+    Hints := Pos(SETTING_HINTS, OptionSettings) > 0;
+    FixedDateRange := Pos(SETTING_FIXED, OptionSettings) > 0;
+    HighTime := 0;
+    LowTime := BIG_NUMBER;
+    FMStartDate := FM_START_DATE;
+    FMStopDate := FM_STOP_DATE;
+    if SortByType then SortColumn := 1 else SortColumn := 0;
+    DateRangeOutpatient := Piece(settings, '|', 9);
+    if DateRangeOutpatient = '' then DateRangeOutpatient := '8';
+    DateRangeInpatient := Piece(settings, '|', 10);
+    if DateRangeInpatient = '' then DateRangeInpatient := '8';
+    Turbo := Pos(SETTING_TURBO, OptionSettings) > 0;
+    if Piece(settings, '|', 6) = '0' then Turbo := false;  // a 0 in 6th piece shuts down turbo for everyone    
+  end;
+  Result := FGraphSetting;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uInit.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uInit.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uInit.pas	(revision 1676)
@@ -0,0 +1,184 @@
+unit uInit;
+
+interface
+
+uses
+  Forms, Windows, Messages, SysUtils, ExtCtrls, ORSystem;
+
+type
+{$IFDEF GroupEncounter}
+  TCPRSTimeoutTimerCondition = function: boolean;
+  TCPRSTimeoutTimerAction = procedure;
+{$ELSE}
+  TCPRSTimeoutTimerCondition = function: boolean of object;
+  TCPRSTimeoutTimerAction = procedure of object;
+{$ENDIF}
+
+procedure AutoUpdateCheck;
+
+procedure InitTimeOut(AUserCondition: TCPRSTimeoutTimerCondition;
+                      AUserAction: TCPRSTimeoutTimerAction);
+procedure UpdateTimeOutInterval(NewTime: Cardinal);
+function TimedOut: boolean;
+procedure ShutDownTimeOut;
+
+implementation
+
+uses
+  fTimeout;
+  
+type
+  TCPRSTimeoutTimer = class(TTimer)
+  private
+    FHooked: boolean;
+    FUserCondition: TCPRSTimeoutTimerCondition;
+    FUserAction: TCPRSTimeoutTimerAction;
+    uTimeoutInterval: Cardinal;
+    uTimeoutKeyHandle, uTimeoutMouseHandle: HHOOK;
+  protected
+    procedure ResetTimeout;
+    procedure timTimeoutTimer(Sender: TObject);
+  end;
+
+var
+  timTimeout: TCPRSTimeoutTimer = nil;
+  FTimedOut: boolean = FALSE;
+
+function TimeoutKeyHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; StdCall; forward;
+function TimeoutMouseHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; StdCall; forward;
+  
+procedure AutoUpdateCheck;
+const
+{$IFDEF GroupEncounter}
+  AppHelpFile = 'CPRSGE';
+{$ELSE}
+  AppHelpFile = 'CPRS';
+  WhatsThisHelpFile = 'CPRSWT';
+{$ENDIF}
+var
+  x, CPRSUpdate :string;
+
+begin
+  CPRSUpdate := RegReadStr(CPRS_REG_GOLD) + 'CPRSUpdate.exe';
+  if not FileExists(CPRSUpdate) then CPRSUpdate := 'CPRSUpdate.exe';
+  x := FullToPathPart(Application.ExeName) + AppHelpFile + '.HLP';
+  if AppOutOfDate(x) and FileExists(CPRSUpdate) then RunProgram(CPRSUpdate + ' XFER="' + x + '"');
+  x := FullToPathPart(Application.ExeName) + AppHelpFile + '.CNT';
+  if AppOutOfDate(x) and FileExists(CPRSUpdate) then RunProgram(CPRSUpdate + ' XFER="' + x + '"');
+  x := FullToPathPart(Application.ExeName) + WhatsThisHelpFile + '.HLP';
+  if AppOutOfDate(x) and FileExists(CPRSUpdate) then RunProgram(CPRSUpdate + ' XFER="' + x + '"');
+  x := FullToPathPart(Application.ExeName) + WhatsThisHelpFile + '.CNT';
+  if AppOutOfDate(x) and FileExists(CPRSUpdate) then RunProgram(CPRSUpdate + ' XFER="' + x + '"');
+  // Moved to CPRSUpdate.EXE in early test version of v27.  This code removed for CPRS v27.27.
+  //x := FullToPathPart(Application.ExeName) + 'BORLNDMM.DLL';
+  //if AppOutOfDate(x) and FileExists(CPRSUpdate) then RunProgram(CPRSUpdate + ' XFER="' + x + '"');
+end;
+
+{** Timeout Functions **}
+
+function TimeoutKeyHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
+{ this is called for every keyboard event that occurs while running CPRS }
+begin
+  if lParam shr 31 = 1 then timTimeout.ResetTimeout;                          // on KeyUp only
+  Result := CallNextHookEx(timTimeout.uTimeoutKeyHandle, Code, wParam, lParam);
+end;
+
+function TimeoutMouseHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
+{ this is called for every mouse event that occurs while running CPRS }
+begin
+  if (Code >= 0) and (wParam > WM_MOUSEFIRST) and (wParam <= WM_MOUSELAST)
+    then timTimeout.ResetTimeout;                                             // all click events
+  Result := CallNextHookEx(timTimeout.uTimeoutMouseHandle, Code, wParam, lParam);
+end;
+
+procedure InitTimeOut(AUserCondition: TCPRSTimeoutTimerCondition;
+                      AUserAction: TCPRSTimeoutTimerAction);
+begin
+  if(not assigned(timTimeout)) then
+  begin
+    timTimeOut := TCPRSTimeoutTimer.Create(Application);
+    with timTimeOut do
+    begin
+      OnTimer := timTimeoutTimer;
+      FUserCondition := AUserCondition;
+      FUserAction := AUserAction;
+      uTimeoutInterval    := 120000;  // initially 2 minutes, will get DTIME after signon
+      uTimeoutKeyHandle   := SetWindowsHookEx(WH_KEYBOARD, TimeoutKeyHook,   0, GetCurrentThreadID);
+      uTimeoutMouseHandle := SetWindowsHookEx(WH_MOUSE,    TimeoutMouseHook, 0, GetCurrentThreadID);
+      FHooked := TRUE;
+      Interval := uTimeoutInterval;
+      Enabled  := True;
+    end;
+  end;
+end;
+
+procedure UpdateTimeOutInterval(NewTime: Cardinal);
+begin
+  if(assigned(timTimeout)) then
+  begin
+    with timTimeout do
+    begin
+      uTimeoutInterval := NewTime;
+      Interval := uTimeoutInterval;
+      Enabled  := True;
+    end;
+  end;
+end;
+
+function TimedOut: boolean;
+begin
+  Result := FTimedOut;
+end;
+
+procedure ShutDownTimeOut;
+begin
+  if(assigned(timTimeout)) then
+  begin
+    with timTimeout do
+    begin
+      Enabled := False;
+      if(FHooked) then
+      begin
+        UnhookWindowsHookEx(uTimeoutKeyHandle);
+        UnhookWindowsHookEx(uTimeoutMouseHandle);
+        FHooked := FALSE;
+      end;
+    end;
+    timTimeout.Free;
+    timTimeout := nil;
+  end;
+end;
+
+
+{ TCPRSTimeoutTime }
+
+procedure TCPRSTimeoutTimer.ResetTimeout;
+{ this restarts the timer whenever there is a keyboard or mouse event }
+begin
+  Enabled  := False;
+  Interval := uTimeoutInterval;
+  Enabled  := True;
+end;
+
+procedure TCPRSTimeoutTimer.timTimeoutTimer(Sender: TObject);
+{ when the timer expires, the application is closed after warning the user }
+begin
+  Enabled := False;
+  if(assigned(FUserCondition)) then
+    FTimedOut := FUserCondition or AllowTimeout
+  else
+    FTimedOut := AllowTimeout;
+  if FTimedOut then
+  begin
+    if(assigned(FUserAction)) then FUserAction;
+  end
+  else
+    Enabled := True;
+end;
+
+initialization
+
+finalization
+  ShutDownTimeOut;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uOrPtf.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uOrPtf.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uOrPtf.pas	(revision 1676)
@@ -0,0 +1,77 @@
+unit uOrPtf;   //PRF
+
+interface
+
+uses SysUtils, Windows, Classes, Forms, ORFn, ORNet, uCore;
+
+Type
+  TPatientFlag = Class(TObject)
+  private
+    FFlagID:   string;
+    FName: string;
+    FNarr: TStringList;
+    FFlagIndex: integer;
+  public
+    property FlagID: string      read FFlagID  write FFlagID;
+    property Name:   string      read FName    write FName;
+    property Narr:   TStringList read FNarr    write FNarr;
+    property FlagIndex: integer  read FFlagIndex write FFlagIndex;
+    constructor Create;
+    procedure Clearup;
+  end;
+
+procedure HasActiveFlg(var FlagList: TStringList; var HasFlag: boolean; const PTDFN: string);
+function TriggerPRFPopUp(PTDFN: String): boolean;
+procedure GetActiveFlg(FlagInfo: TStrings; const PTDFN, FlagRecordID: string);
+procedure ClearFlag;
+
+implementation
+
+procedure HasActiveFlg(var FlagList: TStringList; var HasFlag: boolean; const PTDFN: string);
+begin
+  FlagList.Clear;
+  HasFlag := False;
+  CallV('ORPRF HASFLG',[PTDFN]);
+  if RPCBrokerV.Results.Count > 0 then
+  begin
+    FastAssign(RPCBrokerV.Results, FlagList);
+    HasFlag := True;
+  end;
+end;
+
+function TriggerPRFPopUp(PTDFN: String): boolean;
+begin
+  CallV('ORPRF TRIGGER POPUP',[PTDFN]);
+  Result := RPCBrokerV.Results[0] = '1';
+  RPCBrokerV.Results.Delete(0);
+end;
+
+procedure TPatientFlag.Clearup;
+begin
+  FFlagID := '0';
+  FName   := '';
+  FNarr.Clear;
+  FFlagIndex := -1;
+end;
+
+constructor TPatientFlag.Create;
+begin
+  FFlagID   := '0';
+  FName := '';
+  FNarr := TStringList.Create;
+  FFlagIndex := -1;
+end;
+
+procedure GetActiveFlg(FlagInfo: TStrings; const PTDFN, FlagRecordID: string);
+begin
+  CallV('ORPRF GETFLG', [PTDFN,FlagRecordID]);
+  if RPCBrokerV.Results.Count > 0 then
+    FastAssign(RPCBrokerV.Results, FlagInfo);
+end;
+
+procedure ClearFlag;
+begin
+  sCallV('ORPRF CLEAR',[nil]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uProbs.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uProbs.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uProbs.pas	(revision 1676)
@@ -0,0 +1,1351 @@
+unit uProbs;
+
+interface
+
+uses
+    SysUtils, Windows, Messages, Controls, Classes, StdCtrls, ORfn,
+    ORCtrls, Dialogs, Forms, Grids, graphics, ORNet, uConst, Vawrgrid;
+
+const
+  fComStart=4;
+  v:char = #254;
+  PL_OP_VIEW:char = 'C';
+  PL_IP_VIEW:char = 'S';
+  PL_UF_VIEW:char = 'U';
+  PL_CLINIC:char ='C';
+  PL_WARD:char='W';
+  ACTIVE_LIST_CAP='Active Problems';
+  INACTIVE_LIST_CAP='Inactive Problems';
+  BOTH_LIST_CAP= 'Active and Inactive Problems';
+  REMOVED_LIST_CAP='Removed Problems';
+
+type
+
+{Key/value -internal/external pairs}
+ TKeyVal=class(TObject)
+   Id:string;
+   name:string; {may want to use instead of id sometime}
+   intern:string;
+   extern:string;
+   internOrig:string;
+   externOrig:string;
+   function GetDHCPField:string;
+ public
+   procedure DHCPtoKeyVal(DHCPFld:String);
+   property DHCPField:string read GetDHCPField;
+ end;
+
+ TComment=class(TObject)
+   IFN:string;
+   Facility:string;
+   Narrative:string;
+   Status:String;
+   DateAdd:string;
+   AuthorID:string;
+   AuthorName:String;
+   StatusFlag:string; {used for processing adds/deletes}
+   function GetExtDateAdd:string;
+   function GetAge:boolean;
+   constructor Create(dhcpcom:string);
+   destructor Destroy; override;
+   function TComtoDHCPCom:string;
+   property ExtDateAdd:string read GetExtDateAdd;
+   property IsNew:boolean read GetAge;
+ end;
+
+  {patient qualifiers}
+ TPLPt=class(TObject)
+   PtVAMC:string;
+   PtDead:string;
+   PtBid:string;
+   PtServiceConnected:boolean;
+   PtAgentOrange:boolean;
+   PtRadiation:boolean;
+   PtEnvironmental:boolean;
+   PtHNC:boolean;
+   PtMST:boolean;
+   PtSHAD:boolean;
+   constructor Create(Alist:TStringList);
+   function GetGMPDFN(dfn:string;name:String):string;
+   function Today:string;
+ end;
+
+ { User params}
+ TPLUserParams=class(TObject)
+   usPrimeUser:Boolean; {GMPLUSER true if clinical entry, false if clerical}
+   usDefaultView:String;
+   usCurrentView:String; {what view does user currently have? (OP,IP,Preferred,Unfilterred)}
+   usVerifyTranscribed:Boolean; {authority to verify transcribed problems}
+   usPromptforCopy:boolean;
+   usUseLexicon:boolean; {user will be using Lexicon}
+   usReverseChronDisplay:Boolean;
+   usViewAct:String; {viewing A)ctive, I)nactive, B)oth, R)emoved problems}
+   usViewProv:String; {prov (ptr #200) of  displayed list or 0 for all}
+   usService:String; {user's service/section}
+   {I can't see where either of the ViewClin or ViewServ vals are setup in the
+    M application. They are documented in the PL V2.0 tech manual though}
+   usViewServ:string; {should be a list of ptr to file 49, format ptr/ptr/...}
+   usViewClin:string; {should be a list of ptr to file 44, format ptr/ptr/...}
+   usViewComments: string;
+   usDefaultContext: string;
+   usTesting:boolean; {used for test purposes only}
+   usClinList:TstringList;
+   usServList:TstringList;
+   constructor Create(alist:TstringList);
+   destructor Destroy; override;
+ end;
+
+ {filter lists}
+ TPLFilters = class(TObject)
+   ProviderList:TstringList;
+   ClinicList:TstringList;
+   ServiceList:TStringList;
+   constructor create;
+   destructor Destroy; override;
+ end;
+
+{problem record}
+ TProbRec = class(TObject)
+ private
+   fNewrec:Tstringlist;
+   fOrigRec:TStringList;
+   fPIFN:String;
+   fDiagnosis:Tkeyval; {.01}
+   fModDate:TKeyVal;   {.03}
+   fNarrative:TKeyVal; {.05}
+   fEntDate:TKeyVal;   { .08}
+   fStatus:TKeyVal;    {.12}
+   fOnsetDate:TKeyVal; {.13}
+   fProblem:TKeyVal;   {1.01}
+   fCondition:TKeyVal;  {1.02}
+   fEntBy:TKeyVal;      {1.03}
+   fRecBy:TKeyVal;      {1.04}
+   fRespProv:TKeyVal;   {1.05}
+   fService:TKeyVal;     {1.06}
+   fResolveDate:TKeyVal; {1.07}
+   fClinic:TKeyVal;      {1.08}
+   fRecordDate:TKeyVal;  {1.09}
+   fServCon:TKeyVal;     {1.1}
+   fAOExposure:TKeyVal;  {1.11}
+   fRadExposure:TKeyVal; {1.12}
+   fGulfExposure:TKeyVal; {1.13}
+   fPriority:TKeyVal;     {1.14}
+   fHNC:TKeyVal;          {1.15}
+   fMST:TKeyVal;          {1.16}
+   fCV:TKeyVal;           {1.17}  // this is not used  value is always NULL
+   fSHAD:TKeyVal;         {1.18}
+   fFieldList:TstringList; {list of fields by name and class (TKeyVal or TComment)}
+   fFilerObj:TstringList;
+   fCmtIsXHTML: boolean;
+   fCmtNoEditReason: string;
+   Procedure LoadField(Fldrec:TKeyVal;Id:String;name:string);
+   Procedure CreateFields;
+   procedure LoadComments;
+   procedure SetDate(datefld:TKeyVal;dt:TDateTime);
+   function GetModDate:TDateTime;
+   procedure SetModDate(value:TDateTime);
+   function GetEntDate:TDateTime;
+   procedure SetEntDate(value:TDateTime);
+   procedure SetOnsetDate(value:TDateTime);
+   function GetOnsetDate:TDateTime;
+   Function GetSCProblem:Boolean;
+   Procedure SetSCProblem(value:Boolean);
+   Function GetAOProblem:Boolean;
+   Procedure SetAOProblem(value:Boolean);
+   Function GetRADProblem:Boolean;
+   Procedure SetRADProblem(value:Boolean);
+   Function GetENVProblem:Boolean;
+   Procedure SetENVProblem(value:Boolean);
+   Function GetHNCProblem:Boolean;
+   Procedure SetHNCProblem(value:Boolean);
+   Function GetMSTProblem:Boolean;
+   Procedure SetMSTProblem(value:Boolean);
+   Function GetSHADProblem:Boolean;
+   Procedure SetSHADProblem(value:Boolean);
+   function GetStatus:String;
+   procedure SetStatus(value:String);
+   function GetPriority:String;
+   procedure SetPriority(value:String);
+   function GetRESDate:TDateTime;
+   procedure SetRESDate(value:TDateTime);
+   function GetRECDate:TDateTime;
+   procedure SetRECDate(value:TDateTime);
+   procedure SetNarrative(value:TKeyVal);
+   function GetTDateTime(dt:string):TDateTime;
+   function GetFilerObject:TstringList;
+   function GetAltFilerObject:TstringList;
+   function GetCommentCount:integer;
+   Procedure EraseComments(clist:TList);
+   function GetModDatstr:string;
+   procedure SetModDatStr(value:string);
+   function GetEntDatstr:string;
+   procedure SetEntDatStr(value:string);
+   function GetOnsetDatstr:string;
+   procedure SetOnsetDatStr(value:string);
+   function GetResDatstr:string;
+   procedure SetResDatStr(value:string);
+   function GetRecDatstr:string;
+   procedure SetRecDatStr(value:string);
+   procedure SetDateString(df:TKeyVal;value:string);
+   function GetCondition:string;
+   procedure SetCondition(value:String);
+ public
+   fComments:TList; {comments}
+   procedure AddNewComment(Txt:string);
+   function FieldChanged(fldName:string):Boolean;
+   constructor Create(AList:TstringList);
+   destructor Destroy;override;
+   property RawNewRec:TstringList read fNewRec;
+   property RawOrigRec:TStringList read fOrigRec;
+   property DateModified:TDateTime read GetModDate write SetModDate;
+   property DateModStr:string read GetModDatStr write SetModDatStr;
+   property DateEntered:TDateTime read GetEntDate write SetEntDate;
+   property DateEntStr:string read GetEntDatStr write SetEntDatStr;
+   property DateOnset:TDateTime read GetOnsetDate write SetOnsetDate;
+   property DateOnsetStr:string read GetOnsetDatStr write SetOnsetDatStr;
+   property SCProblem:Boolean read GetSCProblem write SetSCProblem;
+   property AOProblem:Boolean read GetAOProblem write SetAOProblem;
+   property RADProblem:Boolean read GetRadProblem write SetRADProblem;
+   property ENVProblem:Boolean read GetENVProblem write SetENVProblem;
+   property HNCProblem:Boolean read GetHNCProblem write SetHNCProblem;
+   property MSTProblem:Boolean read GetMSTProblem write SetMSTProblem;
+   property SHADProlem:Boolean read GetSHADProblem write SetSHADProblem;
+   property Status:String read GetStatus write SetStatus;
+   property Narrative:TKeyVal read fNarrative write SetNarrative;
+   property Diagnosis:TKeyVal read fDiagnosis write fDiagnosis;
+   property Problem:TKeyVal read fProblem write fProblem;
+   property RespProvider:TKeyVal read fRespProv write fRespProv;
+   property EnteredBy:TKeyVal read fEntBy write fEntBy;
+   property RecordedBy:TKeyVal read fRecBy write fRecBy;
+   property Service:TKeyVal read fService write fService;
+   property Clinic:TKeyVal read fClinic write fClinic;
+   property DateResolved:TDateTime read GetResDate write SetResdate;
+   property DateResStr:string read GetResDatStr write SetResDatStr;
+   property DateRecorded:TDateTime read GetRecDate write SetRecdate;
+   property DateRecStr:string read GetRecDatStr write SetRecDatStr;
+   property Priority:string read GetPriority write SetPriority;
+   property Comments:TList read fComments write fComments;
+   property Condition:string read GetCondition write SetCondition;
+   property CommentCount:integer read GetCommentCount;
+   property FilerObject:TstringList read GetFilerObject;
+   property AltFilerObject:TstringList read GetAltFilerObject;
+   property PIFN:string read fPIFN write fPIFN;
+   property CmtIsXHTML: boolean read fCmtIsXHTML;
+   property CmtNoEditReason: string read fCmtNoEditReason;
+ end;
+
+var
+  ProbRec       :TProbRec;
+  PLPt          :TPLPt;
+  PLUser        :TPLUserParams;
+  pProviderID   :int64; {this is provider reviewing record, not resp provider}
+  pProviderName :string; {ditto}
+  PLFilters     :TPLFilters;
+  PLProblem     :string; {this is problem selected from lexicon lookup form}
+
+procedure GetListforIP(Alist:TstringList; AGrid: TCaptionListBox);
+procedure GetListforOP(Alist:TstringList; AGrid: TCaptionListBox);
+procedure LoadFilterList(Alist:TstringList;DestList:TstringList);
+procedure ShowFilterStatus(s: string);
+procedure InitViewFilters(Alist:TstringList);
+procedure SetViewFilters(Alist:TStringList);
+Function DateStringOK(ds:string):string;
+Function StripSpace(str:string):string;
+function ByProvider:String;
+function ForChars(Num, FontWidth: Integer): Integer;
+procedure GetFontInfo(AHandle: THandle; var FontWidth, FontHeight: Integer);
+function ShortDateStrToDate(shortdate: string): string ;
+//function NewComment: string    ;
+//function EditComment(OldValue: string): string ;
+function FixQuotes(Instring: string): string;
+
+implementation
+
+uses
+  rCore, uCore;//, fProbCmt;
+
+const
+  Months: array[1..12] of string[3] = ('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
+
+{------------------- TKeyVal Class -----------------}
+function TKeyVal.GetDHCPField:string;
+begin
+  result := intern + u + extern;
+end;
+
+procedure TKeyVal.DHCPtoKeyVal(DHCPFld:String);
+begin
+  intern := Piece(DHCPFld,u,1);
+  extern := Piece(DHCPFLd,u,2);
+end;
+
+{------------------- TComment Class ----------------}
+constructor TComment.Create(dhcpcom:string);
+begin
+  {create and instantiate a Tcomment object}
+  IFN:=Piece(dhcpcom,u,1);
+  Facility:=Piece(dhcpcom,u,2);
+  Narrative:=Piece(dhcpcom,u,3);
+  Status:=Piece(dhcpcom,u,4);
+  DateAdd:=Piece(dhcpcom,u,5);
+  AuthorID:=Piece(dhcpcom,u,6);
+  AuthorName:=Piece(dhcpcom,u,7);
+  StatusFlag:='';
+end;
+
+destructor TComment.Destroy;
+begin
+  inherited destroy;
+end;
+
+function TComment.TComtoDHCPCom:string;
+begin
+  Narrative := FixQuotes(Narrative);
+  if uppercase(IFN)='NEW' then {new note}
+    result := Narrative
+  else {potential edit of existing note}
+    result := IFN + u + Facility + u + Narrative + u +
+            Status + u + DateAdd + u + AuthorID; {leave off author name}
+end;
+
+function TComment.GetExtDateAdd:String;
+begin
+  result := FormatFMDateTime('mmm dd yyyy',StrToFloat(DateAdd)) ;
+end;
+
+function TComment.Getage:boolean;
+begin
+  result := uppercase(IFN)='NEW';
+end;
+
+{-------------------------- TPLPt Class ----------------------}
+constructor TPLPt.Create(Alist:TStringList);
+var
+  i: integer;
+begin
+  for i := 0 to AList.Count - 1 do
+    case i of
+      0: PtVAMC             := copy(Alist[i],1,999);
+      1: PtDead             := AList[i];
+      2: PtServiceConnected := (AList[i] = '1');
+      3: PtAgentOrange      := (AList[i] = '1');
+      4: PtRadiation        := (AList[i] = '1');
+      5: PtEnvironmental    := (AList[i] = '1');
+      6: PtBID              := Alist[i];
+      7: PtHNC              := (AList[i] = '1');
+      8: PtMST              := (AList[i] = '1');
+     //9:CombatVet   Not tracked in Problem list
+      10: PtSHAD             := (AList[i] = '1');
+    end;
+end;
+
+function TPLPt.GetGMPDFN(dfn:string;name:string):string;
+begin
+  result := dfn + u + name + u + PtBID + u + PtDead
+end;
+
+function TPLPt.Today:string;
+{returns string in DHCP^mmm dd yyyy format}
+begin
+  result := Piece(FloatToStr(FMToday),'.',1) + u + FormatFMDateTime('mmm dd yyyy',FMToday) ;
+end;
+
+{-------------------- TUserParams -------------------------------}
+constructor TPLUserParams.create(alist:TstringList);
+var
+  p:string;
+  i:integer;
+begin
+  usPrimeUser           := false;
+  usDefaultView         := '';
+  usVerifyTranscribed   := True;   // SHOULD DEFAULT BE FALSE???
+  usPromptforCopy       := false;
+  usUseLexicon          := false;
+  usReverseChronDisplay := true;
+  usViewAct             := 'A';
+  usViewProv            := '0^All';
+  usService             := '';
+  usViewcomments        := '0';
+  usClinList            := TstringList.create;
+  usServList            := TstringList.create;
+  if alist.count=0 then exit;  {BAIL OUT IF LIST EMPTY}
+  //usPrimeUser           := False;  {for testing}
+  usPrimeUser           := (alist[0]='1');
+  usDefaultView         := alist[1];
+  if usDefaultView = '' then
+    begin
+      if Patient.Inpatient then usDefaultView := PL_IP_VIEW
+      else usDefaultView := PL_OP_VIEW;
+    end;
+  usVerifyTranscribed   := (alist[2]='1');
+  usPromptforCopy       := (alist[3]='1');
+  //usUseLexicon          := False;  {for testing}
+  usUseLexicon          := (alist[4]='1');
+  usReverseChronDisplay := (alist[5]='1');
+  usViewAct             := alist[6];
+  usViewProv            := alist[7];
+  usService             := alist[8];
+  usViewServ            := alist[9];
+  usViewClin            := alist[10];
+  usTesting             := (alist[11]<>'');
+  usViewComments        := AList[12];
+  usCurrentView         := usDefaultView;
+  usDefaultContext      := ';;' + usViewAct + ';' + usViewComments + ';' + Piece(usViewProv, U, 1);
+  if usViewClin <> '' then
+    begin
+      i := 1;
+      repeat
+        begin
+          p := Piece(usViewClin,'/',i);
+          inc(i);
+          if p <> '' then usClinList.add(p);
+        end;
+      until p = '';
+    end;
+  if usViewServ <> '' then
+    begin
+      i := 1;
+      repeat
+        begin
+          p := Piece(usViewServ,'/',i);
+          inc(i);
+          if p <> '' then usServList.add(p);
+        end;
+      until p = '';
+    end;
+end;
+
+destructor TPLUserParams.Destroy;
+begin
+  usClinList.free;
+  usServList.free;
+  inherited destroy;
+end;
+
+{-------------------- TPLFilters -------------------}
+constructor TPLFilters.Create;
+begin
+  ProviderList := TstringList.create;
+  ClinicList   := TstringList.create;
+  ServiceList  := TStringList.create;
+end;
+
+destructor  TPLFilters.destroy;
+begin
+  ProviderList.free;
+  ClinicList.Free;
+  ServiceList.Free;
+  inherited destroy;
+end;
+
+{------------------ TProbRec -----------------------}
+constructor TProbRec.create(AList:TstringList);
+var
+  i: integer;
+begin
+  fFieldList := TstringList.create;
+  fFilerObj := TStringList.Create;
+  fNewRec := TstringList.create;
+  for i := 0 to Pred(Alist.count) do
+    if copy(Alist[i],1,3) = 'NEW' then fNewRec.add(Alist[i]);
+  fOrigRec := TStringList.Create;
+  for i := 0 to pred(Alist.count) do
+    if copy(Alist[i],1,3) = 'ORG' then fOrigRec.add(Alist[i]);
+  CreateFields;
+  {names selected to agree with subscripts of argument array to callable
+   entrypoints in ^GMPUTL where possible.}
+  LoadField(fDiagnosis,'.01','DIAGNOSIS');
+  LoadField(fModDate,'.03','MODIFIED');
+  LoadField(fNarrative,'.05','NARRATIVE');
+  LoadField(fEntDate,'.08','ENTERED');
+  LoadField(fStatus,'.12','STATUS');
+  LoadField(fOnsetDate,'.13','ONSET');
+  LoadField(fProblem,'1.01','LEXICON');
+  LoadField(fCondition,'1.02','CONDITION');
+  LoadField(fEntBy,'1.03','ENTERER');
+  LoadField(fRecBy,'1.04','RECORDER');
+  LoadField(fRespProv,'1.05','PROVIDER');
+  LoadField(fService,'1.06','SERVICE');
+  LoadField(fResolveDate,'1.07','RESOLVED');
+  LoadField(fClinic,'1.08','LOCATION');
+  LoadField(fRecordDate,'1.09','RECORDED');
+  LoadField(fServCon,'1.1','SC');
+  LoadField(fAOExposure,'1.11','AO');
+  LoadField(fRadExposure,'1.12','IR');
+  LoadField(fGulfExposure,'1.13','EC');
+  LoadField(fPriority,'1.14','PRIORITY');
+  LoadField(fHNC,'1.15','HNC');
+  LoadField(fMST,'1.16','MST');
+  LoadField(fMST,'1.17','CV');   // not used at this time
+  LoadField(fSHAD,'1.18','SHD');
+  LoadComments;
+end;
+
+destructor TProbRec.destroy;
+begin
+  fOrigRec.free;
+  fNewrec.free;
+  fDiagnosis.free;
+  fModDate.free;
+  fNarrative.free;
+  fEntDate.free;
+  fStatus.free;
+  fOnsetDate.free;
+  fProblem.free;
+  fCondition.free;
+  fRespProv.free;
+  fEntBy.free;
+  fRecBy.Free;
+  fService.free;
+  fResolveDate.free;
+  fClinic.free;
+  fRecordDate.free;
+  fServCon.free;
+  fAOExposure.free;
+  fRadExposure.free;
+  fGulfExposure.free;
+  fPriority.free;
+  fHNC.free;
+  fMST.free;
+  fFieldList.free;
+  fFilerObj.free;
+  EraseComments(fComments);
+  fComments.free;
+  inherited Destroy;
+end;
+
+procedure TProbRec.EraseComments(clist:TList);
+var
+  i:integer;
+begin
+  if clist.count>0 then
+    begin
+      for i:=0 to pred(clist.count) do
+        TComment(clist[i]).free;
+    end;
+end;
+
+procedure TProbRec.CreateFields;
+begin
+  fDiagnosis:=TKeyVal.create;
+  fModDate:=TKeyVal.create;
+  fNarrative:=TKeyVal.create;
+  fEntDate:=TKeyVal.create;
+  fStatus:=TKeyVal.create;
+  fOnsetDate:=TKeyVal.create;
+  fProblem:=TKeyVal.create;
+  fCondition:=TKeyVal.create;
+  fEntBy:=TKeyVal.create;
+  fRecBy:=TKeyVal.create;
+  fRespProv:=TKeyVal.create;
+  fService:=TKeyVal.create;
+  fResolveDate:=TKeyVal.create;
+  fClinic:=TKeyVal.create;
+  fRecordDate:=TKeyVal.create;
+  fServCon:=TKeyVal.create;
+  fAOExposure:=TKeyVal.create;
+  fRadExposure:=TKeyVal.create;
+  fGulfExposure:=TKeyVal.create;
+  fPriority:=TKeyVal.create;
+  fHNC:=TKeyVal.create;
+  fMST:=TKeyVal.create;
+  fCV := TKeyVal.create;
+  fSHAD:=TKeyVal.Create;
+  fComments:=TList.create;
+end;
+
+procedure TProbRec.LoadField(Fldrec:TKeyVal;Id:String;name:string);
+var
+  i:integer;
+  fldval:string;
+
+  function GetOrigVal(id:string):string;
+  var
+    i:integer;
+  begin
+    i := 0;
+    Result := '^';
+    if fOrigRec.count = 0 then exit;
+    while (i < fOrigRec.Count) and (Piece(fOrigRec[i],v,2)<>id) do inc(i);
+    if i = fOrigRec.Count then exit;
+    if Piece(fOrigRec[i],v,2) = id then Result := Piece(fOrigRec[i],v,3)
+  end;
+
+begin
+  i := -1;
+  repeat
+   inc(i);
+  until (Piece(fNewRec[i],v,2) = id) or (i = Pred(fNewRec.count));
+  if Piece(fNewrec[i],v,2) = id then
+    fldVal := Piece(fNewrec[i],v,3)
+  else
+    fldVal := '^';
+  fldRec.id := id;
+  fldrec.name := name;
+  fldRec.intern := Piece(fldVal,'^',1);
+  fldRec.extern := Piece(fldval,'^',2);
+  {get the original values for later comparison}
+  fldVal := GetOrigVal(id);
+  fldRec.internOrig := Piece(fldVal,'^',1);
+  fldRec.internOrig := Piece(fldVal,'^',2);
+  {add this field to list}
+  fFieldList.addobject(id,fldrec);
+end;
+
+procedure TProbrec.LoadComments;
+var
+  i,j:integer;
+  cv, noedit:string;
+  co:TComment;
+  first:boolean;
+begin
+  j := 1; {first comment must be 1 or greater}
+  first := true;
+  for i := 0 to Pred(fNewRec.count) do
+    begin
+      if Piece(Piece(fNewRec[i],v,2),',',1) = '10' then
+        begin
+          if first then {the first line is just a counter}
+            begin
+              first := false;
+              // 'NEWþ10,0þ-1^These notes are now in XHTML format and must be modified via CPRS-R.'
+              noedit := Piece(fNewRec[i], v, 3);
+              if Piece(noedit, U, 1) = '-1' then
+                begin
+                  fCmtIsXHTML := TRUE;
+                  fCmtNoEditReason := Piece(noedit, U, 2);
+                end
+              else
+                begin
+                  fCmtIsXHTML := FALSE;
+                  fCmtNoEditReason := '';
+                end;
+            end
+          else
+            begin
+              cv := Piece(fNewRec[i],v,3);
+              co := TComment.Create(cv);
+              fComments.add(co); {put object in list}
+              fFieldList.addObject('10,' + inttostr(j),co);
+              inc(j);
+            end;
+        end;
+    end;
+end;
+
+function TProbRec.GetCommentCount:integer;
+begin
+  result := fComments.count;
+end;
+
+procedure TProbRec.AddNewComment(Txt:string);
+var
+  cor:TComment;
+begin
+  cor := TComment.create('NEW^^' + txt + '^A^' + FloatToStr(FMToday) + '^' + IntToStr(User.DUZ));
+  fComments.add(cor);
+  fFieldList.addObject('10,"NEW",' + inttostr(fComments.count),cor);
+end;
+
+function TProbrec.GetModDate:TDateTime;
+var
+  dt:string;
+begin
+  dt := fModDate.extern;
+  result := GetTDateTime(dt);
+end;
+
+procedure TProbrec.SetModDate(value:TDateTime);
+begin
+  SetDate(fModDate,value);
+end;
+
+function TProbRec.GetModDatstr:string;
+begin
+  result := fModdate.extern;
+end;
+
+procedure TProbRec.SetModDatStr(value:String);
+begin
+  SetDateString(fModDate,value);
+end;
+
+procedure TProbRec.SetDateString(df:TKeyVal;value:string);
+var
+  {c:char;
+  days:longint;}
+  fmresult: double ;
+begin
+  {try  }
+  if (value = '') then
+    begin
+      df.Intern := '';
+      df.Extern := '';
+    end
+  else
+    begin
+      fmresult := StrToFMDateTime(value) ;
+      if fmresult = -1 then
+        begin
+          df.intern := '0';
+          df.extern := '';
+        end
+      else
+        begin
+          df.intern := Piece(FloatToStr(fmresult),'.',1);
+          df.extern := FormatFMDateTime('mmm dd yyyy',fmresult);
+        end ;
+    end;
+end;
+
+function  TProbrec.GetEntDate:TDateTime;
+var
+  dt:string;
+begin
+  dt := fEntDate.extern;
+  result := GetTDateTime(dt);
+end;
+
+procedure TProbrec.SetEntDate(value:TDateTime);
+begin
+  SetDate(fEntDate,value);
+end;
+
+function TProbRec.GetEntDatstr:string;
+begin
+  result:=fEntdate.extern;
+end;
+
+procedure TProbRec.SetEntDatStr(value:String);
+begin
+  SetDateString(fEntDate,value);
+end;
+
+function  TProbrec.GetOnsetDate:TDateTime;
+var
+  dt:string;
+begin
+  dt := fOnsetDate.extern;
+  result := GetTDateTime(dt);
+end;
+
+procedure TProbrec.SetOnsetDate(value:TDateTime);
+begin
+  SetDate(fOnsetDate,value);
+end;
+
+function TProbRec.GetOnsetDatstr:string;
+begin
+  result := fOnsetdate.extern;
+end;
+
+procedure TProbRec.SetOnsetDatStr(value:String);
+begin
+  SetDateString(fOnsetDate,value);
+end;
+
+procedure TProbrec.SetDate(datefld:TKeyVal;dt:TDateTime);
+begin
+  datefld.extern := DatetoStr(dt);
+  datefld.intern := FloatToStr(DateTimetoFMDateTime(dt));
+end;
+
+function TProbrec.GetSCProblem:Boolean;
+begin
+  result := (fServCon.Intern='1');
+end;
+
+function TProbRec.GetCondition:string;
+begin
+  result := fCondition.Intern;
+end;
+
+procedure TProbRec.SetCondition(value:string);
+begin
+  if (uppercase(value[1])='T') or (value='1') then
+    begin
+      fCondition.intern := 'T';
+      fCondition.extern := 'Transcribed';
+    end
+  else if (uppercase(value[1]) = 'P') or (value = '0') then
+    begin
+      fCondition.intern := 'P';
+      fCondition.extern := 'Permanent';
+    end
+  else if uppercase(value[1]) = 'H' then
+    begin
+      fCondition.intern := 'H';
+      fCondition.extern := 'Hidden';
+    end;
+end;
+
+procedure TProbRec.SetSCProblem(value:Boolean);
+begin
+  if value = true then
+    begin
+      fServCon.intern := '1';
+      fServCon.Extern := 'YES';
+    end
+  else
+    begin
+      fServCon.intern := '0';
+      fServCon.Extern := 'NO';
+    end;
+end;
+
+function  TProbrec.GetAOProblem:Boolean;
+begin
+  result := (fAOExposure.Intern='1');
+end;
+
+procedure TProbRec.SetAOProblem(value:Boolean);
+begin
+  if value = true then
+    begin
+      fAOExposure.intern := '1';
+      fAOExposure.extern := 'Yes';
+    end
+  else
+    begin
+      fAOExposure.intern := '0';
+      fAOExposure.extern := 'No';
+    end;
+end;
+
+function  TProbrec.GetRADProblem:Boolean;
+begin
+  result := (fRADExposure.Intern = '1');
+end;
+
+procedure TProbRec.SetRADProblem(value:Boolean);
+begin
+  if value = true then
+    begin
+      fRADExposure.intern := '1';
+      fRADExposure.extern := 'Yes';
+    end
+  else
+    begin
+      fRADExposure.intern := '0';
+      fRADExposure.extern := 'No';
+    end;
+ end;
+
+function TProbrec.GetENVProblem:Boolean;
+begin
+  result := (fGulfExposure.Intern = '1');
+end;
+
+procedure TProbRec.SetENVProblem(value:Boolean);
+begin
+  if value = true then
+    begin
+      fGulfExposure.intern := '1';
+      fGulfExposure.extern := 'Yes';
+    end
+  else
+    begin
+      fGulfExposure.intern := '0';
+      fGulfExposure.extern := 'No';
+    end;
+ end;
+
+function TProbrec.GetHNCProblem:Boolean;
+begin
+  result := (fHNC.Intern = '1');
+end;
+
+procedure TProbRec.SetHNCProblem(value:Boolean);
+begin
+  if value = true then
+    begin
+      fHNC.intern := '1';
+      fHNC.extern := 'Yes';
+    end
+  else
+    begin
+      fHNC.intern := '0';
+      fHNC.extern := 'No';
+    end;
+ end;
+
+function TProbrec.GetMSTProblem:Boolean;
+begin
+  result := (fMST.Intern = '1');
+end;
+
+procedure TProbRec.SetMSTProblem(value:Boolean);
+begin
+  if value = true then
+    begin
+      fMST.intern := '1';
+      fMST.extern := 'Yes';
+    end
+  else
+    begin
+      fMST.intern := '0';
+      fMST.extern := 'No';
+    end;
+ end;
+
+function TProbrec.GetSHADProblem:boolean;
+begin
+    result := (fSHAD.intern ='1');
+end;
+
+procedure TProbRec.SetSHADProblem(value:boolean);
+begin
+    if value = true then
+      begin
+        fSHAD.intern := '1';
+        fSHAD.extern := 'Yes';
+      end
+    else
+      begin
+        fSHAD.intern := '0';
+        fSHAD.extern := 'No';
+      end;
+end;
+
+function TProbRec.GetStatus:String;
+begin
+  result := Uppercase(fStatus.intern);
+end;
+
+procedure TProbRec.SetStatus(value:String);
+begin
+  if (UpperCase(Value) = 'ACTIVE') or (Uppercase(value) = 'A') then
+    begin
+      fStatus.intern := 'A';
+      fStatus.extern := 'ACTIVE';
+    end
+  else
+    begin
+      fStatus.intern := 'I';
+      fStatus.extern := 'INACTIVE';
+    end;
+end;
+
+function TProbRec.GetPriority:String;
+begin
+  result := Uppercase(fPriority.intern);
+end;
+
+procedure TProbRec.SetPriority(value:String);
+begin
+  if (UpperCase(Value) = 'ACUTE') or (Uppercase(value) = 'A') then
+    begin
+      fPriority.intern := 'A';
+      fPriority.extern := 'ACUTE';
+    end
+  else
+    begin
+      fPriority.intern := 'C';
+      fPriority.extern := 'CHRONIC';
+    end;
+end;
+
+function  TProbrec.GetResDate:TDateTime;
+var
+  dt:string;
+begin
+  dt := fResolveDate.extern;
+  result := GetTDateTime(dt);
+end;
+
+procedure TProbrec.SetResDate(value:TDateTime);
+begin
+  SetDate(fResolveDate,value);
+end;
+
+function TProbRec.GetResDatstr:string;
+begin
+  result := fResolvedate.extern;
+end;
+
+procedure TProbRec.SetResDatStr(value:String);
+begin
+  SetDateString(fResolveDate,value);
+end;
+
+function TProbrec.GetRecDate:TDateTime;
+var
+  dt:string;
+begin
+  dt := fRecordDate.extern;
+  result := GetTDateTime(dt);
+end;
+
+procedure TProbrec.SetRecDate(value:TDateTime);
+begin
+  SetDate(fRecordDate,value);
+end;
+
+function TProbRec.GetRecDatstr:string;
+begin
+  result := fRecordDate.extern;
+end;
+
+procedure TProbRec.SetRecDatStr(value:String);
+begin
+  SetDateString(fRecordDate,value);
+end;
+
+procedure TProbRec.SetNarrative(value:TKeyVal);
+begin
+  if (value.intern = '') or (value.extern = '') then
+    begin
+      InfoBox('Both internal and external values required', 'Error', MB_OK or MB_ICONERROR);
+      exit;
+    end;
+  fNarrative.intern := value.intern;
+  fNarrative.extern := value.extern;
+end;
+
+function TProbRec.GetTDateTime(dt:string):TDateTime;
+begin
+  try
+    if dt = '' then result := 0 else result := StrtoDate(dt);
+  except on exception do
+    result := 0;
+  end;
+end;
+
+{--------------------------------- Filer Objects -------------------------}
+
+function TProbRec.GetFilerObject:TstringList;
+{return array for filing in dhcp}
+var
+  i:integer;
+  fldID,fldVal: string;
+begin
+  fFilerObj.clear;
+  for i := 0 to pred(fFieldList.count) do
+    begin
+      fldID := fFieldList[i];
+      if pos(',',fldID)>0 then {is a comment field}
+        fldVal := TComment(fFieldList.objects[i]).TComtoDHCPCom
+      else {is a regular field}
+        begin
+          if fldID = '1.02' then {have to make exception for CONDITION field}
+            fldVal := TKeyVal(fFieldList.objects[i]).intern
+          else
+            fldVal := FixQuotes(TKeyVal(fFieldList.objects[i]).DHCPField);
+        end;
+      fFilerObj.add('GMPFLD(' + fldID + ')="' + fldVal + '"');
+    end;
+  fFilerObj.add('GMPFLD(10,0)="' + inttostr(fComments.count) + '"');
+   {now get original fields}
+  for i := 0 to pred(fOrigRec.count) do
+    begin
+      fldVal  := fOrigRec[i];
+      fldID   := Piece(fldVal,v,2);
+      fldVal  := FixQuotes(Piece(fldVal,v,3));
+      fFilerObj.add('GMPORIG(' + fldID + ')="' + fldVal + '"');
+    end;
+  result := fFilerObj;
+end;
+
+function TProbRec.GetAltFilerObject:TstringList;
+{return array for filing in dhcp via UPDATE^GMPLUTL}
+{NOTES:
+  - leave narrative out, looks like inclusion causes new entry
+  - Date recorded (1.09) is non-editable, causes error if present}
+var
+  i: integer;
+  fldID,fldVal: string;
+begin
+  fFilerObj.Clear;
+  for i := 0 to pred(fFieldList.count) do
+    begin
+      fldID := fFieldList[i];                      
+      if pos(u + fldID + u, '^.01^.12^.13^1.01^1.05^1.07^1.08^1.1^1.11^1.12^1.13^1.15^1.16^1.18') > 0 then
+        {is a field eligible for update}
+        begin
+          fldVal := TKeyVal(fFieldList.objects[i]).intern;
+          fFilerObj.add('ORARRAY("' + TkeyVal(fFieldList.objects[i]).Name + '")="' + fldVal + '"');
+        end;
+    end;
+  fFilerObj.add('ORARRAY("PROBLEM")="' + fPIFN + '"');
+  result := fFilerObj;
+end;
+
+function TProbRec.FieldChanged(fldName:string):boolean;
+var
+  i: integer;
+begin
+  i := -1;
+  repeat
+    inc(i);
+  until (TKeyVal(fFieldList.objects[i]).name = fldName) or
+        (i=Pred(fFieldList.count));
+  if (TKeyVal(fFieldList.objects[i]).name = fldName) and
+     (TKeyVal(fFieldList.objects[i]).intern = TKeyVal(fFieldList.objects[i]).internOrig) then
+    Result := false
+  else
+    Result := true;
+end;
+
+{----------------------------------- Check Date -------------------------------}
+
+function DateStringOK(ds: string): string;
+var
+  fmresult: double ;
+begin
+  ds := StripSpace(ds);
+  result := ds;
+  if ds = '' then exit;
+  if Copy(ds,1,1) = ',' then ds := Copy(ds, 2, 99) ;
+  fmresult := StrToFMDateTime(ds) ;
+  if fmresult = -1 then
+    result := 'ERROR'
+  else
+    result := FormatFMDateTime('mmm dd yyyy',fmresult) ;
+end;
+
+function StripSpace(str: string): string;
+var
+  i,j: integer;
+begin
+  i := 1;
+  j := length(str);
+  while str[i] = #32 do inc(i);
+  while str[j] = #32 do dec(j);
+  result := copy(str, i, j-i+1);
+end;
+
+{-------------------- procedures used in View Filters ----------------------}
+
+procedure GetListforIP(Alist:TstringList; AGrid: TCaptionListBox);
+var
+  i:integer;
+  sv:string;
+  anon:boolean;
+begin
+  anon:=false;
+  with AGrid do
+    for i := 0 to pred(items.count) do
+      begin
+        //pt := cells[12,i];
+          {location type is ward, or no clinic and service is non nil}
+        {if (pt = PL_WARD) or ((cells[10,i] = '') and (cells[11,i] <> '')) then
+          begin }
+            sv := Piece( items[i], U, 12);
+            if sv <> '' then
+              begin
+                if Alist.indexof(sv) < 0 then Alist.add(sv);
+              end
+            else if (sv = '')  and (not anon) then
+              begin
+                Alist.add('-1^<None recorded>');
+                anon := true;
+              end;
+          //end;
+      end;
+end;
+
+Procedure GetListforOP(Alist:TstringList; AGrid: TCaptionListBox);
+var {get list of extant clinics from patient's problem list}
+  i: integer;
+  clin: string;
+  anon: boolean;
+begin
+  anon := false;
+  with AGrid do
+    for i := 0 to pred(items.count) do
+      {begin
+        pt := cells[12,i];
+        if pt <> PL_WARD then}
+          begin
+            clin := Piece( items[i], U, 11);
+            if ((clin = '') or (clin = '0')) and (not anon) then
+              begin
+                AList.add('-1^<None recorded>'); {add a holder for "no clinic"}
+                anon := true;
+              end
+            else if (clin<>'') and (Alist.indexof(clin)<0) then
+              Alist.add(clin);
+          end;
+       //end;
+end;
+
+procedure LoadFilterList(Alist: TstringList; DestList: TstringList);
+var
+  i:integer;
+begin
+  for i := 0 to pred(Alist.count) do DestList.add(Piece(Alist[i],u,1));
+end;
+
+procedure ShowFilterStatus(s: string);
+var
+  lin:string;
+begin
+  if      s = PL_OP_VIEW then lin := 'View clinics'
+  else if s = PL_IP_VIEW then lin := 'View services'
+  else                        lin := 'View all problems';
+  Application.ProcessMessages;
+end;
+
+function ByProvider: string;
+begin
+  result := '';
+  if PLFilters.ProviderList.count > 0 then
+    if PLFilters.ProviderList[0] <> '0' then result := 'by Provider';
+end;
+
+procedure SetViewFilters(Alist:TStringList);
+begin
+  if PLFilters.ProviderList.count = 0 then
+    PLFilters.ProviderList.add('0'); {default to all provides if none selected}
+  if PLUser.usCurrentView = PL_OP_VIEW then
+    begin
+      if PLFilters.ClinicList.count = 0 then
+        begin
+          //GetListforOP(Alist);
+          LoadFilterList(Alist,PLFilters.ClinicList);
+        end;
+      //PostMessage(frmProblems.Handle, UM_PLFILTER,0,0);
+    end
+  else if PLUser.usCurrentView = PL_IP_VIEW then
+    begin
+      if PLFilters.ServiceList.count=0 then
+        begin
+          //GetListforIP(Alist);
+          LoadFilterList(Alist,PLFilters.ServiceList);
+        end;
+      //PostMessage(frmProblems.Handle, UM_PLFILTER,0,0);
+    end
+  else {if no default view specified, assumed to be unfiltered}
+    PlUser.usCurrentView := PL_UF_VIEW;
+  ShowFilterStatus(PlUser.usCurrentView);
+end;
+
+procedure InitViewFilters(Alist: TstringList);
+var
+  i:integer;
+begin
+  if PLUser.usCurrentView = '' then PLUser.usCurrentView := PL_UF_VIEW;
+
+  if (PLUser.usViewProv = '') or (Piece(PLUser.usViewProv, U, 1) = '0') then
+    begin
+      PLFilters.ProviderList.clear;
+      PLFilters.Providerlist.add('0');
+    end
+  else {conserve user preferred provider}
+    PLFilters.ProviderList.Add(Piece(PLUser.usViewProv, U, 1));
+
+  if PLUser.usCurrentView = PL_UF_VIEW then
+    begin {no filter on patient type, so do routine filter on provider and bail}
+      SetViewFilters(Alist);
+      //exit;
+    end;
+
+  if (PLUser.usCurrentView = PL_OP_VIEW) and (PLUser.usViewClin = '') then
+    begin {no user preferred list of clinics, so get standard list and bail}
+      SetViewFilters(Alist);
+      //exit;
+    end;
+
+  if (PLUser.usCurrentView = PL_IP_VIEW) and (PLUser.usViewServ = '') then
+    begin {no user preferred list of services, so get standard list  and bail}
+      SetViewFilters(Alist);
+      //exit;
+    end;
+
+  if (PLUser.usCurrentView = PL_OP_VIEW) and (PLUser.usClinList.Count > 0) then
+    begin {conserve user preferred clinic list}
+      for i := 0 to pred(PLUser.usClinList.Count) do
+        PLFilters.ClinicList.add(PLUser.usClinList[i]);
+    end;
+
+  if PLUser.usCurrentView = PL_IP_VIEW then
+    begin {conserve user preferred service list}
+      for i := 0 to pred(PLUser.usServList.Count) do
+        PLFilters.ServiceList.add(PLUser.usServList[i]);
+    end;
+
+//  ShowFilterStatus(PlUser.usCurrentView);
+//  PostMessage(frmProblems.Handle, UM_PLFILTER,0,0);
+end;
+
+function ForChars(Num, FontWidth: Integer): Integer;
+begin
+  Result := Num * FontWidth;
+end;
+
+procedure GetFontInfo(AHandle: THandle; var FontWidth, FontHeight: Integer);
+{ pass in a FONT HANDLE & return character width & height }
+var
+  DC: HDC;
+  SaveFont: HFont;
+  FontMetrics: TTextMetric;
+  size: TSize ;
+begin
+  DC := GetDC(0);
+  SaveFont := SelectObject(DC, AHandle);
+  GetTextExtentPoint32(DC, UpperCaseLetters + LowerCaseLetters, 52, size);
+  FontWidth := size.cx div 52;
+  GetTextMetrics(DC, FontMetrics);
+  FontHeight := FontMetrics.tmHeight;
+  SelectObject(DC, SaveFont);
+  ReleaseDC(0, DC);
+end;
+
+function ShortDateStrToDate(shortdate: string): string ;
+{Converts date in format 'mmm dd,yy' or 'mmm dd,yyyy' to standard 'mm/dd/yy'}
+var
+  month,day,year: string ;
+  i: integer ;
+begin
+  result := 'ERROR' ;
+  if ((Pos(' ',shortdate) <> 4) or (Pos(',',shortdate) <> 7)) then exit ;  {no spaces or comma}
+  for i := 1 to 12 do
+    if Months[i] = UpperCase(Copy(shortdate,1,3)) then month := IntToStr(i);
+  if month = '' then exit ;    {invalid month name}
+  day  := IntToStr(StrToInt(Copy(shortdate,5,2))) ;
+  year := IntToStr(StrToInt(Copy(shortdate,8,99))) ;
+  result := month+'/'+day+'/'+year ;
+end ;
+
+(*function NewComment: string ;
+var
+  frmProbCmt: TfrmProbCmt ;
+begin
+  frmProbCmt := TfrmProbCmt.Create(Application) ;
+  try
+    frmProbCmt.Execute;
+    result := frmProbCmt.CmtResult ;
+  finally
+    frmProbCmt.Free ;
+  end ;
+end ;
+
+function EditComment(OldValue: string): string ;
+var
+  frmProbCmt: TfrmProbCmt ;
+begin
+  frmProbCmt := TfrmProbCmt.Create(Application) ;
+  try
+    frmProbCmt.edComment.Text := Piece(OldValue, U, 2);
+    frmProbCmt.Execute;
+    result := frmProbCmt.CmtResult ;
+  finally
+    frmProbCmt.Free ;
+  end ;
+end ;*)
+
+function FixQuotes(InString: string): string;
+var
+  i: integer;
+  OutString: string;
+begin
+  OutString := '';
+  for i := 1 to Length(InString) do
+    if CharAt(InString, i) = '"' then
+      OutString := OutString + '""'
+    else
+      OutString := OutString + CharAt(InString, i);
+  Result := OutString;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uReminders.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uReminders.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uReminders.pas	(revision 1676)
@@ -0,0 +1,7022 @@
+unit uReminders;
+
+interface
+
+uses
+  Windows, Messages, Classes, Controls, StdCtrls, SysUtils, ComCtrls, Menus,
+  Graphics, Forms, ORClasses, ORCtrls, ORDtTm, ORFn, ORNet, Dialogs, uPCE, uVitals,
+  ExtCtrls, fDrawers, fDeviceSelect, TypInfo;
+
+type
+  TReminderDialog = class(TObject)
+  private
+    FDlgData: string;
+    FElements: TStringList; // list of TRemDlgElement objects
+    FOnNeedRedraw: TNotifyEvent;
+    FNeedRedrawCount: integer;
+    FOnTextChanged: TNotifyEvent;
+    FTextChangedCount: integer;
+    FPCEDataObj: TPCEData;
+    FNoResolve: boolean;
+    FWHReviewIEN: string;  // AGP CHANGE 23.13 Allow for multiple processing of WH Review of Result Reminders
+    FRemWipe: integer;
+    FMHTestArray: TORStringList;
+  protected
+    function GetIEN: string; virtual;
+    function GetPrintName: string; virtual;
+    procedure BeginNeedRedraw;
+    procedure EndNeedRedraw(Sender: TObject);
+    procedure BeginTextChanged;
+    procedure EndTextChanged(Sender: TObject);
+    function GetDlgSL: TORStringList;
+    procedure ComboBoxResized(Sender: TObject);
+    procedure ComboBoxCheckedText(Sender: TObject; NumChecked: integer; var Text: string);
+    function AddData(Lst: TStrings; Finishing: boolean = FALSE; Historical: boolean = FALSE): integer;
+    function Visible: boolean;
+  public
+    constructor BaseCreate;
+    constructor Create(ADlgData: string);
+    destructor Destroy; override;
+    procedure FinishProblems(List: TStrings; var MissingTemplateFields: boolean);
+    function BuildControls(ParentWidth: integer; AParent, AOwner: TWinControl): TWinControl;
+    function Processing: boolean;
+    procedure AddText(Lst: TStrings);
+    procedure ClearMHTest(RIEN: String);
+    property PrintName: string read GetPrintName;
+    property IEN: string read GetIEN;
+    property Elements: TStringList read FElements;
+    property OnNeedRedraw: TNotifyEvent read FOnNeedRedraw write FOnNeedRedraw;
+    property OnTextChanged: TNotifyEvent read FOnTextChanged write FOnTextChanged;
+    property PCEDataObj: TPCEData read FPCEDataObj write FPCEDataObj;
+    property DlgData: string read FDlgData; //AGP Change 24.8
+    property WHReviewIEN: string read FWHReviewIEN write FWHReviewIEN;  //AGP CHANGE 23.13
+    property RemWipe: integer read FRemWipe write FRemWipe;
+    property MHTestArray: TORStringList read FMHTestArray write FMHTestArray;
+  end;
+
+  TReminder = class(TReminderDialog)
+  private
+    FRemData: string;
+    FCurNodeID: string;
+  protected
+    function GetDueDateStr: string;
+    function GetLastDateStr: string;
+    function GetIEN: string; override;
+    function GetPrintName: string; override;
+    function GetPriority: integer;
+    function GetStatus: string;
+  public
+    constructor Create(ARemData: string);
+    property DueDateStr: string read GetDueDateStr;
+    property LastDateStr: string read GetLastDateStr;
+    property Priority: integer read GetPriority;
+    property Status: string read GetStatus;
+    property RemData: string read FRemData;
+    property CurrentNodeID: string read FCurNodeID write FCurNodeID;
+  end;
+
+  TRDChildReq = (crNone, crOne, crAtLeastOne, crNoneOrOne, crAll);
+  TRDElemType = (etCheckBox, etTaxonomy, etDisplayOnly);
+
+  TRemPrompt = class;
+
+  TRemDlgElement = class(TObject)
+  private
+    FReminder: TReminderDialog;
+    FParent: TRemDlgElement;
+    FChildren: TList; // Points to other TRemDlgElement objects
+    FData: TList; // List of TRemData objects
+    FPrompts: TList; // list of TRemPrompts objects
+    FText: string;
+    FPNText: string;
+    FRec1: string;
+    FID: string;
+    FDlgID: string;
+    FHaveData: boolean;
+    FTaxID: string;
+    FChecked: boolean;
+    FChildrenShareChecked: boolean;
+    FHasSharedPrompts: boolean;
+    FHasComment: boolean;
+    FHasSubComments: boolean;
+    FCommentPrompt: TRemPrompt;
+    FFieldValues: TORStringList;
+    FMSTPrompt: TRemPrompt;
+    FWHPrintDevice, FWHResultChk, FWHResultNot: String;
+    FVitalDateTime: TFMDateTime;  //AGP Changes 26.1
+  protected
+    procedure Check4ChildrenSharedPrompts;
+    function ShowChildren: boolean;
+    function EnableChildren: boolean;
+    function Enabled: boolean;
+    procedure SetChecked(const Value: boolean);
+    procedure UpdateData;
+    procedure GetData;
+    function TrueIndent: integer;
+    procedure cbClicked(Sender: TObject);
+    procedure cbEntered(Sender: TObject);
+    procedure FieldPanelEntered(Sender: TObject);
+    procedure FieldPanelExited(Sender: TObject);
+    procedure FieldPanelKeyPress(Sender: TObject; var Key: Char);
+    procedure FieldPanelOnClick(Sender: TObject);
+    procedure FieldPanelLabelOnClick(Sender: TObject);
+
+    function BuildControls(var Y: integer; ParentWidth: integer;
+                                BaseParent, AOwner: TWinControl): TWinControl;
+    function AddData(Lst: TStrings; Finishing: boolean; AHistorical: boolean = FALSE): integer;
+    procedure FinishProblems(List: TStrings);
+    function IsChecked: boolean;
+    procedure SubCommentChange(Sender: TObject);
+    function EntryID: string;
+    procedure FieldPanelChange(Sender: TObject);
+    procedure GetFieldValues(FldData: TStrings);
+    procedure ParentCBEnter(Sender: TObject);
+    procedure ParentCBExit(Sender: TObject);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function ElemType: TRDElemType;
+    function Add2PN: boolean;
+    function Indent: integer;
+    function FindingType: string;
+    function Historical: boolean;
+    function ResultDlgID: string;
+    function IncludeMHTestInPN: boolean;
+    function HideChildren: boolean;
+    function ChildrenIndent: integer;
+    function ChildrenSharePrompts: boolean;
+    function ChildrenRequired: TRDChildReq;
+    function Box: boolean;
+    function BoxCaption: string;
+    function IndentChildrenInPN: boolean;
+    function IndentPNLevel: integer;
+    function GetTemplateFieldValues(const Text: string; FldValues: TORStringList =  nil): string;
+    procedure AddText(Lst: TStrings);
+    property Text: string read FText;
+    property ID: string read FID;
+    property DlgID: string read FDlgID;
+    property Checked: boolean read FChecked write SetChecked;
+    property Reminder: TReminderDialog read FReminder;
+    property HasComment: boolean read FHasComment;
+    property WHPrintDevice: String read FWHPrintDevice write FWHPrintDevice;
+    property WHResultChk: String read FWHResultChk write FWHResultChk;
+    property WHResultNot: String read FWHResultNot write FWHResultNot;
+    property VitalDateTime: TFMDateTime read FVitalDateTime write FVitalDateTime;
+  end;
+
+  TRemDataType = (dtDiagnosis, dtProcedure, dtPatientEducation,
+                  dtExam, dtHealthFactor, dtImmunization, dtSkinTest,
+                  dtVitals, dtOrder, dtMentalHealthTest, dtWHPapResult,
+                  dtWhNotPurp);
+
+  TRemPCERoot = class;
+
+  TRemData = class(TObject)
+  private
+    FPCERoot: TRemPCERoot;
+    FParent: TRemDlgElement;
+    FRec3: string;
+    FActiveDates: TStringList; //Active dates for finding items. (rectype 3)
+//    FRoot: string;
+    FChoices: TORStringList;
+    FChoicesActiveDates: TList; //Active date ranges for taxonomies. (rectype 5)
+                                //List of TStringList objects that contain active date
+                                //ranges for each FChoices object of the same index
+    FChoicePrompt: TRemPrompt;  //rectype 4
+    FChoicesMin: integer;
+    FChoicesMax: integer;
+    FChoicesFont: THandle;
+    FSyncCount: integer;
+  protected
+    function AddData(List: TStrings; Finishing: boolean): integer;
+  public
+    destructor Destroy; override;
+    function Add2PN: boolean;
+    function DisplayWHResults: boolean;
+    function InternalValue: string;
+    function ExternalValue: string;
+    function Narrative: string;
+    function Category: string;
+    function DataType: TRemDataType;
+    property Parent: TRemDlgElement read FParent;
+  end;
+
+  TRemPromptType = (ptComment, ptVisitLocation, ptVisitDate, ptQuantity,
+                    ptPrimaryDiag, ptAdd2PL, ptExamResults, ptSkinResults,
+                    ptSkinReading, ptLevelSeverity, ptSeries, ptReaction,
+                    ptContraindicated, ptLevelUnderstanding, ptWHPapResult,
+                    ptWHNotPurp);
+
+  TRemPrompt = class(TObject)
+  private
+    FFromControl: boolean;
+    FParent: TRemDlgElement;
+    FRec4: string;
+    FCaptionAssigned: boolean;
+    FData: TRemData;
+    FValue: string;
+    FOverrideType: TRemPromptType;
+    FIsShared: boolean;
+    FSharedChildren: TList;
+    FCurrentControl: TControl;
+    FFromParent: boolean;
+    FInitializing: boolean;
+    FMiscText: string;
+    FMonthReq: boolean;
+    FPrintNow: String;
+    FMHTestComplete: integer;
+  protected
+    function RemDataActive(RData: TRemData; EncDt: TFMDateTime):Boolean;
+    function RemDataChoiceActive(RData: TRemData; j: integer; EncDt: TFMDateTime):Boolean;
+    function GetValue: string;
+    procedure SetValueFromParent(Value: string);
+    procedure SetValue(Value: string);
+    procedure PromptChange(Sender: TObject);
+    procedure VitalVerify(Sender: TObject);
+    procedure ComboBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    function CanShare(Prompt: TRemPrompt): boolean;
+    procedure InitValue;
+    procedure DoMHTest(Sender: TObject);
+    procedure DoWHReport(Sender: TObject);
+    procedure ViewWHText(Sender: TObject);
+    procedure GAFHelp(Sender: TObject);
+    function EntryID: string;
+    procedure EditKeyPress(Sender: TObject; var Key: Char);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function PromptOK: boolean;
+    function PromptType: TRemPromptType;
+    function Add2PN: boolean;
+    function InternalValue: string;
+    function Forced: boolean;
+    function Caption: string;
+    function ForcedCaption: string;
+    function SameLine: boolean;
+    function Required: boolean;
+    function NoteText: string;
+    function VitalType: TVitalType;
+    function VitalValue: string;
+    function VitalUnitValue: string;
+    property Value: string read GetValue write SetValue;
+  end;
+
+  TRemPCERoot = class(TObject)
+  private
+    FData: TList;
+    FID: string;
+    FForcedPrompts: TStringList;
+    FValue: string;
+    FValueSet: string;
+  protected
+    class function GetRoot(Data: TRemData; Rec3: string; Historical: boolean): TRemPCERoot;
+    procedure Done(Data: TRemData);
+    procedure Sync(Prompt: TRemPrompt);
+    procedure UnSync(Prompt: TRemPrompt);
+    function GetValue(PromptType: TRemPromptType; var NewValue: string): boolean;
+  public
+    destructor Destroy; override;
+  end;
+
+  TReminderStatus = (rsDue, rsApplicable, rsNotApplicable, rsNone, rsUnknown);
+
+  TRemCanFinishProc = function: boolean of object;
+  TRemDisplayPCEProc = procedure of object;
+
+  TRemForm = record
+    Form: TForm;
+    PCEObj: TPCEData;
+    RightPanel: TPanel;
+    CanFinishProc: TRemCanFinishProc;
+    DisplayPCEProc: TRemDisplayPCEProc;
+    Drawers: TFrmDrawers;
+    NewNoteRE: TRichEdit;
+    NoteList: TORListBox;
+  end;
+
+var
+  RemForm: TRemForm;
+  NotPurposeValue: string;
+  WHRemPrint: string;
+  InitialRemindersLoaded: boolean = FALSE;
+
+const
+  HAVE_REMINDERS = 0;
+  NO_REMINDERS = 1;
+  RemPriorityText: array[1..3] of string = ('High','','Low');
+  ClinMaintText = 'Clinical Maintenance';
+
+  dtUnknown = TRemDataType(-1);
+  dtAll = TRemDataType(-2);
+  dtHistorical = TRemDataType(-3);
+
+  ptUnknown = TRemPromptType(-1);
+  ptSubComment = TRemPromptType(-2);
+  ptDataList = TRemPromptType(-3);
+  ptVitalEntry = TRemPromptType(-4);
+  ptMHTest = TRemPromptType(-5);
+  ptGAF = TRemPromptType(-6);
+  ptMST = TRemPromptType(-7);
+
+  MSTCode = 'MST';
+  MSTDataTypes = [pdcHF, pdcExam];
+  pnumMST = ord(pnumComment)+4;
+
+procedure NotifyWhenRemindersChange(Proc: TNotifyEvent);
+procedure RemoveNotifyRemindersChange(Proc: TNotifyEvent);
+procedure StartupReminders;
+function GetReminderStatus: TReminderStatus;
+function RemindersEvaluatingInBackground: boolean;
+procedure ResetReminderLoad;
+procedure LoadReminderData(ProcessingInBackground: boolean = FALSE);
+function ReminderEvaluated(Data: string; ForceUpdate: boolean = FALSE): boolean;
+procedure RemindersEvaluated(List: TStringList);
+procedure EvalReminder(ien: integer);
+procedure EvalProcessed;
+procedure EvaluateCategoryClicked(AData: pointer; Sender: TObject);
+
+procedure SetReminderPopupRoutine(Menu: TPopupMenu);
+procedure SetReminderPopupCoverRoutine(Menu: TPopupMenu);
+procedure SetReminderMenuSelectRoutine(Menu: TMenuItem);
+procedure BuildReminderTree(Tree: TORTreeView);
+function ReminderNode(Node: TTreeNode): TORTreeNode;
+procedure ClearReminderData;
+function GetReminder(ARemData: string): TReminder;
+procedure WordWrap(AText: string; Output: TStrings; LineLength: integer;
+                                                   AutoIndent: integer = 4; MHTest: boolean = false);
+function InteractiveRemindersActive: boolean;
+function GetReminderData(Rem: TReminderDialog; Lst: TStrings; Finishing: boolean = FALSE;
+                                         Historical: boolean = FALSE): integer; overload;
+function GetReminderData(Lst: TStrings; Finishing: boolean = FALSE;
+                                         Historical: boolean = FALSE): integer; overload;
+procedure SetReminderFormBounds(Frm: TForm; DefX, DefY, DefW, DefH, ALeft, ATop, AWidth, AHeight: integer);
+
+procedure UpdateReminderDialogStatus;
+
+//const
+//  InteractiveRemindersActive = FALSE;
+
+var
+{ ActiveReminder string format:
+  IEN^PRINT NAME^DUE DATE/TIME^LAST OCCURENCE DATE/TIME^PRIORITY^DUE^DIALOG
+  where PRIORITY 1=High, 2=Normal, 3=Low
+        DUE      0=Applicable, 1=Due, 2=Not Applicable  }
+  ActiveReminders: TORStringList = nil;
+
+{ OtherReminder string format:
+  IDENTIFIER^TYPE^NAME^PARENT IDENTIFIER^REMINDER IEN^DIALOG
+  where TYPE C=Category, R=Reminder }
+  OtherReminders: TORStringList = nil;
+
+  RemindersInProcess: TORStringList = nil;
+  CoverSheetRemindersInBackground: boolean = FALSE;
+  KillReminderDialogProc: procedure(frm: TForm) = nil;
+  RemindersStarted: boolean = FALSE;
+  ProcessedReminders: TORStringList = nil;
+  ReminderDialogInfo: TStringList = nil;
+
+const
+  CatCode = 'C';
+  RemCode = 'R';
+  EduCode = 'E';
+  pnumVisitLoc  = pnumComment + 1;
+  pnumVisitDate = pnumComment + 2;
+  RemTreeDateIdx = 8;
+  IncludeParentID = ';';
+  OtherCatID = CatCode + '-6';
+
+  RemDataCodes: array[TRemDataType] of string =
+                  { dtDiagnosis        } ('POV',
+                  { dtProcedure        }  'CPT',
+                  { dtPatientEducation }  'PED',
+                  { dtExam             }  'XAM',
+                  { dtHealthFactor     }  'HF',
+                  { dtImmunization     }  'IMM',
+                  { dtSkinTest         }  'SK',
+                  { dtVitals           }  'VIT',
+                  { dtOrder            }  'Q',
+                  { dtMentalHealthTest }  'MH',
+                  { dtWHPapResult      }  'WHR',
+                  { dtWHNotPurp        }  'WH');
+
+implementation
+
+uses rCore, uCore, rReminders, fRptBox, uConst, fReminderDialog, fNotes, rMisc,
+     fMHTest, rPCE, rTemplates, dShared, uTemplateFields, fIconLegend, fReminderTree, uInit,
+     VAUtils, VA508AccessibilityRouter, VA508AccessibilityManager, uDlgComponents,
+  fBase508Form;
+
+type
+  TRemFolder = (rfUnknown, rfDue, rfApplicable, rfNotApplicable, rfEvaluated, rfOther);
+  TRemFolders = set of TRemFolder;
+  TValidRemFolders = succ(low(TRemFolder)) .. high(TRemFolder);
+  TExposedComponent = class(TControl);
+
+  TWHCheckBox = class(TCPRSDialogCheckBox)
+  private
+    FPrintNow: TCPRSDialogCheckBox;
+    FViewLetter: TCPRSDialogCheckBox;
+    FCheck1: TWHCheckBox;
+    FCheck2: TWHCheckBox;
+    FCheck3: TWHCheckBox;
+    FEdit: TEdit;
+    FButton: TButton;
+    FOnDestroy: TNotifyEvent;
+    Flbl, Flbl2: TControl;
+    FPrintVis: String;
+    //FPrintDevice: String;
+    FPntNow: String;
+    FPntBatch: String;
+    FButtonText: String;
+    FCheckNum: String;
+  protected  
+  public
+    property lbl: TControl read Flbl write Flbl;
+    property lbl2: TControl read Flbl2 write Flbl2;
+    property PntNow: String read FPntNow write FPntNow;
+    property PntBatch: String read FPntBatch write FPntBatch;
+    property CheckNum: String read FCheckNum write FCheckNum;
+    property ButtonText: String read FButtonText write FButtonText;
+    property PrintNow: TCPRSDialogCheckBox read FPrintNow write FPrintNow;
+    property Check1: TWHCheckBox read FCheck1 write FCheck1;
+    property Check2: TWHCheckBox read FCheck2 write FCheck2;
+    property Check3: TWHCheckBox read FCheck3 write FCheck3;
+    property ViewLetter: TCPRSDialogCheckBox read FViewLetter write FViewLetter;
+    property Button: TButton read FButton write FButton;
+    property Edit: TEdit read FEdit write FEdit;
+    property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
+    property PrintVis: String read FPrintVis write FPrintVis;
+  end;
+
+var
+  LastReminderLocation: integer = -2;
+  EvaluatedReminders: TORStringList = nil;
+  ReminderTreeMenu: TORPopupMenu = nil;
+  ReminderTreeMenuDlg: TORPopupMenu = nil;
+  ReminderCatMenu: TPopupMenu = nil;
+  EducationTopics: TORStringList = nil;
+  WebPages: TORStringList = nil;
+  ReminderCallList: TORStringList = nil;
+  LastProcessingList: string = '';
+  InteractiveRemindersActiveChecked: boolean = FALSE;
+  InteractiveRemindersActiveStatus: boolean = FALSE;
+  PCERootList: TStringList;
+  PrimaryDiagRoot: TRemPCERoot = nil;
+  ElementChecked: TRemDlgElement = nil;
+  HistRootCount: longint = 0;
+  uRemFolders: TRemFolders = [rfUnknown];
+  
+const
+  DueText = 'Due';
+  ApplicableText = 'Applicable';
+  NotApplicableText = 'Not Applicable';
+  EvaluatedText = 'All Evaluated';
+  OtherText = 'Other Categories';
+
+  DueCatID = CatCode + '-2';
+  DueCatString = DueCatID + U + DueText;
+
+  ApplCatID = CatCode + '-3';
+  ApplCatString = ApplCatID + U + ApplicableText;
+
+  NotApplCatID = CatCode + '-4';
+  NotApplCatString = NotApplCatID + U + NotApplicableText;
+
+  EvaluatedCatID = CatCode + '-5';
+  EvaluatedCatString = EvaluatedCatID + U + EvaluatedText;
+
+//  OtherCatID = CatCode + '-6';
+  OtherCatString = OtherCatID + U + OtherText;
+
+  LostCatID = CatCode + '-7';
+  LostCatString = LostCatID + U + 'In Process';
+
+  ReminderDateFormat = 'mm/dd/yyyy';
+
+  RemData2PCECat: array[TRemDataType] of TPCEDataCat =
+                  { dtDiagnosis        } (pdcDiag,
+                  { dtProcedure        }  pdcProc,
+                  { dtPatientEducation }  pdcPED,
+                  { dtExam             }  pdcExam,
+                  { dtHealthFactor     }  pdcHF,
+                  { dtImmunization     }  pdcImm,
+                  { dtSkinTest         }  pdcSkin,
+                  { dtVitals           }  pdcVital,
+                  { dtOrder            }  pdcOrder,
+                  { dtMentalHealthTest }  pdcMH,
+                  { dtWHPapResult      }  pdcWHR,
+                  { dtWHNotPurp        }  pdcWH);
+
+  RemPromptCodes: array[TRemPromptType] of string =
+                  { ptComment             } ('COM',
+                  { ptVisitLocation       }  'VST_LOC',
+                  { ptVisitDate           }  'VST_DATE',
+                  { ptQuantity            }  'CPT_QTY',
+                  { ptPrimaryDiag         }  'POV_PRIM',
+                  { ptAdd2PL              }  'POV_ADD',
+                  { ptExamResults         }  'XAM_RES',
+                  { ptSkinResults         }  'SK_RES',
+                  { ptSkinReading         }  'SK_READ',
+                  { ptLevelSeverity       }  'HF_LVL',
+                  { ptSeries              }  'IMM_SER',
+                  { ptReaction            }  'IMM_RCTN',
+                  { ptContraindicated     }  'IMM_CNTR',
+                  { ptLevelUnderstanding  }  'PED_LVL',
+                  { ptWHPapResult         }  'WH_PAP_RESULT',
+                  { ptWHNotPurp           }  'WH_NOT_PURP');
+
+  RemPromptTypes: array[TRemPromptType] of TRemDataType =
+                  { ptComment             } (dtAll,
+                  { ptVisitLocation       }  dtHistorical,
+                  { ptVisitDate           }  dtHistorical,
+                  { ptQuantity            }  dtProcedure,
+                  { ptPrimaryDiag         }  dtDiagnosis,
+                  { ptAdd2PL              }  dtDiagnosis,
+                  { ptExamResults         }  dtExam,
+                  { ptSkinResults         }  dtSkinTest,
+                  { ptSkinReading         }  dtSkinTest,
+                  { ptLevelSeverity       }  dtHealthFactor,
+                  { ptSeries              }  dtImmunization,
+                  { ptReaction            }  dtImmunization,
+                  { ptContraindicated     }  dtImmunization,
+                  { ptLevelUnderstanding  }  dtPatientEducation,
+                  { ptWHPapResult         }  dtWHPapResult,
+                  { ptWHNotPurp           }  dtWHNotPurp);
+
+  FinishPromptPieceNum: array[TRemPromptType] of integer =
+                  { ptComment             } (pnumComment,
+                  { ptVisitLocation       }  pnumVisitLoc,
+                  { ptVisitDate           }  pnumVisitDate,
+                  { ptQuantity            }  pnumProcQty,
+                  { ptPrimaryDiag         }  pnumDiagPrimary,
+                  { ptAdd2PL              }  pnumDiagAdd2PL,
+                  { ptExamResults         }  pnumExamResults,
+                  { ptSkinResults         }  pnumSkinResults,
+                  { ptSkinReading         }  pnumSkinReading,
+                  { ptLevelSeverity       }  pnumHFLevel,
+                  { ptSeries              }  pnumImmSeries,
+                  { ptReaction            }  pnumImmReaction,
+                  { ptContraindicated     }  pnumImmContra,
+                  { ptLevelUnderstanding  }  pnumPEDLevel,
+                  { ptWHPapResult         }  pnumWHPapResult,
+                  { ptWHNotPurp           }  pnumWHNotPurp);
+
+  ComboPromptTags: array[TRemPromptType] of integer =
+                  { ptComment             } (0,
+                  { ptVisitLocation       }  TAG_HISTLOC,
+                  { ptVisitDate           }  0,
+                  { ptQuantity            }  0,
+                  { ptPrimaryDiag         }  0,
+                  { ptAdd2PL              }  0,
+                  { ptExamResults         }  TAG_XAMRESULTS,
+                  { ptSkinResults         }  TAG_SKRESULTS,
+                  { ptSkinReading         }  0,
+                  { ptLevelSeverity       }  TAG_HFLEVEL,
+                  { ptSeries              }  TAG_IMMSERIES,
+                  { ptReaction            }  TAG_IMMREACTION,
+                  { ptContraindicated     }  0,
+                  { ptLevelUnderstanding  }  TAG_PEDLEVEL,
+                  { ptWHPapResult         }  0,
+                  { ptWHNotPurp           }  0);
+
+  PromptDescriptions: array [TRemPromptType] of string =
+                  { ptComment             } ('Comment',
+                  { ptVisitLocation       }  'Visit Location',
+                  { ptVisitDate           }  'Visit Date',
+                  { ptQuantity            }  'Quantity',
+                  { ptPrimaryDiag         }  'Primary Diagnosis',
+                  { ptAdd2PL              }  'Add to Problem List',
+                  { ptExamResults         }  'Exam Results',
+                  { ptSkinResults         }  'Skin Test Results',
+                  { ptSkinReading         }  'Skin Test Reading',
+                  { ptLevelSeverity       }  'Level of Severity',
+                  { ptSeries              }  'Series',
+                  { ptReaction            }  'Reaction',
+                  { ptContraindicated     }  'Repeat Contraindicated',
+                  { ptLevelUnderstanding  }  'Level of Understanding',
+                  { ptWHPapResult         }  'Women''s Health Procedure',
+                  { ptWHNotPurp           }  'Women Health Notification Purpose');
+
+  RemFolderCodes: array[TValidRemFolders] of char =
+     { rfDue           } ('D',
+     { rfApplicable    }  'A',
+     { rfNotApplicable }  'N',
+     { rfEvaluated     }  'E',
+     { rfOther         }  'O');
+
+  MSTDescTxt: array[0..4,0..1] of string = (('Yes','Y'),('No','N'),('Declined','D'),
+                                            ('Normal','N'),('Abnormal','A'));
+
+  SyncPrompts = [ptComment, ptQuantity, ptAdd2PL, ptExamResults,
+                 ptSkinResults, ptSkinReading, ptLevelSeverity, ptSeries,
+                 ptReaction, ptContraindicated, ptLevelUnderstanding];
+
+  Gap = 3;
+  LblGap = 4;
+  IndentGap = 18;
+  PromptGap = 10;
+  NewLinePromptGap = 18;
+  IndentMult = 9;
+  PromptIndent = 30;
+  gbLeftIndent = 2;
+  gbTopIndent = 9;
+  gbTopIndent2 = 16;
+  DisabledFontColor = clBtnShadow;
+  r3Type = 4;
+  r3Code2 = 6;
+  r3Code = 7;
+  r3Cat  = 9;
+  r3Nar = 8;
+  r3GAF = 12;
+
+  RemTreeCode = 999;
+
+  CRCode = '<br>';
+  CRCodeLen = length(CRCode);
+  REMEntryCode = 'REM';
+
+  MonthReqCode = 'M';
+
+function InitText(const InStr: string): string;
+var
+  i: integer;
+
+begin
+  Result := InStr;
+  if(copy(Result, 1, CRCodeLen) = CRCode) then
+  begin
+    i := pos(CRCode, copy(Result, CRCodeLen+1, MaxInt));
+    if(i > 0) and ((i = (CRCodeLen + 1)) or
+      (Trim(copy(Result, CrCodeLen+1, i - 1)) = '')) then
+      delete(Result,1,CRCodeLen + i - 1);
+  end;
+end;
+
+function CRLFText(const InStr: string): string;
+var
+  i: integer;
+
+begin
+  Result := InitText(InStr);
+  repeat
+    i := pos(CRCode, Result);
+    if(i > 0) then
+      Result := copy(Result,1,i-1) + CRLF + copy(REsult,i + CRCodeLen, MaxInt);
+  until(i = 0);
+end;
+
+function Code2VitalType(Code: string): TVitalType;
+var
+  v: TVitalType;
+
+begin
+  Result := vtUnknown;
+  for v := low(TValidVitalTypes) to high(TValidVitalTypes) do
+  begin
+    if(Code = VitalPCECodes[v]) then
+    begin
+      Result := v;
+      break;
+    end;
+  end;
+end;
+
+type
+  TMultiClassObj = record
+    case integer of
+      0: (edt:  TCPRSDialogFieldEdit);
+      1: (cb:   TCPRSDialogCheckBox);
+      2: (cbo:  TCPRSDialogComboBox);
+      3: (dt:   TCPRSDialogDateCombo);
+      4: (ctrl: TORExposedControl);
+      5: (vedt: TVitalEdit);
+      6: (vcbo: TVitalComboBox);
+      7: (btn:  TCPRSDialogButton);
+      8: (pNow: TORCheckBox);
+      9: (pBat: TORCheckBox);
+     10: (lbl: TLabel);
+     11: (WHChk: TWHCheckBox);
+  end;
+
+  EForcedPromptConflict = class(EAbort);
+
+function IsSyncPrompt(pt: TRemPromptType): boolean;
+begin
+  if(pt in SyncPrompts) then
+    Result := TRUE
+  else
+    Result := (pt = ptVitalEntry);
+end;
+
+procedure NotifyWhenRemindersChange(Proc: TNotifyEvent);
+begin
+  ActiveReminders.Notifier.NotifyWhenChanged(Proc);
+  OtherReminders.Notifier.NotifyWhenChanged(Proc);
+  RemindersInProcess.Notifier.NotifyWhenChanged(Proc);
+  Proc(nil);
+end;
+
+procedure RemoveNotifyRemindersChange(Proc: TNotifyEvent);
+begin
+  ActiveReminders.Notifier.RemoveNotify(Proc);
+  OtherReminders.Notifier.RemoveNotify(Proc);
+  RemindersInProcess.Notifier.RemoveNotify(Proc);
+end;
+
+function ProcessingChangeString: string;
+var
+  i: integer;
+  TmpSL: TStringList;
+
+begin
+  Result := U;
+  if(RemindersInProcess.Count > 0) then
+  begin
+    TmpSL := TStringList.Create;
+    try
+      FastAssign(RemindersInProcess, TmpSL);
+      TmpSL.Sort;
+      for i := 0 to TmpSL.Count-1 do
+      begin
+        if(TReminder(TmpSL.Objects[i]).Processing) then
+          Result := Result + TmpSL[i] + U;
+      end;
+    finally
+      TmpSL.Free;
+    end;
+  end;
+end;
+
+procedure StartupReminders;
+begin
+  if(not InitialRemindersLoaded) then
+  begin
+    RemindersStarted := TRUE;
+    InitialRemindersLoaded := TRUE;
+    LoadReminderData;
+  end;
+end;
+
+function GetReminderStatus: TReminderStatus;
+begin
+       if(EvaluatedReminders.IndexOfPiece('1',U,6) >= 0) then Result := rsDue
+  else if(EvaluatedReminders.IndexOfPiece('0',U,6) >= 0) then Result := rsApplicable
+  else if(EvaluatedReminders.IndexOfPiece('2',U,6) >= 0) then Result := rsNotApplicable
+  else                                                        Result := rsUnknown;
+//  else if(EvaluatedReminders.Count > 0) or (OtherReminders.Count > 0) or
+//         (not InitialRemindersLoaded) or
+//         (ProcessingChangeString <> U) then Result := rsUnknown
+//  else Result := rsNone;
+end;
+
+function RemindersEvaluatingInBackground: boolean;
+begin
+  Result := CoverSheetRemindersInBackground;
+  if(not Result) then
+    Result := (ReminderCallList.Count > 0)
+end;
+
+var
+  TmpActive: TStringList = nil;
+  TmpOther: TStringList = nil;
+
+procedure BeginReminderUpdate;
+begin
+  ActiveReminders.Notifier.BeginUpdate;
+  OtherReminders.Notifier.BeginUpdate;
+  TmpActive := TStringList.Create;
+  FastAssign(ActiveReminders, TmpActive);
+  TmpOther := TStringList.Create;
+  FastAssign(OtherReminders, TmpOther);
+end;
+
+procedure EndReminderUpdate(Force: boolean = FALSE);
+var
+  DoNotify: boolean;
+
+begin
+  DoNotify := Force;
+  if(not DoNotify) then
+    DoNotify := (not ActiveReminders.Equals(TmpActive));
+  KillObj(@TmpActive);
+  if(not DoNotify) then
+    DoNotify := (not OtherReminders.Equals(TmpOther));
+  KillObj(@TmpOther);
+  OtherReminders.Notifier.EndUpdate;
+  ActiveReminders.Notifier.EndUpdate(DoNotify);
+end;
+
+function GetRemFolders: TRemFolders;
+var
+  i: TRemFolder;
+  tmp: string;
+
+begin
+  if rfUnknown in uRemFolders then
+  begin
+    tmp := GetReminderFolders;
+    uRemFolders := [];
+    for i := low(TValidRemFolders) to high(TValidRemFolders) do
+      if(pos(RemFolderCodes[i], tmp) > 0) then
+        include(uRemFolders, i);
+  end;
+  Result := uRemFolders;
+end;
+
+procedure SetRemFolders(const Value: TRemFolders);
+var
+  i: TRemFolder;
+  tmp: string;
+
+begin
+  if(Value <> uRemFolders) then
+  begin
+    BeginReminderUpdate;
+    try
+      uRemFolders := Value;
+      tmp := '';
+      for i := low(TValidRemFolders) to high(TValidRemFolders) do
+        if(i in Value) then
+          tmp := tmp + RemFolderCodes[i];
+      SetReminderFolders(tmp);
+    finally
+      EndReminderUpdate(TRUE);
+    end;
+  end;
+end;
+
+function ReminderEvaluated(Data: string; ForceUpdate: boolean = FALSE): boolean;
+var
+  idx: integer;
+  Code, Sts, Before: string;
+
+begin
+  Result := ForceUpdate;
+  if(Data <> '') then
+  begin
+    Code := Piece(Data, U, 1);
+    if StrToIntDef(Code,0) > 0 then
+    begin
+      ActiveReminders.Notifier.BeginUpdate;
+      try
+        idx := EvaluatedReminders.IndexOfPiece(Code);
+        if(idx < 0) then
+        begin
+          EvaluatedReminders.Add(Data);
+          Result := TRUE;
+        end
+        else
+        begin
+          Before := Piece(EvaluatedReminders[idx], U, 6);
+          EvaluatedReminders[idx] := Data;
+          if(not Result) then
+            Result := (Before <> Piece(Data, U, 6));
+        end;
+        idx := ActiveReminders.IndexOfPiece(Code);
+        if(idx < 0) then
+        begin
+          Sts := Piece(Data, U, 6);
+          //if(Sts = '0') or (Sts = '1') then
+          if(Sts = '0') or (Sts = '1') or (Sts = '3') or (Sts = '4') then     //AGP Error change 26.8
+          begin
+            Result := TRUE;
+            ActiveReminders.Add(Data);
+          end;
+        end
+        else
+        begin
+          if(not Result) then
+            Result := (ActiveReminders[idx] <> Data);
+          ActiveReminders[idx] := Data;
+        end;
+        idx := ProcessedReminders.IndexOfPiece(Code);
+        if(idx >= 0) then
+          ProcessedReminders.Delete(idx);
+      finally
+        ActiveReminders.Notifier.EndUpdate(Result);
+      end;
+    end
+    else
+      Result := TRUE; // If Code = 0 then it's 0^No Reminders Due, indicating a status change.
+  end;
+end;
+
+procedure RemindersEvaluated(List: TStringList);
+var
+  i: integer;
+  DoUpdate, RemChanged: boolean;
+
+begin
+  DoUpdate := FALSE;
+  ActiveReminders.Notifier.BeginUpdate;
+  try
+    for i := 0 to List.Count-1 do
+    begin
+      RemChanged := ReminderEvaluated(List[i]);
+      if(RemChanged) then DoUpdate := TRUE;
+    end;
+  finally
+    ActiveReminders.Notifier.EndUpdate(DoUpdate);
+  end;
+end;
+
+(*
+procedure CheckReminders; forward;
+
+procedure IdleCallEvaluateReminder(Msg: string);
+var
+  i:integer;
+  Code: string;
+
+begin
+  Code := Piece(Msg,U,1);
+  repeat
+    i := ReminderCallList.IndexOfPiece(Code);
+    if(i >= 0) then
+      ReminderCallList.Delete(i);
+  until(i < 0);
+  ReminderEvaluated(EvaluateReminder(Msg), (ReminderCallList.Count = 0));
+  CheckReminders;
+end;
+
+procedure CheckReminders;
+var
+  i:integer;
+
+begin
+  for i := ReminderCallList.Count-1 downto 0 do
+    if(EvaluatedReminders.IndexOfPiece(Piece(ReminderCallList[i], U, 1)) >= 0) then
+      ReminderCallList.Delete(i);
+  if(ReminderCallList.Count > 0) then
+    CallRPCWhenIdle(IdleCallEvaluateReminder,ReminderCallList[0])
+end;
+*)
+
+procedure CheckReminders;
+var
+  RemList: TStringList;
+  i: integer;
+  Code: string;
+
+begin
+  for i := ReminderCallList.Count-1 downto 0 do
+    if(EvaluatedReminders.IndexOfPiece(Piece(ReminderCallList[i],U,1)) >= 0) then
+      ReminderCallList.Delete(i);
+  if(ReminderCallList.Count > 0) then
+  begin
+    RemList := TStringList.Create;
+    try
+      while (ReminderCallList.Count > 0) do
+      begin
+        Code := Piece(ReminderCallList[0],U,1);
+        ReminderCallList.Delete(0);
+        repeat
+          i := ReminderCallList.IndexOfPiece(Code);
+          if(i >= 0) then
+            ReminderCallList.Delete(i);
+        until(i < 0);
+        RemList.Add(Code);
+      end;
+      if(RemList.Count > 0) then
+      begin
+        EvaluateReminders(RemList);
+        FastAssign(RPCBrokerV.Results, RemList);
+        for i := 0 to RemList.Count-1 do
+          ReminderEvaluated(RemList[i], (i = (RemList.Count-1)));
+      end;
+    finally
+      RemList.Free;
+    end;
+  end;
+end;
+
+procedure ResetReminderLoad;
+begin
+  LastReminderLocation := -2;
+  LoadReminderData;
+end;
+
+procedure LoadReminderData(ProcessingInBackground: boolean = FALSE);
+var
+  i, idx: integer;
+  RemID: string;
+  TempList: TORStringList;
+
+begin
+  if(RemindersStarted and (LastReminderLocation <> Encounter.Location)) then
+  begin
+    LastReminderLocation := Encounter.Location;
+    BeginReminderUpdate;
+    try
+      GetCurrentReminders;
+      TempList := TORStringList.Create;
+      try
+        if(RPCBrokerV.Results.Count > 0) then
+        begin
+          for i := 0 to RPCBrokerV.Results.Count-1 do
+          begin
+            RemID := RPCBrokerV.Results[i];
+            idx := EvaluatedReminders.IndexOfPiece(RemID);
+            if(idx < 0) then
+            begin
+              TempList.Add(RemID);
+              if(not ProcessingInBackground) then
+                ReminderCallList.Add(RemID);
+            end
+            else
+              TempList.Add(EvaluatedReminders[idx]);
+          end;
+        end;
+        // FastAssign(TempList,ActiveReminders);
+        for i := 0 to TempList.Count-1 do
+        begin
+          RemID := Piece(TempList[i],U,1);
+          if(ActiveReminders.indexOfPiece(RemID) < 0) then
+            ActiveReminders.Add(TempList[i]);
+        end;
+      finally
+        TempList.Free;
+      end;
+      CheckReminders;
+      GetOtherReminders(OtherReminders);
+    finally
+      EndReminderUpdate;
+    end;
+  end;
+end;
+
+{ Supporting events for Reminder TreeViews }
+
+procedure GetImageIndex(AData: Pointer; Sender: TObject; Node: TTreeNode);
+var
+  iidx, oidx: integer;
+  Data, Tmp: string;
+
+begin
+  if(Assigned(Node)) then
+  begin
+    oidx := -1;
+    Data := (Node as TORTreeNode).StringData;
+    if(copy(Piece(Data, U, 1),1,1) = CatCode) then
+    begin
+      if(Node.Expanded) then
+        iidx := 1
+      else
+        iidx := 0;
+    end
+    else
+    begin
+      Tmp := Piece(Data, U, 6);
+      //if(Tmp = '1') then iidx := 2
+      if (Tmp = '3') or (Tmp = '4') or (Tmp = '1') then iidx :=2     //AGP ERROR CHANGE 26.8
+      else if(Tmp = '0') then iidx := 3
+      else
+      begin
+        if(EvaluatedReminders.IndexOfPiece(copy(Piece(Data, U, 1),2,MaxInt),U,1) < 0) then
+          iidx := 5
+        else
+          iidx := 4;
+      end;
+
+      if(Piece(Data,U,7) = '1') then
+      begin
+        Tmp := copy(Piece(Data, U, 1),2,99);
+        if(ProcessedReminders.IndexOfPiece(Tmp,U,1) >=0) then
+          oidx := 1
+        else
+          oidx:= 0;
+      end;
+    end;
+    Node.ImageIndex := iidx;
+    Node.SelectedIndex := iidx;
+    if(Node.OverlayIndex <> oidx) then
+    begin
+      Node.OverlayIndex := oidx;
+      Node.TreeView.Invalidate;
+    end;
+  end;
+end;
+
+type
+  TRemMenuCmd = (rmClinMaint, rmEdu, rmInq, rmWeb, rmDash, rmEval,
+                 rmDue, rmApplicable, rmNotApplicable, rmEvaluated, rmOther,
+                 rmLegend);
+  TRemViewCmds = rmDue..rmOther;
+
+const
+  RemMenuFolder: array[TRemViewCmds] of TRemFolder =
+                           { rmDue           } (rfDue,
+                           { rmApplicable    }  rfApplicable,
+                           { rmNotApplicable }  rfNotApplicable,
+                           { rmEvaluated     }  rfEvaluated,
+                           { rmOther         }  rfOther);
+
+  RemMenuNames: array[TRemMenuCmd] of string = (
+                           { rmClinMaint     }  ClinMaintText,
+                           { rmEdu           }  'Education Topic Definition',
+                           { rmInq           }  'Reminder Inquiry',
+                           { rmWeb           }  'Reference Information',
+                           { rmDash          }  '-',
+                           { rmEval          }  'Evaluate Reminder',
+                           { rmDue           }  DueText,
+                           { rmApplicable    }  ApplicableText,
+                           { rmNotApplicable }  NotApplicableText,
+                           { rmEvaluated     }  EvaluatedText,
+                           { rmOther         }  OtherText,
+                           { rmLegend        }  'Reminder Icon Legend');
+
+
+  EvalCatName = 'Evaluate Category Reminders';
+
+function GetEducationTopics(EIEN: string): string;
+var
+  i, idx: integer;
+  Tmp, Data: string;
+
+begin
+  if(not assigned(EducationTopics)) then
+    EducationTopics := TORStringList.Create;
+  idx := EducationTopics.IndexOfPiece(EIEN);
+  if(idx < 0) then
+  begin
+    Tmp := copy(EIEN,1,1);
+    idx := StrToIntDef(copy(EIEN,2,MaxInt),0);
+    if(Tmp = RemCode) then
+      GetEducationTopicsForReminder(idx)
+    else
+    if(Tmp = EduCode) then
+      GetEducationSubtopics(idx)
+    else
+      RPCBrokerV.Results.Clear;
+    Tmp := EIEN;
+    if(RPCBrokerV.Results.Count > 0) then
+    begin
+      for i := 0 to RPCBrokerV.Results.Count-1 do
+      begin
+        Data := RPCBrokerV.Results[i];
+        Tmp := Tmp + U + Piece(Data, U, 1) + ';';
+        if(Piece(Data, U, 3) = '') then
+          Tmp := Tmp + Piece(Data, U, 2)
+        else
+          Tmp := Tmp + Piece(Data, U, 3);
+      end;
+    end;
+    idx := EducationTopics.Add(Tmp);
+  end;
+  Result := EducationTopics[idx];
+  idx := pos(U, Result);
+  if(idx > 0) then
+    Result := copy(Result,Idx+1,MaxInt)
+  else
+    Result := '';
+end;
+
+function GetWebPageName(idx :integer): string;
+begin
+  Result := Piece(WebPages[idx],U,2);
+end;
+
+function GetWebPageAddress(idx: integer): string;
+begin
+  Result := Piece(WebPages[idx],U,3);
+end;
+
+function GetWebPages(EIEN: string): string; overload;
+var
+  i, idx: integer;
+  Tmp, Data, Title: string;
+  RIEN: string;
+
+begin
+  RIEN := RemCode + EIEN;
+  if(not assigned(WebPages)) then
+    WebPages := TORStringList.Create;
+  idx := WebPages.IndexOfPiece(RIEN);
+  if(idx < 0) then
+  begin
+    GetReminderWebPages(EIEN);
+    Tmp := RIEN;
+    if(RPCBrokerV.Results.Count > 0) then
+    begin
+      for i := 0 to RPCBrokerV.Results.Count-1 do
+      begin
+        Data := RPCBrokerV.Results[i];
+        if(Piece(Data,U,1) = '1') and (Piece(Data,U,3) <> '') then
+        begin
+          Data := U + Piece(Data,U,4) + U + Piece(Data,U,3);
+          if(Piece(Data,U,2) = '') then
+          begin
+            Title := Piece(data,U,3);
+            if(length(Title) > 60) then
+              Title := copy(Title,1,57) + '...';
+            SetPiece(Data,U,2,Title);
+          end;
+          //if(copy(UpperCase(Piece(Data, U, 3)),1,7) <> 'HTTP://') then
+          //  SetPiece(Data, U, 3,'http://'+Piece(Data,U,3));
+          idx := WebPages.IndexOf(Data);
+          if(idx < 0) then
+            idx := WebPages.Add(Data);
+          Tmp := Tmp + U + IntToStr(idx);
+        end;
+      end;
+    end;
+    idx := WebPages.Add(Tmp);
+  end;
+  Result := WebPages[idx];
+  idx := pos(U, Result);
+  if(idx > 0) then
+    Result := copy(Result,Idx+1,MaxInt)
+  else
+    Result := '';
+end;
+
+function ReminderName(IEN: integer): string;
+var
+  idx: integer;
+  SIEN: string;
+
+begin
+  SIEN := IntToStr(IEN);
+  Result := '';
+  idx := EvaluatedReminders.IndexOfPiece(SIEN);
+  if(idx >= 0) then
+    Result := piece(EvaluatedReminders[idx],U,2);
+  if(Result = '') then
+  begin
+    idx := ActiveReminders.IndexOfPiece(SIEN);
+    if(idx >= 0) then
+      Result := piece(ActiveReminders[idx],U,2);
+  end;
+  if(Result = '') then
+  begin
+    idx := OtherReminders.IndexOfPiece(SIEN, U, 5);
+    if(idx >= 0) then
+      Result := piece(OtherReminders[idx],U,3);
+  end;
+  if(Result = '') then
+  begin
+    idx := RemindersInProcess.IndexOfPiece(SIEN);
+    if(idx >= 0) then
+      Result := TReminder(RemindersInProcess.Objects[idx]).PrintName;
+  end;
+end;
+
+procedure ReminderClinMaintClicked(AData: pointer; Sender: TObject);
+var
+  ien: integer;
+
+begin
+  ien := (Sender as TMenuItem).Tag;
+  if(ien > 0) then
+    ReportBox(DetailReminder(ien), RemMenuNames[rmClinMaint] + ': '+ ReminderName(ien), TRUE);
+end;
+
+procedure ReminderEduClicked(AData: pointer; Sender: TObject);
+var
+  ien: integer;
+
+begin
+  ien := (Sender as TMenuItem).Tag;
+  if(ien > 0) then
+    ReportBox(EducationTopicDetail(ien), 'Education Topic: ' + (Sender as TMenuItem).Caption, TRUE);
+end;
+
+procedure ReminderInqClicked(AData: pointer; Sender: TObject);
+var
+  ien: integer;
+
+begin
+  ien := (Sender as TMenuItem).Tag;
+  if(ien > 0) then
+    ReportBox(ReminderInquiry(ien), 'Reminder Inquiry: '+ ReminderName(ien), TRUE);
+end;
+
+procedure ReminderWebClicked(AData: pointer; Sender: TObject);
+var
+  idx: integer;
+
+begin
+  idx := (Sender as TMenuItem).Tag-1;
+  if(idx >= 0) then
+    GotoWebPage(GetWebPageAddress(idx));
+end;
+
+procedure EvalReminder(ien: integer);
+var
+  Msg, RName: string;
+  NewStatus: string;
+
+begin
+  if(ien > 0) then
+  begin
+    NewStatus := EvaluateReminder(IntToStr(ien));
+    ReminderEvaluated(NewStatus);
+    NewStatus := piece(NewStatus,U,6);
+    RName := ReminderName(ien);
+    if(RName = '') then RName := 'Reminder';
+         if(NewStatus = '1') then Msg := 'Due'
+    else if(NewStatus = '0') then Msg := 'Applicable'
+    else if(NewStatus = '3') then Msg := 'Error'    //AGP Error code change 26.8
+    else if (NewStatus = '4') then Msg := 'CNBD'    //AGP Error code change 26.8
+    else                          Msg := 'Not Applicable';
+    Msg := RName + ' is ' + Msg + '.';
+    InfoBox(Msg, RName + ' Evaluation', MB_OK);
+  end;
+end;
+
+procedure EvalProcessed;
+var
+  i: integer;
+
+begin
+  if(ProcessedReminders.Count > 0) then
+  begin
+    BeginReminderUpdate;
+    try
+      while(ProcessedReminders.Count > 0) do
+      begin
+        if(ReminderCallList.IndexOf(ProcessedReminders[0]) < 0) then
+          ReminderCallList.Add(ProcessedReminders[0]);
+        repeat
+          i := EvaluatedReminders.IndexOfPiece(Piece(ProcessedReminders[0],U,1));
+          if(i >= 0) then
+            EvaluatedReminders.Delete(i);
+        until(i < 0);
+        ProcessedReminders.Delete(0);
+      end;
+      CheckReminders;
+    finally
+      EndReminderUpdate(TRUE);
+    end;
+  end;
+end;
+
+procedure ReminderEvalClicked(AData: pointer; Sender: TObject);
+begin
+  EvalReminder((Sender as TMenuItem).Tag);
+end;
+
+procedure ReminderViewFolderClicked(AData: pointer; Sender: TObject);
+var
+  rfldrs: TRemFolders;
+  rfldr: TRemFolder;
+
+begin
+  rfldrs := GetRemFolders;
+  rfldr := TRemFolder((Sender as TMenuItem).Tag);
+  if rfldr in rfldrs then
+    exclude(rfldrs, rfldr)
+  else
+    include(rfldrs, rfldr);
+  SetRemFolders(rfldrs);
+end;
+
+procedure EvaluateCategoryClicked(AData: pointer; Sender: TObject);
+var
+  Node: TORTreeNode;
+  Code: string;
+  i: integer;
+
+begin
+  if(Sender is TMenuItem) then
+  begin
+    BeginReminderUpdate;
+    try
+      Node := TORTreeNode(TORTreeNode(TMenuItem(Sender).Tag).GetFirstChild);
+      while assigned(Node) do
+      begin
+        Code := Piece(Node.StringData,U,1);
+        if(copy(Code,1,1) = RemCode) then
+        begin
+          Code := copy(Code,2,MaxInt);
+          if(ReminderCallList.IndexOf(Code) < 0) then
+            ReminderCallList.Add(copy(Node.StringData,2,MaxInt));
+          repeat
+            i := EvaluatedReminders.IndexOfPiece(Code);
+            if(i >= 0) then
+              EvaluatedReminders.Delete(i);
+          until(i < 0);
+        end;
+        Node := TORTreeNode(Node.GetNextSibling);
+      end;
+      CheckReminders;
+    finally
+      EndReminderUpdate(TRUE);
+    end;
+  end;
+end;
+
+procedure ReminderIconLegendClicked(AData: pointer; Sender: TObject);
+begin
+  ShowIconLegend(ilReminders);
+end;
+
+procedure ReminderMenuBuilder(MI: TMenuItem; RemStr: string;
+                              IncludeActions, IncludeEval, ViewFolders: boolean);
+var
+  M: TMethod;
+  Tmp: string;
+  Cnt: integer;
+  RemID: integer;
+  cmd: TRemMenuCmd;
+
+  function Add(Text: string; Parent: TMenuItem; Tag: integer; Typ: TRemMenuCmd): TORMenuItem;
+  var
+    InsertMenu: boolean;
+    idx: integer;
+
+  begin
+    Result := nil;
+    InsertMenu := TRUE;
+    if(Parent = MI) then
+    begin
+      if(MI.Count > Cnt) then
+      begin
+        Result := TORMenuItem(MI.Items[Cnt]);
+        Result.Enabled := TRUE;
+        Result.Visible := TRUE;
+        Result.ImageIndex := -1;
+        while Result.Count > 0 do
+          Result.Delete(Result.Count-1);
+        InsertMenu := FALSE;
+      end;
+      inc(Cnt);
+    end;
+    if(not assigned(Result)) then
+      Result := TORMenuItem.Create(MI);
+    if(Text = '') then
+      Result.Caption := RemMenuNames[Typ]
+    else
+      Result.Caption := Text;
+    Result.Tag := Tag;
+    Result.Data := RemStr;
+    if(Tag <> 0) then
+    begin
+      case Typ of
+        rmClinMaint:  M.Code := @ReminderClinMaintClicked;
+        rmEdu:        M.Code := @ReminderEduClicked;
+        rmInq:        M.Code := @ReminderInqClicked;
+        rmWeb:        M.Code := @ReminderWebClicked;
+        rmEval:       M.Code := @ReminderEvalClicked;
+        rmDue..rmOther:
+          begin
+            M.Code := @ReminderViewFolderClicked;
+            case Typ of
+              rmDue:           idx := 0;
+              rmApplicable:    idx := 2;
+              rmNotApplicable: idx := 4;
+              rmEvaluated:     idx := 6;
+              rmOther:         idx := 8;
+              else             idx := -1;
+            end;
+            if(idx >= 0) and (RemMenuFolder[Typ] in GetRemFolders) then
+              inc(idx);
+            Result.ImageIndex := idx;
+          end;
+        rmLegend:     M.Code := @ReminderIconLegendClicked;
+        else
+          M.Code := nil;
+      end;
+      if(assigned(M.Code)) then
+        Result.OnClick := TNotifyEvent(M)
+      else
+        Result.OnClick := nil;
+    end;
+    if(InsertMenu) then
+      Parent.Add(Result);
+  end;
+
+  procedure AddEducationTopics(Item: TMenuItem; EduStr: string);
+  var
+    i, j: integer;
+    Code: String;
+    NewEduStr: string;
+    itm: TMenuItem;
+
+  begin
+    if(EduStr <> '') then
+    begin
+      repeat
+        i := pos(';', EduStr);
+        j := pos(U, EduStr);
+        if(j = 0) then j := length(EduStr)+1;
+        Code := copy(EduStr,1,i-1);
+        //AddEducationTopics(Add(copy(EduStr,i+1,j-i-1), Item, StrToIntDef(Code, 0), rmEdu),
+        //                   GetEducationTopics(EduCode + Code));
+
+        NewEduStr := GetEducationTopics(EduCode + Code);
+        if(NewEduStr = '') then
+          Add(copy(EduStr,i+1,j-i-1), Item, StrToIntDef(Code, 0), rmEdu)
+        else
+        begin
+          itm := Add(copy(EduStr,i+1,j-i-1), Item, 0, rmEdu);
+          Add(copy(EduStr,i+1,j-i-1), itm, StrToIntDef(Code, 0), rmEdu);
+          Add('', Itm, 0, rmDash);
+          AddEducationTopics(itm, NewEduStr);
+        end;
+
+        delete(EduStr,1,j);
+      until(EduStr = '');
+    end;
+  end;
+
+  procedure AddWebPages(Item: TMenuItem; WebStr: string);
+  var
+    i, idx: integer;
+
+  begin
+    if(WebStr <> '') then
+    begin
+      repeat
+        i := pos(U, WebStr);
+        if(i = 0) then i := length(WebStr)+1;
+        idx := StrToIntDef(copy(WebStr,1,i-1),-1);
+        if(idx >= 0) then
+          Add(GetWebPageName(idx), Item, idx+1, rmWeb);
+        delete(WebStr,1,i);
+      until(WebStr = '');
+    end;
+  end;
+
+
+begin
+  RemID := StrToIntDef(copy(Piece(RemStr,U,1),2,MaxInt),0);
+  Cnt := 0;
+  M.Data := nil;
+
+  if(RemID > 0) then
+  begin
+    Add('', MI, RemID, rmClinMaint);
+    Tmp := GetEducationTopics(RemCode + IntToStr(RemID));
+    if(Tmp <> '') then
+      AddEducationTopics(Add('', MI, 0, rmEdu), Tmp)
+    else
+      Add('', MI, 0, rmEdu).Enabled := FALSE;
+    Add('', MI, RemID, rmInq);
+    Tmp := GetWebPages(IntToStr(RemID));
+    if(Tmp <> '') then
+      AddWebPages(Add('', MI, 0, rmWeb), Tmp)
+    else
+      Add('', MI, 0, rmWeb).Enabled := FALSE;
+
+    if(IncludeActions or IncludeEval) then
+    begin
+      Add('', MI, 0, rmDash);
+      Add('', MI, RemID, rmEval);
+    end;
+  end;
+
+  if(ViewFolders) then
+  begin
+    Add('', MI, 0, rmDash);
+    for cmd := low(TRemViewCmds) to high(TRemViewCmds) do
+      Add('', MI, ord(RemMenuFolder[cmd]), cmd);
+  end;
+
+  Add('', MI, 0, rmDash);
+  Add('', MI, 1, rmLegend);
+
+  while MI.Count > Cnt do
+    MI.Delete(MI.Count-1);
+end;
+
+procedure ReminderTreePopup(AData: pointer; Sender: TObject);
+begin
+  ReminderMenuBuilder((Sender as TPopupMenu).Items, (Sender as TORPopupMenu).Data, TRUE, FALSE, FALSE);
+end;
+
+procedure ReminderTreePopupCover(AData: pointer; Sender: TObject);
+begin
+  ReminderMenuBuilder((Sender as TPopupMenu).Items, (Sender as TORPopupMenu).Data, FALSE, FALSE, FALSE);
+end;
+
+procedure ReminderTreePopupDlg(AData: pointer; Sender: TObject);
+begin
+  ReminderMenuBuilder((Sender as TPopupMenu).Items, (Sender as TORPopupMenu).Data, FALSE, TRUE, FALSE);
+end;
+
+procedure ReminderMenuItemSelect(AData: pointer; Sender: TObject);
+begin
+  ReminderMenuBuilder((Sender as TMenuItem), (Sender as TORMenuItem).Data, FALSE, FALSE, TRUE);
+end;
+
+procedure SetReminderPopupRoutine(Menu: TPopupMenu);
+var
+  M: TMethod;
+
+begin
+  M.Code := @ReminderTreePopup;
+  M.Data := nil;
+  Menu.OnPopup := TNotifyEvent(M);
+end;
+
+procedure SetReminderPopupCoverRoutine(Menu: TPopupMenu);
+var
+  M: TMethod;
+
+begin
+  M.Code := @ReminderTreePopupCover;
+  M.Data := nil;
+  Menu.OnPopup := TNotifyEvent(M);
+end;
+
+procedure SetReminderPopupDlgRoutine(Menu: TPopupMenu);
+var
+  M: TMethod;
+
+begin
+  M.Code := @ReminderTreePopupDlg;
+  M.Data := nil;
+  Menu.OnPopup := TNotifyEvent(M);
+end;
+
+procedure SetReminderMenuSelectRoutine(Menu: TMenuItem);
+var
+  M: TMethod;
+
+begin
+  M.Code := @ReminderMenuItemSelect;
+  M.Data := nil;
+  Menu.OnClick := TNotifyEvent(M);
+end;
+
+function ReminderMenu(Sender: TComponent): TORPopupMenu;
+begin
+  if(Sender.Tag = RemTreeCode) then
+  begin
+    if(not assigned(ReminderTreeMenuDlg)) then
+    begin
+      ReminderTreeMenuDlg := TORPopupMenu.Create(nil);
+      SetReminderPopupDlgRoutine(ReminderTreeMenuDlg)
+    end;
+    Result := ReminderTreeMenuDlg;
+  end
+  else
+  begin
+    if(not assigned(ReminderTreeMenu)) then
+    begin
+      ReminderTreeMenu := TORPopupMenu.Create(nil);
+      SetReminderPopupRoutine(ReminderTreeMenu);
+    end;
+    Result := ReminderTreeMenu;
+  end;
+end;
+
+procedure RemContextPopup(AData: Pointer; Sender: TObject; MousePos: TPoint;
+                          var Handled: Boolean);
+var
+  Menu: TORPopupMenu;
+  MItem: TMenuItem;
+  M: TMethod;
+  p1: string;
+  UpdateMenu: boolean;
+
+begin
+  UpdateMenu := TRUE;
+  Menu := nil;
+  with (Sender as TORTreeView) do
+  begin
+    if((htOnItem in GetHitTestInfoAt(MousePos.X, MousePos.Y)) and (assigned(Selected))) then
+    begin
+      p1 := Piece((Selected as TORTreeNode).StringData, U, 1);
+      if(Copy(p1,1,1) = RemCode) then
+      begin
+        Menu := ReminderMenu(TComponent(Sender));
+        Menu.Data := TORTreeNode(Selected).StringData;
+      end
+      else
+      if(Copy(p1,1,1) = CatCode) and (p1 <> OtherCatID) and (Selected.HasChildren) then
+      begin
+        if(not assigned(ReminderCatMenu)) then
+        begin
+          ReminderCatMenu := TPopupMenu.Create(nil);
+          MItem := TMenuItem.Create(ReminderCatMenu);
+          MItem.Caption := EvalCatName;
+          M.Data := nil;
+          M.Code := @EvaluateCategoryClicked;
+          MItem.OnClick := TNotifyEvent(M);
+          ReminderCatMenu.Items.Add(MItem);
+        end
+        else
+          MItem := ReminderCatMenu.Items[0];
+        PopupMenu := ReminderCatMenu;
+        MItem.Tag := Integer(TORTreeNode(Selected));
+        UpdateMenu := FALSE;
+      end;
+    end;
+    if UpdateMenu then
+      PopupMenu := Menu;
+    Selected := Selected; // This strange line Keeps item selected after a right click
+    if(not assigned(PopupMenu)) then
+      Handled := TRUE;
+  end;
+end;
+
+{ StringData of the TORTreeNodes will be in the format:
+  1          2          3             4                        5        6   7
+  TYPE + IEN^PRINT NAME^DUE DATE/TIME^LAST OCCURENCE DATE/TIME^PRIORITY^DUE^DIALOG
+         8                 9                            10
+         Formated Due Date^Formated Last Occurence Date^InitialAbsoluteIdx
+
+  where TYPE     C=Category, R=Reminder
+        PRIORITY 1=High, 2=Normal, 3=Low
+        DUE      0=Applicable, 1=Due, 2=Not Applicable
+        DIALOG   1=Active Dialog Exists
+}
+procedure BuildReminderTree(Tree: TORTreeView);
+var
+  ExpandedStr: string;
+  TopID1, TopID2: string;
+  SelID1, SelID2: string;
+  i, j: integer;
+  NeedLost: boolean;
+  Tmp, Data, LostCat, Code: string;
+  Node: TORTreeNode;
+  M: TMethod;
+  Rem: TReminder;
+  OpenDue, Found: boolean;
+
+  function Add2Tree(Folder: TRemFolder; CatID: string; Node: TORTreeNode = nil): TORTreeNode;
+  begin
+    if (Folder = rfUnknown) or (Folder in GetRemFolders) then
+    begin
+      if(CatID = LostCatID) then
+      begin
+        if(NeedLost) then
+        begin
+          (Tree.Items.AddFirst(nil,'') as TORTreeNode).StringData := LostCatString;
+          NeedLost := FALSE;
+        end;
+      end;
+
+      if(not assigned(Node)) then
+        Node := Tree.FindPieceNode(CatID, 1);
+      if(assigned(Node)) then
+      begin
+        Result := (Tree.Items.AddChild(Node,'') as TORTreeNode);
+        Result.StringData := Data;
+      end
+      else
+        Result := nil;
+    end
+    else
+      Result := nil;
+  end;
+
+begin
+  if(not assigned(Tree)) then exit;
+  Tree.Items.BeginUpdate;
+  try
+    Tree.NodeDelim := U;
+    Tree.NodePiece := 2;
+    M.Code := @GetImageIndex;
+    M.Data := nil;
+    Tree.OnGetImageIndex := TTVExpandedEvent(M);
+    Tree.OnGetSelectedIndex := TTVExpandedEvent(M);
+    M.Code := @RemContextPopup;
+    Tree.OnContextPopup := TContextPopupEvent(M);
+
+    if(assigned(Tree.TopItem)) then
+    begin
+      TopID1 := Tree.GetNodeID(TORTreeNode(Tree.TopItem), 1, IncludeParentID);
+      TopID2 := Tree.GetNodeID(TORTreeNode(Tree.TopItem), 1);
+    end
+    else
+      TopID1 := U;
+
+    if(assigned(Tree.Selected)) then
+    begin
+      SelID1 := Tree.GetNodeID(TORTreeNode(Tree.Selected), 1, IncludeParentID);
+      SelID2 := Tree.GetNodeID(TORTreeNode(Tree.Selected), 1);
+    end
+    else
+      SelID1 := U;
+
+    ExpandedStr := Tree.GetExpandedIDStr(1, IncludeParentID);
+    OpenDue := (ExpandedStr = '');
+
+    Tree.Items.Clear;
+    NeedLost := TRUE;
+
+    if(rfDue in GetRemFolders) then
+      (Tree.Items.Add(nil,'') as TORTreeNode).StringData := DueCatString;
+    if(rfApplicable in GetRemFolders) then
+      (Tree.Items.Add(nil,'') as TORTreeNode).StringData := ApplCatString;
+    if(rfNotApplicable in GetRemFolders) then
+      (Tree.Items.Add(nil,'') as TORTreeNode).StringData := NotApplCatString;
+    if(rfEvaluated in GetRemFolders) then
+      (Tree.Items.Add(nil,'') as TORTreeNode).StringData := EvaluatedCatString;
+    if(rfOther in GetRemFolders) then
+      (Tree.Items.Add(nil,'') as TORTreeNode).StringData := OtherCatString;
+
+    for i := 0 to EvaluatedReminders.Count-1 do
+    begin
+      Data := RemCode + EvaluatedReminders[i];
+      Tmp := Piece(Data,U,6);
+      //     if(Tmp = '1') then Add2Tree(rfDue, DueCatID)
+      if(Tmp = '1') or (Tmp = '3') or (Tmp = '4') then Add2Tree(rfDue, DueCatID) //AGP Error code change 26.8
+      else if(Tmp = '0') then Add2Tree(rfApplicable, ApplCatID)
+      else                    Add2Tree(rfNotApplicable, NotApplCatID);
+      Add2Tree(rfEvaluated, EvaluatedCatID);
+    end;
+
+    if(rfOther in GetRemFolders) and (OtherReminders.Count > 0) then
+    begin
+      for i := 0 to OtherReminders.Count-1 do
+      begin
+        Tmp := OtherReminders[i];
+        if(Piece(Tmp, U, 2) = CatCode) then
+          Data := CatCode + Piece(Tmp, U, 1)
+        else
+        begin
+          Code := Piece(Tmp, U, 5);
+          Data := RemCode + Code;
+          Node := Tree.FindPieceNode(Data, 1);
+          if(assigned(Node)) then
+            Data := Node.StringData
+          else
+          begin
+            j := EvaluatedReminders.IndexOfPiece(Code);
+            if(j >= 0) then
+              SetPiece(Data, U, 6, Piece(EvaluatedReminders[j], U, 6));
+          end;
+        end;
+        SetPiece(Data, U, 2, Piece(Tmp, U ,3));
+        SetPiece(Data, U, 7, Piece(Tmp, U, 6));
+        Tmp := CatCode + Piece(Tmp, U, 4);
+        Add2Tree(rfOther, OtherCatID, Tree.FindPieceNode(Tmp, 1));
+      end;
+    end;
+
+  { The Lost category is for reminders being processed that are no longer in the
+    reminder tree view.  This can happen with reminders that were Due or Applicable,
+    but due to user action are no longer applicable, or due to location changes.
+    The Lost category will not be used if a lost reminder is in the other list. }
+
+    if(RemindersInProcess.Count > 0) then
+    begin
+      for i := 0 to RemindersInProcess.Count-1 do
+      begin
+        Rem := TReminder(RemindersInProcess.Objects[i]);
+        Tmp := RemCode + Rem.IEN;
+        Found := FALSE;
+        Node := nil;
+        repeat
+          Node := Tree.FindPieceNode(Tmp, 1, #0, Node); // look in the tree first
+          if((not Found) and (not assigned(Node))) then
+          begin
+            Data := Tmp + U + Rem.PrintName + U + Rem.DueDateStr + U + Rem.LastDateStr + U +
+                    IntToStr(Rem.Priority) + U + Rem.Status;
+                 if(Rem.Status = '1') then LostCat := DueCatID
+            else if(Rem.Status = '0') then LostCat := ApplCatID
+            else                           LostCat := LostCatID;
+            Node := Add2Tree(rfUnknown, LostCat);
+          end;
+          if(assigned(Node)) then
+          begin
+            Node.Bold := Rem.Processing;
+            Found := TRUE;
+          end;
+        until(Found and (not assigned(Node)));
+      end;
+    end;
+
+    for i := 0 to Tree.Items.Count-1 do
+    begin
+      Node := TORTreeNode(Tree.Items[i]);
+      for j := 3 to 4 do
+      begin
+        Tmp := Piece(Node.StringData, U, j);
+        if(Tmp = '') then
+          Data := ''
+        else
+          Data := FormatFMDateTimeStr(ReminderDateFormat, Tmp);
+        Node.SetPiece(j + (RemTreeDateIdx - 3), Data);
+      end;
+      Node.SetPiece(RemTreeDateIdx + 2, IntToStr(Node.AbsoluteIndex));
+      Tmp := Piece(Node.StringData, U, 5);
+      if(Tmp <> '1') and (Tmp <> '3') then
+        Node.SetPiece(5, '2');
+    end;
+
+  finally
+    Tree.Items.EndUpdate;
+  end;
+
+  if(SelID1 = U) then
+    Node := nil
+  else
+  begin
+    Node := Tree.FindPieceNode(SelID1, 1, IncludeParentID);
+    if(not assigned(Node)) then
+      Node := Tree.FindPieceNode(SelID2, 1);
+    if(assigned(Node)) then
+      Node.EnsureVisible;
+  end;
+  Tree.Selected := Node;
+
+  Tree.SetExpandedIDStr(1, IncludeParentID, ExpandedStr);
+  if(OpenDue) then
+  begin
+    Node := Tree.FindPieceNode(DueCatID, 1);
+    if(assigned(Node)) then
+      Node.Expand(FALSE);
+  end;
+
+  if(TopID1 = U) then
+    Tree.TopItem := Tree.Items.GetFirstNode
+  else
+  begin
+    Tree.TopItem := Tree.FindPieceNode(TopID1, 1, IncludeParentID);
+    if(not assigned(Tree.TopItem)) then
+      Tree.TopItem := Tree.FindPieceNode(TopID2, 1);
+  end;
+end;
+
+function ReminderNode(Node: TTreeNode): TORTreeNode;
+var
+  p1: string;
+
+begin
+  Result := nil;
+  if(assigned(Node)) then
+  begin
+    p1 := Piece((Node as TORTreeNode).StringData, U, 1);
+    if(Copy(p1,1,1) = RemCode) then
+      Result := (Node as TORTreeNode)
+  end;
+end;
+
+procedure LocationChanged(Sender: TObject);
+begin
+  LoadReminderData;
+end;
+
+procedure ClearReminderData;
+var
+  Changed: boolean;
+
+begin
+  if(assigned(frmReminderTree)) then
+    frmReminderTree.Free;
+  Changed := ((ActiveReminders.Count > 0) or (OtherReminders.Count > 0) or
+              (ProcessingChangeString <> U));
+  ActiveReminders.Notifier.BeginUpdate;
+  OtherReminders.Notifier.BeginUpdate;
+  RemindersInProcess.Notifier.BeginUpdate;
+  try
+    ProcessedReminders.Clear;
+    if(assigned(KillReminderDialogProc)) then
+      KillReminderDialogProc(nil);
+    ActiveReminders.Clear;
+    OtherReminders.Clear;
+    EvaluatedReminders.Clear;
+    ReminderCallList.Clear;
+    RemindersInProcess.KillObjects;
+    RemindersInProcess.Clear;
+    LastProcessingList := '';
+    InitialRemindersLoaded := FALSE;
+    CoverSheetRemindersInBackground := FALSE;
+  finally
+    RemindersInProcess.Notifier.EndUpdate;
+    OtherReminders.Notifier.EndUpdate;
+    ActiveReminders.Notifier.EndUpdate(Changed);
+    RemindersStarted := FALSE;
+    LastReminderLocation := -2;
+    RemForm.Form := nil;
+  end;
+end;
+
+procedure RemindersInProcessChanged(Data: Pointer; Sender: TObject; var CanNotify: boolean);
+var
+  CurProcessing: string;
+begin
+  CurProcessing := ProcessingChangeString;
+  CanNotify := (LastProcessingList <> CurProcessing);
+  if(CanNotify) then
+    LastProcessingList := CurProcessing;
+end;
+
+procedure InitReminderObjects;
+var
+  M: TMethod;
+
+  procedure InitReminderList(var List: TORStringList);
+  begin
+    if(not assigned(List)) then
+      List := TORStringList.Create;
+  end;
+
+begin
+  InitReminderList(ActiveReminders);
+  InitReminderList(OtherReminders);
+  InitReminderList(EvaluatedReminders);
+  InitReminderList(ReminderCallList);
+  InitReminderList(RemindersInProcess);
+  InitReminderList(ProcessedReminders);
+
+  M.Code := @RemindersInProcessChanged;
+  M.Data := nil;
+  RemindersInProcess.Notifier.OnNotify :=  TCanNotifyEvent(M);
+
+  AddToNotifyWhenCreated(LocationChanged, TEncounter);
+
+  RemForm.Form := nil;
+end;
+
+procedure FreeReminderObjects;
+begin
+  KillObj(@ActiveReminders);
+  KillObj(@OtherReminders);
+  KillObj(@EvaluatedReminders);
+  KillObj(@ReminderTreeMenuDlg);
+  KillObj(@ReminderTreeMenu);
+  KillObj(@ReminderCatMenu);
+  KillObj(@EducationTopics);
+  KillObj(@WebPages);
+  KillObj(@ReminderCallList);
+  KillObj(@TmpActive);
+  KillObj(@TmpOther);
+  KillObj(@RemindersInProcess, TRUE);
+  KillObj(@ReminderDialogInfo, TRUE);
+  KillObj(@PCERootList, TRUE);
+  KillObj(@ProcessedReminders);
+end;
+
+function GetReminder(ARemData: string): TReminder;
+var
+  idx: integer;
+  SIEN: string;
+
+begin
+  Result := nil;
+  SIEN := Piece(ARemData, U, 1);
+  if(Copy(SIEN,1,1) = RemCode) then
+  begin
+    SIEN := copy(Sien, 2, MaxInt);
+    idx := RemindersInProcess.IndexOf(SIEN);
+    if(idx < 0) then
+    begin
+      RemindersInProcess.Notifier.BeginUpdate;
+      try
+        idx := RemindersInProcess.AddObject(SIEN, TReminder.Create(ARemData));
+      finally
+        RemindersInProcess.Notifier.EndUpdate;
+      end;
+    end;
+    Result := TReminder(RemindersInProcess.Objects[idx]);
+  end;
+end;
+
+var
+  ScootOver: integer = 0;
+  
+procedure WordWrap(AText: string; Output: TStrings; LineLength: integer;
+                                                   AutoIndent: integer = 4; MHTest: boolean = false);
+var
+  i, j, l, max, FCount, MHLoop: integer;
+  First, MHRes: boolean;
+  OrgText, Text, Prefix, tmpText: string;
+
+begin
+  StripScreenReaderCodes(AText);
+  inc(LineLength, ScootOver);
+  dec(AutoIndent, ScootOver);
+  FCount := Output.Count;
+  First := TRUE;
+  MHLoop := 1;
+  MHRes := False;
+  tmpText := '';
+  if Pos('~', AText)>0 then MHLoop := 2;
+  for j := 1 to MHLoop do
+  begin
+  if (j = 1) and (MHLoop = 2) then
+    begin
+      tmpText := Piece(AText, '~', 1);
+      MHRes := True;
+    end
+  else if (j = 2) then
+    begin
+      tmpText := Piece(AText, '~', 2);
+      First := False;
+      MHRes := False;
+    end
+  else if (j = 1) and (MHLoop = 1) then
+    begin
+      tmpText := AText;
+      First := False;
+      MHRes := False;
+    end;
+  if tmpText <> '' then OrgText := tmpText
+  else OrgText := InitText(AText);
+  Prefix := StringOfChar(' ',74-LineLength);
+  repeat
+    i := pos(CRCode, OrgText);
+    if(i = 0) then
+    begin
+      Text := OrgText;
+      OrgText := '';
+    end
+    else
+    begin
+      Text := copy(OrgText, 1, i - 1);
+      delete(OrgText, 1, i + CRCodeLen - 1);
+    end;
+    if(Text = '') and (OrgText <> '') then
+    begin
+      Output.Add('');
+      inc(FCount);
+    end;
+    while(Text <> '') do
+    begin
+      max := length(Text);
+      if(max > LineLength) then
+      begin
+        l := LineLength + 1;
+        while(l > 0) and (Text[l] <> ' ') do dec(l);
+        if(l < 1) then
+        begin
+          Output.Add(Prefix+copy(Text,1,LineLength));
+          delete(Text,1,LineLength);
+        end
+        else
+        begin
+          Output.Add(Prefix+copy(Text,1,l-1));
+          while(l <= max) and (Text[l] = ' ') do inc(l);
+          delete(Text,1,l-1);
+        end;
+        if(First) then
+        begin
+          dec(LineLength, AutoIndent);
+          Prefix := Prefix + StringOfChar(' ', AutoIndent);
+          First := FALSE;
+        end;
+      end
+      else
+      begin
+        Output.Add(Prefix+Text);
+        Text := '';
+      end;
+    end;
+    if ((First) and (FCount <> Output.Count)) and (MHRes = False) then
+    begin
+      dec(LineLength, AutoIndent);
+      Prefix := Prefix + StringOfChar(' ', AutoIndent);
+      First := FALSE;
+    end;
+  until(OrgText = '');
+  end;
+end;
+
+function InteractiveRemindersActive: boolean;
+begin
+  if(not InteractiveRemindersActiveChecked) then
+  begin
+    InteractiveRemindersActiveStatus := GetRemindersActive;
+    InteractiveRemindersActiveChecked := TRUE;
+  end;
+  Result := InteractiveRemindersActiveStatus;
+end;
+
+function GetReminderData(Rem: TReminderDialog; Lst: TStrings; Finishing: boolean = FALSE;
+                                                        Historical: boolean = FALSE): integer;
+begin
+  Result := Rem.AddData(Lst, Finishing, Historical);
+end;
+
+function GetReminderData(Lst: TStrings; Finishing: boolean = FALSE;
+                                         Historical: boolean = FALSE): integer;
+var
+  i: integer;
+begin
+  Result := 0;
+  for i := 0 to RemindersInProcess.Count-1 do
+    inc(Result, TReminder(RemindersInProcess.Objects[i]).AddData(Lst, Finishing, Historical));
+end;
+
+procedure SetReminderFormBounds(Frm: TForm; DefX, DefY, DefW, DefH, ALeft, ATop, AWidth, AHeight: integer);
+var
+  Rect: TRect;
+  ScreenW, ScreenH: integer;
+
+begin
+  SystemParametersInfo(SPI_GETWORKAREA, 0, @Rect, 0);
+  ScreenW := Rect.Right - Rect.Left + 1;
+  ScreenH := Rect.Bottom - Rect.Top + 1;
+  if(AWidth = 0) then
+    AWidth := DefW
+  else
+    DefW := AWidth;
+  if(AHeight = 0) then
+    AHeight := DefH
+  else
+    DefH := AHeight;
+  if(DefX = 0) and (DefY = 0) then
+  begin
+    DefX := (ScreenW - DefW) div 2;
+    DefY := (ScreenH - DefH) div 2;
+  end
+  else
+    dec(DefY, DefH);
+  if((ALeft <= 0) or (ATop <= 0) or
+    ((ALeft + AWidth) > ScreenW) or
+    ((ATop + AHeight) > ScreenH)) then
+  begin
+    if(DefX < 0) then
+      DefX := 0
+    else
+    if((DefX + DefW) > ScreenW) then
+      DefX := ScreenW-DefW;
+    if(DefY < 0) then
+      DefY := 0
+    else
+    if((DefY + DefH) > ScreenH) then
+      DefY := ScreenH-DefH;
+    Frm.SetBounds(Rect.Left + DefX, Rect.Top + DefY, DefW, DefH);
+  end
+  else
+    Frm.SetBounds(Rect.Left + ALeft, Rect.Top + ATop, AWidth, AHeight);
+end;
+
+procedure UpdateReminderDialogStatus;
+var
+  TmpSL: TStringList;
+  Changed: boolean;
+
+  procedure Build(AList :TORStringList; PNum: integer);
+  var
+    i: integer;
+    Code: string;
+
+  begin
+    for i := 0 to AList.Count-1 do
+    begin
+      Code := Piece(AList[i],U,PNum);
+      if((Code <> '') and (TmpSL.IndexOf(Code) < 0)) then
+        TmpSL.Add(Code);
+    end;
+  end;
+
+  procedure Reset(AList: TORStringList; PNum, DlgPNum: integer);
+  var
+    i, j: integer;
+    Tmp, Code, Dlg: string;
+
+  begin
+    for i := 0 to TmpSL.Count-1 do
+    begin
+      Code := Piece(TmpSL[i],U,1);
+      j := -1;
+      repeat
+        j := AList.IndexOfPiece(Code, U, PNum, j);
+        if(j >= 0) then
+        begin
+          Dlg := Piece(TmpSL[i],U,2);
+          if(Dlg <> Piece(AList[j], U, DlgPNum)) then
+          begin
+            Tmp := AList[j];
+            SetPiece(Tmp, U, DlgPNum, Dlg);
+            AList[j] := Tmp;
+            Changed := TRUE;
+          end;
+        end;
+      until (j < 0);
+    end;
+  end;
+
+begin
+  Changed := FALSE;
+  BeginReminderUpdate;
+  try
+    TmpSL := TStringList.Create;
+    try
+      Build(ActiveReminders, 1);
+      Build(OtherReminders, 5);
+      Build(EvaluatedReminders, 1);
+      GetDialogStatus(TmpSL);
+      Reset(ActiveReminders, 1, 7);
+      Reset(OtherReminders, 5, 6);
+      Reset(EvaluatedReminders, 1, 7);
+    finally
+      TmpSL.Free;
+    end;
+  finally
+    EndReminderUpdate(Changed);
+  end;
+end;
+
+procedure PrepText4NextLine(var txt: string);
+var
+  tlen: integer;
+
+begin
+  if(txt <> '') then
+  begin
+    tlen := length(txt);
+    if(copy(txt, tlen - CRCodeLen + 1, CRCodeLen) = CRCode) then
+      exit;
+    if(copy(txt, tlen, 1) = '.') then
+      txt := txt + ' ';
+    txt := txt + ' ';
+  end;
+end;
+
+procedure ExpandTIUObjects(var Txt: string; msg: string = '');
+var
+  ObjList: TStringList;
+  Err: TStringList;
+  i, j, k, oLen: integer;
+  obj, ObjTxt: string;
+
+begin
+  ObjList := TStringList.Create;
+  try
+    Err := nil;
+    if(not dmodShared.BoilerplateOK(Txt, CRCode, ObjList, Err)) and (assigned(Err)) then
+    begin
+      try
+        Err.Add(CRLF + 'Contact IRM and inform them about this error.' + CRLF +
+                       'Make sure you give them the name of the reminder that you are processing,' + CRLF +
+                       'and which dialog elements were selected to produce this error.');
+        InfoBox(Err.Text,'Reminder Boilerplate Object Error', MB_OK + MB_ICONERROR);
+      finally
+        Err.Free;
+      end;
+    end;
+    if(ObjList.Count > 0) then
+    begin
+      GetTemplateText(ObjList);
+      i := 0;
+      while (i < ObjList.Count) do
+      begin
+        if(pos(ObjMarker, ObjList[i]) = 1) then
+        begin
+          obj := copy(ObjList[i], ObjMarkerLen+1, MaxInt);
+          if(obj = '') then break;
+          j := i + 1;
+          while (j < ObjList.Count) and (pos(ObjMarker, ObjList[j]) = 0) do
+            inc(j);
+          if((j - i) > 2) then
+          begin
+            ObjTxt := '';
+            for k := i+1 to j-1 do
+              ObjTxt := ObjTxt + CRCode + ObjList[k];
+          end
+          else
+            ObjTxt := ObjList[i+1];
+          i := j;
+          obj := '|' + obj + '|';
+          oLen := length(obj);
+          repeat
+            j := pos(obj, Txt);
+            if(j > 0) then
+            begin
+              delete(Txt, j, OLen);
+              insert(ObjTxt, Txt, j);
+            end;
+          until(j = 0);
+        end
+        else
+          inc(i);
+      end
+    end;
+  finally
+    ObjList.Free;
+  end;
+end;
+
+{ TReminderDialog }
+
+const
+  RPCCalled = '99';
+  DlgCalled = RPCCalled + U + 'DLG';
+
+constructor TReminderDialog.BaseCreate;
+var
+  idx, eidx, i: integer;
+  TempSL: TORStringList;
+  ParentID: string;
+//  Line: string;
+  Element: TRemDlgElement;
+
+begin
+  TempSL := GetDlgSL;
+  if Piece(TempSL[0],U,2)='1' then
+    begin
+      Self.RemWipe := 1;
+    end;
+  idx := -1;
+  repeat
+    idx := TempSL.IndexOfPiece('1', U, 1, idx);
+    if(idx >= 0) then
+    begin
+      if(not assigned(FElements)) then
+        FElements := TStringList.Create;
+      eidx := FElements.AddObject('',TRemDlgElement.Create);
+      Element := TRemDlgElement(FElements.Objects[eidx]);
+      with Element do
+      begin
+        FReminder := Self;
+        FRec1 := TempSL[idx];
+        FID := Piece(FRec1, U, 2);
+        FDlgID := Piece(FRec1, U, 3);
+        FElements[eidx] := FDlgID;
+        if(ElemType = etTaxonomy) then
+          FTaxID := BOOLCHAR[Historical] + FindingType
+        else
+          FTaxID := '';
+
+        FText := '';
+        i := -1;
+       // if Piece(FRec1,U,5) <> '1' then
+        repeat
+          i := TempSL.IndexOfPieces(['2',FID,FDlgID],i);
+          if(i >= 0) then
+          begin
+            PrepText4NextLine(FText);
+            FText := FText + Trim(Piece(TempSL[i], U, 4));
+          end;
+        until(i < 0);
+        ExpandTIUObjects(FText);
+        AssignFieldIDs(FText);
+
+        if(pos('.',FDlgID)>0) then
+        begin
+          ParentID := FDlgID;
+          i := length(ParentID);
+          while((i > 0) and (ParentID[i] <> '.')) do
+            dec(i);
+          if(i > 0) then
+          begin
+            ParentID := copy(ParentID,1,i-1);
+            i := FElements.IndexOf(ParentID);
+            if(i >= 0) then
+            begin
+              FParent := TRemDlgElement(FElements.Objects[i]);
+              if(not assigned(FParent.FChildren)) then
+                FParent.FChildren := TList.Create;
+              FParent.FChildren.Add(Element);
+            end;
+          end;
+        end;
+        if(ElemType = etDisplayOnly) then
+          SetChecked(TRUE);
+        UpdateData;
+      end;
+    end;
+  until(idx < 0);
+end;
+
+constructor TReminderDialog.Create(ADlgData: string);
+begin
+  FDlgData := ADlgData;
+  BaseCreate;
+end;
+
+destructor TReminderDialog.Destroy;
+begin
+  KillObj(@FElements, TRUE);
+  inherited;
+end;
+
+function TReminderDialog.Processing: boolean;
+var
+  i,j: integer;
+  Elem: TRemDlgElement;
+  RData: TRemData;
+
+  function ChildrenChecked(Prnt: TRemDlgElement): boolean; forward;
+
+  function CheckItem(Item: TRemDlgElement): boolean;
+  begin
+    if(Item.ElemType = etDisplayOnly) then
+    begin
+      Result := ChildrenChecked(Item);
+      if(not Result) then
+        Result := Item.Add2PN;
+    end
+    else
+      Result := Item.FChecked;
+  end;
+
+  function ChildrenChecked(Prnt: TRemDlgElement): boolean;
+  var
+    i: integer;
+
+  begin
+    Result := FALSE;
+    if(assigned(Prnt.FChildren)) then
+    begin
+      for i := 0 to Prnt.FChildren.Count-1 do
+      begin
+        Result := CheckItem(TRemDlgElement(Prnt.FChildren[i]));
+        if(Result) then break;
+      end;
+    end;
+  end;
+
+begin
+  Result := FALSE;
+  if(assigned(FElements)) then
+  begin
+    for i := 0 to FElements.Count-1 do
+    begin
+      Elem := TRemDlgElement(FElements.Objects[i]);
+      if(not assigned(Elem.FParent)) then
+      begin
+        Result := CheckItem(Elem);
+        if (Result = false) then  //(AGP CHANGE 24.9 add check to have the finish problem check for MH test)
+          begin
+          if (assigned(Elem.FData)) then
+            begin
+               for j := 0 to Elem.FData.Count-1 do
+                  begin
+                     RData := TRemData(Elem.FData[j]);
+                     if piece(RData.FRec3,U,4)='MH' then
+                        Result := True;
+                     if (Result) then break;
+                  end;
+            end;
+          end;
+        if(Result) then break;
+      end;
+    end;
+  end;
+end;
+
+function TReminderDialog.GetDlgSL: TORStringList;
+var
+  idx: integer;
+
+begin
+  if(not assigned(ReminderDialogInfo)) then
+    ReminderDialogInfo := TStringList.Create;
+  idx := ReminderDialogInfo.IndexOf(GetIEN);
+  if(idx < 0) then
+    idx := ReminderDialogInfo.AddObject(GetIEN, TORStringList.Create);
+  Result := TORStringList(ReminderDialogInfo.Objects[idx]);
+  if(Result.Count = 0) then
+  begin
+    FastAssign(GetDialogInfo(GetIEN, (Self is TReminder)), Result);
+    Result.Add(DlgCalled); // Used to prevent repeated calling of RPC if dialog is empty
+  end;
+end;
+
+function TReminderDialog.BuildControls(ParentWidth: integer; AParent, AOwner: TWinControl): TWinControl;
+var
+  Y, i: integer;
+  Elem: TRemDlgElement;
+  ERes: TWinControl;
+
+begin
+  Result := nil;
+  if(assigned(FElements)) then
+  begin
+    Y := 0;
+    for i := 0 to FElements.Count-1 do
+    begin
+      Elem := TRemDlgElement(FElements.Objects[i]);
+      if (not assigned(Elem.FParent)) then
+      begin
+        ERes := Elem.BuildControls(Y, ParentWidth, AParent, AOwner);
+        if(not assigned(Result)) then
+          Result := ERes;
+      end;
+    end;
+  end;
+  if(AParent.ControlCount = 0) then
+  begin
+    with TVA508StaticText.Create(AOwner) do
+    begin
+      Parent := AParent;
+      Caption := 'No Dialog found for ' + Trim(GetPrintName) + ' Reminder.';
+      Left := Gap;
+      Top := Gap;
+    end;
+  end;
+  ElementChecked := nil;
+end;
+
+procedure TReminderDialog.AddText(Lst: TStrings);
+var
+  i, idx: integer;
+  Elem: TRemDlgElement;
+  temp: string;
+
+begin
+  if(assigned(FElements)) then
+  begin
+    idx := Lst.Count;
+    for i := 0 to FElements.Count-1 do
+    begin
+      Elem := TRemDlgElement(FElements.Objects[i]);
+      if (not assigned(Elem.FParent)) then
+        Elem.AddText(Lst);
+    end;
+    if (Self is TReminder) and (PrintName <> '') and (idx <> Lst.Count) then
+    begin
+      temp := PrintName;
+      StripScreenReaderCodes(temp);
+      Lst.Insert(idx, '  ' + temp + ':')
+    end;
+  end;
+end;
+
+function TReminderDialog.AddData(Lst: TStrings; Finishing: boolean = FALSE;
+                           Historical: boolean = FALSE): integer;
+var
+  i: integer;
+  Elem: TRemDlgElement;
+
+begin
+  Result := 0;
+  if(assigned(FElements)) then
+  begin
+    for i := 0 to FElements.Count-1 do
+    begin
+      Elem := TRemDlgElement(FElements.Objects[i]);
+      if (not assigned(Elem.FParent)) then
+        inc(Result, Elem.AddData(Lst, Finishing, Historical));
+    end;
+  end;
+end;
+
+procedure TReminderDialog.ClearMHTest(RIEN: String);
+var
+i,j: integer;
+TestName: string;
+begin
+  if (self.MHTestArray <> nil) and (self.MHTestArray.Count > 0) then
+    begin
+      i := self.MHTestArray.IndexOfPiece(RIEN, U, 2, -1);
+      while i > -1 do
+        begin
+          TestName := Piece(self.MHTestArray.Strings[i], U, 1);
+          self.MHTestArray.Delete(i);
+          j := self.MHTestArray.IndexOfPiece(TestName, U, 1, -1);
+          if j = -1 then RemoveMHTest(TestName);
+          i := self.MHTestArray.IndexOfPiece(RIEN, U, 2, -1);
+        end;
+    end;
+end;
+
+procedure TReminderDialog.ComboBoxCheckedText(Sender: TObject; NumChecked: integer; var Text: string);
+var
+  i, Done: integer;
+  DotLen, ComLen, TxtW, TotalW, NewLen: integer;
+  tmp: string;
+  Fnt: THandle;
+  lb: TORListBox;
+
+begin
+  if(NumChecked = 0) then
+    Text := '(None Selected)'
+  else
+  if(NumChecked > 1) then
+  begin
+    Text := '';
+    lb := (Sender as TORListBox);
+    Fnt := lb.Font.Handle;
+    DotLen := TextWidthByFont(Fnt, '...');
+    TotalW := (lb.Owner as TControl).ClientWidth - 15;
+    ComLen := TextWidthByFont(fnt, ', ');
+    dec(TotalW,(NumChecked-1) * ComLen);
+    Done := 0;
+    for i := 0 to lb.Items.Count-1 do
+    begin
+      if(lb.Checked[i]) then
+      begin
+        inc(Done);
+        if(Text <> '') then
+        begin
+          Text := Text + ', ';
+          dec(TotalW, ComLen);
+        end;
+        Tmp := lb.DisplayText[i];
+        if(Done = NumChecked) then
+          TxtW := TotalW
+        else
+          TxtW := TotalW div (NumChecked - Done + 1);
+        NewLen := NumCharsFitInWidth(fnt, Tmp, TxtW);
+        if(NewLen < length(Tmp)) then
+          Tmp := copy(Tmp,1,NumCharsFitInWidth(fnt, Tmp, (TxtW - DotLen))) + '...';
+        dec(TotalW, TextWidthByFont(fnt, Tmp));
+        Text := Text + Tmp;
+      end;
+    end;
+  end;
+end;
+
+procedure TReminderDialog.BeginTextChanged;
+begin
+  inc(FTextChangedCount);
+end;
+
+procedure TReminderDialog.EndTextChanged(Sender: TObject);
+begin
+  if(FTextChangedCount > 0) then
+  begin
+    dec(FTextChangedCount);
+    if(FTextChangedCount = 0) and assigned(FOnTextChanged) then
+      FOnTextChanged(Sender);
+  end;
+end;
+
+function TReminderDialog.GetIEN: string;
+begin
+  Result := Piece(FDlgData, U, 1);
+end;
+
+function TReminderDialog.GetPrintName: string;
+begin
+  Result := Piece(FDlgData, U, 2);
+end;
+
+procedure TReminderDialog.BeginNeedRedraw;
+begin
+  inc(FNeedRedrawCount);
+end;
+
+procedure TReminderDialog.EndNeedRedraw(Sender: TObject);
+begin
+  if(FNeedRedrawCount > 0) then
+  begin
+    dec(FNeedRedrawCount);
+    if(FNeedRedrawCount = 0) and (assigned(FOnNeedRedraw)) then
+      FOnNeedRedraw(Sender);
+  end;
+end;
+
+procedure TReminderDialog.FinishProblems(List: TStrings; var MissingTemplateFields: boolean);
+var
+  i: integer;
+  Elem: TRemDlgElement;
+  TmpSL: TStringList;
+  FldData: TORStringList;
+
+begin
+  if(Processing and assigned(FElements)) then
+  begin
+    TmpSL := TStringList.Create;
+    try
+      FldData := TORStringList.Create;
+      try
+        for i := 0 to FElements.Count-1 do
+        begin
+          Elem := TRemDlgElement(FElements.Objects[i]);
+          if (not assigned(Elem.FParent)) then
+          begin
+            Elem.FinishProblems(List);
+            Elem.GetFieldValues(FldData);
+          end;
+        end;
+        FNoResolve := TRUE;
+        try
+          AddText(TmpSL);
+        finally
+          FNoResolve := FALSE;
+        end;
+        MissingTemplateFields := AreTemplateFieldsRequired(TmpSL.Text, FldData);
+      finally
+        FldData.Free;
+      end;
+    finally
+      TmpSL.Free;
+    end;
+  end;
+end;
+
+procedure TReminderDialog.ComboBoxResized(Sender: TObject);
+begin
+// This causes the ONCheckedText event to re-fire and re-update the text,
+// based on the new size of the combo box.
+  if(Sender is TORComboBox) then
+    with (Sender as TORComboBox) do
+      OnCheckedText := OnCheckedText;
+end;
+
+function TReminderDialog.Visible: boolean;
+begin
+  Result := (CurrentReminderInDialog = Self);
+end;
+
+{ TReminder }
+
+constructor TReminder.Create(ARemData: string);
+begin
+  FRemData := ARemData;
+  BaseCreate;
+end;
+
+function TReminder.GetDueDateStr: string;
+begin
+  Result := Piece(FRemData, U ,3);
+end;
+
+function TReminder.GetIEN: string;
+begin
+  Result := copy(Piece(FRemData, U, 1), 2, MaxInt);
+end;
+
+function TReminder.GetLastDateStr: string;
+begin
+  Result := Piece(FRemData, U ,4);
+end;
+
+function TReminder.GetPrintName: string;
+begin
+  Result := Piece(FRemData, U ,2);
+end;
+
+function TReminder.GetPriority: integer;
+begin
+  Result := StrToIntDef(Piece(FRemData, U ,5), 2);
+end;
+
+function TReminder.GetStatus: string;
+begin
+  Result := Piece(FRemData, U ,6);
+end;
+
+{ TRemDlgElement }
+
+function Code2DataType(Code: string): TRemDataType;
+var
+  idx: TRemDataType;
+
+begin
+  Result := dtUnknown;
+  for idx := low(TRemDataType) to high(TRemDataType) do
+  begin
+    if(Code = RemDataCodes[idx]) then
+    begin
+      Result := idx;
+      break;
+    end;
+  end;
+end;
+
+function Code2PromptType(Code: string): TRemPromptType;
+var
+  idx: TRemPromptType;
+
+begin
+  if(Code = '') then
+    Result := ptSubComment
+  else
+  if(Code = MSTCode) then
+    Result := ptMST
+  else
+  begin
+    Result := ptUnknown;
+    for idx := low(TRemPromptType) to high(TRemPromptType) do
+    begin
+      if(Code = RemPromptCodes[idx]) then
+      begin
+        Result := idx;
+        break;
+      end;
+    end;
+  end;
+end;
+
+function TRemDlgElement.Add2PN: boolean;
+var
+  Lst: TStringList;
+
+begin
+  if (FChecked) then
+  begin
+    Result := (Piece(FRec1, U, 5) <> '1');
+    //Suppress := (Piece(FRec1,U,1)='1');
+    if(Result and (ElemType = etDisplayOnly)) then
+    begin
+      //Result := FALSE;
+      if(assigned(FPrompts) and (FPrompts.Count > 0)) or
+        (assigned(FData) and (FData.Count > 0)) or Result then
+      begin
+        Lst := TStringList.Create;
+        try
+          AddData(Lst, FALSE);
+          Result := (Lst.Count > 0);
+          if not assigned(FData) then Result := True;
+        finally
+          Lst.Free;
+        end;
+      end;
+    end;
+  end
+  else
+    Result := FALSE;
+end;
+
+function TRemDlgElement.Box: boolean;
+begin
+  Result := (Piece(FRec1, U, 19) = '1');
+end;
+
+function TRemDlgElement.BoxCaption: string;
+begin
+  if(Box) then
+    Result := Piece(FRec1, U, 20)
+  else
+    Result := '';
+end;
+
+function TRemDlgElement.ChildrenIndent: integer;
+begin
+  Result := StrToIntDef(Piece(FRec1, U, 16), 0);
+end;
+
+function TRemDlgElement.ChildrenRequired: TRDChildReq;
+var
+  Tmp: string;
+begin
+  Tmp := Piece(FRec1, U, 18);
+  if Tmp = '1' then Result := crOne
+  else if Tmp = '2' then Result := crAtLeastOne
+  else if Tmp = '3' then Result := crNoneOrOne
+  else if Tmp = '4' then result := crAll
+  else Result := crNone;
+end;
+
+function TRemDlgElement.ChildrenSharePrompts: boolean;
+begin
+  Result := (Piece(FRec1, U, 17) = '1');
+end;
+
+destructor TRemDlgElement.Destroy;
+begin
+  KillObj(@FFieldValues);
+  KillObj(@FData, TRUE);
+  KillObj(@FPrompts, TRUE);
+  KillObj(@FChildren);
+  inherited;
+end;
+
+function TRemDlgElement.ElemType: TRDElemType;
+var
+  Tmp: string;
+
+begin
+      Tmp := Piece(FRec1, U, 4);
+      if(Tmp = 'D') then Result := etDisplayOnly
+      else if(Tmp = 'T') then Result := etTaxonomy
+      else Result := etCheckBox;
+end;
+
+function TRemDlgElement.FindingType: string;
+begin
+  if(ElemType = etTaxonomy) then
+    Result := Piece(FRec1, U, 7)
+  else
+    Result := '';
+end;
+
+function TRemDlgElement.HideChildren: boolean;
+begin
+  Result := (Piece(FRec1, U, 15) <> '0');
+end;
+
+function TRemDlgElement.Historical: boolean;
+begin
+  Result := (Piece(FRec1, U, 8) = '1');
+end;
+
+function TRemDlgElement.Indent: integer;
+begin
+  Result := StrToIntDef(Piece(FRec1, U, 6), 0);
+end;
+
+procedure TRemDlgElement.GetData;
+var
+  TempSL: TStrings;
+  i: integer;
+  Tmp: string;
+
+begin
+  if FHaveData then exit;
+  if(FReminder.GetDlgSL.IndexOfPieces([RPCCalled, FID, FTaxID]) < 0) then
+  begin
+    TempSL := GetDialogPrompts(FID, Historical, FindingType);
+    TempSL.Add(RPCCalled);
+    for i := 0 to TempSL.Count-1 do
+    begin
+      Tmp := TempSL[i];
+      SetPiece(Tmp,U,2,FID);
+      SetPiece(Tmp,U,3,FTaxID);
+      TempSL[i] := Tmp;
+    end;
+    FastAddStrings(TempSL, FReminder.GetDlgSL);
+  end;
+  UpdateData;
+end;
+
+procedure TRemDlgElement.UpdateData;
+var
+  Ary: array of integer;
+  idx, i,cnt: integer;
+  TempSL: TORStringList;
+  RData: TRemData;
+  RPrompt: TRemPrompt;
+  Tmp, Tmp2: string;
+  NewLine: boolean;
+  dt: TRemDataType;
+  pt: TRemPromptType;
+  DateRange: string;
+  ChoicesActiveDates:   TStringList;
+  ChoiceIdx: integer;
+  Piece7: string;
+
+begin
+  if FHaveData then exit;
+  TempSL := FReminder.GetDlgSL;
+  if(TempSL.IndexOfPieces([RPCCalled, FID, FTaxID]) >= 0) then
+  begin
+    FHaveData := TRUE;
+    RData := nil;
+    idx := -1;
+    repeat
+      idx := TempSL.IndexOfPieces(['3', FID, FTaxID], idx);
+      if (idx >= 0) and (Pieces(TempSL[idx-1],U,1,6) = Pieces(TempSL[idx],u,1,6)) then
+        if pos(':', Piece(TempSL[idx],U,7)) > 0 then  //if has date ranges
+          begin
+            if RData <> nil then
+              begin
+                if (not assigned(RData.FActiveDates)) then
+                  RData.FActiveDates := TStringList.Create;
+                DateRange := Pieces(Piece(TempSL[idx],U,7),':',2,3);
+                RData.FActiveDates.Add(DateRange);
+              end;
+          end;
+      if(idx >= 0) and (Pieces(TempSL[idx-1],U,1,6) <> Pieces(TempSL[idx],u,1,6)) then
+      begin
+        dt := Code2DataType(piece(TempSL[idx], U, r3Type));
+        if(dt <> dtUnknown) and ((dt <> dtOrder) or
+          (CharAt(piece(TempSL[idx], U, 11),1) in ['D', 'Q', 'M', 'O', 'A'])) and   //AGP change 26.10 for allergy orders
+          ((dt <> dtMentalHealthTest) or MHTestsOK) then
+        begin
+          if(not assigned(FData)) then
+            FData := TList.Create;
+          RData := TRemData(FData[FData.Add(TRemData.Create)]);
+          if pos(':',Piece(TempSL[idx],U,7)) > 0 then
+            begin
+              RData.FActiveDates := TStringList.Create;
+              RData.FActiveDates.Add(Pieces(Piece(TempSL[idx],U,7),':',2,3));
+            end;
+          with RData do
+          begin
+            FParent := Self;
+            Piece7 := Piece(Piece(TempSL[idx],U,7),':',1);
+            FRec3 := TempSL[idx];
+            SetPiece(FRec3,U,7,Piece7);
+//            FRoot := FRec3;
+            i := idx + 1;
+            ChoiceIdx := 0;
+            while((i < TempSL.Count) and (TempSL.PiecesEqual(i, ['5', FID, FTaxID]))) do
+            begin
+              if (Pieces(TempSL[i-1],U,1,6) = Pieces(TempSL[i],U,1,6)) then
+                begin
+                 if pos(':', Piece(TempSL[i],U,7)) > 0 then
+                   begin
+                    if (not assigned(FChoicesActiveDates)) then
+                      begin
+                        FChoicesActiveDates := TList.Create;
+                        ChoicesActiveDates := TStringList.Create;
+                        FChoicesActiveDates.Insert(ChoiceIdx, ChoicesActiveDates);
+                      end;
+                    TStringList(FChoicesActiveDates[ChoiceIdx]).Add(Pieces(Piece(TempSL[i],U,7),':',2,3));
+                   end;
+                 inc(i);
+                end
+              else
+                begin
+                  if(not assigned(FChoices)) then
+                  begin
+                    FChoices := TORStringList.Create;
+                    if(not assigned(FPrompts)) then
+                      FPrompts := TList.Create;
+                    FChoicePrompt := TRemPrompt(FPrompts[FPrompts.Add(TRemPrompt.Create)]);
+                    with FChoicePrompt do
+                    begin
+                      FParent := Self;
+                      Tmp := Piece(FRec3,U,10);
+                      NewLine := (Tmp <> '');
+                      FRec4 := '4' + U + FID + U + FTaxID + U + U + BOOLCHAR[not RData.Add2PN] + U + U +
+                               'P' + U + Tmp + U + BOOLCHAR[NewLine] + U + '1';
+                      FData := RData;
+                      FOverrideType := ptDataList;
+                      InitValue;
+                    end;
+                  end;
+                  Tmp := TempSL[i];
+                  Piece7 := Piece(Piece(TempSL[i],U,7),':',1);
+                  SetPiece(Tmp,U,7,Piece7);
+                  Tmp2 := Piece(Piece(Tmp,U,r3Code),':',1);
+                  if(Tmp2 <> '') then Tmp2 := ' (' + Tmp2 + ')';
+                  Tmp2 := MixedCase(Piece(Tmp,U,r3Nar)) + Tmp2;
+                  SetPiece(Tmp,U,12,Tmp2);
+                  ChoiceIdx := FChoices.Add(Tmp);
+                  if pos(':',Piece(TempSL[i],U,7)) > 0 then
+                   begin
+                    if (not assigned(FChoicesActiveDates)) then
+                      FChoicesActiveDates := TList.Create;
+                    ChoicesActiveDates := TStringList.Create;
+                    ChoicesActiveDates.Add(Pieces(Piece(TempSL[i],U,7),':',2,3));
+                    FChoicesActiveDates.Insert(ChoiceIdx, ChoicesActiveDates);
+                   end
+                  else
+                    if assigned(FChoicesActiveDates) then
+                       FChoicesActiveDates.Insert(ChoiceIdx, TStringList.Create);
+                  inc(i);
+                end;
+            end;
+            if(assigned(FChoices)) and (FChoices.Count = 1) then // If only one choice just pick it
+            begin
+              FPrompts.Remove(FChoicePrompt);
+              KillObj(@FChoicePrompt);
+              Tmp := FChoices[0];
+              KillObj(@FChoices);
+              cnt := 5;
+              if(Piece(FRec3,U,9) = '') then inc(cnt);
+              SetLength(Ary,cnt);
+              for i := 0 to cnt-1 do
+                Ary[i] := i+4;
+              SetPieces(FRec3, U, Ary, Tmp);
+            end;
+            if(assigned(FChoices)) then
+            begin
+              for i := 0 to FChoices.Count-1 do
+                FChoices.Objects[i] := TRemPCERoot.GetRoot(RData, FChoices[i], Historical);
+            end
+            else
+              FPCERoot := TRemPCERoot.GetRoot(RData, RData.FRec3, Historical);
+            if(dt = dtVitals) then
+            begin
+              if(Code2VitalType(Piece(FRec3,U,6)) <> vtUnknown) then
+              begin
+                if(not assigned(FPrompts)) then
+                  FPrompts := TList.Create;
+                FChoicePrompt := TRemPrompt(FPrompts[FPrompts.Add(TRemPrompt.Create)]);
+                with FChoicePrompt do
+                begin
+                  FParent := Self;
+                  Tmp := Piece(FRec3,U,10);
+                  NewLine := FALSE;
+  //                FRec4 := '4' + U + FID + U + FTaxID + U + U + BOOLCHAR[not RData.Add2PN] + U +
+  //                         RData.InternalValue + U + 'P' + U + Tmp + U + BOOLCHAR[SameL] + U + '1';
+                  FRec4 := '4' + U + FID + U + FTaxID + U + U + BOOLCHAR[not RData.Add2PN] + U +
+                           U + 'P' + U + Tmp + U + BOOLCHAR[NewLine] + U + '0';
+                  FData := RData;
+                  FOverrideType := ptVitalEntry;
+                  InitValue;
+                end;
+              end;
+            end;
+            if(dt = dtMentalHealthTest) then
+            begin
+              if(not assigned(FPrompts)) then
+                FPrompts := TList.Create;
+              FChoicePrompt := TRemPrompt(FPrompts[FPrompts.Add(TRemPrompt.Create)]);
+              with FChoicePrompt do
+              begin
+                FParent := Self;
+                Tmp := Piece(FRec3,U,10);
+                NewLine := FALSE;
+//                FRec4 := '4' + U + FID + U + FTaxID + U + U + BOOLCHAR[not RData.Add2PN] + U +
+//                         RData.InternalValue + U + 'P' + U + Tmp + U + BOOLCHAR[SameL] + U + '1';
+                FRec4 := '4' + U + FID + U + FTaxID + U + U + BOOLCHAR[not RData.Add2PN] + U +
+                         U + 'P' + U + Tmp + U + BOOLCHAR[NewLine] + U + '0';
+                FData := RData;
+                if ((Piece(FRec3, U, r3GAF) = '1')) and (MHDLLFound = false) then
+                begin
+                  FOverrideType := ptGAF;
+                  SetPiece(FRec4, U, 8, ForcedCaption + ':');
+                end
+                else
+                  FOverrideType := ptMHTest;
+              end;
+            end;
+          end;
+        end;
+      end;
+    until(idx < 0);
+
+    idx := -1;
+    repeat
+      idx := TempSL.IndexOfPieces(['4', FID, FTaxID], idx);
+      if(idx >= 0) then
+      begin
+        pt := Code2PromptType(piece(TempSL[idx], U, 4));
+        if(pt <> ptUnknown) and ((pt <> ptComment) or (not FHasComment)) then
+        begin
+          if(not assigned(FPrompts)) then
+            FPrompts := TList.Create;
+          RPrompt := TRemPrompt(FPrompts[FPrompts.Add(TRemPrompt.Create)]);
+          with RPrompt do
+          begin
+            FParent := Self;
+            FRec4 := TempSL[idx];
+            InitValue;
+          end;
+          if(pt = ptComment) then
+          begin
+            FHasComment := TRUE;
+            FCommentPrompt := RPrompt;
+          end;
+          if(pt = ptSubComment) then
+            FHasSubComments := TRUE;
+          if(pt = ptMST) then
+            FMSTPrompt := RPrompt;
+        end;
+      end;
+    until(idx < 0);
+
+    idx := -1;
+    repeat
+      idx := TempSL.IndexOfPieces(['6', FID, FTaxID], idx);
+      if(idx >= 0) then
+      begin
+        PrepText4NextLine(FPNText);
+        FPNText := FPNText + Trim(Piece(TempSL[idx], U, 4));
+      end;
+    until(idx < 0);
+    ExpandTIUObjects(FPNText);
+  end;
+end;
+
+procedure TRemDlgElement.SetChecked(const Value: boolean);
+var
+  i, j, k: integer;
+  Kid: TRemDlgElement;
+  Prompt: TRemPrompt;
+  RData: TRemData;
+
+  procedure UpdateForcedValues(Elem: TRemDlgElement);
+  var
+    i: integer;
+
+  begin
+    if(Elem.IsChecked) then
+    begin
+      if(assigned(Elem.FPrompts)) then
+      begin
+        for i := 0 to Elem.FPrompts.Count-1 do
+        begin
+          Prompt := TRemPrompt(Elem.FPrompts[i]);
+          if Prompt.Forced then
+          begin
+            try
+              Prompt.SetValueFromParent(Prompt.FValue);
+            except
+              on E: EForcedPromptConflict do
+              begin
+                Elem.FChecked := FALSE;
+                InfoBox(E.Message, 'Error', MB_OK or MB_ICONERROR);
+                break;
+              end
+              else
+                raise;
+            end;
+          end;
+        end;
+      end;
+      if(Elem.FChecked) and (assigned(Elem.FChildren)) then
+        for i := 0 to Elem.FChildren.Count-1 do
+          UpdateForcedValues(TRemDlgElement(Elem.FChildren[i]));
+    end;
+  end;
+
+begin
+  if(FChecked <> Value) then
+  begin
+    FChecked := Value;
+    if(Value) then
+    begin
+      GetData;
+      if(FChecked and assigned(FParent)) then
+      begin
+        FParent.Check4ChildrenSharedPrompts;
+        if(FParent.ChildrenRequired in [crOne, crNoneOrOne]) then
+        begin
+          for i := 0 to FParent.FChildren.Count-1 do
+          begin
+            Kid := TRemDlgElement(FParent.FChildren[i]);
+            if(Kid <> Self) and (Kid.FChecked) then
+              Kid.SetChecked(FALSE);
+          end;
+        end;
+      end;
+      UpdateForcedValues(Self);
+    end
+    else
+    if(assigned(FPrompts) and assigned(FData)) then
+    begin
+      for i := 0 to FPrompts.Count-1 do
+      begin
+        Prompt := TRemPrompt(FPrompts[i]);
+        if Prompt.Forced and (IsSyncPrompt(Prompt.PromptType)) then
+        begin
+          for j := 0 to FData.Count-1 do
+          begin
+            RData := TRemData(FData[j]);
+            if(assigned(RData.FPCERoot)) then
+              RData.FPCERoot.UnSync(Prompt);
+            if(assigned(RData.FChoices)) then
+            begin
+              for k := 0 to RData.FChoices.Count-1 do
+              begin
+                if(assigned(RData.FChoices.Objects[k])) then
+                  TRemPCERoot(RData.FChoices.Objects[k]).UnSync(Prompt);
+              end;
+            end;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+function TRemDlgElement.TrueIndent: integer;
+var
+  Prnt: TRemDlgElement;
+  Nudge: integer;
+
+begin
+  Result := Indent;
+  Nudge := Gap;
+  Prnt := FParent;
+  while assigned(Prnt) do
+  begin
+    if(Prnt.Box) then
+    begin
+      Prnt := nil;
+      inc(Nudge, Gap);
+    end
+    else
+    begin
+      Result := Result + Prnt.ChildrenIndent;
+      Prnt := Prnt.FParent;
+    end;
+  end;
+  Result := (Result * IndentMult) + Nudge;
+end;
+
+procedure TRemDlgElement.cbClicked(Sender: TObject);
+begin
+  FReminder.BeginTextChanged;
+  try
+    FReminder.BeginNeedRedraw;
+    try
+      if(assigned(Sender)) then
+      begin
+        SetChecked((Sender as TORCheckBox).Checked);
+        ElementChecked := Self;
+      end;
+    finally
+      FReminder.EndNeedRedraw(Sender);
+    end;
+  finally
+    FReminder.EndTextChanged(Sender);
+  end;
+  RemindersInProcess.Notifier.Notify;
+  if assigned(TORCheckBox(Sender).Associate) and (not ScreenReaderSystemActive) then
+    TDlgFieldPanel(TORCheckBox(Sender).Associate).SetFocus;
+end;
+
+function TRemDlgElement.EnableChildren: boolean;
+var
+  Chk: boolean;
+
+begin
+  if(assigned(FParent)) then
+    Chk := FParent.EnableChildren
+  else
+    Chk := TRUE;
+  if(Chk) then
+  begin
+    if(ElemType = etDisplayOnly) then
+      Result := TRUE
+    else
+      Result := FChecked;
+  end
+  else
+    Result := FALSE;
+end;
+
+function TRemDlgElement.Enabled: boolean;
+begin
+  if(assigned(FParent)) then
+    Result := FParent.EnableChildren
+  else
+    Result := TRUE;
+end;
+
+function TRemDlgElement.ShowChildren: boolean;
+begin
+  if(assigned(FChildren) and (FChildren.Count > 0)) then
+  begin
+    if((ElemType = etDisplayOnly) or FChecked) then
+      Result := TRUE
+    else
+      Result := (not HideChildren);
+  end
+  else
+    Result := FALSE;
+end;
+
+type
+  TAccessCheckBox = class(TORCheckBox);
+
+procedure TRemDlgElement.cbEntered(Sender: TObject);
+begin
+// changing focus because of a mouse click sets ClicksDisabled to false during the
+// call to SetFocus - this is how we allow the cbClicked code to execute on a mouse
+// click, which will set the focus after the mouse click.  All other cases and the
+// ClicksDisabled will be FALSE and the focus is reset here.  If we don't make this
+// check, you can't click on the check box..
+  if (Last508KeyCode = VK_UP) or (Last508KeyCode = VK_LEFT) then 
+  begin
+    UnfocusableControlEnter(nil, Sender);
+    exit;
+  end;
+  if not TAccessCheckBox(Sender).ClicksDisabled then
+  begin
+    if ScreenReaderSystemActive then
+      (Sender as TCPRSDialogParentCheckBox).FocusOnBox := true
+    else
+      TDlgFieldPanel(TORCheckBox(Sender).Associate).SetFocus;
+  end;
+end;
+
+procedure TRemDlgElement.ParentCBEnter(Sender: TObject);
+begin
+  (Sender as TORCheckBox).FocusOnBox := true;
+end;
+
+procedure TRemDlgElement.ParentCBExit(Sender: TObject);
+begin
+  (Sender as TORCheckBox).FocusOnBox := false;
+end;
+
+type
+  TORExposedWinControl = class(TWinControl);
+
+function TRemDlgElement.BuildControls(var Y: integer; ParentWidth: integer;
+                                           BaseParent, AOwner: TWinControl): TWinControl;
+var
+  lbl: TLabel;
+  lblText: string;
+  sLbl: TCPRSDialogStaticLabel;
+  lblCtrl: TControl;
+  pnl: TDlgFieldPanel;
+  AutoFocusControl: TWinControl;
+  cb: TCPRSDialogParentCheckBox;
+  gb: TGroupBox;
+  ERes, prnt: TWinControl;
+  PrntWidth: integer;
+  i, X, Y1: integer;
+  LastX, MinX, MaxX: integer;
+  Prompt: TRemPrompt;
+  Ctrl: TMultiClassObj;
+  OK, DoLbl, HasVCombo, cbSingleLine: boolean;
+  ud: TUpDown;
+  HelpBtn: TButton;
+  vCombo: TComboBox;
+  pt: TRemPromptType;
+  SameLineCtrl: TList;
+  Kid: TRemDlgElement;
+  vt: TVitalType;
+  DefaultDate: TFMDateTime;
+  Req: boolean;
+
+  function GetPanel(const EID, AText: string; const PnlWidth: integer;
+                    OwningCheckBox: TCPRSDialogParentCheckBox): TDlgFieldPanel;
+  var
+    idx, p: integer;
+    Entry: TTemplateDialogEntry;
+
+  begin
+    // This call creates a new TTemplateDialogEntry if necessary and creates the
+    // necessary template field controls with their default values stored in the
+    // TTemplateField object.
+    Entry := GetDialogEntry(BaseParent, EID + IntToStr(Integer(BaseParent)), AText);
+    Entry.InternalID := EID;
+    // This call looks for the Entry's values in TRemDlgElement.FFieldValues
+    idx := FFieldValues.IndexOfPiece(EID);
+    // If the Entry's values were found in the previous step then they will be
+    // restored to the TTemplateDialogEntry.FieldValues in the next step.
+    if(idx >= 0) then
+    begin
+      p := pos(U, FFieldValues[idx]); // Can't use Piece because 2nd piece may contain ^ characters
+      if(p > 0) then
+        Entry.FieldValues := copy(FFieldValues[idx],p+1,MaxInt);
+    end;
+    Entry.AutoDestroyOnPanelFree := TRUE;
+    // The FieldPanelChange event handler is where the Entry.FieldValues are saved to the
+    // Element.FFieldValues.
+    Entry.OnChange := FieldPanelChange;
+    // Calls TTemplateDialogEntry.SetFieldValues which calls
+    // TTemplateDialogEntry.SetControlText to reset the template field default
+    // values to the values that were restored to the Entry from the Element if
+    // they exist, otherwise the default values will remain.
+    Result := Entry.GetPanel(PnlWidth, BaseParent, OwningCheckBox);
+  end;
+
+  procedure NextLine(var Y: integer);
+  var
+    i: integer;
+    MaxY: integer;
+    C: TControl;
+
+
+  begin
+    MaxY := 0;
+    for i := 0 to SameLineCtrl.Count-1 do
+    begin
+      C := TControl(SameLineCtrl[i]);
+      if(MaxY < C.Height) then
+        MaxY := C.Height;
+    end;
+    for i := 0 to SameLineCtrl.Count-1 do
+    begin
+      C := TControl(SameLineCtrl[i]);
+      if(MaxY > C.Height) then
+        C.Top := Y + ((MaxY - C.Height) div 2);
+    end;
+    inc(Y, MaxY);
+    if assigned(cb) and assigned(pnl) then
+      cb.Top := pnl.Top;
+    SameLineCtrl.Clear;
+  end;
+
+  procedure ProcessLabel(Required, AEnabled: boolean;
+                         AParent: TWinControl; Control: TControl);  begin
+    if(Trim(Prompt.Caption) = '') and (not Required) then
+      lblCtrl := nil
+    else
+    begin
+      lbl := TLabel.Create(AOwner);
+      lbl.Parent := AParent;
+      if ScreenReaderSystemActive then
+      begin
+        sLbl := TCPRSDialogStaticLabel.Create(AOwner);
+        sLbl.Parent := AParent;
+        sLbl.Height := lbl.Height;
+// get groop box hearder, if any
+//                (sLbl as ICPRSDialogComponent).BeforeText := ScreenReaderSystem_GetPendingText;
+        lbl.Free;
+        lblCtrl := sLbl;
+      end
+      else
+        lblCtrl := lbl;
+      lblText := Prompt.Caption;
+      if Required then
+      begin
+        if assigned(Control) and Supports(Control, ICPRSDialogComponent) then
+        begin
+          (Control as ICPRSDialogComponent).RequiredField := TRUE;
+          if ScreenReaderSystemActive and (AOwner = frmRemDlg) then
+            frmRemDlg.amgrMain.AccessText[sLbl] := lblText;
+        end;
+        lblText := lblText + ' *';
+      end;
+      SetStrProp(lblCtrl, CaptionProperty, lblText);
+      if ScreenReaderSystemActive then
+      begin
+        ScreenReaderSystem_CurrentLabel(sLbl);
+        ScreenReaderSystem_AddText(lblText);
+      end;
+      lblCtrl.Enabled := AEnabled;
+      UpdateColorsFor508Compliance(lblCtrl);
+    end;
+  end;
+
+  procedure ScreenReaderSupport(Control: TWinControl);
+  begin
+    if ScreenReaderSystemActive then
+    begin
+      if Supports(Control, ICPRSDialogComponent) then
+        ScreenReaderSystem_CurrentComponent(Control as ICPRSDialogComponent)
+      else
+        ScreenReaderSystem_Stop;
+    end;
+  end;
+
+  procedure AddPrompts(Shared: boolean; AParent: TWinControl; PWidth: integer; var Y: integer);
+  var
+    i, j, k, idx: integer;
+    DefLoc: TStrings;
+    LocText: string;
+    LocFound: boolean;
+    m, n: integer;
+    ActDt, InActDt: Double;
+    EncDt: TFMDateTime;
+    ActChoicesSL: TORStringList;
+    Piece12, WHReportStr: String;
+    WrapLeft, LineWidth: integer;
+
+  begin
+    SameLineCtrl := TList.Create;
+    try
+      if(assigned(cb)) then
+      begin
+        if(not Shared) then
+        begin
+          SameLineCtrl.Add(cb);
+          SameLineCtrl.Add(pnl);
+        end;
+        if(cbSingleLine and (not Shared)) then
+          LastX := cb.Left + pnl.Width + PromptGap + IndentGap
+        else
+          LastX := PWidth;
+      end
+      else
+      begin
+        if(not Shared) then SameLineCtrl.Add(pnl);
+        LastX := PWidth;
+      end;
+      for i := 0 to FPrompts.Count-1 do
+      begin
+        Prompt := TRemPrompt(FPrompts[i]);
+        OK := ((Prompt.FIsShared = Shared) and Prompt.PromptOK and (not Prompt.Forced));
+        if(OK and Shared) then
+        begin
+          OK := FALSE;
+          for j := 0 to Prompt.FSharedChildren.Count-1 do
+          begin
+            Kid := TRemDlgElement(Prompt.FSharedChildren[j]);
+//            if(Kid.ElemType <> etDisplayOnly) and (Kid.FChecked) then
+            if(Kid.FChecked) then
+            begin
+              OK := TRUE;
+              break;
+            end;
+          end;
+        end;
+        Ctrl.Ctrl := nil;
+        ud := nil;
+        HelpBtn := nil;
+        vCombo := nil;
+        HasVCombo := FALSE;
+        if(OK) then
+        begin
+          pt := Prompt.PromptType;
+          MinX := 0;
+          MaxX := 0;
+          lbl := nil;
+          sLbl := nil;
+          lblCtrl := nil;
+          DoLbl := Prompt.Required;
+          case pt of
+            ptComment, ptQuantity:
+              begin
+                Ctrl.edt := TCPRSDialogFieldEdit.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.edt.Text := Prompt.Value;
+                if(pt = ptComment) then
+                begin
+                  Ctrl.edt.MaxLength := 245;
+                  MinX := TextWidthByFont(Ctrl.edt.Font.Handle, 'AbCdEfGhIjKlMnOpQrStUvWxYz 1234');
+                  MaxX := PWidth;
+                end
+                else
+                begin
+                  ud := TUpDown.Create(AOwner);
+                  ud.Parent := AParent;
+                  ud.Associate := Ctrl.edt;
+                  if(pt = ptQuantity) then
+                  begin
+                    ud.Min := 1;
+                    ud.Max := 100;
+                  end
+                  else
+                  begin
+                    ud.Min := 0;
+                    ud.Max := 40;
+                  end;
+                  MinX := TextWidthByFont(Ctrl.edt.Font.Handle, IntToStr(ud.Max)) + 24;
+                  ud.Position := StrToIntDef(Prompt.Value, ud.Min);
+                  UpdateColorsFor508Compliance(ud);
+                end;
+                Ctrl.edt.OnKeyPress := Prompt.EditKeyPress;
+                Ctrl.edt.OnChange := Prompt.PromptChange;
+                UpdateColorsFor508Compliance(Ctrl.edt);
+                DoLbl := TRUE;
+              end;
+
+            ptVisitLocation, ptLevelUnderstanding,
+            ptSeries, ptReaction, ptExamResults,
+            ptLevelSeverity, ptSkinResults, ptSkinReading:
+              begin
+                Ctrl.cbo := TCPRSDialogComboBox.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.cbo.OnKeyDown := Prompt.ComboBoxKeyDown;
+                Ctrl.cbo.Style := orcsDropDown;
+                Ctrl.cbo.Pieces := '2';
+                if pt = ptSkinReading then
+                  begin
+                     Ctrl.cbo.Pieces := '1';
+                     Ctrl.cbo.Items.Add('');
+                     for j := 0 to 50 do Ctrl.cbo.Items.Add(inttostr(j));
+                     GetComboBoxMinMax(Ctrl.cbo,MinX, MaxX);
+                  end;
+                if pt <> ptSkinReading then
+                  begin
+                     Ctrl.cbo.Tag := ComboPromptTags[pt];
+                     PCELoadORCombo(Ctrl.cbo, MinX, MaxX);
+                  end;
+                if pt = ptVisitLocation then
+                begin
+                  DefLoc := GetDefLocations;
+                  if DefLoc.Count > 0 then
+                  begin
+                    idx := 1;
+                    for j := 0 to DefLoc.Count-1 do
+                    begin
+                      LocText := piece(DefLoc[j],U,2);
+                      if LocText <> '' then
+                      begin
+                        if (LocText <> '0') and (IntToStr(StrToIntDef(LocText,0)) = LocText) then
+                        begin
+                          LocFound := FALSE;
+                          for k := 0 to Ctrl.cbo.Items.Count-1 do
+                          begin
+                            if(piece(Ctrl.cbo.Items[k],U,1) = LocText) then
+                            begin
+                              LocText := Ctrl.cbo.Items[k];
+                              LocFound := TRUE;
+                              break;
+                            end;
+                          end;
+                          if not LocFound then
+                            LocText := '';
+                        end
+                        else
+                          LocText := '0^'+LocText;
+                        if LocText <> '' then
+                        begin
+                          Ctrl.cbo.Items.Insert(idx, LocText);
+                          inc(idx);
+                        end;
+                      end;
+                    end;
+
+                    if idx > 1 then
+                    begin
+                      Ctrl.cbo.Items.Insert(idx, '-1' + LLS_LINE);
+                      Ctrl.cbo.Items.Insert(idx+1, '-1' + LLS_SPACE);
+                    end;
+                  end;
+                end;
+
+                MinX := MaxX;
+                Ctrl.cbo.SelectByID(Prompt.Value);
+                if(Ctrl.cbo.ItemIndex < 0) then
+                begin
+                  Ctrl.cbo.Text := Prompt.Value;
+                  if(pt = ptVisitLocation) then
+                    Ctrl.cbo.Items[0] := '0' + U + Prompt.Value;
+                end;
+                if(Ctrl.cbo.ItemIndex < 0) then
+                  Ctrl.cbo.ItemIndex := 0;
+                Ctrl.cbo.OnChange := Prompt.PromptChange;
+                DoLbl := TRUE;
+                Ctrl.cbo.ListItemsOnly := (pt <> ptVisitLocation);
+                UpdateColorsFor508Compliance(Ctrl.cbo);
+              end;
+
+              ptWHPapResult:
+              begin
+                if FData<>nil then
+                begin
+                  if (TRemData(FData[i]).DisplayWHResults)=true then
+                  begin
+                    NextLine(Y);
+                    Ctrl.btn := TCPRSDialogButton.Create(AOwner);
+                    Ctrl.ctrl.Parent := AParent;
+                    Ctrl.btn.Left := NewLInePromptGap+15;
+                    Ctrl.btn.Top := Y+7;
+                    Ctrl.btn.OnClick := Prompt.DoWHReport;
+                    Ctrl.btn.Caption := 'Review complete report';
+                    Ctrl.btn.Width := TextWidthByFont(Ctrl.btn.Font.Handle, Ctrl.btn.Caption) + 13;
+                    Ctrl.btn.Height := TextHeightByFont(Ctrl.btn.Font.Handle, Ctrl.btn.Caption) + 13;
+                    Ctrl.btn.Height := TextHeightByFont(Ctrl.btn.Handle, Ctrl.btn.Caption) + 8;
+                    ScreenReaderSupport(Ctrl.btn);
+                    UpdateColorsFor508Compliance(Ctrl.btn);
+                    Y := ctrl.btn.Top + Ctrl.btn.Height;
+                    NextLine(Y);
+                    Ctrl.WHChk := TWHCheckBox.Create(AOwner);
+                    Ctrl.ctrl.Parent := AParent;
+                    ProcessLabel(Prompt.Required, TRUE, Ctrl.WHChk.Parent, Ctrl.WHChk);
+                    if lblCtrl is TWinControl then
+                      TWinControl(lblCtrl).TabOrder := Ctrl.WHChk.TabOrder;
+                    Ctrl.WHChk.Flbl := lblCtrl;
+                    Ctrl.WHChk.Flbl.Top := Y + 5;
+                    Ctrl.WHChk.Flbl.Left := NewLinePromptGap+15;
+                    WrapLeft := Ctrl.WHChk.Flbl.Left;
+//                    Ctrl.WHChk.Flbl.Width := TextWidthByFont(
+//                      TExposedComponent(Ctrl.WHChk.Flbl).Font.Handle,
+//                      TExposedComponent(Ctrl.WHChk.Flbl).Caption)+25;
+//                    Ctrl.WHChk.Flbl.Height := TextHeightByFont(
+//                      TExposedComponent(Ctrl.WHChk.Flbl).Font.Handle,
+//                      TExposedComponent(Ctrl.WHChk.Flbl).Caption);
+                    //LineWidth := WrapLeft + Ctrl.WHChk.Flbl.Width+10;
+                    Y := Ctrl.WHChk.Flbl.Top + Ctrl.WHChk.Flbl.Height;
+                    NextLine(Y);
+                    Ctrl.WHChk.RadioStyle:=true;
+                    Ctrl.WHChk.GroupIndex:=1;
+                    Ctrl.WHChk.Check2 := TWHCheckBox.Create(AOwner);
+                    Ctrl.WHChk.Check2.Parent := Ctrl.WHChk.Parent;
+                    Ctrl.WHChk.Check2.RadioStyle:=true;
+                    Ctrl.WHChk.Check2.GroupIndex:=1;
+                    Ctrl.WHChk.Check3 := TWHCheckBox.Create(AOwner);
+                    Ctrl.WHChk.Check3.Parent := Ctrl.WHChk.Parent;
+                    Ctrl.WHChk.Check3.RadioStyle:=true;
+                    Ctrl.WHChk.Check3.GroupIndex:=1;
+                    Ctrl.WHChk.Caption := 'NEM (No Evidence of Malignancy)';
+                    Ctrl.WHChk.ShowHint := true;
+                    Ctrl.WHChk.Hint := 'No Evidence of Malignancy';
+                    Ctrl.WHChk.Width := TextWidthByFont(Ctrl.WHChk.Font.Handle, Ctrl.WHChk.Caption)+20;
+                    Ctrl.WHChk.Height := TextHeightByFont(Ctrl.WHChk.Font.Handle, Ctrl.WHChk.Caption)+4;
+                    Ctrl.WHChk.Top := Y + 5;
+                    Ctrl.WHChk.Left := WrapLeft;
+                    Ctrl.WHChk.OnClick := Prompt.PromptChange;
+                    Ctrl.WHChk.Checked := (WHResultChk = 'N');
+                    LineWidth := WrapLeft + Ctrl.WHChk.Width+5;
+                    Ctrl.WHChk.Check2.Caption := 'Abnormal';
+                    Ctrl.WHChk.Check2.Width := TextWidthByFont(Ctrl.WHChk.Check2.Font.Handle, Ctrl.WHChk.Check2.Caption) + 20;
+                    Ctrl.WHChk.Check2.Height := TextHeightByFont(Ctrl.WHChk.check2.Font.Handle, Ctrl.WHChk.check2.Caption)+4;
+                    if (LineWidth + Ctrl.WHChk.Check2.Width) > PWidth - 10 then
+                    begin
+                      LineWidth := WrapLeft;
+                      Y := Ctrl.WHChk.Top + Ctrl.WHChk.Height;
+                      Nextline(Y);
+                    end;
+                    Ctrl.WHChk.Check2.Top := Y + 5;
+                    Ctrl.WHChk.Check2.Left := LineWidth;
+                    Ctrl.WHChk.Check2.OnClick := Prompt.PromptChange;
+                    Ctrl.WHChk.Check2.Checked := (WHResultChk = 'A');
+                    LineWidth := LineWidth + Ctrl.WHChk.Check2.Width+5;
+                    Ctrl.WHChk.Check3.Caption := 'Unsatisfactory for Diagnosis';
+                    Ctrl.WHChk.Check3.Width := TextWidthByFont(Ctrl.WHChk.Check3.Font.Handle, Ctrl.WHChk.Check3.Caption)+20;
+                    Ctrl.WHChk.Check3.Height := TextHeightByFont(Ctrl.WHChk.check3.Font.Handle, Ctrl.WHChk.check3.Caption)+4;
+                    if (LineWidth + Ctrl.WHChk.Check3.Width) > PWidth - 10 then
+                    begin
+                      LineWidth := WrapLeft;
+                      Y := Ctrl.WHChk.Check2.Top + Ctrl.WHChk.Check2.Height;
+                      Nextline(Y);
+                    end;
+                    Ctrl.WHChk.Check3.Top := Y + 5;
+                    Ctrl.WHChk.Check3.OnClick := Prompt.PromptChange;
+                    Ctrl.WHChk.Check3.Checked := (WHResultChk = 'U');
+                    Ctrl.WHChk.Check3.Left := LineWidth;
+                    UpdateColorsFor508Compliance(Ctrl.WHChk);
+                    UpdateColorsFor508Compliance(Ctrl.WHChk.Flbl);
+                    UpdateColorsFor508Compliance(Ctrl.WHChk.Check2);
+                    UpdateColorsFor508Compliance(Ctrl.WHChk.Check3);
+                    ScreenReaderSupport(Ctrl.WHChk);
+                    ScreenReaderSupport(Ctrl.WHChk.Check2);
+                    ScreenReaderSupport(Ctrl.WHChk.Check3);
+                    Y := Ctrl.WHChk.Check3.Top + Ctrl.WHChk.Check3.Height;
+                    Nextline(Y);
+                  end
+                  else
+                    DoLbl := FALSE;
+                end
+                else
+                  DoLbl :=FALSE;
+              end;
+
+              ptWHNotPurp:
+              begin
+                NextLine(Y);
+                Ctrl.WHChk := TWHCheckBox.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                ProcessLabel(Prompt.Required, TRUE, Ctrl.WHChk.Parent, Ctrl.WHChk);
+                Ctrl.WHChk.Flbl := lblCtrl;
+                if lblCtrl is TWinControl then
+                  TWinControl(lblCtrl).TabOrder := Ctrl.WHChk.TabOrder;
+                Ctrl.WHChk.Flbl.Top := Y + 7;
+                Ctrl.WHChk.Flbl.Left := NewLInePromptGap+30;
+                WrapLeft := Ctrl.WHChk.Flbl.Left;
+//                Ctrl.WHChk.Flbl.Width := TextWidthByFont(
+//                  TExposedComponent(Ctrl.WHChk.Flbl).Font.Handle,
+//                  TExposedComponent(Ctrl.WHChk.Flbl).Caption)+25;
+//                Ctrl.WHChk.Flbl.Height := TextHeightByFont(
+//                  TExposedComponent(Ctrl.WHChk.Flbl).Font.Handle,
+//                  TExposedComponent(Ctrl.WHChk.Flbl).Caption)+4;
+                LineWidth := WrapLeft + Ctrl.WHChk.Flbl.Width+10;
+                Ctrl.WHChk.Check2 := TWHCheckBox.Create(AOwner);
+                Ctrl.WHChk.Check2.Parent := Ctrl.WHChk.Parent;
+                Ctrl.WHChk.Check3 := TWHCheckBox.Create(AOwner);
+                Ctrl.WHChk.Check3.Parent := Ctrl.WHChk.Parent;
+                Ctrl.WHChk.ShowHint := true;
+                Ctrl.WHChk.Hint := 'Letter will print with next WH batch run';
+                Ctrl.WHChk.Caption := 'Letter';
+                Ctrl.WHChk.Width := TextWidthByFont(Ctrl.WHChk.Font.Handle, Ctrl.WHChk.Caption)+25;
+                Ctrl.WHChk.Height := TextHeightByFont(Ctrl.WHChk.Font.Handle, Ctrl.WHChk.Caption)+4;
+                if (LineWidth + Ctrl.WHChk.Width) > PWidth - 10 then
+                begin
+                  LineWidth := WrapLeft;
+                  Y := Ctrl.WHChk.Flbl.Top + Ctrl.WHChk.Flbl.Height;
+                  Nextline(Y);
+                end;
+                Ctrl.WHChk.Top := Y + 7;
+                Ctrl.WHChk.Left := LineWidth;
+                Ctrl.WHChk.OnClick := Prompt.PromptChange;
+                Ctrl.WHChk.Checked := (Pos('L',WHResultNot)>0);
+                LineWidth := LineWidth + Ctrl.WHChk.Width+10;
+                Ctrl.WHChk.Check2.Caption := 'In-Person';
+                Ctrl.WHChk.Check2.Width := TextWidthByFont(Ctrl.WHChk.Check2.Font.Handle, Ctrl.WHChk.Check2.Caption) + 25;
+                Ctrl.WHChk.Check2.Height := TextHeightByFont(Ctrl.WHChk.check2.Font.Handle, Ctrl.WHChk.check2.Caption)+4;
+                if (LineWidth + Ctrl.WHChk.Check2.Width) > PWidth - 10 then
+                begin
+                  LineWidth := WrapLeft;
+                  Y := Ctrl.WHChk.Top + Ctrl.WHChk.Height;
+                  Nextline(Y);
+                end;
+                Ctrl.WHChk.Check2.Top := Y + 7;
+                Ctrl.WHChk.Check2.Left := LineWidth;
+                Ctrl.WHChk.Check2.OnClick := Prompt.PromptChange;
+                Ctrl.WHChk.Check2.Checked := (Pos('I',WHResultNot)>0);
+                LineWidth := LineWidth + Ctrl.WHChk.Check2.Width+10;
+                Ctrl.WHChk.Check3.Caption := 'Phone Call';
+                Ctrl.WHChk.Check3.Width := TextWidthByFont(Ctrl.WHChk.Check3.Font.Handle, Ctrl.WHChk.Check3.Caption)+20;
+                Ctrl.WHChk.Check3.Height := TextHeightByFont(Ctrl.WHChk.check3.Font.Handle, Ctrl.WHChk.check3.Caption)+4;
+                if (LineWidth + Ctrl.WHChk.Check3.Width) > PWidth - 10 then
+                begin
+                  LineWidth := WrapLeft;
+                  Y := Ctrl.WHChk.Check2.Top + Ctrl.WHChk.Check2.Height;
+                  Nextline(Y);
+                end;
+                Ctrl.WHChk.Check3.Top := Y + 7;
+                Ctrl.WHChk.Check3.OnClick := Prompt.PromptChange;
+                Ctrl.WHChk.Check3.Checked := (Pos('P',WHResultNot)>0);
+                Ctrl.WHChk.Check3.Left := LineWidth;
+                Y := Ctrl.WHChk.Check3.Top + Ctrl.WHChk.Check3.Height;
+                Nextline(Y);
+                Ctrl.WHChk.Fbutton := TCPRSDialogButton.Create(AOwner);
+                Ctrl.WHChk.FButton.Parent := Ctrl.WHChk.Parent;
+                Ctrl.WHChk.FButton.Enabled:=(Pos('L',WHResultNot)>0);
+                Ctrl.WHChk.FButton.Left := Ctrl.WHChk.Flbl.Left;
+                Ctrl.WHChk.FButton.Top := Y+7;
+                Ctrl.WHChk.FButton.OnClick := Prompt.ViewWHText;
+                Ctrl.WHChk.FButton.Caption := 'View WH Notification Letter';
+                Ctrl.WHChk.FButton.Width := TextWidthByFont(Ctrl.WHChk.FButton.Font.Handle, Ctrl.WHChk.FButton.Caption) + 13;
+                Ctrl.WHChk.FButton.Height := TextHeightByFont(Ctrl.WHChk.FButton.Font.Handle, Ctrl.WHChk.FButton.Caption) + 13;
+                UpdateColorsFor508Compliance(Ctrl.WHChk);
+                UpdateColorsFor508Compliance(Ctrl.WHChk.Flbl);
+                UpdateColorsFor508Compliance(Ctrl.WHChk.Check2);
+                UpdateColorsFor508Compliance(Ctrl.WHChk.Check3);
+                UpdateColorsFor508Compliance(Ctrl.WHChk.FButton);
+                ScreenReaderSupport(Ctrl.WHChk);
+                ScreenReaderSupport(Ctrl.WHChk.Check2);
+                ScreenReaderSupport(Ctrl.WHChk.Check3);
+                ScreenReaderSupport(Ctrl.WHChk.FButton);
+                LineWidth := Ctrl.WHChk.FButton.Left + Ctrl.WHChk.FButton.Width;
+                if piece(Prompt.FRec4,u,12)='1' then
+                begin
+                  Ctrl.WHChk.FPrintNow :=TCPRSDialogCheckBox.Create(AOwner);
+                  Ctrl.WHChk.FPrintNow.Parent := Ctrl.WHChk.Parent;
+                  Ctrl.WHChk.FPrintNow.ShowHint := true;
+                  Ctrl.WHChk.FPrintNow.Hint := 'Letter will print after "Finish" button is clicked';
+                  Ctrl.WHChk.FPrintNow.Caption:='Print Now';
+                  Ctrl.WHChk.FPrintNow.Width := TextWidthByFont(Ctrl.WHChk.FPrintNow.Font.Handle, Ctrl.WHChk.FPrintNow.Caption)+20;
+                  Ctrl.WHChk.FPrintNow.Height := TextHeightByFont(Ctrl.WHChk.FPrintNow.Font.Handle, Ctrl.WHChk.FPrintNow.Caption)+4;
+                  if (LineWidth + Ctrl.WHChk.FPrintNow.Width) > PWidth - 10 then
+                  begin
+                    LineWidth := WrapLeft;
+                    Y := Ctrl.WHChk.FButton.Top + Ctrl.WHChk.FButton.Height;
+                    Nextline(Y);
+                  end;
+                  Ctrl.WHChk.FPrintNow.Left := LineWidth + 15;
+                  Ctrl.WHChk.FPrintNow.Top := Y + 7;
+                  Ctrl.WHChk.FPrintNow.Enabled := (Pos('L',WHResultNot)>0);
+                  Ctrl.WHChk.FPrintNow.Checked :=(WHPrintDevice<>'');
+                  Ctrl.WHChk.FPrintNow.OnClick := Prompt.PromptChange;
+                  UpdateColorsFor508Compliance(Ctrl.WHChk.FPrintNow);
+                  MinX :=PWidth;
+                  if (Ctrl.WHChk.FButton.Top + Ctrl.WHChk.FButton.Height) > (Ctrl.WHChk.FPrintNow.Top + Ctrl.WHChk.FPrintNow.Height) then
+                    Y := Ctrl.WHChk.FButton.Top + Ctrl.WHChk.FButton.Height + 7
+                  else
+                    Y := Ctrl.WHChk.FPrintNow.Top + Ctrl.WHChk.FPrintNow.Height + 7;
+                ScreenReaderSupport(Ctrl.WHChk.FPrintNow);
+                end
+                else
+                  Y := Ctrl.WHChk.FButton.Top + Ctrl.WHChk.FButton.Height + 7;
+                NextLine(Y);
+              end;
+
+            ptVisitDate:
+              begin
+                Ctrl.dt := TCPRSDialogDateCombo.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.dt.LongMonths := TRUE;
+                try
+                  DefaultDate := Ctrl.dt.FMDate;
+                  Ctrl.dt.FMDate := StrToFloat(Prompt.Value);
+                except
+                  on EConvertError do
+                    Ctrl.dt.FMDate := DefaultDate;
+                  else
+                    raise;
+                end;
+                Ctrl.dt.OnChange := Prompt.PromptChange;
+                UpdateColorsFor508Compliance(Ctrl.dt);
+                DoLbl := TRUE;
+                MinX := Ctrl.dt.Width;
+                //TextWidthByFont(Ctrl.dt.Font.Handle, 'May 22, 2000') + 26;
+              end;
+
+            ptPrimaryDiag, ptAdd2PL, ptContraindicated:
+              begin
+                Ctrl.cb := TCPRSDialogCheckBox.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.cb.Checked := (Prompt.Value = '1');
+                Ctrl.cb.Caption := Prompt.Caption;
+                if prompt.Required=false then DoLbl := true;
+                Ctrl.cb.AutoSize := False;
+                Ctrl.cb.OnEnter := ParentCBEnter;
+                Ctrl.cb.OnExit := ParentCBExit;
+                Ctrl.cb.Height := TORCheckBox(Ctrl.cb).Height + 5;
+                Ctrl.cb.Width := 17;
+                Ctrl.cb.OnClick := Prompt.PromptChange;
+                UpdateColorsFor508Compliance(Ctrl.cb);
+                MinX := Ctrl.cb.Width;
+              end;
+
+            else
+            begin
+              if(pt = ptSubComment) then
+              begin
+                Ctrl.cb := TCPRSDialogCheckBox.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.cb.Checked := (Prompt.Value = '1');
+                Ctrl.cb.Caption := Prompt.Caption;
+                Ctrl.cb.AutoSize := TRUE;
+                Ctrl.cb.OnClick := SubCommentChange;
+                Ctrl.cb.Tag := Integer(Prompt);
+                UpdateColorsFor508Compliance(Ctrl.cb);
+                MinX := Ctrl.cb.Width;
+              end
+              else
+              if pt = ptVitalEntry then
+              begin
+                vt := Prompt.VitalType;
+                if(vt = vtPain) then
+                begin
+                  Ctrl.cbo := TCPRSDialogComboBox.Create(AOwner);
+                  Ctrl.ctrl.Parent := AParent;
+                  Ctrl.cbo.Style := orcsDropDown;
+                  Ctrl.cbo.Pieces := '1,2';
+                  Ctrl.cbo.OnKeyDown := Prompt.ComboBoxKeyDown;
+                  InitPainCombo(Ctrl.cbo);
+                  Ctrl.cbo.ListItemsOnly := TRUE;
+                  Ctrl.cbo.SelectByID(Prompt.VitalValue);
+                  Ctrl.cbo.OnChange := Prompt.PromptChange;
+                  Ctrl.cbo.SelLength := 0;
+                  MinX := TextWidthByFont(Ctrl.cbo.Font.Handle, Ctrl.cbo.DisplayText[0]) + 24;
+                  MaxX := TextWidthByFont(Ctrl.cbo.Font.Handle, Ctrl.cbo.DisplayText[1]) + 24;
+                  if(ElementChecked = Self) then
+                  begin
+                    AutoFocusControl := Ctrl.cbo;
+                    ElementChecked := nil;
+                  end;
+                  UpdateColorsFor508Compliance(Ctrl.cbo);
+                end
+                else
+                begin
+                  Ctrl.vedt := TVitalEdit.Create(AOwner);
+                  Ctrl.ctrl.Parent := AParent;
+                  MinX := TextWidthByFont(Ctrl.vedt.Font.Handle, '12345.67');
+                  Ctrl.vedt.OnKeyPress := Prompt.EditKeyPress;
+                  Ctrl.vedt.OnChange := Prompt.PromptChange;
+                  Ctrl.vedt.OnExit := Prompt.VitalVerify;
+                  UpdateColorsFor508Compliance(Ctrl.vedt);
+                  if(vt in [vtTemp, vtHeight, vtWeight]) then
+                  begin
+                    HasVCombo := TRUE;
+                    Ctrl.vedt.LinkedCombo := TVitalComboBox.Create(AOwner);
+                    Ctrl.vedt.LinkedCombo.Parent := AParent;
+                    Ctrl.vedt.LinkedCombo.OnChange := Prompt.PromptChange;
+                    Ctrl.vedt.LinkedCombo.Tag := VitalControlTag(vt, TRUE);
+                    Ctrl.vedt.LinkedCombo.OnExit := Prompt.VitalVerify;
+                    Ctrl.vedt.LinkedCombo.LinkedEdit := Ctrl.vedt;
+                    case vt of
+                      vtTemp:
+                        begin
+                          Ctrl.vedt.LinkedCombo.Items.Add('F');
+                          Ctrl.vedt.LinkedCombo.Items.Add('C');
+                        end;
+
+                      vtHeight:
+                        begin
+                          Ctrl.vedt.LinkedCombo.Items.Add('IN');
+                          Ctrl.vedt.LinkedCombo.Items.Add('CM');
+                        end;
+
+                      vtWeight:
+                        begin
+                          Ctrl.vedt.LinkedCombo.Items.Add('LB');
+                          Ctrl.vedt.LinkedCombo.Items.Add('KG');
+                        end;
+
+                    end;
+                    Ctrl.vedt.LinkedCombo.SelectByID(Prompt.VitalUnitValue);
+                    if(Ctrl.vedt.LinkedCombo.ItemIndex < 0) then
+                      Ctrl.vedt.LinkedCombo.ItemIndex := 0;
+                    Ctrl.vedt.LinkedCombo.Width := TextWidthByFont(Ctrl.vedt.Font.Handle,
+                                                                    Ctrl.vedt.LinkedCombo.Items[1]) + 30;
+                    Ctrl.vedt.LinkedCombo.SelLength := 0;
+                    UpdateColorsFor508Compliance(Ctrl.vedt.LinkedCombo);
+                    inc(MinX, Ctrl.vedt.LinkedCombo.Width);
+                  end;
+                  if(ElementChecked = Self) then
+                  begin
+                    AutoFocusControl := Ctrl.vedt;
+                    ElementChecked := nil;
+                  end;
+                end;
+                Ctrl.ctrl.Text := Prompt.VitalValue;
+                Ctrl.ctrl.Tag := VitalControlTag(vt);
+                DoLbl := TRUE;
+              end
+              else
+              if pt = ptDataList then
+              begin
+                Ctrl.cbo := TCPRSDialogComboBox.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.cbo.Style := orcsDropDown;
+                Ctrl.cbo.Pieces := '12';
+                if ActChoicesSL = nil then
+                   ActChoicesSL := TORStringList.Create;
+                if Self.Historical then
+                  EncDt := DateTimeToFMDateTime(Date)
+                else
+                  EncDt := RemForm.PCEObj.VisitDateTime;
+                if assigned(Prompt.FData.FChoicesActiveDates) then {csv active/inactive dates}
+                 for m := 0 to (Prompt.FData.FChoices.Count - 1) do
+                  begin
+                    for n := 0 to (TStringList(Prompt.FData.FChoicesActiveDates[m]).Count - 1) do
+                     begin
+                       ActDt := StrToIntDef((Piece(TStringList(Prompt.FData.FChoicesActiveDates[m]).Strings[n], ':', 1)),0);
+                       InActDt := StrToIntDef((Piece(TStringList(Prompt.FData.FChoicesActiveDates[m]).Strings[n], ':', 2)),9999999);
+                       Piece12 := Piece(Piece(Prompt.FData.FChoices.Strings[m],U,12),':',1);
+                       Prompt.FData.FChoices.SetStrPiece(m,12,Piece12);
+                       if (EncDt >= ActDt) and (EncDt <= InActDt) then
+                          ActChoicesSL.AddObject(Prompt.FData.FChoices[m], Prompt.FData.FChoices.Objects[m]);
+                     end; {loop through the TStringList object in FChoicesActiveDates[m] object property}
+                  end  {loop through FChoices/FChoicesActiveDates}
+                else
+                  FastAssign(Prompt.FData.FChoices, ActChoicesSL);
+                FastAssign(ActChoicesSL, Ctrl.cbo.Items);
+                Ctrl.cbo.CheckBoxes := TRUE;
+                Ctrl.cbo.SelectByID(Prompt.Value);
+                Ctrl.cbo.OnCheckedText := FReminder.ComboBoxCheckedText;
+                Ctrl.cbo.OnResize := FReminder.ComboBoxResized;
+                Ctrl.cbo.CheckedString := Prompt.Value;
+                Ctrl.cbo.OnChange := Prompt.PromptChange;
+                Ctrl.cbo.ListItemsOnly := TRUE;
+                UpdateColorsFor508Compliance(Ctrl.cbo);
+                if(ElementChecked = Self) then
+                begin
+                  AutoFocusControl := Ctrl.cbo;
+                  ElementChecked := nil;
+                end;
+                DoLbl := TRUE;
+                if(Prompt.FData.FChoicesFont = Ctrl.cbo.Font.Handle) then
+                begin
+                  MinX := Prompt.FData.FChoicesMin;
+                  MaxX := Prompt.FData.FChoicesMax;
+                end
+                else
+                begin
+                  GetComboBoxMinMax(Ctrl.cbo, MinX, MaxX);
+                  inc(MaxX,18); // Adjust for checkboxes
+                  MinX := MaxX;
+                  Prompt.FData.FChoicesFont := Ctrl.cbo.Font.Handle;
+                  Prompt.FData.FChoicesMin := MinX;
+                  Prompt.FData.FChoicesMax := MaxX;
+                end;
+              end
+              else
+              if(pt = ptMHTest) or ((pt = ptGaf) and (MHDLLFound = true)) then
+              begin
+                Ctrl.btn := TCPRSDialogButton.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.btn.OnClick := Prompt.DoMHTest;
+                Ctrl.btn.Caption := Prompt.ForcedCaption;
+                if Piece(Prompt.FData.FRec3,U,13)='1' then
+                begin
+                  Ctrl.btn.Caption := Ctrl.btn.Caption + ' *';
+                  (Ctrl.btn as ICPRSDialogComponent).RequiredField := TRUE;
+                end;
+                MinX := TextWidthByFont(Ctrl.btn.Font.Handle, Ctrl.btn.Caption) + 13;
+                Ctrl.btn.Height := TextHeightByFont(Ctrl.btn.Font.Handle, Ctrl.btn.Caption) + 8;
+                DoLbl := TRUE;
+              end
+             else
+              if ((pt = ptGAF)) and (MHDLLFound = false) then
+              begin
+                Ctrl.edt := TCPRSDialogFieldEdit.Create(AOwner);
+                Ctrl.ctrl.Parent := AParent;
+                Ctrl.edt.Text := Prompt.Value;
+                ud := TUpDown.Create(AOwner);
+                ud.Parent := AParent;
+                ud.Associate := Ctrl.edt;
+                ud.Min := 0;
+                ud.Max := 100;
+                MinX := TextWidthByFont(Ctrl.edt.Font.Handle, IntToStr(ud.Max)) + 24 + Gap;
+                ud.Position := StrToIntDef(Prompt.Value, ud.Min);
+                Ctrl.edt.OnKeyPress := Prompt.EditKeyPress;
+                Ctrl.edt.OnChange := Prompt.PromptChange;
+                if(User.WebAccess and (GAFURL <> '')) then
+                begin
+                  HelpBtn := TCPRSDialogButton.Create(AOwner);
+                  HelpBtn.Parent := AParent;
+                  HelpBtn.Caption := 'Reference Info';
+                  HelpBtn.OnClick := Prompt.GAFHelp;
+                  HelpBtn.Width := TextWidthByFont(HelpBtn.Font.Handle, HelpBtn.Caption) + 13;
+                  HelpBtn.Height := Ctrl.edt.Height;
+                  inc(MinX, HelpBtn.Width);
+                end;
+                DoLbl := TRUE;
+              end
+              else
+                Ctrl.ctrl := nil;
+            end;
+          end;
+
+           if(DoLbl) and ((pt <> ptWHNotPurp) and (pt <> ptWHPapResult)) then
+          //if(DoLbl) then
+          begin
+            Req := Prompt.Required;
+            if (not Req) and (pt = ptGaf) and (MHDLLFound = false) then
+              Req := (Piece(Prompt.FData.FRec3,U,13) = '1');
+            ProcessLabel(Req, Prompt.FParent.Enabled, AParent, Ctrl.Ctrl);
+            if assigned(lblCtrl) then
+            begin
+              inc(MinX, lblCtrl.Width + LblGap);
+              inc(MaxX, lblCtrl.Width + LblGap);
+            end
+            else
+              DoLbl := FALSE;
+          end;
+
+          if(MaxX < MinX) then
+            MaxX := MinX;
+
+          if((Prompt.SameLine) and ((LastX + MinX + Gap) < PWidth)) and
+          ((pt <> ptWHNotPurp) and (pt <> ptWHPapResult)) then
+          //if((Prompt.SameLine) and ((LastX + MinX + Gap) < PWidth)) then
+          begin
+            X := LastX;
+          end
+          else
+          begin
+            if(Shared) and (assigned(FChildren)) and (FChildren.Count > 0) then
+              X := TRemDlgElement(FChildren[0]).TrueIndent
+            else
+            begin
+              if(assigned(cb)) then
+                X := cb.Left + NewLinePromptGap
+              else
+                X := pnl.Left + NewLinePromptGap;
+            end;
+            NextLine(Y);
+          end;
+          if(MaxX > (PWidth - X - Gap)) then
+            MaxX := PWidth - X - Gap;
+          if((DoLbl) or (assigned(Ctrl.Ctrl)))  and
+          ((pt <> ptWHNotPurp) and (pt <> ptWHPapResult)) then
+          //if((DoLbl) or (assigned(Ctrl.Ctrl))) then
+          begin
+            if DoLbl then
+            begin
+              lblCtrl.Left := X;
+              lblCtrl.Top := Y;
+              inc(X, lblCtrl.Width + LblGap);
+              dec(MinX, lblCtrl.Width + LblGap);
+              dec(MaxX, lblCtrl.Width + LblGap);
+              SameLineCtrl.Add(lblCtrl);
+            end;
+            if(assigned(Ctrl.Ctrl)) then
+            begin
+              if ScreenReaderSystemActive then
+              begin
+                if Supports(Ctrl.Ctrl, ICPRSDialogComponent) then
+                  ScreenReaderSystem_CurrentComponent(Ctrl.Ctrl as ICPRSDialogComponent)
+                else
+                  ScreenReaderSystem_Stop;
+              end;
+              Ctrl.Ctrl.Enabled := Prompt.FParent.Enabled;
+              if not Ctrl.Ctrl.Enabled then
+                Ctrl.Ctrl.Font.Color := DisabledFontColor;
+              Ctrl.Ctrl.Left := X;
+              Ctrl.Ctrl.Top := Y;
+              SameLineCtrl.Add(Ctrl.Ctrl);
+              if(assigned(ud)) then
+              begin
+                SameLineCtrl.Add(ud);
+                if(assigned(HelpBtn)) then
+                begin
+                  SameLineCtrl.Add(HelpBtn);
+                  Ctrl.Ctrl.Width := MinX - HelpBtn.Width - ud.Width;
+                  HelpBtn.Left := X + Ctrl.Ctrl.Width + ud.Width + Gap;
+                  HelpBtn.Top := Y;
+                  HelpBtn.Enabled := Prompt.FParent.Enabled;
+                end
+                else
+                  Ctrl.Ctrl.Width := MinX - ud.Width;
+                ud.Left := X + Ctrl.Ctrl.Width;
+                ud.Top := Y;
+                LastX := X + MinX + PromptGap;
+                ud.Enabled := Prompt.FParent.Enabled;
+              end
+              else
+              if(HasVCombo) then
+              begin
+                SameLineCtrl.Add(Ctrl.vedt.LinkedCombo);
+                Ctrl.Ctrl.Width := MinX - Ctrl.vedt.LinkedCombo.Width;
+                Ctrl.vedt.LinkedCombo.Left := X + Ctrl.Ctrl.Width;
+                Ctrl.vedt.LinkedCombo.Top := Y;
+                LastX := X + MinX + PromptGap;
+                Ctrl.vedt.LinkedCombo.Enabled := Prompt.FParent.Enabled;
+              end
+              else
+              begin
+                Ctrl.Ctrl.Width := MaxX;
+                LastX := X + MaxX + PromptGap;
+              end;
+            end;
+          end;
+        end;
+        if(assigned(ud)) then
+          Prompt.FCurrentControl := ud
+        else
+          Prompt.FCurrentControl := Ctrl.Ctrl;
+      end;
+      NextLine(Y);
+    finally
+      SameLineCtrl.Free;
+    end;
+  end;
+
+  procedure UpdatePrompts(EnablePanel: boolean; ClearCB: boolean);
+  begin
+    if EnablePanel then
+    begin
+      if not ScreenReaderSystemActive then
+      begin
+        pnl.TabStop := TRUE;     {tab through the panels instead of the checkboxes}
+        pnl.OnEnter := FieldPanelEntered;
+        pnl.OnExit := FieldPanelExited;
+      end;
+      if ClearCB then
+        cb := nil;
+    end;
+
+    if (FChecked and assigned(FPrompts) and (FPrompts.Count > 0)) then
+    begin
+      AddPrompts(FALSE, BaseParent, ParentWidth, Y);
+    end
+    else
+      inc(Y, pnl.Height);
+  end;
+  
+begin
+  Result := nil;
+  cb := nil;
+  pnl := nil;
+  AutoFocusControl := nil;
+  X := TrueIndent;
+  if(assigned(FPrompts)) then
+  begin
+    for i := 0 to FPrompts.Count-1 do
+      TRemPrompt(FPrompts[i]).FCurrentControl := nil;
+  end;
+  if(ElemType = etDisplayOnly) then
+  begin
+    if(FText <> '') then
+    begin
+      inc(Y,Gap);
+      pnl := GetPanel(EntryID, CRLFText(FText), ParentWidth - X - (Gap * 2), nil);
+      pnl.Left := X;
+      pnl.Top := Y;
+      UpdatePrompts(ScreenReaderSystemActive, TRUE);
+    end;
+  end
+  else
+  begin
+    inc(Y,Gap);
+    cb := TCPRSDialogParentCheckBox.Create(AOwner);
+    cb.Parent := BaseParent;
+    cb.Left := X;
+    cb.Top := Y;
+    cb.Tag := Integer(Self);
+    cb.WordWrap := TRUE;
+    cb.AutoSize := TRUE;
+    cb.Checked := FChecked;
+    cb.Width := ParentWidth - X - Gap;
+    if not ScreenReaderSystemActive then
+      cb.Caption := CRLFText(FText);
+    cb.AutoAdjustSize;
+    cbSingleLine := cb.SingleLine;
+//    cb.AutoSize := FALSE;
+    cb.WordWrap := FALSE;
+    cb.Caption := ' ';
+//    cb.Width := 13;
+//    cb.Height := 17;
+    if not ScreenReaderSystemActive then
+      cb.TabStop := False;  {take checkboxes out of the tab order}
+    pnl := GetPanel(EntryID, CRLFText(FText), ParentWidth - X - (Gap * 2) - IndentGap, cb);
+    pnl.Left := X + IndentGap;
+    pnl.Top := Y;
+    cb.Associate := pnl;
+    pnl.Tag := Integer(cb);   {So the panel can check the checkbox}
+    cb.OnClick := cbClicked;
+    cb.OnEnter := cbEntered;
+    if ScreenReaderSystemActive then
+      cb.OnExit := ParentCBExit;
+
+    UpdateColorsFor508Compliance(cb);
+    pnl.OnKeyPress := FieldPanelKeyPress;
+    pnl.OnClick := FieldPanelOnClick;
+    for i := 0 to pnl.ControlCount - 1 do
+      if ((pnl.Controls[i] is TLabel) or (pnl.Controls[i] is TVA508StaticText)) and
+         not (fsUnderline in TLabel(pnl.Controls[i]).Font.Style) then //If this isn't a hyperlink change then event handler
+         TLabel(pnl.Controls[i]).OnClick := FieldPanelLabelOnClick;
+
+    //cb.Enabled := Enabled;
+    if(assigned(FParent) and (FParent.ChildrenRequired in [crOne, crNoneOrOne])) then
+      cb.RadioStyle := TRUE;
+
+    UpdatePrompts(TRUE, FALSE);
+  end;
+
+  if(ShowChildren) then
+  begin
+    gb := nil;
+    if(Box) then
+    begin
+      gb := TGroupBox.Create(AOwner);
+      gb.Parent := BaseParent;
+      gb.Left := TrueIndent + (ChildrenIndent * IndentMult);
+      gb.Top := Y;
+      gb.Width := ParentWidth - gb.Left - Gap;
+      PrntWidth := gb.Width - (Gap * 2);
+      gb.Caption := BoxCaption;
+//      if ScreenReaderSystemActive then
+//      begin
+//        ScreenReaderSystem_AddText(gb.Caption + ',');
+//      end;
+      gb.Enabled := EnableChildren;
+      if(not EnableChildren) then
+        gb.Font.Color := DisabledFontColor;
+      UpdateColorsFor508Compliance(gb);
+      prnt := gb;
+      if(gb.Caption = '') then
+        Y1 := gbTopIndent
+      else
+        Y1 := gbTopIndent2;
+    end
+    else
+    begin
+      prnt := BaseParent;
+      Y1 := Y;
+      PrntWidth := ParentWidth;
+    end;
+
+    for i := 0 to FChildren.Count-1 do
+    begin
+      ERes := TRemDlgElement(FChildren[i]).BuildControls(Y1, PrntWidth, prnt, AOwner);
+      if(not assigned(Result)) then
+        Result := ERes;
+    end;
+
+    if(FHasSharedPrompts) then
+      AddPrompts(TRUE, prnt, PrntWidth, Y1);
+
+    if(Box) then
+    begin
+      gb.Height := Y1 + (Gap * 3);
+      inc(Y, Y1 + (Gap * 4));
+    end
+    else
+      Y := Y1;
+  end;
+
+  SubCommentChange(nil);
+
+  if(assigned(AutoFocusControl)) then
+  begin
+    if(AutoFocusControl is TORComboBox) and
+      (TORComboBox(AutoFocusControl).CheckBoxes) and
+      (pos('1',TORComboBox(AutoFocusControl).CheckedString) = 0) then
+      Result := AutoFocusControl
+    else
+    if(TORExposedControl(AutoFocusControl).Text = '') then
+      Result := AutoFocusControl
+  end;
+  if ScreenReaderSystemActive then
+    ScreenReaderSystem_Stop;    
+end;
+
+//This is used to get the template field values if this reminder is not the
+//current reminder in dialog, in which case no uEntries will exist so we have
+//to get the template field values that were saved in the element.
+function TRemDlgElement.GetTemplateFieldValues(const Text: string; FldValues: TORStringList =  nil): string;
+var
+  flen, CtrlID, i, j: integer;
+  Fld: TTemplateField;
+  Temp, FldName, NewTxt: string;
+
+const
+  TemplateFieldBeginSignature = '{FLD:';
+  TemplateFieldEndSignature = '}';
+  TemplateFieldSignatureLen = length(TemplateFieldBeginSignature);
+  TemplateFieldSignatureEndLen = length(TemplateFieldEndSignature);
+  FieldIDDelim = '`';
+  FieldIDLen = 6;
+
+  procedure AddNewTxt;
+  begin
+    if(NewTxt <> '') then
+    begin
+      insert(StringOfChar('x',length(NewTxt)), Temp, i);
+      insert(NewTxt, Result, i);
+      inc(i, length(NewTxt));
+    end;
+  end;
+
+begin
+  Result := Text;
+  Temp := Text;
+  repeat
+    i := pos(TemplateFieldBeginSignature, Temp);
+    if(i > 0) then
+    begin
+      CtrlID := 0;
+      if(copy(Temp, i + TemplateFieldSignatureLen, 1) = FieldIDDelim) then
+      begin
+        CtrlID := StrToIntDef(copy(Temp, i + TemplateFieldSignatureLen + 1, FieldIDLen-1), 0);
+        delete(Temp,i + TemplateFieldSignatureLen, FieldIDLen);
+        delete(Result,i + TemplateFieldSignatureLen, FieldIDLen);
+      end;
+      j := pos(TemplateFieldEndSignature, copy(Temp, i + TemplateFieldSignatureLen, MaxInt));
+      if(j > 0) then
+      begin
+        inc(j, i + TemplateFieldSignatureLen - 1);
+        flen := j - i - TemplateFieldSignatureLen;
+        FldName := copy(Temp, i + TemplateFieldSignatureLen, flen);
+        Fld := GetTemplateField(FldName, FALSE);
+        delete(Temp,i,flen + TemplateFieldSignatureLen + 1);
+        delete(Result,i,flen + TemplateFieldSignatureLen + 1);
+      end
+      else
+      begin
+        delete(Temp,i,TemplateFieldSignatureLen);
+        delete(Result,i,TemplateFieldSignatureLen);
+        Fld := nil;
+      end;
+      // Get the value that was entered if there is one
+      if assigned(FldValues) and (CtrlID > 0) then
+      begin
+        j := FldValues.IndexOfPiece(IntToStr(CtrlID));
+        if not(j<0) then
+          if Fld.DateType in DateComboTypes then
+             NewTxt := Piece(Piece(FldValues[j],U,2),':',1)
+          else
+             NewTxt := Piece(FldValues[j],U,2);
+      end;
+      // If nothing has been entered, use the default
+      if (NewTxt = '') and assigned(Fld) and
+         //If this template field is a dftHyperlink or dftText that is
+         //excluded (FSepLines = True) then don't get the default text
+         not ((Fld.FldType in [dftHyperlink, dftText]) and Fld.SepLines) then
+        NewTxt := Fld.TemplateFieldDefault;
+      AddNewTxt;
+    end;
+  until not (i > 0);
+end;
+
+procedure TRemDlgElement.AddText(Lst: TStrings);
+var
+  i, ilvl: integer;
+  Prompt: TRemPrompt;
+  txt: string;
+  FldData: TORStringList;
+
+begin
+  if (not (FReminder is TReminder)) then
+    ScootOver := 4;
+  try
+    if Add2PN then
+    begin
+      ilvl := IndentPNLevel;
+      if(FPNText <> '') then
+        txt := FPNText
+      else
+      begin
+        txt := FText;
+        if not FReminder.FNoResolve then
+          //If this is the CurrentReminderInDialog then we get the template field
+          //values from the visual control in the dialog window.
+          if FReminder = CurrentReminderInDialog then
+             txt := ResolveTemplateFields(txt, TRUE)
+          else
+          //If this is not the CurrentReminderInDialog (i.e.: Next or Back button
+          //has been pressed), then we have to get the template field values
+          //that were saved in the element.
+            begin
+             FldData := TORStringList.Create;
+             GetFieldValues(FldData);
+             txt := GetTemplateFieldValues(txt, FldData);
+            end;
+      end;
+      if FReminder.FNoResolve then
+      begin
+        StripScreenReaderCodes(txt);
+        Lst.Add(txt);
+      end
+      else
+        WordWrap(txt, Lst, ilvl);
+      dec(ilvl,2);
+      if(assigned(FPrompts)) then
+      begin
+        for i := 0 to FPrompts.Count-1 do
+        begin
+          Prompt := TRemPrompt(FPrompts[i]);
+          if(not Prompt.FIsShared) then
+            WordWrap(Prompt.NoteText, Lst, ilvl);
+        end;
+      end;
+      if(assigned(FParent) and FParent.FHasSharedPrompts) then
+      begin
+        for i := 0 to FParent.FPrompts.Count-1 do
+        begin
+          Prompt := TRemPrompt(FParent.FPrompts[i]);
+          if(Prompt.FIsShared) and (Prompt.FSharedChildren.IndexOf(Self) >= 0) then
+            begin
+              //AGP Change MH dll
+              if (Prompt.PromptType = ptMHTest) then WordWrap(Prompt.NoteText, Lst, ilvl, 4, True)
+              else WordWrap(Prompt.NoteText, Lst, ilvl);
+            end;
+        end;
+      end;
+    end;
+    if (assigned(FChildren)) and (FChecked or (ElemType = etDisplayOnly)) then
+    begin
+      for i := 0 to FChildren.Count-1 do
+      begin
+        TRemDlgElement(FChildren[i]).AddText(Lst);
+      end;
+    end;
+  finally
+    if (not (FReminder is TReminder)) then
+      ScootOver := 0;
+  end;
+end;
+
+function TRemDlgElement.AddData(Lst: TStrings; Finishing: boolean;
+                                AHistorical: boolean = FALSE): integer;
+var
+  i, j: integer;
+  OK: boolean;
+  ActDt, InActDt, EncDt: double;
+  RData: TRemData;
+
+begin
+  Result := 0;
+//  OK := ((ElemType <> etDisplayOnly) and FChecked);
+  OK := FChecked;
+  if(OK and Finishing) then
+    OK := (Historical = AHistorical);
+  if OK then
+  begin
+    if(assigned(FData)) then
+    begin
+      if Self.Historical then
+        EncDt := DateTimeToFMDateTime(Date)
+      else
+        EncDt := RemForm.PCEObj.VisitDateTime;
+      for i := 0 to FData.Count-1 do
+        begin
+          RData := TRemData(FData[i]);
+          if assigned(RData.FActiveDates) then
+            for j := 0 to (TRemData(FData[i]).FActiveDates.Count - 1) do
+              begin
+                ActDt := StrToIntDef(Piece(TRemData(FData[i]).FActiveDates[j],':',1), 0);
+                InActDt := StrToIntDef(Piece(TRemData(FData[i]).FActiveDates[j], ':', 2), 9999999);
+                if (EncDt >= ActDt) and (EncDt <= InActDt) then
+                  begin
+                    inc(Result, TRemData(FData[i]).AddData(Lst, Finishing));
+                    Break;
+                  end;
+              end
+          else
+            inc(Result, TRemData(FData[i]).AddData(Lst, Finishing));
+        end;
+    end;
+  end;
+  if (assigned(FChildren)) and (FChecked or (ElemType = etDisplayOnly)) then
+  begin
+    for i := 0 to FChildren.Count-1 do
+      inc(Result, TRemDlgElement(FChildren[i]).AddData(Lst, Finishing, AHistorical));
+  end;
+end;
+
+procedure TRemDlgElement.Check4ChildrenSharedPrompts;
+var
+  i, j: integer;
+  Kid: TRemDlgElement;
+  PList, EList: TList;
+  FirstMatch: boolean;
+  Prompt: TRemPrompt;
+
+begin
+  if(not FChildrenShareChecked) then
+  begin
+    FChildrenShareChecked := TRUE;
+    if(ChildrenSharePrompts and assigned(FChildren)) then
+    begin
+      for i := 0 to FChildren.Count-1 do
+        TRemDlgElement(FChildren[i]).GetData;
+      PList := TList.Create;
+      try
+        EList := TList.Create;
+        try
+          for i := 0 to FChildren.Count-1 do
+          begin
+            Kid := TRemDlgElement(FChildren[i]);
+//            if(Kid.ElemType <> etDisplayOnly) and (assigned(Kid.FPrompts)) then
+            if(assigned(Kid.FPrompts)) then
+            begin
+              for j:= 0 to Kid.FPrompts.Count-1 do
+              begin
+                PList.Add(Kid.FPrompts[j]);
+                EList.Add(Kid);
+              end;
+            end;
+          end;
+          if(PList.Count > 1) then
+          begin
+            for i := 0 to PList.Count-2 do
+            begin
+              if(assigned(EList[i])) then
+              begin
+                FirstMatch := TRUE;
+                Prompt := TRemPrompt(PList[i]);
+                for j := i+1 to PList.Count-1 do
+                begin
+                  if(assigned(EList[j]) and
+                    (Prompt.CanShare(TRemPrompt(PList[j])))) then
+                  begin
+                    if(FirstMatch) then
+                    begin
+                      FirstMatch := FALSE;
+                      if(not assigned(FPrompts)) then
+                        FPrompts := TList.Create;
+                      FHasSharedPrompts := TRUE;
+                      Prompt.FIsShared := TRUE;
+                      if(not assigned(Prompt.FSharedChildren)) then
+                        Prompt.FSharedChildren := TList.Create;
+                      Prompt.FSharedChildren.Add(EList[i]);
+                      FPrompts.Add(PList[i]);
+                      TRemDlgElement(EList[i]).FPrompts.Remove(PList[i]);
+                      EList[i] := nil;
+                    end;
+                    Prompt.FSharedChildren.Add(EList[j]);
+                    Kid := TRemDlgElement(EList[j]);
+                    Kid.FPrompts.Remove(PList[j]);
+                    if(Kid.FHasComment) and (Kid.FCommentPrompt = PList[j]) then
+                    begin
+                      Kid.FHasComment := FALSE;
+                      Kid.FCommentPrompt := nil;
+                    end;
+                    TRemPrompt(PList[j]).Free;
+                    EList[j] := nil;
+                  end;
+                end;
+              end;
+            end;
+          end;
+        finally
+          EList.Free;
+        end;
+      finally
+        PList.Free;
+      end;
+      for i := 0 to FChildren.Count-1 do
+      begin
+        Kid := TRemDlgElement(FChildren[i]);
+        if(assigned(Kid.FPrompts) and (Kid.FPrompts.Count = 0)) then
+        begin
+          Kid.FPrompts.Free;
+          Kid.FPrompts := nil;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TRemDlgElement.FinishProblems(List: TStrings);
+var
+  i,cnt: integer;
+  cReq: TRDChildReq;
+  Kid: TRemDlgElement;
+  Prompt: TRemPrompt;
+  txt, msg, Value: string;
+  pt: TRemPromptType;
+
+begin
+//  if(ElemType <> etDisplayOnly) and (FChecked) and (assigned(FPrompts)) then
+  if(FChecked and (assigned(FPrompts))) then
+  begin
+    for i := 0 to FPrompts.Count-1 do
+    begin
+      Prompt := TRemPrompt(FPrompts[i]);
+      Value := Prompt.GetValue;
+      pt := Prompt.PromptType;
+      if(Prompt.PromptOK and (not Prompt.Forced) and Prompt.Required and
+         (((pt<>ptWHNotPurp)and(pt<>ptWHPapResult))and
+         ((Value = '') or (Value = '@')) or
+         ((pt = ptVisitDate) and Prompt.FMonthReq and (StrToIntDef(copy(Value,4,2),0) = 0)) or
+         ((pt in [ptVisitDate, ptVisitLocation]) and (Value = '0')))) then
+      begin
+        WordWrap('Element: ' + FText, List, 68, 6);
+        txt := Prompt.ForcedCaption;
+        if(pt = ptVisitDate) and Prompt.FMonthReq then
+          txt := txt + ' (Month Required)';
+        WordWrap('Item: ' + txt, List, 65, 6);
+      end;
+     if (Prompt.PromptOK and (not Prompt.Forced) and Prompt.Required and
+          ((WHResultChk='') and (Value='')) and ((pt=ptWHPapResult) and (FData<>nil))) then
+          begin
+             WordWrap('Prompt: ' + Prompt.ForcedCaption, List, 65,6);
+          end;
+     if (Prompt.PromptOK and (not Prompt.Forced) and Prompt.Required
+     and (pt=ptWHNotPurp)) and ((WHResultNot = '') and (Value = '')) then
+          begin
+               WordWrap('Element: ' + FText, List, 68, 6);
+               WordWrap('Prompt: ' + Prompt.ForcedCaption, List, 65,6);
+          end;
+      //(AGP Change 24.9 add check to see if MH tests are required)
+     if ((Pt = ptMHTest) or (Pt = ptGAF)) and (StrtoInt(Piece(Prompt.FData.FRec3,U,13)) > 0) and
+                (not Prompt.Forced) then
+        begin
+          if (Piece(Prompt.FData.FRec3,U,13) = '2') and (Prompt.FMHTestComplete = 0) then break;
+          if (Pt = ptMHTest) and (Prompt.FMHTestComplete = 2) then
+            begin
+               if ((Prompt.FValue = '') or (pos('X',Prompt.FValue)>0)) then
+                  begin
+                    if Prompt.FValue = '' then
+                        WordWrap('MH test '+ Piece(Prompt.FData.FRec3,U,8) + ' not done',List,65,6);
+                    if pos('X',Prompt.FValue)>0 then
+                        WordWrap('You are missing one or more responses in the MH test '+
+                               Piece(Prompt.FData.FRec3,U,8),List,65,6);
+                   WordWrap(' ',List,65,6);
+                  end;
+            end;
+          if (Pt = ptMHTest) and (Prompt.FMHTestComplete = 0) or ((Prompt.FValue = '') and (Pos('New MH dll',Prompt.FValue) = 0)) then
+                  begin
+                    if Prompt.FValue = '' then
+                        WordWrap('MH test '+ Piece(Prompt.FData.FRec3,U,8) + ' not done',List,65,6);
+                    if pos('X',Prompt.FValue)>0 then
+                        WordWrap('You are missing one or more responses in the MH test '+
+                               Piece(Prompt.FData.FRec3,U,8),List,65,6);
+                   WordWrap(' ',List,65,6);
+                  end;
+          if (Pt = ptMHTest) and (Prompt.FMHTestComplete = 0) and (Pos('New MH dll',Prompt.FValue) > 0) then
+            begin
+              WordWrap('MH test ' + Piece(Prompt.FData.FRec3, U, 8) + ' is not complete', List, 65, 6);
+              WordWrap(' ',List,65,6);
+            end;
+          if (Pt = ptGAF) and ((Prompt.FValue = '0') or (Prompt.FValue = '')) then
+            begin
+               WordWrap('GAF test must have a score greater then zero',List,65,6);
+               WordWrap(' ',List,65,6);
+            end;
+        end;
+    end;
+  end;
+  if (assigned(FChildren)) and (FChecked or (ElemType = etDisplayOnly)) then
+  begin
+    cReq := ChildrenRequired;
+    if(cReq in [crOne, crAtLeastOne, crAll]) then
+    begin
+      cnt := 0;
+      for i := 0 to FChildren.Count-1 do
+      begin
+        Kid := TRemDlgElement(FChildren[i]);
+//        if(Kid.FChecked and (Kid.ElemType <> etDisplayOnly)) then
+        if(Kid.FChecked) then
+          inc(cnt);
+      end;
+      if(cReq = crOne) and (cnt <> 1) then
+        msg := 'One selection required'
+      else
+      if(cReq = crAtLeastOne) and (cnt < 1) then
+        msg := 'One or more selections required'
+      else
+      if (cReq = crAll) and (cnt < FChildren.Count) then
+        msg := 'All selections are required'
+      else
+        msg := '';
+      if(msg <> '') then
+      begin
+        txt := BoxCaption;
+        if(txt = '') then
+          txt := FText;
+        WordWrap('Group: ' + txt, List, 68, 6);
+        WordWrap(Msg, List, 65, 0);
+        WordWrap(' ',List,68,6);    // (AGP change 24.9 added blank line for display spacing)
+      end;
+    end;
+    for i := 0 to FChildren.Count-1 do
+      TRemDlgElement(FChildren[i]).FinishProblems(List);
+  end;
+end;
+
+function TRemDlgElement.IsChecked: boolean;
+var
+  Prnt: TRemDlgElement;
+
+begin
+  Result := TRUE;
+  Prnt := Self;
+  while Result and assigned(Prnt) do
+  begin
+    Result := ((Prnt.ElemType = etDisplayOnly) or Prnt.FChecked);
+    Prnt := Prnt.FParent;
+  end;
+end;
+
+function TRemDlgElement.IndentChildrenInPN: boolean;
+begin
+  //if(Box) then
+    Result := (Piece(FRec1, U, 21) = '1');
+  //else
+  //  Result := FALSE;
+end;
+
+function TRemDlgElement.IndentPNLevel: integer;
+begin
+  if(assigned(FParent)) then
+  begin
+    Result := FParent.IndentPNLevel;
+    if(FParent.IndentChildrenInPN) then
+      dec(Result,2);
+  end
+  else
+    Result := 70;
+end;
+
+function TRemDlgElement.IncludeMHTestInPN: boolean;
+begin
+  Result := (Piece(FRec1, U, 9) = '0');
+end;
+
+function TRemDlgElement.ResultDlgID: string;
+begin
+  Result := Piece(FRec1, U, 10);
+end;
+
+procedure TRemDlgElement.SubCommentChange(Sender: TObject);
+var
+  i: integer;
+  txt: string;
+  ok: boolean;
+
+begin
+  if(FHasSubComments and FHasComment and assigned(FCommentPrompt)) then
+  begin
+    ok := FALSE;
+    if(assigned(Sender)) then
+    begin
+      with (Sender as TORCheckBox) do
+        TRemPrompt(Tag).FValue := BOOLCHAR[Checked];
+      ok := TRUE;
+    end;
+    if(not ok) then
+      ok := (FCommentPrompt.GetValue = '');
+    if(ok) then
+    begin
+      txt := '';
+      for i := 0 to FPrompts.Count-1 do
+      begin
+        with TRemPrompt(FPrompts[i]) do
+        begin
+          if(PromptType = ptSubComment) and (FValue = BOOLCHAR[TRUE]) then
+          begin
+            if(txt <> '') then
+              txt := txt + ', ';
+            txt := txt + Caption;
+          end;
+        end;
+      end;
+      if(txt <> '') then
+        txt[1] := UpCase(txt[1]);
+      FCommentPrompt.SetValue(txt);
+    end;
+  end;
+end;
+
+constructor TRemDlgElement.Create;
+begin
+  FFieldValues := TORStringList.Create;
+end;
+
+function TRemDlgElement.EntryID: string;
+begin
+  Result := REMEntryCode + FReminder.GetIEN + '/' + IntToStr(integer(Self));
+end;
+
+procedure TRemDlgElement.FieldPanelChange(Sender: TObject);
+var
+  idx: integer;
+  Entry: TTemplateDialogEntry;
+  fval: string;
+
+begin
+  FReminder.BeginTextChanged;
+  try
+    Entry := TTemplateDialogEntry(Sender);
+    idx := FFieldValues.IndexOfPiece(Entry.InternalID);
+    fval := Entry.InternalID + U + Entry.FieldValues;
+    if(idx < 0) then
+      FFieldValues.Add(fval)
+    else
+      FFieldValues[idx] := fval;
+  finally
+    FReminder.EndTextChanged(Sender);
+  end;
+end;
+
+procedure TRemDlgElement.GetFieldValues(FldData: TStrings);
+var
+  i, p: integer;
+  TmpSL: TStringList;
+
+begin
+  TmpSL := TStringList.Create;
+  try
+    for i := 0 to FFieldValues.Count-1 do
+    begin
+      p := pos(U, FFieldValues[i]); // Can't use Piece because 2nd piece may contain ^ characters
+      if(p > 0) then
+      begin
+        TmpSL.CommaText := copy(FFieldValues[i],p+1,MaxInt);
+        FastAddStrings(TmpSL, FldData);
+        TmpSL.Clear;
+      end;
+    end;
+  finally
+    TmpSL.Free;
+  end;
+  if (assigned(FChildren)) and (FChecked or (ElemType = etDisplayOnly)) then
+    for i := 0 to FChildren.Count-1 do
+      TRemDlgElement(FChildren[i]).GetFieldValues(FldData);
+end;
+
+{cause the paint event to be called and draw a focus rectangle on the TFieldPanel}
+procedure TRemDlgElement.FieldPanelEntered(Sender: TObject);
+begin
+  with TDlgFieldPanel(Sender) do
+  begin
+    Focus := TRUE;
+    Invalidate;
+    if Parent is TDlgFieldPanel then
+    begin
+      TDlgFieldPanel(Parent).Focus := FALSE;
+      TDlgFieldPanel(Parent).Invalidate;
+    end;
+  end;
+end;
+{cause the paint event to be called and draw the TFieldPanel without the focus rect.}
+procedure TRemDlgElement.FieldPanelExited(Sender: TObject);
+begin
+  with TDlgFieldPanel(Sender) do
+  begin
+    Focus := FALSE;
+    Invalidate;
+    if Parent is TDlgFieldPanel then
+    begin
+      TDlgFieldPanel(Parent).Focus := TRUE;
+      TDlgFieldPanel(Parent).Invalidate;
+    end;
+  end;
+end;
+
+{Check the associated checkbox when spacebar is pressed}
+procedure TRemDlgElement.FieldPanelKeyPress(Sender: TObject; var Key: Char);
+begin
+  if Key = ' ' then
+  begin
+    FieldPanelOnClick(Sender);
+    Key := #0;
+  end;
+end;
+
+{So the FieldPanel will check the associated checkbox}
+procedure TRemDlgElement.FieldPanelOnClick(Sender: TObject);
+begin
+//  if TFieldPanel(Sender).Focus then
+    TORCheckBox(TDlgFieldPanel(Sender).Tag).Checked := not FChecked;
+end;
+
+{call the FieldPanelOnClick so labels on the panels will also click the checkbox}
+procedure TRemDlgElement.FieldPanelLabelOnClick(Sender: TObject);
+begin
+  FieldPanelOnClick(TLabel(Sender).Parent); {use the parent/fieldpanel as the Sender}
+end;
+
+{ TRemData }
+
+function TRemData.Add2PN: boolean;
+begin
+  Result := (Piece(FRec3, U, 5) <> '1');
+end;
+
+function TRemData.AddData(List: TStrings; Finishing: boolean): integer;
+var
+  i, j, k: integer;
+  PCECat: TPCEDataCat;
+  Primary: boolean;
+  ActDt, InActDt: Double;
+  EncDt: TFMDateTime;
+
+  procedure AddPrompt(Prompt: TRemPrompt; dt: TRemDataType; var x: string);
+  var
+    pt: TRemPromptType;
+    pnum: integer;
+    Pdt: TRemDataType;
+    v: TVitalType;
+    rte, unt, txt: string;
+    UIEN: Int64;
+
+  begin
+    pnum := -1;
+    pt := Prompt.PromptType;
+    if(pt = ptSubComment) or (pt = ptUnknown) then exit;
+    if(pt = ptMST) then
+    begin
+      if (PCECat in MSTDataTypes) then
+      begin
+        UIEN := FParent.FReminder.PCEDataObj.Providers.PCEProvider;
+        if UIEN <= 0 then
+          UIEN := User.DUZ;
+        SetPiece(x, U, pnumMST, Prompt.GetValue + ';' + // MST Code
+                                  FloatToStr(RemForm.PCEObj.VisitDateTime) + ';' +
+                                  IntToStr(UIEN) + ';' + //
+                                  Prompt.FMiscText); // IEN of Exam, if any
+      end;
+    end
+    else
+    if(PCECat = pdcVital) then
+    begin
+      if(pt = ptVitalEntry) then
+      begin
+        rte := Prompt.VitalValue;
+        if(rte <> '') then
+        begin
+          v := Prompt.VitalType;
+          unt := Prompt.VitalUnitValue;
+          ConvertVital(v, rte, unt);
+          //txt := U + VitalCodes[v] + U + rte + U + FloatToStr(RemForm.PCEObj.VisitDateTime);  AGP Change 26.1 commented out
+          txt := U + VitalCodes[v] + U + rte + U + '0'; //AGP Change 26.1 Use for Vital date/time
+          if(not Finishing) then
+            txt := Char(ord('A')+ord(v)) + FormatVitalForNote(txt);  // Add vital sort char
+          List.AddObject(Char(ord('A')+ord(PCECat)) + txt, Self);
+        end;
+      end
+      else
+        exit;
+    end
+    else
+    if(PCECat = pdcMH) then
+    begin
+      if(pt = ptMHTest) or (pt = ptGAF) then
+        x := x + U + Prompt.GetValue
+      else
+        exit;
+    end
+    else
+    if(pt <> ptDataList) and (ord(pt) >= ord(low(TRemPromptType))) then
+    begin
+      Pdt := RemPromptTypes[pt];
+      if (Pdt = dt) or (Pdt = dtAll) or
+         ((Pdt = dtHistorical) and assigned(Prompt.FParent) and
+           Prompt.FParent.Historical) then
+        pnum := FinishPromptPieceNum[pt];
+      if(pnum > 0) then
+      begin
+        if(pt = ptPrimaryDiag) then
+          SetPiece(x, U, pnum, BoolChar[Primary])
+        else
+          SetPiece(x, U, pnum, Prompt.GetValue);
+      end;
+    end;
+  end;
+
+  procedure Add(Str: string; Root: TRemPCERoot);
+  var
+    i, Qty: integer;
+    Value, IsGAF, txt, x, Code, Nar, Cat: string;
+    Skip: boolean;
+    Prompt: TRemPrompt;
+    dt: TRemDataType;
+    TestDate: TFMDateTime;
+    i1,i2: integer;
+
+  begin
+    x := '';
+    dt := Code2DataType(Piece(Str, U, r3Type));
+    PCECat := RemData2PCECat[dt];
+    Code := Piece(Str, U, r3Code);
+    if(Code = '') then
+      Code := Piece(Str, U, r3Code2);
+    Nar := Piece(Str, U, r3Nar);
+    Cat := Piece(Str, U, r3Cat);
+
+    Primary := FALSE;
+    if(assigned(FParent) and assigned(FParent.FPrompts) and (PCECat = pdcDiag)) then
+    begin
+      if(FParent.Historical) then
+      begin
+        for i := 0 to FParent.FPrompts.Count-1 do
+        begin
+          Prompt := TRemPrompt(FParent.FPrompts[i]);
+          if(Prompt.PromptType = ptPrimaryDiag) then
+          begin
+            Primary := (Prompt.GetValue = BOOLCHAR[TRUE]);
+            break;
+          end;
+        end;
+      end
+      else
+        Primary := (Root = PrimaryDiagRoot);
+    end;
+
+    Skip := FALSE;
+    if (PCECat = pdcMH) then
+    begin
+      IsGAF := Piece(FRec3, U, r3GAF);
+      Value := FChoicePrompt.GetValue;
+      if(Value = '') or ((IsGAF = '1') and (Value = '0')) then
+        Skip := TRUE;
+    end;
+
+    if Finishing or (PCECat = pdcVital) then
+    begin
+      if(dt = dtOrder) then
+        x := U + Piece(Str,U,6) + U + Piece(Str,U,11) + U + Nar
+      else
+      begin
+        if (PCECat = pdcMH) then
+        begin
+          if(Skip) then
+            x := ''
+          else
+          begin
+            TestDate := Trunc(FParent.FReminder.PCEDataObj.VisitDateTime);
+            if(IsGAF = '1') then
+              ValidateGAFDate(TestDate);
+            x := U + Nar + U + IsGAF + U + FloatToStr(TestDate) + U +
+                 IntToSTr(FParent.FReminder.PCEDataObj.Providers.PCEProvider);
+          end;
+        end
+        else
+        if (PCECat <> pdcVital) then
+        begin
+          x := Piece(Str, U, 6);
+          SetPiece(x, U, pnumCode, Code);
+          SetPiece(x, U, pnumCategory, Cat);
+          SetPiece(x, U, pnumNarrative, Nar);
+        end;
+        if(assigned(FParent)) then
+        begin
+          if(assigned(FParent.FPrompts)) then
+          begin
+            for i := 0 to FParent.FPrompts.Count-1 do
+            begin
+              Prompt := TRemPrompt(FParent.FPrompts[i]);
+              if(not Prompt.FIsShared) then
+                AddPrompt(Prompt, dt, x);
+            end;
+          end;
+          if(assigned(FParent.FParent) and FParent.FParent.FHasSharedPrompts) then
+          begin
+            for i := 0 to FParent.FParent.FPrompts.Count-1 do
+            begin
+              Prompt := TRemPrompt(FParent.FParent.FPrompts[i]);
+              if(Prompt.FIsShared) and (Prompt.FSharedChildren.IndexOf(FParent) >= 0) then
+                AddPrompt(Prompt, dt, x);
+            end;
+          end;
+        end;
+      end;
+      if(x <> '') then
+        List.AddObject(Char(ord('A')+ord(PCECat)) + x, Self);
+    end
+    else
+    begin
+      Qty := 1;
+      if(assigned(FParent) and assigned(FParent.FPrompts)) then
+      begin
+        if(PCECat = pdcProc) then
+        begin
+          for i := 0 to FParent.FPrompts.Count-1 do
+          begin
+            Prompt := TRemPrompt(FParent.FPrompts[i]);
+            if(Prompt.PromptType = ptQuantity) then
+            begin
+              Qty := StrToIntDef(Prompt.GetValue, 1);
+              if(Qty < 1) then Qty := 1;
+              break;
+            end;
+          end;
+        end;
+      end;
+      if (not Skip) then
+      begin
+        txt := Char(ord('A')+ord(PCECat)) +
+                       GetPCEDataText(PCECat, Code, Cat, Nar, Primary, Qty);
+        if(assigned(FParent) and FParent.Historical) then
+          txt := txt + ' (Historical)';
+        List.AddObject(txt, Self);
+        inc(Result);
+      end;
+      if assigned(FParent) and assigned(FParent.FMSTPrompt) then
+      begin
+        txt := FParent.FMSTPrompt.Value;
+        if txt <> '' then
+        begin
+          if FParent.FMSTPrompt.FMiscText = '' then
+          begin
+            i1 := 0;
+            i2 := 2;
+          end
+          else
+          begin
+            i1 := 3;
+            i2 := 4;
+          end;
+          for i := i1 to i2 do
+            if txt = MSTDescTxt[i,1] then
+            begin
+              List.AddObject(Char( ord('A') + ord(pdcMST)) + MSTDescTxt[i,0], Self);
+              break;
+            end;
+        end;
+      end;
+    end;
+  end;
+
+begin
+  Result := 0;
+  if(assigned(FChoicePrompt)) and (assigned(FChoices)) then
+  begin
+    If not assigned(FChoicesActiveDates) then
+      begin
+        for i := 0 to FChoices.Count - 1 do
+        begin
+          if (copy(FChoicePrompt.GetValue, i+1, 1) = '1') then
+            Add(FChoices[i], TRemPCERoot(FChoices.Objects[i]))
+        end
+      end
+    else  {if there are active dates for each choice then check them}
+      begin
+        If Self.FParent.Historical then
+          EncDt := DateTimeToFMDateTime(Date)
+        else
+          EncDt := RemForm.PCEObj.VisitDateTime;
+        k := 0;
+        for i := 0 to FChoices.Count - 1 do
+        begin
+          for j := 0 to (TStringList(Self.FChoicesActiveDates[i]).Count - 1) do
+          begin
+            ActDt := StrToIntDef((Piece(TStringList(Self.FChoicesActiveDates[i]).Strings[j], ':', 1)),0);
+            InActDt := StrToIntDef((Piece(TStringList(Self.FChoicesActiveDates[i]).Strings[j], ':', 2)),9999999);
+            if (EncDt >= ActDt) and (EncDt <= InActDt) then
+            begin
+              if(copy(FChoicePrompt.GetValue, k+1,1) = '1') then
+                Add(FChoices[i], TRemPCERoot(FChoices.Objects[i]));
+              inc(k);
+            end; {Active date check}
+          end; {FChoicesActiveDates.Items[i] loop}
+        end; {FChoices loop}
+      end {FChoicesActiveDates check}
+  end {FChoicePrompt and FChoices check}
+  else
+    Add(FRec3, FPCERoot); {Active dates for this are checked in TRemDlgElement.AddData}
+end;
+
+function TRemData.Category: string;
+begin
+  Result := Piece(FRec3, U, r3Cat);
+end;
+
+function TRemData.DataType: TRemDataType;
+begin
+  Result := Code2DataType(Piece(FRec3, U, r3Type));
+end;
+
+destructor TRemData.Destroy;
+var
+  i: integer;
+
+begin
+  if(assigned(FPCERoot)) then
+    FPCERoot.Done(Self);
+  if(assigned(FChoices)) then
+  begin
+    for i := 0 to FChoices.Count-1 do
+    begin
+      if(assigned(FChoices.Objects[i])) then
+        TRemPCERoot(FChoices.Objects[i]).Done(Self);
+    end;
+  end;
+  KillObj(@FChoices);
+  inherited;
+end;
+
+function TRemData.DisplayWHResults: boolean;
+begin
+ Result :=False;
+ if FRec3<>'' then
+ Result := (Piece(FRec3, U, 6) <> '0');
+end;
+
+function TRemData.ExternalValue: string;
+begin
+  Result := Piece(FRec3, U, r3Code);
+end;
+
+function TRemData.InternalValue: string;
+begin
+  Result := Piece(FRec3, U, 6);
+end;
+
+function TRemData.Narrative: string;
+begin
+  Result := Piece(FRec3, U, r3Nar);
+end;
+
+{ TRemPrompt }
+
+function TRemPrompt.Add2PN: boolean;
+begin
+  Result := FALSE;
+  if (not Forced) and (PromptOK) then
+    //if PromptOK then
+    Result := (Piece(FRec4, U, 5) <> '1');
+  if (Result=false) and (Piece(FRec4,U,4)='WH_NOT_PURP') then
+    Result := True;
+end;
+
+function TRemPrompt.Caption: string;
+begin
+  Result := Piece(FRec4, U, 8);
+  if(not FCaptionAssigned) then
+  begin
+    AssignFieldIDs(Result);
+    SetPiece(FRec4, U, 8, Result);
+    FCaptionAssigned := TRUE;
+  end;
+end;
+
+constructor TRemPrompt.Create;
+begin
+  FOverrideType := ptUnknown;
+end;
+
+function TRemPrompt.Forced: boolean;
+begin
+  Result := (Piece(FRec4, U, 7) = 'F');
+end;
+
+function TRemPrompt.InternalValue: string;
+var
+  m, d, y: word;
+  Code: string;
+
+begin
+  Result := Piece(FRec4, U, 6);
+  Code := Piece(FRec4, U, 4);
+  if(Code = RemPromptCodes[ptVisitDate]) then
+  begin
+    if(copy(Result,1,1) = MonthReqCode) then
+    begin
+      FMonthReq := TRUE;
+      delete(Result,1,1);
+    end;
+    if(Result = '') then
+    begin
+      DecodeDate(Now, y, m, d);
+      Result := inttostr(y-1700)+'0000';
+      SetPiece(FRec4, U, 6, Result);
+    end;
+  end;
+end;
+
+procedure TRemPrompt.PromptChange(Sender: TObject);
+var
+  cbo: TORComboBox;
+  pt: TRemPromptType;
+  TmpValue, OrgValue: string;
+  idx, i: integer;
+  NeedRedraw: boolean;
+  dte: TFMDateTime;
+  whCKB: TWHCheckBox;
+  //printoption: TORCheckBox;
+  WHValue, WHValue1: String;
+begin
+  FParent.FReminder.BeginTextChanged;
+  try
+    FFromControl := TRUE;
+    try
+      TmpValue := GetValue;
+      OrgValue := TmpValue;
+      pt := PromptType;
+      NeedRedraw := FALSE;
+      case pt of
+        ptComment, ptQuantity:
+          TmpValue := (Sender as TEdit).Text;
+
+        ptVisitDate:
+          begin
+            dte := (Sender as TORDateCombo).FMDate;
+            while (dte > 2000000) and (dte > FMToday) do
+            begin
+              dte := dte - 10000;
+              NeedRedraw := TRUE;
+            end;
+            TmpValue := FloatToStr(dte);
+            if(TmpValue = '1000000') then
+              TmpValue := '0';
+          end;
+
+        ptPrimaryDiag, ptAdd2PL, ptContraindicated:
+          begin
+            TmpValue := BOOLCHAR[(Sender as TORCheckBox).Checked];
+            NeedRedraw := (pt = ptPrimaryDiag);
+          end;
+
+        ptVisitLocation:
+          begin
+            cbo := (Sender as TORComboBox);
+            if(cbo.ItemIEN < 0) then
+              NeedRedraw := (not cbo.DroppedDown)
+            else
+            begin
+              if(cbo.ItemIndex <= 0) then
+                cbo.Items[0] := '0' + U + cbo.text;
+              TmpValue := cbo.ItemID;
+              if(StrToIntDef(TmpValue,0) = 0) then
+                TmpValue := cbo.Text;
+            end;
+          end;
+
+        ptWHPapResult:
+          begin
+            if (Sender is TWHCheckBox) then
+              begin
+                whCKB := (Sender as TWHCheckBox);
+                if whCKB.Checked = true then
+                   begin
+                   if whCKB.Caption ='NEM (No Evidence of Malignancy)' then FParent.WHResultChk := 'N';
+                   if whCKB.Caption ='Abnormal' then FParent.WHResultChk := 'A';
+                   if whCKB.Caption ='Unsatisfactory for Diagnosis' then FParent.WHResultChk := 'U';
+                   //AGP Change 23.13 WH multiple processing
+		   for i := 0 to FParent.FData.Count-1 do
+                     begin
+                        if Piece(TRemData(FParent.FData[i]).FRec3,U,4)='WHR' then
+                           begin
+                           FParent.FReminder.WHReviewIEN := Piece(TRemData(FParent.FData[i]).FRec3,U,6)
+                           end;
+                     end;
+                   end
+                else
+                  begin
+                    FParent.WHResultChk := '';
+                    FParent.FReminder.WHReviewIEN := ''; //AGP CHANGE 23.13
+                  end;
+              end;
+          end;
+
+
+            ptWHNotPurp:
+            begin
+            if (Sender is TWHCheckBox) then
+              begin
+                whCKB := (Sender as TWHCheckBox);
+                if whCKB.Checked = true then
+                  begin
+                    if whCKB.Caption ='Letter' then
+                      begin
+                        if FParent.WHResultNot='' then FParent.WHResultNot := 'L'
+                        else
+                          if Pos('L',FParent.WHResultNot)=0 then FParent.WHResultNot := FParent.WHResultNot +':L';
+                        if whCKB.FButton <> nil then whCKB.FButton.Enabled := true;
+                        if whCKB.FPrintNow <> nil then
+                           begin
+                             whCKB.FPrintVis :='1';
+                             whCKB.FPrintNow.Enabled := true;
+                           end;
+                      end;
+                    if whCKB.Caption ='In-Person' then
+                       begin
+                         if FParent.WHResultNot='' then FParent.WHResultNot := 'I'
+                         else
+                            if Pos('I',FParent.WHResultNot)=0 then FParent.WHResultNot := FParent.WHResultNot+':I';
+                       end;
+                    if whCKB.Caption ='Phone Call' then
+                       begin
+                         if FParent.WHResultNot='' then FParent.WHResultNot := 'P'
+                         else
+                           if Pos('P',FParent.WHResultNot)=0 then FParent.WHResultNot := FParent.WHResultNot+':P';
+                        end;
+                end
+                else
+                   begin
+                     // this section is to handle unchecking of boxes and disabling print now and view button
+                     WHValue := FParent.WHResultNot;
+                       if whCKB.Caption ='Letter' then
+                         begin
+                           for i:=1 to Length(WHValue) do
+                             begin
+                              if WHValue1='' then
+                                begin
+                                  if (WHValue[i]<>'L') and (WHValue[i]<>':') then WHValue1 := WHValue[i];
+                                end
+                              else
+                                if (WHValue[i]<>'L') and (WHValue[i]<>':') then WHValue1 := WHValue1+':'+WHValue[i];
+                             end;
+                         if (whCKB.FButton <> nil) and (whCKB.FButton.Enabled = true) then whCKB.FButton.Enabled := false;
+                         if (whCKB.FPrintNow <> nil) and (whCKB.FPrintNow.Enabled = true) then
+                            begin
+                              whCKB.FPrintVis := '0';
+                              if whCKB.FPrintNow.Checked = true then whCKB.FPrintNow.Checked := false;
+                              whCKB.FPrintNow.Enabled := false;
+                              FParent.WHPrintDevice := '';
+                            end;
+                         end;
+                       if whCKB.Caption ='In-Person' then
+                         begin
+                           for i:=1 to Length(WHValue) do
+                             begin
+                               if WHValue1='' then
+                                 begin
+                                   if (WHValue[i]<>'I') and (WHValue[i]<>':') then WHValue1 := WHValue[i];
+                                 end
+                               else
+                                 if (WHValue[i]<>'I') and (WHValue[i]<>':') then WHValue1 := WHValue1+':'+WHValue[i];
+                             end;
+                         end;
+                       if whCKB.Caption ='Phone Call' then
+                          begin
+                            for i:=1 to Length(WHValue) do
+                              begin
+                                if WHValue1='' then
+                                  begin
+                                    if (WHValue[i]<>'P') and (WHValue[i]<>':') then WHValue1 := WHValue[i];
+                                  end
+                                else
+                                  if (WHValue[i]<>'P') and (WHValue[i]<>':') then WHValue1 := WHValue1+':'+WHValue[i];
+                              end;
+                          end;
+                     FParent.WHResultNot := WHValue1;
+                   end;
+                end
+                else
+                    if ((Sender as TORCheckBox)<>nil) and (Piece(FRec4,U,12)='1') then
+                       begin
+                          if (((Sender as TORCheckBox).Caption = 'Print Now') and
+                             ((Sender as TORCheckBox).Enabled =true)) and ((Sender as TORCheckBox).Checked = true) and
+                             (FParent.WHPrintDevice ='') then
+                                begin
+                                  FParent.WHPrintDevice := SelectDevice(Self, Encounter.Location, false, 'Women Health Print Device Selection');
+                                  FPrintNow :='1';
+                                  if FParent.WHPrintDevice ='' then
+                                    begin
+                                      FPrintNow :='0';
+                                      (Sender as TORCheckBox).Checked := false;
+                                    end;
+                                end;
+                          if (((Sender as TORCheckBox).Caption = 'Print Now') and
+                             ((Sender as TORCheckBox).Enabled =true)) and ((Sender as TORCheckBox).Checked = false) then
+                                begin
+                                   FParent.WHPrintDevice := '';
+                                   FPrintNow :='0';
+                                end;
+                       end;
+        end;
+
+        ptExamResults, ptSkinResults, ptLevelSeverity,
+        ptSeries, ptReaction, ptLevelUnderstanding, ptSkinReading: //(AGP Change 26.1)
+          TmpValue := (Sender as TORComboBox).ItemID;
+        else
+          if pt = ptVitalEntry then
+          begin
+            case (Sender as TControl).Tag of
+              TAG_VITTEMPUNIT, TAG_VITHTUNIT, TAG_VITWTUNIT: idx := 2;
+              TAG_VITPAIN: begin
+                             idx := -1;
+                             TmpValue := (Sender as TORComboBox).ItemID;
+                             if FParent.VitalDateTime = 0 then
+                                  FParent.VitalDateTime := FMNow;
+                           end;
+              else
+                idx := 1;
+            end;
+            if(idx > 0) then
+              begin
+                 //AGP Change 26.1 change Vital time/date to Now instead of encounter date/time
+                 SetPiece(TmpValue, ';', idx, TORExposedControl(Sender).Text);
+                 if (FParent.VitalDateTime > 0) and (TORExposedControl(Sender).Text = '') then
+                       FParent.VitalDateTime := 0;
+                 if (FParent.VitalDateTime = 0) and (TORExposedControl(Sender).Text <> '') then
+                       FParent.VitalDateTime := FMNow;
+              end;
+          end
+          else
+          if pt = ptDataList then
+          begin
+            TmpValue := (Sender as TORComboBox).CheckedString;
+            NeedRedraw := TRUE;
+          end
+          else
+          if (pt = ptGAF) and (MHDLLFound = false) then
+            TmpValue := (Sender as TEdit).Text;
+      end;
+      if(TmpValue <> OrgValue) then
+      begin
+        if NeedRedraw then
+          FParent.FReminder.BeginNeedRedraw;
+        try
+          SetValue(TmpValue);
+        finally
+          if NeedRedraw then
+            FParent.FReminder.EndNeedRedraw(Self);
+        end;
+      end
+      else
+      if NeedRedraw then
+      begin
+        FParent.FReminder.BeginNeedRedraw;
+        FParent.FReminder.EndNeedRedraw(Self);
+      end;
+    finally
+      FFromControl := FALSE;
+    end;
+  finally
+    FParent.FReminder.EndTextChanged(Sender);
+  end;
+  if(FParent.ElemType = etDisplayOnly) and (not assigned(FParent.FParent)) then
+    RemindersInProcess.Notifier.Notify;
+end;
+
+
+procedure TRemPrompt.ComboBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+begin
+  if(Key = VK_RETURN) and (Sender is TORComboBox) and
+    ((Sender as TORComboBox).DroppedDown) then
+    (Sender as TORComboBox).DroppedDown := FALSE;
+end;
+
+function TRemPrompt.PromptOK: boolean;
+var
+  pt: TRemPromptType;
+  dt: TRemDataType;
+  i: integer;
+
+begin
+  pt := PromptType;
+  if(pt = ptUnknown) or (pt = ptMST) then
+    Result := FALSE
+  else
+  if(pt = ptDataList) or (pt = ptVitalEntry) or (pt = ptMHTest) or (pt = ptGAF) or
+  (pt = ptWHPapResult) then
+    Result := TRUE
+  else
+  if(pt = ptSubComment) then
+    Result := FParent.FHasComment
+  else
+  begin
+    dt := RemPromptTypes[PromptType];
+         if(dt = dtAll)        then Result := TRUE
+    else if(dt = dtUnknown)    then Result := FALSE
+    else if(dt = dtHistorical) then Result := FParent.Historical
+    else
+    begin
+      Result := FALSE;
+      if(assigned(FParent.FData)) then
+      begin
+        for i := 0 to FParent.FData.Count-1 do
+        begin
+          if(TRemData(FParent.FData[i]).DataType = dt) then
+          begin
+            Result := TRUE;
+            break;
+          end;
+        end;
+      end;
+    end;
+  end;
+end;
+
+function TRemPrompt.PromptType: TRemPromptType;
+begin
+  if(assigned(FData)) then
+    Result := FOverrideType
+  else
+    Result := Code2PromptType(Piece(FRec4, U, 4));
+end;
+
+
+function TRemPrompt.Required: boolean;
+var
+  pt: TRemPromptType;
+
+begin
+  pt := PromptType;
+  if(pt = ptVisitDate) then
+    Result := TRUE
+  else
+  if(pt = ptSubComment) then
+    Result := FALSE
+  else
+    Result := (Piece(FRec4, U, 10) = '1');
+end;
+
+function TRemPrompt.SameLine: boolean;
+begin
+  Result := (Piece(FRec4, U, 9) <> '1');
+end;
+
+function TRemPrompt.NoteText: string;
+var
+  pt: TRemPromptType;
+  dateStr, fmt, tmp, WHValue: string;
+  cnt, i, j, k: integer;
+  ActDt, InActDt: Double;
+  EncDt: TFMDateTime;
+
+begin
+  Result := '';
+  if Add2PN then
+  begin
+    pt := PromptType;
+    tmp := GetValue;
+    case pt of
+      ptComment: Result := tmp;
+
+      ptQuantity: if(StrToIntDef(tmp,1) <> 1) then
+                    Result := tmp;
+
+     (* ptSkinReading: if(StrToIntDef(tmp,0) <> 0) then
+                       Result := tmp;  *)
+
+     ptSkinReading:   // (AGP Change 26.1)
+       begin
+         Result := tmp;
+       end;
+
+      ptVisitDate:
+        begin
+          try
+            if(tmp <> '') and (tmp <> '0') and (length(Tmp) = 7) then
+            begin
+              dateStr := '';
+              if FMonthReq and (copy(tmp,4,2) = '00') then
+                Result := ''
+              else
+              begin
+                if(copy(tmp,4,4) = '0000') then
+                  begin
+                    fmt := 'YYYY';
+                    dateStr := '  Exact date is unknown';
+                  end
+                else
+                if(copy(tmp,6,2) = '00') then
+                  begin
+                    fmt := 'MMMM, YYYY';
+                    dateStr := '  Exact date is unknown';
+                  end
+                else
+                  fmt := 'MMMM D, YYYY';
+                if dateStr = '' then Result := FormatFMDateTimeStr(fmt, tmp)
+                else Result := FormatFMDateTimeStr(fmt, tmp) + ' ' + dateStr;
+              end;
+            end;
+          except
+            on EConvertError do
+              Result := tmp
+            else
+              raise;
+          end;
+        end;
+
+      ptPrimaryDiag, ptAdd2PL, ptContraindicated:
+        if(tmp = '1') then
+          Result := ' ';
+
+      ptVisitLocation:
+        if(StrToIntDef(tmp, 0) = 0) then
+        begin
+          if(tmp <> '0') then
+            Result := tmp;
+        end
+        else
+          begin
+          Result := GetPCEDisplayText(tmp, ComboPromptTags[pt]);
+        end;
+
+      ptWHPapResult:
+        begin
+         if Fparent.WHResultChk='N' then Result := 'NEM (No Evidence of Malignancy)';
+         if Fparent.WHResultChk='A' then Result := 'Abnormal';
+         if Fparent.WHResultChk='U' then Result := 'Unsatisfactory for Diagnosis';
+         if FParent.WHResultChk='' then Result := '';
+        end;
+
+      ptWHNotPurp:
+      begin
+      if FParent.WHResultNot <> '' then
+      begin
+      WHValue := FParent.WHResultNot;
+      //IF Forced = false then
+      //begin
+      if WHValue <> 'CPRS' then
+      begin
+      for cnt := 1 to Length(WHValue) do
+          begin
+          if Result ='' then
+             begin
+              if WHValue[cnt]='L' then Result := 'Letter';
+              if WHValue[cnt]='I' then Result := 'In-Person';
+              if WHValue[cnt]='P' then Result := 'Phone Call';
+              end
+          else
+              begin
+              if (WHValue[cnt]='L')and(Pos('Letter',Result)=0) then Result := Result+'; Letter';
+              if (WHValue[cnt]='I')and(Pos('In-Person',Result)=0) then Result := Result+'; In-Person';
+              if (WHValue[cnt]='P')and(Pos('Phone Call',Result)=0) then Result := Result+'; Phone Call';
+              end;
+          end;
+       end;
+      end
+      else
+      if Forced = true then
+         begin
+         if pos(':',Piece(FRec4,U,6))=0 then
+           begin
+           if Piece(FRec4,U,6)='L' then
+             begin
+             Result := 'Letter';
+             FParent.WHResultNot :='L';
+             end;
+           if Piece(FRec4,U,6)='I' then
+              begin
+              Result := 'In-Person';
+              FParent.WHResultNot := 'I';
+              end;
+           if Piece(FRec4,U,6)='P' then
+              begin
+              Result := 'Phone Call';
+              FParent.WHResultNot := 'P';
+              end;
+           if Piece(FRec4,U,6)='CPRS' then
+              begin
+              Result := '';
+              FParent.WHResultNot := 'CPRS';
+              end;
+           end
+           else
+           begin
+           WHValue := Piece(FRec4,U,6);
+           for cnt := 0 to Length(WHValue) do
+          begin
+          if Result ='' then
+             begin
+              if WHValue[cnt]='L' then
+                begin
+                Result := 'Letter';
+                FParent.WHResultNot := WHValue[cnt];
+                end;
+              if WHValue[cnt]='I' then
+                begin
+                Result := 'In-Person';
+                FParent.WHResultNot := WHValue[cnt];
+                end;
+              if WHValue[cnt]='P' then
+                begin
+                Result := 'Phone Call';
+                FParent.WHResultNot := WHValue[cnt];
+                end;
+              end
+          else
+              begin
+              if (WHValue[cnt]='L')and(Pos('Letter',Result)=0) then
+                 begin
+                 Result := Result +'; Letter';
+                 FParent.WHResultNot := FParent.WHResultNot + ':' + WHValue[cnt];
+                 end;
+              if (WHValue[cnt]='I')and(Pos('In-Person',Result)=0) then
+                 begin
+                 Result := Result +'; In-Person';
+                 FParent.WHResultNot := FParent.WHResultNot + ':' + WHValue[cnt];
+                 end;
+              if (WHValue[cnt]='P')and(Pos('Phone Call',Result)=0) then
+                 begin
+                 Result := Result +'; Phone Call';
+                 FParent.WHResultNot := FParent.WHResultNot + ':' + WHValue[cnt];
+                 end;
+              end;
+          end;
+
+         end;
+      end
+      else
+      Result := '';
+    end;
+
+      ptExamResults, ptSkinResults, ptLevelSeverity,
+      ptSeries, ptReaction, ptLevelUnderstanding:
+        begin
+          Result := tmp;
+          if(Piece(Result,U,1) = '@') then
+            Result := ''
+          else
+            Result := GetPCEDisplayText(tmp, ComboPromptTags[pt]);
+        end;
+
+      else
+      begin
+        if pt = ptDataList then
+        begin
+          if(assigned(FData) and assigned(FData.FChoices)) then
+          begin
+            if not(assigned(FData.FChoicesActiveDates)) then
+              for i := 0 to FData.FChoices.Count - 1 do
+                begin
+                  if(copy(tmp,i+1,1) = '1') then
+                    begin
+                      if (Result <> '') then
+                        Result := Result + ', ';
+                      Result := Result + Piece(FData.FChoices[i],U,12);
+                    end;
+                end
+            else   {if there are active dates for each choice then check them}
+              begin
+                if Self.FParent.Historical then
+                  EncDt := DateTimeToFMDateTime(Date)
+                else
+                  EncDt := RemForm.PCEObj.VisitDateTime;
+                k := 0;
+                for i := 0 to FData.FChoices.Count - 1 do
+                begin
+                  for j := 0 to (TStringList(FData.FChoicesActiveDates[i]).Count - 1) do
+                  begin
+                    ActDt := StrToIntDef((Piece(TStringList(FData.FChoicesActiveDates[i]).Strings[j], ':', 1)),0);
+                    InActDt := StrToIntDef((Piece(TStringList(FData.FChoicesActiveDates[i]).Strings[j], ':', 2)),9999999);
+                    if (EncDt >= ActDt) and (EncDt <= InActDt) then
+                    begin
+                      if(copy(tmp,k+1,1) = '1') then
+                      begin
+                        if(Result <> '') then
+                          Result := Result + ', ';
+                        Result := Result + Piece(FData.FChoices[i],U,12);
+                      end;
+                      inc(k);
+                    end;  {ActiveDate check}
+                  end;  {FChoicesActiveDates.Items[i] loop}
+                end;  {FChoices loop}
+            end;
+          end;
+        end
+        else
+        if pt = ptVitalEntry then
+        begin
+          Result := VitalValue;
+          if(Result <> '') then
+            Result := ConvertVitalData(Result, VitalType, VitalUnitValue);
+        end
+        else
+        if pt = ptMHTest then
+          Result := FMiscText
+        else
+        if (pt = ptGAF) and (MHDLLFound = false) then
+        begin
+          if(StrToIntDef(Piece(tmp, U, 1),0) <> 0) then
+          begin
+            Result := tmp;
+          end
+        end
+        else
+        if pt = ptMHTest then
+          Result := FMiscText;
+
+            (*
+            GafDate := Trunc(FParent.FReminder.PCEDataObj.VisitDateTime);
+            ValidateGAFDate(GafDate);
+            Result := tmp + CRCode + 'Date Determined: ' + FormatFMDateTime('mm/dd/yyyy', GafDate) +
+                            CRCode + 'Determined By: ' + FParent.FReminder.PCEDataObj.Providers.PCEProviderName;
+            *)
+          //end;
+        end;
+      end;
+    end;
+    if(Result <> '') and (Caption <> '') then
+      Result := Trim(Caption + ' ' + Trim(Result));
+  //end;
+end;
+
+function TRemPrompt.CanShare(Prompt: TRemPrompt): boolean;
+var
+  pt: TRemPromptType;
+
+begin
+  if(Forced or Prompt.Forced or Prompt.FIsShared or Required or Prompt.Required) then
+    Result := FALSE
+  else
+  begin
+    pt := PromptType;
+    Result := (pt = Prompt.PromptType);
+    if(Result) then
+    begin
+      if(pt in [ptAdd2PL, ptLevelUnderstanding]) or
+        ((pt = ptComment) and (not FParent.FHasSubComments)) then
+        Result := ((Add2PN = Prompt.Add2PN) and
+                   (Caption = Prompt.Caption))
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+destructor TRemPrompt.Destroy;
+begin
+  KillObj(@FSharedChildren);
+  inherited;
+end;
+
+function TRemPrompt.RemDataActive(RData: TRemData; EncDt: TFMDateTime):Boolean;
+var
+  ActDt, InActDt: Double;
+  j: integer;
+
+begin
+  Result := FALSE;
+  if assigned(RData.FActiveDates) then
+    for j := 0 to (RData.FActiveDates.Count - 1) do
+      begin
+        ActDt := StrToIntDef(Piece(RData.FActiveDates[j],':',1), 0);
+        InActDt := StrToIntDef(Piece(RData.FActiveDates[j], ':', 2), 9999999);
+        if (EncDt >= ActDt) and (EncDt <= InActDt) then
+          begin
+            Result := TRUE;
+            Break;
+          end;
+      end
+  else
+    Result := TRUE;
+end;
+
+function TRemPrompt.RemDataChoiceActive(RData: TRemData; j: integer; EncDt: TFMDateTime):Boolean;
+var
+  ActDt, InActDt: Double;
+  i: integer;
+begin
+  Result := FALSE;
+  If not assigned(RData.FChoicesActiveDates) then //if no active dates were sent
+    Result := TRUE                               //from the server then don't check dates
+  else  {if there are active dates for each choice then check them}
+    begin
+      for i := 0 to (TStringList(RData.FChoicesActiveDates[j]).Count - 1) do
+        begin
+          ActDt := StrToIntDef((Piece(TStringList(RData.FChoicesActiveDates[j]).Strings[i], ':', 1)),0);
+          InActDt := StrToIntDef((Piece(TStringList(RData.FChoicesActiveDates[j]).Strings[i], ':', 2)),9999999);
+          if (EncDt >= ActDt) and (EncDt <= InActDt) then
+          begin
+            Result := True;
+          end; {Active date check}
+        end; {FChoicesActiveDates.Items[i] loop}
+    end {FChoicesActiveDates check}
+end;
+
+function TRemPrompt.GetValue: string;
+//Returns TRemPrompt.FValue if this TRemPrompt is not a ptPrimaryDiag
+//Returns 0-False or 1-True if this TRemPrompt is a ptPrimaryDiag
+var
+  i, j, k: integer;
+  RData: TRemData;
+  Ok: boolean;
+  EncDt:  TFMDateTime;
+
+begin
+  OK := (Piece(FRec4, U, 4) = RemPromptCodes[ptPrimaryDiag]);
+  if(OK) and (assigned(FParent)) then
+    OK := (not FParent.Historical);
+  if OK then
+  begin
+    Ok := FALSE;
+    if(assigned(FParent) and assigned(FParent.FData)) then {If there's FData, see if}
+    begin                                                  {there's a primary diagnosis}
+      for i := 0 to FParent.FData.Count-1 do               {if there is return True}
+      begin
+        EncDt := RemForm.PCEObj.VisitDateTime;     
+        RData := TRemData(FParent.FData[i]);
+        if(RData.DataType = dtDiagnosis) then
+        begin
+          if(assigned(RData.FPCERoot)) and (RemDataActive(RData, EncDt)) then
+            Ok := (RData.FPCERoot = PrimaryDiagRoot)
+          else
+          if(assigned(RData.FChoices)) and (assigned(RData.FChoicePrompt)) then
+          begin
+            k := 0;
+            for j := 0 to RData.FChoices.Count-1 do
+            begin
+             if RemDataChoiceActive(RData, j, EncDt) then
+             begin                                             
+              if(assigned(RData.FChoices.Objects[j])) and
+                (copy(RData.FChoicePrompt.FValue,k+1,1)='1') then
+              begin
+                if(TRemPCERoot(RData.FChoices.Objects[j]) = PrimaryDiagRoot) then
+                begin
+                  Ok := TRUE;
+                  break;
+                end;
+              end; //if FChoices.Objects (which is the RemPCERoot object) is assigned
+              inc(k);
+             end; //if FChoices[j] is active                       
+            end; //loop through FChoices
+          end; //If there are FChoices and an FChoicePrompt (i.e.: is this a ptDataList}
+        end;
+        if Ok then break;
+      end;
+    end;
+    Result := BOOLCHAR[Ok];
+  end
+  else
+    Result := FValue;
+end;
+
+
+
+procedure TRemPrompt.SetValue(Value: string);
+var
+  pt: TRemPromptType;
+  i, j, k : integer;
+  RData: TRemData;
+  Primary, Done: boolean;
+  Tmp: string;
+  OK, NeedRefresh: boolean;
+  EncDt:  TFMDateTime;
+
+begin
+  NeedRefresh := (not FFromControl);
+  if(Forced and (not FFromParent)) then exit;
+  pt := PromptType;
+  if(pt = ptVisitDate) then
+  begin
+    if(Value = '') then
+      Value := '0'
+    else
+    begin
+      try
+        if(StrToFloat(Value) > FMToday) then
+        begin
+          Value := '0';
+          InfoBox('Can not enter a future date for a historical event.',
+                  'Invalid Future Date', MB_OK + MB_ICONERROR);
+        end;
+      except
+        on EConvertError do
+          Value := '0'
+        else
+          raise;
+      end;
+      if(Value = '0') then
+        NeedRefresh := TRUE;
+    end;
+  end;
+  if(GetValue <> Value) or (FFromParent) then
+  begin
+    FValue := Value;
+    EncDt := RemForm.PCEObj.VisitDateTime;
+    if((pt = ptExamResults) and assigned(FParent) and assigned(FParent.FData) and
+       (FParent.FData.Count > 0) and assigned(FParent.FMSTPrompt)) then
+    begin
+      FParent.FMSTPrompt.SetValueFromParent(Value);
+      if (FParent.FMSTPrompt.FMiscText = '') then
+      // Assumes first finding item is MST finding
+        FParent.FMSTPrompt.FMiscText := TRemData(FParent.FData[0]).InternalValue;
+    end;
+
+    OK := (assigned(FParent) and assigned(FParent.FData) and
+          (Piece(FRec4, U, 4) = RemPromptCodes[ptPrimaryDiag]));
+    if (OK = false) and (Value = 'New MH dll') then OK := true;
+    if OK then
+      OK := (not FParent.Historical);
+    if OK then
+    begin
+      Done := FALSE;
+      Primary := (Value = BOOLCHAR[TRUE]);
+      for i := 0 to FParent.FData.Count-1 do
+      begin
+        RData := TRemData(FParent.FData[i]);
+        if(RData.DataType = dtDiagnosis) then
+        begin
+          if(assigned(RData.FPCERoot)) and (RemDataActive(RData, EncDt)) then
+          begin
+            if(Primary) then
+            begin
+              PrimaryDiagRoot := RData.FPCERoot;
+              Done := TRUE;
+            end
+            else
+            begin
+              if(PrimaryDiagRoot = RData.FPCERoot) then
+              begin
+                PrimaryDiagRoot := nil;
+                Done := TRUE;
+              end;
+            end;
+          end
+          else
+          if(assigned(RData.FChoices)) and (assigned(RData.FChoicePrompt)) then
+          begin
+            k := 0;                                                
+            for j := 0 to RData.FChoices.Count-1 do
+            begin
+             if RemDataChoiceActive(RData, j, EncDt) then
+             begin                                             
+              if(Primary) then
+              begin
+                if(assigned(RData.FChoices.Objects[j])) and  
+                  (copy(RData.FChoicePrompt.FValue,k+1,1)='1') then
+                begin
+                  PrimaryDiagRoot := TRemPCERoot(RData.FChoices.Objects[j]);
+                  Done := TRUE;
+                  break;
+                end;
+              end
+              else
+              begin
+                if(assigned(RData.FChoices.Objects[j])) and
+                  (PrimaryDiagRoot = TRemPCERoot(RData.FChoices.Objects[j])) then
+                begin
+                  PrimaryDiagRoot := nil;
+                  Done := TRUE;
+                  break;
+                end;
+              end;
+              inc(k);
+             end;                                       
+            end;
+          end;
+        end;
+        if Done then break;
+      end;
+    end;
+    if(assigned(FParent) and assigned(FParent.FData) and IsSyncPrompt(pt)) then
+    begin
+      for i := 0 to FParent.FData.Count-1 do    
+      begin
+        RData := TRemData(FParent.FData[i]); 
+        if(assigned(RData.FPCERoot)) and (RemDataActive(RData, EncDt)) then 
+          RData.FPCERoot.Sync(Self);
+        if(assigned(RData.FChoices)) then
+        begin
+          for j := 0 to RData.FChoices.Count-1 do
+          begin
+            if(assigned(RData.FChoices.Objects[j])) and
+                      RemDataChoiceActive(RData, j, EncDt) then
+              TRemPCERoot(RData.FChoices.Objects[j]).Sync(Self);
+          end;
+        end;
+      end;
+    end;
+  end;
+  if(not NeedRefresh) then
+    NeedRefresh := (GetValue <> Value);
+  if(NeedRefresh and assigned(FCurrentControl) and FParent.FReminder.Visible) then
+  begin
+    case pt of
+      ptComment:
+        (FCurrentControl as TEdit).Text := GetValue;
+
+      ptQuantity:
+        (FCurrentControl as TUpDown).Position := StrToIntDef(GetValue,1);
+
+     (* ptSkinReading:
+        (FCurrentControl as TUpDown).Position := StrToIntDef(GetValue,0); *)
+
+      ptVisitDate:
+        begin
+          try
+            (FCurrentControl as TORDateCombo).FMDate := StrToFloat(GetValue);
+          except
+            on EConvertError do
+              (FCurrentControl as TORDateCombo).FMDate := 0;
+            else
+              raise;
+          end;
+        end;
+
+      ptPrimaryDiag, ptAdd2PL, ptContraindicated:
+        (FCurrentControl as TORCheckBox).Checked := (GetValue = BOOLCHAR[TRUE]);
+
+      ptVisitLocation:
+        begin
+          Tmp := GetValue;
+          with (FCurrentControl as TORComboBox) do
+          begin
+            if(piece(Tmp,U,1)= '0') then
+            begin
+              Items[0] := Tmp;
+              SelectByID('0');
+            end
+            else
+              SelectByID(Tmp);
+          end;
+        end;
+
+      ptWHPapResult:
+        (FCurrentControl as TORCheckBox).Checked := (GetValue = BOOLCHAR[TRUE]);
+
+       ptWHNotPurp:
+        (FCurrentControl as TORCheckBox).Checked := (GetValue = BOOLCHAR[TRUE]);
+
+      ptExamResults, ptSkinResults, ptLevelSeverity,
+      ptSeries, ptReaction, ptLevelUnderstanding, ptSkinReading: //(AGP Change 26.1)
+        (FCurrentControl as TORComboBox).SelectByID(GetValue);
+
+      else
+        if(pt = ptVitalEntry) then
+        begin
+          if(FCurrentControl is TORComboBox) then
+            (FCurrentControl as TORComboBox).SelectByID(VitalValue)
+          else
+          if(FCurrentControl is TVitalEdit) then
+          begin
+            with (FCurrentControl as TVitalEdit) do
+            begin
+              Text := VitalValue;
+              if(assigned(LinkedCombo)) then
+              begin
+                Tmp := VitalUnitValue;
+                if(Tmp <> '') then
+                  LinkedCombo.Text := VitalUnitValue
+                else
+                  LinkedCombo.ItemIndex := 0;
+              end;
+            end;
+          end;
+        end;
+    end;
+  end;
+end;
+
+
+procedure TRemPrompt.SetValueFromParent(Value: string);
+begin
+  FFromParent := TRUE;
+  try
+    SetValue(Value);
+  finally
+    FFromParent := FALSE;
+  end;
+end;
+
+procedure TRemPrompt.InitValue;
+var
+  Value: string;
+  pt: TRemPromptType;
+  idx, i, j: integer;
+  TempSL: TORStringList;
+  Found: boolean;
+  RData: TRemData;
+
+begin
+  Value := InternalValue;
+  pt := PromptType;
+  if(ord(pt) >= ord(low(TRemPromptType))) and (ComboPromptTags[pt] <> 0) then
+  begin
+    TempSL := TORStringList.Create;
+    try
+      GetPCECodes(TempSL, ComboPromptTags[pt]);
+      idx := TempSL.CaseInsensitiveIndexOfPiece(Value, U, 1);
+      if(idx < 0) then
+        idx := TempSL.CaseInsensitiveIndexOfPiece(Value, U, 2);
+      if(idx >= 0) then
+        Value := Piece(TempSL[idx],U,1);
+    finally
+      TempSL.Free;
+    end;
+  end;
+  if((not Forced) and assigned(FParent) and assigned(FParent.FData) and IsSyncPrompt(pt)) then
+  begin
+    Found := FALSE;
+    for i := 0 to FParent.FData.Count-1 do
+    begin
+      RData := TRemData(FParent.FData[i]);
+      if(assigned(RData.FPCERoot)) then
+        Found := RData.FPCERoot.GetValue(pt, Value);
+      if(not Found) and (assigned(RData.FChoices)) then
+      begin
+        for j := 0 to RData.FChoices.Count-1 do
+        begin
+          if(assigned(RData.FChoices.Objects[j])) then
+          begin
+            Found := TRemPCERoot(RData.FChoices.Objects[j]).GetValue(pt, Value);
+            if(Found) then break;
+          end;
+        end;
+      end;
+      if(Found) then break;
+    end;
+  end;
+  FInitializing := TRUE;
+  try
+    SetValueFromParent(Value);
+  finally
+    FInitializing := FALSE;
+  end;
+end;
+
+function TRemPrompt.ForcedCaption: string;
+var
+  pt: TRemPromptType;
+
+begin
+  Result := Caption;
+  if(Result = '') then
+  begin
+    pt := PromptType;
+    if(pt = ptDataList) then
+    begin
+      if(assigned(FData)) then
+      begin
+        if(FData.DataType = dtDiagnosis) then
+          Result := 'Diagnosis'
+        else
+        if(FData.DataType = dtProcedure) then
+          Result := 'Procedure';
+      end;
+    end
+    else
+    if(pt = ptVitalEntry) then
+      Result := VitalDesc[VitalType] + ':'
+    else
+    if(pt = ptMHTest) then
+      Result := 'Perform ' + FData.Narrative
+    else
+    if(pt = ptGAF) then
+      Result := 'GAF Score'
+    else
+      Result := PromptDescriptions[pt];
+    if(Result = '') then Result := 'Prompt';
+  end;
+  if(copy(Result,length(Result),1) = ':') then
+    delete(Result,length(Result),1);
+end;
+
+function TRemPrompt.VitalType: TVitalType;
+begin
+  Result := vtUnknown;
+  if(assigned(FData)) then
+    Result := Code2VitalType(FData.InternalValue);
+end;
+
+procedure TRemPrompt.VitalVerify(Sender: TObject);
+var
+  vEdt: TVitalEdit;
+  vCbo: TVitalComboBox;
+  AObj: TWinControl;
+
+begin
+  if(Sender is TVitalEdit) then
+  begin
+    vEdt := TVitalEdit(Sender);
+    vCbo := vEdt.LinkedCombo;
+  end
+  else
+  if(Sender is TVitalComboBox) then
+  begin
+    vCbo := TVitalComboBox(Sender);
+    vEdt := vCbo.LinkedEdit;
+  end
+  else
+  begin
+    vCbo := nil;
+    vEdt := nil;
+  end;
+  AObj := Screen.ActiveControl;
+  if((not assigned(AObj)) or ((AObj <> vEdt) and (AObj <> vCbo))) then
+  begin
+    if(vEdt.Tag = TAG_VITHEIGHT) then
+      vEdt.Text := ConvertHeight2Inches(vEdt.Text);
+    if VitalInvalid(vEdt, vCbo) then
+      vEdt.SetFocus;
+  end;
+end;
+
+function TRemPrompt.VitalUnitValue: string;
+var
+  vt: TVitalType;
+
+begin
+  vt := VitalType;
+  if (vt in [vtTemp, vtHeight, vtWeight]) then
+  begin
+    Result := Piece(GetValue,';',2);
+    if(Result = '') then
+    begin
+      case vt of
+        vtTemp:   Result := 'F';
+        vtHeight: Result := 'IN';
+        vtWeight: Result := 'LB';
+      end;
+      SetPiece(FValue, ';', 2, Result);
+    end;
+  end
+  else
+    Result := '';
+end;
+
+function TRemPrompt.VitalValue: string;
+begin
+  Result := Piece(GetValue,';',1);
+end;
+
+procedure TRemPrompt.DoWHReport(Sender: TObject);
+Var
+comp, ien: string;
+i: integer;
+begin
+   for i := 0 to FParent.FData.Count-1 do
+      begin
+        comp:= Piece(TRemData(FParent.FData[i]).FRec3,U,4);
+        ien:= Piece(TRemData(FParent.FData[i]).FRec3,U,6);
+      end;
+    CallV('ORQQPXRM GET WH REPORT TEXT', [ien]);
+    ReportBox(RPCBrokerV.Results,'Procedure Report Results',True);
+end;
+
+procedure TRemPrompt.ViewWHText(Sender: TObject);
+var
+WHRecNum, WHTitle: string;
+i: integer;
+begin
+  for i := 0 to FParent.FData.Count-1 do
+     begin
+     if Piece(TRemData(FParent.FData[i]).FRec3,U,4)='WH' then
+        begin
+        WHRecNum:=(Piece(TRemData(FParent.FData[i]).FRec3,U,6));
+        WHTitle :=(Piece(TRemData(FParent.FData[i]).FRec3,U,8));
+        end;
+     end;
+  CallV('ORQQPXRM GET WH LETTER TEXT', [WHRecNum]);
+  ReportBox(RPCBrokerV.Results,'Women Health Notification Purpose: '+WHTitle,false);
+end;
+
+procedure TRemPrompt.DoMHTest(Sender: TObject);
+var
+  TmpSL, tmpScores, tmpResults: TStringList;
+  i, TestComp: integer;
+  Before, After, Score: string;
+  MHRequired: boolean;
+
+begin
+  TestComp := 0;
+  try
+  if (sender is TCPRSDialogButton) then
+     (Sender as TCPRSDialogButton).Enabled := false;
+  if FParent.FReminder.MHTestArray = nil then FParent.FReminder.MHTestArray := TORStringList.Create;
+  if(MHTestAuthorized(FData.Narrative)) then
+  begin
+    FParent.FReminder.BeginTextChanged;
+    try
+      if(FParent.IncludeMHTestInPN) then
+        TmpSL := TStringList.Create
+      else
+        TmpSL := nil;
+      if Piece(self.FData.FRec3,U,13) = '1' then MHRequired := True
+      else MHRequired := false;
+      Before := GetValue;
+      After := PerformMHTest(Before, FData.Narrative, TmpSL, MHRequired);
+      if uinit.TimedOut then After := '';
+      if Piece(After, U, 1) = 'New MH dll' then
+        begin
+          if Piece(After,U,2)='COMPLETE' then
+          begin
+            FParent.FReminder.MHTestArray.Add(FData.Narrative + U + FParent.FReminder.IEN);
+            self.FMHTestComplete := 1;
+            Score := Piece(After,U,3);
+            if FParent.ResultDlgID <> '' then
+              begin
+                tmpScores := TStringList.Create;
+                tmpResults := TStringList.Create;
+                PiecestoList(copy(score,2,Length(score)),'*',tmpScores);
+                PiecestoList(FParent.ResultDlgID,'~',tmpResults);
+                GetMHResultText(FMiscText, tmpResults, tmpScores);
+                if tmpScores <> nil then tmpScores.Free;
+                if tmpResults <> nil then tmpResults.Free;
+              end;
+            if (FMiscText <> '') then FMiscText := FMiscText + '~<br>';
+            if tmpSL <> nil then
+              begin
+                for i := 0 to TmpSL.Count-1 do
+                  begin
+                    if(i > 0) then FMiscText := FMiscText + CRCode;
+                    FMiscText := FMiscText + TmpSL[i];
+                  end;
+              end;
+          //end;
+            //ExpandTIUObjects(FMiscText);
+          end
+          else if Piece(After,U,2)='INCOMPLETE' then
+            begin
+               FParent.FReminder.MHTestArray.Add(FData.Narrative + U + FParent.FReminder.IEN);
+               self.FMHTestComplete := 2;
+               FMiscText := '';
+               After := 'X';
+            end
+          else if Piece(After,U,2)='CANCELLED' then
+            begin
+               self.FMHTestComplete := 0;
+               FMiscText := '';
+               After := '';
+            end;
+          SetValue(After);
+          exit;
+        end;
+      if pos(U,After)>0 then
+        begin
+          TestComp := StrtoInt(Piece(After,U,2));
+          self.FMHTestComplete := TestComp;
+          After := Piece(After,U,1);
+        end;
+      if(Before <> After) and (not uInit.TimedOut) then
+      begin
+        if(After = '') or (FParent.ResultDlgID = '') then
+          FMiscText := ''
+        else
+        if TestComp > 0 then
+        begin
+          MentalHealthTestResults(FMiscText, FParent.ResultDlgID, FData.Narrative,
+                                  FParent.FReminder.FPCEDataObj.Providers.PCEProvider, After);
+          if(assigned(TmpSL) and (TmpSL.Count > 0)) then
+          begin
+            if(FMiscText <> '') then
+              FMiscText := FMiscText + CRCode + CRCode;
+            for i := 0 to TmpSL.Count-1 do
+            begin
+              if(i > 0) then
+                FMiscText := FMiscText + CRCode + CRCode;
+              FMiscText := FMiscText + TmpSL[i];
+            end;
+          end;
+          ExpandTIUObjects(FMiscText);
+        end;
+        SetValue(After);
+      end;
+    finally
+      if not uInit.TimedOut then
+         FParent.FReminder.EndTextChanged(Sender);
+    end;
+    if not uInit.TimedOut then
+         if(FParent.ElemType = etDisplayOnly) and (not assigned(FParent.FParent)) then
+            RemindersInProcess.Notifier.Notify;
+          end
+    else
+                InfoBox('Not Authorized to score the ' + FData.Narrative + ' test.',
+                   'Insufficient Authorization', MB_OK + MB_ICONERROR);
+  finally
+     (Sender as TCPRSDialogButton).Enabled := true;
+  end;
+end;
+
+procedure TRemPrompt.GAFHelp(Sender: TObject);
+begin
+  inherited;
+  GotoWebPage(GAFURL);
+end;
+
+function TRemPrompt.EntryID: string;
+begin
+  Result := FParent.EntryID + '/' + IntToStr(integer(Self));
+end;
+
+procedure TRemPrompt.EditKeyPress(Sender: TObject; var Key: Char);
+begin
+  if (Key = '?') and (Sender is TCustomEdit) and
+    ((TCustomEdit(Sender).Text = '') or (TCustomEdit(Sender).SelStart = 0)) then
+    Key := #0;
+end;
+
+{ TRemPCERoot }
+
+destructor TRemPCERoot.Destroy;
+begin
+  KillObj(@FData);
+  KillObj(@FForcedPrompts);
+  inherited;
+end;
+
+procedure TRemPCERoot.Done(Data: TRemData);
+var
+  i, idx: integer;
+
+begin
+  if(assigned(FForcedPrompts) and assigned(Data.FParent) and
+     assigned(Data.FParent.FPrompts)) then
+  begin
+    for i := 0 to Data.FParent.FPrompts.Count-1 do
+      UnSync(TRemPrompt(Data.FParent.FPrompts[i]));
+  end;
+  FData.Remove(Data);
+  if(FData.Count <= 0) then
+  begin
+    idx := PCERootList.IndexOfObject(Self);
+//    if(idx < 0) then
+  //    idx := PCERootList.IndexOf(FID);
+    if(idx >= 0) then
+      PCERootList.Delete(idx);
+    if PrimaryDiagRoot = Self then
+      PrimaryDiagRoot := nil;
+    Free;
+  end;
+end;
+
+class function TRemPCERoot.GetRoot(Data: TRemData; Rec3: string;
+                                   Historical: boolean): TRemPCERoot;
+var
+  DID: string;
+  Idx: integer;
+  obj: TRemPCERoot;
+
+begin
+  if(Data.DataType = dtVitals) then
+    DID := 'V' + Piece(Rec3, U, 6)
+  else
+  begin
+    if(Historical) then
+    begin
+      inc(HistRootCount);
+      DID := IntToStr(HistRootCount);
+    end
+    else
+      DID := '0';
+    DID := DID + U +
+           Piece(Rec3, U, r3Type) + U +
+           Piece(Rec3, U, r3Code) + U +
+           Piece(Rec3, U, r3Cat)  + U +
+           Piece(Rec3, U, r3Nar);
+  end;
+  idx := -1;
+  if(not assigned(PCERootList)) then
+    PCERootList := TStringList.Create
+  else
+  if(PCERootList.Count > 0) then
+    idx := PCERootList.IndexOf(DID);
+  if(idx < 0) then
+  begin
+    obj := TRemPCERoot.Create;
+    try
+      obj.FData := TList.Create;
+      obj.FID := DID;
+      idx := PCERootList.AddObject(DID, obj);
+    except
+      obj.Free;
+      raise;
+    end;
+  end;
+  Result := TRemPCERoot(PCERootList.Objects[idx]);
+  Result.FData.Add(Data);
+end;
+
+function TRemPCERoot.GetValue(PromptType: TRemPromptType; var NewValue: string): boolean;
+var
+  ptS: string;
+  i: integer;
+
+begin
+  ptS := char(ord('D') + ord(PromptType));
+  i := pos(ptS, FValueSet);
+  if(i = 0) then
+    Result := FALSE
+  else
+  begin
+    NewValue := Piece(FValue, U, i);
+    Result := TRUE;
+  end;
+end;
+
+procedure TRemPCERoot.Sync(Prompt: TRemPrompt);
+var
+  i, j: integer;
+  RData: TRemData;
+  Prm: TRemPrompt;
+  pt: TRemPromptType;
+  ptS, Value: string;
+
+begin
+//  if(assigned(Prompt.FParent) and ((not Prompt.FParent.FChecked) or
+//    (Prompt.FParent.ElemType = etDisplayOnly))) then exit;
+  if(assigned(Prompt.FParent) and (not Prompt.FParent.FChecked)) then exit;
+  pt := Prompt.PromptType;
+  Value := Prompt.GetValue;
+  if(Prompt.Forced) then
+  begin
+    if(not Prompt.FInitializing) then
+    begin
+      if(not assigned(FForcedPrompts)) then
+        FForcedPrompts := TStringList.Create;
+      if(FForcedPrompts.IndexOfObject(Prompt) < 0) then
+      begin
+        for i := 0 to FForcedPrompts.Count-1 do
+        begin
+          Prm := TRemPrompt(FForcedPrompts.Objects[i]);
+          if(pt = Prm.PromptType) and (FForcedPrompts[i] <> Value) and (Prm.FParent.IsChecked) then
+            raise EForcedPromptConflict.Create('Forced Value Error:' + CRLF + CRLF +
+                  Prompt.ForcedCaption + ' is already being forced to another value.');
+        end;
+        FForcedPrompts.AddObject(Value, Prompt);
+      end;
+    end;
+  end
+  else
+  begin
+    if(assigned(FForcedPrompts)) then
+    begin
+      for i := 0 to FForcedPrompts.Count-1 do
+      begin
+        Prm := TRemPrompt(FForcedPrompts.Objects[i]);
+        if(pt = Prm.PromptType) and (FForcedPrompts[i] <> Value) and (Prm.FParent.IsChecked) then
+        begin
+          Prompt.SetValue(FForcedPrompts[i]);
+          if(assigned(Prompt.FParent)) then
+            Prompt.FParent.cbClicked(nil); // Forces redraw
+          exit;
+        end;
+      end;
+    end;
+  end;
+  if(Prompt.FInitializing) then exit;
+  for i := 0 to FData.Count-1 do
+    inc(TRemData(FData[i]).FSyncCount);
+  ptS := char(ord('D') + ord(pt));
+  i := pos(ptS, FValueSet);
+  if(i = 0) then
+  begin
+    FValueSet := FValueSet + ptS;
+    i := length(FValueSet);
+  end;
+  SetPiece(FValue, U, i, Value);
+  for i := 0 to FData.Count-1 do
+  begin
+    RData := TRemData(FData[i]);
+    if(RData.FSyncCount = 1) and (assigned(RData.FParent)) and
+      (assigned(RData.FParent.FPrompts)) then
+    begin
+      for j := 0 to RData.FParent.FPrompts.Count-1 do
+      begin
+        Prm := TRemPrompt(RData.FParent.FPrompts[j]);
+        if(Prm <> Prompt) and (pt = Prm.PromptType) and (not Prm.Forced) then
+          Prm.SetValue(Prompt.GetValue);
+      end;
+    end;
+  end;
+  for i := 0 to FData.Count-1 do
+  begin
+    RData := TRemData(FData[i]);
+    if(RData.FSyncCount > 0) then
+      dec(RData.FSyncCount);
+  end;
+end;
+
+procedure TRemPCERoot.UnSync(Prompt: TRemPrompt);
+var
+  idx: integer;
+
+begin
+  if(assigned(FForcedPrompts) and Prompt.Forced) then
+  begin
+    idx := FForcedPrompts.IndexOfObject(Prompt);
+    if(idx >= 0) then
+      FForcedPrompts.Delete(Idx);
+  end;
+end;
+
+initialization
+  InitReminderObjects;
+
+finalization
+  FreeReminderObjects;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uReports.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uReports.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uReports.pas	(revision 1676)
@@ -0,0 +1,326 @@
+unit uReports;
+
+interface
+
+uses sysutils, classes, ORFN, ComCtrls, Forms, Graphics;
+
+type
+
+TCellObject = class          //Data Object for each Cell in ListView
+  private
+    FName     : string;      //Column Name
+    FSite     : string;      //Site (#;name)
+    FInclude  : string;      //Set if data is to be included in detailed report
+    FTextType : string;      //Type of data (WP)
+    FVisible  : string;      //Set if column property is visible
+    FHandle   : string;      //Row:Col identifier
+    FDataType : string;      //Data Type of data in column (null or 0:freetext, 1:integer, 2:datetime)
+    FData     : TStringList; //Data for this field (could be WP)
+    FCount    : integer;
+
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Add(ASite, AHandle, AColumnData: string; AData: TStringList);
+    property Name       :string read FName write FName;
+    property Site       :string read FSite write FSite;
+    property Include    :string read FInclude write FInclude;
+    property TextType   :string read FTextType write FTextType;
+    property Visible    :string read FVisible write FVisible;
+    property Handle     :string read FHandle write FHandle;
+    property DataType   :string read FDataType write FDatatype;
+    property Data       :TStringList read FData write FData;
+    property Count      :integer read FCount write FCount;
+  end;
+
+TRowObject = class           //List of Row objects for ListView
+  private
+    FCount     :integer;
+    FColumnList:TList;
+  public
+    constructor Create;
+    destructor  Destroy; override;
+    procedure   Add(ASite, AHandle, AColumnData: string; AData: TStringList);
+    procedure   Clear;
+    property    Count           :integer     read FCount;
+    property    ColumnList      :TList       read FColumnList;
+  end;
+
+type
+  PReportTreeObject = ^TReportTreeObject;
+  TReportTreeObject = Record
+    ID         : String;         //Report ID           ID:Text => when passed to broker add: ;Remote~uHState
+    Heading    : String;         //Report Heading
+    Qualifier  : String;         //Report Qualifier
+    Remote     : String;         //Remote Data Capable
+    RptType    : String;         //Report Type
+    Category   : String;         //Report Category
+    RPCName    : String;         //Associated RPC
+    IFN        : String;         //IFN of report in file 101.24
+    HSTAG      : String;         //Report extract      tag;routine;component #
+    SortOrder  : String;         //#:# of columns to use in a multi-column sort
+    MaxDaysBack: String;         //Maximum number of Days allowed for report
+    Direct     : String;         //Direct Remote Call flag
+    HDR        : String;         //HDR is data source if = 1
+    FHIE       : String;         //FHIE is data source if = 1
+    FHIEONLY   : String;         //FHIEONLY if data is to only include FHIE
+end;
+
+type
+  PProcTreeObj = ^TProcedureTreeObject;
+  TProcedureTreeObject = Record
+    ParentName   : String;      //Parent procedure name for exam/print sets
+    ProcedureName: String;      //Same as ParentName for stand-alone procedures
+    MemberOfSet  : String;      //1 = descendant procedures have individual reports
+                                //2 = descendant procedures have one shared report
+    ExamDtTm   : String;        //Exam Date Time
+    Associate  : Integer;       //Index of the associated TListItem in the lvReports
+end;
+
+var
+  RowObjects: TRowObject;
+
+//procedures & functions for Report Tree & ListView objects
+
+function MakeReportTreeObject(x: string): PReportTreeObject;
+function IsValidNumber(S: string; var V: extended): boolean;
+function StringToFMDateTime(Str: string): TFMDateTime;
+function ShortDateStrToDate(shortdate: string): string ;
+function StripSpace(str:string):string;
+function MakeProcedureTreeObject(x: string): PProcTreeObj;
+function MakePrntProcTreeObject(x: string): PProcTreeObj;
+
+//procedures & functions for Report Fonts
+
+procedure ReportTextFontChange(Self, Sender: TObject);
+function CreateReportTextComponent(ParentForm: TForm): TRichEdit;
+
+
+implementation
+
+const
+  Months: array[1..12] of string[3] = ('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
+
+constructor TCellObject.Create;
+
+begin
+  FData := TStringList.Create;
+end;
+
+destructor TCellObject.Destroy;
+begin
+  FData.Free;
+end;
+
+procedure TCellObject.Add(ASite, AHandle, AColumnData: string; AData: TStringList);
+
+begin
+  FName := piece(AColumnData,'^',1);
+  FSite := ASite;
+  FInclude := piece(AColumnData,'^',5);
+  FTextType := piece(AColumnData,'^',4);
+  FVisible := piece(AColumnData,'^',2);
+  FDataType := piece(AColumnData,'^',9);
+  FHandle := AHandle;
+  FCount := AData.Count;
+  FastAssign(AData, FData);
+end;
+
+function MakeReportTreeObject(x: string): PReportTreeObject;
+var
+  AnObject: PReportTreeObject;
+begin
+  //x=id^Name^Qualifier^HSTag;Routine^Entry^Routine^Remote^Type^Category^RPC^ifn^SortOrder^MaxDaysBack^Direct^HDR^FHIE
+  New(AnObject);
+  with AnObject^ do
+    begin
+      ID              := UpperCase(Piece(x, U, 1)) + ':' + UpperCase(Piece(x, U, 2));
+      Heading         := Piece(x, U, 2);
+      Qualifier       := Piece(x, U, 3);
+      Remote          := Piece(x, U, 7);
+      RptType         := Piece(x, U, 8);
+      Category        := Piece(x, U, 9);
+      RPCName         := UpperCase(Piece(x, U, 10));
+      IFN             := Piece(x, U, 11);
+      HSTag           := UpperCase(Piece(x, U, 4));
+      SortOrder       := Piece(x, U, 12);
+      MaxDaysBack     := Piece(x, U, 13);
+      Direct          := Piece(x, U, 14);
+      HDR             := Piece(x, U, 15);
+      FHIE            := Piece(x, U, 16);
+      FHIEONLY        := Piece(x, U, 17);
+    end;
+  Result := AnObject;
+end;
+
+constructor TRowObject.Create;
+begin
+  FColumnList := TList.Create;
+  FCount := 0;
+end;
+
+destructor TRowObject.Destroy;
+begin
+  //Clear;
+  FColumnList.Free;
+  inherited Destroy;
+end;
+
+procedure TRowObject.Add(ASite, AHandle, AColumnData: string; AData: TStringList);
+var
+  ACell: TCellObject;
+begin
+  ACell := TCellObject.Create;
+  ACell.Add(ASite,AHandle,AColumnData,AData);
+  FColumnList.Add(ACell);
+  FCount := FColumnList.Count;
+end;
+
+procedure TRowObject.Clear;
+var
+  i: Integer;
+begin
+  with FColumnList do
+    for i := 0 to Count - 1 do
+      with TCellObject(Items[i]) do Free;
+  FColumnList.Clear;
+  FCount := 0;
+end;
+
+function IsValidNumber(S: string; var V: extended): boolean;
+var
+  NumCode: integer;
+  FirstSpace: integer;
+begin
+  FirstSpace := Pos(' ', S);
+  if FirstSpace > 0 then
+    S := Copy(S, 1, FirstSpace - 1);
+  Val(S, V, NumCode);
+  Result := (NumCode = 0);
+  if not Result then
+  begin
+      // Remove thousands seperators
+    S := StringReplace(S, ThousandSeparator, '', [rfReplaceAll]);
+      // change DecimalSeperator to '.' because Val only recognizes that, not
+      // the locale specific decimal char... then try again.  Stupid Val.
+    S := StringReplace(S, DecimalSeparator, '.', [rfReplaceAll]);
+    Val(S, V, NumCode);
+    Result := (NumCode = 0);
+  end;
+end;
+
+function StringToFMDateTime(Str: string): TFMDateTime;
+var
+  mm,dd,yy,hh: integer;
+  day,time,hr,min: string;
+begin
+  day := piece(str,' ',1);
+  time := piece(str,' ',2);
+  hh := 0;
+  if length(time) > 0 then
+    begin
+      hr := piece(time,':',1);
+      if Copy(hr,1,1) = '0' then hr := Copy(hr,2,1);
+      if Copy(hr,1,1) = '0' then hr := '';
+      min := piece(time,':',2);
+      if Copy(min,1,1) = '0' then min := Copy(min,2,1);
+      if Copy(min,1,1) = '0' then min := '';
+      hh := StrToIntDef(hr + min,0);
+    end;
+  mm := StrToIntDef(piece(day,'/',1),0);
+  dd := StrToIntDef(piece(day,'/',2),0);
+  yy := StrToIntDef(piece(day,'/',3),0) - 1700;
+  Result := (yy * 10000) + (mm * 100) + dd + (hh/10000);
+end;
+
+function ShortDateStrToDate(shortdate: string): string ;
+{Converts date in format 'mmm dd,yy' or 'mmm dd,yyyy' to standard 'mm/dd/yy'}
+var
+  month,day,year: string ;
+  i: integer ;
+begin
+  result := 'ERROR' ;
+  if (Pos(' ',shortdate) <> 4) or ((Pos(',',shortdate) <> 7) and (Pos(',',shortdate) <> 6)) then exit ;  {no spaces or comma}
+  for i := 1 to 12 do
+    if Months[i] = UpperCase(Copy(shortdate,1,3)) then month := IntToStr(i);
+  if month = '' then exit ;    {invalid month name}
+  if length(month) = 1 then month := '0' + month;
+  if Pos(',',shortdate) = 7 then
+    begin
+      day  := IntToStr(StrToInt(Copy(shortdate,5,2))) ;
+      year := IntToStr(StrToInt(Copy(shortdate,8,99))) ;
+    end;
+  if Pos(',',shortdate) = 6 then
+    begin
+      day  := '0' + IntToStr(StrToInt(Copy(shortdate,5,1))) ;
+      year := IntToStr(StrToInt(Copy(shortdate,7,99))) ;
+    end;
+  result := month+'/'+day+'/'+year ;
+end ;
+
+function StripSpace(str: string): string;
+var
+  i,j: integer;
+begin
+  i := 1;
+  j := length(str);
+  while str[i] = #32 do inc(i);
+  while str[j] = #32 do dec(j);
+  result := copy(str, i, j-i+1);
+end;
+
+function MakeProcedureTreeObject(x: string): PProcTreeObj;
+var
+  AnObject: PProcTreeObj;
+begin
+  New(AnObject);
+  with AnObject^ do
+    begin
+      ParentName := Piece(x, U, 11);
+      ProcedureName := Piece(x, U, 4);
+      MemberOfSet := Piece(x, U, 10);
+      ExamDtTm := Piece(x, U, 2);
+      Associate := -1;
+    end;
+  Result := AnObject;
+end;
+
+function MakePrntProcTreeObject(x: string): PProcTreeObj;
+var
+  AnObject: PProcTreeObj;
+begin
+  New(AnObject);
+  with AnObject^ do
+    begin
+      ParentName := Piece(x, U, 11);
+      ExamDtTm := Piece(x, U, 2);
+      Associate := -1;
+    end;
+  Result := AnObject;
+end;
+
+procedure ReportTextFontChange(Self, Sender: TObject);
+begin
+  TFont(Sender).Size := 8;
+end;
+
+// CQ#70295
+function CreateReportTextComponent(ParentForm: TForm): TRichEdit;
+var
+  m: TMethod;
+begin
+  Result := TRichEdit.Create(ParentForm);
+  with Result do
+  begin
+    Parent := ParentForm;
+    Visible := False;
+    Width := 600;
+    Font.Name := 'Courier New';
+    Font.Size := 8;
+    m.Code := @ReportTextFontChange;
+    m.Data := ParentForm;
+    Font.OnChange := TNotifyEvent(m);
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSignItems.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSignItems.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSignItems.pas	(revision 1676)
@@ -0,0 +1,1096 @@
+unit uSignItems;
+
+{.$define debug}
+
+interface
+
+uses
+  SysUtils, Windows, Classes, Graphics, Controls, StdCtrls, CheckLst, ORClasses, ORCtrls,
+  Dialogs, UBAConst, fODBase, UBACore, Forms;
+
+type
+  TSigItemType = (siServiceConnected, siAgentOrange, siIonizingRadiation,
+                  siEnvironmentalContaminants, siMST, siHeadNeckCancer, siCombatVeteran, siSHAD);
+
+  TSigItemTagInfo =  record
+    SigType: TSigItemType;
+    Index: integer;
+  end;
+
+  TSigItems = class(TComponent)
+  private
+    FBuilding: boolean;
+    FStsCount: integer;
+    FItems: TORStringList;
+    FOldDrawItemEvent: TDrawItemEvent;
+    Fcb: TList;
+    Flb: TCustomListBox;
+    FLastValidX: integer;
+    FValidGap: integer;
+    FDy: integer;
+    FAllCheck: array[TSigItemType] of boolean;
+    FAllCatCheck: boolean;
+    FcbX: array[TSigItemType] of integer;
+    function TagInfo(ASigType: TSigItemType; AIndex: integer): TSigItemTagInfo;
+    procedure cbClicked(Sender: TObject);
+    procedure cbEnter(Sender: TObject);
+    procedure cbExit(Sender: TObject);
+    procedure lbDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+    procedure CopyCBValues(FromIndex, ToIndex: integer);
+    function  FindCBValues(ATag: integer): TORCheckBox;
+    function  GetTempCkBxState(Index: integer; CBValue:TSigItemType): string;
+
+  protected
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure Add(ItemType: Integer; const ID: string; Index: integer);
+    procedure Remove(ItemType: integer; const ID: string);
+    procedure ResetOrders;
+    procedure Clear;
+    function  UpdateListBox(lb: TCustomListBox): boolean;
+    procedure EnableSettings(Index: integer; Checked: boolean);
+    function  OK2SaveSettings: boolean;
+    procedure SaveSettings;
+    procedure DisplayPlTreatmentFactors;
+    procedure DisplayUnsignedStsFlags(sFlags:string);
+    function GetSigItems : TORStringList; //BAPHII 1.3.1
+    function FindCB(ATag: integer): TORCheckBox; //BAPHII 1.3.1
+    procedure CopyCB(FromIndex, ToIndex: integer); //BAPHII 1.3.1
+    procedure SetSigItems(Sender: TObject; sourceOrderID: string); //BAPHII 1.3.1
+    function ItemToTag(Info: TSigItemTagInfo): integer; //CQ5074
+    function TagToItem(ATag: integer): TSigItemTagInfo; //CQ5074
+
+  end;
+
+function SigItems: TSigItems;
+function SigItemHeight: integer;
+function  GetAllBtnLeftPos: integer;
+
+const
+  SIG_ITEM_VERTICAL_PAD = 2;
+
+  TC_Order_Error = 'All Service Connection and/or Rated Disabilities questions must be answered, '+#13+
+                   'and at least one diagnosis selected for each order that requires a diagnosis.';
+
+  TX_Order_Error = 'All Service Connection and/or Rated Disabilities questions must be answered, '+#13+
+                   'and at least one diagnosis selected for each order that requires a diagnosis.';
+                   
+  TC_Diagnosis_Error = ' Missing Diagnosis';
+  TX_Diagnosis_Error = ' One or more Orders have not been assigned a Diagnosis';
+  INIT_STR = '';
+
+
+var
+  uSigItems: TSigItems = nil; //BAPHII 1.3.1
+
+
+implementation
+
+uses
+  ORFn, ORNet, uConst, TRPCB, rOrders, rPCE, fOrdersSign, fReview,UBAGlobals,
+  uCore , VAUtils;
+
+type
+  ItemStatus = (isNA, isChecked, isUnchecked, isUnknown);
+  SigDescType = (sdShort, sdLong);
+
+const
+  SigItemDesc: array[TSigItemType, SigDescType] of string =
+        { siServiceConnected          } (('SC',  'Service Connected Condition'),
+        { siAgentOrange               }  ('AO',  'Agent Orange Exposure'),
+        { siIonizingRadiation         }  ('IR',  'Ionizing Radiation Exposure'),
+        { siEnvironmentalContaminants }  ('SWAC','Southwest Asia Conditions'),
+        { siMST                       }  ('MST', 'MST'), //'Military Sexual Trauma'
+        { siHeadNeckCancer            }  ('HNC', 'Head and/or Neck Cancer'),
+        { siCombatVeteran             }  ('CV',  'Combat Veteran Related'),
+        { siSHAD                      }  ('SHD', 'Shipboard Hazard and Defense'));
+
+  SigItemDisplayOrder: array[TSigItemType] of TSigItemType =
+     (  siServiceConnected,
+        siCombatVeteran,
+        siAgentOrange,
+        siIonizingRadiation,
+        siEnvironmentalContaminants,
+        siSHAD,
+        siMST,
+        siHeadNeckCancer);
+
+  StsChar: array[ItemStatus] of char =
+           { isNA        } ('N',
+           { isChecked   }  'C',
+           { isUnchecked }  'U',
+           { isUnknown   }  '?');
+
+  ColIdx = 30000;
+  AllIdx = 31000;
+  NA_FLAGS = 'NNNNNNNN';
+
+var
+  uSingletonFlag: boolean = FALSE;
+  FlagCount: integer;
+  BaseFlags: string;
+  tempCkBx: TORCheckBox;
+  thisOrderID: string;
+  thisChangeItem: TChangeItem;
+  AllBtnLeft: integer;
+
+
+function TSigItems.GetSigItems : TORStringList;
+begin
+  Result := FItems;
+end;
+
+function TSigItems.FindCB(ATag: integer): TORCheckBox;
+var
+  i: integer;
+  wc: TWinControl;
+begin
+  for i := 0 to Fcb.Count-1 do
+  begin
+    wc := TWinControl(Fcb[i]);
+    if(wc is TORCheckBox) and (wc.Tag = ATag) then
+    begin
+      Result := TORCheckBox(wc);
+      exit;
+    end;
+  end;
+  Result := nil;
+end;
+
+procedure TSigItems.CopyCB(FromIndex, ToIndex: integer);
+var
+  si: TSigItemType;
+  FromTag, ToTag: integer;
+  FromCB, ToCB: TORCheckBox;
+
+begin
+  for si := low(TSigItemType) to high(TSigItemType) do
+  begin
+    FromTag := ItemToTag(TagInfo(si, FromIndex));
+    ToTag := ItemToTag(TagInfo(si, ToIndex));
+    FromCB := FindCB(FromTag);
+    ToCB := FindCB(ToTag);
+    if(Assigned(FromCB) and Assigned(ToCB)) then
+      ToCB.State := FromCB.State;
+  end;
+end;
+
+procedure TSigItems.SetSigItems(Sender: TObject; sourceOrderID: string);
+var
+  i: integer;
+begin
+  if (Sender as TCaptionCheckListBox).Name = 'clstOrders' then
+    for i := 0 to frmSignOrders.clstOrders.Count - 1 do
+       begin
+       if ((fOrdersSign.frmSignOrders.clstOrders.Selected[i]) and (fOrdersSign.targetOrderID <> fOrdersSign.srcOrderID)) then
+          CopyCB(fOrdersSign.srcIndex, i);
+       end
+  else
+    if (Sender as TCaptionCheckListBox).Name = 'lstReview' then
+      for i := 1 to  frmReview.lstReview.Count -1 do
+         begin
+           if ((fReview.frmReview.lstReview.Selected[i]) and (fReview.targetOrderID <> fReview.srcOrderID)) then
+              CopyCB(fReview.srcIndex, i);
+         end;
+end;
+
+function SigItems: TSigItems;
+begin
+  if not assigned(uSigItems) then
+  begin
+    uSingletonFlag := TRUE;
+    try
+      uSigItems := TSigItems.Create(nil);
+    finally
+      uSingletonFlag := FALSE;
+    end;
+  end;
+  Result := uSigItems;
+end;
+
+function SigItemHeight: integer;
+begin
+  Result := MainFontHeight + 2 + SIG_ITEM_VERTICAL_PAD;
+end;
+
+function  GetAllBtnLeftPos: integer;
+ begin
+  Result := uSignItems.AllBtnLeft;
+ end;
+
+
+{ TSigItems }
+{
+FItems Layout:
+1         2               3                            4                      5
+OrderID ^ ListBox Index ^ RPC Call was Made (0 or 1) ^ Settings by char pos ^ Disabled Flag
+}
+
+procedure TSigItems.Add(ItemType: Integer; const ID: string; Index: integer);
+var
+  idx: integer;
+begin
+  if ItemType = CH_ORD then
+  begin
+    idx := FItems.IndexOfPiece(ID);
+    if idx < 0 then
+      idx := FItems.Add(ID);
+    FItems.SetStrPiece(idx, 2, IntToStr(Index));
+    FItems.SetStrPiece(idx,5,INIT_STR);    // hds4807 value was being reatained when same order selected in FReview.
+
+  end;
+end;
+
+procedure TSigItems.Clear;
+begin
+  FItems.Clear;
+  Fcb.Clear;
+end;
+
+constructor TSigItems.Create(AOwner: TComponent);
+begin
+  if not uSingletonFlag then
+    raise Exception.Create('Only one instance of TSigItems allowed');
+  inherited Create(AOwner);
+  FItems := TORStringList.Create;
+  Fcb := TList.Create;
+  tempCkBx := TORCheckBox.Create(Owner);
+
+end;
+
+destructor TSigItems.Destroy;
+begin
+  FreeAndNil(FItems);
+  FreeAndNil(Fcb);
+  inherited;
+end;
+
+procedure TSigItems.Remove(ItemType: integer; const ID: string);
+var
+  idx: integer;
+begin
+  if ItemType = CH_ORD then
+  begin
+    idx := FItems.IndexOfPiece(ID);
+    if idx >= 0 then
+      FItems.Delete(idx);
+  end;
+end;
+
+procedure TSigItems.ResetOrders; // Resets ListBox positions, to avoid old data messing things up
+var
+  i: integer;
+begin
+  for i := 0 to FItems.Count-1 do
+    FItems.SetStrPiece(i, 2, '-1');
+end;
+
+function TSigItems.ItemToTag(Info: TSigItemTagInfo): integer;
+begin
+  if Info.Index < 0 then
+    Result := 0
+  else
+    Result := (Info.Index*FlagCount) + ord(Info.SigType) + 1;
+end;
+
+
+function TSigItems.TagInfo(ASigType: TSigItemType; AIndex: integer): TSigItemTagInfo;
+begin
+  Result.SigType := ASigType;
+  Result.Index := AIndex;
+end;
+
+function TSigItems.TagToItem(ATag: integer): TSigItemTagInfo;
+begin
+  if ATag <= 0 then
+  begin
+    Result.Index := -1;
+    Result.SigType := TSigItemType(0);
+  end
+  else
+  begin
+    dec(ATag);
+    Result.SigType := TSigItemType(ATag mod FlagCount);
+    Result.Index := ATag div FlagCount;
+  end;
+end;
+
+type
+  TExposedListBox = class(TCustomListBox)
+  public
+    property OnDrawItem;
+  end;
+
+function TSigItems.UpdateListBox(lb: TCustomListBox): boolean;
+const
+  cbWidth = 13;
+  cbHeight = 13;
+  btnGap = 2;
+  AllTxt = 'All';
+
+var
+  cb: TORCheckBox;
+  btn: TButton;
+  lbl: TLabel;
+  prnt: TWinControl;
+  ownr: TComponent;
+  FirstValidItem: TSigItemType;
+  x, y, MaxX, i, btnW, btnH, j, dx, ht, idx, dgrp: integer;
+  s, id, Code, cType, Flags,OrderStatus,CVFlag,ChangedFlags: string;
+
+  StsCode: char;
+  sx, si: TSigItemType;
+  sts, StsIdx: ItemStatus;
+  StsUsed: array[TSigItemType] of boolean;
+  AResponses : TResponses;
+  UFlags,HoldFlags: string;
+  thisCB: TORCheckBox;
+  cpFlags: string;
+  
+
+  itemText: string;
+  thisTagInfo: TSigItemTagInfo;
+
+  function CreateCB(AParent: TWinControl): TORCheckBox;
+  begin
+     Result := TORCheckBox.Create(ownr);
+     Result.Parent := AParent;
+     Result.Height := cbHeight;
+     Result.Width := cbWidth;
+     Result.GrayedStyle := gsBlueQuestionMark;
+     Result.GrayedToChecked := FALSE;
+     Result.OnClick := cbClicked;
+     Result.OnEnter := cbEnter;
+     Result.OnExit := cbExit;
+     UpdateColorsFor508Compliance(Result);
+     Fcb.Add(Result);
+  end;
+
+begin
+  Result := FALSE;
+  Fcb.Clear;
+  FBuilding := TRUE;
+try
+
+  try
+    idx := 0;
+    RPCBrokerV.ClearParameters := True;
+
+    for i := 0 to FItems.Count-1 do
+    begin
+       s := FItems[i];
+       thisOrderID := Piece(s,U,1);
+       if BILLING_AWARE then
+         if NOT UBACore.IsOrderBillable(thisOrderID) then
+             RemoveOrderFromDxList(thisOrderID);
+       if (piece(s, U, 2) <> '-1') and (piece(s, U, 3) <> '1') then
+       begin
+          with RPCBrokerV do
+              begin
+              if idx = 0 then
+                Param[1].PType := list;
+              inc(idx);
+              Param[1].Mult[IntToStr(idx)] := piece(s, U, 1);
+              end;
+          end;
+       end; //for
+
+       if idx > 0 then
+          begin
+            rpcGetSC4Orders;
+            for i := 0 to RPCBrokerV.Results.Count-1 do
+               begin
+                  s := RPCBrokerV.Results[i];
+                {Begin BillingAware}
+                if  BILLING_AWARE then
+                begin
+                  if (CharAt(piece(s,';',2),1) <> '1') then
+                    s := piece(s,U,1);
+                end;  {End BillingAware }
+                id := piece(s,U,1);
+                idx := FItems.IndexOfPiece(id);
+
+                if idx >= 0 then
+                begin
+                    FItems.SetStrPiece(idx, 3, '1'); // Mark as read from RPC
+                    j := 2;
+                    Flags := BaseFlags;
+                     repeat
+                         Code := piece(s,U,j);
+                         if Code = 'EC' then Code := 'SWAC';  // CQ:15431  ; resolve issue of displaying SWAC vs EC.
+                         if Code <> '' then
+                            begin
+                            cType := piece(Code, ';', 1);
+
+                            for si := low(TSigItemType) to high(TSigItemType) do
+                               begin
+                                 if cType = SigItemDesc[si, sdShort] then
+                                    begin
+                                    cType := piece(Code, ';', 2);
+
+                                    if cType = '0' then
+                                      sts := isUnchecked
+                                    else
+                                       if cType = '1' then
+                                         sts := isChecked
+                                       else
+                                         sts := isUnknown;
+
+                                    Flags[ord(si)+1] := StsChar[sts];
+                                    break;
+
+                                    end; //if cType = SigItemDesc[si, sdShort]
+                                 end; //for
+                            end; //if Code <> ''
+
+                           inc(j);
+                       until(Code = '');
+
+                     FItems.SetStrPiece(idx, 4, Flags);
+                      // new code  if deleted order and ba on then
+                      // reset appropriate tf flags to "?".
+
+                     if BILLING_AWARE then
+                        begin
+                           if not UBACore.OrderRequiresSCEI(Piece(s,U,1)) then
+                              FItems.SetStrPiece(idx,4, NA_FLAGS)
+                           else
+                              begin
+
+                              if UBAGlobals.BAUnsignedOrders.Count > 0 then
+                                 begin
+                                 UFlags := UBACore.GetUnsignedOrderFlags(Piece(s,U,1),UBAGlobals.BAUnsignedOrders);
+                                 if UFlags <> '' then FItems.SetStrPiece(idx,4, UFlags)
+                                 end;
+                              //********************************
+                              if UBAGlobals.BACopiedOrderFlags.Count > 0 then  //BAPHII 1.3.2
+                                 begin
+                                 UFlags := UBACore.GetUnsignedOrderFlags(Piece(s,U,1),UBAGlobals.BACopiedOrderFlags); //BAPHII 1.3.2
+                                 if UFlags <> '' then //BAPHII 1.3.2
+                                    FItems.SetStrPiece(idx,4,UFlags); //BAPHII 1.3.2
+                                 end;
+                              //********************************
+                              if UBAGlobals.BAConsultPLFlags.Count > 0 then
+                                 begin
+                                    UFlags :=  GetConsultFlags(Piece(s,U,1),UBAGlobals.BAConsultPLFlags,Flags);
+
+                                 if UFlags <> '' then
+                                    FItems.SetStrPiece(idx,4, UFlags);
+                                 end;
+
+                                 UBAGlobals.BAFlagsIN := Flags;
+                              end; //else
+                           end; //if BILLING_AWARE
+
+                       end; //if idx >= 0
+
+                  end; //for i := 0 to RPCBrokerV.Results.Count-1
+             end; //if idx > 0
+
+    FStsCount := 0;
+    AllBtnLeft := 0;
+
+    for si := low(TSigItemType) to high(TSigItemType) do
+      StsUsed[si] := FALSE;
+    //  loop thru orders selected to be signed fReview/fOrdersSign.
+    for i := 0 to FItems.Count-1 do
+       begin
+         s := FItems[i];
+
+         if (piece(s,u,2) <> '-1') and (piece(s,u,3) = '1') then
+            begin
+             s := piece(s, u, 4); // SC/EI
+            // code added 01/17/2006 - check dc'd nurse orders,
+            // originals where requiring CIDC if assigned to patient.
+             if (BILLING_AWARE) and (not UBACore.IsOrderBillable(Piece(s,U,1))) then
+               s :=  NA_FLAGS;
+
+            for si := low(TSigItemType) to high(TSigItemType) do
+              if (not StsUsed[si]) and (s[ord(si)+1] <> StsChar[isNA]) then
+              begin
+                StsUsed[si] := TRUE;
+                inc(FStsCount);
+                if FStsCount >= FlagCount then break;
+              end;
+            end;
+
+         if FStsCount >= FlagCount then
+           Break;
+       end; //for
+
+   {Begin BillingAware}
+     if  BILLING_AWARE then
+         begin
+            if FStsCount = 0 then //  Billing Awareness.  Force Grid to paint correctly
+               FStsCount := 1;
+         end;
+   {End BillingAware}
+
+    if FStsCount > 0 then
+       begin
+         Result := TRUE;
+         FirstValidItem := TSigItemType(0);
+
+         prnt := lb.Parent;
+         ownr := lb.Owner;
+         MaxX := lb.ClientWidth;
+         lb.Canvas.Font := MainFont;
+         btnW := 0;
+
+         for si := low(TSigItemType) to high(TSigItemType) do
+         begin
+            j := lb.Canvas.TextWidth(SigItemDesc[si, sdShort]);
+            if btnW < j then
+             btnW := j;
+         end;
+
+         inc(btnW, 8);
+         btnH := ResizeHeight( BaseFont, MainFont, 21);
+         x := MaxX;
+         dx := (btnW - cbWidth) div 2;
+
+         for si := high(TSigItemType) downto low(TSigItemType) do
+         begin
+            FcbX[si] := x - btnW + dx;
+            dec(x, btnW + btnGap);
+         end;
+         
+         if FStsCount > 1 then
+         begin
+           FAllCatCheck := FALSE;
+           btn := TButton.Create(ownr);
+           btn.Parent := prnt;
+           btn.Height := btnH;
+           btn.Width := btnW;
+           btn.Caption := AllTxt;
+           btn.OnClick := cbClicked;
+           btn.Left := FcbX[TSigItemType(0)] + lb.Left - dx + 2 - (FcbX[TSigItemType(1)] - FcbX[TSigItemType(0)]);
+           AllBtnLeft := btn.left;
+           btn.Top := lb.Top - btn.height - 2;
+           btn.Tag := AllIdx;
+           btn.ShowHint := TRUE;
+           btn.Hint := 'Set All Related Entries';
+           btn.TabOrder := lb.TabOrder;
+           UpdateColorsFor508Compliance(btn);
+           Fcb.Add(btn);
+         end;
+
+         for sx := low(TSigItemType) to high(TSigItemType) do
+         begin                                                // print buttons on header of columns ie SC,AO,IR, etc....
+            si := SigItemDisplayOrder[sx];
+            FAllCheck[si] := TRUE;
+            btn := TButton.Create(ownr);
+            btn.Parent := prnt;
+            btn.Height := btnH;
+            btn.Width := btnW;
+            btn.Caption := SigItemDesc[si, sdShort];
+            btn.OnClick := cbClicked;
+            btn.Left := FcbX[sx] + lb.Left - dx + 2;
+            btn.Top := lb.Top - btn.height - 2;
+            btn.Tag := ColIdx + ord(si);
+            btn.ShowHint := TRUE;
+            btn.Hint := 'Set all ' + SigItemDesc[si, sdLong];
+            btn.Enabled := StsUsed[si];
+            //tab order before listbox but after previous buttons.
+            btn.TabOrder := lb.TabOrder;
+            UpdateColorsFor508Compliance(btn);
+            Fcb.Add(btn);
+         end;
+
+            FValidGap := ((FcbX[succ(TSigItemType(0))] - FcbX[TSigItemType(0)] - cbWidth) div 2) + 1;
+            FLastValidX := FcbX[FirstValidItem] - FValidGap;
+            lb.ControlStyle := lb.ControlStyle + [csAcceptsControls];
+            
+            try
+              ht := SigItemHeight;
+              FDy := ((ht - cbHeight) div 2)+1;
+              y := lb.TopIndex;
+              FOldDrawItemEvent := TExposedListBox(lb).OnDrawItem;
+              Flb := lb;
+              TExposedListBox(lb).OnDrawItem := lbDrawItem;
+              lb.FreeNotification(Self);
+
+              for i := 0 to FItems.Count-1 do
+                  begin
+                    s := FItems[i];
+                    orderStatus := (Piece(s,u,1));
+                  if piece(s,u,3) = '1' then
+                     begin
+                       idx := StrToIntDef(piece(s,U,2),-1);
+
+                     if idx >= 0 then
+                     begin
+                        Flags := piece(s,u,4);
+                          //loop thru treatment factors
+                        for sx := low(TSigItemType) to high(TSigItemType) do
+                           begin
+                             si := SigItemDisplayOrder[sx];
+                             StsCode := Flags[ord(si)+1];
+                             StsIdx := isNA;
+
+                           for sts := low(ItemStatus) to high(ItemStatus) do
+                              if StsCode = StsChar[sts] then
+                                 begin
+                                   StsIdx := sts;
+                                   Break;
+                                 end;
+
+                             if (StsIdx <> isNA) then
+                               begin
+                                 cb := CreateCB(lb);
+                                 cb.Left := FcbX[sx];
+                                 cb.Top := (ht * (idx - y)) + FDy;
+                                 cb.Tag := ItemToTag(TagInfo(si, idx));
+                                 cb.ShowHint := TRUE;
+                                 cb.Hint := SigItemDesc[si, sdLong];
+
+                                 //CQ3301/3302
+                                 thisTagInfo := TagToItem(cb.Tag);
+                                 itemText := '';
+                                 thisChangeItem := nil; //init
+
+                                 thisChangeItem := TChangeItem(lb.Items.Objects[thisTagInfo.Index]);
+
+                                 if (thisChangeItem <> nil) then
+                                     begin
+                                        itemText := (FilteredString(lb.Items[thisTagInfo.Index]));
+                                        cb.Caption := itemText + cb.Hint;  //CQ3301/3302 - gives JAWS a caption to read
+                                     end;
+                                 //end CQ3301/3302
+                                  if ( (si = siCombatVeteran) and (StsIdx = isUnKnown) ) then
+                                  begin
+                                     StsIdx := isChecked;
+                                     Flags[7] := 'C';                  // HD200866 default as Combat Related - GWOT mandated Change
+                                     FItems.SetStrPiece(i, 4, Flags);  // HD200866 default as Combat Related - GWOT mandated Change
+                                  end;
+                                 case StsIdx of
+                                   isChecked:   cb.State := cbChecked;
+                                   isUnchecked: cb.State := cbUnchecked;
+                                 else cb.State := cbGrayed;
+                                 end; //case
+
+                               end; //if (StsIdx <> isNA)
+
+                        end; //for sx := low(TSigItemType) to high(TSigItemType)
+
+                     end; // if idx >= 0
+
+                     end; //if piece(s,u,3) = '1'
+
+              end; //for i := 0 to FItems.Count-1
+
+         finally
+           lb.ControlStyle := lb.ControlStyle - [csAcceptsControls];
+         end; //if FStsCount > 0
+    end;
+
+  finally
+    FBuilding := FALSE;
+  end;
+  except
+  on ERangeError do
+  begin
+     ShowMsg('ERangeError in UpdateListBox' + s);
+  raise;
+  end;
+  end;
+end;
+
+procedure TSigItems.cbClicked(Sender: TObject);
+var
+  i,cnt,p: integer;
+  cb: TORCheckBox;
+  sType: TSigItemType;
+  idx, Flags: string;
+  Info: TSigItemTagInfo;
+  wc, w: TWinControl;
+
+begin
+  if FBuilding then exit;
+  wc := TWinControl(Sender);
+  if wc.Tag = AllIdx then
+  begin
+    FAllCatCheck := not FAllCatCheck;
+    for sType := low(TSigItemType) to high(TSigItemType) do
+      FAllCheck[sType] := FAllCatCheck;
+    cnt := 0;
+    for i := 0 to Fcb.Count-1 do
+    begin
+      w := TWinControl(Fcb[i]);
+      if (w <> wc) and (w.Tag >= ColIdx) and (w is TButton) then
+      begin
+        inc(cnt);
+        if w.Enabled then
+          TButton(w).Click;
+        if cnt >= FlagCount then break;
+      end;
+    end;
+  end
+  else
+  if wc.Tag >= ColIdx then
+  begin
+    sType := TSigItemType(wc.Tag - ColIdx);
+    FAllCheck[sType] := not FAllCheck[sType];
+    for i := 0 to Fcb.Count-1 do
+    begin
+      w := TWinControl(Fcb[i]);
+      if (w.Tag < ColIdx) and (w is TORCheckBox) then
+      begin
+        if TagToItem(w.Tag).SigType = sType then
+          TORCheckBox(w).Checked := FAllCheck[sType];
+      end;
+    end;
+  end
+  else
+  begin
+    cb := TORCheckBox(wc);
+    info := TagToItem(cb.Tag);
+    if info.Index >= 0 then
+    begin
+      idx := inttostr(info.Index);
+      i := FItems.IndexOfPiece(idx,U,2);
+      if i >= 0 then
+      begin
+        p := ord(Info.SigType)+1;
+        Flags := piece(FItems[i],U,4);
+        case cb.State of
+          cbUnchecked: Flags[p] := StsChar[isUnchecked];
+          cbChecked:   Flags[p] := StsChar[isChecked];
+          else         Flags[p] := StsChar[isUnknown];
+        end;
+        FItems.SetStrPiece(i,4,Flags);
+        if BILLING_AWARE then
+          UBAGlobals.BAFlagsIN := Flags;
+      end;
+    end;
+  end;
+end;
+
+procedure TSigItems.cbEnter(Sender: TObject);
+var
+  cb: TORCheckBox;
+begin
+  cb := TORCheckBox(Sender);
+  cb.Color := clHighlight;
+  cb.Font.Color := clHighlightText;
+
+  // commented out causing check box states to be out of sync when
+   //checked individually and/or when by column or all.
+  //CQ5074
+  if ( (cb.Focused) and (cb.State = cbGrayed) ) and (not IsAMouseButtonDown) then
+     cb.Checked := false;
+  //end CQ5074
+end;
+
+procedure TSigItems.cbExit(Sender: TObject);
+var
+  cb: TORCheckBox;
+begin
+  cb := TORCheckBox(Sender);
+  cb.Color := clWindow;
+  cb.Font.Color := clWindowText;
+end;
+
+
+procedure TSigItems.lbDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  OldRect: TRect;
+  i: integer;
+  cb: TORCheckBox;
+  si: TSigItemType;
+  DrawGrid: boolean;
+
+begin
+  DrawGrid := (Index < flb.Items.Count);
+  if DrawGrid and (trim(Flb.Items[Index]) = '') and
+                  (Index = (flb.Items.Count - 1)) then
+    DrawGrid := FALSE;
+  if DrawGrid then
+    dec(Rect.Bottom);
+  OldRect := Rect;
+
+  Rect.Right := FlastValidX - 4;
+{Begin BillingAware}
+  if  BILLING_AWARE then Rect.Right := FLastValidX - 55;
+{End BillingAware}
+
+  if assigned(FOldDrawItemEvent) then
+  begin
+    inc(Rect.Bottom);
+    FOldDrawItemEvent(Control, Index, Rect, State);
+    dec(Rect.Bottom);
+  end
+  else
+     begin
+     Flb.Canvas.FillRect(Rect);
+     if Index < flb.Items.Count then
+       Flb.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top, FilteredString(Flb.Items[Index]));
+     end;
+
+  if DrawGrid then
+     begin
+       Flb.Canvas.Pen.Color := Get508CompliantColor(clSilver);
+       Flb.Canvas.MoveTo(Rect.Left, Rect.Bottom);
+       Flb.Canvas.LineTo(OldRect.RIght, Rect.Bottom);
+     end;
+
+  if  BILLING_AWARE then OldRect.Left := Rect.Right + 90
+  else OldRect.Left := Rect.Right;
+
+ //// SC Column
+ ///
+  Flb.Canvas.FillRect(OldRect);
+  for i := 0 to Fcb.Count-1 do
+     begin
+       cb := TORCheckBox(Fcb[i]);
+
+       if TagToItem(cb.Tag).Index = Index then
+          begin
+            cb.Invalidate;
+            cb.Top := Rect.Top + FDy;
+          end;
+     end;
+
+  // EI Columns
+  if DrawGrid then
+  begin
+    for si := low(TSigItemType) to high(TSigItemType) do
+    begin
+      if FcbX[si] > FLastValidX then
+      begin
+        Flb.Canvas.MoveTo(FcbX[si] - FValidGap, Rect.Top);
+        Flb.Canvas.LineTo(FcbX[si] - FValidGap, Rect.Bottom);
+      end;
+    end;
+  end;
+end;
+
+procedure TSigItems.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited;
+  if (AComponent = Flb) and (Operation = opRemove) then
+  begin
+    Fcb.Clear;
+    TExposedListBox(Flb).OnDrawItem := FOldDrawItemEvent;
+    FOldDrawItemEvent := nil;
+    Flb := nil;
+  end;
+end;
+
+procedure TSigItems.EnableSettings(Index: integer; Checked: boolean);
+var
+  cb: TORCheckBox;
+  i: integer;
+  Info: TSigItemTagInfo;
+
+begin
+  if Index < 0 then exit;
+  for i := 0 to Fcb.Count-1 do
+  begin
+    if TObject(Fcb[i]) is TORCheckBox then
+    begin
+      cb := TORCheckBox(Fcb[i]);
+      info := TagToItem(cb.Tag);
+      if info.Index = Index then
+        cb.enabled := Checked;
+    end;
+  end;
+  i := FItems.IndexOfPiece(IntToStr(Index), U, 2);
+  if i >= 0 then
+    FItems.SetStrPiece(i, 5, BoolChar[not Checked]);
+end;
+
+function TSigItems.OK2SaveSettings: boolean;
+var
+  i, Index: integer;
+  s: string;
+
+begin
+  {Begin BillingAware}
+  if BILLING_AWARE then
+     begin
+     if Assigned(UBAGlobals.BAOrderList) then
+        BAOrderList.Clear
+     else
+       begin
+          BAOrderList := TStringList.Create;
+          BAOrderList.Clear;
+       end;
+{End BillingAware}
+  end;
+
+  Result := TRUE;
+  for i := 0 to FItems.Count-1 do
+  begin
+    s := FItems[i];
+    Index := StrToIntDef(piece(s,U,2),-1);
+    if(Index >= 0) and (piece(s,U,5) <> '1') then
+    begin
+      if pos(StsChar[isUnknown], piece(s, U, 4)) > 0 then
+      begin
+        Result := FALSE;
+        break;
+      end{end if}
+      else
+         if BILLING_AWARE then
+            BAOrderList.Add(piece(s,U,1)+ piece(s,U,3) + piece(s,U,4)); //baph1
+    end; {end if}
+  end;{end for}
+end;
+
+procedure TSigItems.SaveSettings;
+var
+  s: string;
+  i, Index: integer;
+  TmpSL: TStringList;
+
+begin
+  TmpSL := TStringList.Create;
+
+  try
+    for i := 0 to FItems.Count-1 do
+    begin
+      s := FItems[i];
+      Index := StrToIntDef(piece(s,U,2),-1);
+      if(Index >= 0) and (piece(s,U,5) <> '1') then
+      begin
+        TmpSL.Add(Piece(s,U,1) + U + piece(s,U,4));
+        FItems.SetStrPiece(i, 6, '1');
+      end;
+    end;
+
+    SaveCoPayStatus(TmpSL);
+
+  finally
+    TmpSL.Free;
+  end;
+  i := 0;
+  while i < FItems.Count do
+  begin
+    if Piece(FItems[i], U, 6) = '1' then
+      FItems.Delete(i)
+    else
+      inc(i);
+  end;
+  Fcb.Clear;
+end;
+
+{ Begin Billing Aware }
+
+procedure TSigItems.DisplayUnsignedStsFlags(sFlags:string);
+var
+   Index: integer;
+   flags : string;
+begin
+   Index := 0;
+   Flags := sFlags;
+   CopyCBValues(Index,Index);
+
+end;
+
+procedure TSigItems.DisplayPlTreatmentFactors;
+var
+ FactorsOut:TStringList;
+ y: integer;
+ Index: integer;
+begin
+     FactorsOut :=  TStringList.Create;
+     FactorsOut.Clear;
+     FactorsOut := UBAGlobals.PLFactorsIndexes;
+     for y := 0 to FactorsOut.Count-1 do
+     begin
+        Index := StrToInt(Piece(FactorsOut.Strings[y],U,1));
+        CopyCBValues(Index,Index);
+     end;
+end;
+
+
+
+procedure TSigItems.CopyCBValues(FromIndex, ToIndex: integer);
+var
+  si: TSigItemType;
+  FromTag, ToTag: integer;
+  FromCB, ToCB: TORCheckBox;
+  x: string;
+begin
+  tempCkBx.GrayedStyle := gsBlueQuestionMark;
+  
+  for si := low(TSigItemType) to high(TSigItemType) do
+     begin
+       FromTag := ItemToTag(TagInfo(si, FromIndex));
+       ToTag := ItemToTag(TagInfo(si, ToIndex));
+       FromCB := FindCBValues(FromTag);
+       ToCB := FindCBValues(ToTag);
+
+       if assigned(FromCB) then // and assigned(ToCB)) then
+          begin
+             tempCkBx.State := cbGrayed;
+             x:= GetTempCkBxState(FromIndex,si);
+             if x = 'C' then tempCkBx.State := cbChecked
+             else if x = 'U' then tempCkBx.State := cbUnChecked ;
+             ToCB.State := tempCkBx.State;// FromCB.State;
+          end;
+       end; //for
+  end;
+
+function TSigItems.FindCBValues(ATag: integer):TORCheckBox;
+var
+  i: integer;
+  wc: TWinControl;
+begin
+  for i := 0 to Fcb.Count-1 do
+  begin
+    wc := TWinControl(Fcb[i]);
+    if(wc is TORCheckBox) and (wc.Tag = ATag) then
+    begin
+      Result := TORCheckBox(wc);
+      Exit;
+     end;
+  end;
+  Result := nil;
+end;
+
+function  TSigItems.GetTempCkBxState(Index: integer; CBValue:TSIGItemType):string;
+var
+ locateIdx,thisIdx,i: integer;
+ iFactor: integer;
+ TmpCBStatus : string;
+begin
+  try
+      locateIdx := Index;
+      iFactor := Ord(CBValue) +1;
+      for i := 0 to  UBAGlobals.BAFlagsOut.count-1 do
+           begin
+                thisIdx := StrToInt(Piece(UBAGlobals.BAFlagsOut.Strings[i],U,1));
+                if thisIdx = locateIdx then
+                begin
+                   TmpCBStatus := Piece(UBAGlobals.BAFlagsOut.Strings[i],U,2);
+                   TmpCBStatus := Copy(TmpCBStatus,iFactor,1);
+                   Result :=TmpCBStatus;
+                end;
+           end;
+  except
+     on EAccessViolation do
+        begin
+        {$ifdef debug}Show508Message('EAccessViolation in uSignItems.GetTempCkBxState()');{$endif}
+        raise;
+        end;
+  end;
+end;
+ { End Billing Aware }
+
+
+initialization
+  FlagCount := ord(high(TSigItemType)) - ord(low(TSigItemType)) + 1;
+  BaseFlags := StringOfChar(StsChar[isNA], FlagCount);
+  thisChangeItem := TChangeItem.Create; //CQ3301/3302
+  AllBtnLeft := 0;
+
+finalization
+  FreeAndNil(uSigItems);
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSpell.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSpell.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSpell.pas	(revision 1676)
@@ -0,0 +1,291 @@
+unit uSpell;
+
+{$O-}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Controls, Forms, ComObj, StdCtrls, ComCtrls,
+  ORSystem, Word2000, ORFn, Variants, rCore, clipbrd;
+
+type
+
+  TSpellCheckAvailable = record
+    Evaluated: boolean;
+    Available: boolean;
+  end;
+
+function  SpellCheckAvailable: Boolean;
+function  SpellCheckInProgress: Boolean;
+procedure KillSpellCheck;
+procedure SpellCheckForControl(AnEditControl: TCustomMemo);
+procedure GrammarCheckForControl(AnEditControl: TCustomMemo);
+
+implementation
+
+const
+  TX_WINDOW_TITLE       = 'CPRS-Chart Spell Checking #';
+  TX_NO_SPELL_CHECK     = 'Spell checking is unavailable.';
+  TX_NO_GRAMMAR_CHECK   = 'Grammar checking is unavailable.';
+  TX_SPELL_COMPLETE     = 'The spelling check is complete.';
+  TX_GRAMMAR_COMPLETE   = 'The grammar check is complete.';
+  TX_SPELL_ABORT        = 'The spelling check terminated abnormally.';
+  TX_GRAMMAR_ABORT      = 'The grammar check terminated abnormally.';
+  TX_SPELL_CANCELLED    = 'Spelling check was cancelled before completion.';
+  TX_GRAMMAR_CANCELLED  = 'Grammar check was cancelled before completion.';
+  TX_NO_DETAILS         = 'No further details are available.';
+  TX_NO_CORRECTIONS     = 'Corrections have NOT been applied.';
+  CR_LF                 = #13#10;
+  SPELL_CHECK           = 'S';
+  GRAMMAR_CHECK         = 'G';
+
+var
+  WindowList: TList;
+  OldList, NewList: TList;
+  MSWord: OleVariant;
+  uSpellCheckAvailable: TSpellCheckAvailable;
+
+function SpellCheckInProgress: boolean;
+begin
+  Result := not VarIsEmpty(MSWord);
+end;
+
+procedure KillSpellCheck;
+begin
+  if SpellCheckInProgress then
+    begin
+      MSWord.Quit(wdDoNotSaveChanges);
+      VarClear(MSWord);
+    end;
+end;
+
+function SpellCheckTitle: string;
+begin
+  Result := TX_WINDOW_TITLE + IntToStr(Application.Handle);
+end;
+
+function GetWindows(Handle: HWND; Info: Pointer): BOOL; stdcall;
+begin
+  Result := True;
+  WindowList.Add(Pointer(Handle));
+end;
+
+procedure GetWindowList(List: TList);
+begin
+  WindowList := List;
+  EnumWindows(@GetWindows, 0);
+end;
+
+procedure BringWordToFront(OldList, NewList: TList);
+var
+  i, NameLen: integer;
+  WinName: array[0..160] of char;
+  NewWinName: PChar;
+  NewName: string;
+
+begin
+  NewName := SpellCheckTitle;
+  NameLen := length(NewName);
+  for i := 0 to NewList.Count-1 do
+  begin
+    if(OldList.IndexOf(NewList[i]) < 0) then
+    begin
+      GetWindowText(HWND(NewList[i]), WinName, sizeof(WinName) - 1);
+      if Pos('CPRS', WinName) > 0 then
+        NewWinName := PChar(Copy(WinName, Pos('CPRS', WinName), sizeof(WinName) - 1))
+      else
+        NewWinName := WinName;
+      if StrLComp(NewWinName, pchar(NewName), NameLen)=0 then
+      begin
+        Application.ProcessMessages;
+        SetForegroundWindow(HWND(NewList[i]));
+        break;
+      end;
+    end;
+  end;
+end;
+
+{ Spell Checking using Visual Basic for Applications script }
+
+function SpellCheckAvailable: Boolean;
+//const
+//  WORD_VBA_CLSID = 'CLSID\{000209FF-0000-0000-C000-000000000046}';
+begin
+// CHANGED FOR PT. SAFETY ISSUE RELEASE 19.16, PATCH OR*3*155 - ADDED NEXT 2 LINES:
+  //result := false;
+  //exit;
+//  Reenabled in version 21.1, via parameter setting  (RV)
+//  Result := (GetUserParam('ORWOR SPELL CHECK ENABLED?') = '1');
+  with uSpellCheckAvailable do        // only want to call this once per session!!!  v23.10+
+    begin
+      if not Evaluated then
+        begin
+          Available := (GetUserParam('ORWOR SPELL CHECK ENABLED?') = '1');
+          Evaluated := True;
+        end;
+      Result := Available;
+    end;
+end;
+
+procedure SpellAndGrammarCheckForControl(var AnotherEditControl: TCustomMemo; ACheck: Char);
+var
+  NoLFText, LFText: string;
+  OneChar: char;
+  ErrMsg: string;
+  FinishedChecking: boolean;
+  OldSaveInterval, i: integer;
+  MsgText: string;
+  FirstLineBlank: boolean;
+  OldLine0: string;
+begin
+  if AnotherEditControl = nil then Exit;
+  OldList := TList.Create;
+  NewList := TList.Create;
+  FinishedChecking := False;
+  FirstLineBlank := False;
+  NoLFText := '';
+  OldLine0 := '';
+  ClipBoard.Clear;
+  try
+    try
+      GetWindowList(OldList);
+      try
+        Screen.Cursor := crHourGlass;
+        MSWord := CreateOLEObject('Word.Application');
+      except   // MSWord not available, so exit now
+        Screen.Cursor := crDefault;
+        case ACheck of
+          SPELL_CHECK  :  MsgText := TX_NO_SPELL_CHECK;
+          GRAMMAR_CHECK:  MsgText := TX_NO_GRAMMAR_CHECK;
+          else            MsgText := ''
+        end;
+        Application.MessageBox(PChar(MsgText), PChar(Application.Title), MB_ICONWARNING);
+        Exit;
+      end;
+
+      GetWindowList(NewList);
+      try
+        MSWord.Application.Caption := SpellCheckTitle;
+        // Position Word off screen to avoid having document visible...
+        MSWord.WindowState := 0;
+        MSWord.Top := -3000;
+        OldSaveInterval := MSWord.Application.Options.SaveInterval;
+        MSWord.Application.Options.SaveInterval := 0;
+        MSWord.Application.Options.AutoFormatReplaceQuotes := False;
+        MSWord.Application.Options.AutoFormatAsYouTypeReplaceQuotes := False;
+        MSWord.ResetIgnoreAll;
+
+        MSWord.Documents.Add;                                              // FileNew
+        MSWord.ActiveDocument.TrackRevisions := False;
+        with AnotherEditControl do
+          if (Lines.Count > 0) and (not ContainsVisibleChar(Lines[0])) then
+            begin
+              FirstLineBlank := True;  //MS bug when spell-checking document with blank first line  (RV - v22.6)
+              OldLine0 := Lines[0];
+              Lines.Delete(0);
+            end;
+        MSWord.ActiveDocument.Content.Text := (AnotherEditControl.Text);   // The Text property returns the plain, unformatted text of the selection or range.
+                                                                           // When you set this property, the text of the range or selection is replaced.
+        BringWordToFront(OldList, NewList);
+        MSWord.ActiveDocument.Content.SpellingChecked := False;
+        MSWord.ActiveDocument.Content.GrammarChecked := False;
+
+        case ACheck of
+          SPELL_CHECK  :  begin
+                            MSWord.ActiveDocument.Content.CheckSpelling;                       // ToolsSpelling
+                            FinishedChecking := MSWord.ActiveDocument.Content.SpellingChecked;
+                          end;
+          GRAMMAR_CHECK:  begin
+                            MSWord.ActiveDocument.Content.CheckGrammar;                       // ToolsGrammar
+                            FinishedChecking := MSWord.ActiveDocument.Content.GrammarChecked;
+                          end;
+        end;
+        if FinishedChecking then    // not cancelled?
+          NoLFText := MSWord.ActiveDocument.Content.Text                   // EditSelectAll
+        else
+          NoLFText := '';
+      finally
+        Screen.Cursor := crDefault;
+        MSWord.Application.Options.SaveInterval := OldSaveInterval;
+        case ACheck of
+          SPELL_CHECK  :  FinishedChecking := MSWord.ActiveDocument.Content.SpellingChecked;
+          GRAMMAR_CHECK:  FinishedChecking := MSWord.ActiveDocument.Content.GrammarChecked;   
+        end;
+        MSWord.Quit(wdDoNotSaveChanges);
+        VarClear(MSWord);
+      end;
+    finally
+      OldList.Free;
+      NewList.Free;
+    end;
+  except
+    on E: Exception do
+      begin
+        ErrMsg := E.Message;
+        FinishedChecking := False;
+      end;
+  end;
+
+  Screen.Cursor := crDefault;
+  Application.BringToFront;
+  if FinishedChecking then
+    begin
+      if (Length(NoLFText) > 0) then
+        begin
+          LFText := '';
+          for i := 1 to Length(NoLFText) do
+          begin
+            OneChar := NoLFText[i];
+            LFText := LFText + OneChar;
+            if OneChar = #13 then LFText := LFText + #10;
+          end;
+          with AnotherEditControl do if Lines.Count > 0 then
+            begin
+              Text := LFText;
+              if FirstLineBlank then Text := OldLine0 + Text;
+            end;
+          case ACheck of
+            SPELL_CHECK  : MsgText := TX_SPELL_COMPLETE;
+            GRAMMAR_CHECK: MsgText := TX_GRAMMAR_COMPLETE;
+            else           MsgText := ''
+          end;
+          Application.MessageBox(PChar(MsgText), PChar(Application.Title), MB_ICONINFORMATION);
+        end
+      else
+        begin
+          case ACheck of
+            SPELL_CHECK  : MsgText := TX_SPELL_CANCELLED;
+            GRAMMAR_CHECK: MsgText := TX_GRAMMAR_CANCELLED;
+            else           MsgText := ''
+          end;
+          Application.MessageBox(PChar(MsgText + CR_LF + CR_LF + TX_NO_CORRECTIONS), PChar(Application.Title), MB_ICONINFORMATION);
+        end;
+    end
+  else   // error during spell or grammar check
+    begin
+      case ACheck of
+        SPELL_CHECK  :  MsgText := TX_SPELL_ABORT;
+        GRAMMAR_CHECK:  MsgText := TX_GRAMMAR_ABORT;
+        else            MsgText := ''
+      end;
+      if ErrMsg = '' then ErrMsg := TX_NO_DETAILS;
+      Application.MessageBox(PChar(MsgText + CR_LF + ErrMsg + CR_LF + CR_LF + TX_NO_CORRECTIONS), PChar(Application.Title), MB_ICONWARNING);
+    end;
+  SendMessage(TRichEdit(AnotherEditControl).Handle, WM_VSCROLL, SB_TOP, 0);
+  AnotherEditControl.SetFocus;
+end;
+
+procedure SpellCheckForControl(AnEditControl: TCustomMemo);
+begin
+  if AnEditControl = nil then Exit;
+  SpellAndGrammarCheckForControl(AnEditControl, SPELL_CHECK);
+end;
+
+procedure GrammarCheckForControl(AnEditControl: TCustomMemo);
+begin
+  if AnEditControl = nil then Exit;
+  SpellAndGrammarCheckForControl(AnEditControl, GRAMMAR_CHECK);
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSurgery.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSurgery.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uSurgery.pas	(revision 1676)
@@ -0,0 +1,114 @@
+unit uSurgery;
+
+interface
+
+uses
+  SysUtils, Windows, Messages, Controls, Classes, StdCtrls, ORfn, dialogs;
+
+type
+  TSurgeryTitles = class
+    ClassName: string;
+    DfltTitle: Integer;
+    DfltTitleName: string;
+    ShortList: TStringList;
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+function  MakeSurgeryCaseDisplayText(InputString: string): string;
+function  MakeSurgeryReportDisplayText(RawText: string): string;
+//procedure DisplayOpTop(ANoteIEN: integer);
+
+const
+(*  SG_ALL        = 1;                             // Case context - all cases
+  SG_BY_SURGEON = 2;                             // Case context - all cases by surgeon
+  SG_BY_DATE    = 3;                             // Case context - all cases by date range*)
+
+  SG_TV_TEXT = 'Surgery Cases';
+
+  OP_TOP_NEVER_SHOW   = 0;
+  OP_TOP_ALWAYS_SHOW  = 1;
+  OP_TOP_ASK_TO_SHOW  = 2;
+
+implementation
+
+uses
+  uConst, rSurgery, fRptBox;
+
+constructor TSurgeryTitles.Create;
+{ creates an object to store Surgery titles so only obtained from server once }
+begin
+  inherited Create;
+  ShortList := TStringList.Create;
+end;
+
+destructor TSurgeryTitles.Destroy;
+{ frees the lists that were used to store the Surgery titles }
+begin
+  ShortList.Free;
+  inherited Destroy;
+end;
+
+function MakeSurgeryCaseDisplayText(InputString: string): string;
+(*
+CASE #^Operative Procedure^Date/Time of Operation^Surgeon^^^^^^^^^+^Context
+*)
+var
+  x: string;
+begin
+  x := InputString;
+  x := FormatFMDateTime('mmm dd yyyy', MakeFMDateTime(Piece(x, U, 3))) + '  ' + Piece(x, U, 2) +
+       ', ' + Piece(Piece(x, U, 4), ';', 2) + ', ' + 'Case #: ' + Piece(x, u, 1);
+  Result := x;
+end;
+
+function MakeSurgeryReportDisplayText(RawText: string): string;
+var
+  x: string;
+begin
+  x := RawText;
+  x := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3))) + '  ' + Piece(x, U, 2) +
+       ' (#' + Piece(x, U, 1) + '), ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2);
+  Result := x;
+end;
+
+(*procedure DisplayOpTop(ANoteIEN: integer);
+const
+{ TODO -oRich V. -cSurgery/TIU : What should be the text of the prompt for display OpTop on signature? }
+  TX_OP_TOP_PROMPT = 'Would you like to first review the OpTop for this surgery report?';
+var
+  AList: TStringList;
+  ACaseIEN: integer;
+  IsNonORProc: boolean;
+  ShouldShowOpTop: integer;
+  x: string;
+  ShowReport: boolean;
+begin
+  AList := TStringList.Create;
+  try
+    ShowReport := False;
+    x := GetSurgCaseRefForNote(ANoteIEN);
+    ACaseIEN := StrToIntDef(Piece(x, ';', 1), 0);
+    ShouldShowOpTop := ShowOpTopOnSignature(ACaseIEN);
+    case ShouldShowOpTop of
+      OP_TOP_NEVER_SHOW   : ; // do nothing
+      OP_TOP_ALWAYS_SHOW  : begin
+                              x := GetSingleCaseListItemWithoutDocs(ANoteIEN);
+                              IsNonORProc := IsNonORProcedure(ACaseIEN);
+                              LoadOpTop(AList, ACaseIEN, IsNonORProc, ShowReport);
+                              ReportBox(AList, MakeSurgeryCaseDisplayText(x), True);
+                            end;
+      OP_TOP_ASK_TO_SHOW  :   if InfoBox(TX_OP_TOP_PROMPT, 'Confirmation', MB_YESNO or MB_ICONQUESTION) = IDYES then
+                                begin
+                                  x := GetSingleCaseListItemWithoutDocs(ANoteIEN);
+                                  IsNonORProc := IsNonORProcedure(ACaseIEN);
+                                  LoadOpTop(AList, ACaseIEN, IsNonORProc, ShowReport);
+                                  ReportBox(AList, MakeSurgeryCaseDisplayText(x), True);
+                                end;
+    end;
+  finally
+    AList.Free;
+  end;
+end;*)
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uTIU.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uTIU.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uTIU.pas	(revision 1676)
@@ -0,0 +1,165 @@
+unit uTIU;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, rCore, uCore, uConst, ORCtrls, ComCtrls, Controls;
+
+type
+
+  TEditNoteRec = record
+    DocType: Integer;
+    IsNewNote: boolean;
+    Title: Integer;
+    TitleName: string;
+    DateTime: TFMDateTime;
+    Author: Int64;
+    AuthorName: string;
+    Cosigner: Int64;
+    CosignerName: string;
+    Subject: string;
+    Location: Integer;
+    LocationName: string;
+    VisitDate: TFMDateTime;
+    PkgRef: string;      // 'IEN;GMR(123,' or 'IEN;SRF('
+    PkgIEN: integer;     // file IEN
+    PkgPtr: string;      // 'GMR(123,' or 'SRF(' 
+    NeedCPT: Boolean;
+    Addend: Integer;
+    LastCosigner: Int64;
+    LastCosignerName: string;
+    IDParent: integer;
+    ClinProcSummCode: integer;
+    ClinProcDateTime: TFMDateTime;
+    Lines: TStrings;
+    PRF_IEN: integer;
+    ActionIEN: string;
+  end;
+
+  TNoteRec = TEditNoteRec;
+
+  TActionRec = record
+    Success: Boolean;
+    Reason: string;
+  end;
+
+  TCreatedDoc = record
+    IEN: Integer;
+    ErrorText: string;
+  end;
+
+  TTIUContext = record
+    Changed: Boolean;
+    BeginDate: string;
+    EndDate: string;
+    FMBeginDate: TFMDateTime;
+    FMEndDate: TFMDateTime;
+    Status: string;
+    Author: int64;
+    MaxDocs: integer;
+    ShowSubject: Boolean;
+    SortBy: string;
+    ListAscending: Boolean;
+    GroupBy: string;
+    TreeAscending: Boolean;
+    SearchField: string;
+    KeyWord: string;
+    Filtered: Boolean;
+    SearchString: String;  // Text Search CQ: HDS00002856
+  end ;
+
+  TNoteTitles = class
+    DfltTitle: Integer;
+    DfltTitleName: string;
+    ShortList: TStringList;
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+  TTIUPrefs = class
+    DfltLoc: Integer;
+    DfltLocName: string;
+    SortAscending: Boolean;
+    SortBy: string;    // D,R,S,A
+    AskNoteSubject: Boolean;
+    AskCosigner: Boolean;
+    DfltCosigner: Int64;
+    DfltCosignerName: string;
+    MaxNotes: Integer;
+  end;
+
+//  notes tab specific procedures
+function MakeNoteDisplayText(RawText: string): string;
+function MakeConsultDisplayText(RawText:string): string;
+function SetLinesTo74ForSave(AStrings: TStrings; AParent: TWinControl): TStrings;
+
+const
+  TX_SAVE_ERROR1 = 'An error was encountered while trying to save the note you are editing.' + CRLF + CRLF + '    Error:  ';
+  TX_SAVE_ERROR2 = CRLF + CRLF + 'Please try again now using CTRL-SHIFT-S, or ''Save without signature''.' + CRLF +
+                   'These actions will improve the likelihood that no text will be lost.' + CRLF + CRLF +
+                   'If problems continue, or network connectivity is lost, please copy all of your text to' + CRLF +
+                   'the clipboard and paste it into Microsoft Word before continuing or before closing CPRS.';
+  TC_SAVE_ERROR =  'Error saving note text';
+
+implementation
+
+function MakeConsultDisplayText(RawText:string): string;
+var
+ x: string;
+begin
+   x := RawText;
+   Result := Piece(x, U, 2) + ',' + Piece(x, U, 3) + ',' +
+             Piece(x, U, 4) + ', '+ Piece(x, U, 5);
+
+end;
+
+function MakeNoteDisplayText(RawText: string): string;
+var
+  x: string;
+begin
+  x := RawText;
+  if Piece(x, U, 1) = '' then
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3))) + '  ' +
+        Piece(x, U, 2) + ', ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2)
+  else if Piece(x, U, 1)[1] in ['A', 'N', 'E'] then
+    Result := Piece(x, U, 2)
+  else
+    Result := FormatFMDateTime('mmm dd,yy', MakeFMDateTime(Piece(x, U, 3))) + '  ' +
+              Piece(x, U, 2) + ', ' + Piece(x, U, 6) + ', ' + Piece(Piece(x, U, 5), ';', 2);
+end;
+
+
+{ Progress Note Titles  -------------------------------------------------------------------- }
+constructor TNoteTitles.Create;
+{ creates an object to store progress note titles so only obtained from server once }
+begin
+  inherited Create;
+  ShortList := TStringList.Create;
+end;
+
+destructor TNoteTitles.Destroy;
+{ frees the lists that were used to store the progress note titles }
+begin
+  ShortList.Free;
+  inherited Destroy;
+end;
+
+function SetLinesTo74ForSave(AStrings: TStrings; AParent: TWinControl): TStrings;
+var
+  ARichEdit74: TRichEdit;
+begin
+  Result := AStrings;
+  ARichEdit74 := TRichEdit.Create(AParent);
+  try
+    with ARichEdit74 do
+      begin
+        Parent := AParent;
+        Lines.Text := AStrings.Text;
+        Width := 525;
+        QuickCopy(ARichEdit74, Result);
+      end;
+  finally
+    ARichEdit74.Free;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Chart/uVA508CPRSCompatibility.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Chart/uVA508CPRSCompatibility.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Chart/uVA508CPRSCompatibility.pas	(revision 1676)
@@ -0,0 +1,554 @@
+unit uVA508CPRSCompatibility;
+
+interface
+
+uses
+  SysUtils, Windows, Classes, Controls, Forms, StdCtrls;
+
+procedure QuickCopyWith508Msg(AFrom, ATo: TObject; docType: string = '');
+procedure QuickAddWith508Msg(AFrom, ATo: TObject; docType: string = '');
+procedure FastAssignWith508Msg(source, destination: TStrings; docType: string = '');
+
+procedure SpeakTextInserted(docType: string = '');
+function GetTabText: string;
+procedure SpeakPatient;
+procedure SpeakTabAndPatient;
+
+implementation
+
+uses VA508AccessibilityRouter, VA508AccessibilityManager, ORFn, uDlgComponents,
+  VA508DelphiCompatibility, ORCtrls, fReminderDialog, fTemplateDialog, fFrame,
+  uCore, ORCtrlsVA508Compatibility, mTemplateFieldButton, VA508AccessibilityConst;
+
+type
+  TCPRSParentDialogCheckBox508Manager = class(TORCheckBox508Manager)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+  TCPRSBaseDialogComponent508Manager = class(TVA508ManagedComponentClass)
+  public
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+{  TCPRSDialogStaticLabel508Manager = class(TVA508StaticTextManager)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+  }
+
+  TCPRSDialogEdit508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+  end;
+
+  TCPRSDialogFieldComboBox508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+  end;
+
+  TCPRSDialogDateBox508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+  end;
+
+  TCPRSDialogCheckBox508Manager = class(TORCheckBox508Manager)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+  TCPRSDialogRichEdit508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+  end;
+
+  TCPRSDialogLabel508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+  end;
+
+  TCPRSDialogHyperlink508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+  end;
+
+  TCPRSDialogNumberComplexManager = class(TVA508ComplexComponentManager)
+  public
+    constructor Create;
+    procedure Refresh(Component: TWinControl;
+                      AccessibilityManager: TVA508AccessibilityManager); override;
+  end;
+
+  TCPRSDialogYearEdit508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function Redirect(Component: TWinControl; var ManagedType: TManagedType): TWinControl; override;
+  end;
+
+  TCPRSNumberField508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+  TCPRSDialogDateCombo508Manager = class(TCPRSBaseDialogComponent508Manager)
+  public
+    constructor Create; override;
+  end;
+
+  TfraTemplateFieldButtonComplexManager = class(TVA508ComplexComponentManager)
+  public
+    constructor Create;
+    procedure Refresh(Component: TWinControl;
+                      AccessibilityManager: TVA508AccessibilityManager); override;
+  end;
+
+  TfraTemplateFieldButton508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+    function GetCaption(Component: TWinControl): string; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+  end;
+
+  TMentalHealthMemo508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+  end;
+
+procedure SpeakTextInserted(docType: string = '');
+begin
+  if docType = '' then
+    GetScreenReader.Speak('text inserted')
+  else
+    GetScreenReader.Speak('text inserted in to ' + docType);
+end;
+
+procedure QuickCopyWith508Msg(AFrom, ATo: TObject; docType: string = '');
+begin
+  QuickCopy(AFrom, ATo);
+  if (AFrom is TStrings) and (TStrings(AFrom).Count > 0) then
+    SpeakTextInserted(docType);
+end;
+
+procedure QuickAddWith508Msg(AFrom, ATo: TObject; docType: string = '');
+begin
+  QuickAdd(AFrom, ATo);
+  if (AFrom is TStrings) and (TStrings(AFrom).Count > 0) then
+    SpeakTextInserted(docType);
+end;
+
+procedure FastAssignWith508Msg(source, destination: TStrings; docType: string = '');
+begin
+  FastAssign(source, destination);
+  if source.Count > 0 then
+    SpeakTextInserted(docType);
+end;
+
+procedure ControlShiftTOverride; forward;
+procedure ControlTabOverride; forward;
+procedure ControlShiftTabOverride; forward;
+
+type
+  TVA508RegistrationScreenReader = class(TVA508ScreenReader);
+
+procedure Register508CompatibilityChanges;
+begin
+  with GetScreenReader do
+  begin
+    RegisterDictionaryChange('<unknown>','unknown');
+    RegisterDictionaryChange('VistA','Vist a');
+    RegisterDictionaryChange('VA','V A');
+    RegisterDictionaryChange('VHA','V H A');
+    RegisterDictionaryChange('HealtheVet','Health E Vet');
+  end;
+  RegisterManagedComponentClass(TCPRSParentDialogCheckBox508Manager.Create);
+//  RegisterManagedComponentClass(TCPRSDialogStaticLabel508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogEdit508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogFieldComboBox508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogCheckBox508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogRichEdit508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogLabel508Manager.Create);
+  RegisterManagedComponentClass(TCPRSNumberField508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogHyperlink508Manager.Create);
+  RegisterManagedComponentClass(TfraTemplateFieldButton508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogDateBox508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogDateCombo508Manager.Create);
+  RegisterManagedComponentClass(TCPRSDialogYearEdit508Manager.Create);
+  RegisterManagedComponentClass(TMentalHealthMemo508Manager.Create);
+  
+  RegisterComplexComponentManager(TCPRSDialogNumberComplexManager.Create);
+
+  GetScreenReader.RegisterCustomKeyMapping('Control+Tab', ControlTabOverride,
+                'Advances to the next tab in a tab control',
+                'advances to the next tab in a tab control, when you are inside a control with tabs');
+  GetScreenReader.RegisterCustomKeyMapping('Control+Shift+Tab', ControlShiftTabOverride,
+                'Advances to the previous tab in a tab control',
+                'advances to the previous tab in a tab control, when you are inside a control with tabs');
+  GetScreenReader.RegisterCustomKeyMapping('Control+Shift+T', ControlShiftTOverride,
+                'Announces Chart Tab and Patient Name',
+                'Announces the current CPRS Chart tab and the current patient');
+
+  with TVA508RegistrationScreenReader(GetScreenReader) do
+  begin
+    RegisterCustomClassBehavior(TCPRSDialogParentCheckBox.ClassName, CLASS_BEHAVIOR_CHECK_BOX);
+    RegisterCustomClassBehavior(TCPRSDialogCheckBox.ClassName, CLASS_BEHAVIOR_CHECK_BOX);
+    RegisterCustomClassBehavior(TCPRSDialogRichEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TCPRSDialogFieldEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TCPRSDialogComboBox.ClassName, CLASS_BEHAVIOR_EDIT_COMBO);
+    RegisterCustomClassBehavior(TCPRSDialogButton.ClassName, CLASS_BEHAVIOR_BUTTON);
+    RegisterCustomClassBehavior(TCPRSDialogDateBox.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TCPRSDialogNumber.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TCPRSNumberField.ClassName, CLASS_BEHAVIOR_EDIT);
+  end;
+
+end;
+
+{ TCPRSDialogCheckBox }
+
+constructor TCPRSParentDialogCheckBox508Manager.Create;
+begin
+  inherited Create(TCPRSDialogParentCheckBox, [mtCaption, mtComponentName, mtInstructions, mtState, mtStateChange]);
+end;
+
+function TCPRSParentDialogCheckBox508Manager.GetCaption(Component: TWinControl): string;
+begin
+  Result := TCPRSDialogParentCheckBox(Component).AccessText;
+end;
+
+type
+  ExposedControl = class(TWinControl);
+
+// CQ #14984
+procedure ControlTabOverride;
+begin
+  if assigned(Screen.ActiveControl) and (Screen.ActiveControl is TCustomMemo) then
+    ExposedControl(Screen.FocusedForm).SelectNext(Screen.ActiveControl, TRUE, TRUE)
+  else
+  begin
+    keybd_event(VK_TAB, 0, 0, VK_CONTROL);
+    keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, VK_CONTROL);
+  end;
+end;
+
+procedure ControlShiftTabOverride;
+begin
+  if assigned(Screen.ActiveControl) and (Screen.ActiveControl is TCustomMemo) then
+    ExposedControl(Screen.FocusedForm).SelectNext(Screen.ActiveControl, FALSE, TRUE)
+  else
+  begin
+    keybd_event(VK_TAB, 0, 0, (VK_SHIFT * 256) + VK_CONTROL);
+    keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, (VK_SHIFT * 256) + VK_CONTROL);
+  end;
+end;
+
+procedure ControlShiftTOverride;
+begin
+  SpeakTabAndPatient;
+end;
+
+function GetTabText: string;
+var
+  idx: integer;
+begin
+  Result := '';
+  if assigned(frmFrame) and assigned(frmFrame.tabPage) then
+  begin
+    idx := frmFrame.tabPage.TabIndex;
+    if (idx >= 0) and (idx < uTabList.Count) then
+    begin
+      Result := frmFrame.tabPage.Tabs[idx];
+      if Result = 'D/C Summ' then
+        Result := 'Discharge Summary';
+    end;
+  end;
+end;
+
+procedure SpeakPatient;
+begin
+  if assigned(Patient) and (Patient.Name <> '') then
+    GetScreenReader.Speak(Patient.Name);
+end;
+
+procedure SpeakTabAndPatient;
+var
+  text: string;
+begin
+  text := GetTabText;
+  if text <> '' then
+    text := text + ' tab';
+  if text <> '' then
+    text := text + ', ';
+  if assigned(Patient) and (Patient.Name <> '') then
+    text := text + Patient.Name
+  else
+    text := text + 'no patient selected';
+  if text <> '' then
+    GetScreenReader.Speak(text);
+end;
+
+{ TCPRSDialogComponent508Manager }
+
+function TCPRSBaseDialogComponent508Manager.GetCaption(
+  Component: TWinControl): string;
+begin
+  if Supports(Component, ICPRSDialogComponent) then
+  begin
+    Result := (Component as ICPRSDialogComponent).AccessText;
+  end
+  else
+    Result := '';
+end;
+
+(*
+{ TCPRSDialogStaticLabel508Manager }
+
+constructor TCPRSDialogStaticLabel508Manager.Create;
+begin
+  inherited Create(TCPRSDialogStaticLabel, [mtCaption]);
+end;
+
+function TCPRSDialogStaticLabel508Manager.GetCaption(
+  Component: TWinControl): string;
+var
+  txt: string;
+begin
+  if Supports(Component, ICPRSDialogComponent) then
+  begin
+    Result := (Component as ICPRSDialogComponent).AccessText;
+  end
+  else
+    Result := '';
+  txt := inherited GetCaption(Component);
+  if txt <> '' then
+  begin
+    if Result <> '' then
+      Result := Result + ' ';
+    Result := Result + txt;
+  end;
+end;
+*)
+
+{ TCPRSTemplateFieldEdit508Manager }
+
+constructor TCPRSDialogEdit508Manager.Create;
+begin
+  inherited Create(TCPRSDialogFieldEdit, [mtCaption]);
+end;
+
+{ TCPRSTemplateFieldComboBox508Manager }
+
+constructor TCPRSDialogFieldComboBox508Manager.Create;
+begin
+  inherited Create(TCPRSDialogComboBox, [mtCaption]);
+end;
+
+{ TCPRSTemplateFieldCheckBox508Manager }
+
+constructor TCPRSDialogCheckBox508Manager.Create;
+begin
+  inherited Create(TCPRSDialogCheckBox, [mtCaption, mtComponentName, mtInstructions, mtState, mtStateChange]);
+end;
+
+function TCPRSDialogCheckBox508Manager.GetCaption(
+  Component: TWinControl): string;
+begin
+  if Supports(Component, ICPRSDialogComponent) then
+  begin
+    Result := (Component as ICPRSDialogComponent).AccessText;
+  end
+  else
+    Result := '';
+  Result := Result + ' ' + TCheckBox(Component).Caption;
+end;
+
+{ TCPRSTemplateFieldRichEdit508Manager }
+
+constructor TCPRSDialogRichEdit508Manager.Create;
+begin
+  inherited Create(TCPRSDialogRichEdit, [mtCaption]);
+end;
+
+{ TCPRSTemplateFieldDateCombo508Manager }
+
+constructor TCPRSDialogLabel508Manager.Create;
+begin
+  inherited Create(TCPRSTemplateFieldLabel, [mtCaption, mtValue]);
+end;
+
+function TCPRSDialogLabel508Manager.GetValue(
+  Component: TWinControl): string;
+begin
+  Result := TCPRSTemplateFieldLabel(Component).Caption;
+end;
+
+{ TCPRSTemplateFieldWebLabel508Manager }
+
+constructor TCPRSDialogHyperlink508Manager.Create;
+begin
+  inherited Create(TCPRSDialogHyperlinkLabel, [mtCaption, mtValue, mtInstructions]);
+end;
+
+function TCPRSDialogHyperlink508Manager.GetInstructions(
+  Component: TWinControl): string;
+begin
+  Result := 'To activate press space bar';
+end;
+
+function TCPRSDialogHyperlink508Manager.GetValue(
+  Component: TWinControl): string;
+begin
+  Result := TCPRSDialogHyperlinkLabel(Component).Caption;
+end;
+
+{ TCPRSTemplateFieldNumberComplexManager }
+
+constructor TCPRSDialogNumberComplexManager.Create;
+begin
+  inherited Create(TCPRSDialogNumber);
+end;
+
+procedure TCPRSDialogNumberComplexManager.Refresh(Component: TWinControl;
+  AccessibilityManager: TVA508AccessibilityManager);
+begin
+  with TCPRSDialogNumber(Component) do
+  begin
+    ClearSubControls(Component);
+    if assigned(Edit) then
+      AddSubControl(Component, Edit, AccessibilityManager);
+  end;
+end;
+
+{ TCPRSNumberField508Manager }
+
+constructor TCPRSNumberField508Manager.Create;
+begin
+  inherited Create(TCPRSNumberField, [mtCaption]);
+end;
+
+function TCPRSNumberField508Manager.GetCaption(Component: TWinControl): string;
+begin
+  if assigned(Component.Owner) and Supports(Component.Owner, ICPRSDialogComponent) then
+  begin
+    Result := (Component.Owner as ICPRSDialogComponent).AccessText;
+  end
+  else
+    Result := '';
+end;
+
+{ TfraTemplateFieldButtonComplexManager }
+
+constructor TfraTemplateFieldButtonComplexManager.Create;
+begin
+  inherited Create(TfraTemplateFieldButton);
+end;
+
+procedure TfraTemplateFieldButtonComplexManager.Refresh(Component: TWinControl;
+  AccessibilityManager: TVA508AccessibilityManager);
+begin
+  with TfraTemplateFieldButton(Component) do
+  begin
+    ClearSubControls(Component);
+    AddSubControl(Component, pnlBtn, AccessibilityManager);
+  end;
+end;
+
+{ TfraTemplateFieldButton508Manager }
+
+constructor TfraTemplateFieldButton508Manager.Create;
+begin
+  inherited Create(TfraTemplateFieldButton, [mtComponentName, mtCaption, mtInstructions, mtValue]);
+end;
+
+function TfraTemplateFieldButton508Manager.GetCaption(
+  Component: TWinControl): string;
+begin
+  if assigned(Component) and Supports(Component, ICPRSDialogComponent) then
+  begin
+    Result := (Component as ICPRSDialogComponent).AccessText;
+  end
+  else
+    Result := '';
+end;
+
+function TfraTemplateFieldButton508Manager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := 'multi value button';
+end;
+
+function TfraTemplateFieldButton508Manager.GetInstructions(
+  Component: TWinControl): string;
+begin
+  Result := 'to cycle through values press space bar';
+end;
+
+function TfraTemplateFieldButton508Manager.GetValue(
+  Component: TWinControl): string;
+begin
+  Result := TfraTemplateFieldButton(Component).ButtonText;
+  if Trim(Result) = '' then
+    Result := 'blank';
+end;
+
+{ TCPRSTemplateFieldDateBox508Manager }
+
+constructor TCPRSDialogDateBox508Manager.Create;
+begin
+  inherited Create(TCPRSDialogDateBox, [mtCaption]);
+end;
+
+{ TCPRSDialogYearEdit508Manager }
+
+constructor TCPRSDialogYearEdit508Manager.Create;
+begin
+  inherited Create(TCPRSDialogYearEdit, [mtComponentRedirect]);
+end;
+
+function TCPRSDialogYearEdit508Manager.Redirect(Component: TWinControl;
+  var ManagedType: TManagedType): TWinControl;
+begin
+  ManagedType := mtCaption;
+  Result := TWinControl(Component.Owner);
+end;
+
+{ TCPRSDialogDateCombo508Manager }
+
+constructor TCPRSDialogDateCombo508Manager.Create;
+begin
+  inherited Create(TCPRSDialogDateCombo, [mtCaption]);
+end;
+
+{ TMentalHealthMemo508Manager }
+
+constructor TMentalHealthMemo508Manager.Create;
+begin
+  inherited Create(TMentalHealthMemo, [mtComponentName, mtInstructions]);
+end;
+
+function TMentalHealthMemo508Manager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := ' ';
+end;
+
+function TMentalHealthMemo508Manager.GetInstructions(
+  Component: TWinControl): string;
+begin
+  Result := ' ';
+end;
+
+initialization
+  Register508CompatibilityChanges;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.cfg	(revision 1676)
@@ -0,0 +1,42 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J+
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q+
+-$R+
+-$S-
+-$T-
+-$U-
+-$V+
+-$W+
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-N"..\CPRS-Lib\DCU"
+-LE"..\Packages"
+-LN"..\Packages"
+-U"..\CPRS-Lib;..\Packages"
+-O"..\CPRS-Lib;..\Packages"
+-I"..\CPRS-Lib;..\Packages"
+-R"..\CPRS-Lib;..\Packages"
+-Z
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.dof	(revision 1676)
@@ -0,0 +1,135 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=1
+R=1
+S=0
+T=0
+U=0
+V=1
+W=1
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=Components downloaded from Borland's Web Page
+[Directories]
+OutputDir=
+UnitOutputDir=..\CPRS-Lib\DCU
+PackageDLLOutputDir=..\Packages
+PackageDCPOutputDir=..\Packages
+SearchPath=..\CPRS-Lib;..\Packages
+Packages=Vcl40;Vclx40;Vcldb40;vcldbx40;VclSmp40;Qrpt40;TeeUI40;teedb40;tee40;ibevnt40;nmfast40;VistABroker
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=10
+Build=11
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.10.11
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=Revision C, fix error where entering longer lines caused hang
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=10
+Item0=..\cprs-lib;..\Packages
+Item1=..\cprs-lib;..\Packages;..\cprs-chart;..\cprs-chart\dcu
+Item2=d:\vista\main\cprs-lib;d:\vista\main\Packages
+Item3=d:\vista\main\cprs-lib;d:\program files\vista\broker\bdk32\d5
+Item4=d:\vista\main\cprs-chart;d:\vista\main\cprs-lib;d:\vista\main\cprs-chart\encounter;d:\vista\main\cprs-chart\consults
+Item5=d:\vista\main\cprs-lib
+Item6=\Dev\CPRS\main\CPRS-Lib
+Item7=C:\Dev\CPRS\main\CPRS-Lib
+Item8=\Projects\Perforce\main\CPRS-Lib
+Item9=$(DELPHI)\Projects\Current\CPRS-Lib
+[HistoryLists\hlUnitOutputDirectory]
+Count=9
+Item0=..\CPRS-Lib\DCU
+Item1=..\CPRS_Lib\DCU
+Item2=d:\vista\main\cprs-lib\DCU
+Item3=d:\vista\main\cprs-lib\DCUSave
+Item4=d:\vista\main\cprs-chart\dcu
+Item5=\Dev\DCUSave
+Item6=C:\Dev\DCUSave
+Item7=\Projects\DCUSave
+Item8=$(DELPHI)\Projects\DCUSave
+[HistoryLists\hlOutputDirectorry]
+Count=2
+Item0=$(DELPHI)\dev\exesave
+Item1=d:\vista\main\cprs-chart
+[HistoryLists\hlBPLOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
+[HistoryLists\hlDCPOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland.dpk	(revision 1676)
@@ -0,0 +1,35 @@
+package Borland;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'Components downloaded from Borland''s Web Page'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+  vcl;
+
+contains
+  MenuBar in 'Menubar.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland2006.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland2006.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland2006.dpk	(revision 1676)
@@ -0,0 +1,35 @@
+package Borland2006;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'Components downloaded from Borland''s Web Page'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+  vcl;
+
+contains
+  Menubar in 'Menubar.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland2006.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland2006.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/Borland2006.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER180
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/MSXML_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/MSXML_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/MSXML_TLB.pas	(revision 1676)
@@ -0,0 +1,3546 @@
+unit MSXML_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : $Revision:   1.88.1.0.1.0  $
+// File generated on 11/14/2000 5:05:14 PM from Type Library described below.
+
+// *************************************************************************//
+// NOTE:                                                                      
+// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
+// which return objects that may need to be explicitly created via a function 
+// call prior to any access via the property. These items have been disabled  
+// in order to prevent accidental use from within the object inspector. You   
+// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
+// removing them from the $IFDEF blocks. However, such items must still be    
+// programmatically created via a method of the appropriate CoClass before    
+// they can be used.                                                          
+// ************************************************************************ //
+// Type Lib: C:\WINNT\System32\msxml.dll (1)
+// IID\LCID: {D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}\0
+// Helpfile: 
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINNT\System32\STDOLE2.TLB)
+//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
+// Errors:
+//   Hint: Parameter 'type' of IXMLDOMNode.nodeType changed to 'type_'
+//   Hint: Member 'implementation' of 'IXMLDOMDocument' changed to 'implementation_'
+//   Hint: Parameter 'type' of IXMLDOMDocument.createNode changed to 'type_'
+//   Hint: Member 'type' of 'IXMLElement' changed to 'type_'
+//   Hint: Member 'type' of 'IXMLElement2' changed to 'type_'
+//   Error creating palette bitmap of (TDOMDocument) : No Server registered for this CoClass
+//   Error creating palette bitmap of (TDOMFreeThreadedDocument) : No Server registered for this CoClass
+//   Error creating palette bitmap of (TXMLHTTPRequest) : No Server registered for this CoClass
+//   Error creating palette bitmap of (TXMLDSOControl) : No Server registered for this CoClass
+//   Error creating palette bitmap of (TXMLDocument) : No Server registered for this CoClass
+// ************************************************************************ //
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+interface
+
+uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  MSXMLMajorVersion = 2;
+  MSXMLMinorVersion = 0;
+
+  LIBID_MSXML: TGUID = '{D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}';
+
+  IID_IXMLDOMImplementation: TGUID = '{2933BF8F-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMNode: TGUID = '{2933BF80-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMNodeList: TGUID = '{2933BF82-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMNamedNodeMap: TGUID = '{2933BF83-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMDocument: TGUID = '{2933BF81-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMDocumentType: TGUID = '{2933BF8B-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMElement: TGUID = '{2933BF86-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMAttribute: TGUID = '{2933BF85-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMDocumentFragment: TGUID = '{3EFAA413-272F-11D2-836F-0000F87A7782}';
+  IID_IXMLDOMCharacterData: TGUID = '{2933BF84-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMText: TGUID = '{2933BF87-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMComment: TGUID = '{2933BF88-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMCDATASection: TGUID = '{2933BF8A-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMProcessingInstruction: TGUID = '{2933BF89-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMEntityReference: TGUID = '{2933BF8E-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMParseError: TGUID = '{3EFAA426-272F-11D2-836F-0000F87A7782}';
+  IID_IXMLDOMNotation: TGUID = '{2933BF8C-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLDOMEntity: TGUID = '{2933BF8D-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXTLRuntime: TGUID = '{3EFAA425-272F-11D2-836F-0000F87A7782}';
+  DIID_XMLDOMDocumentEvents: TGUID = '{3EFAA427-272F-11D2-836F-0000F87A7782}';
+  CLASS_DOMDocument: TGUID = '{2933BF90-7B36-11D2-B20E-00C04F983E60}';
+  CLASS_DOMFreeThreadedDocument: TGUID = '{2933BF91-7B36-11D2-B20E-00C04F983E60}';
+  IID_IXMLHttpRequest: TGUID = '{ED8C108D-4349-11D2-91A4-00C04F7969E8}';
+  CLASS_XMLHTTPRequest: TGUID = '{ED8C108E-4349-11D2-91A4-00C04F7969E8}';
+  IID_IXMLDSOControl: TGUID = '{310AFA62-0575-11D2-9CA9-0060B0EC3D39}';
+  CLASS_XMLDSOControl: TGUID = '{550DDA30-0541-11D2-9CA9-0060B0EC3D39}';
+  IID_IXMLElementCollection: TGUID = '{65725580-9B5D-11D0-9BFE-00C04FC99C8E}';
+  IID_IXMLDocument: TGUID = '{F52E2B61-18A1-11D1-B105-00805F49916B}';
+  IID_IXMLElement: TGUID = '{3F7F31AC-E15F-11D0-9C25-00C04FC99C8E}';
+  IID_IXMLDocument2: TGUID = '{2B8DE2FE-8D2D-11D1-B2FC-00C04FD915A9}';
+  IID_IXMLElement2: TGUID = '{2B8DE2FF-8D2D-11D1-B2FC-00C04FD915A9}';
+  IID_IXMLAttribute: TGUID = '{D4D4A0FC-3B73-11D1-B2B4-00C04FB92596}';
+  IID_IXMLError: TGUID = '{948C5AD3-C58D-11D0-9C0B-00C04FC99C8E}';
+  CLASS_XMLDocument: TGUID = '{CFC399AF-D876-11D0-9C10-00C04FC99C8E}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum tagDOMNodeType
+type
+  tagDOMNodeType = TOleEnum;
+const
+  NODE_INVALID = $00000000;
+  NODE_ELEMENT = $00000001;
+  NODE_ATTRIBUTE = $00000002;
+  NODE_TEXT = $00000003;
+  NODE_CDATA_SECTION = $00000004;
+  NODE_ENTITY_REFERENCE = $00000005;
+  NODE_ENTITY = $00000006;
+  NODE_PROCESSING_INSTRUCTION = $00000007;
+  NODE_COMMENT = $00000008;
+  NODE_DOCUMENT = $00000009;
+  NODE_DOCUMENT_TYPE = $0000000A;
+  NODE_DOCUMENT_FRAGMENT = $0000000B;
+  NODE_NOTATION = $0000000C;
+
+// Constants for enum tagXMLEMEM_TYPE
+type
+  tagXMLEMEM_TYPE = TOleEnum;
+const
+  XMLELEMTYPE_ELEMENT = $00000000;
+  XMLELEMTYPE_TEXT = $00000001;
+  XMLELEMTYPE_COMMENT = $00000002;
+  XMLELEMTYPE_DOCUMENT = $00000003;
+  XMLELEMTYPE_DTD = $00000004;
+  XMLELEMTYPE_PI = $00000005;
+  XMLELEMTYPE_OTHER = $00000006;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  IXMLDOMImplementation = interface;
+  IXMLDOMImplementationDisp = dispinterface;
+  IXMLDOMNode = interface;
+  IXMLDOMNodeDisp = dispinterface;
+  IXMLDOMNodeList = interface;
+  IXMLDOMNodeListDisp = dispinterface;
+  IXMLDOMNamedNodeMap = interface;
+  IXMLDOMNamedNodeMapDisp = dispinterface;
+  IXMLDOMDocument = interface;
+  IXMLDOMDocumentDisp = dispinterface;
+  IXMLDOMDocumentType = interface;
+  IXMLDOMDocumentTypeDisp = dispinterface;
+  IXMLDOMElement = interface;
+  IXMLDOMElementDisp = dispinterface;
+  IXMLDOMAttribute = interface;
+  IXMLDOMAttributeDisp = dispinterface;
+  IXMLDOMDocumentFragment = interface;
+  IXMLDOMDocumentFragmentDisp = dispinterface;
+  IXMLDOMCharacterData = interface;
+  IXMLDOMCharacterDataDisp = dispinterface;
+  IXMLDOMText = interface;
+  IXMLDOMTextDisp = dispinterface;
+  IXMLDOMComment = interface;
+  IXMLDOMCommentDisp = dispinterface;
+  IXMLDOMCDATASection = interface;
+  IXMLDOMCDATASectionDisp = dispinterface;
+  IXMLDOMProcessingInstruction = interface;
+  IXMLDOMProcessingInstructionDisp = dispinterface;
+  IXMLDOMEntityReference = interface;
+  IXMLDOMEntityReferenceDisp = dispinterface;
+  IXMLDOMParseError = interface;
+  IXMLDOMParseErrorDisp = dispinterface;
+  IXMLDOMNotation = interface;
+  IXMLDOMNotationDisp = dispinterface;
+  IXMLDOMEntity = interface;
+  IXMLDOMEntityDisp = dispinterface;
+  IXTLRuntime = interface;
+  IXTLRuntimeDisp = dispinterface;
+  XMLDOMDocumentEvents = dispinterface;
+  IXMLHttpRequest = interface;
+  IXMLHttpRequestDisp = dispinterface;
+  IXMLDSOControl = interface;
+  IXMLDSOControlDisp = dispinterface;
+  IXMLElementCollection = interface;
+  IXMLElementCollectionDisp = dispinterface;
+  IXMLDocument = interface;
+  IXMLDocumentDisp = dispinterface;
+  IXMLElement = interface;
+  IXMLElementDisp = dispinterface;
+  IXMLDocument2 = interface;
+  IXMLElement2 = interface;
+  IXMLElement2Disp = dispinterface;
+  IXMLAttribute = interface;
+  IXMLAttributeDisp = dispinterface;
+  IXMLError = interface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  DOMDocument = IXMLDOMDocument;
+  DOMFreeThreadedDocument = IXMLDOMDocument;
+  XMLHTTPRequest = IXMLHttpRequest;
+  XMLDSOControl = IXMLDSOControl;
+  XMLDocument = IXMLDocument2;
+
+
+// *********************************************************************//
+// Declaration of structures, unions and aliases.                         
+// *********************************************************************//
+  PUserType1 = ^_xml_error; {*}
+
+  DOMNodeType = tagDOMNodeType; 
+
+  _xml_error = packed record
+    _nLine: SYSUINT;
+    _pchBuf: WideString;
+    _cchBuf: SYSUINT;
+    _ich: SYSUINT;
+    _pszFound: WideString;
+    _pszExpected: WideString;
+    _reserved1: LongWord;
+    _reserved2: LongWord;
+  end;
+
+  XMLELEM_TYPE = tagXMLEMEM_TYPE; 
+
+// *********************************************************************//
+// Interface: IXMLDOMImplementation
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8F-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMImplementation = interface(IDispatch)
+    ['{2933BF8F-7B36-11D2-B20E-00C04F983E60}']
+    function  hasFeature(const feature: WideString; const version: WideString): WordBool; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMImplementationDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8F-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMImplementationDisp = dispinterface
+    ['{2933BF8F-7B36-11D2-B20E-00C04F983E60}']
+    function  hasFeature(const feature: WideString; const version: WideString): WordBool; dispid 145;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMNode
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF80-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNode = interface(IDispatch)
+    ['{2933BF80-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_nodeName: WideString; safecall;
+    function  Get_nodeValue: OleVariant; safecall;
+    procedure Set_nodeValue(value: OleVariant); safecall;
+    function  Get_nodeType: DOMNodeType; safecall;
+    function  Get_parentNode: IXMLDOMNode; safecall;
+    function  Get_childNodes: IXMLDOMNodeList; safecall;
+    function  Get_firstChild: IXMLDOMNode; safecall;
+    function  Get_lastChild: IXMLDOMNode; safecall;
+    function  Get_previousSibling: IXMLDOMNode; safecall;
+    function  Get_nextSibling: IXMLDOMNode; safecall;
+    function  Get_attributes: IXMLDOMNamedNodeMap; safecall;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; safecall;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; safecall;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; safecall;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; safecall;
+    function  hasChildNodes: WordBool; safecall;
+    function  Get_ownerDocument: IXMLDOMDocument; safecall;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; safecall;
+    function  Get_nodeTypeString: WideString; safecall;
+    function  Get_text: WideString; safecall;
+    procedure Set_text(const text: WideString); safecall;
+    function  Get_specified: WordBool; safecall;
+    function  Get_definition: IXMLDOMNode; safecall;
+    function  Get_nodeTypedValue: OleVariant; safecall;
+    procedure Set_nodeTypedValue(typedValue: OleVariant); safecall;
+    function  Get_dataType: OleVariant; safecall;
+    procedure Set_dataType(const dataTypeName: WideString); safecall;
+    function  Get_xml: WideString; safecall;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; safecall;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; safecall;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; safecall;
+    function  Get_parsed: WordBool; safecall;
+    function  Get_namespaceURI: WideString; safecall;
+    function  Get_prefix: WideString; safecall;
+    function  Get_baseName: WideString; safecall;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); safecall;
+    property nodeName: WideString read Get_nodeName;
+    property nodeValue: OleVariant read Get_nodeValue write Set_nodeValue;
+    property nodeType: DOMNodeType read Get_nodeType;
+    property parentNode: IXMLDOMNode read Get_parentNode;
+    property childNodes: IXMLDOMNodeList read Get_childNodes;
+    property firstChild: IXMLDOMNode read Get_firstChild;
+    property lastChild: IXMLDOMNode read Get_lastChild;
+    property previousSibling: IXMLDOMNode read Get_previousSibling;
+    property nextSibling: IXMLDOMNode read Get_nextSibling;
+    property attributes: IXMLDOMNamedNodeMap read Get_attributes;
+    property ownerDocument: IXMLDOMDocument read Get_ownerDocument;
+    property nodeTypeString: WideString read Get_nodeTypeString;
+    property text: WideString read Get_text write Set_text;
+    property specified: WordBool read Get_specified;
+    property definition: IXMLDOMNode read Get_definition;
+    property nodeTypedValue: OleVariant read Get_nodeTypedValue write Set_nodeTypedValue;
+    property xml: WideString read Get_xml;
+    property parsed: WordBool read Get_parsed;
+    property namespaceURI: WideString read Get_namespaceURI;
+    property prefix: WideString read Get_prefix;
+    property baseName: WideString read Get_baseName;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMNodeDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF80-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNodeDisp = dispinterface
+    ['{2933BF80-7B36-11D2-B20E-00C04F983E60}']
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMNodeList
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF82-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNodeList = interface(IDispatch)
+    ['{2933BF82-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_item(index: Integer): IXMLDOMNode; safecall;
+    function  Get_length: Integer; safecall;
+    function  nextNode: IXMLDOMNode; safecall;
+    procedure reset; safecall;
+    function  Get__newEnum: IUnknown; safecall;
+    property item[index: Integer]: IXMLDOMNode read Get_item; default;
+    property length: Integer read Get_length;
+    property _newEnum: IUnknown read Get__newEnum;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMNodeListDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF82-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNodeListDisp = dispinterface
+    ['{2933BF82-7B36-11D2-B20E-00C04F983E60}']
+    property item[index: Integer]: IXMLDOMNode readonly dispid 0; default;
+    property length: Integer readonly dispid 74;
+    function  nextNode: IXMLDOMNode; dispid 76;
+    procedure reset; dispid 77;
+    property _newEnum: IUnknown readonly dispid -4;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMNamedNodeMap
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF83-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNamedNodeMap = interface(IDispatch)
+    ['{2933BF83-7B36-11D2-B20E-00C04F983E60}']
+    function  getNamedItem(const name: WideString): IXMLDOMNode; safecall;
+    function  setNamedItem(const newItem: IXMLDOMNode): IXMLDOMNode; safecall;
+    function  removeNamedItem(const name: WideString): IXMLDOMNode; safecall;
+    function  Get_item(index: Integer): IXMLDOMNode; safecall;
+    function  Get_length: Integer; safecall;
+    function  getQualifiedItem(const baseName: WideString; const namespaceURI: WideString): IXMLDOMNode; safecall;
+    function  removeQualifiedItem(const baseName: WideString; const namespaceURI: WideString): IXMLDOMNode; safecall;
+    function  nextNode: IXMLDOMNode; safecall;
+    procedure reset; safecall;
+    function  Get__newEnum: IUnknown; safecall;
+    property item[index: Integer]: IXMLDOMNode read Get_item; default;
+    property length: Integer read Get_length;
+    property _newEnum: IUnknown read Get__newEnum;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMNamedNodeMapDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF83-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNamedNodeMapDisp = dispinterface
+    ['{2933BF83-7B36-11D2-B20E-00C04F983E60}']
+    function  getNamedItem(const name: WideString): IXMLDOMNode; dispid 83;
+    function  setNamedItem(const newItem: IXMLDOMNode): IXMLDOMNode; dispid 84;
+    function  removeNamedItem(const name: WideString): IXMLDOMNode; dispid 85;
+    property item[index: Integer]: IXMLDOMNode readonly dispid 0; default;
+    property length: Integer readonly dispid 74;
+    function  getQualifiedItem(const baseName: WideString; const namespaceURI: WideString): IXMLDOMNode; dispid 87;
+    function  removeQualifiedItem(const baseName: WideString; const namespaceURI: WideString): IXMLDOMNode; dispid 88;
+    function  nextNode: IXMLDOMNode; dispid 89;
+    procedure reset; dispid 90;
+    property _newEnum: IUnknown readonly dispid -4;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMDocument
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF81-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMDocument = interface(IXMLDOMNode)
+    ['{2933BF81-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_doctype: IXMLDOMDocumentType; safecall;
+    function  Get_implementation_: IXMLDOMImplementation; safecall;
+    function  Get_documentElement: IXMLDOMElement; safecall;
+    procedure Set_documentElement(const DOMElement: IXMLDOMElement); safecall;
+    function  createElement(const tagName: WideString): IXMLDOMElement; safecall;
+    function  createDocumentFragment: IXMLDOMDocumentFragment; safecall;
+    function  createTextNode(const data: WideString): IXMLDOMText; safecall;
+    function  createComment(const data: WideString): IXMLDOMComment; safecall;
+    function  createCDATASection(const data: WideString): IXMLDOMCDATASection; safecall;
+    function  createProcessingInstruction(const target: WideString; const data: WideString): IXMLDOMProcessingInstruction; safecall;
+    function  createAttribute(const name: WideString): IXMLDOMAttribute; safecall;
+    function  createEntityReference(const name: WideString): IXMLDOMEntityReference; safecall;
+    function  getElementsByTagName(const tagName: WideString): IXMLDOMNodeList; safecall;
+    function  createNode(type_: OleVariant; const name: WideString; const namespaceURI: WideString): IXMLDOMNode; safecall;
+    function  nodeFromID(const idString: WideString): IXMLDOMNode; safecall;
+    function  load(xmlSource: OleVariant): WordBool; safecall;
+    function  Get_readyState: Integer; safecall;
+    function  Get_parseError: IXMLDOMParseError; safecall;
+    function  Get_url: WideString; safecall;
+    function  Get_async: WordBool; safecall;
+    procedure Set_async(isAsync: WordBool); safecall;
+    procedure abort; safecall;
+    function  loadXML(const bstrXML: WideString): WordBool; safecall;
+    procedure save(desination: OleVariant); safecall;
+    function  Get_validateOnParse: WordBool; safecall;
+    procedure Set_validateOnParse(isValidating: WordBool); safecall;
+    function  Get_resolveExternals: WordBool; safecall;
+    procedure Set_resolveExternals(isResolving: WordBool); safecall;
+    function  Get_preserveWhiteSpace: WordBool; safecall;
+    procedure Set_preserveWhiteSpace(isPreserving: WordBool); safecall;
+    procedure Set_onreadystatechange(Param1: OleVariant); safecall;
+    procedure Set_ondataavailable(Param1: OleVariant); safecall;
+    procedure Set_ontransformnode(Param1: OleVariant); safecall;
+    property doctype: IXMLDOMDocumentType read Get_doctype;
+    property implementation_: IXMLDOMImplementation read Get_implementation_;
+    property documentElement: IXMLDOMElement read Get_documentElement write Set_documentElement;
+    property readyState: Integer read Get_readyState;
+    property parseError: IXMLDOMParseError read Get_parseError;
+    property url: WideString read Get_url;
+    property async: WordBool read Get_async write Set_async;
+    property validateOnParse: WordBool read Get_validateOnParse write Set_validateOnParse;
+    property resolveExternals: WordBool read Get_resolveExternals write Set_resolveExternals;
+    property preserveWhiteSpace: WordBool read Get_preserveWhiteSpace write Set_preserveWhiteSpace;
+    property onreadystatechange: OleVariant write Set_onreadystatechange;
+    property ondataavailable: OleVariant write Set_ondataavailable;
+    property ontransformnode: OleVariant write Set_ontransformnode;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMDocumentDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF81-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMDocumentDisp = dispinterface
+    ['{2933BF81-7B36-11D2-B20E-00C04F983E60}']
+    property doctype: IXMLDOMDocumentType readonly dispid 38;
+    property implementation_: IXMLDOMImplementation readonly dispid 39;
+    property documentElement: IXMLDOMElement dispid 40;
+    function  createElement(const tagName: WideString): IXMLDOMElement; dispid 41;
+    function  createDocumentFragment: IXMLDOMDocumentFragment; dispid 42;
+    function  createTextNode(const data: WideString): IXMLDOMText; dispid 43;
+    function  createComment(const data: WideString): IXMLDOMComment; dispid 44;
+    function  createCDATASection(const data: WideString): IXMLDOMCDATASection; dispid 45;
+    function  createProcessingInstruction(const target: WideString; const data: WideString): IXMLDOMProcessingInstruction; dispid 46;
+    function  createAttribute(const name: WideString): IXMLDOMAttribute; dispid 47;
+    function  createEntityReference(const name: WideString): IXMLDOMEntityReference; dispid 49;
+    function  getElementsByTagName(const tagName: WideString): IXMLDOMNodeList; dispid 50;
+    function  createNode(type_: OleVariant; const name: WideString; const namespaceURI: WideString): IXMLDOMNode; dispid 54;
+    function  nodeFromID(const idString: WideString): IXMLDOMNode; dispid 56;
+    function  load(xmlSource: OleVariant): WordBool; dispid 58;
+    property readyState: Integer readonly dispid -525;
+    property parseError: IXMLDOMParseError readonly dispid 59;
+    property url: WideString readonly dispid 60;
+    property async: WordBool dispid 61;
+    procedure abort; dispid 62;
+    function  loadXML(const bstrXML: WideString): WordBool; dispid 63;
+    procedure save(desination: OleVariant); dispid 64;
+    property validateOnParse: WordBool dispid 65;
+    property resolveExternals: WordBool dispid 66;
+    property preserveWhiteSpace: WordBool dispid 67;
+    property onreadystatechange: OleVariant writeonly dispid 68;
+    property ondataavailable: OleVariant writeonly dispid 69;
+    property ontransformnode: OleVariant writeonly dispid 70;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMDocumentType
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8B-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMDocumentType = interface(IXMLDOMNode)
+    ['{2933BF8B-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_name: WideString; safecall;
+    function  Get_entities: IXMLDOMNamedNodeMap; safecall;
+    function  Get_notations: IXMLDOMNamedNodeMap; safecall;
+    property name: WideString read Get_name;
+    property entities: IXMLDOMNamedNodeMap read Get_entities;
+    property notations: IXMLDOMNamedNodeMap read Get_notations;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMDocumentTypeDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8B-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMDocumentTypeDisp = dispinterface
+    ['{2933BF8B-7B36-11D2-B20E-00C04F983E60}']
+    property name: WideString readonly dispid 131;
+    property entities: IXMLDOMNamedNodeMap readonly dispid 132;
+    property notations: IXMLDOMNamedNodeMap readonly dispid 133;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMElement
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF86-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMElement = interface(IXMLDOMNode)
+    ['{2933BF86-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_tagName: WideString; safecall;
+    function  getAttribute(const name: WideString): OleVariant; safecall;
+    procedure setAttribute(const name: WideString; value: OleVariant); safecall;
+    procedure removeAttribute(const name: WideString); safecall;
+    function  getAttributeNode(const name: WideString): IXMLDOMAttribute; safecall;
+    function  setAttributeNode(const DOMAttribute: IXMLDOMAttribute): IXMLDOMAttribute; safecall;
+    function  removeAttributeNode(const DOMAttribute: IXMLDOMAttribute): IXMLDOMAttribute; safecall;
+    function  getElementsByTagName(const tagName: WideString): IXMLDOMNodeList; safecall;
+    procedure normalize; safecall;
+    property tagName: WideString read Get_tagName;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMElementDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF86-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMElementDisp = dispinterface
+    ['{2933BF86-7B36-11D2-B20E-00C04F983E60}']
+    property tagName: WideString readonly dispid 97;
+    function  getAttribute(const name: WideString): OleVariant; dispid 99;
+    procedure setAttribute(const name: WideString; value: OleVariant); dispid 100;
+    procedure removeAttribute(const name: WideString); dispid 101;
+    function  getAttributeNode(const name: WideString): IXMLDOMAttribute; dispid 102;
+    function  setAttributeNode(const DOMAttribute: IXMLDOMAttribute): IXMLDOMAttribute; dispid 103;
+    function  removeAttributeNode(const DOMAttribute: IXMLDOMAttribute): IXMLDOMAttribute; dispid 104;
+    function  getElementsByTagName(const tagName: WideString): IXMLDOMNodeList; dispid 105;
+    procedure normalize; dispid 106;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMAttribute
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF85-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMAttribute = interface(IXMLDOMNode)
+    ['{2933BF85-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_name: WideString; safecall;
+    function  Get_value: OleVariant; safecall;
+    procedure Set_value(attributeValue: OleVariant); safecall;
+    property name: WideString read Get_name;
+    property value: OleVariant read Get_value write Set_value;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMAttributeDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF85-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMAttributeDisp = dispinterface
+    ['{2933BF85-7B36-11D2-B20E-00C04F983E60}']
+    property name: WideString readonly dispid 118;
+    property value: OleVariant dispid 120;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMDocumentFragment
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {3EFAA413-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  IXMLDOMDocumentFragment = interface(IXMLDOMNode)
+    ['{3EFAA413-272F-11D2-836F-0000F87A7782}']
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMDocumentFragmentDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {3EFAA413-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  IXMLDOMDocumentFragmentDisp = dispinterface
+    ['{3EFAA413-272F-11D2-836F-0000F87A7782}']
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMCharacterData
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF84-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMCharacterData = interface(IXMLDOMNode)
+    ['{2933BF84-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_data: WideString; safecall;
+    procedure Set_data(const data: WideString); safecall;
+    function  Get_length: Integer; safecall;
+    function  substringData(offset: Integer; count: Integer): WideString; safecall;
+    procedure appendData(const data: WideString); safecall;
+    procedure insertData(offset: Integer; const data: WideString); safecall;
+    procedure deleteData(offset: Integer; count: Integer); safecall;
+    procedure replaceData(offset: Integer; count: Integer; const data: WideString); safecall;
+    property data: WideString read Get_data write Set_data;
+    property length: Integer read Get_length;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMCharacterDataDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF84-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMCharacterDataDisp = dispinterface
+    ['{2933BF84-7B36-11D2-B20E-00C04F983E60}']
+    property data: WideString dispid 109;
+    property length: Integer readonly dispid 110;
+    function  substringData(offset: Integer; count: Integer): WideString; dispid 111;
+    procedure appendData(const data: WideString); dispid 112;
+    procedure insertData(offset: Integer; const data: WideString); dispid 113;
+    procedure deleteData(offset: Integer; count: Integer); dispid 114;
+    procedure replaceData(offset: Integer; count: Integer; const data: WideString); dispid 115;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMText
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF87-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMText = interface(IXMLDOMCharacterData)
+    ['{2933BF87-7B36-11D2-B20E-00C04F983E60}']
+    function  splitText(offset: Integer): IXMLDOMText; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMTextDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF87-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMTextDisp = dispinterface
+    ['{2933BF87-7B36-11D2-B20E-00C04F983E60}']
+    function  splitText(offset: Integer): IXMLDOMText; dispid 123;
+    property data: WideString dispid 109;
+    property length: Integer readonly dispid 110;
+    function  substringData(offset: Integer; count: Integer): WideString; dispid 111;
+    procedure appendData(const data: WideString); dispid 112;
+    procedure insertData(offset: Integer; const data: WideString); dispid 113;
+    procedure deleteData(offset: Integer; count: Integer); dispid 114;
+    procedure replaceData(offset: Integer; count: Integer; const data: WideString); dispid 115;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMComment
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF88-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMComment = interface(IXMLDOMCharacterData)
+    ['{2933BF88-7B36-11D2-B20E-00C04F983E60}']
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMCommentDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF88-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMCommentDisp = dispinterface
+    ['{2933BF88-7B36-11D2-B20E-00C04F983E60}']
+    property data: WideString dispid 109;
+    property length: Integer readonly dispid 110;
+    function  substringData(offset: Integer; count: Integer): WideString; dispid 111;
+    procedure appendData(const data: WideString); dispid 112;
+    procedure insertData(offset: Integer; const data: WideString); dispid 113;
+    procedure deleteData(offset: Integer; count: Integer); dispid 114;
+    procedure replaceData(offset: Integer; count: Integer; const data: WideString); dispid 115;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMCDATASection
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8A-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMCDATASection = interface(IXMLDOMText)
+    ['{2933BF8A-7B36-11D2-B20E-00C04F983E60}']
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMCDATASectionDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8A-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMCDATASectionDisp = dispinterface
+    ['{2933BF8A-7B36-11D2-B20E-00C04F983E60}']
+    function  splitText(offset: Integer): IXMLDOMText; dispid 123;
+    property data: WideString dispid 109;
+    property length: Integer readonly dispid 110;
+    function  substringData(offset: Integer; count: Integer): WideString; dispid 111;
+    procedure appendData(const data: WideString); dispid 112;
+    procedure insertData(offset: Integer; const data: WideString); dispid 113;
+    procedure deleteData(offset: Integer; count: Integer); dispid 114;
+    procedure replaceData(offset: Integer; count: Integer; const data: WideString); dispid 115;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMProcessingInstruction
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF89-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMProcessingInstruction = interface(IXMLDOMNode)
+    ['{2933BF89-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_target: WideString; safecall;
+    function  Get_data: WideString; safecall;
+    procedure Set_data(const value: WideString); safecall;
+    property target: WideString read Get_target;
+    property data: WideString read Get_data write Set_data;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMProcessingInstructionDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF89-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMProcessingInstructionDisp = dispinterface
+    ['{2933BF89-7B36-11D2-B20E-00C04F983E60}']
+    property target: WideString readonly dispid 127;
+    property data: WideString dispid 128;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMEntityReference
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8E-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMEntityReference = interface(IXMLDOMNode)
+    ['{2933BF8E-7B36-11D2-B20E-00C04F983E60}']
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMEntityReferenceDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8E-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMEntityReferenceDisp = dispinterface
+    ['{2933BF8E-7B36-11D2-B20E-00C04F983E60}']
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMParseError
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {3EFAA426-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  IXMLDOMParseError = interface(IDispatch)
+    ['{3EFAA426-272F-11D2-836F-0000F87A7782}']
+    function  Get_errorCode: Integer; safecall;
+    function  Get_url: WideString; safecall;
+    function  Get_reason: WideString; safecall;
+    function  Get_srcText: WideString; safecall;
+    function  Get_line: Integer; safecall;
+    function  Get_linepos: Integer; safecall;
+    function  Get_filepos: Integer; safecall;
+    property errorCode: Integer read Get_errorCode;
+    property url: WideString read Get_url;
+    property reason: WideString read Get_reason;
+    property srcText: WideString read Get_srcText;
+    property line: Integer read Get_line;
+    property linepos: Integer read Get_linepos;
+    property filepos: Integer read Get_filepos;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMParseErrorDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {3EFAA426-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  IXMLDOMParseErrorDisp = dispinterface
+    ['{3EFAA426-272F-11D2-836F-0000F87A7782}']
+    property errorCode: Integer readonly dispid 0;
+    property url: WideString readonly dispid 179;
+    property reason: WideString readonly dispid 180;
+    property srcText: WideString readonly dispid 181;
+    property line: Integer readonly dispid 182;
+    property linepos: Integer readonly dispid 183;
+    property filepos: Integer readonly dispid 184;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMNotation
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8C-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNotation = interface(IXMLDOMNode)
+    ['{2933BF8C-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_publicId: OleVariant; safecall;
+    function  Get_systemId: OleVariant; safecall;
+    property publicId: OleVariant read Get_publicId;
+    property systemId: OleVariant read Get_systemId;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMNotationDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8C-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMNotationDisp = dispinterface
+    ['{2933BF8C-7B36-11D2-B20E-00C04F983E60}']
+    property publicId: OleVariant readonly dispid 136;
+    property systemId: OleVariant readonly dispid 137;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDOMEntity
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8D-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMEntity = interface(IXMLDOMNode)
+    ['{2933BF8D-7B36-11D2-B20E-00C04F983E60}']
+    function  Get_publicId: OleVariant; safecall;
+    function  Get_systemId: OleVariant; safecall;
+    function  Get_notationName: WideString; safecall;
+    property publicId: OleVariant read Get_publicId;
+    property systemId: OleVariant read Get_systemId;
+    property notationName: WideString read Get_notationName;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDOMEntityDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {2933BF8D-7B36-11D2-B20E-00C04F983E60}
+// *********************************************************************//
+  IXMLDOMEntityDisp = dispinterface
+    ['{2933BF8D-7B36-11D2-B20E-00C04F983E60}']
+    property publicId: OleVariant readonly dispid 140;
+    property systemId: OleVariant readonly dispid 141;
+    property notationName: WideString readonly dispid 142;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// Interface: IXTLRuntime
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {3EFAA425-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  IXTLRuntime = interface(IXMLDOMNode)
+    ['{3EFAA425-272F-11D2-836F-0000F87A7782}']
+    function  uniqueID(const pNode: IXMLDOMNode): Integer; safecall;
+    function  depth(const pNode: IXMLDOMNode): Integer; safecall;
+    function  childNumber(const pNode: IXMLDOMNode): Integer; safecall;
+    function  ancestorChildNumber(const bstrNodeName: WideString; const pNode: IXMLDOMNode): Integer; safecall;
+    function  absoluteChildNumber(const pNode: IXMLDOMNode): Integer; safecall;
+    function  formatIndex(lIndex: Integer; const bstrFormat: WideString): WideString; safecall;
+    function  formatNumber(dblNumber: Double; const bstrFormat: WideString): WideString; safecall;
+    function  formatDate(varDate: OleVariant; const bstrFormat: WideString; 
+                         varDestLocale: OleVariant): WideString; safecall;
+    function  formatTime(varTime: OleVariant; const bstrFormat: WideString; 
+                         varDestLocale: OleVariant): WideString; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXTLRuntimeDisp
+// Flags:     (4544) Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {3EFAA425-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  IXTLRuntimeDisp = dispinterface
+    ['{3EFAA425-272F-11D2-836F-0000F87A7782}']
+    function  uniqueID(const pNode: IXMLDOMNode): Integer; dispid 187;
+    function  depth(const pNode: IXMLDOMNode): Integer; dispid 188;
+    function  childNumber(const pNode: IXMLDOMNode): Integer; dispid 189;
+    function  ancestorChildNumber(const bstrNodeName: WideString; const pNode: IXMLDOMNode): Integer; dispid 190;
+    function  absoluteChildNumber(const pNode: IXMLDOMNode): Integer; dispid 191;
+    function  formatIndex(lIndex: Integer; const bstrFormat: WideString): WideString; dispid 192;
+    function  formatNumber(dblNumber: Double; const bstrFormat: WideString): WideString; dispid 193;
+    function  formatDate(varDate: OleVariant; const bstrFormat: WideString; 
+                         varDestLocale: OleVariant): WideString; dispid 194;
+    function  formatTime(varTime: OleVariant; const bstrFormat: WideString; 
+                         varDestLocale: OleVariant): WideString; dispid 195;
+    property nodeName: WideString readonly dispid 2;
+    property nodeValue: OleVariant dispid 3;
+    property nodeType: DOMNodeType readonly dispid 4;
+    property parentNode: IXMLDOMNode readonly dispid 6;
+    property childNodes: IXMLDOMNodeList readonly dispid 7;
+    property firstChild: IXMLDOMNode readonly dispid 8;
+    property lastChild: IXMLDOMNode readonly dispid 9;
+    property previousSibling: IXMLDOMNode readonly dispid 10;
+    property nextSibling: IXMLDOMNode readonly dispid 11;
+    property attributes: IXMLDOMNamedNodeMap readonly dispid 12;
+    function  insertBefore(const newChild: IXMLDOMNode; refChild: OleVariant): IXMLDOMNode; dispid 13;
+    function  replaceChild(const newChild: IXMLDOMNode; const oldChild: IXMLDOMNode): IXMLDOMNode; dispid 14;
+    function  removeChild(const childNode: IXMLDOMNode): IXMLDOMNode; dispid 15;
+    function  appendChild(const newChild: IXMLDOMNode): IXMLDOMNode; dispid 16;
+    function  hasChildNodes: WordBool; dispid 17;
+    property ownerDocument: IXMLDOMDocument readonly dispid 18;
+    function  cloneNode(deep: WordBool): IXMLDOMNode; dispid 19;
+    property nodeTypeString: WideString readonly dispid 21;
+    property text: WideString dispid 24;
+    property specified: WordBool readonly dispid 22;
+    property definition: IXMLDOMNode readonly dispid 23;
+    property nodeTypedValue: OleVariant dispid 25;
+    function  dataType: OleVariant; dispid 26;
+    property xml: WideString readonly dispid 27;
+    function  transformNode(const stylesheet: IXMLDOMNode): WideString; dispid 28;
+    function  selectNodes(const queryString: WideString): IXMLDOMNodeList; dispid 29;
+    function  selectSingleNode(const queryString: WideString): IXMLDOMNode; dispid 30;
+    property parsed: WordBool readonly dispid 31;
+    property namespaceURI: WideString readonly dispid 32;
+    property prefix: WideString readonly dispid 33;
+    property baseName: WideString readonly dispid 34;
+    procedure transformNodeToObject(const stylesheet: IXMLDOMNode; outputObject: OleVariant); dispid 35;
+  end;
+
+// *********************************************************************//
+// DispIntf:  XMLDOMDocumentEvents
+// Flags:     (4112) Hidden Dispatchable
+// GUID:      {3EFAA427-272F-11D2-836F-0000F87A7782}
+// *********************************************************************//
+  XMLDOMDocumentEvents = dispinterface
+    ['{3EFAA427-272F-11D2-836F-0000F87A7782}']
+    procedure ondataavailable; dispid 198;
+    procedure onreadystatechange; dispid -609;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLHttpRequest
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {ED8C108D-4349-11D2-91A4-00C04F7969E8}
+// *********************************************************************//
+  IXMLHttpRequest = interface(IDispatch)
+    ['{ED8C108D-4349-11D2-91A4-00C04F7969E8}']
+    procedure open(const bstrMethod: WideString; const bstrUrl: WideString; varAsync: OleVariant; 
+                   bstrUser: OleVariant; bstrPassword: OleVariant); safecall;
+    procedure setRequestHeader(const bstrHeader: WideString; const bstrValue: WideString); safecall;
+    function  getResponseHeader(const bstrHeader: WideString): WideString; safecall;
+    function  getAllResponseHeaders: WideString; safecall;
+    procedure send(varBody: OleVariant); safecall;
+    procedure abort; safecall;
+    function  Get_status: Integer; safecall;
+    function  Get_statusText: WideString; safecall;
+    function  Get_responseXML: IDispatch; safecall;
+    function  Get_responseText: WideString; safecall;
+    function  Get_responseBody: OleVariant; safecall;
+    function  Get_responseStream: OleVariant; safecall;
+    function  Get_readyState: Integer; safecall;
+    procedure Set_onreadystatechange(const Param1: IDispatch); safecall;
+    property status: Integer read Get_status;
+    property statusText: WideString read Get_statusText;
+    property responseXML: IDispatch read Get_responseXML;
+    property responseText: WideString read Get_responseText;
+    property responseBody: OleVariant read Get_responseBody;
+    property responseStream: OleVariant read Get_responseStream;
+    property readyState: Integer read Get_readyState;
+    property onreadystatechange: IDispatch write Set_onreadystatechange;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLHttpRequestDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {ED8C108D-4349-11D2-91A4-00C04F7969E8}
+// *********************************************************************//
+  IXMLHttpRequestDisp = dispinterface
+    ['{ED8C108D-4349-11D2-91A4-00C04F7969E8}']
+    procedure open(const bstrMethod: WideString; const bstrUrl: WideString; varAsync: OleVariant; 
+                   bstrUser: OleVariant; bstrPassword: OleVariant); dispid 1;
+    procedure setRequestHeader(const bstrHeader: WideString; const bstrValue: WideString); dispid 2;
+    function  getResponseHeader(const bstrHeader: WideString): WideString; dispid 3;
+    function  getAllResponseHeaders: WideString; dispid 4;
+    procedure send(varBody: OleVariant); dispid 5;
+    procedure abort; dispid 6;
+    property status: Integer readonly dispid 7;
+    property statusText: WideString readonly dispid 8;
+    property responseXML: IDispatch readonly dispid 9;
+    property responseText: WideString readonly dispid 10;
+    property responseBody: OleVariant readonly dispid 11;
+    property responseStream: OleVariant readonly dispid 12;
+    property readyState: Integer readonly dispid 13;
+    property onreadystatechange: IDispatch writeonly dispid 14;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDSOControl
+// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {310AFA62-0575-11D2-9CA9-0060B0EC3D39}
+// *********************************************************************//
+  IXMLDSOControl = interface(IDispatch)
+    ['{310AFA62-0575-11D2-9CA9-0060B0EC3D39}']
+    function  Get_XMLDocument: IXMLDOMDocument; safecall;
+    procedure Set_XMLDocument(const ppDoc: IXMLDOMDocument); safecall;
+    function  Get_JavaDSOCompatible: Integer; safecall;
+    procedure Set_JavaDSOCompatible(fJavaDSOCompatible: Integer); safecall;
+    function  Get_readyState: Integer; safecall;
+    property XMLDocument: IXMLDOMDocument read Get_XMLDocument write Set_XMLDocument;
+    property JavaDSOCompatible: Integer read Get_JavaDSOCompatible write Set_JavaDSOCompatible;
+    property readyState: Integer read Get_readyState;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDSOControlDisp
+// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
+// GUID:      {310AFA62-0575-11D2-9CA9-0060B0EC3D39}
+// *********************************************************************//
+  IXMLDSOControlDisp = dispinterface
+    ['{310AFA62-0575-11D2-9CA9-0060B0EC3D39}']
+    property XMLDocument: IXMLDOMDocument dispid 65537;
+    property JavaDSOCompatible: Integer dispid 65538;
+    property readyState: Integer readonly dispid -525;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLElementCollection
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {65725580-9B5D-11D0-9BFE-00C04FC99C8E}
+// *********************************************************************//
+  IXMLElementCollection = interface(IDispatch)
+    ['{65725580-9B5D-11D0-9BFE-00C04FC99C8E}']
+    procedure Set_length(p: Integer); safecall;
+    function  Get_length: Integer; safecall;
+    function  Get__newEnum: IUnknown; safecall;
+    function  item(var1: OleVariant; var2: OleVariant): IDispatch; safecall;
+    property length: Integer read Get_length write Set_length;
+    property _newEnum: IUnknown read Get__newEnum;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLElementCollectionDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {65725580-9B5D-11D0-9BFE-00C04FC99C8E}
+// *********************************************************************//
+  IXMLElementCollectionDisp = dispinterface
+    ['{65725580-9B5D-11D0-9BFE-00C04FC99C8E}']
+    property length: Integer dispid 65537;
+    property _newEnum: IUnknown readonly dispid -4;
+    function  item(var1: OleVariant; var2: OleVariant): IDispatch; dispid 65539;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDocument
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {F52E2B61-18A1-11D1-B105-00805F49916B}
+// *********************************************************************//
+  IXMLDocument = interface(IDispatch)
+    ['{F52E2B61-18A1-11D1-B105-00805F49916B}']
+    function  Get_root: IXMLElement; safecall;
+    function  Get_fileSize: WideString; safecall;
+    function  Get_fileModifiedDate: WideString; safecall;
+    function  Get_fileUpdatedDate: WideString; safecall;
+    function  Get_url: WideString; safecall;
+    procedure Set_url(const p: WideString); safecall;
+    function  Get_mimeType: WideString; safecall;
+    function  Get_readyState: Integer; safecall;
+    function  Get_charset: WideString; safecall;
+    procedure Set_charset(const p: WideString); safecall;
+    function  Get_version: WideString; safecall;
+    function  Get_doctype: WideString; safecall;
+    function  Get_dtdURL: WideString; safecall;
+    function  createElement(vType: OleVariant; var1: OleVariant): IXMLElement; safecall;
+    property root: IXMLElement read Get_root;
+    property fileSize: WideString read Get_fileSize;
+    property fileModifiedDate: WideString read Get_fileModifiedDate;
+    property fileUpdatedDate: WideString read Get_fileUpdatedDate;
+    property url: WideString read Get_url write Set_url;
+    property mimeType: WideString read Get_mimeType;
+    property readyState: Integer read Get_readyState;
+    property charset: WideString read Get_charset write Set_charset;
+    property version: WideString read Get_version;
+    property doctype: WideString read Get_doctype;
+    property dtdURL: WideString read Get_dtdURL;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLDocumentDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {F52E2B61-18A1-11D1-B105-00805F49916B}
+// *********************************************************************//
+  IXMLDocumentDisp = dispinterface
+    ['{F52E2B61-18A1-11D1-B105-00805F49916B}']
+    property root: IXMLElement readonly dispid 65637;
+    property fileSize: WideString readonly dispid 65638;
+    property fileModifiedDate: WideString readonly dispid 65639;
+    property fileUpdatedDate: WideString readonly dispid 65640;
+    property url: WideString dispid 65641;
+    property mimeType: WideString readonly dispid 65642;
+    property readyState: Integer readonly dispid 65643;
+    property charset: WideString dispid 65645;
+    property version: WideString readonly dispid 65646;
+    property doctype: WideString readonly dispid 65647;
+    property dtdURL: WideString readonly dispid 65648;
+    function  createElement(vType: OleVariant; var1: OleVariant): IXMLElement; dispid 65644;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLElement
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {3F7F31AC-E15F-11D0-9C25-00C04FC99C8E}
+// *********************************************************************//
+  IXMLElement = interface(IDispatch)
+    ['{3F7F31AC-E15F-11D0-9C25-00C04FC99C8E}']
+    function  Get_tagName: WideString; safecall;
+    procedure Set_tagName(const p: WideString); safecall;
+    function  Get_parent: IXMLElement; safecall;
+    procedure setAttribute(const strPropertyName: WideString; PropertyValue: OleVariant); safecall;
+    function  getAttribute(const strPropertyName: WideString): OleVariant; safecall;
+    procedure removeAttribute(const strPropertyName: WideString); safecall;
+    function  Get_children: IXMLElementCollection; safecall;
+    function  Get_type_: Integer; safecall;
+    function  Get_text: WideString; safecall;
+    procedure Set_text(const p: WideString); safecall;
+    procedure addChild(const pChildElem: IXMLElement; lIndex: Integer; lReserved: Integer); safecall;
+    procedure removeChild(const pChildElem: IXMLElement); safecall;
+    property tagName: WideString read Get_tagName write Set_tagName;
+    property parent: IXMLElement read Get_parent;
+    property children: IXMLElementCollection read Get_children;
+    property type_: Integer read Get_type_;
+    property text: WideString read Get_text write Set_text;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLElementDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {3F7F31AC-E15F-11D0-9C25-00C04FC99C8E}
+// *********************************************************************//
+  IXMLElementDisp = dispinterface
+    ['{3F7F31AC-E15F-11D0-9C25-00C04FC99C8E}']
+    property tagName: WideString dispid 65737;
+    property parent: IXMLElement readonly dispid 65738;
+    procedure setAttribute(const strPropertyName: WideString; PropertyValue: OleVariant); dispid 65739;
+    function  getAttribute(const strPropertyName: WideString): OleVariant; dispid 65740;
+    procedure removeAttribute(const strPropertyName: WideString); dispid 65741;
+    property children: IXMLElementCollection readonly dispid 65742;
+    property type_: Integer readonly dispid 65743;
+    property text: WideString dispid 65744;
+    procedure addChild(const pChildElem: IXMLElement; lIndex: Integer; lReserved: Integer); dispid 65745;
+    procedure removeChild(const pChildElem: IXMLElement); dispid 65746;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLDocument2
+// Flags:     (4112) Hidden Dispatchable
+// GUID:      {2B8DE2FE-8D2D-11D1-B2FC-00C04FD915A9}
+// *********************************************************************//
+  IXMLDocument2 = interface(IDispatch)
+    ['{2B8DE2FE-8D2D-11D1-B2FC-00C04FD915A9}']
+    function  Get_root(out p: IXMLElement2): HResult; stdcall;
+    function  Get_fileSize(out p: WideString): HResult; stdcall;
+    function  Get_fileModifiedDate(out p: WideString): HResult; stdcall;
+    function  Get_fileUpdatedDate(out p: WideString): HResult; stdcall;
+    function  Get_url(out p: WideString): HResult; stdcall;
+    function  Set_url(const p: WideString): HResult; stdcall;
+    function  Get_mimeType(out p: WideString): HResult; stdcall;
+    function  Get_readyState(out pl: Integer): HResult; stdcall;
+    function  Get_charset(out p: WideString): HResult; stdcall;
+    function  Set_charset(const p: WideString): HResult; stdcall;
+    function  Get_version(out p: WideString): HResult; stdcall;
+    function  Get_doctype(out p: WideString): HResult; stdcall;
+    function  Get_dtdURL(out p: WideString): HResult; stdcall;
+    function  createElement(vType: OleVariant; var1: OleVariant; out ppElem: IXMLElement2): HResult; stdcall;
+    function  Get_async(out pf: WordBool): HResult; stdcall;
+    function  Set_async(pf: WordBool): HResult; stdcall;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLElement2
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {2B8DE2FF-8D2D-11D1-B2FC-00C04FD915A9}
+// *********************************************************************//
+  IXMLElement2 = interface(IDispatch)
+    ['{2B8DE2FF-8D2D-11D1-B2FC-00C04FD915A9}']
+    function  Get_tagName: WideString; safecall;
+    procedure Set_tagName(const p: WideString); safecall;
+    function  Get_parent: IXMLElement2; safecall;
+    procedure setAttribute(const strPropertyName: WideString; PropertyValue: OleVariant); safecall;
+    function  getAttribute(const strPropertyName: WideString): OleVariant; safecall;
+    procedure removeAttribute(const strPropertyName: WideString); safecall;
+    function  Get_children: IXMLElementCollection; safecall;
+    function  Get_type_: Integer; safecall;
+    function  Get_text: WideString; safecall;
+    procedure Set_text(const p: WideString); safecall;
+    procedure addChild(const pChildElem: IXMLElement2; lIndex: Integer; lReserved: Integer); safecall;
+    procedure removeChild(const pChildElem: IXMLElement2); safecall;
+    function  Get_attributes: IXMLElementCollection; safecall;
+    property tagName: WideString read Get_tagName write Set_tagName;
+    property parent: IXMLElement2 read Get_parent;
+    property children: IXMLElementCollection read Get_children;
+    property type_: Integer read Get_type_;
+    property text: WideString read Get_text write Set_text;
+    property attributes: IXMLElementCollection read Get_attributes;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLElement2Disp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {2B8DE2FF-8D2D-11D1-B2FC-00C04FD915A9}
+// *********************************************************************//
+  IXMLElement2Disp = dispinterface
+    ['{2B8DE2FF-8D2D-11D1-B2FC-00C04FD915A9}']
+    property tagName: WideString dispid 65737;
+    property parent: IXMLElement2 readonly dispid 65738;
+    procedure setAttribute(const strPropertyName: WideString; PropertyValue: OleVariant); dispid 65739;
+    function  getAttribute(const strPropertyName: WideString): OleVariant; dispid 65740;
+    procedure removeAttribute(const strPropertyName: WideString); dispid 65741;
+    property children: IXMLElementCollection readonly dispid 65742;
+    property type_: Integer readonly dispid 65743;
+    property text: WideString dispid 65744;
+    procedure addChild(const pChildElem: IXMLElement2; lIndex: Integer; lReserved: Integer); dispid 65745;
+    procedure removeChild(const pChildElem: IXMLElement2); dispid 65746;
+    property attributes: IXMLElementCollection readonly dispid 65747;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLAttribute
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {D4D4A0FC-3B73-11D1-B2B4-00C04FB92596}
+// *********************************************************************//
+  IXMLAttribute = interface(IDispatch)
+    ['{D4D4A0FC-3B73-11D1-B2B4-00C04FB92596}']
+    function  Get_name: WideString; safecall;
+    function  Get_value: WideString; safecall;
+    property name: WideString read Get_name;
+    property value: WideString read Get_value;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IXMLAttributeDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {D4D4A0FC-3B73-11D1-B2B4-00C04FB92596}
+// *********************************************************************//
+  IXMLAttributeDisp = dispinterface
+    ['{D4D4A0FC-3B73-11D1-B2B4-00C04FB92596}']
+    property name: WideString readonly dispid 65937;
+    property value: WideString readonly dispid 65938;
+  end;
+
+// *********************************************************************//
+// Interface: IXMLError
+// Flags:     (16) Hidden
+// GUID:      {948C5AD3-C58D-11D0-9C0B-00C04FC99C8E}
+// *********************************************************************//
+  IXMLError = interface(IUnknown)
+    ['{948C5AD3-C58D-11D0-9C0B-00C04FC99C8E}']
+    function  GetErrorInfo(var pErrorReturn: _xml_error): HResult; stdcall;
+  end;
+
+// *********************************************************************//
+// The Class CoDOMDocument provides a Create and CreateRemote method to          
+// create instances of the default interface IXMLDOMDocument exposed by              
+// the CoClass DOMDocument. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoDOMDocument = class
+    class function Create: IXMLDOMDocument;
+    class function CreateRemote(const MachineName: string): IXMLDOMDocument;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TDOMDocument
+// Help String      : W3C-DOM XML Document
+// Default Interface: IXMLDOMDocument
+// Def. Intf. DISP? : No
+// Event   Interface: XMLDOMDocumentEvents
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TDOMDocumentProperties= class;
+{$ENDIF}
+  TDOMDocument = class(TOleServer)
+  private
+    FOnondataavailable: TNotifyEvent;
+    FOnonreadystatechange: TNotifyEvent;
+    FIntf:        IXMLDOMDocument;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TDOMDocumentProperties;
+    function      GetServerProperties: TDOMDocumentProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IXMLDOMDocument;
+  protected
+    procedure InitServerData; override;
+    procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
+    function  Get_doctype: IXMLDOMDocumentType;
+    function  Get_implementation_: IXMLDOMImplementation;
+    function  Get_documentElement: IXMLDOMElement;
+    procedure Set_documentElement(const DOMElement: IXMLDOMElement);
+    function  Get_readyState: Integer;
+    function  Get_parseError: IXMLDOMParseError;
+    function  Get_url: WideString;
+    function  Get_async: WordBool;
+    procedure Set_async(isAsync: WordBool);
+    function  Get_validateOnParse: WordBool;
+    procedure Set_validateOnParse(isValidating: WordBool);
+    function  Get_resolveExternals: WordBool;
+    procedure Set_resolveExternals(isResolving: WordBool);
+    function  Get_preserveWhiteSpace: WordBool;
+    procedure Set_preserveWhiteSpace(isPreserving: WordBool);
+    procedure Set_onreadystatechange(Param1: OleVariant);
+    procedure Set_ondataavailable(Param1: OleVariant);
+    procedure Set_ontransformnode(Param1: OleVariant);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IXMLDOMDocument);
+    procedure Disconnect; override;
+    function  createElement(const tagName: WideString): IXMLDOMElement;
+    function  createDocumentFragment: IXMLDOMDocumentFragment;
+    function  createTextNode(const data: WideString): IXMLDOMText;
+    function  createComment(const data: WideString): IXMLDOMComment;
+    function  createCDATASection(const data: WideString): IXMLDOMCDATASection;
+    function  createProcessingInstruction(const target: WideString; const data: WideString): IXMLDOMProcessingInstruction;
+    function  createAttribute(const name: WideString): IXMLDOMAttribute;
+    function  createEntityReference(const name: WideString): IXMLDOMEntityReference;
+    function  getElementsByTagName(const tagName: WideString): IXMLDOMNodeList;
+    function  createNode(type_: OleVariant; const name: WideString; const namespaceURI: WideString): IXMLDOMNode;
+    function  nodeFromID(const idString: WideString): IXMLDOMNode;
+    function  load(xmlSource: OleVariant): WordBool;
+    procedure abort;
+    function  loadXML(const bstrXML: WideString): WordBool;
+    procedure save(desination: OleVariant);
+    property  DefaultInterface: IXMLDOMDocument read GetDefaultInterface;
+    property doctype: IXMLDOMDocumentType read Get_doctype;
+    property implementation_: IXMLDOMImplementation read Get_implementation_;
+    property documentElement: IXMLDOMElement read Get_documentElement write Set_documentElement;
+    property readyState: Integer read Get_readyState;
+    property parseError: IXMLDOMParseError read Get_parseError;
+    property url: WideString read Get_url;
+    property onreadystatechange: OleVariant write Set_onreadystatechange;
+    property ondataavailable: OleVariant write Set_ondataavailable;
+    property ontransformnode: OleVariant write Set_ontransformnode;
+    property async: WordBool read Get_async write Set_async;
+    property validateOnParse: WordBool read Get_validateOnParse write Set_validateOnParse;
+    property resolveExternals: WordBool read Get_resolveExternals write Set_resolveExternals;
+    property preserveWhiteSpace: WordBool read Get_preserveWhiteSpace write Set_preserveWhiteSpace;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TDOMDocumentProperties read GetServerProperties;
+{$ENDIF}
+    property Onondataavailable: TNotifyEvent read FOnondataavailable write FOnondataavailable;
+    property Ononreadystatechange: TNotifyEvent read FOnonreadystatechange write FOnonreadystatechange;
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TDOMDocument
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TDOMDocumentProperties = class(TPersistent)
+  private
+    FServer:    TDOMDocument;
+    function    GetDefaultInterface: IXMLDOMDocument;
+    constructor Create(AServer: TDOMDocument);
+  protected
+    function  Get_doctype: IXMLDOMDocumentType;
+    function  Get_implementation_: IXMLDOMImplementation;
+    function  Get_documentElement: IXMLDOMElement;
+    procedure Set_documentElement(const DOMElement: IXMLDOMElement);
+    function  Get_readyState: Integer;
+    function  Get_parseError: IXMLDOMParseError;
+    function  Get_url: WideString;
+    function  Get_async: WordBool;
+    procedure Set_async(isAsync: WordBool);
+    function  Get_validateOnParse: WordBool;
+    procedure Set_validateOnParse(isValidating: WordBool);
+    function  Get_resolveExternals: WordBool;
+    procedure Set_resolveExternals(isResolving: WordBool);
+    function  Get_preserveWhiteSpace: WordBool;
+    procedure Set_preserveWhiteSpace(isPreserving: WordBool);
+    procedure Set_onreadystatechange(Param1: OleVariant);
+    procedure Set_ondataavailable(Param1: OleVariant);
+    procedure Set_ontransformnode(Param1: OleVariant);
+  public
+    property DefaultInterface: IXMLDOMDocument read GetDefaultInterface;
+  published
+    property async: WordBool read Get_async write Set_async;
+    property validateOnParse: WordBool read Get_validateOnParse write Set_validateOnParse;
+    property resolveExternals: WordBool read Get_resolveExternals write Set_resolveExternals;
+    property preserveWhiteSpace: WordBool read Get_preserveWhiteSpace write Set_preserveWhiteSpace;
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoDOMFreeThreadedDocument provides a Create and CreateRemote method to          
+// create instances of the default interface IXMLDOMDocument exposed by              
+// the CoClass DOMFreeThreadedDocument. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoDOMFreeThreadedDocument = class
+    class function Create: IXMLDOMDocument;
+    class function CreateRemote(const MachineName: string): IXMLDOMDocument;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TDOMFreeThreadedDocument
+// Help String      : W3C-DOM XML Document (Apartment)
+// Default Interface: IXMLDOMDocument
+// Def. Intf. DISP? : No
+// Event   Interface: XMLDOMDocumentEvents
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TDOMFreeThreadedDocumentProperties= class;
+{$ENDIF}
+  TDOMFreeThreadedDocument = class(TOleServer)
+  private
+    FOnondataavailable: TNotifyEvent;
+    FOnonreadystatechange: TNotifyEvent;
+    FIntf:        IXMLDOMDocument;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TDOMFreeThreadedDocumentProperties;
+    function      GetServerProperties: TDOMFreeThreadedDocumentProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IXMLDOMDocument;
+  protected
+    procedure InitServerData; override;
+    procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
+    function  Get_doctype: IXMLDOMDocumentType;
+    function  Get_implementation_: IXMLDOMImplementation;
+    function  Get_documentElement: IXMLDOMElement;
+    procedure Set_documentElement(const DOMElement: IXMLDOMElement);
+    function  Get_readyState: Integer;
+    function  Get_parseError: IXMLDOMParseError;
+    function  Get_url: WideString;
+    function  Get_async: WordBool;
+    procedure Set_async(isAsync: WordBool);
+    function  Get_validateOnParse: WordBool;
+    procedure Set_validateOnParse(isValidating: WordBool);
+    function  Get_resolveExternals: WordBool;
+    procedure Set_resolveExternals(isResolving: WordBool);
+    function  Get_preserveWhiteSpace: WordBool;
+    procedure Set_preserveWhiteSpace(isPreserving: WordBool);
+    procedure Set_onreadystatechange(Param1: OleVariant);
+    procedure Set_ondataavailable(Param1: OleVariant);
+    procedure Set_ontransformnode(Param1: OleVariant);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IXMLDOMDocument);
+    procedure Disconnect; override;
+    function  createElement(const tagName: WideString): IXMLDOMElement;
+    function  createDocumentFragment: IXMLDOMDocumentFragment;
+    function  createTextNode(const data: WideString): IXMLDOMText;
+    function  createComment(const data: WideString): IXMLDOMComment;
+    function  createCDATASection(const data: WideString): IXMLDOMCDATASection;
+    function  createProcessingInstruction(const target: WideString; const data: WideString): IXMLDOMProcessingInstruction;
+    function  createAttribute(const name: WideString): IXMLDOMAttribute;
+    function  createEntityReference(const name: WideString): IXMLDOMEntityReference;
+    function  getElementsByTagName(const tagName: WideString): IXMLDOMNodeList;
+    function  createNode(type_: OleVariant; const name: WideString; const namespaceURI: WideString): IXMLDOMNode;
+    function  nodeFromID(const idString: WideString): IXMLDOMNode;
+    function  load(xmlSource: OleVariant): WordBool;
+    procedure abort;
+    function  loadXML(const bstrXML: WideString): WordBool;
+    procedure save(desination: OleVariant);
+    property  DefaultInterface: IXMLDOMDocument read GetDefaultInterface;
+    property doctype: IXMLDOMDocumentType read Get_doctype;
+    property implementation_: IXMLDOMImplementation read Get_implementation_;
+    property documentElement: IXMLDOMElement read Get_documentElement write Set_documentElement;
+    property readyState: Integer read Get_readyState;
+    property parseError: IXMLDOMParseError read Get_parseError;
+    property url: WideString read Get_url;
+    property onreadystatechange: OleVariant write Set_onreadystatechange;
+    property ondataavailable: OleVariant write Set_ondataavailable;
+    property ontransformnode: OleVariant write Set_ontransformnode;
+    property async: WordBool read Get_async write Set_async;
+    property validateOnParse: WordBool read Get_validateOnParse write Set_validateOnParse;
+    property resolveExternals: WordBool read Get_resolveExternals write Set_resolveExternals;
+    property preserveWhiteSpace: WordBool read Get_preserveWhiteSpace write Set_preserveWhiteSpace;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TDOMFreeThreadedDocumentProperties read GetServerProperties;
+{$ENDIF}
+    property Onondataavailable: TNotifyEvent read FOnondataavailable write FOnondataavailable;
+    property Ononreadystatechange: TNotifyEvent read FOnonreadystatechange write FOnonreadystatechange;
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TDOMFreeThreadedDocument
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TDOMFreeThreadedDocumentProperties = class(TPersistent)
+  private
+    FServer:    TDOMFreeThreadedDocument;
+    function    GetDefaultInterface: IXMLDOMDocument;
+    constructor Create(AServer: TDOMFreeThreadedDocument);
+  protected
+    function  Get_doctype: IXMLDOMDocumentType;
+    function  Get_implementation_: IXMLDOMImplementation;
+    function  Get_documentElement: IXMLDOMElement;
+    procedure Set_documentElement(const DOMElement: IXMLDOMElement);
+    function  Get_readyState: Integer;
+    function  Get_parseError: IXMLDOMParseError;
+    function  Get_url: WideString;
+    function  Get_async: WordBool;
+    procedure Set_async(isAsync: WordBool);
+    function  Get_validateOnParse: WordBool;
+    procedure Set_validateOnParse(isValidating: WordBool);
+    function  Get_resolveExternals: WordBool;
+    procedure Set_resolveExternals(isResolving: WordBool);
+    function  Get_preserveWhiteSpace: WordBool;
+    procedure Set_preserveWhiteSpace(isPreserving: WordBool);
+    procedure Set_onreadystatechange(Param1: OleVariant);
+    procedure Set_ondataavailable(Param1: OleVariant);
+    procedure Set_ontransformnode(Param1: OleVariant);
+  public
+    property DefaultInterface: IXMLDOMDocument read GetDefaultInterface;
+  published
+    property async: WordBool read Get_async write Set_async;
+    property validateOnParse: WordBool read Get_validateOnParse write Set_validateOnParse;
+    property resolveExternals: WordBool read Get_resolveExternals write Set_resolveExternals;
+    property preserveWhiteSpace: WordBool read Get_preserveWhiteSpace write Set_preserveWhiteSpace;
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoXMLHTTPRequest provides a Create and CreateRemote method to          
+// create instances of the default interface IXMLHttpRequest exposed by              
+// the CoClass XMLHTTPRequest. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoXMLHTTPRequest = class
+    class function Create: IXMLHttpRequest;
+    class function CreateRemote(const MachineName: string): IXMLHttpRequest;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TXMLHTTPRequest
+// Help String      : XML HTTP Request class.
+// Default Interface: IXMLHttpRequest
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TXMLHTTPRequestProperties= class;
+{$ENDIF}
+  TXMLHTTPRequest = class(TOleServer)
+  private
+    FIntf:        IXMLHttpRequest;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TXMLHTTPRequestProperties;
+    function      GetServerProperties: TXMLHTTPRequestProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IXMLHttpRequest;
+  protected
+    procedure InitServerData; override;
+    function  Get_status: Integer;
+    function  Get_statusText: WideString;
+    function  Get_responseXML: IDispatch;
+    function  Get_responseText: WideString;
+    function  Get_responseBody: OleVariant;
+    function  Get_responseStream: OleVariant;
+    function  Get_readyState: Integer;
+    procedure Set_onreadystatechange(const Param1: IDispatch);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IXMLHttpRequest);
+    procedure Disconnect; override;
+    procedure open(const bstrMethod: WideString; const bstrUrl: WideString); overload;
+    procedure open(const bstrMethod: WideString; const bstrUrl: WideString; varAsync: OleVariant); overload;
+    procedure open(const bstrMethod: WideString; const bstrUrl: WideString; varAsync: OleVariant; 
+                   bstrUser: OleVariant); overload;
+    procedure open(const bstrMethod: WideString; const bstrUrl: WideString; varAsync: OleVariant; 
+                   bstrUser: OleVariant; bstrPassword: OleVariant); overload;
+    procedure setRequestHeader(const bstrHeader: WideString; const bstrValue: WideString);
+    function  getResponseHeader(const bstrHeader: WideString): WideString;
+    function  getAllResponseHeaders: WideString;
+    procedure send; overload;
+    procedure send(varBody: OleVariant); overload;
+    procedure abort;
+    property  DefaultInterface: IXMLHttpRequest read GetDefaultInterface;
+    property status: Integer read Get_status;
+    property statusText: WideString read Get_statusText;
+    property responseXML: IDispatch read Get_responseXML;
+    property responseText: WideString read Get_responseText;
+    property responseBody: OleVariant read Get_responseBody;
+    property responseStream: OleVariant read Get_responseStream;
+    property readyState: Integer read Get_readyState;
+    property onreadystatechange: IDispatch write Set_onreadystatechange;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TXMLHTTPRequestProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TXMLHTTPRequest
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TXMLHTTPRequestProperties = class(TPersistent)
+  private
+    FServer:    TXMLHTTPRequest;
+    function    GetDefaultInterface: IXMLHttpRequest;
+    constructor Create(AServer: TXMLHTTPRequest);
+  protected
+    function  Get_status: Integer;
+    function  Get_statusText: WideString;
+    function  Get_responseXML: IDispatch;
+    function  Get_responseText: WideString;
+    function  Get_responseBody: OleVariant;
+    function  Get_responseStream: OleVariant;
+    function  Get_readyState: Integer;
+    procedure Set_onreadystatechange(const Param1: IDispatch);
+  public
+    property DefaultInterface: IXMLHttpRequest read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoXMLDSOControl provides a Create and CreateRemote method to          
+// create instances of the default interface IXMLDSOControl exposed by              
+// the CoClass XMLDSOControl. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoXMLDSOControl = class
+    class function Create: IXMLDSOControl;
+    class function CreateRemote(const MachineName: string): IXMLDSOControl;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TXMLDSOControl
+// Help String      : XML Data Source Object
+// Default Interface: IXMLDSOControl
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TXMLDSOControlProperties= class;
+{$ENDIF}
+  TXMLDSOControl = class(TOleServer)
+  private
+    FIntf:        IXMLDSOControl;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TXMLDSOControlProperties;
+    function      GetServerProperties: TXMLDSOControlProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IXMLDSOControl;
+  protected
+    procedure InitServerData; override;
+    function  Get_XMLDocument: IXMLDOMDocument;
+    procedure Set_XMLDocument(const ppDoc: IXMLDOMDocument);
+    function  Get_JavaDSOCompatible: Integer;
+    procedure Set_JavaDSOCompatible(fJavaDSOCompatible: Integer);
+    function  Get_readyState: Integer;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IXMLDSOControl);
+    procedure Disconnect; override;
+    property  DefaultInterface: IXMLDSOControl read GetDefaultInterface;
+    property readyState: Integer read Get_readyState;
+    property XMLDocument: IXMLDOMDocument read Get_XMLDocument write Set_XMLDocument;
+    property JavaDSOCompatible: Integer read Get_JavaDSOCompatible write Set_JavaDSOCompatible;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TXMLDSOControlProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TXMLDSOControl
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TXMLDSOControlProperties = class(TPersistent)
+  private
+    FServer:    TXMLDSOControl;
+    function    GetDefaultInterface: IXMLDSOControl;
+    constructor Create(AServer: TXMLDSOControl);
+  protected
+    function  Get_XMLDocument: IXMLDOMDocument;
+    procedure Set_XMLDocument(const ppDoc: IXMLDOMDocument);
+    function  Get_JavaDSOCompatible: Integer;
+    procedure Set_JavaDSOCompatible(fJavaDSOCompatible: Integer);
+    function  Get_readyState: Integer;
+  public
+    property DefaultInterface: IXMLDSOControl read GetDefaultInterface;
+  published
+    property XMLDocument: IXMLDOMDocument read Get_XMLDocument write Set_XMLDocument;
+    property JavaDSOCompatible: Integer read Get_JavaDSOCompatible write Set_JavaDSOCompatible;
+  end;
+{$ENDIF}
+
+
+// *********************************************************************//
+// The Class CoXMLDocument provides a Create and CreateRemote method to          
+// create instances of the default interface IXMLDocument2 exposed by              
+// the CoClass XMLDocument. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoXMLDocument = class
+    class function Create: IXMLDocument2;
+    class function CreateRemote(const MachineName: string): IXMLDocument2;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TXMLDocument
+// Help String      : XMLDocument extends IXML Document.  It is obsolete.  You should use DOMDocument.  This object should not be confused with the XMLDocument property on the XML data island.
+// Default Interface: IXMLDocument2
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TXMLDocumentProperties= class;
+{$ENDIF}
+  TXMLDocument = class(TOleServer)
+  private
+    FIntf:        IXMLDocument2;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps:       TXMLDocumentProperties;
+    function      GetServerProperties: TXMLDocumentProperties;
+{$ENDIF}
+    function      GetDefaultInterface: IXMLDocument2;
+  protected
+    procedure InitServerData; override;
+    function  Get_root(out p: IXMLElement2): HResult;
+    function  Get_url(out p: WideString): HResult;
+    function  Set_url(const p: WideString): HResult;
+    function  Get_readyState(out pl: Integer): HResult;
+    function  Get_charset(out p: WideString): HResult;
+    function  Set_charset(const p: WideString): HResult;
+    function  Get_version(out p: WideString): HResult;
+    function  Get_doctype(out p: WideString): HResult;
+    function  Get_async(out pf: WordBool): HResult;
+    function  Set_async(pf: WordBool): HResult;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IXMLDocument2);
+    procedure Disconnect; override;
+    function  createElement(vType: OleVariant; var1: OleVariant; out ppElem: IXMLElement2): HResult;
+    property  DefaultInterface: IXMLDocument2 read GetDefaultInterface;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TXMLDocumentProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TXMLDocument
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TXMLDocumentProperties = class(TPersistent)
+  private
+    FServer:    TXMLDocument;
+    function    GetDefaultInterface: IXMLDocument2;
+    constructor Create(AServer: TXMLDocument);
+  protected
+    function  Get_root(out p: IXMLElement2): HResult;
+    function  Get_url(out p: WideString): HResult;
+    function  Set_url(const p: WideString): HResult;
+    function  Get_readyState(out pl: Integer): HResult;
+    function  Get_charset(out p: WideString): HResult;
+    function  Set_charset(const p: WideString): HResult;
+    function  Get_version(out p: WideString): HResult;
+    function  Get_doctype(out p: WideString): HResult;
+    function  Get_async(out pf: WordBool): HResult;
+    function  Set_async(pf: WordBool): HResult;
+  public
+    property DefaultInterface: IXMLDocument2 read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+procedure Register;
+
+implementation
+
+uses ComObj;
+
+class function CoDOMDocument.Create: IXMLDOMDocument;
+begin
+  Result := CreateComObject(CLASS_DOMDocument) as IXMLDOMDocument;
+end;
+
+class function CoDOMDocument.CreateRemote(const MachineName: string): IXMLDOMDocument;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_DOMDocument) as IXMLDOMDocument;
+end;
+
+procedure TDOMDocument.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{2933BF90-7B36-11D2-B20E-00C04F983E60}';
+    IntfIID:   '{2933BF81-7B36-11D2-B20E-00C04F983E60}';
+    EventIID:  '{3EFAA427-272F-11D2-836F-0000F87A7782}';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TDOMDocument.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    ConnectEvents(punk);
+    Fintf:= punk as IXMLDOMDocument;
+  end;
+end;
+
+procedure TDOMDocument.ConnectTo(svrIntf: IXMLDOMDocument);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+  ConnectEvents(FIntf);
+end;
+
+procedure TDOMDocument.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    DisconnectEvents(FIntf);
+    FIntf := nil;
+  end;
+end;
+
+function TDOMDocument.GetDefaultInterface: IXMLDOMDocument;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TDOMDocument.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TDOMDocumentProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TDOMDocument.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TDOMDocument.GetServerProperties: TDOMDocumentProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+procedure TDOMDocument.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
+begin
+  case DispID of
+    -1: Exit;  // DISPID_UNKNOWN
+   198: if Assigned(FOnondataavailable) then
+            FOnondataavailable(Self);
+   -609: if Assigned(FOnonreadystatechange) then
+            FOnonreadystatechange(Self);
+  end; {case DispID}
+end;
+
+function  TDOMDocument.Get_doctype: IXMLDOMDocumentType;
+begin
+  Result := DefaultInterface.Get_doctype;
+end;
+
+function  TDOMDocument.Get_implementation_: IXMLDOMImplementation;
+begin
+  Result := DefaultInterface.Get_implementation_;
+end;
+
+function  TDOMDocument.Get_documentElement: IXMLDOMElement;
+begin
+  Result := DefaultInterface.Get_documentElement;
+end;
+
+procedure TDOMDocument.Set_documentElement(const DOMElement: IXMLDOMElement);
+begin
+  DefaultInterface.Set_documentElement(DOMElement);
+end;
+
+function  TDOMDocument.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+function  TDOMDocument.Get_parseError: IXMLDOMParseError;
+begin
+  Result := DefaultInterface.Get_parseError;
+end;
+
+function  TDOMDocument.Get_url: WideString;
+begin
+  Result := DefaultInterface.Get_url;
+end;
+
+function  TDOMDocument.Get_async: WordBool;
+begin
+  Result := DefaultInterface.Get_async;
+end;
+
+procedure TDOMDocument.Set_async(isAsync: WordBool);
+begin
+  DefaultInterface.Set_async(isAsync);
+end;
+
+function  TDOMDocument.Get_validateOnParse: WordBool;
+begin
+  Result := DefaultInterface.Get_validateOnParse;
+end;
+
+procedure TDOMDocument.Set_validateOnParse(isValidating: WordBool);
+begin
+  DefaultInterface.Set_validateOnParse(isValidating);
+end;
+
+function  TDOMDocument.Get_resolveExternals: WordBool;
+begin
+  Result := DefaultInterface.Get_resolveExternals;
+end;
+
+procedure TDOMDocument.Set_resolveExternals(isResolving: WordBool);
+begin
+  DefaultInterface.Set_resolveExternals(isResolving);
+end;
+
+function  TDOMDocument.Get_preserveWhiteSpace: WordBool;
+begin
+  Result := DefaultInterface.Get_preserveWhiteSpace;
+end;
+
+procedure TDOMDocument.Set_preserveWhiteSpace(isPreserving: WordBool);
+begin
+  DefaultInterface.Set_preserveWhiteSpace(isPreserving);
+end;
+
+procedure TDOMDocument.Set_onreadystatechange(Param1: OleVariant);
+begin
+  DefaultInterface.Set_onreadystatechange(Param1);
+end;
+
+procedure TDOMDocument.Set_ondataavailable(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ondataavailable(Param1);
+end;
+
+procedure TDOMDocument.Set_ontransformnode(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ontransformnode(Param1);
+end;
+
+function  TDOMDocument.createElement(const tagName: WideString): IXMLDOMElement;
+begin
+  Result := DefaultInterface.createElement(tagName);
+end;
+
+function  TDOMDocument.createDocumentFragment: IXMLDOMDocumentFragment;
+begin
+  Result := DefaultInterface.createDocumentFragment;
+end;
+
+function  TDOMDocument.createTextNode(const data: WideString): IXMLDOMText;
+begin
+  Result := DefaultInterface.createTextNode(data);
+end;
+
+function  TDOMDocument.createComment(const data: WideString): IXMLDOMComment;
+begin
+  Result := DefaultInterface.createComment(data);
+end;
+
+function  TDOMDocument.createCDATASection(const data: WideString): IXMLDOMCDATASection;
+begin
+  Result := DefaultInterface.createCDATASection(data);
+end;
+
+function  TDOMDocument.createProcessingInstruction(const target: WideString; const data: WideString): IXMLDOMProcessingInstruction;
+begin
+  Result := DefaultInterface.createProcessingInstruction(target, data);
+end;
+
+function  TDOMDocument.createAttribute(const name: WideString): IXMLDOMAttribute;
+begin
+  Result := DefaultInterface.createAttribute(name);
+end;
+
+function  TDOMDocument.createEntityReference(const name: WideString): IXMLDOMEntityReference;
+begin
+  Result := DefaultInterface.createEntityReference(name);
+end;
+
+function  TDOMDocument.getElementsByTagName(const tagName: WideString): IXMLDOMNodeList;
+begin
+  Result := DefaultInterface.getElementsByTagName(tagName);
+end;
+
+function  TDOMDocument.createNode(type_: OleVariant; const name: WideString; 
+                                  const namespaceURI: WideString): IXMLDOMNode;
+begin
+  Result := DefaultInterface.createNode(type_, name, namespaceURI);
+end;
+
+function  TDOMDocument.nodeFromID(const idString: WideString): IXMLDOMNode;
+begin
+  Result := DefaultInterface.nodeFromID(idString);
+end;
+
+function  TDOMDocument.load(xmlSource: OleVariant): WordBool;
+begin
+  Result := DefaultInterface.load(xmlSource);
+end;
+
+procedure TDOMDocument.abort;
+begin
+  DefaultInterface.abort;
+end;
+
+function  TDOMDocument.loadXML(const bstrXML: WideString): WordBool;
+begin
+  Result := DefaultInterface.loadXML(bstrXML);
+end;
+
+procedure TDOMDocument.save(desination: OleVariant);
+begin
+  DefaultInterface.save(desination);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TDOMDocumentProperties.Create(AServer: TDOMDocument);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TDOMDocumentProperties.GetDefaultInterface: IXMLDOMDocument;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TDOMDocumentProperties.Get_doctype: IXMLDOMDocumentType;
+begin
+  Result := DefaultInterface.Get_doctype;
+end;
+
+function  TDOMDocumentProperties.Get_implementation_: IXMLDOMImplementation;
+begin
+  Result := DefaultInterface.Get_implementation_;
+end;
+
+function  TDOMDocumentProperties.Get_documentElement: IXMLDOMElement;
+begin
+  Result := DefaultInterface.Get_documentElement;
+end;
+
+procedure TDOMDocumentProperties.Set_documentElement(const DOMElement: IXMLDOMElement);
+begin
+  DefaultInterface.Set_documentElement(DOMElement);
+end;
+
+function  TDOMDocumentProperties.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+function  TDOMDocumentProperties.Get_parseError: IXMLDOMParseError;
+begin
+  Result := DefaultInterface.Get_parseError;
+end;
+
+function  TDOMDocumentProperties.Get_url: WideString;
+begin
+  Result := DefaultInterface.Get_url;
+end;
+
+function  TDOMDocumentProperties.Get_async: WordBool;
+begin
+  Result := DefaultInterface.Get_async;
+end;
+
+procedure TDOMDocumentProperties.Set_async(isAsync: WordBool);
+begin
+  DefaultInterface.Set_async(isAsync);
+end;
+
+function  TDOMDocumentProperties.Get_validateOnParse: WordBool;
+begin
+  Result := DefaultInterface.Get_validateOnParse;
+end;
+
+procedure TDOMDocumentProperties.Set_validateOnParse(isValidating: WordBool);
+begin
+  DefaultInterface.Set_validateOnParse(isValidating);
+end;
+
+function  TDOMDocumentProperties.Get_resolveExternals: WordBool;
+begin
+  Result := DefaultInterface.Get_resolveExternals;
+end;
+
+procedure TDOMDocumentProperties.Set_resolveExternals(isResolving: WordBool);
+begin
+  DefaultInterface.Set_resolveExternals(isResolving);
+end;
+
+function  TDOMDocumentProperties.Get_preserveWhiteSpace: WordBool;
+begin
+  Result := DefaultInterface.Get_preserveWhiteSpace;
+end;
+
+procedure TDOMDocumentProperties.Set_preserveWhiteSpace(isPreserving: WordBool);
+begin
+  DefaultInterface.Set_preserveWhiteSpace(isPreserving);
+end;
+
+procedure TDOMDocumentProperties.Set_onreadystatechange(Param1: OleVariant);
+begin
+  DefaultInterface.Set_onreadystatechange(Param1);
+end;
+
+procedure TDOMDocumentProperties.Set_ondataavailable(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ondataavailable(Param1);
+end;
+
+procedure TDOMDocumentProperties.Set_ontransformnode(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ontransformnode(Param1);
+end;
+
+{$ENDIF}
+
+class function CoDOMFreeThreadedDocument.Create: IXMLDOMDocument;
+begin
+  Result := CreateComObject(CLASS_DOMFreeThreadedDocument) as IXMLDOMDocument;
+end;
+
+class function CoDOMFreeThreadedDocument.CreateRemote(const MachineName: string): IXMLDOMDocument;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_DOMFreeThreadedDocument) as IXMLDOMDocument;
+end;
+
+procedure TDOMFreeThreadedDocument.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{2933BF91-7B36-11D2-B20E-00C04F983E60}';
+    IntfIID:   '{2933BF81-7B36-11D2-B20E-00C04F983E60}';
+    EventIID:  '{3EFAA427-272F-11D2-836F-0000F87A7782}';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TDOMFreeThreadedDocument.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    ConnectEvents(punk);
+    Fintf:= punk as IXMLDOMDocument;
+  end;
+end;
+
+procedure TDOMFreeThreadedDocument.ConnectTo(svrIntf: IXMLDOMDocument);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+  ConnectEvents(FIntf);
+end;
+
+procedure TDOMFreeThreadedDocument.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    DisconnectEvents(FIntf);
+    FIntf := nil;
+  end;
+end;
+
+function TDOMFreeThreadedDocument.GetDefaultInterface: IXMLDOMDocument;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TDOMFreeThreadedDocument.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TDOMFreeThreadedDocumentProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TDOMFreeThreadedDocument.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TDOMFreeThreadedDocument.GetServerProperties: TDOMFreeThreadedDocumentProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+procedure TDOMFreeThreadedDocument.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
+begin
+  case DispID of
+    -1: Exit;  // DISPID_UNKNOWN
+   198: if Assigned(FOnondataavailable) then
+            FOnondataavailable(Self);
+   -609: if Assigned(FOnonreadystatechange) then
+            FOnonreadystatechange(Self);
+  end; {case DispID}
+end;
+
+function  TDOMFreeThreadedDocument.Get_doctype: IXMLDOMDocumentType;
+begin
+  Result := DefaultInterface.Get_doctype;
+end;
+
+function  TDOMFreeThreadedDocument.Get_implementation_: IXMLDOMImplementation;
+begin
+  Result := DefaultInterface.Get_implementation_;
+end;
+
+function  TDOMFreeThreadedDocument.Get_documentElement: IXMLDOMElement;
+begin
+  Result := DefaultInterface.Get_documentElement;
+end;
+
+procedure TDOMFreeThreadedDocument.Set_documentElement(const DOMElement: IXMLDOMElement);
+begin
+  DefaultInterface.Set_documentElement(DOMElement);
+end;
+
+function  TDOMFreeThreadedDocument.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+function  TDOMFreeThreadedDocument.Get_parseError: IXMLDOMParseError;
+begin
+  Result := DefaultInterface.Get_parseError;
+end;
+
+function  TDOMFreeThreadedDocument.Get_url: WideString;
+begin
+  Result := DefaultInterface.Get_url;
+end;
+
+function  TDOMFreeThreadedDocument.Get_async: WordBool;
+begin
+  Result := DefaultInterface.Get_async;
+end;
+
+procedure TDOMFreeThreadedDocument.Set_async(isAsync: WordBool);
+begin
+  DefaultInterface.Set_async(isAsync);
+end;
+
+function  TDOMFreeThreadedDocument.Get_validateOnParse: WordBool;
+begin
+  Result := DefaultInterface.Get_validateOnParse;
+end;
+
+procedure TDOMFreeThreadedDocument.Set_validateOnParse(isValidating: WordBool);
+begin
+  DefaultInterface.Set_validateOnParse(isValidating);
+end;
+
+function  TDOMFreeThreadedDocument.Get_resolveExternals: WordBool;
+begin
+  Result := DefaultInterface.Get_resolveExternals;
+end;
+
+procedure TDOMFreeThreadedDocument.Set_resolveExternals(isResolving: WordBool);
+begin
+  DefaultInterface.Set_resolveExternals(isResolving);
+end;
+
+function  TDOMFreeThreadedDocument.Get_preserveWhiteSpace: WordBool;
+begin
+  Result := DefaultInterface.Get_preserveWhiteSpace;
+end;
+
+procedure TDOMFreeThreadedDocument.Set_preserveWhiteSpace(isPreserving: WordBool);
+begin
+  DefaultInterface.Set_preserveWhiteSpace(isPreserving);
+end;
+
+procedure TDOMFreeThreadedDocument.Set_onreadystatechange(Param1: OleVariant);
+begin
+  DefaultInterface.Set_onreadystatechange(Param1);
+end;
+
+procedure TDOMFreeThreadedDocument.Set_ondataavailable(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ondataavailable(Param1);
+end;
+
+procedure TDOMFreeThreadedDocument.Set_ontransformnode(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ontransformnode(Param1);
+end;
+
+function  TDOMFreeThreadedDocument.createElement(const tagName: WideString): IXMLDOMElement;
+begin
+  Result := DefaultInterface.createElement(tagName);
+end;
+
+function  TDOMFreeThreadedDocument.createDocumentFragment: IXMLDOMDocumentFragment;
+begin
+  Result := DefaultInterface.createDocumentFragment;
+end;
+
+function  TDOMFreeThreadedDocument.createTextNode(const data: WideString): IXMLDOMText;
+begin
+  Result := DefaultInterface.createTextNode(data);
+end;
+
+function  TDOMFreeThreadedDocument.createComment(const data: WideString): IXMLDOMComment;
+begin
+  Result := DefaultInterface.createComment(data);
+end;
+
+function  TDOMFreeThreadedDocument.createCDATASection(const data: WideString): IXMLDOMCDATASection;
+begin
+  Result := DefaultInterface.createCDATASection(data);
+end;
+
+function  TDOMFreeThreadedDocument.createProcessingInstruction(const target: WideString; 
+                                                               const data: WideString): IXMLDOMProcessingInstruction;
+begin
+  Result := DefaultInterface.createProcessingInstruction(target, data);
+end;
+
+function  TDOMFreeThreadedDocument.createAttribute(const name: WideString): IXMLDOMAttribute;
+begin
+  Result := DefaultInterface.createAttribute(name);
+end;
+
+function  TDOMFreeThreadedDocument.createEntityReference(const name: WideString): IXMLDOMEntityReference;
+begin
+  Result := DefaultInterface.createEntityReference(name);
+end;
+
+function  TDOMFreeThreadedDocument.getElementsByTagName(const tagName: WideString): IXMLDOMNodeList;
+begin
+  Result := DefaultInterface.getElementsByTagName(tagName);
+end;
+
+function  TDOMFreeThreadedDocument.createNode(type_: OleVariant; const name: WideString; 
+                                              const namespaceURI: WideString): IXMLDOMNode;
+begin
+  Result := DefaultInterface.createNode(type_, name, namespaceURI);
+end;
+
+function  TDOMFreeThreadedDocument.nodeFromID(const idString: WideString): IXMLDOMNode;
+begin
+  Result := DefaultInterface.nodeFromID(idString);
+end;
+
+function  TDOMFreeThreadedDocument.load(xmlSource: OleVariant): WordBool;
+begin
+  Result := DefaultInterface.load(xmlSource);
+end;
+
+procedure TDOMFreeThreadedDocument.abort;
+begin
+  DefaultInterface.abort;
+end;
+
+function  TDOMFreeThreadedDocument.loadXML(const bstrXML: WideString): WordBool;
+begin
+  Result := DefaultInterface.loadXML(bstrXML);
+end;
+
+procedure TDOMFreeThreadedDocument.save(desination: OleVariant);
+begin
+  DefaultInterface.save(desination);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TDOMFreeThreadedDocumentProperties.Create(AServer: TDOMFreeThreadedDocument);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TDOMFreeThreadedDocumentProperties.GetDefaultInterface: IXMLDOMDocument;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_doctype: IXMLDOMDocumentType;
+begin
+  Result := DefaultInterface.Get_doctype;
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_implementation_: IXMLDOMImplementation;
+begin
+  Result := DefaultInterface.Get_implementation_;
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_documentElement: IXMLDOMElement;
+begin
+  Result := DefaultInterface.Get_documentElement;
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_documentElement(const DOMElement: IXMLDOMElement);
+begin
+  DefaultInterface.Set_documentElement(DOMElement);
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_parseError: IXMLDOMParseError;
+begin
+  Result := DefaultInterface.Get_parseError;
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_url: WideString;
+begin
+  Result := DefaultInterface.Get_url;
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_async: WordBool;
+begin
+  Result := DefaultInterface.Get_async;
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_async(isAsync: WordBool);
+begin
+  DefaultInterface.Set_async(isAsync);
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_validateOnParse: WordBool;
+begin
+  Result := DefaultInterface.Get_validateOnParse;
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_validateOnParse(isValidating: WordBool);
+begin
+  DefaultInterface.Set_validateOnParse(isValidating);
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_resolveExternals: WordBool;
+begin
+  Result := DefaultInterface.Get_resolveExternals;
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_resolveExternals(isResolving: WordBool);
+begin
+  DefaultInterface.Set_resolveExternals(isResolving);
+end;
+
+function  TDOMFreeThreadedDocumentProperties.Get_preserveWhiteSpace: WordBool;
+begin
+  Result := DefaultInterface.Get_preserveWhiteSpace;
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_preserveWhiteSpace(isPreserving: WordBool);
+begin
+  DefaultInterface.Set_preserveWhiteSpace(isPreserving);
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_onreadystatechange(Param1: OleVariant);
+begin
+  DefaultInterface.Set_onreadystatechange(Param1);
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_ondataavailable(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ondataavailable(Param1);
+end;
+
+procedure TDOMFreeThreadedDocumentProperties.Set_ontransformnode(Param1: OleVariant);
+begin
+  DefaultInterface.Set_ontransformnode(Param1);
+end;
+
+{$ENDIF}
+
+class function CoXMLHTTPRequest.Create: IXMLHttpRequest;
+begin
+  Result := CreateComObject(CLASS_XMLHTTPRequest) as IXMLHttpRequest;
+end;
+
+class function CoXMLHTTPRequest.CreateRemote(const MachineName: string): IXMLHttpRequest;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_XMLHTTPRequest) as IXMLHttpRequest;
+end;
+
+procedure TXMLHTTPRequest.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{ED8C108E-4349-11D2-91A4-00C04F7969E8}';
+    IntfIID:   '{ED8C108D-4349-11D2-91A4-00C04F7969E8}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TXMLHTTPRequest.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IXMLHttpRequest;
+  end;
+end;
+
+procedure TXMLHTTPRequest.ConnectTo(svrIntf: IXMLHttpRequest);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TXMLHTTPRequest.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TXMLHTTPRequest.GetDefaultInterface: IXMLHttpRequest;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TXMLHTTPRequest.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TXMLHTTPRequestProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TXMLHTTPRequest.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TXMLHTTPRequest.GetServerProperties: TXMLHTTPRequestProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TXMLHTTPRequest.Get_status: Integer;
+begin
+  Result := DefaultInterface.Get_status;
+end;
+
+function  TXMLHTTPRequest.Get_statusText: WideString;
+begin
+  Result := DefaultInterface.Get_statusText;
+end;
+
+function  TXMLHTTPRequest.Get_responseXML: IDispatch;
+begin
+  Result := DefaultInterface.Get_responseXML;
+end;
+
+function  TXMLHTTPRequest.Get_responseText: WideString;
+begin
+  Result := DefaultInterface.Get_responseText;
+end;
+
+function  TXMLHTTPRequest.Get_responseBody: OleVariant;
+begin
+  Result := DefaultInterface.Get_responseBody;
+end;
+
+function  TXMLHTTPRequest.Get_responseStream: OleVariant;
+begin
+  Result := DefaultInterface.Get_responseStream;
+end;
+
+function  TXMLHTTPRequest.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+procedure TXMLHTTPRequest.Set_onreadystatechange(const Param1: IDispatch);
+begin
+  DefaultInterface.Set_onreadystatechange(Param1);
+end;
+
+procedure TXMLHTTPRequest.open(const bstrMethod: WideString; const bstrUrl: WideString);
+begin
+  DefaultInterface.open(bstrMethod, bstrUrl, EmptyParam, EmptyParam, EmptyParam);
+end;
+
+procedure TXMLHTTPRequest.open(const bstrMethod: WideString; const bstrUrl: WideString; 
+                               varAsync: OleVariant);
+begin
+  DefaultInterface.open(bstrMethod, bstrUrl, varAsync, EmptyParam, EmptyParam);
+end;
+
+procedure TXMLHTTPRequest.open(const bstrMethod: WideString; const bstrUrl: WideString; 
+                               varAsync: OleVariant; bstrUser: OleVariant);
+begin
+  DefaultInterface.open(bstrMethod, bstrUrl, varAsync, bstrUser, EmptyParam);
+end;
+
+procedure TXMLHTTPRequest.open(const bstrMethod: WideString; const bstrUrl: WideString; 
+                               varAsync: OleVariant; bstrUser: OleVariant; bstrPassword: OleVariant);
+begin
+  DefaultInterface.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
+end;
+
+procedure TXMLHTTPRequest.setRequestHeader(const bstrHeader: WideString; const bstrValue: WideString);
+begin
+  DefaultInterface.setRequestHeader(bstrHeader, bstrValue);
+end;
+
+function  TXMLHTTPRequest.getResponseHeader(const bstrHeader: WideString): WideString;
+begin
+  Result := DefaultInterface.getResponseHeader(bstrHeader);
+end;
+
+function  TXMLHTTPRequest.getAllResponseHeaders: WideString;
+begin
+  Result := DefaultInterface.getAllResponseHeaders;
+end;
+
+procedure TXMLHTTPRequest.send;
+begin
+  DefaultInterface.send(EmptyParam);
+end;
+
+procedure TXMLHTTPRequest.send(varBody: OleVariant);
+begin
+  DefaultInterface.send(varBody);
+end;
+
+procedure TXMLHTTPRequest.abort;
+begin
+  DefaultInterface.abort;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TXMLHTTPRequestProperties.Create(AServer: TXMLHTTPRequest);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TXMLHTTPRequestProperties.GetDefaultInterface: IXMLHttpRequest;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TXMLHTTPRequestProperties.Get_status: Integer;
+begin
+  Result := DefaultInterface.Get_status;
+end;
+
+function  TXMLHTTPRequestProperties.Get_statusText: WideString;
+begin
+  Result := DefaultInterface.Get_statusText;
+end;
+
+function  TXMLHTTPRequestProperties.Get_responseXML: IDispatch;
+begin
+  Result := DefaultInterface.Get_responseXML;
+end;
+
+function  TXMLHTTPRequestProperties.Get_responseText: WideString;
+begin
+  Result := DefaultInterface.Get_responseText;
+end;
+
+function  TXMLHTTPRequestProperties.Get_responseBody: OleVariant;
+begin
+  Result := DefaultInterface.Get_responseBody;
+end;
+
+function  TXMLHTTPRequestProperties.Get_responseStream: OleVariant;
+begin
+  Result := DefaultInterface.Get_responseStream;
+end;
+
+function  TXMLHTTPRequestProperties.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+procedure TXMLHTTPRequestProperties.Set_onreadystatechange(const Param1: IDispatch);
+begin
+  DefaultInterface.Set_onreadystatechange(Param1);
+end;
+
+{$ENDIF}
+
+class function CoXMLDSOControl.Create: IXMLDSOControl;
+begin
+  Result := CreateComObject(CLASS_XMLDSOControl) as IXMLDSOControl;
+end;
+
+class function CoXMLDSOControl.CreateRemote(const MachineName: string): IXMLDSOControl;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_XMLDSOControl) as IXMLDSOControl;
+end;
+
+procedure TXMLDSOControl.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{550DDA30-0541-11D2-9CA9-0060B0EC3D39}';
+    IntfIID:   '{310AFA62-0575-11D2-9CA9-0060B0EC3D39}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TXMLDSOControl.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IXMLDSOControl;
+  end;
+end;
+
+procedure TXMLDSOControl.ConnectTo(svrIntf: IXMLDSOControl);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TXMLDSOControl.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TXMLDSOControl.GetDefaultInterface: IXMLDSOControl;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TXMLDSOControl.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TXMLDSOControlProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TXMLDSOControl.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TXMLDSOControl.GetServerProperties: TXMLDSOControlProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TXMLDSOControl.Get_XMLDocument: IXMLDOMDocument;
+begin
+  Result := DefaultInterface.Get_XMLDocument;
+end;
+
+procedure TXMLDSOControl.Set_XMLDocument(const ppDoc: IXMLDOMDocument);
+begin
+  DefaultInterface.Set_XMLDocument(ppDoc);
+end;
+
+function  TXMLDSOControl.Get_JavaDSOCompatible: Integer;
+begin
+  Result := DefaultInterface.Get_JavaDSOCompatible;
+end;
+
+procedure TXMLDSOControl.Set_JavaDSOCompatible(fJavaDSOCompatible: Integer);
+begin
+  DefaultInterface.Set_JavaDSOCompatible(fJavaDSOCompatible);
+end;
+
+function  TXMLDSOControl.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TXMLDSOControlProperties.Create(AServer: TXMLDSOControl);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TXMLDSOControlProperties.GetDefaultInterface: IXMLDSOControl;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TXMLDSOControlProperties.Get_XMLDocument: IXMLDOMDocument;
+begin
+  Result := DefaultInterface.Get_XMLDocument;
+end;
+
+procedure TXMLDSOControlProperties.Set_XMLDocument(const ppDoc: IXMLDOMDocument);
+begin
+  DefaultInterface.Set_XMLDocument(ppDoc);
+end;
+
+function  TXMLDSOControlProperties.Get_JavaDSOCompatible: Integer;
+begin
+  Result := DefaultInterface.Get_JavaDSOCompatible;
+end;
+
+procedure TXMLDSOControlProperties.Set_JavaDSOCompatible(fJavaDSOCompatible: Integer);
+begin
+  DefaultInterface.Set_JavaDSOCompatible(fJavaDSOCompatible);
+end;
+
+function  TXMLDSOControlProperties.Get_readyState: Integer;
+begin
+  Result := DefaultInterface.Get_readyState;
+end;
+
+{$ENDIF}
+
+class function CoXMLDocument.Create: IXMLDocument2;
+begin
+  Result := CreateComObject(CLASS_XMLDocument) as IXMLDocument2;
+end;
+
+class function CoXMLDocument.CreateRemote(const MachineName: string): IXMLDocument2;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_XMLDocument) as IXMLDocument2;
+end;
+
+procedure TXMLDocument.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{CFC399AF-D876-11D0-9C10-00C04FC99C8E}';
+    IntfIID:   '{2B8DE2FE-8D2D-11D1-B2FC-00C04FD915A9}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TXMLDocument.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IXMLDocument2;
+  end;
+end;
+
+procedure TXMLDocument.ConnectTo(svrIntf: IXMLDocument2);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TXMLDocument.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TXMLDocument.GetDefaultInterface: IXMLDocument2;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TXMLDocument.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TXMLDocumentProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TXMLDocument.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TXMLDocument.GetServerProperties: TXMLDocumentProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function  TXMLDocument.Get_root(out p: IXMLElement2): HResult;
+begin
+  Result := DefaultInterface.Get_root(p);
+end;
+
+function  TXMLDocument.Get_url(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_url(p);
+end;
+
+function  TXMLDocument.Set_url(const p: WideString): HResult;
+begin
+  Result := DefaultInterface.Set_url(p);
+end;
+
+function  TXMLDocument.Get_readyState(out pl: Integer): HResult;
+begin
+  Result := DefaultInterface.Get_readyState(pl);
+end;
+
+function  TXMLDocument.Get_charset(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_charset(p);
+end;
+
+function  TXMLDocument.Set_charset(const p: WideString): HResult;
+begin
+  Result := DefaultInterface.Set_charset(p);
+end;
+
+function  TXMLDocument.Get_version(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_version(p);
+end;
+
+function  TXMLDocument.Get_doctype(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_doctype(p);
+end;
+
+function  TXMLDocument.Get_async(out pf: WordBool): HResult;
+begin
+  Result := DefaultInterface.Get_async(pf);
+end;
+
+function  TXMLDocument.Set_async(pf: WordBool): HResult;
+begin
+  Result := DefaultInterface.Set_async(pf);
+end;
+
+function  TXMLDocument.createElement(vType: OleVariant; var1: OleVariant; out ppElem: IXMLElement2): HResult;
+begin
+  Result := DefaultInterface.createElement(vType, var1, ppElem);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TXMLDocumentProperties.Create(AServer: TXMLDocument);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TXMLDocumentProperties.GetDefaultInterface: IXMLDocument2;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+function  TXMLDocumentProperties.Get_root(out p: IXMLElement2): HResult;
+begin
+  Result := DefaultInterface.Get_root(p);
+end;
+
+function  TXMLDocumentProperties.Get_url(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_url(p);
+end;
+
+function  TXMLDocumentProperties.Set_url(const p: WideString): HResult;
+begin
+  Result := DefaultInterface.Set_url(p);
+end;
+
+function  TXMLDocumentProperties.Get_readyState(out pl: Integer): HResult;
+begin
+  Result := DefaultInterface.Get_readyState(pl);
+end;
+
+function  TXMLDocumentProperties.Get_charset(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_charset(p);
+end;
+
+function  TXMLDocumentProperties.Set_charset(const p: WideString): HResult;
+begin
+  Result := DefaultInterface.Set_charset(p);
+end;
+
+function  TXMLDocumentProperties.Get_version(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_version(p);
+end;
+
+function  TXMLDocumentProperties.Get_doctype(out p: WideString): HResult;
+begin
+  Result := DefaultInterface.Get_doctype(p);
+end;
+
+function  TXMLDocumentProperties.Get_async(out pf: WordBool): HResult;
+begin
+  Result := DefaultInterface.Get_async(pf);
+end;
+
+function  TXMLDocumentProperties.Set_async(pf: WordBool): HResult;
+begin
+  Result := DefaultInterface.Set_async(pf);
+end;
+
+{$ENDIF}
+
+procedure Register;
+begin
+  RegisterComponents('ActiveX',[TDOMDocument, TDOMFreeThreadedDocument, TXMLHTTPRequest, TXMLDSOControl, 
+    TXMLDocument]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/MenuBar.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/MenuBar.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/MenuBar.pas	(revision 1676)
@@ -0,0 +1,88 @@
+
+{*******************************************************}
+{                                                       }
+{  Implements a TToolbar descendant that has a Menu to  }
+{  make IDE like Toolbar menus very easy.  This works   }
+{  only in Delphi 4.0                                   }
+{                                                       }
+{       Copyright (c) 1995,98 Inprise Corporation       }
+{                                                       }
+{*******************************************************}
+
+unit MenuBar;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  ToolWin, ComCtrls, Menus;
+
+type
+  TMenuBar = class(TToolBar)
+  private
+    FMenu: TMainMenu;
+    procedure SetMenu(const Value: TMainMenu);
+  protected
+    procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+  published
+    property EdgeBorders default [];
+    property Menu: TMainMenu read FMenu write SetMenu;
+  end;
+
+procedure Register;
+
+implementation
+
+procedure Register;
+begin
+  RegisterComponents('Samples', [TMenuBar]);
+end;
+
+{ TMenuBar }
+
+constructor TMenuBar.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  Flat := True;
+  ShowCaptions := True;
+  EdgeBorders := [];
+  ControlStyle := [csCaptureMouse, csClickEvents,
+    csDoubleClicks, csMenuEvents, csSetCaption];
+end;
+
+procedure TMenuBar.GetChildren(Proc: TGetChildProc; Root: TComponent);
+begin
+end;
+
+procedure TMenuBar.SetMenu(const Value: TMainMenu);
+var
+  i: Integer;
+  Button: TToolButton;
+begin
+  if FMenu = Value then exit;
+  if Assigned(FMenu) then
+    for i := ButtonCount - 1 downto 0 do
+      Buttons[i].Free;
+  FMenu := Value;
+  if not Assigned(FMenu) then exit;
+  for i := ButtonCount to FMenu.Items.Count - 1 do
+  begin
+    Button := TToolButton.Create(Self);
+    try
+      Button.AutoSize := True;
+      Button.Grouped := True;
+      Button.Parent := Self;
+      Buttons[i].MenuItem := FMenu.Items[i];
+    except
+      Button.Free;
+      raise;
+    end;
+  end;
+  { Copy attributes from each menu item }
+  for i := 0 to FMenu.Items.Count - 1 do
+    Buttons[i].MenuItem := FMenu.Items[i];
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/OR2006Compatibility.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/OR2006Compatibility.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/OR2006Compatibility.dfm	(revision 1676)
@@ -0,0 +1,18 @@
+object frm2006Compatibility: Tfrm2006Compatibility
+  Left = 0
+  Top = 0
+  Width = 231
+  Height = 162
+  AutoScroll = True
+  Caption = 'frm2006Compatibility'
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDesigned
+  PixelsPerInch = 96
+  TextHeight = 13
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/OR2006Compatibility.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/OR2006Compatibility.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/OR2006Compatibility.pas	(revision 1676)
@@ -0,0 +1,36 @@
+unit OR2006Compatibility;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs;
+
+{$IFDEF VER140}
+  Compile Error // should not be used in Delphi 6!
+{$ENDIF}
+
+type
+  Tfrm2006Compatibility = class(TForm)
+  public
+    constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
+  end;
+
+var
+  frm2006Compatibility: Tfrm2006Compatibility;
+
+implementation
+
+{$R *.dfm}
+
+{ Tfrm2006Compatibility }
+
+constructor Tfrm2006Compatibility.CreateNew(AOwner: TComponent; Dummy: Integer);
+begin
+  inherited CreateNew(AOwner, Dummy);
+// - if Form is pulled up in Delphi 6, the value stored in the DFM will be erased
+  position := poDesigned;
+  AutoScroll := True;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORClasses.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORClasses.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORClasses.pas	(revision 1676)
@@ -0,0 +1,761 @@
+unit ORClasses;
+
+interface
+
+uses
+  SysUtils, Classes, Controls, ComCtrls, ExtCtrls, StdCtrls, Forms, ORFn;
+
+type
+  TNotifyProc = procedure(Sender: TObject);
+
+  TORNotifyList = class(TObject)
+  private
+    FCode: TList;
+    FData: TList;
+  protected
+    function GetItems(index: integer): TNotifyEvent;
+    procedure SetItems(index: integer; const Value: TNotifyEvent);
+    function GetIsProc(index: integer): boolean;
+    function GetProcs(index: integer): TNotifyProc;
+    procedure SetProcs(index: integer; const Value: TNotifyProc);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function IndexOf(const NotifyProc: TNotifyEvent): integer; overload;
+    function IndexOf(const NotifyProc: TNotifyProc): integer; overload;
+    procedure Add(const NotifyProc: TNotifyEvent); overload;
+    procedure Add(const NotifyProc: TNotifyProc); overload;
+    procedure Clear;
+    function Count: integer;
+    procedure Delete(index: integer);
+    procedure Remove(const NotifyProc: TNotifyEvent); overload;
+    procedure Remove(const NotifyProc: TNotifyProc); overload;
+    procedure Notify(Sender: TObject);
+    property Items[index: integer]: TNotifyEvent read GetItems write SetItems; default;
+    property Procs[index: integer]: TNotifyProc read GetProcs write SetProcs;
+    property IsProc[index: integer]: boolean read GetIsProc;
+  end;
+
+  TCanNotifyEvent = procedure(Sender: TObject; var CanNotify: boolean) of object;
+
+  IORNotifier = interface(IUnknown)
+    function GetOnNotify: TCanNotifyEvent;
+    procedure SetOnNotify(Value: TCanNotifyEvent);
+    procedure BeginUpdate;
+    procedure EndUpdate(DoNotify: boolean = FALSE);
+    procedure NotifyWhenChanged(Event: TNotifyEvent); overload;
+    procedure NotifyWhenChanged(Event: TNotifyProc); overload;
+    procedure RemoveNotify(Event: TNotifyEvent); overload;
+    procedure RemoveNotify(Event: TNotifyProc); overload;
+    procedure Notify; overload;
+    procedure Notify(Sender: TObject); overload;
+    function NotifyMethod: TNotifyEvent;
+    property OnNotify: TCanNotifyEvent read GetOnNotify Write SetOnNotify;
+  end;
+
+  TORNotifier = class(TInterfacedObject, IORNotifier)
+  private
+    FNotifyList: TORNotifyList;
+    FUpdateCount: integer;
+    FOwner: TObject;
+    FOnNotify: TCanNotifyEvent;
+  protected
+    procedure DoNotify(Sender: TObject);
+  public
+    constructor Create(Owner: TObject = nil; SingleInstance: boolean = FALSE);
+    destructor Destroy; override;
+    function GetOnNotify: TCanNotifyEvent;
+    procedure SetOnNotify(Value: TCanNotifyEvent);
+    procedure BeginUpdate;
+    procedure EndUpdate(DoNotify: boolean = FALSE);
+    procedure NotifyWhenChanged(Event: TNotifyEvent); overload;
+    procedure NotifyWhenChanged(Event: TNotifyProc); overload;
+    procedure RemoveNotify(Event: TNotifyEvent); overload;
+    procedure RemoveNotify(Event: TNotifyProc); overload;
+    procedure Notify; overload;
+    procedure Notify(Sender: TObject); overload;
+    function NotifyMethod: TNotifyEvent;
+    property OnNotify: TCanNotifyEvent read GetOnNotify Write SetOnNotify;
+  end;
+
+  TORStringList = class(TStringList, IORNotifier)
+  private
+    FNotifier: IORNotifier;
+  protected
+    function GetNotifier: IORNotifier;
+    procedure Changed; override;
+  public
+    destructor Destroy; override;
+    procedure KillObjects;
+// IndexOfPiece starts looking at StartIdx+1
+    function CaseInsensitiveIndexOfPiece(Value: string; Delim: Char = '^';
+                                         PieceNum: integer = 1;
+                                         StartIdx: integer = -1): integer;
+    function IndexOfPiece(Value: string; Delim: Char = '^';
+                                         PieceNum: integer = 1;
+                                         StartIdx: integer = -1): integer;
+    function IndexOfPieces(const Values: array of string; const Delim: Char;
+                                                  const Pieces: array of integer;
+                                                  StartIdx: integer = -1): integer; overload;
+    function IndexOfPieces(const Values: array of string): integer; overload;
+    function IndexOfPieces(const Values: array of string; StartIdx: integer): integer; overload;
+    function PiecesEqual(const Index: integer;
+                         const Values: array of string): boolean; overload;
+    function PiecesEqual(const Index: integer;
+                         const Values: array of string;
+                         const Pieces: array of integer): boolean; overload;
+    function PiecesEqual(const Index: integer;
+                         const Values: array of string;
+                         const Pieces: array of integer;
+                         const Delim: Char): boolean; overload;
+    procedure SetStrPiece(Index, PieceNum: integer; Delim: Char; const NewValue: string); overload;
+    procedure SetStrPiece(Index, PieceNum: integer; const NewValue: string); overload; 
+    procedure SortByPiece(PieceNum: integer; Delim: Char = '^');
+    procedure SortByPieces(Pieces: array of integer; Delim: Char = '^');
+    procedure RemoveDuplicates(CaseSensitive: boolean = TRUE);
+    property Notifier: IORNotifier read GetNotifier implements IORNotifier;
+  end;
+
+{ Do NOT add ANTHING to the ORExposed Classes except to change the scope
+  of a property.  If you do, existing code could generate Access Violations }
+  TORExposedCustomEdit = class(TCustomEdit)
+  public
+    property ReadOnly;
+  end;
+
+  TORExposedAnimate = class(TAnimate)
+  public
+    property OnMouseUp;
+    property OnMouseDown;
+  end;
+
+  TORExposedControl = class(TControl)
+  public
+    property Font;
+    property Text;
+  end;
+
+{ AddToNotifyWhenCreated allows you to add an event handler before the object that
+  calls that event handler is created.  This only works when there is only one
+  instance of a given object created (like TPatient or TEncounter).  For an object
+  to make use of this feature, it must call ObjectCreated in the constructor,
+  which will return the TORNotifyList that was created for that object. }
+procedure AddToNotifyWhenCreated(ProcToAdd: TNotifyEvent; CreatedClass: TClass); overload;
+procedure AddToNotifyWhenCreated(ProcToAdd: TNotifyProc; CreatedClass: TClass); overload;
+procedure ObjectCreated(CreatedClass: TClass; var NotifyList: TORNotifyList);
+
+type
+  TORInterfaceList = class(TList)
+  private
+    function GetItem(Index: Integer): IUnknown;
+    procedure SetItem(Index: Integer; const Value: IUnknown);
+  protected
+    procedure Notify(Ptr: Pointer; Action: TListNotification); override;
+  public
+    function Add(Item: IUnknown): Integer;
+    function Extract(Item: IUnknown): IUnknown;
+    function First: IUnknown;
+    function IndexOf(Item: IUnknown): Integer;
+    procedure Insert(Index: Integer; Item: IUnknown);
+    function Last: IUnknown;
+    function Remove(Item: IUnknown): Integer;
+    property Items[Index: Integer]: IUnknown read GetItem write SetItem; default;
+  end;
+
+implementation
+
+var
+  NotifyLists: TStringList = nil;
+
+function IndexOfClass(CreatedClass: TClass): integer;
+begin
+  if(not assigned(NotifyLists)) then
+    NotifyLists := TStringList.Create;
+  Result := NotifyLists.IndexOf(CreatedClass.ClassName);
+  if(Result < 0) then
+    Result := NotifyLists.AddObject(CreatedClass.ClassName, TORNotifyList.Create);
+end;
+
+procedure AddToNotifyWhenCreated(ProcToAdd: TNotifyEvent; CreatedClass: TClass); overload;
+var
+  idx: integer;
+
+begin
+  idx := IndexOfClass(CreatedClass);
+  TORNotifyList(NotifyLists.Objects[idx]).Add(ProcToAdd);
+end;
+
+procedure AddToNotifyWhenCreated(ProcToAdd: TNotifyProc; CreatedClass: TClass); overload;
+var
+  idx: integer;
+
+begin
+  idx := IndexOfClass(CreatedClass);
+  TORNotifyList(NotifyLists.Objects[idx]).Add(ProcToAdd);
+end;
+
+procedure ObjectCreated(CreatedClass: TClass; var NotifyList: TORNotifyList);
+var
+  idx: integer;
+
+begin
+  if(assigned(NotifyLists)) then
+  begin
+    idx := IndexOfClass(CreatedClass);
+    if(idx < 0) then
+      NotifyList := nil
+    else
+    begin
+      NotifyList := (NotifyLists.Objects[idx] as TORNotifyList);
+      NotifyLists.Delete(idx);
+      if(NotifyLists.Count <= 0) then
+        KillObj(@NotifyLists);
+    end;
+  end;
+end;
+
+{ TORNotifyList }
+
+constructor TORNotifyList.Create;
+begin
+  inherited;
+  FCode := TList.Create;
+  FData := TList.Create;
+end;
+
+destructor TORNotifyList.Destroy;
+begin
+  KillObj(@FCode);
+  KillObj(@FData);
+  inherited
+end;
+
+function TORNotifyList.IndexOf(const NotifyProc: TNotifyEvent): integer;
+var
+  m: TMethod;
+
+begin
+  if(assigned(NotifyProc) and (FCode.Count > 0)) then
+  begin
+    m := TMethod(NotifyProc);
+    Result := 0;
+    while((Result < FCode.Count) and ((FCode[Result] <> m.Code) or
+          (FData[Result] <> m.Data))) do inc(Result);
+    if Result >= FCode.Count then Result := -1;
+  end
+  else
+    Result := -1;
+end;
+
+procedure TORNotifyList.Add(const NotifyProc: TNotifyEvent);
+var
+  m: TMethod;
+
+begin
+  if(assigned(NotifyProc) and (IndexOf(NotifyProc) < 0)) then
+  begin
+    m := TMethod(NotifyProc);
+    FCode.Add(m.Code);
+    FData.Add(m.Data);
+  end;
+end;
+
+procedure TORNotifyList.Remove(const NotifyProc: TNotifyEvent);
+var
+  idx: integer;
+
+begin
+  idx := IndexOf(NotifyProc);
+  if(idx >= 0) then
+  begin
+    FCode.Delete(idx);
+    FData.Delete(idx);
+  end;
+end;
+
+function TORNotifyList.GetItems(index: integer): TNotifyEvent;
+begin
+  TMethod(Result).Code := FCode[index];
+  TMethod(Result).Data := FData[index];
+end;
+
+procedure TORNotifyList.SetItems(index: integer; const Value: TNotifyEvent);
+begin
+  FCode[index] := TMethod(Value).Code;
+  FData[index] := TMethod(Value).Data;
+end;
+
+procedure TORNotifyList.Notify(Sender: TObject);
+var
+  i: integer;
+  evnt: TNotifyEvent;
+  proc: TNotifyProc;
+
+begin
+  for i := 0 to FCode.Count-1 do
+  begin
+    if(FData[i] = nil) then
+    begin
+      proc := FCode[i];
+      if(assigned(proc)) then proc(Sender);
+    end
+    else
+    begin
+      TMethod(evnt).Code := FCode[i];
+      TMethod(evnt).Data := FData[i];
+      if(assigned(evnt)) then evnt(Sender);
+    end;
+  end;
+end;
+
+procedure TORNotifyList.Clear;
+begin
+  FCode.Clear;
+  FData.Clear;
+end;
+
+function TORNotifyList.Count: integer;
+begin
+  Result := FCode.Count;
+end;
+
+procedure TORNotifyList.Delete(index: integer);
+begin
+  FCode.Delete(index);
+  FData.Delete(index);
+end;
+
+procedure TORNotifyList.Add(const NotifyProc: TNotifyProc);
+begin
+  if(assigned(NotifyProc) and (IndexOf(NotifyProc) < 0)) then
+  begin
+    FCode.Add(@NotifyProc);
+    FData.Add(nil);
+  end;
+end;
+
+function TORNotifyList.IndexOf(const NotifyProc: TNotifyProc): integer;
+var
+  prt: ^TNotifyProc;
+
+begin
+  prt := @NotifyProc;
+  if(assigned(NotifyProc) and (FCode.Count > 0)) then
+  begin
+    Result := 0;
+    while((Result < FCode.Count) and ((FCode[Result] <> prt) or
+          (FData[Result] <> nil))) do inc(Result);
+    if Result >= FCode.Count then Result := -1;
+  end
+  else
+    Result := -1;
+end;
+
+procedure TORNotifyList.Remove(const NotifyProc: TNotifyProc);
+var
+  idx: integer;
+
+begin
+  idx := IndexOf(NotifyProc);
+  if(idx >= 0) then
+  begin
+    FCode.Delete(idx);
+    FData.Delete(idx);
+  end;
+end;
+
+function TORNotifyList.GetIsProc(index: integer): boolean;
+begin
+  Result := (not assigned(FData[index]));
+end;
+
+function TORNotifyList.GetProcs(index: integer): TNotifyProc;
+begin
+  Result := FCode[index];
+end;
+
+procedure TORNotifyList.SetProcs(index: integer; const Value: TNotifyProc);
+begin
+  FCode[index] := @Value;
+  FData[index] := nil;
+end;
+
+{ TORNotifier }
+
+constructor TORNotifier.Create(Owner: TObject = nil; SingleInstance: boolean = FALSE);
+begin
+  FOwner := Owner;
+  if(assigned(Owner) and SingleInstance) then
+    ObjectCreated(Owner.ClassType, FNotifyList);
+end;
+
+destructor TORNotifier.Destroy;
+begin
+  KillObj(@FNotifyList);
+  inherited;
+end;
+
+procedure TORNotifier.BeginUpdate;
+begin
+  inc(FUpdateCount);
+end;
+
+procedure TORNotifier.EndUpdate(DoNotify: boolean = FALSE);
+begin
+  if(FUpdateCount > 0) then
+  begin
+    dec(FUpdateCount);
+    if(DoNotify and (FUpdateCount = 0)) then Notify(FOwner);
+  end;
+end;
+
+procedure TORNotifier.Notify(Sender: TObject);
+begin
+  if((FUpdateCount = 0) and assigned(FNotifyList) and (FNotifyList.Count > 0)) then
+    DoNotify(Sender);
+end;
+
+procedure TORNotifier.Notify;
+begin
+  if((FUpdateCount = 0) and assigned(FNotifyList) and (FNotifyList.Count > 0)) then
+    DoNotify(FOwner);
+end;
+
+procedure TORNotifier.NotifyWhenChanged(Event: TNotifyEvent);
+begin
+  if(not assigned(FNotifyList)) then
+    FNotifyList := TORNotifyList.Create;
+  FNotifyList.Add(Event);
+end;
+
+procedure TORNotifier.NotifyWhenChanged(Event: TNotifyProc);
+begin
+  if(not assigned(FNotifyList)) then
+    FNotifyList := TORNotifyList.Create;
+  FNotifyList.Add(Event);
+end;
+
+procedure TORNotifier.RemoveNotify(Event: TNotifyEvent);
+begin
+  if(assigned(FNotifyList)) then
+    FNotifyList.Remove(Event);
+end;
+
+procedure TORNotifier.RemoveNotify(Event: TNotifyProc);
+begin
+  if(assigned(FNotifyList)) then
+    FNotifyList.Remove(Event);
+end;
+
+function TORNotifier.NotifyMethod: TNotifyEvent;
+begin
+  Result := Notify;
+end;
+
+function TORNotifier.GetOnNotify: TCanNotifyEvent;
+begin
+  Result := FOnNotify;
+end;
+
+procedure TORNotifier.SetOnNotify(Value: TCanNotifyEvent);
+begin
+  FOnNotify := Value;
+end;
+
+procedure TORNotifier.DoNotify(Sender: TObject);
+var
+  CanNotify: boolean;
+
+begin
+  CanNotify := TRUE;
+  if(assigned(FOnNotify)) then
+    FOnNotify(Sender, CanNotify);
+  if(CanNotify) then
+    FNotifyList.Notify(Sender);
+end;
+
+{ TORStringList }
+
+destructor TORStringList.Destroy;
+begin
+  FNotifier := nil; // Frees instance
+  inherited;
+end;
+
+procedure TORStringList.Changed;
+var
+  OldEvnt: TNotifyEvent;
+
+begin
+{ We redirect the OnChange event handler, rather than calling
+  FNotifyList.Notify directly, because inherited may not call
+  OnChange, and we don't have access to the private variables
+  inherited uses to determine if OnChange should be called    }
+
+  if(assigned(FNotifier)) then
+  begin
+    OldEvnt := OnChange;
+    try
+      OnChange := FNotifier.NotifyMethod;
+      inherited; // Conditionally Calls FNotifier.Notify
+    finally
+      OnChange := OldEvnt;
+    end;
+  end;
+  inherited; // Conditionally Calls the old OnChange event handler
+end;
+
+function TORStringList.IndexOfPiece(Value: string; Delim: Char;
+                                                   PieceNum: integer;
+                                                   StartIdx: integer): integer;
+begin
+  Result := StartIdx;
+  inc(Result);
+  while((Result >= 0) and (Result < Count) and
+        (Piece(Strings[Result], Delim, PieceNum) <> Value)) do
+    inc(Result);
+  if(Result < 0) or (Result >= Count) then Result := -1;
+end;
+
+function TORStringList.IndexOfPieces(const Values: array of string; const Delim: Char;
+                                           const Pieces: array of integer;
+                                           StartIdx: integer = -1): integer;
+var
+  Done: boolean;
+
+begin
+  Result := StartIdx;
+  repeat
+    inc(Result);
+    if(Result >= 0) and (Result < Count) then
+      Done := PiecesEqual(Result, Values, Pieces, Delim)
+    else
+      Done := TRUE;
+  until(Done);
+  if(Result < 0) or (Result >= Count) then Result := -1;
+end;
+
+function TORStringList.IndexOfPieces(const Values: array of string): integer;
+begin
+  Result := IndexOfPieces(Values, U, [], -1);
+end;
+
+function TORStringList.IndexOfPieces(const Values: array of string;
+  StartIdx: integer): integer;
+begin
+  Result := IndexOfPieces(Values, U, [], StartIdx);
+end;
+
+function TORStringList.GetNotifier: IORNotifier;
+begin
+  if(not assigned(FNotifier)) then
+    FNotifier := TORNotifier.Create(Self);
+  Result := FNotifier;
+end;
+
+procedure TORStringList.KillObjects;
+var
+  i: integer;
+
+begin
+  for i := 0 to Count-1 do
+  begin
+    if(assigned(Objects[i])) then
+    begin
+      Objects[i].Free;
+      Objects[i] := nil;
+    end;
+  end;
+end;
+
+function TORStringList.PiecesEqual(const Index: integer;
+                                   const Values: array of string): boolean;
+begin
+  Result := PiecesEqual(Index, Values, [], U);
+end;
+
+function TORStringList.PiecesEqual(const Index: integer;
+                                   const Values: array of string;
+                                   const Pieces: array of integer): boolean;
+begin
+  Result := PiecesEqual(Index, Values, Pieces, U);
+end;
+
+function TORStringList.PiecesEqual(const Index: integer;
+                                   const Values: array of string;
+                                   const Pieces: array of integer;
+                                   const Delim: Char): boolean;
+var
+  i, cnt, p: integer;
+
+begin
+  cnt := 0;
+  Result := TRUE;
+  for i := low(Values) to high(Values) do
+  begin
+    inc(cnt);
+    if(i >= low(Pieces)) and (i <= high(Pieces)) then
+      p := Pieces[i]
+    else
+      p := cnt;
+    if(Piece(Strings[Index], Delim, p) <> Values[i]) then
+    begin
+      Result := FALSE;
+      break;
+    end;
+  end;
+end;
+
+procedure TORStringList.SortByPiece(PieceNum: integer; Delim: Char = '^');
+begin
+  SortByPieces([PieceNum], Delim);
+end;
+
+procedure TORStringList.RemoveDuplicates(CaseSensitive: boolean = TRUE);
+var
+  i: integer;
+  Kill: boolean;
+
+begin
+  i := 1;
+  while (i < Count) do
+  begin
+    if(CaseSensitive) then
+      Kill := (Strings[i] = Strings[i-1])
+    else
+      Kill := (CompareText(Strings[i],Strings[i-1]) = 0);
+    if(Kill) then
+      Delete(i)
+    else
+      inc(i);
+  end;
+end;
+
+function TORStringList.CaseInsensitiveIndexOfPiece(Value: string; Delim: Char = '^';
+                            PieceNum: integer = 1; StartIdx: integer = -1): integer;
+begin
+  Result := StartIdx;
+  inc(Result);
+  while((Result >= 0) and (Result < Count) and
+        (CompareText(Piece(Strings[Result], Delim, PieceNum), Value) <> 0)) do
+    inc(Result);
+  if(Result < 0) or (Result >= Count) then Result := -1;
+end;
+
+procedure TORStringList.SortByPieces(Pieces: array of integer;
+  Delim: Char = '^');
+
+  procedure QSort(L, R: Integer);
+  var
+    I, J: Integer;
+    P: string;
+
+  begin
+    repeat
+      I := L;
+      J := R;
+      P := Strings[(L + R) shr 1];
+      repeat
+        while ComparePieces(Strings[I], P, Pieces, Delim, TRUE) < 0 do Inc(I);
+        while ComparePieces(Strings[J], P, Pieces, Delim, TRUE) > 0 do Dec(J);
+        if I <= J then
+        begin
+          Exchange(I, J);
+          Inc(I);
+          Dec(J);
+        end;
+      until I > J;
+      if L < J then QSort(L, J);
+      L := I;
+    until I >= R;
+  end;
+
+begin
+  if not Sorted and (Count > 1) then
+  begin
+    Changing;
+    QSort(0, Count - 1);
+    Changed;
+  end;
+end;
+
+
+procedure TORStringList.SetStrPiece(Index, PieceNum: integer; Delim: Char;
+  const NewValue: string);
+var
+  tmp: string;
+
+begin
+  tmp := Strings[Index];
+  ORFn.SetPiece(tmp,Delim,PieceNum,NewValue);
+  Strings[Index] := tmp;
+end;
+
+procedure TORStringList.SetStrPiece(Index, PieceNum: integer;
+  const NewValue: string);
+begin
+  SetStrPiece(Index, PieceNum, '^', NewValue);
+end;
+
+{ TORInterfaceList }
+
+function TORInterfaceList.Add(Item: IUnknown): Integer;
+begin
+  Result := inherited Add(Pointer(Item));
+end;
+
+function TORInterfaceList.Extract(Item: IUnknown): IUnknown;
+begin
+  Result := IUnknown(inherited Extract(Pointer(Item)));
+end;
+
+function TORInterfaceList.First: IUnknown;
+begin
+  Result := IUnknown(inherited First);
+end;
+
+function TORInterfaceList.GetItem(Index: Integer): IUnknown;
+begin
+  Result := IUnknown(inherited Get(Index));
+end;
+
+function TORInterfaceList.IndexOf(Item: IUnknown): Integer;
+begin
+  Result := inherited IndexOf(Pointer(Item));
+end;
+
+procedure TORInterfaceList.Insert(Index: Integer; Item: IUnknown);
+begin
+  inherited Insert(Index, Pointer(Item));
+end;
+
+function TORInterfaceList.Last: IUnknown;
+begin
+  Result := IUnknown(inherited Last);
+end;
+
+procedure TORInterfaceList.Notify(Ptr: Pointer; Action: TListNotification);
+begin
+  case Action of
+    lnAdded:                IUnknown(Ptr)._AddRef;
+    lnDeleted, lnExtracted: IUnknown(Ptr)._Release;
+  end;
+end;
+
+function TORInterfaceList.Remove(Item: IUnknown): Integer;
+begin
+  Result := inherited Remove(Pointer(Item));
+end;
+
+procedure TORInterfaceList.SetItem(Index: Integer; const Value: IUnknown);
+begin
+  inherited Put(Index, Pointer(Value));
+end;
+
+
+initialization
+
+finalization
+  KillObj(@NotifyLists, TRUE);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib2006.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib2006.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib2006.dpk	(revision 1676)
@@ -0,0 +1,41 @@
+package ORCtrlLib2006;
+
+{$R *.res}
+{$R 'ORCtrlsDsgn.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'CPRS Custom Controls'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  vclx,
+  designide,
+  VAShared2006,
+  rtl;
+
+contains
+  ORCtrls in 'ORCtrls.pas',
+  ORCtrlsDsgn in 'ORCtrlsDsgn.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib2006.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib2006.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib2006.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER180
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.cfg	(revision 1676)
@@ -0,0 +1,42 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J+
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q+
+-$R+
+-$S-
+-$T-
+-$U-
+-$V+
+-$W+
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"c:\program files\borland\delphi6\dev\exesave"
+-N"..\Packages"
+-LE"..\Packages"
+-LN"..\Packages"
+-U"..\cprs-lib;..\Packages"
+-O"..\cprs-lib;..\Packages"
+-I"..\cprs-lib;..\Packages"
+-R"..\cprs-lib;..\Packages"
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dof	(revision 1676)
@@ -0,0 +1,141 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=1
+R=1
+S=0
+T=0
+U=0
+V=1
+W=1
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=CPRS Custom Controls
+[Directories]
+OutputDir=$(DELPHI)\dev\exesave
+UnitOutputDir=..\Packages
+PackageDLLOutputDir=..\Packages
+PackageDCPOutputDir=..\Packages
+SearchPath=..\cprs-lib;..\Packages
+Packages=Vcl40;Vclx40;Vcldb40;vcldbx40;VclSmp40;Qrpt40;TeeUI40;teedb40;tee40;ibevnt40;nmfast40;VistABroker
+Conditionals=
+DebugSourceDirs=..\Packages
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+C:\Program Files\Borland\Delphi6\Projects\Bpl\SharedRPCBroker_D60.bpl=VistA SharedBroker Components
+[HistoryLists\hlDebugSourcePath]
+Count=1
+Item0=..\Packages
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=10
+Item0=..\cprs-lib;..\Packages
+Item1=..\cprs-lib;..\Packages;..\cprs-chart;..\cprs-chart\dcu
+Item2=d:\vista\main\cprs-lib;d:\vista\main\Packages
+Item3=d:\vista\main\cprs-lib;d:\program files\vista\broker\bdk32\d5
+Item4=d:\vista\main\cprs-chart;d:\vista\main\cprs-lib;d:\vista\main\cprs-chart\encounter;d:\vista\main\cprs-chart\consults
+Item5=d:\vista\main\cprs-lib
+Item6=\Dev\CPRS\main\CPRS-Lib
+Item7=C:\Dev\CPRS\main\CPRS-Lib
+Item8=\Projects\Perforce\main\CPRS-Lib
+Item9=$(DELPHI)\Projects\Current\CPRS-Lib
+[HistoryLists\hlUnitOutputDirectory]
+Count=10
+Item0=..\Packages
+Item1=..\cprs-lib\dcu
+Item2=..\cprs-lib
+Item3=d:\vista\main\cprs-lib\DCU
+Item4=d:\vista\main\cprs-lib\DCUSave
+Item5=d:\vista\main\cprs-chart\dcu
+Item6=\Dev\DCUSave
+Item7=C:\Dev\DCUSave
+Item8=\Projects\DCUSave
+Item9=$(DELPHI)\Projects\DCUSave
+[HistoryLists\hlOutputDirectorry]
+Count=2
+Item0=$(DELPHI)\dev\exesave
+Item1=d:\vista\main\cprs-chart
+[HistoryLists\hlBPLOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
+[HistoryLists\hlDCPOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dpk	(revision 1676)
@@ -0,0 +1,42 @@
+package ORCtrlLib60;
+
+{$R *.res}
+{$R '..\CPRS-Chart\Accessibility_TLB.dcr'}
+{$R 'ORCtrlsDsgn.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'CPRS Custom Controls'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl,
+  vclx,
+  designide;
+
+contains
+  uAccessAPI in 'uAccessAPI.pas',
+  Accessibility_TLB in '..\CPRS-Chart\Accessibility_TLB.pas',
+  ORCtrls in 'ORCtrls.pas',
+  ORCtrlsDsgn in 'ORCtrlsDsgn.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER140
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dsk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dsk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlLib60.dsk	(revision 1676)
@@ -0,0 +1,498 @@
+[Closed Files]
+File_0=SourceModule,'D:\vista\cprs\OR_3_195V25\CPRS-Lib\uStaticText.pas',0,1,1,1,1,0,0
+File_1=SourceModule,'D:\vista\cprs\OR_3_195V25\CPRS-Chart\unit2.pas',0,1,1,1,11,0,0
+File_2=SourceModule,'D:\vista\cprs\main\CPRS-Chart\uSignItems.pas',0,1,1044,54,1060,0,0
+File_3=SourceModule,'D:\vista\cprs\OR_3_215V26\CPRS-Chart\uSignItems.pas',0,1,1044,54,1060,0,0
+File_4=SourceModule,'D:\vista\cprs\OR_3_215V26\CPRS-Chart\fReview.pas',0,1,1833,42,1841,1,0
+File_5=SourceModule,'D:\vista\cprs\main\CPRS-Chart\fReview.pas',0,1,1830,44,1857,1,0
+File_6=SourceModule,'D:\vista\cprs\OR_3_195V25\CPRS-Lib\ORCtrls.pas',0,1,1,63,30,0,0
+File_7=SourceModule,'C:\PROGRA~1\Vista\BDK32_~1\Source\wsockc.pas',0,1,1455,1,1477,0,0
+File_8=SourceModule,'D:\vista\cprs\OR_3_195V25\CPRS-Chart\VERGENCECONTEXTORLib_TLB.pas',0,1,564,1,586,0,0
+
+[Modules]
+Module0=D:\vista\cprs\OR_3_195V25\CPRS-Chart\Orders\fOrdersSign.pas
+Module1=D:\vista\cprs\OR_3_195V25\CPRS-Chart\fReview.pas
+Module2=D:\vista\cprs\OR_3_195V25\CPRS-Chart\uSignItems.pas
+Module3=D:\vista\cprs\OR_3_195V25\CPRS-Chart\CPRSChart.dpr
+Count=4
+EditWindowCount=1
+PackageWindowCount=1
+TypeLibWindowCount=1
+
+[D:\vista\cprs\OR_3_195V25\CPRS-Chart\Orders\fOrdersSign.pas]
+ModuleType=SourceModule
+FormState=0
+FormOnTop=0
+
+[D:\vista\cprs\OR_3_195V25\CPRS-Chart\fReview.pas]
+ModuleType=SourceModule
+FormState=0
+FormOnTop=0
+
+[D:\vista\cprs\OR_3_195V25\CPRS-Chart\uSignItems.pas]
+ModuleType=SourceModule
+FormState=0
+FormOnTop=0
+
+[D:\vista\cprs\OR_3_195V25\CPRS-Chart\CPRSChart.dpr]
+ModuleType=SourceModule
+FormState=0
+FormOnTop=0
+SymbolFile=D:\vista\cprs\OR_3_195V25\CPRS-Chart\CPRSChart.dsm
+ModSinceCompile=1
+
+[D:\vista\cprs\OR_3_215V26\CPRS-Lib\ORCtrlLib60.dpk]
+FormState=0
+FormOnTop=1
+
+[D:\vista\cprs\OR_3_195V25\CPRS-Chart\CPRSChart.tlb]
+FormState=0
+FormOnTop=1
+
+[D:\Program Files\Borland\Delphi6\Projects\ProjectGroup1.bpg]
+FormState=0
+FormOnTop=0
+
+[D:\vista\cprs\OR_3_195V25\CPRS-Chart\mCoPayDesc.pas]
+FormState=0
+FormOnTop=0
+
+[EditWindow0]
+ViewCount=4
+CurrentView=3
+View0=0
+View1=1
+View2=2
+View3=3
+CodeExplorer=CodeExplorer@EditWindow0
+MessageView=MessageView@EditWindow0
+Create=1
+Visible=1
+State=0
+Left=1
+Top=104
+Width=1022
+Height=635
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1014
+ClientHeight=608
+LeftPanelSize=0
+RightPanelSize=0
+BottomPanelSize=0
+BottomPanelClients=MessageView@EditWindow0
+BottomPanelData=00000400010000000B0000004D65737361676556696577F603000000000000021D00000000000000010000000000000000000000000100000000F3030000000000000100000000F3030000000000000100000000F3030000000000000100000000F3030000000000000100000000F3030000000000000100000000F3030000000000000100000000F5030000000000000100000000F5030000000000000100000000F5030000000000000100000000F50300000000000001000000000004000000000000010000000000040000000000000100000000F5030000000000000100000000F503000000000000010000000000040000000000000100000000720400000000000001000000007204000000000000010000000080040000000000000100000000720400000000000001000000007204000000000000010000000072040000000000000100000000750400000000000001000000008004000000000000010000000080040000000000000100000000000400000000000001000000000004000000000000010000000000040000000000000100000000F8030000000000000100000000F8030000000000000100000000F803000000000000010000000000040000000000000100000000F8030000000000000100000000F8030000000000000100000000EF030000000000000100000000EF03000000000000010000000000040000000000000100000000B0020000000000000100000000F5030000000000000100000000F503000000000000010000000000040000000000000100000000F40300000000000001000000000004000000000000010000000000040000000000000100000000F8030000000000000100000000F8030000000000000100000000F803000000000000010000000000040000000000000100000000F80300000000000001000000000004000000000000010000000000040000000000000100000000F803000000000000010000000000040000000000000100000000F8030000000000000100000000F8030000000000000100000000F80300000000000001000000000004000000000000010000000000040000000000000100000000F60300000000000001000000000004000000000000010000000000040000000000000100000000F6030000000000000100000000F6030000000000000100000000F60300000B0000004D65737361676556696577FFFFFFFF
+
+[View0]
+Module=D:\vista\cprs\OR_3_195V25\CPRS-Chart\CPRSChart.dpr
+CursorX=28
+CursorY=17
+TopLine=2
+LeftCol=1
+
+[View1]
+Module=D:\vista\cprs\OR_3_195V25\CPRS-Chart\uSignItems.pas
+CursorX=33
+CursorY=325
+TopLine=628
+LeftCol=1
+
+[View2]
+Module=D:\vista\cprs\OR_3_195V25\CPRS-Chart\fReview.pas
+CursorX=36
+CursorY=375
+TopLine=358
+LeftCol=1
+
+[View3]
+Module=D:\vista\cprs\OR_3_195V25\CPRS-Chart\Orders\fOrdersSign.pas
+CursorX=1
+CursorY=1439
+TopLine=1427
+LeftCol=1
+
+[PackageWindow0]
+Create=1
+Visible=1
+State=0
+Left=260
+Top=260
+Width=368
+Height=244
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=360
+ClientHeight=220
+TBDockHeight=244
+LRDockWidth=368
+Dockable=1
+StatusBar=0
+TextLabels=1
+Toolbar=1
+SectionWidth0=150
+SectionWidth1=210
+Module=D:\vista\cprs\OR_3_215V26\CPRS-Lib\ORCtrlLib60.dpk
+
+[TypeLibEditWindow0]
+Create=1
+Visible=0
+State=0
+Left=200
+Top=103
+Width=650
+Height=446
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=642
+ClientHeight=419
+Module=D:\vista\cprs\OR_3_195V25\CPRS-Chart\CPRSChart.tlb
+
+[Watches]
+Count=4
+Watch0='i',256,0,18,1,1
+Watch1='Piece(lbDiagnosis.Items[i],U,2)',256,0,18,1,1
+Watch2='lbDiagnosis.Items[itemNum]',256,0,18,1,0
+Watch3='lbPersonalDx.Items[J]',256,0,18,1,0
+
+[Breakpoints]
+Count=6
+Breakpoint0='D:\vista\cprs\OR_3_195V25\CPRS-Chart\uSignItems.pas',130,'',0,1,'',1,0,0,'',1,'','',''
+Breakpoint1='D:\vista\cprs\OR_3_195V25\CPRS-Chart\BA\fBAOptionsDiagnoses.pas',410,'',0,1,'',1,0,0,'',1,'','',''
+Breakpoint2='D:\vista\cprs\OR_3_195V25\CPRS-Chart\BA\fBAOptionsDiagnoses.pas',414,'',0,1,'',1,0,0,'',1,'','',''
+Breakpoint3='D:\vista\cprs\OR_3_195V25\CPRS-Chart\uSignItems.pas',275,'',0,1,'',1,0,0,'',1,'','',''
+Breakpoint4='D:\vista\cprs\OR_3_195V25\CPRS-Chart\Orders\fOrdersSign.pas',1099,'',0,1,'',1,0,0,'',1,'','',''
+Breakpoint5='D:\vista\cprs\OR_3_195V25\CPRS-Chart\uSignItems.pas',644,'',0,1,'',1,0,0,'',1,'','',''
+
+[AddressBreakpoints]
+Count=0
+
+[Main Window]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=0
+Width=1024
+Height=105
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1016
+ClientHeight=78
+
+[ProjectManager]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=0
+Width=287
+Height=579
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=287
+ClientHeight=579
+TBDockHeight=571
+LRDockWidth=255
+Dockable=1
+
+[Components]
+Create=1
+Visible=0
+State=0
+Left=420
+Top=251
+Width=183
+Height=266
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=175
+ClientHeight=242
+
+[CPUWindow]
+Create=1
+Visible=0
+State=0
+Left=159
+Top=109
+Width=819
+Height=551
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=811
+ClientHeight=524
+DumpPane=212
+DisassemblyPane=377
+RegisterPane=231
+FlagPane=120
+
+[AlignmentPalette]
+Create=1
+Visible=0
+State=0
+Left=200
+Top=107
+Width=156
+Height=82
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=150
+ClientHeight=60
+
+[PropertyInspector]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=0
+Width=287
+Height=579
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=287
+ClientHeight=579
+TBDockHeight=571
+LRDockWidth=255
+Dockable=1
+SplitPos=131
+ArrangeBy=Name
+SelectedItem=
+ExpandedItems=Brush,Font.Style
+HiddenCategories=
+
+[WatchWindow]
+Create=1
+Visible=1
+State=0
+Left=5
+Top=1
+Width=803
+Height=104
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=795
+ClientHeight=80
+TBDockHeight=149
+LRDockWidth=421
+Dockable=1
+
+[BreakpointWindow]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=0
+Width=287
+Height=579
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=287
+ClientHeight=579
+TBDockHeight=197
+LRDockWidth=737
+Dockable=1
+Column0Width=151
+Column1Width=75
+Column2Width=200
+Column3Width=200
+Column4Width=75
+Column5Width=75
+
+[CallStackWindow]
+Create=1
+Visible=0
+State=0
+Left=365
+Top=303
+Width=294
+Height=161
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=286
+ClientHeight=137
+TBDockHeight=161
+LRDockWidth=294
+Dockable=1
+
+[ThreadStatusWindow]
+Create=1
+Visible=0
+State=0
+Left=0
+Top=0
+Width=1024
+Height=768
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1016
+ClientHeight=744
+TBDockHeight=152
+LRDockWidth=624
+Dockable=1
+Column0Width=145
+Column1Width=100
+Column2Width=115
+Column3Width=250
+
+[ModuleWindow]
+Create=1
+Visible=0
+State=0
+Left=18
+Top=9
+Width=913
+Height=719
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=905
+ClientHeight=695
+TBDockHeight=355
+LRDockWidth=638
+Dockable=1
+Column0Width=125
+Column1Width=100
+Column2Width=356
+EntryPointPane=447
+CompUnitPane=530
+
+[ObjectTree]
+Create=1
+Visible=0
+State=0
+Left=0
+Top=105
+Width=190
+Height=264
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=182
+ClientHeight=240
+TBDockHeight=264
+LRDockWidth=190
+Dockable=1
+
+[DebugLogView]
+Create=1
+Visible=0
+State=0
+Left=0
+Top=0
+Width=798
+Height=712
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=790
+ClientHeight=688
+TBDockHeight=291
+LRDockWidth=417
+Dockable=1
+
+[LocalVarsWindow]
+Create=1
+Visible=0
+State=0
+Left=441
+Top=447
+Width=421
+Height=192
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=413
+ClientHeight=168
+TBDockHeight=192
+LRDockWidth=421
+Dockable=1
+
+[ToDo List]
+Create=1
+Visible=0
+State=0
+Left=107
+Top=48
+Width=866
+Height=649
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=858
+ClientHeight=625
+TBDockHeight=250
+LRDockWidth=713
+Dockable=1
+Column0Width=507
+Column1Width=30
+Column2Width=100
+Column3Width=70
+Column4Width=70
+SortOrder=6
+ShowHints=1
+ShowChecked=1
+
+[FPUWindow]
+Create=1
+Visible=0
+State=0
+Left=306
+Top=280
+Width=457
+Height=250
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=449
+ClientHeight=223
+RegisterPane=121
+FlagPane=59
+
+[CodeExplorer@EditWindow0]
+Create=1
+Visible=1
+State=0
+Left=0
+Top=0
+Width=287
+Height=579
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=287
+ClientHeight=579
+TBDockHeight=305
+LRDockWidth=140
+Dockable=1
+
+[MessageView@EditWindow0]
+Create=1
+Visible=0
+State=0
+Left=12
+Top=0
+Width=1002
+Height=29
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=1002
+ClientHeight=29
+TBDockHeight=29
+LRDockWidth=443
+Dockable=1
+
+[DockHosts]
+DockHostCount=1
+
+[DockSite0]
+DockSiteType=1
+Create=1
+Visible=1
+State=0
+Left=1
+Top=104
+Width=303
+Height=632
+MaxLeft=-1
+MaxTop=-1
+ClientWidth=295
+ClientHeight=608
+TBDockHeight=659
+LRDockWidth=263
+Dockable=1
+TabPosition=0
+ActiveTab=Object Inspector
+TabDockClients=PropertyInspector,ProjectManager,BreakpointWindow,CodeExplorer@EditWindow0
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrls.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrls.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrls.pas	(revision 1676)
@@ -0,0 +1,7130 @@
+unit ORCtrls;                                    // Oct 26, 1997 @ 10:00am
+
+// To Do:  eliminate topindex itemtip on mousedown (seen when choosing clinic pts)
+
+interface  // --------------------------------------------------------------------------------
+
+uses Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls, Forms,
+     ComCtrls, Commctrl, Buttons, ExtCtrls, Grids, ImgList, Menus, CheckLst,
+     Variants, VAClasses;
+
+const
+  UM_SHOWTIP  = (WM_USER + 9436);                // message id to display item tip         **was 300
+  UM_GOTFOCUS = (WM_USER + 9437);                // message to post when combo gets focus  **was 301
+  MAX_TABS = 40;                                 // maximum number of tab stops or pieces
+  LL_REVERSE  = -1;                              // long list scrolling in reverse direction
+  LL_POSITION =  0;                              // long list thumb moved
+  LL_FORWARD  =  1;                              // long list scrolling in forward direction
+  LLS_LINE  = '^____________________________________________________________________________';
+  LLS_DASH  = '^----------------------------------------------------------------------------';
+  LLS_SPACE = '^ ';
+
+type
+  IORBlackColorModeCompatible = interface(IInterface)
+  ['{3554985C-F524-45FA-8C27-4CDD8357DB08}']
+    procedure SetBlackColorMode(Value: boolean);
+  end;
+
+  TORComboBox = class;                           // forward declaration for FParentCombo
+
+  TTranslator = function (MString: string): string of object;
+
+  TORStrings = class(TStrings)
+  private
+    MList: TStringList;
+    FPlainText: TStrings;
+    FTranslator: TTranslator;
+    FVerification: boolean;
+    procedure Verify;
+  protected
+    function Get( index:integer): string; override;
+    function GetCount: integer; override;
+    function GetObject(index:integer): TObject; override;
+    procedure Put(Index: Integer; const S: string); override;
+    procedure PutObject(index:integer; Value: TObject); override;
+    procedure SetUpdateState( Value: boolean); override;
+  public
+    function Add(const S: string): integer; override;
+    constructor Create(PlainText: TStrings; Translator: TTranslator);
+    destructor Destroy; override;
+    procedure Clear; override;
+    procedure Delete( index: integer); override;
+    procedure Insert(Index: Integer; const S: string); override;
+    function IndexOf(const S: string): Integer; override;
+    property PlainText: TStrings read FPlainText;
+    property Translator: TTranslator read FTranslator;
+    property Verification: boolean read FVerification write FVerification;
+  end;
+
+  TORDirection = -1..1;                          // for compatibility, type is now integer
+  TORNeedDataEvent       = procedure(Sender: TObject; const StartFrom: string;
+                                     Direction, InsertAt: Integer) of object;
+  TORBeforeDrawEvent     = procedure(Sender: TObject; Index: Integer; Rect: TRect;
+                                     State: TOwnerDrawState) of object;
+  TORItemNotifyEvent     = procedure(Sender: TObject; Index: integer) of object;
+  TORCheckComboTextEvent = procedure(Sender: TObject; NumChecked: integer; var Text: string) of object;
+  TORSynonymCheckEvent   = procedure(Sender: TObject; const Text: string;
+                                     var IsSynonym: boolean) of object;
+
+  PItemRec = ^TItemRec;
+  TItemRec = record
+    Reference: Variant;                          // variant value associated with item
+    UserObject: TObject;                         // Objects[n] property of listbox item
+    CheckedState: TCheckBoxState;                // Used to indicate check box values
+  end;
+
+  TORListBox = class(TListBox, IVADynamicProperty, IORBlackColorModeCompatible)
+  private
+    FFocusIndex: Integer;                        // item with focus when using navigation keys
+    FLargeChange: Integer;                       // visible items less one
+    FTipItem: Integer;                           // item currently displaying ItemTip
+    FItemTipActive: Boolean;                     // used to delay appearance of the ItemTip
+    FItemTipColor: TColor;                       // background color for ItemTip window
+    FItemTipEnable: Boolean;                     // allows display of ItemTips over items
+    FLastMouseX: Integer;                        // mouse X position on last MouseMove event
+    FLastMouseY: Integer;                        // mouse Y position on last MouseMove event
+    FLastItemIndex: Integer;                     // used for the OnChange event
+    FFromSelf: Boolean;                          // true if listbox message sent from this unit
+    FDelimiter: Char;                            // delimiter used by Pieces property
+    FWhiteSpace: Char;                           // may be space or tab (between pieces)
+    FTabPosInPixels: boolean;                    // determines if TabPosition is Pixels or Chars
+    FTabPos: array[0..MAX_TABS] of Integer;      // character based positions of tab stops
+    FTabPix: array[0..MAX_TABS] of Integer;      // pixel positions of tab stops
+    FPieces: array[0..MAX_TABS] of Integer;      // pieces that should be displayed for item
+    FLongList: Boolean;                          // if true, enables special LongList properties
+    FScrollBar: TScrollBar;                      // scrollbar used when in LongList mode
+    FFirstLoad: Boolean;                         // true if NeedData has never been called
+    FFromNeedData: Boolean;                      // true means items added to LongList part
+    FDataAdded: Boolean;                         // true if items added during NeedData call
+    FCurrentTop: Integer;                        // TopIndex, changes when inserting to LongList
+    FWaterMark: Integer;                         // first LongList item after the short list
+    FDirection: Integer;                         // direction of the current NeedData call
+    FInsertAt: Integer;                          // insert point for the current NeedData call
+    FParentCombo: TORComboBox;                   // used when listbox is part of dropdown combo
+    FOnChange: TNotifyEvent;                     // event called when ItemIndex changes
+    FOnNeedData: TORNeedDataEvent;               // event called when LongList needs more items
+    FHideSynonyms: boolean;                      // Hides Synonyms from the list
+    FSynonymChars: string;                       // Chars a string must contain to be considered a synonym
+    FOnSynonymCheck: TORSynonymCheckEvent;       // Event that allows for custom synonym checking
+    FCreatingItem: boolean;                      // Used by Synonyms to prevent errors when adding new items
+    FCreatingText: string;                       // Used by Synonyms to prevent errors when adding new items
+    FOnBeforeDraw: TORBeforeDrawEvent;           // event called prior to drawing an item
+    FRightClickSelect: boolean;                  // When true, a right click selects teh item
+    FCheckBoxes: boolean;                        // When true, list box contains check boxes
+    FFlatCheckBoxes: boolean;                    // When true, list box check boxes are flat
+    FCheckEntireLine: boolean;                   // When checked, clicking anywhere on the line checks the checkbox
+    FOnClickCheck: TORItemNotifyEvent;           // Event notifying of checkbox change
+    FDontClose: boolean;                         // Used to keep drop down open when checkboxes
+    FItemsDestroyed: boolean;                    // Used to make sure items are not destroyed multiple times
+    FAllowGrayed: boolean;
+    FMItems: TORStrings;                         // Used to save corresponding M strings ("the pieces")
+    FCaption: TStaticText;                       // Used to supply a title to IAccessible interface
+    FCaseChanged: boolean;                       // If true, the names are stored in the database as all caps, but loaded and displayed in mixed-case
+    FLookupPiece: integer;                       // If zero, list look-up comes from display string; if non-zero, indicates which piece of the item needs to be used for list lookup
+    FIsPartOfComboBox: boolean;
+    FBlackColorMode: boolean;
+    FHideSelection: boolean;
+    procedure AdjustScrollBar;
+    procedure CreateScrollBar;
+    procedure FreeScrollBar;
+    function GetDisplayText(Index: Integer): string;
+    function GetItemID: Variant;
+    function GetItemIEN: Int64;
+    function GetPieces: string;
+    function GetReference(Index: Integer): Variant;
+    function GetTabPositions: string;
+    function GetStyle: TListBoxStyle;
+    procedure NeedData(Direction: Integer; StartFrom: string);
+    function PositionThumb: Integer;
+    procedure ResetItems;
+    procedure ScrollTo(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
+    function GetStringIndex(const AString: string): Integer;
+    function SelectString(const AString: string): Integer;
+    procedure SetCheckBoxes(const Value: boolean);
+    procedure SetDelimiter(Value: Char);
+    procedure SetFlatCheckBoxes(const Value: boolean);
+    procedure SetFocusIndex(Value: Integer);
+    procedure SetLongList(Value: Boolean);
+    procedure SetPieces(const Value: string);
+    procedure SetReference(Index: Integer; AReference: Variant);
+    procedure SetTabPositions(const Value: string);
+    procedure SetTabPosInPixels(const Value: boolean);
+    procedure SetTabStops;
+    procedure SetHideSynonyms(Value: boolean);
+    procedure SetSynonymChars(Value: string);
+    procedure SetStyle(Value: TListBoxStyle);
+    function IsSynonym(const TestStr: string): boolean;
+    function TextToShow(S: string): string;
+    procedure LBGetText      (var Message: TMessage);         message LB_GETTEXT;
+    procedure LBGetTextLen   (var Message: TMessage);         message LB_GETTEXTLEN;
+    procedure LBGetItemData  (var Message: TMessage);         message LB_GETITEMDATA;
+    procedure LBSetItemData  (var Message: TMessage);         message LB_SETITEMDATA;
+    procedure LBAddString    (var Message: TMessage);         message LB_ADDSTRING;
+    procedure LBInsertString (var Message: TMessage);         message LB_INSERTSTRING;
+    procedure LBDeleteString (var Message: TMessage);         message LB_DELETESTRING;
+    procedure LBResetContent (var Message: TMessage);         message LB_RESETCONTENT;
+    procedure LBSetCurSel    (var Message: TMessage);         message LB_SETCURSEL;
+    procedure CMFontChanged  (var Message: TMessage);         message CM_FONTCHANGED;
+    procedure CNDrawItem     (var Message: TWMDrawItem);      message CN_DRAWITEM;
+    procedure WMDestroy      (var Message: TWMDestroy);       message WM_DESTROY;
+    procedure WMKeyDown      (var Message: TWMKeyDown);       message WM_KEYDOWN;
+    procedure WMLButtonDown  (var Message: TWMLButtonDown);   message WM_LBUTTONDOWN;
+    procedure WMLButtonUp    (var Message: TWMLButtonUp);     message WM_LBUTTONUP;
+    procedure WMRButtonUp    (var Message: TWMRButtonUp);     message WM_RBUTTONUP;
+    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
+    procedure WMCancelMode   (var Message: TMessage);         message WM_CANCELMODE;
+    procedure WMMove         (var Message: TWMMove);          message WM_MOVE;
+    procedure WMSize         (var Message: TWMSize);          message WM_SIZE;
+    procedure WMVScroll      (var Message: TWMVScroll);       message WM_VSCROLL;
+    procedure CMHintShow     (var Message: TMessage);         message CM_HINTSHOW;
+    procedure UMShowTip      (var Message: TMessage);         message UM_SHOWTIP;
+    function GetChecked(Index: Integer): Boolean;
+    procedure SetChecked(Index: Integer; const Value: Boolean);
+    function GetMultiSelect: boolean;
+    function GetCheckedString: string;
+    procedure SetCheckedString(const Value: string);
+    function GetCheckedState(Index: Integer): TCheckBoxState;
+    procedure SetCheckedState(Index: Integer; const Value: TCheckBoxState);
+    function GetMItems: TStrings;
+    procedure SetMItems( Value: TStrings);
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+  protected
+    procedure SetMultiSelect(Value: boolean); override;
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure CreateWnd; override;
+    procedure DestroyWnd; override;
+    procedure Click; override;
+    procedure DoChange; virtual;
+    procedure DoEnter; override;
+    procedure DoExit; override;
+    procedure DestroyItems;
+    procedure Loaded; override;
+    procedure ToggleCheckBox(idx: integer);
+    procedure KeyPress(var Key: Char); override;
+    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
+    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
+    procedure MeasureItem(Index: Integer; var Height: Integer); override;
+    procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
+    function GetIndexFromY(YPos :integer) :integer;
+    property isPartOfComboBox: boolean read FIsPartOfComboBox write FIsPartOfComboBox default False;
+    property HideSynonyms: boolean read FHideSynonyms write SetHideSynonyms default FALSE;
+    property SynonymChars: string read FSynonymChars write SetSynonymChars;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure ClearTop;
+    function AddReference(const S: string; AReference: Variant): Integer;
+    procedure InsertReference(Index: Integer; const S: string; AReference: Variant);
+    function IndexOfReference(AReference: Variant): Integer;
+    procedure InsertSeparator;
+    procedure ForDataUse(Strings: TStrings);
+    procedure InitLongList(S: string);
+    function GetIEN(AnIndex: Integer): Int64;
+    function SelectByIEN(AnIEN: Int64): Integer;
+    function SelectByID(const AnID: string): Integer;
+    function SetExactByIEN(AnIEN: Int64; const AnItem: string): Integer;
+    procedure Clear; override;
+    property ItemID: Variant read GetItemID;
+    property ItemIEN: Int64 read GetItemIEN;
+    property FocusIndex: Integer read FFocusIndex write SetFocusIndex;
+    property DisplayText[Index: Integer]: string read GetDisplayText;
+    property References[Index: Integer]: Variant read GetReference write SetReference;
+    property ShortCount: Integer read FWaterMark;
+    property Checked[Index: Integer]: Boolean read GetChecked write SetChecked;
+    property CheckedString: string read GetCheckedString write SetCheckedString;
+    property CheckedState[Index: Integer]: TCheckBoxState read GetCheckedState write SetCheckedState;
+    property MItems: TStrings read GetMItems write SetMItems;
+    function VerifyUnique(SelectIndex: Integer; iText: String): integer;
+    procedure SetBlackColorMode(Value: boolean);
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+    property HideSelection: boolean read FHideSelection write FHideSelection;
+  published
+    property AllowGrayed: boolean read FAllowGrayed write FAllowGrayed default FALSE;
+    property Caption: string read GetCaption write SetCaption;
+    property CaseChanged: boolean read FCaseChanged write FCaseChanged default TRUE;
+    property Delimiter: Char read FDelimiter write SetDelimiter default '^';
+    property ItemTipColor: TColor read FItemTipColor write FItemTipColor;
+    property ItemTipEnable: Boolean read FItemTipEnable write FItemTipEnable default True;
+    property LongList: Boolean read FLongList write SetLongList;
+    property LookupPiece: integer read FLookupPiece write FLookupPiece default 0;
+    property Pieces: string read GetPieces write SetPieces;
+    property TabPosInPixels: boolean read FTabPosInPixels write SetTabPosInPixels default False; // MUST be before TabPositions!
+    property TabPositions: string read GetTabPositions write SetTabPositions;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property OnNeedData: TORNeedDataEvent read FOnNeedData write FOnNeedData;
+    property OnBeforeDraw: TORBeforeDrawEvent read FOnBeforeDraw write FOnBeforeDraw;
+    property RightClickSelect: boolean read FRightClickSelect write FRightClickSelect default FALSE;
+    property CheckBoxes: boolean read FCheckBoxes write SetCheckBoxes default FALSE;
+    property Style: TListBoxStyle read GetStyle write SetStyle default lbStandard;
+    property FlatCheckBoxes: boolean read FFlatCheckBoxes write SetFlatCheckBoxes default TRUE;
+    property CheckEntireLine: boolean read FCheckEntireLine write FCheckEntireLine default FALSE;
+    property OnClickCheck: TORItemNotifyEvent read FOnClickCheck write FOnClickCheck;
+    property MultiSelect: boolean read GetMultiSelect write SetMultiSelect default FALSE;
+    property Items: TStrings read GetMItems write SetMItems;
+  end;
+
+  TORDropPanel = class(TPanel)
+  private
+    FButtons: boolean;
+    procedure WMActivateApp(var Message: TMessage); message WM_ACTIVATEAPP;
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure Resize; override;
+    procedure UpdateButtons;
+    function GetButton(OKBtn: boolean): TSpeedButton;
+    procedure ResetButtons;
+    procedure BtnClicked(Sender: TObject);
+  public
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+  TORComboStyle = (orcsDropDown, orcsSimple);
+
+  TORComboPanelEdit = class(TPanel)
+  private
+    FFocused: boolean;
+    FCanvas: TControlCanvas;
+  protected
+    procedure Paint; override;
+  public
+    destructor Destroy; override;
+  end;
+
+  TORComboEdit = class(TEdit)
+  private
+    procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
+    procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+  end;
+
+  TORComboBox = class(TWinControl, IVADynamicProperty, IORBlackColorModeCompatible)
+  private
+    FItems: TStrings;                            // points to Items in FListBox
+    FMItems: TStrings;                           // points to MItems in FListBox
+    FListBox: TORListBox;                        // listbox control for the combobox
+    FEditBox: TORComboEdit;                      // edit control for the combobox
+    FEditPanel: TORComboPanelEdit;               // Used to enable Multi-Select Combo Boxes
+    FDropBtn: TBitBtn;                           // drop down button for dropdown combo
+    FDropPanel: TORDropPanel;                    // panel for dropdown combo (parent=desktop)
+    FDroppedDown: Boolean;                       // true if the list part is dropped down
+    FStyle: TORComboStyle;                       // style is simple or dropdown for combo
+    FDropDownCount: Integer;                     // number of items to display when list appears
+    FFromSelf: Boolean;                          // prevents recursive calls to change event
+    FFromDropBtn: Boolean;                       // determines when to capture mouse on drop
+    FKeyTimerActive: Boolean;                    // true when timer running for OnKeyPause
+    FKeyIsDown: Boolean;                         // true between KeyDown & KeyUp events
+    FChangePending: Boolean;
+    FListItemsOnly: Boolean;
+    FLastFound: string;
+    FLastInput: string;                          // last thing the user typed into the edit box
+    FOnChange: TNotifyEvent;                     // maps to editbox change event
+    FOnClick: TNotifyEvent;                      // maps to listbox click event
+    FOnDblClick: TNotifyEvent;                   // maps to listbox double click event
+    FOnDropDown: TNotifyEvent;                   // event called when listbox appears
+    FOnDropDownClose: TNotifyEvent;              // event called when listbox disappears
+    FOnKeyDown: TKeyEvent;                       // maps to editbox keydown event
+    FOnKeyPress: TKeyPressEvent;                 // maps to editbox keypress event
+    FOnKeyUp: TKeyEvent;                         // maps to editbox keyup event
+    FOnKeyPause: TNotifyEvent;                   // delayed change event when using keyboard
+    FOnMouseClick: TNotifyEvent;                 // called when click event triggered by mouse
+    FOnNeedData: TORNeedDataEvent;               // called for longlist when more items needed
+    FCheckedState: string;                       // Used to refresh checkboxes when combo box cancel is pressed
+    FOnCheckedText: TORCheckComboTextEvent;      // Used to modify the edit box display text when using checkboxes
+    FCheckBoxEditColor: TColor;                  // Edit Box color for Check Box Combo List, when not in Focus
+    FTemplateField: boolean;
+    FCharsNeedMatch: integer;                    // how many text need to be matched for auto selection
+    FUniqueAutoComplete: Boolean;                // If true only perform autocomplete for unique list items.
+    FBlackColorMode: boolean;
+    FDisableHints: boolean;                      // true if hints have been disabled because drop down window was opened
+    FDropDownStatusChangedCount: integer;        // prevents multiple calls to disabling hint window
+    procedure DropDownStatusChanged(opened: boolean);
+    procedure ClearDropDownStatus;
+    function EditControl: TWinControl;
+    procedure AdjustSizeOfSelf;
+    procedure DropButtonDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+      X, Y: Integer);
+    procedure DropButtonUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+      X, Y: Integer);
+    procedure FwdChange(Sender: TObject);
+    procedure FwdChangeDelayed;
+    procedure FwdClick(Sender: TObject);
+    procedure FwdDblClick(Sender: TObject);
+    procedure FwdKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure FwdKeyPress(Sender: TObject; var Key: Char);
+    procedure FwdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
+    procedure FwdMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+      X, Y: Integer);
+    procedure FwdNeedData(Sender: TObject; const StartFrom: string;
+      Direction, InsertAt: Integer);
+    procedure SetNumForMatch(const NumberForMatch: integer);
+    function GetAutoSelect: Boolean;
+    function GetColor: TColor;
+    function GetDelimiter: Char;
+    function GetDisplayText(Index: Integer): string;
+    function GetItemHeight: Integer;
+    function GetItemID: Variant;
+    function GetItemIEN: Int64;
+    function GetItemIndex: Integer;
+    function GetItemTipEnable: Boolean;
+    function GetItemTipColor: TColor;
+    function GetLongList: Boolean;
+    function GetMaxLength: Integer;
+    function GetPieces: string;
+    function GetReference(Index: Integer): Variant;
+    function GetSelLength: Integer;
+    function GetSelStart: Integer;
+    function GetSelText: string;
+    function GetShortCount: Integer;
+    function GetSorted: Boolean;
+    function GetHideSynonyms: boolean;
+    function GetSynonymChars: string;
+    function GetTabPositions: string;
+    function GetTabPosInPixels: boolean;
+    function GetText: string;
+    procedure SetAutoSelect(Value: Boolean);
+    procedure SetColor(Value: TColor);
+    procedure SetDelimiter(Value: Char);
+    procedure SetDropDownCount(Value: Integer);
+    procedure SetDroppedDown(Value: Boolean);
+    procedure SetEditRect;
+    procedure SetEditText(const Value: string);
+    procedure SetItemIndex(Value: Integer);
+    procedure SetItemHeight(Value: Integer);
+    procedure SetItemTipEnable(Value: Boolean);
+    procedure SetItemTipColor(Value: TColor);
+    procedure SetLongList(Value: Boolean);
+    procedure SetMaxLength(Value: Integer);
+    procedure SetPieces(const Value: string);
+    procedure SetReference(Index: Integer; AReference: Variant);
+    procedure SetSelLength(Value: Integer);
+    procedure SetSelStart(Value: Integer);
+    procedure SetSelText(const Value: string);
+    procedure SetSorted(Value: Boolean);
+    procedure SetHideSynonyms(Value: boolean);
+    procedure SetSynonymChars(Value: string);
+    procedure SetStyle(Value: TORComboStyle);
+    procedure SetTabPositions(const Value: string);
+    procedure SetTabPosInPixels(const Value: boolean);
+    procedure SetText(const Value: string);
+    procedure SetItems(const Value: TStrings);
+    procedure StartKeyTimer;
+    procedure StopKeyTimer;
+    procedure WMDestroy     (var Message: TWMDestroy); message WM_DESTROY;
+    procedure CMFontChanged (var Message: TMessage); message CM_FONTCHANGED;
+    procedure WMMove        (var Message: TWMMove);  message WM_MOVE;
+    procedure WMSize        (var Message: TWMSize);  message WM_SIZE;
+    procedure WMTimer       (var Message: TWMTimer); message WM_TIMER;
+    procedure UMGotFocus    (var Message: TMessage); message UM_GOTFOCUS;
+    function GetCheckBoxes: boolean;
+    function GetChecked(Index: Integer): Boolean;
+    function GetCheckEntireLine: boolean;
+    function GetFlatCheckBoxes: boolean;
+    procedure SetCheckBoxes(const Value: boolean);
+    procedure SetChecked(Index: Integer; const Value: Boolean);
+    procedure SetCheckEntireLine(const Value: boolean);
+    procedure SetFlatCheckBoxes(const Value: boolean);
+    function GetCheckedString: string;
+    procedure SetCheckedString(const Value: string);
+    procedure SetCheckBoxEditColor(const Value: TColor);
+    procedure SetListItemsOnly(const Value: Boolean);
+    procedure SetOnCheckedText(const Value: TORCheckComboTextEvent);
+    procedure SetTemplateField(const Value: boolean);
+    function GetOnSynonymCheck: TORSynonymCheckEvent;
+    procedure SetOnSynonymCheck(const Value: TORSynonymCheckEvent);
+    function GetMItems: TStrings;
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+    function GetCaseChanged: boolean;
+    procedure SetCaseChanged(const Value: boolean);
+    function GetLookupPiece: integer;
+    procedure SetLookupPiece(const Value: integer);
+    procedure SetUniqueAutoComplete(const Value: Boolean);
+    procedure LoadComboBoxImage;
+  protected
+    procedure DropPanelBtnPressed(OKBtn, AutoClose: boolean);
+    function GetEditBoxText(Index: Integer): string;
+    procedure CheckBoxSelected(Sender: TObject; Index: integer);
+    procedure UpdateCheckEditBoxText;
+    procedure DoEnter; override;
+    procedure DoExit; override;
+    procedure Loaded; override;
+    function GetEnabled: boolean; override;
+    procedure SetEnabled(Value: boolean); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    function AddReference(const S: string; AReference: Variant): Integer;
+    procedure Clear;
+    procedure ClearTop;
+    procedure ForDataUse(Strings: TStrings);
+    procedure InitLongList(S: string);
+    procedure InsertSeparator;
+    procedure Invalidate; override;
+    procedure SetTextAutoComplete(TextToMatch : String);
+    function GetIEN(AnIndex: Integer): Int64;
+    function SelectByIEN(AnIEN: Int64): Integer;
+    function SelectByID(const AnID: string): Integer;
+    function SetExactByIEN(AnIEN: Int64; const AnItem: string): Integer;
+    function IndexOfReference(AReference: Variant): Integer;
+    procedure InsertReference(Index: Integer; const S: string; AReference: Variant);
+    procedure SelectAll;
+    procedure SetBlackColorMode(Value: boolean);
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+    property DisplayText[Index: Integer]: string read GetDisplayText;
+    property DroppedDown: Boolean read FDroppedDown write SetDroppedDown;
+    property ItemID: Variant read GetItemID;
+    property ItemIEN: Int64 read GetItemIEN;
+    property ItemIndex: Integer read GetItemIndex write SetItemIndex;
+    property References[Index: Integer]: Variant read GetReference write SetReference;
+    property SelLength: Integer read GetSelLength write SetSelLength;
+    property SelStart: Integer read GetSelStart write SetSelStart;
+    property SelText: string read GetSelText write SetSelText;
+    property ShortCount: Integer read GetShortCount;
+    property Checked[Index: Integer]: Boolean read GetChecked write SetChecked;
+    property CheckedString: string read GetCheckedString write SetCheckedString;
+    property TemplateField: boolean read FTemplateField write SetTemplateField;
+    property MItems: TStrings read GetMItems;
+  published
+    property Anchors;
+    property CaseChanged: boolean read GetCaseChanged write SetCaseChanged default TRUE;
+    property CheckBoxes: boolean read GetCheckBoxes write SetCheckBoxes default FALSE;
+    property Style: TORComboStyle read FStyle write SetStyle;
+    property Align;
+    property AutoSelect: Boolean read GetAutoSelect write SetAutoSelect;
+    property Caption: string read GetCaption write SetCaption;
+    property Color: TColor read GetColor write SetColor;
+    property Ctl3D;
+    property Delimiter: Char read GetDelimiter write SetDelimiter default '^';
+    property DropDownCount: Integer read FDropDownCount write SetDropDownCount;
+    property Enabled;
+    property Font;
+    property Items: TStrings read FItems write SetItems;
+    property ItemHeight: Integer read GetItemHeight write SetItemHeight;
+    property ItemTipColor: TColor read GetItemTipColor write SetItemTipColor;
+    property ItemTipEnable: Boolean read GetItemTipEnable write SetItemTipEnable;
+    property ListItemsOnly: Boolean read FListItemsOnly write SetListItemsOnly;
+    property LongList: Boolean read GetLongList write SetLongList;
+    property LookupPiece: Integer read GetLookupPiece write SetLookupPiece;
+    property MaxLength: Integer read GetMaxLength write SetMaxLength;
+    property ParentColor;
+    property ParentCtl3D;
+    property ParentFont;
+    property ParentShowHint;
+    property Pieces: string read GetPieces write SetPieces;
+    property PopupMenu;
+    property ShowHint;
+    property HideSynonyms: boolean read GetHideSynonyms write SetHideSynonyms default FALSE;
+    property Sorted: Boolean read GetSorted write SetSorted;
+    property SynonymChars: string read GetSynonymChars write SetSynonymChars;
+    property TabPosInPixels: boolean read GetTabPosInPixels write SetTabPosInPixels default False; // MUST be before TabPositions!
+    property TabPositions: string read GetTabPositions write SetTabPositions;
+    property TabOrder;
+    property TabStop;
+    property Text: string read GetText write SetText;
+    property Visible;
+    property FlatCheckBoxes: boolean read GetFlatCheckBoxes write SetFlatCheckBoxes default TRUE;
+    property CheckEntireLine: boolean read GetCheckEntireLine write SetCheckEntireLine default FALSE;
+    property CheckBoxEditColor: TColor read FCheckBoxEditColor write SetCheckBoxEditColor default clBtnFace;
+    property OnCheckedText: TORCheckComboTextEvent read FOnCheckedText write SetOnCheckedText;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property OnClick: TNotifyEvent read FOnClick write FOnClick;
+    property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
+    property OnDragDrop;
+    property OnDragOver;
+    property OnDropDown: TNotifyEvent read FOnDropDown write FOnDropDown;
+    property OnDropDownClose: TNotifyEvent read FOnDropDownClose write FOnDropDownClose;
+    property OnEnter;
+    property OnExit;
+    property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;
+    property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress;
+    property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp;
+    property OnKeyPause: TNotifyEvent read FOnKeyPause write FOnKeyPause;
+    property OnMouseClick: TNotifyEvent read FOnMouseClick write FOnMouseClick;
+    property OnNeedData: TORNeedDataEvent read FOnNeedData write FOnNeedData;
+    property OnResize;
+    property OnSynonymCheck: TORSynonymCheckEvent read GetOnSynonymCheck write SetOnSynonymCheck;
+    property CharsNeedMatch: integer  read FCharsNeedMatch  write SetNumForMatch;
+{UniqueAutoComplete Was added as a result of the following defects:
+ 7293 - PTM 85:  Backspace and Dosage:  Desired dosage does not populate if dosage is not in local dosage field
+ 7337 - PTM 160 Meds: #8 IMO - Simple - Change Order in which Error generated if "Enter" is hit instead of "OK"
+ 7278 - PTM 36 Meds: Select 40000 UNT/2ML and backspace to 4000 the dose selected remains 40000
+ 7284 - Inconsistencies of pulling in a dose from the Possible Dose File }
+    property UniqueAutoComplete: Boolean read FUniqueAutoComplete write SetUniqueAutoComplete default False;
+  end;
+
+  TORAutoPanel = class(TPanel)
+  private
+    FSizes: TList;
+    procedure BuildSizes( Control: TWinControl);
+    procedure DoResize( Control: TWinControl; var CurrentIndex: Integer);
+  protected
+    procedure Loaded; override;
+    procedure Resize; override;
+  public
+    destructor Destroy; override;
+  end;
+
+  TOROffsetLabel = class(TGraphicControl)        // see TCustomLabel in the VCL
+  private
+    FHorzOffset: Integer;                        // offset from left of label in pixels
+    FVertOffset: Integer;                        // offset from top of label in pixels
+    FWordWrap: Boolean;                          // true if word wrap should occur
+    function GetTransparent: Boolean;
+    procedure AdjustSizeOfSelf;
+    procedure DoDrawText(var Rect: TRect; Flags: Word);
+    procedure SetHorzOffset(Value: Integer);
+    procedure SetVertOffset(Value: Integer);
+    procedure SetTransparent(Value: Boolean);
+    procedure SetWordWrap(Value: Boolean);
+    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
+    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
+  protected
+    procedure Paint; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+  published
+    property Align;
+    property Caption;
+    property Color;
+    property Enabled;
+    property Font;
+    property HorzOffset: Integer read FHorzOffset write SetHorzOffset;
+    property ParentColor;
+    property ParentFont;
+    property ParentShowHint;
+    property PopupMenu;
+    property ShowHint;
+    property Transparent: Boolean read GetTransparent write SetTransparent;
+    property VertOffset: Integer read FVertOffset write SetVertOffset;
+    property Visible;
+    property WordWrap: Boolean read FWordWrap write SetWordWrap;
+    property OnClick;
+    property OnDblClick;
+    property OnDragDrop;
+    property OnDragOver;
+    property OnEndDrag;
+    property OnMouseDown;
+    property OnMouseMove;
+    property OnMouseUp;
+    property OnStartDrag;
+  end;
+
+  TORAlignButton = class(TButton)
+  private
+    FAlignment: TAlignment;
+    FWordWrap: boolean;
+    FLayout: TTextLayout;
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure SetAlignment(const Value: TAlignment);
+    procedure SetLayout(const Value: TTextLayout);
+    procedure SetWordWrap(const Value: boolean);
+  public
+    constructor Create(AOwner: TComponent); override;
+  published
+    property Align;
+    property Alignment: TAlignment read FAlignment write SetAlignment default taCenter;
+    property Layout: TTextLayout read FLayout write SetLayout default tlCenter;
+    property WordWrap: boolean read FWordWrap write SetWordWrap default FALSE;
+  end;
+
+{  TORAlignBitBtn = class(TBitBtn)
+  published
+    property Align;
+  end;}
+
+  TORAlignSpeedButton = class(TSpeedButton)
+  protected
+    procedure Paint; override;
+  public
+    property Canvas;
+  published
+    property Align;
+    property OnResize;
+  end;
+
+  TORAlignEdit =  class(TEdit)  //Depricated -- Use TCaptionEdit instead
+  published
+    property Align;
+  end;
+
+  TORDraggingEvent = procedure(Sender: TObject; Node: TTreeNode; var CanDrag: boolean) of object;
+
+
+  TCaptionTreeView = class(TTreeView, IVADynamicProperty)
+  private
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+  protected
+    FCaptionComponent: TStaticText;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Align;
+    property Caption: string read GetCaption write SetCaption;
+  end;
+
+  TORTreeView = class;
+
+  TORTreeNode = class(TTreeNode)
+  private
+    FTag: integer;
+    FStringData: string;
+    FCaption: string;
+    function GetParent: TORTreeNode;
+    procedure SetCaption(const Value: string);
+  protected
+    function GetText: string;
+    procedure SetText(const Value: string);
+    procedure UpdateText(const Value: string; UpdateData: boolean = TRUE);
+    function GetBold: boolean;
+    procedure SetBold(const Value: boolean);
+    procedure SetStringData(const Value: string);
+    function GetORTreeView: TORTreeView;
+  public
+    procedure SetPiece(PieceNum: Integer; const NewPiece: string);
+    procedure EnsureVisible;
+    property Bold: boolean read GetBold write SetBold;
+    property Tag: integer read FTag write FTag;
+    property StringData: string read FStringData write SetStringData;
+    property TreeView: TORTreeView read GetORTreeView;
+    property Text: string read GetText write SetText;
+    property Parent: TORTreeNode read GetParent;
+    property Caption: string read FCaption write SetCaption;
+  end;
+
+  TNodeCaptioningEvent = procedure(Sender: TObject; var Caption: string) of object;
+
+  TORTreeView = class(TCaptionTreeView)
+  private
+    FOnDragging: TORDraggingEvent;
+    FDelim: Char;
+    FPiece: integer;
+    FOnAddition: TTVExpandedEvent;
+    FShortNodeCaptions: boolean;
+    FOnNodeCaptioning: TNodeCaptioningEvent;
+    procedure SetShortNodeCaptions(const Value: boolean);
+  protected
+    procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
+    function CreateNode: TTreeNode; override;
+    function GetHorzScrollPos: integer;
+    procedure SetHorzScrollPos(Value: integer);
+    function GetVertScrollPos: integer;
+    procedure SetVertScrollPos(Value: integer);
+    procedure SetNodeDelim(const Value: Char);
+    procedure SetNodePiece(const Value: integer);
+  public
+    constructor Create(AOwner: TComponent); override;
+    function FindPieceNode(Value: string;
+                           ParentDelim: Char = #0; StartNode: TTreeNode = nil): TORTreeNode; overload;
+    function FindPieceNode(Value: string; APiece: integer;
+                           ParentDelim: Char = #0; StartNode: TTreeNode = nil): TORTreeNode; overload;
+    procedure RenameNodes;
+    function GetExpandedIDStr(APiece: integer; ParentDelim: char = #0): string;
+    procedure SetExpandedIDStr(APiece: integer; const Value: string); overload;
+    procedure SetExpandedIDStr(APiece: integer; ParentDelim: char;
+                                                const Value: string); overload;
+    function GetNodeID(Node: TORTreeNode; ParentDelim: Char = #0): string; overload;
+    function GetNodeID(Node: TORTreeNode; APiece: integer; ParentDelim: Char = #0): string; overload;
+  published
+    property Caption;
+    property NodeDelim: Char read FDelim write SetNodeDelim default '^';
+    property NodePiece: integer read FPiece write SetNodePiece;
+    property OnAddition: TTVExpandedEvent read FOnAddition write FOnAddition;
+    property OnDragging: TORDraggingEvent read FOnDragging write FOnDragging;
+    property HorzScrollPos: integer read GetHorzScrollPos write SetHorzScrollPos default 0;
+    property VertScrollPos: integer read GetVertScrollPos write SetVertScrollPos default 0;
+    property ShortNodeCaptions: boolean read FShortNodeCaptions write SetShortNodeCaptions default False;
+    property OnNodeCaptioning: TNodeCaptioningEvent read FOnNodeCaptioning write FOnNodeCaptioning;
+  end;
+
+  TORCBImageIndexes = class(TComponent)
+  private
+    FImages: TCustomImageList;
+    FImageChangeLink: TChangeLink;
+    FCheckedEnabledIndex: integer;
+    FGrayedEnabledIndex: integer;
+    FUncheckedEnabledIndex: integer;
+    FCheckedDisabledIndex: integer;
+    FGrayedDisabledIndex: integer;
+    FUncheckedDisabledIndex: integer;
+  protected
+    procedure SetCheckedDisabledIndex(const Value: integer);
+    procedure SetCheckedEnabledIndex(const Value: integer);
+    procedure SetGrayedDisabledIndex(const Value: integer);
+    procedure SetGrayedEnabledIndex(const Value: integer);
+    procedure SetUncheckedDisabledIndex(const Value: integer);
+    procedure SetUncheckedEnabledIndex(const Value: integer);
+    procedure ImageListChanged(Sender: TObject);
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    function IdxString: string;
+    procedure SetIdxString(Value: string);
+    procedure SetImages(const Value: TCustomImageList);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+  published
+    property CheckedEnabledIndex:    integer read FCheckedEnabledIndex    write SetCheckedEnabledIndex;
+    property CheckedDisabledIndex:   integer read FCheckedDisabledIndex   write SetCheckedDisabledIndex;
+    property GrayedEnabledIndex:     integer read FGrayedEnabledIndex     write SetGrayedEnabledIndex;
+    property GrayedDisabledIndex:    integer read FGrayedDisabledIndex    write SetGrayedDisabledIndex;
+    property UncheckedEnabledIndex:  integer read FUncheckedEnabledIndex  write SetUncheckedEnabledIndex;
+    property UncheckedDisabledIndex: integer read FUncheckedDisabledIndex write SetUncheckedDisabledIndex;
+  end;
+
+  TGrayedStyle = (gsNormal, gsQuestionMark, gsBlueQuestionMark);
+
+  TORCheckBox = class(TCheckBox, IORBlackColorModeCompatible)
+  private
+    FStringData: string;
+    FCanvas: TCanvas;
+    FGrayedToChecked: boolean;
+    FCustomImagesOwned: boolean;
+    FCustomImages: TORCBImageIndexes;
+    FGrayedStyle: TGrayedStyle;
+    FWordWrap: boolean;
+    FAutoSize: boolean;
+    FSingleLine: boolean;
+    FSizable: boolean;
+    FGroupIndex: integer;
+    FAllowAllUnchecked: boolean;
+    FRadioStyle: boolean;
+    FAssociate: TControl;
+    FFocusOnBox: boolean;
+    FBlackColorMode: boolean;
+    procedure SetFocusOnBox(value: boolean);
+    procedure CNMeasureItem    (var Message: TWMMeasureItem);   message CN_MEASUREITEM;
+    procedure CNDrawItem       (var Message: TWMDrawItem);      message CN_DRAWITEM;
+    procedure CMFontChanged    (var Message: TMessage);         message CM_FONTCHANGED;
+    procedure CMEnabledChanged (var Message: TMessage);         message CM_ENABLEDCHANGED;
+    procedure WMLButtonDblClk  (var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
+    procedure WMSize           (var Message: TWMSize);          message WM_SIZE;
+    procedure BMSetCheck       (var Message: TMessage);         message BM_SETCHECK;
+    procedure BMGetCheck       (var Message: TMessage);         message BM_GETCHECK;
+    procedure BMGetState       (var Message: TMessage);         message BM_GETSTATE;
+    function GetImageList: TCustomImageList;
+    function GetImageIndexes: string;
+    procedure SetImageIndexes(const Value: string);
+    procedure SetImageList(const Value: TCustomImageList);
+    procedure SetWordWrap(const Value: boolean);
+    function GetCaption: TCaption;
+    procedure SetCaption(const Value: TCaption);
+    procedure SyncAllowAllUnchecked;
+    procedure SetAllowAllUnchecked(const Value: boolean);
+    procedure SetGroupIndex(const Value: integer);
+    procedure SetRadioStyle(const Value: boolean);
+    procedure SetAssociate(const Value: TControl);
+  protected
+    procedure SetAutoSize(Value: boolean); override;
+    procedure GetDrawData(CanvasHandle: HDC; var Bitmap: TBitmap;
+                                             var FocRect, Rect: TRect;
+                                             var DrawOptions: UINT;
+                                             var TempBitMap: boolean);
+    procedure DrawItem(const DrawItemStruct: TDrawItemStruct); dynamic;
+    procedure Toggle; override;
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure SetGrayedStyle(Value: TGrayedStyle);
+    constructor ListViewCreate(AOwner: TComponent; ACustomImages: TORCBImageIndexes);
+    procedure CreateCommon(AOwner: TComponent);
+    property CustomImages: TORCBImageIndexes read FCustomImages;
+    procedure SetParent(AParent: TWinControl); override;
+    procedure UpdateAssociate;
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure AutoAdjustSize;
+    procedure SetBlackColorMode(Value: boolean);
+    property SingleLine: boolean read FSingleLine;
+    property StringData: string read FStringData write FStringData;
+  published
+    property FocusOnBox: boolean read FFocusOnBox write SetFocusOnBox default false;
+    property GrayedStyle: TGrayedStyle read FGrayedStyle write SetGrayedStyle default gsNormal;
+    property GrayedToChecked: boolean read FGrayedToChecked write FGrayedToChecked default TRUE;
+    property ImageIndexes: string read GetImageIndexes write SetImageIndexes;
+    property ImageList: TCustomImageList read GetImageList write SetImageList;
+    property WordWrap: boolean read FWordWrap write SetWordWrap default FALSE;
+    property AutoSize: boolean read FAutoSize write SetAutoSize default FALSE;
+    property Caption: TCaption read GetCaption write SetCaption;
+    property AllowAllUnchecked: boolean read FAllowAllUnchecked write SetAllowAllUnchecked default TRUE;
+    property GroupIndex: integer read FGroupIndex write SetGroupIndex default 0;
+    property RadioStyle: boolean read FRadioStyle write SetRadioStyle default FALSE;
+    property Associate: TControl read FAssociate write SetAssociate;
+    property OnEnter;
+    property OnExit;
+  end;
+
+  TORListView = class(TListView)
+  private
+  protected
+    procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY;
+    procedure LVMSetColumn(var Message: TMessage); message LVM_SETCOLUMN;
+    procedure LVMSetColumnWidth(var Message: TMessage); message LVM_SETCOLUMNWIDTH;
+  end;
+
+  { TORPopupMenu and  TORMenuItem are not available at design time, since they
+    would offer little value there.  They are currently used for dynamic menu
+    creation }
+  TORPopupMenu = class(TPopupMenu)
+  private
+    FData: string;
+  public
+    property Data: string read FData write FData;
+  end;
+
+  TORMenuItem = class(TMenuItem)
+  private
+    FData: string;
+  public
+    property Data: string read FData write FData;
+  end;
+
+  (*
+  TORCalendar = class(TCalendar)
+  protected
+    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
+  end;
+  *)
+
+  TKeyClickPanel = class(TPanel)
+  protected
+    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
+  end;
+
+  TKeyClickRadioGroup = class(TRadioGroup)
+  protected
+    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
+    procedure Click; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+  TCaptionListBox = class(TListBox, IVADynamicProperty)
+  private
+    FHoverItemPos: integer;
+    FRightClickSelect: boolean;                  // When true, a right click selects teh item
+    FHintOnItem: boolean;
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+    procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP;
+    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
+    procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
+    procedure MoveFocusDown;
+    procedure MoveFocusUp;
+  protected
+    FCaptionComponent: TStaticText;
+    procedure DoEnter; override;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property RightClickSelect: boolean read FRightClickSelect write FRightClickSelect default FALSE;
+    property Caption: string read GetCaption write SetCaption;
+    //Make the ListBox's hint contain the contents of the listbox Item the mouse is currently over.
+    property HintOnItem: boolean read FHintOnItem write FHintOnItem default FALSE;
+  end;
+
+  TCaptionCheckListBox = class(TCheckListBox, IVADynamicProperty)
+  private
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+  protected
+    FCaptionComponent: TStaticText;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Caption: string read GetCaption write SetCaption;
+  end;
+
+  TCaptionMemo = class(TMemo, IVADynamicProperty)
+  private
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+  protected
+    FCaptionComponent: TStaticText;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Caption: string read GetCaption write SetCaption;
+  end;
+
+  TCaptionEdit = class(TEdit, IVADynamicProperty)
+  private
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+  protected
+    FCaptionComponent: TStaticText;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Align;
+    property Caption: string read GetCaption write SetCaption;
+  end;
+
+  TCaptionRichEdit = class(TRichEdit, IVADynamicProperty)
+  private
+  protected
+    FCaption: string;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Align;
+    property Caption: string read FCaption write FCaption;
+  end;
+
+  TCaptionComboBox = class(TComboBox, IVADynamicProperty)
+  private
+    procedure SetCaption(const Value: string);
+    function GetCaption: string;
+  protected
+    FCaptionComponent: TStaticText;
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Caption: string read GetCaption write SetCaption;
+  end;
+
+  TCaptionListView = class(TListView, IVADynamicProperty)
+  public
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Caption;
+  end;
+
+  TCaptionStringGrid = class(TStringGrid, IVADynamicProperty)
+  private
+    FJustToTab: boolean;
+    FCaption: string;
+  protected
+    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
+  public
+    procedure IndexToColRow( index: integer; var Col: integer; var Row: integer);
+    function ColRowToIndex( Col: integer; Row: Integer): integer;
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  published
+    property Caption: string read FCaption write FCaption;
+    property JustToTab: boolean read FJustToTab write FJustToTab default FALSE;
+  end;
+
+function FontWidthPixel(FontHandle: THandle): Integer;
+function FontHeightPixel(FontHandle: THandle): Integer;
+function ItemTipKeyHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; StdCall;
+
+{I may have messed up my Windows.pas file, but mine defines NotifyWinEvent without a stdcall.}
+procedure GoodNotifyWinEvent(event: DWORD; hwnd: HWND; idObject, idChild: Longint); stdcall;
+
+function CalcShortName( LongName: string; PrevLongName: string): string;
+
+{Returns True if any one of 3 mouse buttons are down left, right, or middle}
+function IsAMouseButtonDown : boolean;
+
+implementation  // ---------------------------------------------------------------------------
+
+{$R ORCTRLS}
+
+uses
+  VAUtils;
+  
+const
+  ALPHA_DISTRIBUTION: array[0..100] of string[3] = ('',' ','ACE','ADG','ALA','AMI','ANA','ANT',
+    'ARE','ASU','AZO','BCP','BIC','BOO','BST','CAF','CAR','CD6','CHE','CHO','CMC','CON','CPD',
+    'CVI','DAA','DEF','DEP','DIA','DIH','DIP','DP ','EAR','EM ','EPI','ETH','F2G','FIB','FML',
+    'FUM','GEL','GLU','GPQ','HAL','HEM','HIS','HUN','HYL','IDS','IND','INT','ISO','KEX','LAN',
+    'LEV','LOY','MAG','MAX','MER','MET','MIC','MON','MUD','NAI','NEU','NIT','NUC','OMP','OTH',
+    'P42','PAR','PEN','PHA','PHO','PLA','POL','PRA','PRO','PSE','PYR','RAN','REP','RIB','SAA',
+    'SCL','SFL','SMO','SPO','STR','SUL','TAG','TET','THI','TOL','TRI','TRY','UNC','VAR','VIT',
+    'WRO','ZYM',#127#127#127);
+
+  CBO_CYMARGIN =  8;           // vertical whitespace in the edit portion of combobox
+  CBO_CXBTN    = 13;           // width of drop down button in combobox
+  CBO_CXFRAME  =  5;           // offset to account for frame around the edit part of combobox
+
+  NOREDRAW = 0;                // suspend screen updates
+  DOREDRAW = 1;                // allow screen updates
+
+  KEY_TIMER_DELAY = 500;       // 500 ms delay after key up before OnKeyPause called
+  KEY_TIMER_ID = 5800;         // arbitrary, use high number in case TListBox uses timers
+
+  { use high word to pass positioning flags since listbox is limited to 32767 items }
+  //SFI_TOP = $80000000;         // top of listbox (decimal value: -2147483648)
+  //SFI_END = $90000000;         // end of listbox (decimal value: -1879048192)
+  SFI_TOP = -2147483646;       // top of listbox (hex value: $80000001)
+  SFI_END = -1879048192;       // end of listbox (hex value: $90000000)
+
+  CheckWidth = 15;  // CheckBox Width space to reserve for TORListBox
+  CheckComboBtnHeight = 21;
+  MaxNeedDataLen = 64;
+
+type
+  TItemTip = class(TCustomControl)
+  private
+    FShowing: Boolean;                           // true when itemtip is visible
+    FListBox: TORListBox;                        // current listbox displaying itemtips
+    FListItem: integer;
+    FPoint: TPoint;
+    FSelected: boolean;
+    FTabs: array[0..MAX_TABS] of Integer;         // Holds the pixel offsets for tabs
+    procedure GetTabSettings;
+  protected
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure CreateParams(var Params: TCreateParams); override;
+    procedure Paint; override;
+    procedure Hide;
+    procedure UpdateText(CatchMouse: Boolean);
+    procedure Show(AListBox: TORListBox; AnItem: Integer; APoint: TPoint; CatchMouse: Boolean);
+  end;
+
+  TSizeRatio = class                             // relative sizes and positions for resizing
+    CLeft: Extended;
+    CTop: Extended;
+    CWidth: Extended;
+    CHeight: Extended;
+    constructor Create(ALeft, ATop, AWidth, AHeight: Extended);
+  end;
+
+var
+  uKeyHookHandle: HHOOK;       // handle to capture key events & hide ItemTip window
+  uItemTip: TItemTip;          // ItemTip window
+  uItemTipCount: Integer;      // number of ItemTip clients
+  uNewStyle: Boolean;          // True if using Windows 95 interface
+
+{ General functions and procedures --------------------------------------------------------- }
+
+function ClientWidthOfList(AListBox: TORListBox): Integer;
+begin
+  with AListBox do
+  begin
+    Result := Width;
+    if BorderStyle = bsSingle then
+    begin
+      Dec(Result, 1);
+      if Ctl3D then Dec(Result, 1);
+    end;
+  end;
+  Dec(Result, GetSystemMetrics(SM_CXVSCROLL));
+end;
+
+function FontWidthPixel(FontHandle: THandle): Integer;
+{ return in pixels the average character width of the font passed in FontHandle }
+var
+  DC: HDC;
+  SaveFont: HFont;
+  Extent: TSize;
+begin
+  DC := GetDC(0);
+  try
+    SaveFont := SelectObject(DC, FontHandle);
+    try
+      GetTextExtentPoint32(DC, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 52, Extent);
+      Result := Trunc((Extent.cx / 26 + 1) / 2);     // Round() doesn't line up with dialog units
+    finally
+      SelectObject(DC, SaveFont);
+    end;
+  finally
+    ReleaseDC(0, DC);
+  end;
+end;
+
+function FontHeightPixel(FontHandle: THandle): Integer;
+{ return in pixels the height of the font passed in FontHandle }
+var
+  DC: HDC;
+  SaveFont: HFont;
+  FontMetrics: TTextMetric;
+begin
+  DC := GetDC(0);
+  SaveFont := SelectObject(DC, FontHandle);
+  GetTextMetrics(DC, FontMetrics);
+  Result := FontMetrics.tmHeight;
+  SelectObject(DC, SaveFont);
+  ReleaseDC(0, DC);
+end;
+
+function HigherOf(i, j: Integer): Integer;
+{ returns the greater of two integers }
+begin
+  Result := i;
+  if j > i then Result := j;
+end;
+
+function LowerOf(i, j: Integer): Integer;
+{ returns the lesser of two integers }
+begin
+  Result := i;
+  if j < i then Result := j;
+end;
+
+function Piece(const S: string; Delim: char; PieceNum: Integer): string;
+{ returns the Nth piece (PieceNum) of a string delimited by Delim }
+var
+  i: Integer;
+  Strt, Next: PChar;
+begin
+  i := 1;
+  Strt := PChar(S);
+  Next := StrScan(Strt, Delim);
+  while (i < PieceNum) and (Next <> nil) do
+  begin
+    Inc(i);
+    Strt := Next + 1;
+    Next := StrScan(Strt, Delim);
+  end;
+  if Next = nil then Next := StrEnd(Strt);
+  if i < PieceNum then Result := '' else SetString(Result, Strt, Next - Strt);
+end;
+
+procedure SetPiece(var x: string; Delim: Char; PieceNum: Integer; const NewPiece: string);
+{ sets the Nth piece (PieceNum) of a string to NewPiece, adding delimiters as necessary }
+var
+  i: Integer;
+  Strt, Next: PChar;
+begin
+  i := 1;
+  Strt := PChar(x);
+  Next := StrScan(Strt, Delim);
+  while (i < PieceNum) and (Next <> nil) do
+  begin
+    Inc(i);
+    Strt := Next + 1;
+    Next := StrScan(Strt, Delim);
+  end;
+  if Next = nil then Next := StrEnd(Strt);
+  if i < PieceNum
+    then x := x + StringOfChar(Delim, PieceNum - i) + NewPiece
+    else x := Copy(x, 1, Strt - PChar(x)) + NewPiece + StrPas(Next);
+end;
+
+function IntArrayToString(const IntArray: array of Integer): string;
+{ converts an array of integers to a comma delimited string, 0 element assumed to be count }
+var
+  i: Integer;
+begin
+  Result := '';
+  for i := 1 to IntArray[0] do Result := Result + IntToStr(IntArray[i]) + ',';
+  if Length(Result) > 0 then Delete(Result, Length(Result), 1);
+end;
+
+procedure StringToIntArray(AString: string; var IntArray: array of Integer; AllowNeg: boolean = FALSE);
+{ converts a string to an array of positive integers, count is kept in 0 element }
+var
+  ANum: Integer;
+  APiece: string;
+begin
+  FillChar(IntArray, SizeOf(IntArray), 0);
+  repeat
+    if Pos(',', AString) > 0 then
+    begin
+      APiece := Copy(AString, 1, Pos(',', AString) - 1);
+      Delete(AString, 1, Pos(',', AString));
+    end else
+    begin
+      APiece := AString;
+      AString := EmptyStr;
+    end;
+    ANum := StrToIntDef(Trim(APiece), 0);
+    if(ANum > 0) or (AllowNeg and (ANum < 0)) then
+    begin
+      Inc(IntArray[0]);
+      IntArray[IntArray[0]] := ANum;
+    end;
+  until (Length(AString) = 0) or (IntArray[0] = High(IntArray));
+end;
+
+function StringBetween(const x, First, Last: string): Boolean;
+{ returns true if x collates between the strings First and Last, not case sensitive }
+begin
+  Result := True;
+  if (CompareText(x, First) < 0) or (CompareText(x, Last) > 0) then Result := False;
+end;
+
+{ ItemTip callback ------------------------------------------------------------------------- }
+
+function ItemTipKeyHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
+{ callback used to hide the item tip window whenever a key is pressed }
+begin
+  if lParam shr 31 = 0 then uItemTip.Hide; // hide only on key down
+  Result := CallNextHookEx(uKeyHookHandle, Code, wParam, lParam);
+end;
+
+{ TItemTip --------------------------------------------------------------------------------- }
+
+procedure AddItemTipRef;     // kcm
+begin
+  if uItemTipCount = 0 then uItemTip := TItemTip.Create(Application);  // all listboxes share a single ItemTip window
+  Inc(uItemTipCount);
+end;
+
+procedure RemoveItemTipRef;  // kcm
+begin
+  Dec(uItemTipCount);
+  if (uItemTipCount = 0) and (uItemTip <> nil) then uItemTip.Free;
+end;
+
+constructor TItemTip.Create(AOwner: TComponent);
+{ the windows hook allows the item tip window to be hidden whenever a key is pressed }
+begin
+  inherited Create(AOwner);
+  uKeyHookHandle := SetWindowsHookEx(WH_KEYBOARD, ItemTipKeyHook, 0, GetCurrentThreadID);
+end;
+
+destructor TItemTip.Destroy;
+{ disconnects the windows hook (callback) for keyboard events }
+begin
+  UnhookWindowsHookEx(uKeyHookHandle);
+  inherited Destroy;
+  uItemTip := nil;
+end;
+
+procedure TItemTip.CreateParams(var Params: TCreateParams);
+{ makes the window so that is can be viewed but not activated (can't get events) }
+begin
+  inherited CreateParams(Params);
+  Params.Style := WS_POPUP or WS_DISABLED or WS_BORDER;
+  if uNewStyle then Params.ExStyle := WS_EX_TOOLWINDOW;
+  Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST;  // - test this!!
+end;
+
+procedure TItemTip.Paint;
+{ displays the caption property for the window within the window }
+var
+  AString: string;
+  y: integer;
+
+begin
+  AString := Caption;
+  with Canvas do
+  begin
+    SetBkMode(Handle, TRANSPARENT);
+    FillRect(ClientRect);
+    y := ((ClientRect.Bottom - ClientRect.Top) - FontHeightPixel(Canvas.Font.Handle)) div 2;
+    //TextOut(ClientRect.Left + 1, ClientRect.Top - 1, AString);
+// WARNING - Do NOT change the X pos or the tab starting pos - this will cause a missmatch
+// between the hint window and what the control displayes
+    TabbedTextOut(Handle, 0, y, PChar(AString), Length(AString), MAX_TABS+1, FTabs[0], 0);
+  end;
+end;
+
+procedure TItemTip.Hide;
+{ hides the tip window and makes sure the listbox isn't still capturing the mouse }
+begin
+  if FShowing then
+  begin
+    { The listbox should retain mousecapture if the left mouse button is still down or it
+      is the dropdown list for a combobox.  Otherwise, click events don't get triggered. }
+    with FListBox do if not (csLButtonDown in ControlState) and (FParentCombo = nil)
+      then MouseCapture := False;
+    ShowWindow(Handle, SW_HIDE);
+    FShowing := False;
+  end;
+end;
+
+procedure TItemTip.GetTabSettings;
+var
+  DX, X, i, count: integer;
+  
+begin
+  Count := FListBox.FTabPix[0];
+  FTabs[0] := 1;     // Set first tab stop to location 1 for display purposes
+  if(Count = 1) then
+  begin
+    DX := FListBox.FTabPix[1];
+    X := (DX * 2) - 1;
+  end
+  else
+  begin
+    DX := FontWidthPixel(FListBox.Font.Handle) * 8; // windows tab default is 8 chars
+    X := FListBox.FTabPix[Count];
+    X := Trunc(X / DX) + 1;
+    X := (X * DX) - 1; // get the next tab position after that which is specified
+  end;
+  for i := 1 to MAX_TABS do
+  begin
+    if(i <= Count) then
+      FTabs[i] := FListBox.FTabPix[i] - 1
+    else
+    begin
+      FTabs[i] := X;
+      inc(X, DX);
+    end;
+  end;
+end;
+
+procedure TItemTip.UpdateText(CatchMouse: Boolean);
+var
+  AWidth, ListClientWidth, X: Integer;
+  sr: TRect;
+
+begin
+  Cursor := FListBox.Cursor;
+  Canvas.Font := FListBox.Font;
+  if FSelected then
+  begin
+    Canvas.Brush.Color := clHighlight;
+    Canvas.Font.Color := clHighlightText;
+  end else                                            // the item is not selected
+  begin
+    Canvas.Brush.Color := FListBox.ItemTipColor;
+    Canvas.Font.Color := clWindowText;
+  end;
+  Caption := #9 + FListBox.DisplayText[FListItem];
+  if Copy(Caption, 1, 2) = '__' then Caption := ' ';  // so separators don't extend past window
+
+  GetTabSettings;
+
+  AWidth := LOWORD(GetTabbedTextExtent(Canvas.Handle, PChar(Caption), Length(Caption),
+    MAX_TABS+1, FTabs[0]));
+  // inherent scrollbar may not always be visible in a long list
+  if FListBox.LongList
+    then ListClientWidth := ClientWidthOfList(FListBox)
+    else ListClientWidth := FListBox.ClientWidth;
+  X := FPoint.X;
+  if(FListBox.FCheckBoxes) then
+  begin
+    dec(ListClientWidth, CheckWidth);
+    inc(X, CheckWidth);
+  end;
+  if AWidth > ListClientWidth then
+    Inc(AWidth, 4)
+  else
+    AWidth := ListClientWidth;
+  if SystemParametersInfo(SPI_GETWORKAREA, 0, @sr, 0) then
+  begin
+    if AWidth < (sr.Right - sr.Left) then
+    begin
+      if (X + AWidth) > sr.Right then
+        X := sr.Right - AWidth;
+    end
+    else
+      X := sr.Left;
+  end;
+  FShowing := True;
+  if (GetCaptureControl = nil) and CatchMouse then FListBox.MouseCapture := True;
+  SetWindowPos(Handle, HWND_TOP, X, FPoint.Y, AWidth, FListBox.ItemHeight,
+               SWP_SHOWWINDOW or SWP_NOACTIVATE);
+  Invalidate;
+end;
+
+procedure TItemTip.Show(AListBox: TORListBox; AnItem: Integer; APoint: TPoint;
+  CatchMouse: Boolean);
+{ sets the canvas properties and window size and text depending on the item in the listbox }
+begin
+  if not AListBox.Visible then Exit;                  // added to support DropDown lists
+  FListBox := AListBox;
+  FListItem := AnItem;
+  FPoint := APoint;
+  FSelected := (FListBox.Perform(LB_GETSEL, FListItem, 0) > 0);
+  UpdateText(CatchMouse);
+end;
+
+type
+  TORCBImgIdx = (iiUnchecked, iiChecked, iiGrayed, iiQMark, iiBlueQMark,
+                 iiDisUnchecked, iiDisChecked, iiDisGrayed, iiDisQMark,
+                 iiFlatUnChecked, iiFlatChecked, iiFlatGrayed,
+                 iiRadioUnchecked, iiRadioChecked, iiRadioDisUnchecked, iiRadioDisChecked);
+
+const
+  CheckBoxImageResNames: array[TORCBImgIdx] of PChar = (
+    'ORCB_UNCHECKED', 'ORCB_CHECKED', 'ORCB_GRAYED', 'ORCB_QUESTIONMARK',
+    'ORCB_BLUEQUESTIONMARK', 'ORCB_DISABLED_UNCHECKED', 'ORCB_DISABLED_CHECKED',
+    'ORCB_DISABLED_GRAYED', 'ORCB_DISABLED_QUESTIONMARK',
+    'ORLB_FLAT_UNCHECKED', 'ORLB_FLAT_CHECKED', 'ORLB_FLAT_GRAYED',
+    'ORCB_RADIO_UNCHECKED', 'ORCB_RADIO_CHECKED',
+    'ORCB_RADIO_DISABLED_UNCHECKED', 'ORCB_RADIO_DISABLED_CHECKED');
+
+   BlackCheckBoxImageResNames: array[TORCBImgIdx] of PChar = (
+    'BLACK_ORLB_FLAT_UNCHECKED', 'BLACK_ORLB_FLAT_CHECKED', 'BLACK_ORLB_FLAT_GRAYED',
+    'BLACK_ORCB_QUESTIONMARK', 'BLACK_ORCB_BLUEQUESTIONMARK',
+    'BLACK_ORCB_DISABLED_UNCHECKED', 'BLACK_ORCB_DISABLED_CHECKED',
+    'BLACK_ORCB_DISABLED_GRAYED', 'BLACK_ORCB_DISABLED_QUESTIONMARK',
+    'BLACK_ORLB_FLAT_UNCHECKED', 'BLACK_ORLB_FLAT_CHECKED', 'BLACK_ORLB_FLAT_GRAYED',
+    'BLACK_ORCB_RADIO_UNCHECKED', 'BLACK_ORCB_RADIO_CHECKED',
+    'BLACK_ORCB_RADIO_DISABLED_UNCHECKED', 'BLACK_ORCB_RADIO_DISABLED_CHECKED');
+  
+var
+  ORCBImages: array[TORCBImgIdx, Boolean] of TBitMap;
+
+function GetORCBBitmap(Idx: TORCBImgIdx; BlackMode: boolean): TBitmap;
+var
+  ResName: string;
+begin
+  if(not assigned(ORCBImages[Idx, BlackMode])) then
+  begin
+    ORCBImages[Idx, BlackMode] := TBitMap.Create;
+    if BlackMode then
+      ResName := BlackCheckBoxImageResNames[Idx]
+    else
+      ResName := CheckBoxImageResNames[Idx];
+    ORCBImages[Idx, BlackMode].LoadFromResourceName(HInstance, ResName);
+  end;
+  Result := ORCBImages[Idx, BlackMode];
+end;
+
+procedure DestroyORCBBitmaps; far;
+var
+  i: TORCBImgIdx;
+  mode: boolean;
+
+begin
+  for i := low(TORCBImgIdx) to high(TORCBImgIdx) do
+  begin
+    for Mode := false to true do
+    begin
+      if(assigned(ORCBImages[i, Mode])) then
+        ORCBImages[i, Mode].Free;
+    end;
+  end;
+end;
+
+{ TORStrings }
+
+function TORStrings.Add(const S: string): integer; 
+var
+  RealVerification: Boolean;
+begin
+  RealVerification := Verification;
+  Verification := False; //Disable verification while lists are not matched
+  result := FPlainText.Add(Translator(S));
+  Verification := RealVerification;
+  MList.Insert(result, S); //Don't need to here because MList never gets custom handlers
+end;
+
+procedure TORStrings.Clear;
+var
+  RealVerification: Boolean;
+begin
+  Verify;
+  MList.Clear;
+  RealVerification := Verification;
+  Verification := False;
+  FPlainText.Clear;
+  Verification := RealVerification;
+end;
+
+constructor TORStrings.Create(PlainText: TStrings; Translator: TTranslator);
+begin
+  MList := TStringList.Create;
+  FPlainText := PlainText;
+  FTranslator := Translator;
+  FVerification := False;
+end;
+
+procedure TORStrings.Delete(index: integer);
+var
+  RealVerification: Boolean;
+begin
+  Verify;
+  MList.Delete(index);
+  RealVerification := Verification;
+  Verification := False;
+  FPlainText.Delete(index);
+  Verification := RealVerification;
+end;
+
+destructor TORStrings.Destroy;
+begin
+  MList.Free;
+  inherited;
+end;
+
+function TORStrings.Get(index: integer): string;
+begin
+  Verify;
+  result := MList[index];
+end;
+
+function TORStrings.GetCount: integer;
+begin
+  Verify;
+  result := MList.Count;
+end;
+
+function TORStrings.GetObject(index: integer): TObject;
+begin
+  Verify;
+  result := FPlainText.Objects[index];
+end;
+
+function TORStrings.IndexOf(const S: string): Integer;
+begin
+  Verify;
+  Result := FPlainText.IndexOf(S);
+end;
+
+procedure TORStrings.Insert(Index: Integer; const S: string);
+var
+  RealVerification: Boolean;
+begin
+  Verify;
+  MList.Insert(index, S);
+  RealVerification := Verification;
+  Verification := False;
+  FPlainText.Insert(index, Translator(S));
+  Verification := RealVerification;
+end;
+
+
+procedure TORStrings.Put(Index: Integer; const S: string);
+var
+  RealVerification: Boolean;
+begin  //If this method weren't overridden, the listbox would forget which item was selected.
+  MList[Index] := S;
+  RealVerification := Verification;
+  Verification := False; //Disable verification while lists are not matched
+  FPlainText[Index] := Translator(S);
+  Verification := RealVerification;
+end;
+
+procedure TORStrings.PutObject(index: integer; Value: TObject);
+begin
+  FPlainText.Objects[index] := Value;
+end;
+
+procedure TORStrings.SetUpdateState(Value: boolean);
+begin
+  if Value then
+    FPlainText.BeginUpdate
+  else
+    FPlainText.EndUpdate;
+end;
+
+procedure TORStrings.Verify;
+var
+  Errors: TStringList;
+  i: integer;
+  M: string;
+  Plain: string;
+  TotalCount: integer;
+begin
+  if Verification then begin
+    if not Assigned(FPlainText) then
+      raise Exception.Create( 'ORStrings is missing PlainText property.');
+    if not Assigned(FTranslator) then
+      raise Exception.Create( 'ORStrings is missing Translator property.');
+    Errors := TStringList.Create;
+    try
+      TotalCount := MList.Count;
+      if MList.Count <> PlainText.Count then begin
+        Errors.Add('M string count:'+IntToStr(MList.Count));
+        Errors.Add('Plain string count:'+IntToStr(PlainText.Count));
+        if PlainText.Count > TotalCount then
+          TotalCount := PlainText.Count;
+      end;
+      for i := 0 to TotalCount - 1 do begin
+        if i >= MList.Count then
+          Errors.Add('PlainText['+IntToStr(i)+']: '+PlainText[i])
+        else if i >= PlainText.Count then
+          Errors.Add('ORStrings['+IntToStr(i)+']: '+Translator(MList[i]))
+        else begin
+          M := Translator(MList[i]);
+          Plain := PlainText[i];
+          if M <> Plain then begin
+            if UpperCase(M) = UpperCase(Plain) then  //Listboxes don't always sort cases right, so we give them a little help here.
+            begin
+              PlainText[i] := M;
+            end
+            else
+            begin
+              Errors.Add('PlainText['+IntToStr(i)+']: '+Plain);
+              Errors.Add('ORStrings['+IntToStr(i)+']: '+M);
+            end;
+          end;
+        end;
+      end;
+      if Errors.Count > 0 then begin
+        Errors.Insert( 0, 'OR strings are out of sync with plain text strings :');
+        raise Exception.Create( Errors.Text);
+      end;
+    finally
+      Errors.Free;
+    end;
+  end;
+end;
+
+{ TORListBox ------------------------------------------------------------------------------- }
+
+constructor TORListBox.Create(AOwner: TComponent);
+{ sets initial values for fields used by added properties (ItemTip, Reference, Tab, LongList) }
+begin
+  inherited Create(AOwner);
+  AddItemTipRef; // kcm
+  FTipItem := -1;
+  FItemTipColor := clWindow;
+  FItemTipEnable := True;
+  FLastItemIndex := -1;
+  FFromSelf := False;
+  FDelimiter := '^';
+  FWhiteSpace := ' ';
+  FLongList := False;
+  FFromNeedData := False;
+  FFirstLoad := True;
+  FCurrentTop := -1;
+  FFocusIndex := -1;
+  ShowHint := True;
+  FHideSynonyms := FALSE;
+  FSynonymChars := '<>';
+  FTabPosInPixels := False;
+  FRightClickSelect := FALSE;
+  FCheckBoxes := FALSE;
+  FFlatCheckBoxes := TRUE;
+  FCaseChanged := TRUE;
+  FLookupPiece := 0;
+  FIsPartOfComboBox := False;
+end;
+
+destructor TORListBox.Destroy;
+{ ensures that the special records associated with each listbox item are disposed }
+begin
+  FMItems.Free;
+  if uItemTip <> nil then uItemTip.Hide;
+  DestroyItems;
+  RemoveItemTipRef;  //kcm
+  inherited Destroy;
+end;
+
+procedure TORListBox.CreateParams(var Params: TCreateParams);
+{ ensures that the listbox can support tab stops }
+begin
+  inherited CreateParams(Params);
+  with Params do Style := Style or LBS_USETABSTOPS;
+end;
+
+procedure TORListBox.CreateWnd;
+{ makes sure that actual (rather than 'intercepted') values are restored from FSaveItems
+  (FSaveItems is part of TCustomListBox), necessary if window is recreated by property change
+  also gets the first bolus of data in the case of a LongList }
+var
+  RealVerification: Boolean;
+begin
+  FFromSelf := True;
+  RealVerification := True;
+  if Assigned( FMItems ) then
+  begin
+    RealVerification := FMItems.Verification;
+    FMItems.Verification := False;
+  end;
+  inherited CreateWnd;
+  if Assigned( FMItems ) then
+  begin
+    FMItems.Verification := RealVerification;
+    FMItems.Verify;
+  end;
+  FFromSelf := False;
+  if FTabPos[0] > 0 then SetTabStops;
+end;
+
+procedure TORListBox.Loaded;
+{ after the properties are loaded, get the first data bolus for a LongList }
+begin
+  inherited;
+  if FLongList then FWaterMark := Items.Count;
+  SetTabStops;
+end;
+
+procedure TORListBox.DestroyWnd;
+{ makes sure that actual (rather than 'intercepted') values are saved to FSaveItems
+  (FSaveItems is part of TCustomListBox), necessary if window is recreated by property change }
+begin
+  FFromSelf := True;
+  inherited DestroyWnd;
+  FFromSelf := False;
+end;
+
+function TORListBox.TextToShow(S: string): string;
+{ returns the text that will be displayed based on the Pieces and TabPosition properties }
+var
+  i: Integer;
+begin
+  if FPieces[0] > 0 then
+  begin
+    Result := '';
+    for i := 1 to FPieces[0] do
+      Result := Result + Piece(S, FDelimiter, FPieces[i]) + FWhiteSpace;
+    Result := TrimRight(Result);
+  end
+  else
+  begin
+    SetString(Result, PChar(S), Length(S));
+  end;
+end;
+
+function TORListBox.IsSynonym(const TestStr: string): boolean;
+var
+  i,cnt,len :integer;
+
+begin
+  Result := FALSE;
+  if((FHideSynonyms) and (FSynonymChars <> '')) then
+  begin
+    len := length(FSynonymChars);
+    cnt := 0;
+    for i := 1 to len do
+      if(pos(FSynonymChars[i], TestStr)>0) then inc(cnt);
+    if(cnt = len) then Result := TRUE;
+    if assigned(FOnSynonymCheck) then
+      FOnSynonymCheck(Self, TestStr, Result);
+  end;
+end;
+
+function TORListBox.GetDisplayText(Index: Integer): string;
+{ get the item string actually displayed by the listbox rather than what is in Items[n] }
+var
+  Len: Integer;
+  Buf: array[0..4095] of Char;
+begin
+  Result := '';
+  FFromSelf := True;
+  Len := SendMessage(Handle,LB_GETTEXT, Index, Integer(@Buf));
+  FFromSelf := False;
+  if Len > 0 then
+  begin
+    SetString(Result, Buf, Len);
+  end;
+end;
+
+function TORListBox.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+// The following 7 message handling procedures essentially reimplement the TListBoxStrings
+// object found in StdCtrls.  They do this by intercepting the messages sent by the
+// TListBoxStrings object and modifying the contents of WParam, LParam, and Result.
+// This allows TORListBox to use the ItemData pointer that is part of each listbox item
+// to store its own information yet let the application still use the Objects property
+// of standard Delphi listboxes.  It also makes it possible to implement the Pieces and
+// TabPosition properties without forcing the listbox to be owner drawn.
+
+procedure TORListBox.LBGetItemData(var Message: TMessage);
+{ intercept LB_GETITEMDATA and repoint to UserObject rather than internal value in ItemData }
+var
+  ItemRec: PItemRec;
+begin
+  inherited;
+  if not FFromSelf then with Message do
+  begin
+    ItemRec := PItemRec(Result);
+    if(assigned(ItemRec)) then
+      Result := Integer(ItemRec^.UserObject)
+    else
+      Result := 0;
+  end;
+end;
+
+procedure TORListBox.LBSetItemData(var Message: TMessage);
+{ intercept LB_SETITEMDATA as save object in UserObject since ItemData is used interally }
+var
+  ItemRec: PItemRec;
+begin
+  if not FFromSelf then with Message do
+  begin
+    FFromSelf := True;
+    ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, WParam, 0));  // WParam: list index
+    FFromSelf := False;
+    if(assigned(ItemRec)) then
+      ItemRec^.UserObject := TObject(LParam);
+    LParam := Integer(ItemRec);
+    if uItemTip.FShowing and (uItemTip.FListBox = Self) and (uItemTip.FListItem = WParam) then
+      uItemTip.UpdateText(FALSE);
+  end;
+  inherited;
+end;
+
+procedure TORListBox.LBGetText(var Message: TMessage);
+{ intercept LB_GETTEXT and repoint to full item string rather than what's visible in listbox }
+var
+  ItemRec: PItemRec;
+  Text: string;
+begin
+  inherited;
+  if (not FFromSelf) and (Message.Result <> LB_ERR) then with Message do
+  begin
+    FFromSelf := True;
+    ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, WParam, 0));  // WParam: list index
+    FFromSelf := False;
+    if(assigned(ItemRec)) then
+    begin
+      FFromSelf := True;
+      Text := TListBox(self).Items[WParam];
+      StrCopy(PChar(LParam), PChar(Text));          // LParam: points string buffer
+      Result := Length(Text);                       // Result: length of string
+      FFromSelf := False;
+    end
+    else
+    begin
+      StrPCopy(PChar(LParam),'');
+      Result := 0;
+    end;
+  end;
+end;
+procedure TORListBox.LBGetTextLen(var Message: TMessage);
+{ intercept LB_GETTEXTLEN and return true length of ItemRec^.FullText }
+{ -- in response to HOU-0299-70576, Thanks to Stephen Kirby for this fix! }
+var
+  ItemRec: PItemRec;
+begin
+  inherited;
+  if (not FFromSelf) and (Message.Result <> LB_ERR) then with Message do
+  begin
+    FFromSelf := True;
+    ItemRec := PItemRec(SendMessage(Handle, LB_GETITEMDATA, WParam, 0));
+    if(assigned(ItemRec)) then
+      Result := Length(TListBox(self).Items[WParam])    // Result:length of string
+    else
+      Result := 0;
+    FFromSelf := False;
+  end;
+end;
+
+procedure TORListBox.LBAddString(var Message: TMessage);
+{ intercept LB_ADDSTRING and save full string in separate record.  Then rebuild a string that
+  has what's visible (based on Pieces, TabPosition properties) and substitute that in LParam }
+var
+  ItemRec: PItemRec;
+begin
+  if not FFromSelf then
+  begin
+    if FLongList then                               // -- special long list processing - begin
+    begin
+      if FFromNeedData then FDataAdded := True else with Message do
+      begin
+        WParam := FWaterMark;
+        Result := Perform(LB_INSERTSTRING, WParam, LParam);   // always insert into short list
+        Exit;
+      end;
+    end;                                            // -- special long list processing - end
+    New(ItemRec);
+    with ItemRec^, Message do
+    begin
+      UserObject := nil;
+      CheckedState := cbUnchecked;
+      FCreatingText := PChar(LParam);
+    end;
+    FCreatingItem := TRUE;
+    inherited;
+    FCreatingItem := FALSE;
+    // insert into list AFTER calling inherited in case the listbox is sorted
+    DoChange;
+    with Message do if Result <> LB_ERR then
+    begin
+      FFromSelf := True;
+      SendMessage(Handle,LB_SETITEMDATA, Result, Integer(ItemRec));  // Result: new item index
+      FFromSelf := False;
+    end
+    else Dispose(ItemRec);
+  end
+  else inherited;
+end;
+
+procedure TORListBox.LBInsertString(var Message: TMessage);
+{ intercepts LB_INSERTSTRING, similar to LBAddString except for special long list processing }
+var
+  ItemRec: PItemRec;
+begin
+  if not FFromSelf then
+  begin
+    if FLongList then                               // -- special long list processing - begin
+    begin
+      if FFromNeedData then
+      begin
+        FDataAdded := True;
+        Inc(FCurrentTop);
+      end
+      else with Message do
+      begin
+        if WParam > FWaterMark then
+        begin                                       // make sure insert above watermark
+          FMItems.MList.Move(WParam,FWaterMark);
+          WParam := FWaterMark;
+        end;
+        Inc(FWaterMark);
+      end;
+    end;                                            // -- special long list processing - end
+    New(ItemRec);
+    with ItemRec^, Message do
+    begin
+      UserObject := nil;
+      CheckedState := cbUnchecked;
+      FCreatingText := PChar(LParam);
+    end;
+    FCreatingItem := TRUE;
+    inherited;
+    FCreatingItem := FALSE;
+    DoChange;
+    with Message do if Result <> LB_ERR then
+    begin
+      FFromSelf := True;
+      SendMessage(Handle,LB_SETITEMDATA, Result, Integer(ItemRec)); // Result: new item index
+      FFromSelf := False;
+    end
+    else Dispose(ItemRec);
+  end
+  else inherited;
+end;
+
+procedure TORListBox.LBDeleteString(var Message: TMessage);
+{ intercept LB_DELETESTRING and dispose the record associated with the item being deleted }
+var
+  ItemRec: PItemRec;
+begin
+  with Message do
+  begin
+    FFromSelf := True;
+    ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, WParam, 0));  // WParam: list index
+    FFromSelf := False;
+    if(assigned(ItemRec)) then
+    begin
+      if FLongList and not FFromNeedData then
+        Dec(FWaterMark);
+      Dispose(ItemRec);
+    end;
+  end;
+  FFromSelf := True;   // FFromSelf is set here because, under NT, LBResetContent is called
+  inherited;           // when deleting the last string from the listbox.  Since ItemRec is
+  FFromSelf := False;  // already disposed, it shouldn't be disposed again.
+  DoChange;
+end;
+
+procedure TORListBox.LBResetContent(var Message: TMessage);
+{ intercept LB_RESETCONTENT (list is being cleared) and dispose all records }
+var
+  ItemCount, i: Integer;
+  ItemRec: PItemRec;
+begin
+  if not FFromSelf then
+  begin
+    ItemCount := Perform(LB_GETCOUNT, 0, 0);
+    for i := 0 to ItemCount - 1 do
+    begin
+      FFromSelf := True;
+      ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, i, 0));
+      FFromSelf := False;
+      Dispose(ItemRec);
+    end;
+    Perform(LB_SETCOUNT, 0, 0);
+  end;
+  // This was casuing pain for ResetItems when FWaterMark was being cleared for short lists
+  if FLongList then
+    FWaterMark := 0;
+  inherited;
+end;
+
+procedure TORListBox.LBSetCurSel(var Message: TMessage);
+{ call DoChange, which calls OnChange event whenever ItemIndex changes }
+begin
+  inherited;
+  DoChange;
+end;
+
+procedure TORListBox.CMFontChanged(var Message: TMessage);
+{ make sure itemtip and tabs respond to characteristics of the new font }
+begin
+  inherited;
+  FLargeChange := (Height div ItemHeight) - 1;
+  SetTabStops;
+end;
+
+procedure TORListBox.WMKeyDown(var Message: TWMKeyDown);
+{ intercept the keydown messages so that the listbox can be navigated by using the arrow
+  keys and shifting the focus rectangle rather than generating Click for each keypress }
+var
+  IsSelected: LongBool;
+begin
+  //if Message.CharCode in [VK_RETURN, VK_ESCAPE] then inherited;  // ignore other keys
+  case Message.CharCode of
+    VK_LBUTTON, VK_RETURN, VK_SPACE:
+    begin
+      if (FocusIndex < 0) and (CheckBoxes or MultiSelect) and (Count > 0) then // JNM - 508 compliance
+        SetFocusIndex(0);
+      if FocusIndex > -1 then
+      begin
+        if MultiSelect then
+        begin
+          IsSelected := LongBool(Perform(LB_GETSEL, FocusIndex, 0));
+          Perform(LB_SETSEL, Longint(not IsSelected), FocusIndex);
+        end
+        else Perform(LB_SETCURSEL, FocusIndex, 0);
+        // Send WM_COMMAND here because LBN_SELCHANGE not triggered by LB_SETSEL
+        // and LBN_SELCHANGE is what eventually triggers the Click event.
+        // The LBN_SELCHANGE documentation implies we should send the control id, which is
+        // 32 bits long, in the high word of WPARAM (16 bits).  Since that won't work - we'll
+        // try sending the item index instead.
+        //PostMessage() not SendMessage() is Required here for checkboxes, SendMessage() doesn't
+        //Allow the Checkbox state on the control to be updated
+        if CheckBoxes then
+          PostMessage(Parent.Handle, WM_COMMAND, MAKELONG(FocusIndex, LBN_SELCHANGE), LPARAM(Handle))
+        else
+          SendMessage(Parent.Handle, WM_COMMAND, MAKELONG(FocusIndex, LBN_SELCHANGE), LPARAM(Handle));
+      end;
+    end;
+    VK_PRIOR:          SetFocusIndex(FocusIndex - FLargeChange);
+    VK_NEXT:           SetFocusIndex(FocusIndex + FLargeChange);
+    VK_END:            SetFocusIndex(SFI_END);
+    VK_HOME:           SetFocusIndex(SFI_TOP);
+    VK_LEFT, VK_UP:    SetFocusIndex(FocusIndex - 1);
+    VK_RIGHT, VK_DOWN: SetFocusIndex(FocusIndex + 1);
+    else inherited;
+  end;
+  Message.Result := 0;
+end;
+
+procedure TORListBox.WMLButtonDown(var Message: TWMLButtonDown);
+{ work around for a very ugly problem when the listbox is used with a dropdown combobox
+  when the listbox is used this way (parent=desktop) the click events seem to be ignored }
+var
+  AnItem: Integer;
+  ScrollRect, ListRect: TRect;
+  ScreenPoint: TSmallPoint;
+  TmpRect: TRect;
+begin
+  if FParentCombo <> nil then with Message do
+  begin
+    FDontClose := FALSE;
+    ListRect := ClientRect;                                                      //+
+    if FLongList then ListRect.Right := ListRect.Left + ClientWidthOfList(Self); //+
+    // if the mouse was clicked in the client area set ItemIndex ourselves
+    if PtInRect(ListRect, Point(XPos, YPos)) then                                //~
+    begin
+      AnItem := GetIndexFromY(YPos);
+      if AnItem < Items.Count then ItemIndex := AnItem;
+      FParentCombo.FwdClick(FParentCombo);
+      FDontClose := TRUE;
+    end;
+    // if the mouse was clicked on the scrollbar, send a message to make the scrolling happen
+    // this is done with WM_NCLBUTTONDOWN, which is ignored if mousecapture is on, so we have
+    // to turn mousecapture off, then back on since it's needed to hide the listbox
+    with ListRect do ScrollRect := Rect(Right + 1, Top, Self.Width - 2, Bottom); //~
+    if {(Items.Count > (FLargeChange + 1)) and} PtInRect(ScrollRect, Point(XPos, YPos)) then //~
+    begin
+      if FLongList then                                                    // for long lists
+      begin
+        ScreenPoint := PointToSmallPoint(FScrollBar.ScreenToClient(
+                                         Self.ClientToScreen(Point(XPos, YPos))));
+        MouseCapture := False;
+        SendMessage(FScrollBar.Handle, WM_LBUTTONDOWN, Message.Keys,
+                    MakeLParam(ScreenPoint.X, ScreenPoint.Y));
+        MouseCapture := True;
+      end else                                                             // for normal lists
+      begin
+        ScreenPoint := PointToSmallPoint(Self.ClientToScreen(Point(XPos, YPos)));
+        MouseCapture := False;
+        SendMessage(Self.Handle, WM_NCLBUTTONDOWN, HTVSCROLL,
+                    MakeLParam(ScreenPoint.X, ScreenPoint.Y));
+        MouseCapture := True;
+      end;
+    end
+    else
+    if(FCheckBoxes) then
+    begin
+      TmpRect := ListRect;
+      TmpRect.Top := TmpRect.Bottom;
+      TmpRect.Right := TmpRect.Left + Width;
+      inc(TmpRect.Bottom, CheckComboBtnHeight);
+      if PtInRect(TmpRect, Point(XPos, YPos)) then
+      begin
+        inc(TmpRect.Left, (TmpRect.right - TmpRect.Left) div 2);
+        FParentCombo.DropPanelBtnPressed(XPos <= TmpRect.Left, FALSE);
+      end;
+    end;
+  end;
+  inherited;
+end;
+
+procedure TORListBox.WMLButtonUp(var Message: TWMLButtonUp);
+{ If the listbox is being used with a dropdown combo, hide the listbox whenever something is
+  clicked.  The mouse is captured at this point - this isn't called if clicking scrollbar. }
+begin
+  if (FParentCombo <> nil) and ((not FDontClose) or (not FCheckBoxes)) then FParentCombo.DroppedDown := False;
+  FDontClose := FALSE;
+  inherited;
+end;
+
+procedure TORListBox.WMRButtonUp(var Message: TWMRButtonUp);
+{ When the RightClickSelect property is true, this routine is used to select an item }
+var
+  AnItem: Integer;
+  ListRect: TRect;
+
+begin
+  if(FRightClickSelect and (FParentCombo = nil)) then with Message do // List Boxes only, not Combo Boxes
+  begin
+    ListRect := ClientRect;                                                      //+
+    if FLongList then ListRect.Right := ListRect.Left + ClientWidthOfList(Self); //+
+    // if the mouse was clicked in the client area set ItemIndex ourselves
+    if PtInRect(ListRect, Point(XPos, YPos)) then                                //~
+    begin
+      AnItem := GetIndexFromY(YPos);
+      if AnItem >= Items.Count then AnItem := -1;
+    end
+    else
+      AnItem := -1;
+    ItemIndex := AnItem;
+  end;
+  inherited;
+end;
+
+procedure TORListBox.WMLButtonDblClk(var Message: TWMLButtonDblClk);
+{ treat a doubleclick in the scroll region as if it were a single click - see WMLButtonDown }
+var
+  ScrollRect: TRect;
+  ScreenPoint: TSmallPoint;
+begin
+  if FParentCombo <> nil then with Message do
+  begin
+    if(FCheckBoxes) then FDontClose := TRUE;
+    // if the mouse was clicked on the scrollbar, send a message to make the scrolling happen
+    // this is done with WM_NCLBUTTONDOWN, which is ignored if mousecapture is on, so we have
+    // to turn mousecapture off, then back on since it's needed to hide the listbox
+    with ClientRect do ScrollRect := Rect(Right + 1, Top, Self.Width - 2, Bottom);
+    if (Items.Count > (FLargeChange + 1)) and PtInRect(ScrollRect, Point(XPos, YPos)) then
+    begin
+      if FLongList then                                                    // for long lists
+      begin
+        ScreenPoint := PointToSmallPoint(FScrollBar.ScreenToClient(
+                                         Self.ClientToScreen(Point(XPos, YPos))));
+        MouseCapture := False;
+        SendMessage(FScrollBar.Handle, WM_LBUTTONDOWN, Message.Keys,
+                    MakeLParam(ScreenPoint.X, ScreenPoint.Y));
+        MouseCapture := True;
+      end else                                                             // for normal lists
+      begin
+        ScreenPoint := PointToSmallPoint(Self.ClientToScreen(Point(XPos, YPos)));
+        MouseCapture := False;
+        SendMessage(Self.Handle, WM_NCLBUTTONDOWN, HTVSCROLL,
+                    MakeLParam(ScreenPoint.X, ScreenPoint.Y));
+        MouseCapture := True;
+      end; {if FLongList}
+    end; {if (Items.Count)}
+  end; {if FParentCombo}
+  inherited;
+end;
+
+procedure TORListBox.WMCancelMode(var Message: TMessage);
+{ This message is sent when focus shifts to another window - need to hide the listbox at this
+  point if it is being used with a dropdown combobox. }
+begin
+  uItemTip.Hide;
+  if FParentCombo <> nil then FParentCombo.DroppedDown := False;
+  inherited;
+end;
+
+procedure TORListBox.WMMove(var Message: TWMMove);
+{ whenever in LongList mode we need to move the scrollbar along with the listbox }
+begin
+  inherited;
+  if FScrollBar <> nil then AdjustScrollBar;
+end;
+
+procedure TORListBox.WMSize(var Message: TWMSize);
+{ calculate the number of visible items in the listbox whenever it is resized
+  if in LongList mode, size the scrollbar to match the listbox }
+begin
+  inherited;
+  FLargeChange := (Message.Height div ItemHeight) - 1;
+  if FScrollBar <> nil then AdjustScrollBar;
+end;
+
+procedure TORListBox.WMVScroll(var Message: TWMVScroll);
+{ makes sure the itemtip is hidden whenever the listbox is scrolled }
+// it would be better if this was done right away (before endscroll, but it seems to mess
+// up mouse capture  (SaveCaptureControl, HideItemTip, RestoreCaptureControl?)
+begin
+  inherited;
+  if Message.ScrollCode = SB_ENDSCROLL then uItemTip.Hide;
+end;
+
+procedure TORListBox.CMHintShow(var Message: TMessage);
+{ if ShowHint is used to delay showing tip, starts showing ItemTip when hint timer expires }
+var
+  APoint: TPoint;
+begin
+  inherited;
+  FItemTipActive := True;
+  GetCursorPos(APoint);
+  APoint := ScreenToClient(APoint);
+  MouseMove([], APoint.X, APoint.Y);                // assume nothing in ShiftState for now
+end;
+
+procedure TORListBox.Click;
+begin
+  inherited Click;
+  DoChange;
+end;
+
+procedure TORListBox.DoChange;
+{ call the OnChange Event if ItemIndex is changed }
+begin
+  if ItemIndex <> FLastItemIndex then
+  begin
+    FLastItemIndex := ItemIndex;
+    if (not isPartOfComboBox) and (ItemIndex <> -1) then
+      SetFocusIndex(ItemIndex);
+    if Assigned(FOnChange) then FOnChange(Self);
+  end;
+end;
+
+procedure TORListBox.DoEnter;
+{ display the item tip window when the listbox gets keyboard focus - if itemtip enabled }
+begin
+  //if Items.Count > 0 then SetFocusIndex(TopIndex);  // this seems to cause problems
+  //Fix For ClearQuest: HDS00001576
+  //This fix has been commented out, becuase it causes problems
+{  if (Items.Count > 0) and (Not IsAMouseButtonDown()) and (ItemIndex = -1) then
+    SetFocusIndex(TopIndex);//ItemIndex := TopIndex; }
+  if FHideSelection and (ItemIndex < 0) and (FFocusIndex >= 0) then
+    ItemIndex := FFocusIndex;
+  inherited DoEnter;
+end;
+
+procedure TORListBox.DoExit;
+var
+  SaveIndex: integer;
+{ make sure item tip is hidden for this listbox when focus shifts to something else }
+begin
+  if FHideSelection then
+  begin
+    SaveIndex := ItemIndex;
+    ItemIndex := -1;
+    FFocusIndex := SaveIndex;
+  end;
+
+  uItemTip.Hide;
+  FItemTipActive := False;
+  inherited DoExit;
+end;
+
+procedure TORListBox.DestroyItems;
+var
+  ItemCount,i: Integer;
+  ItemRec: PItemRec;
+
+begin
+  if(not FItemsDestroyed) then
+  begin
+    ItemCount := Perform(LB_GETCOUNT, 0, 0);
+    for i := 0 to ItemCount - 1 do
+    begin
+      FFromSelf := True;
+      ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, i, 0));
+      FFromSelf := False;
+      if Assigned(ItemRec) then
+        Dispose(ItemRec);
+    end;
+    FItemsDestroyed := TRUE;
+
+  end;
+end;
+
+procedure TORListBox.ToggleCheckBox(idx: integer);
+var
+  ItemRec: PItemRec;
+  OldFromSelf: boolean;
+  Rect: TRect;
+
+begin
+  if(not FCheckBoxes) or (idx < 0) or (idx >= Items.Count) then exit;
+  OldFromSelf := FFromSelf;
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, idx, 0));
+  FFromSelf := OldFromSelf;
+  if(assigned(ItemRec)) then
+  begin
+    if(FAllowGrayed) then
+    begin
+      case ItemRec^.CheckedState of
+        cbUnchecked: ItemRec^.CheckedState := cbGrayed;
+        cbGrayed:    ItemRec^.CheckedState := cbChecked;
+        cbChecked:   ItemRec^.CheckedState := cbUnchecked;
+      end;
+    end
+    else
+    begin
+      if(ItemRec^.CheckedState = cbUnchecked) then
+        ItemRec^.CheckedState := cbChecked
+      else
+        ItemRec^.CheckedState := cbUnChecked;
+    end;
+  end;
+  Rect := ItemRect(Idx);
+  InvalidateRect(Handle, @Rect, FALSE);
+  if(assigned(FOnClickCheck)) then
+    FOnClickCheck(Self, idx);
+  if(assigned(FParentCombo)) then
+    FParentCombo.UpdateCheckEditBoxText;
+end;
+
+procedure TORListBox.KeyPress(var Key: Char);
+begin
+  {inherited KeyPress is changing the ' ' into #0, had to move conditional before inherited.}
+  if (Key = ' ') then begin
+    ToggleCheckBox(ItemIndex);
+    {The space bar causes the focus to jump to an item in the list that starts with
+     a space. Disable that function.}
+    Key := #0;
+  end;
+  inherited;
+end;
+
+procedure TORListBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+{ hide the item tip window whenever an item is clicked - ignored if itemtip not enabled}
+var
+  idx: integer;
+
+begin
+  uItemTip.Hide;
+  inherited MouseDown(Button, Shift, X, Y);
+  if(FCheckBoxes) and (X >= 0) and (X <= Width) and (Y >= 0) and (Y <= Height) then
+  begin
+    idx := GetIndexFromY(Y);
+    if(idx >= 0) then
+    begin
+      if(FCheckEntireLine) then
+        ToggleCheckBox(idx)
+      else
+        if(X < CheckWidth) then ToggleCheckBox(idx);
+    end;
+  end;
+end;
+
+procedure TORListBox.MouseMove(Shift: TShiftState; X, Y: Integer);
+{ hide and show the appropriate item tip window as the mouse moves through the listbox }
+const
+  CATCH_MOUSE = True;
+var
+  AnItem: Integer;
+  TrueOffset :integer;
+  TipPos: TPoint;
+begin
+  inherited MouseMove(Shift, X, Y);
+  if (not FItemTipEnable) or (not Application.Active) then Exit;
+  { Make sure mouse really moved before continuing.  For some reason, MouseMove gets called
+    every time a navigation key is pressed. If FItemTipActive is true, mouse is pausing
+    over the list.}
+  if (not FItemTipActive) and (X = FLastMouseX) and (Y = FLastMouseY) then Exit;
+  FLastMouseX := X;
+  FLastMouseY := Y;
+  // when captured mouse moving outside listbox
+  if not PtInRect(ClientRect, Point(X, Y)) then
+  begin
+    uItemTip.Hide;
+    FItemTipActive := False;
+    FTipItem := -1;
+    Exit;
+  end;
+  // borrow hint timer to delay first ItemTip
+  if ShowHint and not FItemTipActive then Exit;
+  // when mouse moving within listbox
+  AnItem := GetIndexFromY(Y);
+  TrueOffset := (Y div ItemHeight) + TopIndex;
+  if AnItem <> FTipItem then
+  begin
+    if (AnItem < Items.Count) and ((TrueOffset - TopIndex + 1) * ItemHeight < Height) then
+    begin
+      TipPos := ClientToScreen(Point(0, (TrueOffset - TopIndex) * ItemHeight));
+      uItemTip.Show(Self, AnItem, TipPos, CATCH_MOUSE);
+      FTipItem := AnItem;
+    end else
+    begin
+      uItemTip.Hide;
+      FTipItem := -1;
+    end;
+  end;
+end;
+
+procedure TORListBox.MeasureItem(Index: Integer; var Height: Integer);
+var
+  Txt:string;
+
+begin
+  if(FHideSynonyms) and (fSynonymChars <> '') then
+  begin
+    if(FCreatingItem) then
+      Txt := FCreatingText
+    else
+      Txt :=  Items[Index];
+    if(IsSynonym(Txt)) then Height := 0;
+  end;
+  inherited MeasureItem(Index, Height);
+end;
+
+procedure TORListBox.WMDestroy(var Message: TWMDestroy);
+begin
+  if(assigned(Owner)) and (csDestroying in Owner.ComponentState) then
+    DestroyItems;
+  inherited;
+end;
+
+procedure TORListBox.CNDrawItem(var Message: TWMDrawItem);
+begin
+  if(FCheckBoxes) then
+    with Message.DrawItemStruct^ do
+      inc(rcItem.Left, CheckWidth);
+  inherited;
+end;
+
+procedure TORListBox.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);
+var
+  Flags: Longint;
+  ItemRec: PItemRec;
+  OldFromSelf :boolean;
+  BMap: TBitMap;
+  i, DY: integer;
+  TmpR: TRect;
+  Neg: boolean;
+  ShowText: string;
+begin
+  if(assigned(FOnBeforeDraw)) then
+    FOnBeforeDraw(Self, Index, Rect, State);
+  if Assigned(OnDrawItem) then OnDrawItem(Self, Index, Rect, State)
+  else
+  begin
+    Canvas.FillRect(Rect);
+    if Index < Items.Count then
+    begin
+      Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER);
+      if not UseRightToLeftAlignment then
+        Inc(Rect.Left, 2)
+      else
+        Dec(Rect.Right, 2);
+      OldFromSelf := FFromSelf;
+      FFromSelf := True;
+      ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));  // WParam: list index
+      FFromSelf := OldFromSelf;
+
+      if(FCheckBoxes) then
+      begin
+        if(assigned(ItemRec)) then
+        begin
+          case ItemRec^.CheckedState of
+            cbUnchecked:
+              begin
+                if(FFlatCheckBoxes) then
+                  BMap := GetORCBBitmap(iiFlatUnChecked, FBlackColorMode)
+                else
+                  BMap := GetORCBBitmap(iiUnchecked, FBlackColorMode);
+              end;
+            cbChecked:
+              begin
+                if(FFlatCheckBoxes) then
+                  BMap := GetORCBBitmap(iiFlatChecked, FBlackColorMode)
+                else
+                  BMap := GetORCBBitmap(iiChecked, FBlackColorMode);
+              end;
+            else // cbGrayed:
+              begin
+                if(FFlatCheckBoxes) then
+                  BMap := GetORCBBitmap(iiFlatGrayed, FBlackColorMode)
+                else
+                  BMap := GetORCBBitmap(iiGrayed, FBlackColorMode);
+              end;
+          end;
+        end
+        else
+        begin
+          if(FFlatCheckBoxes) then
+            BMap := GetORCBBitmap(iiFlatGrayed, FBlackColorMode)
+          else
+            BMap := GetORCBBitmap(iiGrayed, FBlackColorMode);
+        end;
+        TmpR := Rect;
+        TmpR.Right := TmpR.Left;
+        dec(TmpR.Left, CheckWidth+1);
+        DY := ((TmpR.Bottom - TmpR.Top) - BMap.Height) div 2;
+        Canvas.Draw(TmpR.Left, TmpR.Top + DY, BMap);
+      end;
+
+      if(FTabPos[0] > 0) then
+        Flags := (FTabPos[1] * 256) or Flags or DT_TABSTOP or DT_EXPANDTABS;
+
+      ShowText := GetDisplayText(Index);
+      if(Style <> lbStandard) and (FTabPos[0] > 0) then
+      begin
+        for i := 1 to FTabPix[0] do
+        begin
+          Neg := (FTabPix[i] < 0);
+          if Neg then FTabPix[i] := -FTabPix[i];
+          inc(FTabPix[i],Rect.Left-1);
+          if Neg then FTabPix[i] := -FTabPix[i];
+        end;
+        TabbedTextOut(Canvas.Handle, Rect.Left, Rect.Top+1, PChar(ShowText), Length(ShowText),
+          FTabPix[0], FTabPix[1], -1);
+        for i := 1 to FTabPix[0] do
+        begin
+          Neg := (FTabPix[i] < 0);
+          if Neg then FTabPix[i] := -FTabPix[i];
+          dec(FTabPix[i],Rect.Left-1);
+          if Neg then FTabPix[i] := -FTabPix[i];
+        end;
+      end
+      else
+        DrawText(Canvas.Handle, PChar(ShowText), Length(ShowText), Rect, Flags);
+    end;
+  end;
+end;
+
+function TORListBox.GetIndexFromY(YPos :integer) :integer;
+begin
+  if(FHideSynonyms) then
+  begin
+    Result := TopIndex-1;
+    repeat
+      inc(Result);
+      if(Perform(LB_GETITEMHEIGHT, Result, 0) > 0) then
+        dec(YPos,ItemHeight);
+    until((YPos < 0) or (Result >= Items.Count));
+  end
+  else
+    Result := (YPos div ItemHeight) + TopIndex;
+end;
+
+procedure TORListBox.SetFocusIndex(Value: Integer);
+{ move the focus rectangle to an item and show the item tip window if enabled
+  in the case of a LongList, scroll the list so that new items are loaded appropriately }
+const
+  CATCH_MOUSE = True;
+  NO_CATCH_MOUSE = False;
+var
+  ScrollCount, ScrollPos, InitialTop, i: Integer;
+begin
+  if FLongList then                                 // -- special long list processing - begin
+  begin
+    if (Value = SFI_TOP) or (Value = SFI_END) then  // scroll to top or bottom
+    begin
+      if Value = SFI_TOP then ScrollPos := 0 else ScrollPos := 100;
+      ScrollTo(Self, scPosition, ScrollPos);        // ScrollTo is scrollbar event
+      FScrollBar.Position := ScrollPos;
+      if ScrollPos = 0 then Value := FFocusIndex else Value := FFocusIndex + FLargeChange;
+    end else
+    begin
+      InitialTop := TopIndex;
+      ScrollCount := Value - InitialTop;
+      ScrollPos := 50;                              // arbitrary, can be anything from 1-99
+      if ScrollCount < 0 then                       // scroll backwards
+      begin
+        if ScrollCount = -FLargeChange then ScrollTo(Self, scPageUp, ScrollPos) else
+          for i := 1 to Abs(ScrollCount) do ScrollTo(Self, scLineUp, ScrollPos);
+        FScrollBar.Position := ScrollPos;
+        Value := Value + (FCurrentTop - InitialTop);
+      end;
+      if ScrollCount > FLargeChange then            // scroll forwards
+      begin
+        if ScrollCount = (FLargeChange * 2) then ScrollTo(Self, scPageDown, ScrollPos) else
+          for i := FLargeChange + 1 to ScrollCount do ScrollTo(Self, scLineDown, ScrollPos);
+        FScrollBar.Position := ScrollPos;
+      end;
+      if(FHideSynonyms) then
+      begin
+        while((Perform(LB_GETITEMHEIGHT, Value, 0) = 0) and (Value >= 0) and (value < Items.Count)) do
+        begin
+          if(Value < FFocusIndex) then
+            dec(Value)
+          else
+            inc(Value);
+        end;
+      end;
+    end;
+  end;                                              // -- special long list processing - end
+  if (Value = SFI_END) or (not (Value < Items.Count)) then Value := Items.Count - 1;
+  if (Value = SFI_TOP) or (Value < 0) then Value := 0;
+  FFocusIndex := Value;
+  if Focused or (not FHideSelection) then
+    ItemIndex := Value;
+  if MultiSelect then Perform(LB_SETCARETINDEX, FFocusIndex, 0) // LPARAM=0, scrolls into view
+  else
+  begin
+    // LB_SETCARETINDEX doesn't scroll with single select so we have to do it ourselves
+    // ( a LongList should always come through here - it should never be MultiSelect )
+    if FocusIndex < TopIndex
+      then TopIndex := FocusIndex
+    else if FocusIndex > (TopIndex + FLargeChange)
+      then TopIndex := HigherOf(FocusIndex - FLargeChange, 0);
+  end;
+  // need to have a way to move the focus rectangle for single select listboxs w/o itemtips
+  // if FItemTipEnable or not MultiSelect then ... Show: if not ItemTipEnable then AWidth := 0?
+  //
+  // can't show the item tip from keyboard input for dropdown combo without causing problems
+  // with mouse capture, post the message to allow the selected attribute to be posted
+  if FItemTipEnable {and (FParentCombo = nil)}
+    then PostMessage(Self.Handle, UM_SHOWTIP, Value, 0);
+end;
+
+procedure TORListBox.UMShowTip(var Message: TMessage);
+{ show item tip, Tip Position in parameters: wParam=X and lParam=Y }
+const
+  NO_CATCH_MOUSE = False;
+var
+  TipPos: TPoint;
+  TrueOffset :integer;
+  TmpIdx :integer;
+begin
+  // if listbox is dropdown combo but control is not focused -
+  if (Parent is TORComboBox) and (FParentCombo <> nil) and (Screen.ActiveControl <> Parent)
+    then Exit;
+  // if listbox is dropdown combo and list is not dropped down -
+  if (FParentCombo <> nil) and (FParentCombo.DroppedDown = False) then Exit;
+  // if control is not focused -
+  if (Screen.ActiveControl <> Self) and (Screen.ActiveControl <> Parent) then Exit;
+  if(FHideSynonyms) then
+  begin
+    TrueOffset := TopIndex;
+    TmpIdx := TopIndex;
+    while((TmpIdx < Message.wParam) and (TmpIdx < Items.Count)) do
+    begin
+      if(Perform(LB_GETITEMHEIGHT, TmpIdx, 0) > 0) then
+        inc(TrueOffset);
+      inc(TmpIdx);
+    end;
+  end
+  else
+    TrueOffset := Message.wParam;
+  TipPos := ClientToScreen(Point(0, (TrueOffset - TopIndex) * ItemHeight));
+  //uItemTip.Show(Self, FFocusIndex, TipPos, NO_CATCH_MOUSE);
+  uItemTip.Show(Self, FFocusIndex, TipPos, FParentCombo = nil);  // if DropDown, no mousecapture
+end;
+
+function TORListBox.GetIEN(AnIndex: Integer): Int64;
+{ return as an integer the first piece of the Item identified by AnIndex }
+begin
+  if (AnIndex < Items.Count) and (AnIndex > -1)
+    then Result := StrToInt64Def(Piece(Items[AnIndex], FDelimiter, 1), 0)
+    else Result := 0;
+end;
+
+function TORListBox.GetItemIEN: Int64;
+{ return as an integer the first piece of the currently selected item }
+begin
+  if ItemIndex > -1
+    then Result := StrToInt64Def(Piece(Items[ItemIndex], FDelimiter, 1), 0)
+    else Result := 0;
+end;
+
+function TORListBox.SelectByIEN(AnIEN: Int64): Integer;
+{ cause the item where the first piece = AnIEN to be selected (sets ItemIndex) }
+var
+  i: Integer;
+begin
+  Result := -1;
+  for i := 0 to Items.Count - 1 do
+    if GetIEN(i) = AnIEN then
+    begin
+      ItemIndex := i;
+      Result := i;
+      break;
+    end;
+end;
+
+function TORListBox.SetExactByIEN(AnIEN: Int64; const AnItem: string): Integer;
+{ finds an exact entry (matches IEN) in a list or a long list and returns ItemIndex }
+var
+  ItemFound: Boolean;
+  i, ListEnd: Integer;
+begin
+  ItemFound := False;
+  Result := -1;
+  if FLongList then ListEnd := FWaterMark - 1 else ListEnd := Items.Count - 1;
+  for i := 0 to ListEnd do if (GetIEN(i) = AnIEN) and (GetDisplayText(i) = AnItem) then
+  begin
+    ItemIndex := i;
+    Result := i;
+    ItemFound := True;
+    break;
+  end;
+  if FLongList and not ItemFound then
+  begin
+    InitLongList(AnItem);
+    Result := SelectByIEN(AnIEN);
+  end;
+end;
+
+function TORListBox.GetItemID: Variant;
+{ return as a variant the first piece of the currently selected item }
+begin
+  if ItemIndex > -1 then Result := Piece(Items[ItemIndex], FDelimiter, 1) else Result := '';
+end;
+
+function TORListBox.SelectByID(const AnID: string): Integer;
+{ cause the item where the first piece = AnID to be selected (sets ItemIndex) }
+var
+  i: Integer;
+begin
+  Result := -1;
+  for i := 0 to Items.Count - 1 do
+    if Piece(Items[i], FDelimiter, 1) = AnID then
+    begin
+      ItemIndex := i;
+      Result := i;
+      break;
+    end;
+end;
+
+function TORListBox.GetReference(Index: Integer): Variant;
+{ retrieves a variant value that is associated with an item in a listbox }
+var
+  ItemRec: PItemRec;
+begin
+  if (Index < 0) or (Index >= Items.Count) then
+    raise Exception.Create('List Index Out of Bounds');
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));
+  FFromSelf := False;
+  if(assigned(ItemRec)) then
+    Result := ItemRec^.Reference
+  else
+    Result := Null;
+end;
+
+procedure TORListBox.SetReference(Index: Integer; AReference: Variant);
+{ stores a variant value that is associated with an item in a listbox }
+var
+  ItemRec: PItemRec;
+begin
+  if (Index < 0) or (Index >= Items.Count) then
+    raise Exception.Create('List Index Out of Bounds');
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));
+  FFromSelf := False;
+  if(assigned(ItemRec)) then
+    ItemRec^.Reference := AReference;
+end;
+
+function TORListBox.AddReference(const S: string; AReference: Variant): Integer;
+{ adds a string to a listbox, along with a variant value to be associated with the string }
+begin
+  Result := Items.Add(S);
+  SetReference(Result, AReference);
+end;
+
+procedure TORListBox.InsertReference(Index: Integer; const S: string; AReference: Variant);
+{ inserts a string at a position into a listbox, along with its associated variant value }
+begin
+  Items.Insert(Index, S);
+  SetReference(Index, AReference);
+end;
+
+function TORListBox.IndexOfReference(AReference: Variant): Integer;
+{ looks through the list of References (variants) and returns the index of the first match }
+var
+  i: Integer;
+begin
+  Result := -1;
+  for i := 0 to Items.Count - 1 do
+    if GetReference(i) = AReference then
+    begin
+      Result := i;
+      Break;
+    end;
+end;
+
+function TORListBox.GetTabPositions: string;
+{ returns the character based tab stops that are currently set, if any }
+begin
+  if(FTabPosInPixels) then
+    Result := IntArrayToString(FTabPix)
+  else
+    Result := IntArrayToString(FTabPos);
+end;
+
+procedure TORListBox.SetTabPositions(const Value: string);
+{ converts a string of character position tab stops to an array of integer & sets now tabs }
+var
+  TabTmp: array[0..MAX_TABS] of Integer;
+  i: Integer;
+begin
+  StringToIntArray(Value, TabTmp, TRUE);
+  for i := 2 to TabTmp[0] do
+    if (abs(TabTmp[i]) < abs(TabTmp[i - 1])) or
+       (TabTmp[i] = TabTmp[i - 1]) then
+      raise Exception.Create('Tab positions must be in ascending order');
+  if(FTabPosInPixels) then
+  begin
+    for i := 0 to TabTmp[0] do FTabPix[i] := TabTmp[i];
+  end
+  else
+  begin
+    for i := 0 to TabTmp[0] do FTabPos[i] := TabTmp[i];
+  end;
+  SetTabStops;
+  if FTabPos[0] > 0 then FWhiteSpace := #9 else FWhiteSpace := ' ';
+  ResetItems;
+end;
+
+procedure TORListBox.SetTabPosInPixels(const Value: boolean);
+begin
+  if(FTabPosInPixels <> Value) then
+  begin
+    FTabPosInPixels := Value;
+    SetTabStops;
+  end;
+end;
+
+procedure TORListBox.SetTabStops;
+{ sets new tabs stops based on dialog units, FTabPix array also used by ItemTip }
+var
+  TabDlg: array[0..MAX_TABS] of Integer;
+  i, AveWidth: Integer;
+begin
+  FillChar(TabDlg,  SizeOf(TabDlg),  0);
+  AveWidth := FontWidthPixel(Self.Font.Handle);
+  if(FTabPosInPixels) then
+  begin
+    FillChar(FTabPos, SizeOf(FTabPos), 0);
+    FTabPos[0] := FTabPix[0];
+    for i := 1 to FTabPix[0] do
+    begin
+      FTabPos[i] := FTabPix[i] div AveWidth;
+      TabDlg[i]  := (FTabPix[i] * 4) div AveWidth;
+    end;
+  end
+  else
+  begin
+    FillChar(FTabPix, SizeOf(FTabPix), 0);
+    FTabPix[0] := FTabPos[0];
+    for i := 1 to FTabPos[0] do
+    begin
+      // do dialog units first so that pixels gets the same rounding error
+      TabDlg[i]  := FTabPos[i] * 4;        // 4 dialog units per character
+      FTabPix[i] := (TabDlg[i] * AveWidth) div 4;
+    end;
+  end;
+  TabDlg[0]  := FTabPos[0];
+  Perform(LB_SETTABSTOPS, TabDlg[0], Integer(@TabDlg[1]));
+  Refresh;
+end;
+
+function TORListBox.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+procedure TORListBox.SetHideSynonyms(Value :boolean);
+var
+  TmpIH :integer;
+
+begin
+  if(FHideSynonyms <> Value) then
+  begin
+    if((Value) and (not FLongList)) then
+      raise Exception.Create('Hide Synonyms only allowed on Long Lists');
+    FHideSynonyms := Value;
+    if(not FHideSynonyms) then
+    begin
+      Style := lbStandard;
+    end
+    else
+    begin
+      if(FSynonymChars = '') then
+        FSynonymChars := '<>';
+      TmpIH := ItemHeight;
+      Style := lbOwnerDrawVariable;
+      ItemHeight := TmpIH;
+    end;
+  end;
+end;
+
+procedure TORListBox.SetSynonymChars(Value :string);
+begin
+  if(FSynonymChars <> Value) then
+  begin
+    FSynonymChars := Value;
+    if((Value = '') and (FHideSynonyms)) then
+      SetHideSynonyms(FALSE);
+    if(FHideSynonyms) then
+    begin
+      SetHideSynonyms(FALSE);
+      SetHideSynonyms(TRUE);
+    end;
+  end;
+end;
+
+function TORListBox.GetStyle: TListBoxStyle;
+begin
+  Result := inherited Style;
+end;
+
+procedure TORListBox.SetStyle(Value: TListBoxStyle);
+begin
+  if(Value <> lbOwnerDrawVariable) and (FHideSynonyms) then
+    FHideSynonyms := FALSE;
+  if(FCheckBoxes) and (Value = lbStandard) then
+    FCheckBoxes := FALSE;
+  inherited Style := Value;
+end;
+
+procedure TORListBox.SetDelimiter(Value: Char);
+{ change the delimiter used in conjunction with the pieces property (default = '^') }
+begin
+  FDelimiter := Value;
+  ResetItems;
+end;
+
+function TORListBox.GetPieces: string;
+{ returns the pieces of an item currently selected for display }
+begin
+  Result := IntArrayToString(FPieces);
+end;
+
+procedure TORListBox.SetPieces(const Value: string);
+{ converts a string of comma-delimited integers into an array of string pieces to display }
+begin
+  StringToIntArray(Value, FPieces);
+  ResetItems;
+end;
+
+procedure TORListBox.ResetItems;
+{ saves listbox objects then rebuilds listbox including references and user objects }
+var
+  SaveItems: TList;
+  Strings: TStringList;
+  i, Pos: Integer;
+  ItemRec, ItemRec2: PItemRec;
+  SaveListMode: Boolean;
+  RealVerify: Boolean;
+begin
+  SaveListMode := False;
+  Strings := nil;
+  SaveItems := nil;
+  RealVerify := TORStrings(Items).Verification;
+  try
+    TORStrings(Items).Verification := False;
+    HandleNeeded;                 // ensures that Items is valid if in the middle of RecreateWnd
+    SaveListMode := FLongList;
+    Strings := TStringList.Create;
+    SaveItems := TList.Create;
+    FLongList := False;                               // so don't have to track WaterMark
+    FFromSelf := True;
+    for i := 0 to Items.Count - 1 do                  // put pointers to TItemRec in SaveItems
+    begin
+      ItemRec := PItemRec(SendMessage(Handle, LB_GETITEMDATA, i, 0));
+      SaveItems.Add(ItemRec);
+    end;
+    Strings.Assign(Items);
+    Items.Clear;                                      // still FromSelf so don't dispose recs
+    FFromSelf := False;
+    for i := 0 to SaveItems.Count - 1 do              // use saved ItemRecs to rebuild listbox
+    begin
+      ItemRec := SaveItems[i];
+      if(assigned(ItemRec)) then
+      begin
+        Pos := Items.AddObject(Strings[i], ItemRec^.UserObject);
+        // CQ 11491 - Changing TabPositions, etc. was wiping out check box status.
+        FFromSelf := True;
+        ItemRec2 := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Pos, 0));
+        FFromSelf := False;
+        if(assigned(ItemRec2)) then
+        begin
+          ItemRec2^.Reference := ItemRec^.Reference;
+          ItemRec2^.CheckedState := ItemRec^.CheckedState;
+        end;
+      end;
+    end;
+  finally
+    SaveItems.Free;
+    Strings.Free;
+    TORStrings(Items).Verification := RealVerify;
+    FLongList := SaveListMode;
+  end;
+end;
+
+procedure TORListBox.SetLongList(Value: Boolean);
+{ changes the list box so that it runs in LongList mode (calls OnNeedData) }
+begin
+  if Value <> FLongList then
+  begin
+    if Value = True then
+      CreateScrollBar
+    else
+    begin
+      FreeScrollBar;
+      if(FHideSynonyms) then
+        SetHideSynonyms(FALSE);
+    end;
+  end;
+end;
+
+procedure TORListBox.AdjustScrollBar;
+{ ensures that the scrollbar used for a long list is placed properly within the listbox }
+var
+  L, T, W, H, OffsetLT, OffsetWH: Integer;
+begin
+  if uNewStyle then begin OffsetLT := 2; OffsetWH := 4; end   // Win95
+               else begin OffsetLT := 0; OffsetWH := 0; end;  // Win3.1
+  W := GetSystemMetrics(SM_CXVSCROLL);
+  L := Left + Width - W - OffsetLT;
+  T := Top + OffsetLT;
+  H := Height - OffsetWH;
+  FScrollBar.SetBounds(L, T, W, H);
+  FScrollBar.Invalidate;
+end;
+
+procedure TORListBox.CreateScrollBar;
+{ a long list uses it's own scrollbar (mapped to APLHA_DISTRIBUTION, rather than the listbox's }
+begin
+  FLongList := True;
+  if MultiSelect then MultiSelect := False;    // LongLists do not support multiple selections
+  FScrollBar := TScrollBar.Create(Self);
+  FScrollBar.Kind := sbVertical;
+  FScrollBar.TabStop := False;
+  FScrollBar.ControlStyle := FScrollBar.ControlStyle - [csCaptureMouse];
+  AdjustScrollBar;
+  FScrollBar.OnScroll := ScrollTo;
+  if FParentCombo = nil
+    then FScrollBar.Parent := Parent
+    else FScrollBar.Parent := FParentCombo.FDropPanel;
+end;
+
+procedure TORListBox.FreeScrollBar;
+{ frees the scrollbar for a longlist (called when LongList property becomes false) }
+begin
+  FLongList := False;
+  FScrollBar.Free;  // don't call from destroy because scrollbar may already be free
+  FScrollBar := nil;
+end;
+
+procedure TORListBox.ForDataUse(Strings: TStrings);
+{ adds or inserts items into a list box after determining the proper collating sequence }
+var
+  Ascend: Boolean;
+  FirstItem, LastItem: string;
+  i: Integer;
+begin
+  if Strings.Count = 0 then Exit;
+  { To prevent the problem where the initial list item(s) are returned repeatedly because the
+    DisplayText is longer than the subscript in a cross-reference, compare the last item
+    returned with the first item in the long list.   If they are the same, assume the long
+    list is already scrolled to the first item. }
+  if (FDirection = LL_REVERSE) and (FWaterMark < Items.Count) and
+    (CompareText(Strings[Strings.Count - 1], Items[FWaterMark]) = 0) then Exit;
+
+  FirstItem := TextToShow(Strings[0]);
+  LastItem  := TextToShow(Strings[Strings.Count-1]);
+  Ascend := True;
+  case FDirection of
+  LL_REVERSE: if CompareText(FirstItem, LastItem) < 0 then Ascend := False;
+  LL_FORWARD: if CompareText(FirstItem, LastItem) > 0 then Ascend := False;
+  end;
+  case Ascend of                              // should call AddObject & InsertObject instead?
+  False: case FDirection of
+         LL_REVERSE: for i := Strings.Count - 1 downto 0 do Items.Insert(FInsertAt, Strings[i]);
+         LL_FORWARD: for i := Strings.Count - 1 downto 0 do Items.Add(Strings[i]);
+         end;
+  True:  case FDirection of
+         LL_REVERSE: for i := 0 to Strings.Count - 1 do Items.Insert(FInsertAt, Strings[i]);
+         LL_FORWARD: for i := 0 to Strings.Count - 1 do Items.Add(Strings[i]);
+         end;
+  end;
+end;
+
+procedure TORListBox.InitLongList(S: string);
+{ clears the listbox starting at FWaterMark and makes the initial NeedData call }
+var
+  index: integer;
+begin
+  if FLongList then
+  begin
+    if LookUpPiece <> 0 then
+    begin
+      index := GetStringIndex(S);
+      if index > -1 then
+        S := Piece(Items[index],Delimiter,LookUpPiece);
+    end;
+    if CaseChanged then
+      S := UpperCase(S);
+    // decrement last char & concat '~' for $ORDER
+    if Length(S) > 0 then S := Copy(S, 1, Length(S) - 1) + Pred(S[Length(S)]) + '~';
+    NeedData(LL_POSITION, S);
+    if S = '' then TopIndex := 0 else TopIndex := FWaterMark;
+    FScrollBar.Position := PositionThumb;
+  end;
+end;
+
+procedure TORListBox.InsertSeparator;
+begin
+  if FWaterMark > 0 then
+  begin
+    Items.Insert(FWaterMark,LLS_LINE);
+    Items.Insert(FWaterMark,LLS_SPACE);
+  end;
+end;
+
+procedure TORListBox.ClearTop;
+{ clears a long listbox up to FWaterMark (doesn't clear long list) }
+var
+  i: Integer;
+begin
+  SendMessage(Handle, WM_SETREDRAW, NOREDRAW, 0);
+  for i := FWaterMark - 1 downto 0 do Items.Delete(i);
+  SendMessage(Handle, WM_SETREDRAW, DOREDRAW, 0);
+  Invalidate;
+end;
+
+procedure TORListBox.NeedData(Direction: Integer; StartFrom: string);
+{ called whenever the longlist needs more data inserted at a certain point into the listbox }
+var
+  CtrlPos, CharPos, index: Integer;
+
+  procedure ClearLong;
+  { clears a portion or all of the longlist to conserve the memory it occupies }
+  var
+    i: Integer;
+  begin
+    case FDirection of
+    LL_REVERSE:  for i := Items.Count - 1 downto
+                  HigherOf(FCurrentTop + FLargeChange, FWaterMark) do Items.Delete(i);
+    LL_POSITION: for i := Items.Count - 1 downto FWaterMark do Items.Delete(i);
+    LL_FORWARD:  for i := FCurrentTop - 1 downto FWaterMark do Items.Delete(i);
+    end;
+  end;
+
+begin {NeedData}
+  FFromNeedData := True;
+  FFirstLoad := False;
+  FDataAdded := False;
+  FDirection := Direction;
+  SendMessage(Handle, WM_SETREDRAW, NOREDRAW, 0);
+  if Items.Count > 1000 then ClearLong;
+  case FDirection of
+  LL_REVERSE:  if FWaterMark < Items.Count then StartFrom := DisplayText[FWaterMark];
+  LL_POSITION: begin
+                 ClearLong;
+                 if StartFrom = #127#127#127 then
+                 begin
+                   FDirection := LL_REVERSE;
+                   StartFrom := '';
+                 end
+                 else FDirection := LL_FORWARD;
+               end;
+  LL_FORWARD:  if (FWaterMark < Items.Count) and (Items.Count > 0)
+                 then StartFrom := DisplayText[Items.Count - 1];
+  end;
+  if LookupPiece <> 0 then
+  begin
+    index := GetStringIndex(StartFrom);
+    if index > -1 then
+      StartFrom := Piece(Items[index],Delimiter,LookUpPiece);
+  end;
+  if CaseChanged then
+    StartFrom := Uppercase(StartFrom);
+  StartFrom := Copy(StartFrom, 1, 128);       // limit length to 128 characters
+  CtrlPos := 0;                               // make sure no ctrl characters
+  for CharPos := 1 to Length(StartFrom) do if StartFrom[CharPos] in [#0..#31] then
+  begin
+    CtrlPos := CharPos;
+    break;
+  end;
+  if CtrlPos > 0 then StartFrom := Copy(StartFrom, 1, CtrlPos - 1);
+  if FDirection = LL_FORWARD then FInsertAt := Items.Count else FInsertAt := FWaterMark;
+  if Assigned(FOnNeedData) then FOnNeedData(Self, copy(StartFrom, 1, MaxNeedDataLen), FDirection, FInsertAt);
+  SendMessage(Handle, WM_SETREDRAW, DOREDRAW, 0);
+  FFromNeedData := False;
+  Invalidate;
+end;
+
+function TORListBox.PositionThumb: Integer;
+{ returns the proper thumb position for the TopIndex item relative to ALPHA_DISTRIBUTION }
+var
+  x: string;
+begin
+  Result := 1;
+  x := DisplayText[TopIndex];
+  if (FWaterMark > 0) and (TopIndex < FWaterMark)
+    then Result := 0  // short list visible
+    else while (CompareText(ALPHA_DISTRIBUTION[Result], x) < 0) and (Result < 100) do
+      Inc(Result);    // only long list visible
+end;
+
+procedure TORListBox.ScrollTo(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
+{ event code for the longlist scrollbar, adjusts TopIndex & calls OnNeedData as necessary }
+var
+  Count, Goal, Dir :integer;
+  Done :boolean;
+
+begin
+  uItemTip.Hide;
+  FCurrentTop := TopIndex;
+  if(ScrollCode = scPosition) then
+  begin
+    NeedData(LL_POSITION, ALPHA_DISTRIBUTION[ScrollPos]);
+    case ScrollPos of
+    0:     TopIndex := 0;
+    1..99: TopIndex := FWaterMark;
+    100:   TopIndex := HigherOf(Items.Count - FLargeChange, 0);
+    end;
+    FFocusIndex := TopIndex;
+  end
+  else
+  if(HideSynonyms) then
+  begin
+    Count := 0;
+    case ScrollCode of
+      scLineUp:   begin Dir := -1; Goal := 1;            end;
+      scLineDown: begin Dir :=  1; Goal := 1;            end;
+      scPageUp:   begin Dir := -1; Goal := FLargeChange; end;
+      scPageDown: begin Dir :=  1; Goal := FLargeChange; end;
+      else
+        exit;
+    end;
+    repeat
+      Done := FALSE;
+      if(Dir > 0) then
+      begin
+        if (FCurrentTop + (FLargeChange * 2)) > (Items.Count - 1) then
+          NeedData(LL_FORWARD, '');
+        if(FCurrentTop >= Items.Count - 1) then
+        begin
+          FCurrentTop := Items.Count - 1;
+          Done := TRUE;
+        end;
+      end
+      else
+      begin
+        if (FCurrentTop - FLargeChange) < FWaterMark then NeedData(LL_REVERSE, '');
+        if(FCurrentTop <= 0) then
+        begin
+          FCurrentTop := 0;
+          Done := TRUE;
+        end;
+      end;
+      if(not Done) then
+      begin
+        FCurrentTop := FCurrentTop + Dir;
+        if(Perform(LB_GETITEMHEIGHT, FCurrentTop, 0) > 0) then
+        begin
+          inc(Count);
+          Done := (Count >= Goal);
+        end;
+      end;
+    until Done;
+    TopIndex := FCurrentTop;
+  end
+  else
+  begin
+    case ScrollCode of
+    scLineUp:   begin
+                  if (FCurrentTop - FLargeChange) < FWaterMark then NeedData(LL_REVERSE, '');
+                  TopIndex := HigherOf(FCurrentTop - 1, 0);
+                end;
+    scLineDown: begin
+                  if (FCurrentTop + (FLargeChange * 2)) > (Items.Count - 1)
+                    then NeedData(LL_FORWARD, '');
+                  TopIndex := LowerOf(FCurrentTop + 1, Items.Count - 1);
+                end;
+    scPageUp:   begin
+                  if (FCurrentTop - FLargeChange) < FWaterMark then NeedData(LL_REVERSE, '');
+                  TopIndex := HigherOf(FCurrentTop - FLargeChange, 0);
+                end;
+    scPageDown: begin
+                  if (FCurrentTop + (FLargeChange * 2)) > (Items.Count - 1)
+                    then NeedData(LL_FORWARD, '');
+                  TopIndex := LowerOf(FCurrentTop + FLargeChange, Items.Count - 1);
+                end;
+    end;
+  end;
+  if (ScrollPos > 0) and (ScrollPos < 100) then ScrollPos := PositionThumb;
+end;
+
+function TORListBox.GetStringIndex(const AString: string): Integer;
+{returns the index of the first string that partially matches AString}
+var
+  i: Integer;
+begin
+  Result := -1;
+  if Length(AString) > 0 then                                             {*KCM*}
+  begin
+    if not FLongList then                                                 // Normal List
+    begin
+      Result := SendMessage(Handle, LB_FINDSTRING, -1, Longint(PChar(AString)));
+      if Result = LB_ERR then Result := -1;
+    end else                                                              // Long List
+    begin
+      if FScrollBar.Position = 0 then for i := 0 to FWatermark - 1 do
+      begin
+        if CompareText(AString, Copy(DisplayText[i], 1, Length(AString))) = 0 then
+        begin
+          Result := i;
+          break;
+        end;
+      end;
+      if Result < 0 then
+      begin
+        Result := SendMessage(Handle, LB_FINDSTRING, FWaterMark - 1, Longint(PChar(AString)));
+        if Result < FWaterMark then Result := -1;
+      end; {if Result}
+    end; {if not FLongList}
+  end; {if Length(AString)}
+end;
+
+function TORListBox.SelectString(const AString: string): Integer;
+{ causes the first string that partially matches AString to be selected & returns the index }
+var
+  x: string;
+  i: Integer;
+  index: integer;
+begin
+  Result := -1;
+  if Length(AString) > 0 then                                             {*KCM*}
+  begin
+    if not FLongList then                                                 // Normal List
+    begin
+      Result := SendMessage(Handle, LB_FINDSTRING, -1, Longint(PChar(AString)));
+      if Result = LB_ERR then Result := -1;
+      // use FFocusIndex instead of FocusIndex to reduce flashing
+      FFocusIndex := Result;
+    end else                                                              // Long List
+    begin
+      if FScrollBar.Position = 0 then for i := 0 to FWatermark - 1 do
+      begin
+        if CompareText(AString, Copy(DisplayText[i], 1, Length(AString))) = 0 then
+        begin
+          Result := i;
+          break;
+        end;
+      end;
+      if not StringBetween(AString, DisplayText[FWaterMark], DisplayText[Items.Count - 1]) then
+      begin
+        x := AString;
+        if LookupPiece <> 0 then
+        begin
+          index := GetStringIndex(x);
+          if index > -1 then
+            x := Piece(Items[index],Delimiter,LookUpPiece);
+        end;
+        if CaseChanged then
+          x := UpperCase(x);
+        // decrement last char & concat '~' for $ORDER
+        if Length(x) > 0 then x := Copy(x, 1, Length(x) - 1) + Pred(x[Length(x)]) + '~';
+        NeedData(LL_POSITION, x);
+      end;
+      if Result < 0 then
+      begin
+        Result := SendMessage(Handle, LB_FINDSTRING, FWaterMark - 1, Longint(PChar(AString)));
+        if Result < FWaterMark then Result := -1;
+        if Result >= FWatermark then FocusIndex := Result;
+        uItemTip.Hide;
+      end; {if Result}
+    end; {if not FLongList}
+  end; {if Length(AString)}
+  ItemIndex := Result;
+  FFocusIndex := Result;
+  if Result > -1 then TopIndex := Result;                  // will scroll item into view
+  if FLongList then FScrollBar.Position := PositionThumb;  // done after topindex set
+end;
+
+procedure TORListBox.SetCheckBoxes(const Value: boolean);
+begin
+  if(FCheckBoxes <> Value) then
+  begin
+    FCheckBoxes := Value;
+    if(Value) then
+    begin
+      if(GetStyle = lbStandard) then
+        SetStyle(lbOwnerDrawFixed);
+      if(inherited MultiSelect) then
+        SetMultiSelect(FALSE);
+    end;
+    invalidate;
+  end;
+end;
+
+procedure TORListBox.SetFlatCheckBoxes(const Value: boolean);
+begin
+  if(FFlatCheckBoxes <> Value) then
+  begin
+    FFlatCheckBoxes := Value;
+    invalidate;
+  end;
+end;
+
+function TORListBox.GetChecked(Index: Integer): Boolean;
+var
+  ItemRec: PItemRec;
+
+begin
+  Result := False;
+  if Index < 0 then exit;
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));
+  FFromSelf := FALSE;
+  if(assigned(ItemRec)) then
+    Result := (ItemRec^.CheckedState = cbChecked)
+  else
+    Result := False;
+end;
+
+procedure TORListBox.SetChecked(Index: Integer; const Value: Boolean);
+var
+  ItemRec: PItemRec;
+  Rect: TRect;
+
+begin
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));
+  FFromSelf := False;
+  if (assigned(ItemRec)) and (Value <> (ItemRec^.CheckedState = cbChecked)) then
+  begin
+    if(Value) then
+      ItemRec^.CheckedState := cbChecked
+    else
+      ItemRec^.CheckedState := cbUnChecked;
+    Rect := ItemRect(Index);
+    InvalidateRect(Handle, @Rect, FALSE);
+    if(assigned(FOnClickCheck)) then
+      FOnClickCheck(Self, Index);
+  end;
+end;
+
+function TORListBox.GetCheckedState(Index: Integer): TCheckBoxState;
+var
+  ItemRec: PItemRec;
+
+begin
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));
+  FFromSelf := FALSE;
+  if(assigned(ItemRec)) then
+    Result := ItemRec^.CheckedState
+  else
+    Result := cbGrayed;
+end;
+
+procedure TORListBox.SetCheckedState(Index: Integer;
+  const Value: TCheckBoxState);
+var
+  ItemRec: PItemRec;
+  Rect: TRect;
+
+begin
+  FFromSelf := True;
+  ItemRec := PItemRec(SendMessage(Handle,LB_GETITEMDATA, Index, 0));
+  FFromSelf := False;
+  if (assigned(ItemRec)) and (Value <> ItemRec^.CheckedState) then
+  begin
+    ItemRec^.CheckedState := Value;
+    Rect := ItemRect(Index);
+    InvalidateRect(Handle, @Rect, FALSE);
+    if(assigned(FOnClickCheck)) then
+      FOnClickCheck(Self, Index);
+  end;
+end;
+
+function TORListBox.GetMultiSelect: boolean;
+begin
+  result := inherited MultiSelect;
+end;
+
+procedure TORListBox.SetMultiSelect(Value: boolean);
+begin
+  inherited SetMultiSelect(Value);
+  if(Value) then SetCheckBoxes(FALSE);
+end;
+
+function TORListBox.GetCheckedString: string;
+var
+  i: integer;
+
+begin
+  Result := '';
+  if(FCheckBoxes) then
+  begin
+    for i := 0 to Items.Count-1 do
+      Result := Result + Char(ord('0') + Ord(GetCheckedState(i)));
+  end;
+end;
+
+procedure TORListBox.SetCheckedString(const Value: string);
+var
+  i: integer;
+
+begin
+  for i := 0 to Items.Count-1 do
+    SetCheckedState(i, TCheckBoxState(StrToIntDef(copy(Value,i+1,1),0)));
+end;
+
+function TORListBox.GetMItems: TStrings;
+begin
+  if not Assigned(FMItems) then
+    FMItems := TORStrings.Create(Tlistbox(Self).Items,TextToShow);
+  result := FMItems;
+end;
+
+procedure TORListBox.SetMItems( Value: TStrings);
+begin
+  if not Assigned(FMItems) then
+    FMItems := TORStrings.Create(Tlistbox(Self).Items,TextToShow);
+  FMItems.Assign( Value );
+end;
+
+procedure TORListBox.Clear;
+begin
+  Items.Clear;
+  inherited;
+end;
+
+procedure TORListBox.SetBlackColorMode(Value: boolean);
+begin
+  FBlackColorMode := Value;
+end;
+
+procedure TORListBox.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaption) then begin
+    FCaption := TStaticText.Create(self);
+    FCaption.AutoSize := False;
+    FCaption.Height := 0;
+    FCaption.Width := 0;
+    FCaption.Visible := True;
+    if Assigned (FParentCombo) then
+      FCaption.Parent := FParentCombo
+    else
+      FCaption.Parent := Parent;
+    FCaption.BringToFront;
+  end;
+  FCaption.Caption := Value;
+end;
+
+function TORListBox.GetCaption: string;
+begin
+  result := FCaption.Caption;
+end;
+
+// In Delphi 2006, hint windows will cause the TORComboBox drop down list to
+// move behind a Stay on Top form.  Hints are also problematic with item tips in
+// the drop down list, so we disable them when ever a drop down list is open,
+// on all forms, not just stay on top forms.
+var
+  uDropPanelOpenCount: integer = 0;
+  uOldShowHintsSetting: boolean;
+
+procedure DropDownPanelOpened;
+begin
+  if uDropPanelOpenCount=0 then
+    uOldShowHintsSetting := Application.ShowHint;
+  Application.ShowHint := FALSE;
+  inc(uDropPanelOpenCount);
+end;
+
+procedure DropDownPanelClosed;
+begin
+  dec(uDropPanelOpenCount);
+  if uDropPanelOpenCount<=0 then
+  begin
+    uDropPanelOpenCount := 0;
+    if not Application.ShowHint then
+      Application.ShowHint := uOldShowHintsSetting
+  end;
+end;
+
+{ TORDropPanel ----------------------------------------------------------------------------- }
+const
+  OKBtnTag = 1;
+  CancelBtnTag = 2;
+
+procedure TORDropPanel.BtnClicked(Sender: TObject);
+begin
+  (Owner as TORComboBox).DropPanelBtnPressed((Sender as TSpeedButton).Tag = OKBtnTag, TRUE);
+end;
+
+constructor TORDropPanel.Create(AOwner: TComponent);
+{ Creates a panel the contains the listbox portion of a combobox when the combobox style is
+  orcsDropDown.  This is necessary for the combobox to scroll the list properly.  The panel
+  acts as the parent for the list, which recieves the scroll events.  If the panel is not
+  used, the scroll events to the the Desktop and are not received by the application }
+begin
+  inherited Create(AOwner);
+  BevelInner := bvNone;
+  BevelOuter := bvNone;
+  BorderStyle := bsNone;
+  Caption :='';
+  Ctl3D := False;
+  Visible := False;
+  UpdateButtons;
+end;
+
+procedure TORDropPanel.CreateParams(var Params: TCreateParams);
+{ changes parent of panel to desktop so when list is dropped it can overlap other windows }
+begin
+  inherited CreateParams(Params);
+  if not (csDesigning in ComponentState) then with Params do
+  begin
+    if uNewStyle then Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
+    Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST;  // - incompatible with ItemTip
+    WindowClass.Style := WindowClass.Style or CS_SAVEBITS;
+    WndParent := GetDesktopWindow;
+  end;
+end;
+
+function TORDropPanel.GetButton(OKBtn: boolean): TSpeedButton;
+var
+  i: integer;
+
+begin
+  Result := nil;
+  if(FButtons) then
+  begin
+    for i := 0 to ControlCount-1 do
+      if(Controls[i] is TSpeedButton) then
+      begin
+        if((OKBtn and ((Controls[i] as TSpeedButton).Tag = OKBtnTag)) or
+           ((not OKBtn) and ((Controls[i] as TSpeedButton).Tag = CancelBtnTag))) then
+        begin
+          Result := TSpeedButton(Controls[i]);
+          break;
+        end;
+      end;
+  end;
+end;
+
+procedure TORDropPanel.ResetButtons;
+var
+  sb: TSpeedButton;
+
+begin
+  sb := GetButton(TRUE);
+  if(assigned(sb)) then sb.Down := FALSE;
+  sb := GetButton(FALSE);
+  if(assigned(sb)) then sb.Down := FALSE;
+end;
+
+procedure TORDropPanel.Resize;
+var
+  half: integer;
+  btn: TSpeedButton;
+
+begin
+  inherited;
+  if(FButtons) then
+  begin
+    btn := GetButton(TRUE);
+    if(assigned(btn)) then
+    begin
+      half := width div 2;
+      btn.Left := 0;
+      btn.Width := Half;
+      btn.Top := Height-btn.Height;
+      btn := GetButton(FALSE);
+      btn.Left := Half;
+      btn.Width := Width - Half;
+      btn.Top := Height-btn.Height;
+    end;
+  end;
+end;
+
+procedure TORDropPanel.UpdateButtons;
+var
+  btn: TSpeedButton;
+  cbo: TORComboBox;
+  i:integer;
+
+begin
+  cbo := (Owner as TORComboBox);
+  if(cbo.FListBox.FCheckBoxes) then
+  begin
+    if(not FButtons) then
+    begin
+      btn := TSpeedButton.Create(Self);
+      btn.Parent := Self;
+      btn.Caption := 'OK';
+      btn.Height := CheckComboBtnHeight;
+      btn.Tag := OKBtnTag;
+      btn.AllowAllUp := TRUE;
+      btn.GroupIndex := 1;
+      btn.OnClick := BtnClicked;
+      btn := TSpeedButton.Create(Self);
+      btn.Parent := Self;
+      btn.Caption := 'Cancel';
+      btn.Height := CheckComboBtnHeight;
+      btn.Tag := CancelBtnTag;
+      btn.AllowAllUp := TRUE;
+      btn.GroupIndex := 1;
+      btn.OnClick := BtnClicked;
+      FButtons := TRUE;
+      Resize;
+    end;
+  end
+  else
+  if(FButtons) then
+  begin
+    for i := ControlCount-1 downto 0 do
+      if(Controls[i] is TButton) then
+        Controls[i].Free;
+    FButtons := FALSE;
+    Resize;
+  end;
+end;
+
+procedure TORDropPanel.WMActivateApp(var Message: TMessage);
+{ causes drop down list to be hidden when another application is activated (i.e., Alt-Tab) }
+begin
+  if BOOL(Message.wParam) = False then with Owner as TORComboBox do DroppedDown := False;
+end;
+
+{ TORComboEdit ----------------------------------------------------------------------------- }
+const
+  ComboBoxImages: array[boolean] of string = ('BMP_CBODOWN_DISABLED', 'BMP_CBODOWN');
+  BlackComboBoxImages: array[boolean] of string = ('BLACK_BMP_CBODOWN_DISABLED', 'BLACK_BMP_CBODOWN');
+
+procedure TORComboEdit.CreateParams(var Params: TCreateParams);
+{ sets a one line edit box to multiline style so the editing rectangle can be changed }
+begin
+  inherited CreateParams(Params);
+  Params.Style := Params.Style or ES_MULTILINE or WS_CLIPCHILDREN;
+end;
+
+procedure TORComboEdit.WMKillFocus(var Message: TWMKillFocus);
+begin
+  inherited;
+  with (Owner as TORComboBox) do
+  begin
+    if (FListBox.FCheckBoxes) and assigned(FEditPanel) and
+       (Message.FocusedWnd <> FListBox.Handle) and
+       ((not assigned(FDropBtn)) or (Message.FocusedWnd <> FDropBtn.Handle)) then
+    begin
+      FEditPanel.FFocused := FALSE;
+      FEditPanel.Invalidate;
+    end;
+  end;
+end;
+
+procedure TORComboEdit.WMSetFocus(var Message: TWMSetFocus);
+begin
+  inherited;
+  with (Owner as TORComboBox) do
+  begin
+    if FListBox.FCheckBoxes and assigned(FEditPanel) then
+    begin
+      HideCaret(Self.Handle);
+      FEditPanel.FFocused := TRUE;
+      FEditPanel.Invalidate;
+    end;
+  end;
+end;
+
+{ TORComboBox ------------------------------------------------------------------------------ }
+
+constructor TORComboBox.Create(AOwner: TComponent);
+{ create the editbox and listbox used for the combobox - the default style is Simple }
+begin
+  inherited Create(AOwner);
+  Width := 121;
+  Height := 97;
+  FLastInput := '';
+  FDropDownCount := 8;
+  FStyle := orcsSimple;
+  FCheckBoxEditColor := clBtnFace;
+  FListBox := TORListBox.Create(Self);
+  FListBox.isPartOfComboBox := True;
+  FListBox.Parent := Self;
+  FListBox.TabStop := False;
+  FListBox.OnClick := FwdClick;
+  FListBox.OnDblClick := FwdDblClick;
+  FListBox.OnMouseUp := FwdMouseUp;
+  FListBox.OnNeedData := FwdNeedData;
+  FListBox.OnClickCheck := CheckBoxSelected;
+  FListBox.Visible := True;
+  FItems := FListBox.Items;
+  FMItems := FListBox.MItems;
+  FEditBox := TORComboEdit.Create(Self);
+  FEditBox.Parent := Self;
+  FEditBox.OnChange := FwdChange;
+  FEditBox.OnKeyDown := FwdKeyDown;
+  FEditBox.OnKeyPress := FwdKeyPress;
+  FEditBox.OnKeyUp := FwdKeyUp;
+  FEditBox.Visible := True;
+  fCharsNeedMatch := 1;  
+end;
+
+procedure TORComboBox.WMDestroy(var Message: TWMDestroy);
+begin
+  if(assigned(Owner)) and (csDestroying in Owner.ComponentState) then
+    FListBox.DestroyItems;
+  inherited;
+end;
+
+procedure TORComboBox.CMFontChanged(var Message: TMessage);
+{ resize the edit portion of the combobox to match the font }
+begin
+  inherited;
+  AdjustSizeOfSelf;
+end;
+
+procedure TORComboBox.WMMove(var Message: TWMMove);
+{ for DropDown style, need to hide listbox whenever control moves (since listbox isn't child) }
+begin
+  inherited;
+  DroppedDown := False;
+end;
+
+procedure TORComboBox.WMSize(var Message: TWMSize);
+{ whenever control is resized, adjust the components (edit, list, button) within it }
+begin
+  inherited;
+  AdjustSizeOfSelf;
+end;
+
+procedure TORComboBox.WMTimer(var Message: TWMTimer);
+begin
+  inherited;
+  if (Message.TimerID = KEY_TIMER_ID) then
+  begin
+    StopKeyTimer;
+    if FListBox.LongList and FChangePending then FwdChangeDelayed;
+    if Assigned(FOnKeyPause) then FOnKeyPause(Self);
+  end;
+end;
+
+function TORComboBox.EditControl: TWinControl;
+begin
+  if(assigned(FEditPanel)) then
+    Result := FEditPanel
+  else
+    Result := FEditBox;
+end;
+
+procedure TORComboBox.AdjustSizeOfSelf;
+{ adjusts the components of the combobox to fit within the control boundaries }
+var
+  FontHeight: Integer;
+  cboBtnX,cboBtnY: integer;
+  cboYMargin: integer;
+
+begin
+  DroppedDown := False;
+  FontHeight := FontHeightPixel(Self.Font.Handle);
+  if FTemplateField then
+  begin
+    cboYMargin := 0;
+    cboBtnX := 1;
+    cboBtnY := 1;
+  end
+  else
+  begin
+    cboYMargin := CBO_CYMARGIN;
+    cboBtnX := CBO_CXFRAME;
+    cboBtnY := CBO_CXFRAME;
+  end;
+  Height := HigherOf(FontHeight + cboYMargin, Height);   // must be at least as high as text
+  EditControl.SetBounds(0, 0, Width, FontHeight + cboYMargin);
+  if(assigned(FEditPanel)) then
+    FEditBox.SetBounds(2, 3, FEditPanel.Width - 4, FEditPanel.Height - 5);
+  if FStyle = orcsDropDown then
+  begin
+    Height := FontHeight + cboYMargin;                   // DropDown can only be text height
+    FDropBtn.SetBounds(EditControl.Width - CBO_CXBTN - cboBtnX, 0,
+                       CBO_CXBTN, EditControl.Height - cboBtnY);
+  end else
+  begin
+    FListBox.SetBounds(0, FontHeight + CBO_CYMARGIN,
+                       Width, Height - FontHeight - CBO_CYMARGIN);
+  end;
+  SetEditRect;
+end;
+
+procedure TORComboBox.DropButtonDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+  X, Y: Integer);
+{ display the listbox for a DropDown style combobox whenever the drop down button is pressed }
+begin
+  if (Button = mbLeft) then
+  begin
+    FFromDropBtn := True;
+    DroppedDown := not FDroppedDown;
+    FFromDropBtn := False;
+  end;
+end;
+
+procedure TORComboBox.DropButtonUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+  X, Y: Integer);
+{ shift the focus back to the editbox so the focus rectangle doesn't clutter the button }
+begin
+  if FDroppedDown then FListBox.MouseCapture := True;  // do here so 1st buttonup not captured
+  FEditBox.SetFocus;
+end;
+
+procedure TORComboBox.DropDownStatusChanged(opened: boolean);
+begin
+  if opened then
+  begin
+    if not FDropPanel.Visible then
+    begin
+      if FDropDownStatusChangedCount = 0 then
+      begin
+        FDisableHints := TRUE;
+        DropDownPanelOpened;
+      end;
+      inc(FDropDownStatusChangedCount);
+    end;
+  end
+  else
+  begin
+    dec(FDropDownStatusChangedCount);
+    if FDropDownStatusChangedCount <= 0 then
+    begin
+      if FDisableHints then
+      begin
+        DropDownPanelClosed;
+        FDisableHints := FALSE;
+      end;
+      FDropDownStatusChangedCount := 0;
+    end;
+  end;
+end;
+
+procedure TORComboBox.ClearDropDownStatus;
+begin
+  FDropDownStatusChangedCount := 1;
+  DropDownStatusChanged(FALSE);
+end;
+
+destructor TORComboBox.Destroy;
+begin
+  ClearDropDownStatus;
+  inherited;
+end;
+
+procedure TORComboBox.DoEnter;
+{var
+  key : word;}
+{ select all the text in the editbox when recieve focus - done first so OnEnter can deselect }
+begin
+  //FEditBox.SelectAll;
+  //Fix For ClearQuest: HDS00001576
+  //This fix has been commented out, becuase it causes problems
+{  with FListBox do
+  if (Items.Count > 0) and (Not IsAMouseButtonDown()) and (ItemIndex = -1) then
+  begin
+    key := VK_UP;
+    FwdKeyDown(Self,key,[]);
+    //Calling keyUp after key down creates a better mimic of a Keystroke.
+    FwdKeyUp(Self,key,[]);   //fixes clearquest: HDS00001418
+  end;              }
+  inherited DoEnter;
+  PostMessage(Handle, UM_GOTFOCUS, 0, 0)
+end;
+
+procedure TORComboBox.UMGotFocus(var Message: TMessage);
+begin
+  FEditBox.SetFocus;
+  if AutoSelect then FEditBox.SelectAll;
+end;
+
+procedure TORComboBox.DoExit;
+{ make sure DropDown list is raised when losing focus }
+begin
+  DroppedDown := False;
+  if FKeyTimerActive then
+  begin
+    StopKeyTimer;
+    if FListBox.LongList and FChangePending then FwdChangeDelayed;
+  end;
+  inherited DoExit;
+end;
+
+procedure TORComboBox.LoadComboBoxImage;
+var
+  imageName: string;
+begin
+  if assigned(FDropBtn) then
+  begin
+    if FBlackColorMode then
+      imageName := BlackComboBoxImages[inherited Enabled]
+    else
+      imageName := ComboBoxImages[inherited Enabled];
+    FDropBtn.Glyph.LoadFromResourceName(hInstance, imageName);
+  end;
+end;
+
+procedure TORComboBox.Loaded;
+{ we need to call the loaded method for the listbox child (it's not called automatically) }
+begin
+  inherited Loaded;
+  FListBox.Loaded;
+end;
+
+procedure TORComboBox.FwdChange(Sender: TObject);
+{ allow timer to call FwdChangeDelayed if long list, otherwise call directly }
+begin
+  if FFromSelf then Exit;
+  FChangePending := True;
+  if FListBox.LongList and FKeyIsDown then Exit;
+  FwdChangeDelayed;
+end;
+
+procedure TORComboBox.FwdChangeDelayed;
+{ when user types in the editbox, find a partial match in the listbox & set into editbox }
+var
+  SelectIndex: Integer;
+  x: string;
+begin
+  FChangePending := False;
+  if (not FListItemsOnly) and (Length(FEditBox.Text) > 0) and (FEditBox.SelStart = 0) then Exit;  // **KCM** test this!
+  with FEditBox do x := Copy(Text, 1, SelStart);
+  FLastInput := x;
+  SelectIndex := -1;
+  if Length(x) >= CharsNeedMatch then
+    SelectIndex := FListBox.SelectString(x);
+  if (Length(x) < CharsNeedMatch) and (FListBox.ItemIndex > -1) then
+    SelectIndex := FListBox.SelectString(x);
+  if UniqueAutoComplete then
+    SelectIndex := FListBox.VerifyUnique(SelectIndex,x);
+  if FListItemsOnly and (SelectIndex < 0) and (x <> '') then
+  begin
+    FFromSelf := True;
+    x := FLastFound;
+    SelectIndex := FListBox.SelectString(x);
+    FEditBox.Text := GetEditBoxText(SelectIndex);
+    if(not FListBox.FCheckBoxes) then
+      SendMessage(FEditBox.Handle, EM_SETSEL, Length(FEditBox.Text), Length(x));
+    FFromSelf := False;
+    Exit;                              // OnChange not called in this case
+  end;
+  FFromSelf := True;
+  if SelectIndex > -1 then
+  begin
+    FEditBox.Text := GetEditBoxText(SelectIndex);
+    FLastFound := x;
+    if(not FListBox.FCheckBoxes) then
+      SendMessage(FEditBox.Handle, EM_SETSEL, Length(FEditBox.Text), Length(x));
+  end else
+  begin
+    if(FListBox.CheckBoxes) then
+      FEditBox.Text := GetEditBoxText(SelectIndex)
+    else
+      FEditBox.Text := x;                // no match, so don't set FLastFound
+    FEditBox.SelStart := Length(x);
+  end;
+  FFromSelf := False;
+  if(not FListBox.FCheckBoxes) then
+    if Assigned(FOnChange) then FOnChange(Self);
+end;
+
+(*
+procedure TORComboBox.FwdChangeDelayed;
+{ when user types in the editbox, find a partial match in the listbox & set into editbox }
+var
+  SelectIndex: Integer;
+  x: string;
+begin
+  FChangePending := False;
+  with FEditBox do x := Copy(Text, 1, SelStart);
+  if x = FLastInput then Exit;  // this change event is just removing the selected text
+  FLastInput := x;
+  SelectIndex := FListBox.SelectString(x);
+  FFromSelf := True;
+  if SelectIndex > -1 then
+  begin
+    FEditBox.Text := GetEditBoxText(SelectIndex);
+    if(not FListBox.FCheckBoxes) then
+      SendMessage(FEditBox.Handle, EM_SETSEL, Length(FEditBox.Text), Length(x));
+  end else
+  begin
+    FEditBox.Text := x;
+    FEditBox.SelStart := Length(x);
+  end;
+  FFromSelf := False;
+  if(not FListBox.FCheckBoxes) then
+    if Assigned(FOnChange) then FOnChange(Self);
+end;
+*)
+
+procedure TORComboBox.FwdClick(Sender: TObject);
+{ places the text of the item that was selected from the listbox into the editbox }
+begin
+  if FListBox.ItemIndex > -1 then
+  begin
+    FFromSelf := True;
+    FListBox.FFocusIndex := FListBox.ItemIndex;  // FFocusIndex used so ItemTip doesn't flash
+    FEditBox.Text := GetEditBoxText(FListBox.ItemIndex);
+    FLastFound := FEditBox.Text;
+    FFromSelf := False;
+    // not sure why this must be posted (put at the back of the message queue), but for some
+    // reason FEditBox.SelectAll selects successfully then deselects on exiting this procedure
+    if(not FListBox.FCheckBoxes) then
+      PostMessage(FEditBox.Handle, EM_SETSEL, 0, Length(FEditBox.Text));
+    FEditBox.SetFocus;
+  end;
+  if Assigned(FOnClick) then FOnClick(Self);
+  if(not FListBox.FCheckBoxes) then
+    if Assigned(FOnChange) then FOnChange(Self);   // click causes both click & change events
+end;
+
+procedure TORComboBox.FwdDblClick(Sender: TObject);
+{ surfaces the double click event from the listbox so it is available as a combobox property }
+begin
+  if Assigned(FOnDblClick) then FOnDblClick(Self);
+end;
+
+procedure TORComboBox.FwdKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+{ passed selected navigation keys to listbox, applies special handling to backspace and F4 }
+var
+  i,iPos: Integer;
+  x,AString: string;
+begin
+  // special case: when default action taken (RETURN) make sure FwdChangeDelayed is called first
+  if (Key = VK_RETURN) and FListBox.LongList and FChangePending then FwdChangeDelayed;
+  StopKeyTimer;  // stop timer after control keys so in case an exit event is triggered
+  if Assigned(FOnKeyDown) then FOnKeyDown(Self, Key, Shift);
+  if Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN] then                           // navigation
+  begin
+    if (FStyle = orcsDropDown) and not DroppedDown then DroppedDown := True;
+    // handle special case of FocusIndex, WM_KEYDOWN will increment from -1 to 0
+    if FListBox.ItemIndex = -1 then
+    begin
+      FListBox.FFocusIndex := -1;
+      //Move to correct position when Unique AutoComplete is on.
+      if UniqueAutoComplete then
+      begin
+        AString := Copy(FEditBox.Text, 1, SelStart);
+        iPos := SendMessage(FListBox.Handle, LB_FINDSTRING, -1, Longint(PChar(AString)));
+        if iPos = LB_ERR then iPos := -1;
+        if iPos > -1 then
+        begin
+          FListBox.FFocusIndex := iPos-1;
+          FListBox.ItemIndex := FListBox.FFocusIndex;
+        end;
+      end;
+    end;
+    FListBox.Perform(WM_KEYDOWN, Key, 1);
+  end;
+  if Key in [VK_LBUTTON, VK_RETURN, VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN] then    // select item
+  begin
+    FListBox.Perform(WM_KEYDOWN, VK_LBUTTON, 1);
+    FFromSelf := True;
+    if FListBox.ItemIndex > -1 then
+    begin
+      FEditBox.Text := GetEditBoxText(FListBox.ItemIndex);
+      FLastFound := FEditBox.Text;  //kcm
+    end;
+    FFromSelf := False;
+  end;
+  // tell parent about RETURN, ESCAPE so that the default action is taken
+  if Key in [VK_RETURN, VK_ESCAPE, VK_TAB] then SendMessage(Parent.Handle, CN_KEYDOWN, Key, 0);
+  if Key = VK_BACK then                                                        // backspace
+  begin
+    FFromSelf := True;
+    x := FEditBox.Text;
+    i := FEditBox.SelStart;
+    Delete(x, i + 1, Length(x));
+    if(FListBox.FCheckBoxes) then
+      FEditBox.Text := GetEditBoxText(ItemIndex)
+    else
+      FEditBox.Text := x;
+    FLastFound := x;
+    FEditBox.SelStart := i;
+    FFromSelf := False;
+  end;
+  if (FStyle = orcsDropDown) and (Key = VK_F4) then DroppedDown := not DroppedDown; // drop
+
+  if (Key = VK_SPACE) and (FListBox.FCheckBoxes) and (FListBox.ItemIndex > -1) then
+    FListBox.ToggleCheckBox(FListBox.ItemIndex);
+
+  if (FStyle = orcsDropDown) and (FListBox.FCheckBoxes) then
+  begin
+    if Key = VK_RETURN then DropPanelBtnPressed(TRUE, TRUE);
+    if Key = VK_ESCAPE then DropPanelBtnPressed(FALSE, TRUE);
+  end;
+
+  FKeyIsDown := True;
+end;
+
+procedure TORComboBox.FwdKeyPress(Sender: TObject; var Key: Char);
+var
+  KeyCode: integer;
+{ prevents return from being used by editbox (otherwise sends a newline & text vanishes) }
+begin
+  KeyCode := ord(Key);
+  if (KeyCode = VK_RETURN) and (Style = orcsDropDown) and DroppedDown then
+  begin
+    DroppedDown := FALSE;
+    Key := #0;
+  end
+  else
+  begin
+    // may want to make the tab beep if tab key (#9) - can't tab until list raised
+    if (KeyCode = VK_RETURN) or (KeyCode = VK_TAB) or (FListBox.FCheckBoxes and (KeyCode = VK_SPACE)) then
+    begin
+      Key := #0;
+      Exit;
+    end;
+    if Assigned(FOnKeyPress) then FOnKeyPress(Self, Key);
+  end;
+end;
+
+procedure TORComboBox.FwdKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
+{ surfaces the key up event from the editbox so it is available as a combobox property }
+begin
+  FKeyIsDown := False;
+  // tell parent about RETURN, ESCAPE so that the default action is taken
+  if Key in [VK_RETURN, VK_ESCAPE, VK_TAB] then SendMessage(Parent.Handle, CN_KEYUP, Key, 0);
+  if Assigned(FOnKeyUp) then FOnKeyUp(Self, Key, Shift);
+  StartKeyTimer;
+end;
+
+procedure TORComboBox.FwdMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+  X, Y: Integer);
+begin
+  if Assigned(FOnMouseClick) then FOnMouseClick(Self);
+end;
+
+procedure TORComboBox.FwdNeedData(Sender: TObject; const StartFrom: string;
+  Direction, InsertAt: Integer);
+{ surfaces the need data event from the (long) listbox so it is available as a property }
+begin
+  if Assigned(FOnNeedData) then FOnNeedData(Self, copy(StartFrom, 1, MaxNeedDataLen), Direction, InsertAt);
+end;
+
+procedure TORComboBox.SetDropDownCount(Value: Integer);
+{ when the listbox is dropped, it's sized according to Value (ItemHeight * DropDownCount) }
+begin
+  if Value > 0 then FDropDownCount := Value;
+end;
+
+procedure TORComboBox.SetDroppedDown(Value: Boolean);
+{ for DropDown combo, display the listbox at the appropriate full screen coordinates }
+const
+  MIN_ITEMS = 3;                                  // minimum visible items for long list
+var
+  ScreenPoint: TPoint;
+  DropDownCnt: Integer;
+  PnlHeight: integer;
+begin
+  if (Value = FDroppedDown) or (FStyle <> orcsDropDown) then Exit;
+  FDroppedDown := Value;
+  if FDroppedDown = True then
+  begin
+    if Assigned(FOnDropDown) then FOnDropDown(Self);
+    if FListBox.LongList
+      then DropDownCnt := HigherOf(FDropDownCount, MIN_ITEMS)
+      else DropDownCnt := LowerOf(FDropDownCount, FListBox.Items.Count);
+    FListBox.SetBounds(0, 0, Width, (FListBox.ItemHeight * DropDownCnt) + CBO_CXFRAME);
+    // need to make this smart enough to drop the list UP when necessary ***
+    ScreenPoint := Self.ClientToScreen(Point(0, EditControl.Height));
+
+    PnlHeight := FListBox.Height;
+    if(FListBox.FCheckBoxes) then
+      inc(PnlHeight, CheckComboBtnHeight);
+    FDropPanel.SetBounds(ScreenPoint.X, ScreenPoint.Y, FListBox.Width, PnlHeight);
+    if(FListBox.FCheckBoxes) then
+    begin
+      FDropPanel.ResetButtons;
+      FCheckedState := FListBox.GetCheckedString;
+    end;
+    DropDownStatusChanged(TRUE);
+    FDropPanel.Visible := True;
+    FDropPanel.BringToFront;
+    if FListBox.FScrollBar <> nil then FListBox.FScrollBar.BringToFront;
+    if not FFromDropBtn then FListBox.MouseCapture := True;  // otherwise ButtonUp captures
+  end else
+  begin
+    if Assigned(FOnDropDownClose) then FOnDropDownClose(Self);
+    FListBox.MouseCapture := False;
+    uItemTip.Hide;
+    FDropPanel.Hide;
+    DropDownStatusChanged(FALSE);
+    if(FListBox.FCheckBoxes) and (assigned(FOnChange)) and
+      (FCheckedState <> FListBox.GetCheckedString) then
+      FOnChange(Self);
+  end;
+end;
+
+procedure TORComboBox.SetEditRect;
+{ change the edit rectangle to not hide the dropdown button - taken from SPIN.PAS sample }
+var
+  Loc: TRect;
+begin
+  SendMessage(FEditBox.Handle, EM_GETRECT, 0, LongInt(@Loc));
+  Loc.Bottom := ClientHeight + 1;               // +1 is workaround for windows paint bug
+  if FStyle = orcsDropDown then
+  begin
+    Loc.Right := ClientWidth - FDropBtn.Width - CBO_CXFRAME;  // edit up to button
+    if(FTemplateField) then
+      inc(Loc.Right,3);
+  end
+  else
+    Loc.Right := ClientWidth - CBO_CXFRAME;                  // edit in full edit box
+  Loc.Top := 0;
+  if(FTemplateField) then
+    Loc.Left := 2
+  else
+    Loc.Left := 0;
+  SendMessage(FEditBox.Handle, EM_SETRECTNP, 0, LongInt(@Loc));
+end;
+
+procedure TORComboBox.SetEditText(const Value: string);
+{ allows the text to change when ItemIndex is changed without triggering a change event }
+begin
+  FFromSelf := True;
+  FEditBox.Text := Value;
+  FLastFound := FEditBox.Text;
+  FFromSelf := False;
+  PostMessage(FEditBox.Handle, EM_SETSEL, 0, Length(FEditBox.Text));
+end;
+
+procedure TORComboBox.SetItemIndex(Value: Integer);
+{ set the ItemIndex in the listbox and update the editbox to show the DisplayText }
+begin
+  with FListBox do
+  begin
+    ItemIndex := Value;
+    { should Value = -1 be handled in the SetFocusIndex procedure itself? or should it be
+      handled by the setting of the ItemIndex property? }
+    if Value = -1 then FFocusIndex := -1 else FocusIndex := Value;
+    uItemTip.Hide;
+    if(FListBox.CheckBoxes) then
+      SetEditText(GetEditBoxText(ItemIndex))
+    else
+    begin
+      if ItemIndex > -1 then SetEditText(GetEditBoxText(ItemIndex)) else SetEditText('');
+    end;
+  end;
+end;
+
+function TORComboBox.SelectByIEN(AnIEN: Int64): Integer;
+begin
+  Result := FListBox.SelectByIEN(AnIEN);
+  SetItemIndex(Result);
+end;
+
+function TORComboBox.SelectByID(const AnID: string): Integer;
+begin
+  Result := FListBox.SelectByID(AnID);
+  SetItemIndex(Result);
+end;
+
+function TORComboBox.SetExactByIEN(AnIEN: Int64; const AnItem: string): Integer;
+begin
+  Result := FListBox.SetExactByIEN(AnIEN, AnItem);
+  SetItemIndex(Result);
+end;
+
+procedure TORComboBox.SetStyle(Value: TORComboStyle);
+{ Simple:   get rid of dropdown button & panel, make combobox parent of listbox
+  DropDown: create dropdown button & panel, transfer listbox parent to dropdown panel
+            this allows the dropped list to overlap other windows }
+begin
+  if Value <> FStyle then
+  begin
+    FStyle := Value;
+    if FStyle = orcsSimple then
+    begin
+      if FDropBtn <> nil then FDropBtn.Free;
+      if FDropPanel <> nil then
+      begin
+        ClearDropDownStatus;
+        FDropPanel.Free;
+      end;
+      FDropBtn := nil;
+      FDropPanel := nil;
+      FListBox.FParentCombo := nil;
+      FListBox.Parent := Self;
+      if FListBox.FScrollBar <> nil then FListBox.FScrollBar.Parent := Self;        // if long
+      FListBox.Visible := True;
+    end else
+    begin
+      FDropBtn := TBitBtn.Create(Self);
+      if(assigned(FEditPanel) and (csDesigning in ComponentState)) then
+        FEditPanel.ControlStyle := FEditPanel.ControlStyle + [csAcceptsControls];
+      FDropBtn.Parent := FEditBox;
+      if(assigned(FEditPanel) and (csDesigning in ComponentState)) then
+        FEditPanel.ControlStyle := FEditPanel.ControlStyle - [csAcceptsControls];
+      LoadComboBoxImage;
+//      FDropBtn.Glyph.LoadFromResourceName(hInstance, ComboBoxImages[inherited Enabled]);
+      FDropBtn.OnMouseDown := DropButtonDown;
+      FDropBtn.OnMouseUp := DropButtonUp;
+      FDropBtn.TabStop := False;
+      FDropBtn.Visible := True;
+      FDropBtn.BringToFront;
+      if not (csDesigning in ComponentState) then
+      begin
+        FDropPanel := TORDropPanel.Create(Self);
+        FDropPanel.Parent := Self; // parent is really the desktop - see CreateParams
+        FListBox.FParentCombo := Self;
+        FListBox.Parent := FDropPanel;
+        ClearDropDownStatus;
+        if FListBox.FScrollBar <> nil then FListBox.FScrollBar.Parent := FDropPanel;  // if long
+      end else
+      begin
+        FListBox.Visible := False;
+      end;
+      Height := EditControl.Height;
+    end;
+    AdjustSizeOfSelf;
+  end;
+end;
+
+procedure TORComboBox.StartKeyTimer;
+{ start (or restart) a timer (done on keyup to delay before calling OnKeyPause) }
+var
+  ATimerID: Integer;
+begin
+  if FListBox.LongList or Assigned(FOnKeyPause) then
+  begin
+    StopKeyTimer;
+    ATimerID := SetTimer(Handle, KEY_TIMER_ID, KEY_TIMER_DELAY, nil);
+    FKeyTimerActive := ATimerID > 0;
+    // if can't get a timer, just call the OnKeyPause event immediately
+    if not FKeyTimerActive then Perform(WM_TIMER, KEY_TIMER_ID, 0);
+  end;
+end;
+
+procedure TORComboBox.StopKeyTimer;
+{ stop the timer (done whenever a key is pressed or the combobox no longer has focus) }
+begin
+  if FKeyTimerActive then
+  begin
+    KillTimer(Handle, KEY_TIMER_ID);
+    FKeyTimerActive := False;
+  end;
+end;
+
+function TORComboBox.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+// Since TORComboBox is composed of several controls (FEditBox, FListBox, FDropBtn), the
+// following functions and procedures map public and published properties to their related
+// subcomponents.
+
+function TORComboBox.AddReference(const S: string; AReference: Variant): Integer;
+begin
+  Result := FListBox.AddReference(S, AReference);
+end;
+
+procedure TORComboBox.Clear;
+begin
+  FListBox.Clear;
+  FEditBox.Clear;
+end;
+
+procedure TORComboBox.ClearTop;
+begin
+  FListBox.ClearTop;
+end;
+
+procedure TORComboBox.ForDataUse(Strings: TStrings);
+begin
+  FListBox.ForDataUse(Strings);
+end;
+
+procedure TORComboBox.InitLongList(S: string);
+begin
+  FListBox.InitLongList(S);
+end;
+
+function TORComboBox.IndexOfReference(AReference: Variant): Integer;
+begin
+  Result := FListBox.IndexOfReference(AReference);
+end;
+
+procedure TORComboBox.InsertReference(Index: Integer; const S: string; AReference: Variant);
+begin
+  FListBox.InsertReference(Index, S, AReference);
+end;
+
+procedure TORComboBox.InsertSeparator;
+begin
+  FListBox.InsertSeparator;
+end;
+
+procedure TORComboBox.Invalidate;
+begin
+  inherited;
+  FEditBox.Invalidate;
+  FListBox.Invalidate;
+  if assigned(FEditPanel) then
+    FEditPanel.Invalidate;
+  if assigned(FDropBtn) then
+    FDropBtn.Invalidate;
+  if assigned(FDropPanel) then
+    FDropPanel.Invalidate;
+end;
+
+function TORComboBox.GetAutoSelect: Boolean;
+begin
+  Result := FEditBox.AutoSelect;
+end;
+
+function TORComboBox.GetColor: TColor;
+begin
+  Result := FListBox.Color;
+end;
+
+function TORComboBox.GetDelimiter: Char;
+begin
+  Result := FListBox.Delimiter;
+end;
+
+function TORComboBox.GetDisplayText(Index: Integer): string;
+begin
+  Result := FListBox.DisplayText[Index];
+end;
+
+function TORComboBox.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+function TORComboBox.GetItemHeight: Integer;
+begin
+  Result := FListBox.ItemHeight;
+end;
+
+function TORComboBox.GetIEN(AnIndex: Integer): Int64;
+begin
+  Result := FListBox.GetIEN(AnIndex);
+end;
+
+function TORComboBox.GetItemID: Variant;
+begin
+  Result := FListBox.ItemID;
+end;
+
+function TORComboBox.GetItemIEN: Int64;
+begin
+  Result := FListBox.ItemIEN;
+end;
+
+function TORComboBox.GetItemIndex: Integer;
+begin
+  Result := FListBox.ItemIndex;
+end;
+
+function TORComboBox.GetItemTipEnable: Boolean;
+begin
+  Result := FListBox.ItemTipEnable;
+end;
+
+function TORComboBox.GetItemTipColor: TColor;
+begin
+  Result := FListBox.ItemTipColor;
+end;
+
+function TORComboBox.GetLongList: Boolean;
+begin
+  Result := FListBox.LongList;
+end;
+
+function TORComboBox.GetMaxLength: Integer;
+begin
+  Result := FEditBox.MaxLength;
+end;
+
+function TORComboBox.GetPieces: string;
+begin
+  Result := FListBox.Pieces;
+end;
+
+function TORComboBox.GetReference(Index: Integer): Variant;
+begin
+  Result := FListBox.References[Index];
+end;
+
+function TORComboBox.GetSelLength: Integer;
+begin
+  Result := FEditBox.SelLength;
+end;
+
+function TORComboBox.GetSelStart: Integer;
+begin
+  Result := FEditBox.SelStart;
+end;
+
+function TORComboBox.GetSelText: string;
+begin
+  Result := FEditBox.SelText;
+end;
+
+function TORComboBox.GetShortCount: Integer;
+begin
+  Result := FListBox.ShortCount;
+end;
+
+function TORComboBox.GetSorted: Boolean;
+begin
+  Result := FListBox.Sorted;
+end;
+
+function TORComboBox.GetHideSynonyms: boolean;
+begin
+  Result := FListBox.HideSynonyms;
+end;
+
+function TORComboBox.GetSynonymChars: string;
+begin
+  result := FListBox.SynonymChars;
+end;
+
+procedure TORComboBox.SetHideSynonyms(Value: boolean);
+begin
+  FListBox.HideSynonyms := Value;
+end;
+
+procedure TORComboBox.SetSynonymChars(Value: string);
+begin
+  FListBox.SynonymChars := Value;
+end;
+
+function TORComboBox.GetTabPositions: string;
+begin
+  Result := FListBox.TabPositions;
+end;
+
+function TORComboBox.GetTabPosInPixels: boolean;
+begin
+  Result := FListBox.TabPosInPixels;
+end;
+
+function TORComboBox.GetText: string;
+begin
+  Result := FEditBox.Text;
+end;
+
+procedure TORComboBox.SelectAll;
+begin
+  FEditBox.SelectAll;
+end;
+
+procedure TORComboBox.SetAutoSelect(Value: Boolean);
+begin
+  FEditBox.AutoSelect := Value;
+end;
+
+procedure TORComboBox.SetBlackColorMode(Value: boolean);
+begin
+  if FBlackColorMode <> Value then
+  begin
+    FBlackColorMode := Value;
+    FListBox.SetBlackColorMode(Value);
+    LoadComboBoxImage;
+  end;
+end;
+
+procedure TORComboBox.SetColor(Value: TColor);
+begin
+  if(not FListBox.CheckBoxes) then
+    FEditBox.Color := Value;
+  FListBox.Color := Value;
+end;
+
+procedure TORComboBox.SetDelimiter(Value: Char);
+begin
+  FListBox.Delimiter := Value;
+end;
+
+procedure TORComboBox.SetItemHeight(Value: Integer);
+begin
+  FListBox.ItemHeight := Value;
+end;
+
+procedure TORComboBox.SetItemTipEnable(Value: Boolean);
+begin
+  FListBox.ItemTipEnable := Value;
+end;
+
+procedure TORComboBox.SetItemTipColor(Value: TColor);
+begin
+  FListBox.ItemTipColor := Value;
+end;
+
+procedure TORComboBox.SetLongList(Value: Boolean);
+begin
+  FListBox.LongList := Value;
+end;
+
+procedure TORComboBox.SetMaxLength(Value: Integer);
+begin
+  FEditBox.MaxLength := Value;
+end;
+
+procedure TORComboBox.SetPieces(const Value: string);
+begin
+  FListBox.Pieces := Value;
+end;
+
+procedure TORComboBox.SetReference(Index: Integer; AReference: Variant);
+begin
+  FListBox.References[Index] := AReference;
+end;
+
+procedure TORComboBox.SetSelLength(Value: Integer);
+begin
+  FEditBox.SelLength := Value;
+end;
+
+procedure TORComboBox.SetSelStart(Value: Integer);
+begin
+  FEditBox.SelStart := Value;
+end;
+
+procedure TORComboBox.SetSelText(const Value: string);
+begin
+  FEditBox.SelText := Value;
+end;
+
+procedure TORComboBox.SetSorted(Value: Boolean);
+begin
+  FListBox.Sorted := Value;
+end;
+
+procedure TORComboBox.SetTabPositions(const Value: string);
+begin
+  FListBox.TabPositions := Value;
+end;
+
+procedure TORComboBox.SetTabPosInPixels(const Value: boolean);
+begin
+  FListBox.TabPosInPixels := Value;
+end;
+
+procedure TORComboBox.SetText(const Value: string);
+begin
+  FEditBox.Text := Value;        // kcm ???
+end;
+
+procedure TORComboBox.SetItems(const Value: TStrings);
+begin
+  FItems.Assign(Value);
+end;
+
+function TORComboBox.GetCheckBoxes: boolean;
+begin
+  Result := FListBox.FCheckBoxes;
+end;
+
+function TORComboBox.GetChecked(Index: Integer): Boolean;
+begin
+  Result := FListBox.GetChecked(Index);
+end;
+
+function TORComboBox.GetCheckEntireLine: boolean;
+begin
+  Result := FListBox.FCheckEntireLine;
+end;
+
+function TORComboBox.GetFlatCheckBoxes: boolean;
+begin
+  Result := FListBox.FFlatCheckBoxes;
+end;
+
+procedure TORComboBox.SetCheckBoxes(const Value: boolean);
+begin
+  if(FListBox.FCheckBoxes <> Value) then
+  begin
+    FListBox.SetCheckBoxes(Value);
+    if(assigned(FDropPanel)) then
+      FDropPanel.UpdateButtons;
+    FEditBox.Visible := FALSE;
+    try
+      if(Value) then
+      begin
+        SetListItemsOnly(TRUE);
+        SetAutoSelect(FALSE);
+        FEditBox.Color := FCheckBoxEditColor;
+        FEditBox.Text := GetEditBoxText(-1);
+        FEditBox.BorderStyle := bsNone;
+        FEditPanel := TORComboPanelEdit.Create(Self);
+        FEditPanel.Parent := Self;
+        FEditPanel.BevelOuter := bvRaised;
+        FEditPanel.BorderWidth := 1;
+        FEditBox.Parent := FEditPanel;
+        if(csDesigning in ComponentState) then
+          FEditPanel.ControlStyle := FEditPanel.ControlStyle - [csAcceptsControls];
+      end
+      else
+      begin
+        FEditBox.Parent := Self;
+        FEditBox.Color := FListBox.Color;
+        FEditBox.BorderStyle := bsSingle;
+        FEditPanel.Free;
+        FEditPanel := nil;
+      end;
+    finally
+      FEditBox.Visible := TRUE;
+    end;
+    AdjustSizeOfSelf;
+  end;
+end;
+
+procedure TORComboBox.SetChecked(Index: Integer; const Value: Boolean);
+begin
+  FListBox.SetChecked(Index, Value);
+  if(assigned(FDropPanel)) then
+    FDropPanel.UpdateButtons;
+  if(Value) then
+    SetListItemsOnly(TRUE);
+end;
+
+procedure TORComboBox.SetCheckEntireLine(const Value: boolean);
+begin
+  FListBox.FCheckEntireLine := Value;
+end;
+
+procedure TORComboBox.SetFlatCheckBoxes(const Value: boolean);
+begin
+  FListBox.SetFlatCheckBoxes(Value);
+end;
+
+procedure TORComboBox.DropPanelBtnPressed(OKBtn, AutoClose: boolean);
+var
+  btn: TSpeedButton;
+
+begin
+  if(assigned(FDropPanel)) then
+  begin
+    btn := FDropPanel.GetButton(OKBtn);
+    if(assigned(Btn)) then
+      Btn.Down := TRUE;
+  end;
+  if(not OKBtn) then FListBox.SetCheckedString(FCheckedState);
+  if(AutoClose) then
+  begin
+    FListBox.FDontClose := FALSE;
+    DroppedDown := False;
+  end;
+  UpdateCheckEditBoxText;
+end;
+
+function TORComboBox.GetCheckedString: string;
+begin
+  Result := FListBox.GetCheckedString;
+end;
+
+procedure TORComboBox.SetCheckedString(const Value: string);
+begin
+  FListBox.SetCheckedString(Value);
+end;
+
+procedure TORComboBox.SetCheckBoxEditColor(const Value: TColor);
+begin
+  if(FCheckBoxEditColor <> Value) then
+  begin
+    FCheckBoxEditColor := Value;
+    if(FListBox.FCheckBoxes) then
+      FEditBox.Color := FCheckBoxEditColor;
+  end;
+end;
+
+procedure TORComboBox.SetListItemsOnly(const Value: Boolean);
+begin
+  if(FListItemsOnly <> Value) then
+  begin
+    FListItemsOnly := Value;
+    if(not Value) then
+      SetCheckBoxes(FALSE);
+  end;
+end;
+
+procedure TORComboBox.SetOnCheckedText(const Value: TORCheckComboTextEvent);
+begin
+  FOnCheckedText := Value;
+  FEditBox.Text := GetEditBoxText(-1);
+end;
+
+procedure TORComboBox.SetTemplateField(const Value: boolean);
+begin
+  if(FTemplateField <> Value) then
+  begin
+    FTemplateField := Value;
+    if(Value) then
+    begin
+      SetStyle(orcsDropDown);
+      FEditBox.BorderStyle := bsNone
+    end
+    else
+      FEditBox.BorderStyle := bsSingle;
+    AdjustSizeOfSelf;
+  end;
+end;
+
+function TORComboBox.GetOnSynonymCheck: TORSynonymCheckEvent;
+begin
+  Result := FListBox.FOnSynonymCheck;
+end;
+
+procedure TORComboBox.SetOnSynonymCheck(const Value: TORSynonymCheckEvent);
+begin
+  FListBox.FOnSynonymCheck := Value;
+end;
+
+function TORComboBox.GetEnabled: boolean;
+begin
+  Result := inherited GetEnabled;
+end;
+
+procedure TORComboBox.SetEnabled(Value: boolean);
+begin
+  if (inherited GetEnabled <> Value) then
+  begin
+    DroppedDown := FALSE;
+    inherited SetEnabled(Value);
+    if assigned(FDropBtn) then
+      LoadComboBoxImage;
+//      FDropBtn.Glyph.LoadFromResourceName(hInstance, ComboBoxImages[Value]);
+  end;
+end;
+
+function TORComboBox.GetEditBoxText(Index: Integer): string;
+var
+  i, cnt: integer;
+
+begin
+  if(FListBox.FCheckBoxes) then
+  begin
+    Result := '';
+    cnt := 0;
+    for i := 0 to FListBox.Items.Count-1 do
+    begin
+      if(FListBox.Checked[i]) then
+      begin
+        inc(cnt);
+        if(Result <> '') then
+          Result := Result + ', ';
+        Result := Result + FListBox.GetDisplayText(i);
+      end;
+    end;
+    if(assigned(FOnCheckedText)) then
+      FOnCheckedText(FListBox, cnt, Result);
+  end
+  else
+    Result := FListBox.GetDisplayText(Index);
+end;
+
+procedure TORComboBox.UpdateCheckEditBoxText;
+begin
+  if(FListBox.FCheckBoxes) then
+  begin
+    FFromSelf := TRUE;
+    FEditBox.Text := GetEditBoxText(-1);
+    FEditBox.SelLength := 0;
+    FFromSelf := FALSE;
+  end;
+end;
+
+procedure TORComboBox.CheckBoxSelected(Sender: TObject; Index: integer);
+begin
+  UpdateCheckEditBoxText;
+  if(FStyle <> orcsDropDown) and (assigned(FOnChange)) then
+    FOnChange(Self);
+end;
+
+function TORComboBox.GetMItems: TStrings;
+begin
+  result := FMItems;
+end;
+
+procedure TORComboBox.SetCaption(const Value: string);
+begin
+  FListBox.Caption := Value;
+end;
+
+function TORComboBox.GetCaption: string;
+begin
+  result := FListBox.Caption;
+end;
+
+function TORComboBox.GetCaseChanged: boolean;
+begin
+  result := FListBox.CaseChanged;
+end;
+
+procedure TORComboBox.SetCaseChanged(const Value: boolean);
+begin
+  FListBox.CaseChanged := Value;
+end;
+
+function TORComboBox.GetLookupPiece: integer;
+begin
+  result := FListBox.LookupPiece;
+end;
+
+procedure TORComboBox.SetLookupPiece(const Value: integer);
+begin
+  FListBox.LookupPiece := Value;
+end;
+
+{ TSizeRatio methods }
+
+constructor TSizeRatio.Create(ALeft, ATop, AWidth, AHeight: Extended);
+{ creates an object that records the initial relative size & position of a control }
+begin
+  CLeft := ALeft; CTop := ATop; CWidth := AWidth; CHeight := AHeight;
+end;
+
+{ TORAutoPanel ----------------------------------------------------------------------------- }
+
+destructor TORAutoPanel.Destroy;
+{ destroy objects used to record size and position information for controls }
+var
+  SizeRatio: TSizeRatio;
+  i: Integer;
+begin
+  if FSizes <> nil then with FSizes do for i := 0 to Count - 1 do
+  begin
+    SizeRatio := Items[i];
+    SizeRatio.Free;
+  end;
+  FSizes.Free;
+  inherited Destroy;
+end;
+
+procedure TORAutoPanel.BuildSizes( Control: TWinControl);
+var
+  i,H,W: Integer;
+  SizeRatio: TSizeRatio;
+  Child: TControl;
+begin
+  H := ClientHeight;
+  W := ClientWidth;
+  if (H = 0) or (W = 0) then exit;
+  for i := 0 to Control.ControlCount - 1 do
+  begin
+    Child := Control.Controls[i];
+    with Child do
+      SizeRatio := TSizeRatio.Create(Left/W, Top/H, Width/W, Height/H);
+    FSizes.Add(SizeRatio);  //FSizes is in tree traversal order.
+    //TGroupBox is currently the only type of container that is having these
+    //resize problems
+    if Child is TGroupBox then
+      BuildSizes(TWinControl(Child));
+  end;
+end;
+
+procedure TORAutoPanel.Loaded;
+{ record initial size & position info for resizing logic }
+begin
+  inherited Loaded;
+  if csDesigning in ComponentState then Exit;          // only want auto-resizing at run time
+  FSizes := TList.Create;
+  BuildSizes(Self);
+end;
+
+procedure TORAutoPanel.DoResize( Control: TWinControl; var CurrentIndex: Integer);
+var
+  i,H,W: Integer;
+  SizeRatio: TSizeRatio;
+  Child: TControl;
+begin
+  H := ClientHeight;
+  W := ClientWidth;
+  for i := 0 to Control.ControlCount - 1 do
+  begin
+    Child := Control.Controls[i];
+    if CurrentIndex = FSizes.Count then break;
+//      raise Exception.Create('Error while Sizing Auto-Size Panel');
+    SizeRatio := FSizes[CurrentIndex];
+    inc(CurrentIndex);
+    with SizeRatio do begin
+      if (Child is TLabel) or (Child is TStaticText) then
+        Child.SetBounds(Round(CLeft*W), Round(CTop*H), Child.Width, Child.Height)
+      else
+        Child.SetBounds(Round(CLeft*W), Round(CTop*H), Round(CWidth*W), Round(CHeight*H));
+    end;
+    if Child is TGroupBox then
+      DoResize(TwinControl(Child), CurrentIndex);
+  end;
+end;
+
+procedure TORAutoPanel.Resize;
+{ resize child controls using their design time proportions }
+var
+  i: Integer;
+begin
+  inherited Resize;
+  if csDesigning in ComponentState then Exit;          // only want auto-resizing at run time
+  i := 0;
+  DoResize( Self, i);
+end;
+
+{ TOROffsetLabel --------------------------------------------------------------------------- }
+
+constructor TOROffsetLabel.Create(AOwner: TComponent);
+{ create the label with the default of Transparent = False and Offset = 2}
+begin
+  inherited Create(AOwner);
+  ControlStyle := ControlStyle + [csOpaque];
+  FHorzOffset := 2;
+  FVertOffset := 2;
+end;
+
+procedure TOROffsetLabel.CMTextChanged(var Message: TMessage);
+{ resize whenever the label caption changes }
+begin
+  inherited;
+  AdjustSizeOfSelf;
+end;
+
+procedure TOROffsetLabel.CMFontChanged(var Message: TMessage);
+{ resize whenever the label font changes }
+begin
+  inherited;
+  AdjustSizeOfSelf;
+end;
+
+procedure TOROffsetLabel.AdjustSizeOfSelf;
+{ using the current font, call DrawText to calculate the rectangle size for the label }
+var
+  DC: HDC;
+  Flags: Word;
+  ARect: TRect;
+begin
+  if not (csReading in ComponentState) then
+  begin
+    DC := GetDC(0);
+    Canvas.Handle := DC;
+    ARect := ClientRect;
+    Flags := DT_EXPANDTABS or DT_CALCRECT;
+    if FWordWrap then Flags := Flags or DT_WORDBREAK;
+    DoDrawText(ARect, Flags);                                      // returns size of text rect
+    Canvas.Handle := 0;
+    ReleaseDC(0, DC);
+    // add alignment property later?
+    SetBounds(Left, Top, ARect.Right + FHorzOffset, ARect.Bottom + FVertOffset); // add offsets
+  end;
+end;
+
+procedure TOROffsetLabel.DoDrawText(var Rect: TRect; Flags: Word);
+{ call drawtext to paint or calculate the size of the text in the caption property }
+var
+  Text: string;
+begin
+  Text := Caption;
+  Canvas.Font := Font;
+  if not Enabled then Canvas.Font.Color := clGrayText;
+  DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
+end;
+
+procedure TOROffsetLabel.Paint;
+{ set the background characterictics, add the offsets, and paint the text }
+var
+  ARect: TRect;
+  Flags: Word;
+begin
+  with Canvas do
+  begin
+    if not Transparent then
+    begin
+      Brush.Color := Self.Color;
+      Brush.Style := bsSolid;
+      FillRect(ClientRect);
+    end;
+    Brush.Style := bsClear;
+    ARect := ClientRect;
+    Inc(ARect.Left, FHorzOffset);
+    Inc(ARect.Top,  FVertOffset);
+    Flags := DT_EXPANDTABS or DT_NOPREFIX or DT_LEFT;
+    if FWordWrap then Flags := Flags or DT_WORDBREAK;
+    DoDrawText(ARect, Flags);
+  end;
+end;
+
+function TOROffsetLabel.GetTransparent: Boolean;
+{ returns true if the control style is not opaque }
+begin
+  if csOpaque in ControlStyle then Result := False else Result := True;
+end;
+
+procedure TOROffsetLabel.SetTransparent(Value: Boolean);
+{ if true, removes Opaque from the control style }
+begin
+  if Value <> Transparent then
+  begin
+    if Value
+      then ControlStyle := ControlStyle - [csOpaque]   // transparent = true
+      else ControlStyle := ControlStyle + [csOpaque];  // transparent = false
+    Invalidate;
+  end;
+end;
+
+procedure TOROffsetLabel.SetVertOffset(Value: Integer);
+{ adjusts the size of the label whenever the vertical offset of the label changes }
+begin
+  FVertOffset := Value;
+  AdjustSizeOfSelf;
+end;
+
+procedure TOROffsetLabel.SetHorzOffset(Value: Integer);
+{ adjusts the size of the label whenever the horizontal offset of the label changes }
+begin
+  FHorzOffset := Value;
+  AdjustSizeOfSelf;
+end;
+
+procedure TOROffsetLabel.SetWordWrap(Value: Boolean);
+{ adjusts the size of the label whenever the word wrap property changes }
+begin
+  if FWordWrap <> Value then
+  begin
+    FWordWrap := Value;
+    AdjustSizeOfSelf;
+  end;
+end;
+
+(*
+{ TORCalendar }
+
+procedure TORCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
+{ uses the Calendar that is part of Samples and highlights the current date }
+var
+  TheText: string;
+  CurMonth, CurYear, CurDay: Word;
+begin
+  TheText := CellText[ACol, ARow];
+  with ARect, Canvas do
+  begin
+    DecodeDate(Date, CurYear, CurMonth, CurDay);
+    if (CurYear = Year) and (CurMonth = Month) and (IntToStr(CurDay) = TheText) then
+    begin
+      TheText := '[' + TheText + ']';
+      Font.Style := [fsBold];
+    end;
+    TextRect(ARect, Left + (Right - Left - TextWidth(TheText)) div 2,
+      Top + (Bottom - Top - TextHeight(TheText)) div 2, TheText);
+  end;
+end;
+*)
+
+{ TORAlignButton }
+
+constructor TORAlignButton.Create(AOwner: TComponent);
+begin
+  inherited;
+  FAlignment := taCenter;
+  FLayout := tlCenter;
+  FWordWrap := FALSE;
+end;
+
+procedure TORAlignButton.CreateParams(var Params: TCreateParams);
+const
+  ButtonAlignment: array[TAlignment] of DWORD = (BS_LEFT, BS_RIGHT, BS_CENTER);
+  ButtonWordWrap: array[boolean] of DWORD = (0, BS_MULTILINE);
+  ButtonLayout: array[TTextLayout] of DWORD = (BS_TOP, BS_VCENTER, BS_BOTTOM);
+begin
+  inherited CreateParams(Params);
+  Params.Style := Params.Style or ButtonAlignment[FAlignment] or
+                                  ButtonLayout[FLayout] or
+                                  ButtonWordWrap[FWordWrap];
+end;
+
+procedure TORAlignButton.SetAlignment(const Value: TAlignment);
+begin
+  if(FAlignment <> Value) then
+  begin
+    FAlignment := Value;
+    RecreateWnd;
+  end;
+end;
+
+procedure TORAlignButton.SetLayout(const Value: TTextLayout);
+begin
+  if(FLayout <> Value) then
+  begin
+    FLayout := Value;
+    RecreateWnd;
+  end;
+end;
+
+procedure TORAlignButton.SetWordWrap(const Value: boolean);
+begin
+  if(FWordWrap <> Value) then
+  begin
+    FWordWrap := Value;
+    RecreateWnd;
+  end;
+end;
+
+{ TORTreeNode }
+
+procedure TORTreeNode.EnsureVisible;
+var
+  R: TRect;
+  DY, LH: integer;
+
+begin
+  MakeVisible;
+  R := DisplayRect(FALSE);
+  if(R.Top < 0) then
+    TreeView.TopItem := Self
+  else
+  if(R.Bottom > TreeView.ClientHeight) then
+  begin
+    DY := R.Bottom - TreeView.ClientHeight;
+    LH := R.Bottom - R.Top + 1;
+    DY := (DY div LH) + 1;
+    GetORTreeView.SetVertScrollPos(GetORTreeView.GetVertScrollPos + DY);
+  end;
+end;
+
+function TORTreeNode.GetBold: boolean;
+var
+  Item: TTVItem;
+begin
+  Result := False;
+  with Item do
+  begin
+    mask := TVIF_STATE;
+    hItem := ItemId;
+    if TreeView_GetItem(Handle, Item) then
+      Result := (state and TVIS_BOLD) <> 0;
+  end;
+end;
+
+function TORTreeNode.GetORTreeView: TORTreeView;
+begin
+  Result := ((inherited TreeView) as TORTreeView);
+end;
+
+function TORTreeNode.GetParent: TORTreeNode;
+begin
+  Result := ((inherited Parent) as TORTreeNode);
+end;
+
+function TORTreeNode.GetText: string;
+begin
+  Result := Inherited Text;
+end;
+
+procedure TORTreeNode.SetBold(const Value: boolean);
+var
+  Item: TTVItem;
+  Template: DWORD;
+
+begin
+  if Value then Template := DWORD(-1)
+  else Template := 0;
+  with Item do
+  begin
+    mask := TVIF_STATE;
+    hItem := ItemId;
+    stateMask := TVIS_BOLD;
+    state := stateMask and Template;
+  end;
+  TreeView_SetItem(Handle, Item);
+end;
+
+procedure TORTreeNode.SetPiece(PieceNum: Integer; const NewPiece: string);
+begin
+  with GetORTreeView do
+  begin
+    ORCtrls.SetPiece(FStringData, FDelim, PieceNum, NewPiece);
+    if(PieceNum = FPiece) then
+      Text := NewPiece;
+  end;
+end;
+
+procedure TORTreeNode.SetStringData(const Value: string);
+begin
+  if(FStringData <> Value) then
+  begin
+    FStringData := Value;
+    with GetORTreeView do
+      if (FDelim <> #0) and (FPiece > 0) then
+        inherited Text := Piece(FStringData, FDelim, FPiece);
+  end;
+  Caption := Text;
+end;
+
+procedure TORTreeNode.SetText(const Value: string);
+begin
+  UpdateText(Value, TRUE);
+end;
+
+procedure TORTreeNode.UpdateText(const Value: string; UpdateData: boolean);
+begin
+  Inherited Text := Value;
+  Caption := Text;
+  if(UpdateData) then
+    with GetORTreeView do
+    begin
+      if (FDelim <> #0) and (FPiece > 0) then
+        ORCtrls.SetPiece(FStringData, FDelim, FPiece, Value);
+    end;
+end;
+
+function CalcShortName( LongName: string; PrevLongName: string): string;
+var
+  WordBorder: integer;
+  j: integer;
+begin
+  WordBorder := 1;
+  for j := 1 to Length(LongName) do
+  begin
+    if (LongName[j] = ' ') or ((j > 1) and (LongName[j-1] = ' ')) or
+      ((j = Length(LongName)) and (j = Length(PrevLongName)) and (LongName[j] = PrevLongName[j])) then
+      WordBorder := j;
+    if (j > Length(PrevLongName)) or (LongName[j] <> PrevLongName[j]) then
+      break;
+  end;
+  if WordBorder = 1 then
+    result := LongName
+  else if WordBorder = Length(LongName) then
+    result := 'Same as above ('+LongName+')'
+  else
+    result := Copy(LongName,WordBorder,Length(LongName)) + ' ('+Trim(Copy(LongName,1,WordBorder -1)) + ')';
+end;
+
+procedure TORTreeNode.SetCaption(const Value: string);
+var
+  TheCaption: string;
+begin
+  TheCaption := Value;
+  with GetORTreeView do
+  begin
+    if assigned(OnNodeCaptioning) then
+      OnNodeCaptioning(self, TheCaption);
+    if ShortNodeCaptions and (Self.GetPrevSibling <> nil) then
+      TheCaption := CalcShortName( TheCaption, Self.GetPrevSibling.Text);
+  end;
+  FCaption := TheCaption;
+end;
+
+{ TORTreeView }
+
+procedure TORTreeView.CNNotify(var Message: TWMNotify);
+var
+  DNode: TTreeNode;
+  DoInh: boolean;
+
+begin
+  DoInh := TRUE;
+  if(assigned(FOnDragging)) then
+  begin
+    with Message do
+    begin
+      case NMHdr^.code of
+        TVN_BEGINDRAG:
+          begin
+            with PNMTreeView(Message.NMHdr)^.ItemNew do
+            begin
+              if (state and TVIF_PARAM) <> 0 then DNode := Pointer(lParam)
+              else DNode := Items.GetNode(hItem);
+            end;
+            FOnDragging(Self, DNode, DoInh);
+            if(not DoInh) then
+            begin
+              Message.Result := 1;
+              Selected := DNode;
+            end;
+          end;
+      end;
+    end;
+  end;
+  if(DoInh) then inherited;
+end;
+
+constructor TORTreeView.Create(AOwner: TComponent);
+begin
+  inherited;
+  FDelim := '^';
+end;
+
+function TORTreeView.CreateNode: TTreeNode;
+begin
+  Result := TORTreeNode.Create(Items);
+  if Assigned( OnAddition ) then
+    OnAddition(self, Result);
+end;
+
+function TORTreeView.FindPieceNode(Value: string;
+                                   ParentDelim: Char = #0; StartNode: TTreeNode = nil): TORTreeNode;
+begin
+  Result := FindPieceNode(Value, FPiece, ParentDelim, StartNode);
+end;
+
+function TORTreeView.FindPieceNode(Value: string; APiece: integer;
+                                   ParentDelim: Char = #0; StartNode: TTreeNode = nil): TORTreeNode;
+var
+  StartIdx, i: integer;
+  Node: TORTreeNode;
+
+begin
+  if assigned(StartNode) then
+    StartIdx := StartNode.AbsoluteIndex+1
+  else
+    StartIdx := 0;
+  Result := nil;
+  for i := StartIdx to Items.Count-1 do
+  begin
+    Node := (Items[i] as TORTreeNode);
+    if(GetNodeID(Node, APiece, ParentDelim) = Value) then
+    begin
+      Result := Node;
+      break;
+    end;
+  end;
+end;
+
+function TORTreeView.GetExpandedIDStr(APiece: integer; ParentDelim: char = #0): string;
+var
+  i: integer;
+
+begin
+  Result := '';
+  for i := 0 to Items.Count-1 do
+  begin
+    with (Items[i] as TORTreeNode) do
+    begin
+      if(Expanded) then
+      begin
+        if(Result <> '') then
+          Result := Result + FDelim;
+        Result := Result + GetNodeID(TORTreeNode(Items[i]), APiece, ParentDelim);
+      end;
+    end;
+  end;
+end;
+
+procedure TORTreeView.SetExpandedIDStr(APiece: integer; const Value: string);
+begin
+  SetExpandedIDStr(APiece, #0, Value);
+end;
+
+procedure TORTreeView.SetExpandedIDStr(APiece: integer; ParentDelim: char;
+                                                        const Value: string);
+var
+  i: integer;
+  Top, Sel: TTreeNode;
+  Node: TORTreeNode;
+  NList: string;
+  Srch: string;
+
+begin
+  Items.BeginUpdate;
+  try
+    Top := TopItem;
+    Sel := Selected;
+    FullCollapse;
+    Selected := Sel;
+    NList := Value;
+    repeat
+      i := pos(FDelim, NList);
+      if(i = 0) then i := length(NList)+1;
+      Srch := copy(NList,1,i-1);
+      Node := FindPieceNode(Srch, APiece, ParentDelim);
+      if(assigned(Node)) then
+        Node.Expand(FALSE);
+      Nlist := copy(NList,i+1,MaxInt);
+    until(NList = '');
+    TopItem := Top;
+    Selected := Sel;
+  finally
+    Items.EndUpdate;
+  end;
+end;
+
+function TORTreeView.GetHorzScrollPos: integer;
+begin
+  Result := GetScrollPos(Handle, SB_HORZ);
+end;
+
+function TORTreeView.GetVertScrollPos: integer;
+begin
+  Result := GetScrollPos(Handle, SB_VERT);
+end;
+
+procedure TORTreeView.RenameNodes;
+var
+  i:integer;
+
+begin
+  if(FDelim <> #0) and (FPiece > 0) then
+  begin
+    for i := 0 to Items.Count-1 do
+      with (Items[i] as TORTreeNode) do
+        UpdateText(Piece(FStringData, FDelim, FPiece), FALSE);
+  end;
+end;
+
+procedure TORTreeView.SetNodeDelim(const Value: Char);
+begin
+  if(FDelim <> Value) then
+  begin
+    FDelim := Value;
+    RenameNodes;
+  end;
+end;
+
+procedure TORTreeView.SetHorzScrollPos(Value: integer);
+begin
+  if(Value < 0) then Value := 0;
+  Perform(WM_HSCROLL,MakeWParam(SB_THUMBPOSITION, Value),0);
+end;
+
+procedure TORTreeView.SetNodePiece(const Value: integer);
+begin
+  if(FPiece <> Value) then
+  begin
+    FPiece := Value;
+    RenameNodes;
+  end;
+end;
+
+procedure TORTreeView.SetVertScrollPos(Value: integer);
+begin
+  if(Value < 0) then Value := 0;
+  Perform(WM_VSCROLL,MakeWParam(SB_THUMBPOSITION, Value),0);
+end;
+
+function TORTreeView.GetNodeID(Node: TORTreeNode;
+  ParentDelim: Char): string;
+begin
+  Result := GetNodeID(Node, FPiece, ParentDelim);
+end;
+
+function TORTreeView.GetNodeID(Node: TORTreeNode; APiece: integer;
+  ParentDelim: Char): string;
+begin
+  if(assigned(Node)) then
+  begin
+    Result := Piece(Node.FStringData, FDelim, APiece);
+    if((ParentDelim <> #0) and (ParentDelim <> FDelim) and (assigned(Node.Parent))) then
+      Result := Result + ParentDelim + GetNodeID(Node.Parent, APiece, ParentDelim);
+  end
+  else
+    Result := '';
+end;
+
+procedure TORTreeView.SetShortNodeCaptions(const Value: boolean);
+begin
+  FShortNodeCaptions := Value;
+  RenameNodes;
+end;
+
+{ TORCBImageIndexes }
+
+constructor TORCBImageIndexes.Create(AOwner: TComponent);
+begin
+  inherited;
+  FCheckedEnabledIndex := -1;
+  FCheckedDisabledIndex := -1;
+  FGrayedEnabledIndex := -1;
+  FGrayedDisabledIndex := -1;
+  FUncheckedEnabledIndex := -1;
+  FUncheckedDisabledIndex := -1;
+  FImageChangeLink := TChangeLink.Create;
+  FImageChangeLink.OnChange := ImageListChanged;
+end;
+
+destructor TORCBImageIndexes.Destroy;
+begin
+  FImageChangeLink.Free;
+  inherited;
+end;
+
+procedure TORCBImageIndexes.SetImages(const Value: TCustomImageList);
+begin
+  if FImages <> nil then FImages.UnRegisterChanges(FImageChangeLink);
+  FImages := Value;
+  if FImages <> nil then
+  begin
+    FImages.RegisterChanges(FImageChangeLink);
+    FImages.FreeNotification(Self);
+  end;
+  ImageListChanged(Self);
+end;
+
+function TORCBImageIndexes.IdxString: string;
+  function RStr(Value: integer): string;
+  begin
+    if(Value <> -1) then
+      Result := IntToStr(Value)
+    else
+      Result := '';
+    Result := Result + ',';
+  end;
+
+begin
+  Result := RStr(FCheckedEnabledIndex) +
+            RStr(FGrayedEnabledIndex) +
+            RStr(FUncheckedEnabledIndex) +
+            RStr(FCheckedDisabledIndex) +
+            RStr(FGrayedDisabledIndex) +
+            RStr(FUncheckedDisabledIndex);
+  delete(Result,length(Result),1);
+  if(Result = ',,,,,') then Result := '';
+end;
+
+procedure TORCBImageIndexes.SetIdxString(Value: string);
+var
+  i,j,v: integer;
+  Sub: String;
+
+begin
+  if(Value = '') then
+  begin
+    FCheckedEnabledIndex    := -1;
+    FGrayedEnabledIndex     := -1;
+    FUncheckedEnabledIndex  := -1;
+    FCheckedDisabledIndex   := -1;
+    FGrayedDisabledIndex    := -1;
+    FUncheckedDisabledIndex := -1;
+  end
+  else
+  begin
+    i := 0;
+    Sub := Value;
+    repeat
+      j := pos(',',Sub);
+      if(j = 0) then j := length(Sub)+1;
+      v := StrToIntDef(copy(Sub,1,j-1),-1);
+      case i of
+        0: FCheckedEnabledIndex    := v;
+        1: FGrayedEnabledIndex     := v;
+        2: FUncheckedEnabledIndex  := v;
+        3: FCheckedDisabledIndex   := v;
+        4: FGrayedDisabledIndex    := v;
+        5: FUncheckedDisabledIndex := v;
+      end;
+      inc(i);
+      Sub := copy(Sub,j+1,MaxInt);
+    until(Sub = '');
+  end;
+end;
+
+procedure TORCBImageIndexes.ImageListChanged(Sender: TObject);
+begin
+  if(Owner is TWinControl) then
+    (Owner as TWinControl).Invalidate;
+end;
+
+procedure TORCBImageIndexes.Notification(AComponent: TComponent; Operation: TOperation);
+begin
+  inherited Notification(AComponent, Operation);
+  if (AComponent = FImages) and (Operation = opRemove) then SetImages(nil);
+end;
+
+procedure TORCBImageIndexes.SetCheckedDisabledIndex(const Value: integer);
+begin
+  if(FCheckedDisabledIndex <> Value) then
+  begin
+    FCheckedDisabledIndex := Value;
+    ImageListChanged(Self);
+  end;
+end;
+
+procedure TORCBImageIndexes.SetCheckedEnabledIndex(const Value: integer);
+begin
+  if(FCheckedEnabledIndex <> Value) then
+  begin
+    FCheckedEnabledIndex := Value;
+    ImageListChanged(Self);
+  end;
+end;
+
+procedure TORCBImageIndexes.SetGrayedDisabledIndex(const Value: integer);
+begin
+  if(FGrayedDisabledIndex <> Value) then
+  begin
+    FGrayedDisabledIndex := Value;
+    ImageListChanged(Self);
+  end;
+end;
+
+procedure TORCBImageIndexes.SetGrayedEnabledIndex(const Value: integer);
+begin
+  if(FGrayedEnabledIndex <> Value) then
+  begin
+    FGrayedEnabledIndex := Value;
+    ImageListChanged(Self);
+  end;
+end;
+
+procedure TORCBImageIndexes.SetUncheckedDisabledIndex(const Value: integer);
+begin
+  if(FUncheckedDisabledIndex <> Value) then
+  begin
+    FUncheckedDisabledIndex := Value;
+    ImageListChanged(Self);
+  end;
+end;
+
+procedure TORCBImageIndexes.SetUncheckedEnabledIndex(const Value: integer);
+begin
+  if(FUncheckedEnabledIndex <> Value) then
+  begin
+    FUncheckedEnabledIndex := Value;
+    ImageListChanged(Self);
+  end;
+end;
+
+{ TORCheckBox }
+
+constructor TORCheckBox.Create(AOwner: TComponent);
+begin
+  CreateCommon(AOwner);
+  FCustomImages := TORCBImageIndexes.Create(Self);
+  FCustomImagesOwned := TRUE;
+  FAllowAllUnchecked := TRUE;
+end;
+
+constructor TORCheckBox.ListViewCreate(AOwner: TComponent; ACustomImages: TORCBImageIndexes);
+begin
+  CreateCommon(AOwner);
+  FCustomImages := ACustomImages;
+  FCustomImagesOwned := FALSE;
+end;
+
+procedure TORCheckBox.CreateCommon(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FGrayedToChecked := TRUE;
+  FCanvas := TCanvas.Create;
+end;
+
+destructor TORCheckBox.Destroy;
+begin
+  if(FCustomImagesOwned) then FCustomImages.Free;
+  FCanvas.Free;
+  inherited;
+end;
+
+
+function TORCheckBox.GetImageIndexes: string;
+begin
+  Result := FCustomImages.IdxString;
+end;
+
+function TORCheckBox.GetImageList: TCustomImageList;
+begin
+  Result := FCustomImages.FImages;
+end;
+
+procedure TORCheckBox.SetImageIndexes(const Value: string);
+begin
+  FCustomImages.SetIdxString(Value);
+end;
+
+procedure TORCheckBox.SetImageList(const Value: TCustomImageList);
+begin
+  FCustomImages.SetImages(Value);
+end;
+
+procedure TORCheckBox.Toggle;
+begin
+  if(FGrayedToChecked) then
+  begin
+    case State of
+      cbUnchecked:
+        if AllowGrayed then State := cbGrayed else State := cbChecked;
+      cbChecked: State := cbUnchecked;
+      cbGrayed: State := cbChecked;
+    end;
+  end
+  else
+  begin
+    case State of
+      cbUnchecked: State := cbChecked;
+      cbChecked: if AllowGrayed then State := cbGrayed else State := cbUnchecked;
+      cbGrayed: State := cbUnchecked;
+    end;
+  end;
+end;
+
+procedure TORCheckBox.CreateParams(var Params: TCreateParams);
+begin
+  inherited CreateParams(Params);
+  Params.Style := (Params.Style and (not BS_3STATE)) or BS_OWNERDRAW;
+end;
+
+procedure TORCheckBox.CMEnabledChanged(var Message: TMessage);
+begin
+  inherited;
+  Invalidate;
+end;
+
+procedure TORCheckBox.CMFontChanged(var Message: TMessage);
+begin
+  inherited;
+  Invalidate;
+end;
+
+procedure TORCheckBox.CNDrawItem(var Message: TWMDrawItem);
+begin
+  DrawItem(Message.DrawItemStruct^);
+end;
+
+procedure TORCheckBox.CNMeasureItem(var Message: TWMMeasureItem);
+begin
+  with Message.MeasureItemStruct^ do
+  begin
+    itemWidth := Width;
+    itemHeight := Height;
+  end;
+end;
+
+procedure TORCheckBox.GetDrawData(CanvasHandle: HDC; var Bitmap: TBitmap;
+                                         var FocRect, Rect: TRect;
+                                         var DrawOptions: UINT;
+                                         var TempBitMap: boolean);
+var
+  i, l, TxtHeight, TxtWidth, AWidth: Integer;
+  ImgIdx: TORCBImgIdx;
+  CustomImgIdx: integer;
+
+begin
+  BitMap := nil;
+  TempBitMap := FALSE;
+  DrawOptions := DT_LEFT;
+  FSingleLine := TRUE;
+
+  if(not (csDestroying in ComponentState)) then
+  begin
+    with FCustomImages do
+    begin
+      FCanvas.Handle := CanvasHandle;
+      try
+        Rect := ClientRect;
+        with FCanvas do
+        begin
+          CustomImgIdx := -1;
+          if(assigned(FImages)) then
+          begin
+            if(Enabled or (csDesigning in ComponentState)) then
+            begin
+              case State of
+                cbChecked:   CustomImgIdx := FCheckedEnabledIndex;
+                cbUnChecked: CustomImgIdx := FUncheckedEnabledIndex;
+                cbGrayed:    CustomImgIdx := FGrayedEnabledIndex;
+              end;
+            end
+            else
+            begin
+              case State of
+                cbChecked:   CustomImgIdx := FCheckedDisabledIndex;
+                cbUnChecked: CustomImgIdx := FUncheckedDisabledIndex;
+                cbGrayed:    CustomImgIdx := FGrayedDisabledIndex;
+              end;
+            end;
+            if((CustomImgIdx < 0) or (CustomImgIdx >= FImages.Count)) then
+              CustomImgIdx := -1;
+          end;
+          if(CustomImgIdx < 0) then
+          begin
+            ImgIdx := iiChecked;
+            if(Enabled or (csDesigning in ComponentState)) then
+            begin
+              if(FRadioStyle) then
+              begin
+                if State = cbChecked then
+                  ImgIdx := iiRadioChecked
+                else
+                  ImgIdx := iiRadioUnchecked;
+              end
+              else
+              begin
+                case State of
+                  cbChecked:   ImgIdx := iiChecked;
+                  cbUnChecked: ImgIdx := iiUnchecked;
+                  cbGrayed:
+                    begin
+                      case FGrayedStyle of
+                        gsNormal:           ImgIdx := iiGrayed;
+                        gsQuestionMark:     ImgIdx := iiQMark;
+                        gsBlueQuestionMark: ImgIdx := iiBlueQMark;
+                      end;
+                    end;
+                end;
+              end;
+            end
+            else
+            begin
+              if(FRadioStyle) then
+              begin
+                if State = cbChecked then
+                  ImgIdx := iiRadioDisChecked
+                else
+                  ImgIdx := iiRadioDisUnchecked;
+              end
+              else
+              begin
+                case State of
+                  cbChecked:   ImgIdx := iiDisChecked;
+                  cbUnChecked: ImgIdx := iiDisUnchecked;
+                  cbGrayed:
+                    begin
+                      if(FGrayedStyle = gsNormal) then
+                        ImgIdx := iiDisGrayed
+                      else
+                        ImgIdx := iiDisQMark;
+                    end;
+                end;
+              end;
+            end;
+            Bitmap := GetORCBBitmap(ImgIdx, FBlackColorMode);
+          end
+          else
+          begin
+            Bitmap := TBitmap.Create;
+            FImages.GetBitmap(CustomImgIdx, Bitmap);
+            TempBitMap := TRUE;
+          end;
+          Brush.Style := bsClear;
+          Font := Self.Font;
+
+          if Alignment = taLeftJustify then
+            Rect.Left := 2
+          else
+            Rect.Left := Bitmap.Width + 5;
+
+          if(FWordWrap) then
+            DrawOptions := DrawOptions or DT_WORDBREAK
+          else
+            DrawOptions := DrawOptions or DT_VCENTER or DT_SINGLELINE;
+
+          if(FWordWrap) then
+          begin
+            if Alignment = taLeftJustify then
+              Rect.Right := Width - Bitmap.Width - 3
+            else
+              Rect.Right := Width;
+            Rect.Top := 1;
+            Rect.Bottom := Height+1;
+            dec(Rect.Right);
+            FocRect := Rect;
+            TxtHeight := DrawText(Handle, PChar(Caption), Length(Caption), FocRect,
+                                                          DrawOptions or DT_CALCRECT);
+            FSingleLine := (TxtHeight = TextHeight(Caption));
+            Rect.Bottom := Rect.Top + TxtHeight + 1;
+            FocRect := Rect;
+          end
+          else
+          begin
+            TxtWidth := TextWidth(Caption);
+            //Get rid of ampersands that turn into underlines
+            i := 0;
+            l := length(Caption);
+            AWidth := TextWidth('&');
+            while(i < l) do
+            begin
+              inc(i);
+              // '&&' is an escape char that should display one '&' wide.
+              // This next part preserves the first '&' but drops all the others
+              if (Copy(Caption,i,2)<>'&&') and (Copy(Caption,i,1)='&') then
+                dec(TxtWidth,AWidth);
+            end;
+            Rect.Right := Rect.Left + TxtWidth;
+            TxtHeight := TextHeight(Caption);
+            if(TxtHeight < Bitmap.Height) then
+              TxtHeight := Bitmap.Height;
+            Rect.Top := ((((ClientHeight - TxtHeight) * 5) - 5) div 10);
+            Rect.Bottom := Rect.Top + TxtHeight + 1;
+            IntersectRect(FocRect, Rect, ClientRect);
+          end;
+        end;
+      finally
+        FCanvas.Handle := 0;
+      end;
+    end;
+  end;
+end;
+
+procedure TORCheckBox.DrawItem(const DrawItemStruct: TDrawItemStruct);
+var
+  R, FocusRect, TempRect: TRect;
+  Bitmap: TBitmap;
+  OldColor: TColor;
+  DrawOptions: UINT;
+  TempBitMap: boolean;
+
+begin
+  if(not (csDestroying in ComponentState)) then
+  begin
+    GetDrawData(DrawItemStruct.hDC, Bitmap, FocusRect, R, DrawOptions, TempBitMap);
+    try
+      FCanvas.Handle := DrawItemStruct.hDC;
+      try
+        with FCanvas do
+        begin
+          Brush.Color := Self.Color;
+          Brush.Style := bsSolid;
+          InflateRect(R, 1, 1);
+          FillRect(R);
+          InflateRect(R, -1, -1);
+
+          Brush.Style := bsClear;
+          Font := Self.Font;
+
+          if(Enabled or (csDesigning in ComponentState)) then
+          begin
+            DrawText(Handle, PChar(Caption), Length(Caption), FocusRect, DrawOptions);
+          end
+          else
+          begin
+            OldColor:=Font.Color;
+            try
+              if Ctl3D then
+              begin
+                OffsetRect(FocusRect, 1, 1);
+                Font.Color := clBtnHighlight;
+                DrawText(Handle, PChar(Caption), Length(Caption), FocusRect, DrawOptions);
+                OffsetRect(FocusRect, -1, -1);
+              end;
+              Font.Color:=clGrayText;
+              DrawText(Handle, PChar(Caption), Length(Caption), FocusRect, DrawOptions);
+            finally
+              Font.Color:=OldColor;
+            end;
+
+            Brush.Color := Self.Color;
+            Brush.Style := bsSolid;
+          end;
+
+          if((DrawItemStruct.itemState and ODS_FOCUS) <> 0) then
+          begin
+            InflateRect(FocusRect, 1, 1);
+            if(FFocusOnBox) then
+              //TempRect := Rect(0, 0, CheckWidth - 1, CheckWidth - 1)
+              TempRect := Rect(0, 0, CheckWidth + 2, CheckWidth + 5)
+            else
+              TempRect := FocusRect;
+            //UnionRect(Temp2Rect,ClipRect,TempRect);
+            //ClipRect := Temp2Rect;
+            Pen.Color := clWindowFrame;
+            Brush.Color := clBtnFace;
+            DrawFocusRect(TempRect);
+            InflateRect(FocusRect, -1, -1);
+          end;
+
+          if Alignment = taLeftJustify then
+            R.Left := ClientWidth - Bitmap.Width
+          else
+            R.Left := 0;
+          if(FWordWrap) then
+            R.Top:= FocusRect.Top
+          else
+          begin
+            R.Top:= ((ClientHeight - Bitmap.Height + 1) div 2) - 1;
+            if R.Top < 0 then R.Top := 0            
+          end;
+          Draw(R.Left, R.Top, Bitmap);
+        end;
+      finally
+        FCanvas.Handle := 0;
+      end;
+    finally
+      if(TempBitMap) then
+        Bitmap.Free;
+    end;
+  end;
+end;
+
+procedure TORCheckBox.SetGrayedStyle(Value: TGrayedStyle);
+begin
+  if(FGrayedStyle <> Value) then
+  begin
+    FGrayedStyle := Value;
+    if(State = cbGrayed) then Invalidate;
+  end;
+end;
+
+procedure TORCheckBox.WMLButtonDblClk(var Message: TWMLButtonDblClk);
+begin
+  Perform(WM_LBUTTONDOWN, Message.Keys, Longint(Message.Pos));
+end;
+
+procedure TORCheckBox.WMSize(var Message: TWMSize);
+begin
+  inherited;
+  if(FSizable) and (csDesigning in ComponentState) then
+    AutoAdjustSize;
+end;
+
+procedure TORCheckBox.BMSETCHECK(var Message: TMessage);
+var
+  cnt, i: integer;
+  cb: TORCheckBox;
+  Chk: boolean;
+
+begin
+  Message.Result := 0;
+
+  if(assigned(Parent) and (FGroupIndex <> 0)) then
+  begin
+    Chk := Checked;
+    if(Chk or (not FAllowAllUnchecked)) then
+    begin
+      cnt := 0;
+      for i := 0 to Parent.ControlCount-1 do
+      begin
+        if(Parent.Controls[i] is TORCheckBox) then
+        begin
+          cb := TORCheckBox(Parent.Controls[i]);
+          if(cb <> Self) then
+          begin
+            if(cb.Checked and (cb.FGroupIndex = FGroupIndex)) then
+            begin
+              if Chk then
+                cb.Checked := FALSE
+              else
+                inc(cnt);
+            end;
+          end;
+        end;
+      end;
+      if(not Chk) and (Cnt = 0) then
+        Checked := TRUE;
+    end;
+  end;
+  UpdateAssociate;
+  Invalidate;
+end;
+
+procedure TORCheckBox.SetWordWrap(const Value: boolean);
+begin
+  if(FWordWrap <> Value) then
+  begin
+    FWordWrap := Value;
+    AutoAdjustSize;
+    invalidate;
+  end;
+end;
+
+procedure TORCheckBox.SetAutoSize(Value: boolean);
+begin
+  if(FAutoSize <> Value) then
+  begin
+    FAutoSize := Value;
+    AutoAdjustSize;
+    invalidate;
+  end;
+end;
+
+procedure TORCheckBox.SetBlackColorMode(Value: boolean);
+begin
+  if FBlackColorMode <> Value then
+  begin
+    FBlackColorMode := Value;
+    Invalidate;
+  end;
+end;
+
+procedure TORCheckBox.AutoAdjustSize;
+var
+  R, FocusRect: TRect;
+  Bitmap: TBitmap;
+  DrawOptions: UINT;
+  TempBitMap: boolean;
+  DC: HDC;
+  SaveFont: HFont;
+
+begin
+  if(FAutoSize and (([csDestroying, csLoading] * ComponentState) = [])) then
+  begin
+    FSizable := TRUE;
+    DC := GetDC(0);
+    try
+      SaveFont := SelectObject(DC, Font.Handle);
+      try
+        GetDrawData(DC, Bitmap, FocusRect, R, DrawOptions, TempBitMap);
+      finally
+        SelectObject(DC, SaveFont);
+      end;
+    finally
+      ReleaseDC(0, DC);
+    end;
+    if(FocusRect.Left   <> R.Left  ) or
+      (FocusRect.Right  <> R.Right ) or
+      (FocusRect.Top    <> R.Top   ) or
+      (FocusRect.Bottom <> R.Bottom) or
+      (R.Right <> ClientRect.Right) or
+      (R.Bottom <> ClientRect.Bottom) then
+    begin
+      FocusRect := R;
+      if Alignment = taLeftJustify then
+      begin
+        dec(R.Left,2);
+        inc(R.Right,Bitmap.Width + 3);
+      end
+      else
+        dec(R.Left,Bitmap.Width + 5);
+      Width := R.Right-R.Left+1;
+      Height :=  R.Bottom-R.Top+2;
+    end;
+  end;
+end;
+
+function TORCheckBox.GetCaption: TCaption;
+begin
+  Result := inherited Caption;
+end;
+
+procedure TORCheckBox.SetCaption(const Value: TCaption);
+begin
+  if(inherited Caption <> Value) then
+  begin
+    inherited Caption := Value;
+    AutoAdjustSize;
+    invalidate;
+  end;
+end;
+
+procedure TORCheckBox.SetAllowAllUnchecked(const Value: boolean);
+begin
+  FAllowAllUnchecked := Value;
+  SyncAllowAllUnchecked;
+end;
+
+procedure TORCheckBox.SetGroupIndex(const Value: integer);
+begin
+  FGroupIndex := Value;
+  if(Value <> 0) and (csDesigning in ComponentState) and (not (csLoading in ComponentState)) then
+    SetRadioStyle(TRUE);
+  SyncAllowAllUnchecked;
+end;
+
+procedure TORCheckBox.SyncAllowAllUnchecked;
+var
+  i: integer;
+  cb: TORCheckBox;
+
+begin
+  if(assigned(Parent) and (FGroupIndex <> 0)) then
+  begin
+    for i := 0 to Parent.ControlCount-1 do
+    begin
+      if(Parent.Controls[i] is TORCheckBox) then
+      begin
+        cb := TORCheckBox(Parent.Controls[i]);
+        if((cb <> Self) and (cb.FGroupIndex = FGroupIndex)) then
+          cb.FAllowAllUnchecked := FAllowAllUnchecked;
+      end;
+    end;
+  end;
+end;
+
+procedure TORCheckBox.SetParent(AParent: TWinControl);
+begin
+  inherited;
+  SyncAllowAllUnchecked;
+end;
+
+procedure TORCheckBox.SetRadioStyle(const Value: boolean);
+begin
+  FRadioStyle := Value;
+  Invalidate;
+end;
+
+procedure TORCheckBox.SetAssociate(const Value: TControl);
+begin
+  if(FAssociate <> Value) then
+  begin
+    if(assigned(FAssociate)) then
+      FAssociate.RemoveFreeNotification(Self);
+    FAssociate := Value;
+    if(assigned(FAssociate)) then
+    begin
+      FAssociate.FreeNotification(Self);
+      UpdateAssociate;
+    end;
+  end;
+end;
+
+procedure TORCheckBox.UpdateAssociate;
+
+  procedure EnableCtrl(Ctrl: TControl; DoCtrl: boolean);
+  var
+    i: integer;
+    DoIt: boolean;
+
+  begin
+    if DoCtrl then
+      Ctrl.Enabled := Checked;
+
+    // added (csAcceptsControls in Ctrl.ControlStyle) below to prevent disabling of
+    // child sub controls, like the TBitBtn in the TORComboBox.  If the combo box is
+    // already disabled, we don't want to disable the button as well - when we do, we
+    // lose the disabled glyph that is stored on that button for the combo box.
+
+    if(Ctrl is TWinControl) and (csAcceptsControls in Ctrl.ControlStyle) then
+    begin
+      for i := 0 to TWinControl(Ctrl).ControlCount-1 do
+      begin
+        if DoCtrl then
+          DoIt := TRUE
+        else
+          DoIt := (TWinControl(Ctrl).Controls[i] is TWinControl);
+        if DoIt then
+          EnableCtrl(TWinControl(Ctrl).Controls[i], TRUE);
+      end;
+    end;
+  end;
+
+begin
+  if(assigned(FAssociate)) then
+    EnableCtrl(FAssociate, FALSE);
+end;
+
+procedure TORCheckBox.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited;
+  if(AComponent = FAssociate) and (Operation = opRemove) then
+    FAssociate := nil;
+end;
+
+procedure TORCheckBox.SetFocusOnBox(value: boolean);
+begin
+  FFocusOnBox := value;
+  invalidate;
+end;
+
+procedure TORCheckBox.BMGetCheck(var Message: TMessage);
+begin
+  {This Allows JAWS to report the state when tabbed into or using the read object
+  keys (Ins+Tab)}
+  {if Self.GrayedStyle = gsBlueQuestionMark then
+    Message.Result := BST_INDETERMINATE
+  else}
+  if Self.Checked then
+    Message.Result := BST_CHECKED
+  else
+    Message.Result := BST_UNCHECKED;
+end;
+
+procedure TORCheckBox.BMGetState(var Message: TMessage);
+begin
+  //This gives JAWS ability to read state when spacebar is pressed.
+  //Commented out because JAWS reads states, but inversly. Working with freedom...
+{  if Self.Checked then
+    Message.Result := BST_CHECKED
+  else
+    Message.Result := BST_UNCHECKED;}
+end;
+
+{ TORListView }
+
+procedure TORListView.WMNotify(var Message: TWMNotify);
+begin
+  inherited;
+  with Message.NMHdr^ do
+    case code of
+      HDN_BEGINTRACK, HDN_TRACK, HDN_ENDTRACK:
+        with PHDNotify(Pointer(Message.NMHdr))^, PItem^ do
+          if (Mask and HDI_WIDTH) <> 0 then
+          begin
+            if(Column[Item].MinWidth > 0) and (cxy < Column[Item].MinWidth) then
+              cxy := Column[Item].MinWidth;
+            if(Column[Item].MaxWidth > 0) and (cxy > Column[Item].MaxWidth) then
+              cxy := Column[Item].MaxWidth;
+            Column[Item].Width := cxy;
+          end;
+    end;
+end;
+
+procedure TORListView.LVMSetColumn(var Message: TMessage);
+var
+  Changed: boolean;
+  NewW, idx: integer;
+
+begin
+  Changed := FALSE;
+  NewW := 0;
+  idx := 0;
+  with Message, TLVColumn(pointer(LParam)^) do
+  begin
+    if(cx < Column[WParam].MinWidth) then
+    begin
+      NewW := Column[WParam].MinWidth;
+      Changed := TRUE;
+      idx := WParam;
+    end;
+    if(cx > Column[WParam].MaxWidth) then
+    begin
+      NewW := Column[WParam].MaxWidth;
+      Changed := TRUE;
+      idx := WParam;
+    end;
+  end;
+  inherited;
+  if(Changed) then
+    Column[idx].Width := NewW;
+end;
+
+procedure TORListView.LVMSetColumnWidth(var Message: TMessage);
+var
+  Changed: boolean;
+  NewW, idx: integer;
+
+begin
+  Changed := FALSE;
+  NewW := 0;
+  idx := 0;
+  with Message do
+  begin
+    if(LParam < Column[WParam].MinWidth) then
+    begin
+      LParam := Column[WParam].MinWidth;
+      Changed := TRUE;
+      NewW := LParam;
+      idx := WParam;
+    end;
+    if(LParam > Column[WParam].MaxWidth) then
+    begin
+      LParam := Column[WParam].MaxWidth;
+      Changed := TRUE;
+      NewW := LParam;
+      idx := WParam;
+    end;
+  end;
+  inherited;
+  if(Changed) then
+    Column[idx].Width := NewW;
+end;
+
+{ TORComboPanelEdit }
+
+destructor TORComboPanelEdit.Destroy;
+begin
+  if(assigned(FCanvas)) then
+    FCanvas.Free;
+  inherited;
+end;
+
+procedure TORComboPanelEdit.Paint;
+var
+  DC: HDC;
+  R: TRect;
+
+begin
+  inherited;
+  if(FFocused) then
+  begin
+    if(not assigned(FCanvas)) then
+      FCanvas := TControlCanvas.Create;
+    DC := GetWindowDC(Handle);
+    try
+      FCanvas.Handle := DC;
+      R := ClientRect;
+      InflateRect(R, -1, -1);
+      FCanvas.DrawFocusRect(R);
+    finally
+      ReleaseDC(Handle, DC);
+    end;
+  end;
+end;
+
+{ TKeyClickPanel ----------------------------------------------------------------------------- }
+procedure TKeyClickPanel.KeyDown(var Key: Word; Shift: TShiftState);
+begin
+  case Key of
+    VK_LBUTTON, VK_RETURN, VK_SPACE:
+      Click;
+  end;
+end;
+
+{ TKeyClickRadioGroup }
+
+procedure TKeyClickRadioGroup.Click;
+begin
+  inherited;
+  TabStop := Enabled and Visible and (ItemIndex = -1);
+end;
+
+constructor TKeyClickRadioGroup.Create(AOwner: TComponent);
+begin
+  inherited;
+  TabStop := Enabled and Visible and (ItemIndex = -1);
+end;
+
+procedure TKeyClickRadioGroup.KeyDown(var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  case Key of
+    VK_RETURN, VK_SPACE:
+      if ItemIndex = -1 then begin
+        ItemIndex := 0;
+        Click;
+        if ControlCount > 0 then begin
+          TWinControl(Controls[0]).SetFocus;
+        end;
+        Key := 0;
+      end;
+  end;
+end;
+
+{ TCaptionListBox }
+
+procedure TCaptionListBox.DoEnter;
+begin
+  inherited;
+  if HintOnItem then
+    FHoverItemPos := -1; //CQ: 7178 & 9911 - used as last item index for ListBox
+end;
+
+function TCaptionListBox.GetCaption: string;
+begin
+  if not Assigned(FCaptionComponent) then
+    result := ''
+  else
+    result := FCaptionComponent.Caption;
+end;
+
+function TCaptionListBox.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+
+procedure TCaptionListBox.MoveFocusUp;
+begin
+  if ItemIndex > 0 then
+    Perform(LB_SETCARETINDEX, ItemIndex - 1, 0);
+end;
+
+procedure TCaptionListBox.MoveFocusDown;
+begin
+  if ItemIndex < (Items.Count-1) then
+    Perform(LB_SETCARETINDEX, ItemIndex + 1, 0);
+end;
+
+procedure TCaptionListBox.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaptionComponent) then begin
+    FCaptionComponent := TStaticText.Create(self);
+    FCaptionComponent.AutoSize := False;
+    FCaptionComponent.Height := 0;
+    FCaptionComponent.Width := 0;
+    FCaptionComponent.Visible := True;
+    FCaptionComponent.Parent := Parent;
+    FCaptionComponent.BringToFront;
+  end;
+  FCaptionComponent.Caption := Value;
+end;
+
+function TCaptionListBox.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+procedure TCaptionListBox.WMKeyDown(var Message: TWMKeyDown);
+var
+  IsSelected: LongBool;
+begin
+  if Boolean(Hi(GetKeyState(VK_CONTROL))) and MultiSelect then
+    case Message.CharCode of
+      VK_SPACE:
+        begin
+          IsSelected := LongBool(Perform(LB_GETSEL, ItemIndex, 0));
+          Perform(LB_SETSEL, Longint(not IsSelected), ItemIndex);
+        end;
+      VK_LEFT, VK_UP: MoveFocusUp;
+      VK_RIGHT, VK_DOWN: MoveFocusDown;
+      else inherited;
+    end
+  else inherited;
+end;
+
+procedure TCaptionListBox.WMMouseMove(var Message: TWMMouseMove);
+var
+  i : integer;
+begin
+  inherited;
+  //CQ: 7178 & 9911 - FHoverItemPos should be set to -1 in OnEnter
+  //Make the TListBox's hint contain the contents of the listbox Item the mouse is currently over
+  if HintOnItem then
+  begin
+    i := ItemAtPos(Point(Message.XPos, Message.YPos), true);
+    if i <> FHoverItemPos then
+      Application.CancelHint;
+    if i = -1 then
+      Hint := ''
+    else
+      Hint := Items[i];
+    FHoverItemPos := i;
+  end;
+end;
+
+procedure TCaptionListBox.WMRButtonUp(var Message: TWMRButtonUp);
+{ When the RightClickSelect property is true, this routine is used to select an item }
+var
+  APoint: TPoint;
+  i: integer;
+begin
+  if FRightClickSelect then with Message do
+  begin
+    APoint := Point(XPos, YPos);
+    // if the mouse was clicked in the client area set ItemIndex...
+    if PtInRect(ClientRect, APoint) then
+    begin
+      ItemIndex := ItemAtPos(APoint,True);
+      // ...but not if its just going to deselect the current item
+      if ItemIndex > -1 then
+      begin
+        Items.BeginUpdate;
+        try
+          if not Selected[ItemIndex] then
+            for i := 0 to Items.Count-1 do
+              Selected[i] := False;
+          Selected[ItemIndex] := True;
+        finally
+          Items.EndUpdate;
+        end;
+      end;
+    end;
+  end;
+  inherited;
+end;
+
+{ TCaptionCheckListBox }
+
+function TCaptionCheckListBox.GetCaption: string;
+begin
+  if not Assigned(FCaptionComponent) then
+    result := ''
+  else
+    result := FCaptionComponent.Caption;
+end;
+
+function TCaptionCheckListBox.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+procedure TCaptionCheckListBox.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaptionComponent) then begin
+    FCaptionComponent := TStaticText.Create(self);
+    FCaptionComponent.AutoSize := False;
+    FCaptionComponent.Height := 0;
+    FCaptionComponent.Width := 0;
+    FCaptionComponent.Visible := True;
+    FCaptionComponent.Parent := Parent;
+    FCaptionComponent.BringToFront;
+  end;
+  FCaptionComponent.Caption := Value;
+end;
+
+function TCaptionCheckListBox.SupportsDynamicProperty(
+  PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+{ TCaptionMemo }
+
+function TCaptionMemo.GetCaption: string;
+begin
+  if not Assigned(FCaptionComponent) then
+    result := ''
+  else
+    result := FCaptionComponent.Caption;
+end;
+
+function TCaptionMemo.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+procedure TCaptionMemo.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaptionComponent) then begin
+    FCaptionComponent := TStaticText.Create(self);
+    FCaptionComponent.AutoSize := False;
+    FCaptionComponent.Height := 0;
+    FCaptionComponent.Width := 0;
+    FCaptionComponent.Visible := True;
+    FCaptionComponent.Parent := Parent;
+    FCaptionComponent.BringToFront;
+  end;
+  FCaptionComponent.Caption := Value;
+end;
+
+function TCaptionMemo.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+{ TCaptionEdit }
+
+function TCaptionEdit.GetCaption: string;
+begin
+  if not Assigned(FCaptionComponent) then
+    result := ''
+  else
+    result := FCaptionComponent.Caption;
+end;
+
+function TCaptionEdit.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+procedure TCaptionEdit.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaptionComponent) then begin
+    FCaptionComponent := TStaticText.Create(self);
+    FCaptionComponent.AutoSize := False;
+    FCaptionComponent.Height := 0;
+    FCaptionComponent.Width := 0;
+    FCaptionComponent.Visible := True;
+    FCaptionComponent.Parent := Parent;
+    FCaptionComponent.BringToFront;
+  end;
+  FCaptionComponent.Caption := Value;
+end;
+
+function TCaptionEdit.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+{ TCaptionRichEdit }
+
+function TCaptionRichEdit.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := FCaption
+  else
+    Result := '';
+end;
+
+
+function TCaptionRichEdit.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+{ TCaptionTreeView}
+
+function TCaptionTreeView.GetCaption: string;
+begin
+    result := inherited Caption;
+end;
+
+function TCaptionTreeView.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+procedure TCaptionTreeView.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaptionComponent) then begin
+    FCaptionComponent := TStaticText.Create(self);
+    FCaptionComponent.AutoSize := False;
+    FCaptionComponent.Height := 0;
+    FCaptionComponent.Width := 0;
+    FCaptionComponent.Visible := True;
+    FCaptionComponent.Parent := Parent;
+    FCaptionComponent.BringToFront;
+  end;
+  FCaptionComponent.Caption := Value;
+  inherited Caption := Value;
+end;
+
+function TCaptionTreeView.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+{ TCaptionComboBox }
+
+function TCaptionComboBox.GetCaption: string;
+begin
+  if not Assigned(FCaptionComponent) then
+    result := ''
+  else
+    result := FCaptionComponent.Caption;
+end;
+
+function TCaptionComboBox.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+procedure TCaptionComboBox.SetCaption(const Value: string);
+begin
+  if not Assigned(FCaptionComponent) then begin
+    FCaptionComponent := TStaticText.Create(self);
+    FCaptionComponent.AutoSize := False;
+    FCaptionComponent.Height := 0;
+    FCaptionComponent.Width := 0;
+    FCaptionComponent.Visible := True;
+    FCaptionComponent.Parent := Parent;
+    FCaptionComponent.BringToFront;
+  end;
+  FCaptionComponent.Caption := Value;
+end;
+
+function TCaptionComboBox.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+{ TORAlignSpeedButton }
+
+procedure TORAlignSpeedButton.Paint;
+var
+  Rect: TRect;
+begin
+  inherited;
+  if (Parent <> nil) and (Parent is TKeyClickPanel) and TKeyClickPanel(Parent).Focused then
+  begin
+    Rect := ClientRect;
+    InflateRect(Rect, -3, -3);
+    Canvas.Brush.Color := Color;
+    Canvas.DrawFocusRect(Rect);
+  end;
+end;
+
+{ TCaptionStringGrid }
+
+{I may have messed up my Windows.pas file, but mine defines NotifyWinEvent without a stdcall.}
+procedure GoodNotifyWinEvent; external user32 name 'NotifyWinEvent';
+
+function TCaptionStringGrid.ColRowToIndex(Col, Row: Integer): integer;
+begin
+  result := (ColCount - FixedCols) * (Row - FixedRows) +
+      (Col - FixedCols) + 1;
+end;
+
+function TCaptionStringGrid.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := FCaption
+  else
+    Result := '';
+end;
+
+procedure TCaptionStringGrid.IndexToColRow(index: integer; var Col,
+  Row: integer);
+begin
+  Row := (index-1) div (ColCount - FixedCols) + FixedRows;
+  Col := (index-1) mod (ColCount - FixedCols) + FixedCols;
+end;
+
+procedure TCaptionStringGrid.KeyUp(var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  {Look for all of the grid navigation keys}
+  if (Key in [VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN]) and (Shift = []) or
+    (Key = VK_TAB) and (Shift <= [ssShift]) then
+    GoodNotifyWinEvent(EVENT_OBJECT_FOCUS, Handle, integer(OBJID_CLIENT),
+      ColRowToIndex(Col,Row));
+end;
+
+
+function TCaptionStringGrid.SupportsDynamicProperty(
+  PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+function IsAMouseButtonDown : boolean;
+begin
+  if Boolean(Hi(GetKeyState(VK_MBUTTON))) or
+     Boolean(Hi(GetKeyState(VK_LBUTTON))) or
+     Boolean(Hi(GetKeyState(VK_RBUTTON))) then
+    Result := true
+  else
+    Result := false;
+end;
+
+procedure TORComboBox.SetNumForMatch(const NumberForMatch: integer);
+begin
+  if NumberForMatch < 1 then
+    FCharsNeedMatch := 1
+  else if NumberForMatch > 15 then
+    FCharsNeedMatch := 15
+  else
+    FCharsNeedMatch := NumberForMatch;
+end;
+
+procedure TORComboBox.SetUniqueAutoComplete(const Value: Boolean);
+begin
+  FUniqueAutoComplete := Value;
+end;
+
+function TORListBox.VerifyUnique(SelectIndex: Integer; iText: String): integer;
+var
+  i : integer;
+  counter : integer;
+begin
+  Result := SelectIndex;
+    if LongList then
+    begin
+      //Implemented for CQ: 10092, PSI-04-057
+      //asume long lists are alphabetically ordered...
+      if CompareText(iText, Copy(DisplayText[SelectIndex+1], 1, Length(iText))) = 0 then
+        Result := -1;
+    end
+    else //Not a LongList
+    begin
+      counter := 0;
+      for i := 0 to Items.Count-1 do
+        if CompareText(iText, Copy(DisplayText[i], 1, Length(iText))) = 0 then
+          Inc(counter);
+      if counter > 1 then
+        Result := -1; 
+    end;
+  FFocusIndex := Result;
+  ItemIndex := Result; 
+end;
+
+//This procedure sets the Text property equal to the TextToMatch parameter, then calls
+//FwdChangeDelayed which will perform an auto-completion on the text.
+procedure TORComboBox.SetTextAutoComplete(TextToMatch: String);
+begin
+  Text := TextToMatch;
+  SelStart := Length(Text);
+  FwdChangeDelayed;
+end;
+
+{ TCaptionListView }
+
+function TCaptionListView.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := Caption
+  else
+    Result := '';
+end;
+
+function TCaptionListView.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+initialization
+  //uItemTip := TItemTip.Create(Application);  // all listboxes share a single ItemTip window
+  uItemTipCount := 0;
+  uNewStyle := Lo(GetVersion) >= 4;          // True = Win95 interface, otherwise old interface
+  FillChar(ORCBImages, SizeOf(ORCBImages), 0);
+
+finalization
+  //uItemTip.Free;                           // don't seem to need this - called by Application
+  DestroyORCBBitmaps;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlsDsgn.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlsDsgn.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlsDsgn.pas	(revision 1676)
@@ -0,0 +1,165 @@
+unit ORCtrlsDsgn;                                    // Oct 26, 1997 @ 10:00am
+
+// To Do:  eliminate topindex itemtip on mousedown (seen when choosing clinic pts)
+
+interface  // --------------------------------------------------------------------------------
+
+uses Classes, DesignIntf, DesignEditors, TypInfo, ORCtrls, SysUtils;
+
+type
+  TORImageIndexesPropertyEditor = class(TPropertyEditor)
+  public
+    procedure Modified;
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetProperties(Proc: TGetPropProc); override;
+    function GetValue: string; override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TORImageIndexesElementPropertyEditor = class(TNestedProperty)
+  private
+    FElement: Integer;
+    FParent: TPropertyEditor;
+  protected
+    constructor Create(Parent: TPropertyEditor; AElement: Integer); reintroduce;
+    function ParentImgIdx(Idx: integer): TORCBImageIndexes;
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    function GetName: string; override;
+    function GetValue: string; override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+procedure Register;
+
+implementation
+  
+{ TORImageIndexesPropertyEditor }
+
+type
+  TExposedORCheckBox = class(TORCheckBox)
+  public
+    property CustomImages;
+  end;
+
+procedure TORImageIndexesPropertyEditor.Modified;
+begin
+  inherited Modified;
+end;
+
+function TORImageIndexesPropertyEditor.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paMultiSelect, paSubProperties, paRevertable];
+end;
+
+procedure TORImageIndexesPropertyEditor.GetProperties(Proc: TGetPropProc);
+var
+  i: Integer;
+
+begin
+  for i := 0 to 5 do
+    Proc(TORImageIndexesElementPropertyEditor.Create(Self, i));
+end;
+
+function TORImageIndexesPropertyEditor.GetValue: string;
+begin
+  Result := GetStrValue;
+end;
+
+procedure TORImageIndexesPropertyEditor.SetValue(const Value: string);
+begin
+  SetStrValue(Value);
+end;
+
+{ TORImageIndexesElementPropertyEditor }
+
+constructor TORImageIndexesElementPropertyEditor.Create(Parent: TPropertyEditor; AElement: Integer);
+begin
+  inherited Create(Parent);
+  FElement := AElement;
+  FParent := Parent;
+end;
+
+function TORImageIndexesElementPropertyEditor.ParentImgIdx(Idx: integer): TORCBImageIndexes;
+begin
+  if(FParent.GetComponent(Idx) is TORCheckBox) then
+    Result := TExposedORCheckBox(FParent.GetComponent(Idx)).CustomImages
+  else
+{  if(FParent.GetComponent(Idx) is TORListView) then
+    Result := (FParent.GetComponent(Idx) as TORGEListView).FCustomImages
+  else}
+    Result := nil;
+end;
+
+function TORImageIndexesElementPropertyEditor.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paMultiSelect, paRevertable];
+end;
+
+function TORImageIndexesElementPropertyEditor.GetName: string;
+begin
+  case FElement of
+    0: Result := 'CheckedEnabledIndex';
+    1: Result := 'GrayedEnabledIndex';
+    2: Result := 'UncheckedEnabledIndex';
+    3: Result := 'CheckedDisabledIndex';
+    4: Result := 'GrayedDisabledIndex';
+    5: Result := 'UncheckedDisabledIndex';
+  end;
+end;
+
+function TORImageIndexesElementPropertyEditor.GetValue: string;
+var
+  i :integer;
+
+begin
+  for i := 0 to PropCount-1 do
+  begin
+    with ParentImgIdx(i) do
+    case FElement of
+      0: Result := IntToStr(CheckedEnabledIndex);
+      1: Result := IntToStr(GrayedEnabledIndex);
+      2: Result := IntToStr(UncheckedEnabledIndex);
+      3: Result := IntToStr(CheckedDisabledIndex);
+      4: Result := IntToStr(GrayedDisabledIndex);
+      5: Result := IntToStr(UncheckedDisabledIndex);
+    end;
+  end;
+end;
+
+procedure TORImageIndexesElementPropertyEditor.SetValue(const Value: string);
+var
+  v, i: integer;
+
+begin
+  v := StrToIntDef(Value,-1);
+  for i := 0 to PropCount-1 do
+  begin
+    with ParentImgIdx(i) do
+    case FElement of
+      0: CheckedEnabledIndex := v;
+      1: GrayedEnabledIndex := v;
+      2: UncheckedEnabledIndex := v;
+      3: CheckedDisabledIndex := v;
+      4: GrayedDisabledIndex := v;
+      5: UncheckedDisabledIndex := v;
+    end;
+  end;
+  (FParent as TORImageIndexesPropertyEditor).Modified;
+end;
+
+procedure Register;
+{ used by Delphi to put components on the Palette }
+begin
+  RegisterComponents('CPRS',
+    [TORListBox, TORComboBox, TORAutoPanel, TOROffsetLabel, TORAlignEdit,
+    TORAlignButton, TORAlignSpeedButton, TORTreeView, TORCheckBox, TORListView,
+    TKeyClickPanel, TKeyClickRadioGroup, TCaptionListBox, TCaptionCheckListBox,
+    TCaptionMemo, TCaptionEdit, TCaptionTreeView, TCaptionComboBox,
+    TCaptionListView, TCaptionStringGrid, TCaptionRichEdit{, TORAlignBitBtn, TORCalendar}]);
+  RegisterPropertyEditor( TypeInfo(string), TORCheckBox, 'ImageIndexes',
+                          TORImageIndexesPropertyEditor);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlsVA508Compatibility.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlsVA508Compatibility.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORCtrlsVA508Compatibility.pas	(revision 1676)
@@ -0,0 +1,618 @@
+unit ORCtrlsVA508Compatibility;
+
+interface
+
+uses
+  Forms, Controls, StdCtrls, SysUtils, Windows, VA508AccessibilityManager;
+
+type
+  TORCheckBox508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+  end;
+
+  TLBMgr = class
+  private
+    function GetIdx(Component: TWinControl): integer;
+  public
+    function GetComponentName(Component: TWinControl): string; virtual; abstract;
+    function GetState(Component: TWinControl): string; virtual; abstract;
+    function GetItemInstructions(Component: TWinControl): string; virtual; abstract;
+  end;
+
+  TORListBox508Manager = class(TVA508ManagedComponentClass)
+  var
+    FCheckBoxes: TLBMgr;
+    FMultiSelect: TLBMgr;
+    FStandard: TLBMgr;
+    FCurrent: TLBMgr;
+    function GetCurrent(Component: TWinControl): TLBMgr;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+    function GetItem(Component: TWinControl): TObject; override;
+    function GetItemInstructions(Component: TWinControl): string; override;
+    function GetValue(Component: TWinControl): string; override;
+  end;
+
+  TVA508TORDateComboComplexManager = class(TVA508ComplexComponentManager)
+  public
+    constructor Create;
+    procedure Refresh(Component: TWinControl;
+                      AccessibilityManager: TVA508AccessibilityManager); override;
+  end;
+
+//  TVA508TORComboBoxComplexManager = class(TVA508ComplexComponentManager)
+//  public
+//    constructor Create;
+//    procedure Refresh(Component: TWinControl;
+//                      AccessibilityManager: TVA508AccessibilityManager); override;
+//  end;
+
+{  TVA508TORDateBoxComplexManager = class(TVA508ComplexComponentManager)
+  public
+    constructor Create;
+    procedure Refresh(Component: TWinControl;
+                      AccessibilityManager: TVA508AccessibilityManager); override;
+  end;}
+
+  TORComboBox508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+  end;
+
+  TORDayCombo508Manager = class(TORComboBox508Manager)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+  TORMonthCombo508Manager = class(TORComboBox508Manager)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+  TORYearEdit508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+  TORDateButton508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetCaption(Component: TWinControl): string; override;
+  end;
+
+//  TORComboEdit508Manager = class(TVA508ManagedComponentClass)
+//  public
+//    constructor Create; override;
+//    function Redirect(Component: TWinControl; var ManagedType: TManagedType): TWinControl; override;
+//  end;
+
+implementation
+
+uses VA508DelphiCompatibility, ORCtrls, ORDtTm, VA508AccessibilityRouter,
+  VA508AccessibilityConst, ORDtTmRng;
+
+function GetEditBox(ComboBox: TORComboBox): TORComboEdit;
+var
+  i: integer;
+
+begin
+  Result := nil;
+  for i := 0 to ComboBox.ControlCount - 1 do
+  begin
+    if ComboBox.Controls[i] is TORComboEdit then
+    begin
+      Result := TORComboEdit(ComboBox.Controls[i]);
+      exit;
+    end;
+  end;
+end;
+
+function ORComboBoxAlternateHandle(Component: TWinControl): HWnd;
+var
+  eBox: TORComboEdit;
+  cBox: TORComboBox;
+
+begin
+  cBox := TORComboBox(Component);
+  eBox := GetEditBox(cBox);
+  if assigned(eBox) then
+    Result := eBox.Handle
+  else
+    Result := cBox.Handle;
+end;
+
+type
+  TVA508RegistrationScreenReader = class(TVA508ScreenReader);
+{ Registration }
+
+procedure RegisterORComponents;
+begin
+  RegisterAlternateHandleComponent(TORComboBox, ORComboBoxAlternateHandle);
+
+  RegisterManagedComponentClass(TORCheckBox508Manager.Create);
+  RegisterManagedComponentClass(TORComboBox508Manager.Create);
+  RegisterManagedComponentClass(TORListBox508Manager.Create);
+  RegisterManagedComponentClass(TORDayCombo508Manager.Create);
+  RegisterManagedComponentClass(TORMonthCombo508Manager.Create);
+  RegisterManagedComponentClass(TORYearEdit508Manager.Create);
+  RegisterManagedComponentClass(TORDateButton508Manager.Create);
+//  RegisterManagedComponentClass(TORComboEdit508Manager.Create);
+
+  RegisterComplexComponentManager(TVA508TORDateComboComplexManager.Create);
+//  RegisterComplexComponentManager(TVA508TORComboBoxComplexManager.Create);
+//  RegisterComplexComponentManager(TVA508TORDateBoxComplexManager.Create);
+
+
+  with TVA508RegistrationScreenReader(GetScreenReader) do
+  begin
+//---TORCalendar ???
+//---TORPopupMenu ???
+//---TORMenuItem ???
+
+    RegisterCustomClassBehavior(TORTreeView.ClassName, CLASS_BEHAVIOR_TREE_VIEW);
+    RegisterCustomClassBehavior(TORAlignEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TORAlignButton.ClassName, CLASS_BEHAVIOR_BUTTON);
+    RegisterCustomClassBehavior(TORAlignSpeedButton.ClassName, CLASS_BEHAVIOR_BUTTON);
+    RegisterCustomClassBehavior(TORCheckBox.ClassName, CLASS_BEHAVIOR_CHECK_BOX);
+    RegisterCustomClassBehavior(TKeyClickPanel.ClassName, CLASS_BEHAVIOR_BUTTON);
+    RegisterCustomClassBehavior(TKeyClickRadioGroup.ClassName, CLASS_BEHAVIOR_GROUP_BOX);
+    RegisterCustomClassBehavior(TCaptionTreeView.ClassName, CLASS_BEHAVIOR_TREE_VIEW);
+    RegisterCustomClassBehavior(TCaptionMemo.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TCaptionEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TCaptionRichEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TOROffsetLabel.ClassName, CLASS_BEHAVIOR_STATIC_TEXT);
+
+    RegisterCustomClassBehavior(TCaptionComboBox.ClassName, CLASS_BEHAVIOR_COMBO_BOX);
+    RegisterCustomClassBehavior(TORComboEdit.ClassName, CLASS_BEHAVIOR_EDIT_COMBO);
+    RegisterCustomClassBehavior(TORComboBox.ClassName, CLASS_BEHAVIOR_COMBO_BOX);
+    RegisterCustomClassBehavior(TORListBox.ClassName, CLASS_BEHAVIOR_LIST_BOX);
+    RegisterCustomClassBehavior(TCaptionCheckListBox.ClassName, CLASS_BEHAVIOR_LIST_BOX);
+    RegisterCustomClassBehavior(TCaptionStringGrid.ClassName, CLASS_BEHAVIOR_LIST_BOX);
+
+    RegisterCustomClassBehavior(TORDateEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TORDayCombo.ClassName, CLASS_BEHAVIOR_COMBO_BOX);
+    RegisterCustomClassBehavior(TORMonthCombo.ClassName, CLASS_BEHAVIOR_COMBO_BOX);
+    RegisterCustomClassBehavior(TORYearEdit.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TORDateBox.ClassName, CLASS_BEHAVIOR_EDIT);
+    RegisterCustomClassBehavior(TORDateCombo.ClassName, CLASS_BEHAVIOR_GROUP_BOX);
+
+    RegisterCustomClassBehavior(TORListView.ClassName, CLASS_BEHAVIOR_LIST_VIEW);
+    RegisterCustomClassBehavior(TCaptionListView.ClassName, CLASS_BEHAVIOR_LIST_VIEW);
+    RegisterCustomClassBehavior(TCaptionListBox.ClassName, CLASS_BEHAVIOR_LIST_BOX);
+
+    RegisterCustomClassBehavior(TORDateRangeDlg.ClassName, CLASS_BEHAVIOR_DIALOG);
+    RegisterCustomClassBehavior(TORfrmDtTm.ClassName, CLASS_BEHAVIOR_DIALOG);//called by TORDateTimeDlg
+  end;
+end;
+
+{ TORCheckBox508Manager }
+
+constructor TORCheckBox508Manager.Create;
+begin
+  inherited Create(TORCheckBox, [mtComponentName, mtInstructions, mtState, mtStateChange], TRUE);
+end;
+
+function TORCheckBox508Manager.GetComponentName(Component: TWinControl): string;
+begin
+  with TORCheckBox(Component) do
+  begin
+    if RadioStyle then
+      Result := 'radio button'
+    else
+      Result := VA508DelphiCompatibility.GetCheckBoxComponentName(AllowGrayed);
+  end;
+end;
+
+function TORCheckBox508Manager.GetInstructions(Component: TWinControl): string;
+begin
+  Result := VA508DelphiCompatibility.GetCheckBoxInstructionMessage(TORCheckBox(Component).Checked);
+end;
+
+function TORCheckBox508Manager.GetState(Component: TWinControl): string;
+var
+  cb: TORCheckBox;
+begin
+  Application.ProcessMessages; // <<<  needed to allow messages that set state to process
+  Result := '';
+  cb := TORCheckBox(Component);
+  if (cb.State = cbGrayed) and (cb.GrayedStyle in [gsQuestionMark, gsBlueQuestionMark]) then
+    Result := 'Question Mark'
+  else
+    Result := VA508DelphiCompatibility.GetCheckBoxStateText(cb.State);
+end;
+
+{ TORListBox508Manager }
+
+type
+  TORListBoxCheckBoxes508Manager = class(TLBMgr)
+  public
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+    function GetItemInstructions(Component: TWinControl): string; override;
+  end;
+
+  TORListBoxMultiSelect508Manager = class(TLBMgr)
+  public
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+    function GetItemInstructions(Component: TWinControl): string; override;
+  end;
+
+  TORListBoxStandard508Manager = class(TLBMgr)
+  public
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+    function GetItemInstructions(Component: TWinControl): string; override;
+  end;
+
+constructor TORListBox508Manager.Create;
+begin
+  inherited Create(TORListBox, [mtComponentName, mtValue, mtState, mtStateChange,
+                   mtItemChange, mtItemInstructions]);
+end;
+
+destructor TORListBox508Manager.Destroy;
+begin
+  FCurrent := nil;
+  if assigned(FCheckBoxes) then
+    FreeAndNil(FCheckBoxes);
+  if assigned(FMultiSelect) then
+    FreeAndNil(FMultiSelect);
+  if assigned(FStandard) then
+    FreeAndNil(FStandard);
+  inherited;
+end;
+
+function TORListBox508Manager.GetComponentName(Component: TWinControl): string;
+begin
+  Result := GetCurrent(Component).GetComponentName(Component);
+end;
+
+function TORListBox508Manager.GetItem(Component: TWinControl): TObject;
+var
+  lb : TORListBox;
+  max, id: integer;
+begin
+  GetCurrent(Component);
+  lb := TORListBox(Component);
+  max := lb.items.Count + 2;
+  if max < 10000 then
+    max := 10000;
+  id := (lb.items.Count * max) + (lb.FocusIndex + 2);
+  if lb.FocusIndex < 0 then dec(id);
+  Result := TObject(id);
+end;
+
+function TORListBox508Manager.GetItemInstructions(
+  Component: TWinControl): string;
+begin
+  Result := GetCurrent(Component).GetItemInstructions(Component);
+end;
+
+function TORListBox508Manager.GetState(Component: TWinControl): string;
+begin
+  Result := GetCurrent(Component).GetState(Component);
+end;
+
+function TORListBox508Manager.GetValue(Component: TWinControl): string;
+var idx: integer;
+  lb: TORListBox;
+begin
+  lb := TORListBox(Component);
+  idx := lb.FocusIndex;
+  if idx < 0 then
+    idx := 0;
+  Result := lb.DisplayText[idx];
+end;
+
+function TORListBox508Manager.GetCurrent(Component: TWinControl): TLBMgr;
+var
+  lb : TORListBox;
+
+begin
+  lb := TORListBox(Component);
+  if lb.CheckBoxes then
+  begin
+    if not assigned(FCheckBoxes) then
+      FCheckBoxes := TORListBoxCheckBoxes508Manager.Create;
+    FCurrent := FCheckBoxes;
+  end
+  else if lb.MultiSelect then
+  begin
+    if not assigned(FMultiSelect) then
+      FMultiSelect := TORListBoxMultiSelect508Manager.Create;
+    FCurrent := FMultiSelect;
+  end
+  else
+  begin
+    if not assigned(FStandard) then
+      FStandard := TORListBoxStandard508Manager.Create;
+    FCurrent := FStandard;
+  end;
+  Result := FCurrent;
+end;
+
+{ TORListBoxCheckBoxes508Manager }
+
+function TORListBoxCheckBoxes508Manager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := 'Check List Box'
+end;
+
+function TORListBoxCheckBoxes508Manager.GetItemInstructions(
+  Component: TWinControl): string;
+var
+  lb: TORListBox;
+  idx: integer;
+begin
+  Result := '';
+  lb := TORListBox(Component);
+  idx := GetIdx(Component);
+  if (idx >= 0) then
+    Result := VA508DelphiCompatibility.GetCheckBoxInstructionMessage(lb.Checked[idx])
+  else
+    Result := '';
+end;
+
+function TORListBoxCheckBoxes508Manager.GetState(
+  Component: TWinControl): string;
+var
+  lb: TORListBox;
+  idx: integer;
+begin
+  lb := TORListBox(Component);
+  idx := GetIdx(Component);
+  if (idx >= 0) then
+  begin
+    Result := GetCheckBoxStateText(lb.CheckedState[idx]);
+    if lb.FocusIndex < 0 then
+      Result := 'not selected ' + Result;
+  end
+  else
+    Result := '';
+end;
+
+{ TORListBoxMultiSelect508Manager }
+
+function TORListBoxMultiSelect508Manager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := 'Multi Select List Box'
+end;
+
+function TORListBoxMultiSelect508Manager.GetItemInstructions(
+  Component: TWinControl): string;
+var
+  lb: TORListBox;
+  idx: integer;
+begin
+  Result := '';
+  lb := TORListBox(Component);
+  idx := GetIdx(Component);
+  if (idx >= 0) then
+  begin
+    if not lb.Selected[idx] then
+      Result := 'to select press space bar'
+    else
+      Result := 'to un select press space bar';
+  end;
+end;
+
+function TORListBoxMultiSelect508Manager.GetState(
+  Component: TWinControl): string;
+var
+  lb: TORListBox;
+  idx: Integer;
+begin
+  lb := TORListBox(Component);
+  idx := GetIdx(Component);
+  if (idx >= 0) then
+  begin
+    if lb.Selected[idx] then
+      Result := 'Selected'
+    else
+      Result := 'Not Selected';
+  end
+  else
+    Result := '';
+end;
+
+{ TORListBoxStandard508Manager }
+
+function TORListBoxStandard508Manager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := 'List Box';
+end;
+
+function TORListBoxStandard508Manager.GetItemInstructions(
+  Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TORListBoxStandard508Manager.GetState(Component: TWinControl): string;
+var
+  lb: TORListBox;
+begin
+  lb := TORListBox(Component);
+  if (lb.FocusIndex < 0) then
+    Result := 'Not Selected'
+  else
+    Result := '';
+end;
+
+{ TLBMgr }
+
+function TLBMgr.GetIdx(Component: TWinControl): integer;
+begin
+  Result := TORListBox(Component).FocusIndex;
+  if (Result < 0) and (TORListBox(Component).Count > 0) then
+    Result := 0;
+end;
+
+{ TVA508TORDateComboComplexManager }
+
+constructor TVA508TORDateComboComplexManager.Create;
+begin
+  inherited Create(TORDateCombo);
+end;
+
+type
+  TORDateComboFriend = class(TORDateCombo);
+
+procedure TVA508TORDateComboComplexManager.Refresh(Component: TWinControl;
+  AccessibilityManager: TVA508AccessibilityManager);
+begin
+  with TORDateComboFriend(Component) do
+  begin
+    ClearSubControls(Component);
+//    if assigned(CalBtn) then
+//      CalBtn.TabStop := TRUE;
+//    if IncludeBtn then
+//      AddSubControl(CalBtn, AccessibilityManager);
+    AddSubControl(Component, YearEdit, AccessibilityManager);
+//    AddSubControl(YearUD, AccessibilityManager);
+    if IncludeMonth then
+      AddSubControl(Component, MonthCombo, AccessibilityManager);
+    if IncludeDay then
+      AddSubControl(Component, DayCombo, AccessibilityManager);
+  end;
+end;
+
+{ TORDayCombo508Manager }
+
+constructor TORDayCombo508Manager.Create;
+begin
+  inherited Create(TORDayCombo, [mtCaption, mtValue]);
+end;
+
+function TORDayCombo508Manager.GetCaption(Component: TWinControl): string;
+begin
+  Result := 'Day';
+end;
+
+{ TORMonthCombo508Manager }
+
+constructor TORMonthCombo508Manager.Create;
+begin
+  inherited Create(TORMonthCombo, [mtCaption, mtValue]);
+end;
+
+function TORMonthCombo508Manager.GetCaption(Component: TWinControl): string;
+begin
+  Result := 'Month';
+end;
+
+{ TORYearEdit508Manager }
+
+constructor TORYearEdit508Manager.Create;
+begin
+  inherited Create(TORYearEdit, [mtCaption]);
+end;
+
+function TORYearEdit508Manager.GetCaption(Component: TWinControl): string;
+begin
+  Result := 'Year';
+end;
+
+{ TORDateButton508Manager }
+
+constructor TORDateButton508Manager.Create;
+begin
+  inherited Create(TORDateButton, [mtCaption]);
+end;
+
+function TORDateButton508Manager.GetCaption(Component: TWinControl): string;
+begin
+  Result := 'Date';
+end;
+
+(*
+{ TVA508TORDateBoxComplexManager }
+
+constructor TVA508TORDateBoxComplexManager.Create;
+begin
+  inherited Create(TORDateBox);
+end;
+
+type
+  TORDateBoxFriend = class(TORDateBox);
+
+procedure TVA508TORDateBoxComplexManager.Refresh(Component: TWinControl;
+  AccessibilityManager: TVA508AccessibilityManager);
+begin
+  with TORDateBoxFriend(Component) do
+  begin
+    ClearSubControls;
+    if assigned(DateButton) then
+    begin
+      DateButton.TabStop := TRUE;
+      AddSubControl(DateButton, AccessibilityManager);
+    end;
+  end;
+end;
+*)
+
+{ TVA508ORComboManager }
+
+constructor TORComboBox508Manager.Create;
+begin
+  inherited Create(TORComboBox, [mtValue], TRUE);
+end;
+
+function TORComboBox508Manager.GetValue(Component: TWinControl): string;
+begin
+  Result := TORComboBox(Component).Text;
+end;
+
+{ TORComboEdit508Manager }
+
+//constructor TORComboEdit508Manager.Create;
+//begin
+//  inherited Create(TORComboEdit, [mtComponentRedirect]);
+//end;
+//
+//function TORComboEdit508Manager.Redirect(Component: TWinControl;
+//  var ManagedType: TManagedType): TWinControl;
+//begin
+//  ManagedType := mtCaption;
+//  Result := TWinControl(Component.Owner);
+//end;
+
+{ TVA508TORComboBoxComplexManager }
+
+//constructor TVA508TORComboBoxComplexManager.Create;
+//begin
+//  inherited Create(TORComboBox);
+//end;
+//
+//procedure TVA508TORComboBoxComplexManager.Refresh(Component: TWinControl;
+//  AccessibilityManager: TVA508AccessibilityManager);
+//var
+//  eBox: TORComboEdit;
+//begin
+//  begin
+//    ClearSubControls;
+//    eBox := GetEditBox(TORComboBox(Component));
+//    if assigned(eBox) then
+//      AddSubControl(eBox, AccessibilityManager);
+//  end;
+//end;
+
+initialization
+  RegisterORComponents;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib2006.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib2006.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib2006.dpk	(revision 1676)
@@ -0,0 +1,46 @@
+package ORDateLib2006;
+
+{$R *.res}
+{$R 'ORDtTm.dcr'}
+{$R 'ORDtTmRng.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO OFF}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'CPRS Date/Time Dialogs'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vclsmp,
+  vcl,
+  tee,
+  ORCtrlLib2006,
+  XWB_R10;
+
+contains
+  ORDtTmCal in 'ORDtTmCal.pas',
+  ORDtTm in 'ORDtTm.pas',
+  ORDtTmRng in 'ORDtTmRng.pas',
+  ORNet in 'ORNet.pas',
+  ORFn in 'ORFn.pas',
+  OR2006Compatibility in 'OR2006Compatibility.pas' {frm2006Compatibility};
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib2006.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib2006.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib2006.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER180
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.cfg	(revision 1676)
@@ -0,0 +1,42 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J+
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q+
+-$R+
+-$S-
+-$T-
+-$U-
+-$V+
+-$W+
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"c:\program files\borland\delphi6\dev\exesave"
+-N"..\cprs-lib\DCU"
+-LE"..\Packages"
+-LN"..\Packages"
+-U"..\cprs-lib;..\Packages"
+-O"..\cprs-lib;..\Packages"
+-I"..\cprs-lib;..\Packages"
+-R"..\cprs-lib;..\Packages"
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.dof	(revision 1676)
@@ -0,0 +1,137 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=1
+R=1
+S=0
+T=0
+U=0
+V=1
+W=1
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=CPRS Date/Time Dialogs
+[Directories]
+OutputDir=$(DELPHI)\dev\exesave
+UnitOutputDir=..\cprs-lib\DCU
+PackageDLLOutputDir=..\Packages
+PackageDCPOutputDir=..\Packages
+SearchPath=..\cprs-lib;..\Packages
+Packages=Vcl40;Vclx40;Vcldb40;vcldbx40;VclSmp40;Qrpt40;TeeUI40;teedb40;tee40;ibevnt40;nmfast40;VistABroker
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[Excluded Packages]
+C:\Program Files\Borland\Delphi6\Projects\Bpl\SharedRPCBroker_D60.bpl=VistA SharedBroker Components
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=11
+Item0=..\cprs-lib;..\Packages
+Item1=..\cprs-lib;..\Packages;c:\program files\vista\bdk32\d6
+Item2=..\cprs-lib;..\Packages;..\cprs-chart;..\cprs-chart\dcu
+Item3=d:\vista\main\cprs-lib;d:\vista\main\Packages
+Item4=d:\vista\main\cprs-lib;d:\program files\vista\broker\bdk32\d5
+Item5=d:\vista\main\cprs-chart;d:\vista\main\cprs-lib;d:\vista\main\cprs-chart\encounter;d:\vista\main\cprs-chart\consults
+Item6=d:\vista\main\cprs-lib
+Item7=\Dev\CPRS\main\CPRS-Lib
+Item8=C:\Dev\CPRS\main\CPRS-Lib
+Item9=\Projects\Perforce\main\CPRS-Lib
+Item10=$(DELPHI)\Projects\Current\CPRS-Lib
+[HistoryLists\hlUnitOutputDirectory]
+Count=8
+Item0=..\cprs-lib\DCU
+Item1=d:\vista\main\cprs-lib\DCU
+Item2=d:\vista\main\cprs-lib\DCUSave
+Item3=d:\vista\main\cprs-chart\dcu
+Item4=\Dev\DCUSave
+Item5=C:\Dev\DCUSave
+Item6=\Projects\DCUSave
+Item7=$(DELPHI)\Projects\DCUSave
+[HistoryLists\hlOutputDirectorry]
+Count=2
+Item0=$(DELPHI)\dev\exesave
+Item1=d:\vista\main\cprs-chart
+[HistoryLists\hlBPLOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
+[HistoryLists\hlDCPOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.dpk	(revision 1676)
@@ -0,0 +1,45 @@
+package ORDateLib60;
+
+{$R *.res}
+{$R 'ORDtTm.dcr'}
+{$R 'ORDtTmRng.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'CPRS Date/Time Dialogs'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vclsmp,
+  vcl,
+  XWB_R60,
+  ORCtrlLib60,
+  tee;
+
+contains
+  ORDtTmCal in 'ORDtTmCal.pas',
+  ORDtTm in 'ORDtTm.pas',
+  ORDtTmRng in 'ORDtTmRng.pas',
+  ORNet in 'ORNet.pas',
+  ORFn in 'ORFn.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDateLib60.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER140
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTm.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTm.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTm.dfm	(revision 1676)
@@ -0,0 +1,242 @@
+object ORfrmDtTm: TORfrmDtTm
+  Left = 586
+  Top = 483
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Select Date/Time'
+  ClientHeight = 235
+  ClientWidth = 398
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object bvlFrame: TBevel
+    Left = 8
+    Top = 8
+    Width = 302
+    Height = 221
+    Shape = bsFrame
+    Style = bsRaised
+  end
+  object lblDate: TPanel
+    Left = 18
+    Top = 18
+    Width = 192
+    Height = 22
+    BevelOuter = bvNone
+    BorderStyle = bsSingle
+    Caption = 'October 20, 1998'
+    Color = clWindow
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 9
+    object bvlRButton: TBevel
+      Left = 160
+      Top = 0
+      Width = 2
+      Height = 18
+      Align = alRight
+      Style = bsRaised
+    end
+    object pnlPrevMonth: TPanel
+      Left = 0
+      Top = 0
+      Width = 27
+      Height = 18
+      Align = alLeft
+      BevelWidth = 2
+      TabOrder = 0
+      OnClick = imgPrevMonthClick
+      OnMouseDown = imgPrevMonthMouseDown
+      OnMouseUp = imgPrevMonthMouseUp
+      object imgPrevMonth: TImage
+        Left = 2
+        Top = 2
+        Width = 23
+        Height = 14
+        Align = alClient
+        Center = True
+        Picture.Data = {
+          07544269746D6170EE000000424DEE0000000000000076000000280000000F00
+          00000F0000000100040000000000780000000000000000000000100000001000
+          0000000000000000800000800000008080008000000080008000808000008080
+          8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+          FF00888888888888888088888888888888808888888888880880888888888800
+          08808888888800CC088088888800CCCC0880888800CCCCCC08808800CCCCCCCC
+          0880888800CCCCCC088088888800CCCC08808888888800CC0880888888888800
+          0880888888888888088088888888888888808888888888888880}
+        OnClick = imgPrevMonthClick
+        OnMouseDown = imgPrevMonthMouseDown
+        OnMouseUp = imgPrevMonthMouseUp
+      end
+    end
+    object pnlNextMonth: TPanel
+      Left = 162
+      Top = 0
+      Width = 26
+      Height = 18
+      Align = alRight
+      BevelWidth = 2
+      TabOrder = 1
+      OnClick = imgNextMonthClick
+      OnMouseDown = imgNextMonthMouseDown
+      OnMouseUp = imgNextMonthMouseUp
+      object imgNextMonth: TImage
+        Left = 2
+        Top = 2
+        Width = 22
+        Height = 14
+        Align = alClient
+        Center = True
+        Picture.Data = {
+          07544269746D6170EE000000424DEE0000000000000076000000280000000F00
+          00000F0000000100040000000000780000000000000000000000100000001000
+          0000000000000000800000800000008080008000000080008000808000008080
+          8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+          FF00888888888888888088888888888888808808888888888880880008888888
+          8880880CC00888888880880CCCC008888880880CCCCCC0088880880CCCCCCCC0
+          0880880CCCCCC0088880880CCCC008888880880CC00888888880880008888888
+          8880880888888888888088888888888888808888888888888880}
+        OnClick = imgNextMonthClick
+        OnMouseDown = imgNextMonthMouseDown
+        OnMouseUp = imgNextMonthMouseUp
+      end
+    end
+  end
+  object txtTime: TEdit
+    Left = 218
+    Top = 18
+    Width = 81
+    Height = 21
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'MS Sans Serif'
+    Font.Style = [fsBold]
+    ParentFont = False
+    TabOrder = 2
+    OnChange = txtTimeChange
+  end
+  object lstHour: TListBox
+    Left = 218
+    Top = 38
+    Width = 45
+    Height = 160
+    ItemHeight = 13
+    Items.Strings = (
+      '  0'
+      '  1'
+      '  2'
+      '  3'
+      '  4'
+      '  5'
+      '  6'
+      '  7'
+      '  8'
+      '  9'
+      '10'
+      '11'
+      '12 --'
+      '13'
+      '14'
+      '15'
+      '16'
+      '17'
+      '18'
+      '19'
+      '20'
+      '21'
+      '22'
+      '23')
+    TabOrder = 3
+    OnClick = lstHourClick
+  end
+  object lstMinute: TListBox
+    Left = 266
+    Top = 38
+    Width = 33
+    Height = 160
+    ItemHeight = 13
+    Items.Strings = (
+      ':00 --'
+      ':05'
+      ':10'
+      ':15 --'
+      ':20'
+      ':25'
+      ':30 --'
+      ':35'
+      ':40'
+      ':45 --'
+      ':50'
+      ':55')
+    TabOrder = 4
+    OnClick = lstMinuteClick
+  end
+  object cmdOK: TButton
+    Left = 318
+    Top = 8
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    TabOrder = 7
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton
+    Left = 318
+    Top = 37
+    Width = 72
+    Height = 21
+    Caption = 'Cancel'
+    TabOrder = 8
+    OnClick = cmdCancelClick
+  end
+  object calSelect: TORCalendar
+    Left = 18
+    Top = 38
+    Width = 192
+    Height = 160
+    StartOfWeek = 0
+    TabOrder = 0
+    UseCurrentDate = False
+    OnChange = calSelectChange
+  end
+  object cmdToday: TButton
+    Left = 18
+    Top = 200
+    Width = 42
+    Height = 17
+    Caption = 'Today'
+    TabOrder = 1
+    OnClick = cmdTodayClick
+  end
+  object cmdNow: TButton
+    Left = 218
+    Top = 200
+    Width = 31
+    Height = 17
+    Caption = 'Now'
+    TabOrder = 5
+    OnClick = cmdNowClick
+  end
+  object cmdMidnight: TButton
+    Left = 249
+    Top = 200
+    Width = 50
+    Height = 17
+    Caption = 'Midnight'
+    TabOrder = 6
+    OnClick = cmdMidnightClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTm.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTm.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTm.pas	(revision 1676)
@@ -0,0 +1,1448 @@
+unit ORDtTm;
+
+{$O-}
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,
+  Grids, Calendar, ExtCtrls, ORFn, ORNet, ORDtTmCal, Mask, ComCtrls, OR2006Compatibility,
+  ORCtrls, VAClasses;
+
+type
+  TORfrmDtTm = class(Tfrm2006Compatibility)
+    bvlFrame: TBevel;
+    lblDate: TPanel;
+    txtTime: TEdit;
+    lstHour: TListBox;
+    lstMinute: TListBox;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    calSelect: TORCalendar;
+    pnlPrevMonth: TPanel;
+    pnlNextMonth: TPanel;
+    imgPrevMonth: TImage;
+    imgNextMonth: TImage;
+    bvlRButton: TBevel;
+    cmdToday: TButton;
+    cmdNow: TButton;
+    cmdMidnight: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure calSelectChange(Sender: TObject);
+    procedure cmdTodayClick(Sender: TObject);
+    procedure txtTimeChange(Sender: TObject);
+    procedure lstHourClick(Sender: TObject);
+    procedure lstMinuteClick(Sender: TObject);
+    procedure cmdNowClick(Sender: TObject);
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure imgPrevMonthClick(Sender: TObject);
+    procedure imgNextMonthClick(Sender: TObject);
+    procedure imgPrevMonthMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure imgNextMonthMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure imgPrevMonthMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure imgNextMonthMouseUp(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure cmdMidnightClick(Sender: TObject);
+  private
+    FFromSelf: Boolean;
+    FNowPressed:  Boolean;
+    TimeIsRequired: Boolean;
+  protected
+    procedure Loaded; override;
+  end;
+
+  { TORDateTimeDlg }
+
+  TORDateTimeDlg = class(TComponent)
+  private
+    FDateTime:     TDateTime;
+    FDateOnly:     Boolean;
+    FRequireTime:  Boolean;
+    FRelativeTime: string;
+    function GetFMDateTime: TFMDateTime;
+    procedure SetDateOnly(Value: Boolean);
+    procedure SetFMDateTime(Value: TFMDateTime);
+    procedure SetRequireTime(Value: Boolean);
+  public
+    constructor Create(AOwner: TComponent); override;
+    function Execute: Boolean;
+    property RelativeTime: string     read FRelativeTime;
+  published
+    property FMDateTime:  TFMDateTime read GetFMDateTime   write SetFMDateTime;
+    property DateOnly:    Boolean     read FDateOnly       write SetDateOnly;
+    property RequireTime: Boolean     read FRequireTime    write SetRequireTime;
+  end;
+
+  // 508 class
+  TORDateButton = class (TBitBtn);
+
+  { TORDateBox }
+
+  TORDateEdit = class(TEdit)
+  protected
+    procedure CreateParams(var Params: TCreateParams); override;
+  end;
+
+  TORDateBox = class(TORDateEdit, IVADynamicProperty, IORBlackColorModeCompatible)
+  private
+    FFMDateTime: TFMDateTime;
+    FDateOnly: Boolean;
+    FRequireTime: Boolean;
+    FButton: TORDateButton;
+    FFormat: string;
+    FTimeIsNow: Boolean;
+    FTemplateField: boolean;
+    FCaption: TStaticText;
+    FBlackColorMode: boolean;
+    procedure ButtonClick(Sender: TObject);
+    function GetFMDateTime: TFMDateTime;
+    function GetRelativeTime: string;
+    procedure SetDateOnly(Value: Boolean);
+    procedure SetFMDateTime(Value: TFMDateTime);
+    procedure SetEditRect;
+    procedure SetRequireTime(Value: Boolean);
+    procedure UpdateText;
+    procedure WMSize(var Message: TWMSize); message WM_SIZE;
+    procedure SetTemplateField(const Value: boolean);
+    procedure SetCaption(const Value: string);
+    function  GetCaption(): string;
+  protected
+    procedure Change; override;
+    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
+    property DateButton: TORDateButton read FButton;
+  public
+    constructor Create(AOwner: TComponent); override;
+    function IsValid: Boolean;
+    procedure Validate(var ErrMsg: string);
+    procedure SetBlackColorMode(Value: boolean);
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+    property Format: string read FFormat write FFormat;
+    property RelativeTime: string     read GetRelativeTime;
+    property TemplateField: boolean read FTemplateField write SetTemplateField;
+  published
+    property FMDateTime:  TFMDateTime read GetFMDateTime  write SetFMDateTime;
+    property DateOnly:    Boolean     read FDateOnly    write SetDateOnly;
+    property RequireTime: Boolean     read FRequireTime write SetRequireTime;
+    property Caption: string read GetCaption write SetCaption;
+  end;
+
+  // 508 classes
+  TORDayCombo = class (TORComboBox);
+  TORMonthCombo = class (TORComboBox);
+  TORYearEdit = class(TMaskEdit)
+  private
+    FTemplateField: boolean;
+    procedure SetTemplateField(const Value: boolean);
+  protected
+    property TemplateField: boolean read FTemplateField write SetTemplateField;
+  end;
+
+  TORYearEditClass = Class of TORYearEdit;
+
+  TORDateCombo = class(TCustomPanel, IORBlackColorModeCompatible)
+  private
+    FYearChanging: boolean;
+    FMonthCombo: TORMonthCombo;
+    FDayCombo: TORDayCombo;
+    FYearEdit: TORYearEdit;
+    FYearUD: TUpDown;
+    FCalBtn: TORDateButton;
+    FIncludeMonth: boolean;
+    FIncludeDay: boolean;
+    FIncludeBtn: boolean;
+    FLongMonths: boolean;
+    FMonth: integer;
+    FDay: integer;
+    FYear: integer;
+    FCtrlsCreated: boolean;
+    FOnChange: TNotifyEvent;
+    FRebuilding: boolean;
+    FTemplateField: boolean;
+    FBlackColorMode: boolean;
+    FORYearEditClass: TORYearEditClass;
+    procedure SetIncludeBtn(const Value: boolean);
+    procedure SetIncludeDay(Value: boolean);
+    procedure SetIncludeMonth(const Value: boolean);
+    procedure SetLongMonths(const Value: boolean);
+    procedure SetDay(Value: integer);
+    procedure SetMonth(Value: integer);
+    procedure SetYear(const Value: integer);
+    function GetFMDate: TFMDateTime;
+    procedure SetFMDate(const Value: TFMDateTime);
+    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
+    procedure SetTemplateField(const Value: boolean);
+  protected
+    procedure Rebuild; virtual;
+    function InitDays(GetSize: boolean): integer;
+    function InitMonths(GetSize: boolean): integer;
+    function GetYearSize: integer;
+    procedure DoChange;
+    procedure MonthChanged(Sender: TObject);
+    procedure DayChanged(Sender: TObject);
+    procedure YearChanged(Sender: TObject);
+    procedure BtnClicked(Sender: TObject);
+    procedure YearUDChange(Sender: TObject; var AllowChange: Boolean;
+                           NewValue: Smallint; Direction: TUpDownDirection);
+    procedure YearKeyPress(Sender: TObject; var Key: Char);
+    procedure CheckDays;
+    procedure Loaded; override;
+    procedure Paint; override;
+    procedure Resized(Sender: TObject);
+    property MonthCombo: TORMonthCombo read FMonthCombo;
+    property DayCombo: TORDayCombo read FDayCombo;
+    property YearEdit: TORYearEdit read FYearEdit;
+    property YearUD: TUpDown read FYearUD;
+    property CalBtn: TORDateButton read FCalBtn;
+    property ORYearEditClass: TORYearEditClass read FORYearEditClass write FORYearEditClass;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    function DateText: string;
+    procedure SetBlackColorMode(Value: boolean);
+    property TemplateField: boolean read FTemplateField write SetTemplateField;
+    property FMDate: TFMDateTime read GetFMDate write SetFMDate;
+  published
+    function Text: string;
+    property IncludeBtn: boolean read FIncludeBtn write SetIncludeBtn;
+    property IncludeDay: boolean read FIncludeDay write SetIncludeDay;
+    property IncludeMonth: boolean read FIncludeMonth write SetIncludeMonth;
+    property LongMonths: boolean read FLongMonths write SetLongMonths default FALSE;
+    property Month: integer read FMonth write SetMonth;
+    property Day: integer read FDay write SetDay;
+    property Year: integer read FYear write SetYear;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property Anchors;
+    property Enabled;
+    property Font;
+    property ParentColor;
+    property ParentFont;
+    property TabOrder;
+    property TabStop;
+    property Visible;
+  end;
+
+function IsLeapYear(AYear: Integer): Boolean;
+function DaysPerMonth(AYear, AMonth: Integer): Integer;
+
+procedure Register;
+
+implementation
+
+{$R *.DFM}
+{$R ORDtTm}
+
+const
+  FMT_DATETIME = 'mmm d,yyyy@hh:nn';
+  FMT_DATEONLY = 'mmm d,yyyy';
+  (*
+  HOURS_AMPM: array[0..23] of string[3] =
+    ('12a','  1','  2','  3','  4','  5','  6','  7','  8','  9','10 ','11 ',
+     '12p','  1','  2','  3','  4','  5','  6','  7','  8','  9','10 ','11 ');
+  HOURS_MIL:  array[0..23] of string[2] =
+    ('00','01','02','03','04','05','06','07','08','09','10','11',
+     '12','13','14','15','16','17','18','19','20','21','22','23');
+  *)
+  AdjVertSize = 8;
+  FontHeightText = 'BEFHILMSTVWXZfgjmpqtyk';
+
+var
+  uServerToday: TFMDateTime;
+
+{ Server-dependent functions ---------------------------------------------------------------- }
+
+function ActiveBroker: Boolean;
+begin
+  Result := False;
+  if (RPCBrokerV <> nil) and RPCBrokerV.Connected then Result := True;
+end;
+
+function ServerFMNow: TFMDateTime;
+begin
+  if ActiveBroker
+    then Result := StrToFloat(sCallV('ORWU DT', ['NOW']))
+    else Result := DateTimeToFMDateTime(Now);
+end;
+
+function ServerNow: TDateTime;
+begin
+  if ActiveBroker
+    then Result := FMDateTimeToDateTime(ServerFMNow)
+    else Result := Now;
+end;
+
+function ServerToday: TDateTime;
+begin
+  if uServerToday = 0 then uServerToday := Int(ServerFMNow);
+  Result := FMDateTimeToDateTime(uServerToday);
+end;
+
+(*
+function ServerFMToday: TFMDateTime;    // never referenced in this unit
+begin
+  if uServerToday = 0 then uServerToday := Int(ServerFMNow);
+  Result := uServerToday;
+end;
+*)
+
+function ServerParseFMDate(const AString: string): TFMDateTime;
+begin
+  if ActiveBroker
+    then Result := StrToFloat(sCallV('ORWU DT', [AString, 'TSX']))
+    else Result := 0;
+end;
+
+function RelativeDateTime(ADateTime: TDateTime): string;
+var
+  Offset: Integer;
+  h,n,s,l: Word;
+  ATime: string;
+begin
+  Offset := Trunc(Int(ADateTime) - Int(ServerToday));
+  if Offset < 0 then Result := 'T' + IntToStr(Offset)
+  else if Offset = 0 then Result := 'T'
+  else Result := 'T+' + IntToStr(Offset);
+  DecodeTime(ADateTime, h, n, s, l);
+  ATime := Format('@%.2d:%.2d', [h, n]);
+  if ATime <> '@00:00' then Result := Result + ATime;
+end;
+
+procedure LoadEllipsis(bitmap: TBitMap; BlackColorMode: boolean);
+var
+  ResName: string;
+begin
+  if BlackColorMode then
+    ResName := 'BLACK_BMP_ELLIPSIS'
+  else
+    ResName := 'BMP_ELLIPSIS';
+  bitmap.LoadFromResourceName(hInstance, ResName);
+end;
+
+{ TfrmORDtTm -------------------------------------------------------------------------------- }
+
+procedure TORfrmDtTm.FormCreate(Sender: TObject);
+begin
+  ResizeAnchoredFormToFont(self);
+  //FormStyle := fsStayOnTop;
+  lstHour.TopIndex := 6;
+  FFromSelf := False;
+  calSelectChange(Self);
+end;
+
+procedure TORfrmDtTm.calSelectChange(Sender: TObject);
+begin
+  lblDate.Caption := FormatDateTime('mmmm d, yyyy', calSelect.CalendarDate);
+  FNowPressed := False;
+end;
+
+procedure TORfrmDtTm.imgPrevMonthMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlPrevMonth.BevelOuter := bvLowered;
+end;
+
+procedure TORfrmDtTm.imgNextMonthMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlNextMonth.BevelOuter := bvLowered;
+end;
+
+procedure TORfrmDtTm.imgPrevMonthClick(Sender: TObject);
+begin
+  calSelect.PrevMonth;
+end;
+
+procedure TORfrmDtTm.imgNextMonthClick(Sender: TObject);
+begin
+  calSelect.NextMonth;
+end;
+
+procedure TORfrmDtTm.imgPrevMonthMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  pnlPrevMonth.BevelOuter := bvRaised;
+end;
+
+procedure TORfrmDtTm.imgNextMonthMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+   pnlNextMonth.BevelOuter := bvRaised;
+end;
+
+procedure TORfrmDtTm.cmdTodayClick(Sender: TObject);
+begin
+  calSelect.CalendarDate := ServerToday;
+  lstHour.ItemIndex := -1;
+  lstMinute.ItemIndex := -1;
+  txtTime.Text := '';
+end;
+
+procedure TORfrmDtTm.txtTimeChange(Sender: TObject);
+begin
+  if not FFromSelf then
+  begin
+    lstHour.ItemIndex := -1;
+    lstMinute.ItemIndex := -1;
+  end;
+  FNowPressed := False;
+end;
+
+procedure TORfrmDtTm.lstHourClick(Sender: TObject);
+begin
+  if lstHour.ItemIndex = 0 then lstMinute.Items[0] := ':01  --' else lstMinute.Items[0] := ':00  --'; //<------ NEW CODE
+  if lstMinute.ItemIndex < 0 then lstMinute.ItemIndex := 0;
+  lstMinuteClick(Self);
+end;
+
+procedure TORfrmDtTm.lstMinuteClick(Sender: TObject);
+var
+  AnHour, AMinute: Integer;
+//  AmPm: string;
+begin
+  if lstHour.ItemIndex < 0 then Exit;
+
+  // if ampm time -
+  //case lstHour.ItemIndex of
+  //    0: AnHour := 12;
+  //1..12: AnHour := lstHour.ItemIndex;
+  //else   AnHour := lstHour.ItemIndex - 12;
+  //end;
+  //if lstHour.ItemIndex > 11 then AmPm := 'PM' else AmPm := 'AM';
+
+  // if military time
+  AnHour := lstHour.ItemIndex;
+
+  AMinute := lstMinute.ItemIndex * 5;
+  if (AnHour = 0) and (AMinute = 0) then AMinute := 1;  //<-------------- NEW CODE
+  FFromSelf := True;
+  // if ampm time -
+  //txtTime.Text := Format('%d:%.2d ' + AmPm, [AnHour, AMinute]);
+
+  // if military time
+  txtTime.Text := Format('%.2d:%.2d ', [AnHour, AMinute]);
+
+  FFromSelf := False;
+end;
+
+procedure TORfrmDtTm.cmdNowClick(Sender: TObject);
+begin
+  calSelect.CalendarDate := ServerToday;
+  //txtTime.Text := FormatDateTime('h:nn ampm', ServerNow);  // if ampm time
+  txtTime.Text := FormatDateTime('hh:nn', ServerNow);        // if ampm time
+  FNowPressed := True;
+end;
+
+procedure TORfrmDtTm.cmdMidnightClick(Sender: TObject);
+begin
+  //txtTime.Text := '11:59 PM';  // if ampm time
+  txtTime.Text := '23:59';      // if military time
+end;
+
+procedure TORfrmDtTm.cmdOKClick(Sender: TObject);
+var
+  x: string;
+begin
+  if TimeIsRequired and (Length(txtTime.Text) = 0) then
+  begin
+    InfoBox('An entry for time is required.', 'Missing Time', MB_OK);
+    Exit;
+  end;
+  if Length(txtTime.Text) > 0 then
+  begin
+    x := Trim(txtTime.Text);
+    //if (x='00:00') or (x='0:00') or (x='00:00:00') or (x='0:00:00') then x := '00:00:01';
+    if (x='00:00') or (x='0:00') or (x='00:00:00') or (x='0:00:00') then x := '00:01';  //<------- CHANGED CODE
+    StrToTime(x);
+    txtTime.Text := x;
+  end;
+  ModalResult := mrOK;
+end;
+
+procedure TORfrmDtTm.cmdCancelClick(Sender: TObject);
+begin
+  ModalResult := mrCancel;
+end;
+
+procedure TORfrmDtTm.Loaded;
+begin
+  inherited Loaded;
+  UpdateColorsFor508Compliance(Self);
+end;
+
+{ TORDateTimeDlg }
+
+constructor TORDateTimeDlg.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  if not (csDesigning in ComponentState)
+    then FDateTime := ServerToday
+    else FDateTime  := SysUtils.Date;
+end;
+
+function TORDateTimeDlg.Execute: Boolean;
+const
+  HORZ_SPACING = 8;
+var
+  frmDtTm: TORfrmDtTm;
+begin
+  frmDtTm := TORfrmDtTm.Create(Application);
+  try
+    with frmDtTm do
+    begin
+      calSelect.CalendarDate := Int(FDateTime);
+      if Frac(FDateTime) > 0
+        //then txtTime.Text := FormatDateTime('h:nn ampm', FDateTime);  // if ampm time
+        then txtTime.Text := FormatDateTime('hh:nn', FDateTime);        // if military time
+      if RequireTime then TimeIsRequired := True;
+      if DateOnly then
+      begin
+        txtTime.Visible     := False;
+        lstHour.Visible     := False;
+        lstMinute.Visible   := False;
+        cmdNow.Visible      := False;
+        cmdMidnight.Visible := False;
+        bvlFrame.Width := bvlFrame.Width - txtTime.Width - HORZ_SPACING;
+        cmdOK.Left := cmdOK.Left - txtTime.Width - HORZ_SPACING;
+        cmdCancel.Left := cmdOK.Left;
+        ClientWidth := ClientWidth - txtTime.Width - HORZ_SPACING;
+      end;
+      Result := (ShowModal = IDOK);
+      if Result then
+      begin
+        FDateTime := Int(calSelect.CalendarDate);
+        if Length(txtTime.Text) > 0 then FDateTime := FDateTime + StrToTime(txtTime.Text);
+        if FNowPressed
+          then FRelativeTime := 'NOW'
+          else FRelativeTime := RelativeDateTime(FDateTime);
+      end;
+    end;
+  finally
+    frmDtTm.Free;
+  end;
+end;
+
+function TORDateTimeDlg.GetFMDateTime: TFMDateTime;
+begin
+  Result := DateTimeToFMDateTime(FDateTime);
+end;
+
+procedure TORDateTimeDlg.SetDateOnly(Value: Boolean);
+begin
+  FDateOnly := Value;
+  if FDateOnly then
+  begin
+    FRequireTime := False;
+    FDateTime := Int(FDateTime);
+  end;
+end;
+
+procedure TORDateTimeDlg.SetFMDateTime(Value: TFMDateTime);
+begin
+  if Value > 0 then FDateTime := FMDateTimeToDateTime(Value);
+end;
+
+procedure TORDateTimeDlg.SetRequireTime(Value: Boolean);
+begin
+  FRequireTime := Value;
+  if FRequireTime then FDateOnly := False;
+end;
+
+{ TORDateEdit ----------------------------------------------------------------------------- }
+
+procedure TORDateEdit.CreateParams(var Params: TCreateParams);
+{ sets a one line edit box to multiline style so the editing rectangle can be changed }
+begin
+  inherited CreateParams(Params);
+  Params.Style := Params.Style or ES_MULTILINE or WS_CLIPCHILDREN;
+end;
+
+
+{ TORDateBox -------------------------------------------------------------------------------- }
+
+constructor TORDateBox.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FButton := TORDateButton.Create(Self);
+  FButton.Parent := Self;
+  FButton.Width := 18;
+  FButton.Height := 17;
+  FButton.OnClick := ButtonClick;
+  FButton.TabStop := False;
+  FBlackColorMode := False;
+  LoadEllipsis(FButton.Glyph, FALSE);
+  FButton.Visible := True;
+  FFormat := FMT_DATETIME;
+end;
+
+procedure TORDateBox.WMSize(var Message: TWMSize);
+var
+  ofs: integer;
+
+begin
+  inherited;
+  if assigned(FButton) then
+  begin
+    if BorderStyle = bsNone then
+      ofs := 0
+    else
+      ofs := 4;
+    FButton.SetBounds(Width - FButton.Width - ofs, 0, FButton.Width, Height - ofs);
+  end;
+  SetEditRect;
+end;
+
+procedure TORDateBox.SetTemplateField(const Value: boolean);
+var
+  Y: integer;
+
+begin
+  if(FTemplateField <> Value) then
+  begin
+    FTemplateField := Value;
+    Y := TextHeightByFont(Font.Handle, FontHeightText);
+    if Value then
+    begin
+      FButton.Width := Y+2;
+      Height := Y;
+      BorderStyle := bsNone;
+    end
+    else
+    begin
+      FButton.Width := 18;
+      Height := y + AdjVertSize;
+      BorderStyle := bsSingle;
+    end;
+  end;
+end;
+
+function TORDateBox.SupportsDynamicProperty(PropertyID: integer): boolean;
+begin
+  Result := (PropertyID = DynaPropAccesibilityCaption);
+end;
+
+procedure TORDateBox.ButtonClick(Sender: TObject);
+var
+  DateDialog: TORDateTimeDlg;
+  ParsedDate: TFMDateTime;
+begin
+  DateDialog := TORDateTimeDlg.Create(Application);
+  if Length(Text) > 0 then
+  begin
+    ParsedDate := ServerParseFMDate(Text);
+    if ParsedDate > -1 then FFMDateTime := ParsedDate else FFMDateTime := 0;
+  end;
+  DateDialog.DateOnly := FDateOnly;
+  DateDialog.FMDateTime := FFMDateTime;
+  DateDialog.RequireTime := FRequireTime;
+  if DateDialog.Execute then
+  begin
+    FFMDateTime := DateDialog.FMDateTime;
+    UpdateText;
+    FTimeIsNow := DateDialog.RelativeTime = 'NOW';
+  end;
+  DateDialog.Free;
+  if Visible and Enabled then //Some events may hide the component
+    SetFocus;
+end;
+
+procedure TORDateBox.Change;
+begin
+  inherited Change;
+  FTimeIsNow := False;
+end;
+
+procedure TORDateBox.KeyDown(var Key: Word; Shift: TShiftState);
+begin
+  inherited KeyDown(Key, Shift);
+  if (Key = VK_RETURN) then begin
+    FButton.Click;
+    Key := 0;
+  end;
+end;
+
+function TORDateBox.GetFMDateTime: TFMDateTime;
+begin
+  Result := 0;
+  if Length(Text) > 0 then Result := ServerParseFMDate(Text);
+  FFMDateTime := Result;
+end;
+
+function TORDateBox.GetRelativeTime: string;
+begin
+  Result := '';
+  if FTimeIsNow then Result := 'NOW'
+  else if UpperCase(Text) = 'NOW' then Result := 'NOW'
+  else if Length(Text) > 0 then
+  begin
+    FFMDateTime := ServerParseFMDate(Text);
+    if FFMDateTime > 0 then Result := RelativeDateTime(FMDateTimeToDateTime(FFMDateTime));
+  end;
+end;
+
+procedure TORDateBox.SetDateOnly(Value: Boolean);
+begin
+  FDateOnly := Value;
+  if FDateOnly then
+  begin
+    FRequireTime := False;
+    FFMDateTime := Int(FFMDateTime);
+    if FFormat = FMT_DATETIME then FFormat := FMT_DATEONLY;
+  end;
+  UpdateText;
+end;
+
+procedure TORDateBox.SetFMDateTime(Value: TFMDateTime);
+begin
+  FFMDateTime := Value;
+  UpdateText;
+end;
+
+procedure TORDateBox.SetRequireTime(Value: Boolean);
+begin
+  FRequireTime := Value;
+  if FRequireTime then
+  begin
+    if FFormat = FMT_DATEONLY then FFormat := FMT_DATETIME;
+    SetDateOnly(False);
+  end;
+end;
+
+procedure TORDateBox.SetEditRect;
+{ change the edit rectangle to not hide the calendar button - taken from SPIN.PAS sample }
+var
+  Loc: TRect;
+begin
+  SendMessage(Handle, EM_GETRECT, 0, LongInt(@Loc));
+  Loc.Bottom := ClientHeight + 1;               // +1 is workaround for windows paint bug
+  Loc.Right  := FButton.Left - 2;
+  Loc.Top    := 0;
+  Loc.Left   := 0;
+  SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@Loc));
+end;
+
+procedure TORDateBox.UpdateText;
+begin
+  if FFMDateTime > 0 then
+  begin
+    if (FFormat =FMT_DATETIME) and (Frac(FFMDateTime) = 0)
+      then Text := FormatFMDateTime(FMT_DATEONLY, FFMDateTime)
+      else Text := FormatFMDateTime(FFormat, FFMDateTime);
+  end;
+end;
+
+procedure TORDateBox.Validate(var ErrMsg: string);
+begin
+  ErrMsg := '';
+  if Length(Text) > 0 then
+  begin
+    FFMDateTime := ServerParseFMDate(Text);
+    if FFMDateTime <= 0 then Errmsg := 'Invalid Date/Time';
+    if FRequireTime and (Frac(FFMDateTime) = 0) then ErrMsg := 'Time Required';
+    if FDateOnly    and (Frac(FFMDateTime) > 0) then ErrMsg := 'Time not Required';
+  end;
+end;
+
+function TORDateBox.IsValid: Boolean;
+var
+  x: string;
+begin
+  Validate(x);
+  if Length(x) = 0 then Result := True else Result := False;
+  if Length(Text) = 0 then Result := False;
+end;
+
+procedure TORDateBox.SetBlackColorMode(Value: boolean);
+begin
+  if FBlackColorMode <> Value then
+  begin
+    FBlackColorMode := Value;
+    LoadEllipsis(FButton.Glyph, FBlackColorMode);
+  end;
+end;
+
+procedure TORDateBox.SetCaption(const Value: string);
+begin
+    if not Assigned(FCaption) then begin
+       FCaption := TStaticText.Create(self);
+       FCaption.AutoSize := False;
+       FCaption.Height := 0;
+       FCaption.Width  := 0;
+       FCaption.Visible := True;
+       FCaption.Parent := Parent;
+       FCaption.BringtoFront;
+    end;
+    FCaption.Caption := Value;
+end;
+
+function TORDateBox.GetCaption(): string;
+begin
+    result := FCaption.Caption;
+end;
+
+function TORDateBox.GetDynamicProperty(PropertyID: integer): string;
+begin
+  if PropertyID = DynaPropAccesibilityCaption then
+    Result := GetCaption
+  else
+    Result := '';
+end;
+
+function IsLeapYear(AYear: Integer): Boolean;
+begin
+  Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
+end;
+
+function DaysPerMonth(AYear, AMonth: Integer): Integer;
+const
+  DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
+
+begin
+  if(AYear < 1) or (AMonth < 1) then
+    Result := 0
+  else
+  begin
+    Result := DaysInMonth[AMonth];
+    if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }
+  end;
+end;
+
+{ TORDateCombo ------------------------------------------------------------------------- }
+
+const
+  ComboBoxAdjSize = 24;
+  EditAdjHorzSize = 8;
+  DateComboCtrlGap = 2;
+  FirstYear = 1800;
+  LastYear = 2200;
+
+{ TORDateComboEdit }
+
+procedure TORYearEdit.SetTemplateField(const Value: boolean);
+begin
+  if(FTemplateField <> Value) then
+  begin
+    FTemplateField := Value;
+    if Value then
+      BorderStyle := bsNone
+    else
+      BorderStyle := bsSingle;
+  end;
+end;
+
+{ TORDateCombo }
+
+constructor TORDateCombo.Create(AOwner: TComponent);
+begin
+  inherited;
+  ControlStyle := ControlStyle - [csSetCaption, csAcceptsControls];
+  BevelOuter := bvNone;
+  FIncludeMonth := TRUE;
+  FIncludeDay := TRUE;
+  FIncludeBtn := TRUE;
+  OnResize := Resized;
+  FORYearEditClass := TORYearEdit;
+end;
+
+destructor TORDateCombo.Destroy;
+begin
+  KillObj(@FMonthCombo);
+  KillObj(@FDayCombo);
+  KillObj(@FYearEdit);
+  KillObj(@FYearUD);
+  KillObj(@FCalBtn);
+  inherited;
+end;
+
+function TORDateCombo.GetYearSize: integer;
+begin
+  Result := TextWidthByFont(Font.Handle, '8888') + EditAdjHorzSize;
+end;
+
+function TORDateCombo.InitDays(GetSize: boolean): integer;
+var
+  dy: integer;
+
+begin
+  Result := 0;
+  if(assigned(FDayCombo)) then
+  begin
+    dy := DaysPerMonth(FYear, FMonth) + 1;
+    while (FDayCombo.Items.Count < dy) do
+    begin
+      if(FDayCombo.Items.Count = 0) then
+        FDayCombo.Items.Add(' ')
+      else
+        FDayCombo.Items.Add(inttostr(FDayCombo.Items.Count));
+    end;
+    while (FDayCombo.Items.Count > dy) do
+      FDayCombo.Items.Delete(FDayCombo.Items.Count-1);
+    if(GetSize) then
+      Result := TextWidthByFont(Font.Handle, '88') + ComboBoxAdjSize;
+    if(FDay > (dy-1)) then
+      SetDay(dy-1);
+  end;
+end;
+
+function TORDateCombo.InitMonths(GetSize: boolean): integer;
+var
+  i, Size: integer;
+
+begin
+  Result := 0;
+  if(assigned(FMonthCombo)) then
+  begin
+    FMonthCombo.Items.Clear;
+    FMonthCombo.Items.Add(' ');
+    for i := 1 to 12 do
+    begin
+      if FLongMonths then
+        FMonthCombo.Items.Add(LongMonthNames[i])
+      else
+        FMonthCombo.Items.Add(ShortMonthNames[i]);
+      if(GetSize) then
+      begin
+        Size := TextWidthByFont(Font.Handle, FMonthCombo.Items[i]);
+        if(Result < Size) then
+          Result := Size;
+      end;
+    end;
+    if(GetSize) then
+      inc(Result, ComboBoxAdjSize);
+  end;
+end;
+
+procedure TORDateCombo.Rebuild;
+var
+  Wide, X, Y: integer;
+
+begin
+  if(not FRebuilding) then
+  begin
+    FRebuilding := TRUE;
+    try
+      ControlStyle := ControlStyle + [csAcceptsControls];
+      try
+        Y := TextHeightByFont(Font.Handle, FontHeightText);
+        if not FTemplateField then
+          inc(Y,AdjVertSize);
+        X := 0;
+        if(FIncludeMonth) then
+        begin
+          if(not assigned(FMonthCombo)) then
+          begin
+            FMonthCombo := TORMonthCombo.Create(Self);
+            FMonthCombo.Parent := Self;
+            FMonthCombo.Top := 0;
+            FMonthCombo.Left := 0;
+            FMonthCombo.Style := orcsDropDown;
+            FMonthCombo.DropDownCount := 13;
+            FMonthCombo.ListItemsOnly := True;
+            FMonthCombo.OnChange := MonthChanged;
+          end;
+          FMonthCombo.Font := Font;
+          FMonthCombo.TemplateField := FTemplateField;
+          Wide := InitMonths(TRUE);
+          FMonthCombo.Width := Wide;
+          FMonthCombo.Height := Y;
+          FMonthCombo.ItemIndex := FMonth;
+          inc(X, Wide + DateComboCtrlGap);
+
+          if(FIncludeDay) then
+          begin
+            if(not assigned(FDayCombo)) then
+            begin
+              FDayCombo := TORDayCombo.Create(Self);
+              FDayCombo.Parent := Self;
+              FDayCombo.Top := 0;
+              FDayCombo.Style := orcsDropDown;
+              FDayCombo.ListItemsOnly := True;
+              FDayCombo.OnChange := DayChanged;
+              FDayCombo.DropDownCount := 11;
+            end;
+            FDayCombo.Font := Font;
+            FDayCombo.TemplateField := FTemplateField;
+            Wide := InitDays(TRUE);
+            FDayCombo.Width := Wide;
+            FDayCombo.Height := Y;
+            FDayCombo.Left := X;
+            FDayCombo.ItemIndex := FDay;
+            inc(X, Wide + DateComboCtrlGap);
+          end
+          else
+            KillObj(@FDayCombo);
+        end
+        else
+        begin
+          KillObj(@FDayCombo);
+          KillObj(@FMonthCombo);
+        end;
+        if(not assigned(FYearEdit)) then
+        begin
+          FYearEdit := FORYearEditClass.Create(Self);
+          FYearEdit.Parent := Self;
+          FYearEdit.Top := 0;
+          FYearEdit.EditMask := '9999;1; ';
+          FYearEdit.OnKeyPress := YearKeyPress;
+          FYearEdit.OnChange := YearChanged;
+        end;
+        FYearEdit.Font := Font;
+        FYearEdit.TemplateField := FTemplateField;
+        Wide := GetYearSize;
+        FYearEdit.Width := Wide;
+        FYearEdit.Height := Y;
+        FYearEdit.Left := X;
+        inc(X, Wide);
+        if(not assigned(FYearUD)) then
+        begin
+          FYearUD := TUpDown.Create(Self);
+          FYearUD.Parent := Self;
+          FYearUD.Thousands := FALSE;
+          FYearUD.Min := FirstYear-1;
+          FYearUD.Max := LastYear;
+          FYearUD.OnChangingEx := YearUDChange;
+        end;
+        FYearEdit.TabOrder := 0;
+        FYearUD.Top := 0;
+        FYearUD.Left := X;
+        FYearUD.Height := Y;
+        FYearUD.Position := FYear;
+        inc(X, FYearUD.Width + DateComboCtrlGap);
+        if(FIncludeBtn) then
+        begin
+          if(not assigned(FCalBtn)) then
+          begin
+            FCalBtn := TORDateButton.Create(Self);
+            FCalBtn.TabStop := FALSE;
+            FCalBtn.Parent := Self;
+            FCalBtn.Top := 0;
+            LoadEllipsis(FCalBtn.Glyph, FBlackColorMode);
+            FCalBtn.OnClick := BtnClicked;
+          end;
+          Wide := FYearEdit.Height;
+          if(Wide > Y) then Wide := Y;
+          FCalBtn.Width := Wide;
+          FCalBtn.Height := Wide;
+          FCalBtn.Left := X;
+          inc(X, Wide + DateComboCtrlGap);
+        end
+        else
+          KillObj(@FCalBtn);
+        Self.Width := X - DateComboCtrlGap;
+        Self.Height := Y;
+        CheckDays;
+        FCtrlsCreated := TRUE;
+        DoChange;
+      finally
+        ControlStyle := ControlStyle - [csAcceptsControls];
+      end;
+    finally
+      FRebuilding := FALSE;
+    end;
+  end;
+end;
+
+procedure TORDateCombo.SetBlackColorMode(Value: boolean);
+begin
+  if FBlackColorMode <> Value then
+  begin
+    FBlackColorMode := Value;
+    if assigned(FCalBtn) then    
+      LoadEllipsis(FCalBtn.Glyph, FBlackColorMode);
+  end;
+end;
+
+procedure TORDateCombo.SetDay(Value: integer);
+begin
+  if(not assigned(FDayCombo)) and (not (csLoading in ComponentState)) then
+    Value := 0;
+  if(Value > DaysPerMonth(FYear, FMonth)) then
+    Value := 0;
+  if(FDay <> Value) then
+  begin
+    FDay := Value;
+    if(assigned(FDayCombo)) then
+    begin
+      if(FDayCombo.Items.Count <= FDay) then
+        InitDays(FALSE);
+      FDayCombo.ItemIndex := FDay;
+    end;
+    DoChange;
+  end;
+end;
+
+procedure TORDateCombo.SetIncludeBtn(const Value: boolean);
+begin
+  if(FIncludeBtn <> Value) then
+  begin
+    FIncludeBtn := Value;
+    Rebuild;
+  end;
+end;
+
+procedure TORDateCombo.SetIncludeDay(Value: boolean);
+begin
+  if(Value) and (not FIncludeMonth) then
+    Value := FALSE;
+  if(FIncludeDay <> Value) then
+  begin
+    FIncludeDay := Value;
+    if(not Value) then FDay := 0;
+    Rebuild;
+  end;
+end;
+
+procedure TORDateCombo.SetIncludeMonth(const Value: boolean);
+begin
+  if(FIncludeMonth <> Value) then
+  begin
+    FIncludeMonth := Value;
+    if(not Value) then
+    begin
+      FIncludeDay := FALSE;
+      FMonth := 0;
+      FDay := 0;
+    end;
+    Rebuild;
+  end;
+end;
+
+procedure TORDateCombo.SetMonth(Value: integer);
+begin
+  if(not assigned(FMonthCombo)) and (not (csLoading in ComponentState)) then
+    Value := 0;
+  if(Value <0) or (Value > 12) then
+    Value := 0;
+  if(FMonth <> Value) then
+  begin
+    FMonth := Value;
+    if(assigned(FMonthCombo)) then
+      FMonthCombo.ItemIndex := FMonth;
+    CheckDays;
+    DoChange;
+  end;
+end;
+
+procedure TORDateCombo.SetLongMonths(const Value: boolean);
+begin
+  if(FLongMonths <> Value) then
+  begin
+    FLongMonths := Value;
+    Rebuild;
+  end;
+end;
+
+procedure TORDateCombo.SetYear(const Value: integer);
+begin
+  if(FYear <> Value) then
+  begin
+    FYear := Value;
+    if(FYear < FirstYear) or (FYear > LastYear) then
+      FYear := 0;
+    if(not FYearChanging) and (assigned(FYearEdit)) and (assigned(FYearUD)) then
+    begin
+      FYearChanging := TRUE;
+      try
+        if(FYear = 0) then
+        begin
+          FYearEdit.Text := '    ';
+          FYearUD.Position := FirstYear-1
+        end
+        else
+        begin
+          FYearEdit.Text := IntToStr(FYear);
+          FYearUD.Position := FYear;
+        end;
+      finally
+        FYearChanging := FALSE;
+      end;
+    end;
+    if(FMonth = 2) then
+      InitDays(FALSE);
+    CheckDays;
+    DoChange;
+  end;
+end;
+
+procedure TORDateCombo.DayChanged(Sender: TObject);
+begin
+  FDay := FDayCombo.ItemIndex;
+  if(FDay < 0) then
+    FDay := 0;
+  CheckDays;
+  DoChange;
+end;
+
+procedure TORDateCombo.MonthChanged(Sender: TObject);
+begin
+  FMonth := FMonthCombo.ItemIndex;
+  if(FMonth < 0) then
+    FMonth := 0;
+  InitDays(FALSE);
+  CheckDays;
+  DoChange;
+end;
+
+procedure TORDateCombo.YearChanged(Sender: TObject);
+begin
+  if FYearChanging then exit;
+  FYearChanging := TRUE;
+  try
+    FYear := StrToIntDef(FYearEdit.Text, 0);
+    if(FYear < FirstYear) or (FYear > LastYear) then
+      FYear := 0;
+    if(FYear = 0) then
+      FYearUD.Position := FirstYear-1
+    else
+      FYearUD.Position := FYear;
+    if(FMonth = 2) then
+      InitDays(FALSE);
+    CheckDays;
+    DoChange;
+  finally
+    FYearChanging := FALSE;
+  end;
+end;
+
+procedure TORDateCombo.CheckDays;
+var
+  MaxDays: integer;
+
+begin
+  if(FIncludeMonth and assigned(FMonthCombo)) then
+  begin
+    FMonthCombo.Enabled := (FYear > 0);
+    if (FYear = 0) then
+      SetMonth(0); 
+    if(FIncludeMonth and FIncludeDay and assigned(FDayCombo)) then
+    begin
+      FDayCombo.Enabled := ((FYear > 0) and (FMonth > 0));
+      MaxDays := DaysPerMonth(FYear, FMonth);
+      if(FDay > MaxDays) then
+        SetDay(MaxDays);
+    end;
+  end;
+end;
+
+procedure TORDateCombo.Loaded;
+begin
+  inherited;
+  if(not FCtrlsCreated) then
+    Rebuild;
+end;
+
+procedure TORDateCombo.Paint;
+begin
+  if(not FCtrlsCreated) then
+    Rebuild;
+  inherited;
+end;
+
+procedure TORDateCombo.BtnClicked(Sender: TObject);
+var
+  mm, dd, yy: integer;
+  m, d, y: word;
+  DateDialog: TORDateTimeDlg;
+
+begin
+  DateDialog := TORDateTimeDlg.Create(self);
+  try
+    mm := FMonth;
+    dd := FDay;
+    yy := FYear;
+    DecodeDate(Now, y, m, d);
+    if(FYear = 0) then FYear := y;
+    if(FYear = y) then
+    begin
+      if((FMonth = 0) or (FMonth = m)) and (FDay = 0) then
+      begin
+        FMonth := m;
+        FDay := d;
+      end;
+    end;
+    if(FMonth = 0) then
+      FMonth := 1;
+    if(FDay = 0) then
+      FDay := 1;
+    DateDialog.FMDateTime := GetFMDate;
+    DateDialog.DateOnly := TRUE;
+    DateDialog.RequireTime := FALSE;
+    if DateDialog.Execute then
+    begin
+      FYear := 0;
+      FMonth := 0;
+      FDay := 0;
+      SetFMDate(DateDialog.FMDateTime);
+    end
+    else
+    begin
+      SetYear(yy);
+      SetMonth(mm);
+      SetDay(dd);
+    end;
+  finally
+    DateDialog.Free;
+  end;
+end;
+
+procedure TORDateCombo.YearUDChange(Sender: TObject; var AllowChange: Boolean;
+                                    NewValue: Smallint; Direction: TUpDownDirection);
+var
+  y, m, d: word;
+
+begin
+  if FYearChanging then exit;
+  FYearChanging := TRUE;
+  try
+    if FYearUD.Position = (FirstYear-1) then
+    begin
+      DecodeDate(Now, y, m, d);
+      FYear := y;
+      FYearUD.Position := y;
+      AllowChange := FALSE;
+    end
+    else
+      FYear := NewValue;
+    if(FYear < FirstYear) or (FYear > LastYear) then
+      FYear := 0;
+    if(FYear = 0) then
+      FYearEdit.Text := '    '
+    else
+      FYearEdit.Text := IntToStr(FYear);
+    if(FMonth = 2) then
+      InitDays(FALSE);
+    CheckDays;
+    DoChange;
+  finally
+    FYearChanging := FALSE;
+  end;
+end;
+
+procedure TORDateCombo.YearKeyPress(Sender: TObject; var Key: Char);
+begin
+  if(Key in ['0'..'9']) and (FYearEdit.Text = '    ') then
+  begin
+    FYearEdit.Text := Key + '   ';
+    Key := #0;
+    FYearEdit.SelStart := 1;
+    FYearEdit.SelText := '';
+  end;
+end;
+
+function TORDateCombo.GetFMDate: TFMDateTime;
+begin
+  if(FYear < FirstYear) then
+    Result := 0
+  else
+    Result := ((FYear - 1700) * 10000 + FMonth * 100 + FDay);
+end;
+
+procedure TORDateCombo.SetFMDate(const Value: TFMDateTime);
+var
+  ival, mo, dy: integer;
+              
+begin
+  if(Value = 0) then
+  begin
+    SetYear(0);
+    SetMonth(0);
+  end
+  else
+  begin
+    ival := trunc(Value);
+    if(length(inttostr(ival)) <> 7) then
+      exit;
+    dy := (ival mod 100);
+    ival := ival div 100;
+    mo := ival mod 100;
+    ival := ival div 100;
+    SetYear(ival + 1700);
+    SetMonth(mo);
+    InitDays(FALSE);
+    SetDay(dy);
+  end;
+end;
+
+function TORDateCombo.DateText: string;
+begin
+  Result := '';
+  if(FYear > 0) then
+  begin
+    if(FMonth > 0) then
+    begin
+      if FLongMonths then
+        Result := LongMonthNames[FMonth]
+      else
+        Result := ShortMonthNames[FMonth];
+      if(FDay > 0) then
+        Result := Result + ' ' + IntToStr(FDay);
+      Result := Result + ', ';
+    end;
+    Result := Result + IntToStr(FYear);
+  end;
+end;
+
+procedure TORDateCombo.DoChange;
+begin
+  if assigned(FOnChange) then
+    FOnChange(Self);
+end;
+
+procedure TORDateCombo.Resized(Sender: TObject);
+begin
+  Rebuild;
+end;
+
+procedure TORDateCombo.CMFontChanged(var Message: TMessage);
+begin
+  inherited;
+  Rebuild;
+end;
+
+function TORDateCombo.Text: string;
+var
+  tmp, fmt, m: string;
+
+begin
+  Result := '';
+  tmp := FloatToStr(FMDate);
+  if(tmp <> '') and (tmp <> '0') and (length(Tmp) >= 7) then
+  begin
+    if FLongMonths then
+      m := 'mmmm'
+    else
+      m := 'mmm';
+    if(copy(tmp,4,4) = '0000') then
+      fmt := 'yyyy'
+    else
+    if(copy(tmp,6,2) = '00') then
+      fmt := m + ', YYYY'
+    else
+      fmt := m + ' D, YYYY';
+    Result := FormatFMDateTimeStr(fmt, tmp)
+  end;
+end;
+
+
+procedure Register;
+{ used by Delphi to put components on the Palette }
+begin
+  RegisterComponents('CPRS', [TORDateTimeDlg, TORDateBox, TORDateCombo]);
+end;
+
+procedure TORDateCombo.SetTemplateField(const Value: boolean);
+begin
+  if FTemplateField <> Value then
+  begin
+    FTemplateField := Value;
+    Rebuild;
+  end;
+end;
+
+initialization
+  uServerToday := 0;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmCal.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmCal.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmCal.pas	(revision 1676)
@@ -0,0 +1,56 @@
+unit ORDtTmCal;
+
+interface
+
+uses SysUtils, Windows, Classes, Graphics, Grids, Calendar;
+
+type
+  TORCalendar = class(TCalendar)
+  protected
+    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
+    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
+  end;
+
+procedure Register;
+
+implementation
+
+{ TORCalendar ------------------------------------------------------------------------------- }
+
+procedure TORCalendar.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
+{ uses the Calendar that is part of Samples and highlights the current date }
+var
+  TheText: string;
+  CurMonth, CurYear, CurDay: Word;
+begin
+  TheText := CellText[ACol, ARow];
+  with ARect, Canvas do
+  begin
+    DecodeDate(Date, CurYear, CurMonth, CurDay);
+    if (CurYear = Year) and (CurMonth = Month) and (IntToStr(CurDay) = TheText) then
+    begin
+      TheText := '[' + TheText + ']';
+      Font.Style := [fsBold];
+    end;
+    TextRect(ARect, Left + (Right - Left - TextWidth(TheText)) div 2,
+      Top + (Bottom - Top - TextHeight(TheText)) div 2, TheText);
+  end;
+end;
+
+procedure TORCalendar.KeyDown(var Key: Word; Shift: TShiftState);
+begin
+  inherited;
+  if Key = VK_PRIOR then
+    CalendarDate := IncMonth(CalendarDate,-1)
+  else if Key = VK_NEXT then
+    CalendarDate := IncMonth(CalendarDate,1);
+end;
+
+procedure Register;
+{ used by Delphi to put components on the Palette }
+begin
+  RegisterComponents('CPRS', [TORCalendar]);
+end;
+
+end.
+ 
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmRng.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmRng.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmRng.dfm	(revision 1676)
@@ -0,0 +1,60 @@
+object ORfrmDateRange: TORfrmDateRange
+  Left = 103
+  Top = 587
+  BorderIcons = []
+  BorderStyle = bsDialog
+  Caption = 'Date Range'
+  ClientHeight = 132
+  ClientWidth = 274
+  Color = clBtnFace
+  ParentFont = True
+  OldCreateOrder = True
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lblStart: TLabel
+    Left = 8
+    Top = 44
+    Width = 52
+    Height = 13
+    Caption = 'Begin Date'
+  end
+  object lblStop: TLabel
+    Left = 145
+    Top = 44
+    Width = 44
+    Height = 13
+    Caption = 'End Date'
+  end
+  object lblInstruct: TLabel
+    Left = 8
+    Top = 8
+    Width = 258
+    Height = 29
+    AutoSize = False
+    Caption = 'Select a date range -'
+    WordWrap = True
+  end
+  object cmdOK: TButton
+    Left = 114
+    Top = 103
+    Width = 72
+    Height = 21
+    Caption = 'OK'
+    Default = True
+    TabOrder = 0
+    OnClick = cmdOKClick
+  end
+  object cmdCancel: TButton
+    Left = 194
+    Top = 103
+    Width = 72
+    Height = 21
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 1
+    OnClick = cmdCancelClick
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmRng.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmRng.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORDtTmRng.pas	(revision 1676)
@@ -0,0 +1,236 @@
+unit ORDtTmRng;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+  StdCtrls, ORFn, OR2006Compatibility, ORDtTm;
+
+type
+  TORfrmDateRange = class(Tfrm2006Compatibility)
+    lblStart: TLabel;
+    lblStop: TLabel;
+    cmdOK: TButton;
+    cmdCancel: TButton;
+    lblInstruct: TLabel;
+    procedure cmdOKClick(Sender: TObject);
+    procedure cmdCancelClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+    FCalStart: TORDateBox;
+    FCalStop:  TORDateBox;
+  protected
+    procedure Loaded; override;
+  end;
+
+  TORDateRangeDlg = class(TComponent)
+  private
+    FTextOfStart: string;
+    FTextOfStop: string;
+    FFMDateStart: TFMDateTime;
+    FFMDateStop: TFMDateTime;
+    FRelativeStart: string;
+    FRelativeStop: string;
+    FDateOnly: Boolean;
+    FRequireTime: Boolean;
+    FInstruction: string;
+    FLabelStart: string;
+    FLabelStop: string;
+    FFormat: string;
+    procedure SetDateOnly(Value: Boolean);
+    procedure SetFMDateStart(Value: TFMDateTime);
+    procedure SetFMDateStop(Value: TFMDateTime);
+    procedure SetTextOfStart(const Value: string);
+    procedure SetTextOfStop(const Value: string);
+    procedure SetRequireTime(Value: Boolean);
+  public
+    constructor Create(AOwner: TComponent); override;
+    function Execute: Boolean;
+    property RelativeStart: string    read FRelativeStart;
+    property RelativeStop:  string    read FRelativeStop;
+  published
+    property DateOnly:    Boolean     read FDateOnly    write SetDateOnly;
+    property FMDateStart: TFMDateTime read FFMDateStart write SetFMDateStart;
+    property FMDateStop:  TFMDateTime read FFMDateStop  write SetFMDateStop;
+    property Instruction: string      read FInstruction write FInstruction;
+    property LabelStart:  string      read FLabelStart  write FLabelStart;
+    property LabelStop:   string      read FLabelStop   write FLabelStop;
+    property RequireTime: Boolean     read FRequireTime write SetRequireTime;
+    property Format:      string      read FFormat      write FFormat;
+    property TextOfStart: string      read FTextOfStart write SetTextOfStart;
+    property TextOfStop:  string      read FTextOfStop  write SetTextOfStop;
+ end;
+
+  procedure Register;
+
+implementation
+
+{$R *.DFM}
+
+const
+  FMT_DATETIME = 'mmm d,yy@hh:nn';
+  FMT_DATEONLY = 'mmm d,yy';
+
+{ TORDateRangeDlg --------------------------------------------------------------------------- }
+
+constructor TORDateRangeDlg.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FInstruction := 'Enter a date range -';
+  FLabelStart  := 'Begin Date';
+  FLabelStop   := 'End Date';
+  FFormat      := FMT_DATETIME;
+end;
+
+function TORDateRangeDlg.Execute: Boolean;
+var
+  frmDateRange: TORfrmDateRange;
+begin
+  frmDateRange := TORfrmDateRange.Create(Application);
+  try
+    with frmDateRange do
+    begin
+      FCalStart.Text        := FTextOfStart;
+      FCalStop.Text         := FTextOfStop;
+      if FFMDateStart > 0 then
+      begin
+        FCalStart.FMDateTime := FFMDateStart;
+        FCalStart.Text := FormatFMDateTime(FFormat, FFMDateStart);
+      end;
+      if FFMDateStop > 0 then
+      begin
+        FCalStop.FMDateTime := FFMDateStop;
+        FCalStop.Text := FormatFMDateTime(FFormat, FFMDateStop);
+      end;
+      FCalStart.DateOnly    := FDateOnly;
+      FCalStop.DateOnly     := FDateOnly;
+      FCalStart.RequireTime := FRequireTime;
+      FCalStop.RequireTime  := FRequireTime;
+      lblInstruct.Caption  := FInstruction;
+      lblStart.Caption     := FLabelStart;
+      lblStop.Caption      := FLabelStop;
+
+      Result := (ShowModal = IDOK);
+      if Result then
+      begin
+        FTextOfStart   := FCalStart.Text;
+        FTextOfStop    := FCalStop.Text;
+        FFMDateStart   := FCalStart.FMDateTime;
+        FFMDateStop    := FCalStop.FMDateTime;
+        FRelativeStart := FCalStart.RelativeTime;
+        FRelativeStop  := FCalStop.RelativeTime;
+      end;
+    end;
+  finally
+    frmDateRange.Free;
+  end;
+end;
+
+procedure TORDateRangeDlg.SetDateOnly(Value: Boolean);
+begin
+  FDateOnly := Value;
+  if FDateOnly then
+  begin
+    FRequireTime := False;
+    FMDateStart  := Int(FFMDateStart);
+    FMDateStop   := Int(FFMDateStop);
+    if FFormat = FMT_DATETIME then FFormat := FMT_DATEONLY;
+  end;
+end;
+
+procedure TORDateRangeDlg.SetRequireTime(Value: Boolean);
+begin
+  FRequireTime := Value;
+  if FRequireTime then
+  begin
+    if FFormat = FMT_DATEONLY then FFormat := FMT_DATETIME;
+    SetDateOnly(False);
+  end;
+end;
+
+procedure TORDateRangeDlg.SetFMDateStart(Value: TFMDateTime);
+begin
+  FFMDateStart := Value;
+  FTextOfStart := FormatFMDateTime(FFormat, FFMDateStart);
+end;
+
+procedure TORDateRangeDlg.SetFMDateStop(Value: TFMDateTime);
+begin
+  FFMDateStop := Value;
+  FTextOfStop := FormatFMDateTime(FFormat, FFMDateStop);
+end;
+
+procedure TORDateRangeDlg.SetTextOfStart(const Value: string);
+begin
+  FTextOfStart := Value;
+  FFMDateStart := 0;
+end;
+
+procedure TORDateRangeDlg.SetTextOfStop(const Value: string);
+begin
+  FTextOfStop := Value;
+  FFMDateStop := 0;
+end;
+
+
+{ TORfrmDateRange --------------------------------------------------------------------------- }
+
+procedure TORfrmDateRange.cmdOKClick(Sender: TObject);
+var
+  ErrMsg: string;
+begin
+  FCalStart.Validate(ErrMsg);
+  if ErrMsg <> '' then
+  begin
+    Application.MessageBox(PChar(ErrMsg), 'Start Date Error', MB_OK);
+    Exit;
+  end;
+  FCalStop.Validate(ErrMsg);
+  if ErrMsg <> '' then
+  begin
+    Application.MessageBox(PChar(ErrMsg), 'Stop Date Error', MB_OK);
+    Exit;
+  end;
+  ModalResult := mrOK;
+end;
+
+procedure TORfrmDateRange.cmdCancelClick(Sender: TObject);
+begin
+  ModalResult := mrCancel;
+end;
+
+procedure Register;
+{ used by Delphi to put components on the Palette }
+begin
+  RegisterComponents('CPRS', [TORDateRangeDlg]);
+end;
+
+procedure TORfrmDateRange.FormCreate(Sender: TObject);
+{ Create date boxes here to avoid problem where TORDateBox is not already on component palette. }
+begin
+  FCalStart := TORDateBox.Create(Self);
+  FCalStart.Parent := Self;
+  FCalStart.SetBounds(8, 58, 121, 21);
+  FCalStart.TabOrder := 0;
+  FCalStop := TORDateBox.Create(Self);
+  FCalStop.Parent := Self;
+  FCalStop.SetBounds(145, 58, 121, 21);
+  FCalStop.TabOrder := 1;
+  ResizeAnchoredFormToFont(self);
+  UpdateColorsFor508Compliance(self);
+end;
+
+procedure TORfrmDateRange.FormDestroy(Sender: TObject);
+begin
+  FCalStart.Free;
+  FCalStop.Free;
+end;
+
+procedure TORfrmDateRange.Loaded;
+begin
+  inherited Loaded;
+  UpdateColorsFor508Compliance(Self);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORFn.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORFn.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORFn.pas	(revision 1676)
@@ -0,0 +1,2214 @@
+unit ORFn;
+
+{$OPTIMIZATION OFF}
+
+interface  // --------------------------------------------------------------------------------
+
+uses SysUtils, Windows, Messages, Classes, Controls, StdCtrls, ExtCtrls, ComCtrls, Forms,
+     Graphics, Menus, RichEdit, Buttons;
+
+const
+  U = '^';
+  CRLF = #13#10;
+  BOOLCHAR: array[Boolean] of Char = ('0', '1');
+  UM_STATUSTEXT = (WM_USER + 302);               // used to send update status msg to main form
+
+var
+  ScrollBarHeight: integer = 0;
+
+type
+  TFMDateTime = Double;
+  TORIdleCallProc = procedure(Msg: string);
+
+{ Date/Time functions }
+function DateTimeToFMDateTime(ADateTime: TDateTime): TFMDateTime;
+function FMDateTimeToDateTime(ADateTime: TFMDateTime): TDateTime;
+function FMDateTimeOffsetBy(ADateTime: TFMDateTime; DaysDiff: Integer): TFMDateTime;
+function FormatFMDateTime(AFormat: string; ADateTime: TFMDateTime): string;
+function FormatFMDateTimeStr(const AFormat, ADateTime: string): string;
+function IsFMDateTime(x: string): Boolean;
+function MakeFMDateTime(const AString: string): TFMDateTime;
+procedure SetListFMDateTime(AFormat: string; AList: TStringList; ADelim: Char;
+                            PieceNum: Integer; KeepBad: boolean = FALSE);
+
+{ Numeric functions }
+function HigherOf(i, j: Integer): Integer;
+function LowerOf(i, j: Integer): Integer;
+function StrToFloatDef(const S: string; ADefault: Extended): Extended;
+
+{ String functions }
+function CharAt(const x: string; APos: Integer): Char;
+function ContainsAlpha(const x: string): Boolean;
+function ContainsVisibleChar(const x: string): Boolean;
+function ConvertSpecialStrings(const x: string): String;
+function CRCForFile(AFileName: string): DWORD;
+function CRCForStrings(AStringList: TStrings): DWORD;
+procedure ExpandTabsFilter(AList: TStrings; ATabWidth: Integer);
+function ExtractInteger(x: string): Integer;
+function ExtractFloat(x: string): Extended;
+function ExtractDefault(Src: TStrings; const Section: string): string;
+procedure ExtractItems(Dest, Src: TStrings; const Section: string);
+procedure ExtractText(Dest, Src: TStrings; const Section: string);
+function FilteredString(const x: string; ATabWidth: Integer = 8): string;
+procedure InvertStringList(AList: TStringList);
+procedure LimitStringLength(var AList: TStringList; MaxLength: Integer);
+function MixedCase(const x: string): string;
+procedure MixedCaseList(AList: TStrings);
+procedure MixedCaseByPiece(AList: TStrings; ADelim: Char; PieceNum: Integer);
+function Piece(const S: string; Delim: char; PieceNum: Integer): string;
+function Pieces(const S: string; Delim: char; FirstNum, LastNum: Integer): string;
+function ComparePieces(P1, P2: string; Pieces: array of integer; Delim:
+                       char = '^'; CaseInsensitive: boolean = FALSE): integer;
+procedure PiecesToList(x: string; ADelim: Char; AList: TStrings);
+function ReverseStr(const x: string): string;
+procedure SetPiece(var x: string; Delim: Char; PieceNum: Integer; const NewPiece: string);
+procedure SetPieces(var x: string; Delim: Char; Pieces: Array of Integer;
+                                                FromString: string);
+procedure SortByPiece(AList: TStringList; ADelim: Char; PieceNum: Integer);
+function DelimCount(const Str, Delim: string): integer;
+procedure QuickCopy(AFrom, ATo: TObject);
+procedure QuickAdd(AFrom, ATo: TObject);
+procedure FastAssign(source, destination: TStrings);
+procedure FastAddStrings(source, destination: TStrings);
+function ValidFileName(const InitialFileName: string): string;
+
+{ Display functions }
+procedure ForceInsideWorkArea( var Rect: TRect);
+//procedure ClearControl(AControl: TControl);
+function InfoBox(const Text, Caption: string; Flags: Word): Integer;
+procedure LimitEditWidth(AControl: TWinControl; NumChars: Integer);
+function MainFont: TFont;
+function MainFontSize: Integer;
+function MainFontWidth: Integer;
+function MainFontHeight: Integer;
+function BaseFont: TFont;
+procedure RedrawSuspend(AHandle: HWnd);
+procedure RedrawActivate(AHandle: HWnd);
+//procedure ResetControl(AControl: TControl);
+procedure ResetSelectedForList(AListBox: TListBox);
+procedure ResizeFormToFont(AForm: TForm);
+procedure ResizeAnchoredFormToFont( AForm: TForm);
+procedure AdjustForWindowsXPStyleTitleBar(AForm: TForm);
+function ResizeWidth( OldFont: TFont; NewFont: TFont; OldWidth: integer): integer;
+function ResizeHeight( OldFont: TFont; NewFont: TFont; OldHeight: integer): integer;
+procedure ResizeToFont(FontSize: Integer; var W, H: Integer);
+procedure SetEqualTabStops(AControl: TControl; TabWidth: Integer = 8);
+procedure StatusText(const S: string);
+function ShowMsgOn(AnExpression: Boolean; const AMsg, ACaption: string): Boolean;
+function TextWidthByFont(AFontHandle: THandle; const x: string): Integer;
+function TextHeightByFont(AFontHandle: THandle; const x: string): Integer;
+function WrappedTextHeightByFont(Canvas: TCanvas; NewFont: TFont; ItemText: string; var ARect: TRect): integer;
+function NumCharsFitInWidth(AFontHandle: THandle; const x: string; const MaxLen: integer): Integer;
+function PopupComponent(Sender: TObject; PopupMenu: TPopupMenu): TComponent;
+procedure ReformatMemoParagraph(AMemo: TCustomMemo);
+
+function BlackColorScheme: Boolean;
+function NormalColorScheme: Boolean;
+function Get508CompliantColor(Color: TColor): TColor;
+procedure UpdateColorsFor508Compliance(control: TControl; InputEditControl: boolean = FALSE);
+procedure UpdateReadOnlyColorScheme(Control: TControl; ReadOnly: boolean);
+
+{ ListBox Grid functions }
+procedure ListGridDrawCell(AListBox: TListBox; AHeader: THeaderControl; ARow, AColumn: Integer;
+  const x: string; WordWrap: Boolean);
+procedure ListGridDrawLines(AListBox: TListBox; AHeader: THeaderControl; Index: Integer;
+  State: TOwnerDrawState);
+function ListGridRowHeight(AListBox: TListBox; AHeader: THeaderControl; ARow, AColumn: Integer;
+  const x: string): Integer;
+
+{ Misc functions }
+{ You MUST pass an address to an object variable to get KillObj to work }
+procedure KillObj(ptr: Pointer; KillObjects: boolean = FALSE);
+
+{ do NOT use CallWhenIdle to call RPCs.  Use CallRPCWhenIdle in ORNet }
+procedure CallWhenIdle(CallProc: TORIdleCallProc; Msg: String);
+procedure CallWhenIdleNotifyWhenDone(CallProc, DoneProc: TORIdleCallProc; Msg: String);
+procedure menuHideAllBut(aMenuItem: tMenuItem; butItems: array of tMenuItem);
+function TabIsPressed : Boolean;
+function ShiftTabIsPressed : Boolean;
+function EnterIsPressed : Boolean;
+
+implementation  // ---------------------------------------------------------------------------
+
+uses
+  ORCtrls, Grids, Chart, CheckLst, VAUtils;
+
+const
+  { names of months used by FormatFMDateTime }
+  MONTH_NAMES_SHORT: array[1..12] of string[3] =
+    ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
+  MONTH_NAMES_LONG:  array[1..12] of string[9] =
+    ('January','February','March','April','May','June','July','August','September','October',
+     'November', 'December');
+
+     // ConvertSpecialStrings arrays
+  SearchChars:  array[0..7] of String = (' Ii ',' Iii ',' Iv ',' Vi ',' Vii ',' Viii ',' Ix ','-Va');
+  ReplaceChars: array[0..7] of String = (' II ',' III ',' IV ',' VI ',' VII ',' VIII ',' IX ','-VA');
+
+  { table for calculating CRC values (DWORD is Integer in Delphi 3, Cardinal in Delphi 4}
+  CRC32_TABLE: array[0..255] of DWORD =
+    ($0,       $77073096, $EE0E612C, $990951BA, $76DC419,  $706AF48F, $E963A535, $9E6495A3,
+    $EDB8832,  $79DCB8A4, $E0D5E91E, $97D2D988, $9B64C2B,  $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE, $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC, $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172, $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940, $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116, $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924, $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+    $76DC4190, $1DB7106,  $98D220BC, $EFD5102A, $71B18589, $6B6B51F,  $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $F00F934,  $9609A88E, $E10E9818, $7F6A0DBB, $86D3D2D,  $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E, $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C, $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2, $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0, $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086, $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4, $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+    $EDB88320, $9ABFB3B6, $3B6E20C,  $74B1D29A, $EAD54739, $9DD277AF, $4DB2615,  $73DC1683,
+    $E3630B12, $94643B84, $D6D6A3E,  $7A6A5AA8, $E40ECF0B, $9309FF9D, $A00AE27,  $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE, $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC, $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252, $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60, $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236, $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04, $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+    $9B64C2B0, $EC63F226, $756AA39C, $26D930A,  $9C0906A9, $EB0E363F, $72076785, $5005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $CB61B38,  $92D28E9B, $E5D5BE0D, $7CDCEFB7, $BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E, $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C, $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2, $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0, $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6, $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94, $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+    {Properties assigned to BaseFont}
+    BaseFontSize = 8;
+    BaseFontName = 'MS Sans Serif';
+var
+    FBaseFont: TFont;
+type
+    EFMDateTimeError = class(Exception);
+
+    {TFontControl is an artifact used for font resizing.  Do not add virtual
+    methods or class variables to it!}
+    TFontControl = class(TControl)
+    public
+      property Font;
+      property ParentFont;
+    end;
+
+{ Date/Time functions }
+
+function DateTimeToFMDateTime(ADateTime: TDateTime): TFMDateTime;
+{ converts a Delphi date/time type to a Fileman date/time (type double) }
+var
+  y, m, d, h, n, s, l: Word;
+  DatePart,TimePart: Integer;
+begin
+  DecodeDate(ADateTime, y, m, d);
+  DecodeTime(ADateTime, h, n, s, l);
+  DatePart := ((y-1700)*10000) + (m*100) + d;
+  TimePart := (h*10000) + (n*100) + s;
+  Result :=  DatePart + (TimePart / 1000000);
+end;
+
+function FMDateTimeToDateTime(ADateTime: TFMDateTime): TDateTime;
+{ converts a Fileman date/time (type double) to a Delphi date/time }
+var
+  ADate, ATime: TDateTime;
+  DatePart, TimePart: string;
+begin
+  DatePart := Piece(FloatToStrF(ADateTime, ffFixed, 14, 6), '.', 1);
+  TimePart := Piece(FloatToStrF(ADateTime, ffFixed, 14, 6), '.', 2) + '000000';
+  if Length(DatePart) <> 7 then raise EFMDateTimeError.Create('Invalid Fileman Date');
+  if Copy(TimePart, 1, 2) = '24' then TimePart := '23595959';
+  ADate := EncodeDate(StrToInt(Copy(DatePart, 1, 3)) + 1700,
+                      StrToInt(Copy(DatePart, 4, 2)),
+                      StrToInt(Copy(DatePart, 6, 2)));
+  ATime := EncodeTime(StrToInt(Copy(TimePart, 1, 2)),
+                      StrToInt(Copy(TimePart, 3, 2)),
+                      StrToInt(Copy(TimePart, 5, 2)), 0);
+  Result := ADate + ATime;
+end;
+
+function FMDateTimeOffsetBy(ADateTime: TFMDateTime; DaysDiff: Integer): TFMDateTime;
+{ adds / subtracts days from a Fileman date/time and returns the offset Fileman date/time }
+var
+  Julian: TDateTime;
+begin
+  Julian := FMDateTimeToDateTime(ADateTime);
+  Result := DateTimeToFMDateTime(Julian + DaysDiff);
+end;
+
+function FormatFMDateTime(AFormat: string; ADateTime: TFMDateTime): string;
+{ formats a Fileman Date/Time using (mostly) the same format string as Delphi FormatDateTime }
+var
+  x: string;
+  y, m, d, h, n, s: Integer;
+
+  function TrimFormatCount: Integer;
+  { delete repeating characters and count how many were deleted }
+  var
+    c: Char;
+  begin
+    Result := 0;
+    c := AFormat[1];
+    repeat
+      Delete(AFormat, 1, 1);
+      Inc(Result);
+    until CharAt(AFormat, 1) <> c;
+  end;
+
+begin {FormatFMDateTime}
+  Result := '';
+  if not (ADateTime > 0) then Exit;
+  x := FloatToStrF(ADateTime, ffFixed, 15, 6) + '0000000';
+  y := StrToIntDef(Copy(x,  1, 3), 0) + 1700;
+  m := StrToIntDef(Copy(x,  4, 2), 0);
+  d := StrToIntDef(Copy(x,  6, 2), 0);
+  h := StrToIntDef(Copy(x,  9, 2), 0);
+  n := StrToIntDef(Copy(x, 11, 2), 0);
+  s := StrToIntDef(Copy(x, 13, 2), 0);
+  while Length(AFormat) > 0 do
+    case UpCase(AFormat[1]) of
+    '"': begin                                                                 // literal
+           Delete(AFormat, 1, 1);
+           while not (CharAt(AFormat, 1) in [#0, '"']) do
+           begin
+             Result := Result + AFormat[1];
+             Delete(AFormat, 1, 1);
+           end;
+           if CharAt(AFormat, 1) = '"' then Delete(AFormat, 1, 1);
+         end;
+    'D': case TrimFormatCount of                                               // day/date
+         1: if d > 0 then Result := Result + IntToStr(d);
+         2: if d > 0 then Result := Result + FormatFloat('00', d);
+         end;
+    'H': case TrimFormatCount of                                               // hour
+         1: Result := Result + IntToStr(h);
+         2: Result := Result + FormatFloat('00', h);
+         end;
+    'M': case TrimFormatCount of                                               // month
+         1: if m > 0 then Result := Result + IntToStr(m);
+         2: if m > 0 then Result := Result + FormatFloat('00', m);
+         3: if m in [1..12] then Result := Result + MONTH_NAMES_SHORT[m];
+         4: if m in [1..12] then Result := Result + MONTH_NAMES_LONG[m];
+         end;
+    'N': case TrimFormatCount of                                               // minute
+         1: Result := Result + IntToStr(n);
+         2: Result := Result + FormatFloat('00', n);
+         end;
+    'S': case TrimFormatCount of                                               // second
+         1: Result := Result + IntToStr(s);
+         2: Result := Result + FormatFloat('00', s);
+         end;
+    'Y': case TrimFormatCount of                                               // year
+         2: if y > 0 then Result := Result + Copy(IntToStr(y), 3, 2);
+         4: if y > 0 then Result := Result + IntToStr(y);
+         end;
+    else begin                                                                 // other
+           Result := Result + AFormat[1];
+           Delete(AFormat, 1, 1);
+         end;
+    end; {case}
+end; {FormatFMDateTime}
+
+function FormatFMDateTimeStr(const AFormat, ADateTime: string): string;
+var
+  FMDateTime: TFMDateTime;
+begin
+  Result := ADateTime;
+  if IsFMDateTime(ADateTime) then
+  begin
+    FMDateTime := MakeFMDateTime(ADateTime);
+    Result := FormatFMDateTime(AFormat, FMDateTime);
+  end;
+end;
+
+function IsFMDateTime(x: string): Boolean;
+var
+  i: Integer;
+begin
+  Result := False;
+  if Length(x) < 7 then Exit;
+  for i := 1 to 7 do if not (x[i] in ['0'..'9']) then Exit;
+  if (Length(x) > 7) and (x[8] <> '.') then Exit;
+  if (Length(x) > 8) and not (x[9] in ['0'..'9']) then Exit;
+  Result := True;
+end;
+
+function MakeFMDateTime(const AString: string): TFMDateTime;
+begin
+  Result := -1;
+  if (Length(AString) > 0) and IsFMDateTime(AString) then Result := StrToFloat(AString);
+end;
+
+procedure SetListFMDateTime(AFormat: string; AList: TStringList; ADelim: Char;
+                            PieceNum: Integer; KeepBad: boolean = FALSE);
+var
+  i: Integer;
+  s, x, x1: string;
+  
+begin
+  for i := 0 to AList.Count - 1 do
+  begin
+    s := AList[i];
+    x := Piece(s, ADelim, PieceNum);
+    if Length(x) > 0 then
+    begin
+      x1 := FormatFMDateTime(AFormat, MakeFMDateTime(x));
+      if(x1 <> '') or (not KeepBad) then
+        x := x1; 
+    end;
+    SetPiece(s, ADelim, PieceNum, x);
+    AList[i] := s;
+  end;
+end;
+
+{ Numeric functions }
+
+function HigherOf(i, j: Integer): Integer;
+{ returns the greater of two integers }
+begin
+  Result := i;
+  if j > i then Result := j;
+end;
+
+function LowerOf(i, j: Integer): Integer;
+{ returns the lesser of two integers }
+begin
+  Result := i;
+  if j < i then Result := j;
+end;
+
+function StrToFloatDef(const S: string; ADefault: Extended): Extended;
+begin
+  if not TextToFloat(PChar(S), Result, fvExtended) then
+    Result := ADefault;
+end;
+
+{ String functions }
+
+function CharAt(const x: string; APos: Integer): Char;
+{ returns a character at a given position in a string or the null character if past the end }
+begin
+  if Length(x) < APos then Result := #0 else Result := x[APos];
+end;
+
+function ContainsAlpha(const x: string): Boolean;
+{ returns true if the string contains any alpha characters }
+var
+  i: Integer;
+begin
+  Result := False;
+  for i := 1 to Length(x) do if x[i] in ['A'..'Z','a'..'z'] then
+  begin
+    Result := True;
+    break;
+  end;
+end;
+
+function ContainsVisibleChar(const x: string): Boolean;
+{ returns true if the string contains any printable characters }
+var
+  i: Integer;
+begin
+  Result := False;
+  for i := 1 to Length(x) do if x[i] in ['!'..'~'] then  // ordinal values 33..126
+  begin
+    Result := True;
+    break;
+  end;
+end;
+
+function ConvertSpecialStrings(const x: string): string;
+var i : Integer;
+begin
+   for i := 0 to Length(SearchChars)-1 do
+    begin
+       Result := StringReplace(Result,SearchChars[i], ReplaceChars[i],[rfReplaceAll]);
+    end;
+end;
+
+function UpdateCrc32(Value: DWORD; var Buffer: array of Byte; Count: Integer): DWORD;
+var
+ i: integer;
+begin
+ Result:=Value;
+ for i := 0 to Pred(Count) do
+   Result := ((Result shr 8) and $00FFFFFF) xor
+     CRC32_TABLE[(Result xor Buffer[i]) and $000000FF];
+end;
+
+function CRCForFile(AFileName: string): DWORD;
+const
+ BUF_SIZE = 16383;
+type
+ TBuffer = array[0..BUF_SIZE] of Byte;
+var
+ Buffer: Pointer;
+ AHandle, BytesRead: Integer;
+begin
+ Result:=$FFFFFFFF;
+ GetMem(Buffer, BUF_SIZE);
+ AHandle := FileOpen(AFileName, fmShareDenyWrite);
+ repeat
+  BytesRead := FileRead(AHandle, Buffer^, BUF_SIZE);
+  Result := UpdateCrc32(Result, TBuffer(Buffer^), BytesRead);
+ until BytesRead <> BUF_SIZE;
+ FileClose(AHandle);
+ FreeMem(Buffer);
+ Result := not Result;
+end;
+
+function CRCForStrings(AStringList: TStrings): DWORD;
+{ returns a cyclic redundancy check for a list of strings }
+var
+  i, j: Integer;
+begin
+  Result:=$FFFFFFFF;
+  for i := 0 to AStringList.Count - 1 do
+    for j := 1 to Length(AStringList[i]) do
+      Result:=((Result shr 8) and $00FFFFFF) xor
+        CRC32_TABLE[(Result xor Ord(AStringList[i][j])) and $000000FF];
+end;
+
+function FilteredString(const x: string; ATabWidth: Integer = 8): string;
+var
+  i, j: Integer;
+begin
+  Result := '';
+  for i := 1 to Length(x) do
+    case x[i] of
+            #9: for j := 1 to (ATabWidth - (Length(Result) mod ATabWidth)) do
+                  Result := Result + ' ';
+     #32..#127: Result := Result + x[i];
+    #128..#159: Result := Result + '?';
+  #10,#13,#160: Result := Result + ' ';
+    #161..#255: Result := Result + x[i];
+    end;
+  if Copy(Result, Length(Result), 1) = ' ' then Result := TrimRight(Result) + ' ';
+end;
+
+procedure ExpandTabsFilter(AList: TStrings; ATabWidth: Integer);
+var
+  i, j, k: Integer;
+  x, y: string;
+begin
+  with AList do for i := 0 to Count - 1 do
+  begin
+    x := Strings[i];
+    y := '';
+    for j := 1 to Length(x) do
+      case x[j] of
+                #9: for k := 1 to (ATabWidth - (Length(y) mod ATabWidth)) do y := y + ' ';
+         #32..#127: y := y + x[j];
+        #128..#159: y := y + '?';
+              #160: y := y + ' ';
+        #161..#255: y := y + x[j];
+      end;
+    if Copy(y, Length(y), 1) = ' ' then y := TrimRight(y) + ' ';
+    Strings[i] := y;
+    //Strings[i] := TrimRight(y) + ' ';
+  end;
+end;
+
+function ExtractInteger(x: string): Integer;
+{ strips leading & trailing alphas to return an integer }
+var
+  i: Integer;
+begin
+  while (Length(x) > 0) and not (x[1] in ['0'..'9']) do Delete(x, 1, 1);
+  for i := 1 to Length(x) do if not (x[i] in ['0'..'9']) then break;
+  Result := StrToIntDef(Copy(x, 1, i - 1), 0);
+end;
+
+function ExtractFloat(x: string): Extended;
+{ strips leading & trailing alphas to return a float }
+var
+  i: Integer;
+begin
+  while (Length(x) > 0) and not (x[1] in ['0'..'9', '.']) do Delete(x, 1, 1);
+  for i := 1 to Length(x) do if not (x[i] in ['0'..'9','.']) then break;
+  Result := StrToFloatDef(Copy(x, 1, i - 1), 0);
+end;
+
+function ExtractDefault(Src: TStrings; const Section: string): string;
+var
+  i: Integer;
+begin
+  Result := '';
+  i := -1;
+  repeat Inc(i) until (i = Src.Count) or (Src[i] = '~' + Section);
+  Inc(i);
+  if (i < Src.Count) and (Src[i][1] <> '~') then repeat
+    if Src[i][1] = 'd' then Result := Copy(Src[i], 2, MaxInt);
+    Inc(i);
+  until (i = Src.Count) or (Src[i][1] = '~') or (Length(Result) > 0);
+end;
+
+procedure ExtractItems(Dest, Src: TStrings; const Section: string);
+var
+  i: Integer;
+begin
+  i := -1;
+  repeat Inc(i) until (i = Src.Count) or (Src[i] = '~' + Section);
+  Inc(i);
+  if (i < Src.Count) and (Src[i][1] <> '~') then repeat
+    if Src[i][1] = 'i' then Dest.Add(Copy(Src[i], 2, MaxInt));
+    Inc(i);
+  until (i = Src.Count) or (Src[i][1] = '~');
+end;
+
+procedure ExtractText(Dest, Src: TStrings; const Section: string);
+var
+  i: Integer;
+begin
+  i := -1;
+  repeat Inc(i) until (i = Src.Count) or (Src[i] = '~' + Section);
+  Inc(i);
+  if (i < Src.Count) and (Src[i][1] <> '~') then repeat
+    if Src[i][1] = 't' then Dest.Add(Copy(Src[i], 2, MaxInt));
+    Inc(i);
+  until (i = Src.Count) or (Src[i][1] = '~');
+end;
+
+procedure InvertStringList(AList: TStringList);
+var
+  i: Integer;
+begin
+  with AList do for i := 0 to ((Count div 2) - 1) do Exchange(i, Count - i - 1);
+end;
+
+function MixedCase(const x: string): string;
+var
+  i: integer;
+begin
+  Result := x;
+  for i := 2 to Length(x) do
+     if (not (x[i-1] in [' ',',','-','.','/','^'])) and (x[i] in ['A'..'Z'])
+ // save line    if (not (x[i-1] in [' ','''',',','-','.','/','^'])) and (x[i] in ['A'..'Z'])
+      then Result[i] := Chr(Ord(x[i]) + 32)
+     else if ((x[i-1] in [' ',',','-','.','/','^'])) and (x[i] in ['a'..'z'])
+      then Result[i] := Chr(Ord(x[i]) - 32);
+  //Call added to satisfy the need for special string handling(Roman Numerals II-XI) GRE-06/02
+  Result := ConvertSpecialStrings(x);
+end;
+
+procedure MixedCaseList(AList: TStrings);
+var
+  i: integer;
+begin
+  for i := 0 to (AList.Count - 1) do AList[i] := MixedCase(AList[i]);
+end;
+
+procedure MixedCaseByPiece(AList: TStrings; ADelim: Char; PieceNum: Integer);
+var
+  i: Integer;
+  x, p: string;
+begin
+  for i := 0 to (AList.Count - 1) do
+  begin
+    x := AList[i];
+    p := MixedCase(Piece(x, ADelim, PieceNum));
+    SetPiece(x, ADelim, PieceNum, p);
+    AList[i] := x;
+  end;
+end;
+
+function Piece(const S: string; Delim: char; PieceNum: Integer): string;
+{ returns the Nth piece (PieceNum) of a string delimited by Delim }
+begin
+  Result := VAUtils.Piece(S, Delim, PieceNum);
+end;
+
+function Pieces(const S: string; Delim: char; FirstNum, LastNum: Integer): string;
+begin
+  Result := VAUtils.Pieces(S, Delim, FirstNum, LastNum);
+end;
+
+function ComparePieces(P1, P2: string; Pieces: array of integer; Delim:
+                       char = '^'; CaseInsensitive: boolean = FALSE): integer;
+var
+  i: integer;
+
+begin
+  i := 0;
+  Result := 0;
+  while i <= high(Pieces) do
+  begin
+    if(CaseInsensitive) then
+      Result := CompareText(Piece(P1, Delim, Pieces[i]),
+                            Piece(P2, Delim, Pieces[i]))
+    else
+      Result := CompareStr(Piece(P1, Delim, Pieces[i]),
+                           Piece(P2, Delim, Pieces[i]));
+    if(Result = 0) then
+      inc(i)
+    else
+      break;
+  end;
+end;
+
+procedure PiecesToList(x: string; ADelim: Char; AList: TStrings);
+{ adds each piece to a TStrings list, the list is cleared first }
+var
+  APiece: string;
+begin
+  AList.Clear;
+  while Length(x) > 0 do
+  begin
+    APiece := Piece(x, ADelim, 1);
+    AList.Add(APiece);
+    Delete(x, 1, Length(APiece) + 1);
+  end;
+end;
+
+function ReverseStr(const x: string): string;
+var
+  i, j: Integer;
+begin
+  SetString(Result, PChar(x), Length(x));
+  i := 0;
+  for j := Length(x) downto 1 do
+  begin
+    Inc(i);
+    Result[i] := x[j];
+  end;
+end;
+
+procedure SetPiece(var x: string; Delim: Char; PieceNum: Integer; const NewPiece: string);
+{ sets the Nth piece (PieceNum) of a string to NewPiece, adding delimiters as necessary }
+var
+  i: Integer;
+  Strt, Next: PChar;
+begin
+  i := 1;
+  Strt := PChar(x);
+  Next := StrScan(Strt, Delim);
+  while (i < PieceNum) and (Next <> nil) do
+  begin
+    Inc(i);
+    Strt := Next + 1;
+    Next := StrScan(Strt, Delim);
+  end;
+  if Next = nil then Next := StrEnd(Strt);
+  if i < PieceNum
+    then x := x + StringOfChar(Delim, PieceNum - i) + NewPiece
+    else x := Copy(x, 1, Strt - PChar(x)) + NewPiece + StrPas(Next);
+end;
+
+procedure SetPieces(var x: string; Delim: Char; Pieces: Array of Integer;
+                                                FromString: string);
+var
+  i: integer;
+
+begin
+  for i := low(Pieces) to high(Pieces) do
+    SetPiece(x, Delim, Pieces[i], Piece(FromString, Delim, Pieces[i]));
+end;
+
+procedure SortByPiece(AList: TStringList; ADelim: Char; PieceNum: Integer);
+var
+  i: integer;
+begin
+  for i := 0 to AList.Count - 1 do
+    AList[i] := Piece(AList[i], ADelim, PieceNum) + ADelim + AList[i];
+  AList.Sort;
+  for i := 0 to AList.Count - 1 do
+    AList[i] := Copy(AList[i], Pos(ADelim, AList[i]) + 1, MaxInt);
+end;
+
+function DelimCount(const Str, Delim: string): integer;
+var
+  i, dlen, slen: integer;
+
+begin
+  Result := 0;
+  i := 1;
+  dlen := length(Delim);
+  slen := length(Str) - dlen + 1;
+  while(i <= slen) do
+  begin
+    if(copy(Str,i,dlen) = Delim) then
+    begin
+      inc(Result);
+      inc(i,dlen);
+    end
+    else
+      inc(i);
+  end;
+end;
+
+type
+  TREStrings = class(TStrings)
+  protected
+    FPlainText: Boolean;
+  public
+    property PlainText: Boolean read FPlainText write FPlainText;
+  end;
+
+type
+  QuickCopyError = class(Exception);
+
+procedure QuickCopy(AFrom, ATo: TObject);
+var
+  ms: TMemoryStream;
+  idx: integer;
+  str: array[0..1] of TStrings;
+  fix: array[0..1] of boolean;
+
+  procedure GetStrings(obj: TObject);
+  begin
+    if (CompareText(obj.ClassName, 'TRichEditStrings') = 0) then
+      raise QuickCopyError.Create('You must pass the TRichEdit object into QuickCopy, NOT it''s Lines property.');
+    if obj is TStrings then
+      str[idx] := TStrings(obj)
+    else
+    if obj is TMemo then
+      str[idx] := TMemo(obj).Lines
+    else
+    if obj is TORListBox then
+      str[idx] := TORListBox(obj).Items
+    else
+    if obj is TListBox then
+      str[idx] := TListBox(obj).Items
+    else
+    if obj is TORComboBox then
+      str[idx] := TORComboBox(obj).Items
+    else
+    if obj is TComboBox then
+      str[idx] := TComboBox(obj).Items
+    else
+    if obj is TRichEdit then
+    begin
+      with TRichEdit(obj) do
+      begin
+        str[idx] := Lines;
+        if not PlainText then
+        begin
+          fix[idx] := TRUE;
+          PlainText := TRUE;
+        end;
+      end;
+    end
+    else
+      raise QuickCopyError.Create('Unsupported object type (' + obj.ClassName +
+                                  ') passed into QuickCopy.');
+    inc(idx);
+  end;
+
+
+begin
+  fix[0] := FALSE;
+  fix[1] := FALSE;
+  idx := 0;
+  GetStrings(AFrom);
+  GetStrings(ATo);
+  ms := TMemoryStream.Create;
+  try
+    str[0].SaveToStream(ms);
+    ms.Seek(0, soFromBeginning);
+    str[1].LoadFromStream(ms);
+  finally
+    ms.Free;
+  end;
+  if fix[0] then TRichEdit(AFrom).PlainText := FALSE;
+  if fix[1] then TRichEdit(ATo).PlainText := FALSE;
+  if ATo is TRichEdit then
+    TRichEdit(ATo).SelStart := Length(TRichEdit(ATo).Lines.Text); //CQ: 16461
+end;
+
+type
+  QuickAddError = class(Exception);
+
+procedure QuickAdd(AFrom, ATo: TObject);
+var
+  ms: TMemoryStream;
+  idx: integer;
+  str: array[0..1] of TStrings;
+  fix: array[0..1] of boolean;
+
+  procedure GetStrings(obj: TObject);
+  begin
+    if (CompareText(obj.ClassName, 'TRichEditStrings') = 0) then
+      raise QuickCopyError.Create('You must pass the TRichEdit object into QuickAdd, NOT it''s Lines property.');
+    if obj is TStrings then
+      str[idx] := TStrings(obj)
+    else
+    if obj is TMemo then
+      str[idx] := TMemo(obj).Lines
+    else
+    if obj is TORListBox then
+      str[idx] := TORListBox(obj).Items
+    else
+    if obj is TListBox then
+      str[idx] := TListBox(obj).Items
+    else
+    if obj is TORComboBox then
+      str[idx] := TORComboBox(obj).Items
+    else
+    if obj is TComboBox then
+      str[idx] := TComboBox(obj).Items
+    else
+    if obj is TRichEdit then
+    begin
+      with TRichEdit(obj) do
+      begin
+        str[idx] := Lines;
+        if not PlainText then
+        begin
+          fix[idx] := TRUE;
+          PlainText := TRUE;
+        end;
+      end;
+    end
+    else
+      raise QuickAddError.Create('Unsupported object type (' + obj.ClassName +
+                                  ') passed into QuickAdd.');
+    inc(idx);
+  end;
+
+
+begin
+  fix[0] := FALSE;
+  fix[1] := FALSE;
+  idx := 0;
+  GetStrings(AFrom);
+  GetStrings(ATo);
+  ms := TMemoryStream.Create;
+  try
+    str[1].SaveToStream(ms);
+    ms.Seek(0, soFromEnd);
+    str[0].SaveToStream(ms);
+    ms.Seek(0, soFromBeginning);
+    str[1].Clear;
+    str[1].LoadFromStream(ms);
+  finally
+    ms.Free;
+  end;
+  if fix[0] then TRichEdit(AFrom).PlainText := FALSE;
+  if fix[1] then TRichEdit(ATo).PlainText := FALSE;
+end;
+
+procedure FastAssign(source, destination: TStrings);
+// do not use this with RichEdit Lines unless source is RichEdit with PlainText
+var
+  ms: TMemoryStream;
+begin
+  destination.Clear;
+  if (source is TStringList) and (destination is TStringList) then
+    destination.Assign(source)
+  else
+  if (CompareText(source.ClassName, 'TRichEditStrings') = 0) then
+    destination.Assign(source)
+  else
+  begin
+    ms := TMemoryStream.Create;
+    try
+      source.SaveToStream(ms);
+      ms.Seek(0, soFromBeginning);
+      destination.LoadFromStream(ms);
+    finally
+      ms.Free;
+    end;
+  end;
+end;
+
+procedure FastAddStrings(source, destination: TStrings);
+// do not use this with RichEdit Lines unless source and destination are RichEdit with PlainText
+var
+  ms: TMemoryStream;
+begin
+  if (source is TStringList) and (destination is TStringList) then
+    destination.AddStrings(source)
+  else
+  begin
+    ms := TMemoryStream.Create;
+    try
+      destination.SaveToStream(ms);
+      ms.Seek(0, soFromEnd);
+      source.SaveToStream(ms);
+      ms.Seek(0, soFromBeginning);
+      destination.Clear;
+      destination.LoadFromStream(ms);
+    finally
+      ms.Free;
+    end;
+  end;
+end;
+
+function ValidFileName(const InitialFileName: string): string;
+var
+  i: integer;
+
+begin
+  Result := InitialFileName;
+  i := 1;
+  while i <= length(Result) do
+  begin
+    if Result[i] in ['a'..'z','A'..'Z','0'..'9',#32] then
+      inc(i)
+    else
+      delete(Result,i,1);
+  end;
+end;
+
+procedure LimitStringLength(var AList: TStringList; MaxLength: Integer);
+var
+  i, SpacePos: Integer;
+  x: string;
+  NewList: TStringList;
+begin
+  NewList := TStringList.Create;
+  try
+    for i := 0 to AList.Count - 1 do
+    begin
+      if Length(AList[i]) > MaxLength then
+      begin
+        x := AList[i];
+        while Length(x) > MaxLength do
+        begin
+          SpacePos := MaxLength;
+//          while SpacePos > 0 do                                              {**REV**}  removed after v11b
+//            if (x[SpacePos] <> ' ') then Dec(SpacePos);                      {**REV**}  removed after v11b
+          while (x[SpacePos] <> ' ') and (SpacePos > 1) do Dec(SpacePos);      {**REV**}  {changed 0 to 1}
+          if SpacePos = 1 then SpacePos := MaxLength;                          {**REV**}  {changed 0 to 1}
+          NewList.Add(Copy(x, 1, SpacePos ));  // CQ     PSI-05-040 change SpacePos-1 to SpacePos
+          Delete(x, 1, SpacePos);
+        end; {while Length(x)}
+        if Length(x) > 0 then NewList.Add(x);
+      end {then}
+      else NewList.Add(AList[i]);
+    end; {for i}
+    AList.Clear;
+    FastAssign(NewList, AList);
+  finally
+    NewList.Free;
+  end;
+end;
+
+{ Display functions }
+
+(*
+procedure ClearControl(AControl: TControl);
+{ clears a control, removes text and listbox items }
+begin
+  if AControl is TLabel then with TLabel(AControl) do Caption := ''
+  else if AControl is TButton then with TButton(AControl) do Caption := ''
+  else if AControl is TEdit then with TEdit(AControl) do Text := ''
+  else if AControl is TMemo then with TMemo(AControl) do Clear
+  else if AControl is TListBox then with TListBox(AControl) do Clear
+  else if AControl is TORComboBox then with TORComboBox(AControl) do
+  begin
+    MItems.Clear;
+    Text := '';
+  end
+  else if AControl is TComboBox then with TComboBox(AControl) do
+  begin
+    Clear;
+    Text := '';
+  end;
+end;
+
+procedure ResetControl(AControl: TControl);
+{ clears text, deselects items, does not remove listbox or combobox items }
+begin
+  if AControl is TLabel then with TLabel(AControl) do Caption := ''
+  else if AControl is TButton then with TButton(AControl) do Caption := ''
+  else if AControl is TEdit then with TEdit(AControl) do Text := ''
+  else if AControl is TMemo then with TMemo(AControl) do Clear
+  else if AControl is TListBox then with TListBox(AControl) do ItemIndex := -1
+  else if AControl is TORComboBox then with TORComboBox(AControl) do
+  begin
+    Text := '';
+    ItemIndex := -1;
+  end
+  else if AControl is TComboBox then with TComboBox(AControl) do
+  begin
+    Text := '';
+    ItemIndex := -1;
+  end;
+end;
+*)
+
+function InfoBox(const Text, Caption: string; Flags: Word): Integer;
+{ wrap the messagebox object in case we want to modify it later }
+begin
+  Result := Application.MessageBox(PChar(Text), PChar(Caption), Flags or MB_TOPMOST);
+end;
+
+procedure LimitEditWidth(AControl: TWinControl; NumChars: Integer);
+{ limits the editing area to be no more than N characters (also sets small left margin) }
+const
+  LEFT_MARGIN = 4;
+var
+  ARect: TRect;
+  AHandle: DWORD;
+  AWidth, i: Integer;
+  x: string;
+begin
+  Inc(NumChars);
+  SetString(x, nil, NumChars);
+  for i := 1 to NumChars do x[i] := 'X';
+  with AControl do
+  begin
+    AHandle := 0;
+    if AControl is TEdit     then AHandle := TEdit(AControl).Font.Handle;
+    if AControl is TMemo     then AHandle := TMemo(AControl).Font.Handle;
+    if AControl is TRichEdit then AHandle := TRichEdit(AControl).Font.Handle;
+    if AHandle = 0 then Exit;
+    AWidth := TextWidthByFont(AHandle, x);
+    ARect := Rect(LEFT_MARGIN, 0, AWidth + LEFT_MARGIN, ClientHeight);
+    // set the editing rectangle to with with of NumChars
+    SendMessage(Handle, EM_SETRECT, 0, Longint(@ARect));
+    // turn on auto-scrolling for a rich edit
+    if AControl is TRichEdit
+      then SendMessage(Handle, EM_SETOPTIONS, ECOOP_OR, ECO_AUTOHSCROLL + ECO_AUTOVSCROLL);
+  end;
+end;
+
+function BaseFont: TFont;
+begin
+  result := FBaseFont;
+end;
+
+function MainFont: TFont;
+begin
+  if Application.MainForm <> nil
+    then Result := Application.MainForm.Font
+    else Result := BaseFont;
+end;
+
+function MainFontSize: Integer;
+{ return font size of the Main Form in the application }
+begin
+  Result := MainFont.Size;
+end;
+
+function FontWidthSubPixel( Font: TFont): real;
+{ return in pixels the average character width of the font passed in FontHandle }
+var
+  TotalWidth: integer;
+begin
+  TotalWidth := TextWidthByFont( Font.Handle,
+    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
+  result := TotalWidth / 52;
+end;
+
+function FontWidthPixel( Font: TFont): integer;
+begin
+  //Round() is too fancy to be correct here
+  result := Trunc(FontWidthSubPixel(Font) + 0.5);
+end;
+
+function MainFontWidth: Integer;
+begin
+    Result := FontWidthPixel(MainFont);
+end;
+
+function MainFontHeight: Integer;
+{ return font size of the Main Form in the application.
+Note that TFont.Height is negative of what we want (see Delphi documentation)}
+begin
+  Result := Abs(MainFont.Height);
+end;
+
+procedure RedrawSuspend(AHandle: HWnd);
+begin
+  SendMessage(AHandle, WM_SETREDRAW, 0, 0);
+end;
+
+procedure RedrawActivate(AHandle: HWnd);
+begin
+  SendMessage(AHandle, WM_SETREDRAW, 1, 0);
+  InvalidateRect(AHandle, nil, True);
+end;
+
+procedure ResetSelectedForList(AListBox: TListBox);
+var
+  i: Integer;
+begin
+  with AListBox do for i := 0 to Items.Count - 1 do Selected[i] := False;
+end;
+
+function ResizeWidth( OldFont: TFont; NewFont: TFont; OldWidth: integer): integer;
+begin
+  result := Trunc( OldWidth *FontWidthSubPixel(NewFont) / FontWidthSubPixel(OldFont)
+    +0.5);
+end;
+
+function ResizeHeight( OldFont: TFont; NewFont: TFont; OldHeight: integer): integer;
+begin
+  result := Trunc( OldHeight *Abs(NewFont.Height) / Abs(OldFont.Height)
+    +0.5);
+end;
+
+procedure ResizeToFont(FontSize: Integer; var W, H: Integer);
+{ resizes form relative to the font size, assumes form designed with
+DefaultFont (>MS Sans Serif 8pt<) }
+var
+  Font: TFont;
+begin
+  Font := TFont.Create;
+  Font.Name := BaseFontName;
+  Font.Size := FontSize;
+  W := ResizeWidth( BaseFont, Font, W);
+  H := ResizeHeight( BaseFont, Font, H);
+end;
+
+procedure ResizeHeaderControl( OldFont: TFont; NewFont: TFont; Control: THeaderControl);
+{Tested against fOrders page.}
+var
+  i: integer;
+begin
+  for i := 0 to Control.Sections.Count-1 do
+    Control.Sections[i].Width := ResizeWidth( OldFont, NewFont, Control.Sections[i].Width);
+end;
+
+procedure ResizeListView( OldFont: TFont; NewFont: TFont; Control: TListView);
+var
+  i: integer;
+begin
+  if not Assigned(Control.OnResize) then
+    for i := 0 to Control.Columns.Count-1 do
+      Control.Columns[i].Width := ResizeWidth( OldFont, NewFont, Control.Columns[i].Width);
+end;
+
+procedure ResizeComboBox( OldFont: TFont; NewFont: TFont; Control: TComboBox);
+begin
+  Control.ItemHeight := ResizeHeight( OldFont, NewFont, Control.ItemHeight);
+end;
+
+procedure ResizeListBox( OldFont: TFont; NewFont: TFont; Control: TListBox);
+begin
+  Control.ItemHeight := ResizeHeight( OldFont, NewFont, Control.ItemHeight);
+end;
+
+procedure ResizeCheckListBox( OldFont: TFont; NewFont: TFont; Control: TCheckListBox);
+begin
+  Control.ItemHeight := ResizeHeight( OldFont, NewFont, Control.ItemHeight);
+end;
+
+procedure ResizeDescendants( OldFont: TFont; NewFont: TFont; AControl: TWinControl);
+var
+  i: integer;
+  Child: TControl;
+  VisibleWidth, TotalWidth: integer;
+  VisibleHeight, TotalHeight: integer;
+begin
+  if AControl.Align <> alNone then
+    Application.ProcessMessages;
+  AControl.DisableAlign;
+  try
+    //I think I finally got this next part right, so I will try to explain what
+    //it is doing.
+    //At this stage, the control is resized, but all of the childern are in
+    //original size.
+    //These children are corretly aligned to the visible part of the control,
+    //but may not be correctly aligned in the underlying canvas if there are
+    //scroll bars.
+    //We wish to transform the children to have the correct new size and be
+    //aligned to the new underlying canvas size.
+
+    //For the widths, I have kept track of what parts of the screen we are
+    //resizing.  The height will work the same way.
+    //The notation is A[B]C, where A is the space to the left of the child
+    //control, B is the space containing the child control, and C is the space
+    //to the right.
+    VisibleWidth := AControl.Width;
+    VisibleHeight := AControl.Height;
+    TotalWidth := VisibleWidth;
+    TotalHeight := VisibleHeight;
+    if AControl is TScrollingWinControl then
+    begin
+      TotalWidth := HigherOf(TotalWidth, TScrollingWinControl(AControl).HorzScrollBar.Range);
+      TotalHeight := HigherOf(TotalHeight, TScrollingWinControl(AControl).VertScrollBar.Range);
+    end;
+    for i := 0 to AControl.ControlCount -1 do begin
+      Child := AControl.Controls[i];
+      //Tab sheets auto-size with their parents
+      if not (Child is TTabSheet) then
+        with Child do begin
+          if [akLeft,akRight] <= Anchors then                 //X[.]X
+            Width := TotalWidth - ResizeWidth( OldFont, NewFont, VisibleWidth - Width)
+          else                                                //.[X].
+            Width := ResizeWidth( OldFont, NewFont, Width);
+          if not(akLeft in Anchors) then                      //.[X]X
+            Left := TotalWidth - ResizeWidth( OldFont, NewFont, VisibleWidth - Left)
+          else
+            Left := ResizeWidth( OldFont, NewFont, Left);     //X[.].
+          if [akTop,akBottom] <= Anchors then
+            Height := TotalHeight - ResizeHeight( OldFont, NewFont, VisibleHeight - Height)
+          else
+            Height := ResizeHeight( OldFont, NewFont, Height);
+          if not(akTop in Anchors) then
+            Top := TotalHeight - ResizeHeight( OldFont, NewFont, VisibleHeight - Top)
+          else
+            Top := ResizeHeight( OldFont, NewFont, Top);
+        end;
+      //Recurse.  Let Auto-Size panels take care of themselves
+      if (Child is TWinControl) and not (Child is TORAutoPanel) then
+        ResizeDescendants( OldFont, NewFont, TWinControl(Child));
+      if Child is TComboBox then
+        ResizeComboBox( OldFont, NewFont, TComboBox(Child));
+      if Child is TCheckListBox then
+        ResizeCheckListBox( OldFont, NewFont, TCheckListBox(Child));
+      if Child is THeaderControl then
+        ResizeHeaderControl( OldFont, NewFont, THeaderControl(Child));
+      if Child is TListBox then
+        ResizeListBox( OldFont, NewFont, TListBox(Child));
+      if Child is TListView then
+        ResizeListView( OldFont, NewFont, TListView(Child));
+      if Child is TDrawGrid then with TDrawGrid(Child) do
+        //from Win32 "How to Calculate the Height of Edit Control..."
+        DefaultRowHeight := Abs(NewFont.Height) * 3 div 2;
+      if Child is TTabControl then with TTabControl(Child) do begin
+        if Tabs.Count > 0 then
+          TabWidth := ResizeWidth( OldFont, NewFont, TabWidth);
+        Width := TabWidth * Tabs.Count +3;
+      end;
+    end;
+  finally
+    AControl.EnableAlign;
+  end;
+end;
+
+procedure ResizeChartFonts( OldFont: TFont; NewFont: TFont; Control: TChart);
+var
+  i: integer;
+begin
+  with Control do begin
+    if LeftAxis.Title.Font.Size = OldFont.Size then
+      LeftAxis.Title.Font.Size := NewFont.Size;
+    if LeftAxis.LabelsFont.Size = OldFont.Size then
+      LeftAxis.LabelsFont.Size := NewFont.Size;
+    if BottomAxis.Title.Font.Size = OldFont.Size then
+      BottomAxis.Title.Font.Size := NewFont.Size;
+    if BottomAxis.LabelsFont.Size = OldFont.Size then
+      BottomAxis.LabelsFont.Size := NewFont.Size;
+    if Legend.Font.Size = OldFont.Size then
+      Legend.Font.Size := NewFont.Size;
+    if Title.Font.Size = OldFont.Size then
+      Title.Font.Size := NewFont.Size;
+    for i := 0 to SeriesCount - 1 do
+      if Series[i].Marks.Font.Size = OldFont.Size then
+        Series[i].Marks.Font.Size := NewFont.Size;
+  end;
+end;
+
+procedure ResizeFontsInDescendants( OldFont: TFont; NewFont: TFont; AControl: TWinControl);
+var
+  i: integer;
+  Child: TControl;
+  RESelectionStart: integer;
+  RESelectionLength: integer;
+begin
+  for i := 0 to AControl.ControlCount -1 do begin
+    Child := AControl.Controls[i];
+    if Child is TRichEdit then begin
+      with TRichEdit(Child) do
+        if Font.Size = OldFont.Size then begin
+          if not ParentFont then
+            Font.Size := NewFont.Size;
+          RESelectionStart := SelStart;
+          RESelectionLength := SelLength;
+          SelectAll;
+          SelAttributes.Size := NewFont.Size;
+          DefAttributes.Size := NewFont.Size;
+          SelStart := RESelectionStart;
+          SelLength := RESelectionLength;
+        end
+    end
+    else
+    if Child is TChart then
+      ResizeChartFonts( OldFont, NewFont, TChart(Child))
+    else
+      with TFontControl(Child) do
+        if (Font.Size = OldFont.Size) and not ParentFont then
+          Font.Size := NewFont.Size;
+
+    if  Child is TWinControl then
+      ResizeFontsInDescendants( OldFont, NewFont, TWinControl(Child));
+  end;
+end;
+
+procedure ForceInsideWorkArea( var Rect: TRect);
+var
+  Frame: TRect;
+begin
+  Frame := Screen.WorkAreaRect;
+  {Veritcal version:}
+  {Align bottom (preserving height) if needed}
+  if Rect.Bottom > Frame.Bottom then
+  begin
+    Rect.Top := Rect.Top + Frame.Bottom - Rect.Bottom;
+    Rect.Bottom := Frame.Bottom;
+  end;
+  {Then align top (preserving height) if needed}
+  if Rect.Top < Frame.Top then
+  begin
+    Rect.Bottom := Rect.Bottom + Frame.Top - Rect.Top;
+    Rect.Top := Frame.Top;
+  end;
+  {Now shrink (preserving top) if needed}
+  if Rect.Bottom > Frame.Bottom then
+    Rect.Bottom := Frame.Bottom;
+  {Horizontal version:}
+  if Rect.Right > Frame.Right then
+  begin
+    Rect.Left := Rect.Left + Frame.Right - Rect.Right;
+    Rect.Right := Frame.Right;
+  end;
+  if Rect.Left < Frame.Left then
+  begin
+    Rect.Right := Rect.Right + Frame.Left - Rect.Left;
+    Rect.Left := Frame.Left;
+  end;
+  if Rect.Right > Frame.Right then
+    Rect.Right := Frame.Right;
+end;
+
+var
+  AlignList, AnchorList: TStringList;
+
+function AnchorsToStr(Control: TControl): string;
+var
+  j: TAnchorKind;
+
+begin
+  Result := '';
+  for j := low(TAnchorKind) to high(TAnchorKind) do
+    if j in Control.Anchors then
+      Result := result + '1'
+    else
+      Result := result + '0'
+end;
+
+function StrToAnchors(i: integer): TAnchors;
+var
+  j: TAnchorKind;
+  value: string;
+  idx : integer;
+begin
+  Result := [];
+  value := AnchorList[i];
+  idx := 1;
+  for j := low(TAnchorKind) to high(TAnchorKind) do
+  begin
+    if copy(value,idx,1) = '1' then
+      include(Result, j);
+    inc(idx);
+  end;
+end;
+
+procedure SuspendAlign(AForm: TForm);
+var
+  i: integer;
+  control: TControl;
+begin
+  AForm.DisableAlign;
+  AlignList.Clear;
+  AnchorList.Clear;
+  for i := 0 to AForm.ControlCount-1 do
+  begin
+    control := AForm.Controls[i];
+    AlignList.Add(IntToStr(ord(control.align)));
+    control.Align := alNone;
+    AnchorList.Add(AnchorsToStr(control));
+    control.Anchors := [];
+  end;
+end;
+
+procedure RestoreAlign(AForm: TForm);
+var
+  i: integer;
+  control: TControl;
+begin
+  try
+    for i := 0 to AForm.ControlCount-1 do
+    begin
+      control := AForm.Controls[i];
+      control.Align := TAlign(StrToIntDef(AlignList[i],0));
+      control.Anchors := StrToAnchors(i);
+    end;
+    AlignList.Clear;
+    AnchorList.Clear;
+  finally
+    AForm.EnableAlign;
+  end;
+end;
+
+procedure ResizeFormToFont(AForm: TForm);
+var
+  Rect: TRect;
+  OldResize: TNotifyEvent;
+begin
+// CQ# 11481 apply size changes to form all at once, instead of piece by piece.  Otherwise,
+// multiple calls to fAutoSz.FormResize, even if the form has not resized, can distort
+// the controls beyond the size of the form.
+  with AForm do begin
+    OldResize := AForm.OnResize;
+    AForm.OnResize := nil;
+    try
+      SuspendAlign(AForm);
+      try
+        HorzScrollBar.Range := ResizeWidth( Font, MainFont, HorzScrollBar.Range);
+        VertScrollBar.Range := ResizeHeight( Font, MainFont, VertScrollBar.Range);
+        ClientWidth := ResizeWidth( Font, MainFont, ClientWidth);
+        ClientHeight := ResizeHeight( Font, MainFont, ClientHeight);
+        Rect := BoundsRect;
+        ForceInsideWorkArea(Rect);
+        BoundsRect := Rect;
+      finally
+        RestoreAlign(AForm);
+      end;
+      ResizeFontsInDescendants( Font, MainFont, AForm);
+      //Important: We are using the font to calculate everything, so don't
+      //change font until now.
+      Font.Size := MainFont.Size;
+    finally
+      if(Assigned(OldResize)) then
+      begin
+        AForm.OnResize := OldResize;
+        OldResize(AForm);
+      end;
+    end;
+  end;
+end;
+
+procedure ResizeAnchoredFormToFont( AForm: TForm);
+var
+  Rect: TRect;
+  OldResize: TNotifyEvent;
+
+begin
+  with AForm do begin
+  // CQ# 11481 - see ResizeFormToFont
+    OldResize := AForm.OnResize;
+    AForm.OnResize := nil;
+    try
+      HorzScrollBar.Range := ResizeWidth( Font, MainFont, HorzScrollBar.Range);
+      VertScrollBar.Range := ResizeHeight( Font, MainFont, VertScrollBar.Range);
+      ClientWidth  := ResizeWidth( Font, MainFont, ClientWidth);
+      ClientHeight := ResizeHeight( Font, MainFont, ClientHeight);
+      Rect := BoundsRect;
+      ForceInsideWorkArea(Rect);
+      BoundsRect := Rect;
+      ResizeDescendants( Font, MainFont, AForm);
+      ResizeFontsInDescendants( Font, MainFont, AForm);
+      //Important: We are using the font to calculate everything, so don't
+      //change font until now.
+      Font.Size := MainFont.Size;
+    finally
+      if(Assigned(OldResize)) then
+      begin
+        AForm.OnResize := OldResize;
+        OldResize(AForm);
+      end;
+    end;
+  end;
+end;
+
+// CQ 11485 - Adjusts all forms  - adds additional height to the form to
+// adjust for Windows XP style title bars, and for large fonts in title bar
+procedure AdjustForWindowsXPStyleTitleBar(AForm: TForm);
+const
+  DEFAULT_CAPTION_HEIGHT = 19;
+  DEFAULT_MENU_HEIGHT = 19;
+
+var
+  dxsb, dysb, dy, menuDY: integer;
+
+begin
+// Call GetSystemMetrics each time because values can change between calls
+  dy := GetSystemMetrics(SM_CYCAPTION) - DEFAULT_CAPTION_HEIGHT;
+  if (AForm.Menu <> nil) then
+  begin
+    menuDY := GetSystemMetrics(SM_CYMENU) - DEFAULT_MENU_HEIGHT;
+    inc(dy, menuDY);
+  end;
+  if dy <> 0 then
+  begin
+    SuspendAlign(AForm);
+    try
+    // Assitional adjustment to allow scroll bars to dissappear
+      dxsb := GetSystemMetrics(SM_CXVSCROLL);
+      dysb := GetSystemMetrics(SM_CYHSCROLL);
+      AForm.Height := AForm.Height + dy + dysb;
+      AForm.Width := AForm.Width + dxsb;
+      AForm.Height := AForm.Height - dysb;
+      AForm.Width := AForm.Width - dxsb;
+    finally
+      RestoreAlign(AForm);
+    end;
+  end;
+end;
+
+procedure SetEqualTabStops(AControl: TControl; TabWidth: Integer = 8);
+{ sets tab stops to match the width when the tab is replaced with TabWidth spaces }
+const
+  MAX_TABS = 10;
+  POINTS_PER_INCH = 72;
+var
+  DC: HDC;
+  i, HorzPixelsPerInch, PixelsPerTabWidth, PointsPerTabWidth: Integer;
+begin
+  if AControl is TRichEdit then with TRichEdit(AControl) do
+  begin
+    DC := GetDC(0);
+    HorzPixelsPerInch := GetDeviceCaps(DC, LOGPIXELSX);
+    ReleaseDC(0, DC);
+    PixelsPerTabWidth := TextWidthByFont(Font.Handle, StringOfChar(' ', TabWidth));
+    PointsPerTabWidth := Round((PixelsPerTabWidth / HorzPixelsPerInch) * POINTS_PER_INCH);
+    for i := 0 to MAX_TABS do Paragraph.Tab[i] := PointsPerTabWidth * Succ(i);
+  end;
+end;
+
+procedure StatusText(const S: string);
+{ sends a user defined message to the main window of an application to display the text
+  found in lParam.  Only useful if the main window has message event for this message }
+begin
+  if (Application.MainForm <> nil) and (Application.MainForm.HandleAllocated)
+    then SendMessage(Application.MainForm.Handle, UM_STATUSTEXT, 0, Integer(PChar(S)));
+end;
+
+function ShowMsgOn(AnExpression: Boolean; const AMsg, ACaption: string): Boolean;
+begin
+  Result := AnExpression;
+  if Result then InfoBox(AMsg, ACaption, MB_OK);
+end;
+
+function TextWidthByFont(AFontHandle: THandle; const x: string): Integer;
+{ returns the width of a string in pixels, given a FONT handle and string }
+var
+  DC: HDC;
+  SaveFont: HFont;
+  TextSize: TSize;
+begin
+  DC := GetDC(0);
+  try
+    SaveFont := SelectObject(DC, AFontHandle);
+    try
+      GetTextExtentPoint32(DC, PChar(x), Length(x), TextSize);
+      Result := TextSize.cx;
+    finally
+      SelectObject(DC, SaveFont);
+    end;
+  finally
+    ReleaseDC(0, DC);
+  end;
+end;
+
+function TextHeightByFont(AFontHandle: THandle; const x: string): Integer;
+var
+  DC: HDC;
+  SaveFont: HFont;
+  TextSize: TSize;
+
+begin
+  DC := GetDC(0);
+  try
+    SaveFont := SelectObject(DC, AFontHandle);
+    try
+      GetTextExtentPoint32(DC, PChar(x), Length(x), TextSize);
+      Result := TextSize.cy;
+    finally
+      SelectObject(DC, SaveFont);
+    end;
+  finally
+    ReleaseDC(0, DC);
+  end;
+  if Result > 255 then // CQ 11493
+    Result := 255; // This is maximum allowed by a Windows
+end;
+
+function WrappedTextHeightByFont(Canvas: TCanvas; NewFont: TFont; ItemText: string; var ARect: TRect): integer;
+var
+  MyTextMetric: TTextMetric;
+  MyFontName: Array [0..31] of char;
+  MyFontHandle, RealFontHandle: HFONT;
+begin
+  { The next bit is a bunch of Windows code to accomodate the DrawText calls
+  inside the try..finally block.  The issue here comes when resizing the font.
+  The Delphi font property is already set, but the DrawText call uses a
+  Windows handle and the handle's font hasn't been set to the new value.}
+  {This still has a vertical sizing bug when there is text that doesn't wrap but is too
+  wide to display in the window (think long medicine names and 24 pt font on a
+  640*480 screen)}
+  MyFontHandle := 0;
+  RealFontHandle := 0;
+  if GetTextMetrics(Canvas.Handle, MyTextMetric) then
+    if GetTextFace( Canvas.Handle, 32, @MyFontName) <> 0 then with MyTextMetric do
+      MyFontHandle := CreateFont( NewFont.Height,
+        tmAveCharWidth * Abs(NewFont.Height) div tmHeight,
+        0,
+        0,
+        tmWeight,
+        tmItalic,
+        tmUnderlined,
+        tmStruckOut,
+        tmCharSet,
+        OUT_DEFAULT_PRECIS,
+        CLIP_DEFAULT_PRECIS,
+        DEFAULT_QUALITY,
+        FF_DONTCARE or DEFAULT_PITCH,
+        @MyFontName);
+  if MyFontHandle <> 0 then
+    RealFontHandle := SelectObject( Canvas.Handle, MyFontHandle);
+  try
+    result := DrawText(Canvas.Handle, PChar(ItemText), Length(ItemText), ARect,
+                 DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
+  finally
+    if MyFontHandle <> 0 then begin
+      SelectObject( Canvas.Handle, RealFontHandle);
+      DeleteObject( MyFontHandle );
+    end;
+  end;
+  if Result > 255 then // CQ 11492
+    Result := 255; // This is maximum allowed by a Windows
+end;
+
+function NumCharsFitInWidth(AFontHandle: THandle; const x: string; const MaxLen: integer): Integer;
+var
+  DC: HDC;
+  SaveFont: HFont;
+  TextSize: TSize;
+  TmpX: string;
+  done: boolean;
+  l,h: integer;
+
+begin
+  DC := GetDC(0);
+  SaveFont := SelectObject(DC, AFontHandle);
+  try
+    h := length(x);
+    l := 0;
+    Result := h;
+    repeat
+      TmpX := copy(x, 1, Result);
+      GetTextExtentPoint32(DC, PChar(TmpX), Length(TmpX), TextSize);
+      if(TextSize.cx > MaxLen) then
+      begin
+        h := Result;
+        Result := (l+h) div 2;
+        done := (Result <= l);
+      end
+      else
+      begin
+        l := Result;
+        Result := (l+h+1) div 2;
+        done := (Result >= h);
+      end;
+    until(done);
+  finally
+    SelectObject(DC, SaveFont);
+    ReleaseDC(0, DC);
+  end;
+end;
+
+function PopupComponent(Sender: TObject; PopupMenu: TPopupMenu): TComponent;
+begin
+  if(assigned(PopupMenu) and assigned(Sender) and (Sender is TPopupMenu) and
+     assigned(PopupMenu.PopupComponent)) then
+    Result := PopupMenu.PopupComponent
+  else
+    Result := Screen.ActiveControl;
+end;
+
+procedure ReformatMemoParagraph(AMemo: TCustomMemo);
+{ rewrap lines starting with current line until there is a line that starts with whitespace }
+var
+  ALine: Integer;
+  x, OldText, NewText: string;
+begin
+  with AMemo do
+  begin
+    ALine := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
+    repeat
+      Inc(ALine);
+    until (ALine >= Lines.Count) or (Lines[ALine] = '') or (Ord(Lines[ALine][1]) <= 32);
+    SelLength := SendMessage(Handle, EM_LINEINDEX, ALine, 0) - SelStart - 1;
+    if SelLength < 1 then Exit;
+    OldText := SelText;
+    NewText := '';
+    repeat
+      x := Copy(OldText, 1, Pos(CRLF, OldText) - 1);
+      if Length(x) = 0 then x := OldText;
+      Delete(OldText, 1, Length(x) + 2);  {delete text + CRLF}
+      if (NewText <> '') and (Copy(NewText, Length(NewText), 1) <> ' ') and
+         (Copy(x, 1, 1) <> ' ') then NewText := NewText + ' ';
+      NewText := NewText + x;
+    until OldText = '';
+    SelText := NewText;
+  end;
+end;
+
+var
+  uNormalColorScheme: boolean = false;
+  uBlackColorScheme: boolean = false;
+  uWhiteColorScheme: boolean = false;
+  uMaroonColorWhenBlack: TColor = clMaroon;
+  uCheckColorScheme: boolean = true;
+  PURE_BLACK: longint = 0;
+
+const
+  uBorderlessWindowColorWhenBlack: TColor = clNavy;
+
+
+procedure CheckColorScheme;
+begin
+  if uCheckColorScheme then
+  begin
+    uNormalColorScheme :=
+      ((ColorToRGB(clWindow)      = ColorToRGB(clWhite)) and
+       (ColorToRGB(clWindowText)  = ColorToRGB(clBlack)) and
+       (ColorToRGB(clInfoText)    = ColorToRGB(clBlack)) and
+       (ColorToRGB(clInfoBk)     <> ColorToRGB(clWhite)));
+
+    uBlackColorScheme := ((ColorToRGB(clBtnFace) = ColorToRGB(clBlack)) and
+                          (ColorToRGB(clWindow) = ColorToRGB(clBlack)));
+    uWhiteColorScheme := ((ColorToRGB(clBtnFace) = ColorToRGB(clWhite)) and
+                          (ColorToRGB(clWindow) = ColorToRGB(clWhite)));
+
+    if uBlackColorScheme then
+    begin
+      if(ColorToRGB(clGrayText) = ColorToRGB(clWindowText)) then
+        uMaroonColorWhenBlack := clHighlightText
+      else
+        uMaroonColorWhenBlack := clGrayText;
+    end;
+
+    uCheckColorScheme := FALSE;
+  end;
+end;
+
+function BlackColorScheme: Boolean;
+begin
+  if uCheckColorScheme then CheckColorScheme;
+  Result := uBlackColorScheme;
+end;
+
+function NormalColorScheme: Boolean;
+begin
+  if uCheckColorScheme then CheckColorScheme;
+  Result := uNormalColorScheme;
+end;
+
+function Get508CompliantColor(Color: TColor): TColor;
+begin
+  Result := Color;
+  if NormalColorScheme then exit;
+
+  case Color of
+    clCream:    Result := clInfoBk;
+    clBlack:    Result := clWindowText;
+    clWhite:    Result := clWindow;
+  end;
+
+  if uBlackColorScheme then
+  begin
+    case Color of
+      clBlue:     Result := clAqua;
+      clMaroon:   Result := uMaroonColorWhenBlack;
+  //    clRed:      Result := clFuchsia;
+    end;
+  end;
+
+  if uWhiteColorScheme then
+  begin
+    case Color of
+      clGrayText: Result := clGray;
+    end;
+  end;
+end;
+
+type
+  TExposedControl = class(TControl)
+  public
+    property Color;
+    property Font;
+  end;
+
+  TExposedCustomEdit = class(TCustomEdit)
+  public
+    property BorderStyle;
+    property ReadOnly;
+  end;
+
+procedure UpdateColorsFor508Compliance(control: TControl; InputEditControl: boolean = FALSE);
+var
+  BitMapLevelCheck: integer;
+  Level: integer;
+
+
+  procedure BlackColorSchemeUpdate(control: TControl);
+  var
+    bitmap: TBitMap;
+    edit: TExposedCustomEdit;
+    x,y: integer;
+    cbmCtrl: IORBlackColorModeCompatible;
+
+  begin
+    if uBlackColorScheme then
+    begin
+      if Level < BitMapLevelCheck then
+      begin
+        if control.GetInterface(IORBlackColorModeCompatible, cbmCtrl) then
+        begin
+          cbmCtrl.SetBlackColorMode(TRUE);
+          BitMapLevelCheck := Level;
+          cbmCtrl := nil;
+        end
+        else
+        begin
+          if (control is TBitBtn) then
+          begin
+            bitmap := TBitBtn(control).Glyph;
+            for x := 0 to bitmap.Width-1 do
+            begin
+              for y := 0 to bitmap.Height-1 do
+              begin
+                if ColorToRGB(bitmap.Canvas.Pixels[x,y]) = PURE_BLACK then
+                  bitmap.Canvas.Pixels[x,y] := clWindowText;
+              end;
+            end;
+          end;
+        end;
+      end;
+
+      if (control is TCustomEdit) and InputEditControl then
+      begin
+        edit := TExposedCustomEdit(control);
+        if (edit.BorderStyle = bsNone) then
+          edit.Color := uBorderlessWindowColorWhenBlack;
+      end;
+
+    end;
+  end;
+
+  procedure ComponentUpdateColorsFor508Compliance(control: TControl);
+  var
+    OldComponentColor, OldFontColor, NewComponentColor, NewFontColor: TColor;
+  begin
+    OldComponentColor := TExposedControl(control).Color;
+    OldFontColor := TExposedControl(control).Font.Color;
+    NewComponentColor := Get508CompliantColor(OldComponentColor);
+    if NewComponentColor = clInfoBk then
+    begin
+      if (OldFontColor = clInfoBk) or (OldFontColor = clCream) then
+        NewFontColor := clInfoBk // used for hiding text
+      else
+        NewFontColor := clInfoText;
+    end
+    else
+      NewFontColor := Get508CompliantColor(OldFontColor);
+    if NewComponentColor <> OldComponentColor then
+      TExposedControl(control).Color := NewComponentColor;
+    if NewFontColor <> OldFontColor then
+      TExposedControl(control).Font.Color := NewFontColor;
+    BlackColorSchemeUpdate(control);
+  end;
+
+  procedure ScanAllComponents(control: TControl);
+  var
+    i: integer;
+
+  begin
+    ComponentUpdateColorsFor508Compliance(Control);
+    if control is TWinControl then
+    begin
+      inc(Level);
+      try
+        for i := 0 to TWinControl(Control).ControlCount-1 do
+        begin
+          ScanAllComponents(TWinControl(Control).Controls[i]);
+        end;
+      finally
+        dec(Level);
+        if BitMapLevelCheck = Level then
+          BitMapLevelCheck := MaxInt; 
+      end;
+    end;
+  end;
+
+begin
+  if NormalColorScheme then exit;
+  BitMapLevelCheck := MaxInt;
+  Level := 0;
+  ScanAllComponents(control);
+end;
+
+procedure UpdateReadOnlyColorScheme(Control: TControl; ReadOnly: boolean);
+begin
+  with TExposedControl(Control) do
+  begin
+    if ReadOnly then
+    begin
+      Color := Get508CompliantColor(clCream);
+      Font.Color := clInfoText;
+    end
+    else
+    begin
+      Color := clWindow;
+      Font.Color := clWindowText;
+    end;
+  end;
+end;
+
+{ ListBox Grid functions }
+
+procedure ListGridDrawCell(AListBox: TListBox; AHeader: THeaderControl; ARow, AColumn: Integer;
+  const x: string; WordWrap: Boolean);
+var
+  i, Format: Integer;
+  ARect: TRect;
+begin
+  ARect := AListBox.ItemRect(ARow);
+  ARect.Left := 0;
+  for i := 0 to AColumn - 1 do ARect.Left := ARect.Left + AHeader.Sections[i].Width;
+  Inc(ARect.Left, 2);
+  ARect.Right := ARect.Left + AHeader.Sections[AColumn].Width - 6;
+  if WordWrap
+    then Format := (DT_LEFT or DT_NOPREFIX or DT_WORDBREAK)
+    else Format := (DT_LEFT or DT_NOPREFIX);
+  DrawText(AListBox.Canvas.Handle, PChar(x), Length(x), ARect, Format);
+end;
+
+procedure ListGridDrawLines(AListBox: TListBox; AHeader: THeaderControl; Index: Integer;
+  State: TOwnerDrawState);
+var
+  i, RightSide: Integer;
+  ARect: TRect;
+begin
+  with AListBox do
+  begin
+    ARect := ItemRect(Index);
+    if odSelected in State then
+    begin
+      Canvas.Brush.Color := clHighlight;
+      Canvas.Font.Color := clHighlightText
+    end;
+    Canvas.FillRect(ARect);
+    Canvas.Pen.Color := Get508CompliantColor(clSilver);
+    Canvas.MoveTo(ARect.Left, ARect.Bottom - 1);
+    Canvas.LineTo(ARect.Right, ARect.Bottom - 1);
+    RightSide := -2;
+    for i := 0 to AHeader.Sections.Count - 1 do
+    begin
+      RightSide := RightSide + AHeader.Sections[i].Width;
+      Canvas.MoveTo(RightSide, ARect.Bottom - 1);
+      Canvas.LineTo(RightSide, ARect.Top);
+    end;
+  end;
+end;
+
+function ListGridRowHeight(AListBox: TListBox; AHeader: THeaderControl; ARow, AColumn: Integer;
+  const x: string): Integer;
+var
+  ARect: TRect;
+begin
+  ARect := AListBox.ItemRect(ARow);
+  ARect.Right := AHeader.Sections[AColumn].Width - 6;
+  Result := DrawText(AListBox.Canvas.Handle, PChar(x), Length(x), ARect,
+    DT_CALCRECT or DT_LEFT or DT_NOPREFIX or DT_WORDBREAK) + 2;
+end;
+
+(*
+procedure SetEditWidth(AMemo: TMemo; AWidth: Integer);
+begin
+  //SetString(x, nil, AWidth);
+  //for i := 1 to AWidth do x[i] := 'X';
+end;
+*)
+
+{ You MUST pass an address to an object variable to get KillObj to work }
+procedure KillObj(ptr: Pointer; KillObjects: boolean = FALSE);
+var
+  Obj: TObject;
+  Lst: TList;
+  SLst: TStringList;
+  i: integer;
+
+begin
+  Obj := TObject(ptr^);
+  if(assigned(Obj)) then
+  begin
+    if(KillObjects) then
+    begin
+      if(Obj is TList) then
+      begin
+        Lst := TList(Obj);
+        for i := Lst.count-1 downto 0 do
+          if assigned(Lst[i]) then
+            TObject(Lst[i]).Free;
+      end
+      else
+      if(Obj is TStringList) then
+      begin
+        SLst := TStringList(Obj);
+        for i := SLst.count-1 downto 0 do
+          if assigned(SLst.Objects[i]) then
+            SLst.Objects[i].Free;
+      end;
+    end;
+    Obj.Free;
+    TObject(ptr^) := nil;
+  end;
+end;
+
+{ Idle Processing }
+
+type
+  TIdleCaller = class(TObject)
+  private
+    FTimerActive: boolean;
+    FCallList: TStringList;
+    FDoneList: TStringList;
+    FOldIdler: TIdleEvent;
+    FTimer: TTimer;
+  protected
+    procedure AppIdle(Sender: TObject; var Done: Boolean);
+    procedure TimerDone(Sender: TObject);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Add(CallProc, DoneProc: TORIdleCallProc; Msg: string);
+  end;
+
+var
+  IdleCaller: TIdleCaller = nil;
+
+{ TIdleCaller }
+
+constructor TIdleCaller.Create;
+begin
+  inherited;
+  FCallList := TStringList.Create;
+  FDoneList := TStringList.Create;
+  FTimer := TTimer.Create(nil);
+  FTimer.Enabled := FALSE;
+  FTimer.Interval := 2000; // 2 seconds
+  FTimer.OnTimer := TimerDone;
+  FTimerActive := FALSE;
+  FOldIdler := Application.OnIdle;
+  Application.OnIdle := AppIdle;
+end;
+
+destructor TIdleCaller.Destroy;
+begin
+  Application.OnIdle := FOldIdler;
+  FTimer.Enabled := FALSE;
+  KillObj(@FTimer);
+  KillObj(@FDoneList);
+  KillObj(@FCallList);
+  inherited;
+end;
+
+procedure TIdleCaller.AppIdle(Sender: TObject; var Done: Boolean);
+begin
+  if(not FTimerActive) and (FCallList.Count > 0) then
+  begin
+    FTimer.Enabled := TRUE;
+    FTimerActive := TRUE;
+  end;
+  if assigned(FOldIdler) then
+    FOldIdler(Sender, Done);
+end;
+
+procedure TIdleCaller.Add(CallProc, DoneProc: TORIdleCallProc; Msg: string);
+begin
+  FCallList.AddObject(Msg, TObject(@CallProc));
+  FDoneList.AddObject(Msg, TObject(@DoneProc));
+end;
+
+procedure TIdleCaller.TimerDone(Sender: TObject);
+var
+  CallProc, DoneProc: TORIdleCallProc;
+  CallMsg, DoneMsg: string;
+
+begin
+  FTimer.Enabled := FALSE;
+  CallProc := TORIdleCallProc(FCallList.Objects[0]);
+  CallMsg := FCallList[0];
+  DoneProc := TORIdleCallProc(FDoneList.Objects[0]);
+  DoneMsg := FDoneList[0];
+  FCallList.Delete(0);
+  FDoneList.Delete(0);
+
+  if(assigned(CallProc)) then
+    CallProc(CallMsg);
+  if(assigned(DoneProc)) then
+    DoneProc(DoneMsg);
+
+  FTimerActive := FALSE;
+end;
+
+{ do NOT use CallWhenIdle to call RPCs.  Use CallRPCWhenIdle in ORNet. }
+procedure CallWhenIdle(CallProc: TORIdleCallProc; Msg: String);
+begin
+  if(not assigned(IdleCaller)) then              
+    IdleCaller := TIdleCaller.Create;
+  IdleCaller.Add(CallProc, nil, Msg);
+end;
+
+procedure CallWhenIdleNotifyWhenDone(CallProc, DoneProc: TORIdleCallProc; Msg: String);
+begin
+  if(not assigned(IdleCaller)) then
+    IdleCaller := TIdleCaller.Create;
+  IdleCaller.Add(CallProc, DoneProc, Msg);
+end;
+
+procedure menuHideAllBut(aMenuItem: tMenuItem; butItems: array of tMenuItem);
+var
+  aCount, bCount: integer;
+  butFound: boolean;
+begin
+for aCount := 0 to (aMenuItem.count - 1) do      // Iterate through menu items.
+  begin
+    butFound := false;
+    for bCount := 0 to (length(butItems) - 1) do // Check for match in exceptions array.
+      begin
+        if (aMenuItem.items[aCount] = butItems[bCount]) then
+          begin
+            butFound := true;
+            break;
+          end;
+      end;
+    if (not butFound) then
+      aMenuItem.items[aCount].visible := false;  // Hide menu item if not an exception.
+  end;
+end;
+
+function TabIsPressed : Boolean;
+begin
+  Result := Boolean(Hi(GetKeyState(VK_TAB))) and not Boolean(Hi(GetKeyState(VK_SHIFT)));
+  Result := Result and not Boolean(Hi(GetKeyState(VK_CONTROL)));
+end;
+
+function ShiftTabIsPressed : Boolean;
+begin
+  Result := Boolean(Hi(GetKeyState(VK_TAB))) and Boolean(Hi(GetKeyState(VK_SHIFT)));
+  Result := Result and not Boolean(Hi(GetKeyState(VK_CONTROL)));
+end;
+
+function EnterIsPressed : Boolean;
+begin
+  Result := Boolean(Hi(GetKeyState(VK_RETURN)));
+end;
+
+initialization
+  FBaseFont := TFont.Create;
+  FBaseFont.Name := BaseFontName;
+  FBaseFont.Size := BaseFontSize;
+  ScrollBarHeight := GetSystemMetrics(SM_CYHSCROLL);
+  AlignList := TStringList.Create;
+  AnchorList := TStringList.Create;
+  PURE_BLACK := ColorToRGB(clBlack);
+
+finalization
+  FBaseFont.Free;
+  KillObj(@IdleCaller);
+  FreeAndNil(AlignList);
+  FreeAndNil(AnchorList);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORNet.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORNet.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORNet.pas	(revision 1676)
@@ -0,0 +1,529 @@
+unit ORNet;
+
+{$DEFINE CCOWBROKER}
+
+interface
+
+uses SysUtils, Windows, Classes, Forms, Controls, ORFn, TRPCB, RPCConf1, Dialogs    
+{$IFDEF CCOWBROKER}, CCOWRPCBroker {$ENDIF} ;  //, SharedRPCBroker;
+
+
+procedure SetBrokerServer(const AName: string; APort: Integer; WantDebug: Boolean);
+function AuthorizedOption(const OptionName: string): Boolean;
+function ConnectToServer(const OptionName: string): Boolean;
+function MRef(glvn: string): string;
+procedure CallV(const RPCName: string; const AParam: array of const);
+function sCallV(const RPCName: string; const AParam: array of const): string;
+procedure tCallV(ReturnData: TStrings; const RPCName: string; const AParam: array of const);
+function UpdateContext(NewContext: string): boolean;
+function IsBaseContext: boolean;
+procedure CallBrokerInContext;
+procedure CallBroker;
+function RetainedRPCCount: Integer;
+procedure SetRetainedRPCMax(Value: Integer);
+function GetRPCMax: integer;
+procedure LoadRPCData(Dest: TStrings; ID: Integer);
+function DottedIPStr: string;
+procedure CallRPCWhenIdle(CallProc: TORIdleCallProc; Msg: String);
+
+procedure EnsureBroker;
+
+(*
+function pCallV(const RPCName: string; const AParam: array of const): PChar;
+procedure wCallV(AControl: TControl; const RPCName: string; const AParam: array of const);
+procedure WrapWP(Buf: pChar);
+*)
+
+var
+{$IFDEF CCOWBROKER}
+  RPCBrokerV: TCCOWRPCBroker;
+{$ELSE}
+  RPCBrokerV: TRPCBroker;
+  //RPCBrokerV: TSharedRPCBroker;
+{$ENDIF}
+  RPCLastCall: string;
+
+  AppStartedCursorForm: TForm = nil;
+
+implementation
+
+uses Winsock;
+
+const
+  // *** these are constants from RPCBErr.pas, will broker document them????
+  XWB_M_REJECT =  20000 + 2;  // M error
+  XWB_BadSignOn = 20000 + 4;  // SignOn 'Error' (happens when cancel pressed)
+
+var
+  uCallList: TList;
+  uMaxCalls: Integer;
+  uShowRPCs: Boolean;
+  uBaseContext: string = '';
+  uCurrentContext: string = '';
+
+{ private procedures and functions ---------------------------------------------------------- }
+
+procedure EnsureBroker;
+{ ensures that a broker object has been created - creates & initializes it if necessary }
+begin
+  if RPCBrokerV = nil then
+  begin
+{$IFDEF CCOWBROKER}
+    RPCBrokerV := TCCOWRPCBroker.Create(Application);
+{$ELSE}
+    RPCBrokerV := TRPCBroker.Create(Application);
+    //RPCBrokerV := TSharedRPCBroker.Create(Application);
+{$ENDIF}
+    with RPCBrokerV do
+    begin
+      KernelLogIn := True;
+      Login.Mode  := lmAppHandle;
+      ClearParameters := True;
+      ClearResults := True;
+      DebugMode := False;
+    end;
+  end;
+end;
+
+procedure SetList(AStringList: TStrings; ParamIndex: Integer);
+{ places TStrings into RPCBrokerV.Mult[n], where n is a 1-based (not 0-based) index }
+var
+  i: Integer;
+begin
+  with RPCBrokerV.Param[ParamIndex] do
+  begin
+    PType := list;
+    with AStringList do for i := 0 to Count - 1 do Mult[IntToStr(i+1)] := Strings[i];
+  end;
+end;
+
+procedure SetParams(const RPCName: string; const AParam: array of const);
+{ takes the params (array of const) passed to xCallV and sets them into RPCBrokerV.Param[i] }
+const
+  BoolChar: array[boolean] of char = ('0', '1');
+var
+  i: integer;
+  TmpExt: Extended;
+begin
+  RPCLastCall := RPCName + ' (SetParam begin)';
+  if Length(RPCName) = 0 then raise Exception.Create('No RPC Name');
+  EnsureBroker;
+  with RPCBrokerV do
+  begin
+    ClearParameters := True;
+    RemoteProcedure := RPCName;
+    for i := 0 to High(AParam) do with AParam[i] do
+    begin
+      Param[i].PType := literal;
+      case VType of
+      vtInteger:    Param[i].Value := IntToStr(VInteger);
+      vtBoolean:    Param[i].Value := BoolChar[VBoolean];
+      vtChar:       if VChar = #0 then
+                      Param[i].Value := ''
+                    else
+                      Param[i].Value := VChar;
+      //vtExtended:   Param[i].Value := FloatToStr(VExtended^);
+      vtExtended:   begin
+                      TmpExt := VExtended^;
+                      if(abs(TmpExt) < 0.0000000000001) then TmpExt := 0;
+                      Param[i].Value := FloatToStr(TmpExt);
+                    end;
+      vtString:     with Param[i] do
+                    begin
+                      Value := VString^;
+                      if (Length(Value) > 0) and (Value[1] = #1) then
+                      begin
+                        Value := Copy(Value, 2, Length(Value));
+                        PType := reference;
+                      end;
+                    end;
+      vtPChar:      Param[i].Value := StrPas(VPChar);
+      vtPointer:    if VPointer = nil
+                      then ClearParameters := True {Param[i].PType := null}
+                      else raise Exception.Create('Pointer type must be nil.');
+      vtObject:     if VObject is TStrings then SetList(TStrings(VObject), i);
+      vtAnsiString: with Param[i] do
+                    begin
+                      Value := string(VAnsiString);
+                      if (Length(Value) > 0) and (Value[1] = #1) then
+                      begin
+                        Value := Copy(Value, 2, Length(Value));
+                        PType := reference;
+                      end;
+                    end;
+      vtInt64:      Param[i].Value := IntToStr(VInt64^);
+        else raise Exception.Create('Unable to pass parameter type to Broker.');
+      end; {case}
+    end; {for}
+  end; {with}
+  RPCLastCall := RPCName + ' (SetParam end)';
+end;
+
+{ public procedures and functions ----------------------------------------------------------- }
+
+function UpdateContext(NewContext: string): boolean;
+begin
+  if NewContext = uCurrentContext then
+    Result := TRUE
+  else
+  begin
+    Result := RPCBrokerV.CreateContext(NewContext);
+    if Result then
+      uCurrentContext := NewContext
+    else
+    if (NewContext <> uBaseContext) and RPCBrokerV.CreateContext(uBaseContext) then
+      uCurrentContext := uBaseContext
+    else
+      uCurrentContext := '';
+  end;
+end;
+
+function IsBaseContext: boolean;
+begin
+  Result := ((uCurrentContext = uBaseContext) or (uCurrentContext = ''));
+end;
+
+procedure CallBrokerInContext;
+var
+  AStringList: TStringList;
+  i, j: Integer;
+  x, y: string;
+begin
+  RPCLastCall := RPCBrokerV.RemoteProcedure + ' (CallBroker begin)';
+  if uShowRPCs then StatusText(RPCBrokerV.RemoteProcedure);
+  with RPCBrokerV do if not Connected then  // happens if broker connection is lost
+  begin
+    ClearResults := True;
+    Exit;
+  end;
+  if uCallList.Count = uMaxCalls then
+  begin
+    AStringList := uCallList.Items[0];
+    AStringList.Free;
+    uCallList.Delete(0);
+  end;
+  AStringList := TStringList.Create;
+  AStringList.Add(RPCBrokerV.RemoteProcedure);
+  if uCurrentContext <> uBaseContext then
+    AStringList.Add('Context: ' + uCurrentContext);
+  AStringList.Add(' ');
+  AStringList.Add('Params ------------------------------------------------------------------');
+  with RPCBrokerV do for i := 0 to Param.Count - 1 do
+  begin
+    case Param[i].PType of
+    //global:    x := 'global';
+    list:      x := 'list';
+    literal:   x := 'literal';
+    //null:      x := 'null';
+    reference: x := 'reference';
+    undefined: x := 'undefined';
+    //wordproc:  x := 'wordproc';
+    end;
+    AStringList.Add(x + #9 + Param[i].Value);
+    if Param[i].PType = list then
+    begin
+      for j := 0 to Param[i].Mult.Count - 1 do
+      begin
+        x := Param[i].Mult.Subscript(j);
+        y := Param[i].Mult[x];
+        AStringList.Add(#9 + '(' + x + ')=' + y);
+      end;
+    end;
+  end; {with...for}
+  //RPCBrokerV.Call;
+  try
+    RPCBrokerV.Call;
+  except
+    // The broker erroneously sets connected to false if there is any error (including an
+    // error on the M side). It should only set connection to false if there is no connection.
+    on E:EBrokerError do
+    begin
+      if E.Code = XWB_M_REJECT then
+      begin
+        x := 'An error occurred on the server.' + CRLF + CRLF + E.Action;
+        Application.MessageBox(PChar(x), 'Server Error', MB_OK);
+      end
+      else raise;
+    (*
+      case E.Code of
+      XWB_M_REJECT:  begin
+                       x := 'An error occurred on the server.' + CRLF + CRLF + E.Action;
+                       Application.MessageBox(PChar(x), 'Server Error', MB_OK);
+                     end;
+      else           begin
+                       x := 'An error occurred with the network connection.' + CRLF +
+                            'Action was: ' + E.Action + CRLF + 'Code was: ' + E.Mnemonic +
+                            CRLF + CRLF + 'Application cannot continue.';
+                       Application.MessageBox(PChar(x), 'Network Error', MB_OK);
+                     end;
+      end;
+      *)
+      // make optional later...
+      if not RPCBrokerV.Connected then Application.Terminate;
+    end;
+  end;
+  AStringList.Add(' ');
+  AStringList.Add('Results -----------------------------------------------------------------');
+  FastAddStrings(RPCBrokerV.Results, AStringList);
+  uCallList.Add(AStringList);
+  if uShowRPCs then StatusText('');
+  RPCLastCall := RPCBrokerV.RemoteProcedure + ' (completed)';
+end;
+
+procedure CallBroker;
+begin
+  UpdateContext(uBaseContext);
+  CallBrokerInContext;
+end;
+
+procedure SetBrokerServer(const AName: string; APort: Integer; WantDebug: Boolean);
+{ makes the initial connection to a server }
+begin
+  EnsureBroker;
+  with RPCBrokerV do
+  begin
+    Server := AName;
+    if APort > 0 then ListenerPort := APort;
+    DebugMode := WantDebug;
+    Connected := True;
+  end;
+end;
+
+function AuthorizedOption(const OptionName: string): Boolean;
+{ checks to see if the user is authorized to use this application }
+begin
+  EnsureBroker;
+  Result := RPCBrokerV.CreateContext(OptionName);
+  if Result then
+  begin
+    if (uBaseContext = '') then
+      uBaseContext := OptionName;
+    uCurrentContext := OptionName;
+  end;
+end;
+
+function ConnectToServer(const OptionName: string): Boolean;
+{ establish initial connection to server using optional command line parameters and check that
+  this application (option) is allowed for this user }
+var
+  WantDebug: Boolean;
+  AServer, APort, x: string;
+  i, ModalResult: Integer;
+begin
+  Result := False;
+  WantDebug := False;
+  AServer := '';
+  APort := '';
+  for i := 1 to ParamCount do            // params may be: S[ERVER]=hostname P[ORT]=port DEBUG
+  begin
+    if UpperCase(ParamStr(i)) = 'DEBUG' then WantDebug := True;
+    if UpperCase(ParamStr(i)) = 'SHOWRPCS' then uShowRPCs := True;
+    x := UpperCase(Piece(ParamStr(i), '=', 1));
+    if (x = 'S') or (x = 'SERVER') then AServer := Piece(ParamStr(i), '=', 2);
+    if (x = 'P') or (x = 'PORT') then APort := Piece(ParamStr(i), '=', 2);
+  end;
+  if (AServer = '') or (APort = '') then
+  begin
+    ModalResult := GetServerInfo(AServer, APort);
+    if ModalResult = mrCancel then Exit;
+  end;
+  // use try..except to work around errors in the Broker SignOn screen
+  try
+    SetBrokerServer(AServer, StrToIntDef(APort, 9200), WantDebug);
+    Result := AuthorizedOption(OptionName);
+    if Result then Result := RPCBrokerV.Connected;
+    RPCBrokerV.RPCTimeLimit := 300;
+  except
+    on E:EBrokerError do
+    begin
+      if E.Code <> XWB_BadSignOn then InfoBox(E.Message, 'Error', MB_OK or MB_ICONERROR);
+      Result := False;
+    end;
+  end;
+end;
+
+function MRef(glvn: string): string;
+{ prepends ASCII 1 to string, allows SetParams to interpret as an M reference }
+begin
+  Result := #1 + glvn;
+end;
+
+function GetRPCCursor: TCursor;
+var
+  pt: TPoint;
+begin
+  Result := crHourGlass;
+  if assigned(AppStartedCursorForm) and (AppStartedCursorForm.Visible) then
+  begin
+    pt := Mouse.CursorPos;
+    if PtInRect(AppStartedCursorForm.BoundsRect, pt) then
+      Result := crAppStart;    
+  end;
+end;
+
+procedure CallV(const RPCName: string; const AParam: array of const);
+{ calls the broker leaving results in results property which must be read by caller }
+var
+  SavedCursor: TCursor;
+begin
+  SavedCursor := Screen.Cursor;
+  Screen.Cursor := GetRPCCursor;
+  SetParams(RPCName, AParam);
+  CallBroker;  //RPCBrokerV.Call;
+  Screen.Cursor := SavedCursor;
+end;
+
+function sCallV(const RPCName: string; const AParam: array of const): string;
+{ calls the broker and returns a scalar value. }
+var
+  SavedCursor: TCursor;
+begin
+  SavedCursor := Screen.Cursor;
+  Screen.Cursor := GetRPCCursor;
+  SetParams(RPCName, AParam);
+  CallBroker;  //RPCBrokerV.Call;
+  if RPCBrokerV.Results.Count > 0 then Result := RPCBrokerV.Results[0] else Result := '';
+  Screen.Cursor := SavedCursor;
+end;
+
+procedure tCallV(ReturnData: TStrings; const RPCName: string; const AParam: array of const);
+{ calls the broker and returns TStrings data }
+var
+  SavedCursor: TCursor;
+begin
+  if ReturnData = nil then raise Exception.Create('TString not created');
+  SavedCursor := Screen.Cursor;
+  Screen.Cursor := GetRPCCursor;
+  SetParams(RPCName, AParam);
+  CallBroker;  //RPCBrokerV.Call;
+  FastAssign(RPCBrokerV.Results, ReturnData);
+  Screen.Cursor := SavedCursor;
+end;
+
+(*  uncomment if these are needed -
+
+function pCallV(const RPCName: string; const AParam: array of const): PChar;
+{ Calls the Broker.  Result is a PChar containing raw Broker data. }
+{ -- Caller must dispose the string that is returned -- }
+var
+  SavedCursor: TCursor;
+begin
+  SavedCursor := Screen.Cursor;
+  Screen.Cursor := GetRPCCursor;
+  SetParams(RPCName, AParam);
+  RPCBrokerV.Call;
+  pCallV := StrNew(RPCBrokerV.Results.GetText);
+  Screen.Cursor := SavedCursor;
+end;
+
+procedure wCallV(AControl: TControl; const RPCName: string; const AParam: array of const);
+{ Calls the Broker.  Places data into control (wrapped). }
+var
+  BufPtr: PChar;
+begin
+  BufPtr := pCallV(RPCName, AParam);
+  WrapWP(BufPtr);
+  AControl.SetTextBuf(BufPtr);
+  StrDispose(BufPtr);
+end;
+
+procedure WrapWP(Buf: pChar);
+{ Iterates through Buf and wraps text in the same way that FM wraps text. }
+var
+  PSub: PChar;
+begin
+  PSub := StrScan(Buf, #13);
+  while PSub <> nil do
+  begin
+    if Ord(PSub[2]) > 32 then
+    begin
+      StrMove(PSub, PSub + SizeOf(Char), StrLen(PSub));
+      PSub[0] := #32;
+    end
+    else repeat Inc(PSub, SizeOf(Char)) until (Ord(PSub[0]) > 32) or (PSub = StrEnd(PSub));
+    PSub := StrScan(PSub, #13);
+  end;
+end;
+
+*)
+
+function RetainedRPCCount: Integer;
+begin
+  Result := uCallList.Count;
+end;
+
+procedure SetRetainedRPCMax(Value: Integer);
+begin
+  if Value > 0 then uMaxCalls := Value;
+end;
+
+function GetRPCMax: integer;
+begin
+  Result := uMaxCalls;
+end;
+
+procedure LoadRPCData(Dest: TStrings; ID: Integer);
+begin
+  if (ID > -1) and (ID < uCallList.Count) then FastAssign(TStringList(uCallList.Items[ID]), Dest);
+end;
+
+function DottedIPStr: string;
+{ return the IP address of the local machine as a string in dotted form: nnn.nnn.nnn.nnn }
+const
+  WINSOCK1_1 = $0101;      // minimum required version of WinSock
+  SUCCESS = 0;             // value returned by WinSock functions if no error
+var
+  //WSAData: TWSAData;       // structure to hold startup information
+  HostEnt: PHostEnt;       // pointer to Host Info structure (see WinSock 1.1, page 60)
+  IPAddr: PInAddr;         // pointer to IP address in network order (4 bytes)
+  LocalName: array[0..255] of Char;  // buffer for the name of the client machine
+begin
+  Result := 'No IP Address';
+  // ensure the Winsock DLL has been loaded (should be if there is a broker connection)
+  //if WSAStartup(WINSOCK1_1, WSAData) <> SUCCESS then Exit;
+  //try
+    // get the name of the client machine
+    if gethostname(LocalName, SizeOf(LocalName) - 1) <> SUCCESS then Exit;
+    // get information about the client machine (contained in a record of type THostEnt)
+    HostEnt := gethostbyname(LocalName);
+    if HostEnt = nil then Exit;
+    // get a pointer to the four bytes that contain the IP address
+    // Dereference HostEnt to get the THostEnt record.  In turn, dereference the h_addr_list
+    // field to get a pointer to the IP address.  The pointer to the IP address is type PChar,
+    // so it needs to be typecast as PInAddr in order to make the call to inet_ntoa.
+    IPAddr := PInAddr(HostEnt^.h_addr_list^);
+    // Dereference IPAddr (which is a PChar typecast as PInAddr) to get the 4 bytes that need
+    // to be passed to inet_ntoa.  A string with the IP address in dotted format is returned.
+    Result := inet_ntoa(IPAddr^);
+  //finally
+    // causes the reference counter in Winsock (set by WSAStartup, above) to be decremented
+    //WSACleanup;
+  //end;
+end;
+
+procedure RPCIdleCallDone(Msg: string);
+begin
+  RPCBrokerV.ClearResults := True; 
+end;
+
+procedure CallRPCWhenIdle(CallProc: TORIdleCallProc; Msg: String);
+begin
+  CallWhenIdleNotifyWhenDone(CallProc, RPCIdleCallDone, Msg);
+end;
+
+initialization
+  RPCBrokerV := nil;
+  RPCLastCall := 'No RPCs called';
+  uCallList := TList.Create;
+  uMaxCalls := 10;
+  uShowRPCs := False;
+
+finalization
+  while uCallList.Count > 0 do
+  begin
+    TStringList(uCallList.Items[0]).Free;
+    uCallList.Delete(0);
+  end;
+  uCallList.Free;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORSystem.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORSystem.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/ORSystem.pas	(revision 1676)
@@ -0,0 +1,561 @@
+unit ORSystem;
+
+{$O-}
+{$WARN SYMBOL_PLATFORM OFF}
+
+interface
+
+uses SysUtils, Windows, Classes, Forms, Registry, ORFn;
+
+const
+  CPRS_ROOT_KEY =  HKEY_LOCAL_MACHINE;
+  CPRS_USER_KEY =  HKEY_CURRENT_USER;
+  CPRS_SOFTWARE = 'Software\Vista\CPRS';
+  CPRS_REG_AUTO = 'AutoUpdate';
+  CPRS_REG_GOLD = 'GoldCopyPath';
+  CPRS_REG_ONLY = 'LimitUpdate';
+  CPRS_REG_ASK  = 'AskFirst';
+  CPRS_REG_LAST = 'LastUpdate-';
+  CPRS_USER_LAST = 'Software\Vista\CPRS\LastUpdate';
+  CPRS_LAST_DATE = 'Software\Vista\CPRS\DateUpdated';
+
+function AppOutOfDate(AppName: string): Boolean;
+function ClientVersion(const AFileName: string): string;
+function CompareVersion(const A, B: string): Integer;
+procedure CopyFileDate(const Source, Dest: string);
+procedure CopyLastWriteTime(const Source, Dest: string);
+//procedure CopyFileWithDate(const FromFileName, ToFileName: string);
+procedure Delay(i: Integer);
+//procedure FileCopy(const FromFileName, ToFileName: string);
+//procedure FileCopyWithDate(const FromFileName, ToFileName: string);
+function FullToFilePart(const AFileName: string): string;
+function FullToPathPart(const AFileName: string): string;
+function IsWin95Style: Boolean;
+function ParamIndex(const AName: string): Integer;
+function ParamSearch(const AName: string): string;
+function QuotedExeName: string;
+function RegKeyExists(ARoot: HKEY; const AKey: string): Boolean;
+function RegReadInt(const AName: string): Integer;
+function RegReadStr(const AName: string): string;
+function RegReadBool(const AName: string): Boolean;
+procedure RegWriteInt(const AName: string; AValue: Integer);
+procedure RegWriteStr(const AName, AValue: string);
+procedure RegWriteBool(const AName: string; AValue: Boolean);
+function UserRegReadDateTime(const AKey, AName: string): TDateTime;
+procedure UserRegWriteDateTime(const AKey, AName: string; AValue: TDateTime);
+function UserRegReadInt(const AKey, AName: string): Integer;
+procedure UserRegWriteInt(const AKey, AName: string; AValue: Integer);
+procedure RunProgram(const AppName: string);
+function UpdateSelf: Boolean;
+function BorlandDLLVersionOK: boolean;
+
+implementation
+
+const
+  CREATE_KEY = True;  // cause key to be created if it's not in the registry
+
+function FileLastWrite(const FileName: string): LARGE_INTEGER;
+var
+  AHandle: THandle;
+  FindData: TWin32FindData;
+begin
+  Result.QuadPart := 0;
+  AHandle := FindFirstFile(PChar(FileName), FindData);
+  if AHandle <> INVALID_HANDLE_VALUE then
+  begin
+    Windows.FindClose(AHandle);
+    Result.LowPart  := FindData.ftLastWriteTime.dwLowDateTime;
+    Result.HighPart := FindData.ftLastWriteTime.dwHighDateTime;
+  end;
+end;
+
+function AppOutOfDate(AppName: string): Boolean;
+const
+  FIVE_SECONDS = 0.000055;
+  FIVE_SECONDS_NT = 50000000;
+var
+  GoldName, DriveRoot, x: string;
+  DriveType: Integer;
+  LastWriteApp, LastWriteGold: LARGE_INTEGER;
+begin
+  Result := False;
+  // check command line params for no-update parameter
+  if ParamIndex('NOCOPY') > 0 then Exit;
+  // check time of last update, don't retry if too recently called
+  if Abs(Now - UserRegReadDateTime(CPRS_LAST_DATE, FullToFilePart(AppName))) < FIVE_SECONDS
+    then Exit;
+  // check auto-update registry entry
+  if RegReadBool(CPRS_REG_AUTO) = False then Exit;
+  // check directory - if remote then don't allow update
+  if Pos('\\', AppName) = 1 then Exit;
+  if Pos(':', AppName) > 0
+    then DriveRoot := Piece(AppName, ':', 1) + ':\'
+    else DriveRoot := '\';
+  DriveType := GetDriveType(PChar(DriveRoot));
+  if not ((DriveType = DRIVE_FIXED) or (DriveType = DRIVE_REMOVABLE)) then Exit;
+  // check registry to see if updates limited to particular directory
+  x := RegReadStr(CPRS_REG_ONLY);
+  if (Length(x) > 0) and (CompareText(x, FullToPathPart(AppName)) <> 0) then Exit;
+  // check for different file date in the gold directory
+  GoldName := RegReadStr(CPRS_REG_GOLD);
+  if (Length(GoldName) = 0)  then exit;
+  if not DirectoryExists(GoldName) then
+  begin
+    if Pos('"', Goldname) > 0 then
+    begin
+      Goldname := Copy(GoldName, 2, MaxInt);
+      if Pos('"', Goldname) > 0 then
+        Goldname := Copy(GoldName, 1, Length(GoldName) - 1);
+    end;
+  end;
+  if (not DirectoryExists(GoldName)) then Exit;
+  GoldName := GoldName + FullToFilePart(AppName);
+  if FileExists(GoldName) then
+  begin
+    LastWriteApp  := FileLastWrite(AppName);
+    LastWriteGold := FileLastWrite(GoldName);
+    // check within 5 seconds to work around diffs in NTFS & FAT timestamps
+    if Abs(LastWriteApp.QuadPart - LastWriteGold.QuadPart) > FIVE_SECONDS_NT then Result := True;
+    //if CompareFileTime(LastWriteApp, LastWriteGold) <> 0 then Result := True;
+  end;
+end;
+
+function ClientVersion(const AFileName: string): string;
+var
+  ASize, AHandle: DWORD;
+  Buf: string;
+  FileInfoPtr: Pointer; //PVSFixedFileInfo;
+begin
+  Result := '';
+  ASize:=GetFileVersionInfoSize(PChar(AFileName), AHandle);
+  if ASize > 0 then
+  begin
+    SetLength(Buf, ASize);
+    GetFileVersionInfo(PChar(AFileName), AHandle, ASize, Pointer(Buf));
+    VerQueryValue(Pointer(Buf), '\', FileInfoPtr, ASize);
+    with TVSFixedFileInfo(FileInfoPtr^) do Result := IntToStr(HIWORD(dwFileVersionMS)) + '.' +
+                                                     IntToStr(LOWORD(dwFileVersionMS)) + '.' +
+                                                     IntToStr(HIWORD(dwFileVersionLS)) + '.' +
+                                                     IntToStr(LOWORD(dwFileVersionLS));
+  end;
+end;
+
+function CompareVersion(const A, B: string): Integer;
+var
+  NumA, NumB: Integer;
+begin
+  NumA := (StrToInt(Piece(A, '.', 1)) * 16777216) +
+          (StrToInt(Piece(A, '.', 2)) * 65536) +
+          (StrToInt(Piece(A, '.', 3)) * 256) +
+           StrToInt(Piece(A, '.', 4));
+  NumB := (StrToInt(Piece(B, '.', 1)) * 16777216) +
+          (StrToInt(Piece(B, '.', 2)) * 65536) +
+          (StrToInt(Piece(B, '.', 3)) * 256) +
+           StrToInt(Piece(B, '.', 4));
+  Result := NumA - NumB;
+end;
+
+procedure CopyFileDate(const Source, Dest: string);
+{ from TI2972 }
+var
+  SourceHand, DestHand: Integer;
+begin
+  SourceHand := FileOpen(Source, fmOutput);       { open source file }
+  DestHand := FileOpen(Dest, fmInput);            { open dest file }
+  FileSetDate(DestHand, FileGetDate(SourceHand)); { get/set date }
+  FileClose(SourceHand);                          { close source file }
+  FileClose(DestHand);                            { close dest file }
+end;
+
+procedure CopyLastWriteTime(const Source, Dest: string);
+var
+  HandleSrc, HandleDest: Integer;
+  LastWriteTime: TFileTime;
+begin
+  HandleSrc  := FileOpen(Source, fmOpenRead or fmShareDenyNone);
+  HandleDest := FileOpen(Dest,   fmOpenWrite);
+  if (HandleSrc > 0) and (HandleDest > 0) then
+  begin
+    if GetFileTime(THandle(HandleSrc), nil, nil, @LastWriteTime) = TRUE
+      then SetFileTime(THandle(HandleDest), nil, nil, @LastWriteTime);
+    FileClose(HandleSrc);
+    FileClose(HandleDest);
+  end;
+end;
+
+procedure Delay(i: Integer);
+const
+  AMilliSecond = 0.000000011574;
+var
+  Start: TDateTime;
+begin
+  Start := Now;
+  while Now < (Start + (i * AMilliSecond)) do Application.ProcessMessages;
+end;
+
+procedure FileCopy(const FromFileName, ToFileName: string);
+var
+  FromFile, ToFile: file;
+  NumRead, NumWritten: Integer;
+  Buf: array[1..16384] of Char;
+begin
+  AssignFile(FromFile, FromFileName);                  // Input file
+  Reset(FromFile, 1);		                               // Record size = 1
+  AssignFile(ToFile, ToFileName);	                     // Output file
+  Rewrite(ToFile, 1);		                               // Record size = 1
+  repeat
+    BlockRead(FromFile, Buf, SizeOf(Buf), NumRead);
+    BlockWrite(ToFile, Buf, NumRead, NumWritten);
+  until (NumRead = 0) or (NumWritten <> NumRead);
+  CloseFile(FromFile);
+  CloseFile(ToFile);
+end;
+
+procedure FileCopyWithDate(const FromFileName, ToFileName: string);
+var
+  FileHandle, ADate: Integer;
+begin
+  FileCopy(FromFileName, ToFileName);
+  FileHandle := FileOpen(FromFileName, fmOpenRead or fmShareDenyNone);
+  ADate := FileGetDate(FileHandle);
+  FileClose(FileHandle);
+  if ADate < 0 then Exit;
+  FileHandle := FileOpen(ToFileName, fmOpenWrite or fmShareDenyNone);
+  if FileHandle > 0 then FileSetDate(FileHandle, ADate);
+  FileClose(FileHandle);
+end;
+
+procedure CopyFileWithDate(const FromFileName, ToFileName: string);
+var
+  FileHandle, ADate: Integer;
+begin
+  if CopyFile(PChar(FromFileName), PChar(ToFileName), False) then
+  begin
+    FileHandle := FileOpen(FromFileName, fmOpenRead or fmShareDenyNone);
+    ADate := FileGetDate(FileHandle);
+    FileClose(FileHandle);
+    if ADate < 0 then Exit;
+    FileHandle := FileOpen(ToFileName, fmOpenWrite or fmShareDenyNone);
+    if FileHandle > 0 then FileSetDate(FileHandle, ADate);
+    FileClose(FileHandle);
+  end;
+end;
+
+function FullToFilePart(const AFileName: string): string;
+var
+  DirBuf: string;
+  FilePart: PChar;
+  NameLen: DWORD;
+begin
+  Result := '';
+  SetString(DirBuf, nil, 255);
+  NameLen := GetFullPathName(PChar(AFileName), 255, PChar(DirBuf), FilePart);
+  if NameLen > 0 then Result := FilePart;
+end;
+
+function FullToPathPart(const AFileName: string): string;
+var
+  DirBuf: string;
+  FilePart: PChar;
+  NameLen: Cardinal;
+begin
+  Result := '';
+  SetString(DirBuf, nil, 255);
+  NameLen := GetFullPathName(PChar(AFileName), 255, PChar(DirBuf), FilePart);
+  if NameLen > 0 then Result := Copy(DirBuf, 1, NameLen - StrLen(FilePart));
+end;
+
+function IsWin95Style: Boolean;
+begin
+  Result := Lo(GetVersion) >= 4;          // True = Win95 interface, otherwise old interface
+end;
+
+function ParamIndex(const AName: string): Integer;
+var
+  i: Integer;
+  x: string;
+begin
+  Result := 0;
+  for i := 1 to ParamCount do
+  begin
+    x := UpperCase(ParamStr(i));
+    x := Piece(x, '=', 1);
+    if x = Uppercase(AName) then
+    begin
+      Result := i;
+      Break;
+    end;
+  end; {for i}
+end;
+
+function ParamSearch(const AName: string): string;
+var
+  i: Integer;
+  x: string;
+begin
+  Result := '';
+  for i := 1 to ParamCount do
+  begin
+    x := UpperCase(ParamStr(i));
+    x := Copy(x, 1, Pos('=', x) - 1);
+    if x = Uppercase(AName) then
+    begin
+      Result := UpperCase(Copy(ParamStr(i), Length(x) + 2, Length(ParamStr(i))));
+      Break;
+    end;
+  end; {for i}
+end;
+
+function QuotedExeName: string;
+var
+  i: Integer;
+begin
+  Result := '"' + ParamStr(0) + '"';
+  for i := 1 to ParamCount do Result := Result + ' ' + ParamStr(i);
+end;
+
+function RegReadInt(const AName: string): Integer;
+var
+  Registry: TRegistry;
+begin
+  Result := 0;
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_ROOT_KEY;
+    if Registry.OpenKeyReadOnly(CPRS_SOFTWARE) and Registry.ValueExists(AName)
+      then Result := Registry.ReadInteger(AName);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+function RegReadStr(const AName: string): string;
+var
+  Registry: TRegistry;
+begin
+  Result := '';
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_ROOT_KEY;
+    if Registry.OpenKeyReadOnly(CPRS_SOFTWARE) and Registry.ValueExists(AName)
+      then Result := Registry.ReadString(AName);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+function RegReadBool(const AName: string): Boolean;
+var
+  Registry: TRegistry;
+begin
+  Result := False;
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_ROOT_KEY;
+    if Registry.OpenKeyReadOnly(CPRS_SOFTWARE) and Registry.ValueExists(AName)
+      then Result := Registry.ReadBool(AName);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+procedure RegWriteInt(const AName: string; AValue: Integer);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_ROOT_KEY;
+    if Registry.OpenKey(CPRS_SOFTWARE, CREATE_KEY) then Registry.WriteInteger(AName, AValue);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+procedure RegWriteStr(const AName, AValue: string);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_ROOT_KEY;
+    if Registry.OpenKey(CPRS_SOFTWARE, CREATE_KEY) then Registry.WriteString(AName, AValue);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+procedure RegWriteBool(const AName: string; AValue: Boolean);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_ROOT_KEY;
+    if Registry.OpenKey(CPRS_SOFTWARE, CREATE_KEY) then Registry.WriteBool(AName, AValue);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+function RegKeyExists(ARoot: HKEY; const AKey: string): Boolean;
+var
+  Registry: TRegistry;
+begin
+  Result := False;
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := ARoot;
+    //Result := Registry.KeyExists(AKey); {this tries to open key with full access}
+    if Registry.OpenKeyReadOnly(AKey) and (Registry.CurrentKey <> 0) then Result := True;
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+function UserRegReadDateTime(const AKey, AName: string): TDateTime;
+var
+  Registry: TRegistry;
+begin
+  Result := 0;
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_USER_KEY;
+    if Registry.OpenKey(AKey, CREATE_KEY) and Registry.ValueExists(AName) then
+    try
+      Result := Registry.ReadDateTime(AName);
+    except
+      on ERegistryException do Result := 0;
+    end;
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+procedure UserRegWriteDateTime(const AKey, AName: string; AValue: TDateTime);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_USER_KEY;
+    if Registry.OpenKey(AKey, CREATE_KEY) then Registry.WriteDateTime(AName, AValue);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+function UserRegReadInt(const AKey, AName: string): Integer;
+var
+  Registry: TRegistry;
+begin
+  Result := 0;
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_USER_KEY;
+    if Registry.OpenKey(AKey, CREATE_KEY) and Registry.ValueExists(AName)
+      then Result := Registry.ReadInteger(AName);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+procedure UserRegWriteInt(const AKey, AName: string; AValue: Integer);
+var
+  Registry: TRegistry;
+begin
+  Registry := TRegistry.Create;
+  try
+    Registry.RootKey := CPRS_USER_KEY;
+    if Registry.OpenKey(AKey, CREATE_KEY) then Registry.WriteInteger(AName, AValue);
+    Registry.CloseKey;
+  finally
+    Registry.Free;
+  end;
+end;
+
+procedure RunProgram(const AppName: string);
+var
+  StartInfo: TStartupInfo;
+  ProcInfo: TProcessInformation;
+begin
+  FillChar(StartInfo, SizeOf(StartInfo), 0);
+  StartInfo.CB := SizeOf(StartInfo);
+  CreateProcess(nil, PChar(AppName), nil, nil, False, DETACHED_PROCESS or NORMAL_PRIORITY_CLASS,
+    nil, nil, StartInfo, ProcInfo);
+end;
+
+function UpdateSelf: Boolean;
+var
+  CPRSUpdate: string;
+begin
+  // auto-update if newer version available
+  Result := False;
+  CPRSUpdate := RegReadStr(CPRS_REG_GOLD) + 'CPRSUpdate.exe';
+  if not FileExists(CPRSUpdate) then CPRSUpdate := 'CPRSUpdate.exe';
+  if AppOutOfDate(Application.ExeName) and FileExists(CPRSUpdate) then
+  begin
+    Result := True;
+    RunProgram(CPRSUpdate + ' COPY=' + QuotedExeName);
+  end;
+end;
+
+(*
+procedure UpdateAppFromGold(const AppName: string);
+var
+  GoldName: string;
+begin
+  Delay(1500);
+  // do a rename of AppName in case problem?
+  GoldName := RegReadStr(CPRS_REG_GOLD);
+  if Length(GoldName) = 0 then Exit;
+  if GoldName[Length(GoldName)] <> '\' then GoldName := GoldName + '\';
+  GoldName := GoldName + ReverseStr(Piece(ReverseStr(AppName), '\', 1));
+  CopyFileWithDate(GoldName, AppName);
+end;
+*)
+
+function BorlandDLLVersionOK: boolean;
+const
+  DLL_CURRENT_VERSION = 10;
+  TC_DLL_ERR   = 'ERROR - BORLNDMM.DLL';
+  TX_NO_RUN    = 'This version of CPRS is unable to run because' + CRLF;
+  TX_NO_DLL    = 'no copy of BORLNDMM.DLL can be found' + CRLF +
+                 'in your workstation''s current PATH.';
+  TX_OLD_DLL1  = 'the copy of BORLNDMM.DLL located at:' + CRLF + CRLF;
+  TX_OLD_DLL2  = CRLF + CRLF + 'is out of date  (Version ';
+  TX_CALL_IRM  = CRLF + CRLF +'Please contact IRM for assistance.';
+var
+  DLLHandle: HMODULE;
+  DLLNamePath: array[0..261] of Char;
+  DLLVersion: string;
+begin
+  Result := TRUE;
+  DLLHandle := GetModuleHandle('BORLNDMM.DLL');
+  if DLLHandle <=0 then
+  begin
+    InfoBox(TX_NO_RUN + TX_NO_DLL + TX_CALL_IRM, TC_DLL_ERR, MB_ICONERROR or MB_OK);
+    Result := FALSE;
+    Exit;
+  end;
+  Windows.GetModuleFileName(DLLHandle, DLLNamePath, 261);
+  DLLVersion := ClientVersion(DLLNamePath);
+  if StrToIntDef(Piece(DLLVersion, '.', 1), 0) < DLL_CURRENT_VERSION then
+  begin
+    InfoBox(TX_NO_RUN + TX_OLD_DLL1 + '   ' + DLLNamePath + TX_OLD_DLL2 + DLLVersion + ')' +
+            TX_CALL_IRM, TC_DLL_ERR, MB_ICONERROR or MB_OK);
+    Result := false;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.cfg	(revision 1676)
@@ -0,0 +1,42 @@
+-$A8
+-$B-
+-$C-
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J+
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q+
+-$R+
+-$S-
+-$T-
+-$U-
+-$V+
+-$W+
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"c:\program files\borland\delphi6\dev\exesave"
+-N"..\cprs-lib\DCU"
+-LE"..\Packages"
+-LN"..\Packages"
+-U"..\cprs-lib;..\Packages"
+-O"..\cprs-lib;..\Packages"
+-I"..\cprs-lib;..\Packages"
+-R"..\cprs-lib;..\Packages"
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.dof	(revision 1676)
@@ -0,0 +1,133 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=0
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=1
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=1
+R=1
+S=0
+T=0
+U=0
+V=1
+W=1
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=Wrap Grid
+[Directories]
+OutputDir=$(DELPHI)\dev\exesave
+UnitOutputDir=..\cprs-lib\DCU
+PackageDLLOutputDir=..\Packages
+PackageDCPOutputDir=..\Packages
+SearchPath=..\cprs-lib;..\Packages
+Packages=Vcl40;Vclx40;Vcldb40;vcldbx40;VclSmp40;Qrpt40;TeeUI40;teedb40;tee40;ibevnt40;nmfast40;VistABroker
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=$00000409
+RootDir=
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=9
+Item0=..\cprs-lib;..\Packages
+Item1=d:\vista\main\cprs-lib;d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib;d:\program files\vista\broker\bdk32\d5
+Item3=d:\vista\main\cprs-chart;d:\vista\main\cprs-lib;d:\vista\main\cprs-chart\encounter;d:\vista\main\cprs-chart\consults
+Item4=d:\vista\main\cprs-lib
+Item5=\Dev\CPRS\main\CPRS-Lib
+Item6=C:\Dev\CPRS\main\CPRS-Lib
+Item7=\Projects\Perforce\main\CPRS-Lib
+Item8=$(DELPHI)\Projects\Current\CPRS-Lib
+[HistoryLists\hlUnitOutputDirectory]
+Count=8
+Item0=..\cprs-lib\DCU
+Item1=d:\vista\main\cprs-lib\DCU
+Item2=d:\vista\main\cprs-lib\DCUSave
+Item3=d:\vista\main\cprs-chart\dcu
+Item4=\Dev\DCUSave
+Item5=C:\Dev\DCUSave
+Item6=\Projects\DCUSave
+Item7=$(DELPHI)\Projects\DCUSave
+[HistoryLists\hlOutputDirectorry]
+Count=2
+Item0=$(DELPHI)\dev\exesave
+Item1=d:\vista\main\cprs-chart
+[HistoryLists\hlBPLOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
+[HistoryLists\hlDCPOutput]
+Count=7
+Item0=..\Packages
+Item1=d:\vista\main\Packages
+Item2=d:\vista\main\cprs-lib
+Item3=\Dev\Packages
+Item4=C:\Dev\Packages
+Item5=\Projects\Packages
+Item6=$(DELPHI)\Projects\Packages
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.dpk	(revision 1676)
@@ -0,0 +1,35 @@
+package VA10;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'Wrap Grid'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl;
+
+contains
+  Vawrgrid in 'Vawrgrid.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA10.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER140
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA2006.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA2006.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA2006.dpk	(revision 1676)
@@ -0,0 +1,35 @@
+package VA2006;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS OFF}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS ON}
+{$RANGECHECKS ON}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES ON}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST ON}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'Wrap Grid'}
+{$DESIGNONLY}
+{$IMPLICITBUILD ON}
+
+requires
+  vcl;
+
+contains
+  Vawrgrid in 'Vawrgrid.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA2006.drc
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA2006.drc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/VA2006.drc	(revision 1676)
@@ -0,0 +1,14 @@
+/* VER180
+  Generated by the Borland Delphi Pascal Compiler
+  because -GD or --drc was supplied to the compiler.
+
+  This file contains compiler-generated resources that
+  were bound to the executable.
+  If this file is empty, then no compiler-generated
+  resources were bound to the produced executable.
+*/
+
+STRINGTABLE
+BEGIN
+END
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/Vawrgrid.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/Vawrgrid.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/Vawrgrid.pas	(revision 1676)
@@ -0,0 +1,168 @@
+unit Vawrgrid;
+
+
+
+interface
+
+uses
+  SysUtils, Windows, Messages, Classes, Graphics, Controls,
+  Forms, Dialogs, Grids;
+
+type
+  TVAWrapGrid = class(TStringGrid)
+  private
+    { Private declarations }
+    fHiddenCols: string;
+    fHiddenColMap: string[255];
+    procedure SetHiddenCols(Value:string);
+  protected
+    { Protected declarations }
+    { This DrawCell procedure wraps text in the grid cell }
+    procedure DrawCell(Col, Row : Longint; Rect : TRect; State : TGridDrawState); override ;
+  public
+    constructor Create(AOwner : TComponent); override ;
+  published
+    { Published declarations }
+    property HiddenCols: string read fHiddenCols write SetHiddenCols;
+  end;
+
+procedure Register;
+
+implementation
+
+constructor TVAWrapGrid.Create(AOwner : TComponent);
+begin
+ { Create a TStringGrid }
+ inherited Create(AOwner);
+ HiddenCols:='';
+  {change to bit map someday}
+ fHiddenColMap:='';
+end;
+
+
+procedure TVAWrapGrid.SetHiddenCols(value:string);
+var
+ v,old:string;
+ j:integer;
+ procedure SetCol(val:string);
+ var
+  i:integer;
+ begin
+  i:=strtoint(val) + 1; {offset for 1 based string index}
+  if (i in [1..255]) then fHiddenColMap[i]:='1';
+ end;
+begin
+ old:=fHiddenColMap; {save oldmap image}
+ fHiddenCols:=Value;
+ fHiddenColMap:='';  {reset the map}
+ for j:=1 to 255 do
+ fHiddenColMap:=fHiddenColMap + '0';
+ while pos(',',value)>0 do
+  begin
+   v:=copy(value,1,pos(',',value)-1);
+   SetCol(v);
+   Delete(value,1,pos(',',value));
+  end;
+ if value <> '' then
+  begin
+   SetCol(value); {get the last piece}
+   if not (csDesigning in componentstate) then
+    invalidate;
+  end;
+ if old='' then exit;
+ if (old <> fHiddenColMap) and (not (csDesigning in componentState)) then
+  begin
+   j:=pos('1',old);
+   while j > 0 do
+    begin
+     if fHiddenColMap[j]='0' then
+      if pred(j) < colcount then colwidths[pred(j)]:=defaultcolwidth;
+     old[j]:='0'; {get rid of hit}
+     j:=pos('1',old);
+    end;
+  end;
+end;
+
+
+{ This DrawCell procedure wraps text in the grid cell }
+procedure TVAWrapGrid.DrawCell(Col,Row: Longint; Rect: TRect; State: TGridDrawState);
+var
+  i, MaxRowHeight, CurrRowHeight, hgt, CellLen :integer;
+  CellValue :PChar;
+begin
+  {don't display hidden cols}
+  if RowHeights[Row] = 0 then exit;
+  if (fHiddenColMap[succ(col)] = '1') and (not (csDesigning in componentstate)) then
+    {disappear the column}
+    begin
+      if colwidths[col] > 0 then colwidths[col] := 0;
+      exit;
+    end;
+  with Canvas do {not a hidden col}
+    begin
+      if colwidths[col]=0 then ColWidths[col] := defaultcolwidth;
+      { Initialize the font to be the control's font }
+      Canvas.Font       := Font;
+      Canvas.Font.Color := Font.Color;
+      {If this is a fixed cell, then use the fixed color }
+      if gdFixed in State then
+        begin
+          Pen.Color   := FixedColor;
+          Brush.Color := FixedColor;
+          font.color  := self.font.color;
+        end
+      {if highlighted cell}
+      else if (gdSelected in State) and
+              (not (gdFocused in State) or
+              ([goDrawFocusSelected, goRowSelect] * Options <> [])) then
+        begin
+          Brush.Color := clHighlight;
+          Font.Color  := clHighlightText;
+        end
+      {else, use the normal color }
+      else
+        begin
+          Pen.Color   := Color;
+          Brush.Color := Color;
+          font.color  := self.font.color;
+        end;
+      {Prepaint cell in cell color }
+      FillRect(rect);
+    end;
+
+  CellValue := PChar(cells[col,row]);
+  CellLen   := strlen(CellValue);
+
+  {get cell size}
+  Drawtext(canvas.handle,CellValue,CellLen,rect,DT_LEFT or DT_WORdbreak or DT_CALCRECT or DT_NOPREFIX);
+
+  {Draw text in cell}
+  Drawtext(canvas.handle,CellValue,CellLen,rect,DT_LEFT or DT_WORdbreak or DT_NOPREFIX);
+
+  {adjust row heights up OR DOWN}
+  MaxRowHeight  := DefaultRowHeight;
+  CurrRowHeight := RowHeights[row];
+  for i := pred(colcount) downto 0 do
+    begin
+      if (not (gdFixed in state)) then
+        begin
+          rect := cellrect(i,row);
+          hgt  := Drawtext(canvas.handle,PChar(cells[i,row]),length(cells[i,row]),rect,DT_LEFT or
+                        DT_WORdbreak or DT_CALCRECT or DT_NOPREFIX);
+          if hgt > MaxRowHeight then MaxRowHeight := hgt;
+        end;
+    end;
+
+  if MaxRowHeight <> CurrRowHeight then rowheights[row] := MaxRowHeight;
+
+end;
+
+procedure Register;
+begin
+   { You can change Samples to whichever part of the Component Palette you want
+     to install this component to }
+   RegisterComponents('CPRS', [TVAWrapGrid]);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/XMLUtils.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/XMLUtils.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/XMLUtils.pas	(revision 1676)
@@ -0,0 +1,128 @@
+unit XMLUtils;
+
+interface
+uses
+  SysUtils, MSXML_TLB, ORFn;
+
+function Text2XML(const AText: string): string;
+function FindXMLElement(Element: IXMLDOMNode; ElementTag: string): IXMLDOMNode;
+function FindXMLAttributeValue(Element: IXMLDOMNode; AttributeTag: string): string;
+function GetXMLWPText(Element: IXMLDOMNode): string;
+
+implementation
+
+type
+  TXMLChars = (xcAmp, xcGT, xcLT, xcApos, xcQuot); // Keep & first in list!
+
+const
+  XMLCnvChr: array[TXMLChars] of string = ('&',   '>',    '<',   '''',    '"');
+  XMLCnvStr: array[TXMLChars] of string = ('&amp;','&gt;','&lt;','&apos;','&quot;');
+
+function Text2XML(const AText: string): string;
+var
+  i: TXMLChars;
+  p: integer;
+  tmp: string;
+
+begin
+  Result := AText;
+  for i := low(TXMLChars) to high(TXMLChars) do
+  begin
+    tmp := Result;
+    Result := '';
+    repeat
+      p := pos(XMLCnvChr[i],tmp);
+      if(p > 0) then
+      begin
+        Result := Result + copy(tmp,1,p-1) + XMLCnvStr[i];
+        delete(tmp,1,p);
+      end;
+    until(p=0);
+    Result := Result + tmp;
+  end;
+end;
+
+function FindXMLElement(Element: IXMLDOMNode; ElementTag: string): IXMLDOMNode;
+var
+  Children: IXMLDOMNodeList;
+  Child: IXMLDOMNode;
+  i, count: integer;
+
+begin
+  Result := nil;
+  Children := Element.Get_childNodes;
+  if assigned(Children) then
+  begin
+    count := Children.Get_length;
+    for i := 0 to count-1 do
+    begin
+      Child := Children.Get_item(i);
+      if assigned(Child) and (CompareText(Child.Get_nodeName, ElementTag) = 0) then
+      begin
+        Result := Child;
+        break;
+      end;
+    end;
+  end;
+end;
+
+function FindXMLAttributeValue(Element: IXMLDOMNode; AttributeTag: string): string;
+var
+  Attributes: IXMLDOMNamedNodeMap;
+  Attribute: IXMLDOMNode;
+  i, count: integer;
+
+begin
+  Result := '';
+  Attributes := Element.Get_attributes;
+  try
+    if assigned(Attributes) then
+    begin
+      count := Attributes.Get_Length;
+      for i := 0 to Count - 1 do
+      begin
+        Attribute := Attributes.Item[i];
+        if CompareText(Attribute.Get_NodeName, AttributeTag) = 0 then
+        begin
+          Result := Attribute.Get_Text;
+          break;
+        end;
+      end;
+    end;
+  finally
+    Attribute := nil;
+    Attributes := nil;
+  end;
+end;
+
+function GetXMLWPText(Element: IXMLDOMNode): string;
+var
+  Children: IXMLDOMNodeList;
+  Child: IXMLDOMNode;
+  i, count: integer;
+
+begin
+  Result := '';
+  Children := Element.Get_childNodes;
+  try
+    if assigned(Children) then
+    begin
+      count := Children.Length;
+      for i := 0 to Count - 1 do
+      begin
+        Child := Children.Item[i];
+        if CompareText(Child.NodeName, 'P') = 0 then
+        begin
+          if(Result <> '') then
+            Result := Result + CRLF;
+          Result := Result + Child.Get_Text;
+        end;
+      end;
+    end;
+  finally
+    Child := nil;
+    Children := nil;
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_InputTemp.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_InputTemp.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_InputTemp.dfm	(revision 1676)
@@ -0,0 +1,328 @@
+object frmGMV_InputTemp: TfrmGMV_InputTemp
+  Left = 322
+  Top = 254
+  BorderStyle = bsNone
+  Caption = 'frmGMV_InputTemp'
+  ClientHeight = 447
+  ClientWidth = 728
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnResize = FormResize
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlInputTemplate: TPanel
+    Left = 0
+    Top = 41
+    Width = 728
+    Height = 406
+    Align = alClient
+    BevelOuter = bvNone
+    Caption = 'pnlInputTemplate'
+    TabOrder = 0
+    object Bevel1: TBevel
+      Left = 0
+      Top = 50
+      Width = 728
+      Height = 2
+      Align = alTop
+      Shape = bsBottomLine
+    end
+    object pnlInputTemplateHeader: TPanel
+      Left = 0
+      Top = 0
+      Width = 728
+      Height = 24
+      Align = alTop
+      Alignment = taLeftJustify
+      Caption = '  Input Template'
+      TabOrder = 1
+    end
+    object hc: THeaderControl
+      Left = 0
+      Top = 52
+      Width = 728
+      Height = 17
+      DragReorder = False
+      Enabled = False
+      Sections = <
+        item
+          Alignment = taCenter
+          ImageIndex = -1
+          Text = '#'
+          Width = 29
+        end
+        item
+          ImageIndex = -1
+          Text = 'Unavailable'
+          Width = 0
+        end
+        item
+          ImageIndex = -1
+          Text = 'U...  R...'
+          Width = 60
+        end
+        item
+          ImageIndex = -1
+          Text = 'Vital'
+          Width = 111
+        end
+        item
+          ImageIndex = -1
+          Text = 'Value'
+          Width = 90
+        end
+        item
+          ImageIndex = -1
+          Text = 'Units'
+          Width = 75
+        end
+        item
+          ImageIndex = -1
+          Text = 'Qualifiers'
+          Width = 50
+        end>
+      Style = hsFlat
+    end
+    object pnlScrollBox: TPanel
+      Left = 0
+      Top = 69
+      Width = 728
+      Height = 337
+      Align = alClient
+      BevelOuter = bvNone
+      BorderWidth = 4
+      TabOrder = 3
+      object sbxMain: TScrollBox
+        Left = 4
+        Top = 4
+        Width = 707
+        Height = 261
+        BorderStyle = bsNone
+        TabOrder = 0
+      end
+    end
+    object pnlOptions: TPanel
+      Left = 0
+      Top = 24
+      Width = 728
+      Height = 26
+      Align = alTop
+      BevelOuter = bvNone
+      Color = 12698049
+      TabOrder = 0
+      object bvU: TBevel
+        Left = 8
+        Top = 3
+        Width = 20
+        Height = 21
+        Shape = bsFrame
+        Visible = False
+      end
+      object bvUnavailable: TBevel
+        Left = 135
+        Top = 3
+        Width = 21
+        Height = 21
+        Shape = bsFrame
+        Visible = False
+      end
+      object lblUnavailable: TLabel
+        Left = 160
+        Top = 6
+        Width = 56
+        Height = 13
+        Caption = 'Un&available'
+        FocusControl = ckbUnavailable
+        Visible = False
+        WordWrap = True
+      end
+      object Label3: TLabel
+        Left = 34
+        Top = 6
+        Width = 73
+        Height = 13
+        Caption = '&Patient on pass'
+        FocusControl = ckbOnPass
+      end
+      object ckbOnPass: TCheckBox
+        Left = 12
+        Top = 5
+        Width = 12
+        Height = 17
+        Hint = 'Mark all vitals in the template as "Patient On Pass"'
+        Alignment = taLeftJustify
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = ckbOnPassClick
+        OnEnter = ckbOnPassEnter
+        OnExit = ckbOnPassExit
+      end
+      object pnlCPRSMetricStyle: TPanel
+        Left = 584
+        Top = 0
+        Width = 144
+        Height = 26
+        Align = alRight
+        BevelOuter = bvNone
+        ParentColor = True
+        TabOrder = 2
+        object chkCPRSSTyle: TCheckBox
+          Left = 1
+          Top = 5
+          Width = 136
+          Height = 17
+          Hint = 'Switch between dropdown and check box presentation of metric'
+          TabStop = False
+          Alignment = taLeftJustify
+          Caption = '&Units as Drop Down List'
+          TabOrder = 0
+          OnClick = acMetricStyleChangedExecute
+        end
+      end
+      object ckbUnavailable: TCheckBox
+        Left = 140
+        Top = 5
+        Width = 11
+        Height = 17
+        Hint = 'Mark all vitals in the template as "Patient Unavailable" '
+        Alignment = taLeftJustify
+        Caption = 'Patient on Pass'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        Visible = False
+      end
+    end
+  end
+  object pnlTools: TPanel
+    Left = 0
+    Top = 0
+    Width = 728
+    Height = 41
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 1
+    Visible = False
+    object pnlPatient: TPanel
+      Left = 0
+      Top = 0
+      Width = 208
+      Height = 41
+      Align = alLeft
+      Color = clInfoBk
+      Constraints.MinWidth = 165
+      TabOrder = 0
+      object lblPatientName: TLabel
+        Left = 7
+        Top = 5
+        Width = 73
+        Height = 13
+        Caption = 'PatientName'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+      end
+      object lblPatientInfo: TLabel
+        Left = 7
+        Top = 21
+        Width = 85
+        Height = 13
+        Caption = 'PatientInformation'
+      end
+    end
+    object pnlSettings: TPanel
+      Left = 208
+      Top = 0
+      Width = 520
+      Height = 41
+      Align = alClient
+      TabOrder = 1
+      object lblHospital: TLabel
+        Left = 115
+        Top = 5
+        Width = 3
+        Height = 13
+      end
+      object lblDateTime: TLabel
+        Left = 115
+        Top = 21
+        Width = 3
+        Height = 13
+      end
+      object lblHospitalCap: TLabel
+        Left = 7
+        Top = 5
+        Width = 100
+        Height = 13
+        Caption = 'Hospital Location'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+      end
+      object Label2: TLabel
+        Left = 7
+        Top = 21
+        Width = 61
+        Height = 13
+        Caption = 'Date/Time'
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = 'MS Sans Serif'
+        Font.Style = [fsBold]
+        ParentFont = False
+      end
+      object Panel1: TPanel
+        Left = 445
+        Top = 1
+        Width = 74
+        Height = 39
+        Align = alRight
+        BevelOuter = bvNone
+        TabOrder = 0
+        object SpeedButton1: TSpeedButton
+          Left = 8
+          Top = 8
+          Width = 57
+          Height = 25
+          Flat = True
+          OnClick = SpeedButton1Click
+        end
+      end
+    end
+  end
+  object ActionList1: TActionList
+    Left = 336
+    Top = 8
+    object acMetricStyleChanged: TAction
+      Caption = 'acMetricStyleChanged'
+      OnExecute = acMetricStyleChangedExecute
+    end
+    object acSaveInput: TAction
+      Caption = 'acSaveInput'
+      OnExecute = acSaveInputExecute
+    end
+    object acSetOnPass: TAction
+      Caption = 'acSetOnPass'
+      OnExecute = acSetOnPassExecute
+    end
+    object acUnavailableBoxStatus: TAction
+      Caption = 'acUnavailableBoxStatus'
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_Qualifiers.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_Qualifiers.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_Qualifiers.dfm	(revision 1676)
@@ -0,0 +1,74 @@
+object frmGMV_Qualifiers: TfrmGMV_Qualifiers
+  Left = 460
+  Top = 247
+  BorderIcons = []
+  BorderStyle = bsNone
+  ClientHeight = 246
+  ClientWidth = 247
+  Color = clBtnFace
+  Constraints.MinWidth = 127
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -14
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  OnActivate = FormActivate
+  OnClose = FormClose
+  OnCreate = FormCreate
+  PixelsPerInch = 120
+  TextHeight = 16
+  object pnlMain: TPanel
+    Left = 0
+    Top = 0
+    Width = 247
+    Height = 246
+    Align = alClient
+    BevelInner = bvLowered
+    BorderWidth = 1
+    TabOrder = 0
+    object pnlBottom: TPanel
+      Left = 3
+      Top = 178
+      Width = 241
+      Height = 65
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 0
+      OnResize = pnlBottomResize
+      DesignSize = (
+        241
+        65)
+      object btnOK: TButton
+        Left = 85
+        Top = 34
+        Width = 74
+        Height = 25
+        Anchors = [akTop, akRight]
+        Caption = '&OK'
+        Default = True
+        ModalResult = 1
+        TabOrder = 0
+      end
+      object btnCancel: TButton
+        Left = 161
+        Top = 34
+        Width = 74
+        Height = 25
+        Anchors = [akTop, akRight]
+        Cancel = True
+        Caption = '&Cancel'
+        ModalResult = 2
+        TabOrder = 1
+      end
+      object edtQuals: TEdit
+        Left = 9
+        Top = 0
+        Width = 224
+        Height = 24
+        TabOrder = 2
+        Text = 'edtQuals'
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_SupO2.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_SupO2.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/fGMV_SupO2.dfm	(revision 1676)
@@ -0,0 +1,202 @@
+object frmGMV_SupO2: TfrmGMV_SupO2
+  Left = 815
+  Top = 181
+  BorderIcons = [biSystemMenu]
+  BorderStyle = bsNone
+  Caption = 'frmGMV_SupO2'
+  ClientHeight = 193
+  ClientWidth = 313
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -14
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDefault
+  OnActivate = FormActivate
+  PixelsPerInch = 120
+  TextHeight = 16
+  object pnlMain: TPanel
+    Left = 0
+    Top = 0
+    Width = 313
+    Height = 193
+    Align = alClient
+    BevelInner = bvLowered
+    BorderWidth = 1
+    TabOrder = 0
+    object pnlBottom: TPanel
+      Left = 3
+      Top = 142
+      Width = 307
+      Height = 48
+      Align = alBottom
+      BevelOuter = bvLowered
+      TabOrder = 0
+      DesignSize = (
+        307
+        48)
+      object btnOK: TButton
+        Left = 146
+        Top = 12
+        Width = 73
+        Height = 25
+        Anchors = [akTop, akRight]
+        Caption = 'O&K'
+        ModalResult = 1
+        TabOrder = 0
+        OnClick = btnOKClick
+      end
+      object btnCancel: TButton
+        Left = 223
+        Top = 12
+        Width = 70
+        Height = 25
+        Anchors = [akTop, akRight]
+        Cancel = True
+        Caption = '&Cancel'
+        ModalResult = 2
+        TabOrder = 1
+      end
+    end
+    object Panel1: TPanel
+      Left = 3
+      Top = 30
+      Width = 307
+      Height = 74
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 1
+      object lblFlow: TLabel
+        Left = 9
+        Top = 21
+        Width = 63
+        Height = 16
+        Caption = '&Flow Rate:'
+        FocusControl = edtFlow
+      end
+      object lblO2Con: TLabel
+        Left = 9
+        Top = 50
+        Width = 105
+        Height = 16
+        Caption = '&O2 Concentration:'
+        FocusControl = edtO2Con
+      end
+      object lblPercent: TLabel
+        Left = 117
+        Top = 50
+        Width = 20
+        Height = 16
+        Caption = '(%)'
+        ParentShowHint = False
+        ShowHint = False
+      end
+      object lblLitMin: TLabel
+        Left = 98
+        Top = 21
+        Width = 38
+        Height = 16
+        Hint = 'liters/minute'
+        Caption = '(l/min)'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object edtFlow: TEdit
+        Left = 146
+        Top = 16
+        Width = 121
+        Height = 24
+        Hint = 'Enter values between 0.5 and 20'
+        MaxLength = 4
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnKeyUp = edtFlowKeyUp
+      end
+      object edtO2Con: TEdit
+        Left = 146
+        Top = 46
+        Width = 121
+        Height = 24
+        Hint = 'Enter value between 21 and 100'
+        MaxLength = 3
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnKeyUp = edtO2ConKeyUp
+      end
+      object udFlow: TUpDown
+        Left = 271
+        Top = 16
+        Width = 19
+        Height = 26
+        Min = -32768
+        Max = 32767
+        TabOrder = 2
+        OnChangingEx = udFlowChangingEx
+      end
+      object udO2: TUpDown
+        Left = 271
+        Top = 46
+        Width = 19
+        Height = 25
+        Min = -32768
+        Max = 32767
+        TabOrder = 3
+        OnChangingEx = udO2ChangingEx
+      end
+    end
+    object Panel2: TPanel
+      Left = 3
+      Top = 3
+      Width = 307
+      Height = 27
+      Align = alTop
+      BevelInner = bvRaised
+      BevelOuter = bvNone
+      Caption = 'Supplemental Oxygen'
+      TabOrder = 2
+    end
+    object pnlQual: TPanel
+      Left = 3
+      Top = 138
+      Width = 307
+      Height = 4
+      Align = alClient
+      BevelOuter = bvNone
+      TabOrder = 3
+    end
+    object Panel5: TPanel
+      Left = 3
+      Top = 104
+      Width = 307
+      Height = 34
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 4
+      object lblMethodValue: TLabel
+        Left = 10
+        Top = 7
+        Width = 45
+        Height = 16
+        Caption = '&Method'
+        FocusControl = cbMethod
+      end
+      object cbMethod: TComboBox
+        Left = 146
+        Top = 1
+        Width = 147
+        Height = 24
+        Hint = 'Select Method from the list'
+        Style = csDropDownList
+        ItemHeight = 16
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnChange = cbMethodChange
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/mGMV_InputOne2.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/mGMV_InputOne2.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/mGMV_InputOne2.dfm	(revision 1676)
@@ -0,0 +1,262 @@
+object fraGMV_InputOne2: TfraGMV_InputOne2
+  Left = 0
+  Top = 0
+  Width = 854
+  Height = 25
+  TabOrder = 0
+  object pnlMain: TPanel
+    Left = 0
+    Top = 0
+    Width = 854
+    Height = 25
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 0
+    object pnlValues: TPanel
+      Left = 205
+      Top = 0
+      Width = 187
+      Height = 25
+      Align = alLeft
+      BevelOuter = bvNone
+      ParentColor = True
+      TabOrder = 1
+      object lblUnit: TLabel
+        Left = 119
+        Top = 8
+        Width = 29
+        Height = 13
+        Caption = 'lblUnit'
+      end
+      object bvMetric: TBevel
+        Left = 162
+        Top = 4
+        Width = 21
+        Height = 21
+        Shape = bsFrame
+        Visible = False
+      end
+      object cbxInput: TComboBox
+        Left = 1
+        Top = 1
+        Width = 112
+        Height = 21
+        Hint = 'Enter the appropriate vitals measurement'
+        Style = csDropDownList
+        DropDownCount = 12
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clBlack
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ItemHeight = 13
+        ParentFont = False
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnChange = cbxInputChange
+        OnClick = cbxInputClick
+        OnExit = cbxInputExit
+        OnKeyDown = cbxInputKeyDown
+      end
+      object ckbMetric: TCheckBox
+        Left = 166
+        Top = 6
+        Width = 15
+        Height = 17
+        Hint = 
+          'Check to switch display values between English and Metric equiva' +
+          'lents'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = ckbMetricClick
+        OnEnter = ckbMetricEnter
+        OnExit = ckbMetricExit
+      end
+      object cbxUnits: TComboBox
+        Left = 116
+        Top = 1
+        Width = 69
+        Height = 21
+        Hint = 'Press to select metric'
+        Style = csDropDownList
+        ItemHeight = 13
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 2
+        Visible = False
+        OnChange = acMetricChangedExecute
+      end
+    end
+    object pnlRefusedUnavailable: TPanel
+      Left = 0
+      Top = 0
+      Width = 75
+      Height = 25
+      Align = alLeft
+      BevelOuter = bvNone
+      ParentColor = True
+      TabOrder = 0
+      object lblNum: TLabel
+        Left = 0
+        Top = 0
+        Width = 24
+        Height = 25
+        Align = alLeft
+        Alignment = taRightJustify
+        AutoSize = False
+        Caption = '#. '
+        Layout = tlCenter
+      end
+      object bvU: TBevel
+        Left = 28
+        Top = 3
+        Width = 21
+        Height = 21
+        Shape = bsFrame
+        Visible = False
+      end
+      object bvR: TBevel
+        Left = 53
+        Top = 3
+        Width = 21
+        Height = 21
+        Shape = bsFrame
+        Visible = False
+      end
+      object cbxRefused: TCheckBox
+        Left = 54
+        Top = 5
+        Width = 16
+        Height = 17
+        Hint = 'Mark as Refused'
+        Alignment = taLeftJustify
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+        OnClick = cbxRefusedClick
+        OnEnter = cbxRefusedEnter
+        OnExit = cbxRefusedExit
+        OnMouseUp = cbxRefusedMouseUp
+      end
+      object cbxUnavailable: TCheckBox
+        Left = 32
+        Top = 5
+        Width = 13
+        Height = 17
+        Hint = 'Mark as Unavailable'
+        Alignment = taLeftJustify
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = cbxUnavailableClick
+        OnEnter = cbxUnavailableEnter
+        OnExit = cbxUnavailableExit
+        OnMouseUp = cbxUnavailableMouseUp
+      end
+    end
+    object pnlQualifiers: TPanel
+      Left = 392
+      Top = 0
+      Width = 462
+      Height = 25
+      Align = alClient
+      BevelOuter = bvNone
+      ParentColor = True
+      TabOrder = 2
+      object lblQualifiers: TLabel
+        Left = 28
+        Top = 5
+        Width = 53
+        Height = 13
+        Hint = 'Current qualifiers to be filed with this vital measurement'
+        Caption = 'lblQualifiers'
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object bvQual: TBevel
+        Left = 2
+        Top = 3
+        Width = 23
+        Height = 21
+        Shape = bsFrame
+        Visible = False
+      end
+      object bbtnQualifiers: TBitBtn
+        Left = 5
+        Top = 5
+        Width = 17
+        Height = 16
+        Hint = 'Press to display the qualifier selection screen'
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 0
+        OnClick = bbtnQualifiersClick
+        OnEnter = bbtnQualifiersEnter
+        OnExit = bbtnQualifiersExit
+        Glyph.Data = {
+          7E040000424D7E0400000000000036040000280000000B000000060000000100
+          08000000000048000000C40E0000C40E00000001000000000000000000000000
+          80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
+          A6000020400000206000002080000020A0000020C0000020E000004000000040
+          20000040400000406000004080000040A0000040C0000040E000006000000060
+          20000060400000606000006080000060A0000060C0000060E000008000000080
+          20000080400000806000008080000080A0000080C0000080E00000A0000000A0
+          200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0
+          200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0
+          200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000
+          20004000400040006000400080004000A0004000C0004000E000402000004020
+          20004020400040206000402080004020A0004020C0004020E000404000004040
+          20004040400040406000404080004040A0004040C0004040E000406000004060
+          20004060400040606000406080004060A0004060C0004060E000408000004080
+          20004080400040806000408080004080A0004080C0004080E00040A0000040A0
+          200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0
+          200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0
+          200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000
+          20008000400080006000800080008000A0008000C0008000E000802000008020
+          20008020400080206000802080008020A0008020C0008020E000804000008040
+          20008040400080406000804080008040A0008040C0008040E000806000008060
+          20008060400080606000806080008060A0008060C0008060E000808000008080
+          20008080400080806000808080008080A0008080C0008080E00080A0000080A0
+          200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0
+          200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0
+          200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000
+          2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020
+          2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040
+          2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060
+          2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080
+          2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0
+          2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0
+          2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000
+          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FAFAFAFAFA00
+          FAFAFAFAFA00FAFAFAFA000000FAFAFAFA00FAFAFA0000000000FAFAFA00FAFA
+          00000000000000FAFA00FA000000000000000000FA0000000000000000000000
+          0000}
+      end
+    end
+    object pnlName: TPanel
+      Left = 75
+      Top = 0
+      Width = 130
+      Height = 25
+      Align = alLeft
+      BevelOuter = bvNone
+      ParentColor = True
+      TabOrder = 3
+      object lblVital: TLabel
+        Left = 0
+        Top = 0
+        Width = 113
+        Height = 25
+        Hint = 'Display name of the vitals measurement'
+        Align = alLeft
+        AutoSize = False
+        Caption = 'lblVital'
+        ParentShowHint = False
+        ShowHint = True
+        Layout = tlCenter
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/CPRS-Lib/sqasrvr.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/CPRS-Lib/sqasrvr.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/CPRS-Lib/sqasrvr.pas	(revision 1676)
@@ -0,0 +1,1702 @@
+        {*************************************************************************
+        *
+        * Copyright 2000 - 2004 Rational Software Corporation. All Rights Reserved.
+        * This software contains proprietary and confidential information of Rational
+        * and its suppliers. Use, disclosure or reproduction is prohibited
+        * without the prior express written consent of Rational.
+        *
+        *    Name:              sqasrvr.pas
+        *    Description:
+        *
+        *    Revision History:
+        *    Programmer         Date       Description
+        *    sraj               05/18/2004 Fixed Delphi 5 compilation issues.
+        *    sraj               07/25/2003 Supported TTreeView items collection in properties.
+        *    sraj               07/25/2003 Supported TStringGrid object data.
+        *    sraj               24/04/2003 RATLC00447073: Included FindControl1() to lookup delphi object
+        *                                  given a window handle effectively.
+        *    sraj               10/03/2002 RATLC00436896, RATLC00052492 : Included BeautifyApplicationWindow
+        *    sraj               06/23/2003 RATLC00449186 : Exception trace enabled using a Registry key.
+        *    sraj               10/03/2002 RATLC00436896, RATLC00052492 : Included BeautifyApplicationWindow
+        *                                  to make application object available as a window property.
+        *                                  Removed the call RegisterAutomationServer() from unit Initialization.
+        *    PBeaulieu          01/08/2002 Changed TPublishedAutoDispatch.NewDispatch to set the found
+        *                                  flag if found in first case to bypass the second search method.
+        *    PBeaulieu          08/20/2001 Changed TIObjectDispatch.GetProperty inorder to make
+        *                                  sure that Unassigned Variant or incorrect Variant type
+        *                                  would not be used in retrieving a property. Changed
+        *                                  TPublishedAutoDispatch.NewDispatch to search manually the
+        *                                  inheritance hierarchy if InheritsFrom fails.  This allows
+        *                                  for objects that the InheritsFrom function fails on
+        *                                  seemingly because it cannot access the information with
+        *                                  the functions it is using.  This seemed to happen with
+        *                                  MDI app where the MDI children were created from another
+        *                                  dll that encapsulated the form in another object.
+        *    PBeaulieu	        06/26/01   Merged in Pete Ness's changes to fix some warnings and
+        *                                  to add some logging for exceptions.  Also, added the function
+        *                                  TIObjectDispatch.ParentClassName.
+        *    PMNess             05/16/01   Changed the "Classname" calls in TPublishedAutoDispatch
+        *                                  to FObject.Classname - as Classname was always
+        *                                  returning TPublishedAutoDispatch instead of
+        *                                  the actual invoked class.
+        *    PMNess             05/15/01   Updated and removed hints/warnings under D5
+        *                                  Added try/excepts around all automated calls
+        *                                  to trap exceptions that may happen and log to
+        *                                  file.
+        *    KPATEL             05/25/00   Replaced the function 'VarAsType' with
+        *                                  'VarToStr' as Delphi 5 takes only string as
+        *                                  the third parameter in SetStrProp function.
+        *    SJPak              03/31/98   Modified TIObjectDispatch.GetEnumList to
+        *                                  return empty variant when the total length of
+        *                                  the strings for enumerated choices exceed
+        *                                  2047.  This is to keep Robot from crashing
+        *                                  Robot cannot handle more 2048 characters total.
+        *    SJPak              04/02/97   Modified TPublishedAutoDispatch.Invoke to
+        *                                  support TColor type properties.
+        *    SJPak              08/04/96   Added additional interface TIStringGridDispatch
+        *                                  to support Cols and Rows properties of TStringGrid.
+        *    SJPak              03/06/97   Modified TICollectionDispatch.GetPropNames
+        *                                  and TICollectionDispatch.GetProperty to support
+        *                                  Items property.
+        *    SJPak              11/21/96   Replacing calls to OLECheck which
+        *                                  will raise an exception when return value
+        *                                  is less than 0.  Raising an exception
+        *                                  will cause a messagebox to pop up when ran
+        *                                  from Delphi IDE.
+        *    SJPak              11/15/96   Fixed a memory leak in
+        *                                  TIObjectDispatch.SetProperty
+        *    SJPak              11/11/96   Modified TIStringsDispatch.GetProperty
+        *                                  to check for empty "Strings" property.
+        *    SJPak              11/07/96   Removed calls to OleError to prevent
+        *                                  error messages being displayed during
+        *                                  Rec/Plaback session through IDE.
+        *    SJPak              10/07/96   Modified TIStringsDispatch to support
+        *                                  Strings property of TStrings object.
+        *    SJPak              09/19/96   Changed CLSID of the server.
+        *    SJPak              08/04/96   Added additional interface TIOleControlDispatch
+        *                                  to support OCXs.
+        *    SJPak              08/01/96   Modified TPublishedAutoDispatch.Invoke
+        *                                  to return tkSet type properties as
+        *                                  a safe array of Variants containing
+        *                                  names of all possible items in the set
+        *                                  and booleans representing whether the items
+        *                                  are in the particular set.
+        *    SJPak              07/31/96   Fixed Borland's bug in
+        *                                  TPublishedAutoDispatch.Invoke function's
+        *                                  handling of min and max values of
+        *                                  tkSet properties.
+        *    SJPak              07/18/96   Changed Unit name to SQASrvr
+        *    SJPak              07/18/96   Added addtional interface TIStringsDispatch
+        *                                  to support TStrings class.
+        *    SJPak              07/18/96   Added GetPropNames and GetProeprty to
+        *                                  TICollectionDispatch.
+        *    SJPak              07/18/96   Added GetPropNames method to TIObjectDispatch
+        *                                  interface.
+        *    SJPak              07/08/96   Added SetProperty method to TIObjectDispatch
+        *                                  interface.
+        *    SJPak              07/08/96   Additional interface define for
+        *                                  DatSet Objects.
+        *    SJPak              07/01/96   Fixed a bug in TPublishedAutoDispatch.Invoke
+        *    SJPak              07/01/96   Additional interface defined for
+        *                                  collections.
+        *    SJPak              07/01/96   Original From Delphi.
+        *
+        **************************************************************************}
+        unit SQASrvr;
+
+        interface
+
+        uses
+          Windows,
+			{$IFDEF VER140}
+				Variants,
+			{$ENDIF}
+			{$IFDEF VER150}
+				Variants,
+      {$ELSE}      //Added for Delphi 2006
+        Variants,  //Added for Delphi 2006
+			{$ENDIF}
+          OleAuto,
+          OLE2, TypInfo, DB, DBTables, OleCtrls, Grids, Controls, Registry, ComCtrls;
+        const
+          AutoClassExistsMsg = 'Automation enabler for class %s is already registered';
+
+          { FirstComponentIndex needs to be high enough so that it doesn't conflict with
+            the DispIDs of the TAutoObject.  The "automated" properties and methods have
+            DispIDs starting with 1 in the base object and incrementing by one from
+            there. }
+          FirstComponentIndex  = $000000FF;
+          LastComponentIndex   = $0000FFFE;
+          FirstPropIndex       = $0000FFFF;
+          LastPropIndex        = $7FFFFFFF;  { maxint }
+        
+          // Arbitrary Max for each element of TStrings.Strings property.
+          MaxStringItem = 32000;
+        
+        type
+          { SJP Todo:  This limits the set range from 0 - 15.
+            According to Doc. Set can have upto 256 elements }
+          TCardinalSet = set of 0..SizeOf(Cardinal) * 8 - 1;
+        //  TCardinalSet = set of 0..255;
+        
+        { TPublishedAutoDispatch }
+        
+          TPublishedAutoDispatch = class(TAutoDispatch)
+          private
+            FObject: TObject;
+          public
+            constructor Create(AutoObject: TAutoObject; BoundObj: TObject);
+            procedure NewDispatch(var V: Variant; Obj: TObject);
+            function GetIDsOfNames(const iid: TIID; rgszNames: POleStrList;
+              cNames: Integer; lcid: TLCID; rgdispid: PDispIDList): HResult; override;
+            function Invoke(dispIDMember: TDispID; const iid: TIID; lcid: TLCID;
+              flags: Word; var dispParams: TDispParams; varResult: PVariant;
+              excepInfo: PExcepInfo; argErr: PInteger): HResult; override;
+          end;
+        
+        { TIObjectDispatch }
+        
+          TIObjectDispatch = class(TAutoObject)
+          private
+            procedure GetProps(var v: Variant; TypeKinds: TTypeKinds);
+          protected
+            FObject: TObject;
+            function CreateAutoDispatch: TAutoDispatch; override;
+            // 5/16/2001 - PMNess - Added new GetExceptionInfo to log any
+            // exception on the invoke to a log file.  This works generically when anything
+            // is called...
+            procedure GetExceptionInfo(ExceptObject: TObject;
+              var ExcepInfo: TExcepInfo); override;
+          public
+            constructor Connect(Obj: TObject); virtual;
+          automated
+            function ClassName: String;
+            function GetProperty(PropName: String): Variant;
+            function GetObject(ObjName: String): Variant;
+            procedure GetEnumList(PropName: String; var v: Variant);
+            procedure GetProperties(var v: Variant);
+            procedure GetObjects(var v: Variant);
+            function InheritsFrom(AClass: String): WordBool;
+            // SJP: 07/09/96 Added SetProperty.
+            function SetProperty(PropName: String; var v: Variant): WordBool;
+            // SJP: 07/18/96 Added SetProperty.
+            procedure GetPropNames(var v: Variant);
+            //PBeaulieu: 05/22/2001 Added ParentClassName
+            function ParentClassName: String;
+          end;
+        
+        { TIComponentDispatch }
+        
+          TIComponentDispatch = class(TIObjectDispatch)
+          private
+            function GetComponents(Index: Integer): Variant;
+            function GetComponentCount: Integer;
+            function GetComponentIndex: Integer;
+            function GetOwner: Variant;
+          protected // 5-16-2001 - Added protected to get rid of hint on GetDesignInfo
+            function GetDesignInfo: LongInt;
+          automated
+            property Components[Index: Integer]: Variant read GetComponents;
+            property ComponentCount: Integer read GetComponentCount;
+            property ComponentIndex: Integer read GetComponentIndex;
+            property Owner: Variant read GetOwner;
+            function FindComponent(AName: String): Variant;
+          end;
+        
+        { TIControlDispatch }
+        
+          TIControlDispatch = class(TIComponentDispatch)
+          private
+            function GetParent: Variant;
+          automated
+            property Parent: Variant read GetParent;
+          end;
+        
+        { TIWinControlDispatch }
+        
+          TIWinControlDispatch = class(TIControlDispatch)
+          private
+            function GetHandle: Integer;
+            function GetControls(Index: Integer): Variant;
+            function GetControlCount: Integer;
+          automated
+            property Handle: Integer read GetHandle;
+            property Controls[Index: Integer]: Variant read GetControls;
+            property ControlCount: Integer read GetControlCount;
+            function ControlAtPos(X, Y: Integer): Variant;
+          end;
+        
+        { TIApplicationDispatch }
+        
+          TIApplicationDispatch = class(TIComponentDispatch)
+          private
+            function GetHandle: Integer;
+            function GetMainForm: Variant;
+            function GetExeName: String;
+            function FindControl1(hWndToFind: HWnd): TWinControl;
+          public
+            constructor Create; override;
+          automated
+            property Handle: Integer read GetHandle;
+            property MainForm: Variant read GetMainForm;
+            property ExeName: String read GetExeName;
+            function GetDispFromHandle(Handle: Integer): Variant;
+          end;
+        
+        // SJP 07/01/96  Additional interface defined for collections
+        { TICollectionDispatch }
+        
+          TICollectionDispatch = class(TIObjectDispatch)
+          private
+            function GetItemCount: Integer;
+          automated
+            property ItemCount: Integer read GetItemCount;
+            procedure GetPropNames(var v: Variant);
+            function GetProperty(PropName: String): Variant;
+          end;
+        
+        // SJP 07/08/96 Additional interface defined for 'dataset' objects.
+        { TIDataSetDispatch }
+        
+          TIDataSetDispatch = class(TIObjectDispatch)
+          private
+            function GetFieldCount: Integer;
+          automated
+            property FieldCount: Integer read GetFieldCount;
+            function GetData: String;
+          end;
+        
+        // SJP 07/18/96 Additional interface defined for TStrings Objects
+        { TIStringsDispatch }
+        
+          TIStringsDispatch = class(TIObjectDispatch)
+          automated
+            function GetProperty(PropName: String): Variant;
+            procedure GetPropNames(var v: Variant);
+          end;
+        
+        // SJP 08/03/96 Addition interface defined for TOleControl(OCX) Component
+          TIOleControlDispatch = class(TIWinControlDispatch)
+          private
+            function GetOleObject: Variant;
+          automated
+            property OleObject: Variant read GetOleObject;
+          end;
+        
+        // SJP 03/10/97 Addition interface defined for TStringGrid Component
+          TIStringGridDispatch = class(TIWinControlDispatch)
+          automated
+            function GetProperty(PropName: String): Variant;
+            procedure GetPropNames(var v: Variant);
+            function GetData: String;
+        end;
+
+        // Addition interface defined for TTreeView Component
+          TITreeViewDispatch = class(TIWinControlDispatch)
+          automated
+            function GetProperty(PropName: String): Variant;
+            procedure GetPropNames(var v: Variant);
+        end;
+
+        { Support functions}
+        
+          TIObjectDispatchRef = class of TIObjectDispatch;
+        
+          PClassMapRecord = ^TClassMapRecord;
+          TClassMapRecord = record
+            ObjectClass: TClass;
+            DispClass: TIObjectDispatchRef;
+          end;
+        
+          procedure FreeClassLists;
+        
+          procedure RegisterAutomationEnabler( ObjectClass: TClass;
+            DispClass: TIObjectDispatchRef);
+        
+        implementation
+        
+        uses Forms, Classes, SysUtils;
+        
+        var
+          ClassMap: TList = nil;
+        
+        // Called when any exception is raised from this COM object.  Logs the
+        // error to a log file.
+        procedure WriteToLog(ErrorMsg: String);
+        var
+          LogFile: TextFile;
+          LogFileName: String;
+        begin // AddToErrorLog
+          try
+            LogFileName := ExtractFilePath(ParamStr(0))+'\Robot Errors for '+ExtractFileName(ParamStr(0))+'.log';
+            AssignFile(LogFile, LogFileName);
+            if (FileExists(LogFileName))
+            then Append(LogFile)
+            else Rewrite(LogFile);
+            try
+              Writeln(LogFile, DateTimeToStr(Now)+' '+ErrorMsg);
+            finally
+              CloseFile(LogFile);
+            end;
+          except
+            // Supress this - as we're likely in some kind of error log already!
+          end;
+        end;
+    
+        function IsExceptionTraceEnabled( ) :  Boolean;
+        var
+        	Reg: TRegistry;
+        	deTrace: string;
+        begin
+        	Result := False;
+        	Reg := TRegistry.Create;
+        	try
+        		Reg.RootKey := HKEY_CURRENT_USER;
+        		if Reg.OpenKey('Software\Rational Software\Rational Test\8\Robot', False) then
+        	begin
+        		deTrace := Reg.ReadString( 'DelphiExceptionTrace' );
+        		if ( (deTrace = '1') or ( LowerCase(deTrace) = 'true' ) ) then
+        		begin
+        			Result := True;
+        		end;
+        			
+        		Reg.CloseKey;
+        		end;
+        	finally
+        		Reg.Free;
+        	end;
+        end;
+                
+        { Exit procedure used to free memory used by the ClassList }
+        procedure FreeClassLists;
+        var
+          I: Integer;
+        begin
+          for I := 0 to ClassMap.Count-1 do
+            Dispose(PClassMapRecord(ClassMap[I]));
+          ClassMap.Free;
+        end;
+        
+        { This is called in the initialization section of a unit for all new
+          automation objects.  It associates an AutoObject with a VCL class. }
+        procedure RegisterAutomationEnabler(ObjectClass: TClass;
+          DispClass: TIObjectDispatchRef);
+        var
+          P: PClassMapRecord;
+          X: Integer;
+          Found: Boolean;
+        begin
+          if not Assigned(ClassMap) then
+          begin
+            AddExitProc(FreeClassLists);
+            ClassMap := TList.Create;
+          end;
+          Found := False;
+          for X := 0 to ClassMap.Count-1 do
+          begin
+            P := PClassMapRecord(ClassMap[x]);
+            if ObjectClass.InheritsFrom(P^.ObjectClass) then
+              if ObjectClass = P^.ObjectClass then
+                raise Exception.CreateFmt(AutoClassExistsMsg,[ObjectClass.ClassName])
+              else
+              begin
+                Found := True;
+                break;
+              end;
+          end;
+          New(P);
+          P^.ObjectClass := ObjectClass;
+          P^.DispClass := DispClass;
+          if Found then
+            { ObjectClass is a descendent of P^.ObjectClass, so insert the descendent
+              into the class list in front of the ancestor.  }
+            ClassMap.Insert(X,P)
+          else
+            { ObjectClass is not related to any classes already in the list, so just add
+              it to the end of the list. }
+            ClassMap.Add(P);
+        end;
+        
+        { TPublishedAutoDispatch }
+        
+        constructor TPublishedAutoDispatch.Create(AutoObject: TAutoObject; BoundObj: TObject);
+        begin
+          inherited Create(AutoObject);
+          FObject := BoundObj;
+        end;
+        
+        { NewDispatch is called to create an AutoObject bound to a VCL object.
+          Example: when the controller calls Application.MainForm.Button1.Caption,
+          NewDispatch would be called to return the dispatches for MainForm and
+          Button1. Not called directly by the controller.  }
+        procedure TPublishedAutoDispatch.NewDispatch(var V: Variant; Obj: TObject);
+        var
+          i: Integer;
+          P: PClassMapRecord;
+          Found: Boolean;
+          Cls: TClass;
+        begin
+          VarClear(V);
+          Found := FALSE;
+          if not (Assigned(Obj) and Assigned(ClassMap)) then Exit;
+          for i := 0 to ClassMap.Count - 1 do
+          begin
+            P := PClassMapRecord(ClassMap[i]);
+            if Obj.InheritsFrom(P^.ObjectClass) then
+            begin
+              V := P^.DispClass.Connect(Obj).OleObject;
+              { Do a release here because the Connect does an AddRef and the
+                OleObject does an AddRef, we only want 1. }
+              VarToInterface(V).Release;
+              Found := TRUE;
+              break;
+            end;
+          end;
+
+          if Found = FALSE then
+          begin
+                  for i := 0 to ClassMap.Count - 1 do
+                  begin
+                    P := PClassMapRecord(ClassMap[i]);
+
+                    if Obj.ClassName = P^.ObjectClass.ClassName then
+                    begin
+                          V := P^.DispClass.Connect(Obj).OleObject;
+                          { Do a release here because the Connect does an AddRef and the
+                          OleObject does an AddRef, we only want 1. }
+                          VarToInterface(V).Release;
+                          break;
+                    end;
+
+                    Cls := Obj.ClassParent;
+
+                    while( Cls <> nil ) do
+                    begin
+                        if Cls.ClassName = P^.ObjectClass.ClassName then
+                        begin
+                          V := P^.DispClass.Connect(Obj).OleObject;
+                          { Do a release here because the Connect does an AddRef and the
+                          OleObject does an AddRef, we only want 1. }
+                          VarToInterface(V).Release;
+                          Found := TRUE;
+                         break;
+                       end;
+                       Cls := Cls.ClassParent;
+                   end;
+
+                   if Found = TRUE then
+                   begin
+                        break;
+                   end;
+                  end;
+          end;
+        end;
+        
+        {  Searches through the published properties of the associated object for the
+           requested name (property).  If it is not found it calls the inherited
+           GetIDsOfNames which will then search through the TAutoObject's "automated"
+           section for the name. }
+        function TPublishedAutoDispatch.GetIDsOfNames(const iid: TIID; rgszNames: POleStrList;
+          cNames: Integer; lcid: TLCID; rgdispid: PDispIDList): HResult;
+        var
+          PropName: string;
+          SubComponent: TComponent;
+        begin
+          if cNames <> 1 then
+          begin
+            Result := inherited GetIDsOfNames(iid, rgszNames, cNames, lcid, rgdispid);
+            Exit;
+          end;
+          Result := DISP_E_UNKNOWNNAME;
+          PropName := WideCharToString(rgszNames^[0]);
+          rgdispid^[0] := TDISPID(GetPropInfo(FObject.ClassInfo, PropName));
+          if rgdispid^[0] <> 0 then
+          begin
+            if PPropInfo(rgdispid^[0])^.PropType^.Kind in [tkInteger, tkEnumeration,
+              tkString, tkFloat, tkClass, tkSet, tkMethod, tkLString{, tkLWString}] then
+              Result := S_OK;
+          end
+          else if FObject is TComponent then
+          begin
+            SubComponent := TComponent(FObject).FindComponent(PropName);
+            if SubComponent <> nil then
+            begin
+              rgdispid^[0] := FirstComponentIndex + TDispID(SubComponent.ComponentIndex);
+              Result := S_OK;
+            end;
+          end;
+          { Pass to inherited if nothing resolves the call. }
+          if Result <> S_OK then
+            Result := inherited GetIDsOfNames(iid, rgszNames, cNames, lcid, rgdispid);
+        end;
+        
+        { Gets a property or calls a method of the associated object.  If the
+          dispIDMember is less than FirstComponentIndex it should be in the AutoObject,
+          otherwise it attempts to find the request in the published section of the
+          associated object. }
+        function TPublishedAutoDispatch.Invoke(dispIDMember: TDispID; const iid: TIID; lcid: TLCID;
+              flags: Word; var dispParams: TDispParams; varResult: PVariant;
+              excepInfo: PExcepInfo; argErr: PInteger): HResult;
+        var
+          PropInfo: PPropInfo;
+          W: Cardinal;
+          TypeInfo: PTypeInfo;
+          TypeData: PTypeData;
+          ErrorMessage: String;
+          I: Integer;
+          J: Integer;
+        //  SetItemString: String;
+        begin
+          Result := DISP_E_MEMBERNOTFOUND;
+          PropInfo := NIL;
+          try
+            { If it is a component then call NewDispatch to return the IDispatch to
+              the controller }
+            if (dispIDMember >= FirstComponentIndex) and
+               (dispIDMember <= LastComponentIndex) then
+            begin
+              NewDispatch(VarResult^,TComponent(FObject).Components[dispIDMember - FirstComponentIndex]);
+              Result := S_OK;
+            end
+            { Check to see if it is a property }
+            else if (dispIDMember >= FirstPropIndex) then
+        //           and (dispIDMember <= LastPropIndex) 5-16-2001 Removed - as this is always true
+            begin
+              PropInfo := PPropInfo(dispIDMember);
+              if Flags and DISPATCH_PROPERTYGET <> 0 then  //Only Get Property
+              begin
+                VarClear(VarResult^);
+                Result := S_OK;
+                case PropInfo^.PropType^.Kind of
+                  tkInteger:
+                  begin
+                    VarResult^ := GetOrdProp(FObject, PropInfo);
+                    // SJP: 04/02/97 Modifying original.
+                    //      Set a flag to indicate Color property.
+                    if PropInfo^.PropType^.Name = 'TColor' then
+                    begin
+                      TVariantArg(VarResult^).wReserved1 := 8;
+                    end;
+                  end;
+                  tkEnumeration:
+                  // SJP: 07/10/96  Modifying original.
+                  //      Now tkEnumeration properties will
+                  //      be returned as VT_I2;
+                  begin
+                    //TVariantArg(VarResult^).vt := VT_BSTR;
+                    //TVariantArg(VarResult^).bstrVal := StringToOleStr(
+                    //GetEnumName(PropInfo^.PropType, GetOrdProp(FObject, PropInfo)));
+                    TVariantArg(VarResult^).vt := VT_I2;
+                    TVariantArg(VarResult^).iVal := GetOrdProp(FObject, PropInfo);
+                  end;
+                  tkFloat:
+                    VarResult^ := GetFloatProp(FObject, PropInfo);
+                  tkString:
+                    VarResult^ := GetStrProp(FObject, PropInfo);
+                  tkSet:
+                  begin
+                    // SJP: 07/31/96 Modifying the original.
+                    //      Changing to return a safe array of Variants containing
+                    //      Names of all possible items in the set
+                    //      and booleans representing whether the items are
+                    //      in this particular set.
+        //          SetItemString := '[';
+                    W := GetOrdProp(FObject, PropInfo);
+        {$IFDEF VER90}
+                    TypeData := GetTypeData(PropInfo^.PropType);
+                    TypeInfo := TypeData^.CompType;
+        {$ELSE}
+                    TypeData := GetTypeData(PropInfo^.PropType^);
+                    TypeInfo := TypeData^.CompType^;
+        {$ENDIF}
+                    // SJP: 07/31/96 Modifying the original Borland code.
+                    //      Get the TypeData again from the TypeInfo
+                    //      TypeInfo represents the OrdType of the set.
+                    //      the new TypeData will have correct MinValue and MaxValue.
+                    TypeData := GetTypeData(TypeInfo);
+                    VarResult^ := VarArrayCreate([0, TypeData^.MaxValue - TypeData^.MinValue, 0, 1], varVariant);
+                    J := 0;
+                    for I := TypeData^.MinValue to TypeData^.MaxValue do
+                    begin
+                      VarResult^[J, 0] := GetEnumName(TypeInfo, I);
+                      if I in TCardinalSet(W) then
+                        VarResult^[J, 1] := True
+                      else
+                        VarResult^[J, 1] := False;
+                      J := J + 1;
+                    end;
+        //            begin
+        //              if Length(SetItemString) <> 1 then
+        //                SetItemString := SetItemString + ',';
+        //              SetItemString := SetItemString + GetEnumName(TypeInfo, I);
+        //            end;
+        //          SetItemString := SetItemString + ']';
+        //          TVariantArg(VarResult^).vt := VT_BSTR;
+        //          TVariantArg(VarResult^).bstrVal := StringToOleStr(SetItemString);
+                  end;
+                  tkClass:
+                    NewDispatch(VarResult^, TObject(GetOrdProp(FObject, PropInfo)));
+                  tkLString:
+                  begin
+                    TVariantArg(VarResult^).vt := VT_BSTR;
+                    TVariantArg(VarResult^).bstrVal := StringToOleStr(GetStrProp(FObject, PropInfo));
+                  end;
+                else
+                  Result := E_NOTIMPL;
+                end;
+              end
+              else if Flags and DISPATCH_PROPERTYPUT <> 0 then
+              begin
+                Result := S_OK;
+                case PropInfo^.PropType^.Kind of
+                  tkInteger:
+                    SetOrdProp(FObject, PropInfo, VarAsType(Variant(dispParams.rgvarg[0]),varInteger));
+                  tkString:
+        //      KPATEL: Replaced the function 'VarAsType' with 'VarToStr' as Delphi 5
+        //      takes only string as the third parameter in SetStrProp function.
+        //            SetStrProp(FObject, PropInfo, VarAsType(Variant(dispParams.rgvarg[0]),varString));
+                    SetStrProp(FObject, PropInfo, VarToStr(Variant(dispParams.rgvarg[0])));
+                  tkLString:
+        //      KPATEL: Replaced the function 'VarAsType' with 'VarToStr' as Delphi 5
+        //      takes only string as the third parameter in SetStrProp function.
+        //            SetStrProp(FObject, PropInfo, VarAsType(Variant(dispParams.rgvarg[0]),varString));
+                    SetStrProp(FObject, PropInfo, VarToStr(Variant(dispParams.rgvarg[0])));
+                  tkEnumeration:
+                    SetOrdProp(FObject, PropInfo, VarAsType(Variant(dispParams.rgvarg[0]),varSmallInt));
+                  tkFloat:
+                    SetFloatProp(FObject, PropInfo, VarAsType(Variant(dispParams.rgvarg[0]),varSingle));
+        {          tkSet:
+                  begin
+                    SetItemString := '[';
+                    W := GetOrdProp(FObject, PropInfo);
+                    TypeData := GetTypeData(PropInfo^.PropType);
+                    TypeInfo := TypeData^.CompType;
+                    // SJP:  Commented out because TypeData^.MinValue/MaxValue is
+                    //       bogus.
+        //          ShowMessage(IntToStr(TypeData^.MinValue));
+        //          ShowMessage(IntToStr(TypeData^.MaxValue));
+        //          for I := TypeData^.MinValue to TypeData^.MaxValue do
+                    for I := 0 to 255 do
+                      if I in TCardinalSet(W) then
+                      begin
+                        if Length(SetItemString) <> 1 then
+                          SetItemString := SetItemString + ',';
+                        SetItemString := SetItemString + GetEnumName(TypeInfo, I);
+                      end;
+                    SetItemString := SetItemString + ']';
+                    TVariantArg(VarResult^).vt := VT_BSTR;
+                    TVariantArg(VarResult^).bstrVal := StringToOleStr(SetItemString);
+                  end;}
+                else
+                  Result := E_NOTIMPL;
+                end;
+              end;
+            end;
+            { If not found then pass it to the TAutoDispatch.Invoke method. }
+            if Result <> S_OK then
+            begin
+              Result := inherited Invoke(dispIDMember, iid, lcid, flags, dispParams,
+                                         varResult, excepInfo, argErr);
+            end
+          except
+            on E:Exception
+            do begin
+              ErrorMessage := FObject.ClassName;
+              if (Assigned(PropInfo)) then ErrorMessage := ErrorMessage + '.' + PropInfo.Name;
+        
+              if ExcepInfo <> nil then
+              begin
+                FillChar(ExcepInfo^, 0, SizeOf(TExcepInfo));
+                //Copied this from TAutoObject.GetExceptionInfo
+                with ExcepInfo^ do
+                begin
+                  bstrSource := StringToOleStr(FObject.ClassName);
+                  if ExceptObject is Exception then
+                  begin
+                    bstrDescription := StringToOleStr(Exception(ExceptObject).Message);
+                    ErrorMessage := ErrorMessage + ': ' + Exception(ExceptObject).Message;
+                  end
+                  else ErrorMessage := ErrorMessage + ': ' + E.Message;
+                  scode := E_FAIL;
+                end;
+              end
+              else ErrorMessage := ErrorMessage + ': ' + E.Message;
+        
+              WriteToLog(ErrorMessage);
+              Result := DISP_E_EXCEPTION;
+            end;
+          end;
+        end;
+        
+        { TIObjectDispatch }
+        
+        { Obj is the Object that is being "Bound" to here.  This AutoObject will then
+          surface properties for Obj. }
+        constructor TIObjectDispatch.Connect(Obj: TObject);
+        begin
+          FObject := Obj;
+          inherited Create;
+        end;
+        
+        function TIObjectDispatch.CreateAutoDispatch: TAutoDispatch;
+        begin
+          Result := TPublishedAutoDispatch.Create(Self, FObject);
+        end;
+        
+        // New override to trap exceptions raised in the invoke.
+        // 5/16/2001 - PMNess
+        procedure TIObjectDispatch.GetExceptionInfo(ExceptObject: TObject;
+          var ExcepInfo: TExcepInfo);
+        begin
+          try
+            if (ExceptObject is Exception) then
+            begin
+              WriteToLog(PChar(Exception(ExceptObject).Message));
+            end;
+          except
+            // 5/16/2001 - PMNess
+            // If the exception object has a problem, we don't want to cause another
+            // exception here, so just mask it.
+          end;
+          inherited;
+        end;
+        
+        function TIObjectDispatch.ClassName: String;
+        begin
+          Result := FObject.ClassName;
+        end;
+        
+        function TIObjectDispatch.ParentClassName: String;
+        var
+         P: TClass;
+         ClassNames: String;
+        begin
+          P := FObject.ClassParent;
+          ClassNames := '';
+        
+          while( P <> nil ) do
+          begin
+                if Length(ClassNames) > 0 then
+                begin
+                        ClassNames := ClassNames + ',';
+                end;
+        
+                ClassNames := ClassNames + P.ClassName;
+                
+                P := P.ClassParent;
+          end;
+        
+          Result := ClassNames;
+        end;
+        
+        function TIObjectDispatch.InheritsFrom(AClass: String): WordBool;
+        var
+          P: TClass;
+        begin
+          P := FObject.ClassType;
+          while (P <> nil) and (CompareText(P.ClassName, AClass) <> 0) do
+            P := P.ClassParent;
+          Result := P <> nil;
+        end;
+        
+        { Just a friendly wrapper around GetProperty for ease of use }
+        function TIObjectDispatch.GetObject(ObjName: String): Variant;
+        begin
+          Result := GetProperty(ObjName);
+        end;
+        
+        {  GetProperty can take a full path to a property or object
+           (ie Form1.Button1.Caption) and return the value of the property or object
+           as a variant. }
+        function TIObjectDispatch.GetProperty(PropName: String): Variant;
+        var
+          Params: TDispParams;
+          Index: TDISPID;
+          ExpInfo: TEXCEPINFO;
+          ArgErr: Integer;
+          PWStr: PWideChar;
+          Name: String;
+          Idx: Integer;
+          Holder: Variant;
+          guid: TGUID;
+        begin
+          FillChar(Params,SizeOf(Params),0);
+          FillChar(ExpInfo,SizeOf(ExpInfo),0);
+          ArgErr := 0;
+          Idx := Pos('.', PropName);
+          if Idx > 0 then
+          begin
+            Name := Copy(PropName,1,Idx - 1);
+            Delete(PropName,1,Idx);
+          end
+          else
+            Name := PropName;
+          PWStr := StringToOleStr(Name);
+        
+        //  11/21/96 SJPak Replacing calls to OLECheck which will raise an exception
+        //                 when return value is less than 0.  Raising an exception
+        //                 will cause a messagebox to pop up when ran from IDE.
+          if AutoDispatch.GetIDsOfNames(guid, @PWStr, 1, 0, @Index) >= 0 then
+            if AutoDispatch.Invoke(Index, guid, 0, Dispatch_PropertyGet or Dispatch_Method,
+                                       Params, @Holder, @ExpInfo, @ArgErr) >= 0 then
+              if VarType(Holder) = varDispatch then
+                VarToInterface(Holder).AddRef;
+
+          SysFreeString(PWStr);
+        
+          if ( not VarIsEmpty( Holder ) ) and ( VarType( Holder ) = varDispatch ) and ( Idx > 0 ) then
+          begin
+            Result := Holder.GetProperty(PropName);
+            VarToInterface(Holder).Release;
+            VarClear(Holder);
+          end
+          else if ( VarIsEmpty( Holder ) ) then
+          begin
+            Holder := NULL;
+           // VarClear( Holder );
+            Result := Holder;
+          end
+          else
+            Result := Holder;
+        end;
+        
+        procedure TIObjectDispatch.GetProps(var v: Variant; TypeKinds: TTypeKinds);
+        var
+          I, J, Count: Integer;
+          PropInfo: PPropInfo;
+          TempList: PPropList;
+          SetItemString: String;
+          W: Cardinal;
+        begin
+          Count := GetPropList(FObject.ClassInfo, TypeKinds, nil);
+          if Count > 0 then
+          begin
+            v := VarArrayCreate([0, Count - 1, 0, 2], varVariant);
+            GetMem(TempList, Count * SizeOf(Pointer));
+            try
+              GetPropList(FObject.ClassInfo, TypeKinds, TempList);
+              for I := 0 to Count - 1 do
+              begin
+                PropInfo := TempList^[I];
+                v[i,2] := PropInfo^.PropType^.Kind;
+                case PropInfo^.PropType^.Kind of
+                  tkClass:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+                    v[i,1] := '(' + PropInfo^.PropType^.Name + ')';
+                  end;
+                  tkString,
+                  tkLString:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+                    v[i,1] := GetStrProp(FObject,PropInfo);
+                  end;
+                  tkChar:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+                    v[i,1] := Chr(GetOrdProp(FObject,PropInfo));
+                    if IsCharAlpha(Chr(GetOrdProp(FObject,PropInfo))) then
+                      v[i,1] := Chr(GetOrdProp(FObject,PropInfo))
+                    else
+                      v[i,1] := '#' + IntToStr(GetOrdProp(FObject,PropInfo));
+                  end;
+                  tkInteger:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+                    v[i,1] := IntToStr(GetOrdProp(FObject,PropInfo));
+                  end;
+                  tkFloat:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+                    v[i,1] := FloatToStr(GetFloatProp(FObject,PropInfo));
+                  end;
+                  tkEnumeration:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+        {$IFDEF VER90}
+                    v[i,1] := GetEnumName(PropInfo^.PropType, GetOrdProp(FObject, PropInfo));
+        {$ELSE}
+                    v[i,1] := GetEnumName(PropInfo^.PropType^, GetOrdProp(FObject, PropInfo));
+        {$ENDIF}
+                  end;
+                  tkSet:
+                  begin
+                    v[i,0] := PropInfo^.Name;
+                    SetItemString := '[';
+                    W := GetOrdProp(FObject, PropInfo);
+                    for J := 0 to 15 do
+                      if J in TCardinalSet(W) then
+                      begin
+                        if Length(SetItemString) <> 1 then
+                          SetItemString := SetItemString + ',';
+                        SetItemString := SetItemString +
+        {$IFDEF VER90}
+                         GetEnumName(GetTypeData(PropInfo^.PropType)^.CompType, J);
+        {$ELSE}
+                         GetEnumName(GetTypeData(PropInfo^.PropType^)^.CompType^, J);
+        {$ENDIF}
+                      end;
+                    SetItemString := SetItemString + ']';
+                    v[i,1] := SetItemString;
+                  end;
+                  tkVariant:
+                  try
+                    v[i,0] := PropInfo^.Name;
+                    v[i,1] := VarAsType(GetVariantProp(FObject,PropInfo), varString);
+                  except
+                    v[i,1] := '(Variant)';
+                  end;
+        //None of these area implemented...
+        //          tkWChar:
+        //          tkLWString:
+        //          tkUnknown:
+        //          tkMethod:
+                end;
+              end;
+            finally
+              FreeMem(TempList, Count * SizeOf(Pointer));
+            end;
+          end;
+        end;
+        
+        procedure TIObjectDispatch.GetProperties(var v: Variant);
+        const
+          TypeKinds: TTypeKinds = [{tkUnknown,} tkInteger, tkChar, tkEnumeration, tkFloat,
+            tkString, tkSet, tkClass, {tkMethod, }{tkWChar, }tkLString, {tkLWString,}
+            tkVariant];
+        begin
+          GetProps(v, TypeKinds);
+        end;
+        
+        procedure TIObjectDispatch.GetObjects(var v: Variant);
+        begin
+          GetProps(v, [tkClass]);
+        end;
+        
+        { Given the property name this will return an array containing the possible
+          values of an enum. }
+        procedure TIObjectDispatch.GetEnumList(PropName: String; var v: Variant);
+        var
+          Name: String;
+          Idx: Integer;
+          Obj: Variant;
+          I, J: Integer;
+          TotalLength: Integer;
+          PropInfo: PPropInfo;
+          TypeData: PTypeData;
+        begin
+          Idx := Length(PropName);
+          while (Idx > 0) and (PropName[Idx] <> '.') do
+            Dec(Idx);
+          if Idx > 0 then
+          begin
+            Name := PropName;
+            Delete(Name,1,Idx);
+            Obj := GetProperty(Copy(PropName,1,Idx - 1));
+            try
+              Obj.GetEnumList(Name,v);
+            finally
+              VarToInterface(Obj).Release;
+            end;
+          end
+          else
+          begin
+            PropInfo := GetPropInfo(FObject.ClassInfo,PropName);
+            if PropInfo^.PropType^.Kind <> tkEnumeration then
+              raise EOleSysError(DISP_E_TYPEMISMATCH);
+        {$IFDEF VER90}
+            TypeData := GetTypeData(PropInfo^.PropType);
+        {$ELSE}
+            TypeData := GetTypeData(PropInfo^.PropType^);
+        {$ENDIF}
+            j := TypeData^.MaxValue - TypeData^.MinValue;
+            v := VarArrayCreate([0, j], varVariant);
+            j := 0;
+            TotalLength := 0;
+            for i := TypeData^.MinValue to TypeData^.MaxValue do
+            begin
+        {$IFDEF VER90}
+              v[j] := GetEnumName(PropInfo^.PropType,i);
+        {$ELSE}
+              v[j] := GetEnumName(PropInfo^.PropType^,i);
+        {$ENDIF}
+              TotalLength := TotalLength + Length(v[j]) + 1;
+              Inc(j);
+            end;
+        
+            // SJP 3/31/98 Temporary fix to allow buffer overwrite in 6.1 SQAXDEL.DLL
+            if TotalLength > 2047 then
+            begin
+              v := UnAssigned;
+            end;
+        
+          end;
+        end;
+        
+        // SJP: 07/09/96 Added SetProperty.
+        function TIObjectDispatch.SetProperty(PropName: String; var v: Variant): WordBool;
+        var
+          Params: TDispParams;
+          Index: TDISPID;
+          ExpInfo: TEXCEPINFO;
+          ArgErr: Integer;
+          PWStr: PWideChar;
+          Name: String;
+          Idx: Integer;
+          Obj: Variant;
+          guid: TGUID;
+          bSuccess: WordBool;
+        begin
+          bSuccess := True;
+          // Separate the last property from the full path name.
+          Idx := Length(PropName);
+          while (Idx > 0) and (PropName[Idx] <> '.') do
+            Dec(Idx);
+          if Idx > 0 then
+          begin
+            Name := PropName;
+            Delete(Name,1,Idx);
+            Obj := GetProperty(Copy(PropName,1,Idx - 1));
+            try
+              bSuccess := Obj.SetProperty(Name,v);
+            finally
+              VarToInterface(Obj).Release;
+            end;
+          end
+          else
+          begin
+            FillChar(Params,SizeOf(Params),0);
+            FillChar(ExpInfo,SizeOf(ExpInfo),0);
+            ArgErr := 0;
+            PWStr := StringToOleStr(PropName);
+            New(Params.rgvarg);
+            Params.rgvarg[0] := TVariantArg(v);
+            params.cArgs := 1;
+        
+        //  11/21/96 SJPak Replacing calls to OLECheck which will raise an exception
+        //                 when return value is less than 0.  Raising an exception
+        //                 will cause a messagebox to pop up when ran from IDE.
+            if AutoDispatch.GetIDsOfNames(guid, @PWStr, 1, 0, @Index) >= 0 then
+            begin
+              if AutoDispatch.Invoke(Index, guid, 0, Dispatch_PropertyPut,
+                                           Params, nil, @ExpInfo, @ArgErr) < 0 then
+                bSuccess := False;
+            end
+            else
+              bSuccess := False;
+        
+            SysFreeString(PWStr);
+            Dispose(params.rgvarg);
+          end;
+          Result := bSuccess;
+        end;
+        
+        // SJP: 07/18/96 Added.
+        procedure TIObjectDispatch.GetPropNames(var v: Variant);
+        const
+          TypeKinds: TTypeKinds = [{tkUnknown,} tkInteger, tkChar, tkEnumeration, tkFloat,
+            tkString, tkSet, tkClass, {tkMethod, }{tkWChar, }tkLString, {tkLWString,}
+            tkVariant];
+        var
+          I, Count: Integer;
+          PropInfo: PPropInfo;
+          TempList: PPropList;
+        begin
+          Count := GetPropList(FObject.ClassInfo, TypeKinds, nil);
+          if Count > 0 then
+          begin
+            v := VarArrayCreate([0, Count - 1, 0, 1], varVariant);
+            GetMem(TempList, Count * SizeOf(Pointer));
+            try
+              GetPropList(FObject.ClassInfo, TypeKinds, TempList);
+              for I := 0 to Count - 1 do
+              begin
+                PropInfo := TempList^[I];
+                v[i,1] := PropInfo^.PropType^.Kind;
+                case PropInfo^.PropType^.Kind of
+                  tkClass:
+                    v[i,0] := PropInfo^.Name;
+                  tkString,
+                  tkLString:
+                    v[i,0] := PropInfo^.Name;
+                  tkChar:
+                    v[i,0] := PropInfo^.Name;
+                  tkInteger:
+                    v[i,0] := PropInfo^.Name;
+                  tkFloat:
+                    v[i,0] := PropInfo^.Name;
+                  tkEnumeration:
+                    v[i,0] := PropInfo^.Name;
+                  tkSet:
+                    v[i,0] := PropInfo^.Name;
+                  tkVariant:
+                    v[i,0] := PropInfo^.Name;
+        //None of these area implemented...
+        //          tkWChar:
+        //          tkLWString:
+        //          tkUnknown:
+        //          tkMethod:
+                end;
+              end;
+            finally
+              FreeMem(TempList, Count * SizeOf(Pointer));
+            end;
+          end;
+        end;
+        
+        
+        { TIComponentDispatch }
+        
+        function TIComponentDispatch.GetComponents(Index: Integer): Variant;
+        begin
+          if (Index >= 0) and (Index < TComponent(FObject).ComponentCount) then
+            TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, TComponent(FObject).Components[Index])
+          else
+            ;
+        //    OleError(DISP_E_BADINDEX);
+        end;
+        
+        function TIComponentDispatch.GetComponentCount: Integer;
+        begin
+          Result := TComponent(FObject).ComponentCount;
+        end;
+        
+        function TIComponentDispatch.GetComponentIndex: Integer;
+        begin
+          Result := TComponent(FObject).ComponentIndex;
+        end;
+        
+        function TIComponentDispatch.GetOwner: Variant;
+        begin
+          TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, TComponent(FObject).Owner)
+        end;
+        
+        function TIComponentDispatch.GetDesignInfo: LongInt;
+        begin
+          Result := TComponent(FObject).DesignInfo;
+        end;
+        
+        function TIComponentDispatch.FindComponent(AName: String): Variant;
+        var
+          Obj: TComponent;
+        begin
+          Obj := TComponent(FObject).FindComponent(AName);
+          if Obj <> nil then
+            TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, Obj)
+          else
+            ;
+        //    OleError(DISP_E_UNKNOWNNAME);
+        end;
+        
+        { TICollectionDispatch }
+        
+        function TICollectionDispatch.GetItemCount: Integer;
+        begin
+          Result := TCollection(FObject).Count;
+        end;
+        
+        procedure TICollectionDispatch.GetPropNames(var v: Variant);
+        var
+          Count, I : Integer;
+          vTemp : Variant;
+        begin
+          inherited GetPropNames(vTemp);
+          Count := -1;
+          if VarIsArray(vTemp) then
+            Count := VarArrayHighBound(vTemp, 1);
+          v := VarArrayCreate([0, Count + 2, 0, 1], varVariant);
+          for I := 0 to Count do
+          begin
+            v[I, 0] := vTemp[I, 0];
+            v[I, 1] := vTemp[1, 1];
+          end;
+          v[Count + 1, 0] := 'Count';
+          v[Count + 1, 1] := tkInteger;
+          v[Count + 2, 0] := 'Items';
+          v[Count + 2, 1] := tkClass;
+          VarClear(vTemp);
+        end;
+        
+        function TICollectionDispatch.GetProperty(PropName: String): Variant;
+        var
+          Count: Integer;
+          I: Integer;
+          Item: Variant;
+          Holder: Variant;
+        begin
+          if Propname = 'Count' then
+          begin
+            Holder := TCollection(FObject).Count;
+            Result := Holder;
+          end
+          else if Propname = 'Items' then
+          begin
+            Count := TCollection(FObject).Count;
+            Holder := VarArrayCreate([0, Count-1], varDispatch);
+            for I := 0 to Count-1 do
+            begin
+              TPublishedAutoDispatch(AutoDispatch).NewDispatch(Item, TCollection(FObject).Items[I]);
+              Holder[I] := Item;
+            end;
+            Result := Holder;
+          end
+          else
+            Result := inherited GetProperty(PropName);
+        end;
+        
+        { TIDataSetDispatch }
+        // SJP. 07/08/96 Returns FieldCount for TDataSet Objects.
+        function TIDataSetDispatch.GetFieldCount: Integer;
+        begin
+          Result := TDataSet(FObject).FieldCount;
+        end;
+        
+        // SJP. 07/08/96 Returns Tab-delimited/New-line separated
+        // 'data' for TDataSet Objects.
+        function TIDataSetDispatch.GetData: String;
+        var
+          I: Integer;
+          Data: String;
+          InitialBookMark: TBookMark;
+        begin
+          InitialBookMark := TDataSet(FObject).GetBookMark;
+          Data := '';
+          TDataSet(FObject).First;
+          while TDataSet(FObject).EOF = False do
+          begin
+            for I := 0 to TDataSet(FObject).FieldCount - 1 do
+            begin
+              if TDataSet(FObject).Fields[I].InheritsFrom(TMemoField) then
+                Data := Data + '(Memo)'
+              else if TDataSet(FObject).Fields[I].InheritsFrom(TGraphicField) then
+                Data := Data + '(Graphic)'
+              else if TDataSet(FObject).Fields[I].InheritsFrom(TBlobField) then
+                Data := Data + '(Blob)'
+              else if TDataSet(FObject).Fields[I].InheritsFrom(TBytesField) then
+                Data := Data + '(Bytes)'
+              else if TDataSet(FObject).Fields[I].InheritsFrom(TVarBytesField) then
+                Data := Data + '(Var Bytes)'
+              else
+                Data := Data + TDataSet(FObject).Fields[I].AsString;
+              if I < TDataSet(FObject).FieldCount - 1 then
+                Data := Data + #9;
+            end;
+            TDataSet(FObject).Next;
+            Data := Data + #13;
+          end;
+          TDataSet(FObject).GotoBookMark(InitialBookMark);
+          TDataSet(FObject).FreeBookMark(InitialBookMark);
+          Result := Data;
+        end;
+        
+        { TIStringDispatch }
+        
+        procedure TIStringsDispatch.GetPropNames(var v: Variant);
+        var
+          Count, I : Integer;
+          vTemp : Variant;
+        begin
+          inherited GetPropNames(vTemp);
+          Count := -1;
+          if VarIsArray(vTemp) then
+            Count := VarArrayHighBound(vTemp, 1);
+          v := VarArrayCreate([0, Count + 2, 0, 1], varVariant);
+          for I := 0 to Count do
+          begin
+            v[I, 0] := vTemp[I, 0];
+            v[I, 1] := vTemp[1, 1];
+          end;
+          v[Count + 1, 0] := 'Text';
+          v[Count + 1, 1] := tkString;
+          v[Count + 2, 0] := 'Strings';
+          v[Count + 2, 1] := tkString;
+          VarClear(vTemp);
+        end;
+        
+        function TIStringsDispatch.GetProperty(PropName: String): Variant;
+        var
+          I: Integer;
+          Count: Integer;
+          Holder: Variant;
+        begin
+          if Propname = 'Strings' then
+          begin
+            Count := TStrings(FObject).Count;
+            if Count > 0 then
+            begin
+              Holder := VarArrayCreate([0, Count-1], varOleStr);
+              for I := 0 to Count-1 do
+              begin
+                // Arbitrary Max len of 32000
+                Holder[I] := Copy(TStrings(FObject).Strings[I], 0, MaxStringItem);
+              end;
+            end;
+            Result := Holder;
+          end
+          else if Propname = 'Text' then
+          begin
+            Holder := TStrings(FObject).Text;
+            Result := Holder;
+          end
+          else
+            Result := inherited GetProperty(PropName);
+        end;
+        
+        { TIOleControlDispatch }
+        
+        function TIOleControlDispatch.GetOleObject: Variant;
+        begin
+          Result := TOleControl(FObject).OleObject;
+        end;
+        
+        { TIStringGridDispatch }
+        
+        procedure TIStringGridDispatch.GetPropNames(var v: Variant);
+        var
+          Count, I : Integer;
+          vTemp : Variant;
+        begin
+          inherited GetPropNames(vTemp);
+          Count := -1;
+          if VarIsArray(vTemp) then
+            Count := VarArrayHighBound(vTemp, 1);
+          v := VarArrayCreate([0, Count + 2, 0, 1], varVariant);
+          for I := 0 to Count do
+          begin
+            v[I, 0] := vTemp[I, 0];
+            v[I, 1] := vTemp[1, 1];
+          end;
+          v[Count + 1, 0] := 'Cols';
+          v[Count + 1, 1] := tkClass;
+          v[Count + 2, 0] := 'Rows';
+          v[Count + 2, 1] := tkClass;
+          VarClear(vTemp);
+        end;
+        
+        function TIStringGridDispatch.GetProperty(PropName: String): Variant;
+        var
+          Count: Integer;
+          I: Integer;
+          Item: Variant;
+          Holder: Variant;
+        begin
+          if Propname = 'Cols' then
+          begin
+            Count := TStringGrid(FObject).ColCount;
+            Holder := VarArrayCreate([0, Count-1], varDispatch);
+            for I := 0 to Count-1 do
+            begin
+              TPublishedAutoDispatch(AutoDispatch).NewDispatch(Item, TStringGrid(FObject).Cols[I]);
+              Holder[I] := Item;
+            end;
+            Result := Holder;
+          end
+          else if Propname = 'Rows' then
+          begin
+            Count := TStringGrid(FObject).RowCount;
+            Holder := VarArrayCreate([0, Count-1], varDispatch);
+            for I := 0 to Count-1 do
+            begin
+              TPublishedAutoDispatch(AutoDispatch).NewDispatch(Item, TStringGrid(FObject).Rows[I]);
+              Holder[I] := Item;
+            end;
+            Result := Holder;
+          end
+          else
+            Result := inherited GetProperty(PropName);
+        end;
+
+        function TIStringGridDispatch.GetData: String;
+        var
+          row, col, RowCount, ColCount: Integer;
+          DataTemp, Data: String;
+        begin
+          //OutputDebugString( PChar( 'TIStringGridDispatch.GetData : ' + #13#10 ) );
+          Data := '';
+
+          RowCount := TStringGrid(FObject).RowCount;
+          ColCount := TStringGrid(FObject).ColCount;
+
+          for row := 0 to RowCount - 1 do
+          begin
+            DataTemp := '';
+            for col := 0 to ColCount - 1 do
+            begin
+              DataTemp := DataTemp + TStringGrid(FObject).Cells[ col, row ];
+              if col < ColCount - 1 then
+                DataTemp := DataTemp + #9;
+            end;
+
+            Data := Data + DataTemp + #13;
+          end;
+
+          //OutputDebugString( PChar( 'TIStringGridDispatch.GetData Returing: ' + Data + #13#10 ) );
+          Result := Data;
+        end;
+
+        { TITreeViewDispatch }
+        
+        procedure TITreeViewDispatch.GetPropNames(var v: Variant);
+        begin
+          inherited GetPropNames(v);
+        end;
+        
+        function TITreeViewDispatch.GetProperty(PropName: String): Variant;
+        var
+          Count: Integer;
+          I: Integer;
+          Holder: Variant;
+          Nodes: TTreeNodes;
+          Node, NodeTemp: TTreeNode;
+          NodePath: string;
+        begin
+          //OutputDebugString( PChar( 'TITreeViewDispatch.GetProperty : ' + PropName + #13#10) );
+          if Propname = 'Items' then
+          begin
+            Nodes := TTreeView(FObject).Items;
+            Count := Nodes.Count;
+            Holder := VarArrayCreate([0, Count-1], varOleStr);
+            for I := 0 to Count - 1 do
+            begin
+                Node := Nodes.Item[ I ];
+                NodeTemp := Node.Parent;
+                NodePath := Node.Text;
+
+                while( NodeTemp <> nil ) do
+                begin
+                        NodePath := NodeTemp.Text + '->' + NodePath;
+                        NodeTemp := NodeTemp.Parent;
+                end;
+                Holder[I] := Copy( NodePath, 0, MaxStringItem);
+            end;
+            Result := Holder;
+          end
+          else
+            Result := inherited GetProperty(PropName);
+        end;
+
+        { TIControlDispatch }
+
+        function TIControlDispatch.GetParent: Variant;
+        begin
+          TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, TControl(FObject).Parent)
+        end;
+        
+        {TIWinControlDispatch}
+        
+        function TIWinControlDispatch.GetControls(Index: Integer): Variant;
+        begin
+          if (Index >= 0) and (Index < TWinControl(FObject).ControlCount) then
+            TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, TWinControl(FObject).Controls[Index])
+          else
+            ;
+        //    OleError(DISP_E_BADINDEX);
+        end;
+        
+        function TIWinControlDispatch.GetHandle: Integer;
+        begin
+          Result := TWinControl(FObject).Handle;
+        end;
+        
+        function TIWinControlDispatch.GetControlCount: Integer;
+        begin
+          Result := TWinControl(FObject).ControlCount;
+        end;
+        
+        function TIWinControlDispatch.ControlAtPos(X, Y: Integer): Variant;
+        var
+          Pt: TPoint;
+          Control: TControl;
+        begin
+          Pt.y := Y;
+          Pt.x := X;
+          Control := TWinControl(FObject).ControlAtPos(Pt, True);
+          if Control <> nil then
+            TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, Control)
+          else
+            ;
+        //    OleError(DISP_E_BADINDEX);
+        end;
+        
+        { TIApplicationDispatch }
+        
+        constructor TIApplicationDispatch.Create;
+        begin
+          FObject := Application;
+          inherited Create;
+        end;
+        
+        function TIApplicationDispatch.GetDispFromHandle(Handle: Integer): Variant;
+        var
+          Obj: TObject;
+        begin
+          Obj := FindControl(Handle);
+          if (Obj <> nil) then
+            TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, Obj)
+          else
+            ;
+        //    OleError(DISP_E_PARAMNOTFOUND);
+        end;
+        
+        function TIApplicationDispatch.GetHandle: Integer;
+        begin
+          Result := TApplication(FObject).Handle;
+        end;
+        
+        function TIApplicationDispatch.GetExeName: String;
+        begin
+          Result := TApplication(FObject).ExeName;
+        end;
+        
+        function TIApplicationDispatch.GetMainForm: Variant;
+        begin
+          TPublishedAutoDispatch(AutoDispatch).NewDispatch(Result, TApplication(FObject).MainForm);
+        end;
+        
+        procedure RegisterAutomationServer;
+        const
+          AutoClassInfo: TAutoClassInfo = (
+            AutoClass: TIApplicationDispatch;
+            ProgID: 'SQAServer.Application';
+            ClassID: '{92E4FBC0-1169-11D0-B5AB-00A02484352C}';
+            Description: 'SQA Test Automation Server';
+            Instancing: acMultiInstance);
+        begin
+          Automation.RegisterClass(AutoClassInfo);
+        end;
+
+        function GetPropertyName : string;
+        var
+                propName : string;
+        begin
+                Result := 'SQAApplicationObject';
+                if ( System.IsLibrary ) then
+                begin
+                        propName := Format( 'SQAApplicationObject_%x', [ HInstance ] );
+                        Result := propName;
+                end;
+        end;
+
+        function GetApplicationHandle: THandle;
+        var
+                appHandle : THandle;
+        begin
+
+                Result := Application.Handle;
+                if ( Result = 0 ) then
+                begin
+                        appHandle := FindWindow( PChar( 'TApplication' ), nil );
+                        Result := appHandle;
+                end;
+        end;
+
+        procedure BeautifyApplicationWindow;
+        var
+                appD : TIApplicationDispatch;
+                propName : string;
+                aut : TAutoDispatch;
+                V : ^Variant;
+                appHandle : THandle;
+        begin
+                propName := GetPropertyName( );
+                appHandle := GetApplicationHandle( );
+                //OutputDebugString( PChar( Format( 'DEEnabler: Application handle :<%x>' + #13#10, [ appHandle ] ) ) );
+
+                if ( GetProp( appHandle, PChar(propName) ) = 0 ) then
+                begin
+
+                        New( V );
+                        VarClear( V^ );
+                        appD := TIApplicationDispatch.Create( );
+                        aut := appD.AutoDispatch;
+
+                        TVarData(V^).VType := varDispatch;
+                        TVarData(V^).VDispatch := aut;
+                        //VarToInterface(V^).AddRef;
+
+                        //OutputDebugString( PChar( Format( 'DEEnabler: SetProp <%s> apphandle <%x> object <%x>' + #13#10, [ PChar(propName), appHandle, THandle( V ) ] ) ) );
+                        SetProp( appHandle, PChar(propName), THandle( V ) );
+                end;
+        end;
+
+        procedure RevertApplicationWindowChanges;
+        var
+                th : THandle;
+                V : PVariant;
+                propName : PChar;
+                appHandle : THandle;
+        begin
+                propName := 'SQAApplicationObject';
+
+                appHandle := GetApplicationHandle();
+                th := Windows.GetProp( appHandle, propName );
+                if ( th <> 0 ) then
+                begin
+                        V := PVariant(th);
+                        Dispose( V );
+                        //VarToInterface(V^).Release;
+                        Windows.RemoveProp( appHandle, propName );
+                end;
+        end;
+
+	function TIApplicationDispatch.FindControl1(hWndToFind: HWnd): TWinControl;
+	var
+		lControlAtom: TAtom;
+		lControlAtomString: string;
+		lOwningProcess: Pointer;
+                lUnknownProcess: DWORD;
+		lRM_GetObjectInstance: DWORD;
+	begin
+
+		Result := nil;
+		if (hWndToFind <> 0) then
+		begin
+			lControlAtomString := Format('ControlOfs%.8X%.8X', [GetWindowLong( hWndToFind, GWL_HINSTANCE), GetCurrentThreadID]);
+			lControlAtom := GlobalAddAtom(PChar(lControlAtomString));
+
+			if GlobalFindAtom(PChar(lControlAtomString)) = lControlAtom then
+			begin
+				Result := Pointer(GetProp(hWndToFind, MakeIntAtom(lControlAtom)))
+			end
+			else
+			begin
+				lRM_GetObjectInstance := RegisterWindowMessage(PChar(lControlAtomString));
+
+                                lOwningProcess := nil;
+				GetWindowThreadProcessID(hWndToFind, lOwningProcess);
+
+                                lUnknownProcess := GetCurrentProcessID();
+				if DWORD(lOwningProcess) = lUnknownProcess then
+				begin
+					Result := Pointer(SendMessage(hWndToFind, lRM_GetObjectInstance, 0, 0))
+				end
+				else
+				begin
+					Result := nil;
+				end;
+			end;
+		end;
+	end;
+
+        begin
+          RegisterAutomationEnabler(TObject, TIObjectDispatch);
+          RegisterAutomationEnabler(TComponent, TIComponentDispatch);
+          RegisterAutomationEnabler(TControl, TIControlDispatch);
+          RegisterAutomationEnabler(TWinControl, TIWinControlDispatch);
+          // SJP: Added 07/01/96.
+          RegisterAutomationEnabler(TCollection, TICollectionDispatch);
+          // SJP: Added 07/08/96.
+          RegisterAutomationEnabler(TDataSet, TIDataSetDispatch);
+          // SJP: Added 07/08/96.
+          RegisterAutomationEnabler(TStrings, TIStringsDispatch);
+          // SJP: Added 08/04/96.
+          RegisterAutomationEnabler(TOleControl, TIOleControlDispatch);
+          // SJP: Added 03/12/97.
+          RegisterAutomationEnabler(TStringGrid, TIStringGridDispatch);
+          // TreeView support
+          RegisterAutomationEnabler(TTreeView, TITreeViewDispatch);
+
+          //RegisterAutomationServer;
+          BeautifyApplicationWindow( );
+        end.
+
Index: cprs/branches/HealthSevak-CPRS/Kevin's Achieving Compilation Instructions.txt
===================================================================
--- cprs/branches/HealthSevak-CPRS/Kevin's Achieving Compilation Instructions.txt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Kevin's Achieving Compilation Instructions.txt	(revision 1676)
@@ -0,0 +1,54 @@
+Attempts at getting WV_CPRS_V27 (OR_3_243V27) up and compiling in Delphi Dev Studio 2006
+
+June, 2010
+
+Copied source to:
+p:\vista\CPRS-WV_OFFICIAL_RELEASE-27
+
+Menu: Component\Install Packages --> Add ...
+  Browse to Packages folder
+  Don't add the file names that have *60.bpl 
+	Don't add VA10.bpl
+	Don't add Borland.bpl
+  Add:
+	Borland2006.bpl
+	ORCtrlLib2006.bpl	
+	ORDateLib2006.bpl
+	VA508Access2006
+	VA2006.bpl
+	VAShared2006
+	XWB_D10.bpl
+
+Then found:  .\VA\VAShared2006.dpk
+I suspect this is a combination of needed files. It opens, but I can't find how to install it.
+
+So I closed this.
+
+Opened up CPRSChart.dpr
+Attempted compile.
+Got error of missing ORSystem.dcu
+
+Open project options.
+Go to Directories and Conditionals
+  Change the Unit Output Directory to the DCU folder.
+  Change the Search Path so that is searches in:
+    CPRS folder
+    CPRSLib folder
+    WVEHR-Lib folder
+  Change the Packages output folder to 
+
+Compile attempt again.  This time is is missing TRPCB.dcu
+  In my other instances of compiling CPRS, I have always had the BDK32 folder in with the CPRS source. This is the RPC Broker.  It does not appear to be included anywhere in the source tree.
+  A file search shows that it is in the DCU folder.  So back to the Options and include the DCU folder in the search path.
+
+Compile attempt again.  Compiles much further.  Now error of multiple missing *.dfm files.  
+  First missing one is. fDebugInfo.DFM.  A filesystem search doesn't find it.  
+  A search for *.dfm reveals many files, but not the ones I need.
+  Looking closer, the missing .dfm files are all related to the debugger.
+  So I think this is a problem of the compiler wanting to recompile the TRPCB.dcu.
+
+  So I am going to take a chance and copy over the BDK32 directory into the source tree and add it to the search path and see if that works.  I put it at the same level as the CPRS-Lib, VA, DCU etc folders.  I deleted the \BDK32\D7 folder.  Added \BDK32\Source to search path.
+
+Compile attempt again..
+
+Success!!
Index: cprs/branches/HealthSevak-CPRS/Packages/Borland2006.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/Borland2006.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/Borland2006.map	(revision 1676)
@@ -0,0 +1,202 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 00000BD4H .text                   CODE
+ 0002:00402000 00000104H .itext                  ICODE
+ 0003:00403000 0000002CH .data                   DATA
+ 0004:00404000 00000018H .bss                    BSS
+ 0005:00000000 00000000H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 0000008E C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:00000090 000001C3 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:00000254 0000004C C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:000002A0 00000006 C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:000002A8 00000046 C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:000002F0 00000006 C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:000002F8 00000006 C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000300 00000006 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:00000308 00000006 C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:00000310 00000006 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:00000318 00000006 C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:00000320 0000014E C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:00000470 00000006 C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:00000478 00000006 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00000480 00000006 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:00000488 00000006 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:00000490 00000016 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:000004A8 00000006 C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:000004B0 00000006 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:000004B8 00000006 C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:000004C0 00000006 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:000004C8 00000006 C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:000004D0 00000006 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:000004D8 00000006 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:000004E0 00000006 C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:000004E8 0000000E C=CODE     S=.text    G=(none)   M=ToolWin  ACBP=A9
+ 0001:000004F8 000000C6 C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:000005C0 00000006 C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:000005C8 00000006 C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:000005D0 00000006 C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:000005D8 00000006 C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:000005E0 000003EA C=CODE     S=.text    G=(none)   M=MenuBar  ACBP=A9
+ 0001:000009CC 00000207 C=CODE     S=.text    G=(none)   M=.Borland2006 ACBP=A9
+ 0002:00000000 00000006 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000008 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:0000001C 00000006 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:00000024 00000006 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:0000002C 00000006 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000034 00000006 C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:0000003C 00000006 C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:00000044 00000006 C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:0000004C 00000006 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:00000054 00000006 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:0000005C 00000006 C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:00000064 00000006 C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:0000006C 00000006 C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000074 00000006 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:0000007C 00000006 C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:00000084 00000006 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:0000008C 00000006 C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000094 00000006 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:0000009C 00000006 C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:000000A4 00000006 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:000000AC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000000B4 00000006 C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:000000BC 00000006 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:000000C4 00000006 C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:000000CC 00000006 C=ICODE    S=.itext   G=(none)   M=ComCtrls ACBP=A9
+ 0002:000000D4 00000006 C=ICODE    S=.itext   G=(none)   M=ExtActns ACBP=A9
+ 0002:000000DC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtDlgs  ACBP=A9
+ 0002:000000E4 00000006 C=ICODE    S=.itext   G=(none)   M=Buttons  ACBP=A9
+ 0002:000000EC 00000006 C=ICODE    S=.itext   G=(none)   M=Mapi     ACBP=A9
+ 0002:000000F4 00000008 C=ICODE    S=.itext   G=(none)   M=MenuBar  ACBP=A9
+ 0002:000000FC 00000005 C=ICODE    S=.itext   G=(none)   M=.Borland2006 ACBP=A9
+ 0003:00000000 0000002C C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0004:00000000 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:0000000C 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00000014 00000004 C=BSS      S=.bss     G=DGROUP   M=MenuBar  ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0002:000000FC       .Borland2006..Borland2006
+ 0001:00000BB4       .Borland2006.@GetPackageInfoTable
+ 0001:00000BBC       .Borland2006.@PackageLoad
+ 0001:00000BC8       .Borland2006.@PackageUnload
+ 0004:00000014       MenuBar..2
+ 0001:000005E0       MenuBar..TMenuBar
+ 0001:0000099C       MenuBar.Finalization
+ 0002:000000F4       MenuBar.MenuBar
+ 0001:000007A0       MenuBar.Register
+ 0001:000007D0       MenuBar.TMenuBar.Create
+ 0001:0000083C       MenuBar.TMenuBar.GetChildren
+ 0001:00000844       MenuBar.TMenuBar.SetMenu
+ 0001:000001D8       SysInit.@InitPkg
+ 0001:0000023C       SysInit.@PackageLoad
+ 0001:00000248       SysInit.@PackageUnload
+ 0001:000000C8       SysInit.AllocTlsBuffer
+ 0001:00000184       SysInit.ExitProcessTLS
+ 0001:0000014C       SysInit.ExitThreadTLS
+ 0001:00000090       SysInit.FreeLibrary
+ 0001:000000D4       SysInit.GetTlsSize
+ 0004:00000004       SysInit.HInstance
+ 0001:000001A8       SysInit.InitializeModule
+ 0001:00000120       SysInit.InitProcessTLS
+ 0001:000000DC       SysInit.InitThreadTLS
+ 0001:00000098       SysInit.LocalAlloc
+ 0001:000000A0       SysInit.LocalFree
+ 0003:00000004       SysInit.Module
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0001:000000A8       SysInit.TlsAlloc
+ 0004:00000008       SysInit.tlsBuffer
+ 0001:000000B0       SysInit.TlsFree
+ 0001:000000B8       SysInit.TlsGetValue
+ 0003:00000000       SysInit.TlsIndex
+ 0005:00000000       SysInit.TlsLast
+ 0003:0000001C       SysInit.TlsProc
+ 0001:000000C0       SysInit.TlsSetValue
+ 0001:000001B4       SysInit.UninitializeModule
+ 0004:0000000C       Windows..3
+ 0001:0000025C       Windows.Finalization
+ 0001:00000254       Windows.FreeLibrary
+ 0004:00000010       Windows.HtmlHelpModule
+ 0002:00000008       Windows.Windows
+
+
+  Address             Publics by Value
+
+ 0001:00000090       SysInit.FreeLibrary
+ 0001:00000098       SysInit.LocalAlloc
+ 0001:000000A0       SysInit.LocalFree
+ 0001:000000A8       SysInit.TlsAlloc
+ 0001:000000B0       SysInit.TlsFree
+ 0001:000000B8       SysInit.TlsGetValue
+ 0001:000000C0       SysInit.TlsSetValue
+ 0001:000000C8       SysInit.AllocTlsBuffer
+ 0001:000000D4       SysInit.GetTlsSize
+ 0001:000000DC       SysInit.InitThreadTLS
+ 0001:00000120       SysInit.InitProcessTLS
+ 0001:0000014C       SysInit.ExitThreadTLS
+ 0001:00000184       SysInit.ExitProcessTLS
+ 0001:000001A8       SysInit.InitializeModule
+ 0001:000001B4       SysInit.UninitializeModule
+ 0001:000001D8       SysInit.@InitPkg
+ 0001:0000023C       SysInit.@PackageLoad
+ 0001:00000248       SysInit.@PackageUnload
+ 0001:00000254       Windows.FreeLibrary
+ 0001:0000025C       Windows.Finalization
+ 0001:000005E0       MenuBar..TMenuBar
+ 0001:000007A0       MenuBar.Register
+ 0001:000007D0       MenuBar.TMenuBar.Create
+ 0001:0000083C       MenuBar.TMenuBar.GetChildren
+ 0001:00000844       MenuBar.TMenuBar.SetMenu
+ 0001:0000099C       MenuBar.Finalization
+ 0001:00000BB4       .Borland2006.@GetPackageInfoTable
+ 0001:00000BBC       .Borland2006.@PackageLoad
+ 0001:00000BC8       .Borland2006.@PackageUnload
+ 0002:00000008       Windows.Windows
+ 0002:000000F4       MenuBar.MenuBar
+ 0002:000000FC       .Borland2006..Borland2006
+ 0003:00000000       SysInit.TlsIndex
+ 0003:00000004       SysInit.Module
+ 0003:0000001C       SysInit.TlsProc
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0004:00000004       SysInit.HInstance
+ 0004:00000008       SysInit.tlsBuffer
+ 0004:0000000C       Windows..3
+ 0004:00000010       Windows.HtmlHelpModule
+ 0004:00000014       MenuBar..2
+ 0005:00000000       SysInit.TlsLast
+
+
+Line numbers for MenuBar(Menubar.pas) segment .text
+
+    39 0001:000007A0    40 0001:000007A4    41 0001:000007BB    46 0001:000007D0
+    47 0001:000007E5    48 0001:000007EE    49 0001:000007F7    50 0001:00000800
+    51 0001:0000080E    53 0001:00000816    56 0001:0000083C    57 0001:0000083F
+    63 0001:00000844    64 0001:0000084F    65 0001:0000085D    66 0001:00000861
+    67 0001:00000879    66 0001:00000888    68 0001:0000088D    69 0001:00000895
+    70 0001:0000089D    72 0001:000008C9    73 0001:000008DA    74 0001:000008E8
+    75 0001:000008F2    76 0001:000008FC    77 0001:00000906    79 0001:00000935
+    80 0001:0000093D    82 0001:00000947    70 0001:00000948    84 0001:0000094F
+    85 0001:00000970    84 0001:00000991    86 0001:00000994
+
+Line numbers for MenuBar(Menubar.pas) segment .itext
+
+    88 0002:000000F4
+
+Line numbers for .Borland2006(C:\cprs\Current\CPRS-Lib\Borland2006.dpk) segment .itext
+
+    35 0002:000000FC
+
+Bound resource files
+
+Borland2006.res
+Borland2006.drf
+
+
+Program entry point at 0002:000000FC
Index: cprs/branches/HealthSevak-CPRS/Packages/ORCtrlLib2006.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/ORCtrlLib2006.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/ORCtrlLib2006.map	(revision 1676)
@@ -0,0 +1,1298 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 00013A54H .text                   CODE
+ 0002:00415000 000001E8H .itext                  ICODE
+ 0003:00416000 00000284H .data                   DATA
+ 0004:00417000 000000B0H .bss                    BSS
+ 0005:00000000 00000000H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 000001B6 C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:000001B8 000001C3 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:0000037C 0000025C C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:000005D8 0000006E C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:00000648 00000186 C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:000007D0 00000006 C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:000007D8 00000036 C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000810 00000006 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:00000818 00000086 C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:000008A0 00000006 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:000008A8 00000006 C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:000008B0 0000048E C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:00000D40 00000006 C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:00000D48 0000001E C=CODE     S=.text    G=(none)   M=ImgList  ACBP=A9
+ 0001:00000D68 0000002F C=CODE     S=.text    G=(none)   M=CommCtrl ACBP=A9
+ 0001:00000D98 00000016 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00000DB0 00000006 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:00000DB8 00000006 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:00000DC0 000000AE C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:00000E70 00000006 C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:00000E78 00000006 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:00000E80 00000006 C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:00000E88 00000386 C=CODE     S=.text    G=(none)   M=StdCtrls ACBP=A9
+ 0001:00001210 00000006 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00001218 00000086 C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:000012A0 00000006 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:000012A8 00000006 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:000012B0 00000006 C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:000012B8 0000032E C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:000015E8 00000006 C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:000015F0 00000006 C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:000015F8 0000004E C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:00001648 00000006 C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:00001650 0000005E C=CODE     S=.text    G=(none)   M=Grids    ACBP=A9
+ 0001:000016B0 0000003E C=CODE     S=.text    G=(none)   M=CheckLst ACBP=A9
+ 0001:000016F0 00000006 C=CODE     S=.text    G=(none)   M=VAUtils  ACBP=A9
+ 0001:000016F8 00000006 C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:00001700 00011797 C=CODE     S=.text    G=(none)   M=ORCtrls  ACBP=A9
+ 0001:00012E98 00000006 C=CODE     S=.text    G=(none)   M=DesignIntf ACBP=A9
+ 0001:00012EA0 000000B6 C=CODE     S=.text    G=(none)   M=DesignEditors ACBP=A9
+ 0001:00012F58 00000006 C=CODE     S=.text    G=(none)   M=ToolsAPI ACBP=A9
+ 0001:00012F60 00000006 C=CODE     S=.text    G=(none)   M=XMLIntf  ACBP=A9
+ 0001:00012F68 00000006 C=CODE     S=.text    G=(none)   M=xmldom   ACBP=A9
+ 0001:00012F70 00000006 C=CODE     S=.text    G=(none)   M=msxmldom ACBP=A9
+ 0001:00012F78 00000006 C=CODE     S=.text    G=(none)   M=DockForm ACBP=A9
+ 0001:00012F80 00000006 C=CODE     S=.text    G=(none)   M=IDEMessages ACBP=A9
+ 0001:00012F88 00000006 C=CODE     S=.text    G=(none)   M=DeskForm ACBP=A9
+ 0001:00012F90 00000006 C=CODE     S=.text    G=(none)   M=BaseDock ACBP=A9
+ 0001:00012F98 00000006 C=CODE     S=.text    G=(none)   M=PercentageDockTree ACBP=A9
+ 0001:00012FA0 00000006 C=CODE     S=.text    G=(none)   M=CaptionedDockTree ACBP=A9
+ 0001:00012FA8 00000006 C=CODE     S=.text    G=(none)   M=DockTabSet ACBP=A9
+ 0001:00012FB0 00000006 C=CODE     S=.text    G=(none)   M=Tabs     ACBP=A9
+ 0001:00012FB8 00000006 C=CODE     S=.text    G=(none)   M=DeskUtil ACBP=A9
+ 0001:00012FC0 00000006 C=CODE     S=.text    G=(none)   M=ActnMan  ACBP=A9
+ 0001:00012FC8 00000006 C=CODE     S=.text    G=(none)   M=ActnMenus ACBP=A9
+ 0001:00012FD0 00000006 C=CODE     S=.text    G=(none)   M=XPStyleActnCtrls ACBP=A9
+ 0001:00012FD8 00000006 C=CODE     S=.text    G=(none)   M=Proxies  ACBP=A9
+ 0001:00012FE0 000006E2 C=CODE     S=.text    G=(none)   M=ORCtrlsDsgn ACBP=A9
+ 0001:000136C4 0000038F C=CODE     S=.text    G=(none)   M=.ORCtrlLib2006 ACBP=A9
+ 0002:00000000 00000006 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000008 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:0000001C 00000006 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:00000024 00000006 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:0000002C 00000006 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000034 00000006 C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:0000003C 00000006 C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:00000044 00000006 C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:0000004C 00000006 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:00000054 00000006 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:0000005C 00000006 C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:00000064 00000006 C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:0000006C 00000006 C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000074 00000006 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:0000007C 00000006 C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:00000084 00000006 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:0000008C 00000006 C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000094 00000006 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:0000009C 00000006 C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:000000A4 00000006 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:000000AC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000000B4 00000006 C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:000000BC 00000006 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:000000C4 00000006 C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:000000CC 00000006 C=ICODE    S=.itext   G=(none)   M=ComCtrls ACBP=A9
+ 0002:000000D4 00000006 C=ICODE    S=.itext   G=(none)   M=ExtActns ACBP=A9
+ 0002:000000DC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtDlgs  ACBP=A9
+ 0002:000000E4 00000006 C=ICODE    S=.itext   G=(none)   M=Buttons  ACBP=A9
+ 0002:000000EC 00000006 C=ICODE    S=.itext   G=(none)   M=Mapi     ACBP=A9
+ 0002:000000F4 00000006 C=ICODE    S=.itext   G=(none)   M=CheckLst ACBP=A9
+ 0002:000000FC 00000006 C=ICODE    S=.itext   G=(none)   M=VAUtils  ACBP=A9
+ 0002:00000104 00000006 C=ICODE    S=.itext   G=(none)   M=ComObj   ACBP=A9
+ 0002:0000010C 0000003B C=ICODE    S=.itext   G=(none)   M=ORCtrls  ACBP=A9
+ 0002:00000148 00000006 C=ICODE    S=.itext   G=(none)   M=DesignEditors ACBP=A9
+ 0002:00000150 00000006 C=ICODE    S=.itext   G=(none)   M=ToolsAPI ACBP=A9
+ 0002:00000158 00000006 C=ICODE    S=.itext   G=(none)   M=XMLIntf  ACBP=A9
+ 0002:00000160 00000006 C=ICODE    S=.itext   G=(none)   M=xmldom   ACBP=A9
+ 0002:00000168 00000006 C=ICODE    S=.itext   G=(none)   M=msxmldom ACBP=A9
+ 0002:00000170 00000006 C=ICODE    S=.itext   G=(none)   M=DockForm ACBP=A9
+ 0002:00000178 00000006 C=ICODE    S=.itext   G=(none)   M=IDEMessages ACBP=A9
+ 0002:00000180 00000006 C=ICODE    S=.itext   G=(none)   M=DeskForm ACBP=A9
+ 0002:00000188 00000006 C=ICODE    S=.itext   G=(none)   M=BaseDock ACBP=A9
+ 0002:00000190 00000006 C=ICODE    S=.itext   G=(none)   M=PercentageDockTree ACBP=A9
+ 0002:00000198 00000006 C=ICODE    S=.itext   G=(none)   M=CaptionedDockTree ACBP=A9
+ 0002:000001A0 00000006 C=ICODE    S=.itext   G=(none)   M=DockTabSet ACBP=A9
+ 0002:000001A8 00000006 C=ICODE    S=.itext   G=(none)   M=Tabs     ACBP=A9
+ 0002:000001B0 00000006 C=ICODE    S=.itext   G=(none)   M=DeskUtil ACBP=A9
+ 0002:000001B8 00000006 C=ICODE    S=.itext   G=(none)   M=ActnMan  ACBP=A9
+ 0002:000001C0 00000006 C=ICODE    S=.itext   G=(none)   M=ActnMenus ACBP=A9
+ 0002:000001C8 00000006 C=ICODE    S=.itext   G=(none)   M=XPStyleActnCtrls ACBP=A9
+ 0002:000001D0 00000006 C=ICODE    S=.itext   G=(none)   M=Proxies  ACBP=A9
+ 0002:000001D8 00000008 C=ICODE    S=.itext   G=(none)   M=ORCtrlsDsgn ACBP=A9
+ 0002:000001E0 00000005 C=ICODE    S=.itext   G=(none)   M=.ORCtrlLib2006 ACBP=A9
+ 0003:00000000 00000030 C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0003:00000030 00000248 C=DATA     S=.data    G=DGROUP   M=ORCtrls  ACBP=A9
+ 0004:00000000 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:0000000C 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00000014 00000095 C=BSS      S=.bss     G=DGROUP   M=ORCtrls  ACBP=A9
+ 0004:000000AC 00000004 C=BSS      S=.bss     G=DGROUP   M=ORCtrlsDsgn ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0002:000001E0       .ORCtrlLib2006..ORCtrlLib2006
+ 0001:00013A34       .ORCtrlLib2006.@GetPackageInfoTable
+ 0001:00013A3C       .ORCtrlLib2006.@PackageLoad
+ 0001:00013A48       .ORCtrlLib2006.@PackageUnload
+ 0001:00000D68       CommCtrl.TreeView_GetItem
+ 0001:00000D80       CommCtrl.TreeView_SetItem
+ 0004:00000014       ORCtrls..03
+ 0001:00005200       ORCtrls..TCaptionCheckListBox
+ 0001:00005AF0       ORCtrls..TCaptionComboBox
+ 0001:00005660       ORCtrls..TCaptionEdit
+ 0001:00004F5C       ORCtrls..TCaptionListBox
+ 0001:00005D44       ORCtrls..TCaptionListView
+ 0001:00005444       ORCtrls..TCaptionMemo
+ 0001:00005894       ORCtrls..TCaptionRichEdit
+ 0001:00005FA4       ORCtrls..TCaptionStringGrid
+ 0001:00003C70       ORCtrls..TCaptionTreeView
+ 0001:0000618C       ORCtrls..TItemTip
+ 0001:00004BFC       ORCtrls..TKeyClickPanel
+ 0001:00004D64       ORCtrls..TKeyClickRadioGroup
+ 0001:000036B0       ORCtrls..TORAlignButton
+ 0001:00003A04       ORCtrls..TORAlignEdit
+ 0001:000038A0       ORCtrls..TORAlignSpeedButton
+ 0001:000030C0       ORCtrls..TORAutoPanel
+ 0001:00004230       ORCtrls..TORCBImageIndexes
+ 0001:000044C0       ORCtrls..TORCheckBox
+ 0001:00002678       ORCtrls..TORComboBox
+ 0001:00002418       ORCtrls..TORComboEdit
+ 0001:000022B0       ORCtrls..TORComboPanelEdit
+ 0001:00002104       ORCtrls..TORDropPanel
+ 0001:00001B64       ORCtrls..TORListBox
+ 0001:00004878       ORCtrls..TORListView
+ 0001:00004B20       ORCtrls..TORMenuItem
+ 0001:00003228       ORCtrls..TOROffsetLabel
+ 0001:00004A48       ORCtrls..TORPopupMenu
+ 0001:00001778       ORCtrls..TORStrings
+ 0001:00003E4C       ORCtrls..TORTreeNode
+ 0001:00003F40       ORCtrls..TORTreeView
+ 0001:000062E4       ORCtrls..TSizeRatio
+ 0001:00006948       ORCtrls.AddItemTipRef
+ 0003:00000030       ORCtrls.ALPHA_DISTRIBUTION
+ 0003:00000204       ORCtrls.BlackCheckBoxImageResNames
+ 0003:00000250       ORCtrls.BlackComboBoxImages
+ 0003:00000258       ORCtrls.ButtonAlignment
+ 0003:0000026C       ORCtrls.ButtonLayout
+ 0003:00000264       ORCtrls.ButtonWordWrap
+ 0001:0000FB94       ORCtrls.CalcShortName
+ 0003:000001C4       ORCtrls.CheckBoxImageResNames
+ 0001:0000B2C0       ORCtrls.ClearLong
+ 0001:0000633C       ORCtrls.ClientWidthOfList
+ 0003:00000248       ORCtrls.ComboBoxImages
+ 0001:0000737C       ORCtrls.DestroyORCBBitmaps
+ 0001:0000C520       ORCtrls.DropDownPanelClosed
+ 0001:0000C4E0       ORCtrls.DropDownPanelOpened
+ 0001:00011BC4       ORCtrls.EnableCtrl
+ 0001:00012E38       ORCtrls.Finalization
+ 0001:0000648C       ORCtrls.FontHeightPixel
+ 0001:00006380       ORCtrls.FontWidthPixel
+ 0001:000072B8       ORCtrls.GetORCBBitmap
+ 0001:00012A70       ORCtrls.GoodNotifyWinEvent
+ 0001:000064D0       ORCtrls.HigherOf
+ 0001:000066A0       ORCtrls.IntArrayToString
+ 0001:00012BD8       ORCtrls.IsAMouseButtonDown
+ 0001:00006914       ORCtrls.ItemTipKeyHook
+ 0001:000064DC       ORCtrls.LowerOf
+ 0004:00000028       ORCtrls.ORCBImages
+ 0002:0000010C       ORCtrls.ORCtrls
+ 0001:000064E8       ORCtrls.Piece
+ 0001:00006980       ORCtrls.RemoveItemTipRef
+ 0001:000106D8       ORCtrls.RStr
+ 0001:00006578       ORCtrls.SetPiece
+ 0001:000068DC       ORCtrls.StringBetween
+ 0001:00006770       ORCtrls.StringToIntArray
+ 0001:00012584       ORCtrls.TCaptionCheckListBox.GetCaption
+ 0001:000125B0       ORCtrls.TCaptionCheckListBox.GetDynamicProperty
+ 0001:000125D4       ORCtrls.TCaptionCheckListBox.SetCaption
+ 0001:00012658       ORCtrls.TCaptionCheckListBox.SupportsDynamicProperty
+ 0001:0001291C       ORCtrls.TCaptionComboBox.GetCaption
+ 0001:00012948       ORCtrls.TCaptionComboBox.GetDynamicProperty
+ 0001:0001296C       ORCtrls.TCaptionComboBox.SetCaption
+ 0001:000129F0       ORCtrls.TCaptionComboBox.SupportsDynamicProperty
+ 0001:0001273C       ORCtrls.TCaptionEdit.GetCaption
+ 0001:00012768       ORCtrls.TCaptionEdit.GetDynamicProperty
+ 0001:0001278C       ORCtrls.TCaptionEdit.SetCaption
+ 0001:00012810       ORCtrls.TCaptionEdit.SupportsDynamicProperty
+ 0001:00012154       ORCtrls.TCaptionListBox.DoEnter
+ 0001:00012178       ORCtrls.TCaptionListBox.GetCaption
+ 0001:000121A4       ORCtrls.TCaptionListBox.GetDynamicProperty
+ 0001:00012204       ORCtrls.TCaptionListBox.MoveFocusDown
+ 0001:000121C8       ORCtrls.TCaptionListBox.MoveFocusUp
+ 0001:00012258       ORCtrls.TCaptionListBox.SetCaption
+ 0001:000122DC       ORCtrls.TCaptionListBox.SupportsDynamicProperty
+ 0001:000122E4       ORCtrls.TCaptionListBox.WMKeyDown
+ 0001:00012390       ORCtrls.TCaptionListBox.WMMouseMove
+ 0001:00012450       ORCtrls.TCaptionListBox.WMRButtonUp
+ 0001:00012E0C       ORCtrls.TCaptionListView.GetDynamicProperty
+ 0001:00012E30       ORCtrls.TCaptionListView.SupportsDynamicProperty
+ 0001:00012660       ORCtrls.TCaptionMemo.GetCaption
+ 0001:0001268C       ORCtrls.TCaptionMemo.GetDynamicProperty
+ 0001:000126B0       ORCtrls.TCaptionMemo.SetCaption
+ 0001:00012734       ORCtrls.TCaptionMemo.SupportsDynamicProperty
+ 0001:00012818       ORCtrls.TCaptionRichEdit.GetDynamicProperty
+ 0001:00012840       ORCtrls.TCaptionRichEdit.SupportsDynamicProperty
+ 0001:00012A78       ORCtrls.TCaptionStringGrid.ColRowToIndex
+ 0001:00012AC8       ORCtrls.TCaptionStringGrid.GetDynamicProperty
+ 0001:00012AF0       ORCtrls.TCaptionStringGrid.IndexToColRow
+ 0001:00012B54       ORCtrls.TCaptionStringGrid.KeyUp
+ 0001:00012BD0       ORCtrls.TCaptionStringGrid.SupportsDynamicProperty
+ 0001:00012848       ORCtrls.TCaptionTreeView.GetCaption
+ 0001:00012860       ORCtrls.TCaptionTreeView.GetDynamicProperty
+ 0001:00012884       ORCtrls.TCaptionTreeView.SetCaption
+ 0001:00012914       ORCtrls.TCaptionTreeView.SupportsDynamicProperty
+ 0001:000069B0       ORCtrls.TItemTip.Create
+ 0001:00006A40       ORCtrls.TItemTip.CreateParams
+ 0001:00006A04       ORCtrls.TItemTip.Destroy
+ 0001:00006B98       ORCtrls.TItemTip.GetTabSettings
+ 0001:00006B54       ORCtrls.TItemTip.Hide
+ 0001:00006A6C       ORCtrls.TItemTip.Paint
+ 0001:00006F6C       ORCtrls.TItemTip.Show
+ 0001:00006CC4       ORCtrls.TItemTip.UpdateText
+ 0001:00012028       ORCtrls.TKeyClickPanel.KeyDown
+ 0001:0001204C       ORCtrls.TKeyClickRadioGroup.Click
+ 0001:00012084       ORCtrls.TKeyClickRadioGroup.Create
+ 0001:000120E4       ORCtrls.TKeyClickRadioGroup.KeyDown
+ 0001:0000F7A8       ORCtrls.TORAlignButton.Create
+ 0001:0000F7F8       ORCtrls.TORAlignButton.CreateParams
+ 0001:0000F840       ORCtrls.TORAlignButton.SetAlignment
+ 0001:0000F858       ORCtrls.TORAlignButton.SetLayout
+ 0001:0000F870       ORCtrls.TORAlignButton.SetWordWrap
+ 0001:000129F8       ORCtrls.TORAlignSpeedButton.Paint
+ 0001:0000F1B4       ORCtrls.TORAutoPanel.BuildSizes
+ 0001:0000F13C       ORCtrls.TORAutoPanel.Destroy
+ 0001:0000F2E0       ORCtrls.TORAutoPanel.DoResize
+ 0001:0000F2AC       ORCtrls.TORAutoPanel.Loaded
+ 0001:0000F488       ORCtrls.TORAutoPanel.Resize
+ 0001:000105E0       ORCtrls.TORCBImageIndexes.Create
+ 0001:00010664       ORCtrls.TORCBImageIndexes.Destroy
+ 0001:00010714       ORCtrls.TORCBImageIndexes.IdxString
+ 0001:00010958       ORCtrls.TORCBImageIndexes.ImageListChanged
+ 0001:0001098C       ORCtrls.TORCBImageIndexes.Notification
+ 0001:000109BC       ORCtrls.TORCBImageIndexes.SetCheckedDisabledIndex
+ 0001:000109D0       ORCtrls.TORCBImageIndexes.SetCheckedEnabledIndex
+ 0001:000109E4       ORCtrls.TORCBImageIndexes.SetGrayedDisabledIndex
+ 0001:000109F8       ORCtrls.TORCBImageIndexes.SetGrayedEnabledIndex
+ 0001:000107F8       ORCtrls.TORCBImageIndexes.SetIdxString
+ 0001:00010698       ORCtrls.TORCBImageIndexes.SetImages
+ 0001:00010A0C       ORCtrls.TORCBImageIndexes.SetUncheckedDisabledIndex
+ 0001:00010A20       ORCtrls.TORCBImageIndexes.SetUncheckedEnabledIndex
+ 0001:00011844       ORCtrls.TORCheckBox.AutoAdjustSize
+ 0001:00011CC8       ORCtrls.TORCheckBox.BMGetCheck
+ 0001:00011CF4       ORCtrls.TORCheckBox.BMGetState
+ 0001:000116D0       ORCtrls.TORCheckBox.BMSetCheck
+ 0001:00010C48       ORCtrls.TORCheckBox.CMEnabledChanged
+ 0001:00010C64       ORCtrls.TORCheckBox.CMFontChanged
+ 0001:00010C80       ORCtrls.TORCheckBox.CNDrawItem
+ 0001:00010C9C       ORCtrls.TORCheckBox.CNMeasureItem
+ 0001:00010A34       ORCtrls.TORCheckBox.Create
+ 0001:00010ADC       ORCtrls.TORCheckBox.CreateCommon
+ 0001:00010C2C       ORCtrls.TORCheckBox.CreateParams
+ 0001:00010B0C       ORCtrls.TORCheckBox.Destroy
+ 0001:00011278       ORCtrls.TORCheckBox.DrawItem
+ 0001:00011A18       ORCtrls.TORCheckBox.GetCaption
+ 0001:00010CC0       ORCtrls.TORCheckBox.GetDrawData
+ 0001:00010B54       ORCtrls.TORCheckBox.GetImageIndexes
+ 0001:00010B70       ORCtrls.TORCheckBox.GetImageList
+ 0001:00010A90       ORCtrls.TORCheckBox.ListViewCreate
+ 0001:00011C80       ORCtrls.TORCheckBox.Notification
+ 0001:00011A9C       ORCtrls.TORCheckBox.SetAllowAllUnchecked
+ 0001:00011B88       ORCtrls.TORCheckBox.SetAssociate
+ 0001:00011800       ORCtrls.TORCheckBox.SetAutoSize
+ 0001:00011828       ORCtrls.TORCheckBox.SetBlackColorMode
+ 0001:00011A30       ORCtrls.TORCheckBox.SetCaption
+ 0001:00011CB4       ORCtrls.TORCheckBox.SetFocusOnBox
+ 0001:0001166C       ORCtrls.TORCheckBox.SetGrayedStyle
+ 0001:00011AAC       ORCtrls.TORCheckBox.SetGroupIndex
+ 0001:00010B7C       ORCtrls.TORCheckBox.SetImageIndexes
+ 0001:00010B8C       ORCtrls.TORCheckBox.SetImageList
+ 0001:00011B5C       ORCtrls.TORCheckBox.SetParent
+ 0001:00011B74       ORCtrls.TORCheckBox.SetRadioStyle
+ 0001:000117D8       ORCtrls.TORCheckBox.SetWordWrap
+ 0001:00011ADC       ORCtrls.TORCheckBox.SyncAllowAllUnchecked
+ 0001:00010B9C       ORCtrls.TORCheckBox.Toggle
+ 0001:00011C60       ORCtrls.TORCheckBox.UpdateAssociate
+ 0001:00011690       ORCtrls.TORCheckBox.WMLButtonDblClk
+ 0001:000116A8       ORCtrls.TORCheckBox.WMSize
+ 0001:0000E314       ORCtrls.TORComboBox.AddReference
+ 0001:0000CD84       ORCtrls.TORComboBox.AdjustSizeOfSelf
+ 0001:0000F01C       ORCtrls.TORComboBox.CheckBoxSelected
+ 0001:0000E378       ORCtrls.TORComboBox.Clear
+ 0001:0000CFD8       ORCtrls.TORComboBox.ClearDropDownStatus
+ 0001:0000E3A0       ORCtrls.TORComboBox.ClearTop
+ 0001:0000CCC4       ORCtrls.TORComboBox.CMFontChanged
+ 0001:0000CAF0       ORCtrls.TORComboBox.Create
+ 0001:0000CFF0       ORCtrls.TORComboBox.Destroy
+ 0001:0000D020       ORCtrls.TORComboBox.DoEnter
+ 0001:0000D078       ORCtrls.TORComboBox.DoExit
+ 0001:0000CF04       ORCtrls.TORComboBox.DropButtonDown
+ 0001:0000CF34       ORCtrls.TORComboBox.DropButtonUp
+ 0001:0000CF64       ORCtrls.TORComboBox.DropDownStatusChanged
+ 0001:0000EC74       ORCtrls.TORComboBox.DropPanelBtnPressed
+ 0001:0000CD70       ORCtrls.TORComboBox.EditControl
+ 0001:0000E3B0       ORCtrls.TORComboBox.ForDataUse
+ 0001:0000D174       ORCtrls.TORComboBox.FwdChange
+ 0001:0000D1A8       ORCtrls.TORComboBox.FwdChangeDelayed
+ 0001:0000D4B8       ORCtrls.TORComboBox.FwdClick
+ 0001:0000D60C       ORCtrls.TORComboBox.FwdDblClick
+ 0001:0000D630       ORCtrls.TORComboBox.FwdKeyDown
+ 0001:0000DA0C       ORCtrls.TORComboBox.FwdKeyPress
+ 0001:0000DA54       ORCtrls.TORComboBox.FwdKeyUp
+ 0001:0000DAC0       ORCtrls.TORComboBox.FwdMouseUp
+ 0001:0000DAE4       ORCtrls.TORComboBox.FwdNeedData
+ 0001:0000E54C       ORCtrls.TORComboBox.GetAutoSelect
+ 0001:0000F068       ORCtrls.TORComboBox.GetCaption
+ 0001:0000F084       ORCtrls.TORComboBox.GetCaseChanged
+ 0001:0000E9E8       ORCtrls.TORComboBox.GetCheckBoxes
+ 0001:0000E9F8       ORCtrls.TORComboBox.GetChecked
+ 0001:0000ECDC       ORCtrls.TORComboBox.GetCheckedString
+ 0001:0000EA08       ORCtrls.TORComboBox.GetCheckEntireLine
+ 0001:0000E55C       ORCtrls.TORComboBox.GetColor
+ 0001:0000E568       ORCtrls.TORComboBox.GetDelimiter
+ 0001:0000E578       ORCtrls.TORComboBox.GetDisplayText
+ 0001:0000E598       ORCtrls.TORComboBox.GetDynamicProperty
+ 0001:0000EE8C       ORCtrls.TORComboBox.GetEditBoxText
+ 0001:0000EE44       ORCtrls.TORComboBox.GetEnabled
+ 0001:0000EA18       ORCtrls.TORComboBox.GetFlatCheckBoxes
+ 0001:0000E728       ORCtrls.TORComboBox.GetHideSynonyms
+ 0001:0000E5CC       ORCtrls.TORComboBox.GetIEN
+ 0001:0000E5BC       ORCtrls.TORComboBox.GetItemHeight
+ 0001:0000E5F0       ORCtrls.TORComboBox.GetItemID
+ 0001:0000E60C       ORCtrls.TORComboBox.GetItemIEN
+ 0001:0000E630       ORCtrls.TORComboBox.GetItemIndex
+ 0001:0000E654       ORCtrls.TORComboBox.GetItemTipColor
+ 0001:0000E644       ORCtrls.TORComboBox.GetItemTipEnable
+ 0001:0000E664       ORCtrls.TORComboBox.GetLongList
+ 0001:0000F0A4       ORCtrls.TORComboBox.GetLookupPiece
+ 0001:0000E674       ORCtrls.TORComboBox.GetMaxLength
+ 0001:0000F050       ORCtrls.TORComboBox.GetMItems
+ 0001:0000EE0C       ORCtrls.TORComboBox.GetOnSynonymCheck
+ 0001:0000E684       ORCtrls.TORComboBox.GetPieces
+ 0001:0000E6A0       ORCtrls.TORComboBox.GetReference
+ 0001:0000E6C0       ORCtrls.TORComboBox.GetSelLength
+ 0001:0000E6D4       ORCtrls.TORComboBox.GetSelStart
+ 0001:0000E6E8       ORCtrls.TORComboBox.GetSelText
+ 0001:0000E708       ORCtrls.TORComboBox.GetShortCount
+ 0001:0000E718       ORCtrls.TORComboBox.GetSorted
+ 0001:0000E738       ORCtrls.TORComboBox.GetSynonymChars
+ 0001:0000E7D4       ORCtrls.TORComboBox.GetTabPosInPixels
+ 0001:0000E7B8       ORCtrls.TORComboBox.GetTabPositions
+ 0001:0000E7E4       ORCtrls.TORComboBox.GetText
+ 0001:0000E410       ORCtrls.TORComboBox.IndexOfReference
+ 0001:0000E3C0       ORCtrls.TORComboBox.InitLongList
+ 0001:0000E470       ORCtrls.TORComboBox.InsertReference
+ 0001:0000E4D8       ORCtrls.TORComboBox.InsertSeparator
+ 0001:0000E4E8       ORCtrls.TORComboBox.Invalidate
+ 0001:0000D0C0       ORCtrls.TORComboBox.LoadComboBoxImage
+ 0001:0000D158       ORCtrls.TORComboBox.Loaded
+ 0001:0000E800       ORCtrls.TORComboBox.SelectAll
+ 0001:0000E050       ORCtrls.TORComboBox.SelectByID
+ 0001:0000E024       ORCtrls.TORComboBox.SelectByIEN
+ 0001:0000E810       ORCtrls.TORComboBox.SetAutoSelect
+ 0001:0000E820       ORCtrls.TORComboBox.SetBlackColorMode
+ 0001:0000F058       ORCtrls.TORComboBox.SetCaption
+ 0001:0000F094       ORCtrls.TORComboBox.SetCaseChanged
+ 0001:0000ED08       ORCtrls.TORComboBox.SetCheckBoxEditColor
+ 0001:0000EA28       ORCtrls.TORComboBox.SetCheckBoxes
+ 0001:0000EC1C       ORCtrls.TORComboBox.SetChecked
+ 0001:0000ECF8       ORCtrls.TORComboBox.SetCheckedString
+ 0001:0000EC54       ORCtrls.TORComboBox.SetCheckEntireLine
+ 0001:0000E84C       ORCtrls.TORComboBox.SetColor
+ 0001:0000E884       ORCtrls.TORComboBox.SetDelimiter
+ 0001:0000DB5C       ORCtrls.TORComboBox.SetDropDownCount
+ 0001:0000DB68       ORCtrls.TORComboBox.SetDroppedDown
+ 0001:0000DDCC       ORCtrls.TORComboBox.SetEditRect
+ 0001:0000DE9C       ORCtrls.TORComboBox.SetEditText
+ 0001:0000EE50       ORCtrls.TORComboBox.SetEnabled
+ 0001:0000E074       ORCtrls.TORComboBox.SetExactByIEN
+ 0001:0000EC64       ORCtrls.TORComboBox.SetFlatCheckBoxes
+ 0001:0000E758       ORCtrls.TORComboBox.SetHideSynonyms
+ 0001:0000E894       ORCtrls.TORComboBox.SetItemHeight
+ 0001:0000DF40       ORCtrls.TORComboBox.SetItemIndex
+ 0001:0000E9D4       ORCtrls.TORComboBox.SetItems
+ 0001:0000E8B4       ORCtrls.TORComboBox.SetItemTipColor
+ 0001:0000E8A4       ORCtrls.TORComboBox.SetItemTipEnable
+ 0001:0000ED3C       ORCtrls.TORComboBox.SetListItemsOnly
+ 0001:0000E8C4       ORCtrls.TORComboBox.SetLongList
+ 0001:0000F0B4       ORCtrls.TORComboBox.SetLookupPiece
+ 0001:0000E8D4       ORCtrls.TORComboBox.SetMaxLength
+ 0001:00012C10       ORCtrls.TORComboBox.SetNumForMatch
+ 0001:0000ED5C       ORCtrls.TORComboBox.SetOnCheckedText
+ 0001:0000EE24       ORCtrls.TORComboBox.SetOnSynonymCheck
+ 0001:0000E8E4       ORCtrls.TORComboBox.SetPieces
+ 0001:0000E8F4       ORCtrls.TORComboBox.SetReference
+ 0001:0000E954       ORCtrls.TORComboBox.SetSelLength
+ 0001:0000E96C       ORCtrls.TORComboBox.SetSelStart
+ 0001:0000E984       ORCtrls.TORComboBox.SetSelText
+ 0001:0000E994       ORCtrls.TORComboBox.SetSorted
+ 0001:0000E0A0       ORCtrls.TORComboBox.SetStyle
+ 0001:0000E768       ORCtrls.TORComboBox.SetSynonymChars
+ 0001:0000E9B4       ORCtrls.TORComboBox.SetTabPosInPixels
+ 0001:0000E9A4       ORCtrls.TORComboBox.SetTabPositions
+ 0001:0000EDC4       ORCtrls.TORComboBox.SetTemplateField
+ 0001:0000E9C4       ORCtrls.TORComboBox.SetText
+ 0001:00012D90       ORCtrls.TORComboBox.SetTextAutoComplete
+ 0001:00012C38       ORCtrls.TORComboBox.SetUniqueAutoComplete
+ 0001:0000E270       ORCtrls.TORComboBox.StartKeyTimer
+ 0001:0000E2E0       ORCtrls.TORComboBox.StopKeyTimer
+ 0001:0000E30C       ORCtrls.TORComboBox.SupportsDynamicProperty
+ 0001:0000D048       ORCtrls.TORComboBox.UMGotFocus
+ 0001:0000EF9C       ORCtrls.TORComboBox.UpdateCheckEditBoxText
+ 0001:0000CC94       ORCtrls.TORComboBox.WMDestroy
+ 0001:0000CCDC       ORCtrls.TORComboBox.WMMove
+ 0001:0000CCF8       ORCtrls.TORComboBox.WMSize
+ 0001:0000CD10       ORCtrls.TORComboBox.WMTimer
+ 0001:0000C9F8       ORCtrls.TORComboEdit.CreateParams
+ 0001:0000CA18       ORCtrls.TORComboEdit.WMKillFocus
+ 0001:0000CA94       ORCtrls.TORComboEdit.WMSetFocus
+ 0001:00011F28       ORCtrls.TORComboPanelEdit.Destroy
+ 0001:00011F60       ORCtrls.TORComboPanelEdit.Paint
+ 0001:0000C568       ORCtrls.TORDropPanel.BtnClicked
+ 0001:0000C5A0       ORCtrls.TORDropPanel.Create
+ 0001:0000C618       ORCtrls.TORDropPanel.CreateParams
+ 0001:0000C658       ORCtrls.TORDropPanel.GetButton
+ 0001:0000C708       ORCtrls.TORDropPanel.ResetButtons
+ 0001:0000C73C       ORCtrls.TORDropPanel.Resize
+ 0001:0000C7D4       ORCtrls.TORDropPanel.UpdateButtons
+ 0001:0000C958       ORCtrls.TORDropPanel.WMActivateApp
+ 0001:0000A294       ORCtrls.TORListBox.AddReference
+ 0001:0000ABF8       ORCtrls.TORListBox.AdjustScrollBar
+ 0001:0000C400       ORCtrls.TORListBox.Clear
+ 0001:0000B25C       ORCtrls.TORListBox.ClearTop
+ 0001:00008E04       ORCtrls.TORListBox.Click
+ 0001:0000851C       ORCtrls.TORListBox.CMFontChanged
+ 0001:00008DA4       ORCtrls.TORListBox.CMHintShow
+ 0001:000093CC       ORCtrls.TORListBox.CNDrawItem
+ 0001:00007B30       ORCtrls.TORListBox.Create
+ 0001:00007C84       ORCtrls.TORListBox.CreateParams
+ 0001:0000AC94       ORCtrls.TORListBox.CreateScrollBar
+ 0001:00007C9C       ORCtrls.TORListBox.CreateWnd
+ 0001:00007C30       ORCtrls.TORListBox.Destroy
+ 0001:00008F18       ORCtrls.TORListBox.DestroyItems
+ 0001:00007D28       ORCtrls.TORListBox.DestroyWnd
+ 0001:00008E20       ORCtrls.TORListBox.DoChange
+ 0001:00008E8C       ORCtrls.TORListBox.DoEnter
+ 0001:00008ECC       ORCtrls.TORListBox.DoExit
+ 0001:000093F0       ORCtrls.TORListBox.DrawItem
+ 0001:0000AD68       ORCtrls.TORListBox.ForDataUse
+ 0001:0000AD44       ORCtrls.TORListBox.FreeScrollBar
+ 0001:0000C4C4       ORCtrls.TORListBox.GetCaption
+ 0001:0000C074       ORCtrls.TORListBox.GetChecked
+ 0001:0000C150       ORCtrls.TORListBox.GetCheckedState
+ 0001:0000C240       ORCtrls.TORListBox.GetCheckedString
+ 0001:00007F38       ORCtrls.TORListBox.GetDisplayText
+ 0001:00007F94       ORCtrls.TORListBox.GetDynamicProperty
+ 0001:00009D00       ORCtrls.TORListBox.GetIEN
+ 0001:0000985C       ORCtrls.TORListBox.GetIndexFromY
+ 0001:00009FC4       ORCtrls.TORListBox.GetItemID
+ 0001:00009DB0       ORCtrls.TORListBox.GetItemIEN
+ 0001:0000C384       ORCtrls.TORListBox.GetMItems
+ 0001:0000C214       ORCtrls.TORListBox.GetMultiSelect
+ 0001:0000A964       ORCtrls.TORListBox.GetPieces
+ 0001:0000A124       ORCtrls.TORListBox.GetReference
+ 0001:0000BBBC       ORCtrls.TORListBox.GetStringIndex
+ 0001:0000A918       ORCtrls.TORListBox.GetStyle
+ 0001:0000A428       ORCtrls.TORListBox.GetTabPositions
+ 0001:0000A378       ORCtrls.TORListBox.IndexOfReference
+ 0001:0000B020       ORCtrls.TORListBox.InitLongList
+ 0001:0000A304       ORCtrls.TORListBox.InsertReference
+ 0001:0000B1B4       ORCtrls.TORListBox.InsertSeparator
+ 0001:00007E44       ORCtrls.TORListBox.IsSynonym
+ 0001:00009084       ORCtrls.TORListBox.KeyPress
+ 0001:000081E8       ORCtrls.TORListBox.LBAddString
+ 0001:000083E0       ORCtrls.TORListBox.LBDeleteString
+ 0001:00007FB8       ORCtrls.TORListBox.LBGetItemData
+ 0001:00008078       ORCtrls.TORListBox.LBGetText
+ 0001:00008144       ORCtrls.TORListBox.LBGetTextLen
+ 0001:000082D4       ORCtrls.TORListBox.LBInsertString
+ 0001:00008464       ORCtrls.TORListBox.LBResetContent
+ 0001:00008500       ORCtrls.TORListBox.LBSetCurSel
+ 0001:00007FEC       ORCtrls.TORListBox.LBSetItemData
+ 0001:00007CF4       ORCtrls.TORListBox.Loaded
+ 0001:000092FC       ORCtrls.TORListBox.MeasureItem
+ 0001:000090B8       ORCtrls.TORListBox.MouseDown
+ 0001:0000913C       ORCtrls.TORListBox.MouseMove
+ 0001:0000B3B0       ORCtrls.TORListBox.NeedData
+ 0001:0000B6CC       ORCtrls.TORListBox.PositionThumb
+ 0001:0000A9A8       ORCtrls.TORListBox.ResetItems
+ 0001:0000B77C       ORCtrls.TORListBox.ScrollTo
+ 0001:0000A060       ORCtrls.TORListBox.SelectByID
+ 0001:00009E60       ORCtrls.TORListBox.SelectByIEN
+ 0001:0000BD04       ORCtrls.TORListBox.SelectString
+ 0001:0000C41C       ORCtrls.TORListBox.SetBlackColorMode
+ 0001:0000C424       ORCtrls.TORListBox.SetCaption
+ 0001:0000C008       ORCtrls.TORListBox.SetCheckBoxes
+ 0001:0000C0BC       ORCtrls.TORListBox.SetChecked
+ 0001:0000C18C       ORCtrls.TORListBox.SetCheckedState
+ 0001:0000C2E8       ORCtrls.TORListBox.SetCheckedString
+ 0001:0000A954       ORCtrls.TORListBox.SetDelimiter
+ 0001:00009EC4       ORCtrls.TORListBox.SetExactByIEN
+ 0001:0000C058       ORCtrls.TORListBox.SetFlatCheckBoxes
+ 0001:000098F0       ORCtrls.TORListBox.SetFocusIndex
+ 0001:0000A7C0       ORCtrls.TORListBox.SetHideSynonyms
+ 0001:0000ABC0       ORCtrls.TORListBox.SetLongList
+ 0001:0000C3BC       ORCtrls.TORListBox.SetMItems
+ 0001:0000C21C       ORCtrls.TORListBox.SetMultiSelect
+ 0001:0000A984       ORCtrls.TORListBox.SetPieces
+ 0001:0000A1C0       ORCtrls.TORListBox.SetReference
+ 0001:0000A920       ORCtrls.TORListBox.SetStyle
+ 0001:0000A884       ORCtrls.TORListBox.SetSynonymChars
+ 0001:0000A610       ORCtrls.TORListBox.SetTabPosInPixels
+ 0001:0000A464       ORCtrls.TORListBox.SetTabPositions
+ 0001:0000A628       ORCtrls.TORListBox.SetTabStops
+ 0001:0000A7B8       ORCtrls.TORListBox.SupportsDynamicProperty
+ 0001:00007D48       ORCtrls.TORListBox.TextToShow
+ 0001:00008F90       ORCtrls.TORListBox.ToggleCheckBox
+ 0001:00009BC8       ORCtrls.TORListBox.UMShowTip
+ 0001:00012C40       ORCtrls.TORListBox.VerifyUnique
+ 0001:00008CE4       ORCtrls.TORListBox.WMCancelMode
+ 0001:000093A0       ORCtrls.TORListBox.WMDestroy
+ 0001:00008554       ORCtrls.TORListBox.WMKeyDown
+ 0001:00008B1C       ORCtrls.TORListBox.WMLButtonDblClk
+ 0001:00008770       ORCtrls.TORListBox.WMLButtonDown
+ 0001:00008A24       ORCtrls.TORListBox.WMLButtonUp
+ 0001:00008D18       ORCtrls.TORListBox.WMMove
+ 0001:00008A6C       ORCtrls.TORListBox.WMRButtonUp
+ 0001:00008D38       ORCtrls.TORListBox.WMSize
+ 0001:00008D80       ORCtrls.TORListBox.WMVScroll
+ 0001:00011DC0       ORCtrls.TORListView.LVMSetColumn
+ 0001:00011E74       ORCtrls.TORListView.LVMSetColumnWidth
+ 0001:00011CF8       ORCtrls.TORListView.WMNotify
+ 0001:0000F544       ORCtrls.TOROffsetLabel.AdjustSizeOfSelf
+ 0001:0000F52C       ORCtrls.TOROffsetLabel.CMFontChanged
+ 0001:0000F514       ORCtrls.TOROffsetLabel.CMTextChanged
+ 0001:0000F4B4       ORCtrls.TOROffsetLabel.Create
+ 0001:0000F5E4       ORCtrls.TOROffsetLabel.DoDrawText
+ 0001:0000F720       ORCtrls.TOROffsetLabel.GetTransparent
+ 0001:0000F684       ORCtrls.TOROffsetLabel.Paint
+ 0001:0000F780       ORCtrls.TOROffsetLabel.SetHorzOffset
+ 0001:0000F72C       ORCtrls.TOROffsetLabel.SetTransparent
+ 0001:0000F770       ORCtrls.TOROffsetLabel.SetVertOffset
+ 0001:0000F790       ORCtrls.TOROffsetLabel.SetWordWrap
+ 0001:000073B0       ORCtrls.TORStrings.Add
+ 0001:00007430       ORCtrls.TORStrings.Clear
+ 0001:00007460       ORCtrls.TORStrings.Create
+ 0001:000074B8       ORCtrls.TORStrings.Delete
+ 0001:000074F0       ORCtrls.TORStrings.Destroy
+ 0001:00007524       ORCtrls.TORStrings.Get
+ 0001:0000754C       ORCtrls.TORStrings.GetCount
+ 0001:00007564       ORCtrls.TORStrings.GetObject
+ 0001:00007584       ORCtrls.TORStrings.IndexOf
+ 0001:000075A4       ORCtrls.TORStrings.Insert
+ 0001:0000762C       ORCtrls.TORStrings.Put
+ 0001:000076AC       ORCtrls.TORStrings.PutObject
+ 0001:000076C8       ORCtrls.TORStrings.SetUpdateState
+ 0001:000076E4       ORCtrls.TORStrings.Verify
+ 0001:0000F888       ORCtrls.TORTreeNode.EnsureVisible
+ 0001:0000F938       ORCtrls.TORTreeNode.GetBold
+ 0001:0000F974       ORCtrls.TORTreeNode.GetORTreeView
+ 0001:0000F990       ORCtrls.TORTreeNode.GetParent
+ 0001:0000F9AC       ORCtrls.TORTreeNode.GetText
+ 0001:0000F9C4       ORCtrls.TORTreeNode.SetBold
+ 0001:0000FDC0       ORCtrls.TORTreeNode.SetCaption
+ 0001:0000FA08       ORCtrls.TORTreeNode.SetPiece
+ 0001:0000FA4C       ORCtrls.TORTreeNode.SetStringData
+ 0001:0000FAF8       ORCtrls.TORTreeNode.SetText
+ 0001:0000FB04       ORCtrls.TORTreeNode.UpdateText
+ 0001:0000FE70       ORCtrls.TORTreeView.CNNotify
+ 0001:0000FEFC       ORCtrls.TORTreeView.Create
+ 0001:0000FF3C       ORCtrls.TORTreeView.CreateNode
+ 0001:0000FFD8       ORCtrls.TORTreeView.FindPieceNode
+ 0001:0000FF78       ORCtrls.TORTreeView.FindPieceNode
+ 0001:000100C0       ORCtrls.TORTreeView.GetExpandedIDStr
+ 0001:0001034C       ORCtrls.TORTreeView.GetHorzScrollPos
+ 0001:000104E4       ORCtrls.TORTreeView.GetNodeID
+ 0001:0001050C       ORCtrls.TORTreeView.GetNodeID
+ 0001:00010364       ORCtrls.TORTreeView.GetVertScrollPos
+ 0001:0001037C       ORCtrls.TORTreeView.RenameNodes
+ 0001:000101CC       ORCtrls.TORTreeView.SetExpandedIDStr
+ 0001:000101BC       ORCtrls.TORTreeView.SetExpandedIDStr
+ 0001:00010454       ORCtrls.TORTreeView.SetHorzScrollPos
+ 0001:0001043C       ORCtrls.TORTreeView.SetNodeDelim
+ 0001:00010490       ORCtrls.TORTreeView.SetNodePiece
+ 0001:000105D0       ORCtrls.TORTreeView.SetShortNodeCaptions
+ 0001:000104A8       ORCtrls.TORTreeView.SetVertScrollPos
+ 0001:0000F0C4       ORCtrls.TSizeRatio.Create
+ 0003:00000244       ORCtrls.uDropPanelOpenCount
+ 0004:0000001C       ORCtrls.uItemTip
+ 0004:00000020       ORCtrls.uItemTipCount
+ 0004:00000018       ORCtrls.uKeyHookHandle
+ 0004:00000024       ORCtrls.uNewStyle
+ 0004:000000A8       ORCtrls.uOldShowHintsSetting
+ 0004:000000AC       ORCtrlsDsgn..3
+ 0001:000130D0       ORCtrlsDsgn..TORImageIndexesElementPropertyEditor
+ 0001:00012FE0       ORCtrlsDsgn..TORImageIndexesPropertyEditor
+ 0001:00013694       ORCtrlsDsgn.Finalization
+ 0002:000001D8       ORCtrlsDsgn.ORCtrlsDsgn
+ 0001:0001358C       ORCtrlsDsgn.Register
+ 0001:00013240       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.Create
+ 0001:000132C8       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.GetAttributes
+ 0001:000132D4       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.GetName
+ 0001:00013410       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.GetValue
+ 0001:0001328C       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.ParentImgIdx
+ 0001:000134D8       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.SetValue
+ 0001:000131DC       ORCtrlsDsgn.TORImageIndexesPropertyEditor.GetAttributes
+ 0001:000131E8       ORCtrlsDsgn.TORImageIndexesPropertyEditor.GetProperties
+ 0001:0001321C       ORCtrlsDsgn.TORImageIndexesPropertyEditor.GetValue
+ 0001:000131D0       ORCtrlsDsgn.TORImageIndexesPropertyEditor.Modified
+ 0001:00013234       ORCtrlsDsgn.TORImageIndexesPropertyEditor.SetValue
+ 0001:00000300       SysInit.@InitPkg
+ 0001:00000364       SysInit.@PackageLoad
+ 0001:00000370       SysInit.@PackageUnload
+ 0001:000001F0       SysInit.AllocTlsBuffer
+ 0001:000002AC       SysInit.ExitProcessTLS
+ 0001:00000274       SysInit.ExitThreadTLS
+ 0001:000001B8       SysInit.FreeLibrary
+ 0001:000001FC       SysInit.GetTlsSize
+ 0004:00000004       SysInit.HInstance
+ 0001:000002D0       SysInit.InitializeModule
+ 0001:00000248       SysInit.InitProcessTLS
+ 0001:00000204       SysInit.InitThreadTLS
+ 0001:000001C0       SysInit.LocalAlloc
+ 0001:000001C8       SysInit.LocalFree
+ 0003:00000008       SysInit.Module
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0003:00000004       SysInit.PtrToNil
+ 0001:000001D0       SysInit.TlsAlloc
+ 0004:00000008       SysInit.tlsBuffer
+ 0001:000001D8       SysInit.TlsFree
+ 0001:000001E0       SysInit.TlsGetValue
+ 0003:00000000       SysInit.TlsIndex
+ 0005:00000000       SysInit.TlsLast
+ 0003:00000020       SysInit.TlsProc
+ 0001:000001E8       SysInit.TlsSetValue
+ 0001:000002DC       SysInit.UninitializeModule
+ 0004:0000000C       Windows..3
+ 0001:00000480       Windows.CallNextHookEx
+ 0001:00000488       Windows.DrawText
+ 0001:00000594       Windows.Finalization
+ 0001:00000448       Windows.FreeLibrary
+ 0001:00000450       Windows.GetCurrentThreadId
+ 0001:00000490       Windows.GetCursorPos
+ 0001:00000498       Windows.GetDC
+ 0001:000004A0       Windows.GetDesktopWindow
+ 0001:000004A8       Windows.GetKeyState
+ 0001:000004B0       Windows.GetScrollPos
+ 0001:000004B8       Windows.GetSystemMetrics
+ 0001:000004C0       Windows.GetTabbedTextExtent
+ 0001:00000460       Windows.GetTextExtentPoint32
+ 0001:00000468       Windows.GetTextMetrics
+ 0001:00000458       Windows.GetVersion
+ 0001:000004C8       Windows.GetWindowDC
+ 0001:000004D0       Windows.HideCaret
+ 0004:00000010       Windows.HtmlHelpModule
+ 0001:000004D8       Windows.InflateRect
+ 0001:000004E0       Windows.IntersectRect
+ 0001:000004E8       Windows.InvalidateRect
+ 0001:000004F0       Windows.KillTimer
+ 0001:00000558       Windows.MakeLong
+ 0001:00000588       Windows.MakeLParam
+ 0001:0000057C       Windows.MakeWParam
+ 0001:000004F8       Windows.OffsetRect
+ 0001:00000564       Windows.PointToSmallPoint
+ 0001:00000500       Windows.PostMessage
+ 0001:00000508       Windows.PtInRect
+ 0001:00000510       Windows.ReleaseDC
+ 0001:00000470       Windows.SelectObject
+ 0001:00000518       Windows.SendMessage
+ 0001:00000478       Windows.SetBkMode
+ 0001:00000520       Windows.SetTimer
+ 0001:00000528       Windows.SetWindowPos
+ 0001:00000530       Windows.SetWindowsHookEx
+ 0001:00000538       Windows.ShowWindow
+ 0001:00000540       Windows.SystemParametersInfo
+ 0001:00000548       Windows.TabbedTextOut
+ 0001:00000550       Windows.UnhookWindowsHookEx
+ 0002:00000008       Windows.Windows
+
+
+  Address             Publics by Value
+
+ 0001:000001B8       SysInit.FreeLibrary
+ 0001:000001C0       SysInit.LocalAlloc
+ 0001:000001C8       SysInit.LocalFree
+ 0001:000001D0       SysInit.TlsAlloc
+ 0001:000001D8       SysInit.TlsFree
+ 0001:000001E0       SysInit.TlsGetValue
+ 0001:000001E8       SysInit.TlsSetValue
+ 0001:000001F0       SysInit.AllocTlsBuffer
+ 0001:000001FC       SysInit.GetTlsSize
+ 0001:00000204       SysInit.InitThreadTLS
+ 0001:00000248       SysInit.InitProcessTLS
+ 0001:00000274       SysInit.ExitThreadTLS
+ 0001:000002AC       SysInit.ExitProcessTLS
+ 0001:000002D0       SysInit.InitializeModule
+ 0001:000002DC       SysInit.UninitializeModule
+ 0001:00000300       SysInit.@InitPkg
+ 0001:00000364       SysInit.@PackageLoad
+ 0001:00000370       SysInit.@PackageUnload
+ 0001:00000448       Windows.FreeLibrary
+ 0001:00000450       Windows.GetCurrentThreadId
+ 0001:00000458       Windows.GetVersion
+ 0001:00000460       Windows.GetTextExtentPoint32
+ 0001:00000468       Windows.GetTextMetrics
+ 0001:00000470       Windows.SelectObject
+ 0001:00000478       Windows.SetBkMode
+ 0001:00000480       Windows.CallNextHookEx
+ 0001:00000488       Windows.DrawText
+ 0001:00000490       Windows.GetCursorPos
+ 0001:00000498       Windows.GetDC
+ 0001:000004A0       Windows.GetDesktopWindow
+ 0001:000004A8       Windows.GetKeyState
+ 0001:000004B0       Windows.GetScrollPos
+ 0001:000004B8       Windows.GetSystemMetrics
+ 0001:000004C0       Windows.GetTabbedTextExtent
+ 0001:000004C8       Windows.GetWindowDC
+ 0001:000004D0       Windows.HideCaret
+ 0001:000004D8       Windows.InflateRect
+ 0001:000004E0       Windows.IntersectRect
+ 0001:000004E8       Windows.InvalidateRect
+ 0001:000004F0       Windows.KillTimer
+ 0001:000004F8       Windows.OffsetRect
+ 0001:00000500       Windows.PostMessage
+ 0001:00000508       Windows.PtInRect
+ 0001:00000510       Windows.ReleaseDC
+ 0001:00000518       Windows.SendMessage
+ 0001:00000520       Windows.SetTimer
+ 0001:00000528       Windows.SetWindowPos
+ 0001:00000530       Windows.SetWindowsHookEx
+ 0001:00000538       Windows.ShowWindow
+ 0001:00000540       Windows.SystemParametersInfo
+ 0001:00000548       Windows.TabbedTextOut
+ 0001:00000550       Windows.UnhookWindowsHookEx
+ 0001:00000558       Windows.MakeLong
+ 0001:00000564       Windows.PointToSmallPoint
+ 0001:0000057C       Windows.MakeWParam
+ 0001:00000588       Windows.MakeLParam
+ 0001:00000594       Windows.Finalization
+ 0001:00000D68       CommCtrl.TreeView_GetItem
+ 0001:00000D80       CommCtrl.TreeView_SetItem
+ 0001:00001778       ORCtrls..TORStrings
+ 0001:00001B64       ORCtrls..TORListBox
+ 0001:00002104       ORCtrls..TORDropPanel
+ 0001:000022B0       ORCtrls..TORComboPanelEdit
+ 0001:00002418       ORCtrls..TORComboEdit
+ 0001:00002678       ORCtrls..TORComboBox
+ 0001:000030C0       ORCtrls..TORAutoPanel
+ 0001:00003228       ORCtrls..TOROffsetLabel
+ 0001:000036B0       ORCtrls..TORAlignButton
+ 0001:000038A0       ORCtrls..TORAlignSpeedButton
+ 0001:00003A04       ORCtrls..TORAlignEdit
+ 0001:00003C70       ORCtrls..TCaptionTreeView
+ 0001:00003E4C       ORCtrls..TORTreeNode
+ 0001:00003F40       ORCtrls..TORTreeView
+ 0001:00004230       ORCtrls..TORCBImageIndexes
+ 0001:000044C0       ORCtrls..TORCheckBox
+ 0001:00004878       ORCtrls..TORListView
+ 0001:00004A48       ORCtrls..TORPopupMenu
+ 0001:00004B20       ORCtrls..TORMenuItem
+ 0001:00004BFC       ORCtrls..TKeyClickPanel
+ 0001:00004D64       ORCtrls..TKeyClickRadioGroup
+ 0001:00004F5C       ORCtrls..TCaptionListBox
+ 0001:00005200       ORCtrls..TCaptionCheckListBox
+ 0001:00005444       ORCtrls..TCaptionMemo
+ 0001:00005660       ORCtrls..TCaptionEdit
+ 0001:00005894       ORCtrls..TCaptionRichEdit
+ 0001:00005AF0       ORCtrls..TCaptionComboBox
+ 0001:00005D44       ORCtrls..TCaptionListView
+ 0001:00005FA4       ORCtrls..TCaptionStringGrid
+ 0001:0000618C       ORCtrls..TItemTip
+ 0001:000062E4       ORCtrls..TSizeRatio
+ 0001:0000633C       ORCtrls.ClientWidthOfList
+ 0001:00006380       ORCtrls.FontWidthPixel
+ 0001:0000648C       ORCtrls.FontHeightPixel
+ 0001:000064D0       ORCtrls.HigherOf
+ 0001:000064DC       ORCtrls.LowerOf
+ 0001:000064E8       ORCtrls.Piece
+ 0001:00006578       ORCtrls.SetPiece
+ 0001:000066A0       ORCtrls.IntArrayToString
+ 0001:00006770       ORCtrls.StringToIntArray
+ 0001:000068DC       ORCtrls.StringBetween
+ 0001:00006914       ORCtrls.ItemTipKeyHook
+ 0001:00006948       ORCtrls.AddItemTipRef
+ 0001:00006980       ORCtrls.RemoveItemTipRef
+ 0001:000069B0       ORCtrls.TItemTip.Create
+ 0001:00006A04       ORCtrls.TItemTip.Destroy
+ 0001:00006A40       ORCtrls.TItemTip.CreateParams
+ 0001:00006A6C       ORCtrls.TItemTip.Paint
+ 0001:00006B54       ORCtrls.TItemTip.Hide
+ 0001:00006B98       ORCtrls.TItemTip.GetTabSettings
+ 0001:00006CC4       ORCtrls.TItemTip.UpdateText
+ 0001:00006F6C       ORCtrls.TItemTip.Show
+ 0001:000072B8       ORCtrls.GetORCBBitmap
+ 0001:0000737C       ORCtrls.DestroyORCBBitmaps
+ 0001:000073B0       ORCtrls.TORStrings.Add
+ 0001:00007430       ORCtrls.TORStrings.Clear
+ 0001:00007460       ORCtrls.TORStrings.Create
+ 0001:000074B8       ORCtrls.TORStrings.Delete
+ 0001:000074F0       ORCtrls.TORStrings.Destroy
+ 0001:00007524       ORCtrls.TORStrings.Get
+ 0001:0000754C       ORCtrls.TORStrings.GetCount
+ 0001:00007564       ORCtrls.TORStrings.GetObject
+ 0001:00007584       ORCtrls.TORStrings.IndexOf
+ 0001:000075A4       ORCtrls.TORStrings.Insert
+ 0001:0000762C       ORCtrls.TORStrings.Put
+ 0001:000076AC       ORCtrls.TORStrings.PutObject
+ 0001:000076C8       ORCtrls.TORStrings.SetUpdateState
+ 0001:000076E4       ORCtrls.TORStrings.Verify
+ 0001:00007B30       ORCtrls.TORListBox.Create
+ 0001:00007C30       ORCtrls.TORListBox.Destroy
+ 0001:00007C84       ORCtrls.TORListBox.CreateParams
+ 0001:00007C9C       ORCtrls.TORListBox.CreateWnd
+ 0001:00007CF4       ORCtrls.TORListBox.Loaded
+ 0001:00007D28       ORCtrls.TORListBox.DestroyWnd
+ 0001:00007D48       ORCtrls.TORListBox.TextToShow
+ 0001:00007E44       ORCtrls.TORListBox.IsSynonym
+ 0001:00007F38       ORCtrls.TORListBox.GetDisplayText
+ 0001:00007F94       ORCtrls.TORListBox.GetDynamicProperty
+ 0001:00007FB8       ORCtrls.TORListBox.LBGetItemData
+ 0001:00007FEC       ORCtrls.TORListBox.LBSetItemData
+ 0001:00008078       ORCtrls.TORListBox.LBGetText
+ 0001:00008144       ORCtrls.TORListBox.LBGetTextLen
+ 0001:000081E8       ORCtrls.TORListBox.LBAddString
+ 0001:000082D4       ORCtrls.TORListBox.LBInsertString
+ 0001:000083E0       ORCtrls.TORListBox.LBDeleteString
+ 0001:00008464       ORCtrls.TORListBox.LBResetContent
+ 0001:00008500       ORCtrls.TORListBox.LBSetCurSel
+ 0001:0000851C       ORCtrls.TORListBox.CMFontChanged
+ 0001:00008554       ORCtrls.TORListBox.WMKeyDown
+ 0001:00008770       ORCtrls.TORListBox.WMLButtonDown
+ 0001:00008A24       ORCtrls.TORListBox.WMLButtonUp
+ 0001:00008A6C       ORCtrls.TORListBox.WMRButtonUp
+ 0001:00008B1C       ORCtrls.TORListBox.WMLButtonDblClk
+ 0001:00008CE4       ORCtrls.TORListBox.WMCancelMode
+ 0001:00008D18       ORCtrls.TORListBox.WMMove
+ 0001:00008D38       ORCtrls.TORListBox.WMSize
+ 0001:00008D80       ORCtrls.TORListBox.WMVScroll
+ 0001:00008DA4       ORCtrls.TORListBox.CMHintShow
+ 0001:00008E04       ORCtrls.TORListBox.Click
+ 0001:00008E20       ORCtrls.TORListBox.DoChange
+ 0001:00008E8C       ORCtrls.TORListBox.DoEnter
+ 0001:00008ECC       ORCtrls.TORListBox.DoExit
+ 0001:00008F18       ORCtrls.TORListBox.DestroyItems
+ 0001:00008F90       ORCtrls.TORListBox.ToggleCheckBox
+ 0001:00009084       ORCtrls.TORListBox.KeyPress
+ 0001:000090B8       ORCtrls.TORListBox.MouseDown
+ 0001:0000913C       ORCtrls.TORListBox.MouseMove
+ 0001:000092FC       ORCtrls.TORListBox.MeasureItem
+ 0001:000093A0       ORCtrls.TORListBox.WMDestroy
+ 0001:000093CC       ORCtrls.TORListBox.CNDrawItem
+ 0001:000093F0       ORCtrls.TORListBox.DrawItem
+ 0001:0000985C       ORCtrls.TORListBox.GetIndexFromY
+ 0001:000098F0       ORCtrls.TORListBox.SetFocusIndex
+ 0001:00009BC8       ORCtrls.TORListBox.UMShowTip
+ 0001:00009D00       ORCtrls.TORListBox.GetIEN
+ 0001:00009DB0       ORCtrls.TORListBox.GetItemIEN
+ 0001:00009E60       ORCtrls.TORListBox.SelectByIEN
+ 0001:00009EC4       ORCtrls.TORListBox.SetExactByIEN
+ 0001:00009FC4       ORCtrls.TORListBox.GetItemID
+ 0001:0000A060       ORCtrls.TORListBox.SelectByID
+ 0001:0000A124       ORCtrls.TORListBox.GetReference
+ 0001:0000A1C0       ORCtrls.TORListBox.SetReference
+ 0001:0000A294       ORCtrls.TORListBox.AddReference
+ 0001:0000A304       ORCtrls.TORListBox.InsertReference
+ 0001:0000A378       ORCtrls.TORListBox.IndexOfReference
+ 0001:0000A428       ORCtrls.TORListBox.GetTabPositions
+ 0001:0000A464       ORCtrls.TORListBox.SetTabPositions
+ 0001:0000A610       ORCtrls.TORListBox.SetTabPosInPixels
+ 0001:0000A628       ORCtrls.TORListBox.SetTabStops
+ 0001:0000A7B8       ORCtrls.TORListBox.SupportsDynamicProperty
+ 0001:0000A7C0       ORCtrls.TORListBox.SetHideSynonyms
+ 0001:0000A884       ORCtrls.TORListBox.SetSynonymChars
+ 0001:0000A918       ORCtrls.TORListBox.GetStyle
+ 0001:0000A920       ORCtrls.TORListBox.SetStyle
+ 0001:0000A954       ORCtrls.TORListBox.SetDelimiter
+ 0001:0000A964       ORCtrls.TORListBox.GetPieces
+ 0001:0000A984       ORCtrls.TORListBox.SetPieces
+ 0001:0000A9A8       ORCtrls.TORListBox.ResetItems
+ 0001:0000ABC0       ORCtrls.TORListBox.SetLongList
+ 0001:0000ABF8       ORCtrls.TORListBox.AdjustScrollBar
+ 0001:0000AC94       ORCtrls.TORListBox.CreateScrollBar
+ 0001:0000AD44       ORCtrls.TORListBox.FreeScrollBar
+ 0001:0000AD68       ORCtrls.TORListBox.ForDataUse
+ 0001:0000B020       ORCtrls.TORListBox.InitLongList
+ 0001:0000B1B4       ORCtrls.TORListBox.InsertSeparator
+ 0001:0000B25C       ORCtrls.TORListBox.ClearTop
+ 0001:0000B2C0       ORCtrls.ClearLong
+ 0001:0000B3B0       ORCtrls.TORListBox.NeedData
+ 0001:0000B6CC       ORCtrls.TORListBox.PositionThumb
+ 0001:0000B77C       ORCtrls.TORListBox.ScrollTo
+ 0001:0000BBBC       ORCtrls.TORListBox.GetStringIndex
+ 0001:0000BD04       ORCtrls.TORListBox.SelectString
+ 0001:0000C008       ORCtrls.TORListBox.SetCheckBoxes
+ 0001:0000C058       ORCtrls.TORListBox.SetFlatCheckBoxes
+ 0001:0000C074       ORCtrls.TORListBox.GetChecked
+ 0001:0000C0BC       ORCtrls.TORListBox.SetChecked
+ 0001:0000C150       ORCtrls.TORListBox.GetCheckedState
+ 0001:0000C18C       ORCtrls.TORListBox.SetCheckedState
+ 0001:0000C214       ORCtrls.TORListBox.GetMultiSelect
+ 0001:0000C21C       ORCtrls.TORListBox.SetMultiSelect
+ 0001:0000C240       ORCtrls.TORListBox.GetCheckedString
+ 0001:0000C2E8       ORCtrls.TORListBox.SetCheckedString
+ 0001:0000C384       ORCtrls.TORListBox.GetMItems
+ 0001:0000C3BC       ORCtrls.TORListBox.SetMItems
+ 0001:0000C400       ORCtrls.TORListBox.Clear
+ 0001:0000C41C       ORCtrls.TORListBox.SetBlackColorMode
+ 0001:0000C424       ORCtrls.TORListBox.SetCaption
+ 0001:0000C4C4       ORCtrls.TORListBox.GetCaption
+ 0001:0000C4E0       ORCtrls.DropDownPanelOpened
+ 0001:0000C520       ORCtrls.DropDownPanelClosed
+ 0001:0000C568       ORCtrls.TORDropPanel.BtnClicked
+ 0001:0000C5A0       ORCtrls.TORDropPanel.Create
+ 0001:0000C618       ORCtrls.TORDropPanel.CreateParams
+ 0001:0000C658       ORCtrls.TORDropPanel.GetButton
+ 0001:0000C708       ORCtrls.TORDropPanel.ResetButtons
+ 0001:0000C73C       ORCtrls.TORDropPanel.Resize
+ 0001:0000C7D4       ORCtrls.TORDropPanel.UpdateButtons
+ 0001:0000C958       ORCtrls.TORDropPanel.WMActivateApp
+ 0001:0000C9F8       ORCtrls.TORComboEdit.CreateParams
+ 0001:0000CA18       ORCtrls.TORComboEdit.WMKillFocus
+ 0001:0000CA94       ORCtrls.TORComboEdit.WMSetFocus
+ 0001:0000CAF0       ORCtrls.TORComboBox.Create
+ 0001:0000CC94       ORCtrls.TORComboBox.WMDestroy
+ 0001:0000CCC4       ORCtrls.TORComboBox.CMFontChanged
+ 0001:0000CCDC       ORCtrls.TORComboBox.WMMove
+ 0001:0000CCF8       ORCtrls.TORComboBox.WMSize
+ 0001:0000CD10       ORCtrls.TORComboBox.WMTimer
+ 0001:0000CD70       ORCtrls.TORComboBox.EditControl
+ 0001:0000CD84       ORCtrls.TORComboBox.AdjustSizeOfSelf
+ 0001:0000CF04       ORCtrls.TORComboBox.DropButtonDown
+ 0001:0000CF34       ORCtrls.TORComboBox.DropButtonUp
+ 0001:0000CF64       ORCtrls.TORComboBox.DropDownStatusChanged
+ 0001:0000CFD8       ORCtrls.TORComboBox.ClearDropDownStatus
+ 0001:0000CFF0       ORCtrls.TORComboBox.Destroy
+ 0001:0000D020       ORCtrls.TORComboBox.DoEnter
+ 0001:0000D048       ORCtrls.TORComboBox.UMGotFocus
+ 0001:0000D078       ORCtrls.TORComboBox.DoExit
+ 0001:0000D0C0       ORCtrls.TORComboBox.LoadComboBoxImage
+ 0001:0000D158       ORCtrls.TORComboBox.Loaded
+ 0001:0000D174       ORCtrls.TORComboBox.FwdChange
+ 0001:0000D1A8       ORCtrls.TORComboBox.FwdChangeDelayed
+ 0001:0000D4B8       ORCtrls.TORComboBox.FwdClick
+ 0001:0000D60C       ORCtrls.TORComboBox.FwdDblClick
+ 0001:0000D630       ORCtrls.TORComboBox.FwdKeyDown
+ 0001:0000DA0C       ORCtrls.TORComboBox.FwdKeyPress
+ 0001:0000DA54       ORCtrls.TORComboBox.FwdKeyUp
+ 0001:0000DAC0       ORCtrls.TORComboBox.FwdMouseUp
+ 0001:0000DAE4       ORCtrls.TORComboBox.FwdNeedData
+ 0001:0000DB5C       ORCtrls.TORComboBox.SetDropDownCount
+ 0001:0000DB68       ORCtrls.TORComboBox.SetDroppedDown
+ 0001:0000DDCC       ORCtrls.TORComboBox.SetEditRect
+ 0001:0000DE9C       ORCtrls.TORComboBox.SetEditText
+ 0001:0000DF40       ORCtrls.TORComboBox.SetItemIndex
+ 0001:0000E024       ORCtrls.TORComboBox.SelectByIEN
+ 0001:0000E050       ORCtrls.TORComboBox.SelectByID
+ 0001:0000E074       ORCtrls.TORComboBox.SetExactByIEN
+ 0001:0000E0A0       ORCtrls.TORComboBox.SetStyle
+ 0001:0000E270       ORCtrls.TORComboBox.StartKeyTimer
+ 0001:0000E2E0       ORCtrls.TORComboBox.StopKeyTimer
+ 0001:0000E30C       ORCtrls.TORComboBox.SupportsDynamicProperty
+ 0001:0000E314       ORCtrls.TORComboBox.AddReference
+ 0001:0000E378       ORCtrls.TORComboBox.Clear
+ 0001:0000E3A0       ORCtrls.TORComboBox.ClearTop
+ 0001:0000E3B0       ORCtrls.TORComboBox.ForDataUse
+ 0001:0000E3C0       ORCtrls.TORComboBox.InitLongList
+ 0001:0000E410       ORCtrls.TORComboBox.IndexOfReference
+ 0001:0000E470       ORCtrls.TORComboBox.InsertReference
+ 0001:0000E4D8       ORCtrls.TORComboBox.InsertSeparator
+ 0001:0000E4E8       ORCtrls.TORComboBox.Invalidate
+ 0001:0000E54C       ORCtrls.TORComboBox.GetAutoSelect
+ 0001:0000E55C       ORCtrls.TORComboBox.GetColor
+ 0001:0000E568       ORCtrls.TORComboBox.GetDelimiter
+ 0001:0000E578       ORCtrls.TORComboBox.GetDisplayText
+ 0001:0000E598       ORCtrls.TORComboBox.GetDynamicProperty
+ 0001:0000E5BC       ORCtrls.TORComboBox.GetItemHeight
+ 0001:0000E5CC       ORCtrls.TORComboBox.GetIEN
+ 0001:0000E5F0       ORCtrls.TORComboBox.GetItemID
+ 0001:0000E60C       ORCtrls.TORComboBox.GetItemIEN
+ 0001:0000E630       ORCtrls.TORComboBox.GetItemIndex
+ 0001:0000E644       ORCtrls.TORComboBox.GetItemTipEnable
+ 0001:0000E654       ORCtrls.TORComboBox.GetItemTipColor
+ 0001:0000E664       ORCtrls.TORComboBox.GetLongList
+ 0001:0000E674       ORCtrls.TORComboBox.GetMaxLength
+ 0001:0000E684       ORCtrls.TORComboBox.GetPieces
+ 0001:0000E6A0       ORCtrls.TORComboBox.GetReference
+ 0001:0000E6C0       ORCtrls.TORComboBox.GetSelLength
+ 0001:0000E6D4       ORCtrls.TORComboBox.GetSelStart
+ 0001:0000E6E8       ORCtrls.TORComboBox.GetSelText
+ 0001:0000E708       ORCtrls.TORComboBox.GetShortCount
+ 0001:0000E718       ORCtrls.TORComboBox.GetSorted
+ 0001:0000E728       ORCtrls.TORComboBox.GetHideSynonyms
+ 0001:0000E738       ORCtrls.TORComboBox.GetSynonymChars
+ 0001:0000E758       ORCtrls.TORComboBox.SetHideSynonyms
+ 0001:0000E768       ORCtrls.TORComboBox.SetSynonymChars
+ 0001:0000E7B8       ORCtrls.TORComboBox.GetTabPositions
+ 0001:0000E7D4       ORCtrls.TORComboBox.GetTabPosInPixels
+ 0001:0000E7E4       ORCtrls.TORComboBox.GetText
+ 0001:0000E800       ORCtrls.TORComboBox.SelectAll
+ 0001:0000E810       ORCtrls.TORComboBox.SetAutoSelect
+ 0001:0000E820       ORCtrls.TORComboBox.SetBlackColorMode
+ 0001:0000E84C       ORCtrls.TORComboBox.SetColor
+ 0001:0000E884       ORCtrls.TORComboBox.SetDelimiter
+ 0001:0000E894       ORCtrls.TORComboBox.SetItemHeight
+ 0001:0000E8A4       ORCtrls.TORComboBox.SetItemTipEnable
+ 0001:0000E8B4       ORCtrls.TORComboBox.SetItemTipColor
+ 0001:0000E8C4       ORCtrls.TORComboBox.SetLongList
+ 0001:0000E8D4       ORCtrls.TORComboBox.SetMaxLength
+ 0001:0000E8E4       ORCtrls.TORComboBox.SetPieces
+ 0001:0000E8F4       ORCtrls.TORComboBox.SetReference
+ 0001:0000E954       ORCtrls.TORComboBox.SetSelLength
+ 0001:0000E96C       ORCtrls.TORComboBox.SetSelStart
+ 0001:0000E984       ORCtrls.TORComboBox.SetSelText
+ 0001:0000E994       ORCtrls.TORComboBox.SetSorted
+ 0001:0000E9A4       ORCtrls.TORComboBox.SetTabPositions
+ 0001:0000E9B4       ORCtrls.TORComboBox.SetTabPosInPixels
+ 0001:0000E9C4       ORCtrls.TORComboBox.SetText
+ 0001:0000E9D4       ORCtrls.TORComboBox.SetItems
+ 0001:0000E9E8       ORCtrls.TORComboBox.GetCheckBoxes
+ 0001:0000E9F8       ORCtrls.TORComboBox.GetChecked
+ 0001:0000EA08       ORCtrls.TORComboBox.GetCheckEntireLine
+ 0001:0000EA18       ORCtrls.TORComboBox.GetFlatCheckBoxes
+ 0001:0000EA28       ORCtrls.TORComboBox.SetCheckBoxes
+ 0001:0000EC1C       ORCtrls.TORComboBox.SetChecked
+ 0001:0000EC54       ORCtrls.TORComboBox.SetCheckEntireLine
+ 0001:0000EC64       ORCtrls.TORComboBox.SetFlatCheckBoxes
+ 0001:0000EC74       ORCtrls.TORComboBox.DropPanelBtnPressed
+ 0001:0000ECDC       ORCtrls.TORComboBox.GetCheckedString
+ 0001:0000ECF8       ORCtrls.TORComboBox.SetCheckedString
+ 0001:0000ED08       ORCtrls.TORComboBox.SetCheckBoxEditColor
+ 0001:0000ED3C       ORCtrls.TORComboBox.SetListItemsOnly
+ 0001:0000ED5C       ORCtrls.TORComboBox.SetOnCheckedText
+ 0001:0000EDC4       ORCtrls.TORComboBox.SetTemplateField
+ 0001:0000EE0C       ORCtrls.TORComboBox.GetOnSynonymCheck
+ 0001:0000EE24       ORCtrls.TORComboBox.SetOnSynonymCheck
+ 0001:0000EE44       ORCtrls.TORComboBox.GetEnabled
+ 0001:0000EE50       ORCtrls.TORComboBox.SetEnabled
+ 0001:0000EE8C       ORCtrls.TORComboBox.GetEditBoxText
+ 0001:0000EF9C       ORCtrls.TORComboBox.UpdateCheckEditBoxText
+ 0001:0000F01C       ORCtrls.TORComboBox.CheckBoxSelected
+ 0001:0000F050       ORCtrls.TORComboBox.GetMItems
+ 0001:0000F058       ORCtrls.TORComboBox.SetCaption
+ 0001:0000F068       ORCtrls.TORComboBox.GetCaption
+ 0001:0000F084       ORCtrls.TORComboBox.GetCaseChanged
+ 0001:0000F094       ORCtrls.TORComboBox.SetCaseChanged
+ 0001:0000F0A4       ORCtrls.TORComboBox.GetLookupPiece
+ 0001:0000F0B4       ORCtrls.TORComboBox.SetLookupPiece
+ 0001:0000F0C4       ORCtrls.TSizeRatio.Create
+ 0001:0000F13C       ORCtrls.TORAutoPanel.Destroy
+ 0001:0000F1B4       ORCtrls.TORAutoPanel.BuildSizes
+ 0001:0000F2AC       ORCtrls.TORAutoPanel.Loaded
+ 0001:0000F2E0       ORCtrls.TORAutoPanel.DoResize
+ 0001:0000F488       ORCtrls.TORAutoPanel.Resize
+ 0001:0000F4B4       ORCtrls.TOROffsetLabel.Create
+ 0001:0000F514       ORCtrls.TOROffsetLabel.CMTextChanged
+ 0001:0000F52C       ORCtrls.TOROffsetLabel.CMFontChanged
+ 0001:0000F544       ORCtrls.TOROffsetLabel.AdjustSizeOfSelf
+ 0001:0000F5E4       ORCtrls.TOROffsetLabel.DoDrawText
+ 0001:0000F684       ORCtrls.TOROffsetLabel.Paint
+ 0001:0000F720       ORCtrls.TOROffsetLabel.GetTransparent
+ 0001:0000F72C       ORCtrls.TOROffsetLabel.SetTransparent
+ 0001:0000F770       ORCtrls.TOROffsetLabel.SetVertOffset
+ 0001:0000F780       ORCtrls.TOROffsetLabel.SetHorzOffset
+ 0001:0000F790       ORCtrls.TOROffsetLabel.SetWordWrap
+ 0001:0000F7A8       ORCtrls.TORAlignButton.Create
+ 0001:0000F7F8       ORCtrls.TORAlignButton.CreateParams
+ 0001:0000F840       ORCtrls.TORAlignButton.SetAlignment
+ 0001:0000F858       ORCtrls.TORAlignButton.SetLayout
+ 0001:0000F870       ORCtrls.TORAlignButton.SetWordWrap
+ 0001:0000F888       ORCtrls.TORTreeNode.EnsureVisible
+ 0001:0000F938       ORCtrls.TORTreeNode.GetBold
+ 0001:0000F974       ORCtrls.TORTreeNode.GetORTreeView
+ 0001:0000F990       ORCtrls.TORTreeNode.GetParent
+ 0001:0000F9AC       ORCtrls.TORTreeNode.GetText
+ 0001:0000F9C4       ORCtrls.TORTreeNode.SetBold
+ 0001:0000FA08       ORCtrls.TORTreeNode.SetPiece
+ 0001:0000FA4C       ORCtrls.TORTreeNode.SetStringData
+ 0001:0000FAF8       ORCtrls.TORTreeNode.SetText
+ 0001:0000FB04       ORCtrls.TORTreeNode.UpdateText
+ 0001:0000FB94       ORCtrls.CalcShortName
+ 0001:0000FDC0       ORCtrls.TORTreeNode.SetCaption
+ 0001:0000FE70       ORCtrls.TORTreeView.CNNotify
+ 0001:0000FEFC       ORCtrls.TORTreeView.Create
+ 0001:0000FF3C       ORCtrls.TORTreeView.CreateNode
+ 0001:0000FF78       ORCtrls.TORTreeView.FindPieceNode
+ 0001:0000FFD8       ORCtrls.TORTreeView.FindPieceNode
+ 0001:000100C0       ORCtrls.TORTreeView.GetExpandedIDStr
+ 0001:000101BC       ORCtrls.TORTreeView.SetExpandedIDStr
+ 0001:000101CC       ORCtrls.TORTreeView.SetExpandedIDStr
+ 0001:0001034C       ORCtrls.TORTreeView.GetHorzScrollPos
+ 0001:00010364       ORCtrls.TORTreeView.GetVertScrollPos
+ 0001:0001037C       ORCtrls.TORTreeView.RenameNodes
+ 0001:0001043C       ORCtrls.TORTreeView.SetNodeDelim
+ 0001:00010454       ORCtrls.TORTreeView.SetHorzScrollPos
+ 0001:00010490       ORCtrls.TORTreeView.SetNodePiece
+ 0001:000104A8       ORCtrls.TORTreeView.SetVertScrollPos
+ 0001:000104E4       ORCtrls.TORTreeView.GetNodeID
+ 0001:0001050C       ORCtrls.TORTreeView.GetNodeID
+ 0001:000105D0       ORCtrls.TORTreeView.SetShortNodeCaptions
+ 0001:000105E0       ORCtrls.TORCBImageIndexes.Create
+ 0001:00010664       ORCtrls.TORCBImageIndexes.Destroy
+ 0001:00010698       ORCtrls.TORCBImageIndexes.SetImages
+ 0001:000106D8       ORCtrls.RStr
+ 0001:00010714       ORCtrls.TORCBImageIndexes.IdxString
+ 0001:000107F8       ORCtrls.TORCBImageIndexes.SetIdxString
+ 0001:00010958       ORCtrls.TORCBImageIndexes.ImageListChanged
+ 0001:0001098C       ORCtrls.TORCBImageIndexes.Notification
+ 0001:000109BC       ORCtrls.TORCBImageIndexes.SetCheckedDisabledIndex
+ 0001:000109D0       ORCtrls.TORCBImageIndexes.SetCheckedEnabledIndex
+ 0001:000109E4       ORCtrls.TORCBImageIndexes.SetGrayedDisabledIndex
+ 0001:000109F8       ORCtrls.TORCBImageIndexes.SetGrayedEnabledIndex
+ 0001:00010A0C       ORCtrls.TORCBImageIndexes.SetUncheckedDisabledIndex
+ 0001:00010A20       ORCtrls.TORCBImageIndexes.SetUncheckedEnabledIndex
+ 0001:00010A34       ORCtrls.TORCheckBox.Create
+ 0001:00010A90       ORCtrls.TORCheckBox.ListViewCreate
+ 0001:00010ADC       ORCtrls.TORCheckBox.CreateCommon
+ 0001:00010B0C       ORCtrls.TORCheckBox.Destroy
+ 0001:00010B54       ORCtrls.TORCheckBox.GetImageIndexes
+ 0001:00010B70       ORCtrls.TORCheckBox.GetImageList
+ 0001:00010B7C       ORCtrls.TORCheckBox.SetImageIndexes
+ 0001:00010B8C       ORCtrls.TORCheckBox.SetImageList
+ 0001:00010B9C       ORCtrls.TORCheckBox.Toggle
+ 0001:00010C2C       ORCtrls.TORCheckBox.CreateParams
+ 0001:00010C48       ORCtrls.TORCheckBox.CMEnabledChanged
+ 0001:00010C64       ORCtrls.TORCheckBox.CMFontChanged
+ 0001:00010C80       ORCtrls.TORCheckBox.CNDrawItem
+ 0001:00010C9C       ORCtrls.TORCheckBox.CNMeasureItem
+ 0001:00010CC0       ORCtrls.TORCheckBox.GetDrawData
+ 0001:00011278       ORCtrls.TORCheckBox.DrawItem
+ 0001:0001166C       ORCtrls.TORCheckBox.SetGrayedStyle
+ 0001:00011690       ORCtrls.TORCheckBox.WMLButtonDblClk
+ 0001:000116A8       ORCtrls.TORCheckBox.WMSize
+ 0001:000116D0       ORCtrls.TORCheckBox.BMSetCheck
+ 0001:000117D8       ORCtrls.TORCheckBox.SetWordWrap
+ 0001:00011800       ORCtrls.TORCheckBox.SetAutoSize
+ 0001:00011828       ORCtrls.TORCheckBox.SetBlackColorMode
+ 0001:00011844       ORCtrls.TORCheckBox.AutoAdjustSize
+ 0001:00011A18       ORCtrls.TORCheckBox.GetCaption
+ 0001:00011A30       ORCtrls.TORCheckBox.SetCaption
+ 0001:00011A9C       ORCtrls.TORCheckBox.SetAllowAllUnchecked
+ 0001:00011AAC       ORCtrls.TORCheckBox.SetGroupIndex
+ 0001:00011ADC       ORCtrls.TORCheckBox.SyncAllowAllUnchecked
+ 0001:00011B5C       ORCtrls.TORCheckBox.SetParent
+ 0001:00011B74       ORCtrls.TORCheckBox.SetRadioStyle
+ 0001:00011B88       ORCtrls.TORCheckBox.SetAssociate
+ 0001:00011BC4       ORCtrls.EnableCtrl
+ 0001:00011C60       ORCtrls.TORCheckBox.UpdateAssociate
+ 0001:00011C80       ORCtrls.TORCheckBox.Notification
+ 0001:00011CB4       ORCtrls.TORCheckBox.SetFocusOnBox
+ 0001:00011CC8       ORCtrls.TORCheckBox.BMGetCheck
+ 0001:00011CF4       ORCtrls.TORCheckBox.BMGetState
+ 0001:00011CF8       ORCtrls.TORListView.WMNotify
+ 0001:00011DC0       ORCtrls.TORListView.LVMSetColumn
+ 0001:00011E74       ORCtrls.TORListView.LVMSetColumnWidth
+ 0001:00011F28       ORCtrls.TORComboPanelEdit.Destroy
+ 0001:00011F60       ORCtrls.TORComboPanelEdit.Paint
+ 0001:00012028       ORCtrls.TKeyClickPanel.KeyDown
+ 0001:0001204C       ORCtrls.TKeyClickRadioGroup.Click
+ 0001:00012084       ORCtrls.TKeyClickRadioGroup.Create
+ 0001:000120E4       ORCtrls.TKeyClickRadioGroup.KeyDown
+ 0001:00012154       ORCtrls.TCaptionListBox.DoEnter
+ 0001:00012178       ORCtrls.TCaptionListBox.GetCaption
+ 0001:000121A4       ORCtrls.TCaptionListBox.GetDynamicProperty
+ 0001:000121C8       ORCtrls.TCaptionListBox.MoveFocusUp
+ 0001:00012204       ORCtrls.TCaptionListBox.MoveFocusDown
+ 0001:00012258       ORCtrls.TCaptionListBox.SetCaption
+ 0001:000122DC       ORCtrls.TCaptionListBox.SupportsDynamicProperty
+ 0001:000122E4       ORCtrls.TCaptionListBox.WMKeyDown
+ 0001:00012390       ORCtrls.TCaptionListBox.WMMouseMove
+ 0001:00012450       ORCtrls.TCaptionListBox.WMRButtonUp
+ 0001:00012584       ORCtrls.TCaptionCheckListBox.GetCaption
+ 0001:000125B0       ORCtrls.TCaptionCheckListBox.GetDynamicProperty
+ 0001:000125D4       ORCtrls.TCaptionCheckListBox.SetCaption
+ 0001:00012658       ORCtrls.TCaptionCheckListBox.SupportsDynamicProperty
+ 0001:00012660       ORCtrls.TCaptionMemo.GetCaption
+ 0001:0001268C       ORCtrls.TCaptionMemo.GetDynamicProperty
+ 0001:000126B0       ORCtrls.TCaptionMemo.SetCaption
+ 0001:00012734       ORCtrls.TCaptionMemo.SupportsDynamicProperty
+ 0001:0001273C       ORCtrls.TCaptionEdit.GetCaption
+ 0001:00012768       ORCtrls.TCaptionEdit.GetDynamicProperty
+ 0001:0001278C       ORCtrls.TCaptionEdit.SetCaption
+ 0001:00012810       ORCtrls.TCaptionEdit.SupportsDynamicProperty
+ 0001:00012818       ORCtrls.TCaptionRichEdit.GetDynamicProperty
+ 0001:00012840       ORCtrls.TCaptionRichEdit.SupportsDynamicProperty
+ 0001:00012848       ORCtrls.TCaptionTreeView.GetCaption
+ 0001:00012860       ORCtrls.TCaptionTreeView.GetDynamicProperty
+ 0001:00012884       ORCtrls.TCaptionTreeView.SetCaption
+ 0001:00012914       ORCtrls.TCaptionTreeView.SupportsDynamicProperty
+ 0001:0001291C       ORCtrls.TCaptionComboBox.GetCaption
+ 0001:00012948       ORCtrls.TCaptionComboBox.GetDynamicProperty
+ 0001:0001296C       ORCtrls.TCaptionComboBox.SetCaption
+ 0001:000129F0       ORCtrls.TCaptionComboBox.SupportsDynamicProperty
+ 0001:000129F8       ORCtrls.TORAlignSpeedButton.Paint
+ 0001:00012A70       ORCtrls.GoodNotifyWinEvent
+ 0001:00012A78       ORCtrls.TCaptionStringGrid.ColRowToIndex
+ 0001:00012AC8       ORCtrls.TCaptionStringGrid.GetDynamicProperty
+ 0001:00012AF0       ORCtrls.TCaptionStringGrid.IndexToColRow
+ 0001:00012B54       ORCtrls.TCaptionStringGrid.KeyUp
+ 0001:00012BD0       ORCtrls.TCaptionStringGrid.SupportsDynamicProperty
+ 0001:00012BD8       ORCtrls.IsAMouseButtonDown
+ 0001:00012C10       ORCtrls.TORComboBox.SetNumForMatch
+ 0001:00012C38       ORCtrls.TORComboBox.SetUniqueAutoComplete
+ 0001:00012C40       ORCtrls.TORListBox.VerifyUnique
+ 0001:00012D90       ORCtrls.TORComboBox.SetTextAutoComplete
+ 0001:00012E0C       ORCtrls.TCaptionListView.GetDynamicProperty
+ 0001:00012E30       ORCtrls.TCaptionListView.SupportsDynamicProperty
+ 0001:00012E38       ORCtrls.Finalization
+ 0001:00012FE0       ORCtrlsDsgn..TORImageIndexesPropertyEditor
+ 0001:000130D0       ORCtrlsDsgn..TORImageIndexesElementPropertyEditor
+ 0001:000131D0       ORCtrlsDsgn.TORImageIndexesPropertyEditor.Modified
+ 0001:000131DC       ORCtrlsDsgn.TORImageIndexesPropertyEditor.GetAttributes
+ 0001:000131E8       ORCtrlsDsgn.TORImageIndexesPropertyEditor.GetProperties
+ 0001:0001321C       ORCtrlsDsgn.TORImageIndexesPropertyEditor.GetValue
+ 0001:00013234       ORCtrlsDsgn.TORImageIndexesPropertyEditor.SetValue
+ 0001:00013240       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.Create
+ 0001:0001328C       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.ParentImgIdx
+ 0001:000132C8       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.GetAttributes
+ 0001:000132D4       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.GetName
+ 0001:00013410       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.GetValue
+ 0001:000134D8       ORCtrlsDsgn.TORImageIndexesElementPropertyEditor.SetValue
+ 0001:0001358C       ORCtrlsDsgn.Register
+ 0001:00013694       ORCtrlsDsgn.Finalization
+ 0001:00013A34       .ORCtrlLib2006.@GetPackageInfoTable
+ 0001:00013A3C       .ORCtrlLib2006.@PackageLoad
+ 0001:00013A48       .ORCtrlLib2006.@PackageUnload
+ 0002:00000008       Windows.Windows
+ 0002:0000010C       ORCtrls.ORCtrls
+ 0002:000001D8       ORCtrlsDsgn.ORCtrlsDsgn
+ 0002:000001E0       .ORCtrlLib2006..ORCtrlLib2006
+ 0003:00000000       SysInit.TlsIndex
+ 0003:00000004       SysInit.PtrToNil
+ 0003:00000008       SysInit.Module
+ 0003:00000020       SysInit.TlsProc
+ 0003:00000030       ORCtrls.ALPHA_DISTRIBUTION
+ 0003:000001C4       ORCtrls.CheckBoxImageResNames
+ 0003:00000204       ORCtrls.BlackCheckBoxImageResNames
+ 0003:00000244       ORCtrls.uDropPanelOpenCount
+ 0003:00000248       ORCtrls.ComboBoxImages
+ 0003:00000250       ORCtrls.BlackComboBoxImages
+ 0003:00000258       ORCtrls.ButtonAlignment
+ 0003:00000264       ORCtrls.ButtonWordWrap
+ 0003:0000026C       ORCtrls.ButtonLayout
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0004:00000004       SysInit.HInstance
+ 0004:00000008       SysInit.tlsBuffer
+ 0004:0000000C       Windows..3
+ 0004:00000010       Windows.HtmlHelpModule
+ 0004:00000014       ORCtrls..03
+ 0004:00000018       ORCtrls.uKeyHookHandle
+ 0004:0000001C       ORCtrls.uItemTip
+ 0004:00000020       ORCtrls.uItemTipCount
+ 0004:00000024       ORCtrls.uNewStyle
+ 0004:00000028       ORCtrls.ORCBImages
+ 0004:000000A8       ORCtrls.uOldShowHintsSetting
+ 0004:000000AC       ORCtrlsDsgn..3
+ 0005:00000000       SysInit.TlsLast
+
+
+Bound resource files
+
+ORCTRLS.RES
+ORCtrlLib2006.res
+ORCtrlsDsgn.dcr
+ORCtrlLib2006.drf
+
+
+Program entry point at 0002:000001E0
Index: cprs/branches/HealthSevak-CPRS/Packages/ORCtrlLib60.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/ORCtrlLib60.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/ORCtrlLib60.map	(revision 1676)
@@ -0,0 +1,2121 @@
+
+ Start         Length     Name                   Class
+ 0001:00000000 00013550H .text                   CODE
+ 0002:00000000 00000264H .data                   DATA
+ 0002:00000264 000000B9H .bss                    BSS
+
+
+Detailed map of segments
+
+ 0001:00000000 000001FE C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:00000200 000001EC C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:000003EC 0000018C C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:00000578 0000000E C=CODE     S=.text    G=(none)   M=Types    ACBP=A9
+ 0001:00000588 0000000E C=CODE     S=.text    G=(none)   M=ActiveX  ACBP=A9
+ 0001:00000598 00000038 C=CODE     S=.text    G=(none)   M=Messages ACBP=A9
+ 0001:000005D0 0000017E C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:00000750 0000000E C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:00000760 00000076 C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:000007D8 0000000E C=CODE     S=.text    G=(none)   M=SysConst ACBP=A9
+ 0001:000007E8 00000016 C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000800 0000000E C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:00000810 0000000E C=CODE     S=.text    G=(none)   M=RTLConsts ACBP=A9
+ 0001:00000820 0000008E C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:000008B0 0000000E C=CODE     S=.text    G=(none)   M=Consts   ACBP=A9
+ 0001:000008C0 0000000E C=CODE     S=.text    G=(none)   M=StdVCL   ACBP=A9
+ 0001:000008D0 0000000E C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:000008E0 0000000E C=CODE     S=.text    G=(none)   M=ComConst ACBP=A9
+ 0001:000008F0 000000F8 C=CODE     S=.text    G=(none)   M=Accessibility_TLB ACBP=A9
+ 0001:000009E8 0000045E C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:00000E48 0000000E C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:00000E58 0000000E C=CODE     S=.text    G=(none)   M=Contnrs  ACBP=A9
+ 0001:00000E68 0000000E C=CODE     S=.text    G=(none)   M=Math     ACBP=A9
+ 0001:00000E78 0000002E C=CODE     S=.text    G=(none)   M=ImgList  ACBP=A9
+ 0001:00000EA8 00000068 C=CODE     S=.text    G=(none)   M=CommCtrl ACBP=A9
+ 0001:00000F10 00000016 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00000F28 0000000E C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:00000F38 0000000E C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:00000F48 00000038 C=CODE     S=.text    G=(none)   M=Imm      ACBP=A9
+ 0001:00000F80 000000B6 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:00001038 0000000E C=CODE     S=.text    G=(none)   M=WinHelpViewer ACBP=A9
+ 0001:00001048 0000000E C=CODE     S=.text    G=(none)   M=StdActns ACBP=A9
+ 0001:00001058 0000000E C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:00001068 00000038 C=CODE     S=.text    G=(none)   M=ShlObj   ACBP=A9
+ 0001:000010A0 00000038 C=CODE     S=.text    G=(none)   M=UrlMon   ACBP=A9
+ 0001:000010D8 00000038 C=CODE     S=.text    G=(none)   M=WinInet  ACBP=A9
+ 0001:00001110 00000038 C=CODE     S=.text    G=(none)   M=RegStr   ACBP=A9
+ 0001:00001148 00000038 C=CODE     S=.text    G=(none)   M=ShellAPI ACBP=A9
+ 0001:00001180 0000000E C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00001190 00000038 C=CODE     S=.text    G=(none)   M=WinSpool ACBP=A9
+ 0001:000011C8 0000039E C=CODE     S=.text    G=(none)   M=StdCtrls ACBP=A9
+ 0001:00001568 00000038 C=CODE     S=.text    G=(none)   M=CommDlg  ACBP=A9
+ 0001:000015A0 00000038 C=CODE     S=.text    G=(none)   M=Dlgs     ACBP=A9
+ 0001:000015D8 00000086 C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:00001660 0000000E C=CODE     S=.text    G=(none)   M=StrUtils ACBP=A9
+ 0001:00001670 0000000E C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:00001680 0000000E C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:00001690 00000336 C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:000019C8 0000000E C=CODE     S=.text    G=(none)   M=ListActns ACBP=A9
+ 0001:000019D8 0000000E C=CODE     S=.text    G=(none)   M=ToolWin  ACBP=A9
+ 0001:000019E8 00000038 C=CODE     S=.text    G=(none)   M=RichEdit ACBP=A9
+ 0001:00001A20 0000000E C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:00001A30 0000000E C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:00001A40 0000000E C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:00001A50 0000000E C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:00001A60 00000056 C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:00001AB8 0000000E C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:00001AC8 0000000E C=CODE     S=.text    G=(none)   M=ComStrs  ACBP=A9
+ 0001:00001AD8 000001D0 C=CODE     S=.text    G=(none)   M=uAccessAPI ACBP=A9
+ 0001:00001CA8 0000006E C=CODE     S=.text    G=(none)   M=Grids    ACBP=A9
+ 0001:00001D18 0000000E C=CODE     S=.text    G=(none)   M=Mask     ACBP=A9
+ 0001:00001D28 0000000E C=CODE     S=.text    G=(none)   M=MaskUtils ACBP=A9
+ 0001:00001D38 0000003E C=CODE     S=.text    G=(none)   M=CheckLst ACBP=A9
+ 0001:00001D78 00010DA3 C=CODE     S=.text    G=(none)   M=ORCtrls  ACBP=A9
+ 0001:00012B1C 00000016 C=CODE     S=.text    G=(none)   M=DesignIntf ACBP=A9
+ 0001:00012B34 0000000E C=CODE     S=.text    G=(none)   M=DesignMenus ACBP=A9
+ 0001:00012B44 000000A6 C=CODE     S=.text    G=(none)   M=DesignEditors ACBP=A9
+ 0001:00012BEC 0000000E C=CODE     S=.text    G=(none)   M=Proxies  ACBP=A9
+ 0001:00012BFC 0000000E C=CODE     S=.text    G=(none)   M=DesignConst ACBP=A9
+ 0001:00012C0C 000006DC C=CODE     S=.text    G=(none)   M=ORCtrlsDsgn ACBP=A9
+ 0001:000132E8 00000265 C=CODE     S=.text    G=(none)   M=ORCtrlLib60 ACBP=A9
+ 0002:00000000 00000028 C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0002:00000028 00000030 C=DATA     S=.data    G=DGROUP   M=Accessibility_TLB ACBP=A9
+ 0002:00000058 000001FC C=DATA     S=.data    G=DGROUP   M=ORCtrls  ACBP=A9
+ 0002:00001000 00000018 C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0002:00001018 00000004 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0002:0000101C 00000004 C=BSS      S=.bss     G=DGROUP   M=Messages ACBP=A9
+ 0002:00001020 00000004 C=BSS      S=.bss     G=DGROUP   M=Accessibility_TLB ACBP=A9
+ 0002:00001024 00000004 C=BSS      S=.bss     G=DGROUP   M=CommCtrl ACBP=A9
+ 0002:00001028 00000004 C=BSS      S=.bss     G=DGROUP   M=Imm      ACBP=A9
+ 0002:0000102C 00000004 C=BSS      S=.bss     G=DGROUP   M=ShlObj   ACBP=A9
+ 0002:00001030 00000004 C=BSS      S=.bss     G=DGROUP   M=UrlMon   ACBP=A9
+ 0002:00001034 00000004 C=BSS      S=.bss     G=DGROUP   M=WinInet  ACBP=A9
+ 0002:00001038 00000004 C=BSS      S=.bss     G=DGROUP   M=RegStr   ACBP=A9
+ 0002:0000103C 00000004 C=BSS      S=.bss     G=DGROUP   M=ShellAPI ACBP=A9
+ 0002:00001040 00000004 C=BSS      S=.bss     G=DGROUP   M=WinSpool ACBP=A9
+ 0002:00001044 00000004 C=BSS      S=.bss     G=DGROUP   M=CommDlg  ACBP=A9
+ 0002:00001048 00000004 C=BSS      S=.bss     G=DGROUP   M=Dlgs     ACBP=A9
+ 0002:0000104C 00000004 C=BSS      S=.bss     G=DGROUP   M=RichEdit ACBP=A9
+ 0002:00001050 00000010 C=BSS      S=.bss     G=DGROUP   M=uAccessAPI ACBP=A9
+ 0002:00001060 00000054 C=BSS      S=.bss     G=DGROUP   M=ORCtrls  ACBP=A9
+ 0002:000010B4 00000004 C=BSS      S=.bss     G=DGROUP   M=ORCtrlsDsgn ACBP=A9
+
+
+  Address         Publics by Name
+
+ 0002:0000103C       .1
+ 0002:00001024       .1
+ 0002:0000104C       .1
+ 0002:00001028       .1
+ 0002:00001020       .1
+ 0002:0000102C       .1
+ 0002:00001034       .1
+ 0002:00001038       .1
+ 0002:00001030       .1
+ 0002:00001044       .1
+ 0002:00001010       .1
+ 0002:00001048       .1
+ 0002:00001050       .1
+ 0002:0000101C       .1
+ 0002:00001060       .13
+ 0002:000010B4       .3
+ 0002:00001018       .3
+ 0002:00001040       .3
+ 0001:00013528       @GetPackageInfoTable
+ 0001:00000338       @InitPkg
+ 0001:0000039C       @PackageLoad
+ 0001:00013530       @PackageLoad
+ 0001:000003A8       @PackageUnload
+ 0001:0001353C       @PackageUnload
+ 0001:000009E0       Accessibility_TLB
+ 0001:000068E0       AddItemTipRef
+ 0001:00000238       AllocTlsBuffer
+ 0002:00000058       ALPHA_DISTRIBUTION
+ 0002:00000234       ButtonAlignment
+ 0002:00000248       ButtonLayout
+ 0002:00000240       ButtonWordWrap
+ 0001:0000F784       CalcShortName
+ 0001:00000434       CallNextHookEx
+ 0002:000001EC       CheckBoxImageResNames
+ 0001:0000AF4C       ClearLong
+ 0001:000062E0       ClientWidthOfList
+ 0002:0000022C       ComboBoxImages
+ 0001:00000F08       CommCtrl
+ 0001:00001598       CommDlg
+ 0002:00001054       CreateStdAccessibleObject
+ 0001:0000715C       DestroyORCBBitmaps
+ 0001:000015D0       Dlgs
+ 0001:0000043C       DrawText
+ 0001:00011850       EnableCtrl
+ 0001:000002E4       ExitProcessTLS
+ 0001:000002BC       ExitThreadTLS
+ 0001:000019E8       Finalization
+ 0001:000015A0       Finalization
+ 0001:00000540       Finalization
+ 0001:00000598       Finalization
+ 0001:000009B0       Finalization
+ 0001:00000ED8       Finalization
+ 0001:00000F48       Finalization
+ 0001:00001068       Finalization
+ 0001:000010A0       Finalization
+ 0001:000003B4       Finalization
+ 0001:000010D8       Finalization
+ 0001:00001110       Finalization
+ 0001:00001BC8       Finalization
+ 0001:00012A94       Finalization
+ 0001:000132B0       Finalization
+ 0001:00001148       Finalization
+ 0001:00001190       Finalization
+ 0001:00001568       Finalization
+ 0001:00006430       FontHeightPixel
+ 0001:00006324       FontWidthPixel
+ 0001:00000200       FreeLibrary
+ 0001:000003EC       FreeLibrary
+ 0001:000003F4       GetCurrentThreadId
+ 0001:00000444       GetCursorPos
+ 0001:0000044C       GetDC
+ 0001:00001B1C       GetDefaultObject
+ 0001:00001AD8       GetDefaultObject
+ 0001:00000454       GetDesktopWindow
+ 0001:0000045C       GetKeyState
+ 0001:00001B60       GetLResult
+ 0001:000070D0       GetORCBBitmap
+ 0001:000003FC       GetProcAddress
+ 0001:00000464       GetScrollPos
+ 0001:0000046C       GetSystemMetrics
+ 0001:00000474       GetTabbedTextExtent
+ 0001:00000414       GetTextExtentPoint32
+ 0001:0000041C       GetTextMetrics
+ 0001:00000244       GetTlsSize
+ 0001:00000404       GetVersion
+ 0001:0000047C       GetWindowDC
+ 0001:00012684       GoodNotifyWinEvent
+ 0001:00000484       HideCaret
+ 0001:00006474       HigherOf
+ 0002:0000100C       HInstance
+ 0002:00000038       IID_IAccessible
+ 0002:00000048       IID_IAccessibleHandler
+ 0001:00000F78       Imm
+ 0001:0000048C       InflateRect
+ 0001:00000308       InitializeModule
+ 0001:00000290       InitProcessTLS
+ 0001:0000024C       InitThreadTLS
+ 0001:00006630       IntArrayToString
+ 0001:00000494       IntersectRect
+ 0001:0000049C       InvalidateRect
+ 0001:000128B4       IsAMouseButtonDown
+ 0001:000068AC       ItemTipKeyHook
+ 0001:000004A4       KillTimer
+ 0002:00000028       LIBID_Accessibility
+ 0001:0000040C       LoadLibrary
+ 0001:00000208       LocalAlloc
+ 0001:00000210       LocalFree
+ 0001:00006480       LowerOf
+ 0002:00001058       LresultFromObject
+ 0001:0000050C       MakeLong
+ 0001:00000538       MakeLParam
+ 0001:00000530       MakeWParam
+ 0001:000005C8       Messages
+ 0002:00000000       Module
+ 0002:00001000       ModuleIsLib
+ 0002:00001001       ModuleIsPackage
+ 0001:000004AC       OffsetRect
+ 0002:0000105C       OleAccHandle
+ 0002:00001074       ORCBImages
+ 0001:00013548       ORCtrlLib60
+ 0001:00012AE0       ORCtrls
+ 0001:000132E0       ORCtrlsDsgn
+ 0001:0000648C       Piece
+ 0001:00000518       PointToSmallPoint
+ 0001:000004B4       PostMessage
+ 0001:000004BC       PtInRect
+ 0001:000131A0       Register
+ 0001:00001140       RegStr
+ 0001:000004C4       ReleaseDC
+ 0001:00006918       RemoveItemTipRef
+ 0001:00001A18       RichEdit
+ 0001:000103B8       RStr
+ 0001:00000424       SelectObject
+ 0001:000004CC       SendMessage
+ 0001:0000042C       SetBkMode
+ 0001:0000650C       SetPiece
+ 0001:000004D4       SetTimer
+ 0001:000004DC       SetWindowPos
+ 0001:000004E4       SetWindowsHookEx
+ 0001:00001178       ShellAPI
+ 0001:00001098       ShlObj
+ 0001:000004EC       ShowWindow
+ 0001:00006874       StringBetween
+ 0001:00006700       StringToIntArray
+ 0001:000003E4       SysInit
+ 0001:000004F4       SystemParametersInfo
+ 0001:000004FC       TabbedTextOut
+ 0001:000121A8       TCaptionCheckListBox.GetCaption
+ 0001:000121D4       TCaptionCheckListBox.SetCaption
+ 0001:0001255C       TCaptionComboBox.GetCaption
+ 0001:00012588       TCaptionComboBox.SetCaption
+ 0001:00012308       TCaptionEdit.GetCaption
+ 0001:00012334       TCaptionEdit.SetCaption
+ 0001:00011DE0       TCaptionListBox.DoEnter
+ 0001:00011E04       TCaptionListBox.GetCaption
+ 0001:00011E30       TCaptionListBox.MakeAccessible
+ 0001:00011EF8       TCaptionListBox.SetCaption
+ 0001:00011F7C       TCaptionListBox.WMGetObject
+ 0001:00011FB4       TCaptionListBox.WMMouseMove
+ 0001:00012074       TCaptionListBox.WMRButtonUp
+ 0001:00012258       TCaptionMemo.GetCaption
+ 0001:00012284       TCaptionMemo.SetCaption
+ 0001:000123B8       TCaptionRichEdit.MakeAccessible
+ 0001:0001247C       TCaptionRichEdit.WMGetObject
+ 0001:0001268C       TCaptionStringGrid.ColRowToIndex
+ 0001:000126DC       TCaptionStringGrid.IndexToColRow
+ 0001:00012740       TCaptionStringGrid.KeyUp
+ 0001:000127B8       TCaptionStringGrid.MakeAccessible
+ 0001:0001287C       TCaptionStringGrid.WMGetObject
+ 0001:000124B4       TCaptionTreeView.GetCaption
+ 0001:000124CC       TCaptionTreeView.SetCaption
+ 0001:00006948       TItemTip.Create
+ 0001:000069D8       TItemTip.CreateParams
+ 0001:0000699C       TItemTip.Destroy
+ 0001:00006B30       TItemTip.GetTabSettings
+ 0001:00006AEC       TItemTip.Hide
+ 0001:00006A04       TItemTip.Paint
+ 0001:00006F00       TItemTip.Show
+ 0001:00006C5C       TItemTip.UpdateText
+ 0001:00011CB0       TKeyClickPanel.KeyDown
+ 0001:00011CD8       TKeyClickRadioGroup.Click
+ 0001:00011D10       TKeyClickRadioGroup.Create
+ 0001:00011D70       TKeyClickRadioGroup.KeyDown
+ 0001:00000218       TlsAlloc
+ 0002:00001014       tlsBuffer
+ 0001:00000220       TlsFree
+ 0001:00000228       TlsGetValue
+ 0002:00001004       TlsIndex
+ 0002:FFBEB000       TlsLast
+ 0002:00000018       TlsProc
+ 0001:00000230       TlsSetValue
+ 0001:0000F29C       TORAlignButton.Create
+ 0001:0000F2EC       TORAlignButton.CreateParams
+ 0001:0000F338       TORAlignButton.SetAlignment
+ 0001:0000F350       TORAlignButton.SetLayout
+ 0001:0000F368       TORAlignButton.SetWordWrap
+ 0001:0001260C       TORAlignSpeedButton.Paint
+ 0001:0000ECA8       TORAutoPanel.BuildSizes
+ 0001:0000EC30       TORAutoPanel.Destroy
+ 0001:0000EDD4       TORAutoPanel.DoResize
+ 0001:0000EDA0       TORAutoPanel.Loaded
+ 0001:0000EF7C       TORAutoPanel.Resize
+ 0001:000102C0       TORCBImageIndexes.Create
+ 0001:00010344       TORCBImageIndexes.Destroy
+ 0001:000103F4       TORCBImageIndexes.IdxString
+ 0001:00010638       TORCBImageIndexes.ImageListChanged
+ 0001:0001066C       TORCBImageIndexes.Notification
+ 0001:0001069C       TORCBImageIndexes.SetCheckedDisabledIndex
+ 0001:000106B0       TORCBImageIndexes.SetCheckedEnabledIndex
+ 0001:000106C4       TORCBImageIndexes.SetGrayedDisabledIndex
+ 0001:000106D8       TORCBImageIndexes.SetGrayedEnabledIndex
+ 0001:000104D8       TORCBImageIndexes.SetIdxString
+ 0001:00010378       TORCBImageIndexes.SetImages
+ 0001:000106EC       TORCBImageIndexes.SetUncheckedDisabledIndex
+ 0001:00010700       TORCBImageIndexes.SetUncheckedEnabledIndex
+ 0001:000114DC       TORCheckBox.AutoAdjustSize
+ 0001:00011950       TORCheckBox.BMGetCheck
+ 0001:0001197C       TORCheckBox.BMGetState
+ 0001:00011388       TORCheckBox.BMSetCheck
+ 0001:00010924       TORCheckBox.CMEnabledChanged
+ 0001:0001093C       TORCheckBox.CMFontChanged
+ 0001:00010954       TORCheckBox.CNDrawItem
+ 0001:00010970       TORCheckBox.CNMeasureItem
+ 0001:00010714       TORCheckBox.Create
+ 0001:000107BC       TORCheckBox.CreateCommon
+ 0001:00010908       TORCheckBox.CreateParams
+ 0001:000107EC       TORCheckBox.Destroy
+ 0001:00010F3C       TORCheckBox.DrawItem
+ 0001:000116B0       TORCheckBox.GetCaption
+ 0001:00010994       TORCheckBox.GetDrawData
+ 0001:00010834       TORCheckBox.GetImageIndexes
+ 0001:00010850       TORCheckBox.GetImageList
+ 0001:00010770       TORCheckBox.ListViewCreate
+ 0001:0001190C       TORCheckBox.Notification
+ 0001:00011730       TORCheckBox.SetAllowAllUnchecked
+ 0001:00011814       TORCheckBox.SetAssociate
+ 0001:000114B4       TORCheckBox.SetAutoSize
+ 0001:000116C8       TORCheckBox.SetCaption
+ 0001:00011940       TORCheckBox.SetFocusOnBox
+ 0001:00011324       TORCheckBox.SetGrayedStyle
+ 0001:00011740       TORCheckBox.SetGroupIndex
+ 0001:0001085C       TORCheckBox.SetImageIndexes
+ 0001:0001086C       TORCheckBox.SetImageList
+ 0001:000117EC       TORCheckBox.SetParent
+ 0001:00011804       TORCheckBox.SetRadioStyle
+ 0001:0001148C       TORCheckBox.SetWordWrap
+ 0001:00011770       TORCheckBox.SyncAllowAllUnchecked
+ 0001:0001087C       TORCheckBox.Toggle
+ 0001:000118EC       TORCheckBox.UpdateAssociate
+ 0001:00011348       TORCheckBox.WMLButtonDblClk
+ 0001:00011360       TORCheckBox.WMSize
+ 0001:0000DE54       TORComboBox.AddReference
+ 0001:0000CA2C       TORComboBox.AdjustSizeOfSelf
+ 0001:0000EAB8       TORComboBox.CheckBoxSelected
+ 0001:0000DEB8       TORComboBox.Clear
+ 0001:0000DEE0       TORComboBox.ClearTop
+ 0001:0000C96C       TORComboBox.CMFontChanged
+ 0001:0000C79C       TORComboBox.Create
+ 0001:0000CC0C       TORComboBox.DoEnter
+ 0001:0000CC64       TORComboBox.DoExit
+ 0001:0000CBAC       TORComboBox.DropButtonDown
+ 0001:0000CBDC       TORComboBox.DropButtonUp
+ 0001:0000E700       TORComboBox.DropPanelBtnPressed
+ 0001:0000CA18       TORComboBox.EditControl
+ 0001:0000DEF0       TORComboBox.ForDataUse
+ 0001:0000CCC8       TORComboBox.FwdChange
+ 0001:0000CCFC       TORComboBox.FwdChangeDelayed
+ 0001:0000D00C       TORComboBox.FwdClick
+ 0001:0000D160       TORComboBox.FwdDblClick
+ 0001:0000D184       TORComboBox.FwdKeyDown
+ 0001:0000D55C       TORComboBox.FwdKeyPress
+ 0001:0000D5A4       TORComboBox.FwdKeyUp
+ 0001:0000D610       TORComboBox.FwdMouseUp
+ 0001:0000D634       TORComboBox.FwdNeedData
+ 0001:0000E028       TORComboBox.GetAutoSelect
+ 0001:0000EB04       TORComboBox.GetCaption
+ 0001:0000EB78       TORComboBox.GetCaseChanged
+ 0001:0000E474       TORComboBox.GetCheckBoxes
+ 0001:0000E484       TORComboBox.GetChecked
+ 0001:0000E768       TORComboBox.GetCheckedString
+ 0001:0000E494       TORComboBox.GetCheckEntireLine
+ 0001:0000E038       TORComboBox.GetColor
+ 0001:0000E044       TORComboBox.GetDelimiter
+ 0001:0000E054       TORComboBox.GetDisplayText
+ 0001:0000E928       TORComboBox.GetEditBoxText
+ 0001:0000E8D0       TORComboBox.GetEnabled
+ 0001:0000E4A4       TORComboBox.GetFlatCheckBoxes
+ 0001:0000E1E0       TORComboBox.GetHideSynonyms
+ 0001:0000E084       TORComboBox.GetIEN
+ 0001:0000E074       TORComboBox.GetItemHeight
+ 0001:0000E0A8       TORComboBox.GetItemID
+ 0001:0000E0C4       TORComboBox.GetItemIEN
+ 0001:0000E0E8       TORComboBox.GetItemIndex
+ 0001:0000E10C       TORComboBox.GetItemTipColor
+ 0001:0000E0FC       TORComboBox.GetItemTipEnable
+ 0001:0000E11C       TORComboBox.GetLongList
+ 0001:0000EB98       TORComboBox.GetLookupPiece
+ 0001:0000E12C       TORComboBox.GetMaxLength
+ 0001:0000EAEC       TORComboBox.GetMItems
+ 0001:0000E898       TORComboBox.GetOnSynonymCheck
+ 0001:0000E13C       TORComboBox.GetPieces
+ 0001:0000E158       TORComboBox.GetReference
+ 0001:0000E178       TORComboBox.GetSelLength
+ 0001:0000E18C       TORComboBox.GetSelStart
+ 0001:0000E1A0       TORComboBox.GetSelText
+ 0001:0000E1C0       TORComboBox.GetShortCount
+ 0001:0000E1D0       TORComboBox.GetSorted
+ 0001:0000E1F0       TORComboBox.GetSynonymChars
+ 0001:0000E28C       TORComboBox.GetTabPosInPixels
+ 0001:0000E270       TORComboBox.GetTabPositions
+ 0001:0000E29C       TORComboBox.GetText
+ 0001:0000DF50       TORComboBox.IndexOfReference
+ 0001:0000DF00       TORComboBox.InitLongList
+ 0001:0000DFB0       TORComboBox.InsertReference
+ 0001:0000E018       TORComboBox.InsertSeparator
+ 0001:0000CCAC       TORComboBox.Loaded
+ 0001:0000EB20       TORComboBox.MakeAccessible
+ 0001:0000E2B8       TORComboBox.SelectAll
+ 0001:0000DB88       TORComboBox.SelectByID
+ 0001:0000DB5C       TORComboBox.SelectByIEN
+ 0001:0000E2C8       TORComboBox.SetAutoSelect
+ 0001:0000EAF4       TORComboBox.SetCaption
+ 0001:0000EB88       TORComboBox.SetCaseChanged
+ 0001:0000E794       TORComboBox.SetCheckBoxEditColor
+ 0001:0000E4B4       TORComboBox.SetCheckBoxes
+ 0001:0000E6A8       TORComboBox.SetChecked
+ 0001:0000E784       TORComboBox.SetCheckedString
+ 0001:0000E6E0       TORComboBox.SetCheckEntireLine
+ 0001:0000E2D8       TORComboBox.SetColor
+ 0001:0000E310       TORComboBox.SetDelimiter
+ 0001:0000D6AC       TORComboBox.SetDropDownCount
+ 0001:0000D6B8       TORComboBox.SetDroppedDown
+ 0001:0000D904       TORComboBox.SetEditRect
+ 0001:0000D9D4       TORComboBox.SetEditText
+ 0001:0000E8DC       TORComboBox.SetEnabled
+ 0001:0000DBAC       TORComboBox.SetExactByIEN
+ 0001:0000E6F0       TORComboBox.SetFlatCheckBoxes
+ 0001:0000E210       TORComboBox.SetHideSynonyms
+ 0001:0000E320       TORComboBox.SetItemHeight
+ 0001:0000DA78       TORComboBox.SetItemIndex
+ 0001:0000E460       TORComboBox.SetItems
+ 0001:0000E340       TORComboBox.SetItemTipColor
+ 0001:0000E330       TORComboBox.SetItemTipEnable
+ 0001:0000E7C8       TORComboBox.SetListItemsOnly
+ 0001:0000E350       TORComboBox.SetLongList
+ 0001:0000EBA8       TORComboBox.SetLookupPiece
+ 0001:0000E360       TORComboBox.SetMaxLength
+ 0001:000128EC       TORComboBox.SetNumForMatch
+ 0001:0000E7E8       TORComboBox.SetOnCheckedText
+ 0001:0000E8B0       TORComboBox.SetOnSynonymCheck
+ 0001:0000E370       TORComboBox.SetPieces
+ 0001:0000E380       TORComboBox.SetReference
+ 0001:0000E3E0       TORComboBox.SetSelLength
+ 0001:0000E3F8       TORComboBox.SetSelStart
+ 0001:0000E410       TORComboBox.SetSelText
+ 0001:0000E420       TORComboBox.SetSorted
+ 0001:0000DBD8       TORComboBox.SetStyle
+ 0001:0000E220       TORComboBox.SetSynonymChars
+ 0001:0000E440       TORComboBox.SetTabPosInPixels
+ 0001:0000E430       TORComboBox.SetTabPositions
+ 0001:0000E850       TORComboBox.SetTemplateField
+ 0001:0000E450       TORComboBox.SetText
+ 0001:00012A18       TORComboBox.SetTextAutoComplete
+ 0001:00012914       TORComboBox.SetUniqueAutoComplete
+ 0001:0000DDB8       TORComboBox.StartKeyTimer
+ 0001:0000DE28       TORComboBox.StopKeyTimer
+ 0001:0000CC34       TORComboBox.UMGotFocus
+ 0001:0000EA38       TORComboBox.UpdateCheckEditBoxText
+ 0001:0000C93C       TORComboBox.WMDestroy
+ 0001:0000C984       TORComboBox.WMMove
+ 0001:0000C9A0       TORComboBox.WMSize
+ 0001:0000C9B8       TORComboBox.WMTimer
+ 0001:0000C6A8       TORComboEdit.CreateParams
+ 0001:0000C6C8       TORComboEdit.WMKillFocus
+ 0001:0000C740       TORComboEdit.WMSetFocus
+ 0001:00011BB0       TORComboPanelEdit.Destroy
+ 0001:00011BE8       TORComboPanelEdit.Paint
+ 0001:0000C258       TORDropPanel.BtnClicked
+ 0001:0000C290       TORDropPanel.Create
+ 0001:0000C308       TORDropPanel.CreateParams
+ 0001:0000C348       TORDropPanel.GetButton
+ 0001:0000C3F8       TORDropPanel.ResetButtons
+ 0001:0000C42C       TORDropPanel.Resize
+ 0001:0000C4C4       TORDropPanel.UpdateButtons
+ 0001:0000C648       TORDropPanel.WMActivateApp
+ 0001:00012E54       TORImageIndexesElementPropertyEditor.Create
+ 0001:00012EDC       TORImageIndexesElementPropertyEditor.GetAttributes
+ 0001:00012EE8       TORImageIndexesElementPropertyEditor.GetName
+ 0001:00013024       TORImageIndexesElementPropertyEditor.GetValue
+ 0001:00012EA0       TORImageIndexesElementPropertyEditor.ParentImgIdx
+ 0001:000130EC       TORImageIndexesElementPropertyEditor.SetValue
+ 0001:00012DF0       TORImageIndexesPropertyEditor.GetAttributes
+ 0001:00012DFC       TORImageIndexesPropertyEditor.GetProperties
+ 0001:00012E30       TORImageIndexesPropertyEditor.GetValue
+ 0001:00012DE4       TORImageIndexesPropertyEditor.Modified
+ 0001:00012E48       TORImageIndexesPropertyEditor.SetValue
+ 0001:00009F64       TORListBox.AddReference
+ 0001:0000A888       TORListBox.AdjustScrollBar
+ 0001:0000C080       TORListBox.Clear
+ 0001:0000AEE8       TORListBox.ClearTop
+ 0001:00008BB0       TORListBox.Click
+ 0001:00008300       TORListBox.CMFontChanged
+ 0001:00008B54       TORListBox.CMHintShow
+ 0001:000090E8       TORListBox.CNDrawItem
+ 0001:00007940       TORListBox.Create
+ 0001:00007A8C       TORListBox.CreateParams
+ 0001:0000A918       TORListBox.CreateScrollBar
+ 0001:00007AA4       TORListBox.CreateWnd
+ 0001:00007A38       TORListBox.Destroy
+ 0001:00008C40       TORListBox.DestroyItems
+ 0001:00007B30       TORListBox.DestroyWnd
+ 0001:00008BCC       TORListBox.DoChange
+ 0001:00008C10       TORListBox.DoEnter
+ 0001:00008C1C       TORListBox.DoExit
+ 0001:0000910C       TORListBox.DrawItem
+ 0001:0000A9EC       TORListBox.ForDataUse
+ 0001:0000A9C8       TORListBox.FreeScrollBar
+ 0001:0000C13C       TORListBox.GetCaption
+ 0001:0000BCF8       TORListBox.GetChecked
+ 0001:0000BDD4       TORListBox.GetCheckedState
+ 0001:0000BEC0       TORListBox.GetCheckedString
+ 0001:00007D3C       TORListBox.GetDisplayText
+ 0001:000099D0       TORListBox.GetIEN
+ 0001:00009544       TORListBox.GetIndexFromY
+ 0001:00009C94       TORListBox.GetItemID
+ 0001:00009A80       TORListBox.GetItemIEN
+ 0001:0000C004       TORListBox.GetMItems
+ 0001:0000BE94       TORListBox.GetMultiSelect
+ 0001:0000A630       TORListBox.GetPieces
+ 0001:00009DF4       TORListBox.GetReference
+ 0001:0000B844       TORListBox.GetStringIndex
+ 0001:0000A5E4       TORListBox.GetStyle
+ 0001:0000A0FC       TORListBox.GetTabPositions
+ 0001:0000A048       TORListBox.IndexOfReference
+ 0001:0000ACA4       TORListBox.InitLongList
+ 0001:00009FD4       TORListBox.InsertReference
+ 0001:0000AE40       TORListBox.InsertSeparator
+ 0001:00007C4C       TORListBox.IsSynonym
+ 0001:00008DA8       TORListBox.KeyPress
+ 0001:00007FC8       TORListBox.LBAddString
+ 0001:000081C4       TORListBox.LBDeleteString
+ 0001:00007D98       TORListBox.LBGetItemData
+ 0001:00007E58       TORListBox.LBGetText
+ 0001:00007F24       TORListBox.LBGetTextLen
+ 0001:000080B4       TORListBox.LBInsertString
+ 0001:00008248       TORListBox.LBResetContent
+ 0001:000082E4       TORListBox.LBSetCurSel
+ 0001:00007DCC       TORListBox.LBSetItemData
+ 0001:00007AFC       TORListBox.Loaded
+ 0001:0000C158       TORListBox.MakeAccessible
+ 0001:00009018       TORListBox.MeasureItem
+ 0001:00008DD8       TORListBox.MouseDown
+ 0001:00008E58       TORListBox.MouseMove
+ 0001:0000B03C       TORListBox.NeedData
+ 0001:0000B354       TORListBox.PositionThumb
+ 0001:0000A674       TORListBox.ResetItems
+ 0001:0000B404       TORListBox.ScrollTo
+ 0001:00009D30       TORListBox.SelectByID
+ 0001:00009B30       TORListBox.SelectByIEN
+ 0001:0000B98C       TORListBox.SelectString
+ 0001:0000C09C       TORListBox.SetCaption
+ 0001:0000BC94       TORListBox.SetCheckBoxes
+ 0001:0000BD40       TORListBox.SetChecked
+ 0001:0000BE10       TORListBox.SetCheckedState
+ 0001:0000BF68       TORListBox.SetCheckedString
+ 0001:0000A620       TORListBox.SetDelimiter
+ 0001:00009B94       TORListBox.SetExactByIEN
+ 0001:0000BCE0       TORListBox.SetFlatCheckBoxes
+ 0001:000095D8       TORListBox.SetFocusIndex
+ 0001:0000A48C       TORListBox.SetHideSynonyms
+ 0001:0000A850       TORListBox.SetLongList
+ 0001:0000C03C       TORListBox.SetMItems
+ 0001:0000BE9C       TORListBox.SetMultiSelect
+ 0001:0000A650       TORListBox.SetPieces
+ 0001:00009E90       TORListBox.SetReference
+ 0001:0000A5EC       TORListBox.SetStyle
+ 0001:0000A550       TORListBox.SetSynonymChars
+ 0001:0000A2E4       TORListBox.SetTabPosInPixels
+ 0001:0000A138       TORListBox.SetTabPositions
+ 0001:0000A2FC       TORListBox.SetTabStops
+ 0001:00007B50       TORListBox.TextToShow
+ 0001:00008CB8       TORListBox.ToggleCheckBox
+ 0001:00009898       TORListBox.UMShowTip
+ 0001:0001291C       TORListBox.VerifyUnique
+ 0001:00008A94       TORListBox.WMCancelMode
+ 0001:000090BC       TORListBox.WMDestroy
+ 0001:0000C220       TORListBox.WMGetObject
+ 0001:00008338       TORListBox.WMKeyDown
+ 0001:000088CC       TORListBox.WMLButtonDblClk
+ 0001:00008520       TORListBox.WMLButtonDown
+ 0001:000087D4       TORListBox.WMLButtonUp
+ 0001:00008AC8       TORListBox.WMMove
+ 0001:0000881C       TORListBox.WMRButtonUp
+ 0001:00008AE8       TORListBox.WMSize
+ 0001:00008B30       TORListBox.WMVScroll
+ 0001:00011A48       TORListView.LVMSetColumn
+ 0001:00011AFC       TORListView.LVMSetColumnWidth
+ 0001:00011980       TORListView.WMNotify
+ 0001:0000F038       TOROffsetLabel.AdjustSizeOfSelf
+ 0001:0000F020       TOROffsetLabel.CMFontChanged
+ 0001:0000F008       TOROffsetLabel.CMTextChanged
+ 0001:0000EFA8       TOROffsetLabel.Create
+ 0001:0000F0D8       TOROffsetLabel.DoDrawText
+ 0001:0000F214       TOROffsetLabel.GetTransparent
+ 0001:0000F178       TOROffsetLabel.Paint
+ 0001:0000F274       TOROffsetLabel.SetHorzOffset
+ 0001:0000F220       TOROffsetLabel.SetTransparent
+ 0001:0000F264       TOROffsetLabel.SetVertOffset
+ 0001:0000F284       TOROffsetLabel.SetWordWrap
+ 0001:00007180       TORStaticText.DoEnter
+ 0001:000071A8       TORStaticText.DoExit
+ 0001:000071D0       TORStrings.Add
+ 0001:0000724C       TORStrings.Clear
+ 0001:00007278       TORStrings.Create
+ 0001:000072D0       TORStrings.Delete
+ 0001:00007304       TORStrings.Destroy
+ 0001:00007338       TORStrings.Get
+ 0001:00007360       TORStrings.GetCount
+ 0001:00007378       TORStrings.GetObject
+ 0001:00007398       TORStrings.IndexOf
+ 0001:000073B8       TORStrings.Insert
+ 0001:0000743C       TORStrings.Put
+ 0001:000074BC       TORStrings.PutObject
+ 0001:000074D8       TORStrings.SetUpdateState
+ 0001:000074F4       TORStrings.Verify
+ 0001:0000F380       TORTreeNode.EnsureVisible
+ 0001:0000F430       TORTreeNode.GetBold
+ 0001:0000F46C       TORTreeNode.GetORTreeView
+ 0001:0000F488       TORTreeNode.GetParent
+ 0001:0000F4A4       TORTreeNode.GetText
+ 0001:0000F68C       TORTreeNode.MakeAccessible
+ 0001:0000F4BC       TORTreeNode.SetBold
+ 0001:0000F9B0       TORTreeNode.SetCaption
+ 0001:0000F500       TORTreeNode.SetPiece
+ 0001:0000F544       TORTreeNode.SetStringData
+ 0001:0000F5F0       TORTreeNode.SetText
+ 0001:0000F5FC       TORTreeNode.UpdateText
+ 0001:0000F750       TORTreeNode.WMGetObject
+ 0001:0000FA60       TORTreeView.CNNotify
+ 0001:0000FAEC       TORTreeView.Create
+ 0001:0000FB2C       TORTreeView.CreateNode
+ 0001:0000FBC8       TORTreeView.FindPieceNode
+ 0001:0000FB68       TORTreeView.FindPieceNode
+ 0001:0000FCB0       TORTreeView.GetExpandedIDStr
+ 0001:0000FF30       TORTreeView.GetHorzScrollPos
+ 0001:000100EC       TORTreeView.GetNodeID
+ 0001:000100C4       TORTreeView.GetNodeID
+ 0001:0000FF48       TORTreeView.GetVertScrollPos
+ 0001:000101B0       TORTreeView.MakeAccessible
+ 0001:0000FF60       TORTreeView.RenameNodes
+ 0001:0000FDBC       TORTreeView.SetExpandedIDStr
+ 0001:0000FDAC       TORTreeView.SetExpandedIDStr
+ 0001:00010034       TORTreeView.SetHorzScrollPos
+ 0001:0001001C       TORTreeView.SetNodeDelim
+ 0001:00010070       TORTreeView.SetNodePiece
+ 0001:000102B0       TORTreeView.SetShortNodeCaptions
+ 0001:00010088       TORTreeView.SetVertScrollPos
+ 0001:00010278       TORTreeView.WMGetObject
+ 0001:00000EA8       TreeView_GetItem
+ 0001:00000EC0       TreeView_SetItem
+ 0001:0000EBB8       TSizeRatio.Create
+ 0001:00001C0C       uAccessAPI
+ 0002:00001068       uItemTip
+ 0002:0000106C       uItemTipCount
+ 0002:00001064       uKeyHookHandle
+ 0002:00001070       uNewStyle
+ 0001:00000504       UnhookWindowsHookEx
+ 0001:00000314       UninitializeModule
+ 0001:000010D0       UrlMon
+ 0001:00000570       Windows
+ 0001:00001108       WinInet
+ 0001:000011C0       WinSpool
+
+
+  Address         Publics by Value
+
+ 0002:FFBEB000       TlsLast
+ 0001:00000200       FreeLibrary
+ 0001:00000208       LocalAlloc
+ 0001:00000210       LocalFree
+ 0001:00000218       TlsAlloc
+ 0001:00000220       TlsFree
+ 0001:00000228       TlsGetValue
+ 0001:00000230       TlsSetValue
+ 0001:00000238       AllocTlsBuffer
+ 0001:00000244       GetTlsSize
+ 0001:0000024C       InitThreadTLS
+ 0001:00000290       InitProcessTLS
+ 0001:000002BC       ExitThreadTLS
+ 0001:000002E4       ExitProcessTLS
+ 0001:00000308       InitializeModule
+ 0001:00000314       UninitializeModule
+ 0001:00000338       @InitPkg
+ 0001:0000039C       @PackageLoad
+ 0001:000003A8       @PackageUnload
+ 0001:000003B4       Finalization
+ 0001:000003E4       SysInit
+ 0001:000003EC       FreeLibrary
+ 0001:000003F4       GetCurrentThreadId
+ 0001:000003FC       GetProcAddress
+ 0001:00000404       GetVersion
+ 0001:0000040C       LoadLibrary
+ 0001:00000414       GetTextExtentPoint32
+ 0001:0000041C       GetTextMetrics
+ 0001:00000424       SelectObject
+ 0001:0000042C       SetBkMode
+ 0001:00000434       CallNextHookEx
+ 0001:0000043C       DrawText
+ 0001:00000444       GetCursorPos
+ 0001:0000044C       GetDC
+ 0001:00000454       GetDesktopWindow
+ 0001:0000045C       GetKeyState
+ 0001:00000464       GetScrollPos
+ 0001:0000046C       GetSystemMetrics
+ 0001:00000474       GetTabbedTextExtent
+ 0001:0000047C       GetWindowDC
+ 0001:00000484       HideCaret
+ 0001:0000048C       InflateRect
+ 0001:00000494       IntersectRect
+ 0001:0000049C       InvalidateRect
+ 0001:000004A4       KillTimer
+ 0001:000004AC       OffsetRect
+ 0001:000004B4       PostMessage
+ 0001:000004BC       PtInRect
+ 0001:000004C4       ReleaseDC
+ 0001:000004CC       SendMessage
+ 0001:000004D4       SetTimer
+ 0001:000004DC       SetWindowPos
+ 0001:000004E4       SetWindowsHookEx
+ 0001:000004EC       ShowWindow
+ 0001:000004F4       SystemParametersInfo
+ 0001:000004FC       TabbedTextOut
+ 0001:00000504       UnhookWindowsHookEx
+ 0001:0000050C       MakeLong
+ 0001:00000518       PointToSmallPoint
+ 0001:00000530       MakeWParam
+ 0001:00000538       MakeLParam
+ 0001:00000540       Finalization
+ 0001:00000570       Windows
+ 0001:00000598       Finalization
+ 0001:000005C8       Messages
+ 0001:000009B0       Finalization
+ 0001:000009E0       Accessibility_TLB
+ 0001:00000EA8       TreeView_GetItem
+ 0001:00000EC0       TreeView_SetItem
+ 0001:00000ED8       Finalization
+ 0001:00000F08       CommCtrl
+ 0001:00000F48       Finalization
+ 0001:00000F78       Imm
+ 0001:00001068       Finalization
+ 0001:00001098       ShlObj
+ 0001:000010A0       Finalization
+ 0001:000010D0       UrlMon
+ 0001:000010D8       Finalization
+ 0001:00001108       WinInet
+ 0001:00001110       Finalization
+ 0001:00001140       RegStr
+ 0001:00001148       Finalization
+ 0001:00001178       ShellAPI
+ 0001:00001190       Finalization
+ 0001:000011C0       WinSpool
+ 0001:00001568       Finalization
+ 0001:00001598       CommDlg
+ 0001:000015A0       Finalization
+ 0001:000015D0       Dlgs
+ 0001:000019E8       Finalization
+ 0001:00001A18       RichEdit
+ 0001:00001AD8       GetDefaultObject
+ 0001:00001B1C       GetDefaultObject
+ 0001:00001B60       GetLResult
+ 0001:00001BC8       Finalization
+ 0001:00001C0C       uAccessAPI
+ 0001:000062E0       ClientWidthOfList
+ 0001:00006324       FontWidthPixel
+ 0001:00006430       FontHeightPixel
+ 0001:00006474       HigherOf
+ 0001:00006480       LowerOf
+ 0001:0000648C       Piece
+ 0001:0000650C       SetPiece
+ 0001:00006630       IntArrayToString
+ 0001:00006700       StringToIntArray
+ 0001:00006874       StringBetween
+ 0001:000068AC       ItemTipKeyHook
+ 0001:000068E0       AddItemTipRef
+ 0001:00006918       RemoveItemTipRef
+ 0001:00006948       TItemTip.Create
+ 0001:0000699C       TItemTip.Destroy
+ 0001:000069D8       TItemTip.CreateParams
+ 0001:00006A04       TItemTip.Paint
+ 0001:00006AEC       TItemTip.Hide
+ 0001:00006B30       TItemTip.GetTabSettings
+ 0001:00006C5C       TItemTip.UpdateText
+ 0001:00006F00       TItemTip.Show
+ 0001:000070D0       GetORCBBitmap
+ 0001:0000715C       DestroyORCBBitmaps
+ 0001:00007180       TORStaticText.DoEnter
+ 0001:000071A8       TORStaticText.DoExit
+ 0001:000071D0       TORStrings.Add
+ 0001:0000724C       TORStrings.Clear
+ 0001:00007278       TORStrings.Create
+ 0001:000072D0       TORStrings.Delete
+ 0001:00007304       TORStrings.Destroy
+ 0001:00007338       TORStrings.Get
+ 0001:00007360       TORStrings.GetCount
+ 0001:00007378       TORStrings.GetObject
+ 0001:00007398       TORStrings.IndexOf
+ 0001:000073B8       TORStrings.Insert
+ 0001:0000743C       TORStrings.Put
+ 0001:000074BC       TORStrings.PutObject
+ 0001:000074D8       TORStrings.SetUpdateState
+ 0001:000074F4       TORStrings.Verify
+ 0001:00007940       TORListBox.Create
+ 0001:00007A38       TORListBox.Destroy
+ 0001:00007A8C       TORListBox.CreateParams
+ 0001:00007AA4       TORListBox.CreateWnd
+ 0001:00007AFC       TORListBox.Loaded
+ 0001:00007B30       TORListBox.DestroyWnd
+ 0001:00007B50       TORListBox.TextToShow
+ 0001:00007C4C       TORListBox.IsSynonym
+ 0001:00007D3C       TORListBox.GetDisplayText
+ 0001:00007D98       TORListBox.LBGetItemData
+ 0001:00007DCC       TORListBox.LBSetItemData
+ 0001:00007E58       TORListBox.LBGetText
+ 0001:00007F24       TORListBox.LBGetTextLen
+ 0001:00007FC8       TORListBox.LBAddString
+ 0001:000080B4       TORListBox.LBInsertString
+ 0001:000081C4       TORListBox.LBDeleteString
+ 0001:00008248       TORListBox.LBResetContent
+ 0001:000082E4       TORListBox.LBSetCurSel
+ 0001:00008300       TORListBox.CMFontChanged
+ 0001:00008338       TORListBox.WMKeyDown
+ 0001:00008520       TORListBox.WMLButtonDown
+ 0001:000087D4       TORListBox.WMLButtonUp
+ 0001:0000881C       TORListBox.WMRButtonUp
+ 0001:000088CC       TORListBox.WMLButtonDblClk
+ 0001:00008A94       TORListBox.WMCancelMode
+ 0001:00008AC8       TORListBox.WMMove
+ 0001:00008AE8       TORListBox.WMSize
+ 0001:00008B30       TORListBox.WMVScroll
+ 0001:00008B54       TORListBox.CMHintShow
+ 0001:00008BB0       TORListBox.Click
+ 0001:00008BCC       TORListBox.DoChange
+ 0001:00008C10       TORListBox.DoEnter
+ 0001:00008C1C       TORListBox.DoExit
+ 0001:00008C40       TORListBox.DestroyItems
+ 0001:00008CB8       TORListBox.ToggleCheckBox
+ 0001:00008DA8       TORListBox.KeyPress
+ 0001:00008DD8       TORListBox.MouseDown
+ 0001:00008E58       TORListBox.MouseMove
+ 0001:00009018       TORListBox.MeasureItem
+ 0001:000090BC       TORListBox.WMDestroy
+ 0001:000090E8       TORListBox.CNDrawItem
+ 0001:0000910C       TORListBox.DrawItem
+ 0001:00009544       TORListBox.GetIndexFromY
+ 0001:000095D8       TORListBox.SetFocusIndex
+ 0001:00009898       TORListBox.UMShowTip
+ 0001:000099D0       TORListBox.GetIEN
+ 0001:00009A80       TORListBox.GetItemIEN
+ 0001:00009B30       TORListBox.SelectByIEN
+ 0001:00009B94       TORListBox.SetExactByIEN
+ 0001:00009C94       TORListBox.GetItemID
+ 0001:00009D30       TORListBox.SelectByID
+ 0001:00009DF4       TORListBox.GetReference
+ 0001:00009E90       TORListBox.SetReference
+ 0001:00009F64       TORListBox.AddReference
+ 0001:00009FD4       TORListBox.InsertReference
+ 0001:0000A048       TORListBox.IndexOfReference
+ 0001:0000A0FC       TORListBox.GetTabPositions
+ 0001:0000A138       TORListBox.SetTabPositions
+ 0001:0000A2E4       TORListBox.SetTabPosInPixels
+ 0001:0000A2FC       TORListBox.SetTabStops
+ 0001:0000A48C       TORListBox.SetHideSynonyms
+ 0001:0000A550       TORListBox.SetSynonymChars
+ 0001:0000A5E4       TORListBox.GetStyle
+ 0001:0000A5EC       TORListBox.SetStyle
+ 0001:0000A620       TORListBox.SetDelimiter
+ 0001:0000A630       TORListBox.GetPieces
+ 0001:0000A650       TORListBox.SetPieces
+ 0001:0000A674       TORListBox.ResetItems
+ 0001:0000A850       TORListBox.SetLongList
+ 0001:0000A888       TORListBox.AdjustScrollBar
+ 0001:0000A918       TORListBox.CreateScrollBar
+ 0001:0000A9C8       TORListBox.FreeScrollBar
+ 0001:0000A9EC       TORListBox.ForDataUse
+ 0001:0000ACA4       TORListBox.InitLongList
+ 0001:0000AE40       TORListBox.InsertSeparator
+ 0001:0000AEE8       TORListBox.ClearTop
+ 0001:0000AF4C       ClearLong
+ 0001:0000B03C       TORListBox.NeedData
+ 0001:0000B354       TORListBox.PositionThumb
+ 0001:0000B404       TORListBox.ScrollTo
+ 0001:0000B844       TORListBox.GetStringIndex
+ 0001:0000B98C       TORListBox.SelectString
+ 0001:0000BC94       TORListBox.SetCheckBoxes
+ 0001:0000BCE0       TORListBox.SetFlatCheckBoxes
+ 0001:0000BCF8       TORListBox.GetChecked
+ 0001:0000BD40       TORListBox.SetChecked
+ 0001:0000BDD4       TORListBox.GetCheckedState
+ 0001:0000BE10       TORListBox.SetCheckedState
+ 0001:0000BE94       TORListBox.GetMultiSelect
+ 0001:0000BE9C       TORListBox.SetMultiSelect
+ 0001:0000BEC0       TORListBox.GetCheckedString
+ 0001:0000BF68       TORListBox.SetCheckedString
+ 0001:0000C004       TORListBox.GetMItems
+ 0001:0000C03C       TORListBox.SetMItems
+ 0001:0000C080       TORListBox.Clear
+ 0001:0000C09C       TORListBox.SetCaption
+ 0001:0000C13C       TORListBox.GetCaption
+ 0001:0000C158       TORListBox.MakeAccessible
+ 0001:0000C220       TORListBox.WMGetObject
+ 0001:0000C258       TORDropPanel.BtnClicked
+ 0001:0000C290       TORDropPanel.Create
+ 0001:0000C308       TORDropPanel.CreateParams
+ 0001:0000C348       TORDropPanel.GetButton
+ 0001:0000C3F8       TORDropPanel.ResetButtons
+ 0001:0000C42C       TORDropPanel.Resize
+ 0001:0000C4C4       TORDropPanel.UpdateButtons
+ 0001:0000C648       TORDropPanel.WMActivateApp
+ 0001:0000C6A8       TORComboEdit.CreateParams
+ 0001:0000C6C8       TORComboEdit.WMKillFocus
+ 0001:0000C740       TORComboEdit.WMSetFocus
+ 0001:0000C79C       TORComboBox.Create
+ 0001:0000C93C       TORComboBox.WMDestroy
+ 0001:0000C96C       TORComboBox.CMFontChanged
+ 0001:0000C984       TORComboBox.WMMove
+ 0001:0000C9A0       TORComboBox.WMSize
+ 0001:0000C9B8       TORComboBox.WMTimer
+ 0001:0000CA18       TORComboBox.EditControl
+ 0001:0000CA2C       TORComboBox.AdjustSizeOfSelf
+ 0001:0000CBAC       TORComboBox.DropButtonDown
+ 0001:0000CBDC       TORComboBox.DropButtonUp
+ 0001:0000CC0C       TORComboBox.DoEnter
+ 0001:0000CC34       TORComboBox.UMGotFocus
+ 0001:0000CC64       TORComboBox.DoExit
+ 0001:0000CCAC       TORComboBox.Loaded
+ 0001:0000CCC8       TORComboBox.FwdChange
+ 0001:0000CCFC       TORComboBox.FwdChangeDelayed
+ 0001:0000D00C       TORComboBox.FwdClick
+ 0001:0000D160       TORComboBox.FwdDblClick
+ 0001:0000D184       TORComboBox.FwdKeyDown
+ 0001:0000D55C       TORComboBox.FwdKeyPress
+ 0001:0000D5A4       TORComboBox.FwdKeyUp
+ 0001:0000D610       TORComboBox.FwdMouseUp
+ 0001:0000D634       TORComboBox.FwdNeedData
+ 0001:0000D6AC       TORComboBox.SetDropDownCount
+ 0001:0000D6B8       TORComboBox.SetDroppedDown
+ 0001:0000D904       TORComboBox.SetEditRect
+ 0001:0000D9D4       TORComboBox.SetEditText
+ 0001:0000DA78       TORComboBox.SetItemIndex
+ 0001:0000DB5C       TORComboBox.SelectByIEN
+ 0001:0000DB88       TORComboBox.SelectByID
+ 0001:0000DBAC       TORComboBox.SetExactByIEN
+ 0001:0000DBD8       TORComboBox.SetStyle
+ 0001:0000DDB8       TORComboBox.StartKeyTimer
+ 0001:0000DE28       TORComboBox.StopKeyTimer
+ 0001:0000DE54       TORComboBox.AddReference
+ 0001:0000DEB8       TORComboBox.Clear
+ 0001:0000DEE0       TORComboBox.ClearTop
+ 0001:0000DEF0       TORComboBox.ForDataUse
+ 0001:0000DF00       TORComboBox.InitLongList
+ 0001:0000DF50       TORComboBox.IndexOfReference
+ 0001:0000DFB0       TORComboBox.InsertReference
+ 0001:0000E018       TORComboBox.InsertSeparator
+ 0001:0000E028       TORComboBox.GetAutoSelect
+ 0001:0000E038       TORComboBox.GetColor
+ 0001:0000E044       TORComboBox.GetDelimiter
+ 0001:0000E054       TORComboBox.GetDisplayText
+ 0001:0000E074       TORComboBox.GetItemHeight
+ 0001:0000E084       TORComboBox.GetIEN
+ 0001:0000E0A8       TORComboBox.GetItemID
+ 0001:0000E0C4       TORComboBox.GetItemIEN
+ 0001:0000E0E8       TORComboBox.GetItemIndex
+ 0001:0000E0FC       TORComboBox.GetItemTipEnable
+ 0001:0000E10C       TORComboBox.GetItemTipColor
+ 0001:0000E11C       TORComboBox.GetLongList
+ 0001:0000E12C       TORComboBox.GetMaxLength
+ 0001:0000E13C       TORComboBox.GetPieces
+ 0001:0000E158       TORComboBox.GetReference
+ 0001:0000E178       TORComboBox.GetSelLength
+ 0001:0000E18C       TORComboBox.GetSelStart
+ 0001:0000E1A0       TORComboBox.GetSelText
+ 0001:0000E1C0       TORComboBox.GetShortCount
+ 0001:0000E1D0       TORComboBox.GetSorted
+ 0001:0000E1E0       TORComboBox.GetHideSynonyms
+ 0001:0000E1F0       TORComboBox.GetSynonymChars
+ 0001:0000E210       TORComboBox.SetHideSynonyms
+ 0001:0000E220       TORComboBox.SetSynonymChars
+ 0001:0000E270       TORComboBox.GetTabPositions
+ 0001:0000E28C       TORComboBox.GetTabPosInPixels
+ 0001:0000E29C       TORComboBox.GetText
+ 0001:0000E2B8       TORComboBox.SelectAll
+ 0001:0000E2C8       TORComboBox.SetAutoSelect
+ 0001:0000E2D8       TORComboBox.SetColor
+ 0001:0000E310       TORComboBox.SetDelimiter
+ 0001:0000E320       TORComboBox.SetItemHeight
+ 0001:0000E330       TORComboBox.SetItemTipEnable
+ 0001:0000E340       TORComboBox.SetItemTipColor
+ 0001:0000E350       TORComboBox.SetLongList
+ 0001:0000E360       TORComboBox.SetMaxLength
+ 0001:0000E370       TORComboBox.SetPieces
+ 0001:0000E380       TORComboBox.SetReference
+ 0001:0000E3E0       TORComboBox.SetSelLength
+ 0001:0000E3F8       TORComboBox.SetSelStart
+ 0001:0000E410       TORComboBox.SetSelText
+ 0001:0000E420       TORComboBox.SetSorted
+ 0001:0000E430       TORComboBox.SetTabPositions
+ 0001:0000E440       TORComboBox.SetTabPosInPixels
+ 0001:0000E450       TORComboBox.SetText
+ 0001:0000E460       TORComboBox.SetItems
+ 0001:0000E474       TORComboBox.GetCheckBoxes
+ 0001:0000E484       TORComboBox.GetChecked
+ 0001:0000E494       TORComboBox.GetCheckEntireLine
+ 0001:0000E4A4       TORComboBox.GetFlatCheckBoxes
+ 0001:0000E4B4       TORComboBox.SetCheckBoxes
+ 0001:0000E6A8       TORComboBox.SetChecked
+ 0001:0000E6E0       TORComboBox.SetCheckEntireLine
+ 0001:0000E6F0       TORComboBox.SetFlatCheckBoxes
+ 0001:0000E700       TORComboBox.DropPanelBtnPressed
+ 0001:0000E768       TORComboBox.GetCheckedString
+ 0001:0000E784       TORComboBox.SetCheckedString
+ 0001:0000E794       TORComboBox.SetCheckBoxEditColor
+ 0001:0000E7C8       TORComboBox.SetListItemsOnly
+ 0001:0000E7E8       TORComboBox.SetOnCheckedText
+ 0001:0000E850       TORComboBox.SetTemplateField
+ 0001:0000E898       TORComboBox.GetOnSynonymCheck
+ 0001:0000E8B0       TORComboBox.SetOnSynonymCheck
+ 0001:0000E8D0       TORComboBox.GetEnabled
+ 0001:0000E8DC       TORComboBox.SetEnabled
+ 0001:0000E928       TORComboBox.GetEditBoxText
+ 0001:0000EA38       TORComboBox.UpdateCheckEditBoxText
+ 0001:0000EAB8       TORComboBox.CheckBoxSelected
+ 0001:0000EAEC       TORComboBox.GetMItems
+ 0001:0000EAF4       TORComboBox.SetCaption
+ 0001:0000EB04       TORComboBox.GetCaption
+ 0001:0000EB20       TORComboBox.MakeAccessible
+ 0001:0000EB78       TORComboBox.GetCaseChanged
+ 0001:0000EB88       TORComboBox.SetCaseChanged
+ 0001:0000EB98       TORComboBox.GetLookupPiece
+ 0001:0000EBA8       TORComboBox.SetLookupPiece
+ 0001:0000EBB8       TSizeRatio.Create
+ 0001:0000EC30       TORAutoPanel.Destroy
+ 0001:0000ECA8       TORAutoPanel.BuildSizes
+ 0001:0000EDA0       TORAutoPanel.Loaded
+ 0001:0000EDD4       TORAutoPanel.DoResize
+ 0001:0000EF7C       TORAutoPanel.Resize
+ 0001:0000EFA8       TOROffsetLabel.Create
+ 0001:0000F008       TOROffsetLabel.CMTextChanged
+ 0001:0000F020       TOROffsetLabel.CMFontChanged
+ 0001:0000F038       TOROffsetLabel.AdjustSizeOfSelf
+ 0001:0000F0D8       TOROffsetLabel.DoDrawText
+ 0001:0000F178       TOROffsetLabel.Paint
+ 0001:0000F214       TOROffsetLabel.GetTransparent
+ 0001:0000F220       TOROffsetLabel.SetTransparent
+ 0001:0000F264       TOROffsetLabel.SetVertOffset
+ 0001:0000F274       TOROffsetLabel.SetHorzOffset
+ 0001:0000F284       TOROffsetLabel.SetWordWrap
+ 0001:0000F29C       TORAlignButton.Create
+ 0001:0000F2EC       TORAlignButton.CreateParams
+ 0001:0000F338       TORAlignButton.SetAlignment
+ 0001:0000F350       TORAlignButton.SetLayout
+ 0001:0000F368       TORAlignButton.SetWordWrap
+ 0001:0000F380       TORTreeNode.EnsureVisible
+ 0001:0000F430       TORTreeNode.GetBold
+ 0001:0000F46C       TORTreeNode.GetORTreeView
+ 0001:0000F488       TORTreeNode.GetParent
+ 0001:0000F4A4       TORTreeNode.GetText
+ 0001:0000F4BC       TORTreeNode.SetBold
+ 0001:0000F500       TORTreeNode.SetPiece
+ 0001:0000F544       TORTreeNode.SetStringData
+ 0001:0000F5F0       TORTreeNode.SetText
+ 0001:0000F5FC       TORTreeNode.UpdateText
+ 0001:0000F68C       TORTreeNode.MakeAccessible
+ 0001:0000F750       TORTreeNode.WMGetObject
+ 0001:0000F784       CalcShortName
+ 0001:0000F9B0       TORTreeNode.SetCaption
+ 0001:0000FA60       TORTreeView.CNNotify
+ 0001:0000FAEC       TORTreeView.Create
+ 0001:0000FB2C       TORTreeView.CreateNode
+ 0001:0000FB68       TORTreeView.FindPieceNode
+ 0001:0000FBC8       TORTreeView.FindPieceNode
+ 0001:0000FCB0       TORTreeView.GetExpandedIDStr
+ 0001:0000FDAC       TORTreeView.SetExpandedIDStr
+ 0001:0000FDBC       TORTreeView.SetExpandedIDStr
+ 0001:0000FF30       TORTreeView.GetHorzScrollPos
+ 0001:0000FF48       TORTreeView.GetVertScrollPos
+ 0001:0000FF60       TORTreeView.RenameNodes
+ 0001:0001001C       TORTreeView.SetNodeDelim
+ 0001:00010034       TORTreeView.SetHorzScrollPos
+ 0001:00010070       TORTreeView.SetNodePiece
+ 0001:00010088       TORTreeView.SetVertScrollPos
+ 0001:000100C4       TORTreeView.GetNodeID
+ 0001:000100EC       TORTreeView.GetNodeID
+ 0001:000101B0       TORTreeView.MakeAccessible
+ 0001:00010278       TORTreeView.WMGetObject
+ 0001:000102B0       TORTreeView.SetShortNodeCaptions
+ 0001:000102C0       TORCBImageIndexes.Create
+ 0001:00010344       TORCBImageIndexes.Destroy
+ 0001:00010378       TORCBImageIndexes.SetImages
+ 0001:000103B8       RStr
+ 0001:000103F4       TORCBImageIndexes.IdxString
+ 0001:000104D8       TORCBImageIndexes.SetIdxString
+ 0001:00010638       TORCBImageIndexes.ImageListChanged
+ 0001:0001066C       TORCBImageIndexes.Notification
+ 0001:0001069C       TORCBImageIndexes.SetCheckedDisabledIndex
+ 0001:000106B0       TORCBImageIndexes.SetCheckedEnabledIndex
+ 0001:000106C4       TORCBImageIndexes.SetGrayedDisabledIndex
+ 0001:000106D8       TORCBImageIndexes.SetGrayedEnabledIndex
+ 0001:000106EC       TORCBImageIndexes.SetUncheckedDisabledIndex
+ 0001:00010700       TORCBImageIndexes.SetUncheckedEnabledIndex
+ 0001:00010714       TORCheckBox.Create
+ 0001:00010770       TORCheckBox.ListViewCreate
+ 0001:000107BC       TORCheckBox.CreateCommon
+ 0001:000107EC       TORCheckBox.Destroy
+ 0001:00010834       TORCheckBox.GetImageIndexes
+ 0001:00010850       TORCheckBox.GetImageList
+ 0001:0001085C       TORCheckBox.SetImageIndexes
+ 0001:0001086C       TORCheckBox.SetImageList
+ 0001:0001087C       TORCheckBox.Toggle
+ 0001:00010908       TORCheckBox.CreateParams
+ 0001:00010924       TORCheckBox.CMEnabledChanged
+ 0001:0001093C       TORCheckBox.CMFontChanged
+ 0001:00010954       TORCheckBox.CNDrawItem
+ 0001:00010970       TORCheckBox.CNMeasureItem
+ 0001:00010994       TORCheckBox.GetDrawData
+ 0001:00010F3C       TORCheckBox.DrawItem
+ 0001:00011324       TORCheckBox.SetGrayedStyle
+ 0001:00011348       TORCheckBox.WMLButtonDblClk
+ 0001:00011360       TORCheckBox.WMSize
+ 0001:00011388       TORCheckBox.BMSetCheck
+ 0001:0001148C       TORCheckBox.SetWordWrap
+ 0001:000114B4       TORCheckBox.SetAutoSize
+ 0001:000114DC       TORCheckBox.AutoAdjustSize
+ 0001:000116B0       TORCheckBox.GetCaption
+ 0001:000116C8       TORCheckBox.SetCaption
+ 0001:00011730       TORCheckBox.SetAllowAllUnchecked
+ 0001:00011740       TORCheckBox.SetGroupIndex
+ 0001:00011770       TORCheckBox.SyncAllowAllUnchecked
+ 0001:000117EC       TORCheckBox.SetParent
+ 0001:00011804       TORCheckBox.SetRadioStyle
+ 0001:00011814       TORCheckBox.SetAssociate
+ 0001:00011850       EnableCtrl
+ 0001:000118EC       TORCheckBox.UpdateAssociate
+ 0001:0001190C       TORCheckBox.Notification
+ 0001:00011940       TORCheckBox.SetFocusOnBox
+ 0001:00011950       TORCheckBox.BMGetCheck
+ 0001:0001197C       TORCheckBox.BMGetState
+ 0001:00011980       TORListView.WMNotify
+ 0001:00011A48       TORListView.LVMSetColumn
+ 0001:00011AFC       TORListView.LVMSetColumnWidth
+ 0001:00011BB0       TORComboPanelEdit.Destroy
+ 0001:00011BE8       TORComboPanelEdit.Paint
+ 0001:00011CB0       TKeyClickPanel.KeyDown
+ 0001:00011CD8       TKeyClickRadioGroup.Click
+ 0001:00011D10       TKeyClickRadioGroup.Create
+ 0001:00011D70       TKeyClickRadioGroup.KeyDown
+ 0001:00011DE0       TCaptionListBox.DoEnter
+ 0001:00011E04       TCaptionListBox.GetCaption
+ 0001:00011E30       TCaptionListBox.MakeAccessible
+ 0001:00011EF8       TCaptionListBox.SetCaption
+ 0001:00011F7C       TCaptionListBox.WMGetObject
+ 0001:00011FB4       TCaptionListBox.WMMouseMove
+ 0001:00012074       TCaptionListBox.WMRButtonUp
+ 0001:000121A8       TCaptionCheckListBox.GetCaption
+ 0001:000121D4       TCaptionCheckListBox.SetCaption
+ 0001:00012258       TCaptionMemo.GetCaption
+ 0001:00012284       TCaptionMemo.SetCaption
+ 0001:00012308       TCaptionEdit.GetCaption
+ 0001:00012334       TCaptionEdit.SetCaption
+ 0001:000123B8       TCaptionRichEdit.MakeAccessible
+ 0001:0001247C       TCaptionRichEdit.WMGetObject
+ 0001:000124B4       TCaptionTreeView.GetCaption
+ 0001:000124CC       TCaptionTreeView.SetCaption
+ 0001:0001255C       TCaptionComboBox.GetCaption
+ 0001:00012588       TCaptionComboBox.SetCaption
+ 0001:0001260C       TORAlignSpeedButton.Paint
+ 0001:00012684       GoodNotifyWinEvent
+ 0001:0001268C       TCaptionStringGrid.ColRowToIndex
+ 0001:000126DC       TCaptionStringGrid.IndexToColRow
+ 0001:00012740       TCaptionStringGrid.KeyUp
+ 0001:000127B8       TCaptionStringGrid.MakeAccessible
+ 0001:0001287C       TCaptionStringGrid.WMGetObject
+ 0001:000128B4       IsAMouseButtonDown
+ 0001:000128EC       TORComboBox.SetNumForMatch
+ 0001:00012914       TORComboBox.SetUniqueAutoComplete
+ 0001:0001291C       TORListBox.VerifyUnique
+ 0001:00012A18       TORComboBox.SetTextAutoComplete
+ 0001:00012A94       Finalization
+ 0001:00012AE0       ORCtrls
+ 0001:00012DE4       TORImageIndexesPropertyEditor.Modified
+ 0001:00012DF0       TORImageIndexesPropertyEditor.GetAttributes
+ 0001:00012DFC       TORImageIndexesPropertyEditor.GetProperties
+ 0001:00012E30       TORImageIndexesPropertyEditor.GetValue
+ 0001:00012E48       TORImageIndexesPropertyEditor.SetValue
+ 0001:00012E54       TORImageIndexesElementPropertyEditor.Create
+ 0001:00012EA0       TORImageIndexesElementPropertyEditor.ParentImgIdx
+ 0001:00012EDC       TORImageIndexesElementPropertyEditor.GetAttributes
+ 0001:00012EE8       TORImageIndexesElementPropertyEditor.GetName
+ 0001:00013024       TORImageIndexesElementPropertyEditor.GetValue
+ 0001:000130EC       TORImageIndexesElementPropertyEditor.SetValue
+ 0001:000131A0       Register
+ 0001:000132B0       Finalization
+ 0001:000132E0       ORCtrlsDsgn
+ 0001:00013528       @GetPackageInfoTable
+ 0001:00013530       @PackageLoad
+ 0001:0001353C       @PackageUnload
+ 0001:00013548       ORCtrlLib60
+ 0002:00000000       Module
+ 0002:00000018       TlsProc
+ 0002:00000028       LIBID_Accessibility
+ 0002:00000038       IID_IAccessible
+ 0002:00000048       IID_IAccessibleHandler
+ 0002:00000058       ALPHA_DISTRIBUTION
+ 0002:000001EC       CheckBoxImageResNames
+ 0002:0000022C       ComboBoxImages
+ 0002:00000234       ButtonAlignment
+ 0002:00000240       ButtonWordWrap
+ 0002:00000248       ButtonLayout
+ 0002:00001000       ModuleIsLib
+ 0002:00001001       ModuleIsPackage
+ 0002:00001004       TlsIndex
+ 0002:0000100C       HInstance
+ 0002:00001010       .1
+ 0002:00001014       tlsBuffer
+ 0002:00001018       .3
+ 0002:0000101C       .1
+ 0002:00001020       .1
+ 0002:00001024       .1
+ 0002:00001028       .1
+ 0002:0000102C       .1
+ 0002:00001030       .1
+ 0002:00001034       .1
+ 0002:00001038       .1
+ 0002:0000103C       .1
+ 0002:00001040       .3
+ 0002:00001044       .1
+ 0002:00001048       .1
+ 0002:0000104C       .1
+ 0002:00001050       .1
+ 0002:00001054       CreateStdAccessibleObject
+ 0002:00001058       LresultFromObject
+ 0002:0000105C       OleAccHandle
+ 0002:00001060       .13
+ 0002:00001064       uKeyHookHandle
+ 0002:00001068       uItemTip
+ 0002:0000106C       uItemTipCount
+ 0002:00001070       uNewStyle
+ 0002:00001074       ORCBImages
+ 0002:000010B4       .3
+
+
+Line numbers for Accessibility_TLB(..\CPRS-Chart\Accessibility_TLB.pas) segment .text
+
+   149 0001:000009E0   149 0001:000009E7
+
+Line numbers for uAccessAPI(uAccessAPI.pas) segment .text
+
+   115 0001:00001AD8   116 0001:00001AE1   118 0001:00001AEA   119 0001:00001B05
+   122 0001:00001B0E   123 0001:00001B15   126 0001:00001B1C   127 0001:00001B25
+   129 0001:00001B2E   130 0001:00001B49   133 0001:00001B52   134 0001:00001B59
+   137 0001:00001B60   138 0001:00001B80   140 0001:00001B89   143 0001:00001BA0
+   144 0001:00001BC4   161 0001:00001BC8   162 0001:00001BEA   164 0001:00001C0A
+   147 0001:00001C0C   148 0001:00001C18   149 0001:00001C27   151 0001:00001C30
+   152 0001:00001C45   156 0001:00001C5C   157 0001:00001C63   160 0001:00001C6A
+
+Line numbers for ORCtrls(ORCtrls.pas) segment .text
+
+  1086 0001:000062E0  1089 0001:000062E4  1090 0001:000062E7  1092 0001:000062F0
+  1093 0001:000062FA  1096 0001:0000630D  1097 0001:0000631F  1105 0001:00006324
+  1106 0001:0000632D  1107 0001:00006337  1108 0001:00006345  1109 0001:00006352
+  1110 0001:00006360  1111 0001:00006374  1113 0001:000063AC  1116 0001:000063CE
+  1118 0001:000063E4  1126 0001:00006430  1127 0001:0000643B  1128 0001:00006444
+  1129 0001:0000644D  1130 0001:00006457  1131 0001:0000645A  1132 0001:00006461
+  1133 0001:0000646B  1138 0001:00006474  1139 0001:00006476  1140 0001:0000647E
+  1145 0001:00006480  1146 0001:00006482  1147 0001:0000648A  1154 0001:0000648C
+  1155 0001:0000649A  1156 0001:0000649F  1157 0001:000064A8  1160 0001:000064B3
+  1161 0001:000064BD  1162 0001:000064C2  1158 0001:000064CB  1164 0001:000064D4
+  1165 0001:000064DF  1166 0001:00006503  1173 0001:0000650C  1174 0001:00006537
+  1175 0001:0000653C  1176 0001:00006548  1179 0001:00006556  1180 0001:00006560
+  1181 0001:00006565  1177 0001:00006571  1183 0001:0000657A  1184 0001:00006587
+  1185 0001:0000658C  1186 0001:000065BD  1187 0001:00006627  1193 0001:00006630
+  1194 0001:00006654  1195 0001:0000665B  1196 0001:000066B0  1197 0001:000066ED
+  1204 0001:00006700  1205 0001:00006728  1207 0001:00006747  1209 0001:00006758
+  1210 0001:00006782  1213 0001:000067A0  1214 0001:000067AB  1216 0001:000067BB
+  1217 0001:000067D0  1219 0001:000067DE  1220 0001:000067F8  1222 0001:0000681A
+  1223 0001:00006860  1227 0001:00006874  1228 0001:00006882  1229 0001:00006884
+  1230 0001:000068A3  1236 0001:000068AC  1237 0001:000068B3  1238 0001:000068C4
+  1239 0001:000068D8  1244 0001:000068E0  1245 0001:000068E3  1246 0001:00006905
+  1247 0001:00006913  1250 0001:00006918  1251 0001:0000691B  1252 0001:00006929
+  1253 0001:00006945  1257 0001:00006948  1258 0001:0000695D  1259 0001:00006966
+  1260 0001:00006996  1264 0001:0000699C  1265 0001:000069AA  1266 0001:000069B5
+  1267 0001:000069C1  1268 0001:000069D3  1272 0001:000069D8  1273 0001:000069DE
+  1274 0001:000069E5  1275 0001:000069EC  1276 0001:000069FC  1277 0001:00006A00
+  1285 0001:00006A04  1286 0001:00006A22  1287 0001:00006A2C  1289 0001:00006A32
+  1290 0001:00006A41  1291 0001:00006A55  1295 0001:00006A99  1297 0001:00006AE3
+  1301 0001:00006AEC  1302 0001:00006AF2  1306 0001:00006AFB  1307 0001:00006B10
+  1308 0001:00006B17  1309 0001:00006B26  1311 0001:00006B2D  1317 0001:00006B30
+  1318 0001:00006B3B  1319 0001:00006B47  1320 0001:00006B51  1322 0001:00006B56
+  1323 0001:00006B65  1327 0001:00006B7C  1328 0001:00006B9C  1329 0001:00006BB3
+  1330 0001:00006BE0  1332 0001:00006BF5  1334 0001:00006BFA  1335 0001:00006BFE
+  1338 0001:00006C32  1339 0001:00006C43  1341 0001:00006C4D  1332 0001:00006C4E
+  1342 0001:00006C53  1349 0001:00006C5C  1350 0001:00006C82  1351 0001:00006C93
+  1352 0001:00006CA7  1354 0001:00006CB0  1355 0001:00006CC3  1358 0001:00006CD8
+  1359 0001:00006CF2  1361 0001:00006D05  1362 0001:00006D33  1364 0001:00006D6E
+  1366 0001:00006D75  1369 0001:00006DBA  1370 0001:00006DC9  1371 0001:00006DD0
+  1372 0001:00006DD5  1373 0001:00006DDB  1375 0001:00006DEA  1376 0001:00006DF4
+  1378 0001:00006DFE  1379 0001:00006E02  1381 0001:00006E0E  1382 0001:00006E10
+  1384 0001:00006E23  1386 0001:00006E38  1387 0001:00006E47  1390 0001:00006E54
+  1392 0001:00006E56  1393 0001:00006E5D  1394 0001:00006E79  1396 0001:00006E9F
+  1397 0001:00006ED5  1402 0001:00006F00  1403 0001:00006F13  1404 0001:00006F19
+  1405 0001:00006F1F  1406 0001:00006F25  1407 0001:00006F37  1408 0001:00006F5A
+  1409 0001:00006F64  1430 0001:000070D0  1431 0001:000070E7  1433 0001:000070F6
+  1434 0001:00007109  1436 0001:00007131  1437 0001:00007157  1443 0001:0000715C
+  1444 0001:00007161  1446 0001:00007168  1447 0001:0000716E  1448 0001:00007173
+  1444 0001:00007176  1449 0001:0000717A  1454 0001:00007180  1455 0001:00007186
+  1456 0001:0000718D  1457 0001:00007197  1458 0001:000071A5  1461 0001:000071A8
+  1462 0001:000071AE  1463 0001:000071B5  1464 0001:000071BF  1465 0001:000071CD
+  1472 0001:000071D0  1473 0001:000071EF  1474 0001:000071F5  1475 0001:000071F9
+  1476 0001:00007212  1477 0001:00007218  1478 0001:00007245  1483 0001:0000724C
+  1484 0001:00007253  1485 0001:0000725A  1486 0001:00007262  1487 0001:00007265
+  1488 0001:00007269  1489 0001:00007271  1490 0001:00007274  1493 0001:00007278
+  1494 0001:00007290  1495 0001:0000729F  1496 0001:000072A2  1497 0001:000072AE
+  1498 0001:000072C9  1503 0001:000072D0  1504 0001:000072DA  1505 0001:000072E1
+  1506 0001:000072EB  1507 0001:000072EE  1508 0001:000072F2  1509 0001:000072FC
+  1510 0001:000072FF  1513 0001:00007304  1514 0001:00007312  1515 0001:0000731A
+  1516 0001:00007331  1519 0001:00007338  1520 0001:00007345  1521 0001:0000734C
+  1522 0001:00007359  1525 0001:00007360  1526 0001:00007366  1527 0001:0000736D
+  1528 0001:00007375  1531 0001:00007378  1532 0001:00007381  1533 0001:00007388
+  1534 0001:00007392  1537 0001:00007398  1538 0001:000073A1  1539 0001:000073A8
+  1540 0001:000073B2  1545 0001:000073B8  1546 0001:000073DB  1547 0001:000073E2
+  1548 0001:000073EF  1549 0001:000073F5  1550 0001:000073F9  1551 0001:00007412
+  1552 0001:00007435  1558 0001:0000743C  1559 0001:0000745F  1560 0001:0000746C
+  1561 0001:00007472  1562 0001:00007476  1563 0001:0000748F  1564 0001:000074B2
+  1567 0001:000074BC  1568 0001:000074C6  1569 0001:000074D0  1572 0001:000074D8
+  1573 0001:000074DB  1574 0001:000074DF  1576 0001:000074E9  1577 0001:000074F1
+  1586 0001:000074F4  1587 0001:00007517  1588 0001:00007521  1589 0001:00007527
+  1590 0001:0000753D  1591 0001:00007544  1592 0001:0000755A  1593 0001:00007569
+  1594 0001:00007577  1595 0001:00007581  1596 0001:00007597  1597 0001:000075C2
+  1598 0001:000075ED  1599 0001:000075F9  1601 0001:00007603  1602 0001:0000761B
+  1603 0001:00007627  1604 0001:0000766B  1605 0001:00007677  1607 0001:000076C7
+  1608 0001:000076E0  1609 0001:000076ED  1610 0001:000076FE  1612 0001:00007723
+  1616 0001:00007732  1617 0001:00007764  1621 0001:00007796  1601 0001:00007797
+  1622 0001:000077A0  1623 0001:000077AC  1624 0001:000077BB  1627 0001:000077E7
+  1630 0001:00007826  1636 0001:00007940  1637 0001:00007955  1638 0001:0000795E
+  1639 0001:00007963  1640 0001:0000796D  1641 0001:00007977  1642 0001:0000797E
+  1643 0001:00007988  1644 0001:0000798F  1645 0001:00007996  1646 0001:0000799D
+  1647 0001:000079A4  1648 0001:000079AB  1649 0001:000079B2  1650 0001:000079BC
+  1651 0001:000079C6  1652 0001:000079CF  1653 0001:000079D6  1654 0001:000079E6
+  1655 0001:000079ED  1656 0001:000079F4  1657 0001:000079FB  1658 0001:00007A02
+  1659 0001:00007A09  1660 0001:00007A28  1664 0001:00007A38  1665 0001:00007A46
+  1666 0001:00007A51  1667 0001:00007A64  1668 0001:00007A6B  1669 0001:00007A70
+  1670 0001:00007A87  1674 0001:00007A8C  1675 0001:00007A92  1676 0001:00007A99
+  1677 0001:00007AA0  1685 0001:00007AA4  1686 0001:00007AAB  1687 0001:00007AB2
+  1688 0001:00007AB4  1690 0001:00007ABE  1691 0001:00007AC1  1693 0001:00007AC5
+  1694 0001:00007ACC  1696 0001:00007AD6  1697 0001:00007AD9  1699 0001:00007ADE
+  1700 0001:00007AE5  1701 0001:00007AF5  1705 0001:00007AFC  1706 0001:00007B02
+  1707 0001:00007B09  1708 0001:00007B24  1709 0001:00007B2B  1714 0001:00007B30
+  1715 0001:00007B36  1716 0001:00007B3D  1717 0001:00007B44  1718 0001:00007B4B
+  1724 0001:00007B50  1725 0001:00007B7D  1727 0001:00007B87  1728 0001:00007B8E
+  1729 0001:00007B99  1728 0001:00007BE4  1730 0001:00007BE7  1734 0001:00007BFD
+  1736 0001:00007C42  1742 0001:00007C4C  1743 0001:00007C6D  1744 0001:00007C71
+  1746 0001:00007C8B  1747 0001:00007C99  1748 0001:00007C9E  1749 0001:00007CAA
+  1748 0001:00007CE7  1750 0001:00007CEA  1751 0001:00007CF6  1752 0001:00007D00
+  1754 0001:00007D35  1761 0001:00007D3C  1762 0001:00007D4F  1763 0001:00007D56
+  1764 0001:00007D5D  1765 0001:00007D77  1766 0001:00007D7E  1768 0001:00007D82
+  1770 0001:00007D90  1784 0001:00007D98  1785 0001:00007DA1  1786 0001:00007DAA
+  1788 0001:00007DB3  1789 0001:00007DB6  1790 0001:00007DBA  1792 0001:00007DC2
+  1794 0001:00007DC7  1800 0001:00007DCC  1801 0001:00007DD5  1803 0001:00007DDE
+  1804 0001:00007DE5  1805 0001:00007DFD  1806 0001:00007E04  1807 0001:00007E08
+  1808 0001:00007E0E  1809 0001:00007E11  1810 0001:00007E3C  1812 0001:00007E48
+  1813 0001:00007E51  1820 0001:00007E58  1821 0001:00007E72  1822 0001:00007E7B
+  1824 0001:00007E8A  1825 0001:00007E91  1826 0001:00007EA9  1827 0001:00007EB0
+  1829 0001:00007EB4  1830 0001:00007EBB  1831 0001:00007ECC  1832 0001:00007EDE
+  1833 0001:00007EE9  1837 0001:00007EF2  1838 0001:00007EFC  1841 0001:00007F1E
+  1847 0001:00007F24  1848 0001:00007F3E  1849 0001:00007F47  1851 0001:00007F56
+  1852 0001:00007F5D  1853 0001:00007F75  1854 0001:00007F79  1856 0001:00007F97
+  1857 0001:00007F9C  1859 0001:00007FC0  1866 0001:00007FC8  1867 0001:00007FD2
+  1869 0001:00007FDF  1871 0001:00007FE8  1873 0001:00007FFA  1874 0001:00008003
+  1875 0001:00008018  1878 0001:0000801D  1879 0001:0000802F  1881 0001:00008031
+  1882 0001:00008036  1883 0001:0000803A  1885 0001:00008048  1886 0001:0000804F
+  1887 0001:00008058  1889 0001:0000805F  1890 0001:00008069  1892 0001:0000806F
+  1893 0001:00008076  1894 0001:0000808D  1896 0001:00008096  1898 0001:000080A5
+  1899 0001:000080AE  1905 0001:000080B4  1906 0001:000080BE  1908 0001:000080CB
+  1910 0001:000080D4  1912 0001:000080DD  1913 0001:000080E4  1917 0001:000080F4
+  1919 0001:000080FF  1920 0001:00008116  1922 0001:0000811F  1925 0001:0000812D
+  1926 0001:0000813F  1928 0001:00008141  1929 0001:00008146  1930 0001:0000814A
+  1932 0001:00008158  1933 0001:0000815F  1934 0001:00008168  1935 0001:0000816F
+  1936 0001:00008179  1938 0001:0000817F  1939 0001:00008186  1940 0001:0000819D
+  1942 0001:000081A6  1944 0001:000081B5  1945 0001:000081BE  1951 0001:000081C4
+  1954 0001:000081CD  1955 0001:000081D4  1956 0001:000081EC  1957 0001:000081F3
+  1959 0001:000081F7  1960 0001:00008209  1961 0001:00008217  1964 0001:00008222
+  1965 0001:00008229  1966 0001:00008232  1967 0001:00008239  1968 0001:00008243
+  1975 0001:00008248  1976 0001:00008254  1978 0001:0000825D  1979 0001:0000826D
+  1981 0001:00008280  1982 0001:00008287  1983 0001:0000829C  1984 0001:000082A3
+  1985 0001:000082AE  1979 0001:000082AF  1986 0001:000082B2  1989 0001:000082C2
+  1990 0001:000082CB  1991 0001:000082D3  1992 0001:000082DD  1996 0001:000082E4
+  1997 0001:000082EA  1998 0001:000082F1  1999 0001:000082FB  2003 0001:00008300
+  2004 0001:00008306  2005 0001:0000830D  2006 0001:0000832E  2007 0001:00008335
+  2014 0001:00008338  2016 0001:00008341  2018 0001:000083A4  2020 0001:000083B1
+  2022 0001:000083BC  2023 0001:000083D0  2025 0001:000083F1  2033 0001:00008405
+  2034 0001:0000840E  2036 0001:0000844A  2038 0001:00008486  2039 0001:000084A2
+  2040 0001:000084BE  2041 0001:000084CC  2042 0001:000084DA  2043 0001:000084F3
+  2044 0001:0000850C  2046 0001:00008515  2047 0001:0000851A  2057 0001:00008520
+  2058 0001:0000852D  2060 0001:0000853A  2061 0001:00008541  2062 0001:0000854B
+  2064 0001:00008568  2066 0001:0000858B  2067 0001:00008598  2068 0001:000085B4
+  2069 0001:000085C1  2074 0001:000085C8  2075 0001:000085F2  2077 0001:00008619
+  2079 0001:00008626  2081 0001:0000865F  2082 0001:00008668  2084 0001:000086A9
+  2087 0001:000086B7  2088 0001:000086DF  2089 0001:000086E8  2091 0001:00008723
+  2095 0001:00008731  2097 0001:0000873E  2098 0001:0000874A  2099 0001:00008750
+  2100 0001:00008760  2101 0001:0000876B  2103 0001:0000878E  2104 0001:000087AC
+  2108 0001:000087C3  2109 0001:000087CC  2114 0001:000087D4  2115 0001:000087DD
+  2116 0001:00008805  2117 0001:0000880C  2118 0001:00008815  2126 0001:0000881C
+  2127 0001:00008829  2129 0001:0000883F  2130 0001:00008849  2132 0001:00008866
+  2134 0001:00008889  2135 0001:00008896  2138 0001:000088AB  2139 0001:000088AE
+  2141 0001:000088BA  2142 0001:000088C3  2149 0001:000088CC  2150 0001:000088D8
+  2152 0001:000088E5  2156 0001:000088F5  2157 0001:00008929  2159 0001:00008974
+  2161 0001:00008981  2163 0001:000089BA  2164 0001:000089C3  2166 0001:00008A04
+  2169 0001:00008A0F  2170 0001:00008A37  2171 0001:00008A40  2173 0001:00008A7B
+  2177 0001:00008A84  2178 0001:00008A8D  2183 0001:00008A94  2184 0001:00008A9D
+  2185 0001:00008AA7  2186 0001:00008AB8  2187 0001:00008AC1  2191 0001:00008AC8
+  2192 0001:00008ACE  2193 0001:00008AD5  2194 0001:00008AE5  2199 0001:00008AE8
+  2200 0001:00008AF1  2201 0001:00008AFA  2202 0001:00008B1C  2203 0001:00008B2C
+  2209 0001:00008B30  2210 0001:00008B36  2211 0001:00008B3D  2212 0001:00008B4E
+  2218 0001:00008B54  2219 0001:00008B5D  2220 0001:00008B64  2221 0001:00008B6B
+  2222 0001:00008B74  2223 0001:00008B8D  2224 0001:00008BA5  2227 0001:00008BB0
+  2228 0001:00008BB6  2229 0001:00008BBD  2230 0001:00008BC7  2234 0001:00008BCC
+  2235 0001:00008BD2  2237 0001:00008BE4  2238 0001:00008BF4  2240 0001:00008C0C
+  2244 0001:00008C10  2250 0001:00008C13  2251 0001:00008C18  2255 0001:00008C1C
+  2256 0001:00008C22  2257 0001:00008C2C  2258 0001:00008C33  2259 0001:00008C3A
+  2266 0001:00008C40  2267 0001:00008C48  2269 0001:00008C51  2270 0001:00008C61
+  2272 0001:00008C74  2273 0001:00008C7B  2274 0001:00008C90  2275 0001:00008C97
+  2276 0001:00008C9B  2277 0001:00008CA6  2270 0001:00008CA7  2278 0001:00008CAA
+  2281 0001:00008CB1  2289 0001:00008CB8  2290 0001:00008CC4  2291 0001:00008CED
+  2292 0001:00008CF6  2293 0001:00008CFD  2294 0001:00008D12  2295 0001:00008D1B
+  2297 0001:00008D1F  2299 0001:00008D28  2300 0001:00008D38  2301 0001:00008D3E
+  2302 0001:00008D44  2307 0001:00008D4A  2308 0001:00008D50  2310 0001:00008D56
+  2313 0001:00008D5A  2314 0001:00008D66  2315 0001:00008D79  2316 0001:00008D83
+  2317 0001:00008D93  2318 0001:00008D9D  2319 0001:00008DA2  2322 0001:00008DA8
+  2323 0001:00008DB1  2324 0001:00008DBA  2325 0001:00008DD2  2332 0001:00008DD8
+  2333 0001:00008DED  2334 0001:00008DF7  2335 0001:00008E06  2337 0001:00008E21
+  2338 0001:00008E2A  2340 0001:00008E2E  2341 0001:00008E37  2343 0001:00008E42
+  2346 0001:00008E50  2356 0001:00008E58  2357 0001:00008E6B  2358 0001:00008E78
+  2362 0001:00008E99  2363 0001:00008EB6  2364 0001:00008EBC  2366 0001:00008EC2
+  2368 0001:00008EEB  2369 0001:00008EF5  2370 0001:00008EFC  2371 0001:00008F06
+  2374 0001:00008F0B  2376 0001:00008F21  2377 0001:00008F2C  2378 0001:00008F50
+  2380 0001:00008F5C  2382 0001:00008FA4  2383 0001:00008FDE  2384 0001:00008FF2
+  2387 0001:00008FFA  2388 0001:00009004  2391 0001:0000900E  2397 0001:00009018
+  2398 0001:0000903B  2400 0001:0000904D  2401 0001:00009056  2403 0001:00009066
+  2404 0001:00009077  2406 0001:0000908C  2407 0001:000090B5  2410 0001:000090BC
+  2411 0001:000090C5  2412 0001:000090D2  2413 0001:000090D9  2414 0001:000090E2
+  2417 0001:000090E8  2418 0001:000090EB  2419 0001:000090F4  2420 0001:000090F7
+  2421 0001:00009102  2422 0001:00009107  2434 0001:0000910C  2435 0001:00009135
+  2436 0001:0000913F  2437 0001:00009158  2440 0001:00009180  2441 0001:0000918E
+  2443 0001:000091A2  2444 0001:000091B1  2445 0001:000091C0  2447 0001:000091CD
+  2448 0001:000091D8  2449 0001:000091E1  2450 0001:000091E8  2451 0001:000091FD
+  2453 0001:00009206  2455 0001:00009213  2457 0001:00009217  2460 0001:00009222
+  2461 0001:0000922B  2463 0001:00009236  2467 0001:00009241  2468 0001:0000924A
+  2470 0001:00009255  2474 0001:00009260  2475 0001:00009269  2477 0001:00009274
+  2483 0001:0000927F  2484 0001:00009288  2486 0001:00009293  2488 0001:0000929C
+  2489 0001:000092AA  2490 0001:000092B0  2491 0001:000092BB  2492 0001:000092E1
+  2495 0001:000092FC  2496 0001:00009305  2498 0001:00009324  2499 0001:00009330
+  2501 0001:0000934C  2503 0001:0000935F  2504 0001:00009374  2505 0001:000093A3
+  2506 0001:000093C8  2507 0001:000093EE  2501 0001:000093EF  2508 0001:000093F6
+  2510 0001:0000943B  2512 0001:0000944E  2513 0001:00009463  2514 0001:00009492
+  2515 0001:000094B7  2516 0001:000094DD  2510 0001:000094DE  2519 0001:000094E7
+  2522 0001:00009538  2525 0001:00009544  2526 0001:0000954E  2528 0001:00009557
+  2530 0001:0000956A  2531 0001:00009574  2532 0001:00009588  2533 0001:00009598
+  2536 0001:000095AE  2537 0001:000095D2  2547 0001:000095D8  2548 0001:000095E5
+  2550 0001:000095F2  2552 0001:00009602  2553 0001:00009618  2554 0001:00009627
+  2555 0001:00009635  2558 0001:0000965E  2559 0001:00009668  2560 0001:00009677
+  2561 0001:0000967E  2563 0001:00009684  2564 0001:000096A9  2565 0001:000096D0
+  2566 0001:000096DE  2568 0001:000096F7  2570 0001:00009702  2571 0001:00009722
+  2572 0001:00009746  2574 0001:00009754  2578 0001:0000975F  2579 0001:00009767
+  2581 0001:00009773  2576 0001:0000977D  2586 0001:000097A5  2587 0001:000097B3
+  2588 0001:000097E3  2589 0001:000097E9  2590 0001:000097F5  2595 0001:00009816
+  2596 0001:00009825  2597 0001:00009834  2598 0001:00009852  2605 0001:00009871
+  2606 0001:0000987A  2607 0001:0000988F  2617 0001:00009898  2619 0001:000098A6
+  2622 0001:000098D3  2624 0001:000098EA  2625 0001:00009907  2627 0001:00009910
+  2628 0001:00009919  2631 0001:00009924  2632 0001:00009938  2633 0001:00009942
+  2629 0001:0000994C  2637 0001:00009966  2638 0001:0000996C  2640 0001:000099A6
+  2641 0001:000099C7  2645 0001:000099D0  2646 0001:000099F2  2647 0001:00009A07
+  2648 0001:00009A43  2649 0001:00009A79  2653 0001:00009A80  2654 0001:00009AA0
+  2655 0001:00009AAD  2656 0001:00009AF3  2657 0001:00009B29  2663 0001:00009B30
+  2664 0001:00009B39  2665 0001:00009B40  2666 0001:00009B5F  2668 0001:00009B72
+  2669 0001:00009B7E  2670 0001:00009B81  2671 0001:00009B83  2665 0001:00009B84
+  2672 0001:00009B8A  2679 0001:00009B94  2680 0001:00009BB5  2681 0001:00009BB9
+  2682 0001:00009BC0  2683 0001:00009BF1  2685 0001:00009C26  2686 0001:00009C32
+  2687 0001:00009C35  2688 0001:00009C39  2689 0001:00009C3B  2683 0001:00009C3C
+  2690 0001:00009C3F  2692 0001:00009C4E  2693 0001:00009C58  2695 0001:00009C88
+  2699 0001:00009C94  2700 0001:00009CB0  2701 0001:00009D26  2707 0001:00009D30
+  2708 0001:00009D54  2709 0001:00009D5B  2710 0001:00009D7B  2712 0001:00009DB0
+  2713 0001:00009DBC  2714 0001:00009DBF  2715 0001:00009DC1  2709 0001:00009DC2
+  2716 0001:00009DEC  2722 0001:00009DF4  2723 0001:00009E00  2724 0001:00009E14
+  2725 0001:00009E2A  2726 0001:00009E31  2727 0001:00009E48  2728 0001:00009E4F
+  2729 0001:00009E53  2731 0001:00009E5E  2732 0001:00009E65  2738 0001:00009E90
+  2739 0001:00009EBC  2740 0001:00009ED0  2741 0001:00009EE6  2742 0001:00009EED
+  2743 0001:00009F04  2744 0001:00009F0B  2745 0001:00009F0F  2746 0001:00009F36
+  2750 0001:00009F64  2751 0001:00009F90  2752 0001:00009FA0  2753 0001:00009FCB
+  2757 0001:00009FD4  2758 0001:0000A003  2759 0001:0000A013  2760 0001:0000A03C
+  2766 0001:0000A048  2767 0001:0000A080  2768 0001:0000A087  2769 0001:0000A0A6
+  2771 0001:0000A0BF  2772 0001:0000A0C2  2773 0001:0000A0C4  2768 0001:0000A0C5
+  2774 0001:0000A0F3  2778 0001:0000A0FC  2779 0001:0000A105  2780 0001:0000A10E
+  2782 0001:0000A122  2783 0001:0000A134  2790 0001:0000A138  2791 0001:0000A149
+  2792 0001:0000A15E  2793 0001:0000A173  2795 0001:0000A1EF  2792 0001:0000A206
+  2796 0001:0000A20D  2798 0001:0000A216  2802 0001:0000A24D  2804 0001:0000A282
+  2805 0001:0000A289  2806 0001:0000A2A2  2807 0001:0000A2A9  2810 0001:0000A2E4
+  2811 0001:0000A2E7  2813 0001:0000A2EF  2814 0001:0000A2F5  2816 0001:0000A2FA
+  2823 0001:0000A2FC  2824 0001:0000A30A  2825 0001:0000A31C  2826 0001:0000A32C
+  2828 0001:0000A339  2829 0001:0000A34B  2830 0001:0000A357  2832 0001:0000A36A
+  2833 0001:0000A392  2834 0001:0000A3C0  2830 0001:0000A3C1  2838 0001:0000A3C9
+  2839 0001:0000A3DB  2840 0001:0000A3E7  2843 0001:0000A3F6  2844 0001:0000A422
+  2845 0001:0000A459  2840 0001:0000A45A  2847 0001:0000A45D  2848 0001:0000A469
+  2849 0001:0000A47E  2850 0001:0000A485  2856 0001:0000A48C  2857 0001:0000A493
+  2859 0001:0000A49B  2860 0001:0000A4A8  2861 0001:0000A4BE  2862 0001:0000A4C6
+  2864 0001:0000A4CA  2868 0001:0000A4D5  2869 0001:0000A4DE  2870 0001:0000A4EE
+  2871 0001:0000A4F7  2872 0001:0000A500  2875 0001:0000A509  2878 0001:0000A550
+  2879 0001:0000A570  2881 0001:0000A580  2882 0001:0000A58E  2883 0001:0000A59D
+  2884 0001:0000A5A6  2886 0001:0000A5AF  2887 0001:0000A5B8  2890 0001:0000A5DE
+  2894 0001:0000A5E4  2895 0001:0000A5EA  2898 0001:0000A5EC  2899 0001:0000A5EF
+  2900 0001:0000A5FD  2901 0001:0000A604  2902 0001:0000A611  2903 0001:0000A618
+  2904 0001:0000A61D  2908 0001:0000A620  2909 0001:0000A623  2910 0001:0000A629
+  2911 0001:0000A62E  2915 0001:0000A630  2916 0001:0000A639  2917 0001:0000A64B
+  2921 0001:0000A650  2922 0001:0000A656  2923 0001:0000A669  2924 0001:0000A670
+  2935 0001:0000A674  2936 0001:0000A693  2937 0001:0000A697  2938 0001:0000A69C
+  2939 0001:0000A6A1  2940 0001:0000A6AF  2941 0001:0000A6BD  2942 0001:0000A6C9
+  2943 0001:0000A6D1  2944 0001:0000A6DD  2945 0001:0000A6EC  2946 0001:0000A6FB
+  2947 0001:0000A705  2948 0001:0000A70F  2950 0001:0000A734  2951 0001:0000A74F
+  2952 0001:0000A759  2948 0001:0000A75C  2953 0001:0000A75F  2954 0001:0000A771
+  2955 0001:0000A77E  2956 0001:0000A788  2958 0001:0000A7A4  2959 0001:0000A7B1
+  2961 0001:0000A7B5  2962 0001:0000A7D8  2964 0001:0000A7E4  2956 0001:0000A7E7
+  2966 0001:0000A7F7  2967 0001:0000A7FF  2968 0001:0000A807  2969 0001:0000A815
+  2971 0001:0000A846  2975 0001:0000A850  2976 0001:0000A856  2978 0001:0000A85E
+  2979 0001:0000A863  2982 0001:0000A86C  2983 0001:0000A873  2984 0001:0000A87C
+  2987 0001:0000A885  2993 0001:0000A888  2994 0001:0000A893  2995 0001:0000A8A8
+  2996 0001:0000A8AC  2997 0001:0000A8B3  2998 0001:0000A8D5  2999 0001:0000A8DF
+  3000 0001:0000A8EE  3001 0001:0000A906  3002 0001:0000A911  3006 0001:0000A918
+  3007 0001:0000A920  3008 0001:0000A927  3009 0001:0000A93E  3010 0001:0000A954
+  3011 0001:0000A95D  3012 0001:0000A96A  3013 0001:0000A97D  3014 0001:0000A984
+  3015 0001:0000A99A  3016 0001:0000A9A4  3017 0001:0000A9B0  3018 0001:0000A9BD
+  3022 0001:0000A9C8  3023 0001:0000A9CE  3024 0001:0000A9D5  3025 0001:0000A9E0
+  3026 0001:0000A9E8  3034 0001:0000A9EC  3035 0001:0000AA11  3040 0001:0000AA20
+  3043 0001:0000AA84  3044 0001:0000AA9D  3045 0001:0000AAC7  3046 0001:0000AACB
+  3047 0001:0000AADD  3048 0001:0000AAF2  3050 0001:0000AB05  3051 0001:0000AB17
+  3052 0001:0000AB2C  3053 0001:0000AB7B  3055 0001:0000ABC4  3056 0001:0000ABD9
+  3057 0001:0000AC27  3060 0001:0000AC9C  3066 0001:0000ACA4  3067 0001:0000ACCB
+  3069 0001:0000ACD8  3071 0001:0000ACE1  3072 0001:0000ACED  3073 0001:0000ACF2
+  3075 0001:0000AD1B  3076 0001:0000AD24  3078 0001:0000AD3A  3079 0001:0000ADCB
+  3080 0001:0000ADD7  3081 0001:0000ADF5  3083 0001:0000AE2B  3086 0001:0000AE40
+  3087 0001:0000AE47  3089 0001:0000AE50  3090 0001:0000AE67  3092 0001:0000AE7E
+  3098 0001:0000AEE8  3099 0001:0000AEEF  3100 0001:0000AF02  3101 0001:0000AF2B
+  3102 0001:0000AF3E  3103 0001:0000AF45  3114 0001:0000AF4C  3115 0001:0000AF58
+  3117 0001:0000AF74  3116 0001:0000AFC6  3118 0001:0000AFCB  3119 0001:0000B004
+  3121 0001:0000B035  3123 0001:0000B03C  3124 0001:0000B069  3125 0001:0000B073
+  3126 0001:0000B07D  3127 0001:0000B087  3128 0001:0000B090  3129 0001:0000B0A4
+  3130 0001:0000B0BF  3131 0001:0000B0D8  3133 0001:0000B10D  3134 0001:0000B114
+  3136 0001:0000B123  3137 0001:0000B130  3139 0001:0000B13A  3141 0001:0000B149
+  3142 0001:0000B172  3144 0001:0000B196  3146 0001:0000B1A2  3147 0001:0000B1AF
+  3148 0001:0000B1B4  3150 0001:0000B1E4  3151 0001:0000B1F0  3152 0001:0000B206
+  3153 0001:0000B21C  3154 0001:0000B21E  3156 0001:0000B24D  3157 0001:0000B24F
+  3158 0001:0000B251  3154 0001:0000B252  3159 0001:0000B255  3160 0001:0000B276
+  3161 0001:0000B2AC  3162 0001:0000B2F8  3163 0001:0000B30C  3164 0001:0000B316
+  3165 0001:0000B340  3171 0001:0000B354  3172 0001:0000B36D  3173 0001:0000B372
+  3174 0001:0000B385  3175 0001:0000B39D  3177 0001:0000B3A1  3176 0001:0000B3AB
+  3178 0001:0000B3FC  3186 0001:0000B404  3187 0001:0000B427  3188 0001:0000B431
+  3189 0001:0000B43E  3191 0001:0000B447  3192 0001:0000B46E  3193 0001:0000B47E
+  3194 0001:0000B489  3195 0001:0000B498  3197 0001:0000B4C1  3200 0001:0000B4D3
+  3202 0001:0000B4E0  3203 0001:0000B4E5  3204 0001:0000B4F9  3205 0001:0000B509
+  3206 0001:0000B519  3207 0001:0000B52B  3212 0001:0000B53B  3213 0001:0000B53D
+  3215 0001:0000B547  3216 0001:0000B57C  3217 0001:0000B58A  3219 0001:0000B5A8
+  3220 0001:0000B5C4  3225 0001:0000B5C8  3226 0001:0000B5EF  3228 0001:0000B5F8
+  3229 0001:0000B600  3232 0001:0000B602  3234 0001:0000B606  3235 0001:0000B616
+  3237 0001:0000B62E  3238 0001:0000B639  3241 0001:0000B642  3242 0001:0000B64A
+  3246 0001:0000B65C  3248 0001:0000B678  3249 0001:0000B69F  3252 0001:0000B6C4
+  3253 0001:0000B6F9  3254 0001:0000B707  3257 0001:0000B742  3258 0001:0000B769
+  3261 0001:0000B78E  3262 0001:0000B7C3  3263 0001:0000B7D1  3267 0001:0000B80A
+  3268 0001:0000B83A  3274 0001:0000B844  3275 0001:0000B867  3276 0001:0000B86A
+  3278 0001:0000B879  3280 0001:0000B882  3281 0001:0000B8A0  3284 0001:0000B8B1
+  3286 0001:0000B8DF  3288 0001:0000B916  3289 0001:0000B919  3291 0001:0000B91B
+  3284 0001:0000B91E  3292 0001:0000B923  3294 0001:0000B927  3295 0001:0000B954
+  3299 0001:0000B983  3307 0001:0000B98C  3308 0001:0000B9B1  3309 0001:0000B9B4
+  3311 0001:0000B9C4  3313 0001:0000B9CD  3314 0001:0000B9EC  3316 0001:0000B9F4
+  3319 0001:0000B9FF  3321 0001:0000BA28  3323 0001:0000BA60  3324 0001:0000BA62
+  3326 0001:0000BA64  3319 0001:0000BA65  3327 0001:0000BA6A  3329 0001:0000BAB4
+  3330 0001:0000BABF  3332 0001:0000BAC8  3333 0001:0000BAD5  3334 0001:0000BADB
+  3336 0001:0000BB05  3337 0001:0000BB0E  3339 0001:0000BB24  3340 0001:0000BBB5
+  3342 0001:0000BBC1  3344 0001:0000BBC5  3345 0001:0000BBF3  3346 0001:0000BC00
+  3347 0001:0000BC0D  3351 0001:0000BC17  3352 0001:0000BC23  3353 0001:0000BC29
+  3354 0001:0000BC37  3355 0001:0000BC80  3358 0001:0000BC94  3359 0001:0000BC9A
+  3361 0001:0000BCA2  3362 0001:0000BCA8  3364 0001:0000BCAC  3365 0001:0000BCB7
+  3366 0001:0000BCC0  3367 0001:0000BCC9  3369 0001:0000BCD5  3371 0001:0000BCDC
+  3374 0001:0000BCE0  3375 0001:0000BCE3  3377 0001:0000BCEB  3378 0001:0000BCF1
+  3380 0001:0000BCF6  3386 0001:0000BCF8  3387 0001:0000BD01  3388 0001:0000BD03
+  3389 0001:0000BD07  3390 0001:0000BD0E  3391 0001:0000BD23  3392 0001:0000BD2A
+  3393 0001:0000BD2E  3395 0001:0000BD37  3396 0001:0000BD39  3403 0001:0000BD40
+  3404 0001:0000BD4F  3405 0001:0000BD56  3406 0001:0000BD6B  3407 0001:0000BD72
+  3409 0001:0000BD82  3410 0001:0000BD88  3412 0001:0000BD8E  3413 0001:0000BD92
+  3414 0001:0000BD9E  3415 0001:0000BDB1  3416 0001:0000BDBB  3418 0001:0000BDCB
+  3424 0001:0000BDD4  3425 0001:0000BDDD  3426 0001:0000BDE4  3427 0001:0000BDF9
+  3428 0001:0000BE00  3429 0001:0000BE04  3431 0001:0000BE09  3432 0001:0000BE0B
+  3440 0001:0000BE10  3441 0001:0000BE1F  3442 0001:0000BE26  3443 0001:0000BE3B
+  3444 0001:0000BE42  3446 0001:0000BE4E  3447 0001:0000BE54  3448 0001:0000BE60
+  3449 0001:0000BE73  3450 0001:0000BE7D  3452 0001:0000BE8D  3456 0001:0000BE94
+  3457 0001:0000BE9A  3460 0001:0000BE9C  3461 0001:0000BEA5  3462 0001:0000BEAE
+  3463 0001:0000BEBB  3469 0001:0000BEC0  3470 0001:0000BEE0  3471 0001:0000BEE7
+  3473 0001:0000BEF0  3474 0001:0000BF14  3473 0001:0000BF41  3476 0001:0000BF61
+  3482 0001:0000BF68  3483 0001:0000BF89  3484 0001:0000BFA8  3483 0001:0000BFDB
+  3485 0001:0000BFFB  3488 0001:0000C004  3489 0001:0000C00A  3490 0001:0000C013
+  3491 0001:0000C031  3492 0001:0000C037  3495 0001:0000C03C  3496 0001:0000C045
+  3497 0001:0000C04E  3498 0001:0000C06C  3499 0001:0000C079  3502 0001:0000C080
+  3503 0001:0000C086  3504 0001:0000C092  3505 0001:0000C099  3508 0001:0000C09C
+  3509 0001:0000C0A6  3510 0001:0000C0AF  3511 0001:0000C0C5  3512 0001:0000C0CE
+  3513 0001:0000C0DB  3514 0001:0000C0E8  3515 0001:0000C0F5  3516 0001:0000C0FF
+  3518 0001:0000C10E  3519 0001:0000C11C  3521 0001:0000C127  3522 0001:0000C134
+  3525 0001:0000C13C  3526 0001:0000C145  3527 0001:0000C152  3530 0001:0000C158
+  3531 0001:0000C17F  3532 0001:0000C18E  3534 0001:0000C1BB  3535 0001:0000C1EE
+  3538 0001:0000C220  3539 0001:0000C229  3540 0001:0000C238  3542 0001:0000C24B
+  3543 0001:0000C254  3551 0001:0000C258  3552 0001:0000C261  3553 0001:0000C28C
+  3560 0001:0000C290  3561 0001:0000C2A5  3562 0001:0000C2AE  3563 0001:0000C2B7
+  3564 0001:0000C2C0  3565 0001:0000C2C9  3566 0001:0000C2D2  3567 0001:0000C2DB
+  3568 0001:0000C2E4  3569 0001:0000C302  3573 0001:0000C308  3574 0001:0000C311
+  3575 0001:0000C31A  3577 0001:0000C320  3578 0001:0000C330  3579 0001:0000C334
+  3580 0001:0000C33B  3582 0001:0000C343  3588 0001:0000C348  3589 0001:0000C356
+  3590 0001:0000C35B  3592 0001:0000C368  3593 0001:0000C382  3595 0001:0000C39A
+  3598 0001:0000C3DA  3599 0001:0000C3E6  3601 0001:0000C3E8  3592 0001:0000C3E9
+  3603 0001:0000C3EF  3609 0001:0000C3F8  3610 0001:0000C3FE  3611 0001:0000C407
+  3612 0001:0000C412  3613 0001:0000C41B  3614 0001:0000C426  3621 0001:0000C42C
+  3622 0001:0000C434  3623 0001:0000C43B  3625 0001:0000C444  3626 0001:0000C44F
+  3628 0001:0000C453  3629 0001:0000C45D  3630 0001:0000C466  3631 0001:0000C46F
+  3632 0001:0000C483  3633 0001:0000C48E  3634 0001:0000C497  3635 0001:0000C4AA
+  3638 0001:0000C4BE  3646 0001:0000C4C4  3647 0001:0000C4CB  3648 0001:0000C4D9
+  3650 0001:0000C4EC  3652 0001:0000C4F9  3653 0001:0000C509  3654 0001:0000C512
+  3655 0001:0000C51E  3656 0001:0000C52A  3657 0001:0000C531  3658 0001:0000C53A
+  3659 0001:0000C546  3660 0001:0000C556  3661 0001:0000C566  3662 0001:0000C56F
+  3663 0001:0000C57B  3664 0001:0000C587  3665 0001:0000C58E  3666 0001:0000C597
+  3667 0001:0000C5A3  3668 0001:0000C5B3  3669 0001:0000C5BA  3673 0001:0000C5C7
+  3675 0001:0000C5D0  3676 0001:0000C5E8  3677 0001:0000C600  3675 0001:0000C60F
+  3678 0001:0000C614  3679 0001:0000C61B  3681 0001:0000C626  3685 0001:0000C648
+  3686 0001:0000C64E  3687 0001:0000C66E  3695 0001:0000C6A8  3696 0001:0000C6AE
+  3697 0001:0000C6B5  3698 0001:0000C6C3  3701 0001:0000C6C8  3702 0001:0000C6D2
+  3703 0001:0000C6DB  3705 0001:0000C6EB  3709 0001:0000C728  3710 0001:0000C735
+  3713 0001:0000C73A  3716 0001:0000C740  3717 0001:0000C747  3718 0001:0000C74E
+  3720 0001:0000C75E  3722 0001:0000C776  3723 0001:0000C783  3724 0001:0000C790
+  3727 0001:0000C795  3733 0001:0000C79C  3734 0001:0000C7B3  3735 0001:0000C7BC
+  3736 0001:0000C7C8  3737 0001:0000C7D4  3738 0001:0000C7DF  3739 0001:0000C7E9
+  3740 0001:0000C7F0  3741 0001:0000C7FA  3742 0001:0000C810  3743 0001:0000C819
+  3744 0001:0000C826  3745 0001:0000C83C  3746 0001:0000C84C  3747 0001:0000C85C
+  3748 0001:0000C86C  3749 0001:0000C87C  3750 0001:0000C883  3751 0001:0000C894
+  3752 0001:0000C8A5  3753 0001:0000C8BB  3754 0001:0000C8C4  3755 0001:0000C8DA
+  3756 0001:0000C8EA  3757 0001:0000C8FA  3758 0001:0000C90A  3759 0001:0000C911
+  3760 0001:0000C934  3763 0001:0000C93C  3764 0001:0000C945  3765 0001:0000C952
+  3766 0001:0000C95D  3767 0001:0000C966  3771 0001:0000C96C  3772 0001:0000C972
+  3773 0001:0000C979  3774 0001:0000C980  3778 0001:0000C984  3779 0001:0000C98A
+  3780 0001:0000C991  3781 0001:0000C99A  3785 0001:0000C9A0  3786 0001:0000C9A6
+  3787 0001:0000C9AD  3788 0001:0000C9B4  3791 0001:0000C9B8  3792 0001:0000C9C1
+  3793 0001:0000C9CA  3795 0001:0000C9D3  3796 0001:0000C9DA  3797 0001:0000C9F9
+  3799 0001:0000CA11  3803 0001:0000CA18  3804 0001:0000CA22  3806 0001:0000CA25
+  3807 0001:0000CA2B  3816 0001:0000CA2C  3817 0001:0000CA37  3818 0001:0000CA40
+  3819 0001:0000CA4F  3821 0001:0000CA58  3822 0001:0000CA5D  3823 0001:0000CA64
+  3827 0001:0000CA6D  3828 0001:0000CA74  3829 0001:0000CA7B  3831 0001:0000CA82
+  3832 0001:0000CA9F  3833 0001:0000CAC3  3834 0001:0000CACD  3835 0001:0000CB01
+  3837 0001:0000CB0A  3838 0001:0000CB1D  3842 0001:0000CB64  3845 0001:0000CB9B
+  3846 0001:0000CBA2  3851 0001:0000CBAC  3852 0001:0000CBB2  3854 0001:0000CBB6
+  3855 0001:0000CBBD  3856 0001:0000CBCD  3858 0001:0000CBD4  3863 0001:0000CBDC
+  3864 0001:0000CBE2  3865 0001:0000CBF8  3866 0001:0000CC06  3872 0001:0000CC0C
+  3884 0001:0000CC12  3885 0001:0000CC19  3886 0001:0000CC2F  3889 0001:0000CC34
+  3890 0001:0000CC3A  3891 0001:0000CC48  3892 0001:0000CC5E  3896 0001:0000CC64
+  3897 0001:0000CC6A  3898 0001:0000CC73  3900 0001:0000CC7C  3901 0001:0000CC83
+  3903 0001:0000CCA2  3904 0001:0000CCA9  3908 0001:0000CCAC  3909 0001:0000CCB2
+  3910 0001:0000CCB9  3911 0001:0000CCC4  3915 0001:0000CCC8  3916 0001:0000CCCB
+  3917 0001:0000CCD4  3918 0001:0000CCDB  3919 0001:0000CCF3  3920 0001:0000CCF8
+  3927 0001:0000CCFC  3928 0001:0000CD1B  3929 0001:0000CD22  3930 0001:0000CD5B
+  3931 0001:0000CD88  3932 0001:0000CD96  3933 0001:0000CD99  3934 0001:0000CDA9
+  3935 0001:0000CDB9  3936 0001:0000CDDA  3937 0001:0000CDEA  3938 0001:0000CDF3
+  3939 0001:0000CE05  3941 0001:0000CE24  3942 0001:0000CE2B  3943 0001:0000CE39
+  3944 0001:0000CE49  3945 0001:0000CE63  3946 0001:0000CE72  3947 0001:0000CEA8
+  3948 0001:0000CEAF  3950 0001:0000CEB4  3951 0001:0000CEBB  3953 0001:0000CEC0
+  3954 0001:0000CEDA  3955 0001:0000CEE8  3956 0001:0000CEFB  3959 0001:0000CF33
+  3960 0001:0000CF42  3962 0001:0000CF5E  3963 0001:0000CF6C  3965 0001:0000CF84
+  3966 0001:0000CF8B  3967 0001:0000CF9A  3968 0001:0000D004  4001 0001:0000D00C
+  4002 0001:0000D027  4004 0001:0000D03C  4005 0001:0000D043  4006 0001:0000D05D
+  4007 0001:0000D081  4008 0001:0000D09D  4011 0001:0000D0A4  4012 0001:0000D0B3
+  4013 0001:0000D0E2  4015 0001:0000D0F0  4016 0001:0000D108  4017 0001:0000D117
+  4018 0001:0000D159  4022 0001:0000D160  4023 0001:0000D164  4024 0001:0000D17E
+  4031 0001:0000D184  4033 0001:0000D1A8  4034 0001:0000D1CD  4035 0001:0000D1D4
+  4036 0001:0000D1F2  4038 0001:0000D20E  4040 0001:0000D229  4042 0001:0000D23E
+  4044 0001:0000D24E  4046 0001:0000D25B  4047 0001:0000D285  4048 0001:0000D2A6
+  4049 0001:0000D2AE  4051 0001:0000D2B3  4052 0001:0000D2C9  4056 0001:0000D2DE
+  4058 0001:0000D2F3  4060 0001:0000D317  4061 0001:0000D32E  4062 0001:0000D335
+  4064 0001:0000D346  4065 0001:0000D36E  4067 0001:0000D38A  4070 0001:0000D391
+  4071 0001:0000D3BF  4073 0001:0000D3C9  4074 0001:0000D3D0  4075 0001:0000D3DE
+  4076 0001:0000D3EE  4077 0001:0000D40C  4078 0001:0000D41B  4080 0001:0000D43E
+  4081 0001:0000D44C  4082 0001:0000D45A  4083 0001:0000D46A  4085 0001:0000D471
+  4087 0001:0000D490  4088 0001:0000D4B6  4090 0001:0000D4CF  4092 0001:0000D4E7
+  4093 0001:0000D4F8  4096 0001:0000D509  4097 0001:0000D552  4101 0001:0000D55C
+  4103 0001:0000D560  4105 0001:0000D580  4106 0001:0000D583  4108 0001:0000D586
+  4109 0001:0000D5A0  4113 0001:0000D5A4  4114 0001:0000D5AD  4116 0001:0000D5B4
+  4117 0001:0000D5E2  4118 0001:0000D600  4119 0001:0000D607  4123 0001:0000D610
+  4124 0001:0000D614  4125 0001:0000D62E  4130 0001:0000D634  4131 0001:0000D64D
+  4132 0001:0000D6A2  4137 0001:0000D6AC  4138 0001:0000D6B6  4148 0001:0000D6B8
+  4149 0001:0000D6D9  4150 0001:0000D6F2  4151 0001:0000D6FA  4153 0001:0000D702
+  4154 0001:0000D71A  4155 0001:0000D729  4156 0001:0000D73D  4157 0001:0000D758
+  4159 0001:0000D78B  4161 0001:0000D7AC  4162 0001:0000D7B5  4163 0001:0000D7BE
+  4164 0001:0000D7C8  4165 0001:0000D7E1  4167 0001:0000D7F0  4168 0001:0000D7FB
+  4170 0001:0000D817  4171 0001:0000D824  4172 0001:0000D82F  4173 0001:0000D844
+  4176 0001:0000D860  4177 0001:0000D878  4178 0001:0000D885  4179 0001:0000D88F
+  4180 0001:0000D89A  4182 0001:0000D8CD  4184 0001:0000D8FD  4190 0001:0000D904
+  4191 0001:0000D90D  4192 0001:0000D929  4193 0001:0000D93D  4195 0001:0000D946
+  4196 0001:0000D96A  4197 0001:0000D973  4200 0001:0000D980  4201 0001:0000D994
+  4202 0001:0000D999  4203 0001:0000D9A2  4205 0001:0000D9AB  4206 0001:0000D9B0
+  4207 0001:0000D9CC  4211 0001:0000D9D4  4212 0001:0000D9EC  4213 0001:0000D9F3
+  4214 0001:0000D9FE  4215 0001:0000DA1A  4216 0001:0000DA21  4217 0001:0000DA72
+  4221 0001:0000DA78  4222 0001:0000DA94  4224 0001:0000DA9A  4227 0001:0000DAA6
+  4228 0001:0000DAC0  4229 0001:0000DACA  4230 0001:0000DAD9  4233 0001:0000DAFB
+  4236 0001:0000DB55  4239 0001:0000DB5C  4240 0001:0000DB63  4241 0001:0000DB76
+  4242 0001:0000DB81  4245 0001:0000DB88  4246 0001:0000DB8F  4247 0001:0000DB9C
+  4248 0001:0000DBA7  4251 0001:0000DBAC  4252 0001:0000DBB3  4253 0001:0000DBC6
+  4254 0001:0000DBD1  4260 0001:0000DBD8  4261 0001:0000DBDF  4263 0001:0000DBEB
+  4264 0001:0000DBF3  4266 0001:0000DBF7  4267 0001:0000DC06  4268 0001:0000DC15
+  4269 0001:0000DC1D  4270 0001:0000DC25  4271 0001:0000DC33  4272 0001:0000DC3A
+  4273 0001:0000DC51  4276 0001:0000DC63  4277 0001:0000DC77  4278 0001:0000DC87
+  4279 0001:0000DC93  4280 0001:0000DCA4  4281 0001:0000DCB4  4282 0001:0000DCC1
+  4283 0001:0000DCEA  4284 0001:0000DD00  4285 0001:0000DD10  4286 0001:0000DD17
+  4287 0001:0000DD24  4288 0001:0000DD2F  4290 0001:0000DD35  4291 0001:0000DD4B
+  4292 0001:0000DD54  4293 0001:0000DD60  4294 0001:0000DD6B  4297 0001:0000DD88
+  4299 0001:0000DD95  4301 0001:0000DDA6  4303 0001:0000DDAD  4309 0001:0000DDB8
+  4310 0001:0000DDBE  4312 0001:0000DDD7  4313 0001:0000DDDE  4314 0001:0000DE00
+  4316 0001:0000DE0B  4318 0001:0000DE22  4322 0001:0000DE28  4323 0001:0000DE2E
+  4325 0001:0000DE37  4326 0001:0000DE49  4328 0001:0000DE50  4335 0001:0000DE54
+  4336 0001:0000DE80  4337 0001:0000DEB1  4340 0001:0000DEB8  4341 0001:0000DEBE
+  4342 0001:0000DECC  4343 0001:0000DEDA  4346 0001:0000DEE0  4347 0001:0000DEE3
+  4348 0001:0000DEEE  4351 0001:0000DEF0  4352 0001:0000DEF3  4353 0001:0000DEFE
+  4356 0001:0000DF00  4357 0001:0000DF20  4358 0001:0000DF4B  4361 0001:0000DF50
+  4362 0001:0000DF7A  4363 0001:0000DFA9  4366 0001:0000DFB0  4367 0001:0000DFDF
+  4368 0001:0000E00F  4371 0001:0000E018  4372 0001:0000E01B  4373 0001:0000E026
+  4377 0001:0000E028  4378 0001:0000E034  4382 0001:0000E038  4383 0001:0000E041
+  4387 0001:0000E044  4388 0001:0000E050  4391 0001:0000E054  4392 0001:0000E060
+  4393 0001:0000E06F  4396 0001:0000E074  4397 0001:0000E077  4398 0001:0000E082
+  4401 0001:0000E084  4402 0001:0000E08A  4403 0001:0000E0A1  4406 0001:0000E0A8
+  4407 0001:0000E0B1  4408 0001:0000E0BE  4411 0001:0000E0C4  4412 0001:0000E0CA
+  4413 0001:0000E0E1  4416 0001:0000E0E8  4417 0001:0000E0EB  4418 0001:0000E0F9
+  4422 0001:0000E0FC  4423 0001:0000E108  4427 0001:0000E10C  4428 0001:0000E118
+  4432 0001:0000E11C  4433 0001:0000E128  4437 0001:0000E12C  4438 0001:0000E138
+  4441 0001:0000E13C  4442 0001:0000E145  4443 0001:0000E152  4446 0001:0000E158
+  4447 0001:0000E164  4448 0001:0000E173  4451 0001:0000E178  4452 0001:0000E17B
+  4453 0001:0000E189  4456 0001:0000E18C  4457 0001:0000E18F  4458 0001:0000E19D
+  4461 0001:0000E1A0  4462 0001:0000E1A9  4463 0001:0000E1B9  4467 0001:0000E1C0
+  4468 0001:0000E1CC  4472 0001:0000E1D0  4473 0001:0000E1DC  4477 0001:0000E1E0
+  4478 0001:0000E1EC  4481 0001:0000E1F0  4482 0001:0000E1F9  4483 0001:0000E20C
+  4486 0001:0000E210  4487 0001:0000E213  4488 0001:0000E21E  4491 0001:0000E220
+  4492 0001:0000E240  4493 0001:0000E26B  4496 0001:0000E270  4497 0001:0000E279
+  4498 0001:0000E286  4502 0001:0000E28C  4503 0001:0000E298  4506 0001:0000E29C
+  4507 0001:0000E2A5  4508 0001:0000E2B2  4511 0001:0000E2B8  4512 0001:0000E2BB
+  4513 0001:0000E2C6  4517 0001:0000E2C8  4518 0001:0000E2D4  4521 0001:0000E2D8
+  4522 0001:0000E2E1  4523 0001:0000E2F0  4524 0001:0000E2FD  4525 0001:0000E30A
+  4528 0001:0000E310  4529 0001:0000E313  4530 0001:0000E31E  4533 0001:0000E320
+  4534 0001:0000E323  4535 0001:0000E32E  4539 0001:0000E330  4540 0001:0000E33C
+  4544 0001:0000E340  4545 0001:0000E34C  4548 0001:0000E350  4549 0001:0000E353
+  4550 0001:0000E35E  4553 0001:0000E360  4554 0001:0000E363  4555 0001:0000E36E
+  4558 0001:0000E370  4559 0001:0000E373  4560 0001:0000E37E  4563 0001:0000E380
+  4564 0001:0000E3AC  4565 0001:0000E3D9  4568 0001:0000E3E0  4569 0001:0000E3E6
+  4570 0001:0000E3F4  4573 0001:0000E3F8  4574 0001:0000E3FE  4575 0001:0000E40C
+  4578 0001:0000E410  4579 0001:0000E413  4580 0001:0000E41E  4583 0001:0000E420
+  4584 0001:0000E423  4585 0001:0000E42E  4588 0001:0000E430  4589 0001:0000E433
+  4590 0001:0000E43E  4593 0001:0000E440  4594 0001:0000E443  4595 0001:0000E44E
+  4598 0001:0000E450  4599 0001:0000E453  4600 0001:0000E45E  4603 0001:0000E460
+  4604 0001:0000E466  4605 0001:0000E471  4609 0001:0000E474  4610 0001:0000E480
+  4613 0001:0000E484  4614 0001:0000E487  4615 0001:0000E492  4619 0001:0000E494
+  4620 0001:0000E4A0  4624 0001:0000E4A4  4625 0001:0000E4B0  4628 0001:0000E4B4
+  4629 0001:0000E4D3  4631 0001:0000E4E8  4632 0001:0000E4EF  4633 0001:0000E4FC
+  4634 0001:0000E501  4635 0001:0000E511  4636 0001:0000E51F  4638 0001:0000E527
+  4639 0001:0000E531  4640 0001:0000E53B  4641 0001:0000E552  4642 0001:0000E571
+  4643 0001:0000E581  4644 0001:0000E59B  4645 0001:0000E5A5  4646 0001:0000E5B5
+  4647 0001:0000E5C8  4648 0001:0000E5DF  4649 0001:0000E5E8  4653 0001:0000E600
+  4654 0001:0000E611  4655 0001:0000E62B  4656 0001:0000E63B  4657 0001:0000E649
+  4660 0001:0000E661  4662 0001:0000E679  4664 0001:0000E69E  4667 0001:0000E6A8
+  4668 0001:0000E6B1  4669 0001:0000E6BE  4670 0001:0000E6C8  4671 0001:0000E6CD
+  4672 0001:0000E6D1  4673 0001:0000E6DA  4677 0001:0000E6E0  4678 0001:0000E6EC
+  4681 0001:0000E6F0  4682 0001:0000E6F3  4683 0001:0000E6FE  4689 0001:0000E700
+  4690 0001:0000E70D  4692 0001:0000E717  4693 0001:0000E71E  4694 0001:0000E722
+  4696 0001:0000E729  4697 0001:0000E73E  4699 0001:0000E744  4700 0001:0000E751
+  4702 0001:0000E75A  4703 0001:0000E761  4706 0001:0000E768  4707 0001:0000E771
+  4708 0001:0000E77E  4711 0001:0000E784  4712 0001:0000E787  4713 0001:0000E792
+  4716 0001:0000E794  4717 0001:0000E797  4719 0001:0000E79F  4720 0001:0000E7A7
+  4721 0001:0000E7B6  4723 0001:0000E7C3  4726 0001:0000E7C8  4727 0001:0000E7CB
+  4729 0001:0000E7D3  4730 0001:0000E7D9  4731 0001:0000E7DD  4733 0001:0000E7E4
+  4736 0001:0000E7E8  4737 0001:0000E7FE  4738 0001:0000E810  4739 0001:0000E848
+  4742 0001:0000E850  4743 0001:0000E856  4745 0001:0000E85E  4746 0001:0000E864
+  4748 0001:0000E868  4749 0001:0000E871  4752 0001:0000E880  4753 0001:0000E88D
+  4755 0001:0000E894  4759 0001:0000E898  4760 0001:0000E8AF  4763 0001:0000E8B0
+  4764 0001:0000E8B3  4765 0001:0000E8CB  4768 0001:0000E8D0  4769 0001:0000E8D3
+  4770 0001:0000E8D8  4773 0001:0000E8DC  4774 0001:0000E8E6  4776 0001:0000E8F1
+  4777 0001:0000E8FA  4778 0001:0000E904  4780 0001:0000E921  4786 0001:0000E928
+  4787 0001:0000E94B  4789 0001:0000E95E  4790 0001:0000E965  4791 0001:0000E96A
+  4793 0001:0000E98A  4795 0001:0000E99B  4796 0001:0000E9A6  4797 0001:0000E9AB
+  4798 0001:0000E9B7  4800 0001:0000E9D1  4791 0001:0000E9D2  4801 0001:0000E9D7
+  4802 0001:0000E9E1  4805 0001:0000E9F9  4806 0001:0000EA22  4809 0001:0000EA38
+  4810 0001:0000EA4E  4812 0001:0000EA5D  4813 0001:0000EA64  4814 0001:0000EA7F
+  4815 0001:0000EA8F  4817 0001:0000EAB3  4820 0001:0000EAB8  4821 0001:0000EABE
+  4822 0001:0000EAC5  4823 0001:0000EAD8  4824 0001:0000EAE6  4828 0001:0000EAEC
+  4829 0001:0000EAF2  4832 0001:0000EAF4  4833 0001:0000EAF7  4834 0001:0000EB02
+  4837 0001:0000EB04  4838 0001:0000EB0D  4839 0001:0000EB1A  4842 0001:0000EB20
+  4843 0001:0000EB40  4844 0001:0000EB4E  4845 0001:0000EB73  4849 0001:0000EB78
+  4850 0001:0000EB84  4854 0001:0000EB88  4855 0001:0000EB94  4859 0001:0000EB98
+  4860 0001:0000EBA4  4864 0001:0000EBA8  4865 0001:0000EBB4  4871 0001:0000EBB8
+  4872 0001:0000EBC7  4873 0001:0000EC2A  4882 0001:0000EC30  4883 0001:0000EC43
+  4885 0001:0000EC67  4886 0001:0000EC71  4887 0001:0000EC76  4883 0001:0000EC77
+  4888 0001:0000EC7A  4889 0001:0000EC85  4890 0001:0000EC9F  4897 0001:0000ECA8
+  4898 0001:0000ECB7  4899 0001:0000ECC1  4900 0001:0000ECCB  4901 0001:0000ECDB
+  4903 0001:0000ED00  4904 0001:0000ED0D  4906 0001:0000ED61  4909 0001:0000ED70
+  4910 0001:0000ED81  4911 0001:0000ED8B  4901 0001:0000ED8E  4912 0001:0000ED97
+  4916 0001:0000EDA0  4917 0001:0000EDA6  4918 0001:0000EDAD  4919 0001:0000EDB3
+  4920 0001:0000EDC5  4921 0001:0000EDCE  4928 0001:0000EDD4  4929 0001:0000EDE5
+  4930 0001:0000EDF0  4931 0001:0000EDFB  4933 0001:0000EE20  4934 0001:0000EE2D
+  4936 0001:0000EE44  4937 0001:0000EE52  4939 0001:0000EE5F  4940 0001:0000EE81
+  4942 0001:0000EECF  4944 0001:0000EF4B  4945 0001:0000EF5C  4946 0001:0000EF69
+  4931 0001:0000EF6C  4947 0001:0000EF75  4953 0001:0000EF7C  4954 0001:0000EF83
+  4955 0001:0000EF8A  4956 0001:0000EF90  4957 0001:0000EF95  4958 0001:0000EFA1
+  4964 0001:0000EFA8  4965 0001:0000EFBD  4966 0001:0000EFC6  4967 0001:0000EFD2
+  4968 0001:0000EFDC  4969 0001:0000EFFD  4973 0001:0000F008  4974 0001:0000F00E
+  4975 0001:0000F015  4976 0001:0000F01C  4980 0001:0000F020  4981 0001:0000F026
+  4982 0001:0000F02D  4983 0001:0000F034  4991 0001:0000F038  4992 0001:0000F042
+  4994 0001:0000F04C  4995 0001:0000F055  4996 0001:0000F062  4997 0001:0000F06C
+  4998 0001:0000F070  4999 0001:0000F07D  5000 0001:0000F089  5001 0001:0000F096
+  5003 0001:0000F09E  5005 0001:0000F0D0  5011 0001:0000F0D8  5012 0001:0000F0F4
+  5013 0001:0000F0FE  5014 0001:0000F10C  5015 0001:0000F12A  5016 0001:0000F16F
+  5023 0001:0000F178  5024 0001:0000F182  5026 0001:0000F188  5028 0001:0000F193
+  5029 0001:0000F19E  5030 0001:0000F1A8  5032 0001:0000F1BC  5033 0001:0000F1C6
+  5034 0001:0000F1D0  5035 0001:0000F1E0  5036 0001:0000F1F0  5037 0001:0000F1F4
+  5038 0001:0000F201  5040 0001:0000F20D  5045 0001:0000F214  5046 0001:0000F21F
+  5050 0001:0000F220  5051 0001:0000F229  5053 0001:0000F234  5054 0001:0000F238
+  5055 0001:0000F247  5056 0001:0000F252  5058 0001:0000F259  5062 0001:0000F264
+  5063 0001:0000F267  5064 0001:0000F26D  5065 0001:0000F272  5069 0001:0000F274
+  5070 0001:0000F277  5071 0001:0000F27D  5072 0001:0000F282  5076 0001:0000F284
+  5077 0001:0000F287  5079 0001:0000F28F  5080 0001:0000F295  5082 0001:0000F29A
+  5111 0001:0000F29C  5112 0001:0000F2B1  5113 0001:0000F2BA  5114 0001:0000F2C1
+  5115 0001:0000F2C8  5116 0001:0000F2E6  5123 0001:0000F2EC  5124 0001:0000F2F5
+  5125 0001:0000F2FE  5128 0001:0000F331  5131 0001:0000F338  5132 0001:0000F33B
+  5134 0001:0000F343  5135 0001:0000F349  5137 0001:0000F34E  5140 0001:0000F350
+  5141 0001:0000F353  5143 0001:0000F35B  5144 0001:0000F361  5146 0001:0000F366
+  5149 0001:0000F368  5150 0001:0000F36B  5152 0001:0000F373  5153 0001:0000F379
+  5155 0001:0000F37E  5164 0001:0000F380  5165 0001:0000F38B  5166 0001:0000F392
+  5167 0001:0000F39E  5168 0001:0000F3A4  5170 0001:0000F3B4  5172 0001:0000F3C7
+  5173 0001:0000F3DF  5174 0001:0000F3F5  5175 0001:0000F406  5177 0001:0000F429
+  5182 0001:0000F430  5183 0001:0000F43A  5186 0001:0000F43C  5187 0001:0000F443
+  5188 0001:0000F449  5189 0001:0000F45C  5191 0001:0000F465  5194 0001:0000F46C
+  5195 0001:0000F472  5196 0001:0000F484  5199 0001:0000F488  5200 0001:0000F48E
+  5201 0001:0000F4A0  5204 0001:0000F4A4  5205 0001:0000F4AD  5206 0001:0000F4B7
+  5213 0001:0000F4BC  5214 0001:0000F4C5  5215 0001:0000F4CE  5218 0001:0000F4D0
+  5219 0001:0000F4D7  5220 0001:0000F4DD  5221 0001:0000F4E5  5223 0001:0000F4EA
+  5224 0001:0000F4F9  5227 0001:0000F500  5228 0001:0000F50E  5230 0001:0000F517
+  5231 0001:0000F52B  5232 0001:0000F533  5234 0001:0000F53D  5237 0001:0000F544
+  5238 0001:0000F560  5240 0001:0000F56C  5241 0001:0000F576  5242 0001:0000F57F
+  5243 0001:0000F592  5245 0001:0000F5B0  5246 0001:0000F5E6  5249 0001:0000F5F0
+  5250 0001:0000F5F3  5251 0001:0000F5FA  5254 0001:0000F5FC  5255 0001:0000F618
+  5256 0001:0000F621  5257 0001:0000F635  5258 0001:0000F639  5260 0001:0000F640
+  5261 0001:0000F653  5263 0001:0000F683  5266 0001:0000F68C  5267 0001:0000F6B3
+  5268 0001:0000F6BF  5271 0001:0000F6EC  5273 0001:0000F71C  5276 0001:0000F750
+  5277 0001:0000F759  5278 0001:0000F765  5280 0001:0000F775  5281 0001:0000F77E
+  5287 0001:0000F784  5288 0001:0000F7BF  5289 0001:0000F7C4  5291 0001:0000F7DB
+  5293 0001:0000F868  5294 0001:0000F86A  5296 0001:0000F8A6  5289 0001:0000F8A7
+  5297 0001:0000F8AE  5298 0001:0000F8B3  5299 0001:0000F8C3  5300 0001:0000F8CF
+  5302 0001:0000F8EB  5303 0001:0000F977  5308 0001:0000F9B0  5309 0001:0000F9CB
+  5310 0001:0000F9D5  5312 0001:0000F9DE  5313 0001:0000F9E8  5314 0001:0000F9F9
+  5315 0001:0000FA0D  5317 0001:0000FA2D  5318 0001:0000FA5A  5327 0001:0000FA60
+  5328 0001:0000FA6C  5329 0001:0000FA70  5333 0001:0000FA7A  5336 0001:0000FA88
+  5338 0001:0000FA8B  5339 0001:0000FA99  5341 0001:0000FAAA  5342 0001:0000FABF
+  5344 0001:0000FAC5  5345 0001:0000FACC  5351 0001:0000FAD6  5352 0001:0000FAE5
+  5355 0001:0000FAEC  5356 0001:0000FB01  5357 0001:0000FB0A  5358 0001:0000FB28
+  5361 0001:0000FB2C  5362 0001:0000FB33  5363 0001:0000FB47  5364 0001:0000FB51
+  5365 0001:0000FB63  5369 0001:0000FB68  5370 0001:0000FB8B  5371 0001:0000FBC1
+  5379 0001:0000FBC8  5380 0001:0000FBF7  5381 0001:0000FBFB  5383 0001:0000FC10
+  5384 0001:0000FC12  5385 0001:0000FC17  5387 0001:0000FC36  5388 0001:0000FC51
+  5390 0001:0000FC72  5391 0001:0000FC75  5393 0001:0000FC77  5385 0001:0000FC7A
+  5394 0001:0000FCA5  5400 0001:0000FCB0  5401 0001:0000FCD7  5402 0001:0000FCDF
+  5404 0001:0000FD01  5406 0001:0000FD1C  5408 0001:0000FD28  5409 0001:0000FD30
+  5410 0001:0000FD4C  5413 0001:0000FD7B  5402 0001:0000FD7C  5414 0001:0000FDA1
+  5417 0001:0000FDAC  5418 0001:0000FDAF  5419 0001:0000FDB7  5430 0001:0000FDBC
+  5431 0001:0000FDE5  5432 0001:0000FDF3  5433 0001:0000FE01  5434 0001:0000FE0C
+  5435 0001:0000FE17  5436 0001:0000FE1F  5437 0001:0000FE2A  5439 0001:0000FE35
+  5440 0001:0000FE53  5441 0001:0000FE6B  5442 0001:0000FE88  5443 0001:0000FE9B
+  5444 0001:0000FE9F  5445 0001:0000FEA6  5446 0001:0000FEC3  5447 0001:0000FECD
+  5448 0001:0000FED8  5450 0001:0000FEF0  5452 0001:0000FF28  5455 0001:0000FF30
+  5456 0001:0000FF36  5457 0001:0000FF45  5460 0001:0000FF48  5461 0001:0000FF4E
+  5462 0001:0000FF5D  5468 0001:0000FF60  5469 0001:0000FF7E  5471 0001:0000FF90
+  5472 0001:0000FFB3  5473 0001:0000FFCE  5471 0001:0000FFF5  5475 0001:00010015
+  5478 0001:0001001C  5479 0001:0001001F  5481 0001:00010027  5482 0001:0001002D
+  5484 0001:00010032  5487 0001:00010034  5488 0001:0001003D  5489 0001:00010043
+  5490 0001:0001006B  5493 0001:00010070  5494 0001:00010073  5496 0001:0001007B
+  5497 0001:00010081  5499 0001:00010086  5502 0001:00010088  5503 0001:00010091
+  5504 0001:00010097  5505 0001:000100BF  5509 0001:000100C4  5510 0001:000100D0
+  5511 0001:000100E4  5515 0001:000100EC  5516 0001:00010110  5518 0001:00010114
+  5519 0001:00010129  5520 0001:00010140  5523 0001:0001017C  5524 0001:000101A6
+  5527 0001:000101B0  5528 0001:000101D7  5529 0001:000101E6  5532 0001:00010213
+  5534 0001:00010246  5537 0001:00010278  5538 0001:00010281  5539 0001:00010290
+  5541 0001:000102A3  5542 0001:000102AC  5545 0001:000102B0  5546 0001:000102B3
+  5547 0001:000102B9  5548 0001:000102BE  5553 0001:000102C0  5554 0001:000102D7
+  5555 0001:000102E0  5556 0001:000102E7  5557 0001:000102EE  5558 0001:000102F5
+  5559 0001:000102FC  5560 0001:00010303  5561 0001:0001030A  5562 0001:0001031B
+  5563 0001:0001033E  5566 0001:00010344  5567 0001:00010352  5568 0001:0001035A
+  5569 0001:00010371  5572 0001:00010378  5573 0001:00010381  5574 0001:00010390
+  5575 0001:00010395  5577 0001:00010399  5578 0001:000103A1  5580 0001:000103AB
+  5581 0001:000103B4  5585 0001:000103B8  5586 0001:000103C1  5587 0001:000103C6
+  5589 0001:000103D1  5590 0001:000103D8  5591 0001:000103E4  5593 0001:000103F4
+  5594 0001:00010413  5600 0001:00010473  5601 0001:00010488  5602 0001:000104BF
+  5609 0001:000104D8  5610 0001:000104FF  5612 0001:00010505  5613 0001:0001050C
+  5614 0001:00010513  5615 0001:0001051A  5616 0001:00010521  5617 0001:00010528
+  5621 0001:00010534  5622 0001:00010536  5624 0001:00010541  5625 0001:00010550
+  5626 0001:00010568  5627 0001:00010590  5628 0001:000105B6  5629 0001:000105BB
+  5630 0001:000105C0  5631 0001:000105C5  5632 0001:000105CA  5633 0001:000105CF
+  5635 0001:000105D2  5636 0001:000105DC  5637 0001:000105F9  5639 0001:00010625
+  5642 0001:00010638  5643 0001:0001063F  5644 0001:00010653  5645 0001:00010665
+  5648 0001:0001066C  5649 0001:00010678  5650 0001:00010683  5651 0001:00010696
+  5654 0001:0001069C  5655 0001:0001069F  5657 0001:000106A4  5658 0001:000106A7
+  5660 0001:000106AE  5663 0001:000106B0  5664 0001:000106B3  5666 0001:000106B8
+  5667 0001:000106BB  5669 0001:000106C2  5672 0001:000106C4  5673 0001:000106C7
+  5675 0001:000106CC  5676 0001:000106CF  5678 0001:000106D6  5681 0001:000106D8
+  5682 0001:000106DB  5684 0001:000106E0  5685 0001:000106E3  5687 0001:000106EA
+  5690 0001:000106EC  5691 0001:000106EF  5693 0001:000106F4  5694 0001:000106F7
+  5696 0001:000106FE  5699 0001:00010700  5700 0001:00010703  5702 0001:00010708
+  5703 0001:0001070B  5705 0001:00010712  5710 0001:00010714  5711 0001:00010729
+  5712 0001:00010732  5713 0001:00010746  5714 0001:0001074D  5715 0001:0001076B
+  5718 0001:00010770  5719 0001:00010785  5720 0001:0001078E  5721 0001:00010797
+  5722 0001:000107B5  5725 0001:000107BC  5726 0001:000107C2  5727 0001:000107CD
+  5728 0001:000107D4  5729 0001:000107E6  5732 0001:000107EC  5733 0001:000107FA
+  5734 0001:0001080E  5735 0001:00010819  5736 0001:00010830  5740 0001:00010834
+  5741 0001:0001083D  5742 0001:0001084A  5746 0001:00010850  5747 0001:00010859
+  5750 0001:0001085C  5751 0001:0001085F  5752 0001:0001086A  5755 0001:0001086C
+  5756 0001:0001086F  5757 0001:0001087A  5760 0001:0001087C  5761 0001:0001087F
+  5763 0001:00010888  5765 0001:0001089B  5766 0001:000108B6  5767 0001:000108BF
+  5772 0001:000108C8  5773 0001:000108DB  5774 0001:000108E4  5775 0001:000108FF
+  5778 0001:00010906  5781 0001:00010908  5782 0001:0001090E  5783 0001:00010915
+  5784 0001:00010921  5787 0001:00010924  5788 0001:0001092A  5789 0001:00010931
+  5790 0001:00010938  5793 0001:0001093C  5794 0001:00010942  5795 0001:00010949
+  5796 0001:00010950  5799 0001:00010954  5800 0001:0001095A  5801 0001:0001096A
+  5805 0001:00010970  5807 0001:00010973  5808 0001:00010982  5810 0001:00010991
+  5821 0001:00010994  5822 0001:000109D7  5823 0001:000109DE  5824 0001:000109E4
+  5825 0001:000109EB  5827 0001:000109F5  5829 0001:00010A02  5831 0001:00010A0B
+  5832 0001:00010A1C  5833 0001:00010A2A  5834 0001:00010A40  5836 0001:00010A49
+  5837 0001:00010A50  5839 0001:00010A5A  5841 0001:00010A6C  5842 0001:00010A81
+  5843 0001:00010A89  5844 0001:00010A91  5849 0001:00010A99  5850 0001:00010AAE
+  5851 0001:00010AB6  5852 0001:00010ABE  5855 0001:00010AC4  5856 0001:00010AD7
+  5858 0001:00010ADE  5860 0001:00010AE8  5861 0001:00010AEC  5863 0001:00010AFE
+  5865 0001:00010B0A  5866 0001:00010B16  5868 0001:00010B1F  5872 0001:00010B28
+  5873 0001:00010B40  5874 0001:00010B49  5877 0001:00010B52  5878 0001:00010B67
+  5879 0001:00010B6D  5880 0001:00010B73  5888 0001:00010B79  5890 0001:00010B85
+  5891 0001:00010B91  5893 0001:00010B97  5897 0001:00010B9D  5898 0001:00010BB2
+  5899 0001:00010BB8  5902 0001:00010BBE  5903 0001:00010BCA  5905 0001:00010BD0
+  5910 0001:00010BD4  5914 0001:00010BE3  5915 0001:00010BF4  5916 0001:00010C04
+  5918 0001:00010C0A  5919 0001:00010C14  5921 0001:00010C21  5922 0001:00010C2D
+  5924 0001:00010C35  5926 0001:00010C4B  5927 0001:00010C58  5929 0001:00010C60
+  5931 0001:00010C70  5933 0001:00010C78  5934 0001:00010C84  5936 0001:00010CAC
+  5937 0001:00010CB5  5938 0001:00010CBC  5939 0001:00010CCF  5940 0001:00010CDA
+  5941 0001:00010CE7  5943 0001:00010D2D  5944 0001:00010D50  5945 0001:00010D67
+  5949 0001:00010D77  5951 0001:00010D8F  5952 0001:00010D91  5953 0001:00010DA7
+  5954 0001:00010DB6  5956 0001:00010DBB  5959 0001:00010DC5  5960 0001:00010E1F
+  5954 0001:00010E2C  5962 0001:00010E31  5963 0001:00010E40  5964 0001:00010E57
+  5965 0001:00010E65  5966 0001:00010E71  5967 0001:00010EA3  5968 0001:00010EB9
+  5972 0001:00010EDF  5976 0001:00010F19  5986 0001:00010F3C  5987 0001:00010F6C
+  5989 0001:00010F79  5990 0001:00010F9A  5991 0001:00010FA8  5992 0001:00010FBC
+  5993 0001:00010FCA  5995 0001:00010FD6  5996 0001:00010FE7  5997 0001:00010FF4
+  5998 0001:00011001  5999 0001:0001100C  6001 0001:00011019  6002 0001:00011026
+  6004 0001:00011034  6006 0001:00011049  6010 0001:0001108C  6011 0001:00011098
+  6012 0001:000110A6  6014 0001:000110B2  6015 0001:000110BF  6016 0001:000110CF
+  6017 0001:0001110D  6019 0001:0001111A  6020 0001:0001112A  6022 0001:00011175
+  6025 0001:0001118B  6026 0001:0001119C  6029 0001:000111A9  6031 0001:000111B2
+  6032 0001:000111BF  6034 0001:000111CB  6036 0001:000111E1  6039 0001:000111EB
+  6040 0001:000111FB  6041 0001:0001120B  6042 0001:00011216  6045 0001:00011223
+  6046 0001:0001122F  6048 0001:0001124F  6049 0001:00011254  6050 0001:00011260
+  6052 0001:00011268  6054 0001:000112A1  6057 0001:000112C0  6060 0001:000112E5
+  6061 0001:000112EB  6064 0001:0001131D  6067 0001:00011324  6068 0001:00011327
+  6070 0001:0001132F  6071 0001:00011335  6073 0001:00011343  6076 0001:00011348
+  6077 0001:0001134B  6078 0001:0001135C  6081 0001:00011360  6082 0001:00011366
+  6083 0001:0001136D  6084 0001:0001137C  6085 0001:00011383  6093 0001:00011388
+  6094 0001:00011393  6096 0001:00011398  6098 0001:000113AF  6099 0001:000113BC
+  6101 0001:000113CF  6102 0001:000113D4  6104 0001:000113EF  6106 0001:00011408
+  6107 0001:00011415  6109 0001:0001141A  6111 0001:0001143A  6112 0001:00011440
+  6114 0001:0001144F  6118 0001:0001145A  6102 0001:0001145B  6119 0001:0001145E
+  6120 0001:0001146A  6123 0001:00011476  6124 0001:0001147D  6125 0001:00011484
+  6128 0001:0001148C  6129 0001:00011492  6131 0001:0001149A  6132 0001:000114A0
+  6133 0001:000114A7  6135 0001:000114AE  6138 0001:000114B4  6139 0001:000114BA
+  6141 0001:000114C2  6142 0001:000114C8  6143 0001:000114CF  6145 0001:000114D6
+  6156 0001:000114DC  6157 0001:000114E7  6159 0001:00011515  6160 0001:0001151F
+  6161 0001:00011529  6162 0001:00011537  6163 0001:0001154F  6164 0001:0001155D
+  6166 0001:00011588  6169 0001:000115AA  6171 0001:000115BD  6178 0001:00011607
+  6179 0001:00011611  6181 0001:0001161D  6182 0001:00011628  6185 0001:00011646
+  6186 0001:00011662  6187 0001:00011681  6190 0001:000116A0  6193 0001:000116B0
+  6194 0001:000116B9  6195 0001:000116C2  6198 0001:000116C8  6199 0001:000116E1
+  6201 0001:000116F7  6202 0001:00011700  6203 0001:00011707  6205 0001:0001172B
+  6208 0001:00011730  6209 0001:00011733  6210 0001:00011739  6211 0001:0001173E
+  6214 0001:00011740  6215 0001:00011746  6216 0001:0001174C  6217 0001:0001175C
+  6218 0001:00011765  6219 0001:0001176C  6226 0001:00011770  6227 0001:00011778
+  6229 0001:00011788  6231 0001:000117A2  6233 0001:000117BB  6234 0001:000117C5
+  6235 0001:000117D7  6237 0001:000117E3  6229 0001:000117E4  6239 0001:000117E7
+  6242 0001:000117EC  6243 0001:000117F2  6244 0001:000117F9  6245 0001:00011800
+  6248 0001:00011804  6249 0001:00011807  6250 0001:0001180D  6251 0001:00011812
+  6254 0001:00011814  6255 0001:0001181D  6257 0001:00011827  6258 0001:0001182B
+  6259 0001:00011832  6260 0001:0001183A  6262 0001:0001183E  6263 0001:00011845
+  6266 0001:0001184C  6275 0001:00011850  6276 0001:0001185E  6277 0001:00011864
+  6278 0001:0001187C  6280 0001:0001188E  6282 0001:000118A9  6283 0001:000118AF
+  6285 0001:000118B3  6286 0001:000118C8  6287 0001:000118CC  6288 0001:000118E2
+  6280 0001:000118E3  6290 0001:000118E6  6292 0001:000118EC  6293 0001:000118F3
+  6294 0001:00011900  6295 0001:00011909  6299 0001:0001190C  6300 0001:00011918
+  6301 0001:00011923  6302 0001:00011930  6303 0001:00011938  6306 0001:00011940
+  6307 0001:00011943  6308 0001:00011949  6309 0001:0001194E  6312 0001:00011950
+  6318 0001:00011959  6319 0001:00011967  6321 0001:00011970  6322 0001:00011975
+  6332 0001:0001197C  6337 0001:00011980  6338 0001:0001198A  6339 0001:00011993
+  6340 0001:00011998  6342 0001:000119A9  6343 0001:000119AE  6345 0001:000119B7
+  6346 0001:000119D9  6347 0001:000119E9  6348 0001:00011A0B  6349 0001:00011A1B
+  6352 0001:00011A40  6359 0001:00011A48  6360 0001:00011A55  6361 0001:00011A57
+  6362 0001:00011A5C  6363 0001:00011A61  6365 0001:00011A67  6367 0001:00011A7C
+  6368 0001:00011A8C  6369 0001:00011A8E  6371 0001:00011A94  6373 0001:00011AA9
+  6374 0001:00011AB9  6375 0001:00011ABB  6378 0001:00011AC1  6379 0001:00011ACA
+  6380 0001:00011ACE  6381 0001:00011AF3  6388 0001:00011AFC  6389 0001:00011B09
+  6390 0001:00011B0B  6391 0001:00011B10  6394 0001:00011B15  6396 0001:00011B27
+  6397 0001:00011B37  6398 0001:00011B39  6399 0001:00011B3F  6401 0001:00011B45
+  6403 0001:00011B57  6404 0001:00011B67  6405 0001:00011B69  6406 0001:00011B6F
+  6409 0001:00011B75  6410 0001:00011B7E  6411 0001:00011B82  6412 0001:00011BA7
+  6417 0001:00011BB0  6418 0001:00011BBE  6419 0001:00011BC8  6420 0001:00011BCD
+  6421 0001:00011BE4  6428 0001:00011BE8  6429 0001:00011BF1  6430 0001:00011BF9
+  6432 0001:00011C09  6433 0001:00011C15  6434 0001:00011C2A  6435 0001:00011C3B
+  6436 0001:00011C49  6437 0001:00011C5A  6438 0001:00011C65  6439 0001:00011C72
+  6441 0001:00011C90  6444 0001:00011CAA  6448 0001:00011CB0  6449 0001:00011CB6
+  6451 0001:00011CCA  6453 0001:00011CD5  6458 0001:00011CD8  6459 0001:00011CDE
+  6460 0001:00011CE5  6461 0001:00011D0C  6464 0001:00011D10  6465 0001:00011D25
+  6466 0001:00011D2E  6467 0001:00011D6C  6470 0001:00011D70  6471 0001:00011D7E
+  6472 0001:00011D8A  6474 0001:00011D99  6475 0001:00011DA2  6476 0001:00011DAB
+  6477 0001:00011DB6  6478 0001:00011DC1  6480 0001:00011DD2  6483 0001:00011DD7
+  6488 0001:00011DE0  6489 0001:00011DE6  6490 0001:00011DED  6491 0001:00011DF6
+  6492 0001:00011E00  6495 0001:00011E04  6496 0001:00011E0E  6497 0001:00011E18
+  6499 0001:00011E21  6500 0001:00011E2A  6503 0001:00011E30  6504 0001:00011E57
+  6505 0001:00011E66  6507 0001:00011E93  6508 0001:00011EC6  6511 0001:00011EF8
+  6512 0001:00011F02  6513 0001:00011F0B  6514 0001:00011F21  6515 0001:00011F2A
+  6516 0001:00011F37  6517 0001:00011F44  6518 0001:00011F51  6519 0001:00011F5F
+  6521 0001:00011F6A  6522 0001:00011F77  6525 0001:00011F7C  6526 0001:00011F85
+  6527 0001:00011F94  6529 0001:00011FA7  6530 0001:00011FB0  6535 0001:00011FB4
+  6536 0001:00011FD4  6539 0001:00011FDD  6541 0001:00011FE6  6542 0001:00012004
+  6543 0001:0001200C  6544 0001:00012018  6545 0001:0001201D  6547 0001:0001202A
+  6548 0001:00012048  6550 0001:0001206B  6557 0001:00012074  6558 0001:00012082
+  6560 0001:00012092  6562 0001:000120A8  6564 0001:000120CA  6566 0001:000120E4
+  6568 0001:000120F6  6569 0001:00012104  6570 0001:00012112  6571 0001:0001212B
+  6572 0001:0001214C  6571 0001:00012159  6573 0001:0001215C  6575 0001:00012180
+  6580 0001:00012196  6581 0001:000121A1  6586 0001:000121A8  6587 0001:000121B2
+  6588 0001:000121BC  6590 0001:000121C5  6591 0001:000121CE  6594 0001:000121D4
+  6595 0001:000121DE  6596 0001:000121E7  6597 0001:000121FD  6598 0001:00012206
+  6599 0001:00012213  6600 0001:00012220  6601 0001:0001222D  6602 0001:0001223B
+  6604 0001:00012246  6605 0001:00012253  6610 0001:00012258  6611 0001:00012262
+  6612 0001:0001226C  6614 0001:00012275  6615 0001:0001227E  6618 0001:00012284
+  6619 0001:0001228E  6620 0001:00012297  6621 0001:000122AD  6622 0001:000122B6
+  6623 0001:000122C3  6624 0001:000122D0  6625 0001:000122DD  6626 0001:000122EB
+  6628 0001:000122F6  6629 0001:00012303  6634 0001:00012308  6635 0001:00012312
+  6636 0001:0001231C  6638 0001:00012325  6639 0001:0001232E  6642 0001:00012334
+  6643 0001:0001233E  6644 0001:00012347  6645 0001:0001235D  6646 0001:00012366
+  6647 0001:00012373  6648 0001:00012380  6649 0001:0001238D  6650 0001:0001239B
+  6652 0001:000123A6  6653 0001:000123B3  6658 0001:000123B8  6659 0001:000123DF
+  6660 0001:000123EE  6662 0001:00012417  6663 0001:0001244A  6666 0001:0001247C
+  6667 0001:00012485  6668 0001:00012494  6670 0001:000124A7  6671 0001:000124B0
+  6676 0001:000124B4  6677 0001:000124BD  6678 0001:000124C6  6681 0001:000124CC
+  6682 0001:000124D6  6683 0001:000124DF  6684 0001:000124F5  6685 0001:000124FE
+  6686 0001:0001250B  6687 0001:00012518  6688 0001:00012525  6689 0001:00012533
+  6691 0001:0001253E  6692 0001:0001254B  6693 0001:00012554  6698 0001:0001255C
+  6699 0001:00012566  6700 0001:00012570  6702 0001:00012579  6703 0001:00012582
+  6706 0001:00012588  6707 0001:00012592  6708 0001:0001259B  6709 0001:000125B1
+  6710 0001:000125BA  6711 0001:000125C7  6712 0001:000125D4  6713 0001:000125E1
+  6714 0001:000125EF  6716 0001:000125FA  6717 0001:00012607  6724 0001:0001260C
+  6725 0001:00012617  6726 0001:0001261E  6728 0001:00012645  6729 0001:0001264F
+  6730 0001:0001265C  6731 0001:0001266D  6733 0001:0001267B  6738 0001:00012684
+  6741 0001:0001268C  6742 0001:0001268E  6744 0001:000126D8  6748 0001:000126DC
+  6749 0001:000126EA  6750 0001:00012720  6751 0001:00012737  6754 0001:00012740
+  6755 0001:0001274D  6757 0001:00012759  6759 0001:00012781  6761 0001:000127A9
+  6764 0001:000127B8  6765 0001:000127DF  6766 0001:000127EE  6768 0001:00012817
+  6769 0001:0001284A  6772 0001:0001287C  6773 0001:00012885  6774 0001:00012894
+  6776 0001:000128A7  6777 0001:000128B0  6780 0001:000128B4  6781 0001:000128B7
+  6784 0001:000128E4  6786 0001:000128E8  6787 0001:000128EA  6791 0001:000128EC
+  6792 0001:000128F1  6793 0001:000128FC  6794 0001:00012901  6796 0001:0001290D
+  6797 0001:00012913  6801 0001:00012914  6802 0001:0001291A  6808 0001:0001291C
+  6809 0001:0001294A  6810 0001:0001294D  6818 0001:00012956  6819 0001:0001295B
+  6820 0001:0001297A  6821 0001:000129B2  6819 0001:000129BE  6822 0001:000129C1
+  6823 0001:000129C7  6825 0001:000129CE  6826 0001:000129D7  6827 0001:00012A11
+  6832 0001:00012A18  6833 0001:00012A3F  6834 0001:00012A49  6835 0001:00012A64
+  6836 0001:00012A8D  6846 0001:00012A94  6848 0001:00012ADC  6838 0001:00012AE0
+  6840 0001:00012AEC  6841 0001:00012AF3  6842 0001:00012B08  6844 0001:00012B19
+
+Line numbers for ORCtrlsDsgn(ORCtrlsDsgn.pas) segment .text
+
+    46 0001:00012DE4    47 0001:00012DE7    48 0001:00012DEC    52 0001:00012DF0
+    53 0001:00012DF6    59 0001:00012DFC    60 0001:00012E03    61 0001:00012E05
+    60 0001:00012E24    62 0001:00012E29    65 0001:00012E30    66 0001:00012E39
+    67 0001:00012E42    70 0001:00012E48    71 0001:00012E4B    72 0001:00012E50
+    77 0001:00012E54    78 0001:00012E6C    79 0001:00012E77    80 0001:00012E7D
+    81 0001:00012E97    84 0001:00012EA0    85 0001:00012EA9    86 0001:00012EC2
+    91 0001:00012ED4    92 0001:00012ED6    96 0001:00012EDC    97 0001:00012EE2
+   100 0001:00012EE8   101 0001:00012EEE   102 0001:00012F15   103 0001:00012F24
+   104 0001:00012F33   105 0001:00012F42   106 0001:00012F51   107 0001:00012F60
+   109 0001:00012F6C   115 0001:00013024   116 0001:00013032   118 0001:0001304A
+   119 0001:00013056   120 0001:0001307D   121 0001:0001308D   122 0001:0001309D
+   123 0001:000130AD   124 0001:000130BD   125 0001:000130CD   127 0001:000130DB
+   116 0001:000130DC   128 0001:000130E3   134 0001:000130EC   135 0001:000130F5
+   136 0001:00013102   138 0001:00013116   139 0001:0001311F   140 0001:00013146
+   141 0001:00013150   142 0001:0001315A   143 0001:00013164   144 0001:0001316E
+   145 0001:00013178   147 0001:00013180   136 0001:00013181   148 0001:00013184
+   149 0001:00013197   153 0001:000131A0   154 0001:000131A6   160 0001:00013268
+   162 0001:00013283   164 0001:000132E0   164 0001:000132E7
+
+Line numbers for ORCtrlLib60(C:\perforce\cprs\OR_3_215V26\CPRS-Lib\ORCtrlLib60.dpk) segment .text
+
+    42 0001:00013548
+
+Bound resource files
+
+ORCTRLS.RES
+ORCtrlLib60.res
+..\CPRS-Chart\Accessibility_TLB.dcr
+ORCtrlsDsgn.dcr
+ORCtrlLib60.drf
+
+
+Program entry point at 0001:00013548
Index: cprs/branches/HealthSevak-CPRS/Packages/ORDateLib2006.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/ORDateLib2006.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/ORDateLib2006.map	(revision 1676)
@@ -0,0 +1,860 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 0000E89CH .text                   CODE
+ 0002:00410000 000002DCH .itext                  ICODE
+ 0003:00411000 0000058CH .data                   DATA
+ 0004:00412000 00000058H .bss                    BSS
+ 0005:00000000 00000000H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 0000020E C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:00000210 0000010E C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:00000320 000000BC C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:000003DC 000000BE C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:0000049C 00000006 C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:000004A4 00000006 C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:000004AC 00000006 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:000004B4 000002AE C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:00000764 00000006 C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:0000076C 000000B6 C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:00000824 00000006 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:0000082C 00000006 C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:00000834 0000017E C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:000009B4 00000006 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:000009BC 00000006 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:000009C4 0000001E C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:000009E4 00000006 C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:000009EC 00000006 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:000009F4 00000006 C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:000009FC 000000C6 C=CODE     S=.text    G=(none)   M=StdCtrls ACBP=A9
+ 0001:00000AC4 00000006 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00000ACC 0000005E C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:00000B2C 00000006 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:00000B34 00000006 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:00000B3C 00000006 C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:00000B44 00000006 C=CODE     S=.text    G=(none)   M=CheckLst ACBP=A9
+ 0001:00000B4C 00000056 C=CODE     S=.text    G=(none)   M=Grids    ACBP=A9
+ 0001:00000BA4 0000004E C=CODE     S=.text    G=(none)   M=Mask     ACBP=A9
+ 0001:00000BF4 00000016 C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:00000C0C 0000008E C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:00000C9C 00000006 C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:00000CA4 00000006 C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:00000CAC 00000006 C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:00000CB4 00000006 C=CODE     S=.text    G=(none)   M=VAUtils  ACBP=A9
+ 0001:00000CBC 00000006 C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:00000CC4 000001C3 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:00000E88 00000056 C=CODE     S=.text    G=(none)   M=Calendar ACBP=A9
+ 0001:00000EE0 000003EA C=CODE     S=.text    G=(none)   M=ORDtTmCal ACBP=A9
+ 0001:000012CC 0000003E C=CODE     S=.text    G=(none)   M=ORCtrls  ACBP=A9
+ 0001:0000130C 00000226 C=CODE     S=.text    G=(none)   M=OR2006Compatibility ACBP=A9
+ 0001:00001534 00000006 C=CODE     S=.text    G=(none)   M=CCOWRPCBroker ACBP=A9
+ 0001:0000153C 00000006 C=CODE     S=.text    G=(none)   M=OleCtrls ACBP=A9
+ 0001:00001544 00000006 C=CODE     S=.text    G=(none)   M=AxCtrls  ACBP=A9
+ 0001:0000154C 00000006 C=CODE     S=.text    G=(none)   M=OleServer ACBP=A9
+ 0001:00001554 00000046 C=CODE     S=.text    G=(none)   M=Trpcb    ACBP=A9
+ 0001:0000159C 00000006 C=CODE     S=.text    G=(none)   M=Hash     ACBP=A9
+ 0001:000015A4 00000006 C=CODE     S=.text    G=(none)   M=MFunStr  ACBP=A9
+ 0001:000015AC 00000016 C=CODE     S=.text    G=(none)   M=WinSock  ACBP=A9
+ 0001:000015C4 00000006 C=CODE     S=.text    G=(none)   M=SelDiv   ACBP=A9
+ 0001:000015CC 00000006 C=CODE     S=.text    G=(none)   M=XWBRich20 ACBP=A9
+ 0001:000015D4 00000006 C=CODE     S=.text    G=(none)   M=Sgnoncnf ACBP=A9
+ 0001:000015DC 0000000E C=CODE     S=.text    G=(none)   M=Rpcconf1 ACBP=A9
+ 0001:000015EC 00000006 C=CODE     S=.text    G=(none)   M=RpcNet   ACBP=A9
+ 0001:000015F4 00000016 C=CODE     S=.text    G=(none)   M=TeEngine ACBP=A9
+ 0001:0000160C 00000006 C=CODE     S=.text    G=(none)   M=TeeProcs ACBP=A9
+ 0001:00001614 00000006 C=CODE     S=.text    G=(none)   M=Chart    ACBP=A9
+ 0001:0000161C 00006518 C=CODE     S=.text    G=(none)   M=ORFn     ACBP=A9
+ 0001:00007B34 0000140D C=CODE     S=.text    G=(none)   M=ORNet    ACBP=A9
+ 0001:00008F44 0000498E C=CODE     S=.text    G=(none)   M=ORDtTm   ACBP=A9
+ 0001:0000D8D4 00000C1E C=CODE     S=.text    G=(none)   M=ORDtTmRng ACBP=A9
+ 0001:0000E4F4 000003A7 C=CODE     S=.text    G=(none)   M=.ORDateLib2006 ACBP=A9
+ 0002:00000000 00000006 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000008 00000006 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:00000010 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:00000024 00000006 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:0000002C 00000006 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000034 00000006 C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:0000003C 00000006 C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:00000044 00000006 C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:0000004C 00000006 C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:00000054 00000006 C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:0000005C 00000006 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:00000064 00000006 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:0000006C 00000006 C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000074 00000006 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:0000007C 00000006 C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:00000084 00000006 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:0000008C 00000006 C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000094 00000006 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:0000009C 00000006 C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:000000A4 00000006 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:000000AC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000000B4 00000006 C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:000000BC 00000006 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:000000C4 00000006 C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:000000CC 00000006 C=ICODE    S=.itext   G=(none)   M=CheckLst ACBP=A9
+ 0002:000000D4 00000006 C=ICODE    S=.itext   G=(none)   M=Buttons  ACBP=A9
+ 0002:000000DC 00000006 C=ICODE    S=.itext   G=(none)   M=ComCtrls ACBP=A9
+ 0002:000000E4 00000006 C=ICODE    S=.itext   G=(none)   M=ExtActns ACBP=A9
+ 0002:000000EC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtDlgs  ACBP=A9
+ 0002:000000F4 00000006 C=ICODE    S=.itext   G=(none)   M=Mapi     ACBP=A9
+ 0002:000000FC 00000006 C=ICODE    S=.itext   G=(none)   M=VAUtils  ACBP=A9
+ 0002:00000104 00000006 C=ICODE    S=.itext   G=(none)   M=ComObj   ACBP=A9
+ 0002:0000010C 00000008 C=ICODE    S=.itext   G=(none)   M=ORDtTmCal ACBP=A9
+ 0002:00000114 00000006 C=ICODE    S=.itext   G=(none)   M=ORCtrls  ACBP=A9
+ 0002:0000011C 00000008 C=ICODE    S=.itext   G=(none)   M=OR2006Compatibility ACBP=A9
+ 0002:00000124 00000006 C=ICODE    S=.itext   G=(none)   M=CCOWRPCBroker ACBP=A9
+ 0002:0000012C 00000006 C=ICODE    S=.itext   G=(none)   M=OleCtrls ACBP=A9
+ 0002:00000134 00000006 C=ICODE    S=.itext   G=(none)   M=AxCtrls  ACBP=A9
+ 0002:0000013C 00000006 C=ICODE    S=.itext   G=(none)   M=OleServer ACBP=A9
+ 0002:00000144 00000006 C=ICODE    S=.itext   G=(none)   M=Trpcb    ACBP=A9
+ 0002:0000014C 00000006 C=ICODE    S=.itext   G=(none)   M=Hash     ACBP=A9
+ 0002:00000154 00000006 C=ICODE    S=.itext   G=(none)   M=MFunStr  ACBP=A9
+ 0002:0000015C 00000006 C=ICODE    S=.itext   G=(none)   M=SelDiv   ACBP=A9
+ 0002:00000164 00000006 C=ICODE    S=.itext   G=(none)   M=XWBRich20 ACBP=A9
+ 0002:0000016C 00000006 C=ICODE    S=.itext   G=(none)   M=Sgnoncnf ACBP=A9
+ 0002:00000174 00000006 C=ICODE    S=.itext   G=(none)   M=Rpcconf1 ACBP=A9
+ 0002:0000017C 00000006 C=ICODE    S=.itext   G=(none)   M=RpcNet   ACBP=A9
+ 0002:00000184 00000006 C=ICODE    S=.itext   G=(none)   M=TeEngine ACBP=A9
+ 0002:0000018C 00000006 C=ICODE    S=.itext   G=(none)   M=TeeProcs ACBP=A9
+ 0002:00000194 00000006 C=ICODE    S=.itext   G=(none)   M=Chart    ACBP=A9
+ 0002:0000019C 00000090 C=ICODE    S=.itext   G=(none)   M=ORFn     ACBP=A9
+ 0002:0000022C 00000084 C=ICODE    S=.itext   G=(none)   M=ORNet    ACBP=A9
+ 0002:000002B0 0000001C C=ICODE    S=.itext   G=(none)   M=ORDtTm   ACBP=A9
+ 0002:000002CC 00000008 C=ICODE    S=.itext   G=(none)   M=ORDtTmRng ACBP=A9
+ 0002:000002D4 00000005 C=ICODE    S=.itext   G=(none)   M=.ORDateLib2006 ACBP=A9
+ 0003:00000000 0000002C C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0003:0000002C 00000510 C=DATA     S=.data    G=DGROUP   M=ORFn     ACBP=A9
+ 0003:0000053C 0000000A C=DATA     S=.data    G=DGROUP   M=ORNet    ACBP=A9
+ 0003:00000548 00000030 C=DATA     S=.data    G=DGROUP   M=ORDtTm   ACBP=A9
+ 0004:00000000 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00000008 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:00000014 00000004 C=BSS      S=.bss     G=DGROUP   M=ORDtTmCal ACBP=A9
+ 0004:00000018 00000008 C=BSS      S=.bss     G=DGROUP   M=OR2006Compatibility ACBP=A9
+ 0004:00000020 00000010 C=BSS      S=.bss     G=DGROUP   M=ORFn     ACBP=A9
+ 0004:00000030 00000015 C=BSS      S=.bss     G=DGROUP   M=ORNet    ACBP=A9
+ 0004:00000048 0000000C C=BSS      S=.bss     G=DGROUP   M=ORDtTm   ACBP=A9
+ 0004:00000054 00000004 C=BSS      S=.bss     G=DGROUP   M=ORDtTmRng ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0002:000002D4       .ORDateLib2006..ORDateLib2006
+ 0001:0000E87C       .ORDateLib2006.@GetPackageInfoTable
+ 0001:0000E884       .ORDateLib2006.@PackageLoad
+ 0001:0000E890       .ORDateLib2006.@PackageUnload
+ 0004:0000001C       OR2006Compatibility..2
+ 0001:0000130C       OR2006Compatibility..Tfrm2006Compatibility
+ 0001:00001504       OR2006Compatibility.Finalization
+ 0004:00000018       OR2006Compatibility.frm2006Compatibility
+ 0002:0000011C       OR2006Compatibility.OR2006Compatibility
+ 0001:000014B0       OR2006Compatibility.Tfrm2006Compatibility.CreateNew
+ 0004:00000048       ORDtTm..6
+ 0001:000096D0       ORDtTm..TORDateBox
+ 0001:00009964       ORDtTm..TORDateCombo
+ 0001:0000B9C0       ORDtTm..TORDateComboEdit
+ 0001:00009484       ORDtTm..TORDateEdit
+ 0001:0000934C       ORDtTm..TORDateTimeDlg
+ 0001:00008F44       ORDtTm..TORfrmDtTm
+ 0001:00009D04       ORDtTm.ActiveBroker
+ 0003:00000548       ORDtTm.DaysInMonth
+ 0001:0000B964       ORDtTm.DaysPerMonth
+ 0001:0000D8A4       ORDtTm.Finalization
+ 0001:0000B918       ORDtTm.IsLeapYear
+ 0001:0000A088       ORDtTm.LoadEllipsis
+ 0002:000002B0       ORDtTm.ORDtTm
+ 0001:0000D828       ORDtTm.Register
+ 0001:00009F04       ORDtTm.RelativeDateTime
+ 0001:00009D30       ORDtTm.ServerFMNow
+ 0001:00009DD4       ORDtTm.ServerNow
+ 0001:00009E5C       ORDtTm.ServerParseFMDate
+ 0001:00009E0C       ORDtTm.ServerToday
+ 0001:0000AF4C       ORDtTm.TORDateBox.ButtonClick
+ 0001:0000B0C4       ORDtTm.TORDateBox.Change
+ 0001:0000ACA0       ORDtTm.TORDateBox.Create
+ 0001:0000B8C4       ORDtTm.TORDateBox.GetCaption
+ 0001:0000B8E8       ORDtTm.TORDateBox.GetDynamicProperty
+ 0001:0000B128       ORDtTm.TORDateBox.GetFMDateTime
+ 0001:0000B1BC       ORDtTm.TORDateBox.GetRelativeTime
+ 0001:0000B74C       ORDtTm.TORDateBox.IsValid
+ 0001:0000B0E0       ORDtTm.TORDateBox.KeyDown
+ 0001:0000B7D4       ORDtTm.TORDateBox.SetBlackColorMode
+ 0001:0000B81C       ORDtTm.TORDateBox.SetCaption
+ 0001:0000B2E0       ORDtTm.TORDateBox.SetDateOnly
+ 0001:0000B448       ORDtTm.TORDateBox.SetEditRect
+ 0001:0000B390       ORDtTm.TORDateBox.SetFMDateTime
+ 0001:0000B3BC       ORDtTm.TORDateBox.SetRequireTime
+ 0001:0000AE60       ORDtTm.TORDateBox.SetTemplateField
+ 0001:0000AF30       ORDtTm.TORDateBox.SupportsDynamicProperty
+ 0001:0000B4C0       ORDtTm.TORDateBox.UpdateText
+ 0001:0000B5D8       ORDtTm.TORDateBox.Validate
+ 0001:0000ADC0       ORDtTm.TORDateBox.WMSize
+ 0001:0000CECC       ORDtTm.TORDateCombo.BtnClicked
+ 0001:0000CD90       ORDtTm.TORDateCombo.CheckDays
+ 0001:0000D644       ORDtTm.TORDateCombo.CMFontChanged
+ 0001:0000BBA0       ORDtTm.TORDateCombo.Create
+ 0001:0000D4B0       ORDtTm.TORDateCombo.DateText
+ 0001:0000CB9C       ORDtTm.TORDateCombo.DayChanged
+ 0001:0000BC40       ORDtTm.TORDateCombo.Destroy
+ 0001:0000D5FC       ORDtTm.TORDateCombo.DoChange
+ 0001:0000D324       ORDtTm.TORDateCombo.GetFMDate
+ 0001:0000BCBC       ORDtTm.TORDateCombo.GetYearSize
+ 0001:0000BD00       ORDtTm.TORDateCombo.InitDays
+ 0001:0000BEBC       ORDtTm.TORDateCombo.InitMonths
+ 0001:0000CE74       ORDtTm.TORDateCombo.Loaded
+ 0001:0000CBEC       ORDtTm.TORDateCombo.MonthChanged
+ 0001:0000CEA0       ORDtTm.TORDateCombo.Paint
+ 0001:0000C024       ORDtTm.TORDateCombo.Rebuild
+ 0001:0000D628       ORDtTm.TORDateCombo.Resized
+ 0001:0000C730       ORDtTm.TORDateCombo.SetBlackColorMode
+ 0001:0000C784       ORDtTm.TORDateCombo.SetDay
+ 0001:0000D3A4       ORDtTm.TORDateCombo.SetFMDate
+ 0001:0000C840       ORDtTm.TORDateCombo.SetIncludeBtn
+ 0001:0000C878       ORDtTm.TORDateCombo.SetIncludeDay
+ 0001:0000C8D4       ORDtTm.TORDateCombo.SetIncludeMonth
+ 0001:0000C9B8       ORDtTm.TORDateCombo.SetLongMonths
+ 0001:0000C930       ORDtTm.TORDateCombo.SetMonth
+ 0001:0000D86C       ORDtTm.TORDateCombo.SetTemplateField
+ 0001:0000C9F0       ORDtTm.TORDateCombo.SetYear
+ 0001:0000D66C       ORDtTm.TORDateCombo.Text
+ 0001:0000CC44       ORDtTm.TORDateCombo.YearChanged
+ 0001:0000D234       ORDtTm.TORDateCombo.YearKeyPress
+ 0001:0000D088       ORDtTm.TORDateCombo.YearUDChange
+ 0001:0000BB58       ORDtTm.TORDateComboEdit.SetTemplateField
+ 0001:0000AC70       ORDtTm.TORDateEdit.CreateParams
+ 0001:0000A834       ORDtTm.TORDateTimeDlg.Create
+ 0001:0000A8A0       ORDtTm.TORDateTimeDlg.Execute
+ 0001:0000ABA8       ORDtTm.TORDateTimeDlg.GetFMDateTime
+ 0001:0000ABCC       ORDtTm.TORDateTimeDlg.SetDateOnly
+ 0001:0000AC10       ORDtTm.TORDateTimeDlg.SetFMDateTime
+ 0001:0000AC44       ORDtTm.TORDateTimeDlg.SetRequireTime
+ 0001:0000A170       ORDtTm.TORfrmDtTm.calSelectChange
+ 0001:0000A7F8       ORDtTm.TORfrmDtTm.cmdCancelClick
+ 0001:0000A5F4       ORDtTm.TORfrmDtTm.cmdMidnightClick
+ 0001:0000A554       ORDtTm.TORfrmDtTm.cmdNowClick
+ 0001:0000A628       ORDtTm.TORfrmDtTm.cmdOKClick
+ 0001:0000A2E8       ORDtTm.TORfrmDtTm.cmdTodayClick
+ 0001:0000A130       ORDtTm.TORfrmDtTm.FormCreate
+ 0001:0000A278       ORDtTm.TORfrmDtTm.imgNextMonthClick
+ 0001:0000A230       ORDtTm.TORfrmDtTm.imgNextMonthMouseDown
+ 0001:0000A2C0       ORDtTm.TORfrmDtTm.imgNextMonthMouseUp
+ 0001:0000A258       ORDtTm.TORfrmDtTm.imgPrevMonthClick
+ 0001:0000A208       ORDtTm.TORfrmDtTm.imgPrevMonthMouseDown
+ 0001:0000A298       ORDtTm.TORfrmDtTm.imgPrevMonthMouseUp
+ 0001:0000A818       ORDtTm.TORfrmDtTm.Loaded
+ 0001:0000A39C       ORDtTm.TORfrmDtTm.lstHourClick
+ 0001:0000A450       ORDtTm.TORfrmDtTm.lstMinuteClick
+ 0001:0000A34C       ORDtTm.TORfrmDtTm.txtTimeChange
+ 0004:0000004C       ORDtTm.uServerToday
+ 0004:00000014       ORDtTmCal..2
+ 0001:00000EE0       ORDtTmCal..TORCalendar
+ 0001:0000129C       ORDtTmCal.Finalization
+ 0002:0000010C       ORDtTmCal.ORDtTmCal
+ 0001:0000126C       ORDtTmCal.Register
+ 0001:00001070       ORDtTmCal.TORCalendar.DrawCell
+ 0001:000011F8       ORDtTmCal.TORCalendar.KeyDown
+ 0004:00000054       ORDtTmRng..3
+ 0001:0000DB08       ORDtTmRng..TORDateRangeDlg
+ 0001:0000D8D4       ORDtTmRng..TORfrmDateRange
+ 0001:0000E4C4       ORDtTmRng.Finalization
+ 0002:000002CC       ORDtTmRng.ORDtTmRng
+ 0001:0000E3A8       ORDtTmRng.Register
+ 0001:0000DD7C       ORDtTmRng.TORDateRangeDlg.Create
+ 0001:0000DE4C       ORDtTmRng.TORDateRangeDlg.Execute
+ 0001:0000E0CC       ORDtTmRng.TORDateRangeDlg.SetDateOnly
+ 0001:0000E1C8       ORDtTmRng.TORDateRangeDlg.SetFMDateStart
+ 0001:0000E22C       ORDtTmRng.TORDateRangeDlg.SetFMDateStop
+ 0001:0000E164       ORDtTmRng.TORDateRangeDlg.SetRequireTime
+ 0001:0000E290       ORDtTmRng.TORDateRangeDlg.SetTextOfStart
+ 0001:0000E2B0       ORDtTmRng.TORDateRangeDlg.SetTextOfStop
+ 0001:0000E39C       ORDtTmRng.TORfrmDateRange.cmdCancelClick
+ 0001:0000E2D0       ORDtTmRng.TORfrmDateRange.cmdOKClick
+ 0001:0000E3D8       ORDtTmRng.TORfrmDateRange.FormCreate
+ 0001:0000E488       ORDtTmRng.TORfrmDateRange.FormDestroy
+ 0001:0000E4A8       ORDtTmRng.TORfrmDateRange.Loaded
+ 0004:00000020       ORFn..1
+ 0001:00001714       ORFn..EFMDateTimeError
+ 0001:000043E0       ORFn..QuickAddError
+ 0001:00003F70       ORFn..QuickCopyError
+ 0001:000074F8       ORFn..TIdleCaller
+ 0001:00006238       ORFn.AdjustForWindowsXPStyleTitleBar
+ 0004:00000028       ORFn.AlignList
+ 0004:0000002C       ORFn.AnchorList
+ 0001:00005C04       ORFn.AnchorsToStr
+ 0001:00004E68       ORFn.BaseFont
+ 0001:00006CF0       ORFn.BlackColorScheme
+ 0001:00006DC8       ORFn.BlackColorSchemeUpdate
+ 0003:0000002C       ORFn.BOOLCHAR
+ 0001:00007854       ORFn.CallWhenIdle
+ 0001:000078C4       ORFn.CallWhenIdleNotifyWhenDone
+ 0001:00002490       ORFn.CharAt
+ 0001:00006BB4       ORFn.CheckColorScheme
+ 0001:00003868       ORFn.ComparePieces
+ 0001:00006F58       ORFn.ComponentUpdateColorsFor508Compliance
+ 0001:000024D4       ORFn.ContainsAlpha
+ 0001:00002534       ORFn.ContainsVisibleChar
+ 0001:0000258C       ORFn.ConvertSpecialStrings
+ 0003:0000011C       ORFn.CRC32_TABLE
+ 0001:000026B0       ORFn.CRCForFile
+ 0001:00002760       ORFn.CRCForStrings
+ 0001:00001774       ORFn.DateTimeToFMDateTime
+ 0001:00003EA0       ORFn.DelimCount
+ 0001:00007A98       ORFn.EnterIsPressed
+ 0001:00002A78       ORFn.ExpandTabsFilter
+ 0001:00002EC8       ORFn.ExtractDefault
+ 0001:00002DC0       ORFn.ExtractFloat
+ 0001:00002CC4       ORFn.ExtractInteger
+ 0001:00003070       ORFn.ExtractItems
+ 0001:0000320C       ORFn.ExtractText
+ 0001:000049A4       ORFn.FastAddStrings
+ 0001:0000486C       ORFn.FastAssign
+ 0004:00000024       ORFn.FBaseFont
+ 0001:00002864       ORFn.FilteredString
+ 0001:00007AB0       ORFn.Finalization
+ 0001:00001AE0       ORFn.FMDateTimeOffsetBy
+ 0001:00001850       ORFn.FMDateTimeToDateTime
+ 0001:00004F40       ORFn.FontWidthPixel
+ 0001:00004EC8       ORFn.FontWidthSubPixel
+ 0001:00005AE8       ORFn.ForceInsideWorkArea
+ 0001:00001B84       ORFn.FormatFMDateTime
+ 0001:00002184       ORFn.FormatFMDateTimeStr
+ 0001:00006D30       ORFn.Get508CompliantColor
+ 0001:0000443C       ORFn.GetStrings
+ 0001:00003FCC       ORFn.GetStrings
+ 0001:00002404       ORFn.HigherOf
+ 0003:00000538       ORFn.IdleCaller
+ 0001:00004CAC       ORFn.InfoBox
+ 0001:000033A8       ORFn.InvertStringList
+ 0001:000021CC       ORFn.IsFMDateTime
+ 0001:00007404       ORFn.KillObj
+ 0001:00004CF0       ORFn.LimitEditWidth
+ 0001:00004AE8       ORFn.LimitStringLength
+ 0001:00007148       ORFn.ListGridDrawCell
+ 0001:00007238       ORFn.ListGridDrawLines
+ 0001:00007380       ORFn.ListGridRowHeight
+ 0001:0000242C       ORFn.LowerOf
+ 0001:00004E7C       ORFn.MainFont
+ 0001:00004F90       ORFn.MainFontHeight
+ 0001:00004EB0       ORFn.MainFontSize
+ 0001:00004F78       ORFn.MainFontWidth
+ 0001:000022B4       ORFn.MakeFMDateTime
+ 0001:00007938       ORFn.menuHideAllBut
+ 0001:00003410       ORFn.MixedCase
+ 0001:0000362C       ORFn.MixedCaseByPiece
+ 0001:00003594       ORFn.MixedCaseList
+ 0003:00000064       ORFn.MONTH_NAMES_LONG
+ 0003:00000034       ORFn.MONTH_NAMES_SHORT
+ 0001:00006D10       ORFn.NormalColorScheme
+ 0001:000067C8       ORFn.NumCharsFitInWidth
+ 0002:0000019C       ORFn.ORFn
+ 0001:000036F8       ORFn.Piece
+ 0001:0000379C       ORFn.Pieces
+ 0001:000039E8       ORFn.PiecesToList
+ 0001:0000691C       ORFn.PopupComponent
+ 0003:00000530       ORFn.PURE_BLACK
+ 0001:0000479C       ORFn.QuickAdd
+ 0001:00004330       ORFn.QuickCopy
+ 0001:00004FD0       ORFn.RedrawActivate
+ 0001:00004FB4       ORFn.RedrawSuspend
+ 0001:00006970       ORFn.ReformatMemoParagraph
+ 0003:000000FC       ORFn.ReplaceChars
+ 0001:00004FF8       ORFn.ResetSelectedForList
+ 0001:000060B4       ORFn.ResizeAnchoredFormToFont
+ 0001:0000576C       ORFn.ResizeChartFonts
+ 0001:0000531C       ORFn.ResizeCheckListBox
+ 0001:000052B0       ORFn.ResizeComboBox
+ 0001:00005350       ORFn.ResizeDescendants
+ 0001:00005958       ORFn.ResizeFontsInDescendants
+ 0001:00005F14       ORFn.ResizeFormToFont
+ 0001:00005198       ORFn.ResizeHeaderControl
+ 0001:00005098       ORFn.ResizeHeight
+ 0001:000052E8       ORFn.ResizeListBox
+ 0001:00005214       ORFn.ResizeListView
+ 0001:00005118       ORFn.ResizeToFont
+ 0001:00005044       ORFn.ResizeWidth
+ 0001:00005E28       ORFn.RestoreAlign
+ 0001:00003A94       ORFn.ReverseStr
+ 0001:00006FF4       ORFn.ScanAllComponents
+ 0003:00000030       ORFn.ScrollBarHeight
+ 0003:000000DC       ORFn.SearchChars
+ 0001:00006344       ORFn.SetEqualTabStops
+ 0001:000022F4       ORFn.SetListFMDateTime
+ 0001:00003B24       ORFn.SetPiece
+ 0001:00003C60       ORFn.SetPieces
+ 0001:00007A48       ORFn.ShiftTabIsPressed
+ 0001:000064A0       ORFn.ShowMsgOn
+ 0001:00003D34       ORFn.SortByPiece
+ 0001:00006450       ORFn.StatusText
+ 0001:00005C78       ORFn.StrToAnchors
+ 0001:00002454       ORFn.StrToFloatDef
+ 0001:00005D40       ORFn.SuspendAlign
+ 0001:000079F8       ORFn.TabIsPressed
+ 0001:00006580       ORFn.TextHeightByFont
+ 0001:000064D0       ORFn.TextWidthByFont
+ 0001:00007718       ORFn.TIdleCaller.Add
+ 0001:000076BC       ORFn.TIdleCaller.AppIdle
+ 0001:00007550       ORFn.TIdleCaller.Create
+ 0001:00007638       ORFn.TIdleCaller.Destroy
+ 0001:00007784       ORFn.TIdleCaller.TimerDone
+ 0001:00001B18       ORFn.TrimFormatCount
+ 0003:00000520       ORFn.uBlackColorScheme
+ 0003:00000534       ORFn.uBorderlessWindowColorWhenBlack
+ 0003:0000052C       ORFn.uCheckColorScheme
+ 0003:00000528       ORFn.uMaroonColorWhenBlack
+ 0003:0000051C       ORFn.uNormalColorScheme
+ 0001:000070BC       ORFn.UpdateColorsFor508Compliance
+ 0001:00002628       ORFn.UpdateCrc32
+ 0001:000070EC       ORFn.UpdateReadOnlyColorScheme
+ 0003:00000524       ORFn.uWhiteColorScheme
+ 0001:00004A64       ORFn.ValidFileName
+ 0001:00006640       ORFn.WrappedTextHeightByFont
+ 0004:00000038       ORNet..1
+ 0001:000088C4       ORNet.AuthorizedOption
+ 0003:00000544       ORNet.BoolChar
+ 0001:00008848       ORNet.CallBroker
+ 0001:00008260       ORNet.CallBrokerInContext
+ 0001:00008E74       ORNet.CallRPCWhenIdle
+ 0001:00008C04       ORNet.CallV
+ 0001:0000890C       ORNet.ConnectToServer
+ 0001:00008DCC       ORNet.DottedIPStr
+ 0001:00007B34       ORNet.EnsureBroker
+ 0001:00008EC4       ORNet.Finalization
+ 0001:00008D94       ORNet.GetRPCMax
+ 0001:00008238       ORNet.IsBaseContext
+ 0001:00008D9C       ORNet.LoadRPCData
+ 0001:00008BA8       ORNet.MRef
+ 0002:0000022C       ORNet.ORNet
+ 0001:00008D7C       ORNet.RetainedRPCCount
+ 0004:00000030       ORNet.RPCBrokerV
+ 0001:00008E40       ORNet.RPCIdleCallDone
+ 0004:00000034       ORNet.RPCLastCall
+ 0001:00008C54       ORNet.sCallV
+ 0001:0000885C       ORNet.SetBrokerServer
+ 0001:00007BA0       ORNet.SetList
+ 0001:00007C58       ORNet.SetParams
+ 0001:00008D88       ORNet.SetRetainedRPCMax
+ 0001:00008CE0       ORNet.tCallV
+ 0003:0000053C       ORNet.uBaseContext
+ 0004:0000003C       ORNet.uCallList
+ 0003:00000540       ORNet.uCurrentContext
+ 0004:00000040       ORNet.uMaxCalls
+ 0001:00008180       ORNet.UpdateContext
+ 0004:00000044       ORNet.uShowRPCs
+ 0001:00000E0C       SysInit.@InitPkg
+ 0001:00000E70       SysInit.@PackageLoad
+ 0001:00000E7C       SysInit.@PackageUnload
+ 0001:00000CFC       SysInit.AllocTlsBuffer
+ 0001:00000DB8       SysInit.ExitProcessTLS
+ 0001:00000D80       SysInit.ExitThreadTLS
+ 0001:00000CC4       SysInit.FreeLibrary
+ 0001:00000D08       SysInit.GetTlsSize
+ 0004:0000000C       SysInit.HInstance
+ 0001:00000DDC       SysInit.InitializeModule
+ 0001:00000D54       SysInit.InitProcessTLS
+ 0001:00000D10       SysInit.InitThreadTLS
+ 0001:00000CCC       SysInit.LocalAlloc
+ 0001:00000CD4       SysInit.LocalFree
+ 0003:00000004       SysInit.Module
+ 0004:00000008       SysInit.ModuleIsLib
+ 0004:00000009       SysInit.ModuleIsPackage
+ 0001:00000CDC       SysInit.TlsAlloc
+ 0004:00000010       SysInit.tlsBuffer
+ 0001:00000CE4       SysInit.TlsFree
+ 0001:00000CEC       SysInit.TlsGetValue
+ 0003:00000000       SysInit.TlsIndex
+ 0005:00000000       SysInit.TlsLast
+ 0003:0000001C       SysInit.TlsProc
+ 0001:00000CF4       SysInit.TlsSetValue
+ 0001:00000DE8       SysInit.UninitializeModule
+ 0004:00000000       Windows..3
+ 0001:00000328       Windows.CreateFont
+ 0001:00000330       Windows.DeleteObject
+ 0001:00000360       Windows.DrawText
+ 0001:00000398       Windows.Finalization
+ 0001:00000320       Windows.FreeLibrary
+ 0001:00000368       Windows.GetDC
+ 0001:00000338       Windows.GetDeviceCaps
+ 0001:00000370       Windows.GetKeyState
+ 0001:00000378       Windows.GetSystemMetrics
+ 0001:00000340       Windows.GetTextExtentPoint32
+ 0001:00000348       Windows.GetTextFace
+ 0001:00000350       Windows.GetTextMetrics
+ 0004:00000004       Windows.HtmlHelpModule
+ 0001:00000380       Windows.InvalidateRect
+ 0001:00000388       Windows.ReleaseDC
+ 0001:00000358       Windows.SelectObject
+ 0001:00000390       Windows.SendMessage
+ 0002:00000010       Windows.Windows
+ 0001:000015B4       WinSock.gethostbyname
+ 0001:000015BC       WinSock.gethostname
+ 0001:000015AC       WinSock.inet_ntoa
+
+
+  Address             Publics by Value
+
+ 0001:00000320       Windows.FreeLibrary
+ 0001:00000328       Windows.CreateFont
+ 0001:00000330       Windows.DeleteObject
+ 0001:00000338       Windows.GetDeviceCaps
+ 0001:00000340       Windows.GetTextExtentPoint32
+ 0001:00000348       Windows.GetTextFace
+ 0001:00000350       Windows.GetTextMetrics
+ 0001:00000358       Windows.SelectObject
+ 0001:00000360       Windows.DrawText
+ 0001:00000368       Windows.GetDC
+ 0001:00000370       Windows.GetKeyState
+ 0001:00000378       Windows.GetSystemMetrics
+ 0001:00000380       Windows.InvalidateRect
+ 0001:00000388       Windows.ReleaseDC
+ 0001:00000390       Windows.SendMessage
+ 0001:00000398       Windows.Finalization
+ 0001:00000CC4       SysInit.FreeLibrary
+ 0001:00000CCC       SysInit.LocalAlloc
+ 0001:00000CD4       SysInit.LocalFree
+ 0001:00000CDC       SysInit.TlsAlloc
+ 0001:00000CE4       SysInit.TlsFree
+ 0001:00000CEC       SysInit.TlsGetValue
+ 0001:00000CF4       SysInit.TlsSetValue
+ 0001:00000CFC       SysInit.AllocTlsBuffer
+ 0001:00000D08       SysInit.GetTlsSize
+ 0001:00000D10       SysInit.InitThreadTLS
+ 0001:00000D54       SysInit.InitProcessTLS
+ 0001:00000D80       SysInit.ExitThreadTLS
+ 0001:00000DB8       SysInit.ExitProcessTLS
+ 0001:00000DDC       SysInit.InitializeModule
+ 0001:00000DE8       SysInit.UninitializeModule
+ 0001:00000E0C       SysInit.@InitPkg
+ 0001:00000E70       SysInit.@PackageLoad
+ 0001:00000E7C       SysInit.@PackageUnload
+ 0001:00000EE0       ORDtTmCal..TORCalendar
+ 0001:00001070       ORDtTmCal.TORCalendar.DrawCell
+ 0001:000011F8       ORDtTmCal.TORCalendar.KeyDown
+ 0001:0000126C       ORDtTmCal.Register
+ 0001:0000129C       ORDtTmCal.Finalization
+ 0001:0000130C       OR2006Compatibility..Tfrm2006Compatibility
+ 0001:000014B0       OR2006Compatibility.Tfrm2006Compatibility.CreateNew
+ 0001:00001504       OR2006Compatibility.Finalization
+ 0001:000015AC       WinSock.inet_ntoa
+ 0001:000015B4       WinSock.gethostbyname
+ 0001:000015BC       WinSock.gethostname
+ 0001:00001714       ORFn..EFMDateTimeError
+ 0001:00001774       ORFn.DateTimeToFMDateTime
+ 0001:00001850       ORFn.FMDateTimeToDateTime
+ 0001:00001AE0       ORFn.FMDateTimeOffsetBy
+ 0001:00001B18       ORFn.TrimFormatCount
+ 0001:00001B84       ORFn.FormatFMDateTime
+ 0001:00002184       ORFn.FormatFMDateTimeStr
+ 0001:000021CC       ORFn.IsFMDateTime
+ 0001:000022B4       ORFn.MakeFMDateTime
+ 0001:000022F4       ORFn.SetListFMDateTime
+ 0001:00002404       ORFn.HigherOf
+ 0001:0000242C       ORFn.LowerOf
+ 0001:00002454       ORFn.StrToFloatDef
+ 0001:00002490       ORFn.CharAt
+ 0001:000024D4       ORFn.ContainsAlpha
+ 0001:00002534       ORFn.ContainsVisibleChar
+ 0001:0000258C       ORFn.ConvertSpecialStrings
+ 0001:00002628       ORFn.UpdateCrc32
+ 0001:000026B0       ORFn.CRCForFile
+ 0001:00002760       ORFn.CRCForStrings
+ 0001:00002864       ORFn.FilteredString
+ 0001:00002A78       ORFn.ExpandTabsFilter
+ 0001:00002CC4       ORFn.ExtractInteger
+ 0001:00002DC0       ORFn.ExtractFloat
+ 0001:00002EC8       ORFn.ExtractDefault
+ 0001:00003070       ORFn.ExtractItems
+ 0001:0000320C       ORFn.ExtractText
+ 0001:000033A8       ORFn.InvertStringList
+ 0001:00003410       ORFn.MixedCase
+ 0001:00003594       ORFn.MixedCaseList
+ 0001:0000362C       ORFn.MixedCaseByPiece
+ 0001:000036F8       ORFn.Piece
+ 0001:0000379C       ORFn.Pieces
+ 0001:00003868       ORFn.ComparePieces
+ 0001:000039E8       ORFn.PiecesToList
+ 0001:00003A94       ORFn.ReverseStr
+ 0001:00003B24       ORFn.SetPiece
+ 0001:00003C60       ORFn.SetPieces
+ 0001:00003D34       ORFn.SortByPiece
+ 0001:00003EA0       ORFn.DelimCount
+ 0001:00003F70       ORFn..QuickCopyError
+ 0001:00003FCC       ORFn.GetStrings
+ 0001:00004330       ORFn.QuickCopy
+ 0001:000043E0       ORFn..QuickAddError
+ 0001:0000443C       ORFn.GetStrings
+ 0001:0000479C       ORFn.QuickAdd
+ 0001:0000486C       ORFn.FastAssign
+ 0001:000049A4       ORFn.FastAddStrings
+ 0001:00004A64       ORFn.ValidFileName
+ 0001:00004AE8       ORFn.LimitStringLength
+ 0001:00004CAC       ORFn.InfoBox
+ 0001:00004CF0       ORFn.LimitEditWidth
+ 0001:00004E68       ORFn.BaseFont
+ 0001:00004E7C       ORFn.MainFont
+ 0001:00004EB0       ORFn.MainFontSize
+ 0001:00004EC8       ORFn.FontWidthSubPixel
+ 0001:00004F40       ORFn.FontWidthPixel
+ 0001:00004F78       ORFn.MainFontWidth
+ 0001:00004F90       ORFn.MainFontHeight
+ 0001:00004FB4       ORFn.RedrawSuspend
+ 0001:00004FD0       ORFn.RedrawActivate
+ 0001:00004FF8       ORFn.ResetSelectedForList
+ 0001:00005044       ORFn.ResizeWidth
+ 0001:00005098       ORFn.ResizeHeight
+ 0001:00005118       ORFn.ResizeToFont
+ 0001:00005198       ORFn.ResizeHeaderControl
+ 0001:00005214       ORFn.ResizeListView
+ 0001:000052B0       ORFn.ResizeComboBox
+ 0001:000052E8       ORFn.ResizeListBox
+ 0001:0000531C       ORFn.ResizeCheckListBox
+ 0001:00005350       ORFn.ResizeDescendants
+ 0001:0000576C       ORFn.ResizeChartFonts
+ 0001:00005958       ORFn.ResizeFontsInDescendants
+ 0001:00005AE8       ORFn.ForceInsideWorkArea
+ 0001:00005C04       ORFn.AnchorsToStr
+ 0001:00005C78       ORFn.StrToAnchors
+ 0001:00005D40       ORFn.SuspendAlign
+ 0001:00005E28       ORFn.RestoreAlign
+ 0001:00005F14       ORFn.ResizeFormToFont
+ 0001:000060B4       ORFn.ResizeAnchoredFormToFont
+ 0001:00006238       ORFn.AdjustForWindowsXPStyleTitleBar
+ 0001:00006344       ORFn.SetEqualTabStops
+ 0001:00006450       ORFn.StatusText
+ 0001:000064A0       ORFn.ShowMsgOn
+ 0001:000064D0       ORFn.TextWidthByFont
+ 0001:00006580       ORFn.TextHeightByFont
+ 0001:00006640       ORFn.WrappedTextHeightByFont
+ 0001:000067C8       ORFn.NumCharsFitInWidth
+ 0001:0000691C       ORFn.PopupComponent
+ 0001:00006970       ORFn.ReformatMemoParagraph
+ 0001:00006BB4       ORFn.CheckColorScheme
+ 0001:00006CF0       ORFn.BlackColorScheme
+ 0001:00006D10       ORFn.NormalColorScheme
+ 0001:00006D30       ORFn.Get508CompliantColor
+ 0001:00006DC8       ORFn.BlackColorSchemeUpdate
+ 0001:00006F58       ORFn.ComponentUpdateColorsFor508Compliance
+ 0001:00006FF4       ORFn.ScanAllComponents
+ 0001:000070BC       ORFn.UpdateColorsFor508Compliance
+ 0001:000070EC       ORFn.UpdateReadOnlyColorScheme
+ 0001:00007148       ORFn.ListGridDrawCell
+ 0001:00007238       ORFn.ListGridDrawLines
+ 0001:00007380       ORFn.ListGridRowHeight
+ 0001:00007404       ORFn.KillObj
+ 0001:000074F8       ORFn..TIdleCaller
+ 0001:00007550       ORFn.TIdleCaller.Create
+ 0001:00007638       ORFn.TIdleCaller.Destroy
+ 0001:000076BC       ORFn.TIdleCaller.AppIdle
+ 0001:00007718       ORFn.TIdleCaller.Add
+ 0001:00007784       ORFn.TIdleCaller.TimerDone
+ 0001:00007854       ORFn.CallWhenIdle
+ 0001:000078C4       ORFn.CallWhenIdleNotifyWhenDone
+ 0001:00007938       ORFn.menuHideAllBut
+ 0001:000079F8       ORFn.TabIsPressed
+ 0001:00007A48       ORFn.ShiftTabIsPressed
+ 0001:00007A98       ORFn.EnterIsPressed
+ 0001:00007AB0       ORFn.Finalization
+ 0001:00007B34       ORNet.EnsureBroker
+ 0001:00007BA0       ORNet.SetList
+ 0001:00007C58       ORNet.SetParams
+ 0001:00008180       ORNet.UpdateContext
+ 0001:00008238       ORNet.IsBaseContext
+ 0001:00008260       ORNet.CallBrokerInContext
+ 0001:00008848       ORNet.CallBroker
+ 0001:0000885C       ORNet.SetBrokerServer
+ 0001:000088C4       ORNet.AuthorizedOption
+ 0001:0000890C       ORNet.ConnectToServer
+ 0001:00008BA8       ORNet.MRef
+ 0001:00008C04       ORNet.CallV
+ 0001:00008C54       ORNet.sCallV
+ 0001:00008CE0       ORNet.tCallV
+ 0001:00008D7C       ORNet.RetainedRPCCount
+ 0001:00008D88       ORNet.SetRetainedRPCMax
+ 0001:00008D94       ORNet.GetRPCMax
+ 0001:00008D9C       ORNet.LoadRPCData
+ 0001:00008DCC       ORNet.DottedIPStr
+ 0001:00008E40       ORNet.RPCIdleCallDone
+ 0001:00008E74       ORNet.CallRPCWhenIdle
+ 0001:00008EC4       ORNet.Finalization
+ 0001:00008F44       ORDtTm..TORfrmDtTm
+ 0001:0000934C       ORDtTm..TORDateTimeDlg
+ 0001:00009484       ORDtTm..TORDateEdit
+ 0001:000096D0       ORDtTm..TORDateBox
+ 0001:00009964       ORDtTm..TORDateCombo
+ 0001:00009D04       ORDtTm.ActiveBroker
+ 0001:00009D30       ORDtTm.ServerFMNow
+ 0001:00009DD4       ORDtTm.ServerNow
+ 0001:00009E0C       ORDtTm.ServerToday
+ 0001:00009E5C       ORDtTm.ServerParseFMDate
+ 0001:00009F04       ORDtTm.RelativeDateTime
+ 0001:0000A088       ORDtTm.LoadEllipsis
+ 0001:0000A130       ORDtTm.TORfrmDtTm.FormCreate
+ 0001:0000A170       ORDtTm.TORfrmDtTm.calSelectChange
+ 0001:0000A208       ORDtTm.TORfrmDtTm.imgPrevMonthMouseDown
+ 0001:0000A230       ORDtTm.TORfrmDtTm.imgNextMonthMouseDown
+ 0001:0000A258       ORDtTm.TORfrmDtTm.imgPrevMonthClick
+ 0001:0000A278       ORDtTm.TORfrmDtTm.imgNextMonthClick
+ 0001:0000A298       ORDtTm.TORfrmDtTm.imgPrevMonthMouseUp
+ 0001:0000A2C0       ORDtTm.TORfrmDtTm.imgNextMonthMouseUp
+ 0001:0000A2E8       ORDtTm.TORfrmDtTm.cmdTodayClick
+ 0001:0000A34C       ORDtTm.TORfrmDtTm.txtTimeChange
+ 0001:0000A39C       ORDtTm.TORfrmDtTm.lstHourClick
+ 0001:0000A450       ORDtTm.TORfrmDtTm.lstMinuteClick
+ 0001:0000A554       ORDtTm.TORfrmDtTm.cmdNowClick
+ 0001:0000A5F4       ORDtTm.TORfrmDtTm.cmdMidnightClick
+ 0001:0000A628       ORDtTm.TORfrmDtTm.cmdOKClick
+ 0001:0000A7F8       ORDtTm.TORfrmDtTm.cmdCancelClick
+ 0001:0000A818       ORDtTm.TORfrmDtTm.Loaded
+ 0001:0000A834       ORDtTm.TORDateTimeDlg.Create
+ 0001:0000A8A0       ORDtTm.TORDateTimeDlg.Execute
+ 0001:0000ABA8       ORDtTm.TORDateTimeDlg.GetFMDateTime
+ 0001:0000ABCC       ORDtTm.TORDateTimeDlg.SetDateOnly
+ 0001:0000AC10       ORDtTm.TORDateTimeDlg.SetFMDateTime
+ 0001:0000AC44       ORDtTm.TORDateTimeDlg.SetRequireTime
+ 0001:0000AC70       ORDtTm.TORDateEdit.CreateParams
+ 0001:0000ACA0       ORDtTm.TORDateBox.Create
+ 0001:0000ADC0       ORDtTm.TORDateBox.WMSize
+ 0001:0000AE60       ORDtTm.TORDateBox.SetTemplateField
+ 0001:0000AF30       ORDtTm.TORDateBox.SupportsDynamicProperty
+ 0001:0000AF4C       ORDtTm.TORDateBox.ButtonClick
+ 0001:0000B0C4       ORDtTm.TORDateBox.Change
+ 0001:0000B0E0       ORDtTm.TORDateBox.KeyDown
+ 0001:0000B128       ORDtTm.TORDateBox.GetFMDateTime
+ 0001:0000B1BC       ORDtTm.TORDateBox.GetRelativeTime
+ 0001:0000B2E0       ORDtTm.TORDateBox.SetDateOnly
+ 0001:0000B390       ORDtTm.TORDateBox.SetFMDateTime
+ 0001:0000B3BC       ORDtTm.TORDateBox.SetRequireTime
+ 0001:0000B448       ORDtTm.TORDateBox.SetEditRect
+ 0001:0000B4C0       ORDtTm.TORDateBox.UpdateText
+ 0001:0000B5D8       ORDtTm.TORDateBox.Validate
+ 0001:0000B74C       ORDtTm.TORDateBox.IsValid
+ 0001:0000B7D4       ORDtTm.TORDateBox.SetBlackColorMode
+ 0001:0000B81C       ORDtTm.TORDateBox.SetCaption
+ 0001:0000B8C4       ORDtTm.TORDateBox.GetCaption
+ 0001:0000B8E8       ORDtTm.TORDateBox.GetDynamicProperty
+ 0001:0000B918       ORDtTm.IsLeapYear
+ 0001:0000B964       ORDtTm.DaysPerMonth
+ 0001:0000B9C0       ORDtTm..TORDateComboEdit
+ 0001:0000BB58       ORDtTm.TORDateComboEdit.SetTemplateField
+ 0001:0000BBA0       ORDtTm.TORDateCombo.Create
+ 0001:0000BC40       ORDtTm.TORDateCombo.Destroy
+ 0001:0000BCBC       ORDtTm.TORDateCombo.GetYearSize
+ 0001:0000BD00       ORDtTm.TORDateCombo.InitDays
+ 0001:0000BEBC       ORDtTm.TORDateCombo.InitMonths
+ 0001:0000C024       ORDtTm.TORDateCombo.Rebuild
+ 0001:0000C730       ORDtTm.TORDateCombo.SetBlackColorMode
+ 0001:0000C784       ORDtTm.TORDateCombo.SetDay
+ 0001:0000C840       ORDtTm.TORDateCombo.SetIncludeBtn
+ 0001:0000C878       ORDtTm.TORDateCombo.SetIncludeDay
+ 0001:0000C8D4       ORDtTm.TORDateCombo.SetIncludeMonth
+ 0001:0000C930       ORDtTm.TORDateCombo.SetMonth
+ 0001:0000C9B8       ORDtTm.TORDateCombo.SetLongMonths
+ 0001:0000C9F0       ORDtTm.TORDateCombo.SetYear
+ 0001:0000CB9C       ORDtTm.TORDateCombo.DayChanged
+ 0001:0000CBEC       ORDtTm.TORDateCombo.MonthChanged
+ 0001:0000CC44       ORDtTm.TORDateCombo.YearChanged
+ 0001:0000CD90       ORDtTm.TORDateCombo.CheckDays
+ 0001:0000CE74       ORDtTm.TORDateCombo.Loaded
+ 0001:0000CEA0       ORDtTm.TORDateCombo.Paint
+ 0001:0000CECC       ORDtTm.TORDateCombo.BtnClicked
+ 0001:0000D088       ORDtTm.TORDateCombo.YearUDChange
+ 0001:0000D234       ORDtTm.TORDateCombo.YearKeyPress
+ 0001:0000D324       ORDtTm.TORDateCombo.GetFMDate
+ 0001:0000D3A4       ORDtTm.TORDateCombo.SetFMDate
+ 0001:0000D4B0       ORDtTm.TORDateCombo.DateText
+ 0001:0000D5FC       ORDtTm.TORDateCombo.DoChange
+ 0001:0000D628       ORDtTm.TORDateCombo.Resized
+ 0001:0000D644       ORDtTm.TORDateCombo.CMFontChanged
+ 0001:0000D66C       ORDtTm.TORDateCombo.Text
+ 0001:0000D828       ORDtTm.Register
+ 0001:0000D86C       ORDtTm.TORDateCombo.SetTemplateField
+ 0001:0000D8A4       ORDtTm.Finalization
+ 0001:0000D8D4       ORDtTmRng..TORfrmDateRange
+ 0001:0000DB08       ORDtTmRng..TORDateRangeDlg
+ 0001:0000DD7C       ORDtTmRng.TORDateRangeDlg.Create
+ 0001:0000DE4C       ORDtTmRng.TORDateRangeDlg.Execute
+ 0001:0000E0CC       ORDtTmRng.TORDateRangeDlg.SetDateOnly
+ 0001:0000E164       ORDtTmRng.TORDateRangeDlg.SetRequireTime
+ 0001:0000E1C8       ORDtTmRng.TORDateRangeDlg.SetFMDateStart
+ 0001:0000E22C       ORDtTmRng.TORDateRangeDlg.SetFMDateStop
+ 0001:0000E290       ORDtTmRng.TORDateRangeDlg.SetTextOfStart
+ 0001:0000E2B0       ORDtTmRng.TORDateRangeDlg.SetTextOfStop
+ 0001:0000E2D0       ORDtTmRng.TORfrmDateRange.cmdOKClick
+ 0001:0000E39C       ORDtTmRng.TORfrmDateRange.cmdCancelClick
+ 0001:0000E3A8       ORDtTmRng.Register
+ 0001:0000E3D8       ORDtTmRng.TORfrmDateRange.FormCreate
+ 0001:0000E488       ORDtTmRng.TORfrmDateRange.FormDestroy
+ 0001:0000E4A8       ORDtTmRng.TORfrmDateRange.Loaded
+ 0001:0000E4C4       ORDtTmRng.Finalization
+ 0001:0000E87C       .ORDateLib2006.@GetPackageInfoTable
+ 0001:0000E884       .ORDateLib2006.@PackageLoad
+ 0001:0000E890       .ORDateLib2006.@PackageUnload
+ 0002:00000010       Windows.Windows
+ 0002:0000010C       ORDtTmCal.ORDtTmCal
+ 0002:0000011C       OR2006Compatibility.OR2006Compatibility
+ 0002:0000019C       ORFn.ORFn
+ 0002:0000022C       ORNet.ORNet
+ 0002:000002B0       ORDtTm.ORDtTm
+ 0002:000002CC       ORDtTmRng.ORDtTmRng
+ 0002:000002D4       .ORDateLib2006..ORDateLib2006
+ 0003:00000000       SysInit.TlsIndex
+ 0003:00000004       SysInit.Module
+ 0003:0000001C       SysInit.TlsProc
+ 0003:0000002C       ORFn.BOOLCHAR
+ 0003:00000030       ORFn.ScrollBarHeight
+ 0003:00000034       ORFn.MONTH_NAMES_SHORT
+ 0003:00000064       ORFn.MONTH_NAMES_LONG
+ 0003:000000DC       ORFn.SearchChars
+ 0003:000000FC       ORFn.ReplaceChars
+ 0003:0000011C       ORFn.CRC32_TABLE
+ 0003:0000051C       ORFn.uNormalColorScheme
+ 0003:00000520       ORFn.uBlackColorScheme
+ 0003:00000524       ORFn.uWhiteColorScheme
+ 0003:00000528       ORFn.uMaroonColorWhenBlack
+ 0003:0000052C       ORFn.uCheckColorScheme
+ 0003:00000530       ORFn.PURE_BLACK
+ 0003:00000534       ORFn.uBorderlessWindowColorWhenBlack
+ 0003:00000538       ORFn.IdleCaller
+ 0003:0000053C       ORNet.uBaseContext
+ 0003:00000540       ORNet.uCurrentContext
+ 0003:00000544       ORNet.BoolChar
+ 0003:00000548       ORDtTm.DaysInMonth
+ 0004:00000000       Windows..3
+ 0004:00000004       Windows.HtmlHelpModule
+ 0004:00000008       SysInit.ModuleIsLib
+ 0004:00000009       SysInit.ModuleIsPackage
+ 0004:0000000C       SysInit.HInstance
+ 0004:00000010       SysInit.tlsBuffer
+ 0004:00000014       ORDtTmCal..2
+ 0004:00000018       OR2006Compatibility.frm2006Compatibility
+ 0004:0000001C       OR2006Compatibility..2
+ 0004:00000020       ORFn..1
+ 0004:00000024       ORFn.FBaseFont
+ 0004:00000028       ORFn.AlignList
+ 0004:0000002C       ORFn.AnchorList
+ 0004:00000030       ORNet.RPCBrokerV
+ 0004:00000034       ORNet.RPCLastCall
+ 0004:00000038       ORNet..1
+ 0004:0000003C       ORNet.uCallList
+ 0004:00000040       ORNet.uMaxCalls
+ 0004:00000044       ORNet.uShowRPCs
+ 0004:00000048       ORDtTm..6
+ 0004:0000004C       ORDtTm.uServerToday
+ 0004:00000054       ORDtTmRng..3
+ 0005:00000000       SysInit.TlsLast
+
+
+Bound resource files
+
+OR2006Compatibility.dfm
+ORDtTm.DFM
+ORDtTm.RES
+ORDtTmRng.DFM
+ORDateLib2006.res
+ORDtTm.dcr
+ORDtTmRng.dcr
+ORDateLib2006.drf
+
+
+Program entry point at 0002:000002D4
Index: cprs/branches/HealthSevak-CPRS/Packages/ORDateLib60.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/ORDateLib60.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/ORDateLib60.map	(revision 1676)
@@ -0,0 +1,1314 @@
+
+ Start         Length     Name                   Class
+ 0001:00000000 0000D5D8H .text                   CODE
+ 0002:00000000 0000056CH .data                   DATA
+ 0002:0000056C 00000089H .bss                    BSS
+
+
+Detailed map of segments
+
+ 0001:00000000 00000206 C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:00000208 000001EC C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:000003F4 0000000E C=CODE     S=.text    G=(none)   M=Types    ACBP=A9
+ 0001:00000404 00000098 C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:0000049C 00000038 C=CODE     S=.text    G=(none)   M=Messages ACBP=A9
+ 0001:000004D4 0000000E C=CODE     S=.text    G=(none)   M=ActiveX  ACBP=A9
+ 0001:000004E4 0000000E C=CODE     S=.text    G=(none)   M=SysConst ACBP=A9
+ 0001:000004F4 0000010E C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:00000604 0000000E C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:00000614 0000000E C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000624 0000000E C=CODE     S=.text    G=(none)   M=RTLConsts ACBP=A9
+ 0001:00000634 0000000E C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:00000644 000000B6 C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:000006FC 0000000E C=CODE     S=.text    G=(none)   M=Consts   ACBP=A9
+ 0001:0000070C 000000A6 C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:000007B4 0000000E C=CODE     S=.text    G=(none)   M=StdVCL   ACBP=A9
+ 0001:000007C4 0000000E C=CODE     S=.text    G=(none)   M=ComConst ACBP=A9
+ 0001:000007D4 0000000E C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:000007E4 0000000E C=CODE     S=.text    G=(none)   M=Math     ACBP=A9
+ 0001:000007F4 0000000E C=CODE     S=.text    G=(none)   M=Contnrs  ACBP=A9
+ 0001:00000804 00000038 C=CODE     S=.text    G=(none)   M=CommCtrl ACBP=A9
+ 0001:0000083C 0000000E C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:0000084C 0000000E C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:0000085C 00000038 C=CODE     S=.text    G=(none)   M=Imm      ACBP=A9
+ 0001:00000894 0000000E C=CODE     S=.text    G=(none)   M=WinHelpViewer ACBP=A9
+ 0001:000008A4 00000038 C=CODE     S=.text    G=(none)   M=UrlMon   ACBP=A9
+ 0001:000008DC 00000038 C=CODE     S=.text    G=(none)   M=WinInet  ACBP=A9
+ 0001:00000914 00000038 C=CODE     S=.text    G=(none)   M=RegStr   ACBP=A9
+ 0001:0000094C 00000038 C=CODE     S=.text    G=(none)   M=ShellAPI ACBP=A9
+ 0001:00000984 00000038 C=CODE     S=.text    G=(none)   M=ShlObj   ACBP=A9
+ 0001:000009BC 00000038 C=CODE     S=.text    G=(none)   M=WinSpool ACBP=A9
+ 0001:000009F4 0000000E C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00000A04 000000D6 C=CODE     S=.text    G=(none)   M=StdCtrls ACBP=A9
+ 0001:00000ADC 00000038 C=CODE     S=.text    G=(none)   M=CommDlg  ACBP=A9
+ 0001:00000B14 00000038 C=CODE     S=.text    G=(none)   M=Dlgs     ACBP=A9
+ 0001:00000B4C 0000005E C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:00000BAC 0000000E C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:00000BBC 0000000E C=CODE     S=.text    G=(none)   M=StrUtils ACBP=A9
+ 0001:00000BCC 0000000E C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:00000BDC 0000000E C=CODE     S=.text    G=(none)   M=StdActns ACBP=A9
+ 0001:00000BEC 0000000E C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:00000BFC 00000026 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:00000C24 00000166 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00000D8C 0000000E C=CODE     S=.text    G=(none)   M=ImgList  ACBP=A9
+ 0001:00000D9C 0000000E C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:00000DAC 0000027E C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:0000102C 0000000E C=CODE     S=.text    G=(none)   M=ToolWin  ACBP=A9
+ 0001:0000103C 00000038 C=CODE     S=.text    G=(none)   M=RichEdit ACBP=A9
+ 0001:00001074 0000000E C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:00001084 0000000E C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:00001094 0000002E C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:000010C4 0000000E C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:000010D4 0000000E C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:000010E4 0000000E C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:000010F4 0000000E C=CODE     S=.text    G=(none)   M=ComStrs  ACBP=A9
+ 0001:00001104 0000000E C=CODE     S=.text    G=(none)   M=ListActns ACBP=A9
+ 0001:00001114 0000008E C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:000011A4 00000066 C=CODE     S=.text    G=(none)   M=Grids    ACBP=A9
+ 0001:0000120C 0000005E C=CODE     S=.text    G=(none)   M=Mask     ACBP=A9
+ 0001:0000126C 0000000E C=CODE     S=.text    G=(none)   M=MaskUtils ACBP=A9
+ 0001:0000127C 0000000E C=CODE     S=.text    G=(none)   M=CheckLst ACBP=A9
+ 0001:0000128C 00000066 C=CODE     S=.text    G=(none)   M=Calendar ACBP=A9
+ 0001:000012F4 000003DC C=CODE     S=.text    G=(none)   M=ORDtTmCal ACBP=A9
+ 0001:000016D0 00000046 C=CODE     S=.text    G=(none)   M=ORCtrls  ACBP=A9
+ 0001:00001718 0000000E C=CODE     S=.text    G=(none)   M=Accessibility_TLB ACBP=A9
+ 0001:00001728 0000000E C=CODE     S=.text    G=(none)   M=uAccessAPI ACBP=A9
+ 0001:00001738 0000000E C=CODE     S=.text    G=(none)   M=Chart    ACBP=A9
+ 0001:00001748 0000000E C=CODE     S=.text    G=(none)   M=TeCanvas ACBP=A9
+ 0001:00001758 0000000E C=CODE     S=.text    G=(none)   M=TeeFunci ACBP=A9
+ 0001:00001768 0000001E C=CODE     S=.text    G=(none)   M=TeEngine ACBP=A9
+ 0001:00001788 0000000E C=CODE     S=.text    G=(none)   M=TeeProcs ACBP=A9
+ 0001:00001798 0000000E C=CODE     S=.text    G=(none)   M=TeeConst ACBP=A9
+ 0001:000017A8 000052A8 C=CODE     S=.text    G=(none)   M=ORFn     ACBP=A9
+ 0001:00006A50 0000004E C=CODE     S=.text    G=(none)   M=Trpcb    ACBP=A9
+ 0001:00006AA0 0000000E C=CODE     S=.text    G=(none)   M=Xwbut1   ACBP=A9
+ 0001:00006AB0 0000000E C=CODE     S=.text    G=(none)   M=MFunStr  ACBP=A9
+ 0001:00006AC0 0000000E C=CODE     S=.text    G=(none)   M=Hash     ACBP=A9
+ 0001:00006AD0 0000000E C=CODE     S=.text    G=(none)   M=Loginfrm ACBP=A9
+ 0001:00006AE0 0000000E C=CODE     S=.text    G=(none)   M=XWBRich20 ACBP=A9
+ 0001:00006AF0 0000000E C=CODE     S=.text    G=(none)   M=frmSignonMessage ACBP=A9
+ 0001:00006B00 0000000E C=CODE     S=.text    G=(none)   M=Sgnoncnf ACBP=A9
+ 0001:00006B10 0000000E C=CODE     S=.text    G=(none)   M=fSgnonDlg ACBP=A9
+ 0001:00006B20 00000016 C=CODE     S=.text    G=(none)   M=Rpcconf1 ACBP=A9
+ 0001:00006B38 0000000E C=CODE     S=.text    G=(none)   M=RpcNet   ACBP=A9
+ 0001:00006B48 00000050 C=CODE     S=.text    G=(none)   M=WinSock  ACBP=A9
+ 0001:00006B98 0000000E C=CODE     S=.text    G=(none)   M=AddServer ACBP=A9
+ 0001:00006BA8 0000000E C=CODE     S=.text    G=(none)   M=fRPCBErrMsg ACBP=A9
+ 0001:00006BB8 0000000E C=CODE     S=.text    G=(none)   M=VCEdit   ACBP=A9
+ 0001:00006BC8 0000000E C=CODE     S=.text    G=(none)   M=RpcSLogin ACBP=A9
+ 0001:00006BD8 0000000E C=CODE     S=.text    G=(none)   M=CCOWRPCBroker ACBP=A9
+ 0001:00006BE8 0000000E C=CODE     S=.text    G=(none)   M=AxCtrls  ACBP=A9
+ 0001:00006BF8 0000000E C=CODE     S=.text    G=(none)   M=OleConst ACBP=A9
+ 0001:00006C08 0000000E C=CODE     S=.text    G=(none)   M=OleCtrls ACBP=A9
+ 0001:00006C18 0000000E C=CODE     S=.text    G=(none)   M=VERGENCECONTEXTORLib_TLB ACBP=A9
+ 0001:00006C28 0000000E C=CODE     S=.text    G=(none)   M=OleServer ACBP=A9
+ 0001:00006C38 0000000E C=CODE     S=.text    G=(none)   M=Rpcberr  ACBP=A9
+ 0001:00006C48 0000000E C=CODE     S=.text    G=(none)   M=Wsockc   ACBP=A9
+ 0001:00006C58 0000000E C=CODE     S=.text    G=(none)   M=fDebugInfo ACBP=A9
+ 0001:00006C68 0000000E C=CODE     S=.text    G=(none)   M=SelDiv   ACBP=A9
+ 0001:00006C78 0000000E C=CODE     S=.text    G=(none)   M=CCOW_const ACBP=A9
+ 0001:00006C88 00001484 C=CODE     S=.text    G=(none)   M=ORNet    ACBP=A9
+ 0001:0000810C 00004584 C=CODE     S=.text    G=(none)   M=ORDtTm   ACBP=A9
+ 0001:0000C690 00000BD8 C=CODE     S=.text    G=(none)   M=ORDtTmRng ACBP=A9
+ 0001:0000D268 0000036D C=CODE     S=.text    G=(none)   M=ORDateLib60 ACBP=A9
+ 0002:00000000 00000028 C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0002:00000028 000004F4 C=DATA     S=.data    G=DGROUP   M=ORFn     ACBP=A9
+ 0002:0000051C 0000000A C=DATA     S=.data    G=DGROUP   M=ORNet    ACBP=A9
+ 0002:00000528 00000030 C=DATA     S=.data    G=DGROUP   M=ORDtTm   ACBP=A9
+ 0002:00001000 00000018 C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0002:00001018 00000004 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0002:0000101C 00000004 C=BSS      S=.bss     G=DGROUP   M=Messages ACBP=A9
+ 0002:00001020 00000004 C=BSS      S=.bss     G=DGROUP   M=CommCtrl ACBP=A9
+ 0002:00001024 00000004 C=BSS      S=.bss     G=DGROUP   M=Imm      ACBP=A9
+ 0002:00001028 00000004 C=BSS      S=.bss     G=DGROUP   M=UrlMon   ACBP=A9
+ 0002:0000102C 00000004 C=BSS      S=.bss     G=DGROUP   M=WinInet  ACBP=A9
+ 0002:00001030 00000004 C=BSS      S=.bss     G=DGROUP   M=RegStr   ACBP=A9
+ 0002:00001034 00000004 C=BSS      S=.bss     G=DGROUP   M=ShellAPI ACBP=A9
+ 0002:00001038 00000004 C=BSS      S=.bss     G=DGROUP   M=ShlObj   ACBP=A9
+ 0002:0000103C 00000004 C=BSS      S=.bss     G=DGROUP   M=WinSpool ACBP=A9
+ 0002:00001040 00000004 C=BSS      S=.bss     G=DGROUP   M=CommDlg  ACBP=A9
+ 0002:00001044 00000004 C=BSS      S=.bss     G=DGROUP   M=Dlgs     ACBP=A9
+ 0002:00001048 00000004 C=BSS      S=.bss     G=DGROUP   M=RichEdit ACBP=A9
+ 0002:0000104C 00000004 C=BSS      S=.bss     G=DGROUP   M=ORDtTmCal ACBP=A9
+ 0002:00001050 0000000C C=BSS      S=.bss     G=DGROUP   M=ORFn     ACBP=A9
+ 0002:0000105C 00000004 C=BSS      S=.bss     G=DGROUP   M=WinSock  ACBP=A9
+ 0002:00001060 00000015 C=BSS      S=.bss     G=DGROUP   M=ORNet    ACBP=A9
+ 0002:00001078 0000000C C=BSS      S=.bss     G=DGROUP   M=ORDtTm   ACBP=A9
+ 0002:00001084 00000004 C=BSS      S=.bss     G=DGROUP   M=ORDtTmRng ACBP=A9
+
+
+  Address         Publics by Name
+
+ 0002:0000105C       .1
+ 0002:00001068       .1
+ 0002:0000101C       .1
+ 0002:00001024       .1
+ 0002:00001050       .1
+ 0002:00001010       .1
+ 0002:00001028       .1
+ 0002:0000102C       .1
+ 0002:00001030       .1
+ 0002:00001034       .1
+ 0002:00001038       .1
+ 0002:00001020       .1
+ 0002:00001040       .1
+ 0002:00001044       .1
+ 0002:00001048       .1
+ 0002:0000104C       .2
+ 0002:0000103C       .3
+ 0002:00001084       .3
+ 0002:00001018       .3
+ 0002:00001078       .6
+ 0001:0000D5B0       @GetPackageInfoTable
+ 0001:00000340       @InitPkg
+ 0001:000003A4       @PackageLoad
+ 0001:0000D5B8       @PackageLoad
+ 0001:000003B0       @PackageUnload
+ 0001:0000D5C4       @PackageUnload
+ 0001:00008D38       ActiveBroker
+ 0001:00000240       AllocTlsBuffer
+ 0001:00007A14       AuthorizedOption
+ 0001:00004904       BaseFont
+ 0002:00000028       BOOLCHAR
+ 0002:00000524       BoolChar
+ 0001:00007998       CallBroker
+ 0001:000073B0       CallBrokerInContext
+ 0001:00007FB8       CallRPCWhenIdle
+ 0001:00007D44       CallV
+ 0001:000067D8       CallWhenIdle
+ 0001:00006848       CallWhenIdleNotifyWhenDone
+ 0001:00002610       CharAt
+ 0001:00000834       CommCtrl
+ 0001:00000B0C       CommDlg
+ 0001:000039E8       ComparePieces
+ 0001:00007A5C       ConnectToServer
+ 0001:00002654       ContainsAlpha
+ 0001:000026B4       ContainsVisibleChar
+ 0001:0000270C       ConvertSpecialStrings
+ 0002:00000114       CRC32_TABLE
+ 0001:00002830       CRCForFile
+ 0001:000028E0       CRCForStrings
+ 0001:00000404       CreateFont
+ 0001:00001900       DateTimeToFMDateTime
+ 0002:00000528       DaysInMonth
+ 0001:0000A784       DaysPerMonth
+ 0001:0000040C       DeleteObject
+ 0001:00004020       DelimCount
+ 0001:00000B44       Dlgs
+ 0001:00007F10       DottedIPStr
+ 0001:0000043C       DrawText
+ 0001:00006C88       EnsureBroker
+ 0001:000002EC       ExitProcessTLS
+ 0001:000002C4       ExitThreadTLS
+ 0001:00002BF8       ExpandTabsFilter
+ 0001:00003048       ExtractDefault
+ 0001:00002F40       ExtractFloat
+ 0001:00002E44       ExtractInteger
+ 0001:000031F0       ExtractItems
+ 0001:0000338C       ExtractText
+ 0002:00001054       FBaseFont
+ 0001:000029E4       FilteredString
+ 0001:000009BC       Finalization
+ 0001:00000984       Finalization
+ 0001:0000094C       Finalization
+ 0001:00000ADC       Finalization
+ 0001:00000914       Finalization
+ 0001:00000B14       Finalization
+ 0001:000008DC       Finalization
+ 0001:000008A4       Finalization
+ 0001:0000103C       Finalization
+ 0001:00006988       Finalization
+ 0001:00008008       Finalization
+ 0001:0000C644       Finalization
+ 0001:0000049C       Finalization
+ 0001:0000D230       Finalization
+ 0001:00001698       Finalization
+ 0001:0000085C       Finalization
+ 0001:00000464       Finalization
+ 0001:00006B60       Finalization
+ 0001:00000804       Finalization
+ 0001:000003BC       Finalization
+ 0001:00001C60       FMDateTimeOffsetBy
+ 0001:000019D0       FMDateTimeToDateTime
+ 0001:000049DC       FontWidthPixel
+ 0001:00004964       FontWidthSubPixel
+ 0001:00005588       ForceInsideWorkArea
+ 0001:00001D04       FormatFMDateTime
+ 0001:00002304       FormatFMDateTimeStr
+ 0001:00000208       FreeLibrary
+ 0001:00000444       GetDC
+ 0001:00000414       GetDeviceCaps
+ 0001:00006B50       gethostbyname
+ 0001:00006B58       gethostname
+ 0001:00007ED4       GetRPCMax
+ 0001:0000414C       GetStrings
+ 0001:0000041C       GetTextExtentPoint32
+ 0001:00000424       GetTextFace
+ 0001:0000042C       GetTextMetrics
+ 0001:0000024C       GetTlsSize
+ 0001:00002584       HigherOf
+ 0002:0000100C       HInstance
+ 0002:00000518       IdleCaller
+ 0001:0000088C       Imm
+ 0001:00006B48       inet_ntoa
+ 0001:00004748       InfoBox
+ 0001:00000310       InitializeModule
+ 0001:00000298       InitProcessTLS
+ 0001:00000254       InitThreadTLS
+ 0001:0000044C       InvalidateRect
+ 0001:00003528       InvertStringList
+ 0001:00007388       IsBaseContext
+ 0001:0000234C       IsFMDateTime
+ 0001:0000A738       IsLeapYear
+ 0001:00006388       KillObj
+ 0001:0000478C       LimitEditWidth
+ 0001:00004578       LimitStringLength
+ 0001:000060D4       ListGridDrawCell
+ 0001:000061C4       ListGridDrawLines
+ 0001:00006304       ListGridRowHeight
+ 0001:00007EDC       LoadRPCData
+ 0001:00000210       LocalAlloc
+ 0001:00000218       LocalFree
+ 0001:000025AC       LowerOf
+ 0001:00004918       MainFont
+ 0001:00004A2C       MainFontHeight
+ 0001:0000494C       MainFontSize
+ 0001:00004A14       MainFontWidth
+ 0001:00002434       MakeFMDateTime
+ 0001:000068BC       menuHideAllBut
+ 0001:000004CC       Messages
+ 0001:00003590       MixedCase
+ 0001:000037AC       MixedCaseByPiece
+ 0001:00003714       MixedCaseList
+ 0002:00000000       Module
+ 0002:00001000       ModuleIsLib
+ 0002:00001001       ModuleIsPackage
+ 0002:0000005C       MONTH_NAMES_LONG
+ 0002:0000002C       MONTH_NAMES_SHORT
+ 0001:00007CE8       MRef
+ 0001:00005C94       NumCharsFitInWidth
+ 0001:0000D5D0       ORDateLib60
+ 0001:0000C674       ORDtTm
+ 0001:000016C8       ORDtTmCal
+ 0001:0000D260       ORDtTmRng
+ 0001:000069F8       ORFn
+ 0001:00008088       ORNet
+ 0001:00003878       Piece
+ 0001:0000391C       Pieces
+ 0001:00003B68       PiecesToList
+ 0001:00005DE8       PopupComponent
+ 0001:00004444       QuickCopy
+ 0001:00006080       ReadOnlyColor
+ 0001:00004A6C       RedrawActivate
+ 0001:00004A50       RedrawSuspend
+ 0001:00005E3C       ReformatMemoParagraph
+ 0001:0000D13C       Register
+ 0001:00001668       Register
+ 0001:0000C5CC       Register
+ 0001:00000944       RegStr
+ 0001:00008F30       RelativeDateTime
+ 0001:00000454       ReleaseDC
+ 0002:000000F4       ReplaceChars
+ 0001:00004A94       ResetSelectedForList
+ 0001:000057A4       ResizeAnchoredFormToFont
+ 0001:0000520C       ResizeChartFonts
+ 0001:00004DB8       ResizeCheckListBox
+ 0001:00004D4C       ResizeComboBox
+ 0001:00004DEC       ResizeDescendants
+ 0001:000053F8       ResizeFontsInDescendants
+ 0001:000056A4       ResizeFormToFont
+ 0001:00004C34       ResizeHeaderControl
+ 0001:00004B34       ResizeHeight
+ 0001:00004D84       ResizeListBox
+ 0001:00004CB0       ResizeListView
+ 0001:00004BB4       ResizeToFont
+ 0001:00004AE0       ResizeWidth
+ 0001:00007EBC       RetainedRPCCount
+ 0001:00003C14       ReverseStr
+ 0001:0000106C       RichEdit
+ 0002:00001060       RPCBrokerV
+ 0001:00007F84       RPCIdleCallDone
+ 0002:00001064       RPCLastCall
+ 0001:00007D94       sCallV
+ 0002:000000D4       SearchChars
+ 0001:00000434       SelectObject
+ 0001:0000045C       SendMessage
+ 0001:00008D64       ServerFMNow
+ 0001:00008E08       ServerNow
+ 0001:00008E88       ServerParseFMDate
+ 0001:00008E40       ServerToday
+ 0001:000079AC       SetBrokerServer
+ 0001:000058B8       SetEqualTabStops
+ 0001:00006CF4       SetList
+ 0001:00002474       SetListFMDateTime
+ 0001:00006DAC       SetParams
+ 0001:00003CA4       SetPiece
+ 0001:00003DE0       SetPieces
+ 0001:00007EC8       SetRetainedRPCMax
+ 0001:0000097C       ShellAPI
+ 0001:000009B4       ShlObj
+ 0001:00005A14       ShowMsgOn
+ 0001:00003EB4       SortByPiece
+ 0001:000059C4       StatusText
+ 0001:000025D4       StrToFloatDef
+ 0001:000003EC       SysInit
+ 0001:00007E20       tCallV
+ 0001:00005AB0       TextHeightByFont
+ 0001:00005A44       TextWidthByFont
+ 0001:0000669C       TIdleCaller.Add
+ 0001:00006640       TIdleCaller.AppIdle
+ 0001:000064D4       TIdleCaller.Create
+ 0001:000065BC       TIdleCaller.Destroy
+ 0001:00006708       TIdleCaller.TimerDone
+ 0001:00000220       TlsAlloc
+ 0002:00001014       tlsBuffer
+ 0001:00000228       TlsFree
+ 0001:00000230       TlsGetValue
+ 0002:00001004       TlsIndex
+ 0002:FFBF1000       TlsLast
+ 0002:00000018       TlsProc
+ 0001:00000238       TlsSetValue
+ 0001:00001470       TORCalendar.DrawCell
+ 0001:000015F4       TORCalendar.KeyDown
+ 0001:00009E00       TORDateBox.ButtonClick
+ 0001:00009F78       TORDateBox.Change
+ 0001:00009B58       TORDateBox.Create
+ 0001:0000A714       TORDateBox.GetCaption
+ 0001:00009FDC       TORDateBox.GetFMDateTime
+ 0001:0000A070       TORDateBox.GetRelativeTime
+ 0001:0000A5E4       TORDateBox.IsValid
+ 0001:00009F94       TORDateBox.KeyDown
+ 0001:0000A66C       TORDateBox.SetCaption
+ 0001:0000A194       TORDateBox.SetDateOnly
+ 0001:0000A2F8       TORDateBox.SetEditRect
+ 0001:0000A240       TORDateBox.SetFMDateTime
+ 0001:0000A26C       TORDateBox.SetRequireTime
+ 0001:00009D30       TORDateBox.SetTemplateField
+ 0001:0000A370       TORDateBox.UpdateText
+ 0001:0000A480       TORDateBox.Validate
+ 0001:00009C90       TORDateBox.WMSize
+ 0001:0000BC78       TORDateCombo.BtnClicked
+ 0001:0000BB44       TORDateCombo.CheckDays
+ 0001:0000C3EC       TORDateCombo.CMFontChanged
+ 0001:0000A9AC       TORDateCombo.Create
+ 0001:0000C25C       TORDateCombo.DateText
+ 0001:0000B950       TORDateCombo.DayChanged
+ 0001:0000AA4C       TORDateCombo.Destroy
+ 0001:0000C3A8       TORDateCombo.DoChange
+ 0001:0000C0D0       TORDateCombo.GetFMDate
+ 0001:0000AAC8       TORDateCombo.GetYearSize
+ 0001:0000AB0C       TORDateCombo.InitDays
+ 0001:0000ACC8       TORDateCombo.InitMonths
+ 0001:0000BC28       TORDateCombo.Loaded
+ 0001:0000B9A0       TORDateCombo.MonthChanged
+ 0001:0000BC50       TORDateCombo.Paint
+ 0001:0000AE30       TORDateCombo.Rebuild
+ 0001:0000C3D4       TORDateCombo.Resized
+ 0001:0000B544       TORDateCombo.SetDay
+ 0001:0000C150       TORDateCombo.SetFMDate
+ 0001:0000B600       TORDateCombo.SetIncludeBtn
+ 0001:0000B634       TORDateCombo.SetIncludeDay
+ 0001:0000B690       TORDateCombo.SetIncludeMonth
+ 0001:0000B770       TORDateCombo.SetLongMonths
+ 0001:0000B6E8       TORDateCombo.SetMonth
+ 0001:0000C610       TORDateCombo.SetTemplateField
+ 0001:0000B7A4       TORDateCombo.SetYear
+ 0001:0000C410       TORDateCombo.Text
+ 0001:0000B9F8       TORDateCombo.YearChanged
+ 0001:0000BFE0       TORDateCombo.YearKeyPress
+ 0001:0000BE34       TORDateCombo.YearUDChange
+ 0001:0000A964       TORDateComboEdit.SetTemplateField
+ 0001:00009B28       TORDateEdit.CreateParams
+ 0001:0000CB24       TORDateRangeDlg.Create
+ 0001:0000CBF4       TORDateRangeDlg.Execute
+ 0001:0000CE6C       TORDateRangeDlg.SetDateOnly
+ 0001:0000CF5C       TORDateRangeDlg.SetFMDateStart
+ 0001:0000CFC0       TORDateRangeDlg.SetFMDateStop
+ 0001:0000CEF8       TORDateRangeDlg.SetRequireTime
+ 0001:0000D024       TORDateRangeDlg.SetTextOfStart
+ 0001:0000D044       TORDateRangeDlg.SetTextOfStop
+ 0001:0000970C       TORDateTimeDlg.Create
+ 0001:00009778       TORDateTimeDlg.Execute
+ 0001:00009A6C       TORDateTimeDlg.GetFMDateTime
+ 0001:00009A90       TORDateTimeDlg.SetDateOnly
+ 0001:00009ACC       TORDateTimeDlg.SetFMDateTime
+ 0001:00009AFC       TORDateTimeDlg.SetRequireTime
+ 0001:0000D130       TORfrmDateRange.cmdCancelClick
+ 0001:0000D064       TORfrmDateRange.cmdOKClick
+ 0001:0000D16C       TORfrmDateRange.FormCreate
+ 0001:0000D210       TORfrmDateRange.FormDestroy
+ 0001:000090E4       TORfrmDtTm.calSelectChange
+ 0001:000096EC       TORfrmDtTm.cmdCancelClick
+ 0001:000094E4       TORfrmDtTm.cmdMidnightClick
+ 0001:00009444       TORfrmDtTm.cmdNowClick
+ 0001:00009518       TORfrmDtTm.cmdOKClick
+ 0001:0000925C       TORfrmDtTm.cmdTodayClick
+ 0001:000090A4       TORfrmDtTm.FormCreate
+ 0001:000091EC       TORfrmDtTm.imgNextMonthClick
+ 0001:000091A4       TORfrmDtTm.imgNextMonthMouseDown
+ 0001:00009234       TORfrmDtTm.imgNextMonthMouseUp
+ 0001:000091CC       TORfrmDtTm.imgPrevMonthClick
+ 0001:0000917C       TORfrmDtTm.imgPrevMonthMouseDown
+ 0001:0000920C       TORfrmDtTm.imgPrevMonthMouseUp
+ 0001:00009310       TORfrmDtTm.lstHourClick
+ 0001:00009354       TORfrmDtTm.lstMinuteClick
+ 0001:000092C0       TORfrmDtTm.txtTimeChange
+ 0001:00001C98       TrimFormatCount
+ 0002:0000051C       uBaseContext
+ 0002:0000106C       uCallList
+ 0002:00000520       uCurrentContext
+ 0002:00000514       uHaveReadOnlyColor
+ 0002:00001070       uMaxCalls
+ 0001:0000031C       UninitializeModule
+ 0001:000072D0       UpdateContext
+ 0001:000027A8       UpdateCrc32
+ 0002:00001058       uReadOnlyColor
+ 0001:000008D4       UrlMon
+ 0002:0000107C       uServerToday
+ 0002:00001074       uShowRPCs
+ 0001:000044F4       ValidFileName
+ 0001:00000494       Windows
+ 0001:0000090C       WinInet
+ 0001:00006B90       WinSock
+ 0001:000009EC       WinSpool
+ 0001:00005B1C       WrappedTextHeightByFont
+
+
+  Address         Publics by Value
+
+ 0002:FFBF1000       TlsLast
+ 0001:00000208       FreeLibrary
+ 0001:00000210       LocalAlloc
+ 0001:00000218       LocalFree
+ 0001:00000220       TlsAlloc
+ 0001:00000228       TlsFree
+ 0001:00000230       TlsGetValue
+ 0001:00000238       TlsSetValue
+ 0001:00000240       AllocTlsBuffer
+ 0001:0000024C       GetTlsSize
+ 0001:00000254       InitThreadTLS
+ 0001:00000298       InitProcessTLS
+ 0001:000002C4       ExitThreadTLS
+ 0001:000002EC       ExitProcessTLS
+ 0001:00000310       InitializeModule
+ 0001:0000031C       UninitializeModule
+ 0001:00000340       @InitPkg
+ 0001:000003A4       @PackageLoad
+ 0001:000003B0       @PackageUnload
+ 0001:000003BC       Finalization
+ 0001:000003EC       SysInit
+ 0001:00000404       CreateFont
+ 0001:0000040C       DeleteObject
+ 0001:00000414       GetDeviceCaps
+ 0001:0000041C       GetTextExtentPoint32
+ 0001:00000424       GetTextFace
+ 0001:0000042C       GetTextMetrics
+ 0001:00000434       SelectObject
+ 0001:0000043C       DrawText
+ 0001:00000444       GetDC
+ 0001:0000044C       InvalidateRect
+ 0001:00000454       ReleaseDC
+ 0001:0000045C       SendMessage
+ 0001:00000464       Finalization
+ 0001:00000494       Windows
+ 0001:0000049C       Finalization
+ 0001:000004CC       Messages
+ 0001:00000804       Finalization
+ 0001:00000834       CommCtrl
+ 0001:0000085C       Finalization
+ 0001:0000088C       Imm
+ 0001:000008A4       Finalization
+ 0001:000008D4       UrlMon
+ 0001:000008DC       Finalization
+ 0001:0000090C       WinInet
+ 0001:00000914       Finalization
+ 0001:00000944       RegStr
+ 0001:0000094C       Finalization
+ 0001:0000097C       ShellAPI
+ 0001:00000984       Finalization
+ 0001:000009B4       ShlObj
+ 0001:000009BC       Finalization
+ 0001:000009EC       WinSpool
+ 0001:00000ADC       Finalization
+ 0001:00000B0C       CommDlg
+ 0001:00000B14       Finalization
+ 0001:00000B44       Dlgs
+ 0001:0000103C       Finalization
+ 0001:0000106C       RichEdit
+ 0001:00001470       TORCalendar.DrawCell
+ 0001:000015F4       TORCalendar.KeyDown
+ 0001:00001668       Register
+ 0001:00001698       Finalization
+ 0001:000016C8       ORDtTmCal
+ 0001:00001900       DateTimeToFMDateTime
+ 0001:000019D0       FMDateTimeToDateTime
+ 0001:00001C60       FMDateTimeOffsetBy
+ 0001:00001C98       TrimFormatCount
+ 0001:00001D04       FormatFMDateTime
+ 0001:00002304       FormatFMDateTimeStr
+ 0001:0000234C       IsFMDateTime
+ 0001:00002434       MakeFMDateTime
+ 0001:00002474       SetListFMDateTime
+ 0001:00002584       HigherOf
+ 0001:000025AC       LowerOf
+ 0001:000025D4       StrToFloatDef
+ 0001:00002610       CharAt
+ 0001:00002654       ContainsAlpha
+ 0001:000026B4       ContainsVisibleChar
+ 0001:0000270C       ConvertSpecialStrings
+ 0001:000027A8       UpdateCrc32
+ 0001:00002830       CRCForFile
+ 0001:000028E0       CRCForStrings
+ 0001:000029E4       FilteredString
+ 0001:00002BF8       ExpandTabsFilter
+ 0001:00002E44       ExtractInteger
+ 0001:00002F40       ExtractFloat
+ 0001:00003048       ExtractDefault
+ 0001:000031F0       ExtractItems
+ 0001:0000338C       ExtractText
+ 0001:00003528       InvertStringList
+ 0001:00003590       MixedCase
+ 0001:00003714       MixedCaseList
+ 0001:000037AC       MixedCaseByPiece
+ 0001:00003878       Piece
+ 0001:0000391C       Pieces
+ 0001:000039E8       ComparePieces
+ 0001:00003B68       PiecesToList
+ 0001:00003C14       ReverseStr
+ 0001:00003CA4       SetPiece
+ 0001:00003DE0       SetPieces
+ 0001:00003EB4       SortByPiece
+ 0001:00004020       DelimCount
+ 0001:0000414C       GetStrings
+ 0001:00004444       QuickCopy
+ 0001:000044F4       ValidFileName
+ 0001:00004578       LimitStringLength
+ 0001:00004748       InfoBox
+ 0001:0000478C       LimitEditWidth
+ 0001:00004904       BaseFont
+ 0001:00004918       MainFont
+ 0001:0000494C       MainFontSize
+ 0001:00004964       FontWidthSubPixel
+ 0001:000049DC       FontWidthPixel
+ 0001:00004A14       MainFontWidth
+ 0001:00004A2C       MainFontHeight
+ 0001:00004A50       RedrawSuspend
+ 0001:00004A6C       RedrawActivate
+ 0001:00004A94       ResetSelectedForList
+ 0001:00004AE0       ResizeWidth
+ 0001:00004B34       ResizeHeight
+ 0001:00004BB4       ResizeToFont
+ 0001:00004C34       ResizeHeaderControl
+ 0001:00004CB0       ResizeListView
+ 0001:00004D4C       ResizeComboBox
+ 0001:00004D84       ResizeListBox
+ 0001:00004DB8       ResizeCheckListBox
+ 0001:00004DEC       ResizeDescendants
+ 0001:0000520C       ResizeChartFonts
+ 0001:000053F8       ResizeFontsInDescendants
+ 0001:00005588       ForceInsideWorkArea
+ 0001:000056A4       ResizeFormToFont
+ 0001:000057A4       ResizeAnchoredFormToFont
+ 0001:000058B8       SetEqualTabStops
+ 0001:000059C4       StatusText
+ 0001:00005A14       ShowMsgOn
+ 0001:00005A44       TextWidthByFont
+ 0001:00005AB0       TextHeightByFont
+ 0001:00005B1C       WrappedTextHeightByFont
+ 0001:00005C94       NumCharsFitInWidth
+ 0001:00005DE8       PopupComponent
+ 0001:00005E3C       ReformatMemoParagraph
+ 0001:00006080       ReadOnlyColor
+ 0001:000060D4       ListGridDrawCell
+ 0001:000061C4       ListGridDrawLines
+ 0001:00006304       ListGridRowHeight
+ 0001:00006388       KillObj
+ 0001:000064D4       TIdleCaller.Create
+ 0001:000065BC       TIdleCaller.Destroy
+ 0001:00006640       TIdleCaller.AppIdle
+ 0001:0000669C       TIdleCaller.Add
+ 0001:00006708       TIdleCaller.TimerDone
+ 0001:000067D8       CallWhenIdle
+ 0001:00006848       CallWhenIdleNotifyWhenDone
+ 0001:000068BC       menuHideAllBut
+ 0001:00006988       Finalization
+ 0001:000069F8       ORFn
+ 0001:00006B48       inet_ntoa
+ 0001:00006B50       gethostbyname
+ 0001:00006B58       gethostname
+ 0001:00006B60       Finalization
+ 0001:00006B90       WinSock
+ 0001:00006C88       EnsureBroker
+ 0001:00006CF4       SetList
+ 0001:00006DAC       SetParams
+ 0001:000072D0       UpdateContext
+ 0001:00007388       IsBaseContext
+ 0001:000073B0       CallBrokerInContext
+ 0001:00007998       CallBroker
+ 0001:000079AC       SetBrokerServer
+ 0001:00007A14       AuthorizedOption
+ 0001:00007A5C       ConnectToServer
+ 0001:00007CE8       MRef
+ 0001:00007D44       CallV
+ 0001:00007D94       sCallV
+ 0001:00007E20       tCallV
+ 0001:00007EBC       RetainedRPCCount
+ 0001:00007EC8       SetRetainedRPCMax
+ 0001:00007ED4       GetRPCMax
+ 0001:00007EDC       LoadRPCData
+ 0001:00007F10       DottedIPStr
+ 0001:00007F84       RPCIdleCallDone
+ 0001:00007FB8       CallRPCWhenIdle
+ 0001:00008008       Finalization
+ 0001:00008088       ORNet
+ 0001:00008D38       ActiveBroker
+ 0001:00008D64       ServerFMNow
+ 0001:00008E08       ServerNow
+ 0001:00008E40       ServerToday
+ 0001:00008E88       ServerParseFMDate
+ 0001:00008F30       RelativeDateTime
+ 0001:000090A4       TORfrmDtTm.FormCreate
+ 0001:000090E4       TORfrmDtTm.calSelectChange
+ 0001:0000917C       TORfrmDtTm.imgPrevMonthMouseDown
+ 0001:000091A4       TORfrmDtTm.imgNextMonthMouseDown
+ 0001:000091CC       TORfrmDtTm.imgPrevMonthClick
+ 0001:000091EC       TORfrmDtTm.imgNextMonthClick
+ 0001:0000920C       TORfrmDtTm.imgPrevMonthMouseUp
+ 0001:00009234       TORfrmDtTm.imgNextMonthMouseUp
+ 0001:0000925C       TORfrmDtTm.cmdTodayClick
+ 0001:000092C0       TORfrmDtTm.txtTimeChange
+ 0001:00009310       TORfrmDtTm.lstHourClick
+ 0001:00009354       TORfrmDtTm.lstMinuteClick
+ 0001:00009444       TORfrmDtTm.cmdNowClick
+ 0001:000094E4       TORfrmDtTm.cmdMidnightClick
+ 0001:00009518       TORfrmDtTm.cmdOKClick
+ 0001:000096EC       TORfrmDtTm.cmdCancelClick
+ 0001:0000970C       TORDateTimeDlg.Create
+ 0001:00009778       TORDateTimeDlg.Execute
+ 0001:00009A6C       TORDateTimeDlg.GetFMDateTime
+ 0001:00009A90       TORDateTimeDlg.SetDateOnly
+ 0001:00009ACC       TORDateTimeDlg.SetFMDateTime
+ 0001:00009AFC       TORDateTimeDlg.SetRequireTime
+ 0001:00009B28       TORDateEdit.CreateParams
+ 0001:00009B58       TORDateBox.Create
+ 0001:00009C90       TORDateBox.WMSize
+ 0001:00009D30       TORDateBox.SetTemplateField
+ 0001:00009E00       TORDateBox.ButtonClick
+ 0001:00009F78       TORDateBox.Change
+ 0001:00009F94       TORDateBox.KeyDown
+ 0001:00009FDC       TORDateBox.GetFMDateTime
+ 0001:0000A070       TORDateBox.GetRelativeTime
+ 0001:0000A194       TORDateBox.SetDateOnly
+ 0001:0000A240       TORDateBox.SetFMDateTime
+ 0001:0000A26C       TORDateBox.SetRequireTime
+ 0001:0000A2F8       TORDateBox.SetEditRect
+ 0001:0000A370       TORDateBox.UpdateText
+ 0001:0000A480       TORDateBox.Validate
+ 0001:0000A5E4       TORDateBox.IsValid
+ 0001:0000A66C       TORDateBox.SetCaption
+ 0001:0000A714       TORDateBox.GetCaption
+ 0001:0000A738       IsLeapYear
+ 0001:0000A784       DaysPerMonth
+ 0001:0000A964       TORDateComboEdit.SetTemplateField
+ 0001:0000A9AC       TORDateCombo.Create
+ 0001:0000AA4C       TORDateCombo.Destroy
+ 0001:0000AAC8       TORDateCombo.GetYearSize
+ 0001:0000AB0C       TORDateCombo.InitDays
+ 0001:0000ACC8       TORDateCombo.InitMonths
+ 0001:0000AE30       TORDateCombo.Rebuild
+ 0001:0000B544       TORDateCombo.SetDay
+ 0001:0000B600       TORDateCombo.SetIncludeBtn
+ 0001:0000B634       TORDateCombo.SetIncludeDay
+ 0001:0000B690       TORDateCombo.SetIncludeMonth
+ 0001:0000B6E8       TORDateCombo.SetMonth
+ 0001:0000B770       TORDateCombo.SetLongMonths
+ 0001:0000B7A4       TORDateCombo.SetYear
+ 0001:0000B950       TORDateCombo.DayChanged
+ 0001:0000B9A0       TORDateCombo.MonthChanged
+ 0001:0000B9F8       TORDateCombo.YearChanged
+ 0001:0000BB44       TORDateCombo.CheckDays
+ 0001:0000BC28       TORDateCombo.Loaded
+ 0001:0000BC50       TORDateCombo.Paint
+ 0001:0000BC78       TORDateCombo.BtnClicked
+ 0001:0000BE34       TORDateCombo.YearUDChange
+ 0001:0000BFE0       TORDateCombo.YearKeyPress
+ 0001:0000C0D0       TORDateCombo.GetFMDate
+ 0001:0000C150       TORDateCombo.SetFMDate
+ 0001:0000C25C       TORDateCombo.DateText
+ 0001:0000C3A8       TORDateCombo.DoChange
+ 0001:0000C3D4       TORDateCombo.Resized
+ 0001:0000C3EC       TORDateCombo.CMFontChanged
+ 0001:0000C410       TORDateCombo.Text
+ 0001:0000C5CC       Register
+ 0001:0000C610       TORDateCombo.SetTemplateField
+ 0001:0000C644       Finalization
+ 0001:0000C674       ORDtTm
+ 0001:0000CB24       TORDateRangeDlg.Create
+ 0001:0000CBF4       TORDateRangeDlg.Execute
+ 0001:0000CE6C       TORDateRangeDlg.SetDateOnly
+ 0001:0000CEF8       TORDateRangeDlg.SetRequireTime
+ 0001:0000CF5C       TORDateRangeDlg.SetFMDateStart
+ 0001:0000CFC0       TORDateRangeDlg.SetFMDateStop
+ 0001:0000D024       TORDateRangeDlg.SetTextOfStart
+ 0001:0000D044       TORDateRangeDlg.SetTextOfStop
+ 0001:0000D064       TORfrmDateRange.cmdOKClick
+ 0001:0000D130       TORfrmDateRange.cmdCancelClick
+ 0001:0000D13C       Register
+ 0001:0000D16C       TORfrmDateRange.FormCreate
+ 0001:0000D210       TORfrmDateRange.FormDestroy
+ 0001:0000D230       Finalization
+ 0001:0000D260       ORDtTmRng
+ 0001:0000D5B0       @GetPackageInfoTable
+ 0001:0000D5B8       @PackageLoad
+ 0001:0000D5C4       @PackageUnload
+ 0001:0000D5D0       ORDateLib60
+ 0002:00000000       Module
+ 0002:00000018       TlsProc
+ 0002:00000028       BOOLCHAR
+ 0002:0000002C       MONTH_NAMES_SHORT
+ 0002:0000005C       MONTH_NAMES_LONG
+ 0002:000000D4       SearchChars
+ 0002:000000F4       ReplaceChars
+ 0002:00000114       CRC32_TABLE
+ 0002:00000514       uHaveReadOnlyColor
+ 0002:00000518       IdleCaller
+ 0002:0000051C       uBaseContext
+ 0002:00000520       uCurrentContext
+ 0002:00000524       BoolChar
+ 0002:00000528       DaysInMonth
+ 0002:00001000       ModuleIsLib
+ 0002:00001001       ModuleIsPackage
+ 0002:00001004       TlsIndex
+ 0002:0000100C       HInstance
+ 0002:00001010       .1
+ 0002:00001014       tlsBuffer
+ 0002:00001018       .3
+ 0002:0000101C       .1
+ 0002:00001020       .1
+ 0002:00001024       .1
+ 0002:00001028       .1
+ 0002:0000102C       .1
+ 0002:00001030       .1
+ 0002:00001034       .1
+ 0002:00001038       .1
+ 0002:0000103C       .3
+ 0002:00001040       .1
+ 0002:00001044       .1
+ 0002:00001048       .1
+ 0002:0000104C       .2
+ 0002:00001050       .1
+ 0002:00001054       FBaseFont
+ 0002:00001058       uReadOnlyColor
+ 0002:0000105C       .1
+ 0002:00001060       RPCBrokerV
+ 0002:00001064       RPCLastCall
+ 0002:00001068       .1
+ 0002:0000106C       uCallList
+ 0002:00001070       uMaxCalls
+ 0002:00001074       uShowRPCs
+ 0002:00001078       .6
+ 0002:0000107C       uServerToday
+ 0002:00001084       .3
+
+
+Line numbers for ORDtTmCal(ORDtTmCal.pas) segment .text
+
+    25 0001:00001470    26 0001:0000149F    27 0001:000014AE    29 0001:000014B4
+    30 0001:000014CE    32 0001:0000150F    33 0001:00001529    35 0001:00001537
+    38 0001:000015CF    41 0001:000015F4    42 0001:00001601    43 0001:0000160D
+    44 0001:00001613    45 0001:00001637    46 0001:0000163D    47 0001:00001661
+    51 0001:00001668    52 0001:0000166C    53 0001:00001683    55 0001:000016C8
+    55 0001:000016CF
+
+Line numbers for ORFn(ORFn.pas) segment .text
+
+   192 0001:00001900   193 0001:00001906   194 0001:0000191A   195 0001:00001932
+   196 0001:00001976   197 0001:000019AE   198 0001:000019C3   205 0001:000019D0
+   206 0001:000019ED   207 0001:00001A1F   208 0001:00001A61   209 0001:00001A84
+   210 0001:00001AB6   213 0001:00001B4D   216 0001:00001BDA   217 0001:00001C09
+   223 0001:00001C60   224 0001:00001C69   225 0001:00001C78   226 0001:00001C91
+   238 0001:00001C98   239 0001:00001C9E   240 0001:00001CA3   242 0001:00001CC5
+   243 0001:00001CDA   244 0001:00001CE5   245 0001:00001CFD   247 0001:00001D04
+   248 0001:00001D30   249 0001:00001D38   250 0001:00001D4A   251 0001:00001D79
+   252 0001:00001DA8   253 0001:00001DCB   254 0001:00001DEE   255 0001:00001E11
+   256 0001:00001E34   258 0001:00001E5C   260 0001:00001EC9   263 0001:00001EDD
+   264 0001:00001F0F   261 0001:00001F21   266 0001:00001F36   268 0001:00001F62
+   269 0001:00001F74   270 0001:00001F9C   272 0001:00001FD0   273 0001:00001FE2
+   274 0001:00002000   276 0001:0000202A   277 0001:00002046   278 0001:0000206E
+   279 0001:000020A2   280 0001:000020E0   282 0001:00002128   283 0001:0000213A
+   284 0001:00002158   286 0001:00002182   287 0001:00002194   288 0001:000021B2
+   290 0001:000021DC   291 0001:000021F2   292 0001:0000222D   295 0001:0000224E
+   296 0001:00002286   257 0001:00002298   299 0001:000022DD   304 0001:00002304
+   305 0001:00002313   306 0001:0000231E   308 0001:0000232A   309 0001:00002336
+   311 0001:00002347   316 0001:0000234C   317 0001:0000236B   318 0001:0000236F
+   319 0001:00002380   320 0001:000023B0   321 0001:000023DC   322 0001:0000240B
+   323 0001:0000242F   326 0001:00002434   327 0001:0000243D   328 0001:00002449
+   329 0001:00002470   337 0001:00002474   338 0001:000024A5   340 0001:000024CA
+   341 0001:000024D8   342 0001:000024EA   344 0001:000024F6   345 0001:00002510
+   346 0001:0000251C   348 0001:00002527   349 0001:00002539   350 0001:00002547
+   338 0001:0000254A   351 0001:0000257D   357 0001:00002584   358 0001:00002590
+   359 0001:00002596   360 0001:000025A7   364 0001:000025AC   365 0001:000025B8
+   366 0001:000025BE   367 0001:000025CF   370 0001:000025D4   371 0001:000025DD
+   372 0001:000025F3   373 0001:0000260A   379 0001:00002610   380 0001:0000261C
+   381 0001:0000264F   387 0001:00002654   388 0001:0000265D   389 0001:00002661
+   391 0001:0000269D   392 0001:000026A1   393 0001:000026A3   389 0001:000026A6
+   394 0001:000026AE   400 0001:000026B4   401 0001:000026BD   402 0001:000026C1
+   404 0001:000026F7   405 0001:000026FB   406 0001:000026FD   402 0001:00002700
+   407 0001:00002708   411 0001:0000270C   412 0001:0000272B   414 0001:00002730
+   415 0001:00002777   412 0001:0000277A   416 0001:0000279D   421 0001:000027A8
+   422 0001:000027B7   423 0001:000027BD   424 0001:000027D9   425 0001:0000281D
+   423 0001:00002820   426 0001:00002828   436 0001:00002830   437 0001:0000284F
+   438 0001:00002856   439 0001:00002863   441 0001:00002873   442 0001:00002886
+   443 0001:0000289D   444 0001:000028A6   445 0001:000028AE   446 0001:000028B6
+   447 0001:000028D9   453 0001:000028E0   454 0001:00002900   455 0001:00002907
+   456 0001:0000292C   457 0001:00002950   458 0001:000029A5   456 0001:000029A8
+   458 0001:000029AD   455 0001:000029B0   459 0001:000029DE   464 0001:000029E4
+   465 0001:00002A10   466 0001:00002A18   467 0001:00002A32   468 0001:00002A92
+   469 0001:00002ABE   468 0001:00002AD1   470 0001:00002ADB   471 0001:00002B0D
+   472 0001:00002B1F   473 0001:00002B31   474 0001:00002B61   466 0001:00002B64
+   475 0001:00002B6D   476 0001:00002BDA   482 0001:00002BF8   483 0001:00002C27
+   485 0001:00002C4C   486 0001:00002C5A   487 0001:00002C62   488 0001:00002C7C
+   489 0001:00002CD1   490 0001:00002D12   491 0001:00002D41   492 0001:00002D50
+   493 0001:00002D5F   494 0001:00002D8C   487 0001:00002D8F   495 0001:00002D98
+   496 0001:00002DDD   498 0001:00002DEB   483 0001:00002DEE   499 0001:00002E26
+   505 0001:00002E44   506 0001:00002E6A   507 0001:00002EAA   508 0001:00002EE8
+   509 0001:00002F3B   515 0001:00002F40   516 0001:00002F66   517 0001:00002FAA
+   518 0001:00002FEC   519 0001:00003044   524 0001:00003048   525 0001:00003074
+   526 0001:0000307C   527 0001:00003083   528 0001:000030C8   529 0001:000030D3
+   530 0001:00003115   531 0001:00003166   532 0001:00003171   533 0001:000031DF
+   538 0001:000031F0   539 0001:0000321B   540 0001:00003222   541 0001:00003267
+   542 0001:00003272   543 0001:000032B4   544 0001:00003310   545 0001:0000331B
+   546 0001:0000337B   551 0001:0000338C   552 0001:000033B7   553 0001:000033BE
+   554 0001:00003403   555 0001:0000340E   556 0001:00003450   557 0001:000034AC
+   558 0001:000034B7   559 0001:00003517   564 0001:00003528   565 0001:00003532
+   566 0001:0000358B   571 0001:00003590   572 0001:0000359D   573 0001:000035A8
+   574 0001:000035C4   576 0001:00003616   577 0001:0000365F   578 0001:000036B1
+   573 0001:000036F8   580 0001:00003701   581 0001:0000370C   586 0001:00003714
+   587 0001:00003734   588 0001:000037A6   594 0001:000037AC   595 0001:000037D5
+   597 0001:000037F6   598 0001:00003804   599 0001:00003821   600 0001:00003833
+   601 0001:00003841   595 0001:00003844   602 0001:00003873   609 0001:00003878
+   610 0001:00003887   611 0001:0000388E   612 0001:00003899   615 0001:000038A9
+   616 0001:000038B4   617 0001:000038BD   613 0001:000038CB   619 0001:000038D9
+   620 0001:000038EA   621 0001:00003914   627 0001:0000391C   628 0001:00003942
+   629 0001:0000394A   630 0001:00003998   631 0001:000039E1   638 0001:000039E8
+   639 0001:00003A35   640 0001:00003A3A   641 0001:00003A3F   643 0001:00003A4B
+   644 0001:00003A51   647 0001:00003AAF   649 0001:00003B0B   650 0001:00003B11
+   641 0001:00003B1C   654 0001:00003B5A   660 0001:00003B68   661 0001:00003B93
+   664 0001:00003B9D   665 0001:00003BB1   666 0001:00003BBC   662 0001:00003BDD
+   668 0001:00003C0E   673 0001:00003C14   674 0001:00003C21   675 0001:00003C3D
+   676 0001:00003C42   678 0001:00003C52   679 0001:00003C5D   680 0001:00003C96
+   676 0001:00003C99   681 0001:00003C9F   688 0001:00003CA4   689 0001:00003CCD
+   690 0001:00003CD4   691 0001:00003CE1   694 0001:00003CF1   695 0001:00003CFC
+   696 0001:00003D05   692 0001:00003D13   698 0001:00003D21   699 0001:00003D32
+   700 0001:00003D3A   701 0001:00003D6C   702 0001:00003DD8   709 0001:00003DE0
+   710 0001:00003E1C   711 0001:00003E2E   710 0001:00003E7D   712 0001:00003EA7
+   717 0001:00003EB4   718 0001:00003EE0   719 0001:00003F01   718 0001:00003F61
+   720 0001:00003F66   721 0001:00003F71   722 0001:00003F92   721 0001:00003FF4
+   723 0001:0000401B   729 0001:00004020   730 0001:0000403F   731 0001:00004044
+   732 0001:0000404B   733 0001:00004056   734 0001:00004075   736 0001:0000407D
+   738 0001:0000409C   739 0001:000040A7   742 0001:000040B6   734 0001:000040C1
+   744 0001:000040E9   765 0001:0000414C   766 0001:00004177   767 0001:000041A6
+   768 0001:000041BC   769 0001:000041CE   771 0001:000041ED   772 0001:000041FF
+   774 0001:00004224   775 0001:00004236   777 0001:0000425A   778 0001:0000426C
+   780 0001:00004291   784 0001:000042A3   785 0001:000042C3   787 0001:000042CF
+   788 0001:000042E7   793 0001:000042F3   795 0001:0000434B   796 0001:00004386
+   799 0001:00004444   800 0001:00004451   801 0001:00004455   802 0001:00004459
+   803 0001:0000445E   804 0001:00004468   805 0001:00004472   806 0001:00004481
+   807 0001:0000448F   808 0001:0000449A   809 0001:000044A6   811 0001:000044BE
+   813 0001:000044CE   814 0001:000044DE   815 0001:000044EE   821 0001:000044F4
+   822 0001:00004500   823 0001:0000450B   826 0001:00004514   827 0001:00004546
+   829 0001:00004553   824 0001:00004563   831 0001:00004572   839 0001:00004578
+   840 0001:000045A1   841 0001:000045B0   842 0001:000045BE   844 0001:000045E5
+   846 0001:00004606   849 0001:00004618   852 0001:00004620   853 0001:0000464E
+   854 0001:0000465A   855 0001:00004683   847 0001:00004693   857 0001:000046A4
+   859 0001:000046BD   860 0001:000046D8   842 0001:000046DB   861 0001:000046E4
+   862 0001:000046EE   864 0001:00004708   866 0001:00004742   914 0001:00004748
+   915 0001:00004758   916 0001:00004788   927 0001:0000478C   928 0001:000047AB
+   929 0001:000047B6   930 0001:000047C3   933 0001:000047FC   934 0001:00004801
+   935 0001:00004821   936 0001:00004841   937 0001:00004861   938 0001:00004867
+   939 0001:00004875   941 0001:0000489B   943 0001:000048B4   944 0001:000048C6
+   946 0001:000048FD   949 0001:00004904   950 0001:00004908   951 0001:00004913
+   954 0001:00004918   955 0001:0000491C   956 0001:00004929   957 0001:0000493B
+   958 0001:00004946   962 0001:0000494C   963 0001:00004950   964 0001:00004960
+   970 0001:00004964   971 0001:0000496D   973 0001:00004982   974 0001:00004992
+   977 0001:000049DC   979 0001:000049E5   980 0001:00004A0C   983 0001:00004A14
+   984 0001:00004A18   985 0001:00004A28   990 0001:00004A2C   991 0001:00004A30
+   992 0001:00004A4C   995 0001:00004A50   996 0001:00004A57   997 0001:00004A66
+  1000 0001:00004A6C  1001 0001:00004A73  1002 0001:00004A82  1003 0001:00004A8F
+  1008 0001:00004A94  1009 0001:00004A9D  1010 0001:00004AD9  1013 0001:00004AE0
+  1014 0001:00004AEF  1016 0001:00004B2C  1019 0001:00004B34  1020 0001:00004B43
+  1022 0001:00004BA9  1029 0001:00004BB4  1030 0001:00004BC3  1031 0001:00004BD2
+  1032 0001:00004BDF  1033 0001:00004BEA  1034 0001:00004C01  1035 0001:00004C18
+  1041 0001:00004C34  1042 0001:00004C43  1043 0001:00004C6A  1042 0001:00004CA4
+  1044 0001:00004CA9  1049 0001:00004CB0  1050 0001:00004CBF  1051 0001:00004CCC
+  1052 0001:00004CF3  1051 0001:00004D43  1053 0001:00004D48  1056 0001:00004D4C
+  1057 0001:00004D5B  1058 0001:00004D80  1061 0001:00004D84  1062 0001:00004D93
+  1063 0001:00004DB2  1066 0001:00004DB8  1067 0001:00004DC7  1068 0001:00004DE6
+  1076 0001:00004DEC  1077 0001:00004DFB  1078 0001:00004E04  1079 0001:00004E10
+  1080 0001:00004E18  1096 0001:00004E26  1097 0001:00004E2F  1098 0001:00004E38
+  1099 0001:00004E3E  1100 0001:00004E44  1102 0001:00004E56  1103 0001:00004E6D
+  1105 0001:00004E84  1106 0001:00004EA9  1108 0001:00004EB7  1110 0001:00004ECD
+  1111 0001:00004EDD  1113 0001:00004F0E  1114 0001:00004F29  1115 0001:00004F32
+  1117 0001:00004F63  1118 0001:00004F7E  1119 0001:00004F8E  1121 0001:00004FBF
+  1122 0001:00004FDA  1123 0001:00004FE3  1125 0001:00005014  1128 0001:0000502F
+  1129 0001:00005053  1130 0001:00005061  1131 0001:00005073  1132 0001:00005081
+  1133 0001:00005093  1134 0001:000050A1  1135 0001:000050B3  1136 0001:000050C1
+  1137 0001:000050D3  1138 0001:000050E1  1139 0001:000050F3  1140 0001:00005101
+  1143 0001:00005140  1144 0001:00005156  1145 0001:00005168  1146 0001:000051A0
+  1148 0001:000051D6  1105 0001:000051D9  1150 0001:000051EF  1152 0001:000051FF
+  1157 0001:0000520C  1159 0001:0000521C  1160 0001:0000523E  1161 0001:0000525C
+  1162 0001:0000527B  1163 0001:00005296  1164 0001:000052B8  1165 0001:000052D6
+  1166 0001:000052F5  1167 0001:00005310  1168 0001:0000532F  1169 0001:0000534A
+  1170 0001:00005369  1171 0001:00005384  1172 0001:000053A5  1173 0001:000053C9
+  1171 0001:000053EE  1175 0001:000053F3  1183 0001:000053F8  1184 0001:00005408
+  1185 0001:0000542D  1186 0001:0000543B  1188 0001:00005451  1189 0001:0000546E
+  1190 0001:00005477  1191 0001:0000548C  1192 0001:0000549A  1193 0001:000054A8
+  1194 0001:000054B0  1195 0001:000054C8  1196 0001:000054E0  1197 0001:000054EE
+  1201 0001:000054FE  1202 0001:00005510  1205 0001:00005520  1206 0001:00005542
+  1208 0001:00005557  1209 0001:00005569  1210 0001:00005577  1184 0001:0000557A
+  1211 0001:00005583  1216 0001:00005588  1217 0001:00005591  1220 0001:000055A0
+  1222 0001:000055AB  1223 0001:000055CE  1226 0001:000055D7  1228 0001:000055E2
+  1229 0001:00005605  1232 0001:0000560E  1233 0001:00005619  1235 0001:00005622
+  1237 0001:0000562D  1238 0001:0000564E  1240 0001:00005657  1242 0001:00005661
+  1243 0001:00005683  1245 0001:0000568B  1246 0001:00005696  1247 0001:0000569F
+  1252 0001:000056A4  1254 0001:000056AD  1255 0001:000056D3  1256 0001:000056F9
+  1257 0001:00005727  1258 0001:00005755  1259 0001:00005760  1260 0001:00005768
+  1261 0001:00005773  1264 0001:00005788  1266 0001:0000579F  1271 0001:000057A4
+  1273 0001:000057AD  1274 0001:000057D3  1275 0001:000057F9  1276 0001:00005827
+  1277 0001:00005855  1278 0001:00005860  1279 0001:00005868  1280 0001:00005873
+  1281 0001:00005888  1284 0001:0000589D  1286 0001:000058B4  1296 0001:000058B8
+  1297 0001:000058D7  1299 0001:000058ED  1300 0001:000058F7  1301 0001:00005905
+  1302 0001:00005910  1303 0001:00005935  1304 0001:00005959  1306 0001:000059BA
+  1311 0001:000059C4  1312 0001:000059CB  1313 0001:000059EB  1314 0001:00005A10
+  1317 0001:00005A14  1318 0001:00005A23  1319 0001:00005A29  1320 0001:00005A3F
+  1328 0001:00005A44  1329 0001:00005A50  1330 0001:00005A5A  1331 0001:00005A6A
+  1332 0001:00005A89  1333 0001:00005A8F  1334 0001:00005A9C  1335 0001:00005AAA
+  1343 0001:00005AB0  1344 0001:00005ABC  1345 0001:00005AC6  1346 0001:00005AD6
+  1347 0001:00005AF5  1348 0001:00005AFB  1349 0001:00005B08  1350 0001:00005B16
+  1357 0001:00005B1C  1365 0001:00005B41  1366 0001:00005B46  1367 0001:00005B4B
+  1368 0001:00005B61  1383 0001:00005BD9  1384 0001:00005BDF  1385 0001:00005BF4
+  1386 0001:00005C02  1389 0001:00005C45  1390 0001:00005C4B  1391 0001:00005C5D
+  1394 0001:00005C8E  1405 0001:00005C94  1406 0001:00005CB7  1407 0001:00005CC1
+  1408 0001:00005CD1  1409 0001:00005CDF  1410 0001:00005CEA  1411 0001:00005CEF
+  1413 0001:00005CF5  1414 0001:00005D09  1415 0001:00005D28  1417 0001:00005D30
+  1418 0001:00005D36  1419 0001:00005D4D  1423 0001:00005D59  1424 0001:00005D5F
+  1425 0001:00005D80  1427 0001:00005D8A  1429 0001:00005DA1  1430 0001:00005DAE
+  1432 0001:00005DE1  1435 0001:00005DE8  1436 0001:00005DF4  1438 0001:00005E1B
+  1440 0001:00005E26  1441 0001:00005E36  1448 0001:00005E3C  1451 0001:00005E5E
+  1453 0001:00005E82  1454 0001:00005E8D  1455 0001:00005EEE  1456 0001:00005F34
+  1457 0001:00005F46  1458 0001:00005F54  1460 0001:00005F5C  1461 0001:00005F86
+  1462 0001:00005F9D  1463 0001:00005FBE  1464 0001:00006013  1465 0001:00006020
+  1466 0001:0000602B  1467 0001:00006035  1469 0001:00006062  1476 0001:00006080
+  1477 0001:00006085  1479 0001:0000608E  1480 0001:00006095  1481 0001:000060AF
+  1483 0001:000060BB  1485 0001:000060C5  1486 0001:000060D0  1495 0001:000060D4
+  1496 0001:000060E3  1497 0001:000060F1  1498 0001:000060F6  1499 0001:00006138
+  1500 0001:00006143  1501 0001:0000616E  1502 0001:00006174  1503 0001:0000617D
+  1504 0001:00006184  1505 0001:000061BB  1512 0001:000061C4  1515 0001:000061D3
+  1516 0001:000061E1  1518 0001:000061E7  1519 0001:000061FD  1521 0001:00006213
+  1522 0001:00006224  1523 0001:0000623A  1524 0001:00006258  1525 0001:00006276
+  1526 0001:0000627D  1528 0001:000062A4  1529 0001:000062C2  1530 0001:000062E0
+  1531 0001:000062F4  1526 0001:000062F7  1533 0001:000062FC  1539 0001:00006304
+  1540 0001:00006313  1541 0001:00006321  1542 0001:00006342  1544 0001:00006381
+  1562 0001:00006388  1563 0001:00006394  1564 0001:0000639C  1566 0001:000063A6
+  1568 0001:000063B0  1570 0001:000063C2  1571 0001:000063C8  1572 0001:000063E4
+  1573 0001:000063F3  1571 0001:00006406  1576 0001:0000640E  1578 0001:00006420
+  1579 0001:00006426  1580 0001:00006440  1581 0001:0000644F  1579 0001:00006462
+  1584 0001:00006468  1585 0001:00006470  1587 0001:00006477  1614 0001:000064D4
+  1615 0001:000064EC  1616 0001:000064F6  1617 0001:00006508  1618 0001:0000651A
+  1619 0001:0000652E  1620 0001:0000653B  1621 0001:0000654B  1622 0001:0000655F
+  1623 0001:00006566  1624 0001:00006583  1625 0001:000065B8  1628 0001:000065BC
+  1629 0001:000065CD  1630 0001:000065E9  1631 0001:000065F6  1632 0001:00006603
+  1633 0001:00006610  1634 0001:0000661D  1635 0001:00006639  1638 0001:00006640
+  1639 0001:00006650  1641 0001:00006668  1642 0001:00006675  1644 0001:0000667C
+  1645 0001:00006686  1646 0001:00006695  1649 0001:0000669C  1650 0001:000066C2
+  1651 0001:000066D3  1652 0001:00006701  1659 0001:00006708  1660 0001:0000672B
+  1661 0001:00006738  1662 0001:00006748  1663 0001:00006758  1664 0001:00006768
+  1665 0001:00006778  1666 0001:00006785  1668 0001:00006792  1669 0001:00006798
+  1670 0001:0000679E  1671 0001:000067A4  1673 0001:000067AA  1674 0001:000067D3
+  1678 0001:000067D8  1679 0001:000067FA  1680 0001:00006803  1681 0001:00006814
+  1682 0001:00006844  1685 0001:00006848  1686 0001:0000686D  1687 0001:00006876
+  1688 0001:00006887  1689 0001:000068B8  1695 0001:000068BC  1696 0001:000068DC
+  1698 0001:00006901  1699 0001:00006905  1701 0001:0000692B  1703 0001:0000694F
+  1704 0001:00006953  1706 0001:00006955  1699 0001:00006958  1707 0001:0000695D
+  1708 0001:00006963  1709 0001:00006975  1696 0001:00006978  1710 0001:0000697D
+  1718 0001:00006988  1719 0001:000069AB  1721 0001:000069F6  1712 0001:000069F8
+  1713 0001:00006A04  1714 0001:00006A15  1715 0001:00006A24  1717 0001:00006A33
+
+Line numbers for ORNet(ORNet.pas) segment .text
+
+    64 0001:00006C88    65 0001:00006C8B    70 0001:00006C94    75 0001:00006CAD
+    76 0001:00006CB9    77 0001:00006CCB    78 0001:00006CD7    79 0001:00006CE3
+    82 0001:00006CEF    88 0001:00006CF4    89 0001:00006D16    91 0001:00006D29
+    92 0001:00006D30    94 0001:00006DA5   103 0001:00006DAC   104 0001:00006DE9
+   105 0001:00006DFB   106 0001:00006E1D   109 0001:00006E22   110 0001:00006E2E
+   111 0001:00006E58   113 0001:00006E7A   114 0001:00006E90   115 0001:00006EE9
+   116 0001:00006F1D   117 0001:00006F46   118 0001:00006F4B   120 0001:00006F6A
+   123 0001:00006F8B   124 0001:00006FA0   125 0001:00006FBE   127 0001:00006FFB
+   129 0001:00007010   130 0001:0000701D   132 0001:00007056   133 0001:0000707A
+   136 0001:00007086   137 0001:000070BA   138 0001:000070BF   139 0001:000070D0
+   140 0001:000070EB   141 0001:0000710E   143 0001:00007123   144 0001:00007130
+   146 0001:00007165   147 0001:00007189   150 0001:00007192   151 0001:000071C8
+   153 0001:000071DE   111 0001:000071DF   155 0001:000071E6   156 0001:0000721D
+   161 0001:000072D0   162 0001:000072EE   163 0001:000072FE   166 0001:00007302
+   167 0001:00007311   168 0001:00007315   170 0001:00007324   171 0001:00007348
+   173 0001:0000735A   175 0001:00007383   178 0001:00007388   179 0001:0000738B
+   180 0001:000073AC   187 0001:000073B0   188 0001:000073F0   189 0001:00007428
+   190 0001:00007453   192 0001:00007461   193 0001:0000746D   195 0001:00007472
+   197 0001:00007482   198 0001:00007491   199 0001:00007499   201 0001:000074A5
+   202 0001:000074B4   203 0001:000074D9   204 0001:000074EB   205 0001:0000750F
+   206 0001:0000751C   207 0001:00007529   209 0001:00007554   211 0001:00007579
+   212 0001:00007588   214 0001:00007597   215 0001:000075A6   218 0001:000075B3
+   219 0001:000075EE   221 0001:0000760A   223 0001:00007638   224 0001:00007657
+   225 0001:00007677   226 0001:000076A5   221 0001:000076A6   228 0001:000076A9
+   207 0001:000076AA   230 0001:000076B3   231 0001:000076C1   235 0001:000076E6
+   237 0001:000076E8   239 0001:000076F1   240 0001:00007701   242 0001:00007720
+   258 0001:00007725   261 0001:00007744   262 0001:00007751   263 0001:0000775E
+   264 0001:00007771   265 0001:0000777E   266 0001:0000778E   267 0001:000077F8
+   270 0001:00007998   271 0001:0000799B   272 0001:000079A5   273 0001:000079AA
+   277 0001:000079AC   278 0001:000079BE   281 0001:000079C3   282 0001:000079E5
+   283 0001:000079F4   284 0001:000079FF   286 0001:00007A0B   290 0001:00007A14
+   291 0001:00007A1B   292 0001:00007A20   293 0001:00007A2E   295 0001:00007A32
+   296 0001:00007A3B   297 0001:00007A47   299 0001:00007A55   308 0001:00007A5C
+   309 0001:00007A80   310 0001:00007A82   311 0001:00007A86   312 0001:00007A8E
+   313 0001:00007A96   315 0001:00007AAA   316 0001:00007AD2   317 0001:00007AFD
+   318 0001:00007B25   319 0001:00007B60   320 0001:00007B9B   313 0001:00007B9C
+   321 0001:00007BA3   323 0001:00007BAF   324 0001:00007BBA   327 0001:00007BC3
+   328 0001:00007BD1   329 0001:00007BEB   330 0001:00007BF5   331 0001:00007C04
+   335 0001:00007C2E   336 0001:00007C48   339 0001:00007C73   343 0001:00007CE8
+   344 0001:00007D08   345 0001:00007D34   351 0001:00007D44   352 0001:00007D52
+   353 0001:00007D5D   354 0001:00007D6D   355 0001:00007D79   356 0001:00007D7E
+   357 0001:00007D8C   363 0001:00007D94   364 0001:00007DA8   365 0001:00007DB3
+   366 0001:00007DC3   367 0001:00007DD0   368 0001:00007DD5   369 0001:00007E06
+   370 0001:00007E14   376 0001:00007E20   377 0001:00007E2E   378 0001:00007E48
+   379 0001:00007E53   380 0001:00007E63   381 0001:00007E70   382 0001:00007E75
+   383 0001:00007E87   384 0001:00007E95   435 0001:00007EBC   436 0001:00007EC4
+   440 0001:00007EC8   441 0001:00007ED1   445 0001:00007ED4   446 0001:00007ED9
+   449 0001:00007EDC   450 0001:00007EE5   451 0001:00007F09   463 0001:00007F10
+   464 0001:00007F1D   469 0001:00007F29   471 0001:00007F3E   472 0001:00007F4A
+   477 0001:00007F4E   480 0001:00007F53   485 0001:00007F63   488 0001:00007F84
+   489 0001:00007F95   490 0001:00007FB6   493 0001:00007FB8   494 0001:00007FD8
+   495 0001:00008004   505 0001:00008008   507 0001:00008029   508 0001:00008037
+   505 0001:00008040   510 0001:00008048   512 0001:00008082   497 0001:00008088
+   498 0001:000080A2   499 0001:000080A9   500 0001:000080B8   501 0001:000080C9
+   502 0001:000080D3   504 0001:000080EF
+
+Line numbers for ORDtTm(ORDtTm.pas) segment .text
+
+   227 0001:00008D38   228 0001:00008D3C   229 0001:00008D40   230 0001:00008D61
+   233 0001:00008D64   234 0001:00008D7D   235 0001:00008D86   236 0001:00008DB3
+   237 0001:00008DE8   240 0001:00008E08   241 0001:00008E0E   242 0001:00008E17
+   243 0001:00008E2E   244 0001:00008E3A   247 0001:00008E40   248 0001:00008E46
+   249 0001:00008E68   250 0001:00008E80   261 0001:00008E88   262 0001:00008EA4
+   263 0001:00008EAD   264 0001:00008EE7   265 0001:00008F0F   272 0001:00008F30
+   273 0001:00008F52   274 0001:00008F83   275 0001:00008FA6   276 0001:00008FBB
+   277 0001:00008FD6   278 0001:00008FEE   279 0001:0000901A   280 0001:00009061
+   285 0001:000090A4   286 0001:000090B0   287 0001:000090B8   288 0001:000090CB
+   289 0001:000090D5   290 0001:000090E0   293 0001:000090E4   294 0001:00009103
+   295 0001:00009136   296 0001:0000915D   300 0001:0000917C   301 0001:0000918B
+   302 0001:0000919B   306 0001:000091A4   307 0001:000091B3   308 0001:000091C3
+   311 0001:000091CC   312 0001:000091D8   313 0001:000091E6   316 0001:000091EC
+   317 0001:000091F8   318 0001:00009206   322 0001:0000920C   323 0001:0000921B
+   324 0001:0000922B   328 0001:00009234   329 0001:00009243   330 0001:00009253
+   333 0001:0000925C   334 0001:00009268   335 0001:00009282   336 0001:00009296
+   337 0001:000092AA   338 0001:000092BA   341 0001:000092C0   342 0001:000092CC
+   344 0001:000092D8   345 0001:000092EC   347 0001:00009300   348 0001:0000930A
+   351 0001:00009310   352 0001:0000931C   353 0001:00009344   354 0001:0000934F
+   360 0001:00009354   361 0001:00009373   372 0001:0000938C   374 0001:000093A0
+   375 0001:000093BE   380 0001:000093C8   382 0001:00009403   383 0001:0000942A
+   386 0001:00009444   387 0001:00009463   389 0001:0000947D   390 0001:000094A7
+   391 0001:000094CE   394 0001:000094E4   396 0001:000094F0   397 0001:00009503
+   402 0001:00009518   403 0001:00009537   405 0001:00009560   406 0001:00009571
+   408 0001:00009576   410 0001:00009597   411 0001:000095B3   412 0001:000095FC
+   413 0001:00009606   415 0001:00009617   416 0001:0000964E   419 0001:000096EC
+   420 0001:000096F8   421 0001:00009705   426 0001:0000970C   427 0001:00009727
+   428 0001:00009734   429 0001:0000973D   430 0001:0000974B   431 0001:00009772
+   438 0001:00009778   439 0001:00009795   440 0001:000097AC   443 0001:000097BA
+   444 0001:000097DA   446 0001:000097F0   447 0001:00009817   448 0001:0000982A
+   450 0001:00009837   451 0001:00009847   452 0001:00009857   453 0001:00009867
+   454 0001:00009877   455 0001:00009887   456 0001:000098BE   457 0001:000098F5
+   458 0001:0000990F   460 0001:0000993E   461 0001:0000994E   463 0001:00009958
+   464 0001:00009973   465 0001:000099B6   466 0001:000099C2   467 0001:000099D4
+   471 0001:00009A00   473 0001:00009A45   476 0001:00009A6C   477 0001:00009A75
+   478 0001:00009A8A   481 0001:00009A90   482 0001:00009A9C   483 0001:00009AA5
+   485 0001:00009AAE   486 0001:00009AB5   488 0001:00009AC7   491 0001:00009ACC
+   492 0001:00009AD3   493 0001:00009AF3   496 0001:00009AFC   497 0001:00009B08
+   498 0001:00009B11   499 0001:00009B21   505 0001:00009B28   506 0001:00009B34
+   507 0001:00009B3F   508 0001:00009B53   514 0001:00009B58   515 0001:00009B73
+   516 0001:00009B80   517 0001:00009B98   518 0001:00009BA9   519 0001:00009BBC
+   520 0001:00009BCF   521 0001:00009BEB   522 0001:00009BFB   523 0001:00009C19
+   524 0001:00009C29   525 0001:00009C56   531 0001:00009C90   532 0001:00009C9D
+   533 0001:00009CA8   535 0001:00009CB4   536 0001:00009CC0   538 0001:00009CC7
+   539 0001:00009CCE   541 0001:00009D22   542 0001:00009D2A   548 0001:00009D30
+   549 0001:00009D3C   551 0001:00009D4E   552 0001:00009D5A   553 0001:00009D72
+   555 0001:00009D78   556 0001:00009D93   557 0001:00009D9E   561 0001:00009DAA
+   562 0001:00009DBD   563 0001:00009DD2   566 0001:00009DDC   572 0001:00009E00
+   573 0001:00009E22   574 0001:00009E39   576 0001:00009E50   577 0001:00009E67
+   579 0001:00009E9D   580 0001:00009EAE   581 0001:00009EC5   582 0001:00009ED6
+   584 0001:00009EE2   585 0001:00009EF4   586 0001:00009EFC   588 0001:00009F18
+   589 0001:00009F20   590 0001:00009F35   591 0001:00009F62   594 0001:00009F78
+   595 0001:00009F7F   596 0001:00009F87   597 0001:00009F91   600 0001:00009F94
+   601 0001:00009FA4   602 0001:00009FB2   603 0001:00009FBB   604 0001:00009FCD
+   606 0001:00009FD5   609 0001:00009FDC   610 0001:00009FFB   611 0001:0000A003
+   612 0001:0000A031   613 0001:0000A06B   616 0001:0000A070   617 0001:0000A08F
+   618 0001:0000A097   619 0001:0000A0B5   620 0001:0000A0E9   622 0001:0000A100
+   623 0001:0000A11D   625 0001:0000A17E   628 0001:0000A194   629 0001:0000A1A0
+   630 0001:0000A1AC   632 0001:0000A1B8   633 0001:0000A1C2   634 0001:0000A1DA
+   636 0001:0000A201   637 0001:0000A209   640 0001:0000A240   641 0001:0000A247
+   642 0001:0000A25C   643 0001:0000A264   646 0001:0000A26C   647 0001:0000A278
+   648 0001:0000A284   650 0001:0000A290   651 0001:0000A2B7   653 0001:0000A2C1
+   659 0001:0000A2F8   660 0001:0000A301   661 0001:0000A31A   662 0001:0000A32F
+   663 0001:0000A348   664 0001:0000A34D   665 0001:0000A352   666 0001:0000A36B
+   669 0001:0000A370   670 0001:0000A38A   672 0001:0000A3A2   673 0001:0000A3D0
+   674 0001:0000A3F9   676 0001:0000A446   679 0001:0000A480   680 0001:0000A4A2
+   681 0001:0000A4AA   683 0001:0000A4C5   684 0001:0000A4E2   685 0001:0000A503
+   686 0001:0000A535   688 0001:0000A589   693 0001:0000A5E4   694 0001:0000A603
+   695 0001:0000A60E   696 0001:0000A624   697 0001:0000A667   700 0001:0000A66C
+   701 0001:0000A678   702 0001:0000A684   703 0001:0000A69C   704 0001:0000A6AC
+   705 0001:0000A6BC   706 0001:0000A6CC   707 0001:0000A6DC   708 0001:0000A6F0
+   710 0001:0000A6FE   711 0001:0000A70F   714 0001:0000A714   715 0001:0000A720
+   716 0001:0000A731   719 0001:0000A738   720 0001:0000A741   721 0001:0000A77E
+   727 0001:0000A784   728 0001:0000A790   729 0001:0000A79C   732 0001:0000A7A3
+   733 0001:0000A7BC   735 0001:0000A7DC   758 0001:0000A964   759 0001:0000A970
+   761 0001:0000A97E   762 0001:0000A98A   763 0001:0000A990   765 0001:0000A99C
+   767 0001:0000A9A6   772 0001:0000A9AC   773 0001:0000A9C7   774 0001:0000A9D4
+   775 0001:0000A9E8   776 0001:0000A9F2   777 0001:0000A9FC   778 0001:0000AA06
+   779 0001:0000AA10   780 0001:0000AA41   783 0001:0000AA4C   784 0001:0000AA5D
+   785 0001:0000AA6C   786 0001:0000AA7B   787 0001:0000AA8A   788 0001:0000AA99
+   789 0001:0000AAA8   790 0001:0000AAC4   793 0001:0000AAC8   794 0001:0000AAD1
+   795 0001:0000AAF6   801 0001:0000AB0C   802 0001:0000AB2B   803 0001:0000AB30
+   805 0001:0000AB40   808 0001:0000AB66   809 0001:0000AB7E   811 0001:0000AB99
+   806 0001:0000ABCC   814 0001:0000ABE7   813 0001:0000AC1B   815 0001:0000AC34
+   816 0001:0000AC3A   817 0001:0000AC5C   818 0001:0000AC74   820 0001:0000ACA9
+   826 0001:0000ACC8   827 0001:0000ACE8   828 0001:0000ACED   830 0001:0000ACFD
+   831 0001:0000AD11   832 0001:0000AD2A   834 0001:0000AD31   835 0001:0000AD3D
+   837 0001:0000AD6C   838 0001:0000AD99   840 0001:0000AD9F   841 0001:0000ADD1
+   842 0001:0000ADD9   844 0001:0000ADDF   832 0001:0000ADE2   845 0001:0000ADEC
+   846 0001:0000ADF2   848 0001:0000AE1D   854 0001:0000AE30   855 0001:0000AE39
+   857 0001:0000AE49   858 0001:0000AE53   859 0001:0000AE61   860 0001:0000AE73
+   861 0001:0000AE81   862 0001:0000AE99   863 0001:0000AEA5   864 0001:0000AEB0
+   865 0001:0000AEB5   867 0001:0000AEC5   869 0001:0000AED5   870 0001:0000AEED
+   871 0001:0000AEFE   872 0001:0000AF0E   873 0001:0000AF1E   874 0001:0000AF2E
+   875 0001:0000AF41   877 0001:0000AF5D   878 0001:0000AF71   879 0001:0000AF88
+   880 0001:0000AF95   881 0001:0000AFA6   882 0001:0000AFB7   883 0001:0000AFCE
+   885 0001:0000AFE5   887 0001:0000AFF5   889 0001:0000B001   890 0001:0000B019
+   891 0001:0000B02A   892 0001:0000B03A   893 0001:0000B04A   894 0001:0000B066
+   896 0001:0000B079   897 0001:0000B08D   898 0001:0000B0A4   899 0001:0000B0B1
+   900 0001:0000B0C2   901 0001:0000B0D3   902 0001:0000B0E4   903 0001:0000B0FB
+   906 0001:0000B114   910 0001:0000B125   911 0001:0000B134   913 0001:0000B143
+   915 0001:0000B153   916 0001:0000B16B   917 0001:0000B17C   918 0001:0000B18C
+   919 0001:0000B19F   920 0001:0000B1BB   922 0001:0000B1D7   923 0001:0000B1EB
+   924 0001:0000B202   925 0001:0000B20D   926 0001:0000B21E   927 0001:0000B22F
+   928 0001:0000B240   929 0001:0000B24D   931 0001:0000B259   932 0001:0000B271
+   933 0001:0000B282   934 0001:0000B292   935 0001:0000B2A4   936 0001:0000B2B6
+   938 0001:0000B2D2   939 0001:0000B2E2   940 0001:0000B2F2   941 0001:0000B303
+   942 0001:0000B314   943 0001:0000B344   944 0001:0000B364   946 0001:0000B374
+   948 0001:0000B380   949 0001:0000B398   950 0001:0000B3A9   951 0001:0000B3B9
+   952 0001:0000B3D7   954 0001:0000B3F3   955 0001:0000B402   956 0001:0000B410
+   957 0001:0000B421   958 0001:0000B432   959 0001:0000B443   962 0001:0000B45C
+   963 0001:0000B46B   964 0001:0000B480   965 0001:0000B48B   966 0001:0000B493
+   967 0001:0000B49D   969 0001:0000B4B2   972 0001:0000B4DB   975 0001:0000B4ED
+   978 0001:0000B544   979 0001:0000B550   980 0001:0000B565   981 0001:0000B56A
+   982 0001:0000B586   983 0001:0000B58B   985 0001:0000B599   986 0001:0000B5A5
+   988 0001:0000B5B1   989 0001:0000B5D0   990 0001:0000B5DA   992 0001:0000B5F1
+   994 0001:0000B5F9   997 0001:0000B600   998 0001:0000B60C  1000 0001:0000B61A
+  1001 0001:0000B626  1003 0001:0000B62E  1006 0001:0000B634  1007 0001:0000B640
+  1008 0001:0000B652  1009 0001:0000B656  1011 0001:0000B664  1012 0001:0000B670
+  1013 0001:0000B681  1015 0001:0000B689  1018 0001:0000B690  1019 0001:0000B69C
+  1021 0001:0000B6AA  1022 0001:0000B6B6  1024 0001:0000B6BC  1025 0001:0000B6C6
+  1026 0001:0000B6D1  1028 0001:0000B6DC  1030 0001:0000B6E4  1033 0001:0000B6E8
+  1034 0001:0000B6F4  1035 0001:0000B709  1036 0001:0000B70E  1037 0001:0000B71A
+  1038 0001:0000B71F  1040 0001:0000B72D  1041 0001:0000B739  1042 0001:0000B745
+  1043 0001:0000B75C  1044 0001:0000B764  1046 0001:0000B76C  1049 0001:0000B770
+  1050 0001:0000B77C  1052 0001:0000B78A  1053 0001:0000B796  1055 0001:0000B79E
+  1058 0001:0000B7A4  1059 0001:0000B7C3  1061 0001:0000B7D5  1062 0001:0000B7E1
+  1063 0001:0000B7FF  1064 0001:0000B80A  1066 0001:0000B83A  1067 0001:0000B844
+  1068 0001:0000B852  1070 0001:0000B85E  1071 0001:0000B871  1075 0001:0000B885
+  1076 0001:0000B8A7  1079 0001:0000B8E4  1082 0001:0000B8F6  1083 0001:0000B902
+  1084 0001:0000B90C  1085 0001:0000B914  1087 0001:0000B939  1090 0001:0000B950
+  1091 0001:0000B95C  1092 0001:0000B973  1093 0001:0000B97F  1094 0001:0000B98A
+  1095 0001:0000B992  1096 0001:0000B99A  1099 0001:0000B9A0  1100 0001:0000B9AC
+  1101 0001:0000B9C3  1102 0001:0000B9CF  1103 0001:0000B9DA  1104 0001:0000B9E4
+  1105 0001:0000B9EC  1106 0001:0000B9F4  1109 0001:0000B9F8  1110 0001:0000BA17
+  1111 0001:0000BA27  1112 0001:0000BA31  1113 0001:0000BA3F  1114 0001:0000BA63
+  1115 0001:0000BA81  1116 0001:0000BA8C  1117 0001:0000BA98  1119 0001:0000BAAC
+  1120 0001:0000BADC  1121 0001:0000BAE8  1122 0001:0000BAF2  1123 0001:0000BAFA
+  1125 0001:0000BB0F  1127 0001:0000BB3E  1133 0001:0000BB44  1134 0001:0000BB4D
+  1136 0001:0000BB6D  1137 0001:0000BB88  1138 0001:0000BB94  1139 0001:0000BB9E
+  1141 0001:0000BBC2  1142 0001:0000BBEE  1143 0001:0000BC08  1144 0001:0000BC16
+  1147 0001:0000BC21  1150 0001:0000BC28  1151 0001:0000BC2F  1152 0001:0000BC37
+  1153 0001:0000BC43  1154 0001:0000BC4B  1157 0001:0000BC50  1158 0001:0000BC57
+  1159 0001:0000BC63  1160 0001:0000BC6B  1161 0001:0000BC73  1169 0001:0000BC78
+  1170 0001:0000BC84  1171 0001:0000BC96  1172 0001:0000BCA4  1173 0001:0000BCB0
+  1174 0001:0000BCBC  1175 0001:0000BCC8  1176 0001:0000BCE2  1177 0001:0000BCFB
+  1179 0001:0000BD0C  1181 0001:0000BD35  1182 0001:0000BD42  1185 0001:0000BD4F
+  1186 0001:0000BD5B  1187 0001:0000BD68  1188 0001:0000BD74  1189 0001:0000BD81
+  1190 0001:0000BD98  1191 0001:0000BDA2  1192 0001:0000BDAC  1194 0001:0000BDB8
+  1195 0001:0000BDC3  1196 0001:0000BDCE  1197 0001:0000BDD9  1201 0001:0000BDF2
+  1202 0001:0000BDFD  1203 0001:0000BE08  1206 0001:0000BE20  1208 0001:0000BE30
+  1215 0001:0000BE34  1216 0001:0000BE57  1217 0001:0000BE67  1218 0001:0000BE71
+  1219 0001:0000BE7F  1221 0001:0000BE93  1222 0001:0000BEAD  1223 0001:0000BEBA
+  1224 0001:0000BEE5  1227 0001:0000BEED  1228 0001:0000BEFA  1229 0001:0000BF18
+  1230 0001:0000BF23  1231 0001:0000BF2F  1233 0001:0000BF44  1234 0001:0000BF66
+  1235 0001:0000BF72  1236 0001:0000BF7C  1237 0001:0000BF84  1239 0001:0000BF99
+  1241 0001:0000BFC8  1244 0001:0000BFE0  1245 0001:0000C006  1247 0001:0000C031
+  1248 0001:0000C05C  1249 0001:0000C062  1250 0001:0000C078  1252 0001:0000C0AD
+  1255 0001:0000C0D0  1256 0001:0000C0D9  1257 0001:0000C0E8  1259 0001:0000C0F2
+  1260 0001:0000C14B  1266 0001:0000C150  1267 0001:0000C16C  1269 0001:0000C17A
+  1270 0001:0000C184  1274 0001:0000C193  1275 0001:0000C1AC  1277 0001:0000C1C4
+  1278 0001:0000C1D2  1279 0001:0000C1E0  1280 0001:0000C1EE  1281 0001:0000C1FC
+  1282 0001:0000C214  1283 0001:0000C21F  1284 0001:0000C229  1286 0001:0000C251
+  1289 0001:0000C25C  1290 0001:0000C27E  1291 0001:0000C286  1293 0001:0000C296
+  1295 0001:0000C2A6  1296 0001:0000C2B2  1298 0001:0000C2DB  1299 0001:0000C302
+  1300 0001:0000C30E  1301 0001:0000C339  1303 0001:0000C349  1305 0001:0000C38A
+  1308 0001:0000C3A8  1309 0001:0000C3B0  1310 0001:0000C3BD  1311 0001:0000C3CF
+  1314 0001:0000C3D4  1315 0001:0000C3E0  1316 0001:0000C3E8  1319 0001:0000C3EC
+  1320 0001:0000C3F8  1321 0001:0000C403  1322 0001:0000C40B  1328 0001:0000C410
+  1329 0001:0000C430  1330 0001:0000C438  1331 0001:0000C44F  1333 0001:0000C47D
+  1334 0001:0000C489  1336 0001:0000C498  1337 0001:0000C4A5  1338 0001:0000C4CA
+  1340 0001:0000C4D9  1341 0001:0000C4FE  1343 0001:0000C510  1344 0001:0000C520
+  1346 0001:0000C550  1351 0001:0000C5CC  1352 0001:0000C5D2  1353 0001:0000C5FC
+  1356 0001:0000C610  1357 0001:0000C61C  1359 0001:0000C62A  1360 0001:0000C636
+  1362 0001:0000C63E  1364 0001:0000C674  1365 0001:0000C680  1367 0001:0000C68E
+
+Line numbers for ORDtTmRng(ORDtTmRng.pas) segment .text
+
+    51 0001:0000CB24    52 0001:0000CB39    53 0001:0000CB42    54 0001:0000CB4F
+    55 0001:0000CB5C    56 0001:0000CB69    57 0001:0000CB8D    62 0001:0000CBF4
+    63 0001:0000CC12    64 0001:0000CC29    67 0001:0000CC37    68 0001:0000CC48
+    69 0001:0000CC59    71 0001:0000CC67    72 0001:0000CC7B    74 0001:0000CC9D
+    75 0001:0000CCAB    76 0001:0000CCBF    78 0001:0000CCE1    79 0001:0000CD58
+    80 0001:0000CD68    82 0001:0000CD72    83 0001:0000CD8E    84 0001:0000CDAA
+    85 0001:0000CDBC    86 0001:0000CDCE    87 0001:0000CDEA    91 0001:0000CE13
+    93 0001:0000CE62    96 0001:0000CE6C    97 0001:0000CE72    98 0001:0000CE77
+   100 0001:0000CE7B   101 0001:0000CE7F   102 0001:0000CE95   103 0001:0000CEAB
+   105 0001:0000CEC7   108 0001:0000CEF8   109 0001:0000CEFE   110 0001:0000CF03
+   112 0001:0000CF07   113 0001:0000CF23   115 0001:0000CF2C   118 0001:0000CF5C
+   119 0001:0000CF72   120 0001:0000CF7E   121 0001:0000CFB7   124 0001:0000CFC0
+   125 0001:0000CFD6   126 0001:0000CFE2   127 0001:0000D01B   130 0001:0000D024
+   131 0001:0000D02D   132 0001:0000D037   133 0001:0000D03F   136 0001:0000D044
+   137 0001:0000D04D   138 0001:0000D057   139 0001:0000D05F   147 0001:0000D064
+   148 0001:0000D07A   149 0001:0000D088   151 0001:0000D08E   152 0001:0000D0AB
+   154 0001:0000D0AD   155 0001:0000D0BB   157 0001:0000D0C1   158 0001:0000D0DE
+   160 0001:0000D0E0   161 0001:0000D107   165 0001:0000D130   166 0001:0000D13A
+   170 0001:0000D13C   171 0001:0000D140   172 0001:0000D157   176 0001:0000D16C
+   177 0001:0000D173   178 0001:0000D189   179 0001:0000D192   180 0001:0000D1AE
+   181 0001:0000D1BB   182 0001:0000D1D1   183 0001:0000D1DA   184 0001:0000D1F6
+   185 0001:0000D205   186 0001:0000D20C   189 0001:0000D210   190 0001:0000D216
+   191 0001:0000D221   192 0001:0000D22C   194 0001:0000D260   194 0001:0000D267
+
+Line numbers for ORDateLib60(C:\cprs\OR_3_215v26\CPRS-Lib\ORDateLib60.dpk) segment .text
+
+    45 0001:0000D5D0
+
+Bound resource files
+
+ORDtTm.RES
+ORDtTm.DFM
+ORDtTmRng.DFM
+ORDateLib60.res
+ORDtTm.dcr
+ORDtTmRng.dcr
+ORDateLib60.drf
+
+
+Program entry point at 0001:0000D5D0
Index: cprs/branches/HealthSevak-CPRS/Packages/VA2006.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/VA2006.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/VA2006.map	(revision 1676)
@@ -0,0 +1,205 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 00000FB8H .text                   CODE
+ 0002:00402000 000000DCH .itext                  ICODE
+ 0003:00403000 0000002CH .data                   DATA
+ 0004:00404000 00000018H .bss                    BSS
+ 0005:00000000 00000000H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 000000E6 C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:000000E8 000001C3 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:000002AC 00000016 C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:000002C4 00000054 C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:00000318 00000046 C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:00000360 00000006 C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:00000368 00000006 C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000370 00000006 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:00000378 00000036 C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:000003B0 00000006 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:000003B8 00000006 C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:000003C0 0000017E C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:00000540 00000006 C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:00000548 00000006 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00000550 00000006 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:00000558 00000006 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:00000560 00000006 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:00000568 00000006 C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:00000570 00000006 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:00000578 00000006 C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:00000580 00000006 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00000588 00000006 C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:00000590 00000006 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:00000598 00000006 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:000005A0 00000006 C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:000005A8 00000086 C=CODE     S=.text    G=(none)   M=Grids    ACBP=A9
+ 0001:00000630 000007AE C=CODE     S=.text    G=(none)   M=Vawrgrid ACBP=A9
+ 0001:00000DE0 000001D7 C=CODE     S=.text    G=(none)   M=.VA2006  ACBP=A9
+ 0002:00000000 00000006 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000008 00000006 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:00000010 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:00000024 00000006 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:0000002C 00000006 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000034 00000006 C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:0000003C 00000006 C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:00000044 00000006 C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:0000004C 00000006 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:00000054 00000006 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:0000005C 00000006 C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:00000064 00000006 C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:0000006C 00000006 C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000074 00000006 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:0000007C 00000006 C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:00000084 00000006 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:0000008C 00000006 C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000094 00000006 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:0000009C 00000006 C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:000000A4 00000006 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:000000AC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000000B4 00000006 C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:000000BC 00000006 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:000000C4 00000006 C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:000000CC 00000008 C=ICODE    S=.itext   G=(none)   M=Vawrgrid ACBP=A9
+ 0002:000000D4 00000005 C=ICODE    S=.itext   G=(none)   M=.VA2006  ACBP=A9
+ 0003:00000000 0000002C C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0004:00000000 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:0000000C 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00000014 00000004 C=BSS      S=.bss     G=DGROUP   M=Vawrgrid ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0002:000000D4       .VA2006..VA2006
+ 0001:00000F98       .VA2006.@GetPackageInfoTable
+ 0001:00000FA0       .VA2006.@PackageLoad
+ 0001:00000FAC       .VA2006.@PackageUnload
+ 0001:00000230       SysInit.@InitPkg
+ 0001:00000294       SysInit.@PackageLoad
+ 0001:000002A0       SysInit.@PackageUnload
+ 0001:00000120       SysInit.AllocTlsBuffer
+ 0001:000001DC       SysInit.ExitProcessTLS
+ 0001:000001A4       SysInit.ExitThreadTLS
+ 0001:000000E8       SysInit.FreeLibrary
+ 0001:0000012C       SysInit.GetTlsSize
+ 0004:00000004       SysInit.HInstance
+ 0001:00000200       SysInit.InitializeModule
+ 0001:00000178       SysInit.InitProcessTLS
+ 0001:00000134       SysInit.InitThreadTLS
+ 0001:000000F0       SysInit.LocalAlloc
+ 0001:000000F8       SysInit.LocalFree
+ 0003:00000004       SysInit.Module
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0001:00000100       SysInit.TlsAlloc
+ 0004:00000008       SysInit.tlsBuffer
+ 0001:00000108       SysInit.TlsFree
+ 0001:00000110       SysInit.TlsGetValue
+ 0003:00000000       SysInit.TlsIndex
+ 0005:00000000       SysInit.TlsLast
+ 0003:0000001C       SysInit.TlsProc
+ 0001:00000118       SysInit.TlsSetValue
+ 0001:0000020C       SysInit.UninitializeModule
+ 0004:00000014       Vawrgrid..2
+ 0001:00000630       Vawrgrid..TVAWrapGrid
+ 0001:00000DB0       Vawrgrid.Finalization
+ 0001:00000D80       Vawrgrid.Register
+ 0001:0000082C       Vawrgrid.SetCol
+ 0001:000007E0       Vawrgrid.TVAWrapGrid.Create
+ 0001:00000ABC       Vawrgrid.TVAWrapGrid.DrawCell
+ 0001:000008A0       Vawrgrid.TVAWrapGrid.SetHiddenCols
+ 0002:000000CC       Vawrgrid.Vawrgrid
+ 0004:0000000C       Windows..3
+ 0001:000002CC       Windows.DrawText
+ 0001:000002D4       Windows.Finalization
+ 0001:000002C4       Windows.FreeLibrary
+ 0004:00000010       Windows.HtmlHelpModule
+ 0002:00000010       Windows.Windows
+
+
+  Address             Publics by Value
+
+ 0001:000000E8       SysInit.FreeLibrary
+ 0001:000000F0       SysInit.LocalAlloc
+ 0001:000000F8       SysInit.LocalFree
+ 0001:00000100       SysInit.TlsAlloc
+ 0001:00000108       SysInit.TlsFree
+ 0001:00000110       SysInit.TlsGetValue
+ 0001:00000118       SysInit.TlsSetValue
+ 0001:00000120       SysInit.AllocTlsBuffer
+ 0001:0000012C       SysInit.GetTlsSize
+ 0001:00000134       SysInit.InitThreadTLS
+ 0001:00000178       SysInit.InitProcessTLS
+ 0001:000001A4       SysInit.ExitThreadTLS
+ 0001:000001DC       SysInit.ExitProcessTLS
+ 0001:00000200       SysInit.InitializeModule
+ 0001:0000020C       SysInit.UninitializeModule
+ 0001:00000230       SysInit.@InitPkg
+ 0001:00000294       SysInit.@PackageLoad
+ 0001:000002A0       SysInit.@PackageUnload
+ 0001:000002C4       Windows.FreeLibrary
+ 0001:000002CC       Windows.DrawText
+ 0001:000002D4       Windows.Finalization
+ 0001:00000630       Vawrgrid..TVAWrapGrid
+ 0001:000007E0       Vawrgrid.TVAWrapGrid.Create
+ 0001:0000082C       Vawrgrid.SetCol
+ 0001:000008A0       Vawrgrid.TVAWrapGrid.SetHiddenCols
+ 0001:00000ABC       Vawrgrid.TVAWrapGrid.DrawCell
+ 0001:00000D80       Vawrgrid.Register
+ 0001:00000DB0       Vawrgrid.Finalization
+ 0001:00000F98       .VA2006.@GetPackageInfoTable
+ 0001:00000FA0       .VA2006.@PackageLoad
+ 0001:00000FAC       .VA2006.@PackageUnload
+ 0002:00000010       Windows.Windows
+ 0002:000000CC       Vawrgrid.Vawrgrid
+ 0002:000000D4       .VA2006..VA2006
+ 0003:00000000       SysInit.TlsIndex
+ 0003:00000004       SysInit.Module
+ 0003:0000001C       SysInit.TlsProc
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0004:00000004       SysInit.HInstance
+ 0004:00000008       SysInit.tlsBuffer
+ 0004:0000000C       Windows..3
+ 0004:00000010       Windows.HtmlHelpModule
+ 0004:00000014       Vawrgrid..2
+ 0005:00000000       SysInit.TlsLast
+
+
+Line numbers for Vawrgrid(Vawrgrid.pas) segment .text
+
+    34 0001:000007E0    36 0001:000007F5    37 0001:000007FE    39 0001:00000807
+    40 0001:0000080E    50 0001:0000082C    51 0001:00000849    52 0001:0000085B
+    53 0001:00000880    54 0001:000008A0    55 0001:000008CD    56 0001:000008DD
+    57 0001:000008EC    58 0001:000008F5    59 0001:000008FA    58 0001:0000092B
+    62 0001:00000930    63 0001:0000095A    64 0001:00000964    60 0001:00000980
+    66 0001:00000991    68 0001:00000997    69 0001:000009A1    70 0001:000009A9
+    72 0001:000009B3    73 0001:000009BD    75 0001:000009EA    76 0001:000009F9
+    78 0001:000009FD    79 0001:00000A16    80 0001:00000A3D    81 0001:00000A5A
+    76 0001:00000A69    84 0001:00000A6D    92 0001:00000ABC    94 0001:00000AEF
+    95 0001:00000B00    98 0001:00000B29    99 0001:00000B47   101 0001:00000B4C
+   103 0001:00000B52   105 0001:00000B70   106 0001:00000B7E   108 0001:00000B92
+   110 0001:00000B98   111 0001:00000BA6   112 0001:00000BB4   115 0001:00000BC4
+   119 0001:00000BEA   120 0001:00000BF7   125 0001:00000C06   126 0001:00000C11
+   127 0001:00000C1C   130 0001:00000C2A   133 0001:00000C34   134 0001:00000C4E
+   137 0001:00000C61   140 0001:00000C80   143 0001:00000C9F   144 0001:00000CA8
+   145 0001:00000CB4   147 0001:00000CC9   149 0001:00000CCF   150 0001:00000CDE
+   152 0001:00000D28   154 0001:00000D30   145 0001:00000D31   156 0001:00000D36
+   158 0001:00000D4A   161 0001:00000D80   164 0001:00000D84   165 0001:00000D9B
+
+Line numbers for Vawrgrid(Vawrgrid.pas) segment .itext
+
+   167 0002:000000CC
+
+Line numbers for .VA2006(C:\cprs\Current\CPRS-Lib\VA2006.dpk) segment .itext
+
+    35 0002:000000D4
+
+Bound resource files
+
+VA2006.res
+VA2006.drf
+
+
+Program entry point at 0002:000000D4
Index: cprs/branches/HealthSevak-CPRS/Packages/VA508Access2006.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/VA508Access2006.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/VA508Access2006.map	(revision 1676)
@@ -0,0 +1,2905 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 00016870H .text                   CODE
+ 0002:00418000 00000320H .itext                  ICODE
+ 0003:00419000 00000350H .data                   DATA
+ 0004:0041A000 00000094H .bss                    BSS
+ 0005:00000000 00000000H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 0000024E C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:00000250 000001C3 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:00000414 000000B6 C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:000004CC 000000C8 C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:00000594 0000000E C=CODE     S=.text    G=(none)   M=DesignIntf ACBP=A9
+ 0001:000005A4 0000027E C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:00000824 00000006 C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:0000082C 00000016 C=CODE     S=.text    G=(none)   M=Contnrs  ACBP=A9
+ 0001:00000844 00000226 C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:00000A6C 0000000E C=CODE     S=.text    G=(none)   M=ActiveX  ACBP=A9
+ 0001:00000A7C 0000003E C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:00000ABC 0000001E C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000ADC 00000006 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:00000AE4 0000002E C=CODE     S=.text    G=(none)   M=ImgList  ACBP=A9
+ 0001:00000B14 0000006E C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:00000B84 00000006 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:00000B8C 00000006 C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:00000B94 00000176 C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:00000D0C 00000006 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:00000D14 00000006 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:00000D1C 00000006 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:00000D24 00000006 C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:00000D2C 00000006 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:00000D34 0000000E C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:00000D44 0000003E C=CODE     S=.text    G=(none)   M=StdCtrls ACBP=A9
+ 0001:00000D84 00000006 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:00000D8C 00000056 C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:00000DE4 00000006 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:00000DEC 0000000E C=CODE     S=.text    G=(none)   M=StrUtils ACBP=A9
+ 0001:00000DFC 00000006 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:00000E04 00000006 C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:00000E0C 00000176 C=CODE     S=.text    G=(none)   M=DesignEditors ACBP=A9
+ 0001:00000F84 00000026 C=CODE     S=.text    G=(none)   M=ToolsAPI ACBP=A9
+ 0001:00000FAC 00000006 C=CODE     S=.text    G=(none)   M=XMLIntf  ACBP=A9
+ 0001:00000FB4 00000006 C=CODE     S=.text    G=(none)   M=xmldom   ACBP=A9
+ 0001:00000FBC 00000006 C=CODE     S=.text    G=(none)   M=msxmldom ACBP=A9
+ 0001:00000FC4 0000001E C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:00000FE4 00000066 C=CODE     S=.text    G=(none)   M=ComCtrls ACBP=A9
+ 0001:0000104C 00000006 C=CODE     S=.text    G=(none)   M=ExtActns ACBP=A9
+ 0001:00001054 00000006 C=CODE     S=.text    G=(none)   M=ExtDlgs  ACBP=A9
+ 0001:0000105C 00000006 C=CODE     S=.text    G=(none)   M=Buttons  ACBP=A9
+ 0001:00001064 00000006 C=CODE     S=.text    G=(none)   M=Mapi     ACBP=A9
+ 0001:0000106C 00000006 C=CODE     S=.text    G=(none)   M=DockForm ACBP=A9
+ 0001:00001074 00000006 C=CODE     S=.text    G=(none)   M=IDEMessages ACBP=A9
+ 0001:0000107C 00000006 C=CODE     S=.text    G=(none)   M=DeskForm ACBP=A9
+ 0001:00001084 00000006 C=CODE     S=.text    G=(none)   M=BaseDock ACBP=A9
+ 0001:0000108C 00000006 C=CODE     S=.text    G=(none)   M=PercentageDockTree ACBP=A9
+ 0001:00001094 00000006 C=CODE     S=.text    G=(none)   M=CaptionedDockTree ACBP=A9
+ 0001:0000109C 00000006 C=CODE     S=.text    G=(none)   M=DockTabSet ACBP=A9
+ 0001:000010A4 00000006 C=CODE     S=.text    G=(none)   M=Tabs     ACBP=A9
+ 0001:000010AC 00000006 C=CODE     S=.text    G=(none)   M=DeskUtil ACBP=A9
+ 0001:000010B4 00000006 C=CODE     S=.text    G=(none)   M=ActnMan  ACBP=A9
+ 0001:000010BC 00000006 C=CODE     S=.text    G=(none)   M=ActnMenus ACBP=A9
+ 0001:000010C4 00000006 C=CODE     S=.text    G=(none)   M=XPStyleActnCtrls ACBP=A9
+ 0001:000010CC 00000006 C=CODE     S=.text    G=(none)   M=Proxies  ACBP=A9
+ 0001:000010D4 0000002E C=CODE     S=.text    G=(none)   M=VAClasses ACBP=A9
+ 0001:00001104 00000066 C=CODE     S=.text    G=(none)   M=VAUtils  ACBP=A9
+ 0001:0000116C 0000004A C=CODE     S=.text    G=(none)   M=VA508AccessibilityConst ACBP=A9
+ 0001:000011B8 00000016 C=CODE     S=.text    G=(none)   M=HRParser ACBP=A9
+ 0001:000011D0 00000006 C=CODE     S=.text    G=(none)   M=HRParserPas ACBP=A9
+ 0001:000011D8 00000006 C=CODE     S=.text    G=(none)   M=OleServer ACBP=A9
+ 0001:000011E0 000002EA C=CODE     S=.text    G=(none)   M=oleacc2  ACBP=A9
+ 0001:000014CC 0000002E C=CODE     S=.text    G=(none)   M=MSAAConstants ACBP=A9
+ 0001:000014FC 0000187F C=CODE     S=.text    G=(none)   M=VA508MSAASupport ACBP=A9
+ 0001:00002D7C 0000000E C=CODE     S=.text    G=(none)   M=DateUtils ACBP=A9
+ 0001:00002D8C 0000088C C=CODE     S=.text    G=(none)   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0001:00003618 0000183D C=CODE     S=.text    G=(none)   M=VA508AccessibilityRouter ACBP=A9
+ 0001:00004E58 000014EA C=CODE     S=.text    G=(none)   M=VA508ImageListLabeler ACBP=A9
+ 0001:00006344 000019B6 C=CODE     S=.text    G=(none)   M=VA508Classes ACBP=A9
+ 0001:00007CFC 00000016 C=CODE     S=.text    G=(none)   M=CheckLst ACBP=A9
+ 0001:00007D14 00000006 C=CODE     S=.text    G=(none)   M=DB       ACBP=A9
+ 0001:00007D1C 00000006 C=CODE     S=.text    G=(none)   M=WideStrings ACBP=A9
+ 0001:00007D24 00000006 C=CODE     S=.text    G=(none)   M=FMTBcd   ACBP=A9
+ 0001:00007D2C 00000006 C=CODE     S=.text    G=(none)   M=SqlTimSt ACBP=A9
+ 0001:00007D34 00000006 C=CODE     S=.text    G=(none)   M=DBCtrls  ACBP=A9
+ 0001:00007D3C 00000006 C=CODE     S=.text    G=(none)   M=DBPWDlg  ACBP=A9
+ 0001:00007D44 00000006 C=CODE     S=.text    G=(none)   M=DBLogDlg ACBP=A9
+ 0001:00007D4C 000011AE C=CODE     S=.text    G=(none)   M=VA508DelphiCompatibility ACBP=A9
+ 0001:00008EFC 00006AF6 C=CODE     S=.text    G=(none)   M=VA508AccessibilityManager ACBP=A9
+ 0001:0000F9F4 00000701 C=CODE     S=.text    G=(none)   M=VA508AccessibilityCompileInfo ACBP=A9
+ 0001:000100F8 00000056 C=CODE     S=.text    G=(none)   M=ColnEdit ACBP=A9
+ 0001:00010150 0000000E C=CODE     S=.text    G=(none)   M=ToolWnds ACBP=A9
+ 0001:00010160 00000046 C=CODE     S=.text    G=(none)   M=DesignWindows ACBP=A9
+ 0001:000101A8 00000006 C=CODE     S=.text    G=(none)   M=ComponentDesigner ACBP=A9
+ 0001:000101B0 00000006 C=CODE     S=.text    G=(none)   M=AxCtrls  ACBP=A9
+ 0001:000101B8 00000006 C=CODE     S=.text    G=(none)   M=StFilSys ACBP=A9
+ 0001:000101C0 00000006 C=CODE     S=.text    G=(none)   M=TopLevels ACBP=A9
+ 0001:000101C8 00000006 C=CODE     S=.text    G=(none)   M=TreeIntf ACBP=A9
+ 0001:000101D0 00000006 C=CODE     S=.text    G=(none)   M=VCLEditors ACBP=A9
+ 0001:000101D8 00001A96 C=CODE     S=.text    G=(none)   M=VA508AccessibilityPE ACBP=A9
+ 0001:00011C70 000034C3 C=CODE     S=.text    G=(none)   M=VA508AccessibilityCompiler ACBP=A9
+ 0001:00015134 00001212 C=CODE     S=.text    G=(none)   M=VA508ImageListLabelerPE ACBP=A9
+ 0001:00016348 00000527 C=CODE     S=.text    G=(none)   M=.VA508Access2006 ACBP=A9
+ 0002:00000000 00000006 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000008 00000006 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:00000010 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:00000024 00000006 C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:0000002C 00000006 C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:00000034 00000006 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:0000003C 00000006 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000044 00000006 C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:0000004C 00000006 C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:00000054 00000006 C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:0000005C 00000006 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:00000064 00000006 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:0000006C 00000006 C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000074 00000006 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:0000007C 00000006 C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:00000084 00000006 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:0000008C 00000006 C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000094 00000006 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:0000009C 00000006 C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:000000A4 00000006 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:000000AC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000000B4 00000006 C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:000000BC 00000006 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:000000C4 00000006 C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:000000CC 00000006 C=ICODE    S=.itext   G=(none)   M=DesignEditors ACBP=A9
+ 0002:000000D4 00000006 C=ICODE    S=.itext   G=(none)   M=ToolsAPI ACBP=A9
+ 0002:000000DC 00000006 C=ICODE    S=.itext   G=(none)   M=XMLIntf  ACBP=A9
+ 0002:000000E4 00000006 C=ICODE    S=.itext   G=(none)   M=xmldom   ACBP=A9
+ 0002:000000EC 00000006 C=ICODE    S=.itext   G=(none)   M=msxmldom ACBP=A9
+ 0002:000000F4 00000006 C=ICODE    S=.itext   G=(none)   M=ComObj   ACBP=A9
+ 0002:000000FC 00000006 C=ICODE    S=.itext   G=(none)   M=ComCtrls ACBP=A9
+ 0002:00000104 00000006 C=ICODE    S=.itext   G=(none)   M=ExtActns ACBP=A9
+ 0002:0000010C 00000006 C=ICODE    S=.itext   G=(none)   M=ExtDlgs  ACBP=A9
+ 0002:00000114 00000006 C=ICODE    S=.itext   G=(none)   M=Buttons  ACBP=A9
+ 0002:0000011C 00000006 C=ICODE    S=.itext   G=(none)   M=Mapi     ACBP=A9
+ 0002:00000124 00000006 C=ICODE    S=.itext   G=(none)   M=DockForm ACBP=A9
+ 0002:0000012C 00000006 C=ICODE    S=.itext   G=(none)   M=IDEMessages ACBP=A9
+ 0002:00000134 00000006 C=ICODE    S=.itext   G=(none)   M=DeskForm ACBP=A9
+ 0002:0000013C 00000006 C=ICODE    S=.itext   G=(none)   M=BaseDock ACBP=A9
+ 0002:00000144 00000006 C=ICODE    S=.itext   G=(none)   M=PercentageDockTree ACBP=A9
+ 0002:0000014C 00000006 C=ICODE    S=.itext   G=(none)   M=CaptionedDockTree ACBP=A9
+ 0002:00000154 00000006 C=ICODE    S=.itext   G=(none)   M=DockTabSet ACBP=A9
+ 0002:0000015C 00000006 C=ICODE    S=.itext   G=(none)   M=Tabs     ACBP=A9
+ 0002:00000164 00000006 C=ICODE    S=.itext   G=(none)   M=DeskUtil ACBP=A9
+ 0002:0000016C 00000006 C=ICODE    S=.itext   G=(none)   M=ActnMan  ACBP=A9
+ 0002:00000174 00000006 C=ICODE    S=.itext   G=(none)   M=ActnMenus ACBP=A9
+ 0002:0000017C 00000006 C=ICODE    S=.itext   G=(none)   M=XPStyleActnCtrls ACBP=A9
+ 0002:00000184 00000006 C=ICODE    S=.itext   G=(none)   M=Proxies  ACBP=A9
+ 0002:0000018C 00000006 C=ICODE    S=.itext   G=(none)   M=VAUtils  ACBP=A9
+ 0002:00000194 00000008 C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityConst ACBP=A9
+ 0002:0000019C 00000006 C=ICODE    S=.itext   G=(none)   M=OleServer ACBP=A9
+ 0002:000001A4 00000008 C=ICODE    S=.itext   G=(none)   M=oleacc2  ACBP=A9
+ 0002:000001AC 00000008 C=ICODE    S=.itext   G=(none)   M=MSAAConstants ACBP=A9
+ 0002:000001B4 00000014 C=ICODE    S=.itext   G=(none)   M=VA508MSAASupport ACBP=A9
+ 0002:000001C8 00000008 C=ICODE    S=.itext   G=(none)   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0002:000001D0 00000021 C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityRouter ACBP=A9
+ 0002:000001F4 00000008 C=ICODE    S=.itext   G=(none)   M=VA508ImageListLabeler ACBP=A9
+ 0002:000001FC 00000008 C=ICODE    S=.itext   G=(none)   M=VA508Classes ACBP=A9
+ 0002:00000204 00000006 C=ICODE    S=.itext   G=(none)   M=CheckLst ACBP=A9
+ 0002:0000020C 00000006 C=ICODE    S=.itext   G=(none)   M=DB       ACBP=A9
+ 0002:00000214 00000006 C=ICODE    S=.itext   G=(none)   M=WideStrings ACBP=A9
+ 0002:0000021C 00000006 C=ICODE    S=.itext   G=(none)   M=FMTBcd   ACBP=A9
+ 0002:00000224 00000006 C=ICODE    S=.itext   G=(none)   M=SqlTimSt ACBP=A9
+ 0002:0000022C 00000006 C=ICODE    S=.itext   G=(none)   M=DBCtrls  ACBP=A9
+ 0002:00000234 00000006 C=ICODE    S=.itext   G=(none)   M=DBPWDlg  ACBP=A9
+ 0002:0000023C 00000006 C=ICODE    S=.itext   G=(none)   M=DBLogDlg ACBP=A9
+ 0002:00000244 0000000F C=ICODE    S=.itext   G=(none)   M=VA508DelphiCompatibility ACBP=A9
+ 0002:00000254 00000014 C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityManager ACBP=A9
+ 0002:00000268 0000002F C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityCompileInfo ACBP=A9
+ 0002:00000298 00000006 C=ICODE    S=.itext   G=(none)   M=ColnEdit ACBP=A9
+ 0002:000002A0 00000006 C=ICODE    S=.itext   G=(none)   M=ToolWnds ACBP=A9
+ 0002:000002A8 00000006 C=ICODE    S=.itext   G=(none)   M=ComponentDesigner ACBP=A9
+ 0002:000002B0 00000006 C=ICODE    S=.itext   G=(none)   M=AxCtrls  ACBP=A9
+ 0002:000002B8 00000006 C=ICODE    S=.itext   G=(none)   M=StFilSys ACBP=A9
+ 0002:000002C0 00000006 C=ICODE    S=.itext   G=(none)   M=TopLevels ACBP=A9
+ 0002:000002C8 00000006 C=ICODE    S=.itext   G=(none)   M=TreeIntf ACBP=A9
+ 0002:000002D0 00000006 C=ICODE    S=.itext   G=(none)   M=VCLEditors ACBP=A9
+ 0002:000002D8 00000008 C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityPE ACBP=A9
+ 0002:000002E0 0000002F C=ICODE    S=.itext   G=(none)   M=VA508AccessibilityCompiler ACBP=A9
+ 0002:00000310 00000008 C=ICODE    S=.itext   G=(none)   M=VA508ImageListLabelerPE ACBP=A9
+ 0002:00000318 00000005 C=ICODE    S=.itext   G=(none)   M=.VA508Access2006 ACBP=A9
+ 0003:00000000 00000030 C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0003:00000030 00000070 C=DATA     S=.data    G=DGROUP   M=oleacc2  ACBP=A9
+ 0003:000000A0 00000180 C=DATA     S=.data    G=DGROUP   M=MSAAConstants ACBP=A9
+ 0003:00000220 00000018 C=DATA     S=.data    G=DGROUP   M=VA508MSAASupport ACBP=A9
+ 0003:00000238 00000030 C=DATA     S=.data    G=DGROUP   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0003:00000268 00000024 C=DATA     S=.data    G=DGROUP   M=VA508AccessibilityRouter ACBP=A9
+ 0003:0000028C 00000065 C=DATA     S=.data    G=DGROUP   M=VA508AccessibilityManager ACBP=A9
+ 0003:000002F4 00000004 C=DATA     S=.data    G=DGROUP   M=VA508AccessibilityCompileInfo ACBP=A9
+ 0003:000002F8 00000005 C=DATA     S=.data    G=DGROUP   M=VA508AccessibilityCompiler ACBP=A9
+ 0004:00000000 00000010 C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:00000010 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00000018 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityConst ACBP=A9
+ 0004:0000001C 00000004 C=BSS      S=.bss     G=DGROUP   M=oleacc2  ACBP=A9
+ 0004:00000020 00000004 C=BSS      S=.bss     G=DGROUP   M=MSAAConstants ACBP=A9
+ 0004:00000024 00000018 C=BSS      S=.bss     G=DGROUP   M=VA508MSAASupport ACBP=A9
+ 0004:0000003C 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508ScreenReaderDLLLinker ACBP=A9
+ 0004:00000040 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityRouter ACBP=A9
+ 0004:00000044 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508ImageListLabeler ACBP=A9
+ 0004:00000048 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508Classes ACBP=A9
+ 0004:0000004C 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508DelphiCompatibility ACBP=A9
+ 0004:00000050 00000010 C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityManager ACBP=A9
+ 0004:00000060 00000020 C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityCompileInfo ACBP=A9
+ 0004:00000080 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityPE ACBP=A9
+ 0004:00000084 0000000C C=BSS      S=.bss     G=DGROUP   M=VA508AccessibilityCompiler ACBP=A9
+ 0004:00000090 00000004 C=BSS      S=.bss     G=DGROUP   M=VA508ImageListLabelerPE ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0002:00000318       .VA508Access2006..VA508Access2006
+ 0001:00016850       .VA508Access2006.@GetPackageInfoTable
+ 0001:00016858       .VA508Access2006.@PackageLoad
+ 0001:00016864       .VA508Access2006.@PackageUnload
+ 0004:00000020       MSAAConstants..1
+ 0001:000014CC       MSAAConstants.Finalization
+ 0002:000001AC       MSAAConstants.MSAAConstants
+ 0003:000000C0       MSAAConstants.PROPID_ACC_DESCRIPTION
+ 0003:00000200       MSAAConstants.PROPID_ACC_DESCRIPTIONMAP
+ 0003:00000210       MSAAConstants.PROPID_ACC_DODEFAULTACTION
+ 0003:00000120       MSAAConstants.PROPID_ACC_FOCUS
+ 0003:000000F0       MSAAConstants.PROPID_ACC_HELP
+ 0003:00000110       MSAAConstants.PROPID_ACC_HELPTOPIC
+ 0003:00000100       MSAAConstants.PROPID_ACC_KEYBOARDSHORTCUT
+ 0003:000000A0       MSAAConstants.PROPID_ACC_NAME
+ 0003:00000160       MSAAConstants.PROPID_ACC_NAV_DOWN
+ 0003:000001B0       MSAAConstants.PROPID_ACC_NAV_FIRSTCHILD
+ 0003:000001C0       MSAAConstants.PROPID_ACC_NAV_LASTCHILD
+ 0003:00000170       MSAAConstants.PROPID_ACC_NAV_LEFT
+ 0003:000001A0       MSAAConstants.PROPID_ACC_NAV_NEXT
+ 0003:00000190       MSAAConstants.PROPID_ACC_NAV_PREV
+ 0003:00000180       MSAAConstants.PROPID_ACC_NAV_RIGHT
+ 0003:00000150       MSAAConstants.PROPID_ACC_NAV_UP
+ 0003:00000140       MSAAConstants.PROPID_ACC_PARENT
+ 0003:000000D0       MSAAConstants.PROPID_ACC_ROLE
+ 0003:000001D0       MSAAConstants.PROPID_ACC_ROLEMAP
+ 0003:00000130       MSAAConstants.PROPID_ACC_SELECTION
+ 0003:000000E0       MSAAConstants.PROPID_ACC_STATE
+ 0003:000001F0       MSAAConstants.PROPID_ACC_STATEMAP
+ 0003:000000B0       MSAAConstants.PROPID_ACC_VALUE
+ 0003:000001E0       MSAAConstants.PROPID_ACC_VALUEMAP
+ 0004:0000001C       oleacc2..2
+ 0001:0000132C       oleacc2..CoCAccPropServices
+ 0003:00000090       oleacc2.CLASS_CAccPropServices
+ 0001:000013B8       oleacc2.CoCAccPropServices.Create
+ 0001:0000141C       oleacc2.CoCAccPropServices.CreateRemote
+ 0001:0000149C       oleacc2.Finalization
+ 0003:00000040       oleacc2.IID_IAccessible
+ 0003:00000050       oleacc2.IID_IAccessibleHandler
+ 0003:00000060       oleacc2.IID_IAccIdentity
+ 0003:00000070       oleacc2.IID_IAccPropServer
+ 0003:00000080       oleacc2.IID_IAccPropServices
+ 0003:00000030       oleacc2.LIBID_Accessibility
+ 0002:000001A4       oleacc2.oleacc2
+ 0001:00000398       SysInit.@InitPkg
+ 0001:000003FC       SysInit.@PackageLoad
+ 0001:00000408       SysInit.@PackageUnload
+ 0001:00000288       SysInit.AllocTlsBuffer
+ 0004:00000008       SysInit.DllProc
+ 0001:00000344       SysInit.ExitProcessTLS
+ 0001:0000030C       SysInit.ExitThreadTLS
+ 0001:00000250       SysInit.FreeLibrary
+ 0001:00000294       SysInit.GetTlsSize
+ 0004:00000004       SysInit.HInstance
+ 0001:00000368       SysInit.InitializeModule
+ 0001:000002E0       SysInit.InitProcessTLS
+ 0001:0000029C       SysInit.InitThreadTLS
+ 0001:00000258       SysInit.LocalAlloc
+ 0001:00000260       SysInit.LocalFree
+ 0003:00000008       SysInit.Module
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0003:00000004       SysInit.PtrToNil
+ 0001:00000268       SysInit.TlsAlloc
+ 0004:0000000C       SysInit.tlsBuffer
+ 0001:00000270       SysInit.TlsFree
+ 0001:00000278       SysInit.TlsGetValue
+ 0003:00000000       SysInit.TlsIndex
+ 0005:00000000       SysInit.TlsLast
+ 0003:00000020       SysInit.TlsProc
+ 0001:00000280       SysInit.TlsSetValue
+ 0001:00000374       SysInit.UninitializeModule
+ 0004:00000060       VA508AccessibilityCompileInfo..2
+ 0001:0000F9F4       VA508AccessibilityCompileInfo..TfrmProgress
+ 0001:000100A8       VA508AccessibilityCompileInfo.Finalization
+ 0003:000002F4       VA508AccessibilityCompileInfo.frmProgress
+ 0001:0000FD64       VA508AccessibilityCompileInfo.Hookup
+ 0001:0000FE04       VA508AccessibilityCompileInfo.StartMonitor
+ 0001:0000FE8C       VA508AccessibilityCompileInfo.StopMonitor
+ 0001:00010034       VA508AccessibilityCompileInfo.TfrmProgress.btnReleaseClick
+ 0001:00010064       VA508AccessibilityCompileInfo.TfrmProgress.FormCreate
+ 0004:00000070       VA508AccessibilityCompileInfo.uLastUpdate
+ 0001:0000FEA0       VA508AccessibilityCompileInfo.Update508Monitor
+ 0004:00000064       VA508AccessibilityCompileInfo.uProjectText
+ 0004:00000078       VA508AccessibilityCompileInfo.uStartTime
+ 0004:00000068       VA508AccessibilityCompileInfo.uStopProc
+ 0002:00000268       VA508AccessibilityCompileInfo.VA508AccessibilityCompileInfo
+ 0004:00000084       VA508AccessibilityCompiler..2
+ 0001:00011D88       VA508AccessibilityCompiler..TVA508Compiler
+ 0001:00012B3C       VA508AccessibilityCompiler.Add2Cache
+ 0001:00013C58       VA508AccessibilityCompiler.AttemptAutoFix
+ 0001:00012EAC       VA508AccessibilityCompiler.ClearWarningList
+ 0001:00013BD0       VA508AccessibilityCompiler.CloseEditor
+ 0001:00014694       VA508AccessibilityCompiler.CloseModules
+ 0001:00014CC4       VA508AccessibilityCompiler.CreateResources
+ 0001:00014EC4       VA508AccessibilityCompiler.DestroyResources
+ 0001:000137E8       VA508AccessibilityCompiler.DFMSuccessfullyLoaded
+ 0001:00011F68       VA508AccessibilityCompiler.DLLUnload
+ 0001:0001207C       VA508AccessibilityCompiler.Do508Scan
+ 0001:00013660       VA508AccessibilityCompiler.FileLoaded
+ 0001:000150F4       VA508AccessibilityCompiler.Finalization
+ 0001:00012E00       VA508AccessibilityCompiler.GetComponentName
+ 0001:00012BB0       VA508AccessibilityCompiler.GetDFMFileName
+ 0001:00012F88       VA508AccessibilityCompiler.GetManagerInfo
+ 0001:00011FB4       VA508AccessibilityCompiler.GetPluralStr
+ 0001:00012F20       VA508AccessibilityCompiler.GetWarningList
+ 0001:00014198       VA508AccessibilityCompiler.HandleInheritenceProblems
+ 0001:00011F80       VA508AccessibilityCompiler.HaveMessageServices
+ 0001:00012A98       VA508AccessibilityCompiler.IncCacheIndexes
+ 0001:00014FA8       VA508AccessibilityCompiler.Init
+ 0001:000133EC       VA508AccessibilityCompiler.InitCache
+ 0001:00014148       VA508AccessibilityCompiler.IsFileReadOnly
+ 0001:00014838       VA508AccessibilityCompiler.LoadCacheFile
+ 0001:000124D0       VA508AccessibilityCompiler.MessageOK
+ 0004:0000008C       VA508AccessibilityCompiler.MessageService
+ 0003:000002F8       VA508AccessibilityCompiler.NotifierIndex
+ 0003:000002FC       VA508AccessibilityCompiler.NotifierRegistered
+ 0001:00013B38       VA508AccessibilityCompiler.OpenEditor
+ 0001:00011E20       VA508AccessibilityCompiler.Register
+ 0001:000132D4       VA508AccessibilityCompiler.ReportComponentWarnings
+ 0001:00014B1C       VA508AccessibilityCompiler.SaveCacheFile
+ 0004:00000088       VA508AccessibilityCompiler.SaveDllProc
+ 0001:000138C0       VA508AccessibilityCompiler.ScanForErrors
+ 0001:00013A64       VA508AccessibilityCompiler.ScanFormFiles
+ 0001:00012AF0       VA508AccessibilityCompiler.SetCacheSize
+ 0001:00011FE0       VA508AccessibilityCompiler.ShowErrorMessage
+ 0001:000123B8       VA508AccessibilityCompiler.TVA508Compiler.AfterCompile
+ 0001:000123BC       VA508AccessibilityCompiler.TVA508Compiler.AfterCompile
+ 0001:000123C8       VA508AccessibilityCompiler.TVA508Compiler.AfterCompile
+ 0001:00012388       VA508AccessibilityCompiler.TVA508Compiler.BeforeCompile
+ 0001:000123B4       VA508AccessibilityCompiler.TVA508Compiler.BeforeCompile
+ 0001:000123DC       VA508AccessibilityCompiler.TVA508Compiler.CompileNA
+ 0001:000123F0       VA508AccessibilityCompiler.TVA508Compiler.Create
+ 0001:00012440       VA508AccessibilityCompiler.TVA508Compiler.Destroy
+ 0001:000127D4       VA508AccessibilityCompiler.TVA508Compiler.error
+ 0001:00012990       VA508AccessibilityCompiler.TVA508Compiler.FileNotification
+ 0001:000129D8       VA508AccessibilityCompiler.TVA508Compiler.infoMessage
+ 0001:0001293C       VA508AccessibilityCompiler.TVA508Compiler.msg
+ 0001:00014FFC       VA508AccessibilityCompiler.TVA508Compiler.ScanFor508Errors
+ 0001:00012478       VA508AccessibilityCompiler.TVA508Compiler.startMessages
+ 0001:00012470       VA508AccessibilityCompiler.TVA508Compiler.StopCompile
+ 0001:000125E4       VA508AccessibilityCompiler.TVA508Compiler.stopMessages
+ 0001:00012754       VA508AccessibilityCompiler.TVA508Compiler.UpdateMonitor
+ 0001:00012888       VA508AccessibilityCompiler.TVA508Compiler.warning
+ 0001:00011ECC       VA508AccessibilityCompiler.Unregister
+ 0002:000002E0       VA508AccessibilityCompiler.VA508AccessibilityCompiler
+ 0001:00012D60       VA508AccessibilityCompiler.ValidateDFM
+ 0001:00012C3C       VA508AccessibilityCompiler.ValidObjectLine
+ 0004:00000018       VA508AccessibilityConst..1
+ 0001:00001188       VA508AccessibilityConst.Finalization
+ 0002:00000194       VA508AccessibilityConst.VA508AccessibilityConst
+ 0004:00000050       VA508AccessibilityManager..21
+ 0001:0000BD94       VA508AccessibilityManager..TAlternateHandleData
+ 0001:00009FCC       VA508AccessibilityManager..TComponentHelper
+ 0001:0000A0F8       VA508AccessibilityManager..TDFMData
+ 0001:0000A178       VA508AccessibilityManager..TMSAAData
+ 0001:00009134       VA508AccessibilityManager..TVA508AccessibilityCollection
+ 0001:00008F6C       VA508AccessibilityManager..TVA508AccessibilityItem
+ 0001:0000921C       VA508AccessibilityManager..TVA508AccessibilityManager
+ 0001:000098D8       VA508AccessibilityManager..TVA508ChainedLabel
+ 0001:00009E94       VA508AccessibilityManager..TVA508ComplexComponentManager
+ 0001:00009408       VA508AccessibilityManager..TVA508ComponentAccessibility
+ 0001:000097DC       VA508AccessibilityManager..TVA508ComponentManager
+ 0001:00009D90       VA508AccessibilityManager..TVA508ManagedComponentClass
+ 0001:00009C94       VA508AccessibilityManager..TVA508SilentComponent
+ 0001:00009A10       VA508AccessibilityManager..TVA508StaticText
+ 0001:0000A07C       VA508AccessibilityManager..TVAGlobalComponentRegistry
+ 0001:0000C58C       VA508AccessibilityManager.AddControlType
+ 0001:0000AE68       VA508AccessibilityManager.AddLabels
+ 0003:000002DC       VA508AccessibilityManager.AltHandleClasses
+ 0001:0000ACA4       VA508AccessibilityManager.BasicComponentCheck
+ 0001:0000CDA8       VA508AccessibilityManager.CallWindProcHookProc
+ 0003:000002EC       VA508AccessibilityManager.CanAssignFocus
+ 0003:000002F0       VA508AccessibilityManager.CanCheckEvent
+ 0001:0000D4D8       VA508AccessibilityManager.CheckComplexClasses
+ 0001:0000D430       VA508AccessibilityManager.CheckManagedClasses
+ 0003:000002E4       VA508AccessibilityManager.ComplexClasses
+ 0003:0000028C       VA508AccessibilityManager.ControlsWithDefaultPropertySettings
+ 0001:0000A1D0       VA508AccessibilityManager.CreateGlobalRegistry
+ 0001:0000A1F4       VA508AccessibilityManager.CreateGlobalVars
+ 0001:0000D550       VA508AccessibilityManager.CreateHelper
+ 0001:0000EFD8       VA508AccessibilityManager.DrawBottom
+ 0001:0000F6A8       VA508AccessibilityManager.DrawBottom
+ 0001:0000F51C       VA508AccessibilityManager.DrawPartials
+ 0001:0000F648       VA508AccessibilityManager.DrawSides
+ 0001:0000F3D0       VA508AccessibilityManager.DrawText
+ 0001:0000EF78       VA508AccessibilityManager.DrawTop
+ 0001:0000F5B8       VA508AccessibilityManager.DrawTop
+ 0001:0000AC60       VA508AccessibilityManager.error
+ 0001:0000F998       VA508AccessibilityManager.Finalization
+ 0001:0000BF5C       VA508AccessibilityManager.FindMSAAQueryData
+ 0001:0000AA6C       VA508AccessibilityManager.FindOwnedComponent
+ 0001:0000DBE0       VA508AccessibilityManager.FindRootHandle
+ 0001:0000A214       VA508AccessibilityManager.FreeGlobalVars
+ 0001:0000C954       VA508AccessibilityManager.GetDataValues
+ 0001:0000CE74       VA508AccessibilityManager.GetMessageHookProc
+ 0003:000002D8       VA508AccessibilityManager.GlobalRegistry
+ 0001:0000C010       VA508AccessibilityManager.HandleStillValid
+ 0001:0000C73C       VA508AccessibilityManager.HelperValid
+ 0001:0000EE84       VA508AccessibilityManager.Init
+ 0001:0000F37C       VA508AccessibilityManager.Init
+ 0001:0000C0BC       VA508AccessibilityManager.Init
+ 0001:0000F44C       VA508AccessibilityManager.InitDrawBorder
+ 0001:0000EED8       VA508AccessibilityManager.InitDrawBorder
+ 0001:0000E280       VA508AccessibilityManager.InitializeComponentHelper
+ 0001:0000C8C8       VA508AccessibilityManager.InitializeVars
+ 0003:000002E0       VA508AccessibilityManager.ManagedClasses
+ 0003:000002D4       VA508AccessibilityManager.MasterPropertyList
+ 0003:000002E8       VA508AccessibilityManager.MSAAQueryClasses
+ 0003:000002BC       VA508AccessibilityManager.NewComponentData
+ 0001:0000C044       VA508AccessibilityManager.NoChangeNeeded
+ 0001:0000C110       VA508AccessibilityManager.ProcessCaptionChange
+ 0001:0000C1CC       VA508AccessibilityManager.ProcessItemChange
+ 0001:0000C4C4       VA508AccessibilityManager.ProcessStateChange
+ 0001:0000BDF8       VA508AccessibilityManager.RegisterAlternateHandleComponent
+ 0001:0000BE70       VA508AccessibilityManager.RegisterComplexComponentManager
+ 0001:0000D5EC       VA508AccessibilityManager.RegisterComponent
+ 0001:0000BEE4       VA508AccessibilityManager.RegisterManagedComponentClass
+ 0001:0000BFA8       VA508AccessibilityManager.RegisterMSAAProc
+ 0001:0000BFFC       VA508AccessibilityManager.RegisterMSAAQueryClassProc
+ 0001:0000C004       VA508AccessibilityManager.RegisterMSAAQueryListClassProc
+ 0001:0000C60C       VA508AccessibilityManager.SendChangeData
+ 0001:0000D778       VA508AccessibilityManager.SkipCheck
+ 0001:0000E48C       VA508AccessibilityManager.TComponentHelper.ClearRedirect
+ 0001:0000E49C       VA508AccessibilityManager.TComponentHelper.Create
+ 0001:0000E4D0       VA508AccessibilityManager.TComponentHelper.Destroy
+ 0001:0000E52C       VA508AccessibilityManager.TComponentHelper.GetCaption
+ 0001:0000E5CC       VA508AccessibilityManager.TComponentHelper.GetComponentName
+ 0001:0000E660       VA508AccessibilityManager.TComponentHelper.GetData
+ 0001:0000E704       VA508AccessibilityManager.TComponentHelper.GetInstructions
+ 0001:0000E798       VA508AccessibilityManager.TComponentHelper.GetItem
+ 0001:0000E800       VA508AccessibilityManager.TComponentHelper.GetItemInstructions
+ 0001:0000E894       VA508AccessibilityManager.TComponentHelper.GetState
+ 0001:0000E944       VA508AccessibilityManager.TComponentHelper.GetValue
+ 0001:0000E408       VA508AccessibilityManager.TComponentHelper.InitializeComponentManager
+ 0001:0000EACC       VA508AccessibilityManager.TComponentHelper.ManageCaption
+ 0001:0000E9C0       VA508AccessibilityManager.TComponentHelper.ManageComponentName
+ 0001:0000EA0C       VA508AccessibilityManager.TComponentHelper.ManageData
+ 0001:0000EA3C       VA508AccessibilityManager.TComponentHelper.ManageItemInstructions
+ 0001:0000EA88       VA508AccessibilityManager.TComponentHelper.ManageValue
+ 0001:0000EB18       VA508AccessibilityManager.TComponentHelper.MonitorForItemChange
+ 0001:0000EB5C       VA508AccessibilityManager.TComponentHelper.MonitorForStateChange
+ 0001:0000EBB8       VA508AccessibilityManager.TComponentHelper.Redirect
+ 0001:0000EBD0       VA508AccessibilityManager.TComponentHelper.StandardComponent
+ 0001:0000A664       VA508AccessibilityManager.TVA508AccessibilityCollection.Add
+ 0001:0000A670       VA508AccessibilityManager.TVA508AccessibilityCollection.ComponentNotifyEvent
+ 0001:0000A6BC       VA508AccessibilityManager.TVA508AccessibilityCollection.Create
+ 0001:0000A738       VA508AccessibilityManager.TVA508AccessibilityCollection.Destroy
+ 0001:0000A778       VA508AccessibilityManager.TVA508AccessibilityCollection.EnsureItemExists
+ 0001:0000A780       VA508AccessibilityManager.TVA508AccessibilityCollection.FindItem
+ 0001:0000A824       VA508AccessibilityManager.TVA508AccessibilityCollection.GetItem
+ 0001:0000A838       VA508AccessibilityManager.TVA508AccessibilityCollection.GetOwner
+ 0001:0000A83C       VA508AccessibilityManager.TVA508AccessibilityCollection.IsComponentRegistered
+ 0001:0000A92C       VA508AccessibilityManager.TVA508AccessibilityCollection.RegisterComponent
+ 0001:0000A924       VA508AccessibilityManager.TVA508AccessibilityCollection.SetItem
+ 0001:0000A8A0       VA508AccessibilityManager.TVA508AccessibilityCollection.UnregisterComponent
+ 0001:0000A288       VA508AccessibilityManager.TVA508AccessibilityItem.Assign
+ 0001:0000A2E4       VA508AccessibilityManager.TVA508AccessibilityItem.Create
+ 0001:0000A31C       VA508AccessibilityManager.TVA508AccessibilityItem.Destroy
+ 0001:0000A360       VA508AccessibilityManager.TVA508AccessibilityItem.GetDisplayName
+ 0001:0000A438       VA508AccessibilityManager.TVA508AccessibilityItem.InitComponent
+ 0001:0000A45C       VA508AccessibilityManager.TVA508AccessibilityItem.Manager
+ 0001:0000A464       VA508AccessibilityManager.TVA508AccessibilityItem.Parent
+ 0001:0000A468       VA508AccessibilityManager.TVA508AccessibilityItem.SetComponent
+ 0001:0000A4D8       VA508AccessibilityManager.TVA508AccessibilityItem.SetDefault
+ 0001:0000A564       VA508AccessibilityManager.TVA508AccessibilityItem.SetLabel
+ 0001:0000A58C       VA508AccessibilityManager.TVA508AccessibilityItem.SetProperty
+ 0001:0000A5E8       VA508AccessibilityManager.TVA508AccessibilityItem.SetText
+ 0001:0000A620       VA508AccessibilityManager.TVA508AccessibilityItem.UpdateStatus
+ 0001:0000A9BC       VA508AccessibilityManager.TVA508AccessibilityManager.Create
+ 0001:0000B52C       VA508AccessibilityManager.TVA508AccessibilityManager.DefineProperties
+ 0001:0000AA24       VA508AccessibilityManager.TVA508AccessibilityManager.Destroy
+ 0001:0000AB0C       VA508AccessibilityManager.TVA508AccessibilityManager.FindComponentOnForm
+ 0001:0000ABE8       VA508AccessibilityManager.TVA508AccessibilityManager.GetAccessLabel
+ 0001:0000AC00       VA508AccessibilityManager.TVA508AccessibilityManager.GetAccessProperty
+ 0001:0000AC24       VA508AccessibilityManager.TVA508AccessibilityManager.GetAccessText
+ 0001:0000AC48       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentManager
+ 0001:0000AD24       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentName
+ 0001:0000AD9C       VA508AccessibilityManager.TVA508AccessibilityManager.GetData
+ 0001:0000ADA0       VA508AccessibilityManager.TVA508AccessibilityManager.GetDefaultStringProperty
+ 0001:0000AF8C       VA508AccessibilityManager.TVA508AccessibilityManager.GetLabelStrings
+ 0001:0000AFB4       VA508AccessibilityManager.TVA508AccessibilityManager.GetProperties
+ 0001:0000AFD4       VA508AccessibilityManager.TVA508AccessibilityManager.GetPropertList
+ 0001:0000B19C       VA508AccessibilityManager.TVA508AccessibilityManager.GetRootComponent
+ 0001:0000B278       VA508AccessibilityManager.TVA508AccessibilityManager.GetUseDefault
+ 0001:0000BC84       VA508AccessibilityManager.TVA508AccessibilityManager.Initialize
+ 0001:0000B294       VA508AccessibilityManager.TVA508AccessibilityManager.IsPropertyNameValid
+ 0001:0000B300       VA508AccessibilityManager.TVA508AccessibilityManager.Loaded
+ 0001:0000B4B8       VA508AccessibilityManager.TVA508AccessibilityManager.Notification
+ 0001:0000B510       VA508AccessibilityManager.TVA508AccessibilityManager.OwnerCheck
+ 0001:0000B568       VA508AccessibilityManager.TVA508AccessibilityManager.ReadData
+ 0001:0000B7C8       VA508AccessibilityManager.TVA508AccessibilityManager.RefreshComponents
+ 0001:0000B9FC       VA508AccessibilityManager.TVA508AccessibilityManager.ScreenReaderInquiry
+ 0001:0000BB54       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessLabel
+ 0001:0000BB74       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessProperty
+ 0001:0000BB94       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessText
+ 0001:0000BBB4       VA508AccessibilityManager.TVA508AccessibilityManager.SetComponentManager
+ 0001:0000BBD0       VA508AccessibilityManager.TVA508AccessibilityManager.SetUseDefault
+ 0001:0000B7D0       VA508AccessibilityManager.TVA508AccessibilityManager.WriteData
+ 0001:0000F330       VA508AccessibilityManager.TVA508ChainedLabel.Notification
+ 0001:0000F754       VA508AccessibilityManager.TVA508ChainedLabel.Paint
+ 0001:0000F7C0       VA508AccessibilityManager.TVA508ChainedLabel.SetNextLabel
+ 0001:0000F814       VA508AccessibilityManager.TVA508ComplexComponentManager.AddSubControl
+ 0001:0000F858       VA508AccessibilityManager.TVA508ComplexComponentManager.ClearSubControls
+ 0001:0000F89C       VA508AccessibilityManager.TVA508ComplexComponentManager.Create
+ 0001:0000F8DC       VA508AccessibilityManager.TVA508ComplexComponentManager.Destroy
+ 0001:0000F90C       VA508AccessibilityManager.TVA508ComplexComponentManager.GetSubControl
+ 0001:0000F920       VA508AccessibilityManager.TVA508ComplexComponentManager.RemoveSubControl
+ 0001:0000F944       VA508AccessibilityManager.TVA508ComplexComponentManager.SubControlCount
+ 0001:0000E098       VA508AccessibilityManager.TVA508ComponentAccessibility.Create
+ 0001:0000E0E8       VA508AccessibilityManager.TVA508ComponentAccessibility.SetComponent
+ 0001:0000DFC8       VA508AccessibilityManager.TVA508ComponentManager.ComponentChange
+ 0001:0000DEBC       VA508AccessibilityManager.TVA508ComponentManager.Create
+ 0001:0000DEF0       VA508AccessibilityManager.TVA508ComponentManager.GetCaption
+ 0001:0000DEFC       VA508AccessibilityManager.TVA508ComponentManager.GetComponentName
+ 0001:0000DF08       VA508AccessibilityManager.TVA508ComponentManager.GetData
+ 0001:0000DF3C       VA508AccessibilityManager.TVA508ComponentManager.GetInstructions
+ 0001:0000DF48       VA508AccessibilityManager.TVA508ComponentManager.GetItem
+ 0001:0000DF4C       VA508AccessibilityManager.TVA508ComponentManager.GetItemInstructions
+ 0001:0000DF58       VA508AccessibilityManager.TVA508ComponentManager.GetState
+ 0001:0000DF64       VA508AccessibilityManager.TVA508ComponentManager.GetValue
+ 0001:0000DF70       VA508AccessibilityManager.TVA508ComponentManager.ManageCaption
+ 0001:0000DF78       VA508AccessibilityManager.TVA508ComponentManager.ManageComponentName
+ 0001:0000DF80       VA508AccessibilityManager.TVA508ComponentManager.ManageData
+ 0001:0000DF88       VA508AccessibilityManager.TVA508ComponentManager.ManageInstructions
+ 0001:0000DF90       VA508AccessibilityManager.TVA508ComponentManager.ManageItemInstructions
+ 0001:0000DF98       VA508AccessibilityManager.TVA508ComponentManager.ManageState
+ 0001:0000DFA0       VA508AccessibilityManager.TVA508ComponentManager.ManageValue
+ 0001:0000DFA8       VA508AccessibilityManager.TVA508ComponentManager.MonitorForItemChange
+ 0001:0000DFB0       VA508AccessibilityManager.TVA508ComponentManager.MonitorForStateChange
+ 0001:0000DFB8       VA508AccessibilityManager.TVA508ComponentManager.Redirect
+ 0001:0000DFC0       VA508AccessibilityManager.TVA508ComponentManager.RedirectsComponent
+ 0001:0000DFCC       VA508AccessibilityManager.TVA508ManagedComponentClass.Create
+ 0001:0000E018       VA508AccessibilityManager.TVA508SilentComponent.GetComponentName
+ 0001:0000E038       VA508AccessibilityManager.TVA508SilentComponent.GetInstructions
+ 0001:0000E058       VA508AccessibilityManager.TVA508SilentComponent.GetState
+ 0001:0000E078       VA508AccessibilityManager.TVA508SilentComponent.GetValue
+ 0001:0000EBE4       VA508AccessibilityManager.TVA508StaticText.CMFontChanged
+ 0001:0000EBF8       VA508AccessibilityManager.TVA508StaticText.CMTextChanged
+ 0001:0000EC0C       VA508AccessibilityManager.TVA508StaticText.Create
+ 0001:0000EC98       VA508AccessibilityManager.TVA508StaticText.DeleteChain
+ 0001:0000ED34       VA508AccessibilityManager.TVA508StaticText.Destroy
+ 0001:0000ED70       VA508AccessibilityManager.TVA508StaticText.DoEnter
+ 0001:0000ED9C       VA508AccessibilityManager.TVA508StaticText.DoExit
+ 0001:0000EDC8       VA508AccessibilityManager.TVA508StaticText.GetAlignment
+ 0001:0000EDD8       VA508AccessibilityManager.TVA508StaticText.GetLabelCaption
+ 0001:0000EDF0       VA508AccessibilityManager.TVA508StaticText.GetRootName
+ 0001:0000EE04       VA508AccessibilityManager.TVA508StaticText.GetShowAccelChar
+ 0001:0000EE14       VA508AccessibilityManager.TVA508StaticText.InvalidateAll
+ 0001:0000EE44       VA508AccessibilityManager.TVA508StaticText.Notification
+ 0001:0000F0D0       VA508AccessibilityManager.TVA508StaticText.Paint
+ 0001:0000F0FC       VA508AccessibilityManager.TVA508StaticText.SetAlignment
+ 0001:0000F108       VA508AccessibilityManager.TVA508StaticText.SetLabelCaption
+ 0001:0000F1F8       VA508AccessibilityManager.TVA508StaticText.SetNextLabel
+ 0001:0000F23C       VA508AccessibilityManager.TVA508StaticText.SetParent
+ 0001:0000F174       VA508AccessibilityManager.TVA508StaticText.SetRootName
+ 0001:0000F294       VA508AccessibilityManager.TVA508StaticText.SetShowAccelChar
+ 0001:0000F2A0       VA508AccessibilityManager.TVA508StaticText.UpdateSize
+ 0001:0000C670       VA508AccessibilityManager.TVAGlobalComponentRegistry.CheckForChangeEvent
+ 0001:0000CBB4       VA508AccessibilityManager.TVAGlobalComponentRegistry.ComponentDataNeededEvent
+ 0001:0000CF04       VA508AccessibilityManager.TVAGlobalComponentRegistry.Create
+ 0001:0000D020       VA508AccessibilityManager.TVAGlobalComponentRegistry.Destroy
+ 0004:00000054       VA508AccessibilityManager.TVAGlobalComponentRegistry.FActive
+ 0004:00000058       VA508AccessibilityManager.TVAGlobalComponentRegistry.FCallWinProcHookHandle
+ 0004:0000005C       VA508AccessibilityManager.TVAGlobalComponentRegistry.FGetMsgHookHandle
+ 0001:0000D0A0       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetCompKey
+ 0001:0000D0B4       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHandle
+ 0001:0000D188       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHelper
+ 0001:0000D234       VA508AccessibilityManager.TVAGlobalComponentRegistry.HasHandle
+ 0001:0000D714       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterComponent
+ 0001:0000D328       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterFieldObject
+ 0001:0000D3EC       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterMSAA
+ 0001:0000D79C       VA508AccessibilityManager.TVAGlobalComponentRegistry.TimerEvent
+ 0001:0000D8BC       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterComponent
+ 0001:0000D9EC       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterMSAA
+ 0001:0000DE30       VA508AccessibilityManager.TVAGlobalComponentRegistry.UpdateHandles
+ 0001:0000BBF0       VA508AccessibilityManager.Update
+ 0001:0000DC68       VA508AccessibilityManager.UpdateAllHandles
+ 0001:0000DCDC       VA508AccessibilityManager.UpdateChildrenHandles
+ 0001:0000B40C       VA508AccessibilityManager.UpdateComponent
+ 0001:0000C7D4       VA508AccessibilityManager.UpdateComponentData
+ 0001:0000DA30       VA508AccessibilityManager.UpdateHandle
+ 0002:00000254       VA508AccessibilityManager.VA508AccessibilityManager
+ 0004:00000080       VA508AccessibilityPE..8
+ 0001:00010850       VA508AccessibilityPE..TVA508AccessibilityComponentPropertyEditor
+ 0001:00010628       VA508AccessibilityPE..TVA508AccessibilityLabelPropertyEditor
+ 0001:000101D8       VA508AccessibilityPE..TVA508AccessibilityManager4PE
+ 0001:000102B8       VA508AccessibilityPE..TVA508AccessibilityPropertyMapper
+ 0001:00010740       VA508AccessibilityPE..TVA508AccessibilityPropertyPropertyEditor
+ 0001:00010524       VA508AccessibilityPE..TVA508CollectionPropertyEditor
+ 0001:0001041C       VA508AccessibilityPE..TVA508NestedPropertyEditor
+ 0001:00010A20       VA508AccessibilityPE.AllComponentsHaveSameManager
+ 0001:00011C40       VA508AccessibilityPE.Finalization
+ 0001:00010970       VA508AccessibilityPE.GetAccessibilityManager
+ 0001:00010A74       VA508AccessibilityPE.GetStringPropertyNames
+ 0001:00010B50       VA508AccessibilityPE.QVal
+ 0001:00011B10       VA508AccessibilityPE.Register
+ 0001:00010BC4       VA508AccessibilityPE.StripQVal
+ 0001:00011B04       VA508AccessibilityPE.TVA508AccessibilityComponentPropertyEditor.GetAttributes
+ 0001:000115F0       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetAttributes
+ 0001:000115FC       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetManager
+ 0001:0001161C       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetProperties
+ 0001:00011624       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetValue
+ 0001:000116B8       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetValues
+ 0001:00011774       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.SetValue
+ 0001:00010C44       VA508AccessibilityPE.TVA508AccessibilityPropertyMapper.GetAttributes
+ 0001:00010C70       VA508AccessibilityPE.TVA508AccessibilityPropertyMapper.GetProperties
+ 0001:000117C4       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.AllEqual
+ 0001:0001186C       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetAttributes
+ 0001:00011878       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetEditLimit
+ 0001:00011880       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetManager
+ 0001:000118A0       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetRootComponent
+ 0001:000118B8       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetValue
+ 0001:0001194C       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetValues
+ 0001:00011AB4       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.SetValue
+ 0001:000115E4       VA508AccessibilityPE.TVA508CollectionPropertyEditor.GetColOptions
+ 0001:00010D70       VA508AccessibilityPE.TVA508NestedPropertyEditor.AllEqual
+ 0001:00010F44       VA508AccessibilityPE.TVA508NestedPropertyEditor.Create
+ 0001:00010FD8       VA508AccessibilityPE.TVA508NestedPropertyEditor.Edit
+ 0001:00011038       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetAttributes
+ 0001:00011078       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetEditLimit
+ 0001:00011098       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetName
+ 0001:000110AC       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetValue
+ 0001:00011238       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetValues
+ 0001:0001145C       VA508AccessibilityPE.TVA508NestedPropertyEditor.SetValue
+ 0002:000002D8       VA508AccessibilityPE.VA508AccessibilityPE
+ 0004:00000040       VA508AccessibilityRouter..2
+ 0001:00003850       VA508AccessibilityRouter..TMasterScreenReader
+ 0001:000037D4       VA508AccessibilityRouter..TNullScreenReader
+ 0001:00003718       VA508AccessibilityRouter..TVA508ScreenReader
+ 0003:00000268       VA508AccessibilityRouter.ActiveScreenReader
+ 0001:00004880       VA508AccessibilityRouter.AddDescription
+ 0003:00000280       VA508AccessibilityRouter.CheckScreenReaderSystemActive
+ 0001:000040A0       VA508AccessibilityRouter.Coded
+ 0001:00004BC4       VA508AccessibilityRouter.ComponentDataRequested
+ 0001:00003C38       VA508AccessibilityRouter.CreateTimer
+ 0001:00003EF8       VA508AccessibilityRouter.Decode
+ 0001:000044F8       VA508AccessibilityRouter.EnsureDialogAreSpecified
+ 0001:000044A4       VA508AccessibilityRouter.EnumResNameProc
+ 0001:00004DEC       VA508AccessibilityRouter.Finalization
+ 0001:00003908       VA508AccessibilityRouter.GetScreenReader
+ 0003:0000026C       VA508AccessibilityRouter.MasterScreenReader
+ 0003:00000278       VA508AccessibilityRouter.Need2RegisterData
+ 0003:0000027C       VA508AccessibilityRouter.OK2RegisterData
+ 0001:00003950       VA508AccessibilityRouter.PostScreenReaderCheckEvent
+ 0003:00000274       VA508AccessibilityRouter.SaveInitProc
+ 0001:00003C9C       VA508AccessibilityRouter.ScreenReaderSystemActive
+ 0001:00003D7C       VA508AccessibilityRouter.SpecifyFormIsNotADialog
+ 0001:00003E80       VA508AccessibilityRouter.TMasterScreenReader.AddComponentDataNeededEventHandler
+ 0001:00003E94       VA508AccessibilityRouter.TMasterScreenReader.Create
+ 0001:00003F84       VA508AccessibilityRouter.TMasterScreenReader.DecodeBehavior
+ 0001:0000405C       VA508AccessibilityRouter.TMasterScreenReader.Destroy
+ 0001:00004174       VA508AccessibilityRouter.TMasterScreenReader.EncodeBehavior
+ 0001:00004214       VA508AccessibilityRouter.TMasterScreenReader.HandleSRException
+ 0001:00004288       VA508AccessibilityRouter.TMasterScreenReader.ProcessCustomKeyCommand
+ 0001:000042B4       VA508AccessibilityRouter.TMasterScreenReader.RegisterClassAsMSAA
+ 0001:00004318       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomBehavior
+ 0001:0000442C       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomClassBehavior
+ 0001:00004730       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomData
+ 0001:000049AC       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomKeyMapping
+ 0001:00004A8C       VA508AccessibilityRouter.TMasterScreenReader.RegisterDictionaryChange
+ 0001:00004AF4       VA508AccessibilityRouter.TMasterScreenReader.RegistrationAllowed
+ 0001:00004B0C       VA508AccessibilityRouter.TMasterScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:00004B20       VA508AccessibilityRouter.TMasterScreenReader.Speak
+ 0001:00004CF4       VA508AccessibilityRouter.TNullScreenReader.AddComponentDataNeededEventHandler
+ 0001:00004CFC       VA508AccessibilityRouter.TNullScreenReader.RegisterClassAsMSAA
+ 0001:00004D24       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomClassBehavior
+ 0001:00004D4C       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomKeyMapping
+ 0001:00004D94       VA508AccessibilityRouter.TNullScreenReader.RegisterDictionaryChange
+ 0001:00004DBC       VA508AccessibilityRouter.TNullScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:00004DC4       VA508AccessibilityRouter.TNullScreenReader.Speak
+ 0003:00000270       VA508AccessibilityRouter.uNonDialogClassNames
+ 0003:00000288       VA508AccessibilityRouter.uPostScreenReaderActivationTimer
+ 0003:00000284       VA508AccessibilityRouter.uScreenReaderSystemActive
+ 0002:000001D0       VA508AccessibilityRouter.VA508AccessibilityRouter
+ 0001:000038CC       VA508AccessibilityRouter.VA508RouterInitProc
+ 0004:00000048       VA508Classes..5
+ 0001:000063EC       VA508Classes..EVA508AccessibilityException
+ 0001:00006344       VA508Classes..TFormData
+ 0001:00006554       VA508Classes..TParentChildFormTracker
+ 0001:000066DC       VA508Classes..TVA508Parser
+ 0001:00006804       VA508Classes.EnsureManager
+ 0001:00007CCC       VA508Classes.Finalization
+ 0001:0000678C       VA508Classes.HasAnotherAccessibilityManager
+ 0001:00007990       VA508Classes.IgnoreToken
+ 0001:000079C0       VA508Classes.InvalidSection
+ 0001:00006EE8       VA508Classes.TFormData.HasManager
+ 0001:00006EF4       VA508Classes.TFormData.HasParent
+ 0001:00006EFC       VA508Classes.TFormData.SetFormClassName
+ 0001:00006F58       VA508Classes.TParentChildFormTracker.AddForm
+ 0001:00007020       VA508Classes.TParentChildFormTracker.AddLink
+ 0001:00007098       VA508Classes.TParentChildFormTracker.Clear
+ 0001:000070A4       VA508Classes.TParentChildFormTracker.Create
+ 0001:000070E0       VA508Classes.TParentChildFormTracker.Destroy
+ 0001:00007110       VA508Classes.TParentChildFormTracker.FindForm
+ 0001:000071AC       VA508Classes.TParentChildFormTracker.FormCount
+ 0001:000071B4       VA508Classes.TParentChildFormTracker.GetFormData
+ 0001:000071C8       VA508Classes.TParentChildFormTracker.ParentChildErrorDescription
+ 0001:000076C4       VA508Classes.TParentChildFormTracker.ParentChildErrorStatus
+ 0001:000077C4       VA508Classes.TVA508Parser.GetParentClassName
+ 0001:00007984       VA508Classes.TVA508Parser.LastLineRead
+ 0001:00007988       VA508Classes.TVA508Parser.LastPosition
+ 0001:00007A6C       VA508Classes.TVA508Parser.ParseToken
+ 0002:000001FC       VA508Classes.VA508Classes
+ 0001:00006920       VA508Classes.VA508ComponentCreationCheck
+ 0001:00006C44       VA508Classes.VA508ComponentDestructionCheck
+ 0004:0000004C       VA508DelphiCompatibility..2
+ 0001:00007E48       VA508DelphiCompatibility..TCheckBox508Manager
+ 0001:00007EFC       VA508DelphiCompatibility..TCheckListBox508Manager
+ 0001:0000811C       VA508DelphiCompatibility..TCustomGrid508Manager
+ 0001:00008068       VA508DelphiCompatibility..TVA508ComboManager
+ 0001:00007FB4       VA508DelphiCompatibility..TVA508EditManager
+ 0001:00007D4C       VA508DelphiCompatibility..TVA508StaticTextManager
+ 0001:000081D4       VA508DelphiCompatibility.Append
+ 0001:00008270       VA508DelphiCompatibility.AppendHeader
+ 0001:000085FC       VA508DelphiCompatibility.CustomComboAlternateHandle
+ 0001:00008ECC       VA508DelphiCompatibility.Finalization
+ 0001:00008604       VA508DelphiCompatibility.GetCheckBoxComponentName
+ 0001:0000865C       VA508DelphiCompatibility.GetCheckBoxInstructionMessage
+ 0001:000086D0       VA508DelphiCompatibility.GetCheckBoxStateText
+ 0001:000082E8       VA508DelphiCompatibility.ListViewIndexQueryProc
+ 0001:00008498       VA508DelphiCompatibility.RegisterStandardDelphiComponents
+ 0001:00008754       VA508DelphiCompatibility.TCheckBox508Manager.Create
+ 0001:000087A0       VA508DelphiCompatibility.TCheckBox508Manager.GetComponentName
+ 0001:000087B8       VA508DelphiCompatibility.TCheckBox508Manager.GetInstructions
+ 0001:000087D4       VA508DelphiCompatibility.TCheckBox508Manager.GetState
+ 0001:000087EC       VA508DelphiCompatibility.TCheckListBox508Manager.Create
+ 0001:00008838       VA508DelphiCompatibility.TCheckListBox508Manager.GetComponentName
+ 0001:000088D0       VA508DelphiCompatibility.TCheckListBox508Manager.GetIndex
+ 0001:00008904       VA508DelphiCompatibility.TCheckListBox508Manager.GetItem
+ 0001:000088A0       VA508DelphiCompatibility.TCheckListBox508Manager.GetItemInstructions
+ 0001:00008930       VA508DelphiCompatibility.TCheckListBox508Manager.GetState
+ 0001:00008960       VA508DelphiCompatibility.TCustomGrid508Manager.Create
+ 0001:000089AC       VA508DelphiCompatibility.TCustomGrid508Manager.GetComponentName
+ 0001:000089D0       VA508DelphiCompatibility.TCustomGrid508Manager.GetInstructions
+ 0001:00008A5C       VA508DelphiCompatibility.TCustomGrid508Manager.GetItem
+ 0001:00008A90       VA508DelphiCompatibility.TCustomGrid508Manager.GetValue
+ 0001:00008E6C       VA508DelphiCompatibility.TVA508ComboManager.Create
+ 0001:00008EB8       VA508DelphiCompatibility.TVA508ComboManager.GetValue
+ 0001:00008E0C       VA508DelphiCompatibility.TVA508EditManager.Create
+ 0001:00008E58       VA508DelphiCompatibility.TVA508EditManager.GetValue
+ 0001:00008CF8       VA508DelphiCompatibility.TVA508StaticTextManager.Create
+ 0001:00008D44       VA508DelphiCompatibility.TVA508StaticTextManager.GetCaption
+ 0001:00008D64       VA508DelphiCompatibility.TVA508StaticTextManager.GetComponentName
+ 0001:00008D88       VA508DelphiCompatibility.TVA508StaticTextManager.GetValue
+ 0002:00000244       VA508DelphiCompatibility.VA508DelphiCompatibility
+ 0004:00000044       VA508ImageListLabeler..6
+ 0001:0000507C       VA508ImageListLabeler..TVA508ImageListComponent
+ 0001:00005168       VA508ImageListLabeler..TVA508ImageListComponents
+ 0001:00004E58       VA508ImageListLabeler..TVA508ImageListLabel
+ 0001:00005244       VA508ImageListLabeler..TVA508ImageListLabeler
+ 0001:00004F98       VA508ImageListLabeler..TVA508ImageListLabels
+ 0001:00006314       VA508ImageListLabeler.Finalization
+ 0001:000053A8       VA508ImageListLabeler.Register
+ 0001:00005FA0       VA508ImageListLabeler.TVA508ImageListComponent.Assign
+ 0001:00005FD0       VA508ImageListLabeler.TVA508ImageListComponent.ComponentNotifyEvent
+ 0001:00005FE8       VA508ImageListLabeler.TVA508ImageListComponent.Destroy
+ 0001:00006024       VA508ImageListLabeler.TVA508ImageListComponent.GetDisplayName
+ 0001:000060DC       VA508ImageListLabeler.TVA508ImageListComponent.ImageListTypes
+ 0001:000061A8       VA508ImageListLabeler.TVA508ImageListComponent.Labeler
+ 0001:000061C4       VA508ImageListLabeler.TVA508ImageListComponent.SetComponent
+ 0001:00005EEC       VA508ImageListLabeler.TVA508ImageListComponents.Add
+ 0001:00005EF8       VA508ImageListLabeler.TVA508ImageListComponents.Create
+ 0001:00005F3C       VA508ImageListLabeler.TVA508ImageListComponents.Destroy
+ 0001:00005F68       VA508ImageListLabeler.TVA508ImageListComponents.GetItem
+ 0001:00005F7C       VA508ImageListLabeler.TVA508ImageListComponents.GetOwner
+ 0001:00005F80       VA508ImageListLabeler.TVA508ImageListComponents.Notify
+ 0001:00005F98       VA508ImageListLabeler.TVA508ImageListComponents.SetItem
+ 0001:00005D48       VA508ImageListLabeler.TVA508ImageListLabel.Assign
+ 0001:00005D84       VA508ImageListLabeler.TVA508ImageListLabel.Changed
+ 0001:00005D98       VA508ImageListLabeler.TVA508ImageListLabel.Create
+ 0001:00005DDC       VA508ImageListLabeler.TVA508ImageListLabel.Destroy
+ 0001:00005E04       VA508ImageListLabeler.TVA508ImageListLabel.Labeler
+ 0001:00005E20       VA508ImageListLabeler.TVA508ImageListLabel.Refresh
+ 0001:00005E2C       VA508ImageListLabeler.TVA508ImageListLabel.SetCaption
+ 0001:00005E60       VA508ImageListLabeler.TVA508ImageListLabel.SetImageIndex
+ 0001:00005ED8       VA508ImageListLabeler.TVA508ImageListLabel.SetOverlayIndex
+ 0001:000053D4       VA508ImageListLabeler.TVA508ImageListLabeler.ComponentImageListChanged
+ 0001:000053DC       VA508ImageListLabeler.TVA508ImageListLabeler.Create
+ 0001:00005480       VA508ImageListLabeler.TVA508ImageListLabeler.Destroy
+ 0001:000054E8       VA508ImageListLabeler.TVA508ImageListLabeler.ImageIndexQuery
+ 0001:000055A0       VA508ImageListLabeler.TVA508ImageListLabeler.ImageListChange
+ 0001:00005640       VA508ImageListLabeler.TVA508ImageListLabeler.ItemChanged
+ 0001:00005660       VA508ImageListLabeler.TVA508ImageListLabeler.Loaded
+ 0001:000057D8       VA508ImageListLabeler.TVA508ImageListLabeler.Notification
+ 0001:00005688       VA508ImageListLabeler.TVA508ImageListLabeler.SaveChanges
+ 0001:00005804       VA508ImageListLabeler.TVA508ImageListLabeler.SetImageList
+ 0001:000059A4       VA508ImageListLabeler.TVA508ImageListLabeler.SetRemoteLabeler
+ 0001:000059CC       VA508ImageListLabeler.TVA508ImageListLabels.Add
+ 0001:000059D8       VA508ImageListLabeler.TVA508ImageListLabels.Create
+ 0001:00005AC8       VA508ImageListLabeler.TVA508ImageListLabels.Destroy
+ 0001:00005B0C       VA508ImageListLabeler.TVA508ImageListLabels.GetAttr
+ 0001:00005B28       VA508ImageListLabeler.TVA508ImageListLabels.GetAttrCount
+ 0001:00005B34       VA508ImageListLabeler.TVA508ImageListLabels.GetImageData
+ 0001:00005BA8       VA508ImageListLabeler.TVA508ImageListLabels.GetItem
+ 0001:00005BBC       VA508ImageListLabeler.TVA508ImageListLabels.GetItemAttr
+ 0001:00005C80       VA508ImageListLabeler.TVA508ImageListLabels.GetOverlayData
+ 0001:00005CF8       VA508ImageListLabeler.TVA508ImageListLabels.GetOwner
+ 0001:00005CFC       VA508ImageListLabeler.TVA508ImageListLabels.Notify
+ 0001:00005D10       VA508ImageListLabeler.TVA508ImageListLabels.ResetData
+ 0001:00005D2C       VA508ImageListLabeler.TVA508ImageListLabels.SetItem
+ 0001:00005D34       VA508ImageListLabeler.TVA508ImageListLabels.Update
+ 0002:000001F4       VA508ImageListLabeler.VA508ImageListLabeler
+ 0004:00000090       VA508ImageListLabelerPE..7
+ 0001:0001518C       VA508ImageListLabelerPE..TfrmImageListEditor
+ 0001:000154AC       VA508ImageListLabelerPE..TVA508ImageListComponentEditor
+ 0001:0001557C       VA508ImageListLabelerPE..TVA508ImageListComponentProperty
+ 0001:000153A8       VA508ImageListLabelerPE..TVA508ImageListItemsProperty
+ 0001:0001568C       VA508ImageListLabelerPE..TVA508LabelerImageListProperty
+ 0001:00015794       VA508ImageListLabelerPE..TVA508LabelerRemoteLabelerProperty
+ 0001:00016318       VA508ImageListLabelerPE.Finalization
+ 0001:000158A4       VA508ImageListLabelerPE.Register
+ 0001:00015974       VA508ImageListLabelerPE.TfrmImageListEditor.Create
+ 0001:00015A20       VA508ImageListLabelerPE.TfrmImageListEditor.Destroy
+ 0001:00015B88       VA508ImageListLabelerPE.TfrmImageListEditor.GetImageList
+ 0001:00015BB8       VA508ImageListLabelerPE.TfrmImageListEditor.GetSize
+ 0001:00015A70       VA508ImageListLabelerPE.TfrmImageListEditor.ImageDataChanged
+ 0001:00015A78       VA508ImageListLabelerPE.TfrmImageListEditor.ItemChange
+ 0001:00015AC4       VA508ImageListLabelerPE.TfrmImageListEditor.IterateItems
+ 0001:00015BE8       VA508ImageListLabelerPE.TfrmImageListEditor.RedrawImages
+ 0001:00015E58       VA508ImageListLabelerPE.TfrmImageListEditor.UpdateImages
+ 0001:00015F58       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.Edit
+ 0001:00015FD4       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.ExecuteVerb
+ 0001:00015FE4       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.GetVerb
+ 0001:00016034       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.GetVerbCount
+ 0001:0001603C       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.FilterValues
+ 0001:00016124       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.GetValue
+ 0001:000161D0       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.GetValues
+ 0001:00016204       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.SetValue
+ 0001:000159D8       VA508ImageListLabelerPE.TVA508ImageListItemsProperty.GetAttributes
+ 0001:00015A18       VA508ImageListLabelerPE.TVA508ImageListItemsProperty.GetEditorClass
+ 0001:00016280       VA508ImageListLabelerPE.TVA508LabelerImageListProperty.GetAttributes
+ 0001:000162B4       VA508ImageListLabelerPE.TVA508LabelerRemoteLabelerProperty.FilterValues
+ 0001:000162E4       VA508ImageListLabelerPE.TVA508LabelerRemoteLabelerProperty.GetValues
+ 0002:00000310       VA508ImageListLabelerPE.VA508ImageListLabelerPE
+ 0004:00000024       VA508MSAASupport..1
+ 0001:00001628       VA508MSAASupport..TImageEventData
+ 0001:00001684       VA508MSAASupport..TListProcData
+ 0001:00001844       VA508MSAASupport..TMSAAServer
+ 0001:000016E0       VA508MSAASupport..TProcData
+ 0003:00000230       VA508MSAASupport.AccPropServices
+ 0003:00000234       VA508MSAASupport.AccServicesCount
+ 0001:000022E8       VA508MSAASupport.Append
+ 0001:00001A08       VA508MSAASupport.Cleanup
+ 0001:000019E4       VA508MSAASupport.DecAccServices
+ 0001:00002890       VA508MSAASupport.DoListComponent
+ 0001:00002574       VA508MSAASupport.DoListView
+ 0001:000028FC       VA508MSAASupport.DoNormalComponent
+ 0001:00002434       VA508MSAASupport.DoTreeView
+ 0003:0000022C       VA508MSAASupport.Events
+ 0001:00002D3C       VA508MSAASupport.Finalization
+ 0001:00001A28       VA508MSAASupport.FindServer
+ 0001:000023A0       VA508MSAASupport.GetImageLabelText
+ 0001:00002964       VA508MSAASupport.HasProperty
+ 0001:00001948       VA508MSAASupport.IncAccServices
+ 0004:00000028       VA508MSAASupport.NamePropIDs
+ 0001:0000298C       VA508MSAASupport.NoProperty
+ 0001:0000189C       VA508MSAASupport.NotifyEvent
+ 0001:00001AE4       VA508MSAASupport.RegisterComponentImageListQueryEvent
+ 0001:00001E44       VA508MSAASupport.RegisterMSAAComponentListQueryProc
+ 0001:00001CA0       VA508MSAASupport.RegisterMSAAComponentQueryProc
+ 0001:00001FE8       VA508MSAASupport.TMSAAServer.AddImageEvent
+ 0001:00002050       VA508MSAASupport.TMSAAServer.AddListProc
+ 0001:00002088       VA508MSAASupport.TMSAAServer.AddProc
+ 0001:000020C0       VA508MSAASupport.TMSAAServer.AssignServerType
+ 0001:000020E0       VA508MSAASupport.TMSAAServer.Attach
+ 0001:00002134       VA508MSAASupport.TMSAAServer.Create
+ 0001:00002194       VA508MSAASupport.TMSAAServer.Destroy
+ 0001:000021D0       VA508MSAASupport.TMSAAServer.Detatch
+ 0001:00002230       VA508MSAASupport.TMSAAServer.EventCount
+ 0001:000022E4       VA508MSAASupport.TMSAAServer.GetComponent
+ 0001:000029A8       VA508MSAASupport.TMSAAServer.GetPropValue
+ 0001:00002B68       VA508MSAASupport.TMSAAServer.Hook
+ 0001:00002238       VA508MSAASupport.TMSAAServer.ImageEventIndex
+ 0001:00002294       VA508MSAASupport.TMSAAServer.ListProcIndex
+ 0001:00002CA8       VA508MSAASupport.TMSAAServer.MSAAWindowProc
+ 0001:00002CD0       VA508MSAASupport.TMSAAServer.ProcIndex
+ 0001:00002B88       VA508MSAASupport.TMSAAServer.RemoveImageEvent
+ 0001:00002BB8       VA508MSAASupport.TMSAAServer.RemoveListProc
+ 0001:00002BDC       VA508MSAASupport.TMSAAServer.RemoveProc
+ 0001:00002C74       VA508MSAASupport.TMSAAServer.UnassignServerType
+ 0001:00002C98       VA508MSAASupport.TMSAAServer.UnHook
+ 0001:00002C00       VA508MSAASupport.TMSAAServer.ValidateServerType
+ 0004:00000038       VA508MSAASupport.uNotifier
+ 0001:00001BD4       VA508MSAASupport.UnregisterComponentImageListQueryEvent
+ 0001:00001F2C       VA508MSAASupport.UnregisterMSAAComponentListQueryProc
+ 0001:00001D88       VA508MSAASupport.UnregisterMSAAComponentQueryProc
+ 0003:00000228       VA508MSAASupport.uShutDown
+ 0003:00000220       VA508MSAASupport.VA508ImageListLabelerClasses
+ 0002:000001B4       VA508MSAASupport.VA508MSAASupport
+ 0004:0000003C       VA508ScreenReaderDLLLinker..1
+ 0001:000031D0       VA508ScreenReaderDLLLinker.CheckFile
+ 0001:00003020       VA508ScreenReaderDLLLinker.CheckProcs
+ 0001:00002FD4       VA508ScreenReaderDLLLinker.CheckRunning
+ 0001:00002DC4       VA508ScreenReaderDLLLinker.ClearProcPointers
+ 0001:00002E40       VA508ScreenReaderDLLLinker.CloseScreenReaderLink
+ 0001:00002DA4       VA508ScreenReaderDLLLinker.ComponentData
+ 0001:00002DC0       VA508ScreenReaderDLLLinker.ConfigChangePending
+ 0003:00000264       VA508ScreenReaderDLLLinker.DLLHandle
+ 0003:00000254       VA508ScreenReaderDLLLinker.DoInitialize
+ 0003:00000250       VA508ScreenReaderDLLLinker.ExecuteFind
+ 0001:000035D0       VA508ScreenReaderDLLLinker.Finalization
+ 0001:0000346C       VA508ScreenReaderDLLLinker.FindScreenReaders
+ 0001:00002D8C       VA508ScreenReaderDLLLinker.Initialize
+ 0003:00000258       VA508ScreenReaderDLLLinker.InitializeResult
+ 0001:00002E04       VA508ScreenReaderDLLLinker.InitializeScreenReaderLink
+ 0001:00002DB4       VA508ScreenReaderDLLLinker.IsRunning
+ 0001:00003548       VA508ScreenReaderDLLLinker.IsScreenReaderSupported
+ 0001:00002E68       VA508ScreenReaderDLLLinker.LoadScreenReader
+ 0001:00002D9C       VA508ScreenReaderDLLLinker.RegisterCustomBehavior
+ 0001:000032B8       VA508ScreenReaderDLLLinker.ScanScreenReaders
+ 0001:00003530       VA508ScreenReaderDLLLinker.ScreenReaderDLLsExist
+ 0001:00002D98       VA508ScreenReaderDLLLinker.ShutDown
+ 0001:00002DAC       VA508ScreenReaderDLLLinker.SpeakText
+ 0003:00000244       VA508ScreenReaderDLLLinker.SRComponentData
+ 0003:00000248       VA508ScreenReaderDLLLinker.SRConfigChangePending
+ 0003:0000025C       VA508ScreenReaderDLLLinker.SRInitialize
+ 0003:0000023C       VA508ScreenReaderDLLLinker.SRIsRunning
+ 0003:00000240       VA508ScreenReaderDLLLinker.SRRegisterCustomBehavior
+ 0003:00000260       VA508ScreenReaderDLLLinker.SRShutDown
+ 0003:00000238       VA508ScreenReaderDLLLinker.SRSpeakText
+ 0002:000001C8       VA508ScreenReaderDLLLinker.VA508ScreenReaderDLLLinker
+ 0003:0000024C       VA508ScreenReaderDLLLinker.ValidSRFiles
+ 0004:00000010       Windows..3
+ 0001:00000508       Windows.CallNextHookEx
+ 0001:000004E0       Windows.EnumResourceNames
+ 0001:00000550       Windows.Finalization
+ 0001:000004E8       Windows.FreeLibrary
+ 0001:00000510       Windows.GetAncestor
+ 0001:000004F0       Windows.GetCurrentThreadId
+ 0001:000004F8       Windows.GetProcAddress
+ 0004:00000014       Windows.HtmlHelpModule
+ 0001:00000518       Windows.IsWindow
+ 0001:00000520       Windows.IsWindowVisible
+ 0001:00000500       Windows.LoadLibrary
+ 0001:00000528       Windows.MessageBox
+ 0001:00000530       Windows.PeekMessage
+ 0001:00000538       Windows.PostMessage
+ 0001:00000540       Windows.SetWindowsHookEx
+ 0001:00000548       Windows.UnhookWindowsHookEx
+ 0002:00000010       Windows.Windows
+
+
+  Address             Publics by Value
+
+ 0001:00000250       SysInit.FreeLibrary
+ 0001:00000258       SysInit.LocalAlloc
+ 0001:00000260       SysInit.LocalFree
+ 0001:00000268       SysInit.TlsAlloc
+ 0001:00000270       SysInit.TlsFree
+ 0001:00000278       SysInit.TlsGetValue
+ 0001:00000280       SysInit.TlsSetValue
+ 0001:00000288       SysInit.AllocTlsBuffer
+ 0001:00000294       SysInit.GetTlsSize
+ 0001:0000029C       SysInit.InitThreadTLS
+ 0001:000002E0       SysInit.InitProcessTLS
+ 0001:0000030C       SysInit.ExitThreadTLS
+ 0001:00000344       SysInit.ExitProcessTLS
+ 0001:00000368       SysInit.InitializeModule
+ 0001:00000374       SysInit.UninitializeModule
+ 0001:00000398       SysInit.@InitPkg
+ 0001:000003FC       SysInit.@PackageLoad
+ 0001:00000408       SysInit.@PackageUnload
+ 0001:000004E0       Windows.EnumResourceNames
+ 0001:000004E8       Windows.FreeLibrary
+ 0001:000004F0       Windows.GetCurrentThreadId
+ 0001:000004F8       Windows.GetProcAddress
+ 0001:00000500       Windows.LoadLibrary
+ 0001:00000508       Windows.CallNextHookEx
+ 0001:00000510       Windows.GetAncestor
+ 0001:00000518       Windows.IsWindow
+ 0001:00000520       Windows.IsWindowVisible
+ 0001:00000528       Windows.MessageBox
+ 0001:00000530       Windows.PeekMessage
+ 0001:00000538       Windows.PostMessage
+ 0001:00000540       Windows.SetWindowsHookEx
+ 0001:00000548       Windows.UnhookWindowsHookEx
+ 0001:00000550       Windows.Finalization
+ 0001:00001188       VA508AccessibilityConst.Finalization
+ 0001:0000132C       oleacc2..CoCAccPropServices
+ 0001:000013B8       oleacc2.CoCAccPropServices.Create
+ 0001:0000141C       oleacc2.CoCAccPropServices.CreateRemote
+ 0001:0000149C       oleacc2.Finalization
+ 0001:000014CC       MSAAConstants.Finalization
+ 0001:00001628       VA508MSAASupport..TImageEventData
+ 0001:00001684       VA508MSAASupport..TListProcData
+ 0001:000016E0       VA508MSAASupport..TProcData
+ 0001:00001844       VA508MSAASupport..TMSAAServer
+ 0001:0000189C       VA508MSAASupport.NotifyEvent
+ 0001:00001948       VA508MSAASupport.IncAccServices
+ 0001:000019E4       VA508MSAASupport.DecAccServices
+ 0001:00001A08       VA508MSAASupport.Cleanup
+ 0001:00001A28       VA508MSAASupport.FindServer
+ 0001:00001AE4       VA508MSAASupport.RegisterComponentImageListQueryEvent
+ 0001:00001BD4       VA508MSAASupport.UnregisterComponentImageListQueryEvent
+ 0001:00001CA0       VA508MSAASupport.RegisterMSAAComponentQueryProc
+ 0001:00001D88       VA508MSAASupport.UnregisterMSAAComponentQueryProc
+ 0001:00001E44       VA508MSAASupport.RegisterMSAAComponentListQueryProc
+ 0001:00001F2C       VA508MSAASupport.UnregisterMSAAComponentListQueryProc
+ 0001:00001FE8       VA508MSAASupport.TMSAAServer.AddImageEvent
+ 0001:00002050       VA508MSAASupport.TMSAAServer.AddListProc
+ 0001:00002088       VA508MSAASupport.TMSAAServer.AddProc
+ 0001:000020C0       VA508MSAASupport.TMSAAServer.AssignServerType
+ 0001:000020E0       VA508MSAASupport.TMSAAServer.Attach
+ 0001:00002134       VA508MSAASupport.TMSAAServer.Create
+ 0001:00002194       VA508MSAASupport.TMSAAServer.Destroy
+ 0001:000021D0       VA508MSAASupport.TMSAAServer.Detatch
+ 0001:00002230       VA508MSAASupport.TMSAAServer.EventCount
+ 0001:00002238       VA508MSAASupport.TMSAAServer.ImageEventIndex
+ 0001:00002294       VA508MSAASupport.TMSAAServer.ListProcIndex
+ 0001:000022E4       VA508MSAASupport.TMSAAServer.GetComponent
+ 0001:000022E8       VA508MSAASupport.Append
+ 0001:000023A0       VA508MSAASupport.GetImageLabelText
+ 0001:00002434       VA508MSAASupport.DoTreeView
+ 0001:00002574       VA508MSAASupport.DoListView
+ 0001:00002890       VA508MSAASupport.DoListComponent
+ 0001:000028FC       VA508MSAASupport.DoNormalComponent
+ 0001:00002964       VA508MSAASupport.HasProperty
+ 0001:0000298C       VA508MSAASupport.NoProperty
+ 0001:000029A8       VA508MSAASupport.TMSAAServer.GetPropValue
+ 0001:00002B68       VA508MSAASupport.TMSAAServer.Hook
+ 0001:00002B88       VA508MSAASupport.TMSAAServer.RemoveImageEvent
+ 0001:00002BB8       VA508MSAASupport.TMSAAServer.RemoveListProc
+ 0001:00002BDC       VA508MSAASupport.TMSAAServer.RemoveProc
+ 0001:00002C00       VA508MSAASupport.TMSAAServer.ValidateServerType
+ 0001:00002C74       VA508MSAASupport.TMSAAServer.UnassignServerType
+ 0001:00002C98       VA508MSAASupport.TMSAAServer.UnHook
+ 0001:00002CA8       VA508MSAASupport.TMSAAServer.MSAAWindowProc
+ 0001:00002CD0       VA508MSAASupport.TMSAAServer.ProcIndex
+ 0001:00002D3C       VA508MSAASupport.Finalization
+ 0001:00002D8C       VA508ScreenReaderDLLLinker.Initialize
+ 0001:00002D98       VA508ScreenReaderDLLLinker.ShutDown
+ 0001:00002D9C       VA508ScreenReaderDLLLinker.RegisterCustomBehavior
+ 0001:00002DA4       VA508ScreenReaderDLLLinker.ComponentData
+ 0001:00002DAC       VA508ScreenReaderDLLLinker.SpeakText
+ 0001:00002DB4       VA508ScreenReaderDLLLinker.IsRunning
+ 0001:00002DC0       VA508ScreenReaderDLLLinker.ConfigChangePending
+ 0001:00002DC4       VA508ScreenReaderDLLLinker.ClearProcPointers
+ 0001:00002E04       VA508ScreenReaderDLLLinker.InitializeScreenReaderLink
+ 0001:00002E40       VA508ScreenReaderDLLLinker.CloseScreenReaderLink
+ 0001:00002E68       VA508ScreenReaderDLLLinker.LoadScreenReader
+ 0001:00002FD4       VA508ScreenReaderDLLLinker.CheckRunning
+ 0001:00003020       VA508ScreenReaderDLLLinker.CheckProcs
+ 0001:000031D0       VA508ScreenReaderDLLLinker.CheckFile
+ 0001:000032B8       VA508ScreenReaderDLLLinker.ScanScreenReaders
+ 0001:0000346C       VA508ScreenReaderDLLLinker.FindScreenReaders
+ 0001:00003530       VA508ScreenReaderDLLLinker.ScreenReaderDLLsExist
+ 0001:00003548       VA508ScreenReaderDLLLinker.IsScreenReaderSupported
+ 0001:000035D0       VA508ScreenReaderDLLLinker.Finalization
+ 0001:00003718       VA508AccessibilityRouter..TVA508ScreenReader
+ 0001:000037D4       VA508AccessibilityRouter..TNullScreenReader
+ 0001:00003850       VA508AccessibilityRouter..TMasterScreenReader
+ 0001:000038CC       VA508AccessibilityRouter.VA508RouterInitProc
+ 0001:00003908       VA508AccessibilityRouter.GetScreenReader
+ 0001:00003950       VA508AccessibilityRouter.PostScreenReaderCheckEvent
+ 0001:00003C38       VA508AccessibilityRouter.CreateTimer
+ 0001:00003C9C       VA508AccessibilityRouter.ScreenReaderSystemActive
+ 0001:00003D7C       VA508AccessibilityRouter.SpecifyFormIsNotADialog
+ 0001:00003E80       VA508AccessibilityRouter.TMasterScreenReader.AddComponentDataNeededEventHandler
+ 0001:00003E94       VA508AccessibilityRouter.TMasterScreenReader.Create
+ 0001:00003EF8       VA508AccessibilityRouter.Decode
+ 0001:00003F84       VA508AccessibilityRouter.TMasterScreenReader.DecodeBehavior
+ 0001:0000405C       VA508AccessibilityRouter.TMasterScreenReader.Destroy
+ 0001:000040A0       VA508AccessibilityRouter.Coded
+ 0001:00004174       VA508AccessibilityRouter.TMasterScreenReader.EncodeBehavior
+ 0001:00004214       VA508AccessibilityRouter.TMasterScreenReader.HandleSRException
+ 0001:00004288       VA508AccessibilityRouter.TMasterScreenReader.ProcessCustomKeyCommand
+ 0001:000042B4       VA508AccessibilityRouter.TMasterScreenReader.RegisterClassAsMSAA
+ 0001:00004318       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomBehavior
+ 0001:0000442C       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomClassBehavior
+ 0001:000044A4       VA508AccessibilityRouter.EnumResNameProc
+ 0001:000044F8       VA508AccessibilityRouter.EnsureDialogAreSpecified
+ 0001:00004730       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomData
+ 0001:00004880       VA508AccessibilityRouter.AddDescription
+ 0001:000049AC       VA508AccessibilityRouter.TMasterScreenReader.RegisterCustomKeyMapping
+ 0001:00004A8C       VA508AccessibilityRouter.TMasterScreenReader.RegisterDictionaryChange
+ 0001:00004AF4       VA508AccessibilityRouter.TMasterScreenReader.RegistrationAllowed
+ 0001:00004B0C       VA508AccessibilityRouter.TMasterScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:00004B20       VA508AccessibilityRouter.TMasterScreenReader.Speak
+ 0001:00004BC4       VA508AccessibilityRouter.ComponentDataRequested
+ 0001:00004CF4       VA508AccessibilityRouter.TNullScreenReader.AddComponentDataNeededEventHandler
+ 0001:00004CFC       VA508AccessibilityRouter.TNullScreenReader.RegisterClassAsMSAA
+ 0001:00004D24       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomClassBehavior
+ 0001:00004D4C       VA508AccessibilityRouter.TNullScreenReader.RegisterCustomKeyMapping
+ 0001:00004D94       VA508AccessibilityRouter.TNullScreenReader.RegisterDictionaryChange
+ 0001:00004DBC       VA508AccessibilityRouter.TNullScreenReader.RemoveComponentDataNeededEventHandler
+ 0001:00004DC4       VA508AccessibilityRouter.TNullScreenReader.Speak
+ 0001:00004DEC       VA508AccessibilityRouter.Finalization
+ 0001:00004E58       VA508ImageListLabeler..TVA508ImageListLabel
+ 0001:00004F98       VA508ImageListLabeler..TVA508ImageListLabels
+ 0001:0000507C       VA508ImageListLabeler..TVA508ImageListComponent
+ 0001:00005168       VA508ImageListLabeler..TVA508ImageListComponents
+ 0001:00005244       VA508ImageListLabeler..TVA508ImageListLabeler
+ 0001:000053A8       VA508ImageListLabeler.Register
+ 0001:000053D4       VA508ImageListLabeler.TVA508ImageListLabeler.ComponentImageListChanged
+ 0001:000053DC       VA508ImageListLabeler.TVA508ImageListLabeler.Create
+ 0001:00005480       VA508ImageListLabeler.TVA508ImageListLabeler.Destroy
+ 0001:000054E8       VA508ImageListLabeler.TVA508ImageListLabeler.ImageIndexQuery
+ 0001:000055A0       VA508ImageListLabeler.TVA508ImageListLabeler.ImageListChange
+ 0001:00005640       VA508ImageListLabeler.TVA508ImageListLabeler.ItemChanged
+ 0001:00005660       VA508ImageListLabeler.TVA508ImageListLabeler.Loaded
+ 0001:00005688       VA508ImageListLabeler.TVA508ImageListLabeler.SaveChanges
+ 0001:000057D8       VA508ImageListLabeler.TVA508ImageListLabeler.Notification
+ 0001:00005804       VA508ImageListLabeler.TVA508ImageListLabeler.SetImageList
+ 0001:000059A4       VA508ImageListLabeler.TVA508ImageListLabeler.SetRemoteLabeler
+ 0001:000059CC       VA508ImageListLabeler.TVA508ImageListLabels.Add
+ 0001:000059D8       VA508ImageListLabeler.TVA508ImageListLabels.Create
+ 0001:00005AC8       VA508ImageListLabeler.TVA508ImageListLabels.Destroy
+ 0001:00005B0C       VA508ImageListLabeler.TVA508ImageListLabels.GetAttr
+ 0001:00005B28       VA508ImageListLabeler.TVA508ImageListLabels.GetAttrCount
+ 0001:00005B34       VA508ImageListLabeler.TVA508ImageListLabels.GetImageData
+ 0001:00005BA8       VA508ImageListLabeler.TVA508ImageListLabels.GetItem
+ 0001:00005BBC       VA508ImageListLabeler.TVA508ImageListLabels.GetItemAttr
+ 0001:00005C80       VA508ImageListLabeler.TVA508ImageListLabels.GetOverlayData
+ 0001:00005CF8       VA508ImageListLabeler.TVA508ImageListLabels.GetOwner
+ 0001:00005CFC       VA508ImageListLabeler.TVA508ImageListLabels.Notify
+ 0001:00005D10       VA508ImageListLabeler.TVA508ImageListLabels.ResetData
+ 0001:00005D2C       VA508ImageListLabeler.TVA508ImageListLabels.SetItem
+ 0001:00005D34       VA508ImageListLabeler.TVA508ImageListLabels.Update
+ 0001:00005D48       VA508ImageListLabeler.TVA508ImageListLabel.Assign
+ 0001:00005D84       VA508ImageListLabeler.TVA508ImageListLabel.Changed
+ 0001:00005D98       VA508ImageListLabeler.TVA508ImageListLabel.Create
+ 0001:00005DDC       VA508ImageListLabeler.TVA508ImageListLabel.Destroy
+ 0001:00005E04       VA508ImageListLabeler.TVA508ImageListLabel.Labeler
+ 0001:00005E20       VA508ImageListLabeler.TVA508ImageListLabel.Refresh
+ 0001:00005E2C       VA508ImageListLabeler.TVA508ImageListLabel.SetCaption
+ 0001:00005E60       VA508ImageListLabeler.TVA508ImageListLabel.SetImageIndex
+ 0001:00005ED8       VA508ImageListLabeler.TVA508ImageListLabel.SetOverlayIndex
+ 0001:00005EEC       VA508ImageListLabeler.TVA508ImageListComponents.Add
+ 0001:00005EF8       VA508ImageListLabeler.TVA508ImageListComponents.Create
+ 0001:00005F3C       VA508ImageListLabeler.TVA508ImageListComponents.Destroy
+ 0001:00005F68       VA508ImageListLabeler.TVA508ImageListComponents.GetItem
+ 0001:00005F7C       VA508ImageListLabeler.TVA508ImageListComponents.GetOwner
+ 0001:00005F80       VA508ImageListLabeler.TVA508ImageListComponents.Notify
+ 0001:00005F98       VA508ImageListLabeler.TVA508ImageListComponents.SetItem
+ 0001:00005FA0       VA508ImageListLabeler.TVA508ImageListComponent.Assign
+ 0001:00005FD0       VA508ImageListLabeler.TVA508ImageListComponent.ComponentNotifyEvent
+ 0001:00005FE8       VA508ImageListLabeler.TVA508ImageListComponent.Destroy
+ 0001:00006024       VA508ImageListLabeler.TVA508ImageListComponent.GetDisplayName
+ 0001:000060DC       VA508ImageListLabeler.TVA508ImageListComponent.ImageListTypes
+ 0001:000061A8       VA508ImageListLabeler.TVA508ImageListComponent.Labeler
+ 0001:000061C4       VA508ImageListLabeler.TVA508ImageListComponent.SetComponent
+ 0001:00006314       VA508ImageListLabeler.Finalization
+ 0001:00006344       VA508Classes..TFormData
+ 0001:000063EC       VA508Classes..EVA508AccessibilityException
+ 0001:00006554       VA508Classes..TParentChildFormTracker
+ 0001:000066DC       VA508Classes..TVA508Parser
+ 0001:0000678C       VA508Classes.HasAnotherAccessibilityManager
+ 0001:00006804       VA508Classes.EnsureManager
+ 0001:00006920       VA508Classes.VA508ComponentCreationCheck
+ 0001:00006C44       VA508Classes.VA508ComponentDestructionCheck
+ 0001:00006EE8       VA508Classes.TFormData.HasManager
+ 0001:00006EF4       VA508Classes.TFormData.HasParent
+ 0001:00006EFC       VA508Classes.TFormData.SetFormClassName
+ 0001:00006F58       VA508Classes.TParentChildFormTracker.AddForm
+ 0001:00007020       VA508Classes.TParentChildFormTracker.AddLink
+ 0001:00007098       VA508Classes.TParentChildFormTracker.Clear
+ 0001:000070A4       VA508Classes.TParentChildFormTracker.Create
+ 0001:000070E0       VA508Classes.TParentChildFormTracker.Destroy
+ 0001:00007110       VA508Classes.TParentChildFormTracker.FindForm
+ 0001:000071AC       VA508Classes.TParentChildFormTracker.FormCount
+ 0001:000071B4       VA508Classes.TParentChildFormTracker.GetFormData
+ 0001:000071C8       VA508Classes.TParentChildFormTracker.ParentChildErrorDescription
+ 0001:000076C4       VA508Classes.TParentChildFormTracker.ParentChildErrorStatus
+ 0001:000077C4       VA508Classes.TVA508Parser.GetParentClassName
+ 0001:00007984       VA508Classes.TVA508Parser.LastLineRead
+ 0001:00007988       VA508Classes.TVA508Parser.LastPosition
+ 0001:00007990       VA508Classes.IgnoreToken
+ 0001:000079C0       VA508Classes.InvalidSection
+ 0001:00007A6C       VA508Classes.TVA508Parser.ParseToken
+ 0001:00007CCC       VA508Classes.Finalization
+ 0001:00007D4C       VA508DelphiCompatibility..TVA508StaticTextManager
+ 0001:00007E48       VA508DelphiCompatibility..TCheckBox508Manager
+ 0001:00007EFC       VA508DelphiCompatibility..TCheckListBox508Manager
+ 0001:00007FB4       VA508DelphiCompatibility..TVA508EditManager
+ 0001:00008068       VA508DelphiCompatibility..TVA508ComboManager
+ 0001:0000811C       VA508DelphiCompatibility..TCustomGrid508Manager
+ 0001:000081D4       VA508DelphiCompatibility.Append
+ 0001:00008270       VA508DelphiCompatibility.AppendHeader
+ 0001:000082E8       VA508DelphiCompatibility.ListViewIndexQueryProc
+ 0001:00008498       VA508DelphiCompatibility.RegisterStandardDelphiComponents
+ 0001:000085FC       VA508DelphiCompatibility.CustomComboAlternateHandle
+ 0001:00008604       VA508DelphiCompatibility.GetCheckBoxComponentName
+ 0001:0000865C       VA508DelphiCompatibility.GetCheckBoxInstructionMessage
+ 0001:000086D0       VA508DelphiCompatibility.GetCheckBoxStateText
+ 0001:00008754       VA508DelphiCompatibility.TCheckBox508Manager.Create
+ 0001:000087A0       VA508DelphiCompatibility.TCheckBox508Manager.GetComponentName
+ 0001:000087B8       VA508DelphiCompatibility.TCheckBox508Manager.GetInstructions
+ 0001:000087D4       VA508DelphiCompatibility.TCheckBox508Manager.GetState
+ 0001:000087EC       VA508DelphiCompatibility.TCheckListBox508Manager.Create
+ 0001:00008838       VA508DelphiCompatibility.TCheckListBox508Manager.GetComponentName
+ 0001:000088A0       VA508DelphiCompatibility.TCheckListBox508Manager.GetItemInstructions
+ 0001:000088D0       VA508DelphiCompatibility.TCheckListBox508Manager.GetIndex
+ 0001:00008904       VA508DelphiCompatibility.TCheckListBox508Manager.GetItem
+ 0001:00008930       VA508DelphiCompatibility.TCheckListBox508Manager.GetState
+ 0001:00008960       VA508DelphiCompatibility.TCustomGrid508Manager.Create
+ 0001:000089AC       VA508DelphiCompatibility.TCustomGrid508Manager.GetComponentName
+ 0001:000089D0       VA508DelphiCompatibility.TCustomGrid508Manager.GetInstructions
+ 0001:00008A5C       VA508DelphiCompatibility.TCustomGrid508Manager.GetItem
+ 0001:00008A90       VA508DelphiCompatibility.TCustomGrid508Manager.GetValue
+ 0001:00008CF8       VA508DelphiCompatibility.TVA508StaticTextManager.Create
+ 0001:00008D44       VA508DelphiCompatibility.TVA508StaticTextManager.GetCaption
+ 0001:00008D64       VA508DelphiCompatibility.TVA508StaticTextManager.GetComponentName
+ 0001:00008D88       VA508DelphiCompatibility.TVA508StaticTextManager.GetValue
+ 0001:00008E0C       VA508DelphiCompatibility.TVA508EditManager.Create
+ 0001:00008E58       VA508DelphiCompatibility.TVA508EditManager.GetValue
+ 0001:00008E6C       VA508DelphiCompatibility.TVA508ComboManager.Create
+ 0001:00008EB8       VA508DelphiCompatibility.TVA508ComboManager.GetValue
+ 0001:00008ECC       VA508DelphiCompatibility.Finalization
+ 0001:00008F6C       VA508AccessibilityManager..TVA508AccessibilityItem
+ 0001:00009134       VA508AccessibilityManager..TVA508AccessibilityCollection
+ 0001:0000921C       VA508AccessibilityManager..TVA508AccessibilityManager
+ 0001:00009408       VA508AccessibilityManager..TVA508ComponentAccessibility
+ 0001:000097DC       VA508AccessibilityManager..TVA508ComponentManager
+ 0001:000098D8       VA508AccessibilityManager..TVA508ChainedLabel
+ 0001:00009A10       VA508AccessibilityManager..TVA508StaticText
+ 0001:00009C94       VA508AccessibilityManager..TVA508SilentComponent
+ 0001:00009D90       VA508AccessibilityManager..TVA508ManagedComponentClass
+ 0001:00009E94       VA508AccessibilityManager..TVA508ComplexComponentManager
+ 0001:00009FCC       VA508AccessibilityManager..TComponentHelper
+ 0001:0000A07C       VA508AccessibilityManager..TVAGlobalComponentRegistry
+ 0001:0000A0F8       VA508AccessibilityManager..TDFMData
+ 0001:0000A178       VA508AccessibilityManager..TMSAAData
+ 0001:0000A1D0       VA508AccessibilityManager.CreateGlobalRegistry
+ 0001:0000A1F4       VA508AccessibilityManager.CreateGlobalVars
+ 0001:0000A214       VA508AccessibilityManager.FreeGlobalVars
+ 0001:0000A288       VA508AccessibilityManager.TVA508AccessibilityItem.Assign
+ 0001:0000A2E4       VA508AccessibilityManager.TVA508AccessibilityItem.Create
+ 0001:0000A31C       VA508AccessibilityManager.TVA508AccessibilityItem.Destroy
+ 0001:0000A360       VA508AccessibilityManager.TVA508AccessibilityItem.GetDisplayName
+ 0001:0000A438       VA508AccessibilityManager.TVA508AccessibilityItem.InitComponent
+ 0001:0000A45C       VA508AccessibilityManager.TVA508AccessibilityItem.Manager
+ 0001:0000A464       VA508AccessibilityManager.TVA508AccessibilityItem.Parent
+ 0001:0000A468       VA508AccessibilityManager.TVA508AccessibilityItem.SetComponent
+ 0001:0000A4D8       VA508AccessibilityManager.TVA508AccessibilityItem.SetDefault
+ 0001:0000A564       VA508AccessibilityManager.TVA508AccessibilityItem.SetLabel
+ 0001:0000A58C       VA508AccessibilityManager.TVA508AccessibilityItem.SetProperty
+ 0001:0000A5E8       VA508AccessibilityManager.TVA508AccessibilityItem.SetText
+ 0001:0000A620       VA508AccessibilityManager.TVA508AccessibilityItem.UpdateStatus
+ 0001:0000A664       VA508AccessibilityManager.TVA508AccessibilityCollection.Add
+ 0001:0000A670       VA508AccessibilityManager.TVA508AccessibilityCollection.ComponentNotifyEvent
+ 0001:0000A6BC       VA508AccessibilityManager.TVA508AccessibilityCollection.Create
+ 0001:0000A738       VA508AccessibilityManager.TVA508AccessibilityCollection.Destroy
+ 0001:0000A778       VA508AccessibilityManager.TVA508AccessibilityCollection.EnsureItemExists
+ 0001:0000A780       VA508AccessibilityManager.TVA508AccessibilityCollection.FindItem
+ 0001:0000A824       VA508AccessibilityManager.TVA508AccessibilityCollection.GetItem
+ 0001:0000A838       VA508AccessibilityManager.TVA508AccessibilityCollection.GetOwner
+ 0001:0000A83C       VA508AccessibilityManager.TVA508AccessibilityCollection.IsComponentRegistered
+ 0001:0000A8A0       VA508AccessibilityManager.TVA508AccessibilityCollection.UnregisterComponent
+ 0001:0000A924       VA508AccessibilityManager.TVA508AccessibilityCollection.SetItem
+ 0001:0000A92C       VA508AccessibilityManager.TVA508AccessibilityCollection.RegisterComponent
+ 0001:0000A9BC       VA508AccessibilityManager.TVA508AccessibilityManager.Create
+ 0001:0000AA24       VA508AccessibilityManager.TVA508AccessibilityManager.Destroy
+ 0001:0000AA6C       VA508AccessibilityManager.FindOwnedComponent
+ 0001:0000AB0C       VA508AccessibilityManager.TVA508AccessibilityManager.FindComponentOnForm
+ 0001:0000ABE8       VA508AccessibilityManager.TVA508AccessibilityManager.GetAccessLabel
+ 0001:0000AC00       VA508AccessibilityManager.TVA508AccessibilityManager.GetAccessProperty
+ 0001:0000AC24       VA508AccessibilityManager.TVA508AccessibilityManager.GetAccessText
+ 0001:0000AC48       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentManager
+ 0001:0000AC60       VA508AccessibilityManager.error
+ 0001:0000ACA4       VA508AccessibilityManager.BasicComponentCheck
+ 0001:0000AD24       VA508AccessibilityManager.TVA508AccessibilityManager.GetComponentName
+ 0001:0000AD9C       VA508AccessibilityManager.TVA508AccessibilityManager.GetData
+ 0001:0000ADA0       VA508AccessibilityManager.TVA508AccessibilityManager.GetDefaultStringProperty
+ 0001:0000AE68       VA508AccessibilityManager.AddLabels
+ 0001:0000AF8C       VA508AccessibilityManager.TVA508AccessibilityManager.GetLabelStrings
+ 0001:0000AFB4       VA508AccessibilityManager.TVA508AccessibilityManager.GetProperties
+ 0001:0000AFD4       VA508AccessibilityManager.TVA508AccessibilityManager.GetPropertList
+ 0001:0000B19C       VA508AccessibilityManager.TVA508AccessibilityManager.GetRootComponent
+ 0001:0000B278       VA508AccessibilityManager.TVA508AccessibilityManager.GetUseDefault
+ 0001:0000B294       VA508AccessibilityManager.TVA508AccessibilityManager.IsPropertyNameValid
+ 0001:0000B300       VA508AccessibilityManager.TVA508AccessibilityManager.Loaded
+ 0001:0000B40C       VA508AccessibilityManager.UpdateComponent
+ 0001:0000B4B8       VA508AccessibilityManager.TVA508AccessibilityManager.Notification
+ 0001:0000B510       VA508AccessibilityManager.TVA508AccessibilityManager.OwnerCheck
+ 0001:0000B52C       VA508AccessibilityManager.TVA508AccessibilityManager.DefineProperties
+ 0001:0000B568       VA508AccessibilityManager.TVA508AccessibilityManager.ReadData
+ 0001:0000B7C8       VA508AccessibilityManager.TVA508AccessibilityManager.RefreshComponents
+ 0001:0000B7D0       VA508AccessibilityManager.TVA508AccessibilityManager.WriteData
+ 0001:0000B9FC       VA508AccessibilityManager.TVA508AccessibilityManager.ScreenReaderInquiry
+ 0001:0000BB54       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessLabel
+ 0001:0000BB74       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessProperty
+ 0001:0000BB94       VA508AccessibilityManager.TVA508AccessibilityManager.SetAccessText
+ 0001:0000BBB4       VA508AccessibilityManager.TVA508AccessibilityManager.SetComponentManager
+ 0001:0000BBD0       VA508AccessibilityManager.TVA508AccessibilityManager.SetUseDefault
+ 0001:0000BBF0       VA508AccessibilityManager.Update
+ 0001:0000BC84       VA508AccessibilityManager.TVA508AccessibilityManager.Initialize
+ 0001:0000BD94       VA508AccessibilityManager..TAlternateHandleData
+ 0001:0000BDF8       VA508AccessibilityManager.RegisterAlternateHandleComponent
+ 0001:0000BE70       VA508AccessibilityManager.RegisterComplexComponentManager
+ 0001:0000BEE4       VA508AccessibilityManager.RegisterManagedComponentClass
+ 0001:0000BF5C       VA508AccessibilityManager.FindMSAAQueryData
+ 0001:0000BFA8       VA508AccessibilityManager.RegisterMSAAProc
+ 0001:0000BFFC       VA508AccessibilityManager.RegisterMSAAQueryClassProc
+ 0001:0000C004       VA508AccessibilityManager.RegisterMSAAQueryListClassProc
+ 0001:0000C010       VA508AccessibilityManager.HandleStillValid
+ 0001:0000C044       VA508AccessibilityManager.NoChangeNeeded
+ 0001:0000C0BC       VA508AccessibilityManager.Init
+ 0001:0000C110       VA508AccessibilityManager.ProcessCaptionChange
+ 0001:0000C1CC       VA508AccessibilityManager.ProcessItemChange
+ 0001:0000C4C4       VA508AccessibilityManager.ProcessStateChange
+ 0001:0000C58C       VA508AccessibilityManager.AddControlType
+ 0001:0000C60C       VA508AccessibilityManager.SendChangeData
+ 0001:0000C670       VA508AccessibilityManager.TVAGlobalComponentRegistry.CheckForChangeEvent
+ 0001:0000C73C       VA508AccessibilityManager.HelperValid
+ 0001:0000C7D4       VA508AccessibilityManager.UpdateComponentData
+ 0001:0000C8C8       VA508AccessibilityManager.InitializeVars
+ 0001:0000C954       VA508AccessibilityManager.GetDataValues
+ 0001:0000CBB4       VA508AccessibilityManager.TVAGlobalComponentRegistry.ComponentDataNeededEvent
+ 0001:0000CDA8       VA508AccessibilityManager.CallWindProcHookProc
+ 0001:0000CE74       VA508AccessibilityManager.GetMessageHookProc
+ 0001:0000CF04       VA508AccessibilityManager.TVAGlobalComponentRegistry.Create
+ 0001:0000D020       VA508AccessibilityManager.TVAGlobalComponentRegistry.Destroy
+ 0001:0000D0A0       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetCompKey
+ 0001:0000D0B4       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHandle
+ 0001:0000D188       VA508AccessibilityManager.TVAGlobalComponentRegistry.GetComponentHelper
+ 0001:0000D234       VA508AccessibilityManager.TVAGlobalComponentRegistry.HasHandle
+ 0001:0000D328       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterFieldObject
+ 0001:0000D3EC       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterMSAA
+ 0001:0000D430       VA508AccessibilityManager.CheckManagedClasses
+ 0001:0000D4D8       VA508AccessibilityManager.CheckComplexClasses
+ 0001:0000D550       VA508AccessibilityManager.CreateHelper
+ 0001:0000D5EC       VA508AccessibilityManager.RegisterComponent
+ 0001:0000D714       VA508AccessibilityManager.TVAGlobalComponentRegistry.RegisterComponent
+ 0001:0000D778       VA508AccessibilityManager.SkipCheck
+ 0001:0000D79C       VA508AccessibilityManager.TVAGlobalComponentRegistry.TimerEvent
+ 0001:0000D8BC       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterComponent
+ 0001:0000D9EC       VA508AccessibilityManager.TVAGlobalComponentRegistry.UnregisterMSAA
+ 0001:0000DA30       VA508AccessibilityManager.UpdateHandle
+ 0001:0000DBE0       VA508AccessibilityManager.FindRootHandle
+ 0001:0000DC68       VA508AccessibilityManager.UpdateAllHandles
+ 0001:0000DCDC       VA508AccessibilityManager.UpdateChildrenHandles
+ 0001:0000DE30       VA508AccessibilityManager.TVAGlobalComponentRegistry.UpdateHandles
+ 0001:0000DEBC       VA508AccessibilityManager.TVA508ComponentManager.Create
+ 0001:0000DEF0       VA508AccessibilityManager.TVA508ComponentManager.GetCaption
+ 0001:0000DEFC       VA508AccessibilityManager.TVA508ComponentManager.GetComponentName
+ 0001:0000DF08       VA508AccessibilityManager.TVA508ComponentManager.GetData
+ 0001:0000DF3C       VA508AccessibilityManager.TVA508ComponentManager.GetInstructions
+ 0001:0000DF48       VA508AccessibilityManager.TVA508ComponentManager.GetItem
+ 0001:0000DF4C       VA508AccessibilityManager.TVA508ComponentManager.GetItemInstructions
+ 0001:0000DF58       VA508AccessibilityManager.TVA508ComponentManager.GetState
+ 0001:0000DF64       VA508AccessibilityManager.TVA508ComponentManager.GetValue
+ 0001:0000DF70       VA508AccessibilityManager.TVA508ComponentManager.ManageCaption
+ 0001:0000DF78       VA508AccessibilityManager.TVA508ComponentManager.ManageComponentName
+ 0001:0000DF80       VA508AccessibilityManager.TVA508ComponentManager.ManageData
+ 0001:0000DF88       VA508AccessibilityManager.TVA508ComponentManager.ManageInstructions
+ 0001:0000DF90       VA508AccessibilityManager.TVA508ComponentManager.ManageItemInstructions
+ 0001:0000DF98       VA508AccessibilityManager.TVA508ComponentManager.ManageState
+ 0001:0000DFA0       VA508AccessibilityManager.TVA508ComponentManager.ManageValue
+ 0001:0000DFA8       VA508AccessibilityManager.TVA508ComponentManager.MonitorForItemChange
+ 0001:0000DFB0       VA508AccessibilityManager.TVA508ComponentManager.MonitorForStateChange
+ 0001:0000DFB8       VA508AccessibilityManager.TVA508ComponentManager.Redirect
+ 0001:0000DFC0       VA508AccessibilityManager.TVA508ComponentManager.RedirectsComponent
+ 0001:0000DFC8       VA508AccessibilityManager.TVA508ComponentManager.ComponentChange
+ 0001:0000DFCC       VA508AccessibilityManager.TVA508ManagedComponentClass.Create
+ 0001:0000E018       VA508AccessibilityManager.TVA508SilentComponent.GetComponentName
+ 0001:0000E038       VA508AccessibilityManager.TVA508SilentComponent.GetInstructions
+ 0001:0000E058       VA508AccessibilityManager.TVA508SilentComponent.GetState
+ 0001:0000E078       VA508AccessibilityManager.TVA508SilentComponent.GetValue
+ 0001:0000E098       VA508AccessibilityManager.TVA508ComponentAccessibility.Create
+ 0001:0000E0E8       VA508AccessibilityManager.TVA508ComponentAccessibility.SetComponent
+ 0001:0000E280       VA508AccessibilityManager.InitializeComponentHelper
+ 0001:0000E408       VA508AccessibilityManager.TComponentHelper.InitializeComponentManager
+ 0001:0000E48C       VA508AccessibilityManager.TComponentHelper.ClearRedirect
+ 0001:0000E49C       VA508AccessibilityManager.TComponentHelper.Create
+ 0001:0000E4D0       VA508AccessibilityManager.TComponentHelper.Destroy
+ 0001:0000E52C       VA508AccessibilityManager.TComponentHelper.GetCaption
+ 0001:0000E5CC       VA508AccessibilityManager.TComponentHelper.GetComponentName
+ 0001:0000E660       VA508AccessibilityManager.TComponentHelper.GetData
+ 0001:0000E704       VA508AccessibilityManager.TComponentHelper.GetInstructions
+ 0001:0000E798       VA508AccessibilityManager.TComponentHelper.GetItem
+ 0001:0000E800       VA508AccessibilityManager.TComponentHelper.GetItemInstructions
+ 0001:0000E894       VA508AccessibilityManager.TComponentHelper.GetState
+ 0001:0000E944       VA508AccessibilityManager.TComponentHelper.GetValue
+ 0001:0000E9C0       VA508AccessibilityManager.TComponentHelper.ManageComponentName
+ 0001:0000EA0C       VA508AccessibilityManager.TComponentHelper.ManageData
+ 0001:0000EA3C       VA508AccessibilityManager.TComponentHelper.ManageItemInstructions
+ 0001:0000EA88       VA508AccessibilityManager.TComponentHelper.ManageValue
+ 0001:0000EACC       VA508AccessibilityManager.TComponentHelper.ManageCaption
+ 0001:0000EB18       VA508AccessibilityManager.TComponentHelper.MonitorForItemChange
+ 0001:0000EB5C       VA508AccessibilityManager.TComponentHelper.MonitorForStateChange
+ 0001:0000EBB8       VA508AccessibilityManager.TComponentHelper.Redirect
+ 0001:0000EBD0       VA508AccessibilityManager.TComponentHelper.StandardComponent
+ 0001:0000EBE4       VA508AccessibilityManager.TVA508StaticText.CMFontChanged
+ 0001:0000EBF8       VA508AccessibilityManager.TVA508StaticText.CMTextChanged
+ 0001:0000EC0C       VA508AccessibilityManager.TVA508StaticText.Create
+ 0001:0000EC98       VA508AccessibilityManager.TVA508StaticText.DeleteChain
+ 0001:0000ED34       VA508AccessibilityManager.TVA508StaticText.Destroy
+ 0001:0000ED70       VA508AccessibilityManager.TVA508StaticText.DoEnter
+ 0001:0000ED9C       VA508AccessibilityManager.TVA508StaticText.DoExit
+ 0001:0000EDC8       VA508AccessibilityManager.TVA508StaticText.GetAlignment
+ 0001:0000EDD8       VA508AccessibilityManager.TVA508StaticText.GetLabelCaption
+ 0001:0000EDF0       VA508AccessibilityManager.TVA508StaticText.GetRootName
+ 0001:0000EE04       VA508AccessibilityManager.TVA508StaticText.GetShowAccelChar
+ 0001:0000EE14       VA508AccessibilityManager.TVA508StaticText.InvalidateAll
+ 0001:0000EE44       VA508AccessibilityManager.TVA508StaticText.Notification
+ 0001:0000EE84       VA508AccessibilityManager.Init
+ 0001:0000EED8       VA508AccessibilityManager.InitDrawBorder
+ 0001:0000EF78       VA508AccessibilityManager.DrawTop
+ 0001:0000EFD8       VA508AccessibilityManager.DrawBottom
+ 0001:0000F0D0       VA508AccessibilityManager.TVA508StaticText.Paint
+ 0001:0000F0FC       VA508AccessibilityManager.TVA508StaticText.SetAlignment
+ 0001:0000F108       VA508AccessibilityManager.TVA508StaticText.SetLabelCaption
+ 0001:0000F174       VA508AccessibilityManager.TVA508StaticText.SetRootName
+ 0001:0000F1F8       VA508AccessibilityManager.TVA508StaticText.SetNextLabel
+ 0001:0000F23C       VA508AccessibilityManager.TVA508StaticText.SetParent
+ 0001:0000F294       VA508AccessibilityManager.TVA508StaticText.SetShowAccelChar
+ 0001:0000F2A0       VA508AccessibilityManager.TVA508StaticText.UpdateSize
+ 0001:0000F330       VA508AccessibilityManager.TVA508ChainedLabel.Notification
+ 0001:0000F37C       VA508AccessibilityManager.Init
+ 0001:0000F3D0       VA508AccessibilityManager.DrawText
+ 0001:0000F44C       VA508AccessibilityManager.InitDrawBorder
+ 0001:0000F51C       VA508AccessibilityManager.DrawPartials
+ 0001:0000F5B8       VA508AccessibilityManager.DrawTop
+ 0001:0000F648       VA508AccessibilityManager.DrawSides
+ 0001:0000F6A8       VA508AccessibilityManager.DrawBottom
+ 0001:0000F754       VA508AccessibilityManager.TVA508ChainedLabel.Paint
+ 0001:0000F7C0       VA508AccessibilityManager.TVA508ChainedLabel.SetNextLabel
+ 0001:0000F814       VA508AccessibilityManager.TVA508ComplexComponentManager.AddSubControl
+ 0001:0000F858       VA508AccessibilityManager.TVA508ComplexComponentManager.ClearSubControls
+ 0001:0000F89C       VA508AccessibilityManager.TVA508ComplexComponentManager.Create
+ 0001:0000F8DC       VA508AccessibilityManager.TVA508ComplexComponentManager.Destroy
+ 0001:0000F90C       VA508AccessibilityManager.TVA508ComplexComponentManager.GetSubControl
+ 0001:0000F920       VA508AccessibilityManager.TVA508ComplexComponentManager.RemoveSubControl
+ 0001:0000F944       VA508AccessibilityManager.TVA508ComplexComponentManager.SubControlCount
+ 0001:0000F998       VA508AccessibilityManager.Finalization
+ 0001:0000F9F4       VA508AccessibilityCompileInfo..TfrmProgress
+ 0001:0000FD64       VA508AccessibilityCompileInfo.Hookup
+ 0001:0000FE04       VA508AccessibilityCompileInfo.StartMonitor
+ 0001:0000FE8C       VA508AccessibilityCompileInfo.StopMonitor
+ 0001:0000FEA0       VA508AccessibilityCompileInfo.Update508Monitor
+ 0001:00010034       VA508AccessibilityCompileInfo.TfrmProgress.btnReleaseClick
+ 0001:00010064       VA508AccessibilityCompileInfo.TfrmProgress.FormCreate
+ 0001:000100A8       VA508AccessibilityCompileInfo.Finalization
+ 0001:000101D8       VA508AccessibilityPE..TVA508AccessibilityManager4PE
+ 0001:000102B8       VA508AccessibilityPE..TVA508AccessibilityPropertyMapper
+ 0001:0001041C       VA508AccessibilityPE..TVA508NestedPropertyEditor
+ 0001:00010524       VA508AccessibilityPE..TVA508CollectionPropertyEditor
+ 0001:00010628       VA508AccessibilityPE..TVA508AccessibilityLabelPropertyEditor
+ 0001:00010740       VA508AccessibilityPE..TVA508AccessibilityPropertyPropertyEditor
+ 0001:00010850       VA508AccessibilityPE..TVA508AccessibilityComponentPropertyEditor
+ 0001:00010970       VA508AccessibilityPE.GetAccessibilityManager
+ 0001:00010A20       VA508AccessibilityPE.AllComponentsHaveSameManager
+ 0001:00010A74       VA508AccessibilityPE.GetStringPropertyNames
+ 0001:00010B50       VA508AccessibilityPE.QVal
+ 0001:00010BC4       VA508AccessibilityPE.StripQVal
+ 0001:00010C44       VA508AccessibilityPE.TVA508AccessibilityPropertyMapper.GetAttributes
+ 0001:00010C70       VA508AccessibilityPE.TVA508AccessibilityPropertyMapper.GetProperties
+ 0001:00010D70       VA508AccessibilityPE.TVA508NestedPropertyEditor.AllEqual
+ 0001:00010F44       VA508AccessibilityPE.TVA508NestedPropertyEditor.Create
+ 0001:00010FD8       VA508AccessibilityPE.TVA508NestedPropertyEditor.Edit
+ 0001:00011038       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetAttributes
+ 0001:00011078       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetEditLimit
+ 0001:00011098       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetName
+ 0001:000110AC       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetValue
+ 0001:00011238       VA508AccessibilityPE.TVA508NestedPropertyEditor.GetValues
+ 0001:0001145C       VA508AccessibilityPE.TVA508NestedPropertyEditor.SetValue
+ 0001:000115E4       VA508AccessibilityPE.TVA508CollectionPropertyEditor.GetColOptions
+ 0001:000115F0       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetAttributes
+ 0001:000115FC       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetManager
+ 0001:0001161C       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetProperties
+ 0001:00011624       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetValue
+ 0001:000116B8       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.GetValues
+ 0001:00011774       VA508AccessibilityPE.TVA508AccessibilityLabelPropertyEditor.SetValue
+ 0001:000117C4       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.AllEqual
+ 0001:0001186C       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetAttributes
+ 0001:00011878       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetEditLimit
+ 0001:00011880       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetManager
+ 0001:000118A0       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetRootComponent
+ 0001:000118B8       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetValue
+ 0001:0001194C       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.GetValues
+ 0001:00011AB4       VA508AccessibilityPE.TVA508AccessibilityPropertyPropertyEditor.SetValue
+ 0001:00011B04       VA508AccessibilityPE.TVA508AccessibilityComponentPropertyEditor.GetAttributes
+ 0001:00011B10       VA508AccessibilityPE.Register
+ 0001:00011C40       VA508AccessibilityPE.Finalization
+ 0001:00011D88       VA508AccessibilityCompiler..TVA508Compiler
+ 0001:00011E20       VA508AccessibilityCompiler.Register
+ 0001:00011ECC       VA508AccessibilityCompiler.Unregister
+ 0001:00011F68       VA508AccessibilityCompiler.DLLUnload
+ 0001:00011F80       VA508AccessibilityCompiler.HaveMessageServices
+ 0001:00011FB4       VA508AccessibilityCompiler.GetPluralStr
+ 0001:00011FE0       VA508AccessibilityCompiler.ShowErrorMessage
+ 0001:0001207C       VA508AccessibilityCompiler.Do508Scan
+ 0001:00012388       VA508AccessibilityCompiler.TVA508Compiler.BeforeCompile
+ 0001:000123B4       VA508AccessibilityCompiler.TVA508Compiler.BeforeCompile
+ 0001:000123B8       VA508AccessibilityCompiler.TVA508Compiler.AfterCompile
+ 0001:000123BC       VA508AccessibilityCompiler.TVA508Compiler.AfterCompile
+ 0001:000123C8       VA508AccessibilityCompiler.TVA508Compiler.AfterCompile
+ 0001:000123DC       VA508AccessibilityCompiler.TVA508Compiler.CompileNA
+ 0001:000123F0       VA508AccessibilityCompiler.TVA508Compiler.Create
+ 0001:00012440       VA508AccessibilityCompiler.TVA508Compiler.Destroy
+ 0001:00012470       VA508AccessibilityCompiler.TVA508Compiler.StopCompile
+ 0001:00012478       VA508AccessibilityCompiler.TVA508Compiler.startMessages
+ 0001:000124D0       VA508AccessibilityCompiler.MessageOK
+ 0001:000125E4       VA508AccessibilityCompiler.TVA508Compiler.stopMessages
+ 0001:00012754       VA508AccessibilityCompiler.TVA508Compiler.UpdateMonitor
+ 0001:000127D4       VA508AccessibilityCompiler.TVA508Compiler.error
+ 0001:00012888       VA508AccessibilityCompiler.TVA508Compiler.warning
+ 0001:0001293C       VA508AccessibilityCompiler.TVA508Compiler.msg
+ 0001:00012990       VA508AccessibilityCompiler.TVA508Compiler.FileNotification
+ 0001:000129D8       VA508AccessibilityCompiler.TVA508Compiler.infoMessage
+ 0001:00012A98       VA508AccessibilityCompiler.IncCacheIndexes
+ 0001:00012AF0       VA508AccessibilityCompiler.SetCacheSize
+ 0001:00012B3C       VA508AccessibilityCompiler.Add2Cache
+ 0001:00012BB0       VA508AccessibilityCompiler.GetDFMFileName
+ 0001:00012C3C       VA508AccessibilityCompiler.ValidObjectLine
+ 0001:00012D60       VA508AccessibilityCompiler.ValidateDFM
+ 0001:00012E00       VA508AccessibilityCompiler.GetComponentName
+ 0001:00012EAC       VA508AccessibilityCompiler.ClearWarningList
+ 0001:00012F20       VA508AccessibilityCompiler.GetWarningList
+ 0001:00012F88       VA508AccessibilityCompiler.GetManagerInfo
+ 0001:000132D4       VA508AccessibilityCompiler.ReportComponentWarnings
+ 0001:000133EC       VA508AccessibilityCompiler.InitCache
+ 0001:00013660       VA508AccessibilityCompiler.FileLoaded
+ 0001:000137E8       VA508AccessibilityCompiler.DFMSuccessfullyLoaded
+ 0001:000138C0       VA508AccessibilityCompiler.ScanForErrors
+ 0001:00013A64       VA508AccessibilityCompiler.ScanFormFiles
+ 0001:00013B38       VA508AccessibilityCompiler.OpenEditor
+ 0001:00013BD0       VA508AccessibilityCompiler.CloseEditor
+ 0001:00013C58       VA508AccessibilityCompiler.AttemptAutoFix
+ 0001:00014148       VA508AccessibilityCompiler.IsFileReadOnly
+ 0001:00014198       VA508AccessibilityCompiler.HandleInheritenceProblems
+ 0001:00014694       VA508AccessibilityCompiler.CloseModules
+ 0001:00014838       VA508AccessibilityCompiler.LoadCacheFile
+ 0001:00014B1C       VA508AccessibilityCompiler.SaveCacheFile
+ 0001:00014CC4       VA508AccessibilityCompiler.CreateResources
+ 0001:00014EC4       VA508AccessibilityCompiler.DestroyResources
+ 0001:00014FA8       VA508AccessibilityCompiler.Init
+ 0001:00014FFC       VA508AccessibilityCompiler.TVA508Compiler.ScanFor508Errors
+ 0001:000150F4       VA508AccessibilityCompiler.Finalization
+ 0001:0001518C       VA508ImageListLabelerPE..TfrmImageListEditor
+ 0001:000153A8       VA508ImageListLabelerPE..TVA508ImageListItemsProperty
+ 0001:000154AC       VA508ImageListLabelerPE..TVA508ImageListComponentEditor
+ 0001:0001557C       VA508ImageListLabelerPE..TVA508ImageListComponentProperty
+ 0001:0001568C       VA508ImageListLabelerPE..TVA508LabelerImageListProperty
+ 0001:00015794       VA508ImageListLabelerPE..TVA508LabelerRemoteLabelerProperty
+ 0001:000158A4       VA508ImageListLabelerPE.Register
+ 0001:00015974       VA508ImageListLabelerPE.TfrmImageListEditor.Create
+ 0001:000159D8       VA508ImageListLabelerPE.TVA508ImageListItemsProperty.GetAttributes
+ 0001:00015A18       VA508ImageListLabelerPE.TVA508ImageListItemsProperty.GetEditorClass
+ 0001:00015A20       VA508ImageListLabelerPE.TfrmImageListEditor.Destroy
+ 0001:00015A70       VA508ImageListLabelerPE.TfrmImageListEditor.ImageDataChanged
+ 0001:00015A78       VA508ImageListLabelerPE.TfrmImageListEditor.ItemChange
+ 0001:00015AC4       VA508ImageListLabelerPE.TfrmImageListEditor.IterateItems
+ 0001:00015B88       VA508ImageListLabelerPE.TfrmImageListEditor.GetImageList
+ 0001:00015BB8       VA508ImageListLabelerPE.TfrmImageListEditor.GetSize
+ 0001:00015BE8       VA508ImageListLabelerPE.TfrmImageListEditor.RedrawImages
+ 0001:00015E58       VA508ImageListLabelerPE.TfrmImageListEditor.UpdateImages
+ 0001:00015F58       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.Edit
+ 0001:00015FD4       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.ExecuteVerb
+ 0001:00015FE4       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.GetVerb
+ 0001:00016034       VA508ImageListLabelerPE.TVA508ImageListComponentEditor.GetVerbCount
+ 0001:0001603C       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.FilterValues
+ 0001:00016124       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.GetValue
+ 0001:000161D0       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.GetValues
+ 0001:00016204       VA508ImageListLabelerPE.TVA508ImageListComponentProperty.SetValue
+ 0001:00016280       VA508ImageListLabelerPE.TVA508LabelerImageListProperty.GetAttributes
+ 0001:000162B4       VA508ImageListLabelerPE.TVA508LabelerRemoteLabelerProperty.FilterValues
+ 0001:000162E4       VA508ImageListLabelerPE.TVA508LabelerRemoteLabelerProperty.GetValues
+ 0001:00016318       VA508ImageListLabelerPE.Finalization
+ 0001:00016850       .VA508Access2006.@GetPackageInfoTable
+ 0001:00016858       .VA508Access2006.@PackageLoad
+ 0001:00016864       .VA508Access2006.@PackageUnload
+ 0002:00000010       Windows.Windows
+ 0002:00000194       VA508AccessibilityConst.VA508AccessibilityConst
+ 0002:000001A4       oleacc2.oleacc2
+ 0002:000001AC       MSAAConstants.MSAAConstants
+ 0002:000001B4       VA508MSAASupport.VA508MSAASupport
+ 0002:000001C8       VA508ScreenReaderDLLLinker.VA508ScreenReaderDLLLinker
+ 0002:000001D0       VA508AccessibilityRouter.VA508AccessibilityRouter
+ 0002:000001F4       VA508ImageListLabeler.VA508ImageListLabeler
+ 0002:000001FC       VA508Classes.VA508Classes
+ 0002:00000244       VA508DelphiCompatibility.VA508DelphiCompatibility
+ 0002:00000254       VA508AccessibilityManager.VA508AccessibilityManager
+ 0002:00000268       VA508AccessibilityCompileInfo.VA508AccessibilityCompileInfo
+ 0002:000002D8       VA508AccessibilityPE.VA508AccessibilityPE
+ 0002:000002E0       VA508AccessibilityCompiler.VA508AccessibilityCompiler
+ 0002:00000310       VA508ImageListLabelerPE.VA508ImageListLabelerPE
+ 0002:00000318       .VA508Access2006..VA508Access2006
+ 0003:00000000       SysInit.TlsIndex
+ 0003:00000004       SysInit.PtrToNil
+ 0003:00000008       SysInit.Module
+ 0003:00000020       SysInit.TlsProc
+ 0003:00000030       oleacc2.LIBID_Accessibility
+ 0003:00000040       oleacc2.IID_IAccessible
+ 0003:00000050       oleacc2.IID_IAccessibleHandler
+ 0003:00000060       oleacc2.IID_IAccIdentity
+ 0003:00000070       oleacc2.IID_IAccPropServer
+ 0003:00000080       oleacc2.IID_IAccPropServices
+ 0003:00000090       oleacc2.CLASS_CAccPropServices
+ 0003:000000A0       MSAAConstants.PROPID_ACC_NAME
+ 0003:000000B0       MSAAConstants.PROPID_ACC_VALUE
+ 0003:000000C0       MSAAConstants.PROPID_ACC_DESCRIPTION
+ 0003:000000D0       MSAAConstants.PROPID_ACC_ROLE
+ 0003:000000E0       MSAAConstants.PROPID_ACC_STATE
+ 0003:000000F0       MSAAConstants.PROPID_ACC_HELP
+ 0003:00000100       MSAAConstants.PROPID_ACC_KEYBOARDSHORTCUT
+ 0003:00000110       MSAAConstants.PROPID_ACC_HELPTOPIC
+ 0003:00000120       MSAAConstants.PROPID_ACC_FOCUS
+ 0003:00000130       MSAAConstants.PROPID_ACC_SELECTION
+ 0003:00000140       MSAAConstants.PROPID_ACC_PARENT
+ 0003:00000150       MSAAConstants.PROPID_ACC_NAV_UP
+ 0003:00000160       MSAAConstants.PROPID_ACC_NAV_DOWN
+ 0003:00000170       MSAAConstants.PROPID_ACC_NAV_LEFT
+ 0003:00000180       MSAAConstants.PROPID_ACC_NAV_RIGHT
+ 0003:00000190       MSAAConstants.PROPID_ACC_NAV_PREV
+ 0003:000001A0       MSAAConstants.PROPID_ACC_NAV_NEXT
+ 0003:000001B0       MSAAConstants.PROPID_ACC_NAV_FIRSTCHILD
+ 0003:000001C0       MSAAConstants.PROPID_ACC_NAV_LASTCHILD
+ 0003:000001D0       MSAAConstants.PROPID_ACC_ROLEMAP
+ 0003:000001E0       MSAAConstants.PROPID_ACC_VALUEMAP
+ 0003:000001F0       MSAAConstants.PROPID_ACC_STATEMAP
+ 0003:00000200       MSAAConstants.PROPID_ACC_DESCRIPTIONMAP
+ 0003:00000210       MSAAConstants.PROPID_ACC_DODEFAULTACTION
+ 0003:00000220       VA508MSAASupport.VA508ImageListLabelerClasses
+ 0003:00000228       VA508MSAASupport.uShutDown
+ 0003:0000022C       VA508MSAASupport.Events
+ 0003:00000230       VA508MSAASupport.AccPropServices
+ 0003:00000234       VA508MSAASupport.AccServicesCount
+ 0003:00000238       VA508ScreenReaderDLLLinker.SRSpeakText
+ 0003:0000023C       VA508ScreenReaderDLLLinker.SRIsRunning
+ 0003:00000240       VA508ScreenReaderDLLLinker.SRRegisterCustomBehavior
+ 0003:00000244       VA508ScreenReaderDLLLinker.SRComponentData
+ 0003:00000248       VA508ScreenReaderDLLLinker.SRConfigChangePending
+ 0003:0000024C       VA508ScreenReaderDLLLinker.ValidSRFiles
+ 0003:00000250       VA508ScreenReaderDLLLinker.ExecuteFind
+ 0003:00000254       VA508ScreenReaderDLLLinker.DoInitialize
+ 0003:00000258       VA508ScreenReaderDLLLinker.InitializeResult
+ 0003:0000025C       VA508ScreenReaderDLLLinker.SRInitialize
+ 0003:00000260       VA508ScreenReaderDLLLinker.SRShutDown
+ 0003:00000264       VA508ScreenReaderDLLLinker.DLLHandle
+ 0003:00000268       VA508AccessibilityRouter.ActiveScreenReader
+ 0003:0000026C       VA508AccessibilityRouter.MasterScreenReader
+ 0003:00000270       VA508AccessibilityRouter.uNonDialogClassNames
+ 0003:00000274       VA508AccessibilityRouter.SaveInitProc
+ 0003:00000278       VA508AccessibilityRouter.Need2RegisterData
+ 0003:0000027C       VA508AccessibilityRouter.OK2RegisterData
+ 0003:00000280       VA508AccessibilityRouter.CheckScreenReaderSystemActive
+ 0003:00000284       VA508AccessibilityRouter.uScreenReaderSystemActive
+ 0003:00000288       VA508AccessibilityRouter.uPostScreenReaderActivationTimer
+ 0003:0000028C       VA508AccessibilityManager.ControlsWithDefaultPropertySettings
+ 0003:000002BC       VA508AccessibilityManager.NewComponentData
+ 0003:000002D4       VA508AccessibilityManager.MasterPropertyList
+ 0003:000002D8       VA508AccessibilityManager.GlobalRegistry
+ 0003:000002DC       VA508AccessibilityManager.AltHandleClasses
+ 0003:000002E0       VA508AccessibilityManager.ManagedClasses
+ 0003:000002E4       VA508AccessibilityManager.ComplexClasses
+ 0003:000002E8       VA508AccessibilityManager.MSAAQueryClasses
+ 0003:000002EC       VA508AccessibilityManager.CanAssignFocus
+ 0003:000002F0       VA508AccessibilityManager.CanCheckEvent
+ 0003:000002F4       VA508AccessibilityCompileInfo.frmProgress
+ 0003:000002F8       VA508AccessibilityCompiler.NotifierIndex
+ 0003:000002FC       VA508AccessibilityCompiler.NotifierRegistered
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0004:00000004       SysInit.HInstance
+ 0004:00000008       SysInit.DllProc
+ 0004:0000000C       SysInit.tlsBuffer
+ 0004:00000010       Windows..3
+ 0004:00000014       Windows.HtmlHelpModule
+ 0004:00000018       VA508AccessibilityConst..1
+ 0004:0000001C       oleacc2..2
+ 0004:00000020       MSAAConstants..1
+ 0004:00000024       VA508MSAASupport..1
+ 0004:00000028       VA508MSAASupport.NamePropIDs
+ 0004:00000038       VA508MSAASupport.uNotifier
+ 0004:0000003C       VA508ScreenReaderDLLLinker..1
+ 0004:00000040       VA508AccessibilityRouter..2
+ 0004:00000044       VA508ImageListLabeler..6
+ 0004:00000048       VA508Classes..5
+ 0004:0000004C       VA508DelphiCompatibility..2
+ 0004:00000050       VA508AccessibilityManager..21
+ 0004:00000054       VA508AccessibilityManager.TVAGlobalComponentRegistry.FActive
+ 0004:00000058       VA508AccessibilityManager.TVAGlobalComponentRegistry.FCallWinProcHookHandle
+ 0004:0000005C       VA508AccessibilityManager.TVAGlobalComponentRegistry.FGetMsgHookHandle
+ 0004:00000060       VA508AccessibilityCompileInfo..2
+ 0004:00000064       VA508AccessibilityCompileInfo.uProjectText
+ 0004:00000068       VA508AccessibilityCompileInfo.uStopProc
+ 0004:00000070       VA508AccessibilityCompileInfo.uLastUpdate
+ 0004:00000078       VA508AccessibilityCompileInfo.uStartTime
+ 0004:00000080       VA508AccessibilityPE..8
+ 0004:00000084       VA508AccessibilityCompiler..2
+ 0004:00000088       VA508AccessibilityCompiler.SaveDllProc
+ 0004:0000008C       VA508AccessibilityCompiler.MessageService
+ 0004:00000090       VA508ImageListLabelerPE..7
+ 0005:00000000       SysInit.TlsLast
+
+
+Line numbers for VA508AccessibilityConst(VA508AccessibilityConst.pas) segment .itext
+
+    81 0002:00000194
+
+Line numbers for oleacc2(oleacc2.pas) segment .text
+
+   261 0001:000013B8   262 0001:000013CE   263 0001:000013EA   266 0001:0000141C
+   267 0001:00001437   268 0001:00001460
+
+Line numbers for oleacc2(oleacc2.pas) segment .itext
+
+   270 0002:000001A4
+
+Line numbers for MSAAConstants(MSAAConstants.pas) segment .itext
+
+   175 0002:000001AC
+
+Line numbers for VA508MSAASupport(VA508MSAASupport.pas) segment .text
+
+   111 0001:0000189C   112 0001:000018BB   114 0001:000018DA   115 0001:000018E7
+   116 0001:000018F5   117 0001:000018FB   119 0001:00001915   122 0001:00001925
+   130 0001:00001948   131 0001:00001963   133 0001:0000196C   134 0001:00001986
+   135 0001:00001996   136 0001:0000199D   137 0001:000019A2   139 0001:000019BB
+   140 0001:000019C1   144 0001:000019E4   145 0001:000019EA   147 0001:000019F3
+   148 0001:000019FD   150 0001:00001A07   154 0001:00001A08   155 0001:00001A0F
+   157 0001:00001A18   158 0001:00001A1F   160 0001:00001A24   166 0001:00001A28
+   167 0001:00001A4C   169 0001:00001A55   170 0001:00001A66   172 0001:00001A6B
+   174 0001:00001A7F   175 0001:00001A98   176 0001:00001A9D   177 0001:00001AA9
+   172 0001:00001AAA   178 0001:00001AAD   179 0001:00001AB4   180 0001:00001ABD
+   187 0001:00001AE4   188 0001:00001B03   189 0001:00001B10   190 0001:00001B18
+   191 0001:00001B26   192 0001:00001B33   193 0001:00001B41   195 0001:00001B47
+   196 0001:00001B66   197 0001:00001B73   199 0001:00001B7F   201 0001:00001B9E
+   203 0001:00001BAE   210 0001:00001BD4   211 0001:00001BF0   212 0001:00001BF9
+   213 0001:00001BFD   214 0001:00001C0A   215 0001:00001C18   217 0001:00001C1E
+   218 0001:00001C2A   219 0001:00001C3F   220 0001:00001C4B   223 0001:00001C65
+   225 0001:00001C75   231 0001:00001CA0   232 0001:00001CBF   233 0001:00001CCC
+   234 0001:00001CD4   235 0001:00001CE2   236 0001:00001CEF   237 0001:00001CFD
+   239 0001:00001D03   240 0001:00001D22   241 0001:00001D2F   243 0001:00001D3B
+   245 0001:00001D52   247 0001:00001D62   253 0001:00001D88   254 0001:00001DA7
+   255 0001:00001DB0   256 0001:00001DB4   257 0001:00001DC1   258 0001:00001DCF
+   260 0001:00001DD5   261 0001:00001DE1   262 0001:00001DEB   263 0001:00001DF7
+   266 0001:00001E11   268 0001:00001E21   274 0001:00001E44   275 0001:00001E63
+   276 0001:00001E70   277 0001:00001E78   278 0001:00001E86   279 0001:00001E93
+   280 0001:00001EA1   282 0001:00001EA7   283 0001:00001EC6   284 0001:00001ED3
+   286 0001:00001EDF   288 0001:00001EF6   290 0001:00001F06   296 0001:00001F2C
+   297 0001:00001F4B   298 0001:00001F54   299 0001:00001F58   300 0001:00001F65
+   301 0001:00001F73   303 0001:00001F79   304 0001:00001F85   305 0001:00001F8F
+   306 0001:00001F9B   309 0001:00001FB5   311 0001:00001FC5   320 0001:00001FE8
+   321 0001:00001FF3   322 0001:00002002   324 0001:00002006   325 0001:00002014
+   326 0001:00002020   329 0001:0000202C   330 0001:00002038   331 0001:0000203F
+   332 0001:00002048   338 0001:00002050   339 0001:00002056   340 0001:0000205F
+   342 0001:00002063   343 0001:0000206F   344 0001:00002072   346 0001:0000207C
+   347 0001:00002085   353 0001:00002088   354 0001:0000208E   355 0001:00002097
+   357 0001:0000209B   358 0001:000020A7   359 0001:000020AA   361 0001:000020B4
+   362 0001:000020BD   365 0001:000020C0   366 0001:000020C7   367 0001:000020DC
+   370 0001:000020E0   371 0001:000020E3   377 0001:000020FE   380 0001:00002131
+   383 0001:00002134   384 0001:00002149   385 0001:0000214E   386 0001:00002151
+   387 0001:00002160   388 0001:00002169   390 0001:00002172   391 0001:00002179
+   394 0001:00002194   395 0001:0000219F   396 0001:000021A6   397 0001:000021AE
+   398 0001:000021B3   399 0001:000021BF   404 0001:000021D0   405 0001:000021D4
+   407 0001:000021E3   408 0001:000021F8   410 0001:000021FC   412 0001:00002223
+   415 0001:00002229   417 0001:0000222D   421 0001:00002230   422 0001:00002236
+   429 0001:00002238   430 0001:00002240   432 0001:0000224E   434 0001:00002267
+   435 0001:00002271   438 0001:00002281   439 0001:00002283   442 0001:00002285
+   430 0001:00002286   443 0001:00002289   444 0001:0000228C   450 0001:00002294
+   451 0001:0000229C   453 0001:000022AA   455 0001:000022C3   456 0001:000022CD
+   458 0001:000022D4   459 0001:000022D6   462 0001:000022D8   451 0001:000022D9
+   463 0001:000022DC   464 0001:000022DF   468 0001:000022E4   469 0001:000022E7
+   483 0001:000022E8   484 0001:00002328   485 0001:0000232F   487 0001:0000233A
+   489 0001:0000233F   490 0001:00002344   491 0001:00002350   493 0001:00002359
+   485 0001:0000235C   494 0001:0000235F   500 0001:000023A0   501 0001:000023B1
+   502 0001:000023B8   504 0001:000023CC   506 0001:000023EB   507 0001:000023FB
+   509 0001:0000240D   510 0001:00002427   513 0001:00002429   502 0001:0000242A
+   514 0001:0000242D   523 0001:00002434   524 0001:00002454   525 0001:0000245D
+   526 0001:00002463   527 0001:00002472   529 0001:0000247A   530 0001:00002482
+   532 0001:0000248A   533 0001:00002499   534 0001:000024AB   535 0001:000024B6
+   537 0001:000024D8   538 0001:000024F8   540 0001:000024FF   542 0001:00002510
+   544 0001:00002549   555 0001:00002574   556 0001:00002594   557 0001:0000259D
+   558 0001:000025B4   559 0001:000025BC   560 0001:000025C4   561 0001:000025D8
+   562 0001:000025E1   563 0001:000025F3   564 0001:000025FC   566 0001:00002602
+   567 0001:00002606   568 0001:00002628   569 0001:0000262F   570 0001:00002640
+   572 0001:00002673   574 0001:00002683   575 0001:0000269B   576 0001:000026D5
+   577 0001:000026E0   578 0001:000026E6   579 0001:000026F3   581 0001:00002720
+   583 0001:0000272D   585 0001:0000274B   587 0001:00002766   588 0001:000027A1
+   589 0001:000027B1   591 0001:000027C2   592 0001:000027CA   593 0001:000027D0
+   594 0001:000027DD   596 0001:0000281A   583 0001:0000281D   599 0001:00002826
+   605 0001:00002890   606 0001:00002896   608 0001:000028AA   610 0001:000028C9
+   611 0001:000028D9   613 0001:000028F3   606 0001:000028F4   614 0001:000028F7
+   620 0001:000028FC   621 0001:00002902   623 0001:00002916   625 0001:00002935
+   626 0001:00002945   628 0001:0000295B   621 0001:0000295C   629 0001:0000295F
+   632 0001:00002964   633 0001:00002967   634 0001:00002972   635 0001:0000297E
+   636 0001:00002989   639 0001:0000298C   640 0001:0000298F   641 0001:0000299A
+   642 0001:000029A4   644 0001:000029A8   645 0001:000029DC   646 0001:000029E5
+   648 0001:00002A09   650 0001:00002A1D   652 0001:00002A23   654 0001:00002A2C
+   655 0001:00002A33   656 0001:00002A3A   659 0001:00002A4A   663 0001:00002A56
+   664 0001:00002A5D   666 0001:00002A79   667 0001:00002A80   668 0001:00002A88
+   670 0001:00002A91   671 0001:00002AB1   673 0001:00002AC9   674 0001:00002AD4
+   675 0001:00002ADC   677 0001:00002AE5   679 0001:00002AEC   681 0001:00002AF2
+   682 0001:00002AF8   683 0001:00002B05   685 0001:00002B10   690 0001:00002B1D
+   691 0001:00002B24   692 0001:00002B26   696 0001:00002B68   697 0001:00002B77
+   698 0001:00002B84   704 0001:00002B88   705 0001:00002B8E   706 0001:00002B9B
+   707 0001:00002B9F   708 0001:00002BA9   709 0001:00002BB2   714 0001:00002BB8
+   715 0001:00002BBB   716 0001:00002BC2   717 0001:00002BC6   718 0001:00002BD0
+   719 0001:00002BD9   724 0001:00002BDC   725 0001:00002BDF   726 0001:00002BE6
+   727 0001:00002BEA   728 0001:00002BF4   729 0001:00002BFD   735 0001:00002C00
+   736 0001:00002C05   738 0001:00002C09   740 0001:00002C13   741 0001:00002C20
+   738 0001:00002C23   742 0001:00002C26   744 0001:00002C3C   747 0001:00002C74
+   748 0001:00002C7B   749 0001:00002C92   753 0001:00002C98   754 0001:00002CA7
+   759 0001:00002CA8   760 0001:00002CAC   761 0001:00002CB5   762 0001:00002CBB
+   764 0001:00002CBF   765 0001:00002CC6   767 0001:00002CCD   773 0001:00002CD0
+   774 0001:00002CD8   776 0001:00002CE6   778 0001:00002CFF   779 0001:00002D09
+   781 0001:00002D10   782 0001:00002D12   785 0001:00002D14   774 0001:00002D15
+   786 0001:00002D18   787 0001:00002D1B   792 0001:00002D3C   794 0001:00002D5A
+
+Line numbers for VA508MSAASupport(VA508MSAASupport.pas) segment .itext
+
+   789 0002:000001B4   791 0002:000001C7
+
+Line numbers for VA508ScreenReaderDLLLinker(VA508ScreenReaderDLLLinker.pas) segment .text
+
+    79 0001:00002D8C    81 0001:00002D8F    82 0001:00002D91   100 0001:00002D98
+   112 0001:00002D9C   114 0001:00002D9F   135 0001:00002DA4   137 0001:00002DA7
+   149 0001:00002DAC   151 0001:00002DAF   163 0001:00002DB4   165 0001:00002DB7
+   166 0001:00002DB9   180 0001:00002DC0   181 0001:00002DC2   190 0001:00002DC4
+   191 0001:00002DCB   192 0001:00002DD2   193 0001:00002DD9   194 0001:00002DE0
+   195 0001:00002DE7   196 0001:00002DEE   197 0001:00002DF5   198 0001:00002DFC
+   199 0001:00002E03   203 0001:00002E04   205 0001:00002E0D   206 0001:00002E23
+   207 0001:00002E2A   208 0001:00002E33   210 0001:00002E38   211 0001:00002E3F
+   215 0001:00002E40   217 0001:00002E49   218 0001:00002E4F   219 0001:00002E5A
+   220 0001:00002E61   222 0001:00002E66   227 0001:00002E68   228 0001:00002E7E
+   229 0001:00002E8D   230 0001:00002EA0   232 0001:00002EAD   233 0001:00002EC2
+   234 0001:00002ED7   235 0001:00002EEC   236 0001:00002F01   237 0001:00002F16
+   238 0001:00002F2B   239 0001:00002F40   241 0001:00002F47   244 0001:00002FD4
+   247 0001:00002FDE   248 0001:00002FF3   250 0001:00002FF7   251 0001:00002FF9
+   253 0001:00003008   254 0001:00003013   256 0001:0000301A   264 0001:00003020
+   265 0001:00003023   266 0001:00003038   267 0001:00003046   269 0001:00003053
+   270 0001:00003068   271 0001:00003076   273 0001:00003083   274 0001:00003098
+   275 0001:000030A6   277 0001:000030B3   278 0001:000030C8   279 0001:000030D6
+   281 0001:000030DF   282 0001:000030F4   283 0001:00003102   285 0001:0000310B
+   286 0001:00003120   287 0001:0000312E   289 0001:00003137   290 0001:0000314C
+   297 0001:0000315A   298 0001:0000315F   303 0001:000031D0   304 0001:000031ED
+   305 0001:000031F4   306 0001:00003202   308 0001:0000320F   309 0001:00003216
+   310 0001:00003223   312 0001:00003227   313 0001:0000323A   315 0001:00003243
+   316 0001:00003251   317 0001:0000325B   318 0001:00003264   320 0001:0000327E
+   321 0001:00003289   326 0001:00003298   333 0001:000032B8   334 0001:00003305
+   335 0001:0000330F   336 0001:0000331A   337 0001:0000331E   338 0001:0000332B
+   339 0001:00003356   340 0001:00003364   342 0001:00003368   344 0001:00003396
+   346 0001:000033BA   340 0001:000033C7   349 0001:000033D8   351 0001:000033EB
+   353 0001:0000346C   354 0001:00003484   356 0001:0000348D   357 0001:00003496
+   358 0001:000034A7   359 0001:000034BB   360 0001:000034C1   361 0001:000034D5
+   362 0001:000034DB   363 0001:00003501   365 0001:00003508   369 0001:00003530
+   370 0001:00003535   371 0001:00003544   377 0001:00003548   378 0001:00003551
+   379 0001:00003553   380 0001:00003558   381 0001:0000356A   383 0001:0000357E
+   384 0001:00003585   385 0001:00003598   386 0001:0000359C   388 0001:000035A2
+   389 0001:000035AD   391 0001:000035B4   381 0001:000035B5   392 0001:000035B8
+   397 0001:000035D0   398 0001:000035EE   399 0001:000035F7   401 0001:00003601
+
+Line numbers for VA508ScreenReaderDLLLinker(VA508ScreenReaderDLLLinker.pas) segment .itext
+
+   394 0002:000001C8   396 0002:000001CF
+
+Line numbers for VA508AccessibilityRouter(VA508AccessibilityRouter.pas) segment .text
+
+   118 0001:000038CC   119 0001:000038D5   120 0001:000038DB   121 0001:000038E2
+   123 0001:000038EB   124 0001:000038F2   126 0001:000038FB   129 0001:00003905
+   133 0001:00003908   135 0001:00003911   137 0001:0000391A   138 0001:0000392B
+   141 0001:00003937   143 0001:00003948   144 0001:0000394D   149 0001:00003950
+   150 0001:0000396A   152 0001:00003977   153 0001:00003981   155 0001:0000398C
+   156 0001:000039A1   157 0001:000039AC   158 0001:000039D6   159 0001:000039F3
+   162 0001:00003A0A   169 0001:00003C38   170 0001:00003C3E   173 0001:00003C51
+   174 0001:00003C5D   175 0001:00003C6C   176 0001:00003C73   177 0001:00003C79
+   178 0001:00003C89   180 0001:00003C95   182 0001:00003C9C   183 0001:00003CB4
+   185 0001:00003CBD   187 0001:00003CC4   188 0001:00003CF3   189 0001:00003CFD
+   191 0001:00003D06   193 0001:00003D0F   194 0001:00003D1A   196 0001:00003D26
+   200 0001:00003D2F   201 0001:00003D36   205 0001:00003D3B   206 0001:00003D42
+   211 0001:00003D7C   212 0001:00003DA4   214 0001:00003DB1   215 0001:00003DD7
+   216 0001:00003DE0   217 0001:00003DF1   218 0001:00003E02   219 0001:00003E0F
+   220 0001:00003E18   223 0001:00003E4C   228 0001:00003E80   229 0001:00003E83
+   230 0001:00003E8E   233 0001:00003E94   234 0001:00003EA6   235 0001:00003EB5
+   236 0001:00003EC4   237 0001:00003EC8   238 0001:00003ECC   239 0001:00003EDB
+   249 0001:00003EF8   250 0001:00003F12   251 0001:00003F19   253 0001:00003F23
+   254 0001:00003F38   255 0001:00003F43   256 0001:00003F52   258 0001:00003F61
+   260 0001:00003F84   261 0001:00003FAB   262 0001:00003FC5   263 0001:00003FDA
+   264 0001:00003FF0   265 0001:00003FF6   266 0001:0000400C   269 0001:0000405C
+   270 0001:00004067   271 0001:0000406C   272 0001:00004074   273 0001:0000407C
+   274 0001:00004084   275 0001:00004090   283 0001:000040A0   284 0001:000040C1
+   285 0001:000040CB   286 0001:000040D3   287 0001:000040E9   288 0001:000040FB
+   290 0001:00004174   291 0001:000041A8   292 0001:000041EA   295 0001:00004214
+   296 0001:00004233   297 0001:0000425F   298 0001:00004266   304 0001:00004288
+   305 0001:0000428C   306 0001:00004295   307 0001:000042A1   308 0001:000042AB
+   309 0001:000042AF   312 0001:000042B4   313 0001:000042D4   314 0001:000042E4
+   315 0001:000042F4   324 0001:00004318   325 0001:00004350   326 0001:00004363
+   327 0001:00004371   329 0001:00004379   330 0001:00004387   331 0001:0000438F
+   332 0001:00004394   333 0001:0000439D   335 0001:000043A1   336 0001:000043AF
+   337 0001:000043B5   339 0001:000043B9   340 0001:000043C3   342 0001:000043F2
+   346 0001:00004401   350 0001:0000442C   351 0001:00004459   352 0001:0000446A
+   353 0001:0000447B   359 0001:000044A4   360 0001:000044B8   361 0001:000044C3
+   362 0001:000044D0   363 0001:000044D3   380 0001:000044F8   381 0001:0000451A
+   382 0001:00004524   383 0001:00004532   384 0001:00004541   385 0001:0000454F
+   387 0001:0000456D   389 0001:00004589   390 0001:000045B2   391 0001:000045C0
+   392 0001:000045D7   393 0001:000045E5   394 0001:000045F3   395 0001:000045FB
+   396 0001:00004609   397 0001:00004614   398 0001:00004620   399 0001:00004624
+   400 0001:00004641   401 0001:00004645   403 0001:00004666   405 0001:00004678
+   408 0001:00004695   410 0001:000046A5   387 0001:000046A8   413 0001:000046BE
+   416 0001:000046DB   418 0001:000046ED   420 0001:00004730   421 0001:0000474E
+   422 0001:0000475B   423 0001:00004762   424 0001:00004770   426 0001:0000477D
+   427 0001:0000478B   428 0001:00004792   429 0001:000047A2   431 0001:000047B7
+   432 0001:000047C7   433 0001:000047DD   434 0001:000047FC   429 0001:000047FD
+   435 0001:00004800   437 0001:00004822   441 0001:00004833   443 0001:00004847
+   445 0001:00004856   455 0001:00004880   456 0001:000048AE   457 0001:000048CC
+   458 0001:000048DB   459 0001:0000490C   460 0001:00004932   462 0001:000049AC
+   463 0001:000049E6   464 0001:000049F3   465 0001:00004A04   466 0001:00004A16
+   467 0001:00004A25   468 0001:00004A34   471 0001:00004A8C   472 0001:00004AB9
+   473 0001:00004ACA   476 0001:00004AF4   477 0001:00004AF7   478 0001:00004AFB
+   480 0001:00004AFF   481 0001:00004B06   483 0001:00004B0A   486 0001:00004B0C
+   487 0001:00004B0F   488 0001:00004B1A   491 0001:00004B20   492 0001:00004B45
+   493 0001:00004B55   494 0001:00004B63   496 0001:00004B90   498 0001:00004B9F
+   517 0001:00004BC4   518 0001:00004BD0   520 0001:00004BDD   521 0001:00004BEB
+   522 0001:00004BF2   525 0001:00004C03   526 0001:00004C09   527 0001:00004C0E
+   528 0001:00004C13   529 0001:00004C18   530 0001:00004C1D   531 0001:00004C22
+   532 0001:00004C27   533 0001:00004C2C   534 0001:00004C2F   537 0001:00004C33
+   538 0001:00004C51   539 0001:00004C58   541 0001:00004C80   535 0001:00004C81
+   543 0001:00004C92   546 0001:00004CDA   549 0001:00004CEB   555 0001:00004CF4
+   556 0001:00004CF7   559 0001:00004CFC   560 0001:00004D0D   563 0001:00004D24
+   564 0001:00004D35   568 0001:00004D4C   570 0001:00004D6D   573 0001:00004D94
+   574 0001:00004DA5   578 0001:00004DBC   579 0001:00004DBF   582 0001:00004DC4
+   583 0001:00004DD5   590 0001:00004DEC   591 0001:00004E0E   592 0001:00004E18
+   593 0001:00004E21   594 0001:00004E2B   595 0001:00004E34   597 0001:00004E3E
+
+Line numbers for VA508AccessibilityRouter(VA508AccessibilityRouter.pas) segment .itext
+
+   585 0002:000001D0   586 0002:000001D9   587 0002:000001E5   589 0002:000001F0
+
+Line numbers for VA508ImageListLabeler(VA508ImageListLabeler.pas) segment .text
+
+   135 0001:000053A8   136 0001:000053A9   137 0001:000053BF   143 0001:000053D4
+   144 0001:000053DB   147 0001:000053DC   148 0001:000053F6   149 0001:00005401
+   150 0001:00005405   151 0001:00005414   152 0001:00005425   153 0001:00005436
+   154 0001:00005447   155 0001:00005451   156 0001:0000545E   159 0001:00005480
+   160 0001:0000548B   161 0001:00005493   162 0001:0000549B   163 0001:000054A4
+   164 0001:000054AD   165 0001:000054B5   166 0001:000054BD   167 0001:000054C5
+   168 0001:000054CD   169 0001:000054D9   175 0001:000054E8   176 0001:00005505
+   177 0001:0000550B   179 0001:00005511   180 0001:00005518   182 0001:00005524
+   186 0001:00005530   187 0001:00005537   189 0001:00005543   191 0001:0000554D
+   192 0001:00005559   194 0001:00005573   195 0001:0000557B   200 0001:000055A0
+   201 0001:000055A9   203 0001:000055B7   204 0001:000055BE   205 0001:000055C5
+   206 0001:000055D3   208 0001:000055E8   209 0001:000055FA   211 0001:00005603
+   206 0001:00005604   212 0001:00005607   213 0001:00005610   215 0001:00005629
+   218 0001:00005638   221 0001:00005640   222 0001:00005641   223 0001:00005647
+   224 0001:0000564D   225 0001:00005654   226 0001:0000565E   229 0001:00005660
+   230 0001:00005663   231 0001:0000566A   232 0001:0000566E   233 0001:0000567A
+   234 0001:00005683   243 0001:00005688   244 0001:00005697   245 0001:000056BE
+   246 0001:000056DD   247 0001:000056EC   248 0001:000056FA   250 0001:0000570F
+   251 0001:0000571E   253 0001:00005725   254 0001:0000572F   255 0001:0000573D
+   256 0001:00005741   259 0001:00005745   260 0001:00005751   262 0001:00005755
+   263 0001:00005759   265 0001:00005773   248 0001:00005774   266 0001:00005777
+   268 0001:00005788   269 0001:00005795   270 0001:000057A3   266 0001:000057A4
+   272 0001:000057B4   273 0001:000057BF   275 0001:000057D0   279 0001:000057D8
+   280 0001:000057E1   281 0001:000057EC   282 0001:000057F6   283 0001:000057FF
+   289 0001:00005804   290 0001:00005825   291 0001:00005832   293 0001:0000583B
+   294 0001:00005843   296 0001:00005848   298 0001:00005854   299 0001:0000585B
+   300 0001:00005869   302 0001:00005873   303 0001:0000587E   305 0001:0000588C
+   306 0001:00005894   308 0001:0000589C   309 0001:000058A4   310 0001:000058B5
+   312 0001:000058C8   313 0001:000058DF   315 0001:000058F4   316 0001:00005905
+   317 0001:00005909   318 0001:00005916   313 0001:00005917   319 0001:0000591A
+   321 0001:0000592F   322 0001:00005938   323 0001:0000594A   319 0001:0000594B
+   326 0001:0000594E   327 0001:00005958   329 0001:00005971   332 0001:00005980
+   335 0001:000059A4   336 0001:000059AA   338 0001:000059AF   340 0001:000059B3
+   341 0001:000059BB   343 0001:000059C4   345 0001:000059C7   350 0001:000059CC
+   351 0001:000059CF   352 0001:000059D6   355 0001:000059D8   356 0001:000059ED
+   357 0001:000059FC   358 0001:00005A0B   359 0001:00005A1A   360 0001:00005A1D
+   361 0001:00005A2E   362 0001:00005A3A   363 0001:00005A47   364 0001:00005A54
+   365 0001:00005A61   368 0001:00005AC8   369 0001:00005AD3   370 0001:00005ADA
+   371 0001:00005AE2   372 0001:00005AEA   373 0001:00005AF2   374 0001:00005AFE
+   377 0001:00005B0C   378 0001:00005B15   379 0001:00005B21   383 0001:00005B28
+   384 0001:00005B30   390 0001:00005B34   391 0001:00005B3A   393 0001:00005B51
+   395 0001:00005B67   397 0001:00005B75   396 0001:00005B7F   398 0001:00005B8C
+   399 0001:00005B9A   393 0001:00005B9D   401 0001:00005BA0   402 0001:00005BA3
+   405 0001:00005BA8   406 0001:00005BAE   407 0001:00005BB7   410 0001:00005BBC
+   411 0001:00005BC9   412 0001:00005BDB   413 0001:00005BEC   414 0001:00005BFB
+   416 0001:00005C09   418 0001:00005C1E   419 0001:00005C2D   421 0001:00005C3B
+   423 0001:00005C50   424 0001:00005C65   426 0001:00005C6C   432 0001:00005C80
+   433 0001:00005C86   435 0001:00005C8C   436 0001:00005C90   438 0001:00005C9B
+   440 0001:00005CB1   441 0001:00005CBD   444 0001:00005CC5   443 0001:00005CCF
+   445 0001:00005CDC   447 0001:00005CEA   438 0001:00005CED   450 0001:00005CF0
+   451 0001:00005CF3   455 0001:00005CF8   456 0001:00005CFB   460 0001:00005CFC
+   461 0001:00005CFF   462 0001:00005D06   463 0001:00005D0D   466 0001:00005D10
+   467 0001:00005D13   468 0001:00005D1B   469 0001:00005D23   470 0001:00005D27
+   474 0001:00005D2C   475 0001:00005D31   478 0001:00005D34   479 0001:00005D37
+   480 0001:00005D3E   481 0001:00005D45   488 0001:00005D48   489 0001:00005D4E
+   492 0001:00005D5F   493 0001:00005D69   496 0001:00005D77   497 0001:00005D80
+   500 0001:00005D84   501 0001:00005D87   502 0001:00005D93   505 0001:00005D98
+   506 0001:00005DAA   507 0001:00005DB3   508 0001:00005DBA   509 0001:00005DC1
+   512 0001:00005DDC   513 0001:00005DE7   514 0001:00005DF3   517 0001:00005E04
+   518 0001:00005E08   519 0001:00005E1C   523 0001:00005E20   524 0001:00005E28
+   527 0001:00005E2C   528 0001:00005E32   530 0001:00005E3E   531 0001:00005E48
+   533 0001:00005E5A   538 0001:00005E60   539 0001:00005E67   540 0001:00005E74
+   543 0001:00005E79   544 0001:00005E7C   545 0001:00005E89   547 0001:00005E92
+   548 0001:00005EA9   550 0001:00005EAE   551 0001:00005EB5   553 0001:00005EBA
+   554 0001:00005EC1   558 0001:00005ED3   562 0001:00005ED8   564 0001:00005EE6
+   566 0001:00005EE9   571 0001:00005EEC   572 0001:00005EEF   573 0001:00005EF6
+   576 0001:00005EF8   577 0001:00005F0D   578 0001:00005F1C   579 0001:00005F1F
+   582 0001:00005F3C   583 0001:00005F47   584 0001:00005F4E   585 0001:00005F5A
+   589 0001:00005F68   590 0001:00005F6E   591 0001:00005F77   595 0001:00005F7C
+   596 0001:00005F7F   600 0001:00005F80   601 0001:00005F83   602 0001:00005F8A
+   603 0001:00005F94   608 0001:00005F98   609 0001:00005F9D   616 0001:00005FA0
+   617 0001:00005FA6   619 0001:00005FB7   620 0001:00005FB9   623 0001:00005FC4
+   624 0001:00005FCD   629 0001:00005FD0   630 0001:00005FDE   631 0001:00005FE5
+   634 0001:00005FE8   635 0001:00005FF3   636 0001:00005FFC   637 0001:00006002
+   638 0001:0000600A   639 0001:00006016   642 0001:00006024   643 0001:00006047
+   644 0001:0000605A   646 0001:00006096   647 0001:0000609F   656 0001:000060DC
+   657 0001:000060E2   658 0001:000060E9   659 0001:000060F3   660 0001:00006104
+   661 0001:00006111   662 0001:00006115   664 0001:00006129   666 0001:0000612B
+   667 0001:00006133   668 0001:0000613E   669 0001:00006146   672 0001:0000614B
+   674 0001:0000615C   676 0001:0000615E   677 0001:00006166   678 0001:00006171
+   679 0001:00006179   680 0001:00006184   681 0001:0000618C   684 0001:0000618F
+   687 0001:000061A8   688 0001:000061AC   689 0001:000061C0   695 0001:000061C4
+   696 0001:000061EA   698 0001:000061F3   700 0001:000061F7   701 0001:000061FB
+   703 0001:00006208   705 0001:00006215   706 0001:00006219   708 0001:0000621B
+   701 0001:0000621E   709 0001:00006223   710 0001:00006229   712 0001:0000626B
+   713 0001:00006278   714 0001:00006280   716 0001:00006284   717 0001:0000628A
+   718 0001:000062A1   720 0001:000062AB   721 0001:000062AE   723 0001:000062BC
+
+Line numbers for VA508ImageListLabeler(VA508ImageListLabeler.pas) segment .itext
+
+   725 0002:000001F4
+
+Line numbers for VA508Classes(VA508Classes.pas) segment .text
+
+   112 0001:0000678C   113 0001:00006798   114 0001:0000679D   116 0001:000067AE
+   117 0001:000067B9   119 0001:000067CF   120 0001:000067D4   122 0001:000067D6
+   124 0001:000067ED   125 0001:000067F2   127 0001:000067F4   114 0001:000067F5
+   128 0001:000067F8   139 0001:00006804   140 0001:00006810   142 0001:00006830
+   143 0001:00006832   145 0001:00006847   147 0001:00006863   148 0001:00006865
+   150 0001:00006867   143 0001:00006868   151 0001:0000686B   153 0001:0000686F
+   157 0001:000068C8   159 0001:00006920   160 0001:0000694B   161 0001:00006951
+   162 0001:0000698A   164 0001:0000699C   167 0001:000069A4   169 0001:00006A09
+   171 0001:00006A1B   172 0001:00006A28   173 0001:00006A2C   174 0001:00006A39
+   176 0001:00006A8B   177 0001:00006A91   180 0001:00006A9D   181 0001:00006AAC
+   184 0001:00006B25   194 0001:00006C44   195 0001:00006C72   196 0001:00006C7C
+   197 0001:00006C82   198 0001:00006C8A   199 0001:00006C9C   201 0001:00006CB3
+   202 0001:00006CC2   203 0001:00006CD0   204 0001:00006CD4   205 0001:00006CD8
+   207 0001:00006CE9   209 0001:00006D01   210 0001:00006D05   213 0001:00006D1A
+   215 0001:00006D32   216 0001:00006D36   218 0001:00006D49   205 0001:00006D4A
+   219 0001:00006D4D   220 0001:00006D55   221 0001:00006D5B   222 0001:00006D79
+   224 0001:00006D7F   225 0001:00006D85   226 0001:00006D92   228 0001:00006DC1
+   230 0001:00006DC7   233 0001:00006E39   236 0001:00006E49   241 0001:00006EE8
+   242 0001:00006EEB   243 0001:00006EF2   247 0001:00006EF4   248 0001:00006EFB
+   251 0001:00006EFC   252 0001:00006F15   253 0001:00006F1F   254 0001:00006F34
+   262 0001:00006F58   263 0001:00006F8E   265 0001:00006F9C   266 0001:00006FAA
+   267 0001:00006FB5   268 0001:00006FBF   269 0001:00006FCA   270 0001:00006FCF
+   271 0001:00006FD6   272 0001:00006FDD   273 0001:00006FE4   275 0001:00006FEE
+   280 0001:00007020   281 0001:0000704E   282 0001:0000705A   283 0001:00007064
+   284 0001:0000706C   285 0001:0000706F   289 0001:00007098   290 0001:000070A0
+   293 0001:000070A4   294 0001:000070B6   295 0001:000070C5   298 0001:000070E0
+   299 0001:000070EB   300 0001:000070F3   301 0001:000070FF   307 0001:00007110
+   308 0001:00007139   309 0001:00007144   310 0001:00007149   312 0001:00007157
+   314 0001:0000716D   315 0001:00007179   317 0001:0000717B   310 0001:0000717C
+   318 0001:0000717F   322 0001:000071AC   323 0001:000071B2   326 0001:000071B4
+   327 0001:000071BA   328 0001:000071C4   335 0001:000071C8   336 0001:000071F9
+   337 0001:00007205   338 0001:0000720C   339 0001:00007218   340 0001:00007223
+   341 0001:00007226   342 0001:00007242   344 0001:00007268   347 0001:0000728B
+   350 0001:000072D4   356 0001:0000735C   358 0001:00007363   367 0001:000076C4
+   368 0001:000076CA   369 0001:000076CE   370 0001:000076D5   372 0001:000076DD
+   373 0001:000076E1   375 0001:000076E7   376 0001:000076F3   377 0001:000076F9
+   378 0001:00007702   379 0001:00007708   382 0001:00007715   383 0001:00007723
+   384 0001:00007738   385 0001:0000773B   386 0001:0000774D   388 0001:00007753
+   390 0001:0000775E   393 0001:00007771   394 0001:00007777   396 0001:0000777D
+   399 0001:00007783   402 0001:00007789   405 0001:0000778F   407 0001:000077A0
+   408 0001:000077AC   410 0001:000077B8   426 0001:000077C4   427 0001:000077F9
+   428 0001:00007812   429 0001:0000781D   430 0001:00007824   431 0001:0000782B
+   433 0001:00007832   434 0001:0000783C   435 0001:00007841   436 0001:00007853
+   437 0001:0000785B   438 0001:00007863   439 0001:00007869   441 0001:00007879
+   442 0001:00007899   445 0001:000078A9   446 0001:000078BD   447 0001:000078C9
+   448 0001:000078D5   443 0001:000078DD   451 0001:00007907   453 0001:0000790D
+   454 0001:00007915   457 0001:0000791E   458 0001:0000792E   460 0001:00007941
+   461 0001:0000794F   465 0001:00007984   466 0001:00007987   470 0001:00007988
+   471 0001:0000798C   476 0001:00007990   477 0001:00007993   479 0001:0000799F
+   480 0001:000079A1   482 0001:000079A3   486 0001:000079B7   488 0001:000079BB
+   490 0001:000079BD   495 0001:000079C0   496 0001:000079C4   497 0001:000079C6
+   499 0001:000079D2   501 0001:000079E7   502 0001:000079F1   504 0001:000079F5
+   506 0001:00007A0A   507 0001:00007A14   508 0001:00007A1E   511 0001:00007A20
+   512 0001:00007A2D   513 0001:00007A31   514 0001:00007A3B   516 0001:00007A6C
+   517 0001:00007A86   519 0001:00007A95   520 0001:00007ABC   521 0001:00007ACC
+   523 0001:00007ADC   524 0001:00007AEB   525 0001:00007B1A   526 0001:00007B3E
+   527 0001:00007B4A   528 0001:00007B65   530 0001:00007B71   531 0001:00007B7D
+   532 0001:00007B98   534 0001:00007BA4   535 0001:00007BB0   536 0001:00007BCB
+   538 0001:00007BD7   539 0001:00007BE3   541 0001:00007BEC   542 0001:00007BFD
+   545 0001:00007C06   547 0001:00007C0F   550 0001:00007C3C   551 0001:00007C4D
+   553 0001:00007C54   556 0001:00007C5D   558 0001:00007C64
+
+Line numbers for VA508Classes(VA508Classes.pas) segment .itext
+
+   561 0002:000001FC
+
+Line numbers for VA508DelphiCompatibility(VA508DelphiCompatibility.pas) segment .text
+
+    88 0001:000081D4    89 0001:000081F1    90 0001:000081F7    91 0001:00008202
+    92 0001:00008218    93 0001:00008238    96 0001:00008270    97 0001:0000828D
+    98 0001:00008293    99 0001:000082A0   100 0001:000082AD   102 0001:000082E8
+   103 0001:00008309   104 0001:0000830B   105 0001:00008313   106 0001:00008317
+   107 0001:00008332   108 0001:00008342   110 0001:0000835A   111 0001:0000836F
+   113 0001:00008375   115 0001:0000838C   117 0001:00008392   118 0001:000083A0
+   119 0001:000083A6   120 0001:000083B3   123 0001:000083BD   125 0001:000083CA
+   127 0001:000083E6   129 0001:000083FC   130 0001:00008413   131 0001:00008425
+   133 0001:00008438   134 0001:00008440   135 0001:00008446   136 0001:00008453
+   138 0001:0000845D   125 0001:0000845E   140 0001:00008463   143 0001:00008498
+   144 0001:000084BC   145 0001:000084CB   146 0001:000084DC   147 0001:000084ED
+   148 0001:000084FE   149 0001:0000850F   150 0001:00008520   152 0001:00008531
+   155 0001:00008538   156 0001:00008564   159 0001:00008596   176 0001:000085A5
+   188 0001:000085FC   189 0001:00008602   194 0001:00008604   195 0001:00008607
+   196 0001:0000860B   198 0001:00008619   199 0001:00008625   202 0001:0000865C
+   203 0001:0000865F   204 0001:00008663   206 0001:00008671   207 0001:0000867D
+   210 0001:000086D0   211 0001:000086D3   212 0001:000086DF   213 0001:000086ED
+   214 0001:000086FB   215 0001:00008709   217 0001:00008710   221 0001:00008754
+   222 0001:00008766   223 0001:0000877F   226 0001:000087A0   227 0001:000087A6
+   228 0001:000087B4   231 0001:000087B8   232 0001:000087BE   233 0001:000087CF
+   236 0001:000087D4   237 0001:000087DA   238 0001:000087E8   243 0001:000087EC
+   244 0001:000087FE   245 0001:00008817   251 0001:00008838   252 0001:0000883B
+   253 0001:0000883D   254 0001:00008846   256 0001:00008854   257 0001:00008860
+   264 0001:000088A0   265 0001:000088A5   266 0001:000088A7   267 0001:000088AE
+   268 0001:000088B2   270 0001:000088BB   271 0001:000088CB   276 0001:000088D0
+   277 0001:000088D1   278 0001:000088D3   280 0001:000088E1   281 0001:000088EF
+   283 0001:000088F3   286 0001:000088F8   287 0001:00008902   292 0001:00008904
+   293 0001:00008906   294 0001:00008908   295 0001:0000892A   301 0001:00008930
+   302 0001:00008935   303 0001:00008937   304 0001:0000893E   305 0001:00008942
+   307 0001:0000894B   308 0001:0000895B   322 0001:00008960   325 0001:00008972
+   328 0001:0000898B   345 0001:000089AC   346 0001:000089AF   349 0001:000089BB
+   423 0001:000089D0   424 0001:000089D6   440 0001:000089DD   441 0001:000089E9
+   442 0001:000089F2   443 0001:000089FE   444 0001:00008A0A   483 0001:00008A5C
+   484 0001:00008A5E   485 0001:00008A67   486 0001:00008A70   487 0001:00008A79
+   488 0001:00008A80   489 0001:00008A85   490 0001:00008A8C   507 0001:00008A90
+   508 0001:00008AB8   509 0001:00008ABA   510 0001:00008AC0   511 0001:00008AC9
+   515 0001:00008ADB   516 0001:00008AE4   518 0001:00008B0D   519 0001:00008B15
+   520 0001:00008B1B   521 0001:00008B59   529 0001:00008B73   530 0001:00008B7C
+   532 0001:00008BA4   533 0001:00008BAC   534 0001:00008BB2   535 0001:00008BEF
+   541 0001:00008C09   542 0001:00008C30   543 0001:00008C36   544 0001:00008C43
+   547 0001:00008C5B   548 0001:00008C68   554 0001:00008CF8   555 0001:00008D0A
+   556 0001:00008D23   559 0001:00008D44   560 0001:00008D47   561 0001:00008D53
+   565 0001:00008D64   566 0001:00008D67   567 0001:00008D73   573 0001:00008D88
+   574 0001:00008D9F   575 0001:00008DA1   576 0001:00008DAA   577 0001:00008DB0
+   579 0001:00008DB4   580 0001:00008DD4   577 0001:00008DDA   582 0001:00008DDE
+   587 0001:00008E0C   588 0001:00008E1E   589 0001:00008E37   592 0001:00008E58
+   593 0001:00008E5E   594 0001:00008E67   599 0001:00008E6C   600 0001:00008E7E
+   601 0001:00008E97   604 0001:00008EB8   605 0001:00008EBE   606 0001:00008EC7
+
+Line numbers for VA508DelphiCompatibility(VA508DelphiCompatibility.pas) segment .itext
+
+   608 0002:00000244   609 0002:0000024D   611 0002:00000252
+
+Line numbers for VA508AccessibilityManager(VA508AccessibilityManager.pas) segment .text
+
+   524 0001:0000A1D0   525 0001:0000A1E2   526 0001:0000A1F3   530 0001:0000A1F4
+   531 0001:0000A1FD   532 0001:0000A20E   533 0001:0000A213   537 0001:0000A214
+   538 0001:0000A21D   539 0001:0000A227   540 0001:0000A230   541 0001:0000A23A
+   542 0001:0000A243   543 0001:0000A24D   544 0001:0000A256   545 0001:0000A260
+   546 0001:0000A269   547 0001:0000A273   548 0001:0000A27C   549 0001:0000A286
+   554 0001:0000A288   555 0001:0000A28E   558 0001:0000A29F   559 0001:0000A2A5
+   560 0001:0000A2AB   561 0001:0000A2B1   562 0001:0000A2BC   563 0001:0000A2C7
+   564 0001:0000A2CE   566 0001:0000A2D8   567 0001:0000A2E1   570 0001:0000A2E4
+   571 0001:0000A2F6   572 0001:0000A2FF   575 0001:0000A31C   576 0001:0000A327
+   577 0001:0000A336   578 0001:0000A33C   579 0001:0000A344   580 0001:0000A350
+   583 0001:0000A360   584 0001:0000A385   586 0001:0000A38B   590 0001:0000A3D9
+   591 0001:0000A3F6   594 0001:0000A438   595 0001:0000A43E   596 0001:0000A441
+   597 0001:0000A452   598 0001:0000A456   602 0001:0000A45C   603 0001:0000A462
+   607 0001:0000A464   608 0001:0000A467   611 0001:0000A468   612 0001:0000A46E
+   616 0001:0000A4A3   617 0001:0000A4B2   618 0001:0000A4BD   620 0001:0000A4CD
+   623 0001:0000A4D8   624 0001:0000A4EE   626 0001:0000A4F3   627 0001:0000A4F8
+   629 0001:0000A4FC   630 0001:0000A501   631 0001:0000A509   633 0001:0000A513
+   634 0001:0000A526   636 0001:0000A543   639 0001:0000A564   640 0001:0000A567
+   642 0001:0000A56C   643 0001:0000A571   645 0001:0000A575   646 0001:0000A57D
+   647 0001:0000A585   650 0001:0000A589   653 0001:0000A58C   654 0001:0000A592
+   658 0001:0000A5C4   659 0001:0000A5CE   661 0001:0000A5D4   662 0001:0000A5D9
+   663 0001:0000A5E1   666 0001:0000A5E5   669 0001:0000A5E8   670 0001:0000A5EE
+   672 0001:0000A5FA   673 0001:0000A604   675 0001:0000A60A   676 0001:0000A60F
+   677 0001:0000A617   680 0001:0000A61B   683 0001:0000A620   684 0001:0000A623
+   685 0001:0000A627   687 0001:0000A62D   688 0001:0000A633   691 0001:0000A639
+   692 0001:0000A64B   694 0001:0000A651   695 0001:0000A65D   697 0001:0000A661
+   702 0001:0000A664   703 0001:0000A667   704 0001:0000A66E   710 0001:0000A670
+   711 0001:0000A679   713 0001:0000A68F   714 0001:0000A698   715 0001:0000A6A4
+   716 0001:0000A6AF   717 0001:0000A6B3   719 0001:0000A6B8   723 0001:0000A6BC
+   724 0001:0000A6D1   725 0001:0000A6E0   726 0001:0000A6E3   727 0001:0000A6F4
+   728 0001:0000A6FD   729 0001:0000A704   730 0001:0000A71B   733 0001:0000A738
+   734 0001:0000A743   735 0001:0000A74E   736 0001:0000A753   737 0001:0000A75B
+   738 0001:0000A767   743 0001:0000A778   744 0001:0000A77F   751 0001:0000A780
+   752 0001:0000A7A3   753 0001:0000A7A5   755 0001:0000A7A9   756 0001:0000A7B3
+   757 0001:0000A7C1   759 0001:0000A7C7   761 0001:0000A7CD   762 0001:0000A7D6
+   763 0001:0000A7E1   767 0001:0000A7EE   769 0001:0000A7FB   773 0001:0000A824
+   774 0001:0000A82A   775 0001:0000A833   779 0001:0000A838   780 0001:0000A83B
+   784 0001:0000A83C   785 0001:0000A855   786 0001:0000A859   788 0001:0000A877
+   789 0001:0000A879   796 0001:0000A8A0   797 0001:0000A8B9   798 0001:0000A8C2
+   799 0001:0000A8CE   800 0001:0000A8D2   801 0001:0000A8DC   802 0001:0000A8E7
+   804 0001:0000A8EB   805 0001:0000A8F5   807 0001:0000A8FF   812 0001:0000A924
+   813 0001:0000A929   823 0001:0000A92C   824 0001:0000A948   825 0001:0000A951
+   826 0001:0000A960   827 0001:0000A968   828 0001:0000A972   830 0001:0000A981
+   831 0001:0000A98E   833 0001:0000A998   838 0001:0000A9BC   839 0001:0000A9D1
+   840 0001:0000A9DC   841 0001:0000A9E9   842 0001:0000A9EE   843 0001:0000A9FF
+   844 0001:0000AA06   847 0001:0000AA24   848 0001:0000AA2F   849 0001:0000AA36
+   850 0001:0000AA3D   851 0001:0000AA42   852 0001:0000AA48   853 0001:0000AA50
+   854 0001:0000AA5C   866 0001:0000AA6C   867 0001:0000AA90   868 0001:0000AA95
+   870 0001:0000AAA4   871 0001:0000AAA7   873 0001:0000AAA9   875 0001:0000AABA
+   877 0001:0000AAD2   878 0001:0000AADE   880 0001:0000AAE0   873 0001:0000AAE1
+   881 0001:0000AAE4   883 0001:0000AB0C   884 0001:0000AB33   885 0001:0000AB52
+   886 0001:0000AB5F   887 0001:0000AB61   889 0001:0000AB64   890 0001:0000AB73
+   892 0001:0000AB77   893 0001:0000AB8B   894 0001:0000AB9A   896 0001:0000ABA6
+   897 0001:0000ABAA   898 0001:0000ABAE   899 0001:0000ABB0   903 0001:0000ABE8
+   904 0001:0000ABEE   905 0001:0000ABFD   909 0001:0000AC00   910 0001:0000AC09
+   911 0001:0000AC1F   915 0001:0000AC24   916 0001:0000AC2D   917 0001:0000AC43
+   921 0001:0000AC48   922 0001:0000AC4E   923 0001:0000AC5D   932 0001:0000AC60
+   933 0001:0000AC76   936 0001:0000ACA4   937 0001:0000ACAB   938 0001:0000ACAD
+   939 0001:0000ACB4   940 0001:0000ACC2   942 0001:0000ACD3   943 0001:0000ACE3
+   945 0001:0000ACE5   946 0001:0000ACF6   947 0001:0000AD0A   949 0001:0000AD1C
+   950 0001:0000AD1E   952 0001:0000AD24   953 0001:0000AD35   954 0001:0000AD42
+   955 0001:0000AD45   958 0001:0000AD54   959 0001:0000AD56   956 0001:0000AD6C
+   961 0001:0000AD7B   962 0001:0000AD86   966 0001:0000AD9C   967 0001:0000AD9F
+   974 0001:0000ADA0   975 0001:0000ADD2   976 0001:0000ADDA   977 0001:0000ADDE
+   979 0001:0000ADE8   980 0001:0000ADF8   982 0001:0000AE06   983 0001:0000AE11
+   984 0001:0000AE22   985 0001:0000AE2D   987 0001:0000AE2F   977 0001:0000AE32
+   988 0001:0000AE35   996 0001:0000AE68   997 0001:0000AE85   999 0001:0000AEA0
+  1000 0001:0000AEAD  1001 0001:0000AEBE  1004 0001:0000AF05  1006 0001:0000AF2D
+  1008 0001:0000AF39   997 0001:0000AF3C  1009 0001:0000AF43  1011 0001:0000AF8C
+  1012 0001:0000AF98  1013 0001:0000AFA5  1014 0001:0000AFB0  1017 0001:0000AFB4
+  1018 0001:0000AFBD  1019 0001:0000AFCF  1031 0001:0000AFD4  1032 0001:0000AFFE
+  1033 0001:0000B02B  1035 0001:0000B033  1036 0001:0000B042  1037 0001:0000B050
+  1038 0001:0000B05C  1039 0001:0000B06F  1040 0001:0000B078  1041 0001:0000B083
+  1042 0001:0000B091  1043 0001:0000B0A3  1045 0001:0000B0AB  1046 0001:0000B0BC
+  1047 0001:0000B0CB  1048 0001:0000B0D6  1043 0001:0000B0D7  1050 0001:0000B0E7
+  1052 0001:0000B0FA  1054 0001:0000B111  1058 0001:0000B14D  1059 0001:0000B15C
+  1060 0001:0000B15F  1069 0001:0000B19C  1070 0001:0000B1BD  1072 0001:0000B1C0
+  1073 0001:0000B1CE  1075 0001:0000B1D2  1076 0001:0000B1E5  1077 0001:0000B1F3
+  1079 0001:0000B201  1082 0001:0000B211  1084 0001:0000B213  1085 0001:0000B21B
+  1086 0001:0000B23D  1088 0001:0000B241  1089 0001:0000B243  1093 0001:0000B278
+  1094 0001:0000B27E  1095 0001:0000B28E  1101 0001:0000B294  1102 0001:0000B2B7
+  1103 0001:0000B2BB  1106 0001:0000B2BF  1107 0001:0000B2CA  1109 0001:0000B2DB
+  1118 0001:0000B300  1119 0001:0000B309  1120 0001:0000B310  1122 0001:0000B31B
+  1124 0001:0000B32F  1125 0001:0000B33C  1126 0001:0000B348  1128 0001:0000B361
+  1129 0001:0000B371  1131 0001:0000B377  1132 0001:0000B383  1133 0001:0000B398
+  1135 0001:0000B3A3  1136 0001:0000B3A9  1137 0001:0000B3B5  1138 0001:0000B3BB
+  1139 0001:0000B3C7  1140 0001:0000B3CD  1142 0001:0000B3D8  1122 0001:0000B3DB
+  1143 0001:0000B3E2  1144 0001:0000B3ED  1146 0001:0000B3F5  1147 0001:0000B3FB
+  1148 0001:0000B402  1158 0001:0000B40C  1159 0001:0000B41A  1160 0001:0000B420
+  1163 0001:0000B432  1164 0001:0000B444  1165 0001:0000B448  1167 0001:0000B44D
+  1169 0001:0000B453  1171 0001:0000B464  1173 0001:0000B47C  1174 0001:0000B488
+  1175 0001:0000B49A  1177 0001:0000B4AB  1169 0001:0000B4AC  1179 0001:0000B4AF
+  1181 0001:0000B4B8  1182 0001:0000B4C5  1183 0001:0000B4D1  1185 0001:0000B4EF
+  1186 0001:0000B4F3  1188 0001:0000B500  1189 0001:0000B50B  1195 0001:0000B510
+  1197 0001:0000B512  1199 0001:0000B516  1201 0001:0000B51B  1202 0001:0000B51D
+  1204 0001:0000B520  1197 0001:0000B523  1206 0001:0000B527  1209 0001:0000B52C
+  1210 0001:0000B532  1211 0001:0000B53B  1212 0001:0000B555  1221 0001:0000B568
+  1222 0001:0000B588  1223 0001:0000B593  1224 0001:0000B59D  1226 0001:0000B5A4
+  1227 0001:0000B5B6  1228 0001:0000B5BE  1231 0001:0000B5D1  1232 0001:0000B5D9
+  1233 0001:0000B5E7  1234 0001:0000B5F5  1237 0001:0000B607  1238 0001:0000B612
+  1239 0001:0000B621  1241 0001:0000B629  1242 0001:0000B63D  1243 0001:0000B651
+  1244 0001:0000B660  1245 0001:0000B66D  1246 0001:0000B67C  1247 0001:0000B689
+  1248 0001:0000B698  1249 0001:0000B6A5  1250 0001:0000B6B4  1251 0001:0000B6C1
+  1252 0001:0000B6D0  1235 0001:0000B6E0  1257 0001:0000B6FD  1229 0001:0000B70D
+  1261 0001:0000B72A  1263 0001:0000B73A  1267 0001:0000B7C8  1268 0001:0000B7CD
+  1275 0001:0000B7D0  1283 0001:0000B7F5  1284 0001:0000B7FD  1285 0001:0000B80B
+  1287 0001:0000B82A  1288 0001:0000B83A  1290 0001:0000B844  1291 0001:0000B84B
+  1292 0001:0000B853  1293 0001:0000B861  1295 0001:0000B88A  1296 0001:0000B891
+  1298 0001:0000B8B9  1299 0001:0000B8BF  1300 0001:0000B8DA  1301 0001:0000B8E0
+  1302 0001:0000B8FB  1305 0001:0000B934  1308 0001:0000B944  1285 0001:0000B947
+  1310 0001:0000B95D  1312 0001:0000B96D  1325 0001:0000B9FC  1326 0001:0000BA25
+  1327 0001:0000BA2D  1329 0001:0000BA3B  1331 0001:0000BA41  1333 0001:0000BA5D
+  1334 0001:0000BA6B  1335 0001:0000BA7C  1337 0001:0000BA99  1343 0001:0000BAA9
+  1344 0001:0000BAAF  1345 0001:0000BABC  1346 0001:0000BAC2  1349 0001:0000BACF
+  1350 0001:0000BADA  1352 0001:0000BAE0  1353 0001:0000BAEE  1354 0001:0000BAF2
+  1358 0001:0000BB0D  1362 0001:0000BB54  1363 0001:0000BB5D  1364 0001:0000BB70
+  1368 0001:0000BB74  1369 0001:0000BB7D  1370 0001:0000BB90  1374 0001:0000BB94
+  1375 0001:0000BB9D  1376 0001:0000BBB0  1380 0001:0000BBB4  1381 0001:0000BBBD
+  1382 0001:0000BBCC  1386 0001:0000BBD0  1387 0001:0000BBD9  1388 0001:0000BBEC
+  1400 0001:0000BBF0  1401 0001:0000BBF8  1402 0001:0000BC05  1403 0001:0000BC12
+  1405 0001:0000BC23  1407 0001:0000BC3B  1408 0001:0000BC4A  1409 0001:0000BC6B
+  1411 0001:0000BC7B  1403 0001:0000BC7C  1412 0001:0000BC7F  1414 0001:0000BC84
+  1415 0001:0000BC93  1416 0001:0000BCA2  1417 0001:0000BCB0  1418 0001:0000BCDD
+  1419 0001:0000BCE6  1421 0001:0000BCF8  1423 0001:0000BD06  1425 0001:0000BD0D
+  1426 0001:0000BD17  1427 0001:0000BD1B  1429 0001:0000BD24  1432 0001:0000BD30
+  1433 0001:0000BD37  1419 0001:0000BD38  1434 0001:0000BD3D  1436 0001:0000BD4B
+  1437 0001:0000BD61  1434 0001:0000BD62  1439 0001:0000BD72  1441 0001:0000BD82
+  1455 0001:0000BDF8  1456 0001:0000BE00  1457 0001:0000BE09  1458 0001:0000BE12
+  1461 0001:0000BE25  1463 0001:0000BE35  1464 0001:0000BE41  1465 0001:0000BE46
+  1461 0001:0000BE47  1467 0001:0000BE4A  1468 0001:0000BE56  1469 0001:0000BE59
+  1470 0001:0000BE5C  1471 0001:0000BE68  1477 0001:0000BE70  1478 0001:0000BE75
+  1480 0001:0000BE7E  1481 0001:0000BE87  1484 0001:0000BE9A  1486 0001:0000BEAA
+  1487 0001:0000BEB6  1489 0001:0000BEBE  1490 0001:0000BEC5  1492 0001:0000BEC7
+  1484 0001:0000BEC8  1494 0001:0000BECB  1497 0001:0000BED9  1498 0001:0000BEE0
+  1504 0001:0000BEE4  1505 0001:0000BEE9  1507 0001:0000BEF2  1508 0001:0000BEFB
+  1511 0001:0000BF0E  1513 0001:0000BF1E  1514 0001:0000BF2A  1516 0001:0000BF32
+  1517 0001:0000BF36  1518 0001:0000BF3D  1520 0001:0000BF3F  1511 0001:0000BF40
+  1522 0001:0000BF43  1525 0001:0000BF51  1526 0001:0000BF58  1531 0001:0000BF5C
+  1532 0001:0000BF62  1533 0001:0000BF64  1534 0001:0000BF6D  1536 0001:0000BF7D
+  1537 0001:0000BF8B  1538 0001:0000BF99  1534 0001:0000BF9A  1539 0001:0000BF9D
+  1540 0001:0000BF9F  1546 0001:0000BFA8  1547 0001:0000BFB1  1548 0001:0000BFBA
+  1549 0001:0000BFCB  1550 0001:0000BFD2  1552 0001:0000BFD6  1553 0001:0000BFE2
+  1554 0001:0000BFE5  1555 0001:0000BFE8  1556 0001:0000BFEB  1558 0001:0000BFF7
+  1562 0001:0000BFFC  1563 0001:0000C003  1567 0001:0000C004  1568 0001:0000C00D
+  1595 0001:0000C010  1596 0001:0000C013  1597 0001:0000C03F  1600 0001:0000C044
+  1601 0001:0000C049  1602 0001:0000C04B  1603 0001:0000C055  1604 0001:0000C05F
+  1605 0001:0000C06C  1606 0001:0000C082  1607 0001:0000C08B  1608 0001:0000C096
+  1609 0001:0000C0A5  1610 0001:0000C0B2  1611 0001:0000C0B4  1614 0001:0000C0BC
+  1615 0001:0000C0BF  1616 0001:0000C0C7  1617 0001:0000C0CF  1618 0001:0000C0D7
+  1619 0001:0000C0DF  1620 0001:0000C0E7  1621 0001:0000C0EF  1622 0001:0000C0F7
+  1623 0001:0000C0FF  1624 0001:0000C107  1625 0001:0000C10E  1628 0001:0000C110
+  1629 0001:0000C123  1631 0001:0000C13E  1632 0001:0000C160  1634 0001:0000C176
+  1635 0001:0000C18A  1637 0001:0000C193  1638 0001:0000C19A  1642 0001:0000C1AB
+  1647 0001:0000C1CC  1648 0001:0000C1E5  1650 0001:0000C208  1651 0001:0000C219
+  1653 0001:0000C22E  1654 0001:0000C23D  1655 0001:0000C244  1657 0001:0000C24B
+  1659 0001:0000C25A  1660 0001:0000C27C  1662 0001:0000C285  1663 0001:0000C28C
+  1667 0001:0000C293  1669 0001:0000C2A2  1670 0001:0000C2B1  1672 0001:0000C2C1
+  1673 0001:0000C2C9  1674 0001:0000C2FD  1676 0001:0000C306  1677 0001:0000C30D
+  1681 0001:0000C314  1683 0001:0000C337  1684 0001:0000C359  1685 0001:0000C36F
+  1686 0001:0000C383  1688 0001:0000C390  1689 0001:0000C3A1  1690 0001:0000C3A8
+  1691 0001:0000C3AF  1693 0001:0000C3D2  1694 0001:0000C3F4  1696 0001:0000C3FD
+  1697 0001:0000C41D  1699 0001:0000C434  1700 0001:0000C45B  1701 0001:0000C46C
+  1702 0001:0000C475  1708 0001:0000C47C  1709 0001:0000C485  1712 0001:0000C48F
+  1715 0001:0000C4C4  1716 0001:0000C4D7  1718 0001:0000C4FF  1719 0001:0000C521
+  1721 0001:0000C537  1722 0001:0000C54B  1724 0001:0000C554  1725 0001:0000C565
+  1729 0001:0000C56C  1732 0001:0000C58C  1733 0001:0000C59F  1735 0001:0000C5B7
+  1736 0001:0000C5D9  1738 0001:0000C5E2  1741 0001:0000C5E9  1744 0001:0000C60C
+  1745 0001:0000C60F  1747 0001:0000C618  1748 0001:0000C622  1751 0001:0000C66D
+  1753 0001:0000C670  1754 0001:0000C695  1759 0001:0000C6A0  1760 0001:0000C6B2
+  1761 0001:0000C6C4  1762 0001:0000C6D6  1763 0001:0000C6E8  1764 0001:0000C6FA
+  1765 0001:0000C70C  1792 0001:0000C73C  1793 0001:0000C742  1795 0001:0000C74B
+  1796 0001:0000C74D  1798 0001:0000C74F  1799 0001:0000C75D  1804 0001:0000C7BA
+  1806 0001:0000C7C1  1808 0001:0000C7C5  1810 0001:0000C7CC  1813 0001:0000C7D4
+  1814 0001:0000C7D7  1816 0001:0000C7EC  1818 0001:0000C7F5  1819 0001:0000C7FF
+  1821 0001:0000C813  1823 0001:0000C81C  1824 0001:0000C826  1825 0001:0000C846
+  1827 0001:0000C85D  1829 0001:0000C866  1830 0001:0000C870  1832 0001:0000C884
+  1834 0001:0000C88D  1835 0001:0000C897  1838 0001:0000C8BA  1841 0001:0000C8C8
+  1842 0001:0000C8D1  1843 0001:0000C8D9  1844 0001:0000C8E3  1845 0001:0000C8ED
+  1846 0001:0000C8F7  1847 0001:0000C901  1848 0001:0000C90B  1850 0001:0000C915
+  1851 0001:0000C920  1852 0001:0000C92B  1854 0001:0000C936  1855 0001:0000C952
+  1858 0001:0000C954  1859 0001:0000C96E  1861 0001:0000C985  1862 0001:0000C9AA
+  1865 0001:0000C9BD  1868 0001:0000C9D8  1869 0001:0000C9FD  1870 0001:0000CA10
+  1871 0001:0000CA3C  1874 0001:0000CA4F  1876 0001:0000CA66  1877 0001:0000CA8B
+  1880 0001:0000CA9E  1882 0001:0000CAB5  1883 0001:0000CADA  1886 0001:0000CAED
+  1888 0001:0000CB04  1889 0001:0000CB29  1892 0001:0000CB3C  1894 0001:0000CB53
+  1895 0001:0000CB78  1897 0001:0000CB8B  1899 0001:0000CBB4  1900 0001:0000CBF1
+  1902 0001:0000CBFE  1903 0001:0000CC02  1904 0001:0000CC15  1905 0001:0000CC19
+  1908 0001:0000CC25  1910 0001:0000CC34  1912 0001:0000CC42  1913 0001:0000CC46
+  1914 0001:0000CC51  1916 0001:0000CC5C  1917 0001:0000CC5E  1918 0001:0000CC70
+  1919 0001:0000CC9F  1920 0001:0000CCB1  1921 0001:0000CCC3  1923 0001:0000CCD0
+  1924 0001:0000CCDE  1925 0001:0000CCF5  1926 0001:0000CCF9  1928 0001:0000CD0C
+  1930 0001:0000CD11  1932 0001:0000CD28  1934 0001:0000CD38  1935 0001:0000CD44
+  1939 0001:0000CD4D  1940 0001:0000CD55  1943 0001:0000CD5C  1944 0001:0000CD64
+  1955 0001:0000CDA8  1956 0001:0000CDAC  1958 0001:0000CDB9  1959 0001:0000CDC0
+  1960 0001:0000CDCE  1962 0001:0000CDDD  1963 0001:0000CDE0  1965 0001:0000CDE6
+  1967 0001:0000CDF3  1968 0001:0000CE0B  1969 0001:0000CE17  1970 0001:0000CE25
+  1972 0001:0000CE29  1973 0001:0000CE30  1974 0001:0000CE33  1975 0001:0000CE37
+  1981 0001:0000CE49  1984 0001:0000CE58  1985 0001:0000CE6F  1995 0001:0000CE74
+  1996 0001:0000CE77  1998 0001:0000CE80  1999 0001:0000CE87  2000 0001:0000CE95
+  2002 0001:0000CEA4  2003 0001:0000CEA7  2004 0001:0000CEAF  2007 0001:0000CEC3
+  2011 0001:0000CEDA  2014 0001:0000CEE9  2015 0001:0000CF00  2018 0001:0000CF04
+  2019 0001:0000CF17  2020 0001:0000CF26  2021 0001:0000CF37  2022 0001:0000CF3B
+  2023 0001:0000CF44  2024 0001:0000CF55  2025 0001:0000CF59  2026 0001:0000CF62
+  2027 0001:0000CF71  2028 0001:0000CF84  2029 0001:0000CF8D  2030 0001:0000CF9B
+  2031 0001:0000CFA8  2032 0001:0000CFBB  2033 0001:0000CFD4  2034 0001:0000CFED
+  2036 0001:0000CFFD  2037 0001:0000D004  2040 0001:0000D020  2041 0001:0000D02B
+  2042 0001:0000D02F  2043 0001:0000D036  2044 0001:0000D046  2045 0001:0000D051
+  2046 0001:0000D05C  2047 0001:0000D064  2048 0001:0000D06C  2049 0001:0000D074
+  2050 0001:0000D07C  2051 0001:0000D084  2052 0001:0000D090  2055 0001:0000D0A0
+  2056 0001:0000D0A6  2057 0001:0000D0AF  2065 0001:0000D0B4  2066 0001:0000D0BF
+  2067 0001:0000D0C4  2068 0001:0000D0C8  2070 0001:0000D0CC  2071 0001:0000D0D9
+  2073 0001:0000D0DD  2074 0001:0000D0E5  2075 0001:0000D0E9  2078 0001:0000D0ED
+  2080 0001:0000D0F5  2081 0001:0000D0F9  2083 0001:0000D102  2085 0001:0000D117
+  2086 0001:0000D126  2088 0001:0000D134  2089 0001:0000D138  2091 0001:0000D140
+  2083 0001:0000D143  2093 0001:0000D146  2095 0001:0000D14C  2096 0001:0000D15A
+  2098 0001:0000D173  2102 0001:0000D17D  2128 0001:0000D188  2129 0001:0000D1A8
+  2130 0001:0000D1AD  2132 0001:0000D1C1  2133 0001:0000D1CB  2134 0001:0000D1D8
+  2136 0001:0000D1DC  2137 0001:0000D1E8  2138 0001:0000D1EE  2140 0001:0000D1FB
+  2142 0001:0000D1FF  2145 0001:0000D20C  2149 0001:0000D234  2150 0001:0000D257
+  2151 0001:0000D259  2152 0001:0000D261  2153 0001:0000D26B  2154 0001:0000D279
+  2155 0001:0000D296  2157 0001:0000D2C1  2159 0001:0000D2CE  2160 0001:0000D2ED
+  2170 0001:0000D328  2171 0001:0000D344  2172 0001:0000D34E  2173 0001:0000D35A
+  2174 0001:0000D367  2176 0001:0000D36B  2178 0001:0000D371  2179 0001:0000D380
+  2183 0001:0000D38F  2184 0001:0000D39C  2185 0001:0000D3A0  2190 0001:0000D3AC
+  2191 0001:0000D3B6  2192 0001:0000D3BC  2194 0001:0000D3C1  2196 0001:0000D3C6
+  2201 0001:0000D3EC  2202 0001:0000D3EF  2204 0001:0000D400  2205 0001:0000D40C
+  2207 0001:0000D410  2208 0001:0000D416  2210 0001:0000D422  2213 0001:0000D42C
+  2228 0001:0000D430  2229 0001:0000D439  2231 0001:0000D446  2232 0001:0000D454
+  2233 0001:0000D458  2235 0001:0000D45D  2237 0001:0000D46D  2238 0001:0000D47B
+  2240 0001:0000D481  2241 0001:0000D487  2243 0001:0000D494  2247 0001:0000D498
+  2248 0001:0000D49E  2250 0001:0000D4A9  2252 0001:0000D4AB  2254 0001:0000D4AF
+  2255 0001:0000D4B8  2256 0001:0000D4BC  2258 0001:0000D4BE  2235 0001:0000D4BF
+  2259 0001:0000D4C2  2261 0001:0000D4C8  2233 0001:0000D4CB  2263 0001:0000D4D1
+  2270 0001:0000D4D8  2271 0001:0000D4DF  2273 0001:0000D4E8  2274 0001:0000D4F5
+  2276 0001:0000D50A  2277 0001:0000D519  2279 0001:0000D527  2280 0001:0000D530
+  2281 0001:0000D542  2283 0001:0000D544  2274 0001:0000D547  2285 0001:0000D54A
+  2290 0001:0000D550  2291 0001:0000D554  2292 0001:0000D566  2293 0001:0000D575
+  2294 0001:0000D584  2295 0001:0000D58F  2296 0001:0000D599  2297 0001:0000D5A3
+  2298 0001:0000D5B9  2300 0001:0000D5BD  2301 0001:0000D5D6  2303 0001:0000D5E6
+  2306 0001:0000D5EC  2307 0001:0000D600  2308 0001:0000D622  2310 0001:0000D63E
+  2311 0001:0000D648  2312 0001:0000D662  2314 0001:0000D67D  2315 0001:0000D691
+  2316 0001:0000D6AB  2320 0001:0000D6BE  2321 0001:0000D6D8  2322 0001:0000D6E7
+  2325 0001:0000D6F1  2327 0001:0000D714  2328 0001:0000D73A  2329 0001:0000D749
+  2330 0001:0000D750  2339 0001:0000D778  2340 0001:0000D77B  2341 0001:0000D799
+  2343 0001:0000D79C  2344 0001:0000D7BB  2345 0001:0000D7D7  2346 0001:0000D7DE
+  2347 0001:0000D7EC  2350 0001:0000D7FC  2351 0001:0000D80B  2353 0001:0000D81D
+  2354 0001:0000D828  2355 0001:0000D838  2356 0001:0000D845  2358 0001:0000D850
+  2348 0001:0000D851  2360 0001:0000D860  2361 0001:0000D86F  2363 0001:0000D889
+  2365 0001:0000D898  2373 0001:0000D8BC  2374 0001:0000D8DB  2375 0001:0000D8F0
+  2376 0001:0000D8F7  2377 0001:0000D905  2378 0001:0000D912  2379 0001:0000D922
+  2381 0001:0000D926  2382 0001:0000D935  2383 0001:0000D940  2384 0001:0000D94D
+  2385 0001:0000D95D  2386 0001:0000D961  2387 0001:0000D96E  2388 0001:0000D97E
+  2389 0001:0000D982  2390 0001:0000D98F  2391 0001:0000D996  2392 0001:0000D99A
+  2395 0001:0000D9B1  2397 0001:0000D9C0  2403 0001:0000D9EC  2404 0001:0000D9EF
+  2406 0001:0000DA00  2407 0001:0000DA0C  2409 0001:0000DA10  2410 0001:0000DA16
+  2412 0001:0000DA22  2415 0001:0000DA2C  2430 0001:0000DA30  2431 0001:0000DA4C
+  2432 0001:0000DA6A  2433 0001:0000DA7C  2435 0001:0000DA8E  2436 0001:0000DA9E
+  2438 0001:0000DAA2  2440 0001:0000DAAB  2441 0001:0000DAB5  2442 0001:0000DAC0
+  2443 0001:0000DAC9  2445 0001:0000DAD8  2446 0001:0000DAE8  2449 0001:0000DB00
+  2454 0001:0000DB18  2455 0001:0000DB20  2456 0001:0000DB44  2457 0001:0000DB54
+  2462 0001:0000DB5D  2463 0001:0000DB6D  2465 0001:0000DB71  2466 0001:0000DB82
+  2467 0001:0000DB93  2468 0001:0000DB97  2469 0001:0000DBA6  2472 0001:0000DBAD
+  2479 0001:0000DBE0  2480 0001:0000DC01  2481 0001:0000DC04  2483 0001:0000DC06
+  2484 0001:0000DC10  2485 0001:0000DC23  2487 0001:0000DC28  2488 0001:0000DC32
+  2489 0001:0000DC36  2492 0001:0000DC3A  2493 0001:0000DC3C  2494 0001:0000DC40
+  2499 0001:0000DC68  2500 0001:0000DC6C  2501 0001:0000DC7C  2502 0001:0000DC8A
+  2504 0001:0000DCA0  2505 0001:0000DCAC  2502 0001:0000DCAD  2507 0001:0000DCBF
+  2509 0001:0000DCD7  2517 0001:0000DCDC  2518 0001:0000DCF8  2519 0001:0000DD0A
+  2521 0001:0000DD12  2522 0001:0000DD19  2523 0001:0000DD23  2525 0001:0000DD3E
+  2526 0001:0000DD4B  2528 0001:0000DD68  2529 0001:0000DD78  2530 0001:0000DD8B
+  2532 0001:0000DD8F  2533 0001:0000DDA1  2535 0001:0000DDA5  2536 0001:0000DDB0
+  2537 0001:0000DDC1  2539 0001:0000DDC5  2540 0001:0000DDCF  2542 0001:0000DDDC
+  2543 0001:0000DDED  2545 0001:0000DDF1  2552 0001:0000DDFB  2523 0001:0000DDFE
+  2554 0001:0000DE05  2556 0001:0000DE30  2557 0001:0000DE3F  2558 0001:0000DE4C
+  2559 0001:0000DE59  2560 0001:0000DE5F  2561 0001:0000DE6D  2562 0001:0000DE79
+  2563 0001:0000DE7D  2565 0001:0000DE86  2567 0001:0000DE9D  2569 0001:0000DEB4
+  2574 0001:0000DEBC  2575 0001:0000DED0  2576 0001:0000DED8  2579 0001:0000DEF0
+  2580 0001:0000DEF3  2581 0001:0000DEFA  2585 0001:0000DEFC  2586 0001:0000DEFF
+  2587 0001:0000DF06  2590 0001:0000DF08  2591 0001:0000DF19  2592 0001:0000DF21
+  2595 0001:0000DF3C  2596 0001:0000DF3F  2597 0001:0000DF46  2601 0001:0000DF48
+  2602 0001:0000DF4A  2606 0001:0000DF4C  2607 0001:0000DF4F  2608 0001:0000DF56
+  2611 0001:0000DF58  2612 0001:0000DF5B  2613 0001:0000DF62  2616 0001:0000DF64
+  2617 0001:0000DF67  2618 0001:0000DF6E  2622 0001:0000DF70  2623 0001:0000DF77
+  2628 0001:0000DF78  2629 0001:0000DF7F  2633 0001:0000DF80  2634 0001:0000DF87
+  2639 0001:0000DF88  2640 0001:0000DF8F  2645 0001:0000DF90  2646 0001:0000DF97
+  2650 0001:0000DF98  2651 0001:0000DF9F  2655 0001:0000DFA0  2656 0001:0000DFA7
+  2661 0001:0000DFA8  2662 0001:0000DFAF  2667 0001:0000DFB0  2668 0001:0000DFB7
+  2673 0001:0000DFB8  2674 0001:0000DFBA  2675 0001:0000DFBD  2679 0001:0000DFC0
+  2680 0001:0000DFC7  2684 0001:0000DFC8  2690 0001:0000DFCC  2691 0001:0000DFE1
+  2692 0001:0000DFE4  2693 0001:0000DFEB  2694 0001:0000DFF8  2699 0001:0000E018
+  2700 0001:0000E01B  2701 0001:0000E027  2704 0001:0000E038  2705 0001:0000E03B
+  2706 0001:0000E047  2709 0001:0000E058  2710 0001:0000E05B  2711 0001:0000E067
+  2714 0001:0000E078  2715 0001:0000E07B  2716 0001:0000E087  2721 0001:0000E098
+  2722 0001:0000E0AD  2723 0001:0000E0B8  2724 0001:0000E0C5  2725 0001:0000E0CA
+  2731 0001:0000E0E8  2732 0001:0000E10E  2734 0001:0000E117  2736 0001:0000E11F
+  2738 0001:0000E13B  2739 0001:0000E148  2741 0001:0000E15D  2742 0001:0000E162
+  2745 0001:0000E1B1  2736 0001:0000E1B4  2746 0001:0000E1B9  2748 0001:0000E1C2
+  2749 0001:0000E1C9  2750 0001:0000E1D9  2752 0001:0000E1E9  2756 0001:0000E1EE
+  2757 0001:0000E1FE  2758 0001:0000E20E  2761 0001:0000E213  2773 0001:0000E280
+  2774 0001:0000E2AB  2776 0001:0000E2CC  2777 0001:0000E2E7  2779 0001:0000E2F1
+  2780 0001:0000E30B  2781 0001:0000E30F  2783 0001:0000E318  2785 0001:0000E31F
+  2786 0001:0000E352  2787 0001:0000E35E  2788 0001:0000E392  2791 0001:0000E3A7
+  2794 0001:0000E3B0  2795 0001:0000E3B7  2797 0001:0000E408  2798 0001:0000E425
+  2799 0001:0000E42B  2800 0001:0000E43C  2802 0001:0000E444  2803 0001:0000E448
+  2805 0001:0000E450  2808 0001:0000E458  2809 0001:0000E460  2810 0001:0000E467
+  2814 0001:0000E48C  2815 0001:0000E491  2816 0001:0000E495  2817 0001:0000E49A
+  2820 0001:0000E49C  2821 0001:0000E4AE  2822 0001:0000E4B5  2825 0001:0000E4D0
+  2826 0001:0000E4E0  2827 0001:0000E4EC  2828 0001:0000E4F3  2830 0001:0000E50A
+  2831 0001:0000E511  2832 0001:0000E51D  2835 0001:0000E52C  2836 0001:0000E537
+  2837 0001:0000E544  2840 0001:0000E553  2841 0001:0000E560  2843 0001:0000E565
+  2844 0001:0000E572  2846 0001:0000E57E  2847 0001:0000E593  2849 0001:0000E5A0
+  2850 0001:0000E5AE  2851 0001:0000E5BA  2852 0001:0000E5BF  2854 0001:0000E5C5
+  2857 0001:0000E5CC  2858 0001:0000E5D7  2859 0001:0000E5E4  2862 0001:0000E5F3
+  2863 0001:0000E5FA  2864 0001:0000E607  2865 0001:0000E613  2866 0001:0000E628
+  2867 0001:0000E635  2868 0001:0000E643  2869 0001:0000E64F  2870 0001:0000E654
+  2872 0001:0000E65A  2875 0001:0000E660  2876 0001:0000E68A  2877 0001:0000E697
+  2880 0001:0000E6A8  2881 0001:0000E6AF  2883 0001:0000E6C4  2884 0001:0000E6D3
+  2885 0001:0000E6D8  2888 0001:0000E6DE  2891 0001:0000E704  2892 0001:0000E70F
+  2893 0001:0000E71C  2896 0001:0000E72B  2897 0001:0000E732  2898 0001:0000E73F
+  2899 0001:0000E74B  2900 0001:0000E760  2901 0001:0000E76D  2902 0001:0000E77B
+  2903 0001:0000E787  2904 0001:0000E78C  2906 0001:0000E792  2909 0001:0000E798
+  2910 0001:0000E79D  2911 0001:0000E7AA  2914 0001:0000E7B4  2915 0001:0000E7B9
+  2916 0001:0000E7CE  2917 0001:0000E7DC  2918 0001:0000E7EA  2920 0001:0000E7F6
+  2923 0001:0000E800  2924 0001:0000E80B  2925 0001:0000E818  2928 0001:0000E827
+  2929 0001:0000E82E  2930 0001:0000E83B  2931 0001:0000E847  2932 0001:0000E85C
+  2933 0001:0000E869  2934 0001:0000E877  2935 0001:0000E883  2936 0001:0000E888
+  2938 0001:0000E88E  2941 0001:0000E894  2942 0001:0000E8A2  2943 0001:0000E8A9
+  2944 0001:0000E8B7  2945 0001:0000E8C4  2948 0001:0000E8D3  2950 0001:0000E8F7
+  2951 0001:0000E904  2952 0001:0000E912  2953 0001:0000E91E  2954 0001:0000E923
+  2959 0001:0000E938  2960 0001:0000E93D  2963 0001:0000E944  2964 0001:0000E94F
+  2966 0001:0000E95C  2970 0001:0000E96B  2971 0001:0000E972  2972 0001:0000E987
+  2973 0001:0000E994  2974 0001:0000E9A2  2975 0001:0000E9AE  2976 0001:0000E9B3
+  2978 0001:0000E9B9  2981 0001:0000E9C0  2982 0001:0000E9C4  2983 0001:0000E9D1
+  2986 0001:0000E9DC  2988 0001:0000E9F2  2991 0001:0000E9F6  2992 0001:0000E9FD
+  2994 0001:0000EA07  2997 0001:0000EA09  3000 0001:0000EA0C  3001 0001:0000EA0F
+  3002 0001:0000EA1C  3005 0001:0000EA26  3006 0001:0000EA2D  3008 0001:0000EA37
+  3010 0001:0000EA39  3032 0001:0000EA3C  3033 0001:0000EA40  3034 0001:0000EA4D
+  3037 0001:0000EA58  3039 0001:0000EA6E  3042 0001:0000EA72  3043 0001:0000EA79
+  3045 0001:0000EA83  3048 0001:0000EA85  3051 0001:0000EA88  3052 0001:0000EA8B
+  3054 0001:0000EA98  3058 0001:0000EAA2  3059 0001:0000EAB0  3062 0001:0000EAB4
+  3063 0001:0000EABB  3065 0001:0000EAC5  3068 0001:0000EAC7  3071 0001:0000EACC
+  3072 0001:0000EAD0  3073 0001:0000EADD  3076 0001:0000EAE8  3078 0001:0000EAFE
+  3081 0001:0000EB02  3082 0001:0000EB09  3084 0001:0000EB13  3087 0001:0000EB15
+  3090 0001:0000EB18  3091 0001:0000EB1B  3092 0001:0000EB28  3095 0001:0000EB32
+  3096 0001:0000EB40  3099 0001:0000EB44  3100 0001:0000EB4B  3102 0001:0000EB55
+  3105 0001:0000EB57  3108 0001:0000EB5C  3109 0001:0000EB5F  3110 0001:0000EB6C
+  3113 0001:0000EB76  3114 0001:0000EB84  3117 0001:0000EB88  3118 0001:0000EB8E
+  3121 0001:0000EBB4  3124 0001:0000EBB6  3128 0001:0000EBB8  3129 0001:0000EBBA
+  3131 0001:0000EBCB  3132 0001:0000EBCD  3136 0001:0000EBD0  3137 0001:0000EBE1
+  3144 0001:0000EBE4  3145 0001:0000EBE7  3146 0001:0000EBEE  3147 0001:0000EBF5
+  3150 0001:0000EBF8  3151 0001:0000EBFB  3152 0001:0000EC02  3153 0001:0000EC09
+  3156 0001:0000EC0C  3157 0001:0000EC23  3158 0001:0000EC2C  3159 0001:0000EC42
+  3160 0001:0000EC4B  3161 0001:0000EC58  3162 0001:0000EC65  3163 0001:0000EC74
+  3169 0001:0000EC98  3170 0001:0000ECA4  3171 0001:0000ECB0  3172 0001:0000ECB4
+  3173 0001:0000ECBE  3174 0001:0000ECCC  3176 0001:0000ECD7  3175 0001:0000ECDD
+  3177 0001:0000ECE5  3179 0001:0000ECE9  3181 0001:0000ECEF  3182 0001:0000ECF1
+  3183 0001:0000ECF7  3184 0001:0000ECFC  3185 0001:0000ED04  3186 0001:0000ED08
+  3189 0001:0000ED1B  3191 0001:0000ED2D  3194 0001:0000ED34  3195 0001:0000ED3F
+  3196 0001:0000ED49  3197 0001:0000ED54  3198 0001:0000ED60  3201 0001:0000ED70
+  3202 0001:0000ED73  3203 0001:0000ED7A  3204 0001:0000ED81  3205 0001:0000ED8B
+  3206 0001:0000ED99  3209 0001:0000ED9C  3210 0001:0000ED9F  3211 0001:0000EDA6
+  3212 0001:0000EDAD  3213 0001:0000EDB7  3214 0001:0000EDC5  3218 0001:0000EDC8
+  3219 0001:0000EDD5  3222 0001:0000EDD8  3223 0001:0000EDDE  3224 0001:0000EDEB
+  3227 0001:0000EDF0  3228 0001:0000EDF6  3229 0001:0000EE00  3233 0001:0000EE04
+  3234 0001:0000EE11  3239 0001:0000EE14  3240 0001:0000EE17  3241 0001:0000EE21
+  3242 0001:0000EE27  3244 0001:0000EE2B  3245 0001:0000EE35  3242 0001:0000EE3B
+  3247 0001:0000EE3F  3250 0001:0000EE44  3251 0001:0000EE4D  3252 0001:0000EE58
+  3253 0001:0000EE5E  3254 0001:0000EE74  3255 0001:0000EE7D  3262 0001:0000EE84
+  3263 0001:0000EE88  3264 0001:0000EEA2  3266 0001:0000EEAE  3267 0001:0000EEBB
+  3268 0001:0000EEC8  3270 0001:0000EED2  3285 0001:0000EED8  3286 0001:0000EEE0
+  3288 0001:0000EEEC  3290 0001:0000EEFF  3291 0001:0000EF09  3295 0001:0000EF1F
+  3296 0001:0000EF29  3299 0001:0000EF3A  3300 0001:0000EF48  3301 0001:0000EF4B
+  3302 0001:0000EF4E  3303 0001:0000EF57  3304 0001:0000EF60  3305 0001:0000EF69
+  3306 0001:0000EF72  3309 0001:0000EF78  3310 0001:0000EF7C  3312 0001:0000EF88
+  3313 0001:0000EF9B  3314 0001:0000EFAE  3315 0001:0000EFC1  3317 0001:0000EFD4
+  3324 0001:0000EFD8  3325 0001:0000EFE0  3327 0001:0000EFEC  3329 0001:0000EFFF
+  3330 0001:0000F00D  3331 0001:0000F021  3333 0001:0000F02D  3334 0001:0000F033
+  3336 0001:0000F037  3337 0001:0000F03F  3339 0001:0000F047  3340 0001:0000F049
+  3341 0001:0000F05C  3343 0001:0000F06B  3344 0001:0000F079  3346 0001:0000F081
+  3347 0001:0000F089  3349 0001:0000F091  3350 0001:0000F093  3351 0001:0000F0A6
+  3356 0001:0000F0B7  3358 0001:0000F0CA  3360 0001:0000F0D0  3361 0001:0000F0D9
+  3364 0001:0000F0E0  3365 0001:0000F0E7  3366 0001:0000F0EE  3369 0001:0000F0F5
+  3373 0001:0000F0FC  3374 0001:0000F107  3377 0001:0000F108  3378 0001:0000F121
+  3380 0001:0000F13B  3381 0001:0000F148  3383 0001:0000F14F  3386 0001:0000F174
+  3387 0001:0000F18D  3389 0001:0000F199  3390 0001:0000F1B4  3391 0001:0000F1C1
+  3392 0001:0000F1CA  3394 0001:0000F1D3  3397 0001:0000F1F8  3398 0001:0000F1FE
+  3400 0001:0000F208  3401 0001:0000F20C  3402 0001:0000F217  3403 0001:0000F21F
+  3405 0001:0000F223  3406 0001:0000F229  3408 0001:0000F22F  3410 0001:0000F239
+  3413 0001:0000F23C  3414 0001:0000F242  3415 0001:0000F24B  3417 0001:0000F24F
+  3419 0001:0000F258  3420 0001:0000F25E  3422 0001:0000F269  3423 0001:0000F277
+  3425 0001:0000F27E  3427 0001:0000F28E  3431 0001:0000F294  3432 0001:0000F29F
+  3435 0001:0000F2A0  3436 0001:0000F2A8  3437 0001:0000F2B8  3438 0001:0000F2C6
+  3439 0001:0000F2D8  3440 0001:0000F2EF  3442 0001:0000F313  3444 0001:0000F32B
+  3450 0001:0000F330  3451 0001:0000F339  3452 0001:0000F344  3453 0001:0000F34D
+  3454 0001:0000F353  3455 0001:0000F36F  3456 0001:0000F378  3463 0001:0000F37C
+  3464 0001:0000F380  3465 0001:0000F39A  3467 0001:0000F3A6  3468 0001:0000F3B3
+  3469 0001:0000F3C0  3471 0001:0000F3CA  3474 0001:0000F3D0  3475 0001:0000F3E4
+  3477 0001:0000F3F0  3478 0001:0000F404  3479 0001:0000F40E  3481 0001:0000F42B
+  3486 0001:0000F44C  3487 0001:0000F454  3489 0001:0000F460  3491 0001:0000F479
+  3492 0001:0000F483  3496 0001:0000F499  3498 0001:0000F4A8  3499 0001:0000F4B2
+  3503 0001:0000F4C1  3504 0001:0000F4CB  3508 0001:0000F4DC  3509 0001:0000F4EA
+  3510 0001:0000F4ED  3511 0001:0000F4F0  3512 0001:0000F4F9  3513 0001:0000F502
+  3514 0001:0000F50B  3515 0001:0000F514  3520 0001:0000F51C  3521 0001:0000F52D
+  3523 0001:0000F539  3525 0001:0000F544  3526 0001:0000F54F  3528 0001:0000F557
+  3529 0001:0000F55A  3530 0001:0000F569  3532 0001:0000F574  3534 0001:0000F57F
+  3535 0001:0000F58A  3537 0001:0000F592  3538 0001:0000F595  3539 0001:0000F5A4
+  3542 0001:0000F5AF  3548 0001:0000F5B8  3549 0001:0000F5BF  3551 0001:0000F5CB
+  3552 0001:0000F5D9  3553 0001:0000F5ED  3555 0001:0000F5F5  3556 0001:0000F5FB
+  3557 0001:0000F609  3561 0001:0000F61B  3562 0001:0000F62E  3565 0001:0000F641
+  3568 0001:0000F648  3569 0001:0000F64C  3571 0001:0000F658  3572 0001:0000F66B
+  3573 0001:0000F67E  3574 0001:0000F691  3576 0001:0000F6A4  3583 0001:0000F6A8
+  3584 0001:0000F6B0  3586 0001:0000F6BC  3588 0001:0000F6CB  3589 0001:0000F6D9
+  3590 0001:0000F6ED  3592 0001:0000F6F5  3593 0001:0000F6F7  3594 0001:0000F6FD
+  3595 0001:0000F70B  3598 0001:0000F71D  3601 0001:0000F721  3602 0001:0000F723
+  3604 0001:0000F727  3605 0001:0000F73A  3608 0001:0000F74D  3610 0001:0000F754
+  3611 0001:0000F75E  3612 0001:0000F765  3613 0001:0000F77B  3614 0001:0000F782
+  3615 0001:0000F789  3616 0001:0000F790  3617 0001:0000F797  3618 0001:0000F79E
+  3619 0001:0000F7B4  3620 0001:0000F7BB  3623 0001:0000F7C0  3624 0001:0000F7C6
+  3625 0001:0000F7D0  3627 0001:0000F7DA  3628 0001:0000F7DE  3629 0001:0000F7E6
+  3630 0001:0000F7EE  3632 0001:0000F7F2  3633 0001:0000F7FE  3635 0001:0000F804
+  3637 0001:0000F80E  3643 0001:0000F814  3644 0001:0000F81D  3645 0001:0000F821
+  3647 0001:0000F82F  3648 0001:0000F839  3649 0001:0000F846  3651 0001:0000F854
+  3657 0001:0000F858  3658 0001:0000F85D  3660 0001:0000F866  3662 0001:0000F874
+  3663 0001:0000F88A  3660 0001:0000F88B  3665 0001:0000F88E  3666 0001:0000F896
+  3670 0001:0000F89C  3671 0001:0000F8AE  3672 0001:0000F8B1  3673 0001:0000F8C0
+  3676 0001:0000F8DC  3677 0001:0000F8E7  3678 0001:0000F8EF  3679 0001:0000F8FB
+  3683 0001:0000F90C  3684 0001:0000F912  3685 0001:0000F91C  3688 0001:0000F920
+  3689 0001:0000F923  3690 0001:0000F92D  3691 0001:0000F936  3692 0001:0000F942
+  3696 0001:0000F944  3697 0001:0000F94A  3702 0001:0000F998  3704 0001:0000F9B6
+
+Line numbers for VA508AccessibilityManager(VA508AccessibilityManager.pas) segment .itext
+
+  3699 0002:00000254  3701 0002:00000267
+
+Line numbers for VA508AccessibilityCompileInfo(VA508AccessibilityCompileInfo.pas) segment .text
+
+    77 0001:0000FD64    78 0001:0000FD7E    79 0001:0000FD83    80 0001:0000FD93
+    81 0001:0000FDBF    82 0001:0000FDCE    83 0001:0000FDD5    84 0001:0000FDE1
+    87 0001:0000FE04    88 0001:0000FE21    89 0001:0000FE2F    90 0001:0000FE3C
+    92 0001:0000FE4E    93 0001:0000FE57    95 0001:0000FE5E    99 0001:0000FE6A
+   103 0001:0000FE8C   104 0001:0000FE95   105 0001:0000FE9F   109 0001:0000FEA0
+   111 0001:0000FECE   113 0001:0000FED7   114 0001:0000FF06   117 0001:0000FF0B
+   119 0001:0000FF18   120 0001:0000FF2B   121 0001:0000FF48   122 0001:0000FF65
+   123 0001:0000FF83   124 0001:0000FFA1   125 0001:0000FFBF   127 0001:0000FFE8
+   128 0001:0000FFF4   131 0001:00010000   134 0001:00010034   135 0001:00010037
+   136 0001:00010044   137 0001:0001004E   138 0001:0001005A   139 0001:00010061
+   142 0001:00010064   143 0001:00010067   144 0001:00010086   145 0001:000100A6
+   150 0001:000100A8   151 0001:000100CA   152 0001:000100D4
+
+Line numbers for VA508AccessibilityCompileInfo(VA508AccessibilityCompileInfo.pas) segment .itext
+
+   147 0002:00000268   149 0002:00000280
+
+Line numbers for VA508AccessibilityPE(VA508AccessibilityPE.pas) segment .text
+
+   103 0001:00010970   104 0001:00010978   105 0001:0001097A   107 0001:000109A3
+   108 0001:000109AC   110 0001:000109B0   109 0001:000109B3   111 0001:000109C8
+   113 0001:000109DD   115 0001:000109EE   117 0001:00010A06   118 0001:00010A11
+   120 0001:00010A13   113 0001:00010A14   123 0001:00010A17   129 0001:00010A20
+   130 0001:00010A27   131 0001:00010A32   132 0001:00010A38   133 0001:00010A44
+   135 0001:00010A51   137 0001:00010A5E   138 0001:00010A62   140 0001:00010A64
+   133 0001:00010A65   141 0001:00010A68   149 0001:00010A74   150 0001:00010A96
+   151 0001:00010AA5   152 0001:00010AB3   153 0001:00010ABF   154 0001:00010AC5
+   157 0001:00010AD1   159 0001:00010AE0   160 0001:00010AFB   161 0001:00010B04
+   157 0001:00010B05   164 0001:00010B17   166 0001:00010B27   169 0001:00010B50
+   170 0001:00010B70   171 0001:00010B89   176 0001:00010BC4   177 0001:00010BE5
+   178 0001:00010BF4   179 0001:00010BF8   181 0001:00010C0B   182 0001:00010C15
+   191 0001:00010C44   192 0001:00010C48   193 0001:00010C53   195 0001:00010C5C
+   196 0001:00010C65   200 0001:00010C70   201 0001:00010C76   202 0001:00010C85
+   203 0001:00010CA9   204 0001:00010CCD   205 0001:00010CF1   207 0001:00010D15
+   219 0001:00010D70   220 0001:00010D8F   222 0001:00010D99   223 0001:00010D9D
+   224 0001:00010DB9   227 0001:00010DD8   228 0001:00010DEE   229 0001:00010DFF
+   228 0001:00010E27   234 0001:00010E2F   235 0001:00010E45   236 0001:00010E56
+   235 0001:00010E73   241 0001:00010E7B   242 0001:00010E91   243 0001:00010E9E
+   242 0001:00010EC2   248 0001:00010EC7   249 0001:00010EDD   250 0001:00010EEA
+   249 0001:00010F03   265 0001:00010F06   266 0001:00010F0A   270 0001:00010F44
+   271 0001:00010F72   272 0001:00010F7D   273 0001:00010F89   274 0001:00010F94
+   275 0001:00010F9B   281 0001:00010FD8   282 0001:00010FDB   285 0001:00010FFD
+   286 0001:00011010   287 0001:00011014   289 0001:00011020   292 0001:00011029
+   293 0001:00011030   297 0001:00011038   299 0001:00011048   301 0001:00011050
+   303 0001:00011058   308 0001:00011060   311 0001:00011067   315 0001:00011078
+   316 0001:00011086   317 0001:0001108C   320 0001:00011092   322 0001:00011097
+   325 0001:00011098   326 0001:0001109E   327 0001:000110A8   333 0001:000110AC
+   334 0001:000110D1   335 0001:000110D8   336 0001:000110F4   339 0001:0001110F
+   340 0001:00011124   341 0001:0001112C   344 0001:00011162   347 0001:00011179
+   348 0001:0001118E   349 0001:00011193   353 0001:000111CB   354 0001:000111E0
+   357 0001:000111EF   365 0001:00011238   366 0001:0001125A   367 0001:00011269
+   368 0001:00011277   371 0001:00011290   372 0001:0001129B   373 0001:000112B6
+   372 0001:000112D0   378 0001:000112D8   379 0001:000112F0   381 0001:000112F8
+   383 0001:00011306   384 0001:0001131F   385 0001:00011338   381 0001:0001133B
+   387 0001:0001133E   388 0001:00011349   390 0001:00011364   391 0001:00011372
+   392 0001:00011378   393 0001:000113B0   394 0001:000113B9   388 0001:000113BC
+   399 0001:000113C1   400 0001:000113D9   405 0001:00011401   407 0001:00011411
+   416 0001:0001145C   417 0001:0001147D   418 0001:00011482   419 0001:00011487
+   423 0001:00011499   424 0001:000114A4   425 0001:000114B1   426 0001:000114C2
+   429 0001:000114C7   433 0001:000114D4   434 0001:000114E4   435 0001:000114EE
+   436 0001:000114FE   440 0001:00011515   442 0001:00011524   444 0001:0001153C
+   445 0001:00011550   446 0001:00011568   447 0001:00011580   448 0001:00011598
+   451 0001:000115AE   440 0001:000115AF   452 0001:000115B6   453 0001:000115BD
+   617 0001:000115E4   618 0001:000115EB   625 0001:000115F0   626 0001:000115F7
+   629 0001:000115FC   630 0001:000115FF   631 0001:00011605   632 0001:00011616
+   633 0001:00011619   637 0001:0001161C   639 0001:0001161F   644 0001:00011624
+   645 0001:00011642   646 0001:0001164E   647 0001:00011652   648 0001:00011687
+   654 0001:000116B8   655 0001:000116D6   656 0001:000116E5   657 0001:000116F3
+   658 0001:00011702   659 0001:00011714   658 0001:0001172B   661 0001:0001173B
+   663 0001:0001174B   666 0001:00011774   667 0001:0001178D   668 0001:000117A1
+   676 0001:000117C4   677 0001:000117E0   679 0001:000117E6   680 0001:000117EA
+   681 0001:00011804   682 0001:00011811   681 0001:00011835   684 0001:00011838
+   685 0001:0001183C   689 0001:0001186C   690 0001:00011873   694 0001:00011878
+   695 0001:0001187D   698 0001:00011880   699 0001:00011883   700 0001:00011889
+   701 0001:0001189A   702 0001:0001189D   706 0001:000118A0   707 0001:000118A6
+   708 0001:000118B2   711 0001:000118B8   712 0001:000118D7   713 0001:000118E0
+   714 0001:000118E5   715 0001:0001191B   724 0001:0001194C   725 0001:0001196F
+   726 0001:0001197E   727 0001:0001198C   728 0001:000119A8   730 0001:000119B0
+   731 0001:000119BE   730 0001:000119DA   733 0001:000119DD   734 0001:000119E8
+   736 0001:000119FF   737 0001:00011A0D   738 0001:00011A13   739 0001:00011A4B
+   740 0001:00011A54   734 0001:00011A57   742 0001:00011A67   744 0001:00011A77
+   748 0001:00011AB4   749 0001:00011ACD   750 0001:00011AE1   756 0001:00011B04
+   757 0001:00011B0B   760 0001:00011B10   761 0001:00011B13   763 0001:00011B3E
+   765 0001:00011B59   767 0001:00011B74   769 0001:00011B8F   771 0001:00011BAA
+   773 0001:00011BC5
+
+Line numbers for VA508AccessibilityPE(VA508AccessibilityPE.pas) segment .itext
+
+   775 0002:000002D8
+
+Line numbers for VA508AccessibilityCompiler(VA508AccessibilityCompiler.pas) segment .text
+
+    96 0001:00011E20    98 0001:00011E33    99 0001:00011E48   100 0001:00011E53
+   102 0001:00011E65   103 0001:00011E87   104 0001:00011E91   107 0001:00011E9B
+   112 0001:00011ECC   113 0001:00011EDF   115 0001:00011EF1   116 0001:00011F06
+   118 0001:00011F0C   119 0001:00011F1A   120 0001:00011F24   122 0001:00011F2B
+   124 0001:00011F35   127 0001:00011F68   128 0001:00011F6B   129 0001:00011F73
+   130 0001:00011F77   131 0001:00011F7C   137 0001:00011F80   138 0001:00011F97
+   139 0001:00011FA1   144 0001:00011FB4   145 0001:00011FB7   146 0001:00011FBA
+   148 0001:00011FC3   149 0001:00011FCF   152 0001:00011FE0   153 0001:0001200A
+   154 0001:0001200E   155 0001:0001204B   158 0001:0001207C   159 0001:000120A4
+   160 0001:000120AB   162 0001:000120B7   164 0001:000120C4   166 0001:000120DC
+   167 0001:000120ED   171 0001:0001214A   172 0001:0001215B   175 0001:0001216F
+   177 0001:00012177   178 0001:00012180   182 0001:00012189   183 0001:00012195
+   186 0001:00012388   187 0001:00012397   189 0001:000123A4   191 0001:000123AB
+   196 0001:000123B4   201 0001:000123B8   205 0001:000123BC   206 0001:000123C0
+   207 0001:000123C5   211 0001:000123C8   212 0001:000123CB   213 0001:000123D1
+   214 0001:000123D6   218 0001:000123DC   219 0001:000123ED   222 0001:000123F0
+   223 0001:00012403   224 0001:00012414   225 0001:0001241D   226 0001:00012424
+   229 0001:00012440   230 0001:0001244B   231 0001:00012453   232 0001:0001245F
+   236 0001:00012470   237 0001:00012474   240 0001:00012478   241 0001:0001247C
+   242 0001:00012486   243 0001:0001248D   245 0001:00012496   246 0001:000124A5
+   247 0001:000124AA   248 0001:000124AF   249 0001:000124B4   250 0001:000124B9
+   251 0001:000124BD   252 0001:000124C1   253 0001:000124C5   254 0001:000124CA
+   267 0001:000124D0   268 0001:00012507   270 0001:00012527   271 0001:00012529
+   272 0001:00012538   273 0001:00012545   275 0001:00012549   276 0001:0001255D
+   277 0001:0001256E   282 0001:00012597   283 0001:00012599   285 0001:000125E4
+   286 0001:00012602   287 0001:00012611   289 0001:00012628   290 0001:00012634
+   291 0001:00012640   293 0001:0001265B   294 0001:00012669   297 0001:000126B7
+   298 0001:000126D4   291 0001:000126D7   300 0001:000126DA   301 0001:000126E0
+   302 0001:000126E8   305 0001:00012754   306 0001:0001277B   307 0001:00012781
+   308 0001:000127AB   311 0001:000127D4   312 0001:00012807   313 0001:0001280E
+   314 0001:00012835   315 0001:00012838   316 0001:0001283C   317 0001:00012846
+   320 0001:00012888   321 0001:000128BB   322 0001:000128C2   323 0001:000128E9
+   324 0001:000128EC   325 0001:000128F0   326 0001:000128FA   329 0001:0001293C
+   330 0001:0001295D   331 0001:00012964   332 0001:0001296E   339 0001:00012990
+   340 0001:0001299B   342 0001:000129A2   343 0001:000129AC   346 0001:000129B8
+   347 0001:000129C2   348 0001:000129C6   352 0001:000129D0   355 0001:000129D8
+   356 0001:00012A0B   357 0001:00012A12   358 0001:00012A3E   359 0001:00012A48
+   449 0001:00012A98   450 0001:00012AA1   451 0001:00012AA3   452 0001:00012AB5
+   455 0001:00012AB8   456 0001:00012ACA   457 0001:00012AD9   453 0001:00012ADC
+   459 0001:00012AEB   464 0001:00012AF0   465 0001:00012AF5   466 0001:00012AFD
+   467 0001:00012B03   468 0001:00012B1B   469 0001:00012B30   470 0001:00012B37
+   473 0001:00012B3C   474 0001:00012B5A   476 0001:00012B63   477 0001:00012B77
+   478 0001:00012B7D   480 0001:00012B8E   483 0001:00012BB0   484 0001:00012BD7
+   485 0001:00012C04   490 0001:00012C3C   491 0001:00012C61   492 0001:00012C6C
+   493 0001:00012C73   494 0001:00012C93   496 0001:00012C97   497 0001:00012CB7
+   499 0001:00012CC2   501 0001:00012CC6   502 0001:00012CD5   503 0001:00012CD9
+   505 0001:00012D06   509 0001:00012D60   510 0001:00012D81   511 0001:00012D9E
+   512 0001:00012DBD   513 0001:00012DC6   514 0001:00012DD4   519 0001:00012E00
+   520 0001:00012E29   521 0001:00012E30   522 0001:00012E3F   524 0001:00012E44
+   525 0001:00012E45   527 0001:00012E49   526 0001:00012E4A   528 0001:00012E58
+   530 0001:00012E75   535 0001:00012EAC   536 0001:00012ECA   537 0001:00012EDA
+   539 0001:00012EDE   540 0001:00012EF0   542 0001:00012EFD   547 0001:00012F20
+   548 0001:00012F3F   549 0001:00012F41   550 0001:00012F51   551 0001:00012F55
+   552 0001:00012F64   561 0001:00012F88   562 0001:00012FAE   563 0001:00012FC1
+   564 0001:00012FC8   565 0001:00012FCB   566 0001:00012FCD   567 0001:00012FD1
+   568 0001:00012FD5   569 0001:00012FDD   570 0001:00012FE1   573 0001:00012FE8
+   574 0001:00013003   576 0001:0001300B   577 0001:00013018   579 0001:00013022
+   581 0001:0001302C   583 0001:0001304B   584 0001:0001304F   586 0001:00013066
+   588 0001:00013085   589 0001:00013089   592 0001:000130A0   593 0001:000130BF
+   595 0001:000130E0   596 0001:000130F0   598 0001:000130F4   600 0001:0001310D
+   602 0001:00013113   603 0001:00013122   605 0001:00013136   610 0001:00013146
+   612 0001:00013159   613 0001:0001315D   614 0001:00013165   620 0001:0001316E
+   622 0001:0001317D   623 0001:00013181   626 0001:0001318A   635 0001:0001319D
+   636 0001:000131AC   640 0001:000131B0   642 0001:000131C1   644 0001:000131D4
+   645 0001:000131E1   646 0001:0001320A   647 0001:00013217   648 0001:0001321C
+   649 0001:00013224   652 0001:00013226   571 0001:00013227   654 0001:0001323A
+   662 0001:000132D4   663 0001:000132F6   665 0001:00013315   666 0001:00013326
+   667 0001:00013337   669 0001:00013349   670 0001:00013384   667 0001:00013385
+   671 0001:00013388   663 0001:0001338B   672 0001:00013390   680 0001:000133EC
+   681 0001:00013437   682 0001:00013445   684 0001:00013460   685 0001:000134A6
+   686 0001:000134BA   688 0001:000134C3   689 0001:000134CC   690 0001:000134DD
+   691 0001:000134E5   692 0001:000134EC   693 0001:00013506   694 0001:0001351A
+   698 0001:00013526   699 0001:0001353D   700 0001:00013555   701 0001:00013582
+   702 0001:0001358B   705 0001:00013596   706 0001:0001359F   707 0001:000135B4
+   708 0001:000135BE   707 0001:000135CF   709 0001:000135D2   712 0001:000135DE
+   715 0001:000135F9   717 0001:0001360C   722 0001:00013660   723 0001:0001368F
+   724 0001:00013693   725 0001:000136A1   727 0001:000136B1   728 0001:000136BE
+   729 0001:000136C5   731 0001:000136CE   732 0001:000136EC   733 0001:000136F5
+   734 0001:00013703   735 0001:00013707   736 0001:0001371D   735 0001:00013741
+   740 0001:00013746   741 0001:00013750   742 0001:0001375D   744 0001:00013763
+   745 0001:00013773   746 0001:0001378F   751 0001:000137AC   752 0001:000137B1
+   755 0001:000137E8   756 0001:00013800   757 0001:00013802   759 0001:0001380B
+   761 0001:0001381A   762 0001:00013836   764 0001:00013863   768 0001:00013886
+   775 0001:000138C0   776 0001:000138DC   777 0001:000138E7   778 0001:000138EF
+   779 0001:000138F3   780 0001:000138F7   781 0001:000138FB   782 0001:00013902
+   783 0001:00013915   785 0001:0001391F   786 0001:0001392F   788 0001:0001395C
+   789 0001:00013962   790 0001:0001396C   792 0001:00013972   793 0001:00013982
+   797 0001:000139B8   798 0001:000139CE   803 0001:00013A64   804 0001:00013A7E
+   806 0001:00013A9D   807 0001:00013AA9   808 0001:00013AC8   809 0001:00013AD6
+   810 0001:00013AE4   812 0001:00013AFB   814 0001:00013B0E   804 0001:00013B11
+   815 0001:00013B16   818 0001:00013B38   819 0001:00013B4D   821 0001:00013B65
+   822 0001:00013B81   824 0001:00013B8A   827 0001:00013BA6   830 0001:00013BD0
+   831 0001:00013BD6   832 0001:00013BE1   833 0001:00013BEF   835 0001:00013C04
+   836 0001:00013C12   838 0001:00013C2E   841 0001:00013C40   843 0001:00013C53
+   852 0001:00013C58   853 0001:00013C94   854 0001:00013CA4   855 0001:00013CB6
+   856 0001:00013CC6   857 0001:00013CEB   859 0001:00013CF4   860 0001:00013D01
+   863 0001:00013D06   864 0001:00013D10   865 0001:00013D1E   867 0001:00013D30
+   868 0001:00013D3B   869 0001:00013D4A   870 0001:00013D51   871 0001:00013D57
+   874 0001:00013D9D   878 0001:00013DEE   880 0001:00013E00   882 0001:00013E16
+   883 0001:00013E24   884 0001:00013E32   885 0001:00013E41   886 0001:00013E4F
+   887 0001:00013E5A   889 0001:00013E9A   890 0001:00013ECD   891 0001:00013EDA
+   892 0001:00013EE5   893 0001:00013EEC   896 0001:00013F2D   899 0001:00013F58
+   900 0001:00013F5A   903 0001:00013F79   907 0001:00014148   908 0001:00014166
+   909 0001:00014173   925 0001:00014198   926 0001:000141B9   928 0001:000141D8
+   929 0001:000141E8   930 0001:000141F9   931 0001:00014209   933 0001:00014212
+   934 0001:0001421A   935 0001:00014228   934 0001:00014257   936 0001:0001425A
+   939 0001:0001426D   940 0001:0001426F   941 0001:0001428F   943 0001:00014299
+   944 0001:000142A7   946 0001:000142B4   947 0001:000142C1   948 0001:000142CD
+   949 0001:000142DC   950 0001:000142EA   951 0001:000142F2   952 0001:000142FC
+   953 0001:00014310   954 0001:0001431B   955 0001:0001432D   954 0001:00014348
+   957 0001:00014358   961 0001:00014375   964 0001:00014385   965 0001:00014399
+   966 0001:000143AA   967 0001:000143BE   926 0001:000143C1   968 0001:000143CA
+   970 0001:000143E9   971 0001:000143F9   972 0001:00014409   974 0001:00014415
+   975 0001:00014426   976 0001:00014437   977 0001:00014447   978 0001:00014455
+   979 0001:0001445D   981 0001:0001446E   982 0001:00014476   983 0001:0001447A
+   984 0001:00014485   985 0001:00014489   988 0001:0001449B   990 0001:000144C8
+   992 0001:000144FA   996 0001:0001450C   997 0001:00014517   998 0001:0001451D
+  1000 0001:0001452E   968 0001:00014531  1001 0001:0001453A  1006 0001:00014694
+  1007 0001:000146B0  1009 0001:000146D2  1011 0001:000146FC  1012 0001:00014732
+  1014 0001:0001473F  1015 0001:0001474D  1016 0001:00014769  1018 0001:00014772
+  1019 0001:00014780  1020 0001:0001478E  1022 0001:000147AA  1024 0001:000147BC
+  1028 0001:000147DC  1032 0001:000147EF  1007 0001:000147F2  1033 0001:000147FB
+  1040 0001:00014838  1041 0001:0001485F  1042 0001:0001486D  1043 0001:00014895
+  1044 0001:0001489A  1045 0001:000148AF  1046 0001:000148C3  1047 0001:000148D8
+  1048 0001:00014917  1049 0001:00014929  1050 0001:0001493B  1052 0001:0001494A
+  1053 0001:00014957  1054 0001:00014969  1055 0001:0001497F  1058 0001:0001498F
+  1059 0001:0001499B  1061 0001:000149A6  1062 0001:000149C6  1063 0001:000149E6
+  1065 0001:000149EE  1066 0001:000149F9  1067 0001:00014A04  1069 0001:00014A09
+  1070 0001:00014A29  1071 0001:00014A4C  1072 0001:00014A59  1073 0001:00014A66
+  1074 0001:00014A73  1059 0001:00014A80  1076 0001:00014A89  1079 0001:00014A96
+  1080 0001:00014A9D  1088 0001:00014B1C  1089 0001:00014B39  1091 0001:00014B46
+  1092 0001:00014B66  1093 0001:00014B76  1094 0001:00014B84  1095 0001:00014B96
+  1096 0001:00014B98  1097 0001:00014B9A  1098 0001:00014BAC  1100 0001:00014BB9
+  1101 0001:00014BC9  1102 0001:00014BE9  1103 0001:00014BEA  1104 0001:00014BEB
+  1105 0001:00014BFB  1106 0001:00014C1B  1107 0001:00014C1C  1108 0001:00014C1D
+  1109 0001:00014C38  1110 0001:00014C39  1111 0001:00014C54  1098 0001:00014C55
+  1113 0001:00014C5E  1115 0001:00014C6F  1116 0001:00014C7A  1117 0001:00014C85
+  1123 0001:00014CC4  1124 0001:00014CEA  1125 0001:00014CF1  1126 0001:00014CF9
+  1127 0001:00014D01  1128 0001:00014D22  1130 0001:00014D57  1131 0001:00014D62
+  1132 0001:00014D6D  1133 0001:00014D78  1135 0001:00014D7D  1136 0001:00014DAB
+  1138 0001:00014DD8  1139 0001:00014DEA  1140 0001:00014DFC  1141 0001:00014E0E
+  1143 0001:00014E22  1144 0001:00014E36  1145 0001:00014E4A  1146 0001:00014E60
+  1148 0001:00014E6A  1149 0001:00014E70  1133 0001:00014E71  1150 0001:00014E7A
+  1155 0001:00014EC4  1156 0001:00014ECB  1158 0001:00014EDD  1159 0001:00014EEB
+  1160 0001:00014F1A  1161 0001:00014F26  1162 0001:00014F32  1163 0001:00014F3F
+  1165 0001:00014F4C  1166 0001:00014F57  1167 0001:00014F62  1168 0001:00014F6D
+  1170 0001:00014F7A  1173 0001:00014F8E  1174 0001:00014F93  1156 0001:00014F96
+  1175 0001:00014FA0  1180 0001:00014FA8  1181 0001:00014FB4  1182 0001:00014FC5
+  1181 0001:00014FD4  1183 0001:00014FD7  1184 0001:00014FDE  1185 0001:00014FE9
+  1186 0001:00014FF0  1187 0001:00014FF6  1189 0001:00014FFC  1190 0001:00015033
+  1191 0001:00015041  1194 0001:0001504A  1195 0001:00015051  1196 0001:00015058
+  1197 0001:00015064  1192 0001:0001506B  1199 0001:00015077  1200 0001:00015083
+  1203 0001:00015097  1205 0001:000150A6  1209 0001:000150F4  1211 0001:00015112
+
+Line numbers for VA508AccessibilityCompiler(VA508AccessibilityCompiler.pas) segment .itext
+
+  1206 0002:000002E0  1208 0002:000002F8
+
+Line numbers for VA508ImageListLabelerPE(VA508ImageListLabelerPE.pas) segment .text
+
+    86 0001:000158A4    87 0001:000158BF    88 0001:000158DA    89 0001:000158F5
+    90 0001:00015910    91 0001:00015920   103 0001:00015974   104 0001:0001598A
+   106 0001:00015993   107 0001:000159A9   108 0001:000159B9   115 0001:000159D8
+   116 0001:000159DC   117 0001:000159E5   118 0001:000159EF   120 0001:000159F8
+   121 0001:00015A08   125 0001:00015A18   126 0001:00015A1D   129 0001:00015A20
+   130 0001:00015A2B   132 0001:00015A34   133 0001:00015A4C   135 0001:00015A53
+   136 0001:00015A5F   140 0001:00015A70   141 0001:00015A77   147 0001:00015A78
+   148 0001:00015A7E   149 0001:00015A85   150 0001:00015AA7   151 0001:00015ABD
+   160 0001:00015AC4   161 0001:00015ACF   163 0001:00015ADA   164 0001:00015AEE
+   165 0001:00015AFC   167 0001:00015B1B   168 0001:00015B33   169 0001:00015B43
+   170 0001:00015B47   171 0001:00015B51   165 0001:00015B52   173 0001:00015B64
+   176 0001:00015B80   180 0001:00015B88   181 0001:00015B9F   182 0001:00015BA6
+   183 0001:00015BAD   184 0001:00015BB4   186 0001:00015BB6   192 0001:00015BB8
+   193 0001:00015BB9   194 0001:00015BC2   196 0001:00015BC6   197 0001:00015BC9
+   198 0001:00015BD0   201 0001:00015BD4   202 0001:00015BD6   203 0001:00015BDE
+   204 0001:00015BE4   211 0001:00015BE8   212 0001:00015BF1   214 0001:00015C01
+   215 0001:00015C0B   216 0001:00015C1F   217 0001:00015C2D   219 0001:00015C39
+   220 0001:00015C57   221 0001:00015C6D   224 0001:00015C77   225 0001:00015C80
+   227 0001:00015C8D   228 0001:00015C95   229 0001:00015CA3   230 0001:00015CB2
+   231 0001:00015CB7   233 0001:00015CC6   235 0001:00015CD3   236 0001:00015CDE
+   238 0001:00015D05   239 0001:00015D0F   240 0001:00015D1E   239 0001:00015D28
+   241 0001:00015D2C   242 0001:00015D3C   244 0001:00015D4C   245 0001:00015D61
+   246 0001:00015D76   247 0001:00015D84   248 0001:00015D95   249 0001:00015DA6
+   250 0001:00015DB1   251 0001:00015DBC   252 0001:00015DD3   254 0001:00015DEA
+   256 0001:00015E08   257 0001:00015E15   260 0001:00015E37   263 0001:00015E53
+   272 0001:00015E58   273 0001:00015E68   274 0001:00015E71   276 0001:00015E87
+   277 0001:00015E90   279 0001:00015EA6   281 0001:00015EAA   282 0001:00015EBE
+   285 0001:00015EDC   287 0001:00015EF0   288 0001:00015EFF   289 0001:00015F13
+   290 0001:00015F29   291 0001:00015F2D   294 0001:00015F45   295 0001:00015F51
+   300 0001:00015F58   301 0001:00015F6F   303 0001:00015F9D   307 0001:00015FD4
+   308 0001:00015FDE   309 0001:00015FE3   312 0001:00015FE4   313 0001:00015FED
+   314 0001:00015FF1   316 0001:00015FFF   317 0001:0001600A   321 0001:00016034
+   322 0001:00016039   332 0001:0001603C   333 0001:00016064   334 0001:00016075
+   336 0001:0001607B   338 0001:00016086   339 0001:00016094   340 0001:000160DB
+   336 0001:000160DE   342 0001:000160E1   348 0001:00016124   349 0001:00016146
+   350 0001:0001614F   351 0001:0001615B   352 0001:0001615F   353 0001:00016195
+   356 0001:000161D0   357 0001:000161D6   358 0001:000161E2   359 0001:000161FE
+   365 0001:00016204   366 0001:0001621D   367 0001:00016227   368 0001:00016234
+   369 0001:00016238   370 0001:00016246   371 0001:00016250   379 0001:00016280
+   380 0001:00016284   381 0001:0001628D   382 0001:00016297   384 0001:000162A2
+   385 0001:000162A9   391 0001:000162B4   392 0001:000162BA   393 0001:000162CA
+   394 0001:000162D2   397 0001:000162E4   398 0001:000162EA   399 0001:000162F6
+   400 0001:00016312
+
+Line numbers for VA508ImageListLabelerPE(VA508ImageListLabelerPE.pas) segment .itext
+
+   402 0002:00000310
+
+Line numbers for .VA508Access2006(D:\perforce\cprs\OR_3_243V27\VA\VA508Accessibility\VA508Access2006.dpk) segment .itext
+
+    58 0002:00000318
+
+Bound resource files
+
+VA508AccessibilityCompileInfo.dfm
+VA508ImageListLabelerPE.dfm
+VA508Access2006.res
+VA508AccessibilityManager.dcr
+VA508ImageListLabeler.dcr
+VA508Access2006.drf
+
+
+Program entry point at 0002:00000318
Index: cprs/branches/HealthSevak-CPRS/Packages/VAShared2006.map
===================================================================
--- cprs/branches/HealthSevak-CPRS/Packages/VAShared2006.map	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Packages/VAShared2006.map	(revision 1676)
@@ -0,0 +1,875 @@
+
+ Start         Length     Name                   Class
+ 0001:00401000 00005518H .text                   CODE
+ 0002:00407000 00000134H .itext                  ICODE
+ 0003:00408000 000008C8H .data                   DATA
+ 0004:00409000 000000A0H .bss                    BSS
+ 0005:00000000 00000000H .tls                    TLS
+
+
+Detailed map of segments
+
+ 0001:00000000 00000196 C=CODE     S=.text    G=(none)   M=System   ACBP=A9
+ 0001:00000198 000001C3 C=CODE     S=.text    G=(none)   M=SysInit  ACBP=A9
+ 0001:0000035C 00000056 C=CODE     S=.text    G=(none)   M=SysUtils ACBP=A9
+ 0001:000003B4 000000A8 C=CODE     S=.text    G=(none)   M=Windows  ACBP=A9
+ 0001:0000045C 000000DE C=CODE     S=.text    G=(none)   M=Classes  ACBP=A9
+ 0001:0000053C 00000006 C=CODE     S=.text    G=(none)   M=TypInfo  ACBP=A9
+ 0001:00000544 0000003E C=CODE     S=.text    G=(none)   M=Variants ACBP=A9
+ 0001:00000584 00000006 C=CODE     S=.text    G=(none)   M=VarUtils ACBP=A9
+ 0001:0000058C 0000000E C=CODE     S=.text    G=(none)   M=Graphics ACBP=A9
+ 0001:0000059C 00000006 C=CODE     S=.text    G=(none)   M=Registry ACBP=A9
+ 0001:000005A4 00000006 C=CODE     S=.text    G=(none)   M=IniFiles ACBP=A9
+ 0001:000005AC 0000000E C=CODE     S=.text    G=(none)   M=StrUtils ACBP=A9
+ 0001:000005BC 00000006 C=CODE     S=.text    G=(none)   M=Controls ACBP=A9
+ 0001:000005C4 00000006 C=CODE     S=.text    G=(none)   M=ActnList ACBP=A9
+ 0001:000005CC 0000001E C=CODE     S=.text    G=(none)   M=Forms    ACBP=A9
+ 0001:000005EC 00000006 C=CODE     S=.text    G=(none)   M=HelpIntfs ACBP=A9
+ 0001:000005F4 00000006 C=CODE     S=.text    G=(none)   M=MultiMon ACBP=A9
+ 0001:000005FC 00000006 C=CODE     S=.text    G=(none)   M=Menus    ACBP=A9
+ 0001:00000604 00000006 C=CODE     S=.text    G=(none)   M=UxTheme  ACBP=A9
+ 0001:0000060C 00000006 C=CODE     S=.text    G=(none)   M=Themes   ACBP=A9
+ 0001:00000614 00000006 C=CODE     S=.text    G=(none)   M=Dialogs  ACBP=A9
+ 0001:0000061C 00000006 C=CODE     S=.text    G=(none)   M=ShlObj   ACBP=A9
+ 0001:00000624 00000006 C=CODE     S=.text    G=(none)   M=Printers ACBP=A9
+ 0001:0000062C 00000006 C=CODE     S=.text    G=(none)   M=ExtCtrls ACBP=A9
+ 0001:00000634 00000006 C=CODE     S=.text    G=(none)   M=GraphUtil ACBP=A9
+ 0001:0000063C 00000006 C=CODE     S=.text    G=(none)   M=Clipbrd  ACBP=A9
+ 0001:00000644 00000006 C=CODE     S=.text    G=(none)   M=FlatSB   ACBP=A9
+ 0001:0000064C 00000886 C=CODE     S=.text    G=(none)   M=VAClasses ACBP=A9
+ 0001:00000ED4 000003ED C=CODE     S=.text    G=(none)   M=PsAPI    ACBP=A9
+ 0001:000012C4 0000000E C=CODE     S=.text    G=(none)   M=ComObj   ACBP=A9
+ 0001:000012D4 00002CD7 C=CODE     S=.text    G=(none)   M=VAUtils  ACBP=A9
+ 0001:00003FAC 0000094E C=CODE     S=.text    G=(none)   M=HRBuffers ACBP=A9
+ 0001:000048FC 000005F6 C=CODE     S=.text    G=(none)   M=HRParser ACBP=A9
+ 0001:00004EF4 00000422 C=CODE     S=.text    G=(none)   M=HRParserPas ACBP=A9
+ 0001:00005318 000001FF C=CODE     S=.text    G=(none)   M=.VAShared2006 ACBP=A9
+ 0002:00000000 00000006 C=ICODE    S=.itext   G=(none)   M=System   ACBP=A9
+ 0002:00000008 00000006 C=ICODE    S=.itext   G=(none)   M=SysUtils ACBP=A9
+ 0002:00000010 00000011 C=ICODE    S=.itext   G=(none)   M=Windows  ACBP=A9
+ 0002:00000024 00000006 C=ICODE    S=.itext   G=(none)   M=Classes  ACBP=A9
+ 0002:0000002C 00000006 C=ICODE    S=.itext   G=(none)   M=TypInfo  ACBP=A9
+ 0002:00000034 00000006 C=ICODE    S=.itext   G=(none)   M=Variants ACBP=A9
+ 0002:0000003C 00000006 C=ICODE    S=.itext   G=(none)   M=VarUtils ACBP=A9
+ 0002:00000044 00000006 C=ICODE    S=.itext   G=(none)   M=Graphics ACBP=A9
+ 0002:0000004C 00000006 C=ICODE    S=.itext   G=(none)   M=Registry ACBP=A9
+ 0002:00000054 00000006 C=ICODE    S=.itext   G=(none)   M=IniFiles ACBP=A9
+ 0002:0000005C 00000006 C=ICODE    S=.itext   G=(none)   M=Controls ACBP=A9
+ 0002:00000064 00000006 C=ICODE    S=.itext   G=(none)   M=ActnList ACBP=A9
+ 0002:0000006C 00000006 C=ICODE    S=.itext   G=(none)   M=Forms    ACBP=A9
+ 0002:00000074 00000006 C=ICODE    S=.itext   G=(none)   M=HelpIntfs ACBP=A9
+ 0002:0000007C 00000006 C=ICODE    S=.itext   G=(none)   M=MultiMon ACBP=A9
+ 0002:00000084 00000006 C=ICODE    S=.itext   G=(none)   M=Menus    ACBP=A9
+ 0002:0000008C 00000006 C=ICODE    S=.itext   G=(none)   M=UxTheme  ACBP=A9
+ 0002:00000094 00000006 C=ICODE    S=.itext   G=(none)   M=Themes   ACBP=A9
+ 0002:0000009C 00000006 C=ICODE    S=.itext   G=(none)   M=Dialogs  ACBP=A9
+ 0002:000000A4 00000006 C=ICODE    S=.itext   G=(none)   M=Printers ACBP=A9
+ 0002:000000AC 00000006 C=ICODE    S=.itext   G=(none)   M=ExtCtrls ACBP=A9
+ 0002:000000B4 00000006 C=ICODE    S=.itext   G=(none)   M=GraphUtil ACBP=A9
+ 0002:000000BC 00000006 C=ICODE    S=.itext   G=(none)   M=Clipbrd  ACBP=A9
+ 0002:000000C4 00000006 C=ICODE    S=.itext   G=(none)   M=FlatSB   ACBP=A9
+ 0002:000000CC 00000008 C=ICODE    S=.itext   G=(none)   M=VAClasses ACBP=A9
+ 0002:000000D4 00000006 C=ICODE    S=.itext   G=(none)   M=ComObj   ACBP=A9
+ 0002:000000DC 00000036 C=ICODE    S=.itext   G=(none)   M=VAUtils  ACBP=A9
+ 0002:00000114 00000008 C=ICODE    S=.itext   G=(none)   M=HRBuffers ACBP=A9
+ 0002:0000011C 00000008 C=ICODE    S=.itext   G=(none)   M=HRParser ACBP=A9
+ 0002:00000124 00000008 C=ICODE    S=.itext   G=(none)   M=HRParserPas ACBP=A9
+ 0002:0000012C 00000005 C=ICODE    S=.itext   G=(none)   M=.VAShared2006 ACBP=A9
+ 0003:00000000 0000002C C=DATA     S=.data    G=DGROUP   M=SysInit  ACBP=A9
+ 0003:0000002C 00000855 C=DATA     S=.data    G=DGROUP   M=VAUtils  ACBP=A9
+ 0003:00000884 00000040 C=DATA     S=.data    G=DGROUP   M=HRParserPas ACBP=A9
+ 0004:00000000 0000000C C=BSS      S=.bss     G=DGROUP   M=SysInit  ACBP=A9
+ 0004:0000000C 00000008 C=BSS      S=.bss     G=DGROUP   M=Windows  ACBP=A9
+ 0004:00000014 00000004 C=BSS      S=.bss     G=DGROUP   M=VAClasses ACBP=A9
+ 0004:00000018 00000060 C=BSS      S=.bss     G=DGROUP   M=PsAPI    ACBP=A9
+ 0004:00000078 0000001C C=BSS      S=.bss     G=DGROUP   M=VAUtils  ACBP=A9
+ 0004:00000094 00000004 C=BSS      S=.bss     G=DGROUP   M=HRBuffers ACBP=A9
+ 0004:00000098 00000004 C=BSS      S=.bss     G=DGROUP   M=HRParser ACBP=A9
+ 0004:0000009C 00000004 C=BSS      S=.bss     G=DGROUP   M=HRParserPas ACBP=A9
+
+
+  Address             Publics by Name
+
+ 0002:0000012C       .VAShared2006..VAShared2006
+ 0001:000054F8       .VAShared2006.@GetPackageInfoTable
+ 0001:00005500       .VAShared2006.@PackageLoad
+ 0001:0000550C       .VAShared2006.@PackageUnload
+ 0004:00000094       HRBuffers..6
+ 0001:00003FAC       HRBuffers..THRBuffer
+ 0001:000040CC       HRBuffers..THRBufferChar
+ 0001:00004038       HRBuffers..THRBufferEOB
+ 0001:000041FC       HRBuffers..THRBufferList
+ 0001:00004164       HRBuffers..THRBufferStream
+ 0001:000048CC       HRBuffers.Finalization
+ 0002:00000114       HRBuffers.HRBuffers
+ 0001:00004290       HRBuffers.THRBuffer.Create
+ 0001:00004310       HRBuffers.THRBuffer.CreateBuffer
+ 0001:000042BC       HRBuffers.THRBuffer.Destroy
+ 0001:00004384       HRBuffers.THRBuffer.FreeBuffer
+ 0001:00004308       HRBuffers.THRBuffer.GetItems
+ 0001:00004338       HRBuffers.THRBuffer.ResizeBuffer
+ 0001:0000430C       HRBuffers.THRBuffer.SetItems
+ 0001:000042E8       HRBuffers.THRBuffer.SetSize
+ 0001:000043A8       HRBuffers.THRBufferChar.Create
+ 0001:000043E4       HRBuffers.THRBufferChar.Destroy
+ 0001:000044EC       HRBuffers.THRBufferChar.GetAsPChar
+ 0001:0000451C       HRBuffers.THRBufferChar.GetAsString
+ 0001:0000440C       HRBuffers.THRBufferChar.GetEOB
+ 0001:00004414       HRBuffers.THRBufferChar.GetItems
+ 0001:00004448       HRBuffers.THRBufferChar.Read
+ 0001:000044F0       HRBuffers.THRBufferChar.SetAsPChar
+ 0001:00004528       HRBuffers.THRBufferChar.SetAsString
+ 0001:00004430       HRBuffers.THRBufferChar.SetItems
+ 0001:0000446C       HRBuffers.THRBufferChar.Write
+ 0001:0000448C       HRBuffers.THRBufferChar.WritePChar
+ 0001:000044BC       HRBuffers.THRBufferChar.WriteString
+ 0001:000043A4       HRBuffers.THRBufferEOB.GetEOB
+ 0001:00004828       HRBuffers.THRBufferList.Add
+ 0001:00004644       HRBuffers.THRBufferList.Create
+ 0001:000048C8       HRBuffers.THRBufferList.Delete
+ 0001:0000468C       HRBuffers.THRBufferList.Destroy
+ 0001:00004748       HRBuffers.THRBufferList.GetCount
+ 0001:00004810       HRBuffers.THRBufferList.GetItemBuffer
+ 0001:000046B4       HRBuffers.THRBufferList.GetItemPos
+ 0001:00004750       HRBuffers.THRBufferList.GetItemSize
+ 0001:00004768       HRBuffers.THRBufferList.SetItemSize
+ 0001:00004550       HRBuffers.THRBufferStream.Create
+ 0001:00004594       HRBuffers.THRBufferStream.Destroy
+ 0001:000045E0       HRBuffers.THRBufferStream.GetEOB
+ 0001:000045E8       HRBuffers.THRBufferStream.GetItems
+ 0001:00004640       HRBuffers.THRBufferStream.SetItems
+ 0001:000045BC       HRBuffers.THRBufferStream.SetStream
+ 0004:00000098       HRParser..3
+ 0001:000048FC       HRParser..THRParser
+ 0001:00004980       HRParser..THRParserText
+ 0001:00004EC4       HRParser.Finalization
+ 0002:0000011C       HRParser.HRParser
+ 0001:00004A0C       HRParser.THRParser.Create
+ 0001:00004A7C       HRParser.THRParser.Destroy
+ 0001:00004B84       HRParser.THRParser.GetNextToken
+ 0001:00004ABC       HRParser.THRParser.GetSource
+ 0001:00004AD8       HRParser.THRParser.IncLine
+ 0001:00004BC0       HRParser.THRParser.NextToken
+ 0001:00004AC4       HRParser.THRParser.SetSource
+ 0001:00004AD0       HRParser.THRParser.SetSourcePos
+ 0001:00004B3C       HRParser.THRParser.SkipBlanks
+ 0001:00004AE4       HRParser.THRParser.SkipToSourcePos
+ 0001:00004C18       HRParser.THRParserText.Create
+ 0001:00004C50       HRParser.THRParserText.Destroy
+ 0001:00004C78       HRParser.THRParserText.GetNextToken
+ 0004:0000009C       HRParserPas..2
+ 0001:00004FA8       HRParserPas..THRParserPas
+ 0001:000052E8       HRParserPas.Finalization
+ 0002:00000124       HRParserPas.HRParserPas
+ 0003:00000884       HRParserPas.HR_TOKEN_PAS_DESC
+ 0001:00005038       HRParserPas.THRParserPas.Create
+ 0001:00005070       HRParserPas.THRParserPas.Destroy
+ 0001:00005098       HRParserPas.THRParserPas.GetNextToken
+ 0001:00000ED4       PsAPI.CheckPSAPILoaded
+ 0001:00001240       PsAPI.EnumProcesses
+ 0001:00001264       PsAPI.EnumProcessModules
+ 0001:00001294       PsAPI.GetModuleFileNameEx
+ 0004:00000018       PsAPI.hPSAPI
+ 0004:00000040       PsAPI._EmptyWorkingSet
+ 0004:00000070       PsAPI._EnumDeviceDrivers
+ 0004:0000001C       PsAPI._EnumProcesses
+ 0004:00000020       PsAPI._EnumProcessModules
+ 0004:00000050       PsAPI._GetDeviceDriverBaseName
+ 0004:0000005C       PsAPI._GetDeviceDriverBaseNameA
+ 0004:00000068       PsAPI._GetDeviceDriverBaseNameW
+ 0004:00000054       PsAPI._GetDeviceDriverFileName
+ 0004:00000060       PsAPI._GetDeviceDriverFileNameA
+ 0004:0000006C       PsAPI._GetDeviceDriverFileNameW
+ 0004:0000004C       PsAPI._GetMappedFileName
+ 0004:00000058       PsAPI._GetMappedFileNameA
+ 0004:00000064       PsAPI._GetMappedFileNameW
+ 0004:00000024       PsAPI._GetModuleBaseName
+ 0004:0000002C       PsAPI._GetModuleBaseNameA
+ 0004:00000034       PsAPI._GetModuleBaseNameW
+ 0004:00000028       PsAPI._GetModuleFileNameEx
+ 0004:00000030       PsAPI._GetModuleFileNameExA
+ 0004:00000038       PsAPI._GetModuleFileNameExW
+ 0004:0000003C       PsAPI._GetModuleInformation
+ 0004:00000074       PsAPI._GetProcessMemoryInfo
+ 0004:00000048       PsAPI._InitializeProcessForWsWatch
+ 0004:00000044       PsAPI._QueryWorkingSet
+ 0001:0000061C       ShlObj.SHGetSpecialFolderPath
+ 0001:000002E0       SysInit.@InitPkg
+ 0001:00000344       SysInit.@PackageLoad
+ 0001:00000350       SysInit.@PackageUnload
+ 0001:000001D0       SysInit.AllocTlsBuffer
+ 0001:0000028C       SysInit.ExitProcessTLS
+ 0001:00000254       SysInit.ExitThreadTLS
+ 0001:00000198       SysInit.FreeLibrary
+ 0001:000001DC       SysInit.GetTlsSize
+ 0004:00000004       SysInit.HInstance
+ 0001:000002B0       SysInit.InitializeModule
+ 0001:00000228       SysInit.InitProcessTLS
+ 0001:000001E4       SysInit.InitThreadTLS
+ 0001:000001A0       SysInit.LocalAlloc
+ 0001:000001A8       SysInit.LocalFree
+ 0003:00000004       SysInit.Module
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0001:000001B0       SysInit.TlsAlloc
+ 0004:00000008       SysInit.tlsBuffer
+ 0001:000001B8       SysInit.TlsFree
+ 0001:000001C0       SysInit.TlsGetValue
+ 0003:00000000       SysInit.TlsIndex
+ 0005:00000000       SysInit.TlsLast
+ 0003:0000001C       SysInit.TlsProc
+ 0001:000001C8       SysInit.TlsSetValue
+ 0001:000002BC       SysInit.UninitializeModule
+ 0004:00000014       VAClasses..6
+ 0001:0000064C       VAClasses..TVABaseMethodList
+ 0001:0000076C       VAClasses..TVALinkedMethodList
+ 0001:00000984       VAClasses..TVAList
+ 0001:000006E0       VAClasses..TVAMethodList
+ 0001:0000084C       VAClasses..TVANotificationEventComponent
+ 0001:00000EA4       VAClasses.Finalization
+ 0001:00000A6C       VAClasses.TVABaseMethodList.Add
+ 0001:00000A98       VAClasses.TVABaseMethodList.Clear
+ 0001:00000AB0       VAClasses.TVABaseMethodList.Count
+ 0001:00000AB8       VAClasses.TVABaseMethodList.Create
+ 0001:00000B04       VAClasses.TVABaseMethodList.Delete
+ 0001:00000B24       VAClasses.TVABaseMethodList.Destroy
+ 0001:00000B5C       VAClasses.TVABaseMethodList.GetMethod
+ 0001:00000B84       VAClasses.TVABaseMethodList.IndexOf
+ 0001:00000BE0       VAClasses.TVABaseMethodList.Remove
+ 0001:00000D0C       VAClasses.TVALinkedMethodList.Add
+ 0001:00000D50       VAClasses.TVALinkedMethodList.Clear
+ 0001:00000D70       VAClasses.TVALinkedMethodList.Count
+ 0001:00000D78       VAClasses.TVALinkedMethodList.Create
+ 0001:00000DBC       VAClasses.TVALinkedMethodList.Delete
+ 0001:00000DE4       VAClasses.TVALinkedMethodList.Destroy
+ 0001:00000E14       VAClasses.TVALinkedMethodList.GetMethod
+ 0001:00000E44       VAClasses.TVALinkedMethodList.IndexOf
+ 0001:00000E58       VAClasses.TVALinkedMethodList.Remove
+ 0001:00000E74       VAClasses.TVAList.Notify
+ 0001:00000C08       VAClasses.TVAMethodList.Add
+ 0001:00000C10       VAClasses.TVAMethodList.Clear
+ 0001:00000C18       VAClasses.TVAMethodList.Count
+ 0001:00000C20       VAClasses.TVAMethodList.Create
+ 0001:00000C58       VAClasses.TVAMethodList.Delete
+ 0001:00000C60       VAClasses.TVAMethodList.Destroy
+ 0001:00000C88       VAClasses.TVAMethodList.IndexOf
+ 0001:00000C90       VAClasses.TVAMethodList.Remove
+ 0001:00000C98       VAClasses.TVANotificationEventComponent.Notification
+ 0001:00000CC4       VAClasses.TVANotificationEventComponent.NotifyCreate
+ 0002:000000CC       VAClasses.VAClasses
+ 0004:00000078       VAUtils..3
+ 0001:00002E14       VAUtils..TVACustomMessageEventInterceptor
+ 0001:00002E8C       VAUtils..TVAMessageEventHandler
+ 0001:00002EF8       VAUtils..TVAWinProcMonitor
+ 0001:00003094       VAUtils.AddMessageHandler
+ 0001:00003858       VAUtils.AnotherInstanceRunning
+ 0001:00002AB4       VAUtils.AppendBackSlash
+ 0003:0000042C       VAUtils.BinChars
+ 0003:0000046C       VAUtils.CheckScreenReaderSupport
+ 0001:00003060       VAUtils.CleanupMessageHandlerSystem
+ 0001:00003024       VAUtils.Clear
+ 0003:00000474       VAUtils.CRC32_TABLE
+ 0001:00002A34       VAUtils.CRCForString
+ 0001:00003CF0       VAUtils.ExecuteAndWait
+ 0001:0000296C       VAUtils.FastHexToBinary
+ 0001:00002748       VAUtils.FastHexToByte
+ 0001:000027F0       VAUtils.FastHexToInt
+ 0001:000026D4       VAUtils.FastIntToHex
+ 0001:0000271C       VAUtils.FastWordToHex
+ 0001:00003924       VAUtils.FileVersionValue
+ 0001:00003F2C       VAUtils.Finalization
+ 0001:000024EC       VAUtils.FreeAndNilTStringsAndObjects
+ 0001:00002CDC       VAUtils.GetAlternateProgramFilesPath
+ 0001:0000257C       VAUtils.GetFileWithShortenedPath
+ 0001:0000380C       VAUtils.GetInstanceCount
+ 0001:00003604       VAUtils.GetInstanceCount
+ 0001:00002CC8       VAUtils.GetProgramFilesPath
+ 0001:00002B30       VAUtils.GetSpecialFolderPath
+ 0001:00003AD8       VAUtils.GetV
+ 0001:00002DE0       VAUtils.GetWindowClassName
+ 0001:00002DAC       VAUtils.GetWindowTitle
+ 0003:0000002C       VAUtils.HexChars
+ 0001:00002FB4       VAUtils.InitializeMessageHandlerSystem
+ 0001:000035D0       VAUtils.ListTooSmall
+ 0001:00003258       VAUtils.MessageHandlerCount
+ 0004:00000088       VAUtils.ModuleHandles
+ 0001:00003BAC       VAUtils.parse
+ 0004:0000007C       VAUtils.PIDList
+ 0001:00002188       VAUtils.Piece
+ 0001:00002204       VAUtils.Pieces
+ 0001:000031CC       VAUtils.RemoveAllMessageHandlers
+ 0001:00003130       VAUtils.RemoveMessageHandler
+ 0001:00002534       VAUtils.ScreenReaderActive
+ 0001:00002558       VAUtils.ScreenReaderSupportEnabled
+ 0001:000023F4       VAUtils.ShowMsg
+ 0001:000022C0       VAUtils.ShowMsg
+ 0001:0000357C       VAUtils.TDataArray.Clear
+ 0001:00003598       VAUtils.TDataArray.SetCapacity
+ 0001:000035C8       VAUtils.TDataArray.Size
+ 0001:0000332C       VAUtils.TVACustomMessageEventInterceptor.Create
+ 0001:000033D0       VAUtils.TVACustomMessageEventInterceptor.Destroy
+ 0001:00003404       VAUtils.TVACustomMessageEventInterceptor.NewMessageHandler
+ 0001:00003410       VAUtils.TVAMessageEventHandler.AddMessageHandler
+ 0001:00003424       VAUtils.TVAMessageEventHandler.Create
+ 0001:00003470       VAUtils.TVAMessageEventHandler.Destroy
+ 0001:000034A0       VAUtils.TVAMessageEventHandler.DoMessageHandlers
+ 0001:000034F8       VAUtils.TVAMessageEventHandler.HandlerCount
+ 0001:00003504       VAUtils.TVAMessageEventHandler.NewMessageHandler
+ 0001:00003528       VAUtils.TVAMessageEventHandler.RemoveMessageHandler
+ 0001:000032D4       VAUtils.TVAWinProcMonitor.Notification
+ 0001:0000330C       VAUtils.TVAWinProcMonitor.RemoveFromList
+ 0003:00000874       VAUtils.uEventMessageHandlers
+ 0003:00000878       VAUtils.uHandlePointers
+ 0003:00000880       VAUtils.uMessageHandlerSystemRunning
+ 0003:00000470       VAUtils.uScreenReaderSupportEnabled
+ 0003:0000087C       VAUtils.uWinProcMonitor
+ 0002:000000DC       VAUtils.VAUtils
+ 0001:00003C28       VAUtils.VersionOK
+ 0001:00003864       VAUtils.VersionStringToHighLowValues
+ 0004:0000000C       Windows..3
+ 0001:000003B4       Windows.CloseHandle
+ 0001:00000418       Windows.Finalization
+ 0001:000003BC       Windows.FreeLibrary
+ 0001:000003FC       Windows.GetClassName
+ 0001:000003E4       Windows.GetFileVersionInfo
+ 0001:000003EC       Windows.GetFileVersionInfoSize
+ 0001:000003C4       Windows.GetProcAddress
+ 0001:00000404       Windows.GetWindowText
+ 0001:00000414       Windows.HiWord
+ 0004:00000010       Windows.HtmlHelpModule
+ 0001:000003CC       Windows.LoadLibrary
+ 0001:000003D4       Windows.OpenProcess
+ 0001:000003DC       Windows.Sleep
+ 0001:0000040C       Windows.SystemParametersInfo
+ 0001:000003F4       Windows.VerQueryValue
+ 0002:00000010       Windows.Windows
+
+
+  Address             Publics by Value
+
+ 0001:00000198       SysInit.FreeLibrary
+ 0001:000001A0       SysInit.LocalAlloc
+ 0001:000001A8       SysInit.LocalFree
+ 0001:000001B0       SysInit.TlsAlloc
+ 0001:000001B8       SysInit.TlsFree
+ 0001:000001C0       SysInit.TlsGetValue
+ 0001:000001C8       SysInit.TlsSetValue
+ 0001:000001D0       SysInit.AllocTlsBuffer
+ 0001:000001DC       SysInit.GetTlsSize
+ 0001:000001E4       SysInit.InitThreadTLS
+ 0001:00000228       SysInit.InitProcessTLS
+ 0001:00000254       SysInit.ExitThreadTLS
+ 0001:0000028C       SysInit.ExitProcessTLS
+ 0001:000002B0       SysInit.InitializeModule
+ 0001:000002BC       SysInit.UninitializeModule
+ 0001:000002E0       SysInit.@InitPkg
+ 0001:00000344       SysInit.@PackageLoad
+ 0001:00000350       SysInit.@PackageUnload
+ 0001:000003B4       Windows.CloseHandle
+ 0001:000003BC       Windows.FreeLibrary
+ 0001:000003C4       Windows.GetProcAddress
+ 0001:000003CC       Windows.LoadLibrary
+ 0001:000003D4       Windows.OpenProcess
+ 0001:000003DC       Windows.Sleep
+ 0001:000003E4       Windows.GetFileVersionInfo
+ 0001:000003EC       Windows.GetFileVersionInfoSize
+ 0001:000003F4       Windows.VerQueryValue
+ 0001:000003FC       Windows.GetClassName
+ 0001:00000404       Windows.GetWindowText
+ 0001:0000040C       Windows.SystemParametersInfo
+ 0001:00000414       Windows.HiWord
+ 0001:00000418       Windows.Finalization
+ 0001:0000061C       ShlObj.SHGetSpecialFolderPath
+ 0001:0000064C       VAClasses..TVABaseMethodList
+ 0001:000006E0       VAClasses..TVAMethodList
+ 0001:0000076C       VAClasses..TVALinkedMethodList
+ 0001:0000084C       VAClasses..TVANotificationEventComponent
+ 0001:00000984       VAClasses..TVAList
+ 0001:00000A6C       VAClasses.TVABaseMethodList.Add
+ 0001:00000A98       VAClasses.TVABaseMethodList.Clear
+ 0001:00000AB0       VAClasses.TVABaseMethodList.Count
+ 0001:00000AB8       VAClasses.TVABaseMethodList.Create
+ 0001:00000B04       VAClasses.TVABaseMethodList.Delete
+ 0001:00000B24       VAClasses.TVABaseMethodList.Destroy
+ 0001:00000B5C       VAClasses.TVABaseMethodList.GetMethod
+ 0001:00000B84       VAClasses.TVABaseMethodList.IndexOf
+ 0001:00000BE0       VAClasses.TVABaseMethodList.Remove
+ 0001:00000C08       VAClasses.TVAMethodList.Add
+ 0001:00000C10       VAClasses.TVAMethodList.Clear
+ 0001:00000C18       VAClasses.TVAMethodList.Count
+ 0001:00000C20       VAClasses.TVAMethodList.Create
+ 0001:00000C58       VAClasses.TVAMethodList.Delete
+ 0001:00000C60       VAClasses.TVAMethodList.Destroy
+ 0001:00000C88       VAClasses.TVAMethodList.IndexOf
+ 0001:00000C90       VAClasses.TVAMethodList.Remove
+ 0001:00000C98       VAClasses.TVANotificationEventComponent.Notification
+ 0001:00000CC4       VAClasses.TVANotificationEventComponent.NotifyCreate
+ 0001:00000D0C       VAClasses.TVALinkedMethodList.Add
+ 0001:00000D50       VAClasses.TVALinkedMethodList.Clear
+ 0001:00000D70       VAClasses.TVALinkedMethodList.Count
+ 0001:00000D78       VAClasses.TVALinkedMethodList.Create
+ 0001:00000DBC       VAClasses.TVALinkedMethodList.Delete
+ 0001:00000DE4       VAClasses.TVALinkedMethodList.Destroy
+ 0001:00000E14       VAClasses.TVALinkedMethodList.GetMethod
+ 0001:00000E44       VAClasses.TVALinkedMethodList.IndexOf
+ 0001:00000E58       VAClasses.TVALinkedMethodList.Remove
+ 0001:00000E74       VAClasses.TVAList.Notify
+ 0001:00000EA4       VAClasses.Finalization
+ 0001:00000ED4       PsAPI.CheckPSAPILoaded
+ 0001:00001240       PsAPI.EnumProcesses
+ 0001:00001264       PsAPI.EnumProcessModules
+ 0001:00001294       PsAPI.GetModuleFileNameEx
+ 0001:00002188       VAUtils.Piece
+ 0001:00002204       VAUtils.Pieces
+ 0001:000022C0       VAUtils.ShowMsg
+ 0001:000023F4       VAUtils.ShowMsg
+ 0001:000024EC       VAUtils.FreeAndNilTStringsAndObjects
+ 0001:00002534       VAUtils.ScreenReaderActive
+ 0001:00002558       VAUtils.ScreenReaderSupportEnabled
+ 0001:0000257C       VAUtils.GetFileWithShortenedPath
+ 0001:000026D4       VAUtils.FastIntToHex
+ 0001:0000271C       VAUtils.FastWordToHex
+ 0001:00002748       VAUtils.FastHexToByte
+ 0001:000027F0       VAUtils.FastHexToInt
+ 0001:0000296C       VAUtils.FastHexToBinary
+ 0001:00002A34       VAUtils.CRCForString
+ 0001:00002AB4       VAUtils.AppendBackSlash
+ 0001:00002B30       VAUtils.GetSpecialFolderPath
+ 0001:00002CC8       VAUtils.GetProgramFilesPath
+ 0001:00002CDC       VAUtils.GetAlternateProgramFilesPath
+ 0001:00002DAC       VAUtils.GetWindowTitle
+ 0001:00002DE0       VAUtils.GetWindowClassName
+ 0001:00002E14       VAUtils..TVACustomMessageEventInterceptor
+ 0001:00002E8C       VAUtils..TVAMessageEventHandler
+ 0001:00002EF8       VAUtils..TVAWinProcMonitor
+ 0001:00002FB4       VAUtils.InitializeMessageHandlerSystem
+ 0001:00003024       VAUtils.Clear
+ 0001:00003060       VAUtils.CleanupMessageHandlerSystem
+ 0001:00003094       VAUtils.AddMessageHandler
+ 0001:00003130       VAUtils.RemoveMessageHandler
+ 0001:000031CC       VAUtils.RemoveAllMessageHandlers
+ 0001:00003258       VAUtils.MessageHandlerCount
+ 0001:000032D4       VAUtils.TVAWinProcMonitor.Notification
+ 0001:0000330C       VAUtils.TVAWinProcMonitor.RemoveFromList
+ 0001:0000332C       VAUtils.TVACustomMessageEventInterceptor.Create
+ 0001:000033D0       VAUtils.TVACustomMessageEventInterceptor.Destroy
+ 0001:00003404       VAUtils.TVACustomMessageEventInterceptor.NewMessageHandler
+ 0001:00003410       VAUtils.TVAMessageEventHandler.AddMessageHandler
+ 0001:00003424       VAUtils.TVAMessageEventHandler.Create
+ 0001:00003470       VAUtils.TVAMessageEventHandler.Destroy
+ 0001:000034A0       VAUtils.TVAMessageEventHandler.DoMessageHandlers
+ 0001:000034F8       VAUtils.TVAMessageEventHandler.HandlerCount
+ 0001:00003504       VAUtils.TVAMessageEventHandler.NewMessageHandler
+ 0001:00003528       VAUtils.TVAMessageEventHandler.RemoveMessageHandler
+ 0001:0000357C       VAUtils.TDataArray.Clear
+ 0001:00003598       VAUtils.TDataArray.SetCapacity
+ 0001:000035C8       VAUtils.TDataArray.Size
+ 0001:000035D0       VAUtils.ListTooSmall
+ 0001:00003604       VAUtils.GetInstanceCount
+ 0001:0000380C       VAUtils.GetInstanceCount
+ 0001:00003858       VAUtils.AnotherInstanceRunning
+ 0001:00003864       VAUtils.VersionStringToHighLowValues
+ 0001:00003924       VAUtils.FileVersionValue
+ 0001:00003AD8       VAUtils.GetV
+ 0001:00003BAC       VAUtils.parse
+ 0001:00003C28       VAUtils.VersionOK
+ 0001:00003CF0       VAUtils.ExecuteAndWait
+ 0001:00003F2C       VAUtils.Finalization
+ 0001:00003FAC       HRBuffers..THRBuffer
+ 0001:00004038       HRBuffers..THRBufferEOB
+ 0001:000040CC       HRBuffers..THRBufferChar
+ 0001:00004164       HRBuffers..THRBufferStream
+ 0001:000041FC       HRBuffers..THRBufferList
+ 0001:00004290       HRBuffers.THRBuffer.Create
+ 0001:000042BC       HRBuffers.THRBuffer.Destroy
+ 0001:000042E8       HRBuffers.THRBuffer.SetSize
+ 0001:00004308       HRBuffers.THRBuffer.GetItems
+ 0001:0000430C       HRBuffers.THRBuffer.SetItems
+ 0001:00004310       HRBuffers.THRBuffer.CreateBuffer
+ 0001:00004338       HRBuffers.THRBuffer.ResizeBuffer
+ 0001:00004384       HRBuffers.THRBuffer.FreeBuffer
+ 0001:000043A4       HRBuffers.THRBufferEOB.GetEOB
+ 0001:000043A8       HRBuffers.THRBufferChar.Create
+ 0001:000043E4       HRBuffers.THRBufferChar.Destroy
+ 0001:0000440C       HRBuffers.THRBufferChar.GetEOB
+ 0001:00004414       HRBuffers.THRBufferChar.GetItems
+ 0001:00004430       HRBuffers.THRBufferChar.SetItems
+ 0001:00004448       HRBuffers.THRBufferChar.Read
+ 0001:0000446C       HRBuffers.THRBufferChar.Write
+ 0001:0000448C       HRBuffers.THRBufferChar.WritePChar
+ 0001:000044BC       HRBuffers.THRBufferChar.WriteString
+ 0001:000044EC       HRBuffers.THRBufferChar.GetAsPChar
+ 0001:000044F0       HRBuffers.THRBufferChar.SetAsPChar
+ 0001:0000451C       HRBuffers.THRBufferChar.GetAsString
+ 0001:00004528       HRBuffers.THRBufferChar.SetAsString
+ 0001:00004550       HRBuffers.THRBufferStream.Create
+ 0001:00004594       HRBuffers.THRBufferStream.Destroy
+ 0001:000045BC       HRBuffers.THRBufferStream.SetStream
+ 0001:000045E0       HRBuffers.THRBufferStream.GetEOB
+ 0001:000045E8       HRBuffers.THRBufferStream.GetItems
+ 0001:00004640       HRBuffers.THRBufferStream.SetItems
+ 0001:00004644       HRBuffers.THRBufferList.Create
+ 0001:0000468C       HRBuffers.THRBufferList.Destroy
+ 0001:000046B4       HRBuffers.THRBufferList.GetItemPos
+ 0001:00004748       HRBuffers.THRBufferList.GetCount
+ 0001:00004750       HRBuffers.THRBufferList.GetItemSize
+ 0001:00004768       HRBuffers.THRBufferList.SetItemSize
+ 0001:00004810       HRBuffers.THRBufferList.GetItemBuffer
+ 0001:00004828       HRBuffers.THRBufferList.Add
+ 0001:000048C8       HRBuffers.THRBufferList.Delete
+ 0001:000048CC       HRBuffers.Finalization
+ 0001:000048FC       HRParser..THRParser
+ 0001:00004980       HRParser..THRParserText
+ 0001:00004A0C       HRParser.THRParser.Create
+ 0001:00004A7C       HRParser.THRParser.Destroy
+ 0001:00004ABC       HRParser.THRParser.GetSource
+ 0001:00004AC4       HRParser.THRParser.SetSource
+ 0001:00004AD0       HRParser.THRParser.SetSourcePos
+ 0001:00004AD8       HRParser.THRParser.IncLine
+ 0001:00004AE4       HRParser.THRParser.SkipToSourcePos
+ 0001:00004B3C       HRParser.THRParser.SkipBlanks
+ 0001:00004B84       HRParser.THRParser.GetNextToken
+ 0001:00004BC0       HRParser.THRParser.NextToken
+ 0001:00004C18       HRParser.THRParserText.Create
+ 0001:00004C50       HRParser.THRParserText.Destroy
+ 0001:00004C78       HRParser.THRParserText.GetNextToken
+ 0001:00004EC4       HRParser.Finalization
+ 0001:00004FA8       HRParserPas..THRParserPas
+ 0001:00005038       HRParserPas.THRParserPas.Create
+ 0001:00005070       HRParserPas.THRParserPas.Destroy
+ 0001:00005098       HRParserPas.THRParserPas.GetNextToken
+ 0001:000052E8       HRParserPas.Finalization
+ 0001:000054F8       .VAShared2006.@GetPackageInfoTable
+ 0001:00005500       .VAShared2006.@PackageLoad
+ 0001:0000550C       .VAShared2006.@PackageUnload
+ 0002:00000010       Windows.Windows
+ 0002:000000CC       VAClasses.VAClasses
+ 0002:000000DC       VAUtils.VAUtils
+ 0002:00000114       HRBuffers.HRBuffers
+ 0002:0000011C       HRParser.HRParser
+ 0002:00000124       HRParserPas.HRParserPas
+ 0002:0000012C       .VAShared2006..VAShared2006
+ 0003:00000000       SysInit.TlsIndex
+ 0003:00000004       SysInit.Module
+ 0003:0000001C       SysInit.TlsProc
+ 0003:0000002C       VAUtils.HexChars
+ 0003:0000042C       VAUtils.BinChars
+ 0003:0000046C       VAUtils.CheckScreenReaderSupport
+ 0003:00000470       VAUtils.uScreenReaderSupportEnabled
+ 0003:00000474       VAUtils.CRC32_TABLE
+ 0003:00000874       VAUtils.uEventMessageHandlers
+ 0003:00000878       VAUtils.uHandlePointers
+ 0003:0000087C       VAUtils.uWinProcMonitor
+ 0003:00000880       VAUtils.uMessageHandlerSystemRunning
+ 0003:00000884       HRParserPas.HR_TOKEN_PAS_DESC
+ 0004:00000000       SysInit.ModuleIsLib
+ 0004:00000001       SysInit.ModuleIsPackage
+ 0004:00000004       SysInit.HInstance
+ 0004:00000008       SysInit.tlsBuffer
+ 0004:0000000C       Windows..3
+ 0004:00000010       Windows.HtmlHelpModule
+ 0004:00000014       VAClasses..6
+ 0004:00000018       PsAPI.hPSAPI
+ 0004:0000001C       PsAPI._EnumProcesses
+ 0004:00000020       PsAPI._EnumProcessModules
+ 0004:00000024       PsAPI._GetModuleBaseName
+ 0004:00000028       PsAPI._GetModuleFileNameEx
+ 0004:0000002C       PsAPI._GetModuleBaseNameA
+ 0004:00000030       PsAPI._GetModuleFileNameExA
+ 0004:00000034       PsAPI._GetModuleBaseNameW
+ 0004:00000038       PsAPI._GetModuleFileNameExW
+ 0004:0000003C       PsAPI._GetModuleInformation
+ 0004:00000040       PsAPI._EmptyWorkingSet
+ 0004:00000044       PsAPI._QueryWorkingSet
+ 0004:00000048       PsAPI._InitializeProcessForWsWatch
+ 0004:0000004C       PsAPI._GetMappedFileName
+ 0004:00000050       PsAPI._GetDeviceDriverBaseName
+ 0004:00000054       PsAPI._GetDeviceDriverFileName
+ 0004:00000058       PsAPI._GetMappedFileNameA
+ 0004:0000005C       PsAPI._GetDeviceDriverBaseNameA
+ 0004:00000060       PsAPI._GetDeviceDriverFileNameA
+ 0004:00000064       PsAPI._GetMappedFileNameW
+ 0004:00000068       PsAPI._GetDeviceDriverBaseNameW
+ 0004:0000006C       PsAPI._GetDeviceDriverFileNameW
+ 0004:00000070       PsAPI._EnumDeviceDrivers
+ 0004:00000074       PsAPI._GetProcessMemoryInfo
+ 0004:00000078       VAUtils..3
+ 0004:0000007C       VAUtils.PIDList
+ 0004:00000088       VAUtils.ModuleHandles
+ 0004:00000094       HRBuffers..6
+ 0004:00000098       HRParser..3
+ 0004:0000009C       HRParserPas..2
+ 0005:00000000       SysInit.TlsLast
+
+
+Line numbers for VAClasses(VAClasses.pas) segment .text
+
+    99 0001:00000A6C   100 0001:00000A72   102 0001:00000A7F   103 0001:00000A89
+   105 0001:00000A94   108 0001:00000A98   109 0001:00000A9B   110 0001:00000AA3
+   111 0001:00000AAB   115 0001:00000AB0   116 0001:00000AB6   119 0001:00000AB8
+   120 0001:00000ACA   121 0001:00000AD9   122 0001:00000AE8   125 0001:00000B04
+   126 0001:00000B0A   127 0001:00000B14   128 0001:00000B1E   131 0001:00000B24
+   132 0001:00000B2F   133 0001:00000B37   134 0001:00000B3F   135 0001:00000B4B
+   138 0001:00000B5C   139 0001:00000B65   140 0001:00000B71   141 0001:00000B7E
+   144 0001:00000B84   145 0001:00000B8B   147 0001:00000B9F   149 0001:00000BA3
+   148 0001:00000BA4   150 0001:00000BC9   153 0001:00000BD6   154 0001:00000BD9
+   160 0001:00000BE0   161 0001:00000BE4   162 0001:00000BED   164 0001:00000BF1
+   165 0001:00000BFB   167 0001:00000C05   173 0001:00000C08   174 0001:00000C0D
+   178 0001:00000C10   179 0001:00000C15   183 0001:00000C18   184 0001:00000C1D
+   187 0001:00000C20   188 0001:00000C32   189 0001:00000C3B   193 0001:00000C58
+   194 0001:00000C5D   197 0001:00000C60   198 0001:00000C6B   199 0001:00000C77
+   203 0001:00000C88   204 0001:00000C8D   208 0001:00000C90   209 0001:00000C95
+   215 0001:00000C98   216 0001:00000CA1   217 0001:00000CB2   218 0001:00000CBD
+   222 0001:00000CC4   223 0001:00000CD9   224 0001:00000CE2   225 0001:00000CEE
+   230 0001:00000D0C   231 0001:00000D15   233 0001:00000D2B   234 0001:00000D35
+   235 0001:00000D3F   237 0001:00000D4A   240 0001:00000D50   241 0001:00000D53
+   242 0001:00000D5B   243 0001:00000D63   244 0001:00000D6B   248 0001:00000D70
+   249 0001:00000D76   252 0001:00000D78   253 0001:00000D8A   254 0001:00000D93
+   255 0001:00000DA2   258 0001:00000DBC   259 0001:00000DC2   260 0001:00000DCC
+   261 0001:00000DD6   262 0001:00000DE0   265 0001:00000DE4   266 0001:00000DEF
+   267 0001:00000DF7   268 0001:00000E03   273 0001:00000E14   274 0001:00000E1B
+   275 0001:00000E24   277 0001:00000E28   278 0001:00000E2C   281 0001:00000E33
+   282 0001:00000E3E   286 0001:00000E44   287 0001:00000E48   289 0001:00000E51
+   290 0001:00000E54   295 0001:00000E58   296 0001:00000E5B   297 0001:00000E62
+   298 0001:00000E66   299 0001:00000E6F   304 0001:00000E74   305 0001:00000E75
+   307 0001:00000E80   308 0001:00000E84   310 0001:00000E94   312 0001:00000EA2
+
+Line numbers for VAClasses(VAClasses.pas) segment .itext
+
+   314 0002:000000CC
+
+Line numbers for VAUtils(VAUtils.pas) segment .text
+
+   200 0001:00002188   201 0001:00002199   202 0001:0000219E   203 0001:000021A7
+   206 0001:000021B6   207 0001:000021B7   208 0001:000021BA   204 0001:000021C7
+   210 0001:000021D0   211 0001:000021DD   212 0001:000021FA   218 0001:00002204
+   219 0001:0000222D   220 0001:00002234   221 0001:00002275   222 0001:00002295
+   235 0001:000022C0   236 0001:000022DA   237 0001:000022DF   238 0001:000022F1
+   239 0001:000022F6   240 0001:000022FB   241 0001:00002300   243 0001:00002303
+   244 0001:0000232B   245 0001:00002330   246 0001:00002335   247 0001:0000233A
+   248 0001:0000233F   249 0001:00002344   251 0001:00002347   252 0001:00002351
+   253 0001:00002357   254 0001:00002366   255 0001:00002386   256 0001:000023B2
+   257 0001:000023B6   258 0001:000023BA   259 0001:000023BE   260 0001:000023C2
+   261 0001:000023C6   262 0001:000023CA   264 0001:000023CC   270 0001:000023F4
+   271 0001:00002414   272 0001:0000241C   273 0001:0000242C   274 0001:0000243B
+   275 0001:0000244A   277 0001:00002457   278 0001:00002474   279 0001:00002487
+   285 0001:000024EC   286 0001:000024EF   287 0001:000024F4   288 0001:00002506
+   289 0001:00002514   287 0001:00002524   290 0001:00002527   291 0001:0000252E
+   298 0001:00002534   300 0001:00002535   301 0001:00002545   302 0001:0000254F
+   304 0001:00002553   305 0001:00002555   313 0001:00002558   315 0001:00002561
+   316 0001:0000256B   318 0001:00002572   319 0001:00002579   330 0001:0000257C
+   331 0001:000025AF   332 0001:000025B9   333 0001:000025BB   334 0001:000025BD
+   335 0001:000025C2   338 0001:000025C7   339 0001:000025D8   340 0001:000025DD
+   342 0001:000025E3   343 0001:000025E6   345 0001:000025EC   348 0001:000025F0
+   349 0001:000025FD   351 0001:00002609   353 0001:0000260E   354 0001:00002613
+   355 0001:0000261D   356 0001:00002659   359 0001:00002664   360 0001:00002674
+   362 0001:00002675   363 0001:00002686   369 0001:000026D4   370 0001:000026D8
+   371 0001:000026DB   372 0001:00002717   378 0001:0000271C   379 0001:00002720
+   380 0001:00002724   381 0001:00002742   395 0001:00002748   396 0001:0000276B
+   398 0001:000027AB   402 0001:000027F0   403 0001:0000281A   411 0001:00002926
+   418 0001:0000296C   419 0001:00002996   420 0001:000029A0   421 0001:000029A8
+   423 0001:000029B3   424 0001:000029C3   425 0001:000029D2   426 0001:000029D6
+   427 0001:000029E8   421 0001:000029E9   428 0001:000029EC   470 0001:00002A34
+   471 0001:00002A52   472 0001:00002A55   473 0001:00002A66   474 0001:00002A8A
+   472 0001:00002A8B   475 0001:00002A8E   478 0001:00002AB4   479 0001:00002ACD
+   480 0001:00002AEB   481 0001:00002AF7   482 0001:00002B00   489 0001:00002B30
+   490 0001:00002B54   491 0001:00002B67   492 0001:00002B78   493 0001:00002B8A
+   494 0001:00002B97   498 0001:00002CC8   499 0001:00002CCB   500 0001:00002CD7
+   510 0001:00002CDC   511 0001:00002CF8   512 0001:00002D00   513 0001:00002D1A
+   514 0001:00002D25   515 0001:00002D32   516 0001:00002D57   518 0001:00002D60
+   519 0001:00002D6A   523 0001:00002DAC   524 0001:00002DB2   525 0001:00002DBE
+   526 0001:00002DDD   529 0001:00002DE0   530 0001:00002DE6   531 0001:00002DF2
+   532 0001:00002E11   618 0001:00002FB4   623 0001:00002FBD   624 0001:00002FCE
+   625 0001:00002FDA   626 0001:00002FE3   627 0001:00002FF4   628 0001:00003000
+   629 0001:00003009   630 0001:0000301C   632 0001:00003023   639 0001:00003024
+   640 0001:00003029   642 0001:0000302E   644 0001:00003032   645 0001:00003043
+   644 0001:00003052   647 0001:00003055   649 0001:0000305C   653 0001:00003060
+   654 0001:0000306C   655 0001:00003078   656 0001:00003081   657 0001:0000308B
+   658 0001:00003092   688 0001:00003094   689 0001:000030AB   690 0001:000030B0
+   691 0001:000030BA   692 0001:000030C9   694 0001:000030CD   695 0001:000030DD
+   698 0001:000030EE   699 0001:000030FC   700 0001:00003109   733 0001:00003130
+   734 0001:00003147   735 0001:00003150   736 0001:0000315A   737 0001:00003169
+   739 0001:0000316D   740 0001:0000317B   741 0001:00003188   743 0001:00003193
+   744 0001:0000319A   747 0001:000031A6   756 0001:000031CC   757 0001:000031E3
+   758 0001:000031EC   771 0001:000031F6   772 0001:00003205   774 0001:00003209
+   775 0001:00003215   776 0001:0000321A   779 0001:00003226   780 0001:00003233
+   789 0001:00003258   790 0001:0000326F   791 0001:00003271   793 0001:0000327A
+   804 0001:00003284   805 0001:00003293   807 0001:00003297   808 0001:000032A5
+   810 0001:000032AE   890 0001:000032D4   891 0001:000032DD   892 0001:000032E8
+   893 0001:000032FE   894 0001:00003307   897 0001:0000330C   898 0001:0000330F
+   899 0001:00003320   900 0001:00003327   906 0001:0000332C   907 0001:00003342
+   908 0001:00003346   909 0001:0000335C   910 0001:00003361   911 0001:0000336C
+   912 0001:0000337B   913 0001:00003389   916 0001:000033D0   917 0001:000033DB
+   918 0001:000033EA   919 0001:000033F6   923 0001:00003404   924 0001:00003405
+   925 0001:0000340D   989 0001:00003410   990 0001:00003413   991 0001:0000341E
+   994 0001:00003424   995 0001:00003439   996 0001:00003448   997 0001:00003453
+  1000 0001:00003470  1001 0001:0000347B  1002 0001:00003487  1003 0001:0000348F
+  1011 0001:000034A0  1012 0001:000034AF  1013 0001:000034B2  1015 0001:000034C7
+  1016 0001:000034D8  1017 0001:000034E6  1019 0001:000034EB  1013 0001:000034EC
+  1020 0001:000034EF  1024 0001:000034F8  1025 0001:00003500  1031 0001:00003504
+  1032 0001:0000350B  1033 0001:00003516  1034 0001:0000351C  1035 0001:00003524
+  1038 0001:00003528  1039 0001:0000352B  1040 0001:00003536  1060 0001:0000357C
+  1061 0001:0000357F  1062 0001:00003588  1063 0001:00003594  1066 0001:00003598
+  1067 0001:0000359E  1069 0001:000035A2  1070 0001:000035A4  1071 0001:000035BB
+  1072 0001:000035C0  1074 0001:000035C4  1079 0001:000035C8  1080 0001:000035CE
+  1099 0001:000035D0  1100 0001:000035D5  1101 0001:000035DA  1102 0001:000035E3
+  1103 0001:000035EA  1104 0001:000035EE  1106 0001:000035F9  1107 0001:000035FC
+  1109 0001:00003604  1110 0001:00003630  1111 0001:00003635  1112 0001:00003640
+  1114 0001:0000364A  1115 0001:0000364C  1116 0001:00003667  1117 0001:0000367B
+  1118 0001:0000367D  1119 0001:00003685  1121 0001:0000368D  1123 0001:000036A6
+  1124 0001:000036C1  1126 0001:000036CB  1127 0001:000036D9  1129 0001:000036E3
+  1130 0001:000036E5  1131 0001:00003705  1132 0001:00003719  1133 0001:0000371B
+  1134 0001:00003723  1136 0001:00003727  1138 0001:00003735  1139 0001:00003742
+  1140 0001:0000376B  1141 0001:00003781  1143 0001:0000378E  1144 0001:00003791
+  1146 0001:00003793  1136 0001:00003794  1149 0001:000037A4  1152 0001:000037B5
+  1121 0001:000037B8  1154 0001:000037C1  1155 0001:000037CD  1156 0001:000037D9
+  1160 0001:0000380C  1161 0001:00003820  1162 0001:00003834  1166 0001:00003858
+  1167 0001:00003861  1172 0001:00003864  1173 0001:0000388D  1174 0001:0000389C
+  1175 0001:000038A1  1176 0001:000038AC  1177 0001:000038CC  1178 0001:000038EC
+  1195 0001:00003924  1196 0001:00003950  1197 0001:00003957  1198 0001:0000396A
+  1200 0001:00003972  1201 0001:0000397C  1202 0001:0000398A  1203 0001:000039A0
+  1204 0001:000039B6  1207 0001:00003A03  1208 0001:00003A1D  1209 0001:00003A2B
+  1210 0001:00003A35  1212 0001:00003A4B  1215 0001:00003A5B  1227 0001:00003AD8
+  1228 0001:00003AF2  1229 0001:00003B02  1231 0001:00003B11  1232 0001:00003B1E
+  1233 0001:00003B2A  1234 0001:00003B2F  1235 0001:00003B39  1236 0001:00003B58
+  1237 0001:00003B66  1242 0001:00003BAC  1243 0001:00003BC8  1244 0001:00003BD2
+  1245 0001:00003BDC  1246 0001:00003BE6  1247 0001:00003BF3  1248 0001:00003C00
+  1250 0001:00003C28  1251 0001:00003C53  1252 0001:00003C69  1253 0001:00003C7F
+  1254 0001:00003C81  1255 0001:00003C89  1256 0001:00003C8D  1258 0001:00003C95
+  1259 0001:00003C9D  1260 0001:00003CA1  1262 0001:00003CA9  1263 0001:00003CB1
+  1264 0001:00003CB5  1266 0001:00003CBD  1267 0001:00003CC5  1271 0001:00003CC7
+  1278 0001:00003CF0  1279 0001:00003D24  1280 0001:00003D49  1282 0001:00003D65
+  1283 0001:00003D70  1284 0001:00003D76  1285 0001:00003D8E  1286 0001:00003DA6
+  1287 0001:00003DB4  1288 0001:00003DD8  1290 0001:00003DE8  1289 0001:00003DEF
+  1291 0001:00003E1F  1293 0001:00003E4C  1296 0001:00003E69  1298 0001:00003E79
+  1328 0001:00003F2C  1330 0001:00003F4A
+
+Line numbers for VAUtils(VAUtils.pas) segment .itext
+
+  1324 0002:000000DC  1325 0002:000000F6  1327 0002:000000FB
+
+Line numbers for HRBuffers(HRBuffers.pas) segment .text
+
+   137 0001:00004290   138 0001:0000429C   139 0001:000042A1   140 0001:000042A6
+   143 0001:000042BC   144 0001:000042C7   145 0001:000042CE   146 0001:000042DA
+   151 0001:000042E8   153 0001:000042EE   155 0001:000042F4   157 0001:000042F8
+   159 0001:000042FF   160 0001:00004304   165 0001:00004308   166 0001:0000430A
+   171 0001:0000430C   175 0001:00004310   176 0001:00004315   179 0001:0000431B
+   180 0001:00004320   182 0001:0000432D   184 0001:00004334   191 0001:00004338
+   192 0001:0000433F   195 0001:00004345   196 0001:0000434F   197 0001:00004358
+   198 0001:00004363   199 0001:0000436F   200 0001:00004372   201 0001:00004377
+   203 0001:0000437E   207 0001:00004384   208 0001:00004387   211 0001:0000438E
+   212 0001:00004397   213 0001:0000439C   215 0001:000043A1   222 0001:000043A4
+   223 0001:000043A6   229 0001:000043A8   230 0001:000043BA   231 0001:000043C3
+   232 0001:000043C7   236 0001:000043E4   237 0001:000043EF   238 0001:000043FB
+   243 0001:0000440C   244 0001:00004410   249 0001:00004414   252 0001:00004419
+   253 0001:00004420   257 0001:00004427   258 0001:00004429   260 0001:0000442D
+   264 0001:00004430   265 0001:00004431   268 0001:00004436   269 0001:0000443C
+   273 0001:00004442   275 0001:00004446   280 0001:00004448   283 0001:00004450
+   284 0001:00004457   285 0001:0000445A   289 0001:00004461   290 0001:00004463
+   292 0001:00004467   296 0001:0000446C   297 0001:0000446D   300 0001:00004475
+   301 0001:0000447B   302 0001:0000447E   306 0001:00004484   308 0001:00004488
+   314 0001:0000448C   315 0001:00004494   316 0001:000044B5   322 0001:000044BC
+   323 0001:000044C4   324 0001:000044E6   329 0001:000044EC   330 0001:000044EF
+   336 0001:000044F0   337 0001:000044F6   338 0001:000044FD   342 0001:00004502
+   343 0001:0000450E   347 0001:00004515   349 0001:00004519   353 0001:0000451C
+   354 0001:0000451F   355 0001:00004526   359 0001:00004528   360 0001:00004539
+   369 0001:00004550   370 0001:00004562   371 0001:0000456B   372 0001:00004570
+   373 0001:00004577   377 0001:00004594   378 0001:0000459F   379 0001:000045AB
+   383 0001:000045BC   384 0001:000045C0   387 0001:000045C5   388 0001:000045CA
+   389 0001:000045D3   391 0001:000045DA   396 0001:000045E0   397 0001:000045E4
+   401 0001:000045E8   402 0001:000045EF   405 0001:000045F4   411 0001:00004607
+   412 0001:00004614   413 0001:00004622   416 0001:00004625   417 0001:0000462F
+   422 0001:00004635   423 0001:00004637   425 0001:0000463B   430 0001:00004640
+   440 0001:00004644   441 0001:00004656   443 0001:0000465F   444 0001:0000466B
+   445 0001:00004672   449 0001:0000468C   450 0001:00004697   451 0001:000046A3
+   459 0001:000046B4   461 0001:000046BB   463 0001:000046D9   465 0001:000046DE
+   466 0001:000046E0   469 0001:000046E5   471 0001:000046EC   472 0001:000046F2
+   466 0001:000046F3   475 0001:000046F8   480 0001:00004748   481 0001:0000474D
+   485 0001:00004750   486 0001:00004756   487 0001:00004764   498 0001:00004768
+   499 0001:00004778   502 0001:00004784   503 0001:0000478B   506 0001:00004791
+   508 0001:00004795   513 0001:00004799   514 0001:0000479E   515 0001:000047A5
+   516 0001:000047AE   518 0001:000047B9   523 0001:000047C7   525 0001:000047CE
+   527 0001:000047D9   528 0001:000047E3   529 0001:000047E9   530 0001:000047F3
+   534 0001:000047FE   535 0001:00004807   539 0001:00004810   540 0001:00004816
+   541 0001:00004825   552 0001:00004828   554 0001:00004834   557 0001:00004839
+   561 0001:0000483D   563 0001:00004844   564 0001:0000484A   558 0001:0000484B
+   568 0001:00004859   571 0001:0000485D   573 0001:0000486A   575 0001:00004873
+   577 0001:00004878   578 0001:0000487B   568 0001:0000487C   582 0001:00004880
+   583 0001:00004885   586 0001:00004894   589 0001:0000489E   590 0001:000048A4
+   591 0001:000048AA   592 0001:000048AE   596 0001:000048B5   598 0001:000048BD
+   599 0001:000048C2   609 0001:000048C8
+
+Line numbers for HRBuffers(HRBuffers.pas) segment .itext
+
+   612 0002:00000114
+
+Line numbers for HRParser(HRParser.pas) segment .text
+
+   103 0001:00004A0C   104 0001:00004A1F   105 0001:00004A30   106 0001:00004A3C
+   107 0001:00004A4D   108 0001:00004A59   109 0001:00004A5E   113 0001:00004A7C
+   114 0001:00004A87   115 0001:00004A8F   116 0001:00004A94   117 0001:00004A9C
+   118 0001:00004AA1   119 0001:00004AAD   124 0001:00004ABC   125 0001:00004AC2
+   130 0001:00004AC4   131 0001:00004ACC   136 0001:00004AD0   137 0001:00004AD5
+   142 0001:00004AD8   143 0001:00004ADB   144 0001:00004AE1   148 0001:00004AE4
+   149 0001:00004AEA   150 0001:00004AEF   151 0001:00004AF4   152 0001:00004AF9
+   155 0001:00004B05   156 0001:00004B1A   157 0001:00004B1D   153 0001:00004B27
+   159 0001:00004B38   163 0001:00004B3C   164 0001:00004B3F   167 0001:00004B4B
+   168 0001:00004B5F   169 0001:00004B61   171 0001:00004B68   172 0001:00004B6B
+   165 0001:00004B75   174 0001:00004B81   178 0001:00004B84   179 0001:00004B87
+   180 0001:00004B91   183 0001:00004B9D   184 0001:00004BB1   185 0001:00004BB4
+   190 0001:00004BBA   192 0001:00004BBE   197 0001:00004BC0   198 0001:00004BC7
+   200 0001:00004BCF   203 0001:00004BD6   205 0001:00004BD9   206 0001:00004BDF
+   207 0001:00004BE5   210 0001:00004BEE   212 0001:00004BF4   213 0001:00004BFE
+   214 0001:00004C07   215 0001:00004C11   221 0001:00004C18   222 0001:00004C2A
+   223 0001:00004C33   227 0001:00004C50   228 0001:00004C5B   229 0001:00004C67
+   233 0001:00004C78   237 0001:00004C7B   239 0001:00004C89   240 0001:00004C9D
+   243 0001:00004CA2   244 0001:00004CB6   241 0001:00004CB9   246 0001:00004CC7
+   247 0001:00004CCB   251 0001:00004CCD   253 0001:00004CEB   254 0001:00004CFF
+   257 0001:00004D02   261 0001:00004D44   262 0001:00004D58   267 0001:00004D5D
+   269 0001:00004D7E   270 0001:00004D92   273 0001:00004D95   278 0001:00004D9A
+   280 0001:00004DBB   281 0001:00004DCF   255 0001:00004DD2   291 0001:00004DD7
+   292 0001:00004DDB   296 0001:00004DDD   301 0001:00004E18   302 0001:00004E2C
+   305 0001:00004E31   306 0001:00004E45   307 0001:00004E48   303 0001:00004E4C
+   314 0001:00004E5E   315 0001:00004E72   316 0001:00004E75   311 0001:00004E79
+   319 0001:00004EB6   322 0001:00004EB8   326 0001:00004EBF
+
+Line numbers for HRParser(HRParser.pas) segment .itext
+
+   329 0002:0000011C
+
+Line numbers for HRParserPas(HRParserPas.pas) segment .text
+
+    83 0001:00005038    84 0001:0000504A    85 0001:00005053    89 0001:00005070
+    90 0001:0000507B    91 0001:00005087    95 0001:00005098    99 0001:0000509B
+   102 0001:000050A9   105 0001:000050AC   108 0001:000050C0   109 0001:000050C4
+   113 0001:000050C9   115 0001:000050CD   116 0001:000050D0   120 0001:000050D5
+   121 0001:000050E9   122 0001:000050FE   103 0001:00005101   130 0001:00005103
+   133 0001:00005124   136 0001:00005128   138 0001:00005136   139 0001:0000513A
+   141 0001:0000513F   143 0001:0000515C   145 0001:00005160   146 0001:00005164
+   148 0001:00005169   149 0001:0000517D   150 0001:00005192   134 0001:00005195
+   156 0001:00005197   159 0001:000051B4   160 0001:000051B8   163 0001:000051BE
+   164 0001:000051D2   165 0001:000051E7   161 0001:000051EA   167 0001:000051F8
+   171 0001:000051FA   174 0001:00005208   177 0001:0000520B   180 0001:00005227
+   181 0001:0000522B   185 0001:0000522D   186 0001:00005231   190 0001:00005233
+   191 0001:00005247   175 0001:0000524A   196 0001:0000524C   197 0001:0000524F
+   201 0001:00005251   204 0001:0000525F   207 0001:00005264   208 0001:00005278
+   205 0001:0000527B   210 0001:0000528B   211 0001:0000528F   215 0001:00005291
+   218 0001:0000529F   221 0001:000052A4   222 0001:000052B8   219 0001:000052BB
+   224 0001:000052D7   225 0001:000052DB   228 0001:000052DD   232 0001:000052E4
+
+Line numbers for HRParserPas(HRParserPas.pas) segment .itext
+
+   235 0002:00000124
+
+Line numbers for .VAShared2006(D:\perforce\cprs\main\VA\VAShared2006.dpk) segment .itext
+
+    40 0002:0000012C
+
+Bound resource files
+
+VAShared2006.res
+VAShared2006.drf
+
+
+Program entry point at 0002:0000012C
Index: cprs/branches/HealthSevak-CPRS/VA/HRBuffers.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/HRBuffers.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/HRBuffers.pas	(revision 1676)
@@ -0,0 +1,612 @@
+//  HRBuffers v0.3.1 (03.Aug.2000)
+//  Simple buffer classes
+//  by Colin A Ridgewell
+//  
+//  Copyright (C) 1999,2000 Hayden-R Ltd
+//  http://www.haydenr.com
+//  
+//  This program is free software; you can redistribute it and/or modify it
+//  under the terms of the GNU General Public License as published by the
+//  Free Software Foundation; either version 2 of the License, or (at your
+//  option) any later version.
+//
+//  This program is distributed in the hope that it will be useful, but
+//  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+//  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+//  more details.
+//
+//  You should have received a copy of the GNU General Public License along
+//  with this program (gnu_license.htm); if not, write to the
+//
+//  Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//  
+//  To contact us via e-mail use the following addresses...
+//  
+//  bug@haydenr.u-net.com       - to report a bug
+//  support@haydenr.u-net.com   - for general support
+//  wishlist@haydenr.u-net.com  - add new requirement to wish list
+//  
+unit HRBuffers;
+
+interface
+
+uses
+  Classes, SysUtils;
+
+type
+  {Base buffer.}
+  THRBuffer=class(TObject)
+    private
+      FBuffer:PChar;
+      FSize:LongInt;
+      procedure SetSize(Value:LongInt);
+      procedure CreateBuffer(const Size:LongInt);
+      procedure ResizeBuffer(const Size:LongInt);
+      procedure FreeBuffer;
+    protected
+      function GetItems(Index:LongInt):Char; virtual;
+      procedure SetItems(Index:LongInt;Value:Char); virtual;
+    public
+      constructor Create; virtual;
+      destructor Destroy; override;
+      property Buffer:PChar read FBuffer;
+      property Size:Longint read FSize write SetSize;
+      property Items[Index:LongInt]:Char read GetItems write SetItems; default;
+    end;
+
+  {Base buffer with EOB.}
+  THRBufferEOB=class(THRBuffer)
+    private
+    protected
+      function GetEOB:Boolean; virtual;
+    public
+      property EOB:Boolean read GetEOB;
+    end;
+
+
+  {Buffer for holding a series of char.}
+  THRBufferChar=class(THRBufferEOB)
+    private
+      FEOB:Boolean;
+      FPosition:Longint;
+    protected
+      function GetEOB:Boolean; override;
+      function GetItems(Index:LongInt):Char; override;
+      procedure SetItems(Index:LongInt;Value:Char); override;
+      function GetAsPChar:PChar;
+      procedure SetAsPChar(Value:PChar);
+      function GetAsString:string;
+      procedure SetAsString(Value:string);
+    public
+      constructor Create; override;
+      destructor Destroy; override;
+      property Buffer;
+      property Position:Longint read FPosition write FPosition;
+      procedure Write(const Value:Char);
+      function Read:Char;
+      procedure WritePChar(const Str:PChar);
+      procedure WriteString(const Str:String);
+      property AsPChar:PChar read GetAsPChar write SetAsPChar;
+      property AsString:string read GetAsString write SetAsString;
+    end;
+
+
+  {Buffer for reading from a stream.}
+  THRBufferStream=class(THRBufferEOB)
+    private
+      FEOB:Boolean;
+      FStream:TStream;
+      FStreamSize:Longint;
+      FFirstPosInBuffer:LongInt;
+    protected
+      function GetEOB:Boolean; override;
+      function GetItems(Index:LongInt):Char; override;
+      procedure SetItems(Index:LongInt;Value:Char); override;
+      procedure SetStream(Value:TStream);
+    public
+      constructor Create; override;
+      destructor Destroy; override;
+      property Stream:TStream read FStream write SetStream;
+    end;
+
+  {A buffer containing a list of smaller buffers in one piece of contiguous memory.}
+  THRBufferList=class(THRBuffer)
+    private
+      function GetItemPos(const Index:Integer):Integer;
+      function GetCount:Integer;
+      function GetItemSize(Index:Integer):Integer;
+      procedure SetItemSize(Index:Integer;Value:Integer);
+      function GetItemBuffer(Index:Integer):PChar;
+    public
+      constructor Create; override;
+      destructor Destroy; override;
+      procedure Add(const Index,ItemSize:Integer);
+      procedure Delete(const Index:Integer);
+      property Count:Integer read GetCount;
+      property ItemSize[Index:Integer]:Integer read GetItemSize write SetItemSize;
+      property ItemBuffer[Index:Integer]:PChar read GetItemBuffer;
+    end;
+
+
+implementation
+
+
+{ T H R B u f f e r }
+
+constructor THRBuffer.Create;
+begin
+FBuffer:=nil;
+FSize:=0;
+end;
+
+destructor THRBuffer.Destroy;
+begin
+FreeBuffer;
+inherited Destroy;
+end;
+
+
+procedure THRBuffer.SetSize(Value:LongInt);
+begin
+if FBuffer=nil
+then
+  CreateBuffer(Value)
+else
+  if Value>0
+  then
+    ResizeBuffer(Value)
+  else
+    FreeBuffer;
+end;
+
+
+function THRBuffer.GetItems(Index:LongInt):Char;
+begin
+Result:=#0;
+end;
+
+
+procedure THRBuffer.SetItems(Index:LongInt;Value:Char);
+begin
+end;
+
+
+procedure THRBuffer.CreateBuffer(const Size:LongInt);
+begin
+if FBuffer=nil
+then
+  begin
+  FSize:=Size;
+  GetMem(FBuffer,FSize+1);
+  {Null terminate end of buffer.}
+  FBuffer[FSize]:=#0;
+  end;
+end;
+
+
+procedure THRBuffer.ResizeBuffer(const Size:LongInt);
+var
+  New:PChar;
+  MoveSize:LongInt;
+begin
+if FBuffer<>nil
+then
+  begin
+  GetMem(New,Size+1);
+  if FSize>Size then MoveSize:=Size else MoveSize:=FSize;
+  Move(FBuffer[0],New[0],MoveSize);
+  FreeMem(FBuffer,FSize+1);
+  FBuffer:=New;
+  FSize:=Size;
+  FBuffer[FSize]:=#0;
+  end;
+end;
+
+
+procedure THRBuffer.FreeBuffer;
+begin
+if FBuffer<>nil
+then
+  begin
+  FreeMem(FBuffer,FSize+1);
+  FBuffer:=nil;
+  FSize:=0;
+  end;
+end;
+
+
+{ T H R B u f f e r E O B }
+
+function THRBufferEOB.GetEOB:Boolean;
+begin
+Result:=True;
+end;
+
+
+{ T H R B u f f e r C h a r }
+
+constructor THRBufferChar.Create;
+begin
+inherited Create;
+FEOB:=False;
+end;
+
+
+destructor THRBufferChar.Destroy;
+begin
+inherited Destroy;
+end;
+
+
+function THRBufferChar.GetEOB:Boolean;
+begin
+Result:=FEOB;
+end;
+
+
+function THRBufferChar.GetItems(Index:LongInt):Char;
+begin
+if Index<FSize
+then
+  begin
+  Result:=FBuffer[Index];
+  FEOB:=False;
+  end
+else
+  begin
+  Result:=#0;
+  FEOB:=True;
+  end;
+end;
+
+
+procedure THRBufferChar.SetItems(Index:LongInt;Value:Char);
+begin
+if Index<FSize
+then
+  begin
+  FBuffer[Index]:=Value;
+  FEOB:=False;
+  end
+else
+  begin
+  FEOB:=True;
+  end;
+end;
+
+
+function THRBufferChar.Read:Char;
+begin
+if FPosition<FSize
+then
+  begin
+  Result:=FBuffer[FPosition];
+  Inc(FPosition);
+  FEOB:=False;
+  end
+else
+  begin
+  Result:=#0;
+  FEOB:=True;
+  end;
+end;
+
+
+procedure THRBufferChar.Write(const Value:Char);
+begin
+if FPosition<FSize
+then
+  begin
+  FBuffer[FPosition]:=Value;
+  Inc(FPosition);
+  FEOB:=False;
+  end
+else
+  begin
+  FEOB:=True;
+  end;
+end;
+
+
+procedure THRBufferChar.WritePChar(const Str:PChar);
+var
+  i:Integer;
+begin
+for i:=0 to StrLen(Str)-1 do Write(Str[i]);
+end;
+
+
+procedure THRBufferChar.WriteString(const Str:String);
+var
+  i:Integer;
+begin
+for i:=1 to Length(Str) do Write(Str[i]);
+end;
+
+
+function THRBufferChar.GetAsPChar:PChar;
+begin
+Result:=FBuffer;
+end;
+
+
+procedure THRBufferChar.SetAsPChar(Value:PChar);
+var
+  L:Integer;
+begin
+L:=StrLen(Value);
+if L<=FSize
+then
+  begin
+  {Copies from value buffer to FBuffer.}
+  StrMove(FBuffer,Value,L);
+  FEOB:=False;
+  end
+else
+  begin
+  FEOB:=True;
+  end;
+end;
+
+
+function THRBufferChar.GetAsString:string;
+begin
+Result:='';
+end;
+
+
+procedure THRBufferChar.SetAsString(Value:string);
+begin
+end;
+
+
+
+
+{ T H R B u f f e r S t r e a m }
+
+
+constructor THRBufferStream.Create;
+begin
+inherited Create;
+FStream:=nil;
+FFirstPosInBuffer:=-1;
+end;
+
+
+destructor THRBufferStream.Destroy;
+begin
+inherited Destroy;
+end;
+
+
+procedure THRBufferStream.SetStream(Value:TStream);
+begin
+if Value<>FStream
+then
+  begin
+  FStream:=Value;
+  FStreamSize:=FStream.Size;
+  FFirstPosInBuffer:=-1;
+  end;
+end;
+
+
+function THRBufferStream.GetEOB:Boolean;
+begin
+Result:=FEOB;
+end;
+
+
+function THRBufferStream.GetItems(Index:LongInt):Char;
+begin
+if Index<FStreamSize
+then
+  begin
+  if (Index>=FFirstPosInBuffer+FSize) or
+     (Index<FFirstPosInBuffer) or
+     (FFirstPosInBuffer=-1)
+  then
+    begin
+    {Read next block from stream into buffer.}
+    FStream.Position:=Index;
+    FStream.Read(FBuffer[0],FSize);
+    FFirstPosInBuffer:=Index;
+    end;
+  {Read from buffer}
+  Result:=FBuffer[Index-FFirstPosInBuffer];
+  FEOB:=False;
+  end
+else
+  begin
+  {EOB}
+  Result:=#0;
+  FEOB:=True;
+  end;
+end;
+
+
+procedure THRBufferStream.SetItems(Index:LongInt;Value:Char);
+begin
+end;
+
+
+{ T H R B u f f e r L i s t }
+
+type
+  PHRInteger=^Integer;
+
+
+constructor THRBufferList.Create;
+begin
+inherited Create;
+{Set count to zero.}
+Size:=SizeOf(Integer);
+PHRInteger(Buffer)^:=0;
+end;
+
+
+destructor THRBufferList.Destroy;
+begin
+inherited Destroy;
+end;
+
+
+function THRBufferList.GetItemPos(const Index:Integer):Integer;
+var
+  PosIndex:Integer;
+  Pos:Integer;
+  PosItemSize:Integer;
+begin
+{Check for out of bounds index.}
+Assert(Index<PHRInteger(Buffer)^,'Index out of bounds');
+{Step past count.}
+Pos:=SizeOf(Integer);
+{Loop thought items.}
+PosIndex:=0;
+while PosIndex<Index do
+  begin
+  {Get item size.}
+  PosItemSize:=PHRInteger(Buffer+Pos)^;
+  {Step over item.}
+  Pos:=Pos+SizeOf(Integer)+PosItemSize;
+  Inc(PosIndex);
+  end;
+Result:=Pos;
+end;
+
+
+function THRBufferList.GetCount:Integer;
+begin
+Result:=PHRInteger(Buffer)^;
+end;
+
+
+function THRBufferList.GetItemSize(Index:Integer):Integer;
+begin
+Result:=PHRInteger(Buffer+GetItemPos(Index))^;
+end;
+
+
+procedure THRBufferList.SetItemSize(Index:Integer;Value:Integer);
+var
+  Pos:Integer;
+  ItemSize:Integer;
+  Diff:Integer;
+  OldSize:Integer;
+  S,D:PChar;
+  C:Integer;
+begin
+Pos:=GetItemPos(Index);
+
+{Calc diff is size.}
+ItemSize:=PHRInteger(Buffer+Pos)^;
+Diff:=Value-ItemSize;
+
+{No change in size.}
+if Diff=0 then Exit;
+
+if Diff<0
+then
+  begin
+  {Shrink buffer}
+  {Move items > index down buffer.}
+  S:=Buffer+Pos+SizeOf(Integer)+ItemSize;
+  D:=S+Diff;
+  C:=Size-(Pos+SizeOf(Integer)+ItemSize);
+  Move(S[0],D[0],C);
+  {Dec buffer size}
+  Size:=Size+Diff;
+  end
+else
+  begin
+  {Grow buffer}
+  OldSize:=Size;
+  {Inc buffer size}
+  Size:=Size+Diff;
+  {Move items > index up buffer.}
+  S:=Buffer+Pos+SizeOf(Integer)+ItemSize;
+  D:=S+Diff;
+  C:=OldSize-(Pos+SizeOf(Integer)+ItemSize);
+  Move(S[0],D[0],C);
+  end;
+
+{Set items new size.}
+PHRInteger(Buffer+Pos)^:=Value;
+end;
+
+
+function THRBufferList.GetItemBuffer(Index:Integer):PChar;
+begin
+Result:=Buffer+GetItemPos(Index)+SizeOf(Integer);
+end;
+
+
+procedure THRBufferList.Add(const Index,ItemSize:Integer);
+var
+  PosIndex:Integer;
+  Pos:Integer;
+  PosItemSize:Integer;
+  OldSize:Integer;
+  S,D:PChar;
+  C:Integer;
+begin
+{Step past count.}
+Pos:=SizeOf(Integer);
+
+{Step thought list until up to index or end list.}
+PosIndex:=0;
+while (PosIndex<Index)and(PosIndex<=PHRInteger(Buffer)^-1) do
+  begin
+  {Get item size.}
+  PosItemSize:=PHRInteger(Buffer+Pos)^;
+  {Step over item.}
+  Pos:=Pos+SizeOf(Integer)+PosItemSize;
+  Inc(PosIndex);
+  end;
+
+{Pad list with empty items up to index.}
+while (PosIndex<Index) do
+  begin
+  {Add item.}
+  Size:=Size+SizeOf(Integer);
+  {Set size of item to zero.}
+  PHRInteger(Buffer+Pos)^:=0;
+  {Inc count}
+  Inc(PHRInteger(Buffer)^);
+  {Step over item.}
+  Pos:=Pos+SizeOf(Integer);
+  Inc(PosIndex);
+  end;
+
+{Resize buffer to accomodate new item.}
+OldSize:=Size;
+Size:=Size+SizeOf(Integer)+ItemSize;
+
+{Push any items > index up buffer.}
+if PosIndex<=PHRInteger(Buffer)^-1
+then
+  begin
+  S:=Buffer+Pos;
+  D:=Buffer+Pos+SizeOf(Integer)+ItemSize;
+  C:=OldSize-Pos;
+  Move(S[0],D[0],C);
+  end;
+
+{Set size of item.}
+PHRInteger(Buffer+Pos)^:=ItemSize;
+{Inc count.}
+Inc(PHRInteger(Buffer)^);
+end;
+
+
+procedure THRBufferList.Delete(const Index:Integer);
+begin
+// find index
+// get size
+// move everthing > index down by sizeof(Integer) + index[size]
+// dec buffer size by sizeof(Integer) + index[size]
+// dec count
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/HRParser.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/HRParser.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/HRParser.pas	(revision 1676)
@@ -0,0 +1,330 @@
+//  HRParser v1.0.1 (25.Sep.2000)
+//  Simple and fast parser classes.
+//  by Colin A Ridgewell
+//  
+//  Copyright (C) 1999,2000 Hayden-R Ltd
+//  http://www.haydenr.com
+//  
+//  This program is free software; you can redistribute it and/or modify it
+//  under the terms of the GNU General Public License as published by the
+//  Free Software Foundation; either version 2 of the License, or (at your
+//  option) any later version.
+//
+//  This program is distributed in the hope that it will be useful, but
+//  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+//  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+//  more details.
+//
+//  You should have received a copy of the GNU General Public License along
+//  with this program (gnu_license.htm); if not, write to the
+//
+//  Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//  
+//  To contact us via e-mail use the following addresses...
+//  
+//  bug@haydenr.u-net.com       - to report a bug
+//  support@haydenr.u-net.com   - for general support
+//  wishlist@haydenr.u-net.com  - add new requirement to wish list
+//  
+unit HRParser;
+
+interface
+
+uses
+  Classes, SysUtils, HRBuffers;
+
+type
+  THRTokenType = Byte;
+
+const
+  HR_PARSER_STREAM_BUFFER_SIZE = 2048; {bytes}
+  HR_PARSER_TOKEN_BUFFER_SIZE = 1024; {bytes}
+
+  {THRParser tokens}
+  HR_TOKEN_NIL = 0;
+  HR_TOKEN_EOF = 1;
+  HR_TOKEN_CHAR = 2;
+
+  {THRParserText tokens}
+  HR_TOKEN_TEXT_SPACE = 3;
+  HR_TOKEN_TEXT_SYMBOL = 4;
+  HR_TOKEN_TEXT_INTEGER = 5;
+  HR_TOKEN_TEXT_FLOAT = 6;
+
+type
+  THRToken = record
+    Token: PChar;
+    TokenType: THRTokenType;
+    SourcePos: Longint;
+    Line: Longint;
+    LinePos: Integer;
+    end;
+
+  THRParser = class( TObject )
+  private
+    function GetSource: TStream;
+    procedure SetSource(Value: TStream);
+    procedure SetSourcePos(Value: LongInt);
+  protected
+    FSourceBuf: THRBufferStream;
+    FSourcePos: LongInt;
+    FLine: Longint;
+    FLineStartSourcePos: Longint;
+    FTokenBuf: THRBufferChar;
+    FToken: THRToken;
+    procedure IncLine;
+    procedure SkipToSourcePos(const Pos: Longint);
+    procedure SkipBlanks;
+    procedure GetNextToken; virtual;
+  public
+    constructor Create; virtual;
+    destructor Destroy; override;
+    property Source: TStream read GetSource write SetSource;
+    property SourcePos: Longint read FSourcePos write SetSourcePos;
+    property Token: THRToken read FToken;
+    function NextToken: THRToken;
+  end;
+
+  THRParserText = class( THRParser )
+  private
+  protected
+    procedure GetNextToken; override;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+  end;
+
+implementation
+
+
+{ T H R P a r s e r }
+
+constructor THRParser.Create;
+begin
+  FSourceBuf := THRBufferStream.Create;
+  FSourceBuf.Size := HR_PARSER_STREAM_BUFFER_SIZE;
+  FTokenBuf := THRBufferChar.Create;
+  FTokenBuf.Size := HR_PARSER_TOKEN_BUFFER_SIZE;
+  FSourcePos := 0;
+end;
+
+
+destructor THRParser.Destroy;
+begin
+  FTokenBuf.Free;
+  FTokenBuf := nil;
+  FSourceBuf.Free;
+  FSourceBuf := nil;
+  inherited Destroy;
+end;
+
+
+function THRParser.GetSource: TStream;
+begin
+  Result := FSourceBuf.Stream;
+end;
+
+
+procedure THRParser.SetSource(Value: TStream);
+begin
+  FSourceBuf.Stream := Value;
+end;
+
+
+procedure THRParser.SetSourcePos(Value: LongInt);
+begin
+  SkipToSourcePos( Value );
+end;
+
+
+procedure THRParser.IncLine;
+begin
+ Inc( FLine );
+ FLineStartSourcePos := FSourcePos;
+end;
+
+
+procedure THRParser.SkipToSourcePos(const Pos: Longint);
+begin
+  FSourcePos := 0;
+  FLine := 0;
+  FLineStartSourcePos := 0;
+  FSourceBuf[ FSourcePos ];
+  while not FSourceBuf.EOB and ( FSourcePos < Pos ) do
+  begin
+    if FSourceBuf[ FSourcePos ] = #10 then IncLine;
+    Inc( FSourcePos );
+    FSourceBuf[ FSourcePos ];
+  end;
+end;
+
+
+procedure THRParser.SkipBlanks;
+begin
+  FSourceBuf[ FSourcePos ];
+  while not FSourceBuf.EOB do
+  begin
+    case FSourceBuf[ FSourcePos ] of
+      #32..#255 : Exit;
+      #10 : IncLine;
+    end;
+    Inc( FSourcePos );
+    FSourceBuf[ FSourcePos ];
+  end;
+end;
+
+
+procedure THRParser.GetNextToken;
+begin
+  FSourceBuf[ FSourcePos ];
+  if not FSourceBuf.EOB then
+  begin
+    {single char}
+    FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+    Inc( FSourcePos );
+    FToken.TokenType := HR_TOKEN_CHAR;
+  end
+  else
+  begin
+    {end of buffer}
+    FToken.TokenType := HR_TOKEN_EOF;
+  end;
+end;
+
+
+
+function THRParser.NextToken: THRToken;
+begin
+  FTokenBuf.Position := 0;
+
+  SkipBlanks;
+
+  {store start pos of token}
+  with FToken do
+  begin
+    SourcePos := FSourcePos;
+    Line := FLine;
+    LinePos := FSourcePos - FLineStartSourcePos;
+  end;
+
+  GetNextToken;
+
+  FTokenBuf.Write( #0 ); {null terminate.}
+  FToken.Token := FTokenBuf.Buffer;
+  Result := FToken;
+end;
+
+
+{ T H R P a r s e r T e x t }
+
+constructor THRParserText.Create;
+begin
+  inherited Create;
+end;
+
+
+destructor THRParserText.Destroy;
+begin
+  inherited Destroy;
+end;
+
+
+procedure THRParserText.GetNextToken;
+begin
+  repeat
+
+    {spaces}
+    if FSourceBuf[ FSourcePos ] = ' ' then
+    begin
+      FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+      Inc( FSourcePos );
+      while FSourceBuf[ FSourcePos ] = ' ' do
+      begin
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        Inc( FSourcePos );
+      end;
+      FToken.TokenType := HR_TOKEN_TEXT_SPACE;
+      Break;{out of repeat}
+    end;
+
+    {symbols}
+    if FSourceBuf[ FSourcePos ] in [ 'A'..'Z', 'a'..'z', '_' ] then
+    begin
+      FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+      Inc( FSourcePos );
+      while True do
+      begin
+        case FSourceBuf[ FSourcePos ] of
+
+          'A'..'Z', 'a'..'z', '0'..'9', '_' :
+          begin
+            FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+            Inc( FSourcePos );
+          end;
+
+          '''' :
+          begin{apostrophies}
+            if FSourceBuf[ FSourcePos + 1 ] in [ 'A'..'Z', 'a'..'z', '0'..'9', '_' ] then
+            begin
+              FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+              Inc( FSourcePos );
+            end
+            else
+              Break;
+          end;
+
+          '-' :
+          begin{hyphenated words}
+            if FSourceBuf[ FSourcePos + 1 ] in [ 'A'..'Z', 'a'..'z', '0'..'9', '_' ] then
+            begin
+              FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+              Inc( FSourcePos );
+            end
+            else
+              Break;
+          end;
+
+          else
+            Break;
+        end;{case}
+      end;
+      FToken.TokenType := HR_TOKEN_TEXT_SYMBOL;
+      Break;{out of repeat}
+    end;
+
+    {numbers}
+    if ( FSourceBuf[ FSourcePos ] in [ '0'..'9' ] ) or
+       ( ( FSourceBuf[ FSourcePos ] = '-' ) and ( FSourceBuf[ FSourcePos + 1 ] in [ '.', '0'..'9' ] ) ) then
+    begin
+
+      {integer numbers}
+      FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+      Inc( FSourcePos );
+      while FSourceBuf[ FSourcePos ] in [ '0'..'9' ] do
+      begin
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        Inc( FSourcePos );
+        FToken.TokenType := HR_TOKEN_TEXT_INTEGER;
+      end;
+
+      {floating point numbers}
+      while ( FSourceBuf[ FSourcePos ] in [ '0'..'9', 'e', 'E', '+', '-' ] ) or
+            ( ( FSourceBuf[ FSourcePos ] = '.') and ( FSourceBuf[ FSourcePos + 1 ] <> '.' ) ) do
+      begin
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        Inc( FSourcePos );
+        FToken.TokenType := HR_TOKEN_TEXT_FLOAT;
+      end;
+
+      Break;{out of repeat}
+    end;
+
+    inherited GetNextToken;
+    {Break;}{out of repeat}
+
+  until( True );
+end;
+
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/VA/HRParserPas.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/HRParserPas.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/HRParserPas.pas	(revision 1676)
@@ -0,0 +1,235 @@
+//  HRParserPas v1.0.1 (25.Sep.2000)
+//  Fast Pascal source code parser.
+//  by Colin A Ridgewell
+//  
+//  Copyright (C) 1999,2000 Hayden-R Ltd
+//  http://www.haydenr.com
+//  
+//  This program is free software; you can redistribute it and/or modify it
+//  under the terms of the GNU General Public License as published by the
+//  Free Software Foundation; either version 2 of the License, or (at your
+//  option) any later version.
+//
+//  This program is distributed in the hope that it will be useful, but
+//  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+//  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+//  more details.
+//
+//  You should have received a copy of the GNU General Public License along
+//  with this program (gnu_license.htm); if not, write to the
+//
+//  Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//  
+//  To contact us via e-mail use the following addresses...
+//  
+//  bug@haydenr.u-net.com       - to report a bug
+//  support@haydenr.u-net.com   - for general support
+//  wishlist@haydenr.u-net.com  - add new requirement to wish list
+//  
+unit HRParserPas;
+
+interface
+
+uses
+  HRParser;
+
+const
+  {THRParserPas tokens.}
+  HR_TOKEN_PAS_COMMENT_BRACE_OPEN =   7;  //e.g. {
+  HR_TOKEN_PAS_COMMENT_BRACE =        8;  //e.g. { }
+  HR_TOKEN_PAS_COMMENT_BRACKET_OPEN = 9;  //e.g. (*
+  HR_TOKEN_PAS_COMMENT_BRACKET =      10; //e.g. (* *)
+  HR_TOKEN_PAS_COMMENT_SLASH =        11; //e.g. //
+  HR_TOKEN_PAS_STRING_OPEN =          12; //e.g. '
+  HR_TOKEN_PAS_STRING =               13; //e.g. ' '
+  HR_TOKEN_PAS_EMBEDDEDCHAR =         14; //e.g. #10
+  HR_TOKEN_PAS_HEX =                  15; //e.g. $A3
+
+  HR_TOKEN_PAS_DESC : Array[ 0..15 ] of PChar = (
+    'nil',
+    'eof',
+    'char',
+    'space',
+    'symbol',
+    'integer',
+    'float',
+    'comment brace open',
+    'comment brace',
+    'comment bracket open',
+    'comment bracket',
+    'comment slash',
+    'string open',
+    'string',
+    'embbeded char',
+    'hex');
+
+type
+  THRParserPas = class( THRParserText )
+  private
+  protected
+    procedure GetNextToken; override;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+  end;
+
+
+implementation
+
+
+{ T H R P a r s e r P a s }
+
+constructor THRParserPas.Create;
+begin
+  inherited Create;
+end;
+
+
+destructor THRParserPas.Destroy;
+begin
+  inherited Destroy;
+end;
+
+
+procedure THRParserPas.GetNextToken;
+begin
+  repeat
+
+    {comments} { } // - can go across multiple lines
+    if FSourceBuf[ FSourcePos ] = '{' then
+    begin
+      {move past open comment}
+      Inc( FSourcePos );
+      while True do
+      begin
+        case FSourceBuf[ FSourcePos ] of
+          #0 :
+          begin
+            FToken.TokenType := HR_TOKEN_PAS_COMMENT_BRACE_OPEN;
+            Break;{out of while}
+          end;
+          '}' :
+          begin
+            FToken.TokenType := HR_TOKEN_PAS_COMMENT_BRACE;
+            {move past close comment}
+            Inc( FSourcePos );
+            Break;{out of while}
+          end;
+          else
+          begin
+            FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+            if FSourceBuf[ FSourcePos ] = #10 then IncLine;
+            Inc( FSourcePos );
+          end;
+        end;
+      end;
+      Break;{out of repeat}
+    end;
+
+    {comments} (* *) // - can go across multiple lines
+    if ( FSourceBuf[ FSourcePos ] = '(' ) and ( FSourceBuf[ FSourcePos + 1 ] = '*' ) then
+    begin
+      {Move past open comment}
+      Inc( FSourcePos, 2 );
+      while True do
+      begin
+        if FSourceBuf[ FSourcePos ] = #0 then
+        begin
+          FToken.TokenType := HR_TOKEN_PAS_COMMENT_BRACKET_OPEN;
+          Break;{out of while}
+        end;
+        if ( ( FSourceBuf[ FSourcePos ] = '*' ) and ( FSourceBuf[ FSourcePos + 1 ] = ')' ) ) then
+        begin
+          FToken.TokenType := HR_TOKEN_PAS_COMMENT_BRACKET;
+          {move past close comment}
+          Inc( FSourcePos, 2 );
+          Break;{out of while}
+        end;
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        if FSourceBuf[ FSourcePos ] = #10 then IncLine;
+        Inc( FSourcePos );
+      end;
+      Break;{out of repeat}
+    end;
+
+    {comments} // - remainder of current line
+    if ( FSourceBuf[ FSourcePos ] = '/' ) and ( FSourceBuf[ FSourcePos + 1 ] = '/' ) then
+    begin
+      {move past open comment}
+      Inc( FSourcePos, 2 );
+      FToken.TokenType := HR_TOKEN_PAS_COMMENT_SLASH;
+      while FSourceBuf[ FSourcePos ] <> #13 do
+      begin
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        if FSourceBuf[ FSourcePos ] = #10 then IncLine;
+        Inc( FSourcePos );
+      end;
+      Break;{out of repeat}
+    end;
+
+    {quoted strings}
+    if FSourceBuf[ FSourcePos ] = '''' then
+    begin
+      {Move past open quote}
+      Inc( FSourcePos );
+      while True do
+      begin
+        case FSourceBuf[ FSourcePos ] of
+          #0, #10, #13 :
+          begin
+            FToken.TokenType := HR_TOKEN_PAS_STRING_OPEN;
+            Break;{out of while}
+          end;
+          '''' :
+          begin
+            FToken.TokenType := HR_TOKEN_PAS_STRING;
+            Break;{out of while}
+          end;
+          else
+          begin
+            FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+            Inc( FSourcePos );
+          end;
+        end;
+      end;
+      {move past close quote}
+      Inc( FSourcePos );
+      Break;{out of repeat}
+    end;
+
+    {embedded ascii eg #13}
+    if FSourceBuf[ FSourcePos ] = '#' then
+    begin
+      //FTokenBuf.Write(FSourceBuf[FSourcePos]);
+      Inc( FSourcePos );
+      while FSourceBuf[ FSourcePos ] in [ '0'..'9' ] do
+      begin
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        Inc( FSourcePos );
+      end;
+      FToken.TokenType := HR_TOKEN_PAS_EMBEDDEDCHAR;
+      Break;{out of repeat}
+    end;
+
+    {hex numbers}
+    if FSourceBuf[ FSourcePos ] = '$' then
+    begin
+      //FTokenBuf.Write(FSourceBuf[FSourcePos]);
+      Inc( FSourcePos );
+      while FSourceBuf[ FSourcePos ] in [ '0'..'9', 'A'..'F', 'a'..'f' ] do
+        begin
+        FTokenBuf.Write( FSourceBuf[ FSourcePos ] );
+        Inc( FSourcePos );
+        end;
+      FToken.TokenType := HR_TOKEN_PAS_HEX;
+      Break;{out of repeat}
+    end;
+
+    inherited GetNextToken;
+    {Break;}{out of repeat}
+
+  until( True );
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA2006Utils.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA2006Utils.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA2006Utils.pas	(revision 1676)
@@ -0,0 +1,67 @@
+unit VA2006Utils;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Controls, ComCtrls, CommCtrl;
+
+// Fixes bug in Delphi 2006, where clicking on a header control section after
+// any other section have been added or deleted could cause access violations
+procedure FixHeaderControlDelphi2006Bug(HeaderControl: THeaderControl);
+
+implementation
+
+uses
+  VAUtils;
+
+type
+  THeaderControl2006BugFixer = class(TComponent)
+  private
+    FHeaderControl: THeaderControl;
+    procedure HeaderControlMessageHandler(var Msg: TMessage; var Handled: Boolean);
+  protected
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+  public
+    constructor CreateWrapper(HeaderControl: THeaderControl);
+  end;
+
+procedure THeaderControl2006BugFixer.HeaderControlMessageHandler
+                      (var Msg: TMessage; var Handled: Boolean);
+var
+  OnSectionClick: TSectionNotifyEvent;
+begin
+  if (Msg.Msg = CN_NOTIFY) and (PHDNotify(Msg.LParam)^.Hdr.code = HDN_ITEMCLICK) then
+  begin
+    Handled := TRUE;
+    Msg.Result := 0;
+    OnSectionClick := FHeaderControl.OnSectionClick;
+    if assigned(OnSectionClick) then
+      OnSectionClick(FHeaderControl, FHeaderControl.Sections[PHDNotify(Msg.lParam)^.Item]);
+  end;
+end;
+
+procedure THeaderControl2006BugFixer.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited;
+  if (Operation = opRemove) and (AComponent = FHeaderControl) then
+  begin
+    RemoveMessageHandler(FHeaderControl, HeaderControlMessageHandler);
+    Self.Free;
+  end;
+end;
+
+constructor THeaderControl2006BugFixer.CreateWrapper(HeaderControl: THeaderControl);
+begin
+  inherited Create(nil);
+  FHeaderControl := HeaderControl;
+  FHeaderControl.FreeNotification(HeaderControl);
+  AddMessageHandler(HeaderControl, HeaderControlMessageHandler);
+end;
+
+procedure FixHeaderControlDelphi2006Bug(HeaderControl: THeaderControl);
+begin
+  THeaderControl2006BugFixer.CreateWrapper(HeaderControl);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/DeployNoCompile.bat
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/DeployNoCompile.bat	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/DeployNoCompile.bat	(revision 1676)
@@ -0,0 +1,18 @@
+if exist "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\ConfigNames.ini" del "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\ConfigNames.ini"
+if exist "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JCF" del "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JCF"
+if exist "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JSB" del "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JSB"
+if exist "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JSD" del "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JSD"
+if exist "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JSS" del "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JSS"
+if exist "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JDF" del "%appdata%\Freedom Scientific\JAWS\7.10\Settings\enu\VA508JAWS.JDF"
+
+if exist "%appdata%\Freedom Scientific\JAWS\8.0\Settings\enu\ConfigNames.ini" del "%appdata%\Freedom Scientific\JAWS\8.0\Settings\enu\ConfigNames.ini"
+if exist "%appdata%\Freedom Scientific\JAWS\8.0\Settings\enu\VA508JAWS.JCF" del "%appdata%\Freedom Scientific\JAWS\8.0\Settings\enu\VA508JAWS.JCF"
+if exist "%appdata%\Freedom Scientific\JAWS\8.0\Settings\enu\VA508JAWS.JDF" del "%appdata%\Freedom Scientific\JAWS\8.0\Settings\enu\VA508JAWS.JDF"
+
+if not exist "C:\Program Files\Vista" mkdir "C:\Program Files\Vista"
+if not exist "C:\Program Files\Vista\Common Files" mkdir "C:\Program Files\Vista\Common Files"
+
+cd ..\..\..\CPRS-Chart\JAWS Support Files
+copy /y *.* "C:\Program Files\Vista\Common Files\"
+pause
+
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/FSAPILib_TLB.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/FSAPILib_TLB.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/FSAPILib_TLB.pas	(revision 1676)
@@ -0,0 +1,320 @@
+unit FSAPILib_TLB;
+
+// ************************************************************************ //
+// WARNING                                                                    
+// -------                                                                    
+// The types declared in this file were generated from data read from a       
+// Type Library. If this type library is explicitly or indirectly (via        
+// another type library referring to this type library) re-imported, or the   
+// 'Refresh' command of the Type Library Editor activated while editing the   
+// Type Library, the contents of this file will be regenerated and all        
+// manual modifications will be lost.                                         
+// ************************************************************************ //
+
+// PASTLWTR : 1.2
+// File generated on 5/11/2007 1:25:41 PM from Type Library described below.
+
+// ************************************************************************  //
+// Type Lib: C:\Program Files\Freedom Scientific\Shared\fsapi\1.0\FSAPI.dll (1)
+// LIBID: {F152C4EF-B92F-4139-A901-E8F1E28CC8E0}
+// LCID: 0
+// Helpfile: 
+// HelpString: FSAPI 1.0 Type Library
+// DepndLst: 
+//   (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
+// Errors:
+//   Error creating palette bitmap of (TJawsApi) : Server C:\Program Files\Freedom Scientific\Shared\fsapi\1.0\fsapi.dll contains no icons
+// ************************************************************************ //
+// *************************************************************************//
+// NOTE:                                                                      
+// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties  
+// which return objects that may need to be explicitly created via a function 
+// call prior to any access via the property. These items have been disabled  
+// in order to prevent accidental use from within the object inspector. You   
+// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
+// removing them from the $IFDEF blocks. However, such items must still be    
+// programmatically created via a method of the appropriate CoClass before    
+// they can be used.                                                          
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
+{$WARN SYMBOL_PLATFORM OFF}
+{$WRITEABLECONST ON}
+{$VARPROPSETTER ON}
+interface
+
+uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
+  
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:        
+//   Type Libraries     : LIBID_xxxx                                      
+//   CoClasses          : CLASS_xxxx                                      
+//   DISPInterfaces     : DIID_xxxx                                       
+//   Non-DISP interfaces: IID_xxxx                                        
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  FSAPILibMajorVersion = 1;
+  FSAPILibMinorVersion = 0;
+
+  LIBID_FSAPILib: TGUID = '{F152C4EF-B92F-4139-A901-E8F1E28CC8E0}';
+
+  IID_IJawsApi: TGUID = '{123DEDB4-2CF6-429C-A2AB-CC809E5516CE}';
+  CLASS_JawsApi: TGUID = '{CCE5B1E5-B2ED-45D5-B09F-8EC54B75ABF4}';
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary                    
+// *********************************************************************//
+  IJawsApi = interface;
+  IJawsApiDisp = dispinterface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library                       
+// (NOTE: Here we map each CoClass to its Default Interface)              
+// *********************************************************************//
+  JawsApi = IJawsApi;
+
+
+// *********************************************************************//
+// Interface: IJawsApi
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {123DEDB4-2CF6-429C-A2AB-CC809E5516CE}
+// *********************************************************************//
+  IJawsApi = interface(IDispatch)
+    ['{123DEDB4-2CF6-429C-A2AB-CC809E5516CE}']
+    function RunScript(const ScriptName: WideString): WordBool; safecall;
+    function SayString(const StringToSpeak: WideString; bFlush: WordBool): WordBool; safecall;
+    procedure StopSpeech; safecall;
+    function Enable(vbNoDDIHooks: WordBool): WordBool; safecall;
+    function Disable: WordBool; safecall;
+    function RunFunction(const FunctionName: WideString): WordBool; safecall;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IJawsApiDisp
+// Flags:     (4416) Dual OleAutomation Dispatchable
+// GUID:      {123DEDB4-2CF6-429C-A2AB-CC809E5516CE}
+// *********************************************************************//
+  IJawsApiDisp = dispinterface
+    ['{123DEDB4-2CF6-429C-A2AB-CC809E5516CE}']
+    function RunScript(const ScriptName: WideString): WordBool; dispid 1;
+    function SayString(const StringToSpeak: WideString; bFlush: WordBool): WordBool; dispid 2;
+    procedure StopSpeech; dispid 3;
+    function Enable(vbNoDDIHooks: WordBool): WordBool; dispid 4;
+    function Disable: WordBool; dispid 5;
+    function RunFunction(const FunctionName: WideString): WordBool; dispid 6;
+  end;
+
+// *********************************************************************//
+// The Class CoJawsApi provides a Create and CreateRemote method to          
+// create instances of the default interface IJawsApi exposed by              
+// the CoClass JawsApi. The functions are intended to be used by             
+// clients wishing to automate the CoClass objects exposed by the         
+// server of this typelibrary.                                            
+// *********************************************************************//
+  CoJawsApi = class
+    class function Create: IJawsApi;
+    class function CreateRemote(const MachineName: string): IJawsApi;
+  end;
+
+
+// *********************************************************************//
+// OLE Server Proxy class declaration
+// Server Object    : TJawsApi
+// Help String      : JawsApi Class
+// Default Interface: IJawsApi
+// Def. Intf. DISP? : No
+// Event   Interface: 
+// TypeFlags        : (2) CanCreate
+// *********************************************************************//
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  TJawsApiProperties= class;
+{$ENDIF}
+  TJawsApi = class(TOleServer)
+  private
+    FIntf: IJawsApi;
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    FProps: TJawsApiProperties;
+    function GetServerProperties: TJawsApiProperties;
+{$ENDIF}
+    function GetDefaultInterface: IJawsApi;
+  protected
+    procedure InitServerData; override;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor  Destroy; override;
+    procedure Connect; override;
+    procedure ConnectTo(svrIntf: IJawsApi);
+    procedure Disconnect; override;
+    function RunScript(const ScriptName: WideString): WordBool;
+    function SayString(const StringToSpeak: WideString; bFlush: WordBool): WordBool;
+    procedure StopSpeech;
+    function Enable(vbNoDDIHooks: WordBool): WordBool;
+    function Disable: WordBool;
+    function RunFunction(const FunctionName: WideString): WordBool;
+    property DefaultInterface: IJawsApi read GetDefaultInterface;
+  published
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+    property Server: TJawsApiProperties read GetServerProperties;
+{$ENDIF}
+  end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+// *********************************************************************//
+// OLE Server Properties Proxy Class
+// Server Object    : TJawsApi
+// (This object is used by the IDE's Property Inspector to allow editing
+//  of the properties of this server)
+// *********************************************************************//
+ TJawsApiProperties = class(TPersistent)
+  private
+    FServer:    TJawsApi;
+    function    GetDefaultInterface: IJawsApi;
+    constructor Create(AServer: TJawsApi);
+  protected
+  public
+    property DefaultInterface: IJawsApi read GetDefaultInterface;
+  published
+  end;
+{$ENDIF}
+
+
+procedure Register;
+
+resourcestring
+  dtlServerPage = 'VA 508';
+
+  dtlOcxPage = 'VA 508';
+
+implementation
+
+uses ComObj;
+
+class function CoJawsApi.Create: IJawsApi;
+begin
+  Result := CreateComObject(CLASS_JawsApi) as IJawsApi;
+end;
+
+class function CoJawsApi.CreateRemote(const MachineName: string): IJawsApi;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_JawsApi) as IJawsApi;
+end;
+
+procedure TJawsApi.InitServerData;
+const
+  CServerData: TServerData = (
+    ClassID:   '{CCE5B1E5-B2ED-45D5-B09F-8EC54B75ABF4}';
+    IntfIID:   '{123DEDB4-2CF6-429C-A2AB-CC809E5516CE}';
+    EventIID:  '';
+    LicenseKey: nil;
+    Version: 500);
+begin
+  ServerData := @CServerData;
+end;
+
+procedure TJawsApi.Connect;
+var
+  punk: IUnknown;
+begin
+  if FIntf = nil then
+  begin
+    punk := GetServer;
+    Fintf:= punk as IJawsApi;
+  end;
+end;
+
+procedure TJawsApi.ConnectTo(svrIntf: IJawsApi);
+begin
+  Disconnect;
+  FIntf := svrIntf;
+end;
+
+procedure TJawsApi.DisConnect;
+begin
+  if Fintf <> nil then
+  begin
+    FIntf := nil;
+  end;
+end;
+
+function TJawsApi.GetDefaultInterface: IJawsApi;
+begin
+  if FIntf = nil then
+    Connect;
+  Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
+  Result := FIntf;
+end;
+
+constructor TJawsApi.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps := TJawsApiProperties.Create(Self);
+{$ENDIF}
+end;
+
+destructor TJawsApi.Destroy;
+begin
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+  FProps.Free;
+{$ENDIF}
+  inherited Destroy;
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+function TJawsApi.GetServerProperties: TJawsApiProperties;
+begin
+  Result := FProps;
+end;
+{$ENDIF}
+
+function TJawsApi.RunScript(const ScriptName: WideString): WordBool;
+begin
+  Result := DefaultInterface.RunScript(ScriptName);
+end;
+
+function TJawsApi.SayString(const StringToSpeak: WideString; bFlush: WordBool): WordBool;
+begin
+  Result := DefaultInterface.SayString(StringToSpeak, bFlush);
+end;
+
+procedure TJawsApi.StopSpeech;
+begin
+  DefaultInterface.StopSpeech;
+end;
+
+function TJawsApi.Enable(vbNoDDIHooks: WordBool): WordBool;
+begin
+  Result := DefaultInterface.Enable(vbNoDDIHooks);
+end;
+
+function TJawsApi.Disable: WordBool;
+begin
+  Result := DefaultInterface.Disable;
+end;
+
+function TJawsApi.RunFunction(const FunctionName: WideString): WordBool;
+begin
+  Result := DefaultInterface.RunFunction(FunctionName);
+end;
+
+{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
+constructor TJawsApiProperties.Create(AServer: TJawsApi);
+begin
+  inherited Create;
+  FServer := AServer;
+end;
+
+function TJawsApiProperties.GetDefaultInterface: IJawsApi;
+begin
+  Result := FServer.DefaultInterface;
+end;
+
+{$ENDIF}
+
+procedure Register;
+begin
+  RegisterComponents(dtlServerPage, [TJawsApi]);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.bdsproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.bdsproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.bdsproj	(revision 1676)
@@ -0,0 +1,183 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{4F206385-C253-446E-B839-CB6A9C7B6F8E}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">JAWS.dpr</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">0</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">3</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">16384</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription"></Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir">..\..\..\CPRS-Chart\JAWS Support Files</Directories>
+			<Directories Name="UnitOutputDir">..\..\..\dcu</Directories>
+			<Directories Name="PackageDLLOutputDir"></Directories>
+			<Directories Name="PackageDCPOutputDir"></Directories>
+			<Directories Name="SearchPath">...;..\;$(BDS)\lib</Directories>
+			<Directories Name="Packages">vcl;vclx;dbrtl;Rave65VCL;bdertl;rtl;vcldb;adortl;dbxcds;dbexpress;vclib;ibxpress;xmlrtl;vclactnband;inet;IntrawebDB_80_100;Intraweb_80_100;vclie;inetdbbde;inetdbxpress;IndyCore;IndySystem;dclOfficeXP;VclSmp;soaprtl;dsnap;IndyProtocols;teeui;teedb;tee;vcldbx;XWB_R2006</Directories>
+			<Directories Name="Conditionals"></Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams"></Parameters>
+			<Parameters Name="HostApplication">D:\perforce\cprs\main\ReaderProblems\FreedomDemo\FreedomDemo.exe</Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir"></Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">10</VersionInfo>
+			<VersionInfo Name="Release">0</VersionInfo>
+			<VersionInfo Name="Build">0</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1033</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.10.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments"></VersionInfoKeys>
+		</VersionInfoKeys>  
+    
+    
+    
+    <Excluded_Packages>
+      <Excluded_Packages Name="D:\perforce\cprs\main\Packages\ORDateLib2006.bpl">CPRS Date/Time Dialogs</Excluded_Packages>
+    </Excluded_Packages>
+  </Delphi.Personality>
+	<StarTeamAssociation></StarTeamAssociation>
+	<StarTeamNonRelativeFiles></StarTeamNonRelativeFiles>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.cfg	(revision 1676)
@@ -0,0 +1,45 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"..\..\..\CPRS-Chart\JAWS Support Files"
+-N0"..\..\..\dcu"
+-LE"D:\Documents and Settings\vhaislmerrij\My Documents\Borland Studio Projects\Bpl"
+-LN"D:\Documents and Settings\vhaislmerrij\My Documents\Borland Studio Projects\Bpl"
+-U"...;..\;c:\program files\borland\bds\4.0\lib"
+-O"...;..\;c:\program files\borland\bds\4.0\lib"
+-I"...;..\;c:\program files\borland\bds\4.0\lib"
+-R"...;..\;c:\program files\borland\bds\4.0\lib"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWS.dpr	(revision 1676)
@@ -0,0 +1,30 @@
+library JAWS;
+
+{ Important note about DLL memory management: ShareMem must be the
+  first unit in your library's USES clause AND your project's (select
+  Project-View Source) USES clause if your DLL exports any procedures or
+  functions that pass strings as parameters or function results. This
+  applies to all strings passed to and from your DLL--even those that
+  are nested in records and classes. ShareMem is the interface unit to
+  the BORLNDMM.DLL shared memory manager, which must be deployed along
+  with your DLL. To avoid using BORLNDMM.DLL, pass string information
+  using PChar or ShortString parameters. }
+
+uses
+  SysUtils,
+  Classes,
+  JAWSImplementation in 'JAWSImplementation.pas',
+  VAUtils in '..\..\VAUtils.pas',
+  VAClasses in '..\..\VAClasses.pas',
+  fVA508HiddenJawsMainWindow in 'fVA508HiddenJawsMainWindow.pas' {frmVA508HiddenJawsMainWindow},
+  fVA508HiddenJawsDataWindow in 'fVA508HiddenJawsDataWindow.pas' {frmVA508HiddenJawsDataWindow},
+  JAWSCommon in 'JAWSCommon.pas',
+  VA508AccessibilityConst in '..\VA508AccessibilityConst.pas',
+  FSAPILib_TLB in 'FSAPILib_TLB.pas';
+
+{$E SR}
+
+{$R *.res}
+
+begin
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSCommon.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSCommon.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSCommon.pas	(revision 1676)
@@ -0,0 +1,80 @@
+unit JAWSCommon;
+
+interface
+
+uses
+  SysUtils, Windows, Messages, Registry, StrUtils;
+
+const
+  DLL_MESSAGE_ID_NAME: PChar = 'VA 508 / Freedom Scientific - JAWS Communication Message ID';
+
+  DISPATCHER_WINDOW_CLASS = 'TfrmVA508JawsDispatcherHiddenWindow';
+  DISPATCHER_WINDOW_TITLE = 'VA 508 JAWS Dispatcher Window';
+  DISPATCHER_WINDOW_TITLE_LEN = length(DISPATCHER_WINDOW_TITLE);
+
+  DLL_MAIN_WINDOW_CLASS = 'TfrmVA508HiddenJawsMainWindow';
+  DLL_WINDOW_TITLE = 'VA 508 JAWS Window';
+  DLL_WINDOW_TITLE_LEN = length(DLL_WINDOW_TITLE);
+
+// format = prefix : varname : <index #> : +/- <data>
+  DLL_WINDOW_DELIM = ':';
+  DLL_WINDOW_OFFSET = '=';
+  DLL_WINDOW_LENGTH = ',';
+
+  DLL_CAPTION_MAX = 4090; // max num of chars per title
+  MAX_CHARS_IN_WINDOW_HANDLE = 12;
+  DLL_CAPTION_LIMIT = DLL_CAPTION_MAX - MAX_CHARS_IN_WINDOW_HANDLE;
+
+  DLL_DATA_WINDOW_CLASS = 'TfrmVA508HiddenJawsDataWindow';
+  
+  JAWS_MESSAGE_GET_DLL_WITH_FOCUS = 1;
+
+var
+  MessageID: UINT = 0;
+
+procedure ErrorCheckClassName(obj: TObject; ClassName: string);
+procedure SendReturnValue(Window: HWND; Value: Longint);
+
+implementation
+
+uses VAUtils;
+
+procedure ErrorCheckClassName(obj: TObject; ClassName: string);
+begin
+  if obj.ClassName <> ClassName then
+    Raise Exception.Create(obj.ClassName + ' should have been ' + ClassName);
+end;
+
+procedure SendReturnValue(Window: HWND; Value: Longint);
+var
+  idx1, idx2: integer;
+  header: string;
+  bump: byte;
+begin
+  header := GetWindowTitle(Window);
+  idx1 := pos(':', header);
+  if idx1 < 1 then
+    idx1 := length(header) + 1;
+  idx2 := posex(':', header, idx1+1);
+  if idx2<=idx1 then
+    idx2 := idx1+1;
+  bump := StrToIntDef(copy(header, idx1+1, idx2 - idx1 - 1), 0);
+  if bump > 254 then
+    bump := 1
+  else
+    inc(bump);
+  header := copy(header,1,idx1-1) + ':' + inttostr(bump) + ':' + IntToStr(Value);
+  SetWindowText(Window, PChar(header));
+end;
+
+procedure InitializeCommonData;
+begin
+  MessageID := RegisterWindowMessage(DLL_MESSAGE_ID_NAME);
+end;
+
+initialization
+  InitializeCommonData;
+
+finalization
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSGroup.bdsgroup
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSGroup.bdsgroup	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSGroup.bdsgroup	(revision 1676)
@@ -0,0 +1,24 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Default.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{1992F03C-288D-42C7-ADBD-9E0E94394E00}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Default.Personality>  
+    
+    <Projects>
+      <Projects Name="VA508JAWSDispatcher.exe">VA508JAWSDispatcher.bdsproj</Projects>
+      <Projects Name="JAWS.SR">JAWS.bdsproj</Projects>
+      <Projects Name="VA508Access2006.bpl">..\VA508Access2006.bdsproj</Projects>
+      <Projects Name="VAShared2006.bpl">..\..\VAShared2006.bdsproj</Projects>
+      <Projects Name="JAWSUpdate.exe">..\JAWUpdate\JAWSUpdate.bdsproj</Projects>
+      <Projects Name="FreedomDemo.exe">..\..\..\ReaderProblems\FreedomDemo\FreedomDemo.bdsproj</Projects>
+      <Projects Name="Targets">VA508JAWSDispatcher.exe JAWS.SR VA508Access2006.bpl VAShared2006.bpl JAWSUpdate.exe FreedomDemo.exe</Projects>
+    </Projects>
+    <Dependencies/>
+  </Default.Personality>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSGroup.config
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSGroup.config	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSGroup.config	(revision 1676)
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<TgConfig Version="3" SubLevelDisabled="False" />
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSImplementation.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSImplementation.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/JAWSImplementation.pas	(revision 1676)
@@ -0,0 +1,1468 @@
+unit JAWSImplementation;
+
+interface
+{ DONE -oJeremy Merrill -c508 :
+Add something that prevents overwriting of the script files if another
+app is running that's using the JAWS DLL }
+{ TODO -oJeremy Merrill -c508 : Add check in here to look at script version in JSS file }
+{ DONE -oJeremy Merrill -c508 :
+Replace registry communication with multiple windows - save strings in the window titles
+Use EnumerateChildWindows jaws script function in place of the FindWindow function
+that's being used right now.- EnumerateChildWindows with a window handle of 0
+enumerates all windows on the desktop.  Will have to use the first part of the window
+title as an ID, and the last part as the string values.  Will need to check for a maximum
+string lenght, probably have to use multiple windows for long text.
+Will also beed to have a global window shared by muiltiple instances of the JAWS.SR DLL. }
+{ DONE -oJeremy Merrill -c508 :
+Need to add version checking to TVA508AccessibilityManager component
+and JAWS.DLL.  Warning needs to display just like JAWS.DLL and JAWS. }
+uses SysUtils, Windows, Classes, Registry, StrUtils, Forms, Dialogs,
+      ExtCtrls, VAUtils, DateUtils, PSApi, IniFiles, ActiveX,
+      SHFolder, ShellAPI, VA508AccessibilityConst;
+
+{$I 'VA508ScreenReaderDLLStandard.inc'}
+
+{ DONE -oJeremy Merrill -c508 :Figure out why Delphi IDE is loading the DLL when JAWS is running  -
+probably has something to do with the VA508 package being installed -
+need to test for csDesigning some place that we're not testing for (maybe?)}
+
+exports Initialize, ShutDown, RegisterCustomBehavior, ComponentData,
+        SpeakText, IsRunning, ConfigChangePending;
+
+implementation
+
+uses fVA508HiddenJawsMainWindow, FSAPILib_TLB, ComObj;
+
+const
+//  JAWS_REQUIRED_VERSION     = '7.10.500'; in VA508AccessibilityConst unit
+  JAWS_COM_OBJECT_VERSION = '8.0.2173';
+
+	VA508_REG_PARAM_KEY = 'Software\Vista\508\JAWS';
+
+  VA508_REG_COMPONENT_CAPTION = 'Caption';
+  VA508_REG_COMPONENT_VALUE = 'Value';
+  VA508_REG_COMPONENT_CONTROL_TYPE = 'ControlType';
+  VA508_REG_COMPONENT_STATE = 'State';
+  VA508_REG_COMPONENT_INSTRUCTIONS = 'Instructions';
+  VA508_REG_COMPONENT_ITEM_INSTRUCTIONS = 'ItemInstructions';
+  VA508_REG_COMPONENT_DATA_STATUS = 'DataStatus';
+
+	VA508_ERRORS_SHOWN_STATE = 'ErrorsShown';
+
+  RELOAD_CONFIG_SCRIPT = 'VA508Reload';
+
+  SLASH = '\';
+{ TODO -oJeremy Merrill -c508 :
+Change APP_DATA so that "application data" isn't used - Windows Vista
+doesn't use this value - get data from Windows API call }
+  APP_DATA = SLASH + 'application data' + SLASH;
+  JAWS_COMMON_SCRIPT_PATH_TEXT = '\freedom scientific\jaws\';
+  JAWS_COMMON_SCRIPT_PATH_TEXT_LEN = length(JAWS_COMMON_SCRIPT_PATH_TEXT);
+
+type
+  TCompareType = (jcPrior, jcINI, jcLineItems, jcVersion, jcScriptMerge);
+
+  TFileInfo = record
+    AppFile: boolean;
+    Ext: string;
+    CompareType: TCompareType;
+    Required: boolean;
+    Compile: boolean;
+  end;
+
+const
+  JAWS_SCRIPT_NAME = 'VA508JAWS';
+
+  JAWS_SCRIPT_VERSION = 'VA508_Script_Version';
+  CompiledScriptFileExtension = '.JSB';
+  ScriptFileExtension = '.JSS';
+  ScriptDocExtension = '.JSD';
+  ConfigFileExtension = '.JCF';
+  KeyMapExtension = '.JKM';
+  DictionaryFileExtension = '.JDF';
+
+  FileInfo: array[1..6] of TFileInfo = (
+    (AppFile: FALSE; Ext: ScriptFileExtension;     CompareType: jcVersion;     Required: TRUE;  Compile: TRUE),
+    (AppFile: FALSE; Ext: ScriptDocExtension;      CompareType: jcPrior;       Required: TRUE;  Compile: FALSE),
+    (AppFile: TRUE;  Ext: ScriptFileExtension;     CompareType: jcScriptMerge; Required: TRUE;  Compile: TRUE),
+    (AppFile: TRUE;  Ext: ConfigFileExtension;     CompareType: jcINI;         Required: TRUE;  Compile: FALSE),
+    (AppFile: TRUE;  Ext: DictionaryFileExtension; CompareType: jcLineItems;   Required: FALSE; Compile: FALSE),
+    (AppFile: TRUE;  Ext: KeyMapExtension;         CompareType: jcINI;         Required: FALSE; Compile: FALSE));
+
+  JAWS_VERSION_ERROR = ERROR_INTRO + 
+    'The Accessibility Framework can only communicate with JAWS ' + JAWS_REQUIRED_VERSION + CRLF +
+    'or later versions.  Please update your version of JAWS to a minimum of' + CRLF +
+    JAWS_REQUIRED_VERSION + ', or preferably the most recent release, to allow the Accessibility' + CRLF +
+    'Framework to communicate with JAWS.  If you are getting this message' + CRLF +
+    'and you already have a compatible version of JAWS, please contact your' + CRLF +
+    'system administrator, and request that they run, with administrator rights,' + CRLF +
+    'the JAWSUpdate application located in the \Program Files\VistA\' + CRLF +
+    'Common Files directory. JAWSUpdate is not required for JAWS' + CRLF +
+    'versions ' + JAWS_COM_OBJECT_VERSION + ' and above.' + CRLF;
+
+  JAWS_FILE_ERROR = ERROR_INTRO +
+    'The JAWS interface with the Accessibility Framework requires the ability' + CRLF +
+    'to write files to the hard disk, but the following error is occurring trying to' + CRLF +
+    'write to the disk:' + CRLF + '%s' + CRLF +
+    'Please contact your system administrator in order to ensure that your ' + CRLF +
+    'security privileges allow you to write files to the hard disk.' + CRLF +
+    'If you are sure you have these privileges, your hard disk may be full.  Until' + CRLF +
+    'this problem is resolved, the Accessibility Framework will not be able to' + CRLF +
+    'communicate with JAWS.';
+
+  JAWS_USER_MISSMATCH_ERROR = ERROR_INTRO +
+    'An error has been detected in the state of JAWS that will not allow the' + CRLF +
+    'Accessibility Framework to communicate with JAWS until JAWS is shut' + CRLF +
+    'down and restarted.  Please restart JAWS at this time.';
+
+  DLL_VERSION_ERROR = ERROR_INTRO +
+    'The Accessibility Framework is at version %s, but the required JAWS' + CRLF +
+    'support files are only at version %s.  The new support files should have' + CRLF +
+    'been released with the latest version of the software you are currently' + CRLF +
+    'running.  The Accessibility Framework will not be able to communicate' + CRLF +
+    'with JAWS until these support files are installed.  Please contact your' + CRLF +
+    'system administrator for assistance.';
+
+  JAWS_ERROR_VERSION = 1;
+  JAWS_ERROR_FILE_IO = 2;
+  JAWS_ERROR_USER_PROBLEM = 3;
+  DLL_ERROR_VERSION = 4;
+
+  JAWS_ERROR_COUNT = 4;
+
+  JAWS_RELOAD_DELAY = 500;
+
+var
+  JAWSErrorMessage: array[1..JAWS_ERROR_COUNT] of string = (JAWS_VERSION_ERROR, JAWS_FILE_ERROR,
+         JAWS_USER_MISSMATCH_ERROR, DLL_VERSION_ERROR);
+         
+  JAWSErrorsShown: array[1..JAWS_ERROR_COUNT] of boolean  = (FALSE, FALSE, FALSE, FALSE);
+
+type
+  TJAWSSayString = function(StringToSpeak: PChar; Interrupt: BOOL): BOOL; stdcall;
+  TJAWSRunScript = function(ScriptName: PChar): BOOL; stdcall;
+
+  TStartupID = record
+    Handle: HWND;
+    InstanceID: Integer;
+    MsgID: Integer;
+  end;
+
+  TJAWSManager = class
+  strict private
+    FRequiredFilesFound: boolean;
+    FMainForm: TfrmVA508HiddenJawsMainWindow;
+    FWasShutdown: boolean;
+    FJAWSFileError: string;
+    FDictionaryFileName: string;
+    FConfigFile: string;
+    FKeyMapFile: string;
+    FMasterApp: string;
+    FRootScriptFileName: string;
+    FRootScriptAppFileName: string;
+    FDefaultScriptDir: string;
+    FUserStriptDir: string;
+    FKeyMapINIFile: TINIFile;
+    FKeyMapINIFileModified: boolean;
+    FAssignedKeys: TStringList;
+    FConfigINIFile: TINIFile;
+    FConfigINIFileModified: boolean;
+    FDictionaryFile: TStringList;
+    FDictionaryFileModified: boolean;
+    FCompiler: string;
+    JAWSAPI: IJawsApi;
+  private
+    procedure ShutDown;
+    procedure MakeFileWritable(FileName: string);
+    procedure LaunchMasterApplication;
+    procedure KillINIFiles(Sender: TObject);
+    procedure ReloadConfiguration;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    class procedure ShowError(ErrorNumber: integer); overload;
+    class procedure ShowError(ErrorNumber: integer; data: array of const); overload;
+    class function GetPathFromJAWS(PathID: integer; DoLowerCase: boolean = TRUE): string;
+    class function GetJAWSWindow: HWnd;
+    class function IsRunning(HighVersion, LowVersion: Word): BOOL;
+    function Initialize(ComponentCallBackProc: TComponentDataRequestProc): BOOL;
+    procedure SendComponentData(WindowHandle: HWND; DataStatus: LongInt; Caption, Value, Data,
+            ControlType, State, Instructions, ItemInstructions: PChar);
+    procedure SpeakText(Text: PChar);
+    procedure RegisterCustomBehavior(Before, After: string; Action: integer);
+    class function JAWSVersionOK: boolean;
+    class function JAWSTalking2CurrentUser: boolean;
+    function FileErrorExists: boolean;
+    property RequiredFilesFound: boolean read FRequiredFilesFound;
+    property MainForm: TfrmVA508HiddenJawsMainWindow read FMainForm;
+ end;
+
+var
+  JAWSManager: TJAWSManager = nil;
+  DLLMessageID: UINT = 0;
+
+procedure EnsureManager;
+begin
+  if not assigned(JAWSManager) then
+    JAWSManager := TJAWSManager.Create;
+end;
+
+// Checks to see if the screen reader is currently running
+function IsRunning(HighVersion, LowVersion: Word): BOOL; stdcall;
+begin
+  Result := TJAWSManager.IsRunning(HighVersion, LowVersion);
+end;
+
+// Executed after IsRunning returns TRUE, when the DLL is accepted as the screen reader of choice
+function Initialize(ComponentCallBackProc: TComponentDataRequestProc): BOOL; stdcall;
+begin
+  EnsureManager;
+  Result := JAWSManager.Initialize(ComponentCallBackProc);
+end;
+
+// Executed when the DLL is unloaded or screen reader is no longer needed
+procedure ShutDown; stdcall;
+begin
+  if assigned(JAWSManager) then
+  begin
+    JAWSManager.ShutDown;
+    FreeAndNil(JAWSManager);
+  end;
+end;
+
+function ConfigChangePending: boolean; stdcall;
+begin
+  Result := FALSE;
+  if assigned(JAWSManager) and assigned(JAWSManager.MainForm) and
+                              (JAWSManager.MainForm.ConfigChangePending) then
+    Result := TRUE;
+end;
+
+// Returns Component Data as requested by the screen reader
+procedure ComponentData(WindowHandle: HWND;
+                                   DataStatus:   LongInt = DATA_NONE;
+                                   Caption:      PChar = nil;
+                                   Value:        PChar = nil;
+                                   Data:         PChar = nil;
+                                   ControlType:  PChar = nil;
+                                   State:        PChar = nil;
+                                   Instructions: PChar = nil;
+                                   ItemInstructions: PChar = nil); stdcall;
+begin
+  EnsureManager;
+  JAWSManager.SendComponentData(WindowHandle, DataStatus, Caption, Value, Data, ControlType, State,
+                                Instructions, ItemInstructions);
+end;
+
+// Instructs the Screen Reader to say the specified text
+procedure SpeakText(Text: PChar); stdcall;
+begin
+  EnsureManager;
+  JAWSManager.SpeakText(Text);
+end;
+
+procedure RegisterCustomBehavior(BehaviorType: integer; Before, After: PChar);
+begin
+  EnsureManager;
+  JAWSManager.RegisterCustomBehavior(Before, After, BehaviorType);
+end;
+
+{ TJAWSManager }
+
+const
+{$WARNINGS OFF} // Don't care about platform specific warning
+  NON_WRITABLE_FILE_ATTRIB = faReadOnly or faHidden;
+{$WARNINGS ON}
+  WRITABLE_FILE_ATTRIB = faAnyFile and (not NON_WRITABLE_FILE_ATTRIB);
+
+procedure TJAWSManager.MakeFileWritable(FileName: string);
+var
+  Attrib: integer;
+begin
+  {$WARNINGS OFF} // Don't care about platform specific warning
+  Attrib := FileGetAttr(FileName);
+  {$WARNINGS ON}
+  if (Attrib and NON_WRITABLE_FILE_ATTRIB) <> 0 then
+  begin
+    Attrib := Attrib and WRITABLE_FILE_ATTRIB;
+    {$WARNINGS OFF} // Don't care about platform specific warning
+    if FileSetAttr(FileName, Attrib) <> 0 then
+    {$WARNINGS ON}
+      FJAWSFileError := 'Could not change read-only attribute of file "' + FileName + '"';
+  end;
+end;
+
+var
+  JAWSMsgID: UINT = 0;
+
+const
+  JAWS_MESSAGE_ID = 'JW_GET_FILE_PATH';
+  // version is in directory after JAWS \Freedom Scientific\JAWS\*.*\...
+  JAWS_PATH_ID_APPLICATION = 0;
+  JAWS_PATH_ID_USER_SCRIPT_FILES = 1;
+  JAWS_PATH_ID_JAWS_DEFAULT_SCRIPT_FILES = 2;
+// 0 = C:\Program Files\Freedom Scientific\JAWS\8.0\jfw.INI
+// 1 = D:\Documents and Settings\vhaislmerrij\Application Data\Freedom Scientific\JAWS\8.0\USER.INI
+// 2 = D:\Documents and Settings\All Users\Application Data\Freedom Scientific\JAWS\8.0\Settings\enu\DEFAULT.SBL
+
+class function TJAWSManager.GetPathFromJAWS(PathID: integer; DoLowerCase: boolean = TRUE): string;
+var
+  atm: ATOM;
+  len: integer;
+  path: string;
+  JAWSWindow: HWnd;
+begin
+  JAWSWindow := GetJAWSWindow;
+  if JAWSMsgID = 0 then
+    JAWSMsgID := RegisterWindowMessage(JAWS_MESSAGE_ID);
+  Result := '';
+  atm := SendMessage(JAWSWindow, JAWSMsgID, PathID, 0);
+  if atm <> 0 then
+  begin
+    SetLength(path, MAX_PATH * 2);
+    len := GlobalGetAtomName(atm, PChar(path), MAX_PATH * 2);
+    GlobalDeleteAtom(atm);
+    if len > 0 then
+    begin
+      SetLength(path, len);
+      Result := ExtractFilePath(path);
+      if DoLowerCase then
+        Result := LowerCase(Result); 
+    end;
+  end;
+end;
+
+
+constructor TJAWSManager.Create;
+const
+  COMPILER_FILENAME = 'scompile.exe';
+  JAWS_APP_NAME = 'VA508APP';
+  JAWSMasterApp = 'VA508JAWSDispatcher.exe';
+
+  procedure FindCompiler;
+  var
+    compiler: string;
+
+  begin
+    compiler := GetPathFromJAWS(JAWS_PATH_ID_APPLICATION);
+    compiler := AppendBackSlash(compiler) + COMPILER_FILENAME;
+    if FileExists(compiler) then
+      FCompiler := compiler;
+  end;
+
+  procedure FindJAWSRequiredFiles;
+  var
+    Path: string;
+    i: integer;
+    FileName: string;
+    info: TFileInfo;
+
+  begin
+    SetLength(Path, MAX_PATH);
+    SetLength(Path, GetModuleFileName(HInstance, PChar(Path), Length(Path)));
+    Path := ExtractFilePath(Path);
+    Path := AppendBackSlash(Path);
+    // look for the script files in the same directory as this DLL
+    FRootScriptFileName := Path + JAWS_SCRIPT_NAME;
+    FRootScriptAppFileName := Path + JAWS_APP_NAME;
+    FRequiredFilesFound := TRUE;
+    for i := low(FileInfo) to high(FileInfo) do
+    begin
+      info := FileInfo[i];
+      if info.Required then
+      begin
+        if info.AppFile then
+          FileName := FRootScriptAppFileName + info.Ext
+        else
+          FileName := FRootScriptFileName + info.Ext;
+        if not FileExists(FileName) then
+        begin
+          FRequiredFilesFound := FALSE;
+          break;
+        end;
+      end;
+    end;
+    if FRequiredFilesFound then
+    begin
+      FMasterApp := Path + JAWSMasterApp;
+      FRequiredFilesFound := FileExists(FMasterApp);
+    end;
+    if FRequiredFilesFound then
+    begin
+      FDefaultScriptDir := lowercase(GetPathFromJAWS(JAWS_PATH_ID_JAWS_DEFAULT_SCRIPT_FILES));
+      FRequiredFilesFound := (pos(JAWS_COMMON_SCRIPT_PATH_TEXT, FDefaultScriptDir) > 0);
+    end;
+    if FRequiredFilesFound then
+    begin
+      FUserStriptDir := lowercase(GetPathFromJAWS(JAWS_PATH_ID_USER_SCRIPT_FILES));
+      FRequiredFilesFound := (pos(JAWS_COMMON_SCRIPT_PATH_TEXT, FUserStriptDir) > 0);
+    end;
+  end;
+
+begin
+  FindCompiler;
+  if FCompiler <> '' then
+    FindJAWSRequiredFiles;
+end;
+
+destructor TJAWSManager.Destroy;
+begin
+  ShutDown;
+  inherited;
+end;
+
+function TJAWSManager.FileErrorExists: boolean;
+begin
+  Result := (FJAWSFileError <> '');
+end;
+
+
+class function TJAWSManager.GetJAWSWindow: HWnd;
+const
+  VISIBLE_WINDOW_CLASS: PChar = 'JFWUI2';
+  VISIBLE_WINDOW_TITLE: PChar = 'JAWS';
+  VISIBLE_WINDOW_TITLE2: PChar = 'Remote JAWS';
+
+begin
+  Result := FindWindow(VISIBLE_WINDOW_CLASS, VISIBLE_WINDOW_TITLE);
+  if Result = 0 then
+    Result := FindWindow(VISIBLE_WINDOW_CLASS, VISIBLE_WINDOW_TITLE2);
+end;
+
+function TJAWSManager.Initialize(ComponentCallBackProc: TComponentDataRequestProc): BOOL;
+var
+  DestPath: string;
+  ScriptFileChanges: boolean;
+  LastFileUpdated: boolean;
+  CompileCommands: TStringList;
+  AppScriptNeedsFunction: boolean;
+  AppNeedsUseLine: boolean;
+  AppUseLine: string;
+  AppStartFunctionLine: integer;
+
+  procedure EnsureWindow;
+  begin
+    if not assigned(FMainForm) then
+      FMainForm := TfrmVA508HiddenJawsMainWindow.Create(nil);
+    FMainForm.ComponentDataCallBackProc := ComponentCallBackProc;
+    FMainForm.ConfigReloadProc := ReloadConfiguration;
+    FMainForm.HandleNeeded;
+    Application.ProcessMessages;
+  end;
+
+  
+  function GetVersion(FileName: string): integer;
+  var
+    list: TStringList;
+
+    p,i: integer;
+    line: string;
+    working: boolean;
+  begin
+    Result := 0;
+    list := TStringList.Create;
+    try
+      list.LoadFromFile(FileName);
+      i := 0;
+      working := TRUE;
+      while working and (i < list.Count) do
+      begin
+        line := list[i];
+        p := pos('=', line);
+        if p > 0 then
+        begin
+          if trim(copy(line,1,p-1)) = JAWS_SCRIPT_VERSION then
+          begin
+            line := trim(copy(line,p+1,MaxInt));
+            if copy(line,length(line), 1) = ',' then
+              delete(line,length(line),1);
+            Result := StrToIntDef(line, 0);
+            working := FALSE;
+          end;
+        end;
+        inc(i);
+      end;
+    finally
+      list.Free;
+    end;
+  end;
+
+  function VersionDifferent(FromFile, ToFile: string): boolean;
+  var
+    FromVersion, ToVersion: integer;
+  begin
+    FromVersion := GetVersion(FromFile);
+    ToVersion := GetVersion(ToFile);
+    Result := (FromVersion > ToVersion);
+  end;
+
+  function LineItemUpdateNeeded(FromFile, ToFile: string): boolean;
+  var
+    fromList, toList: TStringList;
+    i, idx: integer;
+    line: string;
+  begin
+    Result := FALSE;
+    fromList := TStringList.Create;
+    toList := TStringList.Create;
+    try
+      fromList.LoadFromFile(FromFile);
+      toList.LoadFromFile(toFile);
+      for i := 0 to fromList.Count - 1 do
+      begin
+        line := fromList[i];
+        if trim(line) <> '' then
+        begin
+          idx := toList.IndexOf(line);
+          if idx < 0 then
+          begin
+            Result := TRUE;
+            break;
+          end;
+        end;
+      end;
+    finally
+      toList.Free;
+      fromList.Free;
+    end;
+  end;
+
+  function INIUpdateNeeded(FromFile, ToFile: string): boolean;
+  var
+    FromINIFile, ToINIFile: TIniFile;
+    Sections, Values: TStringList;
+    i, j: integer;
+    section, key, val1, val2: string;
+  begin
+    Result := FALSE;
+    Sections := TStringList.Create;
+    Values := TStringList.Create;
+    try
+      FromINIFile := TIniFile.Create(FromFile);
+      try
+        ToINIFile := TIniFile.Create(ToFile);
+        try
+          FromINIFile.ReadSections(Sections);
+          for i := 0 to Sections.count-1 do
+          begin
+            section := Sections[i];
+            FromINIFile.ReadSectionValues(section, Values);
+            for j := 0 to Values.Count - 1 do
+            begin
+              key := Values.Names[j];
+              val1 := Values.ValueFromIndex[j];
+              val2 := ToINIFile.ReadString(Section, key, '');
+              result := (val1 <> val2);
+              if Result then
+                break;
+            end;
+            if Result then
+              break;
+          end;
+        finally
+          ToINIFile.Free;
+        end;
+      finally
+        FromINIFile.Free;
+      end;
+    finally
+      Sections.Free;
+      Values.Free;
+    end;
+  end;
+
+  function IsUseLine(data: string): boolean;
+  var
+    p: integer;
+  begin
+    Result := (copy(data,1,4) = 'use ');
+    if Result then
+    begin
+      Result := FALSE;
+      p := pos('"', data);
+      if p > 0 then
+      begin
+        p := posEX('"', data, p+1);
+        if p = length(data) then
+          Result := TRUE;
+      end;
+    end;
+  end;
+
+  function IsFunctionLine(data: string): boolean;
+  var
+    p1, p2: integer;
+    line: string;
+  begin
+    Result := FALSE;
+    line := data;
+    p1 := pos(' ', line);
+    if (p1 > 0) then
+    begin
+      if copy(line,1,p1-1) = 'script' then
+        Result := true
+      else
+      begin
+        p2 := posEx(' ', line, p1+1);
+        if p2 > 0 then
+        begin
+          line := copy(line, p1+1, p2-p1-1);
+          if (line = 'function') then
+            Result := TRUE;
+        end;
+      end;
+    end;
+  end;
+
+  function CheckForUseLineAndFunction(FromFile, ToFile: string): boolean;
+  var
+    FromData: TStringList;
+    ToData: TStringList;
+    UseLine: string;
+    i: integer;
+    line: string;
+
+  begin
+    Result := FALSE;
+    FromData := TStringList.create;
+    ToData := TStringList.create;
+    try
+      UseLine := '';
+      AppUseLine := '';
+      AppStartFunctionLine := -1;
+      FromData.LoadFromFile(FromFile);
+      for i := 0 to FromData.Count - 1 do
+      begin
+        line := lowerCase(trim(FromData[i]));
+        if (UseLine = '') and IsUseLine(line) then
+        begin
+          UseLine := line;
+          AppUseLine := FromData[i];
+        end
+        else
+        if (AppStartFunctionLine < 0) and IsFunctionLine(line) then
+          AppStartFunctionLine := i;
+        if (UseLine <> '') and (AppStartFunctionLine >= 0) then break;
+      end;
+      if (UseLine = '') or (AppStartFunctionLine < 0) then exit;
+
+      AppNeedsUseLine := TRUE;
+      AppScriptNeedsFunction := TRUE;
+      ToData.LoadFromFile(ToFile);
+      for i := 0 to ToData.Count - 1 do
+      begin
+        line := lowerCase(trim(ToData[i]));
+        if AppNeedsUseLine and IsUseLine(line) and (line = UseLine) then
+          AppNeedsUseLine := FALSE
+        else
+        if AppScriptNeedsFunction and IsFunctionLine(line) then
+            AppScriptNeedsFunction := FALSE;
+        if (not AppNeedsUseLine) and (not AppScriptNeedsFunction) then break;
+      end;
+      if AppNeedsUseLine or AppScriptNeedsFunction then
+        Result := TRUE;
+    finally
+      FromData.free;
+      ToData.free;
+    end;
+  end;
+
+  function UpdateNeeded(FromFile, ToFile: string; CompareType: TCompareType): boolean;
+  begin
+    Result := TRUE;
+    try
+      case CompareType of
+        jcScriptMerge: Result := CheckForUseLineAndFunction(FromFile, ToFile);
+        jcPrior:       Result := LastFileUpdated;
+        jcVersion:     Result := VersionDifferent(FromFile, ToFile);
+        jcINI:         Result := INIUpdateNeeded(FromFile, ToFile);
+        jcLineItems:   Result := LineItemUpdateNeeded(FromFile, ToFile);
+      end;
+    except
+      on E: Exception do
+        FJAWSFileError := E.Message;
+    end;
+  end;
+
+  procedure INIFileUpdate(FromFile, ToFile: String);
+  var
+    FromINIFile, ToINIFile: TIniFile;
+    Sections, Values: TStringList;
+    i, j: integer;
+    section, key, val1, val2: string;
+    modified: boolean;
+  begin
+    modified := FALSE;
+    Sections := TStringList.Create;
+    Values := TStringList.Create;
+    try
+      FromINIFile := TIniFile.Create(FromFile);
+      try
+        ToINIFile := TIniFile.Create(ToFile);
+        try
+          FromINIFile.ReadSections(Sections);
+          for i := 0 to Sections.count-1 do
+          begin
+            section := Sections[i];
+            FromINIFile.ReadSectionValues(section, Values);
+            for j := 0 to Values.Count - 1 do
+            begin
+              key := Values.Names[j];
+              val1 := Values.ValueFromIndex[j];
+              val2 := ToINIFile.ReadString(Section, key, '');
+              if (val1 <> val2) then
+              begin
+                ToINIFile.WriteString(section, key, val1);
+                modified := TRUE;
+              end;
+            end;
+          end;
+        finally
+          if modified then
+            ToINIFile.UpdateFile();
+          ToINIFile.Free;
+        end;
+      finally
+        FromINIFile.Free;
+      end;
+    finally
+      Sections.Free;
+      Values.Free;
+    end;
+  end;
+
+  procedure LineItemFileUpdate(FromFile, ToFile: string);
+  var
+    fromList, toList: TStringList;
+    i, idx: integer;
+    line: string;
+    modified: boolean;
+  begin
+    modified := FALSE;
+    fromList := TStringList.Create;
+    toList := TStringList.Create;
+    try
+      fromList.LoadFromFile(FromFile);
+      toList.LoadFromFile(toFile);
+      for i := 0 to fromList.Count - 1 do
+      begin
+        line := fromList[i];
+        if trim(line) <> '' then
+        begin
+          idx := toList.IndexOf(line);
+          if idx < 0 then
+          begin
+            toList.Add(line);
+            modified := TRUE;
+          end;
+        end;
+      end;
+    finally
+      if Modified then
+        toList.SaveToFile(ToFile);
+      toList.Free;
+      fromList.Free;
+    end;
+  end;
+
+  procedure DeleteCompiledFile(ToFile: string);
+  var
+    CompiledFile: string;
+  begin
+    CompiledFile := copy(ToFile, 1, length(ToFile) - length(ExtractFileExt(ToFile)));
+    CompiledFile := CompiledFile + CompiledScriptFileExtension;
+    if FileExists(CompiledFile) then
+    begin
+      MakeFileWritable(CompiledFile);
+      DeleteFile(PChar(CompiledFile));
+    end;
+  end;
+
+  function DoScriptMerge(FromFile, ToFile: string): boolean;
+  var
+    BackupFile: string;
+    FromData: TStringList;
+    ToData: TStringList;
+    i, idx: integer;
+    ExitCode: integer;
+  begin
+    Result := TRUE;
+    BackupFile := ToFile + '.BACKUP';
+    if FileExists(BackupFile) then
+    begin
+      MakeFileWritable(BackupFile);
+      DeleteFile(PChar(BackupFile));
+    end;
+    DeleteCompiledFile(ToFile);
+    CopyFile(PChar(ToFile), PChar(BackupFile), FALSE);
+    MakeFileWritable(ToFile);
+    FromData := TStringList.create;
+    ToData := TStringList.create;
+    try
+      ToData.LoadFromFile(ToFile);
+      if AppNeedsUseLine then
+        ToData.Insert(0, AppUseLine);
+      if AppScriptNeedsFunction then
+      begin
+        FromData.LoadFromFile(FromFile);
+        ToData.Insert(1,'');
+        idx := 2;
+        for i := AppStartFunctionLine to FromData.Count - 1 do
+        begin
+          ToData.Insert(idx, FromData[i]);
+          inc(idx);
+        end;
+        ToData.Insert(idx,'');
+      end;
+      if not assigned(JAWSAPI) then
+        JAWSAPI := CoJawsApi.Create;
+      ToData.SaveToFile(ToFile);
+      ExitCode := ExecuteAndWait('"' + FCompiler + '"', '"' + ToFile + '"');
+      JAWSAPI.StopSpeech;
+      if ExitCode = 0 then // compile succeeded!
+        ReloadConfiguration
+      else
+        Result := FALSE; // compile failed - just copy the new one
+    finally
+      FromData.free;
+      ToData.free;
+    end;
+  end;
+  
+  procedure UpdateFile(FromFile, ToFile: string; info: TFileInfo);
+  var
+    DoCopy: boolean;
+    error: boolean;
+    CheckOverwrite: boolean;
+  begin
+    DoCopy := FALSE;
+    if FileExists(ToFile) then
+    begin
+      MakeFileWritable(ToFile);
+      CheckOverwrite := TRUE;
+      try
+        case info.CompareType of
+          jcScriptMerge: if not DoScriptMerge(FromFile, ToFile) then DoCopy := TRUE;
+          jcPrior, jcVersion: DoCopy := TRUE;
+          jcINI: INIFileUpdate(FromFile, ToFile);
+          jcLineItems: LineItemFileUpdate(FromFile, ToFile);
+        end;
+      except
+        on E: Exception do
+          FJAWSFileError := E.Message;
+      end;
+    end
+    else
+    begin
+      CheckOverwrite := FALSE;
+      DoCopy := TRUE;
+    end;
+    if DoCopy then
+    begin
+      error := FALSE;
+      if not CopyFile(PChar(FromFile), PChar(Tofile), FALSE) then
+        error := TRUE;
+      if (not error) and (not FileExists(ToFile)) then
+        error := TRUE;
+      if (not error) and CheckOverwrite and (info.CompareType <> jcPrior) and
+        UpdateNeeded(FromFile, ToFile, info.CompareType) then
+        error := TRUE;
+      if error and (not FileErrorExists) then
+        FJAWSFileError := 'Error copying "' + FromFile + '" to' + CRLF + '"' + ToFile + '".';
+      if (not error) and (info.Compile) then
+      begin
+        DeleteCompiledFile(ToFile);
+        CompileCommands.Add('"' + ToFile + '"');
+      end;     
+    end;
+  end;
+
+  procedure EnsureJAWSScriptsAreUpToDate;
+  var
+    DestFile, FromFile, ToFile, AppName, ext: string;
+    idx1, idx2, i: integer;
+    DoUpdate: boolean;
+    info: TFileInfo;
+
+  begin
+    AppName := ExtractFileName(ParamStr(0));
+    ext := ExtractFileExt(AppName);
+    AppName := LeftStr(AppName, length(AppName) - Length(ext));
+    DestPath := '';
+    idx1 := pos(JAWS_COMMON_SCRIPT_PATH_TEXT, FUserStriptDir);
+    idx2 := pos(JAWS_COMMON_SCRIPT_PATH_TEXT, FDefaultScriptDir);
+    if (idx1 > 0) and (idx2 > 0) then
+    begin
+      DestPath := copy(FUserStriptDir,1,idx1-1) + copy(FDefaultScriptDir, idx2, MaxInt);
+      DestFile := DestPath + AppName;
+      FDictionaryFileName := DestFile + DictionaryFileExtension;
+      FConfigFile := DestFile + ConfigFileExtension;
+      FKeyMapFile := DestFile + KeyMapExtension;
+      LastFileUpdated := FALSE;
+      for i := low(FileInfo) to high(FileInfo) do
+      begin
+        info := FileInfo[i];
+        if info.AppFile then
+        begin
+          FromFile := FRootScriptAppFileName + info.Ext;
+          ToFile := DestFile + info.Ext;
+        end
+        else
+        begin
+          FromFile := FRootScriptFileName + info.Ext;
+          ToFile := DestPath + JAWS_SCRIPT_NAME + info.Ext;
+        end;
+        if not FileExists(FromFile) then continue;
+        if FileExists(ToFile) then
+        begin
+          DoUpdate := UpdateNeeded(FromFile, ToFile, info.CompareType);
+          if DoUpdate then
+            MakeFileWritable(ToFile);
+        end
+        else
+          DoUpdate := TRUE;
+        LastFileUpdated := DoUpdate;
+        if DoUpdate and (not FileErrorExists) then
+        begin
+          UpdateFile(FromFile, ToFile, info);
+          ScriptFileChanges := TRUE;
+        end;
+        if FileErrorExists then
+          break;
+      end;
+    end
+    else
+      FJAWSFileError := 'Unknown File Error'; // should never happen - condition checked previously
+  end;
+
+  procedure DoCompiles;
+  var
+    i: integer;
+  begin
+    if not assigned(JAWSAPI) then
+      JAWSAPI := CoJawsApi.Create;
+    for i := 0 to CompileCommands.Count - 1 do
+    begin
+      ExecuteAndWait('"' + FCompiler + '"', CompileCommands[i]);
+      JAWSAPI.StopSpeech;
+    end;
+    ReloadConfiguration;
+  end;
+
+begin
+  Result := FALSE;
+  ScriptFileChanges := FALSE;
+  if JAWSManager.RequiredFilesFound then
+  begin
+    FJAWSFileError := '';
+    CompileCommands := TStringList.Create;
+    try
+      EnsureJAWSScriptsAreUpToDate;
+      if CompileCommands.Count > 0 then
+        DoCompiles;
+    finally
+      CompileCommands.Free;
+    end;
+    if FileErrorExists then
+      ShowError(JAWS_ERROR_FILE_IO, [FJAWSFileError])
+    else if JAWSTalking2CurrentUser then
+    begin
+      EnsureWindow;
+      LaunchMasterApplication;
+      if ScriptFileChanges then
+      begin
+        FMainForm.ConfigReloadNeeded;
+      end;
+      Result := TRUE;
+    end;
+  end;
+end;
+
+class function TJAWSManager.IsRunning(HighVersion, LowVersion: Word): BOOL;
+
+  function ComponentVersionSupported: boolean;
+  var
+    SupportedHighVersion, SupportedLowVersion: integer;
+    FileName, newVersion, convertedVersion, currentVersion: string;
+    addr: pointer;
+
+  begin
+    addr := @TJAWSManager.IsRunning;
+    FileName := GetDLLFileName(addr);
+    currentVersion := FileVersionValue(FileName, FILE_VER_FILEVERSION);
+    VersionStringSplit(currentVersion, SupportedHighVersion, SupportedLowVersion);
+    Result := FALSE;
+    if (HighVersion < SupportedHighVersion) then
+      Result := TRUE
+    else
+    if (HighVersion = SupportedHighVersion) and
+       (LowVersion <= SupportedLowVersion) then
+      Result := TRUE;
+    if not Result then
+    begin
+      newVersion := IntToStr(HighVersion) + '.' + IntToStr(LowVersion);
+      convertedVersion := IntToStr(SupportedHighVersion) + '.' + IntToStr(SupportedLowVersion);
+      ShowError(DLL_ERROR_VERSION, [newVersion, convertedVersion]);
+    end;
+  end;
+
+begin
+  Result := (GetJAWSWindow <> 0);
+  if Result then
+    Result := ComponentVersionSupported;
+  if Result then
+    Result := JAWSVersionOK;
+  if Result then
+  begin
+    EnsureManager;
+    with JAWSManager do
+      Result := RequiredFilesFound;
+  end;
+end;
+
+class function TJAWSManager.JAWSTalking2CurrentUser: boolean;
+var
+  CurrentUserPath: string;
+  WhatJAWSThinks: string;
+
+  procedure Fix(var path: string);
+  var
+    idx: integer;
+  begin
+    idx := pos(APP_DATA, lowercase(path));
+    if idx > 0 then
+      path := LeftStr(path,idx-1);
+    idx := length(path);
+    while (idx > 0) and (path[idx] <> '\') do dec(idx);
+    delete(path,1,idx);
+  end;
+
+  function UserProblemExists: boolean;
+  begin
+    CurrentUserPath := GetSpecialFolderPath(CSIDL_APPDATA);
+    WhatJAWSThinks := GetPathFromJAWS(JAWS_PATH_ID_USER_SCRIPT_FILES, FALSE);
+    fix(CurrentUserPath);
+    fix(WhatJAWSThinks);
+    Result := (lowercase(CurrentUserPath) <> lowercase(WhatJAWSThinks));
+  end;
+
+begin
+  if UserProblemExists then
+  begin
+    ShowError(JAWS_ERROR_USER_PROBLEM);
+    Result := FALSE;
+  end
+  else
+    Result := TRUE;
+end;
+
+class function TJAWSManager.JAWSVersionOK: boolean;
+var
+  JFileVersion: string;
+  JFile: string;
+
+  function OlderVersionOKIfCOMObjectInstalled: boolean;
+  var
+    api: IJawsApi;
+  begin
+    Result := VersionOK(JAWS_REQUIRED_VERSION, JFileVersion);
+    if Result then
+    begin
+      try
+        try
+          api := CoJawsApi.Create;
+        except
+          Result := FALSE;
+        end;
+      finally
+        api := nil;
+      end;
+    end;
+  end;
+
+begin
+  JFile := GetPathFromJAWS(JAWS_PATH_ID_APPLICATION);//JAWS_PATH_ID_USER_SCRIPT_FILES);
+  JFile := AppendBackSlash(JFile) + JAWS_APPLICATION_FILENAME;
+  if FileExists(JFile) then
+  begin
+    JFileVersion := FileVersionValue(JFile, FILE_VER_FILEVERSION);
+    Result := VersionOK(JAWS_COM_OBJECT_VERSION, JFileVersion);
+    if not Result then
+      Result := OlderVersionOKIfCOMObjectInstalled;
+  end
+  else
+  begin
+// if file not found, then assume a future version where the exe was moved
+// to a different location  
+    Result := TRUE;
+  end;
+  if not Result then
+    ShowError(JAWS_ERROR_VERSION);
+end;
+
+procedure TJAWSManager.KillINIFiles(Sender: TObject);
+begin
+  if assigned(FDictionaryFile) then
+  begin
+    if FDictionaryFileModified then
+    begin
+      MakeFileWritable(FDictionaryFileName);
+      FDictionaryFile.SaveToFile(FDictionaryFileName);
+    end;
+    FreeAndNil(FDictionaryFile);
+  end;
+
+  if assigned(FConfigINIFile) then
+  begin
+    if FConfigINIFileModified then
+    begin
+      FConfigINIFile.UpdateFile;
+    end;
+    FreeAndNil(FConfigINIFile);
+  end;
+
+  if assigned(FKeyMapINIFile) then
+  begin
+    if FKeyMapINIFileModified then
+    begin
+      FKeyMapINIFile.UpdateFile;
+    end;
+    FreeAndNil(FKeyMapINIFile);
+  end;
+
+  if assigned(FAssignedKeys) then
+    FreeAndNil(FAssignedKeys);
+end;
+
+procedure TJAWSManager.LaunchMasterApplication;
+begin
+  if FileExists(FMasterApp) then
+    ShellExecute(0, PChar('open'), PChar(FMasterApp), nil,
+                    PChar(ExtractFilePath(FMasterApp)), SW_SHOWNA);
+end;
+
+
+procedure TJAWSManager.RegisterCustomBehavior(Before, After: string;
+  Action: integer);
+
+const
+  WindowClassesSection = 'WindowClasses';
+  MSAAClassesSection = 'MSAAClasses';
+  DICT_DELIM: char = Char($2E);
+  CommonKeysSection = 'Common Keys';
+  CustomCommandHelpSection = 'Custom Command Help';
+  KeyCommand = 'VA508SendCustomCommand(';
+  KeyCommandLen = length(KeyCommand);
+
+var
+  modified: boolean;
+
+  procedure Add2INIFile(var INIFile: TINIFile; var FileModified: boolean;
+                        FileName, SectionName, Data, Value: string);
+  var
+    oldValue: string;
+
+  begin
+    if not assigned(INIFile) then
+    begin
+      MakeFileWritable(FileName);
+      INIFile := TINIFile.Create(FileName);
+      FileModified := FALSE;
+    end;
+    OldValue := INIFile.ReadString(SectionName, Data, '');
+    if OldValue <> Value then
+    begin
+      INIFile.WriteString(SectionName, Data, Value);
+      modified := TRUE;
+      FileModified := TRUE;
+    end;
+  end;
+
+  procedure RemoveFromINIFile(var INIFile: TINIFile; var FileModified: boolean;
+                                FileName, SectionName, Data: string);
+  var
+    oldValue: string;
+
+  begin
+    if not assigned(INIFile) then
+    begin
+      MakeFileWritable(FileName);
+      INIFile := TINIFile.Create(FileName);
+      FileModified := FALSE;
+    end;
+    OldValue := INIFile.ReadString(SectionName, Data, '');
+    if OldValue <> '' then
+    begin
+      INIFile.DeleteKey(SectionName, Data);
+      modified := TRUE;
+      FileModified := TRUE;
+    end;
+  end;
+
+  procedure RegisterCustomClassChange;
+  begin
+    Add2INIFile(FConfigINIFile, FConfigINIFileModified, FConfigFile,
+                  WindowClassesSection, Before, After);
+  end;
+
+  procedure RegisterMSAAClassChange;
+  begin
+    Add2INIFile(FConfigINIFile, FConfigINIFileModified, FConfigFile,
+                  MSAAClassesSection, Before, '1');
+  end;
+
+  procedure RegisterCustomKeyMapping;
+  begin
+    Add2INIFile(FKeyMapINIFile, FKeyMapINIFileModified, FKeyMapFile,
+                  CommonKeysSection, Before, KeyCommand + after + ')');
+    if not assigned(FAssignedKeys) then
+      FAssignedKeys := TStringList.Create;
+    FAssignedKeys.Add(Before);
+  end;
+
+  procedure RegisterCustomKeyDescription;
+  begin
+    Add2INIFile(FConfigINIFile, FConfigINIFileModified, FConfigFile,
+                  CustomCommandHelpSection, Before, After);
+  end;
+
+  procedure DecodeLine(line: string; var before1, after1: string);
+  var
+    i, j, len: integer;
+  begin
+    before1 := '';
+    after1 := '';
+    len := length(line);
+    if (len < 2) or (line[1] <> DICT_DELIM) then exit;
+    i := 2;
+    while (i < len) and (line[i] <> DICT_DELIM) do inc(i);
+    before1 := copy(line,2,i-2);
+    j := i + 1;
+    while (j <= len) and (line[j] <> DICT_DELIM) do inc(j);
+    after1 := copy(line,i+1,j-i-1);
+  end;
+
+  procedure RegisterCustomDictionaryChange;
+  var
+    i, idx: integer;
+    line, before1, after1: string;
+    add: boolean;
+  begin
+    if not assigned(FDictionaryFile) then
+    begin
+      FDictionaryFile := TStringList.Create;
+      FDictionaryFileModified := FALSE;
+      if FileExists(FDictionaryFileName) then
+        FDictionaryFile.LoadFromFile(FDictionaryFileName);
+    end;
+
+    add := TRUE;
+    idx := -1;
+    for I := 0 to FDictionaryFile.Count - 1 do
+    begin
+      line := FDictionaryFile[i];
+      DecodeLine(line, before1, after1);
+      if (before1 = Before) then
+      begin
+        idx := i;
+        if after1 = after then
+          add := false;
+        break;
+      end;
+    end;
+    if add then
+    begin
+      line := DICT_DELIM + Before + DICT_DELIM + after + DICT_DELIM;
+      if idx < 0 then
+        FDictionaryFile.Add(line)
+      else
+        FDictionaryFile[idx] := line;
+      modified := TRUE;
+      FDictionaryFileModified := TRUE;
+    end;
+  end;
+
+  procedure RemoveComponentClass;
+  begin
+    RemoveFromINIFile(FConfigINIFile, FConfigINIFileModified, FConfigFile,
+                  WindowClassesSection, Before);
+  end;
+
+  procedure RemoveMSAAClass;
+  begin
+    RemoveFromINIFile(FConfigINIFile, FConfigINIFileModified, FConfigFile,
+                  MSAAClassesSection, Before);
+  end;
+
+  procedure PurgeKeyMappings;
+  var
+    i: integer;
+    name, value: string;
+    keys: TStringList;
+    delete: boolean;
+  begin
+    if not assigned(FKeyMapINIFile) then
+    begin
+      MakeFileWritable(FKeyMapFile);
+      FKeyMapINIFile := TINIFile.Create(FKeyMapFile);
+      FKeyMapINIFileModified := FALSE;
+    end;
+    keys := TStringList.Create;
+    try
+      FKeyMapINIFile.ReadSectionValues(CommonKeysSection, keys);
+      for i := keys.Count - 1 downto 0 do
+      begin
+        value := copy(keys.ValueFromIndex[i],1,KeyCommandLen);
+        if value = KeyCommand then
+        begin
+          name := keys.Names[i];
+          delete := (not assigned(FAssignedKeys));
+          if not delete then
+            delete := (FAssignedKeys.IndexOf(name) < 0);
+          if delete then
+          begin
+            FKeyMapINIFile.DeleteKey(CommonKeysSection, name);
+            FKeyMapINIFileModified := TRUE;
+            modified := TRUE;
+          end;
+        end;
+      end;
+    finally
+      keys.Free;
+    end;
+  end;
+
+begin
+{ TODO : check file io errors when updating config files }
+  modified := FALSE;
+  case Action of
+    BEHAVIOR_ADD_DICTIONARY_CHANGE:           RegisterCustomDictionaryChange;
+    BEHAVIOR_ADD_COMPONENT_CLASS:             RegisterCustomClassChange;
+    BEHAVIOR_ADD_COMPONENT_MSAA:              RegisterMSAAClassChange;
+    BEHAVIOR_ADD_CUSTOM_KEY_MAPPING:          RegisterCustomKeyMapping;
+    BEHAVIOR_ADD_CUSTOM_KEY_DESCRIPTION:      RegisterCustomKeyDescription;
+    BEHAVIOR_REMOVE_COMPONENT_CLASS:          RemoveComponentClass;
+    BEHAVIOR_REMOVE_COMPONENT_MSAA:           RemoveMSAAClass;
+    BEHAVIOR_PURGE_UNREGISTERED_KEY_MAPPINGS: PurgeKeyMappings;
+  end;
+  if modified and assigned(FMainForm) then
+  begin
+    FMainForm.ResetINITimer(KillINIFiles);
+    FMainForm.ConfigReloadNeeded;
+  end;
+end;
+
+procedure TJAWSManager.ReloadConfiguration;
+begin
+  if not assigned(JAWSAPI) then
+    JAWSAPI := CoJawsApi.Create;
+  JAWSAPI.RunFunction('ReloadAllConfigs');
+end;
+
+procedure TJAWSManager.SendComponentData(WindowHandle: HWND; DataStatus: LongInt; Caption, Value,
+            Data, ControlType, State, Instructions, ItemInstructions: PChar);
+
+  procedure SendRequestResponse;
+  begin
+    FMainForm.WriteData(VA508_REG_COMPONENT_CAPTION, Caption);
+    FMainForm.WriteData(VA508_REG_COMPONENT_VALUE, Value);
+    FMainForm.WriteData(VA508_REG_COMPONENT_CONTROL_TYPE, ControlType);
+    FMainForm.WriteData(VA508_REG_COMPONENT_STATE, State);
+    FMainForm.WriteData(VA508_REG_COMPONENT_INSTRUCTIONS, Instructions);
+    FMainForm.WriteData(VA508_REG_COMPONENT_ITEM_INSTRUCTIONS, ItemInstructions);
+    FMainForm.WriteData(VA508_REG_COMPONENT_DATA_STATUS, IntToStr(DataStatus));
+    FMainForm.PostData;
+  end;
+
+  procedure SendChangeEvent;
+  var
+    Event: WideString;
+  begin
+    Event := 'VA508ChangeEvent(' + IntToStr(WindowHandle)   +  ',' +
+                                   IntToStr(DataStatus)     +  ',"' +
+                                   StrPas(Caption)          + '","' +
+                                   StrPas(Value)            + '","' +
+                                   StrPas(ControlType)      + '","' +
+                                   StrPas(State)            + '","' +
+                                   StrPas(Instructions)     + '","' +
+                                   StrPas(ItemInstructions) + '"';
+    if not assigned(JAWSAPI) then
+      JAWSAPI := CoJawsApi.Create;
+    JAWSAPI.RunFunction(Event)
+  end;
+
+begin
+  if (Data <> nil) and (Length(Data) > 0) then
+  begin
+    Value := Data;
+    DataStatus := DataStatus AND DATA_MASK_DATA;
+    DataStatus := DataStatus OR DATA_VALUE;
+  end;
+  if (DataStatus and DATA_CHANGE_EVENT) <> 0 then
+  begin
+    DataStatus := DataStatus AND DATA_MASK_CHANGE_EVENT;
+    SendChangeEvent;
+  end
+  else
+    SendRequestResponse;
+end;
+
+const
+  MAX_REG_CHARS = 125; // When Jaws reads over 126 chars it returns a blank string
+  MORE_STRINGS = '+';
+  LAST_STRING = '-';
+  MAX_COUNT_KEY = 'Max';
+
+class procedure TJAWSManager.ShowError(ErrorNumber: integer);
+begin
+  ShowError(ErrorNumber, []);
+end;
+
+class procedure TJAWSManager.ShowError(ErrorNumber: integer; data: array of const);
+var
+  error: string;
+
+begin
+  if not JAWSErrorsShown[ErrorNumber] then
+  begin
+    error := JAWSErrorMessage[ErrorNumber];
+    if length(data) > 0 then
+      error := Format(error, data);
+    JAWSErrorsShown[ErrorNumber] := TRUE;
+    MessageBox(0, PChar(error), 'JAWS Accessibility Component Error',
+          MB_OK or MB_ICONERROR or MB_TASKMODAL or MB_TOPMOST);
+  end;
+end;
+
+procedure TJAWSManager.ShutDown;
+begin
+  if FWasShutdown then exit;
+  if assigned(JAWSAPI) then
+  begin
+    try
+      JAWSAPI := nil; // causes access violation
+    except
+    end;
+  end;
+  KillINIFiles(nil);
+  if assigned(FMainForm) then
+    FreeAndNil(FMainForm);
+  FWasShutdown := TRUE;
+end;
+
+procedure TJAWSManager.SpeakText(Text: PChar);
+begin
+  if not assigned(JAWSAPI) then
+    JAWSAPI := CoJawsApi.Create;
+  JAWSAPI.SayString(Text, FALSE);
+end;
+
+
+initialization
+  CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
+
+finalization
+  ShutDown;
+  CoUninitialize;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.bdsproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.bdsproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.bdsproj	(revision 1676)
@@ -0,0 +1,175 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{F4E00B56-D8FC-49CB-B9E4-F572E5BFA8CA}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">VA508JAWSDispatcher.dpr</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">0</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">3</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">16384</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription"></Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir">..\..\..\CPRS-Chart\JAWS Support Files</Directories>
+			<Directories Name="UnitOutputDir">..\..\..\dcu</Directories>
+			<Directories Name="PackageDLLOutputDir"></Directories>
+			<Directories Name="PackageDCPOutputDir"></Directories>
+			<Directories Name="SearchPath"></Directories>
+			<Directories Name="Packages">vcl;vclx;dbrtl;Rave65VCL;bdertl;rtl;vcldb;adortl;dbxcds;dbexpress;vclib;ibxpress;xmlrtl;vclactnband;inet;IntrawebDB_80_100;Intraweb_80_100;vclie;inetdbbde;inetdbxpress;IndyCore;IndySystem;dclOfficeXP;VclSmp;soaprtl;dsnap;IndyProtocols;teeui;teedb;tee;vcldbx</Directories>
+			<Directories Name="Conditionals"></Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams"></Parameters>
+			<Parameters Name="HostApplication">D:\perforce\cprs\main\ReaderProblems\FreedomDemo\FreedomDemo.exe</Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir"></Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">0</VersionInfo>
+			<VersionInfo Name="Release">0</VersionInfo>
+			<VersionInfo Name="Build">0</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1033</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments"></VersionInfoKeys>
+		</VersionInfoKeys>
+	</Delphi.Personality>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.cfg	(revision 1676)
@@ -0,0 +1,41 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"..\..\..\CPRS-Chart\JAWS Support Files"
+-N0"..\..\..\dcu"
+-LE"D:\Documents and Settings\vhaislmerrij\My Documents\Borland Studio Projects\Bpl"
+-LN"D:\Documents and Settings\vhaislmerrij\My Documents\Borland Studio Projects\Bpl"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/VA508JAWSDispatcher.dpr	(revision 1676)
@@ -0,0 +1,19 @@
+program VA508JAWSDispatcher;
+
+uses
+  Forms,
+  fVA508DispatcherHiddenWindow in 'fVA508DispatcherHiddenWindow.pas' {frmVA508JawsDispatcherHiddenWindow},
+  VAUtils in '..\..\VAUtils.pas',
+  VAClasses in '..\..\VAClasses.pas',
+  JAWSCommon in 'JAWSCommon.pas',
+  VA508AccessibilityConst in '..\VA508AccessibilityConst.pas';
+
+{$R *.res}
+
+begin
+  if AnotherInstanceRunning then exit;
+  Application.ShowMainForm := FALSE;
+  Application.Initialize;
+  Application.CreateForm(TfrmVA508JawsDispatcherHiddenWindow, frmVA508JawsDispatcherHiddenWindow);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508DispatcherHiddenWindow.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508DispatcherHiddenWindow.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508DispatcherHiddenWindow.dfm	(revision 1676)
@@ -0,0 +1,24 @@
+object frmVA508JawsDispatcherHiddenWindow: TfrmVA508JawsDispatcherHiddenWindow
+  Left = 0
+  Top = 0
+  Caption = 'Dispatcher'
+  ClientHeight = 47
+  ClientWidth = 139
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object tmrMain: TTimer
+    Interval = 30000
+    OnTimer = tmrMainTimer
+    Left = 8
+    Top = 8
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508DispatcherHiddenWindow.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508DispatcherHiddenWindow.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508DispatcherHiddenWindow.pas	(revision 1676)
@@ -0,0 +1,127 @@
+unit fVA508DispatcherHiddenWindow;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ExtCtrls;
+
+type
+  TfrmVA508JawsDispatcherHiddenWindow = class(TForm)
+    tmrMain: TTimer;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure tmrMainTimer(Sender: TObject);
+  private
+    FThreads: TStringList;
+  protected
+    procedure WndProc(var Msg: TMessage); override;
+    procedure UpdateThreadList;
+  public
+    { Public declarations }
+  end;
+
+var
+  frmVA508JawsDispatcherHiddenWindow: TfrmVA508JawsDispatcherHiddenWindow;
+
+implementation
+
+uses VAUtils, JAWSCommon;
+
+{$R *.dfm}
+
+procedure TfrmVA508JawsDispatcherHiddenWindow.FormCreate(Sender: TObject);
+begin
+  ErrorCheckClassName(Self, DISPATCHER_WINDOW_CLASS);
+  FThreads := TStringList.Create;
+  Caption := DISPATCHER_WINDOW_TITLE;
+  UpdateThreadList;
+end;
+
+procedure TfrmVA508JawsDispatcherHiddenWindow.FormDestroy(Sender: TObject);
+begin
+  FThreads.Free;
+end;
+
+procedure TfrmVA508JawsDispatcherHiddenWindow.tmrMainTimer(Sender: TObject);
+begin
+  tmrMain.Enabled := FALSE;
+  UpdateThreadList;
+  if FThreads.Count < 1 then
+    Application.Terminate
+  else
+    tmrMain.Enabled := TRUE;
+end;
+
+function WindowSearchProc(Handle: HWND; var FThreads: TStringList): BOOL; stdcall;
+var
+  cls: string;
+  test: string;
+  Thread: DWORD;
+  ThreadID: string;
+
+begin
+  cls := GetWindowClassName(Handle);
+  test := GetWindowTitle(handle);
+  if (cls = DLL_MAIN_WINDOW_CLASS) then
+  begin
+    if (copy(GetWindowTitle(Handle),1,DLL_WINDOW_TITLE_LEN) = DLL_WINDOW_TITLE) then
+    begin
+      Thread := GetWindowThreadProcessId(Handle, nil);
+      ThreadID := FastIntToHex(Thread);
+      FThreads.AddObject(ThreadID, TObject(Handle))
+    end;
+  end;
+  Result := TRUE;
+end;
+
+procedure TfrmVA508JawsDispatcherHiddenWindow.UpdateThreadList;
+begin
+  FThreads.Clear;
+  EnumWindows(@WindowSearchProc, Integer(@FThreads));
+end;
+
+procedure TfrmVA508JawsDispatcherHiddenWindow.WndProc(var Msg: TMessage);
+var
+  CurrentWindow: HWND;
+  Thread: DWORD;
+  ThreadID: string;
+  idx: integer;
+
+  procedure FindActiveWindow;
+  begin
+    CurrentWindow := GetForegroundWindow();
+    if IsWindow(CurrentWindow) then
+    begin
+      Thread := GetWindowThreadProcessId(CurrentWindow, nil);
+      ThreadID := FastIntToHex(Thread);
+      idx := FThreads.IndexOf(ThreadID);
+      if idx < 0 then
+      begin
+        UpdateThreadList;
+        idx := FThreads.IndexOf(ThreadID);
+      end;
+      if idx >= 0 then
+      begin
+        SendReturnValue(Handle, Integer(FThreads.Objects[idx]));
+      end;
+    end;
+  end;
+
+begin
+  if Msg.Msg = MessageID then
+  begin
+    Msg.Result := 1;
+    if assigned(Self) then // JAWS can detect the window before Delphi has finished creating it
+    begin
+      try
+        if Msg.WParam = JAWS_MESSAGE_GET_DLL_WITH_FOCUS then
+          FindActiveWindow;
+      except
+      end;
+    end;
+  end;
+  inherited WndProc(Msg);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsDataWindow.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsDataWindow.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsDataWindow.dfm	(revision 1676)
@@ -0,0 +1,18 @@
+object frmVA508HiddenJawsDataWindow: TfrmVA508HiddenJawsDataWindow
+  Left = 0
+  Top = 0
+  BorderIcons = []
+  Caption = 'VA 508 SR DLL Hidden Jaws Window'
+  ClientHeight = 33
+  ClientWidth = 244
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+end
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsDataWindow.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsDataWindow.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsDataWindow.pas	(revision 1676)
@@ -0,0 +1,30 @@
+unit fVA508HiddenJawsDataWindow;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, DateUtils, ComCtrls, ExtCtrls, AppEvnts;
+
+type
+  TfrmVA508HiddenJawsDataWindow = class(TForm)
+    procedure FormCreate(Sender: TObject);
+  private
+  protected
+  public
+  end;
+
+implementation
+
+uses VAUtils, JAWSCommon, VA508AccessibilityConst;
+
+{$R *.dfm}
+
+{ TfrmVA508HiddenJawsWindow }
+
+procedure TfrmVA508HiddenJawsDataWindow.FormCreate(Sender: TObject);
+begin
+  ErrorCheckClassName(Self, DLL_DATA_WINDOW_CLASS);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsMainWindow.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsMainWindow.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsMainWindow.dfm	(revision 1676)
@@ -0,0 +1,32 @@
+object frmVA508HiddenJawsMainWindow: TfrmVA508HiddenJawsMainWindow
+  Left = 0
+  Top = 0
+  Caption = 'Main Window'
+  ClientHeight = 41
+  ClientWidth = 156
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDesigned
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object ReloadTimer: TTimer
+    Enabled = False
+    Interval = 250
+    OnTimer = ReloadTimerTimer
+    Left = 8
+    Top = 8
+  end
+  object CloseINIFilesTimer: TTimer
+    Enabled = False
+    OnTimer = CloseINIFilesTimerTimer
+    Left = 64
+    Top = 8
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsMainWindow.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsMainWindow.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWS/fVA508HiddenJawsMainWindow.pas	(revision 1676)
@@ -0,0 +1,248 @@
+unit fVA508HiddenJawsMainWindow;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, Contnrs, ExtCtrls, ComObj, VA508AccessibilityConst, AppEvnts;
+
+type
+  TfrmVA508HiddenJawsMainWindow = class(TForm)
+    ReloadTimer: TTimer;
+    CloseINIFilesTimer: TTimer;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure ReloadTimerTimer(Sender: TObject);
+    procedure CloseINIFilesTimerTimer(Sender: TObject);
+  private
+    FRootCaption: string;
+    FPostWindow: HWnd;
+    FCloseFilesEvent: TNotifyEvent;
+    FData: string;
+    FVariables: string;
+    FDataWindowPool: TList;
+    FDataWindows: TObjectList;
+    FComponentDataCallBackProc: TComponentDataRequestProc;
+    FConfigChangePending: boolean;
+    FConfigReloadProc: TConfigReloadProc;
+    procedure ConverAccelChars(var text: string);
+  protected
+    procedure WndProc(var Msg: TMessage); override;
+  public
+    procedure ConfigReloadNeeded;
+    procedure WriteData(VarName, Value: string);
+    procedure PostData;
+    procedure ResetINITimer(Event: TNotifyEvent);
+    property ConfigReloadProc: TConfigReloadProc read FConfigReloadProc write FConfigReloadProc;
+    property ComponentDataCallBackProc: TComponentDataRequestProc read FComponentDataCallBackProc write FComponentDataCallBackProc;
+    property ConfigChangePending: boolean read FConfigChangePending write FConfigChangePending;
+  end;
+
+var
+  frmVA508HiddenJawsMainWindow: TfrmVA508HiddenJawsMainWindow;
+
+implementation
+
+uses JAWSCommon, fVA508HiddenJawsDataWindow, VAUtils;
+
+{$R *.dfm}
+
+procedure TfrmVA508HiddenJawsMainWindow.CloseINIFilesTimerTimer(
+  Sender: TObject);
+begin
+  CloseINIFilesTimer.Enabled := FALSE;
+  if assigned(FCloseFilesEvent) then
+    FCloseFilesEvent(Sender);
+end;
+
+procedure TfrmVA508HiddenJawsMainWindow.ConfigReloadNeeded;
+begin
+  ReloadTimer.Enabled := FALSE;
+  ReloadTimer.Enabled := TRUE;
+  FConfigChangePending := TRUE;
+end;
+
+// MSAA messes up strings with & chars
+procedure TfrmVA508HiddenJawsMainWindow.ConverAccelChars(var text: string);
+var
+  i: integer;
+  convert: boolean;
+begin
+  repeat
+    i := pos('&', text);
+    if i > 0 then
+    begin
+      convert := (i = length(text));
+      if not convert then
+        convert := not (text[i+1] in ['A'..'Z','a'..'z','0'..'9']);
+      delete(text,i,1);
+      if convert then
+        insert(' and ', text, i);      
+    end;
+  until i = 0;
+end;
+
+procedure TfrmVA508HiddenJawsMainWindow.FormCreate(Sender: TObject);
+begin
+  ErrorCheckClassName(Self, DLL_MAIN_WINDOW_CLASS);
+  FRootCaption := DLL_WINDOW_TITLE;
+  Caption := FRootCaption;
+  FDataWindowPool := TList.Create;
+  FDataWindows := TObjectList.Create;
+end;
+
+procedure TfrmVA508HiddenJawsMainWindow.FormDestroy(Sender: TObject);
+begin
+  FreeAndNil(FDataWindowPool);
+  FreeAndNil(FDataWindows);
+end;
+
+procedure TfrmVA508HiddenJawsMainWindow.ReloadTimerTimer(Sender: TObject);
+begin
+  ReloadTimer.Enabled := FALSE;
+  if assigned(FConfigReloadProc) then
+    FConfigReloadProc;
+  FConfigChangePending := FALSE;
+end;
+
+procedure TfrmVA508HiddenJawsMainWindow.ResetINITimer(Event: TNotifyEvent);
+begin
+  FCloseFilesEvent := Event;
+  CloseINIFilesTimer.Enabled := FALSE;
+  CloseINIFilesTimer.Enabled := TRUE;  
+end;
+
+// data is in 2 strings
+// list of variable names
+// list of data
+procedure TfrmVA508HiddenJawsMainWindow.WriteData(VarName, Value: string);
+var
+  offset, len: integer;
+begin
+  ConverAccelChars(Value);
+  len := length(Value);
+  if len > 0 then
+  begin
+    offset := length(FData);
+    FData := FData + Value;
+  end
+  else
+    offset := 0;
+  FVariables := FVariables + DLL_WINDOW_DELIM + VarName + DLL_WINDOW_OFFSET +
+                             IntToStr(offset) + DLL_WINDOW_LENGTH + IntToStr(len);
+end;
+
+// output
+// caption:[next window handle]:varlen:var=offset,length:var=offset,len:data
+// varlen = from first to last :
+
+procedure TfrmVA508HiddenJawsMainWindow.PostData;
+var
+  DataWindow, LastWindow: TfrmVA508HiddenJawsDataWindow;
+  Data, Output, RootOutput: string;
+  Done, UpdateLastWindow: boolean;
+  DataLen, Len, HandleIdx, AllowedChars, StartIndex: integer;
+
+  procedure GetDataWindow;
+  var
+    idx: integer;
+  begin
+    if assigned(DataWindow) then
+      LastWindow := DataWindow;
+    if FDataWindowPool.Count > 0 then
+    begin
+      idx := FDataWindowPool.Count-1;
+      DataWindow := TfrmVA508HiddenJawsDataWindow(FDataWindowPool[idx]);
+      FDataWindowPool.Delete(idx);
+    end
+    else
+    begin
+      DataWindow := TfrmVA508HiddenJawsDataWindow.Create(Self);
+      FDataWindows.Add(DataWindow);
+      DataWindow.HandleNeeded;
+      Application.ProcessMessages;
+    end;
+    if FPostWindow = 0 then
+      FPostWindow := DataWindow.Handle;
+  end;
+
+begin
+  LastWindow := nil;
+  DataWindow := nil;
+  FVariables := FVariables + DLL_WINDOW_DELIM;
+  Len := length(FVariables);
+  Data := IntToStr(Len) + FVariables + FData;
+  DataLen := length(Data) + 1;
+// Format = header  : next window handle : data
+  RootOutput := FRootCaption + DLL_WINDOW_DELIM + DLL_WINDOW_DELIM;
+  HandleIdx := length(RootOutput);
+  AllowedChars := DLL_CAPTION_LIMIT - Length(RootOutput);
+  StartIndex := 1;
+  UpdateLastWindow := FALSE;
+  repeat
+    Done := TRUE;
+    GetDataWindow;
+    if UpdateLastWindow then
+    begin
+      Output := LastWindow.Caption;
+      insert(IntToStr(DataWindow.handle), Output, HandleIdx);
+      LastWindow.Caption := Output;
+      UpdateLastWindow := FALSE;
+    end;
+    Len := DataLen - StartIndex;
+    Output := RootOutput + copy(Data, StartIndex, AllowedChars);
+    DataWindow.Caption := Output;
+    if Len > AllowedChars then
+    begin
+      UpdateLastWindow := TRUE;
+      Done := FALSE;
+      inc(startIndex, AllowedChars);
+    end;
+  until Done;
+end;
+
+procedure TfrmVA508HiddenJawsMainWindow.WndProc(var Msg: TMessage);
+var
+  i: integer;
+  data: string;
+begin
+  if Msg.Msg = MessageID then
+  begin
+    Msg.Result := 1;
+    data := caption;
+    try
+  // make sure Delphi has finished creating the form.  If we dont, JAWS can detect the
+  // window before Delphi has finished creating it - resulting in an access violation
+      if assigned(Self) then
+      begin
+        try
+          if assigned(FComponentDataCallBackProc) then
+          begin
+            FPostWindow := 0;
+            FData := '';
+            FVariables := '';
+            FDataWindowPool.Assign(FDataWindows);
+            try
+              FComponentDataCallBackProc(Msg.WParam, Msg.LParam);
+            except
+            end;
+            // clean up unused windows
+            for i := 0 to FDataWindowPool.Count - 1 do
+              TfrmVA508HiddenJawsDataWindow(FDataWindowPool[i]).Caption := '';
+            SendReturnValue(Handle, FPostWindow);
+          end;
+        except
+        end;
+      end;
+    finally
+      if data = caption then
+      begin
+        SendReturnValue(Handle, 0);
+      end;
+    end;
+  end
+  else
+    inherited WndProc(Msg);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/CompileResource.bat
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/CompileResource.bat	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/CompileResource.bat	(revision 1676)
@@ -0,0 +1,4 @@
+call "..\..\..\CPRS-Chart\JAWS Support Files\JAWSUpdate.exe" FSAPI.dll FSAPIVER.RC
+BRCC32 JAWSAPI.RC
+BRCC32 FSAPIVER.RC
+pause
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/FSAPIVER.RC
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/FSAPIVER.RC	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/FSAPIVER.RC	(revision 1676)
@@ -0,0 +1,4 @@
+STRINGTABLE
+{
+ 5000, "10, 14, 2289, 0"
+}
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSAPI.rc
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSAPI.rc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSAPI.rc	(revision 1676)
@@ -0,0 +1,5 @@
+COMOBJECT RCDATA FSAPI.DLL
+STRINGTABLE
+{
+ 5001, "1.0"
+}
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.bdsproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.bdsproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.bdsproj	(revision 1676)
@@ -0,0 +1,177 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{F48CF772-E404-4CEE-98F6-B1EE4500DF3E}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">JAWSUpdate.dpr</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">0</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">3</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">16384</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription"></Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir">..\..\..\CPRS-Chart\JAWS Support Files</Directories>
+			<Directories Name="UnitOutputDir">..\..\..\dcu</Directories>
+			<Directories Name="PackageDLLOutputDir"></Directories>
+			<Directories Name="PackageDCPOutputDir"></Directories>
+			<Directories Name="SearchPath">$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10</Directories>
+			<Directories Name="Packages"></Directories>
+			<Directories Name="Conditionals"></Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams"></Parameters>
+			<Parameters Name="HostApplication"></Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir"></Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">0</VersionInfo>
+			<VersionInfo Name="Release">0</VersionInfo>
+			<VersionInfo Name="Build">0</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1033</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments"></VersionInfoKeys>
+		</VersionInfoKeys>
+	</Delphi.Personality>
+	<StarTeamAssociation></StarTeamAssociation>
+	<StarTeamNonRelativeFiles></StarTeamNonRelativeFiles>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.cfg	(revision 1676)
@@ -0,0 +1,45 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"..\..\..\CPRS-Chart\JAWS Support Files"
+-N0"..\..\..\dcu"
+-LE"D:\Documents and Settings\vhaislmerrij\My Documents\Borland Studio Projects\Bpl"
+-LN"D:\Documents and Settings\vhaislmerrij\My Documents\Borland Studio Projects\Bpl"
+-U"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10"
+-O"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10"
+-I"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10"
+-R"c:\program files\borland\bds\4.0\lib\Debug;c:\program files\borland\bds\4.0\Lib\Debug\Indy10"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.dpr
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.dpr	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/JAWSUpdate.dpr	(revision 1676)
@@ -0,0 +1,17 @@
+program JAWSUpdate;
+
+uses
+  Forms,
+  Message in 'Message.pas' {frmMessage},
+  VAClasses in '..\..\VAClasses.pas',
+  FSAPILib_TLB in '..\JAWS\FSAPILib_TLB.pas',
+  VAUtils in '..\..\VAUtils.pas',
+  VA508AccessibilityConst in '..\VA508AccessibilityConst.pas';
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TfrmMessage, frmMessage);
+  Application.Run;
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/Message.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/Message.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/Message.dfm	(revision 1676)
@@ -0,0 +1,61 @@
+object frmMessage: TfrmMessage
+  Left = 0
+  Top = 0
+  Caption = 'JAWSUpdate v1.2'
+  ClientHeight = 205
+  ClientWidth = 339
+  Color = clBtnFace
+  Font.Charset = ANSI_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -21
+  Font.Name = 'Times New Roman'
+  Font.Style = [fsBold]
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 24
+  object Label1: TLabel
+    AlignWithMargins = True
+    Left = 8
+    Top = 8
+    Width = 323
+    Height = 148
+    Margins.Left = 8
+    Margins.Top = 8
+    Margins.Right = 8
+    Margins.Bottom = 8
+    Align = alClient
+    Alignment = taCenter
+    Caption = 'Label1'
+    Layout = tlCenter
+    WordWrap = True
+    ExplicitWidth = 62
+    ExplicitHeight = 24
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 164
+    Width = 339
+    Height = 41
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      339
+      41)
+    object Button1: TButton
+      Left = 240
+      Top = 3
+      Width = 91
+      Height = 31
+      Anchors = [akTop, akRight]
+      Cancel = True
+      Caption = 'Done'
+      Default = True
+      TabOrder = 0
+      OnClick = Button1Click
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/Message.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/Message.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/JAWUpdate/Message.pas	(revision 1676)
@@ -0,0 +1,363 @@
+unit Message;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Registry, ActiveX, ComObj, ExtCtrls, comserv;
+
+type
+  TfrmMessage = class(TForm)
+    Label1: TLabel;
+    Panel1: TPanel;
+    Button1: TButton;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure Button1Click(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    Done: boolean;
+  end;
+
+var
+  frmMessage: TfrmMessage;
+
+implementation
+
+uses VAUtils, FSAPILib_TLB, VA508AccessibilityConst;
+
+{$R *.dfm}
+{$R FSAPIVER.res}
+{$R JAWSAPI.res}
+
+const
+  JAWS_INSTALL_DIRECTORY_KEY = 'SOFTWARE\Freedom Scientific\JAWS\';
+  JAWS_INSTALL_DIRECTORY_VAR = 'Target';
+  JAWS_SHARED_DIR = 'Shared\';
+  JAWS_FSAPI_DIR = 'fsapi\';
+  DLL_NAME = 'FSAPI.dll';
+  CPP_INSTALL_APP = 'vcredist_x86.exe';
+
+type
+  TDllRegisterServer = function: HResult; stdcall;
+
+const
+  DllRegisterServerName = 'DllRegisterServer';
+
+  UPDATE_VERSION_ID = 5000;
+  TARGET_DIR_ID = 5001;
+  DLL_RESOURCE_NAME = 'COMOBJECT';
+
+procedure TfrmMessage.Button1Click(Sender: TObject);
+begin
+  Close;
+end;
+
+procedure TfrmMessage.FormCreate(Sender: TObject);
+var
+  UpdateDirs: TStringList;
+  msg: string;
+  buffer: array[0..255] of char;
+
+  procedure ProcessParams;
+  var
+    data: TStringList;
+    version: string;
+
+  begin
+    if (ParamCount > 1) and FileExists(ParamStr(1)) then
+    begin
+      version := FileVersionValue(ParamStr(1), FILE_VER_FILEVERSION);
+      data := TStringList.Create;
+      try
+        data.add('STRINGTABLE');
+        data.add('{');
+        data.add(' ' + IntToStr(UPDATE_VERSION_ID) + ', "' + version + '"');
+        data.add('}');
+        data.SaveToFile(ParamStr(2));
+      finally
+        data.Free;
+      end;
+    end;
+    Done := TRUE;
+  end;
+
+  procedure GetTargetDirectories(Dirs: TStringList);
+  var
+    reg: TRegistry;
+    keys: TStringList;
+    idx, i: integer;
+    key, dir: string;
+    JFile, JFileVersion: string;
+    VerOK, Found: boolean;
+
+  begin
+    keys := TStringList.Create;
+    try
+      reg := TRegistry.Create(KEY_READ);
+      try
+        reg.RootKey := HKEY_LOCAL_MACHINE;
+        reg.OpenKeyReadOnly(JAWS_INSTALL_DIRECTORY_KEY);
+        reg.GetKeyNames(keys);
+        Found := FALSE;
+        for I := 0 to keys.Count - 1 do
+        begin
+          key := JAWS_INSTALL_DIRECTORY_KEY + keys[i] + '\';
+          reg.CloseKey;
+          if reg.OpenKeyReadOnly(key) then
+          begin
+            dir := LowerCase(reg.ReadString(JAWS_INSTALL_DIRECTORY_VAR));
+            JFile := AppendBackSlash(dir) + JAWS_APPLICATION_FILENAME;
+            if FileExists(JFile) then
+            begin
+              Found := TRUE;
+              JFileVersion := FileVersionValue(JFile, FILE_VER_FILEVERSION);
+              VerOK := VersionOK(JAWS_REQUIRED_VERSION, JFileVersion);
+              if VerOK then
+              begin
+                idx := pos('\jaws\', dir);
+                if idx > 0 then
+                begin
+                  dir := copy(dir, 1, idx);
+                  if dirs.IndexOf(dir) < 0 then
+                    dirs.Add(dir);
+                end;
+              end;
+            end;
+          end;
+        end;
+        if found and (dirs.Count = 0) then
+          dirs.Add('');
+      finally
+        reg.Free;
+      end;
+    finally
+      keys.free;
+    end;
+  end;
+
+  function RegSvr(filename: string): boolean;
+  var
+    dll: HModule;
+    regsvr: TDllRegisterServer;
+  begin
+    Result := TRUE;
+    dll := 0;
+    try
+      dll := LoadLibrary(PChar(Filename));
+      if dll > HINSTANCE_ERROR then
+      begin
+        try
+          regsvr := GetProcAddress(dll, DllRegisterServerName);
+          if assigned(regsvr) then
+            OleCheck(regsvr);
+        finally
+          FreeLibrary(dll);
+        end;
+      end
+      else
+        Result := FALSE;
+    except
+      Result := FALSE;
+      if dll > HINSTANCE_ERROR then
+        FreeLibrary(dll);
+    end;
+  end;
+
+  procedure RegisterServer(filename: string; var msg: string);
+  var
+    api: IJawsApi;
+    oldmsg: string;
+    Registered: boolean;
+    cppInstall: string;
+
+  begin
+    try
+      try
+        api := CoJawsApi.Create;
+      except
+        oldmsg := msg;
+        msg := 'Error registering the required JAWS Component (' + DLL_NAME +
+               ').  You must have admin rights on your machine to register this component.  ' +
+               'Please contact your system administrator for assistance.';
+        try
+          Registered := RegSvr(filename);
+          if not Registered then
+          begin
+            cppInstall := ExtractFilePath(Application.ExeName) + CPP_INSTALL_APP;
+            if fileExists(cppInstall) then
+            begin
+              ExecuteAndWait(cppInstall);
+              Registered := RegSvr(filename);
+            end;
+          end;
+
+          if Registered then
+          begin
+            api := CoJawsApi.Create;
+
+            if oldmsg = '' then
+              msg :=''
+            else
+              msg := oldmsg + #13#10;
+            msg := msg + 'The required JAWS Component has been successfully registered.';
+          end;
+        except
+        end;
+      end;
+    finally
+      api := nil;
+    end;
+  end;
+
+  procedure UpdateCheck(UpdateDirs: TStringList; var msg: string);
+  var
+    UpdateVersion, ExistingVersion: string;
+    i: integer;
+    dirs: TStringList;
+    filename, dir, TargetDir: string;
+    update: boolean;
+
+  begin
+    LoadString(HInstance, UPDATE_VERSION_ID, @buffer, 255);
+    UpdateVersion := StrPas(buffer);
+
+    LoadString(HInstance, TARGET_DIR_ID, @buffer, 255);
+    TargetDir := StrPas(buffer);
+
+    dirs := TStringList.Create;
+    try
+      GetTargetDirectories(dirs);
+      if dirs.Count < 1 then
+        msg := 'Can not find JAWS installed on this machine';
+      if (dirs.Count = 1) and (dirs[0] = '') then
+      begin
+        dirs.Delete(0);
+        msg := 'JAWS version ' + JAWS_REQUIRED_VERSION + ' or higher is required in order to run JAWSUpdate';
+      end;
+      for I := 0 to dirs.Count - 1 do
+      begin
+        dir := dirs[i] + JAWS_SHARED_DIR + JAWS_FSAPI_DIR + TargetDir;
+        dir := AppendBackSlash(dir);
+        update := TRUE;
+        if DirectoryExists(dir) then
+        begin
+          filename := dir + DLL_NAME;
+          if FileExists(fileName) then
+          begin
+            ExistingVersion := FileVersionValue(fileName, FILE_VER_FILEVERSION);
+            update := not VersionOK(UpdateVersion, ExistingVersion);
+            if not update then
+              RegisterServer(filename, msg);
+          end;
+        end;
+        if update then
+          UpdateDirs.Add(dirs[i]);
+      end;
+    finally
+      dirs.Free;
+    end;
+    if (UpdateDirs.Count < 1) and (msg = '') then
+      msg := 'The required JAWS Component is already installed on your machine';
+  end;
+
+  function MakeDirError(dir: string; var msg: string): boolean;
+  begin
+    Result := FALSE;
+    if not DirectoryExists(dir) then
+    begin
+      if not CreateDir(dir) then
+      begin
+        msg := 'Error Creating Directory ' + dir;
+        Result := TRUE;
+      end;
+    end;
+  end;
+
+  procedure DoUpdate(UpdateDirs: TStringList; var msg: string);
+  var
+    i: integer;
+    dir, last: string;
+    TargetDir: string;
+    rs: TResourceStream;
+    fs: TFileStream;
+    filename: string;
+
+  begin
+    LoadString(HInstance, TARGET_DIR_ID, @buffer, 255);
+    TargetDir := StrPas(buffer);
+
+    for I := 0 to UpdateDirs.Count - 1 do
+    begin
+      dir := UpdateDirs[i];
+      if MakeDirError(dir, msg) then continue;
+      dir := dir + JAWS_SHARED_DIR;
+      if MakeDirError(dir, msg) then continue;
+      dir := dir + JAWS_FSAPI_DIR;
+      if MakeDirError(dir, msg) then continue;
+      dir := dir + TargetDir;
+      dir := AppendBackSlash(dir);
+      if MakeDirError(dir, msg) then continue;
+      filename := dir + DLL_NAME;
+      if FileExists(filename) then
+        DeleteFile(filename);
+      last := filename;
+      try
+        rs := TResourceStream.Create(HInstance, DLL_RESOURCE_NAME, RT_RCDATA);
+        try
+          fs := TFileStream.Create(filename, fmCreate OR fmShareExclusive);
+          try
+            fs.CopyFrom(rs, rs.Size);
+          finally
+            fs.Free;
+          end;
+        finally
+          rs.Free;
+        end;
+      except
+        on e:Exception do
+          msg := e.Message;
+      end;
+    end;
+    if msg = '' then
+    begin
+      msg := 'The required JAWS Component has been successfully installed.';
+      RegisterServer(last, msg);
+    end;
+  end;
+
+  procedure DeleteOldUpdater;
+  var
+    u8File: string;
+  begin
+    u8File := ExtractFilePath(Application.ExeName) + 'Jaws8Update.exe';
+    if fileExists(u8File) then
+      SysUtils.DeleteFile(u8File);
+  end;
+
+begin
+  if (ParamCount > 0) then
+    ProcessParams
+  else
+  begin
+    DeleteOldUpdater;
+    UpdateDirs := TStringList.Create;
+    try
+      msg := '';
+      UpdateCheck(UpdateDirs, msg);
+      if UpdateDirs.Count > 0 then
+        DoUpdate(UpdateDirs, msg);
+      label1.Caption := msg;
+    finally
+      UpdateDirs.Free;
+    end;
+  end;
+end;
+
+procedure TfrmMessage.FormShow(Sender: TObject);
+begin
+  if Done then Close;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/MSAAConstants.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/MSAAConstants.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/MSAAConstants.pas	(revision 1676)
@@ -0,0 +1,175 @@
+unit MSAAConstants;
+interface
+
+const
+
+  DISPID_ACC_PARENT           = -5000;
+  DISPID_ACC_CHILDCOUNT       = -5001;
+  DISPID_ACC_CHILD            = -5002;
+  DISPID_ACC_NAME             = -5003;
+  DISPID_ACC_VALUE            = -5004;
+  DISPID_ACC_DESCRIPTION      = -5005;
+  DISPID_ACC_ROLE             = -5006;
+  DISPID_ACC_STATE            = -5007;
+  DISPID_ACC_HELP             = -5008;
+  DISPID_ACC_HELPTOPIC        = -5009;
+  DISPID_ACC_KEYBOARDSHORTCUT = -5010;
+  DISPID_ACC_FOCUS            = -5011;
+  DISPID_ACC_SELECTION        = -5012;
+  DISPID_ACC_DEFAULTACTION    = -5013;
+  DISPID_ACC_SELECT           = -5014;
+  DISPID_ACC_LOCATION         = -5015;
+  DISPID_ACC_NAVIGATE         = -5016;
+  DISPID_ACC_HITTEST          = -5017;
+  DISPID_ACC_DODEFAULTACTION  = -5018;
+
+  NAVDIR_MIN        = $0;
+  NAVDIR_UP         = $1;
+  NAVDIR_DOWN       = $2;
+  NAVDIR_LEFT       = $3;
+  NAVDIR_RIGHT      = $4;
+  NAVDIR_NEXT       = $5;
+  NAVDIR_PREVIOUS   = $6;
+  NAVDIR_FIRSTCHILD = $7;
+  NAVDIR_LASTCHILD  = $8;
+  NAVDIR_MAX        = $9;
+
+  SELFLAG_NONE            =  $0;
+  SELFLAG_TAKEFOCUS       =  $1;
+  SELFLAG_TAKESELECTION   =  $2;
+  SELFLAG_EXTENDSELECTION =  $4;
+  SELFLAG_ADDSELECTION    =  $8;
+  SELFLAG_REMOVESELECTION = $10;
+  SELFLAG_VALID           = $1F;
+
+  STATE_SYSTEM_NORMAL          =        $0;
+  STATE_SYSTEM_UNAVAILABLE     =        $1;
+  STATE_SYSTEM_SELECTED        =        $2;
+  STATE_SYSTEM_FOCUSED         =        $4;
+  STATE_SYSTEM_PRESSED         =        $8;
+  STATE_SYSTEM_CHECKED         =       $10;
+  STATE_SYSTEM_MIXED           =       $20;
+  STATE_SYSTEM_INDETERMINATE   = STATE_SYSTEM_MIXED;
+  STATE_SYSTEM_READONLY        =       $40;
+  STATE_SYSTEM_HOTTRACKED      =       $80;
+  STATE_SYSTEM_DEFAULT         =      $100;
+  STATE_SYSTEM_EXPANDED        =      $200;
+  STATE_SYSTEM_COLLAPSED       =      $400;
+  STATE_SYSTEM_BUSY            =      $800;
+  STATE_SYSTEM_FLOATING        =     $1000;
+  STATE_SYSTEM_MARQUEED        =     $2000;
+  STATE_SYSTEM_ANIMATED        =     $4000;
+  STATE_SYSTEM_INVISIBLE       =     $8000;
+  STATE_SYSTEM_OFFSCREEN       =    $10000;
+  STATE_SYSTEM_SIZEABLE        =    $20000;
+  STATE_SYSTEM_MOVEABLE        =    $40000;
+  STATE_SYSTEM_SELFVOICING     =    $80000;
+  STATE_SYSTEM_FOCUSABLE       =   $100000;
+  STATE_SYSTEM_SELECTABLE      =   $200000;
+  STATE_SYSTEM_LINKED          =   $400000;
+  STATE_SYSTEM_TRAVERSED       =   $800000;
+  STATE_SYSTEM_MULTISELECTABLE =  $1000000;
+  STATE_SYSTEM_EXTSELECTABLE   =  $2000000;
+  STATE_SYSTEM_ALERT_LOW       =  $4000000;
+  STATE_SYSTEM_ALERT_MEDIUM    =  $8000000;
+  STATE_SYSTEM_ALERT_HIGH      = $10000000;
+  STATE_SYSTEM_PROTECTED       = $20000000;
+  STATE_SYSTEM_VALID           = $3FFFFFFF;
+
+  ROLE_SYSTEM_TITLEBAR           =  $1;
+  ROLE_SYSTEM_MENUBAR            =  $2;
+  ROLE_SYSTEM_SCROLLBAR          =  $3;
+  ROLE_SYSTEM_GRIP               =  $4;
+  ROLE_SYSTEM_SOUND              =  $5;
+  ROLE_SYSTEM_CURSOR             =  $6;
+  ROLE_SYSTEM_CARET              =  $7;
+  ROLE_SYSTEM_ALERT              =  $8;
+  ROLE_SYSTEM_WINDOW             =  $9;
+  ROLE_SYSTEM_CLIENT             =  $A;
+  ROLE_SYSTEM_MENUPOPUP          =  $B;
+  ROLE_SYSTEM_MENUITEM           =  $C;
+  ROLE_SYSTEM_TOOLTIP            =  $D;
+  ROLE_SYSTEM_APPLICATION        =  $E;
+  ROLE_SYSTEM_DOCUMENT           =  $F;
+  ROLE_SYSTEM_PANE               = $10;
+  ROLE_SYSTEM_CHART              = $11;
+  ROLE_SYSTEM_DIALOG             = $12;
+  ROLE_SYSTEM_BORDER             = $13;
+  ROLE_SYSTEM_GROUPING           = $14;
+  ROLE_SYSTEM_SEPARATOR          = $15;
+  ROLE_SYSTEM_TOOLBAR            = $16;
+  ROLE_SYSTEM_STATUSBAR          = $17;
+  ROLE_SYSTEM_TABLE              = $18;
+  ROLE_SYSTEM_COLUMNHEADER       = $19;
+  ROLE_SYSTEM_ROWHEADER          = $1A;
+  ROLE_SYSTEM_COLUMN             = $1B;
+  ROLE_SYSTEM_ROW                = $1C;
+  ROLE_SYSTEM_CELL               = $1D;
+  ROLE_SYSTEM_LINK               = $1E;
+  ROLE_SYSTEM_HELPBALLOON        = $1F;
+  ROLE_SYSTEM_CHARACTER          = $20;
+  ROLE_SYSTEM_LIST               = $21;
+  ROLE_SYSTEM_LISTITEM           = $22;
+  ROLE_SYSTEM_OUTLINE            = $23;
+  ROLE_SYSTEM_OUTLINEITEM        = $24;
+  ROLE_SYSTEM_PAGETAB            = $25;
+  ROLE_SYSTEM_PROPERTYPAGE       = $26;
+  ROLE_SYSTEM_INDICATOR          = $27;
+  ROLE_SYSTEM_GRAPHIC            = $28;
+  ROLE_SYSTEM_STATICTEXT         = $29;
+  ROLE_SYSTEM_TEXT               = $2A;
+  ROLE_SYSTEM_PUSHBUTTON         = $2B;
+  ROLE_SYSTEM_CHECKBUTTON        = $2C;
+  ROLE_SYSTEM_RADIOBUTTON        = $2D;
+  ROLE_SYSTEM_COMBOBOX           = $2E;
+  ROLE_SYSTEM_DROPLIST           = $2F;
+  ROLE_SYSTEM_PROGRESSBAR        = $30;
+  ROLE_SYSTEM_DIAL               = $31;
+  ROLE_SYSTEM_HOTKEYFIELD        = $32;
+  ROLE_SYSTEM_SLIDER             = $33;
+  ROLE_SYSTEM_SPINBUTTON         = $34;
+  ROLE_SYSTEM_DIAGRAM            = $35;
+  ROLE_SYSTEM_ANIMATION          = $36;
+  ROLE_SYSTEM_EQUATION           = $37;
+  ROLE_SYSTEM_BUTTONDROPDOWN     = $38;
+  ROLE_SYSTEM_BUTTONMENU         = $39;
+  ROLE_SYSTEM_BUTTONDROPDOWNGRID = $3A;
+  ROLE_SYSTEM_WHITESPACE         = $3B;
+  ROLE_SYSTEM_PAGETABLIST        = $3C;
+  ROLE_SYSTEM_CLOCK              = $3D;
+
+  CHILDID_SELF = 0;
+
+  //=== Property GUIDs (used by annotation interfaces)
+
+  PROPID_ACC_NAME: TGUID             = (D1:$608d3df8; D2:$8128; D3:$4aa7; D4:($a4, $28, $f5, $5e, $49, $26, $72, $91));
+  PROPID_ACC_VALUE: TGUID            = (D1:$123fe443; D2:$211a; D3:$4615; D4:($95, $27, $c4, $5a, $7e, $93, $71, $7a));
+  PROPID_ACC_DESCRIPTION: TGUID      = (D1:$4d48dfe4; D2:$bd3f; D3:$491f; D4:($a6, $48, $49, $2d, $6f, $20, $c5, $88));
+  PROPID_ACC_ROLE: TGUID             = (D1:$cb905ff2; D2:$7bd1; D3:$4c05; D4:($b3, $c8, $e6, $c2, $41, $36, $4d, $70));
+  PROPID_ACC_STATE: TGUID            = (D1:$a8d4d5b0; D2:$0a21; D3:$42d0; D4:($a5, $c0, $51, $4e, $98, $4f, $45, $7b));
+  PROPID_ACC_HELP: TGUID             = (D1:$c831e11f; D2:$44db; D3:$4a99; D4:($97, $68, $cb, $8f, $97, $8b, $72, $31));
+  PROPID_ACC_KEYBOARDSHORTCUT: TGUID = (D1:$7d9bceee; D2:$7d1e; D3:$4979; D4:($93, $82, $51, $80, $f4, $17, $2c, $34));
+
+  PROPID_ACC_HELPTOPIC: TGUID        = (D1:$787d1379; D2:$8ede; D3:$440b; D4:($8a, $ec, $11, $f7, $bf, $90, $30, $b3));
+  PROPID_ACC_FOCUS: TGUID            = (D1:$6eb335df; D2:$1c29; D3:$4127; D4:($b1, $2c, $de, $e9, $fd, $15, $7f, $2b));
+  PROPID_ACC_SELECTION: TGUID        = (D1:$b99d073c; D2:$d731; D3:$405b; D4:($90, $61, $d9, $5e, $8f, $84, $29, $84));
+  PROPID_ACC_PARENT: TGUID           = (D1:$474c22b6; D2:$ffc2; D3:$467a; D4:($b1, $b5, $e9, $58, $b4, $65, $73, $30));
+
+  PROPID_ACC_NAV_UP: TGUID           = (D1:$016e1a2b; D2:$1a4e; D3:$4767; D4:($86, $12, $33, $86, $f6, $69, $35, $ec));
+  PROPID_ACC_NAV_DOWN: TGUID         = (D1:$031670ed; D2:$3cdf; D3:$48d2; D4:($96, $13, $13, $8f, $2d, $d8, $a6, $68));
+  PROPID_ACC_NAV_LEFT: TGUID         = (D1:$228086cb; D2:$82f1; D3:$4a39; D4:($87, $05, $dc, $dc, $0f, $ff, $92, $f5));
+  PROPID_ACC_NAV_RIGHT: TGUID        = (D1:$cd211d9f; D2:$e1cb; D3:$4fe5; D4:($a7, $7c, $92, $0b, $88, $4d, $09, $5b));
+  PROPID_ACC_NAV_PREV: TGUID         = (D1:$776d3891; D2:$c73b; D3:$4480; D4:($b3, $f6, $07, $6a, $16, $a1, $5a, $f6));
+  PROPID_ACC_NAV_NEXT: TGUID         = (D1:$1cdc5455; D2:$8cd9; D3:$4c92; D4:($a3, $71, $39, $39, $a2, $fe, $3e, $ee));
+  PROPID_ACC_NAV_FIRSTCHILD: TGUID   = (D1:$cfd02558; D2:$557b; D3:$4c67; D4:($84, $f9, $2a, $09, $fc, $e4, $07, $49));
+  PROPID_ACC_NAV_LASTCHILD: TGUID    = (D1:$302ecaa5; D2:$48d5; D3:$4f8d; D4:($b6, $71, $1a, $8d, $20, $a7, $78, $32));
+
+  PROPID_ACC_ROLEMAP: TGUID          = (D1:$f79acda2; D2:$140d; D3:$4fe6; D4:($89, $14, $20, $84, $76, $32, $82, $69));
+  PROPID_ACC_VALUEMAP: TGUID         = (D1:$da1c3d79; D2:$fc5c; D3:$420e; D4:($b3, $99, $9d, $15, $33, $54, $9e, $75));
+  PROPID_ACC_STATEMAP: TGUID         = (D1:$43946c5e; D2:$0ac0; D3:$4042; D4:($b5, $25, $07, $bb, $db, $e1, $7f, $a7));
+  PROPID_ACC_DESCRIPTIONMAP: TGUID   = (D1:$1ff1435f; D2:$8a14; D3:$477b; D4:($b2, $26, $a0, $ab, $e2, $79, $97, $5d));
+
+  PROPID_ACC_DODEFAULTACTION: TGUID  = (D1:$1ba09523; D2:$2e3b; D3:$49a6; D4:($a0, $59, $59, $68, $2a, $3c, $48, $fd));
+
+implementation
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.bdsproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.bdsproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.bdsproj	(revision 1676)
@@ -0,0 +1,177 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{E69A3D49-1401-4990-ACD7-30F55F76D420}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">VA508Access2006.dpk</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">0</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">3</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">16384</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription">VA Section 508 Accessibility</Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir"></Directories>
+			<Directories Name="UnitOutputDir">..\..\DCU</Directories>
+			<Directories Name="PackageDLLOutputDir">..\..\Packages</Directories>
+			<Directories Name="PackageDCPOutputDir">..\..\Packages</Directories>
+			<Directories Name="SearchPath">$(BDS)\source\ToolsAPI</Directories>
+			<Directories Name="Packages"></Directories>
+			<Directories Name="Conditionals">DEBUG_ACCESSIBILITY_MANAGER</Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams">-pDelphi</Parameters>
+			<Parameters Name="HostApplication">C:\Program Files\Borland\Delphi 2006\Bin\bds.exe</Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir">C:\Program Files\Borland\Delphi6\Bin\</Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">0</VersionInfo>
+			<VersionInfo Name="Release">0</VersionInfo>
+			<VersionInfo Name="Build">0</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1033</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments"></VersionInfoKeys>
+		</VersionInfoKeys>
+	</Delphi.Personality>
+	<StarTeamAssociation></StarTeamAssociation>
+	<StarTeamNonRelativeFiles></StarTeamNonRelativeFiles>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.cfg	(revision 1676)
@@ -0,0 +1,46 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-N0"..\..\DCU"
+-LE"..\..\Packages"
+-LN"..\..\Packages"
+-U"c:\program files\borland\bds\4.0\source\ToolsAPI"
+-O"c:\program files\borland\bds\4.0\source\ToolsAPI"
+-I"c:\program files\borland\bds\4.0\source\ToolsAPI"
+-R"c:\program files\borland\bds\4.0\source\ToolsAPI"
+-DDEBUG_ACCESSIBILITY_MANAGER
+-Z
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.dof
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.dof	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.dof	(revision 1676)
@@ -0,0 +1,106 @@
+[FileVersion]
+Version=6.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[Linker]
+MapFile=3
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=VA Section 508 Accessibility
+[Directories]
+OutputDir=
+UnitOutputDir=..\DCU
+PackageDLLOutputDir=..\Packages
+PackageDCPOutputDir=..\Packages
+SearchPath=C:\Program Files\Borland\Delphi6\Source\ToolsAPI
+Packages=vcl;rtl;vclx;VclSmp;vclshlctrls;dbrtl;adortl;vcldb;qrpt;bdertl;vcldbx;dsnap;cds;bdecds;teeui;teedb;tee;teeqr;ibxpress;visualclx;visualdbclx;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;dbexpress;dbxcds;indy;dclOffice2k;soaprtl;DJcl;JvCoreD6R;JvSystemD6R;JvStdCtrlsD6R;JvCtrlsD6R;JvCmpD6R;JvCustomD6R;JvDlgsD6R;JvCryptD6R;JvMMD6R;JvNetD6R;JvAppFrmD6R;JvDBD6R;JvBDED6R;JvInterpreterD6R;JvBandsD6R;JvPluginD6R;JvJansD6R;JvGlobusD6R;JvPrintPreviewD6R;JvPageCompsD6R;JvValidatorsD6R;JvUIBD6R;JvWizardD6R;JvTimeFrameworkD6R;JvHMID6R;JvManagedThreadsD6R;JvXPCtrlsD6R;JvDockingD6R;JvDotNetCtrlsD6R;JvEDID6R;JvInspectorD6R;XWB_R60;VAAccessibilityDesigntime60
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=C:\Program Files\Borland\Delphi6\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=1033
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlSearchPath]
+Count=2
+Item0=C:\Program Files\Borland\Delphi6\Source\ToolsAPI
+Item1=C:\Program Files\Borland\Delphi6\Source\ToolsAPI;..\
+[HistoryLists\hlUnitOutputDirectory]
+Count=2
+Item0=..\DCU
+Item1=..\CPRS\DCU
+[HistoryLists\hlBPLOutput]
+Count=2
+Item0=..\Packages
+Item1=..\
+[HistoryLists\hlDCPOutput]
+Count=2
+Item0=..\Packages
+Item1=..\
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Access2006.dpk	(revision 1676)
@@ -0,0 +1,58 @@
+package VA508Access2006;
+
+{$R *.res}
+{$R 'VA508AccessibilityManager.dcr'}
+{$R 'VA508ImageListLabeler.dcr'}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VA Section 508 Accessibility'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+{$DEFINE DEBUG_ACCESSIBILITY_MANAGER}
+
+requires
+  vcl,
+  designide,
+  vcldb,
+  VclSmp,
+  VAShared2006,
+  rtl;
+
+contains
+  VA508AccessibilityCompiler in 'VA508AccessibilityCompiler.pas',
+  VA508AccessibilityPE in 'VA508AccessibilityPE.pas',
+  VA508AccessibilityCompileInfo in 'VA508AccessibilityCompileInfo.pas' {frmProgress},
+  VA508Classes in 'VA508Classes.pas',
+  VA508AccessibilityManager in 'VA508AccessibilityManager.pas',
+  VA508ScreenReaderDLLLinker in 'VA508ScreenReaderDLLLinker.pas',
+  VA508DelphiCompatibility in 'VA508DelphiCompatibility.pas',
+  VA508ImageListLabelerPE in 'VA508ImageListLabelerPE.pas' {frmImageListEditor},
+  VA508ImageListLabeler in 'VA508ImageListLabeler.pas',
+  VA508AccessibilityConst in 'VA508AccessibilityConst.pas',
+  VA508MSAASupport in 'VA508MSAASupport.pas',
+  MSAAConstants in 'MSAAConstants.pas',
+  oleacc2 in 'oleacc2.pas',
+  VA508AccessibilityRouter in 'VA508AccessibilityRouter.pas';
+
+//  ToolWnds in 'C:\Program Files\Borland\Delphi 2006\source\ToolsAPI\ToolWnds.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompileInfo.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompileInfo.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompileInfo.dfm	(revision 1676)
@@ -0,0 +1,334 @@
+object frmProgress: TfrmProgress
+  Left = 0
+  Top = 0
+  BorderIcons = []
+  BorderStyle = bsSizeToolWin
+  Caption = 'VA 508 Compile Scan'
+  ClientHeight = 145
+  ClientWidth = 371
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poDesigned
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlMain: TPanel
+    AlignWithMargins = True
+    Left = 6
+    Top = 6
+    Width = 359
+    Height = 133
+    Margins.Left = 6
+    Margins.Top = 6
+    Margins.Right = 6
+    Margins.Bottom = 6
+    Align = alClient
+    TabOrder = 0
+    DesignSize = (
+      359
+      133)
+    object pnlProject: TPanel
+      AlignWithMargins = True
+      Left = 7
+      Top = 9
+      Width = 345
+      Height = 24
+      Margins.Left = 6
+      Margins.Top = 8
+      Margins.Right = 6
+      Align = alTop
+      BevelOuter = bvLowered
+      TabOrder = 0
+      object lblProj: TLabel
+        AlignWithMargins = True
+        Left = 6
+        Top = 4
+        Width = 38
+        Height = 16
+        Margins.Left = 5
+        Margins.Right = 5
+        Align = alLeft
+        Caption = 'Project:'
+        Layout = tlCenter
+        ExplicitHeight = 13
+      end
+      object lblProject: TLabel
+        AlignWithMargins = True
+        Left = 52
+        Top = 4
+        Width = 284
+        Height = 16
+        Margins.Right = 8
+        Align = alClient
+        AutoSize = False
+        Caption = 'lblProject'
+        Layout = tlCenter
+        ExplicitWidth = 44
+        ExplicitHeight = 13
+      end
+    end
+    object pnlFile: TPanel
+      AlignWithMargins = True
+      Left = 7
+      Top = 39
+      Width = 345
+      Height = 24
+      Margins.Left = 6
+      Margins.Right = 6
+      Margins.Bottom = 5
+      Align = alTop
+      BevelOuter = bvLowered
+      TabOrder = 1
+      object lblComp: TLabel
+        AlignWithMargins = True
+        Left = 6
+        Top = 4
+        Width = 47
+        Height = 16
+        Margins.Left = 5
+        Margins.Right = 5
+        Align = alLeft
+        Caption = 'Scanning:'
+        Layout = tlCenter
+        ExplicitHeight = 13
+      end
+      object lblFile: TLabel
+        AlignWithMargins = True
+        Left = 61
+        Top = 4
+        Width = 280
+        Height = 16
+        Align = alClient
+        Caption = 'lblFile'
+        Layout = tlCenter
+        ExplicitWidth = 26
+        ExplicitHeight = 13
+      end
+    end
+    object pnlErrorData: TPanel
+      Left = 1
+      Top = 68
+      Width = 357
+      Height = 32
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 2
+      object pnlErrors: TPanel
+        AlignWithMargins = True
+        Left = 259
+        Top = 3
+        Width = 92
+        Height = 24
+        Margins.Right = 6
+        Margins.Bottom = 5
+        Align = alClient
+        BevelOuter = bvLowered
+        TabOrder = 0
+        object lblNumErrors: TLabel
+          AlignWithMargins = True
+          Left = 6
+          Top = 4
+          Width = 33
+          Height = 16
+          Margins.Left = 5
+          Margins.Right = 5
+          Align = alLeft
+          Caption = 'Errors:'
+          Layout = tlCenter
+          ExplicitHeight = 13
+        end
+        object lblErrors: TLabel
+          AlignWithMargins = True
+          Left = 47
+          Top = 4
+          Width = 40
+          Height = 16
+          Margins.Right = 4
+          Align = alClient
+          Alignment = taRightJustify
+          Caption = '0'
+          Layout = tlCenter
+          ExplicitLeft = 81
+          ExplicitWidth = 6
+          ExplicitHeight = 13
+        end
+      end
+      object pnlWarnings: TPanel
+        AlignWithMargins = True
+        Left = 159
+        Top = 3
+        Width = 94
+        Height = 24
+        Margins.Bottom = 5
+        Align = alLeft
+        BevelOuter = bvLowered
+        TabOrder = 1
+        object lblNumWarnings: TLabel
+          AlignWithMargins = True
+          Left = 6
+          Top = 4
+          Width = 49
+          Height = 16
+          Margins.Left = 5
+          Margins.Right = 5
+          Align = alLeft
+          Caption = 'Warnings:'
+          Layout = tlCenter
+          ExplicitHeight = 13
+        end
+        object lblWarnings: TLabel
+          AlignWithMargins = True
+          Left = 63
+          Top = 4
+          Width = 26
+          Height = 16
+          Margins.Right = 4
+          Align = alClient
+          Alignment = taRightJustify
+          Caption = '0'
+          Layout = tlCenter
+          ExplicitLeft = 83
+          ExplicitWidth = 6
+          ExplicitHeight = 13
+        end
+      end
+      object Panel1: TPanel
+        AlignWithMargins = True
+        Left = 6
+        Top = 3
+        Width = 147
+        Height = 24
+        Margins.Left = 6
+        Margins.Bottom = 5
+        Align = alLeft
+        BevelOuter = bvLowered
+        TabOrder = 2
+        object lblTotal: TLabel
+          AlignWithMargins = True
+          Left = 6
+          Top = 4
+          Width = 74
+          Height = 16
+          Margins.Left = 5
+          Margins.Right = 5
+          Align = alLeft
+          Caption = 'Data Analyzed:'
+          Layout = tlCenter
+          ExplicitHeight = 13
+        end
+        object lblTotalLines: TLabel
+          AlignWithMargins = True
+          Left = 88
+          Top = 4
+          Width = 54
+          Height = 16
+          Margins.Right = 4
+          Align = alClient
+          Alignment = taRightJustify
+          Caption = '0'
+          Layout = tlCenter
+          ExplicitLeft = 136
+          ExplicitWidth = 6
+          ExplicitHeight = 13
+        end
+      end
+    end
+    object btnRelease: TButton
+      Left = 277
+      Top = 103
+      Width = 75
+      Height = 25
+      Anchors = [akLeft, akBottom]
+      Caption = 'Skip'
+      TabOrder = 3
+      Visible = False
+      OnClick = btnReleaseClick
+    end
+    object Panel2: TPanel
+      AlignWithMargins = True
+      Left = 137
+      Top = 103
+      Width = 117
+      Height = 24
+      Margins.Left = 6
+      Margins.Bottom = 5
+      Align = alLeft
+      BevelOuter = bvLowered
+      TabOrder = 4
+      object Label1: TLabel
+        AlignWithMargins = True
+        Left = 6
+        Top = 4
+        Width = 62
+        Height = 16
+        Margins.Left = 5
+        Margins.Right = 5
+        Align = alLeft
+        Caption = 'Caches Built:'
+        Layout = tlCenter
+        ExplicitHeight = 13
+      end
+      object lblBuilt: TLabel
+        AlignWithMargins = True
+        Left = 76
+        Top = 4
+        Width = 36
+        Height = 16
+        Margins.Right = 4
+        Align = alClient
+        Alignment = taRightJustify
+        Caption = '0'
+        Layout = tlCenter
+        ExplicitLeft = 72
+        ExplicitWidth = 6
+        ExplicitHeight = 13
+      end
+    end
+    object Panel3: TPanel
+      AlignWithMargins = True
+      Left = 7
+      Top = 103
+      Width = 121
+      Height = 24
+      Margins.Left = 6
+      Margins.Bottom = 5
+      Align = alLeft
+      BevelOuter = bvLowered
+      TabOrder = 5
+      object Label2: TLabel
+        AlignWithMargins = True
+        Left = 6
+        Top = 4
+        Width = 64
+        Height = 16
+        Margins.Left = 5
+        Margins.Right = 5
+        Align = alLeft
+        Caption = 'Files Cached:'
+        Layout = tlCenter
+        ExplicitHeight = 13
+      end
+      object lblCached: TLabel
+        AlignWithMargins = True
+        Left = 78
+        Top = 4
+        Width = 38
+        Height = 16
+        Margins.Right = 4
+        Align = alClient
+        Alignment = taRightJustify
+        Caption = '0'
+        Layout = tlCenter
+        ExplicitLeft = 83
+        ExplicitWidth = 6
+        ExplicitHeight = 13
+      end
+    end
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompileInfo.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompileInfo.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompileInfo.pas	(revision 1676)
@@ -0,0 +1,152 @@
+unit VA508AccessibilityCompileInfo;
+
+interface
+
+{$UNDEF DELAY_BEFORE_SHOW}
+{$DEFINE DELAY_BEFORE_SHOW}
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ExtCtrls, StdCtrls, DateUtils, StrUtils;
+
+type
+  TfrmProgress = class(TForm)
+    pnlMain: TPanel;
+    pnlProject: TPanel;
+    lblProj: TLabel;
+    lblProject: TLabel;
+    pnlFile: TPanel;
+    lblComp: TLabel;
+    lblFile: TLabel;
+    pnlErrorData: TPanel;
+    pnlErrors: TPanel;
+    lblNumErrors: TLabel;
+    lblErrors: TLabel;
+    pnlWarnings: TPanel;
+    lblNumWarnings: TLabel;
+    lblWarnings: TLabel;
+    btnRelease: TButton;
+    Panel1: TPanel;
+    lblTotal: TLabel;
+    lblTotalLines: TLabel;
+    Panel2: TPanel;
+    Label1: TLabel;
+    lblBuilt: TLabel;
+    Panel3: TPanel;
+    Label2: TLabel;
+    lblCached: TLabel;
+    procedure FormCreate(Sender: TObject);
+    procedure btnReleaseClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+type
+  TStopCompileProc = procedure of object;
+
+procedure StartMonitor(ProjectText: string; StopProc: TStopCompileProc);
+procedure StopMonitor;
+procedure Update508Monitor(FileName: String; TotalLines,
+        Warnings, Errors, Cached, Built: integer; ForceDisplay: boolean = false);
+
+implementation
+
+uses VAUtils;
+
+{$R *.dfm}
+
+const
+{$IFDEF DELAY_BEFORE_SHOW}
+  SECONDS_BEFORE_SHOW = 3;
+{$ENDIF}
+  UPDATE_FREQUENCY = 50;
+
+var
+  frmProgress: TfrmProgress = nil;
+  uProjectText: string;
+  uStopProc: TStopCompileProc;
+  uRunning: boolean = false;
+  uLastUpdate: TDateTime;
+{$IFDEF DELAY_BEFORE_SHOW}
+  uStartTime: TDateTime;
+{$ENDIF}
+
+procedure Hookup;
+begin
+  if not assigned(frmProgress) then
+    frmProgress := TfrmProgress.Create(nil);
+  frmProgress.lblProject.Caption := GetFileWithShortenedPath(uProjectText, frmProgress.lblProject.Width, frmProgress.Canvas);
+  frmProgress.lblFile.Caption := '';
+  frmProgress.Show;
+  Application.ProcessMessages;
+end;
+
+procedure StartMonitor(ProjectText: string; StopProc: TStopCompileProc);
+begin
+  uLastUpdate := 0;
+  uProjectText := ProjectText;
+  uStopProc := StopProc;
+{$IFDEF DELAY_BEFORE_SHOW}
+  if assigned(frmProgress) then
+    Hookup
+  else
+    uStartTime := Now;
+{$ELSE}
+  Hookup;
+{$ENDIF}
+end;
+
+procedure StopMonitor;
+begin
+  if assigned(frmProgress) then
+    FreeAndNil(frmProgress);
+end;
+
+procedure Update508Monitor(FileName: String; TotalLines,
+          Warnings, Errors, Cached, Built: integer; ForceDisplay: boolean = false);
+begin
+{$IFDEF DELAY_BEFORE_SHOW}
+  if not assigned(frmProgress) then
+  begin
+    if ForceDisplay or (SecondSpan(Now, uStartTime) > SECONDS_BEFORE_SHOW) then
+      Hookup;
+  end;
+{$ENDIF}
+  if assigned(frmProgress) then
+  begin
+    frmProgress.lblFile.Caption := FileName;
+    frmProgress.lblTotalLines.Caption := IntToStr(TotalLines);
+    frmProgress.lblWarnings.Caption := IntToStr(Warnings);
+    frmProgress.lblErrors.Caption := IntToStr(Errors);
+    frmProgress.lblCached.Caption := IntToStr(Cached);
+    frmProgress.lblBuilt.Caption := IntToStr(Built);
+    if MilliSecondSpan(Now, uLastUpdate) > UPDATE_FREQUENCY then
+    begin
+      Application.ProcessMessages;
+      uLastUpdate := Now; 
+    end;
+  end;
+end;
+
+procedure TfrmProgress.btnReleaseClick(Sender: TObject);
+begin
+  btnRelease.Enabled := False;
+  if assigned(uStopProc) then
+    uStopProc;
+  Close;
+end;
+
+procedure TfrmProgress.FormCreate(Sender: TObject);
+begin
+  Left := (Screen.Width - Width) div 2;
+  Top := (Screen.Height - Height) div 3;
+end;
+
+initialization
+
+finalization
+  if assigned(frmProgress) then
+    FreeAndNil(frmProgress);
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompiler.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompiler.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityCompiler.pas	(revision 1676)
@@ -0,0 +1,1212 @@
+unit VA508AccessibilityCompiler;
+
+{$UNDEF VA508COMPILER}
+{$DEFINE VA508COMPILER}
+
+{ TODO -oJeremy Merrill -c508 :
+Add additional warning types:
+1) forms in app without 508 manager components
+2) hints about default components?
+3) components without tab stops, filter out panels that don't have on click events }
+interface
+
+uses
+  SysUtils, DesignIntf, DesignEditors, TypInfo, Controls, StdCtrls, Classes, ToolsApi,
+  Forms, VA508AccessibilityManager, StrUtils, Windows, Variants, Dialogs;
+
+type
+  TVA508Compiler = class(TNotifierObject, IOTANotifier, IOTAIDENotifier, IOTAIDENotifier50, IOTAIDENotifier80)
+  private
+    FErrorCount: integer;
+    FWarningCount: integer;
+    FCached: integer;
+    FBuilt: integer;
+    FDFMDataCount: integer;
+    F508Problems: boolean;
+    FMessageLog: TStringList;
+    F508ManagersFound: boolean;
+    FCompileStopped: boolean;
+    FOpenFiles: TStringList;
+    procedure ScanFor508Errors(const Project: IOTAProject);
+    procedure startMessages;
+    procedure stopMessages;
+    procedure UpdateMonitor(FileName: string);
+    procedure StopCompile;
+    procedure msg(txt: String);
+    procedure infoMessage(fileName, infoText: string);
+    procedure error(fileName, errorText: string);
+    procedure warning(fileName, errorText: string);
+    function CompileNA: boolean;
+  protected
+    procedure AfterCompile(Succeeded: Boolean); overload;
+    procedure AfterCompile(Succeeded: Boolean; IsCodeInsight: Boolean); overload;
+    procedure AfterCompile(const Project: IOTAProject; Succeeded: Boolean; IsCodeInsight: Boolean); overload;
+    procedure BeforeCompile(const Project: IOTAProject; var Cancel: Boolean); overload;
+    procedure BeforeCompile(const Project: IOTAProject; IsCodeInsight: Boolean; var Cancel: Boolean); overload;
+    procedure FileNotification(NotifyCode: TOTAFileNotification; const FileName: string; var Cancel: Boolean);
+  public
+    constructor Create;
+    destructor Destroy; override;
+  end;
+
+procedure Register;
+procedure Unregister;
+procedure DLLUnload(Reason: Integer);
+
+implementation
+
+uses VA508AccessibilityCompileInfo, VAUtils,
+  VA508Classes, VA508AccessibilityPE;
+
+var
+  NotifierIndex: Integer = -1;
+  NotifierRegistered: boolean = false;
+  SaveDllProc: TDLLProc;
+  MessageService: IOTAMessageServices;
+
+const
+  VA508 = 'VA 508 ';
+  MSG_PREFIX = VA508 + 'Compile Scan';
+  VA508_SCAN = MSG_PREFIX + ' ';
+  VA508_SCAN_MESSAGE_START = VA508_SCAN + '...';
+  VA508_SCAN_DONE = VA508_SCAN + 'Complete - ';
+  VA508_ACCURACY_DISCALIMER = '  (scan is not accurate if there are unsaved forms)';
+  VA508_SCAN_PASSED = VA508_SCAN_DONE + 'No Errors or Warnings Found' + VA508_ACCURACY_DISCALIMER;
+  VA508_SCAN_ERROR_COUNT = VA508_SCAN_DONE + '%d Error%s Found'+VA508_ACCURACY_DISCALIMER;
+  VA508_SCAN_WARNING_COUNT = VA508_SCAN_DONE + '%d Warning%s Found'+VA508_ACCURACY_DISCALIMER;
+  VA508_SCAN_WARNINGS_AND_ERRORS_COUNT = VA508_SCAN_DONE + '%d Warning%s, and %d Error%s Found';
+  ERROR_DUPLICATE_COMPONENTS = 'There is more than one %s component on this form';
+  ERROR_READ_ONLY_FILE = 'Compile scan can''t automatically correct error because form files are read only.  Please change the read only file status.  ';
+  ERROR_CLOSE_FILE_FIRST = 'Compile scan can''t automatically correct error because form %s is currently open in Delphi.  Please close the file in Delphi.  ';
+  WARNING_NO_508_DATA = '"%s" has no accessibility data';
+  ERROR_INVALID_DFM = 'Form is not a Text DFM or is corrupted';
+  ERROR_CODE = '@\*^ERROR^*/@';
+  ERROR_CODE_LEN = length(ERROR_CODE);
+  WARNING_CODE = '@\*^WARNING^*/@';
+  WARNING_CODE_LEN = length(WARNING_CODE);
+  INFO_ALERT = ' ***** '; 
+  INFO_CODE = '@\*^INFO^*/@';
+  INFO_CODE_LEN = length(INFO_CODE);
+
+procedure Register;
+{$IFDEF VA508COMPILER}
+var
+  Services: IOTAServices;
+{$ENDIF}  
+begin
+{$IFDEF VA508COMPILER}
+  Services := BorlandIDEServices as IOTAServices;
+  NotifierRegistered := Assigned(Services);
+  if NotifierRegistered and (NotifierIndex = -1) then
+  begin
+    NotifierIndex := Services.AddNotifier(TVA508Compiler.Create);
+    SaveDllProc := DllProc;
+    DllProc := @DLLUnload;
+  end;
+{$ENDIF}
+end;
+
+procedure Unregister;
+var
+  Services: IOTAServices;
+begin
+  if NotifierRegistered and (NotifierIndex <> -1) then
+  begin
+    Services := BorlandIDEServices as IOTAServices;
+    if Assigned(Services) then
+    begin
+      Services.RemoveNotifier(NotifierIndex);
+      NotifierIndex := -1;
+      NotifierRegistered := false;
+    end;
+    DllProc := SaveDllProc;
+  end;
+end;
+
+procedure DLLUnload(Reason: Integer);
+begin
+  SaveDllProc(Reason);
+  if Reason = DLL_PROCESS_DETACH then
+    Unregister;
+end;
+
+{ TVA508CompileEnforcer }
+
+function HaveMessageServices: boolean;
+begin
+  MessageService := (BorlandIDEServices as IOTAMessageServices);
+  Result := assigned(MessageService);
+end;
+
+procedure TVA508Compiler.BeforeCompile(const Project: IOTAProject; IsCodeInsight: Boolean; var Cancel: Boolean);
+
+  function GetPluralStr(count: integer): string;
+  begin
+    if count = 1 then
+      Result := ''
+    else
+      Result := 's';
+  end;
+
+  procedure ShowErrorMessage(msgtxt: string; count: integer);
+  begin
+    if (count > 0) then
+      msg(Format(msgtxt, [count, GetPluralStr(count)]));
+  end;
+
+  procedure Do508Scan;
+  begin
+    startMessages;
+    msg(VA508_SCAN_MESSAGE_START);
+
+    ScanFor508Errors(Project);
+    
+    if F508ManagersFound and F508Problems then
+    begin
+      if (FWarningCount>0) and (FErrorCount>0) then
+        msg(Format(VA508_SCAN_WARNINGS_AND_ERRORS_COUNT, [FWarningCount, GetPluralStr(FWarningCount),
+                                                          FErrorCount, GetPluralStr(FErrorCount)]))
+      else
+      begin
+        ShowErrorMessage(VA508_SCAN_WARNING_COUNT, FWarningCount);
+        ShowErrorMessage(VA508_SCAN_ERROR_COUNT, FErrorCount);
+      end;
+
+      if (FErrorCount > 0 ) then
+      begin
+        Cancel := TRUE;
+        stopMessages;
+      end;
+    end
+    else
+      msg(VA508_SCAN_PASSED);
+  end;
+
+
+begin
+  if (not IsCodeInsight) and HaveMessageServices then
+  begin
+    Do508Scan;
+  end;
+end;
+
+
+procedure TVA508Compiler.BeforeCompile(const Project: IOTAProject; var Cancel: Boolean);
+begin
+end;
+
+
+procedure TVA508Compiler.AfterCompile(Succeeded: Boolean);
+begin
+end;
+
+procedure TVA508Compiler.AfterCompile(Succeeded, IsCodeInsight: Boolean);
+begin
+  if not IsCodeInsight then
+    stopMessages;
+end;
+
+procedure TVA508Compiler.AfterCompile(const Project: IOTAProject; Succeeded,
+  IsCodeInsight: Boolean);
+begin
+  if not IsCodeInsight then
+    stopMessages;
+end;
+
+function TVA508Compiler.CompileNA: boolean;
+begin
+  Result := FCompileStopped or (not F508ManagersFound);
+end;
+
+constructor TVA508Compiler.Create;
+begin
+  FOpenFiles := TStringList.Create;
+  FOpenFiles.Sorted := TRUE;
+  FOpenFiles.Duplicates := dupIgnore;
+end;
+
+destructor TVA508Compiler.Destroy;
+begin
+  FreeAndNil(FOpenFiles);
+  inherited;
+end;
+
+procedure TVA508Compiler.StopCompile;
+begin
+  FCompileStopped := true;
+end;
+
+procedure TVA508Compiler.startMessages;
+begin
+  MessageService.ClearCompilerMessages;
+  if assigned(FMessageLog) then
+    FMessageLog.Clear
+  else
+    FMessageLog := TStringList.Create;
+  FErrorCount := 0;
+  FWarningCount := 0;
+  FCached := 0;
+  FBuilt := 0;
+  F508Problems := false;
+  F508ManagersFound := false;
+  FCompileStopped := false;
+  FDFMDataCount := 0;
+end;
+
+
+procedure TVA508Compiler.stopMessages;
+var
+  i: integer;
+  txt: string;
+  ptr: pointer;
+
+  function MessageOK(text, code: String; codeLen: integer; Kind: TOTAMessageKind): boolean;
+  var
+    p: integer;
+    FileName: string;
+  begin
+    if (copy(text,1,codeLen) = code) then
+    begin
+      Result := FALSE;
+      delete(text,1,codeLen);
+      p := pos(code, text);
+      if (p > 0) then
+      begin
+        FileName := copy(text, 1, p-1);
+        delete(text,1,p + codeLen - 1);
+        MessageService.AddCompilerMessage(FileName, text, MSG_PREFIX, Kind, -1, -1, nil, ptr);
+        //MessageService.AddToolMessage(FileName, text, prefix, 0, 0);
+      end;
+    end
+    else
+      Result := TRUE;
+  end;
+
+begin
+  if CompileNA then exit;
+  if HaveMessageServices and Assigned(FMessageLog) then
+  begin
+    if FMessageLog.Count > 0 then
+      MessageService.ShowMessageView(nil);
+    for i := 0 to FMessageLog.Count-1 do
+    begin
+      txt := FMessageLog[i];
+      if MessageOK(txt, ERROR_CODE,   ERROR_CODE_LEN,   otamkError) and
+         MessageOK(txt, WARNING_CODE, WARNING_CODE_LEN, otamkWarn) and
+         MessageOK(txt, INFO_CODE, INFO_CODE_LEN, otamkInfo) then
+        MessageService.AddCompilerMessage('', txt, '', otamkInfo, -1, -1, nil, ptr);
+    end;
+  end;
+  if assigned(FMessageLog) then
+    FreeAndNil(FMessageLog);
+end;
+
+procedure TVA508Compiler.UpdateMonitor(FileName: String);
+begin
+  if not FCompileStopped then
+    Update508Monitor(ExtractFileName(FileName), FDFMDataCount, FWarningCount, FErrorCount, FCached, FBuilt, F508ManagersFound);
+end;
+
+procedure TVA508Compiler.error(fileName, errorText: string);
+begin
+  if assigned(FMessageLog) then
+    FMessageLog.add(ERROR_CODE + fileName + ERROR_CODE + errorText);
+  inc(FErrorCount);
+  F508Problems := TRUE;
+  UpdateMonitor(fileName);
+end;
+
+procedure TVA508Compiler.warning(fileName, errorText: string);
+begin
+  if assigned(FMessageLog) then
+    FMessageLog.add(WARNING_CODE + fileName + WARNING_CODE + errorText);
+  inc(FWarningCount);
+  F508Problems := TRUE;
+  UpdateMonitor(fileName);
+end;
+
+procedure TVA508Compiler.msg(txt: String);
+begin
+  if assigned(FMessageLog) then
+    FMessageLog.add(txt);
+end;
+
+procedure TVA508Compiler.FileNotification(
+  NotifyCode: TOTAFileNotification; const FileName: string;
+  var Cancel: Boolean);
+var
+  idx: integer;
+begin
+  if assigned(FOpenFiles) then
+  begin
+    case NotifyCode of
+      ofnFileOpened: FOpenFiles.Add(FileName);
+      ofnFileClosing:
+        begin
+          idx := FOpenFiles.IndexOf(FileName);
+          if idx >= 0 then
+            FOpenFiles.Delete(idx);
+        end;
+    end;
+  end;
+end;
+
+procedure TVA508Compiler.infoMessage(fileName, infoText: string);
+begin
+  if assigned(FMessageLog) then
+    FMessageLog.add(INFO_CODE + fileName + INFO_CODE + INFO_ALERT + infoText);
+  UpdateMonitor(fileName);
+end;
+{
+
+    Data = ()
+
+  inherited mgrMain: TVA508AccessibilityManager
+    Tag = 123
+    OnAccessRequest = mgrMainAccessRequest
+    Left = 16
+    Top = 32
+    Data = (
+      (
+        'Component = Panel1'
+        'Label = Label1'
+        'Status = stsOK')
+      (
+        'Component = Button2'
+        'Property = Caption'
+        'Status = stsOK')
+      (
+        'Component = Memo1'
+        'Status = stsNoData')
+      (
+        'Component = RadioButton1'
+        'Text = Testing'
+        'Status = stsOK')
+      (
+        'Component = Edit1'
+        'Status = stsNoTabStop')
+      (
+        'Component = Form14'
+        'Property = Caption'
+        'Status = stsOK'))
+  end    
+}
+// needs alot of work but good enough for now...
+procedure TVA508Compiler.ScanFor508Errors(const Project: IOTAProject);
+const
+  CACHE_EXT = '.VA508';
+  END_OF_INDEX = '|EOINDEX|';
+  OBJ_NAME = 'object ';
+  OBJ_NAME_LEN = length(OBJ_NAME);
+  INHERITED_NAME = 'inherited ';
+  INHERITED_NAME_LEN = length(INHERITED_NAME);
+
+  OBJECT_END = 'end';
+
+  QUOTE = '''';
+  ACCESS_DATA_START_MARKER = '(';
+  ACCESS_DATA_END_MARKER = ')';
+
+  ACCESS_DATA_BEGIN = VA508DFMDataPropertyName + EQU + ACCESS_DATA_START_MARKER;
+  ACCESS_DATA_EMPTY = ACCESS_DATA_BEGIN + ACCESS_DATA_END_MARKER;
+
+  ACCESS_DATA_COMPONENT = QUOTE + AccessDataComponentText + EQU;
+  ACCESS_DATA_COMPONENT_LEN = length(ACCESS_DATA_COMPONENT);
+
+  MAX_PASS_COUNT = 20;
+
+var
+  resourceIndex: integer;
+  dfm: TStringList;
+  tracker: TParentChildFormTracker;
+  lastValidObjectLineWasInherited, lastManagerWasInherited: boolean;
+  lastValidObjectLineClass: string;
+  parser: TVA508Parser;
+  info: IOTAModuleInfo;
+  CurrentFile: string;
+  clsManagerName, ErrorStatusText, lastManagerComponentName: string;
+  ComponentWarnings: TStringList;
+  Working: boolean;
+  PassCount: integer;
+  EmptyManagerList: TStringList;
+  OpenFilesBefore: TStringList;
+  Cache: TStringList;
+  CacheXRef: TStringList;
+  CacheFile: string;
+  CacheModified: boolean;
+  CacheIndex: integer;
+  CacheXRefIndex: integer;
+  CacheSize: integer;
+  CacheValid: boolean;
+
+  Module: IOTAModule;
+  Editor: IOTAEditor;
+
+  procedure IncCacheIndexes(Start, Amount: integer);
+  var
+    i: integer;
+    value: integer;
+  begin
+    i := start;
+    if (i mod 2) <> 0 then
+      inc(i);
+    while i < CacheXRef.Count do
+    begin
+      value := integer(CacheXRef.Objects[i]) + Amount;
+      CacheXRef.Objects[i] := TObject(value);
+      inc(i, 2);
+    end;
+  end;
+
+  procedure SetCacheSize(amount: integer);
+  var
+    diff: integer;
+  begin
+    diff := amount - CacheSize;
+    CacheSize := amount;
+    CacheXRef.Objects[CacheXRefIndex + 1] := TObject(CacheSize);
+    IncCacheIndexes(CacheXRefIndex + 2, diff);
+    CacheModified := TRUE;
+  end;
+
+  procedure Add2Cache(line: string);
+  begin
+    if not CacheValid then
+    begin
+      Cache.Insert(CacheIndex, line);
+      inc(CacheIndex);
+      SetCacheSize(CacheSize + 1);
+    end;
+  end;
+
+  function GetDFMFileName(FileName: string): string;
+  begin
+    Result := copy(FileName,1,Length(FileName)-4) + '.dfm'
+  end;
+
+  function ValidObjectLine(line: String): boolean;
+  var
+    p: integer;
+  begin
+    lastValidObjectLineClass := '';
+    lastValidObjectLineWasInherited := false;
+    result := (LeftStr(line,OBJ_NAME_LEN) = OBJ_NAME);
+    if not result then
+    begin
+      result := (LeftStr(line,INHERITED_NAME_LEN) = INHERITED_NAME);
+      if result then lastValidObjectLineWasInherited := TRUE;
+    end;
+    if result then
+    begin
+      p := pos(':',line);
+      if p>0 then
+        lastValidObjectLineClass := trim(copy(line,p+1,MaxInt));
+    end;
+  end;
+
+  procedure ValidateDFM(var wasDFMValid: boolean; var wasDFMInherited: boolean;
+                        var FormClassName: string);
+  begin
+    Add2Cache(dfm[0]);
+    wasDFMValid := ValidObjectLine(dfm[0]);
+    wasDFMInherited := lastValidObjectLineWasInherited;
+    FormClassName := lastValidObjectLineClass;
+  end;
+
+  function GetComponentName(line: string): string;
+  var
+    p,p2: integer;
+  begin
+    Result := '';
+    p := pos(':',line);
+    if p>1 then
+    begin
+      dec(p);
+      p2 := p;
+      while((p>0) and (line[p]<>' ')) do
+        dec(p);
+      Result := trim(copy(line,p+1,p2-p));
+    end;
+  end;
+
+  procedure ClearWarningList(FileName: String);
+  var
+    idx: integer;
+  begin
+    idx := ComponentWarnings.IndexOf(FileName);
+    if idx >= 0 then
+    begin
+      ComponentWarnings.Objects[idx].Free;
+      ComponentWarnings.Delete(idx);
+    end;
+  end;
+
+  function GetWarningList(FileName: String): TStringList;
+  var
+    idx: integer;
+  begin
+    Result := nil;
+    idx := ComponentWarnings.IndexOf(FileName);
+    if idx >= 0 then
+      Result := TStringList(ComponentWarnings.Objects[idx]);
+  end;
+
+  procedure GetManagerInfo(var ManagerCount: integer; var EmptyManager: boolean);
+  var
+    i: integer;
+    InManager, InAccessData, InItem, InError: boolean;
+    line, Component: string;
+    warnings: TStringList;
+
+  begin
+    warnings := GetWarningList(CurrentFile);
+    ManagerCount := 0;
+    EmptyManager := FALSE;
+    InManager := FALSE;
+    InAccessData := FALSE;
+    InItem := FALSE;
+    Component := '';
+    InError := FALSE;
+    i := 0;
+    while i < dfm.count do
+    begin
+      line := trim(dfm[i]);
+      if InManager then
+      begin
+        Add2Cache(line);
+        if InAccessData then
+        begin
+          if InItem then
+          begin
+            if RightStr(line,1) = ACCESS_DATA_END_MARKER then
+            begin
+              InItem := FALSE;
+              delete(line, length(line), 1);
+            end;
+            if RightStr(line,1) = ACCESS_DATA_END_MARKER then
+            begin
+              InAccessData := FALSE;
+              delete(line, length(line), 1);
+            end;
+
+            if LeftStr(line, ACCESS_DATA_COMPONENT_LEN) = ACCESS_DATA_COMPONENT then
+              Component := copy(line, ACCESS_DATA_COMPONENT_LEN + 1,
+                              length(line) - ACCESS_DATA_COMPONENT_LEN - 1)
+            else if line = ErrorStatusText then
+              InError := TRUE;
+
+            if (not InItem) and InError and (Component <> '') then
+            begin
+              if not assigned(warnings) then
+              begin
+                warnings := TStringList.Create;
+                ComponentWarnings.AddObject(CurrentFile, warnings);
+              end;
+              warnings.Add(Component);
+            end;
+          end
+          else
+          begin
+            if line = ACCESS_DATA_START_MARKER then
+            begin
+              InItem := TRUE;
+              Component := '';
+              InError := FALSE;
+            end;
+          end;
+        end
+        else
+        begin
+          if line = ACCESS_DATA_BEGIN then
+          begin
+            InAccessData := TRUE;
+            InItem := FALSE;
+          end
+          else
+          if line = ACCESS_DATA_EMPTY then
+          begin
+//            if EmptyManagerList.IndexOf(CurrentFile) < 0 then
+  //          begin
+    //          EmptyManager := TRUE;
+      //        EmptyManagerList.Add(CurrentFile);
+        //    end;
+          end
+          else
+          if line = OBJECT_END then
+            InManager := FALSE;
+        end;
+      end
+      else
+      if ValidObjectLine(line) then
+      begin
+        if lastValidObjectLineClass = clsManagerName then
+        begin
+          Add2Cache(line);
+          lastManagerComponentName := GetComponentName(dfm[i]);
+          lastManagerWasInherited := lastValidObjectLineWasInherited;
+          inc(ManagerCount);
+          if ManagerCount > 1 then exit;
+          InManager := TRUE;
+        end;
+      end;
+      inc(i);
+    end;
+  end;
+
+  procedure ReportComponentWarnings;
+  var
+    i, j: integer;
+    list: TStringList;
+    fileName: string;
+
+  begin
+    for i := 0 to ComponentWarnings.Count-1 do
+    begin
+      fileName := ComponentWarnings[i];
+      list := TStringList(ComponentWarnings.Objects[i]);
+      for j := 0 to List.Count - 1 do
+      begin
+        warning(fileName, Format(WARNING_NO_508_DATA, [list[j]]));
+      end;
+    end;
+  end;
+
+  procedure InitCache(AFileName: string);
+  var
+    SR: TSearchRec;
+    SRData: string;
+    I: integer;
+
+  begin
+    try
+      if FindFirst(AFileName, faAnyFile, SR) = 0 then
+      begin
+        SRData := IntToStr(SR.Size) + '/' + IntToStr(SR.Time);
+        CacheXRefIndex := CacheXRef.IndexOf(AFileName);
+        if CacheXRefIndex < 0 then
+        begin
+          inc(FBuilt);
+          CacheIndex := Cache.Count;
+          CacheSize := 0;
+          CacheValid := FALSE;
+          CacheXRefIndex := CacheXRef.AddObject(AFileName, TObject(CacheIndex));
+          CacheXRef.AddObject(SRData, TObject(CacheSize));
+          CacheModified := TRUE;
+        end
+        else
+        begin
+          CacheIndex := integer(CacheXRef.Objects[CacheXRefIndex]);
+          CacheSize := integer(CacheXRef.Objects[CacheXRefIndex+1]);
+          CacheValid := (CacheXRef[CacheXRefIndex+1] = SRData);
+          if CacheValid then
+            inc(FCached)
+          else
+          begin
+            inc(FBuilt);
+            CacheXRef[CacheXRefIndex+1] := SRData;
+            for I := 1 to CacheSize do
+              Cache.Delete(CacheIndex);
+            SetCacheSize(0);
+          end;
+        end;
+        UpdateMonitor(AFileName);
+      end;
+    finally
+      SysUtils.FindClose(SR);
+    end;
+  end;
+
+  function FileLoaded(AFileName: string; data: TStringList): boolean;
+  var
+    Temp, I: integer;
+  begin
+    Result := FALSE;
+    try
+      if FileExists(AFileName) then
+      begin
+        InitCache(AFileName);
+        data.Clear;
+        if CacheValid then
+        begin
+          Temp := StrToIntDef(Cache[CacheIndex], 0);
+          inc(FDFMDataCount, Temp);
+          UpdateMonitor(AFileName);
+          Result := TRUE;
+          for I := 1 to CacheSize-1 do
+            data.Add(Cache[CacheIndex+i]);
+        end
+        else
+        begin
+          data.LoadFromFile(AFileName);
+          Result := data.Count > 0;
+          if Result then
+          begin
+            inc(FDFMDataCount, data.Count);
+            Add2Cache(IntToStr(data.Count));
+            UpdateMonitor(AFileName);
+          end;
+        end;
+      end;
+    except
+    end;
+  end;
+
+  function DFMSuccessfullyLoaded: boolean;
+  begin
+    Result := FALSE;
+    if assigned(info) then
+    begin
+      if info.GetModuleType = omtForm then
+      begin
+        CurrentFile := info.FileName;
+        if RightStr(UpperCase(CurrentFile), 4) = '.PAS' then
+        begin
+          Result := FileLoaded(GetDFMFileName(CurrentFile), dfm);
+        end;
+      end;
+    end;
+  end;
+
+  procedure ScanForErrors;
+  var
+    count: integer;
+    wasDFMValid, wasFormInherited, EmptyManager: boolean;
+    formClassName: String;
+  begin
+    lastManagerComponentName := '';
+    formClassName := '';
+    wasDFMValid := FALSE;
+    EmptyManager := false;
+    wasFormInherited := FALSE;
+    lastManagerWasInherited := FALSE;
+    ValidateDFM(wasDFMValid, wasFormInherited, formClassName);
+    if wasDFMValid then
+    begin
+      GetManagerInfo(count, EmptyManager);
+      tracker.AddForm(CurrentFile, formClassName, lastManagerComponentName,
+                     EmptyManager, wasFormInherited, lastManagerWasInherited);
+      if count > 0 then
+        F508ManagersFound := true;
+      if count > 1 then
+      begin
+        ClearWarningList(CurrentFile);
+        error(CurrentFile, Format(ERROR_DUPLICATE_COMPONENTS, [clsManagerName]));
+      end;
+    end
+    else
+      error(CurrentFile, ERROR_INVALID_DFM)
+  end;
+
+  procedure ScanFormFiles;
+  var
+    i: integer;
+  begin
+    for i := 0 to Project.GetModuleCount-1 do
+    begin
+      if FCompileStopped then exit;
+      info := Project.GetModule(i);
+      try
+        if DFMSuccessfullyLoaded then
+          ScanForErrors;
+      finally
+        info := nil;
+      end;
+    end;
+  end;
+
+  procedure OpenEditor;
+  begin
+    if assigned(info) and (info.GetModuleType = omtForm) then
+    begin
+      module := info.OpenModule;
+      if assigned(module) then
+      begin
+        Editor := Module.CurrentEditor;
+      end;
+    end;
+  end;
+
+  procedure CloseEditor;
+  begin
+    Editor := nil;
+    try
+      if OpenFilesBefore.IndexOf(CurrentFile) < 0 then
+      begin
+        try
+          module.CloseModule(TRUE);
+        except
+        end;
+      end;
+    finally
+      module := nil;
+    end;
+  end;
+
+  procedure AttemptAutoFix(index: integer; var ErrorText: string);
+  var
+    data: TFormData;
+    code: TParentChildErrorCode;
+    buffer: TStringList;
+    dfmFile, line: string;
+
+  begin
+    code := tracker.ParentChildErrorStatus(index);
+    if not (code in TAutoFixFailCodes) then exit;
+    data := tracker.GetFormData(index);
+    info := Project.FindModuleInfo(data.FileName);
+    if not (assigned(info)) then
+    begin
+      ErrorText := 'Design info not found when attempting autofix.  ';
+      exit;
+    end;
+
+    OpenEditor;
+    try
+      if code in [pcNoChildComponent, pcEmptyManagerComponent, pcInheritedNoParent] then
+      begin
+        Editor.MarkModified;
+        Module.Save(FALSE,TRUE);
+        Working := TRUE;
+        if code = pcInheritedNoParent then
+          infoMessage(data.FileName,
+            Format('Form %s has been automatically rebuilt to accommodate deletion of parent %s component', [data.FormClassName, clsManagerName]))
+        else
+          infoMessage(data.FileName,
+            Format('Form %s has been automatically rebuilt to accommodate new %s component', [data.FormClassName, clsManagerName]));
+      end;
+    finally
+      CloseEditor;
+    end;
+    if (ErrorText = '') and (code = pcNoInheritence) then
+    begin
+      dfmFile := GetDFMFileName(data.FileName);
+      try
+        buffer := TStringList.Create;
+        try
+          buffer.LoadFromFile(dfmFile);
+          if (buffer.Count > 0) and (LeftStr(buffer[0], OBJ_NAME_LEN) = OBJ_NAME) then
+          begin
+            line := INHERITED_NAME + copy(buffer[0], OBJ_NAME_LEN + 1, MaxInt);
+            buffer[0] := line;
+            buffer.SaveToFile(dfmFile);
+            Working := TRUE;
+            infoMessage(data.FileName, Format('Form %s has been automatically converted to an inherited form', [data.FormClassName]));
+          end;
+        finally
+          buffer.free;
+        end;
+      except
+        on e: Exception do
+          ErrorText := 'Error ' + e.Message + ' updating DFM File.  ';
+      end;
+    end;
+  end;
+
+  {$WARNINGS OFF} // Don't care about platform specific warning
+  function IsFileReadOnly(FileName: string): boolean;
+  begin
+    Result := ((FileGetAttr(FileName) and faReadOnly) <> 0);
+  end;
+  {$WARNINGS ON}
+
+  procedure HandleInheritenceProblems;
+  var
+    i, j, p: integer;
+    data: TFormData;
+    parentClass: string;
+    code: TParentChildErrorCode;
+    ErrorText, BaseError, DFMFile: string;
+    ReadOnly: boolean;
+    DataString: string;
+    DataStrings: TStringList;
+    InStream: TStream;
+    OutStream: TStream;
+
+  begin
+    for i := 0 to tracker.FormCount - 1 do
+    begin
+      if FCompileStopped then exit;
+      data := tracker.GetFormData(i);
+      InitCache(data.FileName);
+      if CacheValid then
+      begin
+        DataString := '';
+        for j := 0 to CacheSize-1 do
+          DataString := DataString + Cache[CacheIndex + j] + #10#13;
+        InStream := TStringStream.Create(DataString);
+      end
+      else
+        InStream := nil;
+      parentClass := parser.GetParentClassName(data.FormClassName, data.FileName, InStream, OutStream);
+      if assigned(OutStream) then
+      begin
+        try
+          if (not CacheValid) then
+          begin
+            p := parser.LastPosition;
+            OutStream.Position := 0;
+            DataStrings := TStringList.Create;
+            try
+              DataString := '';
+              SetLength(DataString, p);
+              OutStream.ReadBuffer(PChar(DataString)^, p);
+              DataStrings.Text := DataString;
+              for j := 0 to DataStrings.Count - 1 do
+                Add2Cache(DataStrings[j]);
+            finally
+              DataStrings.free;
+            end;
+          end;
+        finally
+          OutStream.Free;
+        end;
+      end;
+      inc(FDFMDataCount, parser.LastLineRead);
+      UpdateMonitor(data.FileName);
+      tracker.AddLink(parentClass, data.FormClassName);
+    end;
+    for i := 0 to tracker.FormCount - 1 do
+    begin
+      if FCompileStopped then exit;
+      code := tracker.ParentChildErrorStatus(i);
+      if code in TParentChildFailCodes then
+      begin
+        BaseError := tracker.ParentChildErrorDescription(i);
+        data := tracker.GetFormData(i);
+        ClearWarningList(data.FileName);
+        DFMFile := GetDFMFileName(Data.FileName);
+        ErrorText := '';
+        if code in TAutoFixFailCodes then
+        begin
+          ReadOnly := IsFileReadOnly(DFMFile);
+          if (not ReadOnly) then
+            ReadOnly := IsFileReadOnly(Data.FileName);
+          if ReadOnly then
+            ErrorText := ERROR_READ_ONLY_FILE + BaseError
+          else
+          begin
+            if (FOpenFiles.IndexOf(Data.FileName) >= 0) or
+               (FOpenFiles.IndexOf(DFMFile) >= 0) then
+              ErrorText := Format(ERROR_CLOSE_FILE_FIRST + BaseError, [data.FormClassName])
+            else
+              AttemptAutoFix(i, ErrorText);
+          end;
+        end
+        else
+          ErrorText := BaseError;
+        if ErrorText <> '' then
+          error(DFMFile, ErrorText);
+      end;
+    end;
+  end;
+
+  procedure CloseModules;
+  var
+    i: integer;
+  begin
+    for i := 0 to FOpenFiles.Count - 1 do
+    begin
+      if OpenFilesBefore.IndexOf(FOpenFiles[i]) < 0 then
+      begin
+        info := Project.FindModuleInfo(FOpenFiles[i]);
+        if assigned(info) then
+        begin
+          try
+            module := info.OpenModule;
+            if assigned(module) then
+            begin
+              try
+                try
+                  module.CloseModule(TRUE);
+                except
+                end;
+              finally
+                module := nil;
+              end;
+            end;
+          finally
+            info := nil;
+          end;
+        end;
+      end;
+    end;
+  end;
+
+  procedure LoadCacheFile;
+  var
+    ProjectName: String;
+    i,idx,offset, size: integer;
+
+  begin
+    ProjectName := Project.FileName;
+    CacheFile := Project.ProjectOptions.Values['UnitOutputDir'];
+    if CacheFile = '' then
+      CacheFile := ExtractFilePath(ProjectName);
+    CacheFile := AppendBackSlash(CacheFile);
+    CacheFile := CacheFile + ExtractFileName(ProjectName);
+    CacheFile := copy(CacheFile, 1, length(CacheFile) - length(ExtractFileExt(ProjectName))) + CACHE_EXT;
+    Cache := TStringList.Create;
+    CacheXRef := TStringList.Create;
+    if FileExists(CacheFile) then
+    begin
+      Cache.LoadFromFile(CacheFile);
+      idx := Cache.IndexOf(END_OF_INDEX);
+      if (idx < 0) or ((idx mod 4) <> 0) then
+        Cache.Clear
+      else
+      begin
+        idx := idx div 4;
+        for i := 1 to idx do
+        begin
+          offset := StrToIntDef(Cache[2], -1);
+          size := StrToIntDef(Cache[3], -1);
+          if (offset < 0) or (size < 0) then // bad file.
+          begin
+            Cache.Clear;
+            CacheXRef.Clear;
+            break;
+          end;
+          CacheXRef.addObject(Cache[0], TObject(offset));
+          CacheXRef.addObject(Cache[1], TObject(size));
+          Cache.Delete(0);
+          Cache.Delete(0);
+          Cache.Delete(0);
+          Cache.Delete(0);
+        end;
+        Cache.Delete(0); // deletes END_OF_INDEX line
+      end;
+    end;
+    CacheModified := FALSE;
+  end;
+
+  procedure SaveCacheFile;
+  var
+    CacheIndex, XRefIndex, i: integer;
+    offset, size: integer;
+    count: integer;
+
+  begin
+    if CacheModified then
+    begin
+      size := Cache.Count + (CacheXRef.Count * 2) + 1;
+      if Cache.Capacity < size then
+        Cache.Capacity := size;
+      Cache.Insert(0, END_OF_INDEX);
+      CacheIndex := 0;
+      XRefIndex := 0;
+      count := CacheXRef.Count div 2;
+      for i := 0 to count-1 do
+      begin
+        offset := Integer(CacheXRef.Objects[XRefIndex]);
+        Cache.Insert(CacheIndex, CacheXRef[XRefIndex]);
+        inc(CacheIndex);
+        inc(XRefIndex);
+        size := Integer(CacheXRef.Objects[XRefIndex]);
+        Cache.Insert(CacheIndex, CacheXRef[XRefIndex]);
+        inc(CacheIndex);
+        inc(XRefIndex);
+        Cache.Insert(CacheIndex, IntToStr(offset));
+        inc(CacheIndex);
+        Cache.Insert(CacheIndex, IntToStr(size));
+        inc(CacheIndex);
+      end;
+      Cache.SaveToFile(CacheFile);
+    end;
+    CacheXRef.Free;
+    Cache.Free;
+  end;
+
+
+  procedure CreateResources;
+  var
+    i: integer;
+  begin
+    Working := TRUE;
+    PassCount := 0;
+    resourceIndex := 0;
+    clsManagerName := TVA508AccessibilityManager.ClassName;
+    ErrorStatusText := QUOTE + AccessDataStatusText + EQU +
+                        GetEnumName(TypeInfo(TVA508AccessibilityStatus), Ord(stsNoData)) + QUOTE;
+    info := nil;
+    Editor := nil;
+    module := nil;
+    for i := 1 to 6 do
+    begin
+      case i of
+        1: StartMonitor(Project.FileName, StopCompile);
+        2: begin
+            dfm := TStringList.Create;
+            ComponentWarnings := TStringList.Create;
+            EmptyManagerList := TStringList.Create;
+            OpenFilesBefore := TStringList.Create;
+           end;
+        3: parser := TVA508Parser.Create;
+        4: tracker := TParentChildFormTracker.Create;
+        5: OpenFilesBefore.AddStrings(FOpenFiles);
+        6: LoadCacheFile;
+      end;
+      resourceIndex := i;
+    end;
+  end;
+
+  procedure DestroyResources;
+  var
+    i: integer;
+  begin
+    for i := resourceIndex downto 1 do
+    begin
+      try
+        case i of
+          6: SaveCacheFile;
+          5: CloseModules;
+          4: tracker.Free;
+          3: parser.Free;
+          2: begin
+              OpenFilesBefore.Free;
+              EmptyManagerList.Free;
+              ComponentWarnings.Free;
+              dfm.free;
+             end;
+          1: StopMonitor;
+        end;
+      except
+      end;
+    end;
+  end;
+
+  procedure Init;
+  var
+    i: integer;
+  begin
+    for I := 0 to ComponentWarnings.Count - 1 do
+      ComponentWarnings.Objects[i].Free;
+    ComponentWarnings.Clear;
+    tracker.Clear;
+    Working := FALSE;
+    inc(PassCount);
+  end;
+
+begin
+  try
+    CreateResources;
+    while Working and (passCount < MAX_PASS_COUNT) do
+    begin
+      Init;
+      ScanFormFiles;
+      if not CompileNA then
+        HandleInheritenceProblems;
+    end;
+    if not CompileNA then
+      ReportComponentWarnings;
+  finally
+
+    DestroyResources;
+  end;
+end;
+initialization
+
+finalization
+  Unregister;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityConst.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityConst.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityConst.pas	(revision 1676)
@@ -0,0 +1,81 @@
+unit VA508AccessibilityConst;
+
+interface
+
+uses
+  Windows, SysUtils;
+  
+// When a component receives focus, the screen reader needs to request data about the
+// component.  The Call Back proc is called, and the VA app then supplies the info by
+// returning the requested values
+
+const
+  JAWS_REQUIRED_VERSION     = '7.10.500';
+  JAWS_APPLICATION_FILENAME = 'jfw.exe';
+  
+// flags sent to and from the screen reader
+// if data is not sent from the app, then the screen reader should use it's default mechanism to
+// read the data.
+  DATA_ALL_BITS                  = $FFFFFF;
+
+  DATA_NONE                      = $000000; // No flags set
+
+  DATA_CAPTION                   = $000001; // Sent both ways indicating data requested / sent
+  DATA_VALUE                     = $000002; // Sent both ways indicating data requested / sent
+  DATA_CONTROL_TYPE              = $000004; // Sent both ways indicating data requested / sent
+  DATA_STATE                     = $000008; // Sent both ways indicating data requested / sent
+  DATA_INSTRUCTIONS              = $000010; // Sent both ways indicating data requested / sent
+  DATA_ITEM_INSTRUCTIONS         = $000020; // Sent both ways indicating data requested / sent
+  DATA_DATA                      = $000040; // Sent both ways indicating data requested / sent
+  DATA_MASK_DATA                 = DATA_ALL_BITS - DATA_DATA;
+
+  DATA_CHANGE_EVENT              = $001000; // Sent by app indicating am item or state change event
+  DATA_MASK_CHANGE_EVENT         = DATA_ALL_BITS - DATA_CHANGE_EVENT;
+
+  DATA_ITEM_CHANGED              = $002000; // in a change event, indicates a child item has changed
+
+  DATA_CUSTOM_KEY_COMMAND        = $100000; // custom key command
+  DATA_CUSTOM_KEY_COMMAND_MASK   = DATA_ALL_BITS - $100000; 
+
+  DATA_ERROR                     = $800000; // component not found
+
+const
+  BEHAVIOR_ADD_DICTIONARY_CHANGE            = $0001; // pronounce a word differently
+  BEHAVIOR_ADD_COMPONENT_CLASS              = $0002; // add assignment to treat a custom component class as a standard component class
+  BEHAVIOR_REMOVE_COMPONENT_CLASS           = $0003; // remove assignment treat a custom component class as a standard component class
+  BEHAVIOR_ADD_COMPONENT_MSAA               = $0004; // add assignment to use MSAA for class information
+  BEHAVIOR_REMOVE_COMPONENT_MSAA            = $0005; // remove assignment to use MSAA for class information
+  BEHAVIOR_ADD_CUSTOM_KEY_MAPPING           = $0006; // assign a custom key mapping
+  BEHAVIOR_ADD_CUSTOM_KEY_DESCRIPTION       = $0007; // assign a custom key mapping Description
+  BEHAVIOR_PURGE_UNREGISTERED_KEY_MAPPINGS  = $0008; // purge custom key mappings that were not assigned using BEHAVIOR_ADD_CUSTOM_KEY_MAPPING
+
+const
+  CLASS_BEHAVIOR_BUTTON       = 'Button';
+  CLASS_BEHAVIOR_CHECK_BOX    = 'CheckBox';
+  CLASS_BEHAVIOR_COMBO_BOX    = 'ComboBox';
+  CLASS_BEHAVIOR_DIALOG       = 'Dialog';
+  CLASS_BEHAVIOR_EDIT         = 'Edit';
+  CLASS_BEHAVIOR_EDIT_COMBO   = 'EditCombo';
+  CLASS_BEHAVIOR_GROUP_BOX    = 'GroupBox';
+  CLASS_BEHAVIOR_LIST_VIEW    = 'ListView';
+  CLASS_BEHAVIOR_LIST_BOX     = 'ListBox';
+  CLASS_BEHAVIOR_TREE_VIEW    = 'TreeView';
+  CLASS_BEHAVIOR_STATIC_TEXT  = 'StaticText';
+
+const
+  CRLF = #13#10;
+  ERROR_INTRO =
+    'In an effort to more fully comply with Section 508 of the Rehabilitation' + CRLF +
+    'Act, the software development team has created a special Accessibility' + CRLF +
+    'Framework that directly communicates with screen reader applications.' + CRLF + CRLF;
+
+type
+  TConfigReloadProc = procedure of object;
+  TComponentDataRequestProc = procedure(WindowHandle: HWND; DataRequest: LongInt); stdcall;
+  TVA508QueryProc = procedure(Sender: TObject; var Text: string);
+  TVA508ListQueryProc = procedure(Sender: TObject; ItemIndex: integer; var Text: string);
+  TVA508Exception = Exception;
+
+implementation
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityGroup.bdsgroup
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityGroup.bdsgroup	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityGroup.bdsgroup	(revision 1676)
@@ -0,0 +1,20 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Default.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{D75859E0-03E1-4DC9-B3AF-DB614693F4CA}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Default.Personality>  <Projects>
+      <Projects Name="VA508Access2006.bpl">VA508Access2006.bdsproj</Projects>
+      <Projects Name="JAWS.SR">JAWS\JAWS.bdsproj</Projects>
+      <Projects Name="Targets">VA508Access2006.bpl JAWS.SR</Projects>
+    </Projects>
+    <Dependencies/>
+  </Default.Personality>
+	<StarTeamAssociation></StarTeamAssociation>
+	<StarTeamNonRelativeFiles></StarTeamNonRelativeFiles>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityManager.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityManager.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityManager.pas	(revision 1676)
@@ -0,0 +1,3834 @@
+unit VA508AccessibilityManager;
+
+interface
+{ TODO -oJeremy Merrill -c508 :Remove Main Form from component list}
+{ TODO -oJeremy Merrill -c508 :
+Figure out a way to handle a component being renamed on a parent form - the child form now
+references the component under a different name }
+uses
+  Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Forms, Contnrs, Dialogs,
+  StrUtils, Buttons, ComCtrls, ExtCtrls, TypInfo, Graphics, VAClasses, VAUtils,
+  VA508AccessibilityConst;
+
+const
+  VA508AccessibilityManagerVersion = '1.10';
+
+type
+  TVA508AccessibilityManager = class;
+  TVA508AccessibilityCollection = class;
+  TVA508ComponentManager = class;
+
+  TVA508AccessibilityStatus = (stsOK, stsNoTabStop, stsDefault, stsNoData);
+
+  TVA508AccessibilityItem = class(TCollectionItem)
+  private
+    FComponent: TWinControl;
+    FComponentManager: TVA508ComponentManager;
+    FLabel: TLabel;
+    FProperty: string;
+    FText: string;
+    FDefault: boolean;
+    FStatus: TVA508AccessibilityStatus;
+    procedure SetComponent(const Component: TWinControl);
+    procedure InitComponent(const Component: TWinControl; FromManager: boolean);
+    procedure SetLabel(const Value: TLabel);
+    procedure SetProperty(const Value: string);
+    procedure SetText(const Value: string);
+    function Parent: TVA508AccessibilityCollection;
+    procedure SetDefault(const Value: boolean);
+  protected
+    function GetDisplayName: string; override;
+  public
+    constructor Create(Collection: TCollection); override;
+    destructor Destroy; override;
+    procedure Assign(Source: TPersistent); override;
+    procedure UpdateStatus;
+    function Manager: TVA508AccessibilityManager;
+    property Status: TVA508AccessibilityStatus read FStatus write FStatus;
+    property ComponentManager: TVA508ComponentManager read FComponentManager write FComponentManager;
+  published
+    property AccessLabel: TLabel read FLabel write SetLabel;
+    property AccessProperty: string read FProperty write SetProperty;
+    property AccessText: string read FText write SetText;
+    property Component: TWinControl read FComponent write SetComponent;
+    property UseDefault: boolean read FDefault write SetDefault;
+    property DisplayName: string read GetDisplayName;
+  end;
+
+  TVA508AccessibilityCollection = class(TCollection)
+  private
+    FRegistry: TStringList;
+    FManager: TVA508AccessibilityManager;
+    FNotifier: TVANotificationEventComponent;
+    procedure ComponentNotifyEvent(AComponent: TComponent; Operation: TOperation);
+  protected
+    function IsComponentRegistered(Component: TWinControl): boolean;
+    procedure RegisterComponent(Component: TWinControl; Item: TVA508AccessibilityItem);
+    procedure UnregisterComponent(Component: TWinControl);
+    function GetItem(Index: Integer): TVA508AccessibilityItem;
+    procedure SetItem(Index: Integer; Value: TVA508AccessibilityItem);
+    function GetOwner: TPersistent; override;
+//    procedure Update(Item: TCollectionItem); override;
+  public
+    constructor Create(Manager: TVA508AccessibilityManager);
+    destructor Destroy; override;
+    procedure EnsureItemExists(Component: TWinControl);
+    function FindItem(Component: TWinControl; CreateIfNotFound: boolean = true): TVA508AccessibilityItem;
+    function Add: TVA508AccessibilityItem;
+    property Items[Index: Integer]: TVA508AccessibilityItem read GetItem write SetItem; default;
+  end;
+
+  TVA508AccessibilityManager = class(TComponent)
+  private
+    FDFMData: TObjectList;
+    FData: TVA508AccessibilityCollection;
+    function GetAccessLabel(Component: TWinControl): TLabel;
+    function GetAccessProperty(Component: TWinControl): String;
+    function GetAccessText(Component: TWinControl): String;
+    procedure SetAccessLabel(Component: TWinControl; const Value: TLabel);
+    procedure SetAccessProperty(Component: TWinControl; const Value: String);
+    procedure SetAccessText(Component: TWinControl; const Value: String);
+    function GetRootComponent(Component: TComponent; var PropertyName: String): TComponent;
+    function GetDefaultStringProperty(AComponent: TWinControl): String;
+    procedure Initialize;
+    function GetData: TVA508AccessibilityCollection;
+    function OwnerCheck(Component: TComponent): boolean;
+    function FindComponentOnForm(ComponentName: String): TComponent;
+    procedure ReadData(Reader: TReader);
+    procedure WriteData(Writer: TWriter);
+    function GetUseDefault(Component: TWinControl): boolean;
+    procedure SetUseDefault(Component: TWinControl; const Value: boolean);
+    function GetComponentManager(
+      Component: TWinControl): TVA508ComponentManager;
+    procedure SetComponentManager(Component: TWinControl;
+      const Value: TVA508ComponentManager);
+  protected
+    procedure DefineProperties(Filer: TFiler); override;
+    procedure Loaded; override;
+    function GetPropertList(Component: TWinControl): TStrings;
+    function IsPropertyNameValid(Component: TWinControl; PropertyName: String): boolean;
+    function ScreenReaderInquiry(Component: TWinControl): string;
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    function GetComponentName(AComponent: TComponent): String;
+    procedure GetLabelStrings(list: TStringList);
+    procedure GetProperties(Component: TWinControl; list: TStrings);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure RefreshComponents;
+    property AccessText[Component: TWinControl]: string
+                      read GetAccessText
+                      write SetAccessText;
+    property AccessLabel[Component: TWinControl]: TLabel
+                      read GetAccessLabel
+                      write SetAccessLabel;
+    property AccessProperty[Component: TWinControl]: string
+                      read GetAccessProperty
+                      write SetAccessProperty;
+    property ComponentManager[Component: TWinControl]: TVA508ComponentManager
+                      read GetComponentManager
+                      write SetComponentManager;
+    property UseDefault[Component: TWinControl]: boolean
+                      read GetUseDefault
+                      write SetUseDefault;
+  published
+    property AccessData: TVA508AccessibilityCollection read GetData write FData stored FALSE;
+  end;
+
+  IVA508CustomDefaultCaption = interface(IInterface)
+  ['{ED1E68FD-5432-4C9D-A250-2069F3A2CABE}']
+    function GetDefaultCaption: string;
+  end;
+
+  TVA508ScreenReaderEvent = procedure(Sender: TObject; var Text: String) of object;
+  TVA508ScreenReaderItemEvent = procedure(Sender: TObject; var Item: TObject) of object;
+
+  TVA508ComponentAccessibility = class(TComponent)
+  private
+    FOnComponentNameQuery: TVA508ScreenReaderEvent;
+    FOnCaptionQuery: TVA508ScreenReaderEvent;
+    FOnValueQuery: TVA508ScreenReaderEvent;
+    FOnStateQuery: TVA508ScreenReaderEvent;
+    FOnInstructionsQuery: TVA508ScreenReaderEvent;
+    FOnItemInstructionsQuery: TVA508ScreenReaderEvent;
+    FOnItemQuery: TVA508ScreenReaderItemEvent;
+    FComponentName: string;
+    FCaption: string;
+    FInstructions: string;
+    FItemInstructions: string;
+    FComponent: TWinControl;
+    procedure SetComponent(const Value: TWinControl);
+  protected
+    { Protected declarations }
+  public
+    { Public declarations }
+  published
+    { Published declarations }
+    constructor Create(AOwner: TComponent); override;
+    property Component: TWinControl read FComponent write SetComponent;
+    property OnComponentNameQuery: TVA508ScreenReaderEvent read FOnComponentNameQuery write FOnComponentNameQuery;
+    property OnCaptionQuery: TVA508ScreenReaderEvent read FOnCaptionQuery write FOnCaptionQuery;
+    property OnValueQuery: TVA508ScreenReaderEvent read FOnValueQuery write FOnValueQuery;
+    property OnStateQuery: TVA508ScreenReaderEvent read FOnStateQuery write FOnStateQuery;
+    property OnInstructionsQuery: TVA508ScreenReaderEvent read FOnInstructionsQuery write FOnInstructionsQuery;
+    property OnItemInstructionsQuery: TVA508ScreenReaderEvent read FOnItemInstructionsQuery write FOnItemInstructionsQuery;
+    property OnItemQuery: TVA508ScreenReaderItemEvent read FOnItemQuery write FOnItemQuery;
+    property ComponentName: string read FComponentName write FComponentName;
+    property Caption: string read FCaption write FCaption;
+    property Instructions: string read FInstructions write FInstructions;
+    property ItemInstructions: string read FItemInstructions write FItemInstructions;
+  end;
+
+// automatically freed when component is destroyed
+  TManagedType = (mtNone, mtCaption, mtComponentName, mtInstructions, mtValue, mtData,
+                  mtState, mtStateChange, // NOTE - should ALWAYS use mtStateChange when mtState is used!!!
+                  mtItemChange, mtItemInstructions, mtComponentRedirect);
+  TManagedTypes = set of TManagedType;
+
+  TVA508ComponentManager = class(TObject)
+  private
+    FManagedTypes: TManagedTypes;
+  protected
+    constructor Create(ManagedTypes: TManagedTypes); overload;
+  public
+    constructor Create; overload; virtual; abstract;
+    function GetCaption(Component: TWinControl): string; virtual;
+    function GetComponentName(Component: TWinControl): string; virtual;
+    function GetInstructions(Component: TWinControl): string; virtual;
+    function GetItemInstructions(Component: TWinControl): string; virtual;
+    function GetValue(Component: TWinControl): string; overload; virtual;
+    function GetData(Component: TWinControl; Value: string): string; overload; virtual;
+    function GetState(Component: TWinControl): string; virtual;
+    function GetItem(Component: TWinControl): TObject; virtual;
+    function ManageCaption(Component: TWinControl): boolean; virtual;
+    function ManageComponentName(Component: TWinControl): boolean; virtual;
+    function ManageInstructions(Component: TWinControl): boolean; virtual;
+    function ManageItemInstructions(Component: TWinControl): boolean; virtual;
+    function ManageValue(Component: TWinControl): boolean; virtual;
+    function ManageData(Component: TWinControl): boolean; virtual;
+    function ManageState(Component: TWinControl): boolean; virtual;
+    function MonitorForStateChange(Component: TWinControl): boolean; virtual;
+    function MonitorForItemChange(Component: TWinControl): boolean; virtual;
+    function RedirectsComponent(Component: TWinControl): boolean; virtual;
+    function Redirect(Component: TWinControl; var ManagedType: TManagedType): TWinControl; virtual;
+  end;
+
+  TVA508StaticText = class;
+
+  TVA508ChainedLabel = class(TLabel)
+  private
+    FStaticLabelParent: TVA508StaticText;
+    FPreviousLabel: TControl;
+    FNextLabel: TVA508ChainedLabel;
+    procedure SetNextLabel(const Value: TVA508ChainedLabel);
+  protected
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    procedure Paint; override;
+  public
+    property NextLabel: TVA508ChainedLabel read FNextLabel write SetNextLabel;
+  end;
+
+  TVA508StaticText = class(TPanel)
+  private
+    FLabel: TLabel;
+    FOnEnter: TNotifyEvent;
+    FOnExit: TNotifyEvent;
+    FNextLabel: TVA508ChainedLabel;
+    FDeletingChain: boolean;
+    FInitTabStop: boolean;
+    procedure DeleteChain(FromLabel, ToLabel: TVA508ChainedLabel);
+    procedure SetNextLabel(const Value: TVA508ChainedLabel);
+    function GetLabelCaption: string;
+    procedure SetLabelCaption(const Value: string);
+    function GetRootName: string;
+    procedure SetRootName(const Value: string);
+    function GetShowAccelChar: boolean;
+    procedure SetShowAccelChar(const Value: boolean);
+    procedure UpdateSize;
+    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
+    procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
+    function GetAlignment: TAlignment;
+    procedure SetAlignment(const Value: TAlignment);
+  protected
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    procedure DoEnter; override;
+    procedure DoExit; override;
+    procedure Paint; override;
+    procedure SetParent(AParent: TWinControl); override;
+    property StaticLabel: TLabel read FLabel;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure InvalidateAll;
+    property NextLabel: TVA508ChainedLabel read FNextLabel write SetNextLabel;
+  published
+    property TabStop default false;
+    property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;
+    property OnExit: TNotifyEvent read FOnExit write FOnExit;
+    property Caption: string read GetLabelCaption write SetLabelCaption;
+    property Name: string read GetRootName write SetRootName;
+    property ShowAccelChar: boolean read GetShowAccelChar write SetShowAccelChar;
+    property Alignment: TAlignment read GetAlignment write SetAlignment;
+  end;
+
+  TVA508SilentComponent = class(TVA508ComponentManager)
+  public
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+    function GetValue(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+  end;
+
+  TVA508AlternateHandleFunc = function(Component: TWinControl): HWnd;
+
+  TVA508ManagedComponentClass = class(TVA508ComponentManager)
+  private
+    FClassType: TWinControlClass;
+    FManageDescendentClasses: boolean;
+  protected
+    constructor Create(AClassType: TWinControlClass; ManageTypes: TManagedTypes;
+                       AManageDescendentClasses: boolean = FALSE); overload;
+    property ManageDescendentClasses: boolean read FManageDescendentClasses write FManageDescendentClasses;
+  public
+    property ComponentClassType: TWinControlClass read FClassType;
+  end;
+
+  TVA508ComplexComponentManager = class(TObject)
+  private
+    FComponentList: TObjectList;
+    FSubComponentXRef: TObjectList;
+    FComponentClass: TWinControlClass;
+    FComponentNotifier: TVANotificationEventComponent;
+    FSubComponentNotifier: TVANotificationEventComponent;
+    procedure ComponentNotifyEvent(AComponent: TComponent; Operation: TOperation);
+    procedure SubComponentNotifyEvent(AComponent: TComponent; Operation: TOperation);
+    function IndexOfComponentItem(Component: TWinControl): integer;
+    function IndexOfSubComponentXRef(Component: TWinControl): integer;
+    function GetSubComponentList(Component: TWinControl): TList;
+  protected
+    procedure ClearSubControls(Component: TWinControl);
+    procedure AddSubControl(ParentComponent, SubControl: TWinControl;
+                            AccessibilityManager: TVA508AccessibilityManager);
+    procedure RemoveSubControl(ParentComponent, SubControl: TWinControl);
+  public
+    constructor Create(AComponentClass: TWinControlClass); overload;
+    destructor Destroy; override;
+    procedure Refresh(Component: TWinControl;
+                      AccessibilityManager: TVA508AccessibilityManager); virtual; abstract;
+    function SubControlCount(Component: TWinControl): integer;
+    function GetSubControl(Component: TWinControl; Index: integer): TWinControl;
+    property ComponentClass: TWinControlClass read FComponentClass;
+  end;
+
+
+procedure RegisterAlternateHandleComponent(ComponentClass: TWinControlClass;
+                                           AlternateHandleFunc: TVA508AlternateHandleFunc);
+procedure RegisterComplexComponentManager(Manager: TVA508ComplexComponentManager);
+procedure RegisterManagedComponentClass(Manager: TVA508ManagedComponentClass);
+procedure RegisterMSAAQueryClassProc(MSAAClass: TWinControlClass; Proc: TVA508QueryProc);
+procedure RegisterMSAAQueryListClassProc(MSAAClass: TWinControlClass; Proc: TVA508ListQueryProc);
+
+const
+  ComponentManagerSilentText = ' '; // '' does not silence the screen reader
+
+  AccessibilityLabelPropertyName    = 'AccessLabel';
+  AccessibilityPropertyPropertyName = 'AccessProperty';
+  AccessibilityTextPropertyName     = 'AccessText';
+  AccessibilityUseDefaultPropertyName = 'UseDefault';
+//  AccessibilityEventPropertyName    = 'OnAccessRequest';   // AccessEvent
+
+  AccessDataStatusText = 'Status';
+  AccessDataLabelText = 'Label';
+  AccessDataPropertyText = 'Property';
+  AccessDataTextText = 'Text';
+//  AccessDataEventText = 'Event';
+  AccessDataComponentText = 'Component';
+
+  VA508DataPropertyName = 'AccessData';
+  VA508DFMDataPropertyName = 'Data';
+
+  EQU = ' = ';
+  EQU_LEN = length(EQU);
+
+type
+  TDefaultStringPropertyValuePair = record
+    ClassType: TWinControlClass;
+    PublishedPropertyName: String;
+  end;
+
+const
+  CaptionedControlClassCount = 6;
+  CaptionProperty = 'Caption';
+  ControlsWithDefaultPropertySettings: array[1..CaptionedControlClassCount] of TDefaultStringPropertyValuePair =
+
+   ((ClassType: TCustomForm; PublishedPropertyName: CaptionProperty),
+  // includes TButton, TBitBtn, TCheckBox, TRadioButton, TDBCheckBox, and TGroupButton
+    (ClassType: TButtonControl; PublishedPropertyName: CaptionProperty),
+  // includes TPanel, TFlowPanel and TGridPanel, but not TDBNAvigator or TDecisionPivot
+  //                               because they do not have a published Caption property
+    (ClassType: TCustomPanel; PublishedPropertyName: CaptionProperty),
+  // Includes TGroupBox, TRadioGroup and TDBRadioGroupBox
+    (ClassType: TCustomGroupBox; PublishedPropertyName: CaptionProperty),
+  // TStaticText only
+    (ClassType: TCustomStaticText; PublishedPropertyName: CaptionProperty),
+  // TLabeledEdit only
+    (ClassType: TCustomLabeledEdit; PublishedPropertyName: 'EditLabel.' + CaptionProperty));
+
+implementation
+
+// VA508DelphiCompatibility added to ensure initialization section runs
+uses ComObj, VA508Classes, VA508AccessibilityRouter, VA508DelphiCompatibility,
+  VA508ScreenReaderDLLLinker, Types, VA508MSAASupport;
+
+type
+  TVA508RegistrationScreenReader = class(TVA508ScreenReader);
+
+  TComponentHelper = class(TObject)
+  private
+    FRedirectedComponent: TWinControl;
+    FRedirectedHelper: TComponentHelper;
+    FRedirectedHelperType: TManagedType;
+    FHandleKey: string;
+    FComponent: TWinControl;
+    FManager: TVA508AccessibilityManager;
+    FManagedClassData: TVA508ManagedComponentClass;
+    FFieldObject: TVA508ComponentAccessibility;
+    FComponentManager: TVA508ComponentManager;
+    FComplexManager: TVA508ComplexComponentManager;
+    procedure ClearRedirect;
+    function Redirect(RedirectType: TManagedType): boolean;
+  published
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure InitializeComponentManager;
+    function GetCaption(var DataResult: LongInt): string;
+    function GetComponentName(var DataResult: LongInt): string;
+    function GetInstructions(var DataResult: LongInt): string;
+    function GetItemInstructions(var DataResult: LongInt): string;
+    function GetValue(var DataResult: LongInt): string;
+    function GetData(var DataResult: LongInt; Value: string): string;
+    function GetState(var DataResult: LongInt): string;
+    function GetItem: TObject;
+    function ManageComponentName: boolean;
+    function ManageInstructions: boolean;
+    function ManageItemInstructions: boolean;
+    function ManageValue: boolean;
+    function ManageData: boolean;
+    function MonitorForStateChange: boolean;
+    function MonitorForItemChange: boolean;
+    function ManageCaption: boolean;
+    function StandardComponent: boolean;
+    property ComponentManager: TVA508ComponentManager read FComponentManager;
+    property HandleKey: string read FHandleKey write FHandleKey;
+    property Component: TWinControl read FComponent write FComponent;
+    property Manager: TVA508AccessibilityManager read FManager write FManager;
+    property ManagedClassData: TVA508ManagedComponentClass read FManagedClassData write FManagedClassData;
+    property FieldObject: TVA508ComponentAccessibility read FFieldObject write FFieldObject;
+    property ComplexManager: TVA508ComplexComponentManager read FComplexManager write FComplexManager;
+  end;
+
+  TComponentData = record
+    Handle:           HWND;
+    CaptionQueried:   boolean;
+    ValueQueried:     boolean;
+    StateQueried:     boolean;
+    ItemInstrQueried: boolean;
+    Caption:          string;
+    Item:             TObject;
+    State:            string;
+    ItemInstructions: string;
+  end;
+
+const
+  IIDelim = '^';
+
+  NewComponentData: TComponentData =
+    (Handle:           0;
+     CaptionQueried:   FALSE;
+     ValueQueried:     FALSE;
+     StateQueried:     FALSE;
+     ItemInstrQueried: FALSE;
+     Caption:          '';
+     Item:             nil;
+     State:            '';
+     ItemInstructions: IIDelim);
+type
+  TScreenReaderEventType = (sreCaption, sreValue, sreState, sreInstructions, sreItemInstructions);
+
+  TVAGlobalComponentRegistry = class(TObject)
+  private
+    class var
+      FActive: boolean;
+      FGetMsgHookHandle: HHOOK;
+  private
+    FCurrentHelper: TComponentHelper;
+    FDestroying: boolean;
+    FComponentRegistry: TStringList;
+    FHandlesXREF: TStringList;
+    FHandlesPending: TStringList;
+    FPendingRecheckTimer: TTimer;
+    FCheckingPendingList: boolean;
+    FUnregisteringComponent: boolean;
+    FComponentData: TComponentData;
+    FPendingFieldObjects: TStringList;
+    function GetComponentHelper(WindowHandle: HWND): TComponentHelper;
+    procedure CheckForChangeEvent;
+    function GetComponentHandle(Component: TWinControl): Hwnd;
+    function HasHandle(Component: TWinControl; var HandleKey: String): boolean;
+    function GetCompKey(Component: TWinControl): String;
+    procedure UpdateHandles(WindowHandle: HWnd; var HandlesModified: boolean);
+  protected
+    procedure TimerEvent(Sender: TObject);
+    procedure ComponentDataNeededEvent(const WindowHandle: HWND; var DataStatus: LongInt;
+        var Caption: PChar; var Value: PChar; var Data: PChar; var ControlType: PChar;
+        var State: PChar; var Instructions: PChar; var ItemInstructions: PChar);
+    procedure RegisterMSAA(Component: TWinControl);
+    procedure UnregisterMSAA(Component: TWinControl);
+  public
+    constructor Create;
+    destructor Destroy; override;
+    function GetFieldObject(Component: TWinControl): TVA508ComponentAccessibility;
+    procedure RegisterFieldObject(Component: TWinControl; FieldObject: TVA508ComponentAccessibility;
+                                    Adding: boolean);
+    procedure RegisterComponent(component: TWinControl; Manager: TVA508AccessibilityManager);
+    procedure UnregisterComponent(component: TWinControl);
+  end;
+
+  TDFMData = class(TObject)
+  private
+    ComponentName: string;
+    LabelName: string;
+    PropertyName: string;
+    Text: string;
+    Status: TVA508AccessibilityStatus;
+//    Event: TVA508ComponentScreenReaderEvent;
+  end;
+
+  TMSAAData = class(TObject)
+  private
+    MSAAClass: TWinControlClass;
+    Proc: TVA508QueryProc;    
+    ListProc: TVA508ListQueryProc;
+  end;
+
+{ TVA508AccessibilityItem }
+
+const
+  INVALID_COMPONENT_ERROR = 'Internal Error - Invalid Component';
+  NAME_DELIM = '.';
+
+var
+  MasterPropertyList: TStringList = nil;
+  GlobalRegistry: TVAGlobalComponentRegistry = nil;
+  AltHandleClasses: TObjectList = nil;
+  ManagedClasses: TObjectList = nil;
+  ComplexClasses: TObjectList = nil;
+  MSAAQueryClasses: TObjectList = nil;
+
+procedure CreateGlobalRegistry;
+begin
+  if ScreenReaderSystemActive and (not assigned(GlobalRegistry)) then
+    GlobalRegistry := TVAGlobalComponentRegistry.Create;
+end;
+
+procedure CreateGlobalVars;
+begin
+  if not assigned(MasterPropertyList) then
+    MasterPropertyList := TStringList.create;
+  CreateGlobalRegistry;    
+end;
+
+procedure FreeGlobalVars;
+begin
+  if assigned(MasterPropertyList) then
+    FreeAndNilTStringsAndObjects(MasterPropertyList);
+  if assigned(GlobalRegistry) then
+    FreeAndNil(GlobalRegistry);
+  if assigned(AltHandleClasses) then
+    FreeAndNil(AltHandleClasses);
+  if assigned(ManagedClasses) then
+    FreeAndNil(ManagedClasses);
+  if assigned(ComplexClasses) then
+    FreeAndNil(ComplexClasses);
+  if assigned(MSAAQueryClasses) then
+    FreeAndNil(MSAAQueryClasses);
+end;
+
+procedure TVA508AccessibilityItem.Assign(Source: TPersistent);
+var
+  item: TVA508AccessibilityItem;
+begin
+  if Source is TVA508AccessibilityItem then
+  begin
+    item := TVA508AccessibilityItem(Source);
+    FComponent := item.FComponent;
+    FComponentManager := item.ComponentManager;
+    FLabel := item.FLabel;
+    FProperty := item.FProperty;
+    FText := item.FText;
+    FDefault := item.FDefault;
+    FStatus := item.FStatus;
+  end
+  else inherited Assign(Source);
+end;
+
+constructor TVA508AccessibilityItem.Create(Collection: TCollection);
+begin
+  inherited Create(Collection);
+end;
+
+destructor TVA508AccessibilityItem.Destroy;
+begin
+  Parent.UnregisterComponent(FComponent);
+  if assigned(FComponentManager) then
+    FreeAndNil(FComponentManager);
+  inherited;
+end;
+
+function TVA508AccessibilityItem.GetDisplayName: string;
+begin
+  if assigned(FComponent) then
+  begin
+    Result := Manager.GetComponentName(FComponent) +
+              '  (' + FComponent.ClassName + ')'
+  end
+  else
+    Result := TVA508AccessibilityItem.ClassName;
+end;
+
+procedure TVA508AccessibilityItem.InitComponent(const Component: TWinControl; FromManager: boolean);
+begin
+  FComponent := Component;
+  if FromManager and (not (csReading in Manager.ComponentState)) then
+    FDefault := TRUE;  
+end;
+
+function TVA508AccessibilityItem.Manager: TVA508AccessibilityManager;
+begin
+  Result := TVA508AccessibilityCollection(Collection).FManager;
+end;
+
+function TVA508AccessibilityItem.Parent: TVA508AccessibilityCollection;
+begin
+  Result := TVA508AccessibilityCollection(Collection);
+end;
+
+procedure TVA508AccessibilityItem.SetComponent(const Component: TWinControl);
+begin
+  if (FComponent <> Component) and
+    (([csDesigning, csFixups, csLoading, csReading, csUpdating] * Manager.ComponentState) <> []) and
+    (not Parent.IsComponentRegistered(Component)) then
+  begin
+    Parent.UnregisterComponent(FComponent);
+    InitComponent(Component, FALSE);
+    Parent.RegisterComponent(Component, Self);
+  end;
+end;
+
+procedure TVA508AccessibilityItem.SetDefault(const Value: boolean);
+begin
+  if FDefault <> Value then
+  begin
+    FDefault := Value;
+    if FDefault then
+    begin
+      FLabel := nil;
+      FText := '';
+      FProperty := '';
+    end
+    else if (FProperty = '') and (not (csReading in Manager.ComponentState)) then
+      FProperty := Manager.GetDefaultStringProperty(FComponent);
+  end;
+end;
+
+procedure TVA508AccessibilityItem.SetLabel(const Value: TLabel);
+begin
+  if FLabel <> Value then
+  begin
+    FLabel := Value;
+    if assigned(FLabel) then
+    begin
+      FProperty := '';
+      FText := '';
+      FDefault := FALSE;
+    end;
+  end;  
+end;
+
+procedure TVA508AccessibilityItem.SetProperty(const Value: string);
+begin
+  if (FProperty <> Value) and 
+        ((Value = '') or (csreading in Manager.ComponentState) or
+          Manager.IsPropertyNameValid(Component, Value)) then
+  begin
+    FProperty := Value;
+    if (FProperty <> '') then
+    begin
+      FLabel := nil;
+      FText := '';
+      FDefault := FALSE;
+    end;
+  end;
+end;
+
+procedure TVA508AccessibilityItem.SetText(const Value: string);
+begin
+  if FText <> Value then
+  begin
+    FText := Value;
+    if FText <> '' then
+    begin
+      FLabel := nil;
+      FProperty := '';
+      FDefault := FALSE;
+    end;
+  end;
+end;
+
+procedure TVA508AccessibilityItem.UpdateStatus;
+begin
+  FStatus := stsNoData;
+  if assigned(FComponent) then
+  begin
+    if FDefault then
+      FStatus := stsDefault
+    else
+{ TODO : FIX THIS!!!!!!!!!!!!!!!! }    
+    if assigned(FLabel) or (AccessProperty <> '') or (FText <> '') then //or assigned(FEvent) then
+      FStatus := stsOK
+    else
+    if FComponent.TabStop = FALSE then
+      FStatus := stsNoTabStop;
+  end;
+end;
+
+{ TVA508AccessibilityCollection }
+
+function TVA508AccessibilityCollection.Add: TVA508AccessibilityItem;
+begin
+  Result := TVA508AccessibilityItem(inherited Add);
+end;
+
+procedure TVA508AccessibilityCollection.ComponentNotifyEvent(
+  AComponent: TComponent; Operation: TOperation);
+var
+  item: TVA508AccessibilityItem;
+begin
+  if (Operation = opRemove) and (AComponent is TWinControl) then
+  begin
+    if ScreenReaderSystemActive then
+      GlobalRegistry.UnregisterComponent(TWinControl(AComponent));
+    item := FindItem(TWinControl(AComponent), FALSE);
+    if assigned(item) then
+      item.Free;
+  end;
+end;
+
+constructor TVA508AccessibilityCollection.Create(
+  Manager: TVA508AccessibilityManager);
+begin
+  inherited Create(TVA508AccessibilityItem);
+  FManager := Manager;
+  FRegistry := TStringList.Create;
+  FRegistry.Sorted := TRUE;
+  FRegistry.Duplicates := dupAccept; // speeds things up
+  FNotifier := TVANotificationEventComponent.NotifyCreate(nil, ComponentNotifyEvent);
+end;
+
+destructor TVA508AccessibilityCollection.Destroy;
+begin
+  FNotifier.OnNotifyEvent := nil;
+  FNotifier.Free;
+  FRegistry.Free;
+  inherited;
+end;
+
+procedure TVA508AccessibilityCollection.EnsureItemExists(
+  Component: TWinControl);
+begin
+  FindItem(Component);
+end;
+
+function TVA508AccessibilityCollection.FindItem(
+  Component: TWinControl; CreateIfNotFound: boolean = true): TVA508AccessibilityItem;
+var
+  key: string;
+  idx: integer;
+begin
+  Result := nil;
+  if assigned(Component) then
+  begin
+    key := FastIntToHex(Integer(Component));
+    idx := FRegistry.IndexOf(key);
+    if idx < 0 then
+    begin
+      if CreateIfNotFound then
+      begin
+        Result := Add;
+        Result.InitComponent(Component, TRUE);
+        RegisterComponent(Component, Result);
+      end;
+    end
+    else
+      Result := TVA508AccessibilityItem(FRegistry.Objects[idx]);
+  end;
+end;
+
+function TVA508AccessibilityCollection.GetItem(
+  Index: Integer): TVA508AccessibilityItem;
+begin
+  Result := TVA508AccessibilityItem(inherited GetItem(Index));
+end;
+
+function TVA508AccessibilityCollection.GetOwner: TPersistent;
+begin
+  Result := FManager;
+end;
+
+function TVA508AccessibilityCollection.IsComponentRegistered(
+  Component: TWinControl): boolean;
+begin
+  if assigned(Component) then
+    Result := FRegistry.IndexOf(FastIntToHex(Integer(Component))) >= 0
+  else
+    Result := TRUE;
+end;
+
+procedure TVA508AccessibilityCollection.UnregisterComponent(
+  Component: TWinControl);
+var
+  key: string;
+  idx: integer;
+begin
+  if ScreenReaderSystemActive then
+    GlobalRegistry.UnregisterComponent(Component);
+  if not assigned(Component) then exit;
+  key := FastIntToHex(Integer(Component));
+  idx := FRegistry.IndexOf(key);
+  if idx >= 0 then
+  begin
+    FRegistry.Delete(idx);
+    Component.RemoveFreeNotification(FNotifier);
+  end;
+end;
+
+procedure TVA508AccessibilityCollection.SetItem(Index: Integer;
+  Value: TVA508AccessibilityItem);
+begin
+  inherited SetItem(Index, Value);
+end;
+{
+procedure TVA508AccessibilityCollection.Update(Item: TCollectionItem);
+begin
+  inherited;
+end;
+}
+procedure TVA508AccessibilityCollection.RegisterComponent(Component: TWinControl; Item: TVA508AccessibilityItem);
+var
+  key: string;
+begin
+  if ScreenReaderSystemActive then
+    GlobalRegistry.RegisterComponent(Component, FManager);
+  if (not assigned(Component)) or (not assigned(item)) then exit;
+  key := FastIntToHex(Integer(Component));
+  if FRegistry.IndexOf(key) < 0 then
+  begin
+    FRegistry.AddObject(key, Item);
+    Component.FreeNotification(FNotifier);
+  end;
+end;
+
+{ TVA508AccessibilityManager }
+
+constructor TVA508AccessibilityManager.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  VA508ComponentCreationCheck(Self, AOwner, FALSE, FALSE);
+  CreateGlobalVars;
+  FData := TVA508AccessibilityCollection.Create(Self);
+  Initialize;
+end;
+
+destructor TVA508AccessibilityManager.Destroy;
+begin
+  VA508ComponentDestructionCheck(Self);
+  if assigned(FData) then  
+    FData.Free;
+  if assigned(FDFMData) then
+    FreeAndNil(FDFMData);
+  inherited;
+end;
+
+function TVA508AccessibilityManager.FindComponentOnForm(
+  ComponentName: String): TComponent;
+var
+  p: integer;
+  comp: TComponent;
+  name: String;
+
+  function FindOwnedComponent(AComponent: TComponent; ComponentName: String): TComponent;
+  var
+    i: integer;
+  begin
+    Result := nil;
+    if AnsiCompareText(ComponentName, AComponent.Name)= 0 then
+    begin
+      Result := AComponent;
+      exit;
+    end;
+    for i := 0 to AComponent.ComponentCount - 1 do
+    begin
+      if (AnsiCompareText(ComponentName, AComponent.Components[i].Name)= 0) then
+      begin
+        Result := AComponent.Components[i];
+        exit;
+      end;
+    end;
+  end;
+
+begin
+  if RightStr(ComponentName,1) <> NAME_DELIM then
+    ComponentName := ComponentName + NAME_DELIM;
+  Result := nil;
+  comp := owner;
+  repeat
+    p := pos(NAME_DELIM, ComponentName);
+    if p > 0 then
+    begin
+      name := copy(ComponentName, 1, p-1);
+      delete(ComponentName, 1, p);
+      comp := FindOwnedComponent(comp, name);
+    end;
+  until p = 0;
+  if assigned(comp) then
+    Result := comp;      
+end;
+
+function TVA508AccessibilityManager.GetAccessLabel(
+  Component: TWinControl): TLabel;
+begin
+  Result := FData.FindItem(Component).AccessLabel;
+end;
+
+function TVA508AccessibilityManager.GetAccessProperty(
+  Component: TWinControl): String;
+begin
+  Result := FData.FindItem(Component).AccessProperty;
+end;
+
+function TVA508AccessibilityManager.GetAccessText(
+  Component: TWinControl): String;
+begin
+  Result := FData.FindItem(Component).AccessText;
+end;
+
+function TVA508AccessibilityManager.GetComponentManager(
+  Component: TWinControl): TVA508ComponentManager;
+begin
+  Result := FData.FindItem(Component).ComponentManager;
+end;
+
+function TVA508AccessibilityManager.GetComponentName(
+  AComponent: TComponent): String;
+var
+  comp: TComponent;
+
+  procedure error;
+  begin
+    raise EVA508AccessibilityException.Create(INVALID_COMPONENT_ERROR);
+  end;
+
+  function BasicComponentCheck(var Name: string): boolean;
+  begin
+    Result := TRUE;
+    Name := '';
+    if (not assigned(AComponent)) then error;
+    if AComponent = owner then
+    begin
+      Name := AComponent.Name;
+      exit;
+    end;
+    if not assigned(AComponent.Owner) then error;
+    if (AComponent.owner = owner) then
+      Name := AComponent.Name
+    else
+      Result := FALSE;
+  end;
+
+begin
+  if BasicComponentCheck(Result) then exit;
+  comp := AComponent;
+  Result := AComponent.Name;
+  while assigned(comp.Owner) and (comp.Owner <> Owner) do
+  begin
+    comp := comp.Owner;
+    Result := comp.Name + NAME_DELIM + Result;
+  end;
+  if not assigned(comp.Owner) then error;
+end;
+
+function TVA508AccessibilityManager.GetData: TVA508AccessibilityCollection;
+begin
+  Result := FData;
+end;
+
+function TVA508AccessibilityManager.GetDefaultStringProperty(AComponent: TWinControl): String;
+var
+  i: integer;
+  ValuePair: TDefaultStringPropertyValuePair;
+  PropName: string;
+begin
+  Result := '';
+  if not assigned(AComponent) then exit;  
+  for i := 1 to CaptionedControlClassCount do
+  begin
+    ValuePair := ControlsWithDefaultPropertySettings[i];
+    if AComponent is ValuePair.ClassType then
+    begin
+      PropName := ValuePair.PublishedPropertyName;
+      if IsPropertyNameValid(AComponent, PropName) then
+        Result := PropName;
+      break;
+    end;
+  end;
+end;
+
+procedure TVA508AccessibilityManager.GetLabelStrings(list: TStringList);
+
+  procedure AddLabels(Component: TWinControl);
+  var
+    i: integer;
+    control: TControl;
+  begin
+    for I := 0 to Component.ControlCount-1 do
+    begin
+      control := Component.Controls[i];
+      if control is TLabel then
+        list.Add(GetComponentName(control) + '="' + TLabel(control).Caption + '"')
+      else
+      begin
+        if (control is TWinControl) and
+           ((csAcceptsControls in control.ControlStyle) or (control is TFrame)) then
+            AddLabels(TWinControl(control));
+      end;
+    end;
+  end;
+
+begin
+  AddLabels(TWinControl(Owner));
+  list.Sort;
+end;
+
+procedure TVA508AccessibilityManager.GetProperties(Component: TWinControl; list: TStrings);
+begin
+  list.Assign(GetPropertList(Component));
+end;
+
+function TVA508AccessibilityManager.GetPropertList(Component: TWinControl): TStrings;
+const
+//  STRING_FILTER = [tkChar, tkString, tkWChar, tkLString, tkWString];
+  STRING_FILTER = [tkString, tkLString, tkWString];
+var
+  pList: PPropList;
+  i, idx, pCount, pSize: Integer;
+  ClsInfo: Pointer;
+  name: string;
+  info: TStringList;
+begin
+  idx := MasterPropertyList.IndexOf(Component.ClassName);
+  if idx < 0 then
+  begin
+    info := TStringList.Create;
+    try
+      ClsInfo := Component.ClassInfo;
+      pCount := GetPropList(ClsInfo, STRING_FILTER, nil);
+      pSize := pCount * SizeOf(Pointer);
+      GetMem(pList, pSize);
+      try
+        GetPropList(ClsInfo, STRING_FILTER, pList);
+        for i := 0 to pCount - 1 do
+        begin
+          name := pList^[I]^.Name;
+          if (info.IndexOf(name) < 0) then
+            info.Add(name);
+        end;
+      finally
+        FreeMem(pList, pSize);
+      end;
+      info.Sorted := TRUE;
+    finally
+      MasterPropertyList.AddObject(Component.ClassName, info);
+    end;
+  end
+  else
+    info := TStringList(MasterPropertyList.Objects[idx]);
+  Result := info;
+end;
+
+function TVA508AccessibilityManager.GetRootComponent(Component: TComponent;
+  var PropertyName: String): TComponent;
+var
+  p: integer;
+  CompName: string;
+  root: TObject;
+
+begin
+  Root := Component;
+  repeat
+    p := pos(NAME_DELIM, PropertyName);
+    if p > 0 then
+    begin
+      CompName := copy(PropertyName,1,p-1);
+      delete(PropertyName,1,p);
+      if IsPublishedProp(root, CompName) then
+      begin
+        root := GetObjectProp(root, CompName);
+      end
+      else
+        root := nil;
+    end;
+  until (p=0) or (not assigned(root));
+  if assigned(root) and (root is TComponent) and IsPublishedProp(root, PropertyName) then
+    Result := TComponent(root)
+  else
+    Result := nil;
+end;
+
+function TVA508AccessibilityManager.GetUseDefault(
+  Component: TWinControl): boolean;
+begin
+  Result := FData.FindItem(Component).UseDefault;
+end;
+
+function TVA508AccessibilityManager.IsPropertyNameValid(Component: TWinControl;
+  PropertyName: String): boolean;
+var
+  list: TStrings;
+begin
+  if not assigned(Component) then
+    Result := FALSE
+  else
+  begin
+    list := GetPropertList(Component);
+    Result := list.IndexOf(PropertyName) >= 0;
+  end;
+end;
+
+procedure TVA508AccessibilityManager.Loaded;
+var
+  i: integer;
+  data: TDFMData;
+  component: TComponent;
+  item: TVA508AccessibilityItem;
+  
+begin
+  inherited;
+  if assigned(FDFMData) then
+  begin
+    for i := 0 to FDFMData.Count-1 do
+    begin
+      data := TDFMData(FDFMData[i]);
+      component := FindComponentOnForm(data.ComponentName);
+      if assigned(component) and (component is TWinControl) then
+      begin
+        item := FData.FindItem(TWinControl(component));
+        if data.LabelName <> '' then
+        begin
+          component := FindComponentOnForm(data.LabelName);
+          if assigned(component) and (component is TLabel) then
+            item.AccessLabel := TLabel(component);
+        end;
+        if data.PropertyName <> '' then
+          item.AccessProperty := data.PropertyName;
+        if data.Text <> '' then
+          item.AccessText := data.Text;
+        if data.Status = stsDefault then
+          item.UseDefault := TRUE;
+      end;
+    end;
+    FData.EnsureItemExists(TWinControl(Owner));
+    FreeAndNil(FDFMData);
+  end;
+  if not (csDesigning in ComponentState) then
+    Initialize;
+end;
+
+procedure TVA508AccessibilityManager.Notification(AComponent: TComponent;
+  Operation: TOperation);
+
+  procedure UpdateComponent(Component: TWinControl; Adding: boolean);
+  var
+    i: integer;
+    Control : TWinControl;
+    item: TVA508AccessibilityItem;
+  begin
+    if Adding then
+      FData.EnsureItemExists(Component)
+    else
+    begin
+      item := FData.FindItem(Component, FALSE);
+      if assigned(item) then
+        item.Free;
+    end;
+    if (csAcceptsControls in Component.ControlStyle) then
+    begin
+      for I := 0 to Component.ControlCount - 1 do
+      begin
+        if Component.Controls[I] is TWinControl then
+        begin
+          Control := TWinControl(Component.Controls[I]);
+          if OwnerCheck(Control) then
+            UpdateComponent(Control, Adding);
+        end;
+      end;
+    end;
+  end;
+
+begin
+  inherited Notification(AComponent, Operation);
+  if (not assigned(AComponent)) or (not (AComponent is TWinControl)) or
+          (csDestroying in ComponentState) then exit;
+  if Operation = opInsert then
+    UpdateComponent(TWinControl(AComponent), TRUE)
+  else
+    UpdateComponent(TWinControl(AComponent), FALSE);
+end;
+
+function TVA508AccessibilityManager.OwnerCheck(Component: TComponent): boolean;
+var
+  root: TComponent;
+begin
+  Result := false;
+  root := component;
+  while assigned(root) do
+  begin
+    if root = owner then
+    begin
+      Result := true;
+      exit;
+    end;
+    root := root.Owner;
+  end;
+end;
+
+procedure TVA508AccessibilityManager.DefineProperties(Filer: TFiler);
+begin
+  inherited DefineProperties(Filer);
+  Filer.DefineProperty(VA508DFMDataPropertyName, ReadData, WriteData, TRUE);
+end;
+
+procedure TVA508AccessibilityManager.ReadData(Reader: TReader);
+var
+  data: TDFMData;
+  line: string;
+  name, value: string;
+  idx: integer;
+
+begin
+  FData.Clear;
+  if assigned(FDFMData) then
+    FDFMData.Clear
+  else
+    FDFMData := TObjectList.Create;
+  Reader.ReadListBegin;
+  try
+    while not Reader.EndOfList do
+    begin
+      Reader.ReadListBegin;
+      try
+        data := TDFMData.Create;
+        FDFMData.Add(data);
+        while not Reader.EndOfList do
+        begin
+          line := Reader.ReadString;
+          idx := pos(EQU, line);
+          if idx > 0 then
+          begin
+            name := copy(line,1,idx-1);
+            value := copy(line, idx+EQU_LEN, MaxInt);
+            if name = AccessDataComponentText then
+              data.ComponentName := value
+            else if name = AccessDataLabelText then
+              data.LabelName := value
+            else if name = AccessDataPropertyText then
+              data.PropertyName := value
+            else if name = AccessDataTextText then
+              data.Text := value
+            else if name = AccessDataStatusText then
+              data.Status := TVA508AccessibilityStatus(GetEnumValue(
+                                TypeInfo(TVA508AccessibilityStatus), value));
+          end;
+        end;
+      finally
+        Reader.ReadListEnd
+      end;
+    end;
+  finally
+    Reader.ReadListEnd;
+  end;
+end;
+
+procedure TVA508AccessibilityManager.RefreshComponents;
+begin
+  Initialize;
+end;
+
+procedure TVA508AccessibilityManager.WriteData(Writer: TWriter);
+var
+  i: integer;
+  item: TVA508AccessibilityItem;
+
+begin
+// ??????????????????
+//  for i := FData.Count-1 downto 0 do
+//  begin
+//    if not assigned(FData.Items[i].Component) then
+//      FData.Delete(i);
+//  end;
+
+  Writer.WriteListBegin;
+  try
+    for i := 0 to FData.Count - 1 do
+    begin
+      item := FData.Items[i];
+      if assigned(item.Component) then
+      begin
+        item.UpdateStatus;
+        Writer.WriteListBegin;
+        try
+          Writer.WriteString(AccessDataComponentText + EQU +
+                              GetComponentName(item.Component));
+          if assigned(item.AccessLabel) then
+            Writer.WriteString(AccessDataLabelText + EQU +
+                              GetComponentName(item.AccessLabel));
+          if item.AccessProperty <> '' then
+            Writer.WriteString(AccessDataPropertyText + EQU + item.AccessProperty);
+          if item.AccessText <> '' then
+            Writer.WriteString(AccessDataTextText + EQU + item.AccessText);
+          Writer.WriteString(AccessDataStatusText + EQU +
+              GetEnumName(TypeInfo(TVA508AccessibilityStatus), ord(item.Status)));
+        finally
+          Writer.WriteListEnd;
+        end;
+      end;
+    end;
+  finally
+    Writer.WriteListEnd;
+  end;
+end;
+
+type
+  AccessComponent = class(TWinControl);
+
+function TVA508AccessibilityManager.ScreenReaderInquiry(
+  Component: TWinControl): string;
+var
+  item: TVA508AccessibilityItem;
+  prop: string;
+  comp: TComponent;
+  DynaComp: IVADynamicProperty;
+
+begin
+  Result := '';
+  item := FData.FindItem(Component);
+
+  if item.UseDefault then
+  begin
+    if AccessComponent(Component).QueryInterface(IVADynamicProperty,DynaComp) = S_OK then
+    begin
+      try
+        if DynaComp.SupportsDynamicProperty(DynaPropAccesibilityCaption) then
+          Result := DynaComp.GetDynamicProperty(DynaPropAccesibilityCaption);
+      finally
+        DynaComp := nil;
+      end;
+    end;
+  end
+  else
+  begin
+    if assigned(item.AccessLabel) then
+      Result := item.AccessLabel.Caption
+    else if item.AccessText <> '' then
+      Result := item.AccessText
+    else
+    begin
+      prop := item.AccessProperty;
+      if prop <> '' then
+      begin
+        comp := GetRootComponent(Component, prop);
+        if assigned(comp) then
+          Result := GetPropValue(comp, prop);
+      end;
+    end;
+  end;
+end;
+
+procedure TVA508AccessibilityManager.SetAccessLabel(Component: TWinControl;
+  const Value: TLabel);
+begin
+  FData.FindItem(Component).AccessLabel := Value;
+end;
+
+procedure TVA508AccessibilityManager.SetAccessProperty(Component: TWinControl;
+  const Value: String);
+begin
+  FData.FindItem(Component).AccessProperty := Value;
+end;
+
+procedure TVA508AccessibilityManager.SetAccessText(Component: TWinControl;
+  const Value: String);
+begin
+  FData.FindItem(Component).AccessText := Value;
+end;
+
+procedure TVA508AccessibilityManager.SetComponentManager(Component: TWinControl;
+  const Value: TVA508ComponentManager);
+begin
+  FData.FindItem(Component).ComponentManager := Value;
+end;
+
+procedure TVA508AccessibilityManager.SetUseDefault(Component: TWinControl;
+  const Value: boolean);
+begin
+  FData.FindItem(Component).UseDefault := Value;
+end;
+
+procedure TVA508AccessibilityManager.Initialize;
+var
+  list: TList;
+  i, idx: integer;
+  control: TWinControl;
+  item: TVA508AccessibilityItem;
+
+  procedure Update(Component: TWinControl);
+  var
+    i: integer;
+  begin
+    if (not assigned(Component.Parent)) or (csAcceptsControls in Component.Parent.ControlStyle) then
+      list.add(Component);
+    for I := 0 to Component.ControlCount - 1 do
+    begin
+      if Component.Controls[I] is TWinControl then
+      begin
+        Control := TWinControl(Component.Controls[I]);
+        if (not assigned(Control.Owner)) or OwnerCheck(Control) then
+          Update(Control);
+      end;
+    end;
+  end;
+
+begin
+  list := TList.Create;
+  try
+    if (Owner is TWinControl) and ([csLoading, csDesignInstance] * Owner.ComponentState = []) then
+      Update(TWinControl(Owner));
+    for I := FData.Count - 1 downto 0 do
+    begin
+      item := FData[i];
+
+      if assigned(item.Component) then
+      begin
+        idx := list.IndexOf(item.Component);
+        if idx < 0 then
+          item.Free
+        else
+          list.delete(idx);
+      end
+      else
+        item.free;
+    end;
+    for I := 0 to List.Count - 1 do
+    begin
+      FData.EnsureItemExists(TWinControl(list[i]));
+    end;
+  finally
+    list.free;
+  end;
+end;
+
+{ Registration }
+type
+  TAlternateHandleData = class
+    ComponentClass: TWinControlClass;
+    GetHandle: TVA508AlternateHandleFunc;
+  end;
+
+procedure RegisterAlternateHandleComponent(ComponentClass: TWinControlClass;
+                                           AlternateHandleFunc: TVA508AlternateHandleFunc);
+var
+  data: TAlternateHandleData;
+  i: integer;
+begin
+  if not ScreenReaderSystemActive then exit;
+  if not assigned(AltHandleClasses) then
+    AltHandleClasses := TObjectList.Create
+  else
+  begin
+    for i := 0 to AltHandleClasses.Count - 1 do
+    begin
+      data := TAlternateHandleData(AltHandleClasses[i]);
+      if ComponentClass = data.ComponentClass then exit;
+    end;
+  end;
+  data := TAlternateHandleData.Create;
+  data.ComponentClass := ComponentClass;
+  data.GetHandle := AlternateHandleFunc;
+  AltHandleClasses.Add(data);
+end;
+
+procedure RegisterComplexComponentManager(Manager: TVA508ComplexComponentManager);
+var
+  data: TVA508ComplexComponentManager;
+  i: integer;
+begin
+  if ScreenReaderSystemActive then
+  begin
+    if not assigned(ComplexClasses) then
+      ComplexClasses := TObjectList.Create
+    else
+    begin
+      for i := 0 to ComplexClasses.Count - 1 do
+      begin
+        data := TVA508ComplexComponentManager(ComplexClasses[i]);
+        if data.ComponentClass = Manager.ComponentClass then
+        begin
+          Manager.Free;
+          exit;
+        end;
+      end;
+    end;
+    ComplexClasses.Add(Manager);
+  end
+  else
+    Manager.Free;
+end;
+
+procedure RegisterManagedComponentClass(Manager: TVA508ManagedComponentClass);
+var
+  data: TVA508ManagedComponentClass;
+  i: integer;
+begin
+  if ScreenReaderSystemActive then
+  begin
+    if not assigned(ManagedClasses) then
+      ManagedClasses := TObjectList.Create
+    else
+    begin
+      for i := 0 to ManagedClasses.Count - 1 do
+      begin
+        data := TVA508ManagedComponentClass(ManagedClasses[i]);
+        if Manager.ComponentClassType = data.ComponentClassType then
+        begin
+          if Manager <> data then
+            Manager.Free;
+          exit;
+        end;
+      end;
+    end;
+    ManagedClasses.Add(Manager);
+  end
+  else
+    Manager.Free;
+end;
+
+function FindMSAAQueryData(MSAAClass: TWinControlClass): TMSAAData;
+var
+  i: integer;
+begin
+  Result := nil;
+  if not assigned(MSAAQueryClasses) then exit;
+  for i := 0 to MSAAQueryClasses.Count - 1 do
+  begin
+    Result := TMSAAData(MSAAQueryClasses[i]);
+    if MSAAClass.InheritsFrom(Result.MSAAClass) then exit;
+  end;
+  Result := nil;
+end;
+
+procedure RegisterMSAAProc(MSAAClass: TWinControlClass;
+          Proc: TVA508QueryProc; ListProc: TVA508ListQueryProc);
+var
+  Data: TMSAAData;
+begin
+  if not assigned(MSAAQueryClasses) then
+    MSAAQueryClasses := TObjectList.Create;
+  Data := FindMSAAQueryData(MSAAClass);
+  if not assigned(Data) then
+  begin
+    Data := TMSAAData.Create;
+    Data.MSAAClass := MSAAClass;
+    Data.Proc := Proc;
+    Data.ListProc := ListProc;
+    MSAAQueryClasses.Add(Data);
+  end;
+end;
+
+procedure RegisterMSAAQueryClassProc(MSAAClass: TWinControlClass; Proc: TVA508QueryProc);
+begin
+  RegisterMSAAProc(MSAAClass, Proc, nil);
+end;
+
+procedure RegisterMSAAQueryListClassProc(MSAAClass: TWinControlClass; Proc: TVA508ListQueryProc);
+begin
+  RegisterMSAAProc(MSAAClass, nil, Proc);
+end;
+
+{ TVAGlobalComponentRegistry }
+
+procedure TVAGlobalComponentRegistry.CheckForChangeEvent;
+var
+  Helper: TComponentHelper;
+  NewCaption: string;
+  NewState: string;
+
+  NewItem: TObject;
+  SendData: boolean;
+  CheckState: boolean;
+  DataResult: LongInt;
+  DataStatus: LongInt;
+  NewItemInstructions: string;
+  Temp: string;
+
+  Caption: PChar;
+  Value: PChar;
+  Data: PChar;
+  ControlType: PChar;
+  State: PChar;
+  Instructions: PChar;
+  ItemInstructions: PChar;
+
+  function HandleStillValid: boolean;
+  begin
+    Result := IsWindow(FComponentData.Handle) and IsWindowVisible(FComponentData.Handle);
+  end;
+
+  function NoChangeNeeded: boolean;
+  begin
+    Result := TRUE;
+    if not assigned(SRComponentData) then exit;
+    if not assigned(SRConfigChangePending) then exit;
+    if FComponentData.Handle = 0 then exit;
+    Helper := GetComponentHelper(FComponentData.Handle);
+    if not assigned(Helper) then exit;
+    Helper.InitializeComponentManager;
+    if Helper.StandardComponent then exit;
+    if SRConfigChangePending then exit;
+    Result := FALSE;
+  end;
+
+  procedure Init;
+  begin
+    DataResult := DATA_NONE;
+    DataStatus := DATA_NONE;
+    Caption := nil;
+    Value := nil;
+    Data := nil;
+    ControlType := nil;
+    State := nil;
+    Instructions := nil;
+    ItemInstructions := nil;
+    CheckState := TRUE;
+  end;
+
+  procedure ProcessCaptionChange;
+  begin
+    if FComponentData.CaptionQueried and Helper.ManageCaption then
+    begin
+      NewCaption := Helper.GetCaption(DataResult);
+      if (FComponentData.Caption <> NewCaption) then
+      begin
+        FComponentData.Caption := NewCaption;
+        if ((DataResult and DATA_CAPTION) <> 0) then
+        begin
+          DataStatus := DataStatus OR DATA_CAPTION;
+          Caption := PChar(NewCaption);
+        end;
+      end;
+    end;
+  end;
+
+  procedure ProcessItemChange;
+  var
+    TempValue: string;
+  begin
+    if FComponentData.ValueQueried and Helper.MonitorForItemChange then
+    begin
+      NewItem := Helper.GetItem;
+      if (FComponentData.Item <> NewItem) then
+      begin
+        FComponentData.Item := NewItem;
+        CheckState := FALSE;
+        SendData := FALSE;
+
+        if Helper.ManageValue then
+        begin
+          Value := PChar(Helper.GetValue(DataResult));
+          if (DataResult AND DATA_VALUE) <> 0 then
+          begin
+            SendData := TRUE;
+            DataStatus := DataStatus OR DATA_VALUE;
+          end;
+        end;
+
+        if Helper.ManageData then
+        begin
+          if Helper.ManageValue then
+            TempValue := Value
+          else
+            TempValue := '';
+          Data := PChar(Helper.GetData(DataResult, Value));
+          if (DataResult AND DATA_DATA) <> 0 then
+          begin
+            SendData := TRUE;
+            DataStatus := DataStatus OR DATA_DATA;
+          end;
+        end;
+
+        if FComponentData.StateQueried and Helper.MonitorForStateChange then
+        begin
+          NewState := Helper.GetState(DataResult);
+          if FComponentData.State <> NewState then
+            FComponentData.State := NewState;
+          if (DataResult AND DATA_STATE) <> 0 then
+          begin
+            State := PChar(NewState);
+            SendData := TRUE;
+            DataStatus := DataStatus OR DATA_STATE;
+            if FComponentData.ItemInstrQueried and Helper.ManageItemInstructions then
+            begin
+              NewItemInstructions := Helper.GetItemInstructions(DataResult);
+              if NewItemInstructions <> '' then
+              begin
+                temp := IIDelim + NewItemInstructions + IIDelim;
+                if pos(temp, FComponentData.ItemInstructions) < 1  then
+                begin
+                  FComponentData.ItemInstructions := FComponentData.ItemInstructions + NewItemInstructions + IIDelim;
+                  ItemInstructions := PChar(NewItemInstructions);
+                  if (DataResult AND DATA_ITEM_INSTRUCTIONS) <> 0 then
+                    DataStatus := DataStatus OR DATA_ITEM_INSTRUCTIONS;
+                end;
+              end;
+            end;
+          end;
+        end;
+        if SendData then
+          DataStatus := DataStatus OR DATA_ITEM_CHANGED;
+      end;    
+    end;
+  end;
+
+  procedure ProcessStateChange;
+  begin
+    if CheckState and FComponentData.StateQueried and Helper.MonitorForStateChange then
+    begin
+      NewState := Helper.GetState(DataResult);
+      if FComponentData.State <> NewState then
+      begin
+        FComponentData.State := NewState;
+        if (DataResult AND DATA_STATE) <> 0 then
+        begin
+          State := PChar(NewState);
+          DataStatus := DataStatus OR DATA_STATE;
+        end;
+      end;
+    end;
+  end;
+
+  procedure AddControlType;
+  begin
+    if (DataStatus <> DATA_NONE) and Helper.ManageComponentName then
+    begin
+      ControlType := PChar(Helper.GetComponentName(DataResult));
+      if (DataResult AND DATA_CONTROL_TYPE) <> 0 then
+      begin
+        DataStatus := DataStatus OR DATA_CONTROL_TYPE;
+      end;
+    end;
+  end;
+
+  procedure SendChangeData;
+  begin
+    if (DataStatus <> DATA_NONE) then
+    begin
+      DataStatus := DataStatus OR DATA_CHANGE_EVENT;
+      SRComponentData(FComponentData.Handle, DataStatus, Caption, Value, Data, ControlType,
+                      State, Instructions, ItemInstructions);
+    end;
+  end;
+
+begin
+  if NoChangeNeeded then
+  begin
+    exit;
+  end;
+  // HandleStillValid needed because reminders destroy check boxes from underneath us
+  if HandleStillValid then Init;
+  if HandleStillValid then ProcessCaptionChange;
+  if HandleStillValid then ProcessItemChange;
+  if HandleStillValid then ProcessStateChange;
+  if HandleStillValid then AddControlType;
+  if HandleStillValid then SendChangeData;
+end;
+
+
+procedure TVAGlobalComponentRegistry.ComponentDataNeededEvent(const WindowHandle: HWND;
+    var DataStatus: LongInt; var Caption: PChar; var Value: PChar; var Data: PChar;
+    var ControlType: PChar; var State: PChar; var Instructions: PChar; var ItemInstructions: PChar);
+var
+  DataResult: LongInt;
+  UseCaption: boolean;
+  UseValue: boolean;
+  UseControlType: boolean;
+  UseState: boolean;
+  UseInstructions: boolean;
+  UseItemInstructions: boolean;
+  NewCaption: string;
+  NewState: string;
+  NewItemInstructions: string;
+  NewValue: string;
+  NewData: string;
+  NewInstructions: string;
+  NewControlType: string;
+  Component: TWinControl;
+  HelperInvalid: boolean;
+  Done: boolean;
+  temp: string;
+
+  function HelperValid: boolean;
+  begin
+    if HelperInvalid then
+    begin
+      Result := FALSE;
+      exit;
+    end;
+    try
+      Result := assigned(FCurrentHelper) and
+                assigned(FCurrentHelper.FComponent) and
+                IsWindow(FCurrentHelper.FComponent.Handle) and
+                IsWindowVisible(FCurrentHelper.FComponent.Handle);
+    except
+      Result := FALSE;
+    end;
+    if not Result then
+    begin
+      HelperInvalid := TRUE;
+    end;
+  end;
+  
+  procedure UpdateComponentData;
+  begin
+    if (FComponentData.Handle = WindowHandle) then
+    begin
+      if UseCaption then
+      begin
+        FComponentData.CaptionQueried := TRUE;
+        FComponentData.Caption := NewCaption;
+      end;
+      if UseValue then
+      begin
+        FComponentData.ValueQueried := TRUE;
+        if FCurrentHelper.MonitorForItemChange and HelperValid then
+          FComponentData.Item := FCurrentHelper.GetItem;
+      end;
+      if UseState then
+      begin
+        FComponentData.StateQueried := TRUE;
+        FComponentData.State := NewState;
+      end;
+      if UseItemInstructions then
+      begin
+        FComponentData.ItemInstrQueried := TRUE;
+        FComponentData.ItemInstructions := IIDelim + NewItemInstructions + IIDelim;
+      end;
+    end;
+  end;
+
+  procedure InitializeVars;
+  begin
+    DataResult          := DATA_NONE;
+    UseCaption          := ((DataStatus and DATA_CAPTION) <> 0);
+    UseValue            := ((DataStatus and DATA_VALUE) <> 0);
+    UseControlType      := ((DataStatus and DATA_CONTROL_TYPE) <> 0);
+    UseState            := ((DataStatus and DATA_STATE) <> 0);
+    UseInstructions     := ((DataStatus and DATA_INSTRUCTIONS) <> 0);
+    UseItemInstructions := ((DataStatus and DATA_ITEM_INSTRUCTIONS) <> 0);
+
+    NewCaption := '';
+    NewState := '';
+    NewItemInstructions := '';
+
+    if HelperValid then FCurrentHelper.InitializeComponentManager;
+  end;
+
+  procedure GetDataValues;
+  begin
+    if UseCaption and HelperValid then
+    begin
+      NewCaption := FCurrentHelper.GetCaption(DataResult);
+      Caption := PChar(NewCaption);
+    end;
+
+    if UseValue and HelperValid then
+    begin
+    //PChars are pointers - must point to string - if point to function thier values change unpredictably
+      NewValue := FCurrentHelper.GetValue(DataResult);
+      Value := PChar(NewValue);
+      NewData := FCurrentHelper.GetData(DataResult, NewValue);
+      Data := PChar(NewData);
+    end;
+
+    if UseControlType and HelperValid then
+    begin
+      NewControlType := FCurrentHelper.GetComponentName(DataResult);
+      ControlType := PChar(NewControlType);
+    end;
+
+    if UseState and HelperValid then
+    begin
+      NewState := FCurrentHelper.GetState(DataResult);
+      State := PChar(NewState);
+    end;
+
+    if UseInstructions and HelperValid then
+    begin
+      NewInstructions := FCurrentHelper.GetInstructions(DataResult);
+      Instructions := PChar(NewInstructions);
+    end;
+
+    if UseItemInstructions and HelperValid then
+    begin
+      NewItemInstructions := FCurrentHelper.GetItemInstructions(DataResult);
+      ItemInstructions := PChar(NewItemInstructions);
+    end;
+  end;
+
+begin
+  if FDestroying then exit;
+  if (FComponentData.Handle <> WindowHandle) then
+  begin
+    FComponentData := NewComponentData;
+    FComponentData.Handle := WindowHandle;
+  end;
+
+  HelperInvalid := FALSE;
+  FCurrentHelper := GetComponentHelper(WindowHandle);
+  if not assigned(FCurrentHelper) then
+    DataResult := DATA_ERROR
+  else
+  begin
+    if HelperValid then
+    begin
+      try
+        repeat
+          Done := TRUE;
+          if HelperValid then
+            Component := FCurrentHelper.FComponent
+          else
+            Component := nil;
+          if HelperValid then InitializeVars;
+          if HelperValid then temp := FCurrentHelper.Component.ClassName;
+          if HelperValid then GetDataValues;
+          if HelperValid then UpdateComponentData;
+          if (not assigned(FCurrentHelper)) and assigned(Component) then
+          begin
+            try
+              FCurrentHelper := GetComponentHelper(Component.Handle);
+              Done := FALSE;
+              HelperInvalid := FALSE;
+            except
+            end;
+          end;
+        until Done;
+      finally
+        FCurrentHelper := nil;
+      end;
+      if HelperInvalid and (DataResult = DATA_NONE) then
+        DataResult := DATA_ERROR;
+    end
+    else
+    begin
+      FCurrentHelper := nil;
+      DataResult := DATA_ERROR;
+    end;
+  end;
+  DataStatus := DataResult;
+end;
+
+var
+  CanAssignFocus: boolean = TRUE;
+
+var
+  CanCheckEvent: boolean = TRUE;
+
+function GetMessageHookProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
+var
+  pMessage: PMsg;
+  msg: UINT;
+
+begin
+  if CanCheckEvent then
+  begin
+    CanCheckEvent := FALSE;
+    try
+      if TVAGlobalComponentRegistry.FActive and (code >= 0) then
+      begin
+        pMessage := pointer(lParam);
+        msg := pMessage^.message and $ffff;
+        case msg of
+          WM_KEYFIRST .. WM_KEYLAST,
+          (WM_MOUSEFIRST + 1) .. WM_MOUSELAST: // WM_MOUSEFIRST = WM_MOUSEMOVE
+          GlobalRegistry.CheckForChangeEvent;
+        end;
+      end;
+    finally
+      CanCheckEvent := TRUE;
+    end;
+  end;
+  Result := CallNextHookEx(TVAGlobalComponentRegistry.FGetMsgHookHandle, Code, wParam, lParam);
+end;
+
+constructor TVAGlobalComponentRegistry.Create;
+begin
+  FPendingFieldObjects := TStringList.Create;
+  FComponentRegistry := TStringList.Create;
+  FComponentRegistry.Duplicates := dupAccept;
+  FComponentRegistry.Sorted := TRUE;
+  FHandlesXREF := TStringList.Create;
+  FHandlesXREF.Duplicates := dupAccept;
+  FHandlesXREF.Sorted := TRUE;
+  FHandlesPending := TStringList.Create;
+  FPendingRecheckTimer := TTimer.Create(nil);
+  FPendingRecheckTimer.Enabled := FALSE;
+  FPendingRecheckTimer.OnTimer := TimerEvent;
+  FPendingRecheckTimer.Interval := 500;
+  FComponentData := NewComponentData;
+  FGetMsgHookHandle := SetWindowsHookEx(WH_GETMESSAGE, GetMessageHookProc, 0, GetCurrentThreadID);
+  TVA508RegistrationScreenReader(GetScreenReader).
+              AddComponentDataNeededEventHandler(ComponentDataNeededEvent);
+  FActive := TRUE;
+end;
+
+destructor TVAGlobalComponentRegistry.Destroy;
+begin
+  FDestroying := TRUE;
+  FActive := FALSE;
+  TVA508RegistrationScreenReader(GetScreenReader).RemoveComponentDataNeededEventHandler(ComponentDataNeededEvent);
+  UnhookWindowsHookEx(FGetMsgHookHandle);
+  FreeAndNil(FPendingRecheckTimer);
+  FreeAndNil(FHandlesPending);
+  FreeAndNil(FHandlesXREF);
+  FreeAndNil(FPendingFieldObjects);
+  FreeAndNilTStringsAndObjects(FComponentRegistry);
+  inherited;
+end;
+
+function TVAGlobalComponentRegistry.GetCompKey(Component: TWinControl): String;
+begin
+  Result := FastIntToHex(Integer(Component));
+end;
+
+function TVAGlobalComponentRegistry.GetComponentHandle(Component: TWinControl): Hwnd;
+var
+  i: integer;
+  UseDefault: boolean;
+  data: TAlternateHandleData;
+  ok: boolean;
+begin
+  Result := 0;
+  ok := Component.Visible;
+  if ok then
+  begin
+    ok := Component is TCustomForm;
+    if not ok then
+    begin
+      ok := assigned(Component.parent);
+      if ok then
+        ok := Component.parent.Visible;
+    end;
+  end;
+  if ok then
+  begin
+    UseDefault := TRUE;
+    if assigned(AltHandleClasses) then
+    begin
+      for i := 0 to AltHandleClasses.Count-1 do
+      begin
+        data := TAlternateHandleData(AltHandleClasses[i]);
+        if Component.InheritsFrom(data.ComponentClass) then
+        begin
+          UseDefault := FALSE;
+          Result := data.GetHandle(Component);
+        end;
+      end;
+    end;
+    if UseDefault then
+    begin
+      try
+        Result := Component.Handle
+      except
+        Result := 0;
+      end;
+    end;
+  end;
+end;
+
+function TVAGlobalComponentRegistry.GetFieldObject(Component: TWinControl): TVA508ComponentAccessibility;
+var
+  idx: integer;
+  compKey: string;
+begin
+  compKey := GetCompKey(component);
+  idx := FComponentRegistry.IndexOf(compkey);
+  if idx < 0 then
+  begin
+    idx := FPendingFieldObjects.IndexOf(compKey);
+    if idx < 0 then
+      Result := nil
+    else
+      Result := TVA508ComponentAccessibility(FPendingFieldObjects.Objects[idx]);
+  end
+  else
+    Result := TComponentHelper(FComponentRegistry.Objects[idx]).FieldObject;
+end;
+
+function TVAGlobalComponentRegistry.GetComponentHelper(WindowHandle: HWND): TComponentHelper;
+var
+  key: string;
+  idx: integer;
+  Recheck: boolean;
+begin
+  Result := nil;
+  if IsWindow(WindowHandle) and IsWindowVisible(WindowHandle) then
+  begin
+    key := FastIntToHex(WindowHandle);
+    idx := FHandlesXREF.IndexOf(key);
+    if idx < 0 then
+    begin
+      UpdateHandles(WindowHandle, Recheck);
+      if Recheck then
+        idx := FHandlesXREF.IndexOf(key);
+    end;
+    if idx >= 0 then
+    begin
+      Result := TComponentHelper(FHandlesXREF.Objects[idx]);
+    end;
+  end;
+end;
+
+function TVAGlobalComponentRegistry.HasHandle(Component: TWinControl;
+  var HandleKey: String): boolean;
+begin
+  Result := FALSE;
+  HandleKey := '';
+  if FDestroying then exit;
+  try
+    if Component.Visible and ((Component.Parent <> nil) or (Component is TCustomForm)) then
+      HandleKey := FastIntToHex(GetComponentHandle(Component));
+  except
+    HandleKey := '';
+  end;
+  Result := (HandleKey <> '') and (HandleKey <> '00000000');
+end;
+
+procedure TVAGlobalComponentRegistry.RegisterFieldObject(
+  Component: TWinControl; FieldObject: TVA508ComponentAccessibility;
+  Adding: boolean);
+var
+  idx: integer;
+  compKey: string;
+  Helper: TComponentHelper;
+
+begin
+  if FDestroying or (not assigned(Component)) then exit;
+  compKey := GetCompKey(component);
+  idx := FComponentRegistry.IndexOf(compkey);
+  if idx < 0 then
+  begin
+    if Adding then
+    begin
+      if FPendingFieldObjects.IndexOf(CompKey) < 0 then
+        FPendingFieldObjects.AddObject(compKey, FieldObject)
+    end
+    else
+    begin
+      idx := FPendingFieldObjects.IndexOf(CompKey);
+      if idx >= 0 then
+        FPendingFieldObjects.Delete(idx);
+    end;
+  end
+  else
+  begin
+    Helper := TComponentHelper(FComponentRegistry.Objects[idx]);
+    if Adding then
+      Helper.FieldObject := FieldObject
+    else
+      Helper.FieldObject := nil;
+  end;
+end;
+
+procedure TVAGlobalComponentRegistry.RegisterMSAA(Component: TWinControl);
+var
+  Data: TMSAAData;
+begin
+  if Component.InheritsFrom(TWinControl) then
+  begin
+    Data := FindMSAAQueryData(TWinControlClass(Component.ClassType));
+    if assigned(Data) then
+    begin
+      if assigned(data.Proc) then
+        RegisterMSAAComponentQueryProc(Component, Data.Proc)
+      else
+        RegisterMSAAComponentListQueryProc(Component, Data.ListProc)
+    end;
+  end;
+end;
+
+procedure TVAGlobalComponentRegistry.RegisterComponent(
+      component: TWinControl; Manager: TVA508AccessibilityManager);
+var
+  Helper: TComponentHelper;
+  compKey, handleKey: string;
+
+  procedure CheckManagedClasses;
+  var
+    cls: TClass;
+    pass: integer;
+    i: integer;
+    mData: TVA508ManagedComponentClass;
+    found, ok: boolean;
+  begin
+    if assigned(ManagedClasses) then
+    begin
+      cls := Component.ClassType;
+      found := FALSE;
+      for pass := 0 to 1 do
+      begin
+        for i := 0 to ManagedClasses.Count - 1 do
+        begin
+          mData := TVA508ManagedComponentClass(ManagedClasses[i]);
+          if mData.ManageDescendentClasses then
+          begin
+            if (pass = 1) then
+              ok := cls.InheritsFrom(mData.ComponentClassType)
+            else
+              ok := false;
+          end
+          else
+          begin
+            if (pass = 0) then
+              ok := (mData.ComponentClassType = cls)
+            else
+              ok := false;
+          end;
+          if ok then
+          begin
+            Helper.ManagedClassData := mData;
+            found := TRUE;
+            break;
+          end;
+        end;
+        if found then
+          break;
+      end;
+    end;
+  end;
+
+  procedure CheckComplexClasses;
+  var
+    cls: TClass;
+    i: integer;
+    mgr: TVA508ComplexComponentManager;
+  begin
+    if assigned(ComplexClasses) then
+    begin
+      cls := Component.ClassType;
+      for i := 0 to ComplexClasses.Count - 1 do
+      begin
+        mgr := TVA508ComplexComponentManager(ComplexClasses[i]);
+        if cls.InheritsFrom(mgr.ComponentClass) then
+        begin
+          Helper.ComplexManager := mgr;
+          mgr.Refresh(Component, Manager);
+          break;
+        end;
+      end;
+    end;
+  end;
+
+  procedure CreateHelper;  //TVA508ComplexComponentManager(ComplexClasses[i]);
+  var
+    idx: integer;
+  begin
+    Helper := TComponentHelper.Create;
+    Helper.Component := Component;
+    Helper.Manager := Manager;
+    Helper.ManagedClassData := nil;
+    CheckComplexClasses;
+    CheckManagedClasses;
+    idx := FPendingFieldObjects.IndexOf(compKey);
+    if idx >= 0 then
+    begin
+      Helper.FieldObject := TVA508ComponentAccessibility(FPendingFieldObjects.Objects[idx]);
+      FPendingFieldObjects.Delete(idx);
+    end;
+  end;
+
+  procedure RegisterComponent;
+  begin
+    compKey := GetCompKey(component);
+    if FComponentRegistry.IndexOf(compkey) < 0 then
+    begin
+      CreateHelper;
+      FComponentRegistry.AddObject(compKey, Helper);
+      if HasHandle(Component, HandleKey) then
+      begin
+        Helper.HandleKey := HandleKey;
+        FHandlesXREF.AddObject(HandleKey, Helper);
+        RegisterMSAA(Component);
+      end
+      else
+      begin
+        FHandlesPending.AddObject(compKey, Helper);
+        if not FPendingRecheckTimer.Enabled then
+          FPendingRecheckTimer.Enabled := TRUE;
+      end;
+    end;
+  end;
+
+begin
+  if FDestroying or (not assigned(Component)) then exit;
+  RegisterComponent;
+end;
+
+procedure TVAGlobalComponentRegistry.TimerEvent(Sender: TObject);
+var
+  idx: integer;
+  Helper: TComponentHelper;
+  handleKey: string;
+
+  function SkipCheck: boolean;
+  begin
+    Result := FDestroying or FUnregisteringComponent;
+  end;
+
+begin
+  if SkipCheck or FCheckingPendingList then exit;
+  FCheckingPendingList := TRUE;
+  try
+    idx := FHandlesPending.Count-1;
+    while (idx >= 0) and (not SkipCheck) do
+    begin
+      Helper := TComponentHelper(FHandlesPending.Objects[idx]);
+      if HasHandle(Helper.Component, handleKey) then
+      begin
+        Helper.HandleKey := handleKey;
+        FHandlesXREF.AddObject(handleKey, Helper);
+        FHandlesPending.Delete(idx);
+        RegisterMSAA(Helper.Component);
+      end;
+      dec(idx);
+    end;
+    if FHandlesPending.Count = 0 then
+      FPendingRecheckTimer.Enabled := FALSE;
+  finally
+    FCheckingPendingList := FALSE;
+  end;
+end;
+
+procedure TVAGlobalComponentRegistry.UnregisterComponent(
+  component: TWinControl);
+var
+  idx: integer;
+  compKey, handleKey: string;
+  Helper: TComponentHelper;
+begin
+  if FDestroying or (not assigned(component)) then exit;
+  FUnregisteringComponent := TRUE;
+  try
+    compKey := GetCompKey(Component);
+    idx := FComponentRegistry.IndexOf(compkey);
+    if idx >= 0 then
+    begin
+      Helper := TComponentHelper(FComponentRegistry.Objects[idx]);
+      handleKey := Helper.HandleKey;
+      FComponentRegistry.Delete(idx);
+      idx := FHandlesXREF.IndexOf(handleKey);
+      if idx >= 0 then
+        FHandlesXREF.Delete(idx);
+      idx := FHandlesPending.IndexOf(compKey);
+      if idx >= 0 then
+        FHandlesPending.Delete(idx);
+      Helper.Free;
+      if assigned(Component) then
+        UnregisterMSAA(Component);
+    end;
+  finally
+    FUnregisteringComponent := FALSE;
+  end;
+end;
+
+
+procedure TVAGlobalComponentRegistry.UnregisterMSAA(Component: TWinControl);
+var
+  Data: TMSAAData;
+begin
+  if Component.InheritsFrom(TWinControl) then
+  begin
+    Data := FindMSAAQueryData(TWinControlClass(Component.ClassType));
+    if assigned(Data) then
+    begin
+      if assigned(Data.Proc) then
+        UnregisterMSAAComponentQueryProc(Component, Data.Proc)
+      else
+        UnregisterMSAAComponentListQueryProc(Component, Data.ListProc);
+    end;
+  end;
+end;
+
+procedure TVAGlobalComponentRegistry.UpdateHandles(WindowHandle: HWnd; var HandlesModified: boolean);
+var
+  Handle: Hwnd;
+  TimerRunning: boolean;
+  HandleIndex: integer;
+
+  procedure UpdateHandle(index: integer);
+  var
+    Helper: TComponentHelper;
+    StatedHandle, TrueHandle: HWnd;
+    key : string;
+    idx: integer;
+
+  begin
+    StatedHandle := FastHexToInt(FHandlesXREF[index]);
+    Helper := TComponentHelper(FHandlesXREF.Objects[index]);
+    if assigned(Helper) and assigned(Helper.Component) then
+    begin
+      TrueHandle := GetComponentHandle(Helper.Component);
+      if TrueHandle <> 0 then
+      begin
+        if StatedHandle <> TrueHandle then
+        begin
+          key := FastIntToHex(TrueHandle);
+          Helper.HandleKey := key;
+          HandlesModified := TRUE;
+          if FHandlesXREF.Sorted then
+          begin
+            FHandlesXREF.Delete(index);
+            FHandlesXREF.AddObject(key, Helper);
+          end
+          else
+            FHandlesXREF[index] := key;
+        end;
+      end
+      else
+      begin
+        Helper.HandleKey := '';
+        FHandlesPending.AddObject(GetCompKey(Helper.component), Helper);
+        FHandlesXREF.Delete(index);
+        TimerRunning := TRUE;
+      end;
+    end
+    else
+    begin
+      FHandlesXREF.Delete(index);
+      if assigned(Helper) then
+      begin
+        key := GetCompKey(Helper.component);
+        idx := FComponentRegistry.IndexOf(key);
+        if idx >= 0 then
+          FComponentRegistry.delete(idx);
+        Helper.Free;
+      end;
+    end;
+  end;
+
+  function FindRootHandle(WindowHandle: HWnd; var idx: integer): Hwnd;
+  var
+    done: boolean;
+    key: string;
+
+  begin
+    Result := WindowHandle;
+    done := FALSE;
+    repeat
+      key := FastIntToHex(Result);
+      idx := FHandlesXREF.IndexOf(key);
+      if idx < 0 then
+      begin
+        Result := Windows.GetAncestor(Result, GA_PARENT);
+        if Result = 0 then
+          done := TRUE;
+      end
+      else
+        done := TRUE;
+    until done;
+  end;
+
+  procedure UpdateAllHandles;
+  var
+    i: integer;
+  begin
+    FHandlesXREF.Sorted := FALSE;
+    try
+      for I := FHandlesXREF.Count - 1 downto 0 do
+      begin
+        UpdateHandle(i);
+      end;
+    finally
+      FHandlesXREF.Sorted := TRUE;
+    end;  
+  end;
+
+  procedure UpdateChildrenHandles(idx: integer);
+  var
+    i, objIdx, hexidx: integer;
+    Helper, child: TComponentHelper;
+    objKey, key: string;
+    ctrl: TControl;
+  begin
+    Helper := TComponentHelper(FHandlesXREF.Objects[idx]);
+    if assigned(Helper) then
+    begin
+      if assigned(Helper.ComplexManager) then
+        Helper.ComplexManager.Refresh(Helper.Component, Helper.Manager);
+      for i := 0 to Helper.component.ControlCount-1 do
+      begin
+        ctrl := Helper.component.Controls[i];
+        if assigned(ctrl) and (ctrl is TWinControl) then
+        begin
+          objKey := GetCompKey(TWinControl(ctrl));
+          objIdx := FComponentRegistry.IndexOf(objKey);
+          if objidx >= 0 then
+          begin
+            child := TComponentHelper(FComponentRegistry.Objects[objidx]);
+            if assigned(child) then
+            begin
+              key := child.HandleKey;
+              hexidx := FHandlesXREF.IndexOf(key);
+              if hexidx >= 0 then
+              begin
+                UpdateHandle(hexidx);
+                if key <> child.HandleKey then
+                begin
+                  hexidx := FHandlesXREF.IndexOf(child.HandleKey);
+                  if hexidx >= 0 then
+                  begin
+                    UpdateChildrenHandles(hexidx);
+                  end;
+                end;
+              end;
+            end;
+          end
+        end;
+      end;
+    end;
+  end;
+
+begin
+  TimerRunning := FPendingRecheckTimer.Enabled;
+  FPendingRecheckTimer.Enabled := FALSE;
+  HandlesModified := FALSE;
+  try
+    Handle := FindRootHandle(WindowHandle, HandleIndex);
+    if Handle = 0 then
+      UpdateAllHandles
+    else
+      UpdateChildrenHandles(HandleIndex);
+  finally
+    FPendingRecheckTimer.Enabled := TimerRunning;
+  end;
+end;
+
+{ TVA508ComponentManager }
+
+constructor TVA508ComponentManager.Create(ManagedTypes: TManagedTypes);
+begin
+  FManagedTypes := ManagedTypes;
+end;
+
+function TVA508ComponentManager.GetCaption(Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.GetData(Component: TWinControl; Value: string): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.GetInstructions(Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.GetItem(Component: TWinControl): TObject;
+begin
+  Result := nil;
+end;
+
+function TVA508ComponentManager.GetItemInstructions(
+  Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.GetState(Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.GetValue(Component: TWinControl): string;
+begin
+  Result := '';
+end;
+
+function TVA508ComponentManager.ManageCaption(Component: TWinControl): boolean;
+begin
+  Result := mtCaption in FManagedTypes;
+end;
+
+function TVA508ComponentManager.ManageComponentName(
+  Component: TWinControl): boolean;
+begin
+  Result := mtComponentName in FManagedTypes;
+end;
+
+function TVA508ComponentManager.ManageData(Component: TWinControl): boolean;
+begin
+  Result := mtData in FManagedTypes;
+end;
+
+function TVA508ComponentManager.ManageInstructions(
+  Component: TWinControl): boolean;
+begin
+  Result := mtInstructions in FManagedTypes;
+end;
+
+function TVA508ComponentManager.ManageItemInstructions(
+  Component: TWinControl): boolean;
+begin
+  Result := mtItemInstructions in FManagedTypes;
+end;
+
+function TVA508ComponentManager.ManageState(Component: TWinControl): boolean;
+begin
+  Result := mtState in FManagedTypes;
+end;
+
+function TVA508ComponentManager.ManageValue(Component: TWinControl): boolean;
+begin
+  Result := mtValue in FManagedTypes;
+end;
+
+function TVA508ComponentManager.MonitorForItemChange(
+  Component: TWinControl): boolean;
+begin
+  Result := mtItemChange in FManagedTypes;
+end;
+
+function TVA508ComponentManager.MonitorForStateChange(
+  Component: TWinControl): boolean;
+begin
+  Result := mtStateChange in FManagedTypes;
+end;
+
+function TVA508ComponentManager.Redirect(Component: TWinControl;
+  var ManagedType: TManagedType): TWinControl;
+begin
+  Result := nil;
+  ManagedType := mtNone;
+end;
+
+function TVA508ComponentManager.RedirectsComponent(Component: TWinControl): boolean;
+begin
+  Result := mtComponentRedirect in FManagedTypes;
+end;
+
+{ TVA508ManagedComponentClass }
+
+constructor TVA508ManagedComponentClass.Create(AClassType: TWinControlClass;
+                     ManageTypes: TManagedTypes; AManageDescendentClasses: boolean = FALSE);
+begin
+  FClassType := AClassType;
+  FManageDescendentClasses := AManageDescendentClasses;
+  inherited Create(ManageTypes);
+end;
+
+{ TVA508SilentComponent }
+
+function TVA508SilentComponent.GetComponentName(Component: TWinControl): string;
+begin
+  Result := ComponentManagerSilentText;
+end;
+
+function TVA508SilentComponent.GetInstructions(Component: TWinControl): string;
+begin
+  Result := ComponentManagerSilentText;
+end;
+
+function TVA508SilentComponent.GetState(Component: TWinControl): string;
+begin
+  Result := ComponentManagerSilentText;
+end;
+
+function TVA508SilentComponent.GetValue(Component: TWinControl): string;
+begin
+  Result := ComponentManagerSilentText;
+end;
+
+{ TVA508AccessibilityEvents }
+
+constructor TVA508ComponentAccessibility.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  VA508ComponentCreationCheck(Self, AOwner, FALSE, TRUE);
+  CreateGlobalRegistry;
+end;
+
+procedure TVA508ComponentAccessibility.SetComponent(const Value: TWinControl);
+var
+  i: integer;
+  Comp: TComponent;
+begin
+  if FComponent <> Value then
+  begin
+    if assigned(Value) then
+    begin
+      for i := 0 to Owner.ComponentCount-1 do
+      begin
+        Comp := Owner.Components[i];
+        if (Comp is TVA508ComponentAccessibility) and (Comp <> Self) then
+        begin
+          if TVA508ComponentAccessibility(Comp).Component = Value then
+            raise TVA508Exception.Create(Value.Name + ' is already assigned to another ' +
+                    TVA508ComponentAccessibility.ClassName + ' component');
+        end;
+      end;
+      if assigned(GlobalRegistry) then
+      begin
+        if assigned(FComponent) then
+          GlobalRegistry.RegisterFieldObject(FComponent, Self, FALSE);
+        GlobalRegistry.RegisterFieldObject(Value, Self, TRUE);
+      end;
+      FComponent := Value;
+    end
+    else
+    begin
+      if assigned(FComponent) and assigned(GlobalRegistry) then
+        GlobalRegistry.RegisterFieldObject(FComponent, Self, FALSE);
+      FComponent := nil;
+    end;
+  end;
+end;
+
+{ TComponentHelper }
+
+procedure TComponentHelper.InitializeComponentManager;
+
+var
+  ClsManager: TVA508ManagedComponentClass;
+  CompManager: TVA508ComponentManager;
+  data: string;
+
+  procedure InitializeComponentHelper;
+  begin
+    if assigned(FComponentManager) and FComponentManager.RedirectsComponent(FComponent) then
+    begin
+      FRedirectedComponent := FComponentManager.Redirect(FComponent, FRedirectedHelperType);
+      if FRedirectedComponent.Visible then
+      begin
+        FRedirectedHelper := GlobalRegistry.GetComponentHelper(FRedirectedComponent.Handle);
+        if assigned(FRedirectedHelper) then
+          FRedirectedHelper.InitializeComponentManager
+        else
+          ClearRedirect;
+
+        data := FRedirectedComponent.ClassName + ' / ';
+        if assigned(FRedirectedHelper.ComponentManager) then
+          data := data + FRedirectedHelper.ComponentManager.ClassName
+        else data := data +' no manager';
+      end
+      else
+        ClearRedirect;
+    end
+    else
+      ClearRedirect;
+  end;
+  
+begin
+  ClsManager := ManagedClassData;
+  CompManager := Manager.ComponentManager[Component];
+  if assigned(ClsManager) or assigned(CompManager) then
+  begin
+    if assigned(CompManager) then
+      FComponentManager := CompManager
+    else
+      FComponentManager := ClsManager;
+  end
+  else
+    FComponentManager := nil;
+  InitializeComponentHelper;
+end;
+
+procedure TComponentHelper.ClearRedirect;
+begin
+  FRedirectedHelper := nil;
+  FRedirectedHelperType := mtNone;
+  FRedirectedComponent := nil;
+end;
+
+constructor TComponentHelper.Create;
+begin
+  ClearRedirect;
+end;
+
+destructor TComponentHelper.Destroy;
+begin
+  if Assigned(GlobalRegistry) and (GlobalRegistry.FCurrentHelper = Self) then
+    GlobalRegistry.FCurrentHelper := nil;
+  if Assigned(GlobalRegistry) and assigned(GlobalRegistry.FCurrentHelper) and
+    (GlobalRegistry.FCurrentHelper.FRedirectedHelper = Self) then
+    GlobalRegistry.FCurrentHelper := nil;
+  inherited;
+end;
+
+function TComponentHelper.GetCaption(var DataResult: Integer): string;
+begin
+  if Redirect(mtCaption) then
+    Result := FRedirectedHelper.GetCaption(DataResult)
+  else
+  begin
+    Result := Manager.ScreenReaderInquiry(FComponent);
+    if Result = '' then
+    begin
+      if assigned(FFieldObject) and (FFieldObject.FCaption <> '') then
+        Result := FFieldObject.FCaption
+      else
+      if assigned(FComponentManager) and FComponentManager.ManageCaption(FComponent) then
+        Result := FComponentManager.GetCaption(FComponent)
+    end;
+    if assigned(FieldObject) and assigned(FieldObject.OnCaptionQuery) then
+      FieldObject.OnCaptionQuery(FieldObject, Result);
+    if Result <> '' then
+      DataResult := DataResult OR DATA_CAPTION;
+  end;
+end;
+
+function TComponentHelper.GetComponentName(var DataResult: Integer): string;
+begin
+  if Redirect(mtComponentName) then
+    Result := FRedirectedHelper.GetComponentName(DataResult)
+  else
+  begin
+    Result := '';
+    if assigned(FFieldObject) and (FFieldObject.FComponentName <> '') then
+      Result := FFieldObject.FComponentName
+    else if assigned(FComponentManager) and FComponentManager.ManageComponentName(FComponent) then
+      Result := FComponentManager.GetComponentName(FComponent);
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnComponentNameQuery) then
+      FFieldObject.FOnComponentNameQuery(FFieldObject, Result);
+    if Result <> '' then
+      DataResult := DataResult OR DATA_CONTROL_TYPE;
+  end;
+end;
+
+function TComponentHelper.GetData(var DataResult: Integer; Value: string): string;
+begin
+  if Redirect(mtData) then
+    Result := FRedirectedHelper.GetData(DataResult, Value)
+  else
+  begin
+    Result := '';
+    if assigned(FComponentManager) and FComponentManager.ManageData(FComponent) then
+    begin
+      Result := FComponentManager.GetData(FComponent, Value);
+      if Result <> '' then
+        DataResult := DataResult OR DATA_DATA;
+    end;
+  end;
+end;
+
+function TComponentHelper.GetInstructions(var DataResult: Integer): string;
+begin
+  if Redirect(mtInstructions) then
+    Result := FRedirectedHelper.GetInstructions(DataResult)
+  else
+  begin
+    Result := '';
+    if assigned(FFieldObject) and (FFieldObject.FInstructions <> '') then
+      Result := FFieldObject.FInstructions
+    else if assigned(FComponentManager) and FComponentManager.ManageInstructions(FComponent) then
+      Result := FComponentManager.GetInstructions(FComponent);
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnInstructionsQuery) then
+      FFieldObject.FOnInstructionsQuery(FFieldObject, Result);
+    if Result <> '' then
+      DataResult := DataResult OR DATA_INSTRUCTIONS;
+  end;
+end;
+
+function TComponentHelper.GetItem: TObject;
+begin
+  if Redirect(mtItemChange) then
+    FRedirectedHelper.GetItem
+  else
+  begin
+    Result := nil;
+    if assigned(FComponentManager) and FComponentManager.MonitorForItemChange(FComponent) then
+      Result := FComponentManager.GetItem(FComponent);
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnItemQuery) then
+      FFieldObject.FOnItemQuery(FFieldObject, Result);
+  end;
+end;
+
+function TComponentHelper.GetItemInstructions(var DataResult: Integer): string;
+begin
+  if Redirect(mtItemInstructions) then
+    Result := FRedirectedHelper.GetItemInstructions(DataResult)
+  else
+  begin
+    Result := '';
+    if assigned(FFieldObject) and (FFieldObject.FItemInstructions <> '') then
+      Result := FFieldObject.FItemInstructions
+    else if assigned(FComponentManager) and FComponentManager.ManageItemInstructions(FComponent) then
+      Result := FComponentManager.GetItemInstructions(FComponent);
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnItemInstructionsQuery) then
+      FFieldObject.FOnItemInstructionsQuery(FFieldObject, Result);
+    if Result <> '' then
+      DataResult := DataResult OR DATA_ITEM_INSTRUCTIONS;
+  end;
+end;
+
+function TComponentHelper.GetState(var DataResult: Integer): string;
+begin
+  Result := '';
+  try
+    if Redirect(mtState) then
+      Result := FRedirectedHelper.GetState(DataResult)
+    else
+    begin
+      if assigned(FComponentManager) and FComponentManager.MonitorForStateChange(FComponent) and
+                                              FComponentManager.ManageState(FComponent) then
+        Result := FComponentManager.GetState(FComponent);
+      if assigned(FFieldObject) and assigned(FFieldObject.FOnStateQuery) then
+        FFieldObject.FOnStateQuery(FFieldObject, Result);
+      if Result <> '' then
+        DataResult := DataResult OR DATA_STATE;
+    end;
+  except
+  // access violations occur here during reminder dialogs - could never figure out why
+  // Self = nil when looking at FFieldObject, but checks before that line showed Self <> nil
+  end;
+end;
+
+function TComponentHelper.GetValue(var DataResult: Integer): string;
+begin
+  if Redirect(mtValue) then
+  begin
+    Result := FRedirectedHelper.GetValue(DataResult);
+  end
+  else
+  begin
+    Result := '';
+    if assigned(FComponentManager) and FComponentManager.ManageValue(FComponent) then
+      Result := FComponentManager.GetValue(FComponent);
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnValueQuery) then
+      FFieldObject.FOnValueQuery(FFieldObject, Result);
+    if Result <> '' then
+      DataResult := DataResult OR DATA_VALUE;
+  end;
+end;
+
+function TComponentHelper.ManageComponentName: boolean;
+begin
+  if Redirect(mtComponentName) then
+    Result := FRedirectedHelper.ManageComponentName
+  else
+  begin
+    if assigned(FFieldObject) and
+      (assigned(FFieldObject.FOnComponentNameQuery) or (FFieldObject.FComponentName <> '')) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.ManageComponentName(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.ManageData: boolean;
+begin
+  if Redirect(mtData) then
+    Result := FRedirectedHelper.ManageData
+  else
+  begin
+    if assigned(FComponentManager) then
+      Result := FComponentManager.ManageData(FComponent)
+    else
+      Result := FALSE;
+  end;
+end;
+
+function TComponentHelper.ManageInstructions: boolean;
+begin
+  if Redirect(mtInstructions) then
+    Result := FRedirectedHelper.ManageInstructions
+  else
+  begin
+    if assigned(FFieldObject) and
+      (assigned(FFieldObject.FOnInstructionsQuery) or (FFieldObject.FInstructions <> '')) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.ManageInstructions(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.ManageItemInstructions: boolean;
+begin
+  if Redirect(mtItemInstructions) then
+    Result := FRedirectedHelper.ManageItemInstructions
+  else
+  begin
+    if assigned(FFieldObject) and
+      (assigned(FFieldObject.FOnItemInstructionsQuery) or (FFieldObject.FItemInstructions <> '')) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.ManageItemInstructions(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.ManageValue: boolean;
+begin
+  if Redirect(mtValue) then
+  begin
+    Result := FRedirectedHelper.ManageValue;
+  end
+  else
+  begin
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnValueQuery) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.ManageValue(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.ManageCaption: boolean;
+begin
+  if Redirect(mtCaption) then
+    Result := FRedirectedHelper.ManageCaption
+  else
+  begin
+    if assigned(FFieldObject) and
+      (assigned(FFieldObject.OnCaptionQuery) or (FFieldObject.FCaption <> '')) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.ManageCaption(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.MonitorForItemChange: boolean;
+begin
+  if Redirect(mtItemChange) then
+    Result := FRedirectedHelper.MonitorForItemChange
+  else
+  begin
+    if assigned(FFieldObject) and assigned(FFieldObject.FOnItemQuery) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.MonitorForItemChange(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.MonitorForStateChange: boolean;
+begin
+  if Redirect(mtStateChange) then
+    Result := FRedirectedHelper.MonitorForStateChange
+  else
+  begin
+    if assigned(FFieldObject) and assigned(FFieldObject.OnStateQuery) then
+      Result := TRUE
+    else
+    begin
+      if assigned(FComponentManager) then
+        Result := FComponentManager.MonitorForStateChange(FComponent) and
+                  FComponentManager.ManageState(FComponent)
+      else
+        Result := FALSE;
+    end;
+  end;
+end;
+
+function TComponentHelper.Redirect(RedirectType: TManagedType): boolean;
+begin
+  Result := FALSE;
+  if assigned(FRedirectedHelper) and assigned(FRedirectedComponent) and
+     (FRedirectedHelperType = RedirectType) then
+    Result := TRUE;
+end;
+
+function TComponentHelper.StandardComponent: boolean;
+begin
+  Result := ((not assigned(FComponentManager)) and (not assigned(FFieldObject)));
+end;
+
+{ TVA508StaticText }
+type
+  TFriendLabel = class(TLabel);
+
+procedure TVA508StaticText.CMFontChanged(var Message: TMessage);
+begin
+  inherited;
+  UpdateSize;
+end;
+
+procedure TVA508StaticText.CMTextChanged(var Message: TMessage);
+begin
+  inherited;
+  UpdateSize;
+end;
+
+constructor TVA508StaticText.Create;
+begin
+  inherited;
+  FLabel := TLabel.Create(Self);
+  FLabel.Parent := Self;
+  FLabel.Align := alClient;
+  ControlStyle := ControlStyle - [csAcceptsControls];
+  FInitTabStop := (not TabStop);
+end;
+
+procedure TVA508StaticText.DeleteChain(FromLabel, ToLabel: TVA508ChainedLabel);
+var
+  next, lbl: TVA508ChainedLabel;
+  prev: TControl;
+begin
+  if FDeletingChain then exit;
+  if FromLabel = ToLabel then exit;    
+  FDeletingChain := TRUE;
+  try
+    next := NextLabel;
+    while assigned(next) and (next <> FromLabel) do
+      next := next.NextLabel;
+    if assigned(next) then
+    begin
+      prev := next.FPreviousLabel;
+      repeat
+        lbl := next;
+        next := next.NextLabel;
+        lbl.Free;
+      until (not assigned(next)) or (next = ToLabel);
+      if assigned(ToLabel) then
+        ToLabel.FPreviousLabel := prev;
+    end;
+  finally
+    FDeletingChain := FALSE;
+  end;
+end;
+
+destructor TVA508StaticText.Destroy;
+begin
+  if assigned(FNextLabel) then
+    DeleteChain(FNextLabel, nil);
+  inherited;
+end;
+
+procedure TVA508StaticText.DoEnter;
+begin
+  inherited DoEnter;
+  InvalidateAll;
+  if Assigned(FOnEnter) then
+     FOnEnter(Self);
+end;
+
+procedure TVA508StaticText.DoExit;
+begin
+  inherited DoExit;
+  InvalidateAll;
+  if Assigned(FOnExit) then
+     FOnExit(Self);
+end;
+
+function TVA508StaticText.GetAlignment: TAlignment;
+begin
+  Result := FLabel.Alignment;
+end;
+
+function TVA508StaticText.GetLabelCaption: string;
+begin
+  Result := FLabel.Caption;
+end;
+
+function TVA508StaticText.GetRootName: string;
+begin
+  result := inherited Name;
+end;
+
+function TVA508StaticText.GetShowAccelChar: boolean;
+begin
+  Result := FLabel.ShowAccelChar;
+end;
+
+procedure TVA508StaticText.InvalidateAll;
+var
+  next: TVA508ChainedLabel;
+begin
+  invalidate;
+  next := FNextLabel;
+  while assigned(next) do
+  begin
+    next.Invalidate;
+    next := next.NextLabel;
+  end;
+end;
+
+procedure TVA508StaticText.Notification(AComponent: TComponent; Operation: TOperation);
+begin
+  inherited;
+  if csDestroying in ComponentState then exit;
+  if (Operation = opRemove) and (AComponent = FNextLabel) and (not FDeletingChain) then
+    SetNextLabel(nil);
+end;
+
+procedure TVA508StaticText.Paint;
+var
+  x1, x2, y1, y2: integer;
+
+  procedure Init;
+  begin
+    Canvas.Font := Self.Font;
+    with Canvas do
+    begin
+      Pen.Width := 1;
+      Brush.Color := clNone;
+      Brush.Style := bsClear;
+    end;
+  end;
+
+//  procedure DrawText;
+//  begin
+//    with Canvas do
+//    begin
+//      Pen.color := Self.Font.Color;
+//      Pen.Style := psSolid;
+//      TextOut(1, 0, Caption);
+//    end;
+//  end;
+
+  procedure InitDrawBorder;
+  var
+    r: TRect;
+  begin
+    with Canvas do
+    begin
+      if Focused then
+      begin
+        Pen.Style := psDot;
+        Pen.Color := Self.Font.Color;
+      end
+      else
+      begin
+        Pen.Style := psSolid;
+        pen.Color := Self.Color;
+      end;
+    end;
+    R := ClientRect;
+    R.Bottom := R.Bottom - 1;
+    R.Right := R.Right - 1;
+    x1 := R.Left;
+    y1 := R.Top;
+    x2 := R.Right;
+    y2 := R.Bottom;
+  end;
+
+  procedure DrawTop;
+  begin
+    With Canvas do
+    begin
+      MoveTo(x1, y2);
+      LineTo(x1, y1);
+      LineTo(x2, y1);
+      LineTo(x2, y2);
+    end;
+  end;
+
+  procedure DrawBottom;
+  var
+    bx1,bx2, max: integer;
+    r: TRect;
+    r2: TRect;
+  begin
+    with Canvas do
+    begin
+      if assigned(FNextLabel) then
+      begin
+        r := BoundsRect;
+        r2 := FNextLabel.BoundsRect;
+        if r.top < r2.top then
+        begin
+          bx1 := r2.Left - r.Left;
+          if (bx1 > 0) then
+          begin
+            if bx1 > x2 then
+              max := x2
+            else
+              max := bx1;
+            moveto(x1,y2);
+            lineto(max,y2);
+          end;
+          bx2 := x2 - (r.Right - r2.Right);
+          if bx2 < x2 then
+          begin
+            if bx2 < x1 then
+              max := x1
+            else
+              max := bx2;
+            moveto(x2,y2);
+            lineto(max,y2);
+          end;
+        end;
+      end
+      else
+        LineTo(x1, y2);
+    end;
+  end;
+  
+begin
+  Init;
+//  if Focused then
+//    DrawText;
+  InitDrawBorder;
+  DrawTop;
+  DrawBottom;
+//  if not Focused then
+//    DrawText;
+end;
+
+procedure TVA508StaticText.SetAlignment(const Value: TAlignment);
+begin
+  FLabel.Alignment := Value;
+end;
+
+procedure TVA508StaticText.SetLabelCaption(const Value: string);
+begin
+  if FLabel.Caption <> Value then
+  begin
+    FLabel.Caption := Value;
+    UpdateSize;
+  end;
+end;
+
+procedure TVA508StaticText.SetRootName(const Value: string);
+begin
+  if inherited Name <> Value then
+  begin
+    if FLabel.Caption = inherited Name then
+      FLabel.Caption := Value;
+    inherited Name := Value;
+    inherited Caption := '';
+  end;
+end;
+
+procedure TVA508StaticText.SetNextLabel(const Value: TVA508ChainedLabel);
+begin
+  if FNextLabel <> Value then
+  begin
+    if assigned(FNextLabel) then
+      DeleteChain(FNextLabel, Value);
+    FNextLabel := Value;
+    if assigned(FNextLabel) then
+    begin
+      FNextLabel.FStaticLabelParent := Self;
+      FNextLabel.FPreviousLabel := Self;
+    end;
+    invalidate;
+  end;
+end;
+
+procedure TVA508StaticText.SetParent(AParent: TWinControl);
+begin
+  inherited SetParent(AParent);
+  if assigned(AParent) then
+  begin
+    if FInitTabStop then
+    begin
+      if csDesigning in ComponentState then
+        TabStop := FALSE
+      else
+        TabStop := ScreenReaderActive;
+      FInitTabStop := FALSE;
+    end;
+    Perform(CM_FONTCHANGED, 0, 0);
+  end;
+end;
+
+procedure TVA508StaticText.SetShowAccelChar(const Value: boolean);
+begin
+  FLabel.ShowAccelChar := Value;
+end;
+
+procedure TVA508StaticText.UpdateSize;
+begin
+  FLabel.Align := alNone;
+  try
+    TFriendLabel(FLabel).AdjustBounds;
+    Height := FLabel.Height + 2;
+    Width := FLabel.Width + 2;
+  finally
+    FLabel.Align := alClient;
+  end;
+end;
+
+{ TVA508ChainedLabel }
+
+procedure TVA508ChainedLabel.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited;
+  if not assigned(FStaticLabelParent) then exit;
+  if csDestroying in ComponentState then exit;
+  if (Operation = opRemove) and (AComponent = FNextLabel) and (not FStaticLabelParent.FDeletingChain) then
+    SetNextLabel(nil);
+end;
+
+procedure TVA508ChainedLabel.Paint;
+var
+  x1, x2, y1, y2: integer;
+
+  procedure Init;
+  begin
+    Canvas.Font := Self.Font;
+    with Canvas do
+    begin
+      Pen.Width := 1;
+      Brush.Color := clNone;
+      Brush.Style := bsClear;
+    end;
+  end;
+
+  procedure DrawText;
+  begin
+    with Canvas do
+    begin
+      Pen.color := Self.Font.Color;
+      Pen.Style := psSolid;
+      TextOut(0, 0, Caption);
+    end;
+  end;
+
+  procedure InitDrawBorder;
+  var
+    r: TRect;
+  begin
+    with Canvas do
+    begin
+      if FStaticLabelParent.Focused then
+      begin
+        Pen.Style := psDot;
+        Pen.Color := Self.Font.Color;
+      end
+      else
+      begin
+        if transparent then
+        begin
+          Pen.Style := psClear;
+          Pen.Color := clNone;
+        end
+        else
+        begin
+          Pen.Style := psSolid;
+          pen.Color := Self.Color;
+        end;
+      end;
+    end;
+    R := ClientRect;
+    R.Bottom := R.Bottom - 1;
+    R.Right := R.Right - 1;
+    x1 := R.Left;
+    y1 := R.Top;
+    x2 := R.Right;
+    y2 := R.Bottom;
+  end;
+
+  procedure DrawPartials(x3, x4, y: integer);
+  var
+    max: integer;
+  begin
+    with Canvas do
+    begin
+      if (x3 > x1) then
+      begin
+        if x3 > x2 then
+          max := x2
+        else
+          max := x3;
+        moveto(x1,y);
+        lineto(max,y);
+      end;
+      if x4 < x2 then
+      begin
+        if x4 < x1 then
+          max := x1
+        else
+          max := x4;
+        moveto(x2,y);
+        lineto(max,y);
+      end;
+    end;
+  end;
+
+  procedure DrawTop;
+  var
+    r, r2: TRect;
+    tx1,tx2: integer;
+  begin
+    With Canvas do
+    begin
+      r2 := BoundsRect;
+      r := FPreviousLabel.BoundsRect;
+      if r.top < r2.top then
+      begin
+        tx1 := r.Left - r2.Left;
+        tx2 := x2 - (r2.Right - r.Right);
+        DrawPartials(tx1,tx2,y1);
+      end
+      else
+      begin
+        MoveTo(x1, y1);
+        LineTo(x2, y1);
+      end;
+    end;
+  end;
+
+  procedure DrawSides;
+  begin
+    With Canvas do
+    begin
+      MoveTo(x1,y1);
+      LineTo(x1,y2);
+      MoveTo(x2,y1);
+      LineTo(x2,y2);
+    end;
+  end;
+
+  procedure DrawBottom;
+  var
+    r, r2: TRect;
+    doBottom: boolean;
+    bx1,bx2: integer;
+  begin
+    With Canvas do
+    begin
+      if assigned(FNextLabel) then
+      begin
+        r := BoundsRect;
+        r2 := FNextLabel.BoundsRect;
+        if r.top < r2.top then
+        begin
+          doBottom := FALSE;
+          bx1 := r2.Left - r.Left;
+          bx2 := x2 - (r.Right - r2.Right);
+          DrawPartials(bx1,bx2,y2);
+        end
+        else
+          doBottom := TRUE;
+      end
+      else
+        doBottom := TRUE;
+      if DoBottom then
+      begin
+        MoveTo(x1, y2);
+        LineTo(x2, y2);
+      end;
+    end;
+  end;
+  
+begin
+  Init;
+  if FStaticLabelParent.Focused then
+    DrawText;
+  InitDrawBorder;
+  DrawTop;
+  DrawSides;
+  DrawBottom;
+  if not FStaticLabelParent.Focused then
+    DrawText;
+end;
+
+procedure TVA508ChainedLabel.SetNextLabel(const Value: TVA508ChainedLabel);
+begin
+  if not assigned(FStaticLabelParent) then exit;
+  if FNextLabel <> Value then
+  begin
+    if assigned(FNextLabel) then
+      FStaticLabelParent.DeleteChain(FNextLabel, Value);
+    FNextLabel := Value;
+    if assigned(FNextLabel) then
+    begin
+      FNextLabel.FStaticLabelParent := FStaticLabelParent;
+      FNextLabel.FPreviousLabel := Self;
+    end;
+    invalidate;
+  end;
+end;
+
+{ TVA508ComplexComponentManager }
+
+type
+  TComplexDataItem = class(TObject)
+  private
+    FList: TList;
+    FComponent: TWinControl;
+    FSubComponent: TWinControl;
+  public
+    constructor Create(Component, SubComponent: TWinControl);
+    destructor Destroy; override;
+  end;
+
+{ TComplexDataItem }
+
+constructor TComplexDataItem.Create(Component, SubComponent: TWinControl);
+begin
+  FComponent := Component;
+  FSubComponent := SubComponent;
+  if assigned(FSubComponent) then
+    FList := nil
+  else
+    FList := TList.Create;
+end;
+
+destructor TComplexDataItem.Destroy;
+begin
+  if assigned(FList) then
+    FList.Free;
+  inherited;
+end;
+
+
+procedure TVA508ComplexComponentManager.AddSubControl(ParentComponent, SubControl: TWinControl;
+                            AccessibilityManager: TVA508AccessibilityManager);
+var
+  list: TList;
+  item : TComplexDataItem;
+begin
+  if (not assigned(ParentComponent)) or (not assigned(SubControl)) then exit;
+  list := GetSubComponentList(ParentComponent);
+  if list.IndexOf(SubControl) < 0 then
+  begin
+    list.Add(SubControl);
+    if IndexOfSubComponentXRef(SubControl) < 0 then
+    begin
+      item := TComplexDataItem.Create(ParentComponent, SubControl);
+      FSubComponentXRef.Add(item);
+      SubControl.FreeNotification(FSubComponentNotifier);
+    end;
+    if assigned(AccessibilityManager) and assigned(GlobalRegistry) then
+      GlobalRegistry.RegisterComponent(SubControl, AccessibilityManager);
+  end;
+end;
+
+procedure TVA508ComplexComponentManager.RemoveSubControl(ParentComponent, SubControl: TWinControl);
+var
+  list: TList;
+  idx: integer;
+begin
+  if (not assigned(ParentComponent)) or (not assigned(SubControl)) then exit;
+  list := GetSubComponentList(ParentComponent);
+  idx := list.IndexOf(SubControl);
+  if idx >= 0 then
+  begin
+    List.Delete(idx);
+    idx := IndexOfSubComponentXRef(SubControl);
+    if idx >= 0 then
+    begin
+      FSubComponentXRef.Delete(idx);
+      SubControl.RemoveFreeNotification(FSubComponentNotifier);
+    end;
+    if assigned(GlobalRegistry) then
+      GlobalRegistry.UnregisterComponent(SubControl);
+  end;
+end;
+
+procedure TVA508ComplexComponentManager.ClearSubControls(Component: TWinControl);
+var
+  list: TList;
+  idx, i: integer;
+  SubControl: TWinControl;
+
+begin
+  if (not assigned(Component)) then exit;
+  list := GetSubComponentList(Component);
+  for i := 0 to list.Count - 1 do
+  begin
+    SubControl := TWinControl(list[i]);
+    idx := IndexOfSubComponentXRef(SubControl);
+    if idx >= 0 then
+    begin
+      FSubComponentXRef.Delete(idx);
+      SubControl.RemoveFreeNotification(FSubComponentNotifier);
+    end;
+    if assigned(GlobalRegistry) then
+      GlobalRegistry.UnregisterComponent(SubControl);
+  end;
+  list.Clear;
+end;
+
+constructor TVA508ComplexComponentManager.Create(
+  AComponentClass: TWinControlClass);
+begin
+  FComponentClass := AComponentClass;
+  FComponentNotifier := TVANotificationEventComponent.NotifyCreate(nil, ComponentNotifyEvent);
+  FSubComponentNotifier := TVANotificationEventComponent.NotifyCreate(nil, SubComponentNotifyEvent);
+  FComponentList := TObjectList.Create;
+  FSubComponentXRef := TObjectList.Create;
+end;
+
+destructor TVA508ComplexComponentManager.Destroy;
+begin
+  FSubComponentXRef.Free;
+  FComponentList.Free;
+  FComponentNotifier.Free;
+  FSubComponentNotifier.Free;
+  inherited;
+end;
+
+function TVA508ComplexComponentManager.GetSubComponentList(Component: TWinControl): TList;
+var
+  i: integer;
+  item: TComplexDataItem;
+begin
+  i := IndexOfComponentItem(Component);
+  if i < 0 then
+  begin
+    item := TComplexDataItem.Create(Component, nil);
+    i := FComponentList.Add(item);
+    Component.FreeNotification(FComponentNotifier);
+  end;
+  Result := TComplexDataItem(FComponentList[i]).FList;
+end;
+
+function TVA508ComplexComponentManager.GetSubControl(Component: TWinControl;
+  Index: integer): TWinControl;
+begin
+  if assigned(Component) then
+    Result := TWinControl(GetSubComponentList(Component)[Index])
+  else
+    Result := nil;
+end;
+
+function TVA508ComplexComponentManager.IndexOfComponentItem(
+  Component: TWinControl): integer;
+var
+  i:integer;
+  item: TComplexDataItem;
+begin
+  for i := 0 to FComponentList.Count -1 do
+  begin
+    item := TComplexDataItem(FComponentList[i]);
+    if item.FComponent = Component then
+    begin
+      Result := i;
+      exit;
+    end;
+  end;
+  Result := -1;
+end;
+
+function TVA508ComplexComponentManager.IndexOfSubComponentXRef(
+  Component: TWinControl): integer;
+var
+  i:integer;
+  item: TComplexDataItem;
+begin
+  for i := 0 to FSubComponentXRef.Count -1 do
+  begin
+    item := TComplexDataItem(FSubComponentXRef[i]);
+    if item.FSubComponent = Component then
+    begin
+      Result := i;
+      exit;
+    end;
+  end;
+  Result := -1;
+end;
+
+procedure TVA508ComplexComponentManager.ComponentNotifyEvent(AComponent: TComponent;
+  Operation: TOperation);
+var
+  idx: integer;
+begin
+  if (Operation = opRemove) and assigned(AComponent) and (AComponent is TWinControl) then
+  begin
+    ClearSubControls(TWinControl(AComponent));
+    idx := IndexOfComponentItem(TWinControl(AComponent));
+    if idx >= 0 then
+      FComponentList.Delete(idx);
+  end;
+end;
+
+procedure TVA508ComplexComponentManager.SubComponentNotifyEvent(
+  AComponent: TComponent; Operation: TOperation);
+var
+  idx: integer;
+  Parent: TWinControl;
+  item: TComplexDataItem;
+begin
+  if (Operation = opRemove) and assigned(AComponent) and (AComponent is TWinControl) then
+  begin
+    idx := IndexOfSubComponentXRef(TWinControl(AComponent));
+    if idx >= 0 then
+    begin
+      item := TComplexDataItem(FSubComponentXRef[idx]);
+      Parent := item.FComponent;
+      RemoveSubControl(Parent, TWinControl(AComponent));
+    end;
+  end;
+end;
+
+function TVA508ComplexComponentManager.SubControlCount(Component: TWinControl): integer;
+begin
+  if assigned(Component) then
+    Result := GetSubComponentList(Component).Count
+  else
+    Result := 0;
+end;
+
+initialization
+
+finalization
+  FreeGlobalVars;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityPE.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityPE.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityPE.pas	(revision 1676)
@@ -0,0 +1,776 @@
+unit VA508AccessibilityPE;
+
+interface
+
+uses
+  Windows, SysUtils, DesignIntf, DesignEditors, DesignConst, TypInfo, Controls, StdCtrls,
+  Classes, Forms, VA508AccessibilityManager, Dialogs, ColnEdit, RTLConsts;
+
+type
+  TVA508AccessibilityManager4PE = class(TVA508AccessibilityManager);
+
+  TVA508AccessibilityPropertyMapper = class(TStringProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetProperties(Proc: TGetPropProc); override;
+  end;
+
+  TVA508NestedPropertyType = (ptText, ptLabel, ptProperty, ptDefault); //, ptEvent);
+
+  TVA508NestedPropertyEditor = class(TNestedProperty)
+  strict private
+    FName: String;
+    FType: TVA508NestedPropertyType;
+    FManager: TVA508AccessibilityManager4PE;
+  protected
+    property Manager: TVA508AccessibilityManager4PE read FManager;
+  public
+    constructor Create(AParent: TVA508AccessibilityPropertyMapper;
+      AName: String; PType: TVA508NestedPropertyType);
+    function AllEqual: Boolean; override;
+    procedure Edit; override;
+    function GetEditLimit: Integer; override;
+    function GetAttributes: TPropertyAttributes; override;
+    function GetName: string; override;
+    function GetValue: string; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  {
+  TVA508AccessibilityEventPropertyEditor = class(TVA508NestedPropertyEditor, IMethodProperty)
+  protected
+    function GetMethodValue(Index: Integer): TMethod;
+  public
+    function AllNamed: Boolean; virtual;
+    procedure Edit; override;
+    function GetValue: string; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    procedure SetValue(const AValue: string); override;
+    function GetFormMethodName: string; virtual;
+    function GetTrimmedEventName: string;
+  end;
+   }
+   
+  TVA508CollectionPropertyEditor = class(TCollectionProperty)
+  public
+    function GetColOptions: TColOptions; override;
+  end;
+
+  TVA508AccessibilityLabelPropertyEditor = class(TComponentProperty)
+  private
+    FManager: TVA508AccessibilityManager4PE;
+    function GetManager: TVA508AccessibilityManager4PE;
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    procedure GetProperties(Proc: TGetPropProc); override;
+    function GetValue: string; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TVA508AccessibilityPropertyPropertyEditor = class(TStringProperty)
+  private
+    FManager: TVA508AccessibilityManager4PE;
+    function GetManager: TVA508AccessibilityManager4PE;
+    function GetRootComponent(index: integer): TWinControl;
+  public
+    function AllEqual: Boolean; override;
+    function GetAttributes: TPropertyAttributes; override;
+    function GetEditLimit: Integer; override;
+    function GetValue: string; override;
+    procedure GetValues(Proc: TGetStrProc); override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TVA508AccessibilityComponentPropertyEditor = class(TComponentProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+  end;
+
+const
+  WinControlPropertyToMap = 'Hint'; 
+
+procedure Register;
+
+implementation
+
+function GetAccessibilityManager(Editor: TPropertyEditor; Index: integer): TVA508AccessibilityManager4PE;
+var
+  Control, Root: TComponent;
+  i: integer;
+
+begin
+  Result := nil;
+  if assigned(Editor.GetComponent(Index)) and (Editor.GetComponent(Index) is TComponent) then
+  begin
+    Control := TComponent(Editor.GetComponent(Index));
+    Root := Control;
+    while (assigned(Root) and (not (Root is TCustomForm))) do
+      Root := Root.Owner;
+    if assigned(Root) and (Root is TCustomForm) then
+    begin
+      for i := 0 to Root.ComponentCount-1 do
+      begin
+        if Root.Components[i] is TVA508AccessibilityManager then
+        begin
+          Result := TVA508AccessibilityManager4PE(Root.Components[i]);
+          exit;
+        end;
+      end;
+    end;
+  end;
+end;
+
+function AllComponentsHaveSameManager(Editor: TPropertyEditor): boolean;
+var
+  i: integer;
+  manager: TVA508AccessibilityManager4PE;
+begin
+  manager := GetAccessibilityManager(Editor, 0);
+  Result := assigned(manager);
+  if (not result) or (Editor.PropCount < 2) then exit;
+  for i := 1 to Editor.PropCount-1 do
+  begin
+    if (GetAccessibilityManager(Editor, i) <> manager) then
+    begin
+      Result := FALSE;
+      exit;
+    end;
+  end;
+end;
+
+procedure GetStringPropertyNames(Manager: TVA508AccessibilityManager4PE;
+  Component: TWinControl; List: TStringList; Add: boolean);
+var
+  i: Integer;
+  current: TStringList;
+
+begin
+  current := TStringList.Create;
+  try
+    Manager.GetProperties(Component, current);
+    if Add then
+      list.Assign(current)
+    else
+    begin
+      for I := List.Count - 1 downto 0 do
+      begin
+        if current.IndexOf(list[i]) < 0 then
+          List.Delete(i);
+      end;
+    end;
+  finally
+    current.Free;
+  end;
+end;
+
+function QVal(txt: string): string;
+begin
+  Result := '="' + txt + '"';
+end;
+
+function StripQVal(text: string): string;
+var
+  i: integer;
+begin
+  i := pos('=', text);
+  if (i > 0) then
+    Result := copy(text,1,i-1)
+  else
+    Result := text;
+end;
+
+{ TVA508AccessibilityPropertyMapper }
+
+const
+  DelphiPaletteName = 'VA 508';
+
+
+function TVA508AccessibilityPropertyMapper.GetAttributes: TPropertyAttributes;
+begin
+  if AllComponentsHaveSameManager(Self) then
+    Result := [paMultiSelect, paRevertable, paSubProperties]
+  else
+    Result := inherited GetAttributes;
+end;
+
+procedure TVA508AccessibilityPropertyMapper.GetProperties(
+  Proc: TGetPropProc);
+begin
+  if not AllComponentsHaveSameManager(Self) then exit;
+  Proc(TVA508NestedPropertyEditor.Create(Self, AccessibilityLabelPropertyName, ptLabel));
+  Proc(TVA508NestedPropertyEditor.Create(Self, AccessibilityPropertyPropertyName, ptProperty));
+  Proc(TVA508NestedPropertyEditor.Create(Self, AccessibilityTextPropertyName, ptText));
+  Proc(TVA508NestedPropertyEditor.Create(Self, AccessibilityUseDefaultPropertyName, ptDefault));
+//  Proc(TVA508AccessibilityEventPropertyEditor.Create(Self, AccessibilityEventPropertyName, ptEvent));
+end;
+
+{ TVA508NestedStringProperty }
+
+function TVA508NestedPropertyEditor.AllEqual: Boolean;
+var
+  i: Integer;
+  txt, prop: string;
+  lbl: TLabel;
+//  V, T: TMethod;
+  default: boolean;
+
+begin
+  if PropCount > 1 then
+  begin
+    Result := False;
+    if not (GetComponent(0) is TWinControl) then exit;
+    case FType of
+      ptText:
+        begin
+          txt := FManager.AccessText[TWinControl(GetComponent(0))];
+          for i := 1 to PropCount - 1 do
+            if txt <> FManager.AccessText[TWinControl(GetComponent(i))] then exit;
+        end;
+
+      ptLabel:
+        begin
+          lbl := FManager.AccessLabel[TWinControl(GetComponent(0))];
+          for i := 1 to PropCount - 1 do
+            if lbl <> FManager.AccessLabel[TWinControl(GetComponent(i))] then exit;
+        end;
+
+      ptProperty:
+      begin
+        prop := FManager.AccessProperty[TWinControl(GetComponent(0))];
+        for i := 1 to PropCount - 1 do
+          if prop <> FManager.AccessProperty[TWinControl(GetComponent(i))] then exit;
+      end;
+
+      ptDefault:
+      begin
+        default := FManager.UseDefault[TWinControl(GetComponent(0))];
+        for i := 1 to PropCount - 1 do
+          if default <> FManager.UseDefault[TWinControl(GetComponent(i))] then exit;
+      end;
+
+
+{      ptEvent:
+      begin
+        V := TMethod(FManager.OnComponentAccessRequest[TWinControl(GetComponent(0))]);
+        for i := 1 to PropCount - 1 do
+        begin
+          T := TMethod(FManager.OnComponentAccessRequest[TWinControl(GetComponent(i))]);
+          if (T.Code <> V.Code) or (T.Data <> V.Data) then Exit;
+        end;
+      end;}
+    end;
+  end;
+  Result := True;
+end;
+
+constructor TVA508NestedPropertyEditor.Create(AParent: TVA508AccessibilityPropertyMapper;
+             AName: String; PType: TVA508NestedPropertyType);
+begin
+  inherited Create(AParent);
+  FManager := GetAccessibilityManager(AParent, 0);
+  FName := AName;
+  FType := PType;
+end;
+
+procedure TVA508NestedPropertyEditor.Edit;
+var
+  lbl: TLabel;
+
+begin
+  if (FType = ptLabel) and
+    (Designer.GetShiftState * [ssCtrl, ssLeft] = [ssCtrl, ssLeft]) then
+  begin
+    lbl := FManager.AccessLabel[TWinControl(GetComponent(0))];
+    if assigned(lbl) then
+      Designer.SelectComponent(lbl)
+    else
+      inherited Edit;
+  end
+  else
+    inherited Edit;
+end;
+
+function TVA508NestedPropertyEditor.GetAttributes: TPropertyAttributes;
+begin
+  case FType of
+    ptText:
+      Result := [paMultiSelect, paRevertable, paAutoUpdate];
+    ptLabel, ptProperty:
+      Result := [paMultiSelect, paRevertable, paValueList, paSortList, paAutoUpdate];
+    ptDefault:
+      Result := [paMultiSelect, paValueList, paSortList, paRevertable];
+
+//    ptEvent:
+//      Result := [paMultiSelect, paValueList, paSortList, paRevertable];
+    else
+      Result := [];
+  end;
+
+end;
+
+function TVA508NestedPropertyEditor.GetEditLimit: Integer;
+begin
+  case FType of
+    ptText: Result := 32767;
+    ptDefault : Result := 63;
+//    ptEvent: Result := MaxIdentLength;
+    else // ptLabel, ptProperty:
+      Result := 127;
+  end;
+end;
+
+function TVA508NestedPropertyEditor.GetName: string;
+begin
+  Result := FName;
+end;
+
+function TVA508NestedPropertyEditor.GetValue: string;
+var
+  lbl: TLabel;
+  Default: boolean;
+begin
+  Result := '';
+  if not (GetComponent(0) is TWinControl) then exit;
+  case FType of
+    ptLabel:
+      begin
+        lbl := FManager.AccessLabel[TWinControl(GetComponent(0))];
+        if assigned(lbl) then
+          Result := FManager.GetComponentName(lbl) + QVal(lbl.Caption);
+      end;
+    ptText:
+      Result := FManager.AccessText[TWinControl(GetComponent(0))];
+    ptProperty:
+      begin
+        Result := FManager.AccessProperty[TWinControl(GetComponent(0))];
+        if Result <> '' then
+          Result := Result + QVal(GetPropValue(GetComponent(0), Result));
+      end;
+    ptDefault:
+      begin
+        Default := FManager.UseDefault[TWinControl(GetComponent(0))];
+        Result := GetEnumName(TypeInfo(Boolean), Ord(Default));
+      end;
+  end;
+end;
+
+procedure TVA508NestedPropertyEditor.GetValues(Proc: TGetStrProc);
+var
+  list: TStringList;
+  i: integer;
+  name: string;
+
+begin
+  list := TStringList.Create;
+  try
+    case FType of
+      ptLabel:
+        begin
+          FManager.GetLabelStrings(list);
+          for i := 0 to list.count-1 do
+            Proc(list[i]);
+        end;
+
+      ptProperty:
+      begin
+        GetStringPropertyNames(FManager, TWinControl(GetComponent(0)), list, TRUE);
+        if PropCount > 1 then
+        begin
+          for i := 1 to PropCount-1 do
+          begin
+            if GetComponent(i) is TWinControl then
+              GetStringPropertyNames(FManager, TWinControl(GetComponent(i)), list, FALSE);
+          end;
+        end;
+        list.Sort;
+        for i := 0 to list.count-1 do
+        begin
+          name := list[i];
+          if PropCount = 1 then
+            name := name + QVal(GetPropValue(GetComponent(0), name));
+          Proc(name);
+        end;
+      end;
+
+      ptDefault:
+      begin
+        Proc(GetEnumName(TypeInfo(Boolean), Ord(False)));
+        Proc(GetEnumName(TypeInfo(Boolean), Ord(True)));
+      end;
+
+    end;
+  finally
+    list.free;
+  end;
+end;
+
+procedure TVA508NestedPropertyEditor.SetValue(const Value: string);
+var
+  i, BVal: Integer;
+  lbl: TLabel;
+  cmp: TComponent;
+  Name: String;
+
+begin
+  BVal := Ord(FALSE);
+  lbl := nil;
+  case FType of
+
+    ptLabel:
+      begin
+        Name := StripQVal(Value);
+        cmp := Designer.GetComponent(Name);
+        if (cmp is TLabel) then
+          lbl := TLabel(cmp);
+      end;
+
+    ptProperty: Name := StripQVal(Value);
+
+    ptDefault:
+      begin
+        BVal := GetEnumValue(TypeInfo(Boolean), Value);
+        with GetTypeData(TypeInfo(Boolean))^ do
+          if (BVal < MinValue) or (BVal > MaxValue) then
+            raise EPropertyError.CreateRes(@SInvalidPropertyValue);
+      end;
+
+  end;
+  for i := 0 to PropCount - 1 do
+  begin
+    if GetComponent(i) is TWinControl then
+    begin
+      case FType of
+        ptText:     FManager.AccessText[TWinControl(GetComponent(i))] := Value;
+        ptLabel:    FManager.AccessLabel[TWinControl(GetComponent(i))] := lbl;
+        ptProperty: FManager.AccessProperty[TWinControl(GetComponent(i))] := Name;
+        ptDefault:  FManager.UseDefault[TWinControl(GetComponent(i))] := Boolean(BVal);
+      end;
+    end;
+  end;
+  Modified;
+end;
+
+(*
+{ TVA508AccessibilityEventPropertyEditor }
+
+function TVA508AccessibilityEventPropertyEditor.AllNamed: Boolean;
+var
+  I: Integer;
+begin
+  Result := True;
+  for I := 0 to PropCount - 1 do
+    if GetComponent(I).GetNamePath = '' then
+    begin
+      Result := False;
+      Break;
+    end;
+end;
+
+procedure TVA508AccessibilityEventPropertyEditor.Edit;
+var
+  FormMethodName: string;
+  CurDesigner: IDesigner;
+begin
+  CurDesigner := Designer; { Local property so if designer is nil'ed out, no AV will happen }
+  if not AllNamed then
+    raise EPropertyError.CreateRes(@SCannotCreateName);
+  FormMethodName := GetValue;
+  if (FormMethodName = '') or
+    CurDesigner.MethodFromAncestor(GetMethodValue(0)) then
+  begin
+    if FormMethodName = '' then
+      FormMethodName := GetFormMethodName;
+    if FormMethodName = '' then
+      raise EPropertyError.CreateRes(@SCannotCreateName);
+    SetValue(FormMethodName);
+  end;
+  CurDesigner.ShowMethod(FormMethodName);
+end;
+
+function TVA508AccessibilityEventPropertyEditor.GetFormMethodName: string;
+var
+  I: Integer;
+begin
+  if GetComponent(0) = Designer.GetRoot then
+  begin
+    Result := Designer.GetRootClassName;
+    if (Result <> '') and (Result[1] = 'T') then
+      Delete(Result, 1, 1);
+  end
+  else
+  begin
+    Result := Designer.GetObjectName(GetComponent(0));
+    for I := Length(Result) downto 1 do
+      if Result[I] in ['.', '[', ']', '-', '>'] then
+        Delete(Result, I, 1);
+  end;
+  if Result = '' then
+    raise EPropertyError.CreateRes(@SCannotCreateName);
+  Result := Result + GetTrimmedEventName;
+end;
+
+function TVA508AccessibilityEventPropertyEditor.GetMethodValue(Index: Integer): TMethod;
+begin
+  if not (GetComponent(Index) is TWinControl) then
+  begin
+    Result.Code := nil;
+    Result.Data := nil;
+  end
+  else
+    Result := TMethod(Manager.OnComponentAccessRequest[TWinControl(GetComponent(Index))]);
+end;
+
+{ TVA508AccessibilityEventPropertyEditor }
+
+function TVA508AccessibilityEventPropertyEditor.GetTrimmedEventName: string;
+begin
+  Result := GetName;
+  if (Length(Result) >= 2) and
+    (Result[1] in ['O', 'o']) and (Result[2] in ['N', 'n']) then
+    Delete(Result,1,2);
+end;
+
+function TVA508AccessibilityEventPropertyEditor.GetValue: string;
+begin
+  Result := Designer.GetMethodName(GetMethodValue(0));
+end;
+
+procedure TVA508AccessibilityEventPropertyEditor.GetValues(Proc: TGetStrProc);
+begin
+  Designer.GetMethods(GetTypeData(TypeInfo(TVA508ComponentScreenReaderEvent)), Proc);
+end;
+
+procedure TVA508AccessibilityEventPropertyEditor.SetValue(const AValue: string);
+
+var
+  CurDesigner: IDesigner;
+
+  procedure CheckChainCall(const MethodName: string; Method: TMethod);
+  var
+    Persistent: TPersistent;
+    Component: TComponent;
+    InstanceMethod: string;
+    Instance: TComponent;
+  begin
+    Persistent := GetComponent(0);
+    if Persistent is TComponent then
+    begin
+      Component := TComponent(Persistent);
+      if (Component.Name <> '') and (Method.Data <> CurDesigner.GetRoot) and
+        (TObject(Method.Data) is TComponent) then
+      begin
+        Instance := TComponent(Method.Data);
+        InstanceMethod := Instance.MethodName(Method.Code);
+        if InstanceMethod <> '' then
+          CurDesigner.ChainCall(MethodName, Instance.Name, InstanceMethod,
+            GetTypeData(TypeInfo(TVA508ComponentScreenReaderEvent)));
+      end;
+    end;
+  end;
+
+var
+  NewMethod: Boolean;
+  CurValue: string;
+  OldMethod: TMethod;
+  i: integer;
+  event: TVA508ComponentScreenReaderEvent;
+begin
+  CurDesigner := Designer;
+  if not AllNamed then
+    raise EPropertyError.CreateRes(@SCannotCreateName);
+  CurValue:= GetValue;
+  if (CurValue <> '') and (AValue <> '') and (SameText(CurValue, AValue) or
+    not CurDesigner.MethodExists(AValue)) and
+    not CurDesigner.MethodFromAncestor(GetMethodValue(0)) then
+    CurDesigner.RenameMethod(CurValue, AValue)
+  else
+  begin
+    NewMethod := (AValue <> '') and not CurDesigner.MethodExists(AValue);
+    OldMethod := GetMethodValue(0);
+    event := TVA508ComponentScreenReaderEvent(CurDesigner.CreateMethod(AValue, GetTypeData(TypeInfo(TVA508ComponentScreenReaderEvent))));
+    for i := 0 to PropCount - 1 do
+    begin
+      if (GetComponent(i) is TWinControl) then
+        Manager.OnComponentAccessRequest[TWinControl(GetComponent(i))] := event;
+    end;
+    if NewMethod then
+    begin
+      { Designer may have been nil'ed out this point when the code editor
+        recieved focus. This fixes an AV by using a local variable which
+        keeps a reference to the designer }
+      if (PropCount = 1) and (OldMethod.Data <> nil) and (OldMethod.Code <> nil) then
+        CheckChainCall(AValue, OldMethod);
+      CurDesigner.ShowMethod(AValue);
+    end;
+  end;
+  Modified;
+end;
+
+*)
+
+{ TVA508CollectionProperty }
+
+function TVA508CollectionPropertyEditor.GetColOptions: TColOptions;
+begin
+  Result := [coMove];
+end;
+
+
+{ TVA508AccessibilityLabelPropertyEditor }
+
+function TVA508AccessibilityLabelPropertyEditor.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paMultiSelect, paRevertable, paValueList, paSortList, paAutoUpdate];
+end;
+
+function TVA508AccessibilityLabelPropertyEditor.GetManager: TVA508AccessibilityManager4PE;
+begin
+  if not assigned(FManager) then
+    FManager := TVA508AccessibilityManager4PE(TVA508AccessibilityItem(GetComponent(0)).Manager);
+  Result := FManager;
+end;
+
+procedure TVA508AccessibilityLabelPropertyEditor.GetProperties(
+  Proc: TGetPropProc);
+begin
+  exit;
+end;
+
+function TVA508AccessibilityLabelPropertyEditor.GetValue: string;
+var
+  lbl: TLabel;
+begin
+  lbl := TVA508AccessibilityItem(GetComponent(0)).AccessLabel;
+  if assigned(lbl) then
+    Result := GetManager.GetComponentName(lbl) + QVal(lbl.Caption);
+end;
+
+procedure TVA508AccessibilityLabelPropertyEditor.GetValues(Proc: TGetStrProc);
+var
+  i: integer;
+  list: TStringList;
+begin
+  list := TStringList.Create;
+  try
+    GetManager.GetLabelStrings(list);
+    for i := 0 to list.count-1 do
+      Proc(list[i]);
+  finally
+    list.Free;
+  end;
+end;
+
+procedure TVA508AccessibilityLabelPropertyEditor.SetValue(const Value: string);
+begin
+  inherited SetValue(StripQVal(Value));
+end;
+
+{ TVA508AccessibilityPropertyPropertyEditor }
+
+function TVA508AccessibilityPropertyPropertyEditor.AllEqual: Boolean;
+var
+  i: integer;
+  prop: string;
+begin
+  if PropCount > 1 then
+  begin
+    Result := FALSE;
+    prop := GetManager.AccessProperty[TWinControl(GetComponent(0))];
+    for i := 1 to PropCount - 1 do
+      if prop <> FManager.AccessProperty[TWinControl(GetComponent(i))] then exit;
+  end;
+  Result := TRUE;
+end;
+
+function TVA508AccessibilityPropertyPropertyEditor.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paMultiSelect, paRevertable, paValueList, paSortList, paAutoUpdate];
+end;
+
+function TVA508AccessibilityPropertyPropertyEditor.GetEditLimit: Integer;
+begin
+  Result := 127;
+end;
+
+function TVA508AccessibilityPropertyPropertyEditor.GetManager: TVA508AccessibilityManager4PE;
+begin
+  if not assigned(FManager) then
+    FManager := TVA508AccessibilityManager4PE(TVA508AccessibilityItem(GetComponent(0)).Manager);
+  Result := FManager;
+end;
+
+function TVA508AccessibilityPropertyPropertyEditor.GetRootComponent(
+  index: integer): TWinControl;
+begin
+  Result := TVA508AccessibilityItem(GetComponent(index)).Component;
+end;
+
+function TVA508AccessibilityPropertyPropertyEditor.GetValue: string;
+begin
+  Result := inherited GetValue;
+  if Result <> '' then
+    Result := Result + QVal(GetPropValue(GetRootComponent(0), Result));
+end;
+
+procedure TVA508AccessibilityPropertyPropertyEditor.GetValues(
+  Proc: TGetStrProc);
+var
+  list: TStringList;
+  i: integer;
+  name: string;
+
+begin
+  list := TStringList.Create;
+  try
+    GetStringPropertyNames(GetManager, GetRootComponent(0), list, TRUE);
+    if PropCount > 1 then
+    begin
+      for i := 1 to PropCount-1 do
+        GetStringPropertyNames(FManager, GetRootComponent(i), list, FALSE);
+    end;
+    list.Sort;
+    for i := 0 to list.count-1 do
+    begin
+      name := list[i];
+      if PropCount = 1 then
+        name := name + QVal(GetPropValue(GetRootComponent(0), name));
+      Proc(name);
+    end;
+  finally
+    list.free;
+  end;
+end;
+
+procedure TVA508AccessibilityPropertyPropertyEditor.SetValue(
+  const Value: string);
+begin
+  inherited SetValue(StripQVal(Value));
+end;
+
+{ TVA508AccessibilityClassPropertyEditor }
+
+function TVA508AccessibilityComponentPropertyEditor.GetAttributes: TPropertyAttributes;
+begin
+  Result := [paDisplayReadOnly];
+end;
+
+procedure Register;
+begin
+  RegisterComponents(DelphiPaletteName, [TVA508AccessibilityManager, TVA508ComponentAccessibility,
+                                         TVA508StaticText]);
+  RegisterPropertyEditor(TypeInfo(TVA508AccessibilityCollection),
+      TVA508AccessibilityManager, VA508DataPropertyName, TVA508CollectionPropertyEditor);
+  RegisterPropertyEditor(TypeInfo(String), TWinControl, WinControlPropertyToMap,
+    TVA508AccessibilityPropertyMapper);
+  RegisterPropertyEditor(TypeInfo(TLabel), TVA508AccessibilityItem, AccessibilityLabelPropertyName,
+    TVA508AccessibilityLabelPropertyEditor);
+  RegisterPropertyEditor(TypeInfo(String), TVA508AccessibilityItem, AccessibilityPropertyPropertyName, 
+    TVA508AccessibilityPropertyPropertyEditor);
+  RegisterPropertyEditor(TypeInfo(TComponent), TVA508AccessibilityItem, AccessDataComponentText,
+    TVA508AccessibilityComponentPropertyEditor);
+end;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityRouter.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityRouter.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508AccessibilityRouter.pas	(revision 1676)
@@ -0,0 +1,598 @@
+unit VA508AccessibilityRouter;
+
+interface
+
+uses
+  SysUtils, Windows, Registry, StrUtils, Classes, Controls, Dialogs,
+  Contnrs, DateUtils, Forms, ExtCtrls;
+
+type
+  TComponentDataNeededEvent = procedure(const WindowHandle: HWND; var DataStatus: LongInt;
+    var Caption: PChar; var Value: PChar; var Data: PChar; var ControlType: PChar;
+    var State: PChar; var Instructions: PChar; var ItemInstructions: PChar) of object;
+
+  TKeyMapProcedure = procedure;
+
+  TVA508ScreenReader = class(TObject)
+  protected
+    procedure RegisterCustomClassBehavior(Before, After: string); virtual; abstract;
+    procedure RegisterClassAsMSAA(ClassName: string); virtual; abstract;
+    procedure AddComponentDataNeededEventHandler(event: TComponentDataNeededEvent); virtual; abstract;
+    procedure RemoveComponentDataNeededEventHandler(event: TComponentDataNeededEvent); virtual; abstract;
+  public
+    procedure Speak(Text: string); virtual; abstract;
+    procedure RegisterDictionaryChange(Before, After: string); virtual; abstract;
+    procedure RegisterCustomKeyMapping(Key: string; proc: TKeyMapProcedure;
+                              shortDescription, longDescription: string); virtual; abstract;
+  end;
+
+function GetScreenReader: TVA508ScreenReader;
+
+{ TODO -oJeremy Merrill -c508 : 
+if ScreenReaderSystemActive is false, but there are valid DLLs, add a recheck every 30 seconds
+to see if the screen reader is running.  in the timer event, see if DLL.IsRunning is running is true.
+if it is then pop up a message to the user (only once) and inform them that if they restart the app
+with the screen reader running it will work better.  After the popup disable the timer event. }
+function ScreenReaderSystemActive: boolean;
+
+// Only guaranteed to be valid if called in an initialization section
+// all other components stored as .dfm files will be registered as a dialog
+// using the RegisterCustomClassBehavior
+procedure SpecifyFormIsNotADialog(FormClass: TClass);
+
+// do not call this routine - called by screen reader DLL
+procedure ComponentDataRequested(WindowHandle: HWND; DataRequest: LongInt); stdcall;
+
+implementation
+
+uses VAUtils, VA508ScreenReaderDLLLinker, VAClasses, VA508AccessibilityConst;
+
+type
+  TNullScreenReader = class(TVA508ScreenReader)
+  public
+    procedure Speak(Text: string); override;
+    procedure RegisterDictionaryChange(Before, After: string); override;
+    procedure RegisterCustomClassBehavior(Before, After: string); override;
+    procedure RegisterClassAsMSAA(ClassName: string); override;
+    procedure RegisterCustomKeyMapping(Key: string; proc: TKeyMapProcedure;
+                              shortDescription, longDescription: string); override;
+    procedure AddComponentDataNeededEventHandler(event: TComponentDataNeededEvent); override;
+    procedure RemoveComponentDataNeededEventHandler(event: TComponentDataNeededEvent); override; 
+  end;
+
+  TMasterScreenReader = class(TVA508ScreenReader)
+  strict private
+    FEventHandlers: TVAMethodList;
+    FCustomBehaviors: TStringList;
+    FInternalRegistration: boolean;
+    FDataHasBeenRegistered: boolean;
+    FTrying2Register: boolean;
+    FKeyProc: TList;
+  private
+    function EncodeBehavior(Before, After: string; Action: integer): string;
+    procedure DecodeBehavior(code: string; var Before, After: string;
+      var Action: integer);
+    function RegistrationAllowed: boolean;
+    procedure RegisterCustomData;
+  protected
+    procedure RegisterCustomBehavior(Str1, Str2: String; Action: integer; CheckIR: boolean = FALSE);
+    procedure ProcessCustomKeyCommand(DataRequest: integer);
+    property EventHandlers: TVAMethodList read FEventHandlers;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure HandleSRException(E: Exception);
+    procedure Speak(Text: string); override;
+    procedure RegisterDictionaryChange(Before, After: string); override;
+    procedure RegisterCustomClassBehavior(Before, After: string); override;
+    procedure RegisterClassAsMSAA(ClassName: string); override;
+    procedure RegisterCustomKeyMapping(Key: string; proc: TKeyMapProcedure;
+                              shortDescription, longDescription: string); override;
+    procedure AddComponentDataNeededEventHandler(event: TComponentDataNeededEvent); override;
+    procedure RemoveComponentDataNeededEventHandler(event: TComponentDataNeededEvent); override;
+  end;
+
+var
+  ActiveScreenReader: TVA508ScreenReader = nil;
+  MasterScreenReader: TMasterScreenReader = nil;
+  uNonDialogClassNames: TStringList = nil;
+  SaveInitProc: Pointer = nil;
+  Need2RegisterData: boolean = FALSE;
+  OK2RegisterData: boolean = FALSE;
+  CheckScreenReaderSystemActive: boolean = TRUE;
+  uScreenReaderSystemActive: boolean = FALSE;
+  uPostScreenReaderActivationTimer: TTimer = nil;
+
+const
+// number of seconds between checks for a screen reader
+  POST_SCREEN_READER_ACTIVATION_CHECK_SECONDS = 30;
+
+  POST_SCREEN_READER_INFO_MESSAGE = ERROR_INTRO +
+    'The Accessibility Framework can only communicate with the screen' + CRLF +
+    'reader if the screen reader is running before you start this application.'+ CRLF +
+    'Please restart %s to take advantage of the enhanced'+ CRLF +
+    'accessibility features offered by the Accessibility Framework.';
+
+procedure VA508RouterInitProc;
+begin
+  if assigned(SaveInitProc) then
+    TProcedure(SaveInitProc);
+  OK2RegisterData := TRUE;
+  if Need2RegisterData then
+  begin
+    Need2RegisterData := FALSE;
+    if ScreenReaderSystemActive then
+    begin
+      TMasterScreenReader(GetScreenreader).RegisterCustomData;
+    end;
+  end;
+end;
+
+function GetScreenReader: TVA508ScreenReader;
+begin
+  if not assigned(ActiveScreenReader) then
+  begin
+    if ScreenReaderSystemActive then
+    begin
+      MasterScreenReader := TMasterScreenReader.Create;
+      ActiveScreenReader := MasterScreenReader;
+    end
+    else
+      ActiveScreenReader := TNullScreenReader.Create;
+  end;
+  Result := ActiveScreenReader;
+end;
+
+procedure PostScreenReaderCheckEvent(Self: TObject; Sender: TObject);
+var
+  AppName, ext, error: string;
+begin
+  if ScreenReaderActive then
+  begin
+    FreeAndNil(uPostScreenReaderActivationTimer);
+    if IsScreenReaderSupported(TRUE) then
+    begin
+      AppName := ExtractFileName(ParamStr(0));
+      ext := ExtractFileExt(AppName);
+      AppName := LeftStr(AppName, length(AppName) - Length(ext));
+      error := Format(POST_SCREEN_READER_INFO_MESSAGE, [AppName]);
+      MessageBox(0, PChar(error), 'Accessibility Component Information',
+        MB_OK or MB_ICONINFORMATION or MB_TASKMODAL or MB_TOPMOST);
+    end;
+  end;
+end;
+
+function ScreenReaderSystemActive: boolean;
+
+  procedure CreateTimer;
+  var
+    ptr: TMethod;
+  begin
+    uPostScreenReaderActivationTimer := TTimer.Create(nil);
+    with uPostScreenReaderActivationTimer do
+    begin
+      Enabled := FALSE;
+      Interval := 1000 * POST_SCREEN_READER_ACTIVATION_CHECK_SECONDS;
+      ptr.Code := @PostScreenReaderCheckEvent;
+      ptr.Data := @ptr;
+      OnTimer := TNotifyEvent(ptr);
+      Enabled := TRUE;
+    end;
+  end;
+
+begin
+  if CheckScreenReaderSystemActive then
+  begin
+    CheckScreenReaderSystemActive := FALSE;
+    // prevent Delphi IDE from running DLL 
+    if LowerCase(ExtractFileName(ParamStr(0))) <> 'bds.exe' then
+      uScreenReaderSystemActive := ScreenReaderDLLsExist;
+    if uScreenReaderSystemActive then
+    begin
+      if ScreenReaderSupportEnabled then
+      begin
+        if IsScreenReaderSupported(FALSE) then
+          uScreenReaderSystemActive := InitializeScreenReaderLink
+        else
+          uScreenReaderSystemActive := FALSE;
+      end
+      else
+      begin
+        uScreenReaderSystemActive := FALSE;
+        CreateTimer;
+      end;
+    end;
+  end;
+  Result := uScreenReaderSystemActive;
+end;
+
+procedure SpecifyFormIsNotADialog(FormClass: TClass);
+var
+  lc: string;
+begin
+  if ScreenReaderSystemActive then
+  begin
+    lc := lowercase(FormClass.ClassName);
+    if not assigned(uNonDialogClassNames) then
+      uNonDialogClassNames := TStringList.Create;
+    if uNonDialogClassNames.IndexOf(lc) < 0 then
+      uNonDialogClassNames.Add(lc);
+    if assigned(MasterScreenReader) then
+      MasterScreenReader.RegisterCustomBehavior(FormClass.ClassName, '',
+                                        BEHAVIOR_REMOVE_COMPONENT_CLASS, TRUE);
+  end;
+end;
+
+{ TMasterScreenReader }
+
+procedure TMasterScreenReader.AddComponentDataNeededEventHandler(event: TComponentDataNeededEvent);
+begin
+  FEventHandlers.Add(TMethod(event));
+end;
+
+constructor TMasterScreenReader.Create;
+begin
+  FEventHandlers := TVAMethodList.Create;
+  FCustomBehaviors := TStringList.Create;
+  FInternalRegistration := FALSE;
+  FDataHasBeenRegistered := FALSE;
+  FKeyProc := TList.Create;
+end;
+
+procedure TMasterScreenReader.DecodeBehavior(code: string; var Before,
+  After: string; var Action: integer);
+
+  function Decode(var MasterString: string): string;
+  var
+    CodeLength: integer;
+    hex: string;
+
+  begin
+    Result := '';
+    if length(MasterString) > 1 then
+    begin
+      hex := copy(MasterString,1,2);
+      CodeLength := FastHexToByte(hex);
+      Result := copy(MasterString, 3, CodeLength);
+      delete(MasterString, 1, CodeLength + 2);
+    end;
+  end;
+
+begin
+  Action := StrToIntDef(Decode(code), 0);
+  Before := Decode(code);
+  After := Decode(code);
+  if code <> '' then
+    Raise TVA508Exception.Create('Corrupted Custom Behavior');
+end;
+
+destructor TMasterScreenReader.Destroy;
+begin
+  CloseScreenReaderLink;
+  FreeAndNil(FEventHandlers);
+  FreeAndNil(FCustomBehaviors);
+  FreeAndNil(FKeyProc);
+  inherited;
+end;
+
+function TMasterScreenReader.EncodeBehavior(Before, After: string;
+  Action: integer): string;
+
+  function Coded(str: string): string;
+  var
+    len: integer;
+  begin
+    len := length(str);
+    if len > 255 then
+      Raise TVA508Exception.Create('RegisterCustomBehavior parameter can not be more than 255 characters long');
+    Result := HexChars[len] + str;
+  end;
+
+begin
+  Result := Coded(IntToStr(Action)) + Coded(Before) + Coded(After);
+end;
+
+procedure TMasterScreenReader.HandleSRException(E: Exception);
+begin
+  if not E.ClassNameIs(TVA508Exception.ClassName) then
+    raise E;
+end;
+
+procedure TMasterScreenReader.ProcessCustomKeyCommand(DataRequest: integer);
+var
+  idx: integer;
+  proc: TKeyMapProcedure;
+begin
+  idx := (DataRequest AND DATA_CUSTOM_KEY_COMMAND_MASK) - 1;
+  if (idx < 0) or (idx >= FKeyProc.count) then exit;
+  proc := TKeyMapProcedure(FKeyProc[idx]);
+  proc;
+end;
+
+procedure TMasterScreenReader.RegisterClassAsMSAA(ClassName: string);
+begin
+  RegisterCustomBehavior(ClassName, '', BEHAVIOR_ADD_COMPONENT_MSAA, TRUE);
+  RegisterCustomBehavior(ClassName, '', BEHAVIOR_REMOVE_COMPONENT_CLASS, TRUE);
+end;
+
+procedure TMasterScreenReader.RegisterCustomBehavior(Str1, Str2: String;
+          Action: integer; CheckIR: boolean = FALSE);
+var
+  code: string;
+  idx: integer;
+  p2: PChar;
+  ok: boolean;
+begin
+  code := EncodeBehavior(Str1, Str2, Action);
+  idx := FCustomBehaviors.IndexOf(code);
+  if idx < 0 then
+  begin
+    FCustomBehaviors.add(code);
+    ok := RegistrationAllowed;
+    if ok and CheckIR then
+      ok := (not FInternalRegistration);
+    if ok then
+    begin
+      try
+        if Str2 = '' then
+          p2 := nil
+        else
+          p2 := PChar(Str2);
+        SRRegisterCustomBehavior(Action, PChar(Str1), P2);
+      except
+        on E: Exception do HandleSRException(E);
+      end;
+    end;
+  end;
+end;
+
+procedure TMasterScreenReader.RegisterCustomClassBehavior(Before,
+  After: string);
+begin
+  RegisterCustomBehavior(Before, After, BEHAVIOR_ADD_COMPONENT_CLASS, TRUE);
+  RegisterCustomBehavior(Before, After, BEHAVIOR_REMOVE_COMPONENT_MSAA, TRUE);
+end;
+
+function EnumResNameProc(module: HMODULE; lpszType: PChar; lpszName: PChar; var list: TStringList): BOOL; stdcall;
+var
+  name: string;
+
+begin
+  name := lpszName;
+  list.Add(name);
+  Result := TRUE;
+end;
+
+procedure TMasterScreenReader.RegisterCustomData;
+var
+  i, action: integer;
+  before, after, code: string;
+
+  procedure EnsureDialogAreSpecified;
+  var
+    list: TStringList;
+    i: integer;
+    stream: TResourceStream;
+    Reader: TReader;
+    ChildPos: Integer;
+    Flags: TFilerFlags;
+    clsName: string;
+    ok: boolean;
+  begin
+    FInternalRegistration := TRUE;
+    try
+      list := TStringList.Create;
+      try
+        if EnumResourceNames(HInstance, RT_RCDATA, @EnumResNameProc, integer(@list)) then
+        begin
+          for i := 0 to list.Count-1 do
+          begin
+            stream := TResourceStream.Create(HInstance, list[i], RT_RCDATA);
+            try
+              Reader := TReader.Create(stream, 512);
+              try
+                try
+                  reader.ReadSignature;
+                  reader.ReadPrefix(Flags, ChildPos);
+                  clsName := reader.ReadStr;
+                  ok := not assigned(uNonDialogClassNames);
+                  if not ok then
+                    ok := (uNonDialogClassNames.IndexOf(lowercase(clsName)) < 0);
+                  if ok then                  
+                    RegisterCustomClassBehavior(clsName, CLASS_BEHAVIOR_DIALOG);
+                except
+                end;
+              finally
+                Reader.Free;
+              end;
+            finally
+              stream.Free;
+            end;
+          end;
+        end;
+      finally
+        list.free;
+      end;
+    finally
+      FInternalRegistration := FALSE;
+    end;
+  end;
+
+begin
+  if FTrying2Register then exit;
+  FTrying2Register := TRUE;
+  try
+    if OK2RegisterData then
+    begin
+      try
+        EnsureDialogAreSpecified;
+        RegisterCustomBehavior('','',BEHAVIOR_PURGE_UNREGISTERED_KEY_MAPPINGS);
+        for i := 0 to FCustomBehaviors.Count-1 do
+        begin
+          code := FCustomBehaviors[i];
+          DecodeBehavior(code, before, after, action);
+          SRRegisterCustomBehavior(Action, PChar(Before), PChar(After));
+        end;
+        FDataHasBeenRegistered := TRUE;
+      except
+        on E: Exception do HandleSRException(E);
+      end;
+    end
+    else
+      Need2RegisterData := TRUE;
+  finally
+    FTrying2Register := FALSE;
+  end;
+end;
+
+procedure TMasterScreenReader.RegisterCustomKeyMapping(Key: string; proc: TKeyMapProcedure;
+                              shortDescription, longDescription: string);
+var
+  idx: string;
+
+  procedure AddDescription(DescType, Desc: string);
+  var
+    temp: string;
+  begin
+    temp := DescType + idx + '=' + Desc;
+    if length(temp) > 255 then
+      raise TVA508Exception.Create('Key Mapping description for ' + Key + ' exceeds 255 characters');
+    RegisterCustomBehavior(DescType + idx, Desc, BEHAVIOR_ADD_CUSTOM_KEY_DESCRIPTION);
+  end;
+
+begin
+  FKeyProc.Add(@proc);
+  idx := inttostr(FKeyProc.Count);
+  RegisterCustomBehavior(Key, idx, BEHAVIOR_ADD_CUSTOM_KEY_MAPPING);
+  AddDescription('short', shortDescription);
+  AddDescription('long', longDescription);
+end;
+
+procedure TMasterScreenReader.RegisterDictionaryChange(Before, After: string);
+begin
+  RegisterCustomBehavior(Before, After, BEHAVIOR_ADD_DICTIONARY_CHANGE);
+end;
+
+function TMasterScreenReader.RegistrationAllowed: boolean;
+begin
+  Result := FDataHasBeenRegistered;
+  if not Result then
+  begin
+    RegisterCustomData;
+    Result := FDataHasBeenRegistered;
+  end;
+end;
+
+procedure TMasterScreenReader.RemoveComponentDataNeededEventHandler(event: TComponentDataNeededEvent);
+begin
+  FEventHandlers.Remove(TMethod(event));
+end;
+
+procedure TMasterScreenReader.Speak(Text: string);
+begin
+  if (not assigned(SRSpeakText)) or (Text = '') then exit;
+  try
+    SRSpeakText(PChar(Text));
+  except
+    on E: Exception do HandleSRException(E);
+  end;
+end;
+
+// need to post a message here - can't do direct call - this message is called before mouse
+// process messages are called that change a check box state
+procedure ComponentDataRequested(WindowHandle: HWND; DataRequest: LongInt); stdcall;
+var
+  i: integer;
+  Handle: HWND;
+  Caption: PChar;
+  Value: PChar;
+  Data: PChar;
+  ControlType: PChar;
+  State: PChar;
+  Instructions: PChar;
+  ItemInstructions: PChar;
+  DataStatus: LongInt;
+
+  handler: TComponentDataNeededEvent;
+
+begin
+  if assigned(MasterScreenReader) then
+  begin
+    try
+      if (DataRequest AND DATA_CUSTOM_KEY_COMMAND) <> 0 then
+        MasterScreenReader.ProcessCustomKeyCommand(DataRequest)
+      else
+      begin
+        Handle := WindowHandle;
+        Caption := nil;
+        Value := nil;
+        Data := nil;
+        ControlType := nil;
+        State := nil;
+        Instructions := nil;
+        ItemInstructions := nil;
+        DataStatus := DataRequest;
+        i := 0;
+        while (i < MasterScreenReader.EventHandlers.Count) do
+        begin
+          handler := TComponentDataNeededEvent(MasterScreenReader.EventHandlers.Methods[i]);
+          if assigned(handler) then
+            handler(Handle, DataStatus, Caption, Value, Data, ControlType, State,
+                      Instructions, ItemInstructions);
+          inc(i);
+        end;
+        SRComponentData(WindowHandle, DataStatus, Caption, Value, Data, ControlType, State, Instructions, ItemInstructions);
+      end;
+    except
+      on E: Exception do MasterScreenReader.HandleSRException(E);
+    end;
+  end;
+end;
+
+{ TNullScreenReader }
+
+procedure TNullScreenReader.AddComponentDataNeededEventHandler(
+  event: TComponentDataNeededEvent);
+begin
+end;
+
+procedure TNullScreenReader.RegisterClassAsMSAA(ClassName: string);
+begin
+end;
+
+procedure TNullScreenReader.RegisterCustomClassBehavior(Before, After: string);
+begin
+end;
+
+procedure TNullScreenReader.RegisterCustomKeyMapping(Key: string; proc: TKeyMapProcedure;
+                              shortDescription, longDescription: string);
+begin
+
+end;
+
+procedure TNullScreenReader.RegisterDictionaryChange(Before, After: string);
+begin
+end;
+
+procedure TNullScreenReader.RemoveComponentDataNeededEventHandler(
+  event: TComponentDataNeededEvent);
+begin
+end;
+
+procedure TNullScreenReader.Speak(Text: string);
+begin
+end;
+
+initialization
+  SaveInitProc := InitProc;
+  InitProc := @VA508RouterInitProc;
+
+finalization
+  if assigned(ActiveScreenReader) then
+    FreeAndNil(ActiveScreenReader);
+  if assigned(uNonDialogClassNames) then
+    FreeAndNil(uNonDialogClassNames);
+  if assigned(uPostScreenReaderActivationTimer) then
+    FreeAndNil(uPostScreenReaderActivationTimer);    
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Classes.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Classes.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508Classes.pas	(revision 1676)
@@ -0,0 +1,561 @@
+unit VA508Classes;
+
+interface
+  uses SysUtils, Classes, Contnrs, StrUtils, Windows, HRParser, HRParserPas, Forms, Dialogs;
+
+type
+  TFormData = class
+  private
+    FFileName: string;
+    FlcFormClassName: string;
+    FInheritedForm: boolean;
+    FParent: TFormData;
+    FManagerComponentName: string;
+    FInheritedManager: boolean;
+    FFormClassName: string;
+    FEmptyManager: boolean; 
+    procedure SetFormClassName(const Value: string);
+  public
+    function HasManager: boolean;
+    function HasParent: boolean;
+    property FormClassName: string read FFormClassName write SetFormClassName;
+    property lcFormClassName: string read FlcFormClassName;
+    property EmptyManager: boolean read FEmptyManager write FEmptyManager; 
+    property FileName: string read FFileName write FFileName;
+    property Parent: TFormData read FParent write FParent;
+    property InheritedForm: boolean read FInheritedForm write FInheritedForm;
+    property InheritedManager: boolean read FInheritedManager write FInheritedManager;
+    property ManagerComponentName: string read FManagerComponentName write FManagerComponentName;
+  end;
+
+  EVA508AccessibilityException = class(Exception);
+
+  TParentChildErrorCode = (pcNoParentManager, pcValidRelationship,
+                           pcNoInheritence, pcNoChildComponent, pcEmptyManagerComponent,
+                           pcOtherChildComponent, pcInheritedNoParent);
+const
+  TParentChildPassCodes = [pcNoParentManager, pcValidRelationship];
+  TParentChildFailCodes = [pcNoInheritence, pcNoChildComponent, pcEmptyManagerComponent,
+                           pcOtherChildComponent, pcInheritedNoParent];
+  TAutoFixFailCodes = [pcNoInheritence, pcEmptyManagerComponent, pcNoChildComponent, pcInheritedNoParent];
+
+type
+  TParentChildFormTracker = class
+  private
+    FData: TObjectList;
+    function FindForm(AFormClassName: String): TFormData;
+  public
+    constructor Create;
+    destructor Destroy; override;
+    procedure Clear;
+    procedure AddForm(AFileName, AFormClassName, AManagerComponentName: string;
+                      AEmptyManager: boolean; AInheritedForm, AInheritedManager: boolean);
+    procedure AddLink(ParentFormClassName, ChildFormClassName: string);
+    function FormCount: integer;
+    function GetFormData(index: integer): TFormData;
+    function ParentChildErrorStatus(index: integer): TParentChildErrorCode;
+    function ParentChildErrorDescription(index: integer): string;
+  end;
+
+ TUnitSection = (usUnknown, usInterface, usImplementation);
+  TTokenState = (tsNormal, tsPendingEqualChar, tsPendingClassSymbol, tsPendingParenChar,
+                  tsPendingClassName, tsPendingEndOfClass);
+
+  TVA508Parser = class
+  private
+    FClassName: String;
+    FParentClass: String;
+    FPendingParentClass: string;
+    FParser: THRParserPas;
+    FToken: THRToken;
+    FLastLine: integer;
+    FLastPos: integer;
+    FTokenName: String;
+    FState: TTokenState;
+    FUnitSection: TUnitSection;
+    FDone: boolean;
+    FIsSymbol: boolean;
+    FIsChar: boolean;
+    procedure ParseToken;
+  public
+    function GetParentClassName(ClassName, FileName: String;
+                                InStream: TStream; var OutStream: TStream): String;
+    function LastLineRead: integer;
+    function LastPosition: integer;
+  end;
+
+procedure VA508ComponentCreationCheck(AComponent, AOwner: TComponent;
+            AllowDataModules: boolean; ManagerRequired: boolean);
+procedure VA508ComponentDestructionCheck(AComponent: TComponent);
+
+const
+  NO_OWNER_ERROR = 'Cannot create a %s component without an owner';
+
+implementation
+
+uses
+  VA508AccessibilityManager, VA508ImageListLabeler;
+
+const
+  MANAGER_CLASS_REQUIRED = 'Cannot create a %s component without a ' + #13#10 +
+                           '%s component on the same form';
+  OTHER_COMPONENTS_DELETED = 'Deleting this %s component also deletes all' + #13#10 +
+                             'A %s components on this form';
+  OWNER_NOT_ALLOWED = 'You may not place a %s component on a %s';
+  OWNER_REQUIREMENTS = '%s component can only be added to a %s';
+  HAS_EXISTING_MANAGER_ERROR = '%s alread has a %s component';
+
+function HasAnotherAccessibilityManager(Root, AComponent: TComponent): boolean;
+var
+  i: integer;
+  comp: TComponent;
+begin
+  Result := false;
+  for i := 0 to AComponent.ComponentCount-1 do
+  begin
+    comp := AComponent.Components[i];
+    if (comp <> Root) and (comp is TVA508AccessibilityManager) then
+    begin
+      Result := true;
+      exit;
+    end;
+    if HasAnotherAccessibilityManager(Root, AComponent.Components[i]) then
+    begin
+      Result := true;
+      exit;
+    end;
+  end;
+end;
+
+procedure VA508ComponentCreationCheck(AComponent, AOwner: TComponent;
+            AllowDataModules: boolean; ManagerRequired: boolean);
+var
+  msg: string;
+
+  procedure EnsureManager;
+  var
+    i: integer;
+    error: boolean;
+  begin
+    if (csDesigning in AOwner.ComponentState) and (not (csLoading in AOwner.ComponentState)) then
+    begin
+      error := TRUE;
+      for i := 0 to AOwner.ComponentCount-1 do
+      begin
+        if AOwner.Components[i] is TVA508AccessibilityManager then
+        begin
+          error := FALSE;
+          break;
+        end;
+      end;
+      if error then
+      begin
+        raise EVA508AccessibilityException.CreateFmt(MANAGER_CLASS_REQUIRED,
+                                [AComponent.ClassName, TVA508AccessibilityManager.ClassName]);
+      end;
+    end;
+  end;
+
+begin
+  if not assigned(AOwner) then
+    raise EVA508AccessibilityException.CreateFmt(NO_OWNER_ERROR, [AComponent.ClassName]);
+  if (AOwner is TDataModule) then
+  begin
+    if AllowDataModules then
+      exit
+    else
+      raise EVA508AccessibilityException.CreateFmt(OWNER_NOT_ALLOWED, [AComponent.ClassName, TDataModule.ClassName]);
+  end;
+  if not (AOwner is TCustomForm) then
+  begin
+    msg := 'Form';
+    if AllowDataModules then
+      msg := msg + ' or a Data Module';
+    raise EVA508AccessibilityException.CreateFmt(OWNER_REQUIREMENTS, [AComponent.ClassName, msg]);
+  end;
+  if ManagerRequired then
+    EnsureManager
+  else
+  begin
+    if HasAnotherAccessibilityManager(AComponent, AOwner) then
+      raise EVA508AccessibilityException.Create(Format(HAS_EXISTING_MANAGER_ERROR,
+            [AOwner.ClassName, AComponent.ClassName]));
+  end;
+end;
+
+procedure VA508ComponentDestructionCheck(AComponent: TComponent);
+var
+  i: integer;
+  list: TObjectList;
+  msg: string;
+  ComponentAccessFound, ImageListLabelerFound: boolean;
+  Owner: TComponent;
+
+begin
+  if not assigned(AComponent) then exit;
+  Owner := AComponent.Owner;
+  if not assigned(Owner) then exit;
+  if HasAnotherAccessibilityManager(AComponent, Owner) then exit;
+  if (csDesigning in AComponent.ComponentState) and (not (csDestroying in Owner.ComponentState)) then
+  begin
+    list := TObjectList.Create;
+    try
+      ComponentAccessFound := FALSE;
+      ImageListLabelerFound := FALSE;
+      for I := 0 to Owner.ComponentCount-1 do
+      begin
+        if Owner.Components[i] is TVA508ComponentAccessibility then
+        begin
+          ComponentAccessFound := TRUE;
+          list.Add(Owner.Components[i]);
+        end
+        else
+        if Owner.Components[i] is TVA508ImageListLabeler then
+        begin
+          ImageListLabelerFound := TRUE;
+          list.Add(Owner.Components[i]);
+        end
+      end;
+      msg := '';
+      if ImageListLabelerFound then
+        msg := TVA508ImageListLabeler.ClassName;
+      if ComponentAccessFound then
+      begin
+        if msg <> '' then
+          msg := msg + ' and ';
+        msg := msg + TVA508ComponentAccessibility.ClassName;
+      end;
+      if msg <> '' then
+      begin
+        MessageDlg(Format(OTHER_COMPONENTS_DELETED, [AComponent.ClassName, msg]), mtWarning, [mbOK], 0);
+      end;
+    finally
+      list.Free;
+    end;
+  end;
+end;
+
+{ TFormData }
+
+function TFormData.HasManager: boolean;
+begin
+  Result := ManagerComponentName <> '';
+end;
+
+function TFormData.HasParent: boolean;
+begin
+  Result := assigned(Parent);
+end;
+
+procedure TFormData.SetFormClassName(const Value: string);
+begin
+  FFormClassName := Value;
+  FlcFormClassName := lowerCase(Value);
+end;
+
+{ TParentChildFormTracker }
+
+procedure TParentChildFormTracker.AddForm(AFileName, AFormClassName, AManagerComponentName: string;
+                                AEmptyManager: boolean; AInheritedForm, AInheritedManager: boolean);
+var
+  data: TFormData;
+begin
+  if FindForm(AFormClassName) = nil then
+  begin
+    Data := TFormData.Create;
+    data.FileName := AFileName;
+    data.FormClassName := AFormClassName;
+    data.ManagerComponentName := AManagerComponentName;
+    data.Parent := nil;
+    data.InheritedForm := AInheritedForm;
+    data.InheritedManager := AInheritedManager;
+    data.EmptyManager := AEmptyManager;
+    FData.Add(data);
+  end;
+end;
+
+procedure TParentChildFormTracker.AddLink(ParentFormClassName, ChildFormClassName: string);
+var
+  child,parent: TFormData;
+begin
+  child := FindForm(ChildFormClassName);
+  parent := FindForm(ParentFormClassName);
+  if assigned(child) and assigned(parent) then
+    child.Parent := parent;
+end;
+
+procedure TParentChildFormTracker.Clear;
+begin
+  FData.Clear;
+end;
+
+constructor TParentChildFormTracker.Create;
+begin
+  FData := TObjectList.Create;
+end;
+
+destructor TParentChildFormTracker.Destroy;
+begin
+  FData.Free;
+  inherited;
+end;
+
+function TParentChildFormTracker.FindForm(AFormClassName: String): TFormData;
+var
+  i: integer;
+  name: string;
+begin
+  name := lowercase(AFormClassName);
+  Result := nil;
+  for i := 0 to FData.Count - 1 do
+  begin
+    if GetFormData(i).lcFormClassName = Name then
+    begin
+      Result := GetFormData(i);
+      exit;
+    end;
+  end;
+end;
+
+function TParentChildFormTracker.FormCount: integer;
+begin
+  Result := FData.Count;
+end;
+
+function TParentChildFormTracker.GetFormData(index: integer): TFormData;
+begin
+  Result := TFormData(FData[index]);
+end;
+
+function TParentChildFormTracker.ParentChildErrorDescription(index: integer): string;
+var
+  code: TParentChildErrorCode;
+  parent: TFormData;
+  child: TFormData;
+begin
+  code := ParentChildErrorStatus(index);
+  Result := '';
+  if code in [pcNoParentManager, pcValidRelationship] then exit;
+  child := GetFormData(index);
+  parent := child.Parent;
+  case code of
+    pcNoInheritence: Result := 'Form ' + child.FormClassName + ' descends from form ' + parent.FormClassName +
+                                ' but uses the word "object" instead of "inherited" in the .dfm file.';
+    pcNoChildComponent, pcEmptyManagerComponent: Result := 'Form ' + child.FormClassName +
+                                ' .dfm file needs to be rebuilt.    To fix manually, view the form as text, then as a form, ' +
+                                ' make sure the form is in a modified state, and save it.';
+    pcOtherChildComponent: Result := 'Form ' + child.FormClassName + ' has two ' + TVA508AccessibilityManager.ClassName +
+                                ' components, one from an inherited form, and one on the form.' +
+                                '  Remove the component on the form and use the inherited component';
+    pcInheritedNoParent: Result := 'Form ' + child.FormClassName + ' has a ' + TVA508AccessibilityManager.ClassName +
+                                ' component, ' + child.ManagerComponentName +
+                                ', that was inherited from a parent form, but ' + child.ManagerComponentName +
+                                ' has been deleted from the parent form.  To Remove the component, view the form as text, then as a form, ' +
+                                ' make sure the form is in a modified state, and save it.  Or you can add the ' +
+                                TVA508AccessibilityManager.ClassName + ' component back onto the parent form.';
+    else Result := '';
+  end;
+end;
+
+function TParentChildFormTracker.ParentChildErrorStatus(
+  index: integer): TParentChildErrorCode;
+var
+  parent: TFormData;
+  child: TFormData;
+  bad: boolean;
+
+begin
+  Result := pcNoParentManager;
+  child := GetFormData(index);
+  if not assigned(child) then exit;
+
+  bad := false;
+  if child.InheritedManager then
+  begin
+    bad := not child.HasParent;
+    if not bad then
+      bad := not child.InheritedForm;
+    if not bad then
+      bad := not child.Parent.HasManager;
+  end;
+
+  try
+    if not child.HasParent then exit;
+    parent := child.Parent;
+    if not parent.HasManager then exit;
+    if child.InheritedForm then
+    begin
+      if child.HasManager then
+      begin
+        if (parent.ManagerComponentName = child.ManagerComponentName) and
+            (child.InheritedManager) then
+        begin
+          if child.EmptyManager then
+            Result := pcEmptyManagerComponent
+          else
+            Result := pcValidRelationship
+        end
+        else
+          Result := pcOtherChildComponent
+      end
+      else
+        Result := pcNoChildComponent;
+    end
+    else
+      Result := pcNoInheritence;
+  finally
+    if bad and (Result = pcNoParentManager) then
+      Result := pcInheritedNoParent;
+  end;
+end;
+
+const
+  INTERFACE_NAME      = 'interface';
+  IMPLEMENTATION_NAME = 'implementation';
+
+  CLASS_NAME = 'class';
+  LEFT_PAREN  = '(';
+  RIGHT_PAREN = ')';
+  COMMA       = ',';
+  EQUALS      = '=';
+
+{ TVA508Parser }
+
+function TVA508Parser.GetParentClassName(ClassName, FileName: String;
+                                InStream: TStream; var OutStream: TStream): String;
+begin
+  FClassName := lowerCase(ClassName);
+  FParentClass := '';
+  FState := tsNormal;
+  FUnitSection := usUnknown;
+  FDone := false;
+
+  if(assigned(FParser)) then
+    FParser.Free;
+  FParser := THRParserPas.Create;
+  FLastLine := 0;
+  FLastPos := 0;
+  if assigned(InStream) then
+    FParser.Source := InStream
+  else
+    FParser.Source := TFileStream.Create(FileName, fmOpenRead, fmShareDenyNone);
+  try
+    while (not FDone) and (FParser.NextToken.TokenType <> HR_TOKEN_EOF) do
+    begin
+      FToken := FParser.Token;
+      FLastLine := FToken.Line;
+      FLastPos := FToken.SourcePos;
+      ParseToken;
+    end;
+  finally
+    if assigned(InStream) then
+    begin
+      InStream.Free;
+      OutStream := nil;
+    end
+    else
+      OutStream := FParser.Source;
+    FreeAndNil(FParser);
+  end;
+  Result := FParentClass;  
+end;
+
+function TVA508Parser.LastLineRead: integer;
+begin
+  Result := FLastLine;
+end;
+
+function TVA508Parser.LastPosition: integer;
+begin
+  Result := FLastPos + 1;
+end;
+
+procedure TVA508Parser.ParseToken;
+
+  function IgnoreToken: boolean;
+  begin
+    if(FUnitSection = usImplementation) then
+    begin
+      Result := TRUE;
+      exit;
+    end;
+    case FToken.TokenType of
+      HR_TOKEN_TEXT_SPACE, HR_TOKEN_PAS_COMMENT_SLASH,
+      HR_TOKEN_PAS_COMMENT_BRACE_OPEN, HR_TOKEN_PAS_COMMENT_BRACE,
+      HR_TOKEN_PAS_COMMENT_BRACKET_OPEN, HR_TOKEN_PAS_COMMENT_BRACKET:
+        Result := TRUE;
+      else
+        Result := FALSE;
+    end;
+  end;
+
+  function InvalidSection: boolean;
+  var
+    changed: boolean;
+  begin
+    changed := false;
+    if FIsSymbol then
+    begin
+      if FTokenName = INTERFACE_NAME then
+      begin
+        FUnitSection := usInterface;
+        changed := true;
+      end
+      else if FTokenName = IMPLEMENTATION_NAME then
+      begin
+        FUnitSection := usImplementation;
+        FDone := TRUE;
+        changed := true;
+      end;
+    end;
+    Result := (FUnitSection <> usInterface);
+    if changed then
+      FState := tsNormal;
+  end;
+
+begin
+  if(IgnoreToken) then exit;
+
+  FTokenName := LowerCase(FToken.Token);
+  FIsSymbol  := (FToken.TokenType = HR_TOKEN_TEXT_SYMBOL);
+  FIsChar    := (FToken.TokenType = HR_TOKEN_CHAR);
+
+  if(InvalidSection) then exit;
+  case FState of
+    tsNormal:               if FIsSymbol and (FTokenName = FClassName) then
+                              FState := tsPendingEqualChar;
+    tsPendingEqualChar:     if FIsChar and (FTokenName = EQUALS) then
+                              FState := tsPendingClassSymbol
+                            else
+                              FState := tsNormal;
+    tsPendingClassSymbol:   if FIsSymbol and (FTokenName = CLASS_NAME) then
+                              FState := tsPendingParenChar
+                            else
+                              FState := tsNormal;
+    tsPendingParenChar:     if FIsChar and (FTokenName = LEFT_PAREN) then
+                              FState := tsPendingClassName
+                            else
+                              FState := tsNormal;
+    tsPendingClassName:     if FIsSymbol then
+                            begin
+                              FPendingParentClass := FToken.Token;
+                              FState := tsPendingEndOfClass;
+                            end
+                            else
+                              FState := tsNormal;
+    tsPendingEndOfClass:    begin
+                              if FIsChar and ((FTokenName = RIGHT_PAREN) or
+                                  (FTokenName = COMMA)) then
+                              begin
+                                FParentClass := FPendingParentClass;
+                                FDone := TRUE;
+                              end;
+                              FState := tsNormal;
+                            end;
+  else
+    FState := tsNormal;
+  end;
+end;
+
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508DelphiCompatibility.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508DelphiCompatibility.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508DelphiCompatibility.pas	(revision 1676)
@@ -0,0 +1,602 @@
+unit VA508DelphiCompatibility;
+
+interface
+
+uses
+  SysUtils, Classes, Controls, Windows, StdCtrls, CheckLst, ExtCtrls, Forms,
+  ValEdit, DBGrids, Calendar, ComCtrls, VA508AccessibilityManager;
+
+function GetCheckBoxComponentName(AllowGrayed: boolean): string;
+function GetCheckBoxInstructionMessage(Checked: boolean): string;
+function GetCheckBoxStateText(State: TCheckBoxState): String;
+
+procedure ListViewIndexQueryProc(Sender: TObject; ItemIndex: integer; var Text: string);
+
+type
+  TVA508StaticTextManager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetCaption(Component: TWinControl): string; override;
+    function GetValue(Component: TWinControl): string; override;
+  end;
+
+implementation
+
+uses Grids, VA508AccessibilityRouter,  VA508AccessibilityConst, VA508MSAASupport,
+  VAUtils;
+
+type
+  TCheckBox508Manager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+  end;
+
+  TCheckListBox508Manager = class(TVA508ManagedComponentClass)
+  private
+    function GetIndex(Component: TWinControl): integer;
+  public
+    constructor Create; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetState(Component: TWinControl): string; override;
+    function GetItem(Component: TWinControl): TObject; override;
+    function GetItemInstructions(Component: TWinControl): string; override;
+  end;
+
+  TVA508EditManager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+  end;
+
+  TVA508ComboManager = class(TVA508ManagedComponentClass)
+  public
+    constructor Create; override;
+    function GetValue(Component: TWinControl): string; override;
+  end;
+
+  TCustomGrid508Manager = class(TVA508ManagedComponentClass)
+  private
+  public
+    constructor Create; override;
+    function GetComponentName(Component: TWinControl): string; override;
+    function GetInstructions(Component: TWinControl): string; override;
+    function GetValue(Component: TWinControl): string; override;
+    function GetItem(Component: TWinControl): TObject; override;
+//    function GetData(Component: TWinControl; Value: string): string; override;
+  end;
+
+  TVA508RegistrationScreenReader = class(TVA508ScreenReader);
+
+function CustomComboAlternateHandle(Component: TWinControl): HWnd; forward;
+
+procedure ListViewIndexQueryProc(Sender: TObject; ItemIndex: integer; var Text: string);
+var
+  temp: string;
+  view: TListView;
+  item: TListItem;
+  i: integer;
+  include: boolean;
+
+  procedure Append(txt: string);
+  begin
+    if txt = '' then exit;
+    if text <> '' then
+      text := text + ' ';
+    text := text + txt + ',';
+  end;
+
+  procedure AppendHeader(txt: string);
+  begin
+    if txt = '' then
+      txt := 'blank header';
+    Append(txt);
+  end;
+
+begin
+  view := TListView(Sender);
+  Text := '';
+  include := TRUE;
+  if (ItemIndex < 0) or (ItemIndex >= view.Items.Count) then exit;
+  item := view.Items.Item[ItemIndex];
+  if (view.ViewStyle = vsReport) and (view.Columns.Count > 0) then
+  begin
+    if view.Columns[0].Width < 1 then
+      include := FALSE
+    else
+      AppendHeader(view.Columns[0].Caption);
+  end;
+  if include then
+  begin
+    temp := item.Caption;
+    if temp = '' then
+      temp := 'blank';
+    Append(temp);
+  end;
+
+  if view.ViewStyle = vsReport then
+  begin
+    for i := 1 to view.Columns.Count - 1 do
+    begin
+      if view.Columns[i].Width > 0 then
+      begin
+        AppendHeader(view.Columns[i].Caption);
+        if (i-1) < item.SubItems.Count then
+          temp := item.SubItems[i-1]
+        else
+          temp := '';
+        if temp = '' then
+          temp := 'blank';
+        Append(temp);
+      end;
+    end;
+  end;
+end;
+
+procedure RegisterStandardDelphiComponents;
+begin
+  RegisterAlternateHandleComponent(TCustomCombo, CustomComboAlternateHandle);
+  RegisterManagedComponentClass(TCheckBox508Manager.Create);
+  RegisterManagedComponentClass(TCheckListBox508Manager.Create);
+  RegisterManagedComponentClass(TCustomGrid508Manager.Create);
+  RegisterManagedComponentClass(TVA508StaticTextManager.Create);
+  RegisterManagedComponentClass(TVA508EditManager.Create);
+  RegisterManagedComponentClass(TVA508ComboManager.Create);
+
+  with TVA508RegistrationScreenReader(GetScreenReader) do
+  begin
+    // even though TListView is in Default.JCF, we add it here to clear out previous MSAA setting
+    RegisterCustomClassBehavior(TListView.ClassName, CLASS_BEHAVIOR_LIST_VIEW);
+    RegisterCustomClassBehavior(TVA508StaticText.ClassName, CLASS_BEHAVIOR_STATIC_TEXT);
+  end;
+
+  RegisterMSAAQueryListClassProc(TListView, ListViewIndexQueryProc);
+
+{ TODO -oJeremy Merrill -c508 : 
+Add these components as ones that need an alternate handle
+TColorBox
+TValueListEditor ?? - may be fixed because it's a TStringGrid
+TCaptionStringGrid
+TToolBar (not needed when the tool bar doesn't have focus)
+TPageScroller
+
+add stuff for image processing
+descendents of TCustomTabControl
+
+
+}
+
+{ TODO -oJeremy Merrill -c508 :Need to create a fix for the list box stuff here}
+end;
+
+{ TCustomCombo Alternate Handle }
+
+type
+  TExposedCustomCombo = class(TCustomCombo)
+  public
+    property EditHandle;
+  end;
+
+function CustomComboAlternateHandle(Component: TWinControl): HWnd;
+begin
+  Result := TExposedCustomCombo(Component).EditHandle;
+end;
+
+{ Check Box Utils - used by multiple classes }
+
+function GetCheckBoxComponentName(AllowGrayed: boolean): string;
+begin
+  if AllowGrayed then
+    Result := 'Three State Check Box'
+  else
+    Result := 'Check Box';
+end;
+
+function GetCheckBoxInstructionMessage(Checked: boolean): string;
+begin
+  if not Checked then // handles clear and gray entries
+    Result := 'to check press space bar'
+  else
+    Result := 'to clear check mark press space bar';
+end;
+
+function GetCheckBoxStateText(State: TCheckBoxState): String;
+begin
+  case State of
+    cbUnchecked: Result := 'not checked';
+    cbChecked:   Result := 'checked';
+    cbGrayed:    Result := 'Partially Checked';
+    else         Result := '';
+  end;
+end;
+{ TCheckBox508Manager }
+
+constructor TCheckBox508Manager.Create;
+begin
+  inherited Create(TCheckBox, [mtComponentName, mtInstructions, mtState, mtStateChange]);
+end;
+
+function TCheckBox508Manager.GetComponentName(Component: TWinControl): string;
+begin
+  Result := GetCheckBoxComponentName(TCheckBox(Component).AllowGrayed);
+end;
+
+function TCheckBox508Manager.GetInstructions(Component: TWinControl): string;
+begin
+  Result := GetCheckBoxInstructionMessage(TCheckBox(Component).Checked);
+end;
+
+function TCheckBox508Manager.GetState(Component: TWinControl): string;
+begin
+  Result := GetCheckBoxStateText(TCheckBox(Component).State);
+end;
+
+{ TCheckListBox508Manager }
+
+constructor TCheckListBox508Manager.Create;
+begin
+  inherited Create(TCheckListBox, [mtComponentName, mtState, mtStateChange, mtItemChange, mtItemInstructions]);
+end;
+
+function TCheckListBox508Manager.GetComponentName(
+  Component: TWinControl): string;
+var
+  lb : TCheckListBox;
+begin
+  lb := TCheckListBox(Component);
+  if lb.AllowGrayed then
+    Result := 'Three State Check List Box'
+  else
+    Result := 'Check List Box';
+end;
+
+function TCheckListBox508Manager.GetItemInstructions(
+  Component: TWinControl): string;
+var
+  lb : TCheckListBox;
+  idx: integer;
+begin
+  lb := TCheckListBox(Component);
+  idx := GetIndex(Component);
+  if (idx < 0) then
+    Result := ''
+  else
+    Result := GetCheckBoxInstructionMessage(lb.Checked[idx]);
+end;
+
+function TCheckListBox508Manager.GetIndex(Component: TWinControl): integer;
+var
+  lb : TCheckListBox;
+begin
+  lb := TCheckListBox(Component);
+  if (lb.ItemIndex < 0) then
+  begin
+    if lb.Count > 0 then
+      Result := 0
+    else
+      Result := -1
+  end
+  else
+    Result := lb.ItemIndex;
+end;
+
+function TCheckListBox508Manager.GetItem(Component: TWinControl): TObject;
+var
+  lb : TCheckListBox;
+begin
+  lb := TCheckListBox(Component);
+  Result := TObject((lb.items.Count * 10000) + (lb.ItemIndex + 2));
+end;
+
+function TCheckListBox508Manager.GetState(Component: TWinControl): string;
+var
+  lb : TCheckListBox;
+  idx: integer;
+begin
+  lb := TCheckListBox(Component);
+  idx := GetIndex(Component);
+  if idx < 0 then
+    Result := ''
+  else
+    Result := GetCheckBoxStateText(lb.State[idx]);
+end;
+
+{ TCustomForm508Manager }
+
+type
+  TAccessGrid = class(TCustomGrid);
+
+constructor TCustomGrid508Manager.Create;
+begin
+{ TODO : Add support for other string grid features - like state changes for editing or selecting cells }
+//  inherited Create(TStringGrid, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE);
+  inherited Create(TCustomGrid, [mtComponentName, mtInstructions, mtValue, mtItemChange], TRUE);
+//  FLastX := -1;
+//  FLastY := -1;
+end;
+
+// Data pieces
+// 1 = Column header, if any
+// 2 = Column #
+// 3 = number of columns
+// 4 = Row header, if any
+// 5 = Row #
+// 6 = number of rows
+// 7 = Cell #
+// 8 = total # of cells
+// 9 = cell contents
+
+const
+  DELIM = '^';
+
+function TCustomGrid508Manager.GetComponentName(Component: TWinControl): string;
+begin
+  Result := ' grid ';
+  // don't use 'grid' - we're abandoning the special code in the JAWS scripts for
+  // grids - it's too messy, and based on the 'grid' component name
+end;
+{
+function TCustomGrid508Manager.GetData(Component: TWinControl; Value: string): string;
+
+var
+  grid: TAccessGrid;
+  row, col: integer;
+  cnt, x, y, max, mult: integer;
+  txt: string;
+
+  procedure Add(txt: integer); overload;
+  begin
+    Result := Result + inttostr(txt) + DELIM;
+  end;
+
+  procedure Add(txt: string); overload;
+  begin
+    Result := Result + Piece(txt,DELIM,1) + DELIM;
+  end;
+
+begin
+  grid := TAccessGrid(Component);
+  row := grid.Row;
+  col := grid.Col;
+  if (row >= 0) and (col >= 0) then
+  begin
+    if grid.FixedRows > 0 then
+      Add(grid.GetEditText(col, 0))
+    else
+      Add('');
+    Add(col - grid.FixedCols + 1);
+    Add(grid.ColCount - grid.FixedCols);
+
+    if grid.FixedCols > 0 then
+      Add(grid.GetEditText(0, row))
+    else
+      Add('');
+    Add(row - grid.FixedRows + 1);
+    Add(grid.RowCount - grid.FixedRows);
+
+    x := grid.ColCount - grid.FixedCols;
+    y := grid.RowCount - grid.FixedRows;
+    max := x * y;
+    x := grid.Col - grid.FixedCols;
+    y := grid.Row - grid.FixedRows;
+    mult := grid.ColCount - grid.FixedCols;
+
+    if (mult > 0) and
+       (x >= 0) and (x < grid.ColCount) and
+       (y >= 0) and (y < grid.RowCount) then
+    begin
+      cnt := (y * mult) + x + 1;
+      Add(cnt);
+    end
+    else
+      Add(0);
+    Add(max);
+
+    if Value = '' then
+      txt := grid.GetEditText(col, row)
+    else
+      txt := Value;
+
+    Add(txt);
+    delete(Result,length(Result),1); // remove trailing delimeter
+  end
+  else
+    Result := '';
+end;      }
+
+function TCustomGrid508Manager.GetInstructions(Component: TWinControl): string;
+var
+  grid: TAccessGrid;
+//  cnt, x, y, max, mult: integer;
+begin
+  Result := '';
+  grid := TAccessGrid(Component);
+//  x := grid.ColCount - grid.FixedCols;
+//  y := grid.RowCount - grid.FixedRows;
+//  max := x * y;
+//  x := grid.Col - grid.FixedCols;
+//  y := grid.Row - grid.FixedRows;
+//  mult := grid.ColCount - grid.FixedCols;
+//
+//  if (mult > 0) and
+//     (x >= 0) and (x < grid.ColCount) and
+//     (y >= 0) and (y < grid.RowCount) then
+//  begin
+//    cnt := (y * mult) + x + 1;
+//    Result := IntToStr(cnt) + ' of ' + inttostr(max) + ', ';
+//  end;
+  Result := Result + 'To move to items use the arrow ';
+  if goTabs in grid.Options then
+    Result := Result + ' or tab ';
+  Result := Result + 'keys';
+end;
+  
+//  if
+//  key
+//end;
+(*
+listbox
+column 120 row 430
+
+unavailable (text of cell?)  read only
+
+20 or 81
+
+
+
+listbox
+column 3 of 10
+row 6 of 10
+
+unavailable (text of cell?)  read only
+
+20 or 81
+
+
+
+with each navigation:
+
+column 3 of 10 
+row 6 of 10
+
+unavailable (text of cell?)  read only
+*)
+
+
+function TCustomGrid508Manager.GetItem(Component: TWinControl): TObject;
+var
+  grid: TAccessGrid;
+  row, col, maxRow: integer;
+begin
+  grid := TAccessGrid(Component);
+  row := grid.Row + 2;
+  col := grid.Col + 2;
+  MaxRow := grid.RowCount + 3;
+  if MaxRow < 1000 then
+    MaxRow := 1000;
+  Result := TObject((row * maxRow) + col);
+end;
+
+//function TCustomGrid508Manager.GetValue(Component: TWinControl): string;
+//var
+//  grid: TAccessGrid;
+//begin
+//  grid := TAccessGrid(Component);
+//  Result := Piece(grid.GetEditText(grid.Col, grid.Row), DELIM, 1);
+//end;
+
+
+function TCustomGrid508Manager.GetValue(Component: TWinControl): string;
+var
+  grid: TAccessGrid;
+  row, col: integer;
+  colHdr, rowHdr, txt: string;
+
+begin
+  grid := TAccessGrid(Component);
+  row := grid.Row;
+  col := grid.Col;
+  if (row >= 0) and (col >= 0) then
+  begin
+//    if col <> FLastX then
+//    begin
+      if grid.FixedRows > 0 then
+        colHdr := Piece(grid.GetEditText(col, 0), DELIM, 1)
+      else
+        colHdr := '';
+      if colHdr = '' then
+        colHdr := inttostr(col+1-grid.FixedCols) + ' of ' + inttostr(grid.ColCount-grid.FixedCols);
+      colHdr := 'column ' + colhdr + ', ';
+//    end
+//    else
+//      colHdr := '';
+//    FLastX := col;
+
+//    if row <> FLastY then
+//    begin
+      if grid.FixedCols > 0 then
+        rowHdr := Piece(grid.GetEditText(0, row), DELIM, 1)
+      else
+        rowHdr := '';
+      if rowHdr = '' then
+        rowHdr := inttostr(row+1-grid.FixedRows) + ' of ' + inttostr(grid.RowCount-grid.FixedRows);
+      rowHdr := 'row ' + rowhdr + ', ';
+//    end
+//    else
+//      rowHdr := '';
+//    FLastY := row;
+
+    txt := Piece(grid.GetEditText(col, row), DELIM, 1);
+    if txt = '' then
+      txt := 'blank';
+    Result := colHdr + rowHdr + txt;
+  end
+  else
+    Result := ' ';
+end;
+
+
+{ TVA508StaticTextManager }
+
+constructor TVA508StaticTextManager.Create;
+begin
+  inherited Create(TVA508StaticText, [mtComponentName, mtCaption, mtValue], TRUE);
+end;
+
+function TVA508StaticTextManager.GetCaption(Component: TWinControl): string;
+begin
+  Result := ' ';
+end;
+
+function TVA508StaticTextManager.GetComponentName(
+  Component: TWinControl): string;
+begin
+  Result := 'label';
+end;
+
+function TVA508StaticTextManager.GetValue(Component: TWinControl): string;
+var
+  next: TVA508ChainedLabel;
+  comp: TVA508StaticText;
+begin
+  comp := TVA508StaticText(Component);
+  Result := comp.Caption;
+  next := comp.NextLabel;
+  while assigned(next) do
+  begin
+    Result := Result + ' ' + next.Caption;
+    next := next.NextLabel;
+  end;
+end;
+
+{ TVA508EditManager }
+
+constructor TVA508EditManager.Create;
+begin
+  inherited Create(TEdit, [mtValue], TRUE);
+end;
+
+function TVA508EditManager.GetValue(Component: TWinControl): string;
+begin
+  Result := TEdit(Component).Text;
+end;
+
+{ TVA508ComboManager }
+
+constructor TVA508ComboManager.Create;
+begin
+  inherited Create(TComboBox, [mtValue], TRUE);
+end;
+
+function TVA508ComboManager.GetValue(Component: TWinControl): string;
+begin
+  Result := TComboBox(Component).Text;
+end;
+
+initialization
+  RegisterStandardDelphiComponents;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabeler.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabeler.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabeler.pas	(revision 1676)
@@ -0,0 +1,725 @@
+unit VA508ImageListLabeler;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Controls, ImgList, VAClasses, Graphics, ComCtrls,
+  Contnrs, Forms, oleacc2, VA508MSAASupport;
+
+type
+  TVA508ImageListLabeler = class;
+  TVA508ImageListLabels = class;
+
+  TVA508ImageListLabel = class(TCollectionItem)
+  private
+    FImageIndex: integer;
+    FCaption: string;
+    FOverlayIndex: integer;
+    procedure SetImageIndex(const Value: integer);
+    procedure Changed;
+    procedure SetCaption(const Value: string);
+    procedure SetOverlayIndex(const Value: integer);
+  protected
+    procedure Refresh;
+    function Labeler: TVA508ImageListLabeler;
+  public
+    constructor Create(Collection: TCollection); override;
+    destructor Destroy; override;
+    procedure Assign(Source: TPersistent); override;
+  published
+    property Caption: string read FCaption write SetCaption;
+    property ImageIndex: integer read FImageIndex write SetImageIndex;
+    property OverlayIndex: integer read FOverlayIndex write SetOverlayIndex;
+  end;
+
+  TVA508ImageListLabels = class(TCollection)
+  private
+    FOwner: TVA508ImageListLabeler;
+    FColumns: TStringList;
+    FImageData: TStrings;
+    FOverlayData: TStrings;
+    FBuildOverlayData: boolean;
+  protected
+    function GetAttrCount: Integer; override;
+    function GetAttr(Index: Integer): string; override;
+    function GetItemAttr(Index, ItemIndex: Integer): string; override;
+    function GetItem(Index: Integer): TVA508ImageListLabel;
+    procedure SetItem(Index: Integer; Value: TVA508ImageListLabel);
+    procedure Notify(Item: TCollectionItem; Action: TCollectionNotification); override;
+    procedure Update(Item: TCollectionItem); override;
+    function GetImageData: TStrings;
+    function GetOverlayData: TStrings;
+    procedure ResetData;    
+  public
+    constructor Create(Owner: TVA508ImageListLabeler);
+    destructor Destroy; override;
+    function GetOwner: TPersistent; override;
+    function Add: TVA508ImageListLabel;
+    property Items[Index: Integer]: TVA508ImageListLabel read GetItem write SetItem; default;
+  end;
+
+  TVA508ImageListComponent = class(TCollectionItem)
+  private
+    FComponent: TWinControl;
+    FComponentNotifier: TVANotificationEventComponent;
+    procedure ComponentNotifyEvent(AComponent: TComponent; Operation: TOperation);
+    procedure SetComponent(const Value: TWinControl);
+    function Labeler: TVA508ImageListLabeler;
+  protected
+    function GetDisplayName: string; override;
+  public
+    destructor Destroy; override;
+    procedure Assign(Source: TPersistent); override;
+    function ImageListTypes: TVA508ImageListTypes;
+  published
+    property Component: TWinControl read FComponent write SetComponent;
+  end;
+
+  TVA508ImageListComponents = class(TCollection)
+  private
+    FOwner: TVA508ImageListLabeler;
+  protected
+    function GetItem(Index: Integer): TVA508ImageListComponent;
+    procedure SetItem(Index: Integer; Value: TVA508ImageListComponent);
+    procedure Notify(Item: TCollectionItem; Action: TCollectionNotification); override;
+  public
+    constructor Create(Owner: TVA508ImageListLabeler);
+    destructor Destroy; override;
+    function GetOwner: TPersistent; override;
+    function Add: TVA508ImageListComponent;
+    property Items[Index: Integer]: TVA508ImageListComponent read GetItem write SetItem; default;
+  end;
+
+  TVA508ImageListLabeler = class(TComponent)
+  private
+    FStartup: boolean;
+    FOldComponentList: TList;
+    FImageListChanging: boolean;
+    FImageListChanged: boolean;
+    FItemChange: boolean;
+    FOnChange: TNotifyEvent;
+    FChangeLink: TChangeLink;
+    FImageList: TCustomImageList;
+    FComponents: TVA508ImageListComponents;
+    FItems: TVA508ImageListLabels;
+    FRemoteLabeler: TVA508ImageListLabeler;
+    procedure SetImageList(const Value: TCustomImageList);
+    procedure SetRemoteLabeler(const Value: TVA508ImageListLabeler);
+  protected
+    procedure ImageIndexQuery(Sender: TObject; ImageIndex: integer;
+                              ImageType: TVA508ImageListType; var ImageText: string);
+    procedure Loaded; override;
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+    procedure ImageListChange(Sender: TObject);
+    procedure ItemChanged;
+    procedure SaveChanges(Reregister: boolean);
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    procedure ComponentImageListChanged;
+  published
+    property Components: TVA508ImageListComponents read FComponents write FComponents;
+    property ImageList: TCustomImageList read FImageList write SetImageList;
+    property Labels: TVA508ImageListLabels read FItems write FItems;
+    property RemoteLabeler: TVA508ImageListLabeler read FRemoteLabeler write SetRemoteLabeler;
+  end;
+
+procedure Register;
+
+implementation
+
+uses VA508Classes, VA508AccessibilityRouter;
+
+procedure Register;
+begin
+  RegisterComponents('VA 508', [TVA508ImageListLabeler]);
+end;
+
+{ TVA508ImageListLabeler }
+
+procedure TVA508ImageListLabeler.ComponentImageListChanged;
+begin
+  SaveChanges(TRUE);
+end;
+
+constructor TVA508ImageListLabeler.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FStartup := TRUE;
+  FOldComponentList := TList.Create;
+  FItems := TVA508ImageListLabels.Create(Self);
+  FComponents := TVA508ImageListComponents.Create(Self);
+  FChangeLink := TChangeLink.Create;
+  FChangeLink.OnChange := ImageListChange;
+  VA508ComponentCreationCheck(Self, AOwner, TRUE, TRUE);
+end;
+
+destructor TVA508ImageListLabeler.Destroy;
+begin
+  FItems.Clear;
+  FComponents.Clear;
+  SaveChanges(FALSE);
+  SetImageList(nil);
+  FreeAndNil(FItems);
+  FreeAndNil(FComponents);
+  FChangeLink.Free;
+  FreeAndNil(FOldComponentList);
+  inherited;
+end;
+
+procedure TVA508ImageListLabeler.ImageIndexQuery(Sender: TObject; ImageIndex: integer; 
+                                  ImageType: TVA508ImageListType; var ImageText: string);
+var
+  list: TStrings;
+begin
+  if ImageIndex < 0 then exit;
+  if ImageType = iltOverlayImages then
+  begin
+    if assigned(RemoteLabeler) then
+      list := RemoteLabeler.FItems.GetOverlayData
+    else
+      list := FItems.GetOverlayData;
+  end
+  else
+  begin
+    if assigned(RemoteLabeler) then
+      list := RemoteLabeler.FItems.GetImageData
+    else
+      list := FItems.GetImageData;
+  end;
+  if ImageIndex < list.Count then
+    ImageText := list[ImageIndex]
+  else
+    ImageText := '';
+end;
+
+procedure TVA508ImageListLabeler.ImageListChange(Sender: TObject);
+var
+  i: integer;
+begin
+  if assigned(FOnChange) then
+  begin
+    FItemChange := FALSE;
+    FImageListChanged := TRUE;
+    try
+      for I := 0 to FItems.Count - 1 do
+      begin
+        FItems.Items[i].Refresh;
+        if FItemChange then
+          break;
+      end;
+      if FItemChange then
+        FOnChange(Self);
+    finally
+      FImageListChanged := FALSE;
+    end;                         
+  end;
+end;
+
+procedure TVA508ImageListLabeler.ItemChanged;
+begin
+  if FImageListChanged then
+    FItemChange := TRUE
+  else if assigned(FOnChange) then
+    FOnChange(Self);
+end;
+
+procedure TVA508ImageListLabeler.Loaded;
+begin
+  inherited;
+  FStartup := FALSE;
+  Application.ProcessMessages;
+  SaveChanges(FALSE);
+end;
+
+procedure TVA508ImageListLabeler.SaveChanges(Reregister: boolean);
+var
+  i, idx: integer;
+  Item: TVA508ImageListComponent;
+  Comp: TWinControl;
+  NewList: TList;
+  reg: boolean;
+begin
+  if FStartup or (csDesigning in ComponentState) or (not ScreenReaderSystemActive) then exit;
+  if (FComponents.Count = 0) and (FOldComponentList.Count = 0) then exit;
+  NewList := TList.Create;
+  try
+    for i := 0 to FComponents.Count - 1 do
+    begin
+      Item := FComponents.Items[i];
+      if assigned(Item.Component) then
+      begin
+        NewList.Add(Item.Component);
+        idx := FOldComponentList.IndexOf(Item.Component);
+        if idx < 0 then
+          reg := TRUE
+        else
+        begin
+          FOldComponentList.Delete(idx);
+          reg := Reregister;
+        end;
+        if reg then
+          RegisterComponentImageListQueryEvent(Item.Component, Item.ImageListTypes, ImageIndexQuery);
+      end;
+    end;
+    for i := 0 to FOldComponentList.Count-1 do
+    begin
+      Comp := TWinControl(FOldComponentList[i]);
+      UnregisterComponentImageListQueryEvent(Comp, ImageIndexQuery);
+    end;
+  finally
+    FOldComponentList.Free;
+    FOldComponentList := NewList;
+  end;
+end;
+
+procedure TVA508ImageListLabeler.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited;
+  if (AComponent = FImageList) and (Operation = opRemove) then
+    SetImageList(nil);
+end;
+
+procedure TVA508ImageListLabeler.SetImageList(const Value: TCustomImageList);
+var
+  i,idx: integer;
+  list: string;
+begin
+  if FImageListChanging then exit;
+  if assigned(FRemoteLabeler) then 
+  begin
+    FImageList := nil;
+    exit;
+  end;
+  if FImageList <> Value then
+  begin
+    FImageListChanging := TRUE;
+    try
+      if assigned(FImageList) then
+      begin
+        FImageList.UnRegisterChanges(FChangeLink);
+        FImageList.RemoveFreeNotification(Self);
+      end;
+      FImageList := Value;
+      if assigned(FImageList) then
+      begin
+        FImageList.FreeNotification(Self);
+        FImageList.RegisterChanges(FChangeLink);
+        if FImageList.count > 0 then
+        begin
+          list := StringOfChar('x',FImageList.Count);
+          for i := 0 to FItems.Count - 1 do
+          begin
+            idx := FItems[i].ImageIndex + 1;
+            if idx > 0 then
+              list[idx] := ' ';
+          end;
+          for i := 0 to FImageList.Count - 1 do
+          begin
+            if list[i+1] = 'x' then
+              FItems.Add.ImageIndex := i;
+          end;
+        end;
+      end;
+      if assigned(FOnChange) then
+        FOnChange(Self);
+    finally
+      FImageListChanging := FALSE;
+    end;
+  end;
+end;
+
+procedure TVA508ImageListLabeler.SetRemoteLabeler(const Value: TVA508ImageListLabeler);
+begin
+  if (FRemoteLabeler <> Value) then
+  begin
+    if assigned(Value) then
+    begin
+      FItems.Clear;
+      SetImageList(nil);
+    end;
+    FRemoteLabeler := Value;
+  end;
+end;
+
+{ TVA508ImageListItems }
+
+function TVA508ImageListLabels.Add: TVA508ImageListLabel;
+begin
+  Result := TVA508ImageListLabel(inherited Add);
+end;
+
+constructor TVA508ImageListLabels.Create(Owner: TVA508ImageListLabeler);
+begin
+  inherited Create(TVA508ImageListLabel);
+  FImageData := TStringList.Create;
+  FOverlayData := TStringList.Create;
+  FOwner := Owner;
+  FColumns := TStringList.Create;
+  FColumns.Add('Image');
+  FColumns.Add('ImageIndex');
+  FColumns.Add('OverlayIndex');  
+  FColumns.Add('Caption');
+end;
+
+destructor TVA508ImageListLabels.Destroy;
+begin
+  Clear;
+  FreeAndNil(FColumns);
+  FreeAndNil(FImageData);
+  FreeAndNil(FOverlayData);
+  inherited;
+end;
+
+function TVA508ImageListLabels.GetAttr(Index: Integer): string;
+begin
+  Result := FColumns[Index];
+end;
+
+function TVA508ImageListLabels.GetAttrCount: Integer;
+begin
+  Result := FColumns.Count;
+end;
+
+function TVA508ImageListLabels.GetImageData: TStrings;
+var
+  i: integer;
+  item: TVA508ImageListLabel;
+begin
+  if (FImageData.Count = 0) and (Count > 0) then
+  begin
+    for i := 0 to Count-1 do
+    begin
+      item := Items[i];
+      while FImageData.Count <= item.ImageIndex do
+        FImageData.Add('');
+      FImageData[item.ImageIndex] := item.Caption;
+    end;
+  end;
+  Result := FImageData;
+end;
+
+function TVA508ImageListLabels.GetItem(Index: Integer): TVA508ImageListLabel;
+begin
+  Result := TVA508ImageListLabel(inherited GetItem(Index));
+end;
+
+function TVA508ImageListLabels.GetItemAttr(Index, ItemIndex: Integer): string;
+begin
+  case Index of
+    0:  Result := ' '; // needs something on index 0 or it doesn't display anything on entire line
+    1:  if GetItem(ItemIndex).ImageIndex < 0 then
+          Result := ' '
+        else
+          Result := IntToStr(GetItem(ItemIndex).ImageIndex);
+    2:  begin
+          if (GetItem(ItemIndex).OverlayIndex < 0) then
+            Result := ' '
+          else
+            Result := IntToStr(GetItem(ItemIndex).OverlayIndex);
+        end;
+    3:  Result := GetItem(ItemIndex).Caption;
+    else  Result := '';
+  end;
+end;
+
+function TVA508ImageListLabels.GetOverlayData: TStrings;
+var
+  i: integer;
+  item: TVA508ImageListLabel;
+begin
+  if FBuildOverlayData then
+  begin
+    FBuildOverlayData := FALSE;
+    if (Count > 0) then
+    begin
+      for i := 0 to Count-1 do
+      begin
+        item := Items[i];
+        if item.OverlayIndex >= 0 then
+        begin
+          while FOverlayData.Count <= item.OverlayIndex do
+            FOverlayData.Add('');
+          FOverlayData[item.OverlayIndex] := item.Caption;
+        end;
+      end;
+    end;
+  end;
+  Result := FOverlayData;
+end;
+
+function TVA508ImageListLabels.GetOwner: TPersistent;
+begin
+  Result := FOwner;
+end;
+
+procedure TVA508ImageListLabels.Notify(Item: TCollectionItem;
+  Action: TCollectionNotification);
+begin
+  inherited;
+  ResetData;
+end;
+
+procedure TVA508ImageListLabels.ResetData;
+begin
+  FImageData.Clear;
+  FOverlayData.Clear;
+  FBuildOverlayData := TRUE;
+end;
+
+procedure TVA508ImageListLabels.SetItem(Index: Integer; Value: TVA508ImageListLabel);
+begin
+  inherited SetItem(Index, Value);
+end;
+
+procedure TVA508ImageListLabels.Update(Item: TCollectionItem);
+begin
+  inherited;
+  ResetData;
+end;
+
+{ TVA508GraphicLabel }
+
+procedure TVA508ImageListLabel.Assign(Source: TPersistent);
+var
+  item: TVA508ImageListLabel;
+begin
+  if Source is TVA508ImageListLabel then
+  begin
+    item := TVA508ImageListLabel(Source);
+    SetImageIndex(item.ImageIndex);
+    FCaption := item.Caption;
+  end
+  else
+    inherited Assign(Source);
+end;
+
+procedure TVA508ImageListLabel.Changed;
+begin
+  labeler.ItemChanged;
+end;
+
+constructor TVA508ImageListLabel.Create(Collection: TCollection);
+begin
+  inherited Create(Collection);
+  FImageIndex := -1;
+  FOverlayIndex := -1;
+end;
+
+destructor TVA508ImageListLabel.Destroy;
+begin
+  inherited;
+end;
+
+function TVA508ImageListLabel.Labeler: TVA508ImageListLabeler;
+begin
+  Result := TVA508ImageListLabeler(TVA508ImageListLabels(GetOwner).GetOwner);
+end;
+
+procedure TVA508ImageListLabel.Refresh;
+begin
+  SetImageIndex(FImageIndex);
+end;
+
+procedure TVA508ImageListLabel.SetCaption(const Value: string);
+begin
+  if (FCaption <> Value) then
+  begin
+    FCaption := Value;
+    TVA508ImageListLabels(GetOwner).Update(Self);
+  end;
+end;
+
+procedure TVA508ImageListLabel.SetImageIndex(const Value: integer);
+var
+  before: integer;
+begin
+  if csReading in labeler.ComponentState then
+    FImageIndex := Value
+  else
+  begin
+    before := FImageIndex;
+    if not assigned(labeler.ImageList) then
+      FImageIndex := -1
+    else
+    if (Value >= 0) and (Value < labeler.ImageList.Count) then
+      FImageIndex := Value
+    else
+      FImageIndex := -1;
+    if FImageIndex <> before then
+    begin
+      Changed;
+      TVA508ImageListLabels(GetOwner).Update(Self);
+    end;
+  end;
+
+end;
+
+procedure TVA508ImageListLabel.SetOverlayIndex(const Value: integer);
+begin
+  if (FOverlayIndex <> Value) and (Value >= 0) and (Value < 16) then
+  begin
+    FOverlayIndex := Value;
+  end;
+end;
+
+{ TVA508ImageListComponents }
+
+function TVA508ImageListComponents.Add: TVA508ImageListComponent;
+begin
+  Result := TVA508ImageListComponent(inherited Add);
+end;
+
+constructor TVA508ImageListComponents.Create(Owner: TVA508ImageListLabeler);
+begin
+  inherited Create(TVA508ImageListComponent);
+  FOwner := Owner;
+end;
+
+destructor TVA508ImageListComponents.Destroy;
+begin
+  Clear;
+  inherited;
+end;
+
+function TVA508ImageListComponents.GetItem(
+  Index: Integer): TVA508ImageListComponent;
+begin
+  Result := TVA508ImageListComponent(inherited GetItem(Index));
+end;
+
+function TVA508ImageListComponents.GetOwner: TPersistent;
+begin
+  Result := FOwner;
+end;
+
+procedure TVA508ImageListComponents.Notify(Item: TCollectionItem;
+  Action: TCollectionNotification);
+begin
+  inherited;
+  FOwner.SaveChanges(FALSE);
+end;
+
+procedure TVA508ImageListComponents.SetItem(Index: Integer;
+  Value: TVA508ImageListComponent);
+begin
+  inherited SetItem(Index, Value);
+end;
+
+{ TVA508ImageListComponent }
+
+procedure TVA508ImageListComponent.Assign(Source: TPersistent);
+var
+  comp: TVA508ImageListComponent;
+begin
+  if Source is TVA508ImageListComponent then
+  begin
+    comp := TVA508ImageListComponent(Source);
+    comp.Component := FComponent;
+  end
+  else
+    inherited Assign(Source);
+end;
+
+procedure TVA508ImageListComponent.ComponentNotifyEvent(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  if (Operation = opRemove) and assigned(AComponent) and (AComponent = FComponent) then
+    SetComponent(nil);
+end;
+
+destructor TVA508ImageListComponent.Destroy;
+begin
+  SetComponent(nil);
+  if assigned(FComponentNotifier) then
+    FreeAndNil(FComponentNotifier);
+  inherited;
+end;
+
+function TVA508ImageListComponent.GetDisplayName: string;
+begin
+  if assigned(FComponent) and (length(FComponent.Name) > 0) then
+    Result := FComponent.Name + ' (' + FComponent.ClassName + ')'
+  else
+    Result := inherited GetDisplayName;
+end;
+
+type
+  TExposedTreeView = class(TCustomTreeView);
+  TExposedListView = class(TCustomListView);
+
+function TVA508ImageListComponent.ImageListTypes: TVA508ImageListTypes;
+var
+  list: TCustomImageList;
+begin
+  Result := [];
+  list := Labeler.ImageList;
+  if (not assigned(list)) and assigned(Labeler.FRemoteLabeler) then
+    list := Labeler.FRemoteLabeler.ImageList;
+  if (not assigned(list)) then exit;
+  if FComponent is TCustomTreeView then
+  begin
+    with TExposedTreeView(FComponent) do
+    begin
+      if list = Images then
+        Result := Result + [iltImages, iltOverlayImages];
+      if list = StateImages then
+        Include(Result, iltStateImages);
+    end;
+  end
+  else if FComponent is TCustomListView then
+  begin
+    with TExposedListView(FComponent) do
+    begin
+      if list = LargeImages then
+        Result := Result + [iltLargeImages, iltOverlayImages];
+      if list = SmallImages then
+        Result := Result + [iltSmallImages, iltOverlayImages];
+      if list = StateImages then
+        Include(Result, iltStateImages);
+    end;
+  end;
+end;
+
+function TVA508ImageListComponent.Labeler: TVA508ImageListLabeler;
+begin
+  Result := TVA508ImageListLabeler(TVA508ImageListLabels(GetOwner).GetOwner);
+end;
+
+procedure TVA508ImageListComponent.SetComponent(const Value: TWinControl);
+var
+  i: integer;
+  found: boolean;
+begin
+  if FComponent <> Value then
+  begin
+    if assigned(Value) then
+    begin
+      Found := false;
+      for i := low(VA508ImageListLabelerClasses) to high(VA508ImageListLabelerClasses) do
+      begin
+        if Value is VA508ImageListLabelerClasses[i] then
+        begin
+          Found := true;
+          break;
+        end;
+      end;
+      if not found then
+        raise EVA508AccessibilityException.Create('Invalid component class used in ' + TVA508ImageListComponent.ClassName);
+    end;
+    if assigned(FComponentNotifier) and assigned(FComponent) then
+      FComponentNotifier.RemoveFreeNotification(FComponent);
+    if assigned(Value) then
+    begin
+      if not assigned(FComponentNotifier) then
+        FComponentNotifier := TVANotificationEventComponent.NotifyCreate(nil, ComponentNotifyEvent);
+      FComponentNotifier.FreeNotification(Value);
+    end;
+    FComponent := Value;
+    Labeler.SaveChanges(FALSE);
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabelerPE.dfm
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabelerPE.dfm	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabelerPE.dfm	(revision 1676)
@@ -0,0 +1,983 @@
+object frmImageListEditor: TfrmImageListEditor
+  Left = 187
+  Top = 54
+  Caption = 'Graphic Labels'
+  ClientHeight = 349
+  ClientWidth = 426
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poDesigned
+  PixelsPerInch = 96
+  TextHeight = 13
+  object imgTemp16: TImageList
+    Masked = False
+    Left = 64
+    Top = 56
+    Bitmap = {
+      494C010101000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000001000000001002000000000000010
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000100000000100010000000000800000000000000000000000
+      000000000000000000000000FFFFFF00FFFF000000000000FFFF000000000000
+      FFFF000000000000FFFF000000000000FFFF000000000000FFFF000000000000
+      FFFF000000000000FFFF000000000000FFFF000000000000FFFF000000000000
+      FFFF000000000000FFFF000000000000FFFF000000000000FFFF000000000000
+      FFFF000000000000FFFF00000000000000000000000000000000000000000000
+      000000000000}
+  end
+  object imgTemp24: TImageList
+    Height = 24
+    Masked = False
+    Width = 24
+    Left = 120
+    Top = 56
+    Bitmap = {
+      494C010101000400040018001800FFFFFFFFFE00FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000600000001800000001002000000000000024
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000}
+  end
+  object imgTemp32: TImageList
+    Height = 32
+    Masked = False
+    Width = 32
+    Left = 176
+    Top = 56
+    Bitmap = {
+      494C010101000400040020002000FFFFFFFFFE00FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000800000002000000001002000000000000040
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000}
+  end
+end
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabelerPE.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabelerPE.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ImageListLabelerPE.pas	(revision 1676)
@@ -0,0 +1,402 @@
+unit VA508ImageListLabelerPE;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, ExtCtrls, ColnEdit, ToolWnds, ImgList, DesignIntf, TypInfo,
+  DesignEditors, VA508ImageListLabeler, VA508MSAASupport, ToolsAPI, StdCtrls, Buttons, Menus;
+
+const
+  VA508_CUSTOM_REDRAW_IMAGES = WM_USER + 123;
+
+type
+  TVA508ImageListReceiver = procedure(lvItem: TListItem; item: TVA508ImageListLabel) of object;
+
+  TfrmImageListEditor = class(TCollectionEditor)
+    imgTemp16: TImageList;
+    imgTemp24: TImageList;
+    imgTemp32: TImageList;
+  private
+    FRedrawImages: boolean;
+    FSize: integer;
+    FBitMap1: TBitMap;
+    FBitMap2: TBitMap;
+    FBMRect: TRect;
+    FOldOnChange: TNotifyEvent;
+    FOnChangeRedirected: boolean;
+    procedure ImageDataChanged(Sender: TObject);
+    procedure IterateItems(Receiver: TVA508ImageListReceiver);
+    procedure RedrawImages(var Msg); message VA508_CUSTOM_REDRAW_IMAGES;
+    procedure GetSize;
+    procedure UpdateImages(lvItem: TListItem; item: TVA508ImageListLabel);
+    function GetImageList: TImageList;
+  protected
+    procedure ItemChange(Sender: TObject; Item: TListItem);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+  end;
+
+  TVA508ImageListItemsProperty = class(TCollectionProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+    function GetEditorClass: TCollectionEditorClass; override;
+  end;
+
+  TVA508ImageListComponentEditor = class(TComponentEditor)
+  public
+    procedure Edit; override;
+    procedure ExecuteVerb(Index: Integer); override;
+    function GetVerb(Index: Integer): string; override;
+    function GetVerbCount: Integer; override;
+  end;
+
+  TVA508ImageListComponentProperty = class(TComponentProperty)
+  private
+    FProc: TGetStrProc;
+    procedure FilterValues(const S: string);
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+    function GetValue: string; override;
+    procedure SetValue(const Value: string); override;
+  end;
+
+  TVA508LabelerImageListProperty = class(TComponentProperty)
+  public
+    function GetAttributes: TPropertyAttributes; override;
+  end;
+
+  TVA508LabelerRemoteLabelerProperty = class(TComponentProperty)
+  private
+    FProc: TGetStrProc;
+    procedure FilterValues(const S: string);
+  public
+    procedure GetValues(Proc: TGetStrProc); override;
+  end;
+
+procedure Register;
+
+implementation
+
+{$R *.dfm}
+
+procedure Register;
+begin
+  RegisterPropertyEditor(TypeInfo(TVA508ImageListLabels), TVA508ImageListLabeler, 'Labels', TVA508ImageListItemsProperty);
+  RegisterPropertyEditor(TypeInfo(TVA508ImageListLabeler), TVA508ImageListLabeler, 'RemoteLabeler', TVA508LabelerRemoteLabelerProperty);
+  RegisterPropertyEditor(TypeInfo(TCustomImageList), TVA508ImageListLabeler, 'ImageList', TVA508LabelerImageListProperty);
+  RegisterPropertyEditor(TypeInfo(TComponent), TVA508ImageListComponent, 'Component', TVA508ImageListComponentProperty);
+  RegisterComponentEditor(TVA508ImageListLabeler, TVA508ImageListComponentEditor);
+end;
+
+const
+  GSIZE_SMALL = 16;
+  GSIZE_MED   = 24;
+  GSIZE_LARGE = 32;
+
+type
+  TVA508AccessImageListLabeler = class(TVA508ImageListLabeler);
+
+
+constructor TfrmImageListEditor.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+// this works because refresh of images in parent class destroys and rebuilds list
+  ListView1.OnInsert := ItemChange;
+  ListView1.OnDeletion := ItemChange;
+end;
+
+{ TVA508GraphicsProperty }
+
+function TVA508ImageListItemsProperty.GetAttributes: TPropertyAttributes;
+var
+  comp: TVA508ImageListLabeler;
+begin
+  comp := TVA508ImageListLabeler(GetComponent(0));
+  if assigned(comp) and assigned(comp.RemoteLabeler) then
+    Result := [paReadOnly, paDisplayReadOnly, paAutoUpdate]
+  else
+    Result := inherited GetAttributes + [paAutoUpdate];
+end;
+
+function TVA508ImageListItemsProperty.GetEditorClass: TCollectionEditorClass;
+begin
+  Result := TfrmImageListEditor;
+end;
+
+destructor TfrmImageListEditor.Destroy;
+begin
+  if FOnChangeRedirected then
+  begin
+    TVA508AccessImageListLabeler(Component).OnChange := FOldOnChange;
+    FOnChangeRedirected := FALSE;
+  end;
+  inherited;
+end;
+
+procedure TfrmImageListEditor.ImageDataChanged(Sender: TObject);
+begin
+  ItemChange(Sender, nil);
+end;
+
+procedure TfrmImageListEditor.ItemChange(Sender: TObject;
+  Item: TListItem);
+var
+  Msg: TMsg;
+begin
+  FRedrawImages := TRUE;
+  if not PeekMessage(Msg, Handle, VA508_CUSTOM_REDRAW_IMAGES, VA508_CUSTOM_REDRAW_IMAGES, PM_NOREMOVE) then
+    PostMessage(Handle, VA508_CUSTOM_REDRAW_IMAGES, 0, 0);
+end;
+
+procedure TfrmImageListEditor.IterateItems(
+  Receiver: TVA508ImageListReceiver);
+var
+  i: integer;
+  item: TVA508ImageListLabel;
+  lvItem: TListItem;
+
+begin
+  if assigned(Receiver) then
+  begin
+    ListView1.items.BeginUpdate;
+    try
+      for i := 0 to ListView1.Items.Count - 1 do
+      begin
+        lvItem := ListView1.items[i];
+        item := TVA508ImageListLabels(Collection).Items[i];
+        if assigned(item) then
+          Receiver(lvItem, item);
+      end;
+    finally
+     ListView1.items.EndUpdate;
+    end;
+  end;
+end;
+
+function TfrmImageListEditor.GetImageList: TImageList;
+begin
+  case FSize of
+    GSIZE_SMALL: Result := imgTemp16;
+    GSIZE_MED:   Result := imgTemp24;
+    GSIZE_LARGE: Result := imgTemp32;
+    else         Result := nil;
+  end;
+end;
+
+procedure TfrmImageListEditor.GetSize;
+var
+  imgSize: integer;
+  imageList: TCustomImageList;
+begin
+  imageList := TVA508AccessImageListLabeler(Component).ImageList;
+  if assigned(ImageList) then
+  begin
+    imgSize := ImageList.Height;
+    if imgSize < ImageList.Width then
+      imgSize := ImageList.Width;
+  end
+  else
+    imgSize := 0;
+  if FSize < imgSize then
+    FSize := imgSize;
+end;
+
+procedure TfrmImageListEditor.RedrawImages(var Msg);
+var
+  i, BeforeSize: integer;
+  imgList: TImageList;
+
+begin
+  if FRedrawImages then
+  begin
+    FRedrawImages := FALSE;
+    ListView1.items.BeginUpdate;
+    try
+      if not FOnChangeRedirected then
+      begin
+        FOldOnChange := TVA508AccessImageListLabeler(Component).OnChange;
+        TVA508AccessImageListLabeler(Component).OnChange := ImageDataChanged;
+        FOnChangeRedirected := TRUE;
+      end;
+
+      BeforeSize := FSize;
+      FSize := GSIZE_SMALL;
+
+      GetSize;
+      if FSize > GSIZE_MED then
+        FSize := GSIZE_LARGE
+      else if FSize > GSIZE_SMALL then
+        FSize := GSIZE_MED
+      else
+        FSize := GSIZE_SMALL;
+
+      if FSize <> BeforeSize then
+        ListView1.Columns[0].Width := FSize * 3;
+
+      imgList := GetImageList;
+      for I := imgList.Count - 1 downto 1 do
+        imgList.Delete(i);
+      ListView1.SmallImages := imgList;
+      ListView1.StateImages := imgList;
+
+      FBitmap1 := TBitMap.Create;
+      FBitmap2 := TBitMap.Create;
+      try
+        FBitmap1.Height := imgList.Height;
+        FBitmap1.Width := imgList.Width;
+        FBMRect.Left := 0;
+        FBMRect.Top := 0;
+        FBMRect.Right := FBitMap1.Width;
+        FBMRect.Bottom := FBitMap1.Height;
+
+        IterateItems(UpdateImages);
+      finally
+        FreeAndNil(FBitmap1);
+        FreeAndNil(FBitmap1);
+      end;
+    finally
+      ListView1.items.EndUpdate;
+    end;
+  end;
+end;
+
+procedure TfrmImageListEditor.UpdateImages(lvItem: TListItem;
+  item: TVA508ImageListLabel);
+var
+  imgLst: TImageList;
+  stretch: boolean;
+  ImageList: TCustomImageList;
+
+begin
+  ImageList := TVA508AccessImageListLabeler(Component).ImageList;
+  if assigned(ImageList) and (item.ImageIndex >= 0) then
+  begin
+    imgLst := GetImageList;
+    stretch := ((imgLst.Height <> ImageList.Height) or
+                (imgLst.Width  <> ImageList.Width));
+    if stretch then
+    begin
+      ImageList.GetBitmap(item.ImageIndex, FBitMap2);
+      FBitmap1.Canvas.StretchDraw(FBMRect, FBitMap2);
+    end
+    else
+      ImageList.GetBitmap(item.ImageIndex, FBitMap1);
+
+    imgLst.Add(FBitMap1, nil);
+    lvitem.ImageIndex := imglst.Count-1;
+    FBitMap1.Canvas.FillRect(FBMRect);
+    if stretch then
+      FBitMap2.Canvas.FillRect(FBMRect);
+  end
+  else
+    lvitem.ImageIndex := 0;
+end;
+
+{ TVA508ImageListComponentEditor }
+
+procedure TVA508ImageListComponentEditor.Edit;
+begin
+  ShowCollectionEditorClass(Designer, TfrmImageListEditor, Component,
+      TVA508ImageListLabeler(Component).Labels, 'Images');
+end;
+
+procedure TVA508ImageListComponentEditor.ExecuteVerb(Index: Integer);
+begin
+  if Index = 0 then Edit
+  else inherited ExecuteVerb(Index);
+end;
+
+function TVA508ImageListComponentEditor.GetVerb(Index: Integer): string;
+begin
+  if Index = 0 then
+    Result := 'Edit Image List Labels...'
+  else
+    Result := inherited GetVerb(Index);
+end;
+
+function TVA508ImageListComponentEditor.GetVerbCount: Integer;
+begin
+  Result := 1;
+end;
+
+
+{ TVA508ImageListComponentProperty }
+
+procedure TVA508ImageListComponentProperty.FilterValues(const S: string);
+var
+  comp: TComponent;
+  i: integer;
+
+begin
+  comp := Designer.GetComponent(S);
+  if assigned(comp) then
+  begin
+    for i := low(VA508ImageListLabelerClasses) to high(VA508ImageListLabelerClasses) do
+    begin
+      if comp is VA508ImageListLabelerClasses[i] then
+        FProc(S + ' (' + comp.ClassName + ')');
+    end;
+  end;
+end;
+
+function TVA508ImageListComponentProperty.GetValue: string;
+var
+  comp: TComponent;
+
+begin
+  Result := inherited GetValue;
+  comp := Designer.GetComponent(Result);
+  if assigned(comp) then
+    Result := Result + ' (' + comp.ClassName + ')';
+end;
+
+procedure TVA508ImageListComponentProperty.GetValues(Proc: TGetStrProc);
+begin
+  FProc := Proc;
+  Designer.GetComponentNames(GetTypeData(GetPropType), FilterValues);
+end;
+
+procedure TVA508ImageListComponentProperty.SetValue(const Value: string);
+var
+  i: integer;
+  data: string;
+begin
+  data := Value;
+  i := pos(' (',data);
+  if i > 0 then
+    delete(data, i, MaxInt);
+  inherited SetValue(Data);
+end;
+
+
+{ TVA508LabelerImageListProperty }
+
+function TVA508LabelerImageListProperty.GetAttributes: TPropertyAttributes;
+var
+  comp: TVA508ImageListLabeler;
+begin
+  comp := TVA508ImageListLabeler(GetComponent(0));
+  if assigned(comp) and (not assigned(comp.RemoteLabeler)) then
+    Result := inherited GetAttributes
+  else
+    Result := [paReadOnly, paDisplayReadOnly, paAutoUpdate];
+end;
+
+
+{ TVA508LabelerRemoteLabelerProperty }
+
+procedure TVA508LabelerRemoteLabelerProperty.FilterValues(const S: string);
+begin
+  if pos('->', S) > 0 then
+    FProc(S);
+end;
+
+procedure TVA508LabelerRemoteLabelerProperty.GetValues(Proc: TGetStrProc);
+begin
+  FProc := Proc;
+  Designer.GetComponentNames(GetTypeData(GetPropType), FilterValues);
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508MSAASupport.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508MSAASupport.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508MSAASupport.pas	(revision 1676)
@@ -0,0 +1,794 @@
+unit VA508MSAASupport;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Classes, Controls, ComObj, ActiveX, oleacc2, MSAAConstants,
+  ImgList, VAClasses, Graphics, ComCtrls, CommCtrl, Contnrs, VA508AccessibilityConst;
+
+type
+  TVA508ImageListType = (iltImages, iltLargeImages, iltOverlayImages, iltSmallImages, iltStateImages);
+  TVA508ImageListTypes = set of TVA508ImageListType;
+
+  TVA508OnImageIndexQueryEvent = procedure(Sender: TObject; ImageIndex: integer;
+                                    ImageType: TVA508ImageListType; var ImageText: string) of object;
+
+const
+  VA508ImageListLabelerClasses: array[0..1] of TClass = (TCustomTreeView, TCustomListView);
+
+procedure RegisterComponentImageListQueryEvent(Component: TWinControl;
+                  ImageListTypes: TVA508ImageListTypes; Event: TVA508OnImageIndexQueryEvent);
+
+procedure UnregisterComponentImageListQueryEvent(Component: TWinControl;
+                                                        Event: TVA508OnImageIndexQueryEvent);
+
+procedure RegisterMSAAComponentQueryProc(Component: TWinControl; Proc: TVA508QueryProc);
+procedure UnregisterMSAAComponentQueryProc(Component: TWinControl; Proc: TVA508QueryProc);
+procedure RegisterMSAAComponentListQueryProc(Component: TWinControl; Proc: TVA508ListQueryProc);
+procedure UnregisterMSAAComponentListQueryProc(Component: TWinControl; Proc: TVA508ListQueryProc);
+
+implementation
+
+var
+  uShutDown: boolean = FALSE;
+  Events: TInterfaceList = nil;
+  AccPropServices: IAccPropServices = nil;
+  NamePropIDs: array[0..0] of TGUID;
+  uNotifier: TVANotificationEventComponent;
+
+type
+  TServerType = (stImageList, stList, stNormal);
+  TServerTypes = set of TServerType;
+
+  TImageEventData = class
+    ImageListTypes: TVA508ImageListTypes;
+    Event: TVA508OnImageIndexQueryEvent;
+  end;
+
+  TListProcData = class
+    Proc: TVA508ListQueryProc;
+  end;
+
+  TProcData = class
+    Proc: TVA508QueryProc;
+  end;
+
+  IMSAAServer = interface
+    function GetComponent: TWinControl;
+    procedure AddImageEvent(ImageListTypes: TVA508ImageListTypes; Event: TVA508OnImageIndexQueryEvent);
+    procedure RemoveImageEvent(ImageListTypes: TVA508ImageListTypes; Event: TVA508OnImageIndexQueryEvent);
+    procedure AddListProc(Proc: TVA508ListQueryProc);
+    procedure RemoveListProc(Proc: TVA508ListQueryProc);
+    procedure AddProc(Proc: TVA508QueryProc);
+    procedure RemoveProc(Proc: TVA508QueryProc);
+    procedure AssignServerType(AServerType: TServerType);
+    function EventCount: integer;
+  end;
+
+  TMSAAServer = class(TInterfacedObject, IAccPropServer, IMSAAServer)
+  private
+    FServerTypes: TServerTypes;
+    FAttached: boolean;
+    FEventData: TObjectList;
+    FComponent: TWinControl;
+    FOldWndProc: TWndMethod;
+    function ImageEventIndex(Event: TVA508OnImageIndexQueryEvent): integer;
+    function ListProcIndex(Proc: TVA508ListQueryProc): integer;
+    function ProcIndex(Proc: TVA508QueryProc): integer;
+    procedure Attach;
+    procedure Detatch;
+    procedure Hook;
+    procedure UnHook;
+    procedure AssignServerType(AServerType: TServerType);
+    procedure UnassignServerType(AServerType: TServerType);
+  protected
+    procedure MSAAWindowProc(var Message: TMessage);
+  public
+    constructor Create(AComponent: TWinControl);
+    destructor Destroy; override;
+    class procedure ValidateServerType(AComponent: TWinControl; AServerType: TServerType);
+    function GetPropValue(const pIDString: PByte; dwIDStringLen: LongWord; idProp: MSAAPROPID;
+      out pvarValue: OleVariant; out pfHasProp: Integer): HResult; stdcall;
+    function GetComponent: TWinControl;
+    procedure AddImageEvent(ImageListTypes: TVA508ImageListTypes; Event: TVA508OnImageIndexQueryEvent);
+    procedure RemoveImageEvent(ImageListTypes: TVA508ImageListTypes; Event: TVA508OnImageIndexQueryEvent);
+    procedure AddListProc(Proc: TVA508ListQueryProc);
+    procedure RemoveListProc(Proc: TVA508ListQueryProc);
+    procedure AddProc(Proc: TVA508QueryProc);
+    procedure RemoveProc(Proc: TVA508QueryProc);
+    function EventCount: integer;
+  end;
+
+  TExposedTreeView = class(TCustomTreeView);
+  TExposedListView = class(TCustomListView);
+
+function FindServer(Component: TWinControl; var index: integer): IMSAAServer; forward;
+
+procedure NotifyEvent(Self: TObject; AComponent: TComponent; Operation: TOperation);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if assigned(Events) and (Operation = opRemove) and (AComponent is TWinControl) then
+  begin
+    server := FindServer(TWinControl(AComponent), index);
+    try
+      if assigned(server) then
+        Events.Delete(index);
+    finally
+      server := nil;
+    end;
+  end;
+end;
+
+var
+  AccServicesCount: integer = 0;
+
+procedure IncAccServices;
+var
+  m: TVANotifyEvent;
+begin
+  if AccServicesCount = 0 then
+  begin
+    AccPropServices := CoCAccPropServices.Create;
+    NamePropIDs[0] := PROPID_ACC_NAME;
+    TMethod(m).Code := @NotifyEvent;
+    TMethod(m).Data := nil;
+    uNotifier := TVANotificationEventComponent.NotifyCreate(nil, m);
+  end;
+  inc(AccServicesCount);
+end;
+
+procedure DecAccServices;
+begin
+  dec(AccServicesCount);
+  if AccServicesCount = 0 then
+  begin
+    FreeAndNil(uNotifier);
+    AccPropServices := nil;
+  end;
+end;
+  
+procedure Cleanup;
+begin
+  uShutDown := TRUE;
+  if assigned(Events) then
+  begin
+    Events := nil;
+    DecAccServices;
+  end;
+end;
+
+function FindServer(Component: TWinControl; var index: integer): IMSAAServer;
+var
+  i: integer;
+
+begin
+  if not assigned(Events) then
+  begin
+    Events := TInterfaceList.Create;
+    IncAccServices;
+  end;
+  for I := 0 to Events.Count - 1 do
+  begin
+    Result := IMSAAServer(Events[i]);
+    index := i;
+    if Result.GetComponent = Component then exit;
+  end;
+  Result := nil;
+  index := -1;
+end;
+
+procedure RegisterComponentImageListQueryEvent(Component: TWinControl;
+                  ImageListTypes: TVA508ImageListTypes; Event: TVA508OnImageIndexQueryEvent);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if uShutDown then exit;
+  if not assigned(Component) then exit;
+  TMSAAServer.ValidateServerType(Component,stImageList);
+  server := FindServer(Component, index);
+  try
+    if not assigned(server) then
+    begin
+      server := TMSAAServer.Create(Component);
+      Events.Add(server);
+      uNotifier.FreeNotification(Component);
+    end;
+    server.AddImageEvent(ImageListTypes, Event);
+  finally
+    server := nil;
+  end;
+end;
+
+procedure UnregisterComponentImageListQueryEvent(Component: TWinControl;
+                                                        Event: TVA508OnImageIndexQueryEvent);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if uShutDown then exit;
+  if not assigned(Component) then exit;
+  server := FindServer(Component, index);
+  try
+    if assigned(server) then
+    begin
+      uNotifier.RemoveFreeNotification(Component);
+      server.RemoveImageEvent([], Event);
+      if server.EventCount = 0 then
+        Events.Delete(index);
+    end;
+  finally
+    server := nil;
+  end;
+end;
+
+procedure RegisterMSAAComponentQueryProc(Component: TWinControl; Proc: TVA508QueryProc);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if uShutDown then exit;
+  if not assigned(Component) then exit;
+  TMSAAServer.ValidateServerType(Component, stNormal);
+  server := FindServer(Component, index);
+  try
+    if not assigned(server) then
+    begin
+      server := TMSAAServer.Create(Component);
+      Events.Add(server);
+      uNotifier.FreeNotification(Component);
+    end;
+    server.AddProc(Proc);
+  finally
+    server := nil;
+  end;
+end;
+
+procedure UnregisterMSAAComponentQueryProc(Component: TWinControl; Proc: TVA508QueryProc);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if uShutDown then exit;
+  if not assigned(Component) then exit;
+  server := FindServer(Component, index);
+  try
+    if assigned(server) then
+    begin
+      uNotifier.RemoveFreeNotification(Component);
+      server.RemoveProc(Proc);
+      if server.EventCount = 0 then
+        Events.Delete(index);
+    end;
+  finally
+    server := nil;
+  end;
+end;
+
+procedure RegisterMSAAComponentListQueryProc(Component: TWinControl; Proc: TVA508ListQueryProc);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if uShutDown then exit;
+  if not assigned(Component) then exit;
+  TMSAAServer.ValidateServerType(Component, stList);
+  server := FindServer(Component, index);
+  try
+    if not assigned(server) then
+    begin
+      server := TMSAAServer.Create(Component);
+      Events.Add(server);
+      uNotifier.FreeNotification(Component);
+    end;
+    server.AddListProc(Proc);
+  finally
+    server := nil;
+  end;
+end;
+
+procedure UnregisterMSAAComponentListQueryProc(Component: TWinControl; Proc: TVA508ListQueryProc);
+var
+  server: IMSAAServer;
+  index: integer;
+begin
+  if uShutDown then exit;
+  if not assigned(Component) then exit;
+  server := FindServer(Component, index);
+  try
+    if assigned(server) then
+    begin
+      uNotifier.RemoveFreeNotification(Component);
+      server.RemoveListProc(Proc);
+      if server.EventCount = 0 then
+        Events.Delete(index);
+    end;
+  finally
+    server := nil;
+  end;
+end;
+
+{ TMSAAImageListServer }
+
+procedure TMSAAServer.AddImageEvent(ImageListTypes: TVA508ImageListTypes;
+  Event: TVA508OnImageIndexQueryEvent);
+var
+  data: TImageEventData;
+  idx: integer;
+begin
+  idx := ImageEventIndex(Event);
+  if idx < 0 then
+  begin
+    data := TImageEventData.Create;
+    data.Event := Event;
+    FEventData.Add(data);
+  end
+  else
+    data := TImageEventData(FEventData[idx]);
+  data.ImageListTypes := ImageListTypes;
+  AssignServerType(stImageList);
+end;
+
+procedure TMSAAServer.AddListProc(Proc: TVA508ListQueryProc);
+var
+  data: TListProcData;
+  idx: integer;
+begin
+  idx := ListProcIndex(Proc);
+  if idx < 0 then
+  begin
+    data := TListProcData.Create;
+    data.Proc := Proc;
+    FEventData.Add(data);
+  end;
+  AssignServerType(stList);
+end;
+
+procedure TMSAAServer.AddProc(Proc: TVA508QueryProc);
+var
+  data: TProcData;
+  idx: integer;
+begin
+  idx := ProcIndex(Proc);
+  if idx < 0 then
+  begin
+    data := TProcData.Create;
+    data.Proc := Proc;
+    FEventData.Add(data);
+  end;
+  AssignServerType(stNormal);
+end;
+
+procedure TMSAAServer.AssignServerType(AServerType: TServerType);
+begin
+  FServerTypes := FServerTypes + [AServerType];
+end;
+
+procedure TMSAAServer.Attach;
+begin
+  if (not FAttached) and (not uShutDown) and (FComponent.Handle <> 0) then
+  begin
+//    if FServerType = stNormal then
+//      FAttached := Succeeded(AccPropServices.SetHwndPropServer(FComponent.Handle,
+//                    OBJID_CLIENT, CHILDID_SELF, @NamePropIDs, 1, Self, ANNO_THIS))
+//    else
+      FAttached := Succeeded(AccPropServices.SetHwndPropServer(FComponent.Handle,
+                    OBJID_CLIENT, CHILDID_SELF, @NamePropIDs, 1, Self, ANNO_CONTAINER));
+  end;
+end;
+
+constructor TMSAAServer.Create(AComponent: TWinControl);
+begin
+  IncAccServices;
+  FComponent := AComponent;
+  FEventData := TObjectList.Create;
+  if AComponent.Showing then
+    Attach
+  else
+    Hook;
+end;
+
+destructor TMSAAServer.Destroy;
+begin
+  Detatch;
+  FreeAndNil(FEventData);
+  DecAccServices;
+  inherited;
+end;
+
+procedure TMSAAServer.Detatch;
+var
+  Ok2Detatch: boolean;
+begin
+  if FAttached and (not uShutDown) then
+  begin
+    Ok2Detatch := (not (csDestroying in FComponent.ComponentState)) and FComponent.visible;
+    if Ok2Detatch then
+    begin
+      if Succeeded(AccPropServices.ClearHwndProps(FComponent.Handle,
+                    OBJID_CLIENT, CHILDID_SELF, @NamePropIDs, 1)) then
+      FAttached := FALSE;
+    end
+    else
+      FAttached := FALSE;
+  end;
+end;
+
+function TMSAAServer.EventCount: integer;
+begin
+  Result := FEventData.Count;
+end;
+
+function TMSAAServer.ImageEventIndex(
+  Event: TVA508OnImageIndexQueryEvent): integer;
+var
+  i: integer;
+  data: TImageEventData;
+begin
+  for i := 0 to FEventData.Count - 1 do
+  begin
+    if FEventData[i] is TImageEventData then
+    begin
+      data := TImageEventData(FEventData[i]);
+      if (TMethod(data.Event).Code = TMethod(Event).Code) and
+         (TMethod(data.Event).Data = TMethod(Event).Data) then
+      begin
+        Result := i;
+        exit;
+      end;
+    end;
+  end;
+  Result := -1;
+end;
+
+function TMSAAServer.ListProcIndex(Proc: TVA508ListQueryProc): integer;
+var
+  i: integer;
+  data: TListProcData;
+begin
+  for i := 0 to FEventData.Count - 1 do
+  begin
+    if FEventData[i] is TListProcData then
+    begin
+      data := TListProcData(FEventData[i]);
+      if @data.Proc = @Proc then
+      begin
+        Result := i;
+        exit;
+      end;
+    end;
+  end;
+  Result := -1;
+end;
+
+function TMSAAServer.GetComponent: TWinControl;
+begin
+  Result := FComponent;
+end;
+
+function TMSAAServer.GetPropValue(const pIDString: PByte;
+  dwIDStringLen: LongWord; idProp: MSAAPROPID; out pvarValue: OleVariant;
+  out pfHasProp: Integer): HResult;
+var
+  phwnd: HWND;
+  pidObject: LongWord;
+  pidChild: LongWord;
+  text, CombinedText: string;
+
+  function Append(data: array of string): string;
+  var
+    i: integer;
+  begin
+    Result := '';
+    for i := low(data) to high(data) do
+    begin
+      if data[i] <> '' then
+      begin
+        if result <> '' then
+          Result := Result + ' ';
+        Result := Result + data[i];
+      end;
+    end;
+  end;
+
+  function GetImageLabelText(ImageListType: TVA508ImageListType; ImageIndex: integer): string;
+  var
+    i: integer;
+    Data: TImageEventData;
+  begin
+    Result := '';
+    for i := 0 to FEventData.Count - 1 do
+    begin
+      if FEventData[i] is TImageEventData then
+      begin
+        data := TImageEventData(FEventData[i]);
+        if ImageListType in data.ImageListTypes then
+        begin
+          data.Event(FComponent, ImageIndex, ImageListType, Result);
+          break;
+        end;
+      end;
+    end;
+  end;
+
+  procedure DoTreeView;
+  var
+    id: HTREEITEM;
+    node: TTreeNode;
+    overlay: string;
+    state: string;
+    tree:TExposedTreeView;
+  begin
+    tree := TExposedTreeView(FComponent);
+    id := HTREEITEM(pidChild);
+    node := tree.Items.GetNode(id);
+    if assigned(node) then
+    begin
+      state := '';
+      overlay := '';
+      // 0 state not valid on tree views
+      if assigned(tree.StateImages) and (node.StateIndex > 0) then
+        state := GetImageLabelText(iltStateImages, node.StateIndex);
+      if node.Selected then
+        text := GetImageLabelText(iltImages, node.SelectedIndex)
+      else
+        text := GetImageLabelText(iltImages, node.ImageIndex);
+      if node.OverlayIndex >= 0 then
+      begin
+        overlay := GetImageLabelText(iltOverlayImages, node.OverlayIndex);
+      end;
+      text := Append([state, text, overlay, node.Text]);
+    end;
+  end;
+
+  procedure DoListView;
+  var
+    view: TExposedListView;
+    ilType: TVA508ImageListType;
+    item: TListItem;
+    state: string;
+    overlay: string;
+    i: integer;
+    coltext: string;
+  begin
+    view := TExposedListView(FComponent);
+    if pidChild > LongWord(view.Items.Count) then exit;
+    state := '';
+    overlay := '';
+    item := view.Items[pidChild-1];
+    if assigned(view.StateImages) then
+      state := GetImageLabelText(iltStateImages, item.StateIndex);
+    if view.ViewStyle = vsIcon then
+      ilType := iltLargeImages
+    else
+      ilType := iltSmallImages;
+    text := GetImageLabelText(ilType, item.ImageIndex);
+    if (item.OverlayIndex >= 0) then
+      overlay := GetImageLabelText(iltOverlayImages, item.OverlayIndex);
+    text := Append([state, text, overlay]);
+
+    if not (stList in FServerTypes) then
+    begin
+      if (view.ViewStyle = vsReport) and (view.Columns.Count > 0) then
+        text := Append([text, view.Columns[0].Caption]);
+      colText := item.Caption;
+      if colText = '' then
+        colText := 'blank';
+      text := Append([text, colText]);
+
+      if view.ViewStyle = vsReport then
+      begin
+        for i := 1 to view.Columns.Count - 1 do
+        begin
+          if view.Columns[i].Width > 0 then
+          begin
+            text := Append([text, view.Columns[i].Caption]);
+            if (i-1) < item.SubItems.Count then
+              colText := item.SubItems[i-1]
+            else
+              colText := '';
+            if colText = '' then
+              colText := 'blank';
+            Text := Append([text, colText + ',']);
+          end;
+        end;
+      end;
+    end;
+  end;
+
+  procedure DoListComponent;
+  var
+    i: integer;
+    data: TListProcData;
+  begin
+    for i := 0 to FEventData.Count - 1 do
+    begin
+      if FEventData[i] is TListProcData then
+      begin
+        data := TListProcData(FEventData[i]);
+        data.Proc(FComponent, pidChild-1, text);
+      end;
+    end;
+  end;
+
+  procedure DoNormalComponent;
+  var
+    i: integer;
+    data: TProcData;
+  begin
+    for i := 0 to FEventData.Count - 1 do
+    begin
+      if FEventData[i] is TProcData then
+      begin
+        data := TProcData(FEventData[i]);
+        data.Proc(FComponent, text);
+      end;
+    end;
+  end;
+
+  procedure HasProperty;
+  begin
+    TVarData(pvarValue).VType := VT_BSTR;
+    pfHasProp := 1;
+    text := '';
+  end;
+
+  procedure NoProperty;
+  begin
+    TVarData(pvarValue).VType := VT_EMPTY;
+    pfHasProp := 0;
+  end;
+
+begin
+  VariantInit(pvarValue);
+  OleCheck(AccPropServices.DecomposeHwndIdentityString(pIDString, dwIDStringLen,
+    phwnd, pidObject, pidChild));
+  if (phwnd = FComponent.Handle) then
+  begin
+    if (pidChild = CHILDID_SELF) then
+    begin
+      if stNormal in FServerTypes then
+      begin
+        HasProperty;
+        DoNormalComponent;
+        pvarValue := text;
+      end
+      else
+        NoProperty;
+    end
+    else
+    begin
+      NoProperty;
+      if (FServerTypes * [stList, stImageList]) <> [] then
+      begin
+        HasProperty;
+        CombinedText := '';
+        if stImageList in FServerTypes then
+        begin
+          if FComponent is TCustomTreeView then DoTreeView else
+          if FComponent is TCustomListView then DoListView;
+        end;
+        CombinedText := text;
+        text := '';
+        if stList in FServerTypes then
+        begin
+          DoListComponent;
+        end;
+        if text <> '' then
+        begin
+          if CombinedText <> '' then
+            CombinedText := CombinedText + ' ';
+          CombinedText := CombinedText + text;
+        end;
+        pvarValue := CombinedText;
+      end;
+    end;
+  end
+  else
+    NoProperty;
+  Result := S_OK;
+end;
+
+procedure TMSAAServer.Hook;
+begin
+  FOldWndProc := FComponent.WindowProc;
+  FComponent.WindowProc := MSAAWindowProc;
+end;
+
+procedure TMSAAServer.RemoveImageEvent(ImageListTypes: TVA508ImageListTypes;
+  Event: TVA508OnImageIndexQueryEvent);
+var
+  idx: integer;
+begin
+  idx := ImageEventIndex(Event);
+  if idx >= 0 then
+    FEventData.Delete(idx);
+  UnassignServerType(stImageList);
+end;
+
+procedure TMSAAServer.RemoveListProc(Proc: TVA508ListQueryProc);
+var
+  idx: integer;
+begin
+  idx := ListProcIndex(Proc);
+  if idx >= 0 then
+    FEventData.Delete(idx);
+  UnassignServerType(stList);
+end;
+
+procedure TMSAAServer.RemoveProc(Proc: TVA508QueryProc);
+var
+  idx: integer;
+begin
+  idx := ProcIndex(Proc);
+  if idx >= 0 then
+    FEventData.Delete(idx);
+  UnassignServerType(stNormal);
+end;
+
+class procedure TMSAAServer.ValidateServerType(AComponent: TWinControl; AServerType: TServerType);
+var
+  i: integer;
+
+begin
+  if AServerType = stImageList then
+  begin
+    for i := low(VA508ImageListLabelerClasses) to high(VA508ImageListLabelerClasses) do
+    begin
+      if AComponent is VA508ImageListLabelerClasses[i] then exit;
+    end;
+    raise TVA508Exception.Create('Unsupported Image List MSAA Label Component');
+  end;
+end;
+
+procedure TMSAAServer.UnassignServerType(AServerType: TServerType);
+begin
+  FServerTypes := FServerTypes - [AServerType];
+end;
+
+procedure TMSAAServer.UnHook;
+begin
+  FComponent.WindowProc := FOldWndProc;
+end;
+
+procedure TMSAAServer.MSAAWindowProc(var Message: TMessage);
+var
+  DoAttach: boolean;
+begin
+  DoAttach := (Message.Msg = CM_SHOWINGCHANGED);
+  FOldWndProc(Message);
+  if DoAttach then  
+  begin
+    Unhook;
+    Attach;
+  end;
+end;
+
+function TMSAAServer.ProcIndex(Proc: TVA508QueryProc): integer;
+var
+  i: integer;
+  data: TProcData;
+begin
+  for i := 0 to FEventData.Count - 1 do
+  begin
+    if FEventData[i] is TProcData then
+    begin
+      data := TProcData(FEventData[i]);
+      if @data.Proc = @Proc then
+      begin
+        Result := i;
+        exit;
+      end;
+    end;
+  end;
+  Result := -1;
+end;
+
+initialization
+
+finalization
+  Cleanup;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ScreenReaderDLLLinker.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ScreenReaderDLLLinker.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ScreenReaderDLLLinker.pas	(revision 1676)
@@ -0,0 +1,401 @@
+unit VA508ScreenReaderDLLLinker;
+
+interface
+
+ { TODO -oJeremy Merrill -c508 :Add ability to handle multiple instances / multiple appliations to JAWS at the same time -
+will need to use Application.MainForm handle approach, probably need to use different
+registry keys with handle in registry key name.  JAWS has a GetAppMainWindow command
+to get the handle.  Will need a cleanup command in delphi to make sure we don't leave
+junk in the registry - probably search running apps, and if the main form's handle isn't in
+the registry, delete entries. }
+uses
+  Windows, SysUtils, Forms, Classes, VA508AccessibilityConst;
+
+{$I 'VA508ScreenReaderDLLStandard.inc'}
+
+// Returns true if a link to a screen reader was successful.  The first link that
+// is established causes searching to stop.
+// Searches for .SR files in this order:
+// 1) Current machine's Program Files directory
+// 2) \Program Files directory on drive where app resides,
+//    if it's different than the current machine's program files directory
+// 3) The directory the application was run from.
+
+function ScreenReaderDLLsExist: boolean;
+function IsScreenReaderSupported(Unload: Boolean): boolean;
+function InitializeScreenReaderLink: boolean;
+procedure CloseScreenReaderLink;
+
+
+type
+  TVA508RegisterCustomBehaviorProc = procedure(BehaviorType: integer; Before, After: PChar); stdcall;
+  TVA508SpeakTextProc = procedure(Text: PChar); stdcall;
+  TVA508IsRunningFunc = function(HighVersion, LowVersion: Word): BOOL; stdcall;
+  TVA508ConfigChangePending = function: boolean; stdcall;
+  TVA508ComponentDataProc = procedure (WindowHandle: HWND;
+                                   DataStatus:   LongInt = DATA_NONE;
+                                   Caption:      PChar = nil;
+                                   Value:        PChar = nil;
+                                   Data:         PChar = nil;
+                                   ControlType:  PChar = nil;
+                                   State:        PChar = nil;
+                                   Instructions: PChar = nil;
+                                   ItemInstructions: PChar = nil); stdcall;
+var
+  SRSpeakText: TVA508SpeakTextProc = nil;
+  SRIsRunning: TVA508IsRunningFunc = nil;
+  SRRegisterCustomBehavior: TVA508RegisterCustomBehaviorProc = nil;
+  SRComponentData: TVA508ComponentDataProc = nil;
+  SRConfigChangePending: TVA508ConfigChangePending = nil;
+  ValidSRFiles: TStringList = nil;
+  ExecuteFind: boolean = TRUE;
+  DoInitialize: boolean = TRUE;
+  InitializeResult: boolean = FALSE;
+
+implementation
+
+uses VAUtils, VA508AccessibilityRouter, VA508AccessibilityManager;
+
+const
+  ScreenReaderFileExtension = '.SR';
+  ScreenReaderCommonFilesDir = 'VistA\Common Files\';
+  ScreenReaderSearchSpec = '*' + ScreenReaderFileExtension;
+{$WARNINGS OFF}   // Ignore platform specific code warning
+  BadFile = faHidden or faSysFile or faDirectory or faSymLink;
+{$WARNINGS ON}
+
+{$REGION 'Initialize Proc Definition'}
+type
+  TVA508InitializeProc = function(CallBackProc: TComponentDataRequestProc): BOOL; stdcall;
+const
+  TVA508InitializeProcName = 'Initialize';
+var
+  SRInitialize: TVA508InitializeProc = nil;
+
+function Initialize(ComponentCallBackProc: TComponentDataRequestProc): BOOL; stdcall;
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508InitializeProc;
+begin
+  CompileVerification := Initialize;
+  Result := FALSE;
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+{$REGION 'ShutDown Proc Definition'}
+type
+  TVA508ShutDownProc = procedure; stdcall;
+const
+  TVA508ShutDownProcName = 'ShutDown';
+var
+  SRShutDown: TVA508ShutDownProc = nil;
+
+procedure ShutDown; stdcall;
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508ShutDownProc;
+begin
+  CompileVerification := ShutDown;
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+{$REGION 'RegisterCustomBehavior Proc Definition'}
+const
+  TVA508RegisterCustomBehaviorProcName = 'RegisterCustomBehavior';
+
+procedure RegisterCustomBehavior(BehaviorType: integer; Before, After: PChar); stdcall;
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508RegisterCustomBehaviorProc;
+begin
+  CompileVerification := RegisterCustomBehavior;
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+{$REGION 'ComponentData Proc Definition'}
+const
+  TVA508ComponentDataProcName = 'ComponentData';
+
+procedure ComponentData(WindowHandle:     HWND;
+                        DataStatus:       LongInt = DATA_NONE;
+                        Caption:          PChar   = nil;
+                        Value:            PChar   = nil;
+                        Data:             PChar   = nil;
+                        ControlType:      PChar   = nil;
+                        State:            PChar   = nil;
+                        Instructions:     PChar   = nil;
+                        ItemInstructions: PChar   = nil); stdcall;
+
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508ComponentDataProc;
+begin
+  CompileVerification := ComponentData;
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+{$REGION 'SpeakText Proc Definition'}
+const
+  TVA508SpeakTextProcName = 'SpeakText';
+
+procedure SpeakText(Text: PChar); stdcall;
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508SpeakTextProc;
+begin
+  CompileVerification := SpeakText;
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+{$REGION 'IsRunning Proc Definition'}
+const
+  TVA508IsRunningFuncName = 'IsRunning';
+
+function IsRunning(HighVersion, LowVersion: Word): BOOL; stdcall;
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508IsRunningFunc;
+begin
+  CompileVerification := IsRunning;
+  Result := FALSE; // avoid compiler warning...
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+{$REGION 'ConfigChangePending Proc Definition'}
+const
+  TVA508ConfigChangePendingName = 'ConfigChangePending';
+
+function ConfigChangePending: boolean; stdcall;
+{$HINTS OFF}   // Ignore unused variable hint
+var
+  CompileVerification: TVA508ConfigChangePending;
+begin
+  CompileVerification := ConfigChangePending;
+  Result := FALSE; // avoid compiler warning...
+end;
+{$HINTS ON}
+{$ENDREGION}
+
+var
+  DLLHandle: THandle = 0;
+
+procedure ClearProcPointers;
+begin
+  SRInitialize := nil;
+  SRShutDown := nil;
+  SRRegisterCustomBehavior := nil;
+  SRSpeakText := nil;
+  SRIsRunning  := nil;
+  SRComponentData := nil;
+  SRConfigChangePending := nil;
+  DoInitialize := FALSE;
+  InitializeResult := FALSE;
+end;
+
+function InitializeScreenReaderLink: boolean;
+begin
+  if DoInitialize then
+  begin
+    InitializeResult := SRInitialize(ComponentDataRequested);
+    DoInitialize := FALSE;
+    if not InitializeResult then
+      CloseScreenReaderLink;
+  end;
+  Result := InitializeResult;
+end;
+
+procedure CloseScreenReaderLink;
+begin
+  if DLLHandle > HINSTANCE_ERROR then
+  begin
+    SRShutDown;
+    FreeLibrary(DLLHandle);
+    DLLHandle := 0;
+    ClearProcPointers;
+  end;
+end;
+
+procedure LoadScreenReader(index: integer);
+var
+  FileName: string;
+begin
+  FileName := ValidSRFiles[index];
+  DLLHandle := LoadLibrary(PChar(FileName));
+  if DLLHandle > HINSTANCE_ERROR then
+  begin
+    SRInitialize := GetProcAddress(DLLHandle, TVA508InitializeProcName);
+    SRShutDown := GetProcAddress(DLLHandle, TVA508ShutDownProcName);
+    SRRegisterCustomBehavior := GetProcAddress(DLLHandle, TVA508RegisterCustomBehaviorProcName);
+    SRSpeakText := GetProcAddress(DLLHandle, TVA508SpeakTextProcName);
+    SRIsRunning := GetProcAddress(DLLHandle, TVA508IsRunningFuncName);
+    SRComponentData := GetProcAddress(DLLHandle, TVA508ComponentDataProcName);
+    SRConfigChangePending := GetProcAddress(DLLHandle, TVA508ConfigChangePendingName);    
+    DoInitialize := TRUE;
+  end;
+end;
+
+function CheckRunning(Unload: boolean; HighVersion, LowVersion: integer): boolean;
+begin
+// Calling IsRunning this way, instead of setting ok to it's result,
+// prevents ok from begin converted to a LongBool at compile time
+  if assigned(SRIsRunning) and SRIsRunning(HighVersion, LowVersion) then
+    Result := TRUE
+  else
+    Result := FALSE;
+  if Unload and (DLLHandle > HINSTANCE_ERROR)then
+  begin
+    FreeLibrary(DLLHandle);
+    DLLHandle := 0;
+  end;
+end;
+
+
+procedure FindScreenReaders;
+var
+  ok: boolean;
+
+  procedure CheckProcs;
+  begin
+    SRInitialize := GetProcAddress(DLLHandle, TVA508InitializeProcName);
+    ok := assigned(SRInitialize);
+    if ok then
+    begin
+      SRShutDown := GetProcAddress(DLLHandle, TVA508ShutDownProcName);
+      ok := assigned(SRShutDown);
+      if ok then
+      begin
+        SRRegisterCustomBehavior := GetProcAddress(DLLHandle, TVA508RegisterCustomBehaviorProcName);
+        ok := assigned(SRRegisterCustomBehavior);
+        if ok then
+        begin
+          SRSpeakText := GetProcAddress(DLLHandle, TVA508SpeakTextProcName);
+          ok := assigned(SRSpeakText);
+          if ok then
+          begin
+            SRIsRunning := GetProcAddress(DLLHandle, TVA508IsRunningFuncName);
+            ok := assigned(SRIsRunning);
+            if ok then
+            begin
+              SRComponentData := GetProcAddress(DLLHandle, TVA508ComponentDataProcName);
+              ok := assigned(SRComponentData);
+              if ok then
+              begin
+                SRConfigChangePending := GetProcAddress(DLLHandle, TVA508ConfigChangePendingName);
+                ok := assigned(SRConfigChangePending);
+              end;
+            end;
+          end;
+        end;
+      end;
+    end;
+    ClearProcPointers;
+  end;
+
+  procedure CheckFile(FileName: string);
+  var
+    idx: integer;
+  begin
+    DLLHandle := 0;
+    ok := FileExists(FileName);
+    if ok then
+    begin
+      ok := FALSE;
+      idx := ValidSRFiles.IndexOf(FileName);
+      if idx < 0 then
+      begin
+        DLLHandle := LoadLibrary(PChar(FileName));
+        if DLLHandle > HINSTANCE_ERROR then
+        begin
+          try
+            CheckProcs;
+            if ok then
+              ValidSRFiles.Add(FileName)
+          finally
+            FreeLibrary(DLLHandle);
+            DLLHandle := 0;
+          end;
+        end;
+      end;
+    end
+  end;
+
+  procedure ScanScreenReaders(dir: string; addCommonFilesPath: boolean = true);
+  var
+    SR: TSearchRec;
+    Done: integer;
+    RootDir: string;
+  begin
+    if dir = '' then exit;
+    RootDir := AppendBackSlash(dir);
+    if addCommonFilesPath then
+      RootDir := RootDir + ScreenReaderCommonFilesDir;
+    Done := FindFirst(RootDir + ScreenReaderSearchSpec, faAnyFile, SR);
+    try
+      while Done = 0 do
+      begin
+        if((SR.Attr and BadFile) = 0) and (CompareText(ExtractFileExt(SR.Name), ScreenReaderFileExtension) = 0) then
+        begin
+          CheckFile(RootDir + SR.Name);
+        end;
+        Done := FindNext(SR);
+      end;
+    finally
+      FindClose(SR);
+    end;
+  end;
+
+begin
+  if ExecuteFind then
+  begin
+    if not assigned(ValidSRFiles) then
+      ValidSRFiles := TStringList.Create;
+    ScanScreenReaders(GetProgramFilesPath);
+    if not ok then
+      ScanScreenReaders(GetAlternateProgramFilesPath);
+    if not ok then
+      ScanScreenReaders(ExtractFilePath(Application.ExeName), FALSE);
+    ExecuteFind := FALSE;
+  end;
+end;
+
+function ScreenReaderDLLsExist: boolean;
+begin
+  FindScreenReaders;
+  Result := (ValidSRFiles.Count > 0);
+end;
+
+function IsScreenReaderSupported(Unload: Boolean): boolean;
+var
+  i: integer;
+  HighVersion, LowVersion: integer;
+begin
+  Result := FALSE;
+  FindScreenReaders;
+  VersionStringSplit(VA508AccessibilityManagerVersion, HighVersion, LowVersion);
+  for I := 0 to ValidSRFiles.Count - 1 do
+  begin
+    LoadScreenReader(i);
+    Result := CheckRunning(Unload, HighVersion, LowVersion);
+    if Result then exit;
+    if not Unload then
+    begin
+      FreeLibrary(DLLHandle);
+      DLLHandle := 0;
+    end;
+  end;
+end;
+
+initialization
+
+finalization
+  CloseScreenReaderLink;
+  if assigned(ValidSRFiles) then
+    FreeAndNil(ValidSRFiles);
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ScreenReaderDLLStandard.inc
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ScreenReaderDLLStandard.inc	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/VA508ScreenReaderDLLStandard.inc	(revision 1676)
@@ -0,0 +1,47 @@
+(*
+Screen Reader software wishing to function properly with CPRS and some other VHA
+Win32 applications must provide a DLL in the "\Program Files\VistA\Common Files\"
+directory that has an extension of .SR, (not .DLL)
+
+This DLL must export the routines shown below (they should use this include file) 
+*)
+
+// When a component receives focus, the screen reader needs to request data about the
+// component.  The Call Back proc is called, and the VA app then supplies the info by
+// calling the returning the ComponentDataAsRequested procedure.
+
+// Checks to see if the screen reader is currently running
+function IsRunning(HighVersion, LowVersion: Word): BOOL; stdcall;
+
+// Executed after IsRunning returns TRUE, when the DLL is accepted as the screen reader of choice
+// if result returns a string, Initialization failed with retuned error message
+// TComponentDataRequestProc is defined in the VA508AccessibilityConst unit
+function Initialize(ComponentCallBackProc: TComponentDataRequestProc): BOOL; stdcall;
+
+// Executed when the DLL is unloaded or screen reader is no longer needed
+procedure ShutDown; stdcall;
+
+// Instructs the Screen Reader to modify the way it handles specific information,
+// such as how it pronounces specific words, or how it handles specific classes of components
+procedure RegisterCustomBehavior(BehaviorType: integer; Before, After: PChar); stdcall;
+
+// Returns Component Data as requested by the screen reader
+// or in response to a change event
+// must be able to support multiple calls for the same custom behavior
+procedure ComponentData(WindowHandle:     HWND;
+                        DataStatus:       LongInt = DATA_NONE;
+                        Caption:          PChar   = nil;
+                        Value:            PChar   = nil;
+                        Data:             PChar   = nil;
+                        ControlType:      PChar   = nil;
+                        State:            PChar   = nil;
+                        Instructions:     PChar   = nil;
+                        ItemInstructions: PChar   = nil); stdcall;
+
+// Instructs the Screen Reader to say the specified text
+procedure SpeakText(Text: PChar); stdcall;
+
+// A configuration change had been made that has yet to take effect
+function ConfigChangePending: boolean; stdcall;
+
+
Index: cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/oleacc2.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/oleacc2.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VA508Accessibility/oleacc2.pas	(revision 1676)
@@ -0,0 +1,270 @@
+unit oleacc2;
+(******************************************************************************
+ *  WARNING                                                                   *
+ *  -------                                                                   *
+ *  The types declared in this file were generated from data read from a      *
+ *  Type Library. Then the file was manually cleaned up. Do not regenerate    *
+ *  this file!                                                                *
+ *                                                                            *
+ ******************************************************************************)
+{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
+{$WARN SYMBOL_PLATFORM OFF}
+{$WRITEABLECONST ON}
+{$VARPROPSETTER ON}
+
+// ************************************************************************  //
+// PASTLWTR : 1.2
+// File generated on 05/31/2006 09:18:28 AM from Type Library described below.
+
+// ************************************************************************  //
+// Type Lib: C:\WINDOWS\system32\oleacc.dll (1)
+// LIBID: {1EA4DBF0-3C3B-11CF-810C-00AA00389B71}
+// LCID: 0
+// Helpfile:
+// HelpString:
+// DepndLst:
+//   (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
+// ************************************************************************ //
+interface
+
+uses
+  Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
+
+// *********************************************************************//
+// GUIDS declared in the TypeLibrary. Following prefixes are used:
+//   Type Libraries     : LIBID_xxxx
+//   CoClasses          : CLASS_xxxx
+//   DISPInterfaces     : DIID_xxxx
+//   Non-DISP interfaces: IID_xxxx
+// *********************************************************************//
+const
+  // TypeLibrary Major and minor versions
+  AccessibilityMajorVersion = 1;
+  AccessibilityMinorVersion = 1;
+
+  LIBID_Accessibility: TGUID    = '{1EA4DBF0-3C3B-11CF-810C-00AA00389B71}';
+
+  IID_IAccessible: TGUID        = '{618736E0-3C3D-11CF-810C-00AA00389B71}';
+  IID_IAccessibleHandler: TGUID = '{03022430-ABC4-11D0-BDE2-00AA001A1953}';
+  IID_IAccIdentity: TGUID       = '{7852B78D-1CFD-41C1-A615-9C0C85960B5F}';
+  IID_IAccPropServer: TGUID     = '{76C0DBBB-15E0-4E7B-B61B-20EEEA2001E0}';
+  IID_IAccPropServices: TGUID   = '{6E26E776-04F0-495D-80E4-3330352E3169}';
+  CLASS_CAccPropServices: TGUID = '{B5F8350B-0548-48B1-A6EE-88BD00B4A5E7}';
+
+// *********************************************************************//
+// Declaration of Enumerations defined in Type Library                    
+// *********************************************************************//
+// Constants for enum AnnoScope
+type
+  AnnoScope  = TOleEnum;
+  MSAAPROPID = TGUID;
+  PMSAAPROPID = ^TGUID;
+
+const
+  ANNO_THIS = $00000000;
+  ANNO_CONTAINER = $00000001;
+
+type
+
+// *********************************************************************//
+// Forward declaration of types defined in TypeLibrary
+// *********************************************************************//
+  IAccessible        = interface;
+  IAccessibleDisp    = dispinterface;
+  IAccessibleHandler = interface;
+  IAccIdentity       = interface;
+  IAccPropServer     = interface;
+  IAccPropServices   = interface;
+
+// *********************************************************************//
+// Declaration of CoClasses defined in Type Library
+// (NOTE: Here we map each CoClass to its Default Interface)
+// *********************************************************************//
+  CAccPropServices = IAccPropServices;
+
+// *********************************************************************//
+// Interface: IAccessible
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {618736E0-3C3D-11CF-810C-00AA00389B71}
+// *********************************************************************//
+  IAccessible = interface(IDispatch)
+    ['{618736E0-3C3D-11CF-810C-00AA00389B71}']
+    function Get_accParent: IDispatch; safecall;
+    function Get_accChildCount: Integer; safecall;
+    function Get_accChild(varChild: OleVariant): IDispatch; safecall;
+    function Get_accName(varChild: OleVariant): WideString; safecall;
+    function Get_accValue(varChild: OleVariant): WideString; safecall;
+    function Get_accDescription(varChild: OleVariant): WideString; safecall;
+    function Get_accRole(varChild: OleVariant): OleVariant; safecall;
+    function Get_accState(varChild: OleVariant): OleVariant; safecall;
+    function Get_accHelp(varChild: OleVariant): WideString; safecall;
+    function Get_accHelpTopic(out pszHelpFile: WideString; varChild: OleVariant): Integer; safecall;
+    function Get_accKeyboardShortcut(varChild: OleVariant): WideString; safecall;
+    function Get_accFocus: OleVariant; safecall;
+    function Get_accSelection: OleVariant; safecall;
+    function Get_accDefaultAction(varChild: OleVariant): WideString; safecall;
+    procedure accSelect(flagsSelect: Integer; varChild: OleVariant); safecall;
+    procedure accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer; 
+                          out pcyHeight: Integer; varChild: OleVariant); safecall;
+    function accNavigate(navDir: Integer; varStart: OleVariant): OleVariant; safecall;
+    function accHitTest(xLeft: Integer; yTop: Integer): OleVariant; safecall;
+    procedure accDoDefaultAction(varChild: OleVariant); safecall;
+    procedure Set_accName(varChild: OleVariant; const pszName: WideString); safecall;
+    procedure Set_accValue(varChild: OleVariant; const pszValue: WideString); safecall;
+    property accParent: IDispatch read Get_accParent;
+    property accChildCount: Integer read Get_accChildCount;
+    property accChild[varChild: OleVariant]: IDispatch read Get_accChild;
+    property accName[varChild: OleVariant]: WideString read Get_accName write Set_accName;
+    property accValue[varChild: OleVariant]: WideString read Get_accValue write Set_accValue;
+    property accDescription[varChild: OleVariant]: WideString read Get_accDescription;
+    property accRole[varChild: OleVariant]: OleVariant read Get_accRole;
+    property accState[varChild: OleVariant]: OleVariant read Get_accState;
+    property accHelp[varChild: OleVariant]: WideString read Get_accHelp;
+    property accHelpTopic[out pszHelpFile: WideString; varChild: OleVariant]: Integer read Get_accHelpTopic;
+    property accKeyboardShortcut[varChild: OleVariant]: WideString read Get_accKeyboardShortcut;
+    property accFocus: OleVariant read Get_accFocus;
+    property accSelection: OleVariant read Get_accSelection;
+    property accDefaultAction[varChild: OleVariant]: WideString read Get_accDefaultAction;
+  end;
+
+// *********************************************************************//
+// DispIntf:  IAccessibleDisp
+// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
+// GUID:      {618736E0-3C3D-11CF-810C-00AA00389B71}
+// *********************************************************************//
+  IAccessibleDisp = dispinterface
+    ['{618736E0-3C3D-11CF-810C-00AA00389B71}']
+    property accParent: IDispatch readonly dispid -5000;
+    property accChildCount: Integer readonly dispid -5001;
+    property accChild[varChild: OleVariant]: IDispatch readonly dispid -5002;
+    property accName[varChild: OleVariant]: WideString dispid -5003;
+    property accValue[varChild: OleVariant]: WideString dispid -5004;
+    property accDescription[varChild: OleVariant]: WideString readonly dispid -5005;
+    property accRole[varChild: OleVariant]: OleVariant readonly dispid -5006;
+    property accState[varChild: OleVariant]: OleVariant readonly dispid -5007;
+    property accHelp[varChild: OleVariant]: WideString readonly dispid -5008;
+    property accHelpTopic[out pszHelpFile: WideString; varChild: OleVariant]: Integer readonly dispid -5009;
+    property accKeyboardShortcut[varChild: OleVariant]: WideString readonly dispid -5010;
+    property accFocus: OleVariant readonly dispid -5011;
+    property accSelection: OleVariant readonly dispid -5012;
+    property accDefaultAction[varChild: OleVariant]: WideString readonly dispid -5013;
+    procedure accSelect(flagsSelect: Integer; varChild: OleVariant); dispid -5014;
+    procedure accLocation(out pxLeft: Integer; out pyTop: Integer; out pcxWidth: Integer; 
+                          out pcyHeight: Integer; varChild: OleVariant); dispid -5015;
+    function accNavigate(navDir: Integer; varStart: OleVariant): OleVariant; dispid -5016;
+    function accHitTest(xLeft: Integer; yTop: Integer): OleVariant; dispid -5017;
+    procedure accDoDefaultAction(varChild: OleVariant); dispid -5018;
+  end;
+
+// *********************************************************************//
+// Interface: IAccessibleHandler
+// Flags:     (272) Hidden OleAutomation
+// GUID:      {03022430-ABC4-11D0-BDE2-00AA001A1953}
+// *********************************************************************//
+  IAccessibleHandler = interface(IUnknown)
+    ['{03022430-ABC4-11D0-BDE2-00AA001A1953}']
+    function AccessibleObjectFromID(hwnd: Integer; lObjectID: Integer;
+      out pIAccessible: IAccessible): HResult; stdcall;
+  end;
+
+// *********************************************************************//
+// Interface: IAccIdentity
+// Flags:     (0)
+// GUID:      {7852B78D-1CFD-41C1-A615-9C0C85960B5F}
+// *********************************************************************//
+  IAccIdentity = interface(IUnknown)
+    ['{7852B78D-1CFD-41C1-A615-9C0C85960B5F}']
+    function GetIdentityString(dwIDChild: LongWord; out ppIDString: PByte;
+      out pdwIDStringLen: LongWord): HResult; stdcall;
+  end;
+
+// *********************************************************************//
+// Interface: IAccPropServer
+// Flags:     (0)
+// GUID:      {76C0DBBB-15E0-4E7B-B61B-20EEEA2001E0}
+// *********************************************************************//
+  IAccPropServer = interface(IUnknown)
+    ['{76C0DBBB-15E0-4E7B-B61B-20EEEA2001E0}']
+    function GetPropValue(const pIDString: PByte; dwIDStringLen: LongWord; idProp: MSAAPROPID;
+      out pvarValue: OleVariant; out pfHasProp: Integer): HResult; stdcall;
+  end;
+
+// *********************************************************************//
+// Interface: IAccPropServices
+// Flags:     (0)
+// GUID:      {6E26E776-04F0-495D-80E4-3330352E3169}
+// *********************************************************************//
+  IAccPropServices = interface(IUnknown)
+    ['{6E26E776-04F0-495D-80E4-3330352E3169}']
+    function SetPropValue(const pIDString: PByte; dwIDStringLen: LongWord; idProp: MSAAPROPID;
+                          varValue: OleVariant): HResult; stdcall;
+    function SetPropServer(const pIDString: PByte; dwIDStringLen: LongWord; paProps: PMSAAPROPID;
+      cProps: SYSINT; const pServer: IAccPropServer; AnnoScope: AnnoScope): HResult; stdcall;
+    function ClearProps(const pIDString: PByte; dwIDStringLen: LongWord; paProps: PMSAAPROPID;
+      cProps: SYSINT): HResult; stdcall;
+    function SetHwndProp(hwnd: HWND; idObject: LongWord; idChild: LongWord;
+      idProp: MSAAPROPID; varValue: OleVariant): HResult; stdcall;
+    function SetHwndPropStr(hwnd: HWND; idObject: LongWord; idChild: LongWord;
+      idProp: MSAAPROPID; str: PWideChar): HResult; stdcall;
+    function SetHwndPropServer(hwnd: HWND; idObject: LongWord; idChild: LongWord;
+      paProps: PMSAAPROPID; cProps: SYSINT; const pServer: IAccPropServer;
+      AnnoScope: AnnoScope): HResult; stdcall;
+    function ClearHwndProps(hwnd: HWND; idObject: LongWord; idChild: LongWord;
+      paProps: PMSAAPROPID; cProps: SYSINT): HResult; stdcall;
+    function ComposeHwndIdentityString(hwnd: HWND; idObject: LongWord; idChild: LongWord;
+      out ppIDString: PByte; out pdwIDStringLen: LongWord): HResult; stdcall;
+    function DecomposeHwndIdentityString(const pIDString: PByte; dwIDStringLen: LongWord;
+      out phwnd: HWND; out pidObject: LongWord; out pidChild: LongWord): HResult; stdcall;
+    function SetHmenuProp(hmenu: HMENU; idChild: LongWord; idProp: MSAAPROPID;
+      varValue: OleVariant): HResult; stdcall;
+    function SetHmenuPropStr(hmenu: HMENU; idChild: LongWord; idProp: MSAAPROPID;
+      str: PWideChar): HResult; stdcall;
+    function SetHmenuPropServer(hmenu: HMENU; idChild: LongWord; paProps: PMSAAPROPID;
+      cProps: SYSINT; const pServer: IAccPropServer; AnnoScope: AnnoScope): HResult; stdcall;
+    function ClearHmenuProps(hmenu: HMENU; idChild: LongWord; paProps: PMSAAPROPID;
+      cProps: SYSINT): HResult; stdcall;
+    function ComposeHmenuIdentityString(hmenu: HMENU; idChild: LongWord;
+      out ppIDString: PByte; out pdwIDStringLen: LongWord): HResult; stdcall;
+    function DecomposeHmenuIdentityString(const pIDString: PByte; dwIDStringLen: LongWord;
+      out phmenu: HMENU; out pidChild: LongWord): HResult; stdcall;
+  end;
+
+// *********************************************************************//
+// The Class CoCAccPropServices provides a Create and CreateRemote method to
+// create instances of the default interface IAccPropServices exposed by
+// the CoClass CAccPropServices. The functions are intended to be used by
+// clients wishing to automate the CoClass objects exposed by the
+// server of this typelibrary.
+// *********************************************************************//
+  CoCAccPropServices = class
+    class function Create: IAccPropServices;
+    class function CreateRemote(const MachineName: string): IAccPropServices;
+  end;
+
+// *********************************************************************//
+// Function definitions
+// *********************************************************************//
+
+function AccessibleObjectFromWindow(hwnd: HWND; dwObjectID: DWORD;
+  const riid: TGUID; out ppvObject: IAccessible): HResult; stdcall;
+  external 'OLEACC.DLL' name 'AccessibleObjectFromWindow';
+
+function AccessibleObjectFromPoint(pt: tagPOINT; out ppvObject: IAccessible;
+  out v1: Variant): HResult; stdcall;
+  external 'OLEACC.DLL' name 'AccessibleObjectFromPoint';
+
+implementation
+
+uses ComObj;
+
+class function CoCAccPropServices.Create: IAccPropServices;
+begin
+  Result := CreateComObject(CLASS_CAccPropServices) as IAccPropServices;
+end;
+
+class function CoCAccPropServices.CreateRemote(const MachineName: string): IAccPropServices;
+begin
+  Result := CreateRemoteComObject(MachineName, CLASS_CAccPropServices) as IAccPropServices;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VAClasses.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VAClasses.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VAClasses.pas	(revision 1676)
@@ -0,0 +1,314 @@
+unit VAClasses;
+
+interface
+
+uses
+  Windows, Controls, Classes, SysUtils, Types, RTLConsts;
+
+type
+  TVABaseMethodList = class(TObject)
+  strict private
+    FCode: TList;
+    FData: TList;
+  strict protected
+    function GetMethod(index: integer): TMethod;
+    property Code: TList read FCode;
+    property Data: TList read FData;
+  protected
+    constructor Create; virtual;
+    function IndexOf(const Method: TMethod): integer;
+    procedure Add(const Method: TMethod);
+    procedure Clear;
+    function Count: integer;
+    procedure Delete(index: integer);
+    procedure Remove(const Method: TMethod);
+    property Methods[index: integer]: TMethod read GetMethod; default;
+  public
+    destructor Destroy; override;
+  end;
+
+  TVAMethodList = class(TVABaseMethodList)
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+    function IndexOf(const Method: TMethod): integer;
+    procedure Add(const Method: TMethod);
+    procedure Clear;
+    function Count: integer;
+    procedure Delete(index: integer);
+    procedure Remove(const Method: TMethod);
+    property Methods;
+  end;
+
+
+  TVALinkedMethodList = class(TVABaseMethodList)
+  private
+    FLinkedObjects: TList;
+  public
+    constructor Create; override;
+    destructor Destroy; override;
+    procedure Add(Obj: TObject; const Method: TMethod);
+    function IndexOf(const obj: TObject): integer;
+    procedure Clear;
+    function Count: integer;
+    procedure Delete(index: integer);
+    procedure Remove(const obj: TObject); overload;
+    function GetMethod(Obj: TObject): TMethod;
+//    property Methods;
+  end;
+
+  // event fires before the component has acted on the notification
+  TVANotifyEvent = procedure(AComponent: TComponent; Operation: TOperation) of object;
+
+  TVANotificationEventComponent = class(TComponent)
+  private
+    FOnNotifyEvent: TVANotifyEvent;
+  protected
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+  public
+    constructor NotifyCreate(AOwner: TComponent; AOnNotifyEvent: TVANotifyEvent); virtual;
+    property OnNotifyEvent: TVANotifyEvent read FOnNotifyEvent write FOnNotifyEvent;
+  end;
+
+  TVAListChangeEvent = procedure(Sender: TObject; Item: Pointer; Operation: TOperation) of object;
+
+  TVAList = class(TList)
+  private
+    FOnChange: TVAListChangeEvent;
+  protected
+    procedure Notify(Ptr: Pointer; Action: TListNotification); override;
+  published
+    property OnChange: TVAListChangeEvent read FOnChange write FOnChange;
+  end;
+
+const
+  DynaPropAccesibilityCaption = 1;
+
+type
+  IVADynamicProperty = interface(IInterface)
+  ['{1D1620E9-59D1-475D-94E9-FAE89A601D55}']
+    function SupportsDynamicProperty(PropertyID: integer): boolean;
+    function GetDynamicProperty(PropertyID: integer): string;
+  end;
+
+implementation
+
+{ TVABaseMethodList }
+
+procedure TVABaseMethodList.Add(const Method: TMethod);
+begin
+  if IndexOf(Method) < 0 then
+  begin
+    FCode.Add(Method.Code);
+    FData.Add(Method.Data);
+  end;
+end;
+
+procedure TVABaseMethodList.Clear;
+begin
+  FCode.Clear;
+  FData.Clear;
+end;
+
+function TVABaseMethodList.Count: integer;
+begin
+  Result := FCode.Count;
+end;
+
+constructor TVABaseMethodList.Create;
+begin
+  FCode := TList.Create;
+  FData := TList.Create;
+end;
+
+procedure TVABaseMethodList.Delete(index: integer);
+begin
+  FCode.Delete(index);
+  FData.Delete(index);
+end;
+
+destructor TVABaseMethodList.Destroy;
+begin
+  FreeAndNil(FCode);
+  FreeAndNil(FData);
+  inherited;
+end;
+
+function TVABaseMethodList.GetMethod(index: integer): TMethod;
+begin
+  Result.Code := FCode[index];
+  Result.Data := FData[index];
+end;
+
+function TVABaseMethodList.IndexOf(const Method: TMethod): integer;
+begin
+  if assigned(Method.Code) and assigned(Method.data) and (FCode.Count > 0) then
+  begin
+    Result := 0;
+    while((Result < FCode.Count) and ((FCode[Result] <> Method.Code) or
+          (FData[Result] <> Method.Data))) do inc(Result);
+    if Result >= FCode.Count then Result := -1;
+  end
+  else
+    Result := -1;
+end;
+
+procedure TVABaseMethodList.Remove(const Method: TMethod);
+var
+  idx: integer;
+
+begin
+  idx := IndexOf(Method);
+  if(idx >= 0) then
+  begin
+    FCode.Delete(idx);
+    FData.Delete(idx);
+  end;
+end;
+
+{ TVAMethodList }
+
+procedure TVAMethodList.Add(const Method: TMethod);
+begin
+  inherited Add(Method);
+end;
+
+procedure TVAMethodList.Clear;
+begin
+  inherited Clear;
+end;
+
+function TVAMethodList.Count: integer;
+begin
+  Result := inherited Count;
+end;
+
+constructor TVAMethodList.Create;
+begin
+  inherited Create;
+end;
+
+procedure TVAMethodList.Delete(index: integer);
+begin
+  inherited Delete(index);
+end;
+
+destructor TVAMethodList.Destroy;
+begin
+  inherited;
+end;
+
+function TVAMethodList.IndexOf(const Method: TMethod): integer;
+begin
+  Result := inherited IndexOf(Method);
+end;
+
+procedure TVAMethodList.Remove(const Method: TMethod);
+begin
+  inherited Remove(Method);
+end;
+
+{ TVANotificationEventComponent }
+
+procedure TVANotificationEventComponent.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  if assigned(FOnNotifyEvent) then FOnNotifyEvent(AComponent, Operation);
+  inherited;
+end;
+
+constructor TVANotificationEventComponent.NotifyCreate(AOwner: TComponent;
+  AOnNotifyEvent: TVANotifyEvent);
+begin
+  inherited Create(AOwner);
+  FOnNotifyEvent := AOnNotifyEvent;
+end;
+
+{ TVALinkedMethodList }
+
+procedure TVALinkedMethodList.Add(Obj: TObject; const Method: TMethod);
+begin
+  if assigned(obj) and assigned(Method.Code) and (IndexOf(Obj) < 0) then
+  begin
+    FLinkedObjects.Add(Obj);
+    Code.Add(Method.Code);
+    Data.Add(Method.Data);
+  end;  
+end;
+
+procedure TVALinkedMethodList.Clear;
+begin
+  FLinkedObjects.Clear;
+  Code.Clear;
+  Data.Clear;
+end;
+
+function TVALinkedMethodList.Count: integer;
+begin
+  Result := FLinkedObjects.Count;
+end;
+
+constructor TVALinkedMethodList.Create;
+begin
+  inherited;
+  FLinkedObjects := TList.Create;
+end;
+
+procedure TVALinkedMethodList.Delete(index: integer);
+begin
+  FLinkedObjects.Delete(index);
+  Code.Delete(index);
+  Data.Delete(index);
+end;
+
+destructor TVALinkedMethodList.Destroy;
+begin
+  FreeAndNil(FLinkedObjects);
+  inherited;
+end;
+
+function TVALinkedMethodList.GetMethod(Obj: TObject): TMethod;
+var
+  idx: integer;
+begin
+  idx := IndexOf(Obj);
+  if idx < 0 then
+  begin
+    Result.Code := nil;
+    Result.Data := nil;
+  end
+  else
+    Result := Methods[idx];
+end;
+
+function TVALinkedMethodList.IndexOf(const obj: TObject): integer;
+begin
+  if assigned(obj) then
+    Result := FLinkedObjects.IndexOf(obj)
+  else
+    Result := -1;
+end;
+
+procedure TVALinkedMethodList.Remove(const obj: TObject);
+var
+  i: integer;
+begin
+  i := IndexOf(obj);
+  if i >= 0 then
+    Delete(i);
+end;
+
+{ TVAList }
+
+procedure TVAList.Notify(Ptr: Pointer; Action: TListNotification);
+begin
+  if assigned(FOnChange) and (Ptr <> nil) then
+  begin
+    if Action = lnAdded then
+      FOnChange(Self, Ptr, opInsert)
+    else
+      FOnChange(Self, Ptr, opRemove)
+  end;
+end;
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VAShared2006.bdsproj
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VAShared2006.bdsproj	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VAShared2006.bdsproj	(revision 1676)
@@ -0,0 +1,175 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject>
+	<PersonalityInfo>
+		<Option>
+			<Option Name="Personality">Delphi.Personality</Option>
+			<Option Name="ProjectType"></Option>
+			<Option Name="Version">1.0</Option>
+			<Option Name="GUID">{C43FA8B9-3C40-4735-B689-4BF5A959209E}</Option>
+		</Option>
+	</PersonalityInfo>
+	<Delphi.Personality>
+		<Source>
+			<Source Name="MainSource">VAShared2006.dpk</Source>
+		</Source>
+		<FileVersion>
+			<FileVersion Name="Version">7.0</FileVersion>
+		</FileVersion>
+		<Compiler>
+			<Compiler Name="A">8</Compiler>
+			<Compiler Name="B">0</Compiler>
+			<Compiler Name="C">1</Compiler>
+			<Compiler Name="D">1</Compiler>
+			<Compiler Name="E">0</Compiler>
+			<Compiler Name="F">0</Compiler>
+			<Compiler Name="G">1</Compiler>
+			<Compiler Name="H">1</Compiler>
+			<Compiler Name="I">1</Compiler>
+			<Compiler Name="J">0</Compiler>
+			<Compiler Name="K">0</Compiler>
+			<Compiler Name="L">1</Compiler>
+			<Compiler Name="M">0</Compiler>
+			<Compiler Name="N">1</Compiler>
+			<Compiler Name="O">1</Compiler>
+			<Compiler Name="P">1</Compiler>
+			<Compiler Name="Q">0</Compiler>
+			<Compiler Name="R">0</Compiler>
+			<Compiler Name="S">0</Compiler>
+			<Compiler Name="T">0</Compiler>
+			<Compiler Name="U">0</Compiler>
+			<Compiler Name="V">1</Compiler>
+			<Compiler Name="W">0</Compiler>
+			<Compiler Name="X">1</Compiler>
+			<Compiler Name="Y">1</Compiler>
+			<Compiler Name="Z">1</Compiler>
+			<Compiler Name="ShowHints">True</Compiler>
+			<Compiler Name="ShowWarnings">True</Compiler>
+			<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
+			<Compiler Name="NamespacePrefix"></Compiler>
+			<Compiler Name="GenerateDocumentation">False</Compiler>
+			<Compiler Name="DefaultNamespace"></Compiler>
+			<Compiler Name="SymbolDeprecated">True</Compiler>
+			<Compiler Name="SymbolLibrary">True</Compiler>
+			<Compiler Name="SymbolPlatform">True</Compiler>
+			<Compiler Name="SymbolExperimental">True</Compiler>
+			<Compiler Name="UnitLibrary">True</Compiler>
+			<Compiler Name="UnitPlatform">True</Compiler>
+			<Compiler Name="UnitDeprecated">True</Compiler>
+			<Compiler Name="UnitExperimental">True</Compiler>
+			<Compiler Name="HResultCompat">True</Compiler>
+			<Compiler Name="HidingMember">True</Compiler>
+			<Compiler Name="HiddenVirtual">True</Compiler>
+			<Compiler Name="Garbage">True</Compiler>
+			<Compiler Name="BoundsError">True</Compiler>
+			<Compiler Name="ZeroNilCompat">True</Compiler>
+			<Compiler Name="StringConstTruncated">True</Compiler>
+			<Compiler Name="ForLoopVarVarPar">True</Compiler>
+			<Compiler Name="TypedConstVarPar">True</Compiler>
+			<Compiler Name="AsgToTypedConst">True</Compiler>
+			<Compiler Name="CaseLabelRange">True</Compiler>
+			<Compiler Name="ForVariable">True</Compiler>
+			<Compiler Name="ConstructingAbstract">True</Compiler>
+			<Compiler Name="ComparisonFalse">True</Compiler>
+			<Compiler Name="ComparisonTrue">True</Compiler>
+			<Compiler Name="ComparingSignedUnsigned">True</Compiler>
+			<Compiler Name="CombiningSignedUnsigned">True</Compiler>
+			<Compiler Name="UnsupportedConstruct">True</Compiler>
+			<Compiler Name="FileOpen">True</Compiler>
+			<Compiler Name="FileOpenUnitSrc">True</Compiler>
+			<Compiler Name="BadGlobalSymbol">True</Compiler>
+			<Compiler Name="DuplicateConstructorDestructor">True</Compiler>
+			<Compiler Name="InvalidDirective">True</Compiler>
+			<Compiler Name="PackageNoLink">True</Compiler>
+			<Compiler Name="PackageThreadVar">True</Compiler>
+			<Compiler Name="ImplicitImport">True</Compiler>
+			<Compiler Name="HPPEMITIgnored">True</Compiler>
+			<Compiler Name="NoRetVal">True</Compiler>
+			<Compiler Name="UseBeforeDef">True</Compiler>
+			<Compiler Name="ForLoopVarUndef">True</Compiler>
+			<Compiler Name="UnitNameMismatch">True</Compiler>
+			<Compiler Name="NoCFGFileFound">True</Compiler>
+			<Compiler Name="ImplicitVariants">True</Compiler>
+			<Compiler Name="UnicodeToLocale">True</Compiler>
+			<Compiler Name="LocaleToUnicode">True</Compiler>
+			<Compiler Name="ImagebaseMultiple">True</Compiler>
+			<Compiler Name="SuspiciousTypecast">True</Compiler>
+			<Compiler Name="PrivatePropAccessor">True</Compiler>
+			<Compiler Name="UnsafeType">False</Compiler>
+			<Compiler Name="UnsafeCode">False</Compiler>
+			<Compiler Name="UnsafeCast">False</Compiler>
+			<Compiler Name="OptionTruncated">True</Compiler>
+			<Compiler Name="WideCharReduced">True</Compiler>
+			<Compiler Name="DuplicatesIgnored">True</Compiler>
+			<Compiler Name="UnitInitSeq">True</Compiler>
+			<Compiler Name="LocalPInvoke">True</Compiler>
+			<Compiler Name="MessageDirective">True</Compiler>
+			<Compiler Name="CodePage"></Compiler>
+		</Compiler>
+		<Linker>
+			<Linker Name="MapFile">3</Linker>
+			<Linker Name="OutputObjs">0</Linker>
+			<Linker Name="GenerateHpps">False</Linker>
+			<Linker Name="ConsoleApp">1</Linker>
+			<Linker Name="DebugInfo">False</Linker>
+			<Linker Name="RemoteSymbols">False</Linker>
+			<Linker Name="GenerateDRC">False</Linker>
+			<Linker Name="MinStackSize">16384</Linker>
+			<Linker Name="MaxStackSize">1048576</Linker>
+			<Linker Name="ImageBase">4194304</Linker>
+			<Linker Name="ExeDescription">VA Shared Units (no components)</Linker>
+		</Linker>
+		<Directories>
+			<Directories Name="OutputDir"></Directories>
+			<Directories Name="UnitOutputDir">..\dcu</Directories>
+			<Directories Name="PackageDLLOutputDir">..\Packages</Directories>
+			<Directories Name="PackageDCPOutputDir">..\Packages</Directories>
+			<Directories Name="SearchPath"></Directories>
+			<Directories Name="Packages"></Directories>
+			<Directories Name="Conditionals"></Directories>
+			<Directories Name="DebugSourceDirs"></Directories>
+			<Directories Name="UsePackages">False</Directories>
+		</Directories>
+		<Parameters>
+			<Parameters Name="RunParams"></Parameters>
+			<Parameters Name="HostApplication"></Parameters>
+			<Parameters Name="Launcher"></Parameters>
+			<Parameters Name="UseLauncher">False</Parameters>
+			<Parameters Name="DebugCWD"></Parameters>
+			<Parameters Name="Debug Symbols Search Path"></Parameters>
+			<Parameters Name="LoadAllSymbols">True</Parameters>
+			<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
+		</Parameters>
+		<Language>
+			<Language Name="ActiveLang"></Language>
+			<Language Name="ProjectLang">$00000000</Language>
+			<Language Name="RootDir"></Language>
+		</Language>
+		<VersionInfo>
+			<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+			<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+			<VersionInfo Name="MajorVer">1</VersionInfo>
+			<VersionInfo Name="MinorVer">0</VersionInfo>
+			<VersionInfo Name="Release">0</VersionInfo>
+			<VersionInfo Name="Build">0</VersionInfo>
+			<VersionInfo Name="Debug">False</VersionInfo>
+			<VersionInfo Name="PreRelease">False</VersionInfo>
+			<VersionInfo Name="Special">False</VersionInfo>
+			<VersionInfo Name="Private">False</VersionInfo>
+			<VersionInfo Name="DLL">False</VersionInfo>
+			<VersionInfo Name="Locale">1033</VersionInfo>
+			<VersionInfo Name="CodePage">1252</VersionInfo>
+		</VersionInfo>
+		<VersionInfoKeys>
+			<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
+			<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
+			<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
+			<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
+			<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+			<VersionInfoKeys Name="Comments"></VersionInfoKeys>
+		</VersionInfoKeys>
+	</Delphi.Personality>
+</BorlandProject>
Index: cprs/branches/HealthSevak-CPRS/VA/VAShared2006.bdsproj.local
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VAShared2006.bdsproj.local	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VAShared2006.bdsproj.local	(revision 1676)
@@ -0,0 +1,2 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<BorlandProject/>
Index: cprs/branches/HealthSevak-CPRS/VA/VAShared2006.cfg
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VAShared2006.cfg	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VAShared2006.cfg	(revision 1676)
@@ -0,0 +1,41 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-GD
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-N0"..\dcu"
+-LE"..\Packages"
+-LN"..\Packages"
+-Z
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
Index: cprs/branches/HealthSevak-CPRS/VA/VAShared2006.dpk
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VAShared2006.dpk	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VAShared2006.dpk	(revision 1676)
@@ -0,0 +1,40 @@
+package VAShared2006;
+
+{$R *.res}
+{$ALIGN 8}
+{$ASSERTIONS ON}
+{$BOOLEVAL OFF}
+{$DEBUGINFO ON}
+{$EXTENDEDSYNTAX ON}
+{$IMPORTEDDATA ON}
+{$IOCHECKS ON}
+{$LOCALSYMBOLS ON}
+{$LONGSTRINGS ON}
+{$OPENSTRINGS ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO ON}
+{$SAFEDIVIDE OFF}
+{$STACKFRAMES OFF}
+{$TYPEDADDRESS OFF}
+{$VARSTRINGCHECKS ON}
+{$WRITEABLECONST OFF}
+{$MINENUMSIZE 1}
+{$IMAGEBASE $400000}
+{$DESCRIPTION 'VA Shared Units (no components)'}
+{$DESIGNONLY}
+{$IMPLICITBUILD OFF}
+
+requires
+  rtl,
+  vcl;
+
+contains
+  VAUtils in 'VAUtils.pas',
+  VAClasses in 'VAClasses.pas',
+  HRBuffers in 'HRBuffers.pas',
+  HRParser in 'HRParser.pas',
+  HRParserPas in 'HRParserPas.pas';
+
+end.
Index: cprs/branches/HealthSevak-CPRS/VA/VAUtils.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/VA/VAUtils.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/VA/VAUtils.pas	(revision 1676)
@@ -0,0 +1,1407 @@
+unit VAUtils;
+
+{TODO  -oJeremy Merrill -cMessageHandlers : Change component list to use hex address for uComponentList
+search instead of IndexOfObject, so that it used a binary search
+on sorted text.}
+
+interface
+
+uses
+  SysUtils, Windows, Messages, Classes, Graphics, StrUtils, Controls, VAClasses, Forms,
+  SHFolder, ShlObj, PSAPI, ShellAPI, ComObj;
+
+type
+  TShow508MessageIcon = (smiNone, smiInfo, smiWarning, smiError, smiQuestion);
+  TShow508MessageButton = (smbOK, smbOKCancel, smbAbortRetryCancel, smbYesNoCancel,
+                           smbYesNo, smbRetryCancel);
+  TShow508MessageResult = (smrOK, srmCancel, smrAbort, smrRetry, smrIgnore, smrYes, smrNo);
+
+function ShowMsg(const Msg, Caption: string; Icon: TShow508MessageIcon = smiNone;
+                    Buttons: TShow508MessageButton = smbOK): TShow508MessageResult; overload;
+
+function ShowMsg(const Msg: string; Icon: TShow508MessageIcon = smiNone;
+                    Buttons: TShow508MessageButton = smbOK): TShow508MessageResult; overload;
+
+const
+  SHARE_DIR = '\VISTA\Common Files\';
+
+{ returns the Nth piece (PieceNum) of a string delimited by Delim }
+function Piece(const S: string; Delim: char; PieceNum: Integer): string;
+{ returns several contiguous pieces }
+function Pieces(const S: string; Delim: char; FirstNum, LastNum: Integer): string;
+
+// Same as FreeAndNil, but for TString objects only
+// Frees any objects in the TStrings Objects list as well the TStrings object
+procedure FreeAndNilTStringsAndObjects(var Strings);
+
+// Returns true if a screen reader programm is running
+function ScreenReaderActive: boolean;
+
+// Special Coding for Screen Readers only enabled if screen reader was
+// running when the application first started up
+function ScreenReaderSupportEnabled: boolean;
+
+// Returns C:\...\subPath\File format based on maxSize and Canvas font setting
+function GetFileWithShortenedPath(FileName: String; MaxSize: integer; Canvas: TCanvas): string;
+
+const
+  HexChars: array[0..255] of string =
+    ('00','01','02','03','04','05','06','07','08','09','0A','0B','0C','0D','0E','0F',
+     '10','11','12','13','14','15','16','17','18','19','1A','1B','1C','1D','1E','1F',
+     '20','21','22','23','24','25','26','27','28','29','2A','2B','2C','2D','2E','2F',
+     '30','31','32','33','34','35','36','37','38','39','3A','3B','3C','3D','3E','3F',
+     '40','41','42','43','44','45','46','47','48','49','4A','4B','4C','4D','4E','4F',
+     '50','51','52','53','54','55','56','57','58','59','5A','5B','5C','5D','5E','5F',
+     '60','61','62','63','64','65','66','67','68','69','6A','6B','6C','6D','6E','6F',
+     '70','71','72','73','74','75','76','77','78','79','7A','7B','7C','7D','7E','7F',
+     '80','81','82','83','84','85','86','87','88','89','8A','8B','8C','8D','8E','8F',
+     '90','91','92','93','94','95','96','97','98','99','9A','9B','9C','9D','9E','9F',
+     'A0','A1','A2','A3','A4','A5','A6','A7','A8','A9','AA','AB','AC','AD','AE','AF',
+     'B0','B1','B2','B3','B4','B5','B6','B7','B8','B9','BA','BB','BC','BD','BE','BF',
+     'C0','C1','C2','C3','C4','C5','C6','C7','C8','C9','CA','CB','CC','CD','CE','CF',
+     'D0','D1','D2','D3','D4','D5','D6','D7','D8','D9','DA','DB','DC','DD','DE','DF',
+     'E0','E1','E2','E3','E4','E5','E6','E7','E8','E9','EA','EB','EC','ED','EE','EF',
+     'F0','F1','F2','F3','F4','F5','F6','F7','F8','F9','FA','FB','FC','FD','FE','FF');
+
+  DigitTable = '0123456789ABCDEF';
+
+  BinChars: array[0..15] of string =
+     ('0000', // 0
+      '0001', // 1
+      '0010', // 2
+      '0011', // 3
+      '0100', // 4
+      '0101', // 5
+      '0110', // 6
+      '0111', // 7
+      '1000', // 8
+      '1001', // 9
+      '1010', // 10
+      '1011', // 11
+      '1100', // 12
+      '1101', // 13
+      '1110', // 14
+      '1111');// 15
+
+type
+  TFastIntHexRec = record
+    case integer of
+      1: (lw: longword);
+      2: (b1, b2, b3, b4: byte);
+  end;
+
+  TFastWordHexRec = record
+    case integer of
+      1: (w: word);
+      2: (b1, b2: byte);
+  end;
+  
+// returns an 8 digit hex number
+function FastIntToHex(Value: LongWord): String;
+
+// returns an 4 digit hex number
+function FastWordToHex(Value: Word): String;
+
+// takes only a 2 digit value - 1 byte - from above table
+function FastHexToByte(HexString: string): byte;
+
+// takes only an 8 digit value - 4 bytes
+function FastHexToInt(HexString: string): LongWord;
+
+// converts am upper case hex string of any length to binary
+function FastHexToBinary(HexString: string): string;
+
+{ returns a cyclic redundancy check for a string }
+function CRCForString(AString: string): DWORD;
+
+// If the string parameter does not end with a back slash, one is appended to the end
+// typically used for file path processing
+function AppendBackSlash(var txt: string): string;
+
+// returns special folder path on the current machine - such as Program Files etc
+// the parameter is a CSIDL windows constant
+function GetSpecialFolderPath(SpecialFolderCSIDL: integer): String;
+
+// returns Program Files path on current machine
+function GetProgramFilesPath: String;
+
+// returns Program Files path on the drive where the currently running application
+// resides, if it is a different drive than the one that contains the current
+// machine's Program Files directory.  This is typically used for networked drives.
+function GetAlternateProgramFilesPath: String;
+
+// Get the Window title (Caption) of a window, given only it's handle
+function GetWindowTitle(Handle: HWND): String;
+
+// Get the Window class name string, given only it's window handle
+function GetWindowClassName(Handle: HWND): String;
+
+// Add or Remove a message handler to manage custom messages for an existing TWinControl
+type
+// TVAWinProcMessageEvent is used for raw windows messages not intercepted by the controls
+(*
+// doesn't work when the component's parent is changed, or anything else causes the
+   handle to be recreated.
+  TVAWinProcMessageEvent = function(hWnd: HWND; Msg: UINT;
+            wParam: WPARAM; lParam: LPARAM; var Handled: boolean): LRESULT of object;
+*)
+
+// TVAMessageEvent is used for windows messages that are intercepted by controls and are
+//    converted to TMessage records - messages not intercepted in this manner should be
+//    caught by TVAWinProcMessageEvent.  Note that this is a different event structure
+//    than the TMessageEvent used by TApplication, this uses TMessage rather than TMsg.
+  TVAMessageEvent = procedure (var Msg: TMessage; var Handled: Boolean) of object;
+
+//procedure AddMessageHandler(Control: TWinControl; MessageHandler: TVAWinProcMessageEvent); overload;
+procedure AddMessageHandler(Control: TWinControl; MessageHandler: TVAMessageEvent); overload;
+
+//procedure RemoveMessageHandler(Control: TWinControl; MessageHandler: TVAWinProcMessageEvent); overload;
+procedure RemoveMessageHandler(Control: TWinControl; MessageHandler: TVAMessageEvent); overload;
+
+// removes all message handlers, both TVAWinProcMessageEvent and TVAMessageEvent types
+procedure RemoveAllMessageHandlers(Control: TWinControl);
+
+function MessageHandlerCount(Control: TWinControl): integer;
+
+function GetInstanceCount(ApplicationNameAndPath: string): integer; overload;
+function GetInstanceCount: integer; overload;
+
+function AnotherInstanceRunning: boolean;
+
+procedure VersionStringSplit(const VerStr: string; var Val1: integer); overload;
+procedure VersionStringSplit(const VerStr: string; var Val1, Val2: integer); overload;
+procedure VersionStringSplit(const VerStr: string; var Val1, Val2, Val3: integer); overload;
+procedure VersionStringSplit(const VerStr: string; var Val1, Val2, Val3, Val4: integer); overload;
+
+function ExecuteAndWait(FileName: string; Parameters: String = ''): integer;
+
+// when called inside a DLL, returns the fully qualified name of the DLL file
+// must pass an address or a class or procedure that's been defined inside the DLL
+function GetDLLFileName(Address: Pointer): string;
+
+const
+  { values that can be passed to FileVersionValue }
+  FILE_VER_COMPANYNAME      = 'CompanyName';
+  FILE_VER_FILEDESCRIPTION  = 'FileDescription';
+  FILE_VER_FILEVERSION      = 'FileVersion';
+  FILE_VER_INTERNALNAME     = 'InternalName';
+  FILE_VER_LEGALCOPYRIGHT   = 'LegalCopyright';
+  FILE_VER_ORIGINALFILENAME = 'OriginalFilename';
+  FILE_VER_PRODUCTNAME      = 'ProductName';
+  FILE_VER_PRODUCTVERSION   = 'ProductVersion';
+  FILE_VER_COMMENTS         = 'Comments';
+
+function FileVersionValue(const AFileName, AValueName: string): string;
+
+// compares up to 4 pieces of a numeric version, returns true if CheckVersion is >= OriginalVersion
+// allows for . and , delimited version numbers
+function VersionOK(OriginalVersion, CheckVersion: string): boolean;
+
+implementation
+
+function Piece(const S: string; Delim: char; PieceNum: Integer): string;
+{ returns the Nth piece (PieceNum) of a string delimited by Delim }
+var
+  i: Integer;
+  Strt, Next: PChar;
+begin
+  i := 1;
+  Strt := PChar(S);
+  Next := StrScan(Strt, Delim);
+  while (i < PieceNum) and (Next <> nil) do
+  begin
+    Inc(i);
+    Strt := Next + 1;
+    Next := StrScan(Strt, Delim);
+  end;
+  if Next = nil then Next := StrEnd(Strt);
+  if i < PieceNum then Result := '' else SetString(Result, Strt, Next - Strt);
+end;
+
+function Pieces(const S: string; Delim: char; FirstNum, LastNum: Integer): string;
+{ returns several contiguous pieces }
+var
+  PieceNum: Integer;
+begin
+  Result := '';
+  for PieceNum := FirstNum to LastNum do Result := Result + Piece(S, Delim, PieceNum) + Delim;
+  if Length(Result) > 0 then Delete(Result, Length(Result), 1);
+end;
+
+//type
+//  TShow508MessageIcon = (smiNone, smiInfo, smiWarning, smiError, smiQuestion);
+//  TShow508MessageButton = (smbOK, smbOKCancel, smbAbortRetryCancel, smbYesNoCancel,
+//                           smbYesNo, smbRetryCancel);
+//  TShow508MessageResult = (smrOK, srmCancel, smrAbort, smrRetry, smrIgnore, smrYes, smrNo);
+
+function ShowMsg(const Msg, Caption: string; Icon: TShow508MessageIcon = smiNone;
+                    Buttons: TShow508MessageButton = smbOK): TShow508MessageResult; overload;
+var
+  Flags, Answer: Longint;
+  Title: string;
+begin
+  Flags := MB_TOPMOST;
+  case Icon of
+    smiInfo:      Flags := Flags OR MB_ICONINFORMATION;
+    smiWarning:   Flags := Flags OR MB_ICONWARNING;
+    smiError:     Flags := Flags OR MB_ICONERROR;
+    smiQuestion:  Flags := Flags OR MB_ICONQUESTION;
+  end;
+  case Buttons of
+    smbOK:                Flags := Flags OR MB_OK;
+    smbOKCancel:          Flags := Flags OR MB_OKCANCEL;
+    smbAbortRetryCancel:  Flags := Flags OR MB_ABORTRETRYIGNORE;
+    smbYesNoCancel:       Flags := Flags OR MB_YESNOCANCEL;
+    smbYesNo:             Flags := Flags OR MB_YESNO;
+    smbRetryCancel:       Flags := Flags OR MB_RETRYCANCEL;
+  end;
+  Title := Caption;
+  if Title = '' then
+    Title := Application.Title;
+  Answer := Application.MessageBox(PChar(Msg), PChar(Title), Flags);
+  case Answer of
+    IDCANCEL: Result := srmCancel;
+    IDABORT:  Result := smrAbort;
+    IDRETRY:  Result := smrRetry;
+    IDIGNORE: Result := smrIgnore;
+    IDYES:    Result := smrYes;
+    IDNO:     Result := smrNo;
+    else      Result := smrOK; // IDOK
+  end;
+end;
+
+function ShowMsg(const Msg: string; Icon: TShow508MessageIcon = smiNone;
+                    Buttons: TShow508MessageButton = smbOK): TShow508MessageResult;
+var
+  Caption: string;
+begin
+  Caption := '';
+  case Icon of
+    smiWarning:   Caption := ' Warning';
+    smiError:     Caption := ' Error';
+    smiQuestion:  Caption := ' Inquiry';
+  end;
+  Caption := Application.Title + Caption;
+  Result := ShowMsg(Msg, Caption, Icon, Buttons);
+end;
+
+procedure FreeAndNilTStringsAndObjects(var Strings);
+var
+  i: integer;
+  list: TStrings;
+begin
+  list := TStrings(Strings);
+  for I := 0 to List.Count - 1 do
+    if assigned(list.Objects[i]) then
+      list.Objects[i].Free;
+  FreeAndNil(list);
+end;
+
+
+function ScreenReaderActive: boolean;
+var
+  ListStateOn : longbool;
+  Success: longbool;
+begin
+  //Determine if a screen reader is currently being used.
+  Success := SystemParametersInfo(SPI_GETSCREENREADER, 0, @ListStateOn,0);
+  if Success and ListStateOn then
+    Result := TRUE
+  else
+    Result := FALSE;
+end;
+
+var
+  CheckScreenReaderSupport: boolean = TRUE;
+  uScreenReaderSupportEnabled: boolean = FALSE;
+
+function ScreenReaderSupportEnabled: boolean;
+begin
+  if CheckScreenReaderSupport then
+  begin
+    uScreenReaderSupportEnabled := ScreenReaderActive;
+    CheckScreenReaderSupport := FALSE;
+  end;
+  Result := uScreenReaderSupportEnabled;
+end;
+
+const
+  DOTS = '...';
+  DOTS_LEN = Length(DOTS) + 2;
+
+// Returns C:\...\subPath\File format based on maxSize and Canvas font setting
+function GetFileWithShortenedPath(FileName: String; MaxSize: integer; Canvas: TCanvas): string;
+var
+  len, count, p, first, last: integer;
+
+begin
+  Result := FileName;
+  count := 0;
+  p := 0;
+  first := 0;
+  last := 0;
+
+  repeat
+    p := PosEx('\', Result, p+1);
+    if p > 0 then inc(count);
+    if first = 0 then
+    begin
+      first := p;
+      last := p+1;
+    end;
+  until p = 0;
+
+  repeat
+    len := Canvas.TextWidth(Result);
+    if (len > MaxSize) and (count > 0) then
+    begin
+      if count > 1 then
+      begin
+        p := last;
+        while(Result[p] <> '\') do inc(p);
+        Result := copy(Result,1,first) + DOTS + copy(Result,p,MaxInt);
+        last := first + DOTS_LEN;
+      end
+      else
+        Result := copy(Result, last, MaxInt);
+      dec(count);
+    end;
+  until (len <= MaxSize) or (count < 1);
+end;
+
+// returns an 8 digit hex number
+function FastIntToHex(Value: LongWord): String;
+var
+  v: TFastIntHexRec;
+begin
+  v.lw:= Value;
+  Result := HexChars[v.b4] + HexChars[v.b3] + HexChars[v.b2] + HexChars[v.b1];
+end;
+
+// returns an 4 digit hex number
+function FastWordToHex(Value: Word): String;
+var
+  v: TFastWordHexRec;
+begin
+  v.w:= Value;
+  Result := HexChars[v.b2] + HexChars[v.b1];
+end;
+
+const
+  b1Mult = 1;
+  b2Mult = b1Mult * 16;
+  b3Mult = b2Mult * 16;
+  b4Mult = b3Mult * 16;
+  b5Mult = b4Mult * 16;
+  b6Mult = b5Mult * 16;
+  b7Mult = b6Mult * 16;
+  b8Mult = b7Mult * 16;
+
+// takes only a 2 digit value - 1 byte - from above table
+function FastHexToByte(HexString: string): byte;
+begin
+  Result := ((pos(HexString[2], DigitTable) - 1) * b1Mult) +
+            ((pos(HexString[1], DigitTable) - 1) * b2Mult);
+end;
+
+// takes only an 8 digit value - 4 bytes
+function FastHexToInt(HexString: string): LongWord;
+begin
+  Result := ((pos(HexString[8], DigitTable) - 1) * b1Mult) +
+            ((pos(HexString[7], DigitTable) - 1) * b2Mult) +
+            ((pos(HexString[6], DigitTable) - 1) * b3Mult) +
+            ((pos(HexString[5], DigitTable) - 1) * b4Mult) +
+            ((pos(HexString[4], DigitTable) - 1) * b5Mult) +
+            ((pos(HexString[3], DigitTable) - 1) * b6Mult) +
+            ((pos(HexString[2], DigitTable) - 1) * b7Mult) +
+            ((pos(HexString[1], DigitTable) - 1) * b8Mult);
+end;
+
+// converts a hex string to binary
+function FastHexToBinary(HexString: string): string;
+var
+  i, len, val: integer;
+  chr: string;
+begin
+  len := length(HexString);
+  Result := '';
+  for I := 1 to len do
+  begin
+    chr := HexString[i];
+    val := pos(chr, DigitTable);
+    if val > 0 then
+      Result := Result + BinChars[val-1]
+  end;
+end;
+
+const
+{ copied from ORFn - table for calculating CRC values }
+  CRC32_TABLE: array[0..255] of DWORD =
+    ($0,       $77073096, $EE0E612C, $990951BA, $76DC419,  $706AF48F, $E963A535, $9E6495A3,
+    $EDB8832,  $79DCB8A4, $E0D5E91E, $97D2D988, $9B64C2B,  $7EB17CBD, $E7B82D07, $90BF1D91,
+    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE, $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,
+    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC, $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,
+    $3B6E20C8, $4C69105E, $D56041E4, $A2677172, $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,
+    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940, $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,
+    $26D930AC, $51DE003A, $C8D75180, $BFD06116, $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,
+    $2802B89E, $5F058808, $C60CD9B2, $B10BE924, $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,
+    $76DC4190, $1DB7106,  $98D220BC, $EFD5102A, $71B18589, $6B6B51F,  $9FBFE4A5, $E8B8D433,
+    $7807C9A2, $F00F934,  $9609A88E, $E10E9818, $7F6A0DBB, $86D3D2D,  $91646C97, $E6635C01,
+    $6B6B51F4, $1C6C6162, $856530D8, $F262004E, $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,
+    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C, $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,
+    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2, $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,
+    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0, $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,
+    $5005713C, $270241AA, $BE0B1010, $C90C2086, $5768B525, $206F85B3, $B966D409, $CE61E49F,
+    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4, $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,
+    $EDB88320, $9ABFB3B6, $3B6E20C,  $74B1D29A, $EAD54739, $9DD277AF, $4DB2615,  $73DC1683,
+    $E3630B12, $94643B84, $D6D6A3E,  $7A6A5AA8, $E40ECF0B, $9309FF9D, $A00AE27,  $7D079EB1,
+    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE, $F762575D, $806567CB, $196C3671, $6E6B06E7,
+    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC, $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,
+    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252, $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,
+    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60, $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,
+    $CB61B38C, $BC66831A, $256FD2A0, $5268E236, $CC0C7795, $BB0B4703, $220216B9, $5505262F,
+    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04, $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,
+    $9B64C2B0, $EC63F226, $756AA39C, $26D930A,  $9C0906A9, $EB0E363F, $72076785, $5005713,
+    $95BF4A82, $E2B87A14, $7BB12BAE, $CB61B38,  $92D28E9B, $E5D5BE0D, $7CDCEFB7, $BDBDF21,
+    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E, $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,
+    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C, $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,
+    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2, $A7672661, $D06016F7, $4969474D, $3E6E77DB,
+    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0, $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,
+    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6, $BAD03605, $CDD70693, $54DE5729, $23D967BF,
+    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94, $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);
+
+{ returns a cyclic redundancy check for a string }
+function CRCForString(AString: string): DWORD;
+var
+  i: Integer;
+begin
+  Result:=$FFFFFFFF;
+  for i := 1 to Length(AString) do
+    Result:=((Result shr 8) and $00FFFFFF) xor
+      CRC32_TABLE[(Result xor Ord(AString[i])) and $000000FF];
+end;
+
+function AppendBackSlash(var txt: string): string;
+begin
+  if RightStr(txt,1) <> '\' then
+    txt := txt + '\';
+  Result := txt;
+end;
+
+// returns special folder path on the current machine - such as Program Files etc
+// the parameter is a CSIDL windows constant
+function GetSpecialFolderPath(SpecialFolderCSIDL: integer): String;
+var
+  Path: array[0..Max_Path] of Char;
+begin
+  Path := '';
+  SHGetSpecialFolderPath(0, Path, SpecialFolderCSIDL, false);
+  Result := Path;
+  AppendBackSlash(Result);
+end;
+
+// returns Program Files path on current machine
+function GetProgramFilesPath: String;
+begin
+  Result := GetSpecialFolderPath(CSIDL_PROGRAM_FILES);
+end;
+
+// returns Program Files path on the drive where the currently running application
+// resides, if it is a different drive than the one that contains the current
+// machine's Program Files directory.  This is typically used for networked drives.
+// Note that tnis only works if the mapping to the network is at the root drive 
+function GetAlternateProgramFilesPath: String;
+var
+  Dir, Dir2: string;
+
+begin
+  Dir := GetProgramFilesPath;
+  Dir2 := ExtractFileDrive(Application.ExeName);
+  AppendBackSlash(Dir2);
+  Dir2 := Dir2 + 'Program Files\';
+  If (UpperCase(Dir) = UpperCase(Dir2)) then
+    Result := ''
+  else
+    Result := Dir2;
+end;
+
+// Get the Window title (Caption) of a window, given only it's handle
+function GetWindowTitle(Handle: HWND): String;
+begin
+  SetLength(Result, 240);
+  SetLength(Result, GetWindowText(Handle, PChar(Result), Length(Result)));
+end;
+
+function GetWindowClassName(Handle: HWND): String;
+begin
+  SetLength(Result, 240);
+  SetLength(Result, GetClassName(Handle, PChar(Result), Length(Result)));
+end;
+
+type
+(*
+  TVACustomWinProcInterceptor = class
+  private
+    FOldWinProc: Pointer;
+    FHexHandle: string;
+    FComponent: TWinControl;
+    procedure Initialize;
+  protected
+    constructor Create(Component: TWinControl); virtual;
+    function NewWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; virtual;
+//    property OldWindowProc: Pointer read FOldWinProc;
+//    property Component: TWinControl read FComponent;
+  public
+    destructor Destroy; override;
+  end;
+*)
+(*
+  TVAWinProcMessageHandler = class(TVACustomWinProcInterceptor)
+  private
+    FMessageHandlerList: TVAMethodList;
+    function DoMessageHandlers(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM; var MessageHandled: boolean): LRESULT;
+  protected
+    constructor Create(Component: TWinControl); override;
+    function NewWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; override;
+  public
+    destructor Destroy; override;
+    function HandlerCount: integer;
+    procedure AddMessageHandler(event: TVAWinProcMessageEvent);
+    procedure RemoveMessageHandler(event: TVAWinProcMessageEvent);
+  end;
+*)
+
+  TVACustomMessageEventInterceptor = class
+  private
+    FOldWndMethod: TWndMethod;
+    FComponent: TWinControl;
+  protected
+    constructor Create(Component: TWinControl); virtual;
+    procedure NewMessageHandler(var Message: TMessage); virtual;
+//    property OldWndMethod: TWndMethod read FOldWndMethod;
+//    property Component: TWinControl read FComponent;
+  public
+    destructor Destroy; override;
+  end;
+
+  TVAMessageEventHandler = class(TVACustomMessageEventInterceptor)
+  private
+    FMessageHandlerList: TVAMethodList;
+    procedure DoMessageHandlers(var Message: TMessage; var MessageHandled: boolean);
+  protected
+    constructor Create(Component: TWinControl); override;
+    procedure NewMessageHandler(var Message: TMessage); override;
+  public
+    destructor Destroy; override;
+    function HandlerCount: integer;
+    procedure AddMessageHandler(event: TVAMessageEvent);
+    procedure RemoveMessageHandler(event: TVAMessageEvent);
+  end;
+
+(*
+  TVAWinProcAccessClass = class(TWinControl)
+  public
+    property DefWndProc;
+  end;
+*)
+
+  TVAWinProcMonitor = class(TComponent)
+  protected
+    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
+  public
+    procedure RemoveFromList(AComponent: TComponent);
+  end;
+
+
+var
+//  uWinProcMessageHandlers: TStringList = nil;
+  uEventMessageHandlers: TStringList = nil;
+  uHandlePointers: TStringlist = nil;
+  uWinProcMonitor: TVAWinProcMonitor = nil;
+  uMessageHandlerSystemRunning: boolean = FALSE;
+
+procedure InitializeMessageHandlerSystem;
+begin
+  if not uMessageHandlerSystemRunning then
+  begin
+//    uWinProcMessageHandlers := TStringList.Create;
+//    uWinProcMessageHandlers.Sorted := TRUE;
+//    uWinProcMessageHandlers.Duplicates := dupAccept;
+    uEventMessageHandlers := TStringList.Create;
+    uEventMessageHandlers.Sorted := TRUE;
+    uEventMessageHandlers.Duplicates := dupAccept;
+    uHandlePointers := TStringList.Create;
+    uHandlePointers.Sorted := TRUE;  // allows for faster binary searching
+    uHandlePointers.Duplicates := dupAccept;
+    uWinProcMonitor := TVAWinProcMonitor.Create(nil);
+    uMessageHandlerSystemRunning := TRUE;
+  end;
+end;
+
+procedure CleanupMessageHandlerSystem;
+
+  procedure Clear(var list: TStringList; FreeObjects: boolean = false);
+  var
+    i: integer;
+  begin
+    if assigned(list) then
+    begin
+      if FreeObjects then
+      begin
+        for I := 0 to list.Count - 1 do
+          list.Objects[i].Free;
+      end;
+      FreeAndNil(list);
+    end;
+  end;
+
+begin
+//  Clear(uWinProcMessageHandlers, TRUE);
+  Clear(uEventMessageHandlers, TRUE);
+  Clear(uHandlePointers);
+  if assigned(uWinProcMonitor) then
+    FreeAndNil(uWinProcMonitor);
+  uMessageHandlerSystemRunning := FALSE;
+end;
+
+(*
+procedure AddMessageHandler(Control: TWinControl; MessageHandler: TVAWinProcMessageEvent);
+var
+  HexID: string;
+  idx: integer;
+  Handler: TVAWinProcMessageHandler;
+
+begin
+  InitializeMessageHandlerSystem;
+  HexID := FastIntToHex(LongWord(Control));
+  idx := uWinProcMessageHandlers.IndexOf(HexID);
+  if idx < 0 then
+  begin
+    Handler := TVAWinProcMessageHandler.Create(Control);
+    uWinProcMessageHandlers.AddObject(HexID, Handler);
+  end
+  else
+    Handler := TVAWinProcMessageHandler(uWinProcMessageHandlers.Objects[idx]);
+  Handler.AddMessageHandler(MessageHandler);
+end;
+*)
+
+procedure AddMessageHandler(Control: TWinControl; MessageHandler: TVAMessageEvent);
+var
+  HexID: string;
+  idx: integer;
+  Handler: TVAMessageEventHandler;
+
+begin
+  InitializeMessageHandlerSystem;
+  HexID := FastIntToHex(LongWord(Control));
+  idx := uEventMessageHandlers.IndexOf(HexID);
+  if idx < 0 then
+  begin
+    Handler := TVAMessageEventHandler.Create(Control);
+    uEventMessageHandlers.AddObject(HexID, Handler);
+  end
+  else
+    Handler := TVAMessageEventHandler(uEventMessageHandlers.Objects[idx]);
+  Handler.AddMessageHandler(MessageHandler);
+end;
+
+(*
+procedure RemoveMessageHandler(Control: TWinControl;
+                            MessageHandler: TVAWinProcMessageEvent);
+var
+  HexID: string;
+  idx: integer;
+  Handler: TVAWinProcMessageHandler;
+
+begin
+  if not uMessageHandlerSystemRunning then exit;
+  HexID := FastIntToHex(LongWord(Control));
+  idx := uWinProcMessageHandlers.IndexOf(HexID);
+  if idx >= 0 then
+  begin
+    Handler := TVAWinProcMessageHandler(uWinProcMessageHandlers.Objects[idx]);
+    Handler.RemoveMessageHandler(MessageHandler);
+    if Handler.HandlerCount = 0 then
+    begin
+      Handler.Free;
+      uWinProcMessageHandlers.Delete(idx);
+    end;
+  end;
+end;
+*)
+
+procedure RemoveMessageHandler(Control: TWinControl; MessageHandler: TVAMessageEvent);
+var
+  HexID: string;
+  idx: integer;
+  Handler: TVAMessageEventHandler;
+
+begin
+  if not uMessageHandlerSystemRunning then exit;
+  HexID := FastIntToHex(LongWord(Control));
+  idx := uEventMessageHandlers.IndexOf(HexID);
+  if idx >= 0 then
+  begin
+    Handler := TVAMessageEventHandler(uEventMessageHandlers.Objects[idx]);
+    Handler.RemoveMessageHandler(MessageHandler);
+    if Handler.HandlerCount = 0 then
+    begin
+      Handler.Free;
+      uEventMessageHandlers.Delete(idx);
+    end;
+  end;
+end;
+
+procedure RemoveAllMessageHandlers(Control: TWinControl);
+var
+  HexID: string;
+  idx: integer;
+//  Handler: TVAWinProcMessageHandler;
+  EventHandler: TVAMessageEventHandler;
+
+begin
+  if not uMessageHandlerSystemRunning then exit;
+  HexID := FastIntToHex(LongWord(Control));
+  
+  (*
+  idx := uWinProcMessageHandlers.IndexOf(HexID);
+
+  if idx >= 0 then
+  begin
+    Handler := TVAWinProcMessageHandler(uWinProcMessageHandlers.Objects[idx]);
+    Handler.Free;
+    uWinProcMessageHandlers.Delete(idx);
+  end;
+  *)
+
+  idx := uEventMessageHandlers.IndexOf(HexID);
+  if idx >= 0 then
+  begin
+    EventHandler := TVAMessageEventHandler(uEventMessageHandlers.Objects[idx]);
+    EventHandler.Free;
+    uEventMessageHandlers.Delete(idx);
+  end;
+
+  Control.RemoveFreeNotification(uWinProcMonitor);
+end;
+
+function MessageHandlerCount(Control: TWinControl): integer;
+var
+  HexID: string;
+  idx: integer;
+//  Handler: TVAWinProcMessageHandler;
+  EventHandler: TVAMessageEventHandler;
+
+begin
+  Result := 0;
+  if not uMessageHandlerSystemRunning then exit;
+
+  HexID := FastIntToHex(LongWord(Control));
+
+(*  idx := uWinProcMessageHandlers.IndexOf(HexID);
+
+  if idx >= 0 then
+  begin
+    Handler := TVAWinProcMessageHandler(uWinProcMessageHandlers.Objects[idx]);
+    result := Handler.HandlerCount;
+  end;
+*)  
+
+  idx := uEventMessageHandlers.IndexOf(HexID);
+  if idx >= 0 then
+  begin
+    EventHandler := TVAMessageEventHandler(uEventMessageHandlers.Objects[idx]);
+    inc(Result, EventHandler.HandlerCount);
+  end;
+end;
+
+ { TVACustomWinProc }
+
+(*
+constructor TVACustomWinProcInterceptor.Create(Component: TWinControl);
+begin
+  if not Assigned(Component) then
+    raise EInvalidPointer.Create('Component parameter unassigned');
+  FComponent := Component;
+  Initialize;
+end;
+
+destructor TVACustomWinProcInterceptor.Destroy;
+var
+  idx: integer;
+begin
+  if Assigned(FComponent) then
+  begin
+    try
+      TVAWinProcAccessClass(FComponent).DefWndProc := FOldWinProc;
+    except // just in case FComponent has been destroyed
+    end;
+  end;
+  idx := uHandlePointers.IndexOf(FHexHandle);
+  if idx >= 0 then
+    uHandlePointers.Delete(idx);
+  inherited;
+end;
+
+function TVACustomWinProcInterceptor.NewWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
+begin
+{
+  if (Msg = SOME_MESSAGE) then
+  begin
+    ...
+    Result := S_OK;
+  end
+  else
+}
+  Result := CallWindowProc(FOldWinProc, hWnd, Msg, WParam, LParam);
+end;
+
+
+function BaseWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
+var
+  idx: integer;
+
+begin
+  idx := uHandlePointers.IndexOf(FastIntToHex(hWnd)); // does binary search on sorted string list
+  if idx >= 0 then
+    Result := TVACustomWinProcInterceptor(uHandlePointers.Objects[idx]).NewWindowProc(hWnd, Msg, wParam, lParam)
+  else
+    Result := 0; // should never happen
+end;
+
+procedure TVACustomWinProcInterceptor.Initialize;
+var
+  idx: integer;
+begin
+  InitializeMessageHandlerSystem;
+  FComponent.HandleNeeded;
+  FHexHandle := FastIntToHex(FComponent.Handle);
+  idx := uHandlePointers.IndexOf(FHexHandle);
+  if idx < 0 then
+    uHandlePointers.AddObject(FHexHandle, Self)
+  else
+    uHandlePointers.Objects[idx] := Self;
+  FComponent.FreeNotification(uWinProcMonitor);
+  FOldWinProc := TVAWinProcAccessClass(FComponent).DefWndProc;
+  TVAWinProcAccessClass(FComponent).DefWndProc := @BaseWindowProc;
+end;
+*)
+
+{ TVAWinProcMonitor }
+
+
+// assumes object is responsible for deleting instance of TVACustomWinProc
+procedure TVAWinProcMonitor.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  inherited;
+  if (Operation = opRemove) and (AComponent is TWinControl) then
+    RemoveFromList(AComponent);
+end;
+
+procedure TVAWinProcMonitor.RemoveFromList(AComponent: TComponent);
+begin
+  if AComponent is TWinControl then
+    RemoveAllMessageHandlers(TWinControl(AComponent));
+end;
+
+
+{ TVACustomMessageEventInterceptor }
+
+constructor TVACustomMessageEventInterceptor.Create(Component: TWinControl);
+begin
+  if not Assigned(Component) then
+    raise EInvalidPointer.Create('Component parameter unassigned');
+  FComponent := Component;
+  FComponent.FreeNotification(uWinProcMonitor);
+  FOldWndMethod := FComponent.WindowProc;
+  FComponent.WindowProc := NewMessageHandler;
+end;
+
+destructor TVACustomMessageEventInterceptor.Destroy;
+begin
+  FComponent.WindowProc := FOldWndMethod;
+  inherited;
+end;
+
+procedure TVACustomMessageEventInterceptor.NewMessageHandler(
+  var Message: TMessage);
+begin
+  FOldWndMethod(Message);
+end;
+
+{ TVAWinProcNotifier }
+
+(*
+procedure TVAWinProcMessageHandler.AddMessageHandler(event: TVAWinProcMessageEvent);
+begin
+  FMessageHandlerList.Add(TMethod(event));
+end;
+
+constructor TVAWinProcMessageHandler.Create(Component: TWinControl);
+begin
+  FMessageHandlerList := TVAMethodList.Create;
+  inherited Create(Component);
+end;
+
+destructor TVAWinProcMessageHandler.Destroy;
+begin
+  inherited;
+  FMessageHandlerList.Free;
+end;
+
+function TVAWinProcMessageHandler.DoMessageHandlers(hWnd: HWND; Msg: UINT;
+          wParam: WPARAM; lParam: LPARAM; var MessageHandled: boolean): LRESULT;
+var
+  Method: TMethod;
+  i: integer;
+begin
+  MessageHandled := FALSE;
+  Result := 0;
+  for i := 0 to FMessageHandlerList.Count - 1 do
+  begin
+    Method := FMessageHandlerList[i];
+    Result := TVAWinProcMessageEvent(Method)(hWnd, Msg, wParam, lParam, MessageHandled);
+    if MessageHandled then
+      break;
+  end;
+end;
+
+function TVAWinProcMessageHandler.HandlerCount: integer;
+begin
+  Result := FMessageHandlerList.Count;
+end;
+
+function TVAWinProcMessageHandler.NewWindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM;
+  lParam: LPARAM): LRESULT;
+var
+  MessageHandled: boolean;
+
+begin
+  Result := DoMessageHandlers(hWnd, Msg, wParam, lParam, MessageHandled);
+  if not MessageHandled then
+    Result := CallWindowProc(FOldWinProc, hWnd, Msg, WParam, LParam);
+end;
+
+procedure TVAWinProcMessageHandler.RemoveMessageHandler(event: TVAWinProcMessageEvent);
+begin
+  FMessageHandlerList.Remove(TMethod(event));
+end;
+*)
+
+{ TVAMessageEventHandler }
+
+procedure TVAMessageEventHandler.AddMessageHandler(event: TVAMessageEvent);
+begin
+  FMessageHandlerList.Add(TMethod(event));
+end;
+
+constructor TVAMessageEventHandler.Create(Component: TWinControl);
+begin
+  FMessageHandlerList := TVAMethodList.Create;
+  inherited Create(Component);
+end;
+
+destructor TVAMessageEventHandler.Destroy;
+begin
+  inherited;
+  FMessageHandlerList.Free;
+end;
+
+procedure TVAMessageEventHandler.DoMessageHandlers(var Message: TMessage;
+    var MessageHandled: boolean);
+var
+  Method: TMethod;
+  i: integer;
+
+begin
+  MessageHandled := FALSE;
+  for i := 0 to FMessageHandlerList.Count - 1 do
+  begin
+    Method := FMessageHandlerList[i];
+    TVAMessageEvent(Method)(Message, MessageHandled);
+    if MessageHandled then
+      break;
+  end;
+end;
+
+function TVAMessageEventHandler.HandlerCount: integer;
+begin
+  Result := FMessageHandlerList.Count;
+end;
+
+procedure TVAMessageEventHandler.NewMessageHandler(var Message: TMessage);
+var
+  MessageHandled: boolean;
+
+begin
+  DoMessageHandlers(Message, MessageHandled);
+  if not MessageHandled then
+    FOldWndMethod(Message);
+end;
+
+procedure TVAMessageEventHandler.RemoveMessageHandler(event: TVAMessageEvent);
+begin
+  FMessageHandlerList.Remove(TMethod(event));
+end;
+
+
+
+type
+  TDataArray = record
+  private
+    FCapacity: integer;
+    procedure SetCapacity(Value: integer);
+  public
+    Data: array of DWORD;
+    Count: integer;
+    procedure Clear;
+    function Size: integer;
+    property Capacity: integer read FCapacity write SetCapacity;
+  end;
+
+{ TDataArray }
+
+procedure TDataArray.Clear;
+begin
+  SetCapacity(0);
+  SetCapacity(128);
+end;
+
+procedure TDataArray.SetCapacity(Value: integer);
+begin
+  if FCapacity <> Value then
+  begin
+    FCapacity := Value;
+    SetLength(Data, Value);
+    if Count >= Value then
+      Count := Value - 1;
+  end;
+end;
+
+
+function TDataArray.Size: integer;
+begin
+  Result := FCapacity * SizeOf(DWORD);
+end;
+
+var
+  PIDList: TDataArray;
+  ModuleHandles: TDataArray;
+
+function GetInstanceCount(ApplicationNameAndPath: string): integer; overload;
+var
+  i, j: DWORD;
+  name: string;
+  process: THandle;
+  Output: DWORD;
+  current: string;
+  ok: BOOL;
+  done: boolean;
+
+  function ListTooSmall(var Data: TDataArray): boolean;
+  var
+    ReturnCount: integer;
+  begin
+    Data.Count := 0;
+    ReturnCount := Output div SizeOf(DWORD);
+    Result := (ReturnCount >= Data.Capacity);
+    if Result then
+      Data.Capacity := Data.Capacity * 2
+    else
+      Data.Count := ReturnCount;
+  end;
+
+begin
+  Result := 0;
+  current := UpperCase(ApplicationNameAndPath);
+  PIDList.Clear;
+  repeat
+    done := TRUE;
+    ok := EnumProcesses(pointer(PIDList.Data), PIDList.Size, Output);
+    if ok and ListTooSmall(PIDList) then
+      done := FALSE;
+  until done or (not ok);
+  if ok then
+  begin
+    for I := 0 to PIDList.Count - 1 do
+    begin
+      Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PIDList.Data[i]);
+      if Process <> 0 then
+      begin
+        try
+          ModuleHandles.Clear;
+          repeat
+            done := TRUE;
+            ok := EnumProcessModules(Process, Pointer(ModuleHandles.Data), ModuleHandles.Size, Output);
+            if ok and ListTooSmall(ModuleHandles) then
+              done := FALSE;
+          until done or (not ok);
+          if ok then
+          begin
+            for j := 0 to ModuleHandles.Count - 1 do
+            begin
+              SetLength(name, MAX_PATH*2);
+              SetLength(name, GetModuleFileNameEx(Process, ModuleHandles.Data[j], PChar(name), MAX_PATH*2));
+              name := UpperCase(name);
+              if name = current then
+              begin
+                inc(Result);
+                break;
+              end;
+            end;
+          end;
+        finally
+          CloseHandle(Process);
+        end;
+      end;
+    end;
+  end;
+  PIDList.SetCapacity(0);
+  ModuleHandles.SetCapacity(0);
+end;
+
+
+function GetInstanceCount: integer;
+begin
+  Result := GetInstanceCount(ParamStr(0));
+end;
+
+function AnotherInstanceRunning: boolean;
+begin
+  Result := (GetInstanceCount > 1);
+end;
+
+procedure VersionStringSplit(const VerStr: string; var Val1: integer);
+var
+  dummy2, dummy3, dummy4: integer;
+begin
+  VersionStringSplit(VerStr, Val1, dummy2, dummy3, dummy4);
+end;
+
+procedure VersionStringSplit(const VerStr: string; var Val1, Val2: integer);
+var
+  dummy3, dummy4: integer;
+begin
+  VersionStringSplit(VerStr, Val1, Val2, dummy3, dummy4);
+end;
+
+procedure VersionStringSplit(const VerStr: string; var Val1, Val2, Val3: integer);
+var
+  dummy4: integer;
+begin
+  VersionStringSplit(VerStr, Val1, Val2, Val3, dummy4);
+end;
+
+procedure VersionStringSplit(const VerStr: string; var Val1, Val2, Val3, Val4: integer);
+var
+  temp: string;
+
+  function GetNum: integer;
+  var
+    idx: integer;
+
+  begin
+    idx := pos('.', temp);
+    if idx < 1 then
+      idx := Length(temp) + 1;
+    Result := StrToIntDef(copy(temp, 1, idx-1), 0);
+    delete(temp, 1, idx);
+  end;
+
+begin
+  temp := VerStr;
+  Val1 := GetNum;
+  Val2 := GetNum;
+  Val3 := GetNum;
+  Val4 := GetNum;
+end;
+
+const
+  FILE_VER_PREFIX = '\StringFileInfo\';
+//  FILE_VER_COMMENTS         = '\StringFileInfo\040904E4\Comments';
+
+function FileVersionValue(const AFileName, AValueName: string): string;
+type
+  TValBuf = array[0..255] of Char;
+  PValBuf = ^TValBuf;
+
+var
+  VerSize, ValSize, AHandle: DWORD;
+  VerBuf: Pointer;
+  ValBuf: PValBuf;
+  Output, Query: string;
+  POutput: PChar;
+begin
+  Result := '';
+  VerSize:=GetFileVersionInfoSize(PChar(AFileName), AHandle);
+  if VerSize > 0 then
+  begin
+    GetMem(VerBuf, VerSize);
+    try
+      GetFileVersionInfo(PChar(AFileName), AHandle, VerSize, VerBuf);
+      VerQueryValue(VerBuf, PChar('\VarFileInfo\Translation'), Pointer(ValBuf), ValSize);
+      Query := FILE_VER_PREFIX + IntToHex(LoWord(PLongInt(ValBuf)^),4)+
+                               IntToHex(HiWord(PLongInt(ValBuf)^),4)+
+                               '\'+AValueName;
+      VerQueryValue(VerBuf, PChar(Query), Pointer(ValBuf), ValSize);
+      SetString(Output, ValBuf^, ValSize);
+      POutput := PChar(Output);
+      Result := POutput;
+    finally
+      FreeMem(VerBuf);
+    end;
+  end;
+end;
+
+// compares up to 4 pieces of a numeric version, returns true if CheckVersion is >= OriginalVersion
+// allows for . and , delimited version numbers
+function VersionOK(OriginalVersion, CheckVersion: string): boolean;
+var
+  v1, v2, v3, v4, r1, r2, r3, r4: Integer;
+
+  function GetV(var Version: string): integer;
+  var
+    idx: integer;
+    delim: string;
+  begin
+    if pos('.', Version) > 0 then
+      delim := '.'
+    else
+      delim := ',';
+    idx := pos(delim, version);
+    if idx < 1 then
+      idx := length(Version) + 1;
+    Result := StrToIntDef(copy(version, 1, idx-1), 0);
+    delete(version, 1, idx);
+  end;
+
+  procedure parse(const v: string; var p1, p2, p3, p4: integer);
+  var
+    version: string;
+  begin
+    version := v;
+    p1 := GetV(version);
+    p2 := GetV(version);
+    p3 := GetV(version);
+    p4 := GetV(version);
+  end;
+
+begin
+  parse(OriginalVersion, r1, r2, r3, r4);
+  parse(CheckVersion, v1, v2, v3, v4);
+  Result := FALSE;
+  if v1 > r1 then
+    Result := TRUE
+  else if v1 = r1 then
+  begin
+    if v2 > r2 then
+      Result := TRUE
+    else if v2 = r2 then
+    begin
+      if v3 > r3 then
+        Result := TRUE
+      else if v3 = r3 then
+      begin
+        if v4 >= r4 then
+          Result := TRUE
+      end;
+    end;
+  end;
+end;
+
+function ExecuteAndWait(FileName: string; Parameters: String = ''): integer;
+var
+  exec, shell: OleVariant;
+  line: string;
+
+begin
+  if copy(FileName,1,1) <> '"' then
+    line := '"' + FileName + '"'
+  else
+    line := FileName;
+  if Parameters <> '' then
+    line := line + ' ' + Parameters;
+  shell := CreateOleObject('WScript.Shell');
+  try
+    exec := shell.Exec(line);
+    try
+      While exec.status = 0 do
+        Sleep(100);
+      Result := Exec.ExitCode;
+    finally
+      VarClear(exec);
+    end;
+  finally
+    VarClear(shell);
+  end;
+end;
+
+{
+function ExecuteAndWait(FileName: string; Parameters: String = ''): DWORD;
+var
+  SEI:TShellExecuteInfo;
+begin
+  FillChar(SEI,SizeOf(SEI),0);
+  with SEI do begin
+    cbSize:=SizeOf(SEI);
+    lpVerb:='open';
+    lpFile:=PAnsiChar(FileName);
+    lpDirectory := PAnsiChar(ExtractFileDir(FileName));
+    if Parameters <> '' then
+      lpParameters := PAnsiChar(Parameters);
+    nShow:=SW_SHOW;
+    fMask:=SEE_MASK_NOCLOSEPROCESS;
+  end;
+  ShellExecuteEx(@SEI);
+  WaitForSingleObject(SEI.hProcess, INFINITE);
+  if not GetExitCodeProcess(SEI.hProcess, Result) then
+    Result := 0;
+  CloseHandle(SEI.hProcess);
+end;
+ }
+
+// when called inside a DLL, returns the fully qualified name of the DLL file
+// must pass an address or a class or procedure that's been defined inside the DLL
+function GetDLLFileName(Address: Pointer): string;
+var
+  ProcessHandle: THandle;
+  Output: DWORD;
+  i, max: integer;
+  ModuleHandles: array[0..1023] of HMODULE;
+  info: _MODULEINFO;
+  pinfo: LPMODULEINFO;
+  adr: Int64;
+
+begin
+  Result := '';
+  ProcessHandle := GetCurrentProcess;
+  if EnumProcessModules(ProcessHandle, @ModuleHandles, sizeof(ModuleHandles), output) then
+  begin
+    adr := Int64(Address);
+    max := (output div sizeof(HMODULE))-1;
+    pinfo := @info;
+    for i := 0 to max do
+    begin
+      if GetModuleInformation(ProcessHandle, ModuleHandles[i], pinfo, sizeof(_MODULEINFO)) then
+      begin
+        if (adr > Int64(info.lpBaseOfDll)) and (adr < (Int64(info.lpBaseOfDll) + info.SizeOfImage)) then
+        begin
+          SetLength(Result, MAX_PATH);
+          SetLength(Result, GetModuleFileName(ModuleHandles[i], PChar(Result), Length(Result)));
+          break;
+        end;
+      end;
+    end;
+  end;
+end;
+
+initialization
+  ScreenReaderSupportEnabled;
+
+finalization
+  CleanupMessageHandlerSystem;
+
+end.
+
Index: cprs/branches/HealthSevak-CPRS/Version Info.txt
===================================================================
--- cprs/branches/HealthSevak-CPRS/Version Info.txt	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/Version Info.txt	(revision 1676)
@@ -0,0 +1,4 @@
+Notes:
+This version (stored under trunk) is the official WV CPRS version.
+As of 7/4/2008, this is version 1.0.26.76 (according to version
+information in CPRSChart.exe)  //kt
Index: cprs/branches/HealthSevak-CPRS/WVEHR-Lib/rWVEHR.pas
===================================================================
--- cprs/branches/HealthSevak-CPRS/WVEHR-Lib/rWVEHR.pas	(revision 1676)
+++ cprs/branches/HealthSevak-CPRS/WVEHR-Lib/rWVEHR.pas	(revision 1676)
@@ -0,0 +1,39 @@
+unit rWVEHR;
+
+interface
+
+uses SysUtils, Classes, ORNet, ORFn, ORClasses;
+
+{ record types used to return data from the RPC's.  Generally, the delimited strings returned
+  by the RPC are mapped into the records defined below. }
+
+function GetPatientLongAge(ADFN: string): string;
+function GetPatientBriefAge(ADFN: string): string;
+
+const
+  PERIOD:  array[1..7] of string[1] = ('y','m','w','d','h','m','s');
+
+implementation
+
+function GetPatientLongAge(ADFN: string): string;
+begin
+  Result :=  sCallv('VWTIME LONG AGE', [ADFN]);
+end;
+
+function GetPatientBriefAge(ADFN: string): string;
+var
+  AgePieces, BriefAge: string;
+  i: integer;
+begin
+  AgePieces := sCallv('VWTIME BRIEF AGE', [ADFN]);
+  for i := 1 to 7 do
+    if Piece(AgePieces, U, i) <> '' then
+      BriefAge := BriefAge + Piece(AgePieces, U, i) + PERIOD[i]
+    else
+      begin
+        Result := BriefAge;
+        exit;
+      end;
+end;
+
+end.
